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

index b79117d..14eba9b 100644 (file)
@@ -1301,12 +1301,12 @@ define({ "api": [
   },
   {
     "type": "post",
-    "url": "/api/auth/activedirectory",
+    "url": "/api/auth/local",
     "title": "Creates a new User token",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/auth/activedirectory -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
         "type": "json"
       }
     ],
@@ -1334,7 +1334,7 @@ define({ "api": [
     },
     "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/authActiveDirectory/index.js",
+    "filename": "server/api/authLocal/index.js",
     "groupTitle": "Authentication"
   },
   {
@@ -1377,44 +1377,6 @@ define({ "api": [
   },
   {
     "type": "post",
-    "url": "/api/auth/local",
-    "title": "Creates a new User token",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
-        "type": "json"
-      }
-    ],
-    "name": "Local_login",
-    "group": "Authentication",
-    "parameter": {
-      "fields": {
-        "Body": [
-          {
-            "group": "Body",
-            "type": "String",
-            "optional": false,
-            "field": "name",
-            "description": ""
-          },
-          {
-            "group": "Body",
-            "type": "String",
-            "optional": false,
-            "field": "password",
-            "description": ""
-          }
-        ]
-      }
-    },
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/authLocal/index.js",
-    "groupTitle": "Authentication"
-  },
-  {
-    "type": "post",
     "url": "/api/automations",
     "title": "Creates a new Automation",
     "examples": [
@@ -10926,9 +10888,9 @@ define({ "api": [
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "put",
-    "url": "/api/fax/messages/{id}/reject",
-    "title": "Rejects message",
+    "type": "post",
+    "url": "/api/fax/messages",
+    "title": "Create message and send Fax",
     "examples": [
       {
         "title": "Example usage:",
@@ -10938,15 +10900,15 @@ define({ "api": [
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "post",
-    "url": "/api/fax/messages",
-    "title": "Create message and send Fax",
+    "type": "put",
+    "url": "/api/fax/messages/{id}/reject",
+    "title": "Rejects message",
     "examples": [
       {
         "title": "Example usage:",
@@ -10956,7 +10918,7 @@ define({ "api": [
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
@@ -22906,39 +22868,39 @@ define({ "api": [
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "get",
-    "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status as get request",
+    "type": "post",
+    "url": "/api/sms/messages/{id}/status",
+    "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
+        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsAccount/index.js",
+    "filename": "server/api/smsMessage/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "post",
-    "url": "/api/sms/messages/{id}/status",
-    "title": "Receive message status",
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/status",
+    "title": "Receive message status as get request",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsMessage/index.js",
+    "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
@@ -25979,7 +25941,7 @@ define({ "api": [
   },
   {
     "type": "get",
-    "url": "/api/system/process",
+    "url": "/api/system",
     "title": "Gets system information",
     "examples": [
       {
@@ -25997,7 +25959,7 @@ define({ "api": [
   },
   {
     "type": "get",
-    "url": "/api/system",
+    "url": "/api/system/process",
     "title": "Gets system information",
     "examples": [
       {
@@ -26296,12 +26258,12 @@ define({ "api": [
   },
   {
     "type": "delete",
-    "url": "/api/fax/queues/{id}/teams",
-    "title": "Remove teams from a queue",
+    "url": "/api/voice/Prefixes/{id}/teams",
+    "title": "Remove teams from a voice prefix",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26309,17 +26271,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/faxQueue/index.js",
+    "filename": "server/api/voicePrefix/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/voice/queues/{id}/teams",
+    "url": "/api/openchannel/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26327,17 +26289,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/voiceQueue/index.js",
+    "filename": "server/api/openchannelQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/voice/Prefixes/{id}/teams",
-    "title": "Remove teams from a voice prefix",
+    "url": "/api/chat/queues/{id}/teams",
+    "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26345,7 +26307,7 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
+    "filename": "server/api/chatQueue/index.js",
     "groupTitle": "Teams"
   },
   {
@@ -26368,12 +26330,12 @@ define({ "api": [
   },
   {
     "type": "delete",
-    "url": "/api/mail/queues/{id}/teams",
+    "url": "/api/fax/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26381,17 +26343,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/mailQueue/index.js",
+    "filename": "server/api/faxQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/openchannel/queues/{id}/teams",
+    "url": "/api/voice/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26399,17 +26361,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/openchannelQueue/index.js",
+    "filename": "server/api/voiceQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/chat/queues/{id}/teams",
+    "url": "/api/mail/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26417,7 +26379,7 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/chatQueue/index.js",
+    "filename": "server/api/mailQueue/index.js",
     "groupTitle": "Teams"
   },
   {
@@ -33428,37 +33390,37 @@ define({ "api": [
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "post",
+    "type": "get",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
index 18e3b85..83294f5 100644 (file)
   },
   {
     "type": "post",
-    "url": "/api/auth/activedirectory",
+    "url": "/api/auth/local",
     "title": "Creates a new User token",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/auth/activedirectory -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
         "type": "json"
       }
     ],
     },
     "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/authActiveDirectory/index.js",
+    "filename": "server/api/authLocal/index.js",
     "groupTitle": "Authentication"
   },
   {
   },
   {
     "type": "post",
-    "url": "/api/auth/local",
-    "title": "Creates a new User token",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
-        "type": "json"
-      }
-    ],
-    "name": "Local_login",
-    "group": "Authentication",
-    "parameter": {
-      "fields": {
-        "Body": [
-          {
-            "group": "Body",
-            "type": "String",
-            "optional": false,
-            "field": "name",
-            "description": ""
-          },
-          {
-            "group": "Body",
-            "type": "String",
-            "optional": false,
-            "field": "password",
-            "description": ""
-          }
-        ]
-      }
-    },
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/authLocal/index.js",
-    "groupTitle": "Authentication"
-  },
-  {
-    "type": "post",
     "url": "/api/automations",
     "title": "Creates a new Automation",
     "examples": [
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "put",
-    "url": "/api/fax/messages/{id}/reject",
-    "title": "Rejects message",
+    "type": "post",
+    "url": "/api/fax/messages",
+    "title": "Create message and send Fax",
     "examples": [
       {
         "title": "Example usage:",
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "post",
-    "url": "/api/fax/messages",
-    "title": "Create message and send Fax",
+    "type": "put",
+    "url": "/api/fax/messages/{id}/reject",
+    "title": "Rejects message",
     "examples": [
       {
         "title": "Example usage:",
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "get",
-    "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status as get request",
+    "type": "post",
+    "url": "/api/sms/messages/{id}/status",
+    "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
+        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsAccount/index.js",
+    "filename": "server/api/smsMessage/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "post",
-    "url": "/api/sms/messages/{id}/status",
-    "title": "Receive message status",
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/status",
+    "title": "Receive message status as get request",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsMessage/index.js",
+    "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
   },
   {
     "type": "get",
-    "url": "/api/system/process",
+    "url": "/api/system",
     "title": "Gets system information",
     "examples": [
       {
   },
   {
     "type": "get",
-    "url": "/api/system",
+    "url": "/api/system/process",
     "title": "Gets system information",
     "examples": [
       {
   },
   {
     "type": "delete",
-    "url": "/api/fax/queues/{id}/teams",
-    "title": "Remove teams from a queue",
+    "url": "/api/voice/Prefixes/{id}/teams",
+    "title": "Remove teams from a voice prefix",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/faxQueue/index.js",
+    "filename": "server/api/voicePrefix/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/voice/queues/{id}/teams",
+    "url": "/api/openchannel/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/voiceQueue/index.js",
+    "filename": "server/api/openchannelQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/voice/Prefixes/{id}/teams",
-    "title": "Remove teams from a voice prefix",
+    "url": "/api/chat/queues/{id}/teams",
+    "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
+    "filename": "server/api/chatQueue/index.js",
     "groupTitle": "Teams"
   },
   {
   },
   {
     "type": "delete",
-    "url": "/api/mail/queues/{id}/teams",
+    "url": "/api/fax/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/mailQueue/index.js",
+    "filename": "server/api/faxQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/openchannel/queues/{id}/teams",
+    "url": "/api/voice/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/openchannelQueue/index.js",
+    "filename": "server/api/voiceQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/chat/queues/{id}/teams",
+    "url": "/api/mail/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/chatQueue/index.js",
+    "filename": "server/api/mailQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "post",
+    "type": "get",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
index b834d9f..d1e036c 100644 (file)
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-10-31T21:22:38.786Z",
+    "time": "2021-11-02T19:36:08.313Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index ff26f53..8d9ca9f 100644 (file)
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-10-31T21:22:38.786Z",
+    "time": "2021-11-02T19:36:08.313Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 2418f9c..cc37218 100644 (file)
@@ -35,7 +35,7 @@
   "license": "EULA",
   "scripts": {
     "start": "nodemon server/app.js",
-    "js-beautify": "js-beautify `node -p \"require('glob').sync('./**/*.{js,html}', { nodir: true, ignore: ['./node_modules/**', './client/bower_components/**', './bower_components/**', './client/assets/**', './snippet/**', './dist/**', './.tmp/**'] }).join('\\n')\"`",
+    "js-beautify": "js-beautify `node -p \"require('glob').sync('./**/*.{js,html}', { nodir: true, ignore: ['./node_modules/**', './client/bower_components/**', './bower_components/**', './client/assets/**', './snippet/**', './dist/**', './.tmp/**', './server/files/**'] }).join('\\n')\"`",
     "eslint:check": "eslint .",
     "eslint:fix": "eslint --fix .",
     "prettier:check": "prettier --check './**/*'",
@@ -44,7 +44,6 @@
     "test": "mocha server/test --timeout 5000"
   },
   "dependencies": {
-    "activedirectory2": "2.1.0",
     "apiai-promise": "github:gcareri/apiai-promise",
     "archiver": "2.1.1",
     "asterisk-manager": "0.1.16",
@@ -58,8 +57,8 @@
     "connect-timeout": "1.9.0",
     "cookie-parser": "1.4.5",
     "cors": "2.8.5",
-    "crypto-js": "3.1.9-1",
     "cron-job-manager": "1.0.7",
+    "crypto-js": "3.1.9-1",
     "desk.js": "0.1.4",
     "dialogflow": "0.8.2",
     "ejs": "2.7.4",
diff --git a/public/app/errors/404/i18n/hu.json b/public/app/errors/404/i18n/hu.json
new file mode 100644 (file)
index 0000000..b061703
--- /dev/null
@@ -0,0 +1,8 @@
+{
+  "ERROR404": {
+    "CODE": "404",
+    "MESSAGE": "Sorry but we couldn’t find the page you are looking for",
+    "SEARCH": "Search for anything",
+    "GO_BACK": "Go back to dashboard"
+  }
+}
diff --git a/public/app/errors/500/i18n/hu.json b/public/app/errors/500/i18n/hu.json
new file mode 100644 (file)
index 0000000..b218b70
--- /dev/null
@@ -0,0 +1,11 @@
+{
+  "ERROR500": {
+    "CODE": "500",
+    "MESSAGE": "Well, you broke the internet!",
+    "SUBMESSAGE": "Just kidding, looks like we have an internal issue, please try again in couple minutes",
+    "REPORT": "Report this problem",
+    "JIRA_MESSAGE": "Your request has been received and will be processed shortly.",
+    "JIRA_SUBMESSAGE": "Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.",
+    "GO_BACK": "Go back to dashboard"
+  }
+}
diff --git a/public/app/footer/i18n/hu.json b/public/app/footer/i18n/hu.json
new file mode 100644 (file)
index 0000000..8a47415
--- /dev/null
@@ -0,0 +1,6 @@
+{
+  "FOOTER": {
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
+    "ERRORS": {}
+  }
+}
diff --git a/public/app/forgot/i18n/hu.json b/public/app/forgot/i18n/hu.json
new file mode 100644 (file)
index 0000000..be7b81a
--- /dev/null
@@ -0,0 +1,15 @@
+{
+  "FORGOTPASSWORD": {
+    "TITLE": "Recover your password",
+    "EMAIL_ADRESS": "Email address",
+    "SEND_RESET_LINK": "SEND RESET LINK",
+    "GO_BACK": "Go back to login",
+    "LINK_SENT": "Link Sent",
+    "LINNK_SENT_MESSAGE": "An email containing a link to reset your password has been sent to your address!",
+    "PASSWORD_RESET_ERROR": "Password Reset Error",
+    "ERRORS": {
+      "EMAIL_REQUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format"
+    }
+  }
+}
diff --git a/public/app/header/i18n/hu.json b/public/app/header/i18n/hu.json
new file mode 100644 (file)
index 0000000..f78785b
--- /dev/null
@@ -0,0 +1,6 @@
+{
+  "HEADER": {
+    "NEWS": "Please visit our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV\" class=\"blue-100-fg\">Wiki</a> to discover the new cool features available on XCALLY.",
+    "ERRORS": {}
+  }
+}
index 78f3f74..8a25905 100644 (file)
@@ -12,7 +12,6 @@
     "LOG_IN": "LOG IN",
     "OR": "OR",
     "WITH_GOOGLE": "Log in with Google",
-    "WITH_AD": "Log in with Active Directory",
     "WITH_FACEBOOK": "Log in with Facebook",
     "DONT_HAVE_ACCOUNT": "No account?",
     "CREATE_ACCOUNT": "Create an account",
diff --git a/public/app/login/i18n/hu.json b/public/app/login/i18n/hu.json
new file mode 100644 (file)
index 0000000..8a25905
--- /dev/null
@@ -0,0 +1,25 @@
+{
+  "LOGIN": {
+    "TELEPHONES": "Telephones",
+    "SELECT": "Select",
+    "CANCEL": "Cancel",
+    "TITLE": "Log in to your account",
+    "EMAIL": "Email",
+    "USERNAME": "Username",
+    "PASSWORD": "Password",
+    "REMEMBER_ME": "Remember Me",
+    "FORGOT_PASSWORD": "Forgot Password?",
+    "LOG_IN": "LOG IN",
+    "OR": "OR",
+    "WITH_GOOGLE": "Log in with Google",
+    "WITH_FACEBOOK": "Log in with Facebook",
+    "DONT_HAVE_ACCOUNT": "No account?",
+    "CREATE_ACCOUNT": "Create an account",
+    "ERRORS": {
+      "EMAIL_REQUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "PASSWORD_REQUIRED": "Mandatory field",
+      "USERNAME_REQUIRED": "Mandatory field"
+    }
+  }
+}
diff --git a/public/app/main/apps/analytics/i18n/hu.json b/public/app/main/apps/analytics/i18n/hu.json
new file mode 100644 (file)
index 0000000..71cf72f
--- /dev/null
@@ -0,0 +1,89 @@
+{
+  "ANALYTICS": {
+    "SEND_IF_EMPTY": "Send if empty",
+    "REPORTNAME": "Report Name",
+    "DELETE": "Delete",
+    "NAME": "Name",
+    "ANALYTICS": "Analytics",
+    "METRICS": "Metrics",
+    "ID": "Id",
+    "TABLE": "Table",
+    "DESCRIPTION": "Description",
+    "SEARCH_FOR_ANYONE": "Search",
+    "METRIC": "Metric",
+    "ERRORS": {
+      "NAME_REQUIRED": "Mandatory field",
+      "METRIC_REQUIRED": "Mandatory field",
+      "COLUMN_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "CUSTOM_METRIC_REQUIRED": "Mandatory field",
+      "ALIAS_REQUIRED": "Mandatory field"
+    },
+    "NEW_METRIC": "New Metric",
+    "ADD_METRIC": "Add Metric",
+    "EDIT_METRIC": "Edit Metric",
+    "DELETE_METRIC": "Delete Metric",
+    "SAVE": "Save",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "TYPE": "Type",
+    "EXTRACTEDREPORTS": "Extracted Reports",
+    "DATE_RANGE_FROM": "Date Range From",
+    "DATE_RANGE_TO": "Date Range To",
+    "GENERATED_AT": "Generated At",
+    "STATUS": "Status",
+    "OUTPUT": "Output",
+    "REPORTS": "Reports",
+    "SEARCH_FOR_FOLDER": "Search for folder",
+    "CREATED_AT": "Created At",
+    "NEW_REPORT": "New Report",
+    "ADD_REPORT": "Add Report",
+    "COPY_REPORT": "Copy Report",
+    "PREVIEW_REPORT": "Preview Report",
+    "WEB_REPORT": "Web Report",
+    "RUN_REPORT": "Run Report",
+    "DOWNLOAD_JSON_REPORT": "Export Report JSON",
+    "EDIT_REPORT": "Edit Report",
+    "DELETE_REPORT": "Delete Report",
+    "CREATE": "Create Folder",
+    "RENAME": "Rename Folder",
+    "REMOVE": "Remove Folder",
+    "SELECT_NODE": "Select Folder",
+    "ERROR": "Error",
+    "QUERY_ERROR": "Query Error",
+    "MESSAGE": "Message",
+    "CLOSE": "Close",
+    "FORMAT": "Format",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "FIELDS": "Fields",
+    "CONDITION": "Condition",
+    "OPERATOR": "Operator",
+    "GROUP": "Group",
+    "COLUMN": "Column",
+    "VALUE": "Value",
+    "PREVIEW": "Preview",
+    "LIMITED_RESULT": "*Limited Results",
+    "NO_DATA": "No data results",
+    "CONDITIONS": "Conditions",
+    "ALIAS": "Alias",
+    "FUNCTION": "Function",
+    "GROUP_BY": "Group By",
+    "ORDER_BY": "Order By",
+    "ADD_REPORTFIELD": "Add Field",
+    "EDIT_REPORTFIELD": "Edit Field",
+    "DELETE_REPORTFIELD": "Delete Field",
+    "METRIC_NAME": "Metric",
+    "NO_METRIC_FOUND": "No metric found",
+    "NO_AVAILABLE_INFO": "No available info",
+    "CUSTOM_METRIC": "Custom Metric",
+    "DELETE_EXTRACTEDREPORT": "Delete Extracted Report",
+    "EDIT_EXTRACTEDREPORT": "Edit Extracted Report",
+    "DOWNLOAD_EXTRACTEDREPORT": "Download Extracted Report",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "OF": "of"
+  }
+}
diff --git a/public/app/main/apps/callysquare/i18n/hu.json b/public/app/main/apps/callysquare/i18n/hu.json
new file mode 100644 (file)
index 0000000..1e523a8
--- /dev/null
@@ -0,0 +1,243 @@
+{
+  "CALLYSQUARE": {
+    "ACCOUNT_ID": "Account",
+    "ADDUSER_PROJECTS": "Add Users to Project",
+    "ADD_ODBC": "Add ODBC",
+    "ADD_PROJECT": "Add Project",
+    "ADD_VARIABLE": "Add Variable",
+    "AGENTS": "Agents",
+    "AGI": "AGI",
+    "ALL_USERS": "All Users",
+    "ANSWER": "Answer",
+    "APIKEY": "ApiKey",
+    "APPID": "App ID",
+    "APPLICATION": "Application",
+    "APPSECRET": "App Secret",
+    "ARGS": "Arguments",
+    "ATTACHMENT_NAME": "Attachment Name",
+    "ATTACHMENT_PATH": "Attachment Path",
+    "ATTACHMENT_TYPE": "Attachment Type",
+    "AUDIO": "Audio",
+    "AUDIOENCODING": "Audio Encoding",
+    "AWSLEX": "Amazon Lex",
+    "AWSPOLLY": "AWS Polly",
+    "AWS_ACCESS_KEY_ID": "Access Key ID",
+    "AWS_BOT_NAME": "Bot name",
+    "AWS_LEX_REGION": "Region",
+    "AWS_POLLY_REGION": "Region",
+    "AWS_POLLY_VOICE": "Voice",
+    "AWS_SECRET_ACCESS_KEY": "Secret Access Key",
+    "AWS_TEXT_TYPE": "Text type",
+    "BACK": "Back",
+    "BCC": "BCC",
+    "BEEP": "Beep",
+    "BODY": "Body",
+    "CALLBACK": "Callback",
+    "CALLBACK_PRIORITY": "Priority",
+    "CALLYSQUARE": "Cally Square",
+    "CC": "CC",
+    "CHOOSE_ATTACHMENT": "Choose Attachment",
+    "CLIENT_EMAIL": "Client Email",
+    "CLOSE": "Close",
+    "COMMAND": "Command",
+    "COMPUTEDVARIABLES": "Computed Variables Script Path",
+    "CONDITION": "Condition",
+    "CONTEXT": "Context",
+    "COPY": "Copy",
+    "COPY_PROJECT": "Copy Project",
+    "CREATED_AT": "Created At",
+    "CUSTOM_ACTION": "Custom Action",
+    "CUSTOM_ACTION_DATA": "Custom Action Data",
+    "CUSTOM_APP": "Custom Application",
+    "DATABASE": "Database",
+    "DELAY": "delay [min]",
+    "DELETE": "Delete",
+    "DELETE_ODBC": "Delete ODBC",
+    "DELETE_PROJECT": "Delete Project",
+    "DELETE_SQUARERECORDING": "Delete Square Recording",
+    "DESCRIPTION": "Description",
+    "DIAL": "Dial",
+    "DIALOGFLOW": "Dialogflow",
+    "DIALOGFLOWV2": "DialogflowV2",
+    "DIALOGFLOWV2_LANGUAGE": "Language",
+    "DIALOGFLOWV2_PROJECT_ID": "Project ID",
+    "DIALOGFLOW_LANGUAGE": "Language",
+    "DIGIT": "Max Digits",
+    "DIGITS": "Digits",
+    "DOWNLOAD_SQUARERECORDING": "Download Square Recording",
+    "DROP_TO_UPLOAD": "DROP TO UPLOAD",
+    "DROP_TO_UPLOAD_MESSAGE": "You can also drop files here to upload. Only XML - Max. 5MB",
+    "DSN": "DSN",
+    "EDIT": "Edit",
+    "EDIT_ODBC": "Edit ODBC",
+    "EDIT_PROJECT": "Edit Project",
+    "EDIT_SQUARERECORDING": "Edit Square Recording",
+    "EDIT_XML": "Edit XML",
+    "END": "End",
+    "ERRORS": {
+      "DSN_REQUIRED": "Mandatory field",
+      "FIELD_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Mandatory field",
+      "PROJECT_REQUIRED": "Mandatory field",
+      "URL_REQUIRED": "Mandatory field"
+    },
+    "ESCAPE_DIGITS": "Escape Digits",
+    "EXTEN": "Exten",
+    "EXTENSION": "Extension",
+    "EXT_DIAL": "External Dial",
+    "FILE": "Filename",
+    "FILENAME": "Filename",
+    "FILE_ID": "Audio",
+    "FINALLY": "Finally",
+    "FINDBY": "Find By",
+    "GETDIGITS": "Get Digits",
+    "GETSECRETDIGITS": "Get Secret Digits",
+    "GOAL": "Goal",
+    "GOALNAME": "Goal Name",
+    "GOOGLEASR": "GoogleASR",
+    "GOOGLE_ASR_LANGUAGE": "Language",
+    "GOOGLE_CLOUD_TTS": "Google Cloud TTS",
+    "GOOGLE_CLOUD_TTS_TEXT_TYPE": "Text Type",
+    "GOOGLE_TTS_LANGUAGE": "Language",
+    "GOSUB": "GoSub",
+    "GOTOC": "GoTo",
+    "GOTOIF": "GoToIf",
+    "GOTOIFTIME": "GoToIfTime",
+    "GO_TO_PROJECTS": "Go to projects",
+    "GRAMMAR": "Grammar",
+    "HANGUP": "Hangup",
+    "HEADERS": "Headers",
+    "HELP": {
+      "BCC": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "CC": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "DSN": "Example: DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
+      "MAILBOX": "mailbox@context",
+      "MAX_TEXT_TTS": "The maximum number of characters supported is 200",
+      "TO": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)"
+    },
+    "HIDDENDIGITSNUM": "Hiddden Digits Number",
+    "HIDDENDIGITSPOS": "hidden Digits Position",
+    "ID": "Id",
+    "IMPORT": "Import",
+    "IMPORT_XML": "Import XML",
+    "INTERVAL_ID": "Interval",
+    "INTKEY": "Interrupt Key",
+    "ISPEECHASR": "iSpeech ASR",
+    "ISPEECHTTS": "iSpeech Text-To-Speech",
+    "ISPEECH_ASR_LANGUAGE": "Language",
+    "ISPEECH_TTS_LANGUAGE": "Language",
+    "KEY": "Key",
+    "LABEL": "Label",
+    "LANGUAGECODE": "Language Code",
+    "LASTNAME": "Last Name",
+    "LIST_ID": "List",
+    "LOGIN": "Login",
+    "LOGOUT": "Logout",
+    "LUMENVOXASR": "Lumenvox ASR",
+    "LUMENVOXTTS": "Lumenvox Text-To-Speech",
+    "MACRO": "Macro",
+    "MAILBOX": "Mailbox",
+    "MATH": "Math",
+    "MAXDIGIT": "Maximum Digits",
+    "MENU": "Menu",
+    "METHOD": "Method",
+    "MINDIGIT": "Minimum Digits",
+    "MODEL": "Model",
+    "MRCPRECOG": "MRCPRecog",
+    "MRCPSYNTH": "MRCPSynth",
+    "NAME": "Name",
+    "NDAACTIVITY_TYPE": "Activity Type",
+    "NDAGENERATE_AUDIO": "Generate Audio File",
+    "NDASSISTANT_URL": "NDASSISTANT Url",
+    "NDAUTH_URL": "NDAUTH Url",
+    "NEW": "New",
+    "NEW_ODBC": "New ODBC connection",
+    "NEW_PROJECT": "New Project",
+    "NEW_VARIABLE": "New Variable",
+    "NOOP": "NoOp",
+    "NOTES": "Notes",
+    "NO_AVAILABLE_INFO": "No available info",
+    "NUMBER": "Number",
+    "ODBC": "ODBC",
+    "ODBC_ID": "ODBC Connection",
+    "OF": "of",
+    "OPEN": "Open",
+    "OPEN_NEW_WINDOW": "Open in a new window",
+    "OPEN_PROJECT": "Open Project",
+    "OPERATION": "Operation",
+    "OPTIONS": "Options",
+    "OPTS": "Options",
+    "OUTPUT": "Output",
+    "PAGE": "Page",
+    "PASSWORD": "Password",
+    "PAUSE": "Pause",
+    "PAUSE_ID": "Pause type",
+    "PERMISSIONADD_PROJECTS": "Add Users to Project",
+    "PHONE": "Phone",
+    "PLAYBACK": "Playback",
+    "POSITION": "Position",
+    "PRIORITY": "Priority",
+    "PRIVATE_KEY": "Private Key",
+    "PROJECT": "Project",
+    "PROJECTS": "Projects",
+    "PROJECT_ID": "Project",
+    "QUERY": "Query",
+    "QUEUE": "Queue",
+    "QUEUE_ID": "Queue",
+    "RAWBODY": "Body",
+    "RAWHEADERS": "Headers",
+    "RECORD": "Record",
+    "RECORDINGFORMAT": "Recording Format",
+    "RESPONSE": "Response Timeout",
+    "RESTAPI": "Rest API",
+    "RETRY": "Retries",
+    "ROWSPERPAGE": "Rows per page",
+    "SAVE": "Save",
+    "SAYDIGITS": "Say Digits",
+    "SAYNUMBER": "Say number",
+    "SAYPHONETIC": "Say Phonetics",
+    "SEARCH_FOR_ANYONE": "Search",
+    "SELECTED": "Selected",
+    "SELECTED_USERS": "Selected Users",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "SENDFAX": "Send Fax",
+    "SENDMAIL": "Send Email",
+    "SENDSMS": "Send SMS",
+    "SESTEKASR": "Sestek ASR",
+    "SESTEKNDA": "Sestek NDA",
+    "SESTEKTTS": "Sestek TTS",
+    "SET": "Set",
+    "SIP_ID": "SIP",
+    "SMS_ACCOUNT_ID": "Account",
+    "SMS_TEXT": "Text",
+    "SPEED": "Speed",
+    "SQUARERECORDINGS": "Recordings",
+    "SSMLGENDER": "Gender",
+    "START": "Start",
+    "SUBJECT": "Subject",
+    "SUBPROJECT": "Sub Project",
+    "SYSTEM": "System",
+    "TELEPHONES": "Telephones",
+    "TEMPLATE_ID": "Template",
+    "TEST_ODBC": "Test ODBC",
+    "TEXT": "Text",
+    "TILDEASR": "Tilde ASR",
+    "TIMEOUT": "Timeout",
+    "TO": "To",
+    "TRUNK_NAME": "Trunk",
+    "TTS": "Google Text-To-Speech",
+    "UNIQUEID": "Unique ID",
+    "UNPAUSE": "End Pause",
+    "UPDATE_DESCRIPTION": "Update Description",
+    "UPDATE_INFO": "Update Info",
+    "URI": "URI",
+    "URL": "URL",
+    "USERNAME": "Username",
+    "USERS": "Users",
+    "VARIABLE_ID": "Variable",
+    "VARIABLE_VALUE": "Value",
+    "VOICEMAIL": "Voicemail",
+    "VSWITCH": "Variable Switch"
+  }
+}
diff --git a/public/app/main/apps/chat/i18n/hu.json b/public/app/main/apps/chat/i18n/hu.json
new file mode 100644 (file)
index 0000000..13cbf3f
--- /dev/null
@@ -0,0 +1,489 @@
+{
+  "CHAT": {
+    "EDIT_DIALOGFLOWV2": "Edit Dialogflow V2",
+    "DIALOGFLOWV2": "Dialogflow V2",
+    "PRIVATEKEY": "Private Key",
+    "CLIENTEMAIL": "Client Email",
+    "PROJECTID": "Project ID",
+    "VIDAOOESCALATION": "Start Video Call",
+    "VIDAOOAPIKEY": "Vidaoo Api Key",
+    "VIDAOOSESSION": "Start Video Call",
+    "VIDAOOTOPIC": "Vidaoo Topic",
+    "VIDAOONOTE": "Vidaoo Note",
+    "VIDAOOMETADATA": "Vidaoo Metadata",
+    "VIDEO": "Video",
+    "VIDAOO": "Vidaoo",
+    "EDIT_AMAZONLEX": "Edit Amazon Lex",
+    "AMAZONLEX": "Amazon Lex",
+    "ACCESSKEYID": "Access Key ID",
+    "SECRETACCESSKEY": "Secret Access Key",
+    "LEXREGION": "Region",
+    "BOTNAME": "Bot Name",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "DOWNLOAD_INTERACTION": "Download",
+    "ENABLECUSTOMERCHECKMARKS": "Enable customer delivered/read notifications",
+    "TRANSFER": "Transfer",
+    "QUEUETRANSFER": "Queue Transfer",
+    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "SYSTEMAVATAR": "System Avatar",
+    "SYSTEMALIAS": "System Alias",
+    "OPEN_NEW_INTERACTION": "Open new interaction",
+    "EMAIL_ACCOUNT": "Email account",
+    "SUBJECT": "Subject",
+    "WELCOMEMESSAGE": "Welcome Message",
+    "LANGUAGE": "Language",
+    "EDIT_DIALOGFLOW": "Edit Dialogflow",
+    "DIALOGFLOW": "Dialogflow",
+    "BACKGROUNDCOLOR": "Background Color",
+    "MESSAGEFONTSIZE": "Message Font Size",
+    "ADD_NOTE": "Add note",
+    "NOTE": "Note",
+    "TAG": "Tag",
+    "EDIT_TAG": "Edit Tag",
+    "CUSTOMERALIAS": "Customer Alias",
+    "SNIPPETSWIPEOUT": "Snippet swipe out",
+    "CUSTOMERAVATAR": "Customer Avatar",
+    "SHOWCUSTOMERAVATAR": "Show customer avatar",
+    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
+    "DEFAULTTITLE": "Default Title",
+    "MESSAGESALIGNMENT": "Messages Alignment",
+    "ALTERNATE": "Alternate",
+    "CENTERED": "Centered",
+    "POSITION": "Position",
+    "VERTICALPOSITION": "Vertical position",
+    "ALIGNMENT": "Alignment",
+    "VERTICALALIGNMENT": "Vertical alignment",
+    "BOTTOM_RIGHT": "Bottom right",
+    "RIGHT": "Right",
+    "LEFT": "Left",
+    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
+    "AGENTIDENTIFIER": "Identifier",
+    "WEBSITEALIAS": "Website Alias",
+    "AGENTALIAS": "Agent Alias",
+    "AGENTFULLNAME": "Agent Fullname",
+    "INSERT_MESSAGE_HERE": "Insert your text message here",
+    "HIDEWHENOFFLINE": "Hide",
+    "NOTIFICATION": "Notification",
+    "NOTIFICATIONSOUND": "Sound",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONTEMPLATE": "Template",
+    "SYSTEM": "System",
+    "EDIT_SYSTEM": "Edit System",
+    "COMMAND": "Command",
+    "TEXTCOLOR": "Text Color",
+    "FONTSIZE": "Font Size",
+    "WEBSCRIPT": "Web Script",
+    "CANNEDANSWERS": "Canned Answers",
+    "CHATCANNEDANSWERS": "Canned Answers",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
+    "NEW_CHATCANNEDANSWER": "New Canned Answer",
+    "ADD_CHATCANNEDANSWER": "Add Canned Answer",
+    "EDIT_CHATCANNEDANSWER": "Edit",
+    "DELETE_CHATCANNEDANSWER": "Delete",
+    "OFFLINEMESSAGESUBJECT": "Message subject",
+    "OFFLINEMESSAGEBODY": "Message body",
+    "FORMSUBMITSUCCESSMESSAGE": "Form submit success message",
+    "FORMSUBMITFAILUREMESSAGE": "Form submit failure message",
+    "PLACEHOLDERMESSAGE": "Message placeholder",
+    "NOTETITLE": "Note's title",
+    "CLOSINGQUESTION": "Closing question",
+    "TAGS": "Tags",
+    "SHOWAGENTAVATAR": "Show personal agent avatar",
+    "AGENTAVATAR": "Agent Avatar",
+    "SPYINTERACTION": "Spy",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "GOTOREALTIME_CHATQUEUE": "Go To Realtime Chat Queue",
+    "PARTIALPAUSE": "Partial Pause",
+    "BUSY": "Busy",
+    "TIMER": "Timer",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "AGENTSADD_QUEUE": "Add Agent to Chat Queue",
+    "QUEUES": "Queues",
+    "LOGGED_IN": "Logged in",
+    "PAUSED": "Paused",
+    "READY": "Ready",
+    "WAITING": "Waiting",
+    "WRITING": "Writing",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Openchannel",
+    "FAX": "Fax",
+    "PAUSE": "Pause",
+    "REALTIME": "Realtime",
+    "AGENTS": "Agents",
+    "FULLNAME": "Full Name",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "LOGOUT": "Logout",
+    "UNPAUSE": "End Pause",
+    "AGENTADD_QUEUE": "Add Agent to Chat Queue",
+    "TEXT": "Text",
+    "TIMES": "Number of times per interaction",
+    "EDIT_AUTOREPLY": "Edit Auto Reply",
+    "AUTOREPLY": "Auto Reply",
+    "NEW_CHATDISPOSITION": "New Chat Disposition",
+    "ENABLECUSTOMERATTACHMENT": "Enable Customer Attachments",
+    "ENABLESENDBUTTON": "Enable Send Button",
+    "OFFLINE_CHAT_BUTTON": "'Offline Chat' Button",
+    "OFFLINESTATUS": "Offline Status",
+    "NAME": "Name",
+    "CHATQUEUES": "Chat Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "STRATEGY": "Strategy",
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "DESCRIPTION": "Description",
+    "KEY": "Key",
+    "ALIAS": "Alias",
+    "VARIABLE": "Variable",
+    "INTERVAL": "Interval",
+    "EDIT_CLOSE": "Edit Close",
+    "TIMEZONE": "Timezone",
+    "MESSAGE": "Message",
+    "ADVANCED": "Advanced",
+    "FORWARDTRANSCRIPT": "Forward Transcript",
+    "FORWARDTRANSCRIPTMESSAGE": "Forward Transcript Message",
+    "SKIPMESSAGEBUTTON": "Skip Message Button",
+    "EDIT_MESSAGE": "Edit Message",
+    "CONDITION_AGREEMENT": "Condition Agreement",
+    "NONE": "None",
+    "PRIORITY": "Priority",
+    "ONLINESTATUS": "Online Status",
+    "UNMANAGEDSTATUS": "Unmanaged Status",
+    "AUTOCLOSE": "Enable Autoclose",
+    "ENABLEUNMANAGEDNOTE": "Enable Unmanaged Message",
+    "UNMANAGEDMESSAGE": "Message",
+    "SKIPUNMANAGED": "Skip Message",
+    "SENDUNMANAGED": "Send Message",
+    "WEBSITESCRIPT": "Website Script",
+    "DELETE_OFFLINEMESSAGE": "Delete",
+    "OFFLINEMESSAGES": "Offline Messages",
+    "FORWARD_OFFLINE": "Forward Offline",
+    "SHOW_OFFLINEMESSAGE": "Show",
+    "FORWARD_OFFLINE_ADDRESS": "Forward Offline Address",
+    "CLOSINGFORM": "Closing Form",
+    "ENABLERATING": "Enable Rating",
+    "ENABLECUSTOMERWRITING": "Allow customer writing before agent accepting",
+    "ENABLEFEEDBACK": "Enable Feedback",
+    "FEEDBACKTITLE": "Feedback Title",
+    "RATINGTYPE": "Rating Type",
+    "CLOSINGMESSAGE": "Closing Message",
+    "CLOSINGMESSAGEBUTTON": "Closing Message Button",
+    "RATINGSTARSNUMBER": "Rating Stars Number",
+    "EDIT_GOTOIF": "Edit GotoIf",
+    "CONDITION": "Condition",
+    "TRUEPRIORITY": "True Priority",
+    "FALSEPRIORITY": "False Priority",
+    "VALUE": "Value",
+    "MANDATORYDISPOSITION": "Mandatory disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled",
+    "SERVICEID": "Service ID",
+    "CHANNELID": "Channel ID",
+    "EDIT_TVOX": "Edit TVox",
+    "SERVICENAME": "Service name",
+    "TVOX": "TVox",
+    "TVOXURL": "TVox IP URL",
+    "TVOXIP": "TVox IP Address",
+    "TVOXUSERNAME": "TVox Username",
+    "TVOXPASSWD": "TVox Password",
+    "TVOXLOGINURL": "TVox Login REST Url",
+    "TVOXSESSIONURL": "TVox Session REST Url",
+    "MOTIONURLONRING": "Motion URL On Ring",
+    "MOTIONURLONANSWER": "Motion URL On Answer",
+    "MOTIONTITLE": "Motion Title",
+    "MOTIONURL": "Motion URL",
+    "ERRORS": {
+      "PROJECTID_REQUIRED": "Mandatory Field",
+      "CLIENTEMAIL_REQUIRED": "Mandatory Field",
+      "PRIVATEKEY_REQUIRED": "Mandatory Field",
+      "VIDAOOAPIKEY_REQUIRED": "Mandatory Field",
+      "VIDAOOTOPIC_REQUIRED": "Mandatory Field",
+      "BOTNAME_REQUIRED": "Mandatory Field",
+      "SECRETACCESSKEY_REQUIRED": "Mandatory Field",
+      "ACCESSKEYID_REQUIRED": "Mandatory Field",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "CUSTOMERALIAS_REQUIRED": "Mandatory Field",
+      "AGENTALIAS_REQUIRED": "Mandatory Field",
+      "SYSTEMALIAS_REQUIRED": "Mandatory Field",
+      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MESSAGEFONTSIZE_REQUIRED": "Mandatory Field",
+      "TAG_REQUIRED": "Mandatory Field",
+      "VERTICALPOSITION_REQUIRED": "Mandatory Field",
+      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "COMMAND_REQUIRED": "Mandatory Field",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FONTSIZE_REQUIRED": "Mandatory Field",
+      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "CUSTOMERALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "SYSTEMALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "OFFLINEMESSAGEBODY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "PLACEHOLDERMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "NOTETITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "CLOSINGQUESTION_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "HEADER_OFFLINE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "TEXT_REQUIRED": "Mandatory Field",
+      "SENDUNMANAGED_REQUIRED": "Mandatory Field",
+      "SENDUNMANAGED_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "SKIPUNMANAGED_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "UNMANAGEDMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "WEBSITEALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "AGENT_REQUIRED": "Mandatory Field",
+      "QUEUE_REQUIRED": "Mandatory Field",
+      "CONDITION_REQUIRED": "Mandatory Field",
+      "PRIORITY_REQUIRED": "Mandatory Field",
+      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
+      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
+      "NAME_REQUIRED": "Mandatory Field",
+      "LIST_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
+      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
+      "DISPOSITION_REQUIRED": "Mandatory Field",
+      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
+      "EMAIL_MUST_BE_VALID": "Wrong format",
+      "ADDRESS_REQUIRED": "Mandatory Field",
+      "ADDRESS_MUST_VALID_URL": "Wrong format",
+      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Mandatory Field",
+      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
+      "TIMEOUT_REQUIRED": "Mandatory Field",
+      "REJECTURL_MUST_VALID_URL": "Wrong format",
+      "CLOSEURL_MUST_VALID_URL": "Wrong format",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
+      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
+      "WAITINGMESSAGE_REQUIRED": "Mandatory Field",
+      "WAITINGTITLE_REQUIRED": "Mandatory Field",
+      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "KEY_REQUIRED": "Mandatory Field",
+      "WAITINGMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "WAITINGTITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
+      "EMAIL_ACCOUNT_REQUIRED": "Mandatory field"
+    },
+    "CM_FIELD": "Contact Manager Field",
+    "CHATPROACTIVEACTIONS": "Proactive Actions",
+    "NEW_CHATPROACTIVEACTION": "New Proactive Action",
+    "EDIT_CHATPROACTIVEACTION": "Edit Proactive Action",
+    "DELETE_CHATPROACTIVEACTION": "Delete Proactive Action",
+    "ADD_CHATPROACTIVEACTION": "Add Proactive Action",
+    "NO_CHATPROACTIVEACTION_AVAILABLE": "No Proactive Actions Available",
+    "NO_OFFLINEMESSAGE_AVAILABLE": "No Offline Messages Available",
+    "MOUSEOVER": "Mouse Over",
+    "TIMEOUT": "Timeout",
+    "TYPE": "Type",
+    "SELECTOR": "Selector",
+    "AGENT": "Agent",
+    "GOTO": "Goto",
+    "GOTOIF": "GotoIf",
+    "NOOP": "Noop",
+    "QUEUE": "Queue",
+    "BUILDER": "Builder",
+    "PREVIEW": "Preview",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_QUEUE": "Edit Queue",
+    "EDIT_GOTO": "Edit Goto",
+    "EDIT_GOTOIf": "Edit GotoIf",
+    "EDIT_NOOP": "Edit Noop",
+    "ADD_CHATQUEUE": "Add Chat Queue",
+    "EDIT_CHATQUEUE": "Edit Chat Queue",
+    "DELETE_CHATQUEUE": "Delete Chat Queue",
+    "SETTINGS": "Settings",
+    "SAVE": "Save",
+    "SCRIPT": "Script",
+    "TOKEN": "Token",
+    "CREATED_AT": "Created At",
+    "CHATWEBSITES": "Chat Websites",
+    "MOTIONADDRESS": "Website Domain",
+    "MOTIONPROXY": "Proxy Or Motion Domain",
+    "ADD_CHATWEBSITE": "Add Chat Website",
+    "EDIT_CHATWEBSITE": "Edit Chat Website",
+    "DELETE_CHATWEBSITE": "Delete Chat Website",
+    "LIST": "List",
+    "SNIPPET": "Snippet",
+    "FORMS": "Forms",
+    "UP": "Up",
+    "DOWN": "Down",
+    "COLLAPSE": "Collapse",
+    "PROACTIVEACTIONS": "Proactive Actions",
+    "DISPOSITIONS": "Dispositions",
+    "WEBHOOKS": "WebHooks",
+    "ACTIONS": "Actions",
+    "FIDELITY": "Fidelity",
+    "APPEARANCE": "Appearance",
+    "MAINCOLOR": "Main Color",
+    "FOCUSCOLOR": "Focus Color",
+    "BUTTONCOLOR": "Button Color",
+    "HEADERSHAPE": "Header Shape",
+    "ANIMATION": "Animation",
+    "DEFAULT": "Default",
+    "WHITELABEL": "White Label",
+    "LOGO": "Logo",
+    "DOWNLOADTRANSCRIPT": "Download Transcript",
+    "ENQUIRY_ENABLE": "Enquiry Enable",
+    "ENQUIRY_FORWARDING": "Enquiry Forwarding",
+    "ENQUIRY_FORWARDING_ADDRESS": "Enquiry Forwarding Address",
+    "LABELS": "Labels",
+    "HEADER_ONLINE": "Online Header",
+    "ONLINE_MESSAGE": "Online Message",
+    "NAME_TITLE": "Name Input Label",
+    "USERNAME_PLACEHOLDER": "Username Input Placeholder",
+    "EMAIL_TITLE": "Email Input Label",
+    "EMAIL_PLACEHOLDER": "Email Input Placeholder",
+    "START_CHAT_BUTTON": "'Start Chat' Button",
+    "AGENTS_BUSY": "Busy Agents Message",
+    "HEADER_OFFLINE": "Offline Header",
+    "OFFLINE_MESSAGE": "Offline Message",
+    "MESSAGE_TITLE": "Message Label",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Enquiry Message Input Placeholder",
+    "ENQUIRY_BUTTON": "Enquiry Button Text",
+    "RATING_MESSAGE": "Rating Message",
+    "RATING_SEND": "Rating Send Button Text",
+    "RATING_SKIP": "Rating Skip Button Text",
+    "ONLINE": "Online",
+    "OFFLINE": "Offline",
+    "PROACTIVE": "Proactive",
+    "ACCEPT": "Accept",
+    "ACCEPTMETHOD": "Accept Method",
+    "ACCEPTURL": "Accept URL",
+    "REJECT": "Reject",
+    "REJECTMETHOD": "Reject Method",
+    "REJECTURL": "Reject URL",
+    "CLOSE": "Close",
+    "CLOSEMETHOD": "Close Method",
+    "CLOSEURL": "Close URL",
+    "EMBEDDING": "Embedding",
+    "GENERAL": "General",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "BACK": "Back",
+    "HELP": {
+      "VERTICALPOSITION": "Represents the distance in percentage from top",
+      "AGENTIDENTIFIER": "Represents the agent identifier within the chat session in the snippet",
+      "HIDEWHENOFFLINE": "Hides snippet when offline",
+      "KEY": "Website short name (5 char) shown on the Agent Tab",
+      "TOKEN": "Automatically generated token used in the Script",
+      "INTEVAL": "To be selected from the list of the available intervals",
+      "TIMEZONE": "Select one from the list (default=local timezone)",
+      "ENABLERATING": "Enable it if you want the web visitor can rate the interaction at the end",
+      "ENABLEFEEDBACK": "Enable it if you want the web visitor can send a feedback (up to 150 char) at the end",
+      "FORWARDTRANSCRIPT": "Enable it if you want the web visitor is asked to receive a chat transcript via email",
+      "AUTOCLOSE": "Enable it if you want chat sessions to be closed as Unmanaged if no agent is available. Learn more about it at: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
+      "ENABLEUNMANAGEDNOTE": "Enable it if you want the visitor is shown a message when all the agents are busy and the chat gets unmanaged",
+      "WEBSITEALIAS": "A prefix used to compose the agent name (prefix+Agent Id) shown to the web visitor during the chat session",
+      "ENABLECUSTOMERWRITING": " Enable it if you want the chat starts without waiting for an available agent (pay attention: if you enable it, your chats will never get unmanaged). Learn more at: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
+      "MAPKEY": "The following Motion Contact Manager field:",
+      "FROMKEY": "Will be mapped in your Motion Chat Snippet as:",
+      "COPYSCRIPTTOCLIPBOARD": "Copy and paste the script text into your website",
+      "FORWARD_OFFLINE": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "MOTIONADDRESS": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
+      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "LIST": "Contact Manager list used to associate Contacts",
+      "INTERVAL": "Select one from the list",
+      "MANDATORYDISPOSITION": "Mandatory disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled",
+      "WELCOMEMESSAGE": "Leave empty if you don't want to send any welcome message"
+    },
+    "ADDRESS": "Address",
+    "ONLINESTATE": "Online Status",
+    "OFFLINESTATE": "Offline Status",
+    "RATINGSTATE": "Rating State",
+    "ENQUIRY": "Enquiry",
+    "OFFLINETEMPLATE": "Offline Template",
+    "CHATDISPOSITIONS": "Chat Dispositions",
+    "NO_CHATDISPOSITION_AVAILABLE": "No Chat Dispositions available",
+    "ADD_CHATDISPOSITION": "Add Chat Disposition",
+    "DELETE": "Delete",
+    "EDIT_CHATDISPOSITION": "Edit Chat Disposition",
+    "DELETE_CHATDISPOSITION": "Delete Chat Disposition",
+    "ID": "Id",
+    "NEW_CHATQUEUE": "New Chat Queue",
+    "NEW_CHATWEBSITE": "New Chat Website",
+    "ROUNDED": "Rounded",
+    "SQUARED": "Squared",
+    "NO_AVAILABLE_INFO": "No available info",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "OF": "of",
+    "CONTACT": "Contact",
+    "STARTEDAT": "Started At",
+    "LASTMESSAGE": "Last message",
+    "STATUS": "Status",
+    "CLOSED": "Closed",
+    "OPENED": "Open",
+    "OPEN": "Open",
+    "ACCOUNT": "Account",
+    "INTERACTION": "Interaction",
+    "INTERACTIONS": "Interactions",
+    "WEBSITE": "Website",
+    "ALL": "All",
+    "SELECT_STATUS": "Select a status",
+    "FILTER": "Filter",
+    "FILTERS": "Filters",
+    "TEAMADD_CHATQUEUE": "Add Team to Chat Queue",
+    "AGENTADD_CHATQUEUE": "Add Agent to Chat Queue",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "CLOSEDAT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "CREATEDAT": "Created At",
+    "NOTES": "Notes",
+    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "SELECTED_WEBSITE": "Select a website",
+    "GOTOP": "Gotop",
+    "EDIT_GOTOP": "Edit Gotop",
+    "SELECT_WEBSITE": "Select a website",
+    "INFO": "Info",
+    "OFFLINEMESSAGES_CHATWEBSITE": "Go to Offline Messages",
+    "WAITINGTITLE": "Waiting Title",
+    "WAITINGMESSAGE": "Waiting Message",
+    "RATING": "Rating",
+    "NO_RATINGVALUE": "No Rating",
+    "DEFAULT_PAUSE": "Default pause",
+    "UNKNOWN": "Unknown",
+    "UNREGISTERED": "Unregistered",
+    "UNAVAILABLE": "Unavailable",
+    "NOT_INUSE": "Not in use",
+    "REACHABLE": "Reachable",
+    "IN_USE": "In use",
+    "VOICE": "Voice",
+    "INTERACTIONS_CHATWEBSITE": "Go to Interactions",
+    "REFRESH_INTERACTIONS": "Refresh Interactions",
+    "DELETE_INTERACTION": "Delete Interaction",
+    "AGENTADD_CHATWEBSITE": "Add Agent to Chat Website",
+    "TEAMS_ASSOCIATION": "Teams Association",
+    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
+    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments"
+  }
+}
diff --git a/public/app/main/apps/contactmanager/i18n/hu.json b/public/app/main/apps/contactmanager/i18n/hu.json
new file mode 100644 (file)
index 0000000..ae09490
--- /dev/null
@@ -0,0 +1,194 @@
+{
+  "CONTACTMANAGER": {
+    "SELECT_TAG": "Select tags",
+    "CUSTOMER_JOURNEY": "Customer Journey",
+    "USERID": "Recall Agent ID",
+    "PRIORITY": "Priority",
+    "MOTIONDIALER": "Motion Bull",
+    "IMPORT_CONTACTS": "Import Contacts",
+    "PREFIX": "Dial Prefix",
+    "VOICEQUEUEID": "VoiceQueue ID",
+    "CAMPAIGNID": "Campaign ID",
+    "STATE": "State",
+    "NAME": "Name",
+    "LISTS": "Lists",
+    "UNIQUEID": "Unique Id",
+    "STATUS": "Status",
+    "STARTTIME": "Start Time",
+    "ENDTIME": "End Time",
+    "MOTION_BULL": "Motion Bull",
+    "HOPPER": "Hopper",
+    "FINAL": "Hopper Final",
+    "HISTORY": "Hopper History",
+    "SCHEDULEDAT": "Scheduled At",
+    "SEARCH_FOR_ANYONE": "Search",
+    "EDIT_LIST": "Edit List",
+    "EDIT_HOPPER": "Edit Hopper",
+    "DELETE_LIST": "Delete List",
+    "DELETE_HOPPER": "Delete Hopper",
+    "RELOAD": "Reload",
+    "NO_COMPANIES": "No Company",
+    "NO_AVAILABLE_ITEMS": "No Available Items",
+    "ADD": "Add",
+    "ERRORS": {
+      "NAME_REQUIRED": "Mandatory field",
+      "FIRSTNAME_REQUIRED": "Mandatory field",
+      "PHONE_REQUIRED": "Mandatory field",
+      "ALIAS_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "CLICKTOACTION_REQUIRED": "Mandatory field",
+      "ACTIONTYPE_REQUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "PHONEBAR_API": "Check the MotionBar is running and the remote control switch for the agent is turned on"
+    },
+    "DESCRIPTION": "Description",
+    "DISPOSITION": "Disposition",
+    "DISPOSITIONS": "Dispositions",
+    "VOICEDISPOSITIONS": "Voice Dispositions",
+    "NEW_VOICEDISPOSITION": "New Voice Disposition",
+    "CUSTOM_FIELDS": "Custom Fields",
+    "ADD_LIST": "Add List",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "COMPANIES": "Companies",
+    "EDIT_COMPANY": "Edit Company",
+    "DELETE_COMPANY": "Delete Company",
+    "PHONE": "Phone",
+    "EMAIL": "Email",
+    "ADD_COMPANY": "Add Company",
+    "CONTACTS": "Contacts",
+    "NEW_LIST": "New List",
+    "FIRSTNAME": "First Name",
+    "LASTNAME": "Last Name",
+    "LIST": "List",
+    "COMPANY": "Company",
+    "ADD_CONTACT": "Add Contact",
+    "EDIT_CONTACT": "Edit Contact",
+    "MERGE_CONTACT": "Merge Contact",
+    "DUPLICATE_CONTACT": "Duplicate Contact",
+    "DELETE_CONTACT": "Delete Contact",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "DETAIL": "Detail",
+    "PERSONAL_INFO": "Personal Info",
+    "MOBILE": "Mobile",
+    "FAX": "Fax",
+    "TAGS": "Tags",
+    "SHOW_ALL_FIELDS": "Show all fields",
+    "FEWER_FIELDS": "Show less fields",
+    "COUNTRY": "Country",
+    "CITY": "City",
+    "STREET": "Street",
+    "POSTALCODE": "Postal Code",
+    "DELETE": "Delete",
+    "DELETE_ALL": "Delete All",
+    "CONTACTMANAGER": "Contacts Manager",
+    "ID": "Id",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "CUSTOMFIELDS": "Custom Fields",
+    "NO_CUSTOMFIELD_AVAILABLE": "No Custom Fields available",
+    "ADD_TAG": "Add Tag",
+    "NO_TAG": "No Tags",
+    "ALIAS": "Alias",
+    "CLICKTOACTION": "Click to action",
+    "ACTIONTYPE": "Action type",
+    "TYPE": "Type",
+    "VALUE": "Value",
+    "ADD_CUSTOMFIELD": "Add Custom Field",
+    "EDIT_CUSTOMFIELD": "Edit Custom Field",
+    "DELETE_CUSTOMFIELD": "Delete Custom Field",
+    "NEW_COMPANY": "New Company",
+    "NEW_CONTACT": "New Contact",
+    "NEW_TAG": "New Tag",
+    "UPLOAD_CONTACTS": "Upload Contacts",
+    "FINISH": "Finish",
+    "SUCCESS": "Success",
+    "FAILURE": "Failure",
+    "ALL_CONTACTS": "All Contacts",
+    "NEW_CUSTOMFIELD": "New Custom Field",
+    "NO_VOICEDISPOSITION_AVAILABLE": "No Voice Dispositions available",
+    "ADD_VOICEDISPOSITION": "Add Voice Disposition",
+    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
+    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
+    "VAT": "VAT",
+    "COMPANYID": "Company ID",
+    "WEBSITE": "Website",
+    "EMAIL_DOMAIN": "Email Domain",
+    "ADDRESS": "Address",
+    "POSTAL_CODE": "Postal Code",
+    "SHIPMENTADDRESS": "Shipment Address",
+    "COPY_CONTACT": "Copy Contact",
+    "GOTOCONTACTS_LIST": "Show Contacts",
+    "GOTOCONTACTS_COMPANY": "Show Contacts",
+    "ADD_AGENT_TO_LIST": "Add Agent to List",
+    "AGENTADD_LIST": "Add Agents to List",
+    "NO_AVAILABLE_INFO": "No available info",
+    "NONE": "None",
+    "ALL": "All",
+    "FULLNAME": "Full Name",
+    "CHECK_DUPLICATES": "Check Duplicates",
+    "DUPLICATES": "Duplicates",
+    "UPLOAD_CSV": "Upload CSV",
+    "TAG": "Tag",
+    "UPLOAD": "Upload",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "DATE_OF_BIRTH": "Birthdate",
+    "DATEOFBIRTH": "Birthdate",
+    "NOTES": "Notes",
+    "EXPORTCSVCONTACTS_LIST": "Export to CSV",
+    "GOTO_LIST": "Show Contacts",
+    "GOTO_COMPANY": "Show Contacts",
+    "REQUIRED": "Required",
+    "GLOBALCUSTOMFIELDS": "Global Custom Fields",
+    "NEW_GLOBALCUSTOMFIELD": "New Custom Fields",
+    "ADD_GLOBALCUSTOMFIELD": "Add Custom Field",
+    "EDIT_GLOBALCUSTOMFIELD": "Edit Custom Field",
+    "DELETE_GLOBALCUSTOMFIELD": "Delete Custom Field",
+    "JSCRIPTY": "Jscripty",
+    "SESSIONS": "Sessions",
+    "AGENT": "Agent",
+    "PROJECT": "Project",
+    "SELECT_LIST": "Select a list",
+    "SELECT_COMPANY": "Select a company",
+    "SELECT_TAGS": "Select one or more tags",
+    "HELP": {
+      "PHONEBAR_API_MESSAGE": "To enable click-to-call, insert a phone number and check the remote control switch for the Agent is turned on",
+      "PHONEBAR_API": "To enable click-to-call, insert a phone number and check the remote control switch for the Agent is turned on"
+    },
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "OF": "of",
+    "SOCIAL": "Social",
+    "ROW": "Row",
+    "EXPORT_ERRORS": "Export Errors",
+    "UPLOAD_COMPLETED": "Upload Completed",
+    "STOP": "Stop",
+    "SELECT_FILE": "Select File",
+    "BILLINGINFORMATION": "Billing Information",
+    "FLATDISCOUNT": "Company Discount",
+    "EUROPE": "Europe",
+    "ISOCODE": "ISO National Code",
+    "VATNUMBER_CF": "Codice Fiscale/VAT",
+    "PIVA": "VAT Number",
+    "SDICODE": "SDI Code",
+    "EXPIREDAY": "Expiration Days",
+    "INVOICEARTICLE": "Law Articles",
+    "PAYMENTMETHOD": "Payment Method",
+    "SOCIAL_CAPITAL": "Share Capital",
+    "COMPANY_FISCAL_TYPE": "Company Fiscal Type",
+    "RELATIONSHIP": "Relationship ...",
+    "RELATIONSHIPCOMPANY": " ... with",
+    "CREATE": "Create",
+    "RECALLME": "Recall Me",
+    "NOTIFICATIONS": {
+      "NO_DATA_ERROR": "Unable to retrieve any data",
+      "INTERACTION_OPEN_ERROR": "Unable to open the interaction",
+      "ACCOUNTS_GET_ERROR": "Unable to retrieve any {{channel}} account",
+      "JSCRIPTY_GET_ERROR": "Unable to retrieve any Jscripty project"
+    }
+  }
+}
diff --git a/public/app/main/apps/dashboards/i18n/hu.json b/public/app/main/apps/dashboards/i18n/hu.json
new file mode 100644 (file)
index 0000000..f0ce997
--- /dev/null
@@ -0,0 +1,576 @@
+{
+  "DASHBOARDS": {
+    "VISIBILITY": "Visibility",
+    "PUBLIC": "Public",
+    "PRIVATE": "Private",
+    "PUBLIC_INTERACTION": "The interaction is public",
+    "LOST_CONNECTION": "Experiencing network connectivity issues. Please check your internet connection.",
+    "SCHEDULED_CALLS": "Scheduled Calls",
+    "DOWNLOAD": "Download",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments",
+    "UNMANAGED_RATE": "Unmanaged Rate",
+    "UNMANAGED_RATE_TEXT": "Interactions Unmanaged Rate",
+    "VOICE_WAITING": "WAITING",
+    "VOICE_WAITING_TEXT": "WAITING QUEUE CALLS",
+    "VOICE_TALKING": "TALKING",
+    "VOICE_TALKING_TEXT": "ACTIVE QUEUE CALLS",
+    "VOICE_ANSWERED": "ANSWERED",
+    "VOICE_ANSWERED_TEXT": "ANSWERED QUEUE CALLS",
+    "VOICE_ABANDONED": "ABANDONED",
+    "VOICE_ABANDONED_TEXT": "ABANDONED QUEUE CALLS",
+    "VOICE_TOTAL_OFFERED": "TOTAL OFFERED",
+    "VOICE_TOTAL_OFFERED_TEXT": "TOTAL QUEUE CALLS",
+    "TODAY_INTERACTIONS_STATS": "Interactions Daily Stats",
+    "VOICE_AVG_HOLD_TIME": "AVERAGE HOLD TIME",
+    "VOICE_AVG_HOLD_TIME_TEXT": "QUEUE CALLS AVG HOLD TIME",
+    "VOICE_AVG_TALK_TIME": "AVERAGE TALK TIME",
+    "VOICE_AVG_TALK_TIME_TEXT": "QUEUE CALLS TALK TIME",
+    "VOICE_ANSWER_RATE": "ANSWER RATE",
+    "VOICE_ANSWER_RATE_TEXT": "QUEUE CALLS ANSWER RATE",
+    "VOICE_ABANDON_RATE": "ABANDON RATE",
+    "VOICE_ABANDON_RATE_TEXT": "QUEUE CALLS ABANDON RATE",
+    "VOICE_UNMANAGED": "UNMANAGED",
+    "VOICE_UNMANAGED_TEXT": "UNMANAGED QUEUE CALLS",
+    "OPENED_TEXT": "Opened Interactions",
+    "MANAGED": "Managed",
+    "MANAGED_TEXT": "Managed Interactions",
+    "ABANDONED": "Abandoned",
+    "ABANDONED_TEXT": "Abandoned Interactions",
+    "ABANDONED_RATE": "Abandoned Rate",
+    "ABANDONED_RATE_TEXT": "Interactions Abandon Rate",
+    "TOTAL_OFFERED": "Total Offered",
+    "TOTAL_OFFERED_TEXT": "Offered Interactions",
+    "AVG_HOLD_TIME_TEXT": "Interactions AVG Hold Time",
+    "MANAGED_RATE": "Managed Rate",
+    "MANAGED_RATE_TEXT": "Interactions Managed Rate ",
+    "AVG_MANAGED_TIME": "AVG Management Time",
+    "AVG_MANAGED_TIME_TEXT": "Interactions AVG Management Time",
+    "NO_DISPOSITION_SET": "No disposition set",
+    "AGENTS": "Agents",
+    "TRANSFER": "Transfer",
+    "NO_DATA_AVAILABLE": "No data available",
+    "CUSTOMER_JOURNEY": "Customer Journey",
+    "ME": "Me",
+    "CURRENTLY_IN_USE_BY": "Currently in use by",
+    "NOTAVAILABLE": "Not available",
+    "CLICKRELOAD": "New abandoned calls! Reload please",
+    "ASSIGNTO": "Assign to",
+    "SELECT_QUEUE": "Select Queue",
+    "SELECT_CAMPAIGN": "Select Queue",
+    "FREE": "Free",
+    "RESERVED": "Reserved",
+    "QUEUECALLEREXITREASON": "Reason",
+    "QUEUECALLEREXITAT": "Dropped",
+    "LASTASSIGNEDTO": "Last Assigned To",
+    "ABANDONEDQUEUECALLS": "Abandoned Queue Calls",
+    "ABANDONAT": "Abandoned",
+    "QUEUE": "Queue",
+    "SELECT_SUBSTATUS": "Select Substatus",
+    "READ": "Read",
+    "UNREAD": "Unread",
+    "SELECT_READ_UNREAD": "Select Read/Unread",
+    "SELECT_AGENT": "Select Agent",
+    "MARK_AS_UNREAD": "Mark as unread",
+    "FILTER_VOICE_QUEUES": "Filter Voice Queues",
+    "CHANNEL_WAITING_TEXT": "Waiting Queue Interactions",
+    "CHANNEL_QUEUE": "Queue",
+    "CHANNEL_FROM": "From",
+    "LOADING_INTERACTION": "We are loading the interaction...",
+    "JANUARY": "January",
+    "FEBRUARY": "February",
+    "MARCH": "March",
+    "APRIL": "April",
+    "MAY": "May",
+    "JUNE": "June",
+    "JULY": "July",
+    "AUGUST": "August",
+    "SEPTEMBER": "September",
+    "OCTOBER": "October",
+    "NOVEMBER": "November",
+    "DECEMBER": "December",
+    "MON": "Mon",
+    "TUE": "Tue",
+    "WED": "Wed",
+    "THU": "Thu",
+    "FRI": "Fri",
+    "SAT": "Sat",
+    "SUN": "Sun",
+    "DELETE": "Delete",
+    "LAST_3_DAYS": "Last 3 Day",
+    "LAST_YEAR": "Last Year",
+    "THIS_YEAR": "This Year",
+    "LAST_MONTH": "Last Month",
+    "THIS_MONTH": "This Month",
+    "LAST_WEEK": "Last Week",
+    "THIS_WEEK": "This Week",
+    "YESTERDAY": "Yesterday",
+    "TODAY": "Today",
+    "SELECT_DATE": "Select Start Date",
+    "HOME": "Home",
+    "SET_AS": "Set As",
+    "PENDING": "Pending",
+    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
+    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
+    "TAGS": "Tags",
+    "SELECT_TAG": "Select Tag",
+    "TYPE": "Type",
+    "SOURCE": "Source",
+    "DESTINATION": "Destination",
+    "CALLERID": "Caller ID",
+    "END_AT": "End At",
+    "DURATION": "Duration",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Open Channel",
+    "FAX": "Fax",
+    "NOT_ASSIGNED": "Not Assigned",
+    "UNKNOWN": "Unknown",
+    "SELECT_USER": "Select User",
+    "LAST_MESSAGE": "Last message",
+    "USER": "User",
+    "RATING": "Rating",
+    "FEEDBACK": "Feedback",
+    "SUBJECT": "Subject",
+    "CUSTOMER_IP": "Originating IP Address",
+    "REFERER": "Referer",
+    "ACCOUNT": "Account",
+    "WEBSITE": "Website",
+    "AGENT": "Agent",
+    "CREATED_AT": "Created At",
+    "CLOSED_AT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "CONTACT": "Contact",
+    "INTERACTION": "Interaction",
+    "BROWSER_NAME": "Browser Name",
+    "BROWSER_VERSION": "Browser Version",
+    "OS_NAME": "Operating System Name",
+    "OS_VERSION": "Operating System Version",
+    "DEVICE_MODEL": "Device Model",
+    "DEVICE_VENDOR": "Device Vendor",
+    "DEVICE_TYPE": "Device Type",
+    "RECALLME": "Recall Me",
+    "DROP_RATE": "Drop Rate",
+    "DROPPED": "Dropped",
+    "DROPPED_TEXT": "Dropped Queue Calls",
+    "DETAIL": "Detail",
+    "MOTION_BULL": "Motion Bull",
+    "LIMITED": "Limited",
+    "LIMITED_TEXT": "IVR Campaigns Calls Originated/Limit",
+    "DASHBOARDS": "Dashboards",
+    "RECORDINGS": "Recordings",
+    "TODAY_MOTION_BULL_STATS": "Queue Campaigns Daily Stats",
+    "ORIGINATED": "Originated",
+    "ORIGINATED_TEXT": "Queue Calls Originated",
+    "UPDATE": "Update",
+    "MORE": "More",
+    "MOTIONDIALER": "Motion Bull",
+    "DISPOSE": "Dispose",
+    "QUEUES": "Queues",
+    "DIALER_CALL": "Dialer Call",
+    "ELAPSED_TIME": "Elapsed Time",
+    "EDIT": "Edit",
+    "MERGE": "Merge",
+    "DUPLICATE": "Duplicate",
+    "UNIQUEID": "Uniqueid",
+    "AUTOCLOSE": "Automatically close contact tab after disposal",
+    "CAMPAIGN": "Campaign",
+    "NONE": "None",
+    "NAME": "Name",
+    "ANSWER_MACHINE": "Answer Machine",
+    "INTERESTED": "Interested",
+    "NOT_INTERESTED": "Not Interested",
+    "PERSONAL_INFO": "Personal Info",
+    "SOLD": "Sold",
+    "SPECIAL": "Special",
+    "BLACKLIST": "Blacklist",
+    "RESCHEDULE": "Reschedule",
+    "FIRSTNAME": "Firstname",
+    "LASTNAME": "Lastname",
+    "MOBILE": "Mobile",
+    "DATE_OF_BIRTH": "Birthdate",
+    "COMPANY": "Company",
+    "TAG": "Tag",
+    "COUNTRY": "Country",
+    "CITY": "City",
+    "STREET": "Address",
+    "POSTALCODE": "Postal Code",
+    "CUSTOM_FIELDS": "Custom Fields",
+    "GENERAL": "General",
+    "VOICE": "Voice",
+    "TODAY_IVR_CAMPAIGNS_STATS": "Daily Ivr Campaigns Stats",
+    "TODAY_INBOUND_STATS": "Inbound Queue Daily Stats",
+    "TODAY_OUTBOUND_STATS": "Outbound Daily Stats",
+    "WAITING": "Waiting",
+    "TALKING": "Talking",
+    "INBOUND_ANSWERED": "Answered",
+    "OUTBOUND_ANSWERED": "Answered",
+    "AVG_HOLD_TIME": "Average Hold Time",
+    "INBOUND_ANSWER_RATE": "Answer Rate",
+    "OUTBOUND_ANSWER_RATE": "Answer Rate",
+    "ABANDON_RATE": "Abandon Rate",
+    "UNMANAGED": "Unmanaged",
+    "TOTAL": "Total",
+    "TOT_DURATION": "Total Duration",
+    "AVG_DURATION": "Average Duration",
+    "HELP": {
+      "MANDATORY_DISPOSITION_ENABLED": "Mandatory disposition enabled for this account",
+      "UNMANAGED_RATE": "The Unmanaged Rate of all the Interactions",
+      "WAITING": "The total number of Waiting Interactions",
+      "OPENED": "The total number of Active Interactions",
+      "MANAGED": "The total number of Completed Interactions",
+      "ABANDONED": "The total number of Abandoned Interactions",
+      "TOTAL_OFFERED": "The total number of Interactions (completed + abandoned)",
+      "AVG_HOLD_TIME": "The Average Interaction Hold Time, namely the average time spent waiting for an agent to answer, for all the existing Interactions",
+      "AVG_MANAGED_TIME": "The Average Interaction Managed Time, namely the average time spent during conversation",
+      "MANAGED_RATE": "The Managed Rate of all the Interactions",
+      "ABANDONED_RATE": "The Abandon Rate of all the Interactions",
+      "UNMANAGED": "The total number of Unmanaged Interactions",
+      "VOICE_WAITING": "The total number of Waiting Queue Calls, for all the existing Queues",
+      "VOICE_TALKING": "The total number of Active Queue Calls, for all the existing Queues",
+      "VOICE_ANSWERED": "The total number of Completed Queue Calls, for all the existing Queues",
+      "VOICE_ABANDONED": "The total number of Abandoned Queue Calls, considering all the existing Queues. Note that the calls which are abandoned for timeout and joinempty will not be considered",
+      "VOICE_TOTAL_OFFERED": "The total number of Queue Calls (completed + abandoned + unmanaged in the last queue of the flow). Note that the calls which enter in an IVR and not in a queue, will not be considered",
+      "VOICE_AVG_TALK_TIME": "The Average Queue Talk Time, namely the average time spent during conversation, for all the existing Queues",
+      "VOICE_AVG_HOLD_TIME": "The Average Queue Hold Time, namely the average time spent waiting for an agent to answer, for all the existing Queues",
+      "VOICE_ANSWER_RATE": "The Answer Rate of all the Queue Calls",
+      "VOICE_UNMANAGED": "The total number of Unmanaged Queue Calls, for all the existing Queues. It includes the calls which are abandoned for timeout, joinempty, leavewhenempty and exitwithkey (cfr. asterisk doc for more information)",
+      "ORIGINATED": "Total number of calls dialed in the queue campaigns",
+      "ORIGINATEDLIMITED": "IVR Campaigns Calls Originated/Limit",
+      "DROPPED": "The total number of Dropped Queue Calls, for all the existing Queues",
+      "DROP_RATE": "The Drop Rate of all the Queue Calls",
+      "OUTBOUND_ANSWERED": "The total number of Completed Outbound Calls",
+      "OUTBOUND_ANSWER_RATE": "The Answer Rate of all the Outbound Calls",
+      "ABANDON_RATE": "The Abandon Rate of all the Queue Calls",
+      "TOTAL": "The total number of Outbound Calls",
+      "TOT_DURATION": "The total duration of all the Outbound Calls",
+      "AVG_DURATION": "The average duration of all the Completed Outbound Calls",
+      "EXACT_MATCH_FILTER": "Search for an exact match",
+      "LIKE_FILTER": "Search for the specified pattern"
+    },
+    "ERRORS": {
+      "CAMPAIGN_REQUIRED": "Mandatory field",
+      "FIRSTNAME_REQUIRED": "Mandatory field",
+      "PHONE_REQUIRED": "Mandatory field",
+      "DISPOSITION_REQUIRED": "Mandatory field",
+      "AGENT_REQUIRED": "Mandatory field",
+      "QUEUE_REQUIRED": "Mandatory field",
+      "FAILED_INITIALIZATION": "Error during initialization"
+    },
+    "NO_AVAILABLE_INFO": "No available info",
+    "WELCOME_TO_MOTION": "Welcome to Motion",
+    "WELCOME_MESSAGE": "Use the left sidebar to navigate through available sections",
+    "ADD": "Add",
+    "CONTACTMANAGER": "Contact Manager",
+    "DASHBOARD": "Dashboard",
+    "EDIT_CONTACT": "Edit contact",
+    "EMAIL": "Email",
+    "FULLNAME": "Fullname",
+    "CREATEDAT": "Created At",
+    "LIST": "List",
+    "NEW_CONTACT": "New Contact",
+    "PHONE": "Phone",
+    "SAVE": "Save",
+    "INBOUND_WAITING_CALLS": "Inbound Waiting Calls",
+    "CONTACTS": "Contacts",
+    "MYCONTACTS": "My Contacts",
+    "ADD_CONTACT": "Add Contact",
+    "RELOAD": "Reload",
+    "WAITING_TEXT": "Waiting Interactions",
+    "TALKING_TEXT": "Active Queue Calls",
+    "INBOUND_ANSWERED_TEXT": "Answered Queue Calls",
+    "DROP_RATE_TEXT": "Queue Calls Drop Rate",
+    "AVG_TALK_TIME_TEXT": "Queue Calls Talk Time",
+    "INBOUND_ANSWER_RATE_TEXT": "Queue Calls Answer Rate",
+    "UNMANAGED_TEXT": "Unmanaged Interactions",
+    "TOTAL_TEXT": "Total Outbound Calls",
+    "OUTBOUND_ANSWERED_TEXT": "Outbound Answered Calls",
+    "TOT_DURATION_TEXT": "Outbound Calls Total Duration",
+    "AVG_DURATION_TEXT": "Outbound Calls Average Duration",
+    "OUTBOUND_ANSWER_RATE_TEXT": "Outbound calls Answer Rate",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "OF": "of",
+    "REPLY_PLACEHOLDER": "Type and hit enter to send a message",
+    "CONTACT_INFO": "Contact Info",
+    "CLOSE_AND_DISPOSE": "Close and dispose",
+    "DISPOSITIONS": "Dispositions",
+    "CLOSE_WITHOUT_DISPOSE": "Close without dispose",
+    "ACCEPT": "Accept",
+    "REJECT": "Reject",
+    "CLOSED": "Closed",
+    "INFO": "Info",
+    "NOTE": "Note",
+    "ACCEPT_ELSEWHERE": "Accepted elsewhere",
+    "ATTENTION": "Attention",
+    "SOCIAL": "Social",
+    "NO_JSCRIPTY_PROJECTS_AVAILABLE": "No Jscripty Projects available",
+    "OPENED": "Open",
+    "FILTER": "Filter",
+    "SELECT_STATUS": "Select Status",
+    "SELECT_ACCOUNT": "Select Account",
+    "SELECT_WEBSITE": "Select Website",
+    "ALL": "All",
+    "INTERACTIONS": "Interactions",
+    "STARTEDAT": "Started At",
+    "STATUS": "Status",
+    "OPEN": "Open",
+    "SHOW": "Show",
+    "SHOW_DETAILS": "Show Details",
+    "HIDE_DETAILS": "Hide Details",
+    "EXTERNAL_URL": "External Link",
+    "NO_MAIL_ACCOUNTS_AVAILABLE": "No Email Accounts available",
+    "NO_FAX_ACCOUNTS_AVAILABLE": "No Fax Accounts available",
+    "NO_SMS_ACCOUNTS_AVAILABLE": "No SMS Accounts available",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "No Whatsapp Account available",
+    "SELECT_DATE_RANGE": "Select Date Range",
+    "CLEAR": "Clear",
+    "CALL_NUMBER": "Call",
+    "TRANSFER_NUMBER": "Transfer",
+    "CALL_SAVED": "Call properly saved",
+    "CALL_DISPOSED": "Call properly disposed",
+    "CUSTOMER_PORT": "Originating TCP Port",
+    "INTERACTION_CLOSED": "Interaction properly closed",
+    "INTERACTION_DISPOSED": "Interaction properly disposed",
+    "INTERACTION_CLOSED_DISPOSED": "Interaction properly closed and disposed",
+    "SELECT_ALL": "Select all",
+    "ASSIGNED_TO_OTHERS": "Assigned to others",
+    "ID": "Id",
+    "CHAT_INTERACTIONS": "Chat Interactions",
+    "MAIL_INTERACTIONS": "Email Interactions",
+    "SMS_INTERACTIONS": "SMS Interactions",
+    "OPENCHANNEL_INTERACTIONS": "Open Channel Interactions",
+    "FAX_INTERACTIONS": "Fax Interactions",
+    "DRAFT": "Draft",
+    "DRAFT_SAVE_WARNING_TITLE": "Overwrite existing draft?",
+    "DRAFT_SAVE_WARNING_MESSAGE": "There is already a draft saved for this interaction. Are you sure you want to overwrite it?",
+    "OVERWRITE": "Overwrite",
+    "CANCEL": "Cancel",
+    "UNTITLED": "Untitled",
+    "SAVE_AS_DRAFT": "Save as draft",
+    "UPDATE_DRAFT": "Update draft",
+    "NO_AVAILABLE_INTERACTION": "No available interaction",
+    "DOSSIERS": "Dossiers",
+    "DOSSIER": "Dossier",
+    "DOSSIER_INFO": "Information",
+    "SELECT_COMPANY": "Select Company",
+    "DOSSIERNAME": "Dossier Name",
+    "OPENDATE": "Open Date",
+    "ALL_COMPANIES": "All Companies",
+    "SELECT_WORKFLOW": "Select Workflow",
+    "WORKFLOW": "Select Workflow",
+    "SELECT_WORKFLOWSTEPS": "Select Workflow State",
+    "ALL_WORKFLOW": "All Workflow",
+    "STATE": "State",
+    "STEP": "Step",
+    "NEW_DOSSIER": "New Dossier",
+    "PRICELIST": "Price List",
+    "PRODUCTFILTERNAME": "Filter Name",
+    "PRODUCTNAME": "Product",
+    "PRODUCTINQUOTATION": "PRODUCT DETAILS",
+    "REQUEST": "REQUEST",
+    "QUOTATION": "QUOTATION",
+    "DOSSIERID": "Dossier ID",
+    "QUOTATIONNAME": "Quotation Name",
+    "QUOTATIONNOTES": "Quotation Notes",
+    "QUOTATIONSTATUS": "State",
+    "REQUESTNAME": "Request Name",
+    "REQUESTNOTES": "Request Notes",
+    "ALL_STEP": "All",
+    "UPDATED_AT": "Modified on",
+    "BY": "By",
+    "ORDER": "Order",
+    "PROFORMA": "PROFORMA",
+    "INVOICE": "INVOICE",
+    "REQUESTID": "Request",
+    "QUOTATIONID": "Offer",
+    "ORDERID": "Order",
+    "PRICELISTNAME": "Price List",
+    "PRODUCTCODE": "Product Code",
+    "PRICELISTNETPRICE": "Net Price",
+    "PRICELISTDISCOUNT": "Price list discount",
+    "QUOTATIONQTY": "Quantity",
+    "QUOTATIONTAX": "Tax",
+    "QUOTATIONPROFORMAID": "Proforma ID",
+    "QUOTATIONINVOICEID": "Invoice ID",
+    "QUOTATIONDISCOUNT": "Quotation Discount",
+    "ORDER_INFO": "Order",
+    "REQUEST_INFO": "Request",
+    "QUOTATION_INFO": "Quotation",
+    "ORDERCLIENTCODE": "Customer Code",
+    "ORDERNOTES": "Note",
+    "PROFORMANAME": "Proforma name",
+    "AGENTFULLNAME": "Agent",
+    "PROFORMANOTES": "Note",
+    "PRODUCTINPROFORMA": "Products in proforma",
+    "INVOICENAME": "Invoice Name",
+    "INVOICENOTES": "Note",
+    "DOSSIERNOTES": "Note",
+    "QUOTATIONTOTALPRICE": "Total net",
+    "QUOTATIONTOTALTAX": "Total tax",
+    "PROFORMA_INFO": "Proforma",
+    "PROFORMAID": "Id Proforma",
+    "PRICESALELISTNETPRICE": "Prezzo listino",
+    "PROFORMASTATUS": "State",
+    "INVOICESTATUS": "State",
+    "NO_PRODUCTINVOICE_AVAILABLE": "No product",
+    "INVOICEID": "Invoice",
+    "PRODUCTNOTE": "Note",
+    "INVOICE_INFO": "Invoice",
+    "COMPANYSTREET": "Address",
+    "COMPANYCITY": "City",
+    "COMPANYPOSTALCODE": "Postal Code",
+    "COMPANYCOUNTRY": "Country",
+    "COMPANYFAX": "Fax",
+    "COMPANYVAT": "Fiscal Code/VAT",
+    "COMPANYPHONE": "Telephone",
+    "COMPANYEMAIL": "Email",
+    "NOTES": "Note",
+    "QUOTATIONPRODUCTNOTE": "Product Note",
+    "QUOTATIONVAT": "VAT",
+    "AUTOPROFORMA": "SELF-PROFORMA",
+    "AUTOINVOICE": "SELF-INVOICE",
+    "MOVEASSET": "ASSET",
+    "ORDERSTATUS": "State",
+    "QUOTATIONTOTALS": "Total",
+    "QUOTATIONTOTAL": "TOTAL",
+    "PRODUCTTYPE": "Type",
+    "PRODUCTSUBSCRIPTION": "Duration",
+    "PRODUCTATUNIT": "Unit",
+    "INASSET": "Asset",
+    "PRODUCTININVOICE": "Products on the invoice",
+    "SUBSCRIPTIONS": "CUSTOMER SCHEDULE",
+    "SUBSCRIPTIONNAME": "Subscription",
+    "COMPANYNAME": "Company",
+    "NEXTINVOICE": "Next Invoice",
+    "SUBSCRIPTIONDETAIL": "Detail",
+    "PRODUCTDESCRIPTION": "Description",
+    "NETPRICE": "Price",
+    "DISCOUNT": "Discount",
+    "TAX": "Tax",
+    "ATTENDACELASTINVOICE": "Last invoice",
+    "ATTENDACENEXTINVOICE": "Next invoice",
+    "SELECT_PRODUCT": "Select product",
+    "SELECT_PRODUCTTYPE": "Select type",
+    "ALL_PRODUCTS": "All",
+    "ALL_STATUS": "All",
+    "PAYMENT_INFO": "Payment information",
+    "PAYMENTMETHOD": "Payment methods",
+    "PAYMENT": "Payment",
+    "DETAILS": "Details",
+    "INVOICEDETAILS": "INVOICE DETAILS",
+    "QUANTITY": "Quantity",
+    "MANAGESALES": "Subscriptions",
+    "ACCOUNTINGDOC": "Accounting",
+    "INVOICES": "INVOICES",
+    "PROFORMAS": "PROFORMA",
+    "PAYMENTS": "PAYMENTS",
+    "SELECT_PERIOD": "Select range",
+    "NO_PRODUCTPROFORMA_AVAILABLE": "No data available",
+    "NO_PRODUCTPRICELIST_AVAILABLE": "No data available",
+    "PROFORMAAUTHORIZED": "Authorized proforma",
+    "ADD_PRODUCTPRICELIST": "ADD PRODUCT",
+    "DELETE_PRODUCT": "Delete Product",
+    "AUTHORIZED": "AUTHORIZED",
+    "INVOICEDISCOUNT": "Discount",
+    "DEPOSIT": "DEPOSIT",
+    "BALANCE": "BALANCE",
+    "PRODUCTS": "PRODUCTS",
+    "INVOICENOPRODUCTDESCRIPTION": "Description on the invoice",
+    "INVOICENOPRODUCTAMOUNT": "Amount",
+    "INVOICENOTAXAMOUNT": "TAX",
+    "INVOICENOPRODUCTSAVE": "Save",
+    "INVOICENOPRODUCTUPDATE": "Update",
+    "PDFPROFORMA": "PDF",
+    "PDFINVOICE": "PDF",
+    "PAIDANDEXPIRED": "Payment",
+    "CREDITNOTE": "CREDIT NOTE",
+    "CREDITNOTE_INFO": "Credit Note",
+    "MOVECREDITNOTE": "SELF-CREDIT NOTE",
+    "CREDITNOTEDETAILS": "Credit Note Detail",
+    "PDFCREDITNOTE": "PDF",
+    "CREDITINOTENAME": "Name",
+    "TOTALPAYMENTS": "Total payments",
+    "PROFORMADETAILS": "Details",
+    "CREATIONDATE": "Created at",
+    "STARTDATE": "Invoice Date",
+    "ENDDATE": "Expiry Date",
+    "NUMBER": "Number",
+    "PRODUCTPRICE": "Price",
+    "PRODUCTTAX": "Tax percentage",
+    "PRODUCTQTY": "Quantity",
+    "UPDATE_PRODUCT": "Update Product",
+    "QUOTATIONPRODUCTTYPE": "Type",
+    "QUOTATIONUNIT": "Unit",
+    "QUOTATIONSUBSCRIPTION": "Duration",
+    "SELECT_PERIOD_CREATION": "Select Creation Date",
+    "SELECT_PERIOD_START": "Select Date",
+    "SELECT_PERIOD_EXPIRE": "Select Expiry Date",
+    "NEW_COMPANY": "New",
+    "COMPANIES": "Companies",
+    "PAYED_AY": "Payed on",
+    "CLONEPROFORMA": "Clone",
+    "COMPANYDESC": "Description",
+    "COMPANYNATION": "Nation",
+    "GRAPHINVOICES": "Invoice emission chart",
+    "YEARS": "Years",
+    "FROM": "From",
+    "TO": "To",
+    "INVOICEEMITED": "Issued",
+    "INVOICEPAYED": "Payed",
+    "INVOICETOTAL": "Total",
+    "CHOOSE": "Choose",
+    "ADVANCED_SEARCH": "Advanced Search",
+    "NEW_CONDITION": "New Condition",
+    "SELECT_FIELD": "Select field",
+    "SELECT_OPERATOR": "Select operator",
+    "VALUE": "Value",
+    "VALUES": "Values",
+    "APPLY": "Apply",
+    "MEET_ALL_CONDITIONS": "Meet all conditions",
+    "MEET_ANY_CONDITIONS": "Meet at least one condition",
+    "EQUALS": "Equals",
+    "IS_NOT_EQUAL": "Does not equal",
+    "IS_AMONG": "Is among",
+    "IS_NOT_AMONG": "Is not among",
+    "IS_GREATER_THAN": "Is greater than",
+    "IS_GREATER_THAN_OR_EQUAL_TO": "Is greater than or equal to",
+    "IS_LESS_THAN": "Is less than",
+    "IS_LESS_THAN_OR_EQUAL_TO": "Is less than or equal to",
+    "IS_BETWEEN": "Is between",
+    "CONTAINS": "Contains",
+    "STARTS_WITH": "Starts with",
+    "ENDS_WITH": "Ends with",
+    "STARTING_DATE": "Starting date",
+    "ENDING_DATE": "Ending date",
+    "STARTING_VALUE": "Starting value",
+    "ENDING_VALUE": "Ending value",
+    "VALUE_RANGE_CHECK": "Value must be greater than",
+    "AND": "And",
+    "ENABLED": "Enabled",
+    "DISABLED": "Disabled",
+    "ELAPSED_ANSWERED": "Elapsed time since call started",
+    "ELAPSED_DISPOSED": "Elapsed time since call ended",
+    "WHATSAPP": "WhatsApp Connector",
+    "WHATSAPP_INTERACTIONS": "WhatsApp Connector Interactions",
+    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
+    "THIRD_LEVEL_DISPOSITION": "Third Level Disposition",
+    "VIDAOOSESSION": "Start Video Call",
+    "SELECT_CONTACT": "Select contact",
+    "SELECT": "Select",
+    "LAST_UPDATED": "Last updated",
+    "MATCHING_FIELD": "Matching field",
+    "MULTIPLE_CONTACTS_FOUND": "Multiple contacts found for number",
+    "WHICH_ONE_TO_USE": "Which one do you want to use?",
+    "LICENSE_EXPIRE_REMAINING_DAYS": "Your license is about to expire! Please contact your Administrator",
+    "NO_RESULTS_AVAILABLE": "No results available",
+    "AVAILABLE": "Available",
+    "AGENT_PRESENCE": "Agent Presence",
+    "SELECT_TEAM": "Select Team",
+    "NOTIFICATIONS": {
+      "TRANSFER_AGENT_EXECUTED": "Transfer to agent successfully executed",
+      "TRANSFER_QUEUE_EXECUTED": "Transfer to queue successfully executed"
+    }
+  }
+}
diff --git a/public/app/main/apps/fax/i18n/hu.json b/public/app/main/apps/fax/i18n/hu.json
new file mode 100644 (file)
index 0000000..bfa0d7e
--- /dev/null
@@ -0,0 +1,261 @@
+{
+  "FAX": {
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "DOWNLOAD_INTERACTION": "Download",
+    "TRANSFER": "Transfer",
+    "QUEUETRANSFER": "Queue Transfer",
+    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "TAG": "Tag",
+    "EDIT_TAG": "Edit Tag",
+    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
+    "NOTIFICATION": "Notification",
+    "NOTIFICATIONSOUND": "Sound",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONTEMPLATE": "Template",
+    "SYSTEM": "System",
+    "EDIT_SYSTEM": "Edit System",
+    "COMMAND": "Command",
+    "VARIABLE": "Variable",
+    "CANNEDANSWERS": "Canned Answers",
+    "FAXCANNEDANSWERS": "Canned Answers",
+    "NO_FAXCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
+    "NEW_FAXCANNEDANSWER": "New Canned Answer",
+    "ADD_FAXCANNEDANSWER": "Add Canned Answer",
+    "EDIT_CHATCANNEDANSWER": "Edit Canned Answer",
+    "DELETE_CHATCANNEDANSWER": "Delete Canned Answer",
+    "SPYINTERACTION": "Spy",
+    "TAGS": "Tags",
+    "REPLY": "Reply",
+    "SEND": "Send",
+    "TO": "To",
+    "FROM": "From",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "GOTOREALTIME_FAXQUEUE": "Go To Realtime Fax Queue",
+    "EDIT_TRUNK": "Edit Trunk",
+    "REGISTERED": "Registered",
+    "UNREGISTERED": "Unregistered",
+    "EDIT_ACCOUNT": "Edit Fax Account",
+    "PARTIALPAUSE": "Partial Pause",
+    "BUSY": "Busy",
+    "TIMER": "Timer",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "GOTO_FAXACCOUNT": "Go To Realtime Fax",
+    "ACCOUNTS": "Accounts",
+    "GOTOREALTIME_FAXACCOUNT": "Go To Realtime Fax",
+    "TRUNK_STATUS": "Trunk Status",
+    "TRUNKS": "Trunks",
+    "REGISTRY": "Registry",
+    "NO_REGISTRY": "No Registry",
+    "PAUSE": "Pause",
+    "INFO": "Info",
+    "FULLNAME": "Fullname",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "LOGOUT": "Logout",
+    "DEFAULT_PAUSE": "Default pause",
+    "AGENTADD_QUEUE": "Add Agent to Fax queue",
+    "AGENTSADD_QUEUE": "Add Agents to Fax queue",
+    "UNPAUSE": "End Pause",
+    "AGENTS": "Agents",
+    "QUEUES": "Queues",
+    "LOGGED_IN": "Logged in",
+    "PAUSED": "Paused",
+    "READY": "Ready",
+    "WAITING": "Waiting",
+    "PRIORITY": "Priority",
+    "CONDITION": "Condition",
+    "TRUEPRIORITY": "True Priority",
+    "FALSEPRIORITY": "False Priority",
+    "VALUE": "Value",
+    "EDIT_FAXQUEUE": "Edit Fax Queue",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_GOTO": "Edit Goto",
+    "EDIT_NOOP": "Edit Noop",
+    "EDIT_GOTOP": "Edit GotoP",
+    "EDIT_GOTOIF": "Edit GotoIf",
+    "EDIT_QUEUE": "Edit Fax Queue",
+    "EDIT_CLOSE": "Edit Close",
+    "QUEUE": "Queue",
+    "GOTOIF": "GotoIf",
+    "GOTOP": "GotoP",
+    "NOOP": "Noop",
+    "AGENT": "Agent",
+    "NOTES": "Notes",
+    "CLOSEDAT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "REALTIME": "Realtime",
+    "TEAMADD_FAXQUEUE": "Add Team to Fax Queue",
+    "AGENTADD_FAXQUEUE": "Add Agent to Fax Queue",
+    "NAME": "Name",
+    "FAXQUEUES": "Fax Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "MANDATORYDISPOSITION": "Mandatory disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause status when in mandatory disposition",
+    "ERRORS": {
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "TAG_REQUIRED": "Mandatory Field",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "COMMAND_REQUIRED": "Mandatory Field",
+      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "TEXT_REQUIRED": "Mandatory Field",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENT_REQUIRED": "Mandatory Field",
+      "QUEUE_REQUIRED": "Mandatory Field",
+      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
+      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
+      "CONDITION_REQUIRED": "Mandatory Field",
+      "PRIORITY_REQUIRED": "Mandatory Field",
+      "DISPOSITION_REQUIRED": "Mandatory Field",
+      "NAME_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
+      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
+      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
+      "LOCALSTATIONID_REQUIRED": "Mandatory Field",
+      "MODEM_REQUIRED": "Mandatory Field",
+      "GATEWAY_REQUIRED": "Mandatory Field",
+      "FAXDETECT_REQUIRED": "Mandatory Field",
+      "T38TIMEOUT_REQUIRED": "Mandatory Field",
+      "TIMEOUT_REQUIRED": "Mandatory Field",
+      "HEADERINFO_REQUIRED": "Mandatory Field",
+      "TRUNK_REQUIRED": "Mandatory Field",
+      "LIST_REQUIRED": "Mandatory Field",
+      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "KEY_REQUIRED": "Mandatory Field",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "You should specify a pause status when in mandatory disposition"
+    },
+    "STRATEGY": "Strategy",
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "DESCRIPTION": "Description",
+    "ADD_FAXQUEUE": "Add Fax Queue",
+    "DELETE_FAXQUEUE": "Delete Fax Queue",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "FAXACCOUNTS": "Fax Accounts",
+    "MOTIONADDRESS": "Motion Address",
+    "ADD_FAXACCOUNT": "Add Fax Account",
+    "EDIT_FAXACCOUNT": "Edit Fax Account",
+    "DELETE_FAXACCOUNT": "Delete Fax Account",
+    "DISPOSITIONS": "Dispositions",
+    "WEBHOOKS": "WebHooks",
+    "ACTIONS": "Actions",
+    "LIST": "List",
+    "FIDELITY": "Fidelity",
+    "ACCEPT": "Accept",
+    "ACCEPTMETHOD": "Accept Method",
+    "ACCEPTURL": "Accept URL",
+    "REJECT": "Reject",
+    "REJECTMETHOD": "Reject Method",
+    "REJECTURL": "Reject URL",
+    "CLOSE": "Close",
+    "CLOSEMETHOD": "Close Method",
+    "CLOSEURL": "Close URL",
+    "TRUNK": "Trunk",
+    "LOCALSTATIONID": "Local Station Identifier",
+    "HELP": {
+      "LOCALSTATIONID": "Local Station Identifier (telephone number)",
+      "HEADERINFO": "Outbound Fax Header information",
+      "MODEM": "Modem Type (v17/v27/v29)",
+      "GATEWAY": "T.38 Fax Gateway, with optional fax activity timeout in seconds (yes/no/[timeout])",
+      "FAXDETECT": "Enable Fax Detect with optional timeout in seconds (yes/t38/cng/[timeout]/no)",
+      "T38TIMEOUT": "The timeout used for T.38 negotiation (minimum value=1000)",
+      "ECM": "Error Connection Mode (ECM)",
+      "MINRATE": "Minimum transfer rate set before transmission",
+      "MAXRATE": "Maximum transfer rate set before transmission",
+      "MANDATORYDISPOSITION": "Mandatory disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause status for mandatory disposition",
+      "NAME": "Only numbers, letters and specific characters (._) are supported"
+    },
+    "ADVANCED": "Advanced",
+    "ECM": "ECM",
+    "MINRATE": "Min Rate",
+    "MAXRATE": "Max Rate",
+    "MODEM": "Modem",
+    "GATEWAY": "Gateway",
+    "FAXDETECT": "Fax Detect",
+    "T38TIMEOUT": "T.38 Timeout",
+    "SIP": "Technology",
+    "HEADERINFO": "Header Info",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "BACK": "Back",
+    "FAX": "Fax",
+    "ID": "Id",
+    "TIMEOUT": "Timeout",
+    "FAXDISPOSITIONS": "Fax Dispositions",
+    "NO_FAXDISPOSITION_AVAILABLE": "No Fax Dispositions available",
+    "NEW_FAXDISPOSITION": "New Fax Disposition",
+    "ADD_FAXDISPOSITION": "Add Fax Disposition",
+    "EDIT_FAXDISPOSITION": "Edit Fax Disposition",
+    "DELETE_FAXDISPOSITION": "Delete Fax Disposition",
+    "NEW_FAXQUEUE": "New Fax Queue",
+    "NEW_FAXACCOUNT": "New Fax Account",
+    "NO_AVAILABLE_INFO": "No available info",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "OF": "of",
+    "DELETE": "Delete",
+    "KEY": "Key",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "FILTER": "Filter",
+    "SELECT_STATUS": "Select Status",
+    "ALL": "All",
+    "CLOSED": "Closed",
+    "OPENED": "Open",
+    "SELECT_ACCOUNT": "Select Account",
+    "INTERACTIONS": "Interactions",
+    "CONTACT": "Contact",
+    "STARTEDAT": "Started At",
+    "LASTMESSAGE": "Last message",
+    "STATUS": "Status",
+    "ACCOUNT": "Account",
+    "UNKNOWN": "Unknown",
+    "UNAVAILABLE": "Unavailable",
+    "NOT_INUSE": "Not in use",
+    "REACHABLE": "Reachable",
+    "IN_USE": "In use",
+    "VOICE": "Voice",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Open Channel",
+    "TOTAL": "Total",
+    "IN": "In",
+    "OUT": "Out",
+    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "INTERACTIONS_FAXACCOUNT": "Go to Interactions",
+    "REFRESH_INTERACTIONS": "Refresh Interactions",
+    "DELETE_INTERACTION": "Delete Interaction",
+    "AGENTADD_FAXACCOUNT": "Add Agent to Fax Account",
+    "TEAMS_ASSOCIATION": "Teams Association",
+    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
+    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments"
+  }
+}
diff --git a/public/app/main/apps/help/i18n/hu.json b/public/app/main/apps/help/i18n/hu.json
new file mode 100644 (file)
index 0000000..0acdb95
--- /dev/null
@@ -0,0 +1,8 @@
+{
+  "HELP": {
+    "HELP": "Help",
+    "ABOUT": "About",
+    "USEFUL_LINKS": "Useful links",
+    "CONTACT_US": "Contact us"
+  }
+}
diff --git a/public/app/main/apps/integrations/i18n/hu.json b/public/app/main/apps/integrations/i18n/hu.json
new file mode 100644 (file)
index 0000000..f9429ca
--- /dev/null
@@ -0,0 +1,246 @@
+{
+  "INTEGRATIONS": {
+    "ZONE": "Zone",
+    "ADVANCED": "Advanced",
+    "MODULE_SEARCH": "Module Search",
+    "MODULE_CREATE": "Module Create",
+    "LEADS": "Lead",
+    "CONTACTS": "Contact",
+    "INTEGRATIONS": "Integrations",
+    "ZENDESKACCOUNTS": "Zendesk Accounts",
+    "ID": "Id",
+    "NAME": "Name",
+    "USERNAME": "Username",
+    "URI": "URL",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "EDIT_ZENDESKACCOUNT": "Edit Zendesk Account",
+    "DELETE_ZENDESKACCOUNT": "Delete Zendesk Account",
+    "NEW_ZENDESKACCOUNT": "New Zendesk Account",
+    "AUTHTYPE": "Authentication Type",
+    "PASSWORD": "Password",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "EMAIL": "Email",
+    "TOKEN": "Token",
+    "MOTIONPROXYADDRESS": "Motion or Proxy IP Address",
+    "DESCRIPTION": "Description",
+    "ADD_ZENDESKACCOUNT": "Add Zendesk Account",
+    "ERRORS": {
+      "NAME_REQUIRED": "Mandatory field",
+      "USERNAME_REQUIRED": "Mandatory field",
+      "URI_REQUIRED": "Mandatory field",
+      "URI_MUST_VALID_URL": "Wrong format",
+      "PASSWORD_REQUIRED": "Mandatory field",
+      "CONFIRM_NOT_MATCH": "The passwords don't match",
+      "TOKEN_REQUIRED": "Mandatory field",
+      "MOTIONPROXYADDRESS_MUST_VALID_URL": "Wrong format",
+      "CLIENTID_REQUIRED": "Mandatory field",
+      "CLIENTSECRET_REQUIRED": "Mandatory field",
+      "SECURITYTOKEN_REQUIRED": "Mandatory field",
+      "APIKEY_REQUIRED": "Mandatory field",
+      "CONTENT_REQUIRED": "Mandatory field",
+      "VARIABLENAME_REQUIRED": "Mandatory field",
+      "KEY_REQUIRED": "Mandatory field",
+      "TYPE_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "FIELD_REQUIRED": "Mandatory field",
+      "CONSUMERKEY_REQUIRED": "Mandatory field",
+      "CONSUMERSECRET_REQUIRED": "Mandatory field",
+      "TOKENSECRET_REQUIRED": "Mandatory field",
+      "HOST_REQUIRED": "Mandatory field",
+      "AUTHTOKEN_REQUIRED": "Mandatory field",
+      "VTIGER_USER_NAME_REQUIRED": "Mandatory field",
+      "ACCESS_KEY_REQUIRED": "Mandatory field",
+      "EMAIL_REQUIRED": "Mandatory field",
+      "TENANTID_REQUIRED": "Mandatory field",
+      "CODE_REQUIRED": "Mandatory field",
+      "MOTIONPROXYADDRESS_REQUIRED": "Mandatory field"
+    },
+    "HELP": {
+      "MOTIONPROXYADDRESS": "Motion (Proxy) Address: it is reqired if you want to fill the ticket body with Recording URL. Enter the address in the following format: <protocol> : //<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
+      "TICKETTYPE": "Ticket Type",
+      "ZONE": "Choose your geographic zone (US, AU, EU, IN, CN) to activate the domain-specific Zoho Accounts",
+      "CLIENTID": "The specific CLient Id of your application",
+      "CLIENTSECRET": "The specific CLientSecret of your application",
+      "CODE": "The specific code generated through Developer Console",
+      "REFRESHTOKEN": "The automatically generated refresh token used to refresh expired access tokens. Also the access token are automatically generated each time an api is launched.",
+      "LEADID": "Field name used to link Case and Lead objects",
+      "ADDITIONALSEARCHACCOUNT": "Additional field name used to search customer phone number in Accounts",
+      "ADDITIONALSEARCHCONTACT": "Additional field name used to search customer phone number in Contacts",
+      "ADDITIONALSEARCHLEAD": "Additional field name used to search customer phone number in Leads"
+    },
+    "CODE": "Developer Console Code",
+    "REFRESHTOKEN": "Refresh Token (generated)",
+    "ACCOUNT": "Account",
+    "ZENDESKCONFIGURATIONS": "Zendesk Configurations",
+    "SALESFORCECONFIGURATIONS": "Salesforce Configurations",
+    "SUGARCRMCONFIGURATIONS": "SugarCRM Configurations",
+    "FRESHDESKCONFIGURATIONS": "Freshdesk Configurations",
+    "GENERAL": "General",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "NO_ZENDESKCONFIGURATION_AVAILABLE": "No Zendesk Configurations available",
+    "NEW_ZENDESKCONFIGURATION": "New Zendesk Configuration",
+    "ADD_ZENDESKCONFIGURATION": "Add Zendesk Configuration",
+    "EDIT_ZENDESKCONFIGURATION": "Edit Zendesk Configuration",
+    "DELETE_ZENDESKCONFIGURATION": "Delete Zendesk Configuration",
+    "NO_SALESFORCECONFIGURATION_AVAILABLE": "No Salesforce Configurations available",
+    "NEW_SALESFORCECONFIGURATION": "New Salesforce Configuration",
+    "ADD_SALESFORCECONFIGURATION": "Add Salesforce Configuration",
+    "EDIT_SALESFORCECONFIGURATION": "Edit Salesforce Configuration",
+    "DELETE_SALESFORCECONFIGURATION": "Delete Salesforce Configuration",
+    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "No SugarCRM Configurations available",
+    "NEW_SUGARCRMCONFIGURATION": "New SugarCRM Configuration",
+    "ADD_SUGARCRMCONFIGURATION": "Add SugarCRM Configuration",
+    "EDIT_SUGARCRMCONFIGURATION": "Edit SugarCRM Configuration",
+    "DELETE_SUGARCRMCONFIGURATION": "Delete SugarCRM Configuration",
+    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "No Freshdesk Configurations available",
+    "NEW_FRESHDESKCONFIGURATION": "New Freshdesk Configuration",
+    "ADD_FRESHDESKCONFIGURATION": "Add Freshdesk Configuration",
+    "EDIT_FRESHDESKCONFIGURATION": "Edit Freshdesk Configuration",
+    "DELETE_FRESHDESKCONFIGURATION": "Delete Freshdesk Configuration",
+    "SALESFORCEACCOUNTS": "Salesforce Accounts",
+    "EDIT_SALESFORCEACCOUNT": "Edit Salesforce Account",
+    "DELETE_SALESFORCEACCOUNT": "Delete Salesforce Account",
+    "NEW_SALESFORCEACCOUNT": "New Salesforce Account",
+    "ADD_SALESFORCEACCOUNT": "Add Salesforce Account",
+    "CLIENTID": "Client ID",
+    "CLIENTSECRET": "Client Secret",
+    "SECURITYTOKEN": "Security Token",
+    "SEARCH_FOR_ANYONE": "Search",
+    "APIKEY": "Api Key",
+    "FRESHDESKACCOUNTS": "Freshdesk Accounts",
+    "EDIT_FRESHDESKACCOUNT": "Edit Freshdesk Account",
+    "DELETE_FRESHDESKACCOUNT": "Delete Freshdesk Account",
+    "NEW_FRESHDESKACCOUNT": "New Freshdesk Account",
+    "ADD_FRESHDESKACCOUNT": "Add Freshdesk Account",
+    "SUGARCRMACCOUNTS": "SugarCRM Accounts",
+    "EDIT_SUGARCRMACCOUNT": "Edit SugarCRM Account",
+    "DELETE_SUGARCRMACCOUNT": "Delete SugarCRM Account",
+    "NEW_SUGARCRMACCOUNT": "New SugarCRM Account",
+    "ADD_SUGARCRMACCOUNT": "Add SugarCRM Account",
+    "CONFIGURATIONS": "Configurations",
+    "NO_CONFIGURATION_AVAILABLE": "No Configurations available",
+    "NEW_CONFIGURATION": "New Configuration",
+    "ADD_CONFIGURATION": "Add Configuration",
+    "EDIT_CONFIGURATION": "Edit Configuration",
+    "DELETE_CONFIGURATION": "Delete Configuration",
+    "SUBJECTS": "Subjects",
+    "DESCRIPTIONS": "Descriptions",
+    "FIELDS": "Fields",
+    "TAGS": "Tags",
+    "TYPE": "Type",
+    "CONTENT": "Content",
+    "EDIT_SUBJECT": "Edit Subject",
+    "DELETE_SUBJECT": "Delete Subject",
+    "NEW_SUBJECT": "New Subject",
+    "ADD_SUBJECT": "Add Subject",
+    "EDIT_DESCRIPTION": "Edit Description",
+    "DELETE_DESCRIPTION": "Delete Description",
+    "NEW_DESCRIPTION": "New Description",
+    "ADD_DESCRIPTION": "Add Description",
+    "EDIT_FIELD": "Edit Field",
+    "DELETE_FIELD": "Delete Field",
+    "NEW_FIELD": "New Field",
+    "ADD_FIELD": "Add Field",
+    "ADD": "Add",
+    "VOICE": "Voice",
+    "MAIL": "Email",
+    "CHAT": "Chat",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Open Channel",
+    "INBOUND_IN_QUEUE": "Inbound in Queue",
+    "OUTBOUND_CALL": "Outbound Call",
+    "VALUE": "Value",
+    "FIELD": "Field",
+    "KEY": "Key",
+    "CHANNEL": "Channel",
+    "DELETE": "Delete",
+    "NO_AVAILABLE_INFO": "No available info",
+    "TEST_ZENDESKACCOUNT": "Test Zendesk Account",
+    "TEST_FRESHDESKACCOUNT": "Test Freshdesk Account",
+    "TEST_SUGARCRMACCOUNT": "Test SugerCRM Account",
+    "TEST_SALESFORCEACCOUNT": "Test Salesforce Account",
+    "INTEGRATION_TAB": "Integration Tab",
+    "NEW_TAB": "New Tab",
+    "DESKACCOUNTS": "Desk Accounts",
+    "EDIT_DESKACCOUNT": "Edit Desk Account",
+    "TEST_DESKACCOUNT": "Test Desk Account",
+    "DELETE_DESKACCOUNT": "Delete Desk Account",
+    "CONSUMERKEY": "Consumer Key",
+    "CONSUMERSECRET": "Consumer Secret",
+    "TOKENSECRET": "Token Secret",
+    "ADD_DESKACCOUNT": "Add Desk Account",
+    "NEW_DESKACCOUNT": "New Desk Account",
+    "ADD_DESKCONFIGURATION": "Add Desk Configuration",
+    "NEW_DESKCONFIGURATION": "New Desk Configuration",
+    "DELETE_DESKCONFIGURATION": "Delete Desk Configuration",
+    "ZOHOACCOUNTS": "Zoho Accounts",
+    "EDIT_ZOHOACCOUNT": "Edit Zoho Account",
+    "TEST_ZOHOACCOUNT": "Test Zoho Account",
+    "DELETE_ZOHOACCOUNT": "Delete Zoho Account",
+    "ADD_ZOHOACCOUNT": "Add Zoho Account",
+    "NEW_ZOHOACCOUNT": "New Zoho Account",
+    "ADD_ZOHOCONFIGURATION": "Add Zoho Configuration",
+    "NEW_ZOHOCONFIGURATION": "New Zoho Configuration",
+    "AUTHTOKEN": "Authorization Token",
+    "HOST": "Host",
+    "DELETE_ZOHOCONFIGURATION": "Delete Zoho Configuration",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "OF": "of",
+    "VTIGERACCOUNTS": "vTiger Accounts",
+    "VTIGER_USER_NAME": "vTiger User Name",
+    "MODULE_NAME": "vTiger Module Name",
+    "ACCESS_KEY": "vTiger Access Key",
+    "ADD_VTIGERACCOUNT": "Add new vTiger Account",
+    "EDIT_VTIGERACCOUNT": "Edit vTiger Account",
+    "TEST_VTIGERACCOUNT": "Test vTiger Account",
+    "DELETE_VTIGERACCOUNT": "Delete vTiger Account",
+    "NEW_VTIGERACCOUNT": "New vTiger Account",
+    "NEW_VTIGERCONFIGURATION": "Create vTiger Configuration",
+    "DELETE_VTIGERCONFIGURATION": "Delete vTiger Configuration",
+    "ADD_VTIGERCONFIGURATION": "Add vTiger Configuration",
+    "FRESHSALESACCOUNTS": "Freshsales Accounts",
+    "EDIT_FRESHSALESACCOUNT": "Edit Freshsales Account",
+    "DELETE_FRESHSALESACCOUNT": "Delete Freshsales Account",
+    "NEW_FRESHSALESACCOUNT": "New Freshsales Account",
+    "ADD_FRESHSALESACCOUNT": "Add Freshsales Account",
+    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "No Freshsales Configurations available",
+    "NEW_FRESHSALESCONFIGURATION": "New Freshsales Configuration",
+    "ADD_FRESHSALESCONFIGURATION": "Add Freshsales Configuration",
+    "EDIT_FRESHSALESCONFIGURATION": "Edit Freshsales Configuration",
+    "DELETE_FRESHSALESCONFIGURATION": "Delete Freshsales Configuration",
+    "TEST_FRESHSALESACCOUNT": "Test Freshsales Account",
+    "SERVICENOWACCOUNTS": "ServiceNow Accounts",
+    "ADD_SERVICENOWACCOUNT": "Add new ServiceNow Account",
+    "EDIT_SERVICENOWACCOUNT": "Edit ServiceNow Account",
+    "TEST_SERVICENOWACCOUNT": "Test ServiceNow Account",
+    "DELETE_SERVICENOWACCOUNT": "Delete ServiceNow Account",
+    "NEW_SERVICENOWACCOUNT": "New ServiceNow Account",
+    "NEW_SERVICENOWCONFIGURATION": "Create ServiceNow Configuration",
+    "DELETE_SERVICENOWCONFIGURATION": "Delete ServiceNow Configuration",
+    "ADD_SERVICENOWCONFIGURATION": "Add ServiceNow Configuration",
+    "DYNAMICS365ACCOUNTS": "Dynamics365 Accounts",
+    "TENANTID": "Tenant Id",
+    "ADD_DYNAMICS365ACCOUNT": "Add new Dynamics365 Account",
+    "EDIT_DYNAMICS365ACCOUNT": "Edit Dynamics365 Account",
+    "TEST_DYNAMICS365ACCOUNT": "Test Dynamics365 Account",
+    "DELETE_DYNAMICS365ACCOUNT": "Delete Dynamics365 Account",
+    "NEW_DYNAMICS365ACCOUNT": "New Dynamics365 Account",
+    "NEW_DYNAMICS365CONFIGURATION": "Create Dynamics365 Configuration",
+    "DELETE_DYNAMICS365CONFIGURATION": "Delete Dynamics365 Configuration",
+    "ADD_DYNAMICS365CONFIGURATION": "Add Dynamics365 Configuration",
+    "TICKETTYPE": "Ticket Type",
+    "CASE": "Case",
+    "LEADID": "Lead Id",
+    "ADDITIONALSEARCHACCOUNT": "Additional Search Account",
+    "ADDITIONALSEARCHCONTACT": "Additional Search Contact",
+    "ADDITIONALSEARCHLEAD": "Additional Search Lead",
+    "PHONECALL": "Phonecall",
+    "TASK": "Task",
+    "MODULECREATE": "Module Create"
+  }
+}
diff --git a/public/app/main/apps/jscripty/i18n/hu.json b/public/app/main/apps/jscripty/i18n/hu.json
new file mode 100644 (file)
index 0000000..c5e12d7
--- /dev/null
@@ -0,0 +1,228 @@
+{
+  "JSCRIPTY": {
+    "CLONE_PROJECT": "Clone Project",
+    "NAME": "Name",
+    "SEARCH_FOR_ANYONE": "Search",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "DESCRIPTION": "Description",
+    "ERRORS": {
+      "NAME_REQUIRED": "Mandatory field",
+      "PROJECT_REQUIRED": "Mandatory field",
+      "FIELD_REQUIRED": "Mandatory field",
+      "NAME_MUST_VALID_PATTERN": "Wrong format"
+    },
+    "SAVE": "Save",
+    "PROJECTS": "Projects",
+    "ADD_PROJECT": "Add Project",
+    "EDIT_PROJECT": "Edit Project",
+    "DELETE_PROJECT": "Delete Project",
+    "JSCRIPTY": "Jscripty",
+    "ID": "Id",
+    "PROJECT": "Project",
+    "CREATED_AT": "Created At",
+    "NEW_PROJECT": "New Project",
+    "EDIT": "Edit",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "BUILDER": "Builder",
+    "PREVIEW": "Preview",
+    "OPEN_CONTACT": "Open Contact",
+    "SENDUNPAUSEONSUBMIT": "Unpause agent on Submit",
+    "HELP": {
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "ENABLEUNCOMPLETESAVE": "Allow to save the agent session even if the survey is not complete",
+      "SENDUNPAUSEONSUBMIT": "At the end of the survey, automatically stop the agent's pause"
+    },
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "OF": "of",
+    "JSCRIPTYSESSIONS": "Project Sessions",
+    "SESSIONS": "Sessions",
+    "STARTTIME": "Start Time",
+    "ENDTIME": "End Time",
+    "MEMBERNAME": "Member Name",
+    "CALLERIDNUM": "Caller Number",
+    "NO_SESSION_AVAILABLE": "No Sessions available",
+    "SESSION_RESULTS": "Session Results",
+    "SHOW_QUESTIONS_SESSION": "Show Session Results",
+    "ANSWERS": "Answers",
+    "NO_RESULTS_AVAILABLE": "No results available",
+    "TOTAL": "Total",
+    "ANSWER": "Answer",
+    "EXPORT_TO_CSV": "Export to CSV",
+    "NO_ANSWERS_AVAILABLE": "No answers available",
+    "DELETE_SESSION": "Delete Session",
+    "RESET_SESSION": "Reset Session",
+    "YES": "Yes",
+    "NO": "No",
+    "DO_YOU_WANT_TO_RESET_SESSION": "Do you want to reset the session?",
+    "ALL_SURVEY_DATA_WILL_BE_LOST": "All survey answers will be lost!",
+    "ENABLEUNCOMPLETESAVE": "Enable incomplete save",
+    "SUBMIT": "Submit",
+    "PROJECT_NOT_AVAILABLE": "Project is not available. Please contact the administrator",
+    "COMPLETE": "Complete",
+    "SESSIONS_PROJECT": "Go to Sessions"
+  },
+  "mwForm": {
+    "form": {
+      "name": "Title",
+      "name.placeholder": "Form title",
+      "description": "Description"
+    },
+    "buttons": {
+      "addPage": "Add page",
+      "moveDown": "Move down",
+      "moveUp": "Move up",
+      "removePage": "Remove page",
+      "remove": "Remove",
+      "addElement": "Add element",
+      "questionReady": "Ready",
+      "next": "Next",
+      "back": "Back",
+      "submit": "Submit",
+      "begin": "Begin",
+      "fold": "Fold",
+      "unfold": "Unfold",
+      "edit": "Edit",
+      "clone": "Clone",
+      "view": "View"
+    },
+    "page": {
+      "tab": {
+        "heading": "Page {{page}} of {{allPages}}"
+      },
+      "elements": {
+        "empty": "Empty page"
+      },
+      "pageWithNameCheckbox": "named",
+      "name": "Page name"
+    },
+    "pageFlow": {
+      "afterPage": "After page {{page}}:",
+      "afterQuestionAnswer": "Go to page based on answer",
+      "goToPage": "Go to page {{page.number}}",
+      "goToNextPage": "Continue to next page",
+      "submitForm": "Submit form"
+    },
+    "elements": {
+      "question": "Question",
+      "image": "Image",
+      "paragraph": "Paragraph"
+    },
+    "question": {
+      "types": {
+        "text": {
+          "name": "Short text"
+        },
+        "textarea": {
+          "name": "Long text"
+        },
+        "radio": {
+          "name": "Radio"
+        },
+        "select": {
+          "name": "Select"
+        },
+        "checkbox": {
+          "name": "Checkboxes"
+        },
+        "grid": {
+          "name": "Grid"
+        },
+        "priority": {
+          "name": "Priority"
+        },
+        "division": {
+          "name": "Division"
+        },
+        "number": {
+          "name": "Number"
+        },
+        "date": {
+          "name": "Date"
+        },
+        "datetime": {
+          "name": "Datetime"
+        },
+        "time": {
+          "name": "Time"
+        },
+        "email": {
+          "name": "Email"
+        },
+        "range": {
+          "name": "Range"
+        },
+        "url": {
+          "name": "URL"
+        }
+      },
+      "text": "Question text",
+      "type": "Question type",
+      "required": "Required",
+      "preview": {
+        "text": "Short answer text",
+        "textarea": "Long answer text",
+        "otherAnswer": "Other"
+      },
+      "division": {
+        "quantity": "Quantity",
+        "unit": "Unit label",
+        "assignedSumLabel": "Assigned",
+        "fromRequiredLabel": "from required"
+      },
+      "priority": {
+        "sorted": "Sorted",
+        "available": "Available",
+        "clickToAddItem": "Click to add item"
+      },
+      "grid": {
+        "cellInputType": "Cell input type",
+        "cellInputTypes": {
+          "radio": "Radio",
+          "checkbox": "Checkbox",
+          "text": "Text",
+          "number": "Number",
+          "date": "Date",
+          "time": "Time"
+        },
+        "rowLabel": "Row {{row}}",
+        "clickToAddRow": "Click to add row",
+        "columnLabel": "Column {{col}}",
+        "clickToAddColumn": "Click to add column"
+      },
+      "range": {
+        "from": "Range from",
+        "to": "to"
+      },
+      "number": {
+        "min": "Min",
+        "max": "Max"
+      },
+      "orLabel": "or ",
+      "otherLabel": "Other: ",
+      "userAnswer": "User answer",
+      "buttons": {
+        "addOption": "Click to add option",
+        "addOther": "Add 'Other'"
+      }
+    },
+    "image": {
+      "selectImageButton": "Select image",
+      "caption": "Image caption"
+    },
+    "paragraph": {
+      "placeholder": "Enter paragraph text"
+    },
+    "confirmationPage": {
+      "title": "Confirmation page",
+      "customMessage": "Custom confirmation message",
+      "defaultMessage": "Your response has been saved",
+      "errorMessage": "Error! Your response has not been saved",
+      "pendingMessage": "Your response is being saved"
+    }
+  }
+}
diff --git a/public/app/main/apps/mail/i18n/hu.json b/public/app/main/apps/mail/i18n/hu.json
new file mode 100644 (file)
index 0000000..7a1ec06
--- /dev/null
@@ -0,0 +1,326 @@
+{
+  "MAIL": {
+    "ADVANCED": "Advanced",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments",
+    "DOWNLOAD": "Download",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "DOWNLOAD_INTERACTION": "Download",
+    "YOU_ARE_REGISTERED_AS_A": "You are registered as a",
+    "TRANSFER": "Transfer",
+    "QUEUETRANSFER": "Queue Transfer",
+    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "TAG": "Tag",
+    "EDIT_TAG": "Edit Tag",
+    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
+    "NOTIFICATION": "Notification",
+    "NOTIFICATIONSOUND": "Sound",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONTEMPLATE": "Template",
+    "SYSTEM": "System",
+    "EDIT_SYSTEM": "Edit System",
+    "COMMAND": "Command",
+    "VARIABLE": "Variable",
+    "SEND_AS": "Send as",
+    "NEW_MAILSUBSTATUS": "New Sub Status",
+    "ADD_MAILSUBSTATUS": "Add Sub Status",
+    "MAILSUBSTATUSES": "Email Sub Statuses",
+    "EDIT_MAILSUBSTATUS": "Edit",
+    "DELETE_MAILSUBSTATUS": "Delete",
+    "FONT_FAMILY": "Font Family",
+    "FONT_SIZE": "Font Size",
+    "MARK_AS_UNREAD": "Mark as unread",
+    "ACCEPTED": "Accepted",
+    "CANNEDANSWERS": "Canned Answers",
+    "MAILCANNEDANSWERS": "Canned Answers",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
+    "NEW_MAILCANNEDANSWER": "New Canned Answer",
+    "ADD_MAILCANNEDANSWER": "Add Canned Answer",
+    "EDIT_MAILCANNEDANSWER": "Edit Canned Answer",
+    "DELETE_MAILCANNEDANSWER": "Delete Canned Answer",
+    "SHOW_ORIGINAL_MESSAGE": "Show original message",
+    "PENDING": "Pending",
+    "SEND_AS_PENDING": "Send as Pending",
+    "SEND_AND_CLOSE": "Send and Close",
+    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
+    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
+    "SPYINTERACTION": "Spy",
+    "ADD_NOTE": "Add note",
+    "NOTE": "Note",
+    "TAGS": "Tags",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "GOTOREALTIME_MAILQUEUE": "Go To Realtime Mail Queue",
+    "PARTIALPAUSE": "Parital Pause",
+    "BUSY": "Busy",
+    "TIMER": "Timer",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "UNPAUSE": "End Pause",
+    "DEFAULT_PAUSE": "Default pause",
+    "LOGOUT": "Logout",
+    "AGENTADD_QUEUE": "Add Agent To Email Queue",
+    "VOICE": "Voice",
+    "CHAT": "Chat",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Open channel",
+    "FAX": "Fax",
+    "REALTIME": "Realtime",
+    "AGENTS": "Agents",
+    "QUEUES": "Queues",
+    "ACCOUNTS": "Accounts",
+    "FULLNAME": "Full Name",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "PAUSE": "Pause",
+    "LOGGED_IN": "Logged In",
+    "PAUSED": "Paused",
+    "READY": "Ready",
+    "WAITING": "Waiting",
+    "TOTAL": "Total",
+    "IN": "In",
+    "OUT": "Out",
+    "IMAP_STATUS": "IMAP Status",
+    "SMTP_STATUS": "SMTP Status",
+    "DISABLED": "Disabled",
+    "CONNECTED": "Connected",
+    "NEVER_VERIFIED": "Never Verified",
+    "ERROR": "Error",
+    "EDIT_ACCOUNT": "Edit Account",
+    "VERIFY_SMTP": "Verify SMTP",
+    "VERIFIED": "Verified",
+    "VERIFYSMTP_MAILACCOUNT": "Verify SMTP",
+    "GOTOREALTIME_MAILACCOUNT": "Go to Realtime Email Account",
+    "GOTO_MAILACCOUNT": "Go to Realtime Email Account",
+    "TEXT": "Text",
+    "TIMES": "Number of times per interaction",
+    "REPLY_TYPE": "Reply Type",
+    "EDIT_AUTOREPLY": "Edit Auto Reply",
+    "AUTOREPLY": "Auto Reply",
+    "SHOW_AUTOREPLY": "Show Auto Reply",
+    "SHOW_DETAILS": "Show details",
+    "HIDE_DETAILS": "Hide details",
+    "TO": "To",
+    "FROM": "From",
+    "DATE": "Date",
+    "CC": "Cc",
+    "REPLY": "Reply",
+    "REPLY_ALL": "Reply All",
+    "FORWARD": "Forward",
+    "SUBJECT": "Subject",
+    "BCC": "Bcc",
+    "SEND": "Send",
+    "ATTACHMENT": "Attachment",
+    "ATTACHMENTS": "Attachments",
+    "NAME": "Name",
+    "MAILQUEUES": "Email Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "STRATEGY": "Strategy",
+    "MANDATORYDISPOSITION": "Mandatory disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled",
+    "ERRORS": {
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "TAG_REQUIRED": "Mandatory Field",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "COMMAND_REQUIRED": "Mandatory Field",
+      "FONT_SIZE_REQUIRED": "Mandatory Field",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "TEXT_REQUIRED": "Mandatory Field",
+      "REPLY_TYPE_REQUIRED": "Mandatory Field",
+      "NAME_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
+      "EMAIL_ADDRESS_REQUIRED": "Mandatory Field",
+      "EMAIL_ADDRESS_MUST_VALID": "Wrong format",
+      "HOST_REQUIRED": "Mandatory Field",
+      "USERNAME_REQUIRED": "Mandatory Field",
+      "PORT_REQUIRED": "Mandatory Field",
+      "CONNTIMEOUT_REQUIRED": "Mandatory Field",
+      "AUTHTIMEOUT_REQUIRED": "Mandatory Field",
+      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
+      "TIMEOUT_REQUIRED": "Mandatory Field",
+      "REJECTURL_MUST_VALID_URL": "Wrong format",
+      "CLOSEURL_MUST_VALID_URL": "Wrong format",
+      "AGENT_REQUIRED": "Mandatory Field",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "DISPOSITION_REQUIRED": "Mandatory Field",
+      "CONDITION_REQUIRED": "Mandatory Field",
+      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
+      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PRIORITY_REQUIRED": "Mandatory Field",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUE_REQUIRED": "Mandatory Field",
+      "LIST_REQUIRED": "Mandatory Field",
+      "PASSWORD_REQUIRED": "Mandatory Field",
+      "SERVICE_REQUIRED": "Mandatory Field",
+      "IMAP_HOST_REQUIRED": "Mandatory Field",
+      "IMAP_PORT_REQUIRED": "Mandatory Field",
+      "SMTP_HOST_REQUIRED": "Mandatory Field",
+      "SMTP_PORT_REQUIRED": "Mandatory Field",
+      "CONFIRM_NOT_MATCH": "The passwords inserted don't match",
+      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
+      "KEY_REQUIRED": "Mandatory Field",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field"
+    },
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "DESCRIPTION": "Description",
+    "ADD_MAILQUEUE": "Add Email Queue",
+    "EDIT_MAILQUEUE": "Edit Email Queue",
+    "DELETE_MAILQUEUE": "Delete Email Queue",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "SAVE": "Save",
+    "MAILACCOUNTS": "Email Accounts",
+    "EMAIL_ADDRESS": "Email Address",
+    "ADD_MAILACCOUNT": "Add Email Account",
+    "EDIT_MAILACCOUNT": "Edit Email Account",
+    "DELETE_MAILACCOUNT": "Delete Email Accounts",
+    "DISPOSITIONS": "Dispositions",
+    "WEBHOOKS": "WebHooks",
+    "ACTIONS": "Actions",
+    "OTHERS": "Others",
+    "LIST": "List",
+    "TEMPLATE": "Template",
+    "FIDELITY": "Fidelity",
+    "SERVICE": "Service",
+    "CREATED_AT": "Created At",
+    "ACCEPT": "Accept",
+    "ACCEPTMETHOD": "Accept Method",
+    "ACCEPTURL": "Accept URL",
+    "REJECT": "Reject",
+    "REJECTMETHOD": "Reject Method",
+    "REJECTURL": "Reject URL",
+    "CLOSE": "Close",
+    "CLOSEMETHOD": "Close Method",
+    "CLOSEURL": "Close URL",
+    "WHITELABEL": "White Label",
+    "SIGNATURE": "Signature",
+    "IMAP": "IMAP",
+    "HOST": "Host",
+    "USERNAME": "Username",
+    "PORT": "Port",
+    "MAILBOX": "Mailbox",
+    "FILTER": "Filter",
+    "CONNTIMEOUT": "Connection Timeout [sec]",
+    "AUTHTIMEOUT": "Authentication Timeout [sec]",
+    "DELETE": "Delete Email From Server",
+    "SSL": "SSL",
+    "KEEPALIVE": "Keepalive",
+    "POLLING": "Polling",
+    "SMTP": "SMTP",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "BACK": "Back",
+    "MAIL": "Email",
+    "ID": "Id",
+    "TIMEOUT": "Timeout",
+    "PASSWORD": "Password",
+    "NO_MAILDISPOSITION_AVAILABLE": "No Email Dispositions available",
+    "ADD_MAILDISPOSITION": "Add Email Disposition",
+    "NEW_MAILDISPOSITION": "New Email Disposition",
+    "EDIT_MAILDISPOSITION": "Edit Email Disposition",
+    "DELETE_MAILDISPOSITION": "Delete Email Disposition",
+    "MAILDISPOSITIONS": "Email Dispositions",
+    "NEW_MAILQUEUE": "New Email Queue",
+    "NEW_MAILACCOUNT": "New Email Account",
+    "NO_AVAILABLE_INFO": "No availables info",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "HELP": {
+      "FONT_FAMILY": "Default Font Family",
+      "FONT_SIZE": "Default Font Size",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "USERNAME": "Username used for authentication",
+      "PASSWORD": "Password used for authentication",
+      "SECURE": "If true, the connection will use TLS when connecting to server",
+      "MANDATORYDISPOSITION": "Mandatory disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled",
+      "MARK_AS_UNREAD": "Enable/Disable agent to mark as unread the last message of an interaction"
+    },
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "OF": "of",
+    "TEAMADD_MAILQUEUE": "Add Team to Email Queue",
+    "AGENTADD_MAILQUEUE": "Add Agent to Email Queue",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "AGENT": "Agent",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_CLOSE": "Edit Close",
+    "DISPOSITION": "Disposition",
+    "GOTOIF": "GotoIf",
+    "EDIT_GOTOIF": "Edit GotoIf",
+    "CONDITION": "Condition",
+    "TRUEPRIORITY": "True Priority",
+    "FALSEPRIORITY": "False Priority",
+    "GOTOP": "GotoP",
+    "EDIT_GOTOP": "Edit GotoP",
+    "PRIORITY": "Priority",
+    "NOOP": "Noop",
+    "EDIT_NOOP": "Edit Noop",
+    "VALUE": "Value",
+    "QUEUE": "Queue",
+    "EDIT_QUEUE": "Edit Queue",
+    "INTERACTIONS": "Interactions",
+    "STARTEDAT": "Started At",
+    "LASTMESSAGE": "Last message",
+    "CONTACT": "Contact",
+    "CLOSEDAT": "Closed At",
+    "NOTES": "Notes",
+    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "ACTIVE": "Active",
+    "SECURE": "Secure",
+    "AUTHENTICATION": "Authentication",
+    "SMTP_HOST": "SMTP Host",
+    "SMTP_PORT": "SMTP Port",
+    "IMAP_HOST": "IMAP Host",
+    "IMAP_PORT": "IMAP Port",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "SELECT_STATUS": "Select Status",
+    "OPENED": "Open",
+    "CLOSED": "Closed",
+    "ALL": "All",
+    "SELECT_ACCOUNT": "Select Account",
+    "STATUS": "Status",
+    "ACCOUNT": "Account",
+    "OPEN": "Open",
+    "KEY": "Key",
+    "SMTPSERVICE": "SMTP Service",
+    "UNKNOWN": "Unknown",
+    "UNREGISTERED": "Unregistered",
+    "UNAVAILABLE": "Unavailable",
+    "NOT_INUSE": "Not in use",
+    "REACHABLE": "Reachable",
+    "IN_USE": "In use",
+    "AGENTSADD_QUEUE": "Add agents to Email Queue",
+    "INFO": "Info",
+    "INTERACTIONS_MAILACCOUNT": "Go to Interactions",
+    "REFRESH_INTERACTIONS": "Refresh Interactions",
+    "DELETE_INTERACTION": "Delete Interaction",
+    "AGENTADD_MAILACCOUNT": "Add Agent to Email Account",
+    "TEAMS_ASSOCIATION": "Teams Association",
+    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
+    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
+    "DOWNLOAD_WITH_ATTACHMENT": "Download with attachment",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Download without attachment"
+  }
+}
diff --git a/public/app/main/apps/marketplace/i18n/hu.json b/public/app/main/apps/marketplace/i18n/hu.json
new file mode 100644 (file)
index 0000000..312c4ab
--- /dev/null
@@ -0,0 +1,51 @@
+{
+  "MARKETPLACE": {
+    "MARKETPLACE": "App Zone",
+    "PLUGINS": "Plugins",
+    "BACK": "Back",
+    "SEARCH_FOR_ANYONE": "Search",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select all",
+    "SELECT_NONE": "Select none",
+    "NAME": "Name",
+    "DESCRIPTION": "Description",
+    "ACTIVE": "Active",
+    "TYPE": "Type",
+    "ICON": "Icon",
+    "ADMINURL": "Admin url",
+    "AGENTURL": "Agent url",
+    "SCRIPTNAME": "Script name",
+    "SCRIPTPATH": "Script path",
+    "SIDEBAR": "Sidebar",
+    "VERSION": "Version",
+    "NO_AVAILABLE_INFO": "No available info",
+    "MORE": "More",
+    "INSTALL_PLUGIN": "Install plugin",
+    "EDIT_PLUGIN": "Edit plugin",
+    "STOP_PLUGIN": "Stop plugin",
+    "RESTART_PLUGIN": "Restart plugin",
+    "DOWNLOAD_PLUGIN": "Download plugin",
+    "UNINSTALL_PLUGIN": "Uninstall plugin",
+    "DELETE_PLUGIN": "Remove plugin",
+    "CANCEL": "Cancel",
+    "FINISH": "Finish",
+    "DELETE": "Delete",
+    "SAVE": "Save",
+    "INSTALLING": "Installing",
+    "DROP_TO_UPLOAD": "Drop To Upload",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
+    "UPLOAD_PLUGIN": "Upload plugin",
+    "UPLOADING": "Uploading",
+    "CREATED_AT": "Created at",
+    "GENERAL": "General",
+    "SETTINGS": "Settings",
+    "EDITOR": "Editor",
+    "ERRORS": {
+      "URL_REQUIRED": "Mandatory field"
+    },
+    "HELP": {},
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "OF": "of"
+  }
+}
diff --git a/public/app/main/apps/motiondialer/i18n/hu.json b/public/app/main/apps/motiondialer/i18n/hu.json
new file mode 100644 (file)
index 0000000..bc7a95d
--- /dev/null
@@ -0,0 +1,693 @@
+{
+  "MOTIONDIALER": {
+    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
+    "THIRD_LEVEL_DISPOSITION": "Third Level Disposition",
+    "ONE_CALL_EVERY": "One call every",
+    "CURRENT_INTERVAL": "Current Interval",
+    "PREVIOUS_INTERVAL": "Previous Interval",
+    "PREDICTIVE_IS_RUNNING": "Predictive is running",
+    "PREDICTIVE_IS_NOT_RUNNING": "Predictive is not running",
+    "DATA_COLLECTION_IN_PROGRESSIVE": "Data collection in Progressive",
+    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Show Predictive Info",
+    "AVG_TALK_TIME": "Avg Talk Time",
+    "ANSWERED_CALLS": "Answered Calls",
+    "TOTAL_CALLS": "Total Calls",
+    "THRESHOLDS": "Thresholds",
+    "PREDICTIVEMAXTHRESHOLD": "Predictive Max Threshold [%]",
+    "PREDICTIVEMINTHRESHOLD": "Predictive Min Threshold [%]",
+    "REFRESH_SCHEDULED_CALLS": "Refresh Scheduled Calls",
+    "RECALLINQUEUE": "Recall in queue",
+    "SELECT_DATE": "Select Date",
+    "SELECT_TYPE": "Select Type",
+    "SELECT_CAMPAIGN": "Select Campaign",
+    "SCHEDULED_CALLS": "Scheduled Calls",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "CUTDIGIT": "Cut Digits",
+    "RANDOMLASTDIGITCALLERIDNUMBER": "Random Outgoing CallerId Number",
+    "CLONE_IVRCAMPAIGN": "Clone Campaign",
+    "CLONE_QUEUECAMPAIGN": "Clone Queue Campaign",
+    "ABANDONEDCALLS": "Abandoned Queue Calls",
+    "HOPPERWIDGET": "Summary",
+    "RESETLIST_IVRCAMPAIGN": "Reset Lists",
+    "RESETLIST_QUEUECAMPAIGN": "Reset Lists",
+    "RESET": "Reset",
+    "RESETLIST": "Reset Lists",
+    "SELECTALL": "Select All",
+    "UNSELECTALL": "Un-Select All",
+    "NO_AVAILABLE_INFO": "No available info",
+    "TIMEOUT": "Timeout",
+    "CALLYSQUAREPROJECTPREVIEW": "Cally Square Project Preview",
+    "CALLYSQUAREPROJECTPREVIEW2": "Cally Square Project After Preview",
+    "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
+    "CALLYSQUAREPROJECT2": "Cally Square Project After Queue",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "PARTIALPAUSE": "Parital Pause",
+    "ALL": "All",
+    "IDLE": "Idle",
+    "TIMER": "Timer",
+    "MOVE_HOPPERFINAL": "Restore contact",
+    "RESTORECONTACTS": "Restore Contacts",
+    "NO_SUCH_NUMBER": "No Such Number",
+    "ANSWERING_MACHINE": "Answering machine",
+    "DIALORDERBYSCHEDULEDAT": "Order By scheduledat",
+    "ASC": "ASC",
+    "DESC": "DESC",
+    "RECALLAGENT": "Recall Agent",
+    "DIALRECALLINQUEUE": "Recall In Queue",
+    "DIALRECALLMETIMEOUT": "Recall Me Timeout [min]",
+    "RECALLME": "Recall Me",
+    "RECALLFAILEDTIMEOUT": "Recall Failed",
+    "PREVIEW_CAMPAIGN": "Preview Campaigns",
+    "PREVIEW_CAMPAIGNS": "Preview Campaigns",
+    "AMD": "Asterisk Answering Machine Detection (AMD)",
+    "AMDTOTALANALYSISTIME": "Total Analysis Time",
+    "AMDACTIVE": "AMD",
+    "AMDINITIALSILENCE": "Initial Silence",
+    "AMDGREETING": "Greeting",
+    "AMDAFTERGREETINGSILENCE": "Silence after Greeting",
+    "AMDSILENCETHRESHOLD": "Silence Threshold",
+    "AMDMINWORDLENGTH": "Min Word Length",
+    "AMDBETWEENWORDSSILENCE": "Silence Between Words",
+    "AMDMAXIMUMWORDLENGTH": "Maximum Word Length",
+    "AMDMAXIMUMNUMBEROFWORDS": "Maximum Number Of Words",
+    "GOTO_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
+    "GOTOREALTIME_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
+    "GOTO_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
+    "GOTOREALTIME_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
+    "LOGOUT": "Logout",
+    "EDIT_CAMPAIGN": "Edit Campaign",
+    "LIMITED": "Limited",
+    "IVR_CAMPAIGNS": "IVR Campaigns",
+    "MOTIONDIALER": "Motion Bull",
+    "QUEUECAMPAIGNS": "Queue Campaigns",
+    "IVRCAMPAIGNS": "IVR Campaigns",
+    "MANAGED": "Managed",
+    "AVAILABLE_CONTACTS_FINISHED": "Available contacts finished",
+    "HISTORY": "History",
+    "SCHEDULEDAT": "Scheduled At",
+    "HOPPERBLACKS": "Hopper Blacklist",
+    "NO_HOPPERBLACK_AVAILABLE": "No items available",
+    "HOPPERFINALS": "Hopper Final",
+    "NO_HOPPERFINAL_AVAILABLE": "No items available",
+    "HOPPERHISTORIES": "Call history",
+    "NO_HOPPERHISTORY_AVAILABLE": "No items available",
+    "DELETE_HOPPERHISTORY": "Delete",
+    "DELETE_HOPPERFINAL": "Delete",
+    "CONTACTID": "Contact ID",
+    "STARTTIME": "Start Time",
+    "RESPONSETIME": "Response Time",
+    "ENDTIME": "End Time",
+    "STATUS": "Status",
+    "HOPPERS": "Hopper",
+    "NO_HOPPER_AVAILABLE": "No items available",
+    "EDIT_HOPPER": "Edit Hopper",
+    "DELETE_HOPPER": "Delete Hopper",
+    "FINAL": "Final",
+    "BLACKLIST": "Blacklist",
+    "NAME": "Name",
+    "VOICEQUEUES": "Voice Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
+    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
+    "EDIT_VOICEQUEUE": "Edit Voice Queue",
+    "DELETE_VOICEQUEUE": "Delete Voice Queue",
+    "MOHSOUNDS": "Moh Sounds",
+    "STRATEGY": "Strategy",
+    "DESCRIPTION": "Description",
+    "INTERVAL": "Time Interval",
+    "ADD_VOICEQUEUE": "Add Voice Queue",
+    "NEW_QUEUECAMPAIGN": "New Queue Campaign",
+    "ACTIVE": "Active",
+    "METHOD": "Method",
+    "POWERLEVEL": "Power Level",
+    "DROPRATE": "Drop Rate",
+    "AGENTBUSYFACTOR": "Agent Busy Factor",
+    "PREDICTIVEOPTIMIZATION": "Predictive Optimization",
+    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Predictive Optimization Percentage",
+    "PREDICTIVEINTERVAL": "Predictive Interval",
+    "ADD_QUEUECAMPAIGN": "Add Queue Campaign",
+    "CAMPAIGN": "Campaign",
+    "MAXCONCURRENTCALLS": "Max Concurrent Calls",
+    "CONCURRENTCALLS": "Max Concurrent Calls",
+    "ORIGINATE": "Originate",
+    "ORIGINATECALLERIDNAME": "Caller ID Name",
+    "ORIGINATECALLERIDNUMBER": "Caller ID Number",
+    "ORIGINATETIMEOUT": "Originate Timeout",
+    "QUEUEOPTIONS": "Queue Options",
+    "QUEUETIMEOUT": "Queue Timeout",
+    "CALLYSQUAREPROJECT": "Cally Square Project",
+    "RETRYANDFREQUENCY": "Retry Settings",
+    "GLOBAL": "Global",
+    "GLOBALMAXRETRY": "Max Retries",
+    "CONGESTION": "Congestion",
+    "CONGESTIONMAXRETRY": "Max Retries",
+    "CONGESTIONRETRYTIME": "Retry Time [min]",
+    "BUSYMAXRETRY": "Max Retries",
+    "BUSYRETRYTIME": "Retry Time [min]",
+    "NOANSWER": "No Answer",
+    "NOANSWERMAXRETRY": "Max Retries",
+    "NOANSWERRETRYTIME": "Retry Time [min]",
+    "QUEUE_PARAMS": "Queue Parameters",
+    "ORIGINATED": "Originated",
+    "MESSAGE": "Message",
+    "DROPPED": "Dropped",
+    "CREATED_AT": "Created At",
+    "NOSUCHNUMBER": "No such number",
+    "NOSUCHNUMBERMAXRETRY": "Max Retries",
+    "NOSUCHNUMBERRETRYTIME": "Retry Time [min]",
+    "DROP": "Drop",
+    "DROPMAXRETRY": "Max Retries",
+    "DROPRETRYTIME": "Retry Time [min]",
+    "ABANDONEDMAXRETRY": "Max Retries",
+    "ABANDONEDRETRYTIME": "Retry Time [min]",
+    "MACHINE": "Machine",
+    "MACHINEMAXRETRY": "Max Retries",
+    "MACHINERETRYTIME": "Retry Time [min]",
+    "AGENTREJECT": "Agent Reject",
+    "AGENTREJECTMAXRETRY": "Max Retries",
+    "AGENTREJECTRETRYTIME": "Retry Time [min]",
+    "LEGEND": {
+      "CUSTOM_APPLICATION": "(*) - Custom application."
+    },
+    "ERRORS": {
+      "AGENT_REQUIRED": "Mandatory field",
+      "CUTDIGIT_REQUIRED": "Mandatory field",
+      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Mandatory field",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTIMEOUT_REQUIRED": "Mandatory field",
+      "INTERVAL_REQUIRED": "Mandatory field",
+      "EMAIL_REQUIRED": "Mandatory field",
+      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "DIALRECALLMETIMEOUT_REQUIRED": "Mandatory field",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "PREFIX_MUST_VALID_PATTERN": "Wrong format",
+      "NAME_REQUIRED": "Mandatory field",
+      "TIMEOUT_REQUIRED": "Mandatory field",
+      "PHONENUMBER_REQUIRED": "Mandatory field",
+      "CONTEXT_REQUIRED": "Mandatory field",
+      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
+      "FULLNAME_REQUIRED": "Mandatory field",
+      "EMAIL_REQUUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "MAILBOX_REQUIRED": "Mandatory Field",
+      "PASSWORD_REQUIRED": "Mandatory field",
+      "CONFIRM_NOT_MATCH": "The passwords don't match",
+      "TIMEZONE_REQUIRED": "Mandatory field",
+      "PREFIX_REQUIRED": "Mandatory field",
+      "OPTIONS_REQUIRED": "Mandatory field",
+      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
+      "PHONE_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "EXTENSION_REQUIRED": "Mandatory field",
+      "PRIORITY_REQUIRED": "Mandatory field",
+      "GLOBALMAXRETRY_REQUIRED": "Mandatory field",
+      "CONGESTIONMAXRETRY_REQUIRED": "Mandatory field",
+      "CONGESTIONRETRYTIME_REQUIRED": "Mandatory field",
+      "BUSYMAXRETRY_REQUIRED": "Mandatory field",
+      "BUSYRETRYTIME_REQUIRED": "Mandatory field",
+      "NOANSWERMAXRETRY_REQUIRED": "Mandatory field",
+      "NOANSWERRETRYTIME_REQUIRED": "Mandatory field",
+      "QUEUETIMEOUT_REQUIRED": "Mandatory field",
+      "ORIGINATETIMEOUT_REQUIRED": "Mandatory field",
+      "GLOBALINTERVAL_REQUIRED": "Mandatory field",
+      "MAXCONCURRENTCALLS_REQUIRED": "Mandatory field",
+      "CONCURRENTCALLS_REQUIRED": "Mandatory field",
+      "NOSUCHNUMBERMAXRETRY_REQUIRED": "Mandatory field",
+      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Mandatory field",
+      "DROPMAXRETRY_REQUIRED": "Mandatory field",
+      "DROPRETRYTIME_REQUIRED": "Mandatory field",
+      "ABANDONEDMAXRETRY_REQUIRED": "Mandatory field",
+      "ABANDONEDRETRYTIME_REQUIRED": "Mandatory field",
+      "MACHINEMAXRETRY_REQUIRED": "Mandatory field",
+      "MACHINERETRYTIME_REQUIRED": "Mandatory field",
+      "AGENTREJECTMAXRETRY_REQUIRED": "Mandatory field",
+      "AGENTREJECTRETRYTIME_REQUIRED": "Mandatory field",
+      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
+      "CALLYSQUAREPROJECT_REQUIRED": "Mandatory field",
+      "TRUNK_REQUIRED": "Mandatory field"
+    },
+    "GENERAL": "General",
+    "AGENTTIMEOUT": "Agent Timeout",
+    "MAXLENGTH": "Maximum Length",
+    "RETRY": "Retry",
+    "WRAPUPTIME": "Wrapup Time",
+    "WEIGHT": "Weight",
+    "JOINWHENEMPTY": "Join when empty",
+    "LEAVEWHENEMPTY": "Leave when empty",
+    "HELP": {
+      "PREDICTIVEMAXTHRESHOLD": "If the percentage of agents available in the time window, compared to the agents available at the time of prediction, exceeds the configured maximum limit, the predictive recalculates the prediction. ",
+      "PREDICTIVEMINTHRESHOLD": "If the percentage of agents available in the time window, compared to the agents available at the time of prediction, exceeds the configured minimum limit, the predictive recalculates the prediction.",
+      "RANDOMLASTDIGITCALLERIDNUMBER": "If greater than 0, it generates randomly the corresponding last digits of the Outgoing Caller Id Number",
+      "TIMEOUT": "Number of seconds to ring agent in queue",
+      "CALLYSQUAREPROJECTPREVIEW": "Selecting an IVR project, the dialer will forward the call to the IVR when an agent answers (the IVR will be directed to the agent)",
+      "CALLYSQUAREPROJECTPREVIEW2": "Selecting an IVR project, the dialer will forward the call to the IVR when an client hangup or unreachable (the IVR will be directed to the agent)",
+      "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
+      "CALLYSQUAREPROJECT2": "Selecting an IVR project, the dialer will forward the call to the IVR after the queue (if the queue ends by timeout)",
+      "DIALORDERBYSCHEDULEDAT": "Get contacts from hopper (descending or ascending).",
+      "DIALRECALLINQUEUE": "Reschedule call for agents in the Queue",
+      "DIALRECALLMETIMEOUT": "Time interval (in minutes) for Recall Me period of validity",
+      "PRIORITY": "Priority in the list",
+      "AMDMAXIMUMWORDLENGTH": "Maximum duration allowed of a single Voice utterance",
+      "AMDMINWORDLENGTH": "Minimum duration of a Voice to be considered a word",
+      "AMDSILENCETHRESHOLD": "If the average level of noise in a sample does not reach this value, from a scale of 0 to 32767, then we will consider it as silence",
+      "AMDTOTALANALYSISTIME": "Maximum time allowed for the algorithm to decide on whether the audio represents a HUMAN or a MACHINE",
+      "AMDAFTERGREETINGSILENCE": "Silence after detecting a greeting. If exceeded, then the result is detection as a HUMAN",
+      "AMDGREETING": "Maximum length of a greeting. If exceeded, then the result is detection as a MACHINE",
+      "AMDINITIALSILENCE": "Maximum silence duration before the greeting. If exceeded, then the result is detection as a MACHINE",
+      "AMDACTIVE": "Activate or disactivate answering machines detection attempts",
+      "AMDBETWEENWORDSSILENCE": "Minimum duration of silence after a word to consider the audio that follows as a new word",
+      "AMDMAXIMUMNUMBEROFWORDS": "Maximum number of words in the greeting. If REACHED, then the result is detection as a MACHINE",
+      "CALLYSQUAREPROJECT": "Selecting an IVR project, the dialer will forward the call to the IVR before the queue",
+      "PREFIX": "Telephone prefix",
+      "ACTIVE": "Active",
+      "AGENTTIMEOUT": "How long (in seconds) to ring an agent’s device",
+      "MAXLENGTH": "Maximum number of callers allowed to be waiting in a queue (0=unlimited)",
+      "RETRY": "How long (in seconds) to wait before calling the next agent in the queue when the agent timeout is expired",
+      "WRAPUPTIME": "How long (in seconds) to keep an agent unavailable in a queue after completing a call",
+      "WEIGHT": "Used to determine priority if the agents are associated with more than one queue",
+      "JOINWHENEMPTY": "If a caller is added to the queue, when no agents are available",
+      "LEAVEWHENEMPTY": "If a caller is expelled from the queue when no agents are available",
+      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (0=disable)",
+      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
+      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
+      "ANNOUNCEPOSITIONLIMIT": "Used if you’ve defined announce-position as either 'limit' or 'more'",
+      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
+      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
+      "MUSICONHOLD": "Sets the music class to use for a particular queue",
+      "ANNOUNCETOAGENT": "Plays an announcement to the agent answering the call (e.g. to let him know which queue the caller is coming from)",
+      "RANDOMPERIODICANNOUNCE": "If yes, it plays the periodic announcements in random order",
+      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
+      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
+      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
+      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
+      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
+      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
+      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
+      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
+      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
+      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
+      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
+      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
+      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
+      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled, it causes the agent to be paused in all queues he belongs to",
+      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
+      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
+      "MONITORFORMAT": "Specifies the file format to use when recording. If monitor-format is inactive, calls will not be recorded",
+      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
+      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "RECORDING": "Enable call recording",
+      "VOICEMAIL_CONTEXT": "The context of the relative extension",
+      "METHOD": "Outbound dialer method",
+      "POWERLEVEL": "Number of contacts to call for any available agent",
+      "PREDICTIVEOPTIMIZATION": "A factor to optimize in the predictive algorithm",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Percentage based on the selected predictive optimization factor",
+      "PREDICTIVEINTERVAL": "Time interval (in minutes) considered by the predictive algorithm to calculate the amount of calls to generate to optimize the result",
+      "MAXCONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign (0=unlimited)",
+      "CONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign",
+      "ORIGINATECALLERIDNAME": "Outgoing Caller Id Name",
+      "ORIGINATECALLERIDNUMBER": "Outgoing Caller Id Number",
+      "ORIGINATETIMEOUT": "Time (in seconds) for the outbound call to establish a connection, otherwise the status is set to No Answer ",
+      "QUEUETIMEOUT": "Time (in seconds) a call will wait in the queue before it is dropped (Min 1 and Max 999)",
+      "GLOBALMAXRETRY": "Maximum number of times a contact is called before considering it closed",
+      "CONGESTIONMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for congestion",
+      "CONGESTIONRETRYTIME": "Time in minutes before trying to call again a failed contact due to congestion",
+      "BUSYMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for busy",
+      "BUSYRETRYTIME": "Time in minutes before trying to call again a failed contact due to busy",
+      "NOANSWERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no answer",
+      "NOANSWERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no answer",
+      "GLOBALINTERVAL": "Global time interval during which the dialer is allowed to call contacts. We decline responsibility: pay attention when you modify this field, because you may fail to comply with the national Autodialer Laws and Regulations",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "NOSUCHNUMBERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no such number",
+      "NOSUCHNUMBERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no such number",
+      "DROPMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for drop",
+      "DROPRETRYTIME": "Time in minutes before trying to call again a failed contact due to drop",
+      "ABANDONEDMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for abandon",
+      "ABANDONEDRETRYTIME": "Time in minutes before trying to call again a failed contact due to abandon",
+      "MACHINEMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for machine",
+      "MACHINERETRYTIME": "Time in minutes before trying to call again a failed contact due to machine",
+      "AGENTREJECTMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for agent reject",
+      "AGENTREJECTRETRYTIME": "Time in minutes before trying to call again a failed contact due to agent reject",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition",
+      "PREVIEW_AUTO_RECALL_ME": "If enabled, the system will automatically generate the Recall Me calls; otherwise, the agent must do it manually"
+    },
+    "MUSICONHOLD": "Music On Hold",
+    "ANNOUNCETOAGENT": "Announce To Agent",
+    "ANNOUNCEMENTS": "Announcements",
+    "ADVANCEDPREVIEW": "Advanced",
+    "ADVANCED": "Advanced",
+    "ADVANCE": "Advanced",
+    "ANNOUNCEFREQUENCY": "Announce Frequency",
+    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
+    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
+    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
+    "ANNOUNCEHOLDTIME": "Announce Hold Time",
+    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
+    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
+    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
+    "PERIODICANNOUNCE": "Periodic Announce",
+    "HOLDTIMEANNOUNCE": "Hold Time Announce",
+    "YOUARENEXTANNOUNCE": "'You are next' Announce",
+    "THEREAREANNOUNCE": "'There are' Announce",
+    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
+    "MINUTESANNOUNCE": "Minutes Announce",
+    "MINUTEANNOUNCE": "Minute Announce",
+    "SECONDSANNOUNCE": "Seconds Announce",
+    "THANKYOUANNOUNCE": "'Thank You' Announce",
+    "AUTOPAUSE": "Auto Pause",
+    "AFTERCALLWORK": "After Call Work",
+    "AFTERCALLWORKDURATION": "After Call Work Duration",
+    "RINGINUSE": "Ring In Use",
+    "MEMBERDELAY": "Member Delay",
+    "TIMEOUTRESTART": "Timeout Restart",
+    "MONITORFORMAT": "Recording Format",
+    "SETINTERFACEVARIABLES": "Set Interface Variables",
+    "SETQUEUEVARIABLES": "Set Queue Variables",
+    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
+    "CONTEXT": "Context",
+    "SAVE": "Save",
+    "SETTINGS": "Settings",
+    "INBOUNDROUTES": "Inbound Routes",
+    "PHONENUMBER": "Phone Number",
+    "ADD_INBOUNDROUTE": "Add Inbound Route",
+    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
+    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
+    "ACTIONS": "Actions",
+    "OUTBOUNDROUTES": "Outbound Routes",
+    "DESTINATIONPATTERN": "Destination Pattern",
+    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
+    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
+    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
+    "CUTDIGITS": "Cut Digits",
+    "RECORDING": "Recording",
+    "RECORDINGFORMAT": "Recording format",
+    "INTERNALROUTES": "Internal Routes",
+    "ADD_INTERNALROUTE": "Add Internal Route",
+    "EDIT_INTERNALROUTE": "Edit Internal Route",
+    "DELETE_INTERNALROUTE": "Delete Internal Route",
+    "CONTEXTS": "Contexts",
+    "ADD_CONTEXT": "Add Context",
+    "EDIT_CONTEXT": "Edit Context",
+    "DELETE_CONTEXT": "Delete Context",
+    "VOICEMAILS": "Voicemails",
+    "ADD_VOICEMAIL": "Add Voicemail",
+    "EDIT_VOICEMAIL": "Edit Voicemail",
+    "DELETE_VOICEMAIL": "Delete Voicemail",
+    "FULLNAME": "Full Name",
+    "EMAIL": "Email",
+    "MAILBOX": "Mailbox",
+    "PASSWORD": "Password",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "TIMEZONE": "Timezone",
+    "ATTACH": "Attach",
+    "ENVELOPE": "Envelope",
+    "DELETE": "Delete",
+    "EMAILBODY": "Email Body",
+    "EMAILSUBJECT": "Email Subject",
+    "MAXSECONDS": "Max Seconds",
+    "MAXMESSAGES": "Max Messages",
+    "MESSAGES": "Messages",
+    "SORT": "Sort",
+    "ADD_MUSICONHOLD": "Add Music On Hold",
+    "MUSICONHOLDS": "Music On Hold",
+    "EDIT_MUSICONHOLD": "Edit Music On Hold",
+    "DELETE_MUSICONHOLD": "Delete Music On Hold",
+    "DIRECTORY": "Directory",
+    "AUDIOFILES": "Audio Files",
+    "RECORDINGS": "Recordings",
+    "CHANSPY": "ChanSpy",
+    "PREFIX": "Prefix",
+    "OPTIONS": "Options",
+    "AUTH": "Auth",
+    "ADD_CHANSPY": "Add ChanSpy",
+    "EDIT_CHANSPY": "Edit ChanSpy",
+    "DELETE_CHANSPY": "Delete ChanSpy",
+    "AGENTS": "Agents",
+    "TELEPHONES": "Telephones",
+    "QUEUES": "Queues",
+    "QUEUE_CALLS": "Queue Calls",
+    "QUEUE_PARAMETERS": "Queue Parameters",
+    "ABANDONED_CALLS": "Abandoned Calls",
+    "OUTBOUND_CALLS": "Outbound Calls",
+    "AGI": "AGI",
+    "DIAL": "Dial",
+    "INTERNALDIAL": "Internal Dial",
+    "EXTERNALDIAL": "External Dial",
+    "RINGGROUP": "Ring Group",
+    "PLAYBACK": "Playback",
+    "QUEUE": "Queue",
+    "SET": "Set",
+    "VOICEMAIL": "Voicemail",
+    "GOTO": "GoTo",
+    "HANGUP": "Hangup",
+    "CUSTOM": "Custom",
+    "PROJECT": "Cally-Square Project",
+    "TECHNOLOGY/RESOURCE": "Technology/Resource",
+    "URL": "URL",
+    "EDIT_APP": "Edit Application",
+    "EDIT_INTERVAL": "Edit Interval",
+    "DELETE_APP": "Delete Application",
+    "INTERVALS": "Intervals",
+    "USER": "User",
+    "TRUNK": "Trunk",
+    "PHONE": "Phone",
+    "AUDIO_FILES": "Audio Files",
+    "ANNOUNCE_OVERRIDES": "Announce Overrides",
+    "MACRO": "Macro",
+    "GOSUB": "GoSub",
+    "RULE": "Rule",
+    "POSITION": "Position",
+    "ANSWER": "Answer",
+    "VALUE": "Value",
+    "MAILBOX@CONTEXT": "Mailbox@Context",
+    "EXTENSION": "Extension",
+    "PRIORITY": "Priority",
+    "HANGUP_CAUSE": "Hangup Cause",
+    "OUTBOUNDDIAL": "Outbound Dial",
+    "CALLER_ID": "Caller ID",
+    "NO_MESSAGE_AVAILABLE": "No messages available",
+    "NO_SOUND_AVAILABLE": "No sounds available",
+    "VOICERECORDINGS": "Voice Recordings",
+    "CHANSPIES": "ChanSpy",
+    "VOICE": "Voice",
+    "REALTIME": "Realtime",
+    "ID": "Id",
+    "VOICEMAIL_CONTEXT": "Context",
+    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
+    "FILE": "File",
+    "ADD_MOHSOUND": "Add Music On Hold sound",
+    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
+    "DELETE_MOHSOUND": "Delete Music On Hold sound",
+    "UNIQUEID": "Unique ID",
+    "AGENT": "Agent",
+    "TYPE": "Type",
+    "RATING": "Rating",
+    "AUDIO": "Audio",
+    "DATE": "Date",
+    "NEW_VOICEQUEUE": "New Voice Queue",
+    "NEW_INBOUNDROUTE": "New Inbound Route",
+    "NEW_OUTBOUNDROUTE": "New Outbound Route",
+    "NEW_INTERNALROUTE": "New Internal Route",
+    "NEW_CONTEXT": "New Context",
+    "NEW_VOICEMAIL": "New Voicemail",
+    "NEW_MUSICONHOLD": "New Music On Hold",
+    "NEW_CHANSPY": "New ChanSpy",
+    "PENALTY": "Penalty",
+    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
+    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
+    "EDIT_DIAL": "Edit Dial",
+    "EDIT_AGI": "Edit AGI",
+    "EDIT_INTERNALDIAL": "Edit Internal Dial",
+    "EDIT_EXTERNALDIAL": "Edit External Dial",
+    "EDIT_RINGGROUP": "Edit Ring Group",
+    "EDIT_PLAYBACK": "Edit Playback",
+    "EDIT_QUEUE": "Edit Queue",
+    "EDIT_SET": "Edit Set",
+    "EDIT_GOTO": "Edit GoTo",
+    "EDIT_HANGUP": "Edit Hangup",
+    "EDIT_CUSTOM": "Edit Custom",
+    "DURATION": "Duration",
+    "RECEIVED_AT": "Received At",
+    "YES": "Yes",
+    "NO": "No",
+    "HANGUPCAUSE_1": "1 = Unallocated number",
+    "HANGUPCAUSE_16": "16 = Normal call clearing",
+    "HANGUPCAUSE_17": "17 = User busy",
+    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
+    "HANGUPCAUSE_21": "21 = Call rejected",
+    "HANGUPCAUSE_22": "22 = Number changed",
+    "HANGUPCAUSE_27": "27 = Destination out of order",
+    "HANGUPCAUSE_38": "38 = Network out of order",
+    "HANGUPCAUSE_41": "41 = Temporary failure",
+    "RANDOM": "Random",
+    "ALPHABETICAL": "Alphabetical",
+    "NO_APPS_AVAILABLE": "No applications available",
+    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
+    "DELETE_VOICERECORDING": "Delete Voice Recording",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "REGISTERED": "Registered",
+    "UNREGISTERED": "Unregistered",
+    "LAGGED": "Lagged",
+    "REACHABLE": "Reachable",
+    "UNREACHABLE": "Unreachable",
+    "UNKNOWN": "Unknown",
+    "NOT_INUSE": "Not in use",
+    "INUSE": "In Use",
+    "BUSY": "Busy",
+    "INVALID": "Invalid",
+    "UNAVAILABLE": "Unavailable",
+    "RINGING": "Ringing",
+    "ONHOLD": "On Hold",
+    "RING": "Ring",
+    "UP": "Up",
+    "INFO": "Info",
+    "TRUNKS": "Trunks",
+    "REGISTRY": "Registry",
+    "NO_REGISTRY": "No registry",
+    "LOGGED_IN": "Logged in (SIP connected)",
+    "PAUSED": "Paused",
+    "DISPOSITION": "Disposition",
+    "WAITING": "Waiting",
+    "TALKING": "Talking",
+    "DID": "DID",
+    "CALLER": "Caller",
+    "TOTAL": "Total",
+    "ANSWERED": "Answered",
+    "ABANDONED": "Abandoned",
+    "UNMANAGED": "Unmanaged",
+    "REDIRECT_TO_NUMBER": "Redirect to a number",
+    "REDIRECT_TO_AGENT": "Redirect to an agent",
+    "CLOSING": "Closing",
+    "AVG_HOLD_TIME": "Avg Hold Time",
+    "AVG_DURATION": "Avg Duration",
+    "AVG_BILLABLE": "Avg Billable",
+    "SOURCE": "Source",
+    "DESTINATION": "Destination",
+    "REJECTED": "Rejected",
+    "FAILED": "Failed",
+    "CALLED": "Called",
+    "CONNECTED": "Connected",
+    "NO_RATING": "No rating",
+    "EDIT_VOICERECORDING": "Edit Voice Recording",
+    "APPLICATION_NAME": "Application Name",
+    "ARGUMENTS": "Arguments",
+    "EDIT_QUEUECAMPAIGN": "Edit Campaign",
+    "LISTADD_QUEUECAMPAIGN": "Add List",
+    "BLACKLISTADD_QUEUECAMPAIGN": "Add Blacklist",
+    "TEAMADD_QUEUECAMPAIGN": "Add Team",
+    "AGENTADD_QUEUECAMPAIGN": "Add Agent",
+    "DELETE_QUEUECAMPAIGN": "Delete Campaign",
+    "DELETE_IVRCAMPAIGN": "Delete Campaign",
+    "EDIT_IVRCAMPAIGN": "Edit Campaign",
+    "NEW_IVRCAMPAIGN": "New IVR Campaign",
+    "ADD_IVRCAMPAIGN": "Add IVR Campaign",
+    "LISTADD_IVRCAMPAIGN": "Add List",
+    "BLACKLISTADD_IVRCAMPAIGN": "Add Blacklist",
+    "ENABLED": "Enabled",
+    "READY": "Ready",
+    "PAUSE": "Pause",
+    "UNPAUSE": "End Pause",
+    "DEFAULT_PAUSE": "Default Pause",
+    "AGENTADD_QUEUE": "Add Agent to queue campaign",
+    "AGENTSADD_QUEUE": "Add Agents to queue campaign",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "ALL_LISTS": "All Lists",
+    "SELECTED_LISTS": "Selected Lists",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "WAITING_FOR_AGENT": "Waiting for Agent",
+    "TOTAL_OFFERED": "Total Offered",
+    "RUNNING": "Running",
+    "TRUNK_IS_NOT_REACHABLE": "Trunk is Not Reachable",
+    "AGENTS_NOT_LOGGED": "Agent not logged",
+    "NOT_ACTIVE": "Not Active",
+    "IS_DISACTIVED": "Deactivated",
+    "BACKUPTRUNK": "Backup Trunk",
+    "GLOBALINTERVAL": "Global Interval",
+    "RESCHEDULED_CONTACTS": "Rescheduled contacts",
+    "INTERVAL_IS_OVERTIME": "Out of Interval",
+    "GLOBAL_INTERVAL_IS_OVERTIME": "Out of Interval (Global)",
+    "INTERVAL_IS_NULL": "Interval is Null",
+    "TIMEZONE_UNKNOW": "Timezone Unknow",
+    "INTERVAL_IS_EMPTY": "Interval is Empty",
+    "TOTAL_MANAGED": "Total Managed",
+    "OPEN": "Open",
+    "FRESH": "Fresh",
+    "CLOSED": "Closed",
+    "ALWAYS": "Always",
+    "NEVER": "Never",
+    "ONLY_IF_OPEN": "Only If Open",
+    "CHECKDUPLICATE": "Check Duplicate",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "OF": "of",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Open Channel",
+    "FAX": "Fax",
+    "TEAMS_ASSOCIATION": "Teams Association",
+    "MANDATORYDISPOSITION": "Mandatory disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Mandatory disposition pause status",
+    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
+    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
+    "PREVIEW_AUTO_RECALL_ME": "Automate Recall Me calls"
+  }
+}
diff --git a/public/app/main/apps/openchannel/i18n/hu.json b/public/app/main/apps/openchannel/i18n/hu.json
new file mode 100644 (file)
index 0000000..8093eec
--- /dev/null
@@ -0,0 +1,271 @@
+{
+  "OPENCHANNEL": {
+    "EDIT_DIALOGFLOWV2": "Edit Dialogflow V2",
+    "DIALOGFLOWV2": "Dialogflow V2",
+    "PRIVATEKEY": "Private Key",
+    "CLIENTEMAIL": "Client Email",
+    "PROJECTID": "Project ID",
+    "AMAZONLEX": "AmazonLex",
+    "EDIT_AMAZONLEX": "Edit Lex configuration",
+    "ACCESSKEYID": "Access key ID",
+    "SECRETACCESSKEY": "Access key secret",
+    "LEXREGION": "Region",
+    "BOTNAME": "Bot name",
+    "WELCOMEMESSAGE": "Welcome message",
+    "DIALOGFLOW": "Dialogflow",
+    "EDIT_DIALOGFLOW": "Edit Dialogflow configuration",
+    "LANGUAGE": "Language",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "DOWNLOAD_INTERACTION": "Download",
+    "TRANSFER": "Transfer",
+    "QUEUETRANSFER": "Queue Transfer",
+    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "TAG": "Tag",
+    "EDIT_TAG": "Edit Tag",
+    "ADVANCED": "Advanced",
+    "PROXY": "Proxy",
+    "TOKEN": "Token",
+    "ADD_NOTE": "Add note",
+    "NOTE": "Note",
+    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
+    "INSERT_MESSAGE_HERE": "Insert your text message here",
+    "NOTIFICATION": "Notification",
+    "NOTIFICATIONSOUND": "Sound",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONTEMPLATE": "Template",
+    "SYSTEM": "System",
+    "EDIT_SYSTEM": "Edit System",
+    "COMMAND": "Command",
+    "VARIABLE": "Variable",
+    "DELETE": "Delete",
+    "CANNEDANSWERS": "Canned Answers",
+    "OPENCHANNELCANNEDANSWERS": "Canned Answers",
+    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
+    "NEW_OPENCHANNELCANNEDANSWER": "New Canned Answer",
+    "ADD_OPENCHANNELCANNEDANSWER": "Add Canned Answer",
+    "EDIT_OPENCHANNELCANNEDANSWER": "Edit",
+    "DELETE_OPENCHANNELCANNEDANSWER": "Delete",
+    "DELIVERYREPORTURL": "Delivery Report URL",
+    "TAGS": "Tags",
+    "SPYINTERACTION": "Spy",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "Go To Realtime Open Channel Queue",
+    "PARTIALPAUSE": "Parital Pause",
+    "BUSY": "Busy",
+    "TIMER": "Timer",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "REALTIME": "Realtime",
+    "TEXT": "Text",
+    "TIMES": "Number of times per interaction",
+    "EDIT_AUTOREPLY": "Edit Auto Reply",
+    "AUTOREPLY": "Auto Reply",
+    "NAME": "Name",
+    "OPENCHANNELQUEUES": "Open Channel Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "MANDATORYDISPOSITION": "Mandatory disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled",
+    "ERRORS": {
+      "PROJECTID_REQUIRED": "Mandatory Field",
+      "CLIENTEMAIL_REQUIRED": "Mandatory Field",
+      "PRIVATEKEY_REQUIRED": "Mandatory Field",
+      "ACCESSKEYID_REQUIRED": "Access key ID is required",
+      "SECRETACCESSKEY_REQUIRED": "Access key secret is required",
+      "BOTNAME_REQUIRED": "Bot name is required",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "TAG_REQUIRED": "Mandatory Field",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "KEY_REQUIRED": "Mandatory Field",
+      "LIST_REQUIRED": "Mandatory Field",
+      "COMMAND_REQUIRED": "Mandatory Field",
+      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "TEXT_REQUIRED": "The field text is required",
+      "NAME_REQUIRED": "Mandatory field",
+      "AGENT_TIMEOUT_REQUIRED": "Mandatory field",
+      "MOTIONADDRESS_REQUIRED": "Mandatory field",
+      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
+      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
+      "TIMEOUT_REQUIRED": "Mandatory field",
+      "REJECTURL_MUST_VALID_URL": "Wrong format",
+      "CLOSEURL_MUST_VALID_URL": "Wrong format",
+      "REPLYURI_REQUIRED": "Mandatory field",
+      "REPLYURI_MUST_VALID_URL": "Wrong format",
+      "PRIORITY_REQUIRED": "Mandatory field",
+      "CONDITION_REQUIRED": "Mandatory field",
+      "TRUEPRIORITY_REQUIRED": "Mandatory field",
+      "FALSEPRIORITY_REQUIRED": "Mandatory field",
+      "AGENT_REQUIRED": "Mandatory field",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "DISPOSITION_REQUIRED": "Mandatory field",
+      "QUEUE_REQUIRED": "Mandatory field",
+      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field"
+    },
+    "STRATEGY": "Strategy",
+    "AGENT": "Agent",
+    "GOTO": "Goto",
+    "GOTOIF": "Gotoif",
+    "NOOP": "Noop",
+    "QUEUE": "Queue",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_GOTO": "Edit Goto",
+    "EDIT_NOOP": "Edit Noop",
+    "EDIT_GOTOIF": "Edit Gotoif",
+    "EDIT_QUEUE": "Edit Queue",
+    "CONDITION": "Condition",
+    "TRUEPRIORITY": "True Priority",
+    "FALSEPRIORITY": "False Priority",
+    "VALUE": "Value",
+    "PRIORITY": "Priority",
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "DESCRIPTION": "Description",
+    "ADD_OPENCHANNELQUEUE": "Add Open Channel Queue",
+    "EDIT_OPENCHANNELQUEUE": "Edit Open Channel Queue",
+    "DELETE_OPENCHANNELQUEUE": "Delete Open Channel Queue",
+    "PENALTY": "Penalty",
+    "TEAMADD_OPENCHANNELQUEUE": "Add Team To Open Channel Queue",
+    "AGENTADD_OPENCHANNELQUEUE": "Add Agent To Open Channel Queue",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "OPENCHANNELACCOUNTS": "Open Channel Accounts",
+    "MOTIONADDRESS": "Motion Address",
+    "ADD_OPENCHANNELACCOUNT": "Add Open Channel Account",
+    "EDIT_OPENCHANNELACCOUNT": "Edit Open Channel Account",
+    "DELETE_OPENCHANNELACCOUNT": "Delete Open Channel Account",
+    "API": "API",
+    "DISPOSITIONS": "Dispositions",
+    "WEBHOOKS": "WebHooks",
+    "ACTIONS": "Actions",
+    "LIST": "List",
+    "FIDELITY": "Fidelity",
+    "ACCEPT": "Accept",
+    "ACCEPTMETHOD": "Accept Method",
+    "ACCEPTURL": "Accept URL",
+    "REJECT": "Reject",
+    "REJECTMETHOD": "Reject Method",
+    "REJECTURL": "Reject URL",
+    "CLOSE": "Close",
+    "CLOSEMETHOD": "Close Method",
+    "CLOSEURL": "Close URL",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "BACK": "Back",
+    "OPENCHANNEL": "Open Channel",
+    "ID": "Id",
+    "TIMEOUT": "Timeout",
+    "OPENCHANNELDISPOSITIONS": "Open Channel Dispositions",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "No Open Channel Dispositions available",
+    "NEW_OPENCHANNELDISPOSITION": "New Open Channel Disposition",
+    "ADD_OPENCHANNELDISPOSITION": "Add Open Channel Disposition",
+    "EDIT_OPENCHANNELDISPOSITION": "Edit Open Channel Disposition",
+    "DELETE_OPENCHANNELDISPOSITION": "Delete Open Channel Disposition",
+    "NEW_OPENCHANNELQUEUE": "New Open channel Queue",
+    "NEW_OPENCHANNELACCOUNT": "New Open channel Account",
+    "NO_AVAILABLE_INFO": "No available info",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "REPLYURI": "Reply URL",
+    "RECEIVEURI": "Receive URL",
+    "HELP": {
+      "WELCOMEMESSAGE": "This is the first response message sent to new interactions.",
+      "TOKEN": "Add this property as query string in your Web Service URL. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
+      "RECEIVEURI": "Auto-generated API string to be used in order to receive messages inside your open channel from the external application (using POST method). Click the clipboard button to copy it ",
+      "REPLYURI": "The URL the open channel will call when sending or replying to a message. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "LIST": "Contact Manager List used to associate contacts",
+      "MANDATORYDISPOSITION": "Mandatory disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled"
+    },
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "OF": "of",
+    "CONTACT": "Contact",
+    "STARTEDAT": "Started At",
+    "LASTMESSAGE": "Last message",
+    "STATUS": "Status",
+    "CLOSED": "Closed",
+    "OPENED": "Open",
+    "OPEN": "Open",
+    "ACCOUNT": "Account",
+    "INTERACTION": "Interaction",
+    "INTERACTIONS": "Interactions",
+    "ALL": "All",
+    "SELECT_STATUS": "Select a status",
+    "FILTER": "Filter",
+    "FILTERS": "Filters",
+    "CLOSEDAT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "NOTES": "Notes",
+    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "SELECT_ACCOUNT": "Select an account",
+    "GOTOP": "Gotop",
+    "EDIT_GOTOP": "Edit Gotop",
+    "EDIT_CLOSE": "Edit Close",
+    "INFO": "Info",
+    "KEY": "Key",
+    "UNKNOWN": "Unknown",
+    "UNREGISTERED": "Unregistered",
+    "UNAVAILABLE": "Unavailable",
+    "NOT_INUSE": "Not in use",
+    "REACHABLE": "Reachable",
+    "IN_USE": "In use",
+    "AGENTS": "Agents",
+    "QUEUES": "Queues",
+    "FULLNAME": "Fullname",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "PAUSE": "Pause",
+    "LOGOUT": "Logout",
+    "AGENTADD_QUEUE": "Add Agent To Open Channel Queue",
+    "UNPAUSE": "End Pause",
+    "DEFAULT_PAUSE": "Default pause",
+    "LOGGED_IN": "Logged in",
+    "PAUSED": "Paused",
+    "READY": "Ready",
+    "WAITING": "Waiting",
+    "VOICE": "Voice",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "SMS",
+    "FAX": "Fax",
+    "AGENTSADD_QUEUE": "Add agents to Open Channel queue",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Go to Interactions",
+    "REFRESH_INTERACTIONS": "Refresh Interactions",
+    "DELETE_INTERACTION": "Delete Interaction",
+    "AGENTADD_OPENCHANNELACCOUNT": "Add Agent to Openchannel Account",
+    "CANNED_ANSWER_SEARCH": "Enter a text to seach a Canned Answer",
+    "CANNED_ANSWER_NOT_FOUND": "No Canned Answer were found",
+    "SEND": "Send",
+    "TO": "To",
+    "MAPKEY": "Map Key",
+    "TEAMS_ASSOCIATION": "Teams Association",
+    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
+    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments"
+  }
+}
diff --git a/public/app/main/apps/plugins/i18n/hu.json b/public/app/main/apps/plugins/i18n/hu.json
new file mode 100644 (file)
index 0000000..be8be0f
--- /dev/null
@@ -0,0 +1,7 @@
+{
+  "PLUGINS": {
+    "PLUGINS": "Plugins",
+    "ERRORS": {},
+    "HELP": {}
+  }
+}
index ab6b455..aa1bc8a 100644 (file)
     "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",
-    "AD_SSO_ENABLED": "Active Directory SSO Enabled",
     "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",
diff --git a/public/app/main/apps/settings/i18n/hu.json b/public/app/main/apps/settings/i18n/hu.json
new file mode 100644 (file)
index 0000000..aa1bc8a
--- /dev/null
@@ -0,0 +1,266 @@
+{
+  "SETTINGS": {
+    "RTLSUPPORT": "RTL Support",
+    "PREFERRED": "Preferred Logo",
+    "DEFAULT_PREFERRED": "Default Preferred Logo",
+    "FAVICON": "Favicon",
+    "DEFAULT_FAVICON": "Default Favicon",
+    "MOTIONBARREMEMBERME": "Remember Me",
+    "CHATTIMEOUT": "Chat closing interaction timeout",
+    "VIRTUAL": "Chat",
+    "VOICE": "Voice",
+    "SESSIONS": "Sessions",
+    "ADDONS": "Add-ons",
+    "REPORT": "Report",
+    "SPLIT": "Split report",
+    "SPLITSIZECSV": "Split report size [CSV records]",
+    "SPLITSIZEPDF": "Split report size [PDF records]",
+    "SPLITSIZEXLSX": "Split report size [XLSX records]",
+    "ENABLEEMAILPREVIEW": "Enable Email Preview",
+    "JAWS": "Jaws",
+    "MOTIONBAR": "Motionbar",
+    "MOTIONBARAUTOUPDATER": "Auto Updater",
+    "MOTIONBARAUTOUPDATERURL": "Auto Updater URL",
+    "SMTP_SSL": "SMTP SSL",
+    "CALL_RECORDING_ENCRYPTION": "Voice Recording Encryption",
+    "TURNADDR": "TURN Address",
+    "TURN_USERNAME": "TURN Username",
+    "TURN_PASSWORD": "TURN Password",
+    "WEBRTC": "WebRTC",
+    "CALLYSQUARE": "Cally Square",
+    "ENABLED": "Enabled",
+    "DISABLED": "Disabled",
+    "UNLIMITED_CHANNELS": "Unlimited Channels",
+    "RELOAD": "Reload",
+    "VERIFY": "Verify",
+    "INTERFACE": "Interface",
+    "UPDATING": "Updating",
+    "REMOTE_VERSION": "Remote Version",
+    "NO_NEW_VERSION_AVAILABLE": "No new version available",
+    "TOP_N_PROCESSES": "Top {{value}} processes",
+    "SYSTEM": "System",
+    "FILE_SYSTEM": "File System",
+    "PROCESSES": "Processes",
+    "MOUNT_POINT": "Mount",
+    "AVG_LOAD": "AVG Load",
+    "TOTAL": "Total",
+    "USED": "Used",
+    "FREE": "Free",
+    "NAME": "Name",
+    "STATE": "State",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "MESSAGING": "Sms",
+    "WHATSAPP": "WhatsApp Connector",
+    "FAX": "Fax",
+    "OPENCHANNEL": "Open Channel",
+    "AGENTS": "Agents",
+    "USERS": "Users",
+    "TELEPHONES": "Telephones",
+    "STAFF": "Staff",
+    "CHANNELS": "Channels",
+    "MODULES": "Modules",
+    "CM": "Contacts Manager",
+    "DIALER": "Dialer",
+    "JSCRIPTY": "Jscripty",
+    "CUSTOM": "Customization",
+    "VIDEO": "Video",
+    "SCREENRECORDING": "Screen Recording",
+    "UPDATE": "Update",
+    "OTHERS": "Others",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "SMTP": "SMTP",
+    "NETWORKS": "Networks",
+    "UPDATES": "Updates",
+    "LICENSE": "License",
+    "ID": "Id",
+    "MIN_INTERNAL": "Min Internal",
+    "MIN_MAILBOX": "Min Mailbox",
+    "INSTALLED_AT": "Installed At",
+    "SEARCH_FOR_ANYONE": "Search",
+    "EDIT_GENERAL": "Edit General",
+    "SECURE_PASSWORD": "Secure Password",
+    "LOGO": "Logo",
+    "DEFAULT_LOGO": "Default Logo",
+    "DEFAULT_LOGIN_LOGO": "Default Login Logo",
+    "WHITELABEL": "White Label",
+    "DEFAULT_HEADER_WHITELABEL": "Default Header White Label",
+    "HEADER_WHITELABEL": "Header White Label",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "SMTP_SERVICE": "Service",
+    "SMTP_HOST": "Host",
+    "SMTP_USERNAME": "Username",
+    "DESCRIPTION": "Description",
+    "SMTP_PASSWORD": "Password",
+    "SMTP_PORT": "Port",
+    "SMTP_SECURE": "Secure",
+    "TYPE": "Type",
+    "ADDRESS": "Address",
+    "USERNAME": "Username",
+    "NEW_NETWORK": "New Network",
+    "ADD_NETWORK": "Add Network",
+    "IMAPGENERALSETTINGS": "IMAP",
+    "LOGINMAILFREQUENCY": "Login Mail Frequency (sec)",
+    "DEFAULTSCREENRECORDINGPATH": "Screen Recording path",
+    "APPZONE": "App Zone",
+    "EDIT_NETWORK": "Edit Network",
+    "DELETE_NETWORK": "Delete Network",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "EXPIRATION_DATE": "Expiration Date",
+    "REQUEST_LICENSE": "Request License",
+    "EMAIL": "Email",
+    "SEND": "Send",
+    "PLAN": "Plan",
+    "MONTH_TO_MONTH": "Month to month",
+    "MOTION_PROCESS_MANAGEMENT": "Motion Process Management",
+    "USEFUL_COMMANDS": "Useful Commands",
+    "COMMAND": "Command",
+    "PM2_LIST": "List all processes",
+    "PM2_START": "Start a process by id or name",
+    "PM2_STOP": "Stop a process by id or name or insert 'all' to stop all the active processes",
+    "PM2_RESTART": "Restart a process by id or name",
+    "PM2_LOGS": "Stream all processes log files, unless a specific process id or name is provided",
+    "PASSWORD": "Password",
+    "NO_AVAILABLE_INFO": "No available info",
+    "STUNADDR": "STUN Address",
+    "CHANGELOG": "Changelog",
+    "CURRENT_VERSION": "Current version",
+    "CUSTOMIZATIONS": "Customizations",
+    "LOCALNETADDRESS": "Localnet Address",
+    "NEW_VERSION": "New Version",
+    "TRIAL_VERSION": "Trial Version",
+    "TOKEN": "Token",
+    "NEW_TOKEN_DETECTED": "New Token Detected",
+    "EXPIRATION_GRAY_PERIOD": "Gray Period Expiration",
+    "NEW_TOKEN": "New Token",
+    "PRICES": "Prices",
+    "UPDATE_LICENSE": "Update License",
+    "LOGOLOGIN": "Login Logo",
+    "EXPIRATION_REASON": "Expiration Reason",
+    "GLOBAL": "Global",
+    "SMTP_AUTHENTICATION": "Authentication",
+    "LICENSE_REQUEST_SENT": "Thank you! The Licensing Team will check your account asap in order to approve your request: you will receive an email when the changes become effective. Please refer to license@xcally.com for further informations.",
+    "ACCOUNTNAME": "Account Name",
+    "EMAILADDRESS": "Email Address",
+    "EXPIRATION_REASON_MESSAGE_DISABLED": "Your license has been disabled.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Your machine unique id has been updated due to a change to your system.",
+    "EXPIRATION_CHANGED_ADVISE": "Contact xCALLY Motion License Team sending both your old and your new uuid.",
+    "OLD_TOKEN": "Old Token",
+    "SEND_EMAIL_TO": "Send Email to",
+    "JIRA_ERROR_MESSAGE": "Error during license request. Please contact our license team at license@xcally.com with your request",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "OF": "of",
+    "PAGE_TITLE": "Page Title",
+    "DEFAULT_PAGE_TITLE": "Default Page Title",
+    "PERPETUAL": "Perpetual",
+    "SECURITY_SUITE": "Security Suite",
+    "ANNUALLY": "Annually",
+    "AGENTOMNIDESKTOPINTERFACE": "Agent Omni Desktop Interface",
+    "MESSAGESALIGNMENT": "Messages Alignment",
+    "ENTER_LICENSE": "Enter your license",
+    "UPDATE_LICENSE_MANUALLY": "Do you want to update your license manually?",
+    "SECURITY": "Security",
+    "ALLOWEDLOGINATTEMPTS": "Allowed login attempts before locking the user/agent",
+    "BLOCKDURATION": "Minutes to wait before automatic unlock",
+    "AI": "A.I. Tools",
+    "AITOOLS": "A.I. Tools",
+    "SERVICE": "Service",
+    "NEW_CLOUDPROVIDER": "New Account",
+    "ADD_CLOUDPROVIDER": "Add Account",
+    "DELETE": "Delete",
+    "SECRETACCESSKEY": "Secret Access Key",
+    "ACCESSKEY": "Access Key ID",
+    "EDIT_CLOUDPROVIDER": "Edit Account",
+    "DELETE_CLOUDPROVIDER": "Delete Account",
+    "LANGUAGE": "Language",
+    "BUCKET": "Bucket",
+    "TRANSCRIBE": "Transcribe",
+    "TRANSCRIBEREGION": "Transcribe Region",
+    "TRANSCRIBEACCOUNT": "Transcribe Account",
+    "SENTIMENTANALYSIS": "Sentiment Analysis",
+    "SENTIMENTREGION": "Sentiment Analysis Region",
+    "SENTIMENTACCOUNT": "Sentiment Analysis Account",
+    "SSO": "SSO",
+    "GOOGLE_SSO_ENABLED": "Google SSO Enabled",
+    "ENFORCE_PASSWORD_HISTORY": "Enforce Password History",
+    "PASSWORD_HISTORY_LIMIT": "Password History Limit",
+    "PRIVACY_POLICY_EMAIL": "Privacy Policy for Email Addresses",
+    "PRIVACY_POLICY_NAME": "Privacy Policy for Names",
+    "PRIVACY_POLICY_NUMBER": "Privacy Policy for Numbers",
+    "SEARCH_ON_ENTER_KEY": "Search on Enter key",
+    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Chat interactions reload timeout",
+    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "Email interactions reload timeout",
+    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Open Channel interactions reload timeout",
+    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "SMS interactions reload timeout",
+    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connector interactions reload timeout",
+    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Stop recording on voice call transfer",
+    "HELP": {
+      "DEFAULTSCREENRECORDINGPATH": "Enter the path where to store screen recording files on the Agent computer (leave empty for default Video Folder path)",
+      "RTLSUPPORT": "Enables the RTL Support for Arabic, Persian and Hebrew languages",
+      "ADDRESS": "External (public) ip address",
+      "LOCALNETADDRESS": "Local ip address/subnet",
+      "SMTP_SECURE": "If true, the connection to the server will use TLS",
+      "SMTP_USERNAME": "Username used for authentication",
+      "SMTP_PASSWORD": "Password used for authentication",
+      "EMAILADDRESS": "The message origin Email address (from)",
+      "SECURITY_SUITE": "Enables the secure password format, the mandatory password reset after the first login and the password expiration after 90 days",
+      "MOTIONBARREMEMBERME": "Enable/Disable the Remember Me feature in Motion Phonebar",
+      "LOGINMAILFREQUENCY": "Please remember to restart the EMAIL service each time this parameter has been changed",
+      "USERNAME": "Username",
+      "PASSWORD": "Password",
+      "ENFORCE_PASSWORD_HISTORY": "Enables the validation against previously used passwords",
+      "PASSWORD_HISTORY_LIMIT": "Number of last used unique passwords to check",
+      "PRIVACY_POLICY": "Number of characters that will be replaced with an asterisk (*) (0 = all characters)",
+      "SEARCH_ON_ENTER_KEY": "Start searching only after the agent hits the Enter key",
+      "INTERACTIONS_RELOAD_TIMEOUT": "Time interval in seconds after which interactions are reloaded (0 = real-time update)"
+    },
+    "ERRORS": {
+      "CHATTIMEOUT_REQUIRED": "Mandatory field",
+      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Wrong format",
+      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Mandatory field",
+      "ADDRESS_REQUIRED": "Mandatory field",
+      "MIN_INTERNAL_REQUIRED": "Mandatory field",
+      "MIN_MAILBOX_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Mandatory field",
+      "HEADER_WHITELABEL_REQUIRED": "Mandatory field",
+      "LOCALNETADDRESS_REQUIRED": "Mandatory field",
+      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Wrong format",
+      "ADDRESS_MUST_VALID_PATTERN": "Wrong format",
+      "ACCOUNTNAME_REQUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "SMTP_USERNAME_REQUIRED": "Mandatory field",
+      "PASSWORD_REQUIRED": "Mandatory field",
+      "SMTP_HOST_REQUIRED": "Mandatory field",
+      "SMTP_PORT_REQUIRED": "Mandatory field",
+      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PAGE_TITLE_REQUIRED": "Mandatory field",
+      "EMAIL_REQUIRED": "Mandatory field",
+      "PLAN_REQUIRED": "Mandatory field",
+      "LICENSE_REQUIRED": "Mandatory field",
+      "LOGINMAILFREQUENCY_REQUIRED": "Mandatory field",
+      "LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "BLOCKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "ALLOWEDLOGINATTEMPTS_REQUIRED": "Mandatory field",
+      "BLOCKDURATION_REQUIRED": "Mandatory field",
+      "SERVICE_REQUIRED": "Mandatory field",
+      "SECRETACCESSKEY_REQUIRED": "Mandatory field",
+      "ACCESSKEY_REQUIRED": "Mandatory field",
+      "LANGUAGE_REQUIRED": "Mandatory field",
+      "BUCKET_REQUIRED": "Mandatory field",
+      "TRANSCRIBEREGION_REQUIRED": "Mandatory field",
+      "TRANSCRIBEACCOUNT_REQUIRED": "Mandatory field",
+      "SENTIMENTREGION_REQUIRED": "Mandatory field",
+      "SENTIMENTACCOUNT_REQUIRED": "Mandatory field",
+      "USERNAME_REQUIRED": "Mandatory field"
+    }
+  }
+}
diff --git a/public/app/main/apps/sms/i18n/hu.json b/public/app/main/apps/sms/i18n/hu.json
new file mode 100644 (file)
index 0000000..797230c
--- /dev/null
@@ -0,0 +1,297 @@
+{
+  "SMS": {
+    "EDIT_DIALOGFLOWV2": "Edit Dialogflow V2",
+    "DIALOGFLOWV2": "Dialogflow V2",
+    "PRIVATEKEY": "Private Key",
+    "CLIENTEMAIL": "Client Email",
+    "PROJECTID": "Project ID",
+    "AMAZONLEX": "AmazonLex",
+    "EDIT_AMAZONLEX": "Edit Lex configuration",
+    "ACCESSKEYID": "Access key ID",
+    "SECRETACCESSKEY": "Access key secret",
+    "LEXREGION": "Region",
+    "BOTNAME": "Bot name",
+    "WELCOMEMESSAGE": "Welcome message",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "DOWNLOAD_INTERACTION": "Download",
+    "TRANSFER": "Transfer",
+    "QUEUETRANSFER": "Queue Transfer",
+    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "TAG": "Tag",
+    "EDIT_TAG": "Edit Tag",
+    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
+    "NOTIFICATION": "Notification",
+    "NOTIFICATIONSOUND": "Sound",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONTEMPLATE": "Template",
+    "SYSTEM": "System",
+    "EDIT_SYSTEM": "Edit System",
+    "COMMAND": "Command",
+    "VARIABLE": "Variable",
+    "AUTHID": "Auth ID",
+    "NO_SMSDISPOSITIONS_AVAILABLE": "No Sms Disposition Available",
+    "CANNEDANSWERS": "Canned Answers",
+    "SMSCANNEDANSWERS": "Canned Answers",
+    "NO_SMSCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
+    "NEW_SMSCANNEDANSWER": "New Canned Answer",
+    "ADD_SMSCANNEDANSWER": "Add Canned Answer",
+    "EDIT_SMSCANNEDANSWER": "Edit",
+    "DELETE_SMSCANNEDANSWER": "Delete",
+    "DELIVERYREPORTURL": "Delivery Report URL",
+    "DELETE": "Delete",
+    "SENDERSTRING": "Sender String",
+    "DELIVERYREPORT": "Delivery Report",
+    "METHOD": "Method",
+    "ADD_NOTE": "Add note",
+    "NOTE": "Note",
+    "SPYINTERACTION": "Spy",
+    "AUTOREPLY": "Auto Reply",
+    "EDIT_AUTOREPLY": "Edit Auto Reply",
+    "TIMES": "Number of times per interaction",
+    "TEXT": "Text",
+    "INSERT_MESSAGE_HERE": "Insert your text message here",
+    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
+    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
+    "SEND": "Send",
+    "TO": "To",
+    "MESSAGE": "Message",
+    "TAGS": "Tags",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "GOTOREALTIME_SMSQUEUE": "Go To Realtime Sms Queue",
+    "PARTIALPAUSE": "Parital Pause",
+    "BUSY": "Busy",
+    "TIMER": "Timer",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "PROXY": "Proxy",
+    "ADVANCED": "Advanced",
+    "MOTIONPROXY": "Proxy Or Motion Domain",
+    "REALTIME": "Realtime",
+    "KEY": "Key",
+    "NAME": "Name",
+    "SMSQUEUES": "SMS Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "STRATEGY": "Strategy",
+    "BASEURL": "Base URL",
+    "MANDATORYDISPOSITION": "Mandatory disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled",
+    "ERRORS": {
+      "PROJECTID_REQUIRED": "Mandatory Field",
+      "CLIENTEMAIL_REQUIRED": "Mandatory Field",
+      "PRIVATEKEY_REQUIRED": "Mandatory Field",
+      "ACCESSKEYID_REQUIRED": "Access key ID is required",
+      "SECRETACCESSKEY_REQUIRED": "Access key secret is required",
+      "BOTNAME_REQUIRED": "Bot name is required",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "TAG_REQUIRED": "Mandatory Field",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "COMMAND_REQUIRED": "Mandatory Field",
+      "AUTHID_REQUIRED": "Mandatory Field",
+      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "TEXT_REQUIRED": "Mandatory Field",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "SENDERSTRING_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "SENDERSTRING_MUST_VALID_PATTERN": "Wrong format",
+      "METHOD_REQUIRED": "Mandatory Field",
+      "MOTIONPROXY_REQUIRED": "Mandatory Field",
+      "MOTIONPROXY_MUST_VALID_URL": "Wrong format",
+      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "KEY_REQUIRED": "Mandatory Field",
+      "NAME_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
+      "PHONE_REQUIRED": "Mandatory Field",
+      "SID_REQUIRED": "Mandatory Field",
+      "TOKEN_REQUIRED": "Mandatory Field",
+      "USERNAME_REQUIRED": "Mandatory Field",
+      "PASSWORD_REQUIRED": "Mandatory Field",
+      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
+      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
+      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
+      "TIMEOUT_REQUIRED": "Mandatory Field",
+      "REJECTURL_MUST_VALID_URL": "Wrong format",
+      "CLOSEURL_MUST_VALID_URL": "Wrong format",
+      "TYPE_REQUIRED": "Mandatory Field",
+      "LIST_REQUIRED": "Mandatory Field",
+      "PRIORITY_REQUIRED": "Mandatory Field",
+      "CONDITION_REQUIRED": "Mandatory Field",
+      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
+      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
+      "AGENT_REQUIRED": "Mandatory Field",
+      "QUEUE_REQUIRED": "Mandatory Field",
+      "DISPOSITION_REQUIRED": "Mandatory Field",
+      "ACCOUNTSID_REQUIRED": "Mandatory Field",
+      "AUTHTOKEN_REQUIRED": "Mandatory Field",
+      "BASEURL_REQUIRED": "Mandatory Field",
+      "APIKEY_REQUIRED": "Mandatory Field",
+      "APPLICATIONID_REQUIRED": "Mandatory Field",
+      "ACCOUNTID_REQUIRED": "Mandatory Field",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field"
+    },
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "DESCRIPTION": "Description",
+    "ADD_SMSQUEUE": "Add SMS Queue",
+    "EDIT_SMSQUEUE": "Edit SMS Queue",
+    "DELETE_SMSQUEUE": "Delete SMS Queue",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "SMSACCOUNTS": "SMS Accounts",
+    "TYPE": "Type",
+    "PHONE": "Phone",
+    "SID": "SID",
+    "TOKEN": "Token",
+    "SMSTYPE": "SMS Type",
+    "USERNAME": "Username",
+    "PASSWORD": "Password",
+    "MOTIONADDRESS": "Motion Address",
+    "ADD_SMSACCOUNT": "Add SMS Account",
+    "EDIT_SMSACCOUNT": "Edit SMS Account",
+    "DELETE_SMSACCOUNT": "Delete SMS Account",
+    "LIST": "List",
+    "FIDELITY": "Fidelity",
+    "API": "API",
+    "DISPOSITIONS": "Dispositions",
+    "WEBHOOKS": "WebHooks",
+    "ACTIONS": "Actions",
+    "ACCEPT": "Accept",
+    "ACCEPTMETHOD": "Accept Method",
+    "ACCEPTURL": "Accept URL",
+    "REJECT": "Reject",
+    "REJECTMETHOD": "Reject Method",
+    "REJECTURL": "Reject URL",
+    "CLOSE": "Close",
+    "CLOSEMETHOD": "Close Method",
+    "CLOSEURL": "Close URL",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "BACK": "Back",
+    "SMS": "SMS",
+    "ID": "Id",
+    "APIKEY": "ApiKey",
+    "APPLICATIONID": "Application ID",
+    "ACCOUNTID": "Account ID",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "SMSDISPOSITIONS": "SMS Dispositions",
+    "NO_SMSDISPOSITION_AVAILABLE": "No SMS Dispositions available",
+    "NEW_SMSDISPOSITION": "New SMS Disposition",
+    "ADD_SMSDISPOSITION": "Add SMS Disposition",
+    "EDIT_SMSDISPOSITION": "Edit SMS Disposition",
+    "DELETE_SMSDISPOSITION": "Delete SMS Disposition",
+    "NEW_SMSQUEUE": "New SMS Queue",
+    "NEW_SMSACCOUNT": "New SMS Account",
+    "NO_AVAILABLE_INFO": "No available info",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "DIALOGFLOW": "DialogFlow",
+    "EDIT_DIALOGFLOW": "Edit DialogFlow configuration",
+    "LANGUAGE": "Language",
+    "HELP": {
+      "WELCOMEMESSAGE": "This is the first response message sent to new interactions",
+      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "LIST": "Contact Manager list used to associate contacts",
+      "RECEIVEURL": "This is the auto-generated API string you need to use to receive the messages inside your account from your SMS provider (POST method must be used): click the clipboard button to copy it",
+      "DELIVERYREPORTURL": "This is the auto-generated API string you need to use to receive the delivery report of sent messages from your SMS provider (POST method must be used): click the clipboard button to copy it",
+      "MANDATORYDISPOSITION": "Mandatory disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled"
+    },
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "OF": "of",
+    "TEAMADD_SMSQUEUE": "Add Team To SMS Queue",
+    "AGENTADD_SMSQUEUE": "Add Agent To SMS Queue",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "RECEIVEURL": "Receive URL",
+    "INTERACTION": "Interaction",
+    "INTERACTIONS": "Interactions",
+    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "CONTACT": "Contact",
+    "STARTEDAT": "Started At",
+    "LASTMESSAGE": "Last message",
+    "AGENT": "Agent",
+    "CLOSEDAT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "NOTES": "Notes",
+    "GOTO": "Goto",
+    "GOTOIF": "Gotoif",
+    "NOOP": "Noop",
+    "QUEUE": "Queue",
+    "TIMEOUT": "Timeout",
+    "VALUE": "Value",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_GOTO": "Edit Goto",
+    "EDIT_NOOP": "Edit Noop",
+    "EDIT_GOTOIF": "Edit Gotoif",
+    "EDIT_QUEUE": "Edit Queue",
+    "CONDITION": "Condition",
+    "TRUEPRIORITY": "True Priority",
+    "FALSEPRIORITY": "False Priority",
+    "PRIORITY": "Priority",
+    "GOTOP": "Gotop",
+    "EDIT_GOTOP": "Edit Gotop",
+    "EDIT_CLOSE": "Edit Close",
+    "FILTER": "Filter",
+    "SELECT_STATUS": "Select a status",
+    "ALL": "All",
+    "SELECT_ACCOUNT": "Select an account",
+    "OPENED": "Open",
+    "CLOSED": "Closed",
+    "STATUS": "Status",
+    "ACCOUNT": "Account",
+    "OPEN": "Open",
+    "INFO": "Info",
+    "ACCOUNTSID": "Account SID",
+    "AUTHTOKEN": "Auth Token",
+    "UNKNOWN": "Unknown",
+    "UNREGISTERED": "Unregistered",
+    "UNAVAILABLE": "Unavailable",
+    "NOT_INUSE": "Not in use",
+    "REACHABLE": "Reachable",
+    "IN_USE": "In use",
+    "AGENTS": "Agents",
+    "QUEUES": "Queues",
+    "FULLNAME": "Fullname",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "PAUSE": "Pause",
+    "LOGOUT": "Logout",
+    "AGENTADD_QUEUE": "Add Agent To SMS Queue",
+    "UNPAUSE": "End Pause",
+    "DEFAULT_PAUSE": "Default pause",
+    "LOGGED_IN": "Logged in",
+    "PAUSED": "Paused",
+    "READY": "Ready",
+    "WAITING": "Waiting",
+    "VOICE": "Voice",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "OPENCHANNEL": "Open channel",
+    "FAX": "Fax",
+    "AGENTSADD_QUEUE": "Add agents to SMS queue",
+    "INTERACTIONS_SMSACCOUNT": "Go to Interactions",
+    "REFRESH_INTERACTIONS": "Refresh Interactions",
+    "DELETE_INTERACTION": "Delete Interaction",
+    "AGENTADD_SMSACCOUNT": "Add Agent to SMS Account",
+    "TEAMS_ASSOCIATION": "Teams Association",
+    "DOWNLOAD_WITH_ATTACHMENT": "Download with attachment",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Download without attachment"
+  }
+}
index 6fe6483..15d1dea 100644 (file)
     "ALLOWCODECS": "Allowed Codecs",
     "DISABLED": "Deactivated",
     "BLOCKED": "Locked",
-    "AD_SSO_ENABLED": "Active Directory SSO",
-    "AUTHENTICATION": "Authentication",
     "HELP": {
       "DISABLED": "select to deactivate / unselect to reactivate",
       "BLOCKED": "Lock / Unlock access",
       "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"
+      "WSS_PORT": "Default: 8089"
     },
     "NEW_PASSWORD": "New Password",
     "CONFIRM_PASSWORD": "Confirm Password",
diff --git a/public/app/main/apps/staff/i18n/hu.json b/public/app/main/apps/staff/i18n/hu.json
new file mode 100644 (file)
index 0000000..15d1dea
--- /dev/null
@@ -0,0 +1,375 @@
+{
+  "STAFF": {
+    "MANAGE_API_KEY": "API Key Manager",
+    "GENERATE": "Generate",
+    "REGENERATE": "Regenerate",
+    "REMOVE": "Remove",
+    "APIKEYMANAGER_USER": "API Key Manager",
+    "APIKEY": "API Key",
+    "VIDEOSUPPORT": "Video support",
+    "HOTDESK": "Hot desk",
+    "ENABLEVIDEOECORDING": "Enable Video Recording",
+    "ENABLESCREENRECORDINGBYAGENT": "Enable Screen Recording by Agent",
+    "ENABLEAUTOMATICSCREENRECORDING": "Enable Automatic Screen Recording",
+    "OLD_PASSWORD": "Old Password",
+    "ENABLEJAWSINTEGRATION": "Enable Jaws Integration",
+    "ALIAS": "Alias",
+    "NO_PASSWORD_CHANGE": "No Password Change",
+    "SECURITY_SUITE": "Security Suite",
+    "LAST_PASSWORD_RESET_AT": "Last Password Reset At",
+    "SIP_WEBRTC": "Sip",
+    "SETTINGS_WEBRTC": "Settings",
+    "WEBRTC": "WebRTC",
+    "DTLSCERTFILE": "TLS certificate",
+    "DTLSPRIVATEKEY": "TLS certificate's private key",
+    "CONTEXT": "Context",
+    "RINGINUSE": "Ring In Use",
+    "USERS": "Users",
+    "AGENTS": "Agents",
+    "TOGGLE_SIDENAV": "Toggle sidenav",
+    "SEARCH_FOR_ANYONE": "Search",
+    "BACK": "Back",
+    "MULTI_SELECT_TOGGLE": "multi select toggle",
+    "SELECT_ALL": "Select all",
+    "SELECT_NONE": "Select None",
+    "SELECTED": "Selected",
+    "DELETE_SELECTED": "Delete selected",
+    "EXPORT_SELECTED": "Export selected",
+    "ALL_USERS": "All users",
+    "ALL_AGENTS": "All agents",
+    "SORT": "sort",
+    "NAME": "Name",
+    "FULLNAME": "Full Name",
+    "A_TO_Z": "(A to Z)",
+    "Z_TO_A": "(Z to A)",
+    "MORE": "More",
+    "DELETE_USER": "Delete User",
+    "EDIT_USER": "Edit User",
+    "DELETE_AGENT": "Delete Agent",
+    "EDIT_AGENT": "Edit Agent",
+    "DELETE": "Delete",
+    "SAVE": "SAVE",
+    "ADD_USER": "ADD USER",
+    "ADD_AGENT": "ADD AGENT",
+    "NO_RESULTS": "No results..",
+    "CLOSE_DIALOG": "Close dialog",
+    "NAME_REQUIRED": "Name (required)",
+    "USERNAME": "Username",
+    "SHOW_ALL_FIELDS": "Show All Fields",
+    "PHONE_NUMBER": "Phone number",
+    "EMAIL": "Email",
+    "PASSWORD": "Password",
+    "ERRORS": {
+      "CONFIRM_REQUIRED": "Mandatory field",
+      "ALLOWCODECS_REQUIRED": "Mandatory field",
+      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
+      "DTLSCERTFILE_REQUIRED": "Mandatory field",
+      "DTLSPRIVATEKEY_REQUIRED": "Mandatory field",
+      "FULLNAME_REQUIRED": "Mandatory field",
+      "USERNAME_REQUIRED": "Mandatory field",
+      "EMAIL_REQUIRED": "Mandatory field",
+      "PASSWORD_REQUIRED": "Mandatory field",
+      "CONFIRM_NOT_MATCH": "The passwords don't match",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "ACCOUNTNAME_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Mandatory field",
+      "HOST_REQUIRED": "Mandatory field",
+      "CHATCAPACITY_REQUIRED": "Mandatory field",
+      "MAILCAPACITY_REQUIRED": "Mandatory field",
+      "FAXCAPACITY_REQUIRED": "Mandatory field",
+      "SMSCAPACITY_REQUIRED": "Mandatory field",
+      "WHATSAPPCAPACITY_REQUIRED": "Mandatory field",
+      "OPENCHANNELCAPACITY_REQUIRED": "Mandatory field",
+      "SIPEXPIRES_REQUIRED": "Mandatory field",
+      "SIPPORT_REQUIRED": "Mandatory field",
+      "UNCONDITIONALNUMBER_REQUIRED": "Mandatory field",
+      "NOREPLYNUMBER_REQUIRED": "Mandatory field",
+      "BUSYNUMBER_REQUIRED": "Mandatory field",
+      "USERNAME_MUST_VALID_PATTERN": "Wrong format {{regex}}",
+      "REMOTECONTROLPORT_REQUIRED": "Mandatory field",
+      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AUTOANSWERDELAY_REQUIRED": "Mandatory field",
+      "MONITOREXTENSION_REQUIRED": "Mandatory field",
+      "SECURE_PASSWORD_PATTERN": "The password must be at least 8 characters long and have 1 lowercase character, 1 uppercase character, 1 number and 1 special character ~!@#$%^&-_=+[{]}.",
+      "CRUDPERMISSIONS_REQUIRED": "Mandatory field",
+      "USERPROFILE_REQUIRED": "Mandatory field",
+      "PASSWORD_OLDPASSWORD_MATCH": "New password must be different from previous one"
+    },
+    "ACCOUNT": "Account",
+    "VOICE": "Voice",
+    "CREATED_AT": "Created At",
+    "ROLE": "Role",
+    "PERSONAL_INFO": "Personal Info",
+    "DESCRIPTION": "Description",
+    "CHANGE_AVATAR": "Change Avatar",
+    "GENERAL": "General",
+    "INTERNAL": "Internal",
+    "TRANSPORT": "Transport",
+    "ALLOWCODECS": "Allowed Codecs",
+    "DISABLED": "Deactivated",
+    "BLOCKED": "Locked",
+    "HELP": {
+      "DISABLED": "select to deactivate / unselect to reactivate",
+      "BLOCKED": "Lock / Unlock access",
+      "APIKEY": "Please use 'API key manager' button on toolbar to manage this key",
+      "LAST_PASSWORD_RESET_AT": "Last date and time the password has been changed. If Secure Suite General Setting is enabled, the password will expire after 90 days.",
+      "DTLSCERTFILE": "Link to the valid TLS certificate(.crt file). Default value: '/etc/pki/tls/certs/motion.crt'.",
+      "DTLSPRIVATEKEY": "Link to the certificate's private key(.key file). Default value: '/etc/pki/tls/private/motion.key'.",
+      "ALLOWCODECS": "Allowed Codecs in order of preference",
+      "TRANSPORT": "Set the default transports in order of preference",
+      "HOST": "How to find the client - IP or host name. If you want the phone to register itself, use the keyword dynamic instead of Host IP",
+      "NAT": "Changes the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore other settings and set nat=no",
+      "SIPEXPIRES": "Default: 120",
+      "SIPPORT": "Default: 5160",
+      "TYPE": "Determines the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above",
+      "CHATCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "MAILCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "FAXCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "SMSCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "WHATSAPPCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "OPENCHANNELCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+      "CALLGROUP": "The agent's callgroup",
+      "PICKUPGROUP": "The groups in which the agent can answer calls",
+      "USERNAME": "Only numbers, letters and specific characters (._) are supported",
+      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
+      "SAVE_PERMISSIONS": "Every section containing any pending changes will be saved",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Custom Dashboards permissions are managed in the Tools module",
+      "ENABLEAUTOMATICSCREENRECORDING": "The functionality is available only for voice channel",
+      "MASK_SENSITIVE_DATA": "Mask any sensitive data throughout the application (e.g. phone numbers and email addresses)",
+      "WSS_PORT": "Default: 8089"
+    },
+    "NEW_PASSWORD": "New Password",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "CHANGE_PASSWORD": "Change Password",
+    "CHANGEPASSWORD_AGENT": "Change Password",
+    "CHANGEPASSWORD_USER": "Change Password",
+    "CHANGEPASSWORD_TELEPHONE": "Change Password",
+    "LOGININPAUSE": "Login In Pause",
+    "HOST": "Host",
+    "NAT": "NAT",
+    "CHANSPY": "ChanSpy",
+    "OTHER_CHANNELS": "Other Channels",
+    "CHATCAPACITY": "Chat Capacity",
+    "MAILCAPACITY": "Email Capacity",
+    "FAXCAPACITY": "Fax Capacity",
+    "SMSCAPACITY": "Sms Capacity",
+    "WHATSAPPCAPACITY": "WhatsApp Connector Capacity",
+    "OPENCHANNELCAPACITY": "Open Channel Capacity",
+    "MOTIONBAR": "Motion Bar",
+    "SETTINGS": "Settings",
+    "AUTOANSWER": "Auto Answer",
+    "ENABLESETTINGS": "Enable Settings",
+    "CALL_FORWARDING": "Call Forwarding",
+    "UNCONDITIONAL": "Unconditional",
+    "UNCONDITIONALNUMBER": "Unconditional Number",
+    "NOREPLY": "No Reply",
+    "NOREPLYNUMBER": "No Reply Number",
+    "BUSY": "Busy",
+    "BUSYNUMBER": "Busy Number",
+    "REMOTE_CONTROL": "Remote Control",
+    "REMOTECONTROL": "Remote Control",
+    "REMOTECONTROLPORT": "Remote Control Port",
+    "SIP": "SIP",
+    "SIPEXPIRES": "SIP Expires [sec]",
+    "SIPPORT": "SIP Port",
+    "PENALTY": "Penalty",
+    "ACCOUNTNAME": "Account Name",
+    "ADD_TELEPHONE": "Add Telephone",
+    "EDIT_TELEPHONE": "Edit Telephone",
+    "DELETE_TELEPHONE": "Delete Telephone",
+    "TEAMS": "Teams",
+    "DELETE_TEAM": "Delete Team",
+    "AGENTADD_TEAM": "Add Agents to Team",
+    "EDIT_TEAM": "Edit Team",
+    "TYPE": "Type",
+    "TELEPHONES": "Telephones",
+    "CALLERID": "Caller ID",
+    "ENABLERECORDING": "Enable Recording",
+    "STAFF": "Staff",
+    "ID": "Id",
+    "NEW_USER": "New User",
+    "NEW_AGENT": "New Agent",
+    "NEW_TELEPHONE": "New Telephone",
+    "NEW_TEAM": "New Team",
+    "ADD_TEAM": "Add Team",
+    "JOIN_QUEUE": "Join Queue",
+    "CAPACITY": "Capacity",
+    "AUTOINTERNAL": "Auto generate internal number",
+    "ADD_AGENT_TO_TEAM": "Add Agent to Team",
+    "TEAMADD_AGENT": "Add Agent to Team",
+    "NO_AVAILABLE_INFO": "No available info",
+    "PERMISSIONS": "Permissions",
+    "ADD_AGENT_TO_QUEUE": "Add Agent to Queue",
+    "ALL_MODULES_AVAILABLE": "All modules available",
+    "CALLGROUP": "Call Group",
+    "PICKUPGROUP": "Pickup Group",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Add Agent to Queue Campaigns",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Add Agent to Voice Queues",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Add Agent to Chat Queues",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Add Agent to Email Queues",
+    "ADD_AGENT_TO_SMS_QUEUES": "Add Agent to SMS Queues",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Add Agent to WhatsApp Queues",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Add Agent to Open Channel Queues",
+    "ADD_AGENT_TO_FAX_QUEUES": "Add Agent to Fax Queues",
+    "QUEUEADD_USER_VOICE_INBOUND": "Add User to Voice Queues",
+    "QUEUEADD_USER_CHAT_INBOUND": "Add User to Chat Queues",
+    "QUEUEADD_USER_MAIL_INBOUND": "Add User to Email Queues",
+    "QUEUEADD_USER_SMS_INBOUND": "Add User to SMS Queues",
+    "QUEUEADD_USER_WHATSAPP_INBOUND": "Add User to WhatsApp Queues",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Add User to Open Channel Queues",
+    "QUEUEADD_USER_FAX_INBOUND": "Add User to Fax Queues",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "SELECTED_AGENTS": "Selected Agents",
+    "ALL_QUEUE_CAMPAIGNS": "All Queue Campaigns",
+    "SELECTED_QUEUE_CAMPAIGNS": "Selected Queue Campaigns",
+    "ALL_VOICE_QUEUES": "All Voice Queues",
+    "SELECTED_VOICE_QUEUES": "Selected Voice Queues",
+    "ALL_CHAT_QUEUES": "All Chat Queues",
+    "SELECTED_CHAT_QUEUES": "Selected Chat Queues",
+    "ALL_MAIL_QUEUES": "All Email Queues",
+    "SELECTED_MAIL_QUEUES": "Selected Email Queues",
+    "ALL_SMS_QUEUES": "All SMS Queues",
+    "SELECTED_SMS_QUEUES": "Selected SMS Queues",
+    "ALL_WHATSAPP_QUEUES": "All WhatsApp Queues",
+    "SELECTED_WHATSAPP_QUEUES": "Selected WhatsApp Queues",
+    "ALL_OPENCHANNEL_QUEUES": "All Open Channel Queues",
+    "SELECTED_OPENCHANNEL_QUEUES": "Selected Open Channel Queues",
+    "ALL_FAX_QUEUES": "All Fax Queues",
+    "SELECTED_FAX_QUEUES": "Selected Fax Queues",
+    "VOICEMAIL": "Voicemail",
+    "SHOWWEBCONTROL": "Typology",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "OF": "of",
+    "CALLFORWARDING": "Call Forwarding",
+    "DND": "Do not disturb during pause",
+    "UNANSWEREDCALLBADGE": "Show unanswered call badge",
+    "ENABLEDTMFTONE": "Enable Dtmf tones",
+    "AUTOANSWERDELAY": "Auto Answer Delay [s]",
+    "ENCRYPTION": "Encryption",
+    "CHANNELS": "Channels",
+    "CHAT": "Chat",
+    "SMS": "Sms",
+    "WHATSAPP": "WhatsApp Connector",
+    "OPENCHANNEL": "Open Channel",
+    "FAX": "Fax",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Add User to Queue Campaigns",
+    "MONITOREXTENSION": "Record calls to user extension",
+    "EDITPERMISSIONS": "Editing Permissions",
+    "READ_PERMISSION": "Read",
+    "EDIT_PERMISSION": "Edit",
+    "DELETE_PERMISSION": "Delete",
+    "GENERAL_PERMISSIONS": "General",
+    "ENABLEMESSENGER": "Enable Internal Messenger",
+    "OUTBOUNDPROXY": "Oubound Proxy",
+    "PHONE": "Phone",
+    "MOBILE": "Mobile",
+    "PREFIXREQUIRED": "Prefix Required",
+    "MANAGE_PERMISSIONS": "Manage Permissions",
+    "USERADD_VOICEQUEUES": "Add Voice Queue to User",
+    "ALL_VOICEQUEUES": "All Voice Queues",
+    "SELECTED_VOICEQUEUES": "Selected Voice Queues",
+    "USERADD_CHATQUEUES": "Add Chat Queue to User",
+    "ALL_CHATQUEUES": "All Chat Queues",
+    "SELECTED_CHATQUEUES": "Selected Email Queues",
+    "USERADD_MAILQUEUES": "Add Email Queue to User",
+    "ALL_MAILQUEUES": "All Email Queues",
+    "SELECTED_MAILQUEUES": "Selected Chat Queues",
+    "USERADD_SMSQUEUES": "Add SMS Queue to User",
+    "ALL_SMSQUEUES": "All SMS Queues",
+    "SELECTED_SMSQUEUES": "Selected SMS Queues",
+    "USERADD_WHATSAPPQUEUES": "Add Whataspp Queue to User",
+    "ALL_WHATSAPPQUEUES": "All Whataspp Queues",
+    "SELECTED_WHATSAPPQUEUES": "Selected WhatsApp Queues",
+    "USERADD_FAXQUEUES": "Add Fax Queue to User",
+    "ALL_FAXQUEUES": "All Fax Queues",
+    "SELECTED_FAXQUEUES": "Selected Fax Queues",
+    "USERADD_OPENCHANNELQUEUES": "Add Open Channel Queue to User",
+    "ALL_OPENCHANNELQUEUES": "All Open Channel Queues",
+    "SELECTED_OPENCHANNELQUEUES": "Selected Open Channel Queues",
+    "USERADD_PROJECTS": "Add Cally Square Project to User",
+    "ALL_PROJECTS": "All Cally Square Projects",
+    "SELECTED_PROJECTS": "Selected Cally Square Projects",
+    "USERADD_CHATWEBSITES": "Add Chat Website to User",
+    "ALL_CHATWEBSITES": "All Chat Websites",
+    "SELECTED_CHATWEBSITES": "Selected Chat Websites",
+    "USERADD_QUEUECAMPAIGNS": "Add Queue Campaign to User",
+    "ALL_QUEUECAMPAIGNS": "All Queue Campaigns",
+    "SELECTED_QUEUECAMPAIGNS": "Selected Queue Campaigns",
+    "USERADD_MAILACCOUNTS": "Add Email Account to User",
+    "ALL_MAILACCOUNTS": "All Email Accounts",
+    "SELECTED_MAILACCOUNTS": "Selected Email Accounts",
+    "USERADD_FAXACCOUNTS": "Add Fax Account to User",
+    "ALL_FAXACCOUNTS": "All Fax Accounts",
+    "SELECTED_FAXACCOUNTS": "Selected Fax Accounts",
+    "USERADD_SMSACCOUNTS": "Add SMS Account to User",
+    "ALL_SMSACCOUNTS": "All SMS Accounts",
+    "SELECTED_SMSACCOUNTS": "Selected SMS Accounts",
+    "USERADD_WHATSAPPACCOUNTS": "Add WhatsApp Account to User",
+    "ALL_WHATSAPPACCOUNTS": "All WhatsApp Accounts",
+    "SELECTED_WHATSAPPACCOUNTS": "Selected WhatsApp Accounts",
+    "USERADD_OPENCHANNELACCOUNTS": "Add Open Channel Account to User",
+    "ALL_OPENCHANNELACCOUNTS": "All Open Channel Accounts",
+    "SELECTED_OPENCHANNELACCOUNTS": "Selected Open Channel Accounts",
+    "USERPROFILES": "User Profiles",
+    "USERPROFILE": "User Profile",
+    "NEW_USERPROFILE": "New User Profile",
+    "ADD_USERPROFILE": "Add User Profile",
+    "EDIT_USERPROFILE": "Edit User Profile",
+    "CLONE_USERPROFILE": "Clone User Profile",
+    "DELETE_USERPROFILE": "Delete User Profile",
+    "CRUDPERMISSIONS": "Permission Type",
+    "SECTIONS": "Sections",
+    "MODULES": "Modules",
+    "SUMMARY": "Summary",
+    "REPORT_TYPE": "Report Type",
+    "PERMISSIONS_MANAGE": "Manage",
+    "PERMISSIONS_SECTION_TITLE": "{{sectionName}} Permissions",
+    "PERMISSIONS_AUTO_ASSOCIATION_INFO": "Automatically associate every current and future resource of this section to the User Profile",
+    "PERMISSIONS_PLACEHOLDER_SEARCH": "Search...",
+    "PERMISSIONS_SELECT_SECTION": "Select a section",
+    "PERMISSIONS_SELECT_REPORT_TYPE": "Select report type",
+    "PERMISSIONS_ALL_RESOURCES": "All resources",
+    "PERMISSIONS_SELECTED_RESOURCES": "Selected resources",
+    "PERMISSIONS_SECTION_HIDE": "Hide section to the User",
+    "PERMISSIONS_SECTION_SHOW": "Show section to the User",
+    "PERMISSIONS_WARNING_ENABLE_ALL": "All {{sectionName}} subsections and their resources will be enabled. Are you sure you want to continue?",
+    "PERMISSIONS_WARNING_CLOSE": "You have unsaved changes. Are you sure you want to exit without saving?",
+    "NOTIFICATIONS": {
+      "PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE": "{{sectionName}} section enabled",
+      "PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE": "All {{sectionName}} resources have been added to {{userProfileName}} User Profile",
+      "PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES": "{{sectionName}} has been added to {{userProfileName}} User Profile",
+      "PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE": "{{sectionName}} section disabled",
+      "PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE": "All {{sectionName}} resources have been removed from {{userProfileName}} User Profile",
+      "PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES": "{{sectionName}} has been removed from {{userProfileName}} User Profile",
+      "PERMISSIONS_SAVED_SUCCESS_TITLE": "{{sectionName}} section saved",
+      "PERMISSIONS_SAVED_SUCCESS_MESSAGE": "Permissions successfully updated!"
+    },
+    "CONFIRM": "Confirm",
+    "CANCEL": "Cancel",
+    "CLOSE": "Close",
+    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
+    "TEAMS_ASSOCIATION": "Teams Association",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unauthorized action",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "You are not allowed to access the selected section",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "You are not allowed to create the resource",
+    "MASK_SENSITIVE_DATA": "Mask Sensitive Data",
+    "WSS_PORT": "WSS Port",
+    "DOWNLOADS": "Downloads",
+    "DOWNLOAD_PERMISSIONS": "Download Permissions",
+    "VOICE_RECORDINGS": "Voice Recordings",
+    "OMNICHANNEL_INTERACTIONS": "Omnichannel Interactions",
+    "ATTACHMENTS": "Attachments",
+    "SCREEN_RECORDINGS": "Screen Recordings",
+    "JSCRIPTY_SESSIONS": "Jscripty Sessions",
+    "CONTACT_MANAGER_LISTS": "Contact Manager Lists",
+    "CALLYSQUARE_RECORDINGS": "Cally Square Recordings",
+    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignore agent break status for preview calls",
+    "SELECT_RECALLME_CAMPAIGN": "Select Recall Me Campaign"
+  }
+}
diff --git a/public/app/main/apps/tools/i18n/hu.json b/public/app/main/apps/tools/i18n/hu.json
new file mode 100644 (file)
index 0000000..6308cde
--- /dev/null
@@ -0,0 +1,505 @@
+{
+  "TOOLS": {
+    "VIDEOSUPPORT": "Video support",
+    "PREVIOUSCONTACT": "Previous",
+    "BOT": "Voicebot",
+    "CLONE_TRUNK": "Clone Trunk",
+    "DISPOSITIONS": "Dispositions",
+    "NEW_DISPOSITION": "New Disposition",
+    "ADD_DISPOSITION": "Add Disposition",
+    "EDIT_DISPOSITION": "Edit Disposition",
+    "DELETE_DISPOSITION": "Delete Disposition",
+    "RUN_SCHEDULE": "Run schedule",
+    "SENDIFEMPTY": "Send if empty",
+    "NEXTCONTACT": "Next",
+    "OUTBOUND_ROUTE": "Outbound Route",
+    "EDIT_DASHBOARDITEM": "Edit Dashboard Widget",
+    "FONTSIZE": "Font Size",
+    "TITLEFONTSIZE": "Font Title Size",
+    "CLONE_CUSTOMDASHBOARD": "Clone Custom Dashboard",
+    "LINK": "Link [https://]",
+    "BACKGROUND": "Background",
+    "FOREGROUND": "Foreground",
+    "IGNOREDIALERCONTACTID": "Ignore dialer contact Id",
+    "NONE": "None",
+    "TOTAL": "Total",
+    "ABANDONED": "Abandoned",
+    "WAITING": "Waiting",
+    "TALKING": "Talking",
+    "ANSWERED": "Answered",
+    "UNMANAGED": "Unmanaged",
+    "CUSTOMTYPE": "Custom [path]",
+    "WEBREPORT": "Web Report",
+    "PIECHART": "Pie Chart",
+    "MULTIBARCHART": "Multibar Chart",
+    "MOVE_WIDGET": "Move Widget",
+    "USERADD_CUSTOMDASHBOARD": "Add User Permissions",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Go to preview dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Go to preview dashboard",
+    "METRIC": "Metric",
+    "FILTERVOICEQUEUES": "Filter Voice Queues",
+    "SERIE1": "Serie 1",
+    "SERIE2": "Serie 2",
+    "SERIE3": "Serie 3",
+    "REFRESH": "Refresh [s]",
+    "FORMAT": "Format",
+    "PATH": "Absolute Path",
+    "ALL_USERS": "All Users",
+    "SELECTED_USERS": "Selected Users",
+    "ADD_WIDGET": "Add Widget",
+    "COLOR": "Color",
+    "FAX": "Fax",
+    "INTERACTION": "Interaction",
+    "MESSAGE": "Message",
+    "T38PT_UDPTL": "T38pt Udptl",
+    "CALL": "Call",
+    "NAME": "Name",
+    "TRUNKS": "Trunks",
+    "SEARCH_FOR_ANYONE": "Search",
+    "SCRIPT": "Script",
+    "SCRIPT_INFO": "Info",
+    "SCRIPT_TYPE": "Type",
+    "ERRORS": {
+      "INFO_REQUIRED": "Mandatory field",
+      "SCRIPT_REQUIRED": "Mandatory field",
+      "NAME_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "TITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "REFRESH_REQUIRED": "Mandatory field",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FONTSIZE_REQUIRED": "Mandatory field",
+      "PATH_REQUIRED": "Mandatory field",
+      "FORMAT_REQUIRED": "Mandatory field",
+      "REPORT_REQUIRED": "Mandatory field",
+      "TYPE_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "ACCOUNT_REQUIRED": "Mandatory field",
+      "IGNOREDIALERCONTACTID_REQUIRED": "Ignore dialer contact Id field is required",
+      "FIELD_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Mandatory field",
+      "HOST_REQUIRED": "Mandatory field",
+      "DEFAULTUSER_REQUIRED": "Mandatory field",
+      "CALLERID_REQUIRED": "Mandatory field",
+      "KEY_REQUIRED": "Mandatory field",
+      "CONFIRM_NOT_MATCH": "The Passwords don't match",
+      "VALIDITYSTART_REQUIRED": "Mandatory field",
+      "VALIDITYEND_REQUIRED": "Mandatory field",
+      "MONTHDAY_REQUIRED": "Mandatory field",
+      "HOUR_REQUIRED": "Mandatory field",
+      "CONTENT_REQUIRED": "Mandatory field",
+      "URL_REQUIRED": "Mandatory field",
+      "URL_MUST_VALID_URL": "Wrong format",
+      "APPLICATION_REQUIRED": "Mandatory field",
+      "ARGUMENTS_REQUIRED": "Mandatory field",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "POLLING_INTERVAL_REQUIRED": "Mandatory field",
+      "TITLE_REQUIRED": "Mandatory field",
+      "EMAILADDRESS_REQUIRED": "Mandatory field",
+      "EVENTVARIABLES_REQUIRED": "Mandatory field",
+      "INTEGRATION_REQUIRED": "Mandatory field",
+      "LIST_REQUIRED": "Mandatory field",
+      "TEMPLATE_REQUIRED": "Mandatory field",
+      "AUTOCREATECONTACT_REQUIRED": "Mandatory field",
+      "AUTOCREATE_FIELD_REQUIRED": "Mandatory field",
+      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
+      "QUEUE_REQUIRED": "Mandatory field",
+      "TIME_RANGE_TO_REQUIRED": "Mandatory field",
+      "WEEK_DAYS_TO_REQUIRED": "Mandatory field",
+      "MONTH_DAYS_TO_REQUIRED": "Mandatory field",
+      "MONTH_TO_REQUIRED": "Mandatory field",
+      "TIME_RANGE_FROM_INVALID": "Wrong Format",
+      "TIME_RANGE_TO_INVALID": "Wrong Format",
+      "ACTION_REQUIRED": "Mandatory field",
+      "CONFIGURATION_REQUIRED": "Mandatory field",
+      "PROJECT_REQUIRED": "Mandatory field",
+      "LOCATION_REQUIRED": "Mandatory field",
+      "OUTPUT_REQUIRED": "Mandatory field",
+      "REPORTTYPE_REQUIRED": "Mandatory field",
+      "REPORTFOLDER_REQUIRED": "Mandatory field",
+      "REPORTSUBFOLDER_REQUIRED": "Mandatory field",
+      "AGENT_REQUIRED": "Mandatory field",
+      "TIMEOUT_REQUIRED": "Mandatory field",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to"
+    },
+    "HOST": "Host",
+    "SECRET": "Secret",
+    "DEFAULTUSER": "Default User",
+    "DESCRIPTION": "Description",
+    "ADD_TRUNK": "Add Trunk",
+    "HELP": {
+      "SCRIPT_INFO": "Insert a description for the script",
+      "SCRIPT_TYPE": "Insert a typology for the script (eg. curl, bash...)",
+      "INFO": "Insert title",
+      "SCRIPT": "Insert script",
+      "T38PT_UDPTL": "Es: yes,redundancy,maxdatagram=400",
+      "SECRET": "Authentication password",
+      "HOST": "The domain or host name",
+      "DEFAULTUSER": "Authentication username",
+      "CALLERID": "The Caller ID, in the format \"name\" <number>",
+      "REGISTRY": "The registry string, if required by provider, usually defaultuser:secret@host",
+      "FROMDOMAIN": "Set default From:domain in SIP messages when acting as a SIP ua (client). Some destinations may require mandatory identity name instead of only the IP address",
+      "FROMUSER": "How your provider knows you. This is which user to put instead of callerid when placing calls to peer (another SIP proxy). Valid only for type=peer.",
+      "OUTBOUNDPROXY": "IP_address or DNS SRV name (excluding the _sip._udp prefix): SRV name, hostname, or IP address of the outbound SIP Proxy. Send outbound signaling to this proxy, not directly to the devices. Valid only for type=peer.",
+      "PORT": "The SIP port number",
+      "CONTEXT": "The context for the trunk",
+      "TYPE": "Determine the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above.",
+      "DTMFMODE": "How DTMF (Dual-Tone Multi-Frequency) are sent. RFC2833: the default mode, the DTMF are sent with RTP but outside the audio stream. INBAND: The DTMF is sent in audio stream of the current conversation, becoming audible from the speakers. Requires a high CPU load. INFO: Although this method is very reliable, it is not supported by all PBX devices and many SIP Trunks.",
+      "NAT": "Change the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore any other settings and set nat=no.",
+      "QUALIFY": "Determine when the SIP is achievable",
+      "ALLOWCODECS": "Allowed codecs in order of preference",
+      "INSECURE": "Specify how to handle connections with peer, allowing insecure settings",
+      "CALL_LIMIT": "The limit number of the inbound and outbound concurrent calls",
+      "DIRECTMEDIA": "Asterisk by default tries to redirect the RTP media stream to go directly from the caller to the callee. Some devices do not support this (especially if one of them is behind a NAT). The default setting is YES. If you have all clients behind a NAT, or for some other reason want Asterisk to stay in the audio path, you may want to turn this off.",
+      "CALLCOUNTER": "Enable call counters on devices",
+      "ADD_PHONE_TO_URI": "Define if the provider requires ';user=phone' on URL",
+      "TRUST_REMOTE_PARTY_ID": "Define if Remote-Party-ID should be trusted",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Define if Remote-Party-ID should be sent (defaults is no)",
+      "ENCRYPTION": "Whether to offer SRTP encrypted media (and only SRTP encrypted media) on outgoing calls to a peer. Calls will fail with HANGUPCAUSE=58 if the peer does not support SRTP. Defaults value is No",
+      "TRANSPORT": "Set the default transports, in order of preference",
+      "OTHERFIELDS": "Other fields to add in the trunks conf files. Follow default asterisk format (key=value), each field on a single row",
+      "EMAILADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "EMAILCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "EMAILBCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "EVENTVARIABLES": "If enabled, it adds all the event variables to the url (recommended value=No. Set to Yes only for evaluation purposes) ",
+      "HEADERS": "Note: Headers section must be in RAW JSON format {\"key\":\"value\"} \nNote: If not filled out, the default value will be sent",
+      "BODY": "Note: the body must be in RAW JSON format {\"key\":\"value\"} \nNote: If not filled out, the default value will be sent",
+      "TIMEOUT": "Request timeout in seconds. The value must be between 1 and 10 and the default value is 5."
+    },
+    "EDIT_TRUNK": "Edit Trunk",
+    "DELETE_TRUNK": "Delete Trunk",
+    "CREATED_AT": "Created At",
+    "SETTINGS": "Settings",
+    "ADVANCED": "Advanced",
+    "OTHER": "Other",
+    "ACTIVE": "Active",
+    "CONTEXT": "Context",
+    "CALLERID": "Caller ID",
+    "TYPE": "Type",
+    "DTMFMODE": "DTMF Mode",
+    "NAT": "NAT",
+    "QUALIFY": "Qualify",
+    "ALLOWCODECS": "Allowed Codecs",
+    "INSECURE": "Insecure",
+    "REGISTRY": "Registry",
+    "DIRECTMEDIA": "Direct Media",
+    "CALLCOUNTER": "Call Counter",
+    "FROMDOMAIN": "From Domain",
+    "FROMUSER": "From User",
+    "OUTBOUNDPROXY": "Outbound Proxy",
+    "ADD_PHONE_TO_URI": "Add Phone to URL",
+    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Send Remote Party ID Header",
+    "ENCRYPTION": "Encryption",
+    "PORT": "Port",
+    "TRANSPORT": "Transport",
+    "SAVE": "Save",
+    "VARIABLES": "Variables",
+    "ADD_VARIABLE": "Add Variable",
+    "EDIT_VARIABLE": "Edit Variable",
+    "DELETE_VARIABLE": "Delete Variable",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "TAGS": "Tags",
+    "ADD_TAG": "Add Tag",
+    "EDIT_TAG": "Edit Tag",
+    "DELETE_TAG": "Delete Tag",
+    "PAUSES": "Pauses",
+    "ADD_PAUSE": "Add Pause",
+    "EDIT_PAUSE": "Edit Pause",
+    "DELETE_PAUSE": "Delete Pause",
+    "CANNEDANSWERS": "Canned Answers",
+    "ADD_CANNEDANSWER": "Add Canned Answer",
+    "EDIT_CANNEDANSWER": "Edit Canned Answer",
+    "DELETE_CANNEDANSWER": "Delete Canned Answer",
+    "KEY": "Key",
+    "VALUE": "Value",
+    "SOUNDS": "Sounds",
+    "EDIT_SOUND": "Edit Sound",
+    "DELETE_SOUND": "Delete Sound",
+    "CANCEL": "Cancel",
+    "FINISH": "Finish",
+    "DROP_TO_UPLOAD": "Drop To Upload",
+    "UPLOADING": "Uploading",
+    "TRIGGERS": "Triggers",
+    "EDIT_TRIGGER": "Edit Trigger",
+    "DELETE_TRIGGER": "Delete Trigger",
+    "ADD_TRIGGER": "Add Trigger",
+    "DELETE": "Delete",
+    "AUTOMATIONS": "Automations",
+    "EDIT_AUTOMATION": "Edit Automation",
+    "DELETE_AUTOMATION": "Delete Automation",
+    "ADD_AUTOMATION": "Add Automation",
+    "INTERVALS": "Intervals",
+    "EDIT_INTERVAL": "Edit Interval",
+    "DELETE_INTERVAL": "Delete Interval",
+    "ADD_INTERVAL": "Add Interval",
+    "TOOLS": "Tools",
+    "ID": "Id",
+    "AUDIO": "Audio",
+    "DOWNLOAD_SOUND": "Download Sound",
+    "UPLOAD_SOUND": "Tools",
+    "CHANNEL": "Channel",
+    "NEW_TRIGGER": "New Trigger",
+    "GENERAL": "General",
+    "STATUS": "Status",
+    "CONDITIONS&ACTIONS": "Conditions & Actions",
+    "ALLCONDITIONS": "Meet all these conditions:",
+    "ANYCONDITIONS": "Meet any of these conditions:",
+    "ACTIONS": "Actions:",
+    "NEW_AUTOMATION": "New Automation",
+    "TIMEOUT": "Timeout",
+    "PEERSTATUS": "Peer Status",
+    "CALL_LIMIT": "Calls Limit",
+    "OTHERFIELDS": "Other Fields",
+    "NEW_VARIABLE": "New Variable",
+    "NEW_TAG": "New Tag",
+    "NEW_PAUSE": "New Pause",
+    "NEW_CANNEDANSWER": "New Canned Answer",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "NEW_TRUNK": "New Trunk",
+    "FROM": "From",
+    "TO": "To",
+    "WEEKDAY": "Week Day",
+    "MONTHDAY": "Month Day",
+    "MONTH": "Month",
+    "ALWAYS": "Always",
+    "MON": "Monday",
+    "TUE": "Tuesday",
+    "WED": "Wednesday",
+    "THU": "Thursday",
+    "FRI": "Friday",
+    "SAT": "Saturday",
+    "SUN": "Sunday",
+    "JAN": "January",
+    "FEB": "February",
+    "MAR": "March",
+    "APR": "April",
+    "MAY": "May",
+    "JUN": "June",
+    "JUL": "July",
+    "AUG": "August",
+    "SEP": "September",
+    "OCT": "October",
+    "NOV": "November",
+    "DEC": "December",
+    "PASSWORD": "Password",
+    "CUSTOMDASHBOARDS": "Custom Dashboards",
+    "NEW_CUSTOMDASHBOARD": "New Custom Dashboard",
+    "ADD_CUSTOMDASHBOARD": "Add Custom Dashboard",
+    "EDIT_CUSTOMDASHBOARD": "Edit Custom Dashboard",
+    "DELETE_CUSTOMDASHBOARD": "Delete Custom Dashboard",
+    "SCHEDULER": "Scheduler",
+    "NEW_SCHEDULE": "New Schedule",
+    "ADD_SCHEDULE": "Add Schedule",
+    "EDIT_SCHEDULE": "Edit Schedule",
+    "DELETE_SCHEDULE": "Delete Schedule",
+    "SENDMAIL": "Send Email",
+    "CONFIGURATION": "Configuration",
+    "MAIL": "Email",
+    "REPORTTYPE": "Report Type",
+    "REPORT": "Report",
+    "OUTPUT": "Output",
+    "EXECUTEON": "Execute On",
+    "REPORTRANGE": "Report Range",
+    "VALIDITYSTART": "Start Time",
+    "VALIDITYEND": "End Time",
+    "EXECUTEEVERY": "Execute every",
+    "ACCOUNT": "Account",
+    "EMAILADDRESS": "Email Address",
+    "EMAILCCADDRESS": "Cc",
+    "EMAILBCCADDRESS": "Bcc",
+    "CURRENTDAY": "Current Day",
+    "DAILY": "Daily",
+    "WEEKLY": "Weekly",
+    "MONTHLY": "Monthly",
+    "PREVIOUS_DAY": "Previous Day",
+    "LAST_SEVEN_DAYS": "Last Seven Days",
+    "LAST_THIRTY_DAYS": "Last Thirthy Days",
+    "LAST_MONTH": "Last Month",
+    "WEEKDAYS": "Week Days",
+    "HOUR": "Hour",
+    "DEFAULT": "Default",
+    "CSV": "CSV",
+    "PDF": "PDF",
+    "15MIN": "15 minutes",
+    "30MIN": "30 minutes",
+    "1H": "1 hour",
+    "VOICE": "Voice",
+    "CHAT": "Chat",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Open Channel",
+    "TEMPLATES": "Templates",
+    "EDIT_TEMPLATE": "Edit Template",
+    "DELETE_TEMPLATE": "Delete Template",
+    "NEW_TEMPLATE": "New Template",
+    "ADD_TEMPLATE": "Add Template",
+    "CONTENT": "Content",
+    "FIELD": "Field",
+    "NO_ANYCONDITION_AVAILABLE": "No Conditions available",
+    "NO_ALLCONDITION_AVAILABLE": "No Conditions available",
+    "NO_ACTION_AVAILABLE": "No Actions available",
+    "ACTION": "Action",
+    "EDIT_ANYCONDITION": "Edit Condition",
+    "DELETE_ANYCONDITION": "Delete Condition",
+    "NEW_ANYCONDITION": "New Condition",
+    "ADD_ANYCONDITION": "Add Condition",
+    "EDIT_ALLCONDITION": "Edit Condition",
+    "DELETE_ALLCONDITION": "Delete Condition",
+    "NEW_ALLCONDITION": "New Condition",
+    "ADD_ALLCONDITION": "Add Condition",
+    "EDIT_ACTION": "Edit Action",
+    "DELETE_ACTION": "Delete Action",
+    "NEW_ACTION": "New Action",
+    "ADD_ACTION": "Add Action",
+    "QUEUE": "Queue",
+    "CALL_STATUS": "Call Status",
+    "OUTBOUNDROUTE": "Outbound Route",
+    "MAIL_SUBSTATUS": "Email Substatus",
+    "EQUALS": "Equals",
+    "NOT_EQUALS": "Not Equals",
+    "CONTACT_MANAGER": "Contacts Manager",
+    "INTEGRATIONS": "Integrations",
+    "MOTIONBAR": "Motion Bar",
+    "JSCRIPTY": "Jscripty",
+    "URL_FORWARD": "URL Forward",
+    "WEB_POPUP": "Web Popup",
+    "LIST": "List",
+    "INTEGRATION": "Integration",
+    "TEMPLATE": "Template",
+    "URL": "URL",
+    "APPLICATION": "Application",
+    "ARGUMENTS": "Arguments",
+    "NO_APPS_AVAILABLE": "No applications available",
+    "NEW_INTERVAL": "New Interval",
+    "OPERATOR": "Operator",
+    "NO_INTERVALS_AVAILABLE": "No intervals available",
+    "YES": "Yes",
+    "NO": "No",
+    "SUBJECT": "Subject",
+    "NO_AVAILABLE_INFO": "No available info",
+    "BROWSER": "Browser",
+    "INTERVAL": "Interval",
+    "INFO": "Info",
+    "TIME_RANGE": "Time Range",
+    "WEEK_DAYS": "Week Days",
+    "MONTH_DAYS": "Month Days",
+    "MONTHS": "Months",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop audio files here to upload. Only MP3, WAV, GSM - Max. 15MB",
+    "POLLING_INTERVAL": "Polling Interval (seconds)",
+    "DASHBOARD": "Dashboard",
+    "NEW_DASHBOARDITEM": "New Dashboard Widget",
+    "COUNTER": "Counter",
+    "IFRAME": "IFrame",
+    "CLOCK": "Clock",
+    "ADD_DASHBOARDITEM": "Add Dashboard Widget",
+    "EDIT_WIDGET": "Edit Widget",
+    "DELETE_WIDGET": "Delete Widget",
+    "FLIP_WIDGET": "Flip Widget",
+    "TITLE": "Title",
+    "UPDATE": "Update",
+    "LAYOUT": "Layout",
+    "BACKGROUND_COLOR": "Background Color",
+    "FOREGROUND_COLOR": "Foreground Color",
+    "FOREGROUND_TITLE_COLOR": "Foreground Title Color",
+    "THEME": "Theme",
+    "LIGHT": "Light",
+    "DARK": "Dark",
+    "TIMEZONE": "TimeZone",
+    "DIGITAL_FORMAT": "Digital Date Format",
+    "TOOLS_QUERY": "Query",
+    "SELECT": "Select",
+    "WHERE": "Where",
+    "BACK": "Back",
+    "PROJECT": "Project",
+    "GOTOREALTIME_TRUNK": "Go To Realtime Trunk",
+    "GOTO_TRUNK": "Go To Trunk",
+    "CRON": "Cron",
+    "MINUTES": "Minutes",
+    "HOURLY": "Hourly",
+    "YEARLY": "Yearly",
+    "EVERY": "Every",
+    "MINUTE": "Minute",
+    "ON_SECOND": "On second",
+    "HOUR_ON_MINUTE": "Hour on minute",
+    "AND_SECOND": "And second",
+    "DAY_AT": "Day at",
+    "START_TIME": "Start Time",
+    "ON_THE": "On the",
+    "OF_EVERY": "Of every",
+    "MONTH_AT": "Month at",
+    "AT": "At",
+    "LAST": "Last",
+    "LASTUNIT": "Unit",
+    "MAILACCOUNT": "Email Account",
+    "OF": "of",
+    "PAST_THE_HOUR": "Past the hour",
+    "DAY": "Day",
+    "WEEK": "Week",
+    "YEAR": "Year",
+    "ON": "On",
+    "PAI": "P-Asserted-Identity",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "EVENTVARIABLES": "Event Variables",
+    "AUTOCREATECONTACT": "Create contact automatically",
+    "LOCATION": "Location",
+    "NEW_TAB": "New Tab",
+    "NEW_WINDOW": "New Window",
+    "MOTION_TAB": "New Agent Dashboard Tab",
+    "WINDOWWIDTH": "Window Width(px)",
+    "WINDOWHEIGHT": "Window Height(px)",
+    "BODY": "Body",
+    "REPORTFOLDER": "Report Folder",
+    "REPORTSUBFOLDER": "Report Subfolder",
+    "AGENT": "Agent",
+    "HEADERS": "Headers",
+    "WHATSAPP": "WhatsApp Connector",
+    "LEVEL": "Level",
+    "NOTIFICATIONS": {
+      "DISPOSITION_CREATED_SUCCESS_TITLE": "Disposition successfully created",
+      "DISPOSITION_SAVED_SUCCESS_TITLE": "Disposition successfully saved",
+      "DISPOSITION_DELETE_TITLE": "Are you sure want to delete the disposition?",
+      "DISPOSITION_DELETE_MESSAGE": "{{ name }} will be deleted",
+      "DISPOSITION_DELETE_MESSAGE_CHILDREN": "{{ name }} will be deleted with all its sub dispositions",
+      "DISPOSITION_DELETED_SUCCESS_TITLE": "Disposition successfully deleted",
+      "DISPOSITIONS_DELETE_TITLE": "Are you sure want to delete the selected dispositions?",
+      "DISPOSITIONS_DELETE_MESSAGE": "{{ total }} dispositions will be deleted",
+      "TRIGGER_CREATED_SUCCESS_TITLE": "Trigger successfully created",
+      "TRIGGER_SAVED_SUCCESS_TITLE": "Trigger successfully saved",
+      "TRIGGER_DELETE_TITLE": "Are you sure want to delete the trigger?",
+      "TRIGGER_DELETE_MESSAGE": "{{ name }} will be deleted",
+      "TRIGGER_DELETED_SUCCESS_TITLE": "Trigger successfully deleted",
+      "TRIGGERS_DELETE_TITLE": "Are you sure want to delete the selected triggers?",
+      "TRIGGERS_DELETE_MESSAGE": "{{ total }} triggers will be deleted",
+      "TRIGGERS_DELETED_SUCCESS_TITLE": "Triggers successfully deleted",
+      "ACTION_CREATED_SUCCESS_TITLE": "Action successfully created",
+      "ACTION_SAVED_SUCCESS_TITLE": "Action successfully saved",
+      "ACTION_DELETE_TITLE": "Are you sure want to delete the action?",
+      "ACTION_DELETED_SUCCESS_TITLE": "Action successfully deleted",
+      "ACTIONS_DELETE_TITLE": "Are you sure want to delete the selected actions?",
+      "ACTIONS_DELETE_MESSAGE": "{{ total }} actions will be deleted",
+      "ACTIONS_DELETED_SUCCESS_TITLE": "Actions successfully deleted",
+      "CONDITION_CREATED_SUCCESS_TITLE": "Condition successfully created",
+      "CONDITION_SAVED_SUCCESS_TITLE": "Condition successfully saved",
+      "CONDITION_DELETE_TITLE": "Are you sure want to delete the condition?",
+      "CONDITION_DELETED_SUCCESS_TITLE": "Condition successfully deleted",
+      "CONDITIONS_DELETE_TITLE": "Are you sure want to delete the selected conditions?",
+      "CONDITIONS_DELETE_MESSAGE": "{{ total }} conditions will be deleted",
+      "CONDITIONS_DELETED_SUCCESS_TITLE": "Conditions successfully deleted"
+    },
+    "ALL_DISPOSITIONS": "All dispositions",
+    "SELECT_LEVEL": "Select a level",
+    "ALL": "All",
+    "FIRST_LEVEL_DISPOSITION": "First Level Disposition",
+    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
+    "SEARCH_FIELDS": "Search fields",
+    "AUTOCREATE_FIELD": "Autocreate field",
+    "STANDARD": "Standard",
+    "GLOBALS": "Globals",
+    "MOTION_BAR": "Motion Bar"
+  }
+}
diff --git a/public/app/main/apps/video/i18n/hu.json b/public/app/main/apps/video/i18n/hu.json
new file mode 100644 (file)
index 0000000..81b9c5c
--- /dev/null
@@ -0,0 +1,40 @@
+{
+  "VIDEO": {
+    "VIDEO": "Video",
+    "SCREENRECORDINGS": "Screen Recordings",
+    "SEARCH_FOR_ANYONE": "Search",
+    "INTERACTIONID": "Interaction ID",
+    "CHANNEL": "Channel",
+    "AGENT": "Agent",
+    "RATING": "Rating",
+    "NO_RATING": "No Rating",
+    "RECORDSTARTTIME": "Record Start Time",
+    "RECORDENDTIME": "Record End Time",
+    "DURATION": "Duration",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "OF": "of",
+    "NO_AVAILABLE_INFO": "No Available Info",
+    "EDIT_SCREENRECORDING": "Rate Screen Recording",
+    "PLAY_SCREENRECORDING": "Play Screen Recording",
+    "DOWNLOAD_SCREENRECORDING": "Download Screen Recording",
+    "DELETE_SCREENRECORDING": "Delete Screen Recording",
+    "CANT_DOWNLOAD_THIS_FILE": "Can't download this file",
+    "WRONG_EXTENSION": "The file presents the wrong extension",
+    "FILE_NOT_FOUND": "File not found",
+    "SAVE": "Save",
+    "DELETE": "Delete",
+    "UPDATEDAT": "Last Update",
+    "PROPERTIES": "Properties",
+    "FORMAT": "Format",
+    "STARTEDAT": "Record Start Time",
+    "CLOSEDAT": "Record End Time",
+    "CREATEDAT": "Created at",
+    "ID": "Id",
+    "AGENTNAME": "Agent",
+    "CANT_PLAY_THIS_FILE": "Can't play this type of file",
+    "LEGEND": {},
+    "ERRORS": {},
+    "HELP": {}
+  }
+}
diff --git a/public/app/main/apps/voice/i18n/hu.json b/public/app/main/apps/voice/i18n/hu.json
new file mode 100644 (file)
index 0000000..28d2655
--- /dev/null
@@ -0,0 +1,507 @@
+{
+  "VOICE": {
+    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
+    "THIRD_LEVEL_DISPOSITION": "Third Level Disposition",
+    "FAILUREREASON": "Failure reason",
+    "TEXT": "Text",
+    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Download Transcript",
+    "INBOUND": "Inbound",
+    "OUTBOUND": "Outbound",
+    "DIALER": "Dialer",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "ABANDONEDCALLS": "Abandoned Queue Calls",
+    "WAITING_FOR_AGENTS": "Waiting for agents",
+    "ACTIVE": "Active",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "PARTIALPAUSE": "Partial Pause",
+    "STATUS": "Status",
+    "TIMER": "Timer",
+    "ALIAS": "Alias",
+    "ALL": "All",
+    "IDLE": "Idle",
+    "EDIT_TRUNK": "Edit Trunk",
+    "GOTO_VOICEQUEUE": "Go To Realtime Voice Queues",
+    "GOTOREALTIME_VOICEQUEUE": "Go To Realtime Voice Queues",
+    "NAME": "Name",
+    "LOGOUT": "Logout",
+    "VOICEQUEUES": "Voice Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
+    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
+    "EDIT_VOICEQUEUE": "Edit Voice Queue",
+    "DELETE_VOICEQUEUE": "Delete Voice Queue",
+    "MOHSOUNDS": "Moh Sounds",
+    "STRATEGY": "Strategy",
+    "DESCRIPTION": "Description",
+    "ADD_VOICEQUEUE": "Add Voice Queue",
+    "CREATED_AT": "Created At",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Can't play gsm or wav49 audio files",
+    "APPLICATIONS_LIST": "Applications List",
+    "GENERAL": "General",
+    "TIMEOUT": "Timeout",
+    "MAXLENGTH": "Maximum Length",
+    "RETRY": "Retry",
+    "WRAPUPTIME": "Wrapup Time",
+    "WEIGHT": "Weight",
+    "JOINWHENEMPTY": "Join when empty",
+    "LEAVEWHENEMPTY": "Leave when empty",
+    "MUSICONHOLD": "Music On Hold",
+    "ANNOUNCETOAGENT": "Announce To Agent",
+    "ANNOUNCEMENTS": "Announcements",
+    "ADVANCED": "Advanced",
+    "ANNOUNCEFREQUENCY": "Announce Frequency",
+    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
+    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
+    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
+    "ANNOUNCEHOLDTIME": "Announce Hold Time",
+    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
+    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
+    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
+    "PERIODICANNOUNCE": "Periodic Announce",
+    "HOLDTIMEANNOUNCE": "Hold Time Announce",
+    "YOUARENEXTANNOUNCE": "'You are next' Announce",
+    "THEREAREANNOUNCE": "'There are' Announce",
+    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
+    "MINUTESANNOUNCE": "Minutes Announce",
+    "MINUTEANNOUNCE": "Minute Announce",
+    "SECONDSANNOUNCE": "Seconds Announce",
+    "THANKYOUANNOUNCE": "'Thank You' Announce",
+    "AUTOPAUSE": "Auto Pause",
+    "AFTERCALLWORK": "After Call Work",
+    "AFTERCALLWORKDURATION": "After Call Work Duration",
+    "RINGINUSE": "Ring In Use",
+    "MEMBERDELAY": "Member Delay",
+    "TIMEOUTRESTART": "Timeout Restart",
+    "MONITORFORMAT": "Recording Format",
+    "SETINTERFACEVARIABLES": "Set Interface Variables",
+    "SETQUEUEVARIABLES": "Set Queue Variables",
+    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
+    "VARIABLE": "Variable",
+    "CONTEXT": "Context",
+    "SAVE": "Save",
+    "SETTINGS": "Settings",
+    "INBOUNDROUTES": "Inbound Routes",
+    "PHONENUMBER": "Phone Number",
+    "ADD_INBOUNDROUTE": "Add Inbound Route",
+    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
+    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
+    "ACTIONS": "Actions",
+    "OUTBOUNDROUTES": "Outbound Routes",
+    "DESTINATIONPATTERN": "Destination Pattern",
+    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
+    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
+    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
+    "CUTDIGITS": "Cut Digits",
+    "RECORDING": "Recording",
+    "RECORDINGFORMAT": "Recording format",
+    "INTERNALROUTES": "Internal Routes",
+    "ADD_INTERNALROUTE": "Add Internal Route",
+    "EDIT_INTERNALROUTE": "Edit Internal Route",
+    "DELETE_INTERNALROUTE": "Delete Internal Route",
+    "CONTEXTS": "Contexts",
+    "ADD_CONTEXT": "Add Context",
+    "EDIT_CONTEXT": "Edit Context",
+    "DELETE_CONTEXT": "Delete Context",
+    "VOICEMAILS": "Voicemails",
+    "ADD_VOICEMAIL": "Add Voicemail",
+    "EDIT_VOICEMAIL": "Edit Voicemail",
+    "DELETE_VOICEMAIL": "Delete Voicemail",
+    "FULLNAME": "Full Name",
+    "EMAIL": "Email",
+    "MAILBOX": "Mailbox",
+    "PASSWORD": "Password",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "TIMEZONE": "Timezone",
+    "ATTACH": "Attach",
+    "ENVELOPE": "Envelope",
+    "DELETE": "Delete",
+    "EMAILBODY": "Email Body",
+    "EMAILSUBJECT": "Email Subject",
+    "MAXSECONDS": "Max Seconds",
+    "MAXMESSAGES": "Max Messages",
+    "MESSAGES": "Messages",
+    "SORT": "Sort",
+    "ADD_MUSICONHOLD": "Add Music On Hold",
+    "MUSICONHOLDS": "Music On Hold",
+    "EDIT_MUSICONHOLD": "Edit Music On Hold",
+    "DELETE_MUSICONHOLD": "Delete Music On Hold",
+    "DIRECTORY": "Directory",
+    "AUDIOFILES": "Audio Files",
+    "RECORDINGS": "Recordings",
+    "CHANSPY": "ChanSpy",
+    "PREFIX": "Prefix",
+    "OPTIONS": "Options",
+    "AUTH": "Auth",
+    "ADD_CHANSPY": "Add ChanSpy",
+    "EDIT_CHANSPY": "Edit ChanSpy",
+    "DELETE_CHANSPY": "Delete ChanSpy",
+    "AGENTS": "Agents",
+    "TELEPHONES": "Telephones",
+    "QUEUES": "Queues",
+    "QUEUE_CALLS": "Queue Calls",
+    "QUEUE_PARAMETERS": "Queue Parameters",
+    "ABANDONED_CALLS": "Abandoned Calls",
+    "OUTBOUND_CALLS": "Outbound Calls",
+    "AGI": "Agi",
+    "DIAL": "Dial",
+    "CALLYSQUARE": "CallySquare",
+    "INTERNALDIAL": "Internal Dial",
+    "EXTERNALDIAL": "External Dial",
+    "RINGGROUP": "Ring Group",
+    "PLAYBACK": "Playback",
+    "QUEUE": "Queue",
+    "SET": "Set",
+    "VOICEMAIL": "Voicemail",
+    "GOTO": "GoTo",
+    "HANGUP": "Hangup",
+    "CUSTOM": "Custom",
+    "PROJECT": "Cally-Square Project",
+    "TECHNOLOGY/RESOURCE": "Technology/Resource",
+    "URL": "URL",
+    "EDIT_APP": "Edit Application",
+    "EDIT_INTERVAL": "Edit Interval",
+    "DELETE_APP": "Delete Application",
+    "INTERVALS": "Intervals",
+    "USER": "User",
+    "TRUNK": "Trunk",
+    "PHONE": "Phone",
+    "AUDIO_FILES": "Audio Files",
+    "ANNOUNCE_OVERRIDES": "Announce Overrides",
+    "MACRO": "Macro",
+    "GOSUB": "GoSub",
+    "RULE": "Rule",
+    "POSITION": "Position",
+    "ANSWER": "Answer",
+    "VALUE": "Value",
+    "MAILBOX@CONTEXT": "Mailbox@Context",
+    "EXTENSION": "Extension",
+    "PRIORITY": "Priority",
+    "HANGUP_CAUSE": "Hangup Cause",
+    "OUTBOUNDDIAL": "Outbound Dial",
+    "CALLER_ID": "Caller ID",
+    "NO_MESSAGE_AVAILABLE": "No messages available",
+    "NO_SOUND_AVAILABLE": "No sounds available",
+    "VOICERECORDINGS": "Voice Recordings",
+    "CHANSPIES": "ChanSpy",
+    "VOICE": "Voice",
+    "REALTIME": "Realtime",
+    "ID": "Id",
+    "VOICEMAIL_CONTEXT": "Context",
+    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
+    "FILE": "File",
+    "ADD_MOHSOUND": "Add Music On Hold sound",
+    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
+    "DELETE_MOHSOUND": "Delete Music On Hold sound",
+    "UNIQUEID": "Unique ID",
+    "AGENT": "Agent",
+    "TYPE": "Type",
+    "RATING": "Rating",
+    "AUDIO": "Audio",
+    "DATE": "Date",
+    "NEW_VOICEQUEUE": "New Voice Queue",
+    "NEW_INBOUNDROUTE": "New Inbound Route",
+    "NEW_OUTBOUNDROUTE": "New Outbound Route",
+    "NEW_INTERNALROUTE": "New Internal Route",
+    "NEW_CONTEXT": "New Context",
+    "NEW_VOICEMAIL": "New Voicemail",
+    "NEW_MUSICONHOLD": "New Music On Hold",
+    "NEW_CHANSPY": "New ChanSpy",
+    "PENALTY": "Penalty",
+    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
+    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
+    "EDIT_DIAL": "Edit Dial",
+    "EDIT_AGI": "Edit AGI",
+    "EDIT_INTERNALDIAL": "Edit Internal Dial",
+    "EDIT_EXTERNALDIAL": "Edit External Dial",
+    "EDIT_RINGGROUP": "Edit Ring Group",
+    "EDIT_PLAYBACK": "Edit Playback",
+    "EDIT_QUEUE": "Edit Queue",
+    "EDIT_SET": "Edit Set",
+    "EDIT_GOTO": "Edit GoTo",
+    "EDIT_HANGUP": "Edit Hangup",
+    "EDIT_CUSTOM": "Edit Custom",
+    "DURATION": "Duration",
+    "RECEIVED_AT": "Received At",
+    "YES": "Yes",
+    "NO": "No",
+    "HANGUPCAUSE_1": "1 = Unallocated number",
+    "HANGUPCAUSE_16": "16 = Normal call clearing",
+    "HANGUPCAUSE_17": "17 = User busy",
+    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
+    "HANGUPCAUSE_21": "21 = Call rejected",
+    "HANGUPCAUSE_22": "22 = Number changed",
+    "HANGUPCAUSE_27": "27 = Destination out of order",
+    "HANGUPCAUSE_38": "38 = Network out of order",
+    "HANGUPCAUSE_41": "41 = Temporary failure",
+    "RANDOM": "Random",
+    "ALPHABETICAL": "Alphabetical",
+    "NO_APPS_AVAILABLE": "No applications available",
+    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
+    "DELETE_VOICERECORDING": "Delete Voice Recording",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "TRUNK_STATUS": "Trunk Status",
+    "REGISTERED": "Registered",
+    "UNREGISTERED": "Unregistered",
+    "LAGGED": "Lagged",
+    "REACHABLE": "Reachable",
+    "UNREACHABLE": "Unreachable",
+    "UNKNOWN": "Unknown",
+    "NOT_INUSE": "Not In Use",
+    "INUSE": "In Use",
+    "BUSY": "Busy",
+    "INVALID": "Invalid",
+    "UNAVAILABLE": "Unavailable",
+    "RINGING": "Ringing",
+    "ONHOLD": "On Hold",
+    "RING": "Ring",
+    "UP": "Up",
+    "INFO": "Info",
+    "TRUNKS": "Trunks",
+    "REGISTRY": "Registry",
+    "NO_REGISTRY": "No Registry",
+    "LOGGED_IN": "Logged In (SIP Connected)",
+    "PAUSED": "Paused",
+    "WAITING": "Waiting",
+    "TALKING": "Talking",
+    "DID": "DID",
+    "CALLER": "Caller",
+    "TOTAL": "Total",
+    "ANSWERED": "Answered",
+    "ABANDONED": "Abandoned",
+    "UNMANAGED": "Unmanaged",
+    "AVG_HOLD_TIME": "Avg Hold Time",
+    "AVG_DURATION": "Av Duration",
+    "AVG_BILLABLE": "Avg Billable",
+    "SOURCE": "Source",
+    "DESTINATION": "Destination",
+    "REJECTED": "Rejected",
+    "FAILED": "Failed",
+    "CALLED": "Called",
+    "CONNECTED": "Connected",
+    "NO_RATING": "No rating",
+    "EDIT_VOICERECORDING": "Edit Voice Recording",
+    "APPLICATION_NAME": "Application Name",
+    "ARGUMENTS": "Arguments",
+    "NO_AVAILABLE_INFO": "No Available Info",
+    "ADD_AGENT_TO_QUEUE": "Add Agent To Queue",
+    "DEFAULT_PAUSE": "DEFAULT PAUSE",
+    "PAUSE": "Pause",
+    "UNPAUSE": "End Pause",
+    "REDIRECT_TO_NUMBER": "Redirect To Number",
+    "REDIRECT_TO_AGENT": "Redirect To Agent",
+    "AGENTADD_VOICEQUEUE": "Add Agent To Voice Queue",
+    "APPLICATION": "Application",
+    "FILES": "Files",
+    "FORMAT": "Format",
+    "MODE": "Mode",
+    "RECORD": "Record",
+    "TEAMADD_VOICEQUEUE": "Add Team To Voice Queue",
+    "NEW_MOHSOUND": "New Music On Hold sound",
+    "DOWNLOAD_MESSAGE": "Download",
+    "DELETE_MESSAGE": "Delete",
+    "QUEUE_PARAMS": "Queue Parameters",
+    "TOTAL_OFFERED": "Total Offered",
+    "READY": "Ready",
+    "AGENTADD_QUEUE": "Add Agent To Voice Queue",
+    "AGENTSADD_QUEUE": "Add Agents To Voice Queue",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "CLOSING": "Closing",
+    "TAGS": "Tags",
+    "WAITING_FOR_AGENT": "Waiting For Agents",
+    "EDIT_OUTBOUNDDIAL": "Edit Outbound Dial",
+    "ACCOUNTNAME": "Account Name",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "OF": "of",
+    "DISPOSITION": "Disposition",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Open Channel",
+    "FAX": "Fax",
+    "CLEAR": "Clear",
+    "CALLS": "Calls",
+    "STARTEDAT": "Started At",
+    "ENDEDAT": "Ended At",
+    "TAG": "Tag",
+    "DETAILS": "Details",
+    "BILLABLESECONDS": "Billable seconds",
+    "ANSWEREDAT": "Answered At",
+    "NOTE": "Note",
+    "CLOSE": "Close",
+    "SELECT_DATE": "Select Start Date",
+    "SELECT_TYPE": "Select Type",
+    "VOICEPREFIXES": "Out Prefixes",
+    "NEW_VOICEPREFIX": "New Prefix",
+    "ADD_VOICEPREFIX": "Add Prefix",
+    "EDIT_VOICEPREFIX": "Edit Prefix",
+    "AGENTADD_VOICEPREFIX": "Add Agent to Prefix",
+    "TEAMADD_VOICEPREFIX": "Add Team to Prefix",
+    "DELETE_VOICEPREFIX": "Delete Prefix",
+    "OUTBOUNDROUTE": "Outbound Route",
+    "CALLERIDALL": "Caller Id",
+    "MANDATORYDISPOSITION": "Mandatory disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Mandatory disposition pause status",
+    "SCREENRECORDING": "Manage Screen Recording",
+    "START_SCREENRECORDING": "Start Screen Recording",
+    "STOP_SCREENRECORDING": "Stop Screen Recording",
+    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
+    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
+    "CANT_DOWNLOAD_THIS_FILE": "Can't download this file",
+    "WRONG_EXTENSION": "The file presents the wrong extension",
+    "FILE_NOT_FOUND": "File not found",
+    "TEAMS_ASSOCIATION": "Teams Association",
+    "TRANSCRIBE": "Transcribe",
+    "TRANSCRIPT": "Transcript",
+    "SENTIMENTANALYSIS": "Sentiment Analysis",
+    "TRANSCRIBESTATUS_COMPLETED": "Completed",
+    "TRANSCRIBESTATUS_IN_PROGRESS": "In progress",
+    "TRANSCRIBESTATUS_FAILED": "Failed",
+    "TRANSCRIBESTATUS_NEW": "New",
+    "TRANSCRIPTANALYSIS": "Transcript & Analysis",
+    "SENTIMENT_POSITIVE": "Positive",
+    "SENTIMENT_NEGATIVE": "Negative",
+    "SENTIMENT_NEUTRAL": "Neutral",
+    "SENTIMENT_MIXED": "Mixed",
+    "RUNTRANSCRIBE_VOICERECORDING": "Run Transcribe",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Run Transcribe&Sentiment",
+    "RUNSENTIMENT_VOICERECORDING": "Run Sentiment",
+    "SENTIMENT": "Sentiment",
+    "SERVICELEVEL": "Service level",
+    "MAXCAPACITY": "Max capacity",
+    "WORKING": "Working",
+    "LEGEND": {
+      "CUSTOM_APPLICATION": "(*) - Custom application"
+    },
+    "ERRORS": {
+      "PROJECT_REQUIRED": "Mandatory field",
+      "TRUNK_REQUIRED": "Mandatory field",
+      "VARIABLE_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Mandatory field",
+      "APPLICATION_NAME_REQUIRED": "Mandatory field",
+      "TIMEOUT_REQUIRED": "Mandatory field",
+      "PHONENUMBER_REQUIRED": "Mandatory field",
+      "CONTEXT_REQUIRED": "Mandatory field",
+      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
+      "FULLNAME_REQUIRED": "Mandatory field",
+      "EMAIL_REQUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "MAILBOX_REQUIRED": "Mandatory field",
+      "PASSWORD_REQUIRED": "Mandatory field",
+      "CONFIRM_NOT_MATCH": "The passwords don't match",
+      "TIMEZONE_REQUIRED": "Mandatory field",
+      "PREFIX_REQUIRED": "Mandatory field",
+      "OPTIONS_REQUIRED": "Mandatory field",
+      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
+      "PHONE_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "EXTENSION_REQUIRED": "Mandatory field",
+      "PRIORITY_REQUIRED": "Mandatory field",
+      "APPLICATION_REQUIRED": "Mandatory field",
+      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "NAME_MUST_VALID_PATTERN": "Wrong format",
+      "CALLERIDALL_MUST_VALID_PATTERN": "Wrong format",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
+      "CALLER_ID_MUST_VALID_PATTERN": "Wrong format",
+      "PENALTY_REQUIRED": "You must specify a value for penalty"
+    },
+    "HELP": {
+      "TIMEOUT": "How many seconds to ring a device",
+      "MAXLENGTH": "Maximum number of callers allowed to wait in a queue: zero means unlimited",
+      "RETRY": "Time in seconds to wait before calling the next agent in queue when the timeout is expired",
+      "WRAPUPTIME": "Time in seconds to keep a queue member unavailable after completing a call",
+      "WEIGHT": "Weight of a queue in order to define priority if members are associated with multiple queues",
+      "JOINWHENEMPTY": "Used to control whether a caller is passed to a queue when no members are available",
+      "LEAVEWHENEMPTY": "Used to control whether callers are made leave the queue when no members are available to take calls",
+      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (zero to disable)",
+      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
+      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
+      "ANNOUNCEPOSITIONLIMIT": "Used if announce-position is defined as either 'limit' or 'more'",
+      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
+      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
+      "MUSICONHOLD": "Sets the music class to use for a particular queue",
+      "ANNOUNCETOAGENT": "Play an announcement to the agent answering the call (typically to let him know what queue the caller is coming from)",
+      "RANDOMPERIODICANNOUNCE": "If yes, the defined periodic announcements will be played random",
+      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
+      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
+      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
+      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
+      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
+      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
+      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
+      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
+      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
+      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
+      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
+      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
+      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
+      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled it causes the agent to be paused in all queues he belongs to",
+      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
+      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
+      "MONITORFORMAT": "Specifies the format of the recording file. If it set to 'inactive', calls will not be recorded",
+      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
+      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs)",
+      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs)",
+      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs)",
+      "RECORDING": "Enable call recording",
+      "VOICEMAIL_CONTEXT": "The context of the relative extension",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "CALLERIDALL": "Supported format: \"CallerId\" &lt;number&gt;",
+      "CALLER_ID": "Supported format: \"CallerId\" &lt;number&gt;",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition",
+      "SERVICELEVEL": "Second settings for service level (default=0, no SL). Used for service level statistics (calls answered within service level time frame)",
+      "SAVE_ROUTES": "The routing has been modified. Remember to save if you don't want to lose your changes."
+    },
+    "NOTIFICATIONS": {
+      "EXTENSION_CREATED_SUCCESS_TITLE": "Route successfully created",
+      "EXTENSION_SAVED_SUCCESS_TITLE": "Route successfully saved",
+      "EXTENSION_DELETE_TITLE": "Are you sure want to delete the route?",
+      "EXTENSION_DELETE_MESSAGE": "{{ name }} will be deleted",
+      "EXTENSION_DELETED_SUCCESS_TITLE": "Route successfully deleted",
+      "EXTENSIONS_DELETE_TITLE": "Are you sure want to delete the selected routes?",
+      "EXTENSIONS_DELETE_MESSAGE": "{{ total }} routes will be deleted",
+      "ROUTING_APPLICATION_DELETE_TITLE": "Are you sure want to delete the application?",
+      "ROUTING_APPLICATION_DELETE_MESSAGE": "{{ name }} will be deleted",
+      "ROUTING_APPLICATIONS_DELETE_TITLE": "Are you sure want to delete the selected applications?",
+      "ROUTING_APPLICATIONS_DELETE_MESSAGE": "{{ total }} applications will be deleted",
+      "CALLYSQUARE_PROJECTS_GET_ERROR": "Unable to retrieve any CallySquare project",
+      "TRUNKS_GET_ERROR": "Unable to retrieve any trunk",
+      "VOICE_CONTEXTS_GET_ERROR": "Unable to retrieve any voice context",
+      "QUEUES_GET_ERROR": "Unable to retrieve any queue",
+      "SOUNDS_GET_ERROR": "Unable to retrieve any sound",
+      "USERS_GET_ERROR": "Unable to retrieve any user",
+      "VARIABLES_GET_ERROR": "Unable to retrieve any variable",
+      "VOICEMAILS_GET_ERROR": "Unable to retrieve any voicemail",
+      "TAGS_GET_ERROR": "Unable to retrieve any tag",
+      "INTERVALS_GET_ERROR": "Unable to retrieve any interval"
+    }
+  }
+}
diff --git a/public/app/main/apps/whatsapp/i18n/hu.json b/public/app/main/apps/whatsapp/i18n/hu.json
new file mode 100644 (file)
index 0000000..2d8b1f5
--- /dev/null
@@ -0,0 +1,247 @@
+{
+  "WHATSAPP": {
+    "EDIT_DIALOGFLOWV2": "Edit Dialogflow V2",
+    "DIALOGFLOWV2": "Dialogflow V2",
+    "PRIVATEKEY": "Private Key",
+    "CLIENTEMAIL": "Client Email",
+    "PROJECTID": "Project ID",
+    "ACCESSKEYID": "Access Key ID",
+    "ACCOUNTSID": "Account SID",
+    "ACTIONS": "Actions",
+    "ADD_NOTE": "Add note",
+    "ADD_WHATSAPPACCOUNT": "Add",
+    "ADD_WHATSAPPCANNEDANSWER": "Add Canned Answer",
+    "ADD_WHATSAPPDISPOSITION": "Add WhatsApp Disposition",
+    "ADD_WHATSAPPQUEUE": "Add WhatsApp queue",
+    "ADVANCED": "Advanced",
+    "AGENT": "Agent",
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "AGENTADD_QUEUE": "Add Agent To WhatsApp Queue",
+    "AGENTADD_WHATSAPPACCOUNT": "Add Agent To WhatsApp Account",
+    "AGENTADD_WHATSAPPQUEUE": "Add Agent To WhatsApp Queue",
+    "AGENTS": "Agents",
+    "AGENTSADD_QUEUE": "Add agents to WhatsApp queue",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "ALL": "All",
+    "ALL_AGENTS": "All Agents",
+    "ALL_TEAMS": "All Teams",
+    "AMAZONLEX": "AmazonLex",
+    "AUTHTOKEN": "Auth Token",
+    "AUTOREPLY": "Auto Reply",
+    "BACK": "Back",
+    "BASEURL": "Base URL",
+    "BOTNAME": "Bot Name",
+    "BUSY": "Busy",
+    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
+    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
+    "CANNEDANSWERS": "Canned Answers",
+    "CAPACITY": "Capacity",
+    "CLOSE": "Close",
+    "CLOSED": "Closed",
+    "CLOSEMETHOD": "Close Method",
+    "CLOSEURL": "Close URL",
+    "COMMAND": "Command",
+    "CONDITION": "Condition",
+    "CONTACT": "Contact",
+    "CREATED_AT": "Created at",
+    "DEFAULT_PAUSE": "DEFAULT PAUSE",
+    "DELETE": "Delete",
+    "DELETE_INTERACTION": "Delete Interaction",
+    "DELETE_SELECTED": "Delete selected",
+    "DELETE_WHATSAPPACCOUNT": "Delete WhatsApp Account",
+    "DELETE_WHATSAPPCANNEDANSWER": "Deleted",
+    "DELETE_WHATSAPPDISPOSITION": "Delete WhatsApp Disposition",
+    "DELETE_WHATSAPPQUEUE": "Delete WhatsApp Queue",
+    "DESCRIPTION": "Description",
+    "DIALOGFLOW": "DialogFlow",
+    "DISPOSITION": "Disposition",
+    "DISPOSITIONS": "Dispositions",
+    "DOWNLOAD_INTERACTION": "Download",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Download With Attachments",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download Without Attachments",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_AMAZONLEX": "Edit Lex configuration",
+    "EDIT_AUTOREPLY": "Edit Auto Reply",
+    "EDIT_CLOSE": "Edit Close",
+    "EDIT_DIALOGFLOW": "Edit DialogFlow configuration",
+    "EDIT_GOTOIF": "Edit Gotoif",
+    "EDIT_GOTOP": "Edit Gotop",
+    "EDIT_NOOP": "Edit Noop",
+    "EDIT_QUEUE": "Edit Queue",
+    "EDIT_SYSTEM": "Edit System",
+    "EDIT_TAG": "Edit Tag",
+    "EDIT_WHATSAPPACCOUNT": "Edit WhatsApp Account",
+    "EDIT_WHATSAPPCANNEDANSWER": "Edit",
+    "EDIT_WHATSAPPDISPOSITION": "Edit WhatsApp Disposition",
+    "EDIT_WHATSAPPQUEUE": "Edit WhatsApp Queue",
+    "ERRORS": {
+      "PROJECTID_REQUIRED": "Mandatory Field",
+      "CLIENTEMAIL_REQUIRED": "Mandatory Field",
+      "PRIVATEKEY_REQUIRED": "Mandatory Field",
+      "ACCESSKEYID_REQUIRED": "Mandatory Field",
+      "ACCOUNTSID_REQUIRED": "Mandatory Field",
+      "AGENT_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less or equal than",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "AUTHTOKEN_REQUIRED": "Mandatory Field",
+      "BASEURL_REQUIRED": "Mandatory Field",
+      "BOTNAME_REQUIRED": "Mandatory Field",
+      "COMMAND_REQUIRED": "Mandatory Field",
+      "CONDITION_REQUIRED": "Mandatory Field",
+      "DESCRIPTION_REQUIRED": "Mandatory Field",
+      "DISPOSITION_REQUIRED": "Mandatory Field",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
+      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
+      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "KEY_REQUIRED": "Mandatory Field",
+      "LANGUAGE_REQUIRED": "Mandtory Field",
+      "LEXREGION_REQUIRED": "Mandatory Field",
+      "LIST_REQUIRED": "Mandatory Field",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory Field",
+      "NAME_REQUIRED": "Mandatory Field",
+      "PHONE_REQUIRED": "Mandatory Field",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
+      "PRIORITY_REQUIRED": "Mandatory Field",
+      "QUEUE_REQUIRED": "Mandatory Field",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less or equal than",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
+      "SECRETACCESSKEY_REQUIRED": "Mandatory Field",
+      "TAG_REQUIRED": "Mandatory Field",
+      "TEXT_REQUIRED": "Mandatory Field",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less or equal than",
+      "TIMEOUT_REQUIRED": "Mandatory Field",
+      "TIMES_REQUIRED": "Mandatory Field",
+      "TOKEN_REQUIRED": "Mandatory Field",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
+      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
+      "TYPE_REQUIRED": "Mandatory Field",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "VARIABLE_REQUIRED": "Mandatory Field",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less or equal than",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
+      "WELCOMEMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "WELCOMEMESSAGE_REQUIRED": "Mandatory Field"
+    },
+    "FALSEPRIORITY": "False Priority",
+    "GENERAL": "General",
+    "GO_TO_WHATSAPPACCOUNTS": "Go To Account",
+    "GOTOIF": "Gotoif",
+    "GOTOP": "Gotop",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Go To Realtime WhatsApp Queue",
+    "HELP": {
+      "LIST": "Contact Manager list used to associate contacts",
+      "MANDATORYDISPOSITION": "Mandatory disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled",
+      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "RECEIVEURL": "This is the auto-generated API string you need to use to receive the messages inside your account from your WhatsApp Connector provider (POST method must be used): click the clipboard button to copy it",
+      "WELCOMEMESSAGE": "This is the first response message sent to new interactions"
+    },
+    "ID": "Id",
+    "IDLE": "Idle",
+    "INSERT_MESSAGE_HERE": "Insert message here",
+    "INTERACTIONS": "Interactions",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Go to Interactions",
+    "KEY": "Key",
+    "LANGUAGE": "Language",
+    "LASTMESSAGE": "Last Message",
+    "LEXREGION": "Region",
+    "LIST": "List",
+    "LOGGED_IN": "Logged In",
+    "LOGIN_TIME": "Login Time",
+    "LOGOUT": "Logout",
+    "MANDATORYDISPOSITION": "Mandatory Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled",
+    "MORE": "More",
+    "MOTIONPROXY": "Proxy Or Motion Domain",
+    "MULTI_SELECT_TOGGLE": "Multi select toggle",
+    "NAME": "Name",
+    "NEW_WHATSAPPACCOUNT": "New WhatsApp Account",
+    "NEW_WHATSAPPCANNEDANSWER": "New WhatsApp Canned Answer",
+    "NEW_WHATSAPPDISPOSITION": "New WhatsApp Disposition",
+    "NEW_WHATSAPPQUEUE": "New WhatsApp Queue",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "NO_AVAILABLE_INFO": "No Available Info",
+    "NO_INTERACTION_AVAILABLE": "No Interactions Available",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "No WhatsApp Accounts available",
+    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "No WhatsApp Canned Answers Available",
+    "NO_WHATSAPPDISPOSITION_AVAILABLE": "No WhatsApp Dispositions Available",
+    "NOOP": "Noop",
+    "NOTE": "Note",
+    "NOTIFICATION": "Notification",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Sound",
+    "NOTIFICATIONTEMPLATE": "Template",
+    "OF": "of",
+    "OPENED": "Open",
+    "PAGE": "Page",
+    "PARTIALPAUSE": "Partial Pause",
+    "PAUSE": "Pause",
+    "PAUSE_TIME": "Pause Time",
+    "PAUSED": "Paused",
+    "PHONE": "Phone",
+    "PRIORITY": "Priority",
+    "PROXY": "Proxy",
+    "QUEUE": "Queue",
+    "QUEUES": "Queues",
+    "QUEUETRANSFER": "Queue Transfer",
+    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
+    "READY": "Ready",
+    "REALTIME": "Realtime",
+    "RECEIVEURL": "Receive URL",
+    "DELIVERYREPORTURL": "Delivery report URL",
+    "REFRESH_INTERACTIONS": "Refresh Interactions",
+    "REMOTE": "Remote",
+    "ROWSPERPAGE": "Rows per page",
+    "SAVE": "Save",
+    "SCREENRECORDING": "Manage Screen Recording",
+    "SEARCH_FOR_ANYONE": "Search",
+    "SECRETACCESSKEY": "Access key secret",
+    "SELECT_ALL": "Select all",
+    "SELECT_NONE": "Select none",
+    "SELECTED": "Selected",
+    "SELECTED_AGENTS": "Selected Agents",
+    "SELECTED_TEAMS": "Selected Teams",
+    "SEND": "Send",
+    "SETTINGS": "Settings",
+    "SPYINTERACTION": "Spy Interaction",
+    "START_SCREENRECORDING": "Start Screen Recording",
+    "STARTEDAT": "Started at",
+    "STATUS": "Status",
+    "STOP_SCREENRECORDING": "Stop Screen Recording",
+    "STRATEGY": "Strategy",
+    "SYSTEM": "System",
+    "TAG": "Tag",
+    "TAGS": "Tags",
+    "TEAMADD_WHATSAPPQUEUE": "Add Team To WhatsApp Queue",
+    "TEAMS_ASSOCIATION": "Teams Association",
+    "TEXT": "Text",
+    "TIMEOUT": "Timeout",
+    "TIMER": "Timer",
+    "TIMES": "Times",
+    "TO": "To",
+    "TOKEN": "Token",
+    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
+    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
+    "TRANSFER": "Transfer",
+    "TRUEPRIORITY": "True Priority",
+    "TYPE": "Type",
+    "UNPAUSE": "End Pause",
+    "VALUE": "Value",
+    "VARIABLE": "Variable",
+    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
+    "WAITING": "Waiting",
+    "WELCOMEMESSAGE": "Welcome Message",
+    "WHATSAPP": "WhatsApp Connector",
+    "WHATSAPPACCOUNTS": "WhatsApp Accounts",
+    "WHATSAPPCANNEDANSWERS": "WhatsApp Canned Answers",
+    "WHATSAPPDISPOSITIONS": "WhatsApp Dispositions",
+    "WHATSAPPQUEUES": "WhatsApp Queues"
+  }
+}
diff --git a/public/app/quick-panel/i18n/hu.json b/public/app/quick-panel/i18n/hu.json
new file mode 100644 (file)
index 0000000..fd2a755
--- /dev/null
@@ -0,0 +1,73 @@
+{
+  "QUICKPANEL": {
+    "EXPIRATION_GRAY_PERIOD": "Expiration Gray Period",
+    "NO_AVAILABLE_GROUPS": "No Available Groups",
+    "SAVE": "Save",
+    "INFO": "Info",
+    "NEW_CHATGROUP": "New Group",
+    "NAME": "Name",
+    "MEMBERS": "Members",
+    "ENABLE_WRITING": "Enable Writing",
+    "GROUPS": "Groups",
+    "YOU": "You + {{participants}}",
+    "NEW_INTERNAL_MESSAGE": "New internal message",
+    "DELETE": "Delete",
+    "SEARCH": "Search",
+    "USERS": "Users",
+    "TODAY": "TODAY",
+    "MONDAY": "Monday",
+    "TUESDAY": "Tuesday",
+    "WEDNESDAY": "Wednesday",
+    "THURSDAY": "Thursday",
+    "FRIDAY": "Friday",
+    "SATURDAY": "Saturday",
+    "SUNDAY": "Sunday",
+    "JANUARY": "January",
+    "FEBRUARY": "February",
+    "MARCH": "March",
+    "APRIL": "April",
+    "MAY": "May",
+    "JUNE": "June",
+    "JULY": "July",
+    "AUGUST": "August",
+    "SEPTEMBER": "September",
+    "OCTOBER": "October",
+    "NOVEMBER": "November",
+    "DECEMBER": "December",
+    "CHAT": "CHAT",
+    "ACTIVITY": "ACTIVITY",
+    "FRIENDS": "Friends",
+    "APP_SERVERS": "Application Servers",
+    "USER_STATS": "User Stats",
+    "EVENTS": "Events",
+    "NOTES": "Notes",
+    "QUICK_SETTINGS": "Quick Settings",
+    "NOTIFICATIONS": "Notifications",
+    "CLOUD_SYNC": "Cloud Sync",
+    "RETRO_THRUSTERS": "Retro Thrusters",
+    "RECENT": "Recent",
+    "START_NEW_CHAT": "Start New Chat",
+    "BACK": "Back",
+    "CALL": "Call",
+    "MORE": "More",
+    "SEND_MESSAGE": "Send message",
+    "REPLY_PLACEHOLDER": "Type and hit enter to send message",
+    "CONTACT_XCALLY_MOTION_SUPPORT": "Contact xCALLY Motion Support",
+    "EXPIRATION_DATE": "Expiration Date",
+    "EXPIRATION_REASON": "Expiration Reason",
+    "LICENSE": "License",
+    "NEW_TOKEN": "New Token",
+    "OLD_TOKEN": "Old Token",
+    "SEND_EMAIL_TO": "Send Email To",
+    "TOKEN": "Token",
+    "EXPIRATION_REASON_MESSAGE": "Your license has expired or your machine unique id has been updated due to a change to your system. Contact xCALLY Motion Support Team sending both your old and your new uuid.",
+    "GRAY_PERIOD_EXPIRATION": "Gray Period Expiration",
+    "EXPIRATION_REASON_MESSAGE_GRAY": "Your license has expired or has been disabled. Contact xCALLY Motion Support Team.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Your machine unique id has been updated due to a change to your system. Contact xCALLY Motion Support Team sending both your old and your new uuid.",
+    "MESSENGER_DISABLED": "The internal messaging is disabled for this agent!",
+    "WARNING": "Warning",
+    "ERRORS": {
+      "NAME_REQUIRED": "Mandatory Field"
+    }
+  }
+}
diff --git a/public/app/reset/i18n/hu.json b/public/app/reset/i18n/hu.json
new file mode 100644 (file)
index 0000000..c3cf8da
--- /dev/null
@@ -0,0 +1,20 @@
+{
+  "RESETPASSWORD": {
+    "TITLE": "Reset your password",
+    "EMAIL_ADRESS": "Email address",
+    "PASSWORD": "Password",
+    "PASSWORD_CONFIRM": "Password (Confirm)",
+    "UPDATE_PASSWORD": "RESET MY PASSWORD",
+    "GO_BACK": "Go back to login",
+    "PASSWORD_RESET": "Password Reset",
+    "PASSWORD_RESET_MESSAGE": "Your password has been correctly reset, you can now login!",
+    "PASSWORD_RESET_ERROR": "Password Reset Error",
+    "ERRORS": {
+      "EMAIL_REQUIRED": "Email field is required",
+      "EMAIL_MUST_VALID": "Email must be a valid e-mail address",
+      "PASSWORD_REQUIRED": "Password field is required",
+      "CONFIRM_NOT_MATCH": "The passwords don't match",
+      "SECURE_PASSWORD_PATTERN": "Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}."
+    }
+  }
+}
index 39a5cef..1e9a532 100644 (file)
@@ -70,6 +70,7 @@
     "PORTUGUESE": "Portuguese",
     "NORWEGIAN": "Norwegian",
     "HINDI": "Hindi",
+    "HUNGARIAN": "Hungarian",
     "TURKISH": "Turkish",
     "PERSIAN": "Persian",
     "LATVIAN": "Latvian",
diff --git a/public/app/toolbar/i18n/hu.json b/public/app/toolbar/i18n/hu.json
new file mode 100644 (file)
index 0000000..39a5cef
--- /dev/null
@@ -0,0 +1,112 @@
+{
+  "TOOLBAR": {
+    "CHANGE_LANGUAGE_TITLE": "Change language",
+    "CHANGE_LANGUAGE_MESSAGE": "Remember to refresh the page to apply RTL Support (if enabled)",
+    "HEBREW": "Hebrew",
+    "PREFIXES": "Prefixes",
+    "CALL": "Call",
+    "ARABIC": "Arabic",
+    "INDONESIAN": "Indonesian",
+    "RESETPASSWORD": "Reset Password",
+    "PASSWORD_EXPIRE_REMAINING_DAYS": "Remaining days before your password expires",
+    "BROWSER_COMPATIBILITY": "Browser Compatibility [Chrome, Opera, Safari]",
+    "RECORDING": "Recording",
+    "INVALID_LICENSE": "Invalid License",
+    "BROWSER": "Browser",
+    "OS": "Operating System",
+    "REQUIREMENTS": "Requirements",
+    "LICENSE": "License",
+    "HTTPS": "HTTPS",
+    "WEBRTCSUPPORT": "WebRTC Support",
+    "REGISTERED": "Registered",
+    "NOT_REGISTERED": "Not registered",
+    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC License is not enabled",
+    "ATTENDED_TRANSFER": "Attended Tranfer",
+    "TRANSFER": "Transfer",
+    "TARGET": "Target",
+    "CANCEL": "Cancel",
+    "FILENAME": "File name",
+    "STATUS": "Status",
+    "ACTIONS": "Actions",
+    "SPEAKER": "Speaker",
+    "RINGING": "Ringing tone",
+    "MICROPHONE": "Microphone",
+    "CONFERENCE": "Conference with 2 active sessions",
+    "PROFILE": "Profile",
+    "SERVICES": "Services",
+    "AUDIO": "Audio",
+    "FULLNAME": "Fullname",
+    "NAME": "Name",
+    "INTERNAL": "Internal",
+    "RINGINGDEVICE": "Ringing Device",
+    "SPEAKERDEVICE": "Speaker Device",
+    "MICROPHONEDEVICE": "Microphone Device",
+    "CHANGEPASSWORD": "Change password",
+    "SETTINGS": "Settings",
+    "AUTOANSWER": "Auto answer",
+    "TOGGLE_NAVIGATION": "Toggle navigation",
+    "TOGGLE_NAVIGATION_FOLD": "Toggle navigation fold",
+    "TOGGLE_NAVIGATION_MODE": "Toggle navigation mode",
+    "SEARCH": "Search",
+    "USER_SETTINGS": "User settings",
+    "TOGGLE_QUICK_PANEL": "Toggle quick panel",
+    "SOMEONE_LOGGED_YOU_OUT": "Someone logged out, do you want to stay logged?",
+    "STAY_LOGGED": "Stay logged",
+    "WARNING": "Warning",
+    "ENGLISH": "English",
+    "ITALIAN": "Italian",
+    "FRENCH": "French",
+    "KOREAN": "Korean",
+    "SPANISH": "Spanish",
+    "SWEDISH": "Swedish",
+    "RUSSIAN": "Russian",
+    "GERMAN": "German",
+    "JAPANESE": "Japanese",
+    "CHINESESIMPLIFIED": "Chinese Simplified",
+    "CHINESETRADITIONAL": "Chinese Traditional",
+    "DUTCH": "Dutch",
+    "FINNISH": "Finnish",
+    "DANISH": "Danish",
+    "PORTUGUESE": "Portuguese",
+    "NORWEGIAN": "Norwegian",
+    "HINDI": "Hindi",
+    "TURKISH": "Turkish",
+    "PERSIAN": "Persian",
+    "LATVIAN": "Latvian",
+    "POLISH": "Polish",
+    "LOGIN_TIME": "Login Time",
+    "PAUSE_TIME": "Pause Time",
+    "PREVIEW": "Preview",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "NEW_PASSWORD": "New Password",
+    "OLD_PASSWORD": "Old Password",
+    "SAVE": "Save",
+    "TRIAL_VERSION": "Trial Version",
+    "PAUSE": "Pause",
+    "RESUME": "End Pause",
+    "NO_PAUSES_AVAILABLE": "No pauses available",
+    "CZECH": "Czech",
+    "ERRORS": {
+      "FIELD_REQUIRED": "Mandatory Field",
+      "PASSWORD_REQUIRED": "Mandatory Field",
+      "CONFIRM_NOT_MATCH": "The passwords don't match",
+      "SECURE_PASSWORD_PATTERN": "The password must be at least 8 characters long and have 1 lowercase character, 1 uppercase character, 1 number and 1 special character ~!?*@#$%^&-_=+[{]}.",
+      "PASSWORD_OLDPASSWORD_MATCH": "New password must be different from previous one"
+    },
+    "BRAZILIAN": "Brazilian",
+    "ESTONIAN": "Estonian",
+    "WEBRTC_MICROPHONE_NOT_AVAILABLE": "No microphone available",
+    "WEBRTC_SPEAKER_NOT_AVAILABLE": "No speaker available",
+    "WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "No audio devices available",
+    "NO_AVAILABLE_INFO": "No available info",
+    "LITHUANIAN": "Lithuanian",
+    "NOTIFICATION_TITLE": "New notification from {{sender}}",
+    "NOTIFICATION_TITLE_RECIPIENT": "to {{recipient}}",
+    "USER_FORCE_LOGOUT": "{{ip}} has logged in with your credentials. \nMultiple logins are not allowed",
+    "LOGOUT": "Logout",
+    "SESSION_TIMEOUT": "The session will be automatically closed after 60 seconds",
+    "HELP": {
+      "PREVIEW_RECALLME": "This is a Recall Me call scheduled for {{date}}"
+    }
+  }
+}
index 25ff681..b64b351 100644 (file)
@@ -61,6 +61,7 @@
     "PORTUGUESE": "Portoghese",
     "NORWEGIAN": "Norwegian",
     "HINDI": "Hindi",
+    "HUNGARIAN": "Ungherese",
     "TURKISH": "Turco",
     "PERSIAN": "Persiano",
     "LATVIAN": "Lettone",
diff --git a/public/assets/images/flags/hu.png b/public/assets/images/flags/hu.png
new file mode 100644 (file)
index 0000000..ff1aa24
Binary files /dev/null and b/public/assets/images/flags/hu.png differ
index a884168..9de0701 100644 (file)
@@ -14,7 +14,7 @@
 
   <link rel="stylesheet" href="assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.min.css" />
 
-  <link rel="stylesheet" href="styles/vendor.85f73461.css">
+  <link rel="stylesheet" href="styles/vendor.def00a0c.css">
 
   <link rel="stylesheet" href="styles/app.b28c5c0c.css">
 
@@ -68,7 +68,7 @@
   <script src="assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.min.js"></script>
   <!-- ANGULAR-MATERIAL-FORM-BUILDER -->
 
-  <script src="scripts/app.406514eb.js"></script>
+  <script src="scripts/app.c65a4752.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 52%
rename from public/scripts/app.406514eb.js
rename to public/scripts/app.c65a4752.js
index fcea7d2..c071362 100644 (file)
@@ -1 +1 @@
-!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.realtime","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth",function(e,n,t){return t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver","Auth",function(e,n){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n,t,a){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer,adSsoEnabled",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled",role:"agent",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled",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",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,n,i,r,l,s,d){var c;return{getToken:t,getCurrentUser:function(){return c},getPermissions:b,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return f(e)})},hasModulePermissions:function(i){return o(function(a,n){v()?a(!0):r.userProfileSection.get({userProfileId:c.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};v()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:c.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!c&&c.role===e},hasPermission:f,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:c.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return A().then(function(){_.includes(c.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!v())return A().then(function(){a.forEach(function(e){_.includes(c.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:g,isAdmin:v,isLoggedIn:function(){return!!t()},isTelephone:function(){return"telephone"===c.role},isUser:h,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return s.get().secureCookieEnabled?d.set("motion.token",e.token,{secure:!0,sameSite:"none"}):d.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(c=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),E("LOCAL_LOGIN")}).then(function(){if(g()&&1===c.showWebBar&&c.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(i.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return g()&&0!==c.showWebBar?m(e):v()||h()?u(!0):void 0}).then(function(e){c=_.assign(c,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(p(),e()):o.resolve().then(function(){return g()&&0!==c.showWebBar?o(function(e,n){r.user.logout({id:c.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):v()||h()?u(!1):void 0}).then(function(){p(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return v()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:m,reloadPermissions:A,removeCookies:p,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?b(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(c=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){c=_.merge(c,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return E("SSO_LOGIN"),"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return s.get().secureCookieEnabled?d.set("motion.token",e.token,{secure:!0,sameSite:"none"}):d.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(c=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),E("SSO_LOGIN")}).then(function(){if(g()&&1===c.showWebBar&&c.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(i.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return g()&&0!==c.showWebBar?m(e):v()||h()?u(!0):void 0}).then(function(e){c=_.assign(c,e),n()}).catch(function(e){t(e)})})}};function t(){return e.get("motion.token")}function m(e){return o(function(n,t){r.user.login({id:c.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:c.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function p(){e.remove("motion.token"),c&&(n.localStorage.removeItem("motion.user:"+c.id),n.localStorage.removeItem("motion.authenticationtype"),c=null)}function g(){return"agent"===c.role}function v(){return"admin"===c.role}function h(){return"user"===c.role}function f(e){return!!c&&_.includes(c.permissions,e)}function b(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function A(){return o(function(n,t){b(c.userProfileId).then(function(e){c.permissions=e,n()}).catch(function(e){t(e)})})}function E(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A){var E=this,l=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],d=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function c(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,R("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(console.log("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){d.webrtc=_.pick(E.conf,l),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(d))}function S(e,n,t){console.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function T(e){console.debug("answer -> session",e),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function I(e,n){console.debug("terminate -> session",e),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function O(t){return console.debug("getVoiceChannels -> session",t),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function C(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&y();break;default:console.log("unknown device")}}function m(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function x(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function N(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){console.log(e)})}}function D(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function P(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function L(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(d.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){c(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,c(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):c(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){console.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,S(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){console.debug("getNotification -> session",n);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;console.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},u)}}r?(o.call_id=e.request.call_id,n&&L(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=C.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)})),O(e).then(function(){var n=E.callbackQueue[e.call_id];n&&L(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=C.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,O(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),r.on("webbar:originate",function(e){console.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(P(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?P(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(P(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=P(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),r.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=P(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:D(n,"requestSucceeded","top right",3e3),requestFailed:D(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return x(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){m()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return x(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:D(n,"requestSucceeded","top right",3e3),requestFailed:D(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){console.debug("referAttended -> session",e),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):m():m()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),m())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){N()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){N()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){console.log(e)})})},E.patchConference=N,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,c(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):c(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(console.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return x(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:D(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:D(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){console.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(e)}}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t){var e={getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},setAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));e.globalStatusDisplayValue=n},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}},a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function r(e){if(_.isNil(e))return!0;return _.includes(["idle","unknown","unavailable","ringing"],e)}return e}e.$inject=["$translate"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(e,n,t){if(void 0===e)return"";if(!n)return"";t||(t="option");var a=_.find(n,["value",e]);return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.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",res.token,{secure:!0,sameSite:"none"}):r.set("motion.token",res.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled,l.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=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,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:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getChatWebsiteInteractions=p,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=g,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){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.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,a,e,n,i,s,o,r,l,d){var c=this;function m(e){if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});return l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).then(function(){c.customFields.rows.forEach(function(e){"datetime"===e.type&&c.contact["cf_"+e.id]&&(c.contact["cf_"+e.id]=u(c.contact["cf_"+e.id]))}),Object.keys(c.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(c.customFields.rows,["id",Number(n)])||delete c.contact["cf_"+n]}})}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}function u(e){return null===e?void 0:new Date(e)}function p(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,m(c.contact.ListId)):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.name+" has been created!":""}),p()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.name+" has been saved!":""}),p()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteContact=function(e){c.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),p()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=p,c.getCustomFields=m,c.getDateFromString=u}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function 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.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=n.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=i.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=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=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),e.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),O())}),e.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),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)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function O(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=A.user.privacyEnabled?b.mask(a):a):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&N(t)),n){var s=_.find(A.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return d.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function C(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=O,A.addInteractionTab=C,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void O(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){O(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},h.show(e.title,n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){C(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,n,l){var g=this;function v(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,h("hoppers")).$promise)}function b(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,h("finals")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=v,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=f,g.getFinals=b,g.getHistories=A,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}f(),b(),A()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u){var p=this;function g(){return i(function(n,e){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){p.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function v(){var e=p.selectedDisposition?p.selectedDisposition.name.toLowerCase():void 0;return{id:p.call.uniqueid,disposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,secondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,thirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function h(e){t.hide([e,p.autoClose])}p.user=d.getCurrentUser(),p.isReschedule=!1,p.recallme=!1,p.queueCampaign=void 0,p.queueCampaigns={count:0,rows:[]},p.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),p.contact=l,p.call=r,p.note=p.call.note||void 0,p.dialerCall=!1,p.hasBlackLists=!1,p.availableCalls=m,p.autoClose=u,p.hopper={minDate:new Date,dateTime:new Date},p.call&&p.call.variables&&p.call.variables["xmd-voicequeueid"]?(p.dialerCall=!0,o.voiceQueue.getBlackLists({id:p.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(p.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):g(),p.onDispositionChange=function(e){switch(e){case"first":p.selectedDisposition=p.firstLevelDisposition,p.anySecondLevelDisposition=_.some(p.dispositions,["ParentId",p.firstLevelDisposition.id]),p.secondLevelDisposition=void 0,p.thirdLevelDisposition=void 0,p.anyThirdLevelDisposition=!1;break;case"second":p.selectedDisposition=p.secondLevelDisposition,p.anyThirdLevelDisposition=_.some(p.dispositions,["ParentId",p.secondLevelDisposition.id]);break;case"third":p.selectedDisposition=p.thirdLevelDisposition}},p.clearDispositionSelection=function(e){"second"===e?(p.secondLevelDisposition=void 0,p.thirdLevelDisposition=void 0,p.selectedDisposition=p.firstLevelDisposition):"third"===e&&(p.thirdLevelDisposition=void 0,p.selectedDisposition=p.secondLevelDisposition)},p.saveDisposition=function(e){p.selectedDisposition=_.isNil(e)?p.selectedDisposition:{name:e},e&&(p.firstLevelDisposition=p.selectedDisposition);p.call.note=p.note,o.voiceCallReport.update({id:p.call.uniqueid,userDisposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,userSecondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,userThirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null,note:p.note,UserId:d.getCurrentUser().id,ContactId:p.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:p.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,userSecondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,userThirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.dialerCall&&(o.cmHopperFinal.update(v()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(v()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(p.selectedDisposition))h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"");else switch(p.selectedDisposition.name.toLowerCase()){case"blacklist":p.call&&p.call.variables&&p.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(p.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+p.selectedDisposition}),p.selectedDisposition=void 0}).then(function(e){e&&h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")})}(p.call.variables["xmd-voicequeueid"]);break;case"reschedule":p.isReschedule=!0,p.recallme=!1;break;case"recallme":p.isReschedule=!0,p.recallme=!0,p.user.selectRecallMeCampaign&&g().then(function(){p.originalCampaign=_.find(p.queueCampaigns.rows,["id",p.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+p.user.id));p.queueCampaign=e.previewCampaignId?_.find(p.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):p.originalCampaign});break;default:h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}},p.closeDialog=function(){t.cancel()},p.saveReschedule=function(){p.disable=!0;var e=p.queueCampaign?p.queueCampaign.id:null;p.dialerCall&&(e=p.queueCampaign&&"preview"===p.originalCampaign.dialMethod?p.queueCampaign.id:Number(p.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:p.contact.phone,UserId:p.recallme?d.getCurrentUser().id:null,ContactId:p.contact.id,ListId:p.contact.ListId,VoiceQueueId:e,scheduledat:moment(p.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:p.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(){if(p.dialerCall&&(o.cmHopperFinal.update({id:p.call.uniqueid,rescheduled:!0,rescheduledat:moment(p.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:p.recallme}).$promise.catch(function(e){console.log(e)}),p.user.selectRecallMeCampaign&&"preview"===p.originalCampaign.dialMethod)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+p.user.id));e.previewCampaignId=p.queueCampaign.id,n.localStorage.setItem("motion2.user:"+p.user.id,JSON.stringify(e))}}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(p.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}).finally(function(){p.disable=!1,h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,r,e,l,d){var c=this;function m(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(e){if(e&&!e.secret){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:c.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=p,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,u())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)g(m.faxInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:u.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:u.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,u.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=v,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};m.add(n)}})},u.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,p())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,g(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(m.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};m.update(n)}})}),o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.replace(/\n$/,"")))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getFaxAccountInteractions=p,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=g,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){g(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Account=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.dynamics365Account=c||e.params.dynamics365Account||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,u).$promise}function g(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMailAccountInteractions=p,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=g,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){g(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.mailAccount=c||t.params.mailAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getOpenchannelAccountInteractions=p,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=g,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){g(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this,h=t(function(){},999);function f(){v.agents.rows.forEach(function(e){g.setAgentStatusDisplayValue(e)})}function b(){v.query.offset=(v.query.page-1)*v.query.limit,v.promise=l.realtime.getAgents(v.query).$promise.then(function(e){v.agents=e,f()}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function A(e){_.remove(v.agents.rows,["id",e.id])}v.currentUser=u.getCurrentUser(),v.channel=n.params.channel,v.queueType=n.params.direction,v.agents=o,v.pauses=r||{count:0,rows:[]},v.license=p,v.userProfileSection=m&&1==m.count?m.rows[0]:null,v.crudPermissions=u.parseCrudPermissions(v.userProfileSection?v.userProfileSection.crudPermissions:null),v.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},v.getAgents=b,v.logout=function(e){return l.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){A(e),c.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:v.channel,direction:v.queueType,crudPermissions:v.crudPermissions}})},v.pause=function(e,n){return l.user.pause({id:e.id,type:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.unpause=function(e){return l.user.unpause({id:e.id}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.manageScreenRecording=function(e,n){return l.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.on("user:save",function(e){var n=_.find(v.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.setAgentStatusDisplayValue(n))}),d.on("user:update",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!1===e.online)return A(n);_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.setAgentStatusDisplayValue(n)}else e.online&&b()}),d.on("user:agentconnect",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!e.agentconnected)return;_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"]))}}),d.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(v.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias)}),f(),e.$on("$destroy",function(){d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),h&&t.cancel(h)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getSmsAccountInteractions=p,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=g,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){g(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.agents=e||{count:0,rows:[]}}function v(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(p.agents.rows,{id:e.id}),p.agents.count-=1,p.agents.rows.length||p.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.agents=s||{count:0,rows:[]},p.userProfile=o,p.userProfileSection=r&&1==r.count?r.rows[0]:null,p.crudPermissions=c.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedAgents=[],p.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled",role:"agent",sort:"-updatedAt",limit:10,page:1},p.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],p.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:p.crudPermissions})},p.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:p.agents?p.agents.rows:[],crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){v(e)})},p.success=g,p.getAgents=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=l.user.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="Agents",p.promise=l.userProfile.getResources(p.query,g).$promise)},p.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:p.agents.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteAgent=v,p.exportSelectedAgents=function(){var e=angular.copy(p.selectedAgents);return p.selectedAgents=[],e},p.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+p.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){p.selectedAgents.forEach(function(e){v(e)}),p.selectedAgents=[]})},p.deselectAgents=function(){p.selectedAgents=[]},p.selectAllAgents=function(){p.selectedAgents=p.agents.rows};var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAgents())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","agents","agent","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.agent&&(t=_.find(u.contexts,{name:u.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.user=c||e.params.user||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-sip"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getWhatsappAccountInteractions=p,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=g,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){g(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!d.viewHelpSection||o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!o.hasPermission(101)}}),a.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!o.hasPermission(115)}}),a.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!r.cm||!o.hasPermission(102)}}),a.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!r.cm||!o.hasPermission(103)}}),a.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!r.dialer||!o.hasPermission(113)}}),a.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!r.voice||!o.hasPermission(110)}}),a.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!r.voice||!o.hasPermission(111)}}),a.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!r.voice||!o.hasPermission(104)}}),a.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!r.chat||!o.hasPermission(105)}}),a.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!r.mail||!o.hasPermission(106)}}),a.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!r.messaging||!o.hasPermission(107)}}),a.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!r.openchannel||!o.hasPermission(108)}}),a.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!r.fax||!o.hasPermission(109)}}),a.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(e){_.isNil(e)&&s.cmHopper.update({id:l.preview.id,UserId:null}),a.hide()}l.customFieldsMap=r&&r.rows?_.mapValues(_.keyBy(r.rows,function(e){return"cf_"+e.id}),"name"):{},l.errors=[],l.hopperIds=[],l.preview=o,l.originated=!1,l.disable=!1,l.disableGetContact=!1,l.hopperIds.push(l.preview.id),l.originatePreview=function(){l.originated=!0,l.disable=!0,_.isEmpty(l.preview)?(i.error({title:"Message",msg:"Contact not available"}),l.disable=!1,l.hopperIds=[],d(!0)):s.rpc.getVoiceQueuesPreview({id:l.preview.id}).$promise.then(function(e){d(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){l.disable=!1,l.hopperIds=[]})},l.closeDialog=d,l.nextContact=function(){return l.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:l.hopperIds,direction:"next"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(l.disableGetContact=!1,l.hopperIds=[],404===e.status)l.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.previousContact=function(){if(l.disableGetContact=!0,1<l.hopperIds.length){var e=_.without(l.hopperIds,l.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(l.hopperIds,function(e){return e==l.preview.id}),l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e)}).catch(function(e){if(404===e.status)l.hopperIds=[l.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){l.hopperIds=[],a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},l.getFirstAvailableContact=function(){return l.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[l.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){l.disableGetContact=!1})},l.isCustomField=function(e){return _.startsWith(e,"cf_")},l.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},l.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){l.originated||s.cmHopper.update({id:l.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var I=["ar","fa","he"];function O(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function C(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return C(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return C(),v.logout(!0).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){console.error(e)})}function P(e){var n=e;if(T.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;C();var n=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){O(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role){var n=T.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.unpause=function(){return f.user.unpause({id:T.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.preview=function(n){return T.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){T.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else N(null,!0)}(),R(),O(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),S&&(E.cancel(S),S=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors" ms-scroll>\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled" />\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding" ms-scroll>\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results" ms-scroll>\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ms-scroll ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" ms-scroll>\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' + widget.attrs[0].value | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ms-scroll ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled || 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 ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tvox/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <form name="scriptForm" flex="100" novalidate>\n              <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n                </div>\n\n\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n\n              </div>\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div ng-if="!vm.dialerCall">\n          <md-input-container ng-if="vm.recallme && vm.user.selectRecallMeCampaign" class="md-block">\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16" ms-scroll>\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="md-primary-bg width-50" ms-scroll>\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default>\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              \x3c!-- ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}" --\x3e\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview" class="text-truncate font-size-12">{{ interaction.subject }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex ms-scroll layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n        <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="username ">{{dynamics365Account.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="remoteUri ">{{dynamics365Account.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n        <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n        <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAILACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.gotoMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="generalForm[\'fontFamily\'].$error" ng-show="generalForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">connTimeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">authTimeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center" ms-scroll>\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.getAgents()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            {{ agent.globalStatus === 'pause' || agent.globalStatus === '*pause' ? \n              ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n              ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase)\n            }}\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"agent.globalStatus === 'pause' || agent.globalStatus === '*pause'\" start-time=\"agent.lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.whatsappStatus]\">\n          {{ agent.whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\">\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"agent.globalStatus === 'pause' || agent.globalStatus === '*pause'\">\n                <md-button ng-click=\"vm.unpause(agent)\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.agents.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.AITOOLS">AiTools</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id ">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name ">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service ">{{ vm.arrayservice[cloudProvider.service].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n          <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" ms-scroll>\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.uuid}}</span></span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.machineUuid}}</span></span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n            <div ng-messages="generalForm[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n            </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\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n\n      <md-divider></md-divider>\n\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container 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\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType" ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main animate-slide-left" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main animate-slide-left" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat animate-slide-right" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()" ms-scroll>\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
+!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.realtime","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth",function(e,n,t){return t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver","Auth",function(e,n){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n,t,a){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",role:"agent",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,n,i,r,l,s,d){var c;return{getToken:t,getCurrentUser:function(){return c},getPermissions:b,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return f(e)})},hasModulePermissions:function(i){return o(function(a,n){v()?a(!0):r.userProfileSection.get({userProfileId:c.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};v()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:c.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!c&&c.role===e},hasPermission:f,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:c.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return A().then(function(){_.includes(c.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!v())return A().then(function(){a.forEach(function(e){_.includes(c.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:g,isAdmin:v,isLoggedIn:function(){return!!t()},isTelephone:function(){return"telephone"===c.role},isUser:h,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return s.get().secureCookieEnabled?d.set("motion.token",e.token,{secure:!0,sameSite:"none"}):d.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(c=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),E("LOCAL_LOGIN")}).then(function(){if(g()&&1===c.showWebBar&&c.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(i.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return g()&&0!==c.showWebBar?m(e):v()||h()?u(!0):void 0}).then(function(e){c=_.assign(c,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(p(),e()):o.resolve().then(function(){return g()&&0!==c.showWebBar?o(function(e,n){r.user.logout({id:c.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):v()||h()?u(!1):void 0}).then(function(){p(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return v()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:m,reloadPermissions:A,removeCookies:p,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?b(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(c=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){c=_.merge(c,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return E("SSO_LOGIN"),"/api/auth/"+e}};function t(){return e.get("motion.token")}function m(e){return o(function(n,t){r.user.login({id:c.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:c.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function p(){e.remove("motion.token"),c&&(n.localStorage.removeItem("motion.user:"+c.id),n.localStorage.removeItem("motion.authenticationtype"),c=null)}function g(){return"agent"===c.role}function v(){return"admin"===c.role}function h(){return"user"===c.role}function f(e){return!!c&&_.includes(c.permissions,e)}function b(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function A(){return o(function(n,t){b(c.userProfileId).then(function(e){c.permissions=e,n()}).catch(function(e){t(e)})})}function E(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A){var E=this,l=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],d=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function c(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,R("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(console.log("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){d.webrtc=_.pick(E.conf,l),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(d))}function S(e,n,t){console.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function T(e){console.debug("answer -> session",e),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function I(e,n){console.debug("terminate -> session",e),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return console.debug("getVoiceChannels -> session",t),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&y();break;default:console.log("unknown device")}}function m(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function x(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function N(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){console.log(e)})}}function D(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function P(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function L(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(d.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){c(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,c(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):c(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){console.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,S(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){console.debug("getNotification -> session",n);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;console.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},u)}}r?(o.call_id=e.request.call_id,n&&L(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&L(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=O.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),r.on("webbar:originate",function(e){console.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(P(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?P(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(P(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=P(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),r.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=P(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:D(n,"requestSucceeded","top right",3e3),requestFailed:D(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return x(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){m()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return x(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:D(n,"requestSucceeded","top right",3e3),requestFailed:D(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){console.debug("referAttended -> session",e),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):m():m()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),m())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){N()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){N()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){console.log(e)})})},E.patchConference=N,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,c(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):c(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(console.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return x(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:D(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:D(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){console.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(e)}}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t){var e={getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},setAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));e.globalStatusDisplayValue=n},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}},a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function r(e){if(_.isNil(e))return!0;return _.includes(["idle","unknown","unavailable","ringing"],e)}return e}e.$inject=["$translate"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(e,n,t){if(void 0===e)return"";if(!n)return"";t||(t="option");var a=_.find(n,["value",e]);return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",res.token,{secure:!0,sameSite:"none"}):r.set("motion.token",res.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,C,O,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(C,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(O,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(C,"id","name"),pause_id:U(O,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getChatWebsiteInteractions=p,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=g,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){C(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=C,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){C(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function C(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o,r,l,d){var c=this;function m(e){if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});return l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).then(function(){c.customFields.rows.forEach(function(e){"datetime"===e.type&&c.contact["cf_"+e.id]&&(c.contact["cf_"+e.id]=u(c.contact["cf_"+e.id]))}),Object.keys(c.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(c.customFields.rows,["id",Number(n)])||delete c.contact["cf_"+n]}})}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}function u(e){return null===e?void 0:new Date(e)}function p(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,m(c.contact.ListId)):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.name+" has been created!":""}),p()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.name+" has been saved!":""}),p()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteContact=function(e){c.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),p()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=p,c.getCustomFields=m,c.getDateFromString=u}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function C(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function O(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=n.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=i.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=C,S.getHistories=O,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),e.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),C())}),e.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),O())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=A.user.privacyEnabled?b.mask(a):a):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&N(t)),n){var s=_.find(A.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return d.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},h.show(e.title,n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,n,l){var g=this;function v(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,h("hoppers")).$promise)}function b(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,h("finals")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=v,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=f,g.getFinals=b,g.getHistories=A,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}f(),b(),A()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u){var p=this;function g(){return i(function(n,e){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){p.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function v(){var e=p.selectedDisposition?p.selectedDisposition.name.toLowerCase():void 0;return{id:p.call.uniqueid,disposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,secondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,thirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function h(e){t.hide([e,p.autoClose])}p.user=d.getCurrentUser(),p.isReschedule=!1,p.recallme=!1,p.queueCampaign=void 0,p.queueCampaigns={count:0,rows:[]},p.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),p.contact=l,p.call=r,p.note=p.call.note||void 0,p.dialerCall=!1,p.hasBlackLists=!1,p.availableCalls=m,p.autoClose=u,p.hopper={minDate:new Date,dateTime:new Date},p.call&&p.call.variables&&p.call.variables["xmd-voicequeueid"]?(p.dialerCall=!0,o.voiceQueue.getBlackLists({id:p.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(p.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):g(),p.onDispositionChange=function(e){switch(e){case"first":p.selectedDisposition=p.firstLevelDisposition,p.anySecondLevelDisposition=_.some(p.dispositions,["ParentId",p.firstLevelDisposition.id]),p.secondLevelDisposition=void 0,p.thirdLevelDisposition=void 0,p.anyThirdLevelDisposition=!1;break;case"second":p.selectedDisposition=p.secondLevelDisposition,p.anyThirdLevelDisposition=_.some(p.dispositions,["ParentId",p.secondLevelDisposition.id]);break;case"third":p.selectedDisposition=p.thirdLevelDisposition}},p.clearDispositionSelection=function(e){"second"===e?(p.secondLevelDisposition=void 0,p.thirdLevelDisposition=void 0,p.selectedDisposition=p.firstLevelDisposition):"third"===e&&(p.thirdLevelDisposition=void 0,p.selectedDisposition=p.secondLevelDisposition)},p.saveDisposition=function(e){p.selectedDisposition=_.isNil(e)?p.selectedDisposition:{name:e},e&&(p.firstLevelDisposition=p.selectedDisposition);p.call.note=p.note,o.voiceCallReport.update({id:p.call.uniqueid,userDisposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,userSecondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,userThirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null,note:p.note,UserId:d.getCurrentUser().id,ContactId:p.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:p.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,userSecondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,userThirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.dialerCall&&(o.cmHopperFinal.update(v()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(v()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(p.selectedDisposition))h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"");else switch(p.selectedDisposition.name.toLowerCase()){case"blacklist":p.call&&p.call.variables&&p.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(p.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+p.selectedDisposition}),p.selectedDisposition=void 0}).then(function(e){e&&h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")})}(p.call.variables["xmd-voicequeueid"]);break;case"reschedule":p.isReschedule=!0,p.recallme=!1;break;case"recallme":p.isReschedule=!0,p.recallme=!0,p.user.selectRecallMeCampaign&&g().then(function(){p.originalCampaign=_.find(p.queueCampaigns.rows,["id",p.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+p.user.id));p.queueCampaign=e.previewCampaignId?_.find(p.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):p.originalCampaign});break;default:h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}},p.closeDialog=function(){t.cancel()},p.saveReschedule=function(){p.disable=!0;var e=p.queueCampaign?p.queueCampaign.id:null;p.dialerCall&&(e=p.queueCampaign&&"preview"===p.originalCampaign.dialMethod?p.queueCampaign.id:Number(p.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:p.contact.phone,UserId:p.recallme?d.getCurrentUser().id:null,ContactId:p.contact.id,ListId:p.contact.ListId,VoiceQueueId:e,scheduledat:moment(p.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:p.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(){if(p.dialerCall&&(o.cmHopperFinal.update({id:p.call.uniqueid,rescheduled:!0,rescheduledat:moment(p.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:p.recallme}).$promise.catch(function(e){console.log(e)}),p.user.selectRecallMeCampaign&&"preview"===p.originalCampaign.dialMethod)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+p.user.id));e.previewCampaignId=p.queueCampaign.id,n.localStorage.setItem("motion2.user:"+p.user.id,JSON.stringify(e))}}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(p.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}).finally(function(){p.disable=!1,h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,r,e,l,d){var c=this;function m(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(e){if(e&&!e.secret){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:c.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=p,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,u())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)g(m.faxInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:u.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:u.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,u.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=v,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};m.add(n)}})},u.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,p())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,g(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(m.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};m.update(n)}})}),o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.replace(/\n$/,"")))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getFaxAccountInteractions=p,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=g,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){g(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Account=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.dynamics365Account=c||e.params.dynamics365Account||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,u).$promise}function g(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMailAccountInteractions=p,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=g,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){g(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.mailAccount=c||t.params.mailAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getOpenchannelAccountInteractions=p,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=g,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){g(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this,h=t(function(){},999);function f(){v.agents.rows.forEach(function(e){g.setAgentStatusDisplayValue(e)})}function b(){v.query.offset=(v.query.page-1)*v.query.limit,v.promise=l.realtime.getAgents(v.query).$promise.then(function(e){v.agents=e,f()}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function A(e){_.remove(v.agents.rows,["id",e.id])}v.currentUser=u.getCurrentUser(),v.channel=n.params.channel,v.queueType=n.params.direction,v.agents=o,v.pauses=r||{count:0,rows:[]},v.license=p,v.userProfileSection=m&&1==m.count?m.rows[0]:null,v.crudPermissions=u.parseCrudPermissions(v.userProfileSection?v.userProfileSection.crudPermissions:null),v.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},v.getAgents=b,v.logout=function(e){return l.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){A(e),c.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:v.channel,direction:v.queueType,crudPermissions:v.crudPermissions}})},v.pause=function(e,n){return l.user.pause({id:e.id,type:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.unpause=function(e){return l.user.unpause({id:e.id}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.manageScreenRecording=function(e,n){return l.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.on("user:save",function(e){var n=_.find(v.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.setAgentStatusDisplayValue(n))}),d.on("user:update",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!1===e.online)return A(n);_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.setAgentStatusDisplayValue(n)}else e.online&&b()}),d.on("user:agentconnect",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!e.agentconnected)return;_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"]))}}),d.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(v.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias)}),f(),e.$on("$destroy",function(){d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),h&&t.cancel(h)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getSmsAccountInteractions=p,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=g,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){g(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.agents=e||{count:0,rows:[]}}function v(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(p.agents.rows,{id:e.id}),p.agents.count-=1,p.agents.rows.length||p.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.agents=s||{count:0,rows:[]},p.userProfile=o,p.userProfileSection=r&&1==r.count?r.rows[0]:null,p.crudPermissions=c.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedAgents=[],p.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",role:"agent",sort:"-updatedAt",limit:10,page:1},p.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],p.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:p.crudPermissions})},p.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:p.agents?p.agents.rows:[],crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){v(e)})},p.success=g,p.getAgents=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=l.user.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="Agents",p.promise=l.userProfile.getResources(p.query,g).$promise)},p.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:p.agents.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteAgent=v,p.exportSelectedAgents=function(){var e=angular.copy(p.selectedAgents);return p.selectedAgents=[],e},p.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+p.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){p.selectedAgents.forEach(function(e){v(e)}),p.selectedAgents=[]})},p.deselectAgents=function(){p.selectedAgents=[]},p.selectAllAgents=function(){p.selectedAgents=p.agents.rows};var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAgents())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","agents","agent","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.agent&&(t=_.find(u.contexts,{name:u.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.user=c||e.params.user||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-sip"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){C(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=C,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){C(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function C(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getWhatsappAccountInteractions=p,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=g,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){g(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!d.viewHelpSection||o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!o.hasPermission(101)}}),a.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!o.hasPermission(115)}}),a.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!r.cm||!o.hasPermission(102)}}),a.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!r.cm||!o.hasPermission(103)}}),a.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!r.dialer||!o.hasPermission(113)}}),a.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!r.voice||!o.hasPermission(110)}}),a.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!r.voice||!o.hasPermission(111)}}),a.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!r.voice||!o.hasPermission(104)}}),a.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!r.chat||!o.hasPermission(105)}}),a.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!r.mail||!o.hasPermission(106)}}),a.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!r.messaging||!o.hasPermission(107)}}),a.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!r.openchannel||!o.hasPermission(108)}}),a.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!r.fax||!o.hasPermission(109)}}),a.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(e){_.isNil(e)&&s.cmHopper.update({id:l.preview.id,UserId:null}),a.hide()}l.customFieldsMap=r&&r.rows?_.mapValues(_.keyBy(r.rows,function(e){return"cf_"+e.id}),"name"):{},l.errors=[],l.hopperIds=[],l.preview=o,l.originated=!1,l.disable=!1,l.disableGetContact=!1,l.hopperIds.push(l.preview.id),l.originatePreview=function(){l.originated=!0,l.disable=!0,_.isEmpty(l.preview)?(i.error({title:"Message",msg:"Contact not available"}),l.disable=!1,l.hopperIds=[],d(!0)):s.rpc.getVoiceQueuesPreview({id:l.preview.id}).$promise.then(function(e){d(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){l.disable=!1,l.hopperIds=[]})},l.closeDialog=d,l.nextContact=function(){return l.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:l.hopperIds,direction:"next"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(l.disableGetContact=!1,l.hopperIds=[],404===e.status)l.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.previousContact=function(){if(l.disableGetContact=!0,1<l.hopperIds.length){var e=_.without(l.hopperIds,l.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(l.hopperIds,function(e){return e==l.preview.id}),l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e)}).catch(function(e){if(404===e.status)l.hopperIds=[l.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){l.hopperIds=[],a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},l.getFirstAvailableContact=function(){return l.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[l.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){l.disableGetContact=!1})},l.isCustomField=function(e){return _.startsWith(e,"cf_")},l.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},l.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){l.originated||s.cmHopper.update({id:l.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var I=["ar","fa","he"];function C(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function O(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return O(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return O(),v.logout(!0).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){console.error(e)})}function P(e){var n=e;if(T.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;O();var n=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){C(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role){var n=T.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.unpause=function(){return f.user.unpause({id:T.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.preview=function(n){return T.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){T.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else N(null,!0)}(),R(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),S&&(E.cancel(S),S=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors" ms-scroll>\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled" />\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding" ms-scroll>\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results" ms-scroll>\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ms-scroll ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" ms-scroll>\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' + widget.attrs[0].value | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ms-scroll ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tvox/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <form name="scriptForm" flex="100" novalidate>\n              <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n                </div>\n\n\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n\n              </div>\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div ng-if="!vm.dialerCall">\n          <md-input-container ng-if="vm.recallme && vm.user.selectRecallMeCampaign" class="md-block">\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16" ms-scroll>\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="md-primary-bg width-50" ms-scroll>\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default>\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              \x3c!-- ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}" --\x3e\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview" class="text-truncate font-size-12">{{ interaction.subject }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex ms-scroll layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n        <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="username ">{{dynamics365Account.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="remoteUri ">{{dynamics365Account.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n        <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n        <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAILACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.gotoMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="generalForm[\'fontFamily\'].$error" ng-show="generalForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">connTimeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">authTimeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center" ms-scroll>\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.getAgents()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            {{ agent.globalStatus === 'pause' || agent.globalStatus === '*pause' ? \n              ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n              ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase)\n            }}\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"agent.globalStatus === 'pause' || agent.globalStatus === '*pause'\" start-time=\"agent.lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.whatsappStatus]\">\n          {{ agent.whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\">\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"agent.globalStatus === 'pause' || agent.globalStatus === '*pause'\">\n                <md-button ng-click=\"vm.unpause(agent)\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.agents.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.AITOOLS">AiTools</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id ">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name ">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service ">{{ vm.arrayservice[cloudProvider.service].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.uuid}}</span></span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.machineUuid}}</span></span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n            <div ng-messages="generalForm[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n\n      <md-divider></md-divider>\n\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType" ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main animate-slide-left" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main animate-slide-left" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat animate-slide-right" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()" ms-scroll>\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
similarity index 98%
rename from public/styles/vendor.85f73461.css
rename to public/styles/vendor.def00a0c.css
index 0b4f83a..17ac62a 100644 (file)
@@ -5,12 +5,12 @@ table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;bor
  */.fc{direction:ltr;text-align:left}.fc-rtl{text-align:right}body .fc{font-size:1em}.fc-unthemed .fc-divider,.fc-unthemed .fc-popover,.fc-unthemed .fc-row,.fc-unthemed tbody,.fc-unthemed td,.fc-unthemed th,.fc-unthemed thead{border-color:#ddd}.fc-unthemed .fc-popover{background-color:#fff}.fc-unthemed .fc-divider,.fc-unthemed .fc-popover .fc-header{background:#eee}.fc-unthemed .fc-popover .fc-header .fc-close{color:#666}.fc-unthemed .fc-today{background:#fcf8e3}.fc-highlight{background:#bce8f1;opacity:.3}.fc-bgevent{background:#8fdf82;opacity:.3}.fc-nonbusiness{background:#d7d7d7}.fc-icon{display:inline-block;width:1em;height:1em;line-height:1em;font-size:1em;text-align:center;overflow:hidden;font-family:"Courier New",Courier,monospace}.fc-icon:after{position:relative;margin:0 -1em}.fc-icon-left-single-arrow:after{content:"\02039";font-weight:700;font-size:200%;top:-7%;left:3%}.fc-icon-right-single-arrow:after{content:"\0203A";font-weight:700;font-size:200%;top:-7%;left:-3%}.fc-icon-left-double-arrow:after{content:"\000AB";font-size:160%;top:-7%}.fc-icon-right-double-arrow:after{content:"\000BB";font-size:160%;top:-7%}.fc-icon-left-triangle:after{content:"\25C4";font-size:125%;top:3%;left:-2%}.fc-icon-right-triangle:after{content:"\25BA";font-size:125%;top:3%;left:2%}.fc-icon-down-triangle:after{content:"\25BC";font-size:125%;top:2%}.fc-icon-x:after{content:"\000D7";font-size:200%;top:6%}.fc button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;height:2.1em;padding:0 .6em;font-size:1em;white-space:nowrap;cursor:pointer}.fc button::-moz-focus-inner{margin:0;padding:0}.fc-state-default{border:1px solid}.fc-state-default.fc-corner-left{border-top-left-radius:4px;border-bottom-left-radius:4px}.fc-state-default.fc-corner-right{border-top-right-radius:4px;border-bottom-right-radius:4px}.fc button .fc-icon{position:relative;top:-.05em;margin:0 .2em;vertical-align:middle}.fc-state-default{background-color:#f5f5f5;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);color:#333;text-shadow:0 1px 1px rgba(255,255,255,.75);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.fc-state-active,.fc-state-disabled,.fc-state-down,.fc-state-hover{color:#333;background-color:#e6e6e6}.fc-state-hover{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.fc-state-active,.fc-state-down{background-color:#ccc;background-image:none;box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.fc-state-disabled{cursor:default;background-image:none;opacity:.65;box-shadow:none}.fc-button-group{display:inline-block}.fc .fc-button-group>*{float:left;margin:0 0 0 -1px}.fc .fc-button-group>:first-child{margin-left:0}.fc-popover{position:absolute;box-shadow:0 2px 6px rgba(0,0,0,.15)}.fc-popover .fc-header{padding:2px 4px}.fc-popover .fc-header .fc-title{margin:0 2px}.fc-popover .fc-header .fc-close{cursor:pointer}.fc-ltr .fc-popover .fc-header .fc-title,.fc-rtl .fc-popover .fc-header .fc-close{float:left}.fc-ltr .fc-popover .fc-header .fc-close,.fc-rtl .fc-popover .fc-header .fc-title{float:right}.fc-unthemed .fc-popover{border-width:1px;border-style:solid}.fc-unthemed .fc-popover .fc-header .fc-close{font-size:.9em;margin-top:2px}.fc-popover>.ui-widget-header+.ui-widget-content{border-top:0}.fc-divider{border-style:solid;border-width:1px}hr.fc-divider{height:0;margin:0;padding:0 0 2px;border-width:1px 0}.fc-clear{clear:both}.fc-bg,.fc-bgevent-skeleton,.fc-helper-skeleton,.fc-highlight-skeleton{position:absolute;top:0;left:0;right:0}.fc-bg{bottom:0}.fc-bg table{height:100%}.fc table{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{border-style:solid;border-width:1px;padding:0;vertical-align:top}.fc td.fc-today{border-style:double}.fc .fc-row{border-style:solid;border-width:0}.fc-row table{border-left:0 hidden transparent;border-right:0 hidden transparent;border-bottom:0 hidden transparent}.fc-row:first-child table{border-top:0 hidden transparent}.fc-row{position:relative}.fc-row .fc-bg{z-index:1}.fc-row .fc-bgevent-skeleton,.fc-row .fc-highlight-skeleton{bottom:0}.fc-row .fc-bgevent-skeleton table,.fc-row .fc-highlight-skeleton table{height:100%}.fc-row .fc-bgevent-skeleton td,.fc-row .fc-highlight-skeleton td{border-color:transparent}.fc-row .fc-bgevent-skeleton{z-index:2}.fc-row .fc-highlight-skeleton{z-index:3}.fc-row .fc-content-skeleton{position:relative;z-index:4;padding-bottom:2px}.fc-row .fc-helper-skeleton{z-index:5}.fc-row .fc-content-skeleton td,.fc-row .fc-helper-skeleton td{background:0 0;border-color:transparent;border-bottom:0}.fc-row .fc-content-skeleton tbody td,.fc-row .fc-helper-skeleton tbody td{border-top:0}.fc-scroller{overflow-y:scroll;overflow-x:hidden}.fc-scroller>*{position:relative;width:100%;overflow:hidden}.fc-event{position:relative;display:block;font-size:.85em;line-height:1.3;border-radius:3px;border:1px solid #3a87ad;background-color:#3a87ad;font-weight:400}.fc-event,.fc-event:hover,.ui-widget .fc-event{color:#fff;text-decoration:none}.fc-event.fc-draggable,.fc-event[href]{cursor:pointer}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-event .fc-bg{z-index:1;background:#fff;opacity:.25}.fc-event .fc-content{position:relative;z-index:2}.fc-event .fc-resizer{position:absolute;z-index:3}.fc-ltr .fc-h-event.fc-not-start,.fc-rtl .fc-h-event.fc-not-end{margin-left:0;border-left-width:0;padding-left:1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-ltr .fc-h-event.fc-not-end,.fc-rtl .fc-h-event.fc-not-start{margin-right:0;border-right-width:0;padding-right:1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-h-event .fc-resizer{top:-1px;bottom:-1px;left:-1px;right:-1px;width:5px}.fc-ltr .fc-h-event .fc-start-resizer,.fc-ltr .fc-h-event .fc-start-resizer:after,.fc-ltr .fc-h-event .fc-start-resizer:before,.fc-rtl .fc-h-event .fc-end-resizer,.fc-rtl .fc-h-event .fc-end-resizer:after,.fc-rtl .fc-h-event .fc-end-resizer:before{right:auto;cursor:w-resize}.fc-ltr .fc-h-event .fc-end-resizer,.fc-ltr .fc-h-event .fc-end-resizer:after,.fc-ltr .fc-h-event .fc-end-resizer:before,.fc-rtl .fc-h-event .fc-start-resizer,.fc-rtl .fc-h-event .fc-start-resizer:after,.fc-rtl .fc-h-event .fc-start-resizer:before{left:auto;cursor:e-resize}.fc-day-grid-event{margin:1px 2px 0;padding:0 1px}.fc-day-grid-event .fc-content{white-space:nowrap;overflow:hidden}.fc-day-grid-event .fc-time{font-weight:700}.fc-day-grid-event .fc-resizer{left:-3px;right:-3px;width:7px}a.fc-more{margin:1px 3px;font-size:.85em;cursor:pointer;text-decoration:none}a.fc-more:hover{text-decoration:underline}.fc-limited{display:none}.fc-day-grid .fc-row{z-index:1}.fc-more-popover{z-index:2;width:220px}.fc-more-popover .fc-event-container{padding:10px}.fc-toolbar{text-align:center;margin-bottom:1em}.fc-toolbar .fc-left{float:left}.fc-toolbar .fc-right{float:right}.fc-toolbar .fc-center{display:inline-block}.fc .fc-toolbar>*>*{float:left;margin-left:.75em}.fc .fc-toolbar>*>:first-child{margin-left:0}.fc-toolbar h2{margin:0}.fc-toolbar button{position:relative}.fc-toolbar .fc-state-hover,.fc-toolbar .ui-state-hover{z-index:2}.fc-toolbar .fc-state-down{z-index:3}.fc-toolbar .fc-state-active,.fc-toolbar .ui-state-active{z-index:4}.fc-toolbar button:focus{z-index:5}.fc-view-container *,.fc-view-container :after,.fc-view-container :before{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fc-view,.fc-view>table{position:relative;z-index:1}.fc-basicDay-view .fc-content-skeleton,.fc-basicWeek-view .fc-content-skeleton{padding-top:1px;padding-bottom:1em}.fc-basic-view .fc-body .fc-row{min-height:4em}.fc-row.fc-rigid{overflow:hidden}.fc-row.fc-rigid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-basic-view .fc-day-number,.fc-basic-view .fc-week-number{padding:0 2px}.fc-basic-view td.fc-day-number,.fc-basic-view td.fc-week-number span{padding-top:2px;padding-bottom:2px}.fc-basic-view .fc-week-number{text-align:center}.fc-basic-view .fc-week-number span{display:inline-block;min-width:1.25em}.fc-ltr .fc-basic-view .fc-day-number{text-align:right}.fc-rtl .fc-basic-view .fc-day-number{text-align:left}.fc-day-number.fc-other-month{opacity:.3}.fc-agenda-view .fc-day-grid{position:relative;z-index:2}.fc-agenda-view .fc-day-grid .fc-row{min-height:3em}.fc-agenda-view .fc-day-grid .fc-row .fc-content-skeleton{padding-top:1px;padding-bottom:1em}.fc .fc-axis{vertical-align:middle;padding:0 4px;white-space:nowrap}.fc-ltr .fc-axis{text-align:right}.fc-rtl .fc-axis{text-align:left}.ui-widget td.fc-axis{font-weight:400}.fc-time-grid,.fc-time-grid-container{position:relative;z-index:1}.fc-time-grid{min-height:100%}.fc-time-grid table{border:0 hidden transparent}.fc-time-grid>.fc-bg{z-index:1}.fc-time-grid .fc-slats,.fc-time-grid>hr{position:relative;z-index:2}.fc-time-grid .fc-bgevent-skeleton,.fc-time-grid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-time-grid .fc-bgevent-skeleton{z-index:3}.fc-time-grid .fc-highlight-skeleton{z-index:4}.fc-time-grid .fc-content-skeleton{z-index:5}.fc-time-grid .fc-helper-skeleton{z-index:6}.fc-time-grid .fc-slats td{height:1.5em;border-bottom:0}.fc-time-grid .fc-slats .fc-minor td{border-top-style:dotted}.fc-time-grid .fc-slats .ui-widget-content{background:0 0}.fc-time-grid .fc-highlight-container{position:relative}.fc-time-grid .fc-highlight{position:absolute;left:0;right:0}.fc-time-grid .fc-bgevent-container,.fc-time-grid .fc-event-container{position:relative}.fc-ltr .fc-time-grid .fc-event-container{margin:0 2.5% 0 2px}.fc-rtl .fc-time-grid .fc-event-container{margin:0 2px 0 2.5%}.fc-time-grid .fc-bgevent,.fc-time-grid .fc-event{position:absolute;z-index:1}.fc-time-grid .fc-bgevent{left:0;right:0}.fc-v-event.fc-not-start{border-top-width:0;padding-top:1px;border-top-left-radius:0;border-top-right-radius:0}.fc-v-event.fc-not-end{border-bottom-width:0;padding-bottom:1px;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-time-grid-event{overflow:hidden}.fc-time-grid-event .fc-time,.fc-time-grid-event .fc-title{padding:0 1px}.fc-time-grid-event .fc-time{font-size:.85em;white-space:nowrap}.fc-time-grid-event.fc-short .fc-content{white-space:nowrap}.fc-time-grid-event.fc-short .fc-time,.fc-time-grid-event.fc-short .fc-title{display:inline-block;vertical-align:top}.fc-time-grid-event.fc-short .fc-time span{display:none}.fc-time-grid-event.fc-short .fc-time:before{content:attr(data-start)}.fc-time-grid-event.fc-short .fc-time:after{content:"\000A0-\000A0"}.fc-time-grid-event.fc-short .fc-title{font-size:.85em;padding:0}.fc-time-grid-event .fc-resizer{left:0;right:0;bottom:0;height:8px;overflow:hidden;line-height:8px;font-size:11px;font-family:monospace;text-align:center;cursor:s-resize}.fc-time-grid-event .fc-resizer:after{content:"="}.angular-ui-tree-empty{border:1px dashed #bbb;min-height:100px;background-color:#e5e5e5;background-image:-webkit-linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff),-webkit-linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff);background-image:-moz-linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff),-moz-linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff);background-image:linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff),linear-gradient(45deg,#fff 25%,transparent 25%,transparent 75%,#fff 75%,#fff);background-size:60px 60px;background-position:0 0,30px 30px}.angular-ui-tree-nodes{position:relative;margin:0;padding:0;list-style:none}.angular-ui-tree-nodes .angular-ui-tree-nodes{padding-left:20px}.angular-ui-tree-node,.angular-ui-tree-placeholder{position:relative;margin:0;padding:0;min-height:20px;line-height:20px}.angular-ui-tree-hidden{display:none}.angular-ui-tree-placeholder{margin:5px 0;padding:0;min-height:30px}.angular-ui-tree-handle{cursor:move;text-decoration:none;font-weight:700;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;min-height:20px;line-height:20px}.angular-ui-tree-drag{position:absolute;pointer-events:none;z-index:999;opacity:.8}.hljs{display:block;overflow-x:auto;padding:.5em;background:#f0f0f0;-webkit-text-size-adjust:none}.hljs,.hljs-subst,.hljs-tag .hljs-title,.nginx .hljs-title{color:#000}.apache .hljs-cbracket,.apache .hljs-tag,.asciidoc .hljs-header,.bash .hljs-variable,.coffeescript .hljs-attribute,.django .hljs-variable,.erlang_repl .hljs-function_or_atom,.haml .hljs-symbol,.hljs-addition,.hljs-constant,.hljs-flow,.hljs-name,.hljs-parent,.hljs-pragma,.hljs-preprocessor,.hljs-rule .hljs-value,.hljs-stream,.hljs-string,.hljs-tag .hljs-value,.hljs-template_tag,.hljs-title,.markdown .hljs-header,.pf .hljs-variable,.ruby .hljs-symbol,.ruby .hljs-symbol .hljs-string,.smalltalk .hljs-class,.tex .hljs-command,.tex .hljs-special,.tp .hljs-variable{color:#800}.asciidoc .hljs-blockquote,.diff .hljs-header,.hljs-annotation,.hljs-chunk,.hljs-comment,.markdown .hljs-blockquote,.smartquote{color:#888}.asciidoc .hljs-bullet,.asciidoc .hljs-link_url,.go .hljs-constant,.hljs-change,.hljs-date,.hljs-hexcolor,.hljs-literal,.hljs-number,.hljs-regexp,.lasso .hljs-variable,.makefile .hljs-variable,.markdown .hljs-bullet,.markdown .hljs-link_url,.smalltalk .hljs-char,.smalltalk .hljs-symbol{color:#080}.apache .hljs-sqbracket,.asciidoc .hljs-attribute,.asciidoc .hljs-link_label,.clojure .hljs-attribute,.coffeescript .hljs-property,.erlang_repl .hljs-reserved,.haml .hljs-bullet,.hljs-array,.hljs-attr_selector,.hljs-decorator,.hljs-deletion,.hljs-doctype,.hljs-envvar,.hljs-filter .hljs-argument,.hljs-important,.hljs-label,.hljs-localvars,.hljs-phony,.hljs-pi,.hljs-prompt,.hljs-pseudo,.hljs-shebang,.lasso .hljs-attribute,.markdown .hljs-link_label,.nginx .hljs-built_in,.ruby .hljs-string,.tex .hljs-formula,.vhdl .hljs-attribute{color:#88f}.apache .hljs-tag,.asciidoc .hljs-strong,.bash .hljs-variable,.css .hljs-tag,.hljs-built_in,.hljs-doctag,.hljs-id,.hljs-keyword,.hljs-request,.hljs-status,.hljs-title,.hljs-type,.hljs-typename,.hljs-winutils,.markdown .hljs-strong,.pf .hljs-variable,.smalltalk .hljs-class,.tex .hljs-command,.tp .hljs-data,.tp .hljs-io{font-weight:700}.asciidoc .hljs-emphasis,.markdown .hljs-emphasis,.tp .hljs-units{font-style:italic}.nginx .hljs-built_in{font-weight:400}.coffeescript .javascript,.javascript .xml,.lasso .markup,.tex .hljs-formula,.xml .css,.xml .hljs-cdata,.xml .javascript,.xml .vbscript{opacity:.5}.moment-picker{position:relative;display:inline-block}.moment-picker .moment-picker-contents{cursor:pointer}.moment-picker .moment-picker-container{color:#404040;min-width:15em;background:#fff;padding:4px;border:1px solid #f0f3f4;border-radius:4px;position:absolute;top:100%;margin-top:4px;margin-left:-.5em;box-shadow:0 2px 4px rgba(0,0,0,.075);z-index:5}.moment-picker .moment-picker-container:after,.moment-picker .moment-picker-container:before{content:'';display:block;width:0;height:0;border:8px solid transparent;border-top:none;position:absolute;top:-9px;left:15px}.moment-picker .moment-picker-container:before{border-bottom-color:#f0f3f4;border-width:9px}.moment-picker .moment-picker-container:after{border-bottom-color:#fff;margin-top:1px;margin-left:1px}.moment-picker table{border-collapse:collapse;border-spacing:0;width:100%;table-layout:fixed}.moment-picker th{font-weight:700}.moment-picker th:first-child,.moment-picker th:last-child{width:2em}.moment-picker td,.moment-picker th{padding:0;text-align:center;min-width:2em;height:2em;text-shadow:0 1px 0 rgba(255,255,255,.9);cursor:pointer;border-radius:4px}.moment-picker td:hover,.moment-picker th:hover{background:#fafbfb;background-image:-webkit-linear-gradient(#f0f3f4,#fafbfb);background-image:-moz-linear-gradient(#f0f3f4,#fafbfb);background-image:-ms-linear-gradient(#f0f3f4,#fafbfb);background-image:-o-linear-gradient(#f0f3f4,#fafbfb);background-image:linear-gradient(#f0f3f4,#fafbfb)}.moment-picker td.selected{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.3);border-color:#3ca0dd;background:#45b1e8;background-image:-webkit-linear-gradient(#45b1e8,#3097de);background-image:-moz-linear-gradient(#45b1e8,#3097de);background-image:-ms-linear-gradient(#45b1e8,#3097de);background-image:-o-linear-gradient(#45b1e8,#3097de);background-image:linear-gradient(#45b1e8,#3097de)}.moment-picker td.disabled,.moment-picker td.disabled:hover,.moment-picker th.disabled,.moment-picker th.disabled:hover{color:#abbbc7;background:0 0;cursor:default}.moment-picker .year-view td{height:3.4em}.moment-picker .month-view .moment-picker-specific-views th{background:0 0;cursor:default}.moment-picker .month-view td{width:2.1428571429em}.moment-picker .day-view td,.moment-picker .hour-view td{height:2.3333333333em}.moment-picker .minute-view td{height:1.8em}.ps-container{-ms-touch-action:auto;touch-action:auto;overflow:hidden!important;-ms-overflow-style:none}@supports (-ms-overflow-style:none){.ps-container{overflow:auto!important}}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.ps-container{overflow:auto!important}}.ps-container.ps-active-x>.ps-scrollbar-x-rail,.ps-container.ps-active-y>.ps-scrollbar-y-rail{display:block;background-color:transparent}.ps-container.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail{background-color:#eee;opacity:.9}.ps-container.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail>.ps-scrollbar-x{background-color:#999;height:11px}.ps-container.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail{background-color:#eee;opacity:.9}.ps-container.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail>.ps-scrollbar-y{background-color:#999;width:11px}.ps-container>.ps-scrollbar-x-rail{display:none;position:absolute;opacity:0;-webkit-transition:background-color .2s linear,opacity .2s linear;-o-transition:background-color .2s linear,opacity .2s linear;-moz-transition:background-color .2s linear,opacity .2s linear;transition:background-color .2s linear,opacity .2s linear;bottom:0;height:15px}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{position:absolute;background-color:#aaa;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-transition:background-color .2s linear,height .2s linear,width .2s ease-in-out,-webkit-border-radius .2s ease-in-out;transition:background-color .2s linear,height .2s linear,width .2s ease-in-out,-webkit-border-radius .2s ease-in-out;-o-transition:background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out;-moz-transition:background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out,-moz-border-radius .2s ease-in-out;transition:background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out;transition:background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out,-webkit-border-radius .2s ease-in-out,-moz-border-radius .2s ease-in-out;bottom:2px;height:6px}.ps-container>.ps-scrollbar-x-rail:active>.ps-scrollbar-x,.ps-container>.ps-scrollbar-x-rail:hover>.ps-scrollbar-x{height:11px}.ps-container>.ps-scrollbar-y-rail{display:none;position:absolute;opacity:0;-webkit-transition:background-color .2s linear,opacity .2s linear;-o-transition:background-color .2s linear,opacity .2s linear;-moz-transition:background-color .2s linear,opacity .2s linear;transition:background-color .2s linear,opacity .2s linear;right:0;width:15px}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{position:absolute;background-color:#aaa;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-transition:background-color .2s linear,height .2s linear,width .2s ease-in-out,-webkit-border-radius .2s ease-in-out;transition:background-color .2s linear,height .2s linear,width .2s ease-in-out,-webkit-border-radius .2s ease-in-out;-o-transition:background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out;-moz-transition:background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out,-moz-border-radius .2s ease-in-out;transition:background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out;transition:background-color .2s linear,height .2s linear,width .2s ease-in-out,border-radius .2s ease-in-out,-webkit-border-radius .2s ease-in-out,-moz-border-radius .2s ease-in-out;right:2px;width:6px}.ps-container>.ps-scrollbar-y-rail:active>.ps-scrollbar-y,.ps-container>.ps-scrollbar-y-rail:hover>.ps-scrollbar-y{width:11px}.ps-container:hover.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail{background-color:#eee;opacity:.9}.ps-container:hover.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail>.ps-scrollbar-x{background-color:#999;height:11px}.ps-container:hover.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail{background-color:#eee;opacity:.9}.ps-container:hover.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail>.ps-scrollbar-y{background-color:#999;width:11px}.ps-container:hover>.ps-scrollbar-x-rail,.ps-container:hover>.ps-scrollbar-y-rail{opacity:.6}.ps-container:hover>.ps-scrollbar-x-rail:hover{background-color:#eee;opacity:.9}.ps-container:hover>.ps-scrollbar-x-rail:hover>.ps-scrollbar-x{background-color:#999}.ps-container:hover>.ps-scrollbar-y-rail:hover{background-color:#eee;opacity:.9}.ps-container:hover>.ps-scrollbar-y-rail:hover>.ps-scrollbar-y{background-color:#999}md-backdrop.md-edit-dialog-backdrop{z-index:80}md-edit-dialog{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;position:fixed;z-index:81;background-color:#f9f9f9;border-radius:2px;cursor:default}md-edit-dialog>.md-content{padding:16px 24px 0}md-edit-dialog>.md-content .md-title{color:rgba(0,0,0,.87);margin-bottom:8px}md-edit-dialog>.md-content md-input-container{margin:0;font-size:13px}md-edit-dialog>.md-content md-input-container input{float:none}md-edit-dialog>.md-content md-input-container .md-errors-spacer{min-height:auto;min-width:auto;color:rgba(0,0,0,.54)}md-edit-dialog>.md-content md-input-container .md-errors-spacer .md-char-counter{padding:5px 2px 5px 0}md-edit-dialog>.md-content md-input-container [ng-message]{padding:5px 0 5px 2px}md-edit-dialog>.md-actions{margin:0 16px 8px}md-edit-dialog>.md-actions .md-button{margin:0;min-width:initial}md-edit-dialog>.md-actions .md-button+.md-button{margin-left:8px}.md-table-pagination{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;-webkit-flex-wrap:wrap-reverse;-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse;box-sizing:border-box;padding:0 24px;font-size:12px;color:rgba(0,0,0,.54);border-top:1px rgba(0,0,0,.12) solid}.md-table-pagination md-select{-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;min-width:64px}.md-table-pagination md-select:not([disabled]):focus .md-select-value{color:rgba(0,0,0,.54)}.md-table-pagination md-select .md-select-value{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.md-table-pagination md-select .md-select-value span.md-select-icon{-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;margin-right:-6px!important}.md-table-pagination md-select .md-select-value span.md-select-icon:after{top:initial;-webkit-transform:scaleY(.5) scaleX(1);transform:scaleY(.5) scaleX(1)}.md-table-pagination>*{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:56px}.md-table-pagination>.buttons:not(:first-child),.md-table-pagination>.limit-select:not(:first-child){margin-left:32px}.md-table-pagination>.buttons{margin-right:-16px}.md-table-pagination>.buttons>.md-button.md-icon-button{margin:0}.md-table-pagination>.buttons>.label+.md-button.md-icon-button{margin-left:20px}md-select.md-table-select{margin:0}md-select.md-table-select>.md-select-value{padding:0;min-width:0;min-height:24px;border-bottom:0!important}md-select.md-table-select>.md-select-value>span{display:block;height:auto;-webkit-transform:none!important;transform:none!important}md-select.md-table-select>.md-select-value>span>.md-text{display:inherit;height:inherit;-webkit-transform:inherit;transform:inherit}md-select.md-table-select>.md-select-value>span.md-select-icon{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:24px;margin:0}md-select.md-table-select>.md-select-value>span.md-select-icon:after{top:initial}.md-select-menu-container.md-pagination-select,.md-select-menu-container.md-table-select{margin-left:-2px;border-radius:2px}.md-select-menu-container.md-pagination-select md-content,.md-select-menu-container.md-pagination-select md-select-menu,.md-select-menu-container.md-table-select md-content,.md-select-menu-container.md-table-select md-select-menu{border-radius:inherit}.md-select-menu-container.md-pagination-select md-content,.md-select-menu-container.md-table-select md-content{padding:0}.md-select-menu-container.md-table-select .md-text{font-size:13px}.md-select-menu-container.md-pagination-select .md-text{font-size:12px}md-toolbar.md-table-toolbar{box-shadow:none}md-toolbar.md-table-toolbar.md-default-theme:not(.md-menu-toolbar).md-default,md-toolbar.md-table-toolbar:not(.md-menu-toolbar).md-default{background-color:#fff;color:rgba(0,0,0,.87)}md-toolbar.md-table-toolbar.md-default-theme:not(.md-menu-toolbar).md-default .md-button,md-toolbar.md-table-toolbar:not(.md-menu-toolbar).md-default .md-button{color:rgba(0,0,0,.87)}@media only screen and (max-width:959px) and (min-width:0) and (orientation:landscape){md-toolbar.md-table-toolbar .md-toolbar-tools{height:64px;max-height:initial}}md-toolbar.md-table-toolbar .md-toolbar-tools{padding:0 24px}md-toolbar.md-table-toolbar .md-toolbar-tools md-icon{color:rgba(0,0,0,.54)}md-toolbar.md-table-toolbar .md-toolbar-tools>.md-button.md-icon-button{margin:0}md-toolbar.md-table-toolbar .md-toolbar-tools>.md-button.md-icon-button:first-child{margin-left:-12px}md-toolbar.md-table-toolbar .md-toolbar-tools>.md-button.md-icon-button:last-child{margin-right:-12px}md-card>md-table-container:first-child,md-card>md-toolbar.md-table-toolbar:first-child{border-top-left-radius:2px;border-top-right-radius:2px}md-card>md-table-container:last-child,md-card>md-toolbar.md-table-toolbar:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}md-table-container{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}table.md-table{width:100%;border-spacing:0;overflow:hidden}table.md-table thead.md-head>tr.md-row{height:56px}table.md-table tbody.md-body>tr.md-row,table.md-table tfoot.md-foot>tr.md-row{height:48px}table.md-table thead.md-head+.md-table-progress md-progress-linear{top:-3px}table.md-table .md-table-progress th{padding:0}table.md-table .md-table-progress th md-progress-linear{height:0;transition:opacity 1s}table.md-table .md-table-progress th md-progress-linear.ng-hide{opacity:0}table.md-table .md-table-progress th md-progress-linear>.md-container{height:3px;top:0;transition:none}table.md-table .md-table-progress th md-progress-linear>.md-container>.md-bar{height:3px}table.md-table th.md-column{color:rgba(0,0,0,.54);font-size:12px;font-weight:700;white-space:nowrap}table.md-table th.md-column.md-sort{cursor:pointer}table.md-table th.md-column md-icon{height:16px;width:16px;font-size:16px!important;line-height:16px!important}table.md-table th.md-column md-icon.md-sort-icon{color:rgba(0,0,0,.26);opacity:0;transition:-webkit-transform .25s,opacity .25s;transition:transform .25s,opacity .25s}table.md-table th.md-column md-icon.md-sort-icon.md-asc{-webkit-transform:rotate(0);transform:rotate(0)}table.md-table th.md-column md-icon.md-sort-icon.md-desc{-webkit-transform:rotate(180deg);transform:rotate(180deg)}table.md-table th.md-column md-icon:not(:first-child){margin-left:8px}table.md-table th.md-column md-icon:not(:last-child){margin-right:8px}table.md-table th.md-column.md-active,table.md-table th.md-column.md-active md-icon{color:rgba(0,0,0,.87)}table.md-table th.md-column.md-active md-icon.md-sort-icon,table.md-table th.md-column:hover md-icon.md-sort-icon{opacity:1}table.md-table tr.md-row[data-ng-repeat].ng-leave,table.md-table tr.md-row[ng-repeat].ng-leave,table.md-table tr.md-row[ng\:repeat].ng-leave,table.md-table tr.md-row[x-ng-repeat].ng-leave{display:none}table.md-table.md-row-select tbody.md-body>tr.md-row{transition:background-color .2s}table.md-table.md-row-select tbody.md-body>tr.md-row:not([disabled]):hover{background-color:#eee!important}table.md-table.md-row-select tbody.md-body>tr.md-row.md-selected{background-color:#f5f5f5}table.md-table.md-row-select td.md-cell:first-child,table.md-table.md-row-select th.md-column:first-child{width:20px;padding:0 0 0 24px}table.md-table.md-row-select td.md-cell:nth-child(2),table.md-table.md-row-select th.md-column:nth-child(2){padding:0 24px}table.md-table.md-row-select td.md-cell:nth-child(n+3):nth-last-child(n+2),table.md-table.md-row-select th.md-column:nth-child(n+3):nth-last-child(n+2){padding:0 56px 0 0}table.md-table:not(.md-row-select) td.md-cell:first-child,table.md-table:not(.md-row-select) th.md-column:first-child{padding:0 24px}table.md-table:not(.md-row-select) td.md-cell:nth-child(n+2):nth-last-child(n+2),table.md-table:not(.md-row-select) th.md-column:nth-child(n+2):nth-last-child(n+2){padding:0 56px 0 0}table.md-table td.md-cell,table.md-table th.md-column{vertical-align:middle;text-align:left}table.md-table td.md-cell>*,table.md-table th.md-column>*{vertical-align:middle}table.md-table td.md-cell:last-child,table.md-table th.md-column:last-child{padding:0 24px 0 0}table.md-table td.md-cell.md-clickable,table.md-table th.md-column.md-clickable{cursor:pointer}table.md-table td.md-cell.md-clickable:focus,table.md-table th.md-column.md-clickable:focus{outline:0}table.md-table td.md-cell.md-numeric,table.md-table th.md-column.md-numeric{text-align:right}table.md-table td.md-cell md-checkbox,table.md-table th.md-column md-checkbox{margin:0;width:20px}table.md-table td.md-cell{color:rgba(0,0,0,.87);font-size:13px;border-top:1px rgba(0,0,0,.12) solid}table.md-table td.md-cell.md-numeric md-select{-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end}table.md-table td.md-cell.md-numeric md-select .md-select-value{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}table.md-table td.md-cell.md-placeholder{color:rgba(0,0,0,.26)}table.md-table td.md-cell md-select>.md-select-value>span.md-select-icon{-webkit-justify-content:flex-end;-ms-flex-pack:end;justify-content:flex-end;color:rgba(0,0,0,.54);width:18px;text-align:right}table.md-table td.md-cell md-select>.md-select-value>span.md-select-icon:after{-webkit-transform:scaleY(.4) scaleX(.8);transform:scaleY(.4) scaleX(.8)}/*!
  * angular-toasty
  */@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(data:font/ttf;base64,AAEAAAASAQAABAAgR0RFRgUwBPIAAHGoAAAATEdQT1PO9uRJAABx9AAADQ5HU1VClCaeUgAAfwQAAACIT1MvMqCnsaYAAGkIAAAAYGNtYXDigyFaAABqUAAAAzhjdnQgJEEG5QAAcCAAAABMZnBnbWf0XKsAAG2IAAABvGdhc3AACAATAABxnAAAAAxnbHlmCBgu+gAAASwAAGImaGRteAQC+OIAAGloAAAA6GhlYWT4RqsOAABlNAAAADZoaGVhCroGfQAAaOQAAAAkaG10eIFaUZ8AAGVsAAADdmxvY2E6/CGoAABjdAAAAb5tYXhwAw4C+QAAY1QAAAAgbmFtZRBvLKkAAHBsAAABEHBvc3T/bQBkAABxfAAAACBwcmVwdKCP7AAAb0QAAADbAAUAZAAAAygFsAADAAYACQAMAA8AcbIMEBEREjmwDBCwANCwDBCwBtCwDBCwCdCwDBCwDdAAsABFWLACLxuxAhw+WbAARViwAC8bsQAQPlmyBAIAERI5sgUCABESObIHAgAREjmyCAIAERI5sQoM9LIMAgAREjmyDQIAERI5sAIQsQ4M9DAxISERIQMRAQERAQMhATUBIQMo/TwCxDb+7v66AQzkAgP+/gEC/f0FsPqkBQf9fQJ3+xECeP1eAl6IAl4AAgCg//UBewWwAAMADAAvALAARViwAi8bsQIcPlmwAEVYsAsvG7ELED5ZsgYFCitYIdgb9FmyAQYCERI5MDEBIwMzAzQ2MhYUBiImAVunDcLJN2w4OGw3AZsEFfqtLT09Wjs7AAIAiAQSAiMGAAAEAAkAGQCwAy+yAgoDERI5sAIvsAfQsAMQsAjQMDEBAyMTMwUDIxMzARUebwGMAQ4ebwGMBXj+mgHuiP6aAe4AAgB3AAAE0wWwABsAHwCPALAARViwDC8bsQwcPlmwAEVYsBAvG7EQHD5ZsABFWLACLxuxAhA+WbAARViwGi8bsRoQPlmyHQwCERI5fLAdLxiyAAMKK1gh2Bv0WbAE0LAdELAG0LAdELAL0LALL7IIAworWCHYG/RZsAsQsA7QsAsQsBLQsAgQsBTQsB0QsBbQsAAQsBjQsAgQsB7QMDEBIQMjEyM1IRMhNSETMwMhEzMDMxUjAzMVIwMjAyETIQL9/vhQj1DvAQlF/v4BHVKPUgEIUpBSzOdF4ftQkJ4BCEX++AGa/mYBmokBYosBoP5gAaD+YIv+non+ZgIjAWIAAAEAbv8wBBEGnAArAGYAsABFWLAJLxuxCRw+WbAARViwIi8bsSIQPlmyAiIJERI5sAkQsAzQsAkQsBDQsAkQshMBCitYIdgb9FmwAhCyGQEKK1gh2Bv0WbAiELAf0LAiELAm0LAiELIpAQorWCHYG/RZMDEBNCYnJiY1NDY3NTMVFhYVIzQmIyIGFRQWBBYWFRQGBxUjNSYmNTMUFjMyNgNYgZnVw7+nlai7uIZyd36FATGrUcu3lLrTuZKGg5YBd1x+M0HRoaTSFNvcF+zNjaZ7bmZ5Y3eeaqnOE7+/EefGi5Z+AAUAaf/rBYMFxQANABoAJgA0ADgAeACwAEVYsAMvG7EDHD5ZsABFWLAjLxuxIxA+WbADELAK0LAKL7IRBAorWCHYG/RZsAMQshgECitYIdgb9FmwIxCwHdCwHS+wIxCyKgQKK1gh2Bv0WbAdELIxBAorWCHYG/RZsjUjAxESObA1L7I3AyMREjmwNy8wMRM0NjMyFhUVFAYjIiY1FxQWMzI2NTU0JiIGFQE0NiAWFRUUBiAmNRcUFjMyNjU1NCYjIgYVBScBF2mng4Wlp4GCqopYSkdXVpRWAjunAQaop/78qopYSkhWV0lHWf4HaQLHaQSYg6qriEeEp6eLB05lYlVJTmZmUvzRg6moi0eDqaeLBk9lY1VKT2RjVPNCBHJCAAMAZf/sBPMFxAAeACcAMwCFALAARViwCS8bsQkcPlmwAEVYsBwvG7EcED5ZsABFWLAYLxuxGBA+WbIiHAkREjmyKgkcERI5sgMiKhESObIQKiIREjmyEQkcERI5shMcCRESObIZHAkREjmyFhEZERI5sBwQsh8BCitYIdgb9FmyIR8RERI5sAkQsjEBCitYIdgb9FkwMRM0NjcmJjU0NjMyFhUUBgcHATY1MxQHFyMnBgYjIiQFMjcBBwYVFBYDFBc3NjY1NCYjIgZldaVhQsSolsRZb2sBRESne9DeYUrHZ9X+/gHXk3r+nSGnmSJ2dkQyZExSYAGHabB1dpBHpryvhViVUk/+fYKf/6j5c0JF4ktwAakYe4J2jgPlYJBTMFc+Q1lvAAEAZwQhAP0GAAAEABAAsAMvsgIFAxESObACLzAxEwMjEzP9FYEBlQWR/pAB3wABAIX+KgKVBmsAEQAJALAOL7AELzAxEzQSEjcXBgIDBxATFhcHJicChXnwgSaSuwkBjVV1JoV57AJP4gGgAVRGenD+NP7jVf5+/uSqYHFKrgFUAAABACb+KgI3BmsAEQAJALAOL7AELzAxARQCAgcnNhITNTQCAic3FhISAjd18YQnmrsCWJ1iJ4TvdwJF3/5n/qZJcXYB8QEvINIBaQEeUHFJ/qr+ZAABABwCYQNVBbAADgAgALAARViwBC8bsQQcPlmwANAZsAAvGLAJ0BmwCS8YMDEBJTcFAzMDJRcFEwcDAycBSv7SLgEuCZkKASku/s3GfLq0fQPXWpdwAVj+o26YW/7xXgEg/udbAAABAE4AkgQ0BLYACwAaALAJL7AA0LAJELIGAQorWCHYG/RZsAPQMDEBIRUhESMRITUhETMCngGW/mq6/moBlroDDa/+NAHMrwGpAAEAHf7eATQA2wAIABcAsAkvsgQFCitYIdgb9FmwANCwAC8wMRMnNjc1MxUUBoZpXgS1Y/7eSIOLp5FlygAAAQAlAh8CDQK2AAMAEQCwAi+yAQEKK1gh2Bv0WTAxASE1IQIN/hgB6AIflwABAJD/9QF2ANEACQAbALAARViwBy8bsQcQPlmyAgUKK1gh2Bv0WTAxNzQ2MhYVFAYiJpA5cjs7cjlhMEBAMC4+PgABABL/gwMQBbAAAwATALAAL7AARViwAi8bsQIcPlkwMRcjATOxnwJgnn0GLQAAAgBz/+wECgXEAA0AGwA5ALAARViwCi8bsQocPlmwAEVYsAMvG7EDED5ZsAoQshEBCitYIdgb9FmwAxCyGAEKK1gh2Bv0WTAxARACIyICAzUQEjMyEhMnNCYjIgYHERQWMzI2NwQK3uzp4ATe7eveA7mEj46CAomLiYUDAm3+u/7EATUBM/cBQQE4/tP+xg3r19be/tjs4dTkAAEAqgAAAtkFtwAGADkAsABFWLAFLxuxBRw+WbAARViwAC8bsQAQPlmyBAAFERI5sAQvsgMBCitYIdgb9FmyAgMFERI5MDEhIxEFNSUzAtm6/osCEh0E0YmoxwAAAQBdAAAEMwXEABcATQCwAEVYsBAvG7EQHD5ZsABFWLAALxuxABA+WbIXAQorWCHYG/RZsALQsgMQFxESObAQELIJAQorWCHYG/RZsBAQsAzQshUXEBESOTAxISE1ATY2NTQmIyIGFSM0JDMyFhUUAQEhBDP8RgH4cFWKc4qZuQED2cvs/u7+egLbhQIwf59VcpKdjMn41bHX/tf+WQABAF7/7AP5BcQAJgB4ALAARViwDS8bsQ0cPlmwAEVYsBkvG7EZED5ZsgANGRESObAAL7LPAAFdsp8AAXGyLwABXbJfAAFysA0QsgYBCitYIdgb9FmwDRCwCdCwABCyJgEKK1gh2Bv0WbITJgAREjmwGRCwHNCwGRCyHwEKK1gh2Bv0WTAxATM2NjUQIyIGFSM0NjMyFhUUBgcWFhUUBCAkNTMUFjMyNjU0JicjAYaLg5b/eI+5/cPO6ntqeIP/AP5m/v+6ln6GjpyTiwMyAoZyAQCJca3l2sJfsiwmsH/E5t62c4qMg3+IAgACADUAAARQBbAACgAOAEkAsABFWLAJLxuxCRw+WbAARViwBC8bsQQQPlmyAQkEERI5sAEvsgIBCitYIdgb9FmwBtCwARCwC9CyCAYLERI5sg0JBBESOTAxATMVIxEjESE1ATMBIREHA4bKyrr9aQKMxf2BAcUWAemX/q4BUm0D8fw5AsooAAEAmv/sBC0FsAAdAGEAsABFWLABLxuxARw+WbAARViwDS8bsQ0QPlmwARCyBAEKK1gh2Bv0WbIHDQEREjmwBy+yGgEKK1gh2Bv0WbIFBxoREjmwDRCwEdCwDRCyFAEKK1gh2Bv0WbAHELAd0DAxExMhFSEDNjMyEhUUAiMiJiczFhYzMjY1NCYjIgcHzkoC6v2zLGuIx+rz2sH0Ea8RkHaBk5+EeUUxAtoC1qv+cz/++eDh/v3WvX1/sJuSsTUoAAIAhP/sBBwFsQAUACEATgCwAEVYsAAvG7EAHD5ZsABFWLANLxuxDRA+WbAAELIBAQorWCHYG/RZsgcNABESObAHL7IVAQorWCHYG/RZsA0QshwBCitYIdgb9FkwMQEVIwYEBzYzMhIVFAIjIgA1NRAAJQMiBgcVFBYzMjY1NCYDTyLY/wAUc8e+4/XO0f78AVcBU9JfoB+ieX2PkQWxnQT44YT+9NTh/vIBQf1HAZIBqQX9cHJWRLTcuJWWuQABAE0AAAQlBbAABgAyALAARViwBS8bsQUcPlmwAEVYsAEvG7EBED5ZsAUQsgMBCitYIdgb9FmyAAMFERI5MDEBASMBITUhBCX9pcICWfzsA9gFSPq4BRiYAAADAHD/7AQOBcQAFwAhACsAYQCwAEVYsBUvG7EVHD5ZsABFWLAJLxuxCRA+WbInCRUREjmwJy+yzycBXbIaAQorWCHYG/RZsgMaJxESObIPJxoREjmwCRCyHwEKK1gh2Bv0WbAVELIiAQorWCHYG/RZMDEBFAYHFhYVFAYjIiY1NDY3JiY1NDYzMhYDNCYiBhQWMzI2ASIGFRQWMjY0JgPsc2Jyhf/Q0v2BcmFw7MHA7Zeb+peTg4KU/upth4XehYoENG2qMDG8d73g4bx2vjEwqmy42Nj8oXqamPiOjwQah3RviYnejAAAAgBk//8D+AXEABcAJABYALAARViwCy8bsQscPlmwAEVYsBMvG7ETED5ZsgMTCxESObADL7IAAwsREjmwExCyFAEKK1gh2Bv0WbADELIYAQorWCHYG/RZsAsQsh8BCitYIdgb9FkwMQEGBiMiJiY1NDY2MzISERUQAAUjNTM2NiUyNjc1NCYjIgYVFBYDPjqhYH67Zm/MiNj5/rD+rSQn5fb+7l2dJJ55epSPAoBFVHzhiJLqfP69/uk2/lf+eQWcBOf6clRKtuS7mZXBAP//AIb/9QFtBEQAJgAS9gABBwAS//cDcwAQALAARViwDS8bsQ0YPlkwMf//ACn+3gFVBEQAJwAS/98DcwEGABAMAAAQALAARViwAy8bsQMYPlkwMQABAEgAwwN6BEoABgAWALAARViwBS8bsQUYPlmwAtCwAi8wMQEFFQE1ARUBCAJy/M4DMgKE/cQBe5IBesQAAAIAmAGPA9oDzwADAAcAJQCwBy+wA9CwAy+yAAEKK1gh2Bv0WbAHELIEAQorWCHYG/RZMDEBITUhESE1IQPa/L4DQvy+A0IDLqH9wKAAAAEAhgDEA9wESwAGABYAsABFWLACLxuxAhg+WbAF0LAFLzAxAQE1ARUBNQMb/WsDVvyqAooBA77+hpL+hcAAAgBL//UDdgXEABgAIQBRALAARViwEC8bsRAcPlmwAEVYsCAvG7EgED5ZshsFCitYIdgb9FmyABsQERI5sgQQABESObAQELIJAQorWCHYG/RZsBAQsAzQshUAEBESOTAxATY2Nzc2NTQmIyIGFSM2NjMyFhUUBwcGFQM0NjIWFAYiJgFlAjJNg1RuaWZ8uQLjtr3Tom1JwTdsODhsNwGad4pUh19taXdsW6LHy7GvqmxRmP7DLT09Wjs7AAACAGr+OwbWBZcANQBCAGgAsDIvsABFWLAILxuxCBA+WbAD0LIPMggREjmwDy+yBQgPERI5sAgQsjkCCitYIdgb9FmwFdCwMhCyGwIKK1gh2Bv0WbAIELAq0LAqL7IjAgorWCHYG/RZsA8QskACCitYIdgb9FkwMQEGAiMiJwYGIyImNzYSNjMyFhcDBjMyNjcSACEiBAIHBhIEMzI2NxcGBiMiJAITEhIkMzIEEgEGFjMyNjc3EyYjIgYGygzYtbs1NotKjpITD3m/aVGAUDQTk3GMBhP+uf6yyf7ItAsMkAEn0Vq1PCU+zWn6/pizDAzeAXzv+QFkrvvyDlFYPG8kAS44QHWZAfby/uioVVPozaUBA5QrP/3W5+C0AYUBmMf+iPb4/pPBLCNzJzLhAacBGwETAbfv4P5a/pCOmGZfCQH3He4AAAIAHAAABR0FsAAHAAoARgCwAEVYsAQvG7EEHD5ZsABFWLACLxuxAhA+WbAARViwBi8bsQYQPlmyCQQCERI5sAkvsgABCitYIdgb9FmyCgQCERI5MDEBIQMjATMBIwEhAwPN/Z6JxgIsqAItxf1NAe/4AXz+hAWw+lACGgKpAAMAqQAABIgFsAAOABYAHwBVALAARViwAS8bsQEcPlmwAEVYsAAvG7EAED5ZshcAARESObAXL7IPAQorWCHYG/RZsggPFxESObAAELIQAQorWCHYG/RZsAEQsh8BCitYIdgb9FkwMTMRITIWFRQGBxYWFRQGIwERITI2NRAhJSEyNjU0JiMhqQHc7e90ZHaJ/uj+xwE9hpv+4v7AASJ+l4yP/uQFsMTAZp0rIbmAxOACqf30i3oBB5p+bHhtAAABAHf/7ATYBcQAHABFALAARViwCy8bsQscPlmwAEVYsAMvG7EDED5ZsAsQsA/QsAsQshIBCitYIdgb9FmwAxCyGQEKK1gh2Bv0WbADELAc0DAxAQYEIyAAETU0EiQzMgAXIyYmIyICFRUUEjMyNjcE2Bv+4e7+/v7JkQEKr+gBGBfBGaeWuNHGsqCrHAHO5/sBcgE2jMsBNKX+/eWunP7w+43t/uiRtAACAKkAAATGBbAACwAVADkAsABFWLABLxuxARw+WbAARViwAC8bsQAQPlmwARCyDAEKK1gh2Bv0WbAAELINAQorWCHYG/RZMDEzESEyBBIXFRQCBAcDETMyEjU1NAInqQGbvgEknwGf/tnE08re9+nWBbCo/srJXc7+yqYCBRL7iwEU/1X4ARMCAAABAKkAAARGBbAACwBOALAARViwBi8bsQYcPlmwAEVYsAQvG7EEED5ZsgsEBhESObALL7IAAQorWCHYG/RZsAQQsgIBCitYIdgb9FmwBhCyCAEKK1gh2Bv0WTAxASERIRUhESEVIREhA+D9iQLd/GMDk/0tAncCof38nQWwnv4sAAEAqQAABC8FsAAJAEAAsABFWLAELxuxBBw+WbAARViwAi8bsQIQPlmyCQIEERI5sAkvsgABCitYIdgb9FmwBBCyBgEKK1gh2Bv0WTAxASERIxEhFSERIQPM/Z3AA4b9OgJjAoP9fQWwnv4OAAEAev/sBNwFxAAfAGIAsABFWLALLxuxCxw+WbAARViwAy8bsQMQPlmwCxCwD9CwCxCyEQEKK1gh2Bv0WbADELIYAQorWCHYG/RZsh4DCxESObAeL7QPHh8eAl20Px5PHgJdsh0BCitYIdgb9FkwMSUGBCMiJAInNRAAITIEFyMCISICAxUUEjMyNjcRITUhBNxK/vewsv7slwIBMwEW5AEWH8A2/t7BxwHgv2yiNf6vAhC/ammnATTLfwFJAWrp1gEh/vH+/3f1/t8wOQFHnAABAKkAAAUIBbAACwBVALAARViwBi8bsQYcPlmwAEVYsAovG7EKHD5ZsABFWLAALxuxABA+WbAARViwBC8bsQQQPlmwABCwCdCwCS+ynwkBcrIvCQFdsgIBCitYIdgb9FkwMSEjESERIxEzESERMwUIwf0iwMAC3sECof1fBbD9jgJyAAABALcAAAF3BbAAAwAdALAARViwAi8bsQIcPlmwAEVYsAAvG7EAED5ZMDEhIxEzAXfAwAWwAAABADX/7APMBbAADwAuALAARViwAC8bsQAcPlmwAEVYsAUvG7EFED5ZsAnQsAUQsgwBCitYIdgb9FkwMQEzERQGIyImNTMUFjMyNjcDC8H70dnywImCd5MBBbD7+dHs3sh9jJaHAAABAKkAAAUFBbAACwB0ALAARViwBS8bsQUcPlmwAEVYsAcvG7EHHD5ZsABFWLACLxuxAhA+WbAARViwCy8bsQsQPlmyAAIFERI5QBFKAFoAagB6AIoAmgCqALoACF2yOQABXbIGBQIREjlAEzYGRgZWBmYGdgaGBpYGpga2BgldMDEBBxEjETMRATMBASMCG7LAwAKH6P3DAmrmAqW5/hQFsP0wAtD9ffzTAAEAqQAABBwFsAAFACgAsABFWLAELxuxBBw+WbAARViwAi8bsQIQPlmyAAEKK1gh2Bv0WTAxJSEVIREzAWoCsvyNwZ2dBbAAAAEAqQAABlIFsAAOAFkAsABFWLAALxuxABw+WbAARViwAi8bsQIcPlmwAEVYsAQvG7EEED5ZsABFWLAILxuxCBA+WbAARViwDC8bsQwQPlmyAQAEERI5sgcABBESObIKAAQREjkwMQkCMxEjERMBIwETESMRAaEB3AHc+cAS/iKT/iMTwAWw+1wEpPpQAjcCZPtlBJj9n/3JBbAAAAEAqQAABQgFsAAJAEyyAQoLERI5ALAARViwBS8bsQUcPlmwAEVYsAgvG7EIHD5ZsABFWLAALxuxABA+WbAARViwAy8bsQMQPlmyAgUAERI5sgcFABESOTAxISMBESMRMwERMwUIwf0jwcEC378EYvueBbD7mQRnAAIAdv/sBQkFxAARAB8AOQCwAEVYsA0vG7ENHD5ZsABFWLAELxuxBBA+WbANELIVAQorWCHYG/RZsAQQshwBCitYIdgb9FkwMQEUAgQjIiQCJzU0EiQzMgQSFScQAiMiAgcVFBIzMhI3BQmQ/viwrP72kwKSAQusrwELkL/Qu7bRA9O5uswDAqnW/sGoqQE5zmnSAUKrqf6/1QIBAwEV/uv2a/v+4QEP/QAAAgCpAAAEwAWwAAoAEwBNsgoUFRESObAKELAM0ACwAEVYsAMvG7EDHD5ZsABFWLABLxuxARA+WbILAwEREjmwCy+yAAEKK1gh2Bv0WbADELISAQorWCHYG/RZMDEBESMRITIEFRQEIyUhMjY1NCYnIQFpwAIZ7wEP/vf3/qkBWZqkpI/+nAI6/cYFsPTJ1OWdkYmCnAMAAgBt/woFBgXEABUAIgBNsggjJBESObAIELAZ0ACwAEVYsBEvG7ERHD5ZsABFWLAILxuxCBA+WbIDCBEREjmwERCyGQEKK1gh2Bv0WbAIELIgAQorWCHYG/RZMDEBFAIHBQclBiMiJAInNTQSJDMyBBIVJxACIyICBxUUEiASNwUBhnkBBIP+zUhQrP72kwKSAQussAELkMDNvrXRA9EBdMwDAqnT/s9WzHn0EqkBOc5p0gFCq6r+wdUBAQEBF/7r9mv6/uABD/0AAAIAqAAABMkFsAAOABcAYbIFGBkREjmwBRCwFtAAsABFWLAELxuxBBw+WbAARViwAi8bsQIQPlmwAEVYsA0vG7ENED5ZshAEAhESObAQL7IAAQorWCHYG/RZsgsABBESObAEELIWAQorWCHYG/RZMDEBIREjESEyBBUUBgcBFSMBITI2NTQmJyECv/6qwQHi9gEJk4MBVs79bgEnj6mhmP7aAk39swWw4NaIyjL9lgwC6pR8h5ABAAABAFD/7ARyBcQAJgBhsgAnKBESOQCwAEVYsAYvG7EGHD5ZsABFWLAaLxuxGhA+WbAGELAL0LAGELIOAQorWCHYG/RZsiYaBhESObAmELIUAQorWCHYG/RZsBoQsB/QsBoQsiIBCitYIdgb9FkwMQEmJjU0JDMyFhYVIzQmIyIGFRQWBBYWFRQEIyIkJjUzFBYzMjY0JgJW9+EBE9yW64HBqJmOn5cBa81j/uznlv78jcHDo5iilgKJR8+YrOF0zHmEl31vWXtme6RvsdVzyH+EmXzWdQAAAQAxAAAElwWwAAcALgCwAEVYsAYvG7EGHD5ZsABFWLACLxuxAhA+WbAGELIAAQorWCHYG/RZsATQMDEBIREjESE1IQSX/iy//i0EZgUS+u4FEp4AAQCM/+wEqgWwABIAPLIFExQREjkAsABFWLAALxuxABw+WbAARViwCS8bsQkcPlmwAEVYsAUvG7EFED5Zsg4BCitYIdgb9FkwMQERBgAHByIAJxEzERQWMzI2NREEqgH+/9wz7/7kAr6uoaOtBbD8Is7++hACAQLiA+D8Jp6vrp4D2wAAAQAcAAAE/QWwAAYAOLIABwgREjkAsABFWLABLxuxARw+WbAARViwBS8bsQUcPlmwAEVYsAMvG7EDED5ZsgABAxESOTAxJQEzASMBMwKLAaDS/eSq/eXR/wSx+lAFsAAAAQA9AAAG7QWwABIAWQCwAEVYsAMvG7EDHD5ZsABFWLAILxuxCBw+WbAARViwES8bsREcPlmwAEVYsAovG7EKED5ZsABFWLAPLxuxDxA+WbIBAwoREjmyBgMKERI5sg0DChESOTAxARc3ATMBFzcTMwEjAScHASMBMwHjHCkBIKIBGSgf4sH+n6/+1BcX/smv/qDAAcvArQP4/AiwxAPk+lAEJW9v+9sFsAABADkAAATOBbAACwBrALAARViwAS8bsQEcPlmwAEVYsAovG7EKHD5ZsABFWLAELxuxBBA+WbAARViwBy8bsQcQPlmyAAEEERI5QAmGAJYApgC2AARdsgYBBBESOUAJiQaZBqkGuQYEXbIDAAYREjmyCQYAERI5MDEBATMBASMBASMBATMChAFd4v40Adfk/pr+mOMB2P4z4QOCAi79Lv0iAjj9yALeAtIAAAEADwAABLsFsAAIADEAsABFWLABLxuxARw+WbAARViwBy8bsQccPlmwAEVYsAQvG7EEED5ZsgABBBESOTAxAQEzAREjEQEzAmUBfNr+CsD+CtwC1QLb/G/94QIfA5EAAAEAVgAABHoFsAAJAEQAsABFWLAHLxuxBxw+WbAARViwAi8bsQIQPlmyAAEKK1gh2Bv0WbIEAAIREjmwBxCyBQEKK1gh2Bv0WbIJBQcREjkwMSUhFSE1ASE1IRUBOQNB+9wDHvzvA/ednZAEgp6NAAABAJL+yAILBoAABwAiALAEL7AHL7IAAQorWCHYG/RZsAQQsgMBCitYIdgb9FkwMQEjETMVIREhAgu/v/6HAXkF6Pl4mAe4AAABACj/gwM4BbAAAwATALACL7AARViwAC8bsQAcPlkwMRMzASMosAJgsAWw+dMAAQAJ/sgBgwaAAAcAJQCwAi+wAS+wAhCyBQEKK1gh2Bv0WbABELIGAQorWCHYG/RZMDETIREhNTMRIwkBev6GwcEGgPhImAaIAAABAEAC2QMUBbAABgAnsgAHCBESOQCwAEVYsAMvG7EDHD5ZsADQsgEHAxESObABL7AF0DAxAQMjATMBIwGqvqwBK38BKqsEu/4eAtf9KQABAAT/aQOYAAAAAwAbALAARViwAy8bsQMQPlmyAAEKK1gh2Bv0WTAxBSE1IQOY/GwDlJeXAAABADkE2AHaBf4AAwAjALABL7IPAQFdsADQGbAALxiwARCwAtCwAi+0DwIfAgJdMDEBIwEzAdqf/v7fBNgBJgAAAgBt/+wD6gROAB4AKAB5shcpKhESObAXELAg0ACwAEVYsBcvG7EXGD5ZsABFWLAELxuxBBA+WbAARViwAC8bsQAQPlmyAhcEERI5sgsXBBESObALL7AXELIPAQorWCHYG/RZshILFxESObAEELIfAQorWCHYG/RZsAsQsiMBCitYIdgb9FkwMSEmJwYjIiY1NCQzMzU0JiMiBhUjNDY2MzIWFxEUFxUlMjY3NSMgFRQWAygQCoGzoM0BAem0dHFjhrpzxXa71AQm/gtXnCOR/qx0IFKGtYupu1Vhc2RHUZdYu6T+DpVYEI1aSN7HV2IAAgCM/+wEIAYAAA4AGQBkshIaGxESObASELAD0ACwCC+wAEVYsAwvG7EMGD5ZsABFWLADLxuxAxA+WbAARViwBi8bsQYQPlmyBQgDERI5sgoMAxESObAMELISAQorWCHYG/RZsAMQshcBCitYIdgb9FkwMQEUAiMiJwcjETMRNiASESc0JiMiBxEWMzI2BCDkwM1wCaq5cAGK4bmSibdQVbSFlAIR+P7TkX0GAP3Di/7W/v0Fvc6q/iyqzgABAFz/7APsBE4AHQBJshAeHxESOQCwAEVYsBAvG7EQGD5ZsABFWLAILxuxCBA+WbIAAQorWCHYG/RZsAgQsAPQsBAQsBTQsBAQshcBCitYIdgb9FkwMSUyNjczDgIjIgARNTQ2NjMyFhcjJiYjIgYVFRQWAj5jlAivBXbFbt3++3TZlLbxCK8Ij2mNm5qDeFpdqGQBJwEAH572iNquaYfLwCO7ygAAAgBf/+wD8AYAAA8AGgBkshgbHBESObAYELAD0ACwBi+wAEVYsAMvG7EDGD5ZsABFWLAMLxuxDBA+WbAARViwCC8bsQgQPlmyBQMMERI5sgoDDBESObAMELITAQorWCHYG/RZsAMQshgBCitYIdgb9FkwMRM0EjMyFxEzESMnBiMiAjUXFBYzMjcRJiMiBl/sv75vuaoJb8a87bmYhrBRU6yImAIm+QEvggI0+gB0iAE0+Ae40J4B8ZnSAAACAF3/7APzBE4AFQAdAGmyCB4fERI5sAgQsBbQALAARViwCC8bsQgYPlmwAEVYsAAvG7EAED5ZshoIABESObAaL7S/Gs8aAl2yDAEKK1gh2Bv0WbAAELIQAQorWCHYG/RZshMIABESObAIELIWAQorWCHYG/RZMDEFIgA1NTQ2NjMyEhEVIRYWMzI2NxcGASIGByE1JiYCTdz+7HvdgdPq/SMEs4piiDNxiP7ZcJgSAh4IiBQBIfIiof2P/ur+/U2gxVBCWNEDyqOTDo2bAAEAPAAAAsoGFQAVAGOyDxYXERI5ALAARViwCC8bsQgePlmwAEVYsAMvG7EDGD5ZsABFWLARLxuxERg+WbAARViwAC8bsQAQPlmwAxCyAQEKK1gh2Bv0WbAIELINAQorWCHYG/RZsAEQsBPQsBTQMDEzESM1MzU0NjMyFwcmIyIGFRUzFSMR56uruqpAPwovNVpi5+cDq49vrr4RlglpYnKP/FUAAgBg/lYD8gROABkAJACDsiIlJhESObAiELAL0ACwAEVYsAMvG7EDGD5ZsABFWLAGLxuxBhg+WbAARViwCy8bsQsSPlmwAEVYsBcvG7EXED5ZsgUDFxESObIPFwsREjmwCxCyEQEKK1gh2Bv0WbIVAxcREjmwFxCyHQEKK1gh2Bv0WbADELIiAQorWCHYG/RZMDETNBIzMhc3MxEUBiMiJic3FjMyNjU1BiMiAjcUFjMyNxEmIyIGYOrBxm8JqfnSdeA7YHesh5dvwL7rupaHr1JVqoeYAib9ASuMePvg0vJkV2+TmIpdgAEy87fRnwHum9IAAAEAjAAAA98GAAARAEmyChITERI5ALAQL7AARViwAi8bsQIYPlmwAEVYsAUvG7EFED5ZsABFWLAOLxuxDhA+WbIAAgUREjmwAhCyCgEKK1gh2Bv0WTAxATYzIBMRIxEmJiMiBgcRIxEzAUV7xQFXA7kBaW9aiCa5uQO3l/59/TUCzHVwYE78/QYAAAIAjQAAAWgFxAADAAwAPrIGDQ4REjmwBhCwAdAAsABFWLACLxuxAhg+WbAARViwAC8bsQAQPlmwAhCwCtCwCi+yBgUKK1gh2Bv0WTAxISMRMwM0NjIWFAYiJgFVubnIN2w4OGw3BDoBHy0+Plo8PAAC/7/+SwFZBcQADAAWAEmyEBcYERI5sBAQsADQALAARViwDC8bsQwYPlmwAEVYsAMvG7EDEj5ZsggBCitYIdgb9FmwDBCwFdCwFS+yEAUKK1gh2Bv0WTAxAREQISInNRYzMjY1EQM0NjMyFhQGIiYBS/7lPTQgND5BEzc1Njg4bDYEOvtJ/sgSlAhDUwS7AR8sPz5aPDwAAAEAjQAABAwGAAAMAHUAsABFWLAELxuxBB4+WbAARViwCC8bsQgYPlmwAEVYsAIvG7ECED5ZsABFWLALLxuxCxA+WbIACAIREjlAFToASgBaAGoAegCKAJoAqgC6AMoACl2yBggCERI5QBU2BkYGVgZmBnYGhgaWBqYGtgbGBgpdMDEBBxEjETMRNwEzAQEjAbp0ubljAVHh/lsB1tkB9Xn+hAYA/F93AWT+PP2KAAEAnAAAAVUGAAADAB0AsABFWLACLxuxAh4+WbAARViwAC8bsQAQPlkwMSEjETMBVbm5BgAAAAEAiwAABngETgAdAHeyBB4fERI5ALAARViwAy8bsQMYPlmwAEVYsAgvG7EIGD5ZsABFWLAALxuxABg+WbAARViwCy8bsQsQPlmwAEVYsBQvG7EUED5ZsABFWLAbLxuxGxA+WbIBCAsREjmyBQgLERI5sAgQshABCitYIdgb9FmwGNAwMQEXNjMyFzY2MyATESMRNCYjIgYHESMRNCMiBxEjEQE6BXfK41I2rXYBZAa5an1niAu657ZDuQQ6eIyuTmD+h/0rAsp0c3to/TICxeyb/OoEOgABAIwAAAPfBE4AEQBTsgsSExESOQCwAEVYsAMvG7EDGD5ZsABFWLAALxuxABg+WbAARViwBi8bsQYQPlmwAEVYsA8vG7EPED5ZsgEDBhESObADELILAQorWCHYG/RZMDEBFzYzIBMRIxEmJiMiBgcRIxEBOwZ8yAFXA7kBaW9aiCa5BDqInP59/TUCzHVwYE78/QQ6AAACAFv/7AQ0BE4ADwAbAEOyDBwdERI5sAwQsBPQALAARViwBC8bsQQYPlmwAEVYsAwvG7EMED5ZshMBCitYIdgb9FmwBBCyGQEKK1gh2Bv0WTAxEzQ2NjMyABUVFAYGIyIANRcUFjMyNjU0JiMiBlt934/dARF54ZLc/u+6p4yNpqmMiagCJ5/+iv7O/g2e+4wBMvwJtNrdx7Ld2gACAIz+YAQeBE4ADwAaAG6yExscERI5sBMQsAzQALAARViwDC8bsQwYPlmwAEVYsAkvG7EJGD5ZsABFWLAGLxuxBhI+WbAARViwAy8bsQMQPlmyBQwDERI5sgoMAxESObAMELITAQorWCHYG/RZsAMQshgBCitYIdgb9FkwMQEUAiMiJxEjETMXNjMyEhEnNCYjIgcRFjMyNgQe4sHFcbmpCXHJw+O5nIioVFOrhZ0CEff+0n399wXaeIz+2v76BLfUlf37lNMAAAIAX/5gA+8ETgAPABoAa7IYGxwREjmwGBCwA9AAsABFWLADLxuxAxg+WbAARViwBi8bsQYYPlmwAEVYsAgvG7EIEj5ZsABFWLAMLxuxDBA+WbIFAwwREjmyCgMMERI5shMBCitYIdgb9FmwAxCyGAEKK1gh2Bv0WTAxEzQSMzIXNzMRIxEGIyICNRcUFjMyNxEmIyIGX+rFwG8IqrlwusTpuZ2FpVdYooaeAib/ASmBbfomAgR4ATH8CLrUkgISj9UAAQCMAAAClwROAA0ARrIEDg8REjkAsABFWLALLxuxCxg+WbAARViwCC8bsQgYPlmwAEVYsAUvG7EFED5ZsAsQsgIBCitYIdgb9FmyCQsFERI5MDEBJiMiBxEjETMXNjMyFwKXKjG2Qbm0A1unNhwDlAeb/QAEOn2RDgABAF//7AO7BE4AJgBhsgknKBESOQCwAEVYsAkvG7EJGD5ZsABFWLAcLxuxHBA+WbIDHAkREjmwCRCwDdCwCRCyEAEKK1gh2Bv0WbADELIVAQorWCHYG/RZsBwQsCHQsBwQsiQBCitYIdgb9FkwMQE0JiQmJjU0NjMyFhUjNCYjIgYVFBYEFhYVFAYjIiYmNTMWFjMyNgMCcf7npU/hr7jluoFiZXJqARWsU+i5gshxuQWLcml/AR9LUzxUdFCFuL6UTG5YR0NEPlZ5V5GvXKVgXW1VAAEACf/sAlYFQAAVAF+yDhYXERI5ALAARViwAS8bsQEYPlmwAEVYsBMvG7ETGD5ZsABFWLANLxuxDRA+WbABELAA0LAAL7ABELIDAQorWCHYG/RZsA0QsggBCitYIdgb9FmwAxCwEdCwEtAwMQERMxUjERQWMzI3FQYjIiY1ESM1MxEBh8rKNkEgOElFfH7FxQVA/vqP/WFBQQyWFJaKAp+PAQYAAQCI/+wD3AQ6ABAAU7IKERIREjkAsABFWLAGLxuxBhg+WbAARViwDS8bsQ0YPlmwAEVYsAIvG7ECED5ZsABFWLAQLxuxEBA+WbIADQIREjmwAhCyCgEKK1gh2Bv0WTAxJQYjIiYnETMRFDMyNxEzESMDKGzRrbUBucjURrmwa3/JxQLA/UX2ngMT+8YAAAEAIQAAA7oEOgAGADiyAAcIERI5ALAARViwAS8bsQEYPlmwAEVYsAUvG7EFGD5ZsABFWLADLxuxAxA+WbIABQMREjkwMSUBMwEjATMB8QEMvf58jf54vfsDP/vGBDoAAAEAKwAABdMEOgAMAGCyBQ0OERI5ALAARViwAS8bsQEYPlmwAEVYsAgvG7EIGD5ZsABFWLALLxuxCxg+WbAARViwAy8bsQMQPlmwAEVYsAYvG7EGED5ZsgALAxESObIFCwMREjmyCgsDERI5MDElEzMBIwEBIwEzExMzBErQuf7Flv75/wCW/sa41fyV/wM7+8YDNPzMBDr81gMqAAEAKQAAA8oEOgALAFMAsABFWLABLxuxARg+WbAARViwCi8bsQoYPlmwAEVYsAQvG7EEED5ZsABFWLAHLxuxBxA+WbIACgQREjmyBgoEERI5sgMABhESObIJBgAREjkwMQETMwEBIwMDIwEBMwH38Nj+ngFt1vr61wFt/p7WAq8Bi/3p/d0Blf5rAiMCFwABABb+SwOwBDoADwBJsgAQERESOQCwAEVYsAEvG7EBGD5ZsABFWLAOLxuxDhg+WbAARViwBS8bsQUSPlmyAA4FERI5sgkBCitYIdgb9FmwABCwDdAwMQETMwECIycnNRcyNjc3ATMB7vzG/k1l3CNFMl5pIin+fsoBDwMr+x/+8gMNlgRMZW4ELgABAFgAAAOzBDoACQBEALAARViwBy8bsQcYPlmwAEVYsAIvG7ECED5ZsgABCitYIdgb9FmyBAACERI5sAcQsgUBCitYIdgb9FmyCQUHERI5MDElIRUhNQEhNSEVAToCefylAlX9tAM0l5eIAxmZgwAAAQBA/pICngY9ABgAMbITGRoREjkAsA0vsAAvsgcNABESObAHL7IfBwFdsgYDCitYIdgb9FmyEwYHERI5MDEBJiY1NTQjNTI1NTY2NxcGERUUBxYVFRIXAnixs9TUAq+zJtGnpwPO/pIy5bzH85Hy0LfhM3ND/ubK41la5c7+7UIAAAEAr/7yAUQFsAADABMAsAAvsABFWLACLxuxAhw+WTAxASMRMwFElZX+8ga+AAABABP+kgJyBj0AGAAxsgUZGhESOQCwCy+wGC+yEQsYERI5sBEvsh8RAV2yEgMKK1gh2Bv0WbIFEhEREjkwMRc2EzU0NyY1NRAnNxYWFxUUMxUiFRUUBgcTywe1tdEmsbIB1NS1r/tBAQrc51RS6csBGkNzMuG50u+R88q84jIAAAEAgwGSBO8DIgAXAEKyERgZERI5ALAARViwDy8bsQ8WPlmwANCwDxCwFNCwFC+yAwEKK1gh2Bv0WbAPELIIAQorWCHYG/RZsAMQsAvQMDEBFAYjIi4CIyIGFQc0NjMyFhYXFzI2NQTvu4lIgKlKKk5UobiLTIywQB1MXwMJntk1lCRrXgKgzkChCgJ0XwACAIv+mAFmBE0AAwAMADKyBg0OERI5sAYQsADQALACL7AARViwCy8bsQsYPlmyBgUKK1gh2Bv0WbIBAgYREjkwMRMzEyMTFAYiJjQ2MhaqqA3CyTdsODhsNwKs++wFTC0+Plo8PAABAGn/CwP5BSYAIQBSsgAiIxESOQCwAEVYsBQvG7EUGD5ZsABFWLAKLxuxChA+WbAH0LIAAQorWCHYG/RZsAoQsAPQsBQQsBHQsBQQsBjQsBQQshsBCitYIdgb9FkwMSUyNjczBgYHFSM1JgI1NTQSNzUzFRYWFyMmJiMiBhUVFBYCSmSUCK8GxpC5s8jKsbmWwAavCI9pjZubg3lZfska6eoiARzcI9QBHSHi3xfUlmmHy8Aju8oAAQBbAAAEaAXEACEAfLIcIiMREjkAsABFWLAULxuxFBw+WbAARViwBS8bsQUQPlmyHxQFERI5sB8vsl8fAXKyjx8BcbK/HwFdsgABCitYIdgb9FmwBRCyAwEKK1gh2Bv0WbAH0LAI0LAAELAN0LAfELAP0LAUELAY0LAUELIbAQorWCHYG/RZMDEBFxQHIQchNTM2Njc1JyM1MwM0NjMyFhUjNCYjIgYVEyEVAcEIPgLdAfv4TSgyAgiloAn1yL7ev39vaYIJAT8CbtyaW52dCYNgCN2dAQTH7tSxa3yaff78nQAAAgBp/+UFWwTxABsAKgA/sgIrLBESObACELAn0ACwAEVYsAIvG7ECED5ZsBDQsBAvsAIQsh8BCitYIdgb9FmwEBCyJwEKK1gh2Bv0WTAxJQYjIicHJzcmNTQ3JzcXNjMyFzcXBxYVFAcXBwEUFhYyNjY1NCYmIyIGBgRPn9HPn4aCi2hwk4KTnsPEn5WEl25mj4T8YHPE4sRxccVwccRzcISCiIeNnMrOo5eIlnh5mImao8vEn5CIAnt71Hp703t603l41AAAAQAfAAAErQWwABYAawCwAEVYsBYvG7EWHD5ZsABFWLABLxuxARw+WbAARViwDC8bsQwQPlmyDxMDK7IADBYREjm0DxMfEwJdsBMQsAPQsBMQshICCitYIdgb9FmwBtCwDxCwB9CwDxCyDgIKK1gh2Bv0WbAK0DAxAQEzASEVIRUhFSERIxEhNSE1ITUhATMCZgFs2/5eATj+gAGA/oDB/oYBev6GATn+XtwDDgKi/TB9pXz+vgFCfKV9AtAAAAIAk/7yAU0FsAADAAcAGACwAC+wAEVYsAYvG7EGHD5ZsgUBAyswMRMRMxERIxEzk7q6uv7yAxf86QPIAvYAAgBa/hEEeQXEADQARACAsiNFRhESObAjELA10ACwCC+wAEVYsCMvG7EjHD5ZshYIIxESObAWELI/AQorWCHYG/RZsgIWPxESObAIELAO0LAIELIRAQorWCHYG/RZsjAjCBESObAwELI3AQorWCHYG/RZsh03MBESObAjELAn0LAjELIqAQorWCHYG/RZMDEBFAcWFhUUBCMiJicmNTcUFjMyNjU0JicuAjU0NyYmNTQkMzIEFSM0JiMiBhUUFhYEHgIlJicGBhUUFhYEFzY2NTQmBHm6RUj+/ORwyUaLurSciKaO0bbAXbZCRwEL3ugBBLmoi46hOIcBH6lxOv3hWktQSzaFARwsTlSLAa+9VTGIZKjHODlxzQKCl3VgWWk+MG+bb7pYMYhkpsjizX2bc2JFUEFQSGGBqxgbE2VFRlBCUhEUZUVYbQAAAgBmBPAC7wXFAAgAEQAdALAHL7ICBQorWCHYG/RZsAvQsAcQsBDQsBAvMDETNDYyFhQGIiYlNDYyFhQGIiZmN2w4OGw3Aa43bDg4bDcFWy09PVo8PCstPj5aPDwAAAMAW//rBeYFxAAbACoAOQCVsic6OxESObAnELAD0LAnELA20ACwAEVYsC4vG7EuHD5ZsABFWLA2LxuxNhA+WbIDNi4REjmwAy+0DwMfAwJdsgouNhESObAKL7QAChAKAl2yDgoDERI5shECCitYIdgb9FmwAxCyGAIKK1gh2Bv0WbIbAwoREjmwNhCyIAQKK1gh2Bv0WbAuELInBAorWCHYG/RZMDEBFAYjIiY1NTQ2MzIWFSM0JiMiBhUVFBYzMjY1JRQSBCAkEjU0AiQjIgQCBzQSJCAEEhUUAgQjIiQCBF+tnp29v5ugrJJfW15sbF5cXf0BoAETAUABEqCe/u2hoP7sn3O7AUsBgAFKu7T+tcbF/rW2AlWZodO2brDTpJVjVYp7cXiKVGWErP7bpqYBJayqASKnpf7cqsoBWsfH/qbKxf6o0c8BWAAAAgCTArMDDwXEABsAJQBssg4mJxESObAOELAd0ACwAEVYsBUvG7EVHD5ZsgQmFRESObAEL7AA0LICBBUREjmyCwQVERI5sAsvsBUQsg4DCitYIdgb9FmyEQsVERI5sAQQshwDCitYIdgb9FmwCxCyIAQKK1gh2Bv0WTAxASYnBiMiJjU0NjMzNTQjIgYVJzQ2MzIWFREUFyUyNjc1IwYGFRQCagwGTIB3gqesbHxFT6GsiYWaGv6kK1gccFNZAsEiJlZ8Z294NIc2Mwxngo+G/sRhUXsoG44BPzNe//8AZgCXA2QDswAmAJr6/gAHAJoBRP/+AAEAfwF3A74DIAAFABoAsAQvsAHQsAEvsAQQsgIBCitYIdgb9FkwMQEjESE1IQO+uv17Az8BdwEIoQAEAFr/6wXlBcQADgAeADQAPQCpsjY+PxESObA2ELAL0LA2ELAT0LA2ELAj0ACwAEVYsAMvG7EDHD5ZsABFWLALLxuxCxA+WbITBAorWCHYG/RZsAMQshsECitYIdgb9FmyIAsDERI5sCAvsiIDCxESObAiL7QAIhAiAl2yNSAiERI5sDUvsr81AV20ADUQNQJdsh8CCitYIdgb9FmyKB81ERI5sCAQsC/QsC8vsCIQsj0CCitYIdgb9FkwMRM0EiQgBBIVFAIEIyIkAjcUEgQzMiQSNTQCJCMiBAIFESMRITIWFRQHFhcVFBcVIyY0JyYnJzM2NjU0JiMjWrsBSwGAAUq7tP61xsX+tbZzoAEToKEBFJ2d/uyhoP7snwHAjQEUmamAegERkQ4DEHOwnEhYTmSKAtnKAVrHx/6mysX+qNHPAVjHrP7bpqkBIqyrASGnpf7c9f6uA1GDfXtBMpo9ViYQJLkRYASAAkI2ST0AAAEAeAUhA0IFsAADABEAsAEvsgIDCitYIdgb9FkwMQEhNSEDQv02AsoFIY8AAgCCA8ACfAXEAAsAFgAvALAARViwAy8bsQMcPlmwDNCwDC+yCQIKK1gh2Bv0WbADELISAgorWCHYG/RZMDETNDYzMhYVFAYjIiYXMjY1NCYjIgYUFoKVamiTk2hplv82Sko2N0tLBMBonJtpapaWFkc5OktPbEoAAgBhAAAD9QTzAAsADwBGALAJL7AARViwDS8bsQ0QPlmwCRCwANCwCRCyBgEKK1gh2Bv0WbAD0LANELIOAQorWCHYG/RZsgUOBhESObQLBRsFAl0wMQEhFSERIxEhNSERMwEhNSECiQFs/pSn/n8BgacBQfy9A0MDVpf+YgGelwGd+w2YAAABAEICmwKrBbsAFgBUsggXGBESOQCwAEVYsA4vG7EOHD5ZsABFWLAALxuxABQ+WbIWAgorWCHYG/RZsALQsgMOFhESObAOELIIAgorWCHYG/RZsA4QsAvQshQWDhESOTAxASE1ATY1NCYjIgYVIzQ2IBYVFA8CIQKr/akBLG1APEtHnacBCJprVLABjwKbbAEaZkUxPUw5cpR/bmhrT5EAAQA+Ao8CmgW6ACYAibIgJygREjkAsABFWLAOLxuxDhw+WbAARViwGS8bsRkUPlmyABkOERI5sAAvtm8AfwCPAANdsj8AAXG2DwAfAC8AA12yXwABcrAOELIHAgorWCHYG/RZsgoOGRESObAAELImBAorWCHYG/RZshQmABESObIdGQ4REjmwGRCyIAIKK1gh2Bv0WTAxATMyNjU0JiMiBhUjNDYzMhYVFAYHFhUUBiMiJjUzFBYzMjY1NCcjAQlUSkg/RjlLnaN8iZxGQpWqiISmnk9DRkmcWARlPTAtOjMpYnt5aDdbGSmPan1+ay08PDNxAgAAAQB7BNgCHAX+AAMAIwCwAi+yDwIBXbAA0LAAL7QPAB8AAl2wAhCwA9AZsAMvGDAxATMBIwE84P70lQX+/toAAAEAmv5gA+4EOgASAFCyDRMUERI5ALAARViwAC8bsQAYPlmwAEVYsAcvG7EHGD5ZsABFWLAQLxuxEBI+WbAARViwDS8bsQ0QPlmyBAEKK1gh2Bv0WbILBw0REjkwMQERFhYzMjcRMxEjJwYjIicRIxEBUwFndMc+uqcJXaqTUbkEOv2Ho5yYAyD7xnOHSf4rBdoAAQBDAAADQAWwAAoAK7ICCwwREjkAsABFWLAILxuxCBw+WbAARViwAC8bsQAQPlmyAQAIERI5MDEhESMiJDU0JDMhEQKGVOb+9wEK5gENAgj+1tX/+lAAAAEAkwJrAXkDSQAJABayAwoLERI5ALACL7EICitY2BvcWTAxEzQ2MhYVFAYiJpM5cjs7cjkC2TBAQDAvPz8AAQB0/k0BqgAAAA4AQbIFDxAREjkAsABFWLAALxuxABA+WbAARViwBi8bsQYSPlm0EwYjBgJdsgEGABESObEHCitY2BvcWbABELAN0DAxIQcWFRQGIycyNjU0Jic3AR0MmaCPB09XQGIgNBuSYXFrNC8sKgmGAAEAegKiAe8FtwAGAECyAQcIERI5ALAARViwBS8bsQUcPlmwAEVYsAAvG7EAFD5ZsgQABRESObAEL7IDAgorWCHYG/RZsgIDBRESOTAxASMRBzUlMwHvndgBYxICogJZOYB1AAACAHoCsgMnBcQADAAaAECyAxscERI5sAMQsBDQALAARViwAy8bsQMcPlmyChsDERI5sAovshADCitYIdgb9FmwAxCyFwMKK1gh2Bv0WTAxEzQ2MzIWFRUUBiAmNRcUFjMyNjU1NCYjIgYHeryam7y7/sy+o2FUU19hU1FgAgRjnsPBpkqfwsKlBmRyc2VOY3JuYQD//wBmAJgDeAO1ACYAmw0AAAcAmwFqAAD//wBVAAAFkQWtACcAov/bApgAJwCcARgACAEHAKUC1gAAABAAsABFWLAFLxuxBRw+WTAx//8AUAAABckFrQAnAJwA7AAIACcAov/WApgBBwCjAx4AAAAQALAARViwCS8bsQkcPlkwMf//AG8AAAXtBbsAJwCcAZcACAAnAKUDMgAAAQcApAAxApsAEACwAEVYsCEvG7EhHD5ZMDEAAgBE/n8DeARNABgAIgBXsgkjJBESObAJELAc0ACwEC+wAEVYsCEvG7EhGD5ZsgAQIRESObIDEAAREjmwEBCyCQEKK1gh2Bv0WbAQELAM0LIVABAREjmwIRCyGwUKK1gh2Bv0WTAxAQ4DBwcUFjMyNjUzBgYjIiY1NDc3NjUTFAYiJjU0NjIWAkwBKWC4CwJ0bWR9uQLht8TWoG1CwTdsODhsNwKoan92wWMlbXNxW6HMybOtr3FOkgE9LT4+LSw8PAAC//IAAAdXBbAADwASAHcAsABFWLAGLxuxBhw+WbAARViwAC8bsQAQPlmwAEVYsAQvG7EEED5ZshEGABESObARL7ICAQorWCHYG/RZsAYQsggBCitYIdgb9FmyCwAGERI5sAsvsgwBCitYIdgb9FmwABCyDgEKK1gh2Bv0WbISBgAREjkwMSEhAyEDIwEhFSETIRUhEyEBIQMHV/yND/3MzeIDcAO3/U0UAk79uBYCwfqvAcgfAWH+nwWwmP4pl/3tAXgC3QABAFkAzgPdBGMACwA4ALADL7IJDAMREjmwCS+yCgkDERI5sgQDCRESObIBCgQREjmwAxCwBdCyBwQKERI5sAkQsAvQMDETAQE3AQEXAQEHAQFZAUr+uHcBSQFJd/64AUp3/rX+tQFJAVABT3v+sQFPe/6x/rB7AVH+rwAAAwB2/6MFHQXsABcAIAApAGayBCorERI5sAQQsB3QsAQQsCbQALAARViwEC8bsRAcPlmwAEVYsAQvG7EEED5ZshoQBBESObIjEAQREjmwIxCwG9CwEBCyHQEKK1gh2Bv0WbAaELAk0LAEELImAQorWCHYG/RZMDEBFAIEIyInByM3JhE1NBIkMzIXNzMHFhMFFBcBJiMiAgcFNCcBFjMyEjcFCZD++LCrg2GOkL6SAQus1pRnjZ+JAvwsYgI0Zqa20QMDFTj921t5uswDAqnW/sGoUpvnwAFoU9IBQqt9pf+7/tpj9I0DiG/+6/YNtoP8j0ABD/0AAgCmAAAEXQWwAA0AFgBXsgkXGBESObAJELAQ0ACwAEVYsAAvG7EAHD5ZsABFWLALLxuxCxA+WbIBAAsREjmwAS+yEAALERI5sBAvsgkBCitYIdgb9FmwARCyDgEKK1gh2Bv0WTAxAREhMhYWFRQEIyERIxETESEyNjU0JicBYAEXk9x3/vjj/u66ugEVjqCgiAWw/ttpwn7C5/7HBbD+Q/3el3h7lwEAAQCL/+wEagYSACoAabIhKywREjkAsABFWLAFLxuxBR4+WbAARViwEy8bsRMQPlmwAEVYsAAvG7EAED5ZsgoTBRESObIOBRMREjmwExCyGgEKK1gh2Bv0WbIgEwUREjmyIwUTERI5sAUQsigBCitYIdgb9FkwMSEjETQ2MzIWFRQGFRQeAhUUBiMiJic3FhYzMjY1NC4CNTQ2NTQmIyIRAUS5z7q0xYBLvFbLtlG1JisxhzVrcUq9V4toWNoEV9Drs599y0UzX5CITJ+yLBybICxeUjRgk4pRWc9UXmv+2wADAE7/7AZ8BE4AKgA1AD0AxrICPj8REjmwAhCwLtCwAhCwOdAAsABFWLAXLxuxFxg+WbAARViwHS8bsR0YPlmwAEVYsAAvG7EAED5ZsABFWLAFLxuxBRA+WbICHQAREjmyDAUXERI5sAwvtL8MzwwCXbAXELIQAQorWCHYG/RZshMMFxESObIaHQAREjmyOh0AERI5sDovtL86zzoCXbIhAQorWCHYG/RZsAAQsiUBCitYIdgb9FmyKB0AERI5sCvQsAwQsi8BCitYIdgb9FmwEBCwNtAwMQUgJwYGIyImNTQ2MzM1NCYjIgYVJzQ2MzIWFzY2MzISFRUhFhYzMjc3FwYlMjY3NSMGBhUUFgEiBgchNTQmBO7++4hB4o2nvOPd325oaYy48rtzsDI/rmnS6P0oB66VlHkvQJ78CUieMuR1jGoDUHOVEQIahhS0Vl6tl52uVWt7blETj7VTU09X/v/pc7C/TB+IeZZKNu0CblNNXQM0q4sfhJMAAAIAfv/sBC0GLAAdACsAVLIHLC0REjmwBxCwKNAAsABFWLAZLxuxGR4+WbAARViwBy8bsQcQPlmyDxkHERI5sA8vshEZBxESObIiAQorWCHYG/RZsAcQsigBCitYIdgb9FkwMQESERUUBgYjIiYmNTQ2NjMyFyYnByc3Jic3Fhc3FwMnJiYjIgYVFBYzMjY1AzT5ddiGh9x5cM+Bo3kwjdpJwIS3Oe+vvUloAiGLXJGip4B9mQUV/vj+Z12e/ZCB4IaT6YJyw42UY4NbMZ82i4Fk/PM4PUm/p4zE4rgAAAMARwCsBC0EugADAA0AFwBOsgcYGRESObAHELAA0LAHELAR0ACwAi+yAQEKK1gh2Bv0WbACELEMCitY2BvcWbEGCitY2BvcWbABELEQCitY2BvcWbEWCitY2BvcWTAxASE1IQE0NjIWFRQGIiYRNDYyFhUUBiImBC38GgPm/aA5cjs7cjk5cjs7cjkCWLgBOjBAQDAvPj78/jBAQDAuPz8AAAMAW/96BDQEuAAVAB0AJgBjsgQnKBESObAEELAb0LAEELAj0ACwAEVYsAQvG7EEGD5ZsABFWLAPLxuxDxA+WbIjAQorWCHYG/RZsiEjBBESObAhELAY0LAEELIbAQorWCHYG/RZshkbDxESObAZELAg0DAxEzQ2NjMyFzczBxYRFAYGIyInByM3JhMUFwEmIyIGBTQnARYzMjY1W3vhj25eSXxmw3zgkGhWSnxkzblhAVc+SIqoAmZX/qw3QounAief/YsqlM2a/sCe/okjlcuVATfCbwK2INq1tm/9UBnbuQACAJX+YAQnBgAADwAaAGSyGBscERI5sBgQsAzQALAIL7AARViwDC8bsQwYPlmwAEVYsAYvG7EGEj5ZsABFWLADLxuxAxA+WbIFDAMREjmyCgwDERI5sAwQshMBCitYIdgb9FmwAxCyGAEKK1gh2Bv0WTAxARQCIyInESMRMxE2MzISESc0JiMiBxEWMzI2BCfiwcVxublxwsPjuZyIqFRTq4WdAhH3/tJ9/fcHoP3KhP7a/voEt9SV/fuU0wAAAQCbAAABVQQ6AAMAHQCwAEVYsAIvG7ECGD5ZsABFWLAALxuxABA+WTAxISMRMwFVuroEOgAAAgBo/+sHCQXEABcAIwCRsgEkJRESObABELAa0ACwAEVYsAwvG7EMHD5ZsABFWLAOLxuxDhw+WbAARViwAC8bsQAQPlmwAEVYsAMvG7EDED5ZsA4QshABCitYIdgb9FmyEwAOERI5sBMvshQBCitYIdgb9FmwABCyFgEKK1gh2Bv0WbADELIYAQorWCHYG/RZsAwQsh0BCitYIdgb9FkwMSEhBiMiJgInETQSNjMyFyEVIREhFSERIQUyNxEmIyIGBxEUFgcJ/LCycqL+jAGL/qJ8qgNG/S0Cd/2JAt37jHFmbWytwgLDFZYBD6sBNawBEZcUnv4snf38Gw4Ejg/lz/7H0+sAAAMAYf/sBwAETgAgACwANACWsgY1NhESObAGELAm0LAGELAw0ACwAEVYsAQvG7EEGD5ZsABFWLAKLxuxChg+WbAARViwFy8bsRcQPlmwAEVYsB0vG7EdED5ZsgcKFxESObIxChcREjmwMS+yDgEKK1gh2Bv0WbAXELISAQorWCHYG/RZshQKFxESObIaChcREjmwJNCwBBCyKgEKK1gh2Bv0WbAt0DAxEzQ2NjMyFhc2NjMyFhUVIRYWMzI3FwYjIiYnBgYjIgA1FxQWMzI2NTQmIyIGJSIGByE1NCZheduOick9QcRwz+r9Mgekhrx4Son1h80/PseG3P74uaCLiaChioeiBC1jlhYCDokCJ6D+iXVkZnP+63SqxWx+hHBkY3EBMP4Jt9jXzrbZ1tajihp9lgAAAQCpBOQDBgYAAAgANACwBC+wB9CwBy+0DwcfBwJdsgUEBxESORmwBS8YsAHQGbABLxiwBBCwAtCyAwQHERI5MDEBFSMnByM1EzMDBpmWlZn2cATuCqqqDAEQAAACAHkEtAInBlAACQAUACqyAxUWERI5sAMQsA3QALADL7AH0LAHL7I/BwFdsAMQsA3QsAcQsBLQMDEBFAYjIiY0NjIWBRQWMzI2NCYjIgYCJ3xbXHt7uHv+tUMxMERDMTJCBYBXdXasenpWL0RCYkVGAAABAHsE2QM+BegAFwA+ALADL7AI0LAIL7QPCB8IAl2wAxCwC9CwCy+wCBCyDwMKK1gh2Bv0WbADELIUAworWCHYG/RZsA8QsBfQMDEBFAYjIi4CIyIGFSc0NjMyHgIzMjY1Az57XCk8YSscKTp8eV0jOGAzHys5BdxshhQ+DT8xB2uMFDoSRC3//wCiAosEjQMiAEYAn9kATM1AAP//AJACiwXJAyIARgCfhABmZkAAAAEAYAQxAXgGEwAIACGyCAkKERI5ALAARViwAC8bsQAePlmyBQkAERI5sAUvMDEBFwYHFSM1NDYBDmpdA7hhBhNIf5OIdGbIAAEAMAQWAUcGAAAIACGyCAkKERI5ALAARViwBC8bsQQePlmyAAkEERI5sAAvMDETJzY3NTMVBgaZaV0DtwFhBBZIgpCQgmTHAAEAJP7lATsAtQAIAB6yCAkKERI5ALAJL7IEBQorWCHYG/RZsADQsAAvMDETJzY3NTMVFAaNaVsDuWP+5Ul/knZkZcr//wBoBDECuwYTACYAkwgAAAcAkwFDAAD//wA8BBYChgYAACYAlAwAAAcAlAE/AAAAAgAk/tMCZAD2AAgAEQAwsgoSExESObAKELAF0ACwEi+yBAUKK1gh2Bv0WbAA0LAAL7AJ0LAJL7AEELAN0DAxEyc2NzUzFRQGFyc2NzUzFRQGjWlbA7lj3WlbA7ph/tNIiZm5pGzTQEiJmbmka9EAAAEAigIXAiIDywANABayCg4PERI5ALADL7EKCitY2BvcWTAxEzQ2MzIWFRUUBiMiJjWKb1xbcm5eXW8DBFdwbV0lV25vWAABAGwAmQIgA7UABgAQALAFL7ICBwUREjmwAi8wMQEBIwE1ATMBHgECjf7ZASeNAib+cwGEEwGFAAEAWQCYAg4DtQAGABAAsAAvsgMHABESObADLzAxEwEVASMBAecBJ/7ZjgEC/v4Dtf57E/57AY4BjwABADsAbgNqBSIAAwAJALAAL7ACLzAxNycBF6NoAsdobkIEckIA//8ANgKQArsFpQMHAKUAAAKQABMAsABFWLAJLxuxCRw+WbAN0DAxAAABAF//7AQcBcQAIwCHshUkJRESOQCwAEVYsBYvG7EWHD5ZsABFWLAJLxuxCRA+WbIjCRYREjmwIy+yAAIKK1gh2Bv0WbAJELIEAQorWCHYG/RZsAAQsAzQsCMQsA/QsCMQsB/QsB8vtg8fHx8vHwNdsiACCitYIdgb9FmwENCwHxCwE9CwFhCyGwEKK1gh2Bv0WTAxASEWFjMyNxcGIyIAAyM1MzUjNTMSADMyFwcmIyIGByEVIRUhA1H+gAS0pXRmFHh4+P7jBrKysrIKAR3zaocUbW6ksQYBf/6AAYACHcPSIqAeASUBDHyJfQEGAR8foiPLvH2JAAEAqAKLA+sDIgADABsAsABFWLACLxuxAhY+WbIBAQorWCHYG/RZMDEBITUhA+v8vQNDAouXAAIAHwAAA80GFQAVABkAg7IIGhsREjmwCBCwF9AAsABFWLAILxuxCB4+WbAARViwAy8bsQMYPlmwAEVYsBEvG7ERGD5ZsABFWLAYLxuxGBg+WbAARViwAC8bsQAQPlmwAEVYsBYvG7EWED5ZsAMQsgEBCitYIdgb9FmwCBCyDQEKK1gh2Bv0WbABELAT0LAU0DAxMxEjNTM1NDYzMhcHJiMiBhUVMxUjESEjETPKq6vPvXCrH31xd2nd3QJJuroDq49ctco9nDJra16P/FUEOgABADwAAAPpBhUAFgBcALAARViwEi8bsRIePlmwAEVYsAYvG7EGGD5ZsABFWLAJLxuxCRA+WbAARViwFi8bsRYQPlmwEhCyAgEKK1gh2Bv0WbAGELIHAQorWCHYG/RZsAvQsAYQsA7QMDEBJiMiFRUzFSMRIxEjNTM1NjYzMgURIwMwfEzI5+e5q6sBwLFlASu5BWMU0muP/FUDq492rbg9+igAAAEAegAAAe8DFQAGADUAsABFWLAFLxuxBRY+WbAARViwAS8bsQEQPlmyBAUBERI5sAQvsgMCCitYIdgb9FmwAtAwMSEjEQc1JTMB753YAWMSAlk5gHUAAQBCAAACqwMgABYAVLIIFxgREjkAsABFWLAOLxuxDhY+WbAARViwAC8bsQAQPlmyFQIKK1gh2Bv0WbAC0LIUFQ4REjmyAw4UERI5sA4QsggCCitYIdgb9FmwDhCwC9AwMSEhNQE2NTQmIyIGFSM0NiAWFRQPAiECq/2pASxtQDxLR52nAQiaa1SwAY9sARpmRTE9TDlylH9uaGtPkQABAD7/9QKaAyAAJgBxALAARViwDi8bsQ4WPlmwAEVYsBkvG7EZED5ZsgAZDhESOXywAC8YtoAAkACgAANdsA4QsgcCCitYIdgb9FmyCgAHERI5sAAQsiYCCitYIdgb9FmyFCYAERI5sBkQsiACCitYIdgb9FmyHSYgERI5MDEBMzI2NTQmIyIGFSM0NjMyFhUUBgcWFRQGIyImNTMUFjMyNjU0JyMBCVRKSD9GOUudo3yJnEZClaqIhKaeT0NGSZxYAcs9MC06Mylie3loN1sZKY9qfX5rLTw8M3ECAAACADYAAAK7AxUACgAOAEkAsABFWLAJLxuxCRY+WbAARViwBC8bsQQQPlmyAQkEERI5sAEvsgICCitYIdgb9FmwBtCwARCwC9CyCAsGERI5sg0JBBESOTAxATMVIxUjNSEnATMBMxEHAlBra53+iQYBeaH+hN8RASuCqalmAgb+FgEhHP//ACUCHwINArYCBgARAAAAAgAlAAAE5AWwAA8AHQBmALAARViwBS8bsQUcPlmwAEVYsAAvG7EAED5ZsgQABRESObAEL7LPBAFdsi8EAV2ynwQBcbIBAQorWCHYG/RZsBHQsAAQshIBCitYIdgb9FmwBRCyGwEKK1gh2Bv0WbAEELAc0DAxMxEjNTMRITIEEhcVFAIEBxMhETMyEjc1NAInIxEhx6KiAZu+ASSfAZ/+2cRH/ubJ3vcB6dbgARoCmpcCf6j+ysldzv7KpgICmv4DARL5XfgBEwL+HwD//wAcAAAFHQc0AiYAJQAAAQcARAEwATYAFACwAEVYsAQvG7EEHD5ZsQwI9DAx//8AHAAABR0HNAImACUAAAEHAHUBvwE2ABQAsABFWLAFLxuxBRw+WbENCPQwMf//ABwAAAUdBzYCJgAlAAABBwCOAMkBNgAUALAARViwBC8bsQQcPlmxDwb0MDH//wAcAAAFHQciAiYAJQAAAQcAkADFAToAFACwAEVYsAUvG7EFHD5ZsQ4E9DAx//8AHAAABR0G+wImACUAAAEHAGoA+QE2ABcAsABFWLAELxuxBBw+WbERBPSwG9AwMQD//wAcAAAFHQeRAiYAJQAAAQcAjwFQAUEAFwCwAEVYsAQvG7EEHD5ZsQ4G9LAY0DAxAP//AHf+RATYBcQCJgAnAAAABwB5AdL/9///AKkAAARGB0ACJgApAAABBwBEAPsBQgAUALAARViwBi8bsQYcPlmxDQj0MDH//wCpAAAERgdAAiYAKQAAAQcAdQGKAUIAFACwAEVYsAYvG7EGHD5ZsQ4I9DAx//8AqQAABEYHQgImACkAAAEHAI4AlAFCABQAsABFWLAGLxuxBhw+WbEQBvQwMf//AKkAAARGBwcCJgApAAABBwBqAMQBQgAXALAARViwBi8bsQYcPlmxEgT0sBvQMDEA////4AAAAYEHQAImAC0AAAEHAET/pwFCABQAsABFWLACLxuxAhw+WbEFCPQwMf//ALAAAAJRB0ACJgAtAAABBwB1ADUBQgAUALAARViwAy8bsQMcPlmxBgj0MDH////pAAACRgdCAiYALQAAAQcAjv9AAUIAFACwAEVYsAIvG7ECHD5ZsQgG9DAx////1gAAAl8HBwImAC0AAAEHAGr/cAFCABcAsABFWLACLxuxAhw+WbEKBPSwFNAwMQD//wCpAAAFCAciAiYAMgAAAQcAkAD7AToAFACwAEVYsAYvG7EGHD5ZsQ0E9DAx//8Adv/sBQkHNgImADMAAAEHAEQBUgE4ABQAsABFWLANLxuxDRw+WbEhCPQwMf//AHb/7AUJBzYCJgAzAAABBwB1AeEBOAAUALAARViwDS8bsQ0cPlmxIgj0MDH//wB2/+wFCQc4AiYAMwAAAQcAjgDrATgAFACwAEVYsA0vG7ENHD5ZsSIG9DAx//8Adv/sBQkHJAImADMAAAEHAJAA5wE8ABQAsABFWLANLxuxDRw+WbEjBPQwMf//AHb/7AUJBv0CJgAzAAABBwBqARsBOAAXALAARViwDS8bsQ0cPlmxJwT0sDDQMDEA//8AjP/sBKoHNAImADkAAAEHAEQBKwE2ABQAsABFWLAKLxuxChw+WbEUCPQwMf//AIz/7ASqBzQCJgA5AAABBwB1AboBNgAUALAARViwEi8bsRIcPlmxFQj0MDH//wCM/+wEqgc2AiYAOQAAAQcAjgDEATYAFACwAEVYsAovG7EKHD5ZsRcG9DAx//8AjP/sBKoG+wImADkAAAEHAGoA9AE2ABcAsABFWLAKLxuxChw+WbEZBPSwI9AwMQD//wAPAAAEuwc0AiYAPQAAAQcAdQGIATYAFACwAEVYsAEvG7EBHD5ZsQsI9DAx//8Abf/sA+oF/gImAEUAAAEHAEQA1QAAABQAsABFWLAXLxuxFxg+WbEqCfQwMf//AG3/7APqBf4CJgBFAAABBwB1AWQAAAAUALAARViwFy8bsRcYPlmxKwn0MDH//wBt/+wD6gYAAiYARQAAAQYAjm4AABQAsABFWLAXLxuxFxg+WbErAfQwMf//AG3/7APqBewCJgBFAAABBgCQagQAFACwAEVYsBcvG7EXGD5ZsSwB9DAx//8Abf/sA+oFxQImAEUAAAEHAGoAngAAABcAsABFWLAXLxuxFxg+WbEwAfSwOdAwMQD//wBt/+wD6gZbAiYARQAAAQcAjwD1AAsAFwCwAEVYsBcvG7EXGD5ZsSwE9LA20DAxAP//AFz+RAPsBE4CJgBHAAAABwB5AT//9///AF3/7APzBf4CJgBJAAABBwBEAMUAAAAUALAARViwCC8bsQgYPlmxHwn0MDH//wBd/+wD8wX+AiYASQAAAQcAdQFUAAAAFACwAEVYsAgvG7EIGD5ZsSAJ9DAx//8AXf/sA/MGAAImAEkAAAEGAI5eAAAUALAARViwCC8bsQgYPlmxIAH0MDH//wBd/+wD8wXFAiYASQAAAQcAagCOAAAAFwCwAEVYsAgvG7EIGD5ZsSUB9LAu0DAxAP///8YAAAFnBf0CJgCLAAABBgBEjf8AFACwAEVYsAIvG7ECGD5ZsQUJ9DAx//8AlgAAAjcF/QImAIsAAAEGAHUb/wAUALAARViwAy8bsQMYPlmxBgn0MDH////PAAACLAX/AiYAiwAAAQcAjv8m//8AFACwAEVYsAIvG7ECGD5ZsQgB9DAx////vAAAAkUFxAImAIsAAAEHAGr/Vv//ABcAsABFWLACLxuxAhg+WbELAfSwFNAwMQD//wCMAAAD3wXsAiYAUgAAAQYAkGEEABQAsABFWLADLxuxAxg+WbEVAfQwMf//AFv/7AQ0Bf4CJgBTAAABBwBEAM8AAAAUALAARViwBC8bsQQYPlmxHQn0MDH//wBb/+wENAX+AiYAUwAAAQcAdQFeAAAAFACwAEVYsAQvG7EEGD5ZsR4J9DAx//8AW//sBDQGAAImAFMAAAEGAI5oAAAUALAARViwBC8bsQQYPlmxHgH0MDH//wBb/+wENAXsAiYAUwAAAQYAkGQEABQAsABFWLAELxuxBBg+WbEfAfQwMf//AFv/7AQ0BcUCJgBTAAABBwBqAJgAAAAXALAARViwBC8bsQQYPlmxIwH0sCzQMDEA//8AiP/sA9wF/gImAFkAAAEHAEQAxwAAABQAsABFWLAHLxuxBxg+WbESCfQwMf//AIj/7APcBf4CJgBZAAABBwB1AVYAAAAUALAARViwDS8bsQ0YPlmxEwn0MDH//wCI/+wD3AYAAiYAWQAAAQYAjmAAABQAsABFWLAHLxuxBxg+WbEVAfQwMf//AIj/7APcBcUCJgBZAAABBwBqAJAAAAAXALAARViwBy8bsQcYPlmxGAH0sCHQMDEA//8AFv5LA7AF/gImAF0AAAEHAHUBGwAAABQAsABFWLABLxuxARg+WbESCfQwMf//ABb+SwOwBcUCJgBdAAABBgBqVQAAFwCwAEVYsA8vG7EPGD5ZsRcB9LAg0DAxAAAAAAEAAADeAI8AFgBUAAUAAQAAAAAADgAAAgACFAAGAAEAAABhAGEAYQBhAGEAkwC4ATgBqgI6As0C5AMOAzgDawOQA68DxQPmA/0ESgR4BMcFPAV/Bd8GPgZrBt8HRgdbB3AHjwe2B9UIMwjWCRUJdAnICg0KTQqDCusLLQtIC3sL0Av0DEIMfgzTDR4Ngw3fDkoOdA62DuYPOw+QD8AP+BAcEDMQWBB/EJoQuhEyEZAR4xJBEqgS+hN0E7kT8RQ9FJQUrxUaFWUVsxYXFngWtRcfF3EXuBfoGDYYfRjCGPoZOxlSGZIZ2RoMGmga2hs9G5wbuxxgHI8dNR2jHa8dzB6EHpoe1h8ZH2kf5CAEIE0geSCYINMhBSFPIVshdSGPIakiCiJtIqsjJiN6I+okqCUXJWgl2SY4JlMm1idwJ54n1ygbKCUoLyhTKHcomSilKLEo6SkMKSgpRSlYKWwp6CoDKmsqvSroKzcrpivoK+gr8CxWLG0shCybLLIsyyzkLPAtBy0eLTUtTi1lLXwtky2sLcMt2i3xLgguHy44Lk8uZi59LpYurS7ELtsu8S8HLyAvOS9FL1wvcy+JL6IvuC/OL+Uv/jAUMCswQjBYMG4whzCeMLUwyzDkMPsxEwAAAAEAAAACAAAwG1GuXw889QAbCAAAAAAAxPARLgAAAADQ206a+hv91QkwCHMAAAAJAAIAAAAAAAADjABkAAAAAAAAAAAB+wAAAfsAAAIPAKACjwCIBO0AdwR+AG4F3ABpBPkAZQFlAGcCvACFAsgAJgNyABwEiQBOAZIAHQI1ACUCGwCQA0wAEgR+AHMEfgCqBH4AXQR+AF4EfgA1BH4AmgR+AIQEfgBNBH4AcAR+AGQB8ACGAbEAKQQRAEgEZACYBC4AhgPHAEsHLwBqBTgAHAT7AKkFNQB3BT8AqQSMAKkEbACpBXMAegW0AKkCLQC3BGoANQUEAKkETgCpBvwAqQW0AKkFgAB2BQwAqQWAAG0E7QCoBL8AUATGADEFMACMBRcAHAcZAD0FBAA5BM4ADwTKAFYCHwCSA0gAKAIfAAkDWABAA5wABAJ5ADkEWgBtBH0AjAQwAFwEgwBfBD0AXQLHADwEfQBgBGgAjAHxAI0B6f+/BA4AjQHxAJwHAwCLBGoAjASQAFsEfQCMBIwAXwK1AIwEIABfAp0ACQRpAIgD4AAhBgMAKwP3ACkDyQAWA/cAWAK1AEAB8wCvArUAEwVxAIMB8wCLBGAAaQSmAFsFtABpBNgAHwHrAJME6ABaA1gAZgZJAFsDkwCTA8EAZgRuAH8GSgBaA6oAeAL9AIIERgBhAu8AQgLvAD4CggB7BIgAmgPpAEMCFgCTAfsAdALvAHoDowB6A8AAZgXcAFUGNQBQBjkAbwPJAEQHev/yBEQAWQWAAHYEugCmBMIAiwbBAE4EsAB+BJEARwSIAFsEnACVAfoAmwehAGgHRABhA8QAqQKtAHkDxgB7BUAAogY/AJABmQBgAZkAMAGXACQC1ABoAtsAPALBACQCsgCKAmYAbAJmAFkDowA7Au8ANgR+AF8EkgCoBG4AHwSLADwC7wB6Au8AQgLvAD4C7wA2AfsAAAI1ACUFXQAlBTgAHAU4ABwFOAAcBTgAHAU4ABwFOAAcBTUAdwSMAKkEjACpBIwAqQSMAKkCLf/gAi0AsAIt/+kCLf/WBbQAqQWAAHYFgAB2BYAAdgWAAHYFgAB2BTAAjAUwAIwFMACMBTAAjATOAA8EWgBtBFoAbQRaAG0EWgBtBFoAbQRaAG0EMABcBD0AXQQ9AF0EPQBdBD0AXQH6/8YB+gCWAfr/zwH6/7wEagCMBJAAWwSQAFsEkABbBJAAWwSQAFsEaQCIBGkAiARpAIgEaQCIA8kAFgAWAAAAAQAAB2z+DAAACUn6G/5KCTAAAQAAAAAAAAAAAAAAAAAAAN0AAwSFAZAABQAABZoFMwAAAR8FmgUzAAAD0QBmAgAAAAIAAAAAAAAAAADgAAr/UAAhfwAAACEAAAAAR09PRwBAAAD//QYA/gAAZgeaAgAgAAGfAAAAAAQ6BbAAIAAgAAIAAAABAAAA4AkJBAAAAgICAwYFBwYCAwMEBQICAgQFBQUFBQUFBQUFAgIFBQUECAYGBgYFBQYGAgUGBQgGBgYGBgUFBgYIBgUFAgQCBAQDBQUFBQUDBQUCAgUCCAUFBQUDBQMFBAcEBAQDAgMGAgUFBgUCBgQHBAQFBwQDBQMDAwUEAgIDBAQHBwcECAUGBQUIBQUFBQIJCAQDBAYHAgICAwMDAwMDBAMFBQUFAwMDAwICBgYGBgYGBgYFBQUFAgICAgYGBgYGBgYGBgYFBQUFBQUFBQUFBQUCAgICBQUFBQUFBQUFBQQEAAAAAwAAAAMAAAAcAAMAAQAAABwAAwAKAAABYAAEAUQAAAA2ACAABAAWAAAADQB+AKAArACtAL8AxgDPAOYA7wD/ATEBUwLGAtoC3CAUIBogHiAiIDogRCB0IKwiEv//AAAAAAANACAAoAChAK0ArgDAAMcA0ADnAPABMQFSAsYC2gLcIBMgGCAcICIgOSBEIHQgrCIS//8AAf/2/+QABv/C//r/wQAA/+gAAP/iAAD/Wv86/cj9tf204H7ge+B64HfgYeBY4Cnf8t6NAAEAAAAAAAAAAAAAAAAAAAAoAAAAMgAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqQCqAKsArACtAK4AgQCoALgAuQC6ALsAvAC9AIIAgwC+AL8AwADBAMIAhACFAMMAxADFAMYAxwDIAIYAhwDSANMA1ADVANYA1wCIAIkA2ADZANoA2wDcAIoA3QAMAAAAAAHYAAAAAAAAACYAAAAAAAAAAAAAAAEAAAANAAAADQAAAAMAAAAgAAAAfgAAAAQAAACgAAAAoAAAAKYAAAChAAAArAAAAGMAAACtAAAArQAAAKcAAACuAAAAvwAAAG8AAADAAAAAxQAAAKkAAADGAAAAxgAAAIEAAADHAAAAzwAAAK8AAADQAAAA0AAAAKgAAADRAAAA1gAAALgAAADXAAAA2AAAAIIAAADZAAAA3QAAAL4AAADeAAAA3wAAAIQAAADgAAAA5QAAAMMAAADmAAAA5gAAAIYAAADnAAAA7wAAAMkAAADwAAAA8AAAAIcAAADxAAAA9gAAANIAAAD3AAAA+AAAAIgAAAD5AAAA/QAAANgAAAD+AAAA/gAAAIoAAAD/AAAA/wAAAN0AAAExAAABMQAAAIsAAAFSAAABUwAAAIwAAALGAAACxgAAAI4AAALaAAAC2gAAAI8AAALcAAAC3AAAAJAAACATAAAgFAAAAJEAACAYAAAgGgAAAJMAACAcAAAgHgAAAJYAACAiAAAgIgAAAJkAACA5AAAgOgAAAJoAACBEAAAgRAAAAJwAACB0AAAgdAAAAJ0AACCsAAAgrAAAAJ4AACISAAAiEgAAAJ+wACxLsAlQWLEBAY5ZuAH/hbCEHbEJA19eLbABLCAgRWlEsAFgLbACLLABKiEtsAMsIEawAyVGUlgjWSCKIIpJZIogRiBoYWSwBCVGIGhhZFJYI2WKWS8gsABTWGkgsABUWCGwQFkbaSCwAFRYIbBAZVlZOi2wBCwgRrAEJUZSWCOKWSBGIGphZLAEJUYgamFkUlgjilkv/S2wBSxLILADJlBYUViwgEQbsEBEWRshISBFsMBQWLDARBshWVktsAYsICBFaUSwAWAgIEV9aRhEsAFgLbAHLLAGKi2wCCxLILADJlNYsEAbsABZioogsAMmU1gjIbCAioobiiNZILADJlNYIyGwwIqKG4ojWSCwAyZTWCMhuAEAioobiiNZILADJlNYIyG4AUCKihuKI1kgsAMmU1iwAyVFuAGAUFgjIbgBgCMhG7ADJUUjISMhWRshWUQtsAksS1NYRUQbISFZLbAKLLAkRS2wCyywJUUtsAwssScBiCCKU1i5QAAEAGO4CACIVFi5ACQD6HBZG7AjU1iwIIi4EABUWLkAJAPocFlZWS2wDSywQIi4IABaWLElAEQbuQAlA+hEWS2wDCuwACsAsgEOAisBsg8BAisBtw86MCUbEAAIKwC3AUg7LiEUAAgrtwJYSDgoFAAIK7cDUkM0JRYACCu3BF5NPCsZAAgrtwU2LCIZDwAIK7cGcV1GMhsACCu3B5F3XDojAAgrtwh+Z1A5GgAIK7cJVEU2JhcACCu3CnZgSzYdAAgrtwuDZE46IwAIK7cM2bKKYzwACCu3DRQRDQkGAAgrtw48MiccEQAIKwCyEAoHK7AAIEV9aRhEsjASAXOysBQBc7JQFAF0soAUAXSycBQBdbIPHAFzsm8cAXUAACoAnQCAAIoAeADUAGQATgBaAIcAYABWADQCPAC8AMQAAAAU/mAAFAKbACADIQALBDoAFASNABAFsAAUBhgAFQGmABEGwAAOAAAAAAAAAAcAWgADAAEECQABAAwAAAADAAEECQACAA4ADAADAAEECQADAAwAAAADAAEECQAEAAwAAAADAAEECQAFACwAGgADAAEECQAGABwARgADAAEECQAOAFQAYgBSAG8AYgBvAHQAbwBSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAyAC4AMAAwADEAMQAwADEAOwAgADIAMAAxADQAUgBvAGIAbwB0AG8ALQBSAGUAZwB1AGwAYQByAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAHAAYQBjAGgAZQAuAG8AcgBnAC8AbABpAGMAZQBuAHMAZQBzAC8ATABJAEMARQBOAFMARQAtADIALgAwAAMAAAAAAAD/agBkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQACAAgAAv//AA8AAQAAAAwAAAAAAAAAAgAKACUAPgABAEUAXgABAHkAeQADAIEAgQABAIMAgwABAIYAhgABAIkAiQABAIsAjQABAKAAoQACAKgA3QABAAEAAAAKAFQAdAAEREZMVAAaY3lybAAmZ3JlawAybGF0bgA+AAQAAAAA//8AAQAAAAQAAAAA//8AAQABAAQAAAAA//8AAQACAAQAAAAA//8AAQADAARrZXJuABprZXJuABprZXJuABprZXJuABoAAAABAAAAAQAEAAIAAAAEAA4CDgOSBFIAAQCCAAQAAAA8AYgBiAD+AY4BnAG0AaoBBAEKARABtAEWASABQgFUAboBZgH0AWwB9AH0AfQB9AF6AfoB+gGIAYgBiAGIAbQBjgGOAY4BjgGOAY4BnAGqAaoBqgGqAbQBtAG0AbQBtAG6AfQB9AH0AfQB9AH0AfQB9AH0AfQB+gH6AAEAPAAGAAsAEwAlACcAKAApACoALwAwADMANAA4ADoAOwA9AD4ASQBKAEwAUQBSAFMAVgBaAF0AkwCUAJYAlwCoAKkAqgCrAKwArQCuAK8AsACxALIAswC5ALoAuwC8AL0AwgDKAMsAzADNANIA0wDUANUA1gDXANwA3QABABP/IAABAFb/5gABAFv/wQABAFv/pAACAFgADgCB/58ACAAE/9gAVv+1AFv/xwBt/rgAfP8oAIH/TQCG/44Aif+hAAQADQAUAEEAEQBW/+IAYQATAAQADQAPAEEADABW/+sAYQAOAAEAW//lAAMADQAUAEEAEgBhABMAAwBKAA8AWAAyAFsAEQABAFsACwADACP/wwBY/+8AW//fAAMADf/mAEH/9ABh/+8AAgBK/+4AW//qAAEAgf/fAA4ACv/iAA0AFAAO/88AQQASAEr/6gBW/9gAWP/qAGEAEwBt/64AfP/NAIH/oACG/8EAif/AAJn/0wABAJT/sAABAEoADQABABgABAAAAAcAKgAwAEIA/AESASQBPgABAAcABAAMACoANQA2AD8ASgABADj/2AAEADoAFAA7ABIAPQAWAMIAFgAuABD/FgAS/xYAJf9WAC7++AA4ABQARf/eAEf/6wBI/+sASf/rAEv/6wBT/+sAVf/rAFn/6gBa/+gAXf/oAI3/6wCV/xYAmP8WAKn/VgCq/1YAq/9WAKz/VgCt/1YArv9WAMP/3gDE/94Axf/eAMb/3gDH/94AyP/eAMn/6wDK/+sAy//rAMz/6wDN/+sA0//rANT/6wDV/+sA1v/rANf/6wDY/+oA2f/qANr/6gDb/+oA3P/oAN3/6AAFADj/1QA6/+QAO//sAD3/3QDC/90ABAA4/7AAOv/tAD3/0ADC/9AABgAu/+4AOf/uAL7/7gC//+4AwP/uAMH/7gARAAYAEAALABAAR//oAEj/6ABJ/+gAS//oAFX/6ACN/+gAkwAQAJQAEACWABAAlwAQAMn/6ADK/+gAy//oAMz/6ADN/+gAAQAUAAQAAAAFACIAUABqAHwAlgABAAUATwBYAFsAXwCUAAsAR//sAEj/7ABJ/+wAS//sAFX/7ACN/+wAyf/sAMr/7ADL/+wAzP/sAM3/7AAGAFP/7ADT/+wA1P/sANX/7ADW/+wA1//sAAQAEP+EABL/hACV/4QAmP+EAAYALv/sADn/7AC+/+wAv//sAMD/7ADB/+wACgBMACAATwAgAFAAIABT/4AAV/+QANP/gADU/4AA1f+AANb/gADX/4AAAgVQAAQAAAXGBwgAHAAYAAD/zv/1/+//iP/0/7v/f//1AAz/qf+iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5QAAAAD/6P/JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4wAAAAAAAP/kABIAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5QAAAAD/6v/V/+v/6v+a/+kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5gAAAAAAAP/tAAAAFP/vAAAAAAAAAAAAAAAAAAD/7QAAAAAAAAAAAAAAAAAAAAD/uP/kAAAAAP+dAA8AEP+h/8QAEAAQ/7EAAP8mAAD/nf+z/xj/k//w/4//jP8QAAD/2P/hAAAAAP/lAAAAAP/pAAAAAAAAAAAAAAAAAAD/5gAA/8D/6QAAAAAAAAAAAAD/e/+//8r+sAAA/3H+7f/UAAD/Uf8RABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAP/zAAAAAAAAAAAAAAAA/3b/4f68/+b/8wAAAAAAAAAA//UAAP84AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9f/zAAAAAP/SAAAAAP/kAAAAAAAA/7UAAP8fAAD/1AAA/9sAAAAA/9IAAAAAAAD/4f/nAAAAAP/rAAAAAP/rAAAADgAAAAAAAAAAAAD/5gAA/9IAAAAAAAAAAAAAAAD/7P/j/6AAAP+/ABEAEf/Z/+IAEgAS/6IADf8tAAD/v//p/8z/2P/w/7f/xv+gAAAAAAAAAAAAAP/hAAAADv/tAAAAAAAA/9UAAP+FAAD/4QAA/8QAAAAA/98AAAAAAAD/5f/mAAAAAP/rAAAAAP/tAAAAAAAAAA0AAAAAAAD/6wAAAAAAAAAAAAAAAAAAAAD/8QAAAAD/vQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9QAAAAD/4wAAAAAAAAAA//EAAAAAAAAAAAAAAAAAAP/xAAAAAAAAAAAAAAAAAAD/8wAAAAD/8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8QAAAAD/eAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//xAAAAAAAAAAAAAAAAAAAAAP+VAAD/8wAAAAAAAAAA//EAAAAAAAAAEgAAAAAAEP/sAAAAAAAAAAAAAAAAAAAAAP+FAAD/7QAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/lf/DAAAAAAAAAAAAAAAA/4gAAAAAAAD/xQAAAAD/7AAA/87/sAAAAAAAAAAAAAD/VgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAEwAGAAYAAAALAAsAAQAQABAAAgASABIAAwAlACkABAAsADQACQA4AD4AEgBFAEcAGQBJAEkAHABMAEwAHQBRAFQAHgBWAFYAIgBaAFoAIwBcAF4AJACKAIoAJwCTAJgAKACoAM0ALgDSANcAVADcAN0AWgACADUABgAGABoACwALABoAEAAQABsAEgASABsAJgAmAAEAJwAnAAQAKAAoAAMAKQApAAUALAAtAAIALgAuAAoALwAvAAcAMAAwAAgAMQAyAAIAMwAzAAMANAA0AAkAOAA4AAYAOQA5AAoAOgA6AAsAOwA7AA4APAA8AAwAPQA9AA0APgA+AA8ARQBFABAARgBGABIARwBHABEASQBJABMATABMABQAUQBSABQAUwBTABUAVABUABIAVgBWABcAWgBaABYAXABcABgAXQBdABYAXgBeABkAigCKABIAkwCUABoAlQCVABsAlgCXABoAmACYABsAqACoAAMArwCvAAQAsACzAAUAtAC4AAIAuQC9AAMAvgDBAAoAwgDCAA0AwwDIABAAyQDJABEAygDNABMA0gDSABQA0wDXABUA3ADdABYAAgA0AAYABgAEAAsACwAEABAAEAAOABEAEQASABIAEgAOACUAJQAMACcAJwACACsAKwACAC4ALgAXADMAMwACADUANQACADcANwAUADgAOAAHADkAOQADADoAOgAKADsAOwAGADwAPAANAD0APQALAD4APgAPAEUARQAVAEcASQAQAEsASwAQAFEAUgATAFMAUwAFAFQAVAATAFUAVQAQAFcAVwAWAFkAWQAIAFoAWgABAFwAXAARAF0AXQABAF4AXgAJAIMAgwACAIwAjAACAI0AjQAQAJEAkgASAJMAlAAEAJUAlQAOAJYAlwAEAJgAmAAOAKcApwASAKkArgAMAK8ArwACALkAvQACAL4AwQADAMIAwgALAMMAyAAVAMkAzQAQANIA0gATANMA1wAFANgA2wAIANwA3QABAAAAAQAAAAoALABIAAFsYXRuAAgACgABVFVSIAASAAD//wABAAAAAP//AAEAAQACbGlnYQAObGlnYQAWAAAAAgAAAAEAAAABAAEAAgAGACAABAAAAAEACAABACwAAQAIAAEABACgAAIATQAEAAAAAQAIAAEAEgABAAgAAQAEAKEAAgBQAAEAAQBK) format('truetype')}#toasty .toast.toasty-theme-default{font-family:Tahoma,Geneva,sans-serif!important;font-size:12px;border-radius:0}#toasty .toast.toasty-theme-default .close-button:after{content:'x';color:#fff;font-size:17px;font-weight:100}#toasty .toast.toasty-theme-default .toast-text{color:#fff}#toasty .toast.toasty-theme-default .toast-text .toast-title{font-size:13px}#toasty .toast.toasty-theme-default .toast-text a,#toasty .toast.toasty-theme-default .toast-text label{color:#fff}#toasty .toast.toasty-theme-default .toast-text a:hover,#toasty .toast.toasty-theme-default .toast-text label:hover{color:#f2f2f2}#toasty .toast.toasty-theme-default.toasty-type-default{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NEEzQTA1RTUzMjJBMTFFNUI4QjZEQkFEN0Q5RUExNzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NEEzQTA1RTYzMjJBMTFFNUI4QjZEQkFEN0Q5RUExNzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0QTNBMDVFMzMyMkExMUU1QjhCNkRCQUQ3RDlFQTE3MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0QTNBMDVFNDMyMkExMUU1QjhCNkRCQUQ3RDlFQTE3MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pr4ktvwAAADlSURBVHja7NrRDYIwEIDh1jAAozhKN/BWcgJ0A0dgBEbRCbCNkphaTAsPXpv/kkugELgv5eCh2HmeTQtxMI0EEG3RxQPW2mXT+Tz57JXUevd59XkLO1+9HQY+8x1DOKQ0h2TdCYhTjFjSxXWnekQqaAnJafa+AkjP6xcIECBAgAABAgQIECBAgAABAgQIECC7Y2oB8vB5qR0SEJKakW7Dxc7mtejyj8dpXL13Yn0knLy2LiFapiZnoWfUjtgDEW3NsgUiGru+FCJaX18lELWIEohqRC7kWMOXMa7b8ncQECA/4ynAAPBVcVo7OMcUAAAAAElFTkSuQmCC)!important;background-color:#efefef}#toasty .toast.toasty-theme-default.toasty-type-default .close-button:after{color:#000!important}#toasty .toast.toasty-theme-default.toasty-type-default .toast-text{color:#4b4b4b}#toasty .toast.toasty-theme-default.toasty-type-default .toast-text a,#toasty .toast.toasty-theme-default.toasty-type-default .toast-text label{color:#4b4b4b}#toasty .toast.toasty-theme-default.toasty-type-default .toast-text a:hover,#toasty .toast.toasty-theme-default.toasty-type-default .toast-text label:hover{color:#585858}#toasty .toast.toasty-theme-default.toasty-type-info{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NEEzQTA1RTkzMjJBMTFFNUI4QjZEQkFEN0Q5RUExNzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NEEzQTA1RUEzMjJBMTFFNUI4QjZEQkFEN0Q5RUExNzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0QTNBMDVFNzMyMkExMUU1QjhCNkRCQUQ3RDlFQTE3MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0QTNBMDVFODMyMkExMUU1QjhCNkRCQUQ3RDlFQTE3MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvCIVOQAAALtSURBVHja3Jq9axRBGMZnj+ViAhbaaISLR1AUBBNjEq7zD7gUiqIIgraKVf4Ay9gljYVFiliJEklyJE26dJsPYy5pE/AQtNNC8SMXHJ/BN7C3O/exe+/c7twLP5jmZp7ndnZ25n3HkVKKboiM6JJwmfrpA6fACCiAIXAB5H1/1l/wEeyDMvDANvgGfrYrwGlzavWDcfAQ3IrZxwJ4BTbAl9hKlJEY5MADsCv5Ypf6zMXRFPUHLigCT5oLj8ZwTRk5C57LzoUaq5/byFWwLDsfS+Ayl5EC87sQNTZJQ0OdzVYttYS+oWU1yVDL9D1auiN/EM+BmRSYEKRhhjRFMpIFT0ExRR/vImnKRvkgqh+9Az0p24n8AbfBSitPZAA8YzJRBT+IKkN/PaRtoJkRB9ygbQdHzILTxCxTn+Ok0WlkRO2dJhmnwhE9iSq1uWKStGqNOOR2mHHAM7TijFCbK4ZJq6N72U+A1+Am44C/wHdqnwS9jH0vgvvgd9CIWqM/WXTYUuebHPgcnFqjlp0YM6Q59I4UDAymDkuPiQ0D/Rd0R90hQ0ZeUvsK47Ie0uw3Mmjo8WcNJjoGdVMrb2Agp06bK/I6I66wL9yuy2tlAtsJ2+JIZ6RioZGKzsiBhUYOdEbKFhop64x4FhrxdEa2VAbVIhOSNIeMfAUli4yUSHPIiDrYz1lkZI40h4xI2uTtWGBih7TKel92VZ+YNjCXud+9aRGopbiaQdfILceWewJcpPYlxqPBWvDPqZegUwLmRToTdHfAcqO9lj9W6fGlaTmWpGm12abRH4fghdCkJhOMFdJ0qD34tFBWeAuuJWziA7grYpYVBP3wifhfn0gqtknDfuOJ11rpTZW/SglUq0qcpbdjVGFyqoMmpkwUQ/3l6QmwbtDAOo3hmqyzBy8M7DEa2GvnwkC7VzhUvngMPBLxk9+LtAHcFJTHjZV3YrrmdHyp5rqovVRzXtReqqmI2ks170VKLtWkMh1kdfwTYADvtL/RevtcWAAAAABJRU5ErkJggg==)!important;background-color:#3ebfa8}#toasty .toast.toasty-theme-default.toasty-type-wait{background-image:url(data:image/gif;base64,R0lGODlhIAAgAPcAAAAAACZOTh5eXiJSViZUVCRUViZUVlp+gCJWVjxmaC5cXGKEhlyAgE50dM7Y2MzY2GCEhDRgYjhiZDhkZDhkZkJsbFZ8fDpmZjxmZkZucEhwckpwckpyckpydExydEx0dFB2eFp+flJ4elZ6elZ6fKq8vFh+fmCAgmKGhsbS0maGiJywsGSEhrTExJiurn6amrLCwhhMTCJUVq7AwCJUVBxUVCRSVCJSVCRSViRSUiJSUmyKjChWVj5oajJeYE50djZiYjpkZkRsblh8fkhwcFJ4eFR4elh8fChYWCpUVCpYWCpYWixaWixaXC5aXIagoDRgYCRUVD5oaEBqakRubkBqbEJqbE52diZWVjBcXjZgYihWWDJgYCZWWCRaWi5cXjBeXlB2dlp8fjJeXiRWVgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEFAGUAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAIAAgAAAI/gDLCBxIsEyUAgUG0KCBsACBghAjliEwwEbDiw1xFNAhMWIBjRgbZkGCseNAHg15SGCCMcKBAwkw0uiIgGEBHkYOgCBwscLLCiEfQuRhswCSEC8jNCQAImlIHDMLhvR54AdPoy8PoHwqNaQSpAeUFgDy8sdFAhF6GEg4kADIs0LKIqQ6pefLHgVqChxgNAvGJVl9FGjgtACTpi8/NBRoUYNOClsLZDhgQkGBCBs6YCkgwUTWDiQRGsSa1UIPkkgmhL6YICtMjFcJVAD7MkTMkAh7vBRhGXdDJD0sZOXgu4CBDBlWY+SLUUJTscWL47jhW7nvCUJ6XADiQ8HaAdSD/q6NbmABivPoDyREcBGJhAwWLFjHyAO9fQgfES7pccX1ASDRETBBBhw0IIIFDBDHnmT+HWBBb7jxdFWEBbRWVg8KTBjUCymEUFwZOPAwhQQ8TOiDBcmd9YMDLJ5gUUll+IaFCC/FpEAFUxjgQwssOsDCi4uVocOCdlHGEmEHCBYBDD3u8CINZAwUkg9Z3bbBSxIg5MMMPaoQZFsNzfiSB1fF9RpCCpTA4hMEREVQUVSZsERDuh0AVEMKrODCEgTkEJFbBdQ5wUUTvKQBbAQQgEVHNGgUQQIaUnlAAyHR4KdJZQxAJJ4vgXARQ5i+iZsECUBYQJShQnQVDgMMgMOCA5gGBAAh+QQBBQBcACwAAAAAIAAgAIcAAAAmTk4eXl4iUlYmVFQkVFYmVFZafoAiVlY6ZmYsWlpmhohKcHKetLQyYGCesrI2YmI4YmQ4ZGQ4ZGZAampQdnhCbGxEbG5Ebm5GbnBIcHBIcHJOdHZWenpSeHhQdnZWfHxSeHpUeHpUenpWenxYfHxYenxYfH5Yfn5afn6csrKYrq4YTEwiVFYiVFQcVFQiUlQkUlaMpKYkUlIiUlKKoqSGoKKEnqB6lph4lJZqiowoVlY+aGguXFxMcnQ0YGJAamxOdnYoWFgqVFQqWFgqWFouXF4wXF4wXl4yXmBKcnRKcnIkVFQ8Zmg+aGpCamw8ZmYmVlYuWlw0YGAoVlhMdHQwXFwmVlhOdHQkWlosWlwkVlYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/gC5CBxIkAuTAgUGuHCBsACBghAjciEwYEbDiw1jFKAhMWIBjRgbGhGCsePAHQ13RFCA8ceBAwkwuuiIgGGBHSIOVCBw0cJLCyEfQtxhs4AQFC8hNCRQ4eWPkDFmFgzp8wAHnkZfHkAJdWpIIkgPOEAI4SWHiwQcUDCQcCABkGgvmEVYlULPl3ZrChxg9AhGBVqRFODgFKGCpi+rNBRokYHOBFwLYDhwokcBBwx8RCkQ4YRWHyQRGsyqtQMFkkIkhL7IQ+uBJhixErAQ9iUKHiEbtj4QwnLuhkJ4gPj8u4CBDBhWY+SLMULTp8Wjx4DxW/lvCBQSRPhxRMHmAdSD+7KNTsC11hAJEVwUEiEDiA7WMUYxb/sjwiIUPphXGh07hswVjJBBAepJRh8IvuVGwHi/8dSEVhzw0ANWuRmwwAo+UFhSDDtQEMEOFCIBQgbKzdZAAw+cFZJAv0XhwUu49WDBWj3IcGIDHqzIBQ0F3nVACSwRJlYBR9RwYwkNubDFQCE5oFVMBTh2QAQI9WDDjSJgVRCFLr6UIUJyHYCbYTecqAMBUhFUVFUnsITQbkA1pAAOORBBwAwRvVUABS9JcJEELzEQGwEERNGRCxpBkICGTloVkgt4msTFAD021MNLFVzEkKRq5hZBAgkWsCSnEGEVwwADxFCgpAEBACH5BAEFAGQALAAAAAAgACAAhwAAACZOTh5eXiJSViZUVCRUViZUVlp+gCJWVj5oaCxaWmCCgl6Agk50dtji4jRgYqq8vDhiZDhkZDpmZjxmZjxmaERublZ6fD5maEpyckx0dE50dFJ4eFh+flR6elh8fFp+flZ6elh8fm6OjrTExmyMjq6+wHSSkp6ytBhMTCJUViJUVBxUVCRSVCJSVCRSViRSUiJSUiJQUmqKjISenmSGhihWWEBqbDBeXlB2djZiYjhkZkZucFZ8fEpydFJ4eoCcnIigoipUVGKEhCpYWk52djRgYHiUlCRUVIykpEZubpywsD5oakJsbEhwcExydEBqakJqbERsbkpwciZWVi5cXChYWDJgYFB2eFR4eipYWCZWWChWViRaWmaGhi5cXjJeYDBcXiRWVkhwcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj+AMkIHEiQDJICBQasWIGwAIGCECOSITCgRcOLDV8UiCExYgGNGBviIIKx40AbDW1EUIDxwYEDEzCu6IiAYQEbHg5wIHCxycsbIR9CtGHzZoeXDxoSyIE05IuZBUP6PNCA582XB1A6jRqSyNEDSQvoeNngIoEHTAwkHEgApFkLZBFOBdpwKpMCNQUOuIkDowKsfRs0LaCA6UsNDQVazKBzgtYCcDtUKfAggwYqBSJ8PaCBJEKDV7FeYELShgTPFxNgPUABo1UCTTYf6JAgZEPVBzxMtp0ywQWsGXgXMMDDwmOMezFG4ABWuPOPLngf562DyYQID3AowDwgelC1zgn8rMbqISGCi0Qi8PhwYTpGKuNfdviIkAgTw1h1PNdxw4LlHB7wgBdCcI13wW68WZVgARVg1UACVSgYVAYzUCDhRWS8YMMNEdigIA4f8KAVASRGMMKJCVxYgEC8UcHcASnyQAMQNhAxxIkj3HChQDGch9FUHShAAAQOOFCWAjee2IRVK4gxUEhXYBUTASgUOQRCCiyA45KfEaSgi4fxREASRZ5gFREMnFgWVAQVdYN8LDl0RJFBKOhVewTAEFFbBTDxkgQXeVHkEha5RkVHK2j0wAQSclCkCYU2tIKeJpExgI+pFUlCpAxV2mZQNYyQQKROegqRVS9094KPlQYEACH5BAEFAF0ALAAAAAAgACAAhwAAACZOTh5eXiJSViZUVCRUViZUVlp+gCJWVjxmaCxaWl6Agk50dqi8vDRgYo6mpjhiZDhkZDhkZkJsbFZ6ejpkZjpmZjxmZkZubkhwcEpwckpyckpydExydEx0dE50dFB2eFh+flJ4eFR4eFJ4elh8fFp+flR4elR6elh8foqipBhMTCJUViJUVBxUVCJSVCRSVoagoiRSUiJSUnyYmnyYmHCOjm6MjmqKjChWVkBqajJeYGiIilB2djZiYkRsblZ6fEZucEhwclJ2eChYWCpUVGKEhCpYWCpYWk52djRgYCRUVDZiZD5oaEJqbERubkBqbD5oaiZWVi5cXChWWDJgYCZWWCRaWi5cXjBcXjBeXlZ8fCRWVgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj+ALsIHEiwy5ICBQa0aIGwAIGCECN2ITBARsOLDWEUmCExYgGNGBtiIYKx48AcDXNAUIDRwYEDCTC26IiAYYEcJw6AIHBxwssJIR9CzGGzAJEQLx00JAAiaUgYMwuG9HmAAU+jLw+gfCo15BGkB5QW8PGSwUUCDnQYSDiQAMizP8oipKqj58u6NQUOMJoFo4KsOwowcFpAQdOXHhoKtKhBp4StBTAcCDGlgAMNHKQUgAD2AAeSCA1izUpBB0kiEUBfTJAVJsarBCZ0nhwzJMImL0lUtt2QSBMgWTfwLmAgCAbVGPdihNBU7PDhMF7wRs7bh44EEBxkUaB5gPSga5/2E2idlURCBBeJQMhQggJ1jFLIvwzxESESHT3I+3g+VgeGDB2AgEIQBaAXmXxA7MYfbzyxVlYTU1zFm2z78dYFDDnoAEEOEu5QQhDU7ZAVBBIq1gVvUojwUgIENIEDDzkQQUJWEZRYgEAzGGjXZAoQEEMDDQB1xGEwXdUCFwOFJOKKDtEApAgIEUFkBSa21VCKL3VwlQ1ALnCVlC/9UEBUBBVFVQgsIWQEkDdImMMGGkhBgAwRuVWADi9FcNEJQNJgGwFSdNSCRg6weBEGQKoQUgt0mtTFADo2BAGQD1zEkKNlBjXCARBchCSmEF0FwwADwGCgowEBACH5BAEFAGYALAAAAAAgACAAhwAAACZOTh5eXiJSViZUVCRUViZUVlp+gCJWVj5oaC5cXF6AgFyAgFB2duTq6tjg4jZiYjhiZDpiZDhkZDhkZjpkZjpmZjxmZjxmaERublh8fj5maHiWluLo6EpwckpydNri4kxydEx0dE50dE50dk52dlJ4elp+flR6elZ6elZ6fFh+flZ8fHSSknqWmHKQkMjU1IykpIiiotbe4JqwsBhMTCJUViJUVBxUVCRSVCJSVCRSVoCanLDAwiRSUiJSUsbS0myKjChWWEJqbDRgYFB2eEZucEpyclR4emiIiGSGhmKEhihYWCpUVCpYWCpYWixYWixaWi5aXDRgYiRUVEBqakJsbEhwcD5oakBqbERsbkhwciZWVjBcXiZWWChWViRaWi5cXjBeXjJeYCRWVjJgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj+AM0IHEjQDJUCBQbcuIGwAIGCECOaITAgR8OLDXcU+CExYgGNGBt2YYKx40AhDYVEiIKRyIEDFjDe6IiAYQEhKA4UIXDRysshIR9CFGLz5omXEBoSaPBySsgdMwuG9HmgAc+bLw+gfCo1pJOjB4gghPCywUUCRKoYSDiQAMizGV6SQEgVaMMhL6sUqClwwM0uGJ9kFVNgRFOEUZi+FNFQoEUPOilsLRBXg4ICRDx84FIggoasH0giNIg1a4oqJIVMEH0xQdYDFzBeJTAE7MsTCUI2dH3AxGXdKROoAA28gAEjGSZj9IsxQpGwxaN/1AFcOXAIVSxEINIlCucB1IP+ro1O4HVWEwkRXGQSwQiLFNYxcjF/+yPCJ1UUZ00aHcKQDB6E0AAKRuyFUFzmqfCbdMDxhEFWDSSgAAEEWKTbEBrwp5sZOwhRRQRCXFWACDPQsCBCLr0UgYiNmQGcE0A44IALBEBQRANCMGFCVhOwWIBAP6h3VgwygpCbEhxwMEEBTjz30gVX3UDGQCE1IKMDL/C0QJJ2MaFfBS221RAUMMjYw1UoJOlBSoplUEBUBNlEgAwyPiBBQyEkiYKIQnzgARcE+BCRWwTwIGMQIlqRJAM+OsRFRzfsQMACLbBYQZJK+HiDoCaZMQACPnaRZBIiMtRpnEFZYYQYIk55KkQKV+0wwAA7CNlpQAAh+QQBBQBcACwAAAAAIAAgAIcAAAAmTk4eXl4iUlYmVFQkVFYmVFZafoAiVlY8ZmgsWlxegIJOdHS0xMSyxMQ2YmI4YmQ4ZGQ6ZGZCbGxWenw6ZmY8ZmZEbm5Gbm5GbnBIcHBIcHJKcHJKcnJKcnRMcnRMdHRQdnZafn5QdnhSeHpYfn5UeHpUenpWenquwMCsvr6qvLyetLScsrIYTEwiVFaMpKYiVFQcVFQiUlQkUlZ+mpokUlIiUlJykJJwjpAoVlhAamoyXmBoiIpOdnY4ZGZEbG5YfH5khoZWfHwoWFgqVFQqWFgqWFosWlpggoJOdHY0YGA0YGIkVFQ+aGpCamw+aGhAamwmVlYuXFwyYGAmVlgoVlYkWlouXF4wXl4kVlYwXF4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/gC5CBxIkEuTAgUGxIiBsACBghAjciEwwEbDiw1pFLghMWIBjRgbYiGCseNAHQ11QFCAccmBAwkwxuiIgGEBHSYOjCBwccLLCSEfQtRh86aIlw8aEgjxkklIGjMLhvR5IATPmy8PoHwqNaSRoweWIHzwMsRFAkt2GEg4kADIsxde+kBIdUfPl3ZrChxwMwvGI1l5FGDQFKECpi9BNBRocYNOCVsLxC0xpcASDh6kFIBQIqsHkggNYs1KYQdJHRFAX0yQFSbGqwQmgH0pImZIhE5ekqh8O6UTClk79C5gIMOFyBj5YoQwIuzw5x9n9Ebe+8GOBBCWZFGgeYD0oGuf+BNonZVEQgQXiUDIMIQCdYxSyNP+iPDIDsRZkz63fkHDhxAnZFAAepLJRwFv0PXGE2tlOTEFbLdNUIJ+t3FBgw47QKDDVQVMsEINLF3EQ1YQcLgYF70Z0UIDDQhRwBQTqEUECVlFYGIBAt1AoFI4sJhCUoQdIJgRzb2UwFUxaDFQSBiw2MACPHHwEgQIEYGfBCe21dARLLAIw1VxuYaQDohdUEBUBBWVA4sqiIXbTxfp0AEHUhBgQ0RuFdADiwdwGMFLGtxGgBQdxUDDUkmYOOIBDIQUw50mcTEAAjcqUNZFDEWa5m0QJBAiQkpqCtFVNAwwAA0ERhoQACH5BAEFAGkALAAAAAAgACAAhwAAACZOTh5eXiJSViZUVCRUViZUVlp+gCJWVj5oaC5cXGiIiGCCgk50du7y8tzk5GSEhjZiYjhkZIKenuzw8DpkZjpmZjxmZjxmaEZucFh8ft7m5kpyckxydEx0dE50dFB2eFp+flJ4elR4elR6elZ6elZ6fFh+flh8fH6amoSennyamsDMzhhMTCJUVp6ystri4iJUVBxUVCRSVCJSVCRSVoiioiRSUiJSUqS4uHSSlIagoMDMzGqKiihWWEJqbDJeYGqIilB2djhiZDhkZkpwcEpydFJ4eChYWCpUVCpYWCpYWixaWixaXC5aXDJgYDRgYDRgYkhwcCRUVHqWlnSSkkBqakJsbEpwckhwcj5oakBqbERsbkRubiZWVjBcXiZWWChWViRaWi5cXjJcXDBeXjJeXiRWVjBcXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj+ANMIHEgwzZQCBQbEiIGwAIGCECOmITBgRsOLDWsUwCExYgGNGBt+QYKx40AfDX1IYIIRyoEDFjDG6IiAYQEfIw6AIHDxyssfIR9C9GHzZoiXERoSAPEySsgaMwuG9HmgAc+bLw+gfCo1pJKjB54gjPCywUUCT6wYSDiQAMizXMoipAq04Y+XVgrUFDjg5heMS7ICKdCgKUImTF96aCjQIgedFbYWyHBAg4ICTzh08FJAgoasHUgiNIg1awkrJFWKvpgg64ELGK8S+AH2ZYgEIRu2PiDicu6UCUxk5fC7gIEMGSRj7ItRAlMoxaN/pPFb+e8IVixIgPKFCecB1GP+G1By9TcB11lFJESAkMAMID1ybHjwt7gX9LY/Ooywg4WD//9BIF0EP2SgGQgkZKCXQy8ACOADxElXHE9UAMiCCkUQoGF5F/2gQVK/pVGDAjYsQIZFCEmQAgNKYAREVhJwOFoaDtWYkg4TTGCWAj+ohYQIMMooEA7snaVBjikMVtgBgymR2GtXxXDGQCFVkOMEHPD02AESIITEkxUwRlB5PuA4QQ8oxnUAbgj5kBgXBURFUFEmIOlbAbtdcZEPHHDgBQE3RORWASLkKEV5ErwUYWxedBSDRj90wOGLVYUUQ6AmpTEAAjIq8BIIFzGU6Zy5SWDBnQVMOSpEV9UwwAAFNRSZaUAAIfkEAQUAXQAsAAAAACAAIACHAAAAJk5OHl5eIlJWJlRUJFRWJlRWWn6AIlZWPGZoLlpcZoaITnR0vszMvMzMNGBiOGJkOGRkOGRmQmxsVnx8OmZmPGZmRm5wSHBySnBySnJySnJ0THJ0THR0UHZ4WH5+Unh4Unh6VHh6VHp6Vnp6Vnp8WHx+Wn5+sMLCsMDCrsDAmrCwGExMIlRWhqCgIlRUHFRUJFJUIlJUJFJWJFJSIlJSgJqccpCQbo6OboyMKFZWQGpqMl5gUHZ2NmJiOmRmRGxuWHx8SHBwKFhYKlRUKlhYKlhaLFpaLFpcTnR2MmBgNGBgJFRUPmhqQGpsRG5uPmhoQGhqQmpqQmpsJlZWMFxeKFZYJlZYJFpaLlxcMF5eJFZWLlxeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP4AuwgcSLALkwIFBrx4gbAAgYIQI3YhMCBGw4sNZxSoITFiAY0YG1YZgrHjQB0NdUA4gvHBgQMJML7oiIBhAR0iDnggcHHCywkhH0LUYbPAkA8vHzQk4CFpyBkzC4b0eaAHT6MvD6B8KjVkEaQHlBbw8bLHRQIPdhhIOJAAyLNAXiZBSHVHz5d2awocYLQKRiNZeRRg4LTAkaYvOzQUaBGDTglbC1w48MHvgwwbqBSAAPbABpIIDWLNSmEHySERQF9MkBUmxqsEJnSmHDMkwiYvQ/i13XBIEwpZNfAuYODCBdUY+WKE0FTs8OEzZPBGztvHjgQQHlQ5onmA9NcEdPZc5U2gddYQCRFcrPLBBQoUCp5TMf/yw0eEPHCsaMCf/4jnY+1wAQYceDDCBQWoV4AN/fWngl0ADsfTAv2tkIMU49kmmw/DdTHDETd8oEAMV/FAwXEY8ZAVBBmG1oVDLVIBwksxVTGBWkOEkFUELQpUg4J3UcYSYQcIVgRiMF31whYDhaQijQhl8BIECA2BZAWLETSejC9xcFVcrlWJGBAFREVQUVR9YERDuB0AVEoaZEAFATRE5FYBO7wUwUURvISBbQRQ0dELGj2QQIZPMhDSC3Wa1MUAQDakwEseXMSQo2faBkEC8TXEJKYQXTXDAAPMoKCjAQEAIfkEAQUAaQAsAAAAACAAIACHAAAAJk5OHl5eIlJWJlRUJFRWJlRWWn6AIlZWPGZoLlpcZoiIYoKETnR2+Pr61NzcZIaGjqao9vj4NGBi8PT08PLyOGJkOGRkOmRmRG5uWHx+OmZmPGZm5urq4ujoSnBySnJ0THJ0THR0TnR0Unh4Wn5+VHh6Vnx8WH5+WHx8hqCglqysdpSUjKamztjYvsrMjKSkgpycGExMIlRWsMDAIlRUHFRUJFJUIlJUJFJWdJKShJ6gJFJSIlJShKCgcI6OKlRUQmpsMl5gUHZ2NmJiSHBwSnJyUnh6VHp6KlhYLFhaLFpaLFpcMmBgNGBgJFRURm5uPmhqRGxuRm5wPmhoQGpqQmxsUHZ4Vnp8JlZWMFxeKFhYKlhaKFZWJFpaLlxcMlxeMF5eQGpsJFZWKFZYJlZYLlxeKFRWKlZYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP4A0wgcSDDNkwIFBtSogbAAgYIQI6YhMOBGw4sNcxToITFiAY0YG2pJgrHjwC0Ns1hYgnHCgQMJMNboiIBhgSwmDpAgcFHKyyAhH0LcYrPAlhIvJzQkMCRpyBwzC4b0eaABT6MvD2QJ+VFqyCRIDygtQORlg4sEJkQxkHAgAZBoM5hFSBVowyAvoxSoKXBAAQVWrxZQklVIgQZOCyxp+lJEQ4E3CNBw8EBHkqtyNWgpMOEDiK0WNGQFQRKhwb8OUjvoAEMIgS0XSl9MkBUmxqsEVlBQ7YBCDK4Io7w0sRl4gRtgVHhQ/cIiVwNTMqDk6vdilx8uHDAwzv0jjqAEXP53JxIlgYUJWpZsHfA9pIGt3AnUzmoiIYKlSz4sUKFCNtcs871UwkcIaaEBCxEkmCAU4wWRwQchDIHEFHshBIGCCu5gQXfxFUCCgiycsCF3QWhAhHFp5ABWEUo4hJAQGkwxXUNCZGWBYI+lgRCON5HwUkxaBFGFAUnk9NIFPArUw30YUaUBS4gdYFgSPv54VQ1jDBRSjT8i9MFLIybB2AEY5OhWSlWGgFmXCG3BWAYFREVQUXgdoEGLwb0kxUVZgPBBFgTwENFbBQh3wAUXXfDSB1wRkEVHNWg0QQI4cnmWTIKalMYATF6kwEtDXMSQpnNyZUECClyUJakQXZXDAAcD5MCkpgEBACH5BAEFAGIALAAAAAAgACAAhwAAACZOTh5eXiJSViZUVCRUViZUVlp+gCJWVjpmZixaWlyAglyAgEpycsjU1DJgYMbU1DZiYjZiZDhiZDhkZDpkZkBqbFJ4ekRsbkRubkZucEZwcEhwcEpwclB2dlh8flB2eFh8fFh+flJ4eFp+fqi6ul6AgsLQ0JCoqMLO0HCOkJywsLrKyrjGxmKEhHSQkhhMTCJUViJUVBxUVCJSVCRSVqy+vnyYmCRSUiJSUihUVj5oajBaXE50dDRgYkJqbFR4eihYWCpUVCpYWCpYWixYWmyMjDJeYExydEpydCRUVDxmaEBqakJsbDxmZj5oaE50dkx0dCZWVi5cXDRgYChWWDBcXiZWWCRaWixaXFR6ei5cXjBcXDBeXiRWVihWVi5aXFZ8fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj+AMUIHEhQjJICBQbIkIGwAIGCECOKITAAR8OLDWsUyCExYgGNGBtaCYKx40CSCKVMUIDRx4EDCTDK6IiAYQEpQA6AIHARw0sLIR9CDGKzQBARLyM0JODhpY+QNWYWDOnzgAeeRl8ekBLy49SQQ5AeeIAwwksPFwk82GEg4UACINNWhYKwKtCGP17uKFBT4IACCjAQwApY65ECPZwiVND0ZZSGAnEQQOHAhosqWDMc+DClwIMGSLhO+KAVCcoCBgE7WO2AxQsrBIJQON1widYDSzBiJXDjBGsHJ4wQxrjj5YXOXRvyUNGC9YrkBQxoyED74t+lOkyUcAAEuvePNIL+EpgyvGuEHQkm+LCigOuA8CENcPVO4LbWCwkRXJTdQMSH6hhJYd9LInyE0BAWeLDAggtK8F0EFmQAmgdaaMAXQhswyOAHVnxHXwFLMOiBBVa0Bd0PHyiVnBg1SGHBbIQd8YEG1T2g1QTloSZGclJc8FJuU1hggQFB+PgSBeUJlIN+GFX1AUuJjVXAECBotQRWMngxUEg2vhRTAQ28NAFCQTQGE2QEEdbjS0hgVVVuZDaGQQFSEVSUBS892VBxB8zZkBQNNCAFAThEBFcBfFJwEQUvNdAVAVJ0JINGESQwXJc9hCRDoSaJMQCTF01x1kUMdWpnVxMkgBxCWpoKEVYJNQwwQA1MdhoQACH5BAEFAFcALAAAAAAgACAAhwAAACZOTh5eXiJSViZUVCRUViZUVlp+gCJWVjpmZixaWlyAgEpwcpiurjJgYJSsrDZiYjhiZDhkZDpkZkBqbFB2dkRsbkRubkZubkZucEhwcE50dlJ4eFB2eE52dlJ4elR4elR6elZ6elZ6fFZ8fFh8fFh8flh+flp+fo6mqIykphhMTCJUViJUVBxUVCJSVCRSViRSUiJSUoSeoIKcnniUlnCQkChWVj5oaC5cXEx0dDRgYkJsbGKEhihYWCpUVCpYWCpYWi5cXjBeXjJeYEpydEpyciRUVEJqbDxmaD5oakBqajxmZiZWVixaXDRgYChWWE50dDBcXkxydCRaWiRWViZWWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj+AK8IHEjwypECBQa0aIGwAIGCECNeITAgRsOLDWEUkCExYgGNGBsK8YGx48AbDW9EUIBxx4EDCTC26IiAYYEbIA5wIHDRwksKIR9CvGGzgI8TLyE0JFDh5Y6QMGYWDOnzQAWeRl8eQAl1akggSA84QAjhZYWLBBwoMZBwIAGQaKtuQFgVaEMeL5UUqClwQAEgSdg2VKB1SIENThEqaPpSR0OBMQjYaDCjgg+sFw6YyFHAAQMdTQpEMKFVB0mEBv82WN0gxQKWPiScvohD64EkGLEW6PGAdYMHJHRjrH3gA+eQSxWgUMG6hvCLBjJcmI3R71IDOmg0wIC8O0YYL5D+G1DwPCQEJQki7BiiIPSA8EEFeydgW+uHhAgu+oiQgYQI6iE1Ud9LJ3yEUBBKMKaVUt4VAAEFF3xWQQgZ7IVQZvWNcFyD8xWQhFYV4JBDeRfxYAKDyF0Bww0URHCDbkOQkAGADmgVQXkCddcEBy/hUEAOFFBggA8faCXBcwLJkB9GVZXAEmJi/cXjS0lg1UIVA4VU40sxFcDASxEg5IOCXRZQkG47NoZVVT6KyZgFBUhFUFEUvGQCSwgRB2dKRTDQBAExRPRWAUq8JMFFErzEAHIENNFRCxpBkIBwW84lU6AmXTHAkhflYNZFDGU6J3IRJLBhAViKChFWMAwwAAwES2YaEAAh+QQBBQBnACwAAAAAIAAgAIcAAAAmTk4eXl4iUlYmVFQkVFYmVFZafoAiVlY8ZmguXFxcgIBMcnTS3NzQ2to2YmI4YmQ4ZGQ6ZGZCbGxWeno6ZmY8ZmZEbm5Gbm5GbnBIcHBKcHJKcnJMcnJKcnRQdnZafn5QdnhSeHhSeHpoiopYfHxUenpYfH5Yfn5oiIqGnqBmiIi+zMyourrO2NiKoqKsvr4YTEwiVFYiVFQcVFQkUlQiUlQkUlYkUlIiUlLK1taOpqaywsLM2NgqVFRAamoyXmBihIZOdnY4YmJEbG5WfHxWenwqWFhggoIsWlosWlwuWlxOdHRMdHQyYGA0YGA0YGI2YGAkVFQ+aGhCamxAamw+aGpOdHYmVlYwXF4oWFgqWFooVlYkWlouXF5mhoZihIQwXl5YenwkVlYoVlgmVlgwXFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/gDPCBxI8IyUAgUGzJiBsACBghAjniEwoEbDiw1vFMghMWIBjRgbZjmCseNALQ2PIJGA8cmBAwkwzuiIgCEBBSwa8CBwccLLCSEfQtTCEGEWFw0alGhI4MNLKCFvzCwYUkVSGDwLaHl5AEvIj1RDRkHaQATCBy8/XCTg5IeBhAMJgLxY40XSFgh9HvjR8yXfmgIHFMACJCtCCA6SMigg5CnCJE5fNmko0GIIEgumeEW4o4EODGw3MPAK4QRXBiQRGtRKojWJIBdIZlmRxTDCBFxhYsxKQMMK1yRWAP1aYMrLEQqIIyRw5EIQ1xRsXzSQ4QLKr4KnJ1hAIoLy7x9t/nxlDr7Agx8JIDzJksTrAPFB334nkJvriIQILh6BkKEEhevEYVHfSyB8hNAWP0TG1QPgnXeBBgx8YEIGBeRXwAUDFpFcecTxhFtaUyggHUYTnMAgcWfcgMUPEHBhGBAlZAAgQkBwBcGIAgUowksxKTCBW0eMwFUE0gmUg4V9HVBCEgUw8RIQBRwRAlcJZDXDGAOFVCOPCG3wEgQIHaEgS6oRZBgWOx7AQFYY6oaQFpFdUMBUBBVVgF4nMImQcQcMhxAWHGyABQE4RCRXAT+85F1DEbykwXhYdDSDRg9UedGWQoQ0Q6EmnTEAkg0pkNZFDHVa51cQJLAhQliaClFWCTcMMMANFnYaEAAh+QQBBQBeACwAAAAAIAAgAIcAAAAmTk4eXl4iUlYmVFQkVFYmVFZafoAiVlY8ZmguXFxsioxKcnSkuLigtrY2YmI4YmQ4ZGQ6ZGZCamxSeHo6ZmY8ZmZEbm5GbnBIcHBIcHJKcHJKcnJQdnZYfHxQdnhWenpYfn5SeHhWenxWfHxYfH5afn6gtLSetLSesrKUqqwYTEwiVFYiVFQcVFQiUlQkUlYkUlIiUlKKpKSIoqKEnqBwjpBujI4oVlg+aGoyXmBOdHY4ZGZCbGxUeHpGbm4qVFQsWlosWlwuWlxMdHRMcnQyYGA0YGA0YGIkVFQ+aGhAampEbG5AamwmVlYwXl4oWFhOdnYqWFpOdHQmVlgoVlYkWlouXF4yXl4kVlZUenoqWFgwXF4wXFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/gC9CBxI0EuSAgUGtGiBsACBghAjeiEwIEbDiw1hFJAhMWIBjRgbPoGCseNAHA1xdHiA8ciBAwkwtuiIgGGBICoazMDY4+WEkA8h4rB580SDBhsaEujwEklIGDMLYiSw4CiNlC8PoHwqNSQXB0cxIHzwssNFAkZyGEg4kABIjDeO1iBQoOeBnw0nvMxRoKbAAQVwPMGoA2yDnzuaIgzC9CWRhgItajjwQcJWAjYaoEiAdgMDJwUghMjKgCRCg4GzHgCRg2QQHwroXkygOuZZhAQmjM4awnbIAjleUlDw+yKOHCNIFy9gAMOFrSEBY4Tw4cCR5dg/vigOffmDHAkg+Bx5EgT0gO1A12InoDorhYQILkKBgMEDiO4hnbR/GeIjQik5NJYVS9g9MMEFGRDRgRZixVfABfuNQFx2y9FFW1k5xIadbgT+5gUMOCwBAQ6yFaCDBxjgp0NWEJQImRfFOUHBSzEpMMESBkAx40sRuFiAQDI4eJFdHgRRQGIH6FCAFNXRKFsLWQwU0oo0IrTBSxAgBIWAErzYVkMyOiYbhDCl1NgFBURFEFF6HRCCkQgFd0APxjGwgRMExBCRW8DxeFEEL2XwGwFOdNSCRg9wdhGVO4TUgp4meTGAkA0pUNZFDEW65m8QJDAhQlFqCpFsMAwwAAwORhoQACH5BAEFAGkALAAAAAAgACAAhwAAACZOTh5eXiJSViZUVCRUViZUVlp+gCJWVjxmaC5cXGCCglx+gE50dN7m5tzk5DhiZDpkZkJsbFZ6fDxmZkhwcHKSkt7k5EpyckpydExydEx0dFJ4eFh+flR4elZ8fFp+flZ6elh8fFh8fnCQkIagoG6OkLLCwoykprrIyqS4uBhMTCJUViJUVBxUVCRSVCJSVCRSVoykpLTExKi6uiRSUiJSUmiKiipUVD5oajRgYFB2djhkZDpmZkRublh6fEpwclJ4elR6emSGhipYWGKEhCpYWixYWixaWixaXC5aXDBaXE52dk50djZiYkhwciRUVDZiZDhkZj5oaERsbkBqakZubkBqbEJqbEZucFB2eCZWVjBcXihYWDRgYiZWWChWViRaWi5cXjJeXjBeXjJeYCRWVihWWDJgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj+ANMIHEgwDZQCBQa0aIGwAIGCECOmITDgRcOLDWMUsCExYgGNGBG+qDCGwMWOA7s03JKDC0YRDhyQMNmwRUcEDAsQuWFhCE2HKGKW+InwIcQuOXWSsGAhQcMXKWJOCBnDZkGMBHYwLUJzScwHR0J+vBryyFILERAyiDnjIgEdOQwkHEgApFsOTBcQIBDUwdCGEg4cyFEAp8ABBbq4vKjgLAQCJ6QiRLJD8IENDQVaxHCAQ4QtRT1YIKGDwAQVNIwUgNDBcgYimQ92sXxgQg7YRiSoLvqCQALaTt0WldDacofgYnMI9qBA7MUuOSZYxuC8gIEsPlSKRYwRAocDOqr+i/8Iw7l28U5yJICggwsS0APKhyQgVzwB2pY9JERwkQiECh9McJ5YW+AnWAcfIWREDpXR5sR4TlThQwUa7CBEFoUh5IOBEzQ3XnUm/SbYDjkoQFRIxD3oXBoxbFEFBGD8NMYHWQxYgA6WPRaSQM5t8d0BTikgQRUGEOGBZRGcKJAN/GEU2AEdIFFAA4KVodOPQNLUghkDhVSGZcFxdgAECBHR4AFpIVTQTz4KpgFNGwLZUBcN+lCAVQQl9WQHuxWg3AESXLQFBhhsQUANEdXlp2BpIsSDYBWIRcAWHbWgkRMJEPXlAQ2E1AKiKKUxQJOMjXgRQ6HmKRYECXiIEJcNqUJEUwwDDBBDk6EGBAAh+QQBBQBZACwAAAAAIAAgAIcAAAAmTk4eXl4iUlYmVFQkVFYmVFZafoAiVlY8ZmgsWlpegIJMcnSuwMA0YGCsvr44YmQ4ZGQ4ZGZCbGxUeno6ZmY8ZmZGbnBIcHBIcHJKcHJKcnJKcnRQdnZYfn5QdnhSeHhSeHpWfHxafn5UeHpYfHxYfH6UqqqQqKgYTEwiVFYiVFQcVFQkUlQiUlQkUlaMpqYkUlIiUlKGoKCCnp5ykJBsjI5sjIwoVlg+aGouXFxOdHY2YmI6ZGZEbm5WenxWenoqVFQqWFowXF5OdHQwXl4yXmBMdHQyYGAkVFQ+aGhEbG5AampAamxCamwmVlYsWlw0YGIoWFhOdnYqWFgmVlgoVlYkWlokVlYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/gCzCBxIMEuSAgUGrFiBsACBghAjZiEwoEXDiw1fFJAhMWIBjRgb5tBB4GLHgTga4oCgAKOGBg0WYFzREQHDAjgoHPhQEiGBGjBthHwIEcdNnB4OHODRsMUJmAxCvqBZMOQEpR16KoD5oKXUqiGFJD3gAGEHmCh6OnSQw0DCgQRAXiTgQ+kOh0AbCG149UCOAjYFDsA5BKMCpQeKEIABFaGCDoiPNBRoMcNOCSkRXjjgQUeBDDRmCCkAYewBBqMRGsSJ+ICIHKNxREjt0GGC1gkw9iQwwTTn3CER5lBKwXNwlTlEII563MCFC5lDDsYI4QPZ49gzujgeHTuPHAkg9DgYouBJwu1D3WYn0BoxhYQILgqBcEGEiO4hn7RX6uEjQiE5QNYaU9nxwMQFGDDQAQUXAKbZfiIYlx12Jd2G1UhqBdcbgcFl8QIOTECAg1pFiAAdRg4gBkGGqmVx3BMgKJWbDhMwYYAQOikVAYsCyRAfRn150NIOShlRgBDWydjTClgMFJIRiAGngVIQ/CfgARVMRpBaT+TIQE91HQAcTgL6UABVBB0VpFcFDHfABBfhsIEGTxAQQ0RxtanjRREohUFwBDzR0Qoa8ZBAhlAecNdMd56UxQA/XqQDVhcx5GiawUGQgIQFNHkpRD29MMAAL/zoaEAAIfkEAQUAaQAsAAAAACAAIACHAAAAJk5OHl5eIlJWJlRUJFRWJlRWWn6AIlZWPmZmLFpcaIqKYoSETnR26O7uytbWZIaGNmJiOGJkOGRkOGRmQmxsVnp8OmZmPGZmfpqa5OrqSHBw3ubmSnBySnJyTHJ0THR0TnR0Unh4WH5+VHh6WHx8Wn5+VHp6Vnp6WHx+fJqagJycfJiawMzOlqysjqamnLKyGExMIlRWIlRUHFRUJFJUIlJUsMDAJFJWJFJSIlJSgpyessLCfJiYaoqKKFZWPmhqMl5gUHZ2OmRmRG5uVnx8SnBwUnh6KFZYKFhYKlRUKlhYKlhaLFpaTnZ2NGBgNGBiJFRUbIyMPGZoRGxuQGpqRm5wSHByQGhqQGpsPmhoQmpsUHZ4JlZWMFxeMmBgepaWJlZYJFpaLlxcMF5eLlpcWHp8JFZWKFRWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP4A0wgcSDBNlAIFBsyYgbAAgYIQI6YhMKBGw4sNcRTQITFiAY0YERKIwITAxY4DfzT8IUEBxikZMnTAOKMjAoYFfpA4IMKkSAsxSYR8CPEHzgJIRhw4EOGilJhAQuKoWTBkhaUNfC6JmQHJRZ84qoZcovTAE4RVYvrwWaBGiRUqBwwkAPIrEawIgWYQivDHCwcOdhC4KXAAUi8YmSw9EITAAqgIE7QA7ICHT4EWO/CkoBLh3RGIpzCA4NUHB8o3ziI0iHTxAQtAkiCdIFskAQI9KGsAw9ahyApll46YElJkBsAPZhZviASIhcUelueE4WLMcsMYJYgwK13kchw2lv577V4gApALEp54UdAlYfihBsgTcL1Y6AAEF5NI2FDCwvjlXdAn3EcIMQGEEPQ11V0EVRCxwQdCnGBFAfgVcBd9FlhHnnQmTbFYA0B40ZtVIyhYXBo4/FCFBD+wFUQJVvyHUBCLSTBiAQIBuN0BxHlRQRUGJLHTUhOMKJAOFV501QEjuNTAUkEUsMSOB2Dg0wxnDBQSjUtdgJBmB0iAUBIIdtlQQWx1seMHPl1IHEJIlElEAVQRdNSSIzDREBBLVXDRDx500AUBOUREVwF8HjDBRRMstUFxBHTR0QwaRXBBb1w2ENIMhaKUxn0hKbCUEBcx5KmdxUlwgUsNZXkqRAlgDTAADhV6GhAAIfkEAQUAYAAsAAAAACAAIACHAAAAJk5OHl5eIlJWJlRUJFRWJlRWWn6AIlZWPGZmLFpaZIaGTnR2uMjINGBitMbGOGJkOGRkOGRmQmxsVnx8OmZmRm5wSHBySnBySnJySnJ0THJ0THR0TnR0UHZ4Wn5+Unh4Unh6VHh6VHp6Vnp6Vnp8WHx+WH5+ssLCora2mrCwkKioGExMIlRWjqamIlRUHFRUJFJUIlJUJFJWJFJSIlJSgJycepaYdJKSbIqMKFZWQGpqMFxeaoqKaIiKUHZ2NmJiOmRmRGxuWHx8SHBwZoaIKFhYKlRUKlhYKlhaTnZ2Ml5gMmBgNGBgJFRUOGJiPmhqQGpsRG5uPmhoQGhqQmpsPGZoJlZWLlxcKFZYMF5eJlZYJFpaLFpcLlxeJFZWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP4AwQgcSBCMkwIFBrx4gbAAgYIQI4IhMCBGw4sNZxSoITFiAY0YG/IwgrHjQB0NdUBQgNHBgQMJML7oiIBhAR0iDnggcHHCywkhH0LUYbOAkQ8vHTQk4CFpyBkzC4b0eYABT6MvD6C8yHOG1JBIkB5QWgDISwYXY2TogXLAQAIguQo5i5DqjoYGcDRokKNATYEDjPLAqCDrkgIMnBKAoGJvgxVXBVq8oFPC1gIWDpgY7ACDhisEPqBw7GIwQoNYs1LYQdJIBJIYizh+sADjVQITxL78MCVkQx97U+y46tsoFApZMxS/aeMGS9+BMUJoSrY4AeIYZ8goDnt52R0JIPs44KHgSsLtQQ14d5i1fYiECC4agWCBAoXuvq+0z/rhI8IkO/ywHxDrAbGDBRds4MEIFviFUGb7UYDFet7xZEVWDEDBA3ZTmUBgcWDMoMMOEOhA3BIUWIBfAUtkBQGHBQhU3BUgvNQbDxPsYIARIWQVAYcC1RAfRlSZwFJiBxyGRFMvJXDVC18MFFKLTSKEwUsQIGQEkwdU0FBBxNH40gZXzXVAb1oyKUQBURFUVJHPFQDFTxfpkAEGoNEQEVwF7PBSBBdF8NIFvhFwRUcvaOSAkxdRiZZMepoExgBDXoTFSx5cxJCkbvoGQQITNhQlpxBdNcMAA8wwpKQBAQAh+QQBBQBtACwAAAAAIAAgAIcAAAAmTk4eXl4iUlYmVFQkVFYmVFZafoAiVlY8ZmgsWlxcfn5OdHb09vaesrQ2YmKIoqLw8vI4ZGTs8PA6ZGZEbG5Weno6ZmY8ZmZKcHJKcnRMcnRMdHTY4OBOdHS8yspQdnhYfn5SeHhSeHpYfHxafn5UeHpUenpYfH5sjIysvr6KoqTK1tZ6lpaitraEnqDW3t6GoKCSqKgYTEwiVFYiVFQcVFQkUlQiUlQkUlYkUlIiUlJmiIh4lpZykpJghIRsioooVlZAamoyXmBQdnY4YmQ4ZGZGbnBWenxKcnJOcnJegIJmhogoWFgqVFQqWFgqWFosWFosWlpOdnY0YGA0YGIkVFQ+aGpEbm5CamxIcHA+aGhAaGhAamxCbGxqioxIcHImVlYuXFwoVlgyYGAmVlgkWlouXF4wXl5WfHwyXl4kVlYwXF4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/gDbCBxIsI2VAgUG1KiBsACBghAjtiEw4EbDiw1zFNghMWIBjRgbnmmCsePAIA2DSFCAkcqBAwkw1uiIgGGBICYOgCBwscLLLCEfQgxis0CTEC8fNCQA4mWVkDlmFgzp8wADnkZfHkB5kWeOqSGfID1ABeGDlwy6XjERJuFAAiC7Vk1boKqQhgYOQIBgoUBNgQOMosEIReuQAgycOhziYy+EFA0FWsygkwLXAkcOhBBTgEoGDWEIHHnhOAVLhAazarUghGQTCSQxgnAc42pXhASyjH0ZImZIhCL2tniA9bfRK0i0ajBewMCPJbFDBsYooWlZ5jwJaMeYA4fx6MYJ/vBY0QLIAg9cniT0HtQAc9wRGsifD+PGAAQXXx8hYQF8yCjzBTjBDSBBIQQRWiX13g08yOCACh+w0IELBOCHWYIvIcHZew5tV4BFuBWQgFYMXCFGcb/pppRxbeQQhBASBFHcECQc4d8QWkmAImptGBeGCC/FJEYWQhjQxAg57ijQDhb2xBtLiR1w2BNNBYlVDWsMFBKOQSJE2QESINRElQdQEBlBxf340gZYVeWbUVVWUIBUBBWVBW9QNHTFS3KmpEEGoekQEVwFCPFSmA1J8FIGvxEQRkc1aPRAAihySddFNQhqUhv3haTASyBgWsCmdf4mQQKnIZQlqRBhlcMABwPkYOGmAQEAIfkEAQUAXQAsAAAAACAAIACHAAAAJk5OHl5eIlJWJlRUJFRWJlRWWn6AIlZWPGZoLFpaXH5+TnR0wtDQNGBiwM7OOGJkOGRkOGRmQmxsVnp8OmZmPGZmRG5uRm5wSHBwSHBySnBySnJySnJ0THJ0THR0UHZ4WH5+Unh6WHx8Wn5+Vnp6WHx+vMzMrsDArL6+ora2mK6uGExMIlRWIlRUHFRUIlJUJFJWjqamJFJSIlJShKCggpyeeJSWcpCQZoaIKFZWQGpqMF5eUHR2NmJiOmRmRGxuVnx8Unh4VHh6KFhYKlRUKlhYKlhaTnR2MmBgNGBgJFRUPmhoRGxsQmpsQGpsPmhqUHZ2JlZWLlxcKFZYMl5gTnZ2JlZYJFpaLFpcLlxeMFxeJFZWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP4AuwgcSLDLkgIFBrhwgbAAgYIQI3YhMGBGw4sNYxSgITFiAY0YG/IggrHjQB0NdUBQgNHBgQMJMLroiIBhAR1DDoAgcHHCywkhH0LUYbMAkRAvHTQkACJpyBgzC4b0eaAHT6MvD6B8KjWkEaQHlBbw8bLHRQIOdhhIOJAAyLMXXiJBSHVHz5d2awocYJQHRgVZ/TJwWkBB05cfGgq0qEGnhK0F4oaYUsDBhg5SCkAAe6ADSYQGsWalsIMkkQifLybIChPjVQITOB8IETMkQiYvRVC23ZAIEwpZOfAuYADDhdQY+WKE0FTs8OExYPBGbpsABRw5FvRoAoEIRelB1/Q+J/CggfnzKRIiuEgEAoYRFKhjNHK+/omPCI/siML6gI/nBVBwgw0yrKACCjUQsF5k/R1AwW4AEiAhT68VsFpZTExxFW+x/cdbFzHosAMEOmzIwwgYUJdEVhBsqFgXvEkhwksxTTGBWkTM+FIELhYgEA0L3jUbS4MdkEQBRhwG01UucDFQSCvSiNAGL0GAEBFKVvBiWw3J+JIHV8XV2pWHXVBAVAQVRVUILN3200U6cLCBFATMEJFbBeyw40URvJRBdVJ05IJGDiTgYpQMhOSCnSZ1MUCQDU3xEggXMdRomrZBkACEBTh5KURXxTDAADEs2GhAADs=)!important;background-color:#255556}#toasty .toast.toasty-theme-default.toasty-type-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkQyQUI3Q0EzMjJCMTFFNUI4QjZEQkFEN0Q5RUExNzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkQyQUI3Q0IzMjJCMTFFNUI4QjZEQkFEN0Q5RUExNzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0QTNBMDVFQjMyMkExMUU1QjhCNkRCQUQ3RDlFQTE3MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0QTNBMDVFQzMyMkExMUU1QjhCNkRCQUQ3RDlFQTE3MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Po9jTrYAAAKTSURBVHja7Jq/SyNBFMfNuSYB0cbCUzmtTvwbbPwb7KPV/Rmnu5tYWR1XX6WFpYL2giBW/igUFCxEuMJeZMXg3Bt4kcmwiftm3kuG5R58mc0G3ptPZnfmzZtUlFIjZbBKWUC+CPqOQA3QLSjDtoH3+U2PiIBqoE2Vb5v4PWtMCYh6HwgTph4yiO5coopZwgnDCVElQJgw1ZBAIgcIEyYKBSRVfpaGAJIoHkuGCZIqXkuHAdIEvTODvKPfgYG0QG9Kxt7QvziIDvKqZO2VCuMCkRE7dQPawZZiGQWGOjtRIf6AZkCT2KZEH1nR2YwCQX2crkDfcpLJY4fHLPEFifBXbDs854c9fG45TBRt7EfkAqJzoNjjhT0CVXL87nn4jHvlZv2y2Nhz5jnH98L0Owo68fQb52XNvql4P3sArVi+F0HXTOlMvR9IjWEkOvYM+mH5XwU9MfmPzZ2mPexcEB3btkB+Mqc1Mfa7C6QhsELvg8aMGL8FYuh+d1VRNgRqG1OgSbyugeYFYmzY5aAFgSAa4iteVw0oTluwQR6FQKrGiEwIxHi0K41roB3mIC+gM9Bf0AxoGTTOHGMdtMtVQBiWfRQuJNcRaeu5jnCv7GbCd++YeDqv7NwwB6DvoGlsDyQgimS/PjA6p1qyfC555loJNfvl2I+c5vxydbzv8ng670fs+hV1h3gJmrX8zOF96g7x03oXtRhH2W+/4Myi349xbLeJo5sVLdoNoopyAfqFbRBVlFLVtcwCQlsIoo3+B1b7bQnVflvqfzU+DBivwx6uE6umJ0RTBXSGmHqMRDBniJ3cLHWACOpU18ylUgJEkOfspfrnQ5GdZtfOLnSQESzM6eLZHaYcd/h5TCJeaf6v9U+AAQAvyHBRYhRQ4wAAAABJRU5ErkJggg==)!important;background-color:#f1432a}#toasty .toast.toasty-theme-default.toasty-type-success{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkQyQUI3Q0UzMjJCMTFFNUI4QjZEQkFEN0Q5RUExNzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkQyQUI3Q0YzMjJCMTFFNUI4QjZEQkFEN0Q5RUExNzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyRDJBQjdDQzMyMkIxMUU1QjhCNkRCQUQ3RDlFQTE3MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyRDJBQjdDRDMyMkIxMUU1QjhCNkRCQUQ3RDlFQTE3MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvQVuMwAAAORSURBVHja7JpNaBNBFMebNsZacih+FFFsrB4qVIw9lByEWNtCC/VSRS14UjSx1V4UvbUKFaFUD178OniPB28KgsYeFBVqRFDQgx9paE1bNVKKta3N+h94hTWZ3ezOTiYh9MEPwmZ39v2TmTdv3oxL07SyUjDXipBsW0NsA37gAx7gpe9nwQKIg7fgM5gjCi6EOboZNIEDoFPneC5jwh6A++Al+AYWVQtxg3pwBPSBaoc/6Di4Q6I+gL8qhGwBx0EvqJHc1afADXAXJGw9yYTYoBVEtfxblN5l2Tc7InrApKbO2LtCMoV4wGUwr6m3OTAAVjsV4iIRS1rhLA36nQo5Rb9KoW0WnDTz1SxqtYB7YF2RTN4/wSEQtRO1asGIVnw2Qr5l+VzO0VYBjoFgEaZUQZqEXVYmxAbwGGxU5Nw8eEqT6y7KGswsCdrAe7Ou5QaDirvLVYqO5fR5ysIzl8hXw6i1FUwrFDEK6jJ86AAzOZ6LA5+REPardCsU8QO0cwZuBfhq4flu8jlrsLO1RJfCgcsSw0ec6+doLZPLusjnrDHiBSlF/8YbgzDqB78stpEin7O6VpMiEWwwt3BEsMH7zGZbAV7X8ivoTmype9Ngdr4A9thsr275g16IT4GQGLjGuc4EnBZor54nxKMgVzoLZjjr/kGwSaDNKp4Qr6CDabCU4x5WVLgOXnC+uwKaBd/t5QkRsRQ4Q10jZnLfKBjmXN8PjvJyJ9umixpDAhNaT0bojHHuY+G0kROlaiRk2EO88Gsnx1oEfRzndoPXGfeGDULtsIRQfpEn5ISNBtj6/aDBWqaRcihmD/VphI52i8mhlTTF8YSYAEETMUxEg0GXei5pcg3whIikKOOg2UBMZR67lGmKUgUiAg2OgX0W608dVEiQYRHyWWoaH7cgZj34KDFn+y+N5y2svgs2nDBIBpfXGLckijBdWMlY6hqNGdalFiQKybnUZewESQcvmQB7de1Vgy8SRSTJx5yVRjcpTjt4GetmvaBTcn2M+XSeNzeVTIHOrGTaSiXTtUVUMj0Mnohs9IQkxn2nReyQ0/2RfofjpSi2Fcpok2WgQNsL0jZ69IQlZax2qi3hfOwhMtoURbMRepdl30S2p2t129MbJEemaVoSR8CYqgMDO+i0Q1iwAqK3CXCbDgy8K8QRjlUkIuDwCMcrEqP8CIdRjakSbLd4qOYT+AN+rxxzKkUh/wQYAIxbfwhIUivlAAAAAElFTkSuQmCC)!important;background-color:#06bc5a}#toasty .toast.toasty-theme-default.toasty-type-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkQyQUI3RDIzMjJCMTFFNUI4QjZEQkFEN0Q5RUExNzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkQyQUI3RDMzMjJCMTFFNUI4QjZEQkFEN0Q5RUExNzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyRDJBQjdEMDMyMkIxMUU1QjhCNkRCQUQ3RDlFQTE3MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyRDJBQjdEMTMyMkIxMUU1QjhCNkRCQUQ3RDlFQTE3MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhxHKhwAAAN7SURBVHja7JrfS1RBFMf37q7mj6SySMWMMqnQLEsKMg2yH4SC2g+wrKcIg7SX3ouiP6BfEFRPEdRLFFlBIEVQvfcgFrJBLxFBEWG9mHb7Hjgrl+vMzr13Zuyu+IUP7M7Pc+7MnJm5u47ruom5oGRijmjOOJK22PYScBrs5u8vwA3ww0ZnjqU1sgg8Ba2+9NegE4znw9QqBg8FTpDawF0uE3tHBkFLjvz9XCbWU2sZT5/1inIfeHS+xXVELoK6AOXquGwsp9ZGcDhgJExz2U1xc6QEXADLQ9ShsudMbQGmHDkE9kSoR3tMd1wcoSd7CpRFqLsYnA05ktYcOQGac+T/ZmTawm381/BL0ecR2CDI+wyug4/8fQ04A6oFZUfAAZCJbAk5osFVMOmK1SMo3yMpS21c07FFx4m94LvEsFcgLahDaS8ldb6AnVHtibpGaGGfBOWS/PuyqQyeSPIqNYJGZEeO8ClWJnIwJdkIq3LU6+a2Z8WRGtAHSnOUWQcKBOkphSOl3HbNbDjSpzjdkupBoSCd0tYq6rZwH1aj1jaQcdWaAJWC+hWcp1KG+7Ky2OlpHgW1AcrStFohuTkWBKhfy30V2phaHWCAI08QrfK1T58bg27UoB+0m3akhsNtQQjH23xPlCJWU8gT9WDQhZ8M+HT2KcKtSKt97ac4LYw6ue+kCUfqeUqFVa3vrpHmy1dYDXA413KEptIxsDmCAQ2+TTElCQAqUd8HlRcwRVhrA+NudFV72irXaOcX2xIp/JbxsC7UOOZnFzyN7EqNdkrZlrKwr0xpGuwCvZr3nQ7PvtOo2RbZcg88A1NBL1YV4HnIcDkbescv+L4GGRGHb2smnHgDPnk2yFbN9prYttszRkWwcBr4kqOry6DK0y59vmmgXbKtTnVDdAx1NgKKBQ9pAefp6ooqam0Hxw1MqTvgjyB9ivN01e+/SngdoVf9l/iMo6u05HDpGHqzmLW12O+Iw9fMdkPRpVdy1U0ZCOlZtbPNjnexl4BR16xu8ZrI9rGU00xqlG2f3ke6wGMLcf8teM9PjQ6MWy30QaMylJ2vzZY2sB2MTZHtQ9k1UpTIXxV5F/tYHjsy5nXkARjOQyeG2fZpR35yWDyfsPAbuAWNs629bPuM02+a7w+F/DMAnYL/xsT4JJ966WeKCWZSdYzPO83/O2jeEUv6J8AAuUNANq3q2uMAAAAASUVORK5CYII=)!important;background-color:#f97a1f}#toasty .toast.toasty-theme-material{font-family:Roboto,sans-serif!important;font-size:12px;background-color:#323232}#toasty .toast.toasty-theme-material .close-button:after{content:'x';color:#fff;font-size:17px;font-weight:100}#toasty .toast.toasty-theme-material .toast-text{color:#fff}#toasty .toast.toasty-theme-material .toast-text .toast-title{text-transform:uppercase;font-size:13px}#toasty .toast.toasty-theme-material .toast-text a,#toasty .toast.toasty-theme-material .toast-text label{color:#fff}#toasty .toast.toasty-theme-material .toast-text a:hover,#toasty .toast.toasty-theme-material .toast-text label:hover{color:#f2f2f2}#toasty .toast.toasty-theme-material.toasty-type-default{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjdGQ0YwNTUzMjJFMTFFNUI4QjZEQkFEN0Q5RUExNzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjdGQ0YwNTYzMjJFMTFFNUI4QjZEQkFEN0Q5RUExNzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGN0ZDRjA1MzMyMkUxMUU1QjhCNkRCQUQ3RDlFQTE3MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGN0ZDRjA1NDMyMkUxMUU1QjhCNkRCQUQ3RDlFQTE3MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvdUzSUAAADVSURBVHja7NixDcIwFIThGFGDoCYzQM100FAyCEzAGHQMQA0iDGDOElWUYKfiPeW3dE2K6L7YjqOEGGPleUwq5wOAVUCtnJRGiX9O8+1SdxUNHZt4pVyVpbGH/VS2yi03A0eD5dNYKIeSGXgpM6NLPi2neQ5g/WAIvEYBAAAAAAAAAAAAAAAAAAAAAABGB2i8Ay7tC57+zD2UtXL3NgNv5axs2uXTmA682V7Zed3E5soPAZgsXwowW74EYLp8DmC+/C+Ai/J9ADfl+05iPuYAjAnwEWAAlI5MOXu7aeEAAAAASUVORK5CYII=)!important}#toasty .toast.toasty-theme-material.toasty-type-info{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTY3QkFBRDYzMjMwMTFFNUI4QjZEQkFEN0Q5RUExNzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTY3QkFBRDczMjMwMTFFNUI4QjZEQkFEN0Q5RUExNzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBNjdCQUFENDMyMzAxMUU1QjhCNkRCQUQ3RDlFQTE3MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBNjdCQUFENTMyMzAxMUU1QjhCNkRCQUQ3RDlFQTE3MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pqvvb2MAAAJWSURBVHja7JlBSwJBFMfXKA+FJ70EQlCReM46hnSOQAhKugYdsr5BRPQNsgIhb4YFncRzRMeyD2BUEAhe8iR1sND+Q28hlnV31pndnSUf/JmL7Px/82adN29DvV5PC3KMaAGPIYDfMSr6gNm7V30hFqBlaB6ag+LQBP3sA2pAT9AjdAM9QN3npWmh+UMiLzHMM5M5aJMMOwkGdAGdAKLhKQCMxzAcQltQWDCJHegcOgDIu+sAMJ/FcAzFJG9nZn4PEGVXAGB8DEMe2nb5vSywbQmQb2kAMD+O4Qpa8ejPpQqtA+JTGIBW/hpa9fgfsgKtAeJL9BzI+2BeoznzQhnA6m9gKGv+RhZZuHQMAPNRDHUo6jNAC0oAouV0Cx0Jmg8ZNGhEyQt/BuiEfRE8pIymRep2dtjNmJ3Y/TKwI+GElRlh8mSfAaw+g3oboLZxMwN67TSFLHTtMrAowbxu+K9EI07ebLdQWuHyP80DkFIYIMUDkFAYIMFzI5uUNJnsl9jUm1kGIgpnIPIvuhJthf22eQCaCgM0eQDqCgPUeQBqCgPUeABuFQa45QG4p8JJtWiQN2sAqvZKCgKUjJWo1TlwSpcIVaJDnviulHTzKSoEUOzXP7U6iffpQu33faBFXjRHANQFyCmw+rl+HQnbWoj6MQUfzResekK8xdyu9tvm8zoqNLcmBEC9SdZSr3pons2VteuLcpfT1CXOeLSd2BwZns60aVvFLlT7wOH4QkMTJKEzSYddh56VdGp+oAwYshHMj3wGCD2TwfvMquqdeAgwBHAQPwIMAIRS2XfVn5FFAAAAAElFTkSuQmCC)!important}#toasty .toast.toasty-theme-material.toasty-type-wait{background-image:url(data:image/gif;base64,R0lGODlhJgAmAIQAADQyNDxerDRGZDxuzDRShDxy5DxmxDROfDQ+TDx67DRKdDQ2RDxirDRKbDxy3DRWjDx25DxqxDQ2PDRGbDxu1DRSjDROhDQ+VDx69DxitDx27DxqzDIyMgAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJBwAcACwAAAAAJgAmAAAF/iAnjqQIXESwFZpWbIx1AWVtkxKxaVjfJ77ehiC5GTkAiyPIbGIKBNqRhIhgeE5sD8vbXKaiSSHIvZKdhcZUoXX62k3NwTgpb81wnv5+VdcQY0BuZoSDGBBfJABWhYaOPhtFIwSPlU4VIxIUlpw+BQsiFp2jGA9IG6SdFCeCjVmDcHcolrGcDwF8r6RcGZupuYYUY7DEb8ZMLYR2cb+1v8w9w82VL8+cFLjHzM66PRmibs7L2ncVF9zWbzOowNrobqsc4M/oFiKa6YOfIwfk3OJB7I0AYCBfkw1SRgB6VKtWgUQlBIwrFkfDBCNsUsFRMEWMtQIXwSAomMoLmIEWIVggO7OlgIWEJ+9Z2GFIw4YKoGLaOGEhw4oWL75dyHkkBAAh+QQJBwBEACwAAAAAJgAmAIY0MjScQjwsYrxkOjRcWpw8bsw0RmTMRkREXqx8VoRcSmy0Rjx8Ojw0UoQ8ZsQ8cuRMNjR0OjQ0TnzUSkQ0PkycUmw8Xqy0Tlw8euxsWow0SnTETlQ8MjQ0YrRsOjQ8ctw0SmxMXqS8RjyEPjxEVpQ8asQ8duR0PkSsUmTMTkw0NjykQjxkWpQ8btQ0RmyEVnxcTnS0RkR8Pjw0UoxUNjR0Ojw0ToTcSkQ0PlSkUmw8YrS8Tlw8evR0Wow0YrxsPkRMXqw8asw8duzMTlQyMjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/oBEgoOEggAQDAEiBxMTByIrMhAAhZWWhBwyIjecnZ6cIgwcl6REAAwHn6qfBzKUpYQQC6u0nyIQsIIDqasTOzsiGym0EwOwHhOeEzkJIR0dAtECzyEJFcmeEaQD2DcoLNLh4tIdLDmexpUQvCgh4+/vIec3E7iEALMp4PD84wSpIl4JknFjB4J+CMVZuHBDxiAOBy5AS0gxWgcUB0YRYbBjYsWKHXaMMLXA3ceTIWJwgPDipEsBCWj8sPDypIUfCmq6VEBC50kSNH1WtOBRaEIhQnggXcr0AVKnUKMKcdp0alMeWLNq3cq1a1KuD4J0HUu2LNYWHbR+NcuWqw8bjVjXtp0bdwYFuWbxthWCA4DYsnqVcg3cghLcrHITexWMOC4PG4JUtKBLmccDFYMkMJ4bmCvkQQB80O3MVQBmQjhMsA2MNylfSy5ccyYrxAUpDaQBq/1MysWDylsf2M5FwQHtsgJw5AJtw6nurA9snF4+SIWNIGtlIxYwYzr1QgBw2BAQ5DfSaDNweL8UCAAh+QQJBwBGACwAAAAAJgAmAIY0MjScQjwsYrxUWpRkOjS8Rjw8bsw0RmSkQjxEXqzUSkQ8ZsR8VoTMRjw8cuQ0TnxMNjSMSmR8Ojw8XqxsWoyMVnQ0Pky8TlQ8euw0XrR0OjQ0SnSkUmw0UoyUUnQ8MjRkWpQ8ctw0Smw8asTMTlQ8duQ0UoSEPjx0WozETlQ0YrQ0NjxcWpxsOjTERjw8btQ0Rmy0RjxMWpzcSkSEVnzMRkQ0ToRUNjSMTmR8Pjw8YrRsWpSMVnw0PlS8Tlw8evR0Ojy0TlyUVnQ8asw8duw0YrwyMjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/oBGgoOEggAQEgEFNQoKDQUIORAAhZWWhB85BTOcnZ6cBRIfl6RGABINn6qfDTmUpYQQMau0nwUQsIIENbW9nQoEsC0KvsWcGqQExMbGwZUQvMzGCriEALPSzAWjgzm+KUEcHuMcHEEXy7Qngx+pnykeFAkqAvX29xkJIB4pqgrcEjzVoJHgnsGDBhPQIOFp3TVONVDQQ0iRYgYK0Vx8gMDJg46KIAVkQKhCCKcbASmEXFkRhIITAVCwnImQAoIINHMajDBAp08BMkbqFCpyJhEiP44eTaq0qdOnTh00/eHgh9WrWLMizcq1a9IhXsOKDfsiA9etY9NaRariAVa0h1rVhu3QA67ctWqJ9AAANi/eu0Mo2Xjb1W7cq2iRdhC04sXdx1RXDHJr2DBitTasFYGcdKwAyYR6lOD8N6uDHpYOWL68WisMUhtai4VLZAMsGFVJW3XwOpeFzWOR2hWAOhdjGyEqe3VgA7TxQSs6CJj9Q0AH588LrehhQ8ACqVRfCLDRA/ulQAAh+QQJBwBBACwAAAAAJgAmAIY0MjScQjwsYrxkOjRUXqS8Rjw8bsw0RmTUSkS0RjxEXqx8VoQ8cuQ0TnxMNjQ8ZsR8OjzMRjw0PkyUVnRsWpQ8euw8Xqx0OjQ0SnS0SlQ0UozMTkw8MjRkWpS8Tlw8ctw0SmzcSkQ8duQ0UoQ8asSEPjykUmy0TlQ0NjykQjw0YrRsOjRcWpzERjw8btQ0RmzUSkxMXqSEVoQ0ToRUNjR8PjzMRkQ0PlScUmx0Wow8evQ8YrR0OjzMTlQ8duw8asy0TlwyMjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/oBBgoOEggAOEAEFNggIEQUpNQ4AhZWWhBw1BSGcnZ6cBRAcl6RBABARn6qfETWUpYQOCau0nwUOsIIDNrW9nQgDsCsIvsWcF6QDxMbGwZUOvMzGCLiEALPSzAWjgzXZ2SWDHKnfzAjcEOXgptjqxi0cDu7ZNOm0GyY4EwsLFBQdHfzxm4DDxIZlqkqk8ARERgcFAiJKnEiRogIWMoB4SrDJRAcVFUOKDKmig4kQLTIQGMmy5UQWGSC6nMlSgQ8fFW7qwHmzp8+bDHwEDfqzqA8dDHQoXcq0qdOnS49G/QG1qtWqLlQwlXq161YdKhoo5bqz6VGpZM0+1XAjrde3eWNvAKBq1S1cHT8ozfh61+5YHRoEoXBx9y4DFIPEuk3LlWxjpjOsPbjq16oAxIQkJC1slcENSy8qV7Xr4wUpDKLf+sAA68BmzkoZmM4lYfJfuAI+5zI044NXqQxmYN49CMWMH47NuhBO/BKAGzME/CDK4IeAGXJzBQIAIfkECQcALwAsAAAAACYAJgCFNDI0nEI8PF6sZDo0NEZkPG7MxEY8NE58PHLk1EZETDY0fDo8ND5MPGbEPHrstEY8dDo0NEp0zEY8NFKM1E5MPDI0NEpsPHLcNFKEPHbk3EpEhD48PGrEzEpMNDY8pEI8PGK0bDo0NEZsPG7UNE6E1EpEVDY0fD48ND5UPHr0vEY8dDo8zEZEPHbsPGrMMjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv7Al3BIFAIUi4CKVUpIVJ+TAlCsWomVk0rD7Xq5qkXlSn4BFpKv+is5UctExWNN/6oUcOGAVe93SwNwIQl+hVwQZAOEhoaBVQp8jIYJeEQAc5KMKmNDJ5mZG0MVaZ+MCZwLpaBmmKqGBhUKrpkmqbOMGx+3jA9bu4USpL99CSUlw34tKcvLDs0pLcrR09TV1tIpGczbytve3+DeLS7h5eblIwLc5+zfyiAk4N3Q9PPt2xMo9vf80CgA5JbtMzcwnAsq8cLNK1iv3AQhHkb0YwgOgYchB/qdW0jCUoON7s4dLMIAgcZzCFBYITCQokB5IshEcFnOXouOZQiYPMkMQTHMPAw+8nShMo8REhewvRS3DAGJN0aHeJgQsOYIEhejWgGAggQIFwiiIXABD0XWMkEAACH5BAkHAEAALAAAAAAmACYAhjQyNJxCPDxerGQ6NMRGPGRyzDxuzDRGZMxeZEx25JRmlDxy5NxKRDROfEw2NHw6PKxmhDx67DQ+TDxmxNRGRLRGPHQ6NHRuvDRKdNxaVKRmjDRSjDwyNMxGPDxy3DRKbJxmlDx25ORSRDRShIQ+PER67DxqxDQ2PKRCPDxitGw6NGxyxDxu1DRGbNReXFR23JRqnNxORDROhFQ2NHw+PLxidDx69DQ+VNRKRLxGPHQ6PHxutORaTMxGRDx27DxqzDIyMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf+gECCg4SCAA4PATk9OBQdOSg0DgCFlZaEHDQ5DJydnpw5DxyXpEAADx2fqp8dNJSlhA4Vq7SfOQ6wggM9tb2dOAOwKhS+xZwWpAPExsbBlQ68zMYUuIQAs54i0rU5o4M02du02gwkgxyp4swU3g/q2+bX79IEHA7z2zPu+MwkKPzMKmwCWKxDOoK9KMQQwbChNoYMIEp8SDFixYkKeIjQyJAjx40OQ4oMqVGDhx0IeKhcybKly5csM+wo8cNGiRUgXMDcudMFhAslbLAQYKNo0RcXYECokSEDT5UZXNSAAGLHi6BGU8gwasMHV5slXrwosGLFhQtlC4hNUALr16KJG254fUuXrtu6RW8AqIm3r1+jPyhtNTr3r2G4gk6wOFz48IITgxp07dv4sI0R1iZYLlqZbuBCEhZs/rvghqUDnQt7rdy5awtSGFqP9tEA1gHRo7n6eJ1LgubcNn5IyDUIQAMPqwnrJrxAxivig05s4Ktc948NkKFbAnBDRoofPsL7+JEi7nNSgQAAIfkECQcAQwAsAAAAACYAJgCGNDI0nEI8PF6sxEY8ZDo0bHLEPG7MNEZkzF5cVHbcnGKEPHLk3EpENE58TDY0TGa8fDo8THbktGJ8PHrsND5MPGbE1EZE3FpUtEY8dDo0NEp0rGaENFKMPDI0zEY8jGqkPHLcNEpspGKEPHbk5FJENFKEhD48RHrsPGrE5FpMNDY8pEI8PGK0bDo0dG68PG7UNEZs1F5cZHLM3E5ENE6EVDY0VGq8fD48vGJ0PHr0ND5U1EpE3F5UvEY8dDo8zEZEpGaMPHbsPGrMMjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/6AQ4KDhIIADhABPT87Fh49KzcOAIWVloQdNz0MnJ2enD0QHZekQwAQHp+qnx43lKWEDhirtJ89DrCCBD+1vZ07BLAtFr7FnBmkBMTGxsGVDrzMxha4hACzniTStT2jgzfZ27TaDCaDHanizBbeEOrb5tfv0gMdDvPbNe74zCYr/MwwbAJYzEM6gr0szCDBsKE2hgwgSnxIMWLFiQhSkNDIkCPHjQ5Digyp8YKCFChTqlzJsqVLEQ9iuJxJ06UNAQUu1NxJ0wULGjlkxNjIs2gKHgVycKAQZEKEDUZ5SkiQI4cOAEKqBt2gMypLCUmrCqEEVGuQBB8keE2B4wNVrY9KBal4AVfriQIfNuCIcUGnTh4xcEj44OJE3aoLVAxqkCPI4aoTHJ+IMPnEiSCGH2stYa2C5s+OP4t9NYjCAtGoH4/QYelAaM2OX4sOAoOUBtmpNU/QAOvA6dyaR9TORcEz8LpCWOcy1ABEbLNwXwdZQIP0crklskavG0QIB8XXLQHQQYOFkCDou7PgcDVXIAAh+QQJBwBIACwAAAAAJgAmAIY0MjScQjw8YrTERjxkOjRkWoQ0RmQ8ctzEWmScWmw0TnzcSkRkVoRcctS0YnxMNjR8OjxkcsQ8euw8asTcWlScZpQ8Tnx8brQ0PkzURkS0Rjx0OjQ0SnQ8duzUXlw0Uow8btSsZoQ8MjTMRjw0Smw8duTMXmQ0UoTkUkSEPjxsbsREeuw8bsykZoyEaqw0NjykQjw8ZsRsOjQ0Rmw8cuTEXmykWmw0ToTcTkS8YnRUNjR8Pjw8evQ8aszkWkycapQ8UoQ0PlTUSkS8Rjx0OjzMRkRscsSEbqwyMjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/oBIgoOEggAPEAFDRUIZI0MwOw8AhZWWhCI7QwucnZ6cQxAil6RIABAjn6qfIzuUpYQPGqu0n0MPsIIERbW9nUIEsDIZvsWcG6QExMbGwZUPvMzGGbiEALOeKNK1Q6ODO9nbtNoLKYMiqeLMGd4Q6tvm1+/SAyIP89s67vjMKTD8zDRsAlhsRDqCvTLgQMGwoTaGCyBKfEgxYsWJFHyg0MiQI8eNDkOKDKnRBwIfKFOqXMmypUsTCVzKnCnTBoOMNHPSLGAhh86fLU0AwRABqNGUKoIA6FHhKNAWICjdkODAac4cKz4IenFgRYiNVltiPfBikIIOEn7gdAk2Z4sVlDxuWIvBg4eRGi3b0vRgpG6PV4Mw0Kgr4YgJpx5cwOVBI4glAx3qdlihooUHmWAphFCxmEeHGaQ4RK7LQ8KKBhcqhMiRo0aOED+ONOgsWQEsA4NJl94tQbdv0jRI5EKCga7n45JJ9/7dA8NwQzcO/PY92jONG4CfI3lxowd16j0+lNVeCUCQGwJ6dFjfoYeAD0pzBQIAIfkECQcAFwAsAAAAACYAJgCENDI0nEI8xEY8ZDo01EY8fDo8tEI8TDY0dDo03EpEzEY81EpEhD48vEY8PDI0pEI8bDo01EZEfD48tEY8VDY0dDo8zEZEMjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABfDgJY6kCBxF0FgLYTWPdABlbZOO1CR87/ONguNGvAAKip/yp5DQiqTDZEn9NQ5Q0cBS7fYWAygk4i3zEMQB2WwO1w5ctpmAJQGmcnZjOJLk8wwjDkl/bAR8BYWARniKZgIOB455FImTbAwPl2wGO5tlCoSfXQSjZgumXqKOpWWeqUsKmoWtPLVUBpawSgWSu0oUAK9ltz6txQkKQ7p/yEsFIoNztnKHIwi/PIEjwr8KTyMHzpMEFDYD40ul6wm3BGg3EMTE0EXol+9ZFwcGjgrm+i44KJBOnZCAOJC4M5asF0IbACgwMCDgmIJcFPgUCQEAIfkECQcAVQAsAAAAACYAJgCGNDI0nIY8nEI8lGo81LJEXFY0ZDo07MZExEY81G5MREI0zHZE7IZM/NJM1F5MTDY09LJMfG48/MZMzKpEXFI0PDo0tGJEdDo01EZE5GZMtEY89M5E7HZM9KZM5G5MPDI0lH483L5EdGY85FpM/L5MjHY8fDo87H5MZF409MpMzEY8VE409JJMhHY8/M5M3EpEvEI89K5M7G5MrIJE5GJMNDY0nIo8pEI83LpEZFo0bDo07MpMTEY07IpM/NZMVDY0/LpMhHI8/MpM3K5ERD40dDo81EpE5GpM9M5M7HpM9KpMPDY0lII85MJE5F5M/MJMfD487IJMzEZEvEY87HJMMjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/6AVYKDhIIAD1ACU1IvCQkLM0ErNYWVloQfUDAvnJ0jnyNUMQQtFZenVQAmKp2tL6CgUS5NJZSohA8arq6woDISPgQrt4IGjLutvaBHwCkitzrIu8qgHC4+DRGnBkbSvNSfLD7Yz5UPx96e4J8k4ykUhQC66cnrI0njPjimgyb03/aA5GMy6AOCf/Xs9cDmI4UCQVAQJlxH49q4AKnmSXxl7xOEcQ2a1HiwUV1HFg1A5vBXkmNHDvl8BBDQ0qU9GinHTZhSc4RNcELyHWDVsqNPJ0/yNcDQ0+iIdvm6FXUKdRzRqaB+sgPpgyfWjkHHHaD5dZ2TnD4msCzp1ENMG4cky4JjEDMHgINylXUAeWBJlbUSnSa9KOgD041GYWLbwKMf2457CQ8CsAnxugwW9xV6cPgf5HEb4FWKhhDcKyops526UBqWSxpJG5S4ZaCzN3AxfGzQRuxHZWnglOgTTazKBxO2J36iAeEACL/FMa1CBivKEBBEol/68MMEDBVMQVkYQOEBsUAAIfkECQcAUAAsAAAAACYAJgCGNDI0nIY8nEI81LJEXFY0lH48ZDo07MZEzIZExEY8REI03J5E3GZM/NJM5FpMTDY0/LZMfG48XFI0/MZM5HpMPDo0dDo01EZE9JpMtEY89M5E7IZMPDI0tJpE3L5EdGY8/L5M7IJMfDo89KpM9JJMZF409MpMzEY8VE405GZM5GJMjHY87HpM3EpE9KJMvEI8NDY0nIo8pEI83LpEZFo0lII8bDo07MpMTEY0zKpE/NZM5F5MVDY0/LpMhHY8/M5MRD40dDo81EpE9J5M9M5M7I5MPDY0vKJE5MJE/MJMfD489JZMzEZE5GpM7H5MvEY8MjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/6AUIKDhIIAD0oCT0wtOwwIHT4oMIWVloQcSi8tnJ07Dg4hPw0DKxWXqFAAIiedro2gDk4NOjoHPpSphA8Zr6+xoCS1tQMouoIGjL6un8AgOrQ6Jh+6Nsu+zbEsw7UNEagGQte/wKA93NDUlQ/K453loEXo0hKFAL3urvAOKtHcM6cGichHDh6EeTpqDOKQgCCzfcL80TKhQJASh/r2bUMYQBU+jC328fM3rAESGA9AvhOZpBu0bjQGqgwp8iBHATNp7huBUEeOJzlFOhjS80CrmUIx0IrG9EJQkUt66hCHVKSwnkdVCo06jxbQqvuIIjyAEyw8nghzyNRas2eMlItmy03oSQNAQ7bw+nU9YATKWowiN87rCIWDU5BQ0dHSgEMg3nI2X9YibGgT4LwkawEs9OAwQYjzNNSrZM3hvmfcvKGyYLpciJdLV+gy4PkavJbDNHw7xsOybWAYXM4YfaywiNoZQYWIpqFA3+KYWPmKtaFBgxkFgEC/xIGHiBcnnKpgsWBBDQLPUwUCACH5BAkHAFIALAAAAAAmACYAhjQyNJyGPJxCPNSyRFxWNOzGRJR+PGQ6NOyGTMRGPPSyTERCNPzSTMyqRORaTEw2NPzGTHxuPORmTFxSNNRGRDw6NNy+RHQ6NPTCTPSeTLRGPPTOROx6TPSqTDwyNLSaRHRmPPSWTNxORHw6PNy6RGReNPTKTMxGPPy2TFRONPzOTIx2POxuTNxKROS+RPy+TPSmTLxCPDQ2NJyKPKRCPNS2RGRaNOzKTJSCPGw6NOSOTPS2TExGNPzWTOReTFQ2NPzKTIR2PNRKREQ+NHQ6PPSiTPTOTOx+TPSuTDw2NMSiRPSaTHw+PMxGROxyTOTCRPzCTLxGPDIyMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf+gFKCg4SCAA9MAlFNLTpPNR9BKTKFlZaEHkwxLZycIg4ZPaIMAysVl6hSACMnna6fEiqiswVBlKmEDxquvJ8ORbPBAym4ggeMvLwODhzBwSYguDnJyb4+sqPZDBGoB0LUycsOKM7BDNGVD8jgruJL5c8ThQC77K/iCAzwsySngyP2wi1zkm0fjkEeEgRUtizWvlEmFghispChAx8QzMELoKpexRa+lkEpWI6BCxkPPrYTR26fPlE2AKrkJM4BklkvSwYQMJOmOBgle+Ts0SBKzxY1Qz2k1apnUpLwGFA4WvOds5w5vzl1tzRY05lVu44yunWZ0q4FeJZ1AFRsA5mVYMV1ENtjRsq1KIbuswFAYdxlLR8yKJBECtyP4jCK5SjFw1SV4hwKnayv8gYe//6y0FuOsaFNiJc1W+qicK7HC8WFuBpsg7xK0yrK5TyK26ULspdlpIxzBa4DqMEtY7Fvg21cP0ALdxACqygSr4s1HhF85cjWBkxLR8gqHIJRJg0M2X7Jw48RMU5MZfHChRIcE26lCgQAIfkECQcAOQAsAAAAACYAJgCFNDI0nIY8nEI8XFY01LJEZDo0jHY87MZEREI0xEY8TDY03L5EXFI0/NJMPDo0fG48dDo01EZEtJpEtEY89M5EPDI0dGY87MJEfDo8ZF403LpElH489MpMVE40zEY85L5E3EpEzKpEvEI8NDY0nIo8pEI8ZFo01LZEbDo07MpMTEY0VDY0/NZMRD40hHY8dDo81EpExKJE9M5MPDY0fD48lII8zEZE5MJEvEY8MjIyAAAAAAAAAAAAAAAAAAAAAAAABv7AnHBIFAIUNAHOBkpdThJXZ1SsWokVmgjE7TZYYFaDYHBczzkAxtNtg77h8MVFRRMVE7cbHg8TOnZCBUx6bRR9fRwWdiiFenyIYA0PZwUwjm6HkXENi1UKhJhem4kMRQB5ooZ9X5BgGmZDGKp7pIg1QxUJtKtivpFfHAhCNLxtroiQAWmpxiCarL9hDR8jCs5d0K22LCaz2M/c02ABAuDhrnyQDSE459DiYAds4PDxDRHvtuphl/Xxfehhs4eMlbt/AOWZQ5gwxLeBCcGQuMYQoAkAuyBGA3bBzENj9riREFIhnzNtnHy1oqBC1sCCkZYNAbAFJMAPM4ooMEkrpE00MBRMVWnEiwK/ZJSuQCi6jpUBOwV4OvIJh0JSOytqToXjSoPQQDkqYJDaq8+BDTnBYlmjBx61DS3UXqmwAoMID/koUPgQowaDtGiCAAAh+QQJBwBTACwAAAAAJgAmAIY0MjScijycQjzUtkRcVjSUfjz0zkRkOjTERjzsilTswkTUVkREQjTMqkTURkRMNjTkZkz82mx8bjxcUjTsxkQ8OjT8zmR0OjT0olzUUkS0RjzcvkTsglQ8MjR0Zjz81kzsmlT8ymR8Ojzssly0mkRkXjSchjz80kzMRjz0umTkYkxUTjTcSkTkckyMdjz0ykz0qlzcTkS8QjzkvkQ0NjSkQjzcukRkWjSUgjz0zkxsOjTsklTkWkRMRjTUskTUSkRUNjT83myEdjzsykxEPjT81mx0Ojz0plzshlQ8NjT0nlx8PjzEokTMRkT0vmTkdkzcUkS8RjzkwkQyMjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/oBTgoOEggAPSwJRGSM5UgMkQis0hZWWhB1LMiycLEdBH6GhJz4uFZeoUwAiKJ2cKhGgorMKQpSphA8arp0gQUEns8I+K7iCB028nSG/osHCHy8euDrKnbDN0MInEqgHP9acHL+y2rMn05UPyeEsSuTm0C8ThQC77Swp8M+jH/yiNk4NEoGPRYwT8OJBwzGoA4KCPCyQexbs37loDAQtKchCBbly8f6ZUHUPX4uP5ipum0HjAUcW4xKqtAjtBkGOSD7STBnKhICXCVBq4/fvRIMoL98lVAiNQiuOSmIFieCv6s5tDpJKBTnUmShwULcyNfe0YNSlY50h5bhDaFpRpBR+cgw68a2oBjcL5kT7NoBLjjGz2f1wA8DDgi2kUt0WUsGpvO08or06K4CgDlnxRazbdaaBHgM5IhScduQgAJvw6ftFWdiMJIUeZA6Hga/XWQboVarWLjBjaNxQXYgs1aJxF7gOzObFjOttA92MAUnN66zVqgB1G5vSQcTyjrHMGSgAezsmVq5gcD0xowAR85c6ABEhAwGUFB8MzGCCY8KtVIEAACH5BAkHAFYALAAAAAAmACYAhjQyNJyKPJxCPNS2RJR+PFxWNPTORGQ6NMxGPOyKVOzCRERCNMRmTPzabMReRPTOZMyqREw2NOyGVHxuPFxSNNxORPzCZORmTDw6NHQ6NOSmXORyTLRGPNy+RPzWTNxKRDwyNHRmPNRGROzKTPzWbHw6PPSqXLSaRJyGPGReNPzSTOySVFRONORaRPzSZIx2PPzKZORuTOx2TLxCPOS+RDQ2NKRCPNy6RJSCPGRaNPTOTGw6NMxGROyOVOzGRExGNPzebNSyRFQ2NIR2PNxSRPzGZORqTEQ+NHQ6POyuXOR2TPzWVDw2NNRKRPTKTHw+PPSuXMSiROReRPzSbLxGPOTCRDIyMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf+gFaCg4SCABFPAg4aDzoKAydDLDWFlZaEIE8zHx8SJEANSx6jHipBLxiXqlYAJQicnQ1As6S1HgpDlKuEERywHzGys0C2tkEsu4IHPL8VFsO0xbVOIbs7v5wS0NHSpCoTqgdN2BVF28TdtSrVlRHM2DJL5+m2ThSFAL7YHybn6PSkbqQaVGLfhwou/BVTkQ7HIBCv9hmBJo8bQIZOFgjKUMFgD3//FkpDwYqKQX4g1Y1iKE0FjRoRTn54pjAdw5ukchQ0WEFFypbdVKAQcLKFsHkqAUIwaVAKyJAASfmIuO/C04ulspYScXLiOXlRpY0z6LVm2FpUsVkFUrEiVK24QT0w3ef059lRPogabOF2m82kHiDs3Ffh06yjb6MGiHnSnNm7OQBsMmii7zCgLRWkGoxthd2zAQSB4Crx88rTLBka+DHoyUnLFqOSHCTZIBRQbC+fpcGkUATSv2Q8tsVylIF7la6Rg4H0IrhLGfYlsEwcbqkXuw4AP8gcGkADz3cJmcwpmHdv6G8gT2YFBOePuosZINCbPSZXnHpUJE6DwBH7lwAgRAk2MJCECx4YQEMUOFCgyyqBAAAh+QQJBwBaACwAAAAAJgAmAIY0MjScijycQjzUtkRcVjT0zkSsakRkOjT0tlzESjzUnlRMRjTswkTkVkTMqkRMNjT82mz8wmTkfkx8OjxEPjR8bjz80mTURkT0olzswmQ8OjTcvkT81kyUfjw8MjS0Rjx0Zjx0OjTsjlTsykzkXkR8QjzcTkT0rly0mkRkXjT80kz0umTMRjxUTjTUskT8ymTshlSMdjzcSkTkvkSchjy8Qjz0nlw0NjTcukRkWjT0zkysdkxsOjT0tmTsxkTkWkTUplxUNjT83mz8xmTsglR8PjxEQjSEdjz81mzUSkT0plz0ymT81lSUgjw8NjR0OjzsklT0ykzkYkyERjz0slzEokTMRkRcUjTkwkS8RjwyMjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/oBagoOEggAPJQYKGRY6DAMoRy03hZWWhB5FWRIRQp5CTByiHCouMRqXqVoAEywNJxCfnqO0HAxHlKqEDx8yJJ2ynqG1oy4tuoIHVjINwMFCxLVRILo8MjImVJ+xnrHRtSoVqQdJ1yLPst/g1JUPy8xI6J/q0leFAL3XSt3y9LU4qAZNuCbjBxJu/cCpazLIQwKC5z4xQedvlAoOUYwIKkJQhjN50L5dJEZjVT5fCEHSGjmSmIoZNx50JAIynbqLOEflGEjQRs150VqCoyGgI4Kfs1ZWdJCl4xCkISvS8sGi40Sk/nKyvNAxHih5E6USK3etgQWoYmtVJXg22NWrvlEt0rvYlOALWXCDpR3loyjBo1hFKhXlgOc1n+hS7hUVQCZBmoH35gBQgyAJuHltKgzKAJVhGU9/Lg4gyAPXa1AiyyXFmnWBBYM4Xrv8LO/ekoMoE9wnjKLYGU4KPThNwmvCoLQK2Kt0gGBqlRXDpQpxzQRg33KFqoih6wDXH6Gf+SsgDtmDyiTuil/NGsdyZKuKsPihTW+0Ah2Cw8dUJAER9UlZNEMHFOx3CQBBlLADEEOEUsAMVTRxRS6qBAIAIfkECQcAMgAsAAAAACYAJgCFNDI0nIY81LJEZF407MZEVEo0tJ5EhHY8RD40/NJM3L5EdGo8zKpE9M5EdGY8XFY0xKJEPDo0rJJEbF489MpMlH48TEY07MJEPDY03LpE7MpEXFI0vJ5ETEI05L5ENDY0nIo81LZEZF48VE40jHY8REI0/NZMfG48zK5E9M5MZFo0xKZEtJpEbGI8lII87MpMvKJE5MJEMjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv5AmXBIFAI6JwkqRmlcQqzD6FOsWokfx6ph6nYTXlNCQIpczzJAKwQOu92XAxVNRLDe4TZeMKILRxl4gngUDnQbBF56eYt4CSdnBTGDlI6GVQiBlV+bJhQbRQB3nWJuYI0mGWZDA22oipykLkMAKG+LuJyvpRQlQhOksJSLAUKjgqivp6YeHwgasK7Cy8EmKi3Vw7ddAS6lwbmmeQwc2d/BBAJ529TSnQkZydqDenqa1buUtubZCeX92QgEMKdsEANs/KqBQMAFXzYVMv6dmxaLVIILZhzkcyRuEAgj6ja5m7jsVAMLQybIk0eqGC0D4Eh5wFAkU0JhXRqAqoJo4km0jV8gXVHRINw6XecSkDjkoWJHQQ2E0ikBAVlSWBl2+kmzoOnIVw0q0NxKBMMJAQ1xivFQAQHZKwAKkDCQoWiCBh4guNgwB00QACH5BAkHAFEALAAAAAAmACYAhjQyNCSOVLSaRCxeRKTKZHySVOS+RCxKPNTSbGxiPCSmXPTSTCxCPIRyPCSeXLy2XExKNCSCVOzKTES2ZCxqROzabNSyRDQ6NCSWXFy6ZCxWPCSuZIx6POTSZHRqPDw+NPTKTNy6RDw2NCSSVCxmRMzSbOzGRCSqZPzSTIx2PCSiXFxSNDxqRPzebNy2RIzCZCxaRPTORDQ2NLyiRCxiRLTObHyaVOTCRCxSPNTWbHRmPCSmZCxGPIR2PCyaXLy6ZFRONEy2ZPTabNS2RDw6NCyWXGy+ZCxWRDSyZJR+POTWbHxuPEQ+NCSSXPzWTDxuTPTOTDIyMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf+gFGCg4SCMkA9AkMmUDEmQwIpQDKFlZaERCkWKE6dnp8oQxwfl6VRMg03n52cq54mHJSmhBAWrre3FkCzggkmuMCrIDqzHjGswa6trEulCcfBy8koxJUQv8nZnyC7hDK20Z7SwUMihCmt4+PKwRyDRKqr6sj0uJwmTII92trrTkmnwPGzByyECCDLOM3zt9CJQicrOAycBiyJAIf80okj6HCGi4kgPRnAVq9kRlcxHoLaiJHlwBYwY8qcSbOmTZgdburcSbPDA55Adz4oELRozQIshBjl6WSmEBY8Xixd+uIAgCI5azadKrNDEUo0JlTgunPBBAqCLjjIMNbmVre0MN+2WJBBxYVBNE4EySpTbtEOQTaQIAQgwAYkNWL6jcvYZg0kG5rIGsRAxQkFGRCQRZBBwQYVPCzhOLHBc4YaSnc2FVKj84bSGkrB8Fz6sBECJYSkhqm7BAEjSE6QvkxjlgYVr4cLP4FkQpAgE4IvJ/1aBQxeURgYHr6BtILLwj1TF75hRGjsp2g4qP26vfvu1UkAQO+NAgbxyWlfLk+BAX1LABxAQgQjfPcZBhFQcMBkpQQCACH5BAkHAE8ALAAAAAAmACYAhjQyNCSOVLSaRCxeRNSyRGymXMzKZCxKPGxiPCSmXOzKTOzabCxCPIRyPCSCVExKNEy2ZJTGZOS+RCSeXDyyZPzSTDQ6NCxmRGy+ZCxWPCSuZPTSTPzWTIx6PLzObCSWXNy6RHRqPPTKTDw+NDw2NCSSVNy2RCSqZPTabIx2PCyCVFxSNKzObOzGRCxqRITCZCxaRPTORDQ2NLyiRCxiRNS2RGyqXCxSPHRmPCSmZCxGPIR2PFRONFS6ZJzKZOTCRCSiXDw6NCxWRCyuZPzebJR+PMTSbHxuPEQ+NCSSXPTebCyGVCxqTIzGZPTOTDIyMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf+gE+Cg4SCMjw7AjUtTjEtNQIpPDKFlZaEQSkEFRydnp8VNR0jl6VPMg0/n52cq54tHZSmhA8Erre3BDyzgggtuMCrIjizITGswa6trEelCMfBy8kVxJUPv8nZnyK7hDK20Z7SwTUkhCmt4+PKwR2DQaqr6sj0uJwtSII72trrHEWnwPGzBwwECR7LOM3zt5CDQg4rOgycBqyIAIf80okj6HCGiYkgPUnAVq9kRlcxHoLaiJHlQBREYsqcSbPmTA43aXIwIBNnTps6gcbEaaCA0J5Hk8a0ocKDz581n9qUGtODAxoaPCgFSrWmhyEudJzQEAHm1rMcmmg4cQBACQ3KGiA45Xq2KoSxHyhdWAsXgo8FdWku8HGXrwtDE/iOjdvEyAKzUDksMNLk7uKxQCwMwrpY8VgKPTC8aBIhQpMXGHpQUAy3tYYLhAAE4OtaQ4K1Y090zg137O3bJ0rIGsQASG++t1snp127dgIdlm4Ad+46ue7rtqtnKAXDN3K4y5lnB297wKwbxpurH+8aCAxeTxjMTk4/e/i1t0tAh3+KRuL1yrUGxAXD8RcfDSWcsNyCcJXgAgMGWgLAARc4UEICCibwgQMutMVLIAAh+QQJBwBOACwAAAAAJgAmAIY0MjQkjlS0mkQsXkScxmTkvkRsvmQsSjwkplxsYjzU1mwsQjxMqlyEcjxMSjQkmlwkglTsykz00kzUskS8zmw8smQ0OjQsZkQsVjwkrmSMejzs2mwkllx0ajw8PjT0ykzcukQ8NjQkklSsymzsxkSMwmQkqmRUumSMdjxcUjQkolz80kzctkTM0mwsakQsWkT0zkQ0NjS8okQsYkScymTkwkR0vmQsUjwkpmR0Zjzc1mwsRjxMrmSEdjxUTjQknlwkhlTUtkTE0mw8OjQsVkQsrmSUfjz83mx8bjxEPjQkklz81kwsakz0zkwyMjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/oBOgoOEgjE+PQJBJE0wJEECKD4xhZWWhEMoEytLnZ6fK0EaHpelTjENNZ+dnKueJBqUpoQOE663txM+s4IJJLjAqx85sx0wrMGuraxIpQnHwcvJK8SVDr/J2Z8fu4QxttGe0sFBIYQorePjysEag0Oqq+rI9LicJEmCPdra60tGp8DxswcMRAgfyzjN87dwicIlKTQMnAbMiACH/NKJI+hQBouJID0VwFavZEZXMB6C2oiR5UAdR2LKnEmzps2bOhgouMmzp82cIorYaOGzqM0WNhA8gJDBRAahBBRsMGpzQwsCNiogyJAByAyuYLcWqXDCRgkCIyhQaCGErdoRtARK2DjBoMjWrVwRuNjhFG/eDHcBCw6MNzDYwxkOABARFrHjx5AHc6B0oenhwn8Fazas+bALQz8yP/br9zLirSoWDPrqtLHo06MPXyAEIIBr2KUzl94qQtagBSpau86d2zTgHZZumCAOW7doBBhKvejbuTppxwhmzMKgonnkzCqi81pgmzlmzBlEIOdlaEbo6pFVXPDNXtCCGYwtW0/vQnV9SwDscAEEItyFgAhAuHAAfZcEAgAh+QQJBwA8ACwAAAAAJgAmAIU0MjQkhlQsXkS0mkQsSjzcukRsYjwknlzsykwsQjyEcjxMSjT00kwkklQkglQkqmQ0OjQsZkTUskQsVjyMejzkwkR0ajwkplz0ykw8PjQkmlw8NjSMdjxcUjT80kwkllwsakTctkQsWkT0zkQ0NjQkjlQsYkS8okQsUjzkvkR0ZjwkolwsRjyEdjxUTjQkklwkrmQ8OjTUtkQsVkSUfjzsxkR8bjwkpmREPjT81kwsakz0zkwyMjIAAAAAAAAAAAAG/kCecEgUklytgay2G9VkA46LVKxaiTGOxJPrer8eGSVzLfNIisq3y117axSqmbiQuO93iWsuNNTwgGsYKnMWI2yBbm1sNmUGh4GLiR6EVQt/iZlfGHtEJHaRXpKBMhtEHG2jo4qBFEMxamuqiLR4XDU4Qi2amqs5NGegvLaABRsui1yzvss5yjkdFMOTgDQDzryposTOJyHT4F4pmLXl2W4jz2Db2OzDDzDxF/H08/Ty9zD29vj7MCvw7vHTR7BePn4D630omK9hw4QP42lwYBDfQYYVL9ILYMKhRYjzBoa8CIJFwIIQPapESQBAAxgnERoc2e/jPQ1UIsDEuLKneUEQRg449EcUJc94KxIM6Qgvpc+K9kwQAVDiJEN/Gj02kDMkwQqLR7FCRcrCCoqUNCM+nFBGxAOxAo0S3CdgzoSvcZ8iZcsnQQmeNLHOa1CWjxETQp02XAECgOEiCUx8CDyzAQilj62QYBEhQIMLby80CACCANcyQQAAIfkECQcAVAAsAAAAACYAJgCGNDI0JIZUtJpELF5EXKZM1LJEJJ5cLEo8bGI87MZERKJUHJJULEI8nLpMhHI87NJMJKpkTEo0NJpUhLJMJJpczL5MJIJU5L5EPJ5MJJJUNDo0LGZELFY89MpMjHo8bKpM3LpEJKZcdGo8PD40rL5M/NJMJJZUPDY03LZE5M5MVKZMjHY8XFI0jLJMzMZMLGpELFpEtL5MNDY0JI5UvKJELGJEZKpM1LZEJKJcLFI8dGY87MpMTKJUHJZULEY8hHY89NJMJK5kVE40zMJM5MJEPJ5UJJJcPDo0LFZE9M5MlH48dK5MJKZkfG48RD40/NZMJJZcjLZMLGpMtMJMMjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/6AVIKDhIIyQj8CNwlJSQk3AitCMoWVloRHKwUlT52enyU3HiOXpVQyDkSfnZyrngkelKaEEQWut7cFQrOCCAm4wKsdOrMiSazBrq2sTaUIx8HLySXElRG/ydmfHbuEMrbRntLBNyeEK63j48rBHoNHqqvqyPS4nAlOgj/a2utPSqfA8bMHDMQJIcs4zfO38InCJyw83CqRwkWMBi2WfLBhQ4UKjh+WtGgQw0UKILeUCHD4BMiUCSokmOixYAFNmjVz6rwpQcWEGCgd0kDxJAYBEzZr3ryZtGmPp0lx3iQA9EIFBUx1alW6VatUpQqGYOC69OnSqDa/MoWqEwOEIM9w44aAOzeu3SB178q1OxfH27l59wKmyxcv4cN4TehdzLix3h4W3hYObLiyYcqE6waogfguZsaD9b7wIdkyaMegDwBY4Dkz4sGh68oO0oPSBgilUesWLUiDgSB/9x6O7bowDgaDOOfevZhyDUKrS88Obfkz4NqFGOD4XLi56RA+LOUIXtm6ab4cSsHgPrv15RDPTXHAUd4x5hAweFFhwFq668B1LRCeflQAUEMPnelVVw8vyEJgby+wNtxhDCL3YCUA+LCBBT2EcF0AG6jGSyAAIfkECQcAUgAsAAAAACYAJgCGNDI0JIZUlKJELF5EXKZM1LJEJJ5cLEo8bGI8zMZMTJpMHJJU7MZELJpULEI8hHI8lLZMTEo0JJpUhLJMRJ5M9NJMJIJUJKpkJJJUNDo0LGZEbKpMLFY8jHo8tJpE5MJEJKZcdGo83MpM9M5MPD40tMJMJJZUPDY03LpE9MpMjHY8pLpMXFI0/NJMLGpEdK5MLFpENDY0JI5UlKZMLGJEZKpM1LZEJKJcLFI8dGY81MpMHJZU7MpMNJpULEY8hHY8nLpMVE40JJpcjLZMJK5kJJJcPDo0bK5MLFZElH48vKJEJKZkfG485M5MRD40JJZc/NZMLGpMMjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/6AUoKDhIIxQT8eNgwjIww2HipBMYWVloRGKgUtUJ2eny02HSSXpVIxDx+fnZyrngwdlKaEEQWut7cFQbOCCAy4wKspObMhI6zBrq2sTKUIx8HLyS3ElRG/ydmfKbuEMbbRntLBNieEKq3jLU06JStAEENAKyU6TeOfHYNGqqs6EAR6mFhAsKDBHT0IQEiwjBMDJ4J+fBIxocfBBTsI7si4EaPHHQ0miPiU5BS4JhsGfrzokeXHGk06oTgRhBOQBhpXctTZUSdBExA4sehQYUPOnTtXtuyItGONCkk8vDhKFWPGnFWTcqyhREBPn0y1fmx6VICCglcNqkW7dm3aHeMUTCC1upHjXKs832q8QKSvXyIg/gb+K5jwYMJEbvANfLhv48GNASOGDNgEYseFJxu+TGSHBb6ZL0eWrNlvABqYS0dmnPkxERc+QJOezbn25AMAFmz2S5l1asqSA++gpOGCbNvIObsQlMEAkcW/o7MGzjuxg0GojyfnHFkDodzagY8OzXh4IQc3qKtOPdmHJRzQq9OWPxsECA6lYBzeH50+YxqzcHDDbqIhtsMAvEjhwAIXjKYeaQsckKAgANAw4IPs7eCCLBMaosEOx4mn4XUdVgKADxpYsINi9u0QgAYHcFhKIAAh+QQJBwBbACwAAAAAJgAmAIY0MjQkhlS0mkQsXkRchkQknlysvkxsYjzkwkQsSjw8ikwcklR8cjz0ykwslkw8nlQsQjxMSjQkmlRcgkRcpkwkqmTExkyMdjwkglTcykwkklSEskw0OjTMrkQsZkQ0nlQsVjz00kwkplx0ajx8ejw8PjRsrkzUykzsykwkllTMtkQ8NjS8wkw0mlSEcjwsmlREnlRcUjTMxkyUfjwsakQsWkT80kw0NjQkjlQsYkQkoly0wkx0ZjzsxkQsUjw8jkwcllT0zkwsllQsRjxUTjQkmlxkqkwkrmSMejzkzkwkklyMskw8OjTUskQsVkQkpmR8bjxEPjR0rkzszkwkllzUtkSEdjxEolTMykwsakz81kwyMjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/oBbgoOEgjdEVgJVPUFBPVUCF0Q3hZWWhEwXTTZanZ6fNlVIJZelWzcuCJ+dnKuePUiUpoQRTa63t01Es4IHPbhJJycyJ0mtqw08syNBrFpTBlIwKUALC9VAKTBSBkmgUKUHzVo2LBTU1tjX6elAFDutNsqVEb9aLFfr19Xs/ED81h7s6NRgF6EbtqYYWfevn76G+/RR8FZlBaELNmS0YOjQn8d+1RzI0IJkEBMEFl6oi7jyozps/1Kw6BFFkJUMDhi25Njwpb59QE7MONUhH0BrP9klBQix2gMVK4gsAckz4kN/DxluIMJAZVWfX322BEJiAtKdWI865OmPgAKI8WF1ihWr70dOpUjz6t3LN++/nnJ7zh0stkKFI4gTi0h8ZDHjxogdK4Y8WUdkypMzP8bMWLKIFIc3S+Y8uvNmxEAwaD59eXLpy44D5DgSWvNr1o5f0xhS+3Zryr4fi0gAYMHpxchtZ859GQglD4Z/s54+nYYgDgVorwYOOXly0zogDJpdWzp104xzECpe4fZ30qIbOy8EwXLr0sFJD7Hko338+Mx1BkIpNfSG3mueNaaeKSDoUF5wrwExAC9bQLCAfwfCd8QCCVAoCAA5WJYfZUDQIIuHhngAhH8BOlaieChWAkACHmAAhAjIARGAB8TxEggAIfkECQcAHQAsAAAAACYAJgCENDI0JIJULFI8JJpcLGJEJKZcLEI8JI5ULFpELGpEJK5kJJZcNDo0LFY8JKJcJKpkLEo8JJJULG5MNDY0JIZUJJ5cLGZEJKZkLEY8LF5ELGpMLFZEJJJcMjIyAAAAAAAABf5gJ46kCGBWEDlX4SyBhQFlbZOMxT288ii+3y+SYNyOnQmhAmw6nz6HZYIsGSK+rDCr/TUjmKqo4dhqz9ygr7CpIi5ps6LQpHu3j8yxAW9651CBfg8NNgYOQH+AT3R1QI1NDmEkEwdcP5CAmZmOQBFUIxaCo5CNmUIJIwxMQpidj6OwWQ5GHRaKTqVQprJPqQAcaq5+uYy7agsTGHeBvMXFnHQQoomL1q+9xk0JAT1/m8a6vVsUC9jZnLHWA4jfza+8znUFPcfX58eQXuL2z+oKiPCliyZLVwEsuK7J++dkQABi9wTRSQerEQUCabQtdDRxl4Rl6GJtFAQBAJaKz3NGavRE5VZCdXYWUUzVYVVBa/HwOapgYATGlwxvNrFAAoClfDiFFvtkpUxEnZ0mTiohANxTlQUK3UDwgCJWmQSqkMlCkeMTB1qrGDh6s6MxMGJGKKkA1JiDBDTiUrIQwa3BAQl66rUxYRqFvl0PUkhQUkwIACH5BAkHAE0ALAAAAAAmACYAhjQyNCR6VBySVCxaRCyCvDRerCxGPCSKhDxy3CSiXCxiRDQ6NCSGVDxqzDR+3DRGZCSaXCxufCSSXDRmtCxqRDQ6TByObDRShCyGnCSqZDx67DROZBySZDR+1Dx27DQ2NCSCVByWVDxerDRCXCSKlDx25CSmXCxmXDQ6RByOVDxuzDx+5DRKdDxmvCxuTDQ+TCSOfDRWhBySXCxeRDSCxCxKPCSOhDxy5CxmRDQ+NDR+5DRGbCSWXCxqTByOdDRSjCyGpCSuZDx69DROfDSCzDQ2PCSCbDxivCSmZByOZDxu1DxmxDQ+VDIyMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf+gE2Cg4SCACMxEUZJMkgJPCA4Bh+FlZaERTFKQDICAiECGRlBoxkSFAuXqk1FFzcOPp4hoCGjQbe4CTiUq4RMDUIdnaCenqKkyLYCBr2COyXBn9K0Aia3ttekJgO9LB5COknS45/Wt9bmyQqqO99CB9SytOm49aQZ3JVM0EIEw5/xQtDDZc5WAmaEAAATIiRWwGICCQYZeC0EL0EXGPaTNU1eNXv10F2jMKjIDY0HOtIiFnGiy3P1RiVI1SQjQx0dOa6kaI8eSYUaCRQDOFQaPXMicYmyyIThNxI5V8pKxxMmqRo2GVqgxnVa1ZcxKRTQKKSTzrMfkx51OSrFQiH+DlQS3QlSor0MIU4K8RC3qF9PVK2GJOgu2MpZUufVtSuRXzRiZ+kKXqsUgcYOUYvOGshTpIm3cVkepvaVZ4ixN1OQgwwRKdjBuBgMcdpQNESALXsKduniRWGoXQN+rWuiBoAJQePdnirRtesgFpvMZtgX8SyVw0GSZKVEYyy/rJ8nlRgCYRMWezcexr74dZDthpBrfSjZPUwT0QlV0Cs0OHPdR9VgyQh6OXQbMc4RNwM70OiQwnW2UeQcDr2M0B1m07BEGUH59FIBcv5ENh5MIQjYjCEsKEGABezZFUIAAJxYCABDTECCav+ZE4IL5sk4YwUbnBCAaibglwIONVwDpEogACH5BAkHAEgALAAAAAAmACYAhjQyNCxyjBySVCxaRDR2rDRapCxGPCSCVDxy3CSiXCSKhCxiRDQ6NDR+1DxmvCSaXDRGZCyGnCSSXDQ6TDRShCSKfCSqZCxqRDx67BySZCyGrDxivDx27CSKlDxu1DROfDQ2NByWVDxerDRCXCSGZDx25CSmXCSOhDQ6RDR+5DxqzDRKdCyKnDQ+TDRWjCxuTDSCvBySXCxeRDRerCxKPCSGVDxy5CSKjCxmRDQ+NDR+3DxmxDRGbCyGpCSWXDRSjCSOfCSuZCxqTDx69CyGtDQ2PCSmZDQ+VDIyMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf+gEiCg4SCACMuGwQVMUYJPgc4BiCFlZaERS4eQxgdAiECFhZBoxYSFwyXqkhFFDZDsDefn6NBtrcJOJSrhEcqsBxDGgLExKKkyLUCBryCPCWwsDoxn6AhJra12aQmA7wrweFDsqDE17bY2LWlC6o8wdFD0+bW2Lf3t6LelUfQ8UM9qhU7h8/eOhPMCAH4NQQerAzmZhFMhy9fiF2CKPyD1cBaRAH28I2iSOrCoCKvNg6zVo5gEHsh8wVJkAqJxo1DKkRkGfMezHsmF+IckqHcQJA+K+azcPEIsH8pjoaodyskyZAWaNzc2EDizp5KkwW5MOMfPCLFBH6i+POlW3T+QWow3Ih2qleXYeHaCpHSYbBhadNa1UsYncN4HDpQ80g1bEyD/ujebfy4YD4EQ1cGnlrZss+5/9BWswsKbFXLIcpGg8ehbuC1p9/GtlXjw9N4XXc2VgrWxIsWh6NFZWzOdG9bNADsMPvw6KyfPdteRGIbZwXisD0rNclq0+0hnj6W1jsYboiESFY0/NeV9O68t14odLAxBUSP2WVDDzKdEIqU8YTHmGkVIWTJCABKs1N2V/kkgzuRNXRDS/kRlg4OvIzgnYIDwtdNM0hMsAEsKYD3EVt6nQeiISvMpQA9poXwAkYrsrLCDhykIEt+2MiIXo0KTbBCAQHUEIoJIdQHcAENNF4SCAAh+QQJBwBIACwAAAAAJgAmAIY0MjQkglQcklQsWkQ0drw0WqQsRjw8ctwkjnwkolwsYkQ0ftQ0OjQ8Zrw0RmQkipQkmlw8euw0Okwcjlwkklw0UoQshqwkqmQsakQ8Yrw8duw8euQ8btQ0Tnwshpw0gsw0NjQckmQ8Xqw0Qlw8duQkiowkplw0OkQ8asw0SnQ0PkwcjnQ0Vow0grwsbkwsipQkhlQcllQsXkQ0XqwsSjw8cuQkjoQsZkQ0ftw0PjQ8ZsQ0Rmw8evQkllw0UowsgrwkrmQsakw8fuQ0NjwkpmQ0PlQkjnQsipwyMjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/oBIgoOEggAjLBkHCytECT0BNwYghZWWhEMsHDycEUYCFxdAohcUGAyXqUhDFTWcrz8CMaJAtbYJN5SqhEUonBqvPAgCoKSjx0ACBruCOyTBrzjEs7W01aMmA7spwN083R/ExUAm5MikCqk7wNCvD9PWtvKjF9qVRc/tryvT5eW2/2hdMLGMEABf3/TxmBBDlrV/86rF0CWogsKE0mQJKGdN1D+OozAMGuLqIo8FDR0CjGhLVAJUSCya5PEjRkqItT6akyfyIDR2wSxMA2UOpzyQMQAU+XVRg4WUMYzmZBmKhsyZ7xpGnQdRpy0MM0yyK5Fy41SWXYFMQDiTn1aj+mmvjYpR0hvQVyWGxt25MufdduzcypKKszCQfG2nbT2LVt6BmZz4aYTLcqoJtibJyqJW2WutGGFfsQOGY584s0Ur74TRgenFd5ul8p3tQsVffbBVHt19lAYAHZBjifM3m/JEJK1F6xNuM15nWy4EDdlkcsFpr55txSiIJEVCfRqkvVXNWOQgAA1M4lgxnjHc44ROlAwGVPLixv5oWBpRt11ukMRFZI8lzigUi02yEWfCDbuMQB00GXHGWE4DqiJBaNBINhBf/8SgHzPSpfAgJwc695kLFIFoSAoYasAPLf7E4AJ3KhYCgAQpFKADAROYkEAME2BAQ4qXBAIAIfkECQcAMwAsAAAAACYAJgCFNDI0JIJULFpENFqkLEY8JJJcLGJENDo0PGa8PHLcJKJcNEZkNDpMPHrsNFKELGpEPG7UJKpkPGK8PHbsNE58NDY0PF6sNEJcJJpcNDpEPGrMPHbkJKZcNEp0ND5MNFaMLG5MJIZULF5ENF6sLEo8JJZcLGZEND40PGbEPHLkNEZsPHr0NFKMLGpMPG7cJK5kNDY8JKZkND5UMjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv7AmXBIFAIuH0lisoopSgEToVKsWomwD2TF7UYiL3Ck8DhczzOYI9Vtr8CvuFxhoqKJMg2X2WVOvmGBcAUEd0IqG26KcHBxYhwCdx1+K5SUTXAcL5qOYQZnKnyKbo1ypmERkVUyiaN7XmJynIwchUQAepWubY2cp44ldkIOu6Jdmr2BmrMPQzBsu4uyv3JgCmYzxNGKMYGmnL5xzbhuxqOx4b7LL8Eyr9u6sXHhvxEk2vC8mafg1Q8j0fiI+uNt3rROL0LkyueF2i9fJaBZesftkcGL38zBI+jw26YwrRhyAfQRI70ICUR26ebxoayFIuXxe4gBYB+KAvewjKDOI5+nEBQowmPZ8dcDDxq37bzYTxYJACgY+iFZyuQLDFSC3txKqmDTU83SuFAZQ0wyjwpszeigaxuTqvR8hTWCwO1KZTPlBCuSIWU+oi0/1rJyAZpSQSVNRRABKuQukj2XmbhzYWw0wAU3qbqTwabGP4D2sSNhaAiADpbNAeak4IGw0kIqdEBhjCBJDGVgXwHAoMOAES5SRFCAIcQDEq+vBAEAIfkECQcARwAsAAAAACYAJgCGNDI0LHKkLFpEJJJcNFqkLHKsLEY8JKJcLGa8JIJULGJENDo0JKpkPGrMJJZ0PHLcNEZkJIKUNDpMPHrsNFKEPF6sJKJ0PGa8LGpELHqkJJpcPHbsNE58JIqMNDY0JJJsLGK8NEJcJKZcLG6sNDpEJK5kPG7cJJp8PHbkNEp0ND5MNFaMLG5MLHakLF5EJJZcNF6sLEo8LGq0JIZULGZEND40JKpsPG7UJJKEPHLkNEZsJIKcPHr0NFKMPGK8JKZsPGbELGpMLH6cJI6ENDY8JKZkND5UMjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/6AR4KDhIIAISs+Dxs8Ix8vCTQGHoWVloREKzc8nJ0gIwwlJQwDGAuXqEdEFDmdrjwIIDijoiUHNJSphEYNnIydvyAgAbShoQMGuoI6KK/OwiBFtbS2AropjNk82sHCOAzG1AwuqDq/zsCwwhGh08YM1pVGzei+nsIjoqEi07bJhAB6bavnCpqMIu1q8Rv1IpcgCgTP3RNmgdZCfaMwDCLSiqCzWMIc9CuxMNSBU0cgenwGbQhJURenaQz4SiI6aCA6JFT4kkFDI/ZWDgQJIgLPmPpiqBRaEBq7nRgXYoDh8ZdEnC3Cvdw6aoZApp2ItqgFddqLjtyCumKEMwC4reIL+cm1ybTtyLsM6IHl1FYrTLglHuydOIwaUoVf92KlNnKhBqrpBqodiHNHzLjTZnCYjO5cZWOHX2JQQXclTnZ3ucYAAGTwBqI62+2bJkIDpc2RJ3cT5rLsVo2qTAzG6aCd3H4H/h1JIVkozoplF9IAiGClZ2EIpEU161AQCcF1hRGLTlI5oRAdq4JEPVshuUvMnPO2+FfE9FQhhHuE9oMxzPe6kAACZ9vE4pY4JbwQgzKDAJDCJjfJ4s4BGHTH4BEOIiDRBp+AA84LGJh3IUASpEAACCbkMIIDGiSAQQwWWhIIACH5BAkHAEcALAAAAAAmACYAhjQyNCSCVCxaRCSSXDRapDxy3CxGPCxqpCx2pCSiXCxiRDxmxDQ6NCSGjDRGZCSShDx67DxmvCSqZDQ6TDRShDxerCxupCxqRCR+dDx27CxmtCSClCSibDxu1CSOjDROfDQ2NCSaXCxivDx25DRCXCSmXDQ6RCSKjDRKdCSafDQ+TDRWjCxuTCxqtCSGVCxeRCSWXDRerDxy5CxKPCx6pCxmRDxqzDQ+NCSGlDRGbDx69CSuZDRSjDxivCxqTCR+fCxmvCx+nDxu3DQ2PCSmZCSedDQ+VDIyMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf+gEeCg4SCACQrPQUZOhoHGAE1BiCFlZaEQysdOpydIp80EhIDFwyXp0dDFDKdrY2fIqE7Owk1lKiERjacjJ29sJ8NEjvDAwa4gjkjrszAIhpFs8MlArgojNg62b/OG0TSxC+nOb3Mvq/ORcPExNWVRsvmvJ7OIhvr7AnHhAC72vKt6j3DJw3GLUEUAJajVy8FMVHSLgwawgogMyACN8yaVWJWAlNHElpsJhBBx44bJUjs52qhOYEDN3LcYdDIvJH/MApMAG6dhBkicQaEmWIdSmIXYljstRCmiAcQN3Z04U9oJ531TkiVGaLitpstnQo7irKES6FYu8lEKSqeVU7JYmfK3FHgLcN6wuaerPrWqdats0IoPffvJtO0wB6UleniA1icTmHM5chCxdmRTjkMMzprBoAFVrEh/qQBIkGDRxwTfnwXGAKCKCWmEmIXpsbN0vQNQlEYssCik2vwizCynMDS7E6iJmSiLs4MGTnvKDHDEomKmOupkylB3CVlvl1LODldOCoStC1qX+sOlwkRrLWlbcCO5j5kRwCg2PQS1mtiCVxwEH6GoABENtrA4o0EIZRC4CUATIACAUAIIYMGFkBywQwDXhIIACH5BAkHAEsALAAAAAAmACYAhjQyNCSGVCxaRDRapCSSXCxivCxGPCSiXCxiRDxy3DQ6NCxmnCSShDxqzCxidDRGZCSqZCx2pDRShCxqRDx67DQ6TDxivCSibCxurCSafDxerCSaXDx27CxmrDROfCSGlDQ2NCxeRCxilCSWXDRCXCSmXCxiVDx25DQ6RCSWfDxu3DRKdDRWjCxuTDQ+TDxmvCxqtCSOXDRerCxmvCxKPCxmRDxy5DQ+NDxu1CxmdDRGbCSuZCx+nDRSjCxqTDx69CSidCSedCxmtCSOhDQ2PCxeTCSWZCSmZCSWhDQ+VDxmxDIyMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf+gEuCg4SCACQsFgkcP0IdIg5FBiCFlZaERCw4P5ydBZ8FMB8xEwqXp0tEEjadrY2gnxhBBzWUqIRJDZyMnbywsCk7BAa3gjonrsm/oEIZOwcCtyuM1D/VvsufMBc7EAinOrzJvT8z2Z8R3RDRlUnI47ue558MO8/EhAC61vCt87EQuo2wJUhCP3Hy/jEICGHCICKs+iUz9y9CwGemlhiUqOzfpwPddjjU5wrhOI+fhjAcmCQeR34U//FgCIHGxpf+UHa4KFKGRF4IUX6iGWAfzk4x/124OCLiNZetGAkt4MxeCZM4pxqh+e4op6nBQibwmtCjs4AljHqdeuDiBp+r5PhB5Tf1yMUAHuaOEyd0gb1uE1xg5Sj0w5GQNAAoIcsh6bkPKynljTsXm8e29hymUkEWJQaGB/AtWSH3Jcohf2vke8GR778FdiEMLIRibNZ/qHeUEE2IRMSfjmFhUBcCXNd+8zq09XaLBGeJ84KVYHcLRQG91oIXMLJjBO9bAFZsOvlrQYYDPggWGxR+BkIOvz4QaJFxvSUAFVYMKKDChhAhIuSAAA3qXRIIADs=)!important}#toasty .toast.toasty-theme-material.toasty-type-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTY3QkFBREEzMjMwMTFFNUI4QjZEQkFEN0Q5RUExNzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REZBRTRCMkMzMjMxMTFFNUI4QjZEQkFEN0Q5RUExNzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBNjdCQUFEODMyMzAxMUU1QjhCNkRCQUQ3RDlFQTE3MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBNjdCQUFEOTMyMzAxMUU1QjhCNkRCQUQ3RDlFQTE3MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pu2cWHAAAADmSURBVHja7JlNCsIwEEYTcWsXrvUGBbvqFep59Bz2Il7AXsGd4A103UV7gHQwXQkRGqFJ6PvgC5QUOq+TX0YbY1TKWqnEBQAASwdY/+zNy720F/FRvJk5tl58E5/V8/5yvaSdy2he7qR9iLeBf3IrPgjEe+oQqiMIXo0x1D5zoIpoqFc+AFlEABnLKABB9oH/pL+eDRkAAAAAAAAAAAAWdBYyZAAA7gPcBwBgHyADACQM0EUUZ+cD0EQE0PgAnJQtLoRWO8YyEcBWRArxVdlyz9zqx28XrurM57xCpR4AAAAIqkGAAQAoXCj9X4moZwAAAABJRU5ErkJggg==)!important}#toasty .toast.toasty-theme-material.toasty-type-success{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjdGQ0YwNTEzMjJFMTFFNUI4QjZEQkFEN0Q5RUExNzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjdGQ0YwNTIzMjJFMTFFNUI4QjZEQkFEN0Q5RUExNzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyRDJBQjdENDMyMkIxMUU1QjhCNkRCQUQ3RDlFQTE3MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGN0ZDRjA1MDMyMkUxMUU1QjhCNkRCQUQ3RDlFQTE3MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp4tcFEAAAEgSURBVHja7NjPCcIwFAZwK9LexAE8dBS9WQURPLiBNwfwZLuBUyhebHEBXUVwCi/1C7yClCZN2sQUzIOPGsH4I38eopfnea9L1e91rBzIgRzIdA3aTjC+bVQ/4iNr5MwGr+XF6goxzBU5IQfbW8YwKbKgcYxMbIEKzPzrvQR52ADxMLGNLVPCaLllNZgMiWQxJleoEcYUqDHGBKgVRniG0IFDPPbIDt30LTFXQAe4MYa7QoS5I1v2JRj7v8CItmyFhPSaXdlMgNKG4YKwRUeatKiIUEFpJbVihIcaqLgClRYoemY6MbW3TIAaEmamEyN17TmopwmMdB+qQI1MYJQaYwVKO0a5U5dQCY3t/sgnxNQEhpXn/mxwIAf6N9BHgAEA0JpdHXf3fp4AAAAASUVORK5CYII=)!important}#toasty .toast.toasty-theme-material.toasty-type-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REZBRTRCMkYzMjMxMTFFNUI4QjZEQkFEN0Q5RUExNzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REZBRTRCMzAzMjMxMTFFNUI4QjZEQkFEN0Q5RUExNzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpERkFFNEIyRDMyMzExMUU1QjhCNkRCQUQ3RDlFQTE3MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpERkFFNEIyRTMyMzExMUU1QjhCNkRCQUQ3RDlFQTE3MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Po80HzoAAAIcSURBVHja7Fm7agJBFHWX2NhY2doFDAwBIa3kA5La9H7AdtrZWohNPmP62KQLtgEhBCKks7WysRHc3IEr8bGPOztzZ3dhDxzUndGZs2d29p7VC8OwVmZ4lYBKQN4CpEhqfcLXeWyPl2+j4W8YT04dOMP378A9xyA+o4AA2EEGXINwCWgBxyefx3isNAImwObJ5yYeK4WALnAQcXyAbYUW4AFfY37XxzavyAL6wF5Cew/7FFJAAzgl9Jti38IJGALbhH5t7FsoAWpSI43+I6JYZwJ0lwV1uTkRkPXCTLvgHRRzUqgT8Gmwvy+BD1DQHfJywPTmFHfTc+CAFKo8+LVQ42yAt+DC1rUDaQWad0Fq4efAASlUifyFNX+SgFMkDaSywj24sHLlwCxl8ibhh9kBKVRMfCMWdlQHjngGF+Z8AqSo49LpMAlY4VLacy2hgDj5rNCOn3QHpGjhttnUyAa6DihscVvd2HZgojF5E2jFT5oDUnSxZPBrbnDAEmNpLkAKtRQ+bBRemlgAH0FEaLqE+jlMnlzlJjsgharbf2yFjwxYA+/AhV1WB4YGk6fWQkbxM94BKdp49hsGArJso5fYoQtrXQesPj3getoR7YAUPdx5TB5C2XLg+F21Iy3SBZjHRC5Exk+fISZyITJ+njtgLyZy4Sp++poxMW9cxc9/B2gxsQg4i58+Y0zkwln8rP5mrQRUAioB+eJPgAEAEga0oSjgsNgAAAAASUVORK5CYII=)!important}#toasty .toast.toasty-theme-bootstrap{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important;font-size:12px;border-radius:4px;border:1px solid transparent}#toasty .toast.toasty-theme-bootstrap .close-button:after{content:'x';color:#fff;font-size:17px;font-weight:100}#toasty .toast.toasty-theme-bootstrap .toast-text{color:#fff}#toasty .toast.toasty-theme-bootstrap .toast-text .toast-title{font-size:13px}#toasty .toast.toasty-theme-bootstrap .toast-text a,#toasty .toast.toasty-theme-bootstrap .toast-text label{color:#fff}#toasty .toast.toasty-theme-bootstrap .toast-text a:hover,#toasty .toast.toasty-theme-bootstrap .toast-text label:hover{color:#f2f2f2}#toasty .toast.toasty-theme-bootstrap.toasty-type-default{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NEEzQTA1RTUzMjJBMTFFNUI4QjZEQkFEN0Q5RUExNzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NEEzQTA1RTYzMjJBMTFFNUI4QjZEQkFEN0Q5RUExNzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0QTNBMDVFMzMyMkExMUU1QjhCNkRCQUQ3RDlFQTE3MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0QTNBMDVFNDMyMkExMUU1QjhCNkRCQUQ3RDlFQTE3MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pr4ktvwAAADlSURBVHja7NrRDYIwEIDh1jAAozhKN/BWcgJ0A0dgBEbRCbCNkphaTAsPXpv/kkugELgv5eCh2HmeTQtxMI0EEG3RxQPW2mXT+Tz57JXUevd59XkLO1+9HQY+8x1DOKQ0h2TdCYhTjFjSxXWnekQqaAnJafa+AkjP6xcIECBAgAABAgQIECBAgAABAgQIECC7Y2oB8vB5qR0SEJKakW7Dxc7mtejyj8dpXL13Yn0knLy2LiFapiZnoWfUjtgDEW3NsgUiGru+FCJaX18lELWIEohqRC7kWMOXMa7b8ncQECA/4ynAAPBVcVo7OMcUAAAAAElFTkSuQmCC)!important;background-color:#fff}#toasty .toast.toasty-theme-bootstrap.toasty-type-default .close-button:after{color:#000!important}#toasty .toast.toasty-theme-bootstrap.toasty-type-default .toast-text{color:#4b4b4b}#toasty .toast.toasty-theme-bootstrap.toasty-type-default .toast-text a,#toasty .toast.toasty-theme-bootstrap.toasty-type-default .toast-text label{color:#4b4b4b}#toasty .toast.toasty-theme-bootstrap.toasty-type-default .toast-text a:hover,#toasty .toast.toasty-theme-bootstrap.toasty-type-default .toast-text label:hover{color:#585858}#toasty .toast.toasty-theme-bootstrap.toasty-type-info{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NEEzQTA1RTkzMjJBMTFFNUI4QjZEQkFEN0Q5RUExNzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NEEzQTA1RUEzMjJBMTFFNUI4QjZEQkFEN0Q5RUExNzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0QTNBMDVFNzMyMkExMUU1QjhCNkRCQUQ3RDlFQTE3MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0QTNBMDVFODMyMkExMUU1QjhCNkRCQUQ3RDlFQTE3MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvCIVOQAAALtSURBVHja3Jq9axRBGMZnj+ViAhbaaISLR1AUBBNjEq7zD7gUiqIIgraKVf4Ay9gljYVFiliJEklyJE26dJsPYy5pE/AQtNNC8SMXHJ/BN7C3O/exe+/c7twLP5jmZp7ndnZ25n3HkVKKboiM6JJwmfrpA6fACCiAIXAB5H1/1l/wEeyDMvDANvgGfrYrwGlzavWDcfAQ3IrZxwJ4BTbAl9hKlJEY5MADsCv5Ypf6zMXRFPUHLigCT5oLj8ZwTRk5C57LzoUaq5/byFWwLDsfS+Ayl5EC87sQNTZJQ0OdzVYttYS+oWU1yVDL9D1auiN/EM+BmRSYEKRhhjRFMpIFT0ExRR/vImnKRvkgqh+9Az0p24n8AbfBSitPZAA8YzJRBT+IKkN/PaRtoJkRB9ygbQdHzILTxCxTn+Ok0WlkRO2dJhmnwhE9iSq1uWKStGqNOOR2mHHAM7TijFCbK4ZJq6N72U+A1+Am44C/wHdqnwS9jH0vgvvgd9CIWqM/WXTYUuebHPgcnFqjlp0YM6Q59I4UDAymDkuPiQ0D/Rd0R90hQ0ZeUvsK47Ie0uw3Mmjo8WcNJjoGdVMrb2Agp06bK/I6I66wL9yuy2tlAtsJ2+JIZ6RioZGKzsiBhUYOdEbKFhop64x4FhrxdEa2VAbVIhOSNIeMfAUli4yUSHPIiDrYz1lkZI40h4xI2uTtWGBih7TKel92VZ+YNjCXud+9aRGopbiaQdfILceWewJcpPYlxqPBWvDPqZegUwLmRToTdHfAcqO9lj9W6fGlaTmWpGm12abRH4fghdCkJhOMFdJ0qD34tFBWeAuuJWziA7grYpYVBP3wifhfn0gqtknDfuOJ11rpTZW/SglUq0qcpbdjVGFyqoMmpkwUQ/3l6QmwbtDAOo3hmqyzBy8M7DEa2GvnwkC7VzhUvngMPBLxk9+LtAHcFJTHjZV3YrrmdHyp5rqovVRzXtReqqmI2ks170VKLtWkMh1kdfwTYADvtL/RevtcWAAAAABJRU5ErkJggg==)!important;background-color:#5bc0de;border-color:#46b8da}#toasty .toast.toasty-theme-bootstrap.toasty-type-wait{background-image:url(data:image/gif;base64,R0lGODlhIAAgAPcAAAAAADhwqCp+vi5yuDR4sjR2sDJ+sjp0sDZ4sjJ4tjR4tFyQwDB0sHKexnyozkKAuGaaxnCgzHyq0Hyo0H6q0ISs0E6KvjB4tjB2tIau0oau1Iaw0oaw1Iiw0jB4tIiw1Iqy1DJ2tjJ2tDJ2sjJ2sFaOwIqy1oyy1DJ0tjJ0sJK01FiOvlqOvlaQwpK21FiQwliQxFqQwFqQwlqSwpK21pS21pS42Ja62pi62Ji62pi82pq82G6gyqTC3nKgyHakzqTE3nimzqbC3Hqmzq7K4nqozoKs0pC01JC21p6+2q7I4LDK4LLM4jJ4uGKWxnqo0EKCvGyeyoKs0FCMwFSOwliOwJy82nSizKrG4I601py+3LLM5LbQ5sDW6DB8ujJ4tDB2uDB2tjp8uLzS5sLW6DJ2ukCAuD6Auj5+vkqGvEqIvqDA3EyIvk6IvlSMwFKOwlaOws7e7mSayLrQ5Mrc6tLg7rjQ5jB4uNzo8qbE3jR4tkKCulSKvDh8tkiGvD5+uE6IvFSOwJy82DR6tjZ4tDZ6tDZ6tjh6tMze7OLs9F6UxGKYyDp8tlKKvGKYxjx8tqzI4Nrm8ujw9oCq0FCKvj5+tubu9u70+F6Uwj6AuFqSxF6SwnKiykqGvkSCuMja6tjk8Pb4/GycyGiayGaayGKWwlySxEiEunCeyG6eyMja7F6UxkSEvEqGul6WxmCUxEKCuMTY6mqcyGqcxk6IumCWxmSWxFSMvlKMvlCKwNTi7k6KvGSYxDp+uESCujJ6tjR8tjR6tDh8uDx+uDh6tjZ+tgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEFAMYAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAIAAgAAAI/gCNCRxIsFiTBAgTJixGsKHDgcASYFBIMcGFBF4ePjRgsWICBYpkiKEYQONABQpn2ACR0E2XLkgoXmhi8tdFhCJ6bNliASGPlycSikAYotBDBTcTTtrpAGGGl1cQEqBxok+CEDQJDgiRwFCahJR2YlEgYs1LGQlGnIgTh0bCkgMRKtAA5AfKETq3yBhh5+UDET7YxmmaEOJFC0ASb2D05crODw9echmxQDAOlAmzJlTgIDEQG3s87SRS4qWVVrHYKjlU0VgZhQpkedbShgYRCgquZHlBhO2YBwlEFCilKAGYAwcViiixJnEOBVaFdoijysIIPi7i4Im0R6EwNSMT/nxJowNIFI8KeMWo0AWPe/eyFP7QoSOLg1El0pTwmPDIe/d0VIWQBwmAQN+BOuTwB38+uaeLFYoQkFAIBCrCwQ0I6hAefwhUMAsCQylEIU4EPOAGBEGcx+BHSTBRgw98FDDCUCEklVAfuLyix4p7SOLjj3RUIAJXm6URxQcmmDDFiqf86CQdItzUxyJGJGmlIwwqgAoLPtCwRB0+5qHQFFYmOcEMfqjhkQg7hJLICjOK8EgV4RVzQS9JGuHEX3tMIIEmFA0igiWhhHJJAwwoBIYAxiDkRxqY9fKDBBJEwYopU+hBhRwv2CJJoaGoQIJCAnkxUUKGREBpEH8sEkEEqA/IIasYgIAC6hKEJODBL3EpRAqlErCiBw+v9tGCrGwkUAkZoGKCEEEcIdQCsD2J8WoUIkAhqysIESJEKHOghEZDTXDlBKUzIMTKq7UkMMgisp6RUAmFhKDAQ/UOskpxCE3xagv9yrrkhGCY1ISNCWjyqpoJnCHrKrCZJFAAEiVkyqtmJNQCDFDomsC4Eg90EBjuQsFKRSTzGrJDByB0QQgw14gQoyYFBAAh+QQBBQDIACwAAAAAIAAgAIcAAAA4cKgqfr4ucrgyfrI0drIyeLY6dLA2eLI0eLRaksQydK42drB2pMyCrtJAgrponMp4ps6IrtKErNBOisCMstQweLYyeLKGrtIweLQydrYydrQwdrQydrIydrBWkMAydLYydLCOstJYkMCOtNaQtthYkMKSttZakMBYksSWuthaksKYutiYvNqavNqcvtxqnMagwNpwnshwoMqqxNxwoMxyoMhyosxyos50osx0pMyAqs6qyOCAqtKsxt6CrNC2zuSCrNKIsNSOtNSWuNamxN6qxt6wyuC60OSKsNSKstQ2erZkmMh0pM5Ihrx6ps6GsNRQjMAwfLoyeLQwdrgwdrZWkMKStthsnMiiwt5uoMqAqtCsyOCmxOCwzOK40OYyeLi80uQ6fLgydro8frhAgLg+frpAgLo+fr5Khr7E2OhMiL5Oir5UjsBWjsDE2OrG2OrG2urI2uponMhunMjU4vBunsi0zOIweLh+qs56qNDA1OjS4O7c5vJ8qNDC1ujg6vQ0eLZEgrpYjLxYjr6gwNw4erZMhrxSjsA2frZCgLg2erRclMRomsg+frY6fLRmmshkmsg4fLY6fLaGrtRSirxSjMCuyuLS4u7o7vZQirxcksR+qtBCgLa80ubM3uzg6vLu9PhcksJwnsZilsRglMBeksDe6PK+1Ob4+vz8/P5GhLxglMJIhLpCgrpelMRkmMZilsZIhrpmmMZMhrpCgrhmmsbM3OxOiLxomsZUjL5Qir5SjL4yerY0fLY2eLRGgrpMiLxUjMBCgrxglsY0erZEgrg0erQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/gCRCRxIMBEYAwgTJkxEsKHDgb4McFBI0YAFA1IePiRgsaKBBJtGGKIYQOPABApNkICScNeXLxUoWgBjstdFhBde8OCxBiGMl0ISbkCoYdHDBDcTPtkZAeGPlzMQJqggZIkBDTQJDtBgYImThGx2ZklwwcXLEQY6SIgTJybCkgOl9nhxw2oHnTw+dPDy8sEFGWzjNFAI8eKaF4gdjJyx04Gil5cuoHjD9gTFrAkTRED8goQrQTuLtHmpQhYqtkUWVUQ2RmGCWZxVHKrQ5UmCGUncFGELpIyBDQVYoTBA5cBBhRvatEB8JYFVoRPi7FnToVIFOHUwPVDoVQzCKU6u/ryY49EAqRE7kNRZv76RwhklSkBpAKuNkzblEVZgv/6PhJEGZGCAA/EVWAIJZORnABbrfaICCgUkpIGACvRAgoEleJcfAjvkgsBQCk2IEHCKWBJLDuQpmAALXAwhQyUIdEBUUgktwcYmKOUnCCA88niKGltswFVCgaTRSA8OOECBgq2c0mOPamxw0xKv+JHklYzkl4AMI9BRgQ+f8JiFQhRcmaQOHwjyVUUXqBBKH4PIeMEjHwCYiAViJKnHK349gEMTJiD3SAGnhBJKJjLImBAVAiCDkBNO5CjGDE00AYkgVqyRwBGpqFEKIIaGIoKiCAkkxUQ1QlBpDWQwAgEErYKkoooqtODCR6g+qJZBL3EpREylTQgSCCSvLhHGrERc4IgnoYpS6kAcIdQGsEuK8SoTU9gwKyALGLBIDKEAgRIaDYHBFSOVBmqAIK8q4G0os5aSUBtLaJDAQ4tosIQC7iK0xqtRIOTDrDRcICEVJoFBowFWvLomKduSeq9JyAQgUUINQ2CGVGHIgcUFApJL8UAHUdHVA8Mgt0EVBvA6skMHIGSBBjRrcFOjJgUEACH5BAEFAMAALAAAAAAgACAAhwAAADhwqCp+vi5yuDR4sjZ2sjJ+sjp0sDZ4sjJ4tjR4tFiQwjJ0sDR2sm6cxnqmzkCAumSayG6eynqo0HymzHyozoCq0k6KvoSs0DB4tjB2tISu0oau0oaw1Iiw0jB4tFSOwIiw1Iqu0DJ2tjB2tjJ2tDJ2sjJ2sJK01DJ0tlSOwlaOvlaOwliOwFiQwJK21pK42JS42JS62pa62qDA3GiaxmycxmycyGyeyHSkzGyeyqLC3KLC3qTC3HimzqrG3nim0HqmzH6ozoKs0I601pC21p6+2qbE3K7K4n6qzqrG4LDM4n6q0q7K4LLM4jZ6tmaYxmyezHqozkaEvHKizHyo0E6KwIqy1Jy82mqaxnSkzqbC3KbE3r7U5rbO5LzU6DB8ujJ4tDB2uDJ4uDh8uDJ2ujx+uD5+uD6AuECAuD5+vkqGvL7U6EyIvEqGvlKMwMLW6EqIvkyIvlKOwszc7KjE4GKYyGicyrbO4rjQ5src7NTi7mqcynSizNjm8DB4uLrQ5pq82trm8DZ4tG6eyEaCulaMvDh6tkaGvFSMvjZ+tjp8uEyGvObu9jZ6tD5+tjp6tGCUwoqw0jh8tjp8tlCKvFCIulCMwDp8tNjk8ODq8uju9lqSwnCgzHakzEB+tvT4+liQxMTY6tbk8PD0+kyGuGKWxF6UxF6SwFqQwmCWxl6SwkiEvFqSxEKCuEKAuFCKvkyGumKYxkiEukKCukCCumSYxjJ6tjR8tjR6tkaEumCUxFKMvkSEvDR6tDR4tgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj+AIEJHEhQ0ZgECBMmVESwocOBuBJoUEgxQYYEYB4+NGCxIkJOIMhQDKBxoAKFLEJYSAhryZINFDOMKXnrIsISM3jwiIOwhsshCUsgHOHooQKbCT3pzIGwgksJCAl42PAkwYiZBAeMSPBkSsI2OrEoKBHDJYgEJjCwYRMiIcmBCHM9kCHhJIEYOkEQUOISQokba9lQUQjx4hoZiCeIvKFTSBqXdUq0+LKWCEWsCRVQQSyjAwRXOmmAcFlklpe1NKpSBFZGYQlTnIms4UAjxxMcGxLtWIskTYISBFYtSEDiwEHXIGAgvqJAdcIkbPK0MVHJAxs6eiAo7CoSoa4rMiL+eEwQacUDJ3TSp4eiUEcIlZ1UvWH1ZjxCDurTA8JwCOGHBFW8J2AIHZhhXwI1pCfKCwucNNR/C/jQwYAhdDceARTUMIhQCo3wH0IKpHHBKRLIcmACCsTAhSQOVFIAhyMgldATbTR4oCt+5KhjFxWUsJVCU9jhwwQTyHFgITom2UUJNj3BiRZERjnceArcsIINHvQgSo5YKBRHlERKAAItiHhUwguN7GGIUCVAEhJCimSwCJE5cAJBGBDoEIUKrlFCQCaNNKKJAyYoRIIAwCDUyxQOknFHFFGoQosKcSjwAyldoCJIoI2IwABhwIAx0Yx2QHrHIq1EEIErpIACSimsbdDB6REIJPDBLXAllEsrkEqgnaoRPOGFqyiU8IgXnHKCEEEcIWQFpFG4kQAZqtoRBiGuCvIpAUY0gsRJajQ0xlYLQHpWArSoGgpXm7iKSkJvPDGCAg85MkIuKvCJUByqXoLQEa72wKFVYpQ0howJqKCqVwns4qofhYJYkkABSJSQwhEYiKIXcNhQwn/hTjzQQSQkkAsEtLhWQsm4iuzQAQhlMMLMMSKEaEkBAQAh+QQBBQDRACwAAAAAIAAgAIcAAAA4cKgqfr4ucrg0eLI0drIyfrI6dLA2eLIyeLY0eLRckMAydK40drByosyAqsxCgrhomsZ0pMyAqtKAqtCCrNBOir6ErNAweLYwdrSErtKGrNCGrtCGsNSIsNIweLSKstQydrYwdrYydrQydrIydrBUjMCKstaMstQydLYydLAwdLBUjsKMtNaOstJWjr6QttZYjsBWkMKWuthYkMBYkMJakL5akMBaksSYutiYutqavNpunsiavNycvNqiwNxyoMpwosymxN54ps6oxOB6qNCoxuB+qNCqxt5+qs6CrNKQtNSSttagwNqkwtqyzOKwzOJ+qtC0zuQ0fLZkmsh+qtJIhLxomsh4pMyArNJSjL5SjsKOtNRuoMqgvtpwoMx6qM6uyuKOtNaUuNigwNyiwt62zuK2zuQwfLoyeLQwdrg6fLa40OQ2frYyeLgydrrC2Oo4fLg6frg8frg+frhAfrg+gLhAgLg+gLpAgLo+fr5MiL5QisBOiL6gwN5QjMBSjMDE2OjO3u5unMhmmshqnMpwoMp2pM4weLjA1ujO3uzQ4O7S4O7e6PKsyOA0eLZEhLxUirxUjsA2erZIhr5UjL48fLY4erQ4erZglsbg6vTY5PDs8vjq8Pbu9PhclMS80ujM3OzS4u7o8Pb4+vxcksRcksJ2pMxsnspqmsRIhrxonMhGgrhmmMRimMhilsJeksJunspkmMhelMRqmsZGhLxglsRKhrrM3uxEgrhEgLZKhrxklsRCgLrI2OhMhrpMhrxOiLpOiLxQir5snMZEgrpCgrpQjL5Sir4yera80uY2eLRkmMY0erY0erQ2erS80uQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/gCjCRxIsI2bBAgTJmxDsKHDgVMSZFBIMQGGBGgePjRgsSJCGSziUAygcaAChSw0FElowYiRCRQxuCmZ7CLCETB69NiFkJnLIwlHIAzh7KECmwkd6OyCcIjLKwgVVJgwKUGImQQHhEgwCVJCYDrHKBghxiWLBAQonDmjISHJgQgfSWhR6CQBMTq1ECjj0s6ICGvPBFEI8SKlFogPrUkQQeeQOi7LjHghZa0HilgTPuqCuIWSPBB06tDiEgSrMGt3VKUY7Y3CEbM6d7AyQUeQSREmaPGxlgidBCMILIiRQMSBg6+HnUCsQcHqhEXOPNlFQtiFM3Dg5FEYB5JIhJA0/rTI5DEBrEpYHGVfTz4hlQkThhT6ZKGWhfIIK6zP/uQIJoQfJCABfATCJwd+CTCTHSgoxHDSUAGy4EAVBU7wXXkEYMHLJUIpFEKAUdFhAQ6rfIJgAgrA8AMHtARDQIchIJXQJJSY8AiCECyio46CnDHECFspBAkOQTjgACUIsiLIjjueMYJNk8jQhZFUnlWeAhG8EMEFPyij4wwKUUKlkYTw0YtXFY3ARSOCRCLUCGuYsFgCbWAQh5GosDBHAnNQQYUFJHQIJwGCNNLIJqmQoJAIAkQDHpoJxJGJnzXwYAYMlwgxChsLiGJoIxsompBAaEw04yd+urJGKKSQ8soor5xw8sstgXz6AwIJfJAMXCj5SQUeBHjSqi5PxOrCCJY88SkNCBHEEUJ7+GpFAre0ygkDPMTKSAko5tAIEifp0ZAbW7Hg530J8NCqLyQso0msCySkxSQhKPCQMyE0w8cfCTHRqhNC/RBrEx1apUZJbsiYgBmtPoCQKdoWbG9J0QQgUUJntBovik8oE8EIAYpL8UAHiZDAGhHQQkBQI5i868gOHYAQBiOkEEKMCDVaUkAAIfkEAQUAywAsAAAAACAAIACHAAAAOHCoKn6+LnK4Mn6yNHa0Mni2OnSwNHi0XJLCMnSuNHayNHaweKbOQIC4apzIgqrOeqbOhK7UTIi+hK7Shq7SMni0MniyirLUMHi0Uoy+Mna2MHa2Mna0MHa0MnayMHawjrTUMnS2MnSwMHSwVI7AkLTWVo7AWI6+VpDCkLbYWJDAkrbWWpC+WpDAWpDCXJDAWJLCkrjYWpLClLjWmrzanLzYbJzInLzacqLMoL7aoMDcoMDeosDadqTMqMbgdqTOdqbOfqjMqsbgfqjOfqjQgKjMfKrQrMjgfqrQgKrQrMjisMrgiLDUjLLSmLrYpMLcqsbesszisMriirDStM7kirDUjLTWNnq2ZJjGQoK8apzKgqzSUIq+hrDUMHi2UozAMHa4lLjYbqDKdKLMosDcfKjQmLrapMLets7kuNDmNHy2MHi4utLmMni4Nnq4Mna6MHy6OHy4PH64Pn64PoC4Pn6+SIa8vtLmTIa8Uoq+xtrqUIrAUIzAqMTepsTgZJjIyNrsZJrIytzsaJzKgqzQcqLK1uTwcKDMdKTOxtjq0ODu2OTwNHi2QoK6Toi+OHq2RoS8Nn62PH62Soa85Oz0Nni0Ony2OHi0YJbGZpjGaprGaJrIOnq2Onq0PHy2XpTEYJTCToi84Or06O728Pb6XJLEbJ7KRIK6YpjGaJrGZJbEYpTCwNTmzNzs8PT4+Pr8xNjoSIS67PL2/v7+SIS8bp7KZpjEZJTC/Pz+SoS4TIa6zt7sYpbGaJjESoS6Soa6TIa4QoC0aprEQIC6Uoq8vtTmToq+Mnq2NHq0RoK6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP4AlwkcSFCSGwMIEyaURLChw4FrDHhQSNHAFwNxHj4kYLEiwhJgsFAMoHEgAoVgjgBJmIcHjwgUv7ApiewiQgtNZMi4gzCVywYJLSDckOwhApsJT+l8gJCMyywIERCJIHLDTIIDNhjAoiXhHZ1XsFio4BKMgQIRliwpkpDkQISNxkgAdLJAThldCtRwSceCJrVLmCaEeDGShMNjIBnIojOHA5dnCmgATIHi1YQIOB2W0ICOA50murikoOyHWjEiKS6Do9DCjM1KIkVQsQVBlghdxKjdQQfhghUlDHA4cJDiBC6HjyBIjbBAgyU/7iwQpWRKGzUOFL7RwtzREQmmPP4aeKHBEJo26NFnUpipQYMcgFJMcDShkXgDSdKjHxJBzk0DY7gnoHuX3LcYelVUUMJJQ2VgABinADFgA/7dh4APoWAilEIbOBgVHZSkkEUMBhqAAAY4FKLJLgt00GBFWNzRhX33ORDIjTfuMYUPFmilkBYpbCFkJAaisgeOOE5hgU1YgCGIkFDysWFFCGiigSZK1JDGjSwoFAmUQmYyQRY+MNgaBofsUYxQFlyigWIGSPKFHEICAsYcBSQACy09fDDlJQvsccghi/jiYkIcCLAMQsQ4kpAss9BCyyKbSOGEJWWMIoULgwx6CAQfKCRQHBMl9AkjkpayiyKllMLKKLaVVKLLL8Z4ioMlBmSAzFsJFYCHpLngsgAprQqDRKxUWDDHEJ6egBBBHCH0hKS0gJpHq5Uo8ECsroSKAA2HQHGSHQ2xoZUUkvZpwA2ttvKBJYzE2kJCXWCxAQIPJbMBJH5EsQBCIbSqg1A4xGrDlBuEURIbX1hwqAFMtCoEQglw+zC+JS0TgEQJSdEqCgkhkYYmFjhIbsYDsSGcAZCsokoBFHFgwK4oO3QAQl8UIMIGG9ikaEkBAQAh+QQBBQDFACwAAAAAIAAgAIcAAAA4cKgqfr4ucrgyfrI0drIyeLY6dLA0eLI0eLRilMAydK5woMx6psxAgrpomsZ0osp+qMx8qM58qtB+qNB+qtCGrtBOir4weLYwdrSIrtIweLSIsNSKsNIwdrYydrQydrIwdrJUjsCKstaMstQydLYydLAwdLCUuNhYjr5YjsBYkMJakMJaksRcksJcksReksJclMSWuNiWutiYutiYutqYvNqavNhwoMqiwtykwt52pMykxN52pM6mxN52ps6qxuCCrNCGrtKOtNaWuNacvtqkwtyqxt6sxuCsyOCCrNKuyOCErtKuyuCwyuCwzOSyzOS4zuI0fLZkmMh8ps5EhLxuoMxyos5+qM6ArNJQir4wfLoyeLQydrZWjsKMtNacvNqgwN6oxuCUuNaevtq+1OgwdriQtti+1OY4fLbA1Og2frY+frYyeLgydro4fLg6fLg8frg+frhAgLhAgLo+fr5IhrxMiLxOiLxKiL5SjL6evtxMiL5OisBOiL7A1uhSjMDE2OjO3u680uRkmsjI2urQ4OxmmsgweLi2zuR6qNB0pM7c6PJ4ps54ptA0eLZIhLpSirxWjsA2erZGhLw6fLZKhrw2eLQ6erSevNg8fLY6fLTg6vJelsbY5vDo8Pbk7PTw9PpilsRglsRglMJ6ps5yosxIhLzQ4O72+Pzy9vpuoMpqnMpomshMhLhEgrpCgLZqmsZkmMRglsZklsRunsponMhMhrpilsZUjsJmmMQyerY0erZKhLpEhLpEgrhonMp0pMw0erRKhrpGhLoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/gCLCRxIcE0bAwgTJlxDsKHDgVIMZFBI0QAGA1sePiRgsSJCERcmUQygcWAChRd+MEiYx4aNHhQxtCm562JCJSNGUELowqWpil2EPUxgM2GrnIcQ4nCJC2GCRjtEdplJcEAXA5McJLSTk8mjD0pcXjCQYAcPHo0SkhyY0NaEWY/I4hxx4QMKl3E+iDrLo5VCiBerTBjM6o2BUTlXsXF55oMWvhQoUk2YYMrgCVfkzMnJ4YLLCq/2nB0ikmIxNwo/eLmsqMoODocSzOpxYcjZGnEQFlChx4CHAwcp5lE0uMej0glN8Qhjp8AdCUCgPJGjMGuahA56TFjh0YAKLTj2/kAZP/6FwhYMGLDqlMuOAztxu5ciP15Hj+sGNhg4lL5/evzdjTJeEkHocRJCXejXByH+/dedUwzAcAkXFCVIWRx2ABKDCA8mpMEMEshyRwEfIFhUQpNUwUeHBszxx4svlgEEDgZcpZADuUxBCCFVdPhKGTDCCERHWPUxy45I9vFgArLoIYoEMjTxIgkKVYHkji/YQQoEB6YmhCBlRFLiB5Vogd8aGKSx4ywXwGGAC6GkUgQIJSJUCQJqCCJIIbrUiZAHAhSDkANaIWQHKKmkUsgDSGgwSRGeLJFCIHoKggUIfxWzxUQJVWJIop+4gsYnn5DiCSOM9GJHIpXKcEl+pLuwlVABUSSqigIFcEIqLD6gagEXmvhQKYcGEMQRQigkmkoEIFhCKiMLPIBqIJgmMIQgZJxUR0NtXJVEoplgGgupg4BwCSqoppBQSB4k8JAwXaSRgw4FINQBqTeUSAOqMvjpgRkltYHBB34CQWoDCLEwrZ/ullRMABIllASp6iLkgxOyfKDftg4PdJAHBqQhii5d/mlArB07dABCA5fgsk2BlhQQACH5BAEFANQALAAAAAAgACAAhwAAADhwqCp+vi5yuDR4sjR2sjJ+sjp0sDJ4tjR4tGCUwDB0sHakzIKs0D6AumqcxnikzIau0k6KvIKu0pC01oSs0DJ4tDB2tDB4tFaOvjJ2tjB2tjJ2tDJ2sjB2sjJ0tjJ0sFqQwpC22FqSxJK21F6SwJi41lyUxF6Uwpi62pi82py+3GqcyJ6+2G6eyqDA2nCeyG6gzKDA3HCgyqDC3nCgzKLC3nKgynSizKTE3nSkzHimzqbE3nqmyqjE3nqmznymzn6o0KjG3nyq0KjG4KrG4ICs0qrI4LDK4oyw0pC21pa42Ji62J6+3LjQ5LTM4oiy1LjQ5jR8tmKWxnSkzkSEvGicynimzIaw1FCKvliQwFqSwlySxJK21myeyp6+2m6gynKizrLM4oqw1Ja62LbQ5oqy1LzS5jB4tjB2uDZ+tjB4uD5+tjJ4uMba6jJ2ujB8ujZ6uDp8uDx+uD5+uD6AuD5+vkaEvEiEvEqIvEyIvEqGvlKMwEqIvlSMwEyIvlSOwlSOwFiQxFiQwmaayMja6miayNTi8HikzsLW6NTi7tbi7jZ4skaEuk6KvlaOwDZ6tkqGulCMvjp8tkJ+tlaMvoiw1ODq9DZ6tJa41jh6tjx8tDh8tjx+tmCWxGKYyIaw0mSYxmKYxubu9F6UxNzo8u70+GKUwk6IvrzS6NDg7tjk8Ory+Ojw9vT4+vz8/mqcykiEusDW6GKWxGaYxl6Uxvj6/GycyGCUxGCWxmSWxGKWwmSWwkKCuGSYxECAusrc6lCIvGaYxFiOwFCKvFSKvHqkzL7S5jJ6tjZ4tEiEuDh6tESEukKCukKAuDR6tECCumSayDR6tjR4tgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj+AKkJHEhQTRsECBMmVEOwocOBUhBcUEgRARoEcB4+NGCxIsIsf+JQDKBxYAKFf2rASohHhIgYFNGsKYnsYsIdEyZUQTjCpYuKGjA9TGAz4aecUxCycEkKYQIcNURqmElwgAYEkBwkrJJzSAILP1z+QZBgxooVOhKSHGiUyghpZHFO6GPBjMs5FlCcXRFKIcSLVagIJiTyRE5DbFxCsZBl7w6KVBMmICWYipc5bHIa0eNyR68UZ7FAqkjtjUILfCrXaObCyJQEJ2rksXRWxByEBADxQbDhwEGKeCrHkCZSoYsVKqoQiMSAxhEiWhPGcVAcwa8YVAB5RPBIwq0UR8L+hw+hEJAVK58EZbnT7A7c7QzEh29yo7gFBFPO6z/PaTtCUuHlEAQfJyGkAQYI7FHLfudV51ECLoSACVAIJiRHFY4MkoV/CTWgxA6zRELAfQgcSJEFmwCxBCMcOhDFizDa8NNVCRHwwBOuvPIKBBz2AuOPNnSEABsvtKLjkV+QWFECUxDjCQQiEPEiFgpBcKSOiyTBCwwFntaAG04Ec58FkziiCUJqoHGHLa+M0kIxC2jRiilMdKDQJAQ44YYbiZzCgUIbCEANQrMIA8J9jZRiiimJ+MJDBcmkoIoQGaSypxvG2JmQQHBMlNAkwCx6SSROXHJJCaocckgsjSBxaRetJ2GADFuSPbEoKwoQsIqplMigagNkvnCpHwgRxBFCFCxqSg8c4GHqISDQouoxdiYwhhspnGRHQ2tc5cOiJiyAAC2mPtEBJIWomkFCeiSgQQIPYaKBJl+8QABCEZhqwn1dqEqCkhqkUdIaaFjwJ0I8mMojAlqoesbBZJUkUAASJZTwJesiJEMRnliA4LYSD7QGbwjI4UkoXSK0AQKzhuzQAQihwcEHGmhgk6AlBQQAIfkEAQUAzgAsAAAAACAAIACHAAAAOHCoKn6+LnK4NHiyNHayMn6yOnSwMni2NHi0XpLAMHSwbp7IdqLKeqjQQIK6ZJrIbp7KeKbQfKjOgqzQToq+hK7UMHi4Mna0hq7SiLDSMni0MHi0iLDUirLUMna2MHa2MHa0MnayMHayMnawWJDAkLTWMnS2MnSwWpLCkrbUXJLCkrbWXJLElLbWlLjWlLjYlLramrrWmrzaaJrEnLzYaJzInLzaaJzKnL7capzIoMDcapzKbJzIbJ7KcqLMoMLeosDcdKLKosLcdKLMosLepMLcsMrggKrOgqzSjLLUkLbYmrrarsrgsMzigKrSgKzQsMrisszissriNnq2ZJjIbJ7MeKbORIS8cKDMfqjOVIy+VpDCWpLElrraaJrIrsjgjrTUmLzarsrivtTouNDkwtboMHy6MHi2Mna6MHa4Nn62Mni4Ony4On64PH64Pn64QIC4Pn66PoC6Pn6+TIi8SIa+Vo6+zNzsSoi+TorATIi+TIrAUIzAUozAVo7AVI7CWJLEVo7Cts7kcKLMuNDmyNrs0ODs2ObwtM7kvNLm1OLw3uryeKTMqMbgdqTMNHq0eKLKRoS6Uoy+XJDAOHq2SIa8PHy2Nnq4Toq8Nni0mLrYOny0OHy2Ony25u72YJbEUoq6PH62QH62YpbCYJTCXpTCdKTO4uz07PL49Pj6cKDKbqDKxNjo0ODu4Or08Pb6ZprISIS6QoK6aJrGRoS8Soa8YpjGYJbGXJTGXJTESoa4YpbEXpTEToa6QoC4ZJbCYpTCXpTGZJjEYJTERIK6Mnq2NHy2NHq2cqLKRoK4RoS4eqTMNHi2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP4AnQkcSHANGwQIEyZcQ7Chw4HHEIRQSBHBBQRnHj40YLEiwgp5qFAMoHFgAoV5bEBIWKtDBx4UL1woaexiwh8OHGBByMWljYofID1MYDNhr5wtEMZymQJhgiw+RH6YSXDABwRU5CTEkvPUSSIu8yDA0CNGjCwJSQ5MmMsKF6c4HdjBYMFlGwQrzMbApRDixQdWAgsTySVnlTcuk2CoA8Psj5gCEyLrEtgKBDdwcjqw5PLHLBNmn5yk6CwNxQqVcTywISHXZB52KJj18MapnwoIQBw4SLEWj8A4sFK0EWNJMQKWfswoAqR2wqwiEcLBYaWPRwS3bSwpwp3724RcIP5AwMVFD5Y5WJBdR/CjO3cvEaJvQCBMvH3xndYjSME9x5UKoyHwAQcI2JHLfeJhoh8BNpSgCVAEJtQGFnpwgZt+CEzgwSOgyEIABggNSBEGnDDzwoPrweHEiitGkYMOAiqUAA1HpKKKKkLo90AULLKYQ0cIvHEDKjcWOQOIHiUASgUrEOHBDismoVADRd54iAakMBCgQhOQ4YQv82FQSR2VILTGBZLAogojMoSywB2ofPKCCAp1QoAUZJBRSClIIgSCAM4gxAswBYAoySKffKIIKTsgQQALhgSxRSJ5ktEAnQkJdMZECV3SSqKI7CIFIoisYAgeeEgiiSOVKnESB6TGrJVQAk0kiooCBLhC6igzoIrEBm/MUKkfCBHEEUJKJPpJJBhYQioeJPCCahl0JpABGSycREdDF1w1RKIuLIDAMKQegQEVZqC6RUJ1JPBBAg9B8kElM9RAAEIUkKoCiGGgqkSfU5UkEwZ97kBqAzxN2ye8JTkTgEQJBUHqugjNYASfBG7b8EAXgYBAJaaAsmVuCMS6sUMHIIQGBid8MBVCgJYUEAAh+QQBBQDFACwAAAAAIAAgAIcAAAA4cKgqfr4ucrg0eLI0drIyfrI6dLA6erIyeLY0eLRcksIwdLA0drByoMiAqtJAgLpkmshyosyErNCArNBQir6IsNIyeLQydrIweLSIsNSIstSKsNIydrowdrYydrQwdrQwdrIydrBUjsKKstSMstQydLaMtNaOtNRYkMKUuNZYkMRakMBYksRaksJcksCUuNiWuNaWuNiWutqYuNaYutiYvNqavNpmmsaavNxsnMacvNhsnsqmxOBunspuoMpwoMpwoMx0osh6ps6oxN58qM6oxuB8qNCqxt5+qM60zOKIrtKQtNSevtqsyOC2zuQ0fLZelsZyospGhLyErtRSjL5WkMKOtNZqnMhqnsqcvNp4psx6qM6qxuCQtNagwNquyuC60uYweLYydraSttjC2OoyeLgwfLowdrg6fLg8frhAgLg+gLo+fr5KhrxOiLxKiL5UjL6iwt5MiL5QjMBOiL5SjMBSjsBUjsDE2OrQ4O5kmMZimMhqnMqwyuJkmMiwzOJ6psx4ps4weLjA1OjO3uzS4O7e6PI0eLZyoMpGgrhSirxWjsI2erZIhrw2frZ0oMg4erQ4erY8frY6erY6fLbk7PRclMSErtJSirpimMZAfrbY5vDs8vhglsZelMK+1ObI2urY5PDo8Pbk7vba5vL0+Pz4+vxeksJ4pMzA1Obc6PJ0osr2+vxmmshsnshGhLpIhLhglMJelMZIhLpglMRMhrpCgrpilsJilsRmmMS80uTW4u4yerY2eLRGgrqGrtJEgrg0erZEhLo0erQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/gCLCRxI8JGZBAgTJnxEsKHDgVASgFBIMYGYBGcePjRgsSJCOI4aUQygcaAChVMiREk45cGDCBTFmCnZ62JCHhIkQEBox+WeimOIPVRgM2GKnCkQanJpBaECHq5EjplJcMCYBMLUJLyVkweiBD9cOkpwAceJEzwSkhyIENGKCHQSZsk55cIRl2kSpDh74pJCiBchRBjcQuSInJfUuBxywQ1fHxSpKhwxWGUaNTkltHzAY42Gs0NEUizWgSKcynwg8JGwApGVCFOKnKWSN4GCCnUSeDhwkOIt1IhEJ4xwYsMtAo58kMlhQ2tCNZ/WYLiQQA2fCHM8JqjgZg+JHODB/o9QqOTUKUuEdmypslN7Ah7hwXvBIvrChUPm85uH5V4v+BkS1HESQmNkcAEHvJii3ylr9KfAHngIl1CBZDHQwCJC0LDLF9T1twUwQCwACwEdUqgQBggIgQIB/alhxIsv9gADDglclZACOCBBSiedSNAfBD3ACCMMHVVXQyk8JqlChxUpsMAbCwBBxQ0vHqGQBEnyGMoEsugwIEVDPGGELR1K4oZoj4gxxSidcBLDIgzEwckhTGCgUCQKdPHEE4B8wqRuAhSD0Ce4FECdIoUccsgTstxQBAElEHJDFU7s+YQDLCYk0BkTJUQJKIoaEgsSeujBAiFllKGIInJYasFJpRn0wtaNRCi6ygIEhFLqJjKkylgaMFhaAUIEcYSQBYoewgoGsJSaBwa1pOqHnQpQ8MQVJ7XRkBlXNaEoEwwkkEupRGDQSBipVpHQmR4o8BAxY0iiggyZJlFqCdRZkKoFTHqARklmXMTkDaU6gFAcqYLBpLslFROARAlpUaq6CMnQxAIXZJCAtg0PdJAHCUiywCdfIgSyrB07dABCYnxgwss2BVpSQAAh+QQBBQDMACwAAAAAIAAgAIcAAAA4cKgqfr4ucrg0eLI0drIyfrI6dLA2eLIyeLY0eLReksIwdLA0drB4ps5EgrhsnsiErtR+qtCIsNJSir4weLYwdrSGrtCMstQweLQydrYwdrYydrQydrIwdrIydrBYkMIydLYydLCOtNaQttZckMCStNRcksSSuNheksCUttRclMSYutiYutqavNqcvNpynsaewNx0osygwNygwN6iwNx2osqoxN50pMx0pM54psysxt6ErtKsyOKwyuCIsNSSttaWuNikwtyoxuC60OS2zuKKstK60uY0fLZkmMZ6ps5IhrxqnMqAqtJYkMBakMJcksKUttZunspyos6iwtyyzOKWutimwt640Oa40OSKstS+1OaMstIwfLoyeLQwdrgyeLjI2uwydro8frhAgLhCgLg+gLpAgLpCgro+fr5QirxKiL5OiL5Oir5Qir5OisBSjsJQisBYkMRYksSkxN5UjsJomshwoMrK3OxqnMhonMpyoszW5PAweLh8qNCwyuKCrNLG2OrQ4O7c6PKErNI0eLZGgrhSjMBakMA6fLZKhrw6fLg2erbk7PRakL44erLG2uo4erTI2upglsZmmshonMg+frY8fLhSjL5kmMhAfrbU4u5glMSCrNCCqtDU4vDW4u5elMTq8PZunsh0oMZyoMhGgrpimMZomsZglsRglMLA1ujQ4Ozg7PTw9vpGhLxklsRIhLjg6vLu9PjC1uj4+vxwnshynshkmMRKhLrs8vj+/v5elMZmmMRQiLpEgrrO3uxWjsAyerY2frY2eLREhLw8fLZEhLo0erQ0erY4erY4fLYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/gCZCRxIcBiYBAgTJhxGsKHDgUgSWFBIMUGFBF0ePjRgsSLCJa8YUQygcaAChcVWzEmIxoGDSRQrgCkpjGImJkzMIIzjEiZFDcgenqRYBycchCdcHk2gIEkSkRpmEhyAMNGToWdwUiqUQI/LVwk4JIkQIUlCkgMRKgi0awcxhDeZoOGQw+WiBMHIRgChEOLFJLsCSyKT4A1OOYlc5kiwRC8TilITIigSeFcrNWNwMinm0g6ZJmRliKTITIzCDyoqu+p1gkmdQnAmvcJBVsLdBATYrEmw4cBBhQxI1QosqsDQhJMiACrT4YEdDChQjFE4ZgGZDhw6OBK1iwUHj22W/qSKEL38UoQ+XLkaRISFjRK2jlesVD76D0qjM3Dgo76/q1mGeJRQHdGNIMUax2mg3wWCzOKfK4QJyNQkh4ymkIJhdVCALzCoUMQL30mYgAxNQACCKQSEqMFFCnHwSCkYICDiGDTUWGMMI5ilgUIEwHLFII00IoWIZMRgo40jdJTAGFFsEuSTJEioAAiKgACBBCjU6IBCdzwZJC2dLGCHfAnJ0MMMuXhR1RqjDVOBKa00IogJajCAiSB8YBBiVQTU0EMPQ5SwJ28CMIPQApwU8N0DYfDBxx8LsOAAAT8cYQUFdPzZgxQE9MVMFxMllAgWjuIRixBhhAHCEaw+8IsLrJoCclIGwqSVkAI1OPoJIgWskqomJLBqgxeJYKBpGwgRxBFCPDjKRykcmJLqFh2EwuoNHTClRA8/nJRGQ2Ds2IKjGGTLSapCcMBIFaxSgFAhSzCigQIPIaMBIyQAUQBCSqQ6wXc8sArIhV+UBMZFewaR6pAJHMLqEHvSWxIzAUiUkMJhuIsQCSw8kUAGCXw78UAHbZCAMk8sQKbJtY7s0AEIVcCBBjSzWGhJAQEAIfkEAQUAxgAsAAAAACAAIACHAAAAOHCoKn6+LnK4Mn6yNHayMni2OnSwNniyMnq2XJDAMHSwNHawcqDIfKrQQIC6ZprGdKLMfqrQfqjOhq7QToi8MHi2MHa0hrDShrDUiLDSMHi0Vo6+iLDUirLUMHa2Mna0MnayMHayMnawirLWjLLUMnS2MnSwkLTWVpDAkLbWWJDAkrbWWJDCWpC+WpDAWpDCWJLElLbWWpLClLjWlLjYmLrYmLramLzamrzaaprGoL7abJ7Kbp7Gbp7Ibp7KcJ7GcKDKosLefKjOpMTepsTcsMrifKjQgqzQhq7SjLLWnLzaoMDcqsbgsszkgqzShKzQsMzits7kjrLSkLTUNnq2YJbGcKDMQoK8ZJrIdqTOgKzShK7UTIrAMHy6Mni0WI7AMna2bJ7IeqjQqsbenL7csMrgwNbovNLkNn62MHa4wtboMni4Mna6Ony4PHy4PH64Pn64QIC4PoC6SIa8Pn6+nsDcwNToTIi+UIzAVI7CUozAzt7sZJjGZJjIaJrIttDmytrqzt7uuNDmMHi4eKbQ1uTw3OjyNHi0cqDKRIK6UIi6WI6+OHy2RoS8TorAPn62OHy4Soa8NHi2Nni0Onq0yNzs4uz0zNzsOny22uby6PD2YpbEYpjGYpjI5u727vT4WpLEgKrQToq8XpLCXJLCXJLAdKTOyNrq2ubw9vj8bJzIRoK4ZpjEXJLEapzIToi6SIS6XpTERIK4XpTGXJTEQoK6QIK6ZJbEeqbOVo7AdqTMUIy+UIq+Toq+Uoq8NHy2NHq0NHq2RoS6QoK4OHq2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP4AjQkcSDANGwMIEyZMQ7Chw4HADFxQSNGABQNeHj4kYLEiQkdYqlAMoHEgIoVYYuhJiOXKlVAULbApmeBiQitZssxBiMclTIphgj1EZDNhnpx5ELZw+QghIiuyRIaZSXBAGANuVnxBGCenJ4SdXGIxAMKKAwdWEpIciLDKGVVFKCHEmQULCB4u3RjIc9bByoQQL3JSRXgNJANdcurJ5JKHATp9+1CkmpCSGcKqNFVwk7OuSytxxpzlIZKisTYKR1DBvAlXiyx5JuUJpejHWS16DSDCQ8fAhwMHFS4AAorwpQInFYZyMOZBCEUQuJAgkRshnFJxQIAI4eKSKhogPP52cSTLwfTzSRM22bTJkBQZDRT4SO6xz/npT6yU3gCCD/v/7CniUUJ7TJfBK70lFAZ/SATyCYCbyDFgW67wQp+CG5AVAgOLAIGCETaEN6EBPxzxRwqKFCBiGEUhBEIlPWCAwIhw4GCjjTd0kNZVCSHCyQ6GHHKIYxPGccONN3bQkQFvoICJkFCWMGIKkqQAwRhK2BiBQjxAKSQaE5DSylYVBUFEDnSQ2QgdpaVhgSKaHBLIFIuE8IslgmggIkKNIJIDEUQIscKevglgDEIKkMJAeIqcIYggTSigQgSIPOGEChWUASgROhAqkBcTJdSIEY+uwQoTZ5zBgROsKqJIDaybTnDSBgmw1eMSj2KyQgGDpAqJB6wm8oUbGGyKB0IEcYSQKI8K0gMIjZ4BSAgwsCpECAZUoQURT0xiQB0NsXFVDY9SgC0pqS4BQhVNsDoKQpOw+QEiDwUTRhUllFAAQrukSgFCErAqgUIfqFESGxftqUKqOiCUh7V70luSMQFIlBALqVaQkAcsrGBAhuBOPNBBHxjQyAozkJlQybWK7NABCFkAggk022RoSQEBACH5BAEFANEALAAAAAAgACAAhwAAADhwqCp+vi5yuDJ+sjR2tDJ4tjp0sDZ4sjJ6tlqSwjh6sjB0sDR2sHimzIKs0kKAuGicynqmzIKu0k6IvISs0ISu0jB4tjB2tIqw0jB4tFSOwDB2tjJ2tDJ2sjB2sjJ2sIqy1Iyw0jJ0tjJ0sIyy0oyy1Iy01o601FiOvI601liOwJC01FiQwJC22FiQwpK21lqQwFqQwpi62pq82py+3GqcxqLA3G6cxm6eynCeyHKgynCizKjG4HKiynKizHSkzH6q0KrG4IKs0KrI4KzG3rjQ5Iau0oqw1Ja62Jq61qjE3K7K4rjQ5oiw0jZ6tmSYxnSkzkKCvH6qzk6KwDB8ujJ4tFSOwjJ2tlaOwpK42GqcyKTC3G6eyICq0qzI3pi82qTC3rDM4rrQ5jJ4uDB2uDp8uMTY6jJ2ujx+uD5+uECAuD6AukCAuj5+vkiGvEqGvEyGvEqIvlSMwEyIvlKOwqjE3sba6miayMzc7LbO5NTi8DB4uHakznyo0HimzsDW6NLi7trm8H6o0ODq9MTY6DR4tESCuk6IvlaOvliOvqLC3Dh6tkaEvFKMwD5+tjx8uDR4tjR6tjZ4tDZ6tDh6tFyUxGaayGSYyDh8tjp8tlKMvuLs9O70+FySxICq0FySwlqSxHqmzmycxm6exmCWxmSayGCUwF6SwrzS5s7e7sLW6N7o8tzo8uzy+Oju9vT4/Pz8/kiEuvb6/GSWxGKUwESAuESEvF6UxmKYxk6IutLg7kKCuM7e7GCUxGaYxuTs9Hyoztrm8lCIulaOwE6KvlCKvDR8tjh8uEaCuFSMvjR6tEKCumCWxESEukSCuDZ+tgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj+AKMJHEgQGhkDCBMmhEawocOBxwxgUEjRwAUDVR4+JGARYYcOCm9JeUIxgMaBhhJ22JEnlRWEbCJEuELxApmTCS4iZAAsVixUCN/IpEkRC6WHhnR6/OJzCcIrMukgNGRJAUksNwkOwGKA0YqXBmr57DTJgCWZUgx0UBAliqWEJgcifDKm042yIDj51GHlkkxkBqi0jVJHIcSLvjopTqWmgxKfRhjJxGSg0eBSFLMmnFREcadAFIb5nGVLpqU0PNpGIEkxGhqFHkp4JnTqDiw7BeRcaYOnbQ4zU+G8McDhwEHYOF4pFtSgEsiEL6L8aAyhVJAJD4AnTNOisQEPKVr+dWLxnOKbQwr6TFi/nopCLoQIqWLCQoeiLSkrIizFfr0oS6xp0MEd8RVICCuH6JcQFesFAcVwCWEhYBCrsGIgIWsoOJUCFLCmkIQIedCALjiIIAQM5Sm4BRBQbHCIIc9hoZRHC+BQAQIaGmCGCzzyqIIXb3GVkCG+0KDKHntskaMaKvTYoxcd6RjCGUhW6UQBGm4giyNQ/GABjzkotEWVSOohgQJQqFiDFm+A9cQbrEFzATOB7HFGBhR4YAwgdzyQIiOGaFFDDTRskCIHAkSDkAKgNADSIU3ccQcXK4TggyFB9BACBUkMWsMvWCYkUBUTJcSIEJKmkswMTTSxQQ+vRBDBCzMnePoHSRokIFdCBSQh6RmJFCBGq49YEGuYZjzgKRwIEcQRQn5IeocNHUDaBBMevBArDVg+8UMNQURigBsNkcEVCpJWAJICrc7QwRNhxEoBQpE08gQHhjxECRZPHJFBqD+0+glCosTqgEIclHESGReVF0KrvyCEyLbl5XtSNAFIlJAJrc6LkAUmbGCABuNeTNBBHHSVxQtgJZSyriY7dABCFxQwws06JXpSQAAh+QQBBQDIACwAAAAAIAAgAIcAAAA4cKgqfr4ucrg0eLI0drQyfrI6dLA2eLIyeLYyerZakMAwdLA0drBwnsh+qtBAgrpmmsZ6qNCGsNSGrtKIsNRQir4weLYwdrSIrtAweLSKsNKIrtIydrYwdrYydrQydrIwdrIydrBWjr6OtNYydLYydLBWjsCSttZYjr5YjsBWkMJYkMBYkMJYkMRYksSSuNiUuNiUutqWuNagwN5snsxunshuoMqiwtyiwt6kwtyqxuB+qM5+qs6uyuKwzOKMstaQttacvtqiwNqmxN60zOK60ua0zuS+1OYyeLhimMh4ps6ErNBEhLxomshSjMCMstRUjsKcvNpunsqmxNx8qNCOstSevtqoxOCwzOS80ua2zuS+1OgwfLoyeLQwdrg4fLgydro+frhAgLhCgLg+gLrA1ug+fr5KhrxMhrxKhr6evtxKiL5MiL5OisBUjsDK3OxSjsJkmshqnsqCrNCErtLM3OxsnsrS4u4weLh6ps660OZ8ps56qM54ptB2pMzY5vDG2urW5PDa5vB0osxyosymwtzm7vY0eLREgrpWjLyWuNg4erZIhrxUjMA8frjK3Oo2eLQ2erZelMKKsNRkmsY4erRSir46fLY6erQ+fLZaksR0pM5cksJeksA+frbg6vLs8vj0+PrC1ujU5PDc6PLu9PjG2OpmmshsnMRGhLxqnMhGgrpilsRelMRglMBeksJqmsZomsZglsZGhLpMhrpCgrpCgrjU4u5UjL5QjMB2ps5kmMRSjL5OiLpCgrw2frY6fLjc5vA0erY0fLY0erRqnMpsnMYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/gCRCRxIEFiSBAgTJgRGsKHDgcQSYFBIMcGFBF0ePjRgEeGHDwqbQJBEMYDGgYgSfnAQaIsXhGXkyFlB8UKSkwouImRQSpSoTggbyYxSsUOxh4h0eiTiEwfCJzLZJFyxYliCDjcJDuiQgNGJhK98HoqUYJNMCAhX1KhBE6HJgQgRHTkkhECCBj1F2fCiRCaYBGzW1nCjEOLFSYcSb/n0YYbPIoxkKklgS/ALilkTIiCS+BCcNL58mkok08WjOWuVkKSILIxCEBk6D/I0KpSOAmyijFGy1snfBIgaNUng4cDB16lAJcZDgBHIhE/WivkAYRMnCRJ+I3zEYnqCDyNw/h2C8pyiqkQrbmBfr0bhFUCAAu3YYCOFk5QVEW5aj71Qi9UafGAGfATCl0h+CbWB3RKuDJdQBwHyYYQgBQIiBoJxnYAGfgpB6FEDtcTCAREkYJhQBDfMYoEtHHaglEeZxPKAXRgGU8GNN04gQQtXKYTIJIsEYocdEZgoxgQ44ihBRwlgMgESQ0ZZh4lPqGKBKzc8cKMTCjkR5ZA+/DFCKwg6IQMQtCQERhO/AXMBBHDYoQUFtYBggRFcPFBeAmAgAoQMMsDwxJ4eCIAMQiosAAJIZGTBBRdrnDDBDYhIQEMdaJAAqAyt7ClQFxMlxAgOjx7BCgo//HAJDTnkQAYEpxNsSkhKGigAV0JeoPCoFiMQsEOqmjzQ6ipdSbApGggRxBFCSzzKhSwfkJEqFgSc0GoMdiEyhQxLIHRGQ0lwRcmjeibQQqoofICIEK0ii1ATknSAyEPFdCAJHUzQeEOqeiD0R6t/dPjFSUlcVN4EqfKCUBvXljfvScgEIFFCCP+QRkIPTPBEAhok8C3EAx3kAZ9vfEXRyLaC7NABCF1QQAcw62ToSQEBACH5BAEFAM8ALAAAAAAgACAAhwAAADhwqCp+vi5yuDR4sjR2sjJ+sjp0sDJ4tjR4tFyQwDJ0rnKizICqzkCAumSayHakzICq0oCq0ICs0E6Kvoas0DB4tjB2tIaw1Iiw0jB4tIqw1DJ2tjB2tjJ2tDJ2sjB2slSMwIqy1Iqy1oyy1DJ0tjJ0sDB0sFaOvoyy1oy01o6y1FaOwpi82liOwFaQwlqQwlqSwpq83GiaxJ6+2mqcxqLA2mqcyGqcymyeyGyeym6eym6gynCgyHCgynCizKjE3HKiynqmzn6qzqjE3qjG4KrG4ISszoau0pi62Jq82qDA3KLC3LLM4rLK4rTM4oSs0ISu0jR8tmaYxnSizH6q0kSEvHSkzoKs0lCKwISu1FSOwlaOwJC01mqaxqDA2micyK7K4KDA3qLC3rLM5LTO5LbO5DB8ujJ4tDB2uLrQ5Dp8tjZ+tjx+tj5+tjJ4uDJ2ujh8uDp8uDx+uD5+uD6AuECAuD5+vsLY6kqGvEqIvlCMwEyIvlKMwMTY6M7e7mSYyGiayGicynSkzMDU6Mzc7NDg7n6q0DB4uHakztLi7qzI4N7o8sDW6JS42DR4tkaCuFSMvFSOwDZ6tkiEvFSMvjx8tk6IvDh6tJy+3Dh6tsze7JK01Dp6tt7q8uzy+F6UxGKYyGiYxtjk8Orw9u70+FqSxL7U6Mzc6tbk8Obu9vj6/FySwl6SwHqmzHikzGqaxGaWwmCUwl6SwkqGukaGvGCWxmSYxEKCukiGvGCWxEKCuMja6kyGumSYxmaYxFCKvk6KvNTi7kiEtkSCuFCMvlKKvjJ6trrS5jZ4skSCujh8tkSEujR6tjR6tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj+AJ8JHEiQzRsECBMmZEOwocOBUhBcUEgRgQUEZx4+NGARoQcPCQn0qLGGYgCNAxMk9JCjUROVCGStWvWEooU3KI9dRPgh1adPMBBWmNmkIgdnDxPs9GjjJw0EHoDMXJGwz55mCDjgJDiAA4I1IRK2+ukp2YdCM2sgzPLgQZ+EJwciTBCGURKVJnx+qrGg1ExICHK1faBHIcSLrBgpbuLGA6efYYbN/ETAwWAWFLcmTGZDMSM/eXr9VBVrJq81g009qvgMjsIPFTwrUoBM1ZJkJJqIMtXWVpy5VnAh6HDg4OsZoxQXIoAJJFQPFNrOQeDghQ4GDH4nXMOiDUgPkQr+McpQEaEVB3twYF9fS6ESQ4YIMclQA8UUmOVfrMeOY8skhBp4oAZ8BBryh3DlIZQHdjzEgCBCHAT4yhN/FGgIHQki9EgWueCXUIQeEdDLDFAssUGGCdlygykUOIAfB0t5hMkUQhCA4hoR5KjjFZh5lVACrHRxCh54+ILiHDomeUVHCMgRhRlERikBihRYQYEpYCSS4wMKPRAlkUQE4QIoCT6gAgZWJDQJLv8hwIYFDhBZRgO0fHAJGWYI4RxCcSSAgQoqjJDFnsMJ8AxCXLhQAEgOGGGGGS2EMMENCVzRggR5/AkoKIQKdMZE22Xy6CLEkFBEERS0IIMMdjgQAaCoKuywmgbHyPUjCY+WYQwBY5zahhCrTvFVIrC2hwBBHCFExaNmTOGBA6eKQcAWq6qgUgJgqMAAQnc09IZXSDyqJwIsnCqCB5M4smoeCbHJQQIPOcPBJBI0YCMCN5wKAUIMrOqDQhykgdIbF+0Zwam6IKTHqinsCS9KzwQgUUJYnMouQkJEsAcCGiDQLcQDHdQBAnHsERZFI9cKskMHIGSBBxzEvJOhKAUEACH5BAEFANIALAAAAAAgACAAhwAAADhwqCp+vi5yuDJ+sjR2sjJ4tjp0sDR4sjJ6tmCUwjJ0rjR2sHimzkCAumqcyoKs0nqmzoau0k6KvoSu1Iyy0jB4tjJ4sjB4tDJ2tjJ2tDB2tDJ2sjB2sjJ2sFSMvpC21jJ0tjJ0sFiQwJC22FiQwpK42FqQwFqQwlySwJS21lySwlySxF6Swl6Uwpq82py82G6eyJy82p6+2m6eyqDA3nCgyqLA3HCgzHKiyqjG3nSiynSizHakzHamzoCqzqrE3ICq0KrG3oKszqzG3oKs0KzI4KzI4q7I4Iiuzoyy1pi62KTC3qjG4LTM5LDK4Iiw0rjO4oqw0pC01DZ6tmaYxnim0ESEvISu0nyozoau1FKMvoqy1DB8ujJ4tDB2uDB2tlSOwFaQwpa62Gyeym6gyqTC3H6q0K7K4oaw1Ji62qjE3rbO5LjQ5LjQ5jJ4uDh8uDJ2urrQ5j6AuECAuD5+vkqIvLrS5r7S5kyIvlCMwMba6k6IvlSOwlKMwGicysja7Mrc7Nbk8DB4uHyo0MTY6tDg7t7o8n6q0q7I4jR4tEKCulKKvFaOvjh6tkiGvDZ+tj5+uEyGvDR4tjZ4tOTs9Dx8tjh6tMbY6Dh8tjp8tmCWxpS42GSayKLC3mSYyNLg7tbi7mKWxGCWxFCKvFCKul6UxHyq0ESCuOju9nqozkSEukaCuMTY6M7e7N7q8vD2+kqIvmSWxGiayGSWwl6UxkiEuOjw9vT2+v7+/kyGukqEuvz+/kaEvEqGumKYxmKWxmSYxGaYxGiYxEKAuPb4/ECCumqcyH6ozsDU5liOvlCKvjR8tjR6tDZ6tGaaxkaGvDR6tgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj+AKUJHEgQ0hsDCBMmhESwocOBzAxsUEjRgAUDXR4+JGCxooECMapoohhA40BFCTUck2MkYQtYsJ5UfGMywUWEHAxVqjQC4RCYRFJqQNjsoaKbCDXA2PnCwAUzMKUgRPBEhyOENAkOyGDA0ZaEKXYKosQBE8wqBjwAyZVLJsKSAxFS0SFIBcoCrnYOW5AKJisOSdjmAqEQ4kUUghILseSlwk4dtmBW8jBMcBQECrMmpCQjsSA8u3TtfCULZjJGuNiCukpRWhyFHH54DnSCzaEXl6AgkSWI7S1UCL1cWWTgy4GDCjUIM5S4UAHWBjRwuJGrmDINc/x0evCAikJNYSz+XXDKaI8gCR4R7FAwYRP391cUjgEEqM2MIsI+iELp0Yue99x1ood3BmCggRP0JQjIHsR5hNAj3P0hRoMIZWAgD2jsoSAgcziI0CQT9EKgQhYmVYAuVQTxAnoeIsRCJyXk4QB/BmSAVHCOyNIDjR7B0cCPQJKhR40KUVGCEmzccccvLVoC5JNkdGQAHGegoeSVWXgI4iJ2lPAJDj9uotAmVyp5gw0frODgJhScQSEVixAIiQUOuHGHEVn4woEkTRzRw1AJUaEIIhRQAMEEFH0hgDQIfdBIAQjR4ckRR4CwRRZVKEIDCQ30EkShFKAAKEICdTFRQo6MQSkTqEhQQw2sE5Bgggl0zGEFqLOghEECcSXkhQSUHkGKBi+8agkPs4oypQ2gxmcAQRwhZEOwomjgwKtqaODHrFoMpcgnFERpQB0NvcFVEJT2MF4Yr0qgARVKzPpIQotMkoEiDzWTARUNRMDfLK/mgBAZs4pb4RcmvXHRqIS86sKDs6ahEL4mSROARAk1XMO8CPEQAaIYjFsxQQd9YQAVevhRkcm8juzQAQhZoEEGNN+0qEkBAQAh+QQBBQDIACwAAAAAIAAgAIcAAAA4cKgqfr4ucrg0eLI0drAyfrI6dLA2eLIyeLY0eLRelMIydK5yoMp8ps4+gLpkmshyosp+qMx8qMx8qtB+qM5+qtCCqtBOiL6GrtIweLYwdrSIrtAweLRSjMCIstSKstQydrYydrQydrIwdrIydrCKstaMstQydLYydLBYjr6UuNhakL5YksRaksJaksRcksBcksKWuNiYutiYvNqcvNpomsakwtxqnMpsnMhunspuoMxwoMp2pMykwt52pM6kxN54pMymxN54ps6oxuCqxt6AqtCEqs6QttagvtqoxN6syOCArNCErtKuyuCuyuKwzOKwzOSyzOI2erZkmMhwoMx6qNBEhLx0osxQir5WjsCOtNZWkMJYkMKavNxmmsiQttiiwt6oxOCyzOS0zOK+1OgwfLoyeLQwdrgwdra+0ubA1ugyeLiUuNY4fLgydro8frg+frg+gLg+fr5GhrxKhrxKhr5SjL6+1OZMiL5MisDA1OZSjsLE2OhQisBUjsLO3u5onMq60ubI2urQ4O640OR0pMwweLjc6PJ4ptA0eLZCgLhQiLpWjL5YkMA4erZIhLo2frY6fLhIhrxOisCQtNaevto2eLQ4erQ8frbM3Oo6fLacvtzg6vLO3uw8fLZglsTW5PDo8Pbs8vhilsJclMRilMJOir5yosxEgrpIgrjG2Or2+Pz0+PpglsZelMRGhLpIhLxmlsJklsJKhLhimMZelMZkmMRglMRAgLhUjMBimMhSirxmmMQyerY0fLY0erREgrhCgro4fLY0erZEhLpAgLpAgroAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/gCRCRxIMBKbBAgTJoxEsKHDgb8SbFBIMYGGBGYePjRgsWICBTluSaIYQONABQlF2CAjJCEMUaKKUNTAxqSviwhHDEKESAtCCTBbIhQhIkEIYA8V4Bw6g+eKBCKSwMyAkECRG26M1iQ4IESCRx4SsuBJ6NKIPTBvJShxgxUrmQhLDkSowAcgJCgL7ETUi0EnmKlGHHHL6oRCiBe7AFosBM4ZDjxvqIKJaIQswlJQJtya8JKMxYAK1aHFMxQpmIIYjXKr6VFFZG8UjpAAuo8KJ6FkIMhAhJQnt51SJRT2IAGaAwcVipA1aHEZAphSjrDEapQKEXD8uIIAIWtCSR7g/hQVwasMoAseFTRYYKcU9/dXFCJZswbKjAq37oDS7DHLe+6u6KEIQh0ksAR9CK5RRi4eJXTFex48MCBCIRTYABFlJLgGHA0mlMcV/CVU4VAFQEKKAyug1yFCXNjyxyQP8BfCUgid8QgoEYRYkRtV9NjjDl9QYpRCCmiRwRNjjPHKipLs4KOPX3SUgCRDEJHklT10qEgei9DBRyk49NiCQqBcmWQNOdzRRYMvUPDDIglN8cAUCEWiwQNRjCFEEJCMUEcYQKBC0RQK/EABBVbUQREaAiCDkAe6EIDQA14AAQQIWfxABTE4fIDFFVYcSgEXRSUkkBkTJfQIEpZysogRrTTQkMcHJpggxwOoiAoBSh34MpdCTFjqQxYKrBBrJjrUuuQUOIgaXwIEcYQQDpYCsYAID8QKhgiU1GpBUYqAQkGUCczREBteWWFpA0V5EOu3U2RQKywJGaNICAo8BEwIU2DRg2a1xKoDQl/USi6FaJjEBo0J9BCrCwjR4S2RJgkUgEQJ/RDrJAnpYEgeCRRobsUDHYRGAlNgkEVFJ/tKskMHIKRBCDTPiFCjJgUEACH5BAEFAM0ALAAAAAAgACAAhwAAADhwqCp+vi5yuDR4sjR2sjJ+sjp0sDZ4sjJ4tjR4tGCUwjh6sjJ0rjR2sHikyoKs0ECAumicynymzIiw1E6KvoKu0pC22ISs0DB4tjB2tIiw0jB4tDJ2tjJ2tDJ2sjB2slSOwDJ0tjJ0sFiOvliQwpK01FqQwFiSwpS42FqSwlySwlySxF6Swl6Uwpq62F6UxJq82py82mycxpy+2m6eypy+3J6+2nCeyKDA3G6gyqLA3G6gzHCgynCgzHCizKLC3HKiyqTA2nKiznSiynSkzKTC3KTC3qbC3oCozKbE4KjG4IKq0KrG3oCs0qrG4KrI4KzI4LbO5Iqy1JK21pi62KC+2rTM4rjO5DR8tmiaxnSkzkiEvHqmzoiy1FCKvoSu0laOwFqOvpa62myeyp6+3HyozoCs0LDK4JC01JS21rbQ5o601jB8ujJ4tDB2uDB2tjZ+tpK42LjQ5jJ4uDx8uDJ2urzS6Dx+uD5+uECAuD5+uj6Auj5+vkyIvsba6lCMwFaQwlSOwlKMwFKOwGiayMja6tTi8DB4uHqozn6q0sbY6NTi7tjk8Him0K7I4DR4tnikzHakzEaCuFCKvFaOvjZ6tkqGvFKMvjp8tjx+tuDq9Dh6tDh6tjh8tjx8tmCWxoqw1GaayGSayLDK4uTs9F6UxmKUwnimztzm8O70+Ozy+PL2+sDW6M7e7ubu9vz8/mqcykaEvEiEuEiGvGKWxGKWwvj6/EqGukqIvmKYxmSWwk6IukyGvESCuGaYxE6IvEKCus7e7FSKvGaYxurw9kaEukSCujJ6tjZ4tESEvDR6tjR6tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj+AJsJHEgwDp0ECBMmjEOwocOBWRJoUEgxQYYEbR4+NGCxYgIFWmplohhA40AFCT0Qe7Qj4YlNm4xQzEDHJLKLCD20OnQoBMIJMFvm9JCgA7OHCnDmTMEzTQIPL2BCQEjASI5ORWsSHNAhgaUKCUnwNGTpAxaYtRJ8sKJKFZKEJQcihETjzxSUBXYeqjWiEUxfHpK0VUVBIcSLYf4ovqHJDQaeNybBPPRh1+AoKBNqTaiAiuI/pIzh4ulqAcwrlEq1XcSpYjM7Cj9E+nyHRBNXVBBAALLgT9tGvp46mPErwZsDBxV6qNVKsRQCrRNqeKHq1bAGYoSsgnXLmMJMgOr+EPVAScofMx4V4DhlIhWs9++JKJwyZ86TFF1qfXGRuaKHHfC9V4oMIyXAQQJH1KfgHGvo4VFCXbzHChq/EJBQBwfWkIMUC86Bx4MIIUDFAwwQpRCGOREwywKRsIEeiAgNgkIFsuDRXwdKJcRJCzX055ElEgQpJCh+FKWQAiFAoAQUULAAYyZCRglKRwlkUkQOTGYZBIiQcBGBLBWUAEqQgijEQpZMpqDFFyU8WMIWPESQkCV7WIJQHBnksQQUORBhzAdcxGBDDRRZooAPW2wxxCUUvSFAMwh9MYiFCeSRgg02gFFBD6AsI4oTNQSDaKIhmIiQQG1MNCcFmI4RQResF1xwiRMWWIAHHmQkugUMKHGAjFwKmYGpDb0oMEWsmcRSqwpeiaJrMKcOxBFChQy7ggd5xDqFB37U6ghRkKiwxZQJ9NEQHV0VgWkNRFUQKyoeWKJIrbIkFAEkHSjwEDMdWNJDD5nBEGshCOlSqy4nvmESHTkm4EOsbSYgi7dHmiRQABIl9EOs9SIUiw6MHmiuxQMd9IZXfoDVaAK/kuzQAQhl0MHMOCL0qEkBAQAh+QQBBQDMACwAAAAAIAAgAIcAAAA4cKgqfr4ucrgyfrI0drIyeLY6dLA0eLI0eLReksA4erIydLA0drBunsp2pMx8psxAgLpkmshwoMp6qM56qNB+qM6ErtJQirwweLgydrSGrtKIsNQyeLQweLSKsNQydrYwdrYwdrQydrIwdrJYkMCOtNQydLaQtNRYksSSuNhcksKUuNZcksSUuNiUutqWuNaavNpqmsacvNhonMqcvNpqnMievthqnMpsnMhsnsqevtqevtyewNygwNx0osqgwt6iwt50pM6kwt6uyuKAqs6ErtSMstSOtNaautiqxuCwyuKCrNKwzOKyzOKMsta+1OiOstI2erZkmMhsnsx4pMxEhLxwoMx+qs5OisAwfLoweLYydrowdrhWkMJaksSWuthonMh0pMyqxN6YutquyuC60ubA1Og6fLY2frYyeLg4fLg8fLg6frg8frg+frhAfrg+fr5Ihr5MiL7M3OxOiL5Oir5MisBUjMBUjsBSjsJYkMJakMK40ObI2urQ4O54ps5yoszY5vC0zuR+qtB4ptA0eLZGgrhYjrxaksKoxN44erZGhrxQisBKhr5uoMo0erY2eLSYutjc6PI4eLQ4fLY4erTm7vaoxuBglsRSirzU4u7k7vbq8PZilsJQir5clMRelMJglMD0+PpKiLzA1ujS4O7e6vLw9vrG2upyosp2ospGhLpKhrxIhLhomshmmshGhLxIhrpOiLpCgrpmmMZkmMZglsZclMZilMJCgrhilsRimMZelMZAgrpglMTk7PRSjMDe6PJGgrpWjL5UjL5IhrxSjL5EgroyerY0fLY0erQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/gCZCRxIMI0aAwgTJkxDsKHDgcoMiFBI0UAGA1oePiRgsaKBBLUyoaEYQOPABAk12MJUI2EJQYJ2UMyQwWSyiwg1mKFDBw/CKjBnpNRgAMSyhwlw5jTB84gBDSxgFkFYwEeMRUVrEhwAwoCUOQmJ8SyVQIMTmJkMMJhx6ZKPhCUHIpQCBsoGlAx20snE4A9MWhogtL20QSHEi3mgKI6BpkMRnjEOwaTDwNNgJSgTak2Y4IhiKEpYueLpZwVMIrMmtT2DlSIzLgpHPPg8qNgQPyakWOCh4ExbU7SeFpDhyUCIAwcVaghlRjGRAq1zwrh0ShMDRDc4jUJlRSGaLGiI/naYtQQKII8JcogysWmUe/cTFF5o0iSIiQeZMKzIXFHDjvfuncIYQh0YwAN9CDZBBBweJfSAe52M4Ql/IHhggA0xEJFgE2w0iFAkKPywAFEKVZhTAYes8MMHVXiYUCNeZGGFGxRaSBElK+SAgItSSODjj7jIUZRCCQRDQQ9BBLGHi2v86CQuHRmwxgRkJGllfA0aEssbVmThxS0+6qHQF1YmiUQtdfjkkR5U0PBGQlK4IQVCaWTwBhBBkOEAKyOwosILNFAkhSE0UEEFDrFQFIIAzCCUxScFIPTGEy+8QMgcOrQgxS0VhEFLoYZm4RozWkwE5wWVIgGHEBxwIEsFo7C60YYEhlKRgiEGeJCMXAo9UKkLpBhgRKtoSACrF171UmsECBHEEUJTVPpCCQa80SoTGjgC6xUkekFFC7jG0VAGXU1QqQ1EzdGqEB8JAWt3CLkBCQgJPLQMCFLgkENmLbQqAUKgwApKiVo9RBNFOLSaB0JWbEukSQIFIFFCOrSKTEIS0CCkheJCPNBFIXglhyMVhbyrxw4dgBC5ILSME6MmBQQAIfkEAQUAywAsAAAAACAAIACHAAAAOHCoKn6+LnK4Mn6yNHayMni2OnSwOHiyNHi0YJTCMHSwNHiyNnawNHawdKLKgKrSQoK6ZprGeKLKgqzQiLDSUIzAMHi2MHa0MHi0irDSMna2MHa2Mna0MnayMHayMnawirLWjLLWMnS2MnSwWJDAjLTWkLTUWJDClLbWWpDCXJDAWJLEWpLEXJLAXJLCXpTClrjWlrjYlrrYlrramLrYmLramLzamrrYcJ7ImrramrzYmrzamrzcnLzaosLecKLMeqbOpsTgfKbOqMTefKjQqMbggKrQrMjghq7SiLDUkrbWlLjYnL7apMLcts7ksMziuNDkhrDShrDUOHq2ZJjGcqLMRoa8aJzIdqTMhK7SVI7AMHy6Mni0MHa4VpDCkLbWcqDKsMrikLbYoMDcsszivtTovtTmMni4krbYwtjqOny4Mna6On64PH64Pn64QoC4RIC4QoK4Pn66PoC6QIC6Pn6+Soi+osLcUIq+TorAVo7CxNjq0ODuZJrIbp7IbJ7KbqDMeqTMcKDMdqTOMHi4utDkeKbOzt7s1OLuvNLk3ujyNHi2RoK4UozAOHy2Soi8VI7CNn62TIi+2OTw4OryNnq2OHq03OjyOny2PHy2YJbGZJjIUoy+YpjI7PL4XpTGXpTEdKLMSIa81uTwSIS6ytzq6PD24uz09vr8+Pr8bp7KSoa6aprGapzITIi8YpbEYJbETIa6ZprIRIK4Toi+UIq8YpjGQoK8ZpjEyNrqVoy8aJrIVIy+Mnq2NHy2NHq2Vo6+RoS6RoK6Soa8RIK6NHq0Nnq0RoS8RIS8Nni0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP4AlwkcSFASGgMIEyaURLChw4G/DGBQSNHABQNcHj4kYLGigQRVQlGhGEDjwAQJO2z6ISNhsD59eFC8gMakr4sIO5RRo8YRwgcwZ6REuMHYwwQ4c1bgmcRAhxMwgyAs4EPGyA01CQ7YYIDKpIS9eEZJ0AEJzFAGPMRYtMhHwpIDETJK8wQCSg9QeCrwoAtmhA6C2C6ioBDixS1PEjNx02UIzxRxYPLxoEDwD5QJsyZMUCHxkx+NSvE04wImEVmJ2BoaSXEZG4UFwnhG0qmJGSWWgtRYYYitqQhOC0iAZYDDgYMKO7yAkphIgUsKMZxYRCkPiV04MH06VUzhmklrOv4Y6CLLyJMsHhO0cqGhz6f373MohGDEiI8KVl68UoG5Ygcd8L1HSQqsZWCADfUlaIQQb3iU0APvoeIELP1tYKAETAihoBFuOIgQAxrkgIB4ClmYUwGNqLCKFqJ4OBURZ+wwwS4NLCDeBkklREUJvPTnUSOqBBlkKpRo0AFXm1lACA099ICCi6ykIqSQlHSAExWAjNHklq64GEEeWdSgSCVBQqHQF1s2WQEsd1jgoB5+bNJhBx1o8sIaCElygRs39AAGILR4IEwIJlRBkSXAbOLHosApxIEAyyA0SS2YuaGFCSYcMsosKFjSAhCb0OHJon7c0doyXEyUkCVFYKrEG6+BQADBFUBYYcUaa4BCaiQIZeBLXAoBgakIoxhQhKyPgGLrFgZYwgKpcyBEEEcIbYKpCcy6IWsQHVxhKxYkWuDHF4wYYEdDaHAFCKZViHeHrIAYwEggtjZqQBsGbJDAQ8ZsYMksEmCGgqybIISCrU8mtIEXJqGRowGzyOqTAbh8q9C+Ji0TgEQJRQyBvaB4gowBBp6b8UAHcdDsFcVSpPKvJzt0AEIXbGAzjghBalJAADs=)!important;background-color:#337ab7;border-color:#2e6da4}#toasty .toast.toasty-theme-bootstrap.toasty-type-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkQyQUI3Q0EzMjJCMTFFNUI4QjZEQkFEN0Q5RUExNzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkQyQUI3Q0IzMjJCMTFFNUI4QjZEQkFEN0Q5RUExNzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0QTNBMDVFQjMyMkExMUU1QjhCNkRCQUQ3RDlFQTE3MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0QTNBMDVFQzMyMkExMUU1QjhCNkRCQUQ3RDlFQTE3MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Po9jTrYAAAKTSURBVHja7Jq/SyNBFMfNuSYB0cbCUzmtTvwbbPwb7KPV/Rmnu5tYWR1XX6WFpYL2giBW/igUFCxEuMJeZMXg3Bt4kcmwiftm3kuG5R58mc0G3ptPZnfmzZtUlFIjZbBKWUC+CPqOQA3QLSjDtoH3+U2PiIBqoE2Vb5v4PWtMCYh6HwgTph4yiO5coopZwgnDCVElQJgw1ZBAIgcIEyYKBSRVfpaGAJIoHkuGCZIqXkuHAdIEvTODvKPfgYG0QG9Kxt7QvziIDvKqZO2VCuMCkRE7dQPawZZiGQWGOjtRIf6AZkCT2KZEH1nR2YwCQX2crkDfcpLJY4fHLPEFifBXbDs854c9fG45TBRt7EfkAqJzoNjjhT0CVXL87nn4jHvlZv2y2Nhz5jnH98L0Owo68fQb52XNvql4P3sArVi+F0HXTOlMvR9IjWEkOvYM+mH5XwU9MfmPzZ2mPexcEB3btkB+Mqc1Mfa7C6QhsELvg8aMGL8FYuh+d1VRNgRqG1OgSbyugeYFYmzY5aAFgSAa4iteVw0oTluwQR6FQKrGiEwIxHi0K41roB3mIC+gM9Bf0AxoGTTOHGMdtMtVQBiWfRQuJNcRaeu5jnCv7GbCd++YeDqv7NwwB6DvoGlsDyQgimS/PjA6p1qyfC555loJNfvl2I+c5vxydbzv8ng670fs+hV1h3gJmrX8zOF96g7x03oXtRhH2W+/4Myi349xbLeJo5sVLdoNoopyAfqFbRBVlFLVtcwCQlsIoo3+B1b7bQnVflvqfzU+DBivwx6uE6umJ0RTBXSGmHqMRDBniJ3cLHWACOpU18ylUgJEkOfspfrnQ5GdZtfOLnSQESzM6eLZHaYcd/h5TCJeaf6v9U+AAQAvyHBRYhRQ4wAAAABJRU5ErkJggg==)!important;background-color:#d9534f;border-color:#d43f3a}#toasty .toast.toasty-theme-bootstrap.toasty-type-success{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkQyQUI3Q0UzMjJCMTFFNUI4QjZEQkFEN0Q5RUExNzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkQyQUI3Q0YzMjJCMTFFNUI4QjZEQkFEN0Q5RUExNzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyRDJBQjdDQzMyMkIxMUU1QjhCNkRCQUQ3RDlFQTE3MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyRDJBQjdDRDMyMkIxMUU1QjhCNkRCQUQ3RDlFQTE3MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvQVuMwAAAORSURBVHja7JpNaBNBFMebNsZacih+FFFsrB4qVIw9lByEWNtCC/VSRS14UjSx1V4UvbUKFaFUD178OniPB28KgsYeFBVqRFDQgx9paE1bNVKKta3N+h94hTWZ3ezOTiYh9MEPwmZ39v2TmTdv3oxL07SyUjDXipBsW0NsA37gAx7gpe9nwQKIg7fgM5gjCi6EOboZNIEDoFPneC5jwh6A++Al+AYWVQtxg3pwBPSBaoc/6Di4Q6I+gL8qhGwBx0EvqJHc1afADXAXJGw9yYTYoBVEtfxblN5l2Tc7InrApKbO2LtCMoV4wGUwr6m3OTAAVjsV4iIRS1rhLA36nQo5Rb9KoW0WnDTz1SxqtYB7YF2RTN4/wSEQtRO1asGIVnw2Qr5l+VzO0VYBjoFgEaZUQZqEXVYmxAbwGGxU5Nw8eEqT6y7KGswsCdrAe7Ou5QaDirvLVYqO5fR5ysIzl8hXw6i1FUwrFDEK6jJ86AAzOZ6LA5+REPardCsU8QO0cwZuBfhq4flu8jlrsLO1RJfCgcsSw0ec6+doLZPLusjnrDHiBSlF/8YbgzDqB78stpEin7O6VpMiEWwwt3BEsMH7zGZbAV7X8ivoTmype9Ngdr4A9thsr275g16IT4GQGLjGuc4EnBZor54nxKMgVzoLZjjr/kGwSaDNKp4Qr6CDabCU4x5WVLgOXnC+uwKaBd/t5QkRsRQ4Q10jZnLfKBjmXN8PjvJyJ9umixpDAhNaT0bojHHuY+G0kROlaiRk2EO88Gsnx1oEfRzndoPXGfeGDULtsIRQfpEn5ISNBtj6/aDBWqaRcihmD/VphI52i8mhlTTF8YSYAEETMUxEg0GXei5pcg3whIikKOOg2UBMZR67lGmKUgUiAg2OgX0W608dVEiQYRHyWWoaH7cgZj34KDFn+y+N5y2svgs2nDBIBpfXGLckijBdWMlY6hqNGdalFiQKybnUZewESQcvmQB7de1Vgy8SRSTJx5yVRjcpTjt4GetmvaBTcn2M+XSeNzeVTIHOrGTaSiXTtUVUMj0Mnohs9IQkxn2nReyQ0/2RfofjpSi2Fcpok2WgQNsL0jZ69IQlZax2qi3hfOwhMtoURbMRepdl30S2p2t129MbJEemaVoSR8CYqgMDO+i0Q1iwAqK3CXCbDgy8K8QRjlUkIuDwCMcrEqP8CIdRjakSbLd4qOYT+AN+rxxzKkUh/wQYAIxbfwhIUivlAAAAAElFTkSuQmCC)!important;background-color:#5cb85c;border-color:#4cae4c}#toasty .toast.toasty-theme-bootstrap.toasty-type-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkQyQUI3RDIzMjJCMTFFNUI4QjZEQkFEN0Q5RUExNzAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkQyQUI3RDMzMjJCMTFFNUI4QjZEQkFEN0Q5RUExNzAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyRDJBQjdEMDMyMkIxMUU1QjhCNkRCQUQ3RDlFQTE3MCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyRDJBQjdEMTMyMkIxMUU1QjhCNkRCQUQ3RDlFQTE3MCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhxHKhwAAAN7SURBVHja7JrfS1RBFMf37q7mj6SySMWMMqnQLEsKMg2yH4SC2g+wrKcIg7SX3ouiP6BfEFRPEdRLFFlBIEVQvfcgFrJBLxFBEWG9mHb7Hjgrl+vMzr13Zuyu+IUP7M7Pc+7MnJm5u47ruom5oGRijmjOOJK22PYScBrs5u8vwA3ww0ZnjqU1sgg8Ba2+9NegE4znw9QqBg8FTpDawF0uE3tHBkFLjvz9XCbWU2sZT5/1inIfeHS+xXVELoK6AOXquGwsp9ZGcDhgJExz2U1xc6QEXADLQ9ShsudMbQGmHDkE9kSoR3tMd1wcoSd7CpRFqLsYnA05ktYcOQGac+T/ZmTawm381/BL0ecR2CDI+wyug4/8fQ04A6oFZUfAAZCJbAk5osFVMOmK1SMo3yMpS21c07FFx4m94LvEsFcgLahDaS8ldb6AnVHtibpGaGGfBOWS/PuyqQyeSPIqNYJGZEeO8ClWJnIwJdkIq3LU6+a2Z8WRGtAHSnOUWQcKBOkphSOl3HbNbDjSpzjdkupBoSCd0tYq6rZwH1aj1jaQcdWaAJWC+hWcp1KG+7Ky2OlpHgW1AcrStFohuTkWBKhfy30V2phaHWCAI08QrfK1T58bg27UoB+0m3akhsNtQQjH23xPlCJWU8gT9WDQhZ8M+HT2KcKtSKt97ac4LYw6ue+kCUfqeUqFVa3vrpHmy1dYDXA413KEptIxsDmCAQ2+TTElCQAqUd8HlRcwRVhrA+NudFV72irXaOcX2xIp/JbxsC7UOOZnFzyN7EqNdkrZlrKwr0xpGuwCvZr3nQ7PvtOo2RbZcg88A1NBL1YV4HnIcDkbescv+L4GGRGHb2smnHgDPnk2yFbN9prYttszRkWwcBr4kqOry6DK0y59vmmgXbKtTnVDdAx1NgKKBQ9pAefp6ooqam0Hxw1MqTvgjyB9ivN01e+/SngdoVf9l/iMo6u05HDpGHqzmLW12O+Iw9fMdkPRpVdy1U0ZCOlZtbPNjnexl4BR16xu8ZrI9rGU00xqlG2f3ke6wGMLcf8teM9PjQ6MWy30QaMylJ2vzZY2sB2MTZHtQ9k1UpTIXxV5F/tYHjsy5nXkARjOQyeG2fZpR35yWDyfsPAbuAWNs629bPuM02+a7w+F/DMAnYL/xsT4JJ966WeKCWZSdYzPO83/O2jeEUv6J8AAuUNANq3q2uMAAAAASUVORK5CYII=)!important;background-color:#f0ad4e;border-color:#eea236}@-webkit-keyframes toasty-shake{0%{-webkit-transform:translate(2px,1px) rotate(0);transform:translate(2px,1px) rotate(0)}10%{-webkit-transform:translate(-1px,-2px) rotate(-1deg);transform:translate(-1px,-2px) rotate(-1deg)}20%{-webkit-transform:translate(-3px,0) rotate(1deg);transform:translate(-3px,0) rotate(1deg)}30%{-webkit-transform:translate(0,2px) rotate(0);transform:translate(0,2px) rotate(0)}40%{-webkit-transform:translate(1px,-1px) rotate(1deg);transform:translate(1px,-1px) rotate(1deg)}50%{-webkit-transform:translate(-1px,2px) rotate(-1deg);transform:translate(-1px,2px) rotate(-1deg)}60%{-webkit-transform:translate(-3px,1px) rotate(0);transform:translate(-3px,1px) rotate(0)}70%{-webkit-transform:translate(2px,1px) rotate(-1deg);transform:translate(2px,1px) rotate(-1deg)}80%{-webkit-transform:translate(-1px,-1px) rotate(1deg);transform:translate(-1px,-1px) rotate(1deg)}90%{-webkit-transform:translate(2px,2px) rotate(0);transform:translate(2px,2px) rotate(0)}100%{-webkit-transform:translate(1px,-2px) rotate(-1deg);transform:translate(1px,-2px) rotate(-1deg)}}@keyframes toasty-shake{0%{-webkit-transform:translate(2px,1px) rotate(0);transform:translate(2px,1px) rotate(0)}10%{-webkit-transform:translate(-1px,-2px) rotate(-1deg);transform:translate(-1px,-2px) rotate(-1deg)}20%{-webkit-transform:translate(-3px,0) rotate(1deg);transform:translate(-3px,0) rotate(1deg)}30%{-webkit-transform:translate(0,2px) rotate(0);transform:translate(0,2px) rotate(0)}40%{-webkit-transform:translate(1px,-1px) rotate(1deg);transform:translate(1px,-1px) rotate(1deg)}50%{-webkit-transform:translate(-1px,2px) rotate(-1deg);transform:translate(-1px,2px) rotate(-1deg)}60%{-webkit-transform:translate(-3px,1px) rotate(0);transform:translate(-3px,1px) rotate(0)}70%{-webkit-transform:translate(2px,1px) rotate(-1deg);transform:translate(2px,1px) rotate(-1deg)}80%{-webkit-transform:translate(-1px,-1px) rotate(1deg);transform:translate(-1px,-1px) rotate(1deg)}90%{-webkit-transform:translate(2px,2px) rotate(0);transform:translate(2px,2px) rotate(0)}100%{-webkit-transform:translate(1px,-2px) rotate(-1deg);transform:translate(1px,-2px) rotate(-1deg)}}#toasty{position:fixed;z-index:999999}#toasty .close-button:focus{outline:0}#toasty.toasty-position-top-left{top:12px;left:12px}#toasty.toasty-position-top-right{top:12px;right:12px}#toasty.toasty-position-bottom-right{bottom:12px;right:12px}#toasty.toasty-position-bottom-left{bottom:12px;left:12px}#toasty.toasty-position-top-center{top:12px;left:50%;-webkit-transform:translate(-50%,0);transform:translate(-50%,0)}#toasty.toasty-position-bottom-center{bottom:12px;left:50%;-webkit-transform:translate(-50%,0);transform:translate(-50%,0)}#toasty .toast{cursor:pointer;margin:0 0 6px;padding:0;width:285px;height:65px;display:table;background-size:24px 24px;background-position:15px center;background-repeat:no-repeat;box-shadow:0 0 5px 0 rgba(0,0,0,.25);opacity:.9;position:relative}#toasty .toast.toasty-shake{-webkit-animation-name:toasty-shake;animation-name:toasty-shake;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}#toasty .toast.toasty-shake:hover{-webkit-animation-play-state:paused;animation-play-state:paused}#toasty .toast .close-button{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;position:absolute;right:10px;top:3px;opacity:.5}#toasty .toast .close-button:focus,#toasty .toast .close-button:hover{text-decoration:none;cursor:pointer;opacity:1}#toasty .toast .toast-text{padding:5px 20px 5px 60px;display:table-cell;vertical-align:middle}#toasty .toast .toast-text .toast-title{font-weight:700}#toasty .toast .toast-text a:hover,#toasty .toast .toast-text label:hover{text-decoration:none}.mdp-animate-next{opacity:0;transform:translate3d(50%,0,1px)}.mdp-animate-next-remove{transition:all .5s cubic-bezier(.35,0,.25,1);opacity:0;transform:translate3d(50%,0,1px)}.mdp-animate-next-remove-active{opacity:1;transform:translate3d(0,0,1px)}.mdp-animate-prev{opacity:0;transform:translate3d(-50%,0,1px)}.mdp-animate-prev-remove{transition:all .3s cubic-bezier(.35,0,.25,1);opacity:0;transform:translate3d(-50%,0,1px)}.mdp-animate-prev-remove-active{opacity:1;transform:translate3d(0,0,1px)}@keyframes mdp-animation-bounce{from{opacity:0;transform:scale(.95)}70%{opacity:1;transform:scale(1.05)}to{transform:scale(1)}}.mdp-animation-zoom.ng-enter{transition:all .3s cubic-bezier(.35,0,.25,1);animation-duration:.3s;animation-name:mdp-animation-bounce}.mdp-datepicker{max-height:initial;min-width:234px}.mdp-datepicker *{outline:0}.mdp-datepicker .md-actions{width:100%;padding:0 5px}.mdp-calendar-week-days{font-size:.75rem;opacity:.6}.mdp-calendar-week-days>*{width:32px;height:32px;line-height:32px;margin:0 5px;padding:0;min-width:0;min-height:0;box-shadow:none!important;background-color:transparent}.mdp-calendar-days{font-size:1rem;max-width:100%}.mdp-calendar-days .md-button,.mdp-calendar-days .mdp-day-placeholder{width:32px;height:32px;margin:0 5px}.mdp-calendar-days .md-button{cursor:pointer;border-radius:50%;font-size:12px;width:32px;height:32px;line-height:32px;padding:0;min-width:0;min-height:0;box-shadow:none!important;background-color:transparent}.mdp-calendar-days .md-button[disabled]:not(.md-accent){background-color:transparent!important}.mdp-calendar-monthyear{font-size:.8125rem;font-weight:700;line-height:32px;min-height:32px}.mdp-datepicker-date,.mdp-datepicker-day,.mdp-datepicker-dow,.mdp-datepicker-month{font-size:1.8rem;opacity:.6}.mdp-datepicker-date:not(.active),.mdp-datepicker-day:not(.active),.mdp-datepicker-dow:not(.active),.mdp-datepicker-month:not(.active){cursor:pointer}.mdp-datepicker-date.active,.mdp-datepicker-date:hover,.mdp-datepicker-day.active,.mdp-datepicker-day:hover,.mdp-datepicker-dow.active,.mdp-datepicker-dow:hover,.mdp-datepicker-month.active,.mdp-datepicker-month:hover{opacity:1}.mdp-datepicker-year{font-size:.9rem;opacity:.6;padding:0;margin:0}.mdp-datepicker-year:not(.active){cursor:pointer}.mdp-datepicker-year.active,.mdp-datepicker-year:hover{opacity:1}.mdp-datepicker-select-year{height:232px}.mdp-datepicker-select-year .repeated-year{text-align:center}.mdp-datepicker-select-year .repeated-year .md-button{width:100%;margin:0;border-radius:0;padding:0;font-size:1rem;line-height:42px}.mdp-datepicker-select-year .repeated-year .md-button.current{font-size:1.8rem;line-height:42px}.mdp-datepicker-select-year .md-virtual-repeat-container,.mdp-datepicker-select-year .md-virtual-repeat-offsetter,.mdp-datepicker-select-year .md-virtual-repeat-scroller{height:100%;width:100%}mdp-date-picker>md-input-container.md-has-icon{padding-left:40px}mdp-date-picker .md-button.md-icon-button{margin:18px 0 0 0}.mdp-datepicker:not(.portrait) .mdp-datepicker-select-year{width:309px}.mdp-datepicker:not(.portrait) .mdp-calendar{margin-right:5px;width:294px;margin-left:10px}.mdp-datepicker:not(.portrait) .mdp-datepicker-date-wrapper{width:150px}.mdp-datepicker:not(.portrait) .mdp-datepicker-dow{width:100%;display:block}.mdp-datepicker:not(.portrait) .mdp-calendar-days>*,.mdp-datepicker:not(.portrait) .mdp-calendar-week-days>*{width:42px}.mdp-datepicker .mdp-datepicker-date-wrapper{padding:16px 35px 16px 16px}.mdp-datepicker md-dialog-content{overflow:hidden;padding:0}.mdp-datepicker md-dialog-content .mdp-calendar{width:294px;overflow-x:hidden}.mdp-datepicker.portrait{max-width:234px}.mdp-datepicker.portrait .mdp-calendar{text-align:center;width:100%}.mdp-datepicker.portrait .mdp-datepicker-select-year{height:252px}.mdp-datepicker.portrait md-dialog-content>*{width:100%}.mdp-datepicker.portrait .md-actions,.mdp-datepicker.portrait .mdp-calendar-days,.mdp-datepicker.portrait .mdp-calendar-week-days{padding:0 5px}.mdp-datepicker.portrait .md-actions{margin-top:20px}.mdp-datepicker.portrait .mdp-calendar-days>*,.mdp-datepicker.portrait .mdp-calendar-week-days>*{width:32px}mdp-calendar{display:block}.mdp-calendar-week-days{width:100%}.mdp-calendar-week-days>*{margin:0}.mdp-calendar-days .md-button,.mdp-calendar-days .mdp-day-placeholder{margin:0}.mdp-clock{width:200px;height:200px;border-radius:50%!important;cursor:pointer;padding:24px;background:#ededed;box-shadow:none!important}.mdp-clock .md-button{box-shadow:none!important;background-color:transparent;display:block;position:absolute;min-height:32px;width:32px;height:32px;font-size:12px;line-height:32px;margin:0;padding:0;transform:translate(-50%,-50%)}.mdp-clock .mdp-clock-container{width:100%;height:100%;position:relative;display:block}.mdp-clock .mdp-pointer{min-height:0;width:1px;height:50%;position:absolute;left:0;right:0;bottom:0;margin:0 auto;transform-origin:top center;z-index:0;pointer-events:none}.mdp-clock .mdp-clock-center{min-height:0;height:6px;width:6px;position:absolute;left:0;right:0;top:0;bottom:0;margin:auto;border-radius:50%}.mdp-clock .md-button.mdp-clock-selected{position:absolute;border-radius:50%;width:8px;height:8px;bottom:-8px;left:0;min-width:0;min-height:0;pointer-events:none}.mdp-timepicker .mdp-clock-switch-container{padding:20px;width:309px}.mdp-timepicker .mdp-timepicker-time{padding:15px}.mdp-timepicker .mdp-timepicker-selected-time{font-size:3rem}.mdp-timepicker:not(.portrait) .mdp-timepicker-time{width:138px}.mdp-timepicker.portrait .mdp-timepicker-selected-time{font-size:4rem;margin-right:1.5rem}mdp-time-picker md-input-container.md-has-icon{padding-left:40px}mdp-time-picker .md-button.md-icon-button{margin:18px 0 0 0}.mdp-timepicker-selected-ampm>span,.mdp-timepicker-selected-time>span{outline:0;opacity:.6}.mdp-timepicker-selected-ampm>span:not(.active),.mdp-timepicker-selected-time>span:not(.active){cursor:pointer}.mdp-timepicker-selected-ampm>span.active,.mdp-timepicker-selected-time>span.active{opacity:1}.mdp-clock-deg0{top:0;left:50%}.mdp-clock-deg30{top:6.69872981%;left:75%}.mdp-clock-deg60{top:25%;left:93.30127019%}.mdp-clock-deg90{top:50%;left:100%}.mdp-clock-deg120{top:75%;left:93.30127019%}.mdp-clock-deg150{top:93.30127019%;left:75%}.mdp-clock-deg180{top:100%;left:50%}.mdp-clock-deg210{top:93.30127019%;left:25%}.mdp-clock-deg240{top:75%;left:6.69872981%}.mdp-clock-deg270{top:50%;left:0}.mdp-clock-deg300{top:25%;left:6.69872981%}.mdp-clock-deg330{top:6.69872981%;left:25%}.mdp-clock-deg360{top:0;left:50%}.jstree-children,.jstree-container-ul,.jstree-node{display:block;margin:0;padding:0;list-style-type:none;list-style-image:none}.jstree-node{white-space:nowrap}.jstree-anchor{display:inline-block;color:#000;white-space:nowrap;padding:0 4px 0 1px;margin:0;vertical-align:top}.jstree-anchor:focus{outline:0}.jstree-anchor,.jstree-anchor:active,.jstree-anchor:hover,.jstree-anchor:link,.jstree-anchor:visited{text-decoration:none;color:inherit}.jstree-icon{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-icon:empty{display:inline-block;text-decoration:none;margin:0;padding:0;vertical-align:top;text-align:center}.jstree-ocl{cursor:pointer}.jstree-leaf>.jstree-ocl{cursor:default}.jstree .jstree-open>.jstree-children{display:block}.jstree .jstree-closed>.jstree-children,.jstree .jstree-leaf>.jstree-children{display:none}.jstree-anchor>.jstree-themeicon{margin-right:2px}.jstree-anchor>.jstree-themeicon-hidden,.jstree-no-icons .jstree-themeicon{display:none}.jstree-hidden,.jstree-node.jstree-hidden{display:none}.jstree-rtl .jstree-anchor{padding:0 1px 0 4px}.jstree-rtl .jstree-anchor>.jstree-themeicon{margin-left:2px;margin-right:0}.jstree-rtl .jstree-node{margin-left:0}.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-wholerow-ul{position:relative;display:inline-block;min-width:100%}.jstree-wholerow-ul .jstree-leaf>.jstree-ocl{cursor:pointer}.jstree-wholerow-ul .jstree-anchor,.jstree-wholerow-ul .jstree-icon{position:relative}.jstree-wholerow-ul .jstree-wholerow{width:100%;cursor:pointer;position:absolute;left:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.jstree-contextmenu .jstree-anchor{-webkit-user-select:none;-webkit-touch-callout:none}.vakata-context{display:none}.vakata-context,.vakata-context ul{margin:0;padding:2px;position:absolute;background:#f5f5f5;border:1px solid #979797;box-shadow:2px 2px 2px #999}.vakata-context ul{list-style:none;left:100%;margin-top:-2.7em;margin-left:-4px}.vakata-context .vakata-context-right ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context li{list-style:none}.vakata-context li>a{display:block;padding:0 2em 0 2em;text-decoration:none;width:auto;color:#000;white-space:nowrap;line-height:2.4em;text-shadow:1px 1px 0 #fff;border-radius:1px}.vakata-context li>a:hover{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAIORI4JlrqN1oMSnmmZDQUAOw==);background-position:right center;background-repeat:no-repeat}.vakata-context li>a:focus{outline:0}.vakata-context .vakata-context-hover>a{position:relative;background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.vakata-context .vakata-context-separator>a,.vakata-context .vakata-context-separator>a:hover{background:#fff;border:0;border-top:1px solid #e2e3e3;height:1px;min-height:1px;max-height:1px;padding:0;margin:0 0 0 2.4em;border-left:1px solid #e0e0e0;text-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;border-radius:0}.vakata-context .vakata-contextmenu-disabled a,.vakata-context .vakata-contextmenu-disabled a:hover{color:silver;background-color:transparent;border:0;box-shadow:0 0 0}.vakata-context .vakata-contextmenu-disabled>a>i{filter:grayscale(100%)}.vakata-context li>a>i{text-decoration:none;display:inline-block;width:2.4em;height:2.4em;background:0 0;margin:0 0 0 -2em;vertical-align:top;text-align:center;line-height:2.4em}.vakata-context li>a>i:empty{width:2.4em;line-height:2.4em}.vakata-context li>a .vakata-contextmenu-sep{display:inline-block;width:1px;height:2.4em;background:#fff;margin:0 .5em 0 0;border-left:1px solid #e2e3e3}.vakata-context .vakata-contextmenu-shortcut{font-size:.8em;color:silver;opacity:.5;display:none}.vakata-context-rtl ul{left:auto;right:100%;margin-left:auto;margin-right:-4px}.vakata-context-rtl li>a.vakata-context-parent{background-image:url(data:image/gif;base64,R0lGODlhCwAHAIAAACgoKP///yH5BAEAAAEALAAAAAALAAcAAAINjI+AC7rWHIsPtmoxLAA7);background-position:left center;background-repeat:no-repeat}.vakata-context-rtl .vakata-context-separator>a{margin:0 2.4em 0 0;border-left:0;border-right:1px solid #e2e3e3}.vakata-context-rtl .vakata-context-left ul{right:auto;left:100%;margin-left:-4px;margin-right:auto}.vakata-context-rtl li>a>i{margin:0 -2em 0 0}.vakata-context-rtl li>a .vakata-contextmenu-sep{margin:0 0 0 .5em;border-left-color:#fff;background:#e2e3e3}#jstree-marker{position:absolute;top:0;left:0;margin:-5px 0 0 0;padding:0;border-right:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid;width:0;height:0;font-size:0;line-height:0}#jstree-dnd{line-height:16px;margin:0;padding:4px}#jstree-dnd .jstree-copy,#jstree-dnd .jstree-icon{display:inline-block;text-decoration:none;margin:0 2px 0 0;padding:0;width:16px;height:16px}#jstree-dnd .jstree-ok{background:green}#jstree-dnd .jstree-er{background:red}#jstree-dnd .jstree-copy{margin:0 2px 0 2px}.jstree-default .jstree-icon,.jstree-default .jstree-node{background-repeat:no-repeat;background-color:transparent}.jstree-default .jstree-anchor,.jstree-default .jstree-animated,.jstree-default .jstree-wholerow{transition:background-color .15s,box-shadow .15s}.jstree-default .jstree-hovered{background:#e7f4f9;border-radius:2px;box-shadow:inset 0 0 1px #ccc}.jstree-default .jstree-context{background:#e7f4f9;border-radius:2px;box-shadow:inset 0 0 1px #ccc}.jstree-default .jstree-clicked{background:#beebff;border-radius:2px;box-shadow:inset 0 0 1px #999}.jstree-default .jstree-no-icons .jstree-anchor>.jstree-themeicon{display:none}.jstree-default .jstree-disabled{background:0 0;color:#666}.jstree-default .jstree-disabled.jstree-hovered{background:0 0;box-shadow:none}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-disabled>.jstree-icon{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default .jstree-search{font-style:italic;color:#8b0000;font-weight:700}.jstree-default .jstree-no-checkboxes .jstree-checkbox{display:none!important}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked{background:0 0;box-shadow:none}.jstree-default.jstree-checkbox-no-clicked .jstree-clicked.jstree-hovered{background:#e7f4f9}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked{background:0 0}.jstree-default.jstree-checkbox-no-clicked>.jstree-wholerow-ul .jstree-wholerow-clicked.jstree-wholerow-hovered{background:#e7f4f9}.jstree-default>.jstree-striped{min-width:100%;display:inline-block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAMAAAB/qqA+AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMNAMM9s3UAAAAXSURBVHjajcEBAQAAAIKg/H/aCQZ70AUBjAATb6YPDgAAAABJRU5ErkJggg==) left top repeat}.jstree-default>.jstree-wholerow-ul .jstree-clicked,.jstree-default>.jstree-wholerow-ul .jstree-hovered{background:0 0;box-shadow:none;border-radius:0}.jstree-default .jstree-wholerow{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.jstree-default .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default .jstree-wholerow-clicked{background:#beebff;background:-webkit-linear-gradient(top,#beebff 0,#a8e4ff 100%);background:linear-gradient(to bottom,#beebff 0,#a8e4ff 100%)}.jstree-default .jstree-node{min-height:24px;line-height:24px;margin-left:24px;min-width:24px}.jstree-default .jstree-anchor{line-height:24px;height:24px}.jstree-default .jstree-icon{width:24px;height:24px;line-height:24px}.jstree-default .jstree-icon:empty{width:24px;height:24px;line-height:24px}.jstree-default.jstree-rtl .jstree-node{margin-right:24px}.jstree-default .jstree-wholerow{height:24px}.jstree-default .jstree-icon,.jstree-default .jstree-node{background-image:url(32px.png)}.jstree-default .jstree-node{background-position:-292px -4px;background-repeat:repeat-y}.jstree-default .jstree-last{background:0 0}.jstree-default .jstree-open>.jstree-ocl{background-position:-132px -4px}.jstree-default .jstree-closed>.jstree-ocl{background-position:-100px -4px}.jstree-default .jstree-leaf>.jstree-ocl{background-position:-68px -4px}.jstree-default .jstree-themeicon{background-position:-260px -4px}.jstree-default>.jstree-no-dots .jstree-leaf>.jstree-ocl,.jstree-default>.jstree-no-dots .jstree-node{background:0 0}.jstree-default>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -4px}.jstree-default>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -4px}.jstree-default .jstree-disabled{background:0 0}.jstree-default .jstree-disabled.jstree-hovered{background:0 0}.jstree-default .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default .jstree-checkbox{background-position:-164px -4px}.jstree-default .jstree-checkbox:hover{background-position:-164px -36px}.jstree-default .jstree-checked>.jstree-checkbox,.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox{background-position:-228px -4px}.jstree-default .jstree-checked>.jstree-checkbox:hover,.jstree-default.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover{background-position:-228px -36px}.jstree-default .jstree-anchor>.jstree-undetermined{background-position:-196px -4px}.jstree-default .jstree-anchor>.jstree-undetermined:hover{background-position:-196px -36px}.jstree-default .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default>.jstree-striped{background-size:auto 48px}.jstree-default.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default.jstree-rtl .jstree-last{background:0 0}.jstree-default.jstree-rtl .jstree-open>.jstree-ocl{background-position:-132px -36px}.jstree-default.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-100px -36px}.jstree-default.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-68px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl,.jstree-default.jstree-rtl>.jstree-no-dots .jstree-node{background:0 0}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-36px -36px}.jstree-default.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-4px -36px}.jstree-default .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default .jstree-file{background:url(32px.png) -100px -68px no-repeat}.jstree-default .jstree-folder{background:url(32px.png) -260px -4px no-repeat}.jstree-default>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default{line-height:24px;padding:0 4px}#jstree-dnd.jstree-default .jstree-er,#jstree-dnd.jstree-default .jstree-ok{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default i{background:0 0;width:24px;height:24px;line-height:24px}#jstree-dnd.jstree-default .jstree-ok{background-position:-4px -68px}#jstree-dnd.jstree-default .jstree-er{background-position:-36px -68px}.jstree-default .jstree-ellipsis{overflow:hidden}.jstree-default .jstree-ellipsis .jstree-anchor{width:calc(100% - 29px);text-overflow:ellipsis;overflow:hidden}.jstree-default.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==)}.jstree-default.jstree-rtl .jstree-last{background:0 0}.jstree-default-small .jstree-node{min-height:18px;line-height:18px;margin-left:18px;min-width:18px}.jstree-default-small .jstree-anchor{line-height:18px;height:18px}.jstree-default-small .jstree-icon{width:18px;height:18px;line-height:18px}.jstree-default-small .jstree-icon:empty{width:18px;height:18px;line-height:18px}.jstree-default-small.jstree-rtl .jstree-node{margin-right:18px}.jstree-default-small .jstree-wholerow{height:18px}.jstree-default-small .jstree-icon,.jstree-default-small .jstree-node{background-image:url(32px.png)}.jstree-default-small .jstree-node{background-position:-295px -7px;background-repeat:repeat-y}.jstree-default-small .jstree-last{background:0 0}.jstree-default-small .jstree-open>.jstree-ocl{background-position:-135px -7px}.jstree-default-small .jstree-closed>.jstree-ocl{background-position:-103px -7px}.jstree-default-small .jstree-leaf>.jstree-ocl{background-position:-71px -7px}.jstree-default-small .jstree-themeicon{background-position:-263px -7px}.jstree-default-small>.jstree-no-dots .jstree-leaf>.jstree-ocl,.jstree-default-small>.jstree-no-dots .jstree-node{background:0 0}.jstree-default-small>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -7px}.jstree-default-small>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -7px}.jstree-default-small .jstree-disabled{background:0 0}.jstree-default-small .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-small .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-small .jstree-checkbox{background-position:-167px -7px}.jstree-default-small .jstree-checkbox:hover{background-position:-167px -39px}.jstree-default-small .jstree-checked>.jstree-checkbox,.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox{background-position:-231px -7px}.jstree-default-small .jstree-checked>.jstree-checkbox:hover,.jstree-default-small.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover{background-position:-231px -39px}.jstree-default-small .jstree-anchor>.jstree-undetermined{background-position:-199px -7px}.jstree-default-small .jstree-anchor>.jstree-undetermined:hover{background-position:-199px -39px}.jstree-default-small .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-small>.jstree-striped{background-size:auto 36px}.jstree-default-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-small.jstree-rtl .jstree-open>.jstree-ocl{background-position:-135px -39px}.jstree-default-small.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-103px -39px}.jstree-default-small.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-71px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl,.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-node{background:0 0}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-39px -39px}.jstree-default-small.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:-7px -39px}.jstree-default-small .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-small>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-small .jstree-file{background:url(32px.png) -103px -71px no-repeat}.jstree-default-small .jstree-folder{background:url(32px.png) -263px -7px no-repeat}.jstree-default-small>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-small{line-height:18px;padding:0 4px}#jstree-dnd.jstree-default-small .jstree-er,#jstree-dnd.jstree-default-small .jstree-ok{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-small i{background:0 0;width:18px;height:18px;line-height:18px}#jstree-dnd.jstree-default-small .jstree-ok{background-position:-7px -71px}#jstree-dnd.jstree-default-small .jstree-er{background-position:-39px -71px}.jstree-default-small .jstree-ellipsis{overflow:hidden}.jstree-default-small .jstree-ellipsis .jstree-anchor{width:calc(100% - 23px);text-overflow:ellipsis;overflow:hidden}.jstree-default-small.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAACAQMAAABv1h6PAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMHBgAAiABBI4gz9AAAAABJRU5ErkJggg==)}.jstree-default-small.jstree-rtl .jstree-last{background:0 0}.jstree-default-large .jstree-node{min-height:32px;line-height:32px;margin-left:32px;min-width:32px}.jstree-default-large .jstree-anchor{line-height:32px;height:32px}.jstree-default-large .jstree-icon{width:32px;height:32px;line-height:32px}.jstree-default-large .jstree-icon:empty{width:32px;height:32px;line-height:32px}.jstree-default-large.jstree-rtl .jstree-node{margin-right:32px}.jstree-default-large .jstree-wholerow{height:32px}.jstree-default-large .jstree-icon,.jstree-default-large .jstree-node{background-image:url(32px.png)}.jstree-default-large .jstree-node{background-position:-288px 0;background-repeat:repeat-y}.jstree-default-large .jstree-last{background:0 0}.jstree-default-large .jstree-open>.jstree-ocl{background-position:-128px 0}.jstree-default-large .jstree-closed>.jstree-ocl{background-position:-96px 0}.jstree-default-large .jstree-leaf>.jstree-ocl{background-position:-64px 0}.jstree-default-large .jstree-themeicon{background-position:-256px 0}.jstree-default-large>.jstree-no-dots .jstree-leaf>.jstree-ocl,.jstree-default-large>.jstree-no-dots .jstree-node{background:0 0}.jstree-default-large>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px 0}.jstree-default-large>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 0}.jstree-default-large .jstree-disabled{background:0 0}.jstree-default-large .jstree-disabled.jstree-hovered{background:0 0}.jstree-default-large .jstree-disabled.jstree-clicked{background:#efefef}.jstree-default-large .jstree-checkbox{background-position:-160px 0}.jstree-default-large .jstree-checkbox:hover{background-position:-160px -32px}.jstree-default-large .jstree-checked>.jstree-checkbox,.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox{background-position:-224px 0}.jstree-default-large .jstree-checked>.jstree-checkbox:hover,.jstree-default-large.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover{background-position:-224px -32px}.jstree-default-large .jstree-anchor>.jstree-undetermined{background-position:-192px 0}.jstree-default-large .jstree-anchor>.jstree-undetermined:hover{background-position:-192px -32px}.jstree-default-large .jstree-checkbox-disabled{opacity:.8;filter:url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'jstree-grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#jstree-grayscale");filter:gray;-webkit-filter:grayscale(100%)}.jstree-default-large>.jstree-striped{background-size:auto 64px}.jstree-default-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAACAQMAAAB49I5GAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjAAMOBgAAGAAJMwQHdQAAAABJRU5ErkJggg==);background-position:100% 1px;background-repeat:repeat-y}.jstree-default-large.jstree-rtl .jstree-last{background:0 0}.jstree-default-large.jstree-rtl .jstree-open>.jstree-ocl{background-position:-128px -32px}.jstree-default-large.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-96px -32px}.jstree-default-large.jstree-rtl .jstree-leaf>.jstree-ocl{background-position:-64px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-leaf>.jstree-ocl,.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-node{background:0 0}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-open>.jstree-ocl{background-position:-32px -32px}.jstree-default-large.jstree-rtl>.jstree-no-dots .jstree-closed>.jstree-ocl{background-position:0 -32px}.jstree-default-large .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-large>.jstree-container-ul .jstree-loading>.jstree-ocl{background:url(throbber.gif) center center no-repeat}.jstree-default-large .jstree-file{background:url(32px.png) -96px -64px no-repeat}.jstree-default-large .jstree-folder{background:url(32px.png) -256px 0 no-repeat}.jstree-default-large>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}#jstree-dnd.jstree-default-large{line-height:32px;padding:0 4px}#jstree-dnd.jstree-default-large .jstree-er,#jstree-dnd.jstree-default-large .jstree-ok{background-image:url(32px.png);background-repeat:no-repeat;background-color:transparent}#jstree-dnd.jstree-default-large i{background:0 0;width:32px;height:32px;line-height:32px}#jstree-dnd.jstree-default-large .jstree-ok{background-position:0 -64px}#jstree-dnd.jstree-default-large .jstree-er{background-position:-32px -64px}.jstree-default-large .jstree-ellipsis{overflow:hidden}.jstree-default-large .jstree-ellipsis .jstree-anchor{width:calc(100% - 37px);text-overflow:ellipsis;overflow:hidden}.jstree-default-large.jstree-rtl .jstree-node{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAACAQMAAAAD0EyKAAAABlBMVEUAAAAdHRvEkCwcAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjgIIGBgABCgCBvVLXcAAAAABJRU5ErkJggg==)}.jstree-default-large.jstree-rtl .jstree-last{background:0 0}@media (max-width:768px){#jstree-dnd.jstree-dnd-responsive{line-height:40px;font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}#jstree-dnd.jstree-dnd-responsive>i{background:0 0;width:40px;height:40px}#jstree-dnd.jstree-dnd-responsive>.jstree-ok{background-image:url(40px.png);background-position:0 -200px;background-size:120px 240px}#jstree-dnd.jstree-dnd-responsive>.jstree-er{background-image:url(40px.png);background-position:-40px -200px;background-size:120px 240px}#jstree-marker.jstree-dnd-responsive{border-left-width:10px;border-top-width:10px;border-bottom-width:10px;margin-top:-10px}}@media (max-width:768px){.jstree-default-responsive .jstree-icon{background-image:url(40px.png)}.jstree-default-responsive .jstree-leaf>.jstree-ocl,.jstree-default-responsive .jstree-node{background:0 0}.jstree-default-responsive .jstree-node{min-height:40px;line-height:40px;margin-left:40px;min-width:40px;white-space:nowrap}.jstree-default-responsive .jstree-anchor{line-height:40px;height:40px}.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-icon:empty{width:40px;height:40px;line-height:40px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0}.jstree-default-responsive.jstree-rtl .jstree-node{margin-left:0;margin-right:40px;background:0 0}.jstree-default-responsive.jstree-rtl .jstree-container-ul>.jstree-node{margin-right:0}.jstree-default-responsive .jstree-checkbox,.jstree-default-responsive .jstree-ocl,.jstree-default-responsive .jstree-themeicon{background-size:120px 240px}.jstree-default-responsive .jstree-leaf>.jstree-ocl,.jstree-default-responsive.jstree-rtl .jstree-leaf>.jstree-ocl{background:0 0}.jstree-default-responsive .jstree-open>.jstree-ocl{background-position:0 0!important}.jstree-default-responsive .jstree-closed>.jstree-ocl{background-position:0 -40px!important}.jstree-default-responsive.jstree-rtl .jstree-closed>.jstree-ocl{background-position:-40px 0!important}.jstree-default-responsive .jstree-themeicon{background-position:-40px -40px}.jstree-default-responsive .jstree-checkbox,.jstree-default-responsive .jstree-checkbox:hover{background-position:-40px -80px}.jstree-default-responsive .jstree-checked>.jstree-checkbox,.jstree-default-responsive .jstree-checked>.jstree-checkbox:hover,.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox,.jstree-default-responsive.jstree-checkbox-selection .jstree-clicked>.jstree-checkbox:hover{background-position:0 -80px}.jstree-default-responsive .jstree-anchor>.jstree-undetermined,.jstree-default-responsive .jstree-anchor>.jstree-undetermined:hover{background-position:0 -120px}.jstree-default-responsive .jstree-anchor{font-weight:700;font-size:1.1em;text-shadow:1px 1px #fff}.jstree-default-responsive>.jstree-striped{background:0 0}.jstree-default-responsive .jstree-wholerow{border-top:1px solid rgba(255,255,255,.7);border-bottom:1px solid rgba(64,64,64,.2);background:#ebebeb;height:40px}.jstree-default-responsive .jstree-wholerow-hovered{background:#e7f4f9}.jstree-default-responsive .jstree-wholerow-clicked{background:#beebff}.jstree-default-responsive .jstree-children .jstree-last>.jstree-wholerow{box-shadow:inset 0 -6px 3px -5px #666}.jstree-default-responsive .jstree-children .jstree-open>.jstree-wholerow{box-shadow:inset 0 6px 3px -5px #666;border-top:0}.jstree-default-responsive .jstree-children .jstree-open+.jstree-open{box-shadow:none}.jstree-default-responsive .jstree-checkbox,.jstree-default-responsive .jstree-icon,.jstree-default-responsive .jstree-node,.jstree-default-responsive .jstree-node>.jstree-ocl,.jstree-default-responsive .jstree-themeicon{background-image:url(40px.png);background-size:120px 240px}.jstree-default-responsive .jstree-node{background-position:-80px 0;background-repeat:repeat-y}.jstree-default-responsive .jstree-last{background:0 0}.jstree-default-responsive .jstree-leaf>.jstree-ocl{background-position:-40px -120px}.jstree-default-responsive .jstree-last>.jstree-ocl{background-position:-40px -160px}.jstree-default-responsive .jstree-themeicon-custom{background-color:transparent;background-image:none;background-position:0 0}.jstree-default-responsive .jstree-file{background:url(40px.png) 0 -160px no-repeat;background-size:120px 240px}.jstree-default-responsive .jstree-folder{background:url(40px.png) -40px -40px no-repeat;background-size:120px 240px}.jstree-default-responsive>.jstree-container-ul>.jstree-node{margin-left:0;margin-right:0}}.gridster{position:relative;margin:auto;height:0}.gridster>ul{margin:0;list-style:none;padding:0}.gridster-item{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;list-style:none;z-index:2;position:absolute;display:none}.gridster-loaded{-webkit-transition:height .3s;-moz-transition:height .3s;-o-transition:height .3s;transition:height .3s}.gridster-loaded .gridster-item{display:block;position:absolute;-webkit-transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;-moz-transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;-o-transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;transition:opacity .3s,left .3s,top .3s,width .3s,height .3s;-webkit-transition-delay:50ms;-moz-transition-delay:50ms;-o-transition-delay:50ms;transition-delay:50ms}.gridster-loaded .gridster-preview-holder{display:none;z-index:1;position:absolute;background-color:#ddd;border-color:#fff;opacity:.2}.gridster-loaded .gridster-item.gridster-item-moving,.gridster-loaded .gridster-preview-holder{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.gridster-mobile{height:auto!important}.gridster-mobile .gridster-item{height:auto;position:static;float:none}.gridster-item.ng-leave.ng-leave-active{opacity:0}.gridster-item.ng-enter{opacity:1}.gridster-item-moving{z-index:3}.gridster-item-resizable-handler{position:absolute;font-size:1px;display:block;z-index:5}.handle-se{cursor:se-resize;width:0;height:0;right:1px;bottom:1px;border-style:solid;border-width:0 0 12px 12px;border-color:transparent}.handle-ne{cursor:ne-resize;width:12px;height:12px;right:1px;top:1px}.handle-nw{cursor:nw-resize;width:12px;height:12px;left:1px;top:1px}.handle-sw{cursor:sw-resize;width:12px;height:12px;left:1px;bottom:1px}.handle-e{cursor:e-resize;width:12px;bottom:0;right:1px;top:0}.handle-s{cursor:s-resize;height:12px;right:0;bottom:1px;left:0}.handle-n{cursor:n-resize;height:12px;right:0;top:1px;left:0}.handle-w{cursor:w-resize;width:12px;left:1px;top:0;bottom:0}.gridster .gridster-item:hover .gridster-box{border:1.5px solid #b3b2b3}.gridster .gridster-item:hover .handle-se{border-color:transparent transparent #ccc}.widget-clock .digital{text-align:center}.widget-clock .time{font-family:Syncopate,sans-serif;font-size:2.5em;margin:0}.widget-clock .square{position:relative;width:100%;height:0;padding-bottom:100%}.widget-clock svg{position:absolute;width:100%;height:100%;left:0}.widget-clock .clock-face{stroke:#333;fill:#fff}.widget-clock .minor{stroke:#999;stroke-width:.5}.widget-clock .major{stroke:#333;stroke-width:1}.widget-clock .hour{stroke:#333}.widget-clock .minute{stroke:#666}.widget-clock .second{stroke:#1076ed}.widget-clock .second-counterweight{stroke:#1076ed;stroke-width:3}.widget-clock.dark .clock-face{fill:#111}.widget-clock.dark .hour{stroke:#666}.widget-clock.dark .minute{stroke:#999}*{box-sizing:border-box}@font-face{font-family:emoticons;src:url(../fonts/emoticons.eot?5zh0vu);src:url(../fonts/emoticons.eot?#iefix5zh0vu) format('embedded-opentype'),url(../fonts/emoticons.woff?5zh0vu) format('woff'),url(../fonts/emoticons.ttf?5zh0vu) format('truetype'),url(../fonts/emoticons.svg?5zh0vu#icomoon) format('svg');font-weight:400;font-style:normal}.ne-code{display:none}.ne-code{font-size:14px;padding:20px;font-family:Consolas,Menlo,Monaco,monospace;padding:1.5em}pre{position:relative;margin-bottom:24px;border-radius:2px;overflow:hidden}code.has-numbering{display:block;padding:12px 30px;overflow-y:auto;font-weight:300;font-family:Consolas,Menlo,Monaco,monospace;font-size:14px;line-height:20px}code.has-numbering{margin-left:36px}.pre-numbering{position:absolute;top:0;left:0;width:35px;padding:1.1em 5px 12px 0;border-right:1px solid #e8e8e8;border-radius:3px 0 0 3px;background-color:#eee;text-align:right;font-family:Consolas,Menlo,Monaco,monospace;font-size:14px;color:#aaa;line-height:20px;margin-top:-4px}.pre-numbering li{list-style-type:none}.ne-pdf iframe{width:420px;height:530px;display:block}.ne-pdf-icon{width:200px;height:150px;float:left;border-right:1px solid #eee}.ne-pdf-icon i{margin:29px 62px;color:#999;font-size:84px}.ne-pdf-view button{font-family:inherit;font-size:14px;background-color:transparent;border:1px solid #ccc;padding:6px 15px;border-radius:2px;color:#333;cursor:pointer;box-shadow:0 1px 1px 0 rgba(0,0,0,.26);outline:0;border-bottom:0;float:right;margin:80px 10px 0 10px;-webkit-transition:all .5s linear;-o-transition:all .5s linear;-moz-transition:all .5s linear;-ms-transition:all .5s linear;-kthtml-transition:all .5s linear;transition:all .5s linear}.ne-pdf-view button:hover{box-shadow:0 2px 2px 0 rgba(0,0,0,.26)}.ne-pdf-view button i{margin-right:6px}.ne-pdf-view button a{color:#333}.ne-pdf-viewer iframe{margin:0 auto}.ne-pdf-viewer{background-color:#3498db;position:relative}.ne-pdf-viewer i{position:absolute;right:10px;top:8px;color:#fff;font-size:25px;cursor:pointer}.ne-audio{background-color:#1d1d1d;border-radius:2px;padding-top:6px}.ne-audio audio{width:100%}.ne-pdf,.ne-video{padding:5px;border:1px solid #e4e4e4;border-radius:2px;margin:20px 0;box-shadow:0 1px 1px 0 rgba(0,0,0,.26);border-bottom:0;overflow:auto;-webkit-transition:all .5s linear;-o-transition:all .5s linear;-moz-transition:all .5s linear;-ms-transition:all .5s linear;-kthtml-transition:all .5s linear;transition:all .5s linear}.ne-embed{width:100%;padding:5px;border:1px solid #e4e4e4;border-radius:2px;margin:20px 0;box-shadow:0 1px 1px 0 rgba(0,0,0,.26);border-bottom:0;padding-bottom:1px}.ne-embed iframe{border:0;background-color:#3498db;background-image:url(../images/loader.svg);background-repeat:no-repeat;background-position:center;width:100%}.ne-plunker{background-color:#fff!important}.ne-video video{width:100%}.ne-video iframe{width:100%;border:0}.ne-video object{width:100%;border:0}.ne-audio iframe{width:100%;border:0}.ne-image:hover,.ne-video:hover{box-shadow:0 2px 2px 0 rgba(0,0,0,.26)}.ne-pdf-preview,.ne-video-preview{overflow:auto}.ne-video-preview img{display:block;width:200px;height:150px;border-radius:2px;background-color:#3498db}.ne-video-thumb{width:200px;float:left;cursor:pointer;color:rgba(255,255,255,.6)}.ne-video-thumb:hover{color:#fff}.ne-video-thumb i{position:absolute;font-size:42px;margin-top:-95px;margin-left:80px;cursor:pointer}.ne-pdf-detail,.ne-video-detail{width:calc(100% - 200px);float:left;padding-left:15px}.ne-pdf-title,.ne-video-title{font-weight:bolder;padding:5px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ne-video-desc{font-size:16px;color:#666;height:90px}.ne-stats{padding-top:7px;overflow:auto}.ne-video-stats span{padding:0 15px;float:right}.ne-video-stats span i{margin-right:10px}.ne-video-player{background-color:#3498db;background-image:url(../images/loader.svg);background-repeat:no-repeat;background-position:center}.ne-video-player iframe{width:100%}.ne-image{width:100%;border-radius:2px;border:1px solid #e4e4e4;min-height:250px;max-height:250px;overflow:hidden;cursor:pointer;padding-bottom:5px;-webkit-transition:all .5s linear;-o-transition:all .5s linear;-moz-transition:all .5s linear;-ms-transition:all .5s linear;-kthtml-transition:all .5s linear;transition:all .5s linear;box-shadow:0 1px 1px 0 rgba(0,0,0,.26);border-bottom:5px solid #fff;margin:10px 0}.ne-image-long{max-height:800px}.ne-image img,.ne-image-long img{width:100%;display:block;min-height:250px}.ne-image-wrapper{margin:5px;margin-bottom:0;background-color:#3498db;background-image:url(../images/loader.svg);background-repeat:no-repeat;background-position:center;height:100%;overflow:hidden}.ne-gist body{margin:0!important}.emoticons-image,.emoticons-image-wrapper{width:100%}.emoticons-image{padding:5px;border-radius:2px;border:1px solid #f2f2f2;display:block;margin:20px 0}.ne-emoticon{font-family:emoticons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;display:inline-block;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.emoticon{text-indent:-9999px;display:inline-block;height:22px;width:22px;vertical-align:middle}@media all and (-webkit-min-device-pixel-ratio :1),all and (min--moz-device-pixel-ratio :1),all and (-o-min-device-pixel-ratio :1),all and (min-device-pixel-ratio :1),all and (min-resolution :96dpi){.emoticon{background:transparent url(../images/emojis.png) 0 0 no-repeat}}@media all and (-webkit-min-device-pixel-ratio :1.5),all and (-o-min-device-pixel-ratio :3/2),all and (min-device-pixel-ratio :1.5),all and (min-resolution :144dpi){.emoticon{background:transparent url(../images/emojis@2x.png) 0 0 no-repeat;background-size:27776px 22px}}@-moz-document url-prefix(){.emoticon{background:transparent url(../images/emojis.png) 0 0 no-repeat}}.emoticon-bowtie{background-position:-5px 0}.emoticon-smile{background-position:-37px 0}.emoticon-laughing{background-position:-69px 0}.emoticon-blush{background-position:-101px 0}.emoticon-smiley{background-position:-133px 0}.emoticon-relaxed{background-position:-165px 0}.emoticon-smirk{background-position:-197px 0}.emoticon-heart_eyes{background-position:-229px 0}.emoticon-kissing_heart{background-position:-261px 0}.emoticon-kissing_closed_eyes{background-position:-293px 0}.emoticon-flushed{background-position:-325px 0}.emoticon-relieved{background-position:-357px 0}.emoticon-satisfied{background-position:-389px 0}.emoticon-grin{background-position:-421px 0}.emoticon-wink{background-position:-453px 0}.emoticon-stuck_out_tongue_winking_eye{background-position:-485px 0}.emoticon-winky_face{background-position:-485px 0}.emoticon-stuck_out_tongue_closed_eyes{background-position:-517px 0}.emoticon-grinning{background-position:-549px 0}.emoticon-kissing{background-position:-581px 0}.emoticon-kissing_smiling_eyes{background-position:-613px 0}.emoticon-stuck_out_tongue{background-position:-645px 0}.emoticon-sleeping{background-position:-677px 0}.emoticon-worried{background-position:-709px 0}.emoticon-frowning{background-position:-741px 0}.emoticon-anguished{background-position:-773px 0}.emoticon-open_mouth{background-position:-805px 0}.emoticon-wow{background-position:-805px 0}.emoticon-grimacing{background-position:-837px 0}.emoticon-confused{background-position:-869px 0}.emoticon-hushed{background-position:-901px 0}.emoticon-expressionless{background-position:-933px 0}.emoticon-unamused{background-position:-965px 0}.emoticon-sweat_smile{background-position:-997px 0}.emoticon-sweat{background-position:-1029px 0}.emoticon-disappointed_relieved{background-position:-1061px 0}.emoticon-weary{background-position:-1093px 0}.emoticon-pensive{background-position:-1125px 0}.emoticon-disappointed{background-position:-1157px 0}.emoticon-confounded{background-position:-1189px 0}.emoticon-fearful{background-position:-1221px 0}.emoticon-cold_sweat{background-position:-1253px 0}.emoticon-persevere{background-position:-1285px 0}.emoticon-cry{background-position:-1317px 0}.emoticon-sob{background-position:-1349px 0}.emoticon-joy{background-position:-1381px 0}.emoticon-astonished{background-position:-1413px 0}.emoticon-scream{background-position:-1445px 0}.emoticon-neckbeard{background-position:-1477px 0}.emoticon-tired_face{background-position:-1509px 0}.emoticon-angry{background-position:-1541px 0}.emoticon-rage{background-position:-1573px 0}.emoticon-triumph{background-position:-1605px 0}.emoticon-sleepy{background-position:-1637px 0}.emoticon-yum{background-position:-1669px 0}.emoticon-mask{background-position:-1701px 0}.emoticon-sunglasses{background-position:-1733px 0}.emoticon-dizzy_face{background-position:-1765px 0}.emoticon-imp{background-position:-1797px 0}.emoticon-smiling_imp{background-position:-1829px 0}.emoticon-neutral_face{background-position:-1861px 0}.emoticon-no_mouth{background-position:-1893px 0}.emoticon-innocent{background-position:-1925px 0}.emoticon-alien{background-position:-1957px 0}.emoticon-yellow_heart{background-position:-1989px 0}.emoticon-blue_heart{background-position:-2021px 0}.emoticon-purple_heart{background-position:-2053px 0}.emoticon-heart{background-position:-2085px 0}.emoticon-green_heart{background-position:-2117px 0}.emoticon-broken_heart{background-position:-2149px 0}.emoticon-heartbeat{background-position:-2181px 0}.emoticon-heartpulse{background-position:-2213px 0}.emoticon-two_hearts{background-position:-2245px 0}.emoticon-revolving_hearts{background-position:-2277px 0}.emoticon-cupid{background-position:-2309px 0}.emoticon-sparkling_heart{background-position:-2341px 0}.emoticon-sparkles{background-position:-2373px 0}.emoticon-star{background-position:-2405px 0}.emoticon-star2{background-position:-2437px 0}.emoticon-dizzy{background-position:-2469px 0}.emoticon-boom{background-position:-2501px 0}.emoticon-collision{background-position:-2533px 0}.emoticon-anger{background-position:-2565px 0}.emoticon-exclamation{background-position:-2597px 0}.emoticon-question{background-position:-2629px 0}.emoticon-grey_exclamation{background-position:-2661px 0}.emoticon-grey_question{background-position:-2693px 0}.emoticon-zzz{background-position:-2725px 0}.emoticon-dash{background-position:-2757px 0}.emoticon-sweat_drops{background-position:-2789px 0}.emoticon-notes{background-position:-2821px 0}.emoticon-musical_note{background-position:-2853px 0}.emoticon-fire{background-position:-2885px 0}.emoticon-hankey{background-position:-2917px 0}.emoticon-poop{background-position:-2949px 0}.emoticon-shit{background-position:-2981px 0}.emoticon-\+1{background-position:-3013px 0}.emoticon-thumbsup{background-position:-3045px 0}.emoticon-\-1{background-position:-3077px 0}.emoticon-thumbsdown{background-position:-3109px 0}.emoticon-ok_hand{background-position:-3141px 0}.emoticon-punch{background-position:-3173px 0}.emoticon-facepunch{background-position:-3205px 0}.emoticon-fist{background-position:-3237px 0}.emoticon-v{background-position:-3269px 0}.emoticon-wave{background-position:-3301px 0}.emoticon-hand{background-position:-3333px 0}.emoticon-raised_hand{background-position:-3365px 0}.emoticon-open_hands{background-position:-3397px 0}.emoticon-point_up{background-position:-3429px 0}.emoticon-point_down{background-position:-3461px 0}.emoticon-point_left{background-position:-3493px 0}.emoticon-point_right{background-position:-3525px 0}.emoticon-raised_hands{background-position:-3557px 0}.emoticon-pray{background-position:-3589px 0}.emoticon-point_up_2{background-position:-3621px 0}.emoticon-clap{background-position:-3653px 0}.emoticon-muscle{background-position:-3685px 0}.emoticon-metal{background-position:-3717px 0}.emoticon-fu{background-position:-3749px 0}.emoticon-walking{background-position:-3781px 0}.emoticon-runner{background-position:-3813px 0}.emoticon-running{background-position:-3845px 0}.emoticon-couple{background-position:-3877px 0}.emoticon-family{background-position:-3909px 0}.emoticon-two_men_holding_hands{background-position:-3941px 0}.emoticon-two_women_holding_hands{background-position:-3973px 0}.emoticon-dancer{background-position:-4005px 0}.emoticon-dancers{background-position:-4037px 0}.emoticon-ok_woman{background-position:-4069px 0}.emoticon-no_good{background-position:-4101px 0}.emoticon-information_desk_person{background-position:-4133px 0}.emoticon-raising_hand{background-position:-4165px 0}.emoticon-bride_with_veil{background-position:-4197px 0}.emoticon-person_with_pouting_face{background-position:-4229px 0}.emoticon-person_frowning{background-position:-4261px 0}.emoticon-bow{background-position:-4293px 0}.emoticon-couplekiss{background-position:-4325px 0}.emoticon-couple_with_heart{background-position:-4357px 0}.emoticon-massage{background-position:-4389px 0}.emoticon-haircut{background-position:-4421px 0}.emoticon-nail_care{background-position:-4453px 0}.emoticon-boy{background-position:-4485px 0}.emoticon-girl{background-position:-4517px 0}.emoticon-woman{background-position:-4549px 0}.emoticon-man{background-position:-4581px 0}.emoticon-baby{background-position:-4613px 0}.emoticon-older_woman{background-position:-4645px 0}.emoticon-older_man{background-position:-4677px 0}.emoticon-person_with_blond_hair{background-position:-4709px 0}.emoticon-man_with_gua_pi_mao{background-position:-4741px 0}.emoticon-man_with_turban{background-position:-4773px 0}.emoticon-construction_worker{background-position:-4805px 0}.emoticon-cop{background-position:-4837px 0}.emoticon-angel{background-position:-4869px 0}.emoticon-princess{background-position:-4901px 0}.emoticon-emoticon_cat{background-position:-4933px 0}.emoticon-smile_cat{background-position:-4965px 0}.emoticon-heart_eyes_cat{background-position:-4997px 0}.emoticon-kissing_cat{background-position:-5029px 0}.emoticon-smirk_cat{background-position:-5061px 0}.emoticon-scream_cat{background-position:-5093px 0}.emoticon-crying_cat_face{background-position:-5125px 0}.emoticon-joy_cat{background-position:-5157px 0}.emoticon-pouting_cat{background-position:-5189px 0}.emoticon-japanese_ogre{background-position:-5221px 0}.emoticon-japanese_goblin{background-position:-5253px 0}.emoticon-see_no_evil{background-position:-5285px 0}.emoticon-hear_no_evil{background-position:-5317px 0}.emoticon-speak_no_evil{background-position:-5349px 0}.emoticon-guardsman{background-position:-5381px 0}.emoticon-skull{background-position:-5413px 0}.emoticon-feet{background-position:-5445px 0}.emoticon-lips{background-position:-5477px 0}.emoticon-kiss{background-position:-5509px 0}.emoticon-droplet{background-position:-5541px 0}.emoticon-ear{background-position:-5573px 0}.emoticon-eyes{background-position:-5605px 0}.emoticon-nose{background-position:-5637px 0}.emoticon-tongue{background-position:-5669px 0}.emoticon-love_letter{background-position:-5701px 0}.emoticon-bust_in_silhouette{background-position:-5733px 0}.emoticon-busts_in_silhouette{background-position:-5765px 0}.emoticon-speech_balloon{background-position:-5797px 0}.emoticon-thought_balloon{background-position:-5829px 0}.emoticon-feelsgood{background-position:-5861px 0}.emoticon-finnadie{background-position:-5893px 0}.emoticon-goberserk{background-position:-5925px 0}.emoticon-godmode{background-position:-5957px 0}.emoticon-hurtrealbad{background-position:-5989px 0}.emoticon-rage1{background-position:-6021px 0}.emoticon-rage2{background-position:-6053px 0}.emoticon-rage3{background-position:-6085px 0}.emoticon-rage4{background-position:-6117px 0}.emoticon-suspect{background-position:-6149px 0}.emoticon-trollface{background-position:-6181px 0}.emoticon-sunny{background-position:-6213px 0}.emoticon-umbrella{background-position:-6245px 0}.emoticon-cloud{background-position:-6277px 0}.emoticon-snowflake{background-position:-6309px 0}.emoticon-snowman{background-position:-6341px 0}.emoticon-zap{background-position:-6373px 0}.emoticon-cyclone{background-position:-6405px 0}.emoticon-foggy{background-position:-6437px 0}.emoticon-ocean{background-position:-6469px 0}.emoticon-cat{background-position:-6501px 0}.emoticon-dog{background-position:-6533px 0}.emoticon-mouse{background-position:-6565px 0}.emoticon-hamster{background-position:-6597px 0}.emoticon-rabbit{background-position:-6629px 0}.emoticon-wolf{background-position:-6661px 0}.emoticon-frog{background-position:-6693px 0}.emoticon-tiger{background-position:-6725px 0}.emoticon-koala{background-position:-6757px 0}.emoticon-bear{background-position:-6789px 0}.emoticon-pig{background-position:-6821px 0}.emoticon-pig_nose{background-position:-6853px 0}.emoticon-cow{background-position:-6885px 0}.emoticon-boar{background-position:-6917px 0}.emoticon-monkey_face{background-position:-6949px 0}.emoticon-monkey{background-position:-6981px 0}.emoticon-horse{background-position:-7013px 0}.emoticon-racehorse{background-position:-7045px 0}.emoticon-camel{background-position:-7077px 0}.emoticon-sheep{background-position:-7109px 0}.emoticon-elephant{background-position:-7141px 0}.emoticon-panda_face{background-position:-7173px 0}.emoticon-snake{background-position:-7205px 0}.emoticon-bird{background-position:-7237px 0}.emoticon-baby_chick{background-position:-7269px 0}.emoticon-hatched_chick{background-position:-7301px 0}.emoticon-hatching_chick{background-position:-7333px 0}.emoticon-chicken{background-position:-7365px 0}.emoticon-penguin{background-position:-7397px 0}.emoticon-turtle{background-position:-7429px 0}.emoticon-bug{background-position:-7461px 0}.emoticon-honeybee{background-position:-7493px 0}.emoticon-ant{background-position:-7525px 0}.emoticon-beetle{background-position:-7557px 0}.emoticon-snail{background-position:-7589px 0}.emoticon-octopus{background-position:-7621px 0}.emoticon-tropical_fish{background-position:-7653px 0}.emoticon-fish{background-position:-7685px 0}.emoticon-whale{background-position:-7717px 0}.emoticon-whale2{background-position:-7749px 0}.emoticon-dolphin{background-position:-7781px 0}.emoticon-cow2{background-position:-7813px 0}.emoticon-ram{background-position:-7845px 0}.emoticon-rat{background-position:-7877px 0}.emoticon-water_buffalo{background-position:-7909px 0}.emoticon-tiger2{background-position:-7941px 0}.emoticon-rabbit2{background-position:-7973px 0}.emoticon-dragon{background-position:-8005px 0}.emoticon-goat{background-position:-8037px 0}.emoticon-rooster{background-position:-8069px 0}.emoticon-dog2{background-position:-8101px 0}.emoticon-pig2{background-position:-8133px 0}.emoticon-mouse2{background-position:-8165px 0}.emoticon-ox{background-position:-8197px 0}.emoticon-dragon_face{background-position:-8229px 0}.emoticon-blowfish{background-position:-8261px 0}.emoticon-crocodile{background-position:-8293px 0}.emoticon-dromedary_camel{background-position:-8325px 0}.emoticon-leopard{background-position:-8357px 0}.emoticon-cat2{background-position:-8389px 0}.emoticon-poodle{background-position:-8421px 0}.emoticon-paw_prints{background-position:-8453px 0}.emoticon-bouquet{background-position:-8485px 0}.emoticon-cherry_blossom{background-position:-8517px 0}.emoticon-tulip{background-position:-8549px 0}.emoticon-four_leaf_clover{background-position:-8581px 0}.emoticon-rose{background-position:-8613px 0}.emoticon-sunflower{background-position:-8645px 0}.emoticon-hibiscus{background-position:-8677px 0}.emoticon-maple_leaf{background-position:-8709px 0}.emoticon-leaves{background-position:-8741px 0}.emoticon-fallen_leaf{background-position:-8773px 0}.emoticon-herb{background-position:-8805px 0}.emoticon-mushroom{background-position:-8837px 0}.emoticon-cactus{background-position:-8869px 0}.emoticon-palm_tree{background-position:-8901px 0}.emoticon-evergreen_tree{background-position:-8933px 0}.emoticon-deciduous_tree{background-position:-8965px 0}.emoticon-chestnut{background-position:-8997px 0}.emoticon-seedling{background-position:-9029px 0}.emoticon-blossom{background-position:-9061px 0}.emoticon-ear_of_rice{background-position:-9093px 0}.emoticon-shell{background-position:-9125px 0}.emoticon-globe_with_meridians{background-position:-9157px 0}.emoticon-sun_with_face{background-position:-9189px 0}.emoticon-full_moon_with_face{background-position:-9221px 0}.emoticon-new_moon_with_face{background-position:-9253px 0}.emoticon-new_moon{background-position:-9285px 0}.emoticon-waxing_crescent_moon{background-position:-9317px 0}.emoticon-first_quarter_moon{background-position:-9349px 0}.emoticon-waxing_gibbous_moon{background-position:-9381px 0}.emoticon-full_moon{background-position:-9413px 0}.emoticon-waning_gibbous_moon{background-position:-9445px 0}.emoticon-last_quarter_moon{background-position:-9477px 0}.emoticon-waning_crescent_moon{background-position:-9509px 0}.emoticon-last_quarter_moon_with_face{background-position:-9541px 0}.emoticon-first_quarter_moon_with_face{background-position:-9573px 0}.emoticon-moon{background-position:-9605px 0}.emoticon-earth_africa{background-position:-9637px 0}.emoticon-earth_americas{background-position:-9669px 0}.emoticon-earth_asia{background-position:-9701px 0}.emoticon-volcano{background-position:-9733px 0}.emoticon-milky_way{background-position:-9765px 0}.emoticon-partly_sunny{background-position:-9797px 0}.emoticon-octocat{background-position:-9829px 0}.emoticon-squirrel{background-position:-9861px 0}.emoticon-bamboo{background-position:-9893px 0}.emoticon-gift_heart{background-position:-9925px 0}.emoticon-dolls{background-position:-9957px 0}.emoticon-school_satchel{background-position:-9989px 0}.emoticon-mortar_board{background-position:-10021px 0}.emoticon-flags{background-position:-10053px 0}.emoticon-fireworks{background-position:-10085px 0}.emoticon-sparkler{background-position:-10117px 0}.emoticon-wind_chime{background-position:-10149px 0}.emoticon-rice_scene{background-position:-10181px 0}.emoticon-jack_o_lantern{background-position:-10213px 0}.emoticon-ghost{background-position:-10245px 0}.emoticon-santa{background-position:-10277px 0}.emoticon-christmas_tree{background-position:-10309px 0}.emoticon-gift{background-position:-10341px 0}.emoticon-bell{background-position:-10373px 0}.emoticon-no_bell{background-position:-10405px 0}.emoticon-tanabata_tree{background-position:-10437px 0}.emoticon-tada{background-position:-10469px 0}.emoticon-confetti_ball{background-position:-10501px 0}.emoticon-balloon{background-position:-10533px 0}.emoticon-crystal_ball{background-position:-10565px 0}.emoticon-cd{background-position:-10597px 0}.emoticon-dvd{background-position:-10629px 0}.emoticon-floppy_disk{background-position:-10661px 0}.emoticon-camera{background-position:-10693px 0}.emoticon-video_camera{background-position:-10725px 0}.emoticon-movie_camera{background-position:-10757px 0}.emoticon-computer{background-position:-10789px 0}.emoticon-tv{background-position:-10821px 0}.emoticon-iphone{background-position:-10853px 0}.emoticon-phone{background-position:-10885px 0}.emoticon-telephone{background-position:-10917px 0}.emoticon-telephone_receiver{background-position:-10949px 0}.emoticon-pager{background-position:-10981px 0}.emoticon-fax{background-position:-11013px 0}.emoticon-minidisc{background-position:-11045px 0}.emoticon-vhs{background-position:-11077px 0}.emoticon-sound{background-position:-11109px 0}.emoticon-speaker{background-position:-11141px 0}.emoticon-mute{background-position:-11173px 0}.emoticon-loudspeaker{background-position:-11205px 0}.emoticon-mega{background-position:-11237px 0}.emoticon-hourglass{background-position:-11269px 0}.emoticon-hourglass_flowing_sand{background-position:-11301px 0}.emoticon-alarm_clock{background-position:-11333px 0}.emoticon-watch{background-position:-11365px 0}.emoticon-radio{background-position:-11397px 0}.emoticon-satellite{background-position:-11429px 0}.emoticon-loop{background-position:-11461px 0}.emoticon-mag{background-position:-11493px 0}.emoticon-mag_right{background-position:-11525px 0}.emoticon-unlock{background-position:-11557px 0}.emoticon-lock{background-position:-11589px 0}.emoticon-lock_with_ink_pen{background-position:-11621px 0}.emoticon-closed_lock_with_key{background-position:-11653px 0}.emoticon-key{background-position:-11685px 0}.emoticon-bulb{background-position:-11717px 0}.emoticon-flashlight{background-position:-11749px 0}.emoticon-high_brightness{background-position:-11781px 0}.emoticon-low_brightness{background-position:-11813px 0}.emoticon-electric_plug{background-position:-11845px 0}.emoticon-battery{background-position:-11877px 0}.emoticon-calling{background-position:-11909px 0}.emoticon-email{background-position:-11941px 0}.emoticon-mailbox{background-position:-11973px 0}.emoticon-postbox{background-position:-12005px 0}.emoticon-bath{background-position:-12037px 0}.emoticon-bathtub{background-position:-12069px 0}.emoticon-shower{background-position:-12101px 0}.emoticon-toilet{background-position:-12133px 0}.emoticon-wrench{background-position:-12165px 0}.emoticon-nut_and_bolt{background-position:-12197px 0}.emoticon-hammer{background-position:-12229px 0}.emoticon-seat{background-position:-12261px 0}.emoticon-moneybag{background-position:-12293px 0}.emoticon-yen{background-position:-12325px 0}.emoticon-dollar{background-position:-12357px 0}.emoticon-pound{background-position:-12389px 0}.emoticon-euro{background-position:-12421px 0}.emoticon-credit_card{background-position:-12453px 0}.emoticon-money_with_wings{background-position:-12485px 0}.emoticon-e\-mail{background-position:-12517px 0}.emoticon-inbox_tray{background-position:-12549px 0}.emoticon-outbox_tray{background-position:-12581px 0}.emoticon-envelope{background-position:-12613px 0}.emoticon-incoming_envelope{background-position:-12645px 0}.emoticon-postal_horn{background-position:-12677px 0}.emoticon-mailbox_closed{background-position:-12709px 0}.emoticon-mailbox_with_mail{background-position:-12741px 0}.emoticon-mailbox_with_no_mail{background-position:-12773px 0}.emoticon-door{background-position:-12805px 0}.emoticon-smoking{background-position:-12837px 0}.emoticon-bomb{background-position:-12869px 0}.emoticon-gun{background-position:-12901px 0}.emoticon-hocho{background-position:-12933px 0}.emoticon-pill{background-position:-12965px 0}.emoticon-syringe{background-position:-12997px 0}.emoticon-page_facing_up{background-position:-13029px 0}.emoticon-page_with_curl{background-position:-13061px 0}.emoticon-bookmark_tabs{background-position:-13093px 0}.emoticon-bar_chart{background-position:-13125px 0}.emoticon-chart_with_upwards_trend{background-position:-13157px 0}.emoticon-chart_with_downwards_trend{background-position:-13189px 0}.emoticon-scroll{background-position:-13221px 0}.emoticon-clipboard{background-position:-13253px 0}.emoticon-calendar{background-position:-13285px 0}.emoticon-date{background-position:-13317px 0}.emoticon-card_index{background-position:-13349px 0}.emoticon-file_folder{background-position:-13381px 0}.emoticon-open_file_folder{background-position:-13413px 0}.emoticon-scissors{background-position:-13445px 0}.emoticon-pushpin{background-position:-13477px 0}.emoticon-paperclip{background-position:-13509px 0}.emoticon-black_nib{background-position:-13541px 0}.emoticon-pencil2{background-position:-13573px 0}.emoticon-straight_ruler{background-position:-13605px 0}.emoticon-triangular_ruler{background-position:-13637px 0}.emoticon-closed_book{background-position:-13669px 0}.emoticon-green_book{background-position:-13701px 0}.emoticon-blue_book{background-position:-13733px 0}.emoticon-orange_book{background-position:-13765px 0}.emoticon-notebook{background-position:-13797px 0}.emoticon-notebook_with_decorative_cover{background-position:-13829px 0}.emoticon-ledger{background-position:-13861px 0}.emoticon-books{background-position:-13893px 0}.emoticon-bookmark{background-position:-13925px 0}.emoticon-name_badge{background-position:-13957px 0}.emoticon-microscope{background-position:-13989px 0}.emoticon-telescope{background-position:-14021px 0}.emoticon-newspaper{background-position:-14053px 0}.emoticon-football{background-position:-14085px 0}.emoticon-basketball{background-position:-14117px 0}.emoticon-soccer{background-position:-14149px 0}.emoticon-baseball{background-position:-14181px 0}.emoticon-tennis{background-position:-14213px 0}.emoticon-8ball{background-position:-14245px 0}.emoticon-rugby_football{background-position:-14277px 0}.emoticon-bowling{background-position:-14309px 0}.emoticon-golf{background-position:-14341px 0}.emoticon-mountain_bicyclist{background-position:-14373px 0}.emoticon-bicyclist{background-position:-14405px 0}.emoticon-horse_racing{background-position:-14437px 0}.emoticon-snowboarder{background-position:-14469px 0}.emoticon-swimmer{background-position:-14501px 0}.emoticon-surfer{background-position:-14533px 0}.emoticon-ski{background-position:-14565px 0}.emoticon-spades{background-position:-14597px 0}.emoticon-hearts{background-position:-14629px 0}.emoticon-clubs{background-position:-14661px 0}.emoticon-diamonds{background-position:-14693px 0}.emoticon-gem{background-position:-14725px 0}.emoticon-ring{background-position:-14757px 0}.emoticon-trophy{background-position:-14789px 0}.emoticon-musical_score{background-position:-14821px 0}.emoticon-musical_keyboard{background-position:-14853px 0}.emoticon-violin{background-position:-14885px 0}.emoticon-space_invader{background-position:-14917px 0}.emoticon-video_game{background-position:-14949px 0}.emoticon-black_joker{background-position:-14981px 0}.emoticon-flower_playing_cards{background-position:-15013px 0}.emoticon-game_die{background-position:-15045px 0}.emoticon-dart{background-position:-15077px 0}.emoticon-mahjong{background-position:-15109px 0}.emoticon-clapper{background-position:-15141px 0}.emoticon-memo{background-position:-15173px 0}.emoticon-pencil{background-position:-15205px 0}.emoticon-book{background-position:-15237px 0}.emoticon-art{background-position:-15269px 0}.emoticon-microphone{background-position:-15301px 0}.emoticon-headphones{background-position:-15333px 0}.emoticon-trumpet{background-position:-15365px 0}.emoticon-saxophone{background-position:-15397px 0}.emoticon-guitar{background-position:-15429px 0}.emoticon-shoe{background-position:-15461px 0}.emoticon-sandal{background-position:-15493px 0}.emoticon-high_heel{background-position:-15525px 0}.emoticon-lipstick{background-position:-15557px 0}.emoticon-boot{background-position:-15589px 0}.emoticon-shirt{background-position:-15621px 0}.emoticon-tshirt{background-position:-15653px 0}.emoticon-necktie{background-position:-15685px 0}.emoticon-womans_clothes{background-position:-15717px 0}.emoticon-dress{background-position:-15749px 0}.emoticon-running_shirt_with_sash{background-position:-15781px 0}.emoticon-jeans{background-position:-15813px 0}.emoticon-kimono{background-position:-15845px 0}.emoticon-bikini{background-position:-15877px 0}.emoticon-ribbon{background-position:-15909px 0}.emoticon-tophat{background-position:-15941px 0}.emoticon-crown{background-position:-15973px 0}.emoticon-womans_hat{background-position:-16005px 0}.emoticon-mans_shoe{background-position:-16037px 0}.emoticon-closed_umbrella{background-position:-16069px 0}.emoticon-briefcase{background-position:-16101px 0}.emoticon-handbag{background-position:-16133px 0}.emoticon-pouch{background-position:-16165px 0}.emoticon-purse{background-position:-16197px 0}.emoticon-eyeglasses{background-position:-16229px 0}.emoticon-fishing_pole_and_fish{background-position:-16261px 0}.emoticon-coffee{background-position:-16293px 0}.emoticon-tea{background-position:-16325px 0}.emoticon-sake{background-position:-16357px 0}.emoticon-baby_bottle{background-position:-16389px 0}.emoticon-beer{background-position:-16421px 0}.emoticon-beers{background-position:-16453px 0}.emoticon-cocktail{background-position:-16485px 0}.emoticon-tropical_drink{background-position:-16517px 0}.emoticon-wine_glass{background-position:-16549px 0}.emoticon-fork_and_knife{background-position:-16581px 0}.emoticon-pizza{background-position:-16613px 0}.emoticon-hamburger{background-position:-16645px 0}.emoticon-fries{background-position:-16677px 0}.emoticon-poultry_leg{background-position:-16709px 0}.emoticon-meat_on_bone{background-position:-16741px 0}.emoticon-spaghetti{background-position:-16773px 0}.emoticon-curry{background-position:-16805px 0}.emoticon-fried_shrimp{background-position:-16837px 0}.emoticon-bento{background-position:-16869px 0}.emoticon-sushi{background-position:-16901px 0}.emoticon-fish_cake{background-position:-16933px 0}.emoticon-rice_ball{background-position:-16965px 0}.emoticon-rice_cracker{background-position:-16997px 0}.emoticon-rice{background-position:-17029px 0}.emoticon-ramen{background-position:-17061px 0}.emoticon-stew{background-position:-17093px 0}.emoticon-oden{background-position:-17125px 0}.emoticon-dango{background-position:-17157px 0}.emoticon-egg{background-position:-17189px 0}.emoticon-bread{background-position:-17221px 0}.emoticon-doughnut{background-position:-17253px 0}.emoticon-custard{background-position:-17285px 0}.emoticon-icecream{background-position:-17317px 0}.emoticon-ice_cream{background-position:-17349px 0}.emoticon-shaved_ice{background-position:-17381px 0}.emoticon-birthday{background-position:-17413px 0}.emoticon-cake{background-position:-17445px 0}.emoticon-cookie{background-position:-17477px 0}.emoticon-chocolate_bar{background-position:-17509px 0}.emoticon-candy{background-position:-17541px 0}.emoticon-lollipop{background-position:-17573px 0}.emoticon-honey_pot{background-position:-17605px 0}.emoticon-apple{background-position:-17637px 0}.emoticon-green_apple{background-position:-17669px 0}.emoticon-tangerine{background-position:-17701px 0}.emoticon-lemon{background-position:-17733px 0}.emoticon-cherries{background-position:-17765px 0}.emoticon-grapes{background-position:-17797px 0}.emoticon-watermelon{background-position:-17829px 0}.emoticon-strawberry{background-position:-17861px 0}.emoticon-peach{background-position:-17893px 0}.emoticon-melon{background-position:-17925px 0}.emoticon-banana{background-position:-17957px 0}.emoticon-pear{background-position:-17989px 0}.emoticon-pineapple{background-position:-18021px 0}.emoticon-sweet_potato{background-position:-18053px 0}.emoticon-eggplant{background-position:-18085px 0}.emoticon-tomato{background-position:-18117px 0}.emoticon-corn{background-position:-18149px 0}.emoticon-house{background-position:-18181px 0}.emoticon-house_with_garden{background-position:-18213px 0}.emoticon-school{background-position:-18245px 0}.emoticon-office{background-position:-18277px 0}.emoticon-post_office{background-position:-18309px 0}.emoticon-hospital{background-position:-18341px 0}.emoticon-bank{background-position:-18373px 0}.emoticon-convenience_store{background-position:-18405px 0}.emoticon-love_hotel{background-position:-18437px 0}.emoticon-hotel{background-position:-18469px 0}.emoticon-wedding{background-position:-18501px 0}.emoticon-church{background-position:-18533px 0}.emoticon-department_store{background-position:-18565px 0}.emoticon-european_post_office{background-position:-18597px 0}.emoticon-city_sunrise{background-position:-18629px 0}.emoticon-city_sunset{background-position:-18661px 0}.emoticon-japanese_castle{background-position:-18693px 0}.emoticon-european_castle{background-position:-18725px 0}.emoticon-tent{background-position:-18757px 0}.emoticon-factory{background-position:-18789px 0}.emoticon-tokyo_tower{background-position:-18821px 0}.emoticon-japan{background-position:-18853px 0}.emoticon-mount_fuji{background-position:-18885px 0}.emoticon-sunrise_over_mountains{background-position:-18917px 0}.emoticon-sunrise{background-position:-18949px 0}.emoticon-stars{background-position:-18981px 0}.emoticon-themoreyouknow{background-position:-18981px 0}.emoticon-tmyk{background-position:-18981px 0}.emoticon-statue_of_liberty{background-position:-19013px 0}.emoticon-bridge_at_night{background-position:-19045px 0}.emoticon-carousel_horse{background-position:-19077px 0}.emoticon-rainbow{background-position:-19109px 0}.emoticon-ferris_wheel{background-position:-19141px 0}.emoticon-fountain{background-position:-19173px 0}.emoticon-roller_coaster{background-position:-19205px 0}.emoticon-ship{background-position:-19237px 0}.emoticon-speedboat{background-position:-19269px 0}.emoticon-boat{background-position:-19301px 0}.emoticon-sailboat{background-position:-19333px 0}.emoticon-rowboat{background-position:-19365px 0}.emoticon-anchor{background-position:-19397px 0}.emoticon-rocket{background-position:-19429px 0}.emoticon-airplane{background-position:-19461px 0}.emoticon-helicopter{background-position:-19493px 0}.emoticon-steam_locomotive{background-position:-19525px 0}.emoticon-tram{background-position:-19557px 0}.emoticon-mountain_railway{background-position:-19589px 0}.emoticon-bike{background-position:-19621px 0}.emoticon-aerial_tramway{background-position:-19653px 0}.emoticon-suspension_railway{background-position:-19685px 0}.emoticon-mountain_cableway{background-position:-19717px 0}.emoticon-tractor{background-position:-19749px 0}.emoticon-blue_car{background-position:-19781px 0}.emoticon-oncoming_automobile{background-position:-19813px 0}.emoticon-car{background-position:-19845px 0}.emoticon-red_car{background-position:-19877px 0}.emoticon-taxi{background-position:-19909px 0}.emoticon-oncoming_taxi{background-position:-19941px 0}.emoticon-articulated_lorry{background-position:-19973px 0}.emoticon-bus{background-position:-20005px 0}.emoticon-oncoming_bus{background-position:-20037px 0}.emoticon-rotating_light{background-position:-20069px 0}.emoticon-police_car{background-position:-20101px 0}.emoticon-oncoming_police_car{background-position:-20133px 0}.emoticon-fire_engine{background-position:-20165px 0}.emoticon-ambulance{background-position:-20197px 0}.emoticon-minibus{background-position:-20229px 0}.emoticon-truck{background-position:-20261px 0}.emoticon-train{background-position:-20293px 0}.emoticon-station{background-position:-20325px 0}.emoticon-train2{background-position:-20357px 0}.emoticon-bullettrain_front{background-position:-20389px 0}.emoticon-bullettrain_side{background-position:-20421px 0}.emoticon-light_rail{background-position:-20453px 0}.emoticon-monorail{background-position:-20485px 0}.emoticon-railway_car{background-position:-20517px 0}.emoticon-trolleybus{background-position:-20549px 0}.emoticon-ticket{background-position:-20581px 0}.emoticon-fuelpump{background-position:-20613px 0}.emoticon-vertical_traffic_light{background-position:-20645px 0}.emoticon-traffic_light{background-position:-20677px 0}.emoticon-warning{background-position:-20709px 0}.emoticon-construction{background-position:-20741px 0}.emoticon-beginner{background-position:-20773px 0}.emoticon-atm{background-position:-20805px 0}.emoticon-slot_machine{background-position:-20837px 0}.emoticon-busstop{background-position:-20869px 0}.emoticon-barber{background-position:-20901px 0}.emoticon-hotsprings{background-position:-20933px 0}.emoticon-checkered_flag{background-position:-20965px 0}.emoticon-crossed_flags{background-position:-20997px 0}.emoticon-izakaya_lantern{background-position:-21029px 0}.emoticon-moyai{background-position:-21061px 0}.emoticon-circus_tent{background-position:-21093px 0}.emoticon-performing_arts{background-position:-21125px 0}.emoticon-round_pushpin{background-position:-21157px 0}.emoticon-triangular_flag_on_post{background-position:-21189px 0}.emoticon-jp{background-position:-21221px 0}.emoticon-kr{background-position:-21253px 0}.emoticon-cn{background-position:-21285px 0}.emoticon-us{background-position:-21317px 0}.emoticon-fr{background-position:-21349px 0}.emoticon-es{background-position:-21381px 0}.emoticon-it{background-position:-21413px 0}.emoticon-ru{background-position:-21445px 0}.emoticon-gb{background-position:-21477px 0}.emoticon-uk{background-position:-21509px 0}.emoticon-de{background-position:-21541px 0}.emoticon-one{background-position:-21573px 0}.emoticon-two{background-position:-21605px 0}.emoticon-three{background-position:-21637px 0}.emoticon-four{background-position:-21669px 0}.emoticon-five{background-position:-21701px 0}.emoticon-six{background-position:-21733px 0}.emoticon-seven{background-position:-21765px 0}.emoticon-eight{background-position:-21797px 0}.emoticon-nine{background-position:-21829px 0}.emoticon-keycap_ten{background-position:-21861px 0}.emoticon-1234{background-position:-21893px 0}.emoticon-zero{background-position:-21925px 0}.emoticon-hash{background-position:-21957px 0}.emoticon-symbols{background-position:-21989px 0}.emoticon-arrow_backward{background-position:-22021px 0}.emoticon-arrow_down{background-position:-22053px 0}.emoticon-arrow_forward{background-position:-22085px 0}.emoticon-arrow_left{background-position:-22117px 0}.emoticon-capital_abcd{background-position:-22149px 0}.emoticon-abcd{background-position:-22181px 0}.emoticon-abc{background-position:-22213px 0}.emoticon-arrow_lower_left{background-position:-22245px 0}.emoticon-arrow_lower_right{background-position:-22277px 0}.emoticon-arrow_right{background-position:-22309px 0}.emoticon-arrow_up{background-position:-22341px 0}.emoticon-arrow_upper_left{background-position:-22373px 0}.emoticon-arrow_upper_right{background-position:-22405px 0}.emoticon-arrow_double_down{background-position:-22437px 0}.emoticon-arrow_double_up{background-position:-22469px 0}.emoticon-arrow_down_small{background-position:-22501px 0}.emoticon-arrow_heading_down{background-position:-22533px 0}.emoticon-arrow_heading_up{background-position:-22565px 0}.emoticon-leftwards_arrow_with_hook{background-position:-22597px 0}.emoticon-arrow_right_hook{background-position:-22629px 0}.emoticon-left_right_arrow{background-position:-22661px 0}.emoticon-arrow_up_down{background-position:-22693px 0}.emoticon-arrow_up_small{background-position:-22725px 0}.emoticon-arrows_clockwise{background-position:-22757px 0}.emoticon-arrows_counterclockwise{background-position:-22789px 0}.emoticon-rewind{background-position:-22821px 0}.emoticon-fast_forward{background-position:-22853px 0}.emoticon-information_source{background-position:-22885px 0}.emoticon-ok{background-position:-22917px 0}.emoticon-twisted_rightwards_arrows{background-position:-22949px 0}.emoticon-repeat{background-position:-22981px 0}.emoticon-repeat_one{background-position:-23013px 0}.emoticon-new{background-position:-23045px 0}.emoticon-top{background-position:-23077px 0}.emoticon-up{background-position:-23109px 0}.emoticon-cool{background-position:-23141px 0}.emoticon-free{background-position:-23173px 0}.emoticon-ng{background-position:-23205px 0}.emoticon-cinema{background-position:-23237px 0}.emoticon-koko{background-position:-23269px 0}.emoticon-signal_strength{background-position:-23301px 0}.emoticon-u5272{background-position:-23333px 0}.emoticon-u5408{background-position:-23365px 0}.emoticon-u55b6{background-position:-23397px 0}.emoticon-u6307{background-position:-23429px 0}.emoticon-u6708{background-position:-23461px 0}.emoticon-u6709{background-position:-23493px 0}.emoticon-u6e80{background-position:-23525px 0}.emoticon-u7121{background-position:-23557px 0}.emoticon-u7533{background-position:-23589px 0}.emoticon-u7a7a{background-position:-23621px 0}.emoticon-u7981{background-position:-23653px 0}.emoticon-sa{background-position:-23685px 0}.emoticon-restroom{background-position:-23717px 0}.emoticon-mens{background-position:-23749px 0}.emoticon-womens{background-position:-23781px 0}.emoticon-baby_symbol{background-position:-23813px 0}.emoticon-no_smoking{background-position:-23845px 0}.emoticon-parking{background-position:-23877px 0}.emoticon-wheelchair{background-position:-23909px 0}.emoticon-metro{background-position:-23941px 0}.emoticon-baggage_claim{background-position:-23973px 0}.emoticon-accept{background-position:-24005px 0}.emoticon-wc{background-position:-24037px 0}.emoticon-potable_water{background-position:-24069px 0}.emoticon-put_litter_in_its_place{background-position:-24101px 0}.emoticon-secret{background-position:-24133px 0}.emoticon-congratulations{background-position:-24165px 0}.emoticon-m{background-position:-24197px 0}.emoticon-passport_control{background-position:-24229px 0}.emoticon-left_luggage{background-position:-24261px 0}.emoticon-customs{background-position:-24293px 0}.emoticon-ideograph_advantage{background-position:-24325px 0}.emoticon-cl{background-position:-24357px 0}.emoticon-sos{background-position:-24389px 0}.emoticon-id{background-position:-24421px 0}.emoticon-no_entry_sign{background-position:-24453px 0}.emoticon-underage{background-position:-24485px 0}.emoticon-no_mobile_phones{background-position:-24517px 0}.emoticon-do_not_litter{background-position:-24549px 0}.emoticon-non\-potable_water{background-position:-24581px 0}.emoticon-no_bicycles{background-position:-24613px 0}.emoticon-no_pedestrians{background-position:-24645px 0}.emoticon-children_crossing{background-position:-24677px 0}.emoticon-no_entry{background-position:-24709px 0}.emoticon-eight_spoked_asterisk{background-position:-24741px 0}.emoticon-eight_pointed_black_star{background-position:-24773px 0}.emoticon-heart_decoration{background-position:-24805px 0}.emoticon-vs{background-position:-24837px 0}.emoticon-vibration_mode{background-position:-24869px 0}.emoticon-mobile_phone_off{background-position:-24901px 0}.emoticon-chart{background-position:-24933px 0}.emoticon-currency_exchange{background-position:-24965px 0}.emoticon-aries{background-position:-24997px 0}.emoticon-taurus{background-position:-25029px 0}.emoticon-gemini{background-position:-25061px 0}.emoticon-cancer{background-position:-25093px 0}.emoticon-leo{background-position:-25125px 0}.emoticon-virgo{background-position:-25157px 0}.emoticon-libra{background-position:-25189px 0}.emoticon-scorpius{background-position:-25221px 0}.emoticon-sagittarius{background-position:-25253px 0}.emoticon-capricorn{background-position:-25285px 0}.emoticon-aquarius{background-position:-25317px 0}.emoticon-pisces{background-position:-25349px 0}.emoticon-ophiuchus{background-position:-25381px 0}.emoticon-six_pointed_star{background-position:-25413px 0}.emoticon-negative_squared_cross_mark{background-position:-25445px 0}.emoticon-a{background-position:-25477px 0}.emoticon-b{background-position:-25509px 0}.emoticon-ab{background-position:-25541px 0}.emoticon-o2{background-position:-25573px 0}.emoticon-diamond_shape_with_a_dot_inside{background-position:-25605px 0}.emoticon-recycle{background-position:-25637px 0}.emoticon-end{background-position:-25669px 0}.emoticon-on{background-position:-25701px 0}.emoticon-soon{background-position:-25733px 0}.emoticon-clock1{background-position:-25765px 0}.emoticon-clock130{background-position:-25797px 0}.emoticon-clock10{background-position:-25829px 0}.emoticon-clock1030{background-position:-25861px 0}.emoticon-clock11{background-position:-25893px 0}.emoticon-clock1130{background-position:-25925px 0}.emoticon-clock12{background-position:-25957px 0}.emoticon-clock1230{background-position:-25989px 0}.emoticon-clock2{background-position:-26021px 0}.emoticon-clock230{background-position:-26053px 0}.emoticon-clock3{background-position:-26085px 0}.emoticon-clock330{background-position:-26117px 0}.emoticon-clock4{background-position:-26149px 0}.emoticon-clock430{background-position:-26181px 0}.emoticon-clock5{background-position:-26213px 0}.emoticon-clock530{background-position:-26245px 0}.emoticon-clock6{background-position:-26277px 0}.emoticon-clock630{background-position:-26309px 0}.emoticon-clock7{background-position:-26341px 0}.emoticon-clock730{background-position:-26373px 0}.emoticon-clock8{background-position:-26405px 0}.emoticon-clock830{background-position:-26437px 0}.emoticon-clock9{background-position:-26469px 0}.emoticon-clock930{background-position:-26501px 0}.emoticon-heavy_dollar_sign{background-position:-26533px 0}.emoticon-copyright{background-position:-26565px 0}.emoticon-registered{background-position:-26597px 0}.emoticon-tm{background-position:-26629px 0}.emoticon-x{background-position:-26661px 0}.emoticon-heavy_exclamation_mark{background-position:-26693px 0}.emoticon-bangbang{background-position:-26725px 0}.emoticon-interrobang{background-position:-26757px 0}.emoticon-o{background-position:-26789px 0}.emoticon-heavy_multiplication_x{background-position:-26821px 0}.emoticon-heavy_plus_sign{background-position:-26853px 0}.emoticon-heavy_minus_sign{background-position:-26885px 0}.emoticon-heavy_division_sign{background-position:-26917px 0}.emoticon-white_flower{background-position:-26949px 0}.emoticon-100{background-position:-26981px 0}.emoticon-heavy_check_mark{background-position:-27013px 0}.emoticon-ballot_box_with_check{background-position:-27045px 0}.emoticon-radio_button{background-position:-27077px 0}.emoticon-link{background-position:-27109px 0}.emoticon-curly_loop{background-position:-27141px 0}.emoticon-wavy_dash{background-position:-27173px 0}.emoticon-part_alternation_mark{background-position:-27205px 0}.emoticon-trident{background-position:-27237px 0}.emoticon-black_large_square{background-position:-27269px 0}.emoticon-white_large_square{background-position:-27301px 0}.emoticon-white_check_mark{background-position:-27333px 0}.emoticon-black_square{background-position:-27268px 0}.emoticon-white_square{background-position:-27301px 0}.emoticon-black_square_button{background-position:-27365px 0}.emoticon-white_square_button{background-position:-27397px 0}.emoticon-black_circle{background-position:-27429px 0}.emoticon-white_circle{background-position:-27461px 0}.emoticon-red_circle{background-position:-27493px 0}.emoticon-large_blue_circle{background-position:-27525px 0}.emoticon-large_blue_diamond{background-position:-27557px 0}.emoticon-large_orange_diamond{background-position:-27589px 0}.emoticon-small_blue_diamond{background-position:-27621px 0}.emoticon-small_orange_diamond{background-position:-27653px 0}.emoticon-small_red_triangle{background-position:-27685px 0}.emoticon-small_red_triangle_down{background-position:-27717px 0}.emoticon-shipit{background-position:-27749px 0}md-expansion-panel{background:#fff}md-expansion-panel .md-expansion-panel-footer-container,md-expansion-panel .md-expansion-panel-header-container,md-expansion-panel md-expansion-panel-collapsed{background:#fff}md-expansion-panel .md-expansion-panel-footer-container .md-summary,md-expansion-panel .md-expansion-panel-footer-container .md-title,md-expansion-panel .md-expansion-panel-header-container .md-summary,md-expansion-panel .md-expansion-panel-header-container .md-title,md-expansion-panel md-expansion-panel-collapsed .md-summary,md-expansion-panel md-expansion-panel-collapsed .md-title{color:#333}md-expansion-panel md-expansion-panel-footer .md-expansion-panel-footer-container,md-expansion-panel md-expansion-panel-header .md-expansion-panel-header-container{border-color:#ddd}md-expansion-panel .md-expansion-panel-icon svg{fill:#999}md-expansion-panel[disabled] md-expansion-panel-collapsed .md-summary,md-expansion-panel[disabled] md-expansion-panel-collapsed .md-title{color:#ddd}md-expansion-panel[disabled] .md-expansion-panel-icon svg{fill:#ddd}md-expansion-panel:not(.md-open):not([disabled]):focus,md-expansion-panel:not(.md-open):not([disabled]):focus md-expansion-panel-collapsed{background:#eee}.layout-padding>md-expansion-panel-group{padding:0}md-expansion-panel{display:block;position:relative;outline:0;margin-top:0;margin-bottom:0;padding:0;box-shadow:0 -1px 0 #e5e5e5,0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24)}md-expansion-panel.md-open{margin-top:16px;margin-bottom:16px}md-expansion-panel.md-open:first-of-type{margin-top:0}md-expansion-panel.md-close{overflow:hidden}md-expansion-panel:not(.md-no-animation).md-open{-webkit-transition:margin-top .12s cubic-bezier(.25,.8,.25,1),margin-bottom .12s cubic-bezier(.25,.8,.25,1);transition:margin-top .12s cubic-bezier(.25,.8,.25,1),margin-bottom .12s cubic-bezier(.25,.8,.25,1)}md-expansion-panel:not(.md-no-animation).md-close{-webkit-transition:margin-top 80ms cubic-bezier(.25,.8,.25,1),margin-bottom 80ms cubic-bezier(.25,.8,.25,1);transition:margin-top 80ms cubic-bezier(.25,.8,.25,1),margin-bottom 80ms cubic-bezier(.25,.8,.25,1)}md-expansion-panel-collapsed .md-title,md-expansion-panel-header .md-title{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:16px;font-weight:600;min-width:80px;max-width:184px;overflow:hidden;text-overflow:ellipsis;text-align:left;white-space:nowrap}md-expansion-panel-collapsed .md-summary,md-expansion-panel-header .md-summary{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:13px;overflow:hidden;text-overflow:ellipsis;text-align:left;white-space:nowrap}md-expansion-panel md-expansion-panel-collapsed{display:-webkit-box;display:-ms-flexbox;display:flex;min-height:48px;line-height:48px;padding:0 24px;opacity:1;z-index:2;box-sizing:border-box}md-expansion-panel md-expansion-panel-collapsed.md-absolute{position:absolute}md-expansion-panel md-expansion-panel-collapsed.md-hide{opacity:0}md-expansion-panel:not(.md-no-animation) md-expansion-panel-collapsed.md-show{-webkit-transition:opacity 30ms linear;transition:opacity 30ms linear}md-expansion-panel:not(.md-no-animation) md-expansion-panel-collapsed.md-hide{-webkit-transition:opacity .1s cubic-bezier(.25,.8,.25,1);transition:opacity .1s cubic-bezier(.25,.8,.25,1)}md-expansion-panel md-expansion-panel-expanded{display:none;min-height:48px}md-expansion-panel md-expansion-panel-expanded.md-hide,md-expansion-panel md-expansion-panel-expanded.md-show{display:block}md-expansion-panel md-expansion-panel-expanded.md-scroll-y{overflow-y:auto}md-expansion-panel md-expansion-panel-expanded.md-overflow{overflow:hidden}md-expansion-panel md-expansion-panel-expanded md-expansion-panel-content{display:block;padding:16px 24px}md-expansion-panel:not(.md-no-animation) md-expansion-panel-expanded.md-show{-webkit-transition:max-height .12s cubic-bezier(.25,.8,.25,1),opacity .12s cubic-bezier(.25,.8,.25,1);transition:max-height .12s cubic-bezier(.25,.8,.25,1),opacity .12s cubic-bezier(.25,.8,.25,1)}md-expansion-panel:not(.md-no-animation) md-expansion-panel-expanded.md-hide{-webkit-transition:max-height 60ms cubic-bezier(.25,.8,.25,1),opacity 60ms cubic-bezier(.25,.8,.25,1);transition:max-height 60ms cubic-bezier(.25,.8,.25,1),opacity 60ms cubic-bezier(.25,.8,.25,1)}md-expansion-panel-header{display:block;position:relative;outline:0}md-expansion-panel-header .md-expansion-panel-header-container{display:-webkit-box;display:-ms-flexbox;display:flex;min-height:48px;line-height:48px;padding:0 24px;box-sizing:border-box;border-bottom:1px solid;-webkit-box-align:center;-ms-flex-align:center;align-items:center}md-expansion-panel-header.md-stick .md-expansion-panel-header-container{position:fixed;z-index:2;-webkit-animation:panelBodyHeaderStickyHoverIn .3s ease-out both;animation:panelBodyHeaderStickyHoverIn .3s ease-out both}md-expansion-panel-header.md-no-stick .md-expansion-panel-header-container{-webkit-animation:panelBodyHeaderStickyHoverOut .3s ease-out both;animation:panelBodyHeaderStickyHoverOut .3s ease-out both}md-expansion-panel-footer{display:block;position:relative}md-expansion-panel-footer.md-hide,md-expansion-panel-footer.md-show{display:block}md-expansion-panel-footer .md-expansion-panel-footer-container{display:-webkit-box;display:-ms-flexbox;display:flex;min-height:48px;line-height:48px;padding:0 24px;border-top:1px solid;box-sizing:border-box}md-expansion-panel-footer.md-stick .md-expansion-panel-footer-container{position:fixed;z-index:2}md-expansion-panel:not(.md-no-animation) .md-expansion-panel-icon{-webkit-transition:-webkit-transform .6s cubic-bezier(.25,.8,.25,1);transition:-webkit-transform .6s cubic-bezier(.25,.8,.25,1);transition:transform .6s cubic-bezier(.25,.8,.25,1);transition:transform .6s cubic-bezier(.25,.8,.25,1),-webkit-transform .6s cubic-bezier(.25,.8,.25,1)}md-expansion-panel .md-expansion-panel-icon{-webkit-transform:rotate(90deg);transform:rotate(90deg)}md-expansion-panel .md-expansion-panel-icon:first-child{margin-right:18px}md-expansion-panel.md-open>md-expansion-panel-expanded>md-expansion-panel-header .md-expansion-panel-header-container .md-expansion-panel-icon{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}md-expansion-panel.md-open>md-expansion-panel.md-open>md-expansion-panel-collapsed .md-expansion-panel-icon{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}@-webkit-keyframes panelBodyHeaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@keyframes panelBodyHeaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@-webkit-keyframes panelBodyHeaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}@keyframes panelBodyHeaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}[md-color-picker] .md-color-picker-input-container,md-color-picker .md-color-picker-input-container{position:relative}[md-color-picker] .md-color-picker-input-container .md-color-picker-input::-ms-clear,md-color-picker .md-color-picker-input-container .md-color-picker-input::-ms-clear{display:none}[md-color-picker] .md-color-picker-input-container .md-color-picker-preview,md-color-picker .md-color-picker-input-container .md-color-picker-preview{content:'';width:24px;height:24px;border:2px solid #fff;border-radius:50%;box-shadow:0 3px 1px -2px rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.098),0 1px 5px 0 rgba(0,0,0,.084);position:relative;top:22px;overflow:hidden;background-color:#fff;background-image:-webkit-linear-gradient(45deg,#ddd 25%,transparent 25%,transparent 75%,#ddd 75%,#ddd),-webkit-linear-gradient(45deg,#ddd 25%,transparent 25%,transparent 75%,#ddd 75%,#ddd);background-image:linear-gradient(45deg,#ddd 25%,transparent 25%,transparent 75%,#ddd 75%,#ddd),linear-gradient(45deg,#ddd 25%,transparent 25%,transparent 75%,#ddd 75%,#ddd);background-size:8px 8px;background-position:0 0,4px 4px}[md-color-picker] .md-color-picker-input-container .md-color-picker-preview .md-color-picker-result,md-color-picker .md-color-picker-input-container .md-color-picker-preview .md-color-picker-result{width:100%;height:100%}[md-color-picker] .md-color-picker-input-container .md-color-picker-clear,md-color-picker .md-color-picker-input-container .md-color-picker-clear{position:absolute;bottom:42px;right:-16px;color:rgba(0,0,0,.26)}.md-color-picker-container{padding:8px;background:#fff;outline:0;height:397px;width:347px;opacity:1;overflow:hidden;z-index:1000}.md-color-picker-container .md-color-picker-arrow{border:0 solid transparent;border-right-width:30px;border-bottom-width:0;position:absolute;left:0;top:0;-webkit-transition:border-bottom-width cubic-bezier(.25,.8,.25,1) .25s,top cubic-bezier(.25,.8,.25,1) .25s;transition:border-bottom-width cubic-bezier(.25,.8,.25,1) .25s,top cubic-bezier(.25,.8,.25,1) .25s}.md-color-picker-container canvas{width:100%;height:100%}.md-color-picker-container .md-color-picker-preview{-webkit-box-flex:1;-ms-flex:1;flex:1;font-weight:700;font-size:18px;color:#fff;margin:-8px -8px 0;position:relative}.md-color-picker-container .md-color-picker-preview .md-color-picker-result{position:absolute;height:100%;opacity:1;background:red}.md-color-picker-container .md-color-picker-preview .md-color-picker-result>input{position:relative;top:-15px;opacity:0}.md-color-picker-container .md-color-picker-preview .md-color-picker-result>div{position:relative;width:100%}.md-color-picker-container .md-color-picker-preview .md-color-picker-result>div>input{border-width:0;background:0 0;text-align:center;position:absolute;top:-15px;bottom:0;left:0;right:0;color:#eee;outline:0;opacity:0}.md-color-picker-container .md-color-picker-preview .md-color-picker-result>div>input.switch{-webkit-transition:top cubic-bezier(.25,.8,.25,1) .25s,.25s opacity ease-out;transition:top cubic-bezier(.25,.8,.25,1) .25s,.25s opacity ease-out;top:0;opacity:1}.md-color-picker-container .md-color-picker-preview .md-color-picker-tabs .md-tab,.md-color-picker-container .md-color-picker-preview .md-color-picker-tabs md-pagination-wrapper,.md-color-picker-container .md-color-picker-preview .md-color-picker-tabs md-tabs-canvas,.md-color-picker-container .md-color-picker-preview .md-color-picker-tabs md-tabs-wrapper{max-height:28px;height:28px}.md-color-picker-container .md-color-picker-preview .md-color-picker-tabs md-ink-bar{background:rgba(255,255,255,.5)}.md-color-picker-container .md-color-picker-preview .md-color-picker-tabs .md-tab{padding-top:2px;background:rgba(255,255,255,.25);color:#eee;max-width:none!important}.md-color-picker-container .md-color-picker-preview .md-color-picker-tabs .md-tab.md-active{background:0 0}.md-color-picker-container .md-color-picker-preview.dark{color:#333}.md-color-picker-container .md-color-picker-preview.dark .md-color-picker-preview-input{color:#333}.md-color-picker-container .md-color-picker-preview.dark .md-tab{background:rgba(0,0,0,.25);color:#333}.md-color-picker-container .md-color-picker-preview.dark .md-tab.md-active{background:0 0}.md-color-picker-container .md-color-picker-preview.dark md-ink-bar{background:rgba(0,0,0,.5)}.md-color-picker-container .md-color-picker-tabs{margin:0 -8px 0}.md-color-picker-container .md-color-picker-tabs md-tabs[md-align-tabs=bottom]{padding-bottom:0}.md-color-picker-container .md-color-picker-tabs .md-tab,.md-color-picker-container .md-color-picker-tabs md-pagination-wrapper,.md-color-picker-container .md-color-picker-tabs md-tabs-canvas,.md-color-picker-container .md-color-picker-tabs md-tabs-wrapper{max-height:36px;height:36px}.md-color-picker-container .md-color-picker-tabs .md-tab{padding:7px 24px;background:0 0}.md-color-picker-container .md-color-picker-tabs .md-tab:last-of-type{margin-right:-2px}.md-color-picker-container .md-color-picker-tabs md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:298px}.md-color-picker-container .md-color-picker-tabs md-tabs:not(.md-no-tab-content):not(.md-dynamic-height) md-tabs-content-wrapper{height:255px;margin-bottom:8px}.md-color-picker-container .md-color-picker-tabs md-tabs:not(.md-no-tab-content):not(.md-dynamic-height) md-tabs-content-wrapper md-tab-content{height:255px;padding:0 8px 0}.md-color-picker-container .md-color-picker-tabs md-tabs:not(.md-no-tab-content):not(.md-dynamic-height) md-tabs-content-wrapper md-tab-content [md-tabs-template]{height:100%}.md-color-picker-container .md-color-picker-tabs.md-color-picker-colors{margin:8px -8px -8px}.md-color-picker-container .md-color-picker-tabs.md-color-picker-colors md-ink-bar{top:auto}.md-color-picker-container .md-color-picker-tabs.md-color-picker-colors .md-tab{background:rgba(0,0,0,.075)}.md-color-picker-container .md-color-picker-tabs.md-color-picker-colors .md-tab.md-active{background:#fff}.md-color-picker-container .md-color-picker-colors{overflow:hidden;margin-top:8px}.md-color-picker-container .md-color-picker-colors .md-color-picker-marker{position:absolute;border:2px solid #fff;box-shadow:0 0 2px 0 rgba(0,0,0,.5)}.md-color-picker-container .md-color-picker-colors [md-color-picker-spectrum]{position:relative;cursor:crosshair;overflow:hidden;height:255px;width:255px}.md-color-picker-container .md-color-picker-colors [md-color-picker-spectrum] .md-color-picker-marker{width:12px;height:12px;border-radius:50%;box-shadow:0 0 2px 0 rgba(0,0,0,.5),inset 0 0 2px 0 rgba(0,0,0,.5);top:-5px;left:calc(100% - 5px)}.md-color-picker-container .md-color-picker-colors [md-color-picker-alpha],.md-color-picker-container .md-color-picker-colors [md-color-picker-hue]{position:relative;cursor:crosshair;overflow:hidden;width:30px}.md-color-picker-container .md-color-picker-colors [md-color-picker-alpha].md-color-picker-wide,.md-color-picker-container .md-color-picker-colors [md-color-picker-hue].md-color-picker-wide{width:67px}.md-color-picker-container .md-color-picker-colors [md-color-picker-alpha] .md-color-picker-marker,.md-color-picker-container .md-color-picker-colors [md-color-picker-hue] .md-color-picker-marker{height:5px;width:100%;border-left:0;border-right:0;top:-2px;left:0}.md-color-picker-container .md-color-picker-sliders md-slider.red-slider .md-track-fill{background:#d01515}.md-color-picker-container .md-color-picker-sliders md-slider.red-slider .md-thumb:after{background-color:#d01515;border-color:#d01515}.md-color-picker-container .md-color-picker-sliders md-slider.green-slider .md-track-fill{background:#19d015}.md-color-picker-container .md-color-picker-sliders md-slider.green-slider .md-thumb:after{background-color:#19d015;border-color:#19d015}.md-color-picker-container .md-color-picker-sliders md-slider.blue-slider .md-track-fill{background:#1560d0}.md-color-picker-container .md-color-picker-sliders md-slider.blue-slider .md-thumb:after{background-color:#1560d0;border-color:#1560d0}.md-color-picker-container .md-color-picker-material-palette .md-color-picker-material-title{font-size:22px;line-height:75px;padding:0 15px;color:rgba(0,0,0,.85);text-transform:capitalize}.md-color-picker-container .md-color-picker-material-palette .md-color-picker-material-title.dark{color:rgba(255,255,255,.85)}.md-color-picker-container .md-color-picker-material-palette .md-color-picker-material-title:not(:first-child){margin-top:16px}.md-color-picker-container .md-color-picker-material-palette .md-color-picker-with-label{font-size:12px;line-height:33px;padding:0 5px;color:rgba(0,0,0,.7)}.md-color-picker-container .md-color-picker-material-palette .md-color-picker-with-label.dark{color:rgba(255,255,255,.7)}.md-color-picker-container .md-color-picker-material-palette .md-color-picker-material-colors{position:absolute;-webkit-transition:left cubic-bezier(.25,.8,.25,1) .25s,right cubic-bezier(.25,.8,.25,1) .25s,top cubic-bezier(.25,.8,.25,1) .25s,bottom cubic-bezier(.25,.8,.25,1) .25s;transition:left cubic-bezier(.25,.8,.25,1) .25s,right cubic-bezier(.25,.8,.25,1) .25s,top cubic-bezier(.25,.8,.25,1) .25s,bottom cubic-bezier(.25,.8,.25,1) .25s}.md-color-picker-container .md-color-picker-history>div>div{height:20px;margin:4px;background-color:#fff;background-image:-webkit-linear-gradient(45deg,#ddd 25%,transparent 25%,transparent 75%,#ddd 75%,#ddd),-webkit-linear-gradient(45deg,#ddd 25%,transparent 25%,transparent 75%,#ddd 75%,#ddd);background-image:linear-gradient(45deg,#ddd 25%,transparent 25%,transparent 75%,#ddd 75%,#ddd),linear-gradient(45deg,#ddd 25%,transparent 25%,transparent 75%,#ddd 75%,#ddd);background-size:8px 8px;background-position:0 0,4px 4px}.md-color-picker-container .md-color-picker-history>div>div>div{width:100%;height:100%}.md-color-picker-container .md-color-picker-history button{margin-top:auto;margin-left:auto}.md-color-picker-checkered-bg{background-color:#fff;background-image:-webkit-linear-gradient(45deg,#ddd 25%,transparent 25%,transparent 75%,#ddd 75%,#ddd),-webkit-linear-gradient(45deg,#ddd 25%,transparent 25%,transparent 75%,#ddd 75%,#ddd);background-image:linear-gradient(45deg,#ddd 25%,transparent 25%,transparent 75%,#ddd 75%,#ddd),linear-gradient(45deg,#ddd 25%,transparent 25%,transparent 75%,#ddd 75%,#ddd);background-size:8px 8px;background-position:0 0,4px 4px}.emojione{font-size:inherit;height:3ex;width:3.1ex;min-height:20px;min-width:20px;display:inline-block;margin:-.2ex .15em .2ex;line-height:normal;vertical-align:middle}img.emojione{width:auto}.dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea]{position:absolute;z-index:1000;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;-moz-box-shadow:0 6px 12px rgba(0,0,0,.175);-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item{font-size:14px;padding:1px 3px;border:0}.dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item a{text-decoration:none;display:block;height:100%;line-height:1.8em;padding:0 1.54em 0 .615em;color:#4f4f4f}.dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item.active,.dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item:hover{background-color:#e4e4e4}.dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item.active a,.dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item:hover a{color:#333}.dropdown-menu.textcomplete-dropdown[data-strategy=emojionearea] li.textcomplete-item .emojioneemoji{font-size:inherit;height:2ex;width:2.1ex;min-height:20px;min-width:20px;display:inline-block;margin:0 5px .2ex 0;line-height:normal;vertical-align:middle;max-width:100%;top:0}.emojionearea-text .emojioneemoji,.emojionearea-text [class*=emojione-]{font-size:inherit;height:2ex;width:2.1ex;min-height:20px;min-width:20px;display:inline-block;margin:-.2ex .15em .2ex;line-height:normal;vertical-align:middle;max-width:100%;top:0}.emojionearea,.emojionearea *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.emojionearea.emojionearea-disable{position:relative;background-color:#eee;-moz-user-select:-moz-none;-ms-user-select:none;-webkit-user-select:none;user-select:none}.emojionearea.emojionearea-disable:before{content:"";display:block;top:0;left:0;right:0;bottom:0;z-index:1;opacity:.3;position:absolute;background-color:#eee}.emojionearea,.emojionearea.form-control{display:block;position:relative!important;width:100%;height:auto;padding:0;font-size:14px;background-color:#fff;border:1px solid #ccc;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-transition:border-color .15s ease-in-out,-moz-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.emojionearea.focused{border-color:#66afe9;outline:0;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.emojionearea .emojionearea-editor{display:block;height:auto;min-height:8em;max-height:15em;overflow:auto;padding:6px 24px 6px 12px;line-height:1.42857143;font-size:inherit;color:#555;background-color:transparent;border:0;cursor:text;margin-right:1px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.emojionearea .emojionearea-editor:empty:before{content:attr(placeholder);display:block;color:#bbb}.emojionearea .emojionearea-editor:focus{border:0;outline:0;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.emojionearea .emojionearea-editor .emojioneemoji,.emojionearea .emojionearea-editor [class*=emojione-]{font-size:inherit;height:2ex;width:2.1ex;min-height:20px;min-width:20px;display:inline-block;margin:-.2ex .15em .2ex;line-height:normal;vertical-align:middle;max-width:100%;top:0}.emojionearea.emojionearea-inline{height:34px}.emojionearea.emojionearea-inline>.emojionearea-editor{height:32px;min-height:20px;overflow:hidden;white-space:nowrap;position:absolute;top:0;left:12px;right:24px;padding:6px 0}.emojionearea.emojionearea-inline>.emojionearea-button{top:4px}.emojionearea .emojionearea-button{z-index:5;position:absolute;right:3px;top:3px;width:24px;height:24px;opacity:.6;cursor:pointer;-moz-transition:opacity .3s ease-in-out;-o-transition:opacity .3s ease-in-out;-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.emojionearea .emojionearea-button:hover{opacity:1}.emojionearea .emojionearea-button>div{display:block;width:24px;height:24px;position:absolute;-moz-transition:all .4s ease-in-out;-o-transition:all .4s ease-in-out;-webkit-transition:all .4s ease-in-out;transition:all .4s ease-in-out}.emojionearea .emojionearea-button>div.emojionearea-button-open{background-position:0 -24px;opacity:1}.emojionearea .emojionearea-button>div.emojionearea-button-close{background-position:0 0;-webkit-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}.emojionearea .emojionearea-button.active>div.emojionearea-button-open{-webkit-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);opacity:0}.emojionearea .emojionearea-button.active>div.emojionearea-button-close{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0);opacity:1}.emojionearea .emojionearea-picker{background:#fff;position:absolute;-moz-box-shadow:0 1px 5px rgba(0,0,0,.32);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.32);box-shadow:0 1px 5px rgba(0,0,0,.32);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;height:276px;width:316px;top:-15px;right:-15px;z-index:90;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;-webkit-transition:all .25s ease-in-out;transition:all .25s ease-in-out;opacity:0;-moz-user-select:-moz-none;-ms-user-select:none;-webkit-user-select:none;user-select:none}.emojionearea .emojionearea-picker.hidden{display:none}.emojionearea .emojionearea-picker .emojionearea-wrapper{position:relative;height:276px;width:316px}.emojionearea .emojionearea-picker .emojionearea-wrapper:after{content:"";display:block;position:absolute;background-repeat:no-repeat;z-index:91}.emojionearea .emojionearea-picker .emojionearea-filters{width:100%;position:absolute;z-index:95;background:#f5f7f9;padding:0 0 0 7px;height:40px}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter{display:block;float:left;height:40px;width:32px;padding:7px 1px 0;cursor:pointer;-webkit-filter:grayscale(1);filter:grayscale(1)}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter.active{background:#fff}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter.active,.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter:hover{-webkit-filter:grayscale(0);filter:grayscale(0)}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter>i{width:24px;height:24px;top:0}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter>img{width:24px;height:24px;margin:0 3px}.emojionearea .emojionearea-picker .emojionearea-search-panel{height:30px;position:absolute;z-index:95;top:40px;left:0;right:0;padding:5px 0 5px 8px}.emojionearea .emojionearea-picker .emojionearea-search-panel .emojionearea-tones{float:right;margin-right:10px;margin-top:-1px}.emojionearea .emojionearea-picker .emojionearea-tones-panel .emojionearea-tones{position:absolute;top:4px;left:171px}.emojionearea .emojionearea-picker .emojionearea-search{float:left;padding:0;height:20px;width:160px}.emojionearea .emojionearea-picker .emojionearea-search>input{outline:0;width:160px;min-width:160px;height:20px}.emojionearea .emojionearea-picker .emojionearea-tones{padding:0;width:120px;height:20px}.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone{display:inline-block;padding:0;border:0;vertical-align:middle;outline:0;background:0 0;cursor:pointer;position:relative}.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-0,.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-0:after{background-color:#ffcf3e}.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-1,.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-1:after{background-color:#fae3c5}.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-2,.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-2:after{background-color:#e2cfa5}.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-3,.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-3:after{background-color:#daa478}.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-4,.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-4:after{background-color:#a78058}.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-5,.emojionearea .emojionearea-picker .emojionearea-tones>.btn-tone.btn-tone-5:after{background-color:#5e4d43}.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet>.btn-tone,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square>.btn-tone{width:20px;height:20px;margin:0;background-color:transparent}.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet>.btn-tone:after,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square>.btn-tone:after{content:"";position:absolute;display:block;top:4px;left:4px;width:12px;height:12px}.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet>.btn-tone.active:after,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square>.btn-tone.active:after{top:0;left:0;width:20px;height:20px}.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox>.btn-tone,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio>.btn-tone{width:16px;height:16px;margin:0 2px}.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox>.btn-tone.active:after,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio>.btn-tone.active:after{content:"";position:absolute;display:block;background-color:transparent;border:2px solid #fff;width:8px;height:8px;top:2px;left:2px;box-sizing:initial}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block:after,.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block:before,.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block>.emojionearea-category:after,.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block>.emojionearea-category:before,.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-title:after,.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-title:before{content:" ";clear:both;display:block}.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet>.btn-tone,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-bullet>.btn-tone:after,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio>.btn-tone,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-radio>.btn-tone:after{-moz-border-radius:100%;-webkit-border-radius:100%;border-radius:100%}.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox>.btn-tone,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-checkbox>.btn-tone:after,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square>.btn-tone,.emojionearea .emojionearea-picker .emojionearea-tones.emojionearea-tones-square>.btn-tone:after{-moz-border-radius:1px;-webkit-border-radius:1px;border-radius:1px}.emojionearea .emojionearea-picker .emojionearea-scroll-area{height:236px;overflow:auto;overflow-x:hidden;width:100%;position:absolute;padding:0 0 5px}.emojionearea .emojionearea-picker .emojionearea-search-panel+.emojionearea-scroll-area{height:206px}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-emojis-list{z-index:1}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-title{display:block;font-family:Arial,'Helvetica Neue',Helvetica,sans-serif;font-size:13px;font-weight:400;color:#b2b2b2;background:#fff;line-height:20px;margin:0;padding:7px 0 5px 6px}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block{padding:0 0 0 7px}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block>.emojionearea-category{padding:0!important}.emojionearea .emojionearea-picker .emojionearea-scroll-area [class*=emojione-]{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;margin:0;width:24px;height:24px;top:0}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;width:24px;height:24px;float:left;display:block;margin:1px;padding:3px}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn:hover{-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;background-color:#e4e4e4;cursor:pointer}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn i,.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn img{float:left;display:block;width:24px;height:24px}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojibtn img.lazy-emoji{opacity:0}.emojionearea .emojionearea-picker.emojionearea-filters-position-top .emojionearea-filters{top:0;-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px;border-top-left-radius:5px;-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px;border-top-right-radius:5px}.emojionearea .emojionearea-picker.emojionearea-filters-position-top.emojionearea-search-position-top .emojionearea-scroll-area{bottom:0}.emojionearea .emojionearea-picker.emojionearea-filters-position-top.emojionearea-search-position-bottom .emojionearea-scroll-area{top:40px}.emojionearea .emojionearea-picker.emojionearea-filters-position-top.emojionearea-search-position-bottom .emojionearea-search-panel{top:initial;bottom:0}.emojionearea .emojionearea-picker.emojionearea-filters-position-bottom .emojionearea-filters{bottom:0;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px}.emojionearea .emojionearea-picker.emojionearea-filters-position-bottom.emojionearea-search-position-bottom .emojionearea-scroll-area{top:0}.emojionearea .emojionearea-picker.emojionearea-filters-position-bottom.emojionearea-search-position-bottom .emojionearea-search-panel,.emojionearea .emojionearea-picker.emojionearea-filters-position-bottom.emojionearea-search-position-top .emojionearea-scroll-area{top:initial;bottom:40px}.emojionearea .emojionearea-picker.emojionearea-filters-position-bottom.emojionearea-search-position-top .emojionearea-search-panel{top:0}.emojionearea .emojionearea-picker.emojionearea-picker-position-top{margin-top:-286px;right:-14px}.emojionearea .emojionearea-picker.emojionearea-picker-position-top .emojionearea-wrapper:after{width:19px;height:10px;background-position:-2px -49px;bottom:-10px;right:20px}.emojionearea .emojionearea-picker.emojionearea-picker-position-top.emojionearea-filters-position-bottom .emojionearea-wrapper:after{background-position:-2px -80px}.emojionearea .emojionearea-picker.emojionearea-picker-position-left,.emojionearea .emojionearea-picker.emojionearea-picker-position-right{margin-right:-326px;top:-8px}.emojionearea .emojionearea-picker.emojionearea-picker-position-left .emojionearea-wrapper:after,.emojionearea .emojionearea-picker.emojionearea-picker-position-right .emojionearea-wrapper:after{width:10px;height:19px;background-position:0 -60px;top:13px;left:-10px}.emojionearea .emojionearea-picker.emojionearea-picker-position-left.emojionearea-filters-position-bottom .emojionearea-wrapper:after,.emojionearea .emojionearea-picker.emojionearea-picker-position-right.emojionearea-filters-position-bottom .emojionearea-wrapper:after{background-position:right -60px}.emojionearea .emojionearea-picker.emojionearea-picker-position-bottom{margin-top:10px;right:-14px;top:47px}.emojionearea .emojionearea-picker.emojionearea-picker-position-bottom .emojionearea-wrapper:after{width:19px;height:10px;background-position:-2px -100px;top:-10px;right:20px}.emojionearea .emojionearea-picker.emojionearea-picker-position-bottom.emojionearea-filters-position-bottom .emojionearea-wrapper:after{background-position:-2px -90px}.emojionearea .emojionearea-button.active+.emojionearea-picker{opacity:1}.emojionearea .emojionearea-button.active+.emojionearea-picker-position-top{margin-top:-269px}.emojionearea .emojionearea-button.active+.emojionearea-picker-position-left,.emojionearea .emojionearea-button.active+.emojionearea-picker-position-right{margin-right:-309px}.emojionearea .emojionearea-button.active+.emojionearea-picker-position-bottom{margin-top:-7px}.emojionearea.emojionearea-standalone{display:inline-block;width:auto;box-shadow:none}.emojionearea.emojionearea-standalone .emojionearea-editor{min-height:33px;position:relative;padding:6px 42px 6px 6px}.emojionearea.emojionearea-standalone .emojionearea-editor::before{content:"";position:absolute;top:4px;left:50%;bottom:4px;border-left:1px solid #e6e6e6}.emojionearea.emojionearea-standalone .emojionearea-editor.has-placeholder .emojioneemoji{opacity:.4}.emojionearea.emojionearea-standalone .emojionearea-button{top:0;right:0;bottom:0;left:0;width:auto;height:auto}.emojionearea.emojionearea-standalone .emojionearea-button>div{right:6px;top:5px}.emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-bottom .emojionearea-wrapper:after,.emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-top .emojionearea-wrapper:after{right:23px}.emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-left .emojionearea-wrapper:after,.emojionearea.emojionearea-standalone .emojionearea-picker.emojionearea-picker-position-right .emojionearea-wrapper:after{top:15px}.emojionearea .emojionearea-button>div,.emojionearea .emojionearea-picker .emojionearea-wrapper:after{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAABuCAYAAADMB4ipAAAHfElEQVRo3u1XS1NT2Rb+9uOcQF4YlAJzLymFUHaLrdxKULvEUNpdTnRqD532f+AHMLMc94gqR1Zbt8rBnUh3YXipPGKwRDoWgXvrYiFUlEdIkPPYZ/dAkwox5yQCVt/bzRrBPnt9e+211/etFeDQDu3ArL+/X37OeqmRWoH7+vpItfWawStF1tfXR+zW9xW5ne0p8loOcAKuCdwpRft60C8a+X5zTvebCqcAvmidf1GGHtqhHdpf1qqKzsrKipyensbi4iKWl5cBAMFgEG1tbYhGo2hpadlbmxseHpaDg4MAgI6ODng8HgBAPp/H/Pw8AODatWvo7e2tvUHrui7v3r2L+fl5XL58GVeuXIHH49m1N5/Py0ePHmF0dBQdHR24desWVFXdtYdXAn/48CHm5+dx8+ZNRKPRigEUDpuenpb3799H4YaOnWh5eVmOj48jFoshGo0STdPkwMCAXF5elqV7BgYGpKZpMhqNklgshrGxMbx580Y6gicSCTDGEIvFAADpdBqpVArJZLK4J5lMIpVKIZ1OAwBisRgYY0gkEs6Rp1IphMNh+Hw+AgCGYQAANE0r7in8Xfjm8/lIOBzGq1evnMHX19fR1NRU/D8UCoFzjnA4XFwLh8PgnCMUChXXmpqakM1mUfVBS62xsZHk83lZWi1nz579ZA0AhBDO4A0NDchkMsWSJIRAURRiVy26rktVVUkmk0EgEHAGP3XqFKamppDP56Vpmrhz5w5u374t/X4/OP+w3TRNZLNZ6LoO0zSRz+dlf38/Ll686Jzz8+fPQwiBeDwOt9tNrl+/jkwmU6yaQpVkMhncuHEDbrebxONxCCEQiUScIw8Gg+TBgwdyZGQEyWRSdnV1kVQqJYeGhrC6ugrGGEKhEHp7e3Hy5EmSTCblvXv30NPTg2AwSA6M/vF4HCMjI7b0/yzh8vv9AIBsNrt34aokuQsLC7skt729varkHtqftUFf++FHsrq0QN3eBvp68Tfvf9Mv12oFCYU7G//e9nVuO7dpNbe2W4M//yQr0p8yRvyBo1Zr++lwLcCt7afD/sBRizJGavrB1dDYYh47Htrq+Kb7jBNwxzfdZ44dD201NLaYVUkU7ozQpuAJBkARwnRZpunN5zaa5hJjiXLH05GeiMd7JEM5zzHGNQBGZvk/Iv0yYVWMvK0zKk1Dl6ahW5RQobjqdjy+wEZn9PKF0n2d0csXPL7AhuKq26GECtPQLdPQZVtn1LlB69p7yRVVSEiDEGJwRd12e4+8PR3piRQidnuPvOWKuk0IMSSkwRVV6Np7WVVbSqvGsgSnlKkAFNPQXdrOtuKqcxtcUTUAhmUJnVJmlleJo3CVHmAaOlPUOmYJkxFKibQsSRkXhr4juKIKO2BHVSwcoLrqCVdUYho6K3YYRRWmoUtdey/tgKtK7rUffiQAsLq08MnbNLe2WwBgB/zHzueFyD8nwlIfbvdx8eU0WV1aKD1cVAMs9+F2j9gUPEEKemEJIe3AnXy4XfkBoNKSZHNthWfX31EA69VKttyHVyIOY1wRwmS6tqNsrr31vXo5k/bUu4gT2cp9lhbm0rzCJpeUUrE0vS63+c7/6uXMbDUWl/ssLczNFrVFddUT09AZpUy1LKvO0DVfPrfR9HxqfNbuEe185l9MFX3o6tIC5YpKFLWOfdQQ93Zu49j0+FDCDtjOp1yaOQCYhs4Y40wI05XfWj8yPT40Ua2ey33mEmMTtp2IUEq0nW3FKeJPGPjRp1Iz2QUuLUu66txG9NLVSK3gBZ+C1lcE54oqKOOCK6rm8QU2unu+u1ANuNynvFsBAG1ubbdMQ5eGviMAFDuP0w3sfMpvQEtb24fOQncU1bXl8R7JnOu+ZNv97XxKJwY6+PNPsrm13drObVqUMlMIU5OWpVHOc96Go5lTnV2fzC/VfAozD7HTCa6olBBa1Imlhbmq2lLuQ5xaW6nCPfnln0Yt7bDUhzhps8cfKH5//uTXmvS81OeLdqI/ZoROzSZrHqG/OvOPzxuhK5VgJTvV2bW3EdqJRABwrvvS/kfoSkoZvXT1YEbociHr7vnuYEfogpBFL109HKH/h0fomnXg3Lff79r7/MmvVbWG7gX4QObzc99+Tz7mHKah05KcW6ahQ9feS6cbMCdgt7eBWJagjCuUAC5tZzuouuo0Spm0hElc9R4cbf4bVl8v1p6WUmCuqEwIs34ruxaeeTy4uJVd67As08UVlVmWoG5vA7FLG3WMmHEupVTyW+vh2cn4DADMTsaTuc21LiGEhzHOnQ6gNtMrJSBMCKHkNt999WLi0S7hejEZH81n174WpukiIMw0dKq66p3Bw50RwhUVXFGJKUy28Xal48VkfKrSlWenhsc23q2cEB9SR7iiItwZIbbgHn8AlDFCCMW7laXjqZnHjkNpaubJzNuVpWZCKChjxOMPVH/QlaW0f/G3ZLqWWl6ce/bvlddp7yFD/w8Z+njoX1+GoZMjgzMAMDkyeLAMnRh+uKveJ0YGD4ahEyODFRk6OfrL/hj67GnckaHPng7vjaGzyYmaGDr77KktQ38H8tqx8Wja+WIAAAAASUVORK5CYII=)!important}.emojionearea.emojionearea-standalone .emojionearea-editor.has-placeholder{background-repeat:no-repeat;background-position:20px 4px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAABlBMVEUAAAC/v79T5hyIAAAAAXRSTlMAQObYZgAAABNJREFUCNdjYGNgQEb/P4AQqiAASiUEG6Vit44AAAAASUVORK5CYII=)!important}md-date-range{cursor:pointer}md-date-range-picker{display:block;max-width:664px}md-date-range-picker .md-date-range-picker__one-panel{display:block;max-width:340px}.md-date-range-picker [event-key] *{pointer-events:none}.md-date-range-picker{position:relative;background:#fff}.md-date-range-picker__title{text-align:center;font-size:1rem;background:#106cc8;color:#fff;margin:0;padding:16px 0}.md-date-range-picker__month-year{text-align:center;font-size:1rem;background:#eee;margin:0;padding:0 0}.md-date-range-picker__month-year .md-select-icon{display:none}.md-date-range-picker__month-year md-select{margin:10px 0}.md-date-range-picker__templates{background:#eee}.md-date-range-picker__calendar-wrapper{padding:0 0;width:308px;min-width:308px}.md-date-range-picker__week{background:#e0e0e0}.md-date-range-picker__calendar__grid{font-size:13px;color:#222;padding:0;display:inline-block;width:44px;height:44px;line-height:44px;text-align:center;position:relative;outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:50%;background:rgba(2550,255,255,0)}.md-date-range-picker__calendar .md-date-range-picker__calendar__grid{cursor:pointer}.md-date-range-picker__calendar__not-in-active-month{color:rgba(0,0,0,.5)}.md-date-range-picker__calendar .md-date-range-picker__calendar__grid:hover:not(.md-date-range-picker__calendar__selected):not(.md-date-range-picker__calendar__disabled){transition:background .3s ease-out;background:rgba(0,0,0,.1)}.md-date-range-picker__calendar__selected{background:#106cc8;color:#fff;border-radius:0}.md-date-range-picker__calendar__selected.md-date-range-picker__calendar__disabled{background:rgba(0,0,0,.2)}.md-date-range-picker__calendar__not-in-active-month.md-date-range-picker__calendar__selected{color:rgba(255,255,255,.2)}.md-date-range-picker__calendar__today{font-weight:700}.md-date-range-picker__calendar .md-date-range-picker__calendar__grid.md-date-range-picker__calendar__disabled{opacity:.3;cursor:not-allowed}.md-date-range-picker__calendar__start{border-top-left-radius:50%;border-bottom-left-radius:50%}.md-date-range-picker__calendar__end{border-top-right-radius:50%;border-bottom-right-radius:50%}.md-date-range-picker__select{z-index:100}.md-date-range-picker__calendar__selection{pointer-events:none}.angucomplete-holder{position:relative}.angucomplete-dropdown{border-color:#ececec;border-width:1px;border-style:solid;border-radius:2px;width:250px;padding:6px;cursor:pointer;z-index:9999;position:absolute;margin-top:-6px;background-color:#fff}.angucomplete-searching{color:#acacac;font-size:14px}.angucomplete-description{font-size:14px}.angucomplete-row{padding:5px;color:#000;margin-bottom:4px;clear:both}.angucomplete-selected-row{background-color:#add8e6;color:#fff}.angucomplete-image-holder{padding-top:2px;float:left;margin-right:10px;margin-left:5px}.angucomplete-image{height:34px;width:34px;border-radius:50%;border-color:#ececec;border-style:solid;border-width:1px}.angucomplete-image-default{background-position:center;background-size:contain;height:34px;width:34px}/*!
- * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com
+ * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
- */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}/*!
- * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com
+ */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}/*!
+ * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
  */@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands";font-weight:400}/*!
- * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com
+ * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
  * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
  */@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Free";font-weight:900}.mw-form-builder{background-color:#e4e5e6}.mw-form-builder .mw-title-page{background-color:#fff;padding:10px;border:1px solid #d6d6d6;margin-bottom:7px;position:relative}.mw-form-builder .mw-add-new-page-button{opacity:.8}.mw-form-builder .mw-add-new-page-button:hover{opacity:1;background-color:#fff}.mw-form-builder .mw-form-page-builder{background-color:#fff;border:1px solid #d6d6d6;margin-bottom:7px;position:relative}.mw-form-builder .mw-form-page-builder.page-folded .mw-page-tab-actions button.unfold-button{display:inline-block!important}.mw-form-builder .mw-form-page-builder.page-folded .mw-form-question-builder .mw-preview .question-answers,.mw-form-builder .mw-form-page-builder.page-folded .mw-page-tab-actions button.fold-button{display:none}.mw-form-builder .mw-form-page-builder .mw-page-tab-container{position:relative}.mw-form-builder .mw-form-page-builder .mw-page-tab-container .mw-form-page-tab{background-color:#eee;display:inline-block;height:20px}.mw-form-builder .mw-form-page-builder .mw-page-tab-container .mw-form-page-tab .mw-page-tab-text{color:#4d4d4d;font:400 11px arial,sans-serif;padding:0 4px;position:relative;top:3px;vertical-align:top}.mw-form-builder .mw-form-page-builder .mw-page-tab-container .mw-form-page-tab .mw-page-tab-checkbox{color:#4d4d4d;font:400 11px arial,sans-serif}.mw-form-builder .mw-form-page-builder .mw-page-tab-container .mw-form-page-tab .mw-page-tab-checkbox-text{padding:0 2px;position:relative;top:-3px}.mw-form-builder .mw-form-page-builder .mw-page-tab-container .mw-page-tab-triangle{border-right:20px solid transparent;border-top:20px solid #eee;display:inline-block;height:0;position:absolute;width:0}.mw-form-builder .mw-form-page-builder .mw-page-tab-container .mw-page-tab-actions{position:absolute;right:0;top:0;padding:4px}.mw-form-builder .mw-form-page-builder .mw-page-tab-container .mw-page-tab-actions button{border:none;opacity:.6;outline:0}.mw-form-builder .mw-form-page-builder .mw-page-bottom-tab-container:hover,.mw-form-builder .mw-form-page-builder .mw-page-tab-container .mw-page-tab-actions button:hover{opacity:1}.mw-form-builder .mw-form-page-builder .mw-page-tab-container .mw-page-tab-actions button.remove-button{margin-left:6px}.mw-form-builder .mw-form-page-builder .mw-page-tab-container .mw-page-tab-actions button.unfold-button{display:none}.mw-form-builder .mw-form-page-builder .mw-page-bottom-tab-container{position:absolute;right:-3px;bottom:-1px;opacity:1}.mw-form-builder .mw-form-page-builder .mw-page-bottom-tab-container .mw-form-page-bottom-tab{background-color:#e4e5e6;display:inline-block;height:35px}.mw-form-builder .mw-form-page-builder .mw-page-bottom-tab-container .mw-form-page-bottom-tab .page-flow-select{color:#4d4d4d;font:400 12px arial,sans-serif;padding:4px}.mw-form-builder .mw-form-page-builder .mw-page-bottom-tab-container .mw-form-page-bottom-tab .page-flow-select label{margin-right:4px}.mw-form-builder .mw-form-page-builder .mw-page-bottom-tab-container .mw-form-page-bottom-tab .page-flow-select select{background-color:#f5f5f5;padding:2px;height:25px}.mw-form-builder .mw-form-page-builder .mw-page-bottom-tab-container .mw-page-bottom-tab-triangle{border-left:35px solid transparent;border-bottom:35px solid #e4e5e6;display:inline-block;height:0;width:0}.mw-form-builder .mw-form-page-builder .mw-page-bottom-tab-container .mw-page-bottom-tab-actions{background-color:#e4e5e6;padding:4px}.mw-form-builder .mw-form-page-builder .mw-page-bottom-tab-container .mw-page-bottom-tab-actions button{height:25px;width:25px;padding:1px;line-height:25px;font-size:22px;background-color:#fff;border:none;opacity:.8;outline:0;margin-left:5px}.mw-form-builder .mw-form-page-builder .mw-page-bottom-tab-container .mw-page-bottom-tab-actions button:hover{opacity:1}.mw-form-builder .mw-form-page-builder .form-page-builder-body{padding:10px}.mw-form-builder .mw-form-page-builder .add-element.btn-group .dropdown-menu button{width:100%;border:none;background:0 0;line-height:28px}.mw-form-builder .mw-form-page-builder .add-element.btn-group .dropdown-menu button:hover{background:#ccc}.mw-form-builder .mw-form-page-builder .mw-form-page-element-builder-wrapper{outline:0}.mw-form-builder .mw-form-page-builder .mw-form-page-element-builder{outline:0;margin-bottom:10px;z-index:0;zoom:1;position:relative}.mw-form-builder .mw-form-page-builder .mw-form-page-element-builder.active{box-shadow:1px 0 10px 1px rgba(0,0,0,.3);z-index:1;background-color:#fbfbfb;cursor:default}.mw-form-builder .mw-form-page-builder .mw-form-page-element-builder.active:hover{background-color:#fbfbfb;cursor:default}.mw-form-builder .mw-form-page-builder .mw-form-page-element-builder:hover{background-color:#f8f8f8;cursor:move}.mw-form-builder .mw-form-page-builder .mw-form-page-element-builder:hover .mw-page-element-actions-tab button.edit-button{opacity:.6}.mw-form-builder .mw-form-page-builder .mw-form-page-element-builder:hover .mw-page-element-actions-tab button.edit-button:hover{opacity:1}.mw-form-builder .mw-form-page-builder .mw-form-page-element-builder .mw-page-element-actions-tab{position:absolute;right:0;top:0;padding:8px}.mw-form-builder .mw-form-page-builder .mw-form-page-element-builder .mw-page-element-actions-tab button{border:none;opacity:.6;outline:0}.mw-form-builder .mw-form-page-builder .mw-form-page-element-builder .mw-page-element-actions-tab button:hover{opacity:1}.mw-form-builder .mw-form-page-builder .mw-form-page-element-builder .mw-page-element-actions-tab button.remove-button{margin-left:6px}.mw-form-builder .mw-form-page-builder .mw-form-page-element-builder .mw-page-element-actions-tab button.edit-button{opacity:0}.mw-form-builder .mw-form-page-builder .beingDragged{margin-bottom:.5em!important;border:2px dotted #ccc!important;background:#f8f8f8!important}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-text{font-weight:700}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-type select{margin-right:8px}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .question-offered-answer-list{outline:0}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .draggable-list-item,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-division-builder .mw-question-division-list-item,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-grid-builder .mw-grid-item,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-priority-list-builder .mw-question-priority-list-item,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .question-offered-answer-list-builder .mw-question-offered-answer{margin-top:3px}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-division-builder .add-new-item-widget,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-grid-builder .add-new-item-widget,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-priority-list-builder .add-new-item-widget,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .question-offered-answer-list-builder .add-new-answer-widget{margin-top:0;outline:0}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .draggable-list-item .drag-handle,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-division-builder .mw-question-division-list-item .drag-handle,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-grid-builder .mw-grid-item .drag-handle,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-priority-list-builder .mw-question-priority-list-item .drag-handle,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .question-offered-answer-list-builder .mw-question-offered-answer .drag-handle{margin-right:6px;color:grey;cursor:move;display:inline-block;width:15px;height:25px;padding:0 4px;opacity:.5}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .draggable-list-item .drag-handle:hover,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-division-builder .mw-question-division-list-item .drag-handle:hover,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-grid-builder .mw-grid-item .drag-handle:hover,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-priority-list-builder .mw-question-priority-list-item .drag-handle:hover,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .question-offered-answer-list-builder .mw-question-offered-answer .drag-handle:hover{opacity:1}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .draggable-list-item .remove-item-button,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-division-builder .mw-question-division-list-item .remove-item-button,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-grid-builder .mw-grid-item .remove-item-button,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-priority-list-builder .mw-question-priority-list-item .remove-item-button,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .question-offered-answer-list-builder .mw-question-offered-answer .remove-item-button{display:inline-block;border-radius:100%;border:none;opacity:.5;outline:0}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .draggable-list-item .remove-item-button:hover,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-division-builder .mw-question-division-list-item .remove-item-button:hover,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-grid-builder .mw-grid-item .remove-item-button:hover,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-priority-list-builder .mw-question-priority-list-item .remove-item-button:hover,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .question-offered-answer-list-builder .mw-question-offered-answer .remove-item-button:hover{opacity:1}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .question-offered-answer-list-builder .mw-question-offered-answer .option-type-indicator{display:inline-block;margin-right:5px}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .question-offered-answer-list-builder .mw-question-offered-answer .offered-answer-value{display:inline-block;width:300px}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .question-offered-answer-list-builder .add-new-answer-widget .drag-handle{cursor:auto;opacity:.5}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .question-offered-answer-list-builder .add-new-answer-widget .option-type-indicator{opacity:.5}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .question-offered-answer-list-builder .add-new-answer-widget input{cursor:pointer;opacity:.5}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .question-offered-answer-list-builder .add-new-answer-widget .add-custom-answer{opacity:1!important}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .question-offered-answer-list-builder .add-new-answer-widget .add-custom-answer button{background:0 0!important;border:none;padding:0!important;font:inherit;outline:0;color:#00f;cursor:pointer}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .question-offered-answer-list-builder .custom-answer label{display:inline-block;margin:0;width:40px;font-weight:400}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .question-offered-answer-list-builder .custom-answer input{width:256px!important}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-grid-builder .mw-grid-col-list,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-grid-builder .mw-grid-row-list{outline:0}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-grid-builder .mw-grid-separator{border:1px solid #e5e5e5;margin-bottom:10px}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-grid-builder .mw-grid-item .mw-item-label-value{display:inline-block;width:400px}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-grid-builder .add-new-item-widget label{opacity:.5}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-grid-builder .add-new-item-widget .drag-handle{cursor:auto;opacity:.5;display:inline-block}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-division-builder .add-new-item-widget input,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-grid-builder .add-new-item-widget input,.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-priority-list-builder .add-new-item-widget input{width:400px;cursor:pointer;opacity:.5;display:inline-block}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-grid-builder .add-new-item-widget .option-type-indicator{opacity:.5}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-priority-list-builder .question-priority-list{outline:0}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-priority-list-builder .mw-question-priority-list-item input{display:inline-block;width:400px}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-division-builder .question-division-list{outline:0}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-division-builder .mw-question-division-list-item input{display:inline-block;width:400px}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-preview .mw-priority-list table{width:100%;min-height:100px!important;vertical-align:top}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-preview .mw-priority-list table td{height:100%;width:50%;border:1px solid #ccc;border-radius:7px;padding:7px;vertical-align:top}.mw-data-table tbody tr,.mw-data-table td,.mw-data-table th{height:48px;position:relative}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-preview .stars{padding-top:8px}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-preview .stars .star{margin-right:16px;font-size:24px;color:#ddd}.mw-form-builder .mw-form-page-builder .mw-range input{display:inline-block;width:auto}.mw-form-builder .mw-confirmation-page{margin-top:25px}.mw-form-builder .ng-invalid.ng-dirty,.mw-form-builder .ng-invalid.strict-validation,.mw-form-builder .ng-submitted .ng-invalid,.mw-form-builder .ng-submitted .ng-invalid.ui-select-bootstrap button,.mw-form-builder .strict-validation .ng-invalid.ui-select-bootstrap>button{border-color:red;outline-color:red}.mw-form-builder .page-element-list{min-height:35px}.mw-form-builder .page-element-list .empty-page-element-list-label{position:absolute}.mw-form-builder .mw-form-image-builder .image-edition{margin-top:18px}.mw-form-builder .mw-form-image-builder .image-edition .image-align-control{text-align:center;margin:15px}.mw-form-builder .mw-form-image-builder .image-edition .image-align-control button.selected{background-color:#ddd}.mw-form-builder .align-left{text-align:left}.mw-form-builder .align-center{text-align:center}.mw-form-builder .align-right{text-align:right}.mw-form-builder .no-drag{cursor:default}.mw-data-table{position:relative;border:1px solid rgba(0,0,0,.12);border-collapse:collapse;white-space:nowrap;background-color:#fff}.mw-data-table.mw-no-border{border:none}.mw-data-table.mw-no-border tbody tr:first-of-type td,.mw-data-table.mw-no-border thead td,.mw-data-table.mw-no-border thead th{border-top:none!important}.mw-data-table.mw-no-border tbody tr:last-of-type td{border-bottom:none!important}.mw-data-table thead{padding-bottom:3px}.mw-data-table tbody tr{transition-property:background-color}.mw-data-table tbody tr.is-selected{background-color:#e0e0e0}.mw-data-table tbody tr:hover{background-color:#eee}.mw-data-table td,.mw-data-table th{padding:0 18px 12px;text-align:right}.mw-data-table td:first-of-type,.mw-data-table th:first-of-type{padding-left:24px}.mw-data-table td:last-of-type,.mw-data-table th:last-of-type{padding-right:24px}.mw-data-table td{vertical-align:middle;border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12);padding-top:12px;box-sizing:border-box}.mw-data-table th{vertical-align:bottom;text-overflow:ellipsis;font-size:12px;color:rgba(0,0,0,.54);padding-bottom:8px;box-sizing:border-box}.mw-form-builder .mw-form-page-builder .mw-form-page-element-builder{padding:20px 10px}.mw-form-builder .mw-form-page-builder .mw-form-page-element-builder.inactive{padding:10px 7px}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-text{margin-bottom:10px}.mw-form-builder .mw-form-page-builder .mw-form-question-builder-wrapper .mw-question-other-answer md-input-container{margin:0}.mw-form-builder .mw-form-page-builder .mw-question-division-builder{margin-top:15px}.mw-form-builder .mw-form-page-builder .mw-division-list md-input-container{margin:0}.mw-form-builder .mw-title-page{padding-top:20px}.mw-form-builder md-input-container{margin:7px 0}.mw-form-builder .mw-question-other-answer md-input-container{margin:0 5px}.mw-form-viewer{font-size:16px;line-height:24px;background-color:#fff;padding:12px 12px 48px}.mw-form-viewer h1{font-size:26px;line-height:48px;margin-top:0;margin-bottom:0}.mw-form-viewer h2{font-size:16px;line-height:24px;margin-top:0;margin-bottom:24px}.mw-form-viewer h3{font-size:16px;line-height:24px;margin:0}.mw-form-viewer img{max-width:100%}.mw-form-viewer input,.mw-form-viewer select,.mw-form-viewer textarea{font-size:16px}.mw-form-viewer .checkbox,.mw-form-viewer .radio{margin:0 0 12px}.mw-form-viewer .checkbox label,.mw-form-viewer .radio label{padding-left:24px}.mw-form-viewer .checkbox input[type=text],.mw-form-viewer .radio input[type=text]{margin:12px 0 0}.mw-form-viewer .mw-form-page{margin:24px 0}.mw-form-viewer .mw-form-page .mw-page-element{margin-bottom:48px}.mw-form-viewer .mw-form-page .mw-page-element .mw-question-text{margin-bottom:12px;font-weight:700}.mw-form-viewer .mw-form-page .mw-priority-list .beingDragged{height:24px;margin-bottom:.5em!important;border:2px dotted #ccc!important;background:0 0!important}.mw-form-viewer .mw-form-description,.mw-form-viewer .question-grid .question-grid-row{margin-bottom:24px}.mw-form-viewer .mw-form-page .mw-priority-list .mw-item{cursor:pointer}.mw-form-viewer .mw-form-page .mw-priority-list .mw-item:hover{font-weight:700}.mw-form-viewer .mw-form-page .mw-priority-list table{width:100%;min-height:100px!important;vertical-align:top}.mw-form-viewer .mw-form-page .mw-priority-list table td{height:100%;width:50%;border:1px solid #ccc;border-radius:7px;padding:7px;vertical-align:top}.mw-form-viewer .mw-form-page .align-left{text-align:left}.mw-form-viewer .mw-form-page .align-center{text-align:center}.mw-form-viewer .mw-form-page .align-right{text-align:right}.mw-form-viewer .mw-form-page .mw-range{display:-webkit-flex;display:flex}.mw-form-viewer .mw-form-page .mw-range input[type=range]{max-width:400px}.mw-form-viewer .mw-form-page .mw-range .mw-range-value-label{margin-left:12px;font-size:24px}.mw-form-viewer .no-drag{cursor:default}.mw-form-viewer .ng-invalid.ng-dirty{border-color:red;outline-color:red}.mw-form-viewer .question-grid .question-grid-row:last-child{margin-bottom:0}.mw-form-viewer .question-grid .question-grid-cell{padding:6px;margin-bottom:3px;background-color:#f9f9f9}.mw-form-viewer .question-grid .question-grid-cell label{margin-left:6px;font-weight:400}.mw-form-viewer .question-grid h3.question-grid-cell{background-color:transparent;margin:0}.mw-form-viewer .stars{display:-webkit-flex;display:flex;flex-direction:row-reverse;-webkit-flex-direction:row-reverse;justify-content:space-around;-webkit-justify-content:space-around}.mw-form-viewer .stars .stars-end,.mw-form-viewer .stars input{display:none}.mw-form-viewer .stars .star{cursor:pointer}.mw-form-viewer .stars .star i{font-size:24px;color:#ddd}.mw-form-viewer .stars .star:last-of-type{padding-left:0}.mw-form-viewer .stars input:checked~label i,.mw-form-viewer .stars input:not(:checked)+label:hover i,.mw-form-viewer .stars input:not(:checked)+label:hover~label i{color:gold}@media (min-width:992px){.mw-form-viewer{padding:24px}.mw-form-viewer h1{font-size:42px;line-height:48px;margin:0 0 24px}.mw-form-viewer h2{font-size:26px;line-height:48px;margin:0 0 24px}.mw-form-viewer .checkbox input[type=text],.mw-form-viewer .radio input[type=text]{margin:0 0 0 12px}.mw-form-viewer .question-grid{display:table;border-collapse:collapse;width:100%}.mw-form-viewer .question-grid .question-grid-row{display:table-row;margin:0}.mw-form-viewer .question-grid .question-grid-block{border-top:1px solid #ddd}.mw-form-viewer .question-grid .question-grid-block:nth-child(2n){background-color:#f9f9f9}.mw-form-viewer .question-grid .question-grid-cell{font-weight:400;display:table-cell;background-color:transparent;padding:6px;margin:0}.mw-form-viewer .question-grid .question-grid-heading{font-weight:700}.mw-form-viewer .stars{justify-content:flex-end;-webkit-justify-content:flex-end}.mw-form-viewer .stars .star{padding-left:8px;padding-right:8px}}.mw-division-list md-input-container,.mw-question-other-answer md-input-container{margin:0}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes rotate{100%{transform:rotate(360deg)}}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg)}}@keyframes colors{0%,100%{stroke:#4285f4}25%{stroke:#de3e35}50%{stroke:#f7c223}75%{stroke:#1b9a59}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0;stroke:red}50%{stroke-dasharray:90,150;stroke-dashoffset:-35;stroke:#ff0}100%{stroke-dasharray:90,150;stroke-dashoffset:-124;stroke:green}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.animated{-webkit-animation-duration:.7s;animation-duration:.7s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.fast,.modal.animated{-webkit-animation-duration:.2s;animation-duration:.2s}.animated.slow{-webkit-animation-duration:1.1s;animation-duration:1.1s}.animated.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}.animated.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}.spinner-container{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;z-index:2;width:65px;height:65px}.spinner-container .path{stroke-dasharray:1,150;stroke-dashoffset:0;stroke:#2196f3;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite,colors 5.6s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite,colors 5.6s ease-in-out infinite}.modal{word-wrap:break-word}.modal .label.error-msg{display:block;font-size:12px;padding:5px;margin-top:10px;text-align:left}.modal .label.error-msg>span{white-space:pre-wrap}.modal .breadcrumb{margin:0 0 5px;background:#00bcd4;font-size:16px;max-height:inherit;padding:0 10px}.modal-fullscreen .modal-content,.modal-fullscreen .modal-dialog{bottom:0;left:0;position:absolute;right:0;top:0}.modal-fullscreen .modal-dialog{margin:0;width:100%}.modal-fullscreen .modal-content{border:none;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:inherit;-moz-box-shadow:inherit;-o-box-shadow:inherit;box-shadow:inherit}.modal-fullscreen textarea.code{min-height:450px}.modal img.preview{max-width:100%;max-height:640px;border-radius:3px}.modal img.preview.loading{width:100%;height:1px;opacity:0}.modal .modal-content{border-radius:10px 10px 4px 4px}.modal .modal-header{border-radius:4px 4px 0 0;background:#2196f3;padding:1.3em}.modal .modal-header .modal-title{font-size:20px;line-height:100%;color:#d4e5f5;margin:0}.modal .modal-header .close{opacity:1;color:#d4e5f5}.modal .modal-header .close.fullscreen{font-size:14px;position:relative;top:4px;margin-right:.8em}.detail-sources,.ellipsis{text-overflow:ellipsis;overflow:hidden}body{font-size:14px;height:100vh}*,:focus{outline:0!important}.navbar{min-height:32px;margin-bottom:0;border:0;border-radius:0;color:#fff}.navbar .navbar-collapse{overflow:visible;padding:0}.navbar .navbar-toggle{padding:5px 10px}.navbar .navbar-brand{font-size:inherit;height:55px;line-height:100%}.btn.btn-default{color:#444;background-color:#fafafa}.btn{box-shadow:0 2px 5px 0 rgba(0,0,0,.26);font-weight:500;letter-spacing:.01em;border:none}textarea.code{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:13px;min-height:250px;resize:vertical;color:#000}.sub-header{padding-bottom:10px;border-bottom:1px solid #eee}.sidebar{display:none;background:#fafafa;margin-top:2px;padding:0;overflow-x:hidden;overflow-y:auto;border-right:1px solid #eee}.btn-go-back{margin-top:-5px}.nav-sidebar{margin-right:-21px;margin-bottom:20px;margin-left:-20px}.nav-sidebar>li>a{color:#7a7a7a;padding:7px 0 7px 16px}.nav-sidebar>li>a:focus,.nav-sidebar>li>a:hover{background:0 0;color:#1378b9}.nav-sidebar>li.active>a{color:#2196f3}.main{padding:0}.main .page-header{margin-top:0}.file-tree ul.nav.nav-sidebar{margin:0;padding:0 0 0 12px}.file-tree ul.nav.nav-sidebar:first-child{padding-left:0}.file-tree ul.nav.nav-sidebar.file-tree-root>li{border-left:none;padding-left:0}.table td{vertical-align:middle}#context-menu{position:absolute;display:none;z-index:9999}.iconset{padding:10px}.col-120{width:100px;max-height:100px;float:left;margin-bottom:9px;margin-right:9px}.col-120:last-child{margin-right:0}.noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.iconset .thumbnail{border-radius:0;overflow:hidden;margin:0;padding:10px 0;border:none;background:0 0}.iconset .thumbnail.selected,.table-files .selected{background:#2196f3}.iconset .thumbnail.selected,.table-files .selected td,.table-files .selected td a{color:#fff}.iconset .thumbnail .item-icon{font-size:32px}.detail-sources{word-wrap:break-word}::-webkit-scrollbar{width:10px;height:10px;background-color:#fff;box-shadow:inset 1px 1px 0 rgba(0,0,0,.1),inset -1px -1px 0 rgba(0,0,0,.07)}::-webkit-scrollbar:hover{background-color:#eee}::-webkit-scrollbar-thumb{min-height:.8em;min-width:.8em;background-color:rgba(0,0,0,.2);box-shadow:inset 1px 1px 0 rgba(0,0,0,.1),inset -1px -1px 0 rgba(0,0,0,.07)}::-webkit-scrollbar-thumb:hover{background-color:#bbb}::-webkit-scrollbar-thumb:active{background-color:#888}.dropdown-menu{font-size:14px}.dropdown-menu>li>a{padding:6px 20px}.dropdown-menu>li>a>i{margin-right:4px}.dropdown-menu.dropdown-right-click{display:block;position:static;margin-bottom:5px}.dropdown-menu.dropdown-right-click .divider{margin:3px 0}.upload-dragover .main{opacity:.4}.upload-dragover:before{content:"\e198";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:100;color:#2196f3;font-size:8em;font-family:'Glyphicons Halflings'}.upload-list{margin-top:20px}.spinner-wrapper{margin:8% auto 0;text-align:center}a:active,a:focus,a:hover,table th>a:active,table th>a:focus,table th>a:hover{text-decoration:none}.sortorder:after{color:#2196f3;content:'\25bc'}.sortorder.reverse:after{color:#2196f3;content:'\25b2'}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.mr2{margin-right:2px}.mr5{margin-right:5px}.mt10{margin-top:10px}.mb0{margin-bottom:0}.pointer{cursor:pointer}.block{display:block}.ellipsis{white-space:nowrap}.bold{font-weight:700}.main{overflow-y:auto}@media (min-width:768px){.main{padding-right:0;padding-left:0}.main,.row,.sidebar,angular-filemanager>div{height:100%}.container-fluid{height:-webkit-calc(100% - 58px);height:-moz-calc(100% - 58px);height:calc(100% - 58px)}.sidebar{display:block}}.selected-file-details{padding-left:20px}.item-extension::after{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;content:attr(data-ext);left:4px;position:absolute;color:#fff;font-size:9px;text-transform:uppercase;top:21px}.selected .item-extension::after{color:#2196f3}.form-control.search-input{max-width:20em;display:inline}.like-code{display:inline}.point{margin-right:8px;font-size:10px}.navbar .btn.btn-flat{padding:2px;width:32px;height:30px;margin-left:5px}.navbar-inverse .navbar-toggle .icon-bar{background:#fff}.navbar-inverse .navbar-form input[type=text]{color:#7a7a7a;box-shadow:none;margin:0 10px}.navbar .navbar-form{border-bottom:none;border-top:none;box-shadow:none;padding:0;margin:12px 0}.breadcrumb{background:0 0;padding:0;font-size:17px;margin:12px 0;overflow:hidden;max-height:30px}.breadcrumb a,.breadcrumb>.active{color:#fff}.breadcrumb>li+li:before{font-family:'Glyphicons Halflings';content:"\e080";font-size:12px;color:#fff}.scrollable-menu{height:auto;max-height:200px;overflow-x:hidden}.btn.btn-flat{background:0 0;color:#fff}.btn-group.open>.btn-flat,.btn.btn-flat,.btn.btn-flat:active{box-shadow:none}.btn.btn-flat>i{font-size:18px;width:18px;height:18px;line-height:100%}
\ No newline at end of file
index 39af1f1..32e0207 100644 (file)
Binary files a/public/webfonts/fa-brands-400.eot and b/public/webfonts/fa-brands-400.eot differ
index 47e434d..5d605ea 100644 (file)
@@ -2,11 +2,11 @@
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
 <metadata>
-Created by FontForge 20201107 at Tue Mar 16 10:13:23 2021
+Created by FontForge 20201107 at Wed Aug  4 12:22:50 2021
  By Robert Madole
 Copyright (c) Font Awesome
 </metadata>
-<!-- Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><defs>
+<!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><defs>
 <font id="FontAwesome5Brands-Regular" horiz-adv-x="448" >
   <font-face 
     font-family="Font Awesome 5 Brands Regular"
@@ -957,14 +957,6 @@ l19.2002 -19.2002l128 128l-128 128l-51.5 -51.5l77.1006 -76.5l-25.6006 -25.5996l-
     <glyph glyph-name="gg-circle" unicode="&#xf261;" horiz-adv-x="512" 
 d="M257 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM207.5 65.2002l75 75.2002l-77.2002 77.1992l-24.3994 -24.3994l53.0996 -52.9004l-26.5996 -26.5996l-77.2002 77.2002l77.2002 77.1992l11.0996 -11.0996l24.2002 24.2002
 l-35.2002 35.3994l-125.7 -125.699zM306.5 67.4004l125.7 125.6l-125.7 125.7l-75 -75l77.2002 -77.2002l24.3994 24.4004l-53.0996 52.8994l26.5 26.5l77.2002 -77.2002l-77.2002 -77.1992l-11.0996 11.0996l-24.1006 -24.4004z" />
-    <glyph glyph-name="tripadvisor" unicode="&#xf262;" horiz-adv-x="576" 
-d="M528.91 269.18c28.8652 -26.2666 46.9404 -64.1113 46.9404 -106.176c0 -0.0615234 -0.000976562 -0.12207 -0.000976562 -0.183594h0.0302734c-0.00195312 -79.4414 -64.5479 -143.928 -143.989 -143.928c-37.7363 0 -72.0996 14.5527 -97.7803 38.3477
-l-46.1104 -50.1699l-46.1396 50.1992c-25.6064 -23.4443 -59.8145 -37.7793 -97.2334 -37.7793c-79.4268 0 -143.911 64.4844 -143.911 143.911c0 41.8076 17.8662 79.4756 46.374 105.778l-47.0898 51.2402h104.66c52.2266 35.5498 115.938 56.3369 183.822 56.3369
-s130.95 -20.7871 183.178 -56.3369h104.34zM144.06 65.4297c53.751 0 97.3906 43.6396 97.3906 97.3906s-43.6396 97.3896 -97.3906 97.3896s-97.3896 -43.6387 -97.3896 -97.3896s43.6387 -97.3906 97.3896 -97.3906zM288 165.63c0 64.0801 46.6104 119.07 108.08 142.59
-c-33.2285 13.8467 -70.0527 21.4941 -108.272 21.4941c-38.2207 0 -74.6689 -7.64746 -107.897 -21.4941c61.4697 -23.5098 108.09 -78.5 108.09 -142.59zM431.88 65.4297c53.7568 0.00292969 97.4004 43.6475 97.4004 97.4053c0 53.7598 -43.6455 97.4053 -97.4053 97.4053
-c-53.7588 0 -97.4053 -43.6455 -97.4053 -97.4053c0 -53.7578 43.6436 -97.4023 97.4004 -97.4053h0.00976562zM144.06 213.88c0.0175781 0 0.0332031 -0.000976562 0.0507812 -0.000976562c28.1299 0 50.9717 -22.8242 51 -50.9492v-0.109375
-c0 -28.1807 -22.8799 -51.0605 -51.0605 -51.0605s-51.0596 22.8799 -51.0596 51.0605s22.8789 51.0596 51.0596 51.0596h0.00976562zM431.88 213.88c28.1807 0 51.0605 -22.8789 51.0605 -51.0596s-22.8799 -51.0605 -51.0605 -51.0605s-51.0596 22.8799 -51.0596 51.0605
-s22.8789 51.0596 51.0596 51.0596z" />
     <glyph glyph-name="odnoklassniki" unicode="&#xf263;" horiz-adv-x="320" 
 d="M275.1 114c-27.3994 -17.4004 -65.0996 -24.2998 -90 -26.9004l20.9004 -20.5996l76.2998 -76.2998c27.9004 -28.6006 -17.5 -73.2998 -45.7002 -45.7002c-19.0996 19.4004 -47.0996 47.4004 -76.2998 76.5996l-76.2998 -76.5
 c-28.2002 -27.5 -73.5996 17.6006 -45.4004 45.7002c19.4004 19.4004 47.1006 47.4004 76.3008 76.2998l20.5996 20.6006c-24.5996 2.59961 -62.9004 9.09961 -90.5996 26.8994c-32.6006 21 -46.9004 33.3008 -34.3008 59c7.40039 14.6006 27.7002 26.9004 54.6006 5.7002
@@ -1241,11 +1233,10 @@ d="M256 440c136.9 0 248 -111.1 248 -248s-111.1 -248 -248 -248s-248 111.1 -248 24
 h-116.9v-42.6006h70.1006c-5.2002 -34.2002 -37.5 -53.2998 -70.1006 -53.2998c-43 0 -77.2002 35.5 -77.2002 78.0996c0 42.6006 34.3008 78.1006 77.2002 78.1006c18.1006 0 36.2002 -6.2002 49.4004 -19.1006l33.5996 32.6006
 c-22.8994 21.2998 -51.7002 32.2998 -83 32.2998c-68.4375 0 -124 -55.5625 -124 -124s55.5625 -124 124 -124zM415.5 174.2h35.2002v35.5h-35.2002v35.5h-35.5v-35.5h-35.5v-35.5h35.5v-35.5h35.5v35.5z" />
     <glyph glyph-name="font-awesome" unicode="&#xf2b4;" 
-d="M397.8 416c27.5 0 50.2002 -22.7002 50.2002 -50.2002v-347.6c0 -27.5 -22.7002 -50.2002 -50.2002 -50.2002h-347.6c-27.5 0 -50.2002 22.7002 -50.2002 50.2002v347.6c0 27.5 22.7002 50.2002 50.2002 50.2002h347.6zM352.4 131.7h0.0996094v140.3
-c0 4.2002 -4.2002 7.7998 -9 7.7998c-6 0 -31.0996 -16.0996 -53.7998 -16.0996c-4.7002 0 -8.90039 0.599609 -13.1006 2.39941c-20.2998 7.7002 -38.1992 13.7002 -60.8994 13.7002c-20.9004 0 -43 -6.5 -61.5 -14.2998
-c-1.7998 -1.2002 -3.60059 -1.7998 -5.40039 -2.40039v18.5c8.2998 6 13.1006 15.5 13.1006 26.3008c0 18.5996 -15 33.5 -33.5 33.5c-18.6006 0 -33.5 -15 -33.5 -33.5c0 -10.8008 5.2998 -20.3008 13.0996 -26.3008v-218.6c0 -11.2998 9 -20.2998 20.2998 -20.2998
-c8.90039 0 16.7002 5.89941 19.1006 14.2998v1.2002c0.599609 1.2002 0.599609 3 0.599609 4.7998v45.4004c1.2002 0.599609 2.40039 0.599609 3.59961 1.19922c19.7002 8.90039 44.2002 17.3008 67.5 17.3008c32.3008 0 44.8008 -16.7002 71.7002 -16.7002
-c19.2002 0 37.1006 6.5 53.7998 13.7002c4.2002 1.7998 7.80078 3.59961 7.80078 7.7998z" />
+d="M400 416c26.4922 0 48 -21.5078 48 -48v-352c0 -26.4922 -21.5078 -48 -48 -48h-352c-26.4922 0 -48 21.5078 -48 48v352c0 26.4922 21.5078 48 48 48h352zM336 136v160c-31.5996 -11.2002 -41.2002 -16 -59.7998 -16c-31.4004 0 -43.4004 16 -74.6006 16
+c-25.3994 0 -37.3994 -10.4004 -57.5996 -14.4004v6.40039c0 8.83105 -7.16895 16 -16 16s-16 -7.16895 -16 -16v-192c0 -8.83105 7.16895 -16 16 -16s16 7.16895 16 16v153.6c20.2002 4 32.2002 14.4004 57.5996 14.4004c31.4004 0 43.2002 -16 74.6006 -16
+c10.2002 0 17.7998 1.40039 27.7998 4.59961v-96c-10 -3.19922 -17.5996 -4.59961 -27.7998 -4.59961c-31.4004 0 -43.4004 16 -74.6006 16c-8.91309 -0.0322266 -17.5195 -1.44336 -25.5996 -4v-32c7.86035 2.58398 16.2559 4.00195 24.9756 4.00195
+c0.208008 0 0.416016 0 0.624023 -0.00195312c31.4004 0 43.2002 -16 74.6006 -16c18.5996 0 28.2002 4.7998 59.7998 16z" />
     <glyph glyph-name="linode" unicode="&#xf2b8;" 
 d="M437.4 221.7c0.599609 -2 -8.80078 -66.2998 -9.7002 -72.7998c0 -0.900391 -0.5 -1.7002 -1.10059 -2l-54.5996 -43.7002c-1.09961 -0.900391 -2.59961 -0.900391 -3.7002 0l-20.2998 14l-2.2998 -33.4004c0 -0.899414 -0.200195 -1.7002 -1.10059 -2.2998
 l-66.8994 -53.4004c-1.10059 -0.899414 -2.90039 -0.899414 -4 0l-28 23.7002l2 -46c0 -0.899414 -0.200195 -1.7002 -1.10059 -2.2998l-83.6992 -66.9004c-0.600586 -0.299805 -1.10059 -0.599609 -1.7002 -0.599609c-0.900391 0.299805 -1.7002 0.299805 -2.2998 0.900391
@@ -1340,12 +1331,11 @@ c5.7002 -3.09961 6.90039 -9.40039 6 -15.0996c-1.09961 -9.7002 -28 -70.9004 -28.8
 c3.10059 0 8.30078 -0.900391 7.10059 -10.9004c-1.40039 -9.39941 -35.1006 -72.2998 -38.9004 -87.6992c-4.59961 -20.6006 6.60059 -41.4004 24.9004 -50.6006c11.3994 -5.7002 62.5 -15.7002 58.5 11.1006zM376.4 3.09961c10.5996 7.5 24.8994 4.60059 32.2998 -6
 c7.09961 -10.5996 4.59961 -25.1992 -6 -32.5996c-10.6006 -7.09961 -24.9004 -4.59961 -32 6c-7.2002 10.5996 -4.60059 25.2002 5.7002 32.5996z" />
     <glyph glyph-name="font-awesome-alt" unicode="&#xf35c;" 
-d="M339.3 276.8c5.40039 0 9.5 -3 7.7002 -7.09961v-134.4c0 -4.2002 -3 -6 -7.2002 -7.7998c-15.5996 -7.09961 -33.5 -13.7002 -52 -13.7002c-26.2998 0 -38.2002 16.1006 -69.2998 16.1006c-22.7002 0 -46 -8.30078 -65.7002 -16.7002
-c-0.599609 -0.600586 -1.7998 -1.2002 -3 -1.2002v-44.2002c0 -1.7998 0 -3 -0.599609 -4.7998v-1.2998c-2.40039 -7.7002 -9.5 -13.7002 -18.5 -13.7002c-10.7002 0 -19.7002 8.90039 -19.7002 19.7002v212.1c-7.7002 6 -12.5 15.5 -12.5 25.7002
-c0 18 14.2998 32.2998 32.2998 32.2998s32.2998 -14.3994 32.2998 -32.2998c0 -10.7998 -4.69922 -19.7002 -12.5 -25.7002v-17.8994c1.2002 0.599609 3 1.19922 4.80078 1.7998c17.8994 7.09961 39.3994 13.7002 59.6992 13.7002
-c22.1006 0 39.4004 -5.90039 59.1006 -13.7002c4.09961 -1.7998 8.2998 -2.40039 12.5 -2.40039c22.7002 0 46.5996 15.5 52.5996 15.5zM397.8 416c27.5 0 50.2002 -22.7002 50.2002 -50.2002v-347.6c0 -27.5 -22.7002 -50.2002 -50.2002 -50.2002h-347.6
-c-27.5 0 -50.2002 22.7002 -50.2002 50.2002v347.6c0 27.5 22.7002 50.2002 50.2002 50.2002h347.6zM412.1 18.2998v347.601c0 7.69922 -6.5 14.2998 -14.2998 14.2998v-0.100586h-347.6c-7.7002 0 -14.2998 -6.5 -14.2998 -14.2998v-347.5
-c0 -7.7002 6.5 -14.2998 14.2998 -14.2998h347.6c7.7002 0 14.2998 6.5 14.2998 14.2998z" />
+d="M400 416c26.4922 0 48 -21.5078 48 -48v-352c0 -26.4922 -21.5078 -48 -48 -48h-352c-26.4922 0 -48 21.5078 -48 48v352c0 26.4922 21.5078 48 48 48h352zM416 16v352c0 8.83105 -7.16895 16 -16 16h-352c-8.83105 0 -16 -7.16895 -16 -16v-352
+c0 -8.83105 7.16895 -16 16 -16h352c8.83105 0 16 7.16895 16 16zM201.6 296c31.2002 0 43.2002 -16 74.6006 -16c18.5996 0 28.2002 4.7998 59.7998 16v-160c-31.5996 -11.2002 -41.2002 -16 -59.7998 -16c-31.4004 0 -43.2002 16 -74.6006 16
+c-0.208008 0.00195312 -0.415039 -0.0175781 -0.623047 -0.0175781c-8.7207 0 -17.1162 -1.39844 -24.9766 -3.98242v32c8.08008 2.55664 16.6865 3.96777 25.5996 4c31.2002 0 43.2002 -16 74.6006 -16c10.2002 0 17.7998 1.40039 27.7998 4.59961v96
+c-10 -3.19922 -17.5996 -4.59961 -27.7998 -4.59961c-31.4004 0 -43.2002 16 -74.6006 16c-25.3994 0 -37.3994 -10.4004 -57.5996 -14.4004v-153.6c0 -8.83105 -7.16895 -16 -16 -16s-16 7.16895 -16 16v192c0 8.83105 7.16895 16 16 16s16 -7.16895 16 -16v-6.40039
+c20.2002 4 32.2002 14.4004 57.5996 14.4004z" />
     <glyph glyph-name="accessible-icon" unicode="&#xf368;" 
 d="M423.9 192.2l-12.9004 -157.3c-3.2998 -40.7002 -63.9004 -35.1006 -60.5996 4.89941l10 122.5l-41.1006 -2.2998c10.1006 -20.7002 15.7998 -43.9004 15.7998 -68.5c0 -41.2002 -16.0996 -78.7002 -42.2998 -106.5l-39.2998 39.2998
 c57.9004 63.7002 13.0996 167.2 -74 167.2c-25.9004 0 -49.5 -9.90039 -67.2002 -26l-39.2998 39.2998c22 20.7002 50.0996 35.1006 81.4004 40.2002l75.2998 85.7002l-42.6006 24.7998l-51.5996 -46c-30 -26.7998 -70.5996 18.5 -40.5 45.4004l68 60.6992
@@ -1590,14 +1580,18 @@ c13.2998 45.5 -42.2002 71.7002 -64 29.2998z" />
 d="M87 -33.7998v73.5996h73.7002v-73.5996h-73.7002zM25.4004 101.4h61.5996v-61.6006h-61.5996v61.6006zM491.6 271.1c53.2002 -170.3 -73 -327.1 -235.6 -327.1v95.7998h0.299805v0.299805c101.7 0.200195 180.5 101 141.4 208
 c-14.2998 39.6006 -46.1006 71.4004 -85.7998 85.7002c-107.101 38.7998 -208.101 -39.8994 -208.101 -141.7h-95.7998c0 162.2 156.9 288.7 327 235.601c74.2002 -23.2998 133.6 -82.4004 156.6 -156.601zM256.3 40.0996h-0.299805v-0.299805h-95.2998v95.6006h95.5996
 v-95.3008z" />
-    <glyph glyph-name="discord" unicode="&#xf392;" 
-d="M297.216 204.8c0 -15.6162 -11.5195 -28.416 -26.1123 -28.416c-14.3359 0 -26.1113 12.7998 -26.1113 28.416s11.5195 28.416 26.1113 28.416c14.5928 0 26.1123 -12.7998 26.1123 -28.416zM177.664 233.216c14.5918 0 26.3682 -12.7998 26.1123 -28.416
-c0 -15.6162 -11.5205 -28.416 -26.1123 -28.416c-14.3359 0 -26.1123 12.7998 -26.1123 28.416s11.5205 28.416 26.1123 28.416zM448 395.264v-459.264c-64.4941 56.9941 -43.8682 38.1279 -118.784 107.776l13.5684 -47.3604h-290.304
-c-28.9287 0 -52.4805 23.5518 -52.4805 52.7363v346.111c0 29.1846 23.5518 52.7363 52.4805 52.7363h343.039c28.9287 0 52.4805 -23.5518 52.4805 -52.7363zM375.04 152.576c0 82.4316 -36.8643 149.248 -36.8643 149.248
-c-36.8643 27.6475 -71.9355 26.8799 -71.9355 26.8799l-3.58398 -4.0957c43.5195 -13.3125 63.7441 -32.5127 63.7441 -32.5127c-60.8115 33.3291 -132.244 33.335 -191.232 7.42383c-9.47168 -4.35156 -15.1035 -7.42383 -15.1035 -7.42383
-s21.2471 20.2246 67.3271 33.5361l-2.55957 3.07227s-35.0723 0.767578 -71.9355 -26.8799c0 0 -36.8643 -66.8164 -36.8643 -149.248c0 0 21.5039 -37.1201 78.0801 -38.9121c0 0 9.47168 11.5195 17.1514 21.248c-32.5117 9.72754 -44.7998 30.208 -44.7998 30.208
-c3.7666 -2.63574 9.97656 -6.05273 10.4961 -6.40039c43.21 -24.1973 104.588 -32.126 159.744 -8.95996c8.95996 3.32812 18.9443 8.19238 29.4395 15.1045c0 0 -12.7998 -20.9922 -46.3359 -30.4639c7.68066 -9.72852 16.8965 -20.7363 16.8965 -20.7363
-c56.5762 1.79199 78.3359 38.9121 78.3359 38.9121z" />
+    <glyph glyph-name="discord" unicode="&#xf392;" horiz-adv-x="640" 
+d="M524.531 378.164c66.4014 -97.6289 99.1973 -207.758 86.9336 -334.541c-0.0498047 -0.554688 -0.338867 -1.04102 -0.764648 -1.35156c-43.8203 -32.4541 -93.7129 -57.8623 -147.062 -74.1865c-0.171875 -0.0527344 -0.354492 -0.0830078 -0.543945 -0.0830078
+c-0.625977 0 -1.18066 0.308594 -1.51855 0.783203c-11.1562 15.4766 -21.1797 31.7598 -30.0146 48.8145c-0.131836 0.256836 -0.208984 0.549805 -0.208984 0.858398c0 0.799805 0.50293 1.48438 1.20898 1.75293c15.916 5.9834 31.3828 13.3604 45.8906 21.8301
+c0.550781 0.329102 0.918945 0.928711 0.918945 1.61621c0 0.617188 -0.297852 1.16602 -0.756836 1.50977c-3.10547 2.30859 -6.18848 4.73438 -9.13184 7.16016c-0.3125 0.254883 -0.713867 0.407227 -1.14844 0.407227
+c-0.277344 0 -0.541016 -0.0625 -0.776367 -0.174805c-95.0898 -43.917 -199.271 -43.917 -295.5 0c-0.226562 0.101562 -0.480469 0.15918 -0.744141 0.15918c-0.438477 0 -0.84082 -0.15625 -1.15527 -0.415039c-2.94336 -2.42578 -6.02734 -4.82812 -9.10938 -7.13672
+c-0.453125 -0.344727 -0.74707 -0.886719 -0.74707 -1.5c0 -0.692383 0.375 -1.29883 0.932617 -1.62598c14.5459 -8.40234 30 -15.7812 45.8672 -21.8525c0.712891 -0.261719 1.21973 -0.946289 1.21973 -1.74902c0 -0.301758 -0.0722656 -0.586914 -0.200195 -0.839844
+c-8.69238 -17.1572 -18.7334 -33.4609 -30.0371 -48.8418c-0.34668 -0.459961 -0.896484 -0.755859 -1.5166 -0.755859c-0.19043 0 -0.373047 0.0283203 -0.546875 0.0800781c-53.25 16.3789 -103.055 41.7812 -146.824 74.1895
+c-0.419922 0.327148 -0.706055 0.817383 -0.765625 1.375c-10.2441 109.663 10.6387 220.702 86.8672 334.54c0.185547 0.300781 0.459961 0.537109 0.788086 0.676758c37.3066 17.1338 78.0146 29.9219 119.688 37.1064
+c0.0957031 0.015625 0.191406 0.0253906 0.292969 0.0253906c0.694336 0 1.30176 -0.375977 1.63086 -0.935547c5.56348 -9.8418 10.6553 -20.126 15.1348 -30.5996c22.0664 3.34961 43.7744 5.08691 66.7705 5.08691c22.9951 0 45.5889 -1.7373 67.6553 -5.08691
+c4.44727 10.4414 9.46191 20.7285 14.9004 30.5996c0.308594 0.5625 0.90332 0.941406 1.58887 0.941406c0.114258 0 0.225586 -0.0107422 0.333984 -0.03125c41.666 -7.19922 82.373 -19.9863 119.686 -37.1055c0.331055 -0.135742 0.601562 -0.384766 0.764648 -0.700195z
+M222.491 110.42c29.4326 0 52.8428 26.5869 52.8428 59.2412c0.462891 32.4189 -23.1777 59.2393 -52.8428 59.2393c-29.4355 0 -52.8438 -26.5898 -52.8438 -59.2412c0 -32.6523 23.8711 -59.2393 52.8438 -59.2393zM417.871 110.42
+c29.667 0 52.8438 26.5869 52.8438 59.2412c0.462891 32.4189 -23.1768 59.2393 -52.8438 59.2393c-29.4346 0 -52.8428 -26.5898 -52.8428 -59.2412c0 -32.6523 23.8721 -59.2393 52.8428 -59.2393z" />
     <glyph glyph-name="discourse" unicode="&#xf393;" 
 d="M225.9 416c122.699 0 222.1 -102.3 222.1 -223.9c0 -121.6 -99.4004 -223.899 -222.1 -223.899l-225.801 -0.200195s-0.0996094 224 -0.0996094 227.9c0 121.6 103.3 220.1 225.9 220.1zM224 64c70.7002 0 128 57.2998 128 128s-57.2998 128 -128 128
 s-128 -57.2998 -128 -128c0 -22.0996 5.59961 -42.9004 15.4004 -61l-22.9004 -75l81.0996 20.0996c16.5 -7.7998 35 -12.0996 54.4004 -12.0996z" />
@@ -2461,10 +2455,11 @@ c13.7002 9.39941 16.4004 24.3994 9.10059 31.3994c-7.2002 6.90039 -28.2002 -7 -29
 c12.5996 33.0996 -3.59961 45.5 -3.59961 45.5s-23.4004 12.9004 -33.3008 -20.2002c-9.89941 -33.0996 -6.39941 -44.8994 -6.39941 -44.8994s30.7002 -13.4004 43.2998 19.5996zM442.1 188.1c0 0 15.7002 -1.09961 26.4004 14.2002s1.2998 25.5 1.2998 25.5
 s-8.59961 11.1006 -19.5996 -9.09961c-11.1006 -20.1006 -8.10059 -30.6006 -8.10059 -30.6006z" />
     <glyph glyph-name="font-awesome-flag" unicode="&#xf425;" 
-d="M444.373 88.5762c0 -7.16797 -6.14453 -10.2402 -13.3125 -13.3125c-28.6719 -12.2881 -59.3916 -23.5518 -92.1592 -23.5518c-46.0801 0 -67.584 28.6719 -122.88 28.6719c-39.9365 0 -81.9209 -14.3359 -115.713 -29.6953
-c-2.04785 -1.02441 -4.0957 -1.02441 -6.14355 -2.04883v-77.8232c0 -21.4053 -16.1221 -34.8164 -33.792 -34.8164c-19.4561 0 -34.8164 15.3604 -34.8164 34.8164v374.783c-13.3115 10.2402 -22.5273 26.624 -22.5273 45.0566c0 31.7441 25.5996 57.3438 57.3438 57.3438
-s57.3438 -25.5996 57.3438 -57.3438c0 -18.4326 -8.19141 -34.8164 -22.5273 -45.0566v-31.7432c4.12402 1.37402 58.7676 28.6719 114.688 28.6719c65.2705 0 97.6758 -27.6484 126.976 -27.6484c38.9121 0 81.9209 27.6484 92.1602 27.6484
-c8.19238 0 15.3604 -6.14453 15.3604 -13.3125v-240.64z" />
+d="M448 400v-336c-63 -23 -82 -32 -119 -32c-63 0 -87 32 -150 32c-20 0 -36 -4 -51 -8v64c15 4 31 8 51 8c63 0 87 -32 150 -32c20 0 35 3 55 9v208c-20 -6 -35 -9 -55 -9c-63 0 -87 32 -150 32c-51 0 -75 -21 -115 -29v-307
+c0.00195312 -0.136719 0.00292969 -0.273438 0.00292969 -0.410156c0 -17.4404 -14.1602 -31.5996 -31.6006 -31.5996c-0.136719 0 -0.265625 0.0078125 -0.402344 0.00976562c-0.136719 -0.00195312 -0.273438 -0.00292969 -0.410156 -0.00292969
+c-17.4404 0 -31.5996 14.1602 -31.5996 31.6006c0 0.136719 0.0078125 0.265625 0.00976562 0.402344v384c-0.00195312 0.136719 -0.00292969 0.273438 -0.00292969 0.410156c0 17.4404 14.1602 31.5996 31.6006 31.5996
+c0.136719 0 0.265625 -0.0078125 0.402344 -0.00976562c0.136719 0.00195312 0.273438 0.00292969 0.410156 0.00292969c17.4404 0 31.5996 -14.1602 31.5996 -31.6006c0 -0.136719 -0.0078125 -0.265625 -0.00976562 -0.402344v-13c40 8 64 29 115 29c63 0 87 -32 150 -32
+c37 0 56 9 119 32z" />
     <glyph glyph-name="gitter" unicode="&#xf426;" horiz-adv-x="384" 
 d="M66.4004 125.5h-50.4004v322.5h50.4004v-322.5zM166.9 371.9v-435.9h-50.4004v435.9h50.4004zM267.5 371.9v-435.9h-50.4004v435.9h50.4004zM368 372v-247h-50.4004v247h50.4004z" />
     <glyph glyph-name="hooli" unicode="&#xf427;" horiz-adv-x="640" 
@@ -3425,9 +3420,13 @@ M353.9 173.3c3.55273 2.83594 6.87891 5.7998 10.0996 9l-34.9004 35c-3.18457 -3.22
 c2.53027 3.79688 4.77832 7.81738 6.7002 12l-39.5 39.7998c-0.374023 -5.3252 -1.63574 -10.4893 -3.59961 -15.2002zM391.6 230.8l-53.0996 53.4004c4.25977 -7.79688 6.82422 -16.7627 7.09961 -26.2002l41.3008 -41.5c1.7959 4.61523 3.39258 9.46387 4.69922 14.2998z
 M392.6 236.4c1.25586 5.3623 2.04199 10.9189 2.30078 16.5996l-64.3008 64.7002c-2.61426 -3.74805 -5.95898 -6.85938 -9.89941 -9.2002z" />
     <glyph glyph-name="figma" unicode="&#xf799;" horiz-adv-x="384" 
-d="M277 277.3h-85.4004v-256c-0.0273438 -47.082 -38.2617 -85.2998 -85.3506 -85.2998c-47.1055 0 -85.3496 38.2441 -85.3496 85.3496c0 47.1064 38.2441 85.3506 85.3496 85.3506h0.0507812c-47.1055 0 -85.3496 38.2441 -85.3496 85.3496
-c0 47.1064 38.2441 85.3506 85.3496 85.3506c-47.0781 0 -85.2998 38.2217 -85.2998 85.2998s38.2217 85.2998 85.2998 85.2998h170.7c47.1055 0 85.3496 -38.2441 85.3496 -85.3496c0 -47.1064 -38.2441 -85.3506 -85.3496 -85.3506zM277 277.3
-c47.0762 -0.00488281 85.2949 -38.2236 85.2998 -85.2998c0 -47.0781 -38.2217 -85.2998 -85.2998 -85.2998s-85.2998 38.2217 -85.2998 85.2998s38.2217 85.2998 85.2998 85.2998z" />
+d="M14 352.208c0 52.9043 42.8877 95.792 95.793 95.792h164.368c52.9053 0 95.793 -42.8877 95.793 -95.792c0 -33.5 -17.1963 -62.9844 -43.2432 -80.1055c26.0469 -17.1211 43.2432 -46.6045 43.2432 -80.1045c0 -52.9053 -42.8877 -95.793 -95.793 -95.793h-2.08008
+c-24.8018 0 -47.4033 9.42578 -64.415 24.8906v-88.2627c0 -53.6104 -44.0088 -96.833 -97.3574 -96.833c-52.7725 0 -96.3086 42.7568 -96.3086 95.793c0 33.498 17.1943 62.9805 43.2393 80.1016c-26.0449 17.1221 -43.2393 46.6055 -43.2393 80.1035
+c0 33.5 17.1963 62.9834 43.2422 80.1045c-26.0459 17.1211 -43.2422 46.6055 -43.2422 80.1055zM176.288 256.413h-66.4951c-35.5762 0 -64.415 -28.8398 -64.415 -64.415c0 -35.4385 28.6172 -64.1924 64.0029 -64.4141
+c0.136719 0.000976562 0.274414 0.000976562 0.412109 0.000976562h66.4951v128.828zM207.666 191.998c0 -35.5752 28.8389 -64.415 64.415 -64.415h2.08008c35.5762 0 64.415 28.8398 64.415 64.415s-28.8389 64.415 -64.415 64.415h-2.08008
+c-35.5762 0 -64.415 -28.8398 -64.415 -64.415zM109.793 96.2051c-0.137695 0 -0.275391 0.000976562 -0.412109 0.000976562c-35.3857 -0.220703 -64.0029 -28.9746 -64.0029 -64.4131c0 -35.4453 29.2246 -64.415 64.9307 -64.415
+c36.2822 0 65.9795 29.4365 65.9795 65.4551v63.3721h-66.4951zM109.793 416.622c-35.5762 0 -64.415 -28.8398 -64.415 -64.4141c0 -35.5762 28.8389 -64.415 64.415 -64.415h66.4951v128.829h-66.4951zM207.666 287.793h66.4951c35.5762 0 64.415 28.8389 64.415 64.415
+c0 35.5742 -28.8389 64.4141 -64.415 64.4141h-66.4951v-128.829z" />
     <glyph glyph-name="intercom" unicode="&#xf7af;" 
 d="M392 416c30.9004 0 56 -25.0996 56 -56v-336c0 -30.9004 -25.0996 -56 -56 -56h-336c-30.9004 0 -56 25.0996 -56 56v336c0 30.9004 25.0996 56 56 56h336zM283.7 333.9v-199.5c0 -19.8008 29.8994 -19.8008 29.8994 0v199.5c0 19.7998 -29.8994 19.7998 -29.8994 0z
 M209.1 341.4v-216.5c0 -19.8008 29.9004 -19.8008 29.9004 0v216.5c0 19.7998 -29.9004 19.7998 -29.9004 0zM134.4 333.9v-199.5c0 -19.8008 29.8994 -19.8008 29.8994 0v199.5c0 19.7998 -29.8994 19.7998 -29.8994 0zM59.7002 304v-134.3
@@ -3553,11 +3552,12 @@ c30.4102 17.9199 81.0498 55.6504 132.75 115.92c14.9697 -9 16.1494 -11.71 16.5098
 c-0.860352 -1.67969 -20.0303 -21.6797 -63.2803 -20.4092c5.5 -12.9404 10.9902 -25.0908 16.5 -36.4404zM306.579 337c-1.58008 2.4502 -39.5801 58.8496 -56.4805 54.6104c-16.8994 1.09961 -36.21 -22.9805 -38.21 -75.2803
 c21.1104 13.2402 50.1299 22.3301 94.6904 20.6699zM175.929 333.9c-3.7998 6.68945 -8.66992 12.4795 -14.4297 13.5693h-0.0898438c-24.79 1.41016 -24.75 -52.8301 -24.6699 -49.5898c13.6602 -0.00976562 27.8496 -0.410156 42.3994 -1.25977
 c-1.62012 12.6602 -2.72949 25.1699 -3.20996 37.2803zM147.869 171.9c-30.7998 -61.5098 -19.8701 -76.6104 -19.6699 -76.8203c7.38965 -15.4902 38.1299 -20.25 84.9199 4.50977c-21.9502 11.7402 -44.4902 32.6104 -65.25 72.3105zM357.929 97.0996z" />
-    <glyph glyph-name="bootstrap" unicode="&#xf836;" 
-d="M292.3 136.07c0 -42.4102 -39.7197 -41.4307 -43.9199 -41.4307h-80.8896v81.6904h80.8896c42.5605 0 43.9199 -31.9004 43.9199 -40.2598zM242.15 209.2h-74.6602v72.1797h74.6602c34.9297 0 38.4395 -20.3496 38.4395 -35.8701
-c0 -37.3096 -37.7695 -36.3096 -38.4395 -36.3096zM448 341.33v-298.66c-0.121094 -41.1553 -33.5146 -74.5488 -74.6699 -74.6699h-298.66c-41.1553 0.121094 -74.5488 33.5146 -74.6699 74.6699v298.66c0.121094 41.1553 33.5146 74.5488 74.6699 74.6699h298.66
-c41.1553 -0.121094 74.5488 -33.5146 74.6699 -74.6699zM338.05 130.14c0 21.5703 -6.64941 58.29 -49.0498 67.3506v0.729492c22.9102 9.78027 37.3398 28.25 37.3398 55.6406c0 7 2 64.7793 -77.5996 64.7793h-127v-261.33c128.229 0 139.87 -1.67969 163.6 5.70996
-c14.21 4.4209 52.71 17.9805 52.71 67.1201z" />
+    <glyph glyph-name="bootstrap" unicode="&#xf836;" horiz-adv-x="576" 
+d="M333.5 246.6c0 -23.5996 -18.0996 -36.7998 -50.9004 -36.8994h-42.5v71.2002h50.4004c27.4004 0 43 -12.2002 43 -34.3008zM517 259.4c9.5 -31 25.7002 -50.6006 52 -53.1006v-28.5c-26.4004 -2.5 -42.5 -22.0996 -52.0996 -53.0996
+c-9.5 -30.9004 -10.8008 -68.7998 -9.80078 -98.1006c1.10059 -30.3994 -22.5996 -58.5 -54.6992 -58.5h-328.7c-32 0 -55.7998 28 -54.7002 58.5c1.09961 29.3008 -0.299805 67.2002 -9.7998 98.1006c-9.60059 31 -25.7998 50.5996 -52.2002 53.0996v28.5
+c26.5 2.5 42.5996 22.1006 52.2002 53.1006c9.5 30.8994 10.7998 68.7998 9.7998 98.0996c-1.09961 30.4004 22.5996 58.5 54.7002 58.5h328.8c32 0 55.7998 -28 54.7002 -58.5c-1.10059 -29.2998 0.299805 -67.2002 9.7998 -98.0996zM300.2 72.9004
+c51.8994 0 83.2002 25.3994 83.2002 67.5c0 31.6992 -22.3008 54.6992 -55.5 58.2998v1.2998c24.3994 3.90039 43.5 26.5 43.5 51.7998c0 36 -28.4004 59.4004 -71.7002 59.4004h-97.4004v-238.3h97.9004zM290.2 181.6c35.8994 0 54.5 -13.1992 54.5 -38.8994
+c0 -25.7998 -18.1006 -39.5 -52.2998 -39.5h-52.3008v78.3994h50.1006z" />
     <glyph glyph-name="buffer" unicode="&#xf837;" 
 d="M427.84 67.3301l-196.5 -97.8203c-2.24707 -0.963867 -4.72266 -1.49805 -7.32129 -1.49805s-5.10156 0.53418 -7.34863 1.49805l-196.51 97.8203c-4 2 -4 5.28027 0 7.29004l47.0596 23.3799c2.25098 0.964844 4.72949 1.49805 7.33203 1.49805
 c2.60156 0 5.10742 -0.533203 7.3584 -1.49805l134.76 -67c2.24609 -0.969727 4.72168 -1.50684 7.32129 -1.50684s5.10254 0.537109 7.34863 1.50684l134.76 67c2.24902 0.964844 4.72656 1.49902 7.32715 1.49902s5.10449 -0.53418 7.35352 -1.49902l47.0596 -23.4297
index fbdcc77..2e5b9f1 100644 (file)
Binary files a/public/webfonts/fa-brands-400.ttf and b/public/webfonts/fa-brands-400.ttf differ
index a110b99..461ce2e 100644 (file)
Binary files a/public/webfonts/fa-brands-400.woff and b/public/webfonts/fa-brands-400.woff differ
index 200f9df..9a04d70 100644 (file)
Binary files a/public/webfonts/fa-brands-400.woff2 and b/public/webfonts/fa-brands-400.woff2 differ
index 4926641..3ecfdac 100644 (file)
Binary files a/public/webfonts/fa-regular-400.eot and b/public/webfonts/fa-regular-400.eot differ
index bb0530e..b20e72f 100644 (file)
@@ -2,11 +2,11 @@
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
 <metadata>
-Created by FontForge 20201107 at Tue Mar 16 10:13:22 2021
+Created by FontForge 20201107 at Wed Aug  4 12:22:50 2021
  By Robert Madole
 Copyright (c) Font Awesome
 </metadata>
-<!-- Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><defs>
+<!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><defs>
 <font id="FontAwesome5Free-Regular" horiz-adv-x="512" >
   <font-face 
     font-family="Font Awesome 5 Free Regular"
index 82726a6..6be32ef 100644 (file)
Binary files a/public/webfonts/fa-regular-400.ttf and b/public/webfonts/fa-regular-400.ttf differ
index fdc943e..f0bf490 100644 (file)
Binary files a/public/webfonts/fa-regular-400.woff and b/public/webfonts/fa-regular-400.woff differ
index 4e9ccbd..e748257 100644 (file)
Binary files a/public/webfonts/fa-regular-400.woff2 and b/public/webfonts/fa-regular-400.woff2 differ
index 560ce68..af42bd8 100644 (file)
Binary files a/public/webfonts/fa-solid-900.eot and b/public/webfonts/fa-solid-900.eot differ
index fb3ed9f..cc0956b 100644 (file)
@@ -2,11 +2,11 @@
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
 <metadata>
-Created by FontForge 20201107 at Tue Mar 16 10:13:23 2021
+Created by FontForge 20201107 at Wed Aug  4 12:22:50 2021
  By Robert Madole
 Copyright (c) Font Awesome
 </metadata>
-<!-- Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><defs>
+<!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><defs>
 <font id="FontAwesome5Free-Solid" horiz-adv-x="512" >
   <font-face 
     font-family="Font Awesome 5 Free Solid"
index b820448..4dd1199 100644 (file)
Binary files a/public/webfonts/fa-solid-900.ttf and b/public/webfonts/fa-solid-900.ttf differ
index 69040bb..2090c73 100644 (file)
Binary files a/public/webfonts/fa-solid-900.woff and b/public/webfonts/fa-solid-900.woff differ
index 1aeb838..7b8be45 100644 (file)
Binary files a/public/webfonts/fa-solid-900.woff2 and b/public/webfonts/fa-solid-900.woff2 differ
index c189604..32b1c86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4803=['contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','sequelize','VIRTUAL','action','contactManager','motionbar','urlForward','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)]'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4803,0x137));var _0x3480=function(_0x26b814,_0x35f2b1){_0x26b814=_0x26b814-0x0;var _0x428cbd=_0x4803[_0x26b814];return _0x428cbd;};'use strict';var Sequelize=require(_0x3480('0x0'));module['exports']={'name':{'type':Sequelize[_0x3480('0x1')],'get':function(_0x221297){return this['getDataValue'](_0x3480('0x2'));}},'action':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'isIn':{'args':[[_0x3480('0x3'),'integration',_0x3480('0x4'),'jscripty',_0x3480('0x5'),_0x3480('0x6'),_0x3480('0x7'),_0x3480('0x8')]],'msg':_0x3480('0x9')}},'comment':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'},'data1':{'type':Sequelize[_0x3480('0xa')](0x1000),'comment':_0x3480('0xb')},'data2':{'type':Sequelize[_0x3480('0xa')](0x1000),'comment':'contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]'},'data3':{'type':Sequelize[_0x3480('0xa')](0x1000),'comment':_0x3480('0xc')},'data4':{'type':Sequelize[_0x3480('0xa')](0x1000),'comments':'browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]'},'data5':{'type':Sequelize[_0x3480('0xa')](0x1000),'comments':_0x3480('0xd')},'data6':{'type':Sequelize[_0x3480('0xa')],'comments':_0x3480('0xe')},'data7':{'type':Sequelize[_0x3480('0xf')],'comments':_0x3480('0x10')}};
\ No newline at end of file
+var _0xf354=['motionbar','jscripty','urlForward','browser','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','sequelize','exports','action','STRING'];(function(_0x179e11,_0xf65436){var _0x549f04=function(_0x610545){while(--_0x610545){_0x179e11['push'](_0x179e11['shift']());}};_0x549f04(++_0xf65436);}(_0xf354,0x17c));var _0x4f35=function(_0x1d6000,_0x3118b6){_0x1d6000=_0x1d6000-0x0;var _0x17b872=_0xf354[_0x1d6000];return _0x17b872;};'use strict';var Sequelize=require(_0x4f35('0x0'));module[_0x4f35('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x2262f2){return this['getDataValue'](_0x4f35('0x2'));}},'action':{'type':Sequelize[_0x4f35('0x3')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager','integration',_0x4f35('0x4'),_0x4f35('0x5'),_0x4f35('0x6'),_0x4f35('0x7'),_0x4f35('0x8'),_0x4f35('0x9')]],'msg':_0x4f35('0xa')}},'comment':_0x4f35('0xa')},'data1':{'type':Sequelize[_0x4f35('0x3')](0x1000),'comment':'jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]'},'data2':{'type':Sequelize[_0x4f35('0x3')](0x1000),'comment':_0x4f35('0xb')},'data3':{'type':Sequelize[_0x4f35('0x3')](0x1000),'comment':_0x4f35('0xc')},'data4':{'type':Sequelize[_0x4f35('0x3')](0x1000),'comments':_0x4f35('0xd')},'data5':{'type':Sequelize[_0x4f35('0x3')](0x1000),'comments':'urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]'},'data6':{'type':Sequelize[_0x4f35('0x3')],'comments':_0x4f35('0xe')},'data7':{'type':Sequelize[_0x4f35('0xf')],'comments':'urlForward[body]'}};
\ No newline at end of file
index f32438c..8b49c10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a45=['undefined','limit','count','Content-Range','apply','reject','save','update','destroy','error','stack','name','body','Action','params','then','catch','find','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset'];(function(_0x5f1dd9,_0x59871c){var _0x54579a=function(_0x267eaa){while(--_0x267eaa){_0x5f1dd9['push'](_0x5f1dd9['shift']());}};_0x54579a(++_0x59871c);}(_0x1a45,0x6a));var _0x51a4=function(_0x48526c,_0x26df5e){_0x48526c=_0x48526c-0x0;var _0x1a09a1=_0x1a45[_0x48526c];return _0x1a09a1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x51a4('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x51a4('0x1'));var moment=require(_0x51a4('0x2'));var BPromise=require(_0x51a4('0x3'));var Mustache=require(_0x51a4('0x4'));var util=require(_0x51a4('0x5'));var path=require(_0x51a4('0x6'));var sox=require(_0x51a4('0x7'));var csv=require(_0x51a4('0x8'));var ejs=require(_0x51a4('0x9'));var fs=require('fs');var fs_extra=require(_0x51a4('0xa'));var _=require(_0x51a4('0xb'));var squel=require(_0x51a4('0xc'));var crypto=require(_0x51a4('0xd'));var jsforce=require(_0x51a4('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x51a4('0x8'));var querystring=require('querystring');var Papa=require(_0x51a4('0xf'));var Redis=require(_0x51a4('0x10'));var authService=require(_0x51a4('0x11'));var qs=require(_0x51a4('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x51a4('0x13'));var config=require(_0x51a4('0x14'));var licenseUtil=require(_0x51a4('0x15'));var db=require(_0x51a4('0x16'))['db'];function respondWithStatusCode(_0x59f691,_0x337aa5){_0x337aa5=_0x337aa5||0xcc;return function(_0x84d744){if(_0x84d744){return _0x59f691['sendStatus'](_0x337aa5);}return _0x59f691[_0x51a4('0x17')](_0x337aa5)[_0x51a4('0x18')]();};}function respondWithResult(_0x50dd59,_0x11242f){_0x11242f=_0x11242f||0xc8;return function(_0x219059){if(_0x219059){return _0x50dd59[_0x51a4('0x17')](_0x11242f)['json'](_0x219059);}};}function respondWithFilteredResult(_0xb14455,_0x43b6dd){return function(_0x5049fa){if(_0x5049fa){var _0x49a45f=typeof _0x43b6dd[_0x51a4('0x19')]===_0x51a4('0x1a')&&typeof _0x43b6dd[_0x51a4('0x1b')]===_0x51a4('0x1a');var _0x5da166=_0x5049fa['count'];var _0x38e6b9=_0x49a45f?0x0:_0x43b6dd['offset'];var _0x1be7fd=_0x49a45f?_0x5049fa[_0x51a4('0x1c')]:_0x43b6dd['offset']+_0x43b6dd['limit'];var _0x2a4745;if(_0x1be7fd>=_0x5da166){_0x1be7fd=_0x5da166;_0x2a4745=0xc8;}else{_0x2a4745=0xce;}_0xb14455[_0x51a4('0x17')](_0x2a4745);return _0xb14455['set'](_0x51a4('0x1d'),_0x38e6b9+'-'+_0x1be7fd+'/'+_0x5da166)['json'](_0x5049fa);}return null;};}function patchUpdates(_0x4dc894){return function(_0x546ba5){try{jsonpatch[_0x51a4('0x1e')](_0x546ba5,_0x4dc894,!![]);}catch(_0x566f69){return BPromise[_0x51a4('0x1f')](_0x566f69);}return _0x546ba5[_0x51a4('0x20')]();};}function saveUpdates(_0x16393d,_0x244bfc){return function(_0xa4c102){if(_0xa4c102){return _0xa4c102[_0x51a4('0x21')](_0x16393d)['then'](function(_0x43b753){return _0x43b753;});}return null;};}function removeEntity(_0x49b697,_0x1863a2){return function(_0x4bc066){if(_0x4bc066){return _0x4bc066[_0x51a4('0x22')]()['then'](function(){_0x49b697[_0x51a4('0x17')](0xcc)[_0x51a4('0x18')]();});}};}function handleEntityNotFound(_0x4b73b8,_0x3421d9){return function(_0x54e3ee){if(!_0x54e3ee){_0x4b73b8['sendStatus'](0x194);}return _0x54e3ee;};}function handleError(_0x113c59,_0x12f0f8){_0x12f0f8=_0x12f0f8||0x1f4;return function(_0x52bed3){logger[_0x51a4('0x23')](_0x52bed3[_0x51a4('0x24')]);if(_0x52bed3[_0x51a4('0x25')]){delete _0x52bed3[_0x51a4('0x25')];}_0x113c59[_0x51a4('0x17')](_0x12f0f8)['send'](_0x52bed3);};}exports[_0x51a4('0x21')]=function(_0x224e1b,_0x1c3e9b){if(_0x224e1b[_0x51a4('0x26')]['id']){delete _0x224e1b[_0x51a4('0x26')]['id'];}return db[_0x51a4('0x27')]['find']({'where':{'id':_0x224e1b[_0x51a4('0x28')]['id']}})[_0x51a4('0x29')](handleEntityNotFound(_0x1c3e9b,null))['then'](saveUpdates(_0x224e1b['body'],null))[_0x51a4('0x29')](respondWithResult(_0x1c3e9b,null))[_0x51a4('0x2a')](handleError(_0x1c3e9b,null));};exports['destroy']=function(_0x33696f,_0x85b097){return db[_0x51a4('0x27')][_0x51a4('0x2b')]({'where':{'id':_0x33696f['params']['id']}})[_0x51a4('0x29')](handleEntityNotFound(_0x85b097,null))['then'](removeEntity(_0x85b097,null))[_0x51a4('0x2a')](handleError(_0x85b097,null));};
\ No newline at end of file
+var _0x4dbb=['update','then','destroy','sendStatus','error','name','send','body','Action','catch','find','params','rimraf','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save'];(function(_0x574b61,_0x1023c5){var _0x4536a4=function(_0x2a7e3f){while(--_0x2a7e3f){_0x574b61['push'](_0x574b61['shift']());}};_0x4536a4(++_0x1023c5);}(_0x4dbb,0x10e));var _0xb4db=function(_0x4a94b1,_0x4f2518){_0x4a94b1=_0x4a94b1-0x0;var _0x20949f=_0x4dbb[_0x4a94b1];return _0x20949f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb4db('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb4db('0x1'));var rp=require('request-promise');var moment=require(_0xb4db('0x2'));var BPromise=require(_0xb4db('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xb4db('0x4'));var sox=require(_0xb4db('0x5'));var csv=require(_0xb4db('0x6'));var ejs=require(_0xb4db('0x7'));var fs=require('fs');var fs_extra=require(_0xb4db('0x8'));var _=require('lodash');var squel=require(_0xb4db('0x9'));var crypto=require('crypto');var jsforce=require(_0xb4db('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xb4db('0x6'));var querystring=require(_0xb4db('0xb'));var Papa=require(_0xb4db('0xc'));var Redis=require('ioredis');var authService=require(_0xb4db('0xd'));var qs=require(_0xb4db('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb4db('0xf'));var logger=require(_0xb4db('0x10'))('api');var utils=require(_0xb4db('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0xb4db('0x12'));var db=require(_0xb4db('0x13'))['db'];function respondWithStatusCode(_0x37d921,_0x5467f1){_0x5467f1=_0x5467f1||0xcc;return function(_0x9ca403){if(_0x9ca403){return _0x37d921['sendStatus'](_0x5467f1);}return _0x37d921[_0xb4db('0x14')](_0x5467f1)[_0xb4db('0x15')]();};}function respondWithResult(_0x4b48cc,_0x2aec14){_0x2aec14=_0x2aec14||0xc8;return function(_0x50f4cc){if(_0x50f4cc){return _0x4b48cc[_0xb4db('0x14')](_0x2aec14)[_0xb4db('0x16')](_0x50f4cc);}};}function respondWithFilteredResult(_0x388ac0,_0x47015b){return function(_0x3839c7){if(_0x3839c7){var _0x5c8678=typeof _0x47015b['offset']===_0xb4db('0x17')&&typeof _0x47015b[_0xb4db('0x18')]===_0xb4db('0x17');var _0x39abd1=_0x3839c7[_0xb4db('0x19')];var _0x33c691=_0x5c8678?0x0:_0x47015b['offset'];var _0x1f1419=_0x5c8678?_0x3839c7[_0xb4db('0x19')]:_0x47015b[_0xb4db('0x1a')]+_0x47015b[_0xb4db('0x18')];var _0x3f0ce2;if(_0x1f1419>=_0x39abd1){_0x1f1419=_0x39abd1;_0x3f0ce2=0xc8;}else{_0x3f0ce2=0xce;}_0x388ac0[_0xb4db('0x14')](_0x3f0ce2);return _0x388ac0[_0xb4db('0x1b')](_0xb4db('0x1c'),_0x33c691+'-'+_0x1f1419+'/'+_0x39abd1)['json'](_0x3839c7);}return null;};}function patchUpdates(_0xefc868){return function(_0x495780){try{jsonpatch[_0xb4db('0x1d')](_0x495780,_0xefc868,!![]);}catch(_0x2fb9cf){return BPromise['reject'](_0x2fb9cf);}return _0x495780[_0xb4db('0x1e')]();};}function saveUpdates(_0x36511e,_0x5b46b1){return function(_0x422a4d){if(_0x422a4d){return _0x422a4d[_0xb4db('0x1f')](_0x36511e)[_0xb4db('0x20')](function(_0x2bc0fb){return _0x2bc0fb;});}return null;};}function removeEntity(_0x45d8b8,_0x4f8ffb){return function(_0x1e232f){if(_0x1e232f){return _0x1e232f[_0xb4db('0x21')]()[_0xb4db('0x20')](function(){_0x45d8b8['status'](0xcc)[_0xb4db('0x15')]();});}};}function handleEntityNotFound(_0x49bab3,_0x169b01){return function(_0x138d65){if(!_0x138d65){_0x49bab3[_0xb4db('0x22')](0x194);}return _0x138d65;};}function handleError(_0x5178cc,_0x4937c2){_0x4937c2=_0x4937c2||0x1f4;return function(_0x4c26ec){logger[_0xb4db('0x23')](_0x4c26ec['stack']);if(_0x4c26ec[_0xb4db('0x24')]){delete _0x4c26ec['name'];}_0x5178cc[_0xb4db('0x14')](_0x4937c2)[_0xb4db('0x25')](_0x4c26ec);};}exports[_0xb4db('0x1f')]=function(_0x356331,_0x26d1b4){if(_0x356331[_0xb4db('0x26')]['id']){delete _0x356331[_0xb4db('0x26')]['id'];}return db[_0xb4db('0x27')]['find']({'where':{'id':_0x356331['params']['id']}})['then'](handleEntityNotFound(_0x26d1b4,null))[_0xb4db('0x20')](saveUpdates(_0x356331[_0xb4db('0x26')],null))[_0xb4db('0x20')](respondWithResult(_0x26d1b4,null))[_0xb4db('0x28')](handleError(_0x26d1b4,null));};exports[_0xb4db('0x21')]=function(_0x154f5b,_0x97501e){return db[_0xb4db('0x27')][_0xb4db('0x29')]({'where':{'id':_0x154f5b[_0xb4db('0x2a')]['id']}})[_0xb4db('0x20')](handleEntityNotFound(_0x97501e,null))[_0xb4db('0x20')](removeEntity(_0x97501e,null))['catch'](handleError(_0x97501e,null));};
\ No newline at end of file
index be12776..30ed272 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d89=['define','Action','tools_actions','lodash','../../config/logger','api','moment','bluebird','rimraf'];(function(_0x13b3e7,_0x29c10f){var _0x1d0106=function(_0x201048){while(--_0x201048){_0x13b3e7['push'](_0x13b3e7['shift']());}};_0x1d0106(++_0x29c10f);}(_0x1d89,0x18f));var _0x91d8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1d89[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x91d8('0x0'));var util=require('util');var logger=require(_0x91d8('0x1'))(_0x91d8('0x2'));var moment=require(_0x91d8('0x3'));var BPromise=require(_0x91d8('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x91d8('0x5'));var config=require('../../config/environment');var attributes=require('./action.attributes');module['exports']=function(_0x2940a8,_0x4cdfed){return _0x2940a8[_0x91d8('0x6')](_0x91d8('0x7'),attributes,{'tableName':_0x91d8('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3495=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./action.attributes','exports','Action','lodash','util'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x3495,0x1de));var _0x5349=function(_0x278cb6,_0x17c34d){_0x278cb6=_0x278cb6-0x0;var _0x504ce5=_0x3495[_0x278cb6];return _0x504ce5;};'use strict';var _=require(_0x5349('0x0'));var util=require(_0x5349('0x1'));var logger=require(_0x5349('0x2'))(_0x5349('0x3'));var moment=require(_0x5349('0x4'));var BPromise=require(_0x5349('0x5'));var rp=require(_0x5349('0x6'));var fs=require('fs');var path=require(_0x5349('0x7'));var rimraf=require(_0x5349('0x8'));var config=require('../../config/environment');var attributes=require(_0x5349('0x9'));module[_0x5349('0xa')]=function(_0x5ce2cd,_0xcb5a1){return _0x5ce2cd['define'](_0x5349('0xb'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2f3b053..44f35d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x1cb9,0x14e));var _0x91cb=function(_0x28b805,_0x10554a){_0x28b805=_0x28b805-0x0;var _0x231b70=_0x1cb9[_0x28b805];return _0x231b70;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var moment=require(_0x91cb('0x1'));var BPromise=require(_0x91cb('0x2'));var rs=require(_0x91cb('0x3'));var fs=require('fs');var Redis=require(_0x91cb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x91cb('0x5'));var logger=require(_0x91cb('0x6'))('rpc');var config=require(_0x91cb('0x7'));var jayson=require(_0x91cb('0x8'));var client=jayson[_0x91cb('0x9')][_0x91cb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3b9d98,_0x8f8a3b,_0x4c1f56){return new BPromise(function(_0x15c517,_0x5bda2f){return client[_0x91cb('0xb')](_0x3b9d98,_0x4c1f56)['then'](function(_0xa43e7a){logger[_0x91cb('0xc')](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));logger[_0x91cb('0xf')](_0x91cb('0x10'),_0x8f8a3b,_0x91cb('0xe'),JSON[_0x91cb('0x11')](_0xa43e7a));if(_0xa43e7a[_0x91cb('0x12')]){if(_0xa43e7a[_0x91cb('0x12')]['code']===0x1f4){logger[_0x91cb('0x12')](_0x91cb('0xd'),_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x5bda2f(_0xa43e7a[_0x91cb('0x12')][_0x91cb('0x13')]);}logger[_0x91cb('0x12')]('Action,\x20%s,\x20%s',_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x15c517(_0xa43e7a[_0x91cb('0x12')]['message']);}else{logger['info'](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));_0x15c517(_0xa43e7a[_0x91cb('0x14')]['message']);}})[_0x91cb('0x15')](function(_0x135890){logger['error'](_0x91cb('0xd'),_0x8f8a3b,_0x135890);_0x5bda2f(_0x135890);});});}
\ No newline at end of file
+var _0x7217=['stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Action,\x20%s,\x20%s','debug','Action,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x2dea24,_0x2fc021){var _0x309d58=function(_0x2eb89f){while(--_0x2eb89f){_0x2dea24['push'](_0x2dea24['shift']());}};_0x309d58(++_0x2fc021);}(_0x7217,0x19e));var _0x7721=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0x7217[_0x1ddedd];return _0xa3e1ac;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var moment=require(_0x7721('0x1'));var BPromise=require(_0x7721('0x2'));var rs=require(_0x7721('0x3'));var fs=require('fs');var Redis=require(_0x7721('0x4'));var db=require(_0x7721('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7721('0x6'));var config=require(_0x7721('0x7'));var jayson=require(_0x7721('0x8'));var client=jayson[_0x7721('0x9')][_0x7721('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf7ff37,_0x18ab6b,_0x21f680){return new BPromise(function(_0x225610,_0x2f99ed){return client[_0x7721('0xb')](_0xf7ff37,_0x21f680)[_0x7721('0xc')](function(_0xfa8835){logger[_0x7721('0xd')](_0x7721('0xe'),_0x18ab6b,'request\x20sent');logger[_0x7721('0xf')](_0x7721('0x10'),_0x18ab6b,_0x7721('0x11'),JSON[_0x7721('0x12')](_0xfa8835));if(_0xfa8835[_0x7721('0x13')]){if(_0xfa8835[_0x7721('0x13')][_0x7721('0x14')]===0x1f4){logger[_0x7721('0x13')]('Action,\x20%s,\x20%s',_0x18ab6b,_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);return _0x2f99ed(_0xfa8835['error'][_0x7721('0x15')]);}logger[_0x7721('0x13')](_0x7721('0xe'),_0x18ab6b,_0xfa8835[_0x7721('0x13')]['message']);return _0x225610(_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);}else{logger['info']('Action,\x20%s,\x20%s',_0x18ab6b,'request\x20sent');_0x225610(_0xfa8835[_0x7721('0x16')][_0x7721('0x15')]);}})[_0x7721('0x17')](function(_0x32550d){logger['error'](_0x7721('0xe'),_0x18ab6b,_0x32550d);_0x2f99ed(_0x32550d);});});}
\ No newline at end of file
index bf170d8..c853773 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15c7=['put','/:id','isAuthenticated','destroy','exports','multer','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x52b408,_0x22fe7e){var _0x403deb=function(_0x13defa){while(--_0x13defa){_0x52b408['push'](_0x52b408['shift']());}};_0x403deb(++_0x22fe7e);}(_0x15c7,0xa1));var _0x715c=function(_0x158424,_0x3081a7){_0x158424=_0x158424-0x0;var _0x4948d8=_0x15c7[_0x158424];return _0x4948d8;};'use strict';var multer=require(_0x715c('0x0'));var util=require('util');var path=require(_0x715c('0x1'));var timeout=require('connect-timeout');var express=require(_0x715c('0x2'));var router=express['Router']();var fs_extra=require(_0x715c('0x3'));var auth=require(_0x715c('0x4'));var interaction=require(_0x715c('0x5'));var config=require(_0x715c('0x6'));var controller=require('./action.controller');router[_0x715c('0x7')](_0x715c('0x8'),auth[_0x715c('0x9')](),controller['update']);router['delete'](_0x715c('0x8'),auth['isAuthenticated'](),controller[_0x715c('0xa')]);module[_0x715c('0xb')]=router;
\ No newline at end of file
+var _0xef17=['isAuthenticated','update','delete','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./action.controller','put','/:id'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xef17,0xb9));var _0x7ef1=function(_0x2d3056,_0x60b14b){_0x2d3056=_0x2d3056-0x0;var _0x2ab841=_0xef17[_0x2d3056];return _0x2ab841;};'use strict';var multer=require(_0x7ef1('0x0'));var util=require(_0x7ef1('0x1'));var path=require(_0x7ef1('0x2'));var timeout=require(_0x7ef1('0x3'));var express=require('express');var router=express[_0x7ef1('0x4')]();var fs_extra=require(_0x7ef1('0x5'));var auth=require(_0x7ef1('0x6'));var interaction=require(_0x7ef1('0x7'));var config=require('../../config/environment');var controller=require(_0x7ef1('0x8'));router[_0x7ef1('0x9')](_0x7ef1('0xa'),auth[_0x7ef1('0xb')](),controller[_0x7ef1('0xc')]);router[_0x7ef1('0xd')](_0x7ef1('0xa'),auth[_0x7ef1('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index a6f83de..837bd68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8fb=['TEXT','sequelize','exports','STRING'];(function(_0x5bfb4d,_0x44a0eb){var _0x128703=function(_0xaf0134){while(--_0xaf0134){_0x5bfb4d['push'](_0x5bfb4d['shift']());}};_0x128703(++_0x44a0eb);}(_0xd8fb,0x99));var _0xbd8f=function(_0x3f8b7b,_0x53f0b7){_0x3f8b7b=_0x3f8b7b-0x0;var _0x313cd7=_0xd8fb[_0x3f8b7b];return _0x313cd7;};'use strict';var Sequelize=require(_0xbd8f('0x0'));module[_0xbd8f('0x1')]={'name':{'type':Sequelize[_0xbd8f('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xbd8f('0x2')]},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xbd8f('0x3')]}};
\ No newline at end of file
+var _0x98a8=['sequelize','exports','STRING','TEXT'];(function(_0x10fcf1,_0x1067cf){var _0x1636f7=function(_0x149a07){while(--_0x149a07){_0x10fcf1['push'](_0x10fcf1['shift']());}};_0x1636f7(++_0x1067cf);}(_0x98a8,0x12c));var _0x898a=function(_0x73281a,_0x247af3){_0x73281a=_0x73281a-0x0;var _0x42689d=_0x98a8[_0x73281a];return _0x42689d;};'use strict';var Sequelize=require(_0x898a('0x0'));module[_0x898a('0x1')]={'name':{'type':Sequelize[_0x898a('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x898a('0x2')]},'parent':{'type':Sequelize[_0x898a('0x2')]},'table':{'type':Sequelize[_0x898a('0x2')]},'conditions':{'type':Sequelize[_0x898a('0x3')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 08c39fe..b4455a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1ac=['orderBy','output','web','%s-%s.%s','randomstring','generate','csv','custom','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','countTable','run','runReport','QueryTypes','rimraf','zip-dir','fast-json-patch','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','../../config/license/hardware','../../config/environment','../../config/license/util','dbH','end','status','json','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','CustomReports','sendStatus','error','name','send','index','map','AnalyticCustomReport','rawAttributes','fieldName','type','model','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','VIRTUAL','options','count','includeAll','include','findAll','catch','show','params','keys','find','body','role','user','userProfileId','autoAssociation','UserProfileResource','create','join','right_join','SUM(%s)','MAX(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','condition','value','merge','Sequelize','ValidationErrorItem','AnalyticMetric','keyBy','select','from','table','MetricId','metric','field','replace','function','format','groupBy','DESC','alias','joins','parse','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','parentKey','conditions','clone','debug','Limited\x20Query:','toString','sequelize','SELECT','left_join','cross_join','COUNT(%s)','COUNT(DISTINCT\x20%s)','SEC_TO_TIME(%s)','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20NULL','getFields','Please\x20insert\x20at\x20least\x20one\x20field'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xa1ac,0xbb));var _0xca1a=function(_0xd44bc1,_0x524adc){_0xd44bc1=_0xd44bc1-0x0;var _0x6f240e=_0xa1ac[_0xd44bc1];return _0x6f240e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xca1a('0x0'));var zipdir=require(_0xca1a('0x1'));var jsonpatch=require(_0xca1a('0x2'));var rp=require(_0xca1a('0x3'));var moment=require(_0xca1a('0x4'));var BPromise=require(_0xca1a('0x5'));var Mustache=require(_0xca1a('0x6'));var util=require(_0xca1a('0x7'));var path=require(_0xca1a('0x8'));var sox=require('sox');var csv=require(_0xca1a('0x9'));var ejs=require(_0xca1a('0xa'));var fs=require('fs');var fs_extra=require(_0xca1a('0xb'));var _=require(_0xca1a('0xc'));var squel=require(_0xca1a('0xd'));var crypto=require(_0xca1a('0xe'));var jsforce=require(_0xca1a('0xf'));var deskjs=require(_0xca1a('0x10'));var toCsv=require(_0xca1a('0x9'));var querystring=require('querystring');var Papa=require(_0xca1a('0x11'));var Redis=require(_0xca1a('0x12'));var authService=require(_0xca1a('0x13'));var qs=require(_0xca1a('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xca1a('0x15'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xca1a('0x16'));var licenseUtil=require(_0xca1a('0x17'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0xca1a('0x18')];function respondWithStatusCode(_0x264399,_0x2c136d){_0x2c136d=_0x2c136d||0xcc;return function(_0xe7622c){if(_0xe7622c){return _0x264399['sendStatus'](_0x2c136d);}return _0x264399['status'](_0x2c136d)[_0xca1a('0x19')]();};}function respondWithResult(_0x3b7f14,_0x2bf135){_0x2bf135=_0x2bf135||0xc8;return function(_0x5027a5){if(_0x5027a5){return _0x3b7f14[_0xca1a('0x1a')](_0x2bf135)[_0xca1a('0x1b')](_0x5027a5);}};}function respondWithFilteredResult(_0x3d2fc2,_0x4f2598){return function(_0x56a580){if(_0x56a580){var _0x3d7ed3=typeof _0x4f2598[_0xca1a('0x1c')]==='undefined'&&typeof _0x4f2598[_0xca1a('0x1d')]==='undefined';var _0x5029d0=_0x56a580['count'];var _0x195290=_0x3d7ed3?0x0:_0x4f2598[_0xca1a('0x1c')];var _0x389e29=_0x3d7ed3?_0x56a580['count']:_0x4f2598[_0xca1a('0x1c')]+_0x4f2598[_0xca1a('0x1d')];var _0x2ff1c4;if(_0x389e29>=_0x5029d0){_0x389e29=_0x5029d0;_0x2ff1c4=0xc8;}else{_0x2ff1c4=0xce;}_0x3d2fc2[_0xca1a('0x1a')](_0x2ff1c4);return _0x3d2fc2[_0xca1a('0x1e')](_0xca1a('0x1f'),_0x195290+'-'+_0x389e29+'/'+_0x5029d0)['json'](_0x56a580);}return null;};}function patchUpdates(_0x36795c){return function(_0x2276af){try{jsonpatch[_0xca1a('0x20')](_0x2276af,_0x36795c,!![]);}catch(_0x19fc8b){return BPromise[_0xca1a('0x21')](_0x19fc8b);}return _0x2276af[_0xca1a('0x22')]();};}function saveUpdates(_0x552d33,_0x2193ec){return function(_0x5c7fb1){if(_0x5c7fb1){return _0x5c7fb1[_0xca1a('0x23')](_0x552d33)[_0xca1a('0x24')](function(_0x2cd555){return _0x2cd555;});}return null;};}function removeEntity(_0x383015,_0x142625){return function(_0x2da4cd){if(_0x2da4cd){return _0x2da4cd[_0xca1a('0x25')]()['then'](function(){var _0x1a9c74=_0x2da4cd[_0xca1a('0x26')]({'plain':!![]});var _0x1fc77e=_0xca1a('0x27');return db['UserProfileResource'][_0xca1a('0x25')]({'where':{'type':_0x1fc77e,'resourceId':_0x1a9c74['id']}})[_0xca1a('0x24')](function(){return _0x2da4cd;});})[_0xca1a('0x24')](function(){_0x383015[_0xca1a('0x1a')](0xcc)[_0xca1a('0x19')]();});}};}function handleEntityNotFound(_0x2db480,_0x173808){return function(_0xc957b7){if(!_0xc957b7){_0x2db480[_0xca1a('0x28')](0x194);}return _0xc957b7;};}function handleError(_0x16ec0e,_0x41a565){_0x41a565=_0x41a565||0x1f4;return function(_0x49c8f0){logger[_0xca1a('0x29')](_0x49c8f0['stack']);if(_0x49c8f0[_0xca1a('0x2a')]){delete _0x49c8f0[_0xca1a('0x2a')];}_0x16ec0e['status'](_0x41a565)[_0xca1a('0x2b')](_0x49c8f0);};}exports[_0xca1a('0x2c')]=function(_0x3cf160,_0x79fe7){var _0x29468c={},_0x1409b4={},_0x176f27={'count':0x0,'rows':[]};var _0x1818fd=_[_0xca1a('0x2d')](db[_0xca1a('0x2e')][_0xca1a('0x2f')],function(_0xea4022){return{'name':_0xea4022[_0xca1a('0x30')],'type':_0xea4022[_0xca1a('0x31')]['key']};});_0x1409b4[_0xca1a('0x32')]=_[_0xca1a('0x2d')](_0x1818fd,_0xca1a('0x2a'));_0x1409b4[_0xca1a('0x33')]=_['keys'](_0x3cf160['query']);_0x1409b4['filters']=_['intersection'](_0x1409b4[_0xca1a('0x32')],_0x1409b4[_0xca1a('0x33')]);_0x29468c[_0xca1a('0x34')]=_[_0xca1a('0x35')](_0x1409b4[_0xca1a('0x32')],qs[_0xca1a('0x36')](_0x3cf160[_0xca1a('0x33')][_0xca1a('0x36')]));_0x29468c[_0xca1a('0x34')]=_0x29468c[_0xca1a('0x34')][_0xca1a('0x37')]?_0x29468c[_0xca1a('0x34')]:_0x1409b4['model'];if(!_0x3cf160[_0xca1a('0x33')][_0xca1a('0x38')](_0xca1a('0x39'))){_0x29468c[_0xca1a('0x1d')]=qs['limit'](_0x3cf160['query']['limit']);_0x29468c['offset']=qs['offset'](_0x3cf160[_0xca1a('0x33')]['offset']);}_0x29468c[_0xca1a('0x3a')]=qs[_0xca1a('0x3b')](_0x3cf160['query'][_0xca1a('0x3b')]);_0x29468c['where']=qs[_0xca1a('0x3c')](_[_0xca1a('0x3d')](_0x3cf160[_0xca1a('0x33')],_0x1409b4[_0xca1a('0x3c')]),_0x1818fd);if(_0x3cf160[_0xca1a('0x33')][_0xca1a('0x3e')]){_0x29468c[_0xca1a('0x3f')]=_['merge'](_0x29468c[_0xca1a('0x3f')],{'$or':_[_0xca1a('0x2d')](_0x1818fd,function(_0x35cb93){if(_0x35cb93[_0xca1a('0x31')]!==_0xca1a('0x40')){var _0x43781d={};_0x43781d[_0x35cb93[_0xca1a('0x2a')]]={'$like':'%'+_0x3cf160[_0xca1a('0x33')][_0xca1a('0x3e')]+'%'};return _0x43781d;}})});}_0x29468c=_['merge']({},_0x29468c,_0x3cf160[_0xca1a('0x41')]);var _0x51ed16={'where':_0x29468c[_0xca1a('0x3f')]};return db[_0xca1a('0x2e')][_0xca1a('0x42')](_0x51ed16)[_0xca1a('0x24')](function(_0x2b80fc){_0x176f27[_0xca1a('0x42')]=_0x2b80fc;if(_0x3cf160['query'][_0xca1a('0x43')]){_0x29468c[_0xca1a('0x44')]=[{'all':!![]}];}return db['AnalyticCustomReport'][_0xca1a('0x45')](_0x29468c);})[_0xca1a('0x24')](function(_0x325b0e){_0x176f27['rows']=_0x325b0e;return _0x176f27;})['then'](respondWithFilteredResult(_0x79fe7,_0x29468c))[_0xca1a('0x46')](handleError(_0x79fe7,null));};exports[_0xca1a('0x47')]=function(_0x3071ed,_0x3d628d){var _0xc50eb2={'raw':![],'where':{'id':_0x3071ed[_0xca1a('0x48')]['id']}},_0x4c9a54={};_0x4c9a54[_0xca1a('0x32')]=_[_0xca1a('0x49')](db[_0xca1a('0x2e')][_0xca1a('0x2f')]);_0x4c9a54[_0xca1a('0x33')]=_[_0xca1a('0x49')](_0x3071ed[_0xca1a('0x33')]);_0x4c9a54['filters']=_[_0xca1a('0x35')](_0x4c9a54[_0xca1a('0x32')],_0x4c9a54[_0xca1a('0x33')]);_0xc50eb2[_0xca1a('0x34')]=_['intersection'](_0x4c9a54[_0xca1a('0x32')],qs[_0xca1a('0x36')](_0x3071ed[_0xca1a('0x33')][_0xca1a('0x36')]));_0xc50eb2[_0xca1a('0x34')]=_0xc50eb2[_0xca1a('0x34')]['length']?_0xc50eb2[_0xca1a('0x34')]:_0x4c9a54[_0xca1a('0x32')];if(_0x3071ed[_0xca1a('0x33')][_0xca1a('0x43')]){_0xc50eb2['include']=[{'all':!![]}];}_0xc50eb2=_['merge']({},_0xc50eb2,_0x3071ed['options']);return db[_0xca1a('0x2e')][_0xca1a('0x4a')](_0xc50eb2)[_0xca1a('0x24')](handleEntityNotFound(_0x3d628d,null))[_0xca1a('0x24')](respondWithResult(_0x3d628d,null))[_0xca1a('0x46')](handleError(_0x3d628d,null));};exports['create']=function(_0x554b22,_0x3cbff8){return db[_0xca1a('0x2e')]['create'](_0x554b22[_0xca1a('0x4b')],{})['then'](function(_0x1c6196){var _0x1fd2ba=_0x554b22['user']['get']({'plain':!![]});if(!_0x1fd2ba)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1fd2ba[_0xca1a('0x4c')]===_0xca1a('0x4d')){var _0x431843=_0x1c6196[_0xca1a('0x26')]({'plain':!![]});var _0x1bfaea='Reports';return db['UserProfileSection'][_0xca1a('0x4a')]({'where':{'name':_0x1bfaea,'userProfileId':_0x1fd2ba[_0xca1a('0x4e')]},'raw':!![]})[_0xca1a('0x24')](function(_0x33f8de){if(_0x33f8de&&_0x33f8de[_0xca1a('0x4f')]===0x0){return db[_0xca1a('0x50')][_0xca1a('0x51')]({'name':_0x431843[_0xca1a('0x2a')],'resourceId':_0x431843['id'],'type':'CustomReports','sectionId':_0x33f8de['id']},{})['then'](function(){return _0x1c6196;});}else{return _0x1c6196;}})[_0xca1a('0x46')](function(_0x4a0cf6){logger[_0xca1a('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4a0cf6);throw _0x4a0cf6;});}return _0x1c6196;})['then'](respondWithResult(_0x3cbff8,0xc9))[_0xca1a('0x46')](handleError(_0x3cbff8,null));};exports[_0xca1a('0x23')]=function(_0x38e01e,_0x2a7210){if(_0x38e01e['body']['id']){delete _0x38e01e[_0xca1a('0x4b')]['id'];}return db[_0xca1a('0x2e')]['find']({'where':{'id':_0x38e01e[_0xca1a('0x48')]['id']}})[_0xca1a('0x24')](handleEntityNotFound(_0x2a7210,null))['then'](saveUpdates(_0x38e01e[_0xca1a('0x4b')],null))[_0xca1a('0x24')](respondWithResult(_0x2a7210,null))[_0xca1a('0x46')](handleError(_0x2a7210,null));};exports['destroy']=function(_0x28cbd3,_0x3401aa){return db[_0xca1a('0x2e')][_0xca1a('0x4a')]({'where':{'id':_0x28cbd3[_0xca1a('0x48')]['id']}})[_0xca1a('0x24')](handleEntityNotFound(_0x3401aa,null))[_0xca1a('0x24')](removeEntity(_0x3401aa,null))[_0xca1a('0x46')](handleError(_0x3401aa,null));};exports['preview']=function(_0x253d57,_0x59978f){var _0x5d0487=0xa;var _0x47e3bc=[_0xca1a('0x52'),'left_join',_0xca1a('0x53'),'cross_join'];var _0x2f5d2f={'SUM':_0xca1a('0x54'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xca1a('0x55'),'MIN':'MIN(%s)','AVG':_0xca1a('0x56'),'GROUP_CONCAT':_0xca1a('0x57'),'GROUP_CONCAT ASC':_0xca1a('0x58'),'GROUP_CONCAT DESC':_0xca1a('0x59')};var _0x12b4ed={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xca1a('0x5a'),'HOUR':_0xca1a('0x5b'),'ROUND':_0xca1a('0x5c'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x3ad689=function(_0x459637){return!_[_0xca1a('0x5d')]([_0xca1a('0x5e'),'IS\x20NOT\x20NULL',_0xca1a('0x5f'),_0xca1a('0x60')],_0x459637);};var _0x4e0d71=function(_0x2418bd){if(!_0x2418bd||!_0x2418bd['rules'][_0xca1a('0x37')]){return'';}for(var _0x16ed51='(',_0xa06ec=0x0;_0xa06ec<_0x2418bd[_0xca1a('0x61')]['length'];_0xa06ec+=0x1){_0xa06ec>0x0&&(_0x16ed51+='\x20'+_0x2418bd[_0xca1a('0x62')]+'\x20');_0x16ed51+=_0x2418bd[_0xca1a('0x61')][_0xa06ec][_0xca1a('0x63')]?_0x4e0d71(_0x2418bd['rules'][_0xa06ec]['group']):_0x2418bd[_0xca1a('0x61')][_0xa06ec]['field']+'\x20'+_0x2418bd[_0xca1a('0x61')][_0xa06ec][_0xca1a('0x64')]+(_0x3ad689(_0x2418bd[_0xca1a('0x61')][_0xa06ec][_0xca1a('0x64')])?'\x20'+_0x2418bd[_0xca1a('0x61')][_0xa06ec][_0xca1a('0x65')]:'');}return _0x16ed51+')';};var _0x14d3f3={'where':{'id':_0x253d57[_0xca1a('0x48')]['id']}},_0x5d5645,_0x4ec7a4,_0x367bb4,_0x123353,_0x44d3f1;_0x14d3f3=_[_0xca1a('0x66')]({},_0x14d3f3,_0x253d57[_0xca1a('0x41')]);return db[_0xca1a('0x2e')][_0xca1a('0x4a')](_0x14d3f3)[_0xca1a('0x24')](function(_0x4db5fc){if(_0x4db5fc){_0x5d5645=_0x4db5fc;return _0x4db5fc['getFields']();}return null;})[_0xca1a('0x24')](function(_0x154d71){if(_0x154d71){if(!_0x154d71['length']){throw new db[(_0xca1a('0x67'))][(_0xca1a('0x68'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x4ec7a4=_0x154d71;return db[_0xca1a('0x69')][_0xca1a('0x45')]({'raw':!![]});}return null;})[_0xca1a('0x24')](function(_0x51d587){if(_0x51d587){_0x367bb4=_[_0xca1a('0x6a')](_0x51d587,'id');var _0x55f191;var _0x23e214=squel[_0xca1a('0x6b')]();_0x23e214[_0xca1a('0x6c')](_0x5d5645[_0xca1a('0x6d')]);for(var _0x343b06=0x0;_0x343b06<_0x4ec7a4[_0xca1a('0x37')];_0x343b06+=0x1){_0x55f191=_0x4ec7a4[_0x343b06]['MetricId']?_0x367bb4[_0x4ec7a4[_0x343b06][_0xca1a('0x6e')]][_0xca1a('0x6f')]:_0x4ec7a4[_0x343b06][_0xca1a('0x70')];_0x55f191=_0x4ec7a4[_0x343b06]['function']?_[_0xca1a('0x71')](_0x2f5d2f[_0x4ec7a4[_0x343b06][_0xca1a('0x72')]],'%s',_0x55f191):_0x55f191;_0x55f191=_0x4ec7a4[_0x343b06][_0xca1a('0x73')]?_['replace'](_0x12b4ed[_0x4ec7a4[_0x343b06][_0xca1a('0x73')]],'%s',_0x55f191):_0x55f191;if(_0x4ec7a4[_0x343b06][_0xca1a('0x74')]){_0x23e214[_0xca1a('0x63')](_0x55f191);}_0x4ec7a4[_0x343b06]['orderBy']&&_0x23e214[_0xca1a('0x3a')](_0x55f191,_0x4ec7a4[_0x343b06]['orderBy']===_0xca1a('0x75')?![]:!![]);_0x23e214[_0xca1a('0x70')](_0x55f191,_0x4ec7a4[_0x343b06][_0xca1a('0x76')]||_0x55f191);}if(_0x5d5645[_0xca1a('0x77')]){_0x5d5645['joins']=JSON[_0xca1a('0x78')](_0x5d5645[_0xca1a('0x77')]);for(var _0x17ec70=0x0;_0x17ec70<_0x5d5645[_0xca1a('0x77')]['length'];_0x17ec70+=0x1){if(_0x5d5645[_0xca1a('0x77')][_0x17ec70][_0xca1a('0x31')]&&_['includes'](_0x47e3bc,_0x5d5645['joins'][_0x17ec70][_0xca1a('0x31')])&&_0x5d5645['joins'][_0x17ec70]['parentKey']&&_0x5d5645[_0xca1a('0x77')][_0x17ec70][_0xca1a('0x79')]&&_0x5d5645[_0xca1a('0x77')][_0x17ec70][_0xca1a('0x7a')]){_0x23e214[_0x5d5645['joins'][_0x17ec70][_0xca1a('0x31')]](_0x5d5645[_0xca1a('0x77')][_0x17ec70][_0xca1a('0x79')],null,util[_0xca1a('0x73')](_0xca1a('0x7b'),_0x5d5645[_0xca1a('0x6d')],_0x5d5645[_0xca1a('0x77')][_0x17ec70][_0xca1a('0x7c')],_0x5d5645[_0xca1a('0x77')][_0x17ec70][_0xca1a('0x79')],_0x5d5645['joins'][_0x17ec70][_0xca1a('0x7a')]));}}}if(_0x5d5645[_0xca1a('0x7d')]){_0x5d5645['conditions']=JSON['parse'](_0x5d5645[_0xca1a('0x7d')]);_0x23e214['where'](_0x4e0d71(_0x5d5645[_0xca1a('0x7d')][_0xca1a('0x63')]));}_0x44d3f1=_0x23e214[_0xca1a('0x7e')]();_0x23e214[_0xca1a('0x1d')](_0x5d0487);_0x23e214['offset'](0x0);logger[_0xca1a('0x7f')](_0xca1a('0x80'),_0x23e214[_0xca1a('0x81')]());return dbH[_0xca1a('0x82')][_0xca1a('0x33')](_0x23e214['toString'](),{'type':dbH[_0xca1a('0x82')]['QueryTypes'][_0xca1a('0x83')]});}})[_0xca1a('0x24')](respondWithResult(_0x59978f,null))[_0xca1a('0x46')](handleError(_0x59978f,null));};function runReport(_0xd70387,_0x25983b,_0x4cb65f){var _0x2dd895=_0x25983b[_0xca1a('0x2a')];var _0x5b59e7=0xa;var _0x4e09e7=[_0xca1a('0x52'),_0xca1a('0x84'),_0xca1a('0x53'),_0xca1a('0x85')];var _0x16607a={'SUM':_0xca1a('0x54'),'COUNT':_0xca1a('0x86'),'COUNT DISTINCT':_0xca1a('0x87'),'MAX':_0xca1a('0x55'),'MIN':'MIN(%s)','AVG':_0xca1a('0x56'),'GROUP_CONCAT':_0xca1a('0x57'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xca1a('0x59')};var _0x534c98={'SEC_TO_TIME':_0xca1a('0x88'),'DATE':_0xca1a('0x5a'),'HOUR':_0xca1a('0x5b'),'ROUND':_0xca1a('0x5c'),'UNIX_TIMESTAMP':_0xca1a('0x89')};var _0x25ff05=function(_0x27880c){return!_[_0xca1a('0x5d')]([_0xca1a('0x5e'),_0xca1a('0x8a'),_0xca1a('0x5f'),_0xca1a('0x60')],_0x27880c);};var _0xe1ef42=function(_0x5eede5){if(!_0x5eede5||!_0x5eede5[_0xca1a('0x61')][_0xca1a('0x37')]){return'';}for(var _0x43ea6e='(',_0x1f0625=0x0;_0x1f0625<_0x5eede5[_0xca1a('0x61')][_0xca1a('0x37')];_0x1f0625+=0x1){_0x1f0625>0x0&&(_0x43ea6e+='\x20'+_0x5eede5[_0xca1a('0x62')]+'\x20');_0x43ea6e+=_0x5eede5[_0xca1a('0x61')][_0x1f0625][_0xca1a('0x63')]?_0xe1ef42(_0x5eede5['rules'][_0x1f0625][_0xca1a('0x63')]):_0x5eede5['rules'][_0x1f0625]['field']+'\x20'+_0x5eede5[_0xca1a('0x61')][_0x1f0625][_0xca1a('0x64')]+(_0x25ff05(_0x5eede5[_0xca1a('0x61')][_0x1f0625][_0xca1a('0x64')])?'\x20'+_0x5eede5['rules'][_0x1f0625]['value']:'');}return _0x43ea6e+')';};var _0x7b23be={'where':{'id':_0xd70387['id']}},_0x23b64d,_0x30c9d3,_0x5462a3,_0x2903fb,_0x206259;_0x7b23be=_['merge']({},_0x7b23be,_0x4cb65f);return db[_0xca1a('0x2e')][_0xca1a('0x4a')](_0x7b23be)[_0xca1a('0x24')](function(_0x214889){if(_0x214889){_0x23b64d=_0x214889;return _0x214889[_0xca1a('0x8b')]();}return null;})[_0xca1a('0x24')](function(_0x53742b){if(_0x53742b){if(!_0x53742b['length']){throw new db[(_0xca1a('0x67'))][(_0xca1a('0x68'))](_0xca1a('0x8c'),0x193);}_0x30c9d3=_0x53742b;return db[_0xca1a('0x69')][_0xca1a('0x45')]({'raw':!![]});}return null;})[_0xca1a('0x24')](function(_0x5ad057){if(_0x5ad057){_0x5462a3=_[_0xca1a('0x6a')](_0x5ad057,'id');var _0x518140;var _0x12136a=squel[_0xca1a('0x6b')]();_0x12136a['from'](_0x23b64d['table']);for(var _0x429ed2=0x0;_0x429ed2<_0x30c9d3[_0xca1a('0x37')];_0x429ed2+=0x1){_0x518140=_0x30c9d3[_0x429ed2][_0xca1a('0x6e')]?_0x5462a3[_0x30c9d3[_0x429ed2][_0xca1a('0x6e')]][_0xca1a('0x6f')]:_0x30c9d3[_0x429ed2][_0xca1a('0x70')];_0x518140=_0x30c9d3[_0x429ed2][_0xca1a('0x72')]?_['replace'](_0x16607a[_0x30c9d3[_0x429ed2][_0xca1a('0x72')]],'%s',_0x518140):_0x518140;_0x518140=_0x30c9d3[_0x429ed2][_0xca1a('0x73')]?_[_0xca1a('0x71')](_0x534c98[_0x30c9d3[_0x429ed2][_0xca1a('0x73')]],'%s',_0x518140):_0x518140;if(_0x30c9d3[_0x429ed2][_0xca1a('0x74')]){_0x12136a[_0xca1a('0x63')](_0x518140);}_0x30c9d3[_0x429ed2][_0xca1a('0x8d')]&&_0x12136a[_0xca1a('0x3a')](_0x518140,_0x30c9d3[_0x429ed2]['orderBy']==='DESC'?![]:!![]);_0x12136a[_0xca1a('0x70')](_0x518140,_0x30c9d3[_0x429ed2][_0xca1a('0x76')]||_0x518140);}if(_0x23b64d[_0xca1a('0x77')]){_0x23b64d[_0xca1a('0x77')]=JSON[_0xca1a('0x78')](_0x23b64d[_0xca1a('0x77')]);for(var _0x267e20=0x0;_0x267e20<_0x23b64d['joins']['length'];_0x267e20+=0x1){if(_0x23b64d[_0xca1a('0x77')][_0x267e20][_0xca1a('0x31')]&&_['includes'](_0x4e09e7,_0x23b64d['joins'][_0x267e20][_0xca1a('0x31')])&&_0x23b64d['joins'][_0x267e20][_0xca1a('0x7c')]&&_0x23b64d[_0xca1a('0x77')][_0x267e20][_0xca1a('0x79')]&&_0x23b64d[_0xca1a('0x77')][_0x267e20][_0xca1a('0x7a')]){_0x12136a[_0x23b64d[_0xca1a('0x77')][_0x267e20][_0xca1a('0x31')]](_0x23b64d['joins'][_0x267e20][_0xca1a('0x79')],null,util[_0xca1a('0x73')](_0xca1a('0x7b'),_0x23b64d['table'],_0x23b64d[_0xca1a('0x77')][_0x267e20]['parentKey'],_0x23b64d['joins'][_0x267e20][_0xca1a('0x79')],_0x23b64d['joins'][_0x267e20][_0xca1a('0x7a')]));}}}if(_0x23b64d[_0xca1a('0x7d')]){_0x23b64d['conditions']=JSON[_0xca1a('0x78')](_0x23b64d[_0xca1a('0x7d')]);_0x12136a['where'](_0xe1ef42(_0x23b64d['conditions'][_0xca1a('0x63')]));}_0x206259=_0x12136a[_0xca1a('0x7e')]();_0x12136a[_0xca1a('0x1d')](_0x5b59e7);_0x12136a[_0xca1a('0x1c')](0x0);return;}})['then'](function(){if(_0x25983b[_0xca1a('0x8e')]===_0xca1a('0x8f')){return null;}var _0x19d55d=_[_0xca1a('0x66')](_0x25983b,{'name':_0x25983b['fullPath']||_0x25983b[_0xca1a('0x2a')]||_0x23b64d[_0xca1a('0x2a')],'basename':_0x2dd895,'savename':util[_0xca1a('0x73')](_0xca1a('0x90'),_0x25983b['name']||_0x23b64d[_0xca1a('0x2a')],require(_0xca1a('0x91'))[_0xca1a('0x92')](0x4),_0x25983b['output']||_0xca1a('0x93')),'reportId':_0x23b64d['id'],'reportType':_0xca1a('0x94')});return db['AnalyticExtractedReport'][_0xca1a('0x51')](_0x19d55d,{'raw':!![]});})[_0xca1a('0x24')](function(_0x16c2ba){if(_0x23b64d['table']===_0xca1a('0x95')){_0x206259['where'](_0x23b64d[_0xca1a('0x6d')]+_0xca1a('0x96'),_0x25983b[_0xca1a('0x97')],_0x25983b[_0xca1a('0x98')]);}else{_0x206259[_0xca1a('0x3f')](_0x23b64d['table']+_0xca1a('0x99'),_0x25983b['startDate'],_0x25983b[_0xca1a('0x98')]);}if(_0x16c2ba){logger['info'](_0xca1a('0x9a'),_0x206259['toString']());require(_0xca1a('0x9b'))[_0xca1a('0x9c')](path[_0xca1a('0x52')](__dirname,_0xca1a('0x9d'),_0x16c2ba['output']),[_0x16c2ba['id'],_0x206259['toString'](),path[_0xca1a('0x52')](__dirname,_0xca1a('0x9e'),_0x16c2ba[_0xca1a('0x9f')]),_0x2dd895]);return _0x16c2ba;}else{var _0x14a75c=squel['select']();_0x14a75c[_0xca1a('0x6c')]('('+_0x206259[_0xca1a('0x81')]()+')',_0xca1a('0xa0'));_0x14a75c['field']('COUNT(*)',_0xca1a('0x42'));_0x206259[_0xca1a('0x1d')](_0x25983b[_0xca1a('0x1d')]||_0x5b59e7);_0x206259[_0xca1a('0x1c')](_0x25983b[_0xca1a('0x1c')]||0x0);return dbH[_0xca1a('0x82')][_0xca1a('0x33')](_0x14a75c[_0xca1a('0x81')](),{'type':dbH[_0xca1a('0x82')]['QueryTypes'][_0xca1a('0x83')]})[_0xca1a('0x24')](function(_0x1c519c){if(!_0x1c519c[_0xca1a('0x37')]){_0x2903fb=0x0;}else{_0x2903fb=_0x1c519c[0x0][_0xca1a('0x42')]||0x0;}return dbH[_0xca1a('0x82')][_0xca1a('0x33')](_0x206259[_0xca1a('0x81')](),{'type':dbH['sequelize']['QueryTypes'][_0xca1a('0x83')]});})['then'](function(_0x37c0c7){return{'rows':_0x37c0c7||[],'count':_0x2903fb};});}});}exports[_0xca1a('0xa1')]=function(_0x333289,_0x35c9d4){return runReport(_0x333289['params'],_0x333289['query'],_0x333289['options'])[_0xca1a('0x24')](respondWithResult(_0x35c9d4,null))['catch'](handleError(_0x35c9d4,null));};exports[_0xca1a('0xa2')]=runReport;exports[_0xca1a('0x33')]=function(_0x971aaa,_0x4d42a5){var _0x51fc53=0xa;var _0xc3a3ab=[_0xca1a('0x52'),_0xca1a('0x84'),_0xca1a('0x53'),_0xca1a('0x85')];var _0x2c2782={'SUM':'SUM(%s)','COUNT':_0xca1a('0x86'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xca1a('0x55'),'MIN':'MIN(%s)','AVG':_0xca1a('0x56'),'GROUP_CONCAT':_0xca1a('0x57'),'GROUP_CONCAT ASC':_0xca1a('0x58'),'GROUP_CONCAT DESC':_0xca1a('0x59')};var _0x27b695={'SEC_TO_TIME':_0xca1a('0x88'),'DATE':'DATE(%s)','HOUR':_0xca1a('0x5b'),'ROUND':_0xca1a('0x5c'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x174284=function(_0x49e6cd){return!_[_0xca1a('0x5d')](['IS\x20NULL',_0xca1a('0x8a'),_0xca1a('0x5f'),_0xca1a('0x60')],_0x49e6cd);};var _0x1cbfee=function(_0x145d95){if(!_0x145d95||!_0x145d95['rules'][_0xca1a('0x37')]){return'';}for(var _0x5114db='(',_0x127ed2=0x0;_0x127ed2<_0x145d95['rules'][_0xca1a('0x37')];_0x127ed2+=0x1){_0x127ed2>0x0&&(_0x5114db+='\x20'+_0x145d95[_0xca1a('0x62')]+'\x20');_0x5114db+=_0x145d95[_0xca1a('0x61')][_0x127ed2][_0xca1a('0x63')]?_0x1cbfee(_0x145d95['rules'][_0x127ed2][_0xca1a('0x63')]):_0x145d95['rules'][_0x127ed2]['field']+'\x20'+_0x145d95[_0xca1a('0x61')][_0x127ed2][_0xca1a('0x64')]+(_0x174284(_0x145d95[_0xca1a('0x61')][_0x127ed2][_0xca1a('0x64')])?'\x20'+_0x145d95[_0xca1a('0x61')][_0x127ed2][_0xca1a('0x65')]:'');}return _0x5114db+')';};var _0x151211={'where':{'id':_0x971aaa[_0xca1a('0x48')]['id']}},_0xb36e2,_0x4b9353,_0x47fd5c,_0x148b9d,_0x4d50de;_0x151211=_[_0xca1a('0x66')]({},_0x151211,_0x971aaa[_0xca1a('0x41')]);return db['AnalyticCustomReport']['find'](_0x151211)[_0xca1a('0x24')](function(_0x20d190){if(_0x20d190){_0xb36e2=_0x20d190;return _0x20d190[_0xca1a('0x8b')]();}return null;})['then'](function(_0x3fb5a3){if(_0x3fb5a3){if(!_0x3fb5a3['length']){throw new db[(_0xca1a('0x67'))]['ValidationErrorItem'](_0xca1a('0x8c'),0x193);}_0x4b9353=_0x3fb5a3;return db[_0xca1a('0x69')]['findAll']({'raw':!![]});}return null;})[_0xca1a('0x24')](function(_0x23bfc7){if(_0x23bfc7){_0x47fd5c=_['keyBy'](_0x23bfc7,'id');var _0x32f6ef;var _0x3c0f10=squel[_0xca1a('0x6b')]();_0x3c0f10[_0xca1a('0x6c')](_0xb36e2[_0xca1a('0x6d')]);for(var _0xf1df5b=0x0;_0xf1df5b<_0x4b9353['length'];_0xf1df5b+=0x1){_0x32f6ef=_0x4b9353[_0xf1df5b][_0xca1a('0x6e')]?_0x47fd5c[_0x4b9353[_0xf1df5b]['MetricId']][_0xca1a('0x6f')]:_0x4b9353[_0xf1df5b][_0xca1a('0x70')];_0x32f6ef=_0x4b9353[_0xf1df5b][_0xca1a('0x72')]?_['replace'](_0x2c2782[_0x4b9353[_0xf1df5b][_0xca1a('0x72')]],'%s',_0x32f6ef):_0x32f6ef;_0x32f6ef=_0x4b9353[_0xf1df5b]['format']?_['replace'](_0x27b695[_0x4b9353[_0xf1df5b]['format']],'%s',_0x32f6ef):_0x32f6ef;if(_0x4b9353[_0xf1df5b][_0xca1a('0x74')]){_0x3c0f10[_0xca1a('0x63')](_0x32f6ef);}_0x4b9353[_0xf1df5b][_0xca1a('0x8d')]&&_0x3c0f10['order'](_0x32f6ef,_0x4b9353[_0xf1df5b][_0xca1a('0x8d')]===_0xca1a('0x75')?![]:!![]);_0x3c0f10['field'](_0x32f6ef,_0x4b9353[_0xf1df5b][_0xca1a('0x76')]||_0x32f6ef);}if(_0xb36e2['joins']){_0xb36e2[_0xca1a('0x77')]=JSON[_0xca1a('0x78')](_0xb36e2[_0xca1a('0x77')]);for(var _0x535d9a=0x0;_0x535d9a<_0xb36e2['joins'][_0xca1a('0x37')];_0x535d9a+=0x1){if(_0xb36e2[_0xca1a('0x77')][_0x535d9a][_0xca1a('0x31')]&&_[_0xca1a('0x5d')](_0xc3a3ab,_0xb36e2[_0xca1a('0x77')][_0x535d9a]['type'])&&_0xb36e2[_0xca1a('0x77')][_0x535d9a][_0xca1a('0x7c')]&&_0xb36e2['joins'][_0x535d9a][_0xca1a('0x79')]&&_0xb36e2[_0xca1a('0x77')][_0x535d9a][_0xca1a('0x7a')]){_0x3c0f10[_0xb36e2['joins'][_0x535d9a][_0xca1a('0x31')]](_0xb36e2[_0xca1a('0x77')][_0x535d9a]['foreignTable'],null,util['format']('%s.%s\x20=\x20%s.%s',_0xb36e2[_0xca1a('0x6d')],_0xb36e2[_0xca1a('0x77')][_0x535d9a][_0xca1a('0x7c')],_0xb36e2[_0xca1a('0x77')][_0x535d9a][_0xca1a('0x79')],_0xb36e2['joins'][_0x535d9a][_0xca1a('0x7a')]));}}}if(_0xb36e2['conditions']){_0xb36e2['conditions']=JSON[_0xca1a('0x78')](_0xb36e2['conditions']);_0x3c0f10[_0xca1a('0x3f')](_0x1cbfee(_0xb36e2[_0xca1a('0x7d')][_0xca1a('0x63')]));}_0x4d50de=_0x3c0f10[_0xca1a('0x7e')]();_0x3c0f10[_0xca1a('0x1d')](_0x51fc53);_0x3c0f10['offset'](0x0);logger[_0xca1a('0x7f')](_0xca1a('0x80'),_0x3c0f10[_0xca1a('0x81')]());return dbH[_0xca1a('0x82')][_0xca1a('0x33')](_0x3c0f10['toString'](),{'type':dbH[_0xca1a('0x82')][_0xca1a('0xa3')]['SELECT']});}})[_0xca1a('0x24')](function(){return{'sql':_0x4d50de[_0xca1a('0x81')]()};})[_0xca1a('0x24')](respondWithResult(_0x4d42a5,null))[_0xca1a('0x46')](handleError(_0x4d42a5,null));};
\ No newline at end of file
+var _0xe499=['UserProfileSection','autoAssociation','CustomReports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NOT\x20EMPTY','rules','group','field','condition','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','keyBy','select','from','table','MetricId','metric','function','replace','format','orderBy','DESC','alias','joins','parse','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','clone','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','COUNT(DISTINCT\x20%s)','GROUP_CONCAT(%s)','DATE(%s)','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','operator','value','groupBy','order','web','fullPath','%s-%s.%s','randomstring','output','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','COUNT(*)','run','runReport','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','dbH','sendStatus','status','json','undefined','limit','count','offset','set','apply','save','update','destroy','then','UserProfileResource','end','error','stack','name','send','index','map','AnalyticCustomReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','where','merge','filter','options','includeAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports'];(function(_0x37c17b,_0x2f3b26){var _0x1956d7=function(_0x1240b1){while(--_0x1240b1){_0x37c17b['push'](_0x37c17b['shift']());}};_0x1956d7(++_0x2f3b26);}(_0xe499,0xfb));var _0x9e49=function(_0x10396d,_0x478795){_0x10396d=_0x10396d-0x0;var _0x2e05c5=_0xe499[_0x10396d];return _0x2e05c5;};'use strict';var emlformat=require(_0x9e49('0x0'));var rimraf=require(_0x9e49('0x1'));var zipdir=require(_0x9e49('0x2'));var jsonpatch=require(_0x9e49('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9e49('0x4'));var Mustache=require(_0x9e49('0x5'));var util=require(_0x9e49('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x9e49('0x7'));var ejs=require(_0x9e49('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9e49('0x9'));var squel=require(_0x9e49('0xa'));var crypto=require(_0x9e49('0xb'));var jsforce=require(_0x9e49('0xc'));var deskjs=require(_0x9e49('0xd'));var toCsv=require(_0x9e49('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x9e49('0xe'));var authService=require(_0x9e49('0xf'));var qs=require(_0x9e49('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9e49('0x11'));var logger=require(_0x9e49('0x12'))(_0x9e49('0x13'));var utils=require(_0x9e49('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x9e49('0x15'));var db=require(_0x9e49('0x16'))['db'];var dbH=require(_0x9e49('0x16'))[_0x9e49('0x17')];function respondWithStatusCode(_0x4b73d6,_0x999371){_0x999371=_0x999371||0xcc;return function(_0x2e112d){if(_0x2e112d){return _0x4b73d6[_0x9e49('0x18')](_0x999371);}return _0x4b73d6[_0x9e49('0x19')](_0x999371)['end']();};}function respondWithResult(_0x35f9fa,_0x121abd){_0x121abd=_0x121abd||0xc8;return function(_0x41d917){if(_0x41d917){return _0x35f9fa[_0x9e49('0x19')](_0x121abd)[_0x9e49('0x1a')](_0x41d917);}};}function respondWithFilteredResult(_0x31dab6,_0x3e21ba){return function(_0x16784b){if(_0x16784b){var _0x454908=typeof _0x3e21ba['offset']===_0x9e49('0x1b')&&typeof _0x3e21ba[_0x9e49('0x1c')]===_0x9e49('0x1b');var _0x456b58=_0x16784b[_0x9e49('0x1d')];var _0x5e3bbc=_0x454908?0x0:_0x3e21ba[_0x9e49('0x1e')];var _0xb4bd1c=_0x454908?_0x16784b['count']:_0x3e21ba[_0x9e49('0x1e')]+_0x3e21ba['limit'];var _0x3dcd5c;if(_0xb4bd1c>=_0x456b58){_0xb4bd1c=_0x456b58;_0x3dcd5c=0xc8;}else{_0x3dcd5c=0xce;}_0x31dab6[_0x9e49('0x19')](_0x3dcd5c);return _0x31dab6[_0x9e49('0x1f')]('Content-Range',_0x5e3bbc+'-'+_0xb4bd1c+'/'+_0x456b58)[_0x9e49('0x1a')](_0x16784b);}return null;};}function patchUpdates(_0x4d0a0e){return function(_0x4b480d){try{jsonpatch[_0x9e49('0x20')](_0x4b480d,_0x4d0a0e,!![]);}catch(_0x2a6ddc){return BPromise['reject'](_0x2a6ddc);}return _0x4b480d[_0x9e49('0x21')]();};}function saveUpdates(_0x19e63e,_0x2043d3){return function(_0x586a36){if(_0x586a36){return _0x586a36[_0x9e49('0x22')](_0x19e63e)['then'](function(_0x3211f9){return _0x3211f9;});}return null;};}function removeEntity(_0x1f627b,_0x52e534){return function(_0x3e8993){if(_0x3e8993){return _0x3e8993[_0x9e49('0x23')]()[_0x9e49('0x24')](function(){var _0x31a706=_0x3e8993['get']({'plain':!![]});var _0x277b77='CustomReports';return db[_0x9e49('0x25')][_0x9e49('0x23')]({'where':{'type':_0x277b77,'resourceId':_0x31a706['id']}})[_0x9e49('0x24')](function(){return _0x3e8993;});})['then'](function(){_0x1f627b['status'](0xcc)[_0x9e49('0x26')]();});}};}function handleEntityNotFound(_0x3ed135,_0x401050){return function(_0x3e2ae9){if(!_0x3e2ae9){_0x3ed135[_0x9e49('0x18')](0x194);}return _0x3e2ae9;};}function handleError(_0x139675,_0x50ef5a){_0x50ef5a=_0x50ef5a||0x1f4;return function(_0x561976){logger[_0x9e49('0x27')](_0x561976[_0x9e49('0x28')]);if(_0x561976[_0x9e49('0x29')]){delete _0x561976[_0x9e49('0x29')];}_0x139675['status'](_0x50ef5a)[_0x9e49('0x2a')](_0x561976);};}exports[_0x9e49('0x2b')]=function(_0x3072da,_0x5b2d1a){var _0x405765={},_0x2f61fe={},_0x433b40={'count':0x0,'rows':[]};var _0x3e55e7=_[_0x9e49('0x2c')](db[_0x9e49('0x2d')][_0x9e49('0x2e')],function(_0x30ba02){return{'name':_0x30ba02[_0x9e49('0x2f')],'type':_0x30ba02[_0x9e49('0x30')][_0x9e49('0x31')]};});_0x2f61fe['model']=_[_0x9e49('0x2c')](_0x3e55e7,_0x9e49('0x29'));_0x2f61fe[_0x9e49('0x32')]=_[_0x9e49('0x33')](_0x3072da[_0x9e49('0x32')]);_0x2f61fe[_0x9e49('0x34')]=_[_0x9e49('0x35')](_0x2f61fe['model'],_0x2f61fe[_0x9e49('0x32')]);_0x405765['attributes']=_[_0x9e49('0x35')](_0x2f61fe[_0x9e49('0x36')],qs[_0x9e49('0x37')](_0x3072da[_0x9e49('0x32')]['fields']));_0x405765[_0x9e49('0x38')]=_0x405765[_0x9e49('0x38')][_0x9e49('0x39')]?_0x405765[_0x9e49('0x38')]:_0x2f61fe['model'];if(!_0x3072da[_0x9e49('0x32')][_0x9e49('0x3a')](_0x9e49('0x3b'))){_0x405765['limit']=qs['limit'](_0x3072da[_0x9e49('0x32')][_0x9e49('0x1c')]);_0x405765[_0x9e49('0x1e')]=qs[_0x9e49('0x1e')](_0x3072da[_0x9e49('0x32')][_0x9e49('0x1e')]);}_0x405765['order']=qs[_0x9e49('0x3c')](_0x3072da[_0x9e49('0x32')]['sort']);_0x405765['where']=qs[_0x9e49('0x34')](_[_0x9e49('0x3d')](_0x3072da[_0x9e49('0x32')],_0x2f61fe[_0x9e49('0x34')]),_0x3e55e7);if(_0x3072da[_0x9e49('0x32')]['filter']){_0x405765[_0x9e49('0x3e')]=_[_0x9e49('0x3f')](_0x405765[_0x9e49('0x3e')],{'$or':_['map'](_0x3e55e7,function(_0x32001d){if(_0x32001d[_0x9e49('0x30')]!=='VIRTUAL'){var _0x43d454={};_0x43d454[_0x32001d[_0x9e49('0x29')]]={'$like':'%'+_0x3072da['query'][_0x9e49('0x40')]+'%'};return _0x43d454;}})});}_0x405765=_[_0x9e49('0x3f')]({},_0x405765,_0x3072da[_0x9e49('0x41')]);var _0xc4cd5d={'where':_0x405765[_0x9e49('0x3e')]};return db[_0x9e49('0x2d')][_0x9e49('0x1d')](_0xc4cd5d)[_0x9e49('0x24')](function(_0x403a5e){_0x433b40[_0x9e49('0x1d')]=_0x403a5e;if(_0x3072da[_0x9e49('0x32')][_0x9e49('0x42')]){_0x405765['include']=[{'all':!![]}];}return db[_0x9e49('0x2d')]['findAll'](_0x405765);})[_0x9e49('0x24')](function(_0x27bd59){_0x433b40[_0x9e49('0x43')]=_0x27bd59;return _0x433b40;})[_0x9e49('0x24')](respondWithFilteredResult(_0x5b2d1a,_0x405765))[_0x9e49('0x44')](handleError(_0x5b2d1a,null));};exports[_0x9e49('0x45')]=function(_0x16512d,_0x2e6a5b){var _0x592bd3={'raw':![],'where':{'id':_0x16512d[_0x9e49('0x46')]['id']}},_0x13c48d={};_0x13c48d[_0x9e49('0x36')]=_[_0x9e49('0x33')](db['AnalyticCustomReport']['rawAttributes']);_0x13c48d[_0x9e49('0x32')]=_[_0x9e49('0x33')](_0x16512d[_0x9e49('0x32')]);_0x13c48d[_0x9e49('0x34')]=_[_0x9e49('0x35')](_0x13c48d[_0x9e49('0x36')],_0x13c48d[_0x9e49('0x32')]);_0x592bd3[_0x9e49('0x38')]=_[_0x9e49('0x35')](_0x13c48d[_0x9e49('0x36')],qs[_0x9e49('0x37')](_0x16512d[_0x9e49('0x32')][_0x9e49('0x37')]));_0x592bd3['attributes']=_0x592bd3[_0x9e49('0x38')][_0x9e49('0x39')]?_0x592bd3['attributes']:_0x13c48d[_0x9e49('0x36')];if(_0x16512d['query']['includeAll']){_0x592bd3['include']=[{'all':!![]}];}_0x592bd3=_[_0x9e49('0x3f')]({},_0x592bd3,_0x16512d['options']);return db[_0x9e49('0x2d')][_0x9e49('0x47')](_0x592bd3)[_0x9e49('0x24')](handleEntityNotFound(_0x2e6a5b,null))[_0x9e49('0x24')](respondWithResult(_0x2e6a5b,null))[_0x9e49('0x44')](handleError(_0x2e6a5b,null));};exports['create']=function(_0x287038,_0x153a58){return db[_0x9e49('0x2d')][_0x9e49('0x48')](_0x287038[_0x9e49('0x49')],{})[_0x9e49('0x24')](function(_0x2c3e59){var _0x499f87=_0x287038[_0x9e49('0x4a')]['get']({'plain':!![]});if(!_0x499f87)throw new Error(_0x9e49('0x4b'));if(_0x499f87['role']===_0x9e49('0x4a')){var _0x59b7a1=_0x2c3e59['get']({'plain':!![]});var _0x5cb0b9=_0x9e49('0x4c');return db[_0x9e49('0x4d')][_0x9e49('0x47')]({'where':{'name':_0x5cb0b9,'userProfileId':_0x499f87['userProfileId']},'raw':!![]})[_0x9e49('0x24')](function(_0x6803d8){if(_0x6803d8&&_0x6803d8[_0x9e49('0x4e')]===0x0){return db['UserProfileResource'][_0x9e49('0x48')]({'name':_0x59b7a1[_0x9e49('0x29')],'resourceId':_0x59b7a1['id'],'type':_0x9e49('0x4f'),'sectionId':_0x6803d8['id']},{})[_0x9e49('0x24')](function(){return _0x2c3e59;});}else{return _0x2c3e59;}})['catch'](function(_0x361c1c){logger['error'](_0x9e49('0x50'),_0x361c1c);throw _0x361c1c;});}return _0x2c3e59;})[_0x9e49('0x24')](respondWithResult(_0x153a58,0xc9))['catch'](handleError(_0x153a58,null));};exports[_0x9e49('0x22')]=function(_0x2e625b,_0x1f7e44){if(_0x2e625b[_0x9e49('0x49')]['id']){delete _0x2e625b[_0x9e49('0x49')]['id'];}return db[_0x9e49('0x2d')][_0x9e49('0x47')]({'where':{'id':_0x2e625b[_0x9e49('0x46')]['id']}})[_0x9e49('0x24')](handleEntityNotFound(_0x1f7e44,null))[_0x9e49('0x24')](saveUpdates(_0x2e625b[_0x9e49('0x49')],null))['then'](respondWithResult(_0x1f7e44,null))[_0x9e49('0x44')](handleError(_0x1f7e44,null));};exports[_0x9e49('0x23')]=function(_0x196305,_0x52c61a){return db[_0x9e49('0x2d')][_0x9e49('0x47')]({'where':{'id':_0x196305[_0x9e49('0x46')]['id']}})[_0x9e49('0x24')](handleEntityNotFound(_0x52c61a,null))[_0x9e49('0x24')](removeEntity(_0x52c61a,null))[_0x9e49('0x44')](handleError(_0x52c61a,null));};exports[_0x9e49('0x51')]=function(_0x553ceb,_0x39eb6f){var _0x1c5a0c=0xa;var _0x64506d=[_0x9e49('0x52'),_0x9e49('0x53'),_0x9e49('0x54'),_0x9e49('0x55')];var _0x4b85b3={'SUM':_0x9e49('0x56'),'COUNT':_0x9e49('0x57'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0x9e49('0x58'),'AVG':_0x9e49('0x59'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x9e49('0x5a'),'GROUP_CONCAT DESC':_0x9e49('0x5b')};var _0x44b611={'SEC_TO_TIME':_0x9e49('0x5c'),'DATE':'DATE(%s)','HOUR':_0x9e49('0x5d'),'ROUND':_0x9e49('0x5e'),'UNIX_TIMESTAMP':_0x9e49('0x5f')};var _0x40a7ae=function(_0x485d93){return!_[_0x9e49('0x60')](['IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY',_0x9e49('0x61')],_0x485d93);};var _0x4eb711=function(_0x43aed9){if(!_0x43aed9||!_0x43aed9[_0x9e49('0x62')][_0x9e49('0x39')]){return'';}for(var _0x546831='(',_0x565baa=0x0;_0x565baa<_0x43aed9[_0x9e49('0x62')][_0x9e49('0x39')];_0x565baa+=0x1){_0x565baa>0x0&&(_0x546831+='\x20'+_0x43aed9['operator']+'\x20');_0x546831+=_0x43aed9[_0x9e49('0x62')][_0x565baa][_0x9e49('0x63')]?_0x4eb711(_0x43aed9[_0x9e49('0x62')][_0x565baa][_0x9e49('0x63')]):_0x43aed9[_0x9e49('0x62')][_0x565baa][_0x9e49('0x64')]+'\x20'+_0x43aed9['rules'][_0x565baa][_0x9e49('0x65')]+(_0x40a7ae(_0x43aed9[_0x9e49('0x62')][_0x565baa][_0x9e49('0x65')])?'\x20'+_0x43aed9[_0x9e49('0x62')][_0x565baa]['value']:'');}return _0x546831+')';};var _0x33205c={'where':{'id':_0x553ceb[_0x9e49('0x46')]['id']}},_0x35103b,_0x336f0e,_0x2bbc04,_0x1c97b5,_0x2b6a34;_0x33205c=_['merge']({},_0x33205c,_0x553ceb[_0x9e49('0x41')]);return db[_0x9e49('0x2d')][_0x9e49('0x47')](_0x33205c)['then'](function(_0xf95d7e){if(_0xf95d7e){_0x35103b=_0xf95d7e;return _0xf95d7e[_0x9e49('0x66')]();}return null;})[_0x9e49('0x24')](function(_0x5e2822){if(_0x5e2822){if(!_0x5e2822[_0x9e49('0x39')]){throw new db[(_0x9e49('0x67'))][(_0x9e49('0x68'))](_0x9e49('0x69'),0x193);}_0x336f0e=_0x5e2822;return db[_0x9e49('0x6a')][_0x9e49('0x6b')]({'raw':!![]});}return null;})[_0x9e49('0x24')](function(_0x76880f){if(_0x76880f){_0x2bbc04=_[_0x9e49('0x6c')](_0x76880f,'id');var _0x1c2552;var _0x3b8abb=squel[_0x9e49('0x6d')]();_0x3b8abb[_0x9e49('0x6e')](_0x35103b[_0x9e49('0x6f')]);for(var _0x7b878=0x0;_0x7b878<_0x336f0e[_0x9e49('0x39')];_0x7b878+=0x1){_0x1c2552=_0x336f0e[_0x7b878][_0x9e49('0x70')]?_0x2bbc04[_0x336f0e[_0x7b878]['MetricId']][_0x9e49('0x71')]:_0x336f0e[_0x7b878]['field'];_0x1c2552=_0x336f0e[_0x7b878][_0x9e49('0x72')]?_[_0x9e49('0x73')](_0x4b85b3[_0x336f0e[_0x7b878][_0x9e49('0x72')]],'%s',_0x1c2552):_0x1c2552;_0x1c2552=_0x336f0e[_0x7b878][_0x9e49('0x74')]?_['replace'](_0x44b611[_0x336f0e[_0x7b878][_0x9e49('0x74')]],'%s',_0x1c2552):_0x1c2552;if(_0x336f0e[_0x7b878]['groupBy']){_0x3b8abb[_0x9e49('0x63')](_0x1c2552);}_0x336f0e[_0x7b878][_0x9e49('0x75')]&&_0x3b8abb['order'](_0x1c2552,_0x336f0e[_0x7b878][_0x9e49('0x75')]===_0x9e49('0x76')?![]:!![]);_0x3b8abb[_0x9e49('0x64')](_0x1c2552,_0x336f0e[_0x7b878][_0x9e49('0x77')]||_0x1c2552);}if(_0x35103b[_0x9e49('0x78')]){_0x35103b['joins']=JSON[_0x9e49('0x79')](_0x35103b[_0x9e49('0x78')]);for(var _0x37ec11=0x0;_0x37ec11<_0x35103b[_0x9e49('0x78')][_0x9e49('0x39')];_0x37ec11+=0x1){if(_0x35103b['joins'][_0x37ec11][_0x9e49('0x30')]&&_[_0x9e49('0x60')](_0x64506d,_0x35103b[_0x9e49('0x78')][_0x37ec11][_0x9e49('0x30')])&&_0x35103b[_0x9e49('0x78')][_0x37ec11][_0x9e49('0x7a')]&&_0x35103b[_0x9e49('0x78')][_0x37ec11][_0x9e49('0x7b')]&&_0x35103b[_0x9e49('0x78')][_0x37ec11][_0x9e49('0x7c')]){_0x3b8abb[_0x35103b[_0x9e49('0x78')][_0x37ec11][_0x9e49('0x30')]](_0x35103b[_0x9e49('0x78')][_0x37ec11][_0x9e49('0x7b')],null,util[_0x9e49('0x74')](_0x9e49('0x7d'),_0x35103b[_0x9e49('0x6f')],_0x35103b[_0x9e49('0x78')][_0x37ec11][_0x9e49('0x7a')],_0x35103b[_0x9e49('0x78')][_0x37ec11]['foreignTable'],_0x35103b[_0x9e49('0x78')][_0x37ec11][_0x9e49('0x7c')]));}}}if(_0x35103b[_0x9e49('0x7e')]){_0x35103b['conditions']=JSON[_0x9e49('0x79')](_0x35103b[_0x9e49('0x7e')]);_0x3b8abb[_0x9e49('0x3e')](_0x4eb711(_0x35103b['conditions'][_0x9e49('0x63')]));}_0x2b6a34=_0x3b8abb[_0x9e49('0x7f')]();_0x3b8abb[_0x9e49('0x1c')](_0x1c5a0c);_0x3b8abb[_0x9e49('0x1e')](0x0);logger['debug'](_0x9e49('0x80'),_0x3b8abb[_0x9e49('0x81')]());return dbH['sequelize'][_0x9e49('0x32')](_0x3b8abb[_0x9e49('0x81')](),{'type':dbH[_0x9e49('0x82')][_0x9e49('0x83')][_0x9e49('0x84')]});}})[_0x9e49('0x24')](respondWithResult(_0x39eb6f,null))[_0x9e49('0x44')](handleError(_0x39eb6f,null));};function runReport(_0x398ed9,_0x1cf6d9,_0x103cb3){var _0x24eaef=_0x1cf6d9[_0x9e49('0x29')];var _0x171058=0xa;var _0x231ed2=['join',_0x9e49('0x53'),_0x9e49('0x54'),_0x9e49('0x55')];var _0x2ea710={'SUM':_0x9e49('0x56'),'COUNT':_0x9e49('0x57'),'COUNT DISTINCT':_0x9e49('0x85'),'MAX':'MAX(%s)','MIN':_0x9e49('0x58'),'AVG':_0x9e49('0x59'),'GROUP_CONCAT':_0x9e49('0x86'),'GROUP_CONCAT ASC':_0x9e49('0x5a'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x58d1cc={'SEC_TO_TIME':_0x9e49('0x5c'),'DATE':_0x9e49('0x87'),'HOUR':_0x9e49('0x5d'),'ROUND':_0x9e49('0x5e'),'UNIX_TIMESTAMP':_0x9e49('0x5f')};var _0x1c8637=function(_0x498c73){return!_[_0x9e49('0x60')]([_0x9e49('0x88'),_0x9e49('0x89'),_0x9e49('0x8a'),_0x9e49('0x61')],_0x498c73);};var _0x4b43a8=function(_0x19de02){if(!_0x19de02||!_0x19de02[_0x9e49('0x62')][_0x9e49('0x39')]){return'';}for(var _0x3c3fbd='(',_0x5c75ec=0x0;_0x5c75ec<_0x19de02[_0x9e49('0x62')][_0x9e49('0x39')];_0x5c75ec+=0x1){_0x5c75ec>0x0&&(_0x3c3fbd+='\x20'+_0x19de02[_0x9e49('0x8b')]+'\x20');_0x3c3fbd+=_0x19de02[_0x9e49('0x62')][_0x5c75ec][_0x9e49('0x63')]?_0x4b43a8(_0x19de02[_0x9e49('0x62')][_0x5c75ec][_0x9e49('0x63')]):_0x19de02[_0x9e49('0x62')][_0x5c75ec][_0x9e49('0x64')]+'\x20'+_0x19de02[_0x9e49('0x62')][_0x5c75ec]['condition']+(_0x1c8637(_0x19de02[_0x9e49('0x62')][_0x5c75ec][_0x9e49('0x65')])?'\x20'+_0x19de02[_0x9e49('0x62')][_0x5c75ec][_0x9e49('0x8c')]:'');}return _0x3c3fbd+')';};var _0x311cb5={'where':{'id':_0x398ed9['id']}},_0x19b2e4,_0x6c03bb,_0x24847b,_0x58859e,_0x2a777a;_0x311cb5=_[_0x9e49('0x3f')]({},_0x311cb5,_0x103cb3);return db['AnalyticCustomReport']['find'](_0x311cb5)[_0x9e49('0x24')](function(_0x330c1f){if(_0x330c1f){_0x19b2e4=_0x330c1f;return _0x330c1f[_0x9e49('0x66')]();}return null;})[_0x9e49('0x24')](function(_0x6d9bae){if(_0x6d9bae){if(!_0x6d9bae[_0x9e49('0x39')]){throw new db[(_0x9e49('0x67'))][(_0x9e49('0x68'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x6c03bb=_0x6d9bae;return db[_0x9e49('0x6a')][_0x9e49('0x6b')]({'raw':!![]});}return null;})[_0x9e49('0x24')](function(_0x5e4f80){if(_0x5e4f80){_0x24847b=_[_0x9e49('0x6c')](_0x5e4f80,'id');var _0x4d2356;var _0x3f6fe4=squel['select']();_0x3f6fe4[_0x9e49('0x6e')](_0x19b2e4[_0x9e49('0x6f')]);for(var _0x18b770=0x0;_0x18b770<_0x6c03bb[_0x9e49('0x39')];_0x18b770+=0x1){_0x4d2356=_0x6c03bb[_0x18b770][_0x9e49('0x70')]?_0x24847b[_0x6c03bb[_0x18b770][_0x9e49('0x70')]]['metric']:_0x6c03bb[_0x18b770][_0x9e49('0x64')];_0x4d2356=_0x6c03bb[_0x18b770]['function']?_[_0x9e49('0x73')](_0x2ea710[_0x6c03bb[_0x18b770][_0x9e49('0x72')]],'%s',_0x4d2356):_0x4d2356;_0x4d2356=_0x6c03bb[_0x18b770][_0x9e49('0x74')]?_[_0x9e49('0x73')](_0x58d1cc[_0x6c03bb[_0x18b770][_0x9e49('0x74')]],'%s',_0x4d2356):_0x4d2356;if(_0x6c03bb[_0x18b770][_0x9e49('0x8d')]){_0x3f6fe4[_0x9e49('0x63')](_0x4d2356);}_0x6c03bb[_0x18b770][_0x9e49('0x75')]&&_0x3f6fe4[_0x9e49('0x8e')](_0x4d2356,_0x6c03bb[_0x18b770][_0x9e49('0x75')]===_0x9e49('0x76')?![]:!![]);_0x3f6fe4[_0x9e49('0x64')](_0x4d2356,_0x6c03bb[_0x18b770]['alias']||_0x4d2356);}if(_0x19b2e4['joins']){_0x19b2e4[_0x9e49('0x78')]=JSON['parse'](_0x19b2e4[_0x9e49('0x78')]);for(var _0x107682=0x0;_0x107682<_0x19b2e4['joins'][_0x9e49('0x39')];_0x107682+=0x1){if(_0x19b2e4[_0x9e49('0x78')][_0x107682]['type']&&_['includes'](_0x231ed2,_0x19b2e4['joins'][_0x107682][_0x9e49('0x30')])&&_0x19b2e4['joins'][_0x107682]['parentKey']&&_0x19b2e4[_0x9e49('0x78')][_0x107682]['foreignTable']&&_0x19b2e4[_0x9e49('0x78')][_0x107682][_0x9e49('0x7c')]){_0x3f6fe4[_0x19b2e4[_0x9e49('0x78')][_0x107682][_0x9e49('0x30')]](_0x19b2e4[_0x9e49('0x78')][_0x107682][_0x9e49('0x7b')],null,util[_0x9e49('0x74')](_0x9e49('0x7d'),_0x19b2e4['table'],_0x19b2e4[_0x9e49('0x78')][_0x107682][_0x9e49('0x7a')],_0x19b2e4[_0x9e49('0x78')][_0x107682][_0x9e49('0x7b')],_0x19b2e4['joins'][_0x107682][_0x9e49('0x7c')]));}}}if(_0x19b2e4[_0x9e49('0x7e')]){_0x19b2e4[_0x9e49('0x7e')]=JSON[_0x9e49('0x79')](_0x19b2e4['conditions']);_0x3f6fe4[_0x9e49('0x3e')](_0x4b43a8(_0x19b2e4[_0x9e49('0x7e')][_0x9e49('0x63')]));}_0x2a777a=_0x3f6fe4['clone']();_0x3f6fe4[_0x9e49('0x1c')](_0x171058);_0x3f6fe4[_0x9e49('0x1e')](0x0);return;}})[_0x9e49('0x24')](function(){if(_0x1cf6d9['output']===_0x9e49('0x8f')){return null;}var _0x2ce733=_[_0x9e49('0x3f')](_0x1cf6d9,{'name':_0x1cf6d9[_0x9e49('0x90')]||_0x1cf6d9[_0x9e49('0x29')]||_0x19b2e4['name'],'basename':_0x24eaef,'savename':util[_0x9e49('0x74')](_0x9e49('0x91'),_0x1cf6d9[_0x9e49('0x29')]||_0x19b2e4[_0x9e49('0x29')],require(_0x9e49('0x92'))['generate'](0x4),_0x1cf6d9[_0x9e49('0x93')]||'csv'),'reportId':_0x19b2e4['id'],'reportType':'custom'});return db[_0x9e49('0x94')][_0x9e49('0x48')](_0x2ce733,{'raw':!![]});})['then'](function(_0x2c0bda){if(_0x19b2e4['table']===_0x9e49('0x95')){_0x2a777a['where'](_0x19b2e4[_0x9e49('0x6f')]+_0x9e49('0x96'),_0x1cf6d9[_0x9e49('0x97')],_0x1cf6d9[_0x9e49('0x98')]);}else{_0x2a777a['where'](_0x19b2e4[_0x9e49('0x6f')]+_0x9e49('0x99'),_0x1cf6d9['startDate'],_0x1cf6d9[_0x9e49('0x98')]);}if(_0x2c0bda){logger[_0x9e49('0x9a')](_0x9e49('0x9b'),_0x2a777a['toString']());require(_0x9e49('0x9c'))[_0x9e49('0x9d')](path[_0x9e49('0x52')](__dirname,_0x9e49('0x9e'),_0x2c0bda['output']),[_0x2c0bda['id'],_0x2a777a[_0x9e49('0x81')](),path['join'](__dirname,_0x9e49('0x9f'),_0x2c0bda[_0x9e49('0xa0')]),_0x24eaef]);return _0x2c0bda;}else{var _0x5bbae5=squel[_0x9e49('0x6d')]();_0x5bbae5[_0x9e49('0x6e')]('('+_0x2a777a['toString']()+')','countTable');_0x5bbae5[_0x9e49('0x64')](_0x9e49('0xa1'),_0x9e49('0x1d'));_0x2a777a[_0x9e49('0x1c')](_0x1cf6d9['limit']||_0x171058);_0x2a777a[_0x9e49('0x1e')](_0x1cf6d9[_0x9e49('0x1e')]||0x0);return dbH[_0x9e49('0x82')][_0x9e49('0x32')](_0x5bbae5[_0x9e49('0x81')](),{'type':dbH[_0x9e49('0x82')][_0x9e49('0x83')][_0x9e49('0x84')]})['then'](function(_0x3b7673){if(!_0x3b7673[_0x9e49('0x39')]){_0x58859e=0x0;}else{_0x58859e=_0x3b7673[0x0][_0x9e49('0x1d')]||0x0;}return dbH['sequelize'][_0x9e49('0x32')](_0x2a777a[_0x9e49('0x81')](),{'type':dbH[_0x9e49('0x82')][_0x9e49('0x83')]['SELECT']});})[_0x9e49('0x24')](function(_0xbde454){return{'rows':_0xbde454||[],'count':_0x58859e};});}});}exports[_0x9e49('0xa2')]=function(_0x14374b,_0x106217){return runReport(_0x14374b[_0x9e49('0x46')],_0x14374b[_0x9e49('0x32')],_0x14374b[_0x9e49('0x41')])[_0x9e49('0x24')](respondWithResult(_0x106217,null))[_0x9e49('0x44')](handleError(_0x106217,null));};exports[_0x9e49('0xa3')]=runReport;exports['query']=function(_0x4887ad,_0x1100f1){var _0x1662ce=0xa;var _0x5e770f=[_0x9e49('0x52'),_0x9e49('0x53'),_0x9e49('0x54'),_0x9e49('0x55')];var _0x35daf6={'SUM':_0x9e49('0x56'),'COUNT':_0x9e49('0x57'),'COUNT DISTINCT':_0x9e49('0x85'),'MAX':'MAX(%s)','MIN':_0x9e49('0x58'),'AVG':_0x9e49('0x59'),'GROUP_CONCAT':_0x9e49('0x86'),'GROUP_CONCAT ASC':_0x9e49('0x5a'),'GROUP_CONCAT DESC':_0x9e49('0x5b')};var _0xfc8c44={'SEC_TO_TIME':_0x9e49('0x5c'),'DATE':_0x9e49('0x87'),'HOUR':_0x9e49('0x5d'),'ROUND':_0x9e49('0x5e'),'UNIX_TIMESTAMP':_0x9e49('0x5f')};var _0x395f04=function(_0x2c5c4b){return!_['includes'](['IS\x20NULL',_0x9e49('0x89'),_0x9e49('0x8a'),_0x9e49('0x61')],_0x2c5c4b);};var _0x2711d8=function(_0x255be7){if(!_0x255be7||!_0x255be7[_0x9e49('0x62')]['length']){return'';}for(var _0x4d2372='(',_0x48600b=0x0;_0x48600b<_0x255be7[_0x9e49('0x62')]['length'];_0x48600b+=0x1){_0x48600b>0x0&&(_0x4d2372+='\x20'+_0x255be7[_0x9e49('0x8b')]+'\x20');_0x4d2372+=_0x255be7[_0x9e49('0x62')][_0x48600b][_0x9e49('0x63')]?_0x2711d8(_0x255be7[_0x9e49('0x62')][_0x48600b][_0x9e49('0x63')]):_0x255be7[_0x9e49('0x62')][_0x48600b]['field']+'\x20'+_0x255be7['rules'][_0x48600b][_0x9e49('0x65')]+(_0x395f04(_0x255be7[_0x9e49('0x62')][_0x48600b][_0x9e49('0x65')])?'\x20'+_0x255be7['rules'][_0x48600b][_0x9e49('0x8c')]:'');}return _0x4d2372+')';};var _0xd84b46={'where':{'id':_0x4887ad['params']['id']}},_0x5b1375,_0x2b0a9e,_0x123911,_0x58877f,_0x2c0404;_0xd84b46=_[_0x9e49('0x3f')]({},_0xd84b46,_0x4887ad[_0x9e49('0x41')]);return db[_0x9e49('0x2d')]['find'](_0xd84b46)[_0x9e49('0x24')](function(_0x2d9522){if(_0x2d9522){_0x5b1375=_0x2d9522;return _0x2d9522[_0x9e49('0x66')]();}return null;})[_0x9e49('0x24')](function(_0x4643a0){if(_0x4643a0){if(!_0x4643a0['length']){throw new db[(_0x9e49('0x67'))][(_0x9e49('0x68'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x2b0a9e=_0x4643a0;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0x9e49('0x24')](function(_0x2d7b6c){if(_0x2d7b6c){_0x123911=_[_0x9e49('0x6c')](_0x2d7b6c,'id');var _0x5ecfa8;var _0x3a4d71=squel['select']();_0x3a4d71[_0x9e49('0x6e')](_0x5b1375['table']);for(var _0x2393d2=0x0;_0x2393d2<_0x2b0a9e[_0x9e49('0x39')];_0x2393d2+=0x1){_0x5ecfa8=_0x2b0a9e[_0x2393d2]['MetricId']?_0x123911[_0x2b0a9e[_0x2393d2][_0x9e49('0x70')]][_0x9e49('0x71')]:_0x2b0a9e[_0x2393d2]['field'];_0x5ecfa8=_0x2b0a9e[_0x2393d2][_0x9e49('0x72')]?_[_0x9e49('0x73')](_0x35daf6[_0x2b0a9e[_0x2393d2]['function']],'%s',_0x5ecfa8):_0x5ecfa8;_0x5ecfa8=_0x2b0a9e[_0x2393d2]['format']?_[_0x9e49('0x73')](_0xfc8c44[_0x2b0a9e[_0x2393d2][_0x9e49('0x74')]],'%s',_0x5ecfa8):_0x5ecfa8;if(_0x2b0a9e[_0x2393d2]['groupBy']){_0x3a4d71['group'](_0x5ecfa8);}_0x2b0a9e[_0x2393d2][_0x9e49('0x75')]&&_0x3a4d71[_0x9e49('0x8e')](_0x5ecfa8,_0x2b0a9e[_0x2393d2][_0x9e49('0x75')]===_0x9e49('0x76')?![]:!![]);_0x3a4d71[_0x9e49('0x64')](_0x5ecfa8,_0x2b0a9e[_0x2393d2]['alias']||_0x5ecfa8);}if(_0x5b1375['joins']){_0x5b1375['joins']=JSON['parse'](_0x5b1375[_0x9e49('0x78')]);for(var _0x1f49d3=0x0;_0x1f49d3<_0x5b1375[_0x9e49('0x78')][_0x9e49('0x39')];_0x1f49d3+=0x1){if(_0x5b1375[_0x9e49('0x78')][_0x1f49d3][_0x9e49('0x30')]&&_['includes'](_0x5e770f,_0x5b1375[_0x9e49('0x78')][_0x1f49d3]['type'])&&_0x5b1375[_0x9e49('0x78')][_0x1f49d3][_0x9e49('0x7a')]&&_0x5b1375[_0x9e49('0x78')][_0x1f49d3][_0x9e49('0x7b')]&&_0x5b1375['joins'][_0x1f49d3][_0x9e49('0x7c')]){_0x3a4d71[_0x5b1375[_0x9e49('0x78')][_0x1f49d3][_0x9e49('0x30')]](_0x5b1375[_0x9e49('0x78')][_0x1f49d3][_0x9e49('0x7b')],null,util[_0x9e49('0x74')]('%s.%s\x20=\x20%s.%s',_0x5b1375[_0x9e49('0x6f')],_0x5b1375[_0x9e49('0x78')][_0x1f49d3][_0x9e49('0x7a')],_0x5b1375[_0x9e49('0x78')][_0x1f49d3]['foreignTable'],_0x5b1375[_0x9e49('0x78')][_0x1f49d3][_0x9e49('0x7c')]));}}}if(_0x5b1375[_0x9e49('0x7e')]){_0x5b1375['conditions']=JSON[_0x9e49('0x79')](_0x5b1375[_0x9e49('0x7e')]);_0x3a4d71[_0x9e49('0x3e')](_0x2711d8(_0x5b1375[_0x9e49('0x7e')][_0x9e49('0x63')]));}_0x2c0404=_0x3a4d71['clone']();_0x3a4d71[_0x9e49('0x1c')](_0x1662ce);_0x3a4d71['offset'](0x0);logger['debug'](_0x9e49('0x80'),_0x3a4d71[_0x9e49('0x81')]());return dbH[_0x9e49('0x82')]['query'](_0x3a4d71[_0x9e49('0x81')](),{'type':dbH[_0x9e49('0x82')][_0x9e49('0x83')][_0x9e49('0x84')]});}})[_0x9e49('0x24')](function(){return{'sql':_0x2c0404[_0x9e49('0x81')]()};})[_0x9e49('0x24')](respondWithResult(_0x1100f1,null))['catch'](handleError(_0x1100f1,null));};
\ No newline at end of file
index 3a85dd5..41ef40d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x582d=['request-promise','rimraf','../../config/environment','./analyticCustomReport.attributes','exports','define','AnalyticCustomReport','analytics_custom_reports','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0xb4f654,_0x33ce4b){var _0x521323=function(_0x531016){while(--_0x531016){_0xb4f654['push'](_0xb4f654['shift']());}};_0x521323(++_0x33ce4b);}(_0x582d,0x14a));var _0xd582=function(_0x19d30f,_0x59d859){_0x19d30f=_0x19d30f-0x0;var _0x4cf401=_0x582d[_0x19d30f];return _0x4cf401;};'use strict';var _=require(_0xd582('0x0'));var util=require(_0xd582('0x1'));var logger=require(_0xd582('0x2'))(_0xd582('0x3'));var moment=require(_0xd582('0x4'));var BPromise=require(_0xd582('0x5'));var rp=require(_0xd582('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd582('0x7'));var config=require(_0xd582('0x8'));var attributes=require(_0xd582('0x9'));module[_0xd582('0xa')]=function(_0x109bc1,_0x2484a6){return _0x109bc1[_0xd582('0xb')](_0xd582('0xc'),attributes,{'tableName':_0xd582('0xd'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xadb0=['AnalyticCustomReport','analytics_custom_reports','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./analyticCustomReport.attributes','exports'];(function(_0x51b63c,_0x288c0b){var _0x3bb772=function(_0x546d23){while(--_0x546d23){_0x51b63c['push'](_0x51b63c['shift']());}};_0x3bb772(++_0x288c0b);}(_0xadb0,0x9e));var _0x0adb=function(_0x4a6b2d,_0x421473){_0x4a6b2d=_0x4a6b2d-0x0;var _0x16a388=_0xadb0[_0x4a6b2d];return _0x16a388;};'use strict';var _=require(_0x0adb('0x0'));var util=require(_0x0adb('0x1'));var logger=require(_0x0adb('0x2'))(_0x0adb('0x3'));var moment=require('moment');var BPromise=require(_0x0adb('0x4'));var rp=require(_0x0adb('0x5'));var fs=require('fs');var path=require(_0x0adb('0x6'));var rimraf=require(_0x0adb('0x7'));var config=require(_0x0adb('0x8'));var attributes=require(_0x0adb('0x9'));module[_0x0adb('0xa')]=function(_0x5b1c65,_0x22b754){return _0x5b1c65['define'](_0x0adb('0xb'),attributes,{'tableName':_0x0adb('0xc'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 82f9779..4ba814a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba41=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','then','info','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','AnalyticCustomReport,\x20%s,\x20%s','message','lodash'];(function(_0x166953,_0x214d3a){var _0x4a8baf=function(_0x4de85c){while(--_0x4de85c){_0x166953['push'](_0x166953['shift']());}};_0x4a8baf(++_0x214d3a);}(_0xba41,0xaa));var _0x1ba4=function(_0x36884e,_0x48008f){_0x36884e=_0x36884e-0x0;var _0x1cc367=_0xba41[_0x36884e];return _0x1cc367;};'use strict';var _=require(_0x1ba4('0x0'));var util=require(_0x1ba4('0x1'));var moment=require(_0x1ba4('0x2'));var BPromise=require(_0x1ba4('0x3'));var rs=require(_0x1ba4('0x4'));var fs=require('fs');var Redis=require(_0x1ba4('0x5'));var db=require(_0x1ba4('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x1ba4('0x7'));var config=require('../../config/environment');var jayson=require(_0x1ba4('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xe355e0,_0x2a0f90,_0x452a5a){return new BPromise(function(_0x1cd322,_0xeb5aee){return client['request'](_0xe355e0,_0x452a5a)[_0x1ba4('0x9')](function(_0xfa74df){logger[_0x1ba4('0xa')]('AnalyticCustomReport,\x20%s,\x20%s',_0x2a0f90,'request\x20sent');logger[_0x1ba4('0xb')](_0x1ba4('0xc'),_0x2a0f90,_0x1ba4('0xd'),JSON[_0x1ba4('0xe')](_0xfa74df));if(_0xfa74df['error']){if(_0xfa74df[_0x1ba4('0xf')][_0x1ba4('0x10')]===0x1f4){logger[_0x1ba4('0xf')](_0x1ba4('0x11'),_0x2a0f90,_0xfa74df[_0x1ba4('0xf')][_0x1ba4('0x12')]);return _0xeb5aee(_0xfa74df[_0x1ba4('0xf')][_0x1ba4('0x12')]);}logger[_0x1ba4('0xf')](_0x1ba4('0x11'),_0x2a0f90,_0xfa74df[_0x1ba4('0xf')][_0x1ba4('0x12')]);return _0x1cd322(_0xfa74df['error']['message']);}else{logger['info']('AnalyticCustomReport,\x20%s,\x20%s',_0x2a0f90,_0x1ba4('0xd'));_0x1cd322(_0xfa74df['result'][_0x1ba4('0x12')]);}})['catch'](function(_0x584c48){logger[_0x1ba4('0xf')](_0x1ba4('0x11'),_0x2a0f90,_0x584c48);_0xeb5aee(_0x584c48);});});}
\ No newline at end of file
+var _0x489a=['then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','message','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','client','http','request'];(function(_0x3d8d2e,_0x544f3){var _0x214397=function(_0x29b13e){while(--_0x29b13e){_0x3d8d2e['push'](_0x3d8d2e['shift']());}};_0x214397(++_0x544f3);}(_0x489a,0x15f));var _0xa489=function(_0x5c12ae,_0x29ab56){_0x5c12ae=_0x5c12ae-0x0;var _0x6b60d1=_0x489a[_0x5c12ae];return _0x6b60d1;};'use strict';var _=require('lodash');var util=require(_0xa489('0x0'));var moment=require(_0xa489('0x1'));var BPromise=require(_0xa489('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa489('0x3'));var db=require(_0xa489('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa489('0x5'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa489('0x6')][_0xa489('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x12915c,_0x1e4da3,_0x33b0ed){return new BPromise(function(_0x5027ae,_0x53c568){return client[_0xa489('0x8')](_0x12915c,_0x33b0ed)[_0xa489('0x9')](function(_0x3c84a6){logger[_0xa489('0xa')](_0xa489('0xb'),_0x1e4da3,_0xa489('0xc'));logger[_0xa489('0xd')](_0xa489('0xe'),_0x1e4da3,_0xa489('0xc'),JSON[_0xa489('0xf')](_0x3c84a6));if(_0x3c84a6[_0xa489('0x10')]){if(_0x3c84a6['error']['code']===0x1f4){logger['error'](_0xa489('0xb'),_0x1e4da3,_0x3c84a6[_0xa489('0x10')][_0xa489('0x11')]);return _0x53c568(_0x3c84a6[_0xa489('0x10')][_0xa489('0x11')]);}logger[_0xa489('0x10')](_0xa489('0xb'),_0x1e4da3,_0x3c84a6['error'][_0xa489('0x11')]);return _0x5027ae(_0x3c84a6[_0xa489('0x10')][_0xa489('0x11')]);}else{logger['info'](_0xa489('0xb'),_0x1e4da3,_0xa489('0xc'));_0x5027ae(_0x3c84a6['result']['message']);}})['catch'](function(_0x3a26ca){logger[_0xa489('0x10')](_0xa489('0xb'),_0x1e4da3,_0x3a26ca);_0x53c568(_0x3a26ca);});});}
\ No newline at end of file
index e8db83a..81fc328 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ee9=['util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./analyticCustomReport.controller','get','isAuthenticated','index','/:id','/:id/preview','preview','/:id/run','run','/:id/query','create','put','update','destroy','exports','multer'];(function(_0x577fc1,_0x4aaf10){var _0x4c9a79=function(_0x5302cd){while(--_0x5302cd){_0x577fc1['push'](_0x577fc1['shift']());}};_0x4c9a79(++_0x4aaf10);}(_0x9ee9,0x11d));var _0x99ee=function(_0x368cbe,_0x36331c){_0x368cbe=_0x368cbe-0x0;var _0x2a04de=_0x9ee9[_0x368cbe];return _0x2a04de;};'use strict';var multer=require(_0x99ee('0x0'));var util=require(_0x99ee('0x1'));var path=require(_0x99ee('0x2'));var timeout=require(_0x99ee('0x3'));var express=require('express');var router=express[_0x99ee('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x99ee('0x5'));var config=require(_0x99ee('0x6'));var controller=require(_0x99ee('0x7'));router[_0x99ee('0x8')]('/',auth[_0x99ee('0x9')](),controller[_0x99ee('0xa')]);router[_0x99ee('0x8')](_0x99ee('0xb'),auth[_0x99ee('0x9')](),controller['show']);router[_0x99ee('0x8')](_0x99ee('0xc'),auth[_0x99ee('0x9')](),controller[_0x99ee('0xd')]);router[_0x99ee('0x8')](_0x99ee('0xe'),auth[_0x99ee('0x9')](),controller[_0x99ee('0xf')]);router[_0x99ee('0x8')](_0x99ee('0x10'),auth[_0x99ee('0x9')](),controller['query']);router['post']('/',auth[_0x99ee('0x9')](),controller[_0x99ee('0x11')]);router[_0x99ee('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x99ee('0x13')]);router['delete'](_0x99ee('0xb'),auth[_0x99ee('0x9')](),controller[_0x99ee('0x14')]);module[_0x99ee('0x15')]=router;
\ No newline at end of file
+var _0x3e2a=['create','put','/:id','update','delete','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','show','/:id/run','run','/:id/query','post'];(function(_0x2d994d,_0x168a27){var _0xd54be4=function(_0x1db925){while(--_0x1db925){_0x2d994d['push'](_0x2d994d['shift']());}};_0xd54be4(++_0x168a27);}(_0x3e2a,0x192));var _0xa3e2=function(_0x280a81,_0xbe23b8){_0x280a81=_0x280a81-0x0;var _0x46ba97=_0x3e2a[_0x280a81];return _0x46ba97;};'use strict';var multer=require('multer');var util=require(_0xa3e2('0x0'));var path=require(_0xa3e2('0x1'));var timeout=require(_0xa3e2('0x2'));var express=require(_0xa3e2('0x3'));var router=express['Router']();var fs_extra=require(_0xa3e2('0x4'));var auth=require(_0xa3e2('0x5'));var interaction=require(_0xa3e2('0x6'));var config=require(_0xa3e2('0x7'));var controller=require('./analyticCustomReport.controller');router[_0xa3e2('0x8')]('/',auth['isAuthenticated'](),controller[_0xa3e2('0x9')]);router[_0xa3e2('0x8')]('/:id',auth[_0xa3e2('0xa')](),controller[_0xa3e2('0xb')]);router[_0xa3e2('0x8')]('/:id/preview',auth[_0xa3e2('0xa')](),controller['preview']);router[_0xa3e2('0x8')](_0xa3e2('0xc'),auth[_0xa3e2('0xa')](),controller[_0xa3e2('0xd')]);router['get'](_0xa3e2('0xe'),auth[_0xa3e2('0xa')](),controller['query']);router[_0xa3e2('0xf')]('/',auth[_0xa3e2('0xa')](),controller[_0xa3e2('0x10')]);router[_0xa3e2('0x11')](_0xa3e2('0x12'),auth['isAuthenticated'](),controller[_0xa3e2('0x13')]);router[_0xa3e2('0x14')]('/:id',auth[_0xa3e2('0xa')](),controller['destroy']);module[_0xa3e2('0x15')]=router;
\ No newline at end of file
index e524d7f..d5ca616 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['STRING','TEXT','sequelize'];(function(_0xaf70a4,_0x8a3649){var _0x35eee1=function(_0x492eb8){while(--_0x492eb8){_0xaf70a4['push'](_0xaf70a4['shift']());}};_0x35eee1(++_0x8a3649);}(_0x326f,0xd1));var _0xf326=function(_0x10cc01,_0x122eb2){_0x10cc01=_0x10cc01-0x0;var _0x29a7c6=_0x326f[_0x10cc01];return _0x29a7c6;};'use strict';var Sequelize=require(_0xf326('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xf326('0x1')]},'parent':{'type':Sequelize[_0xf326('0x1')]},'table':{'type':Sequelize[_0xf326('0x1')]},'conditions':{'type':Sequelize[_0xf326('0x2')]},'joins':{'type':Sequelize[_0xf326('0x2')]}};
\ No newline at end of file
+var _0x71ab=['TEXT','exports','STRING'];(function(_0x5af61b,_0x1933d6){var _0x80dbe1=function(_0x1881cc){while(--_0x1881cc){_0x5af61b['push'](_0x5af61b['shift']());}};_0x80dbe1(++_0x1933d6);}(_0x71ab,0x64));var _0xb71a=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x71ab[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require('sequelize');module[_0xb71a('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xb71a('0x1')]},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize[_0xb71a('0x1')]},'conditions':{'type':Sequelize[_0xb71a('0x2')]},'joins':{'type':Sequelize[_0xb71a('0x2')]}};
\ No newline at end of file
index 991a4a2..eaeda50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['Content-Range','apply','reject','save','update','then','destroy','get','DefaultReports','UserProfileResource','name','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','AnalyticDefaultReport','findAll','rows','catch','show','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL','IS\x20EMPTY','rules','operator','group','field','condition','getFields','Sequelize','AnalyticMetric','keyBy','select','from','table','MetricId','metric','function','replace','format','orderBy','joins','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','clone','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','COUNT(%s)','MAX(%s)','AVG(%s)','SEC_TO_TIME(%s)','IS\x20NOT\x20EMPTY','value','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','groupBy','alias','includes','foreignKey','output','web','fullPath','%s-%s.%s','randomstring','default','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','startDate','info','Run\x20Query:','child_process','fork','countTable','runReport','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','IS\x20NOT\x20NULL','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set'];(function(_0x4664db,_0x1de672){var _0x5615b4=function(_0x54fb5a){while(--_0x54fb5a){_0x4664db['push'](_0x4664db['shift']());}};_0x5615b4(++_0x1de672);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0xc4aa[_0x2070da];return _0x4f9fe1;};'use strict';var emlformat=require(_0xac4a('0x0'));var rimraf=require(_0xac4a('0x1'));var zipdir=require(_0xac4a('0x2'));var jsonpatch=require(_0xac4a('0x3'));var rp=require(_0xac4a('0x4'));var moment=require(_0xac4a('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xac4a('0x6'));var sox=require(_0xac4a('0x7'));var csv=require(_0xac4a('0x8'));var ejs=require(_0xac4a('0x9'));var fs=require('fs');var fs_extra=require(_0xac4a('0xa'));var _=require(_0xac4a('0xb'));var squel=require(_0xac4a('0xc'));var crypto=require(_0xac4a('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xac4a('0x8'));var querystring=require(_0xac4a('0xe'));var Papa=require(_0xac4a('0xf'));var Redis=require('ioredis');var authService=require(_0xac4a('0x10'));var qs=require(_0xac4a('0x11'));var as=require(_0xac4a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xac4a('0x13'))('api');var utils=require(_0xac4a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xac4a('0x15'));var db=require(_0xac4a('0x16'))['db'];var dbH=require(_0xac4a('0x16'))['dbH'];function respondWithStatusCode(_0x21a79,_0x68424a){_0x68424a=_0x68424a||0xcc;return function(_0x247b78){if(_0x247b78){return _0x21a79[_0xac4a('0x17')](_0x68424a);}return _0x21a79[_0xac4a('0x18')](_0x68424a)[_0xac4a('0x19')]();};}function respondWithResult(_0x34bc01,_0x33c287){_0x33c287=_0x33c287||0xc8;return function(_0x190418){if(_0x190418){return _0x34bc01[_0xac4a('0x18')](_0x33c287)[_0xac4a('0x1a')](_0x190418);}};}function respondWithFilteredResult(_0x26dbb8,_0x4a2119){return function(_0x402fff){if(_0x402fff){var _0x34d797=typeof _0x4a2119[_0xac4a('0x1b')]===_0xac4a('0x1c')&&typeof _0x4a2119[_0xac4a('0x1d')]===_0xac4a('0x1c');var _0x28e304=_0x402fff[_0xac4a('0x1e')];var _0x546c5d=_0x34d797?0x0:_0x4a2119['offset'];var _0x21a729=_0x34d797?_0x402fff[_0xac4a('0x1e')]:_0x4a2119[_0xac4a('0x1b')]+_0x4a2119['limit'];var _0x39e83e;if(_0x21a729>=_0x28e304){_0x21a729=_0x28e304;_0x39e83e=0xc8;}else{_0x39e83e=0xce;}_0x26dbb8[_0xac4a('0x18')](_0x39e83e);return _0x26dbb8[_0xac4a('0x1f')](_0xac4a('0x20'),_0x546c5d+'-'+_0x21a729+'/'+_0x28e304)[_0xac4a('0x1a')](_0x402fff);}return null;};}function patchUpdates(_0x3e829c){return function(_0xe38996){try{jsonpatch[_0xac4a('0x21')](_0xe38996,_0x3e829c,!![]);}catch(_0x534092){return BPromise[_0xac4a('0x22')](_0x534092);}return _0xe38996[_0xac4a('0x23')]();};}function saveUpdates(_0x599787,_0x3d7ce0){return function(_0x4169c0){if(_0x4169c0){return _0x4169c0[_0xac4a('0x24')](_0x599787)[_0xac4a('0x25')](function(_0x4d2d6c){return _0x4d2d6c;});}return null;};}function removeEntity(_0x1b7998,_0x2503d8){return function(_0x15435c){if(_0x15435c){return _0x15435c[_0xac4a('0x26')]()[_0xac4a('0x25')](function(){var _0x2b0dc2=_0x15435c[_0xac4a('0x27')]({'plain':!![]});var _0x36054a=_0xac4a('0x28');return db[_0xac4a('0x29')][_0xac4a('0x26')]({'where':{'type':_0x36054a,'resourceId':_0x2b0dc2['id']}})[_0xac4a('0x25')](function(){return _0x15435c;});})[_0xac4a('0x25')](function(){_0x1b7998[_0xac4a('0x18')](0xcc)[_0xac4a('0x19')]();});}};}function handleEntityNotFound(_0x20202c,_0x4e17ce){return function(_0x23b061){if(!_0x23b061){_0x20202c[_0xac4a('0x17')](0x194);}return _0x23b061;};}function handleError(_0x42a33c,_0x2772fe){_0x2772fe=_0x2772fe||0x1f4;return function(_0x116700){logger['error'](_0x116700['stack']);if(_0x116700[_0xac4a('0x2a')]){delete _0x116700[_0xac4a('0x2a')];}_0x42a33c[_0xac4a('0x18')](_0x2772fe)['send'](_0x116700);};}exports['index']=function(_0x355755,_0x2896bc){var _0x228629={},_0x432066={},_0x17118e={'count':0x0,'rows':[]};var _0x53d3a5=_[_0xac4a('0x2b')](db['AnalyticDefaultReport'][_0xac4a('0x2c')],function(_0x57adcf){return{'name':_0x57adcf[_0xac4a('0x2d')],'type':_0x57adcf[_0xac4a('0x2e')][_0xac4a('0x2f')]};});_0x432066[_0xac4a('0x30')]=_[_0xac4a('0x2b')](_0x53d3a5,_0xac4a('0x2a'));_0x432066[_0xac4a('0x31')]=_[_0xac4a('0x32')](_0x355755[_0xac4a('0x31')]);_0x432066[_0xac4a('0x33')]=_[_0xac4a('0x34')](_0x432066[_0xac4a('0x30')],_0x432066[_0xac4a('0x31')]);_0x228629[_0xac4a('0x35')]=_['intersection'](_0x432066[_0xac4a('0x30')],qs[_0xac4a('0x36')](_0x355755['query'][_0xac4a('0x36')]));_0x228629[_0xac4a('0x35')]=_0x228629['attributes']['length']?_0x228629[_0xac4a('0x35')]:_0x432066[_0xac4a('0x30')];if(!_0x355755[_0xac4a('0x31')][_0xac4a('0x37')]('nolimit')){_0x228629[_0xac4a('0x1d')]=qs[_0xac4a('0x1d')](_0x355755['query'][_0xac4a('0x1d')]);_0x228629[_0xac4a('0x1b')]=qs[_0xac4a('0x1b')](_0x355755['query'][_0xac4a('0x1b')]);}_0x228629[_0xac4a('0x38')]=qs[_0xac4a('0x39')](_0x355755['query'][_0xac4a('0x39')]);_0x228629[_0xac4a('0x3a')]=qs['filters'](_['pick'](_0x355755[_0xac4a('0x31')],_0x432066['filters']),_0x53d3a5);if(_0x355755['query']['filter']){_0x228629['where']=_[_0xac4a('0x3b')](_0x228629[_0xac4a('0x3a')],{'$or':_[_0xac4a('0x2b')](_0x53d3a5,function(_0x472484){if(_0x472484[_0xac4a('0x2e')]!==_0xac4a('0x3c')){var _0x4220e2={};_0x4220e2[_0x472484[_0xac4a('0x2a')]]={'$like':'%'+_0x355755[_0xac4a('0x31')][_0xac4a('0x3d')]+'%'};return _0x4220e2;}})});}_0x228629=_[_0xac4a('0x3b')]({},_0x228629,_0x355755[_0xac4a('0x3e')]);var _0x4e4994={'where':_0x228629['where']};return db['AnalyticDefaultReport'][_0xac4a('0x1e')](_0x4e4994)[_0xac4a('0x25')](function(_0x14e80b){_0x17118e[_0xac4a('0x1e')]=_0x14e80b;if(_0x355755[_0xac4a('0x31')][_0xac4a('0x3f')]){_0x228629[_0xac4a('0x40')]=[{'all':!![]}];}return db[_0xac4a('0x41')][_0xac4a('0x42')](_0x228629);})[_0xac4a('0x25')](function(_0x561cb7){_0x17118e[_0xac4a('0x43')]=_0x561cb7;return _0x17118e;})[_0xac4a('0x25')](respondWithFilteredResult(_0x2896bc,_0x228629))[_0xac4a('0x44')](handleError(_0x2896bc,null));};exports[_0xac4a('0x45')]=function(_0x1a96cf,_0x57b879){var _0x8700b4={'raw':!![],'where':{'id':_0x1a96cf['params']['id']}},_0x1b77bb={};_0x1b77bb[_0xac4a('0x30')]=_['keys'](db[_0xac4a('0x41')][_0xac4a('0x2c')]);_0x1b77bb[_0xac4a('0x31')]=_[_0xac4a('0x32')](_0x1a96cf[_0xac4a('0x31')]);_0x1b77bb[_0xac4a('0x33')]=_[_0xac4a('0x34')](_0x1b77bb[_0xac4a('0x30')],_0x1b77bb[_0xac4a('0x31')]);_0x8700b4[_0xac4a('0x35')]=_[_0xac4a('0x34')](_0x1b77bb[_0xac4a('0x30')],qs['fields'](_0x1a96cf[_0xac4a('0x31')][_0xac4a('0x36')]));_0x8700b4[_0xac4a('0x35')]=_0x8700b4['attributes'][_0xac4a('0x46')]?_0x8700b4[_0xac4a('0x35')]:_0x1b77bb['model'];if(_0x1a96cf[_0xac4a('0x31')]['includeAll']){_0x8700b4[_0xac4a('0x40')]=[{'all':!![]}];}_0x8700b4=_[_0xac4a('0x3b')]({},_0x8700b4,_0x1a96cf[_0xac4a('0x3e')]);return db['AnalyticDefaultReport']['find'](_0x8700b4)[_0xac4a('0x25')](handleEntityNotFound(_0x57b879,null))['then'](respondWithResult(_0x57b879,null))[_0xac4a('0x44')](handleError(_0x57b879,null));};exports['create']=function(_0x3d2aaf,_0x530bbb){return db[_0xac4a('0x41')][_0xac4a('0x47')](_0x3d2aaf[_0xac4a('0x48')],{})[_0xac4a('0x25')](function(_0x54782f){var _0x31c794=_0x3d2aaf[_0xac4a('0x49')][_0xac4a('0x27')]({'plain':!![]});if(!_0x31c794)throw new Error(_0xac4a('0x4a'));if(_0x31c794[_0xac4a('0x4b')]===_0xac4a('0x49')){var _0x187306=_0x54782f['get']({'plain':!![]});var _0x35dee5=_0xac4a('0x4c');return db['UserProfileSection'][_0xac4a('0x4d')]({'where':{'name':_0x35dee5,'userProfileId':_0x31c794[_0xac4a('0x4e')]},'raw':!![]})[_0xac4a('0x25')](function(_0x3ac36e){if(_0x3ac36e&&_0x3ac36e['autoAssociation']===0x0){return db[_0xac4a('0x29')][_0xac4a('0x47')]({'name':_0x187306[_0xac4a('0x2a')],'resourceId':_0x187306['id'],'type':_0xac4a('0x28'),'sectionId':_0x3ac36e['id']},{})[_0xac4a('0x25')](function(){return _0x54782f;});}else{return _0x54782f;}})['catch'](function(_0x179373){logger['error'](_0xac4a('0x4f'),_0x179373);throw _0x179373;});}return _0x54782f;})[_0xac4a('0x25')](respondWithResult(_0x530bbb,0xc9))['catch'](handleError(_0x530bbb,null));};exports['update']=function(_0x437466,_0x70fdc3){if(_0x437466['body']['id']){delete _0x437466[_0xac4a('0x48')]['id'];}return db[_0xac4a('0x41')][_0xac4a('0x4d')]({'where':{'id':_0x437466[_0xac4a('0x50')]['id']}})['then'](handleEntityNotFound(_0x70fdc3,null))[_0xac4a('0x25')](saveUpdates(_0x437466[_0xac4a('0x48')],null))[_0xac4a('0x25')](respondWithResult(_0x70fdc3,null))[_0xac4a('0x44')](handleError(_0x70fdc3,null));};exports[_0xac4a('0x26')]=function(_0x411547,_0x36179a){return db['AnalyticDefaultReport'][_0xac4a('0x4d')]({'where':{'id':_0x411547[_0xac4a('0x50')]['id']}})[_0xac4a('0x25')](handleEntityNotFound(_0x36179a,null))[_0xac4a('0x25')](removeEntity(_0x36179a,null))[_0xac4a('0x44')](handleError(_0x36179a,null));};exports[_0xac4a('0x51')]=function(_0x213df2,_0x236f57){var _0x159e43=0xa;var _0x786d9=[_0xac4a('0x52'),_0xac4a('0x53'),_0xac4a('0x54'),_0xac4a('0x55')];var _0x5222f3={'SUM':_0xac4a('0x56'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xac4a('0x57'),'MAX':'MAX(%s)','MIN':_0xac4a('0x58'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xac4a('0x59'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xac4a('0x5a')};var _0x5cac9b={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xac4a('0x5b'),'HOUR':_0xac4a('0x5c'),'ROUND':_0xac4a('0x5d'),'UNIX_TIMESTAMP':_0xac4a('0x5e')};var _0x2f9940=function(_0xb7b884){return!_['includes']([_0xac4a('0x5f'),'IS\x20NOT\x20NULL',_0xac4a('0x60'),'IS\x20NOT\x20EMPTY'],_0xb7b884);};var _0x347880=function(_0x19ce2c){if(!_0x19ce2c||!_0x19ce2c[_0xac4a('0x61')][_0xac4a('0x46')]){return'';}for(var _0x429273='(',_0x2bc39a=0x0;_0x2bc39a<_0x19ce2c[_0xac4a('0x61')][_0xac4a('0x46')];_0x2bc39a+=0x1){_0x2bc39a>0x0&&(_0x429273+='\x20'+_0x19ce2c[_0xac4a('0x62')]+'\x20');_0x429273+=_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x63')]?_0x347880(_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x63')]):_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x64')]+'\x20'+_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x65')]+(_0x2f9940(_0x19ce2c['rules'][_0x2bc39a][_0xac4a('0x65')])?'\x20'+_0x19ce2c[_0xac4a('0x61')][_0x2bc39a]['value']:'');}return _0x429273+')';};var _0x3c3576={'where':{'id':_0x213df2['params']['id']}},_0x34bd1c,_0x2d24c7,_0x2b8562,_0x357cac,_0x4d1440;_0x3c3576=_[_0xac4a('0x3b')]({},_0x3c3576,_0x213df2[_0xac4a('0x3e')]);return db[_0xac4a('0x41')][_0xac4a('0x4d')](_0x3c3576)[_0xac4a('0x25')](function(_0x21ef8b){if(_0x21ef8b){_0x34bd1c=_0x21ef8b;return _0x21ef8b[_0xac4a('0x66')]();}return null;})[_0xac4a('0x25')](function(_0x44c60b){if(_0x44c60b){if(!_0x44c60b[_0xac4a('0x46')]){throw new db[(_0xac4a('0x67'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x2d24c7=_0x44c60b;return db[_0xac4a('0x68')][_0xac4a('0x42')]({'raw':!![]});}return null;})[_0xac4a('0x25')](function(_0x423f70){if(_0x423f70){_0x2b8562=_[_0xac4a('0x69')](_0x423f70,'id');var _0x283107;var _0x1d24bb=squel[_0xac4a('0x6a')]();_0x1d24bb[_0xac4a('0x6b')](_0x34bd1c[_0xac4a('0x6c')]);for(var _0xb09b89=0x0;_0xb09b89<_0x2d24c7[_0xac4a('0x46')];_0xb09b89+=0x1){_0x283107=_0x2d24c7[_0xb09b89]['MetricId']?_0x2b8562[_0x2d24c7[_0xb09b89][_0xac4a('0x6d')]][_0xac4a('0x6e')]:_0x2d24c7[_0xb09b89][_0xac4a('0x64')];_0x283107=_0x2d24c7[_0xb09b89][_0xac4a('0x6f')]?_['replace'](_0x5222f3[_0x2d24c7[_0xb09b89][_0xac4a('0x6f')]],'%s',_0x283107):_0x283107;_0x283107=_0x2d24c7[_0xb09b89]['format']?_[_0xac4a('0x70')](_0x5cac9b[_0x2d24c7[_0xb09b89][_0xac4a('0x71')]],'%s',_0x283107):_0x283107;if(_0x2d24c7[_0xb09b89]['groupBy']){_0x1d24bb['group'](_0x283107);}_0x2d24c7[_0xb09b89][_0xac4a('0x72')]&&_0x1d24bb[_0xac4a('0x38')](_0x283107,_0x2d24c7[_0xb09b89][_0xac4a('0x72')]==='DESC'?![]:!![]);_0x1d24bb[_0xac4a('0x64')](_0x283107,_0x2d24c7[_0xb09b89]['alias']||_0x283107);}if(_0x34bd1c[_0xac4a('0x73')]){_0x34bd1c['joins']=JSON['parse'](_0x34bd1c[_0xac4a('0x73')]);for(var _0x56ef2a=0x0;_0x56ef2a<_0x34bd1c[_0xac4a('0x73')]['length'];_0x56ef2a+=0x1){if(_0x34bd1c[_0xac4a('0x73')][_0x56ef2a][_0xac4a('0x2e')]&&_['includes'](_0x786d9,_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['type'])&&_0x34bd1c[_0xac4a('0x73')][_0x56ef2a][_0xac4a('0x74')]&&_0x34bd1c['joins'][_0x56ef2a][_0xac4a('0x75')]&&_0x34bd1c['joins'][_0x56ef2a]['foreignKey']){_0x1d24bb[_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['type']](_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['foreignTable'],null,util['format'](_0xac4a('0x76'),_0x34bd1c[_0xac4a('0x6c')],_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['parentKey'],_0x34bd1c['joins'][_0x56ef2a][_0xac4a('0x75')],_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['foreignKey']));}}}if(_0x34bd1c['conditions']){_0x34bd1c[_0xac4a('0x77')]=JSON[_0xac4a('0x78')](_0x34bd1c[_0xac4a('0x77')]);_0x1d24bb[_0xac4a('0x3a')](_0x347880(_0x34bd1c[_0xac4a('0x77')][_0xac4a('0x63')]));}_0x4d1440=_0x1d24bb[_0xac4a('0x79')]();_0x1d24bb[_0xac4a('0x1d')](_0x159e43);_0x1d24bb[_0xac4a('0x1b')](0x0);logger['debug'](_0xac4a('0x7a'),_0x1d24bb[_0xac4a('0x7b')]());return dbH[_0xac4a('0x7c')]['query'](_0x1d24bb[_0xac4a('0x7b')](),{'type':dbH[_0xac4a('0x7c')][_0xac4a('0x7d')][_0xac4a('0x7e')]});}})[_0xac4a('0x25')](respondWithResult(_0x236f57,null))['catch'](handleError(_0x236f57,null));};function runReport(_0x290a73,_0x19ce24,_0xc9d040){var _0x37e519=_0x19ce24[_0xac4a('0x2a')];var _0x451248=0xa;var _0xd7bdd6=['join',_0xac4a('0x53'),_0xac4a('0x54'),_0xac4a('0x55')];var _0x35a97c={'SUM':_0xac4a('0x56'),'COUNT':_0xac4a('0x7f'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xac4a('0x80'),'MIN':_0xac4a('0x58'),'AVG':_0xac4a('0x81'),'GROUP_CONCAT':_0xac4a('0x59'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xac4a('0x5a')};var _0x56a934={'SEC_TO_TIME':_0xac4a('0x82'),'DATE':_0xac4a('0x5b'),'HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0xac4a('0x5e')};var _0x212a22=function(_0x1fe86a){return!_['includes']([_0xac4a('0x5f'),'IS\x20NOT\x20NULL',_0xac4a('0x60'),_0xac4a('0x83')],_0x1fe86a);};var _0x406b64=function(_0x35328e){if(!_0x35328e||!_0x35328e[_0xac4a('0x61')]['length']){return'';}for(var _0x50f471='(',_0x31cda0=0x0;_0x31cda0<_0x35328e[_0xac4a('0x61')][_0xac4a('0x46')];_0x31cda0+=0x1){_0x31cda0>0x0&&(_0x50f471+='\x20'+_0x35328e[_0xac4a('0x62')]+'\x20');_0x50f471+=_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x63')]?_0x406b64(_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x63')]):_0x35328e['rules'][_0x31cda0]['field']+'\x20'+_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x65')]+(_0x212a22(_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x65')])?'\x20'+_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x84')]:'');}return _0x50f471+')';};var _0xdaa2ef={'where':{'id':_0x290a73['id']}},_0x2e704b,_0x540d8e,_0x5e0be4,_0x32fd0c,_0x168f30;_0xdaa2ef=_[_0xac4a('0x3b')]({},_0xdaa2ef,_0xc9d040);return db[_0xac4a('0x41')][_0xac4a('0x4d')](_0xdaa2ef)[_0xac4a('0x25')](function(_0x338af3){if(_0x338af3){_0x2e704b=_0x338af3;return _0x338af3['getFields']();}return null;})[_0xac4a('0x25')](function(_0x1bacf2){if(_0x1bacf2){if(!_0x1bacf2[_0xac4a('0x46')]){throw new db['Sequelize'][(_0xac4a('0x85'))](_0xac4a('0x86'),0x193);}_0x540d8e=_0x1bacf2;return db[_0xac4a('0x68')][_0xac4a('0x42')]({'raw':!![]});}return null;})[_0xac4a('0x25')](function(_0x27d023){if(_0x27d023){_0x5e0be4=_[_0xac4a('0x69')](_0x27d023,'id');var _0x2ef42a;var _0x322465=squel['select']();_0x322465[_0xac4a('0x6b')](_0x2e704b['table']);for(var _0x203321=0x0;_0x203321<_0x540d8e[_0xac4a('0x46')];_0x203321+=0x1){_0x2ef42a=_0x540d8e[_0x203321][_0xac4a('0x6d')]?_0x5e0be4[_0x540d8e[_0x203321][_0xac4a('0x6d')]][_0xac4a('0x6e')]:_0x540d8e[_0x203321][_0xac4a('0x64')];_0x2ef42a=_0x540d8e[_0x203321][_0xac4a('0x6f')]?_['replace'](_0x35a97c[_0x540d8e[_0x203321][_0xac4a('0x6f')]],'%s',_0x2ef42a):_0x2ef42a;_0x2ef42a=_0x540d8e[_0x203321][_0xac4a('0x71')]?_[_0xac4a('0x70')](_0x56a934[_0x540d8e[_0x203321][_0xac4a('0x71')]],'%s',_0x2ef42a):_0x2ef42a;if(_0x540d8e[_0x203321][_0xac4a('0x87')]){_0x322465['group'](_0x2ef42a);}_0x540d8e[_0x203321][_0xac4a('0x72')]&&_0x322465[_0xac4a('0x38')](_0x2ef42a,_0x540d8e[_0x203321]['orderBy']==='DESC'?![]:!![]);_0x322465[_0xac4a('0x64')](_0x2ef42a,_0x540d8e[_0x203321][_0xac4a('0x88')]||_0x2ef42a);}if(_0x2e704b['joins']){_0x2e704b[_0xac4a('0x73')]=JSON[_0xac4a('0x78')](_0x2e704b[_0xac4a('0x73')]);for(var _0x37657e=0x0;_0x37657e<_0x2e704b[_0xac4a('0x73')][_0xac4a('0x46')];_0x37657e+=0x1){if(_0x2e704b['joins'][_0x37657e][_0xac4a('0x2e')]&&_[_0xac4a('0x89')](_0xd7bdd6,_0x2e704b[_0xac4a('0x73')][_0x37657e]['type'])&&_0x2e704b[_0xac4a('0x73')][_0x37657e][_0xac4a('0x74')]&&_0x2e704b[_0xac4a('0x73')][_0x37657e][_0xac4a('0x75')]&&_0x2e704b[_0xac4a('0x73')][_0x37657e][_0xac4a('0x8a')]){_0x322465[_0x2e704b['joins'][_0x37657e][_0xac4a('0x2e')]](_0x2e704b[_0xac4a('0x73')][_0x37657e]['foreignTable'],null,util[_0xac4a('0x71')]('%s.%s\x20=\x20%s.%s',_0x2e704b[_0xac4a('0x6c')],_0x2e704b[_0xac4a('0x73')][_0x37657e]['parentKey'],_0x2e704b[_0xac4a('0x73')][_0x37657e]['foreignTable'],_0x2e704b[_0xac4a('0x73')][_0x37657e]['foreignKey']));}}}if(_0x2e704b[_0xac4a('0x77')]){_0x2e704b[_0xac4a('0x77')]=JSON[_0xac4a('0x78')](_0x2e704b[_0xac4a('0x77')]);_0x322465[_0xac4a('0x3a')](_0x406b64(_0x2e704b[_0xac4a('0x77')][_0xac4a('0x63')]));}_0x168f30=_0x322465[_0xac4a('0x79')]();_0x322465[_0xac4a('0x1d')](_0x451248);_0x322465[_0xac4a('0x1b')](0x0);return;}})[_0xac4a('0x25')](function(){if(_0x19ce24[_0xac4a('0x8b')]===_0xac4a('0x8c')){return null;}var _0x4217df=_['merge'](_0x19ce24,{'name':_0x19ce24[_0xac4a('0x8d')]||_0x19ce24[_0xac4a('0x2a')]||_0x2e704b['name'],'basename':_0x37e519,'savename':util[_0xac4a('0x71')](_0xac4a('0x8e'),_0x19ce24[_0xac4a('0x2a')]||_0x2e704b[_0xac4a('0x2a')],require(_0xac4a('0x8f'))['generate'](0x4),_0x19ce24[_0xac4a('0x8b')]||'csv'),'reportId':_0x2e704b['id'],'reportType':_0xac4a('0x90')});return db[_0xac4a('0x91')][_0xac4a('0x47')](_0x4217df,{'raw':!![]});})[_0xac4a('0x25')](function(_0x53f23d){if(_0x2e704b[_0xac4a('0x6c')]==='cdr'){_0x168f30[_0xac4a('0x3a')](_0x2e704b[_0xac4a('0x6c')]+_0xac4a('0x92'),_0x19ce24['startDate'],_0x19ce24[_0xac4a('0x93')]);}else{_0x168f30[_0xac4a('0x3a')](_0x2e704b[_0xac4a('0x6c')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x19ce24[_0xac4a('0x94')],_0x19ce24[_0xac4a('0x93')]);}if(_0x53f23d){logger[_0xac4a('0x95')](_0xac4a('0x96'),_0x168f30[_0xac4a('0x7b')]());require(_0xac4a('0x97'))[_0xac4a('0x98')](path[_0xac4a('0x52')](__dirname,'../../components/export/',_0x53f23d[_0xac4a('0x8b')]),[_0x53f23d['id'],_0x168f30['toString'](),path['join'](__dirname,'../../files/reports',_0x53f23d['savename']),_0x37e519]);return _0x53f23d;}else{var _0x502275=squel[_0xac4a('0x6a')]();_0x502275[_0xac4a('0x6b')]('('+_0x168f30[_0xac4a('0x7b')]()+')',_0xac4a('0x99'));_0x502275[_0xac4a('0x64')]('COUNT(*)',_0xac4a('0x1e'));_0x168f30[_0xac4a('0x1d')](_0x19ce24[_0xac4a('0x1d')]||_0x451248);_0x168f30[_0xac4a('0x1b')](_0x19ce24[_0xac4a('0x1b')]||0x0);return dbH[_0xac4a('0x7c')][_0xac4a('0x31')](_0x502275[_0xac4a('0x7b')](),{'type':dbH['sequelize'][_0xac4a('0x7d')][_0xac4a('0x7e')]})[_0xac4a('0x25')](function(_0x25331f){if(!_0x25331f[_0xac4a('0x46')]){_0x32fd0c=0x0;}else{_0x32fd0c=_0x25331f[0x0][_0xac4a('0x1e')]||0x0;}return dbH[_0xac4a('0x7c')]['query'](_0x168f30['toString'](),{'type':dbH[_0xac4a('0x7c')][_0xac4a('0x7d')]['SELECT']});})[_0xac4a('0x25')](function(_0x366f5a){return{'rows':_0x366f5a||[],'count':_0x32fd0c};});}});}exports['run']=function(_0x5bd013,_0x2fe103){return runReport(_0x5bd013[_0xac4a('0x50')],_0x5bd013[_0xac4a('0x31')],_0x5bd013[_0xac4a('0x3e')])[_0xac4a('0x25')](respondWithResult(_0x2fe103,null))['catch'](handleError(_0x2fe103,null));};exports[_0xac4a('0x9a')]=runReport;exports['query']=function(_0x4f2d85,_0x538cfd){var _0x63c30=0xa;var _0x4301c3=[_0xac4a('0x52'),_0xac4a('0x53'),_0xac4a('0x54'),_0xac4a('0x55')];var _0xcad25d={'SUM':_0xac4a('0x56'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0xac4a('0x58'),'AVG':_0xac4a('0x81'),'GROUP_CONCAT':_0xac4a('0x59'),'GROUP_CONCAT ASC':_0xac4a('0x9b'),'GROUP_CONCAT DESC':_0xac4a('0x5a')};var _0xcd140e={'SEC_TO_TIME':_0xac4a('0x82'),'DATE':_0xac4a('0x5b'),'HOUR':_0xac4a('0x5c'),'ROUND':_0xac4a('0x5d'),'UNIX_TIMESTAMP':_0xac4a('0x5e')};var _0x37cb49=function(_0xe0fd57){return!_[_0xac4a('0x89')]([_0xac4a('0x5f'),_0xac4a('0x9c'),_0xac4a('0x60'),_0xac4a('0x83')],_0xe0fd57);};var _0x41cdb5=function(_0x172d03){if(!_0x172d03||!_0x172d03[_0xac4a('0x61')][_0xac4a('0x46')]){return'';}for(var _0x3e2575='(',_0x4cc581=0x0;_0x4cc581<_0x172d03[_0xac4a('0x61')][_0xac4a('0x46')];_0x4cc581+=0x1){_0x4cc581>0x0&&(_0x3e2575+='\x20'+_0x172d03[_0xac4a('0x62')]+'\x20');_0x3e2575+=_0x172d03[_0xac4a('0x61')][_0x4cc581][_0xac4a('0x63')]?_0x41cdb5(_0x172d03[_0xac4a('0x61')][_0x4cc581][_0xac4a('0x63')]):_0x172d03[_0xac4a('0x61')][_0x4cc581]['field']+'\x20'+_0x172d03['rules'][_0x4cc581][_0xac4a('0x65')]+(_0x37cb49(_0x172d03[_0xac4a('0x61')][_0x4cc581][_0xac4a('0x65')])?'\x20'+_0x172d03['rules'][_0x4cc581]['value']:'');}return _0x3e2575+')';};var _0x5de198={'where':{'id':_0x4f2d85[_0xac4a('0x50')]['id']}},_0x2b6773,_0x52df82,_0x59e82c,_0x216055,_0x52963c;_0x5de198=_['merge']({},_0x5de198,_0x4f2d85[_0xac4a('0x3e')]);return db[_0xac4a('0x41')][_0xac4a('0x4d')](_0x5de198)[_0xac4a('0x25')](function(_0x403a16){if(_0x403a16){_0x2b6773=_0x403a16;return _0x403a16[_0xac4a('0x66')]();}return null;})['then'](function(_0x25bf23){if(_0x25bf23){if(!_0x25bf23[_0xac4a('0x46')]){throw new db[(_0xac4a('0x67'))]['ValidationErrorItem'](_0xac4a('0x86'),0x193);}_0x52df82=_0x25bf23;return db[_0xac4a('0x68')][_0xac4a('0x42')]({'raw':!![]});}return null;})[_0xac4a('0x25')](function(_0x5bb911){if(_0x5bb911){_0x59e82c=_[_0xac4a('0x69')](_0x5bb911,'id');var _0x403f5a;var _0x3eae2f=squel[_0xac4a('0x6a')]();_0x3eae2f[_0xac4a('0x6b')](_0x2b6773[_0xac4a('0x6c')]);for(var _0x4a0cd9=0x0;_0x4a0cd9<_0x52df82['length'];_0x4a0cd9+=0x1){_0x403f5a=_0x52df82[_0x4a0cd9][_0xac4a('0x6d')]?_0x59e82c[_0x52df82[_0x4a0cd9][_0xac4a('0x6d')]][_0xac4a('0x6e')]:_0x52df82[_0x4a0cd9][_0xac4a('0x64')];_0x403f5a=_0x52df82[_0x4a0cd9][_0xac4a('0x6f')]?_[_0xac4a('0x70')](_0xcad25d[_0x52df82[_0x4a0cd9]['function']],'%s',_0x403f5a):_0x403f5a;_0x403f5a=_0x52df82[_0x4a0cd9][_0xac4a('0x71')]?_['replace'](_0xcd140e[_0x52df82[_0x4a0cd9][_0xac4a('0x71')]],'%s',_0x403f5a):_0x403f5a;if(_0x52df82[_0x4a0cd9]['groupBy']){_0x3eae2f[_0xac4a('0x63')](_0x403f5a);}_0x52df82[_0x4a0cd9][_0xac4a('0x72')]&&_0x3eae2f[_0xac4a('0x38')](_0x403f5a,_0x52df82[_0x4a0cd9][_0xac4a('0x72')]==='DESC'?![]:!![]);_0x3eae2f[_0xac4a('0x64')](_0x403f5a,_0x52df82[_0x4a0cd9][_0xac4a('0x88')]||_0x403f5a);}if(_0x2b6773[_0xac4a('0x73')]){_0x2b6773[_0xac4a('0x73')]=JSON[_0xac4a('0x78')](_0x2b6773['joins']);for(var _0x3dd60a=0x0;_0x3dd60a<_0x2b6773[_0xac4a('0x73')][_0xac4a('0x46')];_0x3dd60a+=0x1){if(_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x2e')]&&_['includes'](_0x4301c3,_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x2e')])&&_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x74')]&&_0x2b6773[_0xac4a('0x73')][_0x3dd60a]['foreignTable']&&_0x2b6773['joins'][_0x3dd60a]['foreignKey']){_0x3eae2f[_0x2b6773['joins'][_0x3dd60a][_0xac4a('0x2e')]](_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x75')],null,util[_0xac4a('0x71')](_0xac4a('0x76'),_0x2b6773['table'],_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x74')],_0x2b6773['joins'][_0x3dd60a][_0xac4a('0x75')],_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x8a')]));}}}if(_0x2b6773['conditions']){_0x2b6773[_0xac4a('0x77')]=JSON[_0xac4a('0x78')](_0x2b6773[_0xac4a('0x77')]);_0x3eae2f[_0xac4a('0x3a')](_0x41cdb5(_0x2b6773[_0xac4a('0x77')][_0xac4a('0x63')]));}_0x52963c=_0x3eae2f[_0xac4a('0x79')]();_0x3eae2f[_0xac4a('0x1d')](_0x63c30);_0x3eae2f[_0xac4a('0x1b')](0x0);logger['debug'](_0xac4a('0x7a'),_0x3eae2f[_0xac4a('0x7b')]());return dbH['sequelize'][_0xac4a('0x31')](_0x3eae2f['toString'](),{'type':dbH[_0xac4a('0x7c')][_0xac4a('0x7d')]['SELECT']});}})[_0xac4a('0x25')](function(){return{'sql':_0x52963c[_0xac4a('0x7b')]()};})[_0xac4a('0x25')](respondWithResult(_0x538cfd,null))[_0xac4a('0x44')](handleError(_0x538cfd,null));};
\ No newline at end of file
+var _0x4819=['keyBy','table','metric','output','web','fullPath','%s-%s.%s','randomstring','generate','csv','default','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','select','from','countTable','COUNT(*)','SELECT','run','cross_join','COUNT(DISTINCT\x20%s)','debug','Limited\x20Query:','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','squel','crypto','jsforce','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','get','DefaultReports','UserProfileResource','destroy','error','stack','name','send','rawAttributes','fieldName','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','options','AnalyticDefaultReport','includeAll','include','findAll','rows','show','params','keys','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','autoAssociation','body','preview','join','left_join','SUM(%s)','COUNT(%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','field','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','MetricId','function','replace','format','groupBy','group','orderBy','DESC','alias','joins','parse','includes','parentKey','foreignTable','foreignKey','conditions','clone','toString','sequelize','QueryTypes','right_join','SEC_TO_TIME(%s)','IS\x20NULL','IS\x20EMPTY','operator','condition'];(function(_0x2bd443,_0x3b60d8){var _0x45159a=function(_0x1ddbec){while(--_0x1ddbec){_0x2bd443['push'](_0x2bd443['shift']());}};_0x45159a(++_0x3b60d8);}(_0x4819,0xcd));var _0x9481=function(_0x578a80,_0x412698){_0x578a80=_0x578a80-0x0;var _0x4b4ba8=_0x4819[_0x578a80];return _0x4b4ba8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9481('0x0'));var zipdir=require(_0x9481('0x1'));var jsonpatch=require(_0x9481('0x2'));var rp=require(_0x9481('0x3'));var moment=require(_0x9481('0x4'));var BPromise=require(_0x9481('0x5'));var Mustache=require(_0x9481('0x6'));var util=require(_0x9481('0x7'));var path=require(_0x9481('0x8'));var sox=require(_0x9481('0x9'));var csv=require('to-csv');var ejs=require(_0x9481('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9481('0xb'));var crypto=require(_0x9481('0xc'));var jsforce=require(_0x9481('0xd'));var deskjs=require(_0x9481('0xe'));var toCsv=require(_0x9481('0xf'));var querystring=require('querystring');var Papa=require(_0x9481('0x10'));var Redis=require('ioredis');var authService=require(_0x9481('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x9481('0x12'));var hardwareService=require(_0x9481('0x13'));var logger=require(_0x9481('0x14'))(_0x9481('0x15'));var utils=require(_0x9481('0x16'));var config=require(_0x9481('0x17'));var licenseUtil=require(_0x9481('0x18'));var db=require(_0x9481('0x19'))['db'];var dbH=require(_0x9481('0x19'))['dbH'];function respondWithStatusCode(_0x5aac02,_0xce6fa2){_0xce6fa2=_0xce6fa2||0xcc;return function(_0x150276){if(_0x150276){return _0x5aac02[_0x9481('0x1a')](_0xce6fa2);}return _0x5aac02[_0x9481('0x1b')](_0xce6fa2)[_0x9481('0x1c')]();};}function respondWithResult(_0xc7a0b5,_0x3fb97f){_0x3fb97f=_0x3fb97f||0xc8;return function(_0x495b30){if(_0x495b30){return _0xc7a0b5[_0x9481('0x1b')](_0x3fb97f)[_0x9481('0x1d')](_0x495b30);}};}function respondWithFilteredResult(_0x5b1fe6,_0x2266d5){return function(_0x518150){if(_0x518150){var _0x34108d=typeof _0x2266d5[_0x9481('0x1e')]===_0x9481('0x1f')&&typeof _0x2266d5[_0x9481('0x20')]==='undefined';var _0x5eda66=_0x518150[_0x9481('0x21')];var _0x50a559=_0x34108d?0x0:_0x2266d5['offset'];var _0x26671c=_0x34108d?_0x518150[_0x9481('0x21')]:_0x2266d5[_0x9481('0x1e')]+_0x2266d5[_0x9481('0x20')];var _0x7000e7;if(_0x26671c>=_0x5eda66){_0x26671c=_0x5eda66;_0x7000e7=0xc8;}else{_0x7000e7=0xce;}_0x5b1fe6[_0x9481('0x1b')](_0x7000e7);return _0x5b1fe6['set'](_0x9481('0x22'),_0x50a559+'-'+_0x26671c+'/'+_0x5eda66)[_0x9481('0x1d')](_0x518150);}return null;};}function patchUpdates(_0x45f9df){return function(_0x615e02){try{jsonpatch[_0x9481('0x23')](_0x615e02,_0x45f9df,!![]);}catch(_0x56da97){return BPromise[_0x9481('0x24')](_0x56da97);}return _0x615e02[_0x9481('0x25')]();};}function saveUpdates(_0x572599,_0x2bcf37){return function(_0xd1cd1a){if(_0xd1cd1a){return _0xd1cd1a[_0x9481('0x26')](_0x572599)[_0x9481('0x27')](function(_0x2dc02e){return _0x2dc02e;});}return null;};}function removeEntity(_0x49ecfa,_0x91e3d9){return function(_0x22f0b5){if(_0x22f0b5){return _0x22f0b5['destroy']()['then'](function(){var _0x12b0c3=_0x22f0b5[_0x9481('0x28')]({'plain':!![]});var _0x550fce=_0x9481('0x29');return db[_0x9481('0x2a')][_0x9481('0x2b')]({'where':{'type':_0x550fce,'resourceId':_0x12b0c3['id']}})[_0x9481('0x27')](function(){return _0x22f0b5;});})['then'](function(){_0x49ecfa[_0x9481('0x1b')](0xcc)[_0x9481('0x1c')]();});}};}function handleEntityNotFound(_0x3c2585,_0x587706){return function(_0x1791b2){if(!_0x1791b2){_0x3c2585['sendStatus'](0x194);}return _0x1791b2;};}function handleError(_0x2e1eff,_0xe153ab){_0xe153ab=_0xe153ab||0x1f4;return function(_0x22ab26){logger[_0x9481('0x2c')](_0x22ab26[_0x9481('0x2d')]);if(_0x22ab26['name']){delete _0x22ab26[_0x9481('0x2e')];}_0x2e1eff[_0x9481('0x1b')](_0xe153ab)[_0x9481('0x2f')](_0x22ab26);};}exports['index']=function(_0x56752e,_0x1addc8){var _0x427c25={},_0x42df68={},_0x2b33f8={'count':0x0,'rows':[]};var _0x5d9926=_['map'](db['AnalyticDefaultReport'][_0x9481('0x30')],function(_0x5d6c65){return{'name':_0x5d6c65[_0x9481('0x31')],'type':_0x5d6c65['type'][_0x9481('0x32')]};});_0x42df68[_0x9481('0x33')]=_[_0x9481('0x34')](_0x5d9926,_0x9481('0x2e'));_0x42df68[_0x9481('0x35')]=_['keys'](_0x56752e[_0x9481('0x35')]);_0x42df68[_0x9481('0x36')]=_[_0x9481('0x37')](_0x42df68['model'],_0x42df68[_0x9481('0x35')]);_0x427c25[_0x9481('0x38')]=_[_0x9481('0x37')](_0x42df68[_0x9481('0x33')],qs[_0x9481('0x39')](_0x56752e[_0x9481('0x35')]['fields']));_0x427c25[_0x9481('0x38')]=_0x427c25['attributes'][_0x9481('0x3a')]?_0x427c25[_0x9481('0x38')]:_0x42df68[_0x9481('0x33')];if(!_0x56752e[_0x9481('0x35')][_0x9481('0x3b')](_0x9481('0x3c'))){_0x427c25['limit']=qs[_0x9481('0x20')](_0x56752e[_0x9481('0x35')]['limit']);_0x427c25['offset']=qs[_0x9481('0x1e')](_0x56752e['query'][_0x9481('0x1e')]);}_0x427c25[_0x9481('0x3d')]=qs[_0x9481('0x3e')](_0x56752e[_0x9481('0x35')]['sort']);_0x427c25[_0x9481('0x3f')]=qs['filters'](_[_0x9481('0x40')](_0x56752e['query'],_0x42df68[_0x9481('0x36')]),_0x5d9926);if(_0x56752e['query'][_0x9481('0x41')]){_0x427c25[_0x9481('0x3f')]=_[_0x9481('0x42')](_0x427c25[_0x9481('0x3f')],{'$or':_[_0x9481('0x34')](_0x5d9926,function(_0x3b7998){if(_0x3b7998[_0x9481('0x43')]!=='VIRTUAL'){var _0x464080={};_0x464080[_0x3b7998[_0x9481('0x2e')]]={'$like':'%'+_0x56752e[_0x9481('0x35')][_0x9481('0x41')]+'%'};return _0x464080;}})});}_0x427c25=_[_0x9481('0x42')]({},_0x427c25,_0x56752e[_0x9481('0x44')]);var _0x2e4241={'where':_0x427c25['where']};return db[_0x9481('0x45')][_0x9481('0x21')](_0x2e4241)['then'](function(_0x704e81){_0x2b33f8[_0x9481('0x21')]=_0x704e81;if(_0x56752e[_0x9481('0x35')][_0x9481('0x46')]){_0x427c25[_0x9481('0x47')]=[{'all':!![]}];}return db['AnalyticDefaultReport'][_0x9481('0x48')](_0x427c25);})['then'](function(_0x23811a){_0x2b33f8[_0x9481('0x49')]=_0x23811a;return _0x2b33f8;})['then'](respondWithFilteredResult(_0x1addc8,_0x427c25))['catch'](handleError(_0x1addc8,null));};exports[_0x9481('0x4a')]=function(_0x1d0df0,_0x42b19a){var _0x4c4caf={'raw':!![],'where':{'id':_0x1d0df0[_0x9481('0x4b')]['id']}},_0x4402f6={};_0x4402f6['model']=_['keys'](db[_0x9481('0x45')]['rawAttributes']);_0x4402f6[_0x9481('0x35')]=_[_0x9481('0x4c')](_0x1d0df0[_0x9481('0x35')]);_0x4402f6[_0x9481('0x36')]=_[_0x9481('0x37')](_0x4402f6['model'],_0x4402f6[_0x9481('0x35')]);_0x4c4caf[_0x9481('0x38')]=_['intersection'](_0x4402f6[_0x9481('0x33')],qs[_0x9481('0x39')](_0x1d0df0[_0x9481('0x35')][_0x9481('0x39')]));_0x4c4caf[_0x9481('0x38')]=_0x4c4caf[_0x9481('0x38')][_0x9481('0x3a')]?_0x4c4caf[_0x9481('0x38')]:_0x4402f6[_0x9481('0x33')];if(_0x1d0df0['query'][_0x9481('0x46')]){_0x4c4caf['include']=[{'all':!![]}];}_0x4c4caf=_['merge']({},_0x4c4caf,_0x1d0df0[_0x9481('0x44')]);return db['AnalyticDefaultReport'][_0x9481('0x4d')](_0x4c4caf)[_0x9481('0x27')](handleEntityNotFound(_0x42b19a,null))['then'](respondWithResult(_0x42b19a,null))[_0x9481('0x4e')](handleError(_0x42b19a,null));};exports[_0x9481('0x4f')]=function(_0x2f3413,_0x13b674){return db[_0x9481('0x45')][_0x9481('0x4f')](_0x2f3413['body'],{})['then'](function(_0x424b22){var _0x44d7e0=_0x2f3413[_0x9481('0x50')][_0x9481('0x28')]({'plain':!![]});if(!_0x44d7e0)throw new Error(_0x9481('0x51'));if(_0x44d7e0[_0x9481('0x52')]===_0x9481('0x50')){var _0x3d2250=_0x424b22['get']({'plain':!![]});var _0x3972c1=_0x9481('0x53');return db[_0x9481('0x54')][_0x9481('0x4d')]({'where':{'name':_0x3972c1,'userProfileId':_0x44d7e0[_0x9481('0x55')]},'raw':!![]})['then'](function(_0x4c3048){if(_0x4c3048&&_0x4c3048[_0x9481('0x56')]===0x0){return db[_0x9481('0x2a')][_0x9481('0x4f')]({'name':_0x3d2250['name'],'resourceId':_0x3d2250['id'],'type':'DefaultReports','sectionId':_0x4c3048['id']},{})['then'](function(){return _0x424b22;});}else{return _0x424b22;}})['catch'](function(_0x538507){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x538507);throw _0x538507;});}return _0x424b22;})[_0x9481('0x27')](respondWithResult(_0x13b674,0xc9))[_0x9481('0x4e')](handleError(_0x13b674,null));};exports['update']=function(_0xd8351c,_0x5f210c){if(_0xd8351c[_0x9481('0x57')]['id']){delete _0xd8351c[_0x9481('0x57')]['id'];}return db[_0x9481('0x45')][_0x9481('0x4d')]({'where':{'id':_0xd8351c[_0x9481('0x4b')]['id']}})[_0x9481('0x27')](handleEntityNotFound(_0x5f210c,null))[_0x9481('0x27')](saveUpdates(_0xd8351c['body'],null))[_0x9481('0x27')](respondWithResult(_0x5f210c,null))[_0x9481('0x4e')](handleError(_0x5f210c,null));};exports['destroy']=function(_0x16416a,_0x1240dc){return db[_0x9481('0x45')][_0x9481('0x4d')]({'where':{'id':_0x16416a[_0x9481('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1240dc,null))[_0x9481('0x27')](removeEntity(_0x1240dc,null))[_0x9481('0x4e')](handleError(_0x1240dc,null));};exports[_0x9481('0x58')]=function(_0x3fc0f9,_0x559dd2){var _0x3ac428=0xa;var _0x2927f5=[_0x9481('0x59'),_0x9481('0x5a'),'right_join','cross_join'];var _0x5b4234={'SUM':_0x9481('0x5b'),'COUNT':_0x9481('0x5c'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x9481('0x5d'),'MIN':_0x9481('0x5e'),'AVG':_0x9481('0x5f'),'GROUP_CONCAT':_0x9481('0x60'),'GROUP_CONCAT ASC':_0x9481('0x61'),'GROUP_CONCAT DESC':_0x9481('0x62')};var _0x589b16={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x9481('0x63'),'HOUR':_0x9481('0x64'),'ROUND':_0x9481('0x65'),'UNIX_TIMESTAMP':_0x9481('0x66')};var _0x239676=function(_0x205b96){return!_['includes'](['IS\x20NULL',_0x9481('0x67'),'IS\x20EMPTY',_0x9481('0x68')],_0x205b96);};var _0x59637f=function(_0x9af916){if(!_0x9af916||!_0x9af916[_0x9481('0x69')][_0x9481('0x3a')]){return'';}for(var _0x492464='(',_0x28d331=0x0;_0x28d331<_0x9af916[_0x9481('0x69')]['length'];_0x28d331+=0x1){_0x28d331>0x0&&(_0x492464+='\x20'+_0x9af916['operator']+'\x20');_0x492464+=_0x9af916['rules'][_0x28d331]['group']?_0x59637f(_0x9af916[_0x9481('0x69')][_0x28d331]['group']):_0x9af916[_0x9481('0x69')][_0x28d331][_0x9481('0x6a')]+'\x20'+_0x9af916[_0x9481('0x69')][_0x28d331]['condition']+(_0x239676(_0x9af916[_0x9481('0x69')][_0x28d331]['condition'])?'\x20'+_0x9af916[_0x9481('0x69')][_0x28d331][_0x9481('0x6b')]:'');}return _0x492464+')';};var _0x3c267b={'where':{'id':_0x3fc0f9[_0x9481('0x4b')]['id']}},_0x4f157d,_0x2f20b4,_0x40fed2,_0x4ff016,_0x321972;_0x3c267b=_[_0x9481('0x42')]({},_0x3c267b,_0x3fc0f9[_0x9481('0x44')]);return db[_0x9481('0x45')][_0x9481('0x4d')](_0x3c267b)[_0x9481('0x27')](function(_0x32ebde){if(_0x32ebde){_0x4f157d=_0x32ebde;return _0x32ebde[_0x9481('0x6c')]();}return null;})[_0x9481('0x27')](function(_0x237d9b){if(_0x237d9b){if(!_0x237d9b[_0x9481('0x3a')]){throw new db[(_0x9481('0x6d'))][(_0x9481('0x6e'))](_0x9481('0x6f'),0x193);}_0x2f20b4=_0x237d9b;return db[_0x9481('0x70')][_0x9481('0x48')]({'raw':!![]});}return null;})['then'](function(_0x1e05f8){if(_0x1e05f8){_0x40fed2=_['keyBy'](_0x1e05f8,'id');var _0x47bf37;var _0x1a7892=squel['select']();_0x1a7892['from'](_0x4f157d['table']);for(var _0x1b1967=0x0;_0x1b1967<_0x2f20b4[_0x9481('0x3a')];_0x1b1967+=0x1){_0x47bf37=_0x2f20b4[_0x1b1967][_0x9481('0x71')]?_0x40fed2[_0x2f20b4[_0x1b1967][_0x9481('0x71')]]['metric']:_0x2f20b4[_0x1b1967][_0x9481('0x6a')];_0x47bf37=_0x2f20b4[_0x1b1967][_0x9481('0x72')]?_[_0x9481('0x73')](_0x5b4234[_0x2f20b4[_0x1b1967][_0x9481('0x72')]],'%s',_0x47bf37):_0x47bf37;_0x47bf37=_0x2f20b4[_0x1b1967]['format']?_['replace'](_0x589b16[_0x2f20b4[_0x1b1967][_0x9481('0x74')]],'%s',_0x47bf37):_0x47bf37;if(_0x2f20b4[_0x1b1967][_0x9481('0x75')]){_0x1a7892[_0x9481('0x76')](_0x47bf37);}_0x2f20b4[_0x1b1967][_0x9481('0x77')]&&_0x1a7892[_0x9481('0x3d')](_0x47bf37,_0x2f20b4[_0x1b1967]['orderBy']===_0x9481('0x78')?![]:!![]);_0x1a7892[_0x9481('0x6a')](_0x47bf37,_0x2f20b4[_0x1b1967][_0x9481('0x79')]||_0x47bf37);}if(_0x4f157d[_0x9481('0x7a')]){_0x4f157d[_0x9481('0x7a')]=JSON[_0x9481('0x7b')](_0x4f157d[_0x9481('0x7a')]);for(var _0x42a6d2=0x0;_0x42a6d2<_0x4f157d[_0x9481('0x7a')][_0x9481('0x3a')];_0x42a6d2+=0x1){if(_0x4f157d[_0x9481('0x7a')][_0x42a6d2][_0x9481('0x43')]&&_[_0x9481('0x7c')](_0x2927f5,_0x4f157d[_0x9481('0x7a')][_0x42a6d2][_0x9481('0x43')])&&_0x4f157d['joins'][_0x42a6d2][_0x9481('0x7d')]&&_0x4f157d[_0x9481('0x7a')][_0x42a6d2][_0x9481('0x7e')]&&_0x4f157d[_0x9481('0x7a')][_0x42a6d2][_0x9481('0x7f')]){_0x1a7892[_0x4f157d[_0x9481('0x7a')][_0x42a6d2][_0x9481('0x43')]](_0x4f157d['joins'][_0x42a6d2][_0x9481('0x7e')],null,util[_0x9481('0x74')]('%s.%s\x20=\x20%s.%s',_0x4f157d['table'],_0x4f157d[_0x9481('0x7a')][_0x42a6d2]['parentKey'],_0x4f157d['joins'][_0x42a6d2][_0x9481('0x7e')],_0x4f157d['joins'][_0x42a6d2][_0x9481('0x7f')]));}}}if(_0x4f157d[_0x9481('0x80')]){_0x4f157d[_0x9481('0x80')]=JSON[_0x9481('0x7b')](_0x4f157d['conditions']);_0x1a7892[_0x9481('0x3f')](_0x59637f(_0x4f157d['conditions'][_0x9481('0x76')]));}_0x321972=_0x1a7892[_0x9481('0x81')]();_0x1a7892[_0x9481('0x20')](_0x3ac428);_0x1a7892['offset'](0x0);logger['debug']('Limited\x20Query:',_0x1a7892[_0x9481('0x82')]());return dbH['sequelize']['query'](_0x1a7892[_0x9481('0x82')](),{'type':dbH[_0x9481('0x83')][_0x9481('0x84')]['SELECT']});}})[_0x9481('0x27')](respondWithResult(_0x559dd2,null))[_0x9481('0x4e')](handleError(_0x559dd2,null));};function runReport(_0x545457,_0x226932,_0x3c8241){var _0x1ea93a=_0x226932[_0x9481('0x2e')];var _0x5f4be2=0xa;var _0x2e585d=['join',_0x9481('0x5a'),_0x9481('0x85'),'cross_join'];var _0x1c82a1={'SUM':_0x9481('0x5b'),'COUNT':_0x9481('0x5c'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0x9481('0x5e'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x9481('0x60'),'GROUP_CONCAT ASC':_0x9481('0x61'),'GROUP_CONCAT DESC':_0x9481('0x62')};var _0x55b428={'SEC_TO_TIME':_0x9481('0x86'),'DATE':_0x9481('0x63'),'HOUR':_0x9481('0x64'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x9481('0x66')};var _0x31e097=function(_0x339a30){return!_[_0x9481('0x7c')]([_0x9481('0x87'),_0x9481('0x67'),_0x9481('0x88'),_0x9481('0x68')],_0x339a30);};var _0x22e787=function(_0x31b70b){if(!_0x31b70b||!_0x31b70b['rules'][_0x9481('0x3a')]){return'';}for(var _0x5c430e='(',_0x4f55b5=0x0;_0x4f55b5<_0x31b70b['rules'][_0x9481('0x3a')];_0x4f55b5+=0x1){_0x4f55b5>0x0&&(_0x5c430e+='\x20'+_0x31b70b[_0x9481('0x89')]+'\x20');_0x5c430e+=_0x31b70b[_0x9481('0x69')][_0x4f55b5][_0x9481('0x76')]?_0x22e787(_0x31b70b[_0x9481('0x69')][_0x4f55b5]['group']):_0x31b70b[_0x9481('0x69')][_0x4f55b5][_0x9481('0x6a')]+'\x20'+_0x31b70b[_0x9481('0x69')][_0x4f55b5][_0x9481('0x8a')]+(_0x31e097(_0x31b70b[_0x9481('0x69')][_0x4f55b5][_0x9481('0x8a')])?'\x20'+_0x31b70b[_0x9481('0x69')][_0x4f55b5][_0x9481('0x6b')]:'');}return _0x5c430e+')';};var _0x28d924={'where':{'id':_0x545457['id']}},_0x426d56,_0x5808c8,_0x27be69,_0x1d49ba,_0x458a6f;_0x28d924=_[_0x9481('0x42')]({},_0x28d924,_0x3c8241);return db[_0x9481('0x45')][_0x9481('0x4d')](_0x28d924)[_0x9481('0x27')](function(_0x1173e9){if(_0x1173e9){_0x426d56=_0x1173e9;return _0x1173e9[_0x9481('0x6c')]();}return null;})[_0x9481('0x27')](function(_0x5557d7){if(_0x5557d7){if(!_0x5557d7[_0x9481('0x3a')]){throw new db[(_0x9481('0x6d'))][(_0x9481('0x6e'))](_0x9481('0x6f'),0x193);}_0x5808c8=_0x5557d7;return db[_0x9481('0x70')][_0x9481('0x48')]({'raw':!![]});}return null;})[_0x9481('0x27')](function(_0x3ae3e2){if(_0x3ae3e2){_0x27be69=_[_0x9481('0x8b')](_0x3ae3e2,'id');var _0x538fe0;var _0x44e2c2=squel['select']();_0x44e2c2['from'](_0x426d56[_0x9481('0x8c')]);for(var _0x382455=0x0;_0x382455<_0x5808c8[_0x9481('0x3a')];_0x382455+=0x1){_0x538fe0=_0x5808c8[_0x382455][_0x9481('0x71')]?_0x27be69[_0x5808c8[_0x382455][_0x9481('0x71')]][_0x9481('0x8d')]:_0x5808c8[_0x382455]['field'];_0x538fe0=_0x5808c8[_0x382455][_0x9481('0x72')]?_['replace'](_0x1c82a1[_0x5808c8[_0x382455][_0x9481('0x72')]],'%s',_0x538fe0):_0x538fe0;_0x538fe0=_0x5808c8[_0x382455][_0x9481('0x74')]?_[_0x9481('0x73')](_0x55b428[_0x5808c8[_0x382455]['format']],'%s',_0x538fe0):_0x538fe0;if(_0x5808c8[_0x382455]['groupBy']){_0x44e2c2[_0x9481('0x76')](_0x538fe0);}_0x5808c8[_0x382455][_0x9481('0x77')]&&_0x44e2c2[_0x9481('0x3d')](_0x538fe0,_0x5808c8[_0x382455][_0x9481('0x77')]===_0x9481('0x78')?![]:!![]);_0x44e2c2[_0x9481('0x6a')](_0x538fe0,_0x5808c8[_0x382455][_0x9481('0x79')]||_0x538fe0);}if(_0x426d56[_0x9481('0x7a')]){_0x426d56[_0x9481('0x7a')]=JSON['parse'](_0x426d56[_0x9481('0x7a')]);for(var _0xd64114=0x0;_0xd64114<_0x426d56['joins'][_0x9481('0x3a')];_0xd64114+=0x1){if(_0x426d56['joins'][_0xd64114][_0x9481('0x43')]&&_[_0x9481('0x7c')](_0x2e585d,_0x426d56['joins'][_0xd64114][_0x9481('0x43')])&&_0x426d56[_0x9481('0x7a')][_0xd64114][_0x9481('0x7d')]&&_0x426d56['joins'][_0xd64114][_0x9481('0x7e')]&&_0x426d56[_0x9481('0x7a')][_0xd64114]['foreignKey']){_0x44e2c2[_0x426d56[_0x9481('0x7a')][_0xd64114]['type']](_0x426d56[_0x9481('0x7a')][_0xd64114][_0x9481('0x7e')],null,util[_0x9481('0x74')]('%s.%s\x20=\x20%s.%s',_0x426d56['table'],_0x426d56[_0x9481('0x7a')][_0xd64114][_0x9481('0x7d')],_0x426d56[_0x9481('0x7a')][_0xd64114][_0x9481('0x7e')],_0x426d56[_0x9481('0x7a')][_0xd64114][_0x9481('0x7f')]));}}}if(_0x426d56['conditions']){_0x426d56[_0x9481('0x80')]=JSON[_0x9481('0x7b')](_0x426d56[_0x9481('0x80')]);_0x44e2c2[_0x9481('0x3f')](_0x22e787(_0x426d56[_0x9481('0x80')][_0x9481('0x76')]));}_0x458a6f=_0x44e2c2[_0x9481('0x81')]();_0x44e2c2['limit'](_0x5f4be2);_0x44e2c2[_0x9481('0x1e')](0x0);return;}})[_0x9481('0x27')](function(){if(_0x226932[_0x9481('0x8e')]===_0x9481('0x8f')){return null;}var _0x4e5a8d=_[_0x9481('0x42')](_0x226932,{'name':_0x226932[_0x9481('0x90')]||_0x226932[_0x9481('0x2e')]||_0x426d56[_0x9481('0x2e')],'basename':_0x1ea93a,'savename':util['format'](_0x9481('0x91'),_0x226932[_0x9481('0x2e')]||_0x426d56[_0x9481('0x2e')],require(_0x9481('0x92'))[_0x9481('0x93')](0x4),_0x226932[_0x9481('0x8e')]||_0x9481('0x94')),'reportId':_0x426d56['id'],'reportType':_0x9481('0x95')});return db[_0x9481('0x96')][_0x9481('0x4f')](_0x4e5a8d,{'raw':!![]});})[_0x9481('0x27')](function(_0x5930d6){if(_0x426d56[_0x9481('0x8c')]==='cdr'){_0x458a6f[_0x9481('0x3f')](_0x426d56[_0x9481('0x8c')]+_0x9481('0x97'),_0x226932[_0x9481('0x98')],_0x226932[_0x9481('0x99')]);}else{_0x458a6f['where'](_0x426d56[_0x9481('0x8c')]+_0x9481('0x9a'),_0x226932[_0x9481('0x98')],_0x226932[_0x9481('0x99')]);}if(_0x5930d6){logger[_0x9481('0x9b')](_0x9481('0x9c'),_0x458a6f['toString']());require(_0x9481('0x9d'))[_0x9481('0x9e')](path[_0x9481('0x59')](__dirname,_0x9481('0x9f'),_0x5930d6[_0x9481('0x8e')]),[_0x5930d6['id'],_0x458a6f[_0x9481('0x82')](),path[_0x9481('0x59')](__dirname,_0x9481('0xa0'),_0x5930d6[_0x9481('0xa1')]),_0x1ea93a]);return _0x5930d6;}else{var _0x26a666=squel[_0x9481('0xa2')]();_0x26a666[_0x9481('0xa3')]('('+_0x458a6f['toString']()+')',_0x9481('0xa4'));_0x26a666[_0x9481('0x6a')](_0x9481('0xa5'),_0x9481('0x21'));_0x458a6f[_0x9481('0x20')](_0x226932[_0x9481('0x20')]||_0x5f4be2);_0x458a6f[_0x9481('0x1e')](_0x226932[_0x9481('0x1e')]||0x0);return dbH[_0x9481('0x83')][_0x9481('0x35')](_0x26a666[_0x9481('0x82')](),{'type':dbH[_0x9481('0x83')][_0x9481('0x84')][_0x9481('0xa6')]})[_0x9481('0x27')](function(_0xcf83d2){if(!_0xcf83d2[_0x9481('0x3a')]){_0x1d49ba=0x0;}else{_0x1d49ba=_0xcf83d2[0x0][_0x9481('0x21')]||0x0;}return dbH[_0x9481('0x83')][_0x9481('0x35')](_0x458a6f['toString'](),{'type':dbH[_0x9481('0x83')][_0x9481('0x84')][_0x9481('0xa6')]});})[_0x9481('0x27')](function(_0x4553fc){return{'rows':_0x4553fc||[],'count':_0x1d49ba};});}});}exports[_0x9481('0xa7')]=function(_0x55c4ab,_0x57928a){return runReport(_0x55c4ab[_0x9481('0x4b')],_0x55c4ab[_0x9481('0x35')],_0x55c4ab[_0x9481('0x44')])[_0x9481('0x27')](respondWithResult(_0x57928a,null))['catch'](handleError(_0x57928a,null));};exports['runReport']=runReport;exports['query']=function(_0x52b980,_0x5792b1){var _0x3a199b=0xa;var _0x4b779b=[_0x9481('0x59'),_0x9481('0x5a'),_0x9481('0x85'),_0x9481('0xa8')];var _0x55a65f={'SUM':_0x9481('0x5b'),'COUNT':_0x9481('0x5c'),'COUNT DISTINCT':_0x9481('0xa9'),'MAX':_0x9481('0x5d'),'MIN':_0x9481('0x5e'),'AVG':_0x9481('0x5f'),'GROUP_CONCAT':_0x9481('0x60'),'GROUP_CONCAT ASC':_0x9481('0x61'),'GROUP_CONCAT DESC':_0x9481('0x62')};var _0x583490={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x9481('0x63'),'HOUR':'HOUR(%s)','ROUND':_0x9481('0x65'),'UNIX_TIMESTAMP':_0x9481('0x66')};var _0x1e40fe=function(_0x26c87b){return!_[_0x9481('0x7c')](['IS\x20NULL',_0x9481('0x67'),_0x9481('0x88'),'IS\x20NOT\x20EMPTY'],_0x26c87b);};var _0x4ea411=function(_0x1cdca0){if(!_0x1cdca0||!_0x1cdca0[_0x9481('0x69')][_0x9481('0x3a')]){return'';}for(var _0x15c53f='(',_0x7ee854=0x0;_0x7ee854<_0x1cdca0[_0x9481('0x69')][_0x9481('0x3a')];_0x7ee854+=0x1){_0x7ee854>0x0&&(_0x15c53f+='\x20'+_0x1cdca0[_0x9481('0x89')]+'\x20');_0x15c53f+=_0x1cdca0[_0x9481('0x69')][_0x7ee854][_0x9481('0x76')]?_0x4ea411(_0x1cdca0['rules'][_0x7ee854][_0x9481('0x76')]):_0x1cdca0[_0x9481('0x69')][_0x7ee854][_0x9481('0x6a')]+'\x20'+_0x1cdca0[_0x9481('0x69')][_0x7ee854][_0x9481('0x8a')]+(_0x1e40fe(_0x1cdca0['rules'][_0x7ee854][_0x9481('0x8a')])?'\x20'+_0x1cdca0[_0x9481('0x69')][_0x7ee854]['value']:'');}return _0x15c53f+')';};var _0x49a6db={'where':{'id':_0x52b980['params']['id']}},_0x224b16,_0x83543f,_0x58c043,_0x97a67a,_0xe157e4;_0x49a6db=_[_0x9481('0x42')]({},_0x49a6db,_0x52b980[_0x9481('0x44')]);return db[_0x9481('0x45')][_0x9481('0x4d')](_0x49a6db)['then'](function(_0x1a1058){if(_0x1a1058){_0x224b16=_0x1a1058;return _0x1a1058['getFields']();}return null;})[_0x9481('0x27')](function(_0x206661){if(_0x206661){if(!_0x206661[_0x9481('0x3a')]){throw new db[(_0x9481('0x6d'))][(_0x9481('0x6e'))](_0x9481('0x6f'),0x193);}_0x83543f=_0x206661;return db['AnalyticMetric'][_0x9481('0x48')]({'raw':!![]});}return null;})[_0x9481('0x27')](function(_0x40cdf9){if(_0x40cdf9){_0x58c043=_['keyBy'](_0x40cdf9,'id');var _0x5467fe;var _0x440d88=squel['select']();_0x440d88[_0x9481('0xa3')](_0x224b16['table']);for(var _0x2a0367=0x0;_0x2a0367<_0x83543f[_0x9481('0x3a')];_0x2a0367+=0x1){_0x5467fe=_0x83543f[_0x2a0367]['MetricId']?_0x58c043[_0x83543f[_0x2a0367][_0x9481('0x71')]][_0x9481('0x8d')]:_0x83543f[_0x2a0367][_0x9481('0x6a')];_0x5467fe=_0x83543f[_0x2a0367]['function']?_[_0x9481('0x73')](_0x55a65f[_0x83543f[_0x2a0367][_0x9481('0x72')]],'%s',_0x5467fe):_0x5467fe;_0x5467fe=_0x83543f[_0x2a0367][_0x9481('0x74')]?_[_0x9481('0x73')](_0x583490[_0x83543f[_0x2a0367][_0x9481('0x74')]],'%s',_0x5467fe):_0x5467fe;if(_0x83543f[_0x2a0367][_0x9481('0x75')]){_0x440d88[_0x9481('0x76')](_0x5467fe);}_0x83543f[_0x2a0367]['orderBy']&&_0x440d88[_0x9481('0x3d')](_0x5467fe,_0x83543f[_0x2a0367][_0x9481('0x77')]===_0x9481('0x78')?![]:!![]);_0x440d88[_0x9481('0x6a')](_0x5467fe,_0x83543f[_0x2a0367][_0x9481('0x79')]||_0x5467fe);}if(_0x224b16['joins']){_0x224b16[_0x9481('0x7a')]=JSON[_0x9481('0x7b')](_0x224b16[_0x9481('0x7a')]);for(var _0x527ef6=0x0;_0x527ef6<_0x224b16['joins'][_0x9481('0x3a')];_0x527ef6+=0x1){if(_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x43')]&&_[_0x9481('0x7c')](_0x4b779b,_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x43')])&&_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x7d')]&&_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x7e')]&&_0x224b16['joins'][_0x527ef6][_0x9481('0x7f')]){_0x440d88[_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x43')]](_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x7e')],null,util[_0x9481('0x74')]('%s.%s\x20=\x20%s.%s',_0x224b16[_0x9481('0x8c')],_0x224b16[_0x9481('0x7a')][_0x527ef6]['parentKey'],_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x7e')],_0x224b16[_0x9481('0x7a')][_0x527ef6]['foreignKey']));}}}if(_0x224b16[_0x9481('0x80')]){_0x224b16[_0x9481('0x80')]=JSON[_0x9481('0x7b')](_0x224b16[_0x9481('0x80')]);_0x440d88['where'](_0x4ea411(_0x224b16[_0x9481('0x80')][_0x9481('0x76')]));}_0xe157e4=_0x440d88[_0x9481('0x81')]();_0x440d88[_0x9481('0x20')](_0x3a199b);_0x440d88['offset'](0x0);logger[_0x9481('0xaa')](_0x9481('0xab'),_0x440d88[_0x9481('0x82')]());return dbH[_0x9481('0x83')][_0x9481('0x35')](_0x440d88[_0x9481('0x82')](),{'type':dbH[_0x9481('0x83')][_0x9481('0x84')][_0x9481('0xa6')]});}})[_0x9481('0x27')](function(){return{'sql':_0xe157e4['toString']()};})[_0x9481('0x27')](respondWithResult(_0x5792b1,null))[_0x9481('0x4e')](handleError(_0x5792b1,null));};
\ No newline at end of file
index 2190d4c..3398db2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ac8=['../../config/logger','moment','request-promise','path','./analyticDefaultReport.attributes','AnalyticDefaultReport','analytics_default_reports','lodash'];(function(_0x55da67,_0x318930){var _0x13af60=function(_0x1b882a){while(--_0x1b882a){_0x55da67['push'](_0x55da67['shift']());}};_0x13af60(++_0x318930);}(_0x9ac8,0x7f));var _0x89ac=function(_0x31ba51,_0x51ac52){_0x31ba51=_0x31ba51-0x0;var _0x4c9225=_0x9ac8[_0x31ba51];return _0x4c9225;};'use strict';var _=require(_0x89ac('0x0'));var util=require('util');var logger=require(_0x89ac('0x1'))('api');var moment=require(_0x89ac('0x2'));var BPromise=require('bluebird');var rp=require(_0x89ac('0x3'));var fs=require('fs');var path=require(_0x89ac('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x89ac('0x5'));module['exports']=function(_0x11c2de,_0x40c352){return _0x11c2de['define'](_0x89ac('0x6'),attributes,{'tableName':_0x89ac('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbaa4=['../../config/environment','./analyticDefaultReport.attributes','exports','define','AnalyticDefaultReport','analytics_default_reports','lodash','../../config/logger','api','request-promise','path','rimraf'];(function(_0x453b0e,_0x42fd52){var _0x1fc9b8=function(_0x5e8a28){while(--_0x5e8a28){_0x453b0e['push'](_0x453b0e['shift']());}};_0x1fc9b8(++_0x42fd52);}(_0xbaa4,0x1ce));var _0x4baa=function(_0x5e485c,_0x39cd4c){_0x5e485c=_0x5e485c-0x0;var _0x1ea823=_0xbaa4[_0x5e485c];return _0x1ea823;};'use strict';var _=require(_0x4baa('0x0'));var util=require('util');var logger=require(_0x4baa('0x1'))(_0x4baa('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4baa('0x3'));var fs=require('fs');var path=require(_0x4baa('0x4'));var rimraf=require(_0x4baa('0x5'));var config=require(_0x4baa('0x6'));var attributes=require(_0x4baa('0x7'));module[_0x4baa('0x8')]=function(_0x103a0f,_0x47b892){return _0x103a0f[_0x4baa('0x9')](_0x4baa('0xa'),attributes,{'tableName':_0x4baa('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f89eb86..3e9bef0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['catch','lodash','util','moment','../../mysqldb','rpc','http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0x3057dc,_0x587284){var _0x145878=function(_0x463e18){while(--_0x463e18){_0x3057dc['push'](_0x3057dc['shift']());}};_0x145878(++_0x587284);}(_0x53ec,0x1b1));var _0xc53e=function(_0x428ec2,_0x150404){_0x428ec2=_0x428ec2-0x0;var _0x1654d6=_0x53ec[_0x428ec2];return _0x1654d6;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var moment=require(_0xc53e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc53e('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc53e('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xc53e('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x453f05,_0x5860df,_0x409207){return new BPromise(function(_0x433aea,_0x174622){return client[_0xc53e('0x6')](_0x453f05,_0x409207)[_0xc53e('0x7')](function(_0x5376b3){logger[_0xc53e('0x8')](_0xc53e('0x9'),_0x5860df,_0xc53e('0xa'));logger[_0xc53e('0xb')](_0xc53e('0xc'),_0x5860df,'request\x20sent',JSON['stringify'](_0x5376b3));if(_0x5376b3['error']){if(_0x5376b3[_0xc53e('0xd')][_0xc53e('0xe')]===0x1f4){logger['error']('AnalyticDefaultReport,\x20%s,\x20%s',_0x5860df,_0x5376b3['error'][_0xc53e('0xf')]);return _0x174622(_0x5376b3[_0xc53e('0xd')][_0xc53e('0xf')]);}logger[_0xc53e('0xd')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x5860df,_0x5376b3['error'][_0xc53e('0xf')]);return _0x433aea(_0x5376b3[_0xc53e('0xd')]['message']);}else{logger[_0xc53e('0x8')](_0xc53e('0x9'),_0x5860df,_0xc53e('0xa'));_0x433aea(_0x5376b3[_0xc53e('0x10')][_0xc53e('0xf')]);}})[_0xc53e('0x11')](function(_0x4c83d7){logger['error'](_0xc53e('0x9'),_0x5860df,_0x4c83d7);_0x174622(_0x4c83d7);});});}
\ No newline at end of file
+var _0x3f22=['then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request'];(function(_0x5ed0f0,_0x2b1700){var _0x46dac5=function(_0x260c94){while(--_0x260c94){_0x5ed0f0['push'](_0x5ed0f0['shift']());}};_0x46dac5(++_0x2b1700);}(_0x3f22,0x152));var _0x23f2=function(_0x24f772,_0x3f57d1){_0x24f772=_0x24f772-0x0;var _0x151760=_0x3f22[_0x24f772];return _0x151760;};'use strict';var _=require(_0x23f2('0x0'));var util=require(_0x23f2('0x1'));var moment=require(_0x23f2('0x2'));var BPromise=require(_0x23f2('0x3'));var rs=require(_0x23f2('0x4'));var fs=require('fs');var Redis=require(_0x23f2('0x5'));var db=require(_0x23f2('0x6'))['db'];var utils=require(_0x23f2('0x7'));var logger=require(_0x23f2('0x8'))('rpc');var config=require(_0x23f2('0x9'));var jayson=require(_0x23f2('0xa'));var client=jayson[_0x23f2('0xb')][_0x23f2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x12bddd,_0x3f8eff,_0x1225ce){return new BPromise(function(_0x3327b1,_0x3b43cc){return client[_0x23f2('0xd')](_0x12bddd,_0x1225ce)[_0x23f2('0xe')](function(_0x42c73f){logger[_0x23f2('0xf')](_0x23f2('0x10'),_0x3f8eff,_0x23f2('0x11'));logger['debug']('AnalyticDefaultReport,\x20%s,\x20%s,\x20%s',_0x3f8eff,_0x23f2('0x11'),JSON['stringify'](_0x42c73f));if(_0x42c73f['error']){if(_0x42c73f[_0x23f2('0x12')][_0x23f2('0x13')]===0x1f4){logger[_0x23f2('0x12')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x3f8eff,_0x42c73f[_0x23f2('0x12')][_0x23f2('0x14')]);return _0x3b43cc(_0x42c73f[_0x23f2('0x12')][_0x23f2('0x14')]);}logger[_0x23f2('0x12')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x3f8eff,_0x42c73f[_0x23f2('0x12')][_0x23f2('0x14')]);return _0x3327b1(_0x42c73f[_0x23f2('0x12')][_0x23f2('0x14')]);}else{logger[_0x23f2('0xf')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x3f8eff,_0x23f2('0x11'));_0x3327b1(_0x42c73f['result']['message']);}})[_0x23f2('0x15')](function(_0x18c2f6){logger[_0x23f2('0x12')](_0x23f2('0x10'),_0x3f8eff,_0x18c2f6);_0x3b43cc(_0x18c2f6);});});}
\ No newline at end of file
index 26d5f73..baeac6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3383=['index','/:id/preview','/:id/query','post','put','update','delete','/:id','destroy','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated'];(function(_0xd02def,_0x144f25){var _0x2e8374=function(_0x5ceb35){while(--_0x5ceb35){_0xd02def['push'](_0xd02def['shift']());}};_0x2e8374(++_0x144f25);}(_0x3383,0x1a7));var _0x3338=function(_0x466476,_0x2c8216){_0x466476=_0x466476-0x0;var _0x42d93f=_0x3383[_0x466476];return _0x42d93f;};'use strict';var multer=require(_0x3338('0x0'));var util=require(_0x3338('0x1'));var path=require(_0x3338('0x2'));var timeout=require(_0x3338('0x3'));var express=require('express');var router=express[_0x3338('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x3338('0x5'));var interaction=require(_0x3338('0x6'));var config=require('../../config/environment');var controller=require('./analyticDefaultReport.controller');router[_0x3338('0x7')]('/',auth[_0x3338('0x8')](),controller[_0x3338('0x9')]);router[_0x3338('0x7')]('/:id',auth[_0x3338('0x8')](),controller['show']);router[_0x3338('0x7')](_0x3338('0xa'),auth[_0x3338('0x8')](),controller['preview']);router['get']('/:id/run',auth['isAuthenticated'](),controller['run']);router[_0x3338('0x7')](_0x3338('0xb'),auth['isAuthenticated'](),controller['query']);router[_0x3338('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0x3338('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x3338('0xe')]);router[_0x3338('0xf')](_0x3338('0x10'),auth[_0x3338('0x8')](),controller[_0x3338('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x6183=['isAuthenticated','index','get','show','/:id/preview','preview','/:id/run','run','/:id/query','query','post','create','put','/:id','update','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller'];(function(_0x1e91eb,_0x5829a3){var _0x2af75a=function(_0x1815d1){while(--_0x1815d1){_0x1e91eb['push'](_0x1e91eb['shift']());}};_0x2af75a(++_0x5829a3);}(_0x6183,0xad));var _0x3618=function(_0x5cc8b9,_0x20e3c3){_0x5cc8b9=_0x5cc8b9-0x0;var _0x58892e=_0x6183[_0x5cc8b9];return _0x58892e;};'use strict';var multer=require(_0x3618('0x0'));var util=require(_0x3618('0x1'));var path=require(_0x3618('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x3618('0x3')]();var fs_extra=require(_0x3618('0x4'));var auth=require(_0x3618('0x5'));var interaction=require(_0x3618('0x6'));var config=require(_0x3618('0x7'));var controller=require(_0x3618('0x8'));router['get']('/',auth[_0x3618('0x9')](),controller[_0x3618('0xa')]);router[_0x3618('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x3618('0xc')]);router[_0x3618('0xb')](_0x3618('0xd'),auth[_0x3618('0x9')](),controller[_0x3618('0xe')]);router[_0x3618('0xb')](_0x3618('0xf'),auth[_0x3618('0x9')](),controller[_0x3618('0x10')]);router[_0x3618('0xb')](_0x3618('0x11'),auth[_0x3618('0x9')](),controller[_0x3618('0x12')]);router[_0x3618('0x13')]('/',auth['isAuthenticated'](),controller[_0x3618('0x14')]);router[_0x3618('0x15')](_0x3618('0x16'),auth[_0x3618('0x9')](),controller[_0x3618('0x17')]);router['delete'](_0x3618('0x16'),auth[_0x3618('0x9')](),controller[_0x3618('0x18')]);module[_0x3618('0x19')]=router;
\ No newline at end of file
index e1df3d7..ef4f028 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72c2=['UNSIGNED','moment','STRING','csv','xlsx','DATE','Loading','ENUM','manual','scheduled','INTEGER'];(function(_0x5fc9df,_0x120aca){var _0x3a537d=function(_0x4b2ffb){while(--_0x4b2ffb){_0x5fc9df['push'](_0x5fc9df['shift']());}};_0x3a537d(++_0x120aca);}(_0x72c2,0x12a));var _0x272c=function(_0x151ae9,_0x121f36){_0x151ae9=_0x151ae9-0x0;var _0xce4d51=_0x72c2[_0x151ae9];return _0xce4d51;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x272c('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'basename':{'type':Sequelize[_0x272c('0x1')],'allowNull':![]},'output':{'type':Sequelize['ENUM'](_0x272c('0x2'),'pdf',_0x272c('0x3')),'allowNull':![],'defaultValue':_0x272c('0x2')},'savename':{'type':Sequelize[_0x272c('0x1')],'allowNull':![]},'startDate':{'type':Sequelize[_0x272c('0x4')]},'endDate':{'type':Sequelize['DATE']},'status':{'type':Sequelize[_0x272c('0x1')],'defaultValue':_0x272c('0x5')},'type':{'type':Sequelize[_0x272c('0x6')](_0x272c('0x7'),_0x272c('0x8')),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0x272c('0x9')](0xb)[_0x272c('0xa')]},'reportType':{'type':Sequelize[_0x272c('0x1')]}};
\ No newline at end of file
+var _0x3073=['scheduled','manual','UNSIGNED','sequelize','exports','STRING','ENUM','csv','xlsx','DATE','Loading'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x3073,0x142));var _0x3307=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0x3073[_0x37c22c];return _0x119d79;};'use strict';var Sequelize=require(_0x3307('0x0'));var moment=require('moment');module[_0x3307('0x1')]={'name':{'type':Sequelize[_0x3307('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x3307('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x3307('0x3')](_0x3307('0x4'),'pdf',_0x3307('0x5')),'allowNull':![],'defaultValue':_0x3307('0x4')},'savename':{'type':Sequelize[_0x3307('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x3307('0x6')]},'endDate':{'type':Sequelize[_0x3307('0x6')]},'status':{'type':Sequelize[_0x3307('0x2')],'defaultValue':_0x3307('0x7')},'type':{'type':Sequelize[_0x3307('0x3')]('manual',_0x3307('0x8')),'allowNull':![],'defaultValue':_0x3307('0x9')},'reportId':{'type':Sequelize['INTEGER'](0xb)[_0x3307('0xa')]},'reportType':{'type':Sequelize[_0x3307('0x2')]}};
\ No newline at end of file
index fdc3047..d4d8259 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa627=['savename','output','existsSync','join','root','server/files/reports','Sequelize','ValidationError','exists','format','%s.%s','eml-format','rimraf','moment','mustache','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','get','ExtractedReports','UserProfileResource','stack','name','send','index','map','AnalyticExtractedReport','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','keys','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','download','basename'];(function(_0x35f7d1,_0x39d318){var _0x53ac5f=function(_0x30b171){while(--_0x30b171){_0x35f7d1['push'](_0x35f7d1['shift']());}};_0x53ac5f(++_0x39d318);}(_0xa627,0x12b));var _0x7a62=function(_0x351ac6,_0x233039){_0x351ac6=_0x351ac6-0x0;var _0x33905f=_0xa627[_0x351ac6];return _0x33905f;};'use strict';var emlformat=require(_0x7a62('0x0'));var rimraf=require(_0x7a62('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7a62('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x7a62('0x3'));var util=require(_0x7a62('0x4'));var path=require('path');var sox=require('sox');var csv=require(_0x7a62('0x5'));var ejs=require(_0x7a62('0x6'));var fs=require('fs');var fs_extra=require(_0x7a62('0x7'));var _=require(_0x7a62('0x8'));var squel=require(_0x7a62('0x9'));var crypto=require('crypto');var jsforce=require(_0x7a62('0xa'));var deskjs=require(_0x7a62('0xb'));var toCsv=require(_0x7a62('0x5'));var querystring=require(_0x7a62('0xc'));var Papa=require(_0x7a62('0xd'));var Redis=require(_0x7a62('0xe'));var authService=require(_0x7a62('0xf'));var qs=require(_0x7a62('0x10'));var as=require(_0x7a62('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7a62('0x12'))(_0x7a62('0x13'));var utils=require(_0x7a62('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x7a62('0x15'))['db'];function respondWithStatusCode(_0x509e76,_0x375216){_0x375216=_0x375216||0xcc;return function(_0x23e9b6){if(_0x23e9b6){return _0x509e76[_0x7a62('0x16')](_0x375216);}return _0x509e76[_0x7a62('0x17')](_0x375216)[_0x7a62('0x18')]();};}function respondWithResult(_0xb57a8d,_0x1095e2){_0x1095e2=_0x1095e2||0xc8;return function(_0x33fb9a){if(_0x33fb9a){return _0xb57a8d[_0x7a62('0x17')](_0x1095e2)['json'](_0x33fb9a);}};}function respondWithFilteredResult(_0x222312,_0x352e4e){return function(_0x49b28b){if(_0x49b28b){var _0x31cd5f=typeof _0x352e4e[_0x7a62('0x19')]===_0x7a62('0x1a')&&typeof _0x352e4e['limit']==='undefined';var _0x2ce369=_0x49b28b[_0x7a62('0x1b')];var _0x2cfddb=_0x31cd5f?0x0:_0x352e4e['offset'];var _0x43225b=_0x31cd5f?_0x49b28b[_0x7a62('0x1b')]:_0x352e4e['offset']+_0x352e4e[_0x7a62('0x1c')];var _0x322268;if(_0x43225b>=_0x2ce369){_0x43225b=_0x2ce369;_0x322268=0xc8;}else{_0x322268=0xce;}_0x222312[_0x7a62('0x17')](_0x322268);return _0x222312[_0x7a62('0x1d')](_0x7a62('0x1e'),_0x2cfddb+'-'+_0x43225b+'/'+_0x2ce369)[_0x7a62('0x1f')](_0x49b28b);}return null;};}function patchUpdates(_0x195ac2){return function(_0x1329e7){try{jsonpatch[_0x7a62('0x20')](_0x1329e7,_0x195ac2,!![]);}catch(_0x26d73e){return BPromise[_0x7a62('0x21')](_0x26d73e);}return _0x1329e7[_0x7a62('0x22')]();};}function saveUpdates(_0x5544ae,_0x4eff01){return function(_0x3f9f8d){if(_0x3f9f8d){return _0x3f9f8d[_0x7a62('0x23')](_0x5544ae)[_0x7a62('0x24')](function(_0x24730d){return _0x24730d;});}return null;};}function removeEntity(_0xdadd4,_0x1af485){return function(_0x5f27c6){if(_0x5f27c6){return _0x5f27c6[_0x7a62('0x25')]()[_0x7a62('0x24')](function(){var _0x312ce7=_0x5f27c6[_0x7a62('0x26')]({'plain':!![]});var _0xe87d37=_0x7a62('0x27');return db[_0x7a62('0x28')][_0x7a62('0x25')]({'where':{'type':_0xe87d37,'resourceId':_0x312ce7['id']}})['then'](function(){return _0x5f27c6;});})['then'](function(){_0xdadd4[_0x7a62('0x17')](0xcc)[_0x7a62('0x18')]();});}};}function handleEntityNotFound(_0x35be24,_0x1bbb12){return function(_0xa3f42d){if(!_0xa3f42d){_0x35be24['sendStatus'](0x194);}return _0xa3f42d;};}function handleError(_0x3b3dab,_0x335ac3){_0x335ac3=_0x335ac3||0x1f4;return function(_0x4eeebb){logger['error'](_0x4eeebb[_0x7a62('0x29')]);if(_0x4eeebb['name']){delete _0x4eeebb[_0x7a62('0x2a')];}_0x3b3dab['status'](_0x335ac3)[_0x7a62('0x2b')](_0x4eeebb);};}exports[_0x7a62('0x2c')]=function(_0x42e965,_0x52ac21){var _0x1cffa8={},_0x37295a={},_0x25081a={'count':0x0,'rows':[]};var _0x58ee17=_[_0x7a62('0x2d')](db[_0x7a62('0x2e')]['rawAttributes'],function(_0x142c4c){return{'name':_0x142c4c['fieldName'],'type':_0x142c4c[_0x7a62('0x2f')][_0x7a62('0x30')]};});_0x37295a['model']=_[_0x7a62('0x2d')](_0x58ee17,_0x7a62('0x2a'));_0x37295a[_0x7a62('0x31')]=_['keys'](_0x42e965[_0x7a62('0x31')]);_0x37295a[_0x7a62('0x32')]=_[_0x7a62('0x33')](_0x37295a[_0x7a62('0x34')],_0x37295a['query']);_0x1cffa8[_0x7a62('0x35')]=_['intersection'](_0x37295a['model'],qs['fields'](_0x42e965[_0x7a62('0x31')][_0x7a62('0x36')]));_0x1cffa8[_0x7a62('0x35')]=_0x1cffa8[_0x7a62('0x35')]['length']?_0x1cffa8[_0x7a62('0x35')]:_0x37295a[_0x7a62('0x34')];if(!_0x42e965['query'][_0x7a62('0x37')](_0x7a62('0x38'))){_0x1cffa8[_0x7a62('0x1c')]=qs[_0x7a62('0x1c')](_0x42e965[_0x7a62('0x31')][_0x7a62('0x1c')]);_0x1cffa8['offset']=qs['offset'](_0x42e965['query'][_0x7a62('0x19')]);}_0x1cffa8[_0x7a62('0x39')]=qs[_0x7a62('0x3a')](_0x42e965[_0x7a62('0x31')]['sort']);_0x1cffa8[_0x7a62('0x3b')]=qs[_0x7a62('0x32')](_['pick'](_0x42e965[_0x7a62('0x31')],_0x37295a[_0x7a62('0x32')]),_0x58ee17);if(_0x42e965[_0x7a62('0x31')][_0x7a62('0x3c')]){_0x1cffa8['where']=_[_0x7a62('0x3d')](_0x1cffa8[_0x7a62('0x3b')],{'$or':_[_0x7a62('0x2d')](_0x58ee17,function(_0x41f2fb){if(_0x41f2fb[_0x7a62('0x2f')]!==_0x7a62('0x3e')){var _0x285fa={};_0x285fa[_0x41f2fb[_0x7a62('0x2a')]]={'$like':'%'+_0x42e965[_0x7a62('0x31')][_0x7a62('0x3c')]+'%'};return _0x285fa;}})});}_0x1cffa8=_[_0x7a62('0x3d')]({},_0x1cffa8,_0x42e965[_0x7a62('0x3f')]);var _0x579a77={'where':_0x1cffa8[_0x7a62('0x3b')]};return db[_0x7a62('0x2e')][_0x7a62('0x1b')](_0x579a77)[_0x7a62('0x24')](function(_0x2271af){_0x25081a[_0x7a62('0x1b')]=_0x2271af;if(_0x42e965[_0x7a62('0x31')][_0x7a62('0x40')]){_0x1cffa8[_0x7a62('0x41')]=[{'all':!![]}];}return db['AnalyticExtractedReport'][_0x7a62('0x42')](_0x1cffa8);})['then'](function(_0x4de573){_0x25081a[_0x7a62('0x43')]=_0x4de573;return _0x25081a;})[_0x7a62('0x24')](respondWithFilteredResult(_0x52ac21,_0x1cffa8))[_0x7a62('0x44')](handleError(_0x52ac21,null));};exports[_0x7a62('0x45')]=function(_0x5c4b7c,_0x547788){var _0x262126={'raw':!![],'where':{'id':_0x5c4b7c['params']['id']}},_0x13dfb8={};_0x13dfb8[_0x7a62('0x34')]=_[_0x7a62('0x46')](db['AnalyticExtractedReport']['rawAttributes']);_0x13dfb8[_0x7a62('0x31')]=_[_0x7a62('0x46')](_0x5c4b7c[_0x7a62('0x31')]);_0x13dfb8[_0x7a62('0x32')]=_['intersection'](_0x13dfb8[_0x7a62('0x34')],_0x13dfb8['query']);_0x262126[_0x7a62('0x35')]=_[_0x7a62('0x33')](_0x13dfb8[_0x7a62('0x34')],qs[_0x7a62('0x36')](_0x5c4b7c[_0x7a62('0x31')]['fields']));_0x262126[_0x7a62('0x35')]=_0x262126['attributes'][_0x7a62('0x47')]?_0x262126['attributes']:_0x13dfb8[_0x7a62('0x34')];if(_0x5c4b7c[_0x7a62('0x31')][_0x7a62('0x40')]){_0x262126[_0x7a62('0x41')]=[{'all':!![]}];}_0x262126=_[_0x7a62('0x3d')]({},_0x262126,_0x5c4b7c[_0x7a62('0x3f')]);return db[_0x7a62('0x2e')][_0x7a62('0x48')](_0x262126)['then'](handleEntityNotFound(_0x547788,null))['then'](respondWithResult(_0x547788,null))[_0x7a62('0x44')](handleError(_0x547788,null));};exports[_0x7a62('0x49')]=function(_0x41cc9c,_0x3fe9f3){return db[_0x7a62('0x2e')][_0x7a62('0x49')](_0x41cc9c[_0x7a62('0x4a')],{})[_0x7a62('0x24')](function(_0x3c7db5){var _0x378bba=_0x41cc9c[_0x7a62('0x4b')][_0x7a62('0x26')]({'plain':!![]});if(!_0x378bba)throw new Error(_0x7a62('0x4c'));if(_0x378bba[_0x7a62('0x4d')]===_0x7a62('0x4b')){var _0x2f6416=_0x3c7db5[_0x7a62('0x26')]({'plain':!![]});var _0x3eb800='ExtractedReports';return db['UserProfileSection'][_0x7a62('0x48')]({'where':{'name':_0x3eb800,'userProfileId':_0x378bba[_0x7a62('0x4e')]},'raw':!![]})['then'](function(_0x3d7269){if(_0x3d7269&&_0x3d7269[_0x7a62('0x4f')]===0x0){return db[_0x7a62('0x28')][_0x7a62('0x49')]({'name':_0x2f6416['name'],'resourceId':_0x2f6416['id'],'type':_0x3d7269[_0x7a62('0x2a')],'sectionId':_0x3d7269['id']},{})['then'](function(){return _0x3c7db5;});}else{return _0x3c7db5;}})[_0x7a62('0x44')](function(_0x31d5ef){logger[_0x7a62('0x50')](_0x7a62('0x51'),_0x31d5ef);throw _0x31d5ef;});}return _0x3c7db5;})[_0x7a62('0x24')](respondWithResult(_0x3fe9f3,0xc9))['catch'](handleError(_0x3fe9f3,null));};exports[_0x7a62('0x23')]=function(_0x33f704,_0x545458){if(_0x33f704[_0x7a62('0x4a')]['id']){delete _0x33f704[_0x7a62('0x4a')]['id'];}return db[_0x7a62('0x2e')][_0x7a62('0x48')]({'where':{'id':_0x33f704['params']['id']}})['then'](handleEntityNotFound(_0x545458,null))['then'](saveUpdates(_0x33f704[_0x7a62('0x4a')],null))[_0x7a62('0x24')](respondWithResult(_0x545458,null))['catch'](handleError(_0x545458,null));};exports[_0x7a62('0x25')]=function(_0x1fd255,_0x575330){return db['AnalyticExtractedReport'][_0x7a62('0x48')]({'where':{'id':_0x1fd255[_0x7a62('0x52')]['id']}})['then'](handleEntityNotFound(_0x575330,null))[_0x7a62('0x24')](removeEntity(_0x575330,null))['catch'](handleError(_0x575330,null));};exports[_0x7a62('0x53')]=function(_0x125fd2,_0x52f140,_0x1d644d){return db[_0x7a62('0x2e')][_0x7a62('0x48')]({'where':{'id':_0x125fd2[_0x7a62('0x52')]['id']},'attributes':[_0x7a62('0x2a'),_0x7a62('0x54'),_0x7a62('0x55'),_0x7a62('0x56')],'raw':!![]})[_0x7a62('0x24')](handleEntityNotFound(_0x52f140,null))[_0x7a62('0x24')](function(_0x3e6571){if(_0x3e6571){if(!fs[_0x7a62('0x57')](path[_0x7a62('0x58')](config[_0x7a62('0x59')],_0x7a62('0x5a'),_0x3e6571[_0x7a62('0x55')]))){throw new db[(_0x7a62('0x5b'))][(_0x7a62('0x5c'))]('Report\x20not\x20found\x20or\x20empty');}if(_0x125fd2[_0x7a62('0x31')][_0x7a62('0x5d')]){return _0x52f140[_0x7a62('0x16')](0xc8);}return _0x52f140[_0x7a62('0x53')](path[_0x7a62('0x58')](config[_0x7a62('0x59')],_0x7a62('0x5a'),_0x3e6571['savename']),util[_0x7a62('0x5e')](_0x7a62('0x5f'),_0x3e6571['basename']||_0x3e6571[_0x7a62('0x2a')],_0x3e6571['output']['toLowerCase']()));}})[_0x7a62('0x44')](handleError(_0x52f140,null));};
\ No newline at end of file
+var _0x9d1f=['body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ExtractedReports','userProfileId','autoAssociation','error','download','basename','savename','output','existsSync','join','root','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','format','%s.%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','UserProfileResource','destroy','stack','name','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','findAll','show','params','includeAll','include','find','catch','create'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9d1f,0x196));var _0xf9d1=function(_0x39e164,_0x2cb93b){_0x39e164=_0x39e164-0x0;var _0x13fa6b=_0x9d1f[_0x39e164];return _0x13fa6b;};'use strict';var emlformat=require(_0xf9d1('0x0'));var rimraf=require(_0xf9d1('0x1'));var zipdir=require(_0xf9d1('0x2'));var jsonpatch=require(_0xf9d1('0x3'));var rp=require(_0xf9d1('0x4'));var moment=require(_0xf9d1('0x5'));var BPromise=require(_0xf9d1('0x6'));var Mustache=require(_0xf9d1('0x7'));var util=require(_0xf9d1('0x8'));var path=require(_0xf9d1('0x9'));var sox=require(_0xf9d1('0xa'));var csv=require(_0xf9d1('0xb'));var ejs=require(_0xf9d1('0xc'));var fs=require('fs');var fs_extra=require(_0xf9d1('0xd'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xf9d1('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf9d1('0xb'));var querystring=require(_0xf9d1('0xf'));var Papa=require(_0xf9d1('0x10'));var Redis=require(_0xf9d1('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xf9d1('0x12'));var as=require(_0xf9d1('0x13'));var hardwareService=require(_0xf9d1('0x14'));var logger=require(_0xf9d1('0x15'))(_0xf9d1('0x16'));var utils=require(_0xf9d1('0x17'));var config=require(_0xf9d1('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xf9d1('0x19'))['db'];function respondWithStatusCode(_0x38f657,_0x355443){_0x355443=_0x355443||0xcc;return function(_0x28575c){if(_0x28575c){return _0x38f657[_0xf9d1('0x1a')](_0x355443);}return _0x38f657[_0xf9d1('0x1b')](_0x355443)['end']();};}function respondWithResult(_0x220be5,_0xe718ea){_0xe718ea=_0xe718ea||0xc8;return function(_0x1335a2){if(_0x1335a2){return _0x220be5[_0xf9d1('0x1b')](_0xe718ea)[_0xf9d1('0x1c')](_0x1335a2);}};}function respondWithFilteredResult(_0x40cc9b,_0x4e1207){return function(_0x197738){if(_0x197738){var _0x2fbddf=typeof _0x4e1207[_0xf9d1('0x1d')]===_0xf9d1('0x1e')&&typeof _0x4e1207['limit']===_0xf9d1('0x1e');var _0x527c2a=_0x197738['count'];var _0x3f83c3=_0x2fbddf?0x0:_0x4e1207['offset'];var _0x5e6e5d=_0x2fbddf?_0x197738[_0xf9d1('0x1f')]:_0x4e1207['offset']+_0x4e1207[_0xf9d1('0x20')];var _0x31480b;if(_0x5e6e5d>=_0x527c2a){_0x5e6e5d=_0x527c2a;_0x31480b=0xc8;}else{_0x31480b=0xce;}_0x40cc9b['status'](_0x31480b);return _0x40cc9b[_0xf9d1('0x21')](_0xf9d1('0x22'),_0x3f83c3+'-'+_0x5e6e5d+'/'+_0x527c2a)['json'](_0x197738);}return null;};}function patchUpdates(_0x372d31){return function(_0x17ce6d){try{jsonpatch[_0xf9d1('0x23')](_0x17ce6d,_0x372d31,!![]);}catch(_0x40d8bd){return BPromise[_0xf9d1('0x24')](_0x40d8bd);}return _0x17ce6d['save']();};}function saveUpdates(_0x23cc35,_0x1dacd9){return function(_0x26a56c){if(_0x26a56c){return _0x26a56c[_0xf9d1('0x25')](_0x23cc35)['then'](function(_0x58b273){return _0x58b273;});}return null;};}function removeEntity(_0x267797,_0x210dfa){return function(_0x391047){if(_0x391047){return _0x391047['destroy']()[_0xf9d1('0x26')](function(){var _0x26fcff=_0x391047['get']({'plain':!![]});var _0x256681='ExtractedReports';return db[_0xf9d1('0x27')][_0xf9d1('0x28')]({'where':{'type':_0x256681,'resourceId':_0x26fcff['id']}})[_0xf9d1('0x26')](function(){return _0x391047;});})[_0xf9d1('0x26')](function(){_0x267797[_0xf9d1('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x31c2c0,_0x1ef713){return function(_0x3d4dd4){if(!_0x3d4dd4){_0x31c2c0[_0xf9d1('0x1a')](0x194);}return _0x3d4dd4;};}function handleError(_0x11aa0c,_0x4c3951){_0x4c3951=_0x4c3951||0x1f4;return function(_0x224581){logger['error'](_0x224581[_0xf9d1('0x29')]);if(_0x224581['name']){delete _0x224581[_0xf9d1('0x2a')];}_0x11aa0c[_0xf9d1('0x1b')](_0x4c3951)['send'](_0x224581);};}exports['index']=function(_0x3e46d1,_0x5f2675){var _0x28c213={},_0x120e5f={},_0xc899fb={'count':0x0,'rows':[]};var _0x365854=_[_0xf9d1('0x2b')](db[_0xf9d1('0x2c')][_0xf9d1('0x2d')],function(_0x1c009d){return{'name':_0x1c009d[_0xf9d1('0x2e')],'type':_0x1c009d[_0xf9d1('0x2f')][_0xf9d1('0x30')]};});_0x120e5f[_0xf9d1('0x31')]=_[_0xf9d1('0x2b')](_0x365854,'name');_0x120e5f['query']=_[_0xf9d1('0x32')](_0x3e46d1[_0xf9d1('0x33')]);_0x120e5f['filters']=_[_0xf9d1('0x34')](_0x120e5f['model'],_0x120e5f['query']);_0x28c213[_0xf9d1('0x35')]=_[_0xf9d1('0x34')](_0x120e5f[_0xf9d1('0x31')],qs['fields'](_0x3e46d1[_0xf9d1('0x33')][_0xf9d1('0x36')]));_0x28c213[_0xf9d1('0x35')]=_0x28c213[_0xf9d1('0x35')][_0xf9d1('0x37')]?_0x28c213[_0xf9d1('0x35')]:_0x120e5f[_0xf9d1('0x31')];if(!_0x3e46d1[_0xf9d1('0x33')]['hasOwnProperty'](_0xf9d1('0x38'))){_0x28c213[_0xf9d1('0x20')]=qs[_0xf9d1('0x20')](_0x3e46d1[_0xf9d1('0x33')][_0xf9d1('0x20')]);_0x28c213[_0xf9d1('0x1d')]=qs['offset'](_0x3e46d1[_0xf9d1('0x33')][_0xf9d1('0x1d')]);}_0x28c213[_0xf9d1('0x39')]=qs[_0xf9d1('0x3a')](_0x3e46d1['query']['sort']);_0x28c213[_0xf9d1('0x3b')]=qs[_0xf9d1('0x3c')](_[_0xf9d1('0x3d')](_0x3e46d1['query'],_0x120e5f[_0xf9d1('0x3c')]),_0x365854);if(_0x3e46d1[_0xf9d1('0x33')][_0xf9d1('0x3e')]){_0x28c213[_0xf9d1('0x3b')]=_[_0xf9d1('0x3f')](_0x28c213[_0xf9d1('0x3b')],{'$or':_[_0xf9d1('0x2b')](_0x365854,function(_0x8c3de4){if(_0x8c3de4[_0xf9d1('0x2f')]!==_0xf9d1('0x40')){var _0x2c0fc7={};_0x2c0fc7[_0x8c3de4[_0xf9d1('0x2a')]]={'$like':'%'+_0x3e46d1[_0xf9d1('0x33')][_0xf9d1('0x3e')]+'%'};return _0x2c0fc7;}})});}_0x28c213=_[_0xf9d1('0x3f')]({},_0x28c213,_0x3e46d1[_0xf9d1('0x41')]);var _0x1ebfe5={'where':_0x28c213[_0xf9d1('0x3b')]};return db[_0xf9d1('0x2c')][_0xf9d1('0x1f')](_0x1ebfe5)[_0xf9d1('0x26')](function(_0x2185ef){_0xc899fb['count']=_0x2185ef;if(_0x3e46d1['query']['includeAll']){_0x28c213['include']=[{'all':!![]}];}return db[_0xf9d1('0x2c')][_0xf9d1('0x42')](_0x28c213);})['then'](function(_0x4399ed){_0xc899fb['rows']=_0x4399ed;return _0xc899fb;})['then'](respondWithFilteredResult(_0x5f2675,_0x28c213))['catch'](handleError(_0x5f2675,null));};exports[_0xf9d1('0x43')]=function(_0xd13554,_0x2ccd34){var _0xefc3f8={'raw':!![],'where':{'id':_0xd13554[_0xf9d1('0x44')]['id']}},_0x12f539={};_0x12f539[_0xf9d1('0x31')]=_[_0xf9d1('0x32')](db[_0xf9d1('0x2c')][_0xf9d1('0x2d')]);_0x12f539[_0xf9d1('0x33')]=_[_0xf9d1('0x32')](_0xd13554['query']);_0x12f539['filters']=_['intersection'](_0x12f539[_0xf9d1('0x31')],_0x12f539[_0xf9d1('0x33')]);_0xefc3f8[_0xf9d1('0x35')]=_[_0xf9d1('0x34')](_0x12f539[_0xf9d1('0x31')],qs[_0xf9d1('0x36')](_0xd13554[_0xf9d1('0x33')][_0xf9d1('0x36')]));_0xefc3f8[_0xf9d1('0x35')]=_0xefc3f8['attributes'][_0xf9d1('0x37')]?_0xefc3f8['attributes']:_0x12f539[_0xf9d1('0x31')];if(_0xd13554[_0xf9d1('0x33')][_0xf9d1('0x45')]){_0xefc3f8[_0xf9d1('0x46')]=[{'all':!![]}];}_0xefc3f8=_['merge']({},_0xefc3f8,_0xd13554[_0xf9d1('0x41')]);return db[_0xf9d1('0x2c')][_0xf9d1('0x47')](_0xefc3f8)[_0xf9d1('0x26')](handleEntityNotFound(_0x2ccd34,null))['then'](respondWithResult(_0x2ccd34,null))[_0xf9d1('0x48')](handleError(_0x2ccd34,null));};exports[_0xf9d1('0x49')]=function(_0x3e3e95,_0x5e6537){return db['AnalyticExtractedReport'][_0xf9d1('0x49')](_0x3e3e95[_0xf9d1('0x4a')],{})['then'](function(_0x3d713f){var _0x78503c=_0x3e3e95[_0xf9d1('0x4b')][_0xf9d1('0x4c')]({'plain':!![]});if(!_0x78503c)throw new Error(_0xf9d1('0x4d'));if(_0x78503c[_0xf9d1('0x4e')]==='user'){var _0x479aef=_0x3d713f[_0xf9d1('0x4c')]({'plain':!![]});var _0x1592b4=_0xf9d1('0x4f');return db['UserProfileSection'][_0xf9d1('0x47')]({'where':{'name':_0x1592b4,'userProfileId':_0x78503c[_0xf9d1('0x50')]},'raw':!![]})[_0xf9d1('0x26')](function(_0x1aea5f){if(_0x1aea5f&&_0x1aea5f[_0xf9d1('0x51')]===0x0){return db[_0xf9d1('0x27')][_0xf9d1('0x49')]({'name':_0x479aef[_0xf9d1('0x2a')],'resourceId':_0x479aef['id'],'type':_0x1aea5f[_0xf9d1('0x2a')],'sectionId':_0x1aea5f['id']},{})[_0xf9d1('0x26')](function(){return _0x3d713f;});}else{return _0x3d713f;}})[_0xf9d1('0x48')](function(_0x53d72c){logger[_0xf9d1('0x52')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x53d72c);throw _0x53d72c;});}return _0x3d713f;})[_0xf9d1('0x26')](respondWithResult(_0x5e6537,0xc9))['catch'](handleError(_0x5e6537,null));};exports[_0xf9d1('0x25')]=function(_0x39e087,_0x134d47){if(_0x39e087[_0xf9d1('0x4a')]['id']){delete _0x39e087['body']['id'];}return db[_0xf9d1('0x2c')]['find']({'where':{'id':_0x39e087[_0xf9d1('0x44')]['id']}})['then'](handleEntityNotFound(_0x134d47,null))[_0xf9d1('0x26')](saveUpdates(_0x39e087['body'],null))[_0xf9d1('0x26')](respondWithResult(_0x134d47,null))[_0xf9d1('0x48')](handleError(_0x134d47,null));};exports[_0xf9d1('0x28')]=function(_0x8aacf7,_0x34d147){return db['AnalyticExtractedReport'][_0xf9d1('0x47')]({'where':{'id':_0x8aacf7['params']['id']}})['then'](handleEntityNotFound(_0x34d147,null))[_0xf9d1('0x26')](removeEntity(_0x34d147,null))[_0xf9d1('0x48')](handleError(_0x34d147,null));};exports[_0xf9d1('0x53')]=function(_0x192487,_0x2045a2,_0xd4f075){return db[_0xf9d1('0x2c')][_0xf9d1('0x47')]({'where':{'id':_0x192487['params']['id']},'attributes':[_0xf9d1('0x2a'),_0xf9d1('0x54'),_0xf9d1('0x55'),_0xf9d1('0x56')],'raw':!![]})[_0xf9d1('0x26')](handleEntityNotFound(_0x2045a2,null))[_0xf9d1('0x26')](function(_0x5cc791){if(_0x5cc791){if(!fs[_0xf9d1('0x57')](path[_0xf9d1('0x58')](config[_0xf9d1('0x59')],_0xf9d1('0x5a'),_0x5cc791[_0xf9d1('0x55')]))){throw new db[(_0xf9d1('0x5b'))][(_0xf9d1('0x5c'))](_0xf9d1('0x5d'));}if(_0x192487[_0xf9d1('0x33')]['exists']){return _0x2045a2[_0xf9d1('0x1a')](0xc8);}return _0x2045a2[_0xf9d1('0x53')](path[_0xf9d1('0x58')](config[_0xf9d1('0x59')],'server/files/reports',_0x5cc791[_0xf9d1('0x55')]),util[_0xf9d1('0x5e')](_0xf9d1('0x5f'),_0x5cc791[_0xf9d1('0x54')]||_0x5cc791[_0xf9d1('0x2a')],_0x5cc791['output']['toLowerCase']()));}})['catch'](handleError(_0x2045a2,null));};
\ No newline at end of file
index 8ce6f06..6117214 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8bd=['exports','define','AnalyticExtractedReport','analytics_extracted_reports','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./analyticExtractedReport.attributes'];(function(_0x2d20ae,_0x3b1d15){var _0x58451e=function(_0xd0aed7){while(--_0xd0aed7){_0x2d20ae['push'](_0x2d20ae['shift']());}};_0x58451e(++_0x3b1d15);}(_0xd8bd,0x156));var _0xdd8b=function(_0x411f29,_0x561085){_0x411f29=_0x411f29-0x0;var _0xbbb918=_0xd8bd[_0x411f29];return _0xbbb918;};'use strict';var _=require(_0xdd8b('0x0'));var util=require('util');var logger=require(_0xdd8b('0x1'))(_0xdd8b('0x2'));var moment=require('moment');var BPromise=require(_0xdd8b('0x3'));var rp=require(_0xdd8b('0x4'));var fs=require('fs');var path=require(_0xdd8b('0x5'));var rimraf=require(_0xdd8b('0x6'));var config=require(_0xdd8b('0x7'));var attributes=require(_0xdd8b('0x8'));module[_0xdd8b('0x9')]=function(_0x29e326,_0x45c39f){return _0x29e326[_0xdd8b('0xa')](_0xdd8b('0xb'),attributes,{'tableName':_0xdd8b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6cf6=['bluebird','rimraf','./analyticExtractedReport.attributes','exports','AnalyticExtractedReport','lodash','util','../../config/logger'];(function(_0x593564,_0x43583f){var _0x211a89=function(_0x40afd6){while(--_0x40afd6){_0x593564['push'](_0x593564['shift']());}};_0x211a89(++_0x43583f);}(_0x6cf6,0x1b5));var _0x66cf=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x6cf6[_0x4154a6];return _0x3b2786;};'use strict';var _=require(_0x66cf('0x0'));var util=require(_0x66cf('0x1'));var logger=require(_0x66cf('0x2'))('api');var moment=require('moment');var BPromise=require(_0x66cf('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x66cf('0x4'));var config=require('../../config/environment');var attributes=require(_0x66cf('0x5'));module[_0x66cf('0x6')]=function(_0x1fcf5b,_0x245bcb){return _0x1fcf5b['define'](_0x66cf('0x7'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1b52fee..e1e5dd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8a2=['then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','request'];(function(_0x56482c,_0x16118d){var _0x5aae7a=function(_0x52512f){while(--_0x52512f){_0x56482c['push'](_0x56482c['shift']());}};_0x5aae7a(++_0x16118d);}(_0xb8a2,0xd2));var _0x2b8a=function(_0x3aa59f,_0x16229e){_0x3aa59f=_0x3aa59f-0x0;var _0x452bf5=_0xb8a2[_0x3aa59f];return _0x452bf5;};'use strict';var _=require(_0x2b8a('0x0'));var util=require('util');var moment=require(_0x2b8a('0x1'));var BPromise=require(_0x2b8a('0x2'));var rs=require(_0x2b8a('0x3'));var fs=require('fs');var Redis=require(_0x2b8a('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2b8a('0x5'))(_0x2b8a('0x6'));var config=require(_0x2b8a('0x7'));var jayson=require(_0x2b8a('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3b7e8d,_0x21bf10,_0x1f6bef){return new BPromise(function(_0x534a7b,_0x477e5a){return client[_0x2b8a('0x9')](_0x3b7e8d,_0x1f6bef)[_0x2b8a('0xa')](function(_0x3949b7){logger[_0x2b8a('0xb')](_0x2b8a('0xc'),_0x21bf10,_0x2b8a('0xd'));logger[_0x2b8a('0xe')]('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x21bf10,_0x2b8a('0xd'),JSON[_0x2b8a('0xf')](_0x3949b7));if(_0x3949b7['error']){if(_0x3949b7[_0x2b8a('0x10')][_0x2b8a('0x11')]===0x1f4){logger[_0x2b8a('0x10')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x21bf10,_0x3949b7['error'][_0x2b8a('0x12')]);return _0x477e5a(_0x3949b7[_0x2b8a('0x10')][_0x2b8a('0x12')]);}logger[_0x2b8a('0x10')](_0x2b8a('0xc'),_0x21bf10,_0x3949b7[_0x2b8a('0x10')][_0x2b8a('0x12')]);return _0x534a7b(_0x3949b7[_0x2b8a('0x10')][_0x2b8a('0x12')]);}else{logger[_0x2b8a('0xb')](_0x2b8a('0xc'),_0x21bf10,_0x2b8a('0xd'));_0x534a7b(_0x3949b7['result'][_0x2b8a('0x12')]);}})[_0x2b8a('0x13')](function(_0x20ace2){logger['error'](_0x2b8a('0xc'),_0x21bf10,_0x20ace2);_0x477e5a(_0x20ace2);});});}
\ No newline at end of file
+var _0x0a49=['debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x0a49,0x178));var _0x90a4=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0x0a49[_0x1b349a];return _0x5d1f7c;};'use strict';var _=require(_0x90a4('0x0'));var util=require(_0x90a4('0x1'));var moment=require('moment');var BPromise=require(_0x90a4('0x2'));var rs=require(_0x90a4('0x3'));var fs=require('fs');var Redis=require(_0x90a4('0x4'));var db=require(_0x90a4('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x90a4('0x6'));var jayson=require(_0x90a4('0x7'));var client=jayson[_0x90a4('0x8')][_0x90a4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1c41df,_0x1e536f,_0x1bbc0f){return new BPromise(function(_0x3759b3,_0x122b4d){return client[_0x90a4('0xa')](_0x1c41df,_0x1bbc0f)[_0x90a4('0xb')](function(_0x21e029){logger[_0x90a4('0xc')](_0x90a4('0xd'),_0x1e536f,_0x90a4('0xe'));logger[_0x90a4('0xf')](_0x90a4('0x10'),_0x1e536f,_0x90a4('0xe'),JSON[_0x90a4('0x11')](_0x21e029));if(_0x21e029[_0x90a4('0x12')]){if(_0x21e029[_0x90a4('0x12')][_0x90a4('0x13')]===0x1f4){logger[_0x90a4('0x12')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x1e536f,_0x21e029['error'][_0x90a4('0x14')]);return _0x122b4d(_0x21e029[_0x90a4('0x12')][_0x90a4('0x14')]);}logger[_0x90a4('0x12')](_0x90a4('0xd'),_0x1e536f,_0x21e029[_0x90a4('0x12')][_0x90a4('0x14')]);return _0x3759b3(_0x21e029['error'][_0x90a4('0x14')]);}else{logger['info'](_0x90a4('0xd'),_0x1e536f,_0x90a4('0xe'));_0x3759b3(_0x21e029[_0x90a4('0x15')]['message']);}})[_0x90a4('0x16')](function(_0x7209bb){logger[_0x90a4('0x12')](_0x90a4('0xd'),_0x1e536f,_0x7209bb);_0x122b4d(_0x7209bb);});});}
\ No newline at end of file
index 3f72fe6..c36ce7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ef7=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticExtractedReport.controller','get','index','isAuthenticated','show','/:id/download','download','create','/:id','delete','exports','multer'];(function(_0x2a100e,_0x263ba5){var _0x517ac8=function(_0x3342b9){while(--_0x3342b9){_0x2a100e['push'](_0x2a100e['shift']());}};_0x517ac8(++_0x263ba5);}(_0x1ef7,0x167));var _0x71ef=function(_0x3fd3a3,_0x36c863){_0x3fd3a3=_0x3fd3a3-0x0;var _0xa3e4d5=_0x1ef7[_0x3fd3a3];return _0xa3e4d5;};'use strict';var multer=require(_0x71ef('0x0'));var util=require('util');var path=require(_0x71ef('0x1'));var timeout=require('connect-timeout');var express=require(_0x71ef('0x2'));var router=express[_0x71ef('0x3')]();var fs_extra=require(_0x71ef('0x4'));var auth=require(_0x71ef('0x5'));var interaction=require(_0x71ef('0x6'));var config=require('../../config/environment');var controller=require(_0x71ef('0x7'));router[_0x71ef('0x8')]('/',auth['isAuthenticated'](),controller[_0x71ef('0x9')]);router[_0x71ef('0x8')]('/:id',auth[_0x71ef('0xa')](),controller[_0x71ef('0xb')]);router[_0x71ef('0x8')](_0x71ef('0xc'),auth['isAuthenticated'](),controller[_0x71ef('0xd')]);router['post']('/',auth[_0x71ef('0xa')](),controller[_0x71ef('0xe')]);router['put'](_0x71ef('0xf'),auth['isAuthenticated'](),controller['update']);router[_0x71ef('0x10')](_0x71ef('0xf'),auth[_0x71ef('0xa')](),controller['destroy']);module[_0x71ef('0x11')]=router;
\ No newline at end of file
+var _0x657b=['multer','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','put','update','delete','destroy','exports'];(function(_0x2fda50,_0x42ae90){var _0x4169f6=function(_0x490f0b){while(--_0x490f0b){_0x2fda50['push'](_0x2fda50['shift']());}};_0x4169f6(++_0x42ae90);}(_0x657b,0xa0));var _0xb657=function(_0x107b3f,_0x4e1824){_0x107b3f=_0x107b3f-0x0;var _0x163c23=_0x657b[_0x107b3f];return _0x163c23;};'use strict';var multer=require(_0xb657('0x0'));var util=require('util');var path=require(_0xb657('0x1'));var timeout=require('connect-timeout');var express=require(_0xb657('0x2'));var router=express[_0xb657('0x3')]();var fs_extra=require(_0xb657('0x4'));var auth=require(_0xb657('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb657('0x6'));var controller=require(_0xb657('0x7'));router[_0xb657('0x8')]('/',auth[_0xb657('0x9')](),controller[_0xb657('0xa')]);router[_0xb657('0x8')](_0xb657('0xb'),auth[_0xb657('0x9')](),controller[_0xb657('0xc')]);router[_0xb657('0x8')](_0xb657('0xd'),auth[_0xb657('0x9')](),controller[_0xb657('0xe')]);router['post']('/',auth[_0xb657('0x9')](),controller['create']);router[_0xb657('0xf')](_0xb657('0xb'),auth[_0xb657('0x9')](),controller[_0xb657('0x10')]);router[_0xb657('0x11')](_0xb657('0xb'),auth[_0xb657('0x9')](),controller[_0xb657('0x12')]);module[_0xb657('0x13')]=router;
\ No newline at end of file
index 8db4ffb..6bff017 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ab4=['BOOLEAN','sequelize','exports','STRING'];(function(_0x28002a,_0x565666){var _0x45a345=function(_0x97bae4){while(--_0x97bae4){_0x28002a['push'](_0x28002a['shift']());}};_0x45a345(++_0x565666);}(_0x6ab4,0x139));var _0x46ab=function(_0x16e734,_0x46281a){_0x16e734=_0x16e734-0x0;var _0x45f4c3=_0x6ab4[_0x16e734];return _0x45f4c3;};'use strict';var Sequelize=require(_0x46ab('0x0'));module[_0x46ab('0x1')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize[_0x46ab('0x2')]},'function':{'type':Sequelize[_0x46ab('0x2')]},'format':{'type':Sequelize[_0x46ab('0x2')]},'groupBy':{'type':Sequelize[_0x46ab('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x46ab('0x2')]},'custom':{'type':Sequelize[_0x46ab('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x7358=['TEXT','STRING','BOOLEAN','sequelize','exports'];(function(_0x1bb812,_0x23eacc){var _0x372adb=function(_0x5ad456){while(--_0x5ad456){_0x1bb812['push'](_0x1bb812['shift']());}};_0x372adb(++_0x23eacc);}(_0x7358,0xd5));var _0x8735=function(_0x1b36fd,_0x1e31c4){_0x1b36fd=_0x1b36fd-0x0;var _0x391a3d=_0x7358[_0x1b36fd];return _0x391a3d;};'use strict';var Sequelize=require(_0x8735('0x0'));module[_0x8735('0x1')]={'field':{'type':Sequelize[_0x8735('0x2')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize[_0x8735('0x3')]},'format':{'type':Sequelize['STRING']},'groupBy':{'type':Sequelize[_0x8735('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x8735('0x3')]},'custom':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 99eb121..f2ee239 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0d=['destroy','stack','name','send','index','AnalyticFieldReport','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','fields','find','create','body','bulkCreate','bulkDestroy','addFields','findOne','transaction','CustomReportId','eml-format','rimraf','zip-dir','fast-json-patch','moment','to-csv','ejs','fs-extra','lodash','squel','crypto','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','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then'];(function(_0x28941b,_0x47603b){var _0x5d7a6b=function(_0x4ba646){while(--_0x4ba646){_0x28941b['push'](_0x28941b['shift']());}};_0x5d7a6b(++_0x47603b);}(_0xef0d,0x7d));var _0xdef0=function(_0x21b788,_0x1b000c){_0x21b788=_0x21b788-0x0;var _0x32e4ba=_0xef0d[_0x21b788];return _0x32e4ba;};'use strict';var emlformat=require(_0xdef0('0x0'));var rimraf=require(_0xdef0('0x1'));var zipdir=require(_0xdef0('0x2'));var jsonpatch=require(_0xdef0('0x3'));var rp=require('request-promise');var moment=require(_0xdef0('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xdef0('0x5'));var ejs=require(_0xdef0('0x6'));var fs=require('fs');var fs_extra=require(_0xdef0('0x7'));var _=require(_0xdef0('0x8'));var squel=require(_0xdef0('0x9'));var crypto=require(_0xdef0('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xdef0('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xdef0('0xc'));var Redis=require(_0xdef0('0xd'));var authService=require(_0xdef0('0xe'));var qs=require(_0xdef0('0xf'));var as=require(_0xdef0('0x10'));var hardwareService=require(_0xdef0('0x11'));var logger=require(_0xdef0('0x12'))(_0xdef0('0x13'));var utils=require(_0xdef0('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xdef0('0x15'));var db=require(_0xdef0('0x16'))['db'];function respondWithStatusCode(_0x128521,_0x136a26){_0x136a26=_0x136a26||0xcc;return function(_0x529a52){if(_0x529a52){return _0x128521[_0xdef0('0x17')](_0x136a26);}return _0x128521[_0xdef0('0x18')](_0x136a26)[_0xdef0('0x19')]();};}function respondWithResult(_0xb9dd6d,_0x4f3005){_0x4f3005=_0x4f3005||0xc8;return function(_0x28e80b){if(_0x28e80b){return _0xb9dd6d['status'](_0x4f3005)['json'](_0x28e80b);}};}function respondWithFilteredResult(_0x30b05d,_0x297368){return function(_0x4e3be2){if(_0x4e3be2){var _0x472f9b=typeof _0x297368[_0xdef0('0x1a')]===_0xdef0('0x1b')&&typeof _0x297368[_0xdef0('0x1c')]===_0xdef0('0x1b');var _0x5c9cf8=_0x4e3be2[_0xdef0('0x1d')];var _0x46d330=_0x472f9b?0x0:_0x297368[_0xdef0('0x1a')];var _0x514c84=_0x472f9b?_0x4e3be2[_0xdef0('0x1d')]:_0x297368['offset']+_0x297368['limit'];var _0x1e2dca;if(_0x514c84>=_0x5c9cf8){_0x514c84=_0x5c9cf8;_0x1e2dca=0xc8;}else{_0x1e2dca=0xce;}_0x30b05d['status'](_0x1e2dca);return _0x30b05d[_0xdef0('0x1e')](_0xdef0('0x1f'),_0x46d330+'-'+_0x514c84+'/'+_0x5c9cf8)[_0xdef0('0x20')](_0x4e3be2);}return null;};}function patchUpdates(_0x387f29){return function(_0xa0ab0c){try{jsonpatch[_0xdef0('0x21')](_0xa0ab0c,_0x387f29,!![]);}catch(_0x18a64b){return BPromise[_0xdef0('0x22')](_0x18a64b);}return _0xa0ab0c['save']();};}function saveUpdates(_0x356263,_0x45db66){return function(_0x5d6a21){if(_0x5d6a21){return _0x5d6a21[_0xdef0('0x23')](_0x356263)[_0xdef0('0x24')](function(_0x1ef2ec){return _0x1ef2ec;});}return null;};}function removeEntity(_0x130302,_0x3824e4){return function(_0x33a16f){if(_0x33a16f){return _0x33a16f[_0xdef0('0x25')]()[_0xdef0('0x24')](function(){_0x130302['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xd24cef,_0x5b0440){return function(_0x452728){if(!_0x452728){_0xd24cef[_0xdef0('0x17')](0x194);}return _0x452728;};}function handleError(_0x58519f,_0x21b422){_0x21b422=_0x21b422||0x1f4;return function(_0x45ad28){logger['error'](_0x45ad28[_0xdef0('0x26')]);if(_0x45ad28[_0xdef0('0x27')]){delete _0x45ad28[_0xdef0('0x27')];}_0x58519f['status'](_0x21b422)[_0xdef0('0x28')](_0x45ad28);};}exports[_0xdef0('0x29')]=function(_0x433deb,_0x3f8b23){var _0x371d65={},_0x28921b={},_0x263793={'count':0x0,'rows':[]};var _0x1ba2e0=_['map'](db[_0xdef0('0x2a')][_0xdef0('0x2b')],function(_0x1065b9){return{'name':_0x1065b9[_0xdef0('0x2c')],'type':_0x1065b9[_0xdef0('0x2d')][_0xdef0('0x2e')]};});_0x28921b[_0xdef0('0x2f')]=_[_0xdef0('0x30')](_0x1ba2e0,_0xdef0('0x27'));_0x28921b['query']=_[_0xdef0('0x31')](_0x433deb['query']);_0x28921b[_0xdef0('0x32')]=_[_0xdef0('0x33')](_0x28921b[_0xdef0('0x2f')],_0x28921b[_0xdef0('0x34')]);_0x371d65['attributes']=_[_0xdef0('0x33')](_0x28921b[_0xdef0('0x2f')],qs['fields'](_0x433deb[_0xdef0('0x34')]['fields']));_0x371d65[_0xdef0('0x35')]=_0x371d65['attributes'][_0xdef0('0x36')]?_0x371d65['attributes']:_0x28921b['model'];if(!_0x433deb[_0xdef0('0x34')][_0xdef0('0x37')](_0xdef0('0x38'))){_0x371d65[_0xdef0('0x1c')]=qs[_0xdef0('0x1c')](_0x433deb['query'][_0xdef0('0x1c')]);_0x371d65[_0xdef0('0x1a')]=qs[_0xdef0('0x1a')](_0x433deb['query'][_0xdef0('0x1a')]);}_0x371d65['order']=qs['sort'](_0x433deb['query'][_0xdef0('0x39')]);_0x371d65[_0xdef0('0x3a')]=qs[_0xdef0('0x32')](_[_0xdef0('0x3b')](_0x433deb[_0xdef0('0x34')],_0x28921b[_0xdef0('0x32')]),_0x1ba2e0);if(_0x433deb[_0xdef0('0x34')][_0xdef0('0x3c')]){_0x371d65[_0xdef0('0x3a')]=_[_0xdef0('0x3d')](_0x371d65[_0xdef0('0x3a')],{'$or':_['map'](_0x1ba2e0,function(_0x2e5a9b){if(_0x2e5a9b[_0xdef0('0x2d')]!==_0xdef0('0x3e')){var _0x3a5c9f={};_0x3a5c9f[_0x2e5a9b['name']]={'$like':'%'+_0x433deb['query'][_0xdef0('0x3c')]+'%'};return _0x3a5c9f;}})});}_0x371d65=_[_0xdef0('0x3d')]({},_0x371d65,_0x433deb[_0xdef0('0x3f')]);var _0x111186={'where':_0x371d65['where']};return db['AnalyticFieldReport'][_0xdef0('0x1d')](_0x111186)[_0xdef0('0x24')](function(_0x409a5c){_0x263793['count']=_0x409a5c;if(_0x433deb['query'][_0xdef0('0x40')]){_0x371d65[_0xdef0('0x41')]=[{'all':!![]}];}return db[_0xdef0('0x2a')][_0xdef0('0x42')](_0x371d65);})['then'](function(_0x3e55de){_0x263793[_0xdef0('0x43')]=_0x3e55de;return _0x263793;})[_0xdef0('0x24')](respondWithFilteredResult(_0x3f8b23,_0x371d65))[_0xdef0('0x44')](handleError(_0x3f8b23,null));};exports[_0xdef0('0x45')]=function(_0x6c73a3,_0x361136){var _0x35f970={'raw':![],'where':{'id':_0x6c73a3[_0xdef0('0x46')]['id']}},_0x30ee41={};_0x30ee41['model']=_[_0xdef0('0x31')](db[_0xdef0('0x2a')][_0xdef0('0x2b')]);_0x30ee41[_0xdef0('0x34')]=_[_0xdef0('0x31')](_0x6c73a3[_0xdef0('0x34')]);_0x30ee41[_0xdef0('0x32')]=_['intersection'](_0x30ee41[_0xdef0('0x2f')],_0x30ee41['query']);_0x35f970[_0xdef0('0x35')]=_[_0xdef0('0x33')](_0x30ee41[_0xdef0('0x2f')],qs[_0xdef0('0x47')](_0x6c73a3[_0xdef0('0x34')][_0xdef0('0x47')]));_0x35f970['attributes']=_0x35f970['attributes']['length']?_0x35f970[_0xdef0('0x35')]:_0x30ee41[_0xdef0('0x2f')];if(_0x6c73a3[_0xdef0('0x34')][_0xdef0('0x40')]){_0x35f970[_0xdef0('0x41')]=[{'all':!![]}];}_0x35f970=_[_0xdef0('0x3d')]({},_0x35f970,_0x6c73a3[_0xdef0('0x3f')]);return db[_0xdef0('0x2a')][_0xdef0('0x48')](_0x35f970)[_0xdef0('0x24')](handleEntityNotFound(_0x361136,null))[_0xdef0('0x24')](respondWithResult(_0x361136,null))[_0xdef0('0x44')](handleError(_0x361136,null));};exports['create']=function(_0x41a9fc,_0x5350ab){return db[_0xdef0('0x2a')][_0xdef0('0x49')](_0x41a9fc[_0xdef0('0x4a')],{})[_0xdef0('0x24')](respondWithResult(_0x5350ab,0xc9))['catch'](handleError(_0x5350ab,null));};exports[_0xdef0('0x4b')]=function(_0x4a92eb,_0x7eafa8){return db['AnalyticFieldReport'][_0xdef0('0x4b')](_0x4a92eb[_0xdef0('0x4a')],{'raw':![],'individualHooks':!![]})[_0xdef0('0x24')](respondWithResult(_0x7eafa8,0xc9))[_0xdef0('0x44')](handleError(_0x7eafa8,null));};exports['update']=function(_0x5f2ab8,_0x1a0db3){if(_0x5f2ab8[_0xdef0('0x4a')]['id']){delete _0x5f2ab8['body']['id'];}return db['AnalyticFieldReport'][_0xdef0('0x48')]({'where':{'id':_0x5f2ab8['params']['id']}})['then'](handleEntityNotFound(_0x1a0db3,null))[_0xdef0('0x24')](saveUpdates(_0x5f2ab8[_0xdef0('0x4a')],null))[_0xdef0('0x24')](respondWithResult(_0x1a0db3,null))[_0xdef0('0x44')](handleError(_0x1a0db3,null));};exports[_0xdef0('0x25')]=function(_0x3b62c2,_0x342be5){return db['AnalyticFieldReport'][_0xdef0('0x48')]({'where':{'id':_0x3b62c2[_0xdef0('0x46')]['id']}})[_0xdef0('0x24')](handleEntityNotFound(_0x342be5,null))[_0xdef0('0x24')](removeEntity(_0x342be5,null))[_0xdef0('0x44')](handleError(_0x342be5,null));};exports[_0xdef0('0x4c')]=function(_0x5e75e3,_0xfef31d){return db[_0xdef0('0x2a')][_0xdef0('0x25')]({'where':{'id':_0x5e75e3[_0xdef0('0x34')]['ids']||[]},'raw':![],'individualHooks':!![]})[_0xdef0('0x24')](respondWithResult(_0xfef31d,0xcc))[_0xdef0('0x44')](handleError(_0xfef31d,null));};exports[_0xdef0('0x4d')]=function(_0x3314a5,_0x4c9543,_0x404edb){return db['AnalyticCustomReport'][_0xdef0('0x4e')]({'where':{'id':_0x3314a5['params']['id']}})[_0xdef0('0x24')](handleEntityNotFound(_0x4c9543,null))[_0xdef0('0x24')](function(_0x36f994){if(_0x36f994){return db['sequelize'][_0xdef0('0x4f')](function(_0x4ccb83){return db['AnalyticFieldReport'][_0xdef0('0x25')]({'where':{'CustomReportId':_0x3314a5[_0xdef0('0x46')]['id']},'transaction':_0x4ccb83})[_0xdef0('0x24')](function(_0x3b7639){var _0x29ee51=_[_0xdef0('0x30')](_0x3314a5[_0xdef0('0x4a')],function(_0x2cbda4){delete _0x2cbda4['id'];_0x2cbda4[_0xdef0('0x50')]=_0x3314a5[_0xdef0('0x46')]['id'];return _0x2cbda4;});return db['AnalyticFieldReport'][_0xdef0('0x4b')](_0x29ee51,{'transaction':_0x4ccb83});});})[_0xdef0('0x24')](function(){return db['AnalyticFieldReport'][_0xdef0('0x42')]({'where':{'CustomReportId':_0x3314a5[_0xdef0('0x46')]['id']}});});}})[_0xdef0('0x24')](respondWithResult(_0x4c9543,null))[_0xdef0('0x44')](handleError(_0x4c9543,null));};
\ No newline at end of file
+var _0xde02=['status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','stack','name','send','index','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','bulkCreate','destroy','bulkDestroy','ids','addFields','AnalyticCustomReport','findOne','sequelize','transaction','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x5cbb33,_0x372f06){var _0x16e5d0=function(_0x3709a4){while(--_0x3709a4){_0x5cbb33['push'](_0x5cbb33['shift']());}};_0x16e5d0(++_0x372f06);}(_0xde02,0xeb));var _0x2de0=function(_0x414663,_0x337d3f){_0x414663=_0x414663-0x0;var _0x1c20d5=_0xde02[_0x414663];return _0x1c20d5;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2de0('0x0'));var jsonpatch=require(_0x2de0('0x1'));var rp=require(_0x2de0('0x2'));var moment=require(_0x2de0('0x3'));var BPromise=require(_0x2de0('0x4'));var Mustache=require(_0x2de0('0x5'));var util=require(_0x2de0('0x6'));var path=require(_0x2de0('0x7'));var sox=require(_0x2de0('0x8'));var csv=require(_0x2de0('0x9'));var ejs=require(_0x2de0('0xa'));var fs=require('fs');var fs_extra=require(_0x2de0('0xb'));var _=require(_0x2de0('0xc'));var squel=require(_0x2de0('0xd'));var crypto=require(_0x2de0('0xe'));var jsforce=require(_0x2de0('0xf'));var deskjs=require(_0x2de0('0x10'));var toCsv=require('to-csv');var querystring=require(_0x2de0('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x2de0('0x12'));var qs=require(_0x2de0('0x13'));var as=require(_0x2de0('0x14'));var hardwareService=require(_0x2de0('0x15'));var logger=require(_0x2de0('0x16'))(_0x2de0('0x17'));var utils=require(_0x2de0('0x18'));var config=require(_0x2de0('0x19'));var licenseUtil=require(_0x2de0('0x1a'));var db=require(_0x2de0('0x1b'))['db'];function respondWithStatusCode(_0x38b197,_0x1ea6ce){_0x1ea6ce=_0x1ea6ce||0xcc;return function(_0x4aa5d6){if(_0x4aa5d6){return _0x38b197[_0x2de0('0x1c')](_0x1ea6ce);}return _0x38b197[_0x2de0('0x1d')](_0x1ea6ce)[_0x2de0('0x1e')]();};}function respondWithResult(_0x41ed5a,_0x4d8513){_0x4d8513=_0x4d8513||0xc8;return function(_0x591971){if(_0x591971){return _0x41ed5a[_0x2de0('0x1d')](_0x4d8513)[_0x2de0('0x1f')](_0x591971);}};}function respondWithFilteredResult(_0x4c110c,_0x30f40e){return function(_0x43160c){if(_0x43160c){var _0x4dfae4=typeof _0x30f40e[_0x2de0('0x20')]==='undefined'&&typeof _0x30f40e[_0x2de0('0x21')]===_0x2de0('0x22');var _0x5e4742=_0x43160c[_0x2de0('0x23')];var _0x5bf92e=_0x4dfae4?0x0:_0x30f40e[_0x2de0('0x20')];var _0x3452c0=_0x4dfae4?_0x43160c[_0x2de0('0x23')]:_0x30f40e[_0x2de0('0x20')]+_0x30f40e['limit'];var _0x1e5798;if(_0x3452c0>=_0x5e4742){_0x3452c0=_0x5e4742;_0x1e5798=0xc8;}else{_0x1e5798=0xce;}_0x4c110c[_0x2de0('0x1d')](_0x1e5798);return _0x4c110c[_0x2de0('0x24')](_0x2de0('0x25'),_0x5bf92e+'-'+_0x3452c0+'/'+_0x5e4742)[_0x2de0('0x1f')](_0x43160c);}return null;};}function patchUpdates(_0x4f2a8e){return function(_0x24ff4f){try{jsonpatch[_0x2de0('0x26')](_0x24ff4f,_0x4f2a8e,!![]);}catch(_0x25f74b){return BPromise[_0x2de0('0x27')](_0x25f74b);}return _0x24ff4f[_0x2de0('0x28')]();};}function saveUpdates(_0x4b3a05,_0x1b0ca3){return function(_0x5b5d48){if(_0x5b5d48){return _0x5b5d48[_0x2de0('0x29')](_0x4b3a05)[_0x2de0('0x2a')](function(_0x38267b){return _0x38267b;});}return null;};}function removeEntity(_0x2ae399,_0x56114a){return function(_0x47540f){if(_0x47540f){return _0x47540f['destroy']()[_0x2de0('0x2a')](function(){_0x2ae399[_0x2de0('0x1d')](0xcc)[_0x2de0('0x1e')]();});}};}function handleEntityNotFound(_0x21a9e9,_0x29f6d7){return function(_0x26b191){if(!_0x26b191){_0x21a9e9[_0x2de0('0x1c')](0x194);}return _0x26b191;};}function handleError(_0x362553,_0x3f51f0){_0x3f51f0=_0x3f51f0||0x1f4;return function(_0x4724f0){logger['error'](_0x4724f0[_0x2de0('0x2b')]);if(_0x4724f0[_0x2de0('0x2c')]){delete _0x4724f0['name'];}_0x362553[_0x2de0('0x1d')](_0x3f51f0)[_0x2de0('0x2d')](_0x4724f0);};}exports[_0x2de0('0x2e')]=function(_0x5666ca,_0x12c365){var _0x215d7d={},_0x525df5={},_0x1d944e={'count':0x0,'rows':[]};var _0x3c3c96=_[_0x2de0('0x2f')](db[_0x2de0('0x30')][_0x2de0('0x31')],function(_0x5242ab){return{'name':_0x5242ab[_0x2de0('0x32')],'type':_0x5242ab[_0x2de0('0x33')][_0x2de0('0x34')]};});_0x525df5[_0x2de0('0x35')]=_['map'](_0x3c3c96,_0x2de0('0x2c'));_0x525df5[_0x2de0('0x36')]=_[_0x2de0('0x37')](_0x5666ca['query']);_0x525df5['filters']=_[_0x2de0('0x38')](_0x525df5['model'],_0x525df5[_0x2de0('0x36')]);_0x215d7d[_0x2de0('0x39')]=_[_0x2de0('0x38')](_0x525df5[_0x2de0('0x35')],qs[_0x2de0('0x3a')](_0x5666ca[_0x2de0('0x36')][_0x2de0('0x3a')]));_0x215d7d['attributes']=_0x215d7d[_0x2de0('0x39')][_0x2de0('0x3b')]?_0x215d7d[_0x2de0('0x39')]:_0x525df5['model'];if(!_0x5666ca['query']['hasOwnProperty']('nolimit')){_0x215d7d[_0x2de0('0x21')]=qs[_0x2de0('0x21')](_0x5666ca[_0x2de0('0x36')][_0x2de0('0x21')]);_0x215d7d['offset']=qs[_0x2de0('0x20')](_0x5666ca['query'][_0x2de0('0x20')]);}_0x215d7d[_0x2de0('0x3c')]=qs[_0x2de0('0x3d')](_0x5666ca['query'][_0x2de0('0x3d')]);_0x215d7d[_0x2de0('0x3e')]=qs[_0x2de0('0x3f')](_[_0x2de0('0x40')](_0x5666ca[_0x2de0('0x36')],_0x525df5[_0x2de0('0x3f')]),_0x3c3c96);if(_0x5666ca[_0x2de0('0x36')][_0x2de0('0x41')]){_0x215d7d[_0x2de0('0x3e')]=_['merge'](_0x215d7d[_0x2de0('0x3e')],{'$or':_[_0x2de0('0x2f')](_0x3c3c96,function(_0x37eef0){if(_0x37eef0[_0x2de0('0x33')]!==_0x2de0('0x42')){var _0x18aaa4={};_0x18aaa4[_0x37eef0[_0x2de0('0x2c')]]={'$like':'%'+_0x5666ca['query'][_0x2de0('0x41')]+'%'};return _0x18aaa4;}})});}_0x215d7d=_[_0x2de0('0x43')]({},_0x215d7d,_0x5666ca[_0x2de0('0x44')]);var _0x422202={'where':_0x215d7d[_0x2de0('0x3e')]};return db[_0x2de0('0x30')]['count'](_0x422202)[_0x2de0('0x2a')](function(_0x2c720d){_0x1d944e['count']=_0x2c720d;if(_0x5666ca[_0x2de0('0x36')][_0x2de0('0x45')]){_0x215d7d[_0x2de0('0x46')]=[{'all':!![]}];}return db[_0x2de0('0x30')][_0x2de0('0x47')](_0x215d7d);})[_0x2de0('0x2a')](function(_0x239de0){_0x1d944e[_0x2de0('0x48')]=_0x239de0;return _0x1d944e;})[_0x2de0('0x2a')](respondWithFilteredResult(_0x12c365,_0x215d7d))['catch'](handleError(_0x12c365,null));};exports[_0x2de0('0x49')]=function(_0x12a1b9,_0x1d3088){var _0x5ceacf={'raw':![],'where':{'id':_0x12a1b9[_0x2de0('0x4a')]['id']}},_0x88f1cc={};_0x88f1cc[_0x2de0('0x35')]=_[_0x2de0('0x37')](db['AnalyticFieldReport'][_0x2de0('0x31')]);_0x88f1cc['query']=_[_0x2de0('0x37')](_0x12a1b9[_0x2de0('0x36')]);_0x88f1cc[_0x2de0('0x3f')]=_[_0x2de0('0x38')](_0x88f1cc['model'],_0x88f1cc[_0x2de0('0x36')]);_0x5ceacf[_0x2de0('0x39')]=_['intersection'](_0x88f1cc[_0x2de0('0x35')],qs[_0x2de0('0x3a')](_0x12a1b9['query'][_0x2de0('0x3a')]));_0x5ceacf['attributes']=_0x5ceacf[_0x2de0('0x39')]['length']?_0x5ceacf[_0x2de0('0x39')]:_0x88f1cc[_0x2de0('0x35')];if(_0x12a1b9[_0x2de0('0x36')][_0x2de0('0x45')]){_0x5ceacf['include']=[{'all':!![]}];}_0x5ceacf=_[_0x2de0('0x43')]({},_0x5ceacf,_0x12a1b9['options']);return db['AnalyticFieldReport'][_0x2de0('0x4b')](_0x5ceacf)[_0x2de0('0x2a')](handleEntityNotFound(_0x1d3088,null))['then'](respondWithResult(_0x1d3088,null))[_0x2de0('0x4c')](handleError(_0x1d3088,null));};exports['create']=function(_0xb13f2d,_0x4138d0){return db[_0x2de0('0x30')][_0x2de0('0x4d')](_0xb13f2d[_0x2de0('0x4e')],{})[_0x2de0('0x2a')](respondWithResult(_0x4138d0,0xc9))[_0x2de0('0x4c')](handleError(_0x4138d0,null));};exports['bulkCreate']=function(_0x19ed06,_0x438d1d){return db[_0x2de0('0x30')][_0x2de0('0x4f')](_0x19ed06[_0x2de0('0x4e')],{'raw':![],'individualHooks':!![]})[_0x2de0('0x2a')](respondWithResult(_0x438d1d,0xc9))[_0x2de0('0x4c')](handleError(_0x438d1d,null));};exports[_0x2de0('0x29')]=function(_0x3f6576,_0x1b8646){if(_0x3f6576[_0x2de0('0x4e')]['id']){delete _0x3f6576[_0x2de0('0x4e')]['id'];}return db[_0x2de0('0x30')]['find']({'where':{'id':_0x3f6576[_0x2de0('0x4a')]['id']}})[_0x2de0('0x2a')](handleEntityNotFound(_0x1b8646,null))[_0x2de0('0x2a')](saveUpdates(_0x3f6576[_0x2de0('0x4e')],null))[_0x2de0('0x2a')](respondWithResult(_0x1b8646,null))['catch'](handleError(_0x1b8646,null));};exports[_0x2de0('0x50')]=function(_0x5ad69f,_0x2f08cb){return db['AnalyticFieldReport'][_0x2de0('0x4b')]({'where':{'id':_0x5ad69f[_0x2de0('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2f08cb,null))['then'](removeEntity(_0x2f08cb,null))[_0x2de0('0x4c')](handleError(_0x2f08cb,null));};exports[_0x2de0('0x51')]=function(_0x160913,_0x4107d6){return db['AnalyticFieldReport'][_0x2de0('0x50')]({'where':{'id':_0x160913['query'][_0x2de0('0x52')]||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x4107d6,0xcc))[_0x2de0('0x4c')](handleError(_0x4107d6,null));};exports[_0x2de0('0x53')]=function(_0x2a6551,_0x1798de,_0x14b38a){return db[_0x2de0('0x54')][_0x2de0('0x55')]({'where':{'id':_0x2a6551[_0x2de0('0x4a')]['id']}})[_0x2de0('0x2a')](handleEntityNotFound(_0x1798de,null))[_0x2de0('0x2a')](function(_0x52d34a){if(_0x52d34a){return db[_0x2de0('0x56')][_0x2de0('0x57')](function(_0xdc2dbb){return db[_0x2de0('0x30')][_0x2de0('0x50')]({'where':{'CustomReportId':_0x2a6551[_0x2de0('0x4a')]['id']},'transaction':_0xdc2dbb})[_0x2de0('0x2a')](function(_0x5a35d6){var _0x5663b4=_[_0x2de0('0x2f')](_0x2a6551[_0x2de0('0x4e')],function(_0x595118){delete _0x595118['id'];_0x595118['CustomReportId']=_0x2a6551['params']['id'];return _0x595118;});return db[_0x2de0('0x30')][_0x2de0('0x4f')](_0x5663b4,{'transaction':_0xdc2dbb});});})[_0x2de0('0x2a')](function(){return db['AnalyticFieldReport'][_0x2de0('0x47')]({'where':{'CustomReportId':_0x2a6551[_0x2de0('0x4a')]['id']}});});}})[_0x2de0('0x2a')](respondWithResult(_0x1798de,null))[_0x2de0('0x4c')](handleError(_0x1798de,null));};
\ No newline at end of file
index 5ecbd52..a4137ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc938=['moment','request-promise','rimraf','./analyticFieldReport.attributes','exports','AnalyticFieldReport','lodash','util','../../config/logger','api'];(function(_0x4d35eb,_0x543ce3){var _0x1e248b=function(_0x184594){while(--_0x184594){_0x4d35eb['push'](_0x4d35eb['shift']());}};_0x1e248b(++_0x543ce3);}(_0xc938,0x1be));var _0x8c93=function(_0x5643fd,_0x220b84){_0x5643fd=_0x5643fd-0x0;var _0x11df89=_0xc938[_0x5643fd];return _0x11df89;};'use strict';var _=require(_0x8c93('0x0'));var util=require(_0x8c93('0x1'));var logger=require(_0x8c93('0x2'))(_0x8c93('0x3'));var moment=require(_0x8c93('0x4'));var BPromise=require('bluebird');var rp=require(_0x8c93('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8c93('0x6'));var config=require('../../config/environment');var attributes=require(_0x8c93('0x7'));module[_0x8c93('0x8')]=function(_0x4c60f3,_0x4787c6){return _0x4c60f3['define'](_0x8c93('0x9'),attributes,{'tableName':'analytics_report_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4411=['bluebird','path','../../config/environment','./analyticFieldReport.attributes','define','AnalyticFieldReport','util','api','moment'];(function(_0x168203,_0x2cc788){var _0x1a994d=function(_0x2e0c15){while(--_0x2e0c15){_0x168203['push'](_0x168203['shift']());}};_0x1a994d(++_0x2cc788);}(_0x4411,0xcc));var _0x1441=function(_0x447481,_0x1df3f2){_0x447481=_0x447481-0x0;var _0x3fa4e2=_0x4411[_0x447481];return _0x3fa4e2;};'use strict';var _=require('lodash');var util=require(_0x1441('0x0'));var logger=require('../../config/logger')(_0x1441('0x1'));var moment=require(_0x1441('0x2'));var BPromise=require(_0x1441('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1441('0x4'));var rimraf=require('rimraf');var config=require(_0x1441('0x5'));var attributes=require(_0x1441('0x6'));module['exports']=function(_0x169312,_0xd8d70){return _0x169312[_0x1441('0x7')](_0x1441('0x8'),attributes,{'tableName':'analytics_report_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dea0172..42c58ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a3d=['rpc','jayson/promise','http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','error','code','AnalyticFieldReport,\x20%s,\x20%s','message','request\x20sent','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/logger'];(function(_0x45fc6a,_0x166adb){var _0x14bcfd=function(_0x3ba718){while(--_0x3ba718){_0x45fc6a['push'](_0x45fc6a['shift']());}};_0x14bcfd(++_0x166adb);}(_0x6a3d,0x162));var _0xd6a3=function(_0x2c85c0,_0x1dac4f){_0x2c85c0=_0x2c85c0-0x0;var _0xf4d4c9=_0x6a3d[_0x2c85c0];return _0xf4d4c9;};'use strict';var _=require(_0xd6a3('0x0'));var util=require(_0xd6a3('0x1'));var moment=require(_0xd6a3('0x2'));var BPromise=require('bluebird');var rs=require(_0xd6a3('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd6a3('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd6a3('0x5'))(_0xd6a3('0x6'));var config=require('../../config/environment');var jayson=require(_0xd6a3('0x7'));var client=jayson['client'][_0xd6a3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3be654,_0xbd5fc1,_0x12b21f){return new BPromise(function(_0x404d2e,_0x1ceeeb){return client[_0xd6a3('0x9')](_0x3be654,_0x12b21f)[_0xd6a3('0xa')](function(_0x552b5b){logger[_0xd6a3('0xb')]('AnalyticFieldReport,\x20%s,\x20%s',_0xbd5fc1,'request\x20sent');logger['debug'](_0xd6a3('0xc'),_0xbd5fc1,'request\x20sent',JSON['stringify'](_0x552b5b));if(_0x552b5b[_0xd6a3('0xd')]){if(_0x552b5b[_0xd6a3('0xd')][_0xd6a3('0xe')]===0x1f4){logger[_0xd6a3('0xd')](_0xd6a3('0xf'),_0xbd5fc1,_0x552b5b[_0xd6a3('0xd')][_0xd6a3('0x10')]);return _0x1ceeeb(_0x552b5b['error'][_0xd6a3('0x10')]);}logger[_0xd6a3('0xd')](_0xd6a3('0xf'),_0xbd5fc1,_0x552b5b['error'][_0xd6a3('0x10')]);return _0x404d2e(_0x552b5b[_0xd6a3('0xd')][_0xd6a3('0x10')]);}else{logger['info']('AnalyticFieldReport,\x20%s,\x20%s',_0xbd5fc1,_0xd6a3('0x11'));_0x404d2e(_0x552b5b[_0xd6a3('0x12')][_0xd6a3('0x10')]);}})[_0xd6a3('0x13')](function(_0x337591){logger[_0xd6a3('0xd')](_0xd6a3('0xf'),_0xbd5fc1,_0x337591);_0x1ceeeb(_0x337591);});});}
\ No newline at end of file
+var _0xb849=['http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x25c864,_0x4eb301){var _0xe5ff84=function(_0x21c594){while(--_0x21c594){_0x25c864['push'](_0x25c864['shift']());}};_0xe5ff84(++_0x4eb301);}(_0xb849,0x85));var _0x9b84=function(_0x3f19f2,_0x302e5b){_0x3f19f2=_0x3f19f2-0x0;var _0x5a6a78=_0xb849[_0x3f19f2];return _0x5a6a78;};'use strict';var _=require(_0x9b84('0x0'));var util=require(_0x9b84('0x1'));var moment=require('moment');var BPromise=require(_0x9b84('0x2'));var rs=require(_0x9b84('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9b84('0x4'))['db'];var utils=require(_0x9b84('0x5'));var logger=require(_0x9b84('0x6'))(_0x9b84('0x7'));var config=require(_0x9b84('0x8'));var jayson=require(_0x9b84('0x9'));var client=jayson[_0x9b84('0xa')][_0x9b84('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x31a647,_0x18585b,_0x2c242d){return new BPromise(function(_0x5c9de7,_0x361584){return client[_0x9b84('0xc')](_0x31a647,_0x2c242d)[_0x9b84('0xd')](function(_0x50ef55){logger[_0x9b84('0xe')](_0x9b84('0xf'),_0x18585b,_0x9b84('0x10'));logger[_0x9b84('0x11')](_0x9b84('0x12'),_0x18585b,'request\x20sent',JSON[_0x9b84('0x13')](_0x50ef55));if(_0x50ef55[_0x9b84('0x14')]){if(_0x50ef55['error']['code']===0x1f4){logger['error'](_0x9b84('0xf'),_0x18585b,_0x50ef55[_0x9b84('0x14')]['message']);return _0x361584(_0x50ef55[_0x9b84('0x14')][_0x9b84('0x15')]);}logger[_0x9b84('0x14')](_0x9b84('0xf'),_0x18585b,_0x50ef55[_0x9b84('0x14')][_0x9b84('0x15')]);return _0x5c9de7(_0x50ef55[_0x9b84('0x14')]['message']);}else{logger['info']('AnalyticFieldReport,\x20%s,\x20%s',_0x18585b,'request\x20sent');_0x5c9de7(_0x50ef55[_0x9b84('0x16')][_0x9b84('0x15')]);}})[_0x9b84('0x17')](function(_0x23b141){logger[_0x9b84('0x14')](_0x9b84('0xf'),_0x18585b,_0x23b141);_0x361584(_0x23b141);});});}
\ No newline at end of file
index f586cb4..f827c4e 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(_0x22a29e,_0xedff6b){var _0x1742b8=function(_0x15332b){while(--_0x15332b){_0x22a29e['push'](_0x22a29e['shift']());}};_0x1742b8(++_0xedff6b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xa9e0[_0x2a6809];return _0x11c371;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('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(_0x3b8581,_0x32a9e0){var _0x1e8079=function(_0x487150){while(--_0x487150){_0x3b8581['push'](_0x3b8581['shift']());}};_0x1e8079(++_0x32a9e0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0a9e('0xb')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xb')](_0x0a9e('0xf'),auth['isAuthenticated'](),controller['addFields']);router['put']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);module[_0x0a9e('0x15')]=router;
\ No newline at end of file
index ff887c3..c791556 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa2d=['TEXT','STRING','exports'];(function(_0x56873b,_0x2852d0){var _0x89900d=function(_0x41c4a3){while(--_0x41c4a3){_0x56873b['push'](_0x56873b['shift']());}};_0x89900d(++_0x2852d0);}(_0xaa2d,0x11c));var _0xdaa2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xaa2d[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0xdaa2('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'table':{'type':Sequelize['STRING']},'metric':{'type':Sequelize[_0xdaa2('0x1')]},'description':{'type':Sequelize[_0xdaa2('0x2')]}};
\ No newline at end of file
+var _0xf257=['TEXT','STRING','name'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xf257,0x82));var _0x7f25=function(_0x1c0261,_0xbe62af){_0x1c0261=_0x1c0261-0x0;var _0x1f81d0=_0xf257[_0x1c0261];return _0x1f81d0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x7f25('0x0')],'allowNull':![],'unique':_0x7f25('0x1')},'table':{'type':Sequelize[_0x7f25('0x0')]},'metric':{'type':Sequelize[_0x7f25('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index eddda8d..cdc04f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d6=['includeAll','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Metrics','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','filter','merge','where','VIRTUAL','options','include','AnalyticMetric','rows','show'];(function(_0x2b82a7,_0x12a217){var _0x54c5f5=function(_0x2016f3){while(--_0x2016f3){_0x2b82a7['push'](_0x2b82a7['shift']());}};_0x54c5f5(++_0x12a217);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x609711,_0x34ff04){_0x609711=_0x609711-0x0;var _0x5b0fe7=_0xd6d6[_0x609711];return _0x5b0fe7;};'use strict';var emlformat=require(_0x6d6d('0x0'));var rimraf=require(_0x6d6d('0x1'));var zipdir=require(_0x6d6d('0x2'));var jsonpatch=require(_0x6d6d('0x3'));var rp=require('request-promise');var moment=require(_0x6d6d('0x4'));var BPromise=require(_0x6d6d('0x5'));var Mustache=require(_0x6d6d('0x6'));var util=require(_0x6d6d('0x7'));var path=require(_0x6d6d('0x8'));var sox=require(_0x6d6d('0x9'));var csv=require(_0x6d6d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6d6d('0xb'));var _=require(_0x6d6d('0xc'));var squel=require(_0x6d6d('0xd'));var crypto=require(_0x6d6d('0xe'));var jsforce=require(_0x6d6d('0xf'));var deskjs=require(_0x6d6d('0x10'));var toCsv=require(_0x6d6d('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x6d6d('0x11'));var authService=require(_0x6d6d('0x12'));var qs=require(_0x6d6d('0x13'));var as=require(_0x6d6d('0x14'));var hardwareService=require(_0x6d6d('0x15'));var logger=require('../../config/logger')(_0x6d6d('0x16'));var utils=require(_0x6d6d('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6d6d('0x18'))['db'];function respondWithStatusCode(_0x32146d,_0xe61c36){_0xe61c36=_0xe61c36||0xcc;return function(_0x3f8542){if(_0x3f8542){return _0x32146d[_0x6d6d('0x19')](_0xe61c36);}return _0x32146d[_0x6d6d('0x1a')](_0xe61c36)[_0x6d6d('0x1b')]();};}function respondWithResult(_0x2cb2dd,_0x5f4154){_0x5f4154=_0x5f4154||0xc8;return function(_0xd09ea7){if(_0xd09ea7){return _0x2cb2dd[_0x6d6d('0x1a')](_0x5f4154)[_0x6d6d('0x1c')](_0xd09ea7);}};}function respondWithFilteredResult(_0xa3b05d,_0x29cbd8){return function(_0x5d80c0){if(_0x5d80c0){var _0x2e6fdb=typeof _0x29cbd8['offset']===_0x6d6d('0x1d')&&typeof _0x29cbd8[_0x6d6d('0x1e')]===_0x6d6d('0x1d');var _0x4bb3d1=_0x5d80c0['count'];var _0x9e1e18=_0x2e6fdb?0x0:_0x29cbd8[_0x6d6d('0x1f')];var _0x2b59d4=_0x2e6fdb?_0x5d80c0[_0x6d6d('0x20')]:_0x29cbd8['offset']+_0x29cbd8['limit'];var _0x474873;if(_0x2b59d4>=_0x4bb3d1){_0x2b59d4=_0x4bb3d1;_0x474873=0xc8;}else{_0x474873=0xce;}_0xa3b05d['status'](_0x474873);return _0xa3b05d[_0x6d6d('0x21')](_0x6d6d('0x22'),_0x9e1e18+'-'+_0x2b59d4+'/'+_0x4bb3d1)[_0x6d6d('0x1c')](_0x5d80c0);}return null;};}function patchUpdates(_0x450352){return function(_0x40d35b){try{jsonpatch[_0x6d6d('0x23')](_0x40d35b,_0x450352,!![]);}catch(_0x164c67){return BPromise[_0x6d6d('0x24')](_0x164c67);}return _0x40d35b[_0x6d6d('0x25')]();};}function saveUpdates(_0x6f64e3,_0x24b10d){return function(_0x6e58e3){if(_0x6e58e3){return _0x6e58e3[_0x6d6d('0x26')](_0x6f64e3)[_0x6d6d('0x27')](function(_0x1f7f88){return _0x1f7f88;});}return null;};}function removeEntity(_0x25a02e,_0xced622){return function(_0x583b10){if(_0x583b10){return _0x583b10[_0x6d6d('0x28')]()[_0x6d6d('0x27')](function(){var _0x99f7d6=_0x583b10[_0x6d6d('0x29')]({'plain':!![]});var _0xf0df7f=_0x6d6d('0x2a');return db['UserProfileResource'][_0x6d6d('0x28')]({'where':{'type':_0xf0df7f,'resourceId':_0x99f7d6['id']}})[_0x6d6d('0x27')](function(){return _0x583b10;});})[_0x6d6d('0x27')](function(){_0x25a02e[_0x6d6d('0x1a')](0xcc)[_0x6d6d('0x1b')]();});}};}function handleEntityNotFound(_0x408f98,_0x3641fc){return function(_0x4a57a1){if(!_0x4a57a1){_0x408f98[_0x6d6d('0x19')](0x194);}return _0x4a57a1;};}function handleError(_0x9595d8,_0x51bd68){_0x51bd68=_0x51bd68||0x1f4;return function(_0x553645){logger[_0x6d6d('0x2b')](_0x553645[_0x6d6d('0x2c')]);if(_0x553645[_0x6d6d('0x2d')]){delete _0x553645['name'];}_0x9595d8[_0x6d6d('0x1a')](_0x51bd68)[_0x6d6d('0x2e')](_0x553645);};}exports[_0x6d6d('0x2f')]=function(_0x1c8340,_0x64d1f7){var _0x428c17={},_0xdda3f2={},_0x359cfd={'count':0x0,'rows':[]};var _0x6c4741=_[_0x6d6d('0x30')](db['AnalyticMetric'][_0x6d6d('0x31')],function(_0x4f1fc5){return{'name':_0x4f1fc5[_0x6d6d('0x32')],'type':_0x4f1fc5[_0x6d6d('0x33')][_0x6d6d('0x34')]};});_0xdda3f2[_0x6d6d('0x35')]=_['map'](_0x6c4741,_0x6d6d('0x2d'));_0xdda3f2['query']=_[_0x6d6d('0x36')](_0x1c8340[_0x6d6d('0x37')]);_0xdda3f2['filters']=_[_0x6d6d('0x38')](_0xdda3f2[_0x6d6d('0x35')],_0xdda3f2[_0x6d6d('0x37')]);_0x428c17[_0x6d6d('0x39')]=_[_0x6d6d('0x38')](_0xdda3f2[_0x6d6d('0x35')],qs[_0x6d6d('0x3a')](_0x1c8340[_0x6d6d('0x37')][_0x6d6d('0x3a')]));_0x428c17[_0x6d6d('0x39')]=_0x428c17[_0x6d6d('0x39')][_0x6d6d('0x3b')]?_0x428c17[_0x6d6d('0x39')]:_0xdda3f2[_0x6d6d('0x35')];if(!_0x1c8340['query'][_0x6d6d('0x3c')](_0x6d6d('0x3d'))){_0x428c17[_0x6d6d('0x1e')]=qs[_0x6d6d('0x1e')](_0x1c8340['query']['limit']);_0x428c17[_0x6d6d('0x1f')]=qs[_0x6d6d('0x1f')](_0x1c8340[_0x6d6d('0x37')]['offset']);}_0x428c17[_0x6d6d('0x3e')]=qs[_0x6d6d('0x3f')](_0x1c8340[_0x6d6d('0x37')][_0x6d6d('0x3f')]);_0x428c17['where']=qs['filters'](_['pick'](_0x1c8340[_0x6d6d('0x37')],_0xdda3f2[_0x6d6d('0x40')]),_0x6c4741);if(_0x1c8340[_0x6d6d('0x37')][_0x6d6d('0x41')]){_0x428c17['where']=_[_0x6d6d('0x42')](_0x428c17[_0x6d6d('0x43')],{'$or':_[_0x6d6d('0x30')](_0x6c4741,function(_0x3c6d23){if(_0x3c6d23[_0x6d6d('0x33')]!==_0x6d6d('0x44')){var _0x4b457d={};_0x4b457d[_0x3c6d23[_0x6d6d('0x2d')]]={'$like':'%'+_0x1c8340[_0x6d6d('0x37')][_0x6d6d('0x41')]+'%'};return _0x4b457d;}})});}_0x428c17=_[_0x6d6d('0x42')]({},_0x428c17,_0x1c8340[_0x6d6d('0x45')]);var _0x3e27b7={'where':_0x428c17[_0x6d6d('0x43')]};return db['AnalyticMetric'][_0x6d6d('0x20')](_0x3e27b7)[_0x6d6d('0x27')](function(_0x16e177){_0x359cfd[_0x6d6d('0x20')]=_0x16e177;if(_0x1c8340[_0x6d6d('0x37')]['includeAll']){_0x428c17[_0x6d6d('0x46')]=[{'all':!![]}];}return db[_0x6d6d('0x47')]['findAll'](_0x428c17);})[_0x6d6d('0x27')](function(_0x50dc17){_0x359cfd[_0x6d6d('0x48')]=_0x50dc17;return _0x359cfd;})[_0x6d6d('0x27')](respondWithFilteredResult(_0x64d1f7,_0x428c17))['catch'](handleError(_0x64d1f7,null));};exports[_0x6d6d('0x49')]=function(_0x3324ec,_0x252cbe){var _0x4041f3={'raw':!![],'where':{'id':_0x3324ec['params']['id']}},_0xf7ea0d={};_0xf7ea0d['model']=_[_0x6d6d('0x36')](db['AnalyticMetric']['rawAttributes']);_0xf7ea0d[_0x6d6d('0x37')]=_[_0x6d6d('0x36')](_0x3324ec[_0x6d6d('0x37')]);_0xf7ea0d['filters']=_[_0x6d6d('0x38')](_0xf7ea0d['model'],_0xf7ea0d[_0x6d6d('0x37')]);_0x4041f3[_0x6d6d('0x39')]=_[_0x6d6d('0x38')](_0xf7ea0d[_0x6d6d('0x35')],qs[_0x6d6d('0x3a')](_0x3324ec[_0x6d6d('0x37')][_0x6d6d('0x3a')]));_0x4041f3['attributes']=_0x4041f3[_0x6d6d('0x39')][_0x6d6d('0x3b')]?_0x4041f3[_0x6d6d('0x39')]:_0xf7ea0d[_0x6d6d('0x35')];if(_0x3324ec[_0x6d6d('0x37')][_0x6d6d('0x4a')]){_0x4041f3[_0x6d6d('0x46')]=[{'all':!![]}];}_0x4041f3=_[_0x6d6d('0x42')]({},_0x4041f3,_0x3324ec[_0x6d6d('0x45')]);return db['AnalyticMetric']['find'](_0x4041f3)[_0x6d6d('0x27')](handleEntityNotFound(_0x252cbe,null))[_0x6d6d('0x27')](respondWithResult(_0x252cbe,null))[_0x6d6d('0x4b')](handleError(_0x252cbe,null));};exports[_0x6d6d('0x4c')]=function(_0xe2a20e,_0x492834){return db[_0x6d6d('0x47')][_0x6d6d('0x4c')](_0xe2a20e[_0x6d6d('0x4d')],{})[_0x6d6d('0x27')](function(_0x2ee917){var _0x23c2db=_0xe2a20e[_0x6d6d('0x4e')][_0x6d6d('0x29')]({'plain':!![]});if(!_0x23c2db)throw new Error(_0x6d6d('0x4f'));if(_0x23c2db[_0x6d6d('0x50')]===_0x6d6d('0x4e')){var _0x175e26=_0x2ee917['get']({'plain':!![]});var _0x190786=_0x6d6d('0x2a');return db[_0x6d6d('0x51')][_0x6d6d('0x52')]({'where':{'name':_0x190786,'userProfileId':_0x23c2db[_0x6d6d('0x53')]},'raw':!![]})['then'](function(_0x38c307){if(_0x38c307&&_0x38c307[_0x6d6d('0x54')]===0x0){return db[_0x6d6d('0x55')]['create']({'name':_0x175e26['name'],'resourceId':_0x175e26['id'],'type':_0x38c307[_0x6d6d('0x2d')],'sectionId':_0x38c307['id']},{})['then'](function(){return _0x2ee917;});}else{return _0x2ee917;}})[_0x6d6d('0x4b')](function(_0x995fe2){logger[_0x6d6d('0x2b')](_0x6d6d('0x56'),_0x995fe2);throw _0x995fe2;});}return _0x2ee917;})[_0x6d6d('0x27')](respondWithResult(_0x492834,0xc9))[_0x6d6d('0x4b')](handleError(_0x492834,null));};exports[_0x6d6d('0x26')]=function(_0x26c23a,_0x1a8f33){if(_0x26c23a[_0x6d6d('0x4d')]['id']){delete _0x26c23a['body']['id'];}return db[_0x6d6d('0x47')][_0x6d6d('0x52')]({'where':{'id':_0x26c23a[_0x6d6d('0x57')]['id']}})[_0x6d6d('0x27')](handleEntityNotFound(_0x1a8f33,null))[_0x6d6d('0x27')](saveUpdates(_0x26c23a[_0x6d6d('0x4d')],null))[_0x6d6d('0x27')](respondWithResult(_0x1a8f33,null))['catch'](handleError(_0x1a8f33,null));};exports['destroy']=function(_0x3ad9b0,_0x122865){return db['AnalyticMetric'][_0x6d6d('0x52')]({'where':{'id':_0x3ad9b0[_0x6d6d('0x57')]['id']}})[_0x6d6d('0x27')](handleEntityNotFound(_0x122865,null))[_0x6d6d('0x27')](removeEntity(_0x122865,null))[_0x6d6d('0x4b')](handleError(_0x122865,null));};
\ No newline at end of file
+var _0x84ab=['UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','get','Metrics','UserProfileResource','error','stack','name','map','AnalyticMetric','rawAttributes','fieldName','key','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','filter','type','VIRTUAL','includeAll','include','catch','show','params','keys','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user'];(function(_0x5a7d5f,_0x5695cb){var _0x5dcded=function(_0x13f053){while(--_0x13f053){_0x5a7d5f['push'](_0x5a7d5f['shift']());}};_0x5dcded(++_0x5695cb);}(_0x84ab,0x12f));var _0xb84a=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0x84ab[_0x376b45];return _0x2341b3;};'use strict';var emlformat=require(_0xb84a('0x0'));var rimraf=require(_0xb84a('0x1'));var zipdir=require(_0xb84a('0x2'));var jsonpatch=require(_0xb84a('0x3'));var rp=require(_0xb84a('0x4'));var moment=require('moment');var BPromise=require(_0xb84a('0x5'));var Mustache=require(_0xb84a('0x6'));var util=require('util');var path=require(_0xb84a('0x7'));var sox=require(_0xb84a('0x8'));var csv=require(_0xb84a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb84a('0xa'));var crypto=require('crypto');var jsforce=require(_0xb84a('0xb'));var deskjs=require(_0xb84a('0xc'));var toCsv=require('to-csv');var querystring=require(_0xb84a('0xd'));var Papa=require('papaparse');var Redis=require(_0xb84a('0xe'));var authService=require(_0xb84a('0xf'));var qs=require(_0xb84a('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb84a('0x11'));var utils=require(_0xb84a('0x12'));var config=require(_0xb84a('0x13'));var licenseUtil=require(_0xb84a('0x14'));var db=require(_0xb84a('0x15'))['db'];function respondWithStatusCode(_0x4d3758,_0x83444e){_0x83444e=_0x83444e||0xcc;return function(_0x4777dc){if(_0x4777dc){return _0x4d3758[_0xb84a('0x16')](_0x83444e);}return _0x4d3758[_0xb84a('0x17')](_0x83444e)[_0xb84a('0x18')]();};}function respondWithResult(_0x11dfe9,_0x12ccab){_0x12ccab=_0x12ccab||0xc8;return function(_0x475b){if(_0x475b){return _0x11dfe9[_0xb84a('0x17')](_0x12ccab)[_0xb84a('0x19')](_0x475b);}};}function respondWithFilteredResult(_0xc0b2e0,_0x1251ec){return function(_0x5716bd){if(_0x5716bd){var _0x11dd4d=typeof _0x1251ec[_0xb84a('0x1a')]===_0xb84a('0x1b')&&typeof _0x1251ec[_0xb84a('0x1c')]===_0xb84a('0x1b');var _0x1be87a=_0x5716bd[_0xb84a('0x1d')];var _0x34d82f=_0x11dd4d?0x0:_0x1251ec[_0xb84a('0x1a')];var _0x3f7437=_0x11dd4d?_0x5716bd[_0xb84a('0x1d')]:_0x1251ec[_0xb84a('0x1a')]+_0x1251ec[_0xb84a('0x1c')];var _0x200289;if(_0x3f7437>=_0x1be87a){_0x3f7437=_0x1be87a;_0x200289=0xc8;}else{_0x200289=0xce;}_0xc0b2e0['status'](_0x200289);return _0xc0b2e0[_0xb84a('0x1e')](_0xb84a('0x1f'),_0x34d82f+'-'+_0x3f7437+'/'+_0x1be87a)['json'](_0x5716bd);}return null;};}function patchUpdates(_0xac76d3){return function(_0x61ef03){try{jsonpatch[_0xb84a('0x20')](_0x61ef03,_0xac76d3,!![]);}catch(_0x19f637){return BPromise['reject'](_0x19f637);}return _0x61ef03['save']();};}function saveUpdates(_0x1466ae,_0x19097d){return function(_0x2d70fd){if(_0x2d70fd){return _0x2d70fd[_0xb84a('0x21')](_0x1466ae)[_0xb84a('0x22')](function(_0x3b8fb2){return _0x3b8fb2;});}return null;};}function removeEntity(_0x8b28cd,_0x21d0d3){return function(_0x3aa06f){if(_0x3aa06f){return _0x3aa06f[_0xb84a('0x23')]()[_0xb84a('0x22')](function(){var _0x1aab7d=_0x3aa06f[_0xb84a('0x24')]({'plain':!![]});var _0x409df0=_0xb84a('0x25');return db[_0xb84a('0x26')][_0xb84a('0x23')]({'where':{'type':_0x409df0,'resourceId':_0x1aab7d['id']}})[_0xb84a('0x22')](function(){return _0x3aa06f;});})[_0xb84a('0x22')](function(){_0x8b28cd[_0xb84a('0x17')](0xcc)[_0xb84a('0x18')]();});}};}function handleEntityNotFound(_0x1db72c,_0x2fe40d){return function(_0x35d1f7){if(!_0x35d1f7){_0x1db72c[_0xb84a('0x16')](0x194);}return _0x35d1f7;};}function handleError(_0x97d71b,_0x5349ea){_0x5349ea=_0x5349ea||0x1f4;return function(_0x582954){logger[_0xb84a('0x27')](_0x582954[_0xb84a('0x28')]);if(_0x582954['name']){delete _0x582954[_0xb84a('0x29')];}_0x97d71b[_0xb84a('0x17')](_0x5349ea)['send'](_0x582954);};}exports['index']=function(_0x28f2e7,_0x8e9319){var _0x49ba3d={},_0x251778={},_0xba1147={'count':0x0,'rows':[]};var _0x3abc22=_[_0xb84a('0x2a')](db[_0xb84a('0x2b')][_0xb84a('0x2c')],function(_0x34b212){return{'name':_0x34b212[_0xb84a('0x2d')],'type':_0x34b212['type'][_0xb84a('0x2e')]};});_0x251778['model']=_['map'](_0x3abc22,_0xb84a('0x29'));_0x251778[_0xb84a('0x2f')]=_['keys'](_0x28f2e7['query']);_0x251778[_0xb84a('0x30')]=_[_0xb84a('0x31')](_0x251778[_0xb84a('0x32')],_0x251778[_0xb84a('0x2f')]);_0x49ba3d[_0xb84a('0x33')]=_[_0xb84a('0x31')](_0x251778[_0xb84a('0x32')],qs[_0xb84a('0x34')](_0x28f2e7['query'][_0xb84a('0x34')]));_0x49ba3d[_0xb84a('0x33')]=_0x49ba3d[_0xb84a('0x33')][_0xb84a('0x35')]?_0x49ba3d[_0xb84a('0x33')]:_0x251778[_0xb84a('0x32')];if(!_0x28f2e7[_0xb84a('0x2f')]['hasOwnProperty'](_0xb84a('0x36'))){_0x49ba3d['limit']=qs[_0xb84a('0x1c')](_0x28f2e7[_0xb84a('0x2f')][_0xb84a('0x1c')]);_0x49ba3d['offset']=qs['offset'](_0x28f2e7[_0xb84a('0x2f')][_0xb84a('0x1a')]);}_0x49ba3d[_0xb84a('0x37')]=qs[_0xb84a('0x38')](_0x28f2e7[_0xb84a('0x2f')]['sort']);_0x49ba3d[_0xb84a('0x39')]=qs[_0xb84a('0x30')](_['pick'](_0x28f2e7[_0xb84a('0x2f')],_0x251778[_0xb84a('0x30')]),_0x3abc22);if(_0x28f2e7[_0xb84a('0x2f')][_0xb84a('0x3a')]){_0x49ba3d['where']=_['merge'](_0x49ba3d['where'],{'$or':_[_0xb84a('0x2a')](_0x3abc22,function(_0x11e1ac){if(_0x11e1ac[_0xb84a('0x3b')]!==_0xb84a('0x3c')){var _0x55b0b8={};_0x55b0b8[_0x11e1ac[_0xb84a('0x29')]]={'$like':'%'+_0x28f2e7['query'][_0xb84a('0x3a')]+'%'};return _0x55b0b8;}})});}_0x49ba3d=_['merge']({},_0x49ba3d,_0x28f2e7['options']);var _0x59d7a1={'where':_0x49ba3d[_0xb84a('0x39')]};return db[_0xb84a('0x2b')][_0xb84a('0x1d')](_0x59d7a1)[_0xb84a('0x22')](function(_0x5e547e){_0xba1147[_0xb84a('0x1d')]=_0x5e547e;if(_0x28f2e7[_0xb84a('0x2f')][_0xb84a('0x3d')]){_0x49ba3d[_0xb84a('0x3e')]=[{'all':!![]}];}return db['AnalyticMetric']['findAll'](_0x49ba3d);})[_0xb84a('0x22')](function(_0x1f3e04){_0xba1147['rows']=_0x1f3e04;return _0xba1147;})[_0xb84a('0x22')](respondWithFilteredResult(_0x8e9319,_0x49ba3d))[_0xb84a('0x3f')](handleError(_0x8e9319,null));};exports[_0xb84a('0x40')]=function(_0x25280a,_0x3f005b){var _0x241536={'raw':!![],'where':{'id':_0x25280a[_0xb84a('0x41')]['id']}},_0x24d700={};_0x24d700[_0xb84a('0x32')]=_[_0xb84a('0x42')](db[_0xb84a('0x2b')][_0xb84a('0x2c')]);_0x24d700[_0xb84a('0x2f')]=_[_0xb84a('0x42')](_0x25280a[_0xb84a('0x2f')]);_0x24d700['filters']=_[_0xb84a('0x31')](_0x24d700[_0xb84a('0x32')],_0x24d700[_0xb84a('0x2f')]);_0x241536[_0xb84a('0x33')]=_[_0xb84a('0x31')](_0x24d700[_0xb84a('0x32')],qs['fields'](_0x25280a[_0xb84a('0x2f')]['fields']));_0x241536[_0xb84a('0x33')]=_0x241536[_0xb84a('0x33')][_0xb84a('0x35')]?_0x241536[_0xb84a('0x33')]:_0x24d700['model'];if(_0x25280a[_0xb84a('0x2f')][_0xb84a('0x3d')]){_0x241536[_0xb84a('0x3e')]=[{'all':!![]}];}_0x241536=_['merge']({},_0x241536,_0x25280a['options']);return db[_0xb84a('0x2b')][_0xb84a('0x43')](_0x241536)[_0xb84a('0x22')](handleEntityNotFound(_0x3f005b,null))['then'](respondWithResult(_0x3f005b,null))['catch'](handleError(_0x3f005b,null));};exports['create']=function(_0x45630d,_0x384a0d){return db[_0xb84a('0x2b')][_0xb84a('0x44')](_0x45630d[_0xb84a('0x45')],{})['then'](function(_0x4b40fe){var _0x5b853a=_0x45630d['user'][_0xb84a('0x24')]({'plain':!![]});if(!_0x5b853a)throw new Error(_0xb84a('0x46'));if(_0x5b853a['role']===_0xb84a('0x47')){var _0xc8bac2=_0x4b40fe[_0xb84a('0x24')]({'plain':!![]});var _0x2f70f0=_0xb84a('0x25');return db[_0xb84a('0x48')]['find']({'where':{'name':_0x2f70f0,'userProfileId':_0x5b853a['userProfileId']},'raw':!![]})[_0xb84a('0x22')](function(_0x50172a){if(_0x50172a&&_0x50172a[_0xb84a('0x49')]===0x0){return db['UserProfileResource']['create']({'name':_0xc8bac2['name'],'resourceId':_0xc8bac2['id'],'type':_0x50172a[_0xb84a('0x29')],'sectionId':_0x50172a['id']},{})[_0xb84a('0x22')](function(){return _0x4b40fe;});}else{return _0x4b40fe;}})[_0xb84a('0x3f')](function(_0x25b6a0){logger[_0xb84a('0x27')](_0xb84a('0x4a'),_0x25b6a0);throw _0x25b6a0;});}return _0x4b40fe;})[_0xb84a('0x22')](respondWithResult(_0x384a0d,0xc9))[_0xb84a('0x3f')](handleError(_0x384a0d,null));};exports['update']=function(_0x5afdd0,_0x4c5bdf){if(_0x5afdd0[_0xb84a('0x45')]['id']){delete _0x5afdd0[_0xb84a('0x45')]['id'];}return db['AnalyticMetric'][_0xb84a('0x43')]({'where':{'id':_0x5afdd0['params']['id']}})['then'](handleEntityNotFound(_0x4c5bdf,null))['then'](saveUpdates(_0x5afdd0[_0xb84a('0x45')],null))[_0xb84a('0x22')](respondWithResult(_0x4c5bdf,null))[_0xb84a('0x3f')](handleError(_0x4c5bdf,null));};exports['destroy']=function(_0x5f757e,_0x2e98bf){return db[_0xb84a('0x2b')]['find']({'where':{'id':_0x5f757e[_0xb84a('0x41')]['id']}})['then'](handleEntityNotFound(_0x2e98bf,null))['then'](removeEntity(_0x2e98bf,null))[_0xb84a('0x3f')](handleError(_0x2e98bf,null));};
\ No newline at end of file
index 999f109..6506e26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aac=['./analyticMetric.attributes','define','analytics_metrics','lodash','../../config/logger','api','bluebird','path','../../config/environment'];(function(_0x118867,_0x4fc6ee){var _0xc51d94=function(_0x45538b){while(--_0x45538b){_0x118867['push'](_0x118867['shift']());}};_0xc51d94(++_0x4fc6ee);}(_0x9aac,0x135));var _0xc9aa=function(_0x47ef54,_0x5b0637){_0x47ef54=_0x47ef54-0x0;var _0x323367=_0x9aac[_0x47ef54];return _0x323367;};'use strict';var _=require(_0xc9aa('0x0'));var util=require('util');var logger=require(_0xc9aa('0x1'))(_0xc9aa('0x2'));var moment=require('moment');var BPromise=require(_0xc9aa('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc9aa('0x4'));var rimraf=require('rimraf');var config=require(_0xc9aa('0x5'));var attributes=require(_0xc9aa('0x6'));module['exports']=function(_0x280687,_0x2f9029){return _0x280687[_0xc9aa('0x7')]('AnalyticMetric',attributes,{'tableName':_0xc9aa('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x93bb=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','AnalyticMetric','lodash','util','../../config/logger'];(function(_0x3c7ce2,_0xc3c192){var _0x488577=function(_0x8e0744){while(--_0x8e0744){_0x3c7ce2['push'](_0x3c7ce2['shift']());}};_0x488577(++_0xc3c192);}(_0x93bb,0x135));var _0xb93b=function(_0x23f994,_0x5e398a){_0x23f994=_0x23f994-0x0;var _0x3d0858=_0x93bb[_0x23f994];return _0x3d0858;};'use strict';var _=require(_0xb93b('0x0'));var util=require(_0xb93b('0x1'));var logger=require(_0xb93b('0x2'))(_0xb93b('0x3'));var moment=require(_0xb93b('0x4'));var BPromise=require(_0xb93b('0x5'));var rp=require(_0xb93b('0x6'));var fs=require('fs');var path=require(_0xb93b('0x7'));var rimraf=require(_0xb93b('0x8'));var config=require(_0xb93b('0x9'));var attributes=require('./analyticMetric.attributes');module[_0xb93b('0xa')]=function(_0x1ec4dd,_0x4e89c7){return _0x1ec4dd[_0xb93b('0xb')](_0xb93b('0xc'),attributes,{'tableName':'analytics_metrics','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a6e6bd4..cd4d733 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2cb=['info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','error','code','message','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x19416d,_0x54c85e){var _0x17528f=function(_0x29fb3f){while(--_0x29fb3f){_0x19416d['push'](_0x19416d['shift']());}};_0x17528f(++_0x54c85e);}(_0xe2cb,0xcd));var _0xbe2c=function(_0x35112c,_0x2240b2){_0x35112c=_0x35112c-0x0;var _0x3bda61=_0xe2cb[_0x35112c];return _0x3bda61;};'use strict';var _=require('lodash');var util=require(_0xbe2c('0x0'));var moment=require(_0xbe2c('0x1'));var BPromise=require(_0xbe2c('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbe2c('0x3'));var db=require(_0xbe2c('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xbe2c('0x5'));var config=require(_0xbe2c('0x6'));var jayson=require(_0xbe2c('0x7'));var client=jayson[_0xbe2c('0x8')][_0xbe2c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xa5f10a,_0x336335,_0x36ffde){return new BPromise(function(_0x21b19e,_0x3a1244){return client[_0xbe2c('0xa')](_0xa5f10a,_0x36ffde)['then'](function(_0x59a4f9){logger[_0xbe2c('0xb')](_0xbe2c('0xc'),_0x336335,_0xbe2c('0xd'));logger[_0xbe2c('0xe')]('AnalyticMetric,\x20%s,\x20%s,\x20%s',_0x336335,_0xbe2c('0xd'),JSON['stringify'](_0x59a4f9));if(_0x59a4f9['error']){if(_0x59a4f9[_0xbe2c('0xf')][_0xbe2c('0x10')]===0x1f4){logger['error'](_0xbe2c('0xc'),_0x336335,_0x59a4f9[_0xbe2c('0xf')][_0xbe2c('0x11')]);return _0x3a1244(_0x59a4f9[_0xbe2c('0xf')][_0xbe2c('0x11')]);}logger['error'](_0xbe2c('0xc'),_0x336335,_0x59a4f9['error'][_0xbe2c('0x11')]);return _0x21b19e(_0x59a4f9[_0xbe2c('0xf')][_0xbe2c('0x11')]);}else{logger[_0xbe2c('0xb')](_0xbe2c('0xc'),_0x336335,'request\x20sent');_0x21b19e(_0x59a4f9['result'][_0xbe2c('0x11')]);}})['catch'](function(_0x2cf8dc){logger[_0xbe2c('0xf')](_0xbe2c('0xc'),_0x336335,_0x2cf8dc);_0x3a1244(_0x2cf8dc);});});}
\ No newline at end of file
+var _0x4dc5=['debug','error','code','message','info','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','AnalyticMetric,\x20%s,\x20%s','request\x20sent'];(function(_0x33ccab,_0x3bc60e){var _0x4ea9fe=function(_0x20e68e){while(--_0x20e68e){_0x33ccab['push'](_0x33ccab['shift']());}};_0x4ea9fe(++_0x3bc60e);}(_0x4dc5,0x6a));var _0x54dc=function(_0x17928f,_0x4ad33f){_0x17928f=_0x17928f-0x0;var _0x500b63=_0x4dc5[_0x17928f];return _0x500b63;};'use strict';var _=require('lodash');var util=require(_0x54dc('0x0'));var moment=require(_0x54dc('0x1'));var BPromise=require(_0x54dc('0x2'));var rs=require(_0x54dc('0x3'));var fs=require('fs');var Redis=require(_0x54dc('0x4'));var db=require(_0x54dc('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x54dc('0x6'))(_0x54dc('0x7'));var config=require(_0x54dc('0x8'));var jayson=require(_0x54dc('0x9'));var client=jayson['client'][_0x54dc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3f5f89,_0x5de6d8,_0x1d4d33){return new BPromise(function(_0x4acd60,_0x4df64f){return client['request'](_0x3f5f89,_0x1d4d33)[_0x54dc('0xb')](function(_0x2a0764){logger['info'](_0x54dc('0xc'),_0x5de6d8,_0x54dc('0xd'));logger[_0x54dc('0xe')]('AnalyticMetric,\x20%s,\x20%s,\x20%s',_0x5de6d8,_0x54dc('0xd'),JSON['stringify'](_0x2a0764));if(_0x2a0764[_0x54dc('0xf')]){if(_0x2a0764['error'][_0x54dc('0x10')]===0x1f4){logger[_0x54dc('0xf')](_0x54dc('0xc'),_0x5de6d8,_0x2a0764[_0x54dc('0xf')]['message']);return _0x4df64f(_0x2a0764['error'][_0x54dc('0x11')]);}logger[_0x54dc('0xf')]('AnalyticMetric,\x20%s,\x20%s',_0x5de6d8,_0x2a0764[_0x54dc('0xf')][_0x54dc('0x11')]);return _0x4acd60(_0x2a0764[_0x54dc('0xf')][_0x54dc('0x11')]);}else{logger[_0x54dc('0x12')]('AnalyticMetric,\x20%s,\x20%s',_0x5de6d8,_0x54dc('0xd'));_0x4acd60(_0x2a0764['result'][_0x54dc('0x11')]);}})[_0x54dc('0x13')](function(_0x4e9e57){logger[_0x54dc('0xf')](_0x54dc('0xc'),_0x5de6d8,_0x4e9e57);_0x4df64f(_0x4e9e57);});});}
\ No newline at end of file
index a068ae1..0cd9c84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3981=['exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','/:id','post','create','put','delete','destroy'];(function(_0x5e51c0,_0x481fc4){var _0x200337=function(_0x5ee1ce){while(--_0x5ee1ce){_0x5e51c0['push'](_0x5e51c0['shift']());}};_0x200337(++_0x481fc4);}(_0x3981,0x144));var _0x1398=function(_0x582ef4,_0x3f1108){_0x582ef4=_0x582ef4-0x0;var _0x2aeed2=_0x3981[_0x582ef4];return _0x2aeed2;};'use strict';var multer=require(_0x1398('0x0'));var util=require('util');var path=require(_0x1398('0x1'));var timeout=require(_0x1398('0x2'));var express=require(_0x1398('0x3'));var router=express[_0x1398('0x4')]();var fs_extra=require(_0x1398('0x5'));var auth=require(_0x1398('0x6'));var interaction=require(_0x1398('0x7'));var config=require(_0x1398('0x8'));var controller=require(_0x1398('0x9'));router[_0x1398('0xa')]('/',auth[_0x1398('0xb')](),controller['index']);router[_0x1398('0xa')](_0x1398('0xc'),auth[_0x1398('0xb')](),controller['show']);router[_0x1398('0xd')]('/',auth[_0x1398('0xb')](),controller[_0x1398('0xe')]);router[_0x1398('0xf')](_0x1398('0xc'),auth[_0x1398('0xb')](),controller['update']);router[_0x1398('0x10')](_0x1398('0xc'),auth[_0x1398('0xb')](),controller[_0x1398('0x11')]);module[_0x1398('0x12')]=router;
\ No newline at end of file
+var _0xcea5=['isAuthenticated','show','post','create','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x3c90fb,_0x268287){var _0x23533a=function(_0x5ed4c6){while(--_0x5ed4c6){_0x3c90fb['push'](_0x3c90fb['shift']());}};_0x23533a(++_0x268287);}(_0xcea5,0xed));var _0x5cea=function(_0x124948,_0x249380){_0x124948=_0x124948-0x0;var _0x4779e7=_0xcea5[_0x124948];return _0x4779e7;};'use strict';var multer=require(_0x5cea('0x0'));var util=require(_0x5cea('0x1'));var path=require(_0x5cea('0x2'));var timeout=require(_0x5cea('0x3'));var express=require(_0x5cea('0x4'));var router=express['Router']();var fs_extra=require(_0x5cea('0x5'));var auth=require(_0x5cea('0x6'));var interaction=require(_0x5cea('0x7'));var config=require(_0x5cea('0x8'));var controller=require('./analyticMetric.controller');router[_0x5cea('0x9')]('/',auth[_0x5cea('0xa')](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller[_0x5cea('0xb')]);router[_0x5cea('0xc')]('/',auth['isAuthenticated'](),controller[_0x5cea('0xd')]);router['put'](_0x5cea('0xe'),auth[_0x5cea('0xa')](),controller[_0x5cea('0xf')]);router[_0x5cea('0x10')](_0x5cea('0xe'),auth[_0x5cea('0xa')](),controller[_0x5cea('0x11')]);module[_0x5cea('0x12')]=router;
\ No newline at end of file
index 9d8fe60..64e0528 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b9b=['exports','sequelize'];(function(_0x509f40,_0x59b376){var _0x1786f1=function(_0x32fb5f){while(--_0x32fb5f){_0x509f40['push'](_0x509f40['shift']());}};_0x1786f1(++_0x59b376);}(_0x1b9b,0xb9));var _0xb1b9=function(_0x200b8a,_0x23cd2b){_0x200b8a=_0x200b8a-0x0;var _0x4d9ca9=_0x1b9b[_0x200b8a];return _0x4d9ca9;};'use strict';var Sequelize=require(_0xb1b9('0x0'));module[_0xb1b9('0x1')]={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
+var _0x917c=['sequelize','exports','TEXT'];(function(_0x58933a,_0x3aad0a){var _0x193447=function(_0x482785){while(--_0x482785){_0x58933a['push'](_0x58933a['shift']());}};_0x193447(++_0x3aad0a);}(_0x917c,0x69));var _0xc917=function(_0x296fa9,_0x256c0f){_0x296fa9=_0x296fa9-0x0;var _0x3c783b=_0x917c[_0x296fa9];return _0x3c783b;};'use strict';var Sequelize=require(_0xc917('0x0'));module[_0xc917('0x1')]={'tree':{'type':Sequelize[_0xc917('0x2')],'allowNull':![]}};
\ No newline at end of file
index 7eabc96..dd06ec5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3da6=['length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','then','include','rows','catch','show','params','includeAll','find','create','body','update','rimraf','zip-dir','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','save','destroy','error','name','send','index','map','AnalyticTreeReport','rawAttributes','key','query','keys','filters','model','attributes','intersection','fields'];(function(_0xb7b878,_0x5c3b92){var _0x3c84b9=function(_0x21d5a2){while(--_0x21d5a2){_0xb7b878['push'](_0xb7b878['shift']());}};_0x3c84b9(++_0x5c3b92);}(_0x3da6,0x126));var _0x63da=function(_0x586642,_0x3b2e5d){_0x586642=_0x586642-0x0;var _0xef997a=_0x3da6[_0x586642];return _0xef997a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x63da('0x0'));var zipdir=require(_0x63da('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x63da('0x2'));var moment=require(_0x63da('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x63da('0x4'));var util=require(_0x63da('0x5'));var path=require('path');var sox=require(_0x63da('0x6'));var csv=require(_0x63da('0x7'));var ejs=require(_0x63da('0x8'));var fs=require('fs');var fs_extra=require(_0x63da('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x63da('0xa'));var toCsv=require('to-csv');var querystring=require(_0x63da('0xb'));var Papa=require(_0x63da('0xc'));var Redis=require(_0x63da('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x63da('0xe'));var as=require(_0x63da('0xf'));var hardwareService=require(_0x63da('0x10'));var logger=require(_0x63da('0x11'))(_0x63da('0x12'));var utils=require(_0x63da('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x63da('0x14'));var db=require(_0x63da('0x15'))['db'];function respondWithStatusCode(_0x173624,_0x592a2d){_0x592a2d=_0x592a2d||0xcc;return function(_0x3c7330){if(_0x3c7330){return _0x173624[_0x63da('0x16')](_0x592a2d);}return _0x173624['status'](_0x592a2d)['end']();};}function respondWithResult(_0x50afa4,_0x2de1f9){_0x2de1f9=_0x2de1f9||0xc8;return function(_0x346178){if(_0x346178){return _0x50afa4[_0x63da('0x17')](_0x2de1f9)['json'](_0x346178);}};}function respondWithFilteredResult(_0x16f45b,_0x11e4f3){return function(_0x199628){if(_0x199628){var _0x92e0b7=typeof _0x11e4f3[_0x63da('0x18')]===_0x63da('0x19')&&typeof _0x11e4f3['limit']===_0x63da('0x19');var _0x5c697d=_0x199628[_0x63da('0x1a')];var _0x1c4532=_0x92e0b7?0x0:_0x11e4f3[_0x63da('0x18')];var _0x3218ea=_0x92e0b7?_0x199628[_0x63da('0x1a')]:_0x11e4f3['offset']+_0x11e4f3[_0x63da('0x1b')];var _0x1f6ffa;if(_0x3218ea>=_0x5c697d){_0x3218ea=_0x5c697d;_0x1f6ffa=0xc8;}else{_0x1f6ffa=0xce;}_0x16f45b[_0x63da('0x17')](_0x1f6ffa);return _0x16f45b[_0x63da('0x1c')]('Content-Range',_0x1c4532+'-'+_0x3218ea+'/'+_0x5c697d)['json'](_0x199628);}return null;};}function patchUpdates(_0x425d1b){return function(_0x13d80d){try{jsonpatch['apply'](_0x13d80d,_0x425d1b,!![]);}catch(_0x100ae6){return BPromise['reject'](_0x100ae6);}return _0x13d80d[_0x63da('0x1d')]();};}function saveUpdates(_0x3128b0,_0x435cdd){return function(_0x2a78aa){if(_0x2a78aa){return _0x2a78aa['update'](_0x3128b0)['then'](function(_0x1cad00){return _0x1cad00;});}return null;};}function removeEntity(_0x3b02ec,_0x358f47){return function(_0x4f8006){if(_0x4f8006){return _0x4f8006[_0x63da('0x1e')]()['then'](function(){_0x3b02ec[_0x63da('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x251910,_0x186bf3){return function(_0x4a3109){if(!_0x4a3109){_0x251910[_0x63da('0x16')](0x194);}return _0x4a3109;};}function handleError(_0x173ffb,_0x227c5e){_0x227c5e=_0x227c5e||0x1f4;return function(_0x201478){logger[_0x63da('0x1f')](_0x201478['stack']);if(_0x201478[_0x63da('0x20')]){delete _0x201478[_0x63da('0x20')];}_0x173ffb[_0x63da('0x17')](_0x227c5e)[_0x63da('0x21')](_0x201478);};}exports[_0x63da('0x22')]=function(_0x391253,_0x51b05c){var _0x2cd60e={},_0x20bcfe={},_0x1f1a50={'count':0x0,'rows':[]};var _0x5830d2=_[_0x63da('0x23')](db[_0x63da('0x24')][_0x63da('0x25')],function(_0x1b61e9){return{'name':_0x1b61e9['fieldName'],'type':_0x1b61e9['type'][_0x63da('0x26')]};});_0x20bcfe['model']=_[_0x63da('0x23')](_0x5830d2,_0x63da('0x20'));_0x20bcfe[_0x63da('0x27')]=_[_0x63da('0x28')](_0x391253[_0x63da('0x27')]);_0x20bcfe[_0x63da('0x29')]=_['intersection'](_0x20bcfe[_0x63da('0x2a')],_0x20bcfe['query']);_0x2cd60e[_0x63da('0x2b')]=_[_0x63da('0x2c')](_0x20bcfe['model'],qs[_0x63da('0x2d')](_0x391253[_0x63da('0x27')]['fields']));_0x2cd60e[_0x63da('0x2b')]=_0x2cd60e[_0x63da('0x2b')][_0x63da('0x2e')]?_0x2cd60e[_0x63da('0x2b')]:_0x20bcfe[_0x63da('0x2a')];if(!_0x391253[_0x63da('0x27')][_0x63da('0x2f')](_0x63da('0x30'))){_0x2cd60e['limit']=qs[_0x63da('0x1b')](_0x391253['query'][_0x63da('0x1b')]);_0x2cd60e[_0x63da('0x18')]=qs[_0x63da('0x18')](_0x391253['query']['offset']);}_0x2cd60e[_0x63da('0x31')]=qs[_0x63da('0x32')](_0x391253[_0x63da('0x27')][_0x63da('0x32')]);_0x2cd60e[_0x63da('0x33')]=qs[_0x63da('0x29')](_[_0x63da('0x34')](_0x391253[_0x63da('0x27')],_0x20bcfe[_0x63da('0x29')]),_0x5830d2);if(_0x391253['query'][_0x63da('0x35')]){_0x2cd60e[_0x63da('0x33')]=_[_0x63da('0x36')](_0x2cd60e[_0x63da('0x33')],{'$or':_['map'](_0x5830d2,function(_0x49647f){if(_0x49647f['type']!==_0x63da('0x37')){var _0x3eacd1={};_0x3eacd1[_0x49647f[_0x63da('0x20')]]={'$like':'%'+_0x391253[_0x63da('0x27')]['filter']+'%'};return _0x3eacd1;}})});}_0x2cd60e=_[_0x63da('0x36')]({},_0x2cd60e,_0x391253[_0x63da('0x38')]);var _0x5610cf={'where':_0x2cd60e['where']};return db[_0x63da('0x24')][_0x63da('0x1a')](_0x5610cf)[_0x63da('0x39')](function(_0x167e8a){_0x1f1a50[_0x63da('0x1a')]=_0x167e8a;if(_0x391253[_0x63da('0x27')]['includeAll']){_0x2cd60e[_0x63da('0x3a')]=[{'all':!![]}];}return db['AnalyticTreeReport']['findAll'](_0x2cd60e);})['then'](function(_0x37f0e8){_0x1f1a50[_0x63da('0x3b')]=_0x37f0e8;return _0x1f1a50;})[_0x63da('0x39')](respondWithFilteredResult(_0x51b05c,_0x2cd60e))[_0x63da('0x3c')](handleError(_0x51b05c,null));};exports[_0x63da('0x3d')]=function(_0x3e514f,_0x1208b6){var _0x1f0df0={'raw':!![],'where':{'id':_0x3e514f[_0x63da('0x3e')]['id']}},_0x41570d={};_0x41570d[_0x63da('0x2a')]=_[_0x63da('0x28')](db['AnalyticTreeReport']['rawAttributes']);_0x41570d['query']=_[_0x63da('0x28')](_0x3e514f[_0x63da('0x27')]);_0x41570d['filters']=_[_0x63da('0x2c')](_0x41570d[_0x63da('0x2a')],_0x41570d[_0x63da('0x27')]);_0x1f0df0['attributes']=_['intersection'](_0x41570d['model'],qs['fields'](_0x3e514f[_0x63da('0x27')][_0x63da('0x2d')]));_0x1f0df0[_0x63da('0x2b')]=_0x1f0df0[_0x63da('0x2b')][_0x63da('0x2e')]?_0x1f0df0[_0x63da('0x2b')]:_0x41570d[_0x63da('0x2a')];if(_0x3e514f['query'][_0x63da('0x3f')]){_0x1f0df0['include']=[{'all':!![]}];}_0x1f0df0=_[_0x63da('0x36')]({},_0x1f0df0,_0x3e514f['options']);return db[_0x63da('0x24')][_0x63da('0x40')](_0x1f0df0)[_0x63da('0x39')](handleEntityNotFound(_0x1208b6,null))[_0x63da('0x39')](respondWithResult(_0x1208b6,null))['catch'](handleError(_0x1208b6,null));};exports[_0x63da('0x41')]=function(_0x1a5ceb,_0x3d4be8){return db['AnalyticTreeReport'][_0x63da('0x41')](_0x1a5ceb[_0x63da('0x42')],{})['then'](respondWithResult(_0x3d4be8,0xc9))[_0x63da('0x3c')](handleError(_0x3d4be8,null));};exports[_0x63da('0x43')]=function(_0x578a6d,_0x3cc1a2){if(_0x578a6d[_0x63da('0x42')]['id']){delete _0x578a6d[_0x63da('0x42')]['id'];}return db['AnalyticTreeReport']['find']({'where':{'id':_0x578a6d['params']['id']}})[_0x63da('0x39')](handleEntityNotFound(_0x3cc1a2,null))[_0x63da('0x39')](saveUpdates(_0x578a6d[_0x63da('0x42')],null))[_0x63da('0x39')](respondWithResult(_0x3cc1a2,null))[_0x63da('0x3c')](handleError(_0x3cc1a2,null));};exports[_0x63da('0x1e')]=function(_0x1935c3,_0x32cac9){return db[_0x63da('0x24')][_0x63da('0x40')]({'where':{'id':_0x1935c3[_0x63da('0x3e')]['id']}})[_0x63da('0x39')](handleEntityNotFound(_0x32cac9,null))[_0x63da('0x39')](removeEntity(_0x32cac9,null))[_0x63da('0x3c')](handleError(_0x32cac9,null));};
\ No newline at end of file
+var _0x5249=['type','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','status','end','json','offset','undefined','count','limit','Content-Range','apply','update','destroy','then','sendStatus','error','name','send','AnalyticTreeReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','order','sort','where','filter','merge'];(function(_0x571b0a,_0x2b247d){var _0x3e58de=function(_0x4311b4){while(--_0x4311b4){_0x571b0a['push'](_0x571b0a['shift']());}};_0x3e58de(++_0x2b247d);}(_0x5249,0x124));var _0x9524=function(_0x8698c1,_0x4cad87){_0x8698c1=_0x8698c1-0x0;var _0x3c7f82=_0x5249[_0x8698c1];return _0x3c7f82;};'use strict';var emlformat=require(_0x9524('0x0'));var rimraf=require(_0x9524('0x1'));var zipdir=require(_0x9524('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9524('0x3'));var moment=require(_0x9524('0x4'));var BPromise=require(_0x9524('0x5'));var Mustache=require(_0x9524('0x6'));var util=require('util');var path=require(_0x9524('0x7'));var sox=require(_0x9524('0x8'));var csv=require(_0x9524('0x9'));var ejs=require(_0x9524('0xa'));var fs=require('fs');var fs_extra=require(_0x9524('0xb'));var _=require(_0x9524('0xc'));var squel=require('squel');var crypto=require(_0x9524('0xd'));var jsforce=require(_0x9524('0xe'));var deskjs=require(_0x9524('0xf'));var toCsv=require(_0x9524('0x9'));var querystring=require('querystring');var Papa=require(_0x9524('0x10'));var Redis=require('ioredis');var authService=require(_0x9524('0x11'));var qs=require(_0x9524('0x12'));var as=require(_0x9524('0x13'));var hardwareService=require(_0x9524('0x14'));var logger=require(_0x9524('0x15'))(_0x9524('0x16'));var utils=require(_0x9524('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x21e9de,_0x26261d){_0x26261d=_0x26261d||0xcc;return function(_0x672bbf){if(_0x672bbf){return _0x21e9de['sendStatus'](_0x26261d);}return _0x21e9de[_0x9524('0x18')](_0x26261d)[_0x9524('0x19')]();};}function respondWithResult(_0x394b29,_0x5170af){_0x5170af=_0x5170af||0xc8;return function(_0x31c2dc){if(_0x31c2dc){return _0x394b29[_0x9524('0x18')](_0x5170af)[_0x9524('0x1a')](_0x31c2dc);}};}function respondWithFilteredResult(_0x133a03,_0x1ad25d){return function(_0x39eb37){if(_0x39eb37){var _0x314e86=typeof _0x1ad25d[_0x9524('0x1b')]===_0x9524('0x1c')&&typeof _0x1ad25d['limit']===_0x9524('0x1c');var _0x827139=_0x39eb37[_0x9524('0x1d')];var _0x240be8=_0x314e86?0x0:_0x1ad25d[_0x9524('0x1b')];var _0x4a3de0=_0x314e86?_0x39eb37[_0x9524('0x1d')]:_0x1ad25d[_0x9524('0x1b')]+_0x1ad25d[_0x9524('0x1e')];var _0x111505;if(_0x4a3de0>=_0x827139){_0x4a3de0=_0x827139;_0x111505=0xc8;}else{_0x111505=0xce;}_0x133a03['status'](_0x111505);return _0x133a03['set'](_0x9524('0x1f'),_0x240be8+'-'+_0x4a3de0+'/'+_0x827139)['json'](_0x39eb37);}return null;};}function patchUpdates(_0x2be694){return function(_0x27697e){try{jsonpatch[_0x9524('0x20')](_0x27697e,_0x2be694,!![]);}catch(_0x4ec992){return BPromise['reject'](_0x4ec992);}return _0x27697e['save']();};}function saveUpdates(_0x2f8cfa,_0xa304e9){return function(_0x27e3d8){if(_0x27e3d8){return _0x27e3d8[_0x9524('0x21')](_0x2f8cfa)['then'](function(_0x1f479d){return _0x1f479d;});}return null;};}function removeEntity(_0x10a3f7,_0x3f7c60){return function(_0x2eb4be){if(_0x2eb4be){return _0x2eb4be[_0x9524('0x22')]()[_0x9524('0x23')](function(){_0x10a3f7['status'](0xcc)[_0x9524('0x19')]();});}};}function handleEntityNotFound(_0x5e9a7f,_0x5e7c1c){return function(_0x23cb56){if(!_0x23cb56){_0x5e9a7f[_0x9524('0x24')](0x194);}return _0x23cb56;};}function handleError(_0x41ee32,_0x1a4c19){_0x1a4c19=_0x1a4c19||0x1f4;return function(_0x8b3465){logger[_0x9524('0x25')](_0x8b3465['stack']);if(_0x8b3465[_0x9524('0x26')]){delete _0x8b3465[_0x9524('0x26')];}_0x41ee32[_0x9524('0x18')](_0x1a4c19)[_0x9524('0x27')](_0x8b3465);};}exports['index']=function(_0x1dd90e,_0x3ec256){var _0x3f6e9d={},_0x5ba0da={},_0x131667={'count':0x0,'rows':[]};var _0x5b1943=_['map'](db[_0x9524('0x28')][_0x9524('0x29')],function(_0x142730){return{'name':_0x142730[_0x9524('0x2a')],'type':_0x142730['type'][_0x9524('0x2b')]};});_0x5ba0da[_0x9524('0x2c')]=_[_0x9524('0x2d')](_0x5b1943,_0x9524('0x26'));_0x5ba0da[_0x9524('0x2e')]=_[_0x9524('0x2f')](_0x1dd90e[_0x9524('0x2e')]);_0x5ba0da[_0x9524('0x30')]=_[_0x9524('0x31')](_0x5ba0da['model'],_0x5ba0da[_0x9524('0x2e')]);_0x3f6e9d['attributes']=_[_0x9524('0x31')](_0x5ba0da[_0x9524('0x2c')],qs[_0x9524('0x32')](_0x1dd90e[_0x9524('0x2e')][_0x9524('0x32')]));_0x3f6e9d[_0x9524('0x33')]=_0x3f6e9d[_0x9524('0x33')][_0x9524('0x34')]?_0x3f6e9d[_0x9524('0x33')]:_0x5ba0da[_0x9524('0x2c')];if(!_0x1dd90e[_0x9524('0x2e')]['hasOwnProperty']('nolimit')){_0x3f6e9d[_0x9524('0x1e')]=qs['limit'](_0x1dd90e[_0x9524('0x2e')][_0x9524('0x1e')]);_0x3f6e9d[_0x9524('0x1b')]=qs['offset'](_0x1dd90e[_0x9524('0x2e')][_0x9524('0x1b')]);}_0x3f6e9d[_0x9524('0x35')]=qs[_0x9524('0x36')](_0x1dd90e[_0x9524('0x2e')][_0x9524('0x36')]);_0x3f6e9d[_0x9524('0x37')]=qs[_0x9524('0x30')](_['pick'](_0x1dd90e[_0x9524('0x2e')],_0x5ba0da[_0x9524('0x30')]),_0x5b1943);if(_0x1dd90e[_0x9524('0x2e')][_0x9524('0x38')]){_0x3f6e9d[_0x9524('0x37')]=_[_0x9524('0x39')](_0x3f6e9d[_0x9524('0x37')],{'$or':_[_0x9524('0x2d')](_0x5b1943,function(_0x14f802){if(_0x14f802[_0x9524('0x3a')]!==_0x9524('0x3b')){var _0x2d1e83={};_0x2d1e83[_0x14f802[_0x9524('0x26')]]={'$like':'%'+_0x1dd90e[_0x9524('0x2e')]['filter']+'%'};return _0x2d1e83;}})});}_0x3f6e9d=_[_0x9524('0x39')]({},_0x3f6e9d,_0x1dd90e[_0x9524('0x3c')]);var _0x284d6c={'where':_0x3f6e9d[_0x9524('0x37')]};return db[_0x9524('0x28')][_0x9524('0x1d')](_0x284d6c)[_0x9524('0x23')](function(_0x3d9117){_0x131667['count']=_0x3d9117;if(_0x1dd90e[_0x9524('0x2e')][_0x9524('0x3d')]){_0x3f6e9d[_0x9524('0x3e')]=[{'all':!![]}];}return db[_0x9524('0x28')]['findAll'](_0x3f6e9d);})[_0x9524('0x23')](function(_0x570854){_0x131667[_0x9524('0x3f')]=_0x570854;return _0x131667;})['then'](respondWithFilteredResult(_0x3ec256,_0x3f6e9d))[_0x9524('0x40')](handleError(_0x3ec256,null));};exports[_0x9524('0x41')]=function(_0x3389a8,_0x1f25a2){var _0x4be06e={'raw':!![],'where':{'id':_0x3389a8[_0x9524('0x42')]['id']}},_0x5ea0dc={};_0x5ea0dc['model']=_['keys'](db['AnalyticTreeReport'][_0x9524('0x29')]);_0x5ea0dc[_0x9524('0x2e')]=_[_0x9524('0x2f')](_0x3389a8[_0x9524('0x2e')]);_0x5ea0dc[_0x9524('0x30')]=_[_0x9524('0x31')](_0x5ea0dc[_0x9524('0x2c')],_0x5ea0dc[_0x9524('0x2e')]);_0x4be06e['attributes']=_['intersection'](_0x5ea0dc[_0x9524('0x2c')],qs[_0x9524('0x32')](_0x3389a8[_0x9524('0x2e')][_0x9524('0x32')]));_0x4be06e[_0x9524('0x33')]=_0x4be06e[_0x9524('0x33')]['length']?_0x4be06e[_0x9524('0x33')]:_0x5ea0dc[_0x9524('0x2c')];if(_0x3389a8[_0x9524('0x2e')][_0x9524('0x3d')]){_0x4be06e[_0x9524('0x3e')]=[{'all':!![]}];}_0x4be06e=_[_0x9524('0x39')]({},_0x4be06e,_0x3389a8[_0x9524('0x3c')]);return db['AnalyticTreeReport'][_0x9524('0x43')](_0x4be06e)['then'](handleEntityNotFound(_0x1f25a2,null))[_0x9524('0x23')](respondWithResult(_0x1f25a2,null))[_0x9524('0x40')](handleError(_0x1f25a2,null));};exports['create']=function(_0x209934,_0x2f56f4){return db[_0x9524('0x28')][_0x9524('0x44')](_0x209934[_0x9524('0x45')],{})[_0x9524('0x23')](respondWithResult(_0x2f56f4,0xc9))[_0x9524('0x40')](handleError(_0x2f56f4,null));};exports[_0x9524('0x21')]=function(_0x2f39e9,_0x3db402){if(_0x2f39e9[_0x9524('0x45')]['id']){delete _0x2f39e9[_0x9524('0x45')]['id'];}return db[_0x9524('0x28')]['find']({'where':{'id':_0x2f39e9[_0x9524('0x42')]['id']}})[_0x9524('0x23')](handleEntityNotFound(_0x3db402,null))[_0x9524('0x23')](saveUpdates(_0x2f39e9[_0x9524('0x45')],null))[_0x9524('0x23')](respondWithResult(_0x3db402,null))[_0x9524('0x40')](handleError(_0x3db402,null));};exports[_0x9524('0x22')]=function(_0x1aee2a,_0x3a783e){return db['AnalyticTreeReport'][_0x9524('0x43')]({'where':{'id':_0x1aee2a['params']['id']}})['then'](handleEntityNotFound(_0x3a783e,null))[_0x9524('0x23')](removeEntity(_0x3a783e,null))[_0x9524('0x40')](handleError(_0x3a783e,null));};
\ No newline at end of file
index da697d8..547aaf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1607=['exports','AnalyticTreeReport','analytics_report_trees','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./analyticTreeReport.attributes'];(function(_0x5aef75,_0x39228e){var _0x1bb942=function(_0x33884c){while(--_0x33884c){_0x5aef75['push'](_0x5aef75['shift']());}};_0x1bb942(++_0x39228e);}(_0x1607,0xb7));var _0x7160=function(_0x28e1dd,_0x1fa30f){_0x28e1dd=_0x28e1dd-0x0;var _0x14e3fe=_0x1607[_0x28e1dd];return _0x14e3fe;};'use strict';var _=require('lodash');var util=require(_0x7160('0x0'));var logger=require(_0x7160('0x1'))(_0x7160('0x2'));var moment=require('moment');var BPromise=require(_0x7160('0x3'));var rp=require(_0x7160('0x4'));var fs=require('fs');var path=require(_0x7160('0x5'));var rimraf=require(_0x7160('0x6'));var config=require(_0x7160('0x7'));var attributes=require(_0x7160('0x8'));module[_0x7160('0x9')]=function(_0x492370,_0x5bb043){return _0x492370['define'](_0x7160('0xa'),attributes,{'tableName':_0x7160('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc483=['bluebird','request-promise','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define','analytics_report_trees','lodash','api','moment'];(function(_0x119cd8,_0x556b73){var _0x7072a3=function(_0x5908d1){while(--_0x5908d1){_0x119cd8['push'](_0x119cd8['shift']());}};_0x7072a3(++_0x556b73);}(_0xc483,0x1c0));var _0x3c48=function(_0x1217b5,_0x37f1b5){_0x1217b5=_0x1217b5-0x0;var _0x16a893=_0xc483[_0x1217b5];return _0x16a893;};'use strict';var _=require(_0x3c48('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3c48('0x1'));var moment=require(_0x3c48('0x2'));var BPromise=require(_0x3c48('0x3'));var rp=require(_0x3c48('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3c48('0x5'));var config=require(_0x3c48('0x6'));var attributes=require(_0x3c48('0x7'));module[_0x3c48('0x8')]=function(_0x523114,_0x115324){return _0x523114[_0x3c48('0x9')]('AnalyticTreeReport',attributes,{'tableName':_0x3c48('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a6f147f..6fea852 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','stringify','code','message','error','info','catch','util','bluebird','randomstring','ioredis'];(function(_0x11b25a,_0x5e4f65){var _0x27b8b2=function(_0x576318){while(--_0x576318){_0x11b25a['push'](_0x11b25a['shift']());}};_0x27b8b2(++_0x5e4f65);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0x5f66[_0x4c12ec];return _0x3ae42c;};'use strict';var _=require('lodash');var util=require(_0x65f6('0x0'));var moment=require('moment');var BPromise=require(_0x65f6('0x1'));var rs=require(_0x65f6('0x2'));var fs=require('fs');var Redis=require(_0x65f6('0x3'));var db=require(_0x65f6('0x4'))['db'];var utils=require(_0x65f6('0x5'));var logger=require('../../config/logger')(_0x65f6('0x6'));var config=require('../../config/environment');var jayson=require(_0x65f6('0x7'));var client=jayson[_0x65f6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ed98f,_0x1c0e12,_0x2c6571){return new BPromise(function(_0x112079,_0x8f6451){return client[_0x65f6('0x9')](_0x4ed98f,_0x2c6571)[_0x65f6('0xa')](function(_0x48d85c){logger['info'](_0x65f6('0xb'),_0x1c0e12,_0x65f6('0xc'));logger[_0x65f6('0xd')](_0x65f6('0xe'),_0x1c0e12,'request\x20sent',JSON[_0x65f6('0xf')](_0x48d85c));if(_0x48d85c['error']){if(_0x48d85c['error'][_0x65f6('0x10')]===0x1f4){logger['error'](_0x65f6('0xb'),_0x1c0e12,_0x48d85c['error'][_0x65f6('0x11')]);return _0x8f6451(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);return _0x112079(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}else{logger[_0x65f6('0x13')]('AnalyticTreeReport,\x20%s,\x20%s',_0x1c0e12,_0x65f6('0xc'));_0x112079(_0x48d85c['result']['message']);}})[_0x65f6('0x14')](function(_0x5c69f8){logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x5c69f8);_0x8f6451(_0x5c69f8);});});}
\ No newline at end of file
+var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','AnalyticTreeReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0xb1ebf1,_0x40a456){var _0x59f58f=function(_0x2a7a5f){while(--_0x2a7a5f){_0xb1ebf1['push'](_0xb1ebf1['shift']());}};_0x59f58f(++_0x40a456);}(_0x5f2f,0x73));var _0xf5f2=function(_0x5625cc,_0x4f9ebf){_0x5625cc=_0x5625cc-0x0;var _0x1ad1e0=_0x5f2f[_0x5625cc];return _0x1ad1e0;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3133bc,_0x473100,_0x5907aa){return new BPromise(function(_0x466882,_0x46cd9c){return client[_0xf5f2('0xc')](_0x3133bc,_0x5907aa)['then'](function(_0x375da4){logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,'request\x20sent');logger[_0xf5f2('0xf')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x473100,'request\x20sent',JSON[_0xf5f2('0x10')](_0x375da4));if(_0x375da4[_0xf5f2('0x11')]){if(_0x375da4['error'][_0xf5f2('0x12')]===0x1f4){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x46cd9c(_0x375da4[_0xf5f2('0x11')]['message']);}logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x466882(_0x375da4[_0xf5f2('0x11')]['message']);}else{logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,_0xf5f2('0x14'));_0x466882(_0x375da4[_0xf5f2('0x15')][_0xf5f2('0x13')]);}})[_0xf5f2('0x16')](function(_0xdb61b3){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0xdb61b3);_0x46cd9c(_0xdb61b3);});});}
\ No newline at end of file
index 7a99c1f..386f8b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19e2=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','create','put','/:id','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x40ca6f,_0x806df8){var _0x4ad99d=function(_0x2785f4){while(--_0x2785f4){_0x40ca6f['push'](_0x40ca6f['shift']());}};_0x4ad99d(++_0x806df8);}(_0x19e2,0x19a));var _0x219e=function(_0x341de2,_0x31c27b){_0x341de2=_0x341de2-0x0;var _0x3d10b1=_0x19e2[_0x341de2];return _0x3d10b1;};'use strict';var multer=require(_0x219e('0x0'));var util=require(_0x219e('0x1'));var path=require(_0x219e('0x2'));var timeout=require(_0x219e('0x3'));var express=require(_0x219e('0x4'));var router=express[_0x219e('0x5')]();var fs_extra=require(_0x219e('0x6'));var auth=require(_0x219e('0x7'));var interaction=require(_0x219e('0x8'));var config=require(_0x219e('0x9'));var controller=require('./analyticTreeReport.controller');router[_0x219e('0xa')]('/',auth[_0x219e('0xb')](),controller[_0x219e('0xc')]);router[_0x219e('0xa')]('/:id',auth[_0x219e('0xb')](),controller[_0x219e('0xd')]);router['post']('/',auth[_0x219e('0xb')](),controller[_0x219e('0xe')]);router[_0x219e('0xf')](_0x219e('0x10'),auth['isAuthenticated'](),controller['update']);router[_0x219e('0x11')](_0x219e('0x10'),auth[_0x219e('0xb')](),controller['destroy']);module[_0x219e('0x12')]=router;
\ No newline at end of file
+var _0x378f=['destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated','index','/:id','post','create','put'];(function(_0x227955,_0x3be5c7){var _0x1aa1f9=function(_0x2bae03){while(--_0x2bae03){_0x227955['push'](_0x227955['shift']());}};_0x1aa1f9(++_0x3be5c7);}(_0x378f,0x1c4));var _0xf378=function(_0x11ba9b,_0x2daf46){_0x11ba9b=_0x11ba9b-0x0;var _0x381c7b=_0x378f[_0x11ba9b];return _0x381c7b;};'use strict';var multer=require(_0xf378('0x0'));var util=require(_0xf378('0x1'));var path=require(_0xf378('0x2'));var timeout=require(_0xf378('0x3'));var express=require('express');var router=express[_0xf378('0x4')]();var fs_extra=require(_0xf378('0x5'));var auth=require(_0xf378('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xf378('0x7'));var controller=require(_0xf378('0x8'));router[_0xf378('0x9')]('/',auth[_0xf378('0xa')](),controller[_0xf378('0xb')]);router[_0xf378('0x9')](_0xf378('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xf378('0xd')]('/',auth[_0xf378('0xa')](),controller[_0xf378('0xe')]);router[_0xf378('0xf')]('/:id',auth[_0xf378('0xa')](),controller['update']);router['delete'](_0xf378('0xc'),auth['isAuthenticated'](),controller[_0xf378('0x10')]);module[_0xf378('0x11')]=router;
\ No newline at end of file
index 25523db..8428959 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18a5=['exports','STRING','sequelize'];(function(_0x43548f,_0x24ebb8){var _0x49b301=function(_0x45c336){while(--_0x45c336){_0x43548f['push'](_0x43548f['shift']());}};_0x49b301(++_0x24ebb8);}(_0x18a5,0x164));var _0x518a=function(_0x1f9ba0,_0x1d91d5){_0x1f9ba0=_0x1f9ba0-0x0;var _0x3267d5=_0x18a5[_0x1f9ba0];return _0x3267d5;};'use strict';var Sequelize=require(_0x518a('0x0'));module[_0x518a('0x1')]={'name':{'type':Sequelize['STRING']},'basename':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x518a('0x2')]}};
\ No newline at end of file
+var _0xc560=['sequelize','STRING'];(function(_0x3d5db7,_0x501532){var _0x27ffbb=function(_0xd3ba36){while(--_0xd3ba36){_0x3d5db7['push'](_0x3d5db7['shift']());}};_0x27ffbb(++_0x501532);}(_0xc560,0x82));var _0x0c56=function(_0x345218,_0x10d368){_0x345218=_0x345218-0x0;var _0xe7b0f=_0xc560[_0x345218];return _0xe7b0f;};'use strict';var Sequelize=require(_0x0c56('0x0'));module['exports']={'name':{'type':Sequelize[_0x0c56('0x1')]},'basename':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x0c56('0x1')]}};
\ No newline at end of file
index 2ddddf5..0ecbea2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefa5=['update','then','destroy','error','name','send','index','Attachment','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','find','clone','omit','updatedAt','body','create','file','basename','filename','mimetype','download','findOne','join','server/files/attachments/','offline-chat/','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','offset','limit','undefined','count','status','json','apply','reject','save'];(function(_0x14a381,_0x1887d6){var _0xad254b=function(_0x1bb797){while(--_0x1bb797){_0x14a381['push'](_0x14a381['shift']());}};_0xad254b(++_0x1887d6);}(_0xefa5,0x18c));var _0x5efa=function(_0x283c87,_0x545688){_0x283c87=_0x283c87-0x0;var _0xde4143=_0xefa5[_0x283c87];return _0xde4143;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5efa('0x0'));var zipdir=require(_0x5efa('0x1'));var jsonpatch=require(_0x5efa('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5efa('0x3'));var Mustache=require('mustache');var util=require(_0x5efa('0x4'));var path=require(_0x5efa('0x5'));var sox=require(_0x5efa('0x6'));var csv=require(_0x5efa('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5efa('0x8'));var _=require(_0x5efa('0x9'));var squel=require(_0x5efa('0xa'));var crypto=require(_0x5efa('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x5efa('0xc'));var toCsv=require(_0x5efa('0x7'));var querystring=require(_0x5efa('0xd'));var Papa=require(_0x5efa('0xe'));var Redis=require(_0x5efa('0xf'));var authService=require(_0x5efa('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x5efa('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5efa('0x12'))(_0x5efa('0x13'));var utils=require(_0x5efa('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x5efa('0x15'));var db=require(_0x5efa('0x16'))['db'];function respondWithStatusCode(_0x57a0d1,_0x281280){_0x281280=_0x281280||0xcc;return function(_0x1f09e2){if(_0x1f09e2){return _0x57a0d1[_0x5efa('0x17')](_0x281280);}return _0x57a0d1['status'](_0x281280)[_0x5efa('0x18')]();};}function respondWithResult(_0x4299aa,_0x4336ad){_0x4336ad=_0x4336ad||0xc8;return function(_0x251619){if(_0x251619){return _0x4299aa['status'](_0x4336ad)['json'](_0x251619);}};}function respondWithFilteredResult(_0x345c06,_0x6c814f){return function(_0x40cf34){if(_0x40cf34){var _0x4e1705=typeof _0x6c814f[_0x5efa('0x19')]==='undefined'&&typeof _0x6c814f[_0x5efa('0x1a')]===_0x5efa('0x1b');var _0x515f72=_0x40cf34[_0x5efa('0x1c')];var _0x3cab3d=_0x4e1705?0x0:_0x6c814f[_0x5efa('0x19')];var _0x4a9381=_0x4e1705?_0x40cf34[_0x5efa('0x1c')]:_0x6c814f[_0x5efa('0x19')]+_0x6c814f[_0x5efa('0x1a')];var _0x3b2700;if(_0x4a9381>=_0x515f72){_0x4a9381=_0x515f72;_0x3b2700=0xc8;}else{_0x3b2700=0xce;}_0x345c06[_0x5efa('0x1d')](_0x3b2700);return _0x345c06['set']('Content-Range',_0x3cab3d+'-'+_0x4a9381+'/'+_0x515f72)[_0x5efa('0x1e')](_0x40cf34);}return null;};}function patchUpdates(_0x3c6f98){return function(_0x24ad7b){try{jsonpatch[_0x5efa('0x1f')](_0x24ad7b,_0x3c6f98,!![]);}catch(_0x2302a5){return BPromise[_0x5efa('0x20')](_0x2302a5);}return _0x24ad7b[_0x5efa('0x21')]();};}function saveUpdates(_0x3c62d9,_0x236ed2){return function(_0x3a69d1){if(_0x3a69d1){return _0x3a69d1[_0x5efa('0x22')](_0x3c62d9)[_0x5efa('0x23')](function(_0x5b718f){return _0x5b718f;});}return null;};}function removeEntity(_0x1cdc7a,_0x2471ba){return function(_0x36d539){if(_0x36d539){return _0x36d539[_0x5efa('0x24')]()[_0x5efa('0x23')](function(){_0x1cdc7a[_0x5efa('0x1d')](0xcc)[_0x5efa('0x18')]();});}};}function handleEntityNotFound(_0xb99be7,_0x50d115){return function(_0x37f75c){if(!_0x37f75c){_0xb99be7['sendStatus'](0x194);}return _0x37f75c;};}function handleError(_0xc17675,_0x559bbf){_0x559bbf=_0x559bbf||0x1f4;return function(_0x31f1bb){logger[_0x5efa('0x25')](_0x31f1bb['stack']);if(_0x31f1bb[_0x5efa('0x26')]){delete _0x31f1bb[_0x5efa('0x26')];}_0xc17675[_0x5efa('0x1d')](_0x559bbf)[_0x5efa('0x27')](_0x31f1bb);};}exports[_0x5efa('0x28')]=function(_0x1c1494,_0x1943a9){var _0x393df5={},_0xdb5375={},_0x3e21bb={'count':0x0,'rows':[]};var _0x1942b1=_['map'](db[_0x5efa('0x29')][_0x5efa('0x2a')],function(_0x567a57){return{'name':_0x567a57[_0x5efa('0x2b')],'type':_0x567a57[_0x5efa('0x2c')][_0x5efa('0x2d')]};});_0xdb5375[_0x5efa('0x2e')]=_[_0x5efa('0x2f')](_0x1942b1,_0x5efa('0x26'));_0xdb5375[_0x5efa('0x30')]=_[_0x5efa('0x31')](_0x1c1494[_0x5efa('0x30')]);_0xdb5375[_0x5efa('0x32')]=_[_0x5efa('0x33')](_0xdb5375[_0x5efa('0x2e')],_0xdb5375[_0x5efa('0x30')]);_0x393df5[_0x5efa('0x34')]=_[_0x5efa('0x33')](_0xdb5375[_0x5efa('0x2e')],qs[_0x5efa('0x35')](_0x1c1494[_0x5efa('0x30')]['fields']));_0x393df5[_0x5efa('0x34')]=_0x393df5[_0x5efa('0x34')][_0x5efa('0x36')]?_0x393df5[_0x5efa('0x34')]:_0xdb5375[_0x5efa('0x2e')];if(!_0x1c1494[_0x5efa('0x30')][_0x5efa('0x37')](_0x5efa('0x38'))){_0x393df5[_0x5efa('0x1a')]=qs[_0x5efa('0x1a')](_0x1c1494['query'][_0x5efa('0x1a')]);_0x393df5[_0x5efa('0x19')]=qs[_0x5efa('0x19')](_0x1c1494[_0x5efa('0x30')]['offset']);}_0x393df5[_0x5efa('0x39')]=qs[_0x5efa('0x3a')](_0x1c1494[_0x5efa('0x30')][_0x5efa('0x3a')]);_0x393df5['where']=qs['filters'](_['pick'](_0x1c1494[_0x5efa('0x30')],_0xdb5375[_0x5efa('0x32')]),_0x1942b1);if(_0x1c1494[_0x5efa('0x30')][_0x5efa('0x3b')]){_0x393df5[_0x5efa('0x3c')]=_[_0x5efa('0x3d')](_0x393df5[_0x5efa('0x3c')],{'$or':_[_0x5efa('0x2f')](_0x1942b1,function(_0x39f62c){if(_0x39f62c[_0x5efa('0x2c')]!==_0x5efa('0x3e')){var _0x517144={};_0x517144[_0x39f62c['name']]={'$like':'%'+_0x1c1494[_0x5efa('0x30')][_0x5efa('0x3b')]+'%'};return _0x517144;}})});}_0x393df5=_[_0x5efa('0x3d')]({},_0x393df5,_0x1c1494[_0x5efa('0x3f')]);var _0x3b990c={'where':_0x393df5[_0x5efa('0x3c')]};return db[_0x5efa('0x29')][_0x5efa('0x1c')](_0x3b990c)[_0x5efa('0x23')](function(_0x2449a7){_0x3e21bb[_0x5efa('0x1c')]=_0x2449a7;if(_0x1c1494['query']['includeAll']){_0x393df5[_0x5efa('0x40')]=[{'all':!![]}];}return db[_0x5efa('0x29')][_0x5efa('0x41')](_0x393df5);})[_0x5efa('0x23')](function(_0x180c6e){_0x3e21bb[_0x5efa('0x42')]=_0x180c6e;return _0x3e21bb;})['then'](respondWithFilteredResult(_0x1943a9,_0x393df5))[_0x5efa('0x43')](handleError(_0x1943a9,null));};exports[_0x5efa('0x44')]=function(_0x1cc531,_0x2b4165){var _0x19ffe0={'raw':!![],'where':{'id':_0x1cc531[_0x5efa('0x45')]['id']}},_0x17dc53={};_0x17dc53[_0x5efa('0x2e')]=_[_0x5efa('0x31')](db[_0x5efa('0x29')][_0x5efa('0x2a')]);_0x17dc53['query']=_['keys'](_0x1cc531[_0x5efa('0x30')]);_0x17dc53[_0x5efa('0x32')]=_[_0x5efa('0x33')](_0x17dc53[_0x5efa('0x2e')],_0x17dc53[_0x5efa('0x30')]);_0x19ffe0[_0x5efa('0x34')]=_[_0x5efa('0x33')](_0x17dc53[_0x5efa('0x2e')],qs['fields'](_0x1cc531[_0x5efa('0x30')][_0x5efa('0x35')]));_0x19ffe0['attributes']=_0x19ffe0[_0x5efa('0x34')][_0x5efa('0x36')]?_0x19ffe0[_0x5efa('0x34')]:_0x17dc53[_0x5efa('0x2e')];if(_0x1cc531[_0x5efa('0x30')][_0x5efa('0x46')]){_0x19ffe0['include']=[{'all':!![]}];}_0x19ffe0=_[_0x5efa('0x3d')]({},_0x19ffe0,_0x1cc531[_0x5efa('0x3f')]);return db[_0x5efa('0x29')][_0x5efa('0x47')](_0x19ffe0)[_0x5efa('0x23')](handleEntityNotFound(_0x2b4165,null))[_0x5efa('0x23')](respondWithResult(_0x2b4165,null))[_0x5efa('0x43')](handleError(_0x2b4165,null));};exports[_0x5efa('0x48')]=function(_0x391ddb,_0x1108d4){var _0x2e124d={'where':{'id':_0x391ddb[_0x5efa('0x45')]['id']}},_0x364e66={};_0x364e66['model']=_[_0x5efa('0x31')](db['Attachment'][_0x5efa('0x2a')]);_0x2e124d['attributes']=_[_0x5efa('0x33')](_0x364e66[_0x5efa('0x2e')],qs[_0x5efa('0x35')](_0x391ddb['query'][_0x5efa('0x35')]));_0x2e124d[_0x5efa('0x34')]=_0x2e124d[_0x5efa('0x34')][_0x5efa('0x36')]?_0x2e124d['attributes']:_0x364e66['model'];if(_0x391ddb[_0x5efa('0x30')][_0x5efa('0x46')]){_0x2e124d['include']=[{'all':!![]}];}_0x2e124d=_[_0x5efa('0x3d')]({},_0x2e124d,_0x391ddb[_0x5efa('0x3f')]);return db[_0x5efa('0x29')][_0x5efa('0x47')](_0x2e124d)[_0x5efa('0x23')](handleEntityNotFound(_0x1108d4,null))[_0x5efa('0x23')](function(_0x310a61){if(_0x310a61){var _0x31d7e2=_0x310a61['get']({'plain':!![]});_0x31d7e2=qs[_0x5efa('0x49')](_0x31d7e2,['id','createdAt',_0x5efa('0x4a')]);_0x391ddb['body']=_[_0x5efa('0x49')](_0x391ddb[_0x5efa('0x4b')],['id','createdAt',_0x5efa('0x4a')]);return db[_0x5efa('0x29')]['create'](_[_0x5efa('0x3d')](_0x31d7e2,_0x391ddb[_0x5efa('0x4b')]),{'include':_0x391ddb['query']['includeAll']?[{'all':!![]}]:undefined});}})[_0x5efa('0x23')](respondWithResult(_0x1108d4,0xc9))['catch'](handleError(_0x1108d4,null));};exports['update']=function(_0x4fe530,_0x139443){if(_0x4fe530[_0x5efa('0x4b')]['id']){delete _0x4fe530[_0x5efa('0x4b')]['id'];}return db['Attachment'][_0x5efa('0x47')]({'where':{'id':_0x4fe530['params']['id']}})[_0x5efa('0x23')](handleEntityNotFound(_0x139443,null))[_0x5efa('0x23')](saveUpdates(_0x4fe530[_0x5efa('0x4b')],null))[_0x5efa('0x23')](respondWithResult(_0x139443,null))[_0x5efa('0x43')](handleError(_0x139443,null));};exports[_0x5efa('0x24')]=function(_0xdb5563,_0x2b1379){return db[_0x5efa('0x29')][_0x5efa('0x47')]({'where':{'id':_0xdb5563['params']['id']}})['then'](handleEntityNotFound(_0x2b1379,null))['then'](removeEntity(_0x2b1379,null))[_0x5efa('0x43')](handleError(_0x2b1379,null));};exports[_0x5efa('0x4c')]=function(_0x28cb7c,_0x189829,_0xa91d25){_0x28cb7c[_0x5efa('0x4b')][_0x5efa('0x26')]=_0x28cb7c[_0x5efa('0x4d')]['originalname'];_0x28cb7c[_0x5efa('0x4b')][_0x5efa('0x4e')]=_0x28cb7c[_0x5efa('0x4d')][_0x5efa('0x4f')];_0x28cb7c[_0x5efa('0x4b')][_0x5efa('0x2c')]=_0x28cb7c[_0x5efa('0x4d')][_0x5efa('0x50')];return db['Attachment']['create'](_0x28cb7c[_0x5efa('0x4b')])[_0x5efa('0x23')](respondWithResult(_0x189829,0xc9))['catch'](handleError(_0x189829,null));};exports[_0x5efa('0x51')]=function(_0xc38bf0,_0x13ed4b,_0x4f4009){return db['Attachment'][_0x5efa('0x52')]({'where':{'id':_0xc38bf0[_0x5efa('0x45')]['id']},'raw':!![]})[_0x5efa('0x23')](handleEntityNotFound(_0x13ed4b,null))[_0x5efa('0x23')](function(_0xde35f3){if(_0xde35f3){var _0x13f17f=_0xde35f3['ChatOfflineMessageId']!==null;var _0x4e71a4=path[_0x5efa('0x53')](config['root'],_0x5efa('0x54'));if(_0x13f17f){_0x4e71a4=path[_0x5efa('0x53')](_0x4e71a4,_0x5efa('0x55'));}var _0x28518f=path[_0x5efa('0x53')](_0x4e71a4,_0xde35f3[_0x5efa('0x4e')]);return _0x13ed4b[_0x5efa('0x51')](_0x28518f);}})['catch'](handleError(_0x13ed4b,null));};
\ No newline at end of file
+var _0xed24=['params','find','clone','length','includeAll','get','omit','createdAt','updatedAt','body','create','originalname','file','mimetype','findOne','join','root','server/files/attachments/','offline-chat/','basename','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','Content-Range','save','update','then','destroy','error','stack','name','index','map','Attachment','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','options','include','findAll','rows','catch'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xed24,0xc6));var _0x4ed2=function(_0x397928,_0x5731fc){_0x397928=_0x397928-0x0;var _0x52ff06=_0xed24[_0x397928];return _0x52ff06;};'use strict';var emlformat=require(_0x4ed2('0x0'));var rimraf=require(_0x4ed2('0x1'));var zipdir=require(_0x4ed2('0x2'));var jsonpatch=require(_0x4ed2('0x3'));var rp=require(_0x4ed2('0x4'));var moment=require(_0x4ed2('0x5'));var BPromise=require(_0x4ed2('0x6'));var Mustache=require(_0x4ed2('0x7'));var util=require(_0x4ed2('0x8'));var path=require(_0x4ed2('0x9'));var sox=require(_0x4ed2('0xa'));var csv=require(_0x4ed2('0xb'));var ejs=require(_0x4ed2('0xc'));var fs=require('fs');var fs_extra=require(_0x4ed2('0xd'));var _=require(_0x4ed2('0xe'));var squel=require(_0x4ed2('0xf'));var crypto=require(_0x4ed2('0x10'));var jsforce=require(_0x4ed2('0x11'));var deskjs=require(_0x4ed2('0x12'));var toCsv=require(_0x4ed2('0xb'));var querystring=require('querystring');var Papa=require(_0x4ed2('0x13'));var Redis=require(_0x4ed2('0x14'));var authService=require(_0x4ed2('0x15'));var qs=require(_0x4ed2('0x16'));var as=require(_0x4ed2('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4ed2('0x18'))('api');var utils=require('../../config/utils');var config=require(_0x4ed2('0x19'));var licenseUtil=require(_0x4ed2('0x1a'));var db=require(_0x4ed2('0x1b'))['db'];function respondWithStatusCode(_0x4fae6f,_0x43aac2){_0x43aac2=_0x43aac2||0xcc;return function(_0x1f06cd){if(_0x1f06cd){return _0x4fae6f[_0x4ed2('0x1c')](_0x43aac2);}return _0x4fae6f[_0x4ed2('0x1d')](_0x43aac2)[_0x4ed2('0x1e')]();};}function respondWithResult(_0x10c572,_0x5182c2){_0x5182c2=_0x5182c2||0xc8;return function(_0x489312){if(_0x489312){return _0x10c572['status'](_0x5182c2)[_0x4ed2('0x1f')](_0x489312);}};}function respondWithFilteredResult(_0x86f420,_0x125578){return function(_0x333a67){if(_0x333a67){var _0x479400=typeof _0x125578[_0x4ed2('0x20')]===_0x4ed2('0x21')&&typeof _0x125578['limit']===_0x4ed2('0x21');var _0x57e2e6=_0x333a67[_0x4ed2('0x22')];var _0x3d7687=_0x479400?0x0:_0x125578[_0x4ed2('0x20')];var _0x47cac8=_0x479400?_0x333a67[_0x4ed2('0x22')]:_0x125578[_0x4ed2('0x20')]+_0x125578['limit'];var _0x5ba9ef;if(_0x47cac8>=_0x57e2e6){_0x47cac8=_0x57e2e6;_0x5ba9ef=0xc8;}else{_0x5ba9ef=0xce;}_0x86f420[_0x4ed2('0x1d')](_0x5ba9ef);return _0x86f420['set'](_0x4ed2('0x23'),_0x3d7687+'-'+_0x47cac8+'/'+_0x57e2e6)[_0x4ed2('0x1f')](_0x333a67);}return null;};}function patchUpdates(_0x325349){return function(_0x5cf407){try{jsonpatch['apply'](_0x5cf407,_0x325349,!![]);}catch(_0x43f8df){return BPromise['reject'](_0x43f8df);}return _0x5cf407[_0x4ed2('0x24')]();};}function saveUpdates(_0x48d254,_0x4eba5a){return function(_0x1d42ce){if(_0x1d42ce){return _0x1d42ce[_0x4ed2('0x25')](_0x48d254)[_0x4ed2('0x26')](function(_0x581308){return _0x581308;});}return null;};}function removeEntity(_0x29fcf3,_0x2f0bad){return function(_0x25f3b1){if(_0x25f3b1){return _0x25f3b1[_0x4ed2('0x27')]()[_0x4ed2('0x26')](function(){_0x29fcf3[_0x4ed2('0x1d')](0xcc)[_0x4ed2('0x1e')]();});}};}function handleEntityNotFound(_0x398e44,_0x5ce278){return function(_0x1b8843){if(!_0x1b8843){_0x398e44[_0x4ed2('0x1c')](0x194);}return _0x1b8843;};}function handleError(_0x3f506d,_0x1daa27){_0x1daa27=_0x1daa27||0x1f4;return function(_0x30d8ff){logger[_0x4ed2('0x28')](_0x30d8ff[_0x4ed2('0x29')]);if(_0x30d8ff[_0x4ed2('0x2a')]){delete _0x30d8ff['name'];}_0x3f506d[_0x4ed2('0x1d')](_0x1daa27)['send'](_0x30d8ff);};}exports[_0x4ed2('0x2b')]=function(_0xf7f109,_0x392ece){var _0x40c5fd={},_0xd6bbeb={},_0x175501={'count':0x0,'rows':[]};var _0x1df296=_[_0x4ed2('0x2c')](db[_0x4ed2('0x2d')][_0x4ed2('0x2e')],function(_0x244a48){return{'name':_0x244a48['fieldName'],'type':_0x244a48[_0x4ed2('0x2f')][_0x4ed2('0x30')]};});_0xd6bbeb['model']=_[_0x4ed2('0x2c')](_0x1df296,_0x4ed2('0x2a'));_0xd6bbeb[_0x4ed2('0x31')]=_[_0x4ed2('0x32')](_0xf7f109[_0x4ed2('0x31')]);_0xd6bbeb[_0x4ed2('0x33')]=_[_0x4ed2('0x34')](_0xd6bbeb[_0x4ed2('0x35')],_0xd6bbeb[_0x4ed2('0x31')]);_0x40c5fd[_0x4ed2('0x36')]=_[_0x4ed2('0x34')](_0xd6bbeb[_0x4ed2('0x35')],qs[_0x4ed2('0x37')](_0xf7f109[_0x4ed2('0x31')][_0x4ed2('0x37')]));_0x40c5fd['attributes']=_0x40c5fd[_0x4ed2('0x36')]['length']?_0x40c5fd[_0x4ed2('0x36')]:_0xd6bbeb[_0x4ed2('0x35')];if(!_0xf7f109[_0x4ed2('0x31')][_0x4ed2('0x38')](_0x4ed2('0x39'))){_0x40c5fd['limit']=qs[_0x4ed2('0x3a')](_0xf7f109[_0x4ed2('0x31')][_0x4ed2('0x3a')]);_0x40c5fd[_0x4ed2('0x20')]=qs[_0x4ed2('0x20')](_0xf7f109[_0x4ed2('0x31')]['offset']);}_0x40c5fd[_0x4ed2('0x3b')]=qs[_0x4ed2('0x3c')](_0xf7f109[_0x4ed2('0x31')][_0x4ed2('0x3c')]);_0x40c5fd[_0x4ed2('0x3d')]=qs[_0x4ed2('0x33')](_['pick'](_0xf7f109[_0x4ed2('0x31')],_0xd6bbeb[_0x4ed2('0x33')]),_0x1df296);if(_0xf7f109['query'][_0x4ed2('0x3e')]){_0x40c5fd[_0x4ed2('0x3d')]=_[_0x4ed2('0x3f')](_0x40c5fd[_0x4ed2('0x3d')],{'$or':_[_0x4ed2('0x2c')](_0x1df296,function(_0x18caf4){if(_0x18caf4[_0x4ed2('0x2f')]!=='VIRTUAL'){var _0x4761c3={};_0x4761c3[_0x18caf4[_0x4ed2('0x2a')]]={'$like':'%'+_0xf7f109[_0x4ed2('0x31')][_0x4ed2('0x3e')]+'%'};return _0x4761c3;}})});}_0x40c5fd=_['merge']({},_0x40c5fd,_0xf7f109[_0x4ed2('0x40')]);var _0x35a8d4={'where':_0x40c5fd['where']};return db[_0x4ed2('0x2d')][_0x4ed2('0x22')](_0x35a8d4)[_0x4ed2('0x26')](function(_0x22af8b){_0x175501[_0x4ed2('0x22')]=_0x22af8b;if(_0xf7f109[_0x4ed2('0x31')]['includeAll']){_0x40c5fd[_0x4ed2('0x41')]=[{'all':!![]}];}return db[_0x4ed2('0x2d')][_0x4ed2('0x42')](_0x40c5fd);})[_0x4ed2('0x26')](function(_0x51a36a){_0x175501[_0x4ed2('0x43')]=_0x51a36a;return _0x175501;})[_0x4ed2('0x26')](respondWithFilteredResult(_0x392ece,_0x40c5fd))[_0x4ed2('0x44')](handleError(_0x392ece,null));};exports['show']=function(_0x367770,_0x33b69d){var _0x4c2d3d={'raw':!![],'where':{'id':_0x367770[_0x4ed2('0x45')]['id']}},_0x4cb02a={};_0x4cb02a[_0x4ed2('0x35')]=_[_0x4ed2('0x32')](db[_0x4ed2('0x2d')][_0x4ed2('0x2e')]);_0x4cb02a['query']=_[_0x4ed2('0x32')](_0x367770[_0x4ed2('0x31')]);_0x4cb02a[_0x4ed2('0x33')]=_[_0x4ed2('0x34')](_0x4cb02a[_0x4ed2('0x35')],_0x4cb02a[_0x4ed2('0x31')]);_0x4c2d3d[_0x4ed2('0x36')]=_['intersection'](_0x4cb02a[_0x4ed2('0x35')],qs['fields'](_0x367770[_0x4ed2('0x31')][_0x4ed2('0x37')]));_0x4c2d3d[_0x4ed2('0x36')]=_0x4c2d3d[_0x4ed2('0x36')]['length']?_0x4c2d3d[_0x4ed2('0x36')]:_0x4cb02a[_0x4ed2('0x35')];if(_0x367770[_0x4ed2('0x31')]['includeAll']){_0x4c2d3d[_0x4ed2('0x41')]=[{'all':!![]}];}_0x4c2d3d=_[_0x4ed2('0x3f')]({},_0x4c2d3d,_0x367770['options']);return db[_0x4ed2('0x2d')][_0x4ed2('0x46')](_0x4c2d3d)['then'](handleEntityNotFound(_0x33b69d,null))['then'](respondWithResult(_0x33b69d,null))['catch'](handleError(_0x33b69d,null));};exports[_0x4ed2('0x47')]=function(_0x5b8417,_0x5bab67){var _0x5c71c9={'where':{'id':_0x5b8417['params']['id']}},_0x2ab11b={};_0x2ab11b[_0x4ed2('0x35')]=_['keys'](db[_0x4ed2('0x2d')][_0x4ed2('0x2e')]);_0x5c71c9[_0x4ed2('0x36')]=_[_0x4ed2('0x34')](_0x2ab11b[_0x4ed2('0x35')],qs['fields'](_0x5b8417[_0x4ed2('0x31')]['fields']));_0x5c71c9['attributes']=_0x5c71c9[_0x4ed2('0x36')][_0x4ed2('0x48')]?_0x5c71c9[_0x4ed2('0x36')]:_0x2ab11b[_0x4ed2('0x35')];if(_0x5b8417[_0x4ed2('0x31')][_0x4ed2('0x49')]){_0x5c71c9['include']=[{'all':!![]}];}_0x5c71c9=_[_0x4ed2('0x3f')]({},_0x5c71c9,_0x5b8417[_0x4ed2('0x40')]);return db[_0x4ed2('0x2d')]['find'](_0x5c71c9)['then'](handleEntityNotFound(_0x5bab67,null))[_0x4ed2('0x26')](function(_0x28edbc){if(_0x28edbc){var _0x2a547c=_0x28edbc[_0x4ed2('0x4a')]({'plain':!![]});_0x2a547c=qs[_0x4ed2('0x4b')](_0x2a547c,['id',_0x4ed2('0x4c'),_0x4ed2('0x4d')]);_0x5b8417[_0x4ed2('0x4e')]=_[_0x4ed2('0x4b')](_0x5b8417[_0x4ed2('0x4e')],['id',_0x4ed2('0x4c'),_0x4ed2('0x4d')]);return db['Attachment'][_0x4ed2('0x4f')](_[_0x4ed2('0x3f')](_0x2a547c,_0x5b8417[_0x4ed2('0x4e')]),{'include':_0x5b8417[_0x4ed2('0x31')][_0x4ed2('0x49')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x5bab67,0xc9))['catch'](handleError(_0x5bab67,null));};exports[_0x4ed2('0x25')]=function(_0x4c1c2d,_0x553cca){if(_0x4c1c2d['body']['id']){delete _0x4c1c2d[_0x4ed2('0x4e')]['id'];}return db[_0x4ed2('0x2d')]['find']({'where':{'id':_0x4c1c2d[_0x4ed2('0x45')]['id']}})[_0x4ed2('0x26')](handleEntityNotFound(_0x553cca,null))[_0x4ed2('0x26')](saveUpdates(_0x4c1c2d[_0x4ed2('0x4e')],null))[_0x4ed2('0x26')](respondWithResult(_0x553cca,null))[_0x4ed2('0x44')](handleError(_0x553cca,null));};exports[_0x4ed2('0x27')]=function(_0x58f95d,_0x2c2b11){return db[_0x4ed2('0x2d')]['find']({'where':{'id':_0x58f95d[_0x4ed2('0x45')]['id']}})['then'](handleEntityNotFound(_0x2c2b11,null))[_0x4ed2('0x26')](removeEntity(_0x2c2b11,null))[_0x4ed2('0x44')](handleError(_0x2c2b11,null));};exports[_0x4ed2('0x4f')]=function(_0xe2844f,_0x4c0ecc,_0x5f04b1){_0xe2844f[_0x4ed2('0x4e')][_0x4ed2('0x2a')]=_0xe2844f['file'][_0x4ed2('0x50')];_0xe2844f[_0x4ed2('0x4e')]['basename']=_0xe2844f[_0x4ed2('0x51')]['filename'];_0xe2844f[_0x4ed2('0x4e')][_0x4ed2('0x2f')]=_0xe2844f[_0x4ed2('0x51')][_0x4ed2('0x52')];return db[_0x4ed2('0x2d')][_0x4ed2('0x4f')](_0xe2844f[_0x4ed2('0x4e')])[_0x4ed2('0x26')](respondWithResult(_0x4c0ecc,0xc9))['catch'](handleError(_0x4c0ecc,null));};exports['download']=function(_0x429d1b,_0x5e24df,_0x36d05e){return db[_0x4ed2('0x2d')][_0x4ed2('0x53')]({'where':{'id':_0x429d1b[_0x4ed2('0x45')]['id']},'raw':!![]})[_0x4ed2('0x26')](handleEntityNotFound(_0x5e24df,null))[_0x4ed2('0x26')](function(_0x4218f9){if(_0x4218f9){var _0x2b458c=_0x4218f9['ChatOfflineMessageId']!==null;var _0x431d6c=path[_0x4ed2('0x54')](config[_0x4ed2('0x55')],_0x4ed2('0x56'));if(_0x2b458c){_0x431d6c=path['join'](_0x431d6c,_0x4ed2('0x57'));}var _0x495e57=path[_0x4ed2('0x54')](_0x431d6c,_0x4218f9[_0x4ed2('0x58')]);return _0x5e24df['download'](_0x495e57);}})[_0x4ed2('0x44')](handleError(_0x5e24df,null));};
\ No newline at end of file
index 384500b..6aeebab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x969f=['exports','attachments','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./attachment.attributes'];(function(_0x1868a1,_0x315386){var _0x18de1a=function(_0x5647c4){while(--_0x5647c4){_0x1868a1['push'](_0x1868a1['shift']());}};_0x18de1a(++_0x315386);}(_0x969f,0xf2));var _0xf969=function(_0x1558ee,_0x40ed70){_0x1558ee=_0x1558ee-0x0;var _0x252dba=_0x969f[_0x1558ee];return _0x252dba;};'use strict';var _=require(_0xf969('0x0'));var util=require(_0xf969('0x1'));var logger=require(_0xf969('0x2'))('api');var moment=require(_0xf969('0x3'));var BPromise=require(_0xf969('0x4'));var rp=require(_0xf969('0x5'));var fs=require('fs');var path=require(_0xf969('0x6'));var rimraf=require(_0xf969('0x7'));var config=require(_0xf969('0x8'));var attributes=require(_0xf969('0x9'));module[_0xf969('0xa')]=function(_0xb306ff,_0x44e7b1){return _0xb306ff['define']('Attachment',attributes,{'tableName':_0xf969('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3ae3=['request-promise','rimraf','./attachment.attributes','exports','Attachment','attachments','lodash','util','../../config/logger'];(function(_0x2330a1,_0x4bb8d3){var _0x32c0a6=function(_0xba8ada){while(--_0xba8ada){_0x2330a1['push'](_0x2330a1['shift']());}};_0x32c0a6(++_0x4bb8d3);}(_0x3ae3,0x1c8));var _0x33ae=function(_0x5993b3,_0x34da84){_0x5993b3=_0x5993b3-0x0;var _0x3108b5=_0x3ae3[_0x5993b3];return _0x3108b5;};'use strict';var _=require(_0x33ae('0x0'));var util=require(_0x33ae('0x1'));var logger=require(_0x33ae('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x33ae('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x33ae('0x4'));var config=require('../../config/environment');var attributes=require(_0x33ae('0x5'));module[_0x33ae('0x6')]=function(_0x27437d,_0x26705d){return _0x27437d['define'](_0x33ae('0x7'),attributes,{'tableName':_0x33ae('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a6e22e0..ecceb7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8eeb=['../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','code','Attachment,\x20%s,\x20%s','message','result','CreateAttachment','create','body','options','raw','catch','lodash','moment','bluebird','ioredis','../../mysqldb'];(function(_0x770d52,_0x58cd79){var _0x36f0b1=function(_0x499e5d){while(--_0x499e5d){_0x770d52['push'](_0x770d52['shift']());}};_0x36f0b1(++_0x58cd79);}(_0x8eeb,0x183));var _0xb8ee=function(_0x12b1ca,_0x6262dd){_0x12b1ca=_0x12b1ca-0x0;var _0x261745=_0x8eeb[_0x12b1ca];return _0x261745;};'use strict';var _=require(_0xb8ee('0x0'));var util=require('util');var moment=require(_0xb8ee('0x1'));var BPromise=require(_0xb8ee('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb8ee('0x3'));var db=require(_0xb8ee('0x4'))['db'];var utils=require(_0xb8ee('0x5'));var logger=require(_0xb8ee('0x6'))(_0xb8ee('0x7'));var config=require('../../config/environment');var jayson=require(_0xb8ee('0x8'));var client=jayson['client'][_0xb8ee('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x30dff7,_0x430b38,_0x469393){return new BPromise(function(_0x4e2428,_0x27243c){return client[_0xb8ee('0xa')](_0x30dff7,_0x469393)[_0xb8ee('0xb')](function(_0x5ea3ab){logger[_0xb8ee('0xc')]('Attachment,\x20%s,\x20%s',_0x430b38,_0xb8ee('0xd'));logger[_0xb8ee('0xe')](_0xb8ee('0xf'),_0x430b38,_0xb8ee('0xd'),JSON[_0xb8ee('0x10')](_0x5ea3ab));if(_0x5ea3ab[_0xb8ee('0x11')]){if(_0x5ea3ab[_0xb8ee('0x11')][_0xb8ee('0x12')]===0x1f4){logger['error'](_0xb8ee('0x13'),_0x430b38,_0x5ea3ab[_0xb8ee('0x11')][_0xb8ee('0x14')]);return _0x27243c(_0x5ea3ab[_0xb8ee('0x11')][_0xb8ee('0x14')]);}logger[_0xb8ee('0x11')]('Attachment,\x20%s,\x20%s',_0x430b38,_0x5ea3ab[_0xb8ee('0x11')][_0xb8ee('0x14')]);return _0x4e2428(_0x5ea3ab[_0xb8ee('0x11')][_0xb8ee('0x14')]);}else{logger[_0xb8ee('0xc')](_0xb8ee('0x13'),_0x430b38,_0xb8ee('0xd'));_0x4e2428(_0x5ea3ab[_0xb8ee('0x15')][_0xb8ee('0x14')]);}})['catch'](function(_0x135d5d){logger['error']('Attachment,\x20%s,\x20%s',_0x430b38,_0x135d5d);_0x27243c(_0x135d5d);});});}exports[_0xb8ee('0x16')]=function(_0x34dfb9){var _0x4d9a82=this;return new Promise(function(_0x3f0577,_0x369e3e){return db['Attachment'][_0xb8ee('0x17')](_0x34dfb9[_0xb8ee('0x18')],{'raw':_0x34dfb9[_0xb8ee('0x19')]?_0x34dfb9['options'][_0xb8ee('0x1a')]===undefined?!![]:![]:!![]})[_0xb8ee('0xb')](function(_0x39d8b2){logger[_0xb8ee('0xc')](_0xb8ee('0x16'),_0x34dfb9);logger['debug'](_0xb8ee('0x16'),_0x34dfb9,JSON['stringify'](_0x39d8b2));_0x3f0577(_0x39d8b2);})[_0xb8ee('0x1b')](function(_0x134ddb){logger[_0xb8ee('0x11')](_0xb8ee('0x16'),_0x134ddb[_0xb8ee('0x14')],_0x34dfb9);_0x369e3e(_0x4d9a82[_0xb8ee('0x11')](0x1f4,_0x134ddb[_0xb8ee('0x14')]));});});};
\ No newline at end of file
+var _0x98e5=['error','code','message','result','CreateAttachment','Attachment','create','body','options','raw','debug','stringify','catch','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','client','request','then','info','Attachment,\x20%s,\x20%s','request\x20sent','Attachment,\x20%s,\x20%s,\x20%s'];(function(_0x405022,_0x2377a8){var _0x3b29e7=function(_0xb927b5){while(--_0xb927b5){_0x405022['push'](_0x405022['shift']());}};_0x3b29e7(++_0x2377a8);}(_0x98e5,0x8a));var _0x598e=function(_0x2285ab,_0x2479e7){_0x2285ab=_0x2285ab-0x0;var _0x2b2191=_0x98e5[_0x2285ab];return _0x2b2191;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x598e('0x0'));var rs=require(_0x598e('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x598e('0x2'))['db'];var utils=require(_0x598e('0x3'));var logger=require('../../config/logger')(_0x598e('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x598e('0x5')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4292c3,_0x1fc8b5,_0x10bf8e){return new BPromise(function(_0x3e0212,_0x9dc046){return client[_0x598e('0x6')](_0x4292c3,_0x10bf8e)[_0x598e('0x7')](function(_0x2550b9){logger[_0x598e('0x8')](_0x598e('0x9'),_0x1fc8b5,_0x598e('0xa'));logger['debug'](_0x598e('0xb'),_0x1fc8b5,_0x598e('0xa'),JSON['stringify'](_0x2550b9));if(_0x2550b9[_0x598e('0xc')]){if(_0x2550b9['error'][_0x598e('0xd')]===0x1f4){logger[_0x598e('0xc')](_0x598e('0x9'),_0x1fc8b5,_0x2550b9[_0x598e('0xc')][_0x598e('0xe')]);return _0x9dc046(_0x2550b9['error'][_0x598e('0xe')]);}logger['error'](_0x598e('0x9'),_0x1fc8b5,_0x2550b9[_0x598e('0xc')]['message']);return _0x3e0212(_0x2550b9[_0x598e('0xc')][_0x598e('0xe')]);}else{logger[_0x598e('0x8')](_0x598e('0x9'),_0x1fc8b5,_0x598e('0xa'));_0x3e0212(_0x2550b9[_0x598e('0xf')][_0x598e('0xe')]);}})['catch'](function(_0x9ba324){logger[_0x598e('0xc')](_0x598e('0x9'),_0x1fc8b5,_0x9ba324);_0x9dc046(_0x9ba324);});});}exports[_0x598e('0x10')]=function(_0x50ffbb){var _0x1efdfc=this;return new Promise(function(_0x2ecb1e,_0x1727dd){return db[_0x598e('0x11')][_0x598e('0x12')](_0x50ffbb[_0x598e('0x13')],{'raw':_0x50ffbb[_0x598e('0x14')]?_0x50ffbb[_0x598e('0x14')][_0x598e('0x15')]===undefined?!![]:![]:!![]})[_0x598e('0x7')](function(_0x17e5f1){logger[_0x598e('0x8')](_0x598e('0x10'),_0x50ffbb);logger[_0x598e('0x16')](_0x598e('0x10'),_0x50ffbb,JSON[_0x598e('0x17')](_0x17e5f1));_0x2ecb1e(_0x17e5f1);})[_0x598e('0x18')](function(_0x5b9c3){logger['error'](_0x598e('0x10'),_0x5b9c3['message'],_0x50ffbb);_0x1727dd(_0x1efdfc[_0x598e('0xc')](0x1f4,_0x5b9c3[_0x598e('0xe')]));});});};
\ No newline at end of file
index f5069ff..ab987b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['root','format','%s-%s','originalname','replace','file','put','update','delete','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/download','download','post','/:id/clone'];(function(_0x414334,_0x23d761){var _0x47cf2b=function(_0x46051b){while(--_0x46051b){_0x414334['push'](_0x414334['shift']());}};_0x47cf2b(++_0x23d761);}(_0xadb5,0xad));var _0x5adb=function(_0x38ace2,_0x28ea21){_0x38ace2=_0x38ace2-0x0;var _0x12fe49=_0xadb5[_0x38ace2];return _0x12fe49;};'use strict';var multer=require('multer');var util=require(_0x5adb('0x0'));var path=require('path');var timeout=require(_0x5adb('0x1'));var express=require(_0x5adb('0x2'));var router=express[_0x5adb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5adb('0x4'));var interaction=require(_0x5adb('0x5'));var config=require(_0x5adb('0x6'));var controller=require('./attachment.controller');router[_0x5adb('0x7')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0x9')]);router[_0x5adb('0x7')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xb')]);router[_0x5adb('0x7')](_0x5adb('0xc'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xd')]);router[_0x5adb('0xe')](_0x5adb('0xf'),auth[_0x5adb('0x8')](),controller['clone']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1a8f66,_0x1ea238,_0x82e67e){_0x82e67e(null,path['join'](config[_0x5adb('0x10')],'server/files/attachments/'));},'filename':function(_0x2a0b70,_0x5433bf,_0x8cfcc6){_0x8cfcc6(null,util[_0x5adb('0x11')](_0x5adb('0x12'),Date['now'](),_0x5433bf[_0x5adb('0x13')][_0x5adb('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x5adb('0xe')]('/',upload['single'](_0x5adb('0x15')),controller['create']);router[_0x5adb('0x16')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x17')]);router[_0x5adb('0x18')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x19')]);module[_0x5adb('0x1a')]=router;
\ No newline at end of file
+var _0x5f66=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/download','/:id/clone','clone','diskStorage','root','format','%s-%s','now','originalname','replace','post','single','file','create','delete','destroy','exports','util','connect-timeout','express','Router'];(function(_0x506d2f,_0x5ab76e){var _0x101255=function(_0x1596b1){while(--_0x1596b1){_0x506d2f['push'](_0x506d2f['shift']());}};_0x101255(++_0x5ab76e);}(_0x5f66,0x1a0));var _0x65f6=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x5f66[_0x173441];return _0x2423a8;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./attachment.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['download']);router['post'](_0x65f6('0xc'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);var upload=multer({'storage':multer[_0x65f6('0xe')]({'destination':function(_0x50d26d,_0x41a7fd,_0x571436){_0x571436(null,path['join'](config[_0x65f6('0xf')],'server/files/attachments/'));},'filename':function(_0x419819,_0x4862a5,_0x2f964a){_0x2f964a(null,util[_0x65f6('0x10')](_0x65f6('0x11'),Date[_0x65f6('0x12')](),_0x4862a5[_0x65f6('0x13')][_0x65f6('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x65f6('0x15')]('/',upload[_0x65f6('0x16')](_0x65f6('0x17')),controller[_0x65f6('0x18')]);router['put'](_0x65f6('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x65f6('0x19')](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0x1a')]);module[_0x65f6('0x1b')]=router;
\ No newline at end of file
diff --git a/server/api/authActiveDirectory/authActiveDirectory.controller.js b/server/api/authActiveDirectory/authActiveDirectory.controller.js
deleted file mode 100644 (file)
index b30582d..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0xa9e0=['salt','role','disabled','blocked','admin','user','then','minutes','clearBlockUser','getLicense','catch','status','message','login','authenticate','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','online','use','User','passport','passport-local','Strategy','bluebird','../../mysqldb','../../components/auth/service','../../config/utils','../../config/environment','../../config/logger','activedirectory','baseDN','domain','error','Error\x20authenticate\x20%s:\x20%s','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Setting','findOne','blockDuration','adSsoEnabled','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'use strict';var passport=require(_0x0a9e('0x0'));var LocalStrategy=require(_0x0a9e('0x1'))[_0x0a9e('0x2')];var moment=require('moment');var ActiveDirectory=require('activedirectory2');var BPromise=require(_0x0a9e('0x3'));var util=require('util');var db=require(_0x0a9e('0x4'))['db'];var authService=require(_0x0a9e('0x5'));var utils=require(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var logger=require(_0x0a9e('0x8'))('api');function isActiveDirectoryConfigured(_0x219af0){var _0x441e3a=![];if(typeof _0x219af0[_0x0a9e('0x9')]!=='undefined'){_0x441e3a=_0x219af0['activedirectory'][_0x0a9e('0xa')]&&_0x219af0['activedirectory']['url']&&_0x219af0[_0x0a9e('0x9')][_0x0a9e('0xb')];}return _0x441e3a;}function adAuthenticate(_0x307b3e,_0x3ab53f,_0xfeb75b){return new BPromise(function(_0xbd1168,_0x4a4c56){try{var _0x50dfb2=new ActiveDirectory(_0x307b3e);_0x50dfb2['authenticate'](_0x3ab53f,_0xfeb75b,function(_0x4cfe67,_0x273d4d){if(_0x4cfe67){logger[_0x0a9e('0xc')](_0x0a9e('0xd'),_0x3ab53f,util[_0x0a9e('0xe')](_0x4cfe67,{'showHidden':![],'depth':null}));_0x4a4c56(_0x0a9e('0xf'));}else if(!_0x273d4d){logger[_0x0a9e('0xc')]('Error\x20authenticate\x20%s:\x20Wrong\x20credentials',_0x3ab53f);_0x4a4c56(_0x0a9e('0xf'));}else{_0xbd1168(_0x273d4d);}});}catch(_0x239b12){_0x4a4c56(_0x239b12);}});}function ActiveDirectoryAuthenticate(_0x2b4227,_0x281129,_0x44dcfd,_0x4d5611){var _0x52a03d,_0x22dccb;if(!isActiveDirectoryConfigured(config)){logger['error'](_0x0a9e('0x10'),_0x281129);return _0x4d5611(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db[_0x0a9e('0x11')][_0x0a9e('0x12')]({'where':{'id':0x1},'attributes':['adSsoEnabled',_0x0a9e('0x13')],'raw':!![]})['then'](function(_0x459eb1){_0x52a03d=_0x459eb1;if(!_0x52a03d[_0x0a9e('0x14')]){logger[_0x0a9e('0xc')](_0x0a9e('0x15'),_0x281129);throw new Error(_0x0a9e('0xf'));}return _0x2b4227[_0x0a9e('0x12')]({'logging':!![],'attributes':['id',_0x0a9e('0x16'),_0x0a9e('0x17'),_0x0a9e('0x18'),_0x0a9e('0x19'),_0x0a9e('0x1a'),_0x0a9e('0x1b'),'blockedAt'],'where':{'name':_0x281129,'role':{'$or':[_0x0a9e('0x1c'),_0x0a9e('0x1d'),'agent']},'adSsoEnabled':!![]}});})[_0x0a9e('0x1e')](function(_0x5a09ef){if(!_0x5a09ef||_0x5a09ef&&_0x5a09ef['name']!==_0x281129){throw new Error(_0x0a9e('0xf'));}_0x22dccb=_0x5a09ef;var _0x432e56=_0x22dccb[_0x0a9e('0x16')]+'@'+config[_0x0a9e('0x9')]['domain'];return adAuthenticate(config[_0x0a9e('0x9')],_0x432e56,_0x44dcfd);})[_0x0a9e('0x1e')](function(_0x3b45bc){if(_0x22dccb[_0x0a9e('0x1a')]){throw new Error(_0x0a9e('0xf'));}if(_0x52a03d[_0x0a9e('0x13')]>0x0){if(_0x22dccb[_0x0a9e('0x1b')]){if(moment(_0x22dccb['blockedAt'])['add'](_0x52a03d[_0x0a9e('0x13')],_0x0a9e('0x1f'))>moment()){throw new Error(_0x0a9e('0xf'));}return utils[_0x0a9e('0x20')](_0x22dccb,0x0,![],null)['then'](function(){return utils[_0x0a9e('0x21')](_0x22dccb);})['then'](function(){return _0x4d5611(null,_0x22dccb);});}else{return utils[_0x0a9e('0x21')](_0x22dccb)['then'](function(){return _0x4d5611(null,_0x22dccb);});}}else{return utils[_0x0a9e('0x21')](_0x22dccb)[_0x0a9e('0x1e')](function(){return _0x4d5611(null,_0x22dccb);});}})[_0x0a9e('0x22')](function(_0x14433c){return _0x4d5611(null,![],_0x14433c);});}function handleError(_0x140511,_0x1538a4,_0x11c3b6){return _0x140511[_0x0a9e('0x23')](_0x1538a4||0x1f4)['send']({'message':_0x11c3b6?_0x11c3b6[_0x0a9e('0x24')]||_0x11c3b6:''});}exports[_0x0a9e('0x25')]=function(_0x2b1f27,_0x2ec755,_0x5c877d){passport[_0x0a9e('0x26')](_0x0a9e('0x27'),function(_0x1843b2,_0x824a4f,_0x58b06f){var _0x563b45=_0x1843b2||_0x58b06f;if(_0x563b45){return handleError(_0x2ec755,0x191,_0x563b45);}if(!_0x824a4f){return handleError(_0x2ec755,0x194,{'message':_0x0a9e('0x28')});}else{var _0x2e8759={'payload':{'id':_0x824a4f['id'],'role':_0x824a4f[_0x0a9e('0x19')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x2e8759)[_0x0a9e('0x1e')](function(_0x5d1e0e){_0x2ec755[_0x0a9e('0x29')]({'id':_0x824a4f['id'],'token':_0x5d1e0e,'statusCall':'','isAlreadyLogged':_0x824a4f[_0x0a9e('0x2a')]});});}})(_0x2b1f27,_0x2ec755,_0x5c877d);};passport[_0x0a9e('0x2b')](_0x0a9e('0x27'),new LocalStrategy({'usernameField':_0x0a9e('0x16'),'passwordField':'password'},function(_0x66c1d2,_0x46f0a5,_0x40cb85){return ActiveDirectoryAuthenticate(db[_0x0a9e('0x2c')],_0x66c1d2,_0x46f0a5,_0x40cb85);}));
\ No newline at end of file
diff --git a/server/api/authActiveDirectory/index.js b/server/api/authActiveDirectory/index.js
deleted file mode 100644 (file)
index 2d2c3a0..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0xb2c0=['Router','./authActiveDirectory.controller','exports','express'];(function(_0x44b3bd,_0x44c97d){var _0x1efc4a=function(_0x5d0205){while(--_0x5d0205){_0x44b3bd['push'](_0x44b3bd['shift']());}};_0x1efc4a(++_0x44c97d);}(_0xb2c0,0xff));var _0x0b2c=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xb2c0[_0x4b369d];return _0x571a98;};'use strict';var express=require(_0x0b2c('0x0'));var router=express[_0x0b2c('0x1')]();var controller=require(_0x0b2c('0x2'));router['post']('/',controller['login']);module[_0x0b2c('0x3')]=router;
\ No newline at end of file
index d95d167..d1d508b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['blockedAt','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','moment','../../mysqldb','../../config/utils','login','authenticate','google','/login','email','use','secret','callbackURL','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','value','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'];(function(_0xe73080,_0x24c56d){var _0x12cbc4=function(_0x1377e2){while(--_0x1377e2){_0xe73080['push'](_0xe73080['shift']());}};_0x12cbc4(++_0x24c56d);}(_0x7a54,0x106));var _0x47a5=function(_0x1ee28d,_0x44577f){_0x1ee28d=_0x1ee28d-0x0;var _0x51be0e=_0x7a54[_0x1ee28d];return _0x51be0e;};'use strict';var _=require(_0x47a5('0x0'));var passport=require(_0x47a5('0x1'));var GoogleStrategy=require(_0x47a5('0x2'))['Strategy'];var moment=require(_0x47a5('0x3'));var db=require(_0x47a5('0x4'))['db'];var config=require('../../config/environment');var utils=require(_0x47a5('0x5'));exports[_0x47a5('0x6')]=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':_0x47a5('0x9'),'scope':['profile',_0x47a5('0xa')],'session':![]});exports['callback']=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':'/login','session':![]});passport[_0x47a5('0xb')](new GoogleStrategy({'clientID':config['google']?config['google']['clientID']:'id','clientSecret':config[_0x47a5('0x8')]?config[_0x47a5('0x8')]['clientSecret']:_0x47a5('0xc'),'callbackURL':config['google']?config['google'][_0x47a5('0xd')]:''},function(_0x69e4d4,_0x2f399b,_0x250fad,_0xd612dd){var _0xd308b8,_0x1eae59;return db['Setting'][_0x47a5('0xe')]({'where':{'id':0x1},'attributes':[_0x47a5('0xf'),_0x47a5('0x10')],'raw':!![]})[_0x47a5('0x11')](function(_0x139f25){_0xd308b8=_0x139f25;return db[_0x47a5('0x12')][_0x47a5('0x13')]({'where':{'email':_[_0x47a5('0x14')](_0x250fad['emails'],_0x47a5('0x15')),'role':{'$or':[_0x47a5('0x16'),_0x47a5('0x17'),_0x47a5('0x18')]}}});})[_0x47a5('0x11')](function(_0x574af6){_0x1eae59=_0x574af6;if(_0x1eae59){if(_0x1eae59['disabled']){return _0xd612dd(_0x47a5('0x19'));}else if(_0xd308b8['blockDuration']>0x0){if(_0x1eae59['blocked']){if(moment(_0x1eae59[_0x47a5('0x1a')])[_0x47a5('0x1b')](_0xd308b8[_0x47a5('0x10')],_0x47a5('0x1c'))>moment()){return _0xd612dd(_0x47a5('0x19'));}else{return utils[_0x47a5('0x1d')](_0x1eae59,0x0,![],null)[_0x47a5('0x11')](function(){return utils[_0x47a5('0x1e')](_0x1eae59);})[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils['getLicense'](_0x1eae59)[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils[_0x47a5('0x1e')](_0x1eae59)['then'](function(){return _0xd612dd(null,_0x1eae59);});}}return _0xd612dd(_0x47a5('0x19'));})[_0x47a5('0x1f')](function(_0x36874d){_0xd612dd(_0x36874d);});}));
\ No newline at end of file
+var _0xfbc1=['blocked','blockedAt','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','moment','../../mysqldb','../../config/environment','../../components/auth/service','signToken','../../config/utils','login','authenticate','google','/login','profile','email','use','clientID','clientSecret','secret','callbackURL','Setting','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','emails','admin','user','agent','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'];(function(_0x3003fb,_0x31a074){var _0x3ebe4b=function(_0x166feb){while(--_0x166feb){_0x3003fb['push'](_0x3003fb['shift']());}};_0x3ebe4b(++_0x31a074);}(_0xfbc1,0x1ca));var _0x1fbc=function(_0x28f32c,_0x4cc342){_0x28f32c=_0x28f32c-0x0;var _0x355402=_0xfbc1[_0x28f32c];return _0x355402;};'use strict';var _=require(_0x1fbc('0x0'));var passport=require(_0x1fbc('0x1'));var GoogleStrategy=require(_0x1fbc('0x2'))['Strategy'];var moment=require(_0x1fbc('0x3'));var db=require(_0x1fbc('0x4'))['db'];var config=require(_0x1fbc('0x5'));var signToken=require(_0x1fbc('0x6'))[_0x1fbc('0x7')];var utils=require(_0x1fbc('0x8'));exports[_0x1fbc('0x9')]=passport[_0x1fbc('0xa')](_0x1fbc('0xb'),{'failureRedirect':_0x1fbc('0xc'),'scope':[_0x1fbc('0xd'),_0x1fbc('0xe')],'session':![]});exports['callback']=passport[_0x1fbc('0xa')]('google',{'failureRedirect':'/login','session':![]});passport[_0x1fbc('0xf')](new GoogleStrategy({'clientID':config['google']?config[_0x1fbc('0xb')][_0x1fbc('0x10')]:'id','clientSecret':config[_0x1fbc('0xb')]?config[_0x1fbc('0xb')][_0x1fbc('0x11')]:_0x1fbc('0x12'),'callbackURL':config['google']?config[_0x1fbc('0xb')][_0x1fbc('0x13')]:''},function(_0x58ca54,_0x1234e8,_0x3e5e6e,_0x567c5e){var _0x3ce7dc,_0x18e7ad;return db[_0x1fbc('0x14')][_0x1fbc('0x15')]({'where':{'id':0x1},'attributes':[_0x1fbc('0x16'),_0x1fbc('0x17')],'raw':!![]})[_0x1fbc('0x18')](function(_0x236ca7){_0x3ce7dc=_0x236ca7;return db[_0x1fbc('0x19')][_0x1fbc('0x1a')]({'where':{'email':_[_0x1fbc('0x1b')](_0x3e5e6e[_0x1fbc('0x1c')],'value'),'role':{'$or':[_0x1fbc('0x1d'),_0x1fbc('0x1e'),_0x1fbc('0x1f')]}}});})['then'](function(_0x3ae096){_0x18e7ad=_0x3ae096;if(_0x18e7ad){if(_0x18e7ad[_0x1fbc('0x20')]){return _0x567c5e(_0x1fbc('0x21'));}else if(_0x3ce7dc[_0x1fbc('0x17')]>0x0){if(_0x18e7ad[_0x1fbc('0x22')]){if(moment(_0x18e7ad[_0x1fbc('0x23')])[_0x1fbc('0x24')](_0x3ce7dc['blockDuration'],_0x1fbc('0x25'))>moment()){return _0x567c5e(_0x1fbc('0x21'));}else{return utils[_0x1fbc('0x26')](_0x18e7ad,0x0,![],null)['then'](function(){return utils[_0x1fbc('0x27')](_0x18e7ad);})[_0x1fbc('0x18')](function(){return _0x567c5e(null,_0x18e7ad);});}}else{return utils[_0x1fbc('0x27')](_0x18e7ad)[_0x1fbc('0x18')](function(){return _0x567c5e(null,_0x18e7ad);});}}else{return utils[_0x1fbc('0x27')](_0x18e7ad)[_0x1fbc('0x18')](function(){return _0x567c5e(null,_0x18e7ad);});}}return _0x567c5e('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');})[_0x1fbc('0x28')](function(_0x4f7d13){_0x567c5e(_0x4f7d13);});}));
\ No newline at end of file
index e615484..fd6b099 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c79=['express','../user/user.controller.js','get','login','/callback','setTokenCookie'];(function(_0x104857,_0x34844c){var _0x5c7d6d=function(_0x1aa95f){while(--_0x1aa95f){_0x104857['push'](_0x104857['shift']());}};_0x5c7d6d(++_0x34844c);}(_0x8c79,0xa8));var _0x98c7=function(_0x47c902,_0x220fd2){_0x47c902=_0x47c902-0x0;var _0x1ad6a0=_0x8c79[_0x47c902];return _0x1ad6a0;};'use strict';var express=require(_0x98c7('0x0'));var passport=require('passport');var router=express['Router']();var controller=require('./authGoogle.controller');var userController=require(_0x98c7('0x1'));var authService=require('../../components/auth/service');router[_0x98c7('0x2')]('/',controller[_0x98c7('0x3')]);router['get'](_0x98c7('0x4'),controller['callback'],authService['isMiddleware'],userController['login'],authService[_0x98c7('0x5')]);module['exports']=router;
\ No newline at end of file
+var _0xba27=['./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','/callback','isMiddleware','login','exports','passport','Router'];(function(_0x1099f2,_0x3456f3){var _0x14595e=function(_0x1967b1){while(--_0x1967b1){_0x1099f2['push'](_0x1099f2['shift']());}};_0x14595e(++_0x3456f3);}(_0xba27,0x15c));var _0x7ba2=function(_0x123cd1,_0x48cb5a){_0x123cd1=_0x123cd1-0x0;var _0x4c13ee=_0xba27[_0x123cd1];return _0x4c13ee;};'use strict';var express=require('express');var passport=require(_0x7ba2('0x0'));var router=express[_0x7ba2('0x1')]();var controller=require(_0x7ba2('0x2'));var userController=require(_0x7ba2('0x3'));var authService=require(_0x7ba2('0x4'));router[_0x7ba2('0x5')]('/',controller['login']);router[_0x7ba2('0x5')](_0x7ba2('0x6'),controller['callback'],authService[_0x7ba2('0x7')],userController[_0x7ba2('0x8')],authService['setTokenCookie']);module[_0x7ba2('0x9')]=router;
\ No newline at end of file
index 9b44277..c4220a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf95a=['\x22%s\x22\x20<%s>','request','SendMail','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','error','message','stringify','status','send','local-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','toLowerCase','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','resetPasswordExpires','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://','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','reset','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','findOne','securePassword','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','resetPasswordToken','Password\x20reset!','use','passport','Strategy','jayson/promise','randomstring','moment','../../components/auth/service','../../config/utils','client','http','Setting','allowedLoginAttempts','blockDuration','then','name','password','salt','role','blocked','blockedAt','loginAttempts','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','disabled','add','minutes','clearBlockUser','getLicense','catch','MailAccount','find','email','MailServerOut','Smtp','service','host','port','secure','authentication','auth','merge','format'];(function(_0x368fb9,_0x1a9895){var _0x4892fb=function(_0x28d735){while(--_0x28d735){_0x368fb9['push'](_0x368fb9['shift']());}};_0x4892fb(++_0x1a9895);}(_0xf95a,0xd6));var _0xaf95=function(_0x8584dd,_0x502183){_0x8584dd=_0x8584dd-0x0;var _0x5cc927=_0xf95a[_0x8584dd];return _0x5cc927;};'use strict';var util=require('util');var passport=require(_0xaf95('0x0'));var LocalStrategy=require('passport-local')[_0xaf95('0x1')];var jayson=require(_0xaf95('0x2'));var _=require('lodash');var rs=require(_0xaf95('0x3'));var moment=require(_0xaf95('0x4'));var db=require('../../mysqldb')['db'];var authService=require(_0xaf95('0x5'));var utils=require(_0xaf95('0x6'));var client=jayson[_0xaf95('0x7')][_0xaf95('0x8')]({'port':0x232b});function localAuthenticate(_0x159c4c,_0x2e9df2,_0x16f322,_0x3029ee){var _0x546824,_0x5d7ece;return db[_0xaf95('0x9')]['findOne']({'where':{'id':0x1},'attributes':[_0xaf95('0xa'),_0xaf95('0xb')],'raw':!![]})[_0xaf95('0xc')](function(_0x101f5b){_0x546824=_0x101f5b;return _0x159c4c['findOne']({'attributes':['id',_0xaf95('0xd'),_0xaf95('0xe'),_0xaf95('0xf'),_0xaf95('0x10'),'disabled',_0xaf95('0x11'),_0xaf95('0x12'),_0xaf95('0x13')],'where':{'name':_0x2e9df2,'role':{'$or':[_0xaf95('0x14'),_0xaf95('0x15'),_0xaf95('0x16')]}}});})['then'](function(_0x51dcfd){if(!_0x51dcfd||_0x51dcfd&&_0x51dcfd[_0xaf95('0xd')]!==_0x2e9df2){throw new Error(_0xaf95('0x17'));}else{_0x5d7ece=_0x51dcfd;return _0x5d7ece;}})[_0xaf95('0xc')](function(){_0x5d7ece[_0xaf95('0x18')](_0x16f322,function(_0x2320c5,_0x47010b){var _0x29c81d=_0x5d7ece[_0xaf95('0x13')]+0x1;if(_0x2320c5){return _0x3029ee(_0x2320c5);}else if(!_0x47010b){if(_0x5d7ece[_0xaf95('0x19')]){return _0x3029ee(null,![],{'message':_0xaf95('0x17')});}else if(_0x546824['allowedLoginAttempts']>0x0){if(_0x5d7ece[_0xaf95('0x11')]){if(_0x546824['blockDuration']>0x0){if(moment(_0x5d7ece[_0xaf95('0x12')])[_0xaf95('0x1a')](_0x546824[_0xaf95('0xb')],_0xaf95('0x1b'))>moment()){return _0x3029ee(null,![],{'message':_0xaf95('0x17')});}else{return utils[_0xaf95('0x1c')](_0x5d7ece,_0x29c81d,![],null)[_0xaf95('0xc')](function(){return _0x3029ee(null,![],{'message':_0xaf95('0x17')});});}}else{return _0x3029ee(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x29c81d>=_0x546824['allowedLoginAttempts']){return utils['clearBlockUser'](_0x5d7ece,0x0,!![],moment())[_0xaf95('0xc')](function(){return _0x3029ee(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils[_0xaf95('0x1c')](_0x5d7ece,_0x29c81d,![],null)[_0xaf95('0xc')](function(){return _0x3029ee(null,![],{'message':_0xaf95('0x17')});});}}}else{return _0x3029ee(null,![],{'message':_0xaf95('0x17')});}}else{if(_0x5d7ece[_0xaf95('0x19')]){return _0x3029ee(null,![],{'message':_0xaf95('0x17')});}else if(_0x546824[_0xaf95('0xa')]>0x0){if(_0x5d7ece[_0xaf95('0x11')]){if(_0x546824[_0xaf95('0xb')]>0x0){if(moment(_0x5d7ece[_0xaf95('0x12')])[_0xaf95('0x1a')](_0x546824[_0xaf95('0xb')],_0xaf95('0x1b'))>moment()){return _0x3029ee(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xaf95('0x1c')](_0x5d7ece,0x0,![],null)['then'](function(){return utils[_0xaf95('0x1d')](_0x5d7ece);})['then'](function(){return _0x3029ee(null,_0x5d7ece);});}}else{return _0x3029ee(null,![],{'message':_0xaf95('0x17')});}}else{return utils[_0xaf95('0x1c')](_0x5d7ece,0x0,![],null)[_0xaf95('0xc')](function(){return utils[_0xaf95('0x1d')](_0x5d7ece);})[_0xaf95('0xc')](function(){return _0x3029ee(null,_0x5d7ece);})['catch'](function(_0x156af0){return _0x3029ee(null,![],_0x156af0);});}}else{if(_0x5d7ece[_0xaf95('0x11')]){return _0x3029ee(null,![],{'message':_0xaf95('0x17')});}else{return utils[_0xaf95('0x1d')](_0x5d7ece)[_0xaf95('0xc')](function(){return _0x3029ee(null,_0x5d7ece);});}}}});})[_0xaf95('0x1e')](function(_0x2323be){return _0x3029ee(null,![],_0x2323be);});}function sendServiceMail(_0x1f417e){return db[_0xaf95('0x1f')][_0xaf95('0x20')]({'where':{'service':!![]},'attributes':['id',_0xaf95('0xd'),_0xaf95('0x21')],'include':[{'model':db[_0xaf95('0x22')],'as':_0xaf95('0x23')}]})['then'](function(_0x19555d){if(!_0x19555d){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x5a6e44={'tls':{'rejectUnauthorized':![]}};if(_0x19555d[_0xaf95('0x23')]['service']){_0x5a6e44[_0xaf95('0x24')]=_0x19555d['Smtp']['service'];}else{_0x5a6e44[_0xaf95('0x25')]=_0x19555d[_0xaf95('0x23')][_0xaf95('0x25')];_0x5a6e44[_0xaf95('0x26')]=_0x19555d[_0xaf95('0x23')][_0xaf95('0x26')];_0x5a6e44[_0xaf95('0x27')]=_0x19555d[_0xaf95('0x23')][_0xaf95('0x27')];}if(_0x19555d['Smtp'][_0xaf95('0x28')]){_0x5a6e44[_0xaf95('0x29')]={'user':_0x19555d[_0xaf95('0x23')][_0xaf95('0x15')],'pass':_0x19555d['Smtp']['pass']};}var _0x2c24a6={'account':_0x5a6e44,'message':_[_0xaf95('0x2a')]({'from':util[_0xaf95('0x2b')](_0xaf95('0x2c'),_0x19555d[_0xaf95('0xd')],_0x19555d['email']||_0x19555d['Smtp'][_0xaf95('0x15')])},_0x1f417e)};return client[_0xaf95('0x2d')](_0xaf95('0x2e'),_0x2c24a6);})[_0xaf95('0xc')](function(_0x302150){if(_0x302150['error']){throw new Error(util[_0xaf95('0x2b')](_0xaf95('0x2f'),_0x302150[_0xaf95('0x30')][_0xaf95('0x31')]||JSON[_0xaf95('0x32')](_0x302150[_0xaf95('0x30')])));}return!![];});}function handleError(_0x450288,_0x5134a6,_0x5d8149){return _0x450288[_0xaf95('0x33')](_0x5134a6||0x1f4)[_0xaf95('0x34')]({'message':_0x5d8149?_0x5d8149[_0xaf95('0x31')]||_0x5d8149:''});}exports['login']=function(_0x426b26,_0x50bfe9,_0x4008f6){passport[_0xaf95('0x18')](_0xaf95('0x35'),function(_0x1b4a22,_0x49dd4a,_0x19b778){var _0x149a1a=_0x1b4a22||_0x19b778;if(_0x149a1a){return handleError(_0x50bfe9,0x191,_0x149a1a);}if(!_0x49dd4a){return handleError(_0x50bfe9,0x194,{'message':_0xaf95('0x36')});}else{var _0x21e1f4={'payload':{'id':_0x49dd4a['id'],'role':_0x49dd4a['role']},'options':{'expiresIn':0x15180}};return authService[_0xaf95('0x37')](_0x21e1f4)[_0xaf95('0xc')](function(_0x53a3b6){_0x50bfe9[_0xaf95('0x38')]({'id':_0x49dd4a['id'],'token':_0x53a3b6,'statusCall':'','isAlreadyLogged':_0x49dd4a[_0xaf95('0x39')]});});}})(_0x426b26,_0x50bfe9,_0x4008f6);};exports[_0xaf95('0x3a')]=function(_0x550d88,_0x43d301,_0x1387fc){if(!_0x550d88[_0xaf95('0x3b')][_0xaf95('0x21')]){return handleError(_0x43d301,0x1f4,{'message':_0xaf95('0x3c')});}var _0x3c9bf4=rs[_0xaf95('0x3d')]();_0x550d88[_0xaf95('0x3b')]['email']=_0x550d88['body'][_0xaf95('0x21')]['trim']()[_0xaf95('0x3e')]();var _0xdb9776;return db[_0xaf95('0x9')]['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xaf95('0xb')],'raw':!![]})[_0xaf95('0xc')](function(_0xbdc73){_0xdb9776=_0xbdc73;return db[_0xaf95('0x3f')][_0xaf95('0x20')]({'where':{'email':_0x550d88[_0xaf95('0x3b')][_0xaf95('0x21')]}});})[_0xaf95('0xc')](function(_0x11a64d){if(!_0x11a64d){throw new Error(_0xaf95('0x40'));}if(_0x11a64d[_0xaf95('0x19')]){throw new Error(_0xaf95('0x41'));}if(_0x11a64d['blocked']){if(moment(_0x11a64d[_0xaf95('0x12')])['add'](_0xdb9776['blockDuration'],'minutes')>moment()){throw new Error('The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.');}else{_0x11a64d[_0xaf95('0x11')]=![];_0x11a64d['blockedAt']=null;}}_0x11a64d['resetPasswordToken']=_0x3c9bf4;_0x11a64d[_0xaf95('0x42')]=Date[_0xaf95('0x43')]()+0x36ee80;return _0x11a64d[_0xaf95('0x44')]();})[_0xaf95('0xc')](function(){return sendServiceMail({'to':_0x550d88[_0xaf95('0x3b')]['email'],'subject':_0xaf95('0x45'),'text':_0xaf95('0x46')+_0xaf95('0x47')+_0xaf95('0x48')+_0x550d88['headers']['host']+_0xaf95('0x49')+_0x3c9bf4+'\x0a\x0a'+_0xaf95('0x4a')});})[_0xaf95('0xc')](function(){_0x43d301[_0xaf95('0x33')](0xc8)['send']({'message':'Reset\x20Email\x20sent!'});})[_0xaf95('0x1e')](function(_0x267f11){return handleError(_0x43d301,0x1f4,_0x267f11);});};exports[_0xaf95('0x4b')]=function(_0x4d3fd1,_0x88e0f0,_0x475a77){return db['User']['find']({'where':{'resetPasswordToken':_0x4d3fd1['params'][_0xaf95('0x4c')],'resetPasswordExpires':{'$gt':Date[_0xaf95('0x43')]()}}})[_0xaf95('0xc')](function(_0x35148a){if(!_0x35148a){throw new Error(_0xaf95('0x4d'));}return db['Setting'][_0xaf95('0x4e')]({'attributes':['id',_0xaf95('0x4f'),_0xaf95('0x50'),_0xaf95('0x51')]})[_0xaf95('0xc')](function(_0x409ee3){if(_0x409ee3['securePassword'])authService['validatePasswordPattern'](_0x4d3fd1[_0xaf95('0x3b')]['password']);if(!_0x409ee3['enforcePasswordHistory']||!_0x35148a[_0xaf95('0x52')])return _0x35148a;authService['validatePasswordHistory'](_0x4d3fd1[_0xaf95('0x3b')][_0xaf95('0xe')],_0x35148a['previousPasswords'],_0x409ee3[_0xaf95('0x51')]);return _0x35148a;})[_0xaf95('0xc')](function(){_0x35148a['password']=_0x4d3fd1[_0xaf95('0x3b')][_0xaf95('0xe')];_0x35148a[_0xaf95('0x53')]=null;_0x35148a[_0xaf95('0x42')]=null;return _0x35148a['save']();});})[_0xaf95('0xc')](function(){_0x88e0f0['status'](0xc8)[_0xaf95('0x34')]({'message':_0xaf95('0x54')});})[_0xaf95('0x1e')](function(_0x4390a1){return handleError(_0x88e0f0,0x1f4,_0x4390a1);});};passport[_0xaf95('0x55')](_0xaf95('0x35'),new LocalStrategy({'usernameField':'name','passwordField':_0xaf95('0xe')},function(_0x51024a,_0x2c5e01,_0x2e861a){return localAuthenticate(db['User'],_0x51024a,_0x2c5e01,_0x2e861a);}));
\ No newline at end of file
+var _0xa1a1=['password','salt','role','disabled','blocked','blockedAt','loginAttempts','admin','user','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','blockDuration','clearBlockUser','add','minutes','getLicense','catch','MailAccount','find','MailServerOut','Smtp','service','host','port','secure','authentication','pass','merge','format','\x22%s\x22\x20<%s>','email','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','online','body','generate','trim','toLowerCase','Setting','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','now','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','headers','send','User','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','resetPasswordExpires','util','passport','passport-local','Strategy','jayson/promise','lodash','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','http','findOne','allowedLoginAttempts','then','name'];(function(_0x5457ab,_0x5cb3dc){var _0x33d8b4=function(_0x5091f0){while(--_0x5091f0){_0x5457ab['push'](_0x5457ab['shift']());}};_0x33d8b4(++_0x5cb3dc);}(_0xa1a1,0x91));var _0x1a1a=function(_0x3ec122,_0x55150a){_0x3ec122=_0x3ec122-0x0;var _0x4ecf41=_0xa1a1[_0x3ec122];return _0x4ecf41;};'use strict';var util=require(_0x1a1a('0x0'));var passport=require(_0x1a1a('0x1'));var LocalStrategy=require(_0x1a1a('0x2'))[_0x1a1a('0x3')];var jayson=require(_0x1a1a('0x4'));var _=require(_0x1a1a('0x5'));var rs=require(_0x1a1a('0x6'));var moment=require(_0x1a1a('0x7'));var db=require(_0x1a1a('0x8'))['db'];var authService=require(_0x1a1a('0x9'));var utils=require(_0x1a1a('0xa'));var client=jayson[_0x1a1a('0xb')][_0x1a1a('0xc')]({'port':0x232b});function localAuthenticate(_0x1e8807,_0x281043,_0x290168,_0x209795){var _0x31eed4,_0x40e8c1;return db['Setting'][_0x1a1a('0xd')]({'where':{'id':0x1},'attributes':[_0x1a1a('0xe'),'blockDuration'],'raw':!![]})[_0x1a1a('0xf')](function(_0x19304e){_0x31eed4=_0x19304e;return _0x1e8807[_0x1a1a('0xd')]({'attributes':['id',_0x1a1a('0x10'),_0x1a1a('0x11'),_0x1a1a('0x12'),_0x1a1a('0x13'),_0x1a1a('0x14'),_0x1a1a('0x15'),_0x1a1a('0x16'),_0x1a1a('0x17')],'where':{'name':_0x281043,'role':{'$or':[_0x1a1a('0x18'),_0x1a1a('0x19'),'agent']}}});})[_0x1a1a('0xf')](function(_0x3bde36){if(!_0x3bde36||_0x3bde36&&_0x3bde36['name']!==_0x281043){throw new Error(_0x1a1a('0x1a'));}else{_0x40e8c1=_0x3bde36;return _0x40e8c1;}})[_0x1a1a('0xf')](function(){_0x40e8c1[_0x1a1a('0x1b')](_0x290168,function(_0x251583,_0xdc83be){var _0x3d56ac=_0x40e8c1[_0x1a1a('0x17')]+0x1;if(_0x251583){return _0x209795(_0x251583);}else if(!_0xdc83be){if(_0x40e8c1[_0x1a1a('0x14')]){return _0x209795(null,![],{'message':_0x1a1a('0x1a')});}else if(_0x31eed4[_0x1a1a('0xe')]>0x0){if(_0x40e8c1[_0x1a1a('0x15')]){if(_0x31eed4[_0x1a1a('0x1c')]>0x0){if(moment(_0x40e8c1[_0x1a1a('0x16')])['add'](_0x31eed4[_0x1a1a('0x1c')],'minutes')>moment()){return _0x209795(null,![],{'message':_0x1a1a('0x1a')});}else{return utils[_0x1a1a('0x1d')](_0x40e8c1,_0x3d56ac,![],null)[_0x1a1a('0xf')](function(){return _0x209795(null,![],{'message':_0x1a1a('0x1a')});});}}else{return _0x209795(null,![],{'message':_0x1a1a('0x1a')});}}else{if(_0x3d56ac>=_0x31eed4[_0x1a1a('0xe')]){return utils[_0x1a1a('0x1d')](_0x40e8c1,0x0,!![],moment())[_0x1a1a('0xf')](function(){return _0x209795(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils[_0x1a1a('0x1d')](_0x40e8c1,_0x3d56ac,![],null)[_0x1a1a('0xf')](function(){return _0x209795(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}}else{return _0x209795(null,![],{'message':_0x1a1a('0x1a')});}}else{if(_0x40e8c1['disabled']){return _0x209795(null,![],{'message':_0x1a1a('0x1a')});}else if(_0x31eed4[_0x1a1a('0xe')]>0x0){if(_0x40e8c1['blocked']){if(_0x31eed4[_0x1a1a('0x1c')]>0x0){if(moment(_0x40e8c1['blockedAt'])[_0x1a1a('0x1e')](_0x31eed4[_0x1a1a('0x1c')],_0x1a1a('0x1f'))>moment()){return _0x209795(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x1a1a('0x1d')](_0x40e8c1,0x0,![],null)[_0x1a1a('0xf')](function(){return utils[_0x1a1a('0x20')](_0x40e8c1);})[_0x1a1a('0xf')](function(){return _0x209795(null,_0x40e8c1);});}}else{return _0x209795(null,![],{'message':_0x1a1a('0x1a')});}}else{return utils[_0x1a1a('0x1d')](_0x40e8c1,0x0,![],null)['then'](function(){return utils['getLicense'](_0x40e8c1);})[_0x1a1a('0xf')](function(){return _0x209795(null,_0x40e8c1);})[_0x1a1a('0x21')](function(_0x5b8bc5){return _0x209795(null,![],_0x5b8bc5);});}}else{if(_0x40e8c1[_0x1a1a('0x15')]){return _0x209795(null,![],{'message':_0x1a1a('0x1a')});}else{return utils[_0x1a1a('0x20')](_0x40e8c1)[_0x1a1a('0xf')](function(){return _0x209795(null,_0x40e8c1);});}}}});})[_0x1a1a('0x21')](function(_0x10ddeb){return _0x209795(null,![],_0x10ddeb);});}function sendServiceMail(_0xa2375f){return db[_0x1a1a('0x22')][_0x1a1a('0x23')]({'where':{'service':!![]},'attributes':['id',_0x1a1a('0x10'),'email'],'include':[{'model':db[_0x1a1a('0x24')],'as':_0x1a1a('0x25')}]})[_0x1a1a('0xf')](function(_0x8182a9){if(!_0x8182a9){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x192920={'tls':{'rejectUnauthorized':![]}};if(_0x8182a9[_0x1a1a('0x25')]['service']){_0x192920[_0x1a1a('0x26')]=_0x8182a9[_0x1a1a('0x25')]['service'];}else{_0x192920['host']=_0x8182a9[_0x1a1a('0x25')][_0x1a1a('0x27')];_0x192920['port']=_0x8182a9[_0x1a1a('0x25')][_0x1a1a('0x28')];_0x192920[_0x1a1a('0x29')]=_0x8182a9[_0x1a1a('0x25')][_0x1a1a('0x29')];}if(_0x8182a9[_0x1a1a('0x25')][_0x1a1a('0x2a')]){_0x192920['auth']={'user':_0x8182a9['Smtp'][_0x1a1a('0x19')],'pass':_0x8182a9[_0x1a1a('0x25')][_0x1a1a('0x2b')]};}var _0xd97f05={'account':_0x192920,'message':_[_0x1a1a('0x2c')]({'from':util[_0x1a1a('0x2d')](_0x1a1a('0x2e'),_0x8182a9[_0x1a1a('0x10')],_0x8182a9[_0x1a1a('0x2f')]||_0x8182a9[_0x1a1a('0x25')][_0x1a1a('0x19')])},_0xa2375f)};return client['request']('SendMail',_0xd97f05);})[_0x1a1a('0xf')](function(_0x18b5ce){if(_0x18b5ce[_0x1a1a('0x30')]){throw new Error(util[_0x1a1a('0x2d')](_0x1a1a('0x31'),_0x18b5ce[_0x1a1a('0x30')][_0x1a1a('0x32')]||JSON[_0x1a1a('0x33')](_0x18b5ce[_0x1a1a('0x30')])));}return!![];});}function handleError(_0x502e08,_0x577315,_0x5c68f1){return _0x502e08[_0x1a1a('0x34')](_0x577315||0x1f4)['send']({'message':_0x5c68f1?_0x5c68f1[_0x1a1a('0x32')]||_0x5c68f1:''});}exports[_0x1a1a('0x35')]=function(_0x398345,_0x5c786b,_0x406c48){passport['authenticate']('local',function(_0x2ff425,_0x27c4ae,_0x29fdd5){var _0x4eaba5=_0x2ff425||_0x29fdd5;if(_0x4eaba5){return handleError(_0x5c786b,0x191,_0x4eaba5);}if(!_0x27c4ae){return handleError(_0x5c786b,0x194,{'message':_0x1a1a('0x36')});}else{var _0x495579={'payload':{'id':_0x27c4ae['id'],'role':_0x27c4ae[_0x1a1a('0x13')]},'options':{'expiresIn':0x15180}};return authService[_0x1a1a('0x37')](_0x495579)[_0x1a1a('0xf')](function(_0x1e1f33){_0x5c786b[_0x1a1a('0x38')]({'id':_0x27c4ae['id'],'token':_0x1e1f33,'statusCall':'','isAlreadyLogged':_0x27c4ae[_0x1a1a('0x39')]});});}})(_0x398345,_0x5c786b,_0x406c48);};exports['forgot']=function(_0x1161cb,_0x159084,_0x4522e5){if(!_0x1161cb[_0x1a1a('0x3a')][_0x1a1a('0x2f')]){return handleError(_0x159084,0x1f4,{'message':'Email\x20parameter\x20is\x20missing'});}var _0x54503f=rs[_0x1a1a('0x3b')]();_0x1161cb[_0x1a1a('0x3a')][_0x1a1a('0x2f')]=_0x1161cb[_0x1a1a('0x3a')]['email'][_0x1a1a('0x3c')]()[_0x1a1a('0x3d')]();var _0xe64d72;return db[_0x1a1a('0x3e')][_0x1a1a('0xd')]({'where':{'id':0x1},'attributes':[_0x1a1a('0xe'),'blockDuration'],'raw':!![]})[_0x1a1a('0xf')](function(_0x374b3f){_0xe64d72=_0x374b3f;return db['User']['find']({'where':{'email':_0x1161cb[_0x1a1a('0x3a')][_0x1a1a('0x2f')]}});})[_0x1a1a('0xf')](function(_0xccb192){if(!_0xccb192){throw new Error(_0x1a1a('0x3f'));}if(_0xccb192[_0x1a1a('0x14')]){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0xccb192[_0x1a1a('0x15')]){if(moment(_0xccb192[_0x1a1a('0x16')])[_0x1a1a('0x1e')](_0xe64d72[_0x1a1a('0x1c')],'minutes')>moment()){throw new Error(_0x1a1a('0x40'));}else{_0xccb192['blocked']=![];_0xccb192[_0x1a1a('0x16')]=null;}}_0xccb192[_0x1a1a('0x41')]=_0x54503f;_0xccb192['resetPasswordExpires']=Date[_0x1a1a('0x42')]()+0x36ee80;return _0xccb192[_0x1a1a('0x43')]();})[_0x1a1a('0xf')](function(){return sendServiceMail({'to':_0x1161cb[_0x1a1a('0x3a')][_0x1a1a('0x2f')],'subject':_0x1a1a('0x44'),'text':_0x1a1a('0x45')+_0x1a1a('0x46')+_0x1a1a('0x47')+_0x1161cb[_0x1a1a('0x48')][_0x1a1a('0x27')]+'/reset/'+_0x54503f+'\x0a\x0a'+'If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a'});})[_0x1a1a('0xf')](function(){_0x159084[_0x1a1a('0x34')](0xc8)[_0x1a1a('0x49')]({'message':'Reset\x20Email\x20sent!'});})[_0x1a1a('0x21')](function(_0x543e48){return handleError(_0x159084,0x1f4,_0x543e48);});};exports['reset']=function(_0x1bf9eb,_0x5ad080,_0x3ab0c9){return db[_0x1a1a('0x4a')][_0x1a1a('0x23')]({'where':{'resetPasswordToken':_0x1bf9eb['params'][_0x1a1a('0x4b')],'resetPasswordExpires':{'$gt':Date[_0x1a1a('0x42')]()}}})[_0x1a1a('0xf')](function(_0x5841bb){if(!_0x5841bb){throw new Error(_0x1a1a('0x4c'));}return db[_0x1a1a('0x3e')][_0x1a1a('0xd')]({'attributes':['id','securePassword',_0x1a1a('0x4d'),_0x1a1a('0x4e')]})[_0x1a1a('0xf')](function(_0x1be449){if(_0x1be449['securePassword'])authService['validatePasswordPattern'](_0x1bf9eb[_0x1a1a('0x3a')][_0x1a1a('0x11')]);if(!_0x1be449[_0x1a1a('0x4d')]||!_0x5841bb[_0x1a1a('0x4f')])return _0x5841bb;authService['validatePasswordHistory'](_0x1bf9eb[_0x1a1a('0x3a')][_0x1a1a('0x11')],_0x5841bb[_0x1a1a('0x4f')],_0x1be449['passwordHistoryLimit']);return _0x5841bb;})['then'](function(){_0x5841bb[_0x1a1a('0x11')]=_0x1bf9eb[_0x1a1a('0x3a')][_0x1a1a('0x11')];_0x5841bb[_0x1a1a('0x41')]=null;_0x5841bb[_0x1a1a('0x50')]=null;return _0x5841bb['save']();});})['then'](function(){_0x5ad080[_0x1a1a('0x34')](0xc8)['send']({'message':'Password\x20reset!'});})['catch'](function(_0x407a43){return handleError(_0x5ad080,0x1f4,_0x407a43);});};passport['use'](new LocalStrategy({'usernameField':'name','passwordField':_0x1a1a('0x11')},function(_0x1c1896,_0x35c715,_0x2aa562){return localAuthenticate(db[_0x1a1a('0x4a')],_0x1c1896,_0x35c715,_0x2aa562);}));
\ No newline at end of file
index 409eee8..f6b6634 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf81f=['/forgot','/reset/:token','reset','express','Router','./authLocal.controller','post','login'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf81f,0x1db));var _0xff81=function(_0x4f11dc,_0x4e3a99){_0x4f11dc=_0x4f11dc-0x0;var _0x37b7e3=_0xf81f[_0x4f11dc];return _0x37b7e3;};'use strict';var express=require(_0xff81('0x0'));var router=express[_0xff81('0x1')]();var controller=require(_0xff81('0x2'));router[_0xff81('0x3')]('/',controller[_0xff81('0x4')]);router[_0xff81('0x3')](_0xff81('0x5'),controller['forgot']);router[_0xff81('0x3')](_0xff81('0x6'),controller[_0xff81('0x7')]);module['exports']=router;
\ No newline at end of file
+var _0x1e29=['reset','express','./authLocal.controller','post','/forgot','forgot'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1e29,0x67));var _0x91e2=function(_0x2bb681,_0x2cf558){_0x2bb681=_0x2bb681-0x0;var _0x14810e=_0x1e29[_0x2bb681];return _0x14810e;};'use strict';var express=require(_0x91e2('0x0'));var router=express['Router']();var controller=require(_0x91e2('0x1'));router[_0x91e2('0x2')]('/',controller['login']);router[_0x91e2('0x2')](_0x91e2('0x3'),controller[_0x91e2('0x4')]);router[_0x91e2('0x2')]('/reset/:token',controller[_0x91e2('0x5')]);module['exports']=router;
\ No newline at end of file
index 329b28d..9c7dfc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f54=['STRING','INTEGER','sequelize','exports'];(function(_0x2d819b,_0x321af5){var _0x3799fd=function(_0x50090b){while(--_0x50090b){_0x2d819b['push'](_0x2d819b['shift']());}};_0x3799fd(++_0x321af5);}(_0x5f54,0x13e));var _0x45f5=function(_0x3bfad2,_0xe86c5b){_0x3bfad2=_0x3bfad2-0x0;var _0x1a688e=_0x5f54[_0x3bfad2];return _0x1a688e;};'use strict';var Sequelize=require(_0x45f5('0x0'));module[_0x45f5('0x1')]={'name':{'type':Sequelize[_0x45f5('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x45f5('0x2')]},'description':{'type':Sequelize[_0x45f5('0x2')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timeout':{'type':Sequelize[_0x45f5('0x3')],'defaultValue':0xa}};
\ No newline at end of file
+var _0xfdb8=['exports','STRING','sequelize'];(function(_0xc82e49,_0x38660f){var _0x57e105=function(_0x5b1c7f){while(--_0x5b1c7f){_0xc82e49['push'](_0xc82e49['shift']());}};_0x57e105(++_0x38660f);}(_0xfdb8,0x1c1));var _0x8fdb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfdb8[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x8fdb('0x0'));module[_0x8fdb('0x1')]={'name':{'type':Sequelize[_0x8fdb('0x2')],'allowNull':![]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa}};
\ No newline at end of file
index 47139d6..e1837ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6daa=['attributes','fields','nolimit','limit','offset','order','sort','where','filters','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','rawAttributes','length','catch','update','body','find','params','addConditions','ids','omit','getConditions','Condition','pick','hasOwnProperty','addActions','Action','getActions','findOne','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','status','end','json','undefined','count','set','Content-Range','reject','save','destroy','then','sendStatus','stack','name','index','Automation','fieldName','key','model','map','query','keys','intersection'];(function(_0x335ff7,_0x3853e4){var _0x38637c=function(_0x1628f9){while(--_0x1628f9){_0x335ff7['push'](_0x335ff7['shift']());}};_0x38637c(++_0x3853e4);}(_0x6daa,0xc5));var _0xa6da=function(_0x4f9353,_0x253dc3){_0x4f9353=_0x4f9353-0x0;var _0x2de7b1=_0x6daa[_0x4f9353];return _0x2de7b1;};'use strict';var emlformat=require(_0xa6da('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xa6da('0x1'));var rp=require(_0xa6da('0x2'));var moment=require('moment');var BPromise=require(_0xa6da('0x3'));var Mustache=require(_0xa6da('0x4'));var util=require(_0xa6da('0x5'));var path=require(_0xa6da('0x6'));var sox=require(_0xa6da('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa6da('0x8'));var _=require(_0xa6da('0x9'));var squel=require(_0xa6da('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa6da('0xb'));var toCsv=require(_0xa6da('0xc'));var querystring=require(_0xa6da('0xd'));var Papa=require(_0xa6da('0xe'));var Redis=require('ioredis');var authService=require(_0xa6da('0xf'));var qs=require(_0xa6da('0x10'));var as=require(_0xa6da('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa6da('0x12'))('api');var utils=require(_0xa6da('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e9790,_0x5a60d2){_0x5a60d2=_0x5a60d2||0xcc;return function(_0x32d04e){if(_0x32d04e){return _0x5e9790['sendStatus'](_0x5a60d2);}return _0x5e9790[_0xa6da('0x14')](_0x5a60d2)[_0xa6da('0x15')]();};}function respondWithResult(_0x4f54c9,_0x1b712d){_0x1b712d=_0x1b712d||0xc8;return function(_0x4a9806){if(_0x4a9806){return _0x4f54c9[_0xa6da('0x14')](_0x1b712d)[_0xa6da('0x16')](_0x4a9806);}};}function respondWithFilteredResult(_0x5bdf56,_0x161255){return function(_0x25d519){if(_0x25d519){var _0x58e482=typeof _0x161255['offset']===_0xa6da('0x17')&&typeof _0x161255['limit']===_0xa6da('0x17');var _0x34d3b9=_0x25d519[_0xa6da('0x18')];var _0x5ae34c=_0x58e482?0x0:_0x161255['offset'];var _0x460490=_0x58e482?_0x25d519[_0xa6da('0x18')]:_0x161255['offset']+_0x161255['limit'];var _0x24ee47;if(_0x460490>=_0x34d3b9){_0x460490=_0x34d3b9;_0x24ee47=0xc8;}else{_0x24ee47=0xce;}_0x5bdf56[_0xa6da('0x14')](_0x24ee47);return _0x5bdf56[_0xa6da('0x19')](_0xa6da('0x1a'),_0x5ae34c+'-'+_0x460490+'/'+_0x34d3b9)[_0xa6da('0x16')](_0x25d519);}return null;};}function patchUpdates(_0x2c1ed1){return function(_0x5a6724){try{jsonpatch['apply'](_0x5a6724,_0x2c1ed1,!![]);}catch(_0x5c4055){return BPromise[_0xa6da('0x1b')](_0x5c4055);}return _0x5a6724[_0xa6da('0x1c')]();};}function saveUpdates(_0x2336d2,_0x1bdf1c){return function(_0x30e928){if(_0x30e928){return _0x30e928['update'](_0x2336d2)['then'](function(_0x537f00){return _0x537f00;});}return null;};}function removeEntity(_0x587ef1,_0x49d4af){return function(_0x2e10f4){if(_0x2e10f4){return _0x2e10f4[_0xa6da('0x1d')]()[_0xa6da('0x1e')](function(){_0x587ef1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x547e35,_0x256491){return function(_0x2dcf64){if(!_0x2dcf64){_0x547e35[_0xa6da('0x1f')](0x194);}return _0x2dcf64;};}function handleError(_0x3d38e8,_0x3748c6){_0x3748c6=_0x3748c6||0x1f4;return function(_0x4a9d98){logger['error'](_0x4a9d98[_0xa6da('0x20')]);if(_0x4a9d98[_0xa6da('0x21')]){delete _0x4a9d98['name'];}_0x3d38e8[_0xa6da('0x14')](_0x3748c6)['send'](_0x4a9d98);};}exports[_0xa6da('0x22')]=function(_0x49b424,_0x26a47c){var _0x541c0a={},_0xd185a9={},_0x3790f7={'count':0x0,'rows':[]};var _0x48bfe8=_['map'](db[_0xa6da('0x23')]['rawAttributes'],function(_0x5ebeca){return{'name':_0x5ebeca[_0xa6da('0x24')],'type':_0x5ebeca['type'][_0xa6da('0x25')]};});_0xd185a9[_0xa6da('0x26')]=_[_0xa6da('0x27')](_0x48bfe8,_0xa6da('0x21'));_0xd185a9[_0xa6da('0x28')]=_[_0xa6da('0x29')](_0x49b424['query']);_0xd185a9['filters']=_[_0xa6da('0x2a')](_0xd185a9[_0xa6da('0x26')],_0xd185a9[_0xa6da('0x28')]);_0x541c0a[_0xa6da('0x2b')]=_['intersection'](_0xd185a9['model'],qs['fields'](_0x49b424['query'][_0xa6da('0x2c')]));_0x541c0a[_0xa6da('0x2b')]=_0x541c0a[_0xa6da('0x2b')]['length']?_0x541c0a[_0xa6da('0x2b')]:_0xd185a9[_0xa6da('0x26')];if(!_0x49b424['query']['hasOwnProperty'](_0xa6da('0x2d'))){_0x541c0a[_0xa6da('0x2e')]=qs[_0xa6da('0x2e')](_0x49b424[_0xa6da('0x28')][_0xa6da('0x2e')]);_0x541c0a['offset']=qs['offset'](_0x49b424[_0xa6da('0x28')][_0xa6da('0x2f')]);}_0x541c0a[_0xa6da('0x30')]=qs[_0xa6da('0x31')](_0x49b424[_0xa6da('0x28')][_0xa6da('0x31')]);_0x541c0a[_0xa6da('0x32')]=qs[_0xa6da('0x33')](_['pick'](_0x49b424[_0xa6da('0x28')],_0xd185a9[_0xa6da('0x33')]),_0x48bfe8);if(_0x49b424[_0xa6da('0x28')][_0xa6da('0x34')]){_0x541c0a[_0xa6da('0x32')]=_[_0xa6da('0x35')](_0x541c0a[_0xa6da('0x32')],{'$or':_['map'](_0x48bfe8,function(_0x2aaab4){if(_0x2aaab4[_0xa6da('0x36')]!==_0xa6da('0x37')){var _0x49236e={};_0x49236e[_0x2aaab4[_0xa6da('0x21')]]={'$like':'%'+_0x49b424[_0xa6da('0x28')][_0xa6da('0x34')]+'%'};return _0x49236e;}})});}_0x541c0a=_[_0xa6da('0x35')]({},_0x541c0a,_0x49b424[_0xa6da('0x38')]);var _0x536220={'where':_0x541c0a[_0xa6da('0x32')]};return db[_0xa6da('0x23')]['count'](_0x536220)[_0xa6da('0x1e')](function(_0x323cd5){_0x3790f7[_0xa6da('0x18')]=_0x323cd5;if(_0x49b424['query'][_0xa6da('0x39')]){_0x541c0a[_0xa6da('0x3a')]=[{'all':!![]}];}return db[_0xa6da('0x23')][_0xa6da('0x3b')](_0x541c0a);})[_0xa6da('0x1e')](function(_0x58a5e8){_0x3790f7[_0xa6da('0x3c')]=_0x58a5e8;return _0x3790f7;})[_0xa6da('0x1e')](respondWithFilteredResult(_0x26a47c,_0x541c0a))['catch'](handleError(_0x26a47c,null));};exports[_0xa6da('0x3d')]=function(_0x13e5c4,_0x17ae0d){var _0x1d84d4={'raw':![],'where':{'id':_0x13e5c4['params']['id']}},_0x559122={};_0x559122[_0xa6da('0x26')]=_['keys'](db[_0xa6da('0x23')][_0xa6da('0x3e')]);_0x559122[_0xa6da('0x28')]=_[_0xa6da('0x29')](_0x13e5c4[_0xa6da('0x28')]);_0x559122['filters']=_[_0xa6da('0x2a')](_0x559122[_0xa6da('0x26')],_0x559122[_0xa6da('0x28')]);_0x1d84d4[_0xa6da('0x2b')]=_[_0xa6da('0x2a')](_0x559122[_0xa6da('0x26')],qs[_0xa6da('0x2c')](_0x13e5c4[_0xa6da('0x28')][_0xa6da('0x2c')]));_0x1d84d4[_0xa6da('0x2b')]=_0x1d84d4[_0xa6da('0x2b')][_0xa6da('0x3f')]?_0x1d84d4[_0xa6da('0x2b')]:_0x559122[_0xa6da('0x26')];if(_0x13e5c4['query']['includeAll']){_0x1d84d4['include']=[{'all':!![]}];}_0x1d84d4=_[_0xa6da('0x35')]({},_0x1d84d4,_0x13e5c4[_0xa6da('0x38')]);return db[_0xa6da('0x23')]['find'](_0x1d84d4)[_0xa6da('0x1e')](handleEntityNotFound(_0x17ae0d,null))[_0xa6da('0x1e')](respondWithResult(_0x17ae0d,null))[_0xa6da('0x40')](handleError(_0x17ae0d,null));};exports['create']=function(_0xf33946,_0x41fca0){return db[_0xa6da('0x23')]['create'](_0xf33946['body'],{})[_0xa6da('0x1e')](respondWithResult(_0x41fca0,0xc9))['catch'](handleError(_0x41fca0,null));};exports[_0xa6da('0x41')]=function(_0x25032e,_0x235fac){if(_0x25032e[_0xa6da('0x42')]['id']){delete _0x25032e[_0xa6da('0x42')]['id'];}return db[_0xa6da('0x23')][_0xa6da('0x43')]({'where':{'id':_0x25032e[_0xa6da('0x44')]['id']}})[_0xa6da('0x1e')](handleEntityNotFound(_0x235fac,null))['then'](saveUpdates(_0x25032e[_0xa6da('0x42')],null))[_0xa6da('0x1e')](respondWithResult(_0x235fac,null))[_0xa6da('0x40')](handleError(_0x235fac,null));};exports['destroy']=function(_0x2736bb,_0x13ab43){return db[_0xa6da('0x23')][_0xa6da('0x43')]({'where':{'id':_0x2736bb[_0xa6da('0x44')]['id']}})['then'](handleEntityNotFound(_0x13ab43,null))[_0xa6da('0x1e')](removeEntity(_0x13ab43,null))[_0xa6da('0x40')](handleError(_0x13ab43,null));};exports[_0xa6da('0x45')]=function(_0x16b93a,_0x35d887,_0x1ad75b){return db['Condition'][_0xa6da('0x43')]({'where':{'id':_0x16b93a[_0xa6da('0x44')]['id']}})[_0xa6da('0x1e')](handleEntityNotFound(_0x35d887,null))[_0xa6da('0x1e')](function(_0x462ae4){if(_0x462ae4){return _0x462ae4[_0xa6da('0x45')](_0x16b93a[_0xa6da('0x42')][_0xa6da('0x46')],_[_0xa6da('0x47')](_0x16b93a['body'],[_0xa6da('0x46'),'id'])||{});}})[_0xa6da('0x1e')](respondWithResult(_0x35d887,null))[_0xa6da('0x40')](handleError(_0x35d887,null));};exports[_0xa6da('0x48')]=function(_0xb5ac44,_0x29ffb4,_0x36567a){var _0x3b451a={};var _0x16d086={};var _0x9d2a7e;var _0x1f1030;return db[_0xa6da('0x23')]['findOne']({'where':{'id':_0xb5ac44[_0xa6da('0x44')]['id']}})['then'](handleEntityNotFound(_0x29ffb4,null))[_0xa6da('0x1e')](function(_0x412dd6){if(_0x412dd6){_0x9d2a7e=_0x412dd6;_0x16d086['model']=_[_0xa6da('0x29')](db[_0xa6da('0x49')][_0xa6da('0x3e')]);_0x16d086[_0xa6da('0x28')]=_[_0xa6da('0x29')](_0xb5ac44[_0xa6da('0x28')]);_0x16d086[_0xa6da('0x33')]=_['intersection'](_0x16d086[_0xa6da('0x26')],_0x16d086[_0xa6da('0x28')]);_0x3b451a['attributes']=_[_0xa6da('0x2a')](_0x16d086['model'],qs['fields'](_0xb5ac44['query']['fields']));_0x3b451a['attributes']=_0x3b451a['attributes'][_0xa6da('0x3f')]?_0x3b451a[_0xa6da('0x2b')]:_0x16d086[_0xa6da('0x26')];_0x3b451a['order']=qs['sort'](_0xb5ac44[_0xa6da('0x28')][_0xa6da('0x31')]);_0x3b451a['where']=qs['filters'](_[_0xa6da('0x4a')](_0xb5ac44[_0xa6da('0x28')],_0x16d086[_0xa6da('0x33')]));if(_0xb5ac44[_0xa6da('0x28')][_0xa6da('0x34')]){_0x3b451a[_0xa6da('0x32')]=_[_0xa6da('0x35')](_0x3b451a[_0xa6da('0x32')],{'$or':_[_0xa6da('0x27')](_0x3b451a[_0xa6da('0x2b')],function(_0x51dbcb){var _0x560a70={};_0x560a70[_0x51dbcb]={'$like':'%'+_0xb5ac44[_0xa6da('0x28')][_0xa6da('0x34')]+'%'};return _0x560a70;})});}_0x3b451a=_[_0xa6da('0x35')]({},_0x3b451a,_0xb5ac44[_0xa6da('0x38')]);return _0x9d2a7e[_0xa6da('0x48')](_0x3b451a);}})[_0xa6da('0x1e')](function(_0x38f7f8){if(_0x38f7f8){_0x1f1030=_0x38f7f8[_0xa6da('0x3f')];if(!_0xb5ac44[_0xa6da('0x28')][_0xa6da('0x4b')](_0xa6da('0x2d'))){_0x3b451a['limit']=qs[_0xa6da('0x2e')](_0xb5ac44['query'][_0xa6da('0x2e')]);_0x3b451a[_0xa6da('0x2f')]=qs[_0xa6da('0x2f')](_0xb5ac44['query'][_0xa6da('0x2f')]);}return _0x9d2a7e[_0xa6da('0x48')](_0x3b451a);}})[_0xa6da('0x1e')](function(_0x10c8b1){if(_0x10c8b1){return _0x10c8b1?{'count':_0x1f1030,'rows':_0x10c8b1}:null;}})['then'](respondWithResult(_0x29ffb4,null))[_0xa6da('0x40')](handleError(_0x29ffb4,null));};exports[_0xa6da('0x4c')]=function(_0x3fcfd5,_0x4001a9,_0x5e70e5){return db[_0xa6da('0x4d')][_0xa6da('0x43')]({'where':{'id':_0x3fcfd5[_0xa6da('0x44')]['id']}})[_0xa6da('0x1e')](handleEntityNotFound(_0x4001a9,null))['then'](function(_0x2044f6){if(_0x2044f6){return _0x2044f6[_0xa6da('0x4c')](_0x3fcfd5['body'][_0xa6da('0x46')],_[_0xa6da('0x47')](_0x3fcfd5['body'],[_0xa6da('0x46'),'id'])||{});}})[_0xa6da('0x1e')](respondWithResult(_0x4001a9,null))[_0xa6da('0x40')](handleError(_0x4001a9,null));};exports[_0xa6da('0x4e')]=function(_0x1b0a7b,_0x3dd787,_0x460382){var _0x4b436c={};var _0x48583a={};var _0x417ed5;var _0x565b1c;return db['Automation'][_0xa6da('0x4f')]({'where':{'id':_0x1b0a7b[_0xa6da('0x44')]['id']}})[_0xa6da('0x1e')](handleEntityNotFound(_0x3dd787,null))[_0xa6da('0x1e')](function(_0x2dd286){if(_0x2dd286){_0x417ed5=_0x2dd286;_0x48583a[_0xa6da('0x26')]=_['keys'](db[_0xa6da('0x4d')][_0xa6da('0x3e')]);_0x48583a[_0xa6da('0x28')]=_[_0xa6da('0x29')](_0x1b0a7b[_0xa6da('0x28')]);_0x48583a[_0xa6da('0x33')]=_[_0xa6da('0x2a')](_0x48583a[_0xa6da('0x26')],_0x48583a['query']);_0x4b436c['attributes']=_[_0xa6da('0x2a')](_0x48583a['model'],qs[_0xa6da('0x2c')](_0x1b0a7b['query']['fields']));_0x4b436c['attributes']=_0x4b436c[_0xa6da('0x2b')][_0xa6da('0x3f')]?_0x4b436c[_0xa6da('0x2b')]:_0x48583a[_0xa6da('0x26')];_0x4b436c[_0xa6da('0x30')]=qs[_0xa6da('0x31')](_0x1b0a7b[_0xa6da('0x28')][_0xa6da('0x31')]);_0x4b436c[_0xa6da('0x32')]=qs['filters'](_['pick'](_0x1b0a7b[_0xa6da('0x28')],_0x48583a[_0xa6da('0x33')]));if(_0x1b0a7b[_0xa6da('0x28')][_0xa6da('0x34')]){_0x4b436c[_0xa6da('0x32')]=_[_0xa6da('0x35')](_0x4b436c[_0xa6da('0x32')],{'$or':_['map'](_0x4b436c[_0xa6da('0x2b')],function(_0x2386db){var _0x5ac2ad={};_0x5ac2ad[_0x2386db]={'$like':'%'+_0x1b0a7b[_0xa6da('0x28')][_0xa6da('0x34')]+'%'};return _0x5ac2ad;})});}_0x4b436c=_['merge']({},_0x4b436c,_0x1b0a7b[_0xa6da('0x38')]);return _0x417ed5['getActions'](_0x4b436c);}})['then'](function(_0x11324c){if(_0x11324c){_0x565b1c=_0x11324c['length'];if(!_0x1b0a7b[_0xa6da('0x28')][_0xa6da('0x4b')](_0xa6da('0x2d'))){_0x4b436c[_0xa6da('0x2e')]=qs[_0xa6da('0x2e')](_0x1b0a7b[_0xa6da('0x28')][_0xa6da('0x2e')]);_0x4b436c[_0xa6da('0x2f')]=qs[_0xa6da('0x2f')](_0x1b0a7b['query']['offset']);}return _0x417ed5['getActions'](_0x4b436c);}})['then'](function(_0x1fa6d0){if(_0x1fa6d0){return _0x1fa6d0?{'count':_0x565b1c,'rows':_0x1fa6d0}:null;}})[_0xa6da('0x1e')](respondWithResult(_0x3dd787,null))[_0xa6da('0x40')](handleError(_0x3dd787,null));};
\ No newline at end of file
+var _0x4e42=['map','rawAttributes','key','keys','filters','query','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','pick','merge','type','VIRTUAL','filter','options','where','Automation','findAll','rows','catch','show','params','includeAll','include','find','create','body','addConditions','Condition','ids','omit','getConditions','findOne','addActions','Action','getActions','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','end','undefined','limit','count','offset','status','set','Content-Range','json','apply','update','then','destroy','error','stack','name','send','index'];(function(_0x47403b,_0xb36e56){var _0x2525c6=function(_0x4a4096){while(--_0x4a4096){_0x47403b['push'](_0x47403b['shift']());}};_0x2525c6(++_0xb36e56);}(_0x4e42,0xd8));var _0x24e4=function(_0x38f70,_0x47a0f6){_0x38f70=_0x38f70-0x0;var _0x81fa37=_0x4e42[_0x38f70];return _0x81fa37;};'use strict';var emlformat=require(_0x24e4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x24e4('0x1'));var jsonpatch=require(_0x24e4('0x2'));var rp=require(_0x24e4('0x3'));var moment=require(_0x24e4('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x24e4('0x5'));var util=require('util');var path=require(_0x24e4('0x6'));var sox=require(_0x24e4('0x7'));var csv=require(_0x24e4('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x24e4('0x9'));var _=require(_0x24e4('0xa'));var squel=require(_0x24e4('0xb'));var crypto=require(_0x24e4('0xc'));var jsforce=require(_0x24e4('0xd'));var deskjs=require(_0x24e4('0xe'));var toCsv=require(_0x24e4('0x8'));var querystring=require(_0x24e4('0xf'));var Papa=require(_0x24e4('0x10'));var Redis=require(_0x24e4('0x11'));var authService=require(_0x24e4('0x12'));var qs=require(_0x24e4('0x13'));var as=require(_0x24e4('0x14'));var hardwareService=require(_0x24e4('0x15'));var logger=require(_0x24e4('0x16'))(_0x24e4('0x17'));var utils=require('../../config/utils');var config=require(_0x24e4('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x24e4('0x19'))['db'];function respondWithStatusCode(_0x5dabcd,_0xeaa0f9){_0xeaa0f9=_0xeaa0f9||0xcc;return function(_0x3d41fb){if(_0x3d41fb){return _0x5dabcd[_0x24e4('0x1a')](_0xeaa0f9);}return _0x5dabcd['status'](_0xeaa0f9)[_0x24e4('0x1b')]();};}function respondWithResult(_0x88ae59,_0x464ab6){_0x464ab6=_0x464ab6||0xc8;return function(_0x3c76d2){if(_0x3c76d2){return _0x88ae59['status'](_0x464ab6)['json'](_0x3c76d2);}};}function respondWithFilteredResult(_0x2edc6a,_0x4b8dfb){return function(_0x191eaa){if(_0x191eaa){var _0x324f80=typeof _0x4b8dfb['offset']===_0x24e4('0x1c')&&typeof _0x4b8dfb[_0x24e4('0x1d')]===_0x24e4('0x1c');var _0x38eadd=_0x191eaa[_0x24e4('0x1e')];var _0x1b2257=_0x324f80?0x0:_0x4b8dfb[_0x24e4('0x1f')];var _0x5cce74=_0x324f80?_0x191eaa[_0x24e4('0x1e')]:_0x4b8dfb[_0x24e4('0x1f')]+_0x4b8dfb[_0x24e4('0x1d')];var _0x4ecb5b;if(_0x5cce74>=_0x38eadd){_0x5cce74=_0x38eadd;_0x4ecb5b=0xc8;}else{_0x4ecb5b=0xce;}_0x2edc6a[_0x24e4('0x20')](_0x4ecb5b);return _0x2edc6a[_0x24e4('0x21')](_0x24e4('0x22'),_0x1b2257+'-'+_0x5cce74+'/'+_0x38eadd)[_0x24e4('0x23')](_0x191eaa);}return null;};}function patchUpdates(_0x167baf){return function(_0x4e5df2){try{jsonpatch[_0x24e4('0x24')](_0x4e5df2,_0x167baf,!![]);}catch(_0x5e4bb6){return BPromise['reject'](_0x5e4bb6);}return _0x4e5df2['save']();};}function saveUpdates(_0x49c103,_0x192cc0){return function(_0x500b4d){if(_0x500b4d){return _0x500b4d[_0x24e4('0x25')](_0x49c103)[_0x24e4('0x26')](function(_0x194495){return _0x194495;});}return null;};}function removeEntity(_0xb3b32b,_0x4c356b){return function(_0x3f9d51){if(_0x3f9d51){return _0x3f9d51[_0x24e4('0x27')]()[_0x24e4('0x26')](function(){_0xb3b32b[_0x24e4('0x20')](0xcc)[_0x24e4('0x1b')]();});}};}function handleEntityNotFound(_0x181be1,_0x3c0798){return function(_0x147e8a){if(!_0x147e8a){_0x181be1['sendStatus'](0x194);}return _0x147e8a;};}function handleError(_0x3e5c86,_0x4c5c92){_0x4c5c92=_0x4c5c92||0x1f4;return function(_0x23e001){logger[_0x24e4('0x28')](_0x23e001[_0x24e4('0x29')]);if(_0x23e001[_0x24e4('0x2a')]){delete _0x23e001['name'];}_0x3e5c86[_0x24e4('0x20')](_0x4c5c92)[_0x24e4('0x2b')](_0x23e001);};}exports[_0x24e4('0x2c')]=function(_0x4d4ac1,_0x1db1d8){var _0x29da19={},_0x28cff9={},_0x12e140={'count':0x0,'rows':[]};var _0x2bff40=_[_0x24e4('0x2d')](db['Automation'][_0x24e4('0x2e')],function(_0x4360bd){return{'name':_0x4360bd['fieldName'],'type':_0x4360bd['type'][_0x24e4('0x2f')]};});_0x28cff9['model']=_[_0x24e4('0x2d')](_0x2bff40,_0x24e4('0x2a'));_0x28cff9['query']=_[_0x24e4('0x30')](_0x4d4ac1['query']);_0x28cff9[_0x24e4('0x31')]=_['intersection'](_0x28cff9['model'],_0x28cff9[_0x24e4('0x32')]);_0x29da19[_0x24e4('0x33')]=_[_0x24e4('0x34')](_0x28cff9[_0x24e4('0x35')],qs[_0x24e4('0x36')](_0x4d4ac1[_0x24e4('0x32')][_0x24e4('0x36')]));_0x29da19[_0x24e4('0x33')]=_0x29da19[_0x24e4('0x33')][_0x24e4('0x37')]?_0x29da19[_0x24e4('0x33')]:_0x28cff9[_0x24e4('0x35')];if(!_0x4d4ac1[_0x24e4('0x32')][_0x24e4('0x38')](_0x24e4('0x39'))){_0x29da19[_0x24e4('0x1d')]=qs[_0x24e4('0x1d')](_0x4d4ac1[_0x24e4('0x32')][_0x24e4('0x1d')]);_0x29da19['offset']=qs[_0x24e4('0x1f')](_0x4d4ac1['query'][_0x24e4('0x1f')]);}_0x29da19[_0x24e4('0x3a')]=qs[_0x24e4('0x3b')](_0x4d4ac1[_0x24e4('0x32')][_0x24e4('0x3b')]);_0x29da19['where']=qs[_0x24e4('0x31')](_[_0x24e4('0x3c')](_0x4d4ac1[_0x24e4('0x32')],_0x28cff9[_0x24e4('0x31')]),_0x2bff40);if(_0x4d4ac1[_0x24e4('0x32')]['filter']){_0x29da19['where']=_[_0x24e4('0x3d')](_0x29da19['where'],{'$or':_['map'](_0x2bff40,function(_0x5caba2){if(_0x5caba2[_0x24e4('0x3e')]!==_0x24e4('0x3f')){var _0x4ebfc2={};_0x4ebfc2[_0x5caba2[_0x24e4('0x2a')]]={'$like':'%'+_0x4d4ac1[_0x24e4('0x32')][_0x24e4('0x40')]+'%'};return _0x4ebfc2;}})});}_0x29da19=_['merge']({},_0x29da19,_0x4d4ac1[_0x24e4('0x41')]);var _0x2d8800={'where':_0x29da19[_0x24e4('0x42')]};return db[_0x24e4('0x43')][_0x24e4('0x1e')](_0x2d8800)[_0x24e4('0x26')](function(_0x32653d){_0x12e140[_0x24e4('0x1e')]=_0x32653d;if(_0x4d4ac1['query']['includeAll']){_0x29da19['include']=[{'all':!![]}];}return db['Automation'][_0x24e4('0x44')](_0x29da19);})[_0x24e4('0x26')](function(_0x2d53bc){_0x12e140[_0x24e4('0x45')]=_0x2d53bc;return _0x12e140;})[_0x24e4('0x26')](respondWithFilteredResult(_0x1db1d8,_0x29da19))[_0x24e4('0x46')](handleError(_0x1db1d8,null));};exports[_0x24e4('0x47')]=function(_0x221a8f,_0x3f316c){var _0x22d755={'raw':![],'where':{'id':_0x221a8f[_0x24e4('0x48')]['id']}},_0x2753be={};_0x2753be[_0x24e4('0x35')]=_[_0x24e4('0x30')](db['Automation'][_0x24e4('0x2e')]);_0x2753be['query']=_['keys'](_0x221a8f['query']);_0x2753be[_0x24e4('0x31')]=_['intersection'](_0x2753be[_0x24e4('0x35')],_0x2753be[_0x24e4('0x32')]);_0x22d755[_0x24e4('0x33')]=_[_0x24e4('0x34')](_0x2753be[_0x24e4('0x35')],qs[_0x24e4('0x36')](_0x221a8f['query'][_0x24e4('0x36')]));_0x22d755[_0x24e4('0x33')]=_0x22d755['attributes']['length']?_0x22d755[_0x24e4('0x33')]:_0x2753be[_0x24e4('0x35')];if(_0x221a8f[_0x24e4('0x32')][_0x24e4('0x49')]){_0x22d755[_0x24e4('0x4a')]=[{'all':!![]}];}_0x22d755=_[_0x24e4('0x3d')]({},_0x22d755,_0x221a8f['options']);return db['Automation'][_0x24e4('0x4b')](_0x22d755)[_0x24e4('0x26')](handleEntityNotFound(_0x3f316c,null))[_0x24e4('0x26')](respondWithResult(_0x3f316c,null))[_0x24e4('0x46')](handleError(_0x3f316c,null));};exports[_0x24e4('0x4c')]=function(_0x3d4a39,_0x2a20fe){return db[_0x24e4('0x43')][_0x24e4('0x4c')](_0x3d4a39[_0x24e4('0x4d')],{})['then'](respondWithResult(_0x2a20fe,0xc9))[_0x24e4('0x46')](handleError(_0x2a20fe,null));};exports[_0x24e4('0x25')]=function(_0x4399d5,_0x34b01c){if(_0x4399d5[_0x24e4('0x4d')]['id']){delete _0x4399d5[_0x24e4('0x4d')]['id'];}return db[_0x24e4('0x43')][_0x24e4('0x4b')]({'where':{'id':_0x4399d5[_0x24e4('0x48')]['id']}})['then'](handleEntityNotFound(_0x34b01c,null))[_0x24e4('0x26')](saveUpdates(_0x4399d5[_0x24e4('0x4d')],null))[_0x24e4('0x26')](respondWithResult(_0x34b01c,null))[_0x24e4('0x46')](handleError(_0x34b01c,null));};exports[_0x24e4('0x27')]=function(_0x6d839c,_0x1ef67e){return db[_0x24e4('0x43')][_0x24e4('0x4b')]({'where':{'id':_0x6d839c[_0x24e4('0x48')]['id']}})[_0x24e4('0x26')](handleEntityNotFound(_0x1ef67e,null))[_0x24e4('0x26')](removeEntity(_0x1ef67e,null))[_0x24e4('0x46')](handleError(_0x1ef67e,null));};exports[_0x24e4('0x4e')]=function(_0x5c4761,_0x40f5b9,_0xd07942){return db[_0x24e4('0x4f')][_0x24e4('0x4b')]({'where':{'id':_0x5c4761[_0x24e4('0x48')]['id']}})[_0x24e4('0x26')](handleEntityNotFound(_0x40f5b9,null))[_0x24e4('0x26')](function(_0x34b31c){if(_0x34b31c){return _0x34b31c[_0x24e4('0x4e')](_0x5c4761[_0x24e4('0x4d')][_0x24e4('0x50')],_[_0x24e4('0x51')](_0x5c4761['body'],[_0x24e4('0x50'),'id'])||{});}})[_0x24e4('0x26')](respondWithResult(_0x40f5b9,null))[_0x24e4('0x46')](handleError(_0x40f5b9,null));};exports[_0x24e4('0x52')]=function(_0x17167f,_0x660639,_0x559d3b){var _0x476cc5={};var _0x4cc03d={};var _0x44707f;var _0x3d9c0c;return db[_0x24e4('0x43')][_0x24e4('0x53')]({'where':{'id':_0x17167f['params']['id']}})['then'](handleEntityNotFound(_0x660639,null))[_0x24e4('0x26')](function(_0x5d43ff){if(_0x5d43ff){_0x44707f=_0x5d43ff;_0x4cc03d[_0x24e4('0x35')]=_[_0x24e4('0x30')](db['Condition'][_0x24e4('0x2e')]);_0x4cc03d['query']=_[_0x24e4('0x30')](_0x17167f[_0x24e4('0x32')]);_0x4cc03d[_0x24e4('0x31')]=_['intersection'](_0x4cc03d['model'],_0x4cc03d[_0x24e4('0x32')]);_0x476cc5[_0x24e4('0x33')]=_[_0x24e4('0x34')](_0x4cc03d['model'],qs[_0x24e4('0x36')](_0x17167f[_0x24e4('0x32')][_0x24e4('0x36')]));_0x476cc5['attributes']=_0x476cc5[_0x24e4('0x33')][_0x24e4('0x37')]?_0x476cc5[_0x24e4('0x33')]:_0x4cc03d[_0x24e4('0x35')];_0x476cc5[_0x24e4('0x3a')]=qs['sort'](_0x17167f[_0x24e4('0x32')][_0x24e4('0x3b')]);_0x476cc5['where']=qs[_0x24e4('0x31')](_[_0x24e4('0x3c')](_0x17167f['query'],_0x4cc03d[_0x24e4('0x31')]));if(_0x17167f[_0x24e4('0x32')][_0x24e4('0x40')]){_0x476cc5[_0x24e4('0x42')]=_[_0x24e4('0x3d')](_0x476cc5[_0x24e4('0x42')],{'$or':_[_0x24e4('0x2d')](_0x476cc5['attributes'],function(_0x3f3a4e){var _0xec789d={};_0xec789d[_0x3f3a4e]={'$like':'%'+_0x17167f[_0x24e4('0x32')]['filter']+'%'};return _0xec789d;})});}_0x476cc5=_[_0x24e4('0x3d')]({},_0x476cc5,_0x17167f[_0x24e4('0x41')]);return _0x44707f['getConditions'](_0x476cc5);}})[_0x24e4('0x26')](function(_0x3c16f4){if(_0x3c16f4){_0x3d9c0c=_0x3c16f4[_0x24e4('0x37')];if(!_0x17167f['query'][_0x24e4('0x38')]('nolimit')){_0x476cc5[_0x24e4('0x1d')]=qs[_0x24e4('0x1d')](_0x17167f[_0x24e4('0x32')][_0x24e4('0x1d')]);_0x476cc5[_0x24e4('0x1f')]=qs[_0x24e4('0x1f')](_0x17167f[_0x24e4('0x32')][_0x24e4('0x1f')]);}return _0x44707f['getConditions'](_0x476cc5);}})['then'](function(_0x1fbafa){if(_0x1fbafa){return _0x1fbafa?{'count':_0x3d9c0c,'rows':_0x1fbafa}:null;}})[_0x24e4('0x26')](respondWithResult(_0x660639,null))[_0x24e4('0x46')](handleError(_0x660639,null));};exports[_0x24e4('0x54')]=function(_0x47d78c,_0x9baa7c,_0xba869f){return db[_0x24e4('0x55')][_0x24e4('0x4b')]({'where':{'id':_0x47d78c[_0x24e4('0x48')]['id']}})[_0x24e4('0x26')](handleEntityNotFound(_0x9baa7c,null))[_0x24e4('0x26')](function(_0xb09d39){if(_0xb09d39){return _0xb09d39[_0x24e4('0x54')](_0x47d78c[_0x24e4('0x4d')][_0x24e4('0x50')],_[_0x24e4('0x51')](_0x47d78c[_0x24e4('0x4d')],[_0x24e4('0x50'),'id'])||{});}})[_0x24e4('0x26')](respondWithResult(_0x9baa7c,null))[_0x24e4('0x46')](handleError(_0x9baa7c,null));};exports[_0x24e4('0x56')]=function(_0xf2ff20,_0x37bd14,_0x286f46){var _0x548241={};var _0x351a00={};var _0x10ea80;var _0x52fce7;return db[_0x24e4('0x43')][_0x24e4('0x53')]({'where':{'id':_0xf2ff20['params']['id']}})['then'](handleEntityNotFound(_0x37bd14,null))[_0x24e4('0x26')](function(_0xcab554){if(_0xcab554){_0x10ea80=_0xcab554;_0x351a00['model']=_[_0x24e4('0x30')](db[_0x24e4('0x55')][_0x24e4('0x2e')]);_0x351a00[_0x24e4('0x32')]=_[_0x24e4('0x30')](_0xf2ff20[_0x24e4('0x32')]);_0x351a00[_0x24e4('0x31')]=_['intersection'](_0x351a00['model'],_0x351a00[_0x24e4('0x32')]);_0x548241[_0x24e4('0x33')]=_[_0x24e4('0x34')](_0x351a00[_0x24e4('0x35')],qs[_0x24e4('0x36')](_0xf2ff20[_0x24e4('0x32')]['fields']));_0x548241[_0x24e4('0x33')]=_0x548241[_0x24e4('0x33')]['length']?_0x548241['attributes']:_0x351a00[_0x24e4('0x35')];_0x548241[_0x24e4('0x3a')]=qs['sort'](_0xf2ff20[_0x24e4('0x32')][_0x24e4('0x3b')]);_0x548241[_0x24e4('0x42')]=qs[_0x24e4('0x31')](_['pick'](_0xf2ff20[_0x24e4('0x32')],_0x351a00[_0x24e4('0x31')]));if(_0xf2ff20['query'][_0x24e4('0x40')]){_0x548241['where']=_[_0x24e4('0x3d')](_0x548241[_0x24e4('0x42')],{'$or':_[_0x24e4('0x2d')](_0x548241['attributes'],function(_0x16ec10){var _0x26aea2={};_0x26aea2[_0x16ec10]={'$like':'%'+_0xf2ff20[_0x24e4('0x32')][_0x24e4('0x40')]+'%'};return _0x26aea2;})});}_0x548241=_[_0x24e4('0x3d')]({},_0x548241,_0xf2ff20[_0x24e4('0x41')]);return _0x10ea80['getActions'](_0x548241);}})[_0x24e4('0x26')](function(_0x480a58){if(_0x480a58){_0x52fce7=_0x480a58[_0x24e4('0x37')];if(!_0xf2ff20[_0x24e4('0x32')][_0x24e4('0x38')](_0x24e4('0x39'))){_0x548241['limit']=qs[_0x24e4('0x1d')](_0xf2ff20[_0x24e4('0x32')][_0x24e4('0x1d')]);_0x548241['offset']=qs[_0x24e4('0x1f')](_0xf2ff20[_0x24e4('0x32')]['offset']);}return _0x10ea80[_0x24e4('0x56')](_0x548241);}})[_0x24e4('0x26')](function(_0x2b62c5){if(_0x2b62c5){return _0x2b62c5?{'count':_0x52fce7,'rows':_0x2b62c5}:null;}})['then'](respondWithResult(_0x37bd14,null))['catch'](handleError(_0x37bd14,null));};
\ No newline at end of file
index 890ae98..343738c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fa6=['lodash','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./automation.attributes','exports','Automation','tools_automations'];(function(_0x376c94,_0x59131c){var _0x3bd8bb=function(_0x5c3fd4){while(--_0x5c3fd4){_0x376c94['push'](_0x376c94['shift']());}};_0x3bd8bb(++_0x59131c);}(_0x0fa6,0x176));var _0x60fa=function(_0xc8459e,_0x357636){_0xc8459e=_0xc8459e-0x0;var _0x2cff12=_0x0fa6[_0xc8459e];return _0x2cff12;};'use strict';var _=require(_0x60fa('0x0'));var util=require('util');var logger=require(_0x60fa('0x1'))('api');var moment=require(_0x60fa('0x2'));var BPromise=require(_0x60fa('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x60fa('0x4'));var rimraf=require(_0x60fa('0x5'));var config=require(_0x60fa('0x6'));var attributes=require(_0x60fa('0x7'));module[_0x60fa('0x8')]=function(_0x195fea,_0x14486b){return _0x195fea['define'](_0x60fa('0x9'),attributes,{'tableName':_0x60fa('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd7dc=['define','Automation','tools_automations','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./automation.attributes','exports'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xd7dc,0x161));var _0xcd7d=function(_0x568496,_0x565afd){_0x568496=_0x568496-0x0;var _0x26c5c1=_0xd7dc[_0x568496];return _0x26c5c1;};'use strict';var _=require(_0xcd7d('0x0'));var util=require(_0xcd7d('0x1'));var logger=require(_0xcd7d('0x2'))('api');var moment=require(_0xcd7d('0x3'));var BPromise=require(_0xcd7d('0x4'));var rp=require(_0xcd7d('0x5'));var fs=require('fs');var path=require(_0xcd7d('0x6'));var rimraf=require(_0xcd7d('0x7'));var config=require(_0xcd7d('0x8'));var attributes=require(_0xcd7d('0x9'));module[_0xcd7d('0xa')]=function(_0x3b32d2,_0x533b10){return _0x3b32d2[_0xcd7d('0xb')](_0xcd7d('0xc'),attributes,{'tableName':_0xcd7d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7165bb8..4040df9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x349f=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','Automation,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x48cabe,_0x1b60b5){var _0x3cc062=function(_0x25216c){while(--_0x25216c){_0x48cabe['push'](_0x48cabe['shift']());}};_0x3cc062(++_0x1b60b5);}(_0x349f,0xa8));var _0xf349=function(_0x3c58cc,_0x3d85c8){_0x3c58cc=_0x3c58cc-0x0;var _0x2f51de=_0x349f[_0x3c58cc];return _0x2f51de;};'use strict';var _=require(_0xf349('0x0'));var util=require(_0xf349('0x1'));var moment=require(_0xf349('0x2'));var BPromise=require('bluebird');var rs=require(_0xf349('0x3'));var fs=require('fs');var Redis=require(_0xf349('0x4'));var db=require(_0xf349('0x5'))['db'];var utils=require(_0xf349('0x6'));var logger=require(_0xf349('0x7'))(_0xf349('0x8'));var config=require(_0xf349('0x9'));var jayson=require(_0xf349('0xa'));var client=jayson[_0xf349('0xb')][_0xf349('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4c6f4c,_0x1bd44a,_0x23fb4b){return new BPromise(function(_0x6c6cd2,_0x21a480){return client[_0xf349('0xd')](_0x4c6f4c,_0x23fb4b)[_0xf349('0xe')](function(_0x3e2147){logger['info']('Automation,\x20%s,\x20%s',_0x1bd44a,_0xf349('0xf'));logger[_0xf349('0x10')](_0xf349('0x11'),_0x1bd44a,_0xf349('0xf'),JSON[_0xf349('0x12')](_0x3e2147));if(_0x3e2147['error']){if(_0x3e2147['error']['code']===0x1f4){logger[_0xf349('0x13')](_0xf349('0x14'),_0x1bd44a,_0x3e2147[_0xf349('0x13')][_0xf349('0x15')]);return _0x21a480(_0x3e2147[_0xf349('0x13')]['message']);}logger[_0xf349('0x13')](_0xf349('0x14'),_0x1bd44a,_0x3e2147['error'][_0xf349('0x15')]);return _0x6c6cd2(_0x3e2147[_0xf349('0x13')]['message']);}else{logger[_0xf349('0x16')]('Automation,\x20%s,\x20%s',_0x1bd44a,_0xf349('0xf'));_0x6c6cd2(_0x3e2147[_0xf349('0x17')][_0xf349('0x15')]);}})[_0xf349('0x18')](function(_0x14c06d){logger[_0xf349('0x13')](_0xf349('0x14'),_0x1bd44a,_0x14c06d);_0x21a480(_0x14c06d);});});}
\ No newline at end of file
+var _0x38b8=['client','http','request','then','Automation,\x20%s,\x20%s','debug','Automation,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','moment','bluebird','ioredis','../../config/logger','rpc'];(function(_0x1c0b91,_0x691caf){var _0x3d1ab4=function(_0x23b647){while(--_0x23b647){_0x1c0b91['push'](_0x1c0b91['shift']());}};_0x3d1ab4(++_0x691caf);}(_0x38b8,0x7f));var _0x838b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x38b8[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x838b('0x0'));var util=require('util');var moment=require(_0x838b('0x1'));var BPromise=require(_0x838b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x838b('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x838b('0x4'))(_0x838b('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x838b('0x6')][_0x838b('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5c516c,_0x2d3e96,_0x15184b){return new BPromise(function(_0x4b9530,_0x552245){return client[_0x838b('0x8')](_0x5c516c,_0x15184b)[_0x838b('0x9')](function(_0x31ba84){logger['info'](_0x838b('0xa'),_0x2d3e96,'request\x20sent');logger[_0x838b('0xb')](_0x838b('0xc'),_0x2d3e96,_0x838b('0xd'),JSON[_0x838b('0xe')](_0x31ba84));if(_0x31ba84[_0x838b('0xf')]){if(_0x31ba84[_0x838b('0xf')]['code']===0x1f4){logger[_0x838b('0xf')](_0x838b('0xa'),_0x2d3e96,_0x31ba84[_0x838b('0xf')][_0x838b('0x10')]);return _0x552245(_0x31ba84[_0x838b('0xf')][_0x838b('0x10')]);}logger[_0x838b('0xf')](_0x838b('0xa'),_0x2d3e96,_0x31ba84[_0x838b('0xf')]['message']);return _0x4b9530(_0x31ba84[_0x838b('0xf')]['message']);}else{logger['info']('Automation,\x20%s,\x20%s',_0x2d3e96,_0x838b('0xd'));_0x4b9530(_0x31ba84[_0x838b('0x11')][_0x838b('0x10')]);}})[_0x838b('0x12')](function(_0x94e893){logger['error'](_0x838b('0xa'),_0x2d3e96,_0x94e893);_0x552245(_0x94e893);});});}
\ No newline at end of file
index bda007b..610ff32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a66=['../../components/interaction/service','../../config/environment','./automation.controller','/:id','isAuthenticated','get','getConditions','/:id/actions','post','create','addConditions','addActions','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x24693e,_0x2ba888){var _0x53e672=function(_0x5f6cff){while(--_0x5f6cff){_0x24693e['push'](_0x24693e['shift']());}};_0x53e672(++_0x2ba888);}(_0x1a66,0x102));var _0x61a6=function(_0x2abd73,_0x340684){_0x2abd73=_0x2abd73-0x0;var _0x4fc21d=_0x1a66[_0x2abd73];return _0x4fc21d;};'use strict';var multer=require(_0x61a6('0x0'));var util=require(_0x61a6('0x1'));var path=require(_0x61a6('0x2'));var timeout=require(_0x61a6('0x3'));var express=require(_0x61a6('0x4'));var router=express[_0x61a6('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x61a6('0x6'));var config=require(_0x61a6('0x7'));var controller=require(_0x61a6('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x61a6('0x9'),auth[_0x61a6('0xa')](),controller['show']);router[_0x61a6('0xb')]('/:id/conditions',auth[_0x61a6('0xa')](),controller[_0x61a6('0xc')]);router['get'](_0x61a6('0xd'),auth['isAuthenticated'](),controller['getActions']);router[_0x61a6('0xe')]('/',auth[_0x61a6('0xa')](),controller[_0x61a6('0xf')]);router[_0x61a6('0xe')]('/:id/conditions',auth[_0x61a6('0xa')](),controller[_0x61a6('0x10')]);router['post'](_0x61a6('0xd'),auth['isAuthenticated'](),controller[_0x61a6('0x11')]);router['put']('/:id',auth[_0x61a6('0xa')](),controller[_0x61a6('0x12')]);router[_0x61a6('0x13')](_0x61a6('0x9'),auth[_0x61a6('0xa')](),controller[_0x61a6('0x14')]);module[_0x61a6('0x15')]=router;
\ No newline at end of file
+var _0x208d=['create','addConditions','addActions','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','index','/:id','show','isAuthenticated','getConditions','/:id/actions','getActions','post'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x208d,0xa4));var _0xd208=function(_0x59f066,_0x3d8a42){_0x59f066=_0x59f066-0x0;var _0x21187c=_0x208d[_0x59f066];return _0x21187c;};'use strict';var multer=require(_0xd208('0x0'));var util=require(_0xd208('0x1'));var path=require(_0xd208('0x2'));var timeout=require(_0xd208('0x3'));var express=require('express');var router=express[_0xd208('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd208('0x5'));var interaction=require(_0xd208('0x6'));var config=require(_0xd208('0x7'));var controller=require(_0xd208('0x8'));router[_0xd208('0x9')]('/',auth['isAuthenticated'](),controller[_0xd208('0xa')]);router[_0xd208('0x9')](_0xd208('0xb'),auth['isAuthenticated'](),controller[_0xd208('0xc')]);router[_0xd208('0x9')]('/:id/conditions',auth[_0xd208('0xd')](),controller[_0xd208('0xe')]);router['get'](_0xd208('0xf'),auth[_0xd208('0xd')](),controller[_0xd208('0x10')]);router[_0xd208('0x11')]('/',auth['isAuthenticated'](),controller[_0xd208('0x12')]);router[_0xd208('0x11')]('/:id/conditions',auth[_0xd208('0xd')](),controller[_0xd208('0x13')]);router[_0xd208('0x11')](_0xd208('0xf'),auth[_0xd208('0xd')](),controller[_0xd208('0x14')]);router[_0xd208('0x15')]('/:id',auth['isAuthenticated'](),controller[_0xd208('0x16')]);router[_0xd208('0x17')](_0xd208('0xb'),auth[_0xd208('0xd')](),controller[_0xd208('0x18')]);module[_0xd208('0x19')]=router;
\ No newline at end of file
index ef48bb9..477c024 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x473b=['ivr','BOOLEAN','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)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','#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\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\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)','sequelize','exports','STRING','name','ENUM'];(function(_0x402360,_0x348a93){var _0x8a9941=function(_0x102fea){while(--_0x102fea){_0x402360['push'](_0x402360['shift']());}};_0x8a9941(++_0x348a93);}(_0x473b,0x11a));var _0xb473=function(_0xa6cc5c,_0x239c99){_0xa6cc5c=_0xa6cc5c-0x0;var _0x44803d=_0x473b[_0xa6cc5c];return _0x44803d;};'use strict';var Sequelize=require(_0xb473('0x0'));module[_0xb473('0x1')]={'name':{'type':Sequelize[_0xb473('0x2')],'unique':_0xb473('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xb473('0x4')](_0xb473('0x5')),'allowNull':![],'defaultValue':_0xb473('0x5')},'description':{'type':Sequelize[_0xb473('0x2')]},'active':{'type':Sequelize[_0xb473('0x6')],'defaultValue':0x0,'comment':_0xb473('0x7')},'limitCalls':{'type':Sequelize[_0xb473('0x8')](0x4)[_0xb473('0x9')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xb473('0xa')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xb473('0x2')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0xb473('0x9')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb473('0xb')},'dialCongestionMaxRetry':{'type':Sequelize[_0xb473('0x8')](0x3)[_0xb473('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb473('0xc')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xb473('0x8')](0x5)[_0xb473('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb473('0xd')},'dialBusyMaxRetry':{'type':Sequelize[_0xb473('0x8')](0x3)[_0xb473('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb473('0xe')},'dialBusyRetryFrequency':{'type':Sequelize[_0xb473('0x8')](0x5)[_0xb473('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb473('0xf')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xb473('0x9')],'defaultValue':0x3,'comment':_0xb473('0x10')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xb473('0x8')](0x5)[_0xb473('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb473('0x11')},'dialGlobalMaxRetry':{'type':Sequelize[_0xb473('0x8')](0x3)[_0xb473('0x9')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0xb473('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xb473('0x2')],'defaultValue':_0xb473('0x12')},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0xb473('0x13'),_0xb473('0x14'),_0xb473('0x15')),'defaultValue':_0xb473('0x13')},'dialAMDActive':{'type':Sequelize[_0xb473('0x6')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0xb473('0x8')](0x9)[_0xb473('0x9')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xb473('0x16')},'dialAMDGreeting':{'type':Sequelize[_0xb473('0x8')](0x9)[_0xb473('0x9')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xb473('0x17')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0xb473('0x9')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xb473('0x18')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xb473('0x8')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xb473('0x19')},'dialAMDMinWordLength':{'type':Sequelize[_0xb473('0x8')](0x9)[_0xb473('0x9')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xb473('0x1a')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xb473('0x8')](0x9)[_0xb473('0x9')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xb473('0x1b')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xb473('0x8')](0x9)[_0xb473('0x9')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xb473('0x1c')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xb473('0x8')](0x5)[_0xb473('0x9')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xb473('0x1d')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xb473('0x8')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0xb473('0x4')](_0xb473('0x1e'),'ASC'),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xb473('0x8')](0x3)[_0xb473('0x9')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xb473('0x1f')},'dialCutDigit':{'type':Sequelize[_0xb473('0x8')](0x3)[_0xb473('0x9')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xb473('0x20')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xb473('0x8')](0x3)[_0xb473('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb473('0x21')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xb473('0x8')](0x5)[_0xb473('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xb473('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0xb473('0x8')](0x5)[_0xb473('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb473('0x22')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xb473('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb473('0x23')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xb473('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb473('0x24')},'dialMachineMaxRetry':{'type':Sequelize[_0xb473('0x8')](0x3)[_0xb473('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb473('0x25')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb473('0x26')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb473('0x27')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xb473('0x8')](0x5)[_0xb473('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb473('0x28')}};
\ No newline at end of file
+var _0x7ff5=['Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','exports','STRING','name','ivr','Active/Disactive\x20Campaign','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','INTEGER','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','ENUM','never','always','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)'];(function(_0x108a4a,_0xa3df76){var _0x19cf70=function(_0x3eee4c){while(--_0x3eee4c){_0x108a4a['push'](_0x108a4a['shift']());}};_0x19cf70(++_0xa3df76);}(_0x7ff5,0xcd));var _0x57ff=function(_0x2baf56,_0x16fa1c){_0x2baf56=_0x2baf56-0x0;var _0x33657f=_0x7ff5[_0x2baf56];return _0x33657f;};'use strict';var Sequelize=require('sequelize');module[_0x57ff('0x0')]={'name':{'type':Sequelize[_0x57ff('0x1')],'unique':_0x57ff('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM'](_0x57ff('0x3')),'allowNull':![],'defaultValue':_0x57ff('0x3')},'description':{'type':Sequelize[_0x57ff('0x1')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x57ff('0x4')},'limitCalls':{'type':Sequelize['INTEGER'](0x4)[_0x57ff('0x5')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x57ff('0x6')},'dialOriginateCallerIdName':{'type':Sequelize[_0x57ff('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x57ff('0x1')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x57ff('0x5')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x57ff('0x7')},'dialCongestionMaxRetry':{'type':Sequelize[_0x57ff('0x8')](0x3)[_0x57ff('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x57ff('0x9')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x57ff('0x8')](0x5)[_0x57ff('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x57ff('0xa')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x57ff('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x57ff('0xb')},'dialBusyRetryFrequency':{'type':Sequelize[_0x57ff('0x8')](0x5)[_0x57ff('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x57ff('0xc')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x57ff('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x57ff('0xd')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x57ff('0x8')](0x5)[_0x57ff('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x57ff('0xe')},'dialGlobalMaxRetry':{'type':Sequelize[_0x57ff('0x8')](0x3)[_0x57ff('0x5')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x57ff('0xf')},'dialTimezone':{'type':Sequelize[_0x57ff('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x57ff('0x1')],'defaultValue':_0x57ff('0x10')},'dialCheckDuplicateType':{'type':Sequelize[_0x57ff('0x11')]('always',_0x57ff('0x12'),'onlyIfOpen'),'defaultValue':_0x57ff('0x13')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x57ff('0x14')},'dialAMDInitialSilence':{'type':Sequelize[_0x57ff('0x8')](0x9)[_0x57ff('0x5')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x57ff('0x15')},'dialAMDGreeting':{'type':Sequelize[_0x57ff('0x8')](0x9)[_0x57ff('0x5')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x57ff('0x16')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x57ff('0x8')](0x9)[_0x57ff('0x5')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x57ff('0x8')](0x9)[_0x57ff('0x5')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x57ff('0x17')},'dialAMDMinWordLength':{'type':Sequelize[_0x57ff('0x8')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x57ff('0x18')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0x57ff('0x5')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x57ff('0x19')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x57ff('0x8')](0x9)[_0x57ff('0x5')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x57ff('0x1a')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x57ff('0x8')](0x5)[_0x57ff('0x5')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x57ff('0x1b')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x57ff('0x8')](0x9)[_0x57ff('0x5')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x57ff('0x1c')},'dialOrderByScheduledAt':{'type':Sequelize[_0x57ff('0x11')](_0x57ff('0x1d'),_0x57ff('0x1e')),'defaultValue':_0x57ff('0x1d')},'dialPrefix':{'type':Sequelize[_0x57ff('0x1')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x57ff('0x8')](0x3)[_0x57ff('0x5')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x57ff('0x1f')},'dialCutDigit':{'type':Sequelize[_0x57ff('0x8')](0x3)[_0x57ff('0x5')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x57ff('0x8')](0x3)[_0x57ff('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x57ff('0x20')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x57ff('0x8')](0x5)[_0x57ff('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x57ff('0x21')},'dialDropMaxRetry':{'type':Sequelize[_0x57ff('0x8')](0x3)[_0x57ff('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x57ff('0x22')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x57ff('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x57ff('0x23')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x57ff('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x57ff('0x24')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x57ff('0x8')](0x5)[_0x57ff('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x57ff('0x25')},'dialMachineMaxRetry':{'type':Sequelize[_0x57ff('0x8')](0x3)[_0x57ff('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0x57ff('0x8')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x57ff('0x26')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x57ff('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x57ff('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x57ff('0x27')}};
\ No newline at end of file
index fadc9b1..337e961 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53fb=['lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','UserProfileResource','error','name','send','index','map','Campaign','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','length','find','create','body','user','get','role','IvrCampaigns','userProfileId','autoAssociation','clone','omit','updatedAt','createdAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getHoppers','findOne','CmHopper','CampaignId','getHopperHistories','CmHopperHistory','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','ids','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','select','field','NOW()','CmListId','toString','from','deletedAt\x20IS\x20NULL','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','cm_contacts','push','sequelize','removeLists','getBlackLists','addBlackLists','cm_hopper_black','all','removeBlackLists','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra'];(function(_0xd73c75,_0x2a023b){var _0x1cb520=function(_0x16bff0){while(--_0x16bff0){_0xd73c75['push'](_0xd73c75['shift']());}};_0x1cb520(++_0x2a023b);}(_0x53fb,0x19d));var _0xb53f=function(_0x43ab5f,_0x358ba8){_0x43ab5f=_0x43ab5f-0x0;var _0x1c952b=_0x53fb[_0x43ab5f];return _0x1c952b;};'use strict';var emlformat=require(_0xb53f('0x0'));var rimraf=require(_0xb53f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb53f('0x2'));var rp=require(_0xb53f('0x3'));var moment=require(_0xb53f('0x4'));var BPromise=require(_0xb53f('0x5'));var Mustache=require(_0xb53f('0x6'));var util=require(_0xb53f('0x7'));var path=require(_0xb53f('0x8'));var sox=require(_0xb53f('0x9'));var csv=require(_0xb53f('0xa'));var ejs=require(_0xb53f('0xb'));var fs=require('fs');var fs_extra=require(_0xb53f('0xc'));var _=require(_0xb53f('0xd'));var squel=require(_0xb53f('0xe'));var crypto=require(_0xb53f('0xf'));var jsforce=require(_0xb53f('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xb53f('0xa'));var querystring=require(_0xb53f('0x11'));var Papa=require(_0xb53f('0x12'));var Redis=require(_0xb53f('0x13'));var authService=require(_0xb53f('0x14'));var qs=require(_0xb53f('0x15'));var as=require(_0xb53f('0x16'));var hardwareService=require(_0xb53f('0x17'));var logger=require(_0xb53f('0x18'))(_0xb53f('0x19'));var utils=require(_0xb53f('0x1a'));var config=require(_0xb53f('0x1b'));var licenseUtil=require('../../config/license/util');var db=require(_0xb53f('0x1c'))['db'];function respondWithStatusCode(_0x47b95b,_0x4a16e0){_0x4a16e0=_0x4a16e0||0xcc;return function(_0x1c1210){if(_0x1c1210){return _0x47b95b[_0xb53f('0x1d')](_0x4a16e0);}return _0x47b95b[_0xb53f('0x1e')](_0x4a16e0)[_0xb53f('0x1f')]();};}function respondWithResult(_0x5ac2a3,_0x38c177){_0x38c177=_0x38c177||0xc8;return function(_0x321d3c){if(_0x321d3c){return _0x5ac2a3[_0xb53f('0x1e')](_0x38c177)[_0xb53f('0x20')](_0x321d3c);}};}function respondWithFilteredResult(_0x3065a8,_0x3a8592){return function(_0x42d57a){if(_0x42d57a){var _0x551e99=typeof _0x3a8592[_0xb53f('0x21')]===_0xb53f('0x22')&&typeof _0x3a8592[_0xb53f('0x23')]===_0xb53f('0x22');var _0x2f4101=_0x42d57a['count'];var _0x38b35a=_0x551e99?0x0:_0x3a8592[_0xb53f('0x21')];var _0x142b67=_0x551e99?_0x42d57a[_0xb53f('0x24')]:_0x3a8592['offset']+_0x3a8592[_0xb53f('0x23')];var _0x25d3f0;if(_0x142b67>=_0x2f4101){_0x142b67=_0x2f4101;_0x25d3f0=0xc8;}else{_0x25d3f0=0xce;}_0x3065a8[_0xb53f('0x1e')](_0x25d3f0);return _0x3065a8['set'](_0xb53f('0x25'),_0x38b35a+'-'+_0x142b67+'/'+_0x2f4101)[_0xb53f('0x20')](_0x42d57a);}return null;};}function patchUpdates(_0x44404a){return function(_0x31a676){try{jsonpatch[_0xb53f('0x26')](_0x31a676,_0x44404a,!![]);}catch(_0x5cb9eb){return BPromise[_0xb53f('0x27')](_0x5cb9eb);}return _0x31a676[_0xb53f('0x28')]();};}function saveUpdates(_0x21092c,_0x5d0296){return function(_0x5309ad){if(_0x5309ad){return _0x5309ad[_0xb53f('0x29')](_0x21092c)['then'](function(_0x1e089c){return _0x1e089c;});}return null;};}function removeEntity(_0x4306ee,_0x17190a){return function(_0x2f5327){if(_0x2f5327){return _0x2f5327[_0xb53f('0x2a')]()[_0xb53f('0x2b')](function(){var _0x136618=_0x2f5327['get']({'plain':!![]});var _0x3af620='IvrCampaigns';return db[_0xb53f('0x2c')]['destroy']({'where':{'type':_0x3af620,'resourceId':_0x136618['id']}})[_0xb53f('0x2b')](function(){return _0x2f5327;});})[_0xb53f('0x2b')](function(){_0x4306ee[_0xb53f('0x1e')](0xcc)[_0xb53f('0x1f')]();});}};}function handleEntityNotFound(_0x3aaf50,_0x57c0df){return function(_0x148e10){if(!_0x148e10){_0x3aaf50['sendStatus'](0x194);}return _0x148e10;};}function handleError(_0x2ed22f,_0x2fd439){_0x2fd439=_0x2fd439||0x1f4;return function(_0xfda78b){logger[_0xb53f('0x2d')](_0xfda78b['stack']);if(_0xfda78b[_0xb53f('0x2e')]){delete _0xfda78b[_0xb53f('0x2e')];}_0x2ed22f[_0xb53f('0x1e')](_0x2fd439)[_0xb53f('0x2f')](_0xfda78b);};}exports[_0xb53f('0x30')]=function(_0x53c013,_0x34eea7){var _0x22252e={},_0x589ff5={},_0x2f6e79={'count':0x0,'rows':[]};var _0x49e36b=_[_0xb53f('0x31')](db[_0xb53f('0x32')]['rawAttributes'],function(_0x1731c4){return{'name':_0x1731c4['fieldName'],'type':_0x1731c4[_0xb53f('0x33')][_0xb53f('0x34')]};});_0x589ff5[_0xb53f('0x35')]=_[_0xb53f('0x31')](_0x49e36b,'name');_0x589ff5[_0xb53f('0x36')]=_[_0xb53f('0x37')](_0x53c013[_0xb53f('0x36')]);_0x589ff5[_0xb53f('0x38')]=_[_0xb53f('0x39')](_0x589ff5[_0xb53f('0x35')],_0x589ff5[_0xb53f('0x36')]);_0x22252e['attributes']=_[_0xb53f('0x39')](_0x589ff5[_0xb53f('0x35')],qs[_0xb53f('0x3a')](_0x53c013['query']['fields']));_0x22252e[_0xb53f('0x3b')]=_0x22252e['attributes']['length']?_0x22252e[_0xb53f('0x3b')]:_0x589ff5[_0xb53f('0x35')];if(!_0x53c013['query'][_0xb53f('0x3c')](_0xb53f('0x3d'))){_0x22252e[_0xb53f('0x23')]=qs[_0xb53f('0x23')](_0x53c013[_0xb53f('0x36')][_0xb53f('0x23')]);_0x22252e['offset']=qs[_0xb53f('0x21')](_0x53c013[_0xb53f('0x36')][_0xb53f('0x21')]);}_0x22252e[_0xb53f('0x3e')]=qs[_0xb53f('0x3f')](_0x53c013[_0xb53f('0x36')][_0xb53f('0x3f')]);_0x22252e[_0xb53f('0x40')]=qs[_0xb53f('0x38')](_[_0xb53f('0x41')](_0x53c013[_0xb53f('0x36')],_0x589ff5[_0xb53f('0x38')]),_0x49e36b);if(_0x53c013[_0xb53f('0x36')][_0xb53f('0x42')]){_0x22252e[_0xb53f('0x40')]=_[_0xb53f('0x43')](_0x22252e[_0xb53f('0x40')],{'$or':_['map'](_0x49e36b,function(_0x53d4fc){if(_0x53d4fc['type']!=='VIRTUAL'){var _0x48b760={};_0x48b760[_0x53d4fc['name']]={'$like':'%'+_0x53c013['query']['filter']+'%'};return _0x48b760;}})});}_0x22252e=_['merge']({},_0x22252e,_0x53c013[_0xb53f('0x44')]);var _0xfb058d={'where':_0x22252e[_0xb53f('0x40')]};return db[_0xb53f('0x32')][_0xb53f('0x24')](_0xfb058d)[_0xb53f('0x2b')](function(_0xced5d2){_0x2f6e79[_0xb53f('0x24')]=_0xced5d2;if(_0x53c013['query'][_0xb53f('0x45')]){_0x22252e[_0xb53f('0x46')]=[{'all':!![]}];}return db[_0xb53f('0x32')][_0xb53f('0x47')](_0x22252e);})[_0xb53f('0x2b')](function(_0x4bf8ea){_0x2f6e79[_0xb53f('0x48')]=_0x4bf8ea;return _0x2f6e79;})[_0xb53f('0x2b')](respondWithFilteredResult(_0x34eea7,_0x22252e))[_0xb53f('0x49')](handleError(_0x34eea7,null));};exports[_0xb53f('0x4a')]=function(_0x980d4e,_0x4b6473){var _0x8079e5={'raw':![],'where':{'id':_0x980d4e[_0xb53f('0x4b')]['id']}},_0x45ce4e={};_0x45ce4e[_0xb53f('0x35')]=_[_0xb53f('0x37')](db[_0xb53f('0x32')][_0xb53f('0x4c')]);_0x45ce4e[_0xb53f('0x36')]=_[_0xb53f('0x37')](_0x980d4e[_0xb53f('0x36')]);_0x45ce4e[_0xb53f('0x38')]=_[_0xb53f('0x39')](_0x45ce4e[_0xb53f('0x35')],_0x45ce4e['query']);_0x8079e5[_0xb53f('0x3b')]=_[_0xb53f('0x39')](_0x45ce4e['model'],qs['fields'](_0x980d4e[_0xb53f('0x36')]['fields']));_0x8079e5[_0xb53f('0x3b')]=_0x8079e5[_0xb53f('0x3b')][_0xb53f('0x4d')]?_0x8079e5[_0xb53f('0x3b')]:_0x45ce4e[_0xb53f('0x35')];if(_0x980d4e[_0xb53f('0x36')][_0xb53f('0x45')]){_0x8079e5[_0xb53f('0x46')]=[{'all':!![]}];}_0x8079e5=_[_0xb53f('0x43')]({},_0x8079e5,_0x980d4e[_0xb53f('0x44')]);return db['Campaign'][_0xb53f('0x4e')](_0x8079e5)[_0xb53f('0x2b')](handleEntityNotFound(_0x4b6473,null))[_0xb53f('0x2b')](respondWithResult(_0x4b6473,null))[_0xb53f('0x49')](handleError(_0x4b6473,null));};exports[_0xb53f('0x4f')]=function(_0x2983ce,_0x116a3d){return db[_0xb53f('0x32')]['create'](_0x2983ce[_0xb53f('0x50')],{})[_0xb53f('0x2b')](function(_0x320b28){var _0x284a81=_0x2983ce[_0xb53f('0x51')][_0xb53f('0x52')]({'plain':!![]});if(!_0x284a81)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x284a81[_0xb53f('0x53')]==='user'){var _0x3461c9=_0x320b28[_0xb53f('0x52')]({'plain':!![]});var _0x519574=_0xb53f('0x54');return db['UserProfileSection'][_0xb53f('0x4e')]({'where':{'name':_0x519574,'userProfileId':_0x284a81[_0xb53f('0x55')]},'raw':!![]})[_0xb53f('0x2b')](function(_0x4cea40){if(_0x4cea40&&_0x4cea40[_0xb53f('0x56')]===0x0){return db[_0xb53f('0x2c')]['create']({'name':_0x3461c9[_0xb53f('0x2e')],'resourceId':_0x3461c9['id'],'type':_0x4cea40[_0xb53f('0x2e')],'sectionId':_0x4cea40['id']},{})[_0xb53f('0x2b')](function(){return _0x320b28;});}else{return _0x320b28;}})['catch'](function(_0x384410){logger[_0xb53f('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x384410);throw _0x384410;});}return _0x320b28;})[_0xb53f('0x2b')](respondWithResult(_0x116a3d,0xc9))['catch'](handleError(_0x116a3d,null));};exports[_0xb53f('0x57')]=function(_0x549ac3,_0x4c3ee1){var _0x1b47a5={'where':{'id':_0x549ac3[_0xb53f('0x4b')]['id']}},_0x274d15={};_0x274d15['model']=_[_0xb53f('0x37')](db[_0xb53f('0x32')][_0xb53f('0x4c')]);_0x1b47a5[_0xb53f('0x3b')]=_['intersection'](_0x274d15[_0xb53f('0x35')],qs[_0xb53f('0x3a')](_0x549ac3['query'][_0xb53f('0x3a')]));_0x1b47a5[_0xb53f('0x3b')]=_0x1b47a5['attributes'][_0xb53f('0x4d')]?_0x1b47a5['attributes']:_0x274d15[_0xb53f('0x35')];if(_0x549ac3[_0xb53f('0x36')]['includeAll']){_0x1b47a5[_0xb53f('0x46')]=[{'all':!![]}];}_0x1b47a5=_[_0xb53f('0x43')]({},_0x1b47a5,_0x549ac3[_0xb53f('0x44')]);return db[_0xb53f('0x32')][_0xb53f('0x4e')](_0x1b47a5)[_0xb53f('0x2b')](handleEntityNotFound(_0x4c3ee1,null))[_0xb53f('0x2b')](function(_0x39b5f6){if(_0x39b5f6){var _0x2f08fb=_0x39b5f6[_0xb53f('0x52')]({'plain':!![]});_0x2f08fb=qs[_0xb53f('0x58')](_0x2f08fb,['id','createdAt',_0xb53f('0x59')]);_0x549ac3['body']=_[_0xb53f('0x58')](_0x549ac3[_0xb53f('0x50')],['id',_0xb53f('0x5a'),_0xb53f('0x59')]);return db[_0xb53f('0x32')][_0xb53f('0x4f')](_[_0xb53f('0x43')](_0x2f08fb,_0x549ac3[_0xb53f('0x50')]),{'include':_0x549ac3['query'][_0xb53f('0x45')]?[{'all':!![]}]:undefined})[_0xb53f('0x2b')](function(_0x3bc5dd){var _0x599e5e=_0x549ac3[_0xb53f('0x51')][_0xb53f('0x52')]({'plain':!![]});if(!_0x599e5e)throw new Error(_0xb53f('0x5b'));if(_0x599e5e[_0xb53f('0x53')]===_0xb53f('0x51')){var _0x43c7c1=_0x3bc5dd[_0xb53f('0x52')]({'plain':!![]});var _0x5c255b=_0xb53f('0x54');return db[_0xb53f('0x5c')][_0xb53f('0x4e')]({'where':{'name':_0x5c255b,'userProfileId':_0x599e5e[_0xb53f('0x55')]},'raw':!![]})[_0xb53f('0x2b')](function(_0x22e578){if(_0x22e578&&_0x22e578[_0xb53f('0x56')]===0x0){return db[_0xb53f('0x2c')][_0xb53f('0x4f')]({'name':_0x43c7c1[_0xb53f('0x2e')],'resourceId':_0x43c7c1['id'],'type':_0x22e578[_0xb53f('0x2e')],'sectionId':_0x22e578['id']},{})[_0xb53f('0x2b')](function(){return _0x3bc5dd;});}else{return _0x3bc5dd;}})[_0xb53f('0x49')](function(_0x5937ee){logger['error'](_0xb53f('0x5d'),_0x5937ee);throw _0x5937ee;});}return _0x3bc5dd;});}})[_0xb53f('0x2b')](respondWithResult(_0x4c3ee1,0xc9))[_0xb53f('0x49')](handleError(_0x4c3ee1,null));};exports['update']=function(_0x555ce1,_0x5049b5){if(_0x555ce1[_0xb53f('0x50')]['id']){delete _0x555ce1['body']['id'];}return db[_0xb53f('0x32')][_0xb53f('0x4e')]({'where':{'id':_0x555ce1[_0xb53f('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5049b5,null))[_0xb53f('0x2b')](saveUpdates(_0x555ce1[_0xb53f('0x50')],null))[_0xb53f('0x2b')](respondWithResult(_0x5049b5,null))[_0xb53f('0x49')](handleError(_0x5049b5,null));};exports[_0xb53f('0x2a')]=function(_0x244568,_0x2f8673){return db['Campaign'][_0xb53f('0x4e')]({'where':{'id':_0x244568[_0xb53f('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2f8673,null))[_0xb53f('0x2b')](removeEntity(_0x2f8673,null))['catch'](handleError(_0x2f8673,null));};exports[_0xb53f('0x5e')]=function(_0x442009,_0x3fe48a,_0x1c1890){var _0x18072f={'raw':!![],'where':{}};var _0x5db9ca={};var _0x408378={'count':0x0,'rows':[]};return db[_0xb53f('0x32')][_0xb53f('0x5f')]({'where':{'id':_0x442009[_0xb53f('0x4b')]['id']}})[_0xb53f('0x2b')](handleEntityNotFound(_0x3fe48a,null))[_0xb53f('0x2b')](function(_0xc2b1a){if(_0xc2b1a){_0x5db9ca[_0xb53f('0x35')]=_[_0xb53f('0x37')](db[_0xb53f('0x60')][_0xb53f('0x4c')]);_0x5db9ca[_0xb53f('0x36')]=_[_0xb53f('0x37')](_0x442009[_0xb53f('0x36')]);_0x5db9ca[_0xb53f('0x38')]=_[_0xb53f('0x39')](_0x5db9ca[_0xb53f('0x35')],_0x5db9ca[_0xb53f('0x36')]);_0x18072f[_0xb53f('0x3b')]=_['intersection'](_0x5db9ca[_0xb53f('0x35')],qs[_0xb53f('0x3a')](_0x442009[_0xb53f('0x36')][_0xb53f('0x3a')]));_0x18072f[_0xb53f('0x3b')]=_0x18072f[_0xb53f('0x3b')][_0xb53f('0x4d')]?_0x18072f[_0xb53f('0x3b')]:_0x5db9ca[_0xb53f('0x35')];if(!_0x442009[_0xb53f('0x36')]['hasOwnProperty'](_0xb53f('0x3d'))){_0x18072f[_0xb53f('0x23')]=qs[_0xb53f('0x23')](_0x442009[_0xb53f('0x36')][_0xb53f('0x23')]);_0x18072f[_0xb53f('0x21')]=qs['offset'](_0x442009['query'][_0xb53f('0x21')]);}_0x18072f[_0xb53f('0x3e')]=qs[_0xb53f('0x3f')](_0x442009[_0xb53f('0x36')][_0xb53f('0x3f')]);_0x18072f[_0xb53f('0x40')]=qs[_0xb53f('0x38')](_['pick'](_0x442009[_0xb53f('0x36')],_0x5db9ca[_0xb53f('0x38')]));_0x18072f[_0xb53f('0x40')][_0xb53f('0x61')]=_0xc2b1a['id'];if(_0x442009[_0xb53f('0x36')][_0xb53f('0x42')]){_0x18072f[_0xb53f('0x40')]=_['merge'](_0x18072f[_0xb53f('0x40')],{'$or':_[_0xb53f('0x31')](_0x18072f['attributes'],function(_0x1bd915){var _0x343bf3={};_0x343bf3[_0x1bd915]={'$like':'%'+_0x442009['query'][_0xb53f('0x42')]+'%'};return _0x343bf3;})});}_0x18072f=_[_0xb53f('0x43')]({},_0x18072f,_0x442009[_0xb53f('0x44')]);return db[_0xb53f('0x60')][_0xb53f('0x24')]({'where':_0x18072f['where']})['then'](function(_0x13321a){_0x408378[_0xb53f('0x24')]=_0x13321a;if(_0x442009[_0xb53f('0x36')][_0xb53f('0x45')]){_0x18072f['include']=[{'all':!![]}];}return db['CmHopper'][_0xb53f('0x47')](_0x18072f);})[_0xb53f('0x2b')](function(_0x3a2323){_0x408378['rows']=_0x3a2323;return _0x408378;});}})[_0xb53f('0x2b')](respondWithFilteredResult(_0x3fe48a,_0x18072f))[_0xb53f('0x49')](handleError(_0x3fe48a,null));};exports[_0xb53f('0x62')]=function(_0x59faef,_0x4f17ad,_0x165940){var _0xf947cc={'raw':!![],'where':{}};var _0x87f27f={};var _0xbc14d6={'count':0x0,'rows':[]};return db['Campaign'][_0xb53f('0x5f')]({'where':{'id':_0x59faef[_0xb53f('0x4b')]['id']}})[_0xb53f('0x2b')](handleEntityNotFound(_0x4f17ad,null))['then'](function(_0x42fb9b){if(_0x42fb9b){_0x87f27f['model']=_['keys'](db['CmHopperHistory'][_0xb53f('0x4c')]);_0x87f27f[_0xb53f('0x36')]=_['keys'](_0x59faef['query']);_0x87f27f[_0xb53f('0x38')]=_[_0xb53f('0x39')](_0x87f27f['model'],_0x87f27f[_0xb53f('0x36')]);_0xf947cc[_0xb53f('0x3b')]=_[_0xb53f('0x39')](_0x87f27f['model'],qs[_0xb53f('0x3a')](_0x59faef['query'][_0xb53f('0x3a')]));_0xf947cc['attributes']=_0xf947cc[_0xb53f('0x3b')][_0xb53f('0x4d')]?_0xf947cc[_0xb53f('0x3b')]:_0x87f27f[_0xb53f('0x35')];if(!_0x59faef[_0xb53f('0x36')][_0xb53f('0x3c')](_0xb53f('0x3d'))){_0xf947cc[_0xb53f('0x23')]=qs[_0xb53f('0x23')](_0x59faef['query'][_0xb53f('0x23')]);_0xf947cc[_0xb53f('0x21')]=qs['offset'](_0x59faef[_0xb53f('0x36')][_0xb53f('0x21')]);}_0xf947cc['order']=qs['sort'](_0x59faef[_0xb53f('0x36')][_0xb53f('0x3f')]);_0xf947cc[_0xb53f('0x40')]=qs['filters'](_[_0xb53f('0x41')](_0x59faef[_0xb53f('0x36')],_0x87f27f[_0xb53f('0x38')]));_0xf947cc[_0xb53f('0x40')]['CampaignId']=_0x42fb9b['id'];if(_0x59faef[_0xb53f('0x36')]['filter']){_0xf947cc[_0xb53f('0x40')]=_['merge'](_0xf947cc[_0xb53f('0x40')],{'$or':_[_0xb53f('0x31')](_0xf947cc[_0xb53f('0x3b')],function(_0x2e0d53){var _0x177e74={};_0x177e74[_0x2e0d53]={'$like':'%'+_0x59faef[_0xb53f('0x36')][_0xb53f('0x42')]+'%'};return _0x177e74;})});}_0xf947cc=_['merge']({},_0xf947cc,_0x59faef['options']);return db[_0xb53f('0x63')][_0xb53f('0x24')]({'where':_0xf947cc['where']})[_0xb53f('0x2b')](function(_0xce3fb8){_0xbc14d6[_0xb53f('0x24')]=_0xce3fb8;if(_0x59faef[_0xb53f('0x36')]['includeAll']){_0xf947cc[_0xb53f('0x46')]=[{'all':!![]}];}return db['CmHopperHistory'][_0xb53f('0x47')](_0xf947cc);})[_0xb53f('0x2b')](function(_0x47cc3d){_0xbc14d6['rows']=_0x47cc3d;return _0xbc14d6;});}})[_0xb53f('0x2b')](respondWithFilteredResult(_0x4f17ad,_0xf947cc))[_0xb53f('0x49')](handleError(_0x4f17ad,null));};exports['getHopperFinals']=function(_0x516c37,_0x3d7f03,_0x5ef47f){var _0x1e56f4={'raw':!![],'where':{}};var _0x8f4185={};var _0x1feaed={'count':0x0,'rows':[]};return db['Campaign'][_0xb53f('0x5f')]({'where':{'id':_0x516c37[_0xb53f('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3d7f03,null))[_0xb53f('0x2b')](function(_0x2caa2d){if(_0x2caa2d){_0x8f4185['model']=_[_0xb53f('0x37')](db[_0xb53f('0x64')][_0xb53f('0x4c')]);_0x8f4185[_0xb53f('0x36')]=_['keys'](_0x516c37[_0xb53f('0x36')]);_0x8f4185[_0xb53f('0x38')]=_[_0xb53f('0x39')](_0x8f4185[_0xb53f('0x35')],_0x8f4185[_0xb53f('0x36')]);_0x1e56f4[_0xb53f('0x3b')]=_['intersection'](_0x8f4185[_0xb53f('0x35')],qs['fields'](_0x516c37[_0xb53f('0x36')][_0xb53f('0x3a')]));_0x1e56f4['attributes']=_0x1e56f4[_0xb53f('0x3b')]['length']?_0x1e56f4[_0xb53f('0x3b')]:_0x8f4185[_0xb53f('0x35')];if(!_0x516c37[_0xb53f('0x36')][_0xb53f('0x3c')](_0xb53f('0x3d'))){_0x1e56f4[_0xb53f('0x23')]=qs[_0xb53f('0x23')](_0x516c37[_0xb53f('0x36')][_0xb53f('0x23')]);_0x1e56f4[_0xb53f('0x21')]=qs['offset'](_0x516c37['query'][_0xb53f('0x21')]);}_0x1e56f4['order']=qs[_0xb53f('0x3f')](_0x516c37[_0xb53f('0x36')]['sort']);_0x1e56f4[_0xb53f('0x40')]=qs['filters'](_[_0xb53f('0x41')](_0x516c37['query'],_0x8f4185[_0xb53f('0x38')]));_0x1e56f4[_0xb53f('0x40')][_0xb53f('0x61')]=_0x2caa2d['id'];if(_0x516c37[_0xb53f('0x36')][_0xb53f('0x42')]){_0x1e56f4[_0xb53f('0x40')]=_['merge'](_0x1e56f4[_0xb53f('0x40')],{'$or':_[_0xb53f('0x31')](_0x1e56f4[_0xb53f('0x3b')],function(_0x4c9475){var _0x2d483e={};_0x2d483e[_0x4c9475]={'$like':'%'+_0x516c37[_0xb53f('0x36')]['filter']+'%'};return _0x2d483e;})});}_0x1e56f4=_['merge']({},_0x1e56f4,_0x516c37[_0xb53f('0x44')]);return db[_0xb53f('0x64')]['count']({'where':_0x1e56f4[_0xb53f('0x40')]})[_0xb53f('0x2b')](function(_0x57188e){_0x1feaed[_0xb53f('0x24')]=_0x57188e;if(_0x516c37[_0xb53f('0x36')][_0xb53f('0x45')]){_0x1e56f4[_0xb53f('0x46')]=[{'all':!![]}];}return db[_0xb53f('0x64')][_0xb53f('0x47')](_0x1e56f4);})[_0xb53f('0x2b')](function(_0x11ba83){_0x1feaed['rows']=_0x11ba83;return _0x1feaed;});}})['then'](respondWithFilteredResult(_0x3d7f03,_0x1e56f4))[_0xb53f('0x49')](handleError(_0x3d7f03,null));};exports[_0xb53f('0x65')]=function(_0x55eef6,_0x4849ba,_0x25c979){var _0x3c2627={'raw':!![],'where':{}};var _0x52892a={};var _0x22ac6d={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x55eef6[_0xb53f('0x4b')]['id']}})[_0xb53f('0x2b')](handleEntityNotFound(_0x4849ba,null))[_0xb53f('0x2b')](function(_0x182bd2){if(_0x182bd2){_0x52892a['model']=_['keys'](db[_0xb53f('0x66')]['rawAttributes']);_0x52892a[_0xb53f('0x36')]=_['keys'](_0x55eef6[_0xb53f('0x36')]);_0x52892a['filters']=_[_0xb53f('0x39')](_0x52892a[_0xb53f('0x35')],_0x52892a[_0xb53f('0x36')]);_0x3c2627[_0xb53f('0x3b')]=_[_0xb53f('0x39')](_0x52892a[_0xb53f('0x35')],qs['fields'](_0x55eef6['query'][_0xb53f('0x3a')]));_0x3c2627[_0xb53f('0x3b')]=_0x3c2627[_0xb53f('0x3b')][_0xb53f('0x4d')]?_0x3c2627[_0xb53f('0x3b')]:_0x52892a[_0xb53f('0x35')];if(!_0x55eef6['query']['hasOwnProperty'](_0xb53f('0x3d'))){_0x3c2627[_0xb53f('0x23')]=qs['limit'](_0x55eef6[_0xb53f('0x36')][_0xb53f('0x23')]);_0x3c2627[_0xb53f('0x21')]=qs[_0xb53f('0x21')](_0x55eef6['query'][_0xb53f('0x21')]);}_0x3c2627[_0xb53f('0x3e')]=qs[_0xb53f('0x3f')](_0x55eef6[_0xb53f('0x36')][_0xb53f('0x3f')]);_0x3c2627[_0xb53f('0x40')]=qs[_0xb53f('0x38')](_[_0xb53f('0x41')](_0x55eef6[_0xb53f('0x36')],_0x52892a[_0xb53f('0x38')]));_0x3c2627[_0xb53f('0x40')][_0xb53f('0x61')]=_0x182bd2['id'];if(_0x55eef6['query'][_0xb53f('0x42')]){_0x3c2627['where']=_['merge'](_0x3c2627[_0xb53f('0x40')],{'$or':_['map'](_0x3c2627[_0xb53f('0x3b')],function(_0x5d1924){var _0x557f6c={};_0x557f6c[_0x5d1924]={'$like':'%'+_0x55eef6[_0xb53f('0x36')][_0xb53f('0x42')]+'%'};return _0x557f6c;})});}_0x3c2627=_['merge']({},_0x3c2627,_0x55eef6[_0xb53f('0x44')]);return db[_0xb53f('0x66')][_0xb53f('0x24')]({'where':_0x3c2627[_0xb53f('0x40')]})[_0xb53f('0x2b')](function(_0x7319f6){_0x22ac6d[_0xb53f('0x24')]=_0x7319f6;if(_0x55eef6[_0xb53f('0x36')][_0xb53f('0x45')]){_0x3c2627[_0xb53f('0x46')]=[{'all':!![]}];}return db[_0xb53f('0x66')][_0xb53f('0x47')](_0x3c2627);})['then'](function(_0x4048b0){_0x22ac6d[_0xb53f('0x48')]=_0x4048b0;return _0x22ac6d;});}})[_0xb53f('0x2b')](respondWithFilteredResult(_0x4849ba,_0x3c2627))[_0xb53f('0x49')](handleError(_0x4849ba,null));};exports[_0xb53f('0x67')]=function(_0x49706d,_0x1aae49,_0x3ac2ba){var _0x1edd75={};var _0x431b70={};var _0x50672e;var _0x43036c;return db['Campaign'][_0xb53f('0x5f')]({'where':{'id':_0x49706d[_0xb53f('0x4b')]['id']}})[_0xb53f('0x2b')](handleEntityNotFound(_0x1aae49,null))['then'](function(_0xc7e389){if(_0xc7e389){_0x50672e=_0xc7e389;_0x431b70[_0xb53f('0x35')]=_[_0xb53f('0x37')](db[_0xb53f('0x68')][_0xb53f('0x4c')]);_0x431b70[_0xb53f('0x36')]=_[_0xb53f('0x37')](_0x49706d[_0xb53f('0x36')]);_0x431b70[_0xb53f('0x38')]=_[_0xb53f('0x39')](_0x431b70[_0xb53f('0x35')],_0x431b70[_0xb53f('0x36')]);_0x1edd75[_0xb53f('0x3b')]=_[_0xb53f('0x39')](_0x431b70[_0xb53f('0x35')],qs[_0xb53f('0x3a')](_0x49706d['query']['fields']));_0x1edd75[_0xb53f('0x3b')]=_0x1edd75['attributes'][_0xb53f('0x4d')]?_0x1edd75[_0xb53f('0x3b')]:_0x431b70[_0xb53f('0x35')];_0x1edd75[_0xb53f('0x3e')]=qs[_0xb53f('0x3f')](_0x49706d['query'][_0xb53f('0x3f')]);_0x1edd75[_0xb53f('0x40')]=qs[_0xb53f('0x38')](_['pick'](_0x49706d[_0xb53f('0x36')],_0x431b70[_0xb53f('0x38')]));if(_0x49706d[_0xb53f('0x36')][_0xb53f('0x42')]){_0x1edd75[_0xb53f('0x40')]=_[_0xb53f('0x43')](_0x1edd75[_0xb53f('0x40')],{'$or':_[_0xb53f('0x31')](_0x1edd75['attributes'],function(_0x35d8de){var _0x155562={};_0x155562[_0x35d8de]={'$like':'%'+_0x49706d['query']['filter']+'%'};return _0x155562;})});}_0x1edd75=_[_0xb53f('0x43')]({},_0x1edd75,_0x49706d['options']);return _0x50672e[_0xb53f('0x67')](_0x1edd75);}})[_0xb53f('0x2b')](function(_0xef8012){if(_0xef8012){_0x43036c=_0xef8012[_0xb53f('0x4d')];if(!_0x49706d['query'][_0xb53f('0x3c')]('nolimit')){_0x1edd75[_0xb53f('0x23')]=qs[_0xb53f('0x23')](_0x49706d[_0xb53f('0x36')][_0xb53f('0x23')]);_0x1edd75[_0xb53f('0x21')]=qs[_0xb53f('0x21')](_0x49706d[_0xb53f('0x36')][_0xb53f('0x21')]);}return _0x50672e[_0xb53f('0x67')](_0x1edd75);}})[_0xb53f('0x2b')](function(_0x2483ad){if(_0x2483ad){return _0x2483ad?{'count':_0x43036c,'rows':_0x2483ad}:null;}})[_0xb53f('0x2b')](respondWithResult(_0x1aae49,null))['catch'](handleError(_0x1aae49,null));};exports['addLists']=function(_0x28df97,_0x28e85b,_0x18d26d){var _0x1ddb0a,_0x1e2ea7;return db[_0xb53f('0x32')][_0xb53f('0x4e')]({'where':{'id':_0x28df97['params']['id']}})[_0xb53f('0x2b')](handleEntityNotFound(_0x28e85b,null))[_0xb53f('0x2b')](function(_0x287278){if(_0x287278){_0x1e2ea7=_0x287278;return _0x287278[_0xb53f('0x69')](_0x28df97[_0xb53f('0x50')]['ids'],_[_0xb53f('0x58')](_0x28df97[_0xb53f('0x50')],[_0xb53f('0x6a'),'id'])||{});}return null;})[_0xb53f('0x6b')](function(_0x22239f){var _0x5ef379;_0x1ddb0a=_0x22239f||[];var _0x896b53=[];if(_0x22239f){for(var _0x375cb2=0x0;_0x375cb2<_0x22239f[_0xb53f('0x4d')];_0x375cb2+=0x1){var _0x5e7d67=_0x22239f[_0x375cb2][_0xb53f('0x52')]({'plain':!![]});_0x1e2ea7['dialCheckDuplicateType']=_0x28df97['body'][_0xb53f('0x6c')]?_0x28df97[_0xb53f('0x50')][_0xb53f('0x6c')]:_0x1e2ea7[_0xb53f('0x6c')];switch(_0x1e2ea7[_0xb53f('0x6c')]){case _0xb53f('0x6d'):_0x5ef379=squel[_0xb53f('0x6e')]()[_0xb53f('0x6f')](_0xb53f('0x70'))[_0xb53f('0x71')]([_0xb53f('0x72'),_0xb53f('0x73'),_0xb53f('0x74'),_0xb53f('0x75'),_0xb53f('0x61'),_0xb53f('0x5a'),'updatedAt'],squel[_0xb53f('0x76')]()['field'](_0xb53f('0x72'),_0xb53f('0x72'))[_0xb53f('0x77')](_0xb53f('0x78'),'scheduledAt')[_0xb53f('0x77')]('id',_0xb53f('0x74'))[_0xb53f('0x77')](_0x5e7d67[_0xb53f('0x79')][_0xb53f('0x7a')](),_0xb53f('0x75'))['field'](_0x28df97[_0xb53f('0x4b')]['id'][_0xb53f('0x7a')](),_0xb53f('0x61'))[_0xb53f('0x77')](_0xb53f('0x78'),_0xb53f('0x5a'))[_0xb53f('0x77')](_0xb53f('0x78'),_0xb53f('0x59'))[_0xb53f('0x7b')]('cm_contacts')[_0xb53f('0x40')](_0xb53f('0x7c'))['where'](_0xb53f('0x7d'),_0x5e7d67[_0xb53f('0x79')]['toString']())[_0xb53f('0x40')](_0xb53f('0x7e'))['where'](_0xb53f('0x7f'),squel['select']()[_0xb53f('0x77')](_0xb53f('0x80'))[_0xb53f('0x7b')](_0xb53f('0x81'))['where'](_0xb53f('0x82'),_0x28df97[_0xb53f('0x4b')]['id'][_0xb53f('0x7a')]()))[_0xb53f('0x40')]('phone\x20NOT\x20IN\x20(?)',squel[_0xb53f('0x76')]()['field'](_0xb53f('0x83'))[_0xb53f('0x7b')](_0xb53f('0x70'))[_0xb53f('0x40')]('CampaignId\x20=\x20?',_0x28df97[_0xb53f('0x4b')]['id'][_0xb53f('0x7a')]())))['toString']();break;case _0xb53f('0x84'):_0x5ef379=squel['insert']()[_0xb53f('0x6f')](_0xb53f('0x70'))[_0xb53f('0x71')]([_0xb53f('0x72'),_0xb53f('0x73'),_0xb53f('0x74'),_0xb53f('0x75'),_0xb53f('0x61'),'createdAt',_0xb53f('0x59')],squel[_0xb53f('0x76')]()[_0xb53f('0x77')](_0xb53f('0x72'),'phone')[_0xb53f('0x77')](_0xb53f('0x78'),_0xb53f('0x73'))[_0xb53f('0x77')]('id',_0xb53f('0x74'))[_0xb53f('0x77')](_0x5e7d67['CmListId'][_0xb53f('0x7a')](),_0xb53f('0x75'))['field'](_0x28df97[_0xb53f('0x4b')]['id'][_0xb53f('0x7a')](),'CampaignId')[_0xb53f('0x77')](_0xb53f('0x78'),_0xb53f('0x5a'))['field']('NOW()',_0xb53f('0x59'))[_0xb53f('0x7b')]('cm_contacts')[_0xb53f('0x40')](_0xb53f('0x7c'))['where'](_0xb53f('0x7d'),_0x5e7d67[_0xb53f('0x79')][_0xb53f('0x7a')]())[_0xb53f('0x40')](_0xb53f('0x7e'))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0xb53f('0x76')]()['field']('COALESCE(phone,\x27\x27)')[_0xb53f('0x7b')](_0xb53f('0x70'))['where'](_0xb53f('0x82'),_0x28df97[_0xb53f('0x4b')]['id'][_0xb53f('0x7a')]())))['toString']();break;default:_0x5ef379=squel['insert']()[_0xb53f('0x6f')](_0xb53f('0x70'))['fromQuery']([_0xb53f('0x72'),_0xb53f('0x73'),_0xb53f('0x74'),_0xb53f('0x75'),_0xb53f('0x61'),_0xb53f('0x5a'),_0xb53f('0x59')],squel[_0xb53f('0x76')]()[_0xb53f('0x77')](_0xb53f('0x72'),'phone')['field'](_0xb53f('0x78'),_0xb53f('0x73'))[_0xb53f('0x77')]('id',_0xb53f('0x74'))[_0xb53f('0x77')](_0x5e7d67[_0xb53f('0x79')][_0xb53f('0x7a')](),_0xb53f('0x75'))[_0xb53f('0x77')](_0x28df97[_0xb53f('0x4b')]['id'][_0xb53f('0x7a')](),_0xb53f('0x61'))[_0xb53f('0x77')](_0xb53f('0x78'),_0xb53f('0x5a'))[_0xb53f('0x77')](_0xb53f('0x78'),_0xb53f('0x59'))['from'](_0xb53f('0x85'))[_0xb53f('0x40')](_0xb53f('0x7c'))[_0xb53f('0x40')]('ListId\x20=\x20?',_0x5e7d67[_0xb53f('0x79')][_0xb53f('0x7a')]())[_0xb53f('0x40')](_0xb53f('0x7e')))[_0xb53f('0x7a')]();}_0x896b53[_0xb53f('0x86')](db[_0xb53f('0x87')][_0xb53f('0x36')](_0x5ef379));}return BPromise['all'](_0x896b53);}})['then'](function(){return _0x1ddb0a;})[_0xb53f('0x2b')](respondWithResult(_0x28e85b,null))['catch'](handleError(_0x28e85b,null));};exports[_0xb53f('0x88')]=function(_0x544144,_0xd4cfd2,_0x4f7e43){return db[_0xb53f('0x32')][_0xb53f('0x4e')]({'where':{'id':_0x544144[_0xb53f('0x4b')]['id']}})[_0xb53f('0x2b')](handleEntityNotFound(_0xd4cfd2,null))['then'](function(_0x2460c7){if(_0x2460c7){return _0x2460c7['removeLists'](_0x544144[_0xb53f('0x36')][_0xb53f('0x6a')]);}})[_0xb53f('0x2b')](function(_0x41ff7d){if(_0x41ff7d){return db[_0xb53f('0x60')]['destroy']({'where':{'ListId':_0x544144['query']['ids'],'CampaignId':_0x544144[_0xb53f('0x4b')]['id']}})[_0xb53f('0x2b')](function(){return _0x41ff7d;});}})['then'](respondWithStatusCode(_0xd4cfd2,null))['catch'](handleError(_0xd4cfd2,null));};exports[_0xb53f('0x89')]=function(_0x35c752,_0x8e0bdf,_0x1d6847){var _0x3b4dac={};var _0x1ca6fe={};var _0x44fbb4;var _0x34acb6;return db[_0xb53f('0x32')]['findOne']({'where':{'id':_0x35c752[_0xb53f('0x4b')]['id']}})['then'](handleEntityNotFound(_0x8e0bdf,null))[_0xb53f('0x2b')](function(_0x42f5ce){if(_0x42f5ce){_0x44fbb4=_0x42f5ce;_0x1ca6fe[_0xb53f('0x35')]=_[_0xb53f('0x37')](db[_0xb53f('0x68')][_0xb53f('0x4c')]);_0x1ca6fe['query']=_['keys'](_0x35c752[_0xb53f('0x36')]);_0x1ca6fe['filters']=_[_0xb53f('0x39')](_0x1ca6fe[_0xb53f('0x35')],_0x1ca6fe['query']);_0x3b4dac[_0xb53f('0x3b')]=_['intersection'](_0x1ca6fe[_0xb53f('0x35')],qs[_0xb53f('0x3a')](_0x35c752[_0xb53f('0x36')][_0xb53f('0x3a')]));_0x3b4dac['attributes']=_0x3b4dac[_0xb53f('0x3b')][_0xb53f('0x4d')]?_0x3b4dac[_0xb53f('0x3b')]:_0x1ca6fe['model'];_0x3b4dac['order']=qs[_0xb53f('0x3f')](_0x35c752[_0xb53f('0x36')]['sort']);_0x3b4dac['where']=qs[_0xb53f('0x38')](_['pick'](_0x35c752[_0xb53f('0x36')],_0x1ca6fe[_0xb53f('0x38')]));if(_0x35c752[_0xb53f('0x36')][_0xb53f('0x42')]){_0x3b4dac['where']=_[_0xb53f('0x43')](_0x3b4dac[_0xb53f('0x40')],{'$or':_[_0xb53f('0x31')](_0x3b4dac[_0xb53f('0x3b')],function(_0x2497e3){var _0x1052d5={};_0x1052d5[_0x2497e3]={'$like':'%'+_0x35c752[_0xb53f('0x36')]['filter']+'%'};return _0x1052d5;})});}_0x3b4dac=_[_0xb53f('0x43')]({},_0x3b4dac,_0x35c752['options']);return _0x44fbb4[_0xb53f('0x89')](_0x3b4dac);}})['then'](function(_0xa95323){if(_0xa95323){_0x34acb6=_0xa95323[_0xb53f('0x4d')];if(!_0x35c752[_0xb53f('0x36')]['hasOwnProperty'](_0xb53f('0x3d'))){_0x3b4dac[_0xb53f('0x23')]=qs[_0xb53f('0x23')](_0x35c752['query']['limit']);_0x3b4dac[_0xb53f('0x21')]=qs[_0xb53f('0x21')](_0x35c752[_0xb53f('0x36')][_0xb53f('0x21')]);}return _0x44fbb4[_0xb53f('0x89')](_0x3b4dac);}})['then'](function(_0x378ace){if(_0x378ace){return _0x378ace?{'count':_0x34acb6,'rows':_0x378ace}:null;}})['then'](respondWithResult(_0x8e0bdf,null))[_0xb53f('0x49')](handleError(_0x8e0bdf,null));};exports[_0xb53f('0x8a')]=function(_0x3e88c3,_0x2cc85f,_0x59b615){var _0x1ab7eb,_0x3b91ce;return db[_0xb53f('0x32')][_0xb53f('0x4e')]({'where':{'id':_0x3e88c3[_0xb53f('0x4b')]['id']}})[_0xb53f('0x2b')](handleEntityNotFound(_0x2cc85f,null))['then'](function(_0x133c47){if(_0x133c47){_0x3b91ce=_0x133c47;return _0x133c47[_0xb53f('0x8a')](_0x3e88c3[_0xb53f('0x50')][_0xb53f('0x6a')],_[_0xb53f('0x58')](_0x3e88c3[_0xb53f('0x50')],[_0xb53f('0x6a'),'id'])||{});}return null;})[_0xb53f('0x6b')](function(_0x12a4e7){var _0x1838b9;_0x1ab7eb=_0x12a4e7||[];var _0x2542e4=[];if(_0x12a4e7){for(var _0x2e147c=0x0;_0x2e147c<_0x12a4e7[_0xb53f('0x4d')];_0x2e147c+=0x1){var _0x484e73=_0x12a4e7[_0x2e147c][_0xb53f('0x52')]({'plain':!![]});_0x1838b9=squel[_0xb53f('0x6e')]()[_0xb53f('0x6f')](_0xb53f('0x8b'))[_0xb53f('0x71')]([_0xb53f('0x72'),_0xb53f('0x74'),_0xb53f('0x75'),'CampaignId',_0xb53f('0x5a'),_0xb53f('0x59')],squel[_0xb53f('0x76')]()['field'](_0xb53f('0x72'),_0xb53f('0x72'))['field']('id',_0xb53f('0x74'))['field'](_0x484e73[_0xb53f('0x79')][_0xb53f('0x7a')](),_0xb53f('0x75'))[_0xb53f('0x77')](_0x3e88c3['params']['id'][_0xb53f('0x7a')](),_0xb53f('0x61'))[_0xb53f('0x77')](_0xb53f('0x78'),_0xb53f('0x5a'))[_0xb53f('0x77')](_0xb53f('0x78'),_0xb53f('0x59'))[_0xb53f('0x7b')](_0xb53f('0x85'))[_0xb53f('0x40')](_0xb53f('0x7c'))[_0xb53f('0x40')](_0xb53f('0x7d'),_0x484e73[_0xb53f('0x79')]['toString']())['where']('phone\x20IS\x20NOT\x20NULL'))[_0xb53f('0x7a')]();_0x2542e4['push'](db[_0xb53f('0x87')][_0xb53f('0x36')](_0x1838b9));}return BPromise[_0xb53f('0x8c')](_0x2542e4);}})['then'](function(){return _0x1ab7eb;})['then'](respondWithResult(_0x2cc85f,null))['catch'](handleError(_0x2cc85f,null));};exports[_0xb53f('0x8d')]=function(_0x2c9787,_0x108c83,_0x494538){return db[_0xb53f('0x32')][_0xb53f('0x4e')]({'where':{'id':_0x2c9787[_0xb53f('0x4b')]['id']}})['then'](handleEntityNotFound(_0x108c83,null))[_0xb53f('0x2b')](function(_0x4e6da9){if(_0x4e6da9){return _0x4e6da9['removeBlackLists'](_0x2c9787[_0xb53f('0x36')][_0xb53f('0x6a')]);}})[_0xb53f('0x2b')](function(_0x24e14b){if(_0x24e14b){return db[_0xb53f('0x66')]['destroy']({'where':{'ListId':_0x2c9787[_0xb53f('0x36')][_0xb53f('0x6a')],'CampaignId':_0x2c9787[_0xb53f('0x4b')]['id']}})[_0xb53f('0x2b')](function(){return _0x24e14b;});}})[_0xb53f('0x2b')](respondWithStatusCode(_0x108c83,null))[_0xb53f('0x49')](handleError(_0x108c83,null));};
\ No newline at end of file
+var _0x2e08=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','then','get','IvrCampaigns','UserProfileResource','destroy','error','name','send','index','map','Campaign','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','role','getHoppers','findOne','CampaignId','CmHopper','getHopperHistories','CmHopperHistory','hasOwnProperty','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','ids','dialCheckDuplicateType','always','insert','into','cm_hopper','phone','scheduledAt','ContactId','ListId','select','field','NOW()','CmListId','toString','from','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','fromQuery','deletedAt\x20IS\x20NULL','push','sequelize','removeLists','getBlackLists','spread','cm_hopper_black','all','removeBlackLists','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x2e08,0x186));var _0x82e0=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x2e08[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x82e0('0x0'));var zipdir=require(_0x82e0('0x1'));var jsonpatch=require(_0x82e0('0x2'));var rp=require('request-promise');var moment=require(_0x82e0('0x3'));var BPromise=require(_0x82e0('0x4'));var Mustache=require(_0x82e0('0x5'));var util=require(_0x82e0('0x6'));var path=require(_0x82e0('0x7'));var sox=require(_0x82e0('0x8'));var csv=require('to-csv');var ejs=require(_0x82e0('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x82e0('0xa'));var squel=require(_0x82e0('0xb'));var crypto=require(_0x82e0('0xc'));var jsforce=require(_0x82e0('0xd'));var deskjs=require(_0x82e0('0xe'));var toCsv=require('to-csv');var querystring=require(_0x82e0('0xf'));var Papa=require('papaparse');var Redis=require(_0x82e0('0x10'));var authService=require(_0x82e0('0x11'));var qs=require(_0x82e0('0x12'));var as=require(_0x82e0('0x13'));var hardwareService=require(_0x82e0('0x14'));var logger=require(_0x82e0('0x15'))('api');var utils=require(_0x82e0('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x82e0('0x17'))['db'];function respondWithStatusCode(_0x340ac0,_0x56a3e0){_0x56a3e0=_0x56a3e0||0xcc;return function(_0x32bafb){if(_0x32bafb){return _0x340ac0[_0x82e0('0x18')](_0x56a3e0);}return _0x340ac0[_0x82e0('0x19')](_0x56a3e0)[_0x82e0('0x1a')]();};}function respondWithResult(_0xa42e05,_0x3aefe0){_0x3aefe0=_0x3aefe0||0xc8;return function(_0x33c355){if(_0x33c355){return _0xa42e05['status'](_0x3aefe0)[_0x82e0('0x1b')](_0x33c355);}};}function respondWithFilteredResult(_0x2828bd,_0x2f50de){return function(_0x386f8f){if(_0x386f8f){var _0x37032e=typeof _0x2f50de[_0x82e0('0x1c')]===_0x82e0('0x1d')&&typeof _0x2f50de[_0x82e0('0x1e')]===_0x82e0('0x1d');var _0xfabb54=_0x386f8f[_0x82e0('0x1f')];var _0x4a59cb=_0x37032e?0x0:_0x2f50de[_0x82e0('0x1c')];var _0x3b9748=_0x37032e?_0x386f8f[_0x82e0('0x1f')]:_0x2f50de[_0x82e0('0x1c')]+_0x2f50de['limit'];var _0x5ac0c2;if(_0x3b9748>=_0xfabb54){_0x3b9748=_0xfabb54;_0x5ac0c2=0xc8;}else{_0x5ac0c2=0xce;}_0x2828bd[_0x82e0('0x19')](_0x5ac0c2);return _0x2828bd[_0x82e0('0x20')]('Content-Range',_0x4a59cb+'-'+_0x3b9748+'/'+_0xfabb54)['json'](_0x386f8f);}return null;};}function patchUpdates(_0x59a54c){return function(_0x4bf30e){try{jsonpatch[_0x82e0('0x21')](_0x4bf30e,_0x59a54c,!![]);}catch(_0x201669){return BPromise['reject'](_0x201669);}return _0x4bf30e[_0x82e0('0x22')]();};}function saveUpdates(_0x1e93e9,_0x5b3c50){return function(_0x4156d7){if(_0x4156d7){return _0x4156d7['update'](_0x1e93e9)[_0x82e0('0x23')](function(_0x5e291b){return _0x5e291b;});}return null;};}function removeEntity(_0x23111e,_0x268224){return function(_0x1b7ea1){if(_0x1b7ea1){return _0x1b7ea1['destroy']()[_0x82e0('0x23')](function(){var _0x1e7f39=_0x1b7ea1[_0x82e0('0x24')]({'plain':!![]});var _0x43649a=_0x82e0('0x25');return db[_0x82e0('0x26')][_0x82e0('0x27')]({'where':{'type':_0x43649a,'resourceId':_0x1e7f39['id']}})[_0x82e0('0x23')](function(){return _0x1b7ea1;});})[_0x82e0('0x23')](function(){_0x23111e['status'](0xcc)[_0x82e0('0x1a')]();});}};}function handleEntityNotFound(_0xa12632,_0x2a977d){return function(_0x3fcdfe){if(!_0x3fcdfe){_0xa12632[_0x82e0('0x18')](0x194);}return _0x3fcdfe;};}function handleError(_0x166795,_0x3010c8){_0x3010c8=_0x3010c8||0x1f4;return function(_0x5dfe89){logger[_0x82e0('0x28')](_0x5dfe89['stack']);if(_0x5dfe89[_0x82e0('0x29')]){delete _0x5dfe89[_0x82e0('0x29')];}_0x166795[_0x82e0('0x19')](_0x3010c8)[_0x82e0('0x2a')](_0x5dfe89);};}exports[_0x82e0('0x2b')]=function(_0x3aef91,_0x201fab){var _0x5b423c={},_0x50e03d={},_0x14f81c={'count':0x0,'rows':[]};var _0x2bec82=_[_0x82e0('0x2c')](db[_0x82e0('0x2d')]['rawAttributes'],function(_0x162a45){return{'name':_0x162a45[_0x82e0('0x2e')],'type':_0x162a45[_0x82e0('0x2f')][_0x82e0('0x30')]};});_0x50e03d[_0x82e0('0x31')]=_[_0x82e0('0x2c')](_0x2bec82,_0x82e0('0x29'));_0x50e03d[_0x82e0('0x32')]=_[_0x82e0('0x33')](_0x3aef91[_0x82e0('0x32')]);_0x50e03d[_0x82e0('0x34')]=_[_0x82e0('0x35')](_0x50e03d['model'],_0x50e03d[_0x82e0('0x32')]);_0x5b423c[_0x82e0('0x36')]=_[_0x82e0('0x35')](_0x50e03d['model'],qs[_0x82e0('0x37')](_0x3aef91[_0x82e0('0x32')]['fields']));_0x5b423c['attributes']=_0x5b423c[_0x82e0('0x36')][_0x82e0('0x38')]?_0x5b423c[_0x82e0('0x36')]:_0x50e03d['model'];if(!_0x3aef91['query']['hasOwnProperty'](_0x82e0('0x39'))){_0x5b423c[_0x82e0('0x1e')]=qs[_0x82e0('0x1e')](_0x3aef91[_0x82e0('0x32')][_0x82e0('0x1e')]);_0x5b423c['offset']=qs['offset'](_0x3aef91[_0x82e0('0x32')][_0x82e0('0x1c')]);}_0x5b423c[_0x82e0('0x3a')]=qs[_0x82e0('0x3b')](_0x3aef91[_0x82e0('0x32')][_0x82e0('0x3b')]);_0x5b423c[_0x82e0('0x3c')]=qs[_0x82e0('0x34')](_[_0x82e0('0x3d')](_0x3aef91[_0x82e0('0x32')],_0x50e03d[_0x82e0('0x34')]),_0x2bec82);if(_0x3aef91[_0x82e0('0x32')]['filter']){_0x5b423c[_0x82e0('0x3c')]=_[_0x82e0('0x3e')](_0x5b423c[_0x82e0('0x3c')],{'$or':_[_0x82e0('0x2c')](_0x2bec82,function(_0xc3ae6){if(_0xc3ae6['type']!==_0x82e0('0x3f')){var _0x529747={};_0x529747[_0xc3ae6[_0x82e0('0x29')]]={'$like':'%'+_0x3aef91[_0x82e0('0x32')][_0x82e0('0x40')]+'%'};return _0x529747;}})});}_0x5b423c=_['merge']({},_0x5b423c,_0x3aef91[_0x82e0('0x41')]);var _0x404355={'where':_0x5b423c['where']};return db[_0x82e0('0x2d')][_0x82e0('0x1f')](_0x404355)[_0x82e0('0x23')](function(_0x2b8dff){_0x14f81c['count']=_0x2b8dff;if(_0x3aef91[_0x82e0('0x32')][_0x82e0('0x42')]){_0x5b423c[_0x82e0('0x43')]=[{'all':!![]}];}return db[_0x82e0('0x2d')][_0x82e0('0x44')](_0x5b423c);})[_0x82e0('0x23')](function(_0x49e411){_0x14f81c[_0x82e0('0x45')]=_0x49e411;return _0x14f81c;})['then'](respondWithFilteredResult(_0x201fab,_0x5b423c))[_0x82e0('0x46')](handleError(_0x201fab,null));};exports[_0x82e0('0x47')]=function(_0x30407a,_0x1233fa){var _0x1e42b7={'raw':![],'where':{'id':_0x30407a[_0x82e0('0x48')]['id']}},_0x5b491e={};_0x5b491e[_0x82e0('0x31')]=_[_0x82e0('0x33')](db[_0x82e0('0x2d')][_0x82e0('0x49')]);_0x5b491e[_0x82e0('0x32')]=_[_0x82e0('0x33')](_0x30407a[_0x82e0('0x32')]);_0x5b491e[_0x82e0('0x34')]=_['intersection'](_0x5b491e['model'],_0x5b491e[_0x82e0('0x32')]);_0x1e42b7['attributes']=_[_0x82e0('0x35')](_0x5b491e['model'],qs['fields'](_0x30407a[_0x82e0('0x32')][_0x82e0('0x37')]));_0x1e42b7['attributes']=_0x1e42b7['attributes']['length']?_0x1e42b7[_0x82e0('0x36')]:_0x5b491e[_0x82e0('0x31')];if(_0x30407a['query'][_0x82e0('0x42')]){_0x1e42b7[_0x82e0('0x43')]=[{'all':!![]}];}_0x1e42b7=_[_0x82e0('0x3e')]({},_0x1e42b7,_0x30407a[_0x82e0('0x41')]);return db[_0x82e0('0x2d')]['find'](_0x1e42b7)['then'](handleEntityNotFound(_0x1233fa,null))[_0x82e0('0x23')](respondWithResult(_0x1233fa,null))[_0x82e0('0x46')](handleError(_0x1233fa,null));};exports['create']=function(_0x51d28e,_0x186513){return db[_0x82e0('0x2d')]['create'](_0x51d28e[_0x82e0('0x4a')],{})[_0x82e0('0x23')](function(_0x229d7c){var _0xc2120e=_0x51d28e[_0x82e0('0x4b')][_0x82e0('0x24')]({'plain':!![]});if(!_0xc2120e)throw new Error(_0x82e0('0x4c'));if(_0xc2120e['role']===_0x82e0('0x4b')){var _0x5ee9af=_0x229d7c[_0x82e0('0x24')]({'plain':!![]});var _0x2004c2='IvrCampaigns';return db[_0x82e0('0x4d')][_0x82e0('0x4e')]({'where':{'name':_0x2004c2,'userProfileId':_0xc2120e['userProfileId']},'raw':!![]})['then'](function(_0x5eb54b){if(_0x5eb54b&&_0x5eb54b[_0x82e0('0x4f')]===0x0){return db['UserProfileResource'][_0x82e0('0x50')]({'name':_0x5ee9af['name'],'resourceId':_0x5ee9af['id'],'type':_0x5eb54b[_0x82e0('0x29')],'sectionId':_0x5eb54b['id']},{})['then'](function(){return _0x229d7c;});}else{return _0x229d7c;}})['catch'](function(_0x241d0a){logger['error'](_0x82e0('0x51'),_0x241d0a);throw _0x241d0a;});}return _0x229d7c;})[_0x82e0('0x23')](respondWithResult(_0x186513,0xc9))[_0x82e0('0x46')](handleError(_0x186513,null));};exports[_0x82e0('0x52')]=function(_0x5b4fdd,_0x574603){var _0x2847c0={'where':{'id':_0x5b4fdd[_0x82e0('0x48')]['id']}},_0x32b262={};_0x32b262[_0x82e0('0x31')]=_['keys'](db[_0x82e0('0x2d')][_0x82e0('0x49')]);_0x2847c0[_0x82e0('0x36')]=_[_0x82e0('0x35')](_0x32b262[_0x82e0('0x31')],qs[_0x82e0('0x37')](_0x5b4fdd[_0x82e0('0x32')][_0x82e0('0x37')]));_0x2847c0[_0x82e0('0x36')]=_0x2847c0['attributes'][_0x82e0('0x38')]?_0x2847c0[_0x82e0('0x36')]:_0x32b262[_0x82e0('0x31')];if(_0x5b4fdd[_0x82e0('0x32')][_0x82e0('0x42')]){_0x2847c0['include']=[{'all':!![]}];}_0x2847c0=_[_0x82e0('0x3e')]({},_0x2847c0,_0x5b4fdd[_0x82e0('0x41')]);return db[_0x82e0('0x2d')][_0x82e0('0x4e')](_0x2847c0)[_0x82e0('0x23')](handleEntityNotFound(_0x574603,null))[_0x82e0('0x23')](function(_0x26ddb8){if(_0x26ddb8){var _0x5dcfa8=_0x26ddb8[_0x82e0('0x24')]({'plain':!![]});_0x5dcfa8=qs[_0x82e0('0x53')](_0x5dcfa8,['id',_0x82e0('0x54'),_0x82e0('0x55')]);_0x5b4fdd['body']=_['omit'](_0x5b4fdd[_0x82e0('0x4a')],['id',_0x82e0('0x54'),_0x82e0('0x55')]);return db['Campaign'][_0x82e0('0x50')](_['merge'](_0x5dcfa8,_0x5b4fdd['body']),{'include':_0x5b4fdd[_0x82e0('0x32')]['includeAll']?[{'all':!![]}]:undefined})[_0x82e0('0x23')](function(_0x390af0){var _0x4c19fc=_0x5b4fdd[_0x82e0('0x4b')][_0x82e0('0x24')]({'plain':!![]});if(!_0x4c19fc)throw new Error(_0x82e0('0x4c'));if(_0x4c19fc[_0x82e0('0x56')]===_0x82e0('0x4b')){var _0x52714b=_0x390af0[_0x82e0('0x24')]({'plain':!![]});var _0x284181='IvrCampaigns';return db[_0x82e0('0x4d')]['find']({'where':{'name':_0x284181,'userProfileId':_0x4c19fc['userProfileId']},'raw':!![]})[_0x82e0('0x23')](function(_0x487e4c){if(_0x487e4c&&_0x487e4c['autoAssociation']===0x0){return db[_0x82e0('0x26')][_0x82e0('0x50')]({'name':_0x52714b[_0x82e0('0x29')],'resourceId':_0x52714b['id'],'type':_0x487e4c['name'],'sectionId':_0x487e4c['id']},{})['then'](function(){return _0x390af0;});}else{return _0x390af0;}})[_0x82e0('0x46')](function(_0x289e28){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x289e28);throw _0x289e28;});}return _0x390af0;});}})[_0x82e0('0x23')](respondWithResult(_0x574603,0xc9))[_0x82e0('0x46')](handleError(_0x574603,null));};exports['update']=function(_0x280029,_0x48fda4){if(_0x280029[_0x82e0('0x4a')]['id']){delete _0x280029['body']['id'];}return db[_0x82e0('0x2d')]['find']({'where':{'id':_0x280029[_0x82e0('0x48')]['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x48fda4,null))[_0x82e0('0x23')](saveUpdates(_0x280029[_0x82e0('0x4a')],null))[_0x82e0('0x23')](respondWithResult(_0x48fda4,null))[_0x82e0('0x46')](handleError(_0x48fda4,null));};exports[_0x82e0('0x27')]=function(_0x46fb3d,_0x39a9e3){return db['Campaign'][_0x82e0('0x4e')]({'where':{'id':_0x46fb3d[_0x82e0('0x48')]['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x39a9e3,null))[_0x82e0('0x23')](removeEntity(_0x39a9e3,null))[_0x82e0('0x46')](handleError(_0x39a9e3,null));};exports[_0x82e0('0x57')]=function(_0x4d5764,_0x1e08b4,_0x5d8b26){var _0x296a59={'raw':!![],'where':{}};var _0x48d155={};var _0x559588={'count':0x0,'rows':[]};return db[_0x82e0('0x2d')][_0x82e0('0x58')]({'where':{'id':_0x4d5764['params']['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x1e08b4,null))[_0x82e0('0x23')](function(_0x1470b6){if(_0x1470b6){_0x48d155[_0x82e0('0x31')]=_[_0x82e0('0x33')](db['CmHopper']['rawAttributes']);_0x48d155[_0x82e0('0x32')]=_[_0x82e0('0x33')](_0x4d5764[_0x82e0('0x32')]);_0x48d155['filters']=_['intersection'](_0x48d155[_0x82e0('0x31')],_0x48d155[_0x82e0('0x32')]);_0x296a59['attributes']=_['intersection'](_0x48d155['model'],qs[_0x82e0('0x37')](_0x4d5764[_0x82e0('0x32')]['fields']));_0x296a59[_0x82e0('0x36')]=_0x296a59[_0x82e0('0x36')][_0x82e0('0x38')]?_0x296a59[_0x82e0('0x36')]:_0x48d155['model'];if(!_0x4d5764[_0x82e0('0x32')]['hasOwnProperty'](_0x82e0('0x39'))){_0x296a59[_0x82e0('0x1e')]=qs[_0x82e0('0x1e')](_0x4d5764[_0x82e0('0x32')]['limit']);_0x296a59[_0x82e0('0x1c')]=qs[_0x82e0('0x1c')](_0x4d5764[_0x82e0('0x32')][_0x82e0('0x1c')]);}_0x296a59['order']=qs[_0x82e0('0x3b')](_0x4d5764[_0x82e0('0x32')][_0x82e0('0x3b')]);_0x296a59[_0x82e0('0x3c')]=qs[_0x82e0('0x34')](_[_0x82e0('0x3d')](_0x4d5764[_0x82e0('0x32')],_0x48d155[_0x82e0('0x34')]));_0x296a59[_0x82e0('0x3c')][_0x82e0('0x59')]=_0x1470b6['id'];if(_0x4d5764[_0x82e0('0x32')]['filter']){_0x296a59[_0x82e0('0x3c')]=_[_0x82e0('0x3e')](_0x296a59['where'],{'$or':_[_0x82e0('0x2c')](_0x296a59['attributes'],function(_0x2992ad){var _0x1115ab={};_0x1115ab[_0x2992ad]={'$like':'%'+_0x4d5764[_0x82e0('0x32')][_0x82e0('0x40')]+'%'};return _0x1115ab;})});}_0x296a59=_[_0x82e0('0x3e')]({},_0x296a59,_0x4d5764[_0x82e0('0x41')]);return db[_0x82e0('0x5a')][_0x82e0('0x1f')]({'where':_0x296a59[_0x82e0('0x3c')]})[_0x82e0('0x23')](function(_0x5e9f55){_0x559588[_0x82e0('0x1f')]=_0x5e9f55;if(_0x4d5764[_0x82e0('0x32')][_0x82e0('0x42')]){_0x296a59[_0x82e0('0x43')]=[{'all':!![]}];}return db[_0x82e0('0x5a')][_0x82e0('0x44')](_0x296a59);})['then'](function(_0x1ef56d){_0x559588[_0x82e0('0x45')]=_0x1ef56d;return _0x559588;});}})['then'](respondWithFilteredResult(_0x1e08b4,_0x296a59))[_0x82e0('0x46')](handleError(_0x1e08b4,null));};exports[_0x82e0('0x5b')]=function(_0x4d2823,_0x4ff0cc,_0x51ac5c){var _0x15e306={'raw':!![],'where':{}};var _0xa8d5b3={};var _0x170b9c={'count':0x0,'rows':[]};return db[_0x82e0('0x2d')]['findOne']({'where':{'id':_0x4d2823[_0x82e0('0x48')]['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x4ff0cc,null))[_0x82e0('0x23')](function(_0x3c6b5e){if(_0x3c6b5e){_0xa8d5b3[_0x82e0('0x31')]=_[_0x82e0('0x33')](db[_0x82e0('0x5c')][_0x82e0('0x49')]);_0xa8d5b3[_0x82e0('0x32')]=_['keys'](_0x4d2823[_0x82e0('0x32')]);_0xa8d5b3['filters']=_[_0x82e0('0x35')](_0xa8d5b3['model'],_0xa8d5b3[_0x82e0('0x32')]);_0x15e306[_0x82e0('0x36')]=_['intersection'](_0xa8d5b3['model'],qs['fields'](_0x4d2823[_0x82e0('0x32')]['fields']));_0x15e306[_0x82e0('0x36')]=_0x15e306['attributes'][_0x82e0('0x38')]?_0x15e306[_0x82e0('0x36')]:_0xa8d5b3[_0x82e0('0x31')];if(!_0x4d2823[_0x82e0('0x32')][_0x82e0('0x5d')]('nolimit')){_0x15e306[_0x82e0('0x1e')]=qs[_0x82e0('0x1e')](_0x4d2823['query'][_0x82e0('0x1e')]);_0x15e306[_0x82e0('0x1c')]=qs['offset'](_0x4d2823['query'][_0x82e0('0x1c')]);}_0x15e306['order']=qs[_0x82e0('0x3b')](_0x4d2823['query'][_0x82e0('0x3b')]);_0x15e306['where']=qs['filters'](_[_0x82e0('0x3d')](_0x4d2823[_0x82e0('0x32')],_0xa8d5b3['filters']));_0x15e306['where']['CampaignId']=_0x3c6b5e['id'];if(_0x4d2823[_0x82e0('0x32')][_0x82e0('0x40')]){_0x15e306[_0x82e0('0x3c')]=_[_0x82e0('0x3e')](_0x15e306['where'],{'$or':_['map'](_0x15e306[_0x82e0('0x36')],function(_0x548a40){var _0x53f773={};_0x53f773[_0x548a40]={'$like':'%'+_0x4d2823[_0x82e0('0x32')][_0x82e0('0x40')]+'%'};return _0x53f773;})});}_0x15e306=_[_0x82e0('0x3e')]({},_0x15e306,_0x4d2823['options']);return db['CmHopperHistory']['count']({'where':_0x15e306[_0x82e0('0x3c')]})['then'](function(_0x5b03d5){_0x170b9c[_0x82e0('0x1f')]=_0x5b03d5;if(_0x4d2823['query'][_0x82e0('0x42')]){_0x15e306['include']=[{'all':!![]}];}return db[_0x82e0('0x5c')][_0x82e0('0x44')](_0x15e306);})['then'](function(_0x3112d2){_0x170b9c[_0x82e0('0x45')]=_0x3112d2;return _0x170b9c;});}})['then'](respondWithFilteredResult(_0x4ff0cc,_0x15e306))[_0x82e0('0x46')](handleError(_0x4ff0cc,null));};exports[_0x82e0('0x5e')]=function(_0xca77e,_0x2e768e,_0x40a042){var _0x3e6687={'raw':!![],'where':{}};var _0x5aea85={};var _0x7e799={'count':0x0,'rows':[]};return db[_0x82e0('0x2d')][_0x82e0('0x58')]({'where':{'id':_0xca77e[_0x82e0('0x48')]['id']}})['then'](handleEntityNotFound(_0x2e768e,null))['then'](function(_0x1f20d4){if(_0x1f20d4){_0x5aea85[_0x82e0('0x31')]=_[_0x82e0('0x33')](db['CmHopperFinal'][_0x82e0('0x49')]);_0x5aea85[_0x82e0('0x32')]=_[_0x82e0('0x33')](_0xca77e[_0x82e0('0x32')]);_0x5aea85[_0x82e0('0x34')]=_[_0x82e0('0x35')](_0x5aea85[_0x82e0('0x31')],_0x5aea85[_0x82e0('0x32')]);_0x3e6687[_0x82e0('0x36')]=_[_0x82e0('0x35')](_0x5aea85[_0x82e0('0x31')],qs[_0x82e0('0x37')](_0xca77e[_0x82e0('0x32')][_0x82e0('0x37')]));_0x3e6687['attributes']=_0x3e6687[_0x82e0('0x36')]['length']?_0x3e6687[_0x82e0('0x36')]:_0x5aea85[_0x82e0('0x31')];if(!_0xca77e['query'][_0x82e0('0x5d')](_0x82e0('0x39'))){_0x3e6687['limit']=qs[_0x82e0('0x1e')](_0xca77e[_0x82e0('0x32')][_0x82e0('0x1e')]);_0x3e6687[_0x82e0('0x1c')]=qs[_0x82e0('0x1c')](_0xca77e['query'][_0x82e0('0x1c')]);}_0x3e6687[_0x82e0('0x3a')]=qs[_0x82e0('0x3b')](_0xca77e['query'][_0x82e0('0x3b')]);_0x3e6687[_0x82e0('0x3c')]=qs['filters'](_[_0x82e0('0x3d')](_0xca77e[_0x82e0('0x32')],_0x5aea85[_0x82e0('0x34')]));_0x3e6687[_0x82e0('0x3c')][_0x82e0('0x59')]=_0x1f20d4['id'];if(_0xca77e[_0x82e0('0x32')][_0x82e0('0x40')]){_0x3e6687[_0x82e0('0x3c')]=_[_0x82e0('0x3e')](_0x3e6687[_0x82e0('0x3c')],{'$or':_[_0x82e0('0x2c')](_0x3e6687[_0x82e0('0x36')],function(_0x84712f){var _0xf659b5={};_0xf659b5[_0x84712f]={'$like':'%'+_0xca77e[_0x82e0('0x32')]['filter']+'%'};return _0xf659b5;})});}_0x3e6687=_[_0x82e0('0x3e')]({},_0x3e6687,_0xca77e['options']);return db[_0x82e0('0x5f')][_0x82e0('0x1f')]({'where':_0x3e6687['where']})[_0x82e0('0x23')](function(_0x41834f){_0x7e799[_0x82e0('0x1f')]=_0x41834f;if(_0xca77e[_0x82e0('0x32')]['includeAll']){_0x3e6687[_0x82e0('0x43')]=[{'all':!![]}];}return db[_0x82e0('0x5f')][_0x82e0('0x44')](_0x3e6687);})[_0x82e0('0x23')](function(_0x3f4f15){_0x7e799['rows']=_0x3f4f15;return _0x7e799;});}})['then'](respondWithFilteredResult(_0x2e768e,_0x3e6687))[_0x82e0('0x46')](handleError(_0x2e768e,null));};exports[_0x82e0('0x60')]=function(_0x3c3613,_0x21ce07,_0x5183a8){var _0x56675a={'raw':!![],'where':{}};var _0x1c456e={};var _0x22dfe7={'count':0x0,'rows':[]};return db[_0x82e0('0x2d')][_0x82e0('0x58')]({'where':{'id':_0x3c3613[_0x82e0('0x48')]['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x21ce07,null))[_0x82e0('0x23')](function(_0x35823a){if(_0x35823a){_0x1c456e[_0x82e0('0x31')]=_[_0x82e0('0x33')](db['CmHopperBlack']['rawAttributes']);_0x1c456e[_0x82e0('0x32')]=_[_0x82e0('0x33')](_0x3c3613[_0x82e0('0x32')]);_0x1c456e[_0x82e0('0x34')]=_[_0x82e0('0x35')](_0x1c456e[_0x82e0('0x31')],_0x1c456e[_0x82e0('0x32')]);_0x56675a[_0x82e0('0x36')]=_[_0x82e0('0x35')](_0x1c456e['model'],qs[_0x82e0('0x37')](_0x3c3613['query'][_0x82e0('0x37')]));_0x56675a[_0x82e0('0x36')]=_0x56675a['attributes'][_0x82e0('0x38')]?_0x56675a['attributes']:_0x1c456e['model'];if(!_0x3c3613['query'][_0x82e0('0x5d')](_0x82e0('0x39'))){_0x56675a[_0x82e0('0x1e')]=qs[_0x82e0('0x1e')](_0x3c3613[_0x82e0('0x32')][_0x82e0('0x1e')]);_0x56675a[_0x82e0('0x1c')]=qs[_0x82e0('0x1c')](_0x3c3613['query']['offset']);}_0x56675a[_0x82e0('0x3a')]=qs[_0x82e0('0x3b')](_0x3c3613[_0x82e0('0x32')][_0x82e0('0x3b')]);_0x56675a[_0x82e0('0x3c')]=qs[_0x82e0('0x34')](_[_0x82e0('0x3d')](_0x3c3613[_0x82e0('0x32')],_0x1c456e[_0x82e0('0x34')]));_0x56675a[_0x82e0('0x3c')]['CampaignId']=_0x35823a['id'];if(_0x3c3613[_0x82e0('0x32')][_0x82e0('0x40')]){_0x56675a[_0x82e0('0x3c')]=_[_0x82e0('0x3e')](_0x56675a['where'],{'$or':_[_0x82e0('0x2c')](_0x56675a['attributes'],function(_0x3f6cb2){var _0x27549f={};_0x27549f[_0x3f6cb2]={'$like':'%'+_0x3c3613[_0x82e0('0x32')][_0x82e0('0x40')]+'%'};return _0x27549f;})});}_0x56675a=_[_0x82e0('0x3e')]({},_0x56675a,_0x3c3613[_0x82e0('0x41')]);return db['CmHopperBlack'][_0x82e0('0x1f')]({'where':_0x56675a[_0x82e0('0x3c')]})[_0x82e0('0x23')](function(_0x357827){_0x22dfe7[_0x82e0('0x1f')]=_0x357827;if(_0x3c3613[_0x82e0('0x32')][_0x82e0('0x42')]){_0x56675a[_0x82e0('0x43')]=[{'all':!![]}];}return db[_0x82e0('0x61')][_0x82e0('0x44')](_0x56675a);})[_0x82e0('0x23')](function(_0x1887c6){_0x22dfe7[_0x82e0('0x45')]=_0x1887c6;return _0x22dfe7;});}})[_0x82e0('0x23')](respondWithFilteredResult(_0x21ce07,_0x56675a))[_0x82e0('0x46')](handleError(_0x21ce07,null));};exports[_0x82e0('0x62')]=function(_0x1a059c,_0x534fc4,_0x1b9faa){var _0x40c45e={};var _0x5e4927={};var _0xa8bfc4;var _0x46f471;return db[_0x82e0('0x2d')][_0x82e0('0x58')]({'where':{'id':_0x1a059c[_0x82e0('0x48')]['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x534fc4,null))[_0x82e0('0x23')](function(_0x2fe674){if(_0x2fe674){_0xa8bfc4=_0x2fe674;_0x5e4927[_0x82e0('0x31')]=_['keys'](db[_0x82e0('0x63')]['rawAttributes']);_0x5e4927[_0x82e0('0x32')]=_[_0x82e0('0x33')](_0x1a059c[_0x82e0('0x32')]);_0x5e4927['filters']=_[_0x82e0('0x35')](_0x5e4927[_0x82e0('0x31')],_0x5e4927[_0x82e0('0x32')]);_0x40c45e[_0x82e0('0x36')]=_[_0x82e0('0x35')](_0x5e4927[_0x82e0('0x31')],qs[_0x82e0('0x37')](_0x1a059c[_0x82e0('0x32')][_0x82e0('0x37')]));_0x40c45e[_0x82e0('0x36')]=_0x40c45e['attributes']['length']?_0x40c45e['attributes']:_0x5e4927['model'];_0x40c45e[_0x82e0('0x3a')]=qs[_0x82e0('0x3b')](_0x1a059c[_0x82e0('0x32')][_0x82e0('0x3b')]);_0x40c45e[_0x82e0('0x3c')]=qs[_0x82e0('0x34')](_['pick'](_0x1a059c[_0x82e0('0x32')],_0x5e4927[_0x82e0('0x34')]));if(_0x1a059c[_0x82e0('0x32')]['filter']){_0x40c45e[_0x82e0('0x3c')]=_[_0x82e0('0x3e')](_0x40c45e[_0x82e0('0x3c')],{'$or':_[_0x82e0('0x2c')](_0x40c45e[_0x82e0('0x36')],function(_0x34ff9d){var _0x210455={};_0x210455[_0x34ff9d]={'$like':'%'+_0x1a059c[_0x82e0('0x32')][_0x82e0('0x40')]+'%'};return _0x210455;})});}_0x40c45e=_[_0x82e0('0x3e')]({},_0x40c45e,_0x1a059c['options']);return _0xa8bfc4['getLists'](_0x40c45e);}})[_0x82e0('0x23')](function(_0x12a278){if(_0x12a278){_0x46f471=_0x12a278[_0x82e0('0x38')];if(!_0x1a059c[_0x82e0('0x32')][_0x82e0('0x5d')](_0x82e0('0x39'))){_0x40c45e[_0x82e0('0x1e')]=qs[_0x82e0('0x1e')](_0x1a059c['query'][_0x82e0('0x1e')]);_0x40c45e[_0x82e0('0x1c')]=qs[_0x82e0('0x1c')](_0x1a059c[_0x82e0('0x32')]['offset']);}return _0xa8bfc4[_0x82e0('0x62')](_0x40c45e);}})[_0x82e0('0x23')](function(_0x156d08){if(_0x156d08){return _0x156d08?{'count':_0x46f471,'rows':_0x156d08}:null;}})[_0x82e0('0x23')](respondWithResult(_0x534fc4,null))[_0x82e0('0x46')](handleError(_0x534fc4,null));};exports[_0x82e0('0x64')]=function(_0x2f40cb,_0x275eab,_0x42826a){var _0x229cad,_0xb44467;return db[_0x82e0('0x2d')][_0x82e0('0x4e')]({'where':{'id':_0x2f40cb['params']['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x275eab,null))[_0x82e0('0x23')](function(_0x47cd9b){if(_0x47cd9b){_0xb44467=_0x47cd9b;return _0x47cd9b[_0x82e0('0x64')](_0x2f40cb['body'][_0x82e0('0x65')],_[_0x82e0('0x53')](_0x2f40cb[_0x82e0('0x4a')],[_0x82e0('0x65'),'id'])||{});}return null;})['spread'](function(_0x1d1fc0){var _0x8ec631;_0x229cad=_0x1d1fc0||[];var _0x272a90=[];if(_0x1d1fc0){for(var _0x164bcf=0x0;_0x164bcf<_0x1d1fc0[_0x82e0('0x38')];_0x164bcf+=0x1){var _0xef0356=_0x1d1fc0[_0x164bcf][_0x82e0('0x24')]({'plain':!![]});_0xb44467[_0x82e0('0x66')]=_0x2f40cb[_0x82e0('0x4a')][_0x82e0('0x66')]?_0x2f40cb[_0x82e0('0x4a')]['dialCheckDuplicateType']:_0xb44467['dialCheckDuplicateType'];switch(_0xb44467[_0x82e0('0x66')]){case _0x82e0('0x67'):_0x8ec631=squel[_0x82e0('0x68')]()[_0x82e0('0x69')](_0x82e0('0x6a'))['fromQuery']([_0x82e0('0x6b'),_0x82e0('0x6c'),_0x82e0('0x6d'),_0x82e0('0x6e'),'CampaignId','createdAt','updatedAt'],squel[_0x82e0('0x6f')]()['field']('phone','phone')[_0x82e0('0x70')](_0x82e0('0x71'),_0x82e0('0x6c'))[_0x82e0('0x70')]('id',_0x82e0('0x6d'))[_0x82e0('0x70')](_0xef0356[_0x82e0('0x72')][_0x82e0('0x73')](),'ListId')[_0x82e0('0x70')](_0x2f40cb[_0x82e0('0x48')]['id']['toString'](),_0x82e0('0x59'))['field'](_0x82e0('0x71'),_0x82e0('0x54'))[_0x82e0('0x70')](_0x82e0('0x71'),_0x82e0('0x55'))[_0x82e0('0x74')](_0x82e0('0x75'))['where']('deletedAt\x20IS\x20NULL')['where'](_0x82e0('0x76'),_0xef0356[_0x82e0('0x72')][_0x82e0('0x73')]())[_0x82e0('0x3c')](_0x82e0('0x77'))[_0x82e0('0x3c')](_0x82e0('0x78'),squel['select']()['field'](_0x82e0('0x79'))[_0x82e0('0x74')](_0x82e0('0x7a'))['where'](_0x82e0('0x7b'),_0x2f40cb[_0x82e0('0x48')]['id'][_0x82e0('0x73')]()))[_0x82e0('0x3c')]('phone\x20NOT\x20IN\x20(?)',squel[_0x82e0('0x6f')]()[_0x82e0('0x70')](_0x82e0('0x7c'))[_0x82e0('0x74')](_0x82e0('0x6a'))[_0x82e0('0x3c')]('CampaignId\x20=\x20?',_0x2f40cb[_0x82e0('0x48')]['id'][_0x82e0('0x73')]())))[_0x82e0('0x73')]();break;case _0x82e0('0x7d'):_0x8ec631=squel[_0x82e0('0x68')]()[_0x82e0('0x69')](_0x82e0('0x6a'))[_0x82e0('0x7e')](['phone',_0x82e0('0x6c'),_0x82e0('0x6d'),'ListId','CampaignId',_0x82e0('0x54'),_0x82e0('0x55')],squel[_0x82e0('0x6f')]()[_0x82e0('0x70')]('phone',_0x82e0('0x6b'))[_0x82e0('0x70')](_0x82e0('0x71'),_0x82e0('0x6c'))['field']('id',_0x82e0('0x6d'))[_0x82e0('0x70')](_0xef0356[_0x82e0('0x72')]['toString'](),_0x82e0('0x6e'))[_0x82e0('0x70')](_0x2f40cb['params']['id']['toString'](),'CampaignId')['field'](_0x82e0('0x71'),_0x82e0('0x54'))[_0x82e0('0x70')]('NOW()',_0x82e0('0x55'))[_0x82e0('0x74')]('cm_contacts')['where'](_0x82e0('0x7f'))[_0x82e0('0x3c')](_0x82e0('0x76'),_0xef0356[_0x82e0('0x72')][_0x82e0('0x73')]())[_0x82e0('0x3c')](_0x82e0('0x77'))['where'](_0x82e0('0x78'),squel[_0x82e0('0x6f')]()[_0x82e0('0x70')]('COALESCE(phone,\x27\x27)')[_0x82e0('0x74')](_0x82e0('0x6a'))[_0x82e0('0x3c')]('CampaignId\x20=\x20?',_0x2f40cb['params']['id'][_0x82e0('0x73')]())))[_0x82e0('0x73')]();break;default:_0x8ec631=squel[_0x82e0('0x68')]()[_0x82e0('0x69')](_0x82e0('0x6a'))['fromQuery']([_0x82e0('0x6b'),_0x82e0('0x6c'),'ContactId',_0x82e0('0x6e'),'CampaignId','createdAt',_0x82e0('0x55')],squel[_0x82e0('0x6f')]()[_0x82e0('0x70')]('phone',_0x82e0('0x6b'))['field'](_0x82e0('0x71'),_0x82e0('0x6c'))[_0x82e0('0x70')]('id',_0x82e0('0x6d'))['field'](_0xef0356[_0x82e0('0x72')]['toString'](),_0x82e0('0x6e'))['field'](_0x2f40cb[_0x82e0('0x48')]['id'][_0x82e0('0x73')](),'CampaignId')[_0x82e0('0x70')](_0x82e0('0x71'),_0x82e0('0x54'))[_0x82e0('0x70')](_0x82e0('0x71'),'updatedAt')[_0x82e0('0x74')]('cm_contacts')[_0x82e0('0x3c')](_0x82e0('0x7f'))['where']('ListId\x20=\x20?',_0xef0356['CmListId']['toString']())[_0x82e0('0x3c')](_0x82e0('0x77')))['toString']();}_0x272a90[_0x82e0('0x80')](db[_0x82e0('0x81')][_0x82e0('0x32')](_0x8ec631));}return BPromise['all'](_0x272a90);}})[_0x82e0('0x23')](function(){return _0x229cad;})[_0x82e0('0x23')](respondWithResult(_0x275eab,null))[_0x82e0('0x46')](handleError(_0x275eab,null));};exports[_0x82e0('0x82')]=function(_0x493428,_0x109ef8,_0x3d9734){return db[_0x82e0('0x2d')]['find']({'where':{'id':_0x493428[_0x82e0('0x48')]['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x109ef8,null))[_0x82e0('0x23')](function(_0x293f1f){if(_0x293f1f){return _0x293f1f[_0x82e0('0x82')](_0x493428[_0x82e0('0x32')]['ids']);}})['then'](function(_0x4a8712){if(_0x4a8712){return db[_0x82e0('0x5a')][_0x82e0('0x27')]({'where':{'ListId':_0x493428[_0x82e0('0x32')][_0x82e0('0x65')],'CampaignId':_0x493428[_0x82e0('0x48')]['id']}})[_0x82e0('0x23')](function(){return _0x4a8712;});}})[_0x82e0('0x23')](respondWithStatusCode(_0x109ef8,null))['catch'](handleError(_0x109ef8,null));};exports[_0x82e0('0x83')]=function(_0x536541,_0xa0398d,_0x113269){var _0x42c390={};var _0x294449={};var _0x384a27;var _0xfc1d91;return db['Campaign'][_0x82e0('0x58')]({'where':{'id':_0x536541[_0x82e0('0x48')]['id']}})['then'](handleEntityNotFound(_0xa0398d,null))[_0x82e0('0x23')](function(_0xbc81c2){if(_0xbc81c2){_0x384a27=_0xbc81c2;_0x294449['model']=_[_0x82e0('0x33')](db[_0x82e0('0x63')]['rawAttributes']);_0x294449[_0x82e0('0x32')]=_['keys'](_0x536541[_0x82e0('0x32')]);_0x294449[_0x82e0('0x34')]=_[_0x82e0('0x35')](_0x294449[_0x82e0('0x31')],_0x294449[_0x82e0('0x32')]);_0x42c390[_0x82e0('0x36')]=_[_0x82e0('0x35')](_0x294449[_0x82e0('0x31')],qs[_0x82e0('0x37')](_0x536541[_0x82e0('0x32')][_0x82e0('0x37')]));_0x42c390[_0x82e0('0x36')]=_0x42c390[_0x82e0('0x36')][_0x82e0('0x38')]?_0x42c390[_0x82e0('0x36')]:_0x294449[_0x82e0('0x31')];_0x42c390['order']=qs['sort'](_0x536541['query'][_0x82e0('0x3b')]);_0x42c390[_0x82e0('0x3c')]=qs[_0x82e0('0x34')](_[_0x82e0('0x3d')](_0x536541[_0x82e0('0x32')],_0x294449['filters']));if(_0x536541[_0x82e0('0x32')]['filter']){_0x42c390[_0x82e0('0x3c')]=_[_0x82e0('0x3e')](_0x42c390['where'],{'$or':_[_0x82e0('0x2c')](_0x42c390[_0x82e0('0x36')],function(_0xa99ed0){var _0x45d0f4={};_0x45d0f4[_0xa99ed0]={'$like':'%'+_0x536541[_0x82e0('0x32')]['filter']+'%'};return _0x45d0f4;})});}_0x42c390=_[_0x82e0('0x3e')]({},_0x42c390,_0x536541['options']);return _0x384a27[_0x82e0('0x83')](_0x42c390);}})[_0x82e0('0x23')](function(_0x371185){if(_0x371185){_0xfc1d91=_0x371185['length'];if(!_0x536541[_0x82e0('0x32')][_0x82e0('0x5d')](_0x82e0('0x39'))){_0x42c390[_0x82e0('0x1e')]=qs[_0x82e0('0x1e')](_0x536541[_0x82e0('0x32')]['limit']);_0x42c390[_0x82e0('0x1c')]=qs[_0x82e0('0x1c')](_0x536541[_0x82e0('0x32')][_0x82e0('0x1c')]);}return _0x384a27['getBlackLists'](_0x42c390);}})[_0x82e0('0x23')](function(_0xc133d3){if(_0xc133d3){return _0xc133d3?{'count':_0xfc1d91,'rows':_0xc133d3}:null;}})[_0x82e0('0x23')](respondWithResult(_0xa0398d,null))[_0x82e0('0x46')](handleError(_0xa0398d,null));};exports['addBlackLists']=function(_0x2100bc,_0x52b0b8,_0x3a1c9e){var _0xdab47,_0x5cd05f;return db[_0x82e0('0x2d')][_0x82e0('0x4e')]({'where':{'id':_0x2100bc[_0x82e0('0x48')]['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x52b0b8,null))[_0x82e0('0x23')](function(_0x55982e){if(_0x55982e){_0x5cd05f=_0x55982e;return _0x55982e['addBlackLists'](_0x2100bc[_0x82e0('0x4a')][_0x82e0('0x65')],_['omit'](_0x2100bc[_0x82e0('0x4a')],[_0x82e0('0x65'),'id'])||{});}return null;})[_0x82e0('0x84')](function(_0x15ad80){var _0x524bc3;_0xdab47=_0x15ad80||[];var _0x31fae1=[];if(_0x15ad80){for(var _0x371ccf=0x0;_0x371ccf<_0x15ad80[_0x82e0('0x38')];_0x371ccf+=0x1){var _0x54b333=_0x15ad80[_0x371ccf]['get']({'plain':!![]});_0x524bc3=squel[_0x82e0('0x68')]()[_0x82e0('0x69')](_0x82e0('0x85'))['fromQuery'](['phone',_0x82e0('0x6d'),_0x82e0('0x6e'),_0x82e0('0x59'),_0x82e0('0x54'),'updatedAt'],squel[_0x82e0('0x6f')]()['field'](_0x82e0('0x6b'),_0x82e0('0x6b'))[_0x82e0('0x70')]('id','ContactId')[_0x82e0('0x70')](_0x54b333[_0x82e0('0x72')][_0x82e0('0x73')](),_0x82e0('0x6e'))[_0x82e0('0x70')](_0x2100bc['params']['id'][_0x82e0('0x73')](),_0x82e0('0x59'))[_0x82e0('0x70')](_0x82e0('0x71'),'createdAt')[_0x82e0('0x70')](_0x82e0('0x71'),_0x82e0('0x55'))[_0x82e0('0x74')](_0x82e0('0x75'))[_0x82e0('0x3c')](_0x82e0('0x7f'))[_0x82e0('0x3c')]('ListId\x20=\x20?',_0x54b333[_0x82e0('0x72')]['toString']())[_0x82e0('0x3c')](_0x82e0('0x77')))[_0x82e0('0x73')]();_0x31fae1[_0x82e0('0x80')](db['sequelize'][_0x82e0('0x32')](_0x524bc3));}return BPromise[_0x82e0('0x86')](_0x31fae1);}})[_0x82e0('0x23')](function(){return _0xdab47;})[_0x82e0('0x23')](respondWithResult(_0x52b0b8,null))[_0x82e0('0x46')](handleError(_0x52b0b8,null));};exports[_0x82e0('0x87')]=function(_0x117dbd,_0x273df5,_0x2e55a5){return db['Campaign'][_0x82e0('0x4e')]({'where':{'id':_0x117dbd[_0x82e0('0x48')]['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x273df5,null))[_0x82e0('0x23')](function(_0x22c78f){if(_0x22c78f){return _0x22c78f[_0x82e0('0x87')](_0x117dbd['query'][_0x82e0('0x65')]);}})[_0x82e0('0x23')](function(_0x34b362){if(_0x34b362){return db['CmHopperBlack'][_0x82e0('0x27')]({'where':{'ListId':_0x117dbd['query'][_0x82e0('0x65')],'CampaignId':_0x117dbd['params']['id']}})[_0x82e0('0x23')](function(){return _0x34b362;});}})[_0x82e0('0x23')](respondWithStatusCode(_0x273df5,null))[_0x82e0('0x46')](handleError(_0x273df5,null));};
\ No newline at end of file
index ae624ea..058bce7 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(_0x2fe457,_0x1c58d6){var _0x40dac7=function(_0x29839b){while(--_0x29839b){_0x2fe457['push'](_0x2fe457['shift']());}};_0x40dac7(++_0x1c58d6);}(_0x7a54,0x106));var _0x47a5=function(_0x132b80,_0x5d1fa7){_0x132b80=_0x132b80-0x0;var _0x23b2cf=_0x7a54[_0x132b80];return _0x23b2cf;};'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(_0x210ceb,_0x2deba8){var _0x5a4541=function(_0x54f80a){while(--_0x54f80a){_0x210ceb['push'](_0x210ceb['shift']());}};_0x5a4541(++_0x2deba8);}(_0x7a54,0x106));var _0x47a5=function(_0x5738aa,_0xa900d1){_0x5738aa=_0x5738aa-0x0;var _0x716497=_0x7a54[_0x5738aa];return _0x716497;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cb5b41d..102fe86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dd5=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','Campaign,\x20%s,\x20%s','request\x20sent','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','Campaign','options','attributes','limit','map','model','include','GetCampaign','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3dd5,0x73));var _0x53dd=function(_0x372974,_0x3faaaf){_0x372974=_0x372974-0x0;var _0x47f05=_0x3dd5[_0x372974];return _0x47f05;};'use strict';var _=require(_0x53dd('0x0'));var util=require('util');var moment=require(_0x53dd('0x1'));var BPromise=require(_0x53dd('0x2'));var rs=require(_0x53dd('0x3'));var fs=require('fs');var Redis=require(_0x53dd('0x4'));var db=require(_0x53dd('0x5'))['db'];var utils=require(_0x53dd('0x6'));var logger=require(_0x53dd('0x7'))(_0x53dd('0x8'));var config=require(_0x53dd('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x53dd('0xa')][_0x53dd('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x37e012,_0x264e7b,_0x4d3132){return new BPromise(function(_0x561ded,_0x3e1512){return client['request'](_0x37e012,_0x4d3132)[_0x53dd('0xc')](function(_0x1f9ce3){logger[_0x53dd('0xd')](_0x53dd('0xe'),_0x264e7b,_0x53dd('0xf'));logger['debug'](_0x53dd('0x10'),_0x264e7b,_0x53dd('0xf'),JSON[_0x53dd('0x11')](_0x1f9ce3));if(_0x1f9ce3[_0x53dd('0x12')]){if(_0x1f9ce3['error']['code']===0x1f4){logger[_0x53dd('0x12')](_0x53dd('0xe'),_0x264e7b,_0x1f9ce3[_0x53dd('0x12')]['message']);return _0x3e1512(_0x1f9ce3[_0x53dd('0x12')][_0x53dd('0x13')]);}logger[_0x53dd('0x12')]('Campaign,\x20%s,\x20%s',_0x264e7b,_0x1f9ce3[_0x53dd('0x12')][_0x53dd('0x13')]);return _0x561ded(_0x1f9ce3[_0x53dd('0x12')]['message']);}else{logger['info']('Campaign,\x20%s,\x20%s',_0x264e7b,'request\x20sent');_0x561ded(_0x1f9ce3[_0x53dd('0x14')][_0x53dd('0x13')]);}})[_0x53dd('0x15')](function(_0x30052e){logger[_0x53dd('0x12')]('Campaign,\x20%s,\x20%s',_0x264e7b,_0x30052e);_0x3e1512(_0x30052e);});});}exports['GetCampaign']=function(_0x45765e){var _0x193c99=this;return new Promise(function(_0x350d03,_0x464eb8){return db[_0x53dd('0x16')]['findAll']({'raw':_0x45765e['options']?_0x45765e['options']['raw']===undefined?!![]:![]:!![],'where':_0x45765e['options']?_0x45765e[_0x53dd('0x17')]['where']||null:null,'attributes':_0x45765e['options']?_0x45765e[_0x53dd('0x17')][_0x53dd('0x18')]||null:null,'limit':_0x45765e[_0x53dd('0x17')]?_0x45765e[_0x53dd('0x17')][_0x53dd('0x19')]||null:null,'include':_0x45765e['options']?_0x45765e[_0x53dd('0x17')]['include']?_[_0x53dd('0x1a')](_0x45765e[_0x53dd('0x17')]['include'],function(_0x42e72e){return{'model':db[_0x42e72e[_0x53dd('0x1b')]],'as':_0x42e72e['as'],'attributes':_0x42e72e['attributes'],'include':_0x42e72e[_0x53dd('0x1c')]?_['map'](_0x42e72e[_0x53dd('0x1c')],function(_0x3506cc){return{'model':db[_0x3506cc[_0x53dd('0x1b')]],'as':_0x3506cc['as'],'attributes':_0x3506cc[_0x53dd('0x18')],'include':_0x3506cc[_0x53dd('0x1c')]?_[_0x53dd('0x1a')](_0x3506cc[_0x53dd('0x1c')],function(_0x1c6d36){return{'model':db[_0x1c6d36[_0x53dd('0x1b')]],'as':_0x1c6d36['as'],'attributes':_0x1c6d36[_0x53dd('0x18')]};}):[]};}):[]};}):[]:[]})[_0x53dd('0xc')](function(_0x57c3e9){logger[_0x53dd('0xd')]('GetCampaign',_0x45765e);logger['debug'](_0x53dd('0x1d'),_0x45765e,JSON[_0x53dd('0x11')](_0x57c3e9));_0x350d03(_0x57c3e9);})['catch'](function(_0x24403d){logger['error'](_0x53dd('0x1d'),_0x24403d[_0x53dd('0x13')],_0x45765e);_0x464eb8(_0x193c99['error'](0x1f4,_0x24403d[_0x53dd('0x13')]));});});};
\ No newline at end of file
+var _0x3164=['attributes','debug','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetCampaign','options','raw','limit','include','map','model'];(function(_0x1d4975,_0x196c40){var _0x9d5dcd=function(_0x20f1d3){while(--_0x20f1d3){_0x1d4975['push'](_0x1d4975['shift']());}};_0x9d5dcd(++_0x196c40);}(_0x3164,0x182));var _0x4316=function(_0x5d3b1c,_0x3b4a74){_0x5d3b1c=_0x5d3b1c-0x0;var _0x4dc4dd=_0x3164[_0x5d3b1c];return _0x4dc4dd;};'use strict';var _=require(_0x4316('0x0'));var util=require(_0x4316('0x1'));var moment=require(_0x4316('0x2'));var BPromise=require(_0x4316('0x3'));var rs=require(_0x4316('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4316('0x5'))['db'];var utils=require(_0x4316('0x6'));var logger=require(_0x4316('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x4316('0x8'));var client=jayson[_0x4316('0x9')][_0x4316('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x29c3c1,_0x25be1f,_0x473cd2){return new BPromise(function(_0x1bcd38,_0x2b1420){return client[_0x4316('0xb')](_0x29c3c1,_0x473cd2)[_0x4316('0xc')](function(_0x2ad6dc){logger[_0x4316('0xd')](_0x4316('0xe'),_0x25be1f,_0x4316('0xf'));logger['debug'](_0x4316('0x10'),_0x25be1f,_0x4316('0xf'),JSON[_0x4316('0x11')](_0x2ad6dc));if(_0x2ad6dc[_0x4316('0x12')]){if(_0x2ad6dc['error'][_0x4316('0x13')]===0x1f4){logger[_0x4316('0x12')](_0x4316('0xe'),_0x25be1f,_0x2ad6dc[_0x4316('0x12')]['message']);return _0x2b1420(_0x2ad6dc[_0x4316('0x12')]['message']);}logger['error']('Campaign,\x20%s,\x20%s',_0x25be1f,_0x2ad6dc[_0x4316('0x12')][_0x4316('0x14')]);return _0x1bcd38(_0x2ad6dc['error'][_0x4316('0x14')]);}else{logger['info'](_0x4316('0xe'),_0x25be1f,_0x4316('0xf'));_0x1bcd38(_0x2ad6dc[_0x4316('0x15')][_0x4316('0x14')]);}})[_0x4316('0x16')](function(_0x2d579f){logger[_0x4316('0x12')](_0x4316('0xe'),_0x25be1f,_0x2d579f);_0x2b1420(_0x2d579f);});});}exports[_0x4316('0x17')]=function(_0x3bf044){var _0x5a414f=this;return new Promise(function(_0x43069f,_0x34c667){return db['Campaign']['findAll']({'raw':_0x3bf044[_0x4316('0x18')]?_0x3bf044[_0x4316('0x18')][_0x4316('0x19')]===undefined?!![]:![]:!![],'where':_0x3bf044[_0x4316('0x18')]?_0x3bf044[_0x4316('0x18')]['where']||null:null,'attributes':_0x3bf044[_0x4316('0x18')]?_0x3bf044[_0x4316('0x18')]['attributes']||null:null,'limit':_0x3bf044[_0x4316('0x18')]?_0x3bf044[_0x4316('0x18')][_0x4316('0x1a')]||null:null,'include':_0x3bf044['options']?_0x3bf044[_0x4316('0x18')][_0x4316('0x1b')]?_[_0x4316('0x1c')](_0x3bf044['options'][_0x4316('0x1b')],function(_0x3388ae){return{'model':db[_0x3388ae[_0x4316('0x1d')]],'as':_0x3388ae['as'],'attributes':_0x3388ae[_0x4316('0x1e')],'include':_0x3388ae[_0x4316('0x1b')]?_[_0x4316('0x1c')](_0x3388ae[_0x4316('0x1b')],function(_0x46bd61){return{'model':db[_0x46bd61[_0x4316('0x1d')]],'as':_0x46bd61['as'],'attributes':_0x46bd61[_0x4316('0x1e')],'include':_0x46bd61[_0x4316('0x1b')]?_[_0x4316('0x1c')](_0x46bd61[_0x4316('0x1b')],function(_0x1f7391){return{'model':db[_0x1f7391[_0x4316('0x1d')]],'as':_0x1f7391['as'],'attributes':_0x1f7391[_0x4316('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x4316('0xc')](function(_0x4cdb10){logger['info'](_0x4316('0x17'),_0x3bf044);logger[_0x4316('0x1f')](_0x4316('0x17'),_0x3bf044,JSON[_0x4316('0x11')](_0x4cdb10));_0x43069f(_0x4cdb10);})[_0x4316('0x16')](function(_0x55cfb2){logger[_0x4316('0x12')]('GetCampaign',_0x55cfb2[_0x4316('0x14')],_0x3bf044);_0x34c667(_0x5a414f['error'](0x1f4,_0x55cfb2[_0x4316('0x14')]));});});};
\ No newline at end of file
index ed31728..990b58b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3678=['../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','/:id/hopper_black','/:id/lists','/:id/blacklists','getBlackLists','post','/:id/clone','clone','addLists','addBlackLists','put','delete','destroy','removeLists','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x54e14b,_0x4476a1){var _0x129ae0=function(_0x504426){while(--_0x504426){_0x54e14b['push'](_0x54e14b['shift']());}};_0x129ae0(++_0x4476a1);}(_0x3678,0x81));var _0x8367=function(_0x1aa049,_0x9ae13c){_0x1aa049=_0x1aa049-0x0;var _0x357f29=_0x3678[_0x1aa049];return _0x357f29;};'use strict';var multer=require(_0x8367('0x0'));var util=require(_0x8367('0x1'));var path=require(_0x8367('0x2'));var timeout=require(_0x8367('0x3'));var express=require(_0x8367('0x4'));var router=express[_0x8367('0x5')]();var fs_extra=require(_0x8367('0x6'));var auth=require(_0x8367('0x7'));var interaction=require(_0x8367('0x8'));var config=require(_0x8367('0x9'));var controller=require(_0x8367('0xa'));router[_0x8367('0xb')]('/',auth[_0x8367('0xc')](),controller[_0x8367('0xd')]);router[_0x8367('0xb')](_0x8367('0xe'),auth['isAuthenticated'](),controller[_0x8367('0xf')]);router[_0x8367('0xb')](_0x8367('0x10'),auth[_0x8367('0xc')](),controller[_0x8367('0x11')]);router[_0x8367('0xb')](_0x8367('0x12'),auth[_0x8367('0xc')](),controller['getHopperHistories']);router[_0x8367('0xb')](_0x8367('0x13'),auth[_0x8367('0xc')](),controller['getHopperFinals']);router[_0x8367('0xb')](_0x8367('0x14'),auth[_0x8367('0xc')](),controller['getHopperBlacks']);router[_0x8367('0xb')](_0x8367('0x15'),auth['isAuthenticated'](),controller['getLists']);router[_0x8367('0xb')](_0x8367('0x16'),auth['isAuthenticated'](),controller[_0x8367('0x17')]);router[_0x8367('0x18')]('/',auth[_0x8367('0xc')](),controller['create']);router['post'](_0x8367('0x19'),auth[_0x8367('0xc')](),controller[_0x8367('0x1a')]);router[_0x8367('0x18')](_0x8367('0x15'),auth[_0x8367('0xc')](),controller[_0x8367('0x1b')]);router[_0x8367('0x18')](_0x8367('0x16'),auth[_0x8367('0xc')](),controller[_0x8367('0x1c')]);router[_0x8367('0x1d')](_0x8367('0xe'),auth[_0x8367('0xc')](),controller['update']);router[_0x8367('0x1e')](_0x8367('0xe'),auth['isAuthenticated'](),controller[_0x8367('0x1f')]);router[_0x8367('0x1e')](_0x8367('0x15'),auth[_0x8367('0xc')](),controller[_0x8367('0x20')]);router[_0x8367('0x1e')]('/:id/blacklists',auth[_0x8367('0xc')](),controller['removeBlackLists']);module[_0x8367('0x21')]=router;
\ No newline at end of file
+var _0xfdd7=['delete','removeLists','removeBlackLists','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','get','index','/:id','show','/:id/hoppers','isAuthenticated','getHoppers','getHopperHistories','/:id/hopper_finals','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','create','addLists','addBlackLists','put','update','destroy'];(function(_0xb54833,_0x334753){var _0xdf93fe=function(_0x14bf56){while(--_0x14bf56){_0xb54833['push'](_0xb54833['shift']());}};_0xdf93fe(++_0x334753);}(_0xfdd7,0xa3));var _0x7fdd=function(_0x2ae218,_0x21f227){_0x2ae218=_0x2ae218-0x0;var _0x1c65c4=_0xfdd7[_0x2ae218];return _0x1c65c4;};'use strict';var multer=require(_0x7fdd('0x0'));var util=require(_0x7fdd('0x1'));var path=require(_0x7fdd('0x2'));var timeout=require('connect-timeout');var express=require(_0x7fdd('0x3'));var router=express[_0x7fdd('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x7fdd('0x5'));var interaction=require(_0x7fdd('0x6'));var config=require(_0x7fdd('0x7'));var controller=require(_0x7fdd('0x8'));router[_0x7fdd('0x9')]('/',auth['isAuthenticated'](),controller[_0x7fdd('0xa')]);router[_0x7fdd('0x9')](_0x7fdd('0xb'),auth['isAuthenticated'](),controller[_0x7fdd('0xc')]);router[_0x7fdd('0x9')](_0x7fdd('0xd'),auth[_0x7fdd('0xe')](),controller[_0x7fdd('0xf')]);router['get']('/:id/hopper_histories',auth[_0x7fdd('0xe')](),controller[_0x7fdd('0x10')]);router['get'](_0x7fdd('0x11'),auth['isAuthenticated'](),controller['getHopperFinals']);router[_0x7fdd('0x9')]('/:id/hopper_black',auth[_0x7fdd('0xe')](),controller['getHopperBlacks']);router[_0x7fdd('0x9')](_0x7fdd('0x12'),auth['isAuthenticated'](),controller[_0x7fdd('0x13')]);router[_0x7fdd('0x9')](_0x7fdd('0x14'),auth[_0x7fdd('0xe')](),controller[_0x7fdd('0x15')]);router[_0x7fdd('0x16')]('/',auth[_0x7fdd('0xe')](),controller[_0x7fdd('0x17')]);router['post']('/:id/clone',auth[_0x7fdd('0xe')](),controller['clone']);router[_0x7fdd('0x16')](_0x7fdd('0x12'),auth['isAuthenticated'](),controller[_0x7fdd('0x18')]);router['post'](_0x7fdd('0x14'),auth[_0x7fdd('0xe')](),controller[_0x7fdd('0x19')]);router[_0x7fdd('0x1a')](_0x7fdd('0xb'),auth[_0x7fdd('0xe')](),controller[_0x7fdd('0x1b')]);router['delete'](_0x7fdd('0xb'),auth['isAuthenticated'](),controller[_0x7fdd('0x1c')]);router[_0x7fdd('0x1d')](_0x7fdd('0x12'),auth[_0x7fdd('0xe')](),controller[_0x7fdd('0x1e')]);router['delete'](_0x7fdd('0x14'),auth[_0x7fdd('0xe')](),controller[_0x7fdd('0x1f')]);module['exports']=router;
\ No newline at end of file
index f738d3a..9edacea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb58=['TEXT','getDataValue','key','sequelize','exports','STRING'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xfb58,0x19b));var _0x8fb5=function(_0x404b7a,_0xe3a16c){_0x404b7a=_0x404b7a-0x0;var _0x35a076=_0xfb58[_0x404b7a];return _0x35a076;};'use strict';var Sequelize=require(_0x8fb5('0x0'));module[_0x8fb5('0x1')]={'key':{'type':Sequelize[_0x8fb5('0x2')],'allowNull':![]},'value':{'type':Sequelize[_0x8fb5('0x3')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x8fb5('0x4')](_0x8fb5('0x5'));}}};
\ No newline at end of file
+var _0xf9d4=['exports','STRING','TEXT','getDataValue','key','sequelize'];(function(_0x3a7cd9,_0x2efead){var _0x3abab5=function(_0x4820d7){while(--_0x4820d7){_0x3a7cd9['push'](_0x3a7cd9['shift']());}};_0x3abab5(++_0x2efead);}(_0xf9d4,0x77));var _0x4f9d=function(_0x110d61,_0x31cd69){_0x110d61=_0x110d61-0x0;var _0x564121=_0xf9d4[_0x110d61];return _0x564121;};'use strict';var Sequelize=require(_0x4f9d('0x0'));module[_0x4f9d('0x1')]={'key':{'type':Sequelize[_0x4f9d('0x2')],'allowNull':![]},'value':{'type':Sequelize[_0x4f9d('0x3')],'allowNull':![]},'description':{'type':Sequelize[_0x4f9d('0x2')]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x4f9d('0x4')](_0x4f9d('0x5'));}}};
\ No newline at end of file
index a19aa50..5051850 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c21=['CannedAnswer','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','rawAttributes','find','body','params','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','userProfileId','autoAssociation','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','CannedAnswers','UserProfileResource','error','stack','name','index'];(function(_0x1fd0c2,_0xc20d9b){var _0x57ccaa=function(_0xfe186d){while(--_0xfe186d){_0x1fd0c2['push'](_0x1fd0c2['shift']());}};_0x57ccaa(++_0xc20d9b);}(_0x4c21,0x88));var _0x14c2=function(_0x65c0bb,_0x82e7b8){_0x65c0bb=_0x65c0bb-0x0;var _0x320bd5=_0x4c21[_0x65c0bb];return _0x320bd5;};'use strict';var emlformat=require(_0x14c2('0x0'));var rimraf=require(_0x14c2('0x1'));var zipdir=require(_0x14c2('0x2'));var jsonpatch=require(_0x14c2('0x3'));var rp=require(_0x14c2('0x4'));var moment=require(_0x14c2('0x5'));var BPromise=require(_0x14c2('0x6'));var Mustache=require(_0x14c2('0x7'));var util=require(_0x14c2('0x8'));var path=require('path');var sox=require(_0x14c2('0x9'));var csv=require('to-csv');var ejs=require(_0x14c2('0xa'));var fs=require('fs');var fs_extra=require(_0x14c2('0xb'));var _=require(_0x14c2('0xc'));var squel=require(_0x14c2('0xd'));var crypto=require('crypto');var jsforce=require(_0x14c2('0xe'));var deskjs=require(_0x14c2('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x14c2('0x10'));var Redis=require(_0x14c2('0x11'));var authService=require(_0x14c2('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x14c2('0x13'));var logger=require(_0x14c2('0x14'))(_0x14c2('0x15'));var utils=require(_0x14c2('0x16'));var config=require(_0x14c2('0x17'));var licenseUtil=require(_0x14c2('0x18'));var db=require(_0x14c2('0x19'))['db'];function respondWithStatusCode(_0x46b7c6,_0x247b8d){_0x247b8d=_0x247b8d||0xcc;return function(_0x2c8506){if(_0x2c8506){return _0x46b7c6[_0x14c2('0x1a')](_0x247b8d);}return _0x46b7c6[_0x14c2('0x1b')](_0x247b8d)[_0x14c2('0x1c')]();};}function respondWithResult(_0x2a75a2,_0x240b2c){_0x240b2c=_0x240b2c||0xc8;return function(_0x3ab0d8){if(_0x3ab0d8){return _0x2a75a2[_0x14c2('0x1b')](_0x240b2c)[_0x14c2('0x1d')](_0x3ab0d8);}};}function respondWithFilteredResult(_0x2e9215,_0x593b67){return function(_0x47c1ae){if(_0x47c1ae){var _0x2e562d=typeof _0x593b67['offset']==='undefined'&&typeof _0x593b67[_0x14c2('0x1e')]==='undefined';var _0x3e6512=_0x47c1ae[_0x14c2('0x1f')];var _0x2621a0=_0x2e562d?0x0:_0x593b67[_0x14c2('0x20')];var _0x2e7590=_0x2e562d?_0x47c1ae['count']:_0x593b67[_0x14c2('0x20')]+_0x593b67['limit'];var _0x54915e;if(_0x2e7590>=_0x3e6512){_0x2e7590=_0x3e6512;_0x54915e=0xc8;}else{_0x54915e=0xce;}_0x2e9215[_0x14c2('0x1b')](_0x54915e);return _0x2e9215['set'](_0x14c2('0x21'),_0x2621a0+'-'+_0x2e7590+'/'+_0x3e6512)[_0x14c2('0x1d')](_0x47c1ae);}return null;};}function patchUpdates(_0x5cfb0e){return function(_0x319061){try{jsonpatch[_0x14c2('0x22')](_0x319061,_0x5cfb0e,!![]);}catch(_0x2b239b){return BPromise[_0x14c2('0x23')](_0x2b239b);}return _0x319061[_0x14c2('0x24')]();};}function saveUpdates(_0x470b56,_0x3f561c){return function(_0x1f8ab9){if(_0x1f8ab9){return _0x1f8ab9[_0x14c2('0x25')](_0x470b56)[_0x14c2('0x26')](function(_0x23bebe){return _0x23bebe;});}return null;};}function removeEntity(_0x1611cf,_0x3ebb53){return function(_0x54032c){if(_0x54032c){return _0x54032c[_0x14c2('0x27')]()['then'](function(){var _0xe15fa9=_0x54032c['get']({'plain':!![]});var _0x5be4ab=_0x14c2('0x28');return db[_0x14c2('0x29')][_0x14c2('0x27')]({'where':{'type':_0x5be4ab,'resourceId':_0xe15fa9['id']}})[_0x14c2('0x26')](function(){return _0x54032c;});})[_0x14c2('0x26')](function(){_0x1611cf[_0x14c2('0x1b')](0xcc)[_0x14c2('0x1c')]();});}};}function handleEntityNotFound(_0x25144d,_0xe65e8c){return function(_0x5bd827){if(!_0x5bd827){_0x25144d[_0x14c2('0x1a')](0x194);}return _0x5bd827;};}function handleError(_0x23c834,_0xddef23){_0xddef23=_0xddef23||0x1f4;return function(_0x2c98ea){logger[_0x14c2('0x2a')](_0x2c98ea[_0x14c2('0x2b')]);if(_0x2c98ea['name']){delete _0x2c98ea[_0x14c2('0x2c')];}_0x23c834['status'](_0xddef23)['send'](_0x2c98ea);};}exports[_0x14c2('0x2d')]=function(_0x4c0bc1,_0x3fddcb){var _0x1bdb62={},_0x4e9718={},_0x3332e0={'count':0x0,'rows':[]};var _0x2dcb78=_['map'](db[_0x14c2('0x2e')]['rawAttributes'],function(_0x4fa764){return{'name':_0x4fa764[_0x14c2('0x2f')],'type':_0x4fa764[_0x14c2('0x30')][_0x14c2('0x31')]};});_0x4e9718[_0x14c2('0x32')]=_[_0x14c2('0x33')](_0x2dcb78,_0x14c2('0x2c'));_0x4e9718[_0x14c2('0x34')]=_[_0x14c2('0x35')](_0x4c0bc1['query']);_0x4e9718[_0x14c2('0x36')]=_[_0x14c2('0x37')](_0x4e9718[_0x14c2('0x32')],_0x4e9718['query']);_0x1bdb62['attributes']=_[_0x14c2('0x37')](_0x4e9718[_0x14c2('0x32')],qs[_0x14c2('0x38')](_0x4c0bc1[_0x14c2('0x34')][_0x14c2('0x38')]));_0x1bdb62[_0x14c2('0x39')]=_0x1bdb62['attributes'][_0x14c2('0x3a')]?_0x1bdb62['attributes']:_0x4e9718[_0x14c2('0x32')];if(!_0x4c0bc1[_0x14c2('0x34')][_0x14c2('0x3b')](_0x14c2('0x3c'))){_0x1bdb62[_0x14c2('0x1e')]=qs[_0x14c2('0x1e')](_0x4c0bc1['query'][_0x14c2('0x1e')]);_0x1bdb62[_0x14c2('0x20')]=qs[_0x14c2('0x20')](_0x4c0bc1[_0x14c2('0x34')][_0x14c2('0x20')]);}_0x1bdb62[_0x14c2('0x3d')]=qs['sort'](_0x4c0bc1[_0x14c2('0x34')]['sort']);_0x1bdb62[_0x14c2('0x3e')]=qs[_0x14c2('0x36')](_[_0x14c2('0x3f')](_0x4c0bc1[_0x14c2('0x34')],_0x4e9718['filters']),_0x2dcb78);if(_0x4c0bc1[_0x14c2('0x34')][_0x14c2('0x40')]){_0x1bdb62[_0x14c2('0x3e')]=_['merge'](_0x1bdb62[_0x14c2('0x3e')],{'$or':[{'key':{'$like':'%'+_0x4c0bc1['query'][_0x14c2('0x40')]+'%'}},{'value':{'$like':'%'+_0x4c0bc1['query'][_0x14c2('0x40')]+'%'}}]});}_0x1bdb62=_[_0x14c2('0x41')]({},_0x1bdb62,_0x4c0bc1[_0x14c2('0x42')]);var _0x8ce2cd={'where':_0x1bdb62[_0x14c2('0x3e')]};return db[_0x14c2('0x2e')]['count'](_0x8ce2cd)['then'](function(_0x28e59e){_0x3332e0['count']=_0x28e59e;if(_0x4c0bc1['query'][_0x14c2('0x43')]){_0x1bdb62[_0x14c2('0x44')]=[{'all':!![]}];}return db[_0x14c2('0x2e')][_0x14c2('0x45')](_0x1bdb62);})[_0x14c2('0x26')](function(_0x459ec5){_0x3332e0[_0x14c2('0x46')]=_0x459ec5;return _0x3332e0;})[_0x14c2('0x26')](respondWithFilteredResult(_0x3fddcb,_0x1bdb62))[_0x14c2('0x47')](handleError(_0x3fddcb,null));};exports[_0x14c2('0x48')]=function(_0x376358,_0x2030b5){var _0x147f20={'raw':!![],'where':{'id':_0x376358['params']['id']}},_0x2f6a06={};_0x2f6a06['model']=_[_0x14c2('0x35')](db['CannedAnswer'][_0x14c2('0x49')]);_0x2f6a06[_0x14c2('0x34')]=_[_0x14c2('0x35')](_0x376358[_0x14c2('0x34')]);_0x2f6a06[_0x14c2('0x36')]=_[_0x14c2('0x37')](_0x2f6a06[_0x14c2('0x32')],_0x2f6a06[_0x14c2('0x34')]);_0x147f20[_0x14c2('0x39')]=_['intersection'](_0x2f6a06['model'],qs[_0x14c2('0x38')](_0x376358[_0x14c2('0x34')][_0x14c2('0x38')]));_0x147f20['attributes']=_0x147f20[_0x14c2('0x39')][_0x14c2('0x3a')]?_0x147f20[_0x14c2('0x39')]:_0x2f6a06[_0x14c2('0x32')];if(_0x376358['query'][_0x14c2('0x43')]){_0x147f20[_0x14c2('0x44')]=[{'all':!![]}];}_0x147f20=_[_0x14c2('0x41')]({},_0x147f20,_0x376358[_0x14c2('0x42')]);return db[_0x14c2('0x2e')][_0x14c2('0x4a')](_0x147f20)[_0x14c2('0x26')](handleEntityNotFound(_0x2030b5,null))['then'](respondWithResult(_0x2030b5,null))[_0x14c2('0x47')](handleError(_0x2030b5,null));};exports[_0x14c2('0x25')]=function(_0xc02a6,_0x2d168e){if(_0xc02a6[_0x14c2('0x4b')]['id']){delete _0xc02a6[_0x14c2('0x4b')]['id'];}return db[_0x14c2('0x2e')][_0x14c2('0x4a')]({'where':{'id':_0xc02a6[_0x14c2('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2d168e,null))[_0x14c2('0x26')](saveUpdates(_0xc02a6[_0x14c2('0x4b')],null))[_0x14c2('0x26')](respondWithResult(_0x2d168e,null))['catch'](handleError(_0x2d168e,null));};exports['destroy']=function(_0x426abd,_0x74450d){return db[_0x14c2('0x2e')][_0x14c2('0x4a')]({'where':{'id':_0x426abd[_0x14c2('0x4c')]['id']}})['then'](handleEntityNotFound(_0x74450d,null))[_0x14c2('0x26')](removeEntity(_0x74450d,null))['catch'](handleError(_0x74450d,null));};exports[_0x14c2('0x4d')]=function(_0x535147,_0x101321){var _0x5a54cc={'key':_0x535147[_0x14c2('0x4b')][_0x14c2('0x31')]};if(_0x535147['body'][_0x14c2('0x4e')]){_0x5a54cc[_0x14c2('0x4e')]=_0x535147['body'][_0x14c2('0x4e')];}else if(_0x535147['body']['SmsAccountId']){_0x5a54cc[_0x14c2('0x4f')]=_0x535147[_0x14c2('0x4b')]['SmsAccountId'];}else if(_0x535147[_0x14c2('0x4b')][_0x14c2('0x50')]){_0x5a54cc[_0x14c2('0x50')]=_0x535147[_0x14c2('0x4b')][_0x14c2('0x50')];}else if(_0x535147[_0x14c2('0x4b')][_0x14c2('0x51')]){_0x5a54cc[_0x14c2('0x51')]=_0x535147[_0x14c2('0x4b')][_0x14c2('0x51')];}return db[_0x14c2('0x2e')][_0x14c2('0x4a')]({'where':_0x5a54cc})['then'](function(_0x67ca86){if(_0x67ca86){throw new db[(_0x14c2('0x52'))]['ValidationError'](_0x14c2('0x53'));}return db['CannedAnswer']['create'](_0x535147[_0x14c2('0x4b')]);})['then'](function(_0x399618){var _0x4b271a=_0x535147[_0x14c2('0x54')]['get']({'plain':!![]});if(!_0x4b271a)throw new Error(_0x14c2('0x55'));if(_0x4b271a[_0x14c2('0x56')]===_0x14c2('0x54')){var _0x5bb13b=_0x399618[_0x14c2('0x57')]({'plain':!![]});return db[_0x14c2('0x58')][_0x14c2('0x4a')]({'where':{'name':_0x14c2('0x28'),'userProfileId':_0x4b271a[_0x14c2('0x59')]},'raw':!![]})['then'](function(_0x263b9d){if(_0x263b9d&&_0x263b9d[_0x14c2('0x5a')]===0x0){return db['UserProfileResource'][_0x14c2('0x4d')]({'name':_0x5bb13b['name'],'resourceId':_0x5bb13b['id'],'type':_0x263b9d[_0x14c2('0x2c')],'sectionId':_0x263b9d['id']},{})[_0x14c2('0x26')](function(){return _0x399618;});}else{return _0x399618;}})[_0x14c2('0x47')](function(_0x2256bd){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2256bd);throw _0x2256bd;});}return _0x399618;})[_0x14c2('0x26')](respondWithResult(_0x101321,0xc9))[_0x14c2('0x47')](handleError(_0x101321,null));};
\ No newline at end of file
+var _0x7893=['desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','json','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','then','get','UserProfileResource','stack','name','send','index','CannedAnswer','rawAttributes','fieldName','type','map','keys','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','params','length','body','find','catch','key','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','error','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','squel','crypto'];(function(_0x294ebc,_0x355914){var _0x1db19b=function(_0x173eab){while(--_0x173eab){_0x294ebc['push'](_0x294ebc['shift']());}};_0x1db19b(++_0x355914);}(_0x7893,0x15e));var _0x3789=function(_0x3fcf09,_0x48209a){_0x3fcf09=_0x3fcf09-0x0;var _0x3d5070=_0x7893[_0x3fcf09];return _0x3d5070;};'use strict';var emlformat=require(_0x3789('0x0'));var rimraf=require(_0x3789('0x1'));var zipdir=require(_0x3789('0x2'));var jsonpatch=require(_0x3789('0x3'));var rp=require(_0x3789('0x4'));var moment=require(_0x3789('0x5'));var BPromise=require(_0x3789('0x6'));var Mustache=require(_0x3789('0x7'));var util=require(_0x3789('0x8'));var path=require(_0x3789('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3789('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3789('0xb'));var squel=require(_0x3789('0xc'));var crypto=require(_0x3789('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x3789('0xe'));var toCsv=require(_0x3789('0xf'));var querystring=require('querystring');var Papa=require(_0x3789('0x10'));var Redis=require(_0x3789('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x3789('0x12'));var as=require(_0x3789('0x13'));var hardwareService=require(_0x3789('0x14'));var logger=require(_0x3789('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x3789('0x16'));var licenseUtil=require(_0x3789('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x57230e,_0x381af5){_0x381af5=_0x381af5||0xcc;return function(_0x292220){if(_0x292220){return _0x57230e[_0x3789('0x18')](_0x381af5);}return _0x57230e[_0x3789('0x19')](_0x381af5)['end']();};}function respondWithResult(_0x328bf0,_0x25e094){_0x25e094=_0x25e094||0xc8;return function(_0x4f67bd){if(_0x4f67bd){return _0x328bf0['status'](_0x25e094)[_0x3789('0x1a')](_0x4f67bd);}};}function respondWithFilteredResult(_0x14b10f,_0x5c9478){return function(_0x4edf9b){if(_0x4edf9b){var _0x1772aa=typeof _0x5c9478['offset']===_0x3789('0x1b')&&typeof _0x5c9478['limit']===_0x3789('0x1b');var _0x3d3f87=_0x4edf9b[_0x3789('0x1c')];var _0x51144c=_0x1772aa?0x0:_0x5c9478['offset'];var _0x5798e4=_0x1772aa?_0x4edf9b['count']:_0x5c9478['offset']+_0x5c9478[_0x3789('0x1d')];var _0x4998c1;if(_0x5798e4>=_0x3d3f87){_0x5798e4=_0x3d3f87;_0x4998c1=0xc8;}else{_0x4998c1=0xce;}_0x14b10f[_0x3789('0x19')](_0x4998c1);return _0x14b10f[_0x3789('0x1e')](_0x3789('0x1f'),_0x51144c+'-'+_0x5798e4+'/'+_0x3d3f87)[_0x3789('0x1a')](_0x4edf9b);}return null;};}function patchUpdates(_0x37f305){return function(_0x1a7504){try{jsonpatch[_0x3789('0x20')](_0x1a7504,_0x37f305,!![]);}catch(_0x5a8d04){return BPromise[_0x3789('0x21')](_0x5a8d04);}return _0x1a7504[_0x3789('0x22')]();};}function saveUpdates(_0x203c42,_0x510fd9){return function(_0x5526b7){if(_0x5526b7){return _0x5526b7[_0x3789('0x23')](_0x203c42)['then'](function(_0xe71ba){return _0xe71ba;});}return null;};}function removeEntity(_0x1bdb42,_0x2e721e){return function(_0x19841e){if(_0x19841e){return _0x19841e[_0x3789('0x24')]()[_0x3789('0x25')](function(){var _0x372f9f=_0x19841e[_0x3789('0x26')]({'plain':!![]});var _0xf564f7='CannedAnswers';return db[_0x3789('0x27')][_0x3789('0x24')]({'where':{'type':_0xf564f7,'resourceId':_0x372f9f['id']}})[_0x3789('0x25')](function(){return _0x19841e;});})['then'](function(){_0x1bdb42[_0x3789('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xb88407,_0xf5bd94){return function(_0x872910){if(!_0x872910){_0xb88407[_0x3789('0x18')](0x194);}return _0x872910;};}function handleError(_0xaa8408,_0x14cbd5){_0x14cbd5=_0x14cbd5||0x1f4;return function(_0x1e0ef1){logger['error'](_0x1e0ef1[_0x3789('0x28')]);if(_0x1e0ef1[_0x3789('0x29')]){delete _0x1e0ef1['name'];}_0xaa8408[_0x3789('0x19')](_0x14cbd5)[_0x3789('0x2a')](_0x1e0ef1);};}exports[_0x3789('0x2b')]=function(_0x2bcfd8,_0x39ed6d){var _0x2f6af9={},_0x42b441={},_0x474aac={'count':0x0,'rows':[]};var _0x342bb3=_['map'](db[_0x3789('0x2c')][_0x3789('0x2d')],function(_0x466eed){return{'name':_0x466eed[_0x3789('0x2e')],'type':_0x466eed[_0x3789('0x2f')]['key']};});_0x42b441['model']=_[_0x3789('0x30')](_0x342bb3,_0x3789('0x29'));_0x42b441['query']=_[_0x3789('0x31')](_0x2bcfd8[_0x3789('0x32')]);_0x42b441[_0x3789('0x33')]=_[_0x3789('0x34')](_0x42b441[_0x3789('0x35')],_0x42b441[_0x3789('0x32')]);_0x2f6af9[_0x3789('0x36')]=_[_0x3789('0x34')](_0x42b441[_0x3789('0x35')],qs['fields'](_0x2bcfd8[_0x3789('0x32')][_0x3789('0x37')]));_0x2f6af9[_0x3789('0x36')]=_0x2f6af9[_0x3789('0x36')]['length']?_0x2f6af9[_0x3789('0x36')]:_0x42b441[_0x3789('0x35')];if(!_0x2bcfd8[_0x3789('0x32')][_0x3789('0x38')](_0x3789('0x39'))){_0x2f6af9['limit']=qs[_0x3789('0x1d')](_0x2bcfd8[_0x3789('0x32')]['limit']);_0x2f6af9[_0x3789('0x3a')]=qs[_0x3789('0x3a')](_0x2bcfd8['query'][_0x3789('0x3a')]);}_0x2f6af9[_0x3789('0x3b')]=qs[_0x3789('0x3c')](_0x2bcfd8[_0x3789('0x32')]['sort']);_0x2f6af9[_0x3789('0x3d')]=qs[_0x3789('0x33')](_[_0x3789('0x3e')](_0x2bcfd8[_0x3789('0x32')],_0x42b441['filters']),_0x342bb3);if(_0x2bcfd8[_0x3789('0x32')][_0x3789('0x3f')]){_0x2f6af9[_0x3789('0x3d')]=_[_0x3789('0x40')](_0x2f6af9[_0x3789('0x3d')],{'$or':[{'key':{'$like':'%'+_0x2bcfd8[_0x3789('0x32')][_0x3789('0x3f')]+'%'}},{'value':{'$like':'%'+_0x2bcfd8[_0x3789('0x32')]['filter']+'%'}}]});}_0x2f6af9=_[_0x3789('0x40')]({},_0x2f6af9,_0x2bcfd8[_0x3789('0x41')]);var _0x34a865={'where':_0x2f6af9[_0x3789('0x3d')]};return db[_0x3789('0x2c')][_0x3789('0x1c')](_0x34a865)[_0x3789('0x25')](function(_0x2db87d){_0x474aac['count']=_0x2db87d;if(_0x2bcfd8[_0x3789('0x32')][_0x3789('0x42')]){_0x2f6af9[_0x3789('0x43')]=[{'all':!![]}];}return db[_0x3789('0x2c')][_0x3789('0x44')](_0x2f6af9);})['then'](function(_0x9b92df){_0x474aac[_0x3789('0x45')]=_0x9b92df;return _0x474aac;})[_0x3789('0x25')](respondWithFilteredResult(_0x39ed6d,_0x2f6af9))['catch'](handleError(_0x39ed6d,null));};exports[_0x3789('0x46')]=function(_0x5e60b6,_0x28d782){var _0x4e1caa={'raw':!![],'where':{'id':_0x5e60b6[_0x3789('0x47')]['id']}},_0x27525b={};_0x27525b['model']=_[_0x3789('0x31')](db[_0x3789('0x2c')]['rawAttributes']);_0x27525b[_0x3789('0x32')]=_[_0x3789('0x31')](_0x5e60b6[_0x3789('0x32')]);_0x27525b[_0x3789('0x33')]=_[_0x3789('0x34')](_0x27525b[_0x3789('0x35')],_0x27525b['query']);_0x4e1caa[_0x3789('0x36')]=_[_0x3789('0x34')](_0x27525b[_0x3789('0x35')],qs[_0x3789('0x37')](_0x5e60b6[_0x3789('0x32')][_0x3789('0x37')]));_0x4e1caa[_0x3789('0x36')]=_0x4e1caa['attributes'][_0x3789('0x48')]?_0x4e1caa[_0x3789('0x36')]:_0x27525b['model'];if(_0x5e60b6[_0x3789('0x32')][_0x3789('0x42')]){_0x4e1caa['include']=[{'all':!![]}];}_0x4e1caa=_[_0x3789('0x40')]({},_0x4e1caa,_0x5e60b6[_0x3789('0x41')]);return db[_0x3789('0x2c')]['find'](_0x4e1caa)[_0x3789('0x25')](handleEntityNotFound(_0x28d782,null))['then'](respondWithResult(_0x28d782,null))['catch'](handleError(_0x28d782,null));};exports['update']=function(_0x17c26d,_0x2fc21c){if(_0x17c26d[_0x3789('0x49')]['id']){delete _0x17c26d[_0x3789('0x49')]['id'];}return db['CannedAnswer'][_0x3789('0x4a')]({'where':{'id':_0x17c26d[_0x3789('0x47')]['id']}})[_0x3789('0x25')](handleEntityNotFound(_0x2fc21c,null))[_0x3789('0x25')](saveUpdates(_0x17c26d[_0x3789('0x49')],null))[_0x3789('0x25')](respondWithResult(_0x2fc21c,null))[_0x3789('0x4b')](handleError(_0x2fc21c,null));};exports['destroy']=function(_0x21f59d,_0x5830d0){return db[_0x3789('0x2c')][_0x3789('0x4a')]({'where':{'id':_0x21f59d[_0x3789('0x47')]['id']}})['then'](handleEntityNotFound(_0x5830d0,null))[_0x3789('0x25')](removeEntity(_0x5830d0,null))[_0x3789('0x4b')](handleError(_0x5830d0,null));};exports['create']=function(_0x162179,_0x5ce40d){var _0x4b4ba1={'key':_0x162179[_0x3789('0x49')][_0x3789('0x4c')]};if(_0x162179['body']['MailAccountId']){_0x4b4ba1[_0x3789('0x4d')]=_0x162179['body'][_0x3789('0x4d')];}else if(_0x162179[_0x3789('0x49')][_0x3789('0x4e')]){_0x4b4ba1['SmsAccountId']=_0x162179[_0x3789('0x49')][_0x3789('0x4e')];}else if(_0x162179[_0x3789('0x49')][_0x3789('0x4f')]){_0x4b4ba1[_0x3789('0x4f')]=_0x162179[_0x3789('0x49')][_0x3789('0x4f')];}else if(_0x162179[_0x3789('0x49')][_0x3789('0x50')]){_0x4b4ba1['ChatWebsiteId']=_0x162179[_0x3789('0x49')][_0x3789('0x50')];}return db[_0x3789('0x2c')][_0x3789('0x4a')]({'where':_0x4b4ba1})[_0x3789('0x25')](function(_0x5da8fe){if(_0x5da8fe){throw new db[(_0x3789('0x51'))][(_0x3789('0x52'))](_0x3789('0x53'));}return db['CannedAnswer'][_0x3789('0x54')](_0x162179[_0x3789('0x49')]);})[_0x3789('0x25')](function(_0x1395c8){var _0x1cb2a0=_0x162179[_0x3789('0x55')][_0x3789('0x26')]({'plain':!![]});if(!_0x1cb2a0)throw new Error(_0x3789('0x56'));if(_0x1cb2a0[_0x3789('0x57')]===_0x3789('0x55')){var _0xe3ca39=_0x1395c8[_0x3789('0x26')]({'plain':!![]});return db[_0x3789('0x58')][_0x3789('0x4a')]({'where':{'name':'CannedAnswers','userProfileId':_0x1cb2a0['userProfileId']},'raw':!![]})[_0x3789('0x25')](function(_0x39eb6d){if(_0x39eb6d&&_0x39eb6d[_0x3789('0x59')]===0x0){return db[_0x3789('0x27')]['create']({'name':_0xe3ca39[_0x3789('0x29')],'resourceId':_0xe3ca39['id'],'type':_0x39eb6d[_0x3789('0x29')],'sectionId':_0x39eb6d['id']},{})['then'](function(){return _0x1395c8;});}else{return _0x1395c8;}})['catch'](function(_0x2d9f45){logger[_0x3789('0x5a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2d9f45);throw _0x2d9f45;});}return _0x1395c8;})[_0x3789('0x25')](respondWithResult(_0x5ce40d,0xc9))['catch'](handleError(_0x5ce40d,null));};
\ No newline at end of file
index 554f24e..06a70ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc953=['utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','../../config/environment','exports','define','CannedAnswer','tools_canned_answers'];(function(_0x4b826e,_0x33b6b){var _0x10e06c=function(_0x842a7b){while(--_0x842a7b){_0x4b826e['push'](_0x4b826e['shift']());}};_0x10e06c(++_0x33b6b);}(_0xc953,0x195));var _0x3c95=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0xc953[_0x102e37];return _0x35a07c;};'use strict';var _=require(_0x3c95('0x0'));var util=require(_0x3c95('0x1'));var logger=require(_0x3c95('0x2'))(_0x3c95('0x3'));var moment=require(_0x3c95('0x4'));var BPromise=require('bluebird');var rp=require(_0x3c95('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x3c95('0x6'));var attributes=require('./cannedAnswer.attributes');module[_0x3c95('0x7')]=function(_0x1fe09b,_0x31b33d){return _0x1fe09b[_0x3c95('0x8')](_0x3c95('0x9'),attributes,{'tableName':_0x3c95('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3c95('0xb'),'collate':_0x3c95('0xc')});};
\ No newline at end of file
+var _0x9849=['define','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./cannedAnswer.attributes','exports'];(function(_0xc51b39,_0x4dd5d6){var _0xdb2519=function(_0x99d076){while(--_0x99d076){_0xc51b39['push'](_0xc51b39['shift']());}};_0xdb2519(++_0x4dd5d6);}(_0x9849,0x140));var _0x9984=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x9849[_0x164eca];return _0x2ce562;};'use strict';var _=require(_0x9984('0x0'));var util=require(_0x9984('0x1'));var logger=require(_0x9984('0x2'))('api');var moment=require('moment');var BPromise=require(_0x9984('0x3'));var rp=require(_0x9984('0x4'));var fs=require('fs');var path=require(_0x9984('0x5'));var rimraf=require(_0x9984('0x6'));var config=require(_0x9984('0x7'));var attributes=require(_0x9984('0x8'));module[_0x9984('0x9')]=function(_0x5615ef,_0x4b2c9e){return _0x5615ef[_0x9984('0xa')]('CannedAnswer',attributes,{'tableName':'tools_canned_answers','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 84e41bc..b4543e9 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(_0x3ecd13,_0x13cc21){var _0x8b5c09=function(_0x288244){while(--_0x288244){_0x3ecd13['push'](_0x3ecd13['shift']());}};_0x8b5c09(++_0x13cc21);}(_0xa9e0,0x123));var _0x0a9e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa9e0[_0x38a7ac];return _0x53061a;};'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(_0x4149fd,_0xbcf182){var _0x3b2823=function(_0x1a33f8){while(--_0x1a33f8){_0x4149fd['push'](_0x4149fd['shift']());}};_0x3b2823(++_0xbcf182);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index 68ea2af..7d8f2a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa458=['isAuthenticated','show','update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','./cannedAnswer.controller','get','index','/:id'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa458,0x195));var _0x8a45=function(_0x4fa23c,_0x120df9){_0x4fa23c=_0x4fa23c-0x0;var _0x516487=_0xa458[_0x4fa23c];return _0x516487;};'use strict';var multer=require(_0x8a45('0x0'));var util=require(_0x8a45('0x1'));var path=require(_0x8a45('0x2'));var timeout=require(_0x8a45('0x3'));var express=require('express');var router=express[_0x8a45('0x4')]();var fs_extra=require(_0x8a45('0x5'));var auth=require(_0x8a45('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x8a45('0x7'));router[_0x8a45('0x8')]('/',auth['isAuthenticated'](),controller[_0x8a45('0x9')]);router['get'](_0x8a45('0xa'),auth[_0x8a45('0xb')](),controller[_0x8a45('0xc')]);router['post']('/',auth[_0x8a45('0xb')](),controller['create']);router['put']('/:id',auth[_0x8a45('0xb')](),controller[_0x8a45('0xd')]);router[_0x8a45('0xe')](_0x8a45('0xa'),auth[_0x8a45('0xb')](),controller[_0x8a45('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x4047=['get','index','/:id','isAuthenticated','create','put','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x4047,0x104));var _0x7404=function(_0x5a6dc3,_0x30c3fc){_0x5a6dc3=_0x5a6dc3-0x0;var _0x3cf73c=_0x4047[_0x5a6dc3];return _0x3cf73c;};'use strict';var multer=require(_0x7404('0x0'));var util=require(_0x7404('0x1'));var path=require(_0x7404('0x2'));var timeout=require(_0x7404('0x3'));var express=require(_0x7404('0x4'));var router=express[_0x7404('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x7404('0x6'));var interaction=require(_0x7404('0x7'));var config=require(_0x7404('0x8'));var controller=require(_0x7404('0x9'));router[_0x7404('0xa')]('/',auth['isAuthenticated'](),controller[_0x7404('0xb')]);router[_0x7404('0xa')](_0x7404('0xc'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x7404('0xd')](),controller[_0x7404('0xe')]);router[_0x7404('0xf')]('/:id',auth['isAuthenticated'](),controller['update']);router['delete'](_0x7404('0xc'),auth[_0x7404('0xd')](),controller[_0x7404('0x10')]);module[_0x7404('0x11')]=router;
\ No newline at end of file
index ea78381..5245db4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61ea=['INTEGER','sequelize','exports','DATE','1970-01-01\x2000:00:01','STRING'];(function(_0x1000a5,_0x238386){var _0x4d3077=function(_0x5dcce6){while(--_0x5dcce6){_0x1000a5['push'](_0x1000a5['shift']());}};_0x4d3077(++_0x238386);}(_0x61ea,0x1d5));var _0xa61e=function(_0x3cb09c,_0x43849e){_0x3cb09c=_0x3cb09c-0x0;var _0x2be7cc=_0x61ea[_0x3cb09c];return _0x2be7cc;};'use strict';var Sequelize=require(_0xa61e('0x0'));module[_0xa61e('0x1')]={'calldate':{'type':Sequelize[_0xa61e('0x2')],'allowNull':![],'defaultValue':_0xa61e('0x3')},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize[_0xa61e('0x4')]},'dst':{'type':Sequelize['STRING']},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xa61e('0x4')]},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize[_0xa61e('0x4')]},'lastdata':{'type':Sequelize[_0xa61e('0x4')]},'duration':{'type':Sequelize[_0xa61e('0x5')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0xa61e('0x5')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xa61e('0x4')]},'amaflags':{'type':Sequelize[_0xa61e('0x5')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xa61e('0x4')]},'userfield':{'type':Sequelize[_0xa61e('0x4')]},'uniqueid':{'type':Sequelize[_0xa61e('0x4')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize['STRING']},'peeraccount':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xa61e('0x4')]},'tag':{'type':Sequelize[_0xa61e('0x4')]}};
\ No newline at end of file
+var _0x92ba=['sequelize','exports','1970-01-01\x2000:00:01','STRING','INTEGER'];(function(_0x3df57f,_0x39ee9b){var _0x3a4b94=function(_0x560f2d){while(--_0x560f2d){_0x3df57f['push'](_0x3df57f['shift']());}};_0x3a4b94(++_0x39ee9b);}(_0x92ba,0x17c));var _0xa92b=function(_0x5aaca8,_0xaf7ff3){_0x5aaca8=_0x5aaca8-0x0;var _0x23d392=_0x92ba[_0x5aaca8];return _0x23d392;};'use strict';var Sequelize=require(_0xa92b('0x0'));module[_0xa92b('0x1')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':_0xa92b('0x2')},'clid':{'type':Sequelize[_0xa92b('0x3')]},'src':{'type':Sequelize[_0xa92b('0x3')]},'dst':{'type':Sequelize[_0xa92b('0x3')]},'dcontext':{'type':Sequelize[_0xa92b('0x3')]},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize[_0xa92b('0x3')]},'lastapp':{'type':Sequelize[_0xa92b('0x3')]},'lastdata':{'type':Sequelize[_0xa92b('0x3')]},'duration':{'type':Sequelize[_0xa92b('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xa92b('0x3')]},'amaflags':{'type':Sequelize[_0xa92b('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize[_0xa92b('0x3')]},'uniqueid':{'type':Sequelize[_0xa92b('0x3')]},'linkedid':{'type':Sequelize[_0xa92b('0x3')]},'sequence':{'type':Sequelize[_0xa92b('0x3')]},'peeraccount':{'type':Sequelize[_0xa92b('0x3')]},'type':{'type':Sequelize[_0xa92b('0x3')]},'tag':{'type':Sequelize[_0xa92b('0x3')]}};
\ No newline at end of file
index 8593a87..71737c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ce1=['util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','error','send','index','Cdr','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','map','VIRTUAL','name','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x479160,_0x3ab560){var _0x47ac6d=function(_0x3f7314){while(--_0x3f7314){_0x479160['push'](_0x479160['shift']());}};_0x47ac6d(++_0x3ab560);}(_0x8ce1,0x183));var _0x18ce=function(_0x3d1c96,_0x526df2){_0x3d1c96=_0x3d1c96-0x0;var _0x17f4d9=_0x8ce1[_0x3d1c96];return _0x17f4d9;};'use strict';var emlformat=require(_0x18ce('0x0'));var rimraf=require(_0x18ce('0x1'));var zipdir=require(_0x18ce('0x2'));var jsonpatch=require(_0x18ce('0x3'));var rp=require(_0x18ce('0x4'));var moment=require(_0x18ce('0x5'));var BPromise=require(_0x18ce('0x6'));var Mustache=require(_0x18ce('0x7'));var util=require(_0x18ce('0x8'));var path=require(_0x18ce('0x9'));var sox=require(_0x18ce('0xa'));var csv=require(_0x18ce('0xb'));var ejs=require(_0x18ce('0xc'));var fs=require('fs');var fs_extra=require(_0x18ce('0xd'));var _=require(_0x18ce('0xe'));var squel=require(_0x18ce('0xf'));var crypto=require('crypto');var jsforce=require(_0x18ce('0x10'));var deskjs=require(_0x18ce('0x11'));var toCsv=require(_0x18ce('0xb'));var querystring=require(_0x18ce('0x12'));var Papa=require('papaparse');var Redis=require(_0x18ce('0x13'));var authService=require(_0x18ce('0x14'));var qs=require(_0x18ce('0x15'));var as=require(_0x18ce('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x18ce('0x17'));var utils=require(_0x18ce('0x18'));var config=require(_0x18ce('0x19'));var licenseUtil=require(_0x18ce('0x1a'));var db=require(_0x18ce('0x1b'))['db'];function respondWithStatusCode(_0x5e8c23,_0xbd514b){_0xbd514b=_0xbd514b||0xcc;return function(_0x402ba4){if(_0x402ba4){return _0x5e8c23[_0x18ce('0x1c')](_0xbd514b);}return _0x5e8c23[_0x18ce('0x1d')](_0xbd514b)[_0x18ce('0x1e')]();};}function respondWithResult(_0x5daf04,_0x176797){_0x176797=_0x176797||0xc8;return function(_0xdd4626){if(_0xdd4626){return _0x5daf04[_0x18ce('0x1d')](_0x176797)[_0x18ce('0x1f')](_0xdd4626);}};}function respondWithFilteredResult(_0x46e346,_0x36b5da){return function(_0x17460e){if(_0x17460e){var _0x4a934f=typeof _0x36b5da[_0x18ce('0x20')]===_0x18ce('0x21')&&typeof _0x36b5da[_0x18ce('0x22')]===_0x18ce('0x21');var _0x1edc10=_0x17460e[_0x18ce('0x23')];var _0x482458=_0x4a934f?0x0:_0x36b5da[_0x18ce('0x20')];var _0x29c691=_0x4a934f?_0x17460e[_0x18ce('0x23')]:_0x36b5da['offset']+_0x36b5da[_0x18ce('0x22')];var _0x2fa3d4;if(_0x29c691>=_0x1edc10){_0x29c691=_0x1edc10;_0x2fa3d4=0xc8;}else{_0x2fa3d4=0xce;}_0x46e346[_0x18ce('0x1d')](_0x2fa3d4);return _0x46e346['set'](_0x18ce('0x24'),_0x482458+'-'+_0x29c691+'/'+_0x1edc10)[_0x18ce('0x1f')](_0x17460e);}return null;};}function patchUpdates(_0x5d22cd){return function(_0x29c1ab){try{jsonpatch[_0x18ce('0x25')](_0x29c1ab,_0x5d22cd,!![]);}catch(_0x16802e){return BPromise[_0x18ce('0x26')](_0x16802e);}return _0x29c1ab[_0x18ce('0x27')]();};}function saveUpdates(_0xd41f29,_0x35abf9){return function(_0x545459){if(_0x545459){return _0x545459[_0x18ce('0x28')](_0xd41f29)['then'](function(_0x482c90){return _0x482c90;});}return null;};}function removeEntity(_0x5d2299,_0x32e910){return function(_0x576ecc){if(_0x576ecc){return _0x576ecc[_0x18ce('0x29')]()[_0x18ce('0x2a')](function(){_0x5d2299[_0x18ce('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53abbd,_0x55e17c){return function(_0x317812){if(!_0x317812){_0x53abbd[_0x18ce('0x1c')](0x194);}return _0x317812;};}function handleError(_0x12dbd2,_0x461113){_0x461113=_0x461113||0x1f4;return function(_0x62b2bd){logger[_0x18ce('0x2b')](_0x62b2bd['stack']);if(_0x62b2bd['name']){delete _0x62b2bd['name'];}_0x12dbd2[_0x18ce('0x1d')](_0x461113)[_0x18ce('0x2c')](_0x62b2bd);};}exports[_0x18ce('0x2d')]=function(_0x5f3ec2,_0x1a87f6){var _0xf2683f={},_0x1988e4={},_0x5ef96c={'count':0x0,'rows':[]};var _0x56d296=_['map'](db[_0x18ce('0x2e')][_0x18ce('0x2f')],function(_0x5c2d96){return{'name':_0x5c2d96['fieldName'],'type':_0x5c2d96[_0x18ce('0x30')][_0x18ce('0x31')]};});_0x1988e4[_0x18ce('0x32')]=_['map'](_0x56d296,'name');_0x1988e4[_0x18ce('0x33')]=_[_0x18ce('0x34')](_0x5f3ec2[_0x18ce('0x33')]);_0x1988e4[_0x18ce('0x35')]=_[_0x18ce('0x36')](_0x1988e4[_0x18ce('0x32')],_0x1988e4[_0x18ce('0x33')]);_0xf2683f[_0x18ce('0x37')]=_['intersection'](_0x1988e4['model'],qs[_0x18ce('0x38')](_0x5f3ec2[_0x18ce('0x33')]['fields']));_0xf2683f[_0x18ce('0x37')]=_0xf2683f['attributes'][_0x18ce('0x39')]?_0xf2683f['attributes']:_0x1988e4[_0x18ce('0x32')];if(!_0x5f3ec2[_0x18ce('0x33')][_0x18ce('0x3a')]('nolimit')){_0xf2683f['limit']=qs[_0x18ce('0x22')](_0x5f3ec2[_0x18ce('0x33')]['limit']);_0xf2683f['offset']=qs[_0x18ce('0x20')](_0x5f3ec2[_0x18ce('0x33')][_0x18ce('0x20')]);}_0xf2683f[_0x18ce('0x3b')]=qs[_0x18ce('0x3c')](_0x5f3ec2[_0x18ce('0x33')][_0x18ce('0x3c')]);_0xf2683f[_0x18ce('0x3d')]=qs[_0x18ce('0x35')](_[_0x18ce('0x3e')](_0x5f3ec2[_0x18ce('0x33')],_0x1988e4[_0x18ce('0x35')]),_0x56d296);if(_0x5f3ec2[_0x18ce('0x33')]['filter']){_0xf2683f[_0x18ce('0x3d')]=_[_0x18ce('0x3f')](_0xf2683f[_0x18ce('0x3d')],{'$or':_[_0x18ce('0x40')](_0x56d296,function(_0x1e67dd){if(_0x1e67dd[_0x18ce('0x30')]!==_0x18ce('0x41')){var _0x27c55a={};_0x27c55a[_0x1e67dd[_0x18ce('0x42')]]={'$like':'%'+_0x5f3ec2[_0x18ce('0x33')]['filter']+'%'};return _0x27c55a;}})});}_0xf2683f=_['merge']({},_0xf2683f,_0x5f3ec2[_0x18ce('0x43')]);var _0x23486c={'where':_0xf2683f[_0x18ce('0x3d')]};return db[_0x18ce('0x2e')][_0x18ce('0x23')](_0x23486c)[_0x18ce('0x2a')](function(_0x2eba88){_0x5ef96c['count']=_0x2eba88;if(_0x5f3ec2['query'][_0x18ce('0x44')]){_0xf2683f[_0x18ce('0x45')]=[{'all':!![]}];}return db['Cdr'][_0x18ce('0x46')](_0xf2683f);})[_0x18ce('0x2a')](function(_0x2941ce){_0x5ef96c[_0x18ce('0x47')]=_0x2941ce;return _0x5ef96c;})[_0x18ce('0x2a')](respondWithFilteredResult(_0x1a87f6,_0xf2683f))[_0x18ce('0x48')](handleError(_0x1a87f6,null));};exports[_0x18ce('0x49')]=function(_0x2a96a7,_0x33b409){var _0x1d6d5f={'raw':!![],'where':{'id':_0x2a96a7[_0x18ce('0x4a')]['id']}},_0x3885e6={};_0x3885e6['model']=_[_0x18ce('0x34')](db[_0x18ce('0x2e')][_0x18ce('0x2f')]);_0x3885e6[_0x18ce('0x33')]=_[_0x18ce('0x34')](_0x2a96a7[_0x18ce('0x33')]);_0x3885e6[_0x18ce('0x35')]=_['intersection'](_0x3885e6['model'],_0x3885e6[_0x18ce('0x33')]);_0x1d6d5f[_0x18ce('0x37')]=_[_0x18ce('0x36')](_0x3885e6[_0x18ce('0x32')],qs['fields'](_0x2a96a7[_0x18ce('0x33')][_0x18ce('0x38')]));_0x1d6d5f[_0x18ce('0x37')]=_0x1d6d5f['attributes']['length']?_0x1d6d5f[_0x18ce('0x37')]:_0x3885e6[_0x18ce('0x32')];if(_0x2a96a7['query'][_0x18ce('0x44')]){_0x1d6d5f[_0x18ce('0x45')]=[{'all':!![]}];}_0x1d6d5f=_[_0x18ce('0x3f')]({},_0x1d6d5f,_0x2a96a7[_0x18ce('0x43')]);return db[_0x18ce('0x2e')][_0x18ce('0x4b')](_0x1d6d5f)[_0x18ce('0x2a')](handleEntityNotFound(_0x33b409,null))['then'](respondWithResult(_0x33b409,null))[_0x18ce('0x48')](handleError(_0x33b409,null));};exports[_0x18ce('0x4c')]=function(_0x476c6a,_0x1e445d){return db[_0x18ce('0x2e')][_0x18ce('0x4c')](_0x476c6a[_0x18ce('0x4d')],{})[_0x18ce('0x2a')](respondWithResult(_0x1e445d,0xc9))[_0x18ce('0x48')](handleError(_0x1e445d,null));};exports[_0x18ce('0x28')]=function(_0x1211d0,_0x3f9960){if(_0x1211d0[_0x18ce('0x4d')]['id']){delete _0x1211d0[_0x18ce('0x4d')]['id'];}return db['Cdr'][_0x18ce('0x4b')]({'where':{'id':_0x1211d0[_0x18ce('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3f9960,null))[_0x18ce('0x2a')](saveUpdates(_0x1211d0['body'],null))[_0x18ce('0x2a')](respondWithResult(_0x3f9960,null))['catch'](handleError(_0x3f9960,null));};exports[_0x18ce('0x29')]=function(_0x188f57,_0x3d5b1b){return db[_0x18ce('0x2e')]['find']({'where':{'id':_0x188f57[_0x18ce('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3d5b1b,null))['then'](removeEntity(_0x3d5b1b,null))[_0x18ce('0x48')](handleError(_0x3d5b1b,null));};exports[_0x18ce('0x4e')]=function(_0x8aa4a7,_0x5f164a){return db['Cdr'][_0x18ce('0x4e')]()[_0x18ce('0x2a')](respondWithResult(_0x5f164a,null))[_0x18ce('0x48')](handleError(_0x5f164a,null));};
\ No newline at end of file
+var _0xabce=['../../mysqldb','status','end','json','limit','count','offset','Content-Range','apply','reject','save','update','then','sendStatus','error','name','send','index','map','Cdr','rawAttributes','type','model','query','keys','filters','attributes','fields','length','sort','where','filter','VIRTUAL','merge','includeAll','findAll','rows','catch','params','intersection','include','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x314335,_0xe2eed0){var _0x231ee9=function(_0x4f108c){while(--_0x4f108c){_0x314335['push'](_0x314335['shift']());}};_0x231ee9(++_0xe2eed0);}(_0xabce,0x103));var _0xeabc=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xabce[_0x47b58b];return _0x46bebe;};'use strict';var emlformat=require(_0xeabc('0x0'));var rimraf=require(_0xeabc('0x1'));var zipdir=require(_0xeabc('0x2'));var jsonpatch=require(_0xeabc('0x3'));var rp=require(_0xeabc('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xeabc('0x5'));var util=require(_0xeabc('0x6'));var path=require(_0xeabc('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xeabc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeabc('0x9'));var squel=require('squel');var crypto=require(_0xeabc('0xa'));var jsforce=require(_0xeabc('0xb'));var deskjs=require(_0xeabc('0xc'));var toCsv=require('to-csv');var querystring=require(_0xeabc('0xd'));var Papa=require(_0xeabc('0xe'));var Redis=require(_0xeabc('0xf'));var authService=require(_0xeabc('0x10'));var qs=require(_0xeabc('0x11'));var as=require(_0xeabc('0x12'));var hardwareService=require(_0xeabc('0x13'));var logger=require(_0xeabc('0x14'))(_0xeabc('0x15'));var utils=require(_0xeabc('0x16'));var config=require(_0xeabc('0x17'));var licenseUtil=require(_0xeabc('0x18'));var db=require(_0xeabc('0x19'))['db'];function respondWithStatusCode(_0x3fd0b5,_0x36a92e){_0x36a92e=_0x36a92e||0xcc;return function(_0xcfbf06){if(_0xcfbf06){return _0x3fd0b5['sendStatus'](_0x36a92e);}return _0x3fd0b5[_0xeabc('0x1a')](_0x36a92e)[_0xeabc('0x1b')]();};}function respondWithResult(_0x3251c6,_0x55f0de){_0x55f0de=_0x55f0de||0xc8;return function(_0x5f4ee8){if(_0x5f4ee8){return _0x3251c6[_0xeabc('0x1a')](_0x55f0de)[_0xeabc('0x1c')](_0x5f4ee8);}};}function respondWithFilteredResult(_0x326bac,_0x53d5cb){return function(_0xf913d7){if(_0xf913d7){var _0x638976=typeof _0x53d5cb['offset']==='undefined'&&typeof _0x53d5cb[_0xeabc('0x1d')]==='undefined';var _0x3d0e21=_0xf913d7[_0xeabc('0x1e')];var _0x58a3c0=_0x638976?0x0:_0x53d5cb[_0xeabc('0x1f')];var _0x31dd53=_0x638976?_0xf913d7[_0xeabc('0x1e')]:_0x53d5cb[_0xeabc('0x1f')]+_0x53d5cb[_0xeabc('0x1d')];var _0x5d92e5;if(_0x31dd53>=_0x3d0e21){_0x31dd53=_0x3d0e21;_0x5d92e5=0xc8;}else{_0x5d92e5=0xce;}_0x326bac[_0xeabc('0x1a')](_0x5d92e5);return _0x326bac['set'](_0xeabc('0x20'),_0x58a3c0+'-'+_0x31dd53+'/'+_0x3d0e21)[_0xeabc('0x1c')](_0xf913d7);}return null;};}function patchUpdates(_0x502947){return function(_0x28063a){try{jsonpatch[_0xeabc('0x21')](_0x28063a,_0x502947,!![]);}catch(_0x254590){return BPromise[_0xeabc('0x22')](_0x254590);}return _0x28063a[_0xeabc('0x23')]();};}function saveUpdates(_0x4e99a4,_0xecdbf){return function(_0x10c675){if(_0x10c675){return _0x10c675[_0xeabc('0x24')](_0x4e99a4)['then'](function(_0x457f27){return _0x457f27;});}return null;};}function removeEntity(_0x3854d2,_0x214953){return function(_0x319119){if(_0x319119){return _0x319119['destroy']()[_0xeabc('0x25')](function(){_0x3854d2['status'](0xcc)[_0xeabc('0x1b')]();});}};}function handleEntityNotFound(_0x4d4e29,_0x811f0d){return function(_0x12acbd){if(!_0x12acbd){_0x4d4e29[_0xeabc('0x26')](0x194);}return _0x12acbd;};}function handleError(_0x3f194e,_0x3a1a04){_0x3a1a04=_0x3a1a04||0x1f4;return function(_0x137293){logger[_0xeabc('0x27')](_0x137293['stack']);if(_0x137293['name']){delete _0x137293[_0xeabc('0x28')];}_0x3f194e['status'](_0x3a1a04)[_0xeabc('0x29')](_0x137293);};}exports[_0xeabc('0x2a')]=function(_0x48fb52,_0x2163e6){var _0x38572d={},_0x2b568f={},_0x2f8633={'count':0x0,'rows':[]};var _0x149170=_[_0xeabc('0x2b')](db[_0xeabc('0x2c')][_0xeabc('0x2d')],function(_0x2915c1){return{'name':_0x2915c1['fieldName'],'type':_0x2915c1[_0xeabc('0x2e')]['key']};});_0x2b568f[_0xeabc('0x2f')]=_[_0xeabc('0x2b')](_0x149170,_0xeabc('0x28'));_0x2b568f[_0xeabc('0x30')]=_[_0xeabc('0x31')](_0x48fb52[_0xeabc('0x30')]);_0x2b568f[_0xeabc('0x32')]=_['intersection'](_0x2b568f[_0xeabc('0x2f')],_0x2b568f[_0xeabc('0x30')]);_0x38572d[_0xeabc('0x33')]=_['intersection'](_0x2b568f[_0xeabc('0x2f')],qs[_0xeabc('0x34')](_0x48fb52[_0xeabc('0x30')]['fields']));_0x38572d[_0xeabc('0x33')]=_0x38572d[_0xeabc('0x33')][_0xeabc('0x35')]?_0x38572d['attributes']:_0x2b568f[_0xeabc('0x2f')];if(!_0x48fb52[_0xeabc('0x30')]['hasOwnProperty']('nolimit')){_0x38572d[_0xeabc('0x1d')]=qs[_0xeabc('0x1d')](_0x48fb52['query'][_0xeabc('0x1d')]);_0x38572d[_0xeabc('0x1f')]=qs[_0xeabc('0x1f')](_0x48fb52[_0xeabc('0x30')][_0xeabc('0x1f')]);}_0x38572d['order']=qs[_0xeabc('0x36')](_0x48fb52['query'][_0xeabc('0x36')]);_0x38572d[_0xeabc('0x37')]=qs[_0xeabc('0x32')](_['pick'](_0x48fb52['query'],_0x2b568f[_0xeabc('0x32')]),_0x149170);if(_0x48fb52['query'][_0xeabc('0x38')]){_0x38572d['where']=_['merge'](_0x38572d['where'],{'$or':_['map'](_0x149170,function(_0x1e222a){if(_0x1e222a['type']!==_0xeabc('0x39')){var _0x1ebfb6={};_0x1ebfb6[_0x1e222a['name']]={'$like':'%'+_0x48fb52[_0xeabc('0x30')]['filter']+'%'};return _0x1ebfb6;}})});}_0x38572d=_[_0xeabc('0x3a')]({},_0x38572d,_0x48fb52['options']);var _0xbd7f03={'where':_0x38572d[_0xeabc('0x37')]};return db[_0xeabc('0x2c')]['count'](_0xbd7f03)['then'](function(_0x54a3ae){_0x2f8633[_0xeabc('0x1e')]=_0x54a3ae;if(_0x48fb52[_0xeabc('0x30')][_0xeabc('0x3b')]){_0x38572d['include']=[{'all':!![]}];}return db['Cdr'][_0xeabc('0x3c')](_0x38572d);})[_0xeabc('0x25')](function(_0x5e9cb3){_0x2f8633[_0xeabc('0x3d')]=_0x5e9cb3;return _0x2f8633;})['then'](respondWithFilteredResult(_0x2163e6,_0x38572d))[_0xeabc('0x3e')](handleError(_0x2163e6,null));};exports['show']=function(_0x5defaa,_0x5cd04d){var _0x25958b={'raw':!![],'where':{'id':_0x5defaa[_0xeabc('0x3f')]['id']}},_0x37c926={};_0x37c926[_0xeabc('0x2f')]=_['keys'](db[_0xeabc('0x2c')]['rawAttributes']);_0x37c926[_0xeabc('0x30')]=_[_0xeabc('0x31')](_0x5defaa[_0xeabc('0x30')]);_0x37c926[_0xeabc('0x32')]=_[_0xeabc('0x40')](_0x37c926['model'],_0x37c926['query']);_0x25958b[_0xeabc('0x33')]=_['intersection'](_0x37c926[_0xeabc('0x2f')],qs[_0xeabc('0x34')](_0x5defaa['query'][_0xeabc('0x34')]));_0x25958b[_0xeabc('0x33')]=_0x25958b[_0xeabc('0x33')][_0xeabc('0x35')]?_0x25958b[_0xeabc('0x33')]:_0x37c926[_0xeabc('0x2f')];if(_0x5defaa[_0xeabc('0x30')]['includeAll']){_0x25958b[_0xeabc('0x41')]=[{'all':!![]}];}_0x25958b=_[_0xeabc('0x3a')]({},_0x25958b,_0x5defaa[_0xeabc('0x42')]);return db[_0xeabc('0x2c')][_0xeabc('0x43')](_0x25958b)[_0xeabc('0x25')](handleEntityNotFound(_0x5cd04d,null))[_0xeabc('0x25')](respondWithResult(_0x5cd04d,null))[_0xeabc('0x3e')](handleError(_0x5cd04d,null));};exports[_0xeabc('0x44')]=function(_0x44e714,_0x5689fc){return db[_0xeabc('0x2c')][_0xeabc('0x44')](_0x44e714[_0xeabc('0x45')],{})[_0xeabc('0x25')](respondWithResult(_0x5689fc,0xc9))[_0xeabc('0x3e')](handleError(_0x5689fc,null));};exports[_0xeabc('0x24')]=function(_0x268d95,_0x48df43){if(_0x268d95[_0xeabc('0x45')]['id']){delete _0x268d95[_0xeabc('0x45')]['id'];}return db[_0xeabc('0x2c')][_0xeabc('0x43')]({'where':{'id':_0x268d95[_0xeabc('0x3f')]['id']}})['then'](handleEntityNotFound(_0x48df43,null))[_0xeabc('0x25')](saveUpdates(_0x268d95[_0xeabc('0x45')],null))[_0xeabc('0x25')](respondWithResult(_0x48df43,null))[_0xeabc('0x3e')](handleError(_0x48df43,null));};exports['destroy']=function(_0x400b82,_0x1b3aa4){return db['Cdr'][_0xeabc('0x43')]({'where':{'id':_0x400b82['params']['id']}})[_0xeabc('0x25')](handleEntityNotFound(_0x1b3aa4,null))['then'](removeEntity(_0x1b3aa4,null))[_0xeabc('0x3e')](handleError(_0x1b3aa4,null));};exports[_0xeabc('0x46')]=function(_0x38f988,_0x1524c3){return db[_0xeabc('0x2c')][_0xeabc('0x46')]()[_0xeabc('0x25')](respondWithResult(_0x1524c3,null))[_0xeabc('0x3e')](handleError(_0x1524c3,null));};
\ No newline at end of file
index 1e81156..d60c6f4 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(_0x271a66,_0x232cf3){var _0x500259=function(_0x3f55b1){while(--_0x3f55b1){_0x271a66['push'](_0x271a66['shift']());}};_0x500259(++_0x232cf3);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'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(_0x2a85f8,_0x4958ed){var _0x4c544c=function(_0xccef93){while(--_0xccef93){_0x2a85f8['push'](_0x2a85f8['shift']());}};_0x4c544c(++_0x4958ed);}(_0x7a54,0x106));var _0x47a5=function(_0x10016f,_0x2b32b2){_0x10016f=_0x10016f-0x0;var _0x4f1e2b=_0x7a54[_0x10016f];return _0x4f1e2b;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
index d3715eb..1f1ab6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x454a=['http','request','then','Cdr,\x20%s,\x20%s','debug','Cdr,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x5ad07c,_0x324dcd){var _0x204bae=function(_0x1245bc){while(--_0x1245bc){_0x5ad07c['push'](_0x5ad07c['shift']());}};_0x204bae(++_0x324dcd);}(_0x454a,0xbb));var _0xa454=function(_0x2ab3b1,_0x1a4a5c){_0x2ab3b1=_0x2ab3b1-0x0;var _0x29ae68=_0x454a[_0x2ab3b1];return _0x29ae68;};'use strict';var _=require(_0xa454('0x0'));var util=require(_0xa454('0x1'));var moment=require(_0xa454('0x2'));var BPromise=require('bluebird');var rs=require(_0xa454('0x3'));var fs=require('fs');var Redis=require(_0xa454('0x4'));var db=require(_0xa454('0x5'))['db'];var utils=require(_0xa454('0x6'));var logger=require(_0xa454('0x7'))(_0xa454('0x8'));var config=require(_0xa454('0x9'));var jayson=require(_0xa454('0xa'));var client=jayson['client'][_0xa454('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4bff92,_0x2455f5,_0x219bbf){return new BPromise(function(_0x4934d0,_0x2e30ee){return client[_0xa454('0xc')](_0x4bff92,_0x219bbf)[_0xa454('0xd')](function(_0xee4f22){logger['info'](_0xa454('0xe'),_0x2455f5,'request\x20sent');logger[_0xa454('0xf')](_0xa454('0x10'),_0x2455f5,_0xa454('0x11'),JSON['stringify'](_0xee4f22));if(_0xee4f22['error']){if(_0xee4f22[_0xa454('0x12')]['code']===0x1f4){logger[_0xa454('0x12')](_0xa454('0xe'),_0x2455f5,_0xee4f22[_0xa454('0x12')][_0xa454('0x13')]);return _0x2e30ee(_0xee4f22['error']['message']);}logger[_0xa454('0x12')](_0xa454('0xe'),_0x2455f5,_0xee4f22[_0xa454('0x12')]['message']);return _0x4934d0(_0xee4f22['error'][_0xa454('0x13')]);}else{logger['info'](_0xa454('0xe'),_0x2455f5,_0xa454('0x11'));_0x4934d0(_0xee4f22[_0xa454('0x14')][_0xa454('0x13')]);}})[_0xa454('0x15')](function(_0xf861ef){logger['error'](_0xa454('0xe'),_0x2455f5,_0xf861ef);_0x2e30ee(_0xf861ef);});});}
\ No newline at end of file
+var _0x8b28=['Cdr,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info'];(function(_0x5037ab,_0x43209e){var _0x512adb=function(_0x261783){while(--_0x261783){_0x5037ab['push'](_0x5037ab['shift']());}};_0x512adb(++_0x43209e);}(_0x8b28,0x190));var _0x88b2=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8b28[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x88b2('0x0'));var util=require(_0x88b2('0x1'));var moment=require(_0x88b2('0x2'));var BPromise=require(_0x88b2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x88b2('0x4'));var db=require(_0x88b2('0x5'))['db'];var utils=require(_0x88b2('0x6'));var logger=require(_0x88b2('0x7'))('rpc');var config=require(_0x88b2('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x88b2('0x9')][_0x88b2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x193a14,_0x46363f,_0x5a6136){return new BPromise(function(_0x63b565,_0x67cd46){return client[_0x88b2('0xb')](_0x193a14,_0x5a6136)[_0x88b2('0xc')](function(_0x43573a){logger[_0x88b2('0xd')](_0x88b2('0xe'),_0x46363f,_0x88b2('0xf'));logger[_0x88b2('0x10')]('Cdr,\x20%s,\x20%s,\x20%s',_0x46363f,_0x88b2('0xf'),JSON[_0x88b2('0x11')](_0x43573a));if(_0x43573a[_0x88b2('0x12')]){if(_0x43573a[_0x88b2('0x12')][_0x88b2('0x13')]===0x1f4){logger[_0x88b2('0x12')](_0x88b2('0xe'),_0x46363f,_0x43573a[_0x88b2('0x12')]['message']);return _0x67cd46(_0x43573a[_0x88b2('0x12')][_0x88b2('0x14')]);}logger[_0x88b2('0x12')](_0x88b2('0xe'),_0x46363f,_0x43573a[_0x88b2('0x12')][_0x88b2('0x14')]);return _0x63b565(_0x43573a[_0x88b2('0x12')][_0x88b2('0x14')]);}else{logger[_0x88b2('0xd')](_0x88b2('0xe'),_0x46363f,_0x88b2('0xf'));_0x63b565(_0x43573a[_0x88b2('0x15')][_0x88b2('0x14')]);}})[_0x88b2('0x16')](function(_0x490664){logger['error'](_0x88b2('0xe'),_0x46363f,_0x490664);_0x67cd46(_0x490664);});});}
\ No newline at end of file
index 40a4725..a852e0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['../../components/interaction/service','../../config/environment','./cdr.controller','get','index','isAuthenticated','describe','/:id','show','post','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x53cf52,_0x3040a3){var _0xe1f7c7=function(_0x54dcf0){while(--_0x54dcf0){_0x53cf52['push'](_0x53cf52['shift']());}};_0xe1f7c7(++_0x3040a3);}(_0xb10b,0x12a));var _0xbb10=function(_0x2e30d8,_0x344b2c){_0x2e30d8=_0x2e30d8-0x0;var _0x347234=_0xb10b[_0x2e30d8];return _0x347234;};'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 _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cdr.controller','get','index','/describe','show','post'];(function(_0x4af01e,_0x543f5c){var _0x178c11=function(_0x2c2f76){while(--_0x2c2f76){_0x4af01e['push'](_0x4af01e['shift']());}};_0x178c11(++_0x543f5c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xa9e0[_0x31e29a];return _0x32d892;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')](_0x0a9e('0x10'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
index 64c18d6..889732b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1e3=['STRING','noop','TEXT','sequelize','INTEGER'];(function(_0x249a86,_0x1a7e3c){var _0x264d34=function(_0x38f8ea){while(--_0x38f8ea){_0x249a86['push'](_0x249a86['shift']());}};_0x264d34(++_0x1a7e3c);}(_0xc1e3,0x148));var _0x3c1e=function(_0x1de6cb,_0x532a6c){_0x1de6cb=_0x1de6cb-0x0;var _0x1dd289=_0xc1e3[_0x1de6cb];return _0x1dd289;};'use strict';var Sequelize=require(_0x3c1e('0x0'));module['exports']={'priority':{'type':Sequelize[_0x3c1e('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x3c1e('0x2')],'allowNull':![],'defaultValue':_0x3c1e('0x3')},'appdata':{'type':Sequelize[_0x3c1e('0x4')]()},'description':{'type':Sequelize[_0x3c1e('0x2')]},'interval':{'type':Sequelize[_0x3c1e('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x859b=['*,*,*,*','INTEGER','STRING','noop','TEXT'];(function(_0x26617b,_0x33a2bb){var _0x24f91b=function(_0x45ede0){while(--_0x45ede0){_0x26617b['push'](_0x26617b['shift']());}};_0x24f91b(++_0x33a2bb);}(_0x859b,0xe2));var _0xb859=function(_0x332299,_0x247952){_0x332299=_0x332299-0x0;var _0x5f4d5b=_0x859b[_0x332299];return _0x5f4d5b;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize[_0xb859('0x0')],'allowNull':![]},'app':{'type':Sequelize[_0xb859('0x1')],'allowNull':![],'defaultValue':_0xb859('0x2')},'appdata':{'type':Sequelize[_0xb859('0x3')]()},'description':{'type':Sequelize[_0xb859('0x1')]},'interval':{'type':Sequelize[_0xb859('0x1')],'defaultValue':_0xb859('0x4')}};
\ No newline at end of file
index 3b8f774..8291e39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbe1=['lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','set','apply','save','update','then','destroy','error','stack','name','send','show','params','keys','ChatApplication','rawAttributes','query','filters','intersection','model','attributes','fields','length','includeAll','include','find','catch','body','rimraf','bluebird','mustache','path','to-csv','ejs'];(function(_0x2e35a6,_0x5ef737){var _0x450c20=function(_0x4c68cf){while(--_0x4c68cf){_0x2e35a6['push'](_0x2e35a6['shift']());}};_0x450c20(++_0x5ef737);}(_0xcbe1,0x1a2));var _0x1cbe=function(_0x114e6a,_0x3dc9d2){_0x114e6a=_0x114e6a-0x0;var _0x423189=_0xcbe1[_0x114e6a];return _0x423189;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1cbe('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x1cbe('0x1'));var Mustache=require(_0x1cbe('0x2'));var util=require('util');var path=require(_0x1cbe('0x3'));var sox=require('sox');var csv=require(_0x1cbe('0x4'));var ejs=require(_0x1cbe('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1cbe('0x6'));var squel=require(_0x1cbe('0x7'));var crypto=require(_0x1cbe('0x8'));var jsforce=require(_0x1cbe('0x9'));var deskjs=require(_0x1cbe('0xa'));var toCsv=require(_0x1cbe('0x4'));var querystring=require(_0x1cbe('0xb'));var Papa=require(_0x1cbe('0xc'));var Redis=require('ioredis');var authService=require(_0x1cbe('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x1cbe('0xe'));var hardwareService=require(_0x1cbe('0xf'));var logger=require(_0x1cbe('0x10'))(_0x1cbe('0x11'));var utils=require('../../config/utils');var config=require(_0x1cbe('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x1cbe('0x13'))['db'];function respondWithStatusCode(_0x15f8a9,_0x4959a8){_0x4959a8=_0x4959a8||0xcc;return function(_0x42da0e){if(_0x42da0e){return _0x15f8a9[_0x1cbe('0x14')](_0x4959a8);}return _0x15f8a9[_0x1cbe('0x15')](_0x4959a8)['end']();};}function respondWithResult(_0x244e61,_0x42a345){_0x42a345=_0x42a345||0xc8;return function(_0x2304c2){if(_0x2304c2){return _0x244e61[_0x1cbe('0x15')](_0x42a345)[_0x1cbe('0x16')](_0x2304c2);}};}function respondWithFilteredResult(_0x14784f,_0x3eb11f){return function(_0x25093a){if(_0x25093a){var _0x109cd7=typeof _0x3eb11f[_0x1cbe('0x17')]==='undefined'&&typeof _0x3eb11f[_0x1cbe('0x18')]===_0x1cbe('0x19');var _0x244a1d=_0x25093a['count'];var _0x1836a7=_0x109cd7?0x0:_0x3eb11f[_0x1cbe('0x17')];var _0x45268b=_0x109cd7?_0x25093a['count']:_0x3eb11f['offset']+_0x3eb11f[_0x1cbe('0x18')];var _0x75e87a;if(_0x45268b>=_0x244a1d){_0x45268b=_0x244a1d;_0x75e87a=0xc8;}else{_0x75e87a=0xce;}_0x14784f[_0x1cbe('0x15')](_0x75e87a);return _0x14784f[_0x1cbe('0x1a')]('Content-Range',_0x1836a7+'-'+_0x45268b+'/'+_0x244a1d)['json'](_0x25093a);}return null;};}function patchUpdates(_0x3f2d7d){return function(_0x3bf29c){try{jsonpatch[_0x1cbe('0x1b')](_0x3bf29c,_0x3f2d7d,!![]);}catch(_0x56f3c6){return BPromise['reject'](_0x56f3c6);}return _0x3bf29c[_0x1cbe('0x1c')]();};}function saveUpdates(_0x4aff8d,_0x33b678){return function(_0x192a76){if(_0x192a76){return _0x192a76[_0x1cbe('0x1d')](_0x4aff8d)[_0x1cbe('0x1e')](function(_0x19b93f){return _0x19b93f;});}return null;};}function removeEntity(_0x1e175b,_0x2aedba){return function(_0x23495c){if(_0x23495c){return _0x23495c[_0x1cbe('0x1f')]()['then'](function(){_0x1e175b[_0x1cbe('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1fb6aa,_0x2208bd){return function(_0x384845){if(!_0x384845){_0x1fb6aa['sendStatus'](0x194);}return _0x384845;};}function handleError(_0x26a5b7,_0x17066a){_0x17066a=_0x17066a||0x1f4;return function(_0x1b391d){logger[_0x1cbe('0x20')](_0x1b391d[_0x1cbe('0x21')]);if(_0x1b391d[_0x1cbe('0x22')]){delete _0x1b391d['name'];}_0x26a5b7[_0x1cbe('0x15')](_0x17066a)[_0x1cbe('0x23')](_0x1b391d);};}exports[_0x1cbe('0x24')]=function(_0x5d781d,_0x4c840e){var _0xa30ec5={'raw':!![],'where':{'id':_0x5d781d[_0x1cbe('0x25')]['id']}},_0x52d0d5={};_0x52d0d5['model']=_[_0x1cbe('0x26')](db[_0x1cbe('0x27')][_0x1cbe('0x28')]);_0x52d0d5[_0x1cbe('0x29')]=_['keys'](_0x5d781d[_0x1cbe('0x29')]);_0x52d0d5[_0x1cbe('0x2a')]=_[_0x1cbe('0x2b')](_0x52d0d5[_0x1cbe('0x2c')],_0x52d0d5[_0x1cbe('0x29')]);_0xa30ec5[_0x1cbe('0x2d')]=_['intersection'](_0x52d0d5['model'],qs[_0x1cbe('0x2e')](_0x5d781d['query'][_0x1cbe('0x2e')]));_0xa30ec5[_0x1cbe('0x2d')]=_0xa30ec5['attributes'][_0x1cbe('0x2f')]?_0xa30ec5['attributes']:_0x52d0d5[_0x1cbe('0x2c')];if(_0x5d781d[_0x1cbe('0x29')][_0x1cbe('0x30')]){_0xa30ec5[_0x1cbe('0x31')]=[{'all':!![]}];}_0xa30ec5=_['merge']({},_0xa30ec5,_0x5d781d['options']);return db[_0x1cbe('0x27')][_0x1cbe('0x32')](_0xa30ec5)[_0x1cbe('0x1e')](handleEntityNotFound(_0x4c840e,null))[_0x1cbe('0x1e')](respondWithResult(_0x4c840e,null))[_0x1cbe('0x33')](handleError(_0x4c840e,null));};exports['update']=function(_0x431f13,_0x1602fd){if(_0x431f13['body']['id']){delete _0x431f13[_0x1cbe('0x34')]['id'];}return db[_0x1cbe('0x27')][_0x1cbe('0x32')]({'where':{'id':_0x431f13['params']['id']}})['then'](handleEntityNotFound(_0x1602fd,null))[_0x1cbe('0x1e')](saveUpdates(_0x431f13[_0x1cbe('0x34')],null))[_0x1cbe('0x1e')](respondWithResult(_0x1602fd,null))[_0x1cbe('0x33')](handleError(_0x1602fd,null));};exports[_0x1cbe('0x1f')]=function(_0x42d45b,_0x2bdc30){return db[_0x1cbe('0x27')]['find']({'where':{'id':_0x42d45b[_0x1cbe('0x25')]['id']}})['then'](handleEntityNotFound(_0x2bdc30,null))[_0x1cbe('0x1e')](removeEntity(_0x2bdc30,null))['catch'](handleError(_0x2bdc30,null));};
\ No newline at end of file
+var _0x9f94=['destroy','then','error','stack','name','show','params','model','keys','rawAttributes','query','filters','attributes','intersection','fields','length','includeAll','include','merge','ChatApplication','find','body','catch','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','update'];(function(_0x2ddfd9,_0x5877d0){var _0x2668f0=function(_0x70ad6f){while(--_0x70ad6f){_0x2ddfd9['push'](_0x2ddfd9['shift']());}};_0x2668f0(++_0x5877d0);}(_0x9f94,0x1e7));var _0x49f9=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x9f94[_0x4565bf];return _0x5610ba;};'use strict';var emlformat=require(_0x49f9('0x0'));var rimraf=require(_0x49f9('0x1'));var zipdir=require(_0x49f9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x49f9('0x3'));var BPromise=require(_0x49f9('0x4'));var Mustache=require(_0x49f9('0x5'));var util=require(_0x49f9('0x6'));var path=require(_0x49f9('0x7'));var sox=require('sox');var csv=require(_0x49f9('0x8'));var ejs=require(_0x49f9('0x9'));var fs=require('fs');var fs_extra=require(_0x49f9('0xa'));var _=require(_0x49f9('0xb'));var squel=require(_0x49f9('0xc'));var crypto=require(_0x49f9('0xd'));var jsforce=require(_0x49f9('0xe'));var deskjs=require(_0x49f9('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x49f9('0x10'));var Redis=require('ioredis');var authService=require(_0x49f9('0x11'));var qs=require(_0x49f9('0x12'));var as=require(_0x49f9('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x49f9('0x14'))('api');var utils=require(_0x49f9('0x15'));var config=require(_0x49f9('0x16'));var licenseUtil=require(_0x49f9('0x17'));var db=require(_0x49f9('0x18'))['db'];function respondWithStatusCode(_0x530980,_0x52c3fe){_0x52c3fe=_0x52c3fe||0xcc;return function(_0x446fb1){if(_0x446fb1){return _0x530980[_0x49f9('0x19')](_0x52c3fe);}return _0x530980[_0x49f9('0x1a')](_0x52c3fe)[_0x49f9('0x1b')]();};}function respondWithResult(_0x47cb50,_0x4e7790){_0x4e7790=_0x4e7790||0xc8;return function(_0x5f1577){if(_0x5f1577){return _0x47cb50[_0x49f9('0x1a')](_0x4e7790)['json'](_0x5f1577);}};}function respondWithFilteredResult(_0x204951,_0x4b8228){return function(_0x398a05){if(_0x398a05){var _0x760ac=typeof _0x4b8228['offset']===_0x49f9('0x1c')&&typeof _0x4b8228[_0x49f9('0x1d')]===_0x49f9('0x1c');var _0x28bb3e=_0x398a05[_0x49f9('0x1e')];var _0x509610=_0x760ac?0x0:_0x4b8228[_0x49f9('0x1f')];var _0x359d48=_0x760ac?_0x398a05[_0x49f9('0x1e')]:_0x4b8228[_0x49f9('0x1f')]+_0x4b8228[_0x49f9('0x1d')];var _0x1971e3;if(_0x359d48>=_0x28bb3e){_0x359d48=_0x28bb3e;_0x1971e3=0xc8;}else{_0x1971e3=0xce;}_0x204951[_0x49f9('0x1a')](_0x1971e3);return _0x204951[_0x49f9('0x20')](_0x49f9('0x21'),_0x509610+'-'+_0x359d48+'/'+_0x28bb3e)['json'](_0x398a05);}return null;};}function patchUpdates(_0x4f0bc9){return function(_0x916ef5){try{jsonpatch['apply'](_0x916ef5,_0x4f0bc9,!![]);}catch(_0x3e8a62){return BPromise['reject'](_0x3e8a62);}return _0x916ef5['save']();};}function saveUpdates(_0x42c0aa,_0xde1383){return function(_0x4e92e5){if(_0x4e92e5){return _0x4e92e5[_0x49f9('0x22')](_0x42c0aa)['then'](function(_0x4a01a8){return _0x4a01a8;});}return null;};}function removeEntity(_0xf2afb7,_0xaadbfc){return function(_0x5757d3){if(_0x5757d3){return _0x5757d3[_0x49f9('0x23')]()[_0x49f9('0x24')](function(){_0xf2afb7['status'](0xcc)[_0x49f9('0x1b')]();});}};}function handleEntityNotFound(_0x184b85,_0x2a897d){return function(_0x2272d3){if(!_0x2272d3){_0x184b85['sendStatus'](0x194);}return _0x2272d3;};}function handleError(_0xa559a2,_0x3aff06){_0x3aff06=_0x3aff06||0x1f4;return function(_0x126aa2){logger[_0x49f9('0x25')](_0x126aa2[_0x49f9('0x26')]);if(_0x126aa2[_0x49f9('0x27')]){delete _0x126aa2[_0x49f9('0x27')];}_0xa559a2['status'](_0x3aff06)['send'](_0x126aa2);};}exports[_0x49f9('0x28')]=function(_0xc64e23,_0x3f95f5){var _0xfc15e={'raw':!![],'where':{'id':_0xc64e23[_0x49f9('0x29')]['id']}},_0x51adc3={};_0x51adc3[_0x49f9('0x2a')]=_[_0x49f9('0x2b')](db['ChatApplication'][_0x49f9('0x2c')]);_0x51adc3['query']=_[_0x49f9('0x2b')](_0xc64e23[_0x49f9('0x2d')]);_0x51adc3[_0x49f9('0x2e')]=_['intersection'](_0x51adc3[_0x49f9('0x2a')],_0x51adc3[_0x49f9('0x2d')]);_0xfc15e[_0x49f9('0x2f')]=_[_0x49f9('0x30')](_0x51adc3[_0x49f9('0x2a')],qs[_0x49f9('0x31')](_0xc64e23[_0x49f9('0x2d')][_0x49f9('0x31')]));_0xfc15e[_0x49f9('0x2f')]=_0xfc15e[_0x49f9('0x2f')][_0x49f9('0x32')]?_0xfc15e[_0x49f9('0x2f')]:_0x51adc3[_0x49f9('0x2a')];if(_0xc64e23[_0x49f9('0x2d')][_0x49f9('0x33')]){_0xfc15e[_0x49f9('0x34')]=[{'all':!![]}];}_0xfc15e=_[_0x49f9('0x35')]({},_0xfc15e,_0xc64e23['options']);return db[_0x49f9('0x36')][_0x49f9('0x37')](_0xfc15e)[_0x49f9('0x24')](handleEntityNotFound(_0x3f95f5,null))[_0x49f9('0x24')](respondWithResult(_0x3f95f5,null))['catch'](handleError(_0x3f95f5,null));};exports['update']=function(_0xa7c6d4,_0x4b5b84){if(_0xa7c6d4[_0x49f9('0x38')]['id']){delete _0xa7c6d4[_0x49f9('0x38')]['id'];}return db[_0x49f9('0x36')][_0x49f9('0x37')]({'where':{'id':_0xa7c6d4[_0x49f9('0x29')]['id']}})[_0x49f9('0x24')](handleEntityNotFound(_0x4b5b84,null))[_0x49f9('0x24')](saveUpdates(_0xa7c6d4['body'],null))[_0x49f9('0x24')](respondWithResult(_0x4b5b84,null))[_0x49f9('0x39')](handleError(_0x4b5b84,null));};exports['destroy']=function(_0x4f35b7,_0x4a1d1f){return db[_0x49f9('0x36')]['find']({'where':{'id':_0x4f35b7['params']['id']}})[_0x49f9('0x24')](handleEntityNotFound(_0x4a1d1f,null))[_0x49f9('0x24')](removeEntity(_0x4a1d1f,null))[_0x49f9('0x39')](handleError(_0x4a1d1f,null));};
\ No newline at end of file
index 7ef5011..69ec425 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7e9=['ChatApplication','chat_applications','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','path','rimraf','exports','define'];(function(_0x82c774,_0x518cd2){var _0x48cfaf=function(_0x1a1f81){while(--_0x1a1f81){_0x82c774['push'](_0x82c774['shift']());}};_0x48cfaf(++_0x518cd2);}(_0xc7e9,0x1ef));var _0x9c7e=function(_0x1a72f3,_0x217011){_0x1a72f3=_0x1a72f3-0x0;var _0x57ef47=_0xc7e9[_0x1a72f3];return _0x57ef47;};'use strict';var _=require(_0x9c7e('0x0'));var util=require(_0x9c7e('0x1'));var logger=require('../../config/logger')(_0x9c7e('0x2'));var moment=require(_0x9c7e('0x3'));var BPromise=require(_0x9c7e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9c7e('0x5'));var rimraf=require(_0x9c7e('0x6'));var config=require('../../config/environment');var attributes=require('./chatApplication.attributes');module[_0x9c7e('0x7')]=function(_0x4e4ccc,_0x1e5135){return _0x4e4ccc[_0x9c7e('0x8')](_0x9c7e('0x9'),attributes,{'tableName':_0x9c7e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x9c7e('0xb')});};
\ No newline at end of file
+var _0x49f8=['utf8mb4_unicode_ci','lodash','util','moment','bluebird','request-promise','./chatApplication.attributes','exports','define','utf8mb4'];(function(_0x3ca929,_0x1ad240){var _0x9c0a04=function(_0x438737){while(--_0x438737){_0x3ca929['push'](_0x3ca929['shift']());}};_0x9c0a04(++_0x1ad240);}(_0x49f8,0x105));var _0x849f=function(_0x6f66f4,_0x1f410a){_0x6f66f4=_0x6f66f4-0x0;var _0x208926=_0x49f8[_0x6f66f4];return _0x208926;};'use strict';var _=require(_0x849f('0x0'));var util=require(_0x849f('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x849f('0x2'));var BPromise=require(_0x849f('0x3'));var rp=require(_0x849f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x849f('0x5'));module[_0x849f('0x6')]=function(_0x43aa94,_0x15562f){return _0x43aa94[_0x849f('0x7')]('ChatApplication',attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x849f('0x8'),'collate':_0x849f('0x9')});};
\ No newline at end of file
index 0b429d4..3cb2d22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2d8=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result'];(function(_0x2b668b,_0x373cd3){var _0x5ac01a=function(_0x1ada5b){while(--_0x1ada5b){_0x2b668b['push'](_0x2b668b['shift']());}};_0x5ac01a(++_0x373cd3);}(_0xa2d8,0x114));var _0x8a2d=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa2d8[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x8a2d('0x0'));var util=require(_0x8a2d('0x1'));var moment=require(_0x8a2d('0x2'));var BPromise=require(_0x8a2d('0x3'));var rs=require(_0x8a2d('0x4'));var fs=require('fs');var Redis=require(_0x8a2d('0x5'));var db=require(_0x8a2d('0x6'))['db'];var utils=require(_0x8a2d('0x7'));var logger=require(_0x8a2d('0x8'))('rpc');var config=require(_0x8a2d('0x9'));var jayson=require(_0x8a2d('0xa'));var client=jayson['client'][_0x8a2d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5c6f11,_0x5b3fbf,_0x40b18f){return new BPromise(function(_0x292b24,_0x4ad7f9){return client[_0x8a2d('0xc')](_0x5c6f11,_0x40b18f)[_0x8a2d('0xd')](function(_0x2405e8){logger['info'](_0x8a2d('0xe'),_0x5b3fbf,_0x8a2d('0xf'));logger[_0x8a2d('0x10')](_0x8a2d('0x11'),_0x5b3fbf,'request\x20sent',JSON[_0x8a2d('0x12')](_0x2405e8));if(_0x2405e8['error']){if(_0x2405e8['error'][_0x8a2d('0x13')]===0x1f4){logger['error'](_0x8a2d('0xe'),_0x5b3fbf,_0x2405e8['error']['message']);return _0x4ad7f9(_0x2405e8[_0x8a2d('0x14')]['message']);}logger['error']('ChatApplication,\x20%s,\x20%s',_0x5b3fbf,_0x2405e8[_0x8a2d('0x14')][_0x8a2d('0x15')]);return _0x292b24(_0x2405e8[_0x8a2d('0x14')][_0x8a2d('0x15')]);}else{logger[_0x8a2d('0x16')](_0x8a2d('0xe'),_0x5b3fbf,_0x8a2d('0xf'));_0x292b24(_0x2405e8[_0x8a2d('0x17')][_0x8a2d('0x15')]);}})[_0x8a2d('0x18')](function(_0x23fe37){logger[_0x8a2d('0x14')](_0x8a2d('0xe'),_0x5b3fbf,_0x23fe37);_0x4ad7f9(_0x23fe37);});});}
\ No newline at end of file
+var _0x6734=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatApplication,\x20%s,\x20%s','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6734,0x186));var _0x4673=function(_0x548e64,_0x29e562){_0x548e64=_0x548e64-0x0;var _0x47d34e=_0x6734[_0x548e64];return _0x47d34e;};'use strict';var _=require(_0x4673('0x0'));var util=require(_0x4673('0x1'));var moment=require(_0x4673('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4673('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4673('0x4'));var logger=require(_0x4673('0x5'))(_0x4673('0x6'));var config=require(_0x4673('0x7'));var jayson=require(_0x4673('0x8'));var client=jayson[_0x4673('0x9')][_0x4673('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x42b19e,_0x71fc91,_0x3dc636){return new BPromise(function(_0x5a9db4,_0x23676a){return client[_0x4673('0xb')](_0x42b19e,_0x3dc636)[_0x4673('0xc')](function(_0x552256){logger[_0x4673('0xd')](_0x4673('0xe'),_0x71fc91,'request\x20sent');logger['debug'](_0x4673('0xf'),_0x71fc91,'request\x20sent',JSON[_0x4673('0x10')](_0x552256));if(_0x552256[_0x4673('0x11')]){if(_0x552256['error'][_0x4673('0x12')]===0x1f4){logger[_0x4673('0x11')]('ChatApplication,\x20%s,\x20%s',_0x71fc91,_0x552256[_0x4673('0x11')]['message']);return _0x23676a(_0x552256[_0x4673('0x11')]['message']);}logger[_0x4673('0x11')](_0x4673('0xe'),_0x71fc91,_0x552256[_0x4673('0x11')][_0x4673('0x13')]);return _0x5a9db4(_0x552256[_0x4673('0x11')][_0x4673('0x13')]);}else{logger[_0x4673('0xd')](_0x4673('0xe'),_0x71fc91,_0x4673('0x14'));_0x5a9db4(_0x552256['result']['message']);}})[_0x4673('0x15')](function(_0x3c82d9){logger[_0x4673('0x11')](_0x4673('0xe'),_0x71fc91,_0x3c82d9);_0x23676a(_0x3c82d9);});});}
\ No newline at end of file
index a823311..209974b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a18=['get','isAuthenticated','show','put','/:id','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x455c6c,_0x1e78b7){var _0x488242=function(_0x3e8fb0){while(--_0x3e8fb0){_0x455c6c['push'](_0x455c6c['shift']());}};_0x488242(++_0x1e78b7);}(_0x0a18,0xcb));var _0x80a1=function(_0x4dc7b9,_0x319d5a){_0x4dc7b9=_0x4dc7b9-0x0;var _0x3ab114=_0x0a18[_0x4dc7b9];return _0x3ab114;};'use strict';var multer=require(_0x80a1('0x0'));var util=require(_0x80a1('0x1'));var path=require(_0x80a1('0x2'));var timeout=require('connect-timeout');var express=require(_0x80a1('0x3'));var router=express[_0x80a1('0x4')]();var fs_extra=require(_0x80a1('0x5'));var auth=require(_0x80a1('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./chatApplication.controller');router[_0x80a1('0x7')]('/:id',auth[_0x80a1('0x8')](),controller[_0x80a1('0x9')]);router[_0x80a1('0xa')](_0x80a1('0xb'),auth[_0x80a1('0x8')](),controller[_0x80a1('0xc')]);router[_0x80a1('0xd')]('/:id',auth[_0x80a1('0x8')](),controller[_0x80a1('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0xeb75=['put','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','/:id','isAuthenticated','show'];(function(_0x90ed8d,_0x20648b){var _0x35c95d=function(_0x25bafa){while(--_0x25bafa){_0x90ed8d['push'](_0x90ed8d['shift']());}};_0x35c95d(++_0x20648b);}(_0xeb75,0xed));var _0x5eb7=function(_0x46eb54,_0x4f1eac){_0x46eb54=_0x46eb54-0x0;var _0x3902b2=_0xeb75[_0x46eb54];return _0x3902b2;};'use strict';var multer=require(_0x5eb7('0x0'));var util=require(_0x5eb7('0x1'));var path=require(_0x5eb7('0x2'));var timeout=require(_0x5eb7('0x3'));var express=require(_0x5eb7('0x4'));var router=express[_0x5eb7('0x5')]();var fs_extra=require(_0x5eb7('0x6'));var auth=require(_0x5eb7('0x7'));var interaction=require(_0x5eb7('0x8'));var config=require(_0x5eb7('0x9'));var controller=require(_0x5eb7('0xa'));router[_0x5eb7('0xb')](_0x5eb7('0xc'),auth[_0x5eb7('0xd')](),controller[_0x5eb7('0xe')]);router[_0x5eb7('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x5eb7('0x10')]);router['delete'](_0x5eb7('0xc'),auth[_0x5eb7('0xd')](),controller[_0x5eb7('0x11')]);module['exports']=router;
\ No newline at end of file
index 836acd2..e57e8e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7880=['BOOLEAN','sequelize','STRING'];(function(_0xa7a827,_0x152be9){var _0x4fa7e2=function(_0x29ff4d){while(--_0x29ff4d){_0xa7a827['push'](_0xa7a827['shift']());}};_0x4fa7e2(++_0x152be9);}(_0x7880,0x10f));var _0x0788=function(_0x44a3b0,_0x352810){_0x44a3b0=_0x44a3b0-0x0;var _0x39e6f6=_0x7880[_0x44a3b0];return _0x39e6f6;};'use strict';var Sequelize=require(_0x0788('0x0'));module['exports']={'name':{'type':Sequelize[_0x0788('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x0788('0x1')]},'write':{'type':Sequelize[_0x0788('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x0a6b=['sequelize','BOOLEAN'];(function(_0x9a6c75,_0x2b9dbd){var _0xc07431=function(_0x42abb6){while(--_0x42abb6){_0x9a6c75['push'](_0x9a6c75['shift']());}};_0xc07431(++_0x2b9dbd);}(_0x0a6b,0x18e));var _0xb0a6=function(_0x3f474a,_0xd54130){_0x3f474a=_0x3f474a-0x0;var _0x272589=_0x0a6b[_0x3f474a];return _0x272589;};'use strict';var Sequelize=require(_0xb0a6('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'write':{'type':Sequelize[_0xb0a6('0x1')],'defaultValue':!![]}};
\ No newline at end of file
index 5341ce2..1e79386 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x893e=['stack','name','send','index','map','ChatGroup','type','key','model','keys','filters','intersection','attributes','query','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','rawAttributes','create','body','update','find','describe','user','toInteger','addMembers','ids','getMembers','findOne','User','fields','hasOwnProperty','removeMembers','addMessage','ChatGroupId','ChatInternalMessage','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','lodash','squel','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','destroy','then','sendStatus'];(function(_0x19429a,_0x59c591){var _0x1a3390=function(_0x39f931){while(--_0x39f931){_0x19429a['push'](_0x19429a['shift']());}};_0x1a3390(++_0x59c591);}(_0x893e,0x1b6));var _0xe893=function(_0x50eefa,_0x11f515){_0x50eefa=_0x50eefa-0x0;var _0x27a7db=_0x893e[_0x50eefa];return _0x27a7db;};'use strict';var emlformat=require(_0xe893('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe893('0x1'));var jsonpatch=require(_0xe893('0x2'));var rp=require(_0xe893('0x3'));var moment=require(_0xe893('0x4'));var BPromise=require(_0xe893('0x5'));var Mustache=require(_0xe893('0x6'));var util=require(_0xe893('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xe893('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe893('0x9'));var squel=require(_0xe893('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe893('0x8'));var querystring=require(_0xe893('0xb'));var Papa=require(_0xe893('0xc'));var Redis=require(_0xe893('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xe893('0xe'));var as=require(_0xe893('0xf'));var hardwareService=require(_0xe893('0x10'));var logger=require(_0xe893('0x11'))(_0xe893('0x12'));var utils=require(_0xe893('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xe893('0x14'));var db=require(_0xe893('0x15'))['db'];config[_0xe893('0x16')]=_[_0xe893('0x17')](config[_0xe893('0x16')],{'host':_0xe893('0x18'),'port':0x18eb});var socket=require(_0xe893('0x19'))(new Redis(config[_0xe893('0x16')]));require(_0xe893('0x1a'))['register'](socket);function respondWithStatusCode(_0x4beeab,_0x381953){_0x381953=_0x381953||0xcc;return function(_0x4bdd45){if(_0x4bdd45){return _0x4beeab['sendStatus'](_0x381953);}return _0x4beeab[_0xe893('0x1b')](_0x381953)[_0xe893('0x1c')]();};}function respondWithResult(_0x3f3e78,_0x557e80){_0x557e80=_0x557e80||0xc8;return function(_0x1270fe){if(_0x1270fe){return _0x3f3e78[_0xe893('0x1b')](_0x557e80)[_0xe893('0x1d')](_0x1270fe);}};}function respondWithFilteredResult(_0x488127,_0x5c83d2){return function(_0x711670){if(_0x711670){var _0x5cd25e=typeof _0x5c83d2[_0xe893('0x1e')]==='undefined'&&typeof _0x5c83d2[_0xe893('0x1f')]===_0xe893('0x20');var _0x45f9fc=_0x711670[_0xe893('0x21')];var _0x288c50=_0x5cd25e?0x0:_0x5c83d2['offset'];var _0x2688d4=_0x5cd25e?_0x711670[_0xe893('0x21')]:_0x5c83d2[_0xe893('0x1e')]+_0x5c83d2[_0xe893('0x1f')];var _0x4f3570;if(_0x2688d4>=_0x45f9fc){_0x2688d4=_0x45f9fc;_0x4f3570=0xc8;}else{_0x4f3570=0xce;}_0x488127['status'](_0x4f3570);return _0x488127[_0xe893('0x22')](_0xe893('0x23'),_0x288c50+'-'+_0x2688d4+'/'+_0x45f9fc)[_0xe893('0x1d')](_0x711670);}return null;};}function patchUpdates(_0x9ba058){return function(_0x4e4655){try{jsonpatch[_0xe893('0x24')](_0x4e4655,_0x9ba058,!![]);}catch(_0x3e9b22){return BPromise[_0xe893('0x25')](_0x3e9b22);}return _0x4e4655[_0xe893('0x26')]();};}function saveUpdates(_0x4bf7c6,_0x42ab0c){return function(_0x5a0d3c){if(_0x5a0d3c){return _0x5a0d3c['update'](_0x4bf7c6)['then'](function(_0x9cfd86){return _0x9cfd86;});}return null;};}function removeEntity(_0x53cf56,_0xa25d9b){return function(_0x9f327b){if(_0x9f327b){return _0x9f327b[_0xe893('0x27')]()[_0xe893('0x28')](function(){_0x53cf56[_0xe893('0x1b')](0xcc)[_0xe893('0x1c')]();});}};}function handleEntityNotFound(_0x280cd3,_0x2f402e){return function(_0x243279){if(!_0x243279){_0x280cd3[_0xe893('0x29')](0x194);}return _0x243279;};}function handleError(_0x5d2157,_0x10d9a8){_0x10d9a8=_0x10d9a8||0x1f4;return function(_0x48245a){logger['error'](_0x48245a[_0xe893('0x2a')]);if(_0x48245a[_0xe893('0x2b')]){delete _0x48245a[_0xe893('0x2b')];}_0x5d2157[_0xe893('0x1b')](_0x10d9a8)[_0xe893('0x2c')](_0x48245a);};}exports[_0xe893('0x2d')]=function(_0x142684,_0x589325){var _0x5d9ec1={},_0x5d46d8={},_0x341888={'count':0x0,'rows':[]};var _0x5ec8ce=_[_0xe893('0x2e')](db[_0xe893('0x2f')]['rawAttributes'],function(_0x25aeff){return{'name':_0x25aeff['fieldName'],'type':_0x25aeff[_0xe893('0x30')][_0xe893('0x31')]};});_0x5d46d8[_0xe893('0x32')]=_[_0xe893('0x2e')](_0x5ec8ce,_0xe893('0x2b'));_0x5d46d8['query']=_[_0xe893('0x33')](_0x142684['query']);_0x5d46d8[_0xe893('0x34')]=_[_0xe893('0x35')](_0x5d46d8[_0xe893('0x32')],_0x5d46d8['query']);_0x5d9ec1[_0xe893('0x36')]=_[_0xe893('0x35')](_0x5d46d8[_0xe893('0x32')],qs['fields'](_0x142684[_0xe893('0x37')]['fields']));_0x5d9ec1[_0xe893('0x36')]=_0x5d9ec1[_0xe893('0x36')][_0xe893('0x38')]?_0x5d9ec1[_0xe893('0x36')]:_0x5d46d8[_0xe893('0x32')];if(!_0x142684[_0xe893('0x37')]['hasOwnProperty'](_0xe893('0x39'))){_0x5d9ec1[_0xe893('0x1f')]=qs[_0xe893('0x1f')](_0x142684['query']['limit']);_0x5d9ec1[_0xe893('0x1e')]=qs[_0xe893('0x1e')](_0x142684['query'][_0xe893('0x1e')]);}_0x5d9ec1[_0xe893('0x3a')]=qs[_0xe893('0x3b')](_0x142684[_0xe893('0x37')][_0xe893('0x3b')]);_0x5d9ec1[_0xe893('0x3c')]=qs[_0xe893('0x34')](_[_0xe893('0x3d')](_0x142684[_0xe893('0x37')],_0x5d46d8[_0xe893('0x34')]),_0x5ec8ce);if(_0x142684[_0xe893('0x37')][_0xe893('0x3e')]){_0x5d9ec1[_0xe893('0x3c')]=_[_0xe893('0x3f')](_0x5d9ec1[_0xe893('0x3c')],{'$or':_[_0xe893('0x2e')](_0x5ec8ce,function(_0x2ced2e){if(_0x2ced2e[_0xe893('0x30')]!==_0xe893('0x40')){var _0x39f387={};_0x39f387[_0x2ced2e[_0xe893('0x2b')]]={'$like':'%'+_0x142684[_0xe893('0x37')][_0xe893('0x3e')]+'%'};return _0x39f387;}})});}_0x5d9ec1=_[_0xe893('0x3f')]({},_0x5d9ec1,_0x142684[_0xe893('0x41')]);var _0x53a889={'where':_0x5d9ec1[_0xe893('0x3c')]};return db[_0xe893('0x2f')][_0xe893('0x21')](_0x53a889)[_0xe893('0x28')](function(_0x51d795){_0x341888['count']=_0x51d795;if(_0x142684[_0xe893('0x37')][_0xe893('0x42')]){_0x5d9ec1[_0xe893('0x43')]=[{'all':!![]}];}return db['ChatGroup'][_0xe893('0x44')](_0x5d9ec1);})['then'](function(_0x14ae62){_0x341888[_0xe893('0x45')]=_0x14ae62;return _0x341888;})['then'](respondWithFilteredResult(_0x589325,_0x5d9ec1))[_0xe893('0x46')](handleError(_0x589325,null));};exports['show']=function(_0x3a6caf,_0x5e6157){var _0x86e299={'raw':!![],'where':{'id':_0x3a6caf[_0xe893('0x47')]['id']}},_0x1b04d5={};_0x1b04d5[_0xe893('0x32')]=_[_0xe893('0x33')](db['ChatGroup'][_0xe893('0x48')]);_0x1b04d5[_0xe893('0x37')]=_[_0xe893('0x33')](_0x3a6caf['query']);_0x1b04d5[_0xe893('0x34')]=_[_0xe893('0x35')](_0x1b04d5[_0xe893('0x32')],_0x1b04d5[_0xe893('0x37')]);_0x86e299[_0xe893('0x36')]=_[_0xe893('0x35')](_0x1b04d5[_0xe893('0x32')],qs['fields'](_0x3a6caf[_0xe893('0x37')]['fields']));_0x86e299['attributes']=_0x86e299[_0xe893('0x36')][_0xe893('0x38')]?_0x86e299[_0xe893('0x36')]:_0x1b04d5[_0xe893('0x32')];if(_0x3a6caf[_0xe893('0x37')]['includeAll']){_0x86e299[_0xe893('0x43')]=[{'all':!![]}];}_0x86e299=_[_0xe893('0x3f')]({},_0x86e299,_0x3a6caf[_0xe893('0x41')]);return db['ChatGroup']['find'](_0x86e299)[_0xe893('0x28')](handleEntityNotFound(_0x5e6157,null))[_0xe893('0x28')](respondWithResult(_0x5e6157,null))['catch'](handleError(_0x5e6157,null));};exports['create']=function(_0x4b4728,_0x240c25){return db['ChatGroup'][_0xe893('0x49')](_0x4b4728[_0xe893('0x4a')],{})[_0xe893('0x28')](respondWithResult(_0x240c25,0xc9))[_0xe893('0x46')](handleError(_0x240c25,null));};exports[_0xe893('0x4b')]=function(_0x1ffb66,_0x1df3e6){if(_0x1ffb66[_0xe893('0x4a')]['id']){delete _0x1ffb66['body']['id'];}return db[_0xe893('0x2f')]['find']({'where':{'id':_0x1ffb66[_0xe893('0x47')]['id']}})[_0xe893('0x28')](handleEntityNotFound(_0x1df3e6,null))[_0xe893('0x28')](saveUpdates(_0x1ffb66[_0xe893('0x4a')],null))['then'](respondWithResult(_0x1df3e6,null))[_0xe893('0x46')](handleError(_0x1df3e6,null));};exports[_0xe893('0x27')]=function(_0x34287,_0x5c2194){return db[_0xe893('0x2f')][_0xe893('0x4c')]({'where':{'id':_0x34287['params']['id']}})[_0xe893('0x28')](handleEntityNotFound(_0x5c2194,null))[_0xe893('0x28')](removeEntity(_0x5c2194,null))[_0xe893('0x46')](handleError(_0x5c2194,null));};exports[_0xe893('0x4d')]=function(_0x5ba46e,_0x2670b1){return db[_0xe893('0x2f')][_0xe893('0x4d')]()[_0xe893('0x28')](respondWithResult(_0x2670b1,null))[_0xe893('0x46')](handleError(_0x2670b1,null));};exports['getUnread']=function(_0x1e1b8e,_0x7951a9,_0x4016e0){return db['ChatInternalMessage'][_0xe893('0x21')]({'where':{'ChatGroupId':_0x1e1b8e[_0xe893('0x47')]['id'],'ToId':_0x1e1b8e[_0xe893('0x4e')]['id'],'read':![]}})[_0xe893('0x28')](function(_0x21641b){return{'id':_[_0xe893('0x4f')](_0x1e1b8e[_0xe893('0x47')]['id']),'count':_0x21641b};})['then'](respondWithResult(_0x7951a9,null))['catch'](handleError(_0x7951a9,null));};exports[_0xe893('0x50')]=function(_0x7500b8,_0x5c8af3,_0x2203cf){return db[_0xe893('0x2f')][_0xe893('0x4c')]({'where':{'id':_0x7500b8[_0xe893('0x47')]['id']}})[_0xe893('0x28')](handleEntityNotFound(_0x5c8af3,null))[_0xe893('0x28')](function(_0x5764a8){if(_0x5764a8){return _0x5764a8[_0xe893('0x50')](_0x7500b8['body'][_0xe893('0x51')],_['omit'](_0x7500b8[_0xe893('0x4a')],[_0xe893('0x51'),'id'])||{});}})[_0xe893('0x28')](respondWithResult(_0x5c8af3,null))[_0xe893('0x46')](handleError(_0x5c8af3,null));};exports[_0xe893('0x52')]=function(_0x35b1a6,_0x4903e4,_0x2b3d8a){var _0x40f2f4={};var _0xa91c71={};var _0xcc0c31;var _0x3ac79d;return db['ChatGroup'][_0xe893('0x53')]({'where':{'id':_0x35b1a6[_0xe893('0x47')]['id']}})[_0xe893('0x28')](handleEntityNotFound(_0x4903e4,null))['then'](function(_0x561c4b){if(_0x561c4b){_0xcc0c31=_0x561c4b;_0xa91c71[_0xe893('0x32')]=_[_0xe893('0x33')](db[_0xe893('0x54')][_0xe893('0x48')]);_0xa91c71[_0xe893('0x37')]=_['keys'](_0x35b1a6[_0xe893('0x37')]);_0xa91c71[_0xe893('0x34')]=_[_0xe893('0x35')](_0xa91c71[_0xe893('0x32')],_0xa91c71['query']);_0x40f2f4[_0xe893('0x36')]=_[_0xe893('0x35')](_0xa91c71[_0xe893('0x32')],qs[_0xe893('0x55')](_0x35b1a6[_0xe893('0x37')][_0xe893('0x55')]));_0x40f2f4[_0xe893('0x36')]=_0x40f2f4[_0xe893('0x36')]['length']?_0x40f2f4[_0xe893('0x36')]:_0xa91c71[_0xe893('0x32')];_0x40f2f4[_0xe893('0x3a')]=qs['sort'](_0x35b1a6['query'][_0xe893('0x3b')]);_0x40f2f4[_0xe893('0x3c')]=qs['filters'](_[_0xe893('0x3d')](_0x35b1a6[_0xe893('0x37')],_0xa91c71[_0xe893('0x34')]));if(_0x35b1a6[_0xe893('0x37')][_0xe893('0x3e')]){_0x40f2f4[_0xe893('0x3c')]=_[_0xe893('0x3f')](_0x40f2f4[_0xe893('0x3c')],{'$or':_['map'](_0x40f2f4['attributes'],function(_0x4f3682){var _0x47eb96={};_0x47eb96[_0x4f3682]={'$like':'%'+_0x35b1a6[_0xe893('0x37')][_0xe893('0x3e')]+'%'};return _0x47eb96;})});}_0x40f2f4=_[_0xe893('0x3f')]({},_0x40f2f4,_0x35b1a6[_0xe893('0x41')]);return _0xcc0c31[_0xe893('0x52')](_0x40f2f4);}})[_0xe893('0x28')](function(_0xea3d93){if(_0xea3d93){_0x3ac79d=_0xea3d93[_0xe893('0x38')];if(!_0x35b1a6[_0xe893('0x37')][_0xe893('0x56')](_0xe893('0x39'))){_0x40f2f4[_0xe893('0x1f')]=qs[_0xe893('0x1f')](_0x35b1a6[_0xe893('0x37')][_0xe893('0x1f')]);_0x40f2f4[_0xe893('0x1e')]=qs[_0xe893('0x1e')](_0x35b1a6[_0xe893('0x37')][_0xe893('0x1e')]);}return _0xcc0c31[_0xe893('0x52')](_0x40f2f4);}})['then'](function(_0x12d32c){if(_0x12d32c){return _0x12d32c?{'count':_0x3ac79d,'rows':_0x12d32c}:null;}})[_0xe893('0x28')](respondWithResult(_0x4903e4,null))[_0xe893('0x46')](handleError(_0x4903e4,null));};exports[_0xe893('0x57')]=function(_0x488773,_0x56b05f,_0x319882){return db[_0xe893('0x2f')][_0xe893('0x4c')]({'where':{'id':_0x488773['params']['id']}})['then'](handleEntityNotFound(_0x56b05f,null))[_0xe893('0x28')](function(_0x4aa3c3){if(_0x4aa3c3){return _0x4aa3c3['removeMembers'](_0x488773[_0xe893('0x37')][_0xe893('0x51')]);}})['then'](respondWithStatusCode(_0x56b05f,null))[_0xe893('0x46')](handleError(_0x56b05f,null));};exports[_0xe893('0x58')]=function(_0x20d4e1,_0xc7928e,_0x4aeafb){if(_0x20d4e1[_0xe893('0x4a')]['id']){delete _0x20d4e1[_0xe893('0x4a')]['id'];}return db[_0xe893('0x2f')]['find']({'where':{'id':_0x20d4e1[_0xe893('0x47')]['id']}})[_0xe893('0x28')](handleEntityNotFound(_0xc7928e,null))['then'](function(_0x5ed117){if(_0x5ed117){_0x20d4e1['body'][_0xe893('0x59')]=_0x5ed117['id'];return db[_0xe893('0x5a')][_0xe893('0x49')](_0x20d4e1[_0xe893('0x4a')]);}})[_0xe893('0x28')](respondWithResult(_0xc7928e,null))['catch'](handleError(_0xc7928e,null));};exports[_0xe893('0x5b')]=function(_0x252169,_0x546189,_0x1b62ae){var _0x26274b={};var _0xf36339={};var _0x8dc997;var _0x1f20bd;return db['ChatGroup'][_0xe893('0x53')]({'where':{'id':_0x252169[_0xe893('0x47')]['id']}})[_0xe893('0x28')](handleEntityNotFound(_0x546189,null))[_0xe893('0x28')](function(_0x48e42c){if(_0x48e42c){_0x8dc997=_0x48e42c;_0xf36339[_0xe893('0x32')]=_[_0xe893('0x33')](db[_0xe893('0x5a')]['rawAttributes']);_0xf36339[_0xe893('0x37')]=_['keys'](_0x252169[_0xe893('0x37')]);_0xf36339[_0xe893('0x34')]=_[_0xe893('0x35')](_0xf36339['model'],_0xf36339['query']);_0x26274b['attributes']=_[_0xe893('0x35')](_0xf36339[_0xe893('0x32')],qs[_0xe893('0x55')](_0x252169['query'][_0xe893('0x55')]));_0x26274b[_0xe893('0x36')]=_0x26274b[_0xe893('0x36')][_0xe893('0x38')]?_0x26274b[_0xe893('0x36')]:_0xf36339[_0xe893('0x32')];_0x26274b['order']=qs['sort'](_0x252169[_0xe893('0x37')][_0xe893('0x3b')]);_0x26274b[_0xe893('0x3c')]=qs[_0xe893('0x34')](_[_0xe893('0x3d')](_0x252169[_0xe893('0x37')],_0xf36339[_0xe893('0x34')]));if(_0x252169['query']['filter']){_0x26274b[_0xe893('0x3c')]=_[_0xe893('0x3f')](_0x26274b[_0xe893('0x3c')],{'$or':_['map'](_0x26274b[_0xe893('0x36')],function(_0xa39c2b){var _0x17b8e9={};_0x17b8e9[_0xa39c2b]={'$like':'%'+_0x252169['query'][_0xe893('0x3e')]+'%'};return _0x17b8e9;})});}if(_0x252169[_0xe893('0x37')][_0xe893('0x5c')]){var _0x352c39=_0x252169[_0xe893('0x37')][_0xe893('0x5c')][_0xe893('0x5d')](',');var _0x3f8883={};_0x3f8883[_0x352c39[0x0]]={'$gte':moment(_0x352c39[0x1])[_0xe893('0x5e')](_0xe893('0x5f'))};_0x26274b[_0xe893('0x3c')]=_[_0xe893('0x3f')](_0x26274b['where'],_0x3f8883);}_0x26274b=_[_0xe893('0x3f')]({},_0x26274b,_0x252169[_0xe893('0x41')]);return _0x8dc997['getMessages'](_0x26274b);}})[_0xe893('0x28')](function(_0x195a1d){if(_0x195a1d){_0x1f20bd=_0x195a1d[_0xe893('0x38')];if(!_0x252169['query']['hasOwnProperty'](_0xe893('0x39'))){_0x26274b[_0xe893('0x1f')]=qs['limit'](_0x252169[_0xe893('0x37')][_0xe893('0x1f')]);_0x26274b['offset']=qs[_0xe893('0x1e')](_0x252169[_0xe893('0x37')]['offset']);}return _0x8dc997[_0xe893('0x5b')](_0x26274b);}})[_0xe893('0x28')](function(_0x1da3a7){if(_0x1da3a7){return _0x1da3a7?{'count':_0x1f20bd,'rows':_0x1da3a7}:null;}})[_0xe893('0x28')](respondWithResult(_0x546189,null))[_0xe893('0x46')](handleError(_0x546189,null));};
\ No newline at end of file
+var _0xb7d8=['then','destroy','stack','name','index','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','ChatGroup','includeAll','include','findAll','catch','params','find','create','body','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','ids','omit','getMembers','User','removeMembers','ChatGroupId','findOne','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','getMessages','rimraf','zip-dir','request-promise','bluebird','util','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update'];(function(_0x1146f7,_0x475356){var _0x2e5725=function(_0x44f2a2){while(--_0x44f2a2){_0x1146f7['push'](_0x1146f7['shift']());}};_0x2e5725(++_0x475356);}(_0xb7d8,0x149));var _0x8b7d=function(_0x284ff3,_0x2b8f6a){_0x284ff3=_0x284ff3-0x0;var _0x2477fd=_0xb7d8[_0x284ff3];return _0x2477fd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8b7d('0x0'));var zipdir=require(_0x8b7d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8b7d('0x2'));var moment=require('moment');var BPromise=require(_0x8b7d('0x3'));var Mustache=require('mustache');var util=require(_0x8b7d('0x4'));var path=require('path');var sox=require(_0x8b7d('0x5'));var csv=require(_0x8b7d('0x6'));var ejs=require(_0x8b7d('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8b7d('0x8'));var squel=require(_0x8b7d('0x9'));var crypto=require(_0x8b7d('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x8b7d('0xb'));var toCsv=require(_0x8b7d('0x6'));var querystring=require(_0x8b7d('0xc'));var Papa=require(_0x8b7d('0xd'));var Redis=require('ioredis');var authService=require(_0x8b7d('0xe'));var qs=require(_0x8b7d('0xf'));var as=require(_0x8b7d('0x10'));var hardwareService=require(_0x8b7d('0x11'));var logger=require(_0x8b7d('0x12'))('api');var utils=require(_0x8b7d('0x13'));var config=require(_0x8b7d('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x8b7d('0x15'))['db'];config[_0x8b7d('0x16')]=_[_0x8b7d('0x17')](config['redis'],{'host':_0x8b7d('0x18'),'port':0x18eb});var socket=require(_0x8b7d('0x19'))(new Redis(config['redis']));require(_0x8b7d('0x1a'))[_0x8b7d('0x1b')](socket);function respondWithStatusCode(_0x113318,_0x1ae413){_0x1ae413=_0x1ae413||0xcc;return function(_0x131627){if(_0x131627){return _0x113318['sendStatus'](_0x1ae413);}return _0x113318[_0x8b7d('0x1c')](_0x1ae413)[_0x8b7d('0x1d')]();};}function respondWithResult(_0x33ef2b,_0x2dcc15){_0x2dcc15=_0x2dcc15||0xc8;return function(_0xd65527){if(_0xd65527){return _0x33ef2b[_0x8b7d('0x1c')](_0x2dcc15)[_0x8b7d('0x1e')](_0xd65527);}};}function respondWithFilteredResult(_0x433e4b,_0x528a7f){return function(_0x1e3f83){if(_0x1e3f83){var _0x33c927=typeof _0x528a7f[_0x8b7d('0x1f')]===_0x8b7d('0x20')&&typeof _0x528a7f[_0x8b7d('0x21')]===_0x8b7d('0x20');var _0x32664e=_0x1e3f83[_0x8b7d('0x22')];var _0x39d6cc=_0x33c927?0x0:_0x528a7f[_0x8b7d('0x1f')];var _0x4bb765=_0x33c927?_0x1e3f83['count']:_0x528a7f[_0x8b7d('0x1f')]+_0x528a7f[_0x8b7d('0x21')];var _0xe7f1d4;if(_0x4bb765>=_0x32664e){_0x4bb765=_0x32664e;_0xe7f1d4=0xc8;}else{_0xe7f1d4=0xce;}_0x433e4b['status'](_0xe7f1d4);return _0x433e4b[_0x8b7d('0x23')](_0x8b7d('0x24'),_0x39d6cc+'-'+_0x4bb765+'/'+_0x32664e)['json'](_0x1e3f83);}return null;};}function patchUpdates(_0x474583){return function(_0x395c9a){try{jsonpatch['apply'](_0x395c9a,_0x474583,!![]);}catch(_0x42dd8e){return BPromise[_0x8b7d('0x25')](_0x42dd8e);}return _0x395c9a['save']();};}function saveUpdates(_0x4c7805,_0x177739){return function(_0xd8df57){if(_0xd8df57){return _0xd8df57[_0x8b7d('0x26')](_0x4c7805)[_0x8b7d('0x27')](function(_0x178029){return _0x178029;});}return null;};}function removeEntity(_0x1b5c7b,_0x538bed){return function(_0x59c376){if(_0x59c376){return _0x59c376[_0x8b7d('0x28')]()[_0x8b7d('0x27')](function(){_0x1b5c7b[_0x8b7d('0x1c')](0xcc)[_0x8b7d('0x1d')]();});}};}function handleEntityNotFound(_0xf09f81,_0x63ac54){return function(_0x179246){if(!_0x179246){_0xf09f81['sendStatus'](0x194);}return _0x179246;};}function handleError(_0x22741d,_0x2e6332){_0x2e6332=_0x2e6332||0x1f4;return function(_0x2b9185){logger['error'](_0x2b9185[_0x8b7d('0x29')]);if(_0x2b9185[_0x8b7d('0x2a')]){delete _0x2b9185['name'];}_0x22741d[_0x8b7d('0x1c')](_0x2e6332)['send'](_0x2b9185);};}exports[_0x8b7d('0x2b')]=function(_0x83af5f,_0x24247d){var _0x4c4a80={},_0x536225={},_0x1ecdcb={'count':0x0,'rows':[]};var _0x582453=_['map'](db['ChatGroup'][_0x8b7d('0x2c')],function(_0x1f35e4){return{'name':_0x1f35e4['fieldName'],'type':_0x1f35e4[_0x8b7d('0x2d')][_0x8b7d('0x2e')]};});_0x536225[_0x8b7d('0x2f')]=_[_0x8b7d('0x30')](_0x582453,_0x8b7d('0x2a'));_0x536225[_0x8b7d('0x31')]=_[_0x8b7d('0x32')](_0x83af5f[_0x8b7d('0x31')]);_0x536225[_0x8b7d('0x33')]=_[_0x8b7d('0x34')](_0x536225[_0x8b7d('0x2f')],_0x536225[_0x8b7d('0x31')]);_0x4c4a80[_0x8b7d('0x35')]=_['intersection'](_0x536225[_0x8b7d('0x2f')],qs[_0x8b7d('0x36')](_0x83af5f[_0x8b7d('0x31')][_0x8b7d('0x36')]));_0x4c4a80['attributes']=_0x4c4a80[_0x8b7d('0x35')][_0x8b7d('0x37')]?_0x4c4a80[_0x8b7d('0x35')]:_0x536225[_0x8b7d('0x2f')];if(!_0x83af5f['query'][_0x8b7d('0x38')](_0x8b7d('0x39'))){_0x4c4a80[_0x8b7d('0x21')]=qs[_0x8b7d('0x21')](_0x83af5f['query'][_0x8b7d('0x21')]);_0x4c4a80['offset']=qs[_0x8b7d('0x1f')](_0x83af5f[_0x8b7d('0x31')][_0x8b7d('0x1f')]);}_0x4c4a80[_0x8b7d('0x3a')]=qs['sort'](_0x83af5f[_0x8b7d('0x31')][_0x8b7d('0x3b')]);_0x4c4a80[_0x8b7d('0x3c')]=qs[_0x8b7d('0x33')](_[_0x8b7d('0x3d')](_0x83af5f[_0x8b7d('0x31')],_0x536225[_0x8b7d('0x33')]),_0x582453);if(_0x83af5f[_0x8b7d('0x31')][_0x8b7d('0x3e')]){_0x4c4a80[_0x8b7d('0x3c')]=_['merge'](_0x4c4a80[_0x8b7d('0x3c')],{'$or':_[_0x8b7d('0x30')](_0x582453,function(_0x35b456){if(_0x35b456[_0x8b7d('0x2d')]!=='VIRTUAL'){var _0x8f9c7f={};_0x8f9c7f[_0x35b456[_0x8b7d('0x2a')]]={'$like':'%'+_0x83af5f[_0x8b7d('0x31')][_0x8b7d('0x3e')]+'%'};return _0x8f9c7f;}})});}_0x4c4a80=_[_0x8b7d('0x3f')]({},_0x4c4a80,_0x83af5f[_0x8b7d('0x40')]);var _0x1fef31={'where':_0x4c4a80['where']};return db[_0x8b7d('0x41')]['count'](_0x1fef31)[_0x8b7d('0x27')](function(_0x5b4bb4){_0x1ecdcb[_0x8b7d('0x22')]=_0x5b4bb4;if(_0x83af5f['query'][_0x8b7d('0x42')]){_0x4c4a80[_0x8b7d('0x43')]=[{'all':!![]}];}return db[_0x8b7d('0x41')][_0x8b7d('0x44')](_0x4c4a80);})['then'](function(_0x509cb7){_0x1ecdcb['rows']=_0x509cb7;return _0x1ecdcb;})[_0x8b7d('0x27')](respondWithFilteredResult(_0x24247d,_0x4c4a80))[_0x8b7d('0x45')](handleError(_0x24247d,null));};exports['show']=function(_0x1c373d,_0x14d822){var _0x16ef2e={'raw':!![],'where':{'id':_0x1c373d[_0x8b7d('0x46')]['id']}},_0x40be68={};_0x40be68['model']=_['keys'](db[_0x8b7d('0x41')][_0x8b7d('0x2c')]);_0x40be68['query']=_['keys'](_0x1c373d[_0x8b7d('0x31')]);_0x40be68[_0x8b7d('0x33')]=_[_0x8b7d('0x34')](_0x40be68['model'],_0x40be68['query']);_0x16ef2e['attributes']=_[_0x8b7d('0x34')](_0x40be68[_0x8b7d('0x2f')],qs[_0x8b7d('0x36')](_0x1c373d[_0x8b7d('0x31')][_0x8b7d('0x36')]));_0x16ef2e['attributes']=_0x16ef2e[_0x8b7d('0x35')][_0x8b7d('0x37')]?_0x16ef2e[_0x8b7d('0x35')]:_0x40be68['model'];if(_0x1c373d[_0x8b7d('0x31')][_0x8b7d('0x42')]){_0x16ef2e[_0x8b7d('0x43')]=[{'all':!![]}];}_0x16ef2e=_['merge']({},_0x16ef2e,_0x1c373d[_0x8b7d('0x40')]);return db[_0x8b7d('0x41')][_0x8b7d('0x47')](_0x16ef2e)[_0x8b7d('0x27')](handleEntityNotFound(_0x14d822,null))[_0x8b7d('0x27')](respondWithResult(_0x14d822,null))[_0x8b7d('0x45')](handleError(_0x14d822,null));};exports[_0x8b7d('0x48')]=function(_0x272166,_0x235ff9){return db[_0x8b7d('0x41')][_0x8b7d('0x48')](_0x272166[_0x8b7d('0x49')],{})['then'](respondWithResult(_0x235ff9,0xc9))[_0x8b7d('0x45')](handleError(_0x235ff9,null));};exports[_0x8b7d('0x26')]=function(_0x53f85f,_0x1d1229){if(_0x53f85f[_0x8b7d('0x49')]['id']){delete _0x53f85f[_0x8b7d('0x49')]['id'];}return db['ChatGroup'][_0x8b7d('0x47')]({'where':{'id':_0x53f85f[_0x8b7d('0x46')]['id']}})['then'](handleEntityNotFound(_0x1d1229,null))['then'](saveUpdates(_0x53f85f[_0x8b7d('0x49')],null))[_0x8b7d('0x27')](respondWithResult(_0x1d1229,null))[_0x8b7d('0x45')](handleError(_0x1d1229,null));};exports['destroy']=function(_0x35766a,_0x4f5d0f){return db[_0x8b7d('0x41')][_0x8b7d('0x47')]({'where':{'id':_0x35766a[_0x8b7d('0x46')]['id']}})[_0x8b7d('0x27')](handleEntityNotFound(_0x4f5d0f,null))[_0x8b7d('0x27')](removeEntity(_0x4f5d0f,null))[_0x8b7d('0x45')](handleError(_0x4f5d0f,null));};exports[_0x8b7d('0x4a')]=function(_0x19cdc4,_0x17b497){return db[_0x8b7d('0x41')]['describe']()['then'](respondWithResult(_0x17b497,null))['catch'](handleError(_0x17b497,null));};exports[_0x8b7d('0x4b')]=function(_0xa858b4,_0x175759,_0x5882a1){return db[_0x8b7d('0x4c')][_0x8b7d('0x22')]({'where':{'ChatGroupId':_0xa858b4[_0x8b7d('0x46')]['id'],'ToId':_0xa858b4[_0x8b7d('0x4d')]['id'],'read':![]}})[_0x8b7d('0x27')](function(_0xf45267){return{'id':_[_0x8b7d('0x4e')](_0xa858b4[_0x8b7d('0x46')]['id']),'count':_0xf45267};})['then'](respondWithResult(_0x175759,null))[_0x8b7d('0x45')](handleError(_0x175759,null));};exports[_0x8b7d('0x4f')]=function(_0x2db28e,_0xaebdfe,_0x289c97){return db[_0x8b7d('0x41')][_0x8b7d('0x47')]({'where':{'id':_0x2db28e['params']['id']}})['then'](handleEntityNotFound(_0xaebdfe,null))[_0x8b7d('0x27')](function(_0x1e4e0e){if(_0x1e4e0e){return _0x1e4e0e[_0x8b7d('0x4f')](_0x2db28e[_0x8b7d('0x49')][_0x8b7d('0x50')],_[_0x8b7d('0x51')](_0x2db28e[_0x8b7d('0x49')],[_0x8b7d('0x50'),'id'])||{});}})[_0x8b7d('0x27')](respondWithResult(_0xaebdfe,null))[_0x8b7d('0x45')](handleError(_0xaebdfe,null));};exports[_0x8b7d('0x52')]=function(_0x48473c,_0x411520,_0x46c4bf){var _0x4d2ed5={};var _0x44bc82={};var _0xd2ed82;var _0x16ab50;return db[_0x8b7d('0x41')]['findOne']({'where':{'id':_0x48473c[_0x8b7d('0x46')]['id']}})[_0x8b7d('0x27')](handleEntityNotFound(_0x411520,null))[_0x8b7d('0x27')](function(_0x14c3b3){if(_0x14c3b3){_0xd2ed82=_0x14c3b3;_0x44bc82[_0x8b7d('0x2f')]=_[_0x8b7d('0x32')](db[_0x8b7d('0x53')][_0x8b7d('0x2c')]);_0x44bc82[_0x8b7d('0x31')]=_[_0x8b7d('0x32')](_0x48473c['query']);_0x44bc82[_0x8b7d('0x33')]=_[_0x8b7d('0x34')](_0x44bc82['model'],_0x44bc82[_0x8b7d('0x31')]);_0x4d2ed5[_0x8b7d('0x35')]=_[_0x8b7d('0x34')](_0x44bc82[_0x8b7d('0x2f')],qs['fields'](_0x48473c[_0x8b7d('0x31')]['fields']));_0x4d2ed5[_0x8b7d('0x35')]=_0x4d2ed5[_0x8b7d('0x35')]['length']?_0x4d2ed5[_0x8b7d('0x35')]:_0x44bc82[_0x8b7d('0x2f')];_0x4d2ed5[_0x8b7d('0x3a')]=qs['sort'](_0x48473c[_0x8b7d('0x31')][_0x8b7d('0x3b')]);_0x4d2ed5['where']=qs['filters'](_['pick'](_0x48473c['query'],_0x44bc82[_0x8b7d('0x33')]));if(_0x48473c[_0x8b7d('0x31')][_0x8b7d('0x3e')]){_0x4d2ed5[_0x8b7d('0x3c')]=_[_0x8b7d('0x3f')](_0x4d2ed5[_0x8b7d('0x3c')],{'$or':_['map'](_0x4d2ed5[_0x8b7d('0x35')],function(_0x46c38e){var _0x3894eb={};_0x3894eb[_0x46c38e]={'$like':'%'+_0x48473c['query'][_0x8b7d('0x3e')]+'%'};return _0x3894eb;})});}_0x4d2ed5=_['merge']({},_0x4d2ed5,_0x48473c[_0x8b7d('0x40')]);return _0xd2ed82[_0x8b7d('0x52')](_0x4d2ed5);}})['then'](function(_0xb376c0){if(_0xb376c0){_0x16ab50=_0xb376c0[_0x8b7d('0x37')];if(!_0x48473c[_0x8b7d('0x31')][_0x8b7d('0x38')](_0x8b7d('0x39'))){_0x4d2ed5[_0x8b7d('0x21')]=qs[_0x8b7d('0x21')](_0x48473c[_0x8b7d('0x31')]['limit']);_0x4d2ed5['offset']=qs[_0x8b7d('0x1f')](_0x48473c[_0x8b7d('0x31')][_0x8b7d('0x1f')]);}return _0xd2ed82[_0x8b7d('0x52')](_0x4d2ed5);}})[_0x8b7d('0x27')](function(_0x31484b){if(_0x31484b){return _0x31484b?{'count':_0x16ab50,'rows':_0x31484b}:null;}})[_0x8b7d('0x27')](respondWithResult(_0x411520,null))[_0x8b7d('0x45')](handleError(_0x411520,null));};exports['removeMembers']=function(_0x517efa,_0x1af322,_0x4de9fa){return db[_0x8b7d('0x41')]['find']({'where':{'id':_0x517efa['params']['id']}})[_0x8b7d('0x27')](handleEntityNotFound(_0x1af322,null))[_0x8b7d('0x27')](function(_0x365060){if(_0x365060){return _0x365060[_0x8b7d('0x54')](_0x517efa['query'][_0x8b7d('0x50')]);}})[_0x8b7d('0x27')](respondWithStatusCode(_0x1af322,null))['catch'](handleError(_0x1af322,null));};exports['addMessage']=function(_0x1cbfc8,_0x2e991f,_0x2c5475){if(_0x1cbfc8[_0x8b7d('0x49')]['id']){delete _0x1cbfc8[_0x8b7d('0x49')]['id'];}return db[_0x8b7d('0x41')][_0x8b7d('0x47')]({'where':{'id':_0x1cbfc8['params']['id']}})['then'](handleEntityNotFound(_0x2e991f,null))['then'](function(_0x5689aa){if(_0x5689aa){_0x1cbfc8['body'][_0x8b7d('0x55')]=_0x5689aa['id'];return db[_0x8b7d('0x4c')][_0x8b7d('0x48')](_0x1cbfc8[_0x8b7d('0x49')]);}})[_0x8b7d('0x27')](respondWithResult(_0x2e991f,null))[_0x8b7d('0x45')](handleError(_0x2e991f,null));};exports['getMessages']=function(_0x1e2f0d,_0x2c32fe,_0x23ab18){var _0x2ab495={};var _0x4088d1={};var _0x159182;var _0x3229d2;return db[_0x8b7d('0x41')][_0x8b7d('0x56')]({'where':{'id':_0x1e2f0d['params']['id']}})[_0x8b7d('0x27')](handleEntityNotFound(_0x2c32fe,null))[_0x8b7d('0x27')](function(_0x1c2fc6){if(_0x1c2fc6){_0x159182=_0x1c2fc6;_0x4088d1[_0x8b7d('0x2f')]=_[_0x8b7d('0x32')](db[_0x8b7d('0x4c')][_0x8b7d('0x2c')]);_0x4088d1[_0x8b7d('0x31')]=_[_0x8b7d('0x32')](_0x1e2f0d['query']);_0x4088d1[_0x8b7d('0x33')]=_['intersection'](_0x4088d1['model'],_0x4088d1[_0x8b7d('0x31')]);_0x2ab495[_0x8b7d('0x35')]=_['intersection'](_0x4088d1['model'],qs[_0x8b7d('0x36')](_0x1e2f0d['query'][_0x8b7d('0x36')]));_0x2ab495['attributes']=_0x2ab495[_0x8b7d('0x35')][_0x8b7d('0x37')]?_0x2ab495['attributes']:_0x4088d1['model'];_0x2ab495[_0x8b7d('0x3a')]=qs[_0x8b7d('0x3b')](_0x1e2f0d['query'][_0x8b7d('0x3b')]);_0x2ab495[_0x8b7d('0x3c')]=qs['filters'](_['pick'](_0x1e2f0d[_0x8b7d('0x31')],_0x4088d1[_0x8b7d('0x33')]));if(_0x1e2f0d[_0x8b7d('0x31')][_0x8b7d('0x3e')]){_0x2ab495[_0x8b7d('0x3c')]=_[_0x8b7d('0x3f')](_0x2ab495[_0x8b7d('0x3c')],{'$or':_[_0x8b7d('0x30')](_0x2ab495[_0x8b7d('0x35')],function(_0x292884){var _0x26515d={};_0x26515d[_0x292884]={'$like':'%'+_0x1e2f0d['query']['filter']+'%'};return _0x26515d;})});}if(_0x1e2f0d[_0x8b7d('0x31')]['$gte']){var _0x59c08f=_0x1e2f0d[_0x8b7d('0x31')][_0x8b7d('0x57')][_0x8b7d('0x58')](',');var _0x4361cc={};_0x4361cc[_0x59c08f[0x0]]={'$gte':moment(_0x59c08f[0x1])[_0x8b7d('0x59')](_0x8b7d('0x5a'))};_0x2ab495['where']=_[_0x8b7d('0x3f')](_0x2ab495[_0x8b7d('0x3c')],_0x4361cc);}_0x2ab495=_[_0x8b7d('0x3f')]({},_0x2ab495,_0x1e2f0d['options']);return _0x159182[_0x8b7d('0x5b')](_0x2ab495);}})[_0x8b7d('0x27')](function(_0x7b65fc){if(_0x7b65fc){_0x3229d2=_0x7b65fc[_0x8b7d('0x37')];if(!_0x1e2f0d[_0x8b7d('0x31')][_0x8b7d('0x38')](_0x8b7d('0x39'))){_0x2ab495[_0x8b7d('0x21')]=qs['limit'](_0x1e2f0d[_0x8b7d('0x31')][_0x8b7d('0x21')]);_0x2ab495[_0x8b7d('0x1f')]=qs[_0x8b7d('0x1f')](_0x1e2f0d[_0x8b7d('0x31')]['offset']);}return _0x159182['getMessages'](_0x2ab495);}})[_0x8b7d('0x27')](function(_0x1839b1){if(_0x1839b1){return _0x1839b1?{'count':_0x3229d2,'rows':_0x1839b1}:null;}})[_0x8b7d('0x27')](respondWithResult(_0x2c32fe,null))[_0x8b7d('0x45')](handleError(_0x2c32fe,null));};
\ No newline at end of file
index e9700ea..dd65331 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b64=['update','remove','emit','hook','events','../../mysqldb','ChatGroup','setMaxListeners','save'];(function(_0x26cc4d,_0x32f706){var _0x3d52c8=function(_0x3e9e38){while(--_0x3e9e38){_0x26cc4d['push'](_0x26cc4d['shift']());}};_0x3d52c8(++_0x32f706);}(_0x3b64,0x1bd));var _0x43b6=function(_0x5a5534,_0x57e666){_0x5a5534=_0x5a5534-0x0;var _0x298ead=_0x3b64[_0x5a5534];return _0x298ead;};'use strict';var EventEmitter=require(_0x43b6('0x0'));var ChatGroup=require(_0x43b6('0x1'))['db'][_0x43b6('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x43b6('0x3')](0x0);var events={'afterCreate':_0x43b6('0x4'),'afterUpdate':_0x43b6('0x5'),'afterDestroy':_0x43b6('0x6')};function emitEvent(_0x5def73){return function(_0x35953b,_0x5bc35d,_0xd9c446){ChatGroupEvents[_0x43b6('0x7')](_0x5def73+':'+_0x35953b['id'],_0x35953b);ChatGroupEvents[_0x43b6('0x7')](_0x5def73,_0x35953b);_0xd9c446(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup[_0x43b6('0x8')](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
+var _0x9303=['events','setMaxListeners','update','emit','hasOwnProperty'];(function(_0x1e7214,_0x4a5237){var _0x555261=function(_0x1f12c7){while(--_0x1f12c7){_0x1e7214['push'](_0x1e7214['shift']());}};_0x555261(++_0x4a5237);}(_0x9303,0xd7));var _0x3930=function(_0x37d0bc,_0x109b96){_0x37d0bc=_0x37d0bc-0x0;var _0x170e60=_0x9303[_0x37d0bc];return _0x170e60;};'use strict';var EventEmitter=require(_0x3930('0x0'));var ChatGroup=require('../../mysqldb')['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x3930('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x3930('0x2'),'afterDestroy':'remove'};function emitEvent(_0x4fd19e){return function(_0x3e9314,_0x2dddd0,_0x1fb17){ChatGroupEvents[_0x3930('0x3')](_0x4fd19e+':'+_0x3e9314['id'],_0x3e9314);ChatGroupEvents['emit'](_0x4fd19e,_0x3e9314);_0x1fb17(null);};}for(var e in events){if(events[_0x3930('0x4')](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
index 5fb5e5b..66246f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x771e=['../../config/logger','moment','bluebird','request-promise','path','../../config/environment','exports','chat_groups','lodash'];(function(_0x442c23,_0x2d8c52){var _0x165b59=function(_0x4608b4){while(--_0x4608b4){_0x442c23['push'](_0x442c23['shift']());}};_0x165b59(++_0x2d8c52);}(_0x771e,0x14c));var _0xe771=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x771e[_0x2641f9];return _0x585741;};'use strict';var _=require(_0xe771('0x0'));var util=require('util');var logger=require(_0xe771('0x1'))('api');var moment=require(_0xe771('0x2'));var BPromise=require(_0xe771('0x3'));var rp=require(_0xe771('0x4'));var fs=require('fs');var path=require(_0xe771('0x5'));var rimraf=require('rimraf');var config=require(_0xe771('0x6'));var attributes=require('./chatGroup.attributes');module[_0xe771('0x7')]=function(_0x519b2a,_0x317c38){return _0x519b2a['define']('ChatGroup',attributes,{'tableName':_0xe771('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe1e0=['define','ChatGroup','chat_groups','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports'];(function(_0x4571a2,_0x14be4c){var _0x1de9e9=function(_0x115600){while(--_0x115600){_0x4571a2['push'](_0x4571a2['shift']());}};_0x1de9e9(++_0x14be4c);}(_0xe1e0,0x78));var _0x0e1e=function(_0x36c8aa,_0x2aa1cd){_0x36c8aa=_0x36c8aa-0x0;var _0x1d196c=_0xe1e0[_0x36c8aa];return _0x1d196c;};'use strict';var _=require(_0x0e1e('0x0'));var util=require(_0x0e1e('0x1'));var logger=require(_0x0e1e('0x2'))(_0x0e1e('0x3'));var moment=require(_0x0e1e('0x4'));var BPromise=require(_0x0e1e('0x5'));var rp=require(_0x0e1e('0x6'));var fs=require('fs');var path=require(_0x0e1e('0x7'));var rimraf=require(_0x0e1e('0x8'));var config=require('../../config/environment');var attributes=require('./chatGroup.attributes');module[_0x0e1e('0x9')]=function(_0x115ee3,_0x326d2f){return _0x115ee3[_0x0e1e('0xa')](_0x0e1e('0xb'),attributes,{'tableName':_0x0e1e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cac9c23..b8511af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb38e=['rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','request','ChatGroup,\x20%s,\x20%s','request\x20sent','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x11d553,_0x17e7f4){var _0x374ad5=function(_0x49dd1b){while(--_0x49dd1b){_0x11d553['push'](_0x11d553['shift']());}};_0x374ad5(++_0x17e7f4);}(_0xb38e,0xa7));var _0xeb38=function(_0x48f2a1,_0x41e0ba){_0x48f2a1=_0x48f2a1-0x0;var _0x5414a1=_0xb38e[_0x48f2a1];return _0x5414a1;};'use strict';var _=require(_0xeb38('0x0'));var util=require(_0xeb38('0x1'));var moment=require(_0xeb38('0x2'));var BPromise=require(_0xeb38('0x3'));var rs=require(_0xeb38('0x4'));var fs=require('fs');var Redis=require(_0xeb38('0x5'));var db=require(_0xeb38('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xeb38('0x7'))(_0xeb38('0x8'));var config=require('../../config/environment');var jayson=require(_0xeb38('0x9'));var client=jayson[_0xeb38('0xa')][_0xeb38('0xb')]({'port':0x232a});config[_0xeb38('0xc')]=_['defaults'](config[_0xeb38('0xc')],{'host':_0xeb38('0xd'),'port':0x18eb});var socket=require(_0xeb38('0xe'))(new Redis(config[_0xeb38('0xc')]));require('./chatGroup.socket')[_0xeb38('0xf')](socket);function respondWithRpcPromise(_0x34c438,_0x8a6144,_0xa54e19){return new BPromise(function(_0xfbd120,_0x1542f4){return client[_0xeb38('0x10')](_0x34c438,_0xa54e19)['then'](function(_0x170e47){logger['info'](_0xeb38('0x11'),_0x8a6144,_0xeb38('0x12'));logger['debug'](_0xeb38('0x13'),_0x8a6144,_0xeb38('0x12'),JSON[_0xeb38('0x14')](_0x170e47));if(_0x170e47[_0xeb38('0x15')]){if(_0x170e47[_0xeb38('0x15')][_0xeb38('0x16')]===0x1f4){logger['error'](_0xeb38('0x11'),_0x8a6144,_0x170e47[_0xeb38('0x15')][_0xeb38('0x17')]);return _0x1542f4(_0x170e47[_0xeb38('0x15')][_0xeb38('0x17')]);}logger[_0xeb38('0x15')](_0xeb38('0x11'),_0x8a6144,_0x170e47['error'][_0xeb38('0x17')]);return _0xfbd120(_0x170e47[_0xeb38('0x15')][_0xeb38('0x17')]);}else{logger['info'](_0xeb38('0x11'),_0x8a6144,'request\x20sent');_0xfbd120(_0x170e47['result'][_0xeb38('0x17')]);}})[_0xeb38('0x18')](function(_0x95a29){logger['error']('ChatGroup,\x20%s,\x20%s',_0x8a6144,_0x95a29);_0x1542f4(_0x95a29);});});}
\ No newline at end of file
+var _0x1360=['../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./chatGroup.socket','register','then','info','request\x20sent','debug','stringify','error','ChatGroup,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x41fa50,_0x53ad6a){var _0x96a63c=function(_0x11b482){while(--_0x11b482){_0x41fa50['push'](_0x41fa50['shift']());}};_0x96a63c(++_0x53ad6a);}(_0x1360,0x180));var _0x0136=function(_0x9bcc0b,_0x120f6c){_0x9bcc0b=_0x9bcc0b-0x0;var _0x195399=_0x1360[_0x9bcc0b];return _0x195399;};'use strict';var _=require(_0x0136('0x0'));var util=require(_0x0136('0x1'));var moment=require(_0x0136('0x2'));var BPromise=require(_0x0136('0x3'));var rs=require(_0x0136('0x4'));var fs=require('fs');var Redis=require(_0x0136('0x5'));var db=require(_0x0136('0x6'))['db'];var utils=require(_0x0136('0x7'));var logger=require(_0x0136('0x8'))(_0x0136('0x9'));var config=require(_0x0136('0xa'));var jayson=require(_0x0136('0xb'));var client=jayson['client'][_0x0136('0xc')]({'port':0x232a});config[_0x0136('0xd')]=_[_0x0136('0xe')](config['redis'],{'host':_0x0136('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0136('0xd')]));require(_0x0136('0x10'))[_0x0136('0x11')](socket);function respondWithRpcPromise(_0x34e1c6,_0xe1ae06,_0x4fbb44){return new BPromise(function(_0x1a129f,_0x4f33d5){return client['request'](_0x34e1c6,_0x4fbb44)[_0x0136('0x12')](function(_0x1dc80d){logger[_0x0136('0x13')]('ChatGroup,\x20%s,\x20%s',_0xe1ae06,_0x0136('0x14'));logger[_0x0136('0x15')]('ChatGroup,\x20%s,\x20%s,\x20%s',_0xe1ae06,_0x0136('0x14'),JSON[_0x0136('0x16')](_0x1dc80d));if(_0x1dc80d['error']){if(_0x1dc80d[_0x0136('0x17')]['code']===0x1f4){logger[_0x0136('0x17')](_0x0136('0x18'),_0xe1ae06,_0x1dc80d[_0x0136('0x17')][_0x0136('0x19')]);return _0x4f33d5(_0x1dc80d[_0x0136('0x17')][_0x0136('0x19')]);}logger[_0x0136('0x17')]('ChatGroup,\x20%s,\x20%s',_0xe1ae06,_0x1dc80d[_0x0136('0x17')][_0x0136('0x19')]);return _0x1a129f(_0x1dc80d[_0x0136('0x17')][_0x0136('0x19')]);}else{logger[_0x0136('0x13')](_0x0136('0x18'),_0xe1ae06,'request\x20sent');_0x1a129f(_0x1dc80d[_0x0136('0x1a')][_0x0136('0x19')]);}})[_0x0136('0x1b')](function(_0x20ed11){logger['error']('ChatGroup,\x20%s,\x20%s',_0xe1ae06,_0x20ed11);_0x4f33d5(_0x20ed11);});});}
\ No newline at end of file
index 93ce986..ce29767 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa850=['length','./chatGroup.events','save','remove','update','emit','removeListener','register'];(function(_0x193e28,_0x3dac1d){var _0x20ef59=function(_0x48047e){while(--_0x48047e){_0x193e28['push'](_0x193e28['shift']());}};_0x20ef59(++_0x3dac1d);}(_0xa850,0xc1));var _0x0a85=function(_0x248dfb,_0x5bd780){_0x248dfb=_0x248dfb-0x0;var _0x168f8f=_0xa850[_0x248dfb];return _0x168f8f;};'use strict';var ChatGroupEvents=require(_0x0a85('0x0'));var events=[_0x0a85('0x1'),_0x0a85('0x2'),_0x0a85('0x3')];function createListener(_0x2dc27a,_0x27ef13){return function(_0x3917f6){_0x27ef13[_0x0a85('0x4')](_0x2dc27a,_0x3917f6);};}function removeListener(_0xb5778e,_0x4c64bc){return function(){ChatGroupEvents[_0x0a85('0x5')](_0xb5778e,_0x4c64bc);};}exports[_0x0a85('0x6')]=function(_0x3e44d0){for(var _0x7ce8a7=0x0,_0x120b8a=events[_0x0a85('0x7')];_0x7ce8a7<_0x120b8a;_0x7ce8a7++){var _0x4826cb=events[_0x7ce8a7];var _0x1e887f=createListener('chatGroup:'+_0x4826cb,_0x3e44d0);ChatGroupEvents['on'](_0x4826cb,_0x1e887f);}};
\ No newline at end of file
+var _0x6d23=['save','remove','removeListener','register','length','./chatGroup.events'];(function(_0x247d2f,_0x3ba76e){var _0x44bf93=function(_0x8be164){while(--_0x8be164){_0x247d2f['push'](_0x247d2f['shift']());}};_0x44bf93(++_0x3ba76e);}(_0x6d23,0x1df));var _0x36d2=function(_0x47314f,_0x3137f0){_0x47314f=_0x47314f-0x0;var _0x4e430d=_0x6d23[_0x47314f];return _0x4e430d;};'use strict';var ChatGroupEvents=require(_0x36d2('0x0'));var events=[_0x36d2('0x1'),_0x36d2('0x2'),'update'];function createListener(_0x252b5b,_0x467445){return function(_0x31548c){_0x467445['emit'](_0x252b5b,_0x31548c);};}function removeListener(_0x36feea,_0x15ec1a){return function(){ChatGroupEvents[_0x36d2('0x3')](_0x36feea,_0x15ec1a);};}exports[_0x36d2('0x4')]=function(_0x18eab7){for(var _0x27b539=0x0,_0x5efc54=events[_0x36d2('0x5')];_0x27b539<_0x5efc54;_0x27b539++){var _0x273e57=events[_0x27b539];var _0x1ba695=createListener('chatGroup:'+_0x273e57,_0x18eab7);ChatGroupEvents['on'](_0x273e57,_0x1ba695);}};
\ No newline at end of file
index d112d90..c097351 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f1d=['/:id/messages','create','post','/:id/members','addMembers','delete','destroy','removeMembers','exports','multer','path','Router','../../components/interaction/service','../../config/environment','isAuthenticated','index','/describe','describe','get','/:id','show','/:id/unread','getMembers'];(function(_0x57c02c,_0x52a409){var _0x5c42e9=function(_0x58f289){while(--_0x58f289){_0x57c02c['push'](_0x57c02c['shift']());}};_0x5c42e9(++_0x52a409);}(_0x6f1d,0xd8));var _0xd6f1=function(_0x34362f,_0x57e762){_0x34362f=_0x34362f-0x0;var _0x24c0b6=_0x6f1d[_0x34362f];return _0x24c0b6;};'use strict';var multer=require(_0xd6f1('0x0'));var util=require('util');var path=require(_0xd6f1('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xd6f1('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xd6f1('0x3'));var config=require(_0xd6f1('0x4'));var controller=require('./chatGroup.controller');router['get']('/',auth[_0xd6f1('0x5')](),controller[_0xd6f1('0x6')]);router['get'](_0xd6f1('0x7'),auth[_0xd6f1('0x5')](),controller[_0xd6f1('0x8')]);router[_0xd6f1('0x9')](_0xd6f1('0xa'),auth[_0xd6f1('0x5')](),controller[_0xd6f1('0xb')]);router['get'](_0xd6f1('0xc'),auth[_0xd6f1('0x5')](),controller['getUnread']);router[_0xd6f1('0x9')]('/:id/members',auth[_0xd6f1('0x5')](),controller[_0xd6f1('0xd')]);router[_0xd6f1('0x9')](_0xd6f1('0xe'),auth[_0xd6f1('0x5')](),controller['getMessages']);router['post']('/',auth[_0xd6f1('0x5')](),controller[_0xd6f1('0xf')]);router[_0xd6f1('0x10')](_0xd6f1('0x11'),auth[_0xd6f1('0x5')](),controller[_0xd6f1('0x12')]);router[_0xd6f1('0x10')](_0xd6f1('0xe'),auth[_0xd6f1('0x5')](),controller['addMessage']);router['put'](_0xd6f1('0xa'),auth[_0xd6f1('0x5')](),controller['update']);router[_0xd6f1('0x13')](_0xd6f1('0xa'),auth[_0xd6f1('0x5')](),controller[_0xd6f1('0x14')]);router[_0xd6f1('0x13')]('/:id/members',auth[_0xd6f1('0x5')](),controller[_0xd6f1('0x15')]);module[_0xd6f1('0x16')]=router;
\ No newline at end of file
+var _0x0c89=['connect-timeout','express','Router','fs-extra','../../components/auth/service','./chatGroup.controller','get','describe','/:id','show','/:id/unread','getUnread','/:id/members','isAuthenticated','getMembers','/:id/messages','getMessages','post','create','addMembers','addMessage','put','update','destroy','delete','removeMembers','exports','multer','path'];(function(_0x148f37,_0x325e4d){var _0x53546c=function(_0x2784fe){while(--_0x2784fe){_0x148f37['push'](_0x148f37['shift']());}};_0x53546c(++_0x325e4d);}(_0x0c89,0x72));var _0x90c8=function(_0x2e09b0,_0x34f0bb){_0x2e09b0=_0x2e09b0-0x0;var _0x270c52=_0x0c89[_0x2e09b0];return _0x270c52;};'use strict';var multer=require(_0x90c8('0x0'));var util=require('util');var path=require(_0x90c8('0x1'));var timeout=require(_0x90c8('0x2'));var express=require(_0x90c8('0x3'));var router=express[_0x90c8('0x4')]();var fs_extra=require(_0x90c8('0x5'));var auth=require(_0x90c8('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x90c8('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x90c8('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x90c8('0x9')]);router[_0x90c8('0x8')](_0x90c8('0xa'),auth['isAuthenticated'](),controller[_0x90c8('0xb')]);router[_0x90c8('0x8')](_0x90c8('0xc'),auth['isAuthenticated'](),controller[_0x90c8('0xd')]);router[_0x90c8('0x8')](_0x90c8('0xe'),auth[_0x90c8('0xf')](),controller[_0x90c8('0x10')]);router[_0x90c8('0x8')](_0x90c8('0x11'),auth[_0x90c8('0xf')](),controller[_0x90c8('0x12')]);router[_0x90c8('0x13')]('/',auth[_0x90c8('0xf')](),controller[_0x90c8('0x14')]);router[_0x90c8('0x13')](_0x90c8('0xe'),auth['isAuthenticated'](),controller[_0x90c8('0x15')]);router[_0x90c8('0x13')]('/:id/messages',auth['isAuthenticated'](),controller[_0x90c8('0x16')]);router[_0x90c8('0x17')](_0x90c8('0xa'),auth[_0x90c8('0xf')](),controller[_0x90c8('0x18')]);router['delete']('/:id',auth[_0x90c8('0xf')](),controller[_0x90c8('0x19')]);router[_0x90c8('0x1a')]('/:id/members',auth[_0x90c8('0xf')](),controller[_0x90c8('0x1b')]);module[_0x90c8('0x1c')]=router;
\ No newline at end of file
index 63a460c..ee52ec6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ba2=['sequelize','BOOLEAN','ENUM','star','thumb','TEXT','STRING','DATE','long','out'];(function(_0x4c216c,_0x43f2cd){var _0x10f6de=function(_0x4f62b9){while(--_0x4f62b9){_0x4c216c['push'](_0x4c216c['shift']());}};_0x10f6de(++_0x43f2cd);}(_0x1ba2,0xb4));var _0x21ba=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1ba2[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x21ba('0x0'));module['exports']={'closed':{'type':Sequelize[_0x21ba('0x1')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0x21ba('0x2')](_0x21ba('0x3'),_0x21ba('0x4')),'defaultValue':_0x21ba('0x3')},'ratingMessage':{'type':Sequelize[_0x21ba('0x5')]},'pathTranscript':{'type':Sequelize['TEXT']},'mailTranscript':{'type':Sequelize[_0x21ba('0x6')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x21ba('0x7')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x21ba('0x6')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x21ba('0x6')]},'browserName':{'type':Sequelize[_0x21ba('0x6')]},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize[_0x21ba('0x6')]},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0x21ba('0x6')]},'deviceVendor':{'type':Sequelize[_0x21ba('0x6')]},'deviceType':{'type':Sequelize['STRING']},'referer':{'type':Sequelize[_0x21ba('0x5')]},'customerIp':{'type':Sequelize[_0x21ba('0x6')]},'formData':{'type':Sequelize[_0x21ba('0x5')](_0x21ba('0x8'))},'read1stAt':{'type':Sequelize[_0x21ba('0x7')]},'lastMsgAt':{'type':Sequelize[_0x21ba('0x7')]},'lastMsgDirection':{'type':Sequelize[_0x21ba('0x2')]('in',_0x21ba('0x9')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x21ba('0x6')]},'customerPort':{'type':Sequelize[_0x21ba('0x6')]},'vidaooSessionId':{'type':Sequelize[_0x21ba('0x5')]},'autoreplyExecuted':{'type':Sequelize[_0x21ba('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x7fce=['sequelize','exports','BOOLEAN','ENUM','thumb','TEXT','STRING','long','DATE','out'];(function(_0x27790a,_0x51c3b1){var _0x435f1e=function(_0x5ddf99){while(--_0x5ddf99){_0x27790a['push'](_0x27790a['shift']());}};_0x435f1e(++_0x51c3b1);}(_0x7fce,0xdc));var _0xe7fc=function(_0x4a9e74,_0x43ac6e){_0x4a9e74=_0x4a9e74-0x0;var _0x2fb631=_0x7fce[_0x4a9e74];return _0x2fb631;};'use strict';var Sequelize=require(_0xe7fc('0x0'));module[_0xe7fc('0x1')]={'closed':{'type':Sequelize[_0xe7fc('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0xe7fc('0x3')]('star',_0xe7fc('0x4')),'defaultValue':'star'},'ratingMessage':{'type':Sequelize[_0xe7fc('0x5')]},'pathTranscript':{'type':Sequelize[_0xe7fc('0x5')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xe7fc('0x6')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xe7fc('0x6')]},'note':{'type':Sequelize[_0xe7fc('0x6')]},'browserName':{'type':Sequelize[_0xe7fc('0x6')]},'browserVersion':{'type':Sequelize[_0xe7fc('0x6')]},'osName':{'type':Sequelize[_0xe7fc('0x6')]},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0xe7fc('0x6')]},'deviceVendor':{'type':Sequelize['STRING']},'deviceType':{'type':Sequelize[_0xe7fc('0x6')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize[_0xe7fc('0x6')]},'formData':{'type':Sequelize[_0xe7fc('0x5')](_0xe7fc('0x7'))},'read1stAt':{'type':Sequelize[_0xe7fc('0x8')]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xe7fc('0x3')]('in',_0xe7fc('0x9')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize['STRING']},'vidaooSessionId':{'type':Sequelize[_0xe7fc('0x5')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 01476f2..0cb52dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ffd=['MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','DESC','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','agent','getChatWebsites','isEmpty','i.ChatWebsiteId\x20IS\x20NULL','role','sequelize','keyBy','a.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','c.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','GROUP_CONCAT(DISTINCT\x20t.id)','toString','ui.ChatInteractionId\x20IN\x20?','groupBy','params','includeAll','find','destroy','describe','createVidaooSession','findOne','ChatWebsite','vidaooNote','vidaooApiKey','vidaooEscalation','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','follow','vidaooMetadata','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','join_url','out','ChatMessage','create','updateAttributes','customUpdate','abandonInteraction,\x20%s,\x20%s,\x20%s','Interaction\x20already\x20assigned','closed','disposition','AbandonInteraction','abandon','attachmentUpload','file','originalname','basename','filename','Attachment','attachmentDownload','attachId','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','download','close','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','now','pathTranscript','Messages','%s%d','agentAlias','System','Visitor','agentIdentifier','website_alias','agent_alias','alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','direction','appendFileSync','MailAccount','Smtp','service','host','port','secure','authentication','auth','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','addMessage','ids','omit','getMessages','ChatInteractionId','YYYY-MM-DD\x20HH:mm:ss','options','findAll','rows','secret','include','includeAgent','push','setTags','spread','Tag','emit','chatInteractionTags:save','removeTags','unix','tmp','server','files','CmContact','firstName','attachments','Account','Owner','get','mkdirSync','Chat','closedAt','browserName','osName','referer','customerIp','customerPort','tail','existsSync','createReadStream','pipe','lastName','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','unlinkSync','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','localhost','socket.io-emitter','register','jayson/promise','http','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','sendStatus','end','json','offset','undefined','limit','count','status','set','apply','reject','save','update','stack','name','render','merge','body','contact','account','Users','fullname','Tags','TagIds','split','forEach','index','ChatInteraction','rawAttributes','fieldName','type','keys','query','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','select','field','color','from','left_join','u.id\x20=\x20ui.UserId','chat_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','chat_websites','a.id\x20=\x20i.ChatWebsiteId','chat_messages','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','parseSearch','search','conditions','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','map','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','compact','ChatWebsiteId','where','i.ChatWebsiteId\x20IN\x20?','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x39874a,_0x3e9340){_0x39874a=_0x39874a-0x0;var _0x12a8fe=_0x9ffd[_0x39874a];return _0x12a8fe;};'use strict';var emlformat=require(_0xd9ff('0x0'));var rimraf=require(_0xd9ff('0x1'));var zipdir=require(_0xd9ff('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd9ff('0x3'));var moment=require(_0xd9ff('0x4'));var BPromise=require(_0xd9ff('0x5'));var Mustache=require(_0xd9ff('0x6'));var util=require('util');var path=require(_0xd9ff('0x7'));var sox=require(_0xd9ff('0x8'));var csv=require('to-csv');var ejs=require(_0xd9ff('0x9'));var fs=require('fs');var fs_extra=require(_0xd9ff('0xa'));var _=require(_0xd9ff('0xb'));var squel=require(_0xd9ff('0xc'));var crypto=require(_0xd9ff('0xd'));var jsforce=require(_0xd9ff('0xe'));var deskjs=require(_0xd9ff('0xf'));var toCsv=require(_0xd9ff('0x10'));var querystring=require(_0xd9ff('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xd9ff('0x12'));var pdf=require(_0xd9ff('0x13'));var hardwareService=require(_0xd9ff('0x14'));var logger=require(_0xd9ff('0x15'))(_0xd9ff('0x16'));var utils=require(_0xd9ff('0x17'));var config=require(_0xd9ff('0x18'));var licenseUtil=require(_0xd9ff('0x19'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xd9ff('0x1a')](config[_0xd9ff('0x1b')],{'host':_0xd9ff('0x1c'),'port':0x18eb});var socket=require(_0xd9ff('0x1d'))(new Redis(config[_0xd9ff('0x1b')]));require('./chatInteraction.socket')[_0xd9ff('0x1e')](socket);var jayson=require(_0xd9ff('0x1f'));var client=jayson['client'][_0xd9ff('0x20')]({'port':0x232b});var client9004=jayson['client']['http']({'port':0x232c});function respondWithRpcPromise(_0x547e28,_0x4c5718,_0x271287,_0x4f9d6d){return new BPromise(function(_0x35679e,_0xa30fd2){var _0x39c6ce=_0x4f9d6d||client;return _0x39c6ce[_0xd9ff('0x21')](_0x547e28,_0x271287)[_0xd9ff('0x22')](function(_0x2d4df1){logger[_0xd9ff('0x23')](_0xd9ff('0x24'),_0x4c5718,_0xd9ff('0x25'));logger[_0xd9ff('0x26')](_0xd9ff('0x27'),_0x4c5718,_0xd9ff('0x25'),JSON[_0xd9ff('0x28')](_0x2d4df1));if(_0x2d4df1['error']){if(_0x2d4df1['error'][_0xd9ff('0x29')]===0x1f4){logger[_0xd9ff('0x2a')]('ChatInteraction,\x20%s,\x20%s',_0x4c5718,_0x2d4df1['error']['message']);return _0xa30fd2(_0x2d4df1['error'][_0xd9ff('0x2b')]);}logger['error'](_0xd9ff('0x24'),_0x4c5718,_0x2d4df1[_0xd9ff('0x2a')][_0xd9ff('0x2b')]);return _0x35679e(_0x2d4df1[_0xd9ff('0x2a')][_0xd9ff('0x2b')]);}else{logger[_0xd9ff('0x23')]('ChatInteraction,\x20%s,\x20%s',_0x4c5718,'request\x20sent');_0x35679e(_0x2d4df1[_0xd9ff('0x2c')]['message']);}})[_0xd9ff('0x2d')](function(_0x4d86fe){logger[_0xd9ff('0x2a')]('ChatInteraction,\x20%s,\x20%s',_0x4c5718,_0x4d86fe);_0xa30fd2(_0x4d86fe);});});}function respondWithStatusCode(_0x10cbdd,_0x159e56){_0x159e56=_0x159e56||0xcc;return function(_0x2138b4){if(_0x2138b4){return _0x10cbdd[_0xd9ff('0x2e')](_0x159e56);}return _0x10cbdd['status'](_0x159e56)[_0xd9ff('0x2f')]();};}function respondWithResult(_0xe11f88,_0x1c78c4){_0x1c78c4=_0x1c78c4||0xc8;return function(_0x4390f7){if(_0x4390f7){return _0xe11f88['status'](_0x1c78c4)[_0xd9ff('0x30')](_0x4390f7);}};}function respondWithFilteredResult(_0x3792d9,_0x44b5a7){return function(_0x45fb63){if(_0x45fb63){var _0x263d3a=typeof _0x44b5a7[_0xd9ff('0x31')]===_0xd9ff('0x32')&&typeof _0x44b5a7[_0xd9ff('0x33')]===_0xd9ff('0x32');var _0x5706cf=_0x45fb63[_0xd9ff('0x34')];var _0x4ba2be=_0x263d3a?0x0:_0x44b5a7[_0xd9ff('0x31')];var _0x29c532=_0x263d3a?_0x45fb63[_0xd9ff('0x34')]:_0x44b5a7['offset']+_0x44b5a7[_0xd9ff('0x33')];var _0x3b26da;if(_0x29c532>=_0x5706cf){_0x29c532=_0x5706cf;_0x3b26da=0xc8;}else{_0x3b26da=0xce;}_0x3792d9[_0xd9ff('0x35')](_0x3b26da);return _0x3792d9[_0xd9ff('0x36')]('Content-Range',_0x4ba2be+'-'+_0x29c532+'/'+_0x5706cf)[_0xd9ff('0x30')](_0x45fb63);}return null;};}function patchUpdates(_0x5743de){return function(_0x18c28b){try{jsonpatch[_0xd9ff('0x37')](_0x18c28b,_0x5743de,!![]);}catch(_0x323cb5){return BPromise[_0xd9ff('0x38')](_0x323cb5);}return _0x18c28b[_0xd9ff('0x39')]();};}function saveUpdates(_0xdf3947,_0x2cc2ae){return function(_0x281c7b){if(_0x281c7b){return _0x281c7b[_0xd9ff('0x3a')](_0xdf3947)[_0xd9ff('0x22')](function(_0x4813a5){return _0x4813a5;});}return null;};}function removeEntity(_0x34e9a9,_0x4670e4){return function(_0x66f4d){if(_0x66f4d){return _0x66f4d['destroy']()[_0xd9ff('0x22')](function(){_0x34e9a9[_0xd9ff('0x35')](0xcc)[_0xd9ff('0x2f')]();});}};}function handleEntityNotFound(_0x4ab10f,_0x3d449d){return function(_0x5e3ff9){if(!_0x5e3ff9){_0x4ab10f[_0xd9ff('0x2e')](0x194);}return _0x5e3ff9;};}function handleError(_0x4ae56b,_0x20a021){_0x20a021=_0x20a021||0x1f4;return function(_0x5db498){logger[_0xd9ff('0x2a')](_0x5db498[_0xd9ff('0x3b')]);if(_0x5db498[_0xd9ff('0x3c')]){delete _0x5db498['name'];}_0x4ae56b['status'](_0x20a021)['send'](_0x5db498);};}function getMustacheRender(_0x7ac3d1,_0x30fc5b){return Mustache[_0xd9ff('0x3d')](_0x7ac3d1,_[_0xd9ff('0x3e')](_0x30fc5b[_0xd9ff('0x3f')],{'contact':_0x30fc5b[_0xd9ff('0x40')],'message':_0x30fc5b['message'],'agent':_0x30fc5b['agent'],'interaction':_0x30fc5b['interaction'],'account':_0x30fc5b[_0xd9ff('0x41')]}))||'';}function getInteractionUsers(_0x252edc,_0x918c9a){return new BPromise(function(_0x32adae,_0x56b94d){try{if(_0x918c9a[_0x252edc['id']]){_0x252edc[_0xd9ff('0x42')]=_['map'](_0x918c9a[_0x252edc['id']],function(_0x3cff52){return{'id':_0x3cff52['id'],'fullname':_0x3cff52[_0xd9ff('0x43')]};});}}catch(_0x1bedaf){_0x56b94d(_0x1bedaf);}_0x32adae(_0x252edc);});}function getInteractionTags(_0x169dc7,_0x59fc07){return new BPromise(function(_0x1e34da,_0x2d4d97){try{if(_0x169dc7['TagIds']){_0x169dc7[_0xd9ff('0x44')]=[];_0x169dc7[_0xd9ff('0x45')][_0xd9ff('0x46')](',')[_0xd9ff('0x47')](function(_0x1fe44d){_0x169dc7[_0xd9ff('0x44')]['push'](_0x59fc07[_0x1fe44d]);});}delete _0x169dc7[_0xd9ff('0x45')];}catch(_0x116f28){_0x2d4d97(_0x116f28);}_0x1e34da(_0x169dc7);});}function updateChatInteraction(_0x10533a,_0x39fbbb,_0x472724){return new BPromise(function(_0x52aab8,_0x3178cd){return getInteractionUsers(_0x10533a,_0x472724)[_0xd9ff('0x22')](function(_0xe0bc49){return getInteractionTags(_0xe0bc49,_0x39fbbb);})['then'](function(_0x5d06dd){_0x52aab8(_0x5d06dd);})[_0xd9ff('0x2d')](function(_0x7eb1a){_0x3178cd(_0x7eb1a);});});}exports[_0xd9ff('0x48')]=function(_0x2dfb8f,_0x437561){var _0x30c69d={},_0x564ef4={},_0xd64585={'count':0x0,'rows':[]};var _0x2d3013=_['map'](db[_0xd9ff('0x49')][_0xd9ff('0x4a')],function(_0x13a1ec){return{'name':_0x13a1ec[_0xd9ff('0x4b')],'type':_0x13a1ec[_0xd9ff('0x4c')]['key']};});_0x564ef4['model']=_['map'](_0x2d3013,_0xd9ff('0x3c'));_0x564ef4['query']=_[_0xd9ff('0x4d')](_0x2dfb8f[_0xd9ff('0x4e')]);_0x564ef4[_0xd9ff('0x4f')]=_['intersection'](_0x564ef4[_0xd9ff('0x50')],_0x564ef4[_0xd9ff('0x4e')]);_0x30c69d['attributes']=_[_0xd9ff('0x51')](_0x564ef4[_0xd9ff('0x50')],qs[_0xd9ff('0x52')](_0x2dfb8f[_0xd9ff('0x4e')]['fields']));_0x30c69d[_0xd9ff('0x53')]=_0x30c69d['attributes'][_0xd9ff('0x54')]?_0x30c69d['attributes']:_0x564ef4[_0xd9ff('0x50')];if(!_0x2dfb8f[_0xd9ff('0x4e')][_0xd9ff('0x55')](_0xd9ff('0x56'))){_0x30c69d[_0xd9ff('0x33')]=qs['limit'](_0x2dfb8f[_0xd9ff('0x4e')][_0xd9ff('0x33')]);_0x30c69d[_0xd9ff('0x31')]=qs[_0xd9ff('0x31')](_0x2dfb8f['query']['offset']);}_0x30c69d['order']=qs[_0xd9ff('0x57')](_0x2dfb8f[_0xd9ff('0x4e')][_0xd9ff('0x57')]);_0x30c69d['where']=qs[_0xd9ff('0x4f')](_[_0xd9ff('0x58')](_0x2dfb8f[_0xd9ff('0x4e')],_0x564ef4[_0xd9ff('0x4f')]),_0x2d3013);var _0xfede73=[];var _0x40d391=squel[_0xd9ff('0x59')]()[_0xd9ff('0x5a')]('id')[_0xd9ff('0x5a')](_0xd9ff('0x3c'))[_0xd9ff('0x5a')](_0xd9ff('0x5b'))[_0xd9ff('0x5c')]('tools_tags');var _0x3ed112=squel['select']()[_0xd9ff('0x5a')]('u.id')[_0xd9ff('0x5a')]('u.fullname')[_0xd9ff('0x5a')]('ui.ChatInteractionId')[_0xd9ff('0x5c')]('user_has_chat_interactions','ui')[_0xd9ff('0x5d')]('users','u',_0xd9ff('0x5e'));var _0x5da1a8=squel[_0xd9ff('0x59')]()[_0xd9ff('0x5c')](_0xd9ff('0x5f'),'i')[_0xd9ff('0x5d')]('cm_contacts','c',_0xd9ff('0x60'))[_0xd9ff('0x5d')](_0xd9ff('0x61'),'o','o.id\x20=\x20i.UserId')[_0xd9ff('0x5d')](_0xd9ff('0x62'),'a',_0xd9ff('0x63'))[_0xd9ff('0x5d')](_0xd9ff('0x64'),'me','me.ChatInteractionId\x20=\x20i.id')[_0xd9ff('0x5d')](_0xd9ff('0x65'),'it',_0xd9ff('0x66'))[_0xd9ff('0x5d')](_0xd9ff('0x67'),'t',_0xd9ff('0x68'));var _0x458fd4=squel['expr']();var _0x3be850=[];var _0x11251f=squel['expr']();var _0x1c885f;if(_0x2dfb8f[_0xd9ff('0x4e')]['search']){_0x1c885f=as[_0xd9ff('0x69')](_0x2dfb8f[_0xd9ff('0x4e')][_0xd9ff('0x6a')]);var _0x54ea27=_0x1c885f['sqlOperator'];for(var _0x39473e=0x0;_0x39473e<_0x1c885f['conditions'][_0xd9ff('0x54')];_0x39473e++){var _0x1e4d0c=_0x1c885f[_0xd9ff('0x6b')][_0x39473e];var _0x102aea='i';var _0x53a230=_['find'](_0x2d3013,['name',_0x1e4d0c[_0xd9ff('0x5a')]]);if(!_0x53a230){switch(_0x1e4d0c[_0xd9ff('0x5a')]){case _0xd9ff('0x6c'):if(_0x1e4d0c[_0xd9ff('0x6d')]==0x1){_0x5da1a8[_0xd9ff('0x6e')]('`'+_0x1e4d0c['field']+_0xd9ff('0x6f'));}else{_0x5da1a8['having']('`'+_0x1e4d0c[_0xd9ff('0x5a')]+_0xd9ff('0x70'));}break;case _0xd9ff('0x71'):if(_0x1e4d0c[_0xd9ff('0x72')]===_0xd9ff('0x73')){if(_0x1e4d0c[_0xd9ff('0x6d')][_0xd9ff('0x46')]('\x20')[_0xd9ff('0x54')]>0x1){_0x458fd4[_0x54ea27]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xd9ff('0x74')](_0x1e4d0c[_0xd9ff('0x6d')]),null);}else{var _0x4f5338='%'+_0x1e4d0c['value']+'%';_0x458fd4[_0x54ea27](_0xd9ff('0x75'),_0x4f5338,_0x4f5338,_0x4f5338);}}else{_0x53a230=_['find'](_0x2d3013,[_0xd9ff('0x3c'),_0xd9ff('0x76')]);_0x1e4d0c['field']=_0xd9ff('0x76');_0x58c9c2=as[_0xd9ff('0x77')](_0x102aea,_0x53a230[_0xd9ff('0x4c')],_0x1e4d0c);_0x458fd4[_0x54ea27](_0x58c9c2[_0xd9ff('0x78')],_0x58c9c2[_0xd9ff('0x6d')]['start'],_0x58c9c2[_0xd9ff('0x6d')]['end']);}break;case'Tag':var _0x3dabb1=_0x1e4d0c[_0xd9ff('0x6d')][_0xd9ff('0x46')](',')[_0xd9ff('0x79')](function(_0x56d822){return Number(_0x56d822);});_0x3dabb1[_0xd9ff('0x47')](function(_0x23b816){_0x11251f['or'](_0xd9ff('0x7a'),'%,'+_0x23b816+',%');});_0x3be850=_[_0xd9ff('0x7b')](_0x3be850,_0x3dabb1);break;case _0xd9ff('0x7c'):if(_0x1e4d0c[_0xd9ff('0x72')]===_0xd9ff('0x73')){_0x458fd4[_0x54ea27](_0xd9ff('0x7d'),'%'+_0x1e4d0c['value']+'%',null);}else{_0x53a230=_['find'](_0x2d3013,['name',_0xd9ff('0x7e')]);_0x1e4d0c[_0xd9ff('0x5a')]='UserId';_0x58c9c2=as[_0xd9ff('0x77')](_0x102aea,_0x53a230[_0xd9ff('0x4c')],_0x1e4d0c);_0x458fd4[_0x54ea27](_0x58c9c2[_0xd9ff('0x78')],_0x58c9c2[_0xd9ff('0x6d')][_0xd9ff('0x7f')],_0x58c9c2[_0xd9ff('0x6d')][_0xd9ff('0x2f')]);}break;case _0xd9ff('0x3f'):_0x58c9c2=as['buildExpression']('me',null,_0x1e4d0c);_0x458fd4[_0x54ea27](_0x58c9c2[_0xd9ff('0x78')],_0x58c9c2[_0xd9ff('0x6d')][_0xd9ff('0x7f')],_0x58c9c2['value'][_0xd9ff('0x2f')]);break;}}else{var _0x58c9c2=as[_0xd9ff('0x77')](_0x102aea,_0x53a230[_0xd9ff('0x4c')],_0x1e4d0c);_0x458fd4[_0x54ea27](_0x58c9c2[_0xd9ff('0x78')],_0x58c9c2['value'][_0xd9ff('0x7f')],_0x58c9c2[_0xd9ff('0x6d')][_0xd9ff('0x2f')]);}}}else{var _0x1cd620=_(_0x2dfb8f['query'])[_0xd9ff('0x4d')]()[_0xd9ff('0x79')](function(_0x1de5c9){return _['some'](_0x2d3013,[_0xd9ff('0x3c'),_0x1de5c9])?_0x1de5c9:undefined;})[_0xd9ff('0x80')]()[_0xd9ff('0x6d')]();if(!_['isEmpty'](_0x1cd620)){_0x1cd620[_0xd9ff('0x47')](function(_0x35926f){if(_0x35926f===_0xd9ff('0x81')){_0x5da1a8[_0xd9ff('0x82')](_0xd9ff('0x83'),[]['concat'](_0x2dfb8f[_0xd9ff('0x4e')][_0x35926f]));}else if(_0x35926f===_0xd9ff('0x84')){var _0x59af0a=JSON[_0xd9ff('0x85')](_0x2dfb8f[_0xd9ff('0x4e')][_0x35926f])[_0xd9ff('0x86')];var _0x5d1973=JSON[_0xd9ff('0x85')](_0x2dfb8f['query'][_0x35926f])[_0xd9ff('0x87')];_0x5da1a8['where'](_0xd9ff('0x88'),_0x59af0a,_0x5d1973);}else{if(_0x2dfb8f[_0xd9ff('0x4e')][_0x35926f]===_0xd9ff('0x89')){_0x5da1a8[_0xd9ff('0x82')]('i.'+_0x35926f+_0xd9ff('0x8a'));}else{_0x5da1a8[_0xd9ff('0x82')]('i.'+_0x35926f+_0xd9ff('0x8b'),_0x2dfb8f[_0xd9ff('0x4e')][_0x35926f]);}}});}if(_0x2dfb8f[_0xd9ff('0x4e')][_0xd9ff('0x8c')]){if(_0x2dfb8f['query'][_0xd9ff('0x8c')]==0x1){_0x5da1a8[_0xd9ff('0x6e')](_0xd9ff('0x8d'));}else{_0x5da1a8[_0xd9ff('0x6e')](_0xd9ff('0x8e'));}}if(_0x2dfb8f[_0xd9ff('0x4e')]['tag']){_0x3be850=_['isArray'](_0x2dfb8f[_0xd9ff('0x4e')][_0xd9ff('0x8f')])?_0x2dfb8f[_0xd9ff('0x4e')][_0xd9ff('0x8f')]:new Array(_0x2dfb8f[_0xd9ff('0x4e')][_0xd9ff('0x8f')]);_0x3be850['forEach'](function(_0x1d34a1){_0x11251f['or'](_0xd9ff('0x7a'),'%,'+_0x1d34a1+',%');});}if(_0x2dfb8f[_0xd9ff('0x4e')][_0xd9ff('0x90')]){var _0x14c89f=_0x2dfb8f[_0xd9ff('0x4e')]['filter'][_0xd9ff('0x91')]('\x5c','\x5c\x5c')[_0xd9ff('0x91')](/'/g,'\x27\x27');if(qs[_0xd9ff('0x92')](_0x14c89f)){_0x458fd4['or'](_0xd9ff('0x93'),_0x14c89f+'%');}else{_0x458fd4['or'](_0xd9ff('0x94'),qs[_0xd9ff('0x74')](_0x14c89f))['or'](_0xd9ff('0x95'),_0x14c89f+'%');}}}_0x5da1a8[_0xd9ff('0x82')](_0x458fd4);_0x5da1a8['group'](_0xd9ff('0x96'));var _0x4c2ad5={'type':db[_0xd9ff('0x97')][_0xd9ff('0x98')][_0xd9ff('0x99')],'raw':!![]};var _0x2d2d1c=_0x5da1a8[_0xd9ff('0x9a')]();_0x2d2d1c[_0xd9ff('0x5a')](_0xd9ff('0x96'));_0x2d2d1c[_0xd9ff('0x5a')](_0xd9ff('0x9b'),_0xd9ff('0x6c'));if(_0x30c69d[_0xd9ff('0x9c')]){_0x30c69d[_0xd9ff('0x9c')][_0xd9ff('0x47')](function(_0x5d29b9){var _0x4413c4=_0x5d29b9[0x0]===_0xd9ff('0x9d')?_0x5d29b9[0x0]:'i.'+_0x5d29b9[0x0];_0x5da1a8[_0xd9ff('0x9c')](_0x4413c4,_0x5d29b9[0x1]===_0xd9ff('0x9e')?![]:!![]);});}if(!_['isEmpty'](_0x3be850)){_0x5da1a8[_0xd9ff('0x6e')](_0x11251f);_0x2d2d1c[_0xd9ff('0x82')]('t.id\x20IN\x20?',_0x3be850);}BPromise[_0xd9ff('0x9f')]()[_0xd9ff('0x22')](function(){if(!_0x1c885f){if(_0x2dfb8f[_0xd9ff('0x4e')][_0xd9ff('0x81')])return;_0x2d2d1c[_0xd9ff('0x82')](_0xd9ff('0xa0'));_0x5da1a8[_0xd9ff('0x82')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');return;}if(_0x2dfb8f[_0xd9ff('0xa1')]['role']!==_0xd9ff('0xa2'))return;return _0x2dfb8f[_0xd9ff('0xa1')][_0xd9ff('0xa3')]({'attributes':['id'],'raw':!![]})[_0xd9ff('0x22')](function(_0x320adb){if(_[_0xd9ff('0xa4')](_0x320adb)){_0x2d2d1c[_0xd9ff('0x82')](_0xd9ff('0xa5'));_0x5da1a8[_0xd9ff('0x82')](_0xd9ff('0xa5'));}else{_0x2d2d1c[_0xd9ff('0x82')]('i.ChatWebsiteId\x20IN\x20?',_[_0xd9ff('0x79')](_0x320adb,'id'));_0x5da1a8[_0xd9ff('0x82')]('i.ChatWebsiteId\x20IN\x20?',_[_0xd9ff('0x79')](_0x320adb,'id'));}});})[_0xd9ff('0x22')](function(){if(_0x2dfb8f[_0xd9ff('0xa1')][_0xd9ff('0xa6')]===_0xd9ff('0xa2')&&!_0x1c885f&&!_0x2dfb8f[_0xd9ff('0x4e')]['ChatWebsiteId'])return[];return db['sequelize'][_0xd9ff('0x4e')](_0x2d2d1c['toString'](),_0x4c2ad5);})['then'](function(_0x4a55c1){_0xd64585['count']=_0x4a55c1[_0xd9ff('0x54')];if(_0xd64585[_0xd9ff('0x34')]===0x0)return[];return db[_0xd9ff('0xa7')]['query'](_0x40d391['toString'](),_0x4c2ad5)[_0xd9ff('0x22')](function(_0x5e7f52){_0xfede73=_[_0xd9ff('0xa8')](_0x5e7f52,'id');_0x4c2ad5=_['merge'](_0x4c2ad5,{'model':db[_0xd9ff('0x49')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2dfb8f[_0xd9ff('0x4e')][_0xd9ff('0x52')]){_0x30c69d[_0xd9ff('0x53')][_0xd9ff('0x47')](function(_0x4e6dd2){_0x5da1a8['field']('i.'+_0x4e6dd2);});}else{_0x5da1a8[_0xd9ff('0x5a')](_0xd9ff('0x9b'),_0xd9ff('0x6c'));_0x5da1a8[_0xd9ff('0x5a')](_0xd9ff('0xa9'),'Account.key');_0x5da1a8[_0xd9ff('0x5a')](_0xd9ff('0xaa'),_0xd9ff('0xab'));_0x5da1a8[_0xd9ff('0x5a')](_0xd9ff('0xac'),_0xd9ff('0x9d'));_0x5da1a8[_0xd9ff('0x5a')](_0xd9ff('0xad'));_0x5da1a8[_0xd9ff('0x5a')](_0xd9ff('0xae'),_0xd9ff('0xaf'));_0x5da1a8[_0xd9ff('0x5a')](_0xd9ff('0xb0'),'Contact.lastName');_0x5da1a8[_0xd9ff('0x5a')](_0xd9ff('0xb1'),'Contact.email');_0x5da1a8['field'](_0xd9ff('0xb2'),_0xd9ff('0xb3'));_0x5da1a8['field'](_0xd9ff('0xb4'),_0xd9ff('0xb5'));_0x5da1a8[_0xd9ff('0x5a')](_0xd9ff('0xb6'),_0xd9ff('0xb7'));_0x5da1a8[_0xd9ff('0x5a')](_0xd9ff('0xb8'),_0xd9ff('0xb9'));_0x5da1a8['field']('o.internal','Owner.internal');_0x5da1a8[_0xd9ff('0x5a')](_0xd9ff('0xba'),_0xd9ff('0x45'));}if(_0x30c69d['limit'])_0x5da1a8[_0xd9ff('0x33')](_0x30c69d[_0xd9ff('0x33')]);if(_0x30c69d[_0xd9ff('0x31')])_0x5da1a8[_0xd9ff('0x31')](_0x30c69d[_0xd9ff('0x31')]);return db[_0xd9ff('0xa7')]['query'](_0x5da1a8[_0xd9ff('0xbb')](),_0x4c2ad5);})['then'](function(_0x5cb3af){if(_0x5cb3af[_0xd9ff('0x54')]>0x0)_0x3ed112[_0xd9ff('0x82')](_0xd9ff('0xbc'),_['map'](_0x5cb3af,'id'));return db[_0xd9ff('0xa7')][_0xd9ff('0x4e')](_0x3ed112['toString'](),_0x4c2ad5)['then'](function(_0x4aa6d5){var _0x11840a=_[_0xd9ff('0xbd')](_0x4aa6d5,'ChatInteractionId');var _0x2871ec=[];_0x5cb3af[_0xd9ff('0x47')](function(_0x16e130){_0x2871ec['push'](updateChatInteraction(_0x16e130,_0xfede73,_0x11840a));});return BPromise['all'](_0x2871ec);});});})['then'](function(_0xdf2e33){_0xd64585['rows']=_0xdf2e33;return _0xd64585;})[_0xd9ff('0x22')](respondWithFilteredResult(_0x437561,_0x30c69d))[_0xd9ff('0x2d')](handleError(_0x437561,null));};exports['show']=function(_0x1b048b,_0x5eeeaf){var _0x3339e5={'raw':![],'where':{'id':_0x1b048b[_0xd9ff('0xbe')]['id']}},_0x1f7d87={};_0x1f7d87['model']=_[_0xd9ff('0x4d')](db['ChatInteraction']['rawAttributes']);_0x1f7d87['query']=_[_0xd9ff('0x4d')](_0x1b048b[_0xd9ff('0x4e')]);_0x1f7d87[_0xd9ff('0x4f')]=_[_0xd9ff('0x51')](_0x1f7d87['model'],_0x1f7d87['query']);_0x3339e5[_0xd9ff('0x53')]=_[_0xd9ff('0x51')](_0x1f7d87[_0xd9ff('0x50')],qs[_0xd9ff('0x52')](_0x1b048b[_0xd9ff('0x4e')]['fields']));_0x3339e5['attributes']=_0x3339e5[_0xd9ff('0x53')][_0xd9ff('0x54')]?_0x3339e5[_0xd9ff('0x53')]:_0x1f7d87[_0xd9ff('0x50')];if(_0x1b048b[_0xd9ff('0x4e')][_0xd9ff('0xbf')]){_0x3339e5['include']=[{'all':!![]}];}_0x3339e5=_[_0xd9ff('0x3e')]({},_0x3339e5,_0x1b048b['options']);return db['ChatInteraction'][_0xd9ff('0xc0')](_0x3339e5)[_0xd9ff('0x22')](handleEntityNotFound(_0x5eeeaf,null))[_0xd9ff('0x22')](respondWithResult(_0x5eeeaf,null))[_0xd9ff('0x2d')](handleError(_0x5eeeaf,null));};exports['create']=function(_0x4e3fdd,_0x2cf8da){return db['ChatInteraction']['create'](_0x4e3fdd[_0xd9ff('0x3f')],{})['then'](respondWithResult(_0x2cf8da,0xc9))[_0xd9ff('0x2d')](handleError(_0x2cf8da,null));};exports['update']=function(_0x327cd8,_0xd95329){if(_0x327cd8[_0xd9ff('0x3f')]['id']){delete _0x327cd8[_0xd9ff('0x3f')]['id'];}return db[_0xd9ff('0x49')][_0xd9ff('0xc0')]({'where':{'id':_0x327cd8[_0xd9ff('0xbe')]['id']}})['then'](handleEntityNotFound(_0xd95329,null))[_0xd9ff('0x22')](saveUpdates(_0x327cd8['body'],null))['then'](respondWithResult(_0xd95329,null))[_0xd9ff('0x2d')](handleError(_0xd95329,null));};exports[_0xd9ff('0xc1')]=function(_0x499869,_0x3c86ac){return db['ChatInteraction']['find']({'where':{'id':_0x499869[_0xd9ff('0xbe')]['id']}})[_0xd9ff('0x22')](handleEntityNotFound(_0x3c86ac,null))[_0xd9ff('0x22')](removeEntity(_0x3c86ac,null))[_0xd9ff('0x2d')](handleError(_0x3c86ac,null));};exports[_0xd9ff('0xc2')]=function(_0x11c84f,_0x2d0261){return db[_0xd9ff('0x49')][_0xd9ff('0xc2')]()[_0xd9ff('0x22')](respondWithResult(_0x2d0261,null))[_0xd9ff('0x2d')](handleError(_0x2d0261,null));};exports[_0xd9ff('0xc3')]=function(_0x73cfcf,_0x538f20){var _0x51feff=_0x73cfcf['params']['id'];var _0x30c62c;var _0x50b6b2;var _0x413aef;return db[_0xd9ff('0x49')][_0xd9ff('0xc4')]({'where':{'id':_0x51feff}})[_0xd9ff('0x22')](function(_0x54c390){_0x30c62c=_0x54c390;return db[_0xd9ff('0xc5')]['findOne']({'where':{'id':_0x54c390[_0xd9ff('0x81')]},'attributes':['id','vidaooApiKey','vidaooEscalation','vidaooTopic',_0xd9ff('0xc6'),'vidaooMetadata'],'raw':!![]});})[_0xd9ff('0x22')](function(_0x54524c){if(_0x54524c&&_0x54524c[_0xd9ff('0xc7')]&&_0x54524c[_0xd9ff('0xc8')]){_0x50b6b2=_0x54524c;var _0x696e18={'interaction':{'id':_0x51feff},'agent':{'id':_0x73cfcf[_0xd9ff('0xa1')]['id'],'name':_0x73cfcf[_0xd9ff('0xa1')][_0xd9ff('0x3c')],'fullname':_0x73cfcf['user']['fullname'],'email':_0x73cfcf[_0xd9ff('0xa1')][_0xd9ff('0xc9')]},'contact':_0x73cfcf[_0xd9ff('0x3f')][_0xd9ff('0x40')],'account':_0x73cfcf[_0xd9ff('0x3f')]['account']};var _0x432854={'rejectUnauthorized':![],'method':_0xd9ff('0xca'),'url':_0xd9ff('0xcb'),'headers':{'X-APIKEY':_0x54524c[_0xd9ff('0xc7')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x73cfcf[_0xd9ff('0xa1')][_0xd9ff('0xc9')]],'buttons':null,'topic':_0x50b6b2['vidaooTopic'],'note':_[_0xd9ff('0xcc')](_0x50b6b2[_0xd9ff('0xc6')])?null:getMustacheRender(_0x50b6b2[_0xd9ff('0xc6')],_0x696e18),'metadata':null},'redirect':_0xd9ff('0xcd'),'json':!![]};try{if(!_[_0xd9ff('0xcc')](_0x50b6b2[_0xd9ff('0xce')])){var _0x1c8e55=getMustacheRender(_0x50b6b2[_0xd9ff('0xce')],_0x696e18);var _0x29fdb8=JSON[_0xd9ff('0x85')](_0x1c8e55);_0x432854[_0xd9ff('0x3f')][_0xd9ff('0xcf')]=_0x29fdb8;}}catch(_0xfc755a){throw new db[(_0xd9ff('0x97'))][(_0xd9ff('0xd0'))](_0xd9ff('0xd1'));}return rp(_0x432854);}else{throw new db[(_0xd9ff('0x97'))][(_0xd9ff('0xd0'))]('Error\x20in\x20Vidaoo\x20configuration');}})[_0xd9ff('0x22')](function(_0x282183){_0x413aef=_0x282183;if(_0x413aef['id']){var _0x3aba00={'body':_0x413aef[_0xd9ff('0xd2')],'ChatWebsiteId':_0x50b6b2['id'],'ChatInteractionId':_0x30c62c['id'],'direction':_0xd9ff('0xd3'),'UserId':_0x73cfcf[_0xd9ff('0xa1')]['id']};return db[_0xd9ff('0xd4')][_0xd9ff('0xd5')](_0x3aba00,{});}else{throw new db['Sequelize'][(_0xd9ff('0xd0'))]('Unable\x20to\x20create\x20Vidaoo\x20session');}})[_0xd9ff('0x22')](function(){return _0x30c62c[_0xd9ff('0xd6')]({'vidaooSessionId':_0x413aef['id']});})[_0xd9ff('0x22')](respondWithResult(_0x538f20,null))[_0xd9ff('0x2d')](handleError(_0x538f20,null));};exports[_0xd9ff('0xd7')]=function(_0x204127,_0xf98666){if(_0x204127['body']['id']){delete _0x204127[_0xd9ff('0x3f')]['id'];}return db[_0xd9ff('0x49')][_0xd9ff('0xc0')]({'where':{'id':_0x204127[_0xd9ff('0xbe')]['id']},'include':[{'model':db['CmContact'],'as':_0xd9ff('0x71')}]})[_0xd9ff('0x22')](handleEntityNotFound(_0xf98666,null))['then'](saveUpdates(_0x204127[_0xd9ff('0x3f')],null))[_0xd9ff('0x22')](respondWithResult(_0xf98666,null))['catch'](handleError(_0xf98666,null));};exports['abandon']=function(_0x5c4138,_0x560ea2,_0x1e6d5a){if(_0x5c4138[_0xd9ff('0x3f')]['id']){delete _0x5c4138[_0xd9ff('0x3f')]['id'];}return db['ChatInteraction']['find']({'where':{'id':_0x5c4138[_0xd9ff('0xbe')]['id']}})['then'](function(_0x43a941){if(!_0x43a941){logger[_0xd9ff('0x2a')](_0xd9ff('0xd8'),'abandon',0x194,'entity\x20not\x20found');_0x560ea2['sendStatus'](0x194);}else{if(_0x43a941[_0xd9ff('0x7e')]){throw new db[(_0xd9ff('0x97'))]['ValidationError'](_0xd9ff('0xd9'));}}return _0x43a941;})[_0xd9ff('0x22')](function(_0x7efe12){if(_0x7efe12){return _0x7efe12[_0xd9ff('0x3a')]({'closed':_0x5c4138[_0xd9ff('0x3f')][_0xd9ff('0xda')],'disposition':_0x5c4138[_0xd9ff('0x3f')][_0xd9ff('0xdb')]})[_0xd9ff('0x22')](function(_0x3b7aeb){return _0x3b7aeb;});}})[_0xd9ff('0x22')](function(_0x37eb49){return respondWithRpcPromise(_0xd9ff('0xdc'),_0xd9ff('0xdd'),_0x5c4138[_0xd9ff('0x3f')],client9004);})[_0xd9ff('0x22')](respondWithResult(_0x560ea2,null))[_0xd9ff('0x2d')](handleError(_0x560ea2,null));};exports[_0xd9ff('0xde')]=function(_0x3b05c4,_0x32c04e,_0x1bcf8f){_0x3b05c4[_0xd9ff('0x3f')][_0xd9ff('0x3c')]=_0x3b05c4[_0xd9ff('0xdf')][_0xd9ff('0xe0')];_0x3b05c4[_0xd9ff('0x3f')][_0xd9ff('0xe1')]=_0x3b05c4[_0xd9ff('0xdf')][_0xd9ff('0xe2')];_0x3b05c4['body'][_0xd9ff('0x4c')]=_0x3b05c4[_0xd9ff('0xdf')]['mimetype'];return db[_0xd9ff('0xe3')][_0xd9ff('0xd5')](_0x3b05c4[_0xd9ff('0x3f')])[_0xd9ff('0x22')](respondWithResult(_0x32c04e,0xc9))[_0xd9ff('0x2d')](handleError(_0x32c04e,null));};exports[_0xd9ff('0xe4')]=function(_0x5978ad,_0x4ddfe7,_0x30c520){return db['ChatInteraction']['findOne']({'where':{'id':_0x5978ad[_0xd9ff('0xbe')]['id']},'raw':!![]})[_0xd9ff('0x22')](handleEntityNotFound(_0x4ddfe7,null))['then'](function(_0x327362){if(_0x327362){if(_0x327362[_0xd9ff('0xda')]){return _0x4ddfe7[_0xd9ff('0x35')](0x193)[_0xd9ff('0x30')]({'status':0x193,'message':'Unauthorized'});}return db[_0xd9ff('0xe3')][_0xd9ff('0xc4')]({'where':{'id':_0x5978ad['query'][_0xd9ff('0xe5')]},'raw':!![]})[_0xd9ff('0x22')](handleEntityNotFound(_0x4ddfe7,null));}})['then'](function(_0x62f1f3){if(_0x62f1f3){var _0xd188cf=_0x62f1f3[_0xd9ff('0xe6')]!==null;var _0x5b2e9c=path[_0xd9ff('0xe7')](config[_0xd9ff('0xe8')],_0xd9ff('0xe9'));if(_0xd188cf){_0x5b2e9c=path['join'](_0x5b2e9c,_0xd9ff('0xea'));}var _0x53a25a=path[_0xd9ff('0xe7')](_0x5b2e9c,_0x62f1f3[_0xd9ff('0xe1')]);return _0x4ddfe7[_0xd9ff('0xeb')](_0x53a25a);}})[_0xd9ff('0x2d')](handleError(_0x4ddfe7,null));};exports[_0xd9ff('0xec')]=function(_0x10397d,_0x51039f){var _0x37ea50=null;var _0x3cf2ef=null;var _0x171195=null;var _0x24c066=null;if(_0x10397d[_0xd9ff('0x3f')]['id']){delete _0x10397d['body']['id'];}if(_0x10397d[_0xd9ff('0x3f')][_0xd9ff('0xed')]){_0x24c066=path['join'](config[_0xd9ff('0xe8')],_0xd9ff('0xee'),util[_0xd9ff('0xef')](_0xd9ff('0xf0'),Date[_0xd9ff('0xf1')]()));_0x10397d[_0xd9ff('0x3f')][_0xd9ff('0xf2')]=_0x24c066;}return db[_0xd9ff('0x49')][_0xd9ff('0xc0')]({'where':{'id':_0x10397d[_0xd9ff('0xbe')]['id']},'include':[{'model':db[_0xd9ff('0xd4')],'as':_0xd9ff('0xf3'),'include':[{'model':db[_0xd9ff('0x7c')],'as':_0xd9ff('0x7c')}]}]})[_0xd9ff('0x22')](handleEntityNotFound(_0x51039f,null))[_0xd9ff('0x22')](saveUpdates(_0x10397d['body'],null))['then'](function(_0x497e36){if(_0x497e36){_0x37ea50=_0x497e36;return db[_0xd9ff('0xc5')]['find']({'where':{'id':_0x37ea50[_0xd9ff('0x81')]}});}})['then'](function(_0x4d4cc0){if(_0x4d4cc0){_0x171195=_0x4d4cc0;return db['CmContact'][_0xd9ff('0xc0')]({'where':{'id':_0x37ea50['ContactId']}});}})['then'](function(_0x474b4c){if(_0x474b4c){_0x3cf2ef=_0x474b4c;if(_0x24c066){var _0x144cf7=null;for(var _0x9eac7f=0x1;_0x9eac7f<_0x37ea50[_0xd9ff('0xf3')][_0xd9ff('0x54')];++_0x9eac7f){_0x144cf7=_0x37ea50[_0xd9ff('0xf3')][_0x9eac7f];var _0x2450da=_0x144cf7[_0xd9ff('0x7e')]?util[_0xd9ff('0xef')](_0xd9ff('0xf4'),_0x171195[_0xd9ff('0xf5')],_0x144cf7[_0xd9ff('0x7e')]):_0xd9ff('0xf6');var _0x4531bc=_0x10397d['body']['customer']||util[_0xd9ff('0xef')](_0xd9ff('0xf4'),_0xd9ff('0xf7'),_0x144cf7[_0xd9ff('0x76')]);switch(_0x171195[_0xd9ff('0xf8')]){case _0xd9ff('0xf9'):_0x2450da=_0x144cf7[_0xd9ff('0x7e')]?util[_0xd9ff('0xef')]('%s%d',_0x171195[_0xd9ff('0xf5')],_0x144cf7[_0xd9ff('0x7e')]):_0xd9ff('0xf6');break;case _0xd9ff('0xfa'):_0x2450da=_0x144cf7['UserId']?_0x144cf7['User'][_0xd9ff('0xfb')]||_0x144cf7[_0xd9ff('0x7c')]['fullname']:_0xd9ff('0xf6');break;case _0xd9ff('0xfc'):_0x2450da=_0x144cf7['UserId']?_0x144cf7[_0xd9ff('0x7c')][_0xd9ff('0x43')]:_0xd9ff('0xf6');break;default:_0x2450da=_0x144cf7[_0xd9ff('0x7e')]?util[_0xd9ff('0xef')](_0xd9ff('0xf4'),_0x171195[_0xd9ff('0xf5')],_0x144cf7['UserId']):_0xd9ff('0xf6');}var _0x62b518=util[_0xd9ff('0xef')](_0xd9ff('0xfd'),moment(_0x144cf7[_0xd9ff('0x84')])['format'](_0xd9ff('0xfe')),_0x144cf7[_0xd9ff('0xff')]==='in'?_0x4531bc:_0x2450da,_0x144cf7[_0xd9ff('0x3f')]);if(!_0x144cf7['secret']){fs[_0xd9ff('0x100')](_0x24c066,_0x62b518);}}return db[_0xd9ff('0x101')][_0xd9ff('0xc4')]({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0xd9ff('0x102'),'raw':!![]}]});}}})['then'](function(_0x5e07ae){if(_0x5e07ae&&_0x5e07ae['Smtp']&&_0x10397d['body']){var _0x578f41={'tls':{'rejectUnauthorized':![]}};if(_0x5e07ae[_0xd9ff('0x102')][_0xd9ff('0x103')]){_0x578f41['service']=_0x5e07ae[_0xd9ff('0x102')][_0xd9ff('0x103')];}else{_0x578f41[_0xd9ff('0x104')]=_0x5e07ae['Smtp'][_0xd9ff('0x104')];_0x578f41['port']=_0x5e07ae['Smtp'][_0xd9ff('0x105')];_0x578f41[_0xd9ff('0x106')]=_0x5e07ae[_0xd9ff('0x102')]['secure'];}if(_0x5e07ae['Smtp'][_0xd9ff('0x107')]){_0x578f41[_0xd9ff('0x108')]={'user':_0x5e07ae['Smtp'][_0xd9ff('0xa1')],'pass':_0x5e07ae[_0xd9ff('0x102')][_0xd9ff('0x109')]};}return respondWithRpcPromise(_0xd9ff('0x10a'),_0xd9ff('0x10b'),{'account':_0x578f41,'message':{'from':util[_0xd9ff('0xef')](_0xd9ff('0x10c'),_0x5e07ae['name'],_0x5e07ae[_0xd9ff('0xc9')]||_0x5e07ae[_0xd9ff('0x102')]['user']),'to':_0x10397d[_0xd9ff('0x3f')][_0xd9ff('0xed')],'subject':'Mail\x20Transcript','text':util[_0xd9ff('0xef')]('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0x10397d[_0xd9ff('0x3f')][_0xd9ff('0xed')]),'attachments':[{'path':_0x24c066}]}})['then'](function(){return _0x37ea50;})[_0xd9ff('0x2d')](function(_0x4d6172){console[_0xd9ff('0x2a')](_0x4d6172);});}else{return _0x37ea50;}})[_0xd9ff('0x22')](respondWithStatusCode(_0x51039f,0xc8))[_0xd9ff('0x2d')](handleError(_0x51039f,null));};exports[_0xd9ff('0x10d')]=function(_0x6a2524,_0x356583,_0x5c1165){return db['ChatMessage'][_0xd9ff('0xc0')]({'where':{'id':_0x6a2524['params']['id']}})[_0xd9ff('0x22')](handleEntityNotFound(_0x356583,null))[_0xd9ff('0x22')](function(_0x599273){if(_0x599273){return _0x599273['addMessage'](_0x6a2524['body'][_0xd9ff('0x10e')],_[_0xd9ff('0x10f')](_0x6a2524[_0xd9ff('0x3f')],['ids','id'])||{});}})[_0xd9ff('0x22')](respondWithResult(_0x356583,null))[_0xd9ff('0x2d')](handleError(_0x356583,null));};exports[_0xd9ff('0x110')]=function(_0x2832b7,_0x618c47,_0x109140){var _0x278670={'raw':![],'where':{}};var _0x5e064d={};var _0x231b46={'count':0x0,'rows':[]};return db[_0xd9ff('0x49')][_0xd9ff('0xc4')]({'where':{'id':_0x2832b7[_0xd9ff('0xbe')]['id']}})[_0xd9ff('0x22')](handleEntityNotFound(_0x618c47,null))[_0xd9ff('0x22')](function(_0x1802b1){if(_0x1802b1){_0x5e064d[_0xd9ff('0x50')]=_[_0xd9ff('0x4d')](db[_0xd9ff('0xd4')][_0xd9ff('0x4a')]);_0x5e064d['query']=_['keys'](_0x2832b7[_0xd9ff('0x4e')]);_0x5e064d['filters']=_['intersection'](_0x5e064d[_0xd9ff('0x50')],_0x5e064d[_0xd9ff('0x4e')]);_0x278670[_0xd9ff('0x53')]=_[_0xd9ff('0x51')](_0x5e064d[_0xd9ff('0x50')],qs['fields'](_0x2832b7[_0xd9ff('0x4e')]['fields']));_0x278670[_0xd9ff('0x53')]=_0x278670[_0xd9ff('0x53')]['length']?_0x278670[_0xd9ff('0x53')]:_0x5e064d[_0xd9ff('0x50')];if(!_0x2832b7[_0xd9ff('0x4e')][_0xd9ff('0x55')](_0xd9ff('0x56'))){_0x278670[_0xd9ff('0x33')]=qs[_0xd9ff('0x33')](_0x2832b7['query'][_0xd9ff('0x33')]);_0x278670[_0xd9ff('0x31')]=qs[_0xd9ff('0x31')](_0x2832b7[_0xd9ff('0x4e')][_0xd9ff('0x31')]);}_0x278670[_0xd9ff('0x9c')]=qs['sort'](_0x2832b7[_0xd9ff('0x4e')][_0xd9ff('0x57')]);_0x278670[_0xd9ff('0x82')]=qs['filters'](_[_0xd9ff('0x58')](_0x2832b7['query'],_0x5e064d[_0xd9ff('0x4f')]));_0x278670['where'][_0xd9ff('0x111')]=_0x1802b1['id'];if(_0x2832b7[_0xd9ff('0x4e')][_0xd9ff('0x90')]){_0x278670['where']=_[_0xd9ff('0x3e')](_0x278670['where'],{'$or':_[_0xd9ff('0x79')](_0x278670[_0xd9ff('0x53')],function(_0x2b2a50){var _0x34f3f0={};_0x34f3f0[_0x2b2a50]={'$like':'%'+_0x2832b7[_0xd9ff('0x4e')]['filter']+'%'};return _0x34f3f0;})});}if(_0x2832b7[_0xd9ff('0x4e')][_0xd9ff('0x86')]){var _0x955328=_0x2832b7[_0xd9ff('0x4e')][_0xd9ff('0x86')][_0xd9ff('0x46')](',');var _0x5d95b1={};_0x5d95b1[_0x955328[0x0]]={'$gte':moment(_0x955328[0x1])['format'](_0xd9ff('0x112'))};_0x278670[_0xd9ff('0x82')]=_[_0xd9ff('0x3e')](_0x278670[_0xd9ff('0x82')],_0x5d95b1);}_0x278670=_[_0xd9ff('0x3e')]({},_0x278670,_0x2832b7[_0xd9ff('0x113')]);return db[_0xd9ff('0xd4')]['count']({'where':_0x278670[_0xd9ff('0x82')]})[_0xd9ff('0x22')](function(_0x3e90fe){_0x231b46[_0xd9ff('0x34')]=_0x3e90fe;if(_0x2832b7[_0xd9ff('0x4e')][_0xd9ff('0xbf')]){_0x278670['include']=[{'all':!![]}];}return db[_0xd9ff('0xd4')][_0xd9ff('0x114')](_0x278670);})[_0xd9ff('0x22')](function(_0x33f933){_0x231b46[_0xd9ff('0x115')]=_0x33f933;return _0x231b46;});}})[_0xd9ff('0x22')](respondWithFilteredResult(_0x618c47,_0x278670))['catch'](handleError(_0x618c47,null));};exports['getMyMessages']=function(_0xf3a93b,_0x473ecf,_0x1213a4){var _0x6f731a={'where':{}},_0x193c57={},_0x4572b2={'count':0x0,'rows':[]};return db[_0xd9ff('0x49')][_0xd9ff('0xc4')]({'where':{'id':_0xf3a93b['params']['id']}})[_0xd9ff('0x22')](handleEntityNotFound(_0x473ecf,null))[_0xd9ff('0x22')](function(_0x4115a3){if(_0x4115a3){_0x193c57[_0xd9ff('0x50')]=_[_0xd9ff('0x4d')](db[_0xd9ff('0xd4')]['rawAttributes']);_0x193c57[_0xd9ff('0x4e')]=_['keys'](_0xf3a93b['query']);_0x193c57[_0xd9ff('0x4f')]=_[_0xd9ff('0x51')](_0x193c57[_0xd9ff('0x50')],_0x193c57[_0xd9ff('0x4e')]);_0x6f731a[_0xd9ff('0x53')]=_[_0xd9ff('0x51')](_0x193c57[_0xd9ff('0x50')],qs[_0xd9ff('0x52')](_0xf3a93b['query'][_0xd9ff('0x52')]));_0x6f731a['attributes']=_0x6f731a[_0xd9ff('0x53')][_0xd9ff('0x54')]?_0x6f731a[_0xd9ff('0x53')]:_0x193c57[_0xd9ff('0x50')];if(!_0xf3a93b['query'][_0xd9ff('0x55')](_0xd9ff('0x56'))){_0x6f731a[_0xd9ff('0x33')]=qs[_0xd9ff('0x33')](_0xf3a93b[_0xd9ff('0x4e')][_0xd9ff('0x33')]);_0x6f731a[_0xd9ff('0x31')]=qs[_0xd9ff('0x31')](_0xf3a93b[_0xd9ff('0x4e')]['offset']);}_0x6f731a[_0xd9ff('0x9c')]=qs['sort'](_0xf3a93b['query'][_0xd9ff('0x57')]);_0x6f731a[_0xd9ff('0x82')]=qs[_0xd9ff('0x4f')](_[_0xd9ff('0x58')](_0xf3a93b[_0xd9ff('0x4e')],_0x193c57[_0xd9ff('0x4f')]));_0x6f731a[_0xd9ff('0x82')][_0xd9ff('0x111')]=_0x4115a3['id'];if(_0xf3a93b[_0xd9ff('0x4e')][_0xd9ff('0x90')]){_0x6f731a[_0xd9ff('0x82')]=_[_0xd9ff('0x3e')](_0x6f731a['where'],{'$or':_[_0xd9ff('0x79')](_0x6f731a['attributes'],function(_0x1bb980){var _0x3ccf5d={};_0x3ccf5d[_0x1bb980]={'$like':'%'+_0xf3a93b['query']['filter']+'%'};return _0x3ccf5d;})});}_0x6f731a[_0xd9ff('0x82')][_0xd9ff('0x116')]=![];if(_0xf3a93b['query']['id']){_0x6f731a[_0xd9ff('0x82')]['id']={'$gt':_0xf3a93b[_0xd9ff('0x4e')]['id']};}_0x6f731a=_['merge']({},_0x6f731a,_0xf3a93b[_0xd9ff('0x113')]);return db['ChatMessage'][_0xd9ff('0x34')]({'where':_0x6f731a[_0xd9ff('0x82')]})[_0xd9ff('0x22')](function(_0x42d9ff){_0x4572b2[_0xd9ff('0x34')]=_0x42d9ff;_0x6f731a[_0xd9ff('0x117')]=[];if(_0xf3a93b[_0xd9ff('0x4e')][_0xd9ff('0x118')]){_0x6f731a[_0xd9ff('0x117')][_0xd9ff('0x119')]({'model':db[_0xd9ff('0x7c')],'as':_0xd9ff('0x7c'),'attributes':['id',_0xd9ff('0x43'),_0xd9ff('0xfb')]});}if(_0xf3a93b['query'][_0xd9ff('0xbf')]){_0x6f731a[_0xd9ff('0x117')]=[{'all':!![]}];}return db[_0xd9ff('0xd4')][_0xd9ff('0x114')](_0x6f731a);})[_0xd9ff('0x22')](function(_0x314f18){_0x4572b2['rows']=_0x314f18;return _0x4572b2;});}})['then'](respondWithFilteredResult(_0x473ecf,_0x6f731a))['catch'](handleError(_0x473ecf,null));};exports['addTags']=function(_0x4699d3,_0x2e91a8,_0x4956b2){return db[_0xd9ff('0x49')][_0xd9ff('0xc0')]({'where':{'id':_0x4699d3[_0xd9ff('0xbe')]['id']}})['then'](handleEntityNotFound(_0x2e91a8,null))['then'](function(_0x217023){if(_0x217023){return _0x217023[_0xd9ff('0x11a')](_0x4699d3['body']['ids'],_['omit'](_0x4699d3['body'],['ids','id'])||{})[_0xd9ff('0x11b')](function(){return db[_0xd9ff('0x11c')][_0xd9ff('0x114')]({'attributes':['id',_0xd9ff('0x3c'),_0xd9ff('0x5b')],'where':{'id':_0x4699d3[_0xd9ff('0x3f')][_0xd9ff('0x10e')]}});})[_0xd9ff('0x22')](function(_0x317f93){socket[_0xd9ff('0x11d')](_0xd9ff('0x11e'),{'id':Number(_0x4699d3[_0xd9ff('0xbe')]['id']),'tags':_0x317f93||[]});return{'id':Number(_0x4699d3[_0xd9ff('0xbe')]['id']),'tags':_0x317f93||[]};});}})[_0xd9ff('0x22')](respondWithResult(_0x2e91a8,null))[_0xd9ff('0x2d')](handleError(_0x2e91a8,null));};exports[_0xd9ff('0x11f')]=function(_0x404baf,_0x5d73cd,_0xdb719b){return db['ChatInteraction'][_0xd9ff('0xc0')]({'where':{'id':_0x404baf['params']['id']}})[_0xd9ff('0x22')](handleEntityNotFound(_0x5d73cd,null))[_0xd9ff('0x22')](function(_0x10935d){if(_0x10935d){return _0x10935d['removeTags'](_0x404baf['query']['ids']);}})['then'](respondWithStatusCode(_0x5d73cd,null))['catch'](handleError(_0x5d73cd,null));};exports[_0xd9ff('0xeb')]=function(_0x2031e9,_0x3b50d9){var _0x410fae=moment()[_0xd9ff('0x120')]()[_0xd9ff('0xbb')]();var _0x494da6=path[_0xd9ff('0xe7')](config[_0xd9ff('0xe8')],'server','files',_0xd9ff('0x121'));var _0x49c9cc=path[_0xd9ff('0xe7')](config['root'],_0xd9ff('0x122'),_0xd9ff('0x123'),'attachments');var _0x378746=path[_0xd9ff('0xe7')](_0x494da6,_0x410fae);var _0x2acbe3=util[_0xd9ff('0xef')]('transcript-%d-%s.zip',_0x2031e9['params']['id'],_0x410fae);var _0x46d12c=path[_0xd9ff('0xe7')](_0x494da6,_0x2acbe3);var _0x54f4aa=[];_0x54f4aa[_0xd9ff('0x119')]({'model':db['User'],'as':_0xd9ff('0x7c'),'attributes':['id',_0xd9ff('0x43')],'raw':!![]});_0x54f4aa[_0xd9ff('0x119')]({'model':db[_0xd9ff('0x124')],'as':_0xd9ff('0x71'),'attributes':['id',_0xd9ff('0x125'),'lastName'],'raw':!![]});if(_0x2031e9['query'][_0xd9ff('0x126')]){_0x54f4aa['push']({'model':db[_0xd9ff('0xe3')],'as':'Attachment','raw':!![]});}var _0xd015e9=[{'model':db[_0xd9ff('0xd4')],'as':_0xd9ff('0xf3'),'attributes':['id','body',_0xd9ff('0x84'),_0xd9ff('0xff'),'secret','read'],'include':_0x54f4aa}];_0xd015e9['push']({'model':db[_0xd9ff('0xc5')],'as':_0xd9ff('0x127'),'attributes':['id',_0xd9ff('0x3c')]});_0xd015e9[_0xd9ff('0x119')]({'model':db[_0xd9ff('0x7c')],'as':_0xd9ff('0x128'),'attributes':['id',_0xd9ff('0x43')]});return db[_0xd9ff('0x49')]['find']({'where':{'id':_0x2031e9[_0xd9ff('0xbe')]['id']},'include':_0xd015e9})[_0xd9ff('0x22')](handleEntityNotFound(_0x3b50d9,null))[_0xd9ff('0x22')](function(_0x1b452e){if(_0x1b452e){var _0x3ab927=_0x1b452e[_0xd9ff('0x129')]({'plain':!![]});fs[_0xd9ff('0x12a')](_0x378746);var _0x2b6e15={'channel':_0xd9ff('0x12b'),'account':_0x3ab927['Account']['name'],'agent':_0x3ab927['Owner']?_0x3ab927[_0xd9ff('0x128')][_0xd9ff('0x43')]:'N.A.','createdAt':moment(_0x3ab927[_0xd9ff('0x84')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xd9ff('0xbb')](),'closedAt':_0x3ab927[_0xd9ff('0xda')]?moment(_0x3ab927[_0xd9ff('0x12c')])[_0xd9ff('0xef')](_0xd9ff('0x112'))[_0xd9ff('0xbb')]():'','disposition':_0x3ab927['disposition'],'chatInfo':{'browser':_0x3ab927[_0xd9ff('0x12d')],'os':_0x3ab927[_0xd9ff('0x12e')],'referer':_0x3ab927[_0xd9ff('0x12f')],'customerIp':_0x3ab927[_0xd9ff('0x130')],'customerPort':_0x3ab927[_0xd9ff('0x131')]?_0x3ab927['customerPort']:'N.A.'},'messages':_(_0x3ab927[_0xd9ff('0xf3')])[_0xd9ff('0x132')]()[_0xd9ff('0x90')]({'secret':![]})[_0xd9ff('0x79')](function(_0x319248){if(_0x319248[_0xd9ff('0xe3')]){var _0x1ea603=path[_0xd9ff('0xe7')](_0x49c9cc,_0x319248[_0xd9ff('0xe3')][_0xd9ff('0xe1')]);if(fs[_0xd9ff('0x133')](_0x1ea603)){fs[_0xd9ff('0x134')](_0x1ea603)[_0xd9ff('0x135')](fs['createWriteStream'](path[_0xd9ff('0xe7')](_0x378746,_0x319248[_0xd9ff('0xe3')][_0xd9ff('0xe1')])));}}return{'date':moment(_0x319248[_0xd9ff('0x84')])[_0xd9ff('0xef')](_0xd9ff('0x112'))[_0xd9ff('0xbb')](),'sender':_0x319248[_0xd9ff('0xff')]===_0xd9ff('0xd3')?_0x319248[_0xd9ff('0x7c')]?_0x319248[_0xd9ff('0x7c')][_0xd9ff('0x43')]:_0xd9ff('0xf6'):_0x319248['Contact'][_0xd9ff('0x125')]+(_0x319248[_0xd9ff('0x71')][_0xd9ff('0x136')]?'\x20'+_0x319248[_0xd9ff('0x71')]['lastName']:''),'body':_0x319248[_0xd9ff('0xe3')]?_0x319248['Attachment']['basename']:_0x319248[_0xd9ff('0x3f')],'direction':_0x319248[_0xd9ff('0xff')]===_0xd9ff('0xd3')?'A':'C','secret':_0x319248[_0xd9ff('0x116')],'read':_0x319248[_0xd9ff('0x8c')],'attachment':_0x319248[_0xd9ff('0xe3')]};})[_0xd9ff('0x6d')]()};return ejs['renderFile'](path[_0xd9ff('0xe7')](config[_0xd9ff('0xe8')],'server',_0xd9ff('0x137'),_0xd9ff('0x138')),{'interaction':_0x2b6e15})[_0xd9ff('0x22')](function(_0xb07a14){var _0x1c419f=path[_0xd9ff('0xe7')](_0x378746,_0xd9ff('0x139')+_0x3ab927['id']+'-'+_0x410fae+_0xd9ff('0x13a'));var _0x3156c8={'path':_0x1c419f,'channel':_0xd9ff('0x12b'),'interactionId':_0x3ab927['id']};return pdf[_0xd9ff('0x13b')](_0xb07a14,_0x3156c8);})['then'](function(){return new BPromise(function(_0x567007,_0x1019f9){zipdir(_0x378746,{'saveTo':_0x46d12c},function(_0x2ab78a,_0x4649d9){if(_0x2ab78a)return _0x1019f9(_0x2ab78a);return _0x567007(_0x4649d9);});})[_0xd9ff('0x22')](function(){return new BPromise(function(_0x166033,_0x3c40e4){rimraf(_0x378746,function(_0x346d93){if(_0x346d93)_0x3c40e4(_0x346d93);return _0x166033();});});})[_0xd9ff('0x22')](function(){return _0x3b50d9['download'](_0x46d12c,_0x2acbe3,function(_0x22680e){if(_0x22680e){console['log'](_0xd9ff('0x13c'),_0x22680e);}else{fs[_0xd9ff('0x13d')](_0x46d12c);}});});});}else{return _0x3b50d9['sendStatus'](0xc8);}})[_0xd9ff('0x2d')](handleError(_0x3b50d9,null));};
\ No newline at end of file
+var _0xef0f=['alias','fullname','agent_fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','secret','appendFileSync','MailAccount','MailServerOut','Smtp','service','host','port','secure','auth','pass','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','mailTranscript','addMessage','ids','getMessages','YYYY-MM-DD\x20HH:mm:ss','findAll','hasOwnProperty','includeAgent','addTags','setTags','omit','emit','removeTags','download','unix','server','files','tmp','attachments','transcript-%d-%s.zip','firstName','lastName','direction','Account','mkdirSync','Chat','Owner','N.A.','browserName','osName','existsSync','pipe','createWriteStream','renderFile','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','err','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','jayson/promise','http','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','sendStatus','status','json','offset','undefined','limit','set','Content-Range','save','update','destroy','end','stack','name','send','render','body','contact','interaction','account','Users','TagIds','Tags','split','forEach','push','index','ChatInteraction','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','nolimit','sort','where','pick','select','field','u.id','u.fullname','ui.ChatInteractionId','from','user_has_chat_interactions','left_join','users','chat_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','a.id\x20=\x20i.ChatWebsiteId','chat_messages','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','tools_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','length','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','type','text','start','Tag','map','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','some','compact','isEmpty','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','DESC','t.id\x20IN\x20?','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','agent','getChatWebsites','ChatWebsiteId','sequelize','toString','count','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','contactName','Contact.firstName','Contact.lastName','c.phone','Contact.phone','Contact.mobile','c.fax','Contact.fax','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','all','rows','params','keys','includeAll','include','options','create','describe','createVidaooSession','ChatWebsite','findOne','vidaooEscalation','vidaooTopic','vidaooMetadata','vidaooApiKey','email','isNull','vidaooNote','follow','metadata','ValidationError','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','Interaction\x20already\x20assigned','closed','disposition','attachmentUpload','originalname','basename','file','filename','mimetype','Unauthorized','Attachment','attachId','join','root','server/files/attachments/','offline-chat/','server/files/chat/upload/','format','now','Messages','%s%d','agentAlias','System','customer','Visitor','agentIdentifier','website_alias'];(function(_0x518ccc,_0x408c01){var _0x177dfa=function(_0x30b222){while(--_0x30b222){_0x518ccc['push'](_0x518ccc['shift']());}};_0x177dfa(++_0x408c01);}(_0xef0f,0x168));var _0xfef0=function(_0x3516ae,_0x21a478){_0x3516ae=_0x3516ae-0x0;var _0x2ffc63=_0xef0f[_0x3516ae];return _0x2ffc63;};'use strict';var emlformat=require(_0xfef0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfef0('0x1'));var jsonpatch=require(_0xfef0('0x2'));var rp=require(_0xfef0('0x3'));var moment=require('moment');var BPromise=require(_0xfef0('0x4'));var Mustache=require(_0xfef0('0x5'));var util=require(_0xfef0('0x6'));var path=require('path');var sox=require(_0xfef0('0x7'));var csv=require(_0xfef0('0x8'));var ejs=require(_0xfef0('0x9'));var fs=require('fs');var fs_extra=require(_0xfef0('0xa'));var _=require(_0xfef0('0xb'));var squel=require(_0xfef0('0xc'));var crypto=require('crypto');var jsforce=require(_0xfef0('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xfef0('0x8'));var querystring=require(_0xfef0('0xe'));var Papa=require(_0xfef0('0xf'));var Redis=require(_0xfef0('0x10'));var authService=require(_0xfef0('0x11'));var qs=require(_0xfef0('0x12'));var as=require(_0xfef0('0x13'));var pdf=require(_0xfef0('0x14'));var hardwareService=require(_0xfef0('0x15'));var logger=require(_0xfef0('0x16'))(_0xfef0('0x17'));var utils=require(_0xfef0('0x18'));var config=require(_0xfef0('0x19'));var licenseUtil=require(_0xfef0('0x1a'));var db=require('../../mysqldb')['db'];config[_0xfef0('0x1b')]=_[_0xfef0('0x1c')](config[_0xfef0('0x1b')],{'host':_0xfef0('0x1d'),'port':0x18eb});var socket=require(_0xfef0('0x1e'))(new Redis(config[_0xfef0('0x1b')]));require(_0xfef0('0x1f'))['register'](socket);var jayson=require(_0xfef0('0x20'));var client=jayson['client']['http']({'port':0x232b});var client9004=jayson['client'][_0xfef0('0x21')]({'port':0x232c});function respondWithRpcPromise(_0x284b6d,_0x3510a7,_0x1bce2f,_0x2a96d9){return new BPromise(function(_0x3f9a6c,_0x155833){var _0x2887e6=_0x2a96d9||client;return _0x2887e6['request'](_0x284b6d,_0x1bce2f)[_0xfef0('0x22')](function(_0x1642cd){logger[_0xfef0('0x23')](_0xfef0('0x24'),_0x3510a7,_0xfef0('0x25'));logger['debug'](_0xfef0('0x26'),_0x3510a7,'request\x20sent',JSON[_0xfef0('0x27')](_0x1642cd));if(_0x1642cd[_0xfef0('0x28')]){if(_0x1642cd[_0xfef0('0x28')]['code']===0x1f4){logger[_0xfef0('0x28')]('ChatInteraction,\x20%s,\x20%s',_0x3510a7,_0x1642cd[_0xfef0('0x28')][_0xfef0('0x29')]);return _0x155833(_0x1642cd['error']['message']);}logger['error'](_0xfef0('0x24'),_0x3510a7,_0x1642cd['error'][_0xfef0('0x29')]);return _0x3f9a6c(_0x1642cd[_0xfef0('0x28')][_0xfef0('0x29')]);}else{logger[_0xfef0('0x23')](_0xfef0('0x24'),_0x3510a7,_0xfef0('0x25'));_0x3f9a6c(_0x1642cd['result']['message']);}})[_0xfef0('0x2a')](function(_0x1ffaa4){logger[_0xfef0('0x28')](_0xfef0('0x24'),_0x3510a7,_0x1ffaa4);_0x155833(_0x1ffaa4);});});}function respondWithStatusCode(_0xab231c,_0xf60f2){_0xf60f2=_0xf60f2||0xcc;return function(_0x5df04f){if(_0x5df04f){return _0xab231c[_0xfef0('0x2b')](_0xf60f2);}return _0xab231c[_0xfef0('0x2c')](_0xf60f2)['end']();};}function respondWithResult(_0x1a6758,_0x394bad){_0x394bad=_0x394bad||0xc8;return function(_0xca0cce){if(_0xca0cce){return _0x1a6758[_0xfef0('0x2c')](_0x394bad)[_0xfef0('0x2d')](_0xca0cce);}};}function respondWithFilteredResult(_0x1ac4a3,_0x3e3c4c){return function(_0x3e026a){if(_0x3e026a){var _0x26cb9a=typeof _0x3e3c4c[_0xfef0('0x2e')]===_0xfef0('0x2f')&&typeof _0x3e3c4c[_0xfef0('0x30')]==='undefined';var _0x445625=_0x3e026a['count'];var _0x4eaf74=_0x26cb9a?0x0:_0x3e3c4c[_0xfef0('0x2e')];var _0x2ae54a=_0x26cb9a?_0x3e026a['count']:_0x3e3c4c['offset']+_0x3e3c4c['limit'];var _0x4f65cd;if(_0x2ae54a>=_0x445625){_0x2ae54a=_0x445625;_0x4f65cd=0xc8;}else{_0x4f65cd=0xce;}_0x1ac4a3['status'](_0x4f65cd);return _0x1ac4a3[_0xfef0('0x31')](_0xfef0('0x32'),_0x4eaf74+'-'+_0x2ae54a+'/'+_0x445625)[_0xfef0('0x2d')](_0x3e026a);}return null;};}function patchUpdates(_0x5cda6b){return function(_0x4d0778){try{jsonpatch['apply'](_0x4d0778,_0x5cda6b,!![]);}catch(_0x1f8110){return BPromise['reject'](_0x1f8110);}return _0x4d0778[_0xfef0('0x33')]();};}function saveUpdates(_0x3783f9,_0x1b9f39){return function(_0x4a2773){if(_0x4a2773){return _0x4a2773[_0xfef0('0x34')](_0x3783f9)['then'](function(_0x4234e4){return _0x4234e4;});}return null;};}function removeEntity(_0x1f21b7,_0x234d49){return function(_0xe5188e){if(_0xe5188e){return _0xe5188e[_0xfef0('0x35')]()[_0xfef0('0x22')](function(){_0x1f21b7[_0xfef0('0x2c')](0xcc)[_0xfef0('0x36')]();});}};}function handleEntityNotFound(_0x590e37,_0x24ea7c){return function(_0xea09ec){if(!_0xea09ec){_0x590e37[_0xfef0('0x2b')](0x194);}return _0xea09ec;};}function handleError(_0x36b2d1,_0xae697){_0xae697=_0xae697||0x1f4;return function(_0x262341){logger[_0xfef0('0x28')](_0x262341[_0xfef0('0x37')]);if(_0x262341[_0xfef0('0x38')]){delete _0x262341[_0xfef0('0x38')];}_0x36b2d1[_0xfef0('0x2c')](_0xae697)[_0xfef0('0x39')](_0x262341);};}function getMustacheRender(_0x366667,_0x4a8af4){return Mustache[_0xfef0('0x3a')](_0x366667,_['merge'](_0x4a8af4[_0xfef0('0x3b')],{'contact':_0x4a8af4[_0xfef0('0x3c')],'message':_0x4a8af4[_0xfef0('0x29')],'agent':_0x4a8af4['agent'],'interaction':_0x4a8af4[_0xfef0('0x3d')],'account':_0x4a8af4[_0xfef0('0x3e')]}))||'';}function getInteractionUsers(_0x3f2753,_0x5537c8){return new BPromise(function(_0x8613a0,_0x3abcc5){try{if(_0x5537c8[_0x3f2753['id']]){_0x3f2753[_0xfef0('0x3f')]=_['map'](_0x5537c8[_0x3f2753['id']],function(_0x3a6667){return{'id':_0x3a6667['id'],'fullname':_0x3a6667['fullname']};});}}catch(_0x49ed48){_0x3abcc5(_0x49ed48);}_0x8613a0(_0x3f2753);});}function getInteractionTags(_0xf30aff,_0x547a5d){return new BPromise(function(_0x5c3305,_0xbf6ddd){try{if(_0xf30aff[_0xfef0('0x40')]){_0xf30aff[_0xfef0('0x41')]=[];_0xf30aff[_0xfef0('0x40')][_0xfef0('0x42')](',')[_0xfef0('0x43')](function(_0x4dd8f8){_0xf30aff[_0xfef0('0x41')][_0xfef0('0x44')](_0x547a5d[_0x4dd8f8]);});}delete _0xf30aff['TagIds'];}catch(_0x54d5cb){_0xbf6ddd(_0x54d5cb);}_0x5c3305(_0xf30aff);});}function updateChatInteraction(_0x1d554e,_0x5dc824,_0x1fc518){return new BPromise(function(_0x22c940,_0x3c100c){return getInteractionUsers(_0x1d554e,_0x1fc518)[_0xfef0('0x22')](function(_0x199c57){return getInteractionTags(_0x199c57,_0x5dc824);})[_0xfef0('0x22')](function(_0x166a7b){_0x22c940(_0x166a7b);})[_0xfef0('0x2a')](function(_0x4e63f3){_0x3c100c(_0x4e63f3);});});}exports[_0xfef0('0x45')]=function(_0x50e372,_0x4b6da1){var _0x18c656={},_0x17d7f2={},_0x5bf416={'count':0x0,'rows':[]};var _0x2af79f=_['map'](db[_0xfef0('0x46')][_0xfef0('0x47')],function(_0x1f252e){return{'name':_0x1f252e[_0xfef0('0x48')],'type':_0x1f252e['type'][_0xfef0('0x49')]};});_0x17d7f2[_0xfef0('0x4a')]=_['map'](_0x2af79f,'name');_0x17d7f2[_0xfef0('0x4b')]=_['keys'](_0x50e372[_0xfef0('0x4b')]);_0x17d7f2[_0xfef0('0x4c')]=_[_0xfef0('0x4d')](_0x17d7f2[_0xfef0('0x4a')],_0x17d7f2[_0xfef0('0x4b')]);_0x18c656[_0xfef0('0x4e')]=_['intersection'](_0x17d7f2[_0xfef0('0x4a')],qs['fields'](_0x50e372['query'][_0xfef0('0x4f')]));_0x18c656[_0xfef0('0x4e')]=_0x18c656[_0xfef0('0x4e')]['length']?_0x18c656[_0xfef0('0x4e')]:_0x17d7f2['model'];if(!_0x50e372['query']['hasOwnProperty'](_0xfef0('0x50'))){_0x18c656[_0xfef0('0x30')]=qs[_0xfef0('0x30')](_0x50e372[_0xfef0('0x4b')][_0xfef0('0x30')]);_0x18c656[_0xfef0('0x2e')]=qs[_0xfef0('0x2e')](_0x50e372[_0xfef0('0x4b')][_0xfef0('0x2e')]);}_0x18c656['order']=qs['sort'](_0x50e372[_0xfef0('0x4b')][_0xfef0('0x51')]);_0x18c656[_0xfef0('0x52')]=qs[_0xfef0('0x4c')](_[_0xfef0('0x53')](_0x50e372[_0xfef0('0x4b')],_0x17d7f2[_0xfef0('0x4c')]),_0x2af79f);var _0x20b647=[];var _0x5e989f=squel[_0xfef0('0x54')]()[_0xfef0('0x55')]('id')[_0xfef0('0x55')](_0xfef0('0x38'))[_0xfef0('0x55')]('color')['from']('tools_tags');var _0x445f3f=squel[_0xfef0('0x54')]()[_0xfef0('0x55')](_0xfef0('0x56'))['field'](_0xfef0('0x57'))[_0xfef0('0x55')](_0xfef0('0x58'))[_0xfef0('0x59')](_0xfef0('0x5a'),'ui')[_0xfef0('0x5b')](_0xfef0('0x5c'),'u','u.id\x20=\x20ui.UserId');var _0x3458b0=squel[_0xfef0('0x54')]()['from'](_0xfef0('0x5d'),'i')['left_join'](_0xfef0('0x5e'),'c',_0xfef0('0x5f'))['left_join'](_0xfef0('0x5c'),'o','o.id\x20=\x20i.UserId')['left_join']('chat_websites','a',_0xfef0('0x60'))[_0xfef0('0x5b')](_0xfef0('0x61'),'me',_0xfef0('0x62'))[_0xfef0('0x5b')](_0xfef0('0x63'),'it','it.ChatInteractionId\x20=\x20i.id')[_0xfef0('0x5b')](_0xfef0('0x64'),'t',_0xfef0('0x65'));var _0x45abb3=squel[_0xfef0('0x66')]();var _0x58d95e=[];var _0x59d1b6=squel['expr']();var _0x135653;if(_0x50e372['query'][_0xfef0('0x67')]){_0x135653=as[_0xfef0('0x68')](_0x50e372[_0xfef0('0x4b')][_0xfef0('0x67')]);var _0xd0255c=_0x135653['sqlOperator'];for(var _0x2abdb7=0x0;_0x2abdb7<_0x135653['conditions'][_0xfef0('0x69')];_0x2abdb7++){var _0x4a1316=_0x135653['conditions'][_0x2abdb7];var _0x3a12c5='i';var _0x3c5640=_[_0xfef0('0x6a')](_0x2af79f,[_0xfef0('0x38'),_0x4a1316[_0xfef0('0x55')]]);if(!_0x3c5640){switch(_0x4a1316[_0xfef0('0x55')]){case _0xfef0('0x6b'):if(_0x4a1316[_0xfef0('0x6c')]==0x1){_0x3458b0[_0xfef0('0x6d')]('`'+_0x4a1316[_0xfef0('0x55')]+_0xfef0('0x6e'));}else{_0x3458b0[_0xfef0('0x6d')]('`'+_0x4a1316['field']+_0xfef0('0x6f'));}break;case _0xfef0('0x70'):if(_0x4a1316[_0xfef0('0x71')]===_0xfef0('0x72')){if(_0x4a1316[_0xfef0('0x6c')]['split']('\x20')[_0xfef0('0x69')]>0x1){_0x45abb3[_0xd0255c](_0xfef0('0x73'),qs[_0xfef0('0x74')](_0x4a1316[_0xfef0('0x6c')]),null);}else{var _0x176fc7='%'+_0x4a1316[_0xfef0('0x6c')]+'%';_0x45abb3[_0xd0255c](_0xfef0('0x75'),_0x176fc7,_0x176fc7,_0x176fc7);}}else{_0x3c5640=_[_0xfef0('0x6a')](_0x2af79f,[_0xfef0('0x38'),_0xfef0('0x76')]);_0x4a1316['field']=_0xfef0('0x76');_0x1d7caf=as['buildExpression'](_0x3a12c5,_0x3c5640[_0xfef0('0x77')],_0x4a1316);_0x45abb3[_0xd0255c](_0x1d7caf[_0xfef0('0x78')],_0x1d7caf['value'][_0xfef0('0x79')],_0x1d7caf[_0xfef0('0x6c')][_0xfef0('0x36')]);}break;case _0xfef0('0x7a'):var _0x1e0ad5=_0x4a1316['value'][_0xfef0('0x42')](',')[_0xfef0('0x7b')](function(_0x2ccb33){return Number(_0x2ccb33);});_0x1e0ad5['forEach'](function(_0x117b74){_0x59d1b6['or'](_0xfef0('0x7c'),'%,'+_0x117b74+',%');});_0x58d95e=_[_0xfef0('0x7d')](_0x58d95e,_0x1e0ad5);break;case _0xfef0('0x7e'):if(_0x4a1316[_0xfef0('0x71')]===_0xfef0('0x72')){_0x45abb3[_0xd0255c](_0xfef0('0x7f'),'%'+_0x4a1316['value']+'%',null);}else{_0x3c5640=_[_0xfef0('0x6a')](_0x2af79f,[_0xfef0('0x38'),_0xfef0('0x80')]);_0x4a1316[_0xfef0('0x55')]=_0xfef0('0x80');_0x1d7caf=as[_0xfef0('0x81')](_0x3a12c5,_0x3c5640['type'],_0x4a1316);_0x45abb3[_0xd0255c](_0x1d7caf[_0xfef0('0x78')],_0x1d7caf[_0xfef0('0x6c')][_0xfef0('0x79')],_0x1d7caf[_0xfef0('0x6c')]['end']);}break;case _0xfef0('0x3b'):_0x1d7caf=as[_0xfef0('0x81')]('me',null,_0x4a1316);_0x45abb3[_0xd0255c](_0x1d7caf['text'],_0x1d7caf[_0xfef0('0x6c')][_0xfef0('0x79')],_0x1d7caf[_0xfef0('0x6c')][_0xfef0('0x36')]);break;}}else{var _0x1d7caf=as['buildExpression'](_0x3a12c5,_0x3c5640['type'],_0x4a1316);_0x45abb3[_0xd0255c](_0x1d7caf['text'],_0x1d7caf[_0xfef0('0x6c')][_0xfef0('0x79')],_0x1d7caf[_0xfef0('0x6c')]['end']);}}}else{var _0x24229e=_(_0x50e372['query'])['keys']()['map'](function(_0x2a92de){return _[_0xfef0('0x82')](_0x2af79f,['name',_0x2a92de])?_0x2a92de:undefined;})[_0xfef0('0x83')]()[_0xfef0('0x6c')]();if(!_[_0xfef0('0x84')](_0x24229e)){_0x24229e['forEach'](function(_0x3f2b55){if(_0x3f2b55==='ChatWebsiteId'){_0x3458b0['where'](_0xfef0('0x85'),[][_0xfef0('0x86')](_0x50e372[_0xfef0('0x4b')][_0x3f2b55]));}else if(_0x3f2b55===_0xfef0('0x87')){var _0x4df63b=JSON['parse'](_0x50e372['query'][_0x3f2b55])[_0xfef0('0x88')];var _0x546455=JSON[_0xfef0('0x89')](_0x50e372[_0xfef0('0x4b')][_0x3f2b55])[_0xfef0('0x8a')];_0x3458b0[_0xfef0('0x52')](_0xfef0('0x8b'),_0x4df63b,_0x546455);}else{if(_0x50e372['query'][_0x3f2b55]===_0xfef0('0x8c')){_0x3458b0['where']('i.'+_0x3f2b55+'\x20IS\x20NULL');}else{_0x3458b0[_0xfef0('0x52')]('i.'+_0x3f2b55+_0xfef0('0x8d'),_0x50e372[_0xfef0('0x4b')][_0x3f2b55]);}}});}if(_0x50e372[_0xfef0('0x4b')]['read']){if(_0x50e372['query'][_0xfef0('0x8e')]==0x1){_0x3458b0[_0xfef0('0x6d')]('`unreadMessages`\x20=\x200');}else{_0x3458b0[_0xfef0('0x6d')](_0xfef0('0x8f'));}}if(_0x50e372[_0xfef0('0x4b')][_0xfef0('0x90')]){_0x58d95e=_[_0xfef0('0x91')](_0x50e372[_0xfef0('0x4b')][_0xfef0('0x90')])?_0x50e372[_0xfef0('0x4b')][_0xfef0('0x90')]:new Array(_0x50e372[_0xfef0('0x4b')][_0xfef0('0x90')]);_0x58d95e[_0xfef0('0x43')](function(_0x3c1136){_0x59d1b6['or'](_0xfef0('0x7c'),'%,'+_0x3c1136+',%');});}if(_0x50e372[_0xfef0('0x4b')][_0xfef0('0x92')]){var _0x1a61e4=_0x50e372['query'][_0xfef0('0x92')][_0xfef0('0x93')]('\x5c','\x5c\x5c')[_0xfef0('0x93')](/'/g,'\x27\x27');if(qs[_0xfef0('0x94')](_0x1a61e4)){_0x45abb3['or'](_0xfef0('0x95'),_0x1a61e4+'%');}else{_0x45abb3['or'](_0xfef0('0x96'),qs[_0xfef0('0x74')](_0x1a61e4))['or'](_0xfef0('0x97'),_0x1a61e4+'%');}}}_0x3458b0[_0xfef0('0x52')](_0x45abb3);_0x3458b0[_0xfef0('0x98')](_0xfef0('0x99'));var _0x17c350={'type':db[_0xfef0('0x9a')]['QueryTypes'][_0xfef0('0x9b')],'raw':!![]};var _0x56af65=_0x3458b0['clone']();_0x56af65[_0xfef0('0x55')](_0xfef0('0x99'));_0x56af65['field'](_0xfef0('0x9c'),'unreadMessages');if(_0x18c656['order']){_0x18c656[_0xfef0('0x9d')][_0xfef0('0x43')](function(_0x4ebcf){var _0x437cb2=_0x4ebcf[0x0]==='contactName'?_0x4ebcf[0x0]:'i.'+_0x4ebcf[0x0];_0x3458b0[_0xfef0('0x9d')](_0x437cb2,_0x4ebcf[0x1]===_0xfef0('0x9e')?![]:!![]);});}if(!_['isEmpty'](_0x58d95e)){_0x3458b0[_0xfef0('0x6d')](_0x59d1b6);_0x56af65[_0xfef0('0x52')](_0xfef0('0x9f'),_0x58d95e);}BPromise['resolve']()['then'](function(){if(!_0x135653){if(_0x50e372[_0xfef0('0x4b')]['ChatWebsiteId'])return;_0x56af65['where'](_0xfef0('0xa0'));_0x3458b0['where'](_0xfef0('0xa0'));return;}if(_0x50e372[_0xfef0('0xa1')][_0xfef0('0xa2')]!==_0xfef0('0xa3'))return;return _0x50e372[_0xfef0('0xa1')][_0xfef0('0xa4')]({'attributes':['id'],'raw':!![]})[_0xfef0('0x22')](function(_0x28cc77){if(_[_0xfef0('0x84')](_0x28cc77)){_0x56af65[_0xfef0('0x52')]('i.ChatWebsiteId\x20IS\x20NULL');_0x3458b0[_0xfef0('0x52')]('i.ChatWebsiteId\x20IS\x20NULL');}else{_0x56af65['where'](_0xfef0('0x85'),_['map'](_0x28cc77,'id'));_0x3458b0[_0xfef0('0x52')](_0xfef0('0x85'),_[_0xfef0('0x7b')](_0x28cc77,'id'));}});})[_0xfef0('0x22')](function(){if(_0x50e372[_0xfef0('0xa1')][_0xfef0('0xa2')]==='agent'&&!_0x135653&&!_0x50e372[_0xfef0('0x4b')][_0xfef0('0xa5')])return[];return db[_0xfef0('0xa6')][_0xfef0('0x4b')](_0x56af65[_0xfef0('0xa7')](),_0x17c350);})[_0xfef0('0x22')](function(_0x3cc27e){_0x5bf416[_0xfef0('0xa8')]=_0x3cc27e['length'];if(_0x5bf416[_0xfef0('0xa8')]===0x0)return[];return db[_0xfef0('0xa6')]['query'](_0x5e989f[_0xfef0('0xa7')](),_0x17c350)[_0xfef0('0x22')](function(_0x221b17){_0x20b647=_['keyBy'](_0x221b17,'id');_0x17c350=_[_0xfef0('0xa9')](_0x17c350,{'model':db['ChatInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x50e372[_0xfef0('0x4b')][_0xfef0('0x4f')]){_0x18c656['attributes'][_0xfef0('0x43')](function(_0x51f79b){_0x3458b0[_0xfef0('0x55')]('i.'+_0x51f79b);});}else{_0x3458b0[_0xfef0('0x55')](_0xfef0('0x9c'),_0xfef0('0x6b'));_0x3458b0[_0xfef0('0x55')](_0xfef0('0xaa'),_0xfef0('0xab'));_0x3458b0[_0xfef0('0x55')](_0xfef0('0xac'),_0xfef0('0xad'));_0x3458b0[_0xfef0('0x55')]('CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0xfef0('0xae'));_0x3458b0['field']('i.*');_0x3458b0[_0xfef0('0x55')]('c.firstName',_0xfef0('0xaf'));_0x3458b0['field']('c.lastName',_0xfef0('0xb0'));_0x3458b0['field']('c.email','Contact.email');_0x3458b0[_0xfef0('0x55')](_0xfef0('0xb1'),_0xfef0('0xb2'));_0x3458b0[_0xfef0('0x55')]('c.mobile',_0xfef0('0xb3'));_0x3458b0[_0xfef0('0x55')](_0xfef0('0xb4'),_0xfef0('0xb5'));_0x3458b0[_0xfef0('0x55')]('o.fullname','Owner.fullname');_0x3458b0[_0xfef0('0x55')](_0xfef0('0xb6'),'Owner.internal');_0x3458b0[_0xfef0('0x55')](_0xfef0('0xb7'),_0xfef0('0x40'));}if(_0x18c656[_0xfef0('0x30')])_0x3458b0[_0xfef0('0x30')](_0x18c656[_0xfef0('0x30')]);if(_0x18c656[_0xfef0('0x2e')])_0x3458b0[_0xfef0('0x2e')](_0x18c656['offset']);return db['sequelize'][_0xfef0('0x4b')](_0x3458b0[_0xfef0('0xa7')](),_0x17c350);})[_0xfef0('0x22')](function(_0x475eb7){if(_0x475eb7[_0xfef0('0x69')]>0x0)_0x445f3f[_0xfef0('0x52')](_0xfef0('0xb8'),_[_0xfef0('0x7b')](_0x475eb7,'id'));return db['sequelize']['query'](_0x445f3f[_0xfef0('0xa7')](),_0x17c350)[_0xfef0('0x22')](function(_0x374877){var _0xd780bb=_[_0xfef0('0xb9')](_0x374877,_0xfef0('0xba'));var _0x5ac2df=[];_0x475eb7[_0xfef0('0x43')](function(_0x1060c2){_0x5ac2df['push'](updateChatInteraction(_0x1060c2,_0x20b647,_0xd780bb));});return BPromise[_0xfef0('0xbb')](_0x5ac2df);});});})[_0xfef0('0x22')](function(_0x36873f){_0x5bf416[_0xfef0('0xbc')]=_0x36873f;return _0x5bf416;})[_0xfef0('0x22')](respondWithFilteredResult(_0x4b6da1,_0x18c656))[_0xfef0('0x2a')](handleError(_0x4b6da1,null));};exports['show']=function(_0x4dd6e8,_0x1084b9){var _0xd7c5b={'raw':![],'where':{'id':_0x4dd6e8[_0xfef0('0xbd')]['id']}},_0xd2c0be={};_0xd2c0be[_0xfef0('0x4a')]=_[_0xfef0('0xbe')](db['ChatInteraction'][_0xfef0('0x47')]);_0xd2c0be['query']=_[_0xfef0('0xbe')](_0x4dd6e8['query']);_0xd2c0be[_0xfef0('0x4c')]=_[_0xfef0('0x4d')](_0xd2c0be['model'],_0xd2c0be[_0xfef0('0x4b')]);_0xd7c5b[_0xfef0('0x4e')]=_[_0xfef0('0x4d')](_0xd2c0be['model'],qs['fields'](_0x4dd6e8['query'][_0xfef0('0x4f')]));_0xd7c5b['attributes']=_0xd7c5b[_0xfef0('0x4e')][_0xfef0('0x69')]?_0xd7c5b['attributes']:_0xd2c0be[_0xfef0('0x4a')];if(_0x4dd6e8['query'][_0xfef0('0xbf')]){_0xd7c5b[_0xfef0('0xc0')]=[{'all':!![]}];}_0xd7c5b=_[_0xfef0('0xa9')]({},_0xd7c5b,_0x4dd6e8[_0xfef0('0xc1')]);return db[_0xfef0('0x46')][_0xfef0('0x6a')](_0xd7c5b)[_0xfef0('0x22')](handleEntityNotFound(_0x1084b9,null))['then'](respondWithResult(_0x1084b9,null))[_0xfef0('0x2a')](handleError(_0x1084b9,null));};exports[_0xfef0('0xc2')]=function(_0x38f96f,_0x1bdf18){return db[_0xfef0('0x46')][_0xfef0('0xc2')](_0x38f96f[_0xfef0('0x3b')],{})[_0xfef0('0x22')](respondWithResult(_0x1bdf18,0xc9))[_0xfef0('0x2a')](handleError(_0x1bdf18,null));};exports[_0xfef0('0x34')]=function(_0x2a25cb,_0x34f1db){if(_0x2a25cb[_0xfef0('0x3b')]['id']){delete _0x2a25cb[_0xfef0('0x3b')]['id'];}return db['ChatInteraction'][_0xfef0('0x6a')]({'where':{'id':_0x2a25cb[_0xfef0('0xbd')]['id']}})[_0xfef0('0x22')](handleEntityNotFound(_0x34f1db,null))[_0xfef0('0x22')](saveUpdates(_0x2a25cb[_0xfef0('0x3b')],null))[_0xfef0('0x22')](respondWithResult(_0x34f1db,null))[_0xfef0('0x2a')](handleError(_0x34f1db,null));};exports[_0xfef0('0x35')]=function(_0x191072,_0x5b5a15){return db['ChatInteraction'][_0xfef0('0x6a')]({'where':{'id':_0x191072['params']['id']}})[_0xfef0('0x22')](handleEntityNotFound(_0x5b5a15,null))[_0xfef0('0x22')](removeEntity(_0x5b5a15,null))[_0xfef0('0x2a')](handleError(_0x5b5a15,null));};exports[_0xfef0('0xc3')]=function(_0xd9c290,_0x365938){return db[_0xfef0('0x46')][_0xfef0('0xc3')]()[_0xfef0('0x22')](respondWithResult(_0x365938,null))[_0xfef0('0x2a')](handleError(_0x365938,null));};exports[_0xfef0('0xc4')]=function(_0x4c6ddd,_0x17ac08){var _0x40afcb=_0x4c6ddd['params']['id'];var _0xaa5902;var _0x189964;var _0x524db7;return db[_0xfef0('0x46')]['findOne']({'where':{'id':_0x40afcb}})[_0xfef0('0x22')](function(_0x41aadf){_0xaa5902=_0x41aadf;return db[_0xfef0('0xc5')][_0xfef0('0xc6')]({'where':{'id':_0x41aadf[_0xfef0('0xa5')]},'attributes':['id','vidaooApiKey',_0xfef0('0xc7'),_0xfef0('0xc8'),'vidaooNote',_0xfef0('0xc9')],'raw':!![]});})['then'](function(_0x3a180e){if(_0x3a180e&&_0x3a180e[_0xfef0('0xca')]&&_0x3a180e[_0xfef0('0xc7')]){_0x189964=_0x3a180e;var _0x52fb8b={'interaction':{'id':_0x40afcb},'agent':{'id':_0x4c6ddd[_0xfef0('0xa1')]['id'],'name':_0x4c6ddd['user']['name'],'fullname':_0x4c6ddd[_0xfef0('0xa1')]['fullname'],'email':_0x4c6ddd[_0xfef0('0xa1')][_0xfef0('0xcb')]},'contact':_0x4c6ddd[_0xfef0('0x3b')][_0xfef0('0x3c')],'account':_0x4c6ddd[_0xfef0('0x3b')][_0xfef0('0x3e')]};var _0x7f9b61={'rejectUnauthorized':![],'method':'POST','url':'https://api-vidaoo.xcally.com/api/v1/meetings','headers':{'X-APIKEY':_0x3a180e[_0xfef0('0xca')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x4c6ddd['user'][_0xfef0('0xcb')]],'buttons':null,'topic':_0x189964[_0xfef0('0xc8')],'note':_[_0xfef0('0xcc')](_0x189964[_0xfef0('0xcd')])?null:getMustacheRender(_0x189964[_0xfef0('0xcd')],_0x52fb8b),'metadata':null},'redirect':_0xfef0('0xce'),'json':!![]};try{if(!_[_0xfef0('0xcc')](_0x189964[_0xfef0('0xc9')])){var _0x4a3b68=getMustacheRender(_0x189964['vidaooMetadata'],_0x52fb8b);var _0x3c5471=JSON[_0xfef0('0x89')](_0x4a3b68);_0x7f9b61[_0xfef0('0x3b')][_0xfef0('0xcf')]=_0x3c5471;}}catch(_0xdbd7f2){throw new db['Sequelize']['ValidationError']('Error\x20in\x20conversion\x20vidaooMetadata');}return rp(_0x7f9b61);}else{throw new db[(_0xfef0('0x9a'))][(_0xfef0('0xd0'))]('Error\x20in\x20Vidaoo\x20configuration');}})[_0xfef0('0x22')](function(_0x4f171b){_0x524db7=_0x4f171b;if(_0x524db7['id']){var _0x236523={'body':_0x524db7[_0xfef0('0xd1')],'ChatWebsiteId':_0x189964['id'],'ChatInteractionId':_0xaa5902['id'],'direction':_0xfef0('0xd2'),'UserId':_0x4c6ddd[_0xfef0('0xa1')]['id']};return db[_0xfef0('0xd3')][_0xfef0('0xc2')](_0x236523,{});}else{throw new db[(_0xfef0('0x9a'))][(_0xfef0('0xd0'))](_0xfef0('0xd4'));}})[_0xfef0('0x22')](function(){return _0xaa5902[_0xfef0('0xd5')]({'vidaooSessionId':_0x524db7['id']});})['then'](respondWithResult(_0x17ac08,null))[_0xfef0('0x2a')](handleError(_0x17ac08,null));};exports['customUpdate']=function(_0xf763b1,_0x1fc6a0){if(_0xf763b1[_0xfef0('0x3b')]['id']){delete _0xf763b1[_0xfef0('0x3b')]['id'];}return db[_0xfef0('0x46')][_0xfef0('0x6a')]({'where':{'id':_0xf763b1[_0xfef0('0xbd')]['id']},'include':[{'model':db[_0xfef0('0xd6')],'as':_0xfef0('0x70')}]})['then'](handleEntityNotFound(_0x1fc6a0,null))['then'](saveUpdates(_0xf763b1[_0xfef0('0x3b')],null))['then'](respondWithResult(_0x1fc6a0,null))[_0xfef0('0x2a')](handleError(_0x1fc6a0,null));};exports[_0xfef0('0xd7')]=function(_0x45049d,_0x238112,_0x3a7c93){if(_0x45049d['body']['id']){delete _0x45049d[_0xfef0('0x3b')]['id'];}return db['ChatInteraction'][_0xfef0('0x6a')]({'where':{'id':_0x45049d[_0xfef0('0xbd')]['id']}})['then'](function(_0x34bcc3){if(!_0x34bcc3){logger['error'](_0xfef0('0xd8'),'abandon',0x194,'entity\x20not\x20found');_0x238112[_0xfef0('0x2b')](0x194);}else{if(_0x34bcc3['UserId']){throw new db[(_0xfef0('0x9a'))][(_0xfef0('0xd0'))](_0xfef0('0xd9'));}}return _0x34bcc3;})['then'](function(_0x5c7b35){if(_0x5c7b35){return _0x5c7b35[_0xfef0('0x34')]({'closed':_0x45049d[_0xfef0('0x3b')][_0xfef0('0xda')],'disposition':_0x45049d[_0xfef0('0x3b')][_0xfef0('0xdb')]})[_0xfef0('0x22')](function(_0x3107e2){return _0x3107e2;});}})[_0xfef0('0x22')](function(_0x325d36){return respondWithRpcPromise('AbandonInteraction',_0xfef0('0xd7'),_0x45049d[_0xfef0('0x3b')],client9004);})[_0xfef0('0x22')](respondWithResult(_0x238112,null))[_0xfef0('0x2a')](handleError(_0x238112,null));};exports[_0xfef0('0xdc')]=function(_0xb1df6f,_0x42604b,_0x5969d2){_0xb1df6f[_0xfef0('0x3b')][_0xfef0('0x38')]=_0xb1df6f['file'][_0xfef0('0xdd')];_0xb1df6f[_0xfef0('0x3b')][_0xfef0('0xde')]=_0xb1df6f[_0xfef0('0xdf')][_0xfef0('0xe0')];_0xb1df6f['body'][_0xfef0('0x77')]=_0xb1df6f['file'][_0xfef0('0xe1')];return db['Attachment']['create'](_0xb1df6f['body'])[_0xfef0('0x22')](respondWithResult(_0x42604b,0xc9))['catch'](handleError(_0x42604b,null));};exports['attachmentDownload']=function(_0x25fed0,_0x43453b,_0x4da5b0){return db[_0xfef0('0x46')][_0xfef0('0xc6')]({'where':{'id':_0x25fed0[_0xfef0('0xbd')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x43453b,null))['then'](function(_0x39a2a7){if(_0x39a2a7){if(_0x39a2a7[_0xfef0('0xda')]){return _0x43453b[_0xfef0('0x2c')](0x193)[_0xfef0('0x2d')]({'status':0x193,'message':_0xfef0('0xe2')});}return db[_0xfef0('0xe3')][_0xfef0('0xc6')]({'where':{'id':_0x25fed0['query'][_0xfef0('0xe4')]},'raw':!![]})[_0xfef0('0x22')](handleEntityNotFound(_0x43453b,null));}})[_0xfef0('0x22')](function(_0x4544fe){if(_0x4544fe){var _0x5c0f32=_0x4544fe['ChatOfflineMessageId']!==null;var _0x461c91=path[_0xfef0('0xe5')](config[_0xfef0('0xe6')],_0xfef0('0xe7'));if(_0x5c0f32){_0x461c91=path[_0xfef0('0xe5')](_0x461c91,_0xfef0('0xe8'));}var _0xe24c2d=path['join'](_0x461c91,_0x4544fe['basename']);return _0x43453b['download'](_0xe24c2d);}})[_0xfef0('0x2a')](handleError(_0x43453b,null));};exports['close']=function(_0x38ac84,_0x4a1406){var _0x2daf2a=null;var _0x4f703e=null;var _0x20cf67=null;var _0x235122=null;if(_0x38ac84[_0xfef0('0x3b')]['id']){delete _0x38ac84[_0xfef0('0x3b')]['id'];}if(_0x38ac84[_0xfef0('0x3b')]['mailTranscript']){_0x235122=path[_0xfef0('0xe5')](config[_0xfef0('0xe6')],_0xfef0('0xe9'),util[_0xfef0('0xea')]('transcript-%s.txt',Date[_0xfef0('0xeb')]()));_0x38ac84['body']['pathTranscript']=_0x235122;}return db[_0xfef0('0x46')]['find']({'where':{'id':_0x38ac84['params']['id']},'include':[{'model':db[_0xfef0('0xd3')],'as':'Messages','include':[{'model':db[_0xfef0('0x7e')],'as':_0xfef0('0x7e')}]}]})[_0xfef0('0x22')](handleEntityNotFound(_0x4a1406,null))[_0xfef0('0x22')](saveUpdates(_0x38ac84[_0xfef0('0x3b')],null))[_0xfef0('0x22')](function(_0x4f6c50){if(_0x4f6c50){_0x2daf2a=_0x4f6c50;return db[_0xfef0('0xc5')][_0xfef0('0x6a')]({'where':{'id':_0x2daf2a[_0xfef0('0xa5')]}});}})['then'](function(_0x3ac462){if(_0x3ac462){_0x20cf67=_0x3ac462;return db['CmContact'][_0xfef0('0x6a')]({'where':{'id':_0x2daf2a[_0xfef0('0x76')]}});}})[_0xfef0('0x22')](function(_0x5ef687){if(_0x5ef687){_0x4f703e=_0x5ef687;if(_0x235122){var _0x906e55=null;for(var _0x4cec7d=0x1;_0x4cec7d<_0x2daf2a['Messages'][_0xfef0('0x69')];++_0x4cec7d){_0x906e55=_0x2daf2a[_0xfef0('0xec')][_0x4cec7d];var _0x58a4ef=_0x906e55[_0xfef0('0x80')]?util[_0xfef0('0xea')](_0xfef0('0xed'),_0x20cf67[_0xfef0('0xee')],_0x906e55['UserId']):_0xfef0('0xef');var _0x484cc3=_0x38ac84[_0xfef0('0x3b')][_0xfef0('0xf0')]||util[_0xfef0('0xea')](_0xfef0('0xed'),_0xfef0('0xf1'),_0x906e55[_0xfef0('0x76')]);switch(_0x20cf67[_0xfef0('0xf2')]){case _0xfef0('0xf3'):_0x58a4ef=_0x906e55[_0xfef0('0x80')]?util['format'](_0xfef0('0xed'),_0x20cf67[_0xfef0('0xee')],_0x906e55['UserId']):_0xfef0('0xef');break;case'agent_alias':_0x58a4ef=_0x906e55[_0xfef0('0x80')]?_0x906e55[_0xfef0('0x7e')][_0xfef0('0xf4')]||_0x906e55[_0xfef0('0x7e')][_0xfef0('0xf5')]:'System';break;case _0xfef0('0xf6'):_0x58a4ef=_0x906e55[_0xfef0('0x80')]?_0x906e55[_0xfef0('0x7e')]['fullname']:'System';break;default:_0x58a4ef=_0x906e55[_0xfef0('0x80')]?util[_0xfef0('0xea')](_0xfef0('0xed'),_0x20cf67[_0xfef0('0xee')],_0x906e55['UserId']):_0xfef0('0xef');}var _0x4b4986=util[_0xfef0('0xea')](_0xfef0('0xf7'),moment(_0x906e55[_0xfef0('0x87')])[_0xfef0('0xea')](_0xfef0('0xf8')),_0x906e55['direction']==='in'?_0x484cc3:_0x58a4ef,_0x906e55[_0xfef0('0x3b')]);if(!_0x906e55[_0xfef0('0xf9')]){fs[_0xfef0('0xfa')](_0x235122,_0x4b4986);}}return db[_0xfef0('0xfb')]['findOne']({'where':{'service':!![]},'include':[{'model':db[_0xfef0('0xfc')],'as':'Smtp','raw':!![]}]});}}})[_0xfef0('0x22')](function(_0x402c7d){if(_0x402c7d&&_0x402c7d[_0xfef0('0xfd')]&&_0x38ac84[_0xfef0('0x3b')]){var _0x5315eb={'tls':{'rejectUnauthorized':![]}};if(_0x402c7d['Smtp'][_0xfef0('0xfe')]){_0x5315eb[_0xfef0('0xfe')]=_0x402c7d[_0xfef0('0xfd')][_0xfef0('0xfe')];}else{_0x5315eb[_0xfef0('0xff')]=_0x402c7d[_0xfef0('0xfd')][_0xfef0('0xff')];_0x5315eb['port']=_0x402c7d['Smtp'][_0xfef0('0x100')];_0x5315eb[_0xfef0('0x101')]=_0x402c7d['Smtp'][_0xfef0('0x101')];}if(_0x402c7d['Smtp']['authentication']){_0x5315eb[_0xfef0('0x102')]={'user':_0x402c7d[_0xfef0('0xfd')][_0xfef0('0xa1')],'pass':_0x402c7d[_0xfef0('0xfd')][_0xfef0('0x103')]};}return respondWithRpcPromise('SendMail',_0xfef0('0x104'),{'account':_0x5315eb,'message':{'from':util[_0xfef0('0xea')](_0xfef0('0x105'),_0x402c7d[_0xfef0('0x38')],_0x402c7d['email']||_0x402c7d['Smtp']['user']),'to':_0x38ac84[_0xfef0('0x3b')]['mailTranscript'],'subject':_0xfef0('0x106'),'text':util['format']('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0x38ac84['body'][_0xfef0('0x107')]),'attachments':[{'path':_0x235122}]}})[_0xfef0('0x22')](function(){return _0x2daf2a;})['catch'](function(_0x411870){console['error'](_0x411870);});}else{return _0x2daf2a;}})[_0xfef0('0x22')](respondWithStatusCode(_0x4a1406,0xc8))[_0xfef0('0x2a')](handleError(_0x4a1406,null));};exports[_0xfef0('0x108')]=function(_0x9b2969,_0x1f842f,_0x36c978){return db[_0xfef0('0xd3')][_0xfef0('0x6a')]({'where':{'id':_0x9b2969[_0xfef0('0xbd')]['id']}})[_0xfef0('0x22')](handleEntityNotFound(_0x1f842f,null))['then'](function(_0x1d342a){if(_0x1d342a){return _0x1d342a[_0xfef0('0x108')](_0x9b2969['body'][_0xfef0('0x109')],_['omit'](_0x9b2969[_0xfef0('0x3b')],[_0xfef0('0x109'),'id'])||{});}})[_0xfef0('0x22')](respondWithResult(_0x1f842f,null))[_0xfef0('0x2a')](handleError(_0x1f842f,null));};exports[_0xfef0('0x10a')]=function(_0x422af1,_0xcb9eb8,_0x38e829){var _0x287403={'raw':![],'where':{}};var _0x2ebd8d={};var _0x115454={'count':0x0,'rows':[]};return db[_0xfef0('0x46')][_0xfef0('0xc6')]({'where':{'id':_0x422af1[_0xfef0('0xbd')]['id']}})['then'](handleEntityNotFound(_0xcb9eb8,null))[_0xfef0('0x22')](function(_0x5593de){if(_0x5593de){_0x2ebd8d['model']=_[_0xfef0('0xbe')](db['ChatMessage'][_0xfef0('0x47')]);_0x2ebd8d[_0xfef0('0x4b')]=_[_0xfef0('0xbe')](_0x422af1['query']);_0x2ebd8d[_0xfef0('0x4c')]=_[_0xfef0('0x4d')](_0x2ebd8d[_0xfef0('0x4a')],_0x2ebd8d[_0xfef0('0x4b')]);_0x287403[_0xfef0('0x4e')]=_[_0xfef0('0x4d')](_0x2ebd8d[_0xfef0('0x4a')],qs[_0xfef0('0x4f')](_0x422af1[_0xfef0('0x4b')][_0xfef0('0x4f')]));_0x287403[_0xfef0('0x4e')]=_0x287403[_0xfef0('0x4e')][_0xfef0('0x69')]?_0x287403[_0xfef0('0x4e')]:_0x2ebd8d['model'];if(!_0x422af1[_0xfef0('0x4b')]['hasOwnProperty'](_0xfef0('0x50'))){_0x287403['limit']=qs[_0xfef0('0x30')](_0x422af1[_0xfef0('0x4b')][_0xfef0('0x30')]);_0x287403[_0xfef0('0x2e')]=qs[_0xfef0('0x2e')](_0x422af1['query']['offset']);}_0x287403[_0xfef0('0x9d')]=qs[_0xfef0('0x51')](_0x422af1['query'][_0xfef0('0x51')]);_0x287403[_0xfef0('0x52')]=qs[_0xfef0('0x4c')](_[_0xfef0('0x53')](_0x422af1[_0xfef0('0x4b')],_0x2ebd8d[_0xfef0('0x4c')]));_0x287403[_0xfef0('0x52')][_0xfef0('0xba')]=_0x5593de['id'];if(_0x422af1['query'][_0xfef0('0x92')]){_0x287403[_0xfef0('0x52')]=_['merge'](_0x287403[_0xfef0('0x52')],{'$or':_['map'](_0x287403[_0xfef0('0x4e')],function(_0x41790c){var _0x189965={};_0x189965[_0x41790c]={'$like':'%'+_0x422af1[_0xfef0('0x4b')][_0xfef0('0x92')]+'%'};return _0x189965;})});}if(_0x422af1[_0xfef0('0x4b')][_0xfef0('0x88')]){var _0x5b1b34=_0x422af1[_0xfef0('0x4b')][_0xfef0('0x88')]['split'](',');var _0xfa83e1={};_0xfa83e1[_0x5b1b34[0x0]]={'$gte':moment(_0x5b1b34[0x1])[_0xfef0('0xea')](_0xfef0('0x10b'))};_0x287403['where']=_[_0xfef0('0xa9')](_0x287403[_0xfef0('0x52')],_0xfa83e1);}_0x287403=_[_0xfef0('0xa9')]({},_0x287403,_0x422af1[_0xfef0('0xc1')]);return db[_0xfef0('0xd3')][_0xfef0('0xa8')]({'where':_0x287403[_0xfef0('0x52')]})[_0xfef0('0x22')](function(_0x464d00){_0x115454[_0xfef0('0xa8')]=_0x464d00;if(_0x422af1['query'][_0xfef0('0xbf')]){_0x287403[_0xfef0('0xc0')]=[{'all':!![]}];}return db[_0xfef0('0xd3')][_0xfef0('0x10c')](_0x287403);})[_0xfef0('0x22')](function(_0x1b23f0){_0x115454['rows']=_0x1b23f0;return _0x115454;});}})['then'](respondWithFilteredResult(_0xcb9eb8,_0x287403))[_0xfef0('0x2a')](handleError(_0xcb9eb8,null));};exports['getMyMessages']=function(_0x30f7d5,_0x1a53fa,_0x14a37e){var _0x303128={'where':{}},_0x2b3263={},_0x43e758={'count':0x0,'rows':[]};return db['ChatInteraction'][_0xfef0('0xc6')]({'where':{'id':_0x30f7d5[_0xfef0('0xbd')]['id']}})[_0xfef0('0x22')](handleEntityNotFound(_0x1a53fa,null))[_0xfef0('0x22')](function(_0x273e8b){if(_0x273e8b){_0x2b3263[_0xfef0('0x4a')]=_[_0xfef0('0xbe')](db['ChatMessage'][_0xfef0('0x47')]);_0x2b3263[_0xfef0('0x4b')]=_[_0xfef0('0xbe')](_0x30f7d5[_0xfef0('0x4b')]);_0x2b3263[_0xfef0('0x4c')]=_[_0xfef0('0x4d')](_0x2b3263['model'],_0x2b3263['query']);_0x303128[_0xfef0('0x4e')]=_[_0xfef0('0x4d')](_0x2b3263[_0xfef0('0x4a')],qs[_0xfef0('0x4f')](_0x30f7d5[_0xfef0('0x4b')][_0xfef0('0x4f')]));_0x303128[_0xfef0('0x4e')]=_0x303128[_0xfef0('0x4e')][_0xfef0('0x69')]?_0x303128[_0xfef0('0x4e')]:_0x2b3263[_0xfef0('0x4a')];if(!_0x30f7d5['query'][_0xfef0('0x10d')](_0xfef0('0x50'))){_0x303128[_0xfef0('0x30')]=qs[_0xfef0('0x30')](_0x30f7d5[_0xfef0('0x4b')][_0xfef0('0x30')]);_0x303128['offset']=qs[_0xfef0('0x2e')](_0x30f7d5[_0xfef0('0x4b')][_0xfef0('0x2e')]);}_0x303128[_0xfef0('0x9d')]=qs['sort'](_0x30f7d5[_0xfef0('0x4b')][_0xfef0('0x51')]);_0x303128['where']=qs[_0xfef0('0x4c')](_[_0xfef0('0x53')](_0x30f7d5[_0xfef0('0x4b')],_0x2b3263[_0xfef0('0x4c')]));_0x303128[_0xfef0('0x52')][_0xfef0('0xba')]=_0x273e8b['id'];if(_0x30f7d5[_0xfef0('0x4b')][_0xfef0('0x92')]){_0x303128['where']=_[_0xfef0('0xa9')](_0x303128[_0xfef0('0x52')],{'$or':_['map'](_0x303128['attributes'],function(_0x3081e){var _0xd34b68={};_0xd34b68[_0x3081e]={'$like':'%'+_0x30f7d5[_0xfef0('0x4b')]['filter']+'%'};return _0xd34b68;})});}_0x303128[_0xfef0('0x52')][_0xfef0('0xf9')]=![];if(_0x30f7d5['query']['id']){_0x303128[_0xfef0('0x52')]['id']={'$gt':_0x30f7d5[_0xfef0('0x4b')]['id']};}_0x303128=_[_0xfef0('0xa9')]({},_0x303128,_0x30f7d5[_0xfef0('0xc1')]);return db[_0xfef0('0xd3')]['count']({'where':_0x303128[_0xfef0('0x52')]})['then'](function(_0x63bcae){_0x43e758['count']=_0x63bcae;_0x303128[_0xfef0('0xc0')]=[];if(_0x30f7d5[_0xfef0('0x4b')][_0xfef0('0x10e')]){_0x303128['include'][_0xfef0('0x44')]({'model':db[_0xfef0('0x7e')],'as':'User','attributes':['id','fullname',_0xfef0('0xf4')]});}if(_0x30f7d5[_0xfef0('0x4b')][_0xfef0('0xbf')]){_0x303128['include']=[{'all':!![]}];}return db[_0xfef0('0xd3')][_0xfef0('0x10c')](_0x303128);})['then'](function(_0x527d0d){_0x43e758[_0xfef0('0xbc')]=_0x527d0d;return _0x43e758;});}})[_0xfef0('0x22')](respondWithFilteredResult(_0x1a53fa,_0x303128))['catch'](handleError(_0x1a53fa,null));};exports[_0xfef0('0x10f')]=function(_0x3f68ed,_0x45a5e8,_0x33cecb){return db[_0xfef0('0x46')][_0xfef0('0x6a')]({'where':{'id':_0x3f68ed[_0xfef0('0xbd')]['id']}})[_0xfef0('0x22')](handleEntityNotFound(_0x45a5e8,null))[_0xfef0('0x22')](function(_0x53ce05){if(_0x53ce05){return _0x53ce05[_0xfef0('0x110')](_0x3f68ed[_0xfef0('0x3b')][_0xfef0('0x109')],_[_0xfef0('0x111')](_0x3f68ed[_0xfef0('0x3b')],[_0xfef0('0x109'),'id'])||{})['spread'](function(){return db[_0xfef0('0x7a')][_0xfef0('0x10c')]({'attributes':['id','name','color'],'where':{'id':_0x3f68ed[_0xfef0('0x3b')][_0xfef0('0x109')]}});})[_0xfef0('0x22')](function(_0x4697ee){socket[_0xfef0('0x112')]('chatInteractionTags:save',{'id':Number(_0x3f68ed[_0xfef0('0xbd')]['id']),'tags':_0x4697ee||[]});return{'id':Number(_0x3f68ed[_0xfef0('0xbd')]['id']),'tags':_0x4697ee||[]};});}})[_0xfef0('0x22')](respondWithResult(_0x45a5e8,null))['catch'](handleError(_0x45a5e8,null));};exports[_0xfef0('0x113')]=function(_0x2a229b,_0xcb6d50,_0x53ed7e){return db['ChatInteraction'][_0xfef0('0x6a')]({'where':{'id':_0x2a229b[_0xfef0('0xbd')]['id']}})[_0xfef0('0x22')](handleEntityNotFound(_0xcb6d50,null))['then'](function(_0x241763){if(_0x241763){return _0x241763[_0xfef0('0x113')](_0x2a229b['query'][_0xfef0('0x109')]);}})[_0xfef0('0x22')](respondWithStatusCode(_0xcb6d50,null))['catch'](handleError(_0xcb6d50,null));};exports[_0xfef0('0x114')]=function(_0x57e2d8,_0x3fdeae){var _0x30b0a9=moment()[_0xfef0('0x115')]()['toString']();var _0x416d36=path[_0xfef0('0xe5')](config['root'],_0xfef0('0x116'),_0xfef0('0x117'),_0xfef0('0x118'));var _0x50b3d7=path[_0xfef0('0xe5')](config[_0xfef0('0xe6')],_0xfef0('0x116'),_0xfef0('0x117'),_0xfef0('0x119'));var _0x2a9a1e=path[_0xfef0('0xe5')](_0x416d36,_0x30b0a9);var _0x584c9b=util[_0xfef0('0xea')](_0xfef0('0x11a'),_0x57e2d8[_0xfef0('0xbd')]['id'],_0x30b0a9);var _0x4f4c4e=path[_0xfef0('0xe5')](_0x416d36,_0x584c9b);var _0x1c6ab9=[];_0x1c6ab9[_0xfef0('0x44')]({'model':db[_0xfef0('0x7e')],'as':_0xfef0('0x7e'),'attributes':['id',_0xfef0('0xf5')],'raw':!![]});_0x1c6ab9['push']({'model':db[_0xfef0('0xd6')],'as':'Contact','attributes':['id',_0xfef0('0x11b'),_0xfef0('0x11c')],'raw':!![]});if(_0x57e2d8[_0xfef0('0x4b')][_0xfef0('0x119')]){_0x1c6ab9[_0xfef0('0x44')]({'model':db[_0xfef0('0xe3')],'as':'Attachment','raw':!![]});}var _0x937d8e=[{'model':db[_0xfef0('0xd3')],'as':_0xfef0('0xec'),'attributes':['id',_0xfef0('0x3b'),'createdAt',_0xfef0('0x11d'),_0xfef0('0xf9'),'read'],'include':_0x1c6ab9}];_0x937d8e['push']({'model':db[_0xfef0('0xc5')],'as':_0xfef0('0x11e'),'attributes':['id',_0xfef0('0x38')]});_0x937d8e[_0xfef0('0x44')]({'model':db['User'],'as':'Owner','attributes':['id',_0xfef0('0xf5')]});return db[_0xfef0('0x46')][_0xfef0('0x6a')]({'where':{'id':_0x57e2d8[_0xfef0('0xbd')]['id']},'include':_0x937d8e})[_0xfef0('0x22')](handleEntityNotFound(_0x3fdeae,null))['then'](function(_0x2978cc){if(_0x2978cc){var _0x81bcee=_0x2978cc['get']({'plain':!![]});fs[_0xfef0('0x11f')](_0x2a9a1e);var _0xc8d0ca={'channel':_0xfef0('0x120'),'account':_0x81bcee[_0xfef0('0x11e')][_0xfef0('0x38')],'agent':_0x81bcee[_0xfef0('0x121')]?_0x81bcee['Owner']['fullname']:_0xfef0('0x122'),'createdAt':moment(_0x81bcee[_0xfef0('0x87')])[_0xfef0('0xea')](_0xfef0('0x10b'))['toString'](),'closedAt':_0x81bcee['closed']?moment(_0x81bcee['closedAt'])[_0xfef0('0xea')](_0xfef0('0x10b'))[_0xfef0('0xa7')]():'','disposition':_0x81bcee[_0xfef0('0xdb')],'chatInfo':{'browser':_0x81bcee[_0xfef0('0x123')],'os':_0x81bcee[_0xfef0('0x124')],'referer':_0x81bcee['referer'],'customerIp':_0x81bcee['customerIp'],'customerPort':_0x81bcee['customerPort']?_0x81bcee['customerPort']:'N.A.'},'messages':_(_0x81bcee[_0xfef0('0xec')])['tail']()[_0xfef0('0x92')]({'secret':![]})[_0xfef0('0x7b')](function(_0x46ab62){if(_0x46ab62[_0xfef0('0xe3')]){var _0x3507a8=path['join'](_0x50b3d7,_0x46ab62[_0xfef0('0xe3')][_0xfef0('0xde')]);if(fs[_0xfef0('0x125')](_0x3507a8)){fs['createReadStream'](_0x3507a8)[_0xfef0('0x126')](fs[_0xfef0('0x127')](path[_0xfef0('0xe5')](_0x2a9a1e,_0x46ab62[_0xfef0('0xe3')][_0xfef0('0xde')])));}}return{'date':moment(_0x46ab62[_0xfef0('0x87')])[_0xfef0('0xea')](_0xfef0('0x10b'))[_0xfef0('0xa7')](),'sender':_0x46ab62[_0xfef0('0x11d')]===_0xfef0('0xd2')?_0x46ab62[_0xfef0('0x7e')]?_0x46ab62[_0xfef0('0x7e')][_0xfef0('0xf5')]:_0xfef0('0xef'):_0x46ab62[_0xfef0('0x70')][_0xfef0('0x11b')]+(_0x46ab62[_0xfef0('0x70')][_0xfef0('0x11c')]?'\x20'+_0x46ab62[_0xfef0('0x70')]['lastName']:''),'body':_0x46ab62['Attachment']?_0x46ab62['Attachment']['basename']:_0x46ab62[_0xfef0('0x3b')],'direction':_0x46ab62[_0xfef0('0x11d')]===_0xfef0('0xd2')?'A':'C','secret':_0x46ab62['secret'],'read':_0x46ab62[_0xfef0('0x8e')],'attachment':_0x46ab62[_0xfef0('0xe3')]};})[_0xfef0('0x6c')]()};return ejs[_0xfef0('0x128')](path['join'](config['root'],'server',_0xfef0('0x129'),_0xfef0('0x12a')),{'interaction':_0xc8d0ca})[_0xfef0('0x22')](function(_0x2b1f64){var _0x55ecff=path[_0xfef0('0xe5')](_0x2a9a1e,_0xfef0('0x12b')+_0x81bcee['id']+'-'+_0x30b0a9+'.pdf');var _0x409147={'path':_0x55ecff,'channel':_0xfef0('0x120'),'interactionId':_0x81bcee['id']};return pdf[_0xfef0('0x12c')](_0x2b1f64,_0x409147);})[_0xfef0('0x22')](function(){return new BPromise(function(_0x27856d,_0x44081d){zipdir(_0x2a9a1e,{'saveTo':_0x4f4c4e},function(_0x177c9b,_0x322672){if(_0x177c9b)return _0x44081d(_0x177c9b);return _0x27856d(_0x322672);});})[_0xfef0('0x22')](function(){return new BPromise(function(_0x102b4e,_0x2a206b){rimraf(_0x2a9a1e,function(_0x279f5b){if(_0x279f5b)_0x2a206b(_0x279f5b);return _0x102b4e();});});})[_0xfef0('0x22')](function(){return _0x3fdeae[_0xfef0('0x114')](_0x4f4c4e,_0x584c9b,function(_0x44603e){if(_0x44603e){console['log'](_0xfef0('0x12d'),_0x44603e);}else{fs['unlinkSync'](_0x4f4c4e);}});});});}else{return _0x3fdeae[_0xfef0('0x2b')](0xc8);}})['catch'](handleError(_0x3fdeae,null));};
\ No newline at end of file
index 94ef663..3898141 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6155=['ChatInteraction','ChatMessage','setMaxListeners','save','remove','then','setDataValue','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x4160e4,_0x14484b){var _0x5cc04e=function(_0x18f387){while(--_0x18f387){_0x4160e4['push'](_0x4160e4['shift']());}};_0x5cc04e(++_0x14484b);}(_0x6155,0xc4));var _0x5615=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x6155[_0x46e363];return _0x3fb059;};'use strict';var EventEmitter=require(_0x5615('0x0'));var ChatInteraction=require(_0x5615('0x1'))['db'][_0x5615('0x2')];var ChatMessage=require(_0x5615('0x1'))['db'][_0x5615('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x5615('0x4')](0x0);var events={'afterCreate':_0x5615('0x5'),'afterUpdate':'update','afterDestroy':_0x5615('0x6')};function emitEvent(_0x176f3b){return function(_0x1cba76,_0x4c8c0c,_0x5d491c){_0x1cba76['getUsers']({'attributes':['id'],'raw':!![]})[_0x5615('0x7')](function(_0x1952e1){_0x1cba76[_0x5615('0x8')]('Users',_0x1952e1[_0x5615('0x9')](function(_0x4398d8){return{'id':_0x4398d8['id']};}));return ChatMessage[_0x5615('0xa')]({'where':{'ChatInteractionId':_0x1cba76['id'],'direction':'in','read':![]},'raw':!![]});})[_0x5615('0x7')](function(_0xda388){_0x1cba76['setDataValue'](_0x5615('0xb'),_0xda388[_0x5615('0xc')]);ChatInteractionEvents['emit'](_0x176f3b+':'+_0x1cba76['id'],_0x1cba76);ChatInteractionEvents[_0x5615('0xd')](_0x176f3b,_0x1cba76);_0x5d491c(null);})[_0x5615('0xe')](_0x5d491c(null));};}for(var e in events){if(events[_0x5615('0xf')](e)){var event=events[e];ChatInteraction[_0x5615('0x10')](e,emitEvent(event));}}module[_0x5615('0x11')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x62f7=['events','../../mysqldb','ChatInteraction','save','remove','getUsers','then','Users','findAll','setDataValue','unreadMessages','length','emit','hasOwnProperty','hook'];(function(_0x5db25b,_0x4455a9){var _0x408708=function(_0x215bc2){while(--_0x215bc2){_0x5db25b['push'](_0x5db25b['shift']());}};_0x408708(++_0x4455a9);}(_0x62f7,0x1c2));var _0x762f=function(_0x2b5444,_0x20e634){_0x2b5444=_0x2b5444-0x0;var _0x258417=_0x62f7[_0x2b5444];return _0x258417;};'use strict';var EventEmitter=require(_0x762f('0x0'));var ChatInteraction=require(_0x762f('0x1'))['db'][_0x762f('0x2')];var ChatMessage=require(_0x762f('0x1'))['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x762f('0x3'),'afterUpdate':'update','afterDestroy':_0x762f('0x4')};function emitEvent(_0x225218){return function(_0xf725cf,_0x695459,_0x2e2d09){_0xf725cf[_0x762f('0x5')]({'attributes':['id'],'raw':!![]})[_0x762f('0x6')](function(_0x14eeb9){_0xf725cf['setDataValue'](_0x762f('0x7'),_0x14eeb9['map'](function(_0x2373c5){return{'id':_0x2373c5['id']};}));return ChatMessage[_0x762f('0x8')]({'where':{'ChatInteractionId':_0xf725cf['id'],'direction':'in','read':![]},'raw':!![]});})[_0x762f('0x6')](function(_0x28e544){_0xf725cf[_0x762f('0x9')](_0x762f('0xa'),_0x28e544[_0x762f('0xb')]);ChatInteractionEvents['emit'](_0x225218+':'+_0xf725cf['id'],_0xf725cf);ChatInteractionEvents[_0x762f('0xc')](_0x225218,_0xf725cf);_0x2e2d09(null);})['catch'](_0x2e2d09(null));};}for(var e in events){if(events[_0x762f('0xd')](e)){var event=events[e];ChatInteraction[_0x762f('0xe')](e,emitEvent(event));}}module['exports']=ChatInteractionEvents;
\ No newline at end of file
index af196dc..2f66921 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb81c=['utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','request-promise','../../config/environment','exports','chat_interactions','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4'];(function(_0x264492,_0x56838b){var _0x2ecbe4=function(_0x3deb03){while(--_0x3deb03){_0x264492['push'](_0x264492['shift']());}};_0x2ecbe4(++_0x56838b);}(_0xb81c,0xd3));var _0xcb81=function(_0x34ebb8,_0x441691){_0x34ebb8=_0x34ebb8-0x0;var _0x3cd254=_0xb81c[_0x34ebb8];return _0x3cd254;};'use strict';var _=require(_0xcb81('0x0'));var util=require(_0xcb81('0x1'));var logger=require(_0xcb81('0x2'))('api');var moment=require(_0xcb81('0x3'));var BPromise=require('bluebird');var rp=require(_0xcb81('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xcb81('0x5'));var attributes=require('./chatInteraction.attributes');module[_0xcb81('0x6')]=function(_0x9fb7c7,_0xb6ebd5){return _0x9fb7c7['define']('ChatInteraction',attributes,{'tableName':_0xcb81('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1cc91b,_0xfca7b6,_0x2f4831){if(_0x1cc91b['changed'](_0xcb81('0x8'))){_0x1cc91b[_0xcb81('0x9')]=moment()[_0xcb81('0xa')](_0xcb81('0xb'));}_0x2f4831(null,_0x1cc91b);}},'charset':_0xcb81('0xc'),'collate':_0xcb81('0xd')});};
\ No newline at end of file
+var _0x7a93=['format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./chatInteraction.attributes','define','changed','closed'];(function(_0x1a527d,_0xb9feae){var _0x3150b3=function(_0x25b7dc){while(--_0x25b7dc){_0x1a527d['push'](_0x1a527d['shift']());}};_0x3150b3(++_0xb9feae);}(_0x7a93,0xa8));var _0x37a9=function(_0x5a3ee2,_0x2018f4){_0x5a3ee2=_0x5a3ee2-0x0;var _0x52e22f=_0x7a93[_0x5a3ee2];return _0x52e22f;};'use strict';var _=require(_0x37a9('0x0'));var util=require(_0x37a9('0x1'));var logger=require(_0x37a9('0x2'))(_0x37a9('0x3'));var moment=require(_0x37a9('0x4'));var BPromise=require(_0x37a9('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x37a9('0x6'));var rimraf=require(_0x37a9('0x7'));var config=require('../../config/environment');var attributes=require(_0x37a9('0x8'));module['exports']=function(_0x253578,_0x6acd4a){return _0x253578[_0x37a9('0x9')]('ChatInteraction',attributes,{'tableName':'chat_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xacb914,_0x2f8375,_0x1d979f){if(_0xacb914[_0x37a9('0xa')](_0x37a9('0xb'))){_0xacb914['closedAt']=moment()[_0x37a9('0xc')](_0x37a9('0xd'));}_0x1d979f(null,_0xacb914);}},'charset':_0x37a9('0xe'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 7cea969..d4ef215 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18f4=['ChatInteraction','where','addTags','body','ids','omit','spread','AddTags','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','request','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','UpdateChatInteraction','update','options','raw','then','stringify','AddTagsToChatInteraction'];(function(_0x340380,_0x4bd2a8){var _0x49ce1c=function(_0x4cb9e2){while(--_0x4cb9e2){_0x340380['push'](_0x340380['shift']());}};_0x49ce1c(++_0x4bd2a8);}(_0x18f4,0x150));var _0x418f=function(_0xf6031,_0x895009){_0xf6031=_0xf6031-0x0;var _0x535425=_0x18f4[_0xf6031];return _0x535425;};'use strict';var _=require(_0x418f('0x0'));var util=require(_0x418f('0x1'));var moment=require('moment');var BPromise=require(_0x418f('0x2'));var rs=require(_0x418f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x418f('0x4'))['db'];var utils=require(_0x418f('0x5'));var logger=require('../../config/logger')(_0x418f('0x6'));var config=require(_0x418f('0x7'));var jayson=require(_0x418f('0x8'));var client=jayson[_0x418f('0x9')]['http']({'port':0x232a});config['redis']=_[_0x418f('0xa')](config[_0x418f('0xb')],{'host':_0x418f('0xc'),'port':0x18eb});var socket=require(_0x418f('0xd'))(new Redis(config[_0x418f('0xb')]));require(_0x418f('0xe'))[_0x418f('0xf')](socket);function respondWithRpcPromise(_0x3b77c3,_0x3a9eab,_0x1eb321){return new BPromise(function(_0x416765,_0x1d43f7){return client[_0x418f('0x10')](_0x3b77c3,_0x1eb321)['then'](function(_0x1c1785){logger[_0x418f('0x11')](_0x418f('0x12'),_0x3a9eab,_0x418f('0x13'));logger[_0x418f('0x14')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x3a9eab,_0x418f('0x13'),JSON['stringify'](_0x1c1785));if(_0x1c1785[_0x418f('0x15')]){if(_0x1c1785[_0x418f('0x15')][_0x418f('0x16')]===0x1f4){logger[_0x418f('0x15')](_0x418f('0x12'),_0x3a9eab,_0x1c1785[_0x418f('0x15')][_0x418f('0x17')]);return _0x1d43f7(_0x1c1785[_0x418f('0x15')][_0x418f('0x17')]);}logger[_0x418f('0x15')](_0x418f('0x12'),_0x3a9eab,_0x1c1785['error']['message']);return _0x416765(_0x1c1785[_0x418f('0x15')][_0x418f('0x17')]);}else{logger[_0x418f('0x11')](_0x418f('0x12'),_0x3a9eab,'request\x20sent');_0x416765(_0x1c1785[_0x418f('0x18')][_0x418f('0x17')]);}})[_0x418f('0x19')](function(_0x365302){logger[_0x418f('0x15')](_0x418f('0x12'),_0x3a9eab,_0x365302);_0x1d43f7(_0x365302);});});}exports[_0x418f('0x1a')]=function(_0x5be689){var _0x390cbf=this;return new Promise(function(_0x51720c,_0x47923b){return db['ChatInteraction'][_0x418f('0x1b')](_0x5be689['body'],{'raw':_0x5be689['options']?_0x5be689[_0x418f('0x1c')][_0x418f('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5be689['options']?_0x5be689[_0x418f('0x1c')]['where']||null:null,'attributes':_0x5be689[_0x418f('0x1c')]?_0x5be689['options']['attributes']||null:null,'limit':_0x5be689['options']?_0x5be689[_0x418f('0x1c')]['limit']||null:null})[_0x418f('0x1e')](function(_0x4894ac){logger['info']('UpdateChatInteraction',_0x5be689);logger[_0x418f('0x14')](_0x418f('0x1a'),_0x5be689,JSON[_0x418f('0x1f')](_0x4894ac));_0x51720c(_0x4894ac);})[_0x418f('0x19')](function(_0x9b68dd){logger[_0x418f('0x15')](_0x418f('0x1a'),_0x9b68dd[_0x418f('0x17')],_0x5be689);_0x47923b(_0x390cbf[_0x418f('0x15')](0x1f4,_0x9b68dd['message']));});});};exports[_0x418f('0x20')]=function(_0x2ce10c){return new Promise(function(_0x2002fb,_0x1aade4){return db[_0x418f('0x21')]['find']({'where':_0x2ce10c[_0x418f('0x1c')]?_0x2ce10c[_0x418f('0x1c')][_0x418f('0x22')]||null:null})[_0x418f('0x1e')](function(_0x171e1c){if(_0x171e1c){return _0x171e1c[_0x418f('0x23')](_0x2ce10c[_0x418f('0x24')][_0x418f('0x25')],_[_0x418f('0x26')](_0x2ce10c[_0x418f('0x24')],[_0x418f('0x25'),'id'])||{});}})[_0x418f('0x27')](function(_0x5974cf){logger[_0x418f('0x11')](_0x418f('0x28'),_0x2ce10c);logger[_0x418f('0x14')](_0x418f('0x28'),_0x2ce10c,JSON[_0x418f('0x1f')](_0x5974cf));_0x2002fb(_0x5974cf);})[_0x418f('0x19')](function(_0x108cce){logger['error'](_0x418f('0x28'),_0x108cce['message'],_0x2ce10c);_0x1aade4(_this[_0x418f('0x15')](0x1f4,_0x108cce[_0x418f('0x17')]));});});};
\ No newline at end of file
+var _0x4888=['limit','UpdateChatInteraction','AddTagsToChatInteraction','find','addTags','ids','omit','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','request','then','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','ChatInteraction','body','options','raw','where'];(function(_0xe8712b,_0x42aa8c){var _0xf5bcdc=function(_0x1f45fe){while(--_0x1f45fe){_0xe8712b['push'](_0xe8712b['shift']());}};_0xf5bcdc(++_0x42aa8c);}(_0x4888,0xf8));var _0x8488=function(_0x3c81b5,_0x3f5ed7){_0x3c81b5=_0x3c81b5-0x0;var _0x5888c4=_0x4888[_0x3c81b5];return _0x5888c4;};'use strict';var _=require(_0x8488('0x0'));var util=require('util');var moment=require(_0x8488('0x1'));var BPromise=require(_0x8488('0x2'));var rs=require(_0x8488('0x3'));var fs=require('fs');var Redis=require(_0x8488('0x4'));var db=require(_0x8488('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8488('0x6'))('rpc');var config=require(_0x8488('0x7'));var jayson=require(_0x8488('0x8'));var client=jayson[_0x8488('0x9')][_0x8488('0xa')]({'port':0x232a});config[_0x8488('0xb')]=_['defaults'](config[_0x8488('0xb')],{'host':_0x8488('0xc'),'port':0x18eb});var socket=require(_0x8488('0xd'))(new Redis(config[_0x8488('0xb')]));require(_0x8488('0xe'))[_0x8488('0xf')](socket);function respondWithRpcPromise(_0xc0b09b,_0x1e6339,_0x27a62a){return new BPromise(function(_0x255742,_0x3b0522){return client[_0x8488('0x10')](_0xc0b09b,_0x27a62a)[_0x8488('0x11')](function(_0x2857c3){logger['info'](_0x8488('0x12'),_0x1e6339,_0x8488('0x13'));logger[_0x8488('0x14')](_0x8488('0x15'),_0x1e6339,_0x8488('0x13'),JSON[_0x8488('0x16')](_0x2857c3));if(_0x2857c3[_0x8488('0x17')]){if(_0x2857c3[_0x8488('0x17')]['code']===0x1f4){logger[_0x8488('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x1e6339,_0x2857c3[_0x8488('0x17')][_0x8488('0x18')]);return _0x3b0522(_0x2857c3['error']['message']);}logger[_0x8488('0x17')](_0x8488('0x12'),_0x1e6339,_0x2857c3[_0x8488('0x17')][_0x8488('0x18')]);return _0x255742(_0x2857c3[_0x8488('0x17')][_0x8488('0x18')]);}else{logger[_0x8488('0x19')](_0x8488('0x12'),_0x1e6339,_0x8488('0x13'));_0x255742(_0x2857c3['result'][_0x8488('0x18')]);}})[_0x8488('0x1a')](function(_0x296507){logger['error'](_0x8488('0x12'),_0x1e6339,_0x296507);_0x3b0522(_0x296507);});});}exports['UpdateChatInteraction']=function(_0x22c69b){var _0x1cb2c9=this;return new Promise(function(_0x450d16,_0x542586){return db[_0x8488('0x1b')]['update'](_0x22c69b[_0x8488('0x1c')],{'raw':_0x22c69b[_0x8488('0x1d')]?_0x22c69b[_0x8488('0x1d')][_0x8488('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x22c69b[_0x8488('0x1d')]?_0x22c69b[_0x8488('0x1d')][_0x8488('0x1f')]||null:null,'attributes':_0x22c69b[_0x8488('0x1d')]?_0x22c69b[_0x8488('0x1d')]['attributes']||null:null,'limit':_0x22c69b['options']?_0x22c69b['options'][_0x8488('0x20')]||null:null})[_0x8488('0x11')](function(_0x5d388f){logger[_0x8488('0x19')]('UpdateChatInteraction',_0x22c69b);logger[_0x8488('0x14')]('UpdateChatInteraction',_0x22c69b,JSON[_0x8488('0x16')](_0x5d388f));_0x450d16(_0x5d388f);})['catch'](function(_0x422094){logger[_0x8488('0x17')](_0x8488('0x21'),_0x422094[_0x8488('0x18')],_0x22c69b);_0x542586(_0x1cb2c9[_0x8488('0x17')](0x1f4,_0x422094['message']));});});};exports[_0x8488('0x22')]=function(_0x576862){return new Promise(function(_0x1236c6,_0x360ff2){return db[_0x8488('0x1b')][_0x8488('0x23')]({'where':_0x576862['options']?_0x576862['options']['where']||null:null})[_0x8488('0x11')](function(_0x1a8581){if(_0x1a8581){return _0x1a8581[_0x8488('0x24')](_0x576862[_0x8488('0x1c')][_0x8488('0x25')],_[_0x8488('0x26')](_0x576862[_0x8488('0x1c')],[_0x8488('0x25'),'id'])||{});}})['spread'](function(_0x5ca3c1){logger[_0x8488('0x19')](_0x8488('0x27'),_0x576862);logger[_0x8488('0x14')](_0x8488('0x27'),_0x576862,JSON['stringify'](_0x5ca3c1));_0x1236c6(_0x5ca3c1);})['catch'](function(_0x4f7a4e){logger[_0x8488('0x17')](_0x8488('0x27'),_0x4f7a4e[_0x8488('0x18')],_0x576862);_0x360ff2(_this[_0x8488('0x17')](0x1f4,_0x4f7a4e[_0x8488('0x18')]));});});};
\ No newline at end of file
index 9c1768c..5929ecf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4eb=['chatInteraction:','./chatInteraction.events','save','update','emit','register','length'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0xe4eb,0x9b));var _0xbe4e=function(_0xf034a4,_0x522919){_0xf034a4=_0xf034a4-0x0;var _0x37b357=_0xe4eb[_0xf034a4];return _0x37b357;};'use strict';var ChatInteractionEvents=require(_0xbe4e('0x0'));var events=[_0xbe4e('0x1'),'remove',_0xbe4e('0x2')];function createListener(_0x39b18b,_0x14646b){return function(_0x5b63fb){_0x14646b[_0xbe4e('0x3')](_0x39b18b,_0x5b63fb);};}function removeListener(_0x9a14a9,_0x3b2b21){return function(){ChatInteractionEvents['removeListener'](_0x9a14a9,_0x3b2b21);};}exports[_0xbe4e('0x4')]=function(_0x15aa50){for(var _0x2e4bd6=0x0,_0x1e9580=events[_0xbe4e('0x5')];_0x2e4bd6<_0x1e9580;_0x2e4bd6++){var _0x1bffa2=events[_0x2e4bd6];var _0x3ad104=createListener(_0xbe4e('0x6')+_0x1bffa2,_0x15aa50);ChatInteractionEvents['on'](_0x1bffa2,_0x3ad104);}};
\ No newline at end of file
+var _0xf63f=['./chatInteraction.events','remove','update','emit','removeListener','register','length','chatInteraction:'];(function(_0x53afe9,_0x2c9f40){var _0x396396=function(_0x1f574d){while(--_0x1f574d){_0x53afe9['push'](_0x53afe9['shift']());}};_0x396396(++_0x2c9f40);}(_0xf63f,0xf8));var _0xff63=function(_0x5e8324,_0x475ba7){_0x5e8324=_0x5e8324-0x0;var _0x4b4806=_0xf63f[_0x5e8324];return _0x4b4806;};'use strict';var ChatInteractionEvents=require(_0xff63('0x0'));var events=['save',_0xff63('0x1'),_0xff63('0x2')];function createListener(_0x24ef73,_0x417ac5){return function(_0x13d576){_0x417ac5[_0xff63('0x3')](_0x24ef73,_0x13d576);};}function removeListener(_0x287c04,_0x6245e7){return function(){ChatInteractionEvents[_0xff63('0x4')](_0x287c04,_0x6245e7);};}exports[_0xff63('0x5')]=function(_0x5560b7){for(var _0x344e0d=0x0,_0x2b593c=events[_0xff63('0x6')];_0x344e0d<_0x2b593c;_0x344e0d++){var _0x54d1dc=events[_0x344e0d];var _0x99e266=createListener(_0xff63('0x7')+_0x54d1dc,_0x5560b7);ChatInteractionEvents['on'](_0x54d1dc,_0x99e266);}};
\ No newline at end of file
index 7286cfa..dadb8a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad24=['removeTags','multer','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInteraction.controller','isAuthenticated','get','describe','/:id','show','isChatInteractionAuthorized','attachmentDownload','/:id/messages','getMessages','/:id/download','download','post','create','/:id/vidaoo','diskStorage','join','root','server/files/attachments/','%s-%s','now','originalname','replace','/:id/attachment_upload','file','attachmentUpload','addMessage','tracked','chat','chatinteraction:addtags','addTags','put','chatinteraction:update','update','/:id/custom_update','customUpdate','/:id/abandon','abandon','delete','chatinteraction:destroy','destroy','/:id/tags'];(function(_0x565ed7,_0x398228){var _0x183ad7=function(_0x5a43d7){while(--_0x5a43d7){_0x565ed7['push'](_0x565ed7['shift']());}};_0x183ad7(++_0x398228);}(_0xad24,0x65));var _0x4ad2=function(_0xf6760f,_0xe9e7a5){_0xf6760f=_0xf6760f-0x0;var _0x19a2b6=_0xad24[_0xf6760f];return _0x19a2b6;};'use strict';var multer=require(_0x4ad2('0x0'));var util=require(_0x4ad2('0x1'));var path=require(_0x4ad2('0x2'));var timeout=require('connect-timeout');var express=require(_0x4ad2('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x4ad2('0x4'));var interaction=require(_0x4ad2('0x5'));var config=require(_0x4ad2('0x6'));var controller=require(_0x4ad2('0x7'));router['get']('/',auth[_0x4ad2('0x8')](),controller['index']);router[_0x4ad2('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x4ad2('0xa')]);router[_0x4ad2('0x9')](_0x4ad2('0xb'),auth['isChatInteractionAuthorized'](),controller[_0x4ad2('0xc')]);router['get']('/:id/attachment_download',auth[_0x4ad2('0xd')](),controller[_0x4ad2('0xe')]);router[_0x4ad2('0x9')](_0x4ad2('0xf'),auth[_0x4ad2('0x8')](),controller[_0x4ad2('0x10')]);router[_0x4ad2('0x9')]('/:id/my_messages',auth[_0x4ad2('0xd')](),controller['getMyMessages']);router['get'](_0x4ad2('0x11'),auth[_0x4ad2('0x8')](),controller[_0x4ad2('0x12')]);router[_0x4ad2('0x13')]('/',auth['isAuthenticated'](),controller[_0x4ad2('0x14')]);router[_0x4ad2('0x13')](_0x4ad2('0x15'),auth[_0x4ad2('0x8')](),controller['createVidaooSession']);var upload=multer({'storage':multer[_0x4ad2('0x16')]({'destination':function(_0x13cbd9,_0x461a28,_0xdd6da0){_0xdd6da0(null,path[_0x4ad2('0x17')](config[_0x4ad2('0x18')],_0x4ad2('0x19')));},'filename':function(_0x244929,_0x535a63,_0x389c07){_0x389c07(null,util['format'](_0x4ad2('0x1a'),Date[_0x4ad2('0x1b')](),_0x535a63[_0x4ad2('0x1c')][_0x4ad2('0x1d')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x4ad2('0x13')](_0x4ad2('0x1e'),upload['single'](_0x4ad2('0x1f')),controller[_0x4ad2('0x20')]);router[_0x4ad2('0x13')](_0x4ad2('0xf'),auth[_0x4ad2('0xd')](),controller[_0x4ad2('0x21')]);router[_0x4ad2('0x13')]('/:id/tags',auth[_0x4ad2('0x8')](),interaction[_0x4ad2('0x22')](_0x4ad2('0x23'),_0x4ad2('0x24')),controller[_0x4ad2('0x25')]);router[_0x4ad2('0x26')](_0x4ad2('0xb'),auth[_0x4ad2('0x8')](),interaction[_0x4ad2('0x22')](_0x4ad2('0x23'),_0x4ad2('0x27')),controller[_0x4ad2('0x28')]);router[_0x4ad2('0x26')](_0x4ad2('0x29'),controller[_0x4ad2('0x2a')]);router[_0x4ad2('0x26')](_0x4ad2('0x2b'),auth[_0x4ad2('0xd')](),controller[_0x4ad2('0x2c')]);router[_0x4ad2('0x26')]('/:id/close',controller['close']);router[_0x4ad2('0x2d')](_0x4ad2('0xb'),auth[_0x4ad2('0x8')](),interaction[_0x4ad2('0x22')](_0x4ad2('0x23'),_0x4ad2('0x2e')),controller[_0x4ad2('0x2f')]);router[_0x4ad2('0x2d')](_0x4ad2('0x30'),auth[_0x4ad2('0x8')](),controller[_0x4ad2('0x31')]);module['exports']=router;
\ No newline at end of file
+var _0xb338=['download','post','createVidaooSession','diskStorage','root','server/files/attachments/','%s-%s','now','originalname','replace','/:id/attachment_upload','single','file','attachmentUpload','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','update','put','customUpdate','/:id/abandon','/:id/close','delete','chatinteraction:destroy','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','index','/describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','/:id/messages','isAuthenticated','/:id/my_messages','getMyMessages','/:id/download'];(function(_0x36c53b,_0x46c8a2){var _0x49dc1d=function(_0x5820b6){while(--_0x5820b6){_0x36c53b['push'](_0x36c53b['shift']());}};_0x49dc1d(++_0x46c8a2);}(_0xb338,0x10c));var _0x8b33=function(_0x34d6bd,_0x55b744){_0x34d6bd=_0x34d6bd-0x0;var _0x248396=_0xb338[_0x34d6bd];return _0x248396;};'use strict';var multer=require(_0x8b33('0x0'));var util=require('util');var path=require(_0x8b33('0x1'));var timeout=require(_0x8b33('0x2'));var express=require(_0x8b33('0x3'));var router=express[_0x8b33('0x4')]();var fs_extra=require(_0x8b33('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8b33('0x6'));var config=require('../../config/environment');var controller=require('./chatInteraction.controller');router[_0x8b33('0x7')]('/',auth['isAuthenticated'](),controller[_0x8b33('0x8')]);router[_0x8b33('0x7')](_0x8b33('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x8b33('0x7')](_0x8b33('0xa'),auth[_0x8b33('0xb')](),controller[_0x8b33('0xc')]);router[_0x8b33('0x7')](_0x8b33('0xd'),auth[_0x8b33('0xb')](),controller[_0x8b33('0xe')]);router[_0x8b33('0x7')](_0x8b33('0xf'),auth[_0x8b33('0x10')](),controller['getMessages']);router['get'](_0x8b33('0x11'),auth[_0x8b33('0xb')](),controller[_0x8b33('0x12')]);router[_0x8b33('0x7')](_0x8b33('0x13'),auth['isAuthenticated'](),controller[_0x8b33('0x14')]);router['post']('/',auth[_0x8b33('0x10')](),controller['create']);router[_0x8b33('0x15')]('/:id/vidaoo',auth[_0x8b33('0x10')](),controller[_0x8b33('0x16')]);var upload=multer({'storage':multer[_0x8b33('0x17')]({'destination':function(_0x50a80e,_0x10fcc3,_0x467bb3){_0x467bb3(null,path['join'](config[_0x8b33('0x18')],_0x8b33('0x19')));},'filename':function(_0x21f6ec,_0x164ac9,_0x3e0a0a){_0x3e0a0a(null,util['format'](_0x8b33('0x1a'),Date[_0x8b33('0x1b')](),_0x164ac9[_0x8b33('0x1c')][_0x8b33('0x1d')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x8b33('0x15')](_0x8b33('0x1e'),upload[_0x8b33('0x1f')](_0x8b33('0x20')),controller[_0x8b33('0x21')]);router[_0x8b33('0x15')](_0x8b33('0xf'),auth['isChatInteractionAuthorized'](),controller[_0x8b33('0x22')]);router[_0x8b33('0x15')](_0x8b33('0x23'),auth[_0x8b33('0x10')](),interaction[_0x8b33('0x24')](_0x8b33('0x25'),_0x8b33('0x26')),controller['addTags']);router['put'](_0x8b33('0xa'),auth[_0x8b33('0x10')](),interaction[_0x8b33('0x24')](_0x8b33('0x25'),'chatinteraction:update'),controller[_0x8b33('0x27')]);router[_0x8b33('0x28')]('/:id/custom_update',controller[_0x8b33('0x29')]);router[_0x8b33('0x28')](_0x8b33('0x2a'),auth[_0x8b33('0xb')](),controller['abandon']);router[_0x8b33('0x28')](_0x8b33('0x2b'),controller['close']);router[_0x8b33('0x2c')](_0x8b33('0xa'),auth[_0x8b33('0x10')](),interaction[_0x8b33('0x24')](_0x8b33('0x25'),_0x8b33('0x2d')),controller[_0x8b33('0x2e')]);router[_0x8b33('0x2c')](_0x8b33('0x23'),auth[_0x8b33('0x10')](),controller['removeTags']);module[_0x8b33('0x2f')]=router;
\ No newline at end of file
index 0086ced..dce8975 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x783f=['TEXT','medium','INTEGER','sequelize'];(function(_0x31fac4,_0x261e72){var _0x189743=function(_0x2a4da1){while(--_0x2a4da1){_0x31fac4['push'](_0x31fac4['shift']());}};_0x189743(++_0x261e72);}(_0x783f,0x1a3));var _0xf783=function(_0x2fd0f6,_0x2176fe){_0x2fd0f6=_0x2fd0f6-0x0;var _0x2d723f=_0x783f[_0x2fd0f6];return _0x2d723f;};'use strict';var Sequelize=require(_0xf783('0x0'));module['exports']={'body':{'type':Sequelize[_0xf783('0x1')](_0xf783('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0xf783('0x3')]}};
\ No newline at end of file
+var _0x8e6c=['exports','medium','INTEGER','sequelize'];(function(_0x4a35de,_0x302e63){var _0x6463d3=function(_0x339663){while(--_0x339663){_0x4a35de['push'](_0x4a35de['shift']());}};_0x6463d3(++_0x302e63);}(_0x8e6c,0x117));var _0xc8e6=function(_0x46c6d1,_0x1f5f28){_0x46c6d1=_0x46c6d1-0x0;var _0x3cbf54=_0x8e6c[_0x46c6d1];return _0x3cbf54;};'use strict';var Sequelize=require(_0xc8e6('0x0'));module[_0xc8e6('0x1')]={'body':{'type':Sequelize['TEXT'](_0xc8e6('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0xc8e6('0x3')]}};
\ No newline at end of file
index 3e57cba..4348e1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x651a=['attributes','fields','length','nolimit','offset','sort','pick','filter','merge','where','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','rawAttributes','find','create','body','describe','get','messages','lastMessageAt','format','YYYY-MM-DD\x20HH:mm:ss','User','agent','admin','user','fullname','role','userpic','internal','lastLoginAt','allowmessenger','-online','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','isEmpty','resourceId','push','createdAt','FromId','read','all','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatInternalMessage.socket','register','sendStatus','status','end','json','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','ChatInternalMessage','fieldName','key','model','map','query','filters','intersection'];(function(_0x45aa4e,_0x4c0c61){var _0x38420e=function(_0x50cdc8){while(--_0x50cdc8){_0x45aa4e['push'](_0x45aa4e['shift']());}};_0x38420e(++_0x4c0c61);}(_0x651a,0x1ee));var _0xa651=function(_0x2a87e9,_0x25c03e){_0x2a87e9=_0x2a87e9-0x0;var _0x5de0e6=_0x651a[_0x2a87e9];return _0x5de0e6;};'use strict';var emlformat=require(_0xa651('0x0'));var rimraf=require(_0xa651('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa651('0x2'));var rp=require('request-promise');var moment=require(_0xa651('0x3'));var BPromise=require(_0xa651('0x4'));var Mustache=require(_0xa651('0x5'));var util=require('util');var path=require(_0xa651('0x6'));var sox=require(_0xa651('0x7'));var csv=require(_0xa651('0x8'));var ejs=require(_0xa651('0x9'));var fs=require('fs');var fs_extra=require(_0xa651('0xa'));var _=require(_0xa651('0xb'));var squel=require(_0xa651('0xc'));var crypto=require(_0xa651('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xa651('0xe'));var toCsv=require(_0xa651('0x8'));var querystring=require(_0xa651('0xf'));var Papa=require(_0xa651('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa651('0x11'));var as=require(_0xa651('0x12'));var hardwareService=require(_0xa651('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xa651('0x14'));var config=require(_0xa651('0x15'));var licenseUtil=require(_0xa651('0x16'));var db=require(_0xa651('0x17'))['db'];config[_0xa651('0x18')]=_[_0xa651('0x19')](config[_0xa651('0x18')],{'host':_0xa651('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xa651('0x1b'))[_0xa651('0x1c')](socket);function respondWithStatusCode(_0x98a95d,_0x30ec80){_0x30ec80=_0x30ec80||0xcc;return function(_0x3c38dd){if(_0x3c38dd){return _0x98a95d[_0xa651('0x1d')](_0x30ec80);}return _0x98a95d[_0xa651('0x1e')](_0x30ec80)[_0xa651('0x1f')]();};}function respondWithResult(_0x1e143a,_0x4be07d){_0x4be07d=_0x4be07d||0xc8;return function(_0x5943bb){if(_0x5943bb){return _0x1e143a['status'](_0x4be07d)[_0xa651('0x20')](_0x5943bb);}};}function respondWithFilteredResult(_0x418336,_0x52cecd){return function(_0xacde6e){if(_0xacde6e){var _0x1d68f8=typeof _0x52cecd['offset']===_0xa651('0x21')&&typeof _0x52cecd[_0xa651('0x22')]===_0xa651('0x21');var _0x4cf22f=_0xacde6e[_0xa651('0x23')];var _0x91f73d=_0x1d68f8?0x0:_0x52cecd['offset'];var _0x56e351=_0x1d68f8?_0xacde6e['count']:_0x52cecd['offset']+_0x52cecd['limit'];var _0x2225fb;if(_0x56e351>=_0x4cf22f){_0x56e351=_0x4cf22f;_0x2225fb=0xc8;}else{_0x2225fb=0xce;}_0x418336['status'](_0x2225fb);return _0x418336[_0xa651('0x24')](_0xa651('0x25'),_0x91f73d+'-'+_0x56e351+'/'+_0x4cf22f)[_0xa651('0x20')](_0xacde6e);}return null;};}function patchUpdates(_0x50e9cd){return function(_0x37c057){try{jsonpatch[_0xa651('0x26')](_0x37c057,_0x50e9cd,!![]);}catch(_0x995b6){return BPromise[_0xa651('0x27')](_0x995b6);}return _0x37c057[_0xa651('0x28')]();};}function saveUpdates(_0x4acdc1,_0x2199b9){return function(_0x2258d8){if(_0x2258d8){return _0x2258d8[_0xa651('0x29')](_0x4acdc1)[_0xa651('0x2a')](function(_0x2b3e22){return _0x2b3e22;});}return null;};}function removeEntity(_0x46cb2d,_0x4068ca){return function(_0x281ff4){if(_0x281ff4){return _0x281ff4[_0xa651('0x2b')]()[_0xa651('0x2a')](function(){_0x46cb2d[_0xa651('0x1e')](0xcc)[_0xa651('0x1f')]();});}};}function handleEntityNotFound(_0xf5d7f0,_0x3f825a){return function(_0x562c23){if(!_0x562c23){_0xf5d7f0['sendStatus'](0x194);}return _0x562c23;};}function handleError(_0x168452,_0x330e6f){_0x330e6f=_0x330e6f||0x1f4;return function(_0x265d16){logger[_0xa651('0x2c')](_0x265d16[_0xa651('0x2d')]);if(_0x265d16[_0xa651('0x2e')]){delete _0x265d16[_0xa651('0x2e')];}_0x168452[_0xa651('0x1e')](_0x330e6f)[_0xa651('0x2f')](_0x265d16);};}exports['index']=function(_0x20133f,_0x576cfe){var _0x1f268a={},_0x22e062={},_0x4a6062={'count':0x0,'rows':[]};var _0x1649f5=_['map'](db[_0xa651('0x30')]['rawAttributes'],function(_0x51cb6e){return{'name':_0x51cb6e[_0xa651('0x31')],'type':_0x51cb6e['type'][_0xa651('0x32')]};});_0x22e062[_0xa651('0x33')]=_[_0xa651('0x34')](_0x1649f5,_0xa651('0x2e'));_0x22e062[_0xa651('0x35')]=_['keys'](_0x20133f[_0xa651('0x35')]);_0x22e062[_0xa651('0x36')]=_[_0xa651('0x37')](_0x22e062[_0xa651('0x33')],_0x22e062[_0xa651('0x35')]);_0x1f268a[_0xa651('0x38')]=_[_0xa651('0x37')](_0x22e062[_0xa651('0x33')],qs[_0xa651('0x39')](_0x20133f['query']['fields']));_0x1f268a[_0xa651('0x38')]=_0x1f268a[_0xa651('0x38')][_0xa651('0x3a')]?_0x1f268a[_0xa651('0x38')]:_0x22e062[_0xa651('0x33')];if(!_0x20133f[_0xa651('0x35')]['hasOwnProperty'](_0xa651('0x3b'))){_0x1f268a['limit']=qs[_0xa651('0x22')](_0x20133f[_0xa651('0x35')][_0xa651('0x22')]);_0x1f268a[_0xa651('0x3c')]=qs[_0xa651('0x3c')](_0x20133f[_0xa651('0x35')][_0xa651('0x3c')]);}_0x1f268a['order']=qs[_0xa651('0x3d')](_0x20133f[_0xa651('0x35')][_0xa651('0x3d')]);_0x1f268a['where']=qs[_0xa651('0x36')](_[_0xa651('0x3e')](_0x20133f['query'],_0x22e062[_0xa651('0x36')]),_0x1649f5);if(_0x20133f['query'][_0xa651('0x3f')]){_0x1f268a['where']=_[_0xa651('0x40')](_0x1f268a[_0xa651('0x41')],{'$or':_['map'](_0x1649f5,function(_0x140917){if(_0x140917[_0xa651('0x42')]!==_0xa651('0x43')){var _0x422047={};_0x422047[_0x140917[_0xa651('0x2e')]]={'$like':'%'+_0x20133f[_0xa651('0x35')][_0xa651('0x3f')]+'%'};return _0x422047;}})});}_0x1f268a=_[_0xa651('0x40')]({},_0x1f268a,_0x20133f[_0xa651('0x44')]);var _0x5e1eaa={'where':_0x1f268a['where']};return db[_0xa651('0x30')][_0xa651('0x23')](_0x5e1eaa)['then'](function(_0x5dbd39){_0x4a6062[_0xa651('0x23')]=_0x5dbd39;if(_0x20133f[_0xa651('0x35')][_0xa651('0x45')]){_0x1f268a['include']=[{'all':!![]}];}return db[_0xa651('0x30')][_0xa651('0x46')](_0x1f268a);})[_0xa651('0x2a')](function(_0x2e719d){_0x4a6062[_0xa651('0x47')]=_0x2e719d;return _0x4a6062;})['then'](respondWithFilteredResult(_0x576cfe,_0x1f268a))[_0xa651('0x48')](handleError(_0x576cfe,null));};exports[_0xa651('0x49')]=function(_0x381934,_0x533607){var _0x15fbc2={'raw':!![],'where':{'id':_0x381934[_0xa651('0x4a')]['id']}},_0x2fb4b7={};_0x2fb4b7['model']=_[_0xa651('0x4b')](db[_0xa651('0x30')][_0xa651('0x4c')]);_0x2fb4b7[_0xa651('0x35')]=_['keys'](_0x381934['query']);_0x2fb4b7[_0xa651('0x36')]=_[_0xa651('0x37')](_0x2fb4b7[_0xa651('0x33')],_0x2fb4b7[_0xa651('0x35')]);_0x15fbc2[_0xa651('0x38')]=_[_0xa651('0x37')](_0x2fb4b7[_0xa651('0x33')],qs[_0xa651('0x39')](_0x381934[_0xa651('0x35')][_0xa651('0x39')]));_0x15fbc2[_0xa651('0x38')]=_0x15fbc2['attributes']['length']?_0x15fbc2[_0xa651('0x38')]:_0x2fb4b7['model'];if(_0x381934[_0xa651('0x35')]['includeAll']){_0x15fbc2['include']=[{'all':!![]}];}_0x15fbc2=_[_0xa651('0x40')]({},_0x15fbc2,_0x381934[_0xa651('0x44')]);return db[_0xa651('0x30')][_0xa651('0x4d')](_0x15fbc2)[_0xa651('0x2a')](handleEntityNotFound(_0x533607,null))[_0xa651('0x2a')](respondWithResult(_0x533607,null))[_0xa651('0x48')](handleError(_0x533607,null));};exports[_0xa651('0x4e')]=function(_0x5e05ae,_0x46351a){return db[_0xa651('0x30')][_0xa651('0x4e')](_0x5e05ae[_0xa651('0x4f')],{})['then'](respondWithResult(_0x46351a,0xc9))[_0xa651('0x48')](handleError(_0x46351a,null));};exports[_0xa651('0x29')]=function(_0x5a3b18,_0x4a420e){if(_0x5a3b18[_0xa651('0x4f')]['id']){delete _0x5a3b18['body']['id'];}return db[_0xa651('0x30')]['find']({'where':{'id':_0x5a3b18['params']['id']}})[_0xa651('0x2a')](handleEntityNotFound(_0x4a420e,null))[_0xa651('0x2a')](saveUpdates(_0x5a3b18['body'],null))[_0xa651('0x2a')](respondWithResult(_0x4a420e,null))[_0xa651('0x48')](handleError(_0x4a420e,null));};exports[_0xa651('0x2b')]=function(_0x1f4977,_0x2cf097){return db['ChatInternalMessage'][_0xa651('0x4d')]({'where':{'id':_0x1f4977[_0xa651('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2cf097,null))[_0xa651('0x2a')](removeEntity(_0x2cf097,null))['catch'](handleError(_0x2cf097,null));};exports[_0xa651('0x50')]=function(_0x1aa091,_0x3ed22c){return db[_0xa651('0x30')]['describe']()[_0xa651('0x2a')](respondWithResult(_0x3ed22c,null))[_0xa651('0x48')](handleError(_0x3ed22c,null));};function wrapUser(_0x5a290d){return function(_0x54a4cb){var _0x3a4d9a=_0x5a290d[_0xa651('0x51')]({'plain':!![]});_0x3a4d9a[_0xa651('0x52')]=[];if(_0x54a4cb){_0x3a4d9a[_0xa651('0x53')]=_0x54a4cb['createdAt'];_0x3a4d9a['lastMessage']=_0x54a4cb;}else{_0x3a4d9a[_0xa651('0x53')]=moment(0x0)[_0xa651('0x54')](_0xa651('0x55'));_0x3a4d9a['lastMessage']={};}return _0x3a4d9a;};}exports['getUsers']=function(_0x40baad,_0x227d6a,_0x466318){var _0x3705cc=[];return db[_0xa651('0x56')][_0xa651('0x46')]({'where':{'role':[_0xa651('0x57'),_0xa651('0x58'),_0xa651('0x59')]},'attributes':['id',_0xa651('0x5a'),'name',_0xa651('0x5b'),_0xa651('0x5c'),_0xa651('0x5d'),'online',_0xa651('0x5e'),_0xa651('0x5f'),'showWebBar'],'order':qs[_0xa651('0x3d')](_0xa651('0x60')),'include':[{'model':db['VoiceQueue'],'as':_0xa651('0x61'),'attributes':['id',_0xa651('0x2e'),_0xa651('0x42')],'through':{'attributes':[]}}]})[_0xa651('0x2a')](function(_0xe4f151){if(_0xe4f151){var _0x46d778=_0x40baad[_0xa651('0x59')][_0xa651('0x51')]({'plain':!![]});if(!_0x46d778)throw new Error(_0xa651('0x62'));if(_0x46d778['role']===_0xa651('0x59')){return db[_0xa651('0x63')][_0xa651('0x4d')]({'where':{'name':'Agents','userProfileId':_0x46d778[_0xa651('0x64')]},'raw':!![]})[_0xa651('0x2a')](function(_0x49ff37){if(_0x49ff37){if(_0x49ff37[_0xa651('0x65')]===0x0){return db[_0xa651('0x66')]['findAll']({'where':{'sectionId':_0x49ff37['id']},'raw':!![]})[_0xa651('0x2a')](function(_0xf34aac){var _0x363a84=[];if(_[_0xa651('0x67')](_0xf34aac)){_0x363a84=_[_0xa651('0x3f')](_0xe4f151,function(_0x4822d0){if(_0x4822d0[_0xa651('0x5b')]!=='agent'){return _0x4822d0;}});return _0x363a84;}else{for(var _0x2758e0=0x0;_0x2758e0<_0xe4f151['length'];_0x2758e0++){var _0x1f63b8=_0xe4f151[_0x2758e0];if(_0x1f63b8[_0xa651('0x5b')]===_0xa651('0x57')){var _0x549403=_['find'](_0xf34aac,function(_0x365b65){return _0x365b65[_0xa651('0x68')]===_0x1f63b8['id'];});if(_0x549403)_0x363a84[_0xa651('0x69')](_0x1f63b8);}else{_0x363a84[_0xa651('0x69')](_0x1f63b8);}}return _0x363a84;}});}else{return _0xe4f151;}}else{var _0x863a64=_[_0xa651('0x3f')](_0xe4f151,function(_0x3182bd){if(_0x3182bd['role']!==_0xa651('0x57')){return _0x3182bd;}});return _0x863a64;}});}else{return _0xe4f151;}}})[_0xa651('0x2a')](function(_0x260f27){var _0x3847a0=[];if(_0x260f27){_0x3705cc=_0x260f27;for(var _0x8e33fe=0x0;_0x8e33fe<_0x260f27['length'];_0x8e33fe+=0x1){_0x3705cc[_0x8e33fe]['messages']=[];_0x3847a0[_0xa651('0x69')](db[_0xa651('0x30')]['find']({'where':{'FromId':[_0x40baad[_0xa651('0x59')]['id'],_0x260f27[_0x8e33fe]['id']],'ToId':[_0x40baad['user']['id'],_0x260f27[_0x8e33fe]['id']],'ChatGroupId':null},'attributes':['id',_0xa651('0x6a'),_0xa651('0x6b'),'ToId',_0xa651('0x6c'),_0xa651('0x4f')],'order':qs[_0xa651('0x3d')]('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})[_0xa651('0x2a')](wrapUser(_0x260f27[_0x8e33fe])));}return BPromise[_0xa651('0x6d')](_0x3847a0);}return[];})[_0xa651('0x2a')](function(_0x61352a){return{'rows':_0x61352a,'count':_0x61352a['length']};})[_0xa651('0x2a')](respondWithResult(_0x227d6a,null))[_0xa651('0x48')](handleError(_0x227d6a,null));};
\ No newline at end of file
+var _0xbafe=['Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','autoAssociation','isEmpty','resourceId','push','createdAt','ToId','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','end','json','undefined','limit','count','offset','status','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','map','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','ChatInternalMessage','includeAll','include','findAll','rows','catch','length','find','create','body','params','describe','get','messages','lastMessageAt','format','YYYY-MM-DD\x20HH:mm:ss','lastMessage','getUsers','agent','admin','user','fullname','role','userpic','internal','online','lastLoginAt','-online','VoiceQueue'];(function(_0x4d6481,_0x537a88){var _0xb19a68=function(_0x5f1218){while(--_0x5f1218){_0x4d6481['push'](_0x4d6481['shift']());}};_0xb19a68(++_0x537a88);}(_0xbafe,0x1b1));var _0xebaf=function(_0x390034,_0x3a2582){_0x390034=_0x390034-0x0;var _0x48c0d3=_0xbafe[_0x390034];return _0x48c0d3;};'use strict';var emlformat=require(_0xebaf('0x0'));var rimraf=require(_0xebaf('0x1'));var zipdir=require(_0xebaf('0x2'));var jsonpatch=require(_0xebaf('0x3'));var rp=require('request-promise');var moment=require(_0xebaf('0x4'));var BPromise=require(_0xebaf('0x5'));var Mustache=require('mustache');var util=require(_0xebaf('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xebaf('0x7'));var ejs=require(_0xebaf('0x8'));var fs=require('fs');var fs_extra=require(_0xebaf('0x9'));var _=require(_0xebaf('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xebaf('0xb'));var deskjs=require(_0xebaf('0xc'));var toCsv=require('to-csv');var querystring=require(_0xebaf('0xd'));var Papa=require('papaparse');var Redis=require(_0xebaf('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xebaf('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xebaf('0x10'))(_0xebaf('0x11'));var utils=require('../../config/utils');var config=require(_0xebaf('0x12'));var licenseUtil=require(_0xebaf('0x13'));var db=require(_0xebaf('0x14'))['db'];config[_0xebaf('0x15')]=_[_0xebaf('0x16')](config[_0xebaf('0x15')],{'host':_0xebaf('0x17'),'port':0x18eb});var socket=require(_0xebaf('0x18'))(new Redis(config['redis']));require(_0xebaf('0x19'))[_0xebaf('0x1a')](socket);function respondWithStatusCode(_0x2be694,_0x33ec95){_0x33ec95=_0x33ec95||0xcc;return function(_0x370947){if(_0x370947){return _0x2be694[_0xebaf('0x1b')](_0x33ec95);}return _0x2be694['status'](_0x33ec95)[_0xebaf('0x1c')]();};}function respondWithResult(_0x44b0a3,_0xcc2931){_0xcc2931=_0xcc2931||0xc8;return function(_0x25ce47){if(_0x25ce47){return _0x44b0a3['status'](_0xcc2931)[_0xebaf('0x1d')](_0x25ce47);}};}function respondWithFilteredResult(_0xb11eac,_0x182765){return function(_0x32b9a5){if(_0x32b9a5){var _0x2bac8a=typeof _0x182765['offset']===_0xebaf('0x1e')&&typeof _0x182765[_0xebaf('0x1f')]===_0xebaf('0x1e');var _0x3a2f70=_0x32b9a5[_0xebaf('0x20')];var _0x41ba63=_0x2bac8a?0x0:_0x182765['offset'];var _0x36259b=_0x2bac8a?_0x32b9a5[_0xebaf('0x20')]:_0x182765[_0xebaf('0x21')]+_0x182765['limit'];var _0x5be6f4;if(_0x36259b>=_0x3a2f70){_0x36259b=_0x3a2f70;_0x5be6f4=0xc8;}else{_0x5be6f4=0xce;}_0xb11eac[_0xebaf('0x22')](_0x5be6f4);return _0xb11eac[_0xebaf('0x23')](_0xebaf('0x24'),_0x41ba63+'-'+_0x36259b+'/'+_0x3a2f70)[_0xebaf('0x1d')](_0x32b9a5);}return null;};}function patchUpdates(_0x2e185d){return function(_0x59b397){try{jsonpatch[_0xebaf('0x25')](_0x59b397,_0x2e185d,!![]);}catch(_0x79076c){return BPromise[_0xebaf('0x26')](_0x79076c);}return _0x59b397[_0xebaf('0x27')]();};}function saveUpdates(_0x4a5ddc,_0xf0522d){return function(_0x57fff3){if(_0x57fff3){return _0x57fff3[_0xebaf('0x28')](_0x4a5ddc)[_0xebaf('0x29')](function(_0x19e39d){return _0x19e39d;});}return null;};}function removeEntity(_0x5d6bd7,_0x134c2f){return function(_0x1ac766){if(_0x1ac766){return _0x1ac766[_0xebaf('0x2a')]()[_0xebaf('0x29')](function(){_0x5d6bd7[_0xebaf('0x22')](0xcc)[_0xebaf('0x1c')]();});}};}function handleEntityNotFound(_0xf0c2b1,_0x35dfb7){return function(_0x340a96){if(!_0x340a96){_0xf0c2b1[_0xebaf('0x1b')](0x194);}return _0x340a96;};}function handleError(_0x2a7cb2,_0x49f88c){_0x49f88c=_0x49f88c||0x1f4;return function(_0x4952a5){logger[_0xebaf('0x2b')](_0x4952a5[_0xebaf('0x2c')]);if(_0x4952a5[_0xebaf('0x2d')]){delete _0x4952a5[_0xebaf('0x2d')];}_0x2a7cb2[_0xebaf('0x22')](_0x49f88c)['send'](_0x4952a5);};}exports['index']=function(_0x5c9344,_0x147a93){var _0x5d0d71={},_0xdbded8={},_0x41ef62={'count':0x0,'rows':[]};var _0x378812=_[_0xebaf('0x2e')](db['ChatInternalMessage'][_0xebaf('0x2f')],function(_0x79bff){return{'name':_0x79bff[_0xebaf('0x30')],'type':_0x79bff[_0xebaf('0x31')][_0xebaf('0x32')]};});_0xdbded8[_0xebaf('0x33')]=_[_0xebaf('0x2e')](_0x378812,_0xebaf('0x2d'));_0xdbded8['query']=_[_0xebaf('0x34')](_0x5c9344[_0xebaf('0x35')]);_0xdbded8[_0xebaf('0x36')]=_['intersection'](_0xdbded8[_0xebaf('0x33')],_0xdbded8['query']);_0x5d0d71[_0xebaf('0x37')]=_[_0xebaf('0x38')](_0xdbded8[_0xebaf('0x33')],qs[_0xebaf('0x39')](_0x5c9344[_0xebaf('0x35')][_0xebaf('0x39')]));_0x5d0d71['attributes']=_0x5d0d71[_0xebaf('0x37')]['length']?_0x5d0d71['attributes']:_0xdbded8['model'];if(!_0x5c9344[_0xebaf('0x35')][_0xebaf('0x3a')](_0xebaf('0x3b'))){_0x5d0d71[_0xebaf('0x1f')]=qs[_0xebaf('0x1f')](_0x5c9344[_0xebaf('0x35')][_0xebaf('0x1f')]);_0x5d0d71[_0xebaf('0x21')]=qs[_0xebaf('0x21')](_0x5c9344[_0xebaf('0x35')][_0xebaf('0x21')]);}_0x5d0d71[_0xebaf('0x3c')]=qs[_0xebaf('0x3d')](_0x5c9344[_0xebaf('0x35')][_0xebaf('0x3d')]);_0x5d0d71[_0xebaf('0x3e')]=qs[_0xebaf('0x36')](_['pick'](_0x5c9344[_0xebaf('0x35')],_0xdbded8[_0xebaf('0x36')]),_0x378812);if(_0x5c9344[_0xebaf('0x35')][_0xebaf('0x3f')]){_0x5d0d71[_0xebaf('0x3e')]=_['merge'](_0x5d0d71[_0xebaf('0x3e')],{'$or':_[_0xebaf('0x2e')](_0x378812,function(_0x33357b){if(_0x33357b[_0xebaf('0x31')]!==_0xebaf('0x40')){var _0x52f154={};_0x52f154[_0x33357b[_0xebaf('0x2d')]]={'$like':'%'+_0x5c9344[_0xebaf('0x35')]['filter']+'%'};return _0x52f154;}})});}_0x5d0d71=_[_0xebaf('0x41')]({},_0x5d0d71,_0x5c9344[_0xebaf('0x42')]);var _0x4f3add={'where':_0x5d0d71['where']};return db[_0xebaf('0x43')][_0xebaf('0x20')](_0x4f3add)[_0xebaf('0x29')](function(_0x38091){_0x41ef62['count']=_0x38091;if(_0x5c9344[_0xebaf('0x35')][_0xebaf('0x44')]){_0x5d0d71[_0xebaf('0x45')]=[{'all':!![]}];}return db[_0xebaf('0x43')][_0xebaf('0x46')](_0x5d0d71);})[_0xebaf('0x29')](function(_0x5bd43c){_0x41ef62[_0xebaf('0x47')]=_0x5bd43c;return _0x41ef62;})[_0xebaf('0x29')](respondWithFilteredResult(_0x147a93,_0x5d0d71))[_0xebaf('0x48')](handleError(_0x147a93,null));};exports['show']=function(_0x15c0d7,_0x4fb043){var _0x224acc={'raw':!![],'where':{'id':_0x15c0d7['params']['id']}},_0x30442d={};_0x30442d['model']=_[_0xebaf('0x34')](db[_0xebaf('0x43')][_0xebaf('0x2f')]);_0x30442d['query']=_[_0xebaf('0x34')](_0x15c0d7[_0xebaf('0x35')]);_0x30442d[_0xebaf('0x36')]=_['intersection'](_0x30442d[_0xebaf('0x33')],_0x30442d[_0xebaf('0x35')]);_0x224acc[_0xebaf('0x37')]=_[_0xebaf('0x38')](_0x30442d[_0xebaf('0x33')],qs['fields'](_0x15c0d7[_0xebaf('0x35')][_0xebaf('0x39')]));_0x224acc[_0xebaf('0x37')]=_0x224acc[_0xebaf('0x37')][_0xebaf('0x49')]?_0x224acc[_0xebaf('0x37')]:_0x30442d[_0xebaf('0x33')];if(_0x15c0d7['query'][_0xebaf('0x44')]){_0x224acc[_0xebaf('0x45')]=[{'all':!![]}];}_0x224acc=_[_0xebaf('0x41')]({},_0x224acc,_0x15c0d7[_0xebaf('0x42')]);return db[_0xebaf('0x43')][_0xebaf('0x4a')](_0x224acc)[_0xebaf('0x29')](handleEntityNotFound(_0x4fb043,null))[_0xebaf('0x29')](respondWithResult(_0x4fb043,null))['catch'](handleError(_0x4fb043,null));};exports[_0xebaf('0x4b')]=function(_0x4cd5c5,_0x23ee2d){return db[_0xebaf('0x43')]['create'](_0x4cd5c5[_0xebaf('0x4c')],{})['then'](respondWithResult(_0x23ee2d,0xc9))[_0xebaf('0x48')](handleError(_0x23ee2d,null));};exports[_0xebaf('0x28')]=function(_0xedcf0e,_0x21d0e6){if(_0xedcf0e['body']['id']){delete _0xedcf0e[_0xebaf('0x4c')]['id'];}return db[_0xebaf('0x43')][_0xebaf('0x4a')]({'where':{'id':_0xedcf0e[_0xebaf('0x4d')]['id']}})['then'](handleEntityNotFound(_0x21d0e6,null))[_0xebaf('0x29')](saveUpdates(_0xedcf0e[_0xebaf('0x4c')],null))[_0xebaf('0x29')](respondWithResult(_0x21d0e6,null))['catch'](handleError(_0x21d0e6,null));};exports[_0xebaf('0x2a')]=function(_0x505486,_0x199d2d){return db[_0xebaf('0x43')]['find']({'where':{'id':_0x505486['params']['id']}})[_0xebaf('0x29')](handleEntityNotFound(_0x199d2d,null))[_0xebaf('0x29')](removeEntity(_0x199d2d,null))[_0xebaf('0x48')](handleError(_0x199d2d,null));};exports[_0xebaf('0x4e')]=function(_0x1dfa6c,_0xb7b4b5){return db[_0xebaf('0x43')][_0xebaf('0x4e')]()[_0xebaf('0x29')](respondWithResult(_0xb7b4b5,null))[_0xebaf('0x48')](handleError(_0xb7b4b5,null));};function wrapUser(_0x1ee989){return function(_0x7f2cad){var _0x1eb2dc=_0x1ee989[_0xebaf('0x4f')]({'plain':!![]});_0x1eb2dc[_0xebaf('0x50')]=[];if(_0x7f2cad){_0x1eb2dc[_0xebaf('0x51')]=_0x7f2cad['createdAt'];_0x1eb2dc['lastMessage']=_0x7f2cad;}else{_0x1eb2dc[_0xebaf('0x51')]=moment(0x0)[_0xebaf('0x52')](_0xebaf('0x53'));_0x1eb2dc[_0xebaf('0x54')]={};}return _0x1eb2dc;};}exports[_0xebaf('0x55')]=function(_0x14c25c,_0x3c75b6,_0x3f01fb){var _0x24cc9d=[];return db['User']['findAll']({'where':{'role':[_0xebaf('0x56'),_0xebaf('0x57'),_0xebaf('0x58')]},'attributes':['id',_0xebaf('0x59'),_0xebaf('0x2d'),_0xebaf('0x5a'),_0xebaf('0x5b'),_0xebaf('0x5c'),_0xebaf('0x5d'),_0xebaf('0x5e'),'allowmessenger','showWebBar'],'order':qs[_0xebaf('0x3d')](_0xebaf('0x5f')),'include':[{'model':db[_0xebaf('0x60')],'as':'VoiceQueues','attributes':['id',_0xebaf('0x2d'),_0xebaf('0x31')],'through':{'attributes':[]}}]})[_0xebaf('0x29')](function(_0x539f25){if(_0x539f25){var _0x48ea67=_0x14c25c[_0xebaf('0x58')][_0xebaf('0x4f')]({'plain':!![]});if(!_0x48ea67)throw new Error(_0xebaf('0x61'));if(_0x48ea67['role']==='user'){return db[_0xebaf('0x62')][_0xebaf('0x4a')]({'where':{'name':_0xebaf('0x63'),'userProfileId':_0x48ea67['userProfileId']},'raw':!![]})[_0xebaf('0x29')](function(_0x4e0a3b){if(_0x4e0a3b){if(_0x4e0a3b[_0xebaf('0x64')]===0x0){return db['UserProfileResource'][_0xebaf('0x46')]({'where':{'sectionId':_0x4e0a3b['id']},'raw':!![]})[_0xebaf('0x29')](function(_0x1a194c){var _0x53a62b=[];if(_[_0xebaf('0x65')](_0x1a194c)){_0x53a62b=_[_0xebaf('0x3f')](_0x539f25,function(_0x4429f3){if(_0x4429f3['role']!==_0xebaf('0x56')){return _0x4429f3;}});return _0x53a62b;}else{for(var _0x5acb8c=0x0;_0x5acb8c<_0x539f25[_0xebaf('0x49')];_0x5acb8c++){var _0x38befe=_0x539f25[_0x5acb8c];if(_0x38befe[_0xebaf('0x5a')]==='agent'){var _0x3af0b6=_[_0xebaf('0x4a')](_0x1a194c,function(_0x2503c3){return _0x2503c3[_0xebaf('0x66')]===_0x38befe['id'];});if(_0x3af0b6)_0x53a62b[_0xebaf('0x67')](_0x38befe);}else{_0x53a62b[_0xebaf('0x67')](_0x38befe);}}return _0x53a62b;}});}else{return _0x539f25;}}else{var _0x1250a2=_[_0xebaf('0x3f')](_0x539f25,function(_0x49fd38){if(_0x49fd38['role']!==_0xebaf('0x56')){return _0x49fd38;}});return _0x1250a2;}});}else{return _0x539f25;}}})[_0xebaf('0x29')](function(_0x4285c6){var _0x52928d=[];if(_0x4285c6){_0x24cc9d=_0x4285c6;for(var _0x3fe39a=0x0;_0x3fe39a<_0x4285c6['length'];_0x3fe39a+=0x1){_0x24cc9d[_0x3fe39a]['messages']=[];_0x52928d[_0xebaf('0x67')](db[_0xebaf('0x43')][_0xebaf('0x4a')]({'where':{'FromId':[_0x14c25c[_0xebaf('0x58')]['id'],_0x4285c6[_0x3fe39a]['id']],'ToId':[_0x14c25c[_0xebaf('0x58')]['id'],_0x4285c6[_0x3fe39a]['id']],'ChatGroupId':null},'attributes':['id',_0xebaf('0x68'),'FromId',_0xebaf('0x69'),'read','body'],'order':qs[_0xebaf('0x3d')]('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})[_0xebaf('0x29')](wrapUser(_0x4285c6[_0x3fe39a])));}return BPromise['all'](_0x52928d);}return[];})[_0xebaf('0x29')](function(_0x416a1e){return{'rows':_0x416a1e,'count':_0x416a1e[_0xebaf('0x49')]};})[_0xebaf('0x29')](respondWithResult(_0x3c75b6,null))['catch'](handleError(_0x3c75b6,null));};
\ No newline at end of file
index 0cf0ad0..e21c479 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71f6=['exports','../../mysqldb','setMaxListeners','save','update','emit','hook'];(function(_0x148308,_0x59b441){var _0x2d3675=function(_0x7b3c6a){while(--_0x7b3c6a){_0x148308['push'](_0x148308['shift']());}};_0x2d3675(++_0x59b441);}(_0x71f6,0x1ac));var _0x671f=function(_0x255626,_0x18521f){_0x255626=_0x255626-0x0;var _0x135359=_0x71f6[_0x255626];return _0x135359;};'use strict';var EventEmitter=require('events');var ChatInternalMessage=require(_0x671f('0x0'))['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x671f('0x1')](0x0);var events={'afterCreate':_0x671f('0x2'),'afterUpdate':_0x671f('0x3'),'afterDestroy':'remove'};function emitEvent(_0x3b869f){return function(_0x19fefa,_0x43682b,_0x20f576){ChatInternalMessageEvents[_0x671f('0x4')](_0x3b869f+':'+_0x19fefa['id'],_0x19fefa);ChatInternalMessageEvents[_0x671f('0x4')](_0x3b869f,_0x19fefa);_0x20f576(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage[_0x671f('0x5')](e,emitEvent(event));}}module[_0x671f('0x6')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0xa6d1=['exports','events','../../mysqldb','ChatInternalMessage','setMaxListeners','emit'];(function(_0x1b349a,_0x22222c){var _0x5d1f7c=function(_0x368d7c){while(--_0x368d7c){_0x1b349a['push'](_0x1b349a['shift']());}};_0x5d1f7c(++_0x22222c);}(_0xa6d1,0x1e1));var _0x1a6d=function(_0x267616,_0x19487d){_0x267616=_0x267616-0x0;var _0xe59e36=_0xa6d1[_0x267616];return _0xe59e36;};'use strict';var EventEmitter=require(_0x1a6d('0x0'));var ChatInternalMessage=require(_0x1a6d('0x1'))['db'][_0x1a6d('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x1a6d('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x767812){return function(_0x5d1cc9,_0x17bd07,_0xc7c2de){ChatInternalMessageEvents['emit'](_0x767812+':'+_0x5d1cc9['id'],_0x5d1cc9);ChatInternalMessageEvents[_0x1a6d('0x4')](_0x767812,_0x5d1cc9);_0xc7c2de(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage['hook'](e,emitEvent(event));}}module[_0x1a6d('0x5')]=ChatInternalMessageEvents;
\ No newline at end of file
index 57379d3..648b252 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa030=['api','moment','bluebird','request-promise','path','rimraf','exports','define','chat_internal_messages','utf8mb4','lodash','util','../../config/logger'];(function(_0x4baae2,_0x487ab6){var _0x1a2285=function(_0x1cea47){while(--_0x1cea47){_0x4baae2['push'](_0x4baae2['shift']());}};_0x1a2285(++_0x487ab6);}(_0xa030,0x169));var _0x0a03=function(_0x116578,_0x337863){_0x116578=_0x116578-0x0;var _0x85a2da=_0xa030[_0x116578];return _0x85a2da;};'use strict';var _=require(_0x0a03('0x0'));var util=require(_0x0a03('0x1'));var logger=require(_0x0a03('0x2'))(_0x0a03('0x3'));var moment=require(_0x0a03('0x4'));var BPromise=require(_0x0a03('0x5'));var rp=require(_0x0a03('0x6'));var fs=require('fs');var path=require(_0x0a03('0x7'));var rimraf=require(_0x0a03('0x8'));var config=require('../../config/environment');var attributes=require('./chatInternalMessage.attributes');module[_0x0a03('0x9')]=function(_0x361eec,_0x4496fc){return _0x361eec[_0x0a03('0xa')]('ChatInternalMessage',attributes,{'tableName':_0x0a03('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0a03('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x039b=['api','bluebird','path','../../config/environment','define','ChatInternalMessage','chat_internal_messages','utf8mb4_unicode_ci','util','../../config/logger'];(function(_0x1b043d,_0x2515ed){var _0xf0e2fd=function(_0xc394fa){while(--_0xc394fa){_0x1b043d['push'](_0x1b043d['shift']());}};_0xf0e2fd(++_0x2515ed);}(_0x039b,0x198));var _0xb039=function(_0x27976d,_0x4670e5){_0x27976d=_0x27976d-0x0;var _0xfaff20=_0x039b[_0x27976d];return _0xfaff20;};'use strict';var _=require('lodash');var util=require(_0xb039('0x0'));var logger=require(_0xb039('0x1'))(_0xb039('0x2'));var moment=require('moment');var BPromise=require(_0xb039('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb039('0x4'));var rimraf=require('rimraf');var config=require(_0xb039('0x5'));var attributes=require('./chatInternalMessage.attributes');module['exports']=function(_0x548033,_0x3be3e3){return _0x548033[_0xb039('0x6')](_0xb039('0x7'),attributes,{'tableName':_0xb039('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xb039('0x9')});};
\ No newline at end of file
index 5e25aa5..6324d28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa62e=['util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./chatInternalMessage.socket','register','request','then','ChatInternalMessage,\x20%s,\x20%s','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','lodash'];(function(_0x7578bc,_0x27fe04){var _0x32a1c1=function(_0x470741){while(--_0x470741){_0x7578bc['push'](_0x7578bc['shift']());}};_0x32a1c1(++_0x27fe04);}(_0xa62e,0x128));var _0xea62=function(_0x2575ed,_0x8c52f0){_0x2575ed=_0x2575ed-0x0;var _0x3d11f2=_0xa62e[_0x2575ed];return _0x3d11f2;};'use strict';var _=require(_0xea62('0x0'));var util=require(_0xea62('0x1'));var moment=require(_0xea62('0x2'));var BPromise=require('bluebird');var rs=require(_0xea62('0x3'));var fs=require('fs');var Redis=require(_0xea62('0x4'));var db=require(_0xea62('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xea62('0x6'));var config=require(_0xea62('0x7'));var jayson=require(_0xea62('0x8'));var client=jayson[_0xea62('0x9')][_0xea62('0xa')]({'port':0x232a});config[_0xea62('0xb')]=_['defaults'](config[_0xea62('0xb')],{'host':_0xea62('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xea62('0xd'))[_0xea62('0xe')](socket);function respondWithRpcPromise(_0x15d17c,_0x464c24,_0x48b9a4){return new BPromise(function(_0x18292c,_0x54015b){return client[_0xea62('0xf')](_0x15d17c,_0x48b9a4)[_0xea62('0x10')](function(_0x561b7c){logger['info'](_0xea62('0x11'),_0x464c24,'request\x20sent');logger[_0xea62('0x12')](_0xea62('0x13'),_0x464c24,_0xea62('0x14'),JSON[_0xea62('0x15')](_0x561b7c));if(_0x561b7c[_0xea62('0x16')]){if(_0x561b7c[_0xea62('0x16')]['code']===0x1f4){logger['error'](_0xea62('0x11'),_0x464c24,_0x561b7c[_0xea62('0x16')][_0xea62('0x17')]);return _0x54015b(_0x561b7c['error'][_0xea62('0x17')]);}logger[_0xea62('0x16')](_0xea62('0x11'),_0x464c24,_0x561b7c[_0xea62('0x16')][_0xea62('0x17')]);return _0x18292c(_0x561b7c[_0xea62('0x16')][_0xea62('0x17')]);}else{logger[_0xea62('0x18')](_0xea62('0x11'),_0x464c24,'request\x20sent');_0x18292c(_0x561b7c[_0xea62('0x19')][_0xea62('0x17')]);}})[_0xea62('0x1a')](function(_0x5802a6){logger[_0xea62('0x16')]('ChatInternalMessage,\x20%s,\x20%s',_0x464c24,_0x5802a6);_0x54015b(_0x5802a6);});});}
\ No newline at end of file
+var _0x1ee8=['code','ChatInternalMessage,\x20%s,\x20%s','message','result','util','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','http','redis','socket.io-emitter','./chatInternalMessage.socket','register','request','info','request\x20sent','ChatInternalMessage,\x20%s,\x20%s,\x20%s','error'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0x1ee8,0x6d));var _0x81ee=function(_0x465d15,_0x25c5b0){_0x465d15=_0x465d15-0x0;var _0x2029fd=_0x1ee8[_0x465d15];return _0x2029fd;};'use strict';var _=require('lodash');var util=require(_0x81ee('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x81ee('0x1'));var fs=require('fs');var Redis=require(_0x81ee('0x2'));var db=require(_0x81ee('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x81ee('0x4'));var config=require(_0x81ee('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x81ee('0x6')][_0x81ee('0x7')]({'port':0x232a});config[_0x81ee('0x8')]=_['defaults'](config[_0x81ee('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x81ee('0x9'))(new Redis(config[_0x81ee('0x8')]));require(_0x81ee('0xa'))[_0x81ee('0xb')](socket);function respondWithRpcPromise(_0x57170d,_0x30324e,_0x5ed23e){return new BPromise(function(_0x3bec73,_0xa42ddf){return client[_0x81ee('0xc')](_0x57170d,_0x5ed23e)['then'](function(_0x5c9402){logger[_0x81ee('0xd')]('ChatInternalMessage,\x20%s,\x20%s',_0x30324e,_0x81ee('0xe'));logger['debug'](_0x81ee('0xf'),_0x30324e,_0x81ee('0xe'),JSON['stringify'](_0x5c9402));if(_0x5c9402[_0x81ee('0x10')]){if(_0x5c9402[_0x81ee('0x10')][_0x81ee('0x11')]===0x1f4){logger[_0x81ee('0x10')](_0x81ee('0x12'),_0x30324e,_0x5c9402[_0x81ee('0x10')][_0x81ee('0x13')]);return _0xa42ddf(_0x5c9402[_0x81ee('0x10')][_0x81ee('0x13')]);}logger[_0x81ee('0x10')](_0x81ee('0x12'),_0x30324e,_0x5c9402[_0x81ee('0x10')][_0x81ee('0x13')]);return _0x3bec73(_0x5c9402['error']['message']);}else{logger[_0x81ee('0xd')]('ChatInternalMessage,\x20%s,\x20%s',_0x30324e,_0x81ee('0xe'));_0x3bec73(_0x5c9402[_0x81ee('0x14')][_0x81ee('0x13')]);}})['catch'](function(_0x14269d){logger['error'](_0x81ee('0x12'),_0x30324e,_0x14269d);_0xa42ddf(_0x14269d);});});}
\ No newline at end of file
index 282fda3..302d416 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc923=['save','update','removeListener','chatInternalMessage:','./chatInternalMessage.events'];(function(_0x72895a,_0x433607){var _0x5226d5=function(_0x5b7d21){while(--_0x5b7d21){_0x72895a['push'](_0x72895a['shift']());}};_0x5226d5(++_0x433607);}(_0xc923,0x68));var _0x3c92=function(_0x2c43bb,_0x1138d7){_0x2c43bb=_0x2c43bb-0x0;var _0x2a0fd3=_0xc923[_0x2c43bb];return _0x2a0fd3;};'use strict';var ChatInternalMessageEvents=require(_0x3c92('0x0'));var events=[_0x3c92('0x1'),'remove',_0x3c92('0x2')];function createListener(_0x3e412f,_0x5a1d63){return function(_0x38815f){_0x5a1d63['emit'](_0x3e412f,_0x38815f);};}function removeListener(_0xb8733a,_0x82bc56){return function(){ChatInternalMessageEvents[_0x3c92('0x3')](_0xb8733a,_0x82bc56);};}exports['register']=function(_0x1558f7){for(var _0x31a0ac=0x0,_0x15f314=events['length'];_0x31a0ac<_0x15f314;_0x31a0ac++){var _0x5af013=events[_0x31a0ac];var _0x156e12=createListener(_0x3c92('0x4')+_0x5af013,_0x1558f7);ChatInternalMessageEvents['on'](_0x5af013,_0x156e12);}};
\ No newline at end of file
+var _0x2c96=['save','remove','update','removeListener','register','length','chatInternalMessage:','./chatInternalMessage.events'];(function(_0x68ee8b,_0x3cc6c5){var _0x5148f7=function(_0x5dcbd5){while(--_0x5dcbd5){_0x68ee8b['push'](_0x68ee8b['shift']());}};_0x5148f7(++_0x3cc6c5);}(_0x2c96,0xaf));var _0x62c9=function(_0xcc81f,_0x5bbb70){_0xcc81f=_0xcc81f-0x0;var _0x228e42=_0x2c96[_0xcc81f];return _0x228e42;};'use strict';var ChatInternalMessageEvents=require(_0x62c9('0x0'));var events=[_0x62c9('0x1'),_0x62c9('0x2'),_0x62c9('0x3')];function createListener(_0x3580b3,_0x46693c){return function(_0x3bb8c4){_0x46693c['emit'](_0x3580b3,_0x3bb8c4);};}function removeListener(_0x4a3aac,_0x1d55ef){return function(){ChatInternalMessageEvents[_0x62c9('0x4')](_0x4a3aac,_0x1d55ef);};}exports[_0x62c9('0x5')]=function(_0x97ecbe){for(var _0x3dc786=0x0,_0x5f0b81=events[_0x62c9('0x6')];_0x3dc786<_0x5f0b81;_0x3dc786++){var _0x4bcbc2=events[_0x3dc786];var _0x32871f=createListener(_0x62c9('0x7')+_0x4bcbc2,_0x97ecbe);ChatInternalMessageEvents['on'](_0x4bcbc2,_0x32871f);}};
\ No newline at end of file
index aee3aa2..9415639 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc09=['describe','/users','getUsers','/:id','show','post','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatInternalMessage.controller','isAuthenticated','get'];(function(_0x269293,_0x5d02c9){var _0x28a9cf=function(_0x6c0494){while(--_0x6c0494){_0x269293['push'](_0x269293['shift']());}};_0x28a9cf(++_0x5d02c9);}(_0xbc09,0xe7));var _0x9bc0=function(_0x87793c,_0x45f454){_0x87793c=_0x87793c-0x0;var _0x4637b3=_0xbc09[_0x87793c];return _0x4637b3;};'use strict';var multer=require('multer');var util=require(_0x9bc0('0x0'));var path=require(_0x9bc0('0x1'));var timeout=require(_0x9bc0('0x2'));var express=require(_0x9bc0('0x3'));var router=express[_0x9bc0('0x4')]();var fs_extra=require(_0x9bc0('0x5'));var auth=require(_0x9bc0('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x9bc0('0x7'));var controller=require(_0x9bc0('0x8'));router['get']('/',auth[_0x9bc0('0x9')](),controller['index']);router[_0x9bc0('0xa')]('/describe',auth[_0x9bc0('0x9')](),controller[_0x9bc0('0xb')]);router['get'](_0x9bc0('0xc'),auth['isAuthenticated'](),controller[_0x9bc0('0xd')]);router[_0x9bc0('0xa')](_0x9bc0('0xe'),auth[_0x9bc0('0x9')](),controller[_0x9bc0('0xf')]);router[_0x9bc0('0x10')]('/',auth[_0x9bc0('0x9')](),controller['create']);router[_0x9bc0('0x11')](_0x9bc0('0xe'),controller[_0x9bc0('0x12')]);router[_0x9bc0('0x13')]('/:id',auth[_0x9bc0('0x9')](),controller[_0x9bc0('0x14')]);module[_0x9bc0('0x15')]=router;
\ No newline at end of file
+var _0x8d0b=['update','delete','destroy','exports','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','isAuthenticated','index','/describe','describe','/users','getUsers','/:id','show','post','create','put'];(function(_0x172948,_0x4262cc){var _0x4aeaa9=function(_0x5ec4b3){while(--_0x5ec4b3){_0x172948['push'](_0x172948['shift']());}};_0x4aeaa9(++_0x4262cc);}(_0x8d0b,0xea));var _0xb8d0=function(_0x24f31b,_0x44b8f3){_0x24f31b=_0x24f31b-0x0;var _0x488401=_0x8d0b[_0x24f31b];return _0x488401;};'use strict';var multer=require('multer');var util=require(_0xb8d0('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb8d0('0x1'));var router=express[_0xb8d0('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xb8d0('0x3'));var interaction=require(_0xb8d0('0x4'));var config=require(_0xb8d0('0x5'));var controller=require(_0xb8d0('0x6'));router[_0xb8d0('0x7')]('/',auth[_0xb8d0('0x8')](),controller[_0xb8d0('0x9')]);router[_0xb8d0('0x7')](_0xb8d0('0xa'),auth['isAuthenticated'](),controller[_0xb8d0('0xb')]);router[_0xb8d0('0x7')](_0xb8d0('0xc'),auth['isAuthenticated'](),controller[_0xb8d0('0xd')]);router[_0xb8d0('0x7')](_0xb8d0('0xe'),auth['isAuthenticated'](),controller[_0xb8d0('0xf')]);router[_0xb8d0('0x10')]('/',auth[_0xb8d0('0x8')](),controller[_0xb8d0('0x11')]);router[_0xb8d0('0x12')](_0xb8d0('0xe'),controller[_0xb8d0('0x13')]);router[_0xb8d0('0x14')](_0xb8d0('0xe'),auth[_0xb8d0('0x8')](),controller[_0xb8d0('0x15')]);module[_0xb8d0('0x16')]=router;
\ No newline at end of file
index d1e70c6..8255537 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x082b=['BOOLEAN','ENUM','out','DATE','sequelize','exports','TEXT','medium'];(function(_0x3fa285,_0x49e62d){var _0x29bf11=function(_0x224a71){while(--_0x224a71){_0x3fa285['push'](_0x3fa285['shift']());}};_0x29bf11(++_0x49e62d);}(_0x082b,0x1ec));var _0xb082=function(_0x137e81,_0x3541c4){_0x137e81=_0x137e81-0x0;var _0x5f14e1=_0x082b[_0x137e81];return _0x5f14e1;};'use strict';var Sequelize=require(_0xb082('0x0'));module[_0xb082('0x1')]={'body':{'type':Sequelize[_0xb082('0x2')](_0xb082('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0xb082('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xb082('0x5')]('in','out'),'defaultValue':_0xb082('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0xb082('0x7')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xb082('0x2')]}};
\ No newline at end of file
+var _0x7fce=['ENUM','out','DATE','sequelize','exports','TEXT','BOOLEAN'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7fce,0xdc));var _0xe7fc=function(_0x50f1dd,_0x28850b){_0x50f1dd=_0x50f1dd-0x0;var _0x4e3ddc=_0x7fce[_0x50f1dd];return _0x4e3ddc;};'use strict';var Sequelize=require(_0xe7fc('0x0'));module[_0xe7fc('0x1')]={'body':{'type':Sequelize[_0xe7fc('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xe7fc('0x3')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xe7fc('0x4')]('in','out'),'defaultValue':_0xe7fc('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0xe7fc('0x6')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index b5c2335..79939bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7e3=['end','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','destroy','stack','name','send','map','ChatMessage','rawAttributes','fieldName','type','query','keys','intersection','attributes','model','nolimit','order','sort','where','pick','filters','filter','merge','options','includeAll','findAll','rows','show','length','include','find','create','body','describe','accept','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','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','SELECT','contact','User','fullname','email','internal','manual','interface','channel','event','acceptmessage','parse','formData','chat-interactions','chat','params','ChatInteraction','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','ContactId','sequelize','QueryTypes','SIP/%s','motionChannel','reject','EventManager','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','jayson/promise','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','sendStatus','status'];(function(_0x204665,_0x4b7744){var _0x16fa00=function(_0x26f6b8){while(--_0x26f6b8){_0x204665['push'](_0x204665['shift']());}};_0x16fa00(++_0x4b7744);}(_0xc7e3,0xe3));var _0x3c7e=function(_0x3ec432,_0x2e773e){_0x3ec432=_0x3ec432-0x0;var _0x520a5a=_0xc7e3[_0x3ec432];return _0x520a5a;};'use strict';var emlformat=require(_0x3c7e('0x0'));var rimraf=require(_0x3c7e('0x1'));var zipdir=require(_0x3c7e('0x2'));var jsonpatch=require(_0x3c7e('0x3'));var rp=require(_0x3c7e('0x4'));var moment=require(_0x3c7e('0x5'));var BPromise=require(_0x3c7e('0x6'));var Mustache=require(_0x3c7e('0x7'));var util=require(_0x3c7e('0x8'));var path=require(_0x3c7e('0x9'));var sox=require('sox');var csv=require(_0x3c7e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3c7e('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x3c7e('0xc'));var jsforce=require(_0x3c7e('0xd'));var deskjs=require(_0x3c7e('0xe'));var toCsv=require(_0x3c7e('0xa'));var querystring=require(_0x3c7e('0xf'));var Papa=require(_0x3c7e('0x10'));var Redis=require('ioredis');var authService=require(_0x3c7e('0x11'));var qs=require(_0x3c7e('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3c7e('0x13'));var logger=require(_0x3c7e('0x14'))(_0x3c7e('0x15'));var utils=require('../../config/utils');var config=require(_0x3c7e('0x16'));var licenseUtil=require(_0x3c7e('0x17'));var db=require(_0x3c7e('0x18'))['db'];config[_0x3c7e('0x19')]=_[_0x3c7e('0x1a')](config['redis'],{'host':_0x3c7e('0x1b'),'port':0x18eb});var socket=require(_0x3c7e('0x1c'))(new Redis(config[_0x3c7e('0x19')]));require('./chatMessage.socket')['register'](socket);var jayson=require(_0x3c7e('0x1d'));var client=jayson[_0x3c7e('0x1e')][_0x3c7e('0x1f')]({'port':0x232c});var client9002=jayson[_0x3c7e('0x1e')][_0x3c7e('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x2dfaa9,_0x5d8b53,_0x50c352,_0x278db2){return new BPromise(function(_0x8f0f83,_0x4dc991){var _0x5b0b62=_0x278db2||client;return _0x5b0b62[_0x3c7e('0x20')](_0x2dfaa9,_0x50c352)[_0x3c7e('0x21')](function(_0x3d7fd4){logger[_0x3c7e('0x22')](_0x3c7e('0x23'),_0x5d8b53,_0x3c7e('0x24'));logger[_0x3c7e('0x25')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x5d8b53,_0x3c7e('0x24'),JSON[_0x3c7e('0x26')](_0x3d7fd4));if(_0x3d7fd4[_0x3c7e('0x27')]){if(_0x3d7fd4[_0x3c7e('0x27')][_0x3c7e('0x28')]===0x1f4){logger[_0x3c7e('0x27')](_0x3c7e('0x23'),_0x5d8b53,_0x3d7fd4[_0x3c7e('0x27')]['message']);return _0x4dc991(_0x3d7fd4[_0x3c7e('0x27')][_0x3c7e('0x29')]);}logger[_0x3c7e('0x27')](_0x3c7e('0x23'),_0x5d8b53,_0x3d7fd4['error'][_0x3c7e('0x29')]);return _0x8f0f83(_0x3d7fd4['error'][_0x3c7e('0x29')]);}else{logger[_0x3c7e('0x22')](_0x3c7e('0x23'),_0x5d8b53,_0x3c7e('0x24'));_0x8f0f83(_0x3d7fd4['result'][_0x3c7e('0x29')]);}})[_0x3c7e('0x2a')](function(_0x2ef267){logger['error'](_0x3c7e('0x23'),_0x5d8b53,_0x2ef267);_0x4dc991(_0x2ef267);});});}function respondWithStatusCode(_0x1345c4,_0x2a9598){_0x2a9598=_0x2a9598||0xcc;return function(_0x28069b){if(_0x28069b){return _0x1345c4[_0x3c7e('0x2b')](_0x2a9598);}return _0x1345c4[_0x3c7e('0x2c')](_0x2a9598)[_0x3c7e('0x2d')]();};}function respondWithResult(_0xa78ede,_0x7455a5){_0x7455a5=_0x7455a5||0xc8;return function(_0x3a1463){if(_0x3a1463){return _0xa78ede[_0x3c7e('0x2c')](_0x7455a5)[_0x3c7e('0x2e')](_0x3a1463);}};}function respondWithFilteredResult(_0x44324c,_0x2ec0ad){return function(_0x167726){if(_0x167726){var _0x7abe0=typeof _0x2ec0ad[_0x3c7e('0x2f')]==='undefined'&&typeof _0x2ec0ad[_0x3c7e('0x30')]===_0x3c7e('0x31');var _0x1da9d2=_0x167726[_0x3c7e('0x32')];var _0x144b00=_0x7abe0?0x0:_0x2ec0ad['offset'];var _0x1a6884=_0x7abe0?_0x167726[_0x3c7e('0x32')]:_0x2ec0ad[_0x3c7e('0x2f')]+_0x2ec0ad[_0x3c7e('0x30')];var _0x509a7a;if(_0x1a6884>=_0x1da9d2){_0x1a6884=_0x1da9d2;_0x509a7a=0xc8;}else{_0x509a7a=0xce;}_0x44324c[_0x3c7e('0x2c')](_0x509a7a);return _0x44324c[_0x3c7e('0x33')](_0x3c7e('0x34'),_0x144b00+'-'+_0x1a6884+'/'+_0x1da9d2)[_0x3c7e('0x2e')](_0x167726);}return null;};}function patchUpdates(_0x16905c){return function(_0x1aae0c){try{jsonpatch[_0x3c7e('0x35')](_0x1aae0c,_0x16905c,!![]);}catch(_0x5e1b0c){return BPromise['reject'](_0x5e1b0c);}return _0x1aae0c[_0x3c7e('0x36')]();};}function saveUpdates(_0xf91945,_0x29445f){return function(_0x16007c){if(_0x16007c){return _0x16007c[_0x3c7e('0x37')](_0xf91945)[_0x3c7e('0x21')](function(_0x3a6ddd){return _0x3a6ddd;});}return null;};}function removeEntity(_0x41ec4f,_0x4aa768){return function(_0x1ea373){if(_0x1ea373){return _0x1ea373[_0x3c7e('0x38')]()[_0x3c7e('0x21')](function(){_0x41ec4f['status'](0xcc)[_0x3c7e('0x2d')]();});}};}function handleEntityNotFound(_0x1dce58,_0x414b1a){return function(_0x5ee8f8){if(!_0x5ee8f8){_0x1dce58[_0x3c7e('0x2b')](0x194);}return _0x5ee8f8;};}function handleError(_0x2e4145,_0x58a6f3){_0x58a6f3=_0x58a6f3||0x1f4;return function(_0x35d5f8){logger[_0x3c7e('0x27')](_0x35d5f8[_0x3c7e('0x39')]);if(_0x35d5f8['name']){delete _0x35d5f8[_0x3c7e('0x3a')];}_0x2e4145['status'](_0x58a6f3)[_0x3c7e('0x3b')](_0x35d5f8);};}exports['index']=function(_0x421d9f,_0x77d83a){var _0x3aa1b1={},_0x5f4e2e={},_0x123462={'count':0x0,'rows':[]};var _0x23bdfa=_[_0x3c7e('0x3c')](db[_0x3c7e('0x3d')][_0x3c7e('0x3e')],function(_0x442e8d){return{'name':_0x442e8d[_0x3c7e('0x3f')],'type':_0x442e8d[_0x3c7e('0x40')]['key']};});_0x5f4e2e['model']=_[_0x3c7e('0x3c')](_0x23bdfa,_0x3c7e('0x3a'));_0x5f4e2e[_0x3c7e('0x41')]=_[_0x3c7e('0x42')](_0x421d9f['query']);_0x5f4e2e['filters']=_[_0x3c7e('0x43')](_0x5f4e2e['model'],_0x5f4e2e[_0x3c7e('0x41')]);_0x3aa1b1[_0x3c7e('0x44')]=_['intersection'](_0x5f4e2e[_0x3c7e('0x45')],qs['fields'](_0x421d9f[_0x3c7e('0x41')]['fields']));_0x3aa1b1[_0x3c7e('0x44')]=_0x3aa1b1['attributes']['length']?_0x3aa1b1[_0x3c7e('0x44')]:_0x5f4e2e[_0x3c7e('0x45')];if(!_0x421d9f[_0x3c7e('0x41')]['hasOwnProperty'](_0x3c7e('0x46'))){_0x3aa1b1[_0x3c7e('0x30')]=qs['limit'](_0x421d9f[_0x3c7e('0x41')]['limit']);_0x3aa1b1['offset']=qs[_0x3c7e('0x2f')](_0x421d9f['query']['offset']);}_0x3aa1b1[_0x3c7e('0x47')]=qs[_0x3c7e('0x48')](_0x421d9f[_0x3c7e('0x41')][_0x3c7e('0x48')]);_0x3aa1b1[_0x3c7e('0x49')]=qs['filters'](_[_0x3c7e('0x4a')](_0x421d9f['query'],_0x5f4e2e[_0x3c7e('0x4b')]),_0x23bdfa);if(_0x421d9f['query'][_0x3c7e('0x4c')]){_0x3aa1b1[_0x3c7e('0x49')]=_[_0x3c7e('0x4d')](_0x3aa1b1[_0x3c7e('0x49')],{'$or':_[_0x3c7e('0x3c')](_0x23bdfa,function(_0x22bf83){if(_0x22bf83[_0x3c7e('0x40')]!=='VIRTUAL'){var _0x49f286={};_0x49f286[_0x22bf83[_0x3c7e('0x3a')]]={'$like':'%'+_0x421d9f[_0x3c7e('0x41')][_0x3c7e('0x4c')]+'%'};return _0x49f286;}})});}_0x3aa1b1=_[_0x3c7e('0x4d')]({},_0x3aa1b1,_0x421d9f[_0x3c7e('0x4e')]);var _0x5f8519={'where':_0x3aa1b1[_0x3c7e('0x49')]};return db[_0x3c7e('0x3d')][_0x3c7e('0x32')](_0x5f8519)[_0x3c7e('0x21')](function(_0x20486d){_0x123462[_0x3c7e('0x32')]=_0x20486d;if(_0x421d9f['query'][_0x3c7e('0x4f')]){_0x3aa1b1['include']=[{'all':!![]}];}return db[_0x3c7e('0x3d')][_0x3c7e('0x50')](_0x3aa1b1);})[_0x3c7e('0x21')](function(_0x4042c4){_0x123462[_0x3c7e('0x51')]=_0x4042c4;return _0x123462;})['then'](respondWithFilteredResult(_0x77d83a,_0x3aa1b1))['catch'](handleError(_0x77d83a,null));};exports[_0x3c7e('0x52')]=function(_0x9dd27a,_0x2b72d3){var _0x346de0={'raw':!![],'where':{'id':_0x9dd27a['params']['id']}},_0x5b4971={};_0x5b4971['model']=_[_0x3c7e('0x42')](db[_0x3c7e('0x3d')]['rawAttributes']);_0x5b4971[_0x3c7e('0x41')]=_['keys'](_0x9dd27a[_0x3c7e('0x41')]);_0x5b4971[_0x3c7e('0x4b')]=_[_0x3c7e('0x43')](_0x5b4971[_0x3c7e('0x45')],_0x5b4971['query']);_0x346de0[_0x3c7e('0x44')]=_[_0x3c7e('0x43')](_0x5b4971[_0x3c7e('0x45')],qs['fields'](_0x9dd27a[_0x3c7e('0x41')]['fields']));_0x346de0[_0x3c7e('0x44')]=_0x346de0['attributes'][_0x3c7e('0x53')]?_0x346de0[_0x3c7e('0x44')]:_0x5b4971[_0x3c7e('0x45')];if(_0x9dd27a[_0x3c7e('0x41')]['includeAll']){_0x346de0[_0x3c7e('0x54')]=[{'all':!![]}];}_0x346de0=_[_0x3c7e('0x4d')]({},_0x346de0,_0x9dd27a[_0x3c7e('0x4e')]);return db[_0x3c7e('0x3d')][_0x3c7e('0x55')](_0x346de0)['then'](handleEntityNotFound(_0x2b72d3,null))[_0x3c7e('0x21')](respondWithResult(_0x2b72d3,null))[_0x3c7e('0x2a')](handleError(_0x2b72d3,null));};exports[_0x3c7e('0x56')]=function(_0x3c61d5,_0x44a4a7){return db['ChatMessage'][_0x3c7e('0x56')](_0x3c61d5[_0x3c7e('0x57')],{})[_0x3c7e('0x21')](respondWithResult(_0x44a4a7,0xc9))[_0x3c7e('0x2a')](handleError(_0x44a4a7,null));};exports[_0x3c7e('0x37')]=function(_0x373067,_0x5969e5){if(_0x373067[_0x3c7e('0x57')]['id']){delete _0x373067[_0x3c7e('0x57')]['id'];}return db['ChatMessage'][_0x3c7e('0x55')]({'where':{'id':_0x373067['params']['id']}})[_0x3c7e('0x21')](handleEntityNotFound(_0x5969e5,null))[_0x3c7e('0x21')](saveUpdates(_0x373067[_0x3c7e('0x57')],null))[_0x3c7e('0x21')](respondWithResult(_0x5969e5,null))[_0x3c7e('0x2a')](handleError(_0x5969e5,null));};exports[_0x3c7e('0x38')]=function(_0x2371e9,_0x5212d3){return db[_0x3c7e('0x3d')][_0x3c7e('0x55')]({'where':{'id':_0x2371e9['params']['id']}})[_0x3c7e('0x21')](handleEntityNotFound(_0x5212d3,null))['then'](removeEntity(_0x5212d3,null))[_0x3c7e('0x2a')](handleError(_0x5212d3,null));};exports[_0x3c7e('0x58')]=function(_0x49c0df,_0x5eaccd){return db[_0x3c7e('0x3d')][_0x3c7e('0x58')]()[_0x3c7e('0x21')](respondWithResult(_0x5eaccd,null))[_0x3c7e('0x2a')](handleError(_0x5eaccd,null));};var interaction_log=require('../../config/logger')('chat-interactions');exports[_0x3c7e('0x59')]=function(_0x1cc5f5,_0x366e3e,_0x326ea4){var _0x4fc38e={'agent':{},'channel':'chat'};if(_0x1cc5f5[_0x3c7e('0x57')]['id']){delete _0x1cc5f5[_0x3c7e('0x57')]['id'];}_0x1cc5f5[_0x3c7e('0x57')][_0x3c7e('0x5a')]=!![];_0x1cc5f5[_0x3c7e('0x57')][_0x3c7e('0x5b')]=moment()[_0x3c7e('0x5c')](_0x3c7e('0x5d'));_0x1cc5f5[_0x3c7e('0x57')][_0x3c7e('0x5e')]=_0x1cc5f5[_0x3c7e('0x57')]['UserId']||_0x1cc5f5[_0x3c7e('0x5f')]['id'];_0x4fc38e[_0x3c7e('0x60')]['id']=_0x1cc5f5[_0x3c7e('0x57')]['UserId'];return db['ChatMessage']['find']({'where':{'id':_0x1cc5f5['params']['id'],'UserId':null}})[_0x3c7e('0x21')](handleEntityNotFound(_0x366e3e,null))[_0x3c7e('0x21')](saveUpdates(_0x1cc5f5[_0x3c7e('0x57')],null))[_0x3c7e('0x21')](function(_0x185156){if(_0x185156){_0x4fc38e[_0x3c7e('0x29')]=_0x185156[_0x3c7e('0x61')]({'plain':!![]});return db['ChatInteraction'][_0x3c7e('0x55')]({'where':{'id':_0x185156[_0x3c7e('0x62')]}});}return null;})['then'](handleEntityNotFound(_0x366e3e,null))[_0x3c7e('0x21')](function(_0xf6309e){if(_0xf6309e){return _0xf6309e[_0x3c7e('0x37')]({'UserId':_0x1cc5f5['body']['UserId'],'read1stAt':_[_0x3c7e('0x63')](_0xf6309e[_0x3c7e('0x64')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x5b4246){if(_0x5b4246){_0x4fc38e[_0x3c7e('0x65')]=_0x5b4246[_0x3c7e('0x61')]({'plain':!![]});interaction_log['info'](_0x3c7e('0x66'),_0x1cc5f5[_0x3c7e('0x5f')]['id'],_0x1cc5f5['user']['name'],_0x1cc5f5[_0x3c7e('0x5f')][_0x3c7e('0x67')],_0x4fc38e[_0x3c7e('0x65')]['id'],_0x1cc5f5[_0x3c7e('0x57')]?JSON[_0x3c7e('0x26')](_0x1cc5f5[_0x3c7e('0x57')]):_0x3c7e('0x68'));return respondWithRpcPromise(_0x3c7e('0x69'),_0x3c7e('0x6a'),_0x4fc38e);}return null;})[_0x3c7e('0x21')](function(_0x13bb05){var _0x38922f=_0x3c7e('0x6b')+_0x13bb05[_0x3c7e('0x29')]['ContactId'];return db['sequelize'][_0x3c7e('0x41')](_0x38922f,{'type':db[_0x3c7e('0x6c')]['QueryTypes'][_0x3c7e('0x6d')],'raw':!![]})[_0x3c7e('0x21')](function(_0x59d09d){return _0x59d09d;});})[_0x3c7e('0x21')](function(_0x42b28e){if(_0x42b28e){_0x4fc38e[_0x3c7e('0x29')][_0x3c7e('0x6e')]=_0x42b28e[0x0];if(!_0x1cc5f5[_0x3c7e('0x57')][_0x3c7e('0x5e')])return;return db[_0x3c7e('0x6f')]['find']({'where':{'id':_0x1cc5f5[_0x3c7e('0x57')][_0x3c7e('0x5e')],'role':'agent'},'attributes':['id','name',_0x3c7e('0x70'),_0x3c7e('0x71'),_0x3c7e('0x72')],'raw':!![]});}return null;})[_0x3c7e('0x21')](function(_0x49d871){if(!_0x49d871)return null;_0x4fc38e[_0x3c7e('0x29')][_0x3c7e('0x60')]=_0x49d871;return _0x4fc38e;})['then'](function(_0x1b369a){if(_0x1b369a){if(_0x1cc5f5[_0x3c7e('0x57')][_0x3c7e('0x73')]){_0x4fc38e['message'][_0x3c7e('0x74')]=util[_0x3c7e('0x5c')]('SIP/%s',_0x1cc5f5['user'][_0x3c7e('0x3a')]);_0x4fc38e[_0x3c7e('0x29')]['channel']=_0x4fc38e[_0x3c7e('0x75')];_0x4fc38e['message']['motionChannel']=_0x4fc38e[_0x3c7e('0x75')];_0x4fc38e['message'][_0x3c7e('0x76')]=_0x3c7e('0x59');return respondWithRpcPromise('EventManager','EventManager',{'event':_0x3c7e('0x77'),'message':_[_0x3c7e('0x4d')](_0x4fc38e[_0x3c7e('0x29')],JSON[_0x3c7e('0x78')](_0x4fc38e[_0x3c7e('0x65')][_0x3c7e('0x79')]))},client9002)[_0x3c7e('0x21')](function(){return _0x4fc38e;});}return _0x4fc38e;}return null;})[_0x3c7e('0x21')](respondWithResult(_0x366e3e,null))['catch'](handleError(_0x366e3e,null));};var interaction_log=require(_0x3c7e('0x14'))(_0x3c7e('0x7a'));exports['reject']=function(_0x428c06,_0x2bd52f,_0x37cb84){var _0x111a40={'agent':{},'channel':_0x3c7e('0x7b')};if(_0x428c06[_0x3c7e('0x57')]['id']){delete _0x428c06[_0x3c7e('0x57')]['id'];}_0x428c06[_0x3c7e('0x57')][_0x3c7e('0x5e')]=_0x428c06[_0x3c7e('0x57')][_0x3c7e('0x5e')]||_0x428c06[_0x3c7e('0x5f')]['id'];_0x111a40['agent']['id']=_0x428c06[_0x3c7e('0x57')][_0x3c7e('0x5e')];return db[_0x3c7e('0x3d')][_0x3c7e('0x55')]({'where':{'id':_0x428c06[_0x3c7e('0x7c')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2bd52f,null))[_0x3c7e('0x21')](function(_0x268756){if(_0x268756){_0x111a40[_0x3c7e('0x29')]=_0x268756[_0x3c7e('0x61')]({'plain':!![]});return db[_0x3c7e('0x7d')][_0x3c7e('0x55')]({'where':{'id':_0x268756['ChatInteractionId']}});}return null;})[_0x3c7e('0x21')](handleEntityNotFound(_0x2bd52f,null))['then'](function(_0x54cd15){if(_0x54cd15){_0x111a40[_0x3c7e('0x65')]=_0x54cd15['get']({'plain':!![]});interaction_log['info'](_0x3c7e('0x7e'),_0x428c06[_0x3c7e('0x5f')]['id'],_0x428c06[_0x3c7e('0x5f')][_0x3c7e('0x3a')],_0x428c06['user'][_0x3c7e('0x67')],_0x111a40[_0x3c7e('0x65')]['id'],_0x428c06[_0x3c7e('0x57')]?JSON[_0x3c7e('0x26')](_0x428c06[_0x3c7e('0x57')]):'null');return respondWithRpcPromise('RejectMessage',_0x3c7e('0x7f'),_0x111a40);}return null;})[_0x3c7e('0x21')](function(_0x1f7fa5){var _0x174988=_0x3c7e('0x6b')+_0x1f7fa5[_0x3c7e('0x29')][_0x3c7e('0x80')];return db[_0x3c7e('0x81')][_0x3c7e('0x41')](_0x174988,{'type':db[_0x3c7e('0x6c')][_0x3c7e('0x82')][_0x3c7e('0x6d')],'raw':!![]})[_0x3c7e('0x21')](function(_0x4574dc){return _0x4574dc;});})['then'](function(_0x48ee11){if(_0x48ee11){_0x111a40['message']['contact']=_0x48ee11[0x0];if(!_0x428c06[_0x3c7e('0x57')]['UserId'])return;return db[_0x3c7e('0x6f')][_0x3c7e('0x55')]({'where':{'id':_0x428c06[_0x3c7e('0x57')][_0x3c7e('0x5e')],'role':_0x3c7e('0x60')},'attributes':['id',_0x3c7e('0x3a'),_0x3c7e('0x70'),_0x3c7e('0x71'),_0x3c7e('0x72')],'raw':!![]});}return null;})[_0x3c7e('0x21')](function(_0x44e227){if(!_0x44e227)return null;_0x111a40[_0x3c7e('0x29')][_0x3c7e('0x60')]=_0x44e227;return _0x111a40;})['then'](function(_0xd60c41){if(_0xd60c41){_0xd60c41[_0x3c7e('0x29')][_0x3c7e('0x74')]=util[_0x3c7e('0x5c')](_0x3c7e('0x83'),_0x428c06['user']['name']);_0xd60c41[_0x3c7e('0x29')][_0x3c7e('0x75')]=_0x111a40[_0x3c7e('0x75')];_0xd60c41['message'][_0x3c7e('0x84')]=_0x111a40[_0x3c7e('0x75')];_0xd60c41[_0x3c7e('0x29')][_0x3c7e('0x76')]=_0x3c7e('0x85');respondWithRpcPromise(_0x3c7e('0x86'),_0x3c7e('0x86'),{'event':_0x3c7e('0x87'),'message':_[_0x3c7e('0x4d')](_0x111a40['message'],JSON[_0x3c7e('0x78')](_0x111a40['interaction'][_0x3c7e('0x79')]))},client9002);return _0x111a40;}return null;})[_0x3c7e('0x21')](respondWithResult(_0x2bd52f,null))[_0x3c7e('0x2a')](handleError(_0x2bd52f,null));};
\ No newline at end of file
+var _0xb84c=['length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','find','create','body','params','describe','../../config/logger','accept','chat','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','internal','SIP/%s','channel','motionChannel','event','EventManager','parse','formData','chat-interactions','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','email','interface','rimraf','zip-dir','fast-json-patch','request-promise','util','path','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','jayson/promise','client','http','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','destroy','sendStatus','name','send','index','ChatMessage','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields'];(function(_0x21a1a6,_0x1474bf){var _0x5cec0e=function(_0x13abb9){while(--_0x13abb9){_0x21a1a6['push'](_0x21a1a6['shift']());}};_0x5cec0e(++_0x1474bf);}(_0xb84c,0x1cb));var _0xcb84=function(_0x40b689,_0x3f7eab){_0x40b689=_0x40b689-0x0;var _0x4b3635=_0xb84c[_0x40b689];return _0x4b3635;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xcb84('0x0'));var zipdir=require(_0xcb84('0x1'));var jsonpatch=require(_0xcb84('0x2'));var rp=require(_0xcb84('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xcb84('0x4'));var path=require(_0xcb84('0x5'));var sox=require('sox');var csv=require(_0xcb84('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcb84('0x7'));var _=require(_0xcb84('0x8'));var squel=require(_0xcb84('0x9'));var crypto=require('crypto');var jsforce=require(_0xcb84('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xcb84('0xb'));var Papa=require(_0xcb84('0xc'));var Redis=require(_0xcb84('0xd'));var authService=require(_0xcb84('0xe'));var qs=require(_0xcb84('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xcb84('0x10'));var utils=require(_0xcb84('0x11'));var config=require(_0xcb84('0x12'));var licenseUtil=require(_0xcb84('0x13'));var db=require(_0xcb84('0x14'))['db'];config[_0xcb84('0x15')]=_[_0xcb84('0x16')](config[_0xcb84('0x15')],{'host':_0xcb84('0x17'),'port':0x18eb});var socket=require(_0xcb84('0x18'))(new Redis(config['redis']));require('./chatMessage.socket')['register'](socket);var jayson=require(_0xcb84('0x19'));var client=jayson[_0xcb84('0x1a')]['http']({'port':0x232c});var client9002=jayson[_0xcb84('0x1a')][_0xcb84('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x4ccb78,_0xae971f,_0x5968a2,_0x3891cd){return new BPromise(function(_0x94677c,_0x4721b0){var _0x1a849a=_0x3891cd||client;return _0x1a849a['request'](_0x4ccb78,_0x5968a2)[_0xcb84('0x1c')](function(_0x595f36){logger[_0xcb84('0x1d')](_0xcb84('0x1e'),_0xae971f,_0xcb84('0x1f'));logger[_0xcb84('0x20')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0xae971f,_0xcb84('0x1f'),JSON[_0xcb84('0x21')](_0x595f36));if(_0x595f36[_0xcb84('0x22')]){if(_0x595f36['error']['code']===0x1f4){logger[_0xcb84('0x22')]('ChatMessage,\x20%s,\x20%s',_0xae971f,_0x595f36[_0xcb84('0x22')][_0xcb84('0x23')]);return _0x4721b0(_0x595f36[_0xcb84('0x22')][_0xcb84('0x23')]);}logger[_0xcb84('0x22')](_0xcb84('0x1e'),_0xae971f,_0x595f36['error'][_0xcb84('0x23')]);return _0x94677c(_0x595f36[_0xcb84('0x22')][_0xcb84('0x23')]);}else{logger[_0xcb84('0x1d')](_0xcb84('0x1e'),_0xae971f,_0xcb84('0x1f'));_0x94677c(_0x595f36[_0xcb84('0x24')][_0xcb84('0x23')]);}})[_0xcb84('0x25')](function(_0x39055a){logger[_0xcb84('0x22')](_0xcb84('0x1e'),_0xae971f,_0x39055a);_0x4721b0(_0x39055a);});});}function respondWithStatusCode(_0x3343f2,_0x392c3d){_0x392c3d=_0x392c3d||0xcc;return function(_0x499938){if(_0x499938){return _0x3343f2['sendStatus'](_0x392c3d);}return _0x3343f2[_0xcb84('0x26')](_0x392c3d)[_0xcb84('0x27')]();};}function respondWithResult(_0x390e9c,_0x1215a2){_0x1215a2=_0x1215a2||0xc8;return function(_0x294f45){if(_0x294f45){return _0x390e9c[_0xcb84('0x26')](_0x1215a2)[_0xcb84('0x28')](_0x294f45);}};}function respondWithFilteredResult(_0x38d928,_0x163429){return function(_0x12a4ff){if(_0x12a4ff){var _0x58a061=typeof _0x163429['offset']===_0xcb84('0x29')&&typeof _0x163429[_0xcb84('0x2a')]===_0xcb84('0x29');var _0x4b2fa0=_0x12a4ff['count'];var _0x4a18f6=_0x58a061?0x0:_0x163429[_0xcb84('0x2b')];var _0x1ed994=_0x58a061?_0x12a4ff[_0xcb84('0x2c')]:_0x163429[_0xcb84('0x2b')]+_0x163429[_0xcb84('0x2a')];var _0x35fe12;if(_0x1ed994>=_0x4b2fa0){_0x1ed994=_0x4b2fa0;_0x35fe12=0xc8;}else{_0x35fe12=0xce;}_0x38d928[_0xcb84('0x26')](_0x35fe12);return _0x38d928[_0xcb84('0x2d')](_0xcb84('0x2e'),_0x4a18f6+'-'+_0x1ed994+'/'+_0x4b2fa0)[_0xcb84('0x28')](_0x12a4ff);}return null;};}function patchUpdates(_0x1ee2b5){return function(_0x2ca5a4){try{jsonpatch[_0xcb84('0x2f')](_0x2ca5a4,_0x1ee2b5,!![]);}catch(_0x15d80d){return BPromise[_0xcb84('0x30')](_0x15d80d);}return _0x2ca5a4[_0xcb84('0x31')]();};}function saveUpdates(_0xc258f8,_0x4ebe01){return function(_0x554f71){if(_0x554f71){return _0x554f71[_0xcb84('0x32')](_0xc258f8)[_0xcb84('0x1c')](function(_0x4058a5){return _0x4058a5;});}return null;};}function removeEntity(_0x4ac066,_0x4ca0aa){return function(_0x4655ec){if(_0x4655ec){return _0x4655ec[_0xcb84('0x33')]()[_0xcb84('0x1c')](function(){_0x4ac066[_0xcb84('0x26')](0xcc)[_0xcb84('0x27')]();});}};}function handleEntityNotFound(_0x32bc2e,_0x2fec13){return function(_0x50e307){if(!_0x50e307){_0x32bc2e[_0xcb84('0x34')](0x194);}return _0x50e307;};}function handleError(_0x3c23d2,_0x1dd82a){_0x1dd82a=_0x1dd82a||0x1f4;return function(_0x1ae9fc){logger[_0xcb84('0x22')](_0x1ae9fc['stack']);if(_0x1ae9fc[_0xcb84('0x35')]){delete _0x1ae9fc[_0xcb84('0x35')];}_0x3c23d2[_0xcb84('0x26')](_0x1dd82a)[_0xcb84('0x36')](_0x1ae9fc);};}exports[_0xcb84('0x37')]=function(_0x555c2e,_0x2acf52){var _0xaa62ee={},_0x1b7399={},_0x1fb8cb={'count':0x0,'rows':[]};var _0x150c49=_['map'](db[_0xcb84('0x38')][_0xcb84('0x39')],function(_0x364880){return{'name':_0x364880[_0xcb84('0x3a')],'type':_0x364880[_0xcb84('0x3b')][_0xcb84('0x3c')]};});_0x1b7399[_0xcb84('0x3d')]=_[_0xcb84('0x3e')](_0x150c49,_0xcb84('0x35'));_0x1b7399['query']=_[_0xcb84('0x3f')](_0x555c2e[_0xcb84('0x40')]);_0x1b7399[_0xcb84('0x41')]=_[_0xcb84('0x42')](_0x1b7399[_0xcb84('0x3d')],_0x1b7399[_0xcb84('0x40')]);_0xaa62ee[_0xcb84('0x43')]=_[_0xcb84('0x42')](_0x1b7399[_0xcb84('0x3d')],qs[_0xcb84('0x44')](_0x555c2e[_0xcb84('0x40')][_0xcb84('0x44')]));_0xaa62ee['attributes']=_0xaa62ee[_0xcb84('0x43')][_0xcb84('0x45')]?_0xaa62ee[_0xcb84('0x43')]:_0x1b7399[_0xcb84('0x3d')];if(!_0x555c2e[_0xcb84('0x40')]['hasOwnProperty'](_0xcb84('0x46'))){_0xaa62ee['limit']=qs[_0xcb84('0x2a')](_0x555c2e[_0xcb84('0x40')][_0xcb84('0x2a')]);_0xaa62ee[_0xcb84('0x2b')]=qs[_0xcb84('0x2b')](_0x555c2e[_0xcb84('0x40')][_0xcb84('0x2b')]);}_0xaa62ee[_0xcb84('0x47')]=qs[_0xcb84('0x48')](_0x555c2e['query'][_0xcb84('0x48')]);_0xaa62ee[_0xcb84('0x49')]=qs['filters'](_[_0xcb84('0x4a')](_0x555c2e[_0xcb84('0x40')],_0x1b7399['filters']),_0x150c49);if(_0x555c2e[_0xcb84('0x40')][_0xcb84('0x4b')]){_0xaa62ee[_0xcb84('0x49')]=_['merge'](_0xaa62ee[_0xcb84('0x49')],{'$or':_[_0xcb84('0x3e')](_0x150c49,function(_0x3a4731){if(_0x3a4731['type']!==_0xcb84('0x4c')){var _0x24f0a5={};_0x24f0a5[_0x3a4731[_0xcb84('0x35')]]={'$like':'%'+_0x555c2e[_0xcb84('0x40')][_0xcb84('0x4b')]+'%'};return _0x24f0a5;}})});}_0xaa62ee=_[_0xcb84('0x4d')]({},_0xaa62ee,_0x555c2e[_0xcb84('0x4e')]);var _0x17cdc1={'where':_0xaa62ee[_0xcb84('0x49')]};return db[_0xcb84('0x38')][_0xcb84('0x2c')](_0x17cdc1)[_0xcb84('0x1c')](function(_0x206251){_0x1fb8cb['count']=_0x206251;if(_0x555c2e['query'][_0xcb84('0x4f')]){_0xaa62ee[_0xcb84('0x50')]=[{'all':!![]}];}return db[_0xcb84('0x38')][_0xcb84('0x51')](_0xaa62ee);})[_0xcb84('0x1c')](function(_0x1b7f57){_0x1fb8cb[_0xcb84('0x52')]=_0x1b7f57;return _0x1fb8cb;})[_0xcb84('0x1c')](respondWithFilteredResult(_0x2acf52,_0xaa62ee))[_0xcb84('0x25')](handleError(_0x2acf52,null));};exports[_0xcb84('0x53')]=function(_0xc0fff4,_0x1daa86){var _0x2329cb={'raw':!![],'where':{'id':_0xc0fff4['params']['id']}},_0x1e3bee={};_0x1e3bee[_0xcb84('0x3d')]=_[_0xcb84('0x3f')](db[_0xcb84('0x38')][_0xcb84('0x39')]);_0x1e3bee[_0xcb84('0x40')]=_[_0xcb84('0x3f')](_0xc0fff4['query']);_0x1e3bee['filters']=_[_0xcb84('0x42')](_0x1e3bee[_0xcb84('0x3d')],_0x1e3bee[_0xcb84('0x40')]);_0x2329cb[_0xcb84('0x43')]=_[_0xcb84('0x42')](_0x1e3bee[_0xcb84('0x3d')],qs[_0xcb84('0x44')](_0xc0fff4['query'][_0xcb84('0x44')]));_0x2329cb[_0xcb84('0x43')]=_0x2329cb[_0xcb84('0x43')][_0xcb84('0x45')]?_0x2329cb[_0xcb84('0x43')]:_0x1e3bee[_0xcb84('0x3d')];if(_0xc0fff4[_0xcb84('0x40')][_0xcb84('0x4f')]){_0x2329cb[_0xcb84('0x50')]=[{'all':!![]}];}_0x2329cb=_['merge']({},_0x2329cb,_0xc0fff4[_0xcb84('0x4e')]);return db[_0xcb84('0x38')][_0xcb84('0x54')](_0x2329cb)[_0xcb84('0x1c')](handleEntityNotFound(_0x1daa86,null))[_0xcb84('0x1c')](respondWithResult(_0x1daa86,null))[_0xcb84('0x25')](handleError(_0x1daa86,null));};exports['create']=function(_0x46a9c4,_0x4a99e5){return db[_0xcb84('0x38')][_0xcb84('0x55')](_0x46a9c4[_0xcb84('0x56')],{})[_0xcb84('0x1c')](respondWithResult(_0x4a99e5,0xc9))[_0xcb84('0x25')](handleError(_0x4a99e5,null));};exports[_0xcb84('0x32')]=function(_0x5c9961,_0x1787bc){if(_0x5c9961[_0xcb84('0x56')]['id']){delete _0x5c9961[_0xcb84('0x56')]['id'];}return db['ChatMessage'][_0xcb84('0x54')]({'where':{'id':_0x5c9961[_0xcb84('0x57')]['id']}})['then'](handleEntityNotFound(_0x1787bc,null))[_0xcb84('0x1c')](saveUpdates(_0x5c9961[_0xcb84('0x56')],null))[_0xcb84('0x1c')](respondWithResult(_0x1787bc,null))['catch'](handleError(_0x1787bc,null));};exports[_0xcb84('0x33')]=function(_0x5ab856,_0x20ffbe){return db[_0xcb84('0x38')][_0xcb84('0x54')]({'where':{'id':_0x5ab856[_0xcb84('0x57')]['id']}})['then'](handleEntityNotFound(_0x20ffbe,null))[_0xcb84('0x1c')](removeEntity(_0x20ffbe,null))[_0xcb84('0x25')](handleError(_0x20ffbe,null));};exports[_0xcb84('0x58')]=function(_0x1bdd2c,_0x210bc4){return db[_0xcb84('0x38')][_0xcb84('0x58')]()[_0xcb84('0x1c')](respondWithResult(_0x210bc4,null))[_0xcb84('0x25')](handleError(_0x210bc4,null));};var interaction_log=require(_0xcb84('0x59'))('chat-interactions');exports[_0xcb84('0x5a')]=function(_0x55f4da,_0xabc662,_0x187e76){var _0x3be1b0={'agent':{},'channel':_0xcb84('0x5b')};if(_0x55f4da[_0xcb84('0x56')]['id']){delete _0x55f4da['body']['id'];}_0x55f4da[_0xcb84('0x56')][_0xcb84('0x5c')]=!![];_0x55f4da['body'][_0xcb84('0x5d')]=moment()[_0xcb84('0x5e')](_0xcb84('0x5f'));_0x55f4da[_0xcb84('0x56')][_0xcb84('0x60')]=_0x55f4da['body']['UserId']||_0x55f4da['user']['id'];_0x3be1b0[_0xcb84('0x61')]['id']=_0x55f4da[_0xcb84('0x56')][_0xcb84('0x60')];return db[_0xcb84('0x38')][_0xcb84('0x54')]({'where':{'id':_0x55f4da[_0xcb84('0x57')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0xabc662,null))['then'](saveUpdates(_0x55f4da['body'],null))[_0xcb84('0x1c')](function(_0x3c689e){if(_0x3c689e){_0x3be1b0[_0xcb84('0x23')]=_0x3c689e[_0xcb84('0x62')]({'plain':!![]});return db[_0xcb84('0x63')][_0xcb84('0x54')]({'where':{'id':_0x3c689e[_0xcb84('0x64')]}});}return null;})[_0xcb84('0x1c')](handleEntityNotFound(_0xabc662,null))[_0xcb84('0x1c')](function(_0x26f8f7){if(_0x26f8f7){return _0x26f8f7['update']({'UserId':_0x55f4da[_0xcb84('0x56')][_0xcb84('0x60')],'read1stAt':_[_0xcb84('0x65')](_0x26f8f7[_0xcb84('0x66')])?moment()[_0xcb84('0x5e')](_0xcb84('0x5f')):undefined});}return null;})['then'](function(_0x3777b4){if(_0x3777b4){_0x3be1b0[_0xcb84('0x67')]=_0x3777b4['get']({'plain':!![]});interaction_log['info'](_0xcb84('0x68'),_0x55f4da['user']['id'],_0x55f4da['user']['name'],_0x55f4da[_0xcb84('0x69')][_0xcb84('0x6a')],_0x3be1b0[_0xcb84('0x67')]['id'],_0x55f4da[_0xcb84('0x56')]?JSON[_0xcb84('0x21')](_0x55f4da[_0xcb84('0x56')]):'null');return respondWithRpcPromise(_0xcb84('0x6b'),'acceptMessage',_0x3be1b0);}return null;})['then'](function(_0x8dea05){var _0x2a7752=_0xcb84('0x6c')+_0x8dea05[_0xcb84('0x23')][_0xcb84('0x6d')];return db[_0xcb84('0x6e')]['query'](_0x2a7752,{'type':db[_0xcb84('0x6f')][_0xcb84('0x70')][_0xcb84('0x71')],'raw':!![]})[_0xcb84('0x1c')](function(_0x2f110f){return _0x2f110f;});})[_0xcb84('0x1c')](function(_0x3a31b1){if(_0x3a31b1){_0x3be1b0[_0xcb84('0x23')][_0xcb84('0x72')]=_0x3a31b1[0x0];if(!_0x55f4da[_0xcb84('0x56')][_0xcb84('0x60')])return;return db[_0xcb84('0x73')][_0xcb84('0x54')]({'where':{'id':_0x55f4da[_0xcb84('0x56')][_0xcb84('0x60')],'role':'agent'},'attributes':['id',_0xcb84('0x35'),_0xcb84('0x74'),'email',_0xcb84('0x75')],'raw':!![]});}return null;})['then'](function(_0x5313ec){if(!_0x5313ec)return null;_0x3be1b0[_0xcb84('0x23')][_0xcb84('0x61')]=_0x5313ec;return _0x3be1b0;})[_0xcb84('0x1c')](function(_0x5ea044){if(_0x5ea044){if(_0x55f4da[_0xcb84('0x56')]['manual']){_0x3be1b0['message']['interface']=util[_0xcb84('0x5e')](_0xcb84('0x76'),_0x55f4da[_0xcb84('0x69')]['name']);_0x3be1b0['message'][_0xcb84('0x77')]=_0x3be1b0[_0xcb84('0x77')];_0x3be1b0[_0xcb84('0x23')][_0xcb84('0x78')]=_0x3be1b0[_0xcb84('0x77')];_0x3be1b0['message'][_0xcb84('0x79')]='accept';return respondWithRpcPromise(_0xcb84('0x7a'),_0xcb84('0x7a'),{'event':'acceptmessage','message':_[_0xcb84('0x4d')](_0x3be1b0[_0xcb84('0x23')],JSON[_0xcb84('0x7b')](_0x3be1b0['interaction'][_0xcb84('0x7c')]))},client9002)[_0xcb84('0x1c')](function(){return _0x3be1b0;});}return _0x3be1b0;}return null;})[_0xcb84('0x1c')](respondWithResult(_0xabc662,null))[_0xcb84('0x25')](handleError(_0xabc662,null));};var interaction_log=require(_0xcb84('0x59'))(_0xcb84('0x7d'));exports[_0xcb84('0x30')]=function(_0x88cba6,_0x57404a,_0x11e1c6){var _0x30910c={'agent':{},'channel':'chat'};if(_0x88cba6[_0xcb84('0x56')]['id']){delete _0x88cba6[_0xcb84('0x56')]['id'];}_0x88cba6['body'][_0xcb84('0x60')]=_0x88cba6[_0xcb84('0x56')][_0xcb84('0x60')]||_0x88cba6[_0xcb84('0x69')]['id'];_0x30910c[_0xcb84('0x61')]['id']=_0x88cba6[_0xcb84('0x56')][_0xcb84('0x60')];return db[_0xcb84('0x38')][_0xcb84('0x54')]({'where':{'id':_0x88cba6[_0xcb84('0x57')]['id'],'UserId':null}})[_0xcb84('0x1c')](handleEntityNotFound(_0x57404a,null))['then'](function(_0x162422){if(_0x162422){_0x30910c[_0xcb84('0x23')]=_0x162422[_0xcb84('0x62')]({'plain':!![]});return db[_0xcb84('0x63')]['find']({'where':{'id':_0x162422[_0xcb84('0x64')]}});}return null;})['then'](handleEntityNotFound(_0x57404a,null))[_0xcb84('0x1c')](function(_0x10f7da){if(_0x10f7da){_0x30910c[_0xcb84('0x67')]=_0x10f7da[_0xcb84('0x62')]({'plain':!![]});interaction_log[_0xcb84('0x1d')](_0xcb84('0x7e'),_0x88cba6[_0xcb84('0x69')]['id'],_0x88cba6[_0xcb84('0x69')][_0xcb84('0x35')],_0x88cba6[_0xcb84('0x69')]['role'],_0x30910c[_0xcb84('0x67')]['id'],_0x88cba6[_0xcb84('0x56')]?JSON['stringify'](_0x88cba6[_0xcb84('0x56')]):_0xcb84('0x7f'));return respondWithRpcPromise(_0xcb84('0x80'),_0xcb84('0x81'),_0x30910c);}return null;})[_0xcb84('0x1c')](function(_0x2ff887){var _0x55cab1='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2ff887[_0xcb84('0x23')][_0xcb84('0x6d')];return db[_0xcb84('0x6e')][_0xcb84('0x40')](_0x55cab1,{'type':db['Sequelize'][_0xcb84('0x70')][_0xcb84('0x71')],'raw':!![]})[_0xcb84('0x1c')](function(_0x1f627c){return _0x1f627c;});})['then'](function(_0x40c228){if(_0x40c228){_0x30910c[_0xcb84('0x23')][_0xcb84('0x72')]=_0x40c228[0x0];if(!_0x88cba6[_0xcb84('0x56')][_0xcb84('0x60')])return;return db['User'][_0xcb84('0x54')]({'where':{'id':_0x88cba6[_0xcb84('0x56')][_0xcb84('0x60')],'role':_0xcb84('0x61')},'attributes':['id',_0xcb84('0x35'),_0xcb84('0x74'),_0xcb84('0x82'),_0xcb84('0x75')],'raw':!![]});}return null;})[_0xcb84('0x1c')](function(_0x3bb807){if(!_0x3bb807)return null;_0x30910c[_0xcb84('0x23')][_0xcb84('0x61')]=_0x3bb807;return _0x30910c;})[_0xcb84('0x1c')](function(_0x560d55){if(_0x560d55){_0x560d55[_0xcb84('0x23')][_0xcb84('0x83')]=util[_0xcb84('0x5e')]('SIP/%s',_0x88cba6[_0xcb84('0x69')][_0xcb84('0x35')]);_0x560d55[_0xcb84('0x23')][_0xcb84('0x77')]=_0x30910c[_0xcb84('0x77')];_0x560d55[_0xcb84('0x23')]['motionChannel']=_0x30910c[_0xcb84('0x77')];_0x560d55[_0xcb84('0x23')][_0xcb84('0x79')]='reject';respondWithRpcPromise(_0xcb84('0x7a'),_0xcb84('0x7a'),{'event':'rejectmessage','message':_['merge'](_0x30910c['message'],JSON[_0xcb84('0x7b')](_0x30910c[_0xcb84('0x67')][_0xcb84('0x7c')]))},client9002);return _0x30910c;}return null;})[_0xcb84('0x1c')](respondWithResult(_0x57404a,null))[_0xcb84('0x25')](handleError(_0x57404a,null));};
\ No newline at end of file
index 8a52273..bb71a2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6da5=['hasOwnProperty','hook','events','../../mysqldb','ChatMessage','setMaxListeners','save','remove','emit'];(function(_0x2e748c,_0x55ec8e){var _0x37e219=function(_0x38c784){while(--_0x38c784){_0x2e748c['push'](_0x2e748c['shift']());}};_0x37e219(++_0x55ec8e);}(_0x6da5,0x1bb));var _0x56da=function(_0x54bf1d,_0x96319e){_0x54bf1d=_0x54bf1d-0x0;var _0x4e9ae6=_0x6da5[_0x54bf1d];return _0x4e9ae6;};'use strict';var EventEmitter=require(_0x56da('0x0'));var ChatMessage=require(_0x56da('0x1'))['db'][_0x56da('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x56da('0x3')](0x0);var events={'afterCreate':_0x56da('0x4'),'afterUpdate':'update','afterDestroy':_0x56da('0x5')};function emitEvent(_0x2daff2){return function(_0x2ade35,_0x3f057c,_0x398bfb){ChatMessageEvents['emit'](_0x2daff2+':'+_0x2ade35['id'],_0x2ade35);ChatMessageEvents[_0x56da('0x6')](_0x2daff2,_0x2ade35);_0x398bfb(null);};}for(var e in events){if(events[_0x56da('0x7')](e)){var event=events[e];ChatMessage[_0x56da('0x8')](e,emitEvent(event));}}module['exports']=ChatMessageEvents;
\ No newline at end of file
+var _0xaa95=['exports','events','../../mysqldb','ChatMessage','setMaxListeners','emit'];(function(_0xd22792,_0x3deea5){var _0x20563a=function(_0x27a095){while(--_0x27a095){_0xd22792['push'](_0xd22792['shift']());}};_0x20563a(++_0x3deea5);}(_0xaa95,0x115));var _0x5aa9=function(_0x4dfbe1,_0x12bdce){_0x4dfbe1=_0x4dfbe1-0x0;var _0x507f8b=_0xaa95[_0x4dfbe1];return _0x507f8b;};'use strict';var EventEmitter=require(_0x5aa9('0x0'));var ChatMessage=require(_0x5aa9('0x1'))['db'][_0x5aa9('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x5aa9('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x444b29){return function(_0x1e52ce,_0xd9f300,_0x46a5de){ChatMessageEvents[_0x5aa9('0x4')](_0x444b29+':'+_0x1e52ce['id'],_0x1e52ce);ChatMessageEvents[_0x5aa9('0x4')](_0x444b29,_0x1e52ce);_0x46a5de(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage['hook'](e,emitEvent(event));}}module[_0x5aa9('0x5')]=ChatMessageEvents;
\ No newline at end of file
index 3604978..4d70a69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe5e=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','fti_chat_messages','body','FULLTEXT','direction','toLowerCase','out','secret','isNil','ChatInteraction','then','update','createdAt','error','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger'];(function(_0x2a4144,_0xdd438f){var _0x26722b=function(_0x1634f3){while(--_0x1634f3){_0x2a4144['push'](_0x2a4144['shift']());}};_0x26722b(++_0xdd438f);}(_0xfe5e,0x186));var _0xefe5=function(_0x340c13,_0x595d66){_0x340c13=_0x340c13-0x0;var _0x5a7d96=_0xfe5e[_0x340c13];return _0x5a7d96;};'use strict';var _=require(_0xefe5('0x0'));var util=require('util');var logger=require(_0xefe5('0x1'))('api');var moment=require(_0xefe5('0x2'));var BPromise=require(_0xefe5('0x3'));var rp=require(_0xefe5('0x4'));var fs=require('fs');var path=require(_0xefe5('0x5'));var rimraf=require(_0xefe5('0x6'));var config=require(_0xefe5('0x7'));var attributes=require(_0xefe5('0x8'));module[_0xefe5('0x9')]=function(_0x3b6107,_0x1f3989){return _0x3b6107[_0xefe5('0xa')](_0xefe5('0xb'),attributes,{'tableName':_0xefe5('0xc'),'paranoid':![],'indexes':[{'name':_0xefe5('0xd'),'fields':[_0xefe5('0xe')],'type':_0xefe5('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5a7cad,_0x59a9b0,_0x5372ad){var _0x45ddc6=_0x3b6107['models'];var _0x5bcbfc=_0x5a7cad['get']({'plain':!![]});if(_0x5bcbfc[_0xefe5('0x10')][_0xefe5('0x11')]()==='in'||_0x5bcbfc['direction'][_0xefe5('0x11')]()===_0xefe5('0x12')&&!_0x5bcbfc[_0xefe5('0x13')]&&!_[_0xefe5('0x14')](_0x5bcbfc['UserId'])){_0x45ddc6[_0xefe5('0x15')]['findOne']({'where':{'id':_0x5bcbfc['ChatInteractionId']}})[_0xefe5('0x16')](function(_0x18dc3a){if(_0x18dc3a){_0x18dc3a[_0xefe5('0x17')]({'lastMsgAt':_0x5bcbfc[_0xefe5('0x18')],'lastMsgDirection':_0x5bcbfc[_0xefe5('0x10')][_0xefe5('0x11')]()});}})['catch'](function(_0x2de34e){console[_0xefe5('0x19')](_0x2de34e);});}_0x5372ad();}},'charset':_0xefe5('0x1a'),'collate':_0xefe5('0x1b')});};
\ No newline at end of file
+var _0x4d2a=['UserId','ChatInteraction','findOne','ChatInteractionId','then','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','path','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','fti_chat_messages','body','FULLTEXT','models','direction','toLowerCase','secret','isNil'];(function(_0xcbf392,_0x18ad25){var _0x22477b=function(_0x2fcb6a){while(--_0x2fcb6a){_0xcbf392['push'](_0xcbf392['shift']());}};_0x22477b(++_0x18ad25);}(_0x4d2a,0x1cc));var _0xa4d2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4d2a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa4d2('0x0'));var util=require(_0xa4d2('0x1'));var logger=require(_0xa4d2('0x2'))(_0xa4d2('0x3'));var moment=require(_0xa4d2('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa4d2('0x5'));var rimraf=require('rimraf');var config=require(_0xa4d2('0x6'));var attributes=require(_0xa4d2('0x7'));module[_0xa4d2('0x8')]=function(_0x50c26a,_0x4f860f){return _0x50c26a[_0xa4d2('0x9')](_0xa4d2('0xa'),attributes,{'tableName':_0xa4d2('0xb'),'paranoid':![],'indexes':[{'name':_0xa4d2('0xc'),'fields':[_0xa4d2('0xd')],'type':_0xa4d2('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x245eb3,_0x54c9ce,_0x36d3b3){var _0x1da0b5=_0x50c26a[_0xa4d2('0xf')];var _0x3dd797=_0x245eb3['get']({'plain':!![]});if(_0x3dd797[_0xa4d2('0x10')][_0xa4d2('0x11')]()==='in'||_0x3dd797[_0xa4d2('0x10')][_0xa4d2('0x11')]()==='out'&&!_0x3dd797[_0xa4d2('0x12')]&&!_[_0xa4d2('0x13')](_0x3dd797[_0xa4d2('0x14')])){_0x1da0b5[_0xa4d2('0x15')][_0xa4d2('0x16')]({'where':{'id':_0x3dd797[_0xa4d2('0x17')]}})[_0xa4d2('0x18')](function(_0x58b969){if(_0x58b969){_0x58b969['update']({'lastMsgAt':_0x3dd797[_0xa4d2('0x19')],'lastMsgDirection':_0x3dd797[_0xa4d2('0x10')][_0xa4d2('0x11')]()});}})[_0xa4d2('0x1a')](function(_0x223bbc){console[_0xa4d2('0x1b')](_0x223bbc);});}_0x36d3b3();}},'charset':_0xa4d2('0x1c'),'collate':_0xa4d2('0x1d')});};
\ No newline at end of file
index 12ccec1..9cda6f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbbc=['message','result','catch','ChatMessage','create','body','options','raw','info','CreateChatMessage','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','defaults','redis','localhost','./chatMessage.socket','register','then','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x11a0b0,_0x13077c){var _0x1382e6=function(_0x562ed0){while(--_0x562ed0){_0x11a0b0['push'](_0x11a0b0['shift']());}};_0x1382e6(++_0x13077c);}(_0xfbbc,0x86));var _0xcfbb=function(_0x1f3b06,_0xffc69a){_0x1f3b06=_0x1f3b06-0x0;var _0x4f198e=_0xfbbc[_0x1f3b06];return _0x4f198e;};'use strict';var _=require(_0xcfbb('0x0'));var util=require(_0xcfbb('0x1'));var moment=require(_0xcfbb('0x2'));var BPromise=require(_0xcfbb('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcfbb('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xcfbb('0x5'))('rpc');var config=require(_0xcfbb('0x6'));var jayson=require(_0xcfbb('0x7'));var client=jayson['client'][_0xcfbb('0x8')]({'port':0x232a});config['redis']=_[_0xcfbb('0x9')](config[_0xcfbb('0xa')],{'host':_0xcfbb('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcfbb('0xa')]));require(_0xcfbb('0xc'))[_0xcfbb('0xd')](socket);function respondWithRpcPromise(_0x1f08c6,_0x3a0a4a,_0x384e19){return new BPromise(function(_0x4003d4,_0x5ee8c2){return client['request'](_0x1f08c6,_0x384e19)[_0xcfbb('0xe')](function(_0x2ac18e){logger['info'](_0xcfbb('0xf'),_0x3a0a4a,_0xcfbb('0x10'));logger[_0xcfbb('0x11')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x3a0a4a,_0xcfbb('0x10'),JSON[_0xcfbb('0x12')](_0x2ac18e));if(_0x2ac18e[_0xcfbb('0x13')]){if(_0x2ac18e['error'][_0xcfbb('0x14')]===0x1f4){logger[_0xcfbb('0x13')](_0xcfbb('0xf'),_0x3a0a4a,_0x2ac18e[_0xcfbb('0x13')]['message']);return _0x5ee8c2(_0x2ac18e[_0xcfbb('0x13')][_0xcfbb('0x15')]);}logger[_0xcfbb('0x13')]('ChatMessage,\x20%s,\x20%s',_0x3a0a4a,_0x2ac18e[_0xcfbb('0x13')]['message']);return _0x4003d4(_0x2ac18e[_0xcfbb('0x13')]['message']);}else{logger['info']('ChatMessage,\x20%s,\x20%s',_0x3a0a4a,_0xcfbb('0x10'));_0x4003d4(_0x2ac18e[_0xcfbb('0x16')][_0xcfbb('0x15')]);}})[_0xcfbb('0x17')](function(_0x4183f7){logger['error'](_0xcfbb('0xf'),_0x3a0a4a,_0x4183f7);_0x5ee8c2(_0x4183f7);});});}exports['CreateChatMessage']=function(_0xa4404a){var _0x3d2715=this;return new Promise(function(_0x1322ac,_0x2a63c5){return db[_0xcfbb('0x18')][_0xcfbb('0x19')](_0xa4404a[_0xcfbb('0x1a')],{'raw':_0xa4404a[_0xcfbb('0x1b')]?_0xa4404a[_0xcfbb('0x1b')][_0xcfbb('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x283aed){logger[_0xcfbb('0x1d')](_0xcfbb('0x1e'),_0xa4404a);logger[_0xcfbb('0x11')](_0xcfbb('0x1e'),_0xa4404a,JSON[_0xcfbb('0x12')](_0x283aed));_0x1322ac(_0x283aed);})[_0xcfbb('0x17')](function(_0x20c045){logger[_0xcfbb('0x13')]('CreateChatMessage',_0x20c045['message'],_0xa4404a);_0x2a63c5(_0x3d2715[_0xcfbb('0x13')](0x1f4,_0x20c045[_0xcfbb('0x15')]));});});};
\ No newline at end of file
+var _0xf322=['redis','defaults','./chatMessage.socket','request','info','ChatMessage,\x20%s,\x20%s','debug','request\x20sent','error','code','message','catch','CreateChatMessage','ChatMessage','create','body','options','raw','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x497e1a,_0x39bf4e){var _0x6e5280=function(_0x20165c){while(--_0x20165c){_0x497e1a['push'](_0x497e1a['shift']());}};_0x6e5280(++_0x39bf4e);}(_0xf322,0x1b7));var _0x2f32=function(_0x3100cf,_0x287c5d){_0x3100cf=_0x3100cf-0x0;var _0x33e4e5=_0xf322[_0x3100cf];return _0x33e4e5;};'use strict';var _=require(_0x2f32('0x0'));var util=require(_0x2f32('0x1'));var moment=require('moment');var BPromise=require(_0x2f32('0x2'));var rs=require(_0x2f32('0x3'));var fs=require('fs');var Redis=require(_0x2f32('0x4'));var db=require(_0x2f32('0x5'))['db'];var utils=require(_0x2f32('0x6'));var logger=require(_0x2f32('0x7'))('rpc');var config=require(_0x2f32('0x8'));var jayson=require(_0x2f32('0x9'));var client=jayson[_0x2f32('0xa')]['http']({'port':0x232a});config[_0x2f32('0xb')]=_[_0x2f32('0xc')](config[_0x2f32('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2f32('0xb')]));require(_0x2f32('0xd'))['register'](socket);function respondWithRpcPromise(_0x5d970f,_0x210e42,_0x52f466){return new BPromise(function(_0x235222,_0x5eeb24){return client[_0x2f32('0xe')](_0x5d970f,_0x52f466)['then'](function(_0x5b106f){logger[_0x2f32('0xf')](_0x2f32('0x10'),_0x210e42,'request\x20sent');logger[_0x2f32('0x11')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x210e42,_0x2f32('0x12'),JSON['stringify'](_0x5b106f));if(_0x5b106f['error']){if(_0x5b106f[_0x2f32('0x13')][_0x2f32('0x14')]===0x1f4){logger[_0x2f32('0x13')](_0x2f32('0x10'),_0x210e42,_0x5b106f[_0x2f32('0x13')][_0x2f32('0x15')]);return _0x5eeb24(_0x5b106f[_0x2f32('0x13')][_0x2f32('0x15')]);}logger[_0x2f32('0x13')](_0x2f32('0x10'),_0x210e42,_0x5b106f[_0x2f32('0x13')][_0x2f32('0x15')]);return _0x235222(_0x5b106f['error'][_0x2f32('0x15')]);}else{logger[_0x2f32('0xf')]('ChatMessage,\x20%s,\x20%s',_0x210e42,_0x2f32('0x12'));_0x235222(_0x5b106f['result'][_0x2f32('0x15')]);}})[_0x2f32('0x16')](function(_0x25baca){logger[_0x2f32('0x13')](_0x2f32('0x10'),_0x210e42,_0x25baca);_0x5eeb24(_0x25baca);});});}exports[_0x2f32('0x17')]=function(_0x4c1db6){var _0x145137=this;return new Promise(function(_0x5c8630,_0x513df1){return db[_0x2f32('0x18')][_0x2f32('0x19')](_0x4c1db6[_0x2f32('0x1a')],{'raw':_0x4c1db6[_0x2f32('0x1b')]?_0x4c1db6[_0x2f32('0x1b')][_0x2f32('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x277c31){logger[_0x2f32('0xf')](_0x2f32('0x17'),_0x4c1db6);logger[_0x2f32('0x11')](_0x2f32('0x17'),_0x4c1db6,JSON[_0x2f32('0x1d')](_0x277c31));_0x5c8630(_0x277c31);})['catch'](function(_0x295e64){logger[_0x2f32('0x13')]('CreateChatMessage',_0x295e64[_0x2f32('0x15')],_0x4c1db6);_0x513df1(_0x145137[_0x2f32('0x13')](0x1f4,_0x295e64['message']));});});};
\ No newline at end of file
index fae2f7a..a242ea3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3831=['removeListener','chatMessage:','./chatMessage.events','remove','update'];(function(_0x14bd4e,_0x57d937){var _0x95efc0=function(_0x3ba244){while(--_0x3ba244){_0x14bd4e['push'](_0x14bd4e['shift']());}};_0x95efc0(++_0x57d937);}(_0x3831,0x14c));var _0x1383=function(_0x281e5e,_0xf320e2){_0x281e5e=_0x281e5e-0x0;var _0x5a22d2=_0x3831[_0x281e5e];return _0x5a22d2;};'use strict';var ChatMessageEvents=require(_0x1383('0x0'));var events=['save',_0x1383('0x1'),_0x1383('0x2')];function createListener(_0x3a25fd,_0x15e6b5){return function(_0x391bef){_0x15e6b5['emit'](_0x3a25fd,_0x391bef);};}function removeListener(_0x2fdf72,_0x573874){return function(){ChatMessageEvents[_0x1383('0x3')](_0x2fdf72,_0x573874);};}exports['register']=function(_0x5b64b1){for(var _0x5eb4d8=0x0,_0x45a030=events['length'];_0x5eb4d8<_0x45a030;_0x5eb4d8++){var _0x187027=events[_0x5eb4d8];var _0x1ddd4c=createListener(_0x1383('0x4')+_0x187027,_0x5b64b1);ChatMessageEvents['on'](_0x187027,_0x1ddd4c);}};
\ No newline at end of file
+var _0xc949=['chatMessage:','./chatMessage.events','remove','update','emit','removeListener','register','length'];(function(_0x178c03,_0x31c7b2){var _0x13e510=function(_0x2f551a){while(--_0x2f551a){_0x178c03['push'](_0x178c03['shift']());}};_0x13e510(++_0x31c7b2);}(_0xc949,0x181));var _0x9c94=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0xc949[_0x376b45];return _0x2341b3;};'use strict';var ChatMessageEvents=require(_0x9c94('0x0'));var events=['save',_0x9c94('0x1'),_0x9c94('0x2')];function createListener(_0x209cd8,_0x27613f){return function(_0x54facf){_0x27613f[_0x9c94('0x3')](_0x209cd8,_0x54facf);};}function removeListener(_0x231762,_0x528a17){return function(){ChatMessageEvents[_0x9c94('0x4')](_0x231762,_0x528a17);};}exports[_0x9c94('0x5')]=function(_0x46d560){for(var _0x1357ac=0x0,_0x57fcd7=events[_0x9c94('0x6')];_0x1357ac<_0x57fcd7;_0x1357ac++){var _0x360e7b=events[_0x1357ac];var _0x25ecd0=createListener(_0x9c94('0x7')+_0x360e7b,_0x46d560);ChatMessageEvents['on'](_0x360e7b,_0x25ecd0);}};
\ No newline at end of file
index fc00800..fb68615 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb87d=['chatmessage:create','create','put','update','/:id/accept','accept','/:id/reject','delete','destroy','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','tracked','chat'];(function(_0x584ef7,_0x53af65){var _0x4fb297=function(_0x4ace4b){while(--_0x4ace4b){_0x584ef7['push'](_0x584ef7['shift']());}};_0x4fb297(++_0x53af65);}(_0xb87d,0x14b));var _0xdb87=function(_0x18b208,_0xc61865){_0x18b208=_0x18b208-0x0;var _0x51c026=_0xb87d[_0x18b208];return _0x51c026;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xdb87('0x0'));var timeout=require(_0xdb87('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xdb87('0x2'));var auth=require(_0xdb87('0x3'));var interaction=require(_0xdb87('0x4'));var config=require(_0xdb87('0x5'));var controller=require('./chatMessage.controller');router[_0xdb87('0x6')]('/',auth['isAuthenticated'](),controller[_0xdb87('0x7')]);router[_0xdb87('0x6')](_0xdb87('0x8'),auth[_0xdb87('0x9')](),controller[_0xdb87('0xa')]);router[_0xdb87('0x6')](_0xdb87('0xb'),auth[_0xdb87('0x9')](),controller['show']);router['post']('/',auth[_0xdb87('0x9')](),interaction[_0xdb87('0xc')](_0xdb87('0xd'),_0xdb87('0xe')),controller[_0xdb87('0xf')]);router[_0xdb87('0x10')]('/:id',controller[_0xdb87('0x11')]);router['put'](_0xdb87('0x12'),auth['isAuthenticated'](),controller[_0xdb87('0x13')]);router[_0xdb87('0x10')](_0xdb87('0x14'),auth[_0xdb87('0x9')](),controller['reject']);router[_0xdb87('0x15')](_0xdb87('0xb'),auth[_0xdb87('0x9')](),controller[_0xdb87('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xc229=['../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id','show','tracked','chat','chatmessage:create','create','put','update','/:id/accept','accept','destroy','util','path','Router','fs-extra','../../components/auth/service'];(function(_0x6cf19c,_0x2f3f02){var _0xce14f3=function(_0x474587){while(--_0x474587){_0x6cf19c['push'](_0x6cf19c['shift']());}};_0xce14f3(++_0x2f3f02);}(_0xc229,0x199));var _0x9c22=function(_0x4882f4,_0x3a5bbb){_0x4882f4=_0x4882f4-0x0;var _0x5c6f2c=_0xc229[_0x4882f4];return _0x5c6f2c;};'use strict';var multer=require('multer');var util=require(_0x9c22('0x0'));var path=require(_0x9c22('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x9c22('0x2')]();var fs_extra=require(_0x9c22('0x3'));var auth=require(_0x9c22('0x4'));var interaction=require(_0x9c22('0x5'));var config=require(_0x9c22('0x6'));var controller=require('./chatMessage.controller');router['get']('/',auth[_0x9c22('0x7')](),controller[_0x9c22('0x8')]);router[_0x9c22('0x9')](_0x9c22('0xa'),auth[_0x9c22('0x7')](),controller[_0x9c22('0xb')]);router[_0x9c22('0x9')](_0x9c22('0xc'),auth[_0x9c22('0x7')](),controller[_0x9c22('0xd')]);router['post']('/',auth[_0x9c22('0x7')](),interaction[_0x9c22('0xe')](_0x9c22('0xf'),_0x9c22('0x10')),controller[_0x9c22('0x11')]);router[_0x9c22('0x12')](_0x9c22('0xc'),controller[_0x9c22('0x13')]);router[_0x9c22('0x12')](_0x9c22('0x14'),auth[_0x9c22('0x7')](),controller[_0x9c22('0x15')]);router['put']('/:id/reject',auth[_0x9c22('0x7')](),controller['reject']);router['delete'](_0x9c22('0xc'),auth[_0x9c22('0x7')](),controller[_0x9c22('0x16')]);module['exports']=router;
\ No newline at end of file
index b3fc340..dae0441 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76b3=['TEXT','sequelize','exports'];(function(_0x27a25c,_0x36f490){var _0x1e8b09=function(_0x43de11){while(--_0x43de11){_0x27a25c['push'](_0x27a25c['shift']());}};_0x1e8b09(++_0x36f490);}(_0x76b3,0x142));var _0x376b=function(_0x27cdf5,_0x46509c){_0x27cdf5=_0x27cdf5-0x0;var _0x530a75=_0x76b3[_0x27cdf5];return _0x530a75;};'use strict';var Sequelize=require(_0x376b('0x0'));module[_0x376b('0x1')]={'body':{'type':Sequelize[_0x376b('0x2')]('medium'),'allowNull':![]}};
\ No newline at end of file
+var _0xe080=['TEXT','medium','exports'];(function(_0x4de72a,_0x4f89f0){var _0x486004=function(_0x49813d){while(--_0x49813d){_0x4de72a['push'](_0x4de72a['shift']());}};_0x486004(++_0x4f89f0);}(_0xe080,0x1a6));var _0x0e08=function(_0x13971b,_0x149588){_0x13971b=_0x13971b-0x0;var _0x558d1c=_0xe080[_0x13971b];return _0x558d1c;};'use strict';var Sequelize=require('sequelize');module[_0x0e08('0x0')]={'body':{'type':Sequelize[_0x0e08('0x1')](_0x0e08('0x2')),'allowNull':![]}};
\ No newline at end of file
index bd7f0be..cee874b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','Attachment','join','server','attachments','offline-chat','basename','remove','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','ChatOfflineMessage','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x3ce3c,_0x319337){var _0x55a2c9=function(_0x1568d0){while(--_0x1568d0){_0x3ce3c['push'](_0x3ce3c['shift']());}};_0x55a2c9(++_0x319337);}(_0x7a54,0x106));var _0x47a5=function(_0x7811e2,_0x5940bc){_0x7811e2=_0x7811e2-0x0;var _0x5493ec=_0x7a54[_0x7811e2];return _0x5493ec;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
+var _0x7a54=['filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','Attachment','join','server','attachments','offline-chat','basename','remove','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','ChatOfflineMessage','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0x7a54,0x106));var _0x47a5=function(_0x32aade,_0x24d5db){_0x32aade=_0x32aade-0x0;var _0x148ef7=_0x7a54[_0x32aade];return _0x148ef7;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
index f403a14..2884178 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87f6=['bluebird','path','rimraf','./chatOfflineMessage.attributes','define','ChatOfflineMessage','chat_offline_messages','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','moment'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0x87f6,0xed));var _0x687f=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x87f6[_0x397e5f];return _0x5302b8;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x687f('0x0'))(_0x687f('0x1'));var moment=require(_0x687f('0x2'));var BPromise=require(_0x687f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x687f('0x4'));var rimraf=require(_0x687f('0x5'));var config=require('../../config/environment');var attributes=require(_0x687f('0x6'));module['exports']=function(_0x1111d3,_0x213e56){return _0x1111d3[_0x687f('0x7')](_0x687f('0x8'),attributes,{'tableName':_0x687f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x687f('0xa'),'collate':_0x687f('0xb')});};
\ No newline at end of file
+var _0x418c=['../../config/environment','define','ChatOfflineMessage','chat_offline_messages','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x5130aa,_0x441b77){var _0x125ec6=function(_0x4d3bf2){while(--_0x4d3bf2){_0x5130aa['push'](_0x5130aa['shift']());}};_0x125ec6(++_0x441b77);}(_0x418c,0x164));var _0xc418=function(_0x239a99,_0x19e74b){_0x239a99=_0x239a99-0x0;var _0x506dc2=_0x418c[_0x239a99];return _0x506dc2;};'use strict';var _=require('lodash');var util=require(_0xc418('0x0'));var logger=require(_0xc418('0x1'))(_0xc418('0x2'));var moment=require(_0xc418('0x3'));var BPromise=require(_0xc418('0x4'));var rp=require(_0xc418('0x5'));var fs=require('fs');var path=require(_0xc418('0x6'));var rimraf=require(_0xc418('0x7'));var config=require(_0xc418('0x8'));var attributes=require('./chatOfflineMessage.attributes');module['exports']=function(_0x134560,_0x578e3e){return _0x134560[_0xc418('0x9')](_0xc418('0xa'),attributes,{'tableName':_0xc418('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xc418('0xc')});};
\ No newline at end of file
index b51c9f3..f760676 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8524=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x4d8789,_0x3fdff1){var _0x404e41=function(_0x33d5a6){while(--_0x33d5a6){_0x4d8789['push'](_0x4d8789['shift']());}};_0x404e41(++_0x3fdff1);}(_0x8524,0x1d4));var _0x4852=function(_0x39ba93,_0x2b4e10){_0x39ba93=_0x39ba93-0x0;var _0x2986d0=_0x8524[_0x39ba93];return _0x2986d0;};'use strict';var _=require(_0x4852('0x0'));var util=require(_0x4852('0x1'));var moment=require(_0x4852('0x2'));var BPromise=require(_0x4852('0x3'));var rs=require(_0x4852('0x4'));var fs=require('fs');var Redis=require(_0x4852('0x5'));var db=require(_0x4852('0x6'))['db'];var utils=require(_0x4852('0x7'));var logger=require(_0x4852('0x8'))(_0x4852('0x9'));var config=require(_0x4852('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x4852('0xb')][_0x4852('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x936949,_0x2d05cd,_0x44cc6b){return new BPromise(function(_0x1e9273,_0x479d9c){return client[_0x4852('0xd')](_0x936949,_0x44cc6b)[_0x4852('0xe')](function(_0x2973f1){logger[_0x4852('0xf')](_0x4852('0x10'),_0x2d05cd,_0x4852('0x11'));logger[_0x4852('0x12')](_0x4852('0x13'),_0x2d05cd,_0x4852('0x11'),JSON['stringify'](_0x2973f1));if(_0x2973f1['error']){if(_0x2973f1[_0x4852('0x14')][_0x4852('0x15')]===0x1f4){logger[_0x4852('0x14')](_0x4852('0x10'),_0x2d05cd,_0x2973f1[_0x4852('0x14')]['message']);return _0x479d9c(_0x2973f1[_0x4852('0x14')]['message']);}logger[_0x4852('0x14')]('ChatOfflineMessage,\x20%s,\x20%s',_0x2d05cd,_0x2973f1[_0x4852('0x14')][_0x4852('0x16')]);return _0x1e9273(_0x2973f1[_0x4852('0x14')][_0x4852('0x16')]);}else{logger[_0x4852('0xf')](_0x4852('0x10'),_0x2d05cd,_0x4852('0x11'));_0x1e9273(_0x2973f1[_0x4852('0x17')][_0x4852('0x16')]);}})[_0x4852('0x18')](function(_0x12f131){logger[_0x4852('0x14')](_0x4852('0x10'),_0x2d05cd,_0x12f131);_0x479d9c(_0x12f131);});});}
\ No newline at end of file
+var _0x059d=['info','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','request\x20sent','error','code','message','ChatOfflineMessage,\x20%s,\x20%s'];(function(_0x1bd794,_0x100501){var _0x2fdd69=function(_0x99eb84){while(--_0x99eb84){_0x1bd794['push'](_0x1bd794['shift']());}};_0x2fdd69(++_0x100501);}(_0x059d,0x1b9));var _0xd059=function(_0x93e829,_0x2c4242){_0x93e829=_0x93e829-0x0;var _0x444476=_0x059d[_0x93e829];return _0x444476;};'use strict';var _=require(_0xd059('0x0'));var util=require(_0xd059('0x1'));var moment=require(_0xd059('0x2'));var BPromise=require(_0xd059('0x3'));var rs=require(_0xd059('0x4'));var fs=require('fs');var Redis=require(_0xd059('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xd059('0x6'));var logger=require(_0xd059('0x7'))(_0xd059('0x8'));var config=require(_0xd059('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xd059('0xa')][_0xd059('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x71a46a,_0x57057e,_0x45afbe){return new BPromise(function(_0x88d4a7,_0x1545e5){return client[_0xd059('0xc')](_0x71a46a,_0x45afbe)[_0xd059('0xd')](function(_0x2bb868){logger['info']('ChatOfflineMessage,\x20%s,\x20%s',_0x57057e,_0xd059('0xe'));logger['debug']('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0x57057e,_0xd059('0xe'),JSON['stringify'](_0x2bb868));if(_0x2bb868[_0xd059('0xf')]){if(_0x2bb868[_0xd059('0xf')][_0xd059('0x10')]===0x1f4){logger[_0xd059('0xf')]('ChatOfflineMessage,\x20%s,\x20%s',_0x57057e,_0x2bb868[_0xd059('0xf')][_0xd059('0x11')]);return _0x1545e5(_0x2bb868[_0xd059('0xf')][_0xd059('0x11')]);}logger[_0xd059('0xf')](_0xd059('0x12'),_0x57057e,_0x2bb868[_0xd059('0xf')][_0xd059('0x11')]);return _0x88d4a7(_0x2bb868[_0xd059('0xf')][_0xd059('0x11')]);}else{logger[_0xd059('0x13')]('ChatOfflineMessage,\x20%s,\x20%s',_0x57057e,'request\x20sent');_0x88d4a7(_0x2bb868['result'][_0xd059('0x11')]);}})['catch'](function(_0x18b2fc){logger[_0xd059('0xf')]('ChatOfflineMessage,\x20%s,\x20%s',_0x57057e,_0x18b2fc);_0x1545e5(_0x18b2fc);});});}
\ No newline at end of file
index fd5876f..133d9df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x126e=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','describe','/:id','post','create','put'];(function(_0x176329,_0x568c84){var _0x31997c=function(_0x3d64df){while(--_0x3d64df){_0x176329['push'](_0x176329['shift']());}};_0x31997c(++_0x568c84);}(_0x126e,0x1a6));var _0xe126=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x126e[_0x3ff085];return _0x2b68c3;};'use strict';var multer=require(_0xe126('0x0'));var util=require(_0xe126('0x1'));var path=require(_0xe126('0x2'));var timeout=require(_0xe126('0x3'));var express=require(_0xe126('0x4'));var router=express[_0xe126('0x5')]();var fs_extra=require(_0xe126('0x6'));var auth=require(_0xe126('0x7'));var interaction=require(_0xe126('0x8'));var config=require(_0xe126('0x9'));var controller=require('./chatOfflineMessage.controller');router[_0xe126('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xe126('0xa')](_0xe126('0xb'),auth[_0xe126('0xc')](),controller[_0xe126('0xd')]);router[_0xe126('0xa')](_0xe126('0xe'),auth[_0xe126('0xc')](),controller['show']);router[_0xe126('0xf')]('/',auth[_0xe126('0xc')](),controller[_0xe126('0x10')]);router[_0xe126('0x11')](_0xe126('0xe'),auth[_0xe126('0xc')](),controller['update']);router['delete'](_0xe126('0xe'),auth[_0xe126('0xc')](),controller[_0xe126('0x12')]);module[_0xe126('0x13')]=router;
\ No newline at end of file
+var _0x84ac=['express','Router','fs-extra','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x31b081,_0x194db){var _0x59e7fc=function(_0x3af640){while(--_0x3af640){_0x31b081['push'](_0x31b081['shift']());}};_0x59e7fc(++_0x194db);}(_0x84ac,0x1e0));var _0xc84a=function(_0x2f2cb8,_0x417d38){_0x2f2cb8=_0x2f2cb8-0x0;var _0x5a7add=_0x84ac[_0x2f2cb8];return _0x5a7add;};'use strict';var multer=require(_0xc84a('0x0'));var util=require(_0xc84a('0x1'));var path=require(_0xc84a('0x2'));var timeout=require(_0xc84a('0x3'));var express=require(_0xc84a('0x4'));var router=express[_0xc84a('0x5')]();var fs_extra=require(_0xc84a('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xc84a('0x7'));var controller=require('./chatOfflineMessage.controller');router[_0xc84a('0x8')]('/',auth[_0xc84a('0x9')](),controller[_0xc84a('0xa')]);router[_0xc84a('0x8')](_0xc84a('0xb'),auth[_0xc84a('0x9')](),controller[_0xc84a('0xc')]);router[_0xc84a('0x8')](_0xc84a('0xd'),auth[_0xc84a('0x9')](),controller[_0xc84a('0xe')]);router[_0xc84a('0xf')]('/',auth['isAuthenticated'](),controller[_0xc84a('0x10')]);router[_0xc84a('0x11')]('/:id',auth[_0xc84a('0x9')](),controller[_0xc84a('0x12')]);router[_0xc84a('0x13')](_0xc84a('0xd'),auth[_0xc84a('0x9')](),controller[_0xc84a('0x14')]);module[_0xc84a('0x15')]=router;
\ No newline at end of file
index 8823285..2e3df4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x950d=['mouseOver','timeout','STRING','INTEGER','sequelize','ENUM'];(function(_0x51186f,_0x4ddd3f){var _0x2605ff=function(_0x414584){while(--_0x414584){_0x51186f['push'](_0x51186f['shift']());}};_0x2605ff(++_0x4ddd3f);}(_0x950d,0x1e4));var _0xd950=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0x950d[_0xae7c2f];return _0x5d7001;};'use strict';var Sequelize=require(_0xd950('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xd950('0x1')](_0xd950('0x2'),_0xd950('0x3')),'defaultValue':'mouseOver'},'selector':{'type':Sequelize[_0xd950('0x4')]},'timeout':{'type':Sequelize[_0xd950('0x5')]}};
\ No newline at end of file
+var _0x6a06=['STRING','mouseOver'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6a06,0xee));var _0x66a0=function(_0x2a7d55,_0x36bd70){_0x2a7d55=_0x2a7d55-0x0;var _0x137989=_0x6a06[_0x2a7d55];return _0x137989;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x66a0('0x0')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x66a0('0x1'),'timeout'),'defaultValue':_0x66a0('0x1')},'selector':{'type':Sequelize[_0x66a0('0x0')]},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 16f9e97..ccef463 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf483=['query','attributes','intersection','model','fields','length','includeAll','merge','options','find','catch','update','body','destroy','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','then','stack','name','show','params','keys','ChatProactiveAction'];(function(_0x7a595d,_0x4a2711){var _0xa23362=function(_0x12ffa8){while(--_0x12ffa8){_0x7a595d['push'](_0x7a595d['shift']());}};_0xa23362(++_0x4a2711);}(_0xf483,0xf2));var _0x3f48=function(_0x57997d,_0x31ff84){_0x57997d=_0x57997d-0x0;var _0x5f2156=_0xf483[_0x57997d];return _0x5f2156;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3f48('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3f48('0x1'));var rp=require(_0x3f48('0x2'));var moment=require(_0x3f48('0x3'));var BPromise=require(_0x3f48('0x4'));var Mustache=require(_0x3f48('0x5'));var util=require(_0x3f48('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3f48('0x7'));var fs=require('fs');var fs_extra=require(_0x3f48('0x8'));var _=require('lodash');var squel=require(_0x3f48('0x9'));var crypto=require(_0x3f48('0xa'));var jsforce=require(_0x3f48('0xb'));var deskjs=require(_0x3f48('0xc'));var toCsv=require(_0x3f48('0xd'));var querystring=require(_0x3f48('0xe'));var Papa=require(_0x3f48('0xf'));var Redis=require('ioredis');var authService=require(_0x3f48('0x10'));var qs=require(_0x3f48('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3f48('0x12'));var logger=require('../../config/logger')(_0x3f48('0x13'));var utils=require(_0x3f48('0x14'));var config=require(_0x3f48('0x15'));var licenseUtil=require(_0x3f48('0x16'));var db=require(_0x3f48('0x17'))['db'];function respondWithStatusCode(_0x1e9563,_0x38502b){_0x38502b=_0x38502b||0xcc;return function(_0x5867db){if(_0x5867db){return _0x1e9563[_0x3f48('0x18')](_0x38502b);}return _0x1e9563[_0x3f48('0x19')](_0x38502b)['end']();};}function respondWithResult(_0x27ca72,_0x4e1f66){_0x4e1f66=_0x4e1f66||0xc8;return function(_0x101139){if(_0x101139){return _0x27ca72['status'](_0x4e1f66)[_0x3f48('0x1a')](_0x101139);}};}function respondWithFilteredResult(_0x57c489,_0x2a2083){return function(_0x2013b9){if(_0x2013b9){var _0x364032=typeof _0x2a2083['offset']===_0x3f48('0x1b')&&typeof _0x2a2083[_0x3f48('0x1c')]===_0x3f48('0x1b');var _0x6b97bf=_0x2013b9['count'];var _0x211b22=_0x364032?0x0:_0x2a2083[_0x3f48('0x1d')];var _0x14133f=_0x364032?_0x2013b9[_0x3f48('0x1e')]:_0x2a2083[_0x3f48('0x1d')]+_0x2a2083[_0x3f48('0x1c')];var _0x7a962f;if(_0x14133f>=_0x6b97bf){_0x14133f=_0x6b97bf;_0x7a962f=0xc8;}else{_0x7a962f=0xce;}_0x57c489[_0x3f48('0x19')](_0x7a962f);return _0x57c489[_0x3f48('0x1f')](_0x3f48('0x20'),_0x211b22+'-'+_0x14133f+'/'+_0x6b97bf)[_0x3f48('0x1a')](_0x2013b9);}return null;};}function patchUpdates(_0x353a23){return function(_0x108c6e){try{jsonpatch[_0x3f48('0x21')](_0x108c6e,_0x353a23,!![]);}catch(_0x323230){return BPromise[_0x3f48('0x22')](_0x323230);}return _0x108c6e[_0x3f48('0x23')]();};}function saveUpdates(_0x285462,_0x12fcde){return function(_0x12ef86){if(_0x12ef86){return _0x12ef86['update'](_0x285462)['then'](function(_0x3c9d93){return _0x3c9d93;});}return null;};}function removeEntity(_0xa85425,_0x2e569d){return function(_0x56ad7b){if(_0x56ad7b){return _0x56ad7b['destroy']()[_0x3f48('0x24')](function(){_0xa85425[_0x3f48('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x30a5f1,_0x2e101d){return function(_0xe2bcb0){if(!_0xe2bcb0){_0x30a5f1[_0x3f48('0x18')](0x194);}return _0xe2bcb0;};}function handleError(_0xd01529,_0x108852){_0x108852=_0x108852||0x1f4;return function(_0x2cf7a9){logger['error'](_0x2cf7a9[_0x3f48('0x25')]);if(_0x2cf7a9[_0x3f48('0x26')]){delete _0x2cf7a9[_0x3f48('0x26')];}_0xd01529[_0x3f48('0x19')](_0x108852)['send'](_0x2cf7a9);};}exports[_0x3f48('0x27')]=function(_0x1e6297,_0x562001){var _0x2a5e3f={'raw':!![],'where':{'id':_0x1e6297[_0x3f48('0x28')]['id']}},_0x33201e={};_0x33201e['model']=_[_0x3f48('0x29')](db[_0x3f48('0x2a')]['rawAttributes']);_0x33201e[_0x3f48('0x2b')]=_[_0x3f48('0x29')](_0x1e6297[_0x3f48('0x2b')]);_0x33201e['filters']=_['intersection'](_0x33201e['model'],_0x33201e[_0x3f48('0x2b')]);_0x2a5e3f[_0x3f48('0x2c')]=_[_0x3f48('0x2d')](_0x33201e[_0x3f48('0x2e')],qs[_0x3f48('0x2f')](_0x1e6297[_0x3f48('0x2b')][_0x3f48('0x2f')]));_0x2a5e3f[_0x3f48('0x2c')]=_0x2a5e3f[_0x3f48('0x2c')][_0x3f48('0x30')]?_0x2a5e3f[_0x3f48('0x2c')]:_0x33201e[_0x3f48('0x2e')];if(_0x1e6297[_0x3f48('0x2b')][_0x3f48('0x31')]){_0x2a5e3f['include']=[{'all':!![]}];}_0x2a5e3f=_[_0x3f48('0x32')]({},_0x2a5e3f,_0x1e6297[_0x3f48('0x33')]);return db['ChatProactiveAction'][_0x3f48('0x34')](_0x2a5e3f)['then'](handleEntityNotFound(_0x562001,null))['then'](respondWithResult(_0x562001,null))['catch'](handleError(_0x562001,null));};exports['create']=function(_0x54d1c8,_0x54a59c){return db[_0x3f48('0x2a')]['create'](_0x54d1c8['body'],{})[_0x3f48('0x24')](respondWithResult(_0x54a59c,0xc9))[_0x3f48('0x35')](handleError(_0x54a59c,null));};exports[_0x3f48('0x36')]=function(_0x2b7935,_0x49d885){if(_0x2b7935[_0x3f48('0x37')]['id']){delete _0x2b7935['body']['id'];}return db['ChatProactiveAction']['find']({'where':{'id':_0x2b7935[_0x3f48('0x28')]['id']}})[_0x3f48('0x24')](handleEntityNotFound(_0x49d885,null))['then'](saveUpdates(_0x2b7935[_0x3f48('0x37')],null))[_0x3f48('0x24')](respondWithResult(_0x49d885,null))[_0x3f48('0x35')](handleError(_0x49d885,null));};exports[_0x3f48('0x38')]=function(_0x4779af,_0x481b82){return db[_0x3f48('0x2a')][_0x3f48('0x34')]({'where':{'id':_0x4779af[_0x3f48('0x28')]['id']}})[_0x3f48('0x24')](handleEntityNotFound(_0x481b82,null))[_0x3f48('0x24')](removeEntity(_0x481b82,null))[_0x3f48('0x35')](handleError(_0x481b82,null));};
\ No newline at end of file
+var _0x6334=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','status','undefined','limit','count','offset','Content-Range','reject','save','then','destroy','sendStatus','error','stack','name','send','show','params','model','keys','ChatProactiveAction','rawAttributes','query','intersection','attributes','fields','length','include','merge','find','create','body','catch','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x40a8c8,_0x2bbb4c){var _0x211cae=function(_0x3a5a0a){while(--_0x3a5a0a){_0x40a8c8['push'](_0x40a8c8['shift']());}};_0x211cae(++_0x2bbb4c);}(_0x6334,0x119));var _0x4633=function(_0x3cc9d9,_0x69ed38){_0x3cc9d9=_0x3cc9d9-0x0;var _0x1a425d=_0x6334[_0x3cc9d9];return _0x1a425d;};'use strict';var emlformat=require(_0x4633('0x0'));var rimraf=require(_0x4633('0x1'));var zipdir=require(_0x4633('0x2'));var jsonpatch=require(_0x4633('0x3'));var rp=require(_0x4633('0x4'));var moment=require(_0x4633('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x4633('0x6'));var util=require(_0x4633('0x7'));var path=require(_0x4633('0x8'));var sox=require(_0x4633('0x9'));var csv=require(_0x4633('0xa'));var ejs=require(_0x4633('0xb'));var fs=require('fs');var fs_extra=require(_0x4633('0xc'));var _=require('lodash');var squel=require(_0x4633('0xd'));var crypto=require('crypto');var jsforce=require(_0x4633('0xe'));var deskjs=require(_0x4633('0xf'));var toCsv=require('to-csv');var querystring=require(_0x4633('0x10'));var Papa=require(_0x4633('0x11'));var Redis=require(_0x4633('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x4633('0x13'));var as=require(_0x4633('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4633('0x15'))(_0x4633('0x16'));var utils=require(_0x4633('0x17'));var config=require(_0x4633('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x4633('0x19'))['db'];function respondWithStatusCode(_0xad405,_0x438e87){_0x438e87=_0x438e87||0xcc;return function(_0x48e92c){if(_0x48e92c){return _0xad405['sendStatus'](_0x438e87);}return _0xad405['status'](_0x438e87)[_0x4633('0x1a')]();};}function respondWithResult(_0x1fd00c,_0x579229){_0x579229=_0x579229||0xc8;return function(_0x52955e){if(_0x52955e){return _0x1fd00c[_0x4633('0x1b')](_0x579229)['json'](_0x52955e);}};}function respondWithFilteredResult(_0xcdffcc,_0x33b6e7){return function(_0x2e2dc3){if(_0x2e2dc3){var _0x11fef9=typeof _0x33b6e7['offset']===_0x4633('0x1c')&&typeof _0x33b6e7[_0x4633('0x1d')]===_0x4633('0x1c');var _0x4ffad5=_0x2e2dc3[_0x4633('0x1e')];var _0x37e536=_0x11fef9?0x0:_0x33b6e7[_0x4633('0x1f')];var _0x2ad562=_0x11fef9?_0x2e2dc3[_0x4633('0x1e')]:_0x33b6e7['offset']+_0x33b6e7[_0x4633('0x1d')];var _0xfe3446;if(_0x2ad562>=_0x4ffad5){_0x2ad562=_0x4ffad5;_0xfe3446=0xc8;}else{_0xfe3446=0xce;}_0xcdffcc['status'](_0xfe3446);return _0xcdffcc['set'](_0x4633('0x20'),_0x37e536+'-'+_0x2ad562+'/'+_0x4ffad5)['json'](_0x2e2dc3);}return null;};}function patchUpdates(_0x35e2ad){return function(_0x5b5011){try{jsonpatch['apply'](_0x5b5011,_0x35e2ad,!![]);}catch(_0x109472){return BPromise[_0x4633('0x21')](_0x109472);}return _0x5b5011[_0x4633('0x22')]();};}function saveUpdates(_0x604f3d,_0xd1fcc6){return function(_0x2d46f7){if(_0x2d46f7){return _0x2d46f7['update'](_0x604f3d)[_0x4633('0x23')](function(_0x562e26){return _0x562e26;});}return null;};}function removeEntity(_0x22d9c1,_0xcfac3f){return function(_0xe77cfc){if(_0xe77cfc){return _0xe77cfc[_0x4633('0x24')]()[_0x4633('0x23')](function(){_0x22d9c1['status'](0xcc)[_0x4633('0x1a')]();});}};}function handleEntityNotFound(_0x399220,_0x37e3c4){return function(_0x13ec10){if(!_0x13ec10){_0x399220[_0x4633('0x25')](0x194);}return _0x13ec10;};}function handleError(_0x471d13,_0x1ba1ed){_0x1ba1ed=_0x1ba1ed||0x1f4;return function(_0x368582){logger[_0x4633('0x26')](_0x368582[_0x4633('0x27')]);if(_0x368582[_0x4633('0x28')]){delete _0x368582[_0x4633('0x28')];}_0x471d13[_0x4633('0x1b')](_0x1ba1ed)[_0x4633('0x29')](_0x368582);};}exports[_0x4633('0x2a')]=function(_0x3f03aa,_0x20ca8b){var _0x139e5e={'raw':!![],'where':{'id':_0x3f03aa[_0x4633('0x2b')]['id']}},_0x5de12a={};_0x5de12a[_0x4633('0x2c')]=_[_0x4633('0x2d')](db[_0x4633('0x2e')][_0x4633('0x2f')]);_0x5de12a[_0x4633('0x30')]=_['keys'](_0x3f03aa[_0x4633('0x30')]);_0x5de12a['filters']=_[_0x4633('0x31')](_0x5de12a[_0x4633('0x2c')],_0x5de12a[_0x4633('0x30')]);_0x139e5e[_0x4633('0x32')]=_[_0x4633('0x31')](_0x5de12a[_0x4633('0x2c')],qs[_0x4633('0x33')](_0x3f03aa[_0x4633('0x30')][_0x4633('0x33')]));_0x139e5e[_0x4633('0x32')]=_0x139e5e[_0x4633('0x32')][_0x4633('0x34')]?_0x139e5e[_0x4633('0x32')]:_0x5de12a[_0x4633('0x2c')];if(_0x3f03aa['query']['includeAll']){_0x139e5e[_0x4633('0x35')]=[{'all':!![]}];}_0x139e5e=_[_0x4633('0x36')]({},_0x139e5e,_0x3f03aa['options']);return db[_0x4633('0x2e')][_0x4633('0x37')](_0x139e5e)[_0x4633('0x23')](handleEntityNotFound(_0x20ca8b,null))[_0x4633('0x23')](respondWithResult(_0x20ca8b,null))['catch'](handleError(_0x20ca8b,null));};exports[_0x4633('0x38')]=function(_0x52322e,_0xd606e5){return db[_0x4633('0x2e')][_0x4633('0x38')](_0x52322e[_0x4633('0x39')],{})[_0x4633('0x23')](respondWithResult(_0xd606e5,0xc9))[_0x4633('0x3a')](handleError(_0xd606e5,null));};exports[_0x4633('0x3b')]=function(_0x439a04,_0x546390){if(_0x439a04[_0x4633('0x39')]['id']){delete _0x439a04[_0x4633('0x39')]['id'];}return db['ChatProactiveAction'][_0x4633('0x37')]({'where':{'id':_0x439a04[_0x4633('0x2b')]['id']}})[_0x4633('0x23')](handleEntityNotFound(_0x546390,null))[_0x4633('0x23')](saveUpdates(_0x439a04['body'],null))['then'](respondWithResult(_0x546390,null))[_0x4633('0x3a')](handleError(_0x546390,null));};exports['destroy']=function(_0x4d1707,_0x464533){return db['ChatProactiveAction']['find']({'where':{'id':_0x4d1707[_0x4633('0x2b')]['id']}})[_0x4633('0x23')](handleEntityNotFound(_0x464533,null))[_0x4633('0x23')](removeEntity(_0x464533,null))[_0x4633('0x3a')](handleError(_0x464533,null));};
\ No newline at end of file
index 8e2d29a..4828697 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26bd=['ChatProactiveAction','chat_proactive_actions','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./chatProactiveAction.attributes','exports','define'];(function(_0x351619,_0xa300e4){var _0x4794b6=function(_0xb270bd){while(--_0xb270bd){_0x351619['push'](_0x351619['shift']());}};_0x4794b6(++_0xa300e4);}(_0x26bd,0x1af));var _0xd26b=function(_0x5d730,_0x560c39){_0x5d730=_0x5d730-0x0;var _0x34d557=_0x26bd[_0x5d730];return _0x34d557;};'use strict';var _=require(_0xd26b('0x0'));var util=require(_0xd26b('0x1'));var logger=require(_0xd26b('0x2'))(_0xd26b('0x3'));var moment=require(_0xd26b('0x4'));var BPromise=require(_0xd26b('0x5'));var rp=require(_0xd26b('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd26b('0x7'));var config=require('../../config/environment');var attributes=require(_0xd26b('0x8'));module[_0xd26b('0x9')]=function(_0x6db9b9,_0x13e1e1){return _0x6db9b9[_0xd26b('0xa')](_0xd26b('0xb'),attributes,{'tableName':_0xd26b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7412=['define','ChatProactiveAction','chat_proactive_actions','lodash','util','../../config/logger','api','request-promise','rimraf','../../config/environment'];(function(_0x5bad1f,_0x597a32){var _0x23b66d=function(_0xa2a97f){while(--_0xa2a97f){_0x5bad1f['push'](_0x5bad1f['shift']());}};_0x23b66d(++_0x597a32);}(_0x7412,0x14d));var _0x2741=function(_0xb24a3e,_0x4a3594){_0xb24a3e=_0xb24a3e-0x0;var _0x4038d7=_0x7412[_0xb24a3e];return _0x4038d7;};'use strict';var _=require(_0x2741('0x0'));var util=require(_0x2741('0x1'));var logger=require(_0x2741('0x2'))(_0x2741('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2741('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2741('0x5'));var config=require(_0x2741('0x6'));var attributes=require('./chatProactiveAction.attributes');module['exports']=function(_0x2dadbe,_0xe7dde1){return _0x2dadbe[_0x2741('0x7')](_0x2741('0x8'),attributes,{'tableName':_0x2741('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8dd5232..7194a95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4841=['code','message','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','error'];(function(_0x189bb0,_0x2b9e11){var _0x5304f2=function(_0x4e0765){while(--_0x4e0765){_0x189bb0['push'](_0x189bb0['shift']());}};_0x5304f2(++_0x2b9e11);}(_0x4841,0xab));var _0x1484=function(_0xda07b2,_0x36b1cb){_0xda07b2=_0xda07b2-0x0;var _0x59bd78=_0x4841[_0xda07b2];return _0x59bd78;};'use strict';var _=require(_0x1484('0x0'));var util=require('util');var moment=require(_0x1484('0x1'));var BPromise=require('bluebird');var rs=require(_0x1484('0x2'));var fs=require('fs');var Redis=require(_0x1484('0x3'));var db=require(_0x1484('0x4'))['db'];var utils=require(_0x1484('0x5'));var logger=require(_0x1484('0x6'))(_0x1484('0x7'));var config=require(_0x1484('0x8'));var jayson=require(_0x1484('0x9'));var client=jayson[_0x1484('0xa')][_0x1484('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52bcdf,_0x32e7fe,_0x4e5d78){return new BPromise(function(_0x1d376f,_0xc65ac3){return client['request'](_0x52bcdf,_0x4e5d78)['then'](function(_0x1e1b2b){logger[_0x1484('0xc')](_0x1484('0xd'),_0x32e7fe,_0x1484('0xe'));logger[_0x1484('0xf')](_0x1484('0x10'),_0x32e7fe,_0x1484('0xe'),JSON['stringify'](_0x1e1b2b));if(_0x1e1b2b[_0x1484('0x11')]){if(_0x1e1b2b[_0x1484('0x11')][_0x1484('0x12')]===0x1f4){logger[_0x1484('0x11')]('ChatProactiveAction,\x20%s,\x20%s',_0x32e7fe,_0x1e1b2b[_0x1484('0x11')]['message']);return _0xc65ac3(_0x1e1b2b['error'][_0x1484('0x13')]);}logger[_0x1484('0x11')](_0x1484('0xd'),_0x32e7fe,_0x1e1b2b['error'][_0x1484('0x13')]);return _0x1d376f(_0x1e1b2b['error']['message']);}else{logger[_0x1484('0xc')]('ChatProactiveAction,\x20%s,\x20%s',_0x32e7fe,_0x1484('0xe'));_0x1d376f(_0x1e1b2b['result'][_0x1484('0x13')]);}})[_0x1484('0x14')](function(_0x36c05d){logger['error'](_0x1484('0xd'),_0x32e7fe,_0x36c05d);_0xc65ac3(_0x36c05d);});});}
\ No newline at end of file
+var _0xbeb3=['request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','ChatProactiveAction,\x20%s,\x20%s'];(function(_0x24f6c0,_0x17e42c){var _0x5cef89=function(_0x397dff){while(--_0x397dff){_0x24f6c0['push'](_0x24f6c0['shift']());}};_0x5cef89(++_0x17e42c);}(_0xbeb3,0x1ac));var _0x3beb=function(_0x455893,_0x909838){_0x455893=_0x455893-0x0;var _0x3851e8=_0xbeb3[_0x455893];return _0x3851e8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3beb('0x0'));var BPromise=require(_0x3beb('0x1'));var rs=require(_0x3beb('0x2'));var fs=require('fs');var Redis=require(_0x3beb('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x3beb('0x4'))('rpc');var config=require(_0x3beb('0x5'));var jayson=require(_0x3beb('0x6'));var client=jayson[_0x3beb('0x7')][_0x3beb('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1af0c4,_0x24fc82,_0x9612d){return new BPromise(function(_0x25f5ee,_0x77921d){return client[_0x3beb('0x9')](_0x1af0c4,_0x9612d)['then'](function(_0xf5bded){logger[_0x3beb('0xa')](_0x3beb('0xb'),_0x24fc82,_0x3beb('0xc'));logger[_0x3beb('0xd')](_0x3beb('0xe'),_0x24fc82,_0x3beb('0xc'),JSON['stringify'](_0xf5bded));if(_0xf5bded[_0x3beb('0xf')]){if(_0xf5bded[_0x3beb('0xf')][_0x3beb('0x10')]===0x1f4){logger[_0x3beb('0xf')]('ChatProactiveAction,\x20%s,\x20%s',_0x24fc82,_0xf5bded[_0x3beb('0xf')][_0x3beb('0x11')]);return _0x77921d(_0xf5bded['error'][_0x3beb('0x11')]);}logger[_0x3beb('0xf')](_0x3beb('0xb'),_0x24fc82,_0xf5bded[_0x3beb('0xf')][_0x3beb('0x11')]);return _0x25f5ee(_0xf5bded['error'][_0x3beb('0x11')]);}else{logger[_0x3beb('0xa')](_0x3beb('0xb'),_0x24fc82,_0x3beb('0xc'));_0x25f5ee(_0xf5bded[_0x3beb('0x12')]['message']);}})[_0x3beb('0x13')](function(_0x4f39a4){logger[_0x3beb('0xf')](_0x3beb('0xb'),_0x24fc82,_0x4f39a4);_0x77921d(_0x4f39a4);});});}
\ No newline at end of file
index 792af3f..5822681 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(_0x2555d0,_0x4150a6){var _0x3bb486=function(_0x1eb89f){while(--_0x1eb89f){_0x2555d0['push'](_0x2555d0['shift']());}};_0x3bb486(++_0x4150a6);}(_0x2bd8,0x130));var _0x82bd=function(_0x494725,_0xd7e5cf){_0x494725=_0x494725-0x0;var _0x234759=_0x2bd8[_0x494725];return _0x234759;};'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 _0xc4aa=['show','post','update','destroy','multer','util','path','connect-timeout','express','Router','../../config/environment','./chatProactiveAction.controller','get','/:id','isAuthenticated'];(function(_0x309652,_0x4724e6){var _0x5029d7=function(_0x6f4a31){while(--_0x6f4a31){_0x309652['push'](_0x309652['shift']());}};_0x5029d7(++_0x4724e6);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xc4aa[_0x19950b];return _0x3c6b41;};'use strict';var multer=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var path=require(_0xac4a('0x2'));var timeout=require(_0xac4a('0x3'));var express=require(_0xac4a('0x4'));var router=express[_0xac4a('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xac4a('0x6'));var controller=require(_0xac4a('0x7'));router[_0xac4a('0x8')](_0xac4a('0x9'),auth[_0xac4a('0xa')](),controller[_0xac4a('0xb')]);router[_0xac4a('0xc')]('/',auth[_0xac4a('0xa')](),controller['create']);router['put'](_0xac4a('0x9'),auth[_0xac4a('0xa')](),controller[_0xac4a('0xd')]);router['delete'](_0xac4a('0x9'),auth[_0xac4a('0xa')](),controller[_0xac4a('0xe')]);module['exports']=router;
\ No newline at end of file
index 9e853ee..98a01be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x415a=['INTEGER','rrmemory','roundrobin','sequelize','exports','STRING'];(function(_0x370c3e,_0x399884){var _0x859aff=function(_0x597d86){while(--_0x597d86){_0x370c3e['push'](_0x370c3e['shift']());}};_0x859aff(++_0x399884);}(_0x415a,0x15f));var _0xa415=function(_0xd72856,_0x337fed){_0xd72856=_0xd72856-0x0;var _0x27acf1=_0x415a[_0xd72856];return _0x27acf1;};'use strict';var Sequelize=require(_0xa415('0x0'));module[_0xa415('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xa415('0x2')]},'timeout':{'type':Sequelize[_0xa415('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xa415('0x4'),'beepall',_0xa415('0x5'))}};
\ No newline at end of file
+var _0xf6ba=['rrmemory','beepall','roundrobin','exports','name','INTEGER'];(function(_0x51f67c,_0x1977ec){var _0x3888c5=function(_0x5469be){while(--_0x5469be){_0x51f67c['push'](_0x51f67c['shift']());}};_0x3888c5(++_0x1977ec);}(_0xf6ba,0x153));var _0xaf6b=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xf6ba[_0x21a9d9];return _0x46adce;};'use strict';var Sequelize=require('sequelize');module[_0xaf6b('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0xaf6b('0x1'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xaf6b('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xaf6b('0x3'),_0xaf6b('0x4'),_0xaf6b('0x5'))}};
\ No newline at end of file
index 48910ce..2543396 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18ac=['describe','getMembers','findOne','hasOwnProperty','order','UserChatQueue','findAndCountAll','UserId','agent','updatedAt','format','SIP','createdAt','getTeams','addTeams','ids','Team','online','flatMap','Agents','sequelize','transaction','each','findOrCreate','emit','removeTeams','User','field','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','union','compact','value','isEmpty','removeAgents','forEach','addAgents','omit','userChatQueue:save','isArray','userChatQueue:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','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','../../mysqldb','redis','defaults','socket.io-emitter','register','jayson/promise','client','request','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','catch','sendStatus','status','end','offset','limit','count','set','Content-Range','reject','update','destroy','then','get','UserProfileResource','stack','name','send','index','map','ChatQueue','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','sort','where','pick','filter','merge','options','include','findAll','rows','show','params','find','create','body','user','role','ChatQueues','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x117ab9,_0x45c7b6){var _0x258a48=function(_0xe6e07c){while(--_0xe6e07c){_0x117ab9['push'](_0x117ab9['shift']());}};_0x258a48(++_0x45c7b6);}(_0x18ac,0x1f1));var _0xc18a=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x18ac[_0x1facfa];return _0x9ec701;};'use strict';var emlformat=require(_0xc18a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc18a('0x1'));var jsonpatch=require(_0xc18a('0x2'));var rp=require(_0xc18a('0x3'));var moment=require('moment');var BPromise=require(_0xc18a('0x4'));var Mustache=require(_0xc18a('0x5'));var util=require(_0xc18a('0x6'));var path=require(_0xc18a('0x7'));var sox=require('sox');var csv=require(_0xc18a('0x8'));var ejs=require(_0xc18a('0x9'));var fs=require('fs');var fs_extra=require(_0xc18a('0xa'));var _=require('lodash');var squel=require(_0xc18a('0xb'));var crypto=require(_0xc18a('0xc'));var jsforce=require(_0xc18a('0xd'));var deskjs=require(_0xc18a('0xe'));var toCsv=require(_0xc18a('0x8'));var querystring=require(_0xc18a('0xf'));var Papa=require(_0xc18a('0x10'));var Redis=require(_0xc18a('0x11'));var authService=require(_0xc18a('0x12'));var qs=require(_0xc18a('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc18a('0x14'));var logger=require(_0xc18a('0x15'))(_0xc18a('0x16'));var utils=require(_0xc18a('0x17'));var config=require(_0xc18a('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xc18a('0x19'))['db'];config[_0xc18a('0x1a')]=_[_0xc18a('0x1b')](config[_0xc18a('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0xc18a('0x1c'))(new Redis(config['redis']));require('./chatQueue.socket')[_0xc18a('0x1d')](socket);var jayson=require(_0xc18a('0x1e'));var client=jayson[_0xc18a('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x45e434,_0x828e85,_0x28621e,_0x2e788c){return new BPromise(function(_0x251a6e,_0x5757b0){var _0x2d1e47=_0x2e788c||client;return _0x2d1e47[_0xc18a('0x20')](_0x45e434,_0x28621e)['then'](function(_0x2185b7){logger['info'](_0xc18a('0x21'),_0x828e85,_0xc18a('0x22'));logger[_0xc18a('0x23')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x828e85,_0xc18a('0x22'),JSON[_0xc18a('0x24')](_0x2185b7));if(_0x2185b7[_0xc18a('0x25')]){if(_0x2185b7['error']['code']===0x1f4){logger[_0xc18a('0x25')](_0xc18a('0x21'),_0x828e85,_0x2185b7[_0xc18a('0x25')][_0xc18a('0x26')]);return _0x5757b0(_0x2185b7[_0xc18a('0x25')][_0xc18a('0x26')]);}logger[_0xc18a('0x25')]('ChatQueue,\x20%s,\x20%s',_0x828e85,_0x2185b7['error'][_0xc18a('0x26')]);return _0x251a6e(_0x2185b7[_0xc18a('0x25')][_0xc18a('0x26')]);}else{logger[_0xc18a('0x27')]('ChatQueue,\x20%s,\x20%s',_0x828e85,_0xc18a('0x22'));_0x251a6e(_0x2185b7['result'][_0xc18a('0x26')]);}})[_0xc18a('0x28')](function(_0x27067e){logger[_0xc18a('0x25')](_0xc18a('0x21'),_0x828e85,_0x27067e);_0x5757b0(_0x27067e);});});}function respondWithStatusCode(_0x39ee50,_0x2cc7f0){_0x2cc7f0=_0x2cc7f0||0xcc;return function(_0x3d6422){if(_0x3d6422){return _0x39ee50[_0xc18a('0x29')](_0x2cc7f0);}return _0x39ee50[_0xc18a('0x2a')](_0x2cc7f0)[_0xc18a('0x2b')]();};}function respondWithResult(_0x3fd083,_0x2dab78){_0x2dab78=_0x2dab78||0xc8;return function(_0x1bf8bd){if(_0x1bf8bd){return _0x3fd083['status'](_0x2dab78)['json'](_0x1bf8bd);}};}function respondWithFilteredResult(_0x39f525,_0x403b5b){return function(_0x25b69f){if(_0x25b69f){var _0x1cf78b=typeof _0x403b5b[_0xc18a('0x2c')]==='undefined'&&typeof _0x403b5b[_0xc18a('0x2d')]==='undefined';var _0x318f6d=_0x25b69f[_0xc18a('0x2e')];var _0x1d34c5=_0x1cf78b?0x0:_0x403b5b[_0xc18a('0x2c')];var _0x37b8e4=_0x1cf78b?_0x25b69f[_0xc18a('0x2e')]:_0x403b5b[_0xc18a('0x2c')]+_0x403b5b['limit'];var _0x10aaa4;if(_0x37b8e4>=_0x318f6d){_0x37b8e4=_0x318f6d;_0x10aaa4=0xc8;}else{_0x10aaa4=0xce;}_0x39f525['status'](_0x10aaa4);return _0x39f525[_0xc18a('0x2f')](_0xc18a('0x30'),_0x1d34c5+'-'+_0x37b8e4+'/'+_0x318f6d)['json'](_0x25b69f);}return null;};}function patchUpdates(_0xf1e85e){return function(_0x5047f5){try{jsonpatch['apply'](_0x5047f5,_0xf1e85e,!![]);}catch(_0x3da81a){return BPromise[_0xc18a('0x31')](_0x3da81a);}return _0x5047f5['save']();};}function saveUpdates(_0x2c249a,_0x4b76d9){return function(_0x5e39b4){if(_0x5e39b4){return _0x5e39b4[_0xc18a('0x32')](_0x2c249a)['then'](function(_0x98b006){return _0x98b006;});}return null;};}function removeEntity(_0x3f1ad0,_0x31967f){return function(_0x2880c5){if(_0x2880c5){return _0x2880c5[_0xc18a('0x33')]()[_0xc18a('0x34')](function(){var _0x14a79b=_0x2880c5[_0xc18a('0x35')]({'plain':!![]});var _0x2eb3b2='ChatQueues';return db[_0xc18a('0x36')]['destroy']({'where':{'type':_0x2eb3b2,'resourceId':_0x14a79b['id']}})[_0xc18a('0x34')](function(){return _0x2880c5;});})['then'](function(){_0x3f1ad0[_0xc18a('0x2a')](0xcc)[_0xc18a('0x2b')]();});}};}function handleEntityNotFound(_0x27f41c,_0x36996e){return function(_0x2fe8e6){if(!_0x2fe8e6){_0x27f41c['sendStatus'](0x194);}return _0x2fe8e6;};}function handleError(_0x226230,_0xf2904c){_0xf2904c=_0xf2904c||0x1f4;return function(_0x10c88a){logger['error'](_0x10c88a[_0xc18a('0x37')]);if(_0x10c88a[_0xc18a('0x38')]){delete _0x10c88a[_0xc18a('0x38')];}_0x226230[_0xc18a('0x2a')](_0xf2904c)[_0xc18a('0x39')](_0x10c88a);};}exports[_0xc18a('0x3a')]=function(_0x200484,_0x3a1f00){var _0x487b7b={},_0x2ec37f={},_0x1e561e={'count':0x0,'rows':[]};var _0x3700e6=_[_0xc18a('0x3b')](db[_0xc18a('0x3c')][_0xc18a('0x3d')],function(_0x541a50){return{'name':_0x541a50[_0xc18a('0x3e')],'type':_0x541a50[_0xc18a('0x3f')][_0xc18a('0x40')]};});_0x2ec37f['model']=_[_0xc18a('0x3b')](_0x3700e6,_0xc18a('0x38'));_0x2ec37f[_0xc18a('0x41')]=_[_0xc18a('0x42')](_0x200484['query']);_0x2ec37f[_0xc18a('0x43')]=_[_0xc18a('0x44')](_0x2ec37f[_0xc18a('0x45')],_0x2ec37f[_0xc18a('0x41')]);_0x487b7b[_0xc18a('0x46')]=_[_0xc18a('0x44')](_0x2ec37f[_0xc18a('0x45')],qs['fields'](_0x200484[_0xc18a('0x41')][_0xc18a('0x47')]));_0x487b7b['attributes']=_0x487b7b['attributes'][_0xc18a('0x48')]?_0x487b7b[_0xc18a('0x46')]:_0x2ec37f['model'];if(!_0x200484[_0xc18a('0x41')]['hasOwnProperty'](_0xc18a('0x49'))){_0x487b7b[_0xc18a('0x2d')]=qs['limit'](_0x200484[_0xc18a('0x41')][_0xc18a('0x2d')]);_0x487b7b[_0xc18a('0x2c')]=qs[_0xc18a('0x2c')](_0x200484[_0xc18a('0x41')][_0xc18a('0x2c')]);}_0x487b7b['order']=qs[_0xc18a('0x4a')](_0x200484[_0xc18a('0x41')]['sort']);_0x487b7b[_0xc18a('0x4b')]=qs[_0xc18a('0x43')](_[_0xc18a('0x4c')](_0x200484[_0xc18a('0x41')],_0x2ec37f[_0xc18a('0x43')]),_0x3700e6);if(_0x200484['query'][_0xc18a('0x4d')]){_0x487b7b[_0xc18a('0x4b')]=_[_0xc18a('0x4e')](_0x487b7b[_0xc18a('0x4b')],{'$or':_[_0xc18a('0x3b')](_0x3700e6,function(_0x181769){if(_0x181769[_0xc18a('0x3f')]!=='VIRTUAL'){var _0x560d92={};_0x560d92[_0x181769['name']]={'$like':'%'+_0x200484[_0xc18a('0x41')][_0xc18a('0x4d')]+'%'};return _0x560d92;}})});}_0x487b7b=_[_0xc18a('0x4e')]({},_0x487b7b,_0x200484[_0xc18a('0x4f')]);var _0x149470={'where':_0x487b7b[_0xc18a('0x4b')]};return db[_0xc18a('0x3c')][_0xc18a('0x2e')](_0x149470)[_0xc18a('0x34')](function(_0x4d2459){_0x1e561e[_0xc18a('0x2e')]=_0x4d2459;if(_0x200484['query']['includeAll']){_0x487b7b[_0xc18a('0x50')]=[{'all':!![]}];}return db[_0xc18a('0x3c')][_0xc18a('0x51')](_0x487b7b);})['then'](function(_0x2a20ff){_0x1e561e[_0xc18a('0x52')]=_0x2a20ff;return _0x1e561e;})[_0xc18a('0x34')](respondWithFilteredResult(_0x3a1f00,_0x487b7b))['catch'](handleError(_0x3a1f00,null));};exports[_0xc18a('0x53')]=function(_0x14d365,_0x5f03fc){var _0x51f092={'raw':!![],'where':{'id':_0x14d365[_0xc18a('0x54')]['id']}},_0x5ad1d8={};_0x5ad1d8[_0xc18a('0x45')]=_[_0xc18a('0x42')](db[_0xc18a('0x3c')]['rawAttributes']);_0x5ad1d8[_0xc18a('0x41')]=_[_0xc18a('0x42')](_0x14d365[_0xc18a('0x41')]);_0x5ad1d8[_0xc18a('0x43')]=_[_0xc18a('0x44')](_0x5ad1d8[_0xc18a('0x45')],_0x5ad1d8[_0xc18a('0x41')]);_0x51f092['attributes']=_[_0xc18a('0x44')](_0x5ad1d8[_0xc18a('0x45')],qs[_0xc18a('0x47')](_0x14d365[_0xc18a('0x41')][_0xc18a('0x47')]));_0x51f092[_0xc18a('0x46')]=_0x51f092['attributes'][_0xc18a('0x48')]?_0x51f092[_0xc18a('0x46')]:_0x5ad1d8[_0xc18a('0x45')];if(_0x14d365[_0xc18a('0x41')]['includeAll']){_0x51f092['include']=[{'all':!![]}];}_0x51f092=_[_0xc18a('0x4e')]({},_0x51f092,_0x14d365[_0xc18a('0x4f')]);return db[_0xc18a('0x3c')][_0xc18a('0x55')](_0x51f092)['then'](handleEntityNotFound(_0x5f03fc,null))['then'](respondWithResult(_0x5f03fc,null))['catch'](handleError(_0x5f03fc,null));};exports[_0xc18a('0x56')]=function(_0x1c32c0,_0x533dd5){return db[_0xc18a('0x3c')][_0xc18a('0x56')](_0x1c32c0[_0xc18a('0x57')],{})['then'](function(_0x3a46ec){var _0x105ce0=_0x1c32c0[_0xc18a('0x58')][_0xc18a('0x35')]({'plain':!![]});if(!_0x105ce0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x105ce0[_0xc18a('0x59')]===_0xc18a('0x58')){var _0xe0da19=_0x3a46ec[_0xc18a('0x35')]({'plain':!![]});var _0xaa4314=_0xc18a('0x5a');return db[_0xc18a('0x5b')]['find']({'where':{'name':_0xaa4314,'userProfileId':_0x105ce0[_0xc18a('0x5c')]},'raw':!![]})[_0xc18a('0x34')](function(_0x1f5d43){if(_0x1f5d43&&_0x1f5d43[_0xc18a('0x5d')]===0x0){return db['UserProfileResource'][_0xc18a('0x56')]({'name':_0xe0da19['name'],'resourceId':_0xe0da19['id'],'type':_0x1f5d43[_0xc18a('0x38')],'sectionId':_0x1f5d43['id']},{})['then'](function(){return _0x3a46ec;});}else{return _0x3a46ec;}})[_0xc18a('0x28')](function(_0x22b294){logger[_0xc18a('0x25')](_0xc18a('0x5e'),_0x22b294);throw _0x22b294;});}return _0x3a46ec;})[_0xc18a('0x34')](respondWithResult(_0x533dd5,0xc9))[_0xc18a('0x28')](handleError(_0x533dd5,null));};exports[_0xc18a('0x32')]=function(_0x3b2ed3,_0x25c500){if(_0x3b2ed3[_0xc18a('0x57')]['id']){delete _0x3b2ed3[_0xc18a('0x57')]['id'];}return db[_0xc18a('0x3c')][_0xc18a('0x55')]({'where':{'id':_0x3b2ed3[_0xc18a('0x54')]['id']}})[_0xc18a('0x34')](handleEntityNotFound(_0x25c500,null))['then'](saveUpdates(_0x3b2ed3[_0xc18a('0x57')],null))[_0xc18a('0x34')](respondWithResult(_0x25c500,null))[_0xc18a('0x28')](handleError(_0x25c500,null));};exports[_0xc18a('0x33')]=function(_0xebf0f1,_0x498628){return db['ChatQueue']['find']({'where':{'id':_0xebf0f1[_0xc18a('0x54')]['id']}})[_0xc18a('0x34')](handleEntityNotFound(_0x498628,null))[_0xc18a('0x34')](removeEntity(_0x498628,null))[_0xc18a('0x28')](handleError(_0x498628,null));};exports[_0xc18a('0x5f')]=function(_0x3e1ea6,_0x47ef0f){return db[_0xc18a('0x3c')][_0xc18a('0x5f')]()[_0xc18a('0x34')](respondWithResult(_0x47ef0f,null))['catch'](handleError(_0x47ef0f,null));};exports[_0xc18a('0x60')]=function(_0x1e0cc9,_0x46cc7d,_0x878500){var _0x5da8a4={'raw':!![],'where':{}},_0x580070={},_0x51579b;return db[_0xc18a('0x3c')][_0xc18a('0x61')]({'where':{'id':_0x1e0cc9[_0xc18a('0x54')]['id']}})['then'](handleEntityNotFound(_0x46cc7d,null))[_0xc18a('0x34')](function(_0x14a66c){if(_0x14a66c){_0x51579b=_0x14a66c['get']({'plain':!![]});_0x580070[_0xc18a('0x45')]=_[_0xc18a('0x42')](db['UserChatQueue'][_0xc18a('0x3d')]);_0x580070[_0xc18a('0x41')]=_['keys'](_0x1e0cc9[_0xc18a('0x41')]);_0x580070['filters']=_['intersection'](_0x580070[_0xc18a('0x45')],_0x580070['query']);_0x5da8a4[_0xc18a('0x46')]=_[_0xc18a('0x44')](_0x580070[_0xc18a('0x45')],qs[_0xc18a('0x47')](_0x1e0cc9['query']['fields']));_0x5da8a4[_0xc18a('0x46')]=_0x5da8a4[_0xc18a('0x46')]['length']?_0x5da8a4[_0xc18a('0x46')]:_0x580070[_0xc18a('0x45')];if(!_0x1e0cc9[_0xc18a('0x41')][_0xc18a('0x62')](_0xc18a('0x49'))){_0x5da8a4[_0xc18a('0x2d')]=qs[_0xc18a('0x2d')](_0x1e0cc9[_0xc18a('0x41')]['limit']);_0x5da8a4[_0xc18a('0x2c')]=qs[_0xc18a('0x2c')](_0x1e0cc9['query'][_0xc18a('0x2c')]);}_0x5da8a4[_0xc18a('0x63')]=qs[_0xc18a('0x4a')](_0x1e0cc9['query'][_0xc18a('0x4a')]);_0x5da8a4[_0xc18a('0x4b')]=qs[_0xc18a('0x43')](_[_0xc18a('0x4c')](_0x1e0cc9[_0xc18a('0x41')],_0x580070['filters']));_0x5da8a4[_0xc18a('0x4b')]['ChatQueueId']=_0x14a66c['id'];if(_0x1e0cc9[_0xc18a('0x41')][_0xc18a('0x4d')]){_0x5da8a4[_0xc18a('0x4b')]=_[_0xc18a('0x4e')](_0x5da8a4[_0xc18a('0x4b')],{'$or':_['map'](_0x5da8a4[_0xc18a('0x46')],function(_0x3a921c){var _0x360f56={};_0x360f56[_0x3a921c]={'$like':'%'+_0x1e0cc9['query'][_0xc18a('0x4d')]+'%'};return _0x360f56;})});}_0x5da8a4=_['merge']({},_0x5da8a4,_0x1e0cc9[_0xc18a('0x4f')]);return db[_0xc18a('0x64')][_0xc18a('0x51')](_0x5da8a4);}})['then'](function(_0xedcf58){if(_0xedcf58){return db['User'][_0xc18a('0x65')]({'where':{'id':_[_0xc18a('0x3b')](_0xedcf58,_0xc18a('0x66')),'role':_0xc18a('0x67')},'attributes':['id','name','chatPause',_0xc18a('0x68'),'createdAt']});}})[_0xc18a('0x34')](function(_0x214c4e){if(_0x214c4e){return{'count':_0x214c4e['count'],'rows':_[_0xc18a('0x3b')](_0x214c4e[_0xc18a('0x52')],function(_0xf49886){return{'membername':_0xf49886[_0xc18a('0x38')],'UserId':_0xf49886['id'],'queue_name':_0x51579b[_0xc18a('0x38')],'ChatQueueId':_0x51579b['id'],'interface':util[_0xc18a('0x69')]('%s/%s',_0xc18a('0x6a'),_0xf49886['name']),'penalty':0x0,'paused':_0xf49886['chatPause'],'createdAt':_0xf49886[_0xc18a('0x6b')],'updatedAt':_0xf49886[_0xc18a('0x68')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xc18a('0x34')](respondWithFilteredResult(_0x46cc7d,_0x5da8a4))[_0xc18a('0x28')](handleError(_0x46cc7d,null));};exports[_0xc18a('0x6c')]=function(_0x3f060d,_0x4588c3,_0x48169a){var _0x2bdcf3={};var _0x2ff530={};var _0x2a554b;var _0x3ac6a9;return db['ChatQueue']['findOne']({'where':{'id':_0x3f060d['params']['id']}})['then'](handleEntityNotFound(_0x4588c3,null))['then'](function(_0x206298){if(_0x206298){_0x2a554b=_0x206298;_0x2ff530[_0xc18a('0x45')]=_[_0xc18a('0x42')](db['Team'][_0xc18a('0x3d')]);_0x2ff530[_0xc18a('0x41')]=_['keys'](_0x3f060d[_0xc18a('0x41')]);_0x2ff530[_0xc18a('0x43')]=_[_0xc18a('0x44')](_0x2ff530[_0xc18a('0x45')],_0x2ff530['query']);_0x2bdcf3[_0xc18a('0x46')]=_['intersection'](_0x2ff530[_0xc18a('0x45')],qs[_0xc18a('0x47')](_0x3f060d[_0xc18a('0x41')][_0xc18a('0x47')]));_0x2bdcf3['attributes']=_0x2bdcf3[_0xc18a('0x46')]['length']?_0x2bdcf3[_0xc18a('0x46')]:_0x2ff530[_0xc18a('0x45')];_0x2bdcf3[_0xc18a('0x63')]=qs[_0xc18a('0x4a')](_0x3f060d['query'][_0xc18a('0x4a')]);_0x2bdcf3[_0xc18a('0x4b')]=qs[_0xc18a('0x43')](_[_0xc18a('0x4c')](_0x3f060d[_0xc18a('0x41')],_0x2ff530['filters']));if(_0x3f060d[_0xc18a('0x41')]['filter']){_0x2bdcf3[_0xc18a('0x4b')]=_['merge'](_0x2bdcf3[_0xc18a('0x4b')],{'$or':_['map'](_0x2bdcf3[_0xc18a('0x46')],function(_0x252fae){var _0x4b1fd0={};_0x4b1fd0[_0x252fae]={'$like':'%'+_0x3f060d[_0xc18a('0x41')][_0xc18a('0x4d')]+'%'};return _0x4b1fd0;})});}_0x2bdcf3=_[_0xc18a('0x4e')]({},_0x2bdcf3,_0x3f060d[_0xc18a('0x4f')]);return _0x2a554b[_0xc18a('0x6c')](_0x2bdcf3);}})['then'](function(_0x5ba05f){if(_0x5ba05f){_0x3ac6a9=_0x5ba05f[_0xc18a('0x48')];if(!_0x3f060d['query'][_0xc18a('0x62')](_0xc18a('0x49'))){_0x2bdcf3['limit']=qs[_0xc18a('0x2d')](_0x3f060d[_0xc18a('0x41')][_0xc18a('0x2d')]);_0x2bdcf3['offset']=qs[_0xc18a('0x2c')](_0x3f060d[_0xc18a('0x41')]['offset']);}return _0x2a554b[_0xc18a('0x6c')](_0x2bdcf3);}})[_0xc18a('0x34')](function(_0x2ee54a){if(_0x2ee54a){return _0x2ee54a?{'count':_0x3ac6a9,'rows':_0x2ee54a}:null;}})[_0xc18a('0x34')](respondWithResult(_0x4588c3,null))['catch'](handleError(_0x4588c3,null));};exports[_0xc18a('0x6d')]=function(_0x526d03,_0x171453,_0x25b07e){var _0x2f4d3b=_0x526d03[_0xc18a('0x57')][_0xc18a('0x6e')];return db[_0xc18a('0x6f')][_0xc18a('0x51')]({'where':{'id':_0x2f4d3b},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0xc18a('0x38'),_0xc18a('0x70'),'voicePause','interface'],'raw':!![]}]})[_0xc18a('0x34')](function(_0x3d38bc){if(_0x3d38bc){var _0x312ba0=_[_0xc18a('0x71')](_0x3d38bc,function(_0x31cf57){var _0x2d1782=_0x31cf57[_0xc18a('0x35')]({'plain':!![]});return _0x2d1782[_0xc18a('0x72')];});return db[_0xc18a('0x3c')][_0xc18a('0x55')]({'where':{'id':_0x526d03[_0xc18a('0x54')]['id']}})[_0xc18a('0x34')](function(_0x50107c){return db[_0xc18a('0x73')][_0xc18a('0x74')](function(_0x2d17e7){return _0x50107c[_0xc18a('0x6d')](_0x2f4d3b,{'transaction':_0x2d17e7})[_0xc18a('0x34')](function(){return BPromise[_0xc18a('0x75')](_0x312ba0,function(_0x378c25){return db['UserChatQueue'][_0xc18a('0x76')]({'where':{'UserId':_0x378c25['id'],'ChatQueueId':_0x526d03['params']['id']},'transaction':_0x2d17e7});});})[_0xc18a('0x34')](function(){_0x312ba0['forEach'](function(_0x35e966){socket[_0xc18a('0x77')]('userChatQueue:save',{'UserId':_0x35e966['id'],'ChatQueueId':_0x50107c['id']});});});});});}})[_0xc18a('0x34')](respondWithStatusCode(_0x171453,null))[_0xc18a('0x28')](handleError(_0x171453,null));};exports[_0xc18a('0x78')]=function(_0x52568d,_0x54b1ce,_0x3d3e8e){return db['Team'][_0xc18a('0x51')]({'where':{'id':_0x52568d[_0xc18a('0x41')]['ids']},'attributes':['id'],'include':[{'model':db[_0xc18a('0x79')],'as':_0xc18a('0x72'),'attributes':['id'],'raw':!![]}]})[_0xc18a('0x34')](handleEntityNotFound(_0x54b1ce,null))[_0xc18a('0x34')](function(_0x5094f1){var _0x364c1c=_[_0xc18a('0x3b')](_0x5094f1,'id');var _0x290484=[];var _0x3a9bc5=[];var _0x4cf789=squel['select']();_0x4cf789[_0xc18a('0x7a')]('tq.TeamId')['from'](_0xc18a('0x7b'),'tq')[_0xc18a('0x7c')](_0xc18a('0x7d'),'ut',_0xc18a('0x7e'))['where'](_0xc18a('0x7f'),_0x52568d[_0xc18a('0x54')]['id']);for(var _0x1a096e=0x0;_0x1a096e<_0x5094f1[_0xc18a('0x48')];_0x1a096e+=0x1){let _0x1868dd=_0x5094f1[_0x1a096e];for(var _0x27889b=0x0;_0x27889b<_0x1868dd[_0xc18a('0x72')][_0xc18a('0x48')];_0x27889b+=0x1){let _0x3c3c04=_0x1868dd['Agents'][_0x27889b];var _0x363477=_0x4cf789['clone']();_0x363477[_0xc18a('0x4b')](_0xc18a('0x80'),_0x3c3c04['id']);_0x3a9bc5[_0xc18a('0x81')](db[_0xc18a('0x73')][_0xc18a('0x41')](_0x363477[_0xc18a('0x82')](),{'type':db['sequelize'][_0xc18a('0x83')][_0xc18a('0x84')]})[_0xc18a('0x34')](function(_0x10ca5c){if(_0x10ca5c[_0xc18a('0x48')]===0x1){return _0x3c3c04['id'];}else{var _0x3b2a17=_[_0xc18a('0x85')](_[_0xc18a('0x3b')](_0x10ca5c,_0xc18a('0x86')),function(_0x615a31){return _[_0xc18a('0x87')](_0x364c1c,_0x615a31);});if(_0x3b2a17){return _0x3c3c04['id'];}}}));}}return BPromise['all'](_0x3a9bc5)[_0xc18a('0x34')](function(_0x130efb){_0x290484=_(_0x290484)[_0xc18a('0x88')](_0x130efb)[_0xc18a('0x89')]()[_0xc18a('0x8a')]();return db[_0xc18a('0x3c')][_0xc18a('0x55')]({'where':{'id':_0x52568d[_0xc18a('0x54')]['id']}})[_0xc18a('0x34')](function(_0x372bdb){return db[_0xc18a('0x73')]['transaction'](function(_0x15871b){return _0x372bdb[_0xc18a('0x78')](_0x52568d[_0xc18a('0x41')][_0xc18a('0x6e')],{'transaction':_0x15871b})[_0xc18a('0x34')](function(){if(!_[_0xc18a('0x8b')](_0x290484)){return _0x372bdb[_0xc18a('0x8c')](_0x290484,{'transaction':_0x15871b});}})[_0xc18a('0x34')](function(){_0x290484[_0xc18a('0x8d')](function(_0x43e2e2){socket[_0xc18a('0x77')]('userChatQueue:remove',{'UserId':_0x43e2e2,'ChatQueueId':_0x372bdb['id']});});});});});});})['then'](respondWithStatusCode(_0x54b1ce,null))[_0xc18a('0x28')](handleError(_0x54b1ce,null));};exports[_0xc18a('0x8e')]=function(_0x302117,_0x2ee8c4,_0x53df15){return db[_0xc18a('0x3c')][_0xc18a('0x55')]({'where':{'id':_0x302117[_0xc18a('0x54')]['id']}})[_0xc18a('0x34')](handleEntityNotFound(_0x2ee8c4,null))[_0xc18a('0x34')](function(_0xfc052d){if(_0xfc052d){return _0xfc052d[_0xc18a('0x8e')](_0x302117[_0xc18a('0x57')]['ids'],_[_0xc18a('0x8f')](_0x302117['body'],[_0xc18a('0x6e'),'id'])||{})['spread'](function(_0x47ba23){for(var _0x37707b=0x0;_0x37707b<_0x302117[_0xc18a('0x57')][_0xc18a('0x6e')][_0xc18a('0x48')];_0x37707b+=0x1){socket[_0xc18a('0x77')](_0xc18a('0x90'),{'UserId':Number(_0x302117[_0xc18a('0x57')]['ids'][_0x37707b]),'ChatQueueId':Number(_0x302117[_0xc18a('0x54')]['id'])});}return _0x47ba23;});}})[_0xc18a('0x34')](respondWithResult(_0x2ee8c4,null))[_0xc18a('0x28')](handleError(_0x2ee8c4,null));};exports[_0xc18a('0x8c')]=function(_0x23571d,_0x1e2938,_0x4feb11){return db['ChatQueue'][_0xc18a('0x55')]({'where':{'id':_0x23571d[_0xc18a('0x54')]['id']}})[_0xc18a('0x34')](handleEntityNotFound(_0x1e2938,null))[_0xc18a('0x34')](function(_0x5e621f){if(_0x5e621f){return _0x5e621f[_0xc18a('0x8c')](_0x23571d[_0xc18a('0x41')]['ids'])[_0xc18a('0x34')](function(){if(_[_0xc18a('0x91')](_0x23571d[_0xc18a('0x41')][_0xc18a('0x6e')])){for(var _0x16d8d2=0x0;_0x16d8d2<_0x23571d['query']['ids'][_0xc18a('0x48')];_0x16d8d2+=0x1){socket[_0xc18a('0x77')](_0xc18a('0x92'),{'UserId':Number(_0x23571d[_0xc18a('0x41')][_0xc18a('0x6e')][_0x16d8d2]),'ChatQueueId':Number(_0x23571d[_0xc18a('0x54')]['id'])});}}else{socket['emit'](_0xc18a('0x92'),{'UserId':Number(_0x23571d[_0xc18a('0x41')][_0xc18a('0x6e')]),'ChatQueueId':Number(_0x23571d['params']['id'])});}});}})[_0xc18a('0x34')](respondWithStatusCode(_0x1e2938,null))[_0xc18a('0x28')](handleError(_0x1e2938,null));};exports[_0xc18a('0x93')]=function(_0x541eef,_0x2deb4c,_0x2065a4){var _0x28912f={};var _0x513495={};var _0x38c4ef;var _0x49be50;return db[_0xc18a('0x3c')][_0xc18a('0x61')]({'where':{'id':_0x541eef[_0xc18a('0x54')]['id']}})[_0xc18a('0x34')](handleEntityNotFound(_0x2deb4c,null))['then'](function(_0xdeacc1){if(_0xdeacc1){_0x38c4ef=_0xdeacc1;_0x513495['model']=_['keys'](db[_0xc18a('0x79')][_0xc18a('0x3d')]);_0x513495[_0xc18a('0x41')]=_[_0xc18a('0x42')](_0x541eef[_0xc18a('0x41')]);_0x513495[_0xc18a('0x43')]=_[_0xc18a('0x44')](_0x513495['model'],_0x513495[_0xc18a('0x41')]);_0x28912f[_0xc18a('0x46')]=_[_0xc18a('0x44')](_0x513495[_0xc18a('0x45')],qs[_0xc18a('0x47')](_0x541eef[_0xc18a('0x41')]['fields']));_0x28912f[_0xc18a('0x46')]=_0x28912f['attributes'][_0xc18a('0x48')]?_0x28912f['attributes']:_0x513495['model'];_0x28912f[_0xc18a('0x63')]=qs[_0xc18a('0x4a')](_0x541eef[_0xc18a('0x41')][_0xc18a('0x4a')]);_0x28912f[_0xc18a('0x4b')]=qs[_0xc18a('0x43')](_['pick'](_0x541eef[_0xc18a('0x41')],_0x513495['filters']));if(_0x541eef['query'][_0xc18a('0x4d')]){_0x28912f[_0xc18a('0x4b')]=_[_0xc18a('0x4e')](_0x28912f['where'],{'$or':_['map'](_0x28912f['attributes'],function(_0x71093e){var _0x2d4e85={};_0x2d4e85[_0x71093e]={'$like':'%'+_0x541eef[_0xc18a('0x41')][_0xc18a('0x4d')]+'%'};return _0x2d4e85;})});}_0x28912f=_['merge']({},_0x28912f,_0x541eef['options']);return _0x38c4ef[_0xc18a('0x93')](_0x28912f);}})['then'](function(_0x2ead44){if(_0x2ead44){_0x49be50=_0x2ead44['length'];if(!_0x541eef[_0xc18a('0x41')][_0xc18a('0x62')](_0xc18a('0x49'))){_0x28912f['limit']=qs['limit'](_0x541eef[_0xc18a('0x41')][_0xc18a('0x2d')]);_0x28912f[_0xc18a('0x2c')]=qs['offset'](_0x541eef[_0xc18a('0x41')][_0xc18a('0x2c')]);}return _0x38c4ef[_0xc18a('0x93')](_0x28912f);}})[_0xc18a('0x34')](function(_0x4ac78e){if(_0x4ac78e){return _0x4ac78e?{'count':_0x49be50,'rows':_0x4ac78e}:null;}})[_0xc18a('0x34')](respondWithResult(_0x2deb4c,null))[_0xc18a('0x28')](handleError(_0x2deb4c,null));};
\ No newline at end of file
+var _0xabf5=['sequelize','addTeams','each','findOrCreate','forEach','removeTeams','ids','select','tq.TeamId','from','join','user_has_teams','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','includes','all','union','compact','value','transaction','isEmpty','emit','userChatQueue:remove','addAgents','omit','userChatQueue:save','removeAgents','isArray','getAgents','eml-format','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','destroy','get','ChatQueues','UserProfileResource','stack','name','index','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','merge','VIRTUAL','options','where','ChatQueue','includeAll','include','show','params','find','create','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','UserChatQueue','rawAttributes','findAll','agent','chatPause','updatedAt','createdAt','rows','format','%s/%s','SIP','getTeams','Team','pick','User','Agents','online','voicePause','flatMap'];(function(_0x1e19f5,_0x8fbdd8){var _0x418d0c=function(_0x24a12f){while(--_0x24a12f){_0x1e19f5['push'](_0x1e19f5['shift']());}};_0x418d0c(++_0x8fbdd8);}(_0xabf5,0xb8));var _0x5abf=function(_0x3424f9,_0x50195d){_0x3424f9=_0x3424f9-0x0;var _0x57ca33=_0xabf5[_0x3424f9];return _0x57ca33;};'use strict';var emlformat=require(_0x5abf('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5abf('0x1'));var Mustache=require(_0x5abf('0x2'));var util=require('util');var path=require(_0x5abf('0x3'));var sox=require(_0x5abf('0x4'));var csv=require(_0x5abf('0x5'));var ejs=require(_0x5abf('0x6'));var fs=require('fs');var fs_extra=require(_0x5abf('0x7'));var _=require(_0x5abf('0x8'));var squel=require(_0x5abf('0x9'));var crypto=require(_0x5abf('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x5abf('0x5'));var querystring=require(_0x5abf('0xb'));var Papa=require(_0x5abf('0xc'));var Redis=require('ioredis');var authService=require(_0x5abf('0xd'));var qs=require(_0x5abf('0xe'));var as=require(_0x5abf('0xf'));var hardwareService=require(_0x5abf('0x10'));var logger=require(_0x5abf('0x11'))(_0x5abf('0x12'));var utils=require(_0x5abf('0x13'));var config=require(_0x5abf('0x14'));var licenseUtil=require(_0x5abf('0x15'));var db=require('../../mysqldb')['db'];config[_0x5abf('0x16')]=_[_0x5abf('0x17')](config['redis'],{'host':_0x5abf('0x18'),'port':0x18eb});var socket=require(_0x5abf('0x19'))(new Redis(config[_0x5abf('0x16')]));require('./chatQueue.socket')[_0x5abf('0x1a')](socket);var jayson=require(_0x5abf('0x1b'));var client=jayson[_0x5abf('0x1c')][_0x5abf('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x53288c,_0x3d4f96,_0x259499,_0x67cfe3){return new BPromise(function(_0x839d5b,_0x5a8b7f){var _0x1a4eba=_0x67cfe3||client;return _0x1a4eba[_0x5abf('0x1e')](_0x53288c,_0x259499)[_0x5abf('0x1f')](function(_0x83a176){logger['info'](_0x5abf('0x20'),_0x3d4f96,_0x5abf('0x21'));logger[_0x5abf('0x22')](_0x5abf('0x23'),_0x3d4f96,'request\x20sent',JSON['stringify'](_0x83a176));if(_0x83a176[_0x5abf('0x24')]){if(_0x83a176[_0x5abf('0x24')][_0x5abf('0x25')]===0x1f4){logger[_0x5abf('0x24')](_0x5abf('0x20'),_0x3d4f96,_0x83a176[_0x5abf('0x24')]['message']);return _0x5a8b7f(_0x83a176['error'][_0x5abf('0x26')]);}logger[_0x5abf('0x24')](_0x5abf('0x20'),_0x3d4f96,_0x83a176[_0x5abf('0x24')][_0x5abf('0x26')]);return _0x839d5b(_0x83a176[_0x5abf('0x24')][_0x5abf('0x26')]);}else{logger[_0x5abf('0x27')]('ChatQueue,\x20%s,\x20%s',_0x3d4f96,_0x5abf('0x21'));_0x839d5b(_0x83a176['result'][_0x5abf('0x26')]);}})[_0x5abf('0x28')](function(_0x2e628a){logger['error']('ChatQueue,\x20%s,\x20%s',_0x3d4f96,_0x2e628a);_0x5a8b7f(_0x2e628a);});});}function respondWithStatusCode(_0x25fc44,_0x7d0201){_0x7d0201=_0x7d0201||0xcc;return function(_0x46c17d){if(_0x46c17d){return _0x25fc44[_0x5abf('0x29')](_0x7d0201);}return _0x25fc44[_0x5abf('0x2a')](_0x7d0201)[_0x5abf('0x2b')]();};}function respondWithResult(_0x2be738,_0x38a33d){_0x38a33d=_0x38a33d||0xc8;return function(_0x5158f5){if(_0x5158f5){return _0x2be738[_0x5abf('0x2a')](_0x38a33d)[_0x5abf('0x2c')](_0x5158f5);}};}function respondWithFilteredResult(_0x11d8b9,_0x1f0608){return function(_0x1e2d17){if(_0x1e2d17){var _0x34329c=typeof _0x1f0608[_0x5abf('0x2d')]===_0x5abf('0x2e')&&typeof _0x1f0608[_0x5abf('0x2f')]===_0x5abf('0x2e');var _0x42a9ad=_0x1e2d17[_0x5abf('0x30')];var _0x42c2c4=_0x34329c?0x0:_0x1f0608[_0x5abf('0x2d')];var _0x2a8b9a=_0x34329c?_0x1e2d17[_0x5abf('0x30')]:_0x1f0608[_0x5abf('0x2d')]+_0x1f0608['limit'];var _0x4218ad;if(_0x2a8b9a>=_0x42a9ad){_0x2a8b9a=_0x42a9ad;_0x4218ad=0xc8;}else{_0x4218ad=0xce;}_0x11d8b9[_0x5abf('0x2a')](_0x4218ad);return _0x11d8b9[_0x5abf('0x31')](_0x5abf('0x32'),_0x42c2c4+'-'+_0x2a8b9a+'/'+_0x42a9ad)['json'](_0x1e2d17);}return null;};}function patchUpdates(_0x1d2b99){return function(_0x4b9428){try{jsonpatch[_0x5abf('0x33')](_0x4b9428,_0x1d2b99,!![]);}catch(_0x43c65a){return BPromise['reject'](_0x43c65a);}return _0x4b9428['save']();};}function saveUpdates(_0x4c2f8a,_0xd14fb1){return function(_0x371275){if(_0x371275){return _0x371275['update'](_0x4c2f8a)[_0x5abf('0x1f')](function(_0x27bd59){return _0x27bd59;});}return null;};}function removeEntity(_0x5635a7,_0x4267b9){return function(_0x2ea9f2){if(_0x2ea9f2){return _0x2ea9f2[_0x5abf('0x34')]()[_0x5abf('0x1f')](function(){var _0xb40d8a=_0x2ea9f2[_0x5abf('0x35')]({'plain':!![]});var _0x52290b=_0x5abf('0x36');return db[_0x5abf('0x37')][_0x5abf('0x34')]({'where':{'type':_0x52290b,'resourceId':_0xb40d8a['id']}})[_0x5abf('0x1f')](function(){return _0x2ea9f2;});})['then'](function(){_0x5635a7['status'](0xcc)[_0x5abf('0x2b')]();});}};}function handleEntityNotFound(_0xa6bd07,_0x31baae){return function(_0xc5e509){if(!_0xc5e509){_0xa6bd07[_0x5abf('0x29')](0x194);}return _0xc5e509;};}function handleError(_0x587cbb,_0x1daa5b){_0x1daa5b=_0x1daa5b||0x1f4;return function(_0x583c51){logger[_0x5abf('0x24')](_0x583c51[_0x5abf('0x38')]);if(_0x583c51[_0x5abf('0x39')]){delete _0x583c51['name'];}_0x587cbb[_0x5abf('0x2a')](_0x1daa5b)['send'](_0x583c51);};}exports[_0x5abf('0x3a')]=function(_0x5bf5be,_0x15cd83){var _0x2ddc83={},_0x33f9e7={},_0x497dad={'count':0x0,'rows':[]};var _0x3f47ba=_[_0x5abf('0x3b')](db['ChatQueue']['rawAttributes'],function(_0xdbd1d1){return{'name':_0xdbd1d1[_0x5abf('0x3c')],'type':_0xdbd1d1[_0x5abf('0x3d')][_0x5abf('0x3e')]};});_0x33f9e7[_0x5abf('0x3f')]=_[_0x5abf('0x3b')](_0x3f47ba,'name');_0x33f9e7[_0x5abf('0x40')]=_[_0x5abf('0x41')](_0x5bf5be[_0x5abf('0x40')]);_0x33f9e7[_0x5abf('0x42')]=_[_0x5abf('0x43')](_0x33f9e7[_0x5abf('0x3f')],_0x33f9e7[_0x5abf('0x40')]);_0x2ddc83[_0x5abf('0x44')]=_[_0x5abf('0x43')](_0x33f9e7['model'],qs[_0x5abf('0x45')](_0x5bf5be[_0x5abf('0x40')][_0x5abf('0x45')]));_0x2ddc83[_0x5abf('0x44')]=_0x2ddc83[_0x5abf('0x44')][_0x5abf('0x46')]?_0x2ddc83[_0x5abf('0x44')]:_0x33f9e7['model'];if(!_0x5bf5be['query'][_0x5abf('0x47')](_0x5abf('0x48'))){_0x2ddc83['limit']=qs[_0x5abf('0x2f')](_0x5bf5be[_0x5abf('0x40')]['limit']);_0x2ddc83['offset']=qs[_0x5abf('0x2d')](_0x5bf5be['query'][_0x5abf('0x2d')]);}_0x2ddc83[_0x5abf('0x49')]=qs[_0x5abf('0x4a')](_0x5bf5be[_0x5abf('0x40')][_0x5abf('0x4a')]);_0x2ddc83['where']=qs[_0x5abf('0x42')](_['pick'](_0x5bf5be['query'],_0x33f9e7[_0x5abf('0x42')]),_0x3f47ba);if(_0x5bf5be[_0x5abf('0x40')][_0x5abf('0x4b')]){_0x2ddc83['where']=_[_0x5abf('0x4c')](_0x2ddc83['where'],{'$or':_[_0x5abf('0x3b')](_0x3f47ba,function(_0xbf803b){if(_0xbf803b['type']!==_0x5abf('0x4d')){var _0xebb61c={};_0xebb61c[_0xbf803b['name']]={'$like':'%'+_0x5bf5be[_0x5abf('0x40')][_0x5abf('0x4b')]+'%'};return _0xebb61c;}})});}_0x2ddc83=_[_0x5abf('0x4c')]({},_0x2ddc83,_0x5bf5be[_0x5abf('0x4e')]);var _0x50d381={'where':_0x2ddc83[_0x5abf('0x4f')]};return db[_0x5abf('0x50')][_0x5abf('0x30')](_0x50d381)[_0x5abf('0x1f')](function(_0x16d372){_0x497dad[_0x5abf('0x30')]=_0x16d372;if(_0x5bf5be[_0x5abf('0x40')][_0x5abf('0x51')]){_0x2ddc83[_0x5abf('0x52')]=[{'all':!![]}];}return db[_0x5abf('0x50')]['findAll'](_0x2ddc83);})[_0x5abf('0x1f')](function(_0x5f17cd){_0x497dad['rows']=_0x5f17cd;return _0x497dad;})[_0x5abf('0x1f')](respondWithFilteredResult(_0x15cd83,_0x2ddc83))[_0x5abf('0x28')](handleError(_0x15cd83,null));};exports[_0x5abf('0x53')]=function(_0x37db47,_0x50480d){var _0x23341f={'raw':!![],'where':{'id':_0x37db47[_0x5abf('0x54')]['id']}},_0x245157={};_0x245157[_0x5abf('0x3f')]=_[_0x5abf('0x41')](db[_0x5abf('0x50')]['rawAttributes']);_0x245157[_0x5abf('0x40')]=_['keys'](_0x37db47[_0x5abf('0x40')]);_0x245157['filters']=_[_0x5abf('0x43')](_0x245157[_0x5abf('0x3f')],_0x245157[_0x5abf('0x40')]);_0x23341f[_0x5abf('0x44')]=_[_0x5abf('0x43')](_0x245157[_0x5abf('0x3f')],qs['fields'](_0x37db47[_0x5abf('0x40')][_0x5abf('0x45')]));_0x23341f[_0x5abf('0x44')]=_0x23341f[_0x5abf('0x44')][_0x5abf('0x46')]?_0x23341f['attributes']:_0x245157[_0x5abf('0x3f')];if(_0x37db47['query'][_0x5abf('0x51')]){_0x23341f[_0x5abf('0x52')]=[{'all':!![]}];}_0x23341f=_[_0x5abf('0x4c')]({},_0x23341f,_0x37db47[_0x5abf('0x4e')]);return db[_0x5abf('0x50')][_0x5abf('0x55')](_0x23341f)[_0x5abf('0x1f')](handleEntityNotFound(_0x50480d,null))[_0x5abf('0x1f')](respondWithResult(_0x50480d,null))[_0x5abf('0x28')](handleError(_0x50480d,null));};exports['create']=function(_0x116d74,_0x3e13d7){return db[_0x5abf('0x50')][_0x5abf('0x56')](_0x116d74['body'],{})[_0x5abf('0x1f')](function(_0xc2be7a){var _0x1a1ad3=_0x116d74[_0x5abf('0x57')][_0x5abf('0x35')]({'plain':!![]});if(!_0x1a1ad3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1a1ad3[_0x5abf('0x58')]===_0x5abf('0x57')){var _0x26e5af=_0xc2be7a[_0x5abf('0x35')]({'plain':!![]});var _0x36c79d='ChatQueues';return db[_0x5abf('0x59')][_0x5abf('0x55')]({'where':{'name':_0x36c79d,'userProfileId':_0x1a1ad3[_0x5abf('0x5a')]},'raw':!![]})['then'](function(_0x522e42){if(_0x522e42&&_0x522e42[_0x5abf('0x5b')]===0x0){return db[_0x5abf('0x37')]['create']({'name':_0x26e5af['name'],'resourceId':_0x26e5af['id'],'type':_0x522e42[_0x5abf('0x39')],'sectionId':_0x522e42['id']},{})['then'](function(){return _0xc2be7a;});}else{return _0xc2be7a;}})[_0x5abf('0x28')](function(_0x8b3c73){logger[_0x5abf('0x24')](_0x5abf('0x5c'),_0x8b3c73);throw _0x8b3c73;});}return _0xc2be7a;})['then'](respondWithResult(_0x3e13d7,0xc9))[_0x5abf('0x28')](handleError(_0x3e13d7,null));};exports['update']=function(_0xd0f4f9,_0x335a24){if(_0xd0f4f9[_0x5abf('0x5d')]['id']){delete _0xd0f4f9['body']['id'];}return db[_0x5abf('0x50')]['find']({'where':{'id':_0xd0f4f9[_0x5abf('0x54')]['id']}})['then'](handleEntityNotFound(_0x335a24,null))[_0x5abf('0x1f')](saveUpdates(_0xd0f4f9[_0x5abf('0x5d')],null))[_0x5abf('0x1f')](respondWithResult(_0x335a24,null))[_0x5abf('0x28')](handleError(_0x335a24,null));};exports['destroy']=function(_0xa3c2d6,_0x4ba0a8){return db['ChatQueue'][_0x5abf('0x55')]({'where':{'id':_0xa3c2d6[_0x5abf('0x54')]['id']}})[_0x5abf('0x1f')](handleEntityNotFound(_0x4ba0a8,null))['then'](removeEntity(_0x4ba0a8,null))[_0x5abf('0x28')](handleError(_0x4ba0a8,null));};exports['describe']=function(_0x21046d,_0x570be5){return db['ChatQueue'][_0x5abf('0x5e')]()['then'](respondWithResult(_0x570be5,null))['catch'](handleError(_0x570be5,null));};exports[_0x5abf('0x5f')]=function(_0x162217,_0x7ab347,_0x33e7e3){var _0xe524f0={'raw':!![],'where':{}},_0x43bcac={},_0x1d0dd4;return db[_0x5abf('0x50')][_0x5abf('0x60')]({'where':{'id':_0x162217[_0x5abf('0x54')]['id']}})[_0x5abf('0x1f')](handleEntityNotFound(_0x7ab347,null))[_0x5abf('0x1f')](function(_0x3c2e86){if(_0x3c2e86){_0x1d0dd4=_0x3c2e86[_0x5abf('0x35')]({'plain':!![]});_0x43bcac[_0x5abf('0x3f')]=_[_0x5abf('0x41')](db[_0x5abf('0x61')][_0x5abf('0x62')]);_0x43bcac['query']=_[_0x5abf('0x41')](_0x162217[_0x5abf('0x40')]);_0x43bcac[_0x5abf('0x42')]=_['intersection'](_0x43bcac[_0x5abf('0x3f')],_0x43bcac['query']);_0xe524f0[_0x5abf('0x44')]=_['intersection'](_0x43bcac[_0x5abf('0x3f')],qs['fields'](_0x162217[_0x5abf('0x40')][_0x5abf('0x45')]));_0xe524f0[_0x5abf('0x44')]=_0xe524f0[_0x5abf('0x44')][_0x5abf('0x46')]?_0xe524f0[_0x5abf('0x44')]:_0x43bcac[_0x5abf('0x3f')];if(!_0x162217['query']['hasOwnProperty'](_0x5abf('0x48'))){_0xe524f0[_0x5abf('0x2f')]=qs[_0x5abf('0x2f')](_0x162217['query'][_0x5abf('0x2f')]);_0xe524f0[_0x5abf('0x2d')]=qs[_0x5abf('0x2d')](_0x162217[_0x5abf('0x40')]['offset']);}_0xe524f0['order']=qs['sort'](_0x162217[_0x5abf('0x40')]['sort']);_0xe524f0[_0x5abf('0x4f')]=qs[_0x5abf('0x42')](_['pick'](_0x162217[_0x5abf('0x40')],_0x43bcac[_0x5abf('0x42')]));_0xe524f0[_0x5abf('0x4f')]['ChatQueueId']=_0x3c2e86['id'];if(_0x162217['query'][_0x5abf('0x4b')]){_0xe524f0[_0x5abf('0x4f')]=_[_0x5abf('0x4c')](_0xe524f0['where'],{'$or':_['map'](_0xe524f0[_0x5abf('0x44')],function(_0xb640dc){var _0x2ed2c0={};_0x2ed2c0[_0xb640dc]={'$like':'%'+_0x162217[_0x5abf('0x40')][_0x5abf('0x4b')]+'%'};return _0x2ed2c0;})});}_0xe524f0=_[_0x5abf('0x4c')]({},_0xe524f0,_0x162217[_0x5abf('0x4e')]);return db['UserChatQueue'][_0x5abf('0x63')](_0xe524f0);}})[_0x5abf('0x1f')](function(_0x4531bf){if(_0x4531bf){return db['User']['findAndCountAll']({'where':{'id':_['map'](_0x4531bf,'UserId'),'role':_0x5abf('0x64')},'attributes':['id',_0x5abf('0x39'),_0x5abf('0x65'),_0x5abf('0x66'),_0x5abf('0x67')]});}})[_0x5abf('0x1f')](function(_0x4da4a9){if(_0x4da4a9){return{'count':_0x4da4a9[_0x5abf('0x30')],'rows':_['map'](_0x4da4a9[_0x5abf('0x68')],function(_0x448371){return{'membername':_0x448371[_0x5abf('0x39')],'UserId':_0x448371['id'],'queue_name':_0x1d0dd4[_0x5abf('0x39')],'ChatQueueId':_0x1d0dd4['id'],'interface':util[_0x5abf('0x69')](_0x5abf('0x6a'),_0x5abf('0x6b'),_0x448371[_0x5abf('0x39')]),'penalty':0x0,'paused':_0x448371[_0x5abf('0x65')],'createdAt':_0x448371[_0x5abf('0x67')],'updatedAt':_0x448371[_0x5abf('0x66')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x5abf('0x1f')](respondWithFilteredResult(_0x7ab347,_0xe524f0))['catch'](handleError(_0x7ab347,null));};exports[_0x5abf('0x6c')]=function(_0x33ba7a,_0xb7135,_0x1f9e49){var _0x556518={};var _0x477efa={};var _0x109846;var _0x39891e;return db['ChatQueue'][_0x5abf('0x60')]({'where':{'id':_0x33ba7a['params']['id']}})[_0x5abf('0x1f')](handleEntityNotFound(_0xb7135,null))['then'](function(_0x2b57f4){if(_0x2b57f4){_0x109846=_0x2b57f4;_0x477efa['model']=_[_0x5abf('0x41')](db[_0x5abf('0x6d')][_0x5abf('0x62')]);_0x477efa[_0x5abf('0x40')]=_['keys'](_0x33ba7a[_0x5abf('0x40')]);_0x477efa[_0x5abf('0x42')]=_[_0x5abf('0x43')](_0x477efa[_0x5abf('0x3f')],_0x477efa['query']);_0x556518['attributes']=_[_0x5abf('0x43')](_0x477efa[_0x5abf('0x3f')],qs[_0x5abf('0x45')](_0x33ba7a[_0x5abf('0x40')][_0x5abf('0x45')]));_0x556518[_0x5abf('0x44')]=_0x556518['attributes'][_0x5abf('0x46')]?_0x556518[_0x5abf('0x44')]:_0x477efa['model'];_0x556518[_0x5abf('0x49')]=qs[_0x5abf('0x4a')](_0x33ba7a[_0x5abf('0x40')]['sort']);_0x556518[_0x5abf('0x4f')]=qs['filters'](_[_0x5abf('0x6e')](_0x33ba7a[_0x5abf('0x40')],_0x477efa[_0x5abf('0x42')]));if(_0x33ba7a[_0x5abf('0x40')][_0x5abf('0x4b')]){_0x556518[_0x5abf('0x4f')]=_[_0x5abf('0x4c')](_0x556518[_0x5abf('0x4f')],{'$or':_[_0x5abf('0x3b')](_0x556518[_0x5abf('0x44')],function(_0x1b423d){var _0x4c225f={};_0x4c225f[_0x1b423d]={'$like':'%'+_0x33ba7a[_0x5abf('0x40')][_0x5abf('0x4b')]+'%'};return _0x4c225f;})});}_0x556518=_[_0x5abf('0x4c')]({},_0x556518,_0x33ba7a[_0x5abf('0x4e')]);return _0x109846[_0x5abf('0x6c')](_0x556518);}})[_0x5abf('0x1f')](function(_0xc711c4){if(_0xc711c4){_0x39891e=_0xc711c4['length'];if(!_0x33ba7a[_0x5abf('0x40')][_0x5abf('0x47')](_0x5abf('0x48'))){_0x556518['limit']=qs[_0x5abf('0x2f')](_0x33ba7a[_0x5abf('0x40')]['limit']);_0x556518[_0x5abf('0x2d')]=qs['offset'](_0x33ba7a['query']['offset']);}return _0x109846['getTeams'](_0x556518);}})[_0x5abf('0x1f')](function(_0x3729e1){if(_0x3729e1){return _0x3729e1?{'count':_0x39891e,'rows':_0x3729e1}:null;}})[_0x5abf('0x1f')](respondWithResult(_0xb7135,null))[_0x5abf('0x28')](handleError(_0xb7135,null));};exports['addTeams']=function(_0x236129,_0x4d1dfe,_0x13a8ad){var _0x1b6957=_0x236129[_0x5abf('0x5d')]['ids'];return db[_0x5abf('0x6d')][_0x5abf('0x63')]({'where':{'id':_0x1b6957},'attributes':['id'],'include':[{'model':db[_0x5abf('0x6f')],'as':_0x5abf('0x70'),'attributes':['id',_0x5abf('0x39'),_0x5abf('0x71'),_0x5abf('0x72'),'interface'],'raw':!![]}]})[_0x5abf('0x1f')](function(_0x4e3b37){if(_0x4e3b37){var _0x1fc6f2=_[_0x5abf('0x73')](_0x4e3b37,function(_0x3387a5){var _0x450c31=_0x3387a5['get']({'plain':!![]});return _0x450c31[_0x5abf('0x70')];});return db['ChatQueue'][_0x5abf('0x55')]({'where':{'id':_0x236129['params']['id']}})[_0x5abf('0x1f')](function(_0x269471){return db[_0x5abf('0x74')]['transaction'](function(_0x346211){return _0x269471[_0x5abf('0x75')](_0x1b6957,{'transaction':_0x346211})[_0x5abf('0x1f')](function(){return BPromise[_0x5abf('0x76')](_0x1fc6f2,function(_0x2e41e2){return db['UserChatQueue'][_0x5abf('0x77')]({'where':{'UserId':_0x2e41e2['id'],'ChatQueueId':_0x236129[_0x5abf('0x54')]['id']},'transaction':_0x346211});});})[_0x5abf('0x1f')](function(){_0x1fc6f2[_0x5abf('0x78')](function(_0x3d8847){socket['emit']('userChatQueue:save',{'UserId':_0x3d8847['id'],'ChatQueueId':_0x269471['id']});});});});});}})[_0x5abf('0x1f')](respondWithStatusCode(_0x4d1dfe,null))[_0x5abf('0x28')](handleError(_0x4d1dfe,null));};exports[_0x5abf('0x79')]=function(_0x172bc2,_0x2137fa,_0x2b520c){return db[_0x5abf('0x6d')]['findAll']({'where':{'id':_0x172bc2['query'][_0x5abf('0x7a')]},'attributes':['id'],'include':[{'model':db[_0x5abf('0x6f')],'as':_0x5abf('0x70'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x2137fa,null))[_0x5abf('0x1f')](function(_0x1981fa){var _0x2c6904=_[_0x5abf('0x3b')](_0x1981fa,'id');var _0x4a04c3=[];var _0x29e65e=[];var _0x229ec0=squel[_0x5abf('0x7b')]();_0x229ec0['field'](_0x5abf('0x7c'))[_0x5abf('0x7d')]('team_has_chat_queues','tq')[_0x5abf('0x7e')](_0x5abf('0x7f'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x5abf('0x4f')](_0x5abf('0x80'),_0x172bc2[_0x5abf('0x54')]['id']);for(var _0x419777=0x0;_0x419777<_0x1981fa[_0x5abf('0x46')];_0x419777+=0x1){let _0x3b5dac=_0x1981fa[_0x419777];for(var _0x56107e=0x0;_0x56107e<_0x3b5dac[_0x5abf('0x70')][_0x5abf('0x46')];_0x56107e+=0x1){let _0x282e33=_0x3b5dac[_0x5abf('0x70')][_0x56107e];var _0xb42dce=_0x229ec0[_0x5abf('0x81')]();_0xb42dce[_0x5abf('0x4f')](_0x5abf('0x82'),_0x282e33['id']);_0x29e65e[_0x5abf('0x83')](db['sequelize']['query'](_0xb42dce['toString'](),{'type':db[_0x5abf('0x74')][_0x5abf('0x84')][_0x5abf('0x85')]})[_0x5abf('0x1f')](function(_0x286644){if(_0x286644['length']===0x1){return _0x282e33['id'];}else{var _0x2de0e6=_[_0x5abf('0x86')](_[_0x5abf('0x3b')](_0x286644,'TeamId'),function(_0x208215){return _[_0x5abf('0x87')](_0x2c6904,_0x208215);});if(_0x2de0e6){return _0x282e33['id'];}}}));}}return BPromise[_0x5abf('0x88')](_0x29e65e)[_0x5abf('0x1f')](function(_0x3c0e17){_0x4a04c3=_(_0x4a04c3)[_0x5abf('0x89')](_0x3c0e17)[_0x5abf('0x8a')]()[_0x5abf('0x8b')]();return db[_0x5abf('0x50')]['find']({'where':{'id':_0x172bc2[_0x5abf('0x54')]['id']}})[_0x5abf('0x1f')](function(_0x243233){return db[_0x5abf('0x74')][_0x5abf('0x8c')](function(_0x123a89){return _0x243233['removeTeams'](_0x172bc2['query'][_0x5abf('0x7a')],{'transaction':_0x123a89})[_0x5abf('0x1f')](function(){if(!_[_0x5abf('0x8d')](_0x4a04c3)){return _0x243233['removeAgents'](_0x4a04c3,{'transaction':_0x123a89});}})[_0x5abf('0x1f')](function(){_0x4a04c3[_0x5abf('0x78')](function(_0x3d0094){socket[_0x5abf('0x8e')](_0x5abf('0x8f'),{'UserId':_0x3d0094,'ChatQueueId':_0x243233['id']});});});});});});})[_0x5abf('0x1f')](respondWithStatusCode(_0x2137fa,null))[_0x5abf('0x28')](handleError(_0x2137fa,null));};exports[_0x5abf('0x90')]=function(_0x4de1d1,_0x24a80c,_0x846094){return db[_0x5abf('0x50')][_0x5abf('0x55')]({'where':{'id':_0x4de1d1[_0x5abf('0x54')]['id']}})[_0x5abf('0x1f')](handleEntityNotFound(_0x24a80c,null))[_0x5abf('0x1f')](function(_0x317310){if(_0x317310){return _0x317310[_0x5abf('0x90')](_0x4de1d1['body'][_0x5abf('0x7a')],_[_0x5abf('0x91')](_0x4de1d1['body'],[_0x5abf('0x7a'),'id'])||{})['spread'](function(_0x21cae7){for(var _0x57d0a6=0x0;_0x57d0a6<_0x4de1d1[_0x5abf('0x5d')][_0x5abf('0x7a')]['length'];_0x57d0a6+=0x1){socket[_0x5abf('0x8e')](_0x5abf('0x92'),{'UserId':Number(_0x4de1d1[_0x5abf('0x5d')][_0x5abf('0x7a')][_0x57d0a6]),'ChatQueueId':Number(_0x4de1d1[_0x5abf('0x54')]['id'])});}return _0x21cae7;});}})['then'](respondWithResult(_0x24a80c,null))[_0x5abf('0x28')](handleError(_0x24a80c,null));};exports[_0x5abf('0x93')]=function(_0x1cf9b6,_0x57e939,_0x15b506){return db[_0x5abf('0x50')][_0x5abf('0x55')]({'where':{'id':_0x1cf9b6['params']['id']}})[_0x5abf('0x1f')](handleEntityNotFound(_0x57e939,null))[_0x5abf('0x1f')](function(_0x43be2d){if(_0x43be2d){return _0x43be2d[_0x5abf('0x93')](_0x1cf9b6[_0x5abf('0x40')][_0x5abf('0x7a')])[_0x5abf('0x1f')](function(){if(_[_0x5abf('0x94')](_0x1cf9b6[_0x5abf('0x40')]['ids'])){for(var _0x270619=0x0;_0x270619<_0x1cf9b6[_0x5abf('0x40')]['ids']['length'];_0x270619+=0x1){socket[_0x5abf('0x8e')](_0x5abf('0x8f'),{'UserId':Number(_0x1cf9b6[_0x5abf('0x40')]['ids'][_0x270619]),'ChatQueueId':Number(_0x1cf9b6[_0x5abf('0x54')]['id'])});}}else{socket[_0x5abf('0x8e')](_0x5abf('0x8f'),{'UserId':Number(_0x1cf9b6['query'][_0x5abf('0x7a')]),'ChatQueueId':Number(_0x1cf9b6[_0x5abf('0x54')]['id'])});}});}})[_0x5abf('0x1f')](respondWithStatusCode(_0x57e939,null))[_0x5abf('0x28')](handleError(_0x57e939,null));};exports['getAgents']=function(_0x391b6c,_0x517ad8,_0x3b7410){var _0x30e19f={};var _0x1486b6={};var _0x3cc1ee;var _0x5aeb5e;return db['ChatQueue'][_0x5abf('0x60')]({'where':{'id':_0x391b6c[_0x5abf('0x54')]['id']}})['then'](handleEntityNotFound(_0x517ad8,null))[_0x5abf('0x1f')](function(_0x1ba88c){if(_0x1ba88c){_0x3cc1ee=_0x1ba88c;_0x1486b6[_0x5abf('0x3f')]=_[_0x5abf('0x41')](db[_0x5abf('0x6f')][_0x5abf('0x62')]);_0x1486b6['query']=_['keys'](_0x391b6c[_0x5abf('0x40')]);_0x1486b6[_0x5abf('0x42')]=_[_0x5abf('0x43')](_0x1486b6[_0x5abf('0x3f')],_0x1486b6[_0x5abf('0x40')]);_0x30e19f[_0x5abf('0x44')]=_['intersection'](_0x1486b6['model'],qs['fields'](_0x391b6c[_0x5abf('0x40')]['fields']));_0x30e19f[_0x5abf('0x44')]=_0x30e19f[_0x5abf('0x44')][_0x5abf('0x46')]?_0x30e19f[_0x5abf('0x44')]:_0x1486b6[_0x5abf('0x3f')];_0x30e19f['order']=qs[_0x5abf('0x4a')](_0x391b6c[_0x5abf('0x40')][_0x5abf('0x4a')]);_0x30e19f['where']=qs[_0x5abf('0x42')](_[_0x5abf('0x6e')](_0x391b6c[_0x5abf('0x40')],_0x1486b6[_0x5abf('0x42')]));if(_0x391b6c[_0x5abf('0x40')][_0x5abf('0x4b')]){_0x30e19f[_0x5abf('0x4f')]=_[_0x5abf('0x4c')](_0x30e19f[_0x5abf('0x4f')],{'$or':_['map'](_0x30e19f[_0x5abf('0x44')],function(_0x164f9b){var _0x1ce365={};_0x1ce365[_0x164f9b]={'$like':'%'+_0x391b6c[_0x5abf('0x40')][_0x5abf('0x4b')]+'%'};return _0x1ce365;})});}_0x30e19f=_[_0x5abf('0x4c')]({},_0x30e19f,_0x391b6c[_0x5abf('0x4e')]);return _0x3cc1ee[_0x5abf('0x95')](_0x30e19f);}})[_0x5abf('0x1f')](function(_0x11e2ea){if(_0x11e2ea){_0x5aeb5e=_0x11e2ea[_0x5abf('0x46')];if(!_0x391b6c[_0x5abf('0x40')][_0x5abf('0x47')](_0x5abf('0x48'))){_0x30e19f[_0x5abf('0x2f')]=qs[_0x5abf('0x2f')](_0x391b6c['query'][_0x5abf('0x2f')]);_0x30e19f[_0x5abf('0x2d')]=qs[_0x5abf('0x2d')](_0x391b6c['query'][_0x5abf('0x2d')]);}return _0x3cc1ee[_0x5abf('0x95')](_0x30e19f);}})[_0x5abf('0x1f')](function(_0x1c5256){if(_0x1c5256){return _0x1c5256?{'count':_0x5aeb5e,'rows':_0x1c5256}:null;}})['then'](respondWithResult(_0x517ad8,null))['catch'](handleError(_0x517ad8,null));};
\ No newline at end of file
index 5f9cbcd..cbff14a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4d3=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatQueue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa4d3,0x1d3));var _0x3a4d=function(_0x32d950,_0xb49e40){_0x32d950=_0x32d950-0x0;var _0x4ce275=_0xa4d3[_0x32d950];return _0x4ce275;};'use strict';var EventEmitter=require(_0x3a4d('0x0'));var ChatQueue=require(_0x3a4d('0x1'))['db'][_0x3a4d('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3a4d('0x3'),'afterUpdate':_0x3a4d('0x4'),'afterDestroy':_0x3a4d('0x5')};function emitEvent(_0x34b3cf){return function(_0x565bd0,_0xd0ad79,_0x2391b0){ChatQueueEvents['emit'](_0x34b3cf+':'+_0x565bd0['id'],_0x565bd0);ChatQueueEvents[_0x3a4d('0x6')](_0x34b3cf,_0x565bd0);_0x2391b0(null);};}for(var e in events){if(events[_0x3a4d('0x7')](e)){var event=events[e];ChatQueue[_0x3a4d('0x8')](e,emitEvent(event));}}module[_0x3a4d('0x9')]=ChatQueueEvents;
\ No newline at end of file
+var _0x335f=['../../mysqldb','ChatQueue','setMaxListeners','update','emit','hasOwnProperty','events'];(function(_0x504e95,_0xc57356){var _0x3ab8ee=function(_0x3f1104){while(--_0x3f1104){_0x504e95['push'](_0x504e95['shift']());}};_0x3ab8ee(++_0xc57356);}(_0x335f,0xfb));var _0xf335=function(_0x43855d,_0x2b362b){_0x43855d=_0x43855d-0x0;var _0x29c80a=_0x335f[_0x43855d];return _0x29c80a;};'use strict';var EventEmitter=require(_0xf335('0x0'));var ChatQueue=require(_0xf335('0x1'))['db'][_0xf335('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xf335('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xf335('0x4'),'afterDestroy':'remove'};function emitEvent(_0x44f9cb){return function(_0xbc8680,_0x3dd964,_0x3a7c6e){ChatQueueEvents[_0xf335('0x5')](_0x44f9cb+':'+_0xbc8680['id'],_0xbc8680);ChatQueueEvents[_0xf335('0x5')](_0x44f9cb,_0xbc8680);_0x3a7c6e(null);};}for(var e in events){if(events[_0xf335('0x6')](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module['exports']=ChatQueueEvents;
\ No newline at end of file
index d667d5a..29ee968 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dab=['../../config/logger','moment','bluebird','request-promise','path','rimraf','./chatQueue.attributes','exports','define','ChatQueue','chat_queues','util'];(function(_0x7fdad7,_0xe88c38){var _0x26e175=function(_0x49ea5c){while(--_0x49ea5c){_0x7fdad7['push'](_0x7fdad7['shift']());}};_0x26e175(++_0xe88c38);}(_0x4dab,0x1a3));var _0xb4da=function(_0x3b037b,_0x1be37a){_0x3b037b=_0x3b037b-0x0;var _0x4ece31=_0x4dab[_0x3b037b];return _0x4ece31;};'use strict';var _=require('lodash');var util=require(_0xb4da('0x0'));var logger=require(_0xb4da('0x1'))('api');var moment=require(_0xb4da('0x2'));var BPromise=require(_0xb4da('0x3'));var rp=require(_0xb4da('0x4'));var fs=require('fs');var path=require(_0xb4da('0x5'));var rimraf=require(_0xb4da('0x6'));var config=require('../../config/environment');var attributes=require(_0xb4da('0x7'));module[_0xb4da('0x8')]=function(_0x281e76,_0x8bafc7){return _0x281e76[_0xb4da('0x9')](_0xb4da('0xa'),attributes,{'tableName':_0xb4da('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x22f4=['path','rimraf','../../config/environment','./chatQueue.attributes','define','ChatQueue','chat_queues','lodash','../../config/logger','api','moment','request-promise'];(function(_0x163f11,_0x1e2509){var _0x3830a9=function(_0x2e0bdb){while(--_0x2e0bdb){_0x163f11['push'](_0x163f11['shift']());}};_0x3830a9(++_0x1e2509);}(_0x22f4,0x17b));var _0x422f=function(_0x48c615,_0x4cc757){_0x48c615=_0x48c615-0x0;var _0x3d9e22=_0x22f4[_0x48c615];return _0x3d9e22;};'use strict';var _=require(_0x422f('0x0'));var util=require('util');var logger=require(_0x422f('0x1'))(_0x422f('0x2'));var moment=require(_0x422f('0x3'));var BPromise=require('bluebird');var rp=require(_0x422f('0x4'));var fs=require('fs');var path=require(_0x422f('0x5'));var rimraf=require(_0x422f('0x6'));var config=require(_0x422f('0x7'));var attributes=require(_0x422f('0x8'));module['exports']=function(_0x48b35b,_0x167c3e){return _0x48b35b[_0x422f('0x9')](_0x422f('0xa'),attributes,{'tableName':_0x422f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ae25fa4..edece27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34b7=['code','message','catch','GetChatQueue','ChatQueue','findAll','options','raw','where','attributes','limit','include','map','model','ShowChatQueue','find','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x4204b0,_0xb1d9c4){var _0x2afcce=function(_0x682d04){while(--_0x682d04){_0x4204b0['push'](_0x4204b0['shift']());}};_0x2afcce(++_0xb1d9c4);}(_0x34b7,0x196));var _0x734b=function(_0xc80702,_0x18ef50){_0xc80702=_0xc80702-0x0;var _0x4c4c76=_0x34b7[_0xc80702];return _0x4c4c76;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x734b('0x0'));var BPromise=require(_0x734b('0x1'));var rs=require(_0x734b('0x2'));var fs=require('fs');var Redis=require(_0x734b('0x3'));var db=require(_0x734b('0x4'))['db'];var utils=require(_0x734b('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x734b('0x6'));var jayson=require(_0x734b('0x7'));var client=jayson[_0x734b('0x8')][_0x734b('0x9')]({'port':0x232a});config[_0x734b('0xa')]=_[_0x734b('0xb')](config['redis'],{'host':_0x734b('0xc'),'port':0x18eb});var socket=require(_0x734b('0xd'))(new Redis(config['redis']));require('./chatQueue.socket')['register'](socket);function respondWithRpcPromise(_0x19a88e,_0x598dee,_0x43c5e0){return new BPromise(function(_0x333738,_0x2860a2){return client[_0x734b('0xe')](_0x19a88e,_0x43c5e0)[_0x734b('0xf')](function(_0x16e451){logger[_0x734b('0x10')](_0x734b('0x11'),_0x598dee,_0x734b('0x12'));logger[_0x734b('0x13')](_0x734b('0x14'),_0x598dee,_0x734b('0x12'),JSON[_0x734b('0x15')](_0x16e451));if(_0x16e451[_0x734b('0x16')]){if(_0x16e451['error'][_0x734b('0x17')]===0x1f4){logger[_0x734b('0x16')](_0x734b('0x11'),_0x598dee,_0x16e451[_0x734b('0x16')][_0x734b('0x18')]);return _0x2860a2(_0x16e451[_0x734b('0x16')][_0x734b('0x18')]);}logger[_0x734b('0x16')](_0x734b('0x11'),_0x598dee,_0x16e451[_0x734b('0x16')][_0x734b('0x18')]);return _0x333738(_0x16e451['error'][_0x734b('0x18')]);}else{logger[_0x734b('0x10')](_0x734b('0x11'),_0x598dee,_0x734b('0x12'));_0x333738(_0x16e451['result']['message']);}})[_0x734b('0x19')](function(_0x3033cd){logger[_0x734b('0x16')](_0x734b('0x11'),_0x598dee,_0x3033cd);_0x2860a2(_0x3033cd);});});}exports[_0x734b('0x1a')]=function(_0xfe567d){var _0x1c68c4=this;return new Promise(function(_0x6572ee,_0x67eed){return db[_0x734b('0x1b')][_0x734b('0x1c')]({'raw':_0xfe567d[_0x734b('0x1d')]?_0xfe567d[_0x734b('0x1d')][_0x734b('0x1e')]===undefined?!![]:![]:!![],'where':_0xfe567d['options']?_0xfe567d[_0x734b('0x1d')][_0x734b('0x1f')]||null:null,'attributes':_0xfe567d['options']?_0xfe567d[_0x734b('0x1d')][_0x734b('0x20')]||null:null,'limit':_0xfe567d[_0x734b('0x1d')]?_0xfe567d[_0x734b('0x1d')][_0x734b('0x21')]||null:null,'include':_0xfe567d[_0x734b('0x1d')]?_0xfe567d[_0x734b('0x1d')][_0x734b('0x22')]?_[_0x734b('0x23')](_0xfe567d[_0x734b('0x1d')][_0x734b('0x22')],function(_0x148abe){return{'model':db[_0x148abe[_0x734b('0x24')]],'as':_0x148abe['as'],'attributes':_0x148abe['attributes'],'include':_0x148abe['include']?_[_0x734b('0x23')](_0x148abe[_0x734b('0x22')],function(_0x47a0a9){return{'model':db[_0x47a0a9[_0x734b('0x24')]],'as':_0x47a0a9['as'],'attributes':_0x47a0a9[_0x734b('0x20')],'include':_0x47a0a9[_0x734b('0x22')]?_[_0x734b('0x23')](_0x47a0a9[_0x734b('0x22')],function(_0x1b8295){return{'model':db[_0x1b8295[_0x734b('0x24')]],'as':_0x1b8295['as'],'attributes':_0x1b8295['attributes']};}):[]};}):[]};}):[]:[]})[_0x734b('0xf')](function(_0x436efe){logger[_0x734b('0x10')](_0x734b('0x1a'),_0xfe567d);logger[_0x734b('0x13')](_0x734b('0x1a'),_0xfe567d,JSON[_0x734b('0x15')](_0x436efe));_0x6572ee(_0x436efe);})[_0x734b('0x19')](function(_0x371ead){logger[_0x734b('0x16')]('GetChatQueue',_0x371ead[_0x734b('0x18')],_0xfe567d);_0x67eed(_0x1c68c4[_0x734b('0x16')](0x1f4,_0x371ead['message']));});});};exports[_0x734b('0x25')]=function(_0x3cfce2){var _0xf4ef21=this;return new Promise(function(_0x2fe7d5,_0x21cb04){return db[_0x734b('0x1b')][_0x734b('0x26')]({'raw':_0x3cfce2[_0x734b('0x1d')]?_0x3cfce2[_0x734b('0x1d')][_0x734b('0x1e')]===undefined?!![]:![]:!![],'where':_0x3cfce2[_0x734b('0x1d')]?_0x3cfce2[_0x734b('0x1d')][_0x734b('0x1f')]||null:null,'attributes':_0x3cfce2[_0x734b('0x1d')]?_0x3cfce2[_0x734b('0x1d')]['attributes']||null:null,'include':_0x3cfce2[_0x734b('0x1d')]?_0x3cfce2['options'][_0x734b('0x22')]?_[_0x734b('0x23')](_0x3cfce2[_0x734b('0x1d')][_0x734b('0x22')],function(_0x19f94d){return{'model':db[_0x19f94d[_0x734b('0x24')]],'as':_0x19f94d['as'],'attributes':_0x19f94d['attributes'],'include':_0x19f94d['include']?_[_0x734b('0x23')](_0x19f94d['include'],function(_0x3cc627){return{'model':db[_0x3cc627['model']],'as':_0x3cc627['as'],'attributes':_0x3cc627[_0x734b('0x20')],'include':_0x3cc627['include']?_[_0x734b('0x23')](_0x3cc627['include'],function(_0x37d891){return{'model':db[_0x37d891[_0x734b('0x24')]],'as':_0x37d891['as'],'attributes':_0x37d891[_0x734b('0x20')]};}):[]};}):[]};}):[]:[]})[_0x734b('0xf')](function(_0x37876a){logger[_0x734b('0x10')](_0x734b('0x25'),_0x3cfce2);logger['debug'](_0x734b('0x25'),_0x3cfce2,JSON[_0x734b('0x15')](_0x37876a));_0x2fe7d5(_0x37876a);})['catch'](function(_0x3752c5){logger[_0x734b('0x16')](_0x734b('0x25'),_0x3752c5[_0x734b('0x18')],_0x3cfce2);_0x21cb04(_0xf4ef21['error'](0x1f4,_0x3752c5[_0x734b('0x18')]));});});};
\ No newline at end of file
+var _0x11d3=['moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetChatQueue','ChatQueue','findAll','options','attributes','limit','include','map','model','find','raw','where','ShowChatQueue','lodash','util'];(function(_0x18f82b,_0x3ea7a0){var _0x5d8128=function(_0x16a009){while(--_0x16a009){_0x18f82b['push'](_0x18f82b['shift']());}};_0x5d8128(++_0x3ea7a0);}(_0x11d3,0x1ac));var _0x311d=function(_0x4b33c0,_0x17fb55){_0x4b33c0=_0x4b33c0-0x0;var _0x43c889=_0x11d3[_0x4b33c0];return _0x43c889;};'use strict';var _=require(_0x311d('0x0'));var util=require(_0x311d('0x1'));var moment=require(_0x311d('0x2'));var BPromise=require(_0x311d('0x3'));var rs=require(_0x311d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x311d('0x5'));var logger=require(_0x311d('0x6'))(_0x311d('0x7'));var config=require(_0x311d('0x8'));var jayson=require(_0x311d('0x9'));var client=jayson[_0x311d('0xa')][_0x311d('0xb')]({'port':0x232a});config[_0x311d('0xc')]=_[_0x311d('0xd')](config['redis'],{'host':_0x311d('0xe'),'port':0x18eb});var socket=require(_0x311d('0xf'))(new Redis(config[_0x311d('0xc')]));require(_0x311d('0x10'))['register'](socket);function respondWithRpcPromise(_0x28f9bc,_0x2269da,_0x24bbed){return new BPromise(function(_0x4232dd,_0x5bb5ce){return client[_0x311d('0x11')](_0x28f9bc,_0x24bbed)[_0x311d('0x12')](function(_0x1cb3c9){logger[_0x311d('0x13')](_0x311d('0x14'),_0x2269da,_0x311d('0x15'));logger[_0x311d('0x16')](_0x311d('0x17'),_0x2269da,_0x311d('0x15'),JSON[_0x311d('0x18')](_0x1cb3c9));if(_0x1cb3c9[_0x311d('0x19')]){if(_0x1cb3c9[_0x311d('0x19')][_0x311d('0x1a')]===0x1f4){logger[_0x311d('0x19')]('ChatQueue,\x20%s,\x20%s',_0x2269da,_0x1cb3c9[_0x311d('0x19')][_0x311d('0x1b')]);return _0x5bb5ce(_0x1cb3c9['error'][_0x311d('0x1b')]);}logger[_0x311d('0x19')]('ChatQueue,\x20%s,\x20%s',_0x2269da,_0x1cb3c9[_0x311d('0x19')]['message']);return _0x4232dd(_0x1cb3c9[_0x311d('0x19')][_0x311d('0x1b')]);}else{logger['info'](_0x311d('0x14'),_0x2269da,_0x311d('0x15'));_0x4232dd(_0x1cb3c9[_0x311d('0x1c')][_0x311d('0x1b')]);}})[_0x311d('0x1d')](function(_0x75882e){logger[_0x311d('0x19')](_0x311d('0x14'),_0x2269da,_0x75882e);_0x5bb5ce(_0x75882e);});});}exports[_0x311d('0x1e')]=function(_0x2934c4){var _0x1b4175=this;return new Promise(function(_0x397700,_0x5021cb){return db[_0x311d('0x1f')][_0x311d('0x20')]({'raw':_0x2934c4[_0x311d('0x21')]?_0x2934c4[_0x311d('0x21')]['raw']===undefined?!![]:![]:!![],'where':_0x2934c4['options']?_0x2934c4['options']['where']||null:null,'attributes':_0x2934c4[_0x311d('0x21')]?_0x2934c4[_0x311d('0x21')][_0x311d('0x22')]||null:null,'limit':_0x2934c4[_0x311d('0x21')]?_0x2934c4[_0x311d('0x21')][_0x311d('0x23')]||null:null,'include':_0x2934c4[_0x311d('0x21')]?_0x2934c4[_0x311d('0x21')][_0x311d('0x24')]?_[_0x311d('0x25')](_0x2934c4['options'][_0x311d('0x24')],function(_0x4e52d2){return{'model':db[_0x4e52d2[_0x311d('0x26')]],'as':_0x4e52d2['as'],'attributes':_0x4e52d2[_0x311d('0x22')],'include':_0x4e52d2['include']?_[_0x311d('0x25')](_0x4e52d2['include'],function(_0x75c288){return{'model':db[_0x75c288[_0x311d('0x26')]],'as':_0x75c288['as'],'attributes':_0x75c288[_0x311d('0x22')],'include':_0x75c288[_0x311d('0x24')]?_[_0x311d('0x25')](_0x75c288[_0x311d('0x24')],function(_0x4d632f){return{'model':db[_0x4d632f[_0x311d('0x26')]],'as':_0x4d632f['as'],'attributes':_0x4d632f[_0x311d('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2bfc25){logger['info'](_0x311d('0x1e'),_0x2934c4);logger[_0x311d('0x16')]('GetChatQueue',_0x2934c4,JSON[_0x311d('0x18')](_0x2bfc25));_0x397700(_0x2bfc25);})['catch'](function(_0x56a14a){logger[_0x311d('0x19')]('GetChatQueue',_0x56a14a[_0x311d('0x1b')],_0x2934c4);_0x5021cb(_0x1b4175[_0x311d('0x19')](0x1f4,_0x56a14a[_0x311d('0x1b')]));});});};exports['ShowChatQueue']=function(_0xeeb681){var _0x52e291=this;return new Promise(function(_0x113eaf,_0x1c2ec5){return db[_0x311d('0x1f')][_0x311d('0x27')]({'raw':_0xeeb681['options']?_0xeeb681[_0x311d('0x21')][_0x311d('0x28')]===undefined?!![]:![]:!![],'where':_0xeeb681[_0x311d('0x21')]?_0xeeb681['options'][_0x311d('0x29')]||null:null,'attributes':_0xeeb681[_0x311d('0x21')]?_0xeeb681[_0x311d('0x21')][_0x311d('0x22')]||null:null,'include':_0xeeb681[_0x311d('0x21')]?_0xeeb681[_0x311d('0x21')][_0x311d('0x24')]?_[_0x311d('0x25')](_0xeeb681[_0x311d('0x21')][_0x311d('0x24')],function(_0x3ff783){return{'model':db[_0x3ff783[_0x311d('0x26')]],'as':_0x3ff783['as'],'attributes':_0x3ff783[_0x311d('0x22')],'include':_0x3ff783['include']?_[_0x311d('0x25')](_0x3ff783[_0x311d('0x24')],function(_0x5b946d){return{'model':db[_0x5b946d[_0x311d('0x26')]],'as':_0x5b946d['as'],'attributes':_0x5b946d[_0x311d('0x22')],'include':_0x5b946d[_0x311d('0x24')]?_[_0x311d('0x25')](_0x5b946d[_0x311d('0x24')],function(_0x28d6da){return{'model':db[_0x28d6da['model']],'as':_0x28d6da['as'],'attributes':_0x28d6da['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2b278b){logger[_0x311d('0x13')](_0x311d('0x2a'),_0xeeb681);logger[_0x311d('0x16')]('ShowChatQueue',_0xeeb681,JSON[_0x311d('0x18')](_0x2b278b));_0x113eaf(_0x2b278b);})[_0x311d('0x1d')](function(_0x4c7a5d){logger[_0x311d('0x19')](_0x311d('0x2a'),_0x4c7a5d[_0x311d('0x1b')],_0xeeb681);_0x1c2ec5(_0x52e291['error'](0x1f4,_0x4c7a5d['message']));});});};
\ No newline at end of file
index c361fd6..f5513d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14d=['update','removeListener','register','chatQueue:','./chatQueue.events','save','remove'];(function(_0x4e363a,_0x1d8602){var _0xd1aedd=function(_0x3b5a3a){while(--_0x3b5a3a){_0x4e363a['push'](_0x4e363a['shift']());}};_0xd1aedd(++_0x1d8602);}(_0xe14d,0x1ee));var _0xde14=function(_0x13ce0c,_0x3f2a0d){_0x13ce0c=_0x13ce0c-0x0;var _0x4388fb=_0xe14d[_0x13ce0c];return _0x4388fb;};'use strict';var ChatQueueEvents=require(_0xde14('0x0'));var events=[_0xde14('0x1'),_0xde14('0x2'),_0xde14('0x3')];function createListener(_0x48b392,_0x1c5b4){return function(_0x28965b){_0x1c5b4['emit'](_0x48b392,_0x28965b);};}function removeListener(_0x1c3e94,_0x13c24e){return function(){ChatQueueEvents[_0xde14('0x4')](_0x1c3e94,_0x13c24e);};}exports[_0xde14('0x5')]=function(_0x461af3){for(var _0xba1514=0x0,_0x4b1f6b=events['length'];_0xba1514<_0x4b1f6b;_0xba1514++){var _0x1bd49d=events[_0xba1514];var _0x115b7d=createListener(_0xde14('0x6')+_0x1bd49d,_0x461af3);ChatQueueEvents['on'](_0x1bd49d,_0x115b7d);}};
\ No newline at end of file
+var _0x9b9b=['save','emit','removeListener','register','length','chatQueue:'];(function(_0x59c318,_0x44589d){var _0x795014=function(_0x491d2d){while(--_0x491d2d){_0x59c318['push'](_0x59c318['shift']());}};_0x795014(++_0x44589d);}(_0x9b9b,0x114));var _0xb9b9=function(_0x57f8c0,_0x136cf6){_0x57f8c0=_0x57f8c0-0x0;var _0x117f08=_0x9b9b[_0x57f8c0];return _0x117f08;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=[_0xb9b9('0x0'),'remove','update'];function createListener(_0x2ae8a0,_0x153734){return function(_0x1adf50){_0x153734[_0xb9b9('0x1')](_0x2ae8a0,_0x1adf50);};}function removeListener(_0x1d6ab6,_0x43c8ff){return function(){ChatQueueEvents[_0xb9b9('0x2')](_0x1d6ab6,_0x43c8ff);};}exports[_0xb9b9('0x3')]=function(_0x79dd){for(var _0x3d1a95=0x0,_0x85eec=events[_0xb9b9('0x4')];_0x3d1a95<_0x85eec;_0x3d1a95++){var _0x5be5bc=events[_0x3d1a95];var _0x297cb6=createListener(_0xb9b9('0x5')+_0x5be5bc,_0x79dd);ChatQueueEvents['on'](_0x5be5bc,_0x297cb6);}};
\ No newline at end of file
index 580c045..caae734 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['/describe','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','removeAgents','exports','multer','util','express','Router','../../components/auth/service','./chatQueue.controller','get','isAuthenticated','index'];(function(_0x2b50be,_0x4e3d61){var _0x212cd4=function(_0x1a7b87){while(--_0x1a7b87){_0x2b50be['push'](_0x2b50be['shift']());}};_0x212cd4(++_0x4e3d61);}(_0xe14b,0x93));var _0xbe14=function(_0x5a4f92,_0x484a7c){_0x5a4f92=_0x5a4f92-0x0;var _0x427813=_0xe14b[_0x5a4f92];return _0x427813;};'use strict';var multer=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe14('0x2'));var router=express[_0xbe14('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbe14('0x5'));router[_0xbe14('0x6')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x8')]);router[_0xbe14('0x6')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['describe']);router['get']('/:id',auth[_0xbe14('0x7')](),controller[_0xbe14('0xa')]);router[_0xbe14('0x6')](_0xbe14('0xb'),auth['isAuthenticated'](),controller['getMembers']);router[_0xbe14('0x6')](_0xbe14('0xc'),auth['isAuthenticated'](),controller[_0xbe14('0xd')]);router[_0xbe14('0x6')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0xf')]);router[_0xbe14('0x10')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x11')]);router[_0xbe14('0x10')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x12')]);router[_0xbe14('0x10')]('/:id/users',auth['isAuthenticated'](),controller[_0xbe14('0x13')]);router[_0xbe14('0x14')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller['update']);router[_0xbe14('0x16')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x17')]);router[_0xbe14('0x16')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller['removeTeams']);router[_0xbe14('0x16')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x18')]);module[_0xbe14('0x19')]=router;
\ No newline at end of file
+var _0x008c=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','show','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','update','delete','/:id','removeTeams','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x402c78,_0x344469){var _0x3c2d70=function(_0x46961f){while(--_0x46961f){_0x402c78['push'](_0x402c78['shift']());}};_0x3c2d70(++_0x344469);}(_0x008c,0x188));var _0xc008=function(_0xf2ee1d,_0x21796d){_0xf2ee1d=_0xf2ee1d-0x0;var _0x250b14=_0x008c[_0xf2ee1d];return _0x250b14;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/describe',auth[_0xc008('0xb')](),controller['describe']);router[_0xc008('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xc008('0xd')]);router[_0xc008('0xa')]('/:id/members',auth['isAuthenticated'](),controller['getMembers']);router[_0xc008('0xa')](_0xc008('0xe'),auth['isAuthenticated'](),controller[_0xc008('0xf')]);router[_0xc008('0xa')](_0xc008('0x10'),auth[_0xc008('0xb')](),controller[_0xc008('0x11')]);router[_0xc008('0x12')]('/',auth[_0xc008('0xb')](),controller['create']);router['post'](_0xc008('0xe'),auth['isAuthenticated'](),controller[_0xc008('0x13')]);router[_0xc008('0x12')](_0xc008('0x10'),auth[_0xc008('0xb')](),controller[_0xc008('0x14')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xc008('0x15')]);router[_0xc008('0x16')](_0xc008('0x17'),auth[_0xc008('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth['isAuthenticated'](),controller[_0xc008('0x18')]);router[_0xc008('0x16')]('/:id/users',auth[_0xc008('0xb')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 3449c43..646a2b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77b7=['moment','exports','STRING','DATE'];(function(_0x4879c8,_0x560eba){var _0x56661d=function(_0x5a830b){while(--_0x5a830b){_0x4879c8['push'](_0x4879c8['shift']());}};_0x56661d(++_0x560eba);}(_0x77b7,0x178));var _0x777b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x77b7[_0x14add3];return _0x4a174f;};'use strict';var moment=require(_0x777b('0x0'));var Sequelize=require('sequelize');module[_0x777b('0x1')]={'uniqueid':{'type':Sequelize[_0x777b('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x777b('0x2')]},'joinAt':{'type':Sequelize[_0x777b('0x3')]},'leaveAt':{'type':Sequelize[_0x777b('0x3')]},'acceptAt':{'type':Sequelize[_0x777b('0x3')]},'exitAt':{'type':Sequelize[_0x777b('0x3')]},'reason':{'type':Sequelize[_0x777b('0x2')]}};
\ No newline at end of file
+var _0x9973=['moment','exports','STRING','DATE'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x9973,0x130));var _0x3997=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x9973[_0x57b54c];return _0x59cc19;};'use strict';var moment=require(_0x3997('0x0'));var Sequelize=require('sequelize');module[_0x3997('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x3997('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x3997('0x3')]},'acceptAt':{'type':Sequelize[_0x3997('0x3')]},'exitAt':{'type':Sequelize[_0x3997('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index aebbf4e..92bdf4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d2c=['name','index','map','ChatQueueReport','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','findAll','rows','catch','keys','find','create','body','update','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','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','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','then','destroy','error','stack'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x2d2c,0x1d7));var _0xc2d2=function(_0x23b655,_0x4feb2b){_0x23b655=_0x23b655-0x0;var _0x364b32=_0x2d2c[_0x23b655];return _0x364b32;};'use strict';var emlformat=require(_0xc2d2('0x0'));var rimraf=require(_0xc2d2('0x1'));var zipdir=require(_0xc2d2('0x2'));var jsonpatch=require(_0xc2d2('0x3'));var rp=require(_0xc2d2('0x4'));var moment=require(_0xc2d2('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc2d2('0x6'));var util=require('util');var path=require(_0xc2d2('0x7'));var sox=require(_0xc2d2('0x8'));var csv=require(_0xc2d2('0x9'));var ejs=require(_0xc2d2('0xa'));var fs=require('fs');var fs_extra=require(_0xc2d2('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc2d2('0xc'));var jsforce=require(_0xc2d2('0xd'));var deskjs=require(_0xc2d2('0xe'));var toCsv=require(_0xc2d2('0x9'));var querystring=require(_0xc2d2('0xf'));var Papa=require(_0xc2d2('0x10'));var Redis=require(_0xc2d2('0x11'));var authService=require(_0xc2d2('0x12'));var qs=require(_0xc2d2('0x13'));var as=require(_0xc2d2('0x14'));var hardwareService=require(_0xc2d2('0x15'));var logger=require(_0xc2d2('0x16'))('api');var utils=require(_0xc2d2('0x17'));var config=require(_0xc2d2('0x18'));var licenseUtil=require(_0xc2d2('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x273269,_0x738877){_0x738877=_0x738877||0xcc;return function(_0x4c2b12){if(_0x4c2b12){return _0x273269[_0xc2d2('0x1a')](_0x738877);}return _0x273269[_0xc2d2('0x1b')](_0x738877)['end']();};}function respondWithResult(_0xa6f836,_0x4de52a){_0x4de52a=_0x4de52a||0xc8;return function(_0x5a1d24){if(_0x5a1d24){return _0xa6f836[_0xc2d2('0x1b')](_0x4de52a)[_0xc2d2('0x1c')](_0x5a1d24);}};}function respondWithFilteredResult(_0xf6bc66,_0x4006f3){return function(_0x2c42a6){if(_0x2c42a6){var _0x37552b=typeof _0x4006f3[_0xc2d2('0x1d')]===_0xc2d2('0x1e')&&typeof _0x4006f3[_0xc2d2('0x1f')]===_0xc2d2('0x1e');var _0x403d51=_0x2c42a6['count'];var _0x2d4ec4=_0x37552b?0x0:_0x4006f3[_0xc2d2('0x1d')];var _0x34f750=_0x37552b?_0x2c42a6[_0xc2d2('0x20')]:_0x4006f3['offset']+_0x4006f3[_0xc2d2('0x1f')];var _0x18cef7;if(_0x34f750>=_0x403d51){_0x34f750=_0x403d51;_0x18cef7=0xc8;}else{_0x18cef7=0xce;}_0xf6bc66['status'](_0x18cef7);return _0xf6bc66[_0xc2d2('0x21')](_0xc2d2('0x22'),_0x2d4ec4+'-'+_0x34f750+'/'+_0x403d51)[_0xc2d2('0x1c')](_0x2c42a6);}return null;};}function patchUpdates(_0xb14bc3){return function(_0x603323){try{jsonpatch['apply'](_0x603323,_0xb14bc3,!![]);}catch(_0x100d5b){return BPromise[_0xc2d2('0x23')](_0x100d5b);}return _0x603323['save']();};}function saveUpdates(_0x2cac91,_0x4e3cb5){return function(_0x5ecf78){if(_0x5ecf78){return _0x5ecf78['update'](_0x2cac91)[_0xc2d2('0x24')](function(_0x1bdcb5){return _0x1bdcb5;});}return null;};}function removeEntity(_0x7ffb28,_0x4b3449){return function(_0x2dbc46){if(_0x2dbc46){return _0x2dbc46[_0xc2d2('0x25')]()[_0xc2d2('0x24')](function(){_0x7ffb28[_0xc2d2('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x25b201,_0x25e6af){return function(_0xf2ba15){if(!_0xf2ba15){_0x25b201[_0xc2d2('0x1a')](0x194);}return _0xf2ba15;};}function handleError(_0x1a11d2,_0x1c14e5){_0x1c14e5=_0x1c14e5||0x1f4;return function(_0x49e955){logger[_0xc2d2('0x26')](_0x49e955[_0xc2d2('0x27')]);if(_0x49e955[_0xc2d2('0x28')]){delete _0x49e955[_0xc2d2('0x28')];}_0x1a11d2['status'](_0x1c14e5)['send'](_0x49e955);};}exports[_0xc2d2('0x29')]=function(_0x7b75f4,_0x1f3b66){var _0x21ca37={},_0x402337={},_0x460379={'count':0x0,'rows':[]};var _0x4d4af2=_[_0xc2d2('0x2a')](db[_0xc2d2('0x2b')]['rawAttributes'],function(_0x29cae5){return{'name':_0x29cae5[_0xc2d2('0x2c')],'type':_0x29cae5[_0xc2d2('0x2d')][_0xc2d2('0x2e')]};});_0x402337[_0xc2d2('0x2f')]=_['map'](_0x4d4af2,'name');_0x402337[_0xc2d2('0x30')]=_['keys'](_0x7b75f4[_0xc2d2('0x30')]);_0x402337[_0xc2d2('0x31')]=_[_0xc2d2('0x32')](_0x402337[_0xc2d2('0x2f')],_0x402337[_0xc2d2('0x30')]);_0x21ca37['attributes']=_[_0xc2d2('0x32')](_0x402337[_0xc2d2('0x2f')],qs[_0xc2d2('0x33')](_0x7b75f4[_0xc2d2('0x30')][_0xc2d2('0x33')]));_0x21ca37[_0xc2d2('0x34')]=_0x21ca37['attributes'][_0xc2d2('0x35')]?_0x21ca37[_0xc2d2('0x34')]:_0x402337['model'];if(!_0x7b75f4[_0xc2d2('0x30')]['hasOwnProperty'](_0xc2d2('0x36'))){_0x21ca37[_0xc2d2('0x1f')]=qs[_0xc2d2('0x1f')](_0x7b75f4[_0xc2d2('0x30')][_0xc2d2('0x1f')]);_0x21ca37[_0xc2d2('0x1d')]=qs[_0xc2d2('0x1d')](_0x7b75f4[_0xc2d2('0x30')]['offset']);}_0x21ca37[_0xc2d2('0x37')]=qs[_0xc2d2('0x38')](_0x7b75f4[_0xc2d2('0x30')][_0xc2d2('0x38')]);_0x21ca37['where']=qs[_0xc2d2('0x31')](_[_0xc2d2('0x39')](_0x7b75f4[_0xc2d2('0x30')],_0x402337[_0xc2d2('0x31')]),_0x4d4af2);if(_0x7b75f4['query'][_0xc2d2('0x3a')]){_0x21ca37['where']=_[_0xc2d2('0x3b')](_0x21ca37[_0xc2d2('0x3c')],{'$or':_['map'](_0x4d4af2,function(_0xdbdce0){if(_0xdbdce0[_0xc2d2('0x2d')]!==_0xc2d2('0x3d')){var _0x29d04b={};_0x29d04b[_0xdbdce0[_0xc2d2('0x28')]]={'$like':'%'+_0x7b75f4[_0xc2d2('0x30')][_0xc2d2('0x3a')]+'%'};return _0x29d04b;}})});}_0x21ca37=_[_0xc2d2('0x3b')]({},_0x21ca37,_0x7b75f4[_0xc2d2('0x3e')]);var _0x49d900={'where':_0x21ca37['where']};return db[_0xc2d2('0x2b')][_0xc2d2('0x20')](_0x49d900)['then'](function(_0xfd3ad4){_0x460379[_0xc2d2('0x20')]=_0xfd3ad4;if(_0x7b75f4[_0xc2d2('0x30')]['includeAll']){_0x21ca37['include']=[{'all':!![]}];}return db['ChatQueueReport'][_0xc2d2('0x3f')](_0x21ca37);})[_0xc2d2('0x24')](function(_0x4031d0){_0x460379[_0xc2d2('0x40')]=_0x4031d0;return _0x460379;})['then'](respondWithFilteredResult(_0x1f3b66,_0x21ca37))[_0xc2d2('0x41')](handleError(_0x1f3b66,null));};exports['show']=function(_0x582edb,_0x24544e){var _0x2a987a={'raw':!![],'where':{'id':_0x582edb['params']['id']}},_0x386a39={};_0x386a39[_0xc2d2('0x2f')]=_[_0xc2d2('0x42')](db[_0xc2d2('0x2b')]['rawAttributes']);_0x386a39[_0xc2d2('0x30')]=_['keys'](_0x582edb[_0xc2d2('0x30')]);_0x386a39[_0xc2d2('0x31')]=_[_0xc2d2('0x32')](_0x386a39[_0xc2d2('0x2f')],_0x386a39[_0xc2d2('0x30')]);_0x2a987a[_0xc2d2('0x34')]=_['intersection'](_0x386a39[_0xc2d2('0x2f')],qs['fields'](_0x582edb[_0xc2d2('0x30')][_0xc2d2('0x33')]));_0x2a987a[_0xc2d2('0x34')]=_0x2a987a[_0xc2d2('0x34')][_0xc2d2('0x35')]?_0x2a987a['attributes']:_0x386a39[_0xc2d2('0x2f')];if(_0x582edb[_0xc2d2('0x30')]['includeAll']){_0x2a987a['include']=[{'all':!![]}];}_0x2a987a=_['merge']({},_0x2a987a,_0x582edb['options']);return db[_0xc2d2('0x2b')][_0xc2d2('0x43')](_0x2a987a)[_0xc2d2('0x24')](handleEntityNotFound(_0x24544e,null))[_0xc2d2('0x24')](respondWithResult(_0x24544e,null))[_0xc2d2('0x41')](handleError(_0x24544e,null));};exports[_0xc2d2('0x44')]=function(_0x1146cb,_0x3b795a){return db[_0xc2d2('0x2b')][_0xc2d2('0x44')](_0x1146cb[_0xc2d2('0x45')],{})[_0xc2d2('0x24')](respondWithResult(_0x3b795a,0xc9))['catch'](handleError(_0x3b795a,null));};exports[_0xc2d2('0x46')]=function(_0x4181dc,_0x572764){if(_0x4181dc[_0xc2d2('0x45')]['id']){delete _0x4181dc['body']['id'];}return db[_0xc2d2('0x2b')][_0xc2d2('0x43')]({'where':{'id':_0x4181dc[_0xc2d2('0x47')]['id']}})[_0xc2d2('0x24')](handleEntityNotFound(_0x572764,null))['then'](saveUpdates(_0x4181dc[_0xc2d2('0x45')],null))[_0xc2d2('0x24')](respondWithResult(_0x572764,null))[_0xc2d2('0x41')](handleError(_0x572764,null));};exports[_0xc2d2('0x25')]=function(_0x3b61ef,_0x4765f9){return db[_0xc2d2('0x2b')][_0xc2d2('0x43')]({'where':{'id':_0x3b61ef[_0xc2d2('0x47')]['id']}})['then'](handleEntityNotFound(_0x4765f9,null))['then'](removeEntity(_0x4765f9,null))[_0xc2d2('0x41')](handleError(_0x4765f9,null));};exports[_0xc2d2('0x48')]=function(_0x472299,_0x1827c3){return db[_0xc2d2('0x2b')]['describe']()[_0xc2d2('0x24')](respondWithResult(_0x1827c3,null))[_0xc2d2('0x41')](handleError(_0x1827c3,null));};
\ No newline at end of file
+var _0x49df=['key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','sort','where','filters','pick','filter','VIRTUAL','options','includeAll','findAll','then','rows','catch','params','include','merge','find','create','body','update','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','destroy','sendStatus','error','stack','name','send','map','ChatQueueReport','fieldName','type'];(function(_0x413b62,_0x740bd3){var _0x19bad0=function(_0x419a1b){while(--_0x419a1b){_0x413b62['push'](_0x413b62['shift']());}};_0x19bad0(++_0x740bd3);}(_0x49df,0xad));var _0xf49d=function(_0x1d606d,_0x376e51){_0x1d606d=_0x1d606d-0x0;var _0x3c38bd=_0x49df[_0x1d606d];return _0x3c38bd;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xf49d('0x0'));var jsonpatch=require(_0xf49d('0x1'));var rp=require(_0xf49d('0x2'));var moment=require(_0xf49d('0x3'));var BPromise=require(_0xf49d('0x4'));var Mustache=require(_0xf49d('0x5'));var util=require(_0xf49d('0x6'));var path=require('path');var sox=require(_0xf49d('0x7'));var csv=require(_0xf49d('0x8'));var ejs=require(_0xf49d('0x9'));var fs=require('fs');var fs_extra=require(_0xf49d('0xa'));var _=require(_0xf49d('0xb'));var squel=require(_0xf49d('0xc'));var crypto=require('crypto');var jsforce=require(_0xf49d('0xd'));var deskjs=require(_0xf49d('0xe'));var toCsv=require(_0xf49d('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf49d('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf49d('0x10'));var hardwareService=require(_0xf49d('0x11'));var logger=require(_0xf49d('0x12'))('api');var utils=require(_0xf49d('0x13'));var config=require(_0xf49d('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xf49d('0x15'))['db'];function respondWithStatusCode(_0x57feff,_0x54354a){_0x54354a=_0x54354a||0xcc;return function(_0x32786c){if(_0x32786c){return _0x57feff['sendStatus'](_0x54354a);}return _0x57feff[_0xf49d('0x16')](_0x54354a)[_0xf49d('0x17')]();};}function respondWithResult(_0xe6c42b,_0x5ab175){_0x5ab175=_0x5ab175||0xc8;return function(_0x16b0a4){if(_0x16b0a4){return _0xe6c42b[_0xf49d('0x16')](_0x5ab175)[_0xf49d('0x18')](_0x16b0a4);}};}function respondWithFilteredResult(_0x4c37ae,_0x30d271){return function(_0x11603e){if(_0x11603e){var _0x1d65cd=typeof _0x30d271[_0xf49d('0x19')]==='undefined'&&typeof _0x30d271[_0xf49d('0x1a')]===_0xf49d('0x1b');var _0x349c20=_0x11603e[_0xf49d('0x1c')];var _0x2a7a78=_0x1d65cd?0x0:_0x30d271[_0xf49d('0x19')];var _0xbc6fdd=_0x1d65cd?_0x11603e[_0xf49d('0x1c')]:_0x30d271['offset']+_0x30d271[_0xf49d('0x1a')];var _0x4034fc;if(_0xbc6fdd>=_0x349c20){_0xbc6fdd=_0x349c20;_0x4034fc=0xc8;}else{_0x4034fc=0xce;}_0x4c37ae[_0xf49d('0x16')](_0x4034fc);return _0x4c37ae[_0xf49d('0x1d')](_0xf49d('0x1e'),_0x2a7a78+'-'+_0xbc6fdd+'/'+_0x349c20)[_0xf49d('0x18')](_0x11603e);}return null;};}function patchUpdates(_0x199f35){return function(_0x3752e8){try{jsonpatch[_0xf49d('0x1f')](_0x3752e8,_0x199f35,!![]);}catch(_0x1f70ca){return BPromise[_0xf49d('0x20')](_0x1f70ca);}return _0x3752e8['save']();};}function saveUpdates(_0x57aa50,_0x2cf806){return function(_0x15bdcb){if(_0x15bdcb){return _0x15bdcb['update'](_0x57aa50)['then'](function(_0xb5d580){return _0xb5d580;});}return null;};}function removeEntity(_0x2ba02e,_0x5cce78){return function(_0x58c1e7){if(_0x58c1e7){return _0x58c1e7[_0xf49d('0x21')]()['then'](function(){_0x2ba02e[_0xf49d('0x16')](0xcc)[_0xf49d('0x17')]();});}};}function handleEntityNotFound(_0xb8dcf8,_0x1e08cf){return function(_0x4d909d){if(!_0x4d909d){_0xb8dcf8[_0xf49d('0x22')](0x194);}return _0x4d909d;};}function handleError(_0x14adc0,_0x394fc0){_0x394fc0=_0x394fc0||0x1f4;return function(_0x33168c){logger[_0xf49d('0x23')](_0x33168c[_0xf49d('0x24')]);if(_0x33168c[_0xf49d('0x25')]){delete _0x33168c[_0xf49d('0x25')];}_0x14adc0[_0xf49d('0x16')](_0x394fc0)[_0xf49d('0x26')](_0x33168c);};}exports['index']=function(_0x516d70,_0x82b5eb){var _0x1de573={},_0x1832cd={},_0x1c5cf3={'count':0x0,'rows':[]};var _0x43e868=_[_0xf49d('0x27')](db[_0xf49d('0x28')]['rawAttributes'],function(_0x351c1d){return{'name':_0x351c1d[_0xf49d('0x29')],'type':_0x351c1d[_0xf49d('0x2a')][_0xf49d('0x2b')]};});_0x1832cd[_0xf49d('0x2c')]=_[_0xf49d('0x27')](_0x43e868,_0xf49d('0x25'));_0x1832cd[_0xf49d('0x2d')]=_[_0xf49d('0x2e')](_0x516d70[_0xf49d('0x2d')]);_0x1832cd['filters']=_['intersection'](_0x1832cd[_0xf49d('0x2c')],_0x1832cd[_0xf49d('0x2d')]);_0x1de573['attributes']=_[_0xf49d('0x2f')](_0x1832cd[_0xf49d('0x2c')],qs[_0xf49d('0x30')](_0x516d70['query'][_0xf49d('0x30')]));_0x1de573[_0xf49d('0x31')]=_0x1de573[_0xf49d('0x31')][_0xf49d('0x32')]?_0x1de573[_0xf49d('0x31')]:_0x1832cd[_0xf49d('0x2c')];if(!_0x516d70[_0xf49d('0x2d')][_0xf49d('0x33')]('nolimit')){_0x1de573[_0xf49d('0x1a')]=qs[_0xf49d('0x1a')](_0x516d70['query'][_0xf49d('0x1a')]);_0x1de573[_0xf49d('0x19')]=qs['offset'](_0x516d70[_0xf49d('0x2d')][_0xf49d('0x19')]);}_0x1de573['order']=qs[_0xf49d('0x34')](_0x516d70[_0xf49d('0x2d')][_0xf49d('0x34')]);_0x1de573[_0xf49d('0x35')]=qs[_0xf49d('0x36')](_[_0xf49d('0x37')](_0x516d70['query'],_0x1832cd[_0xf49d('0x36')]),_0x43e868);if(_0x516d70[_0xf49d('0x2d')][_0xf49d('0x38')]){_0x1de573[_0xf49d('0x35')]=_['merge'](_0x1de573[_0xf49d('0x35')],{'$or':_[_0xf49d('0x27')](_0x43e868,function(_0x5c30b1){if(_0x5c30b1[_0xf49d('0x2a')]!==_0xf49d('0x39')){var _0x17c3b3={};_0x17c3b3[_0x5c30b1['name']]={'$like':'%'+_0x516d70[_0xf49d('0x2d')][_0xf49d('0x38')]+'%'};return _0x17c3b3;}})});}_0x1de573=_['merge']({},_0x1de573,_0x516d70[_0xf49d('0x3a')]);var _0x4e5f14={'where':_0x1de573['where']};return db[_0xf49d('0x28')]['count'](_0x4e5f14)['then'](function(_0x293bd4){_0x1c5cf3[_0xf49d('0x1c')]=_0x293bd4;if(_0x516d70[_0xf49d('0x2d')][_0xf49d('0x3b')]){_0x1de573['include']=[{'all':!![]}];}return db['ChatQueueReport'][_0xf49d('0x3c')](_0x1de573);})[_0xf49d('0x3d')](function(_0x29505e){_0x1c5cf3[_0xf49d('0x3e')]=_0x29505e;return _0x1c5cf3;})[_0xf49d('0x3d')](respondWithFilteredResult(_0x82b5eb,_0x1de573))[_0xf49d('0x3f')](handleError(_0x82b5eb,null));};exports['show']=function(_0x21a0a7,_0xdc92b9){var _0x1926a2={'raw':!![],'where':{'id':_0x21a0a7[_0xf49d('0x40')]['id']}},_0x3a3ecc={};_0x3a3ecc[_0xf49d('0x2c')]=_[_0xf49d('0x2e')](db[_0xf49d('0x28')]['rawAttributes']);_0x3a3ecc[_0xf49d('0x2d')]=_[_0xf49d('0x2e')](_0x21a0a7['query']);_0x3a3ecc[_0xf49d('0x36')]=_['intersection'](_0x3a3ecc[_0xf49d('0x2c')],_0x3a3ecc[_0xf49d('0x2d')]);_0x1926a2['attributes']=_[_0xf49d('0x2f')](_0x3a3ecc[_0xf49d('0x2c')],qs[_0xf49d('0x30')](_0x21a0a7[_0xf49d('0x2d')]['fields']));_0x1926a2['attributes']=_0x1926a2[_0xf49d('0x31')][_0xf49d('0x32')]?_0x1926a2[_0xf49d('0x31')]:_0x3a3ecc[_0xf49d('0x2c')];if(_0x21a0a7['query'][_0xf49d('0x3b')]){_0x1926a2[_0xf49d('0x41')]=[{'all':!![]}];}_0x1926a2=_[_0xf49d('0x42')]({},_0x1926a2,_0x21a0a7['options']);return db['ChatQueueReport'][_0xf49d('0x43')](_0x1926a2)[_0xf49d('0x3d')](handleEntityNotFound(_0xdc92b9,null))[_0xf49d('0x3d')](respondWithResult(_0xdc92b9,null))[_0xf49d('0x3f')](handleError(_0xdc92b9,null));};exports['create']=function(_0x7552a3,_0x11f3bc){return db[_0xf49d('0x28')][_0xf49d('0x44')](_0x7552a3[_0xf49d('0x45')],{})[_0xf49d('0x3d')](respondWithResult(_0x11f3bc,0xc9))[_0xf49d('0x3f')](handleError(_0x11f3bc,null));};exports[_0xf49d('0x46')]=function(_0x20276c,_0x2fad7e){if(_0x20276c[_0xf49d('0x45')]['id']){delete _0x20276c[_0xf49d('0x45')]['id'];}return db[_0xf49d('0x28')][_0xf49d('0x43')]({'where':{'id':_0x20276c['params']['id']}})[_0xf49d('0x3d')](handleEntityNotFound(_0x2fad7e,null))[_0xf49d('0x3d')](saveUpdates(_0x20276c[_0xf49d('0x45')],null))[_0xf49d('0x3d')](respondWithResult(_0x2fad7e,null))[_0xf49d('0x3f')](handleError(_0x2fad7e,null));};exports[_0xf49d('0x21')]=function(_0x4f3527,_0x1dc986){return db[_0xf49d('0x28')]['find']({'where':{'id':_0x4f3527[_0xf49d('0x40')]['id']}})[_0xf49d('0x3d')](handleEntityNotFound(_0x1dc986,null))['then'](removeEntity(_0x1dc986,null))[_0xf49d('0x3f')](handleError(_0x1dc986,null));};exports['describe']=function(_0x3cc892,_0x3948be){return db['ChatQueueReport'][_0xf49d('0x47')]()[_0xf49d('0x3d')](respondWithResult(_0x3948be,null))['catch'](handleError(_0x3948be,null));};
\ No newline at end of file
index e0d464a..1f3f26c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','ChatQueueReport','report_chat_queue','uniqueid','lodash','util'];(function(_0x27380a,_0x11b4db){var _0x49557d=function(_0x11984a){while(--_0x11984a){_0x27380a['push'](_0x27380a['shift']());}};_0x49557d(++_0x11b4db);}(_0xe706,0xa3));var _0x6e70=function(_0x16270b,_0x4ff120){_0x16270b=_0x16270b-0x0;var _0x2cd122=_0xe706[_0x16270b];return _0x2cd122;};'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
+var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','define','ChatQueueReport','uniqueid','lodash'];(function(_0x232e4e,_0x5eb705){var _0x44bec8=function(_0x259d15){while(--_0x259d15){_0x232e4e['push'](_0x232e4e['shift']());}};_0x44bec8(++_0x5eb705);}(_0xb7e7,0x121));var _0x7b7e=function(_0x5d80de,_0x2cf15d){_0x5d80de=_0x5d80de-0x0;var _0x1c7556=_0xb7e7[_0x5d80de];return _0x1c7556;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));module['exports']=function(_0x53ed64,_0x333fa4){return _0x53ed64[_0x7b7e('0x7')](_0x7b7e('0x8'),attributes,{'tableName':'report_chat_queue','paranoid':![],'indexes':[{'name':_0x7b7e('0x9'),'fields':[_0x7b7e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index d8b501e..76c42ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf93d=['result','CreateChatQueueReport','create','body','options','raw','then','debug','catch','UpdateChatQueueReport','ChatQueueReport','update','where','attributes','limit','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x5eb22e,_0x27cbac){var _0x27fed5=function(_0x565467){while(--_0x565467){_0x5eb22e['push'](_0x5eb22e['shift']());}};_0x27fed5(++_0x27cbac);}(_0xf93d,0x11f));var _0xdf93=function(_0x361b2f,_0x4f8972){_0x361b2f=_0x361b2f-0x0;var _0x23b8e5=_0xf93d[_0x361b2f];return _0x23b8e5;};'use strict';var _=require('lodash');var util=require(_0xdf93('0x0'));var moment=require(_0xdf93('0x1'));var BPromise=require(_0xdf93('0x2'));var rs=require(_0xdf93('0x3'));var fs=require('fs');var Redis=require(_0xdf93('0x4'));var db=require(_0xdf93('0x5'))['db'];var utils=require(_0xdf93('0x6'));var logger=require(_0xdf93('0x7'))(_0xdf93('0x8'));var config=require(_0xdf93('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xdf93('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4d356e,_0x5bde50,_0x3cb77b){return new BPromise(function(_0x3cbd61,_0x5b0828){return client[_0xdf93('0xb')](_0x4d356e,_0x3cb77b)['then'](function(_0x5837e6){logger[_0xdf93('0xc')](_0xdf93('0xd'),_0x5bde50,_0xdf93('0xe'));logger['debug']('ChatQueueReport,\x20%s,\x20%s,\x20%s',_0x5bde50,_0xdf93('0xe'),JSON[_0xdf93('0xf')](_0x5837e6));if(_0x5837e6[_0xdf93('0x10')]){if(_0x5837e6[_0xdf93('0x10')][_0xdf93('0x11')]===0x1f4){logger[_0xdf93('0x10')](_0xdf93('0xd'),_0x5bde50,_0x5837e6[_0xdf93('0x10')]['message']);return _0x5b0828(_0x5837e6[_0xdf93('0x10')][_0xdf93('0x12')]);}logger[_0xdf93('0x10')]('ChatQueueReport,\x20%s,\x20%s',_0x5bde50,_0x5837e6[_0xdf93('0x10')][_0xdf93('0x12')]);return _0x3cbd61(_0x5837e6['error']['message']);}else{logger[_0xdf93('0xc')](_0xdf93('0xd'),_0x5bde50,_0xdf93('0xe'));_0x3cbd61(_0x5837e6[_0xdf93('0x13')]['message']);}})['catch'](function(_0x541e5e){logger['error'](_0xdf93('0xd'),_0x5bde50,_0x541e5e);_0x5b0828(_0x541e5e);});});}exports[_0xdf93('0x14')]=function(_0x261035){var _0x490824=this;return new Promise(function(_0x44555d,_0x5f149f){return db['ChatQueueReport'][_0xdf93('0x15')](_0x261035[_0xdf93('0x16')],{'raw':_0x261035[_0xdf93('0x17')]?_0x261035['options'][_0xdf93('0x18')]===undefined?!![]:![]:!![]})[_0xdf93('0x19')](function(_0x184201){logger['info'](_0xdf93('0x14'),_0x261035);logger[_0xdf93('0x1a')](_0xdf93('0x14'),_0x261035,JSON[_0xdf93('0xf')](_0x184201));_0x44555d(_0x184201);})[_0xdf93('0x1b')](function(_0x1c4776){logger[_0xdf93('0x10')](_0xdf93('0x14'),_0x1c4776[_0xdf93('0x12')],_0x261035);_0x5f149f(_0x490824['error'](0x1f4,_0x1c4776['message']));});});};exports[_0xdf93('0x1c')]=function(_0x24a136){var _0x420622=this;return new Promise(function(_0x1f2cf0,_0x2528d9){return db[_0xdf93('0x1d')][_0xdf93('0x1e')](_0x24a136[_0xdf93('0x16')],{'raw':_0x24a136['options']?_0x24a136['options'][_0xdf93('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x24a136[_0xdf93('0x17')]?_0x24a136[_0xdf93('0x17')][_0xdf93('0x1f')]||null:null,'attributes':_0x24a136[_0xdf93('0x17')]?_0x24a136[_0xdf93('0x17')][_0xdf93('0x20')]||null:null,'limit':_0x24a136[_0xdf93('0x17')]?_0x24a136[_0xdf93('0x17')][_0xdf93('0x21')]||null:null})['then'](function(_0xe3e7b1){logger[_0xdf93('0xc')](_0xdf93('0x1c'),_0x24a136);logger[_0xdf93('0x1a')](_0xdf93('0x1c'),_0x24a136,JSON[_0xdf93('0xf')](_0xe3e7b1));_0x1f2cf0(_0xe3e7b1);})[_0xdf93('0x1b')](function(_0x2d0e05){logger[_0xdf93('0x10')](_0xdf93('0x1c'),_0x2d0e05[_0xdf93('0x12')],_0x24a136);_0x2528d9(_0x420622[_0xdf93('0x10')](0x1f4,_0x2d0e05[_0xdf93('0x12')]));});});};
\ No newline at end of file
+var _0x17ec=['update','where','attributes','UpdateChatQueueReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateChatQueueReport','ChatQueueReport','create','body','options','raw'];(function(_0x18bb64,_0x3f50d1){var _0x4ec94c=function(_0x462b2e){while(--_0x462b2e){_0x18bb64['push'](_0x18bb64['shift']());}};_0x4ec94c(++_0x3f50d1);}(_0x17ec,0x185));var _0xc17e=function(_0x81ba5f,_0x35e0d0){_0x81ba5f=_0x81ba5f-0x0;var _0x2b518b=_0x17ec[_0x81ba5f];return _0x2b518b;};'use strict';var _=require(_0xc17e('0x0'));var util=require(_0xc17e('0x1'));var moment=require(_0xc17e('0x2'));var BPromise=require(_0xc17e('0x3'));var rs=require(_0xc17e('0x4'));var fs=require('fs');var Redis=require(_0xc17e('0x5'));var db=require(_0xc17e('0x6'))['db'];var utils=require(_0xc17e('0x7'));var logger=require(_0xc17e('0x8'))('rpc');var config=require(_0xc17e('0x9'));var jayson=require(_0xc17e('0xa'));var client=jayson[_0xc17e('0xb')][_0xc17e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x20dac1,_0x55c330,_0xa40cf6){return new BPromise(function(_0xbb585,_0xcd1a8b){return client['request'](_0x20dac1,_0xa40cf6)[_0xc17e('0xd')](function(_0x1358f3){logger[_0xc17e('0xe')](_0xc17e('0xf'),_0x55c330,_0xc17e('0x10'));logger[_0xc17e('0x11')](_0xc17e('0x12'),_0x55c330,_0xc17e('0x10'),JSON[_0xc17e('0x13')](_0x1358f3));if(_0x1358f3[_0xc17e('0x14')]){if(_0x1358f3['error'][_0xc17e('0x15')]===0x1f4){logger[_0xc17e('0x14')](_0xc17e('0xf'),_0x55c330,_0x1358f3[_0xc17e('0x14')][_0xc17e('0x16')]);return _0xcd1a8b(_0x1358f3[_0xc17e('0x14')]['message']);}logger[_0xc17e('0x14')](_0xc17e('0xf'),_0x55c330,_0x1358f3[_0xc17e('0x14')][_0xc17e('0x16')]);return _0xbb585(_0x1358f3[_0xc17e('0x14')][_0xc17e('0x16')]);}else{logger[_0xc17e('0xe')]('ChatQueueReport,\x20%s,\x20%s',_0x55c330,'request\x20sent');_0xbb585(_0x1358f3[_0xc17e('0x17')][_0xc17e('0x16')]);}})[_0xc17e('0x18')](function(_0x4c8482){logger[_0xc17e('0x14')](_0xc17e('0xf'),_0x55c330,_0x4c8482);_0xcd1a8b(_0x4c8482);});});}exports[_0xc17e('0x19')]=function(_0x3d2d15){var _0x48ed3a=this;return new Promise(function(_0x5d3afe,_0x2d0dd6){return db[_0xc17e('0x1a')][_0xc17e('0x1b')](_0x3d2d15[_0xc17e('0x1c')],{'raw':_0x3d2d15[_0xc17e('0x1d')]?_0x3d2d15['options'][_0xc17e('0x1e')]===undefined?!![]:![]:!![]})[_0xc17e('0xd')](function(_0x115f68){logger[_0xc17e('0xe')]('CreateChatQueueReport',_0x3d2d15);logger[_0xc17e('0x11')]('CreateChatQueueReport',_0x3d2d15,JSON[_0xc17e('0x13')](_0x115f68));_0x5d3afe(_0x115f68);})[_0xc17e('0x18')](function(_0x56a2a1){logger[_0xc17e('0x14')]('CreateChatQueueReport',_0x56a2a1[_0xc17e('0x16')],_0x3d2d15);_0x2d0dd6(_0x48ed3a[_0xc17e('0x14')](0x1f4,_0x56a2a1[_0xc17e('0x16')]));});});};exports['UpdateChatQueueReport']=function(_0x2862db){var _0x3837b8=this;return new Promise(function(_0x5790f2,_0x41937f){return db[_0xc17e('0x1a')][_0xc17e('0x1f')](_0x2862db['body'],{'raw':_0x2862db[_0xc17e('0x1d')]?_0x2862db['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2862db[_0xc17e('0x1d')]?_0x2862db[_0xc17e('0x1d')][_0xc17e('0x20')]||null:null,'attributes':_0x2862db[_0xc17e('0x1d')]?_0x2862db[_0xc17e('0x1d')][_0xc17e('0x21')]||null:null,'limit':_0x2862db[_0xc17e('0x1d')]?_0x2862db[_0xc17e('0x1d')]['limit']||null:null})['then'](function(_0x112332){logger['info'](_0xc17e('0x22'),_0x2862db);logger[_0xc17e('0x11')](_0xc17e('0x22'),_0x2862db,JSON[_0xc17e('0x13')](_0x112332));_0x5790f2(_0x112332);})['catch'](function(_0x55bdcd){logger['error']('UpdateChatQueueReport',_0x55bdcd[_0xc17e('0x16')],_0x2862db);_0x41937f(_0x3837b8[_0xc17e('0x14')](0x1f4,_0x55bdcd[_0xc17e('0x16')]));});});};
\ No newline at end of file
index db29750..75a4c27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0055=['index','describe','/:id','show','post','put','update','delete','destroy','multer','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated'];(function(_0x5dba16,_0x53efef){var _0x395e95=function(_0x10f469){while(--_0x10f469){_0x5dba16['push'](_0x5dba16['shift']());}};_0x395e95(++_0x53efef);}(_0x0055,0xda));var _0x5005=function(_0x2d1b06,_0x2bedf1){_0x2d1b06=_0x2d1b06-0x0;var _0x4fca05=_0x0055[_0x2d1b06];return _0x4fca05;};'use strict';var multer=require(_0x5005('0x0'));var util=require(_0x5005('0x1'));var path=require(_0x5005('0x2'));var timeout=require(_0x5005('0x3'));var express=require('express');var router=express[_0x5005('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x5005('0x5'));var config=require(_0x5005('0x6'));var controller=require(_0x5005('0x7'));router[_0x5005('0x8')]('/',auth[_0x5005('0x9')](),controller[_0x5005('0xa')]);router[_0x5005('0x8')]('/describe',auth[_0x5005('0x9')](),controller[_0x5005('0xb')]);router[_0x5005('0x8')](_0x5005('0xc'),auth[_0x5005('0x9')](),controller[_0x5005('0xd')]);router[_0x5005('0xe')]('/',auth[_0x5005('0x9')](),controller['create']);router[_0x5005('0xf')](_0x5005('0xc'),auth['isAuthenticated'](),controller[_0x5005('0x10')]);router[_0x5005('0x11')](_0x5005('0xc'),auth[_0x5005('0x9')](),controller[_0x5005('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xe50f=['delete','destroy','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','update'];(function(_0x9d1e6b,_0x3bdc22){var _0x2b3070=function(_0x4c4ced){while(--_0x4c4ced){_0x9d1e6b['push'](_0x9d1e6b['shift']());}};_0x2b3070(++_0x3bdc22);}(_0xe50f,0x9a));var _0xfe50=function(_0x3d38f0,_0x1750bd){_0x3d38f0=_0x3d38f0-0x0;var _0x329af5=_0xe50f[_0x3d38f0];return _0x329af5;};'use strict';var multer=require('multer');var util=require(_0xfe50('0x0'));var path=require(_0xfe50('0x1'));var timeout=require(_0xfe50('0x2'));var express=require('express');var router=express[_0xfe50('0x3')]();var fs_extra=require(_0xfe50('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xfe50('0x5'));var config=require(_0xfe50('0x6'));var controller=require(_0xfe50('0x7'));router[_0xfe50('0x8')]('/',auth[_0xfe50('0x9')](),controller[_0xfe50('0xa')]);router[_0xfe50('0x8')](_0xfe50('0xb'),auth[_0xfe50('0x9')](),controller[_0xfe50('0xc')]);router[_0xfe50('0x8')](_0xfe50('0xd'),auth[_0xfe50('0x9')](),controller[_0xfe50('0xe')]);router[_0xfe50('0xf')]('/',auth[_0xfe50('0x9')](),controller['create']);router['put'](_0xfe50('0xd'),auth[_0xfe50('0x9')](),controller[_0xfe50('0x10')]);router[_0xfe50('0x11')](_0xfe50('0xd'),auth[_0xfe50('0x9')](),controller[_0xfe50('0x12')]);module['exports']=router;
\ No newline at end of file
index 6befdf6..620af9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x125ff8,_0x41925f){var _0x2d9ef=function(_0x4ef34c){while(--_0x4ef34c){_0x125ff8['push'](_0x125ff8['shift']());}};_0x2d9ef(++_0x41925f);}(_0x9bde,0xe1));var _0xe9bd=function(_0x5ec45f,_0x43afd7){_0x5ec45f=_0x5ec45f-0x0;var _0x511659=_0x9bde[_0x5ec45f];return _0x511659;};'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 _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x303c30,_0x16edcb){var _0x43161b=function(_0x3330ff){while(--_0x3330ff){_0x303c30['push'](_0x303c30['shift']());}};_0x43161b(++_0x16edcb);}(_0xb43b,0x1b2));var _0xbb43=function(_0x40cb23,_0x50f41e){_0x40cb23=_0x40cb23-0x0;var _0x3eae17=_0xb43b[_0x40cb23];return _0x3eae17;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
index 886c483..ee16472 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e9f=['params','keys','length','create','body','update','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','limit','undefined','count','set','Content-Range','json','apply','save','then','destroy','end','sendStatus','error','name','index','map','ChatTransferReport','rawAttributes','type','model','query','intersection','fields','attributes','hasOwnProperty','offset','order','sort','where','filters','pick','filter','merge','options','include','findAll','rows','catch','show'];(function(_0x52723d,_0x204a82){var _0x4c81fa=function(_0x2bff29){while(--_0x2bff29){_0x52723d['push'](_0x52723d['shift']());}};_0x4c81fa(++_0x204a82);}(_0x4e9f,0x16b));var _0xf4e9=function(_0x4e121b,_0x3a821f){_0x4e121b=_0x4e121b-0x0;var _0x518683=_0x4e9f[_0x4e121b];return _0x518683;};'use strict';var emlformat=require(_0xf4e9('0x0'));var rimraf=require(_0xf4e9('0x1'));var zipdir=require(_0xf4e9('0x2'));var jsonpatch=require(_0xf4e9('0x3'));var rp=require(_0xf4e9('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xf4e9('0x5'));var util=require('util');var path=require(_0xf4e9('0x6'));var sox=require(_0xf4e9('0x7'));var csv=require(_0xf4e9('0x8'));var ejs=require(_0xf4e9('0x9'));var fs=require('fs');var fs_extra=require(_0xf4e9('0xa'));var _=require(_0xf4e9('0xb'));var squel=require(_0xf4e9('0xc'));var crypto=require(_0xf4e9('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf4e9('0xe'));var toCsv=require(_0xf4e9('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf4e9('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xf4e9('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf4e9('0x11'));var logger=require(_0xf4e9('0x12'))(_0xf4e9('0x13'));var utils=require(_0xf4e9('0x14'));var config=require(_0xf4e9('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xf4e9('0x16'))['db'];function respondWithStatusCode(_0x4a6a08,_0x5aa4d7){_0x5aa4d7=_0x5aa4d7||0xcc;return function(_0x6d4b73){if(_0x6d4b73){return _0x4a6a08['sendStatus'](_0x5aa4d7);}return _0x4a6a08[_0xf4e9('0x17')](_0x5aa4d7)['end']();};}function respondWithResult(_0x10b7f9,_0x5135bb){_0x5135bb=_0x5135bb||0xc8;return function(_0x43cf88){if(_0x43cf88){return _0x10b7f9[_0xf4e9('0x17')](_0x5135bb)['json'](_0x43cf88);}};}function respondWithFilteredResult(_0x28b5b8,_0x486380){return function(_0x2908bd){if(_0x2908bd){var _0xcd41b2=typeof _0x486380['offset']==='undefined'&&typeof _0x486380[_0xf4e9('0x18')]===_0xf4e9('0x19');var _0x761b03=_0x2908bd[_0xf4e9('0x1a')];var _0x11c1d2=_0xcd41b2?0x0:_0x486380['offset'];var _0x2ee4ea=_0xcd41b2?_0x2908bd[_0xf4e9('0x1a')]:_0x486380['offset']+_0x486380[_0xf4e9('0x18')];var _0x2526c6;if(_0x2ee4ea>=_0x761b03){_0x2ee4ea=_0x761b03;_0x2526c6=0xc8;}else{_0x2526c6=0xce;}_0x28b5b8[_0xf4e9('0x17')](_0x2526c6);return _0x28b5b8[_0xf4e9('0x1b')](_0xf4e9('0x1c'),_0x11c1d2+'-'+_0x2ee4ea+'/'+_0x761b03)[_0xf4e9('0x1d')](_0x2908bd);}return null;};}function patchUpdates(_0x52f9dc){return function(_0x33f2d8){try{jsonpatch[_0xf4e9('0x1e')](_0x33f2d8,_0x52f9dc,!![]);}catch(_0x2684f0){return BPromise['reject'](_0x2684f0);}return _0x33f2d8[_0xf4e9('0x1f')]();};}function saveUpdates(_0x1355d7,_0x491874){return function(_0x68417c){if(_0x68417c){return _0x68417c['update'](_0x1355d7)[_0xf4e9('0x20')](function(_0x106ca3){return _0x106ca3;});}return null;};}function removeEntity(_0x40a10c,_0x1aed7a){return function(_0x2b3116){if(_0x2b3116){return _0x2b3116[_0xf4e9('0x21')]()[_0xf4e9('0x20')](function(){_0x40a10c[_0xf4e9('0x17')](0xcc)[_0xf4e9('0x22')]();});}};}function handleEntityNotFound(_0x12e95b,_0x5a41cd){return function(_0x3e2121){if(!_0x3e2121){_0x12e95b[_0xf4e9('0x23')](0x194);}return _0x3e2121;};}function handleError(_0x1544b9,_0x34fc0d){_0x34fc0d=_0x34fc0d||0x1f4;return function(_0x2405c0){logger[_0xf4e9('0x24')](_0x2405c0['stack']);if(_0x2405c0['name']){delete _0x2405c0[_0xf4e9('0x25')];}_0x1544b9[_0xf4e9('0x17')](_0x34fc0d)['send'](_0x2405c0);};}exports[_0xf4e9('0x26')]=function(_0x218bf6,_0x41de85){var _0x77d0ff={},_0x48a042={},_0x2449f7={'count':0x0,'rows':[]};var _0x1d8b3b=_[_0xf4e9('0x27')](db[_0xf4e9('0x28')][_0xf4e9('0x29')],function(_0x2d9261){return{'name':_0x2d9261['fieldName'],'type':_0x2d9261[_0xf4e9('0x2a')]['key']};});_0x48a042[_0xf4e9('0x2b')]=_[_0xf4e9('0x27')](_0x1d8b3b,_0xf4e9('0x25'));_0x48a042[_0xf4e9('0x2c')]=_['keys'](_0x218bf6[_0xf4e9('0x2c')]);_0x48a042['filters']=_['intersection'](_0x48a042['model'],_0x48a042[_0xf4e9('0x2c')]);_0x77d0ff['attributes']=_[_0xf4e9('0x2d')](_0x48a042[_0xf4e9('0x2b')],qs[_0xf4e9('0x2e')](_0x218bf6[_0xf4e9('0x2c')][_0xf4e9('0x2e')]));_0x77d0ff[_0xf4e9('0x2f')]=_0x77d0ff['attributes']['length']?_0x77d0ff[_0xf4e9('0x2f')]:_0x48a042[_0xf4e9('0x2b')];if(!_0x218bf6[_0xf4e9('0x2c')][_0xf4e9('0x30')]('nolimit')){_0x77d0ff['limit']=qs['limit'](_0x218bf6[_0xf4e9('0x2c')][_0xf4e9('0x18')]);_0x77d0ff[_0xf4e9('0x31')]=qs[_0xf4e9('0x31')](_0x218bf6[_0xf4e9('0x2c')][_0xf4e9('0x31')]);}_0x77d0ff[_0xf4e9('0x32')]=qs[_0xf4e9('0x33')](_0x218bf6[_0xf4e9('0x2c')]['sort']);_0x77d0ff[_0xf4e9('0x34')]=qs[_0xf4e9('0x35')](_[_0xf4e9('0x36')](_0x218bf6[_0xf4e9('0x2c')],_0x48a042[_0xf4e9('0x35')]),_0x1d8b3b);if(_0x218bf6[_0xf4e9('0x2c')][_0xf4e9('0x37')]){_0x77d0ff[_0xf4e9('0x34')]=_[_0xf4e9('0x38')](_0x77d0ff[_0xf4e9('0x34')],{'$or':_['map'](_0x1d8b3b,function(_0x40ee73){if(_0x40ee73[_0xf4e9('0x2a')]!=='VIRTUAL'){var _0x3d9c86={};_0x3d9c86[_0x40ee73[_0xf4e9('0x25')]]={'$like':'%'+_0x218bf6[_0xf4e9('0x2c')]['filter']+'%'};return _0x3d9c86;}})});}_0x77d0ff=_[_0xf4e9('0x38')]({},_0x77d0ff,_0x218bf6[_0xf4e9('0x39')]);var _0x3ff54f={'where':_0x77d0ff[_0xf4e9('0x34')]};return db[_0xf4e9('0x28')][_0xf4e9('0x1a')](_0x3ff54f)[_0xf4e9('0x20')](function(_0x22790d){_0x2449f7[_0xf4e9('0x1a')]=_0x22790d;if(_0x218bf6[_0xf4e9('0x2c')]['includeAll']){_0x77d0ff[_0xf4e9('0x3a')]=[{'all':!![]}];}return db['ChatTransferReport'][_0xf4e9('0x3b')](_0x77d0ff);})[_0xf4e9('0x20')](function(_0xb63921){_0x2449f7[_0xf4e9('0x3c')]=_0xb63921;return _0x2449f7;})[_0xf4e9('0x20')](respondWithFilteredResult(_0x41de85,_0x77d0ff))[_0xf4e9('0x3d')](handleError(_0x41de85,null));};exports[_0xf4e9('0x3e')]=function(_0x32af0e,_0x10e9cb){var _0x42b91c={'raw':!![],'where':{'id':_0x32af0e[_0xf4e9('0x3f')]['id']}},_0x23ca6={};_0x23ca6[_0xf4e9('0x2b')]=_[_0xf4e9('0x40')](db[_0xf4e9('0x28')][_0xf4e9('0x29')]);_0x23ca6[_0xf4e9('0x2c')]=_[_0xf4e9('0x40')](_0x32af0e[_0xf4e9('0x2c')]);_0x23ca6['filters']=_[_0xf4e9('0x2d')](_0x23ca6['model'],_0x23ca6[_0xf4e9('0x2c')]);_0x42b91c[_0xf4e9('0x2f')]=_[_0xf4e9('0x2d')](_0x23ca6[_0xf4e9('0x2b')],qs['fields'](_0x32af0e[_0xf4e9('0x2c')][_0xf4e9('0x2e')]));_0x42b91c['attributes']=_0x42b91c[_0xf4e9('0x2f')][_0xf4e9('0x41')]?_0x42b91c[_0xf4e9('0x2f')]:_0x23ca6[_0xf4e9('0x2b')];if(_0x32af0e[_0xf4e9('0x2c')]['includeAll']){_0x42b91c[_0xf4e9('0x3a')]=[{'all':!![]}];}_0x42b91c=_[_0xf4e9('0x38')]({},_0x42b91c,_0x32af0e[_0xf4e9('0x39')]);return db[_0xf4e9('0x28')]['find'](_0x42b91c)[_0xf4e9('0x20')](handleEntityNotFound(_0x10e9cb,null))[_0xf4e9('0x20')](respondWithResult(_0x10e9cb,null))[_0xf4e9('0x3d')](handleError(_0x10e9cb,null));};exports[_0xf4e9('0x42')]=function(_0x4b9497,_0x31d08f){return db[_0xf4e9('0x28')][_0xf4e9('0x42')](_0x4b9497[_0xf4e9('0x43')],{})['then'](respondWithResult(_0x31d08f,0xc9))['catch'](handleError(_0x31d08f,null));};exports[_0xf4e9('0x44')]=function(_0x1182e8,_0x5385c3){if(_0x1182e8[_0xf4e9('0x43')]['id']){delete _0x1182e8[_0xf4e9('0x43')]['id'];}return db[_0xf4e9('0x28')][_0xf4e9('0x45')]({'where':{'id':_0x1182e8[_0xf4e9('0x3f')]['id']}})[_0xf4e9('0x20')](handleEntityNotFound(_0x5385c3,null))[_0xf4e9('0x20')](saveUpdates(_0x1182e8[_0xf4e9('0x43')],null))[_0xf4e9('0x20')](respondWithResult(_0x5385c3,null))[_0xf4e9('0x3d')](handleError(_0x5385c3,null));};exports[_0xf4e9('0x21')]=function(_0x4f07c6,_0x4cbae3){return db[_0xf4e9('0x28')][_0xf4e9('0x45')]({'where':{'id':_0x4f07c6[_0xf4e9('0x3f')]['id']}})['then'](handleEntityNotFound(_0x4cbae3,null))[_0xf4e9('0x20')](removeEntity(_0x4cbae3,null))[_0xf4e9('0x3d')](handleError(_0x4cbae3,null));};exports[_0xf4e9('0x46')]=function(_0xc52199,_0x244017){return db[_0xf4e9('0x28')][_0xf4e9('0x46')]()[_0xf4e9('0x20')](respondWithResult(_0x244017,null))[_0xf4e9('0x3d')](handleError(_0x244017,null));};
\ No newline at end of file
+var _0x328e=['request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','apply','save','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','options','ChatTransferReport','count','include','findAll','rows','catch','show','params','length','includeAll','merge','create','body','find','destroy','describe','eml-format','rimraf','fast-json-patch'];(function(_0x1afe5a,_0x1d6303){var _0x6a431b=function(_0x435e81){while(--_0x435e81){_0x1afe5a['push'](_0x1afe5a['shift']());}};_0x6a431b(++_0x1d6303);}(_0x328e,0x18d));var _0xe328=function(_0x323b84,_0x4255bf){_0x323b84=_0x323b84-0x0;var _0x54cf6d=_0x328e[_0x323b84];return _0x54cf6d;};'use strict';var emlformat=require(_0xe328('0x0'));var rimraf=require(_0xe328('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe328('0x2'));var rp=require(_0xe328('0x3'));var moment=require('moment');var BPromise=require(_0xe328('0x4'));var Mustache=require(_0xe328('0x5'));var util=require(_0xe328('0x6'));var path=require(_0xe328('0x7'));var sox=require(_0xe328('0x8'));var csv=require(_0xe328('0x9'));var ejs=require(_0xe328('0xa'));var fs=require('fs');var fs_extra=require(_0xe328('0xb'));var _=require(_0xe328('0xc'));var squel=require(_0xe328('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe328('0xe'));var toCsv=require('to-csv');var querystring=require(_0xe328('0xf'));var Papa=require(_0xe328('0x10'));var Redis=require('ioredis');var authService=require(_0xe328('0x11'));var qs=require(_0xe328('0x12'));var as=require(_0xe328('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe328('0x14'))(_0xe328('0x15'));var utils=require('../../config/utils');var config=require(_0xe328('0x16'));var licenseUtil=require(_0xe328('0x17'));var db=require(_0xe328('0x18'))['db'];function respondWithStatusCode(_0x6a6746,_0xac23ae){_0xac23ae=_0xac23ae||0xcc;return function(_0x372747){if(_0x372747){return _0x6a6746[_0xe328('0x19')](_0xac23ae);}return _0x6a6746['status'](_0xac23ae)[_0xe328('0x1a')]();};}function respondWithResult(_0x15fcb4,_0x5aceb4){_0x5aceb4=_0x5aceb4||0xc8;return function(_0x240486){if(_0x240486){return _0x15fcb4[_0xe328('0x1b')](_0x5aceb4)[_0xe328('0x1c')](_0x240486);}};}function respondWithFilteredResult(_0x5bc870,_0x1aba6b){return function(_0x3efcc3){if(_0x3efcc3){var _0x238d4b=typeof _0x1aba6b[_0xe328('0x1d')]===_0xe328('0x1e')&&typeof _0x1aba6b[_0xe328('0x1f')]==='undefined';var _0x14fdea=_0x3efcc3['count'];var _0x313943=_0x238d4b?0x0:_0x1aba6b['offset'];var _0x41e8f5=_0x238d4b?_0x3efcc3['count']:_0x1aba6b['offset']+_0x1aba6b[_0xe328('0x1f')];var _0x1b0043;if(_0x41e8f5>=_0x14fdea){_0x41e8f5=_0x14fdea;_0x1b0043=0xc8;}else{_0x1b0043=0xce;}_0x5bc870[_0xe328('0x1b')](_0x1b0043);return _0x5bc870[_0xe328('0x20')](_0xe328('0x21'),_0x313943+'-'+_0x41e8f5+'/'+_0x14fdea)[_0xe328('0x1c')](_0x3efcc3);}return null;};}function patchUpdates(_0x2b1236){return function(_0x4c0a9b){try{jsonpatch[_0xe328('0x22')](_0x4c0a9b,_0x2b1236,!![]);}catch(_0x356e34){return BPromise['reject'](_0x356e34);}return _0x4c0a9b[_0xe328('0x23')]();};}function saveUpdates(_0x2ee9cc,_0x53cc67){return function(_0x268f3d){if(_0x268f3d){return _0x268f3d[_0xe328('0x24')](_0x2ee9cc)['then'](function(_0x399ff2){return _0x399ff2;});}return null;};}function removeEntity(_0x27e09f,_0x387975){return function(_0x44a0b3){if(_0x44a0b3){return _0x44a0b3['destroy']()[_0xe328('0x25')](function(){_0x27e09f['status'](0xcc)[_0xe328('0x1a')]();});}};}function handleEntityNotFound(_0x32cc30,_0x48b6a6){return function(_0x5593bc){if(!_0x5593bc){_0x32cc30[_0xe328('0x19')](0x194);}return _0x5593bc;};}function handleError(_0x421c47,_0x2d161b){_0x2d161b=_0x2d161b||0x1f4;return function(_0x13c123){logger[_0xe328('0x26')](_0x13c123[_0xe328('0x27')]);if(_0x13c123[_0xe328('0x28')]){delete _0x13c123[_0xe328('0x28')];}_0x421c47[_0xe328('0x1b')](_0x2d161b)[_0xe328('0x29')](_0x13c123);};}exports[_0xe328('0x2a')]=function(_0x4e8746,_0xa061e9){var _0x24fbd8={},_0x2bea83={},_0x356692={'count':0x0,'rows':[]};var _0x1a41e9=_[_0xe328('0x2b')](db['ChatTransferReport'][_0xe328('0x2c')],function(_0xe41734){return{'name':_0xe41734[_0xe328('0x2d')],'type':_0xe41734[_0xe328('0x2e')][_0xe328('0x2f')]};});_0x2bea83[_0xe328('0x30')]=_[_0xe328('0x2b')](_0x1a41e9,_0xe328('0x28'));_0x2bea83[_0xe328('0x31')]=_[_0xe328('0x32')](_0x4e8746[_0xe328('0x31')]);_0x2bea83[_0xe328('0x33')]=_[_0xe328('0x34')](_0x2bea83[_0xe328('0x30')],_0x2bea83['query']);_0x24fbd8[_0xe328('0x35')]=_[_0xe328('0x34')](_0x2bea83[_0xe328('0x30')],qs[_0xe328('0x36')](_0x4e8746[_0xe328('0x31')][_0xe328('0x36')]));_0x24fbd8[_0xe328('0x35')]=_0x24fbd8[_0xe328('0x35')]['length']?_0x24fbd8['attributes']:_0x2bea83['model'];if(!_0x4e8746[_0xe328('0x31')][_0xe328('0x37')](_0xe328('0x38'))){_0x24fbd8[_0xe328('0x1f')]=qs[_0xe328('0x1f')](_0x4e8746[_0xe328('0x31')][_0xe328('0x1f')]);_0x24fbd8['offset']=qs[_0xe328('0x1d')](_0x4e8746[_0xe328('0x31')][_0xe328('0x1d')]);}_0x24fbd8[_0xe328('0x39')]=qs[_0xe328('0x3a')](_0x4e8746[_0xe328('0x31')][_0xe328('0x3a')]);_0x24fbd8['where']=qs[_0xe328('0x33')](_[_0xe328('0x3b')](_0x4e8746['query'],_0x2bea83[_0xe328('0x33')]),_0x1a41e9);if(_0x4e8746[_0xe328('0x31')][_0xe328('0x3c')]){_0x24fbd8[_0xe328('0x3d')]=_['merge'](_0x24fbd8[_0xe328('0x3d')],{'$or':_[_0xe328('0x2b')](_0x1a41e9,function(_0x59258c){if(_0x59258c['type']!==_0xe328('0x3e')){var _0xb44d07={};_0xb44d07[_0x59258c[_0xe328('0x28')]]={'$like':'%'+_0x4e8746['query'][_0xe328('0x3c')]+'%'};return _0xb44d07;}})});}_0x24fbd8=_['merge']({},_0x24fbd8,_0x4e8746[_0xe328('0x3f')]);var _0x5e3418={'where':_0x24fbd8[_0xe328('0x3d')]};return db[_0xe328('0x40')]['count'](_0x5e3418)['then'](function(_0x4e007f){_0x356692[_0xe328('0x41')]=_0x4e007f;if(_0x4e8746[_0xe328('0x31')]['includeAll']){_0x24fbd8[_0xe328('0x42')]=[{'all':!![]}];}return db['ChatTransferReport'][_0xe328('0x43')](_0x24fbd8);})[_0xe328('0x25')](function(_0x18d637){_0x356692[_0xe328('0x44')]=_0x18d637;return _0x356692;})['then'](respondWithFilteredResult(_0xa061e9,_0x24fbd8))[_0xe328('0x45')](handleError(_0xa061e9,null));};exports[_0xe328('0x46')]=function(_0x8b7cc5,_0x2b3de8){var _0x2d6086={'raw':!![],'where':{'id':_0x8b7cc5[_0xe328('0x47')]['id']}},_0x1d7ae0={};_0x1d7ae0[_0xe328('0x30')]=_[_0xe328('0x32')](db['ChatTransferReport'][_0xe328('0x2c')]);_0x1d7ae0[_0xe328('0x31')]=_[_0xe328('0x32')](_0x8b7cc5[_0xe328('0x31')]);_0x1d7ae0[_0xe328('0x33')]=_['intersection'](_0x1d7ae0[_0xe328('0x30')],_0x1d7ae0[_0xe328('0x31')]);_0x2d6086['attributes']=_[_0xe328('0x34')](_0x1d7ae0[_0xe328('0x30')],qs[_0xe328('0x36')](_0x8b7cc5[_0xe328('0x31')][_0xe328('0x36')]));_0x2d6086['attributes']=_0x2d6086[_0xe328('0x35')][_0xe328('0x48')]?_0x2d6086[_0xe328('0x35')]:_0x1d7ae0[_0xe328('0x30')];if(_0x8b7cc5[_0xe328('0x31')][_0xe328('0x49')]){_0x2d6086['include']=[{'all':!![]}];}_0x2d6086=_[_0xe328('0x4a')]({},_0x2d6086,_0x8b7cc5['options']);return db[_0xe328('0x40')]['find'](_0x2d6086)[_0xe328('0x25')](handleEntityNotFound(_0x2b3de8,null))[_0xe328('0x25')](respondWithResult(_0x2b3de8,null))[_0xe328('0x45')](handleError(_0x2b3de8,null));};exports[_0xe328('0x4b')]=function(_0x4687f5,_0x101bb1){return db[_0xe328('0x40')][_0xe328('0x4b')](_0x4687f5[_0xe328('0x4c')],{})['then'](respondWithResult(_0x101bb1,0xc9))[_0xe328('0x45')](handleError(_0x101bb1,null));};exports[_0xe328('0x24')]=function(_0x3b8806,_0x32ba0d){if(_0x3b8806['body']['id']){delete _0x3b8806[_0xe328('0x4c')]['id'];}return db[_0xe328('0x40')][_0xe328('0x4d')]({'where':{'id':_0x3b8806['params']['id']}})['then'](handleEntityNotFound(_0x32ba0d,null))['then'](saveUpdates(_0x3b8806[_0xe328('0x4c')],null))[_0xe328('0x25')](respondWithResult(_0x32ba0d,null))['catch'](handleError(_0x32ba0d,null));};exports[_0xe328('0x4e')]=function(_0x2c8044,_0x433b4d){return db[_0xe328('0x40')][_0xe328('0x4d')]({'where':{'id':_0x2c8044[_0xe328('0x47')]['id']}})[_0xe328('0x25')](handleEntityNotFound(_0x433b4d,null))[_0xe328('0x25')](removeEntity(_0x433b4d,null))[_0xe328('0x45')](handleError(_0x433b4d,null));};exports[_0xe328('0x4f')]=function(_0x578ccd,_0x90bf17){return db[_0xe328('0x40')][_0xe328('0x4f')]()[_0xe328('0x25')](respondWithResult(_0x90bf17,null))[_0xe328('0x45')](handleError(_0x90bf17,null));};
\ No newline at end of file
index 8569435..8f74daf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x285f=['./chatTransferReport.attributes','exports','define','report_chat_transfer','uniqueid','util','api','moment','request-promise','../../config/environment'];(function(_0x284f11,_0x3b822a){var _0x3777d3=function(_0x4b29f3){while(--_0x4b29f3){_0x284f11['push'](_0x284f11['shift']());}};_0x3777d3(++_0x3b822a);}(_0x285f,0x195));var _0xf285=function(_0xe5c56d,_0x262b10){_0xe5c56d=_0xe5c56d-0x0;var _0x35d3b8=_0x285f[_0xe5c56d];return _0x35d3b8;};'use strict';var _=require('lodash');var util=require(_0xf285('0x0'));var logger=require('../../config/logger')(_0xf285('0x1'));var moment=require(_0xf285('0x2'));var BPromise=require('bluebird');var rp=require(_0xf285('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf285('0x4'));var attributes=require(_0xf285('0x5'));module[_0xf285('0x6')]=function(_0x2966a0,_0x1c1f03){return _0x2966a0[_0xf285('0x7')]('ChatTransferReport',attributes,{'tableName':_0xf285('0x8'),'paranoid':![],'indexes':[{'name':_0xf285('0x9'),'fields':[_0xf285('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2849=['api','moment','bluebird','request-promise','path','rimraf','./chatTransferReport.attributes','define','report_chat_transfer','uniqueid','lodash','util'];(function(_0x9ae730,_0x4105be){var _0x151049=function(_0x17c3bf){while(--_0x17c3bf){_0x9ae730['push'](_0x9ae730['shift']());}};_0x151049(++_0x4105be);}(_0x2849,0x14e));var _0x9284=function(_0xcd8e6f,_0x1ed0e6){_0xcd8e6f=_0xcd8e6f-0x0;var _0x41abe3=_0x2849[_0xcd8e6f];return _0x41abe3;};'use strict';var _=require(_0x9284('0x0'));var util=require(_0x9284('0x1'));var logger=require('../../config/logger')(_0x9284('0x2'));var moment=require(_0x9284('0x3'));var BPromise=require(_0x9284('0x4'));var rp=require(_0x9284('0x5'));var fs=require('fs');var path=require(_0x9284('0x6'));var rimraf=require(_0x9284('0x7'));var config=require('../../config/environment');var attributes=require(_0x9284('0x8'));module['exports']=function(_0xc010e6,_0x538244){return _0xc010e6[_0x9284('0x9')]('ChatTransferReport',attributes,{'tableName':_0x9284('0xa'),'paranoid':![],'indexes':[{'name':_0x9284('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index cfe58b8..cad6279 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1be4=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','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'];(function(_0x49dd7c,_0x5cbdd7){var _0x565117=function(_0x3ef347){while(--_0x3ef347){_0x49dd7c['push'](_0x49dd7c['shift']());}};_0x565117(++_0x5cbdd7);}(_0x1be4,0x1f2));var _0x41be=function(_0x555c17,_0x2e6c2a){_0x555c17=_0x555c17-0x0;var _0x15a073=_0x1be4[_0x555c17];return _0x15a073;};'use strict';var _=require(_0x41be('0x0'));var util=require(_0x41be('0x1'));var moment=require(_0x41be('0x2'));var BPromise=require(_0x41be('0x3'));var rs=require(_0x41be('0x4'));var fs=require('fs');var Redis=require(_0x41be('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x41be('0x6'));var logger=require(_0x41be('0x7'))(_0x41be('0x8'));var config=require(_0x41be('0x9'));var jayson=require(_0x41be('0xa'));var client=jayson[_0x41be('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x221c36,_0x41fcdb,_0x4b16f9){return new BPromise(function(_0x24b241,_0x4d2398){return client[_0x41be('0xc')](_0x221c36,_0x4b16f9)[_0x41be('0xd')](function(_0x503229){logger[_0x41be('0xe')](_0x41be('0xf'),_0x41fcdb,_0x41be('0x10'));logger[_0x41be('0x11')](_0x41be('0x12'),_0x41fcdb,'request\x20sent',JSON[_0x41be('0x13')](_0x503229));if(_0x503229[_0x41be('0x14')]){if(_0x503229['error'][_0x41be('0x15')]===0x1f4){logger[_0x41be('0x14')](_0x41be('0xf'),_0x41fcdb,_0x503229[_0x41be('0x14')]['message']);return _0x4d2398(_0x503229[_0x41be('0x14')]['message']);}logger[_0x41be('0x14')](_0x41be('0xf'),_0x41fcdb,_0x503229[_0x41be('0x14')][_0x41be('0x16')]);return _0x24b241(_0x503229['error'][_0x41be('0x16')]);}else{logger[_0x41be('0xe')](_0x41be('0xf'),_0x41fcdb,_0x41be('0x10'));_0x24b241(_0x503229[_0x41be('0x17')][_0x41be('0x16')]);}})[_0x41be('0x18')](function(_0x4026ee){logger[_0x41be('0x14')]('ChatTransferReport,\x20%s,\x20%s',_0x41fcdb,_0x4026ee);_0x4d2398(_0x4026ee);});});}
\ No newline at end of file
+var _0x656f=['lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','ChatTransferReport,\x20%s,\x20%s','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result'];(function(_0x931900,_0x9357c8){var _0x4c0c04=function(_0x39251e){while(--_0x39251e){_0x931900['push'](_0x931900['shift']());}};_0x4c0c04(++_0x9357c8);}(_0x656f,0x1a4));var _0xf656=function(_0xd226e5,_0x1b30b3){_0xd226e5=_0xd226e5-0x0;var _0x16c904=_0x656f[_0xd226e5];return _0x16c904;};'use strict';var _=require(_0xf656('0x0'));var util=require('util');var moment=require(_0xf656('0x1'));var BPromise=require(_0xf656('0x2'));var rs=require(_0xf656('0x3'));var fs=require('fs');var Redis=require(_0xf656('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf656('0x5'));var logger=require(_0xf656('0x6'))(_0xf656('0x7'));var config=require(_0xf656('0x8'));var jayson=require(_0xf656('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1676e4,_0x3820d3,_0x16d74e){return new BPromise(function(_0x107e68,_0x3b1a18){return client[_0xf656('0xa')](_0x1676e4,_0x16d74e)[_0xf656('0xb')](function(_0x5f0c25){logger[_0xf656('0xc')](_0xf656('0xd'),_0x3820d3,'request\x20sent');logger[_0xf656('0xe')](_0xf656('0xf'),_0x3820d3,_0xf656('0x10'),JSON[_0xf656('0x11')](_0x5f0c25));if(_0x5f0c25[_0xf656('0x12')]){if(_0x5f0c25[_0xf656('0x12')]['code']===0x1f4){logger[_0xf656('0x12')](_0xf656('0xd'),_0x3820d3,_0x5f0c25[_0xf656('0x12')][_0xf656('0x13')]);return _0x3b1a18(_0x5f0c25['error']['message']);}logger[_0xf656('0x12')](_0xf656('0xd'),_0x3820d3,_0x5f0c25[_0xf656('0x12')][_0xf656('0x13')]);return _0x107e68(_0x5f0c25['error'][_0xf656('0x13')]);}else{logger['info'](_0xf656('0xd'),_0x3820d3,_0xf656('0x10'));_0x107e68(_0x5f0c25[_0xf656('0x14')]['message']);}})['catch'](function(_0x1d8e56){logger[_0xf656('0x12')](_0xf656('0xd'),_0x3820d3,_0x1d8e56);_0x3b1a18(_0x1d8e56);});});}
\ No newline at end of file
index 0c62bb6..6567e6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7323=['/describe','describe','get','show','post','create','delete','/:id','destroy','exports','util','path','connect-timeout','express','fs-extra','../../config/environment','./chatTransferReport.controller','isAuthenticated','index'];(function(_0x21c006,_0x3fc31b){var _0xcf5698=function(_0x4168fb){while(--_0x4168fb){_0x21c006['push'](_0x21c006['shift']());}};_0xcf5698(++_0x3fc31b);}(_0x7323,0x1bf));var _0x3732=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0x7323[_0x2bf141];return _0x48277b;};'use strict';var multer=require('multer');var util=require(_0x3732('0x0'));var path=require(_0x3732('0x1'));var timeout=require(_0x3732('0x2'));var express=require(_0x3732('0x3'));var router=express['Router']();var fs_extra=require(_0x3732('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3732('0x5'));var controller=require(_0x3732('0x6'));router['get']('/',auth[_0x3732('0x7')](),controller[_0x3732('0x8')]);router['get'](_0x3732('0x9'),auth['isAuthenticated'](),controller[_0x3732('0xa')]);router[_0x3732('0xb')]('/:id',auth[_0x3732('0x7')](),controller[_0x3732('0xc')]);router[_0x3732('0xd')]('/',auth[_0x3732('0x7')](),controller[_0x3732('0xe')]);router['put']('/:id',auth[_0x3732('0x7')](),controller['update']);router[_0x3732('0xf')](_0x3732('0x10'),auth[_0x3732('0x7')](),controller[_0x3732('0x11')]);module[_0x3732('0x12')]=router;
\ No newline at end of file
+var _0x2ce5=['describe','/:id','post','put','update','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe'];(function(_0x3b4c9b,_0x197a81){var _0x498020=function(_0x3b2691){while(--_0x3b2691){_0x3b4c9b['push'](_0x3b4c9b['shift']());}};_0x498020(++_0x197a81);}(_0x2ce5,0x16c));var _0x52ce=function(_0x842685,_0x540bd3){_0x842685=_0x842685-0x0;var _0x978848=_0x2ce5[_0x842685];return _0x978848;};'use strict';var multer=require(_0x52ce('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x52ce('0x1'));var express=require('express');var router=express[_0x52ce('0x2')]();var fs_extra=require(_0x52ce('0x3'));var auth=require(_0x52ce('0x4'));var interaction=require(_0x52ce('0x5'));var config=require('../../config/environment');var controller=require('./chatTransferReport.controller');router[_0x52ce('0x6')]('/',auth[_0x52ce('0x7')](),controller[_0x52ce('0x8')]);router[_0x52ce('0x6')](_0x52ce('0x9'),auth[_0x52ce('0x7')](),controller[_0x52ce('0xa')]);router[_0x52ce('0x6')](_0x52ce('0xb'),auth[_0x52ce('0x7')](),controller['show']);router[_0x52ce('0xc')]('/',auth[_0x52ce('0x7')](),controller['create']);router[_0x52ce('0xd')]('/:id',auth[_0x52ce('0x7')](),controller[_0x52ce('0xe')]);router['delete']('/:id',auth[_0x52ce('0x7')](),controller[_0x52ce('0xf')]);module[_0x52ce('0x10')]=router;
\ No newline at end of file
index ed031bb..4a42a78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdba0=['INTEGER','name','text','input','email','getDataValue','onlineForm','parse','setDataValue','stringify','Comments','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}}','bottom_right','#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}}','exports','STRING','address','Agent','#011F6A','#ffffff','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Chat','Send','Contact\x20us','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Feedback','star','thumb'];(function(_0x3a0c4f,_0x5dd1a3){var _0x247049=function(_0x144695){while(--_0x144695){_0x3a0c4f['push'](_0x3a0c4f['shift']());}};_0x247049(++_0x5dd1a3);}(_0xdba0,0xe7));var _0x0dba=function(_0x43b584,_0x20a6bd){_0x43b584=_0x43b584-0x0;var _0x48f27b=_0xdba0[_0x43b584];return _0x48f27b;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module[_0x0dba('0x0')]={'name':{'type':Sequelize[_0x0dba('0x1')],'allowNull':![]},'address':{'type':Sequelize[_0x0dba('0x1')],'allowNull':![],'unique':_0x0dba('0x2')},'description':{'type':Sequelize[_0x0dba('0x1')]},'mapKey':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':'email'},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':'email'},'key':{'type':Sequelize['STRING'],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':_0x0dba('0x3')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize[_0x0dba('0x1')],'allowNull':![],'defaultValue':_0x0dba('0x4'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x0dba('0x1')],'allowNull':![],'defaultValue':_0x0dba('0x4'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x0dba('0x1')],'allowNull':![],'defaultValue':_0x0dba('0x5'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0x0dba('0x1')]},'animation':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x0dba('0x7')](_0x0dba('0x8'),_0x0dba('0x9')),'defaultValue':_0x0dba('0x8')},'header_online':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':_0x0dba('0xa')},'start_chat_button':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':_0x0dba('0xb')},'offline_chat_button':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':_0x0dba('0xc')},'header_offline':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':_0x0dba('0xd')},'download_transcript':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':!![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':_0x0dba('0xe')},'defaultWhiteLabel':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x0dba('0xf')]},'closingQuestion':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':_0x0dba('0x10')},'formSubmitSuccessMessage':{'type':Sequelize['STRING'],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':_0x0dba('0x11')},'noteTitle':{'type':Sequelize['STRING'],'defaultValue':_0x0dba('0x12')},'placeholderMessage':{'type':Sequelize['STRING'],'defaultValue':_0x0dba('0x13')},'closingMessage':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':_0x0dba('0x14')},'closingMessageButton':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':'Send'},'skipMessageButton':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':_0x0dba('0x15')},'ratingType':{'type':Sequelize[_0x0dba('0x7')](_0x0dba('0x16'),_0x0dba('0x17')),'defaultValue':_0x0dba('0x16')},'ratingStarsNumber':{'type':Sequelize[_0x0dba('0x18')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x0dba('0xf')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':'input','variable':null,'config':{'placeholder':_0x0dba('0x19'),'type':_0x0dba('0x1a'),'required':!![]},'props':{'title':'name','helpText':''}},{'type':_0x0dba('0x1b'),'props':{'title':_0x0dba('0x1c'),'helpText':''},'config':{'required':!![],'placeholder':_0x0dba('0x1c'),'type':_0x0dba('0x1c')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x0dba('0x1d')](_0x0dba('0x1e'))?JSON[_0x0dba('0x1f')](this[_0x0dba('0x1d')](_0x0dba('0x1e'))):{};},'set':function(_0x4ce202){return this[_0x0dba('0x20')](_0x0dba('0x1e'),JSON[_0x0dba('0x21')](_0x4ce202));}},'offlineForm':{'type':Sequelize[_0x0dba('0xf')],'defaultValue':function(){return JSON[_0x0dba('0x21')]({'items':[{'type':_0x0dba('0x1b'),'props':{'title':_0x0dba('0x1c'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':_0x0dba('0x1c')},'variable':null},{'type':'textarea','config':{'placeholder':_0x0dba('0x22')},'props':{'title':'Comments','helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this[_0x0dba('0x1d')](_0x0dba('0x23'))?JSON[_0x0dba('0x1f')](this[_0x0dba('0x1d')](_0x0dba('0x23'))):{};},'set':function(_0x5d719e){return this['setDataValue'](_0x0dba('0x23'),JSON[_0x0dba('0x21')](_0x5d719e));}},'token':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':function(){return rs[_0x0dba('0x24')]();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x0dba('0x1')]},'forwardOffline':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x0dba('0x1')]},'waitingTitle':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':_0x0dba('0x25')},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x0dba('0x26')},'offlineMessageSubject':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':_0x0dba('0x27')},'offlineMessageBody':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':_0x0dba('0x28')},'enableUnmanagedNote':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':_0x0dba('0x29')},'skipUnmanaged':{'type':Sequelize['STRING'],'defaultValue':'Skip'},'sendUnmanaged':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':_0x0dba('0xc')},'enableCustomerAttachment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x0dba('0x1')]},'notificationTemplate':{'type':Sequelize[_0x0dba('0xf')],'defaultValue':function(){return _0x0dba('0x2a');}},'notificationSound':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':'website_alias'},'waitForTheAssignedAgent':{'type':Sequelize[_0x0dba('0x18')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':_0x0dba('0x2b')},'verticalAlignment':{'type':Sequelize[_0x0dba('0x18')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':'alternate'},'defaultTitle':{'type':Sequelize[_0x0dba('0x1')]},'customerAvatar':{'type':Sequelize[_0x0dba('0xf')]},'showCustomerAvatar':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x0dba('0x18')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x0dba('0x2c'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x0dba('0x18')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x0dba('0x18')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':'System'},'systemAvatar':{'type':Sequelize[_0x0dba('0xf')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0dba('0x18')],'comment':_0x0dba('0x2d')},'mandatoryDisposition':{'type':Sequelize[_0x0dba('0x6')],'defaultValue':![],'comment':_0x0dba('0x2e'),'set':function(_0xb6db55){if(!_0xb6db55)this[_0x0dba('0x20')](_0x0dba('0x2f'),null);this[_0x0dba('0x20')](_0x0dba('0x30'),_0xb6db55);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize[_0x0dba('0x1')],'allowNull':![],'defaultValue':_0x0dba('0x31')},'vidaooNote':{'type':Sequelize[_0x0dba('0x1')],'defaultValue':function(){return _0x0dba('0x32');}},'vidaooMetadata':{'type':Sequelize[_0x0dba('0xf')],'defaultValue':null},'openNewInteraction':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x0dba('0xf')]}};
\ No newline at end of file
+var _0x4420=['You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Skip','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','bottom_right','#fafafa','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','exports','STRING','address','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','squared','We\x20are\x20here!','Send','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','ENUM','star','thumb','name','text','input','getDataValue','onlineForm','parse','setDataValue','stringify','Comments','Leave\x20your\x20comments','offlineForm','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName'];(function(_0x28791b,_0x1c8869){var _0x4edb30=function(_0x24e105){while(--_0x24e105){_0x28791b['push'](_0x28791b['shift']());}};_0x4edb30(++_0x1c8869);}(_0x4420,0x9d));var _0x0442=function(_0x4d511f,_0x24a112){_0x4d511f=_0x4d511f-0x0;var _0x5c11ff=_0x4420[_0x4d511f];return _0x5c11ff;};'use strict';var Sequelize=require(_0x0442('0x0'));var rs=require('randomstring');module[_0x0442('0x1')]={'name':{'type':Sequelize[_0x0442('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0x0442('0x2')],'allowNull':![],'unique':_0x0442('0x3')},'description':{'type':Sequelize[_0x0442('0x2')]},'mapKey':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x4')},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':_0x0442('0x4')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x5')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize[_0x0442('0x2')],'allowNull':![],'defaultValue':_0x0442('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x0442('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x0442('0x2')],'allowNull':![],'defaultValue':_0x0442('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x0442('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize['STRING']},'animation':{'type':Sequelize[_0x0442('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM']('rounded',_0x0442('0xa')),'defaultValue':'rounded'},'header_online':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0xb')},'start_chat_button':{'type':Sequelize['STRING'],'defaultValue':'Chat'},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0x0442('0xc')},'header_offline':{'type':Sequelize[_0x0442('0x2')],'defaultValue':'Contact\x20us'},'download_transcript':{'type':Sequelize[_0x0442('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x0442('0x8')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0xd')},'defaultWhiteLabel':{'type':Sequelize[_0x0442('0x9')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x0442('0xe')]},'closingQuestion':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0xf')},'formSubmitSuccessMessage':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x10')},'formSubmitFailureMessage':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x11')},'noteTitle':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x12')},'placeholderMessage':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x13')},'closingMessage':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x14')},'closingMessageButton':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0xc')},'skipMessageButton':{'type':Sequelize[_0x0442('0x2')],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x0442('0x2')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize[_0x0442('0x15')](_0x0442('0x16'),_0x0442('0x17')),'defaultValue':_0x0442('0x16')},'ratingStarsNumber':{'type':Sequelize[_0x0442('0x8')],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON['stringify']({'items':[{'type':'input','variable':null,'config':{'placeholder':_0x0442('0x18'),'type':_0x0442('0x19'),'required':!![]},'props':{'title':'name','helpText':''}},{'type':_0x0442('0x1a'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':'email','type':_0x0442('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x0442('0x1b')](_0x0442('0x1c'))?JSON[_0x0442('0x1d')](this['getDataValue'](_0x0442('0x1c'))):{};},'set':function(_0x52b487){return this[_0x0442('0x1e')]('onlineForm',JSON[_0x0442('0x1f')](_0x52b487));}},'offlineForm':{'type':Sequelize[_0x0442('0xe')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x0442('0x1a'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x0442('0x4'),'type':_0x0442('0x4')},'variable':null},{'type':'textarea','config':{'placeholder':_0x0442('0x20')},'props':{'title':_0x0442('0x20'),'helpText':_0x0442('0x21')}}],'fromKey':0x0});},'get':function(){return this[_0x0442('0x1b')](_0x0442('0x22'))?JSON[_0x0442('0x1d')](this[_0x0442('0x1b')]('offlineForm')):{};},'set':function(_0xef0bfd){return this[_0x0442('0x1e')]('offlineForm',JSON[_0x0442('0x1f')](_0xef0bfd));}},'token':{'type':Sequelize[_0x0442('0x2')],'defaultValue':function(){return rs[_0x0442('0x23')]();}},'autoclose':{'type':Sequelize[_0x0442('0x9')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x0442('0x2')]},'forwardOffline':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x0442('0x2')]},'waitingTitle':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x24')},'waitingMessage':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x25')},'offlineMessageSubject':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x26')},'offlineMessageBody':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x27')},'enableUnmanagedNote':{'type':Sequelize[_0x0442('0x9')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x28')},'skipUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0x0442('0x29')},'sendUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0x0442('0xc')},'enableCustomerAttachment':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize[_0x0442('0x2')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x0442('0x2a');}},'notificationSound':{'type':Sequelize[_0x0442('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x0442('0x2')],'defaultValue':'website_alias'},'waitForTheAssignedAgent':{'type':Sequelize[_0x0442('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x2b')},'verticalAlignment':{'type':Sequelize[_0x0442('0x8')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':'alternate'},'defaultTitle':{'type':Sequelize[_0x0442('0x2')]},'customerAvatar':{'type':Sequelize[_0x0442('0xe')]},'showCustomerAvatar':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x0442('0x8')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x0442('0x2')],'allowNull':![],'defaultValue':_0x0442('0x2c'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize['STRING'],'defaultValue':'System'},'systemAvatar':{'type':Sequelize[_0x0442('0xe')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0442('0x8')],'comment':_0x0442('0x2d')},'mandatoryDisposition':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x21dfcb){if(!_0x21dfcb)this[_0x0442('0x1e')]('mandatoryDispositionPauseId',null);this[_0x0442('0x1e')](_0x0442('0x2e'),_0x21dfcb);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x0442('0x2')]},'vidaooTopic':{'type':Sequelize[_0x0442('0x2')],'allowNull':![],'defaultValue':_0x0442('0x2f')},'vidaooNote':{'type':Sequelize['STRING'],'defaultValue':function(){return _0x0442('0x30');}},'vidaooMetadata':{'type':Sequelize[_0x0442('0xe')],'defaultValue':null},'openNewInteraction':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index ae2ef36..0514c1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96bb=['customerIp','headers','cf-connecting-ip','x-forwarded-for','first','split','firstName','x-real-port','referer','browser','version','format','%s\x20%s','unknown','device','vendor','%s\x20%s\x20%s','type','threadId','ChatInteraction','externalUrl','ContactId','interaction','lastName','messageId','created','autoclose','push','*,*,*,*','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','files','no\x20available\x20attributes','createdAt','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','spread','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','ChatOfflineMessage','originalname','mimetype','server','attachments','basename','openNewInteraction','transaction','MailServerOut','forwardOffline','Smtp','service','host','port','secure','authentication','auth','pass','sendMail','\x22%s\x22\x20<%s>','email','forwardOfflineAddress','MailAccountId','subjectOffline','toPairsIn','offlineMessageSubject','NotifyMailAccount','offline-chat','Could\x20not\x20remove\x20attachment\x20file','addInteraction','ids','getInteractions','Owner','fullname','internal','Tag','Tags','color','tag','Command','getSnippet','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','ONLINE','OFFLINE','No\x20timezone','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','inspect','Interval','getProactiveActions','increment','chatLicenseExceeded','Intervals','all','server/files/chat/iframe.ejs','remote','x-real-ip','connection','remoteAddress','virtual','replace','verticalAlignment','textColor','addApplications','sequelize','ISOLATION_LEVELS','READ_COMMITTED','ChatApplication','bulkCreate','findAndCountAll','priority','getApplications','addProactiveActions','chatProactiveAction','omit','ChatProactiveAction','getFields','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Contact','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','userChatWebsite:remove','getAgents','bluebird','mustache','util','path','ejs','lodash','../../config/environment','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','register','jayson/promise','client','http','then','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','status','json','undefined','limit','count','offset','set','Content-Range','update','destroy','get','ChatWebsites','UserProfileResource','end','sendStatus','stack','name','send','index','Pause','map','key','query','keys','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','ChatWebsite','includeAll','include','findAll','rows','show','rawAttributes','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','mandatoryDispositionPause','describe','addDisposition','ChatWebsiteId','Disposition','findOne','removeDispositions','CannedAnswer','removeAnswers','file','filename','addAvatar','agentAvatar','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','join','root','server/files/images/logos/default_logo.svg','../../config/license/util','getLicense','custom','sitepic','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','isNil','existsSync','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','setUA','user-agent','getResult','chat','CmContact','Sequelize','ValidationError','difference','updatedAt','CompanyId','ListId','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','Contacts','Applications','List','account','applications','list','orderBy','asc','contact'];(function(_0x1170a9,_0x4d9a17){var _0x516985=function(_0x359349){while(--_0x359349){_0x1170a9['push'](_0x1170a9['shift']());}};_0x516985(++_0x4d9a17);}(_0x96bb,0x93));var _0xb96b=function(_0x568b73,_0x403347){_0x568b73=_0x568b73-0x0;var _0x2ff268=_0x96bb[_0x568b73];return _0x2ff268;};'use strict';var BPromise=require(_0xb96b('0x0'));var Mustache=require(_0xb96b('0x1'));var util=require(_0xb96b('0x2'));var path=require(_0xb96b('0x3'));var ejs=require(_0xb96b('0x4'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb96b('0x5'));var querystring=require('querystring');var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')('api');var config=require(_0xb96b('0x6'));var db=require('../../mysqldb')['db'];config[_0xb96b('0x7')]=_[_0xb96b('0x8')](config[_0xb96b('0x7')],{'host':_0xb96b('0x9'),'port':0x18eb});var socket=require(_0xb96b('0xa'))(new Redis(config[_0xb96b('0x7')]));require(_0xb96b('0xb'))[_0xb96b('0xc')](socket);var jayson=require(_0xb96b('0xd'));var client=jayson[_0xb96b('0xe')][_0xb96b('0xf')]({'port':0x232c});var client9002=jayson[_0xb96b('0xe')][_0xb96b('0xf')]({'port':0x232a});var client9003=jayson[_0xb96b('0xe')]['http']({'port':0x232b});var client9001=jayson['client'][_0xb96b('0xf')]({'port':0x2329});function respondWithRpcPromise(_0x451a9f,_0x39bbd7,_0x46ef4f,_0x2b213d){return new BPromise(function(_0x3aab83,_0x390f16){var _0x34bdd9=_0x2b213d||client;return _0x34bdd9['request'](_0x451a9f,_0x46ef4f)[_0xb96b('0x10')](function(_0x8ca70e){logger['info'](_0xb96b('0x11'),_0x39bbd7,_0xb96b('0x12'));logger[_0xb96b('0x13')](_0xb96b('0x14'),_0x39bbd7,_0xb96b('0x12'),JSON[_0xb96b('0x15')](_0x8ca70e));if(_0x8ca70e[_0xb96b('0x16')]){if(_0x8ca70e['error']['code']===0x1f4){logger[_0xb96b('0x16')](_0xb96b('0x11'),_0x39bbd7,_0x8ca70e[_0xb96b('0x16')][_0xb96b('0x17')]);return _0x390f16(_0x8ca70e[_0xb96b('0x16')][_0xb96b('0x17')]);}logger[_0xb96b('0x16')](_0xb96b('0x11'),_0x39bbd7,_0x8ca70e[_0xb96b('0x16')][_0xb96b('0x17')]);return _0x3aab83(_0x8ca70e['error']['message']);}else{logger[_0xb96b('0x18')](_0xb96b('0x11'),_0x39bbd7,_0xb96b('0x12'));_0x3aab83(_0x8ca70e[_0xb96b('0x19')][_0xb96b('0x17')]);}})['catch'](function(_0x1f8736){logger[_0xb96b('0x16')]('ChatWebsite,\x20%s,\x20%s',_0x39bbd7,_0x1f8736);_0x390f16(_0x1f8736);});});}function respondWithStatusCode(_0x3f65e3,_0x3e7827){_0x3e7827=_0x3e7827||0xcc;return function(_0xdaeb03){if(_0xdaeb03){return _0x3f65e3['sendStatus'](_0x3e7827);}return _0x3f65e3[_0xb96b('0x1a')](_0x3e7827)['end']();};}function respondWithResult(_0x2bedb8,_0x15747f){_0x15747f=_0x15747f||0xc8;return function(_0x580b4f){if(_0x580b4f){return _0x2bedb8['status'](_0x15747f)[_0xb96b('0x1b')](_0x580b4f);}};}function respondWithFilteredResult(_0x22af0a,_0x9a0b70){return function(_0x321d95){if(_0x321d95){var _0x1c6f94=typeof _0x9a0b70['offset']===_0xb96b('0x1c')&&typeof _0x9a0b70[_0xb96b('0x1d')]===_0xb96b('0x1c');var _0x47431b=_0x321d95[_0xb96b('0x1e')];var _0x42567c=_0x1c6f94?0x0:_0x9a0b70[_0xb96b('0x1f')];var _0x340344=_0x1c6f94?_0x321d95[_0xb96b('0x1e')]:_0x9a0b70[_0xb96b('0x1f')]+_0x9a0b70['limit'];var _0x572158;if(_0x340344>=_0x47431b){_0x340344=_0x47431b;_0x572158=0xc8;}else{_0x572158=0xce;}_0x22af0a['status'](_0x572158);return _0x22af0a[_0xb96b('0x20')](_0xb96b('0x21'),_0x42567c+'-'+_0x340344+'/'+_0x47431b)['json'](_0x321d95);}return null;};}function saveUpdates(_0x4a455f){return function(_0x5bb419){if(_0x5bb419){return _0x5bb419[_0xb96b('0x22')](_0x4a455f)[_0xb96b('0x10')](function(_0x44fa39){return _0x44fa39;});}return null;};}function removeEntity(_0x2ad318){return function(_0x3baed1){if(_0x3baed1){return _0x3baed1[_0xb96b('0x23')]()[_0xb96b('0x10')](function(){var _0x39615f=_0x3baed1[_0xb96b('0x24')]({'plain':!![]});var _0x4a78ee=_0xb96b('0x25');return db[_0xb96b('0x26')][_0xb96b('0x23')]({'where':{'type':_0x4a78ee,'resourceId':_0x39615f['id']}})['then'](function(){return _0x3baed1;});})[_0xb96b('0x10')](function(){_0x2ad318[_0xb96b('0x1a')](0xcc)[_0xb96b('0x27')]();});}};}function handleEntityNotFound(_0x58d800){return function(_0x19b463){if(!_0x19b463){_0x58d800[_0xb96b('0x28')](0x194);}return _0x19b463;};}function handleError(_0x4903ba,_0xd10e09){_0xd10e09=_0xd10e09||0x1f4;return function(_0xae0dc5){logger[_0xb96b('0x16')](_0xae0dc5[_0xb96b('0x29')]);if(_0xae0dc5['name']){delete _0xae0dc5[_0xb96b('0x2a')];}_0x4903ba[_0xb96b('0x1a')](_0xd10e09)[_0xb96b('0x2b')](_0xae0dc5);};}exports[_0xb96b('0x2c')]=function(_0x156e21,_0x3b5878){var _0x35eba3={'include':[{'model':db[_0xb96b('0x2d')],'as':'mandatoryDispositionPause'}]},_0x262109={},_0x3f3b35={'count':0x0,'rows':[]};var _0x23daf7=_[_0xb96b('0x2e')](db['ChatWebsite']['rawAttributes'],function(_0x4509d5){return{'name':_0x4509d5['fieldName'],'type':_0x4509d5['type'][_0xb96b('0x2f')]};});_0x262109['model']=_[_0xb96b('0x2e')](_0x23daf7,'name');_0x262109[_0xb96b('0x30')]=_[_0xb96b('0x31')](_0x156e21['query']);_0x262109['filters']=_[_0xb96b('0x32')](_0x262109['model'],_0x262109[_0xb96b('0x30')]);_0x35eba3[_0xb96b('0x33')]=_[_0xb96b('0x32')](_0x262109[_0xb96b('0x34')],qs[_0xb96b('0x35')](_0x156e21['query'][_0xb96b('0x35')]));_0x35eba3[_0xb96b('0x33')]=_0x35eba3[_0xb96b('0x33')][_0xb96b('0x36')]?_0x35eba3[_0xb96b('0x33')]:_0x262109[_0xb96b('0x34')];if(!_0x156e21[_0xb96b('0x30')][_0xb96b('0x37')](_0xb96b('0x38'))){_0x35eba3[_0xb96b('0x1d')]=qs['limit'](_0x156e21[_0xb96b('0x30')]['limit']);_0x35eba3[_0xb96b('0x1f')]=qs[_0xb96b('0x1f')](_0x156e21[_0xb96b('0x30')]['offset']);}_0x35eba3[_0xb96b('0x39')]=qs[_0xb96b('0x3a')](_0x156e21[_0xb96b('0x30')][_0xb96b('0x3a')]);_0x35eba3[_0xb96b('0x3b')]=qs[_0xb96b('0x3c')](_[_0xb96b('0x3d')](_0x156e21[_0xb96b('0x30')],_0x262109[_0xb96b('0x3c')]),_0x23daf7);if(_0x156e21[_0xb96b('0x30')][_0xb96b('0x3e')]){_0x35eba3[_0xb96b('0x3b')]=_[_0xb96b('0x3f')](_0x35eba3['where'],{'$or':_[_0xb96b('0x2e')](_0x23daf7,function(_0x4798ac){if(_0x4798ac['type']!==_0xb96b('0x40')){var _0x111157={};_0x111157[_0x4798ac[_0xb96b('0x2a')]]={'$like':'%'+_0x156e21[_0xb96b('0x30')][_0xb96b('0x3e')]+'%'};return _0x111157;}})});}_0x35eba3=_[_0xb96b('0x3f')]({},_0x35eba3,_0x156e21[_0xb96b('0x41')]);var _0x535aa1={'where':_0x35eba3[_0xb96b('0x3b')]};return db[_0xb96b('0x42')][_0xb96b('0x1e')](_0x535aa1)['then'](function(_0x8d30ce){_0x3f3b35[_0xb96b('0x1e')]=_0x8d30ce;if(_0x156e21[_0xb96b('0x30')][_0xb96b('0x43')]){_0x35eba3[_0xb96b('0x44')]=[{'all':!![]}];}return db['ChatWebsite'][_0xb96b('0x45')](_0x35eba3);})[_0xb96b('0x10')](function(_0x469359){_0x3f3b35[_0xb96b('0x46')]=_0x469359;return _0x3f3b35;})[_0xb96b('0x10')](respondWithFilteredResult(_0x3b5878,_0x35eba3))['catch'](handleError(_0x3b5878,null));};exports[_0xb96b('0x47')]=function(_0x590c52,_0x200e8c){var _0x12c784={'raw':![],'where':{'id':_0x590c52['params']['id']},'include':[{'model':db[_0xb96b('0x2d')],'as':'mandatoryDispositionPause'}]},_0xb28f84={};_0xb28f84[_0xb96b('0x34')]=_[_0xb96b('0x31')](db['ChatWebsite'][_0xb96b('0x48')]);_0xb28f84[_0xb96b('0x30')]=_[_0xb96b('0x31')](_0x590c52['query']);_0xb28f84[_0xb96b('0x3c')]=_[_0xb96b('0x32')](_0xb28f84['model'],_0xb28f84[_0xb96b('0x30')]);_0x12c784[_0xb96b('0x33')]=_[_0xb96b('0x32')](_0xb28f84[_0xb96b('0x34')],qs['fields'](_0x590c52[_0xb96b('0x30')][_0xb96b('0x35')]));_0x12c784[_0xb96b('0x33')]=_0x12c784[_0xb96b('0x33')][_0xb96b('0x36')]?_0x12c784[_0xb96b('0x33')]:_0xb28f84['model'];if(_0x590c52[_0xb96b('0x30')][_0xb96b('0x43')]){_0x12c784[_0xb96b('0x44')]=[{'all':!![]}];}_0x12c784=_[_0xb96b('0x3f')]({},_0x12c784,_0x590c52['options']);return db['ChatWebsite'][_0xb96b('0x49')](_0x12c784)[_0xb96b('0x10')](handleEntityNotFound(_0x200e8c,null))[_0xb96b('0x10')](respondWithResult(_0x200e8c,null))[_0xb96b('0x4a')](handleError(_0x200e8c,null));};exports[_0xb96b('0x4b')]=function(_0x50792b,_0x5c00f7){return db[_0xb96b('0x42')][_0xb96b('0x4b')](_0x50792b[_0xb96b('0x4c')],{})[_0xb96b('0x10')](function(_0x7e3639){var _0x26b1d3=_0x50792b[_0xb96b('0x4d')]['get']({'plain':!![]});if(!_0x26b1d3)throw new Error(_0xb96b('0x4e'));if(_0x26b1d3[_0xb96b('0x4f')]===_0xb96b('0x4d')){var _0x8f551b=_0x7e3639['get']({'plain':!![]});var _0x4f9033=_0xb96b('0x25');return db[_0xb96b('0x50')][_0xb96b('0x49')]({'where':{'name':_0x4f9033,'userProfileId':_0x26b1d3['userProfileId']},'raw':!![]})[_0xb96b('0x10')](function(_0x3fb6e8){if(_0x3fb6e8&&_0x3fb6e8[_0xb96b('0x51')]===0x0){return db[_0xb96b('0x26')][_0xb96b('0x4b')]({'name':_0x8f551b[_0xb96b('0x2a')],'resourceId':_0x8f551b['id'],'type':_0x3fb6e8[_0xb96b('0x2a')],'sectionId':_0x3fb6e8['id']},{})['then'](function(){return _0x7e3639;});}else{return _0x7e3639;}})[_0xb96b('0x4a')](function(_0x253f94){logger['error'](_0xb96b('0x52'),_0x253f94);throw _0x253f94;});}return _0x7e3639;})['then'](respondWithResult(_0x5c00f7,0xc9))[_0xb96b('0x4a')](handleError(_0x5c00f7,null));};exports[_0xb96b('0x22')]=function(_0x67009b,_0x274660){if(_0x67009b[_0xb96b('0x4c')]['id']){delete _0x67009b[_0xb96b('0x4c')]['id'];}return db[_0xb96b('0x42')][_0xb96b('0x49')]({'where':{'id':_0x67009b[_0xb96b('0x53')]['id']},'include':[{'model':db[_0xb96b('0x2d')],'as':_0xb96b('0x54')}]})['then'](handleEntityNotFound(_0x274660,null))[_0xb96b('0x10')](saveUpdates(_0x67009b[_0xb96b('0x4c')],null))['then'](respondWithResult(_0x274660,null))[_0xb96b('0x4a')](handleError(_0x274660,null));};exports[_0xb96b('0x23')]=function(_0x22b349,_0x13d1f6){return db[_0xb96b('0x42')][_0xb96b('0x49')]({'where':{'id':_0x22b349['params']['id']}})[_0xb96b('0x10')](handleEntityNotFound(_0x13d1f6,null))[_0xb96b('0x10')](removeEntity(_0x13d1f6,null))['catch'](handleError(_0x13d1f6,null));};exports[_0xb96b('0x55')]=function(_0xdb7f8f,_0x22d69d){return db[_0xb96b('0x42')][_0xb96b('0x55')]()['then'](respondWithResult(_0x22d69d,null))[_0xb96b('0x4a')](handleError(_0x22d69d,null));};exports[_0xb96b('0x56')]=function(_0x19be08,_0x577d22){if(_0x19be08[_0xb96b('0x4c')]['id']){delete _0x19be08['body']['id'];}return db[_0xb96b('0x42')]['find']({'where':{'id':_0x19be08[_0xb96b('0x53')]['id']}})[_0xb96b('0x10')](handleEntityNotFound(_0x577d22,null))[_0xb96b('0x10')](function(_0x506b6f){if(_0x506b6f){_0x19be08['body'][_0xb96b('0x57')]=_0x506b6f['id'];return db[_0xb96b('0x58')][_0xb96b('0x4b')](_0x19be08[_0xb96b('0x4c')]);}})[_0xb96b('0x10')](respondWithResult(_0x577d22,null))[_0xb96b('0x4a')](handleError(_0x577d22,null));};exports['getDispositions']=function(_0x3040e7,_0x575196){var _0x45d3ea={'raw':![],'where':{}};var _0x2d03bb={};var _0x3aab19={'count':0x0,'rows':[]};return db['ChatWebsite'][_0xb96b('0x59')]({'where':{'id':_0x3040e7['params']['id']}})[_0xb96b('0x10')](handleEntityNotFound(_0x575196,null))[_0xb96b('0x10')](function(_0x5f5ced){if(_0x5f5ced){_0x2d03bb['model']=_[_0xb96b('0x31')](db['Disposition']['rawAttributes']);_0x2d03bb['query']=_[_0xb96b('0x31')](_0x3040e7[_0xb96b('0x30')]);_0x2d03bb[_0xb96b('0x3c')]=_[_0xb96b('0x32')](_0x2d03bb['model'],_0x2d03bb[_0xb96b('0x30')]);_0x45d3ea[_0xb96b('0x33')]=_[_0xb96b('0x32')](_0x2d03bb['model'],qs[_0xb96b('0x35')](_0x3040e7[_0xb96b('0x30')][_0xb96b('0x35')]));_0x45d3ea['attributes']=_0x45d3ea[_0xb96b('0x33')][_0xb96b('0x36')]?_0x45d3ea['attributes']:_0x2d03bb[_0xb96b('0x34')];if(!_0x3040e7[_0xb96b('0x30')][_0xb96b('0x37')](_0xb96b('0x38'))){_0x45d3ea[_0xb96b('0x1d')]=qs[_0xb96b('0x1d')](_0x3040e7[_0xb96b('0x30')][_0xb96b('0x1d')]);_0x45d3ea[_0xb96b('0x1f')]=qs[_0xb96b('0x1f')](_0x3040e7[_0xb96b('0x30')]['offset']);}_0x45d3ea['order']=qs[_0xb96b('0x3a')](_0x3040e7[_0xb96b('0x30')][_0xb96b('0x3a')]);_0x45d3ea[_0xb96b('0x3b')]=qs[_0xb96b('0x3c')](_[_0xb96b('0x3d')](_0x3040e7[_0xb96b('0x30')],_0x2d03bb['filters']));_0x45d3ea['where'][_0xb96b('0x57')]=_0x5f5ced['id'];if(_0x3040e7[_0xb96b('0x30')][_0xb96b('0x3e')]){_0x45d3ea['where']=_['merge'](_0x45d3ea[_0xb96b('0x3b')],{'$or':_['map'](_0x45d3ea[_0xb96b('0x33')],function(_0x1ba74a){var _0x2b9604={};_0x2b9604[_0x1ba74a]={'$like':'%'+_0x3040e7[_0xb96b('0x30')]['filter']+'%'};return _0x2b9604;})});}_0x45d3ea=_['merge']({},_0x45d3ea,_0x3040e7[_0xb96b('0x41')]);return db[_0xb96b('0x58')][_0xb96b('0x1e')]({'where':_0x45d3ea['where']})[_0xb96b('0x10')](function(_0xc0919){_0x3aab19[_0xb96b('0x1e')]=_0xc0919;if(_0x3040e7[_0xb96b('0x30')]['includeAll']){_0x45d3ea['include']=[{'all':!![]}];}return db[_0xb96b('0x58')][_0xb96b('0x45')](_0x45d3ea);})[_0xb96b('0x10')](function(_0x327ef5){_0x3aab19['rows']=_0x327ef5;return _0x3aab19;});}})[_0xb96b('0x10')](respondWithFilteredResult(_0x575196,_0x45d3ea))[_0xb96b('0x4a')](handleError(_0x575196,null));};exports[_0xb96b('0x5a')]=function(_0x26cc32,_0x5b53ed){return db['ChatWebsite'][_0xb96b('0x49')]({'where':{'id':_0x26cc32['params']['id']}})['then'](handleEntityNotFound(_0x5b53ed,null))[_0xb96b('0x10')](function(_0x26a0d4){if(_0x26a0d4){return _0x26a0d4[_0xb96b('0x5a')](_0x26cc32[_0xb96b('0x30')]['ids']);}})[_0xb96b('0x10')](respondWithStatusCode(_0x5b53ed,null))[_0xb96b('0x4a')](handleError(_0x5b53ed,null));};exports['addAnswer']=function(_0x31be2c,_0x9e27fd){if(_0x31be2c[_0xb96b('0x4c')]['id']){delete _0x31be2c[_0xb96b('0x4c')]['id'];}return db[_0xb96b('0x42')][_0xb96b('0x49')]({'where':{'id':_0x31be2c['params']['id']}})[_0xb96b('0x10')](handleEntityNotFound(_0x9e27fd,null))[_0xb96b('0x10')](function(_0x1e6721){if(_0x1e6721){_0x31be2c[_0xb96b('0x4c')][_0xb96b('0x57')]=_0x1e6721['id'];return db['CannedAnswer'][_0xb96b('0x4b')](_0x31be2c[_0xb96b('0x4c')]);}})['then'](respondWithResult(_0x9e27fd,null))[_0xb96b('0x4a')](handleError(_0x9e27fd,null));};exports['getAnswers']=function(_0x303f8c,_0x1760ac){var _0x87ba0f={'raw':![],'where':{}};var _0x4bd78e={};var _0x2b367e={'count':0x0,'rows':[]};return db['ChatWebsite'][_0xb96b('0x59')]({'where':{'id':_0x303f8c['params']['id']}})['then'](handleEntityNotFound(_0x1760ac,null))['then'](function(_0x41b3e7){if(_0x41b3e7){_0x4bd78e[_0xb96b('0x34')]=_[_0xb96b('0x31')](db[_0xb96b('0x5b')][_0xb96b('0x48')]);_0x4bd78e[_0xb96b('0x30')]=_[_0xb96b('0x31')](_0x303f8c[_0xb96b('0x30')]);_0x4bd78e[_0xb96b('0x3c')]=_[_0xb96b('0x32')](_0x4bd78e[_0xb96b('0x34')],_0x4bd78e['query']);_0x87ba0f['attributes']=_[_0xb96b('0x32')](_0x4bd78e[_0xb96b('0x34')],qs[_0xb96b('0x35')](_0x303f8c['query'][_0xb96b('0x35')]));_0x87ba0f['attributes']=_0x87ba0f[_0xb96b('0x33')]['length']?_0x87ba0f[_0xb96b('0x33')]:_0x4bd78e[_0xb96b('0x34')];if(!_0x303f8c['query']['hasOwnProperty'](_0xb96b('0x38'))){_0x87ba0f[_0xb96b('0x1d')]=qs[_0xb96b('0x1d')](_0x303f8c[_0xb96b('0x30')][_0xb96b('0x1d')]);_0x87ba0f['offset']=qs[_0xb96b('0x1f')](_0x303f8c[_0xb96b('0x30')][_0xb96b('0x1f')]);}_0x87ba0f[_0xb96b('0x39')]=qs[_0xb96b('0x3a')](_0x303f8c[_0xb96b('0x30')][_0xb96b('0x3a')]);_0x87ba0f[_0xb96b('0x3b')]=qs[_0xb96b('0x3c')](_[_0xb96b('0x3d')](_0x303f8c[_0xb96b('0x30')],_0x4bd78e[_0xb96b('0x3c')]));_0x87ba0f['where']['ChatWebsiteId']=_0x41b3e7['id'];if(_0x303f8c[_0xb96b('0x30')][_0xb96b('0x3e')]){_0x87ba0f[_0xb96b('0x3b')]=_[_0xb96b('0x3f')](_0x87ba0f[_0xb96b('0x3b')],{'$or':_['map'](_0x87ba0f['attributes'],function(_0x240a0c){var _0x13d19a={};_0x13d19a[_0x240a0c]={'$like':'%'+_0x303f8c['query'][_0xb96b('0x3e')]+'%'};return _0x13d19a;})});}_0x87ba0f=_[_0xb96b('0x3f')]({},_0x87ba0f,_0x303f8c[_0xb96b('0x41')]);return db[_0xb96b('0x5b')][_0xb96b('0x1e')]({'where':_0x87ba0f[_0xb96b('0x3b')]})[_0xb96b('0x10')](function(_0x385c54){_0x2b367e[_0xb96b('0x1e')]=_0x385c54;if(_0x303f8c[_0xb96b('0x30')][_0xb96b('0x43')]){_0x87ba0f['include']=[{'all':!![]}];}return db[_0xb96b('0x5b')][_0xb96b('0x45')](_0x87ba0f);})['then'](function(_0xd87e06){_0x2b367e[_0xb96b('0x46')]=_0xd87e06;return _0x2b367e;});}})[_0xb96b('0x10')](respondWithFilteredResult(_0x1760ac,_0x87ba0f))[_0xb96b('0x4a')](handleError(_0x1760ac,null));};exports[_0xb96b('0x5c')]=function(_0x5d5c9d,_0xfad5a){return db[_0xb96b('0x42')]['find']({'where':{'id':_0x5d5c9d['params']['id']}})[_0xb96b('0x10')](handleEntityNotFound(_0xfad5a,null))[_0xb96b('0x10')](function(_0x326dbc){if(_0x326dbc){return _0x326dbc[_0xb96b('0x5c')](_0x5d5c9d['query']['ids']);}})['then'](respondWithStatusCode(_0xfad5a,null))[_0xb96b('0x4a')](handleError(_0xfad5a,null));};exports['addLogo']=function(_0x5bdf18,_0x2c24db){_0x5bdf18[_0xb96b('0x4c')]['sitepic']=_0x5bdf18[_0xb96b('0x5d')][_0xb96b('0x5e')];return db[_0xb96b('0x42')]['find']({'where':{'id':_0x5bdf18[_0xb96b('0x53')]['id']}})[_0xb96b('0x10')](handleEntityNotFound(_0x2c24db,null))['then'](saveUpdates(_0x5bdf18['body'],null))[_0xb96b('0x10')](respondWithResult(_0x2c24db,null))['catch'](handleError(_0x2c24db,null));};exports[_0xb96b('0x5f')]=function(_0x5ee943,_0x564f63){_0x5ee943[_0xb96b('0x4c')][_0xb96b('0x60')]=_0x5ee943[_0xb96b('0x5d')][_0xb96b('0x5e')];return db['ChatWebsite'][_0xb96b('0x49')]({'where':{'id':_0x5ee943[_0xb96b('0x53')]['id']}})[_0xb96b('0x10')](handleEntityNotFound(_0x564f63,null))[_0xb96b('0x10')](saveUpdates(_0x5ee943[_0xb96b('0x4c')],null))[_0xb96b('0x10')](respondWithResult(_0x564f63,null))[_0xb96b('0x4a')](handleError(_0x564f63,null));};exports[_0xb96b('0x61')]=function(_0x164d83,_0x3f864f){_0x164d83[_0xb96b('0x4c')][_0xb96b('0x62')]=_0x164d83[_0xb96b('0x5d')]['filename'];return db[_0xb96b('0x42')][_0xb96b('0x49')]({'where':{'id':_0x164d83[_0xb96b('0x53')]['id']}})[_0xb96b('0x10')](handleEntityNotFound(_0x3f864f,null))[_0xb96b('0x10')](saveUpdates(_0x164d83[_0xb96b('0x4c')],null))['then'](respondWithResult(_0x3f864f,null))[_0xb96b('0x4a')](handleError(_0x3f864f,null));};exports[_0xb96b('0x63')]=function(_0x40a25e,_0x1ddcdb){_0x40a25e['body'][_0xb96b('0x64')]=_0x40a25e[_0xb96b('0x5d')][_0xb96b('0x5e')];return db[_0xb96b('0x42')][_0xb96b('0x49')]({'where':{'id':_0x40a25e['params']['id']}})[_0xb96b('0x10')](handleEntityNotFound(_0x1ddcdb,null))[_0xb96b('0x10')](saveUpdates(_0x40a25e[_0xb96b('0x4c')],null))[_0xb96b('0x10')](respondWithResult(_0x1ddcdb,null))[_0xb96b('0x4a')](handleError(_0x1ddcdb,null));};exports['getLogo']=function(_0x541658,_0x41eb2a){var _0x27418e=path[_0xb96b('0x65')](config[_0xb96b('0x66')],_0xb96b('0x67'));var _0x1b3fe3={'where':{'id':_0x541658[_0xb96b('0x53')]['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x58bba6=![];return require(_0xb96b('0x68'))[_0xb96b('0x69')]()[_0xb96b('0x10')](function(_0x4b954e){if(_0x4b954e){_0x58bba6=_0x4b954e[_0xb96b('0x6a')];}})[_0xb96b('0x10')](function(){return db[_0xb96b('0x42')][_0xb96b('0x49')](_0x1b3fe3);})['then'](handleEntityNotFound(_0x41eb2a,null))[_0xb96b('0x10')](function(_0x59a69a){if(_0x59a69a){if(!_['isNil'](_0x59a69a[_0xb96b('0x6b')])){if(fs['existsSync'](path[_0xb96b('0x65')](config['root'],_0xb96b('0x6c'),_0x59a69a['sitepic']))&&_0x58bba6){_0x27418e=path[_0xb96b('0x65')](config[_0xb96b('0x66')],_0xb96b('0x6c'),_0x59a69a[_0xb96b('0x6b')]);}}return _0x41eb2a[_0xb96b('0x6d')](_0x27418e);}})[_0xb96b('0x4a')](handleError(_0x41eb2a,null));};exports[_0xb96b('0x6e')]=function(_0x4acb7f,_0x503e89){var _0x440bc1=path[_0xb96b('0x65')](config[_0xb96b('0x66')],_0xb96b('0x6f'));var _0x2e233d={'where':{'id':_0x4acb7f[_0xb96b('0x53')]['id']},'attributes':['id','agentAvatar'],'raw':!![]};return db[_0xb96b('0x42')][_0xb96b('0x49')](_0x2e233d)[_0xb96b('0x10')](handleEntityNotFound(_0x503e89,null))[_0xb96b('0x10')](function(_0x2b7e01){if(_0x2b7e01){if(!_[_0xb96b('0x70')](_0x2b7e01[_0xb96b('0x60')])){if(fs[_0xb96b('0x71')](path['join'](config[_0xb96b('0x66')],_0xb96b('0x72'),_0x2b7e01[_0xb96b('0x60')]))){_0x440bc1=path[_0xb96b('0x65')](config[_0xb96b('0x66')],_0xb96b('0x72'),_0x2b7e01[_0xb96b('0x60')]);}}return _0x503e89[_0xb96b('0x6d')](_0x440bc1);}})['catch'](handleError(_0x503e89,null));};exports[_0xb96b('0x73')]=function(_0xc4b445,_0x4d016c){var _0x5df5f4=path[_0xb96b('0x65')](config[_0xb96b('0x66')],_0xb96b('0x74'));var _0x5f04ab={'where':{'id':_0xc4b445[_0xb96b('0x53')]['id']},'attributes':['id',_0xb96b('0x62'),_0xb96b('0x75')],'raw':!![]};return db[_0xb96b('0x42')][_0xb96b('0x49')](_0x5f04ab)[_0xb96b('0x10')](handleEntityNotFound(_0x4d016c,null))['then'](function(_0x4e7852){if(_0x4e7852){if(!_[_0xb96b('0x70')](_0x4e7852[_0xb96b('0x62')])){if(fs[_0xb96b('0x71')](path[_0xb96b('0x65')](config[_0xb96b('0x66')],_0xb96b('0x72'),_0x4e7852[_0xb96b('0x62')]))&&_0x4e7852[_0xb96b('0x75')]){_0x5df5f4=path['join'](config[_0xb96b('0x66')],_0xb96b('0x72'),_0x4e7852[_0xb96b('0x62')]);}}return _0x4d016c['download'](_0x5df5f4);}})[_0xb96b('0x4a')](handleError(_0x4d016c,null));};exports[_0xb96b('0x76')]=function(_0x4d93e2,_0x4d7e36){var _0x374a91=path[_0xb96b('0x65')](config[_0xb96b('0x66')],_0xb96b('0x77'));var _0x401edb={'where':{'id':_0x4d93e2['params']['id']},'attributes':['id',_0xb96b('0x64')],'raw':!![]};return db[_0xb96b('0x42')][_0xb96b('0x49')](_0x401edb)[_0xb96b('0x10')](handleEntityNotFound(_0x4d7e36,null))['then'](function(_0x5615ec){if(_0x5615ec){if(!_[_0xb96b('0x70')](_0x5615ec[_0xb96b('0x64')])){if(fs[_0xb96b('0x71')](path[_0xb96b('0x65')](config[_0xb96b('0x66')],_0xb96b('0x72'),_0x5615ec['systemAvatar']))){_0x374a91=path[_0xb96b('0x65')](config[_0xb96b('0x66')],_0xb96b('0x72'),_0x5615ec['systemAvatar']);}}return _0x4d7e36[_0xb96b('0x6d')](_0x374a91);}})['catch'](handleError(_0x4d7e36,null));};exports[_0xb96b('0x78')]=function(_0x18d2c0,_0x120fe9){var _0x238a4f=require('user-agent-parser');var _0x59224b=new _0x238a4f();var _0x1ee479=_0x59224b[_0xb96b('0x79')](_0x18d2c0['headers'][_0xb96b('0x7a')])[_0xb96b('0x7b')]();var _0x3c0875={'body':_0x18d2c0[_0xb96b('0x4c')],'channel':_0xb96b('0x7c')};var _0x3e7cf7=[];var _0x1193c1=[];var _0x1b921a={};var _0x3ed93b=![];return db[_0xb96b('0x7d')][_0xb96b('0x55')]()[_0xb96b('0x10')](function(_0xc3bf40){if(!_0xc3bf40){throw new db[(_0xb96b('0x7e'))][(_0xb96b('0x7f'))]('no\x20available\x20attributes');}_0x3e7cf7=_[_0xb96b('0x80')](_[_0xb96b('0x31')](_0xc3bf40),['createdAt',_0xb96b('0x81')]);_0x1193c1=_[_0xb96b('0x80')](_[_0xb96b('0x31')](_0xc3bf40),['createdAt',_0xb96b('0x81'),_0xb96b('0x82'),_0xb96b('0x83')]);if(_0x18d2c0[_0xb96b('0x4c')]['id']){delete _0x18d2c0[_0xb96b('0x4c')]['id'];}if(_[_0xb96b('0x70')](_0x18d2c0[_0xb96b('0x4c')]['from'])){throw new db[(_0xb96b('0x7e'))][(_0xb96b('0x7f'))](_0xb96b('0x84'));}if(_[_0xb96b('0x70')](_0x18d2c0[_0xb96b('0x4c')][_0xb96b('0x4c')])||_0x18d2c0[_0xb96b('0x4c')][_0xb96b('0x4c')]===''){throw new db[(_0xb96b('0x7e'))][(_0xb96b('0x7f'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x18d2c0[_0xb96b('0x4c')][_0xb96b('0x85')])){throw new db[(_0xb96b('0x7e'))]['ValidationError'](_0xb96b('0x86')+_0x1193c1);}if(!_[_0xb96b('0x87')](_0x1193c1,_0x18d2c0[_0xb96b('0x4c')][_0xb96b('0x85')])){throw new db[(_0xb96b('0x7e'))][(_0xb96b('0x7f'))](_0xb96b('0x88')+_0x1193c1);}_0x1b921a[_0x18d2c0['body']['mapKey']]=_0x18d2c0['body'][_0xb96b('0x89')];})[_0xb96b('0x10')](function(){return db[_0xb96b('0x42')][_0xb96b('0x49')]({'where':{'id':_0x18d2c0[_0xb96b('0x53')]['id']},'include':[{'model':db[_0xb96b('0x8a')],'as':'List','include':[{'model':db[_0xb96b('0x7d')],'as':_0xb96b('0x8b'),'where':_0x1b921a,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db['ChatApplication'],'as':_0xb96b('0x8c')}]});})['then'](handleEntityNotFound(_0x120fe9,null))[_0xb96b('0x10')](function(_0x5063ca){if(_0x5063ca&&_0x5063ca[_0xb96b('0x8d')]){_0x3c0875[_0xb96b('0x8e')]=_0x5063ca;_0x3c0875[_0xb96b('0x8f')]=_0x5063ca[_0xb96b('0x8c')];_0x3c0875[_0xb96b('0x90')]=_0x5063ca['List'];_0x3c0875[_0xb96b('0x8f')]=_[_0xb96b('0x91')](_0x3c0875[_0xb96b('0x8f')],['priority'],[_0xb96b('0x92')]);if(_0x3c0875['account'][_0xb96b('0x8c')]){delete _0x3c0875['account'][_0xb96b('0x8c')];}if(_0x3c0875[_0xb96b('0x8e')][_0xb96b('0x8d')]&&_0x3c0875['account']['List'][_0xb96b('0x8b')]['length']){return _0x3c0875[_0xb96b('0x8e')][_0xb96b('0x8d')]['Contacts'][0x0];}var _0x3d27a0=_[_0xb96b('0x8')](_0x18d2c0[_0xb96b('0x4c')],{'firstName':_0x18d2c0[_0xb96b('0x4c')][_0xb96b('0x89')],'ListId':_0x5063ca[_0xb96b('0x83')]});_0x3d27a0[_0x18d2c0[_0xb96b('0x4c')][_0xb96b('0x85')]]=_0x18d2c0['body'][_0xb96b('0x89')];return db[_0xb96b('0x7d')][_0xb96b('0x4b')](_0x3d27a0,{'fields':_0x3e7cf7,'raw':!![]});}})[_0xb96b('0x10')](handleEntityNotFound(_0x120fe9,null))[_0xb96b('0x10')](function(_0xc459b4){_0x3c0875[_0xb96b('0x93')]=_0xc459b4;var _0x41db7e=_0x18d2c0[_0xb96b('0x4c')][_0xb96b('0x94')];if(_0x18d2c0[_0xb96b('0x95')][_0xb96b('0x96')]){_0x41db7e=_0x18d2c0['headers'][_0xb96b('0x96')];}else if(_0x18d2c0['headers'][_0xb96b('0x97')]){_0x41db7e=_[_0xb96b('0x98')](_0x18d2c0['headers'][_0xb96b('0x97')][_0xb96b('0x99')](','));}if(_0xc459b4){var _0x1c95ee={'ContactId':_0xc459b4['id'],'ChatWebsiteId':_0x18d2c0[_0xb96b('0x53')]['id'],'from':(_0xc459b4[_0xb96b('0x9a')]||'')+'\x20'+(_0xc459b4['lastName']||''),'customerIp':_0x41db7e,'customerPort':_0x18d2c0[_0xb96b('0x95')][_0xb96b('0x9b')]?_0x18d2c0[_0xb96b('0x95')][_0xb96b('0x9b')]:null,'referer':_0x18d2c0[_0xb96b('0x4c')][_0xb96b('0x9c')],'browserName':_0x1ee479['browser'][_0xb96b('0x2a')]&&_0x1ee479[_0xb96b('0x9d')][_0xb96b('0x9e')]?util[_0xb96b('0x9f')](_0xb96b('0xa0'),_0x1ee479[_0xb96b('0x9d')][_0xb96b('0x2a')],_0x1ee479[_0xb96b('0x9d')]['version']):_0xb96b('0xa1'),'browserVersion':_0x1ee479[_0xb96b('0x9d')][_0xb96b('0x9e')]||'unknown','osName':util[_0xb96b('0x9f')](_0xb96b('0xa0'),_0x1ee479['os'][_0xb96b('0x2a')],_0x1ee479['os'][_0xb96b('0x9e')]),'osVersion':_0x1ee479['os']['version'],'deviceModel':_0x1ee479[_0xb96b('0xa2')][_0xb96b('0x34')]&&_0x1ee479[_0xb96b('0xa2')][_0xb96b('0xa3')]?util['format'](_0xb96b('0xa4'),_0x1ee479['device'][_0xb96b('0x34')],_0x1ee479[_0xb96b('0xa2')][_0xb96b('0xa3')],_0x1ee479[_0xb96b('0xa2')][_0xb96b('0xa5')]):null,'deviceVendor':_0x1ee479['device'][_0xb96b('0xa3')],'deviceType':_0x1ee479['device']['type'],'formData':JSON['stringify'](_0x18d2c0[_0xb96b('0x4c')])};var _0x5cc90e={'ChatWebsiteId':_0x18d2c0[_0xb96b('0x53')]['id'],'closed':![]};if(_0x18d2c0['body']['threadId']){_0x5cc90e[_0xb96b('0xa6')]=_0x18d2c0[_0xb96b('0x4c')]['threadId'];return db[_0xb96b('0xa7')]['find']({'where':_0x5cc90e})['then'](function(_0x513c94){if(_0x513c94){return[_0x513c94,![]];}_0x1c95ee[_0xb96b('0xa6')]=_0x18d2c0[_0xb96b('0x4c')]['threadId'];_0x1c95ee[_0xb96b('0xa8')]=_0x18d2c0['body'][_0xb96b('0xa8')];return db[_0xb96b('0xa7')][_0xb96b('0x4b')](_0x1c95ee)[_0xb96b('0x10')](function(_0x52bcde){return[_0x52bcde,!![]];});});}_0x5cc90e[_0xb96b('0xa9')]=_0xc459b4['id'];if(_0x18d2c0['body']['interaction']&&_0x18d2c0[_0xb96b('0x4c')][_0xb96b('0xaa')]['id']){_0x5cc90e['id']=_0x18d2c0[_0xb96b('0x4c')]['interaction']['id'];return db['ChatInteraction'][_0xb96b('0x49')]({'where':_0x5cc90e})[_0xb96b('0x10')](function(_0x1a5cd4){if(_0x1a5cd4){return[_0x1a5cd4,![]];}return db[_0xb96b('0xa7')][_0xb96b('0x4b')](_0x1c95ee)[_0xb96b('0x10')](function(_0x350da3){return[_0x350da3,!![]];});});}return db[_0xb96b('0xa7')]['create'](_0x1c95ee)['then'](function(_0x4121e9){return[_0x4121e9,!![]];});}})['spread'](function(_0x37d7b0,_0x174887){if(_0x37d7b0){_0x3ed93b=_0x174887;if(!_0x174887){var _0x26560c={'from':(_0x3c0875['contact'][_0xb96b('0x9a')]||'')+'\x20'+(_0x3c0875[_0xb96b('0x93')][_0xb96b('0xab')]||'')};if(_0x18d2c0[_0xb96b('0x4c')][_0xb96b('0xa6')]&&_0x18d2c0[_0xb96b('0x4c')]['messageId']&&_0x18d2c0[_0xb96b('0x4c')][_0xb96b('0xa6')]!=_0x18d2c0['body']['messageId']){_0x26560c[_0xb96b('0xa6')]=_0x18d2c0[_0xb96b('0x4c')][_0xb96b('0xac')];}return _0x37d7b0[_0xb96b('0x22')](_0x26560c);}else{return _0x37d7b0;}}})[_0xb96b('0x10')](function(_0x4259c0){_0x3c0875[_0xb96b('0xaa')]=_0x4259c0[_0xb96b('0x24')]({'plain':!![]});_0x3c0875[_0xb96b('0xaa')]['created']=_0x3ed93b;if(_0x3c0875[_0xb96b('0xaa')][_0xb96b('0xad')]){if(_0x3c0875[_0xb96b('0x8e')][_0xb96b('0xae')]){_0x3c0875[_0xb96b('0x8f')][_0xb96b('0xaf')]({'id':0x0,'priority':_0x3c0875[_0xb96b('0x8f')][_0xb96b('0x36')]+0x1,'app':'close','appdata':'unmanaged','interval':_0xb96b('0xb0')});}}return db['ChatMessage'][_0xb96b('0x4b')]({'body':_0x18d2c0[_0xb96b('0x4c')][_0xb96b('0x4c')],'ChatWebsiteId':_0x18d2c0[_0xb96b('0x53')]['id'],'ChatInteractionId':_0x4259c0['id'],'direction':'in','ContactId':_0x3c0875[_0xb96b('0x93')]['id'],'AttachmentId':_0x18d2c0[_0xb96b('0x4c')]['AttachmentId']});})[_0xb96b('0x10')](function(_0x1dee7e){_0x3c0875[_0xb96b('0x17')]=_0x1dee7e;if(_0x3c0875['interaction'][_0xb96b('0xb1')]){return db[_0xb96b('0xb2')][_0xb96b('0x49')]({'attributes':['id',_0xb96b('0x2a')],'where':{'id':_0x3c0875[_0xb96b('0xaa')][_0xb96b('0xb1')]}})[_0xb96b('0x10')](function(_0x33424e){if(_0x33424e){_0x3c0875[_0xb96b('0x8f')][_0xb96b('0xb3')]({'id':0x0,'priority':0x0,'app':_0xb96b('0xb4'),'appdata':_0x33424e[_0xb96b('0x2a')]+','+(_0x3c0875[_0xb96b('0x8e')][_0xb96b('0xb5')]||0xa),'interval':_0xb96b('0xb0')});_0x3c0875[_0xb96b('0xb6')]=!![];}return respondWithRpcPromise(_0xb96b('0xb7'),_0xb96b('0xb8'),_0x3c0875);});}return respondWithRpcPromise(_0xb96b('0xb7'),_0xb96b('0xb8'),_0x3c0875);})[_0xb96b('0x10')](function(_0x35a07c){respondWithRpcPromise(_0xb96b('0xb9'),_0xb96b('0xb9'),{'event':_0xb96b('0x78'),'message':_0x35a07c},client9002);return _0x35a07c;})['then'](respondWithResult(_0x120fe9,null))[_0xb96b('0x4a')](handleError(_0x120fe9,null));};exports['offline']=function(_0x5d8468,_0x1a02db){var _0x12e9dc,_0x1a7607,_0x5a1495;var _0x34f9d0=[];var _0x2f6af5={};var _0xd8eb74=_0x5d8468[_0xb96b('0xba')]||[];var _0x2c2807=[];var _0x159e0e;return db[_0xb96b('0x7d')][_0xb96b('0x55')]()[_0xb96b('0x10')](function(_0x2867e4){if(!_0x2867e4){throw new db[(_0xb96b('0x7e'))][(_0xb96b('0x7f'))](_0xb96b('0xbb'));}_0x34f9d0=_['difference'](_[_0xb96b('0x31')](_0x2867e4),[_0xb96b('0xbc'),_0xb96b('0x81'),'CompanyId','ListId']);if(_0x5d8468[_0xb96b('0x4c')]['id']){delete _0x5d8468[_0xb96b('0x4c')]['id'];}if(_['isNil'](_0x5d8468[_0xb96b('0x4c')]['from'])){throw _0x1a02db['status'](0x1f4)['send'](new db['Sequelize'][(_0xb96b('0x7f'))](_0xb96b('0x84')));}if(_[_0xb96b('0x70')](_0x5d8468[_0xb96b('0x4c')][_0xb96b('0x4c')])||_0x5d8468[_0xb96b('0x4c')][_0xb96b('0x4c')]===''){throw _0x1a02db[_0xb96b('0x1a')](0x1f4)[_0xb96b('0x2b')](new db[(_0xb96b('0x7e'))][(_0xb96b('0x7f'))](_0xb96b('0xbd')));}if(_[_0xb96b('0x70')](_0x5d8468[_0xb96b('0x4c')][_0xb96b('0xbe')])){throw _0x1a02db[_0xb96b('0x1a')](0x1f4)[_0xb96b('0x2b')](new db[(_0xb96b('0x7e'))][(_0xb96b('0x7f'))](_0xb96b('0xbf')+_0x34f9d0));}if(!_['includes'](_0x34f9d0,_0x5d8468['body'][_0xb96b('0xbe')])){throw _0x1a02db[_0xb96b('0x1a')](0x1f4)[_0xb96b('0x2b')](new db['Sequelize'][(_0xb96b('0x7f'))]('mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x34f9d0));}_0x2f6af5[_0x5d8468[_0xb96b('0x4c')][_0xb96b('0xbe')]]=_0x5d8468[_0xb96b('0x4c')][_0xb96b('0x89')];})[_0xb96b('0x10')](function(){return db[_0xb96b('0x42')]['find']({'where':{'id':_0x5d8468[_0xb96b('0x53')]['id']},'include':[{'model':db[_0xb96b('0x8a')],'as':_0xb96b('0x8d')},{'model':db[_0xb96b('0xc0')],'as':'MailAccount'}]});})[_0xb96b('0x10')](handleEntityNotFound(_0x1a02db,null))['then'](function(_0x3c8f9c){if(_0x3c8f9c&&_0x3c8f9c[_0xb96b('0x8d')]){_0x1a7607=_0x3c8f9c;var _0x3056ba=_[_0xb96b('0x8')](_0x5d8468['body'],{'firstName':_0x5d8468[_0xb96b('0x4c')][_0xb96b('0x89')],'phone':_0x5d8468['body'][_0xb96b('0x89')],'ListId':_0x3c8f9c[_0xb96b('0x83')]});_0x3056ba[_0x5d8468[_0xb96b('0x4c')][_0xb96b('0xbe')]]=_0x5d8468[_0xb96b('0x4c')][_0xb96b('0x89')];return db[_0xb96b('0x7d')][_0xb96b('0xc1')]({'where':_0x2f6af5,'defaults':_0x3056ba});}})[_0xb96b('0xc2')](function(_0xfe8430){if(_0xfe8430){_0x5a1495=_0xfe8430;var _0x5b16e6=fs[_0xb96b('0xc3')](path[_0xb96b('0x65')](config[_0xb96b('0x66')],_0xb96b('0xc4')),_0xb96b('0xc5'));var _0x382876=ejs[_0xb96b('0xc6')](_0x5b16e6,{'body':_[_0xb96b('0xc7')](_0x5d8468[_0xb96b('0x4c')][_0xb96b('0x4c')]),'bodyTitle':_0x1a7607[_0xb96b('0xc8')]});return db[_0xb96b('0xc9')][_0xb96b('0x4b')]({'body':_0x382876,'ContactId':_0xfe8430['id'],'ChatWebsiteId':_0x1a7607['id']});}})[_0xb96b('0x10')](function(_0xf26e8d){_0x159e0e=_0xf26e8d;if(_0xd8eb74[_0xb96b('0x36')]){var _0x49ab3e=_0xd8eb74[_0xb96b('0x2e')](function(_0x18c898){return{'name':_0x18c898[_0xb96b('0xca')],'basename':_0x18c898[_0xb96b('0x5e')],'type':_0x18c898[_0xb96b('0xcb')],'ChatOfflineMessageId':_0xf26e8d['id']};});_0x2c2807=_0x49ab3e[_0xb96b('0x2e')](_0x30ff1b=>{var _0x3cf188={'filename':_0x30ff1b['name'],'path':path[_0xb96b('0x65')](config[_0xb96b('0x66')],_0xb96b('0xcc'),_0xb96b('0xba'),_0xb96b('0xcd'),'offline-chat',_0x30ff1b[_0xb96b('0xce')])};return _0x3cf188;});if(!_0x1a7607[_0xb96b('0xcf')]){return db['sequelize'][_0xb96b('0xd0')](function(_0x3117ae){return db['Attachment']['bulkCreate'](_0x49ab3e,{'transaction':_0x3117ae});});}}})[_0xb96b('0x10')](function(){if(_0x159e0e){_0x12e9dc=_0x159e0e;return db['MailAccount'][_0xb96b('0x59')]({'where':{'active':!![]},'include':[{'model':db[_0xb96b('0xd1')],'as':'Smtp','raw':!![]}]});}})[_0xb96b('0x10')](function(_0x29ab06){if(_0x29ab06&&_0x29ab06['Smtp']&&_0x1a7607[_0xb96b('0xd2')]&&_0x1a7607['forwardOfflineAddress']){var _0x3a2c96={'tls':{'rejectUnauthorized':![]}};if(_0x29ab06[_0xb96b('0xd3')][_0xb96b('0xd4')]){_0x3a2c96[_0xb96b('0xd4')]=_0x29ab06[_0xb96b('0xd3')][_0xb96b('0xd4')];}else{_0x3a2c96[_0xb96b('0xd5')]=_0x29ab06['Smtp']['host'];_0x3a2c96[_0xb96b('0xd6')]=_0x29ab06[_0xb96b('0xd3')][_0xb96b('0xd6')];_0x3a2c96[_0xb96b('0xd7')]=_0x29ab06[_0xb96b('0xd3')]['secure'];}if(_0x29ab06[_0xb96b('0xd3')][_0xb96b('0xd8')]){_0x3a2c96[_0xb96b('0xd9')]={'user':_0x29ab06[_0xb96b('0xd3')][_0xb96b('0x4d')],'pass':_0x29ab06[_0xb96b('0xd3')][_0xb96b('0xda')]};}return respondWithRpcPromise('SendMail',_0xb96b('0xdb'),{'account':_0x3a2c96,'message':{'from':util[_0xb96b('0x9f')](_0xb96b('0xdc'),_0x29ab06['name'],_0x29ab06[_0xb96b('0xdd')]||_0x29ab06[_0xb96b('0xd3')]['user']),'to':_0x1a7607[_0xb96b('0xde')],'subject':_0x1a7607['offlineMessageSubject'],'html':_0x12e9dc[_0xb96b('0x4c')],'attachments':_0x2c2807}},client9003)[_0xb96b('0x10')](function(){return _0x12e9dc;})['catch'](function(_0x5c6a2b){console[_0xb96b('0x16')](_0x5c6a2b);});}})[_0xb96b('0x10')](function(){if(_0x1a7607&&_0x1a7607[_0xb96b('0xcf')]&&_0x1a7607[_0xb96b('0xdf')]){var _0x14869d=[];if(_0xd8eb74['length']){_0x14869d=_0xd8eb74[_0xb96b('0x2e')](function(_0x33b196){return{'name':_0x33b196[_0xb96b('0xca')],'basename':_0x33b196['filename'],'type':_0x33b196[_0xb96b('0xcb')],'ChatOfflineMessageId':_0x159e0e['id']};});}var _0x2af217;if(!_[_0xb96b('0x70')](_0x1a7607[_0xb96b('0xe0')])){var _0xfc91c1=_[_0xb96b('0x2e')](_0x5d8468['body'],function(_0x110282){return _0x110282;});var _0x4ea206=_[_0xb96b('0xe1')](_0xfc91c1)[0x0];var _0x3d63a3=_['mapValues'](_0x4ea206,function(_0x57dfef){return _0x57dfef;});_0x2af217=_0x3d63a3[0x1][_0x1a7607[_0xb96b('0xe0')]];}var _0x5afbad={'from':_0x5a1495[_0xb96b('0xdd')],'firstName':_0x5a1495[_0xb96b('0x9a')],'lastName':_0x5a1495[_0xb96b('0xab')],'mapKey':_0xb96b('0xdd'),'message':{'from':_0x5a1495[_0xb96b('0xdd')],'to':_0x1a7607[_0xb96b('0xc0')][_0xb96b('0xdd')],'cc':'','subject':_[_0xb96b('0x70')](_0x2af217)?_0x1a7607[_0xb96b('0xe2')]:_0x2af217,'messageId':'','sentAt':new Date(),'attach':_0x14869d[_0xb96b('0x36')],'attachments':_0x14869d,'originChannel':'Chat','ChatWebsiteId':_0x1a7607['id'],'ChatOfflineMessageId':_0x12e9dc['id'],'originTo':_0x1a7607['MailAccount'][_0xb96b('0xdd')]},'body':_0x12e9dc['body']};var _0x256376={'account':{'id':_0x1a7607['MailAccountId']},'body':_0x5afbad,'log':'NotifyMailAccount'};return respondWithRpcPromise(_0xb96b('0xe3'),'notifyMail',_0x256376,client9001)['then'](function(){return _0x12e9dc;})['catch'](function(_0x1cfee1){console['error'](_0x1cfee1);});}return;})[_0xb96b('0x10')](function(){if(_0x12e9dc){return _0x12e9dc;}})[_0xb96b('0x10')](respondWithResult(_0x1a02db,null))[_0xb96b('0x4a')](function(_0x45c29b){console[_0xb96b('0x16')]('catch',_0x45c29b);for(var _0x4b18f5 of _0xd8eb74){var _0x2e77e4=path[_0xb96b('0x65')](config['root'],_0xb96b('0xcc'),_0xb96b('0xba'),_0xb96b('0xcd'),_0xb96b('0xe4'),_0x4b18f5[_0xb96b('0x5e')]);fs_extra['remove'](_0x2e77e4)['catch'](function(_0xf3023b){console[_0xb96b('0x16')](_0xb96b('0xe5'),_0x2e77e4,_0xf3023b);});}});};exports[_0xb96b('0xe6')]=function(_0x8b68a,_0x14ba47){return db['ChatInteraction'][_0xb96b('0x49')]({'where':{'id':_0x8b68a[_0xb96b('0x53')]['id']}})[_0xb96b('0x10')](handleEntityNotFound(_0x14ba47,null))['then'](function(_0x4d69e6){if(_0x4d69e6){return _0x4d69e6['addInteraction'](_0x8b68a[_0xb96b('0x4c')][_0xb96b('0xe7')],_['omit'](_0x8b68a[_0xb96b('0x4c')],['ids','id'])||{});}})[_0xb96b('0x10')](respondWithResult(_0x14ba47,null))[_0xb96b('0x4a')](handleError(_0x14ba47,null));};exports[_0xb96b('0xe8')]=function(_0xe837fd,_0x4a6724){var _0x386e9c={'raw':![],'where':{}};var _0x32a947={};var _0xb5cce8={'count':0x0,'rows':[]};return db[_0xb96b('0x42')][_0xb96b('0x59')]({'where':{'id':_0xe837fd[_0xb96b('0x53')]['id']}})[_0xb96b('0x10')](handleEntityNotFound(_0x4a6724,null))[_0xb96b('0x10')](function(_0xdaf84f){if(_0xdaf84f){_0x32a947[_0xb96b('0x34')]=_['keys'](db[_0xb96b('0xa7')][_0xb96b('0x48')]);_0x32a947['query']=_[_0xb96b('0x31')](_0xe837fd[_0xb96b('0x30')]);_0x32a947[_0xb96b('0x3c')]=_[_0xb96b('0x32')](_0x32a947[_0xb96b('0x34')],_0x32a947[_0xb96b('0x30')]);_0x386e9c[_0xb96b('0x33')]=_[_0xb96b('0x32')](_0x32a947[_0xb96b('0x34')],qs[_0xb96b('0x35')](_0xe837fd['query'][_0xb96b('0x35')]));_0x386e9c[_0xb96b('0x33')]=_0x386e9c[_0xb96b('0x33')][_0xb96b('0x36')]?_0x386e9c[_0xb96b('0x33')]:_0x32a947['model'];if(!_0xe837fd['query']['hasOwnProperty'](_0xb96b('0x38'))){_0x386e9c[_0xb96b('0x1d')]=qs[_0xb96b('0x1d')](_0xe837fd[_0xb96b('0x30')][_0xb96b('0x1d')]);_0x386e9c[_0xb96b('0x1f')]=qs[_0xb96b('0x1f')](_0xe837fd[_0xb96b('0x30')]['offset']);}_0x386e9c[_0xb96b('0x39')]=qs[_0xb96b('0x3a')](_0xe837fd['query'][_0xb96b('0x3a')]);_0x386e9c[_0xb96b('0x3b')]=qs[_0xb96b('0x3c')](_[_0xb96b('0x3d')](_0xe837fd[_0xb96b('0x30')],_0x32a947['filters']));_0x386e9c[_0xb96b('0x3b')][_0xb96b('0x57')]=_0xdaf84f['id'];if(_0xe837fd[_0xb96b('0x30')][_0xb96b('0x3e')]){_0x386e9c['where']=_[_0xb96b('0x3f')](_0x386e9c[_0xb96b('0x3b')],{'$or':_['map'](_0x386e9c[_0xb96b('0x33')],function(_0x201a1f){var _0x4ff09e={};_0x4ff09e[_0x201a1f]={'$like':'%'+_0xe837fd[_0xb96b('0x30')]['filter']+'%'};return _0x4ff09e;})});}_0x386e9c=_['merge']({},_0x386e9c,_0xe837fd[_0xb96b('0x41')]);return db[_0xb96b('0xa7')][_0xb96b('0x1e')]({'where':_0x386e9c['where']})[_0xb96b('0x10')](function(_0x493fee){_0xb5cce8[_0xb96b('0x1e')]=_0x493fee;if(_0xe837fd[_0xb96b('0x30')]['includeAll']){_0x386e9c[_0xb96b('0x44')]=[{'model':db[_0xb96b('0x7d')],'as':'Contact','required':![]},{'model':db['User'],'as':_0xb96b('0xe9'),'attributes':[_0xb96b('0x2a'),_0xb96b('0xea'),_0xb96b('0xeb')],'required':![]},{'model':db[_0xb96b('0xec')],'as':_0xb96b('0xed'),'attributes':['id',_0xb96b('0x2a'),_0xb96b('0xee')],'where':_0xe837fd[_0xb96b('0x30')][_0xb96b('0xef')]?{'id':_0xe837fd['query'][_0xb96b('0xef')]}:undefined,'required':_0xe837fd[_0xb96b('0x30')][_0xb96b('0xef')]?!![]:![]}];}return db[_0xb96b('0xa7')][_0xb96b('0x45')](_0x386e9c);})[_0xb96b('0x10')](function(_0x5d722f){_0xb5cce8[_0xb96b('0x46')]=_0x5d722f;return _0xb5cce8;});}})[_0xb96b('0x10')](respondWithFilteredResult(_0x4a6724,_0x386e9c))[_0xb96b('0x4a')](handleError(_0x4a6724,null));};function iftimePromise(_0x55b800,_0x5d14d3){return respondWithRpcPromise(_0xb96b('0xf0'),_0xb96b('0xf1'),{'command':_0x5d14d3[_0xb96b('0xf2')]?util['format'](_0xb96b('0xf3'),_0x55b800[_0xb96b('0xf4')],_0x5d14d3['timezone']):util[_0xb96b('0x9f')](_0xb96b('0xf5'),_0x55b800[_0xb96b('0xf4')])},client9002)['then'](function(_0x114962){var _0x2aa99c=_0x114962&&_0x114962[_0xb96b('0xf6')]('true')>=0x0?!![]:![];logger[_0xb96b('0x18')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x5d14d3['id'],_0x55b800['id'],_0x55b800[_0xb96b('0xf4')],_0x2aa99c?_0xb96b('0xf7'):_0xb96b('0xf8'),_0x5d14d3[_0xb96b('0xf2')]?_0x5d14d3[_0xb96b('0xf2')]:_0xb96b('0xf9'));return _0x2aa99c;})[_0xb96b('0x4a')](function(_0xea627f){logger[_0xb96b('0x16')](_0xb96b('0xfa'),_0x5d14d3['id'],_0x55b800['id'],_0x55b800[_0xb96b('0xf4')],util[_0xb96b('0xfb')](_0xea627f,{'showHidden':![],'depth':null}),_0x5d14d3[_0xb96b('0xf2')]?_0x5d14d3['timezone']:_0xb96b('0xf9'));return![];});}exports[_0xb96b('0xf1')]=function(_0x3c69d2,_0x48f30b){var _0x35d769=0x0;var _0x5bdbec=0x0;var _0x1fc2e2=![];var _0x1ae3f0;var _0x549cc7;return db[_0xb96b('0x42')][_0xb96b('0x49')]({'where':{'id':_0x3c69d2[_0xb96b('0x53')]['id']},'include':[{'model':db[_0xb96b('0xfc')],'as':_0xb96b('0xfc'),'include':[{'model':db['Interval'],'as':'Intervals','attributes':['id',_0xb96b('0xf4')],'raw':!![]}]}]})[_0xb96b('0x10')](handleEntityNotFound(_0x48f30b,null))[_0xb96b('0x10')](function(_0x4b79cd){if(_0x4b79cd){_0x1ae3f0=_0x4b79cd;return _0x4b79cd[_0xb96b('0xfd')]({'raw':!![]});}})[_0xb96b('0x10')](function(_0x30afe3){if(_0x1ae3f0){if(_0x30afe3){_0x549cc7=_0x30afe3;}}return require(_0xb96b('0x68'))[_0xb96b('0x69')]();})[_0xb96b('0x10')](function(_0x45bc8a){if(_0x45bc8a){_0x5bdbec=_0x45bc8a['virtual'];_0x1fc2e2=_0x45bc8a[_0xb96b('0x6a')];}})[_0xb96b('0x10')](function(){return db[_0xb96b('0xa7')][_0xb96b('0x1e')]({'where':{'closed':![]}});})['then'](function(_0x11292a){_0x35d769=_0x11292a;if(_0x5bdbec&&_0x11292a>_0x5bdbec){return db['License'][_0xb96b('0x59')]({'where':{'id':0x1}})[_0xb96b('0x10')](function(_0x323cb6){if(_0x323cb6){_0x323cb6[_0xb96b('0xfe')](_0xb96b('0xff'));}});}})['then'](function(){if(_0x1ae3f0[_0xb96b('0xfc')]&&_0x1ae3f0[_0xb96b('0xfc')][_0xb96b('0x100')]){var _0x252494=[];for(var _0x47792e=0x0;_0x47792e<_0x1ae3f0[_0xb96b('0xfc')][_0xb96b('0x100')][_0xb96b('0x36')];_0x47792e++){var _0x201c72=_0x1ae3f0['Interval'][_0xb96b('0x100')][_0x47792e][_0xb96b('0x24')]({'plain':!![]});_0x252494[_0xb96b('0xaf')](iftimePromise(_0x201c72,_0x1ae3f0));}return BPromise[_0xb96b('0x101')](_0x252494)['then'](function(_0x537cbb){return _['some'](_0x537cbb);});}else{return!![];}})['then'](function(_0x5cd39e){var _0x29c877=fs['readFileSync'](path['join'](config[_0xb96b('0x66')],_0xb96b('0x102')),_0xb96b('0xc5'));var _0x568771={'remote':_0x1ae3f0[_0xb96b('0x103')],'query':querystring[_0xb96b('0x15')](_['merge'](_0x1ae3f0[_0xb96b('0x24')]({'plain':!![]}),{'customerIp':_0x3c69d2[_0xb96b('0x95')][_0xb96b('0x97')]||_0x3c69d2[_0xb96b('0x95')][_0xb96b('0x104')]||_0x3c69d2[_0xb96b('0x105')][_0xb96b('0x106')]||_0x3c69d2['ip'],'referer':_0x3c69d2[_0xb96b('0x95')]['referer'],'openedInteractions':_0x35d769,'maxInteractions':_0x5bdbec,'virtual':_0x1fc2e2[_0xb96b('0x107')],'online':_0x5cd39e,'custom':_0x1fc2e2}))[_0xb96b('0x108')](/'/g,'\x5c\x27')};_0x48f30b[_0xb96b('0x2b')](ejs[_0xb96b('0xc6')](Mustache['render'](_0x29c877,_0x568771),{'proactiveActions':_0x549cc7,'alignment':_0x1ae3f0['alignment'],'verticalAlignment':_0x1ae3f0[_0xb96b('0x109')],'div_color':_0x1ae3f0[_0xb96b('0xee')],'text_color':_0x1ae3f0[_0xb96b('0x10a')],'button_color':_0x1ae3f0['color_button'],'background_color':_0x1ae3f0['backgroundColor']}));})['catch'](handleError(_0x48f30b,null));};exports[_0xb96b('0x10b')]=function(_0x23a72b,_0x12b93c){var _0x314778=_0x23a72b['params']['id'];var _0x50ddbd=_0x23a72b[_0xb96b('0x4c')];var _0x46df6e=0xc8;var _0x1e07f7=null;return db[_0xb96b('0x10c')][_0xb96b('0xd0')]({'isolationLevel':db[_0xb96b('0x10c')]['Transaction'][_0xb96b('0x10d')][_0xb96b('0x10e')]},function(_0x37de11){return db[_0xb96b('0x42')][_0xb96b('0x59')]({'where':{'id':_0x314778},'transaction':_0x37de11})[_0xb96b('0x10')](function(_0xecc770){if(_0xecc770){return db[_0xb96b('0x10f')][_0xb96b('0x23')]({'where':{'ChatWebsiteId':_0x314778},'transaction':_0x37de11})[_0xb96b('0x10')](function(){var _0x4192c8=_['map'](_0x50ddbd,function(_0x36b302){_0x36b302[_0xb96b('0x57')]=_0x314778;return _0x36b302;});return db[_0xb96b('0x10f')][_0xb96b('0x110')](_0x4192c8,{'transaction':_0x37de11});});}else{_0x46df6e=0x194;_0x1e07f7=[];}});})[_0xb96b('0x10')](function(){if(_0x46df6e!==0x194){return db[_0xb96b('0x10f')][_0xb96b('0x111')]({'where':{'ChatWebsiteId':_0x314778},'order':_0xb96b('0x112')})['then'](function(_0x4c8666){_0x1e07f7=_0x4c8666;});}})['catch'](function(_0x74deaf){_0x46df6e=0x1f4;logger[_0xb96b('0x16')](_0x74deaf[_0xb96b('0x29')]);if(_0x74deaf[_0xb96b('0x2a')]){delete _0x74deaf[_0xb96b('0x2a')];}_0x1e07f7=_0x74deaf;})['finally'](function(){if(_0x1e07f7===null){_0x12b93c['sendStatus'](_0x46df6e);}else{if(_0x46df6e===0x1f4){_0x12b93c[_0xb96b('0x1a')](_0x46df6e)[_0xb96b('0x2b')](_0x1e07f7);}else{_0x12b93c[_0xb96b('0x1a')](_0x46df6e)[_0xb96b('0x1b')](_0x1e07f7);}}});};exports['getApplications']=function(_0x480cfa,_0x878ecb){var _0xfc62b3={};var _0x18401b={};var _0x259fee;var _0x5c2861;return db['ChatWebsite'][_0xb96b('0x59')]({'where':{'id':_0x480cfa[_0xb96b('0x53')]['id']}})[_0xb96b('0x10')](handleEntityNotFound(_0x878ecb,null))[_0xb96b('0x10')](function(_0x2069e2){if(_0x2069e2){_0x259fee=_0x2069e2;_0x18401b[_0xb96b('0x34')]=_[_0xb96b('0x31')](db[_0xb96b('0x10f')][_0xb96b('0x48')]);_0x18401b[_0xb96b('0x30')]=_[_0xb96b('0x31')](_0x480cfa['query']);_0x18401b[_0xb96b('0x3c')]=_[_0xb96b('0x32')](_0x18401b[_0xb96b('0x34')],_0x18401b[_0xb96b('0x30')]);_0xfc62b3[_0xb96b('0x33')]=_['intersection'](_0x18401b['model'],qs[_0xb96b('0x35')](_0x480cfa[_0xb96b('0x30')][_0xb96b('0x35')]));_0xfc62b3[_0xb96b('0x33')]=_0xfc62b3[_0xb96b('0x33')]['length']?_0xfc62b3[_0xb96b('0x33')]:_0x18401b[_0xb96b('0x34')];_0xfc62b3[_0xb96b('0x39')]=qs[_0xb96b('0x3a')](_0x480cfa[_0xb96b('0x30')]['sort']);_0xfc62b3[_0xb96b('0x3b')]=qs[_0xb96b('0x3c')](_['pick'](_0x480cfa['query'],_0x18401b['filters']));if(_0x480cfa[_0xb96b('0x30')]['filter']){_0xfc62b3[_0xb96b('0x3b')]=_['merge'](_0xfc62b3[_0xb96b('0x3b')],{'$or':_['map'](_0xfc62b3[_0xb96b('0x33')],function(_0x156747){var _0xf7665d={};_0xf7665d[_0x156747]={'$like':'%'+_0x480cfa['query'][_0xb96b('0x3e')]+'%'};return _0xf7665d;})});}_0xfc62b3=_[_0xb96b('0x3f')]({},_0xfc62b3,_0x480cfa[_0xb96b('0x41')]);return _0x259fee[_0xb96b('0x113')](_0xfc62b3);}})[_0xb96b('0x10')](function(_0x4cad3c){if(_0x4cad3c){_0x5c2861=_0x4cad3c[_0xb96b('0x36')];if(!_0x480cfa[_0xb96b('0x30')]['hasOwnProperty'](_0xb96b('0x38'))){_0xfc62b3[_0xb96b('0x1d')]=qs[_0xb96b('0x1d')](_0x480cfa[_0xb96b('0x30')][_0xb96b('0x1d')]);_0xfc62b3['offset']=qs[_0xb96b('0x1f')](_0x480cfa[_0xb96b('0x30')][_0xb96b('0x1f')]);}return _0x259fee[_0xb96b('0x113')](_0xfc62b3);}})[_0xb96b('0x10')](function(_0x569981){if(_0x569981){return _0x569981?{'count':_0x5c2861,'rows':_0x569981}:null;}})['then'](respondWithResult(_0x878ecb,null))[_0xb96b('0x4a')](handleError(_0x878ecb,null));};exports[_0xb96b('0x114')]=function(_0x2cc62d,_0x417c7b){return db[_0xb96b('0x115')][_0xb96b('0x49')]({'where':{'id':_0x2cc62d[_0xb96b('0x53')]['id']}})[_0xb96b('0x10')](handleEntityNotFound(_0x417c7b,null))[_0xb96b('0x10')](function(_0x2982d1){if(_0x2982d1){return _0x2982d1['addProactiveActions'](_0x2cc62d['body'][_0xb96b('0xe7')],_[_0xb96b('0x116')](_0x2cc62d['body'],['ids','id'])||{});}})[_0xb96b('0x10')](respondWithResult(_0x417c7b,null))[_0xb96b('0x4a')](handleError(_0x417c7b,null));};exports[_0xb96b('0xfd')]=function(_0x4416bc,_0xe9ea28){var _0x444348={};var _0x223c89={};var _0x399dc9;var _0x2dffd9;return db['ChatWebsite'][_0xb96b('0x59')]({'where':{'id':_0x4416bc[_0xb96b('0x53')]['id']}})[_0xb96b('0x10')](handleEntityNotFound(_0xe9ea28,null))[_0xb96b('0x10')](function(_0xf3d056){if(_0xf3d056){_0x399dc9=_0xf3d056;_0x223c89[_0xb96b('0x34')]=_['keys'](db[_0xb96b('0x117')][_0xb96b('0x48')]);_0x223c89[_0xb96b('0x30')]=_[_0xb96b('0x31')](_0x4416bc['query']);_0x223c89['filters']=_[_0xb96b('0x32')](_0x223c89[_0xb96b('0x34')],_0x223c89[_0xb96b('0x30')]);_0x444348[_0xb96b('0x33')]=_[_0xb96b('0x32')](_0x223c89[_0xb96b('0x34')],qs[_0xb96b('0x35')](_0x4416bc['query'][_0xb96b('0x35')]));_0x444348[_0xb96b('0x33')]=_0x444348[_0xb96b('0x33')][_0xb96b('0x36')]?_0x444348[_0xb96b('0x33')]:_0x223c89[_0xb96b('0x34')];_0x444348[_0xb96b('0x39')]=qs['sort'](_0x4416bc[_0xb96b('0x30')][_0xb96b('0x3a')]);_0x444348[_0xb96b('0x3b')]=qs['filters'](_[_0xb96b('0x3d')](_0x4416bc[_0xb96b('0x30')],_0x223c89['filters']));if(_0x4416bc[_0xb96b('0x30')]['filter']){_0x444348[_0xb96b('0x3b')]=_['merge'](_0x444348[_0xb96b('0x3b')],{'$or':_[_0xb96b('0x2e')](_0x444348[_0xb96b('0x33')],function(_0x143cba){var _0x2d85c3={};_0x2d85c3[_0x143cba]={'$like':'%'+_0x4416bc['query'][_0xb96b('0x3e')]+'%'};return _0x2d85c3;})});}_0x444348=_[_0xb96b('0x3f')]({},_0x444348,_0x4416bc[_0xb96b('0x41')]);return _0x399dc9[_0xb96b('0xfd')](_0x444348);}})[_0xb96b('0x10')](function(_0x9e4fc0){if(_0x9e4fc0){_0x2dffd9=_0x9e4fc0[_0xb96b('0x36')];if(!_0x4416bc[_0xb96b('0x30')][_0xb96b('0x37')]('nolimit')){_0x444348[_0xb96b('0x1d')]=qs['limit'](_0x4416bc[_0xb96b('0x30')][_0xb96b('0x1d')]);_0x444348['offset']=qs[_0xb96b('0x1f')](_0x4416bc[_0xb96b('0x30')][_0xb96b('0x1f')]);}return _0x399dc9[_0xb96b('0xfd')](_0x444348);}})['then'](function(_0x27db4c){if(_0x27db4c){return _0x27db4c?{'count':_0x2dffd9,'rows':_0x27db4c}:null;}})[_0xb96b('0x10')](respondWithResult(_0xe9ea28,null))[_0xb96b('0x4a')](handleError(_0xe9ea28,null));};exports[_0xb96b('0x118')]=function(_0xe25152,_0x176660){var _0x125250=_0xe25152[_0xb96b('0x30')]['online']===_0xb96b('0x119')?_0xb96b('0x11a'):_0xb96b('0x11b');return db[_0xb96b('0x42')][_0xb96b('0x49')]({'attributes':['id',_0x125250],'where':{'id':_0xe25152['params']['id']}})[_0xb96b('0x10')](handleEntityNotFound(_0x176660,null))['then'](function(_0x5274d9){if(_0x5274d9){var _0x3ce53e=_0x5274d9[_0x125250];var _0x2073d2=_0x3ce53e&&_0x3ce53e[_0xb96b('0x11c')]?_0x3ce53e[_0xb96b('0x11c')]:[];_0x176660[_0xb96b('0x2b')]({'fromKey':_[_0xb96b('0x70')](_0x3ce53e[_0xb96b('0x11d')])?undefined:_0x3ce53e[_0xb96b('0x11d')],'count':_0x2073d2[_0xb96b('0x36')],'rows':_0x2073d2});}})[_0xb96b('0x4a')](handleError(_0x176660,null));};exports[_0xb96b('0x11e')]=function(_0x42a990,_0x39c85f){var _0x332f85={'raw':![],'where':{}};var _0x204aa9={};var _0x596500={'count':0x0,'rows':[]};return db[_0xb96b('0x42')]['findOne']({'where':{'id':_0x42a990[_0xb96b('0x53')]['id']}})['then'](handleEntityNotFound(_0x39c85f,null))[_0xb96b('0x10')](function(_0x3cd994){if(_0x3cd994){_0x204aa9[_0xb96b('0x34')]=_['keys'](db[_0xb96b('0xc9')]['rawAttributes']);_0x204aa9[_0xb96b('0x30')]=_['keys'](_0x42a990[_0xb96b('0x30')]);_0x204aa9[_0xb96b('0x3c')]=_[_0xb96b('0x32')](_0x204aa9[_0xb96b('0x34')],_0x204aa9[_0xb96b('0x30')]);_0x332f85[_0xb96b('0x33')]=_[_0xb96b('0x32')](_0x204aa9[_0xb96b('0x34')],qs['fields'](_0x42a990[_0xb96b('0x30')][_0xb96b('0x35')]));_0x332f85[_0xb96b('0x33')]=_0x332f85['attributes'][_0xb96b('0x36')]?_0x332f85[_0xb96b('0x33')]:_0x204aa9['model'];if(!_0x42a990[_0xb96b('0x30')]['hasOwnProperty'](_0xb96b('0x38'))){_0x332f85[_0xb96b('0x1d')]=qs[_0xb96b('0x1d')](_0x42a990[_0xb96b('0x30')][_0xb96b('0x1d')]);_0x332f85[_0xb96b('0x1f')]=qs[_0xb96b('0x1f')](_0x42a990[_0xb96b('0x30')][_0xb96b('0x1f')]);}_0x332f85[_0xb96b('0x39')]=qs['sort'](_0x42a990['query'][_0xb96b('0x3a')]);_0x332f85[_0xb96b('0x3b')]=qs[_0xb96b('0x3c')](_['pick'](_0x42a990[_0xb96b('0x30')],_0x204aa9[_0xb96b('0x3c')]));_0x332f85[_0xb96b('0x3b')][_0xb96b('0x57')]=_0x3cd994['id'];if(_0x42a990['query'][_0xb96b('0x3e')]){_0x332f85['where']=_['merge'](_0x332f85['where'],{'$or':_[_0xb96b('0x2e')](_0x332f85[_0xb96b('0x33')],function(_0x3441b7){var _0x503b61={};_0x503b61[_0x3441b7]={'$like':'%'+_0x42a990[_0xb96b('0x30')][_0xb96b('0x3e')]+'%'};return _0x503b61;})});}_0x332f85=_[_0xb96b('0x3f')]({},_0x332f85,_0x42a990[_0xb96b('0x41')]);return db[_0xb96b('0xc9')][_0xb96b('0x1e')]({'where':_0x332f85[_0xb96b('0x3b')]})[_0xb96b('0x10')](function(_0x4cf49a){_0x596500[_0xb96b('0x1e')]=_0x4cf49a;if(_0x42a990[_0xb96b('0x30')][_0xb96b('0x43')]){_0x332f85[_0xb96b('0x44')]=[{'all':!![]}];}else{_0x332f85['include']=[{'model':db[_0xb96b('0x7d')],'as':_0xb96b('0x11f'),'required':![]},{'model':db['Attachment'],'as':_0xb96b('0x120'),'required':![]}];}return db[_0xb96b('0xc9')][_0xb96b('0x45')](_0x332f85);})[_0xb96b('0x10')](function(_0x1740ab){_0x596500[_0xb96b('0x46')]=_0x1740ab;return _0x596500;});}})[_0xb96b('0x10')](respondWithFilteredResult(_0x39c85f,_0x332f85))[_0xb96b('0x4a')](handleError(_0x39c85f,null));};exports['addAgents']=function(_0x277804,_0xfb761c){return db['ChatWebsite'][_0xb96b('0x49')]({'where':{'id':_0x277804[_0xb96b('0x53')]['id']}})[_0xb96b('0x10')](handleEntityNotFound(_0xfb761c,null))[_0xb96b('0x10')](function(_0x209dba){if(_0x209dba){return _0x209dba[_0xb96b('0x121')](_0x277804['body']['ids'],_[_0xb96b('0x116')](_0x277804[_0xb96b('0x4c')],[_0xb96b('0xe7'),'id'])||{})['spread'](function(_0x1c9545){for(var _0x4b2c50=0x0;_0x4b2c50<_0x277804[_0xb96b('0x4c')][_0xb96b('0xe7')][_0xb96b('0x36')];_0x4b2c50+=0x1){socket[_0xb96b('0x122')](_0xb96b('0x123'),{'UserId':Number(_0x277804['body']['ids'][_0x4b2c50]),'ChatWebsiteId':Number(_0x277804[_0xb96b('0x53')]['id'])});}return _0x1c9545;});}})[_0xb96b('0x10')](respondWithResult(_0xfb761c,null))[_0xb96b('0x4a')](handleError(_0xfb761c,null));};exports[_0xb96b('0x124')]=function(_0x172e75,_0x92782b){return db[_0xb96b('0x42')][_0xb96b('0x49')]({'where':{'id':_0x172e75[_0xb96b('0x53')]['id']}})['then'](handleEntityNotFound(_0x92782b,null))[_0xb96b('0x10')](function(_0x404b75){if(_0x404b75){return _0x404b75[_0xb96b('0x124')](_0x172e75[_0xb96b('0x30')][_0xb96b('0xe7')])[_0xb96b('0x10')](function(){if(_['isArray'](_0x172e75[_0xb96b('0x30')][_0xb96b('0xe7')])){for(var _0x1c19ea=0x0;_0x1c19ea<_0x172e75[_0xb96b('0x30')][_0xb96b('0xe7')]['length'];_0x1c19ea+=0x1){socket[_0xb96b('0x122')]('userChatWebsite:remove',{'UserId':Number(_0x172e75['query'][_0xb96b('0xe7')][_0x1c19ea]),'ChatWebsiteId':Number(_0x172e75[_0xb96b('0x53')]['id'])});}}else{socket[_0xb96b('0x122')](_0xb96b('0x125'),{'UserId':Number(_0x172e75['query'][_0xb96b('0xe7')]),'ChatWebsiteId':Number(_0x172e75['params']['id'])});}});}})[_0xb96b('0x10')](respondWithStatusCode(_0x92782b,null))[_0xb96b('0x4a')](handleError(_0x92782b,null));};exports[_0xb96b('0x126')]=function(_0x364639,_0x8e5dda){var _0xd4dace={};var _0x42a7c9={};var _0x321718;var _0x27e8ac;return db['ChatWebsite'][_0xb96b('0x59')]({'where':{'id':_0x364639['params']['id']}})[_0xb96b('0x10')](handleEntityNotFound(_0x8e5dda,null))[_0xb96b('0x10')](function(_0x5cdad9){if(_0x5cdad9){_0x321718=_0x5cdad9;_0x42a7c9[_0xb96b('0x34')]=_[_0xb96b('0x31')](db[_0xb96b('0xb2')][_0xb96b('0x48')]);_0x42a7c9[_0xb96b('0x30')]=_[_0xb96b('0x31')](_0x364639['query']);_0x42a7c9[_0xb96b('0x3c')]=_['intersection'](_0x42a7c9[_0xb96b('0x34')],_0x42a7c9[_0xb96b('0x30')]);_0xd4dace[_0xb96b('0x33')]=_[_0xb96b('0x32')](_0x42a7c9[_0xb96b('0x34')],qs[_0xb96b('0x35')](_0x364639[_0xb96b('0x30')]['fields']));_0xd4dace[_0xb96b('0x33')]=_0xd4dace[_0xb96b('0x33')]['length']?_0xd4dace[_0xb96b('0x33')]:_0x42a7c9[_0xb96b('0x34')];_0xd4dace['order']=qs[_0xb96b('0x3a')](_0x364639['query'][_0xb96b('0x3a')]);_0xd4dace[_0xb96b('0x3b')]=qs['filters'](_[_0xb96b('0x3d')](_0x364639[_0xb96b('0x30')],_0x42a7c9[_0xb96b('0x3c')]));if(_0x364639[_0xb96b('0x30')][_0xb96b('0x3e')]){_0xd4dace['where']=_[_0xb96b('0x3f')](_0xd4dace[_0xb96b('0x3b')],{'$or':_['map'](_0xd4dace[_0xb96b('0x33')],function(_0x10cefd){var _0x24e677={};_0x24e677[_0x10cefd]={'$like':'%'+_0x364639[_0xb96b('0x30')]['filter']+'%'};return _0x24e677;})});}_0xd4dace=_[_0xb96b('0x3f')]({},_0xd4dace,_0x364639['options']);return _0x321718['getAgents'](_0xd4dace);}})[_0xb96b('0x10')](function(_0x970daf){if(_0x970daf){_0x27e8ac=_0x970daf[_0xb96b('0x36')];if(!_0x364639[_0xb96b('0x30')][_0xb96b('0x37')]('nolimit')){_0xd4dace[_0xb96b('0x1d')]=qs['limit'](_0x364639[_0xb96b('0x30')]['limit']);_0xd4dace[_0xb96b('0x1f')]=qs[_0xb96b('0x1f')](_0x364639['query'][_0xb96b('0x1f')]);}return _0x321718['getAgents'](_0xd4dace);}})[_0xb96b('0x10')](function(_0x59e9c5){if(_0x59e9c5){return _0x59e9c5?{'count':_0x27e8ac,'rows':_0x59e9c5}:null;}})[_0xb96b('0x10')](respondWithResult(_0x8e5dda,null))[_0xb96b('0x4a')](handleError(_0x8e5dda,null));};
\ No newline at end of file
+var _0xc807=['getApplications','addProactiveActions','getFields','false','onlineForm','items','fromKey','getOfflineMessages','ChatOfflineMessage','Attachment','Attachments','addAgents','spread','emit','userChatWebsite:remove','getAgents','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatWebsite.socket','jayson/promise','http','client','request','then','info','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','ChatWebsite,\x20%s,\x20%s','message','result','sendStatus','status','end','json','offset','undefined','limit','set','apply','reject','save','update','destroy','ChatWebsites','stack','name','index','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','count','includeAll','include','findAll','rows','params','length','options','find','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','body','describe','addDisposition','ChatWebsiteId','Disposition','findOne','order','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addLogo','sitepic','file','filename','addAvatar','addCustomerAvatar','customerAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','getLicense','custom','isNil','existsSync','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','agentAvatar','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','server/files/images/avatars/system_avatar.png','setUA','headers','user-agent','getResult','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','updatedAt','createdAt','CompanyId','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','Contacts','ChatApplication','Applications','account','applications','orderBy','priority','asc','ListId','contact','customerIp','x-forwarded-for','split','lastName','x-real-port','browser','version','unknown','%s\x20%s','device','%s\x20%s\x20%s','vendor','threadId','ChatInteraction','externalUrl','ContactId','interaction','messageId','created','autoclose','push','close','unmanaged','ChatMessage','AttachmentId','UserId','unshift','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','notify','offline','files','from\x20is\x20mandatory','send','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','originalname','mimetype','server','attachments','basename','sequelize','transaction','MailServerOut','Smtp','service','host','port','secure','authentication','pass','forwardOfflineAddress','offlineMessageSubject','openNewInteraction','subjectOffline','toPairsIn','email','Chat','notifyMail','offline-chat','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Contact','User','Owner','fullname','internal','Tag','color','tag','Command','getSnippet','timezone','format','iftime\x20%s,%s','interval','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','inspect','Interval','Intervals','getProactiveActions','License','chatLicenseExceeded','some','remote','x-real-ip','connection','remoteAddress','replace','alignment','verticalAlignment','textColor','color_button','backgroundColor','addApplications','bulkCreate','findAndCountAll'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0xc807,0x13c));var _0x7c80=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0xc807[_0x1e3c16];return _0x47a0c9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x7c80('0x0'));var moment=require(_0x7c80('0x1'));var BPromise=require(_0x7c80('0x2'));var Mustache=require(_0x7c80('0x3'));var util=require('util');var path=require(_0x7c80('0x4'));var sox=require(_0x7c80('0x5'));var csv=require(_0x7c80('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7c80('0x7'));var squel=require(_0x7c80('0x8'));var crypto=require(_0x7c80('0x9'));var jsforce=require(_0x7c80('0xa'));var deskjs=require(_0x7c80('0xb'));var toCsv=require(_0x7c80('0x6'));var querystring=require(_0x7c80('0xc'));var Papa=require(_0x7c80('0xd'));var Redis=require(_0x7c80('0xe'));var authService=require(_0x7c80('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x7c80('0x10'));var hardwareService=require(_0x7c80('0x11'));var logger=require(_0x7c80('0x12'))(_0x7c80('0x13'));var utils=require('../../config/utils');var config=require(_0x7c80('0x14'));var licenseUtil=require(_0x7c80('0x15'));var db=require(_0x7c80('0x16'))['db'];config[_0x7c80('0x17')]=_[_0x7c80('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x7c80('0x19'))(new Redis(config['redis']));require(_0x7c80('0x1a'))['register'](socket);var jayson=require(_0x7c80('0x1b'));var client=jayson['client'][_0x7c80('0x1c')]({'port':0x232c});var client9002=jayson[_0x7c80('0x1d')][_0x7c80('0x1c')]({'port':0x232a});var client9003=jayson[_0x7c80('0x1d')]['http']({'port':0x232b});var client9001=jayson['client']['http']({'port':0x2329});function respondWithRpcPromise(_0x5c868b,_0x3495fd,_0x29805a,_0x58586f){return new BPromise(function(_0xd59e76,_0x1e273d){var _0x282376=_0x58586f||client;return _0x282376[_0x7c80('0x1e')](_0x5c868b,_0x29805a)[_0x7c80('0x1f')](function(_0x2cb669){logger[_0x7c80('0x20')]('ChatWebsite,\x20%s,\x20%s',_0x3495fd,'request\x20sent');logger[_0x7c80('0x21')](_0x7c80('0x22'),_0x3495fd,_0x7c80('0x23'),JSON[_0x7c80('0x24')](_0x2cb669));if(_0x2cb669[_0x7c80('0x25')]){if(_0x2cb669[_0x7c80('0x25')]['code']===0x1f4){logger[_0x7c80('0x25')](_0x7c80('0x26'),_0x3495fd,_0x2cb669['error'][_0x7c80('0x27')]);return _0x1e273d(_0x2cb669[_0x7c80('0x25')][_0x7c80('0x27')]);}logger[_0x7c80('0x25')]('ChatWebsite,\x20%s,\x20%s',_0x3495fd,_0x2cb669[_0x7c80('0x25')][_0x7c80('0x27')]);return _0xd59e76(_0x2cb669[_0x7c80('0x25')]['message']);}else{logger[_0x7c80('0x20')](_0x7c80('0x26'),_0x3495fd,_0x7c80('0x23'));_0xd59e76(_0x2cb669[_0x7c80('0x28')][_0x7c80('0x27')]);}})['catch'](function(_0x31dbae){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x3495fd,_0x31dbae);_0x1e273d(_0x31dbae);});});}function respondWithStatusCode(_0x78668b,_0x2fd455){_0x2fd455=_0x2fd455||0xcc;return function(_0x3de47e){if(_0x3de47e){return _0x78668b[_0x7c80('0x29')](_0x2fd455);}return _0x78668b[_0x7c80('0x2a')](_0x2fd455)[_0x7c80('0x2b')]();};}function respondWithResult(_0x2b62f3,_0x493ea4){_0x493ea4=_0x493ea4||0xc8;return function(_0x4f8dc4){if(_0x4f8dc4){return _0x2b62f3[_0x7c80('0x2a')](_0x493ea4)[_0x7c80('0x2c')](_0x4f8dc4);}};}function respondWithFilteredResult(_0x58caa7,_0x5b2047){return function(_0x2c7ff0){if(_0x2c7ff0){var _0xe7fbf5=typeof _0x5b2047[_0x7c80('0x2d')]===_0x7c80('0x2e')&&typeof _0x5b2047['limit']===_0x7c80('0x2e');var _0x2810bc=_0x2c7ff0['count'];var _0x29d058=_0xe7fbf5?0x0:_0x5b2047['offset'];var _0x18c3a6=_0xe7fbf5?_0x2c7ff0['count']:_0x5b2047[_0x7c80('0x2d')]+_0x5b2047[_0x7c80('0x2f')];var _0x3080f5;if(_0x18c3a6>=_0x2810bc){_0x18c3a6=_0x2810bc;_0x3080f5=0xc8;}else{_0x3080f5=0xce;}_0x58caa7[_0x7c80('0x2a')](_0x3080f5);return _0x58caa7[_0x7c80('0x30')]('Content-Range',_0x29d058+'-'+_0x18c3a6+'/'+_0x2810bc)['json'](_0x2c7ff0);}return null;};}function patchUpdates(_0xba07eb){return function(_0x515929){try{jsonpatch[_0x7c80('0x31')](_0x515929,_0xba07eb,!![]);}catch(_0x2c59d0){return BPromise[_0x7c80('0x32')](_0x2c59d0);}return _0x515929[_0x7c80('0x33')]();};}function saveUpdates(_0x41680b,_0x2c21b7){return function(_0x36741d){if(_0x36741d){return _0x36741d[_0x7c80('0x34')](_0x41680b)[_0x7c80('0x1f')](function(_0x296763){return _0x296763;});}return null;};}function removeEntity(_0x494e31,_0x8143e5){return function(_0x35b444){if(_0x35b444){return _0x35b444[_0x7c80('0x35')]()[_0x7c80('0x1f')](function(){var _0x395eed=_0x35b444['get']({'plain':!![]});var _0x24a8d8=_0x7c80('0x36');return db['UserProfileResource'][_0x7c80('0x35')]({'where':{'type':_0x24a8d8,'resourceId':_0x395eed['id']}})[_0x7c80('0x1f')](function(){return _0x35b444;});})[_0x7c80('0x1f')](function(){_0x494e31['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x27fa2f,_0xca290f){return function(_0x467011){if(!_0x467011){_0x27fa2f[_0x7c80('0x29')](0x194);}return _0x467011;};}function handleError(_0x2555e9,_0x45bac7){_0x45bac7=_0x45bac7||0x1f4;return function(_0x9d1766){logger['error'](_0x9d1766[_0x7c80('0x37')]);if(_0x9d1766[_0x7c80('0x38')]){delete _0x9d1766['name'];}_0x2555e9[_0x7c80('0x2a')](_0x45bac7)['send'](_0x9d1766);};}exports[_0x7c80('0x39')]=function(_0x2c1661,_0x30d7dc){var _0xfd9328={'include':[{'model':db['Pause'],'as':_0x7c80('0x3a')}]},_0xd0bf30={},_0x282f8c={'count':0x0,'rows':[]};var _0x3066bc=_[_0x7c80('0x3b')](db[_0x7c80('0x3c')][_0x7c80('0x3d')],function(_0x3ddb39){return{'name':_0x3ddb39[_0x7c80('0x3e')],'type':_0x3ddb39[_0x7c80('0x3f')][_0x7c80('0x40')]};});_0xd0bf30['model']=_[_0x7c80('0x3b')](_0x3066bc,_0x7c80('0x38'));_0xd0bf30[_0x7c80('0x41')]=_[_0x7c80('0x42')](_0x2c1661[_0x7c80('0x41')]);_0xd0bf30[_0x7c80('0x43')]=_[_0x7c80('0x44')](_0xd0bf30[_0x7c80('0x45')],_0xd0bf30['query']);_0xfd9328[_0x7c80('0x46')]=_[_0x7c80('0x44')](_0xd0bf30[_0x7c80('0x45')],qs[_0x7c80('0x47')](_0x2c1661['query'][_0x7c80('0x47')]));_0xfd9328[_0x7c80('0x46')]=_0xfd9328[_0x7c80('0x46')]['length']?_0xfd9328[_0x7c80('0x46')]:_0xd0bf30[_0x7c80('0x45')];if(!_0x2c1661[_0x7c80('0x41')][_0x7c80('0x48')](_0x7c80('0x49'))){_0xfd9328[_0x7c80('0x2f')]=qs[_0x7c80('0x2f')](_0x2c1661[_0x7c80('0x41')]['limit']);_0xfd9328['offset']=qs[_0x7c80('0x2d')](_0x2c1661[_0x7c80('0x41')][_0x7c80('0x2d')]);}_0xfd9328['order']=qs[_0x7c80('0x4a')](_0x2c1661['query'][_0x7c80('0x4a')]);_0xfd9328['where']=qs[_0x7c80('0x43')](_[_0x7c80('0x4b')](_0x2c1661[_0x7c80('0x41')],_0xd0bf30[_0x7c80('0x43')]),_0x3066bc);if(_0x2c1661[_0x7c80('0x41')][_0x7c80('0x4c')]){_0xfd9328[_0x7c80('0x4d')]=_[_0x7c80('0x4e')](_0xfd9328[_0x7c80('0x4d')],{'$or':_[_0x7c80('0x3b')](_0x3066bc,function(_0x496584){if(_0x496584[_0x7c80('0x3f')]!==_0x7c80('0x4f')){var _0x4fa7a1={};_0x4fa7a1[_0x496584[_0x7c80('0x38')]]={'$like':'%'+_0x2c1661[_0x7c80('0x41')][_0x7c80('0x4c')]+'%'};return _0x4fa7a1;}})});}_0xfd9328=_[_0x7c80('0x4e')]({},_0xfd9328,_0x2c1661['options']);var _0xdee3a0={'where':_0xfd9328[_0x7c80('0x4d')]};return db[_0x7c80('0x3c')][_0x7c80('0x50')](_0xdee3a0)[_0x7c80('0x1f')](function(_0x5743db){_0x282f8c[_0x7c80('0x50')]=_0x5743db;if(_0x2c1661[_0x7c80('0x41')][_0x7c80('0x51')]){_0xfd9328[_0x7c80('0x52')]=[{'all':!![]}];}return db[_0x7c80('0x3c')][_0x7c80('0x53')](_0xfd9328);})[_0x7c80('0x1f')](function(_0x52b162){_0x282f8c[_0x7c80('0x54')]=_0x52b162;return _0x282f8c;})['then'](respondWithFilteredResult(_0x30d7dc,_0xfd9328))['catch'](handleError(_0x30d7dc,null));};exports['show']=function(_0x11c20c,_0xa38425){var _0x26487c={'raw':![],'where':{'id':_0x11c20c[_0x7c80('0x55')]['id']},'include':[{'model':db['Pause'],'as':_0x7c80('0x3a')}]},_0x499824={};_0x499824[_0x7c80('0x45')]=_[_0x7c80('0x42')](db['ChatWebsite'][_0x7c80('0x3d')]);_0x499824[_0x7c80('0x41')]=_[_0x7c80('0x42')](_0x11c20c[_0x7c80('0x41')]);_0x499824[_0x7c80('0x43')]=_[_0x7c80('0x44')](_0x499824['model'],_0x499824[_0x7c80('0x41')]);_0x26487c['attributes']=_[_0x7c80('0x44')](_0x499824[_0x7c80('0x45')],qs[_0x7c80('0x47')](_0x11c20c[_0x7c80('0x41')][_0x7c80('0x47')]));_0x26487c[_0x7c80('0x46')]=_0x26487c[_0x7c80('0x46')][_0x7c80('0x56')]?_0x26487c['attributes']:_0x499824[_0x7c80('0x45')];if(_0x11c20c[_0x7c80('0x41')][_0x7c80('0x51')]){_0x26487c[_0x7c80('0x52')]=[{'all':!![]}];}_0x26487c=_['merge']({},_0x26487c,_0x11c20c[_0x7c80('0x57')]);return db[_0x7c80('0x3c')][_0x7c80('0x58')](_0x26487c)['then'](handleEntityNotFound(_0xa38425,null))[_0x7c80('0x1f')](respondWithResult(_0xa38425,null))[_0x7c80('0x59')](handleError(_0xa38425,null));};exports[_0x7c80('0x5a')]=function(_0x55d730,_0x49cddd){return db[_0x7c80('0x3c')][_0x7c80('0x5a')](_0x55d730['body'],{})[_0x7c80('0x1f')](function(_0x341e5f){var _0x40772b=_0x55d730[_0x7c80('0x5b')][_0x7c80('0x5c')]({'plain':!![]});if(!_0x40772b)throw new Error(_0x7c80('0x5d'));if(_0x40772b[_0x7c80('0x5e')]==='user'){var _0x3d6bbe=_0x341e5f[_0x7c80('0x5c')]({'plain':!![]});var _0x5c1c6f='ChatWebsites';return db[_0x7c80('0x5f')][_0x7c80('0x58')]({'where':{'name':_0x5c1c6f,'userProfileId':_0x40772b[_0x7c80('0x60')]},'raw':!![]})[_0x7c80('0x1f')](function(_0x59cf03){if(_0x59cf03&&_0x59cf03['autoAssociation']===0x0){return db[_0x7c80('0x61')][_0x7c80('0x5a')]({'name':_0x3d6bbe[_0x7c80('0x38')],'resourceId':_0x3d6bbe['id'],'type':_0x59cf03['name'],'sectionId':_0x59cf03['id']},{})[_0x7c80('0x1f')](function(){return _0x341e5f;});}else{return _0x341e5f;}})[_0x7c80('0x59')](function(_0x55fc63){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x55fc63);throw _0x55fc63;});}return _0x341e5f;})[_0x7c80('0x1f')](respondWithResult(_0x49cddd,0xc9))[_0x7c80('0x59')](handleError(_0x49cddd,null));};exports[_0x7c80('0x34')]=function(_0x39a620,_0x2163ea){if(_0x39a620[_0x7c80('0x62')]['id']){delete _0x39a620[_0x7c80('0x62')]['id'];}return db['ChatWebsite'][_0x7c80('0x58')]({'where':{'id':_0x39a620[_0x7c80('0x55')]['id']},'include':[{'model':db['Pause'],'as':_0x7c80('0x3a')}]})[_0x7c80('0x1f')](handleEntityNotFound(_0x2163ea,null))[_0x7c80('0x1f')](saveUpdates(_0x39a620['body'],null))['then'](respondWithResult(_0x2163ea,null))['catch'](handleError(_0x2163ea,null));};exports[_0x7c80('0x35')]=function(_0x450cb3,_0x1e3d97){return db['ChatWebsite'][_0x7c80('0x58')]({'where':{'id':_0x450cb3[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x1e3d97,null))[_0x7c80('0x1f')](removeEntity(_0x1e3d97,null))[_0x7c80('0x59')](handleError(_0x1e3d97,null));};exports[_0x7c80('0x63')]=function(_0xa2d399,_0x5cf073){return db['ChatWebsite'][_0x7c80('0x63')]()['then'](respondWithResult(_0x5cf073,null))[_0x7c80('0x59')](handleError(_0x5cf073,null));};exports[_0x7c80('0x64')]=function(_0x4d3d6f,_0x1ffa62,_0x542410){if(_0x4d3d6f[_0x7c80('0x62')]['id']){delete _0x4d3d6f['body']['id'];}return db[_0x7c80('0x3c')][_0x7c80('0x58')]({'where':{'id':_0x4d3d6f[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x1ffa62,null))['then'](function(_0x2d172c){if(_0x2d172c){_0x4d3d6f[_0x7c80('0x62')][_0x7c80('0x65')]=_0x2d172c['id'];return db[_0x7c80('0x66')][_0x7c80('0x5a')](_0x4d3d6f['body']);}})[_0x7c80('0x1f')](respondWithResult(_0x1ffa62,null))[_0x7c80('0x59')](handleError(_0x1ffa62,null));};exports['getDispositions']=function(_0x130a58,_0x3152b9,_0xd5af2b){var _0x1b2595={'raw':![],'where':{}};var _0x597e63={};var _0xd8d345={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x7c80('0x67')]({'where':{'id':_0x130a58['params']['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x3152b9,null))['then'](function(_0x3d0eea){if(_0x3d0eea){_0x597e63[_0x7c80('0x45')]=_['keys'](db[_0x7c80('0x66')][_0x7c80('0x3d')]);_0x597e63[_0x7c80('0x41')]=_[_0x7c80('0x42')](_0x130a58[_0x7c80('0x41')]);_0x597e63[_0x7c80('0x43')]=_[_0x7c80('0x44')](_0x597e63[_0x7c80('0x45')],_0x597e63[_0x7c80('0x41')]);_0x1b2595[_0x7c80('0x46')]=_[_0x7c80('0x44')](_0x597e63[_0x7c80('0x45')],qs[_0x7c80('0x47')](_0x130a58[_0x7c80('0x41')][_0x7c80('0x47')]));_0x1b2595[_0x7c80('0x46')]=_0x1b2595['attributes'][_0x7c80('0x56')]?_0x1b2595['attributes']:_0x597e63[_0x7c80('0x45')];if(!_0x130a58[_0x7c80('0x41')][_0x7c80('0x48')](_0x7c80('0x49'))){_0x1b2595[_0x7c80('0x2f')]=qs[_0x7c80('0x2f')](_0x130a58[_0x7c80('0x41')][_0x7c80('0x2f')]);_0x1b2595[_0x7c80('0x2d')]=qs['offset'](_0x130a58[_0x7c80('0x41')]['offset']);}_0x1b2595[_0x7c80('0x68')]=qs[_0x7c80('0x4a')](_0x130a58[_0x7c80('0x41')][_0x7c80('0x4a')]);_0x1b2595['where']=qs[_0x7c80('0x43')](_[_0x7c80('0x4b')](_0x130a58[_0x7c80('0x41')],_0x597e63[_0x7c80('0x43')]));_0x1b2595[_0x7c80('0x4d')][_0x7c80('0x65')]=_0x3d0eea['id'];if(_0x130a58[_0x7c80('0x41')][_0x7c80('0x4c')]){_0x1b2595['where']=_[_0x7c80('0x4e')](_0x1b2595[_0x7c80('0x4d')],{'$or':_[_0x7c80('0x3b')](_0x1b2595[_0x7c80('0x46')],function(_0x51804b){var _0x3bc3ea={};_0x3bc3ea[_0x51804b]={'$like':'%'+_0x130a58['query'][_0x7c80('0x4c')]+'%'};return _0x3bc3ea;})});}_0x1b2595=_[_0x7c80('0x4e')]({},_0x1b2595,_0x130a58[_0x7c80('0x57')]);return db[_0x7c80('0x66')][_0x7c80('0x50')]({'where':_0x1b2595[_0x7c80('0x4d')]})[_0x7c80('0x1f')](function(_0x7aa48a){_0xd8d345[_0x7c80('0x50')]=_0x7aa48a;if(_0x130a58[_0x7c80('0x41')][_0x7c80('0x51')]){_0x1b2595[_0x7c80('0x52')]=[{'all':!![]}];}return db[_0x7c80('0x66')][_0x7c80('0x53')](_0x1b2595);})[_0x7c80('0x1f')](function(_0x43f572){_0xd8d345['rows']=_0x43f572;return _0xd8d345;});}})[_0x7c80('0x1f')](respondWithFilteredResult(_0x3152b9,_0x1b2595))[_0x7c80('0x59')](handleError(_0x3152b9,null));};exports[_0x7c80('0x69')]=function(_0x2d295b,_0x4a0cf3,_0xb68a63){return db[_0x7c80('0x3c')][_0x7c80('0x58')]({'where':{'id':_0x2d295b[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x4a0cf3,null))[_0x7c80('0x1f')](function(_0x4c84a1){if(_0x4c84a1){return _0x4c84a1[_0x7c80('0x69')](_0x2d295b[_0x7c80('0x41')][_0x7c80('0x6a')]);}})['then'](respondWithStatusCode(_0x4a0cf3,null))['catch'](handleError(_0x4a0cf3,null));};exports[_0x7c80('0x6b')]=function(_0x14ef00,_0x21bb12,_0x5eafb9){if(_0x14ef00[_0x7c80('0x62')]['id']){delete _0x14ef00[_0x7c80('0x62')]['id'];}return db[_0x7c80('0x3c')][_0x7c80('0x58')]({'where':{'id':_0x14ef00['params']['id']}})['then'](handleEntityNotFound(_0x21bb12,null))[_0x7c80('0x1f')](function(_0xe9de8f){if(_0xe9de8f){_0x14ef00['body']['ChatWebsiteId']=_0xe9de8f['id'];return db[_0x7c80('0x6c')][_0x7c80('0x5a')](_0x14ef00[_0x7c80('0x62')]);}})[_0x7c80('0x1f')](respondWithResult(_0x21bb12,null))['catch'](handleError(_0x21bb12,null));};exports[_0x7c80('0x6d')]=function(_0x36d39e,_0x1130f5,_0xb48683){var _0x50e988={'raw':![],'where':{}};var _0x478e72={};var _0x4962b7={'count':0x0,'rows':[]};return db[_0x7c80('0x3c')][_0x7c80('0x67')]({'where':{'id':_0x36d39e['params']['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x1130f5,null))[_0x7c80('0x1f')](function(_0xc917b7){if(_0xc917b7){_0x478e72[_0x7c80('0x45')]=_[_0x7c80('0x42')](db['CannedAnswer'][_0x7c80('0x3d')]);_0x478e72[_0x7c80('0x41')]=_[_0x7c80('0x42')](_0x36d39e['query']);_0x478e72[_0x7c80('0x43')]=_[_0x7c80('0x44')](_0x478e72[_0x7c80('0x45')],_0x478e72[_0x7c80('0x41')]);_0x50e988['attributes']=_['intersection'](_0x478e72[_0x7c80('0x45')],qs['fields'](_0x36d39e[_0x7c80('0x41')][_0x7c80('0x47')]));_0x50e988['attributes']=_0x50e988[_0x7c80('0x46')][_0x7c80('0x56')]?_0x50e988[_0x7c80('0x46')]:_0x478e72[_0x7c80('0x45')];if(!_0x36d39e[_0x7c80('0x41')][_0x7c80('0x48')]('nolimit')){_0x50e988[_0x7c80('0x2f')]=qs['limit'](_0x36d39e[_0x7c80('0x41')][_0x7c80('0x2f')]);_0x50e988[_0x7c80('0x2d')]=qs['offset'](_0x36d39e[_0x7c80('0x41')][_0x7c80('0x2d')]);}_0x50e988[_0x7c80('0x68')]=qs['sort'](_0x36d39e[_0x7c80('0x41')]['sort']);_0x50e988[_0x7c80('0x4d')]=qs[_0x7c80('0x43')](_[_0x7c80('0x4b')](_0x36d39e[_0x7c80('0x41')],_0x478e72[_0x7c80('0x43')]));_0x50e988[_0x7c80('0x4d')][_0x7c80('0x65')]=_0xc917b7['id'];if(_0x36d39e[_0x7c80('0x41')][_0x7c80('0x4c')]){_0x50e988[_0x7c80('0x4d')]=_[_0x7c80('0x4e')](_0x50e988[_0x7c80('0x4d')],{'$or':_[_0x7c80('0x3b')](_0x50e988['attributes'],function(_0x2e3b26){var _0x3aea61={};_0x3aea61[_0x2e3b26]={'$like':'%'+_0x36d39e[_0x7c80('0x41')][_0x7c80('0x4c')]+'%'};return _0x3aea61;})});}_0x50e988=_[_0x7c80('0x4e')]({},_0x50e988,_0x36d39e['options']);return db[_0x7c80('0x6c')][_0x7c80('0x50')]({'where':_0x50e988[_0x7c80('0x4d')]})[_0x7c80('0x1f')](function(_0x210bbe){_0x4962b7[_0x7c80('0x50')]=_0x210bbe;if(_0x36d39e['query']['includeAll']){_0x50e988[_0x7c80('0x52')]=[{'all':!![]}];}return db['CannedAnswer'][_0x7c80('0x53')](_0x50e988);})[_0x7c80('0x1f')](function(_0x172102){_0x4962b7[_0x7c80('0x54')]=_0x172102;return _0x4962b7;});}})[_0x7c80('0x1f')](respondWithFilteredResult(_0x1130f5,_0x50e988))[_0x7c80('0x59')](handleError(_0x1130f5,null));};exports[_0x7c80('0x6e')]=function(_0x290f9e,_0x4601fb,_0x1f5686){return db[_0x7c80('0x3c')][_0x7c80('0x58')]({'where':{'id':_0x290f9e[_0x7c80('0x55')]['id']}})['then'](handleEntityNotFound(_0x4601fb,null))[_0x7c80('0x1f')](function(_0x5a01b7){if(_0x5a01b7){return _0x5a01b7['removeAnswers'](_0x290f9e['query'][_0x7c80('0x6a')]);}})[_0x7c80('0x1f')](respondWithStatusCode(_0x4601fb,null))[_0x7c80('0x59')](handleError(_0x4601fb,null));};exports[_0x7c80('0x6f')]=function(_0x3922a1,_0x520077,_0x1ee3bb){_0x3922a1[_0x7c80('0x62')][_0x7c80('0x70')]=_0x3922a1[_0x7c80('0x71')][_0x7c80('0x72')];return db[_0x7c80('0x3c')]['find']({'where':{'id':_0x3922a1[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x520077,null))[_0x7c80('0x1f')](saveUpdates(_0x3922a1[_0x7c80('0x62')],null))[_0x7c80('0x1f')](respondWithResult(_0x520077,null))['catch'](handleError(_0x520077,null));};exports[_0x7c80('0x73')]=function(_0xccbc70,_0x21a443,_0x308f02){_0xccbc70[_0x7c80('0x62')]['agentAvatar']=_0xccbc70['file'][_0x7c80('0x72')];return db[_0x7c80('0x3c')]['find']({'where':{'id':_0xccbc70[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x21a443,null))[_0x7c80('0x1f')](saveUpdates(_0xccbc70[_0x7c80('0x62')],null))[_0x7c80('0x1f')](respondWithResult(_0x21a443,null))[_0x7c80('0x59')](handleError(_0x21a443,null));};exports[_0x7c80('0x74')]=function(_0x2ec9ba,_0xe73c55,_0x463da6){_0x2ec9ba[_0x7c80('0x62')][_0x7c80('0x75')]=_0x2ec9ba[_0x7c80('0x71')][_0x7c80('0x72')];return db['ChatWebsite'][_0x7c80('0x58')]({'where':{'id':_0x2ec9ba[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0xe73c55,null))[_0x7c80('0x1f')](saveUpdates(_0x2ec9ba[_0x7c80('0x62')],null))['then'](respondWithResult(_0xe73c55,null))['catch'](handleError(_0xe73c55,null));};exports['addSystemAvatar']=function(_0x247f2b,_0x4caa59,_0x16ad87){_0x247f2b['body'][_0x7c80('0x76')]=_0x247f2b[_0x7c80('0x71')][_0x7c80('0x72')];return db[_0x7c80('0x3c')][_0x7c80('0x58')]({'where':{'id':_0x247f2b['params']['id']}})['then'](handleEntityNotFound(_0x4caa59,null))[_0x7c80('0x1f')](saveUpdates(_0x247f2b[_0x7c80('0x62')],null))['then'](respondWithResult(_0x4caa59,null))['catch'](handleError(_0x4caa59,null));};exports[_0x7c80('0x77')]=function(_0x462b47,_0x27d7e1,_0x108139){var _0x50970e=path[_0x7c80('0x78')](config[_0x7c80('0x79')],_0x7c80('0x7a'));var _0x530e14={'where':{'id':_0x462b47[_0x7c80('0x55')]['id']},'attributes':['id',_0x7c80('0x70')],'raw':!![]};var _0x1f3f5a=![];return require(_0x7c80('0x15'))[_0x7c80('0x7b')]()['then'](function(_0x5f2593){if(_0x5f2593){_0x1f3f5a=_0x5f2593[_0x7c80('0x7c')];}})[_0x7c80('0x1f')](function(){return db[_0x7c80('0x3c')][_0x7c80('0x58')](_0x530e14);})[_0x7c80('0x1f')](handleEntityNotFound(_0x27d7e1,null))[_0x7c80('0x1f')](function(_0x1da07e){if(_0x1da07e){if(!_[_0x7c80('0x7d')](_0x1da07e[_0x7c80('0x70')])){if(fs[_0x7c80('0x7e')](path[_0x7c80('0x78')](config[_0x7c80('0x79')],_0x7c80('0x7f'),_0x1da07e[_0x7c80('0x70')]))&&_0x1f3f5a){_0x50970e=path['join'](config[_0x7c80('0x79')],_0x7c80('0x7f'),_0x1da07e[_0x7c80('0x70')]);}}return _0x27d7e1[_0x7c80('0x80')](_0x50970e);}})[_0x7c80('0x59')](handleError(_0x27d7e1,null));};exports[_0x7c80('0x81')]=function(_0x339112,_0x198d95,_0x295d57){var _0xb58d61=path['join'](config['root'],_0x7c80('0x82'));var _0x257e22={'where':{'id':_0x339112[_0x7c80('0x55')]['id']},'attributes':['id',_0x7c80('0x83')],'raw':!![]};return db[_0x7c80('0x3c')][_0x7c80('0x58')](_0x257e22)[_0x7c80('0x1f')](handleEntityNotFound(_0x198d95,null))['then'](function(_0x242d5b){if(_0x242d5b){if(!_[_0x7c80('0x7d')](_0x242d5b[_0x7c80('0x83')])){if(fs[_0x7c80('0x7e')](path[_0x7c80('0x78')](config[_0x7c80('0x79')],_0x7c80('0x84'),_0x242d5b['agentAvatar']))){_0xb58d61=path[_0x7c80('0x78')](config['root'],_0x7c80('0x84'),_0x242d5b[_0x7c80('0x83')]);}}return _0x198d95['download'](_0xb58d61);}})[_0x7c80('0x59')](handleError(_0x198d95,null));};exports[_0x7c80('0x85')]=function(_0x4fb5db,_0x3b3f31,_0x380d13){var _0x3f1bb8=path[_0x7c80('0x78')](config['root'],_0x7c80('0x86'));var _0x251fc5={'where':{'id':_0x4fb5db[_0x7c80('0x55')]['id']},'attributes':['id',_0x7c80('0x75'),_0x7c80('0x87')],'raw':!![]};return db[_0x7c80('0x3c')][_0x7c80('0x58')](_0x251fc5)[_0x7c80('0x1f')](handleEntityNotFound(_0x3b3f31,null))['then'](function(_0x203063){if(_0x203063){if(!_[_0x7c80('0x7d')](_0x203063['customerAvatar'])){if(fs['existsSync'](path[_0x7c80('0x78')](config[_0x7c80('0x79')],_0x7c80('0x84'),_0x203063[_0x7c80('0x75')]))&&_0x203063[_0x7c80('0x87')]){_0x3f1bb8=path[_0x7c80('0x78')](config[_0x7c80('0x79')],_0x7c80('0x84'),_0x203063[_0x7c80('0x75')]);}}return _0x3b3f31['download'](_0x3f1bb8);}})[_0x7c80('0x59')](handleError(_0x3b3f31,null));};exports['getSystemAvatar']=function(_0x4f3fe9,_0x50a5c4,_0x96b8d6){var _0x569420=path['join'](config[_0x7c80('0x79')],_0x7c80('0x88'));var _0x1480ee={'where':{'id':_0x4f3fe9[_0x7c80('0x55')]['id']},'attributes':['id',_0x7c80('0x76')],'raw':!![]};return db[_0x7c80('0x3c')]['find'](_0x1480ee)['then'](handleEntityNotFound(_0x50a5c4,null))[_0x7c80('0x1f')](function(_0x57c3c6){if(_0x57c3c6){if(!_['isNil'](_0x57c3c6[_0x7c80('0x76')])){if(fs['existsSync'](path[_0x7c80('0x78')](config[_0x7c80('0x79')],_0x7c80('0x84'),_0x57c3c6[_0x7c80('0x76')]))){_0x569420=path[_0x7c80('0x78')](config[_0x7c80('0x79')],_0x7c80('0x84'),_0x57c3c6[_0x7c80('0x76')]);}}return _0x50a5c4[_0x7c80('0x80')](_0x569420);}})[_0x7c80('0x59')](handleError(_0x50a5c4,null));};exports['notify']=function(_0x9fa3d,_0x47cea9,_0xfa5e7b){var _0x4fc0d7=require('user-agent-parser');var _0x2726d2=new _0x4fc0d7();var _0x42ea0b=_0x2726d2[_0x7c80('0x89')](_0x9fa3d[_0x7c80('0x8a')][_0x7c80('0x8b')])[_0x7c80('0x8c')]();var _0x2ebe29={'body':_0x9fa3d['body'],'channel':'chat'};var _0x1272c3=[];var _0x4a8502=[];var _0x1e19b4={};var _0x3da5ba=![];return db[_0x7c80('0x8d')][_0x7c80('0x63')]()['then'](function(_0x111dec){if(!_0x111dec){throw new db[(_0x7c80('0x8e'))][(_0x7c80('0x8f'))](_0x7c80('0x90'));}_0x1272c3=_[_0x7c80('0x91')](_[_0x7c80('0x42')](_0x111dec),['createdAt',_0x7c80('0x92')]);_0x4a8502=_[_0x7c80('0x91')](_['keys'](_0x111dec),[_0x7c80('0x93'),_0x7c80('0x92'),_0x7c80('0x94'),'ListId']);if(_0x9fa3d[_0x7c80('0x62')]['id']){delete _0x9fa3d[_0x7c80('0x62')]['id'];}if(_[_0x7c80('0x7d')](_0x9fa3d['body'][_0x7c80('0x95')])){throw new db[(_0x7c80('0x8e'))][(_0x7c80('0x8f'))]('from\x20is\x20mandatory');}if(_[_0x7c80('0x7d')](_0x9fa3d[_0x7c80('0x62')][_0x7c80('0x62')])||_0x9fa3d['body'][_0x7c80('0x62')]===''){throw new db[(_0x7c80('0x8e'))][(_0x7c80('0x8f'))](_0x7c80('0x96'));}if(_[_0x7c80('0x7d')](_0x9fa3d[_0x7c80('0x62')][_0x7c80('0x97')])){throw new db[(_0x7c80('0x8e'))][(_0x7c80('0x8f'))](_0x7c80('0x98')+_0x4a8502);}if(!_[_0x7c80('0x99')](_0x4a8502,_0x9fa3d['body'][_0x7c80('0x97')])){throw new db[(_0x7c80('0x8e'))][(_0x7c80('0x8f'))](_0x7c80('0x9a')+_0x4a8502);}_0x1e19b4[_0x9fa3d[_0x7c80('0x62')][_0x7c80('0x97')]]=_0x9fa3d[_0x7c80('0x62')][_0x7c80('0x95')];})['then'](function(){return db['ChatWebsite'][_0x7c80('0x58')]({'where':{'id':_0x9fa3d['params']['id']},'include':[{'model':db['CmList'],'as':_0x7c80('0x9b'),'include':[{'model':db[_0x7c80('0x8d')],'as':_0x7c80('0x9c'),'where':_0x1e19b4,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0x7c80('0x9d')],'as':_0x7c80('0x9e')}]});})[_0x7c80('0x1f')](handleEntityNotFound(_0x47cea9,null))['then'](function(_0xc81598){if(_0xc81598&&_0xc81598['List']){_0x2ebe29[_0x7c80('0x9f')]=_0xc81598;_0x2ebe29['applications']=_0xc81598['Applications'];_0x2ebe29['list']=_0xc81598[_0x7c80('0x9b')];_0x2ebe29[_0x7c80('0xa0')]=_[_0x7c80('0xa1')](_0x2ebe29['applications'],[_0x7c80('0xa2')],[_0x7c80('0xa3')]);if(_0x2ebe29[_0x7c80('0x9f')][_0x7c80('0x9e')]){delete _0x2ebe29[_0x7c80('0x9f')][_0x7c80('0x9e')];}if(_0x2ebe29['account'][_0x7c80('0x9b')]&&_0x2ebe29['account'][_0x7c80('0x9b')]['Contacts'][_0x7c80('0x56')]){return _0x2ebe29[_0x7c80('0x9f')][_0x7c80('0x9b')][_0x7c80('0x9c')][0x0];}var _0x300871=_[_0x7c80('0x18')](_0x9fa3d[_0x7c80('0x62')],{'firstName':_0x9fa3d['body'][_0x7c80('0x95')],'ListId':_0xc81598[_0x7c80('0xa4')]});_0x300871[_0x9fa3d[_0x7c80('0x62')][_0x7c80('0x97')]]=_0x9fa3d[_0x7c80('0x62')]['from'];return db[_0x7c80('0x8d')][_0x7c80('0x5a')](_0x300871,{'fields':_0x1272c3,'raw':!![]});}})[_0x7c80('0x1f')](handleEntityNotFound(_0x47cea9,null))['then'](function(_0x212e0f){_0x2ebe29[_0x7c80('0xa5')]=_0x212e0f;var _0x1039da=_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xa6')];if(_0x9fa3d['headers']['cf-connecting-ip']){_0x1039da=_0x9fa3d[_0x7c80('0x8a')]['cf-connecting-ip'];}else if(_0x9fa3d[_0x7c80('0x8a')][_0x7c80('0xa7')]){_0x1039da=_['first'](_0x9fa3d[_0x7c80('0x8a')][_0x7c80('0xa7')][_0x7c80('0xa8')](','));}if(_0x212e0f){var _0x1297e0={'ContactId':_0x212e0f['id'],'ChatWebsiteId':_0x9fa3d['params']['id'],'from':(_0x212e0f['firstName']||'')+'\x20'+(_0x212e0f[_0x7c80('0xa9')]||''),'customerIp':_0x1039da,'customerPort':_0x9fa3d[_0x7c80('0x8a')][_0x7c80('0xaa')]?_0x9fa3d[_0x7c80('0x8a')][_0x7c80('0xaa')]:null,'referer':_0x9fa3d[_0x7c80('0x62')]['referer'],'browserName':_0x42ea0b[_0x7c80('0xab')][_0x7c80('0x38')]&&_0x42ea0b[_0x7c80('0xab')][_0x7c80('0xac')]?util['format']('%s\x20%s',_0x42ea0b['browser'][_0x7c80('0x38')],_0x42ea0b[_0x7c80('0xab')][_0x7c80('0xac')]):'unknown','browserVersion':_0x42ea0b[_0x7c80('0xab')][_0x7c80('0xac')]||_0x7c80('0xad'),'osName':util['format'](_0x7c80('0xae'),_0x42ea0b['os'][_0x7c80('0x38')],_0x42ea0b['os']['version']),'osVersion':_0x42ea0b['os'][_0x7c80('0xac')],'deviceModel':_0x42ea0b[_0x7c80('0xaf')]['model']&&_0x42ea0b[_0x7c80('0xaf')]['vendor']?util['format'](_0x7c80('0xb0'),_0x42ea0b[_0x7c80('0xaf')][_0x7c80('0x45')],_0x42ea0b[_0x7c80('0xaf')]['vendor'],_0x42ea0b['device'][_0x7c80('0x3f')]):null,'deviceVendor':_0x42ea0b[_0x7c80('0xaf')][_0x7c80('0xb1')],'deviceType':_0x42ea0b[_0x7c80('0xaf')][_0x7c80('0x3f')],'formData':JSON['stringify'](_0x9fa3d[_0x7c80('0x62')])};var _0x5d2913={'ChatWebsiteId':_0x9fa3d[_0x7c80('0x55')]['id'],'closed':![]};if(_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xb2')]){_0x5d2913[_0x7c80('0xb2')]=_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xb2')];return db[_0x7c80('0xb3')][_0x7c80('0x58')]({'where':_0x5d2913})[_0x7c80('0x1f')](function(_0x42acd4){if(_0x42acd4){return[_0x42acd4,![]];}_0x1297e0[_0x7c80('0xb2')]=_0x9fa3d['body'][_0x7c80('0xb2')];_0x1297e0['externalUrl']=_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xb4')];return db[_0x7c80('0xb3')][_0x7c80('0x5a')](_0x1297e0)[_0x7c80('0x1f')](function(_0x8c1896){return[_0x8c1896,!![]];});});}_0x5d2913[_0x7c80('0xb5')]=_0x212e0f['id'];if(_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xb6')]&&_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xb6')]['id']){_0x5d2913['id']=_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xb6')]['id'];return db[_0x7c80('0xb3')][_0x7c80('0x58')]({'where':_0x5d2913})[_0x7c80('0x1f')](function(_0x1cf94a){if(_0x1cf94a){return[_0x1cf94a,![]];}return db[_0x7c80('0xb3')]['create'](_0x1297e0)[_0x7c80('0x1f')](function(_0x470353){return[_0x470353,!![]];});});}return db[_0x7c80('0xb3')][_0x7c80('0x5a')](_0x1297e0)['then'](function(_0x46b268){return[_0x46b268,!![]];});}})['spread'](function(_0x4100ec,_0x43df33){if(_0x4100ec){_0x3da5ba=_0x43df33;if(!_0x43df33){var _0x918382={'from':(_0x2ebe29['contact']['firstName']||'')+'\x20'+(_0x2ebe29[_0x7c80('0xa5')][_0x7c80('0xa9')]||'')};if(_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xb2')]&&_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xb7')]&&_0x9fa3d[_0x7c80('0x62')]['threadId']!=_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xb7')]){_0x918382['threadId']=_0x9fa3d['body'][_0x7c80('0xb7')];}return _0x4100ec['update'](_0x918382);}else{return _0x4100ec;}}})[_0x7c80('0x1f')](function(_0x3c93da){_0x2ebe29[_0x7c80('0xb6')]=_0x3c93da['get']({'plain':!![]});_0x2ebe29[_0x7c80('0xb6')]['created']=_0x3da5ba;if(_0x2ebe29[_0x7c80('0xb6')][_0x7c80('0xb8')]){if(_0x2ebe29[_0x7c80('0x9f')][_0x7c80('0xb9')]){_0x2ebe29['applications'][_0x7c80('0xba')]({'id':0x0,'priority':_0x2ebe29[_0x7c80('0xa0')][_0x7c80('0x56')]+0x1,'app':_0x7c80('0xbb'),'appdata':_0x7c80('0xbc'),'interval':'*,*,*,*'});}}return db[_0x7c80('0xbd')][_0x7c80('0x5a')]({'body':_0x9fa3d[_0x7c80('0x62')][_0x7c80('0x62')],'ChatWebsiteId':_0x9fa3d[_0x7c80('0x55')]['id'],'ChatInteractionId':_0x3c93da['id'],'direction':'in','ContactId':_0x2ebe29[_0x7c80('0xa5')]['id'],'AttachmentId':_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xbe')]});})[_0x7c80('0x1f')](function(_0x126e89){_0x2ebe29[_0x7c80('0x27')]=_0x126e89;if(_0x2ebe29[_0x7c80('0xb6')]['UserId']){return db['User']['find']({'attributes':['id',_0x7c80('0x38')],'where':{'id':_0x2ebe29[_0x7c80('0xb6')][_0x7c80('0xbf')]}})[_0x7c80('0x1f')](function(_0x470e24){if(_0x470e24){_0x2ebe29['applications'][_0x7c80('0xc0')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x470e24[_0x7c80('0x38')]+','+(_0x2ebe29['account'][_0x7c80('0xc1')]||0xa),'interval':'*,*,*,*'});_0x2ebe29[_0x7c80('0xc2')]=!![];}return respondWithRpcPromise(_0x7c80('0xc3'),_0x7c80('0xc4'),_0x2ebe29);});}return respondWithRpcPromise(_0x7c80('0xc3'),'startRouting',_0x2ebe29);})['then'](function(_0x21a9f5){respondWithRpcPromise(_0x7c80('0xc5'),_0x7c80('0xc5'),{'event':_0x7c80('0xc6'),'message':_0x21a9f5},client9002);return _0x21a9f5;})[_0x7c80('0x1f')](respondWithResult(_0x47cea9,null))[_0x7c80('0x59')](handleError(_0x47cea9,null));};exports[_0x7c80('0xc7')]=function(_0x5f020b,_0x37c74d,_0x29f702){var _0x1b6e71,_0x2fcdac,_0x30790c;var _0x268629=[];var _0x7546b8=[];var _0x591d03={};var _0x216f7d=_0x5f020b[_0x7c80('0xc8')]||[];var _0x14890e=[];var _0x2eb302;return db[_0x7c80('0x8d')][_0x7c80('0x63')]()['then'](function(_0x30e6d9){if(!_0x30e6d9){throw new db['Sequelize'][(_0x7c80('0x8f'))](_0x7c80('0x90'));}_0x7546b8=_[_0x7c80('0x91')](_[_0x7c80('0x42')](_0x30e6d9),['createdAt',_0x7c80('0x92')]);_0x268629=_['difference'](_[_0x7c80('0x42')](_0x30e6d9),[_0x7c80('0x93'),_0x7c80('0x92'),_0x7c80('0x94'),_0x7c80('0xa4')]);if(_0x5f020b[_0x7c80('0x62')]['id']){delete _0x5f020b[_0x7c80('0x62')]['id'];}if(_[_0x7c80('0x7d')](_0x5f020b[_0x7c80('0x62')][_0x7c80('0x95')])){throw _0x37c74d[_0x7c80('0x2a')](0x1f4)['send'](new db[(_0x7c80('0x8e'))][(_0x7c80('0x8f'))](_0x7c80('0xc9')));}if(_[_0x7c80('0x7d')](_0x5f020b[_0x7c80('0x62')][_0x7c80('0x62')])||_0x5f020b['body']['body']===''){throw _0x37c74d[_0x7c80('0x2a')](0x1f4)[_0x7c80('0xca')](new db[(_0x7c80('0x8e'))][(_0x7c80('0x8f'))](_0x7c80('0x96')));}if(_[_0x7c80('0x7d')](_0x5f020b[_0x7c80('0x62')]['mapKeyOffline'])){throw _0x37c74d[_0x7c80('0x2a')](0x1f4)[_0x7c80('0xca')](new db[(_0x7c80('0x8e'))][(_0x7c80('0x8f'))](_0x7c80('0xcb')+_0x268629));}if(!_[_0x7c80('0x99')](_0x268629,_0x5f020b[_0x7c80('0x62')][_0x7c80('0xcc')])){throw _0x37c74d[_0x7c80('0x2a')](0x1f4)['send'](new db[(_0x7c80('0x8e'))][(_0x7c80('0x8f'))](_0x7c80('0xcd')+_0x268629));}_0x591d03[_0x5f020b[_0x7c80('0x62')][_0x7c80('0xcc')]]=_0x5f020b[_0x7c80('0x62')]['from'];})[_0x7c80('0x1f')](function(){return db[_0x7c80('0x3c')][_0x7c80('0x58')]({'where':{'id':_0x5f020b[_0x7c80('0x55')]['id']},'include':[{'model':db[_0x7c80('0xce')],'as':_0x7c80('0x9b')},{'model':db[_0x7c80('0xcf')],'as':_0x7c80('0xcf')}]});})[_0x7c80('0x1f')](handleEntityNotFound(_0x37c74d,null))[_0x7c80('0x1f')](function(_0x35087b){if(_0x35087b&&_0x35087b[_0x7c80('0x9b')]){_0x2fcdac=_0x35087b;var _0x283677=_['defaults'](_0x5f020b['body'],{'firstName':_0x5f020b[_0x7c80('0x62')][_0x7c80('0x95')],'phone':_0x5f020b['body'][_0x7c80('0x95')],'ListId':_0x35087b[_0x7c80('0xa4')]});_0x283677[_0x5f020b[_0x7c80('0x62')][_0x7c80('0xcc')]]=_0x5f020b[_0x7c80('0x62')][_0x7c80('0x95')];return db[_0x7c80('0x8d')][_0x7c80('0xd0')]({'where':_0x591d03,'defaults':_0x283677});}})['spread'](function(_0x58be84){if(_0x58be84){_0x30790c=_0x58be84;var _0x2ed612=fs[_0x7c80('0xd1')](path['join'](config[_0x7c80('0x79')],_0x7c80('0xd2')),_0x7c80('0xd3'));var _0x5d4eb7=ejs[_0x7c80('0xd4')](_0x2ed612,{'body':_[_0x7c80('0xd5')](_0x5f020b[_0x7c80('0x62')][_0x7c80('0x62')]),'bodyTitle':_0x2fcdac[_0x7c80('0xd6')]});return db['ChatOfflineMessage'][_0x7c80('0x5a')]({'body':_0x5d4eb7,'ContactId':_0x58be84['id'],'ChatWebsiteId':_0x2fcdac['id']});}})[_0x7c80('0x1f')](function(_0x4982d5){_0x2eb302=_0x4982d5;if(_0x216f7d[_0x7c80('0x56')]){var _0x39dec2=_0x216f7d[_0x7c80('0x3b')](function(_0x22183c){return{'name':_0x22183c[_0x7c80('0xd7')],'basename':_0x22183c[_0x7c80('0x72')],'type':_0x22183c[_0x7c80('0xd8')],'ChatOfflineMessageId':_0x4982d5['id']};});_0x14890e=_0x39dec2[_0x7c80('0x3b')](_0x3c60c1=>{var _0x405ace={'filename':_0x3c60c1[_0x7c80('0x38')],'path':path[_0x7c80('0x78')](config[_0x7c80('0x79')],_0x7c80('0xd9'),_0x7c80('0xc8'),_0x7c80('0xda'),'offline-chat',_0x3c60c1[_0x7c80('0xdb')])};return _0x405ace;});if(!_0x2fcdac['openNewInteraction']){return db[_0x7c80('0xdc')][_0x7c80('0xdd')](function(_0x45040d){return db['Attachment']['bulkCreate'](_0x39dec2,{'transaction':_0x45040d});});}}})[_0x7c80('0x1f')](function(){if(_0x2eb302){_0x1b6e71=_0x2eb302;return db[_0x7c80('0xcf')][_0x7c80('0x67')]({'where':{'active':!![]},'include':[{'model':db[_0x7c80('0xde')],'as':_0x7c80('0xdf'),'raw':!![]}]});}})[_0x7c80('0x1f')](function(_0x19bffb){if(_0x19bffb&&_0x19bffb[_0x7c80('0xdf')]&&_0x2fcdac['forwardOffline']&&_0x2fcdac['forwardOfflineAddress']){var _0x46c2f0={'tls':{'rejectUnauthorized':![]}};if(_0x19bffb[_0x7c80('0xdf')][_0x7c80('0xe0')]){_0x46c2f0[_0x7c80('0xe0')]=_0x19bffb['Smtp']['service'];}else{_0x46c2f0[_0x7c80('0xe1')]=_0x19bffb[_0x7c80('0xdf')][_0x7c80('0xe1')];_0x46c2f0['port']=_0x19bffb[_0x7c80('0xdf')][_0x7c80('0xe2')];_0x46c2f0[_0x7c80('0xe3')]=_0x19bffb[_0x7c80('0xdf')][_0x7c80('0xe3')];}if(_0x19bffb[_0x7c80('0xdf')][_0x7c80('0xe4')]){_0x46c2f0['auth']={'user':_0x19bffb[_0x7c80('0xdf')]['user'],'pass':_0x19bffb[_0x7c80('0xdf')][_0x7c80('0xe5')]};}return respondWithRpcPromise('SendMail','sendMail',{'account':_0x46c2f0,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x19bffb[_0x7c80('0x38')],_0x19bffb['email']||_0x19bffb['Smtp'][_0x7c80('0x5b')]),'to':_0x2fcdac[_0x7c80('0xe6')],'subject':_0x2fcdac[_0x7c80('0xe7')],'html':_0x1b6e71[_0x7c80('0x62')],'attachments':_0x14890e}},client9003)[_0x7c80('0x1f')](function(){return _0x1b6e71;})[_0x7c80('0x59')](function(_0x41bc97){console[_0x7c80('0x25')](_0x41bc97);});}})[_0x7c80('0x1f')](function(){if(_0x2fcdac&&_0x2fcdac[_0x7c80('0xe8')]&&_0x2fcdac['MailAccountId']){var _0xbaca7b=[];if(_0x216f7d[_0x7c80('0x56')]){_0xbaca7b=_0x216f7d[_0x7c80('0x3b')](function(_0x4dc6f8){return{'name':_0x4dc6f8[_0x7c80('0xd7')],'basename':_0x4dc6f8[_0x7c80('0x72')],'type':_0x4dc6f8['mimetype'],'ChatOfflineMessageId':_0x2eb302['id']};});}var _0x5773c8;if(!_[_0x7c80('0x7d')](_0x2fcdac[_0x7c80('0xe9')])){var _0xb5d76d=_['map'](_0x5f020b['body'],function(_0x4f7b0c){return _0x4f7b0c;});var _0x153f68=_[_0x7c80('0xea')](_0xb5d76d)[0x0];var _0x1d00bf=_['mapValues'](_0x153f68,function(_0x3b5e3f){return _0x3b5e3f;});_0x5773c8=_0x1d00bf[0x1][_0x2fcdac[_0x7c80('0xe9')]];}var _0x2b8f94={'from':_0x30790c[_0x7c80('0xeb')],'firstName':_0x30790c['firstName'],'lastName':_0x30790c['lastName'],'mapKey':'email','message':{'from':_0x30790c[_0x7c80('0xeb')],'to':_0x2fcdac['MailAccount']['email'],'cc':'','subject':_[_0x7c80('0x7d')](_0x5773c8)?_0x2fcdac['offlineMessageSubject']:_0x5773c8,'messageId':'','sentAt':new Date(),'attach':_0xbaca7b[_0x7c80('0x56')],'attachments':_0xbaca7b,'originChannel':_0x7c80('0xec'),'ChatWebsiteId':_0x2fcdac['id'],'ChatOfflineMessageId':_0x1b6e71['id'],'originTo':_0x2fcdac[_0x7c80('0xcf')][_0x7c80('0xeb')]},'body':_0x1b6e71['body']};var _0x1c4011={'account':{'id':_0x2fcdac['MailAccountId']},'body':_0x2b8f94,'log':'NotifyMailAccount'};return respondWithRpcPromise('NotifyMailAccount',_0x7c80('0xed'),_0x1c4011,client9001)[_0x7c80('0x1f')](function(){return _0x1b6e71;})[_0x7c80('0x59')](function(_0xb736fe){console[_0x7c80('0x25')](_0xb736fe);});}return;})[_0x7c80('0x1f')](function(){if(_0x1b6e71){return _0x1b6e71;}})[_0x7c80('0x1f')](respondWithResult(_0x37c74d,null))[_0x7c80('0x59')](function(_0x1d6d5c){console[_0x7c80('0x25')](_0x7c80('0x59'),_0x1d6d5c);for(var _0x43dd94 of _0x216f7d){var _0x3d119d=path[_0x7c80('0x78')](config[_0x7c80('0x79')],_0x7c80('0xd9'),_0x7c80('0xc8'),_0x7c80('0xda'),_0x7c80('0xee'),_0x43dd94[_0x7c80('0x72')]);fs_extra[_0x7c80('0xef')](_0x3d119d)[_0x7c80('0x59')](function(_0x42f702){console['error'](_0x7c80('0xf0'),_0x3d119d,_0x42f702);});}});};exports['addInteraction']=function(_0x5bd3e8,_0x57897e,_0x5f3a74){return db[_0x7c80('0xb3')][_0x7c80('0x58')]({'where':{'id':_0x5bd3e8['params']['id']}})['then'](handleEntityNotFound(_0x57897e,null))['then'](function(_0x30ec33){if(_0x30ec33){return _0x30ec33[_0x7c80('0xf1')](_0x5bd3e8['body'][_0x7c80('0x6a')],_[_0x7c80('0xf2')](_0x5bd3e8['body'],[_0x7c80('0x6a'),'id'])||{});}})[_0x7c80('0x1f')](respondWithResult(_0x57897e,null))[_0x7c80('0x59')](handleError(_0x57897e,null));};exports[_0x7c80('0xf3')]=function(_0x16d73a,_0xfe039a,_0x1f1375){var _0xb792ac={'raw':![],'where':{}};var _0x15cf6d={};var _0x26593f={'count':0x0,'rows':[]};return db[_0x7c80('0x3c')]['findOne']({'where':{'id':_0x16d73a[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0xfe039a,null))[_0x7c80('0x1f')](function(_0xc49a1f){if(_0xc49a1f){_0x15cf6d[_0x7c80('0x45')]=_[_0x7c80('0x42')](db[_0x7c80('0xb3')][_0x7c80('0x3d')]);_0x15cf6d[_0x7c80('0x41')]=_['keys'](_0x16d73a[_0x7c80('0x41')]);_0x15cf6d['filters']=_[_0x7c80('0x44')](_0x15cf6d['model'],_0x15cf6d[_0x7c80('0x41')]);_0xb792ac[_0x7c80('0x46')]=_[_0x7c80('0x44')](_0x15cf6d[_0x7c80('0x45')],qs[_0x7c80('0x47')](_0x16d73a[_0x7c80('0x41')][_0x7c80('0x47')]));_0xb792ac['attributes']=_0xb792ac['attributes'][_0x7c80('0x56')]?_0xb792ac['attributes']:_0x15cf6d[_0x7c80('0x45')];if(!_0x16d73a[_0x7c80('0x41')][_0x7c80('0x48')](_0x7c80('0x49'))){_0xb792ac[_0x7c80('0x2f')]=qs[_0x7c80('0x2f')](_0x16d73a[_0x7c80('0x41')]['limit']);_0xb792ac['offset']=qs['offset'](_0x16d73a[_0x7c80('0x41')]['offset']);}_0xb792ac[_0x7c80('0x68')]=qs['sort'](_0x16d73a['query'][_0x7c80('0x4a')]);_0xb792ac[_0x7c80('0x4d')]=qs[_0x7c80('0x43')](_[_0x7c80('0x4b')](_0x16d73a[_0x7c80('0x41')],_0x15cf6d[_0x7c80('0x43')]));_0xb792ac[_0x7c80('0x4d')][_0x7c80('0x65')]=_0xc49a1f['id'];if(_0x16d73a['query'][_0x7c80('0x4c')]){_0xb792ac[_0x7c80('0x4d')]=_[_0x7c80('0x4e')](_0xb792ac[_0x7c80('0x4d')],{'$or':_[_0x7c80('0x3b')](_0xb792ac[_0x7c80('0x46')],function(_0x40f6d5){var _0x540309={};_0x540309[_0x40f6d5]={'$like':'%'+_0x16d73a[_0x7c80('0x41')]['filter']+'%'};return _0x540309;})});}_0xb792ac=_[_0x7c80('0x4e')]({},_0xb792ac,_0x16d73a[_0x7c80('0x57')]);return db[_0x7c80('0xb3')][_0x7c80('0x50')]({'where':_0xb792ac[_0x7c80('0x4d')]})[_0x7c80('0x1f')](function(_0x2a70e1){_0x26593f[_0x7c80('0x50')]=_0x2a70e1;if(_0x16d73a[_0x7c80('0x41')][_0x7c80('0x51')]){_0xb792ac['include']=[{'model':db[_0x7c80('0x8d')],'as':_0x7c80('0xf4'),'required':![]},{'model':db[_0x7c80('0xf5')],'as':_0x7c80('0xf6'),'attributes':['name',_0x7c80('0xf7'),_0x7c80('0xf8')],'required':![]},{'model':db[_0x7c80('0xf9')],'as':'Tags','attributes':['id',_0x7c80('0x38'),_0x7c80('0xfa')],'where':_0x16d73a[_0x7c80('0x41')][_0x7c80('0xfb')]?{'id':_0x16d73a['query']['tag']}:undefined,'required':_0x16d73a[_0x7c80('0x41')]['tag']?!![]:![]}];}return db['ChatInteraction'][_0x7c80('0x53')](_0xb792ac);})['then'](function(_0x1ee03e){_0x26593f[_0x7c80('0x54')]=_0x1ee03e;return _0x26593f;});}})[_0x7c80('0x1f')](respondWithFilteredResult(_0xfe039a,_0xb792ac))[_0x7c80('0x59')](handleError(_0xfe039a,null));};function iftimePromise(_0x5ede0f,_0x4196e7){return respondWithRpcPromise(_0x7c80('0xfc'),_0x7c80('0xfd'),{'command':_0x4196e7[_0x7c80('0xfe')]?util[_0x7c80('0xff')](_0x7c80('0x100'),_0x5ede0f[_0x7c80('0x101')],_0x4196e7[_0x7c80('0xfe')]):util[_0x7c80('0xff')]('iftime\x20%s',_0x5ede0f[_0x7c80('0x101')])},client9002)['then'](function(_0x3be28f){var _0x38f164=_0x3be28f&&_0x3be28f[_0x7c80('0x102')](_0x7c80('0x103'))>=0x0?!![]:![];logger[_0x7c80('0x20')](_0x7c80('0x104'),_0x4196e7['id'],_0x5ede0f['id'],_0x5ede0f[_0x7c80('0x101')],_0x38f164?_0x7c80('0x105'):_0x7c80('0x106'),_0x4196e7[_0x7c80('0xfe')]?_0x4196e7[_0x7c80('0xfe')]:_0x7c80('0x107'));return _0x38f164;})['catch'](function(_0x6ac16){logger['error'](_0x7c80('0x104'),_0x4196e7['id'],_0x5ede0f['id'],_0x5ede0f[_0x7c80('0x101')],util[_0x7c80('0x108')](_0x6ac16,{'showHidden':![],'depth':null}),_0x4196e7['timezone']?_0x4196e7[_0x7c80('0xfe')]:_0x7c80('0x107'));return![];});}exports[_0x7c80('0xfd')]=function(_0x582a72,_0x243dd9,_0x528b89){var _0x29838e=0x0;var _0x49e673=0x0;var _0xc489e9=![];var _0x1b0f1e;var _0x3b7b00;return db[_0x7c80('0x3c')][_0x7c80('0x58')]({'where':{'id':_0x582a72[_0x7c80('0x55')]['id']},'include':[{'model':db['Interval'],'as':_0x7c80('0x109'),'include':[{'model':db[_0x7c80('0x109')],'as':_0x7c80('0x10a'),'attributes':['id',_0x7c80('0x101')],'raw':!![]}]}]})[_0x7c80('0x1f')](handleEntityNotFound(_0x243dd9,null))['then'](function(_0x5320f5){if(_0x5320f5){_0x1b0f1e=_0x5320f5;return _0x5320f5[_0x7c80('0x10b')]({'raw':!![]});}})[_0x7c80('0x1f')](function(_0x1f63df){if(_0x1b0f1e){if(_0x1f63df){_0x3b7b00=_0x1f63df;}}return require(_0x7c80('0x15'))[_0x7c80('0x7b')]();})[_0x7c80('0x1f')](function(_0x3f9e67){if(_0x3f9e67){_0x49e673=_0x3f9e67['virtual'];_0xc489e9=_0x3f9e67['custom'];}})[_0x7c80('0x1f')](function(){return db[_0x7c80('0xb3')][_0x7c80('0x50')]({'where':{'closed':![]}});})[_0x7c80('0x1f')](function(_0x9447b8){_0x29838e=_0x9447b8;if(_0x49e673&&_0x9447b8>_0x49e673){return db[_0x7c80('0x10c')][_0x7c80('0x67')]({'where':{'id':0x1}})[_0x7c80('0x1f')](function(_0x521101){if(_0x521101){_0x521101['increment'](_0x7c80('0x10d'));}});}})[_0x7c80('0x1f')](function(){if(_0x1b0f1e[_0x7c80('0x109')]&&_0x1b0f1e[_0x7c80('0x109')][_0x7c80('0x10a')]){var _0x274562=[];for(var _0x162b0a=0x0;_0x162b0a<_0x1b0f1e[_0x7c80('0x109')][_0x7c80('0x10a')][_0x7c80('0x56')];_0x162b0a++){var _0x5ce8dd=_0x1b0f1e['Interval'][_0x7c80('0x10a')][_0x162b0a][_0x7c80('0x5c')]({'plain':!![]});_0x274562[_0x7c80('0xba')](iftimePromise(_0x5ce8dd,_0x1b0f1e));}return BPromise['all'](_0x274562)[_0x7c80('0x1f')](function(_0x1c8c80){return _[_0x7c80('0x10e')](_0x1c8c80);});}else{return!![];}})[_0x7c80('0x1f')](function(_0x1a5cb7){var _0xb2bca8=fs[_0x7c80('0xd1')](path[_0x7c80('0x78')](config[_0x7c80('0x79')],'server/files/chat/iframe.ejs'),_0x7c80('0xd3'));var _0xda73e7={'remote':_0x1b0f1e[_0x7c80('0x10f')],'query':querystring[_0x7c80('0x24')](_[_0x7c80('0x4e')](_0x1b0f1e[_0x7c80('0x5c')]({'plain':!![]}),{'customerIp':_0x582a72[_0x7c80('0x8a')][_0x7c80('0xa7')]||_0x582a72[_0x7c80('0x8a')][_0x7c80('0x110')]||_0x582a72[_0x7c80('0x111')][_0x7c80('0x112')]||_0x582a72['ip'],'referer':_0x582a72[_0x7c80('0x8a')]['referer'],'openedInteractions':_0x29838e,'maxInteractions':_0x49e673,'virtual':_0xc489e9['virtual'],'online':_0x1a5cb7,'custom':_0xc489e9}))[_0x7c80('0x113')](/'/g,'\x5c\x27')};_0x243dd9[_0x7c80('0xca')](ejs[_0x7c80('0xd4')](Mustache['render'](_0xb2bca8,_0xda73e7),{'proactiveActions':_0x3b7b00,'alignment':_0x1b0f1e[_0x7c80('0x114')],'verticalAlignment':_0x1b0f1e[_0x7c80('0x115')],'div_color':_0x1b0f1e['color'],'text_color':_0x1b0f1e[_0x7c80('0x116')],'button_color':_0x1b0f1e[_0x7c80('0x117')],'background_color':_0x1b0f1e[_0x7c80('0x118')]}));})['catch'](handleError(_0x243dd9,null));};exports[_0x7c80('0x119')]=function(_0x2f670c,_0x4c8384,_0xd33686){return db[_0x7c80('0x3c')]['findOne']({'where':{'id':_0x2f670c['params']['id']}})['then'](handleEntityNotFound(_0x4c8384,null))[_0x7c80('0x1f')](function(_0x2e4ab8){if(_0x2e4ab8){return db['sequelize']['transaction'](function(_0x361030){return db[_0x7c80('0x9d')][_0x7c80('0x35')]({'where':{'ChatWebsiteId':_0x2f670c['params']['id']},'transaction':_0x361030})['then'](function(_0x506d5d){var _0x39006a=_['map'](_0x2f670c[_0x7c80('0x62')],function(_0x5ebca5){_0x5ebca5[_0x7c80('0x65')]=_0x2f670c[_0x7c80('0x55')]['id'];return _0x5ebca5;});return db[_0x7c80('0x9d')][_0x7c80('0x11a')](_0x39006a,{'transaction':_0x361030});});})[_0x7c80('0x1f')](function(){return db['ChatApplication'][_0x7c80('0x11b')]({'where':{'ChatWebsiteId':_0x2f670c[_0x7c80('0x55')]['id']},'order':_0x7c80('0xa2')});});}})[_0x7c80('0x1f')](respondWithResult(_0x4c8384,null))[_0x7c80('0x59')](handleError(_0x4c8384,null));};exports['getApplications']=function(_0x3f17d9,_0x1337f2,_0x2a71ba){var _0x206a5d={};var _0x4a3d90={};var _0x35c7dc;var _0x5edb34;return db['ChatWebsite']['findOne']({'where':{'id':_0x3f17d9[_0x7c80('0x55')]['id']}})['then'](handleEntityNotFound(_0x1337f2,null))[_0x7c80('0x1f')](function(_0x3440df){if(_0x3440df){_0x35c7dc=_0x3440df;_0x4a3d90[_0x7c80('0x45')]=_['keys'](db[_0x7c80('0x9d')][_0x7c80('0x3d')]);_0x4a3d90['query']=_[_0x7c80('0x42')](_0x3f17d9[_0x7c80('0x41')]);_0x4a3d90['filters']=_[_0x7c80('0x44')](_0x4a3d90[_0x7c80('0x45')],_0x4a3d90['query']);_0x206a5d[_0x7c80('0x46')]=_[_0x7c80('0x44')](_0x4a3d90[_0x7c80('0x45')],qs[_0x7c80('0x47')](_0x3f17d9[_0x7c80('0x41')][_0x7c80('0x47')]));_0x206a5d[_0x7c80('0x46')]=_0x206a5d[_0x7c80('0x46')]['length']?_0x206a5d[_0x7c80('0x46')]:_0x4a3d90[_0x7c80('0x45')];_0x206a5d['order']=qs[_0x7c80('0x4a')](_0x3f17d9['query']['sort']);_0x206a5d['where']=qs[_0x7c80('0x43')](_['pick'](_0x3f17d9['query'],_0x4a3d90['filters']));if(_0x3f17d9[_0x7c80('0x41')][_0x7c80('0x4c')]){_0x206a5d[_0x7c80('0x4d')]=_[_0x7c80('0x4e')](_0x206a5d[_0x7c80('0x4d')],{'$or':_['map'](_0x206a5d[_0x7c80('0x46')],function(_0x1a1d31){var _0x51f840={};_0x51f840[_0x1a1d31]={'$like':'%'+_0x3f17d9[_0x7c80('0x41')]['filter']+'%'};return _0x51f840;})});}_0x206a5d=_[_0x7c80('0x4e')]({},_0x206a5d,_0x3f17d9[_0x7c80('0x57')]);return _0x35c7dc[_0x7c80('0x11c')](_0x206a5d);}})[_0x7c80('0x1f')](function(_0x572bed){if(_0x572bed){_0x5edb34=_0x572bed[_0x7c80('0x56')];if(!_0x3f17d9[_0x7c80('0x41')][_0x7c80('0x48')](_0x7c80('0x49'))){_0x206a5d[_0x7c80('0x2f')]=qs[_0x7c80('0x2f')](_0x3f17d9[_0x7c80('0x41')][_0x7c80('0x2f')]);_0x206a5d[_0x7c80('0x2d')]=qs[_0x7c80('0x2d')](_0x3f17d9[_0x7c80('0x41')][_0x7c80('0x2d')]);}return _0x35c7dc[_0x7c80('0x11c')](_0x206a5d);}})[_0x7c80('0x1f')](function(_0x187f9c){if(_0x187f9c){return _0x187f9c?{'count':_0x5edb34,'rows':_0x187f9c}:null;}})[_0x7c80('0x1f')](respondWithResult(_0x1337f2,null))[_0x7c80('0x59')](handleError(_0x1337f2,null));};exports['addProactiveActions']=function(_0xb959e4,_0x4ed04b,_0x518807){return db['chatProactiveAction']['find']({'where':{'id':_0xb959e4[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x4ed04b,null))['then'](function(_0x4157c6){if(_0x4157c6){return _0x4157c6[_0x7c80('0x11d')](_0xb959e4[_0x7c80('0x62')][_0x7c80('0x6a')],_[_0x7c80('0xf2')](_0xb959e4[_0x7c80('0x62')],['ids','id'])||{});}})['then'](respondWithResult(_0x4ed04b,null))[_0x7c80('0x59')](handleError(_0x4ed04b,null));};exports[_0x7c80('0x10b')]=function(_0x699d3d,_0x6d634b,_0x4261e5){var _0x2c3117={};var _0x4f49de={};var _0x203b58;var _0x542b13;return db[_0x7c80('0x3c')][_0x7c80('0x67')]({'where':{'id':_0x699d3d[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x6d634b,null))[_0x7c80('0x1f')](function(_0x5429bd){if(_0x5429bd){_0x203b58=_0x5429bd;_0x4f49de[_0x7c80('0x45')]=_[_0x7c80('0x42')](db['ChatProactiveAction'][_0x7c80('0x3d')]);_0x4f49de[_0x7c80('0x41')]=_['keys'](_0x699d3d[_0x7c80('0x41')]);_0x4f49de[_0x7c80('0x43')]=_[_0x7c80('0x44')](_0x4f49de[_0x7c80('0x45')],_0x4f49de[_0x7c80('0x41')]);_0x2c3117[_0x7c80('0x46')]=_[_0x7c80('0x44')](_0x4f49de[_0x7c80('0x45')],qs[_0x7c80('0x47')](_0x699d3d[_0x7c80('0x41')][_0x7c80('0x47')]));_0x2c3117[_0x7c80('0x46')]=_0x2c3117[_0x7c80('0x46')]['length']?_0x2c3117[_0x7c80('0x46')]:_0x4f49de[_0x7c80('0x45')];_0x2c3117[_0x7c80('0x68')]=qs[_0x7c80('0x4a')](_0x699d3d[_0x7c80('0x41')]['sort']);_0x2c3117['where']=qs[_0x7c80('0x43')](_[_0x7c80('0x4b')](_0x699d3d[_0x7c80('0x41')],_0x4f49de['filters']));if(_0x699d3d[_0x7c80('0x41')]['filter']){_0x2c3117[_0x7c80('0x4d')]=_[_0x7c80('0x4e')](_0x2c3117[_0x7c80('0x4d')],{'$or':_['map'](_0x2c3117[_0x7c80('0x46')],function(_0x1b596f){var _0x526a26={};_0x526a26[_0x1b596f]={'$like':'%'+_0x699d3d[_0x7c80('0x41')][_0x7c80('0x4c')]+'%'};return _0x526a26;})});}_0x2c3117=_[_0x7c80('0x4e')]({},_0x2c3117,_0x699d3d['options']);return _0x203b58[_0x7c80('0x10b')](_0x2c3117);}})[_0x7c80('0x1f')](function(_0x157018){if(_0x157018){_0x542b13=_0x157018[_0x7c80('0x56')];if(!_0x699d3d[_0x7c80('0x41')][_0x7c80('0x48')](_0x7c80('0x49'))){_0x2c3117[_0x7c80('0x2f')]=qs[_0x7c80('0x2f')](_0x699d3d['query'][_0x7c80('0x2f')]);_0x2c3117[_0x7c80('0x2d')]=qs['offset'](_0x699d3d['query'][_0x7c80('0x2d')]);}return _0x203b58[_0x7c80('0x10b')](_0x2c3117);}})[_0x7c80('0x1f')](function(_0x4dcc7f){if(_0x4dcc7f){return _0x4dcc7f?{'count':_0x542b13,'rows':_0x4dcc7f}:null;}})['then'](respondWithResult(_0x6d634b,null))[_0x7c80('0x59')](handleError(_0x6d634b,null));};exports[_0x7c80('0x11e')]=function(_0x46ee1c,_0x34736b,_0x38857f){var _0x435c23=_0x46ee1c['query']['online']===_0x7c80('0x11f')?'offlineForm':_0x7c80('0x120');return db[_0x7c80('0x3c')][_0x7c80('0x58')]({'attributes':['id',_0x435c23],'where':{'id':_0x46ee1c[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x34736b,null))[_0x7c80('0x1f')](function(_0x8de693){if(_0x8de693){var _0x3e99bb=_0x8de693[_0x435c23];var _0x25875d=_0x3e99bb&&_0x3e99bb[_0x7c80('0x121')]?_0x3e99bb[_0x7c80('0x121')]:[];_0x34736b[_0x7c80('0xca')]({'fromKey':_[_0x7c80('0x7d')](_0x3e99bb[_0x7c80('0x122')])?undefined:_0x3e99bb['fromKey'],'count':_0x25875d[_0x7c80('0x56')],'rows':_0x25875d});}})['catch'](handleError(_0x34736b,null));};exports[_0x7c80('0x123')]=function(_0x45333b,_0x11a34d,_0xa9f706){var _0x5b1c84={'raw':![],'where':{}};var _0x5c1c8a={};var _0x183723={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x7c80('0x67')]({'where':{'id':_0x45333b[_0x7c80('0x55')]['id']}})['then'](handleEntityNotFound(_0x11a34d,null))[_0x7c80('0x1f')](function(_0x468af6){if(_0x468af6){_0x5c1c8a['model']=_[_0x7c80('0x42')](db[_0x7c80('0x124')][_0x7c80('0x3d')]);_0x5c1c8a['query']=_[_0x7c80('0x42')](_0x45333b[_0x7c80('0x41')]);_0x5c1c8a[_0x7c80('0x43')]=_[_0x7c80('0x44')](_0x5c1c8a['model'],_0x5c1c8a['query']);_0x5b1c84[_0x7c80('0x46')]=_['intersection'](_0x5c1c8a[_0x7c80('0x45')],qs['fields'](_0x45333b['query'][_0x7c80('0x47')]));_0x5b1c84['attributes']=_0x5b1c84[_0x7c80('0x46')][_0x7c80('0x56')]?_0x5b1c84[_0x7c80('0x46')]:_0x5c1c8a[_0x7c80('0x45')];if(!_0x45333b['query'][_0x7c80('0x48')](_0x7c80('0x49'))){_0x5b1c84['limit']=qs['limit'](_0x45333b[_0x7c80('0x41')]['limit']);_0x5b1c84[_0x7c80('0x2d')]=qs[_0x7c80('0x2d')](_0x45333b[_0x7c80('0x41')][_0x7c80('0x2d')]);}_0x5b1c84[_0x7c80('0x68')]=qs['sort'](_0x45333b[_0x7c80('0x41')]['sort']);_0x5b1c84[_0x7c80('0x4d')]=qs[_0x7c80('0x43')](_[_0x7c80('0x4b')](_0x45333b[_0x7c80('0x41')],_0x5c1c8a[_0x7c80('0x43')]));_0x5b1c84[_0x7c80('0x4d')]['ChatWebsiteId']=_0x468af6['id'];if(_0x45333b['query'][_0x7c80('0x4c')]){_0x5b1c84['where']=_[_0x7c80('0x4e')](_0x5b1c84[_0x7c80('0x4d')],{'$or':_[_0x7c80('0x3b')](_0x5b1c84['attributes'],function(_0x190c0d){var _0x2d032d={};_0x2d032d[_0x190c0d]={'$like':'%'+_0x45333b[_0x7c80('0x41')]['filter']+'%'};return _0x2d032d;})});}_0x5b1c84=_[_0x7c80('0x4e')]({},_0x5b1c84,_0x45333b[_0x7c80('0x57')]);return db[_0x7c80('0x124')][_0x7c80('0x50')]({'where':_0x5b1c84[_0x7c80('0x4d')]})[_0x7c80('0x1f')](function(_0x5d5211){_0x183723[_0x7c80('0x50')]=_0x5d5211;if(_0x45333b[_0x7c80('0x41')][_0x7c80('0x51')]){_0x5b1c84[_0x7c80('0x52')]=[{'all':!![]}];}else{_0x5b1c84['include']=[{'model':db[_0x7c80('0x8d')],'as':_0x7c80('0xf4'),'required':![]},{'model':db[_0x7c80('0x125')],'as':_0x7c80('0x126'),'required':![]}];}return db[_0x7c80('0x124')][_0x7c80('0x53')](_0x5b1c84);})['then'](function(_0x1bbf8d){_0x183723[_0x7c80('0x54')]=_0x1bbf8d;return _0x183723;});}})[_0x7c80('0x1f')](respondWithFilteredResult(_0x11a34d,_0x5b1c84))[_0x7c80('0x59')](handleError(_0x11a34d,null));};exports['addAgents']=function(_0x3213ee,_0x385e5c,_0x140a4c){return db[_0x7c80('0x3c')][_0x7c80('0x58')]({'where':{'id':_0x3213ee[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x385e5c,null))['then'](function(_0xc66bde){if(_0xc66bde){return _0xc66bde[_0x7c80('0x127')](_0x3213ee[_0x7c80('0x62')][_0x7c80('0x6a')],_[_0x7c80('0xf2')](_0x3213ee[_0x7c80('0x62')],[_0x7c80('0x6a'),'id'])||{})[_0x7c80('0x128')](function(_0x1d25f8){for(var _0x2f8ecc=0x0;_0x2f8ecc<_0x3213ee[_0x7c80('0x62')][_0x7c80('0x6a')]['length'];_0x2f8ecc+=0x1){socket[_0x7c80('0x129')]('userChatWebsite:save',{'UserId':Number(_0x3213ee[_0x7c80('0x62')]['ids'][_0x2f8ecc]),'ChatWebsiteId':Number(_0x3213ee[_0x7c80('0x55')]['id'])});}return _0x1d25f8;});}})[_0x7c80('0x1f')](respondWithResult(_0x385e5c,null))[_0x7c80('0x59')](handleError(_0x385e5c,null));};exports['removeAgents']=function(_0x3f76dd,_0x39ffb1,_0x11ef50){return db['ChatWebsite'][_0x7c80('0x58')]({'where':{'id':_0x3f76dd['params']['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x39ffb1,null))[_0x7c80('0x1f')](function(_0x42f1b0){if(_0x42f1b0){return _0x42f1b0['removeAgents'](_0x3f76dd['query'][_0x7c80('0x6a')])['then'](function(){if(_['isArray'](_0x3f76dd['query'][_0x7c80('0x6a')])){for(var _0x27e3c6=0x0;_0x27e3c6<_0x3f76dd[_0x7c80('0x41')][_0x7c80('0x6a')]['length'];_0x27e3c6+=0x1){socket[_0x7c80('0x129')](_0x7c80('0x12a'),{'UserId':Number(_0x3f76dd[_0x7c80('0x41')][_0x7c80('0x6a')][_0x27e3c6]),'ChatWebsiteId':Number(_0x3f76dd[_0x7c80('0x55')]['id'])});}}else{socket[_0x7c80('0x129')]('userChatWebsite:remove',{'UserId':Number(_0x3f76dd[_0x7c80('0x41')]['ids']),'ChatWebsiteId':Number(_0x3f76dd[_0x7c80('0x55')]['id'])});}});}})[_0x7c80('0x1f')](respondWithStatusCode(_0x39ffb1,null))[_0x7c80('0x59')](handleError(_0x39ffb1,null));};exports['getAgents']=function(_0x5628a7,_0x517210,_0x5bf37f){var _0x404415={};var _0x37eec1={};var _0x333316;var _0x20b209;return db[_0x7c80('0x3c')][_0x7c80('0x67')]({'where':{'id':_0x5628a7[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x517210,null))[_0x7c80('0x1f')](function(_0xb92a68){if(_0xb92a68){_0x333316=_0xb92a68;_0x37eec1[_0x7c80('0x45')]=_['keys'](db['User'][_0x7c80('0x3d')]);_0x37eec1[_0x7c80('0x41')]=_[_0x7c80('0x42')](_0x5628a7[_0x7c80('0x41')]);_0x37eec1[_0x7c80('0x43')]=_[_0x7c80('0x44')](_0x37eec1[_0x7c80('0x45')],_0x37eec1[_0x7c80('0x41')]);_0x404415[_0x7c80('0x46')]=_[_0x7c80('0x44')](_0x37eec1[_0x7c80('0x45')],qs[_0x7c80('0x47')](_0x5628a7[_0x7c80('0x41')][_0x7c80('0x47')]));_0x404415[_0x7c80('0x46')]=_0x404415[_0x7c80('0x46')][_0x7c80('0x56')]?_0x404415[_0x7c80('0x46')]:_0x37eec1[_0x7c80('0x45')];_0x404415[_0x7c80('0x68')]=qs[_0x7c80('0x4a')](_0x5628a7[_0x7c80('0x41')][_0x7c80('0x4a')]);_0x404415[_0x7c80('0x4d')]=qs[_0x7c80('0x43')](_[_0x7c80('0x4b')](_0x5628a7[_0x7c80('0x41')],_0x37eec1[_0x7c80('0x43')]));if(_0x5628a7['query'][_0x7c80('0x4c')]){_0x404415[_0x7c80('0x4d')]=_['merge'](_0x404415[_0x7c80('0x4d')],{'$or':_[_0x7c80('0x3b')](_0x404415[_0x7c80('0x46')],function(_0x13ae85){var _0x377bc={};_0x377bc[_0x13ae85]={'$like':'%'+_0x5628a7[_0x7c80('0x41')][_0x7c80('0x4c')]+'%'};return _0x377bc;})});}_0x404415=_[_0x7c80('0x4e')]({},_0x404415,_0x5628a7[_0x7c80('0x57')]);return _0x333316[_0x7c80('0x12b')](_0x404415);}})['then'](function(_0x495924){if(_0x495924){_0x20b209=_0x495924['length'];if(!_0x5628a7[_0x7c80('0x41')][_0x7c80('0x48')](_0x7c80('0x49'))){_0x404415[_0x7c80('0x2f')]=qs[_0x7c80('0x2f')](_0x5628a7['query'][_0x7c80('0x2f')]);_0x404415['offset']=qs[_0x7c80('0x2d')](_0x5628a7['query'][_0x7c80('0x2d')]);}return _0x333316['getAgents'](_0x404415);}})[_0x7c80('0x1f')](function(_0x2c3e73){if(_0x2c3e73){return _0x2c3e73?{'count':_0x20b209,'rows':_0x2c3e73}:null;}})[_0x7c80('0x1f')](respondWithResult(_0x517210,null))['catch'](handleError(_0x517210,null));};
\ No newline at end of file
index 495ea5e..c6c90ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31af=['ChatWebsite','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x128bef,_0xc7a0af){var _0x1ba862=function(_0x4858e8){while(--_0x4858e8){_0x128bef['push'](_0x128bef['shift']());}};_0x1ba862(++_0xc7a0af);}(_0x31af,0xde));var _0xf31a=function(_0x456a1,_0x30c640){_0x456a1=_0x456a1-0x0;var _0x10df95=_0x31af[_0x456a1];return _0x10df95;};'use strict';var EventEmitter=require(_0xf31a('0x0'));var ChatWebsite=require(_0xf31a('0x1'))['db'][_0xf31a('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xf31a('0x3'),'afterDestroy':'remove'};function emitEvent(_0x3b7976){return function(_0x1853d7,_0x820362,_0x245db8){ChatWebsiteEvents['emit'](_0x3b7976+':'+_0x1853d7['id'],_0x1853d7);ChatWebsiteEvents[_0xf31a('0x4')](_0x3b7976,_0x1853d7);_0x245db8(null);};}for(var e in events){if(events[_0xf31a('0x5')](e)){var event=events[e];ChatWebsite[_0xf31a('0x6')](e,emitEvent(event));}}module[_0xf31a('0x7')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0xceae=['hasOwnProperty','hook','exports','events','../../mysqldb','update','emit'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xceae,0x122));var _0xecea=function(_0x3e0c6b,_0x52636f){_0x3e0c6b=_0x3e0c6b-0x0;var _0x4bf365=_0xceae[_0x3e0c6b];return _0x4bf365;};'use strict';var EventEmitter=require(_0xecea('0x0'));var ChatWebsite=require(_0xecea('0x1'))['db']['ChatWebsite'];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xecea('0x2'),'afterDestroy':'remove'};function emitEvent(_0x5bba59){return function(_0x28b2cf,_0x457d37,_0x39d285){ChatWebsiteEvents[_0xecea('0x3')](_0x5bba59+':'+_0x28b2cf['id'],_0x28b2cf);ChatWebsiteEvents[_0xecea('0x3')](_0x5bba59,_0x28b2cf);_0x39d285(null);};}for(var e in events){if(events[_0xecea('0x4')](e)){var event=events[e];ChatWebsite[_0xecea('0x5')](e,emitEvent(event));}}module[_0xecea('0x6')]=ChatWebsiteEvents;
\ No newline at end of file
index 2f4ee70..6636f69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2604=['request-promise','path','./chatWebsite.attributes','define','chat_websites','lodash','api','moment','bluebird'];(function(_0x11e30d,_0x5584aa){var _0x2d4e29=function(_0x2486ce){while(--_0x2486ce){_0x11e30d['push'](_0x11e30d['shift']());}};_0x2d4e29(++_0x5584aa);}(_0x2604,0x19a));var _0x4260=function(_0x112a38,_0x147691){_0x112a38=_0x112a38-0x0;var _0x23b207=_0x2604[_0x112a38];return _0x23b207;};'use strict';var _=require(_0x4260('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x4260('0x1'));var moment=require(_0x4260('0x2'));var BPromise=require(_0x4260('0x3'));var rp=require(_0x4260('0x4'));var fs=require('fs');var path=require(_0x4260('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4260('0x6'));module['exports']=function(_0x56e70c,_0x266bab){return _0x56e70c[_0x4260('0x7')]('ChatWebsite',attributes,{'tableName':_0x4260('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9434=['path','rimraf','../../config/environment','./chatWebsite.attributes','exports','define','util','../../config/logger','api'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0x9434,0x1b6));var _0x4943=function(_0xf074cc,_0x5520f7){_0xf074cc=_0xf074cc-0x0;var _0xd3cc9f=_0x9434[_0xf074cc];return _0xd3cc9f;};'use strict';var _=require('lodash');var util=require(_0x4943('0x0'));var logger=require(_0x4943('0x1'))(_0x4943('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4943('0x3'));var rimraf=require(_0x4943('0x4'));var config=require(_0x4943('0x5'));var attributes=require(_0x4943('0x6'));module[_0x4943('0x7')]=function(_0x5ea249,_0x173c64){return _0x5ea249[_0x4943('0x8')]('ChatWebsite',attributes,{'tableName':'chat_websites','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 84fbab3..9b3eb7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4de0=['defaults','localhost','./chatWebsite.socket','register','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis'];(function(_0x4beb7a,_0x246983){var _0x50c7dd=function(_0x4c006c){while(--_0x4c006c){_0x4beb7a['push'](_0x4beb7a['shift']());}};_0x50c7dd(++_0x246983);}(_0x4de0,0x7b));var _0x04de=function(_0x25a681,_0x2d5cf5){_0x25a681=_0x25a681-0x0;var _0x2b76bf=_0x4de0[_0x25a681];return _0x2b76bf;};'use strict';var _=require(_0x04de('0x0'));var util=require(_0x04de('0x1'));var moment=require(_0x04de('0x2'));var BPromise=require('bluebird');var rs=require(_0x04de('0x3'));var fs=require('fs');var Redis=require(_0x04de('0x4'));var db=require(_0x04de('0x5'))['db'];var utils=require(_0x04de('0x6'));var logger=require(_0x04de('0x7'))(_0x04de('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x04de('0x9')][_0x04de('0xa')]({'port':0x232a});config[_0x04de('0xb')]=_[_0x04de('0xc')](config[_0x04de('0xb')],{'host':_0x04de('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x04de('0xb')]));require(_0x04de('0xe'))[_0x04de('0xf')](socket);function respondWithRpcPromise(_0x3c11b0,_0x3b76dd,_0x2fcd29){return new BPromise(function(_0x3ab1e0,_0x31b577){return client[_0x04de('0x10')](_0x3c11b0,_0x2fcd29)[_0x04de('0x11')](function(_0x193836){logger[_0x04de('0x12')](_0x04de('0x13'),_0x3b76dd,_0x04de('0x14'));logger[_0x04de('0x15')](_0x04de('0x16'),_0x3b76dd,_0x04de('0x14'),JSON[_0x04de('0x17')](_0x193836));if(_0x193836[_0x04de('0x18')]){if(_0x193836['error']['code']===0x1f4){logger[_0x04de('0x18')](_0x04de('0x13'),_0x3b76dd,_0x193836['error']['message']);return _0x31b577(_0x193836[_0x04de('0x18')]['message']);}logger[_0x04de('0x18')]('ChatWebsite,\x20%s,\x20%s',_0x3b76dd,_0x193836[_0x04de('0x18')]['message']);return _0x3ab1e0(_0x193836[_0x04de('0x18')][_0x04de('0x19')]);}else{logger[_0x04de('0x12')](_0x04de('0x13'),_0x3b76dd,_0x04de('0x14'));_0x3ab1e0(_0x193836[_0x04de('0x1a')]['message']);}})['catch'](function(_0x1900f3){logger['error'](_0x04de('0x13'),_0x3b76dd,_0x1900f3);_0x31b577(_0x1900f3);});});}
\ No newline at end of file
+var _0x437b=['./chatWebsite.socket','register','then','info','request\x20sent','debug','stringify','error','code','ChatWebsite,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','defaults','localhost','socket.io-emitter'];(function(_0x3042c5,_0x36cb88){var _0x7cd140=function(_0x4cdcd8){while(--_0x4cdcd8){_0x3042c5['push'](_0x3042c5['shift']());}};_0x7cd140(++_0x36cb88);}(_0x437b,0x1ac));var _0xb437=function(_0x49beea,_0x47add1){_0x49beea=_0x49beea-0x0;var _0x27693a=_0x437b[_0x49beea];return _0x27693a;};'use strict';var _=require(_0xb437('0x0'));var util=require(_0xb437('0x1'));var moment=require(_0xb437('0x2'));var BPromise=require(_0xb437('0x3'));var rs=require(_0xb437('0x4'));var fs=require('fs');var Redis=require(_0xb437('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb437('0x6'))(_0xb437('0x7'));var config=require(_0xb437('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xb437('0x9')][_0xb437('0xa')]({'port':0x232a});config['redis']=_[_0xb437('0xb')](config['redis'],{'host':_0xb437('0xc'),'port':0x18eb});var socket=require(_0xb437('0xd'))(new Redis(config['redis']));require(_0xb437('0xe'))[_0xb437('0xf')](socket);function respondWithRpcPromise(_0x114bc7,_0x26771d,_0x329646){return new BPromise(function(_0x351929,_0x5da899){return client['request'](_0x114bc7,_0x329646)[_0xb437('0x10')](function(_0x204f54){logger[_0xb437('0x11')]('ChatWebsite,\x20%s,\x20%s',_0x26771d,_0xb437('0x12'));logger[_0xb437('0x13')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x26771d,_0xb437('0x12'),JSON[_0xb437('0x14')](_0x204f54));if(_0x204f54['error']){if(_0x204f54[_0xb437('0x15')][_0xb437('0x16')]===0x1f4){logger['error'](_0xb437('0x17'),_0x26771d,_0x204f54[_0xb437('0x15')][_0xb437('0x18')]);return _0x5da899(_0x204f54[_0xb437('0x15')]['message']);}logger[_0xb437('0x15')](_0xb437('0x17'),_0x26771d,_0x204f54[_0xb437('0x15')][_0xb437('0x18')]);return _0x351929(_0x204f54[_0xb437('0x15')]['message']);}else{logger['info'](_0xb437('0x17'),_0x26771d,'request\x20sent');_0x351929(_0x204f54[_0xb437('0x19')][_0xb437('0x18')]);}})['catch'](function(_0x383a67){logger[_0xb437('0x15')](_0xb437('0x17'),_0x26771d,_0x383a67);_0x5da899(_0x383a67);});});}
\ No newline at end of file
index fcd89f7..f47b10d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5670=['length','./chatWebsite.events','update','emit','register'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x5670,0x8d));var _0x0567=function(_0x2fc7ee,_0x1bb152){_0x2fc7ee=_0x2fc7ee-0x0;var _0x174721=_0x5670[_0x2fc7ee];return _0x174721;};'use strict';var ChatWebsiteEvents=require(_0x0567('0x0'));var events=['save','remove',_0x0567('0x1')];function createListener(_0x2ee9ec,_0x37afb5){return function(_0x1ca03a){_0x37afb5[_0x0567('0x2')](_0x2ee9ec,_0x1ca03a);};}function removeListener(_0x4e6fab,_0x9dc2d2){return function(){ChatWebsiteEvents['removeListener'](_0x4e6fab,_0x9dc2d2);};}exports[_0x0567('0x3')]=function(_0x1df157){for(var _0x5dbe7b=0x0,_0x3138ab=events[_0x0567('0x4')];_0x5dbe7b<_0x3138ab;_0x5dbe7b++){var _0x4509f6=events[_0x5dbe7b];var _0xc15373=createListener('chatWebsite:'+_0x4509f6,_0x1df157);ChatWebsiteEvents['on'](_0x4509f6,_0xc15373);}};
\ No newline at end of file
+var _0x7976=['length','./chatWebsite.events','save','remove','update','removeListener','register'];(function(_0x182648,_0x2a7b01){var _0x10d106=function(_0x343645){while(--_0x343645){_0x182648['push'](_0x182648['shift']());}};_0x10d106(++_0x2a7b01);}(_0x7976,0x17b));var _0x6797=function(_0xa4cc62,_0x4084fe){_0xa4cc62=_0xa4cc62-0x0;var _0x47f040=_0x7976[_0xa4cc62];return _0x47f040;};'use strict';var ChatWebsiteEvents=require(_0x6797('0x0'));var events=[_0x6797('0x1'),_0x6797('0x2'),_0x6797('0x3')];function createListener(_0x220b74,_0x41563d){return function(_0x438ba5){_0x41563d['emit'](_0x220b74,_0x438ba5);};}function removeListener(_0x2f5815,_0x573446){return function(){ChatWebsiteEvents[_0x6797('0x4')](_0x2f5815,_0x573446);};}exports[_0x6797('0x5')]=function(_0x31b362){for(var _0x397e7e=0x0,_0x4156d7=events[_0x6797('0x6')];_0x397e7e<_0x4156d7;_0x397e7e++){var _0x1a59b7=events[_0x397e7e];var _0x4680f4=createListener('chatWebsite:'+_0x1a59b7,_0x31b362);ChatWebsiteEvents['on'](_0x1a59b7,_0x4680f4);}};
\ No newline at end of file
index e289505..9f7c7b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda2c=['addInteraction','/:id/applications','addApplications','put','/:id','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','/describe','describe','show','/:id/dispositions','getDispositions','getAnswers','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','getSystemAvatar','/:id/interactions','/:id/snippet','getApplications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','getAgents','create','/:id/canned_answers','addAnswer','diskStorage','join','root','server/files/images/logos/','format','%s-%s','now','originalname','single','file','addLogo','server/files/images/avatars/','post','addCustomerAvatar','/:id/system_avatar','notify','server/files','replace','extname','/:id/offline','offline'];(function(_0x33ed8e,_0x1c42b3){var _0x2c34ec=function(_0x56b57d){while(--_0x56b57d){_0x33ed8e['push'](_0x33ed8e['shift']());}};_0x2c34ec(++_0x1c42b3);}(_0xda2c,0x169));var _0xcda2=function(_0x3418b3,_0x3b8a3f){_0x3418b3=_0x3418b3-0x0;var _0x1c9186=_0xda2c[_0x3418b3];return _0x1c9186;};'use strict';var multer=require(_0xcda2('0x0'));var util=require(_0xcda2('0x1'));var path=require(_0xcda2('0x2'));var timeout=require(_0xcda2('0x3'));var express=require(_0xcda2('0x4'));var router=express['Router']();var fs_extra=require(_0xcda2('0x5'));var auth=require(_0xcda2('0x6'));var interaction=require(_0xcda2('0x7'));var config=require(_0xcda2('0x8'));var controller=require(_0xcda2('0x9'));router[_0xcda2('0xa')]('/',auth[_0xcda2('0xb')](),controller['index']);router[_0xcda2('0xa')](_0xcda2('0xc'),auth[_0xcda2('0xb')](),controller[_0xcda2('0xd')]);router[_0xcda2('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xcda2('0xe')]);router[_0xcda2('0xa')](_0xcda2('0xf'),auth['isAuthenticated'](),controller[_0xcda2('0x10')]);router[_0xcda2('0xa')]('/:id/canned_answers',auth[_0xcda2('0xb')](),controller[_0xcda2('0x11')]);router[_0xcda2('0xa')]('/:id/logo',controller[_0xcda2('0x12')]);router[_0xcda2('0xa')](_0xcda2('0x13'),controller[_0xcda2('0x14')]);router[_0xcda2('0xa')](_0xcda2('0x15'),controller[_0xcda2('0x16')]);router['get']('/:id/system_avatar',controller[_0xcda2('0x17')]);router[_0xcda2('0xa')](_0xcda2('0x18'),auth[_0xcda2('0xb')](),controller['getInteractions']);router[_0xcda2('0xa')](_0xcda2('0x19'),controller['getSnippet']);router[_0xcda2('0xa')]('/:id/applications',auth['isAuthenticated'](),controller[_0xcda2('0x1a')]);router[_0xcda2('0xa')](_0xcda2('0x1b'),auth[_0xcda2('0xb')](),controller[_0xcda2('0x1c')]);router[_0xcda2('0xa')](_0xcda2('0x1d'),controller[_0xcda2('0x1e')]);router[_0xcda2('0xa')](_0xcda2('0x1f'),auth['isAuthenticated'](),controller[_0xcda2('0x20')]);router[_0xcda2('0xa')](_0xcda2('0x21'),auth[_0xcda2('0xb')](),controller[_0xcda2('0x22')]);router['post']('/',auth[_0xcda2('0xb')](),controller[_0xcda2('0x23')]);router['post'](_0xcda2('0xf'),auth[_0xcda2('0xb')](),controller['addDisposition']);router['post'](_0xcda2('0x24'),auth[_0xcda2('0xb')](),controller[_0xcda2('0x25')]);var upload=multer({'storage':multer[_0xcda2('0x26')]({'destination':function(_0x385225,_0x5887e2,_0x2b7dc6){_0x2b7dc6(null,path[_0xcda2('0x27')](config[_0xcda2('0x28')],_0xcda2('0x29')));},'filename':function(_0x17cfd0,_0x5a922e,_0x1f0722){_0x1f0722(null,util[_0xcda2('0x2a')](_0xcda2('0x2b'),Date[_0xcda2('0x2c')](),_0x5a922e[_0xcda2('0x2d')]));}})});router['post']('/:id/logo',upload[_0xcda2('0x2e')](_0xcda2('0x2f')),controller[_0xcda2('0x30')]);var upload=multer({'storage':multer[_0xcda2('0x26')]({'destination':function(_0x3ab7af,_0x10efee,_0x47fb30){_0x47fb30(null,path[_0xcda2('0x27')](config[_0xcda2('0x28')],_0xcda2('0x31')));},'filename':function(_0x4d5bdc,_0x57f20e,_0x5daf5d){_0x5daf5d(null,util['format'](_0xcda2('0x2b'),Date[_0xcda2('0x2c')](),_0x57f20e[_0xcda2('0x2d')]));}})});router['post']('/:id/avatar',upload['single'](_0xcda2('0x2f')),controller['addAvatar']);var upload=multer({'storage':multer[_0xcda2('0x26')]({'destination':function(_0xb22382,_0x2beba4,_0x4353c2){_0x4353c2(null,path['join'](config[_0xcda2('0x28')],'server/files/images/avatars/'));},'filename':function(_0x193821,_0x3eff18,_0x5cb231){_0x5cb231(null,util[_0xcda2('0x2a')](_0xcda2('0x2b'),Date[_0xcda2('0x2c')](),_0x3eff18[_0xcda2('0x2d')]));}})});router[_0xcda2('0x32')]('/:id/customer_avatar',upload[_0xcda2('0x2e')]('file'),controller[_0xcda2('0x33')]);var upload=multer({'storage':multer[_0xcda2('0x26')]({'destination':function(_0x55ead7,_0x5387b6,_0x2c8425){_0x2c8425(null,path[_0xcda2('0x27')](config[_0xcda2('0x28')],_0xcda2('0x31')));},'filename':function(_0x4ba25f,_0x3ba6a5,_0x2edb8c){_0x2edb8c(null,util['format'](_0xcda2('0x2b'),Date['now'](),_0x3ba6a5['originalname']));}})});router[_0xcda2('0x32')](_0xcda2('0x34'),upload[_0xcda2('0x2e')]('file'),controller['addSystemAvatar']);router[_0xcda2('0x32')]('/:id/notify',controller[_0xcda2('0x35')]);const offlineUploadMulter=multer({'storage':multer[_0xcda2('0x26')]({'destination':function(_0x7b6d8f,_0x425f2f,_0x15efe1){const _0x34dc08=path[_0xcda2('0x27')](config['root'],_0xcda2('0x36'),'attachments','offline-chat');fs_extra['ensureDir'](_0x34dc08,function(){_0x15efe1(null,_0x34dc08);});},'filename':function(_0x5f1cfd,_0x3892e6,_0x2ad04a){const _0x174d4e=_0x3892e6[_0xcda2('0x2d')][_0xcda2('0x37')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x405423=path[_0xcda2('0x38')](_0x174d4e);const _0x4e0db9=Date['now']()+'-'+_0x174d4e[_0xcda2('0x37')](_0x405423,'')+_0x405423;_0x2ad04a(null,_0x4e0db9);}})});router['post'](_0xcda2('0x39'),offlineUploadMulter['any'](),controller[_0xcda2('0x3a')]);router[_0xcda2('0x32')]('/:id/interactions',auth['isAuthenticated'](),controller[_0xcda2('0x3b')]);router[_0xcda2('0x32')](_0xcda2('0x3c'),auth[_0xcda2('0xb')](),controller[_0xcda2('0x3d')]);router[_0xcda2('0x32')](_0xcda2('0x1b'),auth[_0xcda2('0xb')](),controller['addProactiveActions']);router[_0xcda2('0x32')](_0xcda2('0x21'),auth[_0xcda2('0xb')](),controller['addAgents']);router[_0xcda2('0x3e')](_0xcda2('0x3f'),auth[_0xcda2('0xb')](),controller['update']);router[_0xcda2('0x40')](_0xcda2('0x3f'),auth[_0xcda2('0xb')](),controller[_0xcda2('0x41')]);router['delete'](_0xcda2('0xf'),auth['isAuthenticated'](),controller[_0xcda2('0x42')]);router[_0xcda2('0x40')](_0xcda2('0x24'),auth[_0xcda2('0xb')](),controller[_0xcda2('0x43')]);router[_0xcda2('0x40')]('/:id/users',auth[_0xcda2('0xb')](),controller[_0xcda2('0x44')]);module[_0xcda2('0x45')]=router;
\ No newline at end of file
+var _0xae16=['server/files/images/avatars/','/:id/system_avatar','addSystemAvatar','/:id/notify','server/files','attachments','offline-chat','ensureDir','replace','extname','offline','addApplications','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','/:id','show','/:id/dispositions','getAnswers','/:id/logo','getLogo','/:id/avatar','/:id/customer_avatar','getCustomerAvatar','getSystemAvatar','/:id/interactions','getSnippet','/:id/applications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','getAgents','post','create','addDisposition','/:id/canned_answers','addAnswer','diskStorage','join','server/files/images/logos/','format','%s-%s','now','single','file','addLogo','root','originalname','addAvatar'];(function(_0x174c43,_0xc04363){var _0x18209f=function(_0x1db89d){while(--_0x1db89d){_0x174c43['push'](_0x174c43['shift']());}};_0x18209f(++_0xc04363);}(_0xae16,0x1ac));var _0x6ae1=function(_0xd27db7,_0x4aa388){_0xd27db7=_0xd27db7-0x0;var _0x2f5973=_0xae16[_0xd27db7];return _0x2f5973;};'use strict';var multer=require('multer');var util=require(_0x6ae1('0x0'));var path=require('path');var timeout=require(_0x6ae1('0x1'));var express=require(_0x6ae1('0x2'));var router=express[_0x6ae1('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x6ae1('0x4'));var config=require(_0x6ae1('0x5'));var controller=require(_0x6ae1('0x6'));router[_0x6ae1('0x7')]('/',auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x9')]);router[_0x6ae1('0x7')]('/describe',auth[_0x6ae1('0x8')](),controller['describe']);router[_0x6ae1('0x7')](_0x6ae1('0xa'),auth[_0x6ae1('0x8')](),controller[_0x6ae1('0xb')]);router['get'](_0x6ae1('0xc'),auth[_0x6ae1('0x8')](),controller['getDispositions']);router['get']('/:id/canned_answers',auth[_0x6ae1('0x8')](),controller[_0x6ae1('0xd')]);router[_0x6ae1('0x7')](_0x6ae1('0xe'),controller[_0x6ae1('0xf')]);router[_0x6ae1('0x7')](_0x6ae1('0x10'),controller['getAvatar']);router[_0x6ae1('0x7')](_0x6ae1('0x11'),controller[_0x6ae1('0x12')]);router[_0x6ae1('0x7')]('/:id/system_avatar',controller[_0x6ae1('0x13')]);router[_0x6ae1('0x7')](_0x6ae1('0x14'),auth[_0x6ae1('0x8')](),controller['getInteractions']);router[_0x6ae1('0x7')]('/:id/snippet',controller[_0x6ae1('0x15')]);router[_0x6ae1('0x7')](_0x6ae1('0x16'),auth['isAuthenticated'](),controller['getApplications']);router[_0x6ae1('0x7')](_0x6ae1('0x17'),auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x18')]);router[_0x6ae1('0x7')](_0x6ae1('0x19'),controller[_0x6ae1('0x1a')]);router['get'](_0x6ae1('0x1b'),auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x1c')]);router[_0x6ae1('0x7')](_0x6ae1('0x1d'),auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x1e')]);router[_0x6ae1('0x1f')]('/',auth['isAuthenticated'](),controller[_0x6ae1('0x20')]);router['post']('/:id/dispositions',auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x21')]);router[_0x6ae1('0x1f')](_0x6ae1('0x22'),auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x23')]);var upload=multer({'storage':multer[_0x6ae1('0x24')]({'destination':function(_0x7ad5d7,_0xa71114,_0x1350bc){_0x1350bc(null,path[_0x6ae1('0x25')](config['root'],_0x6ae1('0x26')));},'filename':function(_0x4c468a,_0x55aacd,_0x51af6d){_0x51af6d(null,util[_0x6ae1('0x27')](_0x6ae1('0x28'),Date[_0x6ae1('0x29')](),_0x55aacd['originalname']));}})});router['post'](_0x6ae1('0xe'),upload[_0x6ae1('0x2a')](_0x6ae1('0x2b')),controller[_0x6ae1('0x2c')]);var upload=multer({'storage':multer[_0x6ae1('0x24')]({'destination':function(_0x40e8f5,_0x420c46,_0x186af8){_0x186af8(null,path['join'](config[_0x6ae1('0x2d')],'server/files/images/avatars/'));},'filename':function(_0x4d9496,_0x4e0104,_0x3fb316){_0x3fb316(null,util[_0x6ae1('0x27')](_0x6ae1('0x28'),Date[_0x6ae1('0x29')](),_0x4e0104[_0x6ae1('0x2e')]));}})});router[_0x6ae1('0x1f')](_0x6ae1('0x10'),upload[_0x6ae1('0x2a')](_0x6ae1('0x2b')),controller[_0x6ae1('0x2f')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x210fa0,_0x380f75,_0x2b5a7a){_0x2b5a7a(null,path[_0x6ae1('0x25')](config['root'],_0x6ae1('0x30')));},'filename':function(_0xc814ea,_0x353e68,_0x598d4c){_0x598d4c(null,util[_0x6ae1('0x27')]('%s-%s',Date['now'](),_0x353e68[_0x6ae1('0x2e')]));}})});router[_0x6ae1('0x1f')](_0x6ae1('0x11'),upload[_0x6ae1('0x2a')](_0x6ae1('0x2b')),controller['addCustomerAvatar']);var upload=multer({'storage':multer[_0x6ae1('0x24')]({'destination':function(_0x37e965,_0x34574e,_0x5bd4db){_0x5bd4db(null,path[_0x6ae1('0x25')](config[_0x6ae1('0x2d')],_0x6ae1('0x30')));},'filename':function(_0x3b42c8,_0x2c1c89,_0x239d51){_0x239d51(null,util[_0x6ae1('0x27')](_0x6ae1('0x28'),Date[_0x6ae1('0x29')](),_0x2c1c89[_0x6ae1('0x2e')]));}})});router[_0x6ae1('0x1f')](_0x6ae1('0x31'),upload[_0x6ae1('0x2a')](_0x6ae1('0x2b')),controller[_0x6ae1('0x32')]);router[_0x6ae1('0x1f')](_0x6ae1('0x33'),controller['notify']);const offlineUploadMulter=multer({'storage':multer[_0x6ae1('0x24')]({'destination':function(_0x363570,_0x564769,_0x6d048){const _0xff5db=path[_0x6ae1('0x25')](config[_0x6ae1('0x2d')],_0x6ae1('0x34'),_0x6ae1('0x35'),_0x6ae1('0x36'));fs_extra[_0x6ae1('0x37')](_0xff5db,function(){_0x6d048(null,_0xff5db);});},'filename':function(_0x566b41,_0x1302b5,_0xb22dea){const _0x1e84d6=_0x1302b5['originalname'][_0x6ae1('0x38')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x3999b8=path[_0x6ae1('0x39')](_0x1e84d6);const _0x35a2ac=Date['now']()+'-'+_0x1e84d6[_0x6ae1('0x38')](_0x3999b8,'')+_0x3999b8;_0xb22dea(null,_0x35a2ac);}})});router['post']('/:id/offline',offlineUploadMulter['any'](),controller[_0x6ae1('0x3a')]);router[_0x6ae1('0x1f')](_0x6ae1('0x14'),auth[_0x6ae1('0x8')](),controller['addInteraction']);router['post']('/:id/applications',auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x3b')]);router[_0x6ae1('0x1f')](_0x6ae1('0x17'),auth[_0x6ae1('0x8')](),controller['addProactiveActions']);router[_0x6ae1('0x1f')](_0x6ae1('0x1d'),auth[_0x6ae1('0x8')](),controller['addAgents']);router[_0x6ae1('0x3c')](_0x6ae1('0xa'),auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x3d')]);router[_0x6ae1('0x3e')]('/:id',auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x3f')]);router[_0x6ae1('0x3e')](_0x6ae1('0xc'),auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x40')]);router[_0x6ae1('0x3e')](_0x6ae1('0x22'),auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x41')]);router[_0x6ae1('0x3e')](_0x6ae1('0x1d'),auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x42')]);module[_0x6ae1('0x43')]=router;
\ No newline at end of file
index 185c07e..64012e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6bb=['exports','STRING','ENUM','AmazonAWS','Google'];(function(_0x42d516,_0x24b87f){var _0x53b87a=function(_0x14e070){while(--_0x14e070){_0x42d516['push'](_0x42d516['shift']());}};_0x53b87a(++_0x24b87f);}(_0xa6bb,0x12c));var _0xba6b=function(_0x334833,_0x5f58a5){_0x334833=_0x334833-0x0;var _0x70cf60=_0xa6bb[_0x334833];return _0x70cf60;};'use strict';var Sequelize=require('sequelize');module[_0xba6b('0x0')]={'name':{'type':Sequelize[_0xba6b('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xba6b('0x2')](_0xba6b('0x3'),_0xba6b('0x4')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1939=['AmazonAWS','sequelize','STRING','ENUM'];(function(_0x815fb4,_0x18718c){var _0xeab0c8=function(_0x38d44d){while(--_0x38d44d){_0x815fb4['push'](_0x815fb4['shift']());}};_0xeab0c8(++_0x18718c);}(_0x1939,0x1d1));var _0x9193=function(_0x5dcca6,_0x1672e8){_0x5dcca6=_0x5dcca6-0x0;var _0x178cae=_0x1939[_0x5dcca6];return _0x178cae;};'use strict';var Sequelize=require(_0x9193('0x0'));module['exports']={'name':{'type':Sequelize[_0x9193('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x9193('0x2')](_0x9193('0x3'),'Google'),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0x9193('0x1')]},'data2':{'type':Sequelize[_0x9193('0x1')]}};
\ No newline at end of file
index fe169a5..baad7f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['error','stack','name','send','index','CloudProvider','fieldName','type','key','map','query','keys','model','fields','attributes','length','nolimit','order','sort','filters','filter','where','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','rawAttributes','intersection','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','save','update','then','sendStatus'];(function(_0x32b02a,_0x246a96){var _0x3f20cb=function(_0x2efc95){while(--_0x2efc95){_0x32b02a['push'](_0x32b02a['shift']());}};_0x3f20cb(++_0x246a96);}(_0xdb28,0x106));var _0x8db2=function(_0x455c6f,_0x109cac){_0x455c6f=_0x455c6f-0x0;var _0x41d448=_0xdb28[_0x455c6f];return _0x41d448;};'use strict';var emlformat=require(_0x8db2('0x0'));var rimraf=require(_0x8db2('0x1'));var zipdir=require(_0x8db2('0x2'));var jsonpatch=require(_0x8db2('0x3'));var rp=require('request-promise');var moment=require(_0x8db2('0x4'));var BPromise=require(_0x8db2('0x5'));var Mustache=require(_0x8db2('0x6'));var util=require(_0x8db2('0x7'));var path=require(_0x8db2('0x8'));var sox=require('sox');var csv=require(_0x8db2('0x9'));var ejs=require(_0x8db2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8db2('0xb'));var crypto=require(_0x8db2('0xc'));var jsforce=require(_0x8db2('0xd'));var deskjs=require(_0x8db2('0xe'));var toCsv=require(_0x8db2('0x9'));var querystring=require(_0x8db2('0xf'));var Papa=require(_0x8db2('0x10'));var Redis=require('ioredis');var authService=require(_0x8db2('0x11'));var qs=require(_0x8db2('0x12'));var as=require(_0x8db2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8db2('0x14'))(_0x8db2('0x15'));var utils=require('../../config/utils');var config=require(_0x8db2('0x16'));var licenseUtil=require(_0x8db2('0x17'));var db=require(_0x8db2('0x18'))['db'];function respondWithStatusCode(_0x204f49,_0x37d017){_0x37d017=_0x37d017||0xcc;return function(_0x559fb1){if(_0x559fb1){return _0x204f49['sendStatus'](_0x37d017);}return _0x204f49[_0x8db2('0x19')](_0x37d017)[_0x8db2('0x1a')]();};}function respondWithResult(_0x350d61,_0x1d6a15){_0x1d6a15=_0x1d6a15||0xc8;return function(_0x227355){if(_0x227355){return _0x350d61[_0x8db2('0x19')](_0x1d6a15)[_0x8db2('0x1b')](_0x227355);}};}function respondWithFilteredResult(_0x3c96a7,_0x131252){return function(_0x16c8c2){if(_0x16c8c2){var _0x5489a9=typeof _0x131252[_0x8db2('0x1c')]===_0x8db2('0x1d')&&typeof _0x131252['limit']===_0x8db2('0x1d');var _0x44957d=_0x16c8c2[_0x8db2('0x1e')];var _0x3fddc2=_0x5489a9?0x0:_0x131252[_0x8db2('0x1c')];var _0x46ce14=_0x5489a9?_0x16c8c2['count']:_0x131252['offset']+_0x131252[_0x8db2('0x1f')];var _0x104e33;if(_0x46ce14>=_0x44957d){_0x46ce14=_0x44957d;_0x104e33=0xc8;}else{_0x104e33=0xce;}_0x3c96a7[_0x8db2('0x19')](_0x104e33);return _0x3c96a7[_0x8db2('0x20')]('Content-Range',_0x3fddc2+'-'+_0x46ce14+'/'+_0x44957d)[_0x8db2('0x1b')](_0x16c8c2);}return null;};}function patchUpdates(_0x36a9ff){return function(_0x260940){try{jsonpatch[_0x8db2('0x21')](_0x260940,_0x36a9ff,!![]);}catch(_0x3dbe8e){return BPromise['reject'](_0x3dbe8e);}return _0x260940[_0x8db2('0x22')]();};}function saveUpdates(_0x3e30e6,_0x18f69c){return function(_0x125be2){if(_0x125be2){return _0x125be2[_0x8db2('0x23')](_0x3e30e6)[_0x8db2('0x24')](function(_0x796ec1){return _0x796ec1;});}return null;};}function removeEntity(_0x5c6614,_0x256202){return function(_0x4f6516){if(_0x4f6516){return _0x4f6516['destroy']()['then'](function(){_0x5c6614['status'](0xcc)[_0x8db2('0x1a')]();});}};}function handleEntityNotFound(_0x29b5cd,_0x3be281){return function(_0x2baed0){if(!_0x2baed0){_0x29b5cd[_0x8db2('0x25')](0x194);}return _0x2baed0;};}function handleError(_0x8d4f54,_0x58cd9d){_0x58cd9d=_0x58cd9d||0x1f4;return function(_0x3544ba){logger[_0x8db2('0x26')](_0x3544ba[_0x8db2('0x27')]);if(_0x3544ba[_0x8db2('0x28')]){delete _0x3544ba['name'];}_0x8d4f54[_0x8db2('0x19')](_0x58cd9d)[_0x8db2('0x29')](_0x3544ba);};}exports[_0x8db2('0x2a')]=function(_0x1687ed,_0xbe5ece){var _0x21bae5={},_0xa54ea3={},_0x3124d5={'count':0x0,'rows':[]};var _0xbc5366=_['map'](db[_0x8db2('0x2b')]['rawAttributes'],function(_0x59cb77){return{'name':_0x59cb77[_0x8db2('0x2c')],'type':_0x59cb77[_0x8db2('0x2d')][_0x8db2('0x2e')]};});_0xa54ea3['model']=_[_0x8db2('0x2f')](_0xbc5366,'name');_0xa54ea3[_0x8db2('0x30')]=_[_0x8db2('0x31')](_0x1687ed[_0x8db2('0x30')]);_0xa54ea3['filters']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],_0xa54ea3[_0x8db2('0x30')]);_0x21bae5['attributes']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x33')]));_0x21bae5[_0x8db2('0x34')]=_0x21bae5[_0x8db2('0x34')][_0x8db2('0x35')]?_0x21bae5[_0x8db2('0x34')]:_0xa54ea3[_0x8db2('0x32')];if(!_0x1687ed[_0x8db2('0x30')]['hasOwnProperty'](_0x8db2('0x36'))){_0x21bae5[_0x8db2('0x1f')]=qs['limit'](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x1f')]);_0x21bae5['offset']=qs['offset'](_0x1687ed[_0x8db2('0x30')]['offset']);}_0x21bae5[_0x8db2('0x37')]=qs[_0x8db2('0x38')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x38')]);_0x21bae5['where']=qs[_0x8db2('0x39')](_['pick'](_0x1687ed[_0x8db2('0x30')],_0xa54ea3[_0x8db2('0x39')]),_0xbc5366);if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]){_0x21bae5['where']=_['merge'](_0x21bae5[_0x8db2('0x3b')],{'$or':_[_0x8db2('0x2f')](_0xbc5366,function(_0x5dc2b4){if(_0x5dc2b4[_0x8db2('0x2d')]!==_0x8db2('0x3c')){var _0x656dd2={};_0x656dd2[_0x5dc2b4['name']]={'$like':'%'+_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]+'%'};return _0x656dd2;}})});}_0x21bae5=_[_0x8db2('0x3d')]({},_0x21bae5,_0x1687ed[_0x8db2('0x3e')]);var _0x2e6f0c={'where':_0x21bae5[_0x8db2('0x3b')]};return db[_0x8db2('0x2b')][_0x8db2('0x1e')](_0x2e6f0c)[_0x8db2('0x24')](function(_0x63c561){_0x3124d5[_0x8db2('0x1e')]=_0x63c561;if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x21bae5['include']=[{'all':!![]}];}return db[_0x8db2('0x2b')][_0x8db2('0x40')](_0x21bae5);})['then'](function(_0x49a7ae){_0x3124d5[_0x8db2('0x41')]=_0x49a7ae;return _0x3124d5;})['then'](respondWithFilteredResult(_0xbe5ece,_0x21bae5))[_0x8db2('0x42')](handleError(_0xbe5ece,null));};exports[_0x8db2('0x43')]=function(_0x313130,_0x307783){var _0xb4fe2c={'raw':!![],'where':{'id':_0x313130[_0x8db2('0x44')]['id']}},_0x30d606={};_0x30d606['model']=_[_0x8db2('0x31')](db[_0x8db2('0x2b')][_0x8db2('0x45')]);_0x30d606[_0x8db2('0x30')]=_['keys'](_0x313130[_0x8db2('0x30')]);_0x30d606[_0x8db2('0x39')]=_[_0x8db2('0x46')](_0x30d606[_0x8db2('0x32')],_0x30d606['query']);_0xb4fe2c[_0x8db2('0x34')]=_['intersection'](_0x30d606[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x313130[_0x8db2('0x30')]['fields']));_0xb4fe2c['attributes']=_0xb4fe2c[_0x8db2('0x34')]['length']?_0xb4fe2c[_0x8db2('0x34')]:_0x30d606[_0x8db2('0x32')];if(_0x313130[_0x8db2('0x30')][_0x8db2('0x3f')]){_0xb4fe2c[_0x8db2('0x47')]=[{'all':!![]}];}_0xb4fe2c=_[_0x8db2('0x3d')]({},_0xb4fe2c,_0x313130[_0x8db2('0x3e')]);return db[_0x8db2('0x2b')][_0x8db2('0x48')](_0xb4fe2c)[_0x8db2('0x24')](handleEntityNotFound(_0x307783,null))[_0x8db2('0x24')](respondWithResult(_0x307783,null))[_0x8db2('0x42')](handleError(_0x307783,null));};exports['create']=function(_0x449109,_0x2ada52){return db[_0x8db2('0x2b')][_0x8db2('0x49')](_0x449109['body'],{})['then'](respondWithResult(_0x2ada52,0xc9))[_0x8db2('0x42')](handleError(_0x2ada52,null));};exports[_0x8db2('0x23')]=function(_0x164020,_0x4c66e5){if(_0x164020['body']['id']){delete _0x164020['body']['id'];}return db[_0x8db2('0x2b')][_0x8db2('0x48')]({'where':{'id':_0x164020[_0x8db2('0x44')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x4c66e5,null))[_0x8db2('0x24')](saveUpdates(_0x164020[_0x8db2('0x4a')],null))[_0x8db2('0x24')](respondWithResult(_0x4c66e5,null))['catch'](handleError(_0x4c66e5,null));};exports['destroy']=function(_0x3d29bc,_0x18c6ef){return db[_0x8db2('0x2b')][_0x8db2('0x48')]({'where':{'id':_0x3d29bc[_0x8db2('0x44')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x18c6ef,null))[_0x8db2('0x24')](removeEntity(_0x18c6ef,null))[_0x8db2('0x42')](handleError(_0x18c6ef,null));};
\ No newline at end of file
+var _0x2032=['body','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','sendStatus','error','stack','name','send','index','map','CloudProvider','fieldName','type','key','query','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filters','filter','merge','where','options','rows','show','params','keys','rawAttributes','includeAll','find','catch'];(function(_0x3c763c,_0x3caeaa){var _0x5b9fb1=function(_0x255a82){while(--_0x255a82){_0x3c763c['push'](_0x3c763c['shift']());}};_0x5b9fb1(++_0x3caeaa);}(_0x2032,0xd9));var _0x2203=function(_0x5b5a8e,_0x211dca){_0x5b5a8e=_0x5b5a8e-0x0;var _0x3ba1ba=_0x2032[_0x5b5a8e];return _0x3ba1ba;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2203('0x0'));var zipdir=require(_0x2203('0x1'));var jsonpatch=require(_0x2203('0x2'));var rp=require('request-promise');var moment=require(_0x2203('0x3'));var BPromise=require(_0x2203('0x4'));var Mustache=require('mustache');var util=require(_0x2203('0x5'));var path=require(_0x2203('0x6'));var sox=require(_0x2203('0x7'));var csv=require(_0x2203('0x8'));var ejs=require(_0x2203('0x9'));var fs=require('fs');var fs_extra=require(_0x2203('0xa'));var _=require(_0x2203('0xb'));var squel=require(_0x2203('0xc'));var crypto=require(_0x2203('0xd'));var jsforce=require(_0x2203('0xe'));var deskjs=require(_0x2203('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2203('0x10'));var Redis=require('ioredis');var authService=require(_0x2203('0x11'));var qs=require(_0x2203('0x12'));var as=require(_0x2203('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2203('0x14'))('api');var utils=require(_0x2203('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2203('0x16'));var db=require(_0x2203('0x17'))['db'];function respondWithStatusCode(_0x4b9376,_0x583bc7){_0x583bc7=_0x583bc7||0xcc;return function(_0x585c76){if(_0x585c76){return _0x4b9376['sendStatus'](_0x583bc7);}return _0x4b9376['status'](_0x583bc7)[_0x2203('0x18')]();};}function respondWithResult(_0x538b30,_0x592e47){_0x592e47=_0x592e47||0xc8;return function(_0x21a3af){if(_0x21a3af){return _0x538b30[_0x2203('0x19')](_0x592e47)[_0x2203('0x1a')](_0x21a3af);}};}function respondWithFilteredResult(_0x41af85,_0x226209){return function(_0x3fe0a8){if(_0x3fe0a8){var _0x2c36e6=typeof _0x226209[_0x2203('0x1b')]===_0x2203('0x1c')&&typeof _0x226209[_0x2203('0x1d')]==='undefined';var _0x280eda=_0x3fe0a8[_0x2203('0x1e')];var _0x4893ff=_0x2c36e6?0x0:_0x226209[_0x2203('0x1b')];var _0x8906e1=_0x2c36e6?_0x3fe0a8['count']:_0x226209[_0x2203('0x1b')]+_0x226209['limit'];var _0x2904ba;if(_0x8906e1>=_0x280eda){_0x8906e1=_0x280eda;_0x2904ba=0xc8;}else{_0x2904ba=0xce;}_0x41af85[_0x2203('0x19')](_0x2904ba);return _0x41af85[_0x2203('0x1f')](_0x2203('0x20'),_0x4893ff+'-'+_0x8906e1+'/'+_0x280eda)[_0x2203('0x1a')](_0x3fe0a8);}return null;};}function patchUpdates(_0x449039){return function(_0x538c23){try{jsonpatch[_0x2203('0x21')](_0x538c23,_0x449039,!![]);}catch(_0x50822b){return BPromise['reject'](_0x50822b);}return _0x538c23[_0x2203('0x22')]();};}function saveUpdates(_0x496d82,_0x3b8ef9){return function(_0x5bfe61){if(_0x5bfe61){return _0x5bfe61['update'](_0x496d82)[_0x2203('0x23')](function(_0x5e29cd){return _0x5e29cd;});}return null;};}function removeEntity(_0x5c8da9,_0x226374){return function(_0x2718f5){if(_0x2718f5){return _0x2718f5[_0x2203('0x24')]()[_0x2203('0x23')](function(){_0x5c8da9[_0x2203('0x19')](0xcc)[_0x2203('0x18')]();});}};}function handleEntityNotFound(_0x49c12,_0x250349){return function(_0x576378){if(!_0x576378){_0x49c12[_0x2203('0x25')](0x194);}return _0x576378;};}function handleError(_0x36b958,_0x39a11a){_0x39a11a=_0x39a11a||0x1f4;return function(_0x5f11bf){logger[_0x2203('0x26')](_0x5f11bf[_0x2203('0x27')]);if(_0x5f11bf['name']){delete _0x5f11bf[_0x2203('0x28')];}_0x36b958[_0x2203('0x19')](_0x39a11a)[_0x2203('0x29')](_0x5f11bf);};}exports[_0x2203('0x2a')]=function(_0x28ae02,_0x1df508){var _0x9c53f={},_0x5a95c1={},_0x34b8ba={'count':0x0,'rows':[]};var _0x616ed8=_[_0x2203('0x2b')](db[_0x2203('0x2c')]['rawAttributes'],function(_0x3a8e23){return{'name':_0x3a8e23[_0x2203('0x2d')],'type':_0x3a8e23[_0x2203('0x2e')][_0x2203('0x2f')]};});_0x5a95c1['model']=_[_0x2203('0x2b')](_0x616ed8,_0x2203('0x28'));_0x5a95c1['query']=_['keys'](_0x28ae02[_0x2203('0x30')]);_0x5a95c1['filters']=_['intersection'](_0x5a95c1[_0x2203('0x31')],_0x5a95c1[_0x2203('0x30')]);_0x9c53f[_0x2203('0x32')]=_[_0x2203('0x33')](_0x5a95c1[_0x2203('0x31')],qs['fields'](_0x28ae02[_0x2203('0x30')][_0x2203('0x34')]));_0x9c53f['attributes']=_0x9c53f[_0x2203('0x32')][_0x2203('0x35')]?_0x9c53f[_0x2203('0x32')]:_0x5a95c1[_0x2203('0x31')];if(!_0x28ae02[_0x2203('0x30')][_0x2203('0x36')](_0x2203('0x37'))){_0x9c53f[_0x2203('0x1d')]=qs[_0x2203('0x1d')](_0x28ae02['query'][_0x2203('0x1d')]);_0x9c53f[_0x2203('0x1b')]=qs['offset'](_0x28ae02['query'][_0x2203('0x1b')]);}_0x9c53f['order']=qs[_0x2203('0x38')](_0x28ae02[_0x2203('0x30')][_0x2203('0x38')]);_0x9c53f['where']=qs['filters'](_[_0x2203('0x39')](_0x28ae02['query'],_0x5a95c1[_0x2203('0x3a')]),_0x616ed8);if(_0x28ae02['query'][_0x2203('0x3b')]){_0x9c53f['where']=_[_0x2203('0x3c')](_0x9c53f[_0x2203('0x3d')],{'$or':_[_0x2203('0x2b')](_0x616ed8,function(_0x40a793){if(_0x40a793[_0x2203('0x2e')]!=='VIRTUAL'){var _0x5f1561={};_0x5f1561[_0x40a793['name']]={'$like':'%'+_0x28ae02[_0x2203('0x30')][_0x2203('0x3b')]+'%'};return _0x5f1561;}})});}_0x9c53f=_[_0x2203('0x3c')]({},_0x9c53f,_0x28ae02[_0x2203('0x3e')]);var _0x3283fb={'where':_0x9c53f[_0x2203('0x3d')]};return db[_0x2203('0x2c')]['count'](_0x3283fb)[_0x2203('0x23')](function(_0x1b12c3){_0x34b8ba[_0x2203('0x1e')]=_0x1b12c3;if(_0x28ae02[_0x2203('0x30')]['includeAll']){_0x9c53f['include']=[{'all':!![]}];}return db[_0x2203('0x2c')]['findAll'](_0x9c53f);})[_0x2203('0x23')](function(_0x446209){_0x34b8ba[_0x2203('0x3f')]=_0x446209;return _0x34b8ba;})['then'](respondWithFilteredResult(_0x1df508,_0x9c53f))['catch'](handleError(_0x1df508,null));};exports[_0x2203('0x40')]=function(_0x3739f6,_0x368444){var _0x1e09f3={'raw':!![],'where':{'id':_0x3739f6[_0x2203('0x41')]['id']}},_0x372709={};_0x372709['model']=_[_0x2203('0x42')](db[_0x2203('0x2c')][_0x2203('0x43')]);_0x372709[_0x2203('0x30')]=_[_0x2203('0x42')](_0x3739f6[_0x2203('0x30')]);_0x372709[_0x2203('0x3a')]=_[_0x2203('0x33')](_0x372709[_0x2203('0x31')],_0x372709[_0x2203('0x30')]);_0x1e09f3['attributes']=_[_0x2203('0x33')](_0x372709[_0x2203('0x31')],qs[_0x2203('0x34')](_0x3739f6[_0x2203('0x30')]['fields']));_0x1e09f3['attributes']=_0x1e09f3[_0x2203('0x32')]['length']?_0x1e09f3[_0x2203('0x32')]:_0x372709[_0x2203('0x31')];if(_0x3739f6[_0x2203('0x30')][_0x2203('0x44')]){_0x1e09f3['include']=[{'all':!![]}];}_0x1e09f3=_[_0x2203('0x3c')]({},_0x1e09f3,_0x3739f6[_0x2203('0x3e')]);return db['CloudProvider'][_0x2203('0x45')](_0x1e09f3)[_0x2203('0x23')](handleEntityNotFound(_0x368444,null))[_0x2203('0x23')](respondWithResult(_0x368444,null))[_0x2203('0x46')](handleError(_0x368444,null));};exports['create']=function(_0x4c1a29,_0x21b8ab){return db['CloudProvider']['create'](_0x4c1a29[_0x2203('0x47')],{})[_0x2203('0x23')](respondWithResult(_0x21b8ab,0xc9))[_0x2203('0x46')](handleError(_0x21b8ab,null));};exports['update']=function(_0x4c1496,_0x131aec){if(_0x4c1496[_0x2203('0x47')]['id']){delete _0x4c1496[_0x2203('0x47')]['id'];}return db[_0x2203('0x2c')][_0x2203('0x45')]({'where':{'id':_0x4c1496[_0x2203('0x41')]['id']}})['then'](handleEntityNotFound(_0x131aec,null))[_0x2203('0x23')](saveUpdates(_0x4c1496['body'],null))[_0x2203('0x23')](respondWithResult(_0x131aec,null))[_0x2203('0x46')](handleError(_0x131aec,null));};exports[_0x2203('0x24')]=function(_0x1e49dd,_0x58b9bb){return db['CloudProvider'][_0x2203('0x45')]({'where':{'id':_0x1e49dd[_0x2203('0x41')]['id']}})[_0x2203('0x23')](handleEntityNotFound(_0x58b9bb,null))[_0x2203('0x23')](removeEntity(_0x58b9bb,null))['catch'](handleError(_0x58b9bb,null));};
\ No newline at end of file
index 137a6a4..143559b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cef=['define','lodash','util','../../config/logger','api','moment','path','../../config/environment'];(function(_0x32bdae,_0x20dd64){var _0x5ceb9d=function(_0x4fae45){while(--_0x4fae45){_0x32bdae['push'](_0x32bdae['shift']());}};_0x5ceb9d(++_0x20dd64);}(_0x3cef,0x1a9));var _0xf3ce=function(_0x2e0ac5,_0x58a84c){_0x2e0ac5=_0x2e0ac5-0x0;var _0x12dea5=_0x3cef[_0x2e0ac5];return _0x12dea5;};'use strict';var _=require(_0xf3ce('0x0'));var util=require(_0xf3ce('0x1'));var logger=require(_0xf3ce('0x2'))(_0xf3ce('0x3'));var moment=require(_0xf3ce('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf3ce('0x5'));var rimraf=require('rimraf');var config=require(_0xf3ce('0x6'));var attributes=require('./cloudProvider.attributes');module['exports']=function(_0x21b4d1,_0x62c418){return _0x21b4d1[_0xf3ce('0x7')]('CloudProvider',attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcff7=['request-promise','rimraf','../../config/environment','exports','cloud_providers','lodash','util','../../config/logger'];(function(_0x377137,_0x5804a1){var _0x2a9c0f=function(_0x3cd087){while(--_0x3cd087){_0x377137['push'](_0x377137['shift']());}};_0x2a9c0f(++_0x5804a1);}(_0xcff7,0x6d));var _0x7cff=function(_0x4e5549,_0xf515b2){_0x4e5549=_0x4e5549-0x0;var _0x448296=_0xcff7[_0x4e5549];return _0x448296;};'use strict';var _=require(_0x7cff('0x0'));var util=require(_0x7cff('0x1'));var logger=require(_0x7cff('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x7cff('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7cff('0x4'));var config=require(_0x7cff('0x5'));var attributes=require('./cloudProvider.attributes');module[_0x7cff('0x6')]=function(_0x2e57d3,_0x26e1e6){return _0x2e57d3['define']('CloudProvider',attributes,{'tableName':_0x7cff('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a58b25a..17db555 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34bd=['code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','request','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2e30b0,_0x3be40e){var _0x5167d4=function(_0x24d1db){while(--_0x24d1db){_0x2e30b0['push'](_0x2e30b0['shift']());}};_0x5167d4(++_0x3be40e);}(_0x34bd,0x1d2));var _0xd34b=function(_0x2af276,_0xb15ec5){_0x2af276=_0x2af276-0x0;var _0x4c586e=_0x34bd[_0x2af276];return _0x4c586e;};'use strict';var _=require(_0xd34b('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xd34b('0x1'));var rs=require(_0xd34b('0x2'));var fs=require('fs');var Redis=require(_0xd34b('0x3'));var db=require(_0xd34b('0x4'))['db'];var utils=require(_0xd34b('0x5'));var logger=require(_0xd34b('0x6'))(_0xd34b('0x7'));var config=require('../../config/environment');var jayson=require(_0xd34b('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x56e3eb,_0x30d93b,_0x3654a5){return new BPromise(function(_0xf51a08,_0x25bce7){return client[_0xd34b('0x9')](_0x56e3eb,_0x3654a5)[_0xd34b('0xa')](function(_0x738328){logger[_0xd34b('0xb')](_0xd34b('0xc'),_0x30d93b,_0xd34b('0xd'));logger[_0xd34b('0xe')](_0xd34b('0xf'),_0x30d93b,'request\x20sent',JSON[_0xd34b('0x10')](_0x738328));if(_0x738328['error']){if(_0x738328[_0xd34b('0x11')][_0xd34b('0x12')]===0x1f4){logger[_0xd34b('0x11')](_0xd34b('0xc'),_0x30d93b,_0x738328[_0xd34b('0x11')][_0xd34b('0x13')]);return _0x25bce7(_0x738328['error'][_0xd34b('0x13')]);}logger[_0xd34b('0x11')]('CloudProvider,\x20%s,\x20%s',_0x30d93b,_0x738328[_0xd34b('0x11')][_0xd34b('0x13')]);return _0xf51a08(_0x738328[_0xd34b('0x11')]['message']);}else{logger[_0xd34b('0xb')](_0xd34b('0xc'),_0x30d93b,'request\x20sent');_0xf51a08(_0x738328[_0xd34b('0x14')]['message']);}})[_0xd34b('0x15')](function(_0x438b61){logger[_0xd34b('0x11')]('CloudProvider,\x20%s,\x20%s',_0x30d93b,_0x438b61);_0x25bce7(_0x438b61);});});}
\ No newline at end of file
+var _0xb10b=['stringify','error','message','result','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CloudProvider,\x20%s,\x20%s','CloudProvider,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x4e757c,_0x20ea62){var _0x517d89=function(_0x626fcb){while(--_0x626fcb){_0x4e757c['push'](_0x4e757c['shift']());}};_0x517d89(++_0x20ea62);}(_0xb10b,0x12a));var _0xbb10=function(_0x1c7586,_0x1d46bd){_0x1c7586=_0x1c7586-0x0;var _0x3bd9a1=_0xb10b[_0x1c7586];return _0x3bd9a1;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}
\ No newline at end of file
index 1e49cb8..b9d594f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8545=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cloudProvider.controller','get','index','/:id','isAuthenticated','show','post','create','put','delete','destroy','exports','path','connect-timeout'];(function(_0x1b92a6,_0x14444b){var _0x24be5b=function(_0x3a5fb5){while(--_0x3a5fb5){_0x1b92a6['push'](_0x1b92a6['shift']());}};_0x24be5b(++_0x14444b);}(_0x8545,0xa9));var _0x5854=function(_0x1da527,_0x2dc953){_0x1da527=_0x1da527-0x0;var _0x40fc7c=_0x8545[_0x1da527];return _0x40fc7c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x5854('0x0'));var timeout=require(_0x5854('0x1'));var express=require(_0x5854('0x2'));var router=express[_0x5854('0x3')]();var fs_extra=require(_0x5854('0x4'));var auth=require(_0x5854('0x5'));var interaction=require(_0x5854('0x6'));var config=require('../../config/environment');var controller=require(_0x5854('0x7'));router[_0x5854('0x8')]('/',auth['isAuthenticated'](),controller[_0x5854('0x9')]);router['get'](_0x5854('0xa'),auth[_0x5854('0xb')](),controller[_0x5854('0xc')]);router[_0x5854('0xd')]('/',auth[_0x5854('0xb')](),controller[_0x5854('0xe')]);router[_0x5854('0xf')](_0x5854('0xa'),auth[_0x5854('0xb')](),controller['update']);router[_0x5854('0x10')](_0x5854('0xa'),auth[_0x5854('0xb')](),controller[_0x5854('0x11')]);module[_0x5854('0x12')]=router;
\ No newline at end of file
+var _0x0530=['delete','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./cloudProvider.controller','get','isAuthenticated','index','post','create','/:id'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0x0530,0x72));var _0x0053=function(_0x383dc5,_0x48a679){_0x383dc5=_0x383dc5-0x0;var _0x1381ba=_0x0530[_0x383dc5];return _0x1381ba;};'use strict';var multer=require(_0x0053('0x0'));var util=require(_0x0053('0x1'));var path=require('path');var timeout=require(_0x0053('0x2'));var express=require('express');var router=express[_0x0053('0x3')]();var fs_extra=require(_0x0053('0x4'));var auth=require(_0x0053('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x0053('0x6'));var controller=require(_0x0053('0x7'));router[_0x0053('0x8')]('/',auth[_0x0053('0x9')](),controller[_0x0053('0xa')]);router['get']('/:id',auth[_0x0053('0x9')](),controller['show']);router[_0x0053('0xb')]('/',auth[_0x0053('0x9')](),controller[_0x0053('0xc')]);router['put'](_0x0053('0xd'),auth[_0x0053('0x9')](),controller['update']);router[_0x0053('0xe')](_0x0053('0xd'),auth[_0x0053('0x9')](),controller['destroy']);module[_0x0053('0xf')]=router;
\ No newline at end of file
index b99a1aa..147cf5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41d2=['sequelize','exports','STRING','name'];(function(_0x6dd9bb,_0x4eed27){var _0x1ea414=function(_0x35cb90){while(--_0x35cb90){_0x6dd9bb['push'](_0x6dd9bb['shift']());}};_0x1ea414(++_0x4eed27);}(_0x41d2,0x138));var _0x241d=function(_0x4b2436,_0x452299){_0x4b2436=_0x4b2436-0x0;var _0x4f5ab2=_0x41d2[_0x4b2436];return _0x4f5ab2;};'use strict';var Sequelize=require(_0x241d('0x0'));module[_0x241d('0x1')]={'name':{'type':Sequelize[_0x241d('0x2')],'unique':_0x241d('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x241d('0x2')]},'companyId':{'type':Sequelize[_0x241d('0x2')]},'website':{'type':Sequelize[_0x241d('0x2')]},'phone':{'type':Sequelize[_0x241d('0x2')]},'fax':{'type':Sequelize[_0x241d('0x2')]},'type':{'type':Sequelize[_0x241d('0x2')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x241d('0x2')]},'city':{'type':Sequelize[_0x241d('0x2')]},'country':{'type':Sequelize[_0x241d('0x2')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x241d('0x2')]},'sStreet':{'type':Sequelize[_0x241d('0x2')]},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize[_0x241d('0x2')]},'sCountry':{'type':Sequelize[_0x241d('0x2')]},'description':{'type':Sequelize[_0x241d('0x2')]}};
\ No newline at end of file
+var _0x8bd6=['exports','name','STRING'];(function(_0x537828,_0xbc42fb){var _0x387347=function(_0xf2ff5e){while(--_0xf2ff5e){_0x537828['push'](_0x537828['shift']());}};_0x387347(++_0xbc42fb);}(_0x8bd6,0x126));var _0x68bd=function(_0x392d30,_0x4e15bf){_0x392d30=_0x392d30-0x0;var _0x2c0530=_0x8bd6[_0x392d30];return _0x2c0530;};'use strict';var Sequelize=require('sequelize');module[_0x68bd('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x68bd('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x68bd('0x2')]},'fax':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x68bd('0x2')]},'city':{'type':Sequelize[_0x68bd('0x2')]},'country':{'type':Sequelize[_0x68bd('0x2')]},'email':{'type':Sequelize[_0x68bd('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x68bd('0x2')]},'sStreet':{'type':Sequelize[_0x68bd('0x2')]},'sPostalCode':{'type':Sequelize[_0x68bd('0x2')]},'sCity':{'type':Sequelize[_0x68bd('0x2')]},'sCountry':{'type':Sequelize[_0x68bd('0x2')]},'description':{'type':Sequelize[_0x68bd('0x2')]}};
\ No newline at end of file
index ab925ea..e079528 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6862=['../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','Companies','UserProfileResource','sendStatus','error','stack','name','send','CmCompany','describe','keys','query','filters','model','attributes','intersection','fields','length','nolimit','order','sort','pick','filter','merge','map','options','includeAll','catch','params','include','find','create','body','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addContacts','CmContact','ids','findOne','rawAttributes','where','getContacts','hasOwnProperty','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service'];(function(_0x42bdad,_0x12836c){var _0x122626=function(_0x2eb29c){while(--_0x2eb29c){_0x42bdad['push'](_0x42bdad['shift']());}};_0x122626(++_0x12836c);}(_0x6862,0x13a));var _0x2686=function(_0x48f4ed,_0x2d10c5){_0x48f4ed=_0x48f4ed-0x0;var _0x766915=_0x6862[_0x48f4ed];return _0x766915;};'use strict';var emlformat=require(_0x2686('0x0'));var rimraf=require(_0x2686('0x1'));var zipdir=require(_0x2686('0x2'));var jsonpatch=require(_0x2686('0x3'));var rp=require(_0x2686('0x4'));var moment=require(_0x2686('0x5'));var BPromise=require(_0x2686('0x6'));var Mustache=require('mustache');var util=require(_0x2686('0x7'));var path=require('path');var sox=require(_0x2686('0x8'));var csv=require('to-csv');var ejs=require(_0x2686('0x9'));var fs=require('fs');var fs_extra=require(_0x2686('0xa'));var _=require(_0x2686('0xb'));var squel=require('squel');var crypto=require(_0x2686('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x2686('0xd'));var toCsv=require(_0x2686('0xe'));var querystring=require(_0x2686('0xf'));var Papa=require(_0x2686('0x10'));var Redis=require('ioredis');var authService=require(_0x2686('0x11'));var qs=require(_0x2686('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2686('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x2686('0x14'));var config=require(_0x2686('0x15'));var licenseUtil=require(_0x2686('0x16'));var db=require(_0x2686('0x17'))['db'];function respondWithStatusCode(_0x972e46,_0x36f553){_0x36f553=_0x36f553||0xcc;return function(_0x11c0d7){if(_0x11c0d7){return _0x972e46['sendStatus'](_0x36f553);}return _0x972e46[_0x2686('0x18')](_0x36f553)[_0x2686('0x19')]();};}function respondWithResult(_0x1e5fb8,_0x358c77){_0x358c77=_0x358c77||0xc8;return function(_0x2690fe){if(_0x2690fe){return _0x1e5fb8['status'](_0x358c77)[_0x2686('0x1a')](_0x2690fe);}};}function respondWithFilteredResult(_0x42e11a,_0x3019eb){return function(_0x96fe0b){if(_0x96fe0b){var _0x5d74b6=typeof _0x3019eb[_0x2686('0x1b')]===_0x2686('0x1c')&&typeof _0x3019eb[_0x2686('0x1d')]===_0x2686('0x1c');var _0x4aeb62=_0x96fe0b[_0x2686('0x1e')];var _0x6e3f5e=_0x5d74b6?0x0:_0x3019eb[_0x2686('0x1b')];var _0x5c5e8b=_0x5d74b6?_0x96fe0b[_0x2686('0x1e')]:_0x3019eb[_0x2686('0x1b')]+_0x3019eb[_0x2686('0x1d')];var _0x1e653d;if(_0x5c5e8b>=_0x4aeb62){_0x5c5e8b=_0x4aeb62;_0x1e653d=0xc8;}else{_0x1e653d=0xce;}_0x42e11a[_0x2686('0x18')](_0x1e653d);return _0x42e11a[_0x2686('0x1f')](_0x2686('0x20'),_0x6e3f5e+'-'+_0x5c5e8b+'/'+_0x4aeb62)[_0x2686('0x1a')](_0x96fe0b);}return null;};}function patchUpdates(_0x395666){return function(_0x190b2a){try{jsonpatch[_0x2686('0x21')](_0x190b2a,_0x395666,!![]);}catch(_0x467db9){return BPromise['reject'](_0x467db9);}return _0x190b2a[_0x2686('0x22')]();};}function saveUpdates(_0x299a1f,_0x2cd18a){return function(_0x5a987d){if(_0x5a987d){return _0x5a987d[_0x2686('0x23')](_0x299a1f)[_0x2686('0x24')](function(_0x40ea2d){return _0x40ea2d;});}return null;};}function removeEntity(_0x28622e,_0x4af4fe){return function(_0x45570d){if(_0x45570d){return _0x45570d[_0x2686('0x25')]()[_0x2686('0x24')](function(){var _0x18aaef=_0x45570d[_0x2686('0x26')]({'plain':!![]});var _0x27c5ce=_0x2686('0x27');return db[_0x2686('0x28')][_0x2686('0x25')]({'where':{'type':_0x27c5ce,'resourceId':_0x18aaef['id']}})[_0x2686('0x24')](function(){return _0x45570d;});})[_0x2686('0x24')](function(){_0x28622e['status'](0xcc)[_0x2686('0x19')]();});}};}function handleEntityNotFound(_0x371ff3,_0x4abd0f){return function(_0x18a4fc){if(!_0x18a4fc){_0x371ff3[_0x2686('0x29')](0x194);}return _0x18a4fc;};}function handleError(_0x3c9db4,_0x181b61){_0x181b61=_0x181b61||0x1f4;return function(_0x41b664){logger[_0x2686('0x2a')](_0x41b664[_0x2686('0x2b')]);if(_0x41b664['name']){delete _0x41b664[_0x2686('0x2c')];}_0x3c9db4[_0x2686('0x18')](_0x181b61)[_0x2686('0x2d')](_0x41b664);};}exports['index']=function(_0x2e8cb4,_0x3b9334){var _0x132ee7={},_0x59e5cc={},_0x558c89={'count':0x0,'rows':[]};return db[_0x2686('0x2e')][_0x2686('0x2f')]()[_0x2686('0x24')](function(_0x5ce91e){_0x59e5cc['model']=_[_0x2686('0x30')](_0x5ce91e);_0x59e5cc[_0x2686('0x31')]=_[_0x2686('0x30')](_0x2e8cb4['query']);_0x59e5cc[_0x2686('0x32')]=_['intersection'](_0x59e5cc[_0x2686('0x33')],_0x59e5cc['query']);_0x132ee7[_0x2686('0x34')]=_[_0x2686('0x35')](_0x59e5cc['model'],qs['fields'](_0x2e8cb4['query'][_0x2686('0x36')]));_0x132ee7[_0x2686('0x34')]=_0x132ee7[_0x2686('0x34')][_0x2686('0x37')]?_0x132ee7[_0x2686('0x34')]:_0x59e5cc['model'];if(!_0x2e8cb4[_0x2686('0x31')]['hasOwnProperty'](_0x2686('0x38'))){_0x132ee7[_0x2686('0x1d')]=qs[_0x2686('0x1d')](_0x2e8cb4[_0x2686('0x31')][_0x2686('0x1d')]);_0x132ee7[_0x2686('0x1b')]=qs['offset'](_0x2e8cb4[_0x2686('0x31')][_0x2686('0x1b')]);}_0x132ee7[_0x2686('0x39')]=qs[_0x2686('0x3a')](_0x2e8cb4[_0x2686('0x31')][_0x2686('0x3a')]);_0x132ee7['where']=qs['filters'](_[_0x2686('0x3b')](_0x2e8cb4[_0x2686('0x31')],_0x59e5cc[_0x2686('0x32')]),_0x5ce91e);if(_0x2e8cb4[_0x2686('0x31')][_0x2686('0x3c')]){_0x132ee7['where']=_[_0x2686('0x3d')](_0x132ee7['where'],{'$or':_[_0x2686('0x3e')](_0x132ee7['attributes'],function(_0x1af4ae){var _0x355fa4={};_0x355fa4[_0x1af4ae]={'$like':'%'+_0x2e8cb4[_0x2686('0x31')]['filter']+'%'};return _0x355fa4;})});}_0x132ee7=_['merge']({},_0x132ee7,_0x2e8cb4[_0x2686('0x3f')]);var _0x2a605e={'where':_0x132ee7['where']};return db['CmCompany'][_0x2686('0x1e')](_0x2a605e)[_0x2686('0x24')](function(_0xfe8b8b){_0x558c89[_0x2686('0x1e')]=_0xfe8b8b;if(_0x2e8cb4['query'][_0x2686('0x40')]){_0x132ee7['include']=[{'all':!![]}];}return db[_0x2686('0x2e')]['findAll'](_0x132ee7);})[_0x2686('0x24')](function(_0xfd62cd){_0x558c89['rows']=_0xfd62cd;return _0x558c89;})['then'](respondWithFilteredResult(_0x3b9334,_0x132ee7))[_0x2686('0x41')](handleError(_0x3b9334,null));})['catch'](handleError(_0x3b9334,null));};exports['show']=function(_0x242b53,_0x349f83){var _0x570f8e={'raw':![],'where':{'id':_0x242b53[_0x2686('0x42')]['id']}},_0x4eae82={};_0x4eae82[_0x2686('0x33')]=_[_0x2686('0x30')](db[_0x2686('0x2e')]['rawAttributes']);_0x4eae82[_0x2686('0x31')]=_[_0x2686('0x30')](_0x242b53[_0x2686('0x31')]);_0x4eae82[_0x2686('0x32')]=_[_0x2686('0x35')](_0x4eae82[_0x2686('0x33')],_0x4eae82[_0x2686('0x31')]);_0x570f8e['attributes']=_[_0x2686('0x35')](_0x4eae82[_0x2686('0x33')],qs[_0x2686('0x36')](_0x242b53[_0x2686('0x31')]['fields']));_0x570f8e[_0x2686('0x34')]=_0x570f8e['attributes'][_0x2686('0x37')]?_0x570f8e[_0x2686('0x34')]:_0x4eae82[_0x2686('0x33')];if(_0x242b53[_0x2686('0x31')]['includeAll']){_0x570f8e[_0x2686('0x43')]=[{'all':!![]}];}_0x570f8e=_['merge']({},_0x570f8e,_0x242b53['options']);return db[_0x2686('0x2e')][_0x2686('0x44')](_0x570f8e)['then'](handleEntityNotFound(_0x349f83,null))[_0x2686('0x24')](respondWithResult(_0x349f83,null))[_0x2686('0x41')](handleError(_0x349f83,null));};exports['create']=function(_0x7439e9,_0x2c4fd1){return db[_0x2686('0x2e')][_0x2686('0x45')](_0x7439e9[_0x2686('0x46')],{})[_0x2686('0x24')](function(_0x59dca4){var _0x44dc04=_0x7439e9[_0x2686('0x47')][_0x2686('0x26')]({'plain':!![]});if(!_0x44dc04)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x44dc04['role']==='user'){var _0x140bbc=_0x59dca4[_0x2686('0x26')]({'plain':!![]});var _0x237fad=_0x2686('0x27');return db[_0x2686('0x48')][_0x2686('0x44')]({'where':{'name':_0x237fad,'userProfileId':_0x44dc04['userProfileId']},'raw':!![]})['then'](function(_0x2d1ab5){if(_0x2d1ab5&&_0x2d1ab5[_0x2686('0x49')]===0x0){return db[_0x2686('0x28')][_0x2686('0x45')]({'name':_0x140bbc[_0x2686('0x2c')],'resourceId':_0x140bbc['id'],'type':_0x2d1ab5[_0x2686('0x2c')],'sectionId':_0x2d1ab5['id']},{})[_0x2686('0x24')](function(){return _0x59dca4;});}else{return _0x59dca4;}})['catch'](function(_0x48df80){logger[_0x2686('0x2a')](_0x2686('0x4a'),_0x48df80);throw _0x48df80;});}return _0x59dca4;})[_0x2686('0x24')](respondWithResult(_0x2c4fd1,0xc9))['catch'](handleError(_0x2c4fd1,null));};exports[_0x2686('0x23')]=function(_0x2e49b9,_0x1efdf7){if(_0x2e49b9[_0x2686('0x46')]['id']){delete _0x2e49b9['body']['id'];}return db['CmCompany'][_0x2686('0x44')]({'where':{'id':_0x2e49b9['params']['id']}})[_0x2686('0x24')](handleEntityNotFound(_0x1efdf7,null))[_0x2686('0x24')](saveUpdates(_0x2e49b9[_0x2686('0x46')],null))[_0x2686('0x24')](respondWithResult(_0x1efdf7,null))[_0x2686('0x41')](handleError(_0x1efdf7,null));};exports['destroy']=function(_0x2b4cae,_0x1c38e3){return db[_0x2686('0x2e')][_0x2686('0x44')]({'where':{'id':_0x2b4cae[_0x2686('0x42')]['id']}})[_0x2686('0x24')](handleEntityNotFound(_0x1c38e3,null))[_0x2686('0x24')](removeEntity(_0x1c38e3,null))[_0x2686('0x41')](handleError(_0x1c38e3,null));};exports[_0x2686('0x2f')]=function(_0xdfd617,_0x5e522f){return db[_0x2686('0x2e')]['describe']()['then'](respondWithResult(_0x5e522f,null))['catch'](handleError(_0x5e522f,null));};exports[_0x2686('0x4b')]=function(_0xbf4b5,_0x15fd43,_0x48e907){return db[_0x2686('0x4c')][_0x2686('0x44')]({'where':{'id':_0xbf4b5[_0x2686('0x42')]['id']}})[_0x2686('0x24')](handleEntityNotFound(_0x15fd43,null))[_0x2686('0x24')](function(_0x4b9f5d){if(_0x4b9f5d){return _0x4b9f5d[_0x2686('0x4b')](_0xbf4b5[_0x2686('0x46')]['ids'],_['omit'](_0xbf4b5[_0x2686('0x46')],[_0x2686('0x4d'),'id'])||{});}})[_0x2686('0x24')](respondWithResult(_0x15fd43,null))[_0x2686('0x41')](handleError(_0x15fd43,null));};exports['getContacts']=function(_0x5e5de3,_0x1f340a,_0x174859){var _0x2d1891={};var _0x19355c={};var _0x59f283;var _0x379ffd;return db['CmCompany'][_0x2686('0x4e')]({'where':{'id':_0x5e5de3['params']['id']}})[_0x2686('0x24')](handleEntityNotFound(_0x1f340a,null))[_0x2686('0x24')](function(_0x5dea00){if(_0x5dea00){_0x59f283=_0x5dea00;_0x19355c[_0x2686('0x33')]=_[_0x2686('0x30')](db['CmContact'][_0x2686('0x4f')]);_0x19355c['query']=_['keys'](_0x5e5de3[_0x2686('0x31')]);_0x19355c['filters']=_[_0x2686('0x35')](_0x19355c['model'],_0x19355c[_0x2686('0x31')]);_0x2d1891[_0x2686('0x34')]=_['intersection'](_0x19355c['model'],qs[_0x2686('0x36')](_0x5e5de3[_0x2686('0x31')][_0x2686('0x36')]));_0x2d1891['attributes']=_0x2d1891[_0x2686('0x34')][_0x2686('0x37')]?_0x2d1891[_0x2686('0x34')]:_0x19355c[_0x2686('0x33')];_0x2d1891[_0x2686('0x39')]=qs[_0x2686('0x3a')](_0x5e5de3[_0x2686('0x31')][_0x2686('0x3a')]);_0x2d1891[_0x2686('0x50')]=qs['filters'](_[_0x2686('0x3b')](_0x5e5de3[_0x2686('0x31')],_0x19355c[_0x2686('0x32')]));if(_0x5e5de3['query'][_0x2686('0x3c')]){_0x2d1891[_0x2686('0x50')]=_['merge'](_0x2d1891[_0x2686('0x50')],{'$or':_[_0x2686('0x3e')](_0x2d1891['attributes'],function(_0x4f46e1){var _0x1b5b20={};_0x1b5b20[_0x4f46e1]={'$like':'%'+_0x5e5de3[_0x2686('0x31')][_0x2686('0x3c')]+'%'};return _0x1b5b20;})});}_0x2d1891=_['merge']({},_0x2d1891,_0x5e5de3[_0x2686('0x3f')]);return _0x59f283[_0x2686('0x51')](_0x2d1891);}})[_0x2686('0x24')](function(_0x1f694f){if(_0x1f694f){_0x379ffd=_0x1f694f[_0x2686('0x37')];if(!_0x5e5de3[_0x2686('0x31')][_0x2686('0x52')](_0x2686('0x38'))){_0x2d1891['limit']=qs[_0x2686('0x1d')](_0x5e5de3['query'][_0x2686('0x1d')]);_0x2d1891['offset']=qs['offset'](_0x5e5de3[_0x2686('0x31')]['offset']);}return _0x59f283[_0x2686('0x51')](_0x2d1891);}})['then'](function(_0xbdba89){if(_0xbdba89){return _0xbdba89?{'count':_0x379ffd,'rows':_0xbdba89}:null;}})[_0x2686('0x24')](respondWithResult(_0x1f340a,null))['catch'](handleError(_0x1f340a,null));};
\ No newline at end of file
+var _0xad42=['order','sort','where','filters','pick','filter','merge','map','options','includeAll','include','rows','catch','rawAttributes','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','update','params','addContacts','ids','omit','getContacts','findOne','CmContact','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','reject','save','then','get','Companies','destroy','error','stack','name','index','CmCompany','describe','model','keys','query','intersection','fields','attributes','hasOwnProperty'];(function(_0x2a6585,_0x4097d6){var _0x42c6a9=function(_0x38b32c){while(--_0x38b32c){_0x2a6585['push'](_0x2a6585['shift']());}};_0x42c6a9(++_0x4097d6);}(_0xad42,0x7e));var _0x2ad4=function(_0x52d504,_0x2cbabe){_0x52d504=_0x52d504-0x0;var _0x39f039=_0xad42[_0x52d504];return _0x39f039;};'use strict';var emlformat=require(_0x2ad4('0x0'));var rimraf=require(_0x2ad4('0x1'));var zipdir=require(_0x2ad4('0x2'));var jsonpatch=require(_0x2ad4('0x3'));var rp=require(_0x2ad4('0x4'));var moment=require(_0x2ad4('0x5'));var BPromise=require(_0x2ad4('0x6'));var Mustache=require(_0x2ad4('0x7'));var util=require(_0x2ad4('0x8'));var path=require(_0x2ad4('0x9'));var sox=require(_0x2ad4('0xa'));var csv=require(_0x2ad4('0xb'));var ejs=require(_0x2ad4('0xc'));var fs=require('fs');var fs_extra=require(_0x2ad4('0xd'));var _=require(_0x2ad4('0xe'));var squel=require(_0x2ad4('0xf'));var crypto=require(_0x2ad4('0x10'));var jsforce=require(_0x2ad4('0x11'));var deskjs=require(_0x2ad4('0x12'));var toCsv=require(_0x2ad4('0xb'));var querystring=require(_0x2ad4('0x13'));var Papa=require(_0x2ad4('0x14'));var Redis=require(_0x2ad4('0x15'));var authService=require(_0x2ad4('0x16'));var qs=require(_0x2ad4('0x17'));var as=require(_0x2ad4('0x18'));var hardwareService=require(_0x2ad4('0x19'));var logger=require(_0x2ad4('0x1a'))(_0x2ad4('0x1b'));var utils=require(_0x2ad4('0x1c'));var config=require('../../config/environment');var licenseUtil=require(_0x2ad4('0x1d'));var db=require(_0x2ad4('0x1e'))['db'];function respondWithStatusCode(_0xeb0901,_0x27a346){_0x27a346=_0x27a346||0xcc;return function(_0x203cd2){if(_0x203cd2){return _0xeb0901[_0x2ad4('0x1f')](_0x27a346);}return _0xeb0901[_0x2ad4('0x20')](_0x27a346)[_0x2ad4('0x21')]();};}function respondWithResult(_0x54b6a8,_0x24806b){_0x24806b=_0x24806b||0xc8;return function(_0x43bef7){if(_0x43bef7){return _0x54b6a8['status'](_0x24806b)['json'](_0x43bef7);}};}function respondWithFilteredResult(_0x546b66,_0x541bbc){return function(_0x478f54){if(_0x478f54){var _0x509488=typeof _0x541bbc['offset']===_0x2ad4('0x22')&&typeof _0x541bbc[_0x2ad4('0x23')]==='undefined';var _0x412fac=_0x478f54[_0x2ad4('0x24')];var _0x2d2fc0=_0x509488?0x0:_0x541bbc['offset'];var _0x582741=_0x509488?_0x478f54['count']:_0x541bbc[_0x2ad4('0x25')]+_0x541bbc['limit'];var _0x8eb2cb;if(_0x582741>=_0x412fac){_0x582741=_0x412fac;_0x8eb2cb=0xc8;}else{_0x8eb2cb=0xce;}_0x546b66[_0x2ad4('0x20')](_0x8eb2cb);return _0x546b66[_0x2ad4('0x26')](_0x2ad4('0x27'),_0x2d2fc0+'-'+_0x582741+'/'+_0x412fac)[_0x2ad4('0x28')](_0x478f54);}return null;};}function patchUpdates(_0x165c3c){return function(_0x4ad99a){try{jsonpatch['apply'](_0x4ad99a,_0x165c3c,!![]);}catch(_0x2fe947){return BPromise[_0x2ad4('0x29')](_0x2fe947);}return _0x4ad99a[_0x2ad4('0x2a')]();};}function saveUpdates(_0x398766,_0x268a25){return function(_0x5df1bf){if(_0x5df1bf){return _0x5df1bf['update'](_0x398766)[_0x2ad4('0x2b')](function(_0x31358){return _0x31358;});}return null;};}function removeEntity(_0x13f972,_0x496a0a){return function(_0x23ee38){if(_0x23ee38){return _0x23ee38['destroy']()[_0x2ad4('0x2b')](function(){var _0x918a0b=_0x23ee38[_0x2ad4('0x2c')]({'plain':!![]});var _0x284e73=_0x2ad4('0x2d');return db['UserProfileResource'][_0x2ad4('0x2e')]({'where':{'type':_0x284e73,'resourceId':_0x918a0b['id']}})['then'](function(){return _0x23ee38;});})[_0x2ad4('0x2b')](function(){_0x13f972[_0x2ad4('0x20')](0xcc)[_0x2ad4('0x21')]();});}};}function handleEntityNotFound(_0x2700e3,_0x548902){return function(_0x52c979){if(!_0x52c979){_0x2700e3['sendStatus'](0x194);}return _0x52c979;};}function handleError(_0xbfe36,_0x46807e){_0x46807e=_0x46807e||0x1f4;return function(_0x23a9b5){logger[_0x2ad4('0x2f')](_0x23a9b5[_0x2ad4('0x30')]);if(_0x23a9b5[_0x2ad4('0x31')]){delete _0x23a9b5[_0x2ad4('0x31')];}_0xbfe36['status'](_0x46807e)['send'](_0x23a9b5);};}exports[_0x2ad4('0x32')]=function(_0x8a41b8,_0x25c232){var _0x55b880={},_0x176ca1={},_0x4386ed={'count':0x0,'rows':[]};return db[_0x2ad4('0x33')][_0x2ad4('0x34')]()[_0x2ad4('0x2b')](function(_0x19775e){_0x176ca1[_0x2ad4('0x35')]=_[_0x2ad4('0x36')](_0x19775e);_0x176ca1[_0x2ad4('0x37')]=_[_0x2ad4('0x36')](_0x8a41b8[_0x2ad4('0x37')]);_0x176ca1['filters']=_[_0x2ad4('0x38')](_0x176ca1[_0x2ad4('0x35')],_0x176ca1[_0x2ad4('0x37')]);_0x55b880['attributes']=_[_0x2ad4('0x38')](_0x176ca1[_0x2ad4('0x35')],qs[_0x2ad4('0x39')](_0x8a41b8[_0x2ad4('0x37')]['fields']));_0x55b880['attributes']=_0x55b880[_0x2ad4('0x3a')]['length']?_0x55b880[_0x2ad4('0x3a')]:_0x176ca1['model'];if(!_0x8a41b8[_0x2ad4('0x37')][_0x2ad4('0x3b')]('nolimit')){_0x55b880[_0x2ad4('0x23')]=qs['limit'](_0x8a41b8[_0x2ad4('0x37')][_0x2ad4('0x23')]);_0x55b880['offset']=qs[_0x2ad4('0x25')](_0x8a41b8[_0x2ad4('0x37')]['offset']);}_0x55b880[_0x2ad4('0x3c')]=qs['sort'](_0x8a41b8[_0x2ad4('0x37')][_0x2ad4('0x3d')]);_0x55b880[_0x2ad4('0x3e')]=qs[_0x2ad4('0x3f')](_[_0x2ad4('0x40')](_0x8a41b8[_0x2ad4('0x37')],_0x176ca1[_0x2ad4('0x3f')]),_0x19775e);if(_0x8a41b8[_0x2ad4('0x37')][_0x2ad4('0x41')]){_0x55b880[_0x2ad4('0x3e')]=_[_0x2ad4('0x42')](_0x55b880[_0x2ad4('0x3e')],{'$or':_[_0x2ad4('0x43')](_0x55b880[_0x2ad4('0x3a')],function(_0x48ac02){var _0x59d2b8={};_0x59d2b8[_0x48ac02]={'$like':'%'+_0x8a41b8[_0x2ad4('0x37')][_0x2ad4('0x41')]+'%'};return _0x59d2b8;})});}_0x55b880=_[_0x2ad4('0x42')]({},_0x55b880,_0x8a41b8[_0x2ad4('0x44')]);var _0x318459={'where':_0x55b880[_0x2ad4('0x3e')]};return db[_0x2ad4('0x33')]['count'](_0x318459)[_0x2ad4('0x2b')](function(_0x2365db){_0x4386ed['count']=_0x2365db;if(_0x8a41b8[_0x2ad4('0x37')][_0x2ad4('0x45')]){_0x55b880[_0x2ad4('0x46')]=[{'all':!![]}];}return db[_0x2ad4('0x33')]['findAll'](_0x55b880);})[_0x2ad4('0x2b')](function(_0x526dd4){_0x4386ed[_0x2ad4('0x47')]=_0x526dd4;return _0x4386ed;})[_0x2ad4('0x2b')](respondWithFilteredResult(_0x25c232,_0x55b880))[_0x2ad4('0x48')](handleError(_0x25c232,null));})[_0x2ad4('0x48')](handleError(_0x25c232,null));};exports['show']=function(_0x3fe80b,_0x4b4aa5){var _0x4a6059={'raw':![],'where':{'id':_0x3fe80b['params']['id']}},_0x1f3cc1={};_0x1f3cc1[_0x2ad4('0x35')]=_[_0x2ad4('0x36')](db[_0x2ad4('0x33')][_0x2ad4('0x49')]);_0x1f3cc1[_0x2ad4('0x37')]=_[_0x2ad4('0x36')](_0x3fe80b[_0x2ad4('0x37')]);_0x1f3cc1[_0x2ad4('0x3f')]=_[_0x2ad4('0x38')](_0x1f3cc1[_0x2ad4('0x35')],_0x1f3cc1[_0x2ad4('0x37')]);_0x4a6059['attributes']=_[_0x2ad4('0x38')](_0x1f3cc1[_0x2ad4('0x35')],qs['fields'](_0x3fe80b[_0x2ad4('0x37')][_0x2ad4('0x39')]));_0x4a6059[_0x2ad4('0x3a')]=_0x4a6059[_0x2ad4('0x3a')][_0x2ad4('0x4a')]?_0x4a6059[_0x2ad4('0x3a')]:_0x1f3cc1[_0x2ad4('0x35')];if(_0x3fe80b[_0x2ad4('0x37')][_0x2ad4('0x45')]){_0x4a6059[_0x2ad4('0x46')]=[{'all':!![]}];}_0x4a6059=_[_0x2ad4('0x42')]({},_0x4a6059,_0x3fe80b['options']);return db[_0x2ad4('0x33')]['find'](_0x4a6059)[_0x2ad4('0x2b')](handleEntityNotFound(_0x4b4aa5,null))['then'](respondWithResult(_0x4b4aa5,null))[_0x2ad4('0x48')](handleError(_0x4b4aa5,null));};exports[_0x2ad4('0x4b')]=function(_0xc7909a,_0x35e354){return db[_0x2ad4('0x33')][_0x2ad4('0x4b')](_0xc7909a[_0x2ad4('0x4c')],{})['then'](function(_0xef7f1c){var _0x3e4fb8=_0xc7909a[_0x2ad4('0x4d')]['get']({'plain':!![]});if(!_0x3e4fb8)throw new Error(_0x2ad4('0x4e'));if(_0x3e4fb8[_0x2ad4('0x4f')]===_0x2ad4('0x4d')){var _0x696d47=_0xef7f1c['get']({'plain':!![]});var _0xcb3a5e='Companies';return db[_0x2ad4('0x50')][_0x2ad4('0x51')]({'where':{'name':_0xcb3a5e,'userProfileId':_0x3e4fb8[_0x2ad4('0x52')]},'raw':!![]})['then'](function(_0x419e4d){if(_0x419e4d&&_0x419e4d[_0x2ad4('0x53')]===0x0){return db['UserProfileResource'][_0x2ad4('0x4b')]({'name':_0x696d47[_0x2ad4('0x31')],'resourceId':_0x696d47['id'],'type':_0x419e4d['name'],'sectionId':_0x419e4d['id']},{})[_0x2ad4('0x2b')](function(){return _0xef7f1c;});}else{return _0xef7f1c;}})[_0x2ad4('0x48')](function(_0x587bb5){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x587bb5);throw _0x587bb5;});}return _0xef7f1c;})['then'](respondWithResult(_0x35e354,0xc9))[_0x2ad4('0x48')](handleError(_0x35e354,null));};exports[_0x2ad4('0x54')]=function(_0xe3722,_0x265d2b){if(_0xe3722[_0x2ad4('0x4c')]['id']){delete _0xe3722[_0x2ad4('0x4c')]['id'];}return db['CmCompany'][_0x2ad4('0x51')]({'where':{'id':_0xe3722['params']['id']}})[_0x2ad4('0x2b')](handleEntityNotFound(_0x265d2b,null))[_0x2ad4('0x2b')](saveUpdates(_0xe3722[_0x2ad4('0x4c')],null))[_0x2ad4('0x2b')](respondWithResult(_0x265d2b,null))[_0x2ad4('0x48')](handleError(_0x265d2b,null));};exports[_0x2ad4('0x2e')]=function(_0x2d35da,_0x5a5a16){return db[_0x2ad4('0x33')][_0x2ad4('0x51')]({'where':{'id':_0x2d35da[_0x2ad4('0x55')]['id']}})[_0x2ad4('0x2b')](handleEntityNotFound(_0x5a5a16,null))[_0x2ad4('0x2b')](removeEntity(_0x5a5a16,null))[_0x2ad4('0x48')](handleError(_0x5a5a16,null));};exports[_0x2ad4('0x34')]=function(_0x2b51dd,_0x38f42a){return db[_0x2ad4('0x33')]['describe']()[_0x2ad4('0x2b')](respondWithResult(_0x38f42a,null))[_0x2ad4('0x48')](handleError(_0x38f42a,null));};exports[_0x2ad4('0x56')]=function(_0x17160e,_0x3df36a,_0x290058){return db['CmContact']['find']({'where':{'id':_0x17160e[_0x2ad4('0x55')]['id']}})['then'](handleEntityNotFound(_0x3df36a,null))[_0x2ad4('0x2b')](function(_0xc165bf){if(_0xc165bf){return _0xc165bf['addContacts'](_0x17160e['body'][_0x2ad4('0x57')],_[_0x2ad4('0x58')](_0x17160e[_0x2ad4('0x4c')],[_0x2ad4('0x57'),'id'])||{});}})[_0x2ad4('0x2b')](respondWithResult(_0x3df36a,null))['catch'](handleError(_0x3df36a,null));};exports[_0x2ad4('0x59')]=function(_0x533f32,_0xc3720e,_0x450bfa){var _0x596ba={};var _0xd17704={};var _0xad7ddd;var _0x2c52b2;return db[_0x2ad4('0x33')][_0x2ad4('0x5a')]({'where':{'id':_0x533f32['params']['id']}})[_0x2ad4('0x2b')](handleEntityNotFound(_0xc3720e,null))['then'](function(_0x49e157){if(_0x49e157){_0xad7ddd=_0x49e157;_0xd17704[_0x2ad4('0x35')]=_['keys'](db[_0x2ad4('0x5b')][_0x2ad4('0x49')]);_0xd17704[_0x2ad4('0x37')]=_[_0x2ad4('0x36')](_0x533f32[_0x2ad4('0x37')]);_0xd17704[_0x2ad4('0x3f')]=_[_0x2ad4('0x38')](_0xd17704[_0x2ad4('0x35')],_0xd17704[_0x2ad4('0x37')]);_0x596ba[_0x2ad4('0x3a')]=_['intersection'](_0xd17704[_0x2ad4('0x35')],qs[_0x2ad4('0x39')](_0x533f32[_0x2ad4('0x37')][_0x2ad4('0x39')]));_0x596ba[_0x2ad4('0x3a')]=_0x596ba[_0x2ad4('0x3a')][_0x2ad4('0x4a')]?_0x596ba['attributes']:_0xd17704[_0x2ad4('0x35')];_0x596ba[_0x2ad4('0x3c')]=qs[_0x2ad4('0x3d')](_0x533f32[_0x2ad4('0x37')]['sort']);_0x596ba[_0x2ad4('0x3e')]=qs[_0x2ad4('0x3f')](_['pick'](_0x533f32[_0x2ad4('0x37')],_0xd17704['filters']));if(_0x533f32['query'][_0x2ad4('0x41')]){_0x596ba[_0x2ad4('0x3e')]=_[_0x2ad4('0x42')](_0x596ba[_0x2ad4('0x3e')],{'$or':_[_0x2ad4('0x43')](_0x596ba[_0x2ad4('0x3a')],function(_0x4b4525){var _0x2cf01={};_0x2cf01[_0x4b4525]={'$like':'%'+_0x533f32[_0x2ad4('0x37')][_0x2ad4('0x41')]+'%'};return _0x2cf01;})});}_0x596ba=_['merge']({},_0x596ba,_0x533f32[_0x2ad4('0x44')]);return _0xad7ddd[_0x2ad4('0x59')](_0x596ba);}})[_0x2ad4('0x2b')](function(_0x51490a){if(_0x51490a){_0x2c52b2=_0x51490a[_0x2ad4('0x4a')];if(!_0x533f32[_0x2ad4('0x37')]['hasOwnProperty'](_0x2ad4('0x5c'))){_0x596ba[_0x2ad4('0x23')]=qs['limit'](_0x533f32['query']['limit']);_0x596ba[_0x2ad4('0x25')]=qs[_0x2ad4('0x25')](_0x533f32['query'][_0x2ad4('0x25')]);}return _0xad7ddd[_0x2ad4('0x59')](_0x596ba);}})[_0x2ad4('0x2b')](function(_0x434930){if(_0x434930){return _0x434930?{'count':_0x2c52b2,'rows':_0x434930}:null;}})[_0x2ad4('0x2b')](respondWithResult(_0xc3720e,null))[_0x2ad4('0x48')](handleError(_0xc3720e,null));};
\ No newline at end of file
index ecc8586..d31c76e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dc1=['cm_companies','lodash','util','../../config/logger','request-promise','path','../../config/environment','./cmCompany.attributes','exports','define'];(function(_0x5d3feb,_0x17eeb9){var _0x59d181=function(_0x119238){while(--_0x119238){_0x5d3feb['push'](_0x5d3feb['shift']());}};_0x59d181(++_0x17eeb9);}(_0x9dc1,0xc9));var _0x19dc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9dc1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x19dc('0x0'));var util=require(_0x19dc('0x1'));var logger=require(_0x19dc('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x19dc('0x3'));var fs=require('fs');var path=require(_0x19dc('0x4'));var rimraf=require('rimraf');var config=require(_0x19dc('0x5'));var attributes=require(_0x19dc('0x6'));module[_0x19dc('0x7')]=function(_0x1af49b,_0x384ad5){return _0x1af49b[_0x19dc('0x8')]('CmCompany',attributes,{'tableName':_0x19dc('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbbd2=['exports','define','CmCompany','cm_companies','lodash','util','moment','request-promise','path','../../config/environment'];(function(_0xe67c79,_0x220587){var _0x4a8b94=function(_0x1ceb45){while(--_0x1ceb45){_0xe67c79['push'](_0xe67c79['shift']());}};_0x4a8b94(++_0x220587);}(_0xbbd2,0xe0));var _0x2bbd=function(_0x393500,_0x1037af){_0x393500=_0x393500-0x0;var _0x120d3b=_0xbbd2[_0x393500];return _0x120d3b;};'use strict';var _=require(_0x2bbd('0x0'));var util=require(_0x2bbd('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x2bbd('0x2'));var BPromise=require('bluebird');var rp=require(_0x2bbd('0x3'));var fs=require('fs');var path=require(_0x2bbd('0x4'));var rimraf=require('rimraf');var config=require(_0x2bbd('0x5'));var attributes=require('./cmCompany.attributes');module[_0x2bbd('0x6')]=function(_0x4ce103,_0x317774){return _0x4ce103[_0x2bbd('0x7')](_0x2bbd('0x8'),attributes,{'tableName':_0x2bbd('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8c16ae3..2babfe6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5079=['catch','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x5079,0x1ef));var _0x9507=function(_0x1fd5eb,_0x235203){_0x1fd5eb=_0x1fd5eb-0x0;var _0x102365=_0x5079[_0x1fd5eb];return _0x102365;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9507('0x0'));var BPromise=require('bluebird');var rs=require(_0x9507('0x1'));var fs=require('fs');var Redis=require(_0x9507('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x9507('0x3'));var logger=require(_0x9507('0x4'))('rpc');var config=require(_0x9507('0x5'));var jayson=require(_0x9507('0x6'));var client=jayson[_0x9507('0x7')][_0x9507('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x326745,_0x5bc32d,_0x1af99f){return new BPromise(function(_0x415c2c,_0x1fcebd){return client[_0x9507('0x9')](_0x326745,_0x1af99f)['then'](function(_0x30b7b9){logger[_0x9507('0xa')](_0x9507('0xb'),_0x5bc32d,_0x9507('0xc'));logger[_0x9507('0xd')](_0x9507('0xe'),_0x5bc32d,'request\x20sent',JSON['stringify'](_0x30b7b9));if(_0x30b7b9[_0x9507('0xf')]){if(_0x30b7b9[_0x9507('0xf')][_0x9507('0x10')]===0x1f4){logger[_0x9507('0xf')](_0x9507('0xb'),_0x5bc32d,_0x30b7b9['error'][_0x9507('0x11')]);return _0x1fcebd(_0x30b7b9[_0x9507('0xf')][_0x9507('0x11')]);}logger[_0x9507('0xf')](_0x9507('0xb'),_0x5bc32d,_0x30b7b9['error'][_0x9507('0x11')]);return _0x415c2c(_0x30b7b9[_0x9507('0xf')][_0x9507('0x11')]);}else{logger[_0x9507('0xa')](_0x9507('0xb'),_0x5bc32d,_0x9507('0xc'));_0x415c2c(_0x30b7b9['result'][_0x9507('0x11')]);}})[_0x9507('0x12')](function(_0x157f2e){logger[_0x9507('0xf')](_0x9507('0xb'),_0x5bc32d,_0x157f2e);_0x1fcebd(_0x157f2e);});});}
\ No newline at end of file
+var _0x1d1a=['info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','then'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x1d1a,0xb9));var _0xa1d1=function(_0x12d1cb,_0x5110c8){_0x12d1cb=_0x12d1cb-0x0;var _0x5c8068=_0x1d1a[_0x12d1cb];return _0x5c8068;};'use strict';var _=require(_0xa1d1('0x0'));var util=require(_0xa1d1('0x1'));var moment=require(_0xa1d1('0x2'));var BPromise=require(_0xa1d1('0x3'));var rs=require(_0xa1d1('0x4'));var fs=require('fs');var Redis=require(_0xa1d1('0x5'));var db=require(_0xa1d1('0x6'))['db'];var utils=require(_0xa1d1('0x7'));var logger=require(_0xa1d1('0x8'))(_0xa1d1('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa1d1('0xa')][_0xa1d1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x20410b,_0x25979a,_0x10b46b){return new BPromise(function(_0x3c3d50,_0x7a1586){return client['request'](_0x20410b,_0x10b46b)[_0xa1d1('0xc')](function(_0x3cef7a){logger[_0xa1d1('0xd')](_0xa1d1('0xe'),_0x25979a,_0xa1d1('0xf'));logger[_0xa1d1('0x10')](_0xa1d1('0x11'),_0x25979a,'request\x20sent',JSON['stringify'](_0x3cef7a));if(_0x3cef7a['error']){if(_0x3cef7a[_0xa1d1('0x12')]['code']===0x1f4){logger[_0xa1d1('0x12')]('CmCompany,\x20%s,\x20%s',_0x25979a,_0x3cef7a[_0xa1d1('0x12')][_0xa1d1('0x13')]);return _0x7a1586(_0x3cef7a[_0xa1d1('0x12')][_0xa1d1('0x13')]);}logger[_0xa1d1('0x12')](_0xa1d1('0xe'),_0x25979a,_0x3cef7a[_0xa1d1('0x12')][_0xa1d1('0x13')]);return _0x3c3d50(_0x3cef7a[_0xa1d1('0x12')][_0xa1d1('0x13')]);}else{logger[_0xa1d1('0xd')](_0xa1d1('0xe'),_0x25979a,'request\x20sent');_0x3c3d50(_0x3cef7a[_0xa1d1('0x14')][_0xa1d1('0x13')]);}})[_0xa1d1('0x15')](function(_0x6f6ea0){logger[_0xa1d1('0x12')](_0xa1d1('0xe'),_0x25979a,_0x6f6ea0);_0x7a1586(_0x6f6ea0);});});}
\ No newline at end of file
index aab4719..2a0c16a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e0c=['/:id/contacts','getContacts','create','addContacts','put','update','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCompany.controller','get','isAuthenticated','/describe','/:id','show'];(function(_0x9eeac9,_0x1ee22d){var _0x357669=function(_0x1aa5fe){while(--_0x1aa5fe){_0x9eeac9['push'](_0x9eeac9['shift']());}};_0x357669(++_0x1ee22d);}(_0x6e0c,0x1a6));var _0xc6e0=function(_0x542e14,_0x5dfd4b){_0x542e14=_0x542e14-0x0;var _0xe3bbb=_0x6e0c[_0x542e14];return _0xe3bbb;};'use strict';var multer=require(_0xc6e0('0x0'));var util=require(_0xc6e0('0x1'));var path=require(_0xc6e0('0x2'));var timeout=require(_0xc6e0('0x3'));var express=require(_0xc6e0('0x4'));var router=express['Router']();var fs_extra=require(_0xc6e0('0x5'));var auth=require(_0xc6e0('0x6'));var interaction=require(_0xc6e0('0x7'));var config=require(_0xc6e0('0x8'));var controller=require(_0xc6e0('0x9'));router[_0xc6e0('0xa')]('/',auth[_0xc6e0('0xb')](),controller['index']);router['get'](_0xc6e0('0xc'),auth[_0xc6e0('0xb')](),controller['describe']);router[_0xc6e0('0xa')](_0xc6e0('0xd'),auth[_0xc6e0('0xb')](),controller[_0xc6e0('0xe')]);router[_0xc6e0('0xa')](_0xc6e0('0xf'),auth[_0xc6e0('0xb')](),controller[_0xc6e0('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0xc6e0('0x11')]);router['post'](_0xc6e0('0xf'),auth['isAuthenticated'](),controller[_0xc6e0('0x12')]);router[_0xc6e0('0x13')](_0xc6e0('0xd'),auth[_0xc6e0('0xb')](),controller[_0xc6e0('0x14')]);router[_0xc6e0('0x15')](_0xc6e0('0xd'),auth['isAuthenticated'](),controller[_0xc6e0('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x119b=['get','describe','show','/:id/contacts','getContacts','post','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated'];(function(_0x239e38,_0x501c54){var _0x5a744c=function(_0x20b0c6){while(--_0x20b0c6){_0x239e38['push'](_0x239e38['shift']());}};_0x5a744c(++_0x501c54);}(_0x119b,0x7a));var _0xb119=function(_0x301c34,_0x15701e){_0x301c34=_0x301c34-0x0;var _0x1a8c5a=_0x119b[_0x301c34];return _0x1a8c5a;};'use strict';var multer=require(_0xb119('0x0'));var util=require(_0xb119('0x1'));var path=require(_0xb119('0x2'));var timeout=require(_0xb119('0x3'));var express=require(_0xb119('0x4'));var router=express[_0xb119('0x5')]();var fs_extra=require(_0xb119('0x6'));var auth=require(_0xb119('0x7'));var interaction=require(_0xb119('0x8'));var config=require('../../config/environment');var controller=require('./cmCompany.controller');router['get']('/',auth[_0xb119('0x9')](),controller['index']);router[_0xb119('0xa')]('/describe',auth[_0xb119('0x9')](),controller[_0xb119('0xb')]);router[_0xb119('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xb119('0xc')]);router[_0xb119('0xa')](_0xb119('0xd'),auth[_0xb119('0x9')](),controller[_0xb119('0xe')]);router[_0xb119('0xf')]('/',auth[_0xb119('0x9')](),controller['create']);router[_0xb119('0xf')](_0xb119('0xd'),auth[_0xb119('0x9')](),controller['addContacts']);router[_0xb119('0x10')](_0xb119('0x11'),auth[_0xb119('0x9')](),controller[_0xb119('0x12')]);router[_0xb119('0x13')](_0xb119('0x11'),auth[_0xb119('0x9')](),controller[_0xb119('0x14')]);module[_0xb119('0x15')]=router;
\ No newline at end of file
index b62dc5f..582ae30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x103e=['STRING','TEXT','INTEGER','UNSIGNED','DATE','NOW','lodash','sequelize','exports'];(function(_0xdba5f4,_0x226baa){var _0x497bdf=function(_0x2ef7d9){while(--_0x2ef7d9){_0xdba5f4['push'](_0xdba5f4['shift']());}};_0x497bdf(++_0x226baa);}(_0x103e,0x1c8));var _0xe103=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x103e[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0xe103('0x0'));var Sequelize=require(_0xe103('0x1'));module[_0xe103('0x2')]={'firstName':{'type':Sequelize[_0xe103('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0xe103('0x3')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0xe103('0x3')]},'country':{'type':Sequelize[_0xe103('0x3')]},'dateOfBirth':{'type':Sequelize[_0xe103('0x3')]},'description':{'type':Sequelize[_0xe103('0x4')]},'phone':{'type':Sequelize[_0xe103('0x3')]},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0xe103('0x3')]},'email':{'type':Sequelize[_0xe103('0x3')]},'url':{'type':Sequelize[_0xe103('0x3')]},'facebook':{'type':Sequelize[_0xe103('0x3')]},'fb_data':{'type':Sequelize['STRING']},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize[_0xe103('0x3')]},'line':{'type':Sequelize[_0xe103('0x3')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0xe103('0x3')]},'UserId':{'type':Sequelize[_0xe103('0x5')]},'priority':{'type':Sequelize[_0xe103('0x5')](0x2)[_0xe103('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xe103('0x7')],'defaultValue':Sequelize[_0xe103('0x8')]}};
\ No newline at end of file
+var _0x3665=['INTEGER','UNSIGNED','NOW','lodash','sequelize','exports','STRING','TEXT'];(function(_0x23405c,_0x2972e5){var _0x8a1f0a=function(_0x3c40b7){while(--_0x3c40b7){_0x23405c['push'](_0x23405c['shift']());}};_0x8a1f0a(++_0x2972e5);}(_0x3665,0x10b));var _0x5366=function(_0x4a434d,_0xb94e4e){_0x4a434d=_0x4a434d-0x0;var _0x1ee26c=_0x3665[_0x4a434d];return _0x1ee26c;};'use strict';var _=require(_0x5366('0x0'));var Sequelize=require(_0x5366('0x1'));module[_0x5366('0x2')]={'firstName':{'type':Sequelize[_0x5366('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0x5366('0x3')]},'street':{'type':Sequelize[_0x5366('0x3')]},'postalCode':{'type':Sequelize[_0x5366('0x3')]},'city':{'type':Sequelize[_0x5366('0x3')]},'country':{'type':Sequelize[_0x5366('0x3')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x5366('0x4')]},'phone':{'type':Sequelize[_0x5366('0x3')]},'mobile':{'type':Sequelize[_0x5366('0x3')]},'fax':{'type':Sequelize[_0x5366('0x3')]},'email':{'type':Sequelize[_0x5366('0x3')]},'url':{'type':Sequelize[_0x5366('0x3')]},'facebook':{'type':Sequelize[_0x5366('0x3')]},'fb_data':{'type':Sequelize[_0x5366('0x3')]},'twitter':{'type':Sequelize[_0x5366('0x3')]},'skype':{'type':Sequelize[_0x5366('0x3')]},'teams':{'type':Sequelize[_0x5366('0x3')]},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0x5366('0x3')]},'wechat':{'type':Sequelize[_0x5366('0x3')]},'telegram':{'type':Sequelize[_0x5366('0x3')]},'UserId':{'type':Sequelize['INTEGER']},'priority':{'type':Sequelize[_0x5366('0x5')](0x2)[_0x5366('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize[_0x5366('0x7')]}};
\ No newline at end of file
index 851a47b..7a78b6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0b8=['userThirdDisposition','UserId','fullname','VoiceCallReport','findAndCountAll','Website','Account','closed','disposition','secondDisposition','thirdDisposition','key','browserName','customerIp','customerPort','deviceModel','osName','ratingMessage','ratingType','referer','subject','substatus','externalUrl','threadId','startCase','Interaction','Owner','all','reverse','slice','moment','util','path','lodash','squel','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./cmContact.socket','register','status','limit','count','offset','Content-Range','json','update','then','destroy','end','sendStatus','error','stack','name','send','index','keys','length','startsWith','cf_','push','CmCustomField','findOne','trimStart','fieldType','query','intersection','model','fields','attributes','hasOwnProperty','order','sort','where','filters','select','field','color','from','cm_contacts','left_join','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','tools_tags','t.id\x20=\x20ct.TagId','c.deletedAt\x20IS\x20NULL','expr','search','parseSearch','conditions','find','Tag','value','map','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','and','uc.UserId\x20=\x20?','dateOfBirth','datetime','castTo','DATE','buildExpression','type','text','start','filter','isNil','Contact','isEmpty','forEach','ListId','c.ListId\x20IN\x20?','concat','tag','replace','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.id\x20LIKE\x20?','c.mobile\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.lastName\x20LIKE\x20?','c.id','DESC','having','t.id\x20IN\x20?','resolve','user','role','some','getLists','c.ListId\x20IS\x20NULL','agent','sequelize','toString','CmContact','c.firstName','c.lastName','c.mobile','c.fax','c.email','c.ListId','c.createdAt','c.CompanyId','TagIds','Tags','catch','params','tags','columnName','displayName','analytics','findAll','alias','custom','values','merge','body','get','mergeWith','isArray','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','FaxQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappMessage','describe','bulkCreate','duplicates','$or','findOrCreate','spread','show','$and','cf_%d','omit','table','id\x20=\x20?','toParam','CmHopper','phone','getTags','rawAttributes','pick','nolimit','setTags','ids','getHoppers','options','includeAll','include','rows','getHopperHistories','CmHopperHistory','ContactId','getJscriptySessions','uploadCsv','No\x20ListId\x20specified','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','binding_keys','zipObject','No\x20firstName\x20column\x20specified','join','root','server/files/tmp','file','filename','chmodSync','0777','../../components/import/cm/csv','CompanyId','File\x20uploaded\x20correctly!','upload','createReadStream','parse','meta','binding','No\x20phone\x20column\x20specified','fork','stringify','message','start\x20child\x20process\x20correctly!','pid','exit','getJourney','mail','chat','openchannel','fax','whatsapp','-createdAt','channel','includes','Invalid\x20channel','toLowerCase','range','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','voice','source','destination','callerid','endtime','duration','note','createdAt','userSecondDisposition'];(function(_0x1c14ae,_0x25ecce){var _0x24c7cf=function(_0x167c24){while(--_0x167c24){_0x1c14ae['push'](_0x1c14ae['shift']());}};_0x24c7cf(++_0x25ecce);}(_0xa0b8,0x133));var _0x8a0b=function(_0x2673c1,_0x489c00){_0x2673c1=_0x2673c1-0x0;var _0x46bde=_0xa0b8[_0x2673c1];return _0x46bde;};'use strict';var moment=require(_0x8a0b('0x0'));var BPromise=require('bluebird');var util=require(_0x8a0b('0x1'));var path=require(_0x8a0b('0x2'));var fs=require('fs');var _=require(_0x8a0b('0x3'));var squel=require(_0x8a0b('0x4'));var Papa=require(_0x8a0b('0x5'));var Redis=require('ioredis');var qs=require(_0x8a0b('0x6'));var as=require(_0x8a0b('0x7'));var logger=require(_0x8a0b('0x8'))(_0x8a0b('0x9'));var config=require(_0x8a0b('0xa'));var db=require(_0x8a0b('0xb'))['db'];config[_0x8a0b('0xc')]=_['defaults'](config[_0x8a0b('0xc')],{'host':_0x8a0b('0xd'),'port':0x18eb});var socket=require(_0x8a0b('0xe'))(new Redis(config[_0x8a0b('0xc')]));require(_0x8a0b('0xf'))[_0x8a0b('0x10')](socket);function respondWithResult(_0x5a06fb,_0xc4549a){_0xc4549a=_0xc4549a||0xc8;return function(_0x130395){if(_0x130395){return _0x5a06fb[_0x8a0b('0x11')](_0xc4549a)['json'](_0x130395);}};}function respondWithFilteredResult(_0x5107b0,_0x467eb1){return function(_0x2c976c){if(_0x2c976c){var _0x1f7cb7=typeof _0x467eb1['offset']==='undefined'&&typeof _0x467eb1[_0x8a0b('0x12')]==='undefined';var _0x507ad5=_0x2c976c[_0x8a0b('0x13')];var _0x2cfc5b=_0x1f7cb7?0x0:_0x467eb1[_0x8a0b('0x14')];var _0x28725d=_0x1f7cb7?_0x2c976c['count']:_0x467eb1['offset']+_0x467eb1[_0x8a0b('0x12')];var _0x22dcce;if(_0x28725d>=_0x507ad5){_0x28725d=_0x507ad5;_0x22dcce=0xc8;}else{_0x22dcce=0xce;}_0x5107b0['status'](_0x22dcce);return _0x5107b0['set'](_0x8a0b('0x15'),_0x2cfc5b+'-'+_0x28725d+'/'+_0x507ad5)[_0x8a0b('0x16')](_0x2c976c);}return null;};}function saveUpdates(_0x19cf84){return function(_0x1aa1a1){if(_0x1aa1a1){return _0x1aa1a1[_0x8a0b('0x17')](_0x19cf84)[_0x8a0b('0x18')](function(_0x12379b){return _0x12379b;});}return null;};}function removeEntity(_0x4f0ebb){return function(_0x34f958){if(_0x34f958){return _0x34f958[_0x8a0b('0x19')]()['then'](function(){_0x4f0ebb[_0x8a0b('0x11')](0xcc)[_0x8a0b('0x1a')]();});}};}function handleEntityNotFound(_0x40564d){return function(_0x11b14a){if(!_0x11b14a){_0x40564d[_0x8a0b('0x1b')](0x194);}return _0x11b14a;};}function handleError(_0x4a7d27,_0x5b4828){_0x5b4828=_0x5b4828||0x1f4;return function(_0x26cbf2){logger[_0x8a0b('0x1c')](_0x26cbf2[_0x8a0b('0x1d')]);if(_0x26cbf2[_0x8a0b('0x1e')]){delete _0x26cbf2['name'];}_0x4a7d27['status'](_0x5b4828)[_0x8a0b('0x1f')](_0x26cbf2);};}exports[_0x8a0b('0x20')]=function(_0x2476e3,_0xbe0852){var _0x3ea926={},_0x3388f1={},_0x33ad8e={'count':0x0,'rows':[]};return db['CmContact']['describe']()[_0x8a0b('0x18')](function(_0x1b1354){var _0xa233e9=[];for(var _0x28daa3=0x0;_0x28daa3<Object[_0x8a0b('0x21')](_0x1b1354)[_0x8a0b('0x22')];_0x28daa3++){var _0xca4dc=Object[_0x8a0b('0x21')](_0x1b1354)[_0x28daa3];if(_[_0x8a0b('0x23')](_0xca4dc,_0x8a0b('0x24'))){_0xa233e9[_0x8a0b('0x25')](db[_0x8a0b('0x26')][_0x8a0b('0x27')]({'where':{'id':_[_0x8a0b('0x28')](_0xca4dc,_0x8a0b('0x24'))},'raw':!![]}));}}return BPromise['all'](_0xa233e9)['then'](function(_0x1e983b){for(var _0x2b247a=0x0;_0x2b247a<_0x1e983b[_0x8a0b('0x22')];_0x2b247a++){if(_0x1e983b[_0x2b247a]){var _0x35bbed=_0x8a0b('0x24')+_0x1e983b[_0x2b247a]['id'];var _0x73bb6e=_0x1b1354[_0x35bbed];_0x73bb6e[_0x8a0b('0x29')]=_0x1e983b[_0x2b247a]['type'];}}return _0x1b1354;});})['then'](function(_0x2de742){_0x3388f1['model']=_['keys'](_0x2de742);_0x3388f1[_0x8a0b('0x2a')]=_['keys'](_0x2476e3[_0x8a0b('0x2a')]);_0x3388f1['filters']=_[_0x8a0b('0x2b')](_0x3388f1[_0x8a0b('0x2c')],_0x3388f1[_0x8a0b('0x2a')]);_0x3ea926['attributes']=_[_0x8a0b('0x2b')](_0x3388f1[_0x8a0b('0x2c')],qs['fields'](_0x2476e3['query'][_0x8a0b('0x2d')]));_0x3ea926[_0x8a0b('0x2e')]=_0x3ea926[_0x8a0b('0x2e')]['length']?_0x3ea926[_0x8a0b('0x2e')]:_0x3388f1[_0x8a0b('0x2c')];if(!_0x2476e3[_0x8a0b('0x2a')][_0x8a0b('0x2f')]('nolimit')){_0x3ea926[_0x8a0b('0x12')]=qs[_0x8a0b('0x12')](_0x2476e3[_0x8a0b('0x2a')]['limit']);_0x3ea926['offset']=qs['offset'](_0x2476e3[_0x8a0b('0x2a')][_0x8a0b('0x14')]);}_0x3ea926[_0x8a0b('0x30')]=qs[_0x8a0b('0x31')](_0x2476e3[_0x8a0b('0x2a')][_0x8a0b('0x31')]);_0x3ea926[_0x8a0b('0x32')]=qs[_0x8a0b('0x33')](_['pick'](_0x2476e3['query'],_0x3388f1[_0x8a0b('0x33')]),_0x2de742);var _0x313862=[];var _0x781b8a=squel[_0x8a0b('0x34')]()['field']('id')[_0x8a0b('0x35')](_0x8a0b('0x1e'))[_0x8a0b('0x35')](_0x8a0b('0x36'))[_0x8a0b('0x37')]('tools_tags');var _0x4d17fa=squel[_0x8a0b('0x34')]()['from'](_0x8a0b('0x38'),'c')[_0x8a0b('0x39')]('cm_user_has_contacts','uc',_0x8a0b('0x3a'))[_0x8a0b('0x39')](_0x8a0b('0x3b'),'ct',_0x8a0b('0x3c'))[_0x8a0b('0x39')](_0x8a0b('0x3d'),'t',_0x8a0b('0x3e'))['where'](_0x8a0b('0x3f'));var _0x537130=squel[_0x8a0b('0x40')]();var _0xcf56dc=[];var _0x29a380=squel[_0x8a0b('0x40')]();var _0x52013d;if(_0x2476e3[_0x8a0b('0x2a')][_0x8a0b('0x41')]){_0x52013d=as[_0x8a0b('0x42')](_0x2476e3[_0x8a0b('0x2a')][_0x8a0b('0x41')]);var _0x2c1b2c=_0x52013d['sqlOperator'];for(var _0x537126=0x0;_0x537126<_0x52013d[_0x8a0b('0x43')][_0x8a0b('0x22')];_0x537126++){var _0x532ab9=_0x52013d['conditions'][_0x537126];var _0x4eaaba='c';var _0x607cf6=_(_0x2de742)[_0x8a0b('0x21')]()[_0x8a0b('0x44')](function(_0x24982d){return _0x24982d===_0x532ab9[_0x8a0b('0x35')];});if(_0x607cf6)_0x607cf6=_0x2de742[_0x532ab9[_0x8a0b('0x35')]];if(!_0x607cf6){if(_0x532ab9[_0x8a0b('0x35')]===_0x8a0b('0x45')){var _0x44550f=_0x532ab9[_0x8a0b('0x46')]['split'](',')[_0x8a0b('0x47')](function(_0x58522d){return Number(_0x58522d);});_0x44550f['forEach'](function(_0x9bc80e){_0x29a380['or'](_0x8a0b('0x48'),'%,'+_0x9bc80e+',%');});_0xcf56dc=_[_0x8a0b('0x49')](_0xcf56dc,_0x44550f);}else if(_0x532ab9['field']===_0x8a0b('0x4a')){_0x537130[_0x8a0b('0x4b')](_0x8a0b('0x4c'),_0x532ab9[_0x8a0b('0x46')]);}}else{if(_0x532ab9[_0x8a0b('0x35')]===_0x8a0b('0x4d')||_0x607cf6['fieldType']===_0x8a0b('0x4e'))_0x532ab9[_0x8a0b('0x4f')]=_0x8a0b('0x50');var _0x30617e=as[_0x8a0b('0x51')](_0x4eaaba,_0x607cf6[_0x8a0b('0x52')],_0x532ab9);_0x537130[_0x2c1b2c](_0x30617e[_0x8a0b('0x53')],_0x30617e[_0x8a0b('0x46')][_0x8a0b('0x54')],_0x30617e[_0x8a0b('0x46')]['end']);}}}else{var _0x3688a0=_(Object['keys'](_0x2476e3[_0x8a0b('0x2a')]))[_0x8a0b('0x47')](function(_0x322cd9){return _0x2de742[_0x8a0b('0x2f')](_0x322cd9)?_0x322cd9:undefined;})[_0x8a0b('0x55')](function(_0x320913){return!_[_0x8a0b('0x56')](_0x320913);})[_0x8a0b('0x46')]();if(_0x2476e3[_0x8a0b('0x2a')][_0x8a0b('0x57')])_0x3688a0[_0x8a0b('0x25')](_0x8a0b('0x57'));if(!_[_0x8a0b('0x58')](_0x3688a0)){_0x3688a0[_0x8a0b('0x59')](function(_0x6fb205){if(_0x6fb205===_0x8a0b('0x5a')){_0x4d17fa[_0x8a0b('0x32')](_0x8a0b('0x5b'),[][_0x8a0b('0x5c')](_0x2476e3['query'][_0x6fb205]));}else if(_0x6fb205===_0x8a0b('0x57')){var _0x21980f='%'+_0x2476e3[_0x8a0b('0x2a')][_0x6fb205]+'%';_0x4d17fa[_0x8a0b('0x32')]('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x21980f);}else{_0x4d17fa[_0x8a0b('0x32')]('c.'+_0x6fb205+'\x20=\x20?',_0x2476e3[_0x8a0b('0x2a')][_0x6fb205]);}});}if(_0x2476e3[_0x8a0b('0x2a')]['tag']){_0xcf56dc=_['isArray'](_0x2476e3[_0x8a0b('0x2a')][_0x8a0b('0x5d')])?_0x2476e3[_0x8a0b('0x2a')][_0x8a0b('0x5d')]:new Array(_0x2476e3['query'][_0x8a0b('0x5d')]);_0xcf56dc['forEach'](function(_0x14d869){_0x29a380['or'](_0x8a0b('0x48'),'%,'+_0x14d869+',%');});}if(_0x2476e3[_0x8a0b('0x2a')][_0x8a0b('0x55')]){var _0x59ca96=_0x2476e3['query'][_0x8a0b('0x55')][_0x8a0b('0x5e')]('\x5c','\x5c\x5c')[_0x8a0b('0x5e')](/'/g,'\x27\x27');if(_0x59ca96[_0x8a0b('0x5f')]('\x20')[_0x8a0b('0x22')]>0x1){_0x537130['or'](_0x8a0b('0x60'),qs['getFullTextValue'](_0x59ca96),null);}else{if(qs['isNumeric'](_0x59ca96)){_0x537130['or'](_0x8a0b('0x61'),_0x59ca96+'%');_0x537130['or']('c.phone\x20LIKE\x20?',_0x59ca96+'%');_0x537130['or'](_0x8a0b('0x62'),_0x59ca96+'%');_0x537130['or']('c.fax\x20LIKE\x20?',_0x59ca96+'%');}else if(qs[_0x8a0b('0x63')](_0x59ca96)){_0x537130['or'](_0x8a0b('0x64'),_0x59ca96+'%');}else{_0x537130['or']('c.firstName\x20LIKE\x20?','%'+_0x59ca96+'%');_0x537130['or'](_0x8a0b('0x65'),'%'+_0x59ca96+'%');_0x537130['or']('c.email\x20LIKE\x20?','%'+_0x59ca96+'%');}}}}_0x4d17fa[_0x8a0b('0x32')](_0x537130);_0x4d17fa['group']('c.id');var _0x5250d3={'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]};var _0x58c75f=_0x4d17fa['clone']()[_0x8a0b('0x35')](_0x8a0b('0x66'));if(_0x3ea926['order']){_0x3ea926[_0x8a0b('0x30')][_0x8a0b('0x59')](function(_0x31269f){_0x4d17fa[_0x8a0b('0x30')]('c.'+_0x31269f[0x0],_0x31269f[0x1]===_0x8a0b('0x67')?![]:!![]);});}if(!_[_0x8a0b('0x58')](_0xcf56dc)){_0x4d17fa[_0x8a0b('0x68')](_0x29a380);_0x58c75f['where'](_0x8a0b('0x69'),_0xcf56dc);}BPromise[_0x8a0b('0x6a')]()[_0x8a0b('0x18')](function(){if(!_0x52013d)return;if(_0x2476e3[_0x8a0b('0x6b')][_0x8a0b('0x6c')]!=='agent')return;if(!_[_0x8a0b('0x6d')](_0x52013d[_0x8a0b('0x43')],['field',_0x8a0b('0x4a')])){return _0x2476e3['user'][_0x8a0b('0x6e')]({'attributes':['id'],'raw':!![]})[_0x8a0b('0x18')](function(_0x141b63){if(_[_0x8a0b('0x58')](_0x141b63)){_0x58c75f[_0x8a0b('0x32')]('c.ListId\x20IS\x20NULL');_0x4d17fa[_0x8a0b('0x32')](_0x8a0b('0x6f'));}else{_0x58c75f[_0x8a0b('0x32')](_0x8a0b('0x5b'),_[_0x8a0b('0x47')](_0x141b63,'id'));_0x4d17fa['where'](_0x8a0b('0x5b'),_[_0x8a0b('0x47')](_0x141b63,'id'));}});}})[_0x8a0b('0x18')](function(){if(_0x2476e3[_0x8a0b('0x6b')][_0x8a0b('0x6c')]===_0x8a0b('0x70')&&!_0x52013d&&!_0x2476e3[_0x8a0b('0x2a')][_0x8a0b('0x5a')])return[];return db['sequelize'][_0x8a0b('0x2a')](_0x58c75f['toString'](),_0x5250d3);})['then'](function(_0x30d5ed){_0x33ad8e[_0x8a0b('0x13')]=_0x30d5ed[_0x8a0b('0x22')];if(_0x33ad8e[_0x8a0b('0x13')]===0x0)return[];return db[_0x8a0b('0x71')][_0x8a0b('0x2a')](_0x781b8a[_0x8a0b('0x72')](),_0x5250d3)['then'](function(_0x506fb8){_0x313862=_['keyBy'](_0x506fb8,'id');_0x5250d3=_['merge'](_0x5250d3,{'model':db[_0x8a0b('0x73')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2476e3[_0x8a0b('0x2a')][_0x8a0b('0x2d')]){_0x3ea926[_0x8a0b('0x2e')][_0x8a0b('0x59')](function(_0x4818c6){_0x4d17fa['field']('c.'+_0x4818c6);});}else{_0x4d17fa[_0x8a0b('0x35')](_0x8a0b('0x66'));_0x4d17fa['field'](_0x8a0b('0x74'));_0x4d17fa['field'](_0x8a0b('0x75'));_0x4d17fa['field']('c.phone');_0x4d17fa[_0x8a0b('0x35')](_0x8a0b('0x76'));_0x4d17fa[_0x8a0b('0x35')](_0x8a0b('0x77'));_0x4d17fa['field'](_0x8a0b('0x78'));_0x4d17fa['field'](_0x8a0b('0x79'));_0x4d17fa['field'](_0x8a0b('0x7a'));_0x4d17fa[_0x8a0b('0x35')]('c.deletedAt');_0x4d17fa['field'](_0x8a0b('0x7b'));_0x4d17fa[_0x8a0b('0x35')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x8a0b('0x7c'));}if(_0x3ea926[_0x8a0b('0x12')])_0x4d17fa[_0x8a0b('0x12')](_0x3ea926['limit']);if(_0x3ea926[_0x8a0b('0x14')])_0x4d17fa['offset'](_0x3ea926[_0x8a0b('0x14')]);return db[_0x8a0b('0x71')][_0x8a0b('0x2a')](_0x4d17fa['toString'](),_0x5250d3);});})[_0x8a0b('0x18')](function(_0x50ea81){_0x50ea81[_0x8a0b('0x59')](function(_0x9f9cf0){if(_0x9f9cf0[_0x8a0b('0x7c')]){_0x9f9cf0[_0x8a0b('0x7d')]=[];_0x9f9cf0['TagIds'][_0x8a0b('0x5f')](',')[_0x8a0b('0x59')](function(_0x4ff506){_0x9f9cf0['Tags']['push'](_0x313862[_0x4ff506]);});}delete _0x9f9cf0[_0x8a0b('0x7c')];});_0x33ad8e['rows']=_0x50ea81;return _0x33ad8e;})['then'](respondWithFilteredResult(_0xbe0852,_0x3ea926));})[_0x8a0b('0x7e')](handleError(_0xbe0852,null));};exports[_0x8a0b('0x19')]=function(_0x28b86d,_0x4a8ffc){return db[_0x8a0b('0x73')][_0x8a0b('0x44')]({'where':{'id':_0x28b86d[_0x8a0b('0x7f')]['id']}})['then'](handleEntityNotFound(_0x4a8ffc,null))[_0x8a0b('0x18')](removeEntity(_0x4a8ffc,null))['catch'](handleError(_0x4a8ffc,null));};exports['describe']=function(_0x1931c1,_0x2f7bb4){return db[_0x8a0b('0x73')]['describe']()[_0x8a0b('0x18')](function(_0x483dd6){delete _0x483dd6[_0x8a0b('0x80')];for(var _0x5b8d3b=0x0;_0x5b8d3b<Object[_0x8a0b('0x21')](_0x483dd6)[_0x8a0b('0x22')];_0x5b8d3b++){var _0x433f44=Object['keys'](_0x483dd6)[_0x5b8d3b];if(!_[_0x8a0b('0x23')](_0x433f44,_0x8a0b('0x24'))){_0x483dd6[_0x433f44][_0x8a0b('0x81')]=_0x433f44;_0x483dd6[_0x433f44][_0x8a0b('0x82')]=_0x433f44;}}return _0x483dd6;})[_0x8a0b('0x18')](function(_0x34b46d){var _0x2981fd={'where':Boolean(_0x1931c1[_0x8a0b('0x2a')][_0x8a0b('0x83')])===!![]?undefined:{'$or':[{'ListId':_0x1931c1[_0x8a0b('0x2a')]['id']},{'ListId':null}]},'raw':!![]};return db['CmCustomField'][_0x8a0b('0x84')](_0x2981fd)[_0x8a0b('0x18')](function(_0x3289a7){for(var _0x355bcd=0x0;_0x355bcd<_0x3289a7[_0x8a0b('0x22')];_0x355bcd++){var _0x1a035a='cf_'+_0x3289a7[_0x355bcd]['id'];_0x34b46d[_0x1a035a][_0x8a0b('0x81')]=_0x1a035a;_0x34b46d[_0x1a035a][_0x8a0b('0x82')]=_0x3289a7[_0x355bcd][_0x8a0b('0x85')];_0x34b46d[_0x1a035a][_0x8a0b('0x86')]={'type':_0x3289a7[_0x355bcd][_0x8a0b('0x52')],'values':_0x3289a7[_0x355bcd][_0x8a0b('0x87')]};}Object[_0x8a0b('0x21')](_0x34b46d)[_0x8a0b('0x59')](function(_0x2593c1){if(!_0x34b46d[_0x2593c1][_0x8a0b('0x2f')](_0x8a0b('0x81'))){delete _0x34b46d[_0x2593c1];}});return _0x34b46d;});})['then'](respondWithResult(_0x2f7bb4,null))['catch'](handleError(_0x2f7bb4,null));};exports[_0x8a0b('0x88')]=function(_0x27cdd6,_0x2047c7){var _0x27f1dc;var _0x404dd9;var _0x3ff5a1;if(_0x27cdd6['body']['id']){delete _0x27cdd6[_0x8a0b('0x89')]['id'];}return db[_0x8a0b('0x73')]['findAll']({'where':{'id':[_0x27cdd6[_0x8a0b('0x89')]['to'],_0x27cdd6['body'][_0x8a0b('0x37')]]}})['then'](function(_0x2b8697){if(_0x2b8697){if(_0x2b8697[_0x8a0b('0x22')]!==0x2){return null;}_0x2b8697[0x0]=_0x2b8697[0x0][_0x8a0b('0x8a')]({'plain':!![]});_0x2b8697[0x1]=_0x2b8697[0x1][_0x8a0b('0x8a')]({'plain':!![]});delete _0x2b8697[0x0]['id'];delete _0x2b8697[0x1]['id'];return _[_0x8a0b('0x8b')](_0x2b8697[0x0],_0x2b8697[0x1],function(_0x3a922c,_0x2c6e13){if(Array[_0x8a0b('0x8c')](_0x2c6e13)&&!_0x2c6e13['length']){return _0x3a922c;}else if(!_0x2c6e13){return _0x3a922c;}});}})['then'](handleEntityNotFound(_0x2047c7,null))[_0x8a0b('0x18')](function(_0x595e5f){if(_0x595e5f){if(_0x595e5f[_0x8a0b('0x80')]&&_[_0x8a0b('0x8c')](_0x595e5f['tags'])){_0x595e5f[_0x8a0b('0x80')]=_0x595e5f['tags']['join']();}logger['info'](_0x8a0b('0x8d'),_0x27cdd6[_0x8a0b('0x89')]['to'],_0x27cdd6[_0x8a0b('0x89')]['from']);return db['CmHopper'][_0x8a0b('0x19')]({'where':{'ContactId':[_0x27cdd6[_0x8a0b('0x89')]['to'],_0x27cdd6['body'][_0x8a0b('0x37')]]}})[_0x8a0b('0x18')](function(_0x2df081){logger['info']('[CmContact][merge][destroy][CmHopper],\x20%s',_0x2df081);return db[_0x8a0b('0x8e')][_0x8a0b('0x19')]({'where':{'ContactId':[_0x27cdd6[_0x8a0b('0x89')]['to'],_0x27cdd6[_0x8a0b('0x89')]['from']]}})[_0x8a0b('0x18')](function(_0x1a7ed0){logger['info'](_0x8a0b('0x8f'),_0x1a7ed0);return db[_0x8a0b('0x73')][_0x8a0b('0x90')](_0x595e5f);});});}})[_0x8a0b('0x18')](function(_0x5ebd85){if(_0x5ebd85){_0x27f1dc=_0x5ebd85;_0x404dd9={'ContactId':_0x27f1dc['id']};_0x3ff5a1={'where':{'ContactId':[_0x27cdd6[_0x8a0b('0x89')]['to'],_0x27cdd6[_0x8a0b('0x89')][_0x8a0b('0x37')]]}};return db[_0x8a0b('0x91')]['update'](_0x404dd9,_0x3ff5a1);}})[_0x8a0b('0x18')](function(){if(_0x27f1dc){return db[_0x8a0b('0x92')][_0x8a0b('0x17')](_0x404dd9,_0x3ff5a1);}})['then'](function(){if(_0x27f1dc){return db[_0x8a0b('0x93')][_0x8a0b('0x17')](_0x404dd9,_0x3ff5a1);}})['then'](function(){if(_0x27f1dc){return db[_0x8a0b('0x94')][_0x8a0b('0x17')](_0x404dd9,_0x3ff5a1);}})[_0x8a0b('0x18')](function(){if(_0x27f1dc){return db[_0x8a0b('0x95')][_0x8a0b('0x17')](_0x404dd9,_0x3ff5a1);}})['then'](function(){if(_0x27f1dc){return db['MailInteraction']['update'](_0x404dd9,_0x3ff5a1);}})[_0x8a0b('0x18')](function(){if(_0x27f1dc){return db[_0x8a0b('0x95')][_0x8a0b('0x17')](_0x404dd9,_0x3ff5a1);}})[_0x8a0b('0x18')](function(){if(_0x27f1dc){return db[_0x8a0b('0x96')][_0x8a0b('0x17')](_0x404dd9,_0x3ff5a1);}})['then'](function(){if(_0x27f1dc){return db[_0x8a0b('0x97')][_0x8a0b('0x17')](_0x404dd9,_0x3ff5a1);}})['then'](function(){if(_0x27f1dc){return db[_0x8a0b('0x98')]['update'](_0x404dd9,_0x3ff5a1);}})[_0x8a0b('0x18')](function(){if(_0x27f1dc){return db[_0x8a0b('0x99')][_0x8a0b('0x17')](_0x404dd9,_0x3ff5a1);}})[_0x8a0b('0x18')](function(){if(_0x27f1dc){return db[_0x8a0b('0x9a')]['update'](_0x404dd9,_0x3ff5a1);}})['then'](function(){if(_0x27f1dc){return db[_0x8a0b('0x9b')][_0x8a0b('0x17')](_0x404dd9,_0x3ff5a1);}})[_0x8a0b('0x18')](function(){if(_0x27f1dc){return db[_0x8a0b('0x9c')][_0x8a0b('0x17')](_0x404dd9,_0x3ff5a1);}})[_0x8a0b('0x18')](function(){if(_0x27f1dc){return db['CmHopperHistory'][_0x8a0b('0x17')](_0x404dd9,_0x3ff5a1);}})[_0x8a0b('0x18')](function(){if(_0x27f1dc){return db['ReportAgentPreview']['update'](_0x404dd9,_0x3ff5a1);}})[_0x8a0b('0x18')](function(){if(_0x27f1dc){return db['VoiceCallReport']['update'](_0x404dd9,_0x3ff5a1);}})[_0x8a0b('0x18')](function(){if(_0x27f1dc){return db['ChatQueueReport'][_0x8a0b('0x17')](_0x404dd9,_0x3ff5a1);}})[_0x8a0b('0x18')](function(){if(_0x27f1dc){return db[_0x8a0b('0x9d')][_0x8a0b('0x17')](_0x404dd9,_0x3ff5a1);}})[_0x8a0b('0x18')](function(){if(_0x27f1dc){return db['MailQueueReport']['update'](_0x404dd9,_0x3ff5a1);}})['then'](function(){if(_0x27f1dc){return db[_0x8a0b('0x9e')]['update'](_0x404dd9,_0x3ff5a1);}})[_0x8a0b('0x18')](function(){if(_0x27f1dc){return db[_0x8a0b('0x9f')][_0x8a0b('0x17')](_0x404dd9,_0x3ff5a1);}})[_0x8a0b('0x18')](function(){if(_0x27f1dc){return db[_0x8a0b('0xa0')][_0x8a0b('0x17')](_0x404dd9,_0x3ff5a1);}})[_0x8a0b('0x18')](function(){if(_0x27f1dc){return db['WhatsappInteraction'][_0x8a0b('0x17')](_0x404dd9,_0x3ff5a1);}})[_0x8a0b('0x18')](function(){if(_0x27f1dc){return db[_0x8a0b('0xa1')][_0x8a0b('0x17')](_0x404dd9,_0x3ff5a1);}})[_0x8a0b('0x18')](function(){if(_0x27f1dc){return db['WhatsappQueueReport'][_0x8a0b('0x17')](_0x404dd9,_0x3ff5a1);}})[_0x8a0b('0x18')](function(){if(_0x27f1dc){return db[_0x8a0b('0x73')]['destroy']({'where':{'id':[_0x27cdd6[_0x8a0b('0x89')]['to'],_0x27cdd6[_0x8a0b('0x89')][_0x8a0b('0x37')]]}});}})['then'](function(){if(_0x27f1dc){return _0x27f1dc;}})[_0x8a0b('0x18')](respondWithResult(_0x2047c7,null))[_0x8a0b('0x7e')](handleError(_0x2047c7,null));};exports[_0x8a0b('0x90')]=function(_0x3bf9bf,_0x29c454){return db[_0x8a0b('0x73')][_0x8a0b('0xa2')]()['then'](function(_0x5b9db4){if(_0x3bf9bf[_0x8a0b('0x89')][_0x8a0b('0x80')]&&_[_0x8a0b('0x8c')](_0x3bf9bf[_0x8a0b('0x89')][_0x8a0b('0x80')])){if(_0x3bf9bf['body']['tags']['length']){_0x3bf9bf[_0x8a0b('0x89')][_0x8a0b('0x80')]=_0x3bf9bf[_0x8a0b('0x89')][_0x8a0b('0x80')]['join'](';')+';';}else{_0x3bf9bf[_0x8a0b('0x89')][_0x8a0b('0x80')]=null;}}else{_0x3bf9bf[_0x8a0b('0x89')][_0x8a0b('0x80')]=null;}return db[_0x8a0b('0x73')]['create'](_0x3bf9bf[_0x8a0b('0x89')],{'fields':_[_0x8a0b('0x21')](_0x5b9db4),'raw':!![]});})[_0x8a0b('0x18')](respondWithResult(_0x29c454,0xc9))[_0x8a0b('0x7e')](handleError(_0x29c454,null));};exports[_0x8a0b('0xa3')]=function(_0x45d65e,_0x2d2941){var _0x5ef03d=0x0;var _0x2716d2=0x0;var _0x46a519=0x0;return db[_0x8a0b('0x73')][_0x8a0b('0xa2')]()['then'](function(_0x45984d){return BPromise['each'](_0x45d65e[_0x8a0b('0x89')],function(_0x352bdd){var _0xceca87={'where':{'$or':[]},'defaults':_0x352bdd,'fields':_[_0x8a0b('0x21')](_0x45984d),'raw':!![]};if(_0x352bdd[_0x8a0b('0xa4')]){for(var _0x347747=0x0;_0x347747<_0x352bdd[_0x8a0b('0xa4')][_0x8a0b('0x22')];_0x347747++){var _0x9abf5b={};_0x9abf5b[_0x352bdd[_0x8a0b('0xa4')][_0x347747]]=_0x352bdd[_0x352bdd[_0x8a0b('0xa4')][_0x347747]];_0xceca87[_0x8a0b('0x32')][_0x8a0b('0xa5')]['push'](_0x9abf5b);}_0xceca87[_0x8a0b('0x32')][_0x8a0b('0x5a')]=_0x352bdd[_0x8a0b('0x5a')];}return db['CmContact'][_0x8a0b('0xa6')](_0xceca87)[_0x8a0b('0xa7')](function(_0x557e8d,_0x3036d8){if(_0x3036d8){_0x5ef03d++;}else{_0x46a519++;}})[_0x8a0b('0x7e')](function(){_0x2716d2++;});});})[_0x8a0b('0x18')](function(_0x2df8ba){if(_0x2df8ba){return{'success':_0x5ef03d,'failure':_0x2716d2,'duplicates':_0x46a519};}})[_0x8a0b('0x18')](respondWithResult(_0x2d2941,0xc9))[_0x8a0b('0x7e')](handleError(_0x2d2941,null));};exports[_0x8a0b('0xa8')]=function(_0x24ae01,_0x2d4b6a){var _0x3f3212;return db[_0x8a0b('0x73')][_0x8a0b('0xa2')]()[_0x8a0b('0x18')](function(_0x5a1a89){return db[_0x8a0b('0x73')][_0x8a0b('0x44')]({'where':{'id':_0x24ae01[_0x8a0b('0x7f')]['id']},'include':[{'model':db['Tag'],'as':_0x8a0b('0x7d'),'attributes':['id','name',_0x8a0b('0x36')],'required':_0x24ae01[_0x8a0b('0x2a')][_0x8a0b('0x5d')]?!![]:![]}],'attributes':_[_0x8a0b('0x21')](_0x5a1a89)});})[_0x8a0b('0x18')](function(_0x4a6934){if(!_[_0x8a0b('0x56')](_0x4a6934)){_0x3f3212=_0x4a6934['get']({'plain':!![]});var _0x1faf72={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4a6934&&_0x4a6934[_0x8a0b('0x5a')]){if(_0x4a6934[_0x8a0b('0x5a')]){_0x1faf72[_0x8a0b('0x32')][_0x8a0b('0xa9')][_0x8a0b('0x25')]({'ListId':{'$ne':_0x4a6934['ListId']}});}}return db['CmCustomField']['findAll'](_0x1faf72);}})[_0x8a0b('0x18')](function(_0xea9ffc){if(!_[_0x8a0b('0x56')](_0xea9ffc)){return _['omit'](_0x3f3212,_[_0x8a0b('0x47')](_0xea9ffc,function(_0x5e02b0){return util['format'](_0x8a0b('0xaa'),_0x5e02b0['id']);}));}})[_0x8a0b('0x18')](handleEntityNotFound(_0x2d4b6a,null))[_0x8a0b('0x18')](respondWithResult(_0x2d4b6a,null))['catch'](handleError(_0x2d4b6a,null));};exports[_0x8a0b('0x17')]=function(_0x1709f0,_0x32ecf0){var _0x1dc2b6;if(_0x1709f0[_0x8a0b('0x89')]['id']){delete _0x1709f0['body']['id'];}return db[_0x8a0b('0x73')]['find']({'where':{'id':_0x1709f0['params']['id']}})[_0x8a0b('0x18')](handleEntityNotFound(_0x32ecf0,null))[_0x8a0b('0x18')](saveUpdates(_0x1709f0[_0x8a0b('0x89')],null))[_0x8a0b('0x18')](function(_0x1e6e92){_0x1dc2b6=_0x1e6e92;var _0xcbc3df={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x1e6e92&&_0x1e6e92[_0x8a0b('0x5a')]){if(_0x1e6e92[_0x8a0b('0x5a')]){_0xcbc3df[_0x8a0b('0x32')][_0x8a0b('0xa9')]['push']({'ListId':{'$ne':_0x1e6e92[_0x8a0b('0x5a')]}});}}return db[_0x8a0b('0x26')]['findAll'](_0xcbc3df);})['then'](function(_0x326b49){if(_0x326b49){return _[_0x8a0b('0xab')](_['pickBy'](_0x1709f0[_0x8a0b('0x89')],function(_0x1f1d03,_0x160629){return _['startsWith'](_0x160629,'cf_');}),_[_0x8a0b('0x47')](_0x326b49,function(_0x5e242f){return util['format']('cf_%d',_0x5e242f['id']);}));}})[_0x8a0b('0x18')](function(_0x53ead9){if(_0x53ead9&&!_[_0x8a0b('0x58')](_0x53ead9)){var _0x4b22c3=squel[_0x8a0b('0x17')]()[_0x8a0b('0xac')](_0x8a0b('0x38'))['setFields'](_0x53ead9)[_0x8a0b('0x32')](_0x8a0b('0xad'),_0x1709f0['params']['id'])[_0x8a0b('0xae')]();return db['sequelize']['query'](_0x4b22c3[_0x8a0b('0x53')],{'replacements':_0x4b22c3['values']});}})[_0x8a0b('0x18')](function(){if(_0x1709f0[_0x8a0b('0x89')]['phone']&&_0x1dc2b6){return db[_0x8a0b('0xaf')][_0x8a0b('0x17')]({'phone':_0x1709f0[_0x8a0b('0x89')][_0x8a0b('0xb0')]},{'where':{'ContactId':_0x1dc2b6['id']}});}})[_0x8a0b('0x18')](function(){return _0x1dc2b6;})['then'](respondWithResult(_0x32ecf0,null))[_0x8a0b('0x7e')](handleError(_0x32ecf0,null));};exports[_0x8a0b('0xb1')]=function(_0x5f181a,_0x1db89f){var _0x40df1d={};var _0x4ef37f={};var _0x338e2b;var _0xfd62c3;return db[_0x8a0b('0x73')]['findOne']({'where':{'id':_0x5f181a['params']['id']}})[_0x8a0b('0x18')](handleEntityNotFound(_0x1db89f,null))['then'](function(_0x484880){if(_0x484880){_0x338e2b=_0x484880;_0x4ef37f[_0x8a0b('0x2c')]=_['keys'](db[_0x8a0b('0x45')][_0x8a0b('0xb2')]);_0x4ef37f[_0x8a0b('0x2a')]=_[_0x8a0b('0x21')](_0x5f181a['query']);_0x4ef37f[_0x8a0b('0x33')]=_['intersection'](_0x4ef37f[_0x8a0b('0x2c')],_0x4ef37f[_0x8a0b('0x2a')]);_0x40df1d[_0x8a0b('0x2e')]=_[_0x8a0b('0x2b')](_0x4ef37f[_0x8a0b('0x2c')],qs[_0x8a0b('0x2d')](_0x5f181a[_0x8a0b('0x2a')][_0x8a0b('0x2d')]));_0x40df1d[_0x8a0b('0x2e')]=_0x40df1d[_0x8a0b('0x2e')][_0x8a0b('0x22')]?_0x40df1d[_0x8a0b('0x2e')]:_0x4ef37f[_0x8a0b('0x2c')];_0x40df1d[_0x8a0b('0x30')]=qs['sort'](_0x5f181a[_0x8a0b('0x2a')]['sort']);_0x40df1d[_0x8a0b('0x32')]=qs['filters'](_[_0x8a0b('0xb3')](_0x5f181a[_0x8a0b('0x2a')],_0x4ef37f[_0x8a0b('0x33')]));if(_0x5f181a[_0x8a0b('0x2a')]['filter']){_0x40df1d[_0x8a0b('0x32')]=_[_0x8a0b('0x88')](_0x40df1d[_0x8a0b('0x32')],{'$or':_[_0x8a0b('0x47')](_0x40df1d[_0x8a0b('0x2e')],function(_0x426bd7){var _0x2c7a47={};_0x2c7a47[_0x426bd7]={'$like':'%'+_0x5f181a[_0x8a0b('0x2a')][_0x8a0b('0x55')]+'%'};return _0x2c7a47;})});}_0x40df1d=_[_0x8a0b('0x88')]({},_0x40df1d,_0x5f181a['options']);return _0x338e2b['getTags'](_0x40df1d);}})[_0x8a0b('0x18')](function(_0x45f51a){if(_0x45f51a){_0xfd62c3=_0x45f51a[_0x8a0b('0x22')];if(!_0x5f181a[_0x8a0b('0x2a')][_0x8a0b('0x2f')](_0x8a0b('0xb4'))){_0x40df1d[_0x8a0b('0x12')]=qs['limit'](_0x5f181a[_0x8a0b('0x2a')][_0x8a0b('0x12')]);_0x40df1d[_0x8a0b('0x14')]=qs[_0x8a0b('0x14')](_0x5f181a[_0x8a0b('0x2a')][_0x8a0b('0x14')]);}return _0x338e2b[_0x8a0b('0xb1')](_0x40df1d);}})['then'](function(_0x4c20e0){if(_0x4c20e0){return _0x4c20e0?{'count':_0xfd62c3,'rows':_0x4c20e0}:null;}})[_0x8a0b('0x18')](respondWithResult(_0x1db89f,null))[_0x8a0b('0x7e')](handleError(_0x1db89f,null));};exports[_0x8a0b('0xb5')]=function(_0x1ad40d,_0x519f76){if(_0x1ad40d[_0x8a0b('0x89')]['id']){delete _0x1ad40d[_0x8a0b('0x89')]['id'];}return db['CmContact'][_0x8a0b('0x27')]({'where':{'id':_0x1ad40d[_0x8a0b('0x7f')]['id']}})[_0x8a0b('0x18')](handleEntityNotFound(_0x519f76,null))[_0x8a0b('0x18')](function(_0x54ffa5){if(_0x54ffa5){return _0x54ffa5[_0x8a0b('0xb5')](_0x1ad40d[_0x8a0b('0x89')][_0x8a0b('0xb6')]||[]);}return null;})['then'](respondWithResult(_0x519f76,null))[_0x8a0b('0x7e')](handleError(_0x519f76,null));};exports[_0x8a0b('0xb7')]=function(_0x96053e,_0x5c1609){var _0x1f909c={'raw':![],'where':{}};var _0x57eb57={};var _0x4b0968={'count':0x0,'rows':[]};return db[_0x8a0b('0x73')][_0x8a0b('0x27')]({'where':{'id':_0x96053e[_0x8a0b('0x7f')]['id']}})[_0x8a0b('0x18')](handleEntityNotFound(_0x5c1609,null))[_0x8a0b('0x18')](function(_0x1c18b1){if(_0x1c18b1){_0x57eb57[_0x8a0b('0x2c')]=_['keys'](db[_0x8a0b('0xaf')][_0x8a0b('0xb2')]);_0x57eb57[_0x8a0b('0x2a')]=_[_0x8a0b('0x21')](_0x96053e[_0x8a0b('0x2a')]);_0x57eb57[_0x8a0b('0x33')]=_['intersection'](_0x57eb57['model'],_0x57eb57[_0x8a0b('0x2a')]);_0x1f909c[_0x8a0b('0x2e')]=_[_0x8a0b('0x2b')](_0x57eb57['model'],qs['fields'](_0x96053e[_0x8a0b('0x2a')][_0x8a0b('0x2d')]));_0x1f909c['attributes']=_0x1f909c[_0x8a0b('0x2e')][_0x8a0b('0x22')]?_0x1f909c[_0x8a0b('0x2e')]:_0x57eb57[_0x8a0b('0x2c')];if(!_0x96053e['query']['hasOwnProperty'](_0x8a0b('0xb4'))){_0x1f909c[_0x8a0b('0x12')]=qs[_0x8a0b('0x12')](_0x96053e[_0x8a0b('0x2a')]['limit']);_0x1f909c[_0x8a0b('0x14')]=qs[_0x8a0b('0x14')](_0x96053e['query']['offset']);}_0x1f909c[_0x8a0b('0x30')]=qs[_0x8a0b('0x31')](_0x96053e['query'][_0x8a0b('0x31')]);_0x1f909c['where']=qs[_0x8a0b('0x33')](_[_0x8a0b('0xb3')](_0x96053e[_0x8a0b('0x2a')],_0x57eb57[_0x8a0b('0x33')]));_0x1f909c[_0x8a0b('0x32')]['ContactId']=_0x1c18b1['id'];if(_0x96053e[_0x8a0b('0x2a')][_0x8a0b('0x55')]){_0x1f909c[_0x8a0b('0x32')]=_['merge'](_0x1f909c[_0x8a0b('0x32')],{'$or':_[_0x8a0b('0x47')](_0x1f909c['attributes'],function(_0x4160d3){var _0x1e92fc={};_0x1e92fc[_0x4160d3]={'$like':'%'+_0x96053e['query'][_0x8a0b('0x55')]+'%'};return _0x1e92fc;})});}_0x1f909c=_['merge']({},_0x1f909c,_0x96053e[_0x8a0b('0xb8')]);return db[_0x8a0b('0xaf')]['count']({'where':_0x1f909c[_0x8a0b('0x32')]})[_0x8a0b('0x18')](function(_0x48e67c){_0x4b0968['count']=_0x48e67c;if(_0x96053e[_0x8a0b('0x2a')][_0x8a0b('0xb9')]){_0x1f909c[_0x8a0b('0xba')]=[{'all':!![]}];}return db[_0x8a0b('0xaf')][_0x8a0b('0x84')](_0x1f909c);})['then'](function(_0x11521e){_0x4b0968[_0x8a0b('0xbb')]=_0x11521e;return _0x4b0968;});}})[_0x8a0b('0x18')](respondWithFilteredResult(_0x5c1609,_0x1f909c))[_0x8a0b('0x7e')](handleError(_0x5c1609,null));};exports[_0x8a0b('0xbc')]=function(_0x10372f,_0x729252){var _0x13c08e={'raw':!![],'where':{}};var _0x19b3e5={};var _0x527a53={'count':0x0,'rows':[]};return db[_0x8a0b('0x73')][_0x8a0b('0x27')]({'where':{'id':_0x10372f[_0x8a0b('0x7f')]['id']}})[_0x8a0b('0x18')](handleEntityNotFound(_0x729252,null))[_0x8a0b('0x18')](function(_0x2950f5){if(_0x2950f5){_0x19b3e5[_0x8a0b('0x2c')]=_[_0x8a0b('0x21')](db[_0x8a0b('0xbd')][_0x8a0b('0xb2')]);_0x19b3e5[_0x8a0b('0x2a')]=_[_0x8a0b('0x21')](_0x10372f['query']);_0x19b3e5[_0x8a0b('0x33')]=_[_0x8a0b('0x2b')](_0x19b3e5[_0x8a0b('0x2c')],_0x19b3e5[_0x8a0b('0x2a')]);_0x13c08e[_0x8a0b('0x2e')]=_[_0x8a0b('0x2b')](_0x19b3e5['model'],qs['fields'](_0x10372f[_0x8a0b('0x2a')][_0x8a0b('0x2d')]));_0x13c08e[_0x8a0b('0x2e')]=_0x13c08e[_0x8a0b('0x2e')]['length']?_0x13c08e[_0x8a0b('0x2e')]:_0x19b3e5[_0x8a0b('0x2c')];if(!_0x10372f[_0x8a0b('0x2a')][_0x8a0b('0x2f')](_0x8a0b('0xb4'))){_0x13c08e[_0x8a0b('0x12')]=qs[_0x8a0b('0x12')](_0x10372f['query'][_0x8a0b('0x12')]);_0x13c08e[_0x8a0b('0x14')]=qs[_0x8a0b('0x14')](_0x10372f['query'][_0x8a0b('0x14')]);}_0x13c08e[_0x8a0b('0x30')]=qs[_0x8a0b('0x31')](_0x10372f[_0x8a0b('0x2a')][_0x8a0b('0x31')]);_0x13c08e['where']=qs['filters'](_[_0x8a0b('0xb3')](_0x10372f['query'],_0x19b3e5[_0x8a0b('0x33')]));_0x13c08e[_0x8a0b('0x32')][_0x8a0b('0xbe')]=_0x2950f5['id'];if(_0x10372f[_0x8a0b('0x2a')][_0x8a0b('0x55')]){_0x13c08e[_0x8a0b('0x32')]=_['merge'](_0x13c08e['where'],{'$or':_[_0x8a0b('0x47')](_0x13c08e[_0x8a0b('0x2e')],function(_0x41a7bc){var _0x5c3d8c={};_0x5c3d8c[_0x41a7bc]={'$like':'%'+_0x10372f[_0x8a0b('0x2a')]['filter']+'%'};return _0x5c3d8c;})});}_0x13c08e=_[_0x8a0b('0x88')]({},_0x13c08e,_0x10372f[_0x8a0b('0xb8')]);return db['CmHopperHistory']['count']({'where':_0x13c08e['where']})[_0x8a0b('0x18')](function(_0x47748a){_0x527a53[_0x8a0b('0x13')]=_0x47748a;if(_0x10372f['query'][_0x8a0b('0xb9')]){_0x13c08e[_0x8a0b('0xba')]=[{'all':!![]}];}return db[_0x8a0b('0xbd')][_0x8a0b('0x84')](_0x13c08e);})['then'](function(_0x345f9a){_0x527a53[_0x8a0b('0xbb')]=_0x345f9a;return _0x527a53;});}})[_0x8a0b('0x18')](respondWithFilteredResult(_0x729252,_0x13c08e))[_0x8a0b('0x7e')](handleError(_0x729252,null));};exports['getHopperFinals']=function(_0x7bc7b1,_0x49362f){var _0x3fa4cc={'raw':!![],'where':{}};var _0x500410={};var _0x405c0d={'count':0x0,'rows':[]};return db[_0x8a0b('0x73')]['findOne']({'where':{'id':_0x7bc7b1[_0x8a0b('0x7f')]['id']}})[_0x8a0b('0x18')](handleEntityNotFound(_0x49362f,null))[_0x8a0b('0x18')](function(_0x1ad502){if(_0x1ad502){_0x500410[_0x8a0b('0x2c')]=_['keys'](db[_0x8a0b('0x9c')][_0x8a0b('0xb2')]);_0x500410['query']=_[_0x8a0b('0x21')](_0x7bc7b1[_0x8a0b('0x2a')]);_0x500410[_0x8a0b('0x33')]=_['intersection'](_0x500410[_0x8a0b('0x2c')],_0x500410[_0x8a0b('0x2a')]);_0x3fa4cc[_0x8a0b('0x2e')]=_[_0x8a0b('0x2b')](_0x500410[_0x8a0b('0x2c')],qs[_0x8a0b('0x2d')](_0x7bc7b1[_0x8a0b('0x2a')]['fields']));_0x3fa4cc[_0x8a0b('0x2e')]=_0x3fa4cc[_0x8a0b('0x2e')][_0x8a0b('0x22')]?_0x3fa4cc[_0x8a0b('0x2e')]:_0x500410[_0x8a0b('0x2c')];if(!_0x7bc7b1[_0x8a0b('0x2a')]['hasOwnProperty'](_0x8a0b('0xb4'))){_0x3fa4cc['limit']=qs[_0x8a0b('0x12')](_0x7bc7b1[_0x8a0b('0x2a')]['limit']);_0x3fa4cc['offset']=qs[_0x8a0b('0x14')](_0x7bc7b1[_0x8a0b('0x2a')][_0x8a0b('0x14')]);}_0x3fa4cc[_0x8a0b('0x30')]=qs[_0x8a0b('0x31')](_0x7bc7b1[_0x8a0b('0x2a')][_0x8a0b('0x31')]);_0x3fa4cc[_0x8a0b('0x32')]=qs[_0x8a0b('0x33')](_[_0x8a0b('0xb3')](_0x7bc7b1[_0x8a0b('0x2a')],_0x500410[_0x8a0b('0x33')]));_0x3fa4cc[_0x8a0b('0x32')][_0x8a0b('0xbe')]=_0x1ad502['id'];if(_0x7bc7b1['query'][_0x8a0b('0x55')]){_0x3fa4cc[_0x8a0b('0x32')]=_[_0x8a0b('0x88')](_0x3fa4cc[_0x8a0b('0x32')],{'$or':_['map'](_0x3fa4cc[_0x8a0b('0x2e')],function(_0x35befd){var _0x5c3c28={};_0x5c3c28[_0x35befd]={'$like':'%'+_0x7bc7b1[_0x8a0b('0x2a')][_0x8a0b('0x55')]+'%'};return _0x5c3c28;})});}_0x3fa4cc=_[_0x8a0b('0x88')]({},_0x3fa4cc,_0x7bc7b1[_0x8a0b('0xb8')]);return db[_0x8a0b('0x9c')][_0x8a0b('0x13')]({'where':_0x3fa4cc[_0x8a0b('0x32')]})[_0x8a0b('0x18')](function(_0x2039dc){_0x405c0d[_0x8a0b('0x13')]=_0x2039dc;if(_0x7bc7b1[_0x8a0b('0x2a')][_0x8a0b('0xb9')]){_0x3fa4cc['include']=[{'all':!![]}];}return db[_0x8a0b('0x9c')]['findAll'](_0x3fa4cc);})[_0x8a0b('0x18')](function(_0x2d08cd){_0x405c0d[_0x8a0b('0xbb')]=_0x2d08cd;return _0x405c0d;});}})[_0x8a0b('0x18')](respondWithFilteredResult(_0x49362f,_0x3fa4cc))['catch'](handleError(_0x49362f,null));};exports[_0x8a0b('0xbf')]=function(_0xb39664,_0x5d4155){var _0xca20cd={'raw':!![],'where':{}};var _0xe4be3a={};var _0x23b91b={'count':0x0,'rows':[]};return db['CmContact'][_0x8a0b('0x27')]({'where':{'id':_0xb39664['params']['id']}})[_0x8a0b('0x18')](handleEntityNotFound(_0x5d4155,null))[_0x8a0b('0x18')](function(_0x5608e3){if(_0x5608e3){_0xe4be3a[_0x8a0b('0x2c')]=_['keys'](db[_0x8a0b('0xa0')][_0x8a0b('0xb2')]);_0xe4be3a[_0x8a0b('0x2a')]=_[_0x8a0b('0x21')](_0xb39664[_0x8a0b('0x2a')]);_0xe4be3a[_0x8a0b('0x33')]=_['intersection'](_0xe4be3a[_0x8a0b('0x2c')],_0xe4be3a[_0x8a0b('0x2a')]);_0xca20cd['attributes']=_[_0x8a0b('0x2b')](_0xe4be3a[_0x8a0b('0x2c')],qs['fields'](_0xb39664['query'][_0x8a0b('0x2d')]));_0xca20cd[_0x8a0b('0x2e')]=_0xca20cd[_0x8a0b('0x2e')][_0x8a0b('0x22')]?_0xca20cd[_0x8a0b('0x2e')]:_0xe4be3a[_0x8a0b('0x2c')];if(!_0xb39664[_0x8a0b('0x2a')]['hasOwnProperty'](_0x8a0b('0xb4'))){_0xca20cd['limit']=qs[_0x8a0b('0x12')](_0xb39664['query'][_0x8a0b('0x12')]);_0xca20cd[_0x8a0b('0x14')]=qs[_0x8a0b('0x14')](_0xb39664[_0x8a0b('0x2a')][_0x8a0b('0x14')]);}_0xca20cd[_0x8a0b('0x30')]=qs['sort'](_0xb39664[_0x8a0b('0x2a')][_0x8a0b('0x31')]);_0xca20cd[_0x8a0b('0x32')]=qs[_0x8a0b('0x33')](_[_0x8a0b('0xb3')](_0xb39664[_0x8a0b('0x2a')],_0xe4be3a[_0x8a0b('0x33')]));_0xca20cd['where']['ContactId']=_0x5608e3['id'];if(_0xb39664[_0x8a0b('0x2a')][_0x8a0b('0x55')]){_0xca20cd[_0x8a0b('0x32')]=_[_0x8a0b('0x88')](_0xca20cd['where'],{'$or':_['map'](_0xca20cd[_0x8a0b('0x2e')],function(_0x3a4ef4){var _0x52339e={};_0x52339e[_0x3a4ef4]={'$like':'%'+_0xb39664[_0x8a0b('0x2a')][_0x8a0b('0x55')]+'%'};return _0x52339e;})});}_0xca20cd=_[_0x8a0b('0x88')]({},_0xca20cd,_0xb39664[_0x8a0b('0xb8')]);return db[_0x8a0b('0xa0')][_0x8a0b('0x13')]({'where':_0xca20cd[_0x8a0b('0x32')]})[_0x8a0b('0x18')](function(_0x250f38){_0x23b91b[_0x8a0b('0x13')]=_0x250f38;if(_0xb39664[_0x8a0b('0x2a')][_0x8a0b('0xb9')]){_0xca20cd['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x8a0b('0x84')](_0xca20cd);})['then'](function(_0x2747bf){_0x23b91b[_0x8a0b('0xbb')]=_0x2747bf;return _0x23b91b;});}})['then'](respondWithFilteredResult(_0x5d4155,_0xca20cd))[_0x8a0b('0x7e')](handleError(_0x5d4155,null));};exports[_0x8a0b('0xc0')]=function(_0x5366a6,_0x21e6ce){try{if(!_0x5366a6[_0x8a0b('0x89')]['ListId']){throw new Error(_0x8a0b('0xc1'));}if(!_0x5366a6[_0x8a0b('0x89')]['binding_keys']){throw new Error('No\x20association\x20keys\x20specified!');}if(!_0x5366a6['body'][_0x8a0b('0xc2')]){throw new Error(_0x8a0b('0xc3'));}if(!_0x5366a6[_0x8a0b('0x89')][_0x8a0b('0xc4')]){throw new Error(_0x8a0b('0xc5'));}var _0x1b00b0=_0x5366a6[_0x8a0b('0x89')][_0x8a0b('0xc6')][_0x8a0b('0x5f')](',');var _0x144dc7=_0x5366a6['body'][_0x8a0b('0xc2')][_0x8a0b('0x5f')](',');if(!_0x1b00b0['length']||!_0x144dc7[_0x8a0b('0x22')]||_0x1b00b0[_0x8a0b('0x22')]!==_0x144dc7['length']){throw new Error('Incorrect\x20binding\x20parameters\x20passed!');}_0x5366a6[_0x8a0b('0x89')][_0x8a0b('0x2d')]=_[_0x8a0b('0xc7')](_0x1b00b0,_0x144dc7);if(!_0x5366a6[_0x8a0b('0x89')][_0x8a0b('0x2d')]['phone']){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x5366a6[_0x8a0b('0x89')][_0x8a0b('0x2d')]['firstName']){throw new Error(_0x8a0b('0xc8'));}var _0x56b764=path[_0x8a0b('0xc9')](config[_0x8a0b('0xca')],_0x8a0b('0xcb'),_0x5366a6[_0x8a0b('0xcc')][_0x8a0b('0xcd')]);fs[_0x8a0b('0xce')](_0x56b764,parseInt(_0x8a0b('0xcf'),0x8));var _0xf5c0c8=require('child_process')['fork'](path[_0x8a0b('0xc9')](__dirname,_0x8a0b('0xd0')),[_0x56b764,_0x5366a6[_0x8a0b('0x89')]['binding_keys'],_0x5366a6[_0x8a0b('0x89')][_0x8a0b('0xc2')],_0x5366a6[_0x8a0b('0x89')][_0x8a0b('0x5a')],_0x5366a6[_0x8a0b('0x89')][_0x8a0b('0xd1')],_0x5366a6[_0x8a0b('0x89')]['duplicates'],_0x5366a6[_0x8a0b('0x89')][_0x8a0b('0xc4')]]);return _0x21e6ce[_0x8a0b('0x11')](0xc8)[_0x8a0b('0x16')]({'message':_0x8a0b('0xd2'),'pid':_0xf5c0c8['pid']});}catch(_0xb85e1a){return _0x21e6ce['status'](0x1f4)[_0x8a0b('0x1f')](_0xb85e1a);}};exports[_0x8a0b('0xd3')]=function(_0x1daae9,_0x39d544){var _0x5681a6=fs[_0x8a0b('0xd4')](_0x1daae9[_0x8a0b('0xcc')]['path']);Papa[_0x8a0b('0xd5')](_0x5681a6,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x3e8a77){return _0x39d544[_0x8a0b('0x11')](0xc8)['json']({'file':_0x1daae9[_0x8a0b('0xcc')],'fields':_0x3e8a77[_0x8a0b('0xd6')]['fields']});}});};exports['import']=function(_0xaf2ef6,_0x9b68be){return db[_0x8a0b('0x4a')][_0x8a0b('0x84')]({'raw':!![],'attributes':['id'],'where':{'role':'agent'}})[_0x8a0b('0x18')](function(_0xf85064){var _0x153c39=![];if(!_0xaf2ef6[_0x8a0b('0x89')][_0x8a0b('0x5a')]){throw new Error(_0x8a0b('0xc1'));}if(!_0xaf2ef6['body'][_0x8a0b('0xd7')][_0x8a0b('0xb0')]){throw new Error(_0x8a0b('0xd8'));}if(!_0xaf2ef6[_0x8a0b('0x89')]['binding']['firstName']){throw new Error(_0x8a0b('0xc8'));}if(!_0xaf2ef6[_0x8a0b('0x89')]['socket_timestamp']){throw new Error(_0x8a0b('0xc5'));}var _0x488292=require('child_process')[_0x8a0b('0xd9')](path[_0x8a0b('0xc9')](__dirname,'../../components/import/cm/csv2'),[_0xaf2ef6[_0x8a0b('0x7f')]['id'],JSON[_0x8a0b('0xda')](_0xaf2ef6[_0x8a0b('0x89')]),JSON[_0x8a0b('0xda')](_0xf85064)]);_0x488292['on'](_0x8a0b('0xdb'),function(){_0x153c39=!![];return _0x9b68be[_0x8a0b('0x11')](0xc8)[_0x8a0b('0x16')]({'message':_0x8a0b('0xdc'),'pid':_0x488292[_0x8a0b('0xdd')]});});_0x488292['on'](_0x8a0b('0xde'),function(_0x12735c){if(_0x12735c&&!_0x153c39){return _0x9b68be[_0x8a0b('0x11')](0x1f4)[_0x8a0b('0x16')]({'message':'error\x20child\x20process','pid':_0x488292[_0x8a0b('0xdd')]});}});})[_0x8a0b('0x7e')](handleError(_0x9b68be,null));};exports[_0x8a0b('0xdf')]=function(_0x1f4322,_0x57e594){var _0x5a46af=[_0x8a0b('0xe0'),_0x8a0b('0xe1'),'sms',_0x8a0b('0xe2'),_0x8a0b('0xe3'),_0x8a0b('0xe4'),'voice'];var _0x573a81={'offset':0x0,'order':qs[_0x8a0b('0x31')](_0x8a0b('0xe5'))},_0x1bedab={'count':0x0,'rows':[]};Promise['resolve']()['then'](function(){if(_0x1f4322[_0x8a0b('0x2a')][_0x8a0b('0xe6')]){if(!_[_0x8a0b('0xe7')](_0x5a46af,_0x1f4322[_0x8a0b('0x2a')][_0x8a0b('0xe6')]['toLowerCase']())){throw new Error(_0x8a0b('0xe8'));}_0x5a46af=[_0x1f4322['query'][_0x8a0b('0xe6')][_0x8a0b('0xe9')]()];}if(_0x1f4322[_0x8a0b('0x2a')][_0x8a0b('0xea')]){try{var _0x191cb6=JSON['parse'](_0x1f4322[_0x8a0b('0x2a')][_0x8a0b('0xea')]);if(!moment(_0x191cb6['from'])[_0x8a0b('0xeb')]()){throw new Error(_0x8a0b('0xec'));}if(!moment(_0x191cb6['to'])[_0x8a0b('0xeb')]()){throw new Error(_0x8a0b('0xed'));}}catch(_0xe51d37){throw new Error('Invalid\x20createdAt\x20filter');}}if(!_0x1f4322['query'][_0x8a0b('0x2f')]('nolimit')){_0x573a81[_0x8a0b('0x12')]=qs['limit'](_0x1f4322[_0x8a0b('0x2a')][_0x8a0b('0x12')]||0xa);_0x573a81[_0x8a0b('0x14')]=qs[_0x8a0b('0x14')](_0x1f4322[_0x8a0b('0x2a')][_0x8a0b('0x14')]);}var _0x2c3a7f=_0x5a46af[_0x8a0b('0x47')](function(_0x13f76f){if(_0x13f76f===_0x8a0b('0xee')){var _0x4583f6={'attributes':['id','uniqueid','type',_0x8a0b('0xef'),_0x8a0b('0xf0'),_0x8a0b('0xf1'),'starttime',_0x8a0b('0xf2'),_0x8a0b('0xf3'),_0x8a0b('0xf4'),_0x8a0b('0xf5'),'userDisposition',_0x8a0b('0xf6'),_0x8a0b('0xf7'),_0x8a0b('0xf8')],'where':{'ContactId':_0x1f4322[_0x8a0b('0x7f')]['id']},'include':[{'model':db[_0x8a0b('0x4a')],'as':'User','attributes':['id','name',_0x8a0b('0xf9'),_0x8a0b('0x85')]}],'order':[[_0x8a0b('0xf5'),_0x8a0b('0x67')]]};if(_0x1f4322[_0x8a0b('0x2a')][_0x8a0b('0xea')]){_0x4583f6[_0x8a0b('0x32')][_0x8a0b('0xf5')]={'$gte':_0x191cb6['from'],'$lte':_0x191cb6['to']};}return db[_0x8a0b('0xfa')][_0x8a0b('0xfb')](_0x4583f6)[_0x8a0b('0x18')](function(_0x42d6e0){_0x1bedab['count']+=_0x42d6e0['count'];return _[_0x8a0b('0x47')](_0x42d6e0[_0x8a0b('0xbb')],function(_0x464dd0){var _0x22f558=_0x464dd0[_0x8a0b('0x8a')]({'plain':!![]});_0x22f558[_0x8a0b('0xe6')]=_0x13f76f;if(_0x22f558[_0x8a0b('0x4a')]){_0x22f558['User']={'id':_0x22f558[_0x8a0b('0x4a')]['id'],'name':_0x22f558[_0x8a0b('0x4a')][_0x8a0b('0x1e')],'fullname':_0x22f558['User'][_0x8a0b('0xf9')],'alias':_0x22f558[_0x8a0b('0x4a')][_0x8a0b('0x85')]};}return _0x22f558;});});}else{var _0x472ab9=_['startCase'](_0x13f76f)+(_0x13f76f===_0x8a0b('0xe1')?_0x8a0b('0xfc'):_0x8a0b('0xfd'));var _0x4ed477={'attributes':['id',_0x8a0b('0xfe'),'closedAt',_0x8a0b('0xf5'),_0x8a0b('0xf4'),_0x8a0b('0xff'),_0x8a0b('0x100'),_0x8a0b('0x101'),_0x8a0b('0xf8'),_0x472ab9+'Id'],'where':{'ContactId':_0x1f4322[_0x8a0b('0x7f')]['id']},'include':[{'model':db[_0x472ab9],'as':_0x8a0b('0xfd'),'attributes':['id',_0x8a0b('0x1e'),_0x8a0b('0x102')]},{'model':db[_0x8a0b('0x4a')],'as':'Owner','attributes':['id',_0x8a0b('0x1e'),'fullname']},{'model':db['Tag'],'as':_0x8a0b('0x7d'),'attributes':['id','name',_0x8a0b('0x36')],'through':{'attributes':[]}}],'order':[[_0x8a0b('0xf5'),_0x8a0b('0x67')]]};if(_0x1f4322[_0x8a0b('0x2a')][_0x8a0b('0xea')]){_0x4ed477['where']['createdAt']={'$gte':_0x191cb6[_0x8a0b('0x37')],'$lte':_0x191cb6['to']};}switch(_0x13f76f){case _0x8a0b('0xe1'):_0x4ed477[_0x8a0b('0x2e')]['push'](_0x8a0b('0x103'),_0x8a0b('0x104'),_0x8a0b('0x105'),_0x8a0b('0x106'),_0x8a0b('0x107'),_0x8a0b('0x108'),_0x8a0b('0x109'),'ratingValue',_0x8a0b('0x10a'));break;case _0x8a0b('0xe0'):_0x4ed477['attributes'][_0x8a0b('0x25')](_0x8a0b('0x10b'),_0x8a0b('0x10c'));break;case _0x8a0b('0xe2'):_0x4ed477[_0x8a0b('0x2e')][_0x8a0b('0x25')](_0x8a0b('0x10d'),_0x8a0b('0x10e'));break;}return db[_[_0x8a0b('0x10f')](_0x13f76f)+_0x8a0b('0x110')][_0x8a0b('0xfb')](_0x4ed477)[_0x8a0b('0x18')](function(_0x213805){_0x1bedab[_0x8a0b('0x13')]+=_0x213805[_0x8a0b('0x13')];return _[_0x8a0b('0x47')](_0x213805['rows'],function(_0x53e084){var _0x17be80=_0x53e084[_0x8a0b('0x8a')]({'plain':!![]});_0x17be80[_0x8a0b('0xe6')]=_0x13f76f;if(_0x17be80['Owner']){_0x17be80[_0x8a0b('0x111')]={'id':_0x17be80[_0x8a0b('0x111')]['id'],'name':_0x17be80[_0x8a0b('0x111')][_0x8a0b('0x1e')],'fullname':_0x17be80[_0x8a0b('0x111')][_0x8a0b('0xf9')]};}return _0x17be80;});});}});return Promise[_0x8a0b('0x112')](_0x2c3a7f);})[_0x8a0b('0x18')](function(_0x609f99){return _(_0x609f99)['flatten']()['sortBy'](_0x8a0b('0xf5'))[_0x8a0b('0x113')]()[_0x8a0b('0x46')]();})['then'](function(_0x547ef9){_0x1bedab[_0x8a0b('0xbb')]=_0x573a81[_0x8a0b('0x12')]?_0x547ef9[_0x8a0b('0x114')](_0x573a81['offset'],_0x573a81[_0x8a0b('0x14')]+_0x573a81[_0x8a0b('0x12')]):_0x547ef9;return _0x1bedab;})[_0x8a0b('0x18')](respondWithFilteredResult(_0x57e594,_0x573a81))['catch'](handleError(_0x57e594,null));};
\ No newline at end of file
+var _0xcfe7=['undefined','limit','count','set','Content-Range','json','update','then','destroy','end','sendStatus','error','name','send','index','CmContact','describe','keys','length','CmCustomField','findOne','all','cf_','fieldType','type','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','select','field','tools_tags','from','cm_contacts','left_join','cm_user_has_contacts','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','t.id\x20=\x20ct.TagId','c.deletedAt\x20IS\x20NULL','expr','parseSearch','search','conditions','find','Tag','value','split','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','and','uc.UserId\x20=\x20?','dateOfBirth','castTo','buildExpression','start','filter','isNil','Contact','push','isEmpty','ListId','c.ListId\x20IN\x20?','\x20=\x20?','tag','isArray','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','c.id','Sequelize','QueryTypes','SELECT','clone','order','DESC','user','role','agent','getLists','c.ListId\x20IS\x20NULL','toString','sequelize','keyBy','c.phone','c.mobile','c.fax','c.email','c.ListId','c.createdAt','c.deletedAt','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','catch','params','tags','startsWith','columnName','analytics','findAll','alias','custom','values','merge','body','get','mergeWith','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','[CmContact][merge][destroy][CmHopper],\x20%s','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsMessage','FaxInteraction','FaxMessage','OpenchannelMessage','CmHopperHistory','ReportAgentPreview','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','duplicates','findOrCreate','spread','$and','omit','format','pickBy','cf_%d','table','setFields','id\x20=\x20?','toParam','text','phone','CmHopper','rawAttributes','pick','getTags','setTags','getHoppers','ContactId','include','options','CmHopperFinal','includeAll','No\x20ListId\x20specified','binding_keys','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','Incorrect\x20binding\x20parameters\x20passed!','zipObject','firstName','No\x20firstName\x20column\x20specified','root','filename','chmodSync','0777','child_process','fork','../../components/import/cm/csv','pid','createReadStream','file','meta','import','No\x20phone\x20column\x20specified','binding','stringify','message','start\x20child\x20process\x20correctly!','exit','error\x20child\x20process','mail','sms','fax','whatsapp','voice','-createdAt','resolve','channel','Invalid\x20channel','toLowerCase','parse','range','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','uniqueid','source','callerid','starttime','note','createdAt','userSecondDisposition','userThirdDisposition','fullname','findAndCountAll','startCase','Account','closed','closedAt','disposition','thirdDisposition','UserId','Owner','chat','browserName','customerIp','customerPort','deviceModel','osName','ratingMessage','ratingType','ratingValue','referer','subject','substatus','openchannel','Interaction','sortBy','reverse','slice','moment','bluebird','path','lodash','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./cmContact.socket','register','status','offset'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xcfe7,0xfb));var _0x7cfe=function(_0x4be2c9,_0x574826){_0x4be2c9=_0x4be2c9-0x0;var _0x54b362=_0xcfe7[_0x4be2c9];return _0x54b362;};'use strict';var moment=require(_0x7cfe('0x0'));var BPromise=require(_0x7cfe('0x1'));var util=require('util');var path=require(_0x7cfe('0x2'));var fs=require('fs');var _=require(_0x7cfe('0x3'));var squel=require('squel');var Papa=require(_0x7cfe('0x4'));var Redis=require(_0x7cfe('0x5'));var qs=require(_0x7cfe('0x6'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0x7cfe('0x7'))(_0x7cfe('0x8'));var config=require(_0x7cfe('0x9'));var db=require(_0x7cfe('0xa'))['db'];config[_0x7cfe('0xb')]=_['defaults'](config[_0x7cfe('0xb')],{'host':_0x7cfe('0xc'),'port':0x18eb});var socket=require(_0x7cfe('0xd'))(new Redis(config[_0x7cfe('0xb')]));require(_0x7cfe('0xe'))[_0x7cfe('0xf')](socket);function respondWithResult(_0x5b9101,_0x2ccc90){_0x2ccc90=_0x2ccc90||0xc8;return function(_0x30d8e9){if(_0x30d8e9){return _0x5b9101[_0x7cfe('0x10')](_0x2ccc90)['json'](_0x30d8e9);}};}function respondWithFilteredResult(_0x4ce217,_0x142f67){return function(_0x193fdb){if(_0x193fdb){var _0x2e2caa=typeof _0x142f67[_0x7cfe('0x11')]===_0x7cfe('0x12')&&typeof _0x142f67[_0x7cfe('0x13')]==='undefined';var _0x59ed79=_0x193fdb[_0x7cfe('0x14')];var _0x3e1810=_0x2e2caa?0x0:_0x142f67['offset'];var _0x50bceb=_0x2e2caa?_0x193fdb[_0x7cfe('0x14')]:_0x142f67[_0x7cfe('0x11')]+_0x142f67[_0x7cfe('0x13')];var _0x2c5ea8;if(_0x50bceb>=_0x59ed79){_0x50bceb=_0x59ed79;_0x2c5ea8=0xc8;}else{_0x2c5ea8=0xce;}_0x4ce217['status'](_0x2c5ea8);return _0x4ce217[_0x7cfe('0x15')](_0x7cfe('0x16'),_0x3e1810+'-'+_0x50bceb+'/'+_0x59ed79)[_0x7cfe('0x17')](_0x193fdb);}return null;};}function saveUpdates(_0x15747b){return function(_0xe613f4){if(_0xe613f4){return _0xe613f4[_0x7cfe('0x18')](_0x15747b)[_0x7cfe('0x19')](function(_0x2f8d59){return _0x2f8d59;});}return null;};}function removeEntity(_0x45bbed){return function(_0x3694e1){if(_0x3694e1){return _0x3694e1[_0x7cfe('0x1a')]()[_0x7cfe('0x19')](function(){_0x45bbed[_0x7cfe('0x10')](0xcc)[_0x7cfe('0x1b')]();});}};}function handleEntityNotFound(_0x420b0b){return function(_0x384b80){if(!_0x384b80){_0x420b0b[_0x7cfe('0x1c')](0x194);}return _0x384b80;};}function handleError(_0x56daba,_0x7f863c){_0x7f863c=_0x7f863c||0x1f4;return function(_0x4b8247){logger[_0x7cfe('0x1d')](_0x4b8247['stack']);if(_0x4b8247[_0x7cfe('0x1e')]){delete _0x4b8247[_0x7cfe('0x1e')];}_0x56daba[_0x7cfe('0x10')](_0x7f863c)[_0x7cfe('0x1f')](_0x4b8247);};}exports[_0x7cfe('0x20')]=function(_0x4ac7a8,_0x1a7e00){var _0x415504={},_0x56ca57={},_0x5e7fa6={'count':0x0,'rows':[]};return db[_0x7cfe('0x21')][_0x7cfe('0x22')]()[_0x7cfe('0x19')](function(_0x4109f8){var _0x3a1ee1=[];for(var _0x18e600=0x0;_0x18e600<Object[_0x7cfe('0x23')](_0x4109f8)[_0x7cfe('0x24')];_0x18e600++){var _0x5a50f4=Object[_0x7cfe('0x23')](_0x4109f8)[_0x18e600];if(_['startsWith'](_0x5a50f4,'cf_')){_0x3a1ee1['push'](db[_0x7cfe('0x25')][_0x7cfe('0x26')]({'where':{'id':_['trimStart'](_0x5a50f4,'cf_')},'raw':!![]}));}}return BPromise[_0x7cfe('0x27')](_0x3a1ee1)['then'](function(_0x4c746f){for(var _0xc34e39=0x0;_0xc34e39<_0x4c746f[_0x7cfe('0x24')];_0xc34e39++){if(_0x4c746f[_0xc34e39]){var _0x4dd717=_0x7cfe('0x28')+_0x4c746f[_0xc34e39]['id'];var _0x2dde2b=_0x4109f8[_0x4dd717];_0x2dde2b[_0x7cfe('0x29')]=_0x4c746f[_0xc34e39][_0x7cfe('0x2a')];}}return _0x4109f8;});})['then'](function(_0x22bec9){_0x56ca57[_0x7cfe('0x2b')]=_[_0x7cfe('0x23')](_0x22bec9);_0x56ca57[_0x7cfe('0x2c')]=_['keys'](_0x4ac7a8[_0x7cfe('0x2c')]);_0x56ca57[_0x7cfe('0x2d')]=_[_0x7cfe('0x2e')](_0x56ca57[_0x7cfe('0x2b')],_0x56ca57[_0x7cfe('0x2c')]);_0x415504[_0x7cfe('0x2f')]=_[_0x7cfe('0x2e')](_0x56ca57[_0x7cfe('0x2b')],qs[_0x7cfe('0x30')](_0x4ac7a8['query'][_0x7cfe('0x30')]));_0x415504[_0x7cfe('0x2f')]=_0x415504[_0x7cfe('0x2f')]['length']?_0x415504[_0x7cfe('0x2f')]:_0x56ca57[_0x7cfe('0x2b')];if(!_0x4ac7a8[_0x7cfe('0x2c')][_0x7cfe('0x31')](_0x7cfe('0x32'))){_0x415504[_0x7cfe('0x13')]=qs[_0x7cfe('0x13')](_0x4ac7a8[_0x7cfe('0x2c')][_0x7cfe('0x13')]);_0x415504[_0x7cfe('0x11')]=qs[_0x7cfe('0x11')](_0x4ac7a8['query'][_0x7cfe('0x11')]);}_0x415504['order']=qs[_0x7cfe('0x33')](_0x4ac7a8['query']['sort']);_0x415504[_0x7cfe('0x34')]=qs[_0x7cfe('0x2d')](_['pick'](_0x4ac7a8[_0x7cfe('0x2c')],_0x56ca57[_0x7cfe('0x2d')]),_0x22bec9);var _0x55902a=[];var _0x354f1f=squel[_0x7cfe('0x35')]()[_0x7cfe('0x36')]('id')['field'](_0x7cfe('0x1e'))[_0x7cfe('0x36')]('color')['from'](_0x7cfe('0x37'));var _0x380e2e=squel[_0x7cfe('0x35')]()[_0x7cfe('0x38')](_0x7cfe('0x39'),'c')[_0x7cfe('0x3a')](_0x7cfe('0x3b'),'uc','uc.CmContactId\x20=\x20c.id')[_0x7cfe('0x3a')](_0x7cfe('0x3c'),'ct',_0x7cfe('0x3d'))[_0x7cfe('0x3a')](_0x7cfe('0x37'),'t',_0x7cfe('0x3e'))['where'](_0x7cfe('0x3f'));var _0x3ee1a6=squel[_0x7cfe('0x40')]();var _0x1966fb=[];var _0x367fed=squel[_0x7cfe('0x40')]();var _0x645e0d;if(_0x4ac7a8['query']['search']){_0x645e0d=as[_0x7cfe('0x41')](_0x4ac7a8[_0x7cfe('0x2c')][_0x7cfe('0x42')]);var _0x500e5a=_0x645e0d['sqlOperator'];for(var _0x5bbae6=0x0;_0x5bbae6<_0x645e0d[_0x7cfe('0x43')][_0x7cfe('0x24')];_0x5bbae6++){var _0x38c056=_0x645e0d[_0x7cfe('0x43')][_0x5bbae6];var _0x347449='c';var _0x1cfb10=_(_0x22bec9)[_0x7cfe('0x23')]()[_0x7cfe('0x44')](function(_0x39aafd){return _0x39aafd===_0x38c056['field'];});if(_0x1cfb10)_0x1cfb10=_0x22bec9[_0x38c056[_0x7cfe('0x36')]];if(!_0x1cfb10){if(_0x38c056[_0x7cfe('0x36')]===_0x7cfe('0x45')){var _0x114465=_0x38c056[_0x7cfe('0x46')][_0x7cfe('0x47')](',')[_0x7cfe('0x48')](function(_0x4a0b3d){return Number(_0x4a0b3d);});_0x114465[_0x7cfe('0x49')](function(_0x2e8641){_0x367fed['or'](_0x7cfe('0x4a'),'%,'+_0x2e8641+',%');});_0x1966fb=_['union'](_0x1966fb,_0x114465);}else if(_0x38c056[_0x7cfe('0x36')]===_0x7cfe('0x4b')){_0x3ee1a6[_0x7cfe('0x4c')](_0x7cfe('0x4d'),_0x38c056[_0x7cfe('0x46')]);}}else{if(_0x38c056['field']===_0x7cfe('0x4e')||_0x1cfb10[_0x7cfe('0x29')]==='datetime')_0x38c056[_0x7cfe('0x4f')]='DATE';var _0x3b85e1=as[_0x7cfe('0x50')](_0x347449,_0x1cfb10[_0x7cfe('0x2a')],_0x38c056);_0x3ee1a6[_0x500e5a](_0x3b85e1['text'],_0x3b85e1['value'][_0x7cfe('0x51')],_0x3b85e1[_0x7cfe('0x46')][_0x7cfe('0x1b')]);}}}else{var _0x4a9585=_(Object[_0x7cfe('0x23')](_0x4ac7a8[_0x7cfe('0x2c')]))[_0x7cfe('0x48')](function(_0x34f001){return _0x22bec9[_0x7cfe('0x31')](_0x34f001)?_0x34f001:undefined;})[_0x7cfe('0x52')](function(_0x29363e){return!_[_0x7cfe('0x53')](_0x29363e);})[_0x7cfe('0x46')]();if(_0x4ac7a8[_0x7cfe('0x2c')][_0x7cfe('0x54')])_0x4a9585[_0x7cfe('0x55')](_0x7cfe('0x54'));if(!_[_0x7cfe('0x56')](_0x4a9585)){_0x4a9585['forEach'](function(_0x248281){if(_0x248281===_0x7cfe('0x57')){_0x380e2e[_0x7cfe('0x34')](_0x7cfe('0x58'),[]['concat'](_0x4ac7a8[_0x7cfe('0x2c')][_0x248281]));}else if(_0x248281===_0x7cfe('0x54')){var _0x6e68e1='%'+_0x4ac7a8[_0x7cfe('0x2c')][_0x248281]+'%';_0x380e2e['where']('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x6e68e1);}else{_0x380e2e[_0x7cfe('0x34')]('c.'+_0x248281+_0x7cfe('0x59'),_0x4ac7a8[_0x7cfe('0x2c')][_0x248281]);}});}if(_0x4ac7a8[_0x7cfe('0x2c')][_0x7cfe('0x5a')]){_0x1966fb=_[_0x7cfe('0x5b')](_0x4ac7a8[_0x7cfe('0x2c')][_0x7cfe('0x5a')])?_0x4ac7a8[_0x7cfe('0x2c')][_0x7cfe('0x5a')]:new Array(_0x4ac7a8['query'][_0x7cfe('0x5a')]);_0x1966fb[_0x7cfe('0x49')](function(_0x333671){_0x367fed['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x333671+',%');});}if(_0x4ac7a8[_0x7cfe('0x2c')][_0x7cfe('0x52')]){var _0x1c7e3b=_0x4ac7a8[_0x7cfe('0x2c')]['filter'][_0x7cfe('0x5c')]('\x5c','\x5c\x5c')[_0x7cfe('0x5c')](/'/g,'\x27\x27');if(_0x1c7e3b[_0x7cfe('0x47')]('\x20')[_0x7cfe('0x24')]>0x1){_0x3ee1a6['or'](_0x7cfe('0x5d'),qs['getFullTextValue'](_0x1c7e3b),null);}else{if(qs['isNumeric'](_0x1c7e3b)){_0x3ee1a6['or'](_0x7cfe('0x5e'),_0x1c7e3b+'%');_0x3ee1a6['or'](_0x7cfe('0x5f'),_0x1c7e3b+'%');_0x3ee1a6['or'](_0x7cfe('0x60'),_0x1c7e3b+'%');_0x3ee1a6['or'](_0x7cfe('0x61'),_0x1c7e3b+'%');}else if(qs[_0x7cfe('0x62')](_0x1c7e3b)){_0x3ee1a6['or'](_0x7cfe('0x63'),_0x1c7e3b+'%');}else{_0x3ee1a6['or'](_0x7cfe('0x64'),'%'+_0x1c7e3b+'%');_0x3ee1a6['or'](_0x7cfe('0x65'),'%'+_0x1c7e3b+'%');_0x3ee1a6['or']('c.email\x20LIKE\x20?','%'+_0x1c7e3b+'%');}}}}_0x380e2e[_0x7cfe('0x34')](_0x3ee1a6);_0x380e2e['group'](_0x7cfe('0x66'));var _0x810ce5={'type':db[_0x7cfe('0x67')][_0x7cfe('0x68')][_0x7cfe('0x69')],'raw':!![]};var _0x19e1b2=_0x380e2e[_0x7cfe('0x6a')]()[_0x7cfe('0x36')](_0x7cfe('0x66'));if(_0x415504[_0x7cfe('0x6b')]){_0x415504[_0x7cfe('0x6b')][_0x7cfe('0x49')](function(_0x5ba30e){_0x380e2e[_0x7cfe('0x6b')]('c.'+_0x5ba30e[0x0],_0x5ba30e[0x1]===_0x7cfe('0x6c')?![]:!![]);});}if(!_['isEmpty'](_0x1966fb)){_0x380e2e['having'](_0x367fed);_0x19e1b2[_0x7cfe('0x34')]('t.id\x20IN\x20?',_0x1966fb);}BPromise['resolve']()[_0x7cfe('0x19')](function(){if(!_0x645e0d)return;if(_0x4ac7a8[_0x7cfe('0x6d')][_0x7cfe('0x6e')]!==_0x7cfe('0x6f'))return;if(!_['some'](_0x645e0d['conditions'],[_0x7cfe('0x36'),_0x7cfe('0x4b')])){return _0x4ac7a8[_0x7cfe('0x6d')][_0x7cfe('0x70')]({'attributes':['id'],'raw':!![]})[_0x7cfe('0x19')](function(_0x23e02b){if(_[_0x7cfe('0x56')](_0x23e02b)){_0x19e1b2['where'](_0x7cfe('0x71'));_0x380e2e[_0x7cfe('0x34')]('c.ListId\x20IS\x20NULL');}else{_0x19e1b2[_0x7cfe('0x34')](_0x7cfe('0x58'),_[_0x7cfe('0x48')](_0x23e02b,'id'));_0x380e2e[_0x7cfe('0x34')](_0x7cfe('0x58'),_[_0x7cfe('0x48')](_0x23e02b,'id'));}});}})[_0x7cfe('0x19')](function(){if(_0x4ac7a8['user'][_0x7cfe('0x6e')]===_0x7cfe('0x6f')&&!_0x645e0d&&!_0x4ac7a8['query'][_0x7cfe('0x57')])return[];return db['sequelize'][_0x7cfe('0x2c')](_0x19e1b2[_0x7cfe('0x72')](),_0x810ce5);})[_0x7cfe('0x19')](function(_0x27c745){_0x5e7fa6['count']=_0x27c745['length'];if(_0x5e7fa6[_0x7cfe('0x14')]===0x0)return[];return db[_0x7cfe('0x73')]['query'](_0x354f1f[_0x7cfe('0x72')](),_0x810ce5)[_0x7cfe('0x19')](function(_0x5e83c5){_0x55902a=_[_0x7cfe('0x74')](_0x5e83c5,'id');_0x810ce5=_['merge'](_0x810ce5,{'model':db[_0x7cfe('0x21')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4ac7a8[_0x7cfe('0x2c')]['fields']){_0x415504[_0x7cfe('0x2f')][_0x7cfe('0x49')](function(_0x427273){_0x380e2e['field']('c.'+_0x427273);});}else{_0x380e2e[_0x7cfe('0x36')](_0x7cfe('0x66'));_0x380e2e[_0x7cfe('0x36')]('c.firstName');_0x380e2e[_0x7cfe('0x36')]('c.lastName');_0x380e2e[_0x7cfe('0x36')](_0x7cfe('0x75'));_0x380e2e[_0x7cfe('0x36')](_0x7cfe('0x76'));_0x380e2e['field'](_0x7cfe('0x77'));_0x380e2e[_0x7cfe('0x36')](_0x7cfe('0x78'));_0x380e2e[_0x7cfe('0x36')](_0x7cfe('0x79'));_0x380e2e['field'](_0x7cfe('0x7a'));_0x380e2e[_0x7cfe('0x36')](_0x7cfe('0x7b'));_0x380e2e['field']('c.CompanyId');_0x380e2e[_0x7cfe('0x36')](_0x7cfe('0x7c'),_0x7cfe('0x7d'));}if(_0x415504[_0x7cfe('0x13')])_0x380e2e['limit'](_0x415504[_0x7cfe('0x13')]);if(_0x415504[_0x7cfe('0x11')])_0x380e2e['offset'](_0x415504[_0x7cfe('0x11')]);return db[_0x7cfe('0x73')][_0x7cfe('0x2c')](_0x380e2e[_0x7cfe('0x72')](),_0x810ce5);});})[_0x7cfe('0x19')](function(_0x463abf){_0x463abf['forEach'](function(_0x7ac8f3){if(_0x7ac8f3['TagIds']){_0x7ac8f3['Tags']=[];_0x7ac8f3[_0x7cfe('0x7d')][_0x7cfe('0x47')](',')[_0x7cfe('0x49')](function(_0x8ff21c){_0x7ac8f3[_0x7cfe('0x7e')]['push'](_0x55902a[_0x8ff21c]);});}delete _0x7ac8f3[_0x7cfe('0x7d')];});_0x5e7fa6[_0x7cfe('0x7f')]=_0x463abf;return _0x5e7fa6;})[_0x7cfe('0x19')](respondWithFilteredResult(_0x1a7e00,_0x415504));})[_0x7cfe('0x80')](handleError(_0x1a7e00,null));};exports['destroy']=function(_0x5ef297,_0x448e18){return db[_0x7cfe('0x21')][_0x7cfe('0x44')]({'where':{'id':_0x5ef297[_0x7cfe('0x81')]['id']}})['then'](handleEntityNotFound(_0x448e18,null))['then'](removeEntity(_0x448e18,null))[_0x7cfe('0x80')](handleError(_0x448e18,null));};exports[_0x7cfe('0x22')]=function(_0xc05f3,_0x1e2ab2){return db[_0x7cfe('0x21')]['describe']()[_0x7cfe('0x19')](function(_0x121b94){delete _0x121b94[_0x7cfe('0x82')];for(var _0x5c1f26=0x0;_0x5c1f26<Object[_0x7cfe('0x23')](_0x121b94)[_0x7cfe('0x24')];_0x5c1f26++){var _0x3406ad=Object['keys'](_0x121b94)[_0x5c1f26];if(!_[_0x7cfe('0x83')](_0x3406ad,_0x7cfe('0x28'))){_0x121b94[_0x3406ad][_0x7cfe('0x84')]=_0x3406ad;_0x121b94[_0x3406ad]['displayName']=_0x3406ad;}}return _0x121b94;})[_0x7cfe('0x19')](function(_0x25db6e){var _0x296352={'where':Boolean(_0xc05f3[_0x7cfe('0x2c')][_0x7cfe('0x85')])===!![]?undefined:{'$or':[{'ListId':_0xc05f3[_0x7cfe('0x2c')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x7cfe('0x25')][_0x7cfe('0x86')](_0x296352)[_0x7cfe('0x19')](function(_0xbb3365){for(var _0x50957b=0x0;_0x50957b<_0xbb3365[_0x7cfe('0x24')];_0x50957b++){var _0x2456dc='cf_'+_0xbb3365[_0x50957b]['id'];_0x25db6e[_0x2456dc][_0x7cfe('0x84')]=_0x2456dc;_0x25db6e[_0x2456dc]['displayName']=_0xbb3365[_0x50957b][_0x7cfe('0x87')];_0x25db6e[_0x2456dc][_0x7cfe('0x88')]={'type':_0xbb3365[_0x50957b]['type'],'values':_0xbb3365[_0x50957b][_0x7cfe('0x89')]};}Object['keys'](_0x25db6e)[_0x7cfe('0x49')](function(_0x53deda){if(!_0x25db6e[_0x53deda][_0x7cfe('0x31')]('columnName')){delete _0x25db6e[_0x53deda];}});return _0x25db6e;});})[_0x7cfe('0x19')](respondWithResult(_0x1e2ab2,null))[_0x7cfe('0x80')](handleError(_0x1e2ab2,null));};exports[_0x7cfe('0x8a')]=function(_0x310a23,_0x459e46){var _0x801ff9;var _0x357f16;var _0x2f8cb6;if(_0x310a23[_0x7cfe('0x8b')]['id']){delete _0x310a23[_0x7cfe('0x8b')]['id'];}return db['CmContact'][_0x7cfe('0x86')]({'where':{'id':[_0x310a23[_0x7cfe('0x8b')]['to'],_0x310a23['body']['from']]}})['then'](function(_0x2cbe26){if(_0x2cbe26){if(_0x2cbe26['length']!==0x2){return null;}_0x2cbe26[0x0]=_0x2cbe26[0x0][_0x7cfe('0x8c')]({'plain':!![]});_0x2cbe26[0x1]=_0x2cbe26[0x1][_0x7cfe('0x8c')]({'plain':!![]});delete _0x2cbe26[0x0]['id'];delete _0x2cbe26[0x1]['id'];return _[_0x7cfe('0x8d')](_0x2cbe26[0x0],_0x2cbe26[0x1],function(_0x26d5ab,_0x53e035){if(Array['isArray'](_0x53e035)&&!_0x53e035['length']){return _0x26d5ab;}else if(!_0x53e035){return _0x26d5ab;}});}})['then'](handleEntityNotFound(_0x459e46,null))[_0x7cfe('0x19')](function(_0x544ee4){if(_0x544ee4){if(_0x544ee4[_0x7cfe('0x82')]&&_['isArray'](_0x544ee4[_0x7cfe('0x82')])){_0x544ee4[_0x7cfe('0x82')]=_0x544ee4['tags'][_0x7cfe('0x8e')]();}logger[_0x7cfe('0x8f')](_0x7cfe('0x90'),_0x310a23[_0x7cfe('0x8b')]['to'],_0x310a23[_0x7cfe('0x8b')][_0x7cfe('0x38')]);return db['CmHopper'][_0x7cfe('0x1a')]({'where':{'ContactId':[_0x310a23[_0x7cfe('0x8b')]['to'],_0x310a23['body'][_0x7cfe('0x38')]]}})[_0x7cfe('0x19')](function(_0x26acb0){logger[_0x7cfe('0x8f')](_0x7cfe('0x91'),_0x26acb0);return db['CmHopperBlack'][_0x7cfe('0x1a')]({'where':{'ContactId':[_0x310a23['body']['to'],_0x310a23[_0x7cfe('0x8b')][_0x7cfe('0x38')]]}})[_0x7cfe('0x19')](function(_0x4484cc){logger[_0x7cfe('0x8f')](_0x7cfe('0x92'),_0x4484cc);return db['CmContact'][_0x7cfe('0x93')](_0x544ee4);});});}})[_0x7cfe('0x19')](function(_0x2be559){if(_0x2be559){_0x801ff9=_0x2be559;_0x357f16={'ContactId':_0x801ff9['id']};_0x2f8cb6={'where':{'ContactId':[_0x310a23['body']['to'],_0x310a23[_0x7cfe('0x8b')][_0x7cfe('0x38')]]}};return db[_0x7cfe('0x94')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x95')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x96')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x97')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x98')]['update'](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x97')]['update'](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db['MailMessage'][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db['SmsInteraction'][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x99')]['update'](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x9a')]['update'](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x9b')]['update'](_0x357f16,_0x2f8cb6);}})['then'](function(){if(_0x801ff9){return db['OpenchannelInteraction'][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x9c')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db['CmHopperFinal'][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x9d')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x9e')]['update'](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db['VoiceCallReport'][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})['then'](function(){if(_0x801ff9){return db['ChatQueueReport'][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x9f')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0xa0')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0xa1')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0xa2')]['update'](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0xa3')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})['then'](function(){if(_0x801ff9){return db[_0x7cfe('0xa4')]['update'](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0xa5')]['update'](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db['WhatsappQueueReport'][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x21')]['destroy']({'where':{'id':[_0x310a23[_0x7cfe('0x8b')]['to'],_0x310a23['body'][_0x7cfe('0x38')]]}});}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return _0x801ff9;}})[_0x7cfe('0x19')](respondWithResult(_0x459e46,null))['catch'](handleError(_0x459e46,null));};exports[_0x7cfe('0x93')]=function(_0x1825d1,_0xe84d26){return db[_0x7cfe('0x21')][_0x7cfe('0x22')]()[_0x7cfe('0x19')](function(_0x435806){if(_0x1825d1[_0x7cfe('0x8b')][_0x7cfe('0x82')]&&_[_0x7cfe('0x5b')](_0x1825d1[_0x7cfe('0x8b')][_0x7cfe('0x82')])){if(_0x1825d1[_0x7cfe('0x8b')][_0x7cfe('0x82')][_0x7cfe('0x24')]){_0x1825d1['body']['tags']=_0x1825d1['body'][_0x7cfe('0x82')][_0x7cfe('0x8e')](';')+';';}else{_0x1825d1[_0x7cfe('0x8b')][_0x7cfe('0x82')]=null;}}else{_0x1825d1[_0x7cfe('0x8b')][_0x7cfe('0x82')]=null;}return db[_0x7cfe('0x21')][_0x7cfe('0x93')](_0x1825d1['body'],{'fields':_[_0x7cfe('0x23')](_0x435806),'raw':!![]});})[_0x7cfe('0x19')](respondWithResult(_0xe84d26,0xc9))['catch'](handleError(_0xe84d26,null));};exports['bulkCreate']=function(_0x1544d8,_0x5ce451){var _0x8e015c=0x0;var _0x4ecd2f=0x0;var _0x5350d1=0x0;return db[_0x7cfe('0x21')]['describe']()[_0x7cfe('0x19')](function(_0x4a3bc7){return BPromise['each'](_0x1544d8[_0x7cfe('0x8b')],function(_0x32178f){var _0x4961e3={'where':{'$or':[]},'defaults':_0x32178f,'fields':_['keys'](_0x4a3bc7),'raw':!![]};if(_0x32178f['duplicates']){for(var _0x175b51=0x0;_0x175b51<_0x32178f[_0x7cfe('0xa6')][_0x7cfe('0x24')];_0x175b51++){var _0x42bed8={};_0x42bed8[_0x32178f['duplicates'][_0x175b51]]=_0x32178f[_0x32178f[_0x7cfe('0xa6')][_0x175b51]];_0x4961e3[_0x7cfe('0x34')]['$or'][_0x7cfe('0x55')](_0x42bed8);}_0x4961e3[_0x7cfe('0x34')][_0x7cfe('0x57')]=_0x32178f[_0x7cfe('0x57')];}return db[_0x7cfe('0x21')][_0x7cfe('0xa7')](_0x4961e3)[_0x7cfe('0xa8')](function(_0x2f71e4,_0x5514ea){if(_0x5514ea){_0x8e015c++;}else{_0x5350d1++;}})[_0x7cfe('0x80')](function(){_0x4ecd2f++;});});})[_0x7cfe('0x19')](function(_0xcc3e06){if(_0xcc3e06){return{'success':_0x8e015c,'failure':_0x4ecd2f,'duplicates':_0x5350d1};}})[_0x7cfe('0x19')](respondWithResult(_0x5ce451,0xc9))[_0x7cfe('0x80')](handleError(_0x5ce451,null));};exports['show']=function(_0x521683,_0xe9b8c6){var _0x3a423f;return db[_0x7cfe('0x21')][_0x7cfe('0x22')]()[_0x7cfe('0x19')](function(_0x3bb509){return db['CmContact'][_0x7cfe('0x44')]({'where':{'id':_0x521683['params']['id']},'include':[{'model':db[_0x7cfe('0x45')],'as':_0x7cfe('0x7e'),'attributes':['id',_0x7cfe('0x1e'),'color'],'required':_0x521683['query'][_0x7cfe('0x5a')]?!![]:![]}],'attributes':_['keys'](_0x3bb509)});})[_0x7cfe('0x19')](function(_0x17adc0){if(!_[_0x7cfe('0x53')](_0x17adc0)){_0x3a423f=_0x17adc0[_0x7cfe('0x8c')]({'plain':!![]});var _0x9c1d63={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x17adc0&&_0x17adc0[_0x7cfe('0x57')]){if(_0x17adc0['ListId']){_0x9c1d63['where'][_0x7cfe('0xa9')][_0x7cfe('0x55')]({'ListId':{'$ne':_0x17adc0[_0x7cfe('0x57')]}});}}return db[_0x7cfe('0x25')]['findAll'](_0x9c1d63);}})[_0x7cfe('0x19')](function(_0x4f54dc){if(!_[_0x7cfe('0x53')](_0x4f54dc)){return _[_0x7cfe('0xaa')](_0x3a423f,_[_0x7cfe('0x48')](_0x4f54dc,function(_0x1c1220){return util[_0x7cfe('0xab')]('cf_%d',_0x1c1220['id']);}));}})[_0x7cfe('0x19')](handleEntityNotFound(_0xe9b8c6,null))[_0x7cfe('0x19')](respondWithResult(_0xe9b8c6,null))[_0x7cfe('0x80')](handleError(_0xe9b8c6,null));};exports[_0x7cfe('0x18')]=function(_0x4764ac,_0x595956){var _0x16fb8b;if(_0x4764ac[_0x7cfe('0x8b')]['id']){delete _0x4764ac['body']['id'];}return db[_0x7cfe('0x21')][_0x7cfe('0x44')]({'where':{'id':_0x4764ac[_0x7cfe('0x81')]['id']}})['then'](handleEntityNotFound(_0x595956,null))[_0x7cfe('0x19')](saveUpdates(_0x4764ac[_0x7cfe('0x8b')],null))[_0x7cfe('0x19')](function(_0x5e213d){_0x16fb8b=_0x5e213d;var _0x2b3ebf={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x5e213d&&_0x5e213d[_0x7cfe('0x57')]){if(_0x5e213d[_0x7cfe('0x57')]){_0x2b3ebf[_0x7cfe('0x34')]['$and'][_0x7cfe('0x55')]({'ListId':{'$ne':_0x5e213d[_0x7cfe('0x57')]}});}}return db[_0x7cfe('0x25')][_0x7cfe('0x86')](_0x2b3ebf);})[_0x7cfe('0x19')](function(_0x2d68bb){if(_0x2d68bb){return _[_0x7cfe('0xaa')](_[_0x7cfe('0xac')](_0x4764ac[_0x7cfe('0x8b')],function(_0x42a15c,_0x49de2c){return _[_0x7cfe('0x83')](_0x49de2c,_0x7cfe('0x28'));}),_[_0x7cfe('0x48')](_0x2d68bb,function(_0x27315b){return util[_0x7cfe('0xab')](_0x7cfe('0xad'),_0x27315b['id']);}));}})[_0x7cfe('0x19')](function(_0x384f06){if(_0x384f06&&!_[_0x7cfe('0x56')](_0x384f06)){var _0xc774cb=squel[_0x7cfe('0x18')]()[_0x7cfe('0xae')](_0x7cfe('0x39'))[_0x7cfe('0xaf')](_0x384f06)[_0x7cfe('0x34')](_0x7cfe('0xb0'),_0x4764ac[_0x7cfe('0x81')]['id'])[_0x7cfe('0xb1')]();return db[_0x7cfe('0x73')]['query'](_0xc774cb[_0x7cfe('0xb2')],{'replacements':_0xc774cb[_0x7cfe('0x89')]});}})[_0x7cfe('0x19')](function(){if(_0x4764ac[_0x7cfe('0x8b')][_0x7cfe('0xb3')]&&_0x16fb8b){return db[_0x7cfe('0xb4')][_0x7cfe('0x18')]({'phone':_0x4764ac[_0x7cfe('0x8b')][_0x7cfe('0xb3')]},{'where':{'ContactId':_0x16fb8b['id']}});}})[_0x7cfe('0x19')](function(){return _0x16fb8b;})[_0x7cfe('0x19')](respondWithResult(_0x595956,null))['catch'](handleError(_0x595956,null));};exports['getTags']=function(_0x1810e4,_0x492350){var _0x2f7fff={};var _0x361918={};var _0x39edce;var _0x286ff8;return db[_0x7cfe('0x21')][_0x7cfe('0x26')]({'where':{'id':_0x1810e4[_0x7cfe('0x81')]['id']}})[_0x7cfe('0x19')](handleEntityNotFound(_0x492350,null))[_0x7cfe('0x19')](function(_0x34ffbc){if(_0x34ffbc){_0x39edce=_0x34ffbc;_0x361918[_0x7cfe('0x2b')]=_['keys'](db[_0x7cfe('0x45')][_0x7cfe('0xb5')]);_0x361918[_0x7cfe('0x2c')]=_[_0x7cfe('0x23')](_0x1810e4['query']);_0x361918[_0x7cfe('0x2d')]=_['intersection'](_0x361918[_0x7cfe('0x2b')],_0x361918[_0x7cfe('0x2c')]);_0x2f7fff[_0x7cfe('0x2f')]=_[_0x7cfe('0x2e')](_0x361918[_0x7cfe('0x2b')],qs['fields'](_0x1810e4[_0x7cfe('0x2c')]['fields']));_0x2f7fff[_0x7cfe('0x2f')]=_0x2f7fff[_0x7cfe('0x2f')][_0x7cfe('0x24')]?_0x2f7fff['attributes']:_0x361918[_0x7cfe('0x2b')];_0x2f7fff[_0x7cfe('0x6b')]=qs[_0x7cfe('0x33')](_0x1810e4['query'][_0x7cfe('0x33')]);_0x2f7fff[_0x7cfe('0x34')]=qs[_0x7cfe('0x2d')](_[_0x7cfe('0xb6')](_0x1810e4['query'],_0x361918[_0x7cfe('0x2d')]));if(_0x1810e4['query']['filter']){_0x2f7fff[_0x7cfe('0x34')]=_[_0x7cfe('0x8a')](_0x2f7fff[_0x7cfe('0x34')],{'$or':_['map'](_0x2f7fff['attributes'],function(_0x2f9f48){var _0x730d8a={};_0x730d8a[_0x2f9f48]={'$like':'%'+_0x1810e4[_0x7cfe('0x2c')][_0x7cfe('0x52')]+'%'};return _0x730d8a;})});}_0x2f7fff=_[_0x7cfe('0x8a')]({},_0x2f7fff,_0x1810e4['options']);return _0x39edce[_0x7cfe('0xb7')](_0x2f7fff);}})['then'](function(_0x11e667){if(_0x11e667){_0x286ff8=_0x11e667['length'];if(!_0x1810e4[_0x7cfe('0x2c')][_0x7cfe('0x31')](_0x7cfe('0x32'))){_0x2f7fff[_0x7cfe('0x13')]=qs[_0x7cfe('0x13')](_0x1810e4[_0x7cfe('0x2c')][_0x7cfe('0x13')]);_0x2f7fff[_0x7cfe('0x11')]=qs['offset'](_0x1810e4['query'][_0x7cfe('0x11')]);}return _0x39edce['getTags'](_0x2f7fff);}})[_0x7cfe('0x19')](function(_0x38167e){if(_0x38167e){return _0x38167e?{'count':_0x286ff8,'rows':_0x38167e}:null;}})['then'](respondWithResult(_0x492350,null))[_0x7cfe('0x80')](handleError(_0x492350,null));};exports['setTags']=function(_0x4363d1,_0x2fb99d){if(_0x4363d1[_0x7cfe('0x8b')]['id']){delete _0x4363d1[_0x7cfe('0x8b')]['id'];}return db[_0x7cfe('0x21')][_0x7cfe('0x26')]({'where':{'id':_0x4363d1[_0x7cfe('0x81')]['id']}})[_0x7cfe('0x19')](handleEntityNotFound(_0x2fb99d,null))['then'](function(_0x2a6d1b){if(_0x2a6d1b){return _0x2a6d1b[_0x7cfe('0xb8')](_0x4363d1[_0x7cfe('0x8b')]['ids']||[]);}return null;})[_0x7cfe('0x19')](respondWithResult(_0x2fb99d,null))[_0x7cfe('0x80')](handleError(_0x2fb99d,null));};exports[_0x7cfe('0xb9')]=function(_0x3c5c43,_0x2cf25d){var _0x4ed1c3={'raw':![],'where':{}};var _0x236d92={};var _0x46ee52={'count':0x0,'rows':[]};return db[_0x7cfe('0x21')][_0x7cfe('0x26')]({'where':{'id':_0x3c5c43[_0x7cfe('0x81')]['id']}})[_0x7cfe('0x19')](handleEntityNotFound(_0x2cf25d,null))[_0x7cfe('0x19')](function(_0x477b14){if(_0x477b14){_0x236d92['model']=_[_0x7cfe('0x23')](db[_0x7cfe('0xb4')][_0x7cfe('0xb5')]);_0x236d92[_0x7cfe('0x2c')]=_['keys'](_0x3c5c43['query']);_0x236d92[_0x7cfe('0x2d')]=_['intersection'](_0x236d92[_0x7cfe('0x2b')],_0x236d92[_0x7cfe('0x2c')]);_0x4ed1c3['attributes']=_[_0x7cfe('0x2e')](_0x236d92[_0x7cfe('0x2b')],qs[_0x7cfe('0x30')](_0x3c5c43['query'][_0x7cfe('0x30')]));_0x4ed1c3[_0x7cfe('0x2f')]=_0x4ed1c3[_0x7cfe('0x2f')][_0x7cfe('0x24')]?_0x4ed1c3['attributes']:_0x236d92[_0x7cfe('0x2b')];if(!_0x3c5c43[_0x7cfe('0x2c')][_0x7cfe('0x31')](_0x7cfe('0x32'))){_0x4ed1c3[_0x7cfe('0x13')]=qs[_0x7cfe('0x13')](_0x3c5c43[_0x7cfe('0x2c')][_0x7cfe('0x13')]);_0x4ed1c3[_0x7cfe('0x11')]=qs[_0x7cfe('0x11')](_0x3c5c43[_0x7cfe('0x2c')][_0x7cfe('0x11')]);}_0x4ed1c3[_0x7cfe('0x6b')]=qs['sort'](_0x3c5c43[_0x7cfe('0x2c')][_0x7cfe('0x33')]);_0x4ed1c3[_0x7cfe('0x34')]=qs[_0x7cfe('0x2d')](_[_0x7cfe('0xb6')](_0x3c5c43[_0x7cfe('0x2c')],_0x236d92[_0x7cfe('0x2d')]));_0x4ed1c3[_0x7cfe('0x34')][_0x7cfe('0xba')]=_0x477b14['id'];if(_0x3c5c43[_0x7cfe('0x2c')]['filter']){_0x4ed1c3[_0x7cfe('0x34')]=_[_0x7cfe('0x8a')](_0x4ed1c3[_0x7cfe('0x34')],{'$or':_[_0x7cfe('0x48')](_0x4ed1c3[_0x7cfe('0x2f')],function(_0xb8e643){var _0x54f748={};_0x54f748[_0xb8e643]={'$like':'%'+_0x3c5c43[_0x7cfe('0x2c')][_0x7cfe('0x52')]+'%'};return _0x54f748;})});}_0x4ed1c3=_[_0x7cfe('0x8a')]({},_0x4ed1c3,_0x3c5c43['options']);return db['CmHopper'][_0x7cfe('0x14')]({'where':_0x4ed1c3[_0x7cfe('0x34')]})[_0x7cfe('0x19')](function(_0x47686c){_0x46ee52['count']=_0x47686c;if(_0x3c5c43[_0x7cfe('0x2c')]['includeAll']){_0x4ed1c3[_0x7cfe('0xbb')]=[{'all':!![]}];}return db[_0x7cfe('0xb4')][_0x7cfe('0x86')](_0x4ed1c3);})[_0x7cfe('0x19')](function(_0x48929d){_0x46ee52[_0x7cfe('0x7f')]=_0x48929d;return _0x46ee52;});}})[_0x7cfe('0x19')](respondWithFilteredResult(_0x2cf25d,_0x4ed1c3))['catch'](handleError(_0x2cf25d,null));};exports['getHopperHistories']=function(_0x198f46,_0x1925f3){var _0x62148f={'raw':!![],'where':{}};var _0x2e1586={};var _0x4f7fcd={'count':0x0,'rows':[]};return db[_0x7cfe('0x21')][_0x7cfe('0x26')]({'where':{'id':_0x198f46[_0x7cfe('0x81')]['id']}})[_0x7cfe('0x19')](handleEntityNotFound(_0x1925f3,null))['then'](function(_0x44d05f){if(_0x44d05f){_0x2e1586[_0x7cfe('0x2b')]=_[_0x7cfe('0x23')](db[_0x7cfe('0x9d')][_0x7cfe('0xb5')]);_0x2e1586[_0x7cfe('0x2c')]=_[_0x7cfe('0x23')](_0x198f46[_0x7cfe('0x2c')]);_0x2e1586[_0x7cfe('0x2d')]=_[_0x7cfe('0x2e')](_0x2e1586['model'],_0x2e1586['query']);_0x62148f[_0x7cfe('0x2f')]=_[_0x7cfe('0x2e')](_0x2e1586[_0x7cfe('0x2b')],qs[_0x7cfe('0x30')](_0x198f46[_0x7cfe('0x2c')]['fields']));_0x62148f[_0x7cfe('0x2f')]=_0x62148f[_0x7cfe('0x2f')]['length']?_0x62148f[_0x7cfe('0x2f')]:_0x2e1586[_0x7cfe('0x2b')];if(!_0x198f46['query']['hasOwnProperty'](_0x7cfe('0x32'))){_0x62148f['limit']=qs[_0x7cfe('0x13')](_0x198f46[_0x7cfe('0x2c')][_0x7cfe('0x13')]);_0x62148f[_0x7cfe('0x11')]=qs[_0x7cfe('0x11')](_0x198f46[_0x7cfe('0x2c')][_0x7cfe('0x11')]);}_0x62148f[_0x7cfe('0x6b')]=qs[_0x7cfe('0x33')](_0x198f46['query'][_0x7cfe('0x33')]);_0x62148f[_0x7cfe('0x34')]=qs[_0x7cfe('0x2d')](_[_0x7cfe('0xb6')](_0x198f46[_0x7cfe('0x2c')],_0x2e1586[_0x7cfe('0x2d')]));_0x62148f['where']['ContactId']=_0x44d05f['id'];if(_0x198f46[_0x7cfe('0x2c')][_0x7cfe('0x52')]){_0x62148f[_0x7cfe('0x34')]=_[_0x7cfe('0x8a')](_0x62148f[_0x7cfe('0x34')],{'$or':_[_0x7cfe('0x48')](_0x62148f[_0x7cfe('0x2f')],function(_0x501a87){var _0x32a7a3={};_0x32a7a3[_0x501a87]={'$like':'%'+_0x198f46[_0x7cfe('0x2c')][_0x7cfe('0x52')]+'%'};return _0x32a7a3;})});}_0x62148f=_['merge']({},_0x62148f,_0x198f46[_0x7cfe('0xbc')]);return db['CmHopperHistory']['count']({'where':_0x62148f[_0x7cfe('0x34')]})['then'](function(_0x1d6e75){_0x4f7fcd[_0x7cfe('0x14')]=_0x1d6e75;if(_0x198f46[_0x7cfe('0x2c')]['includeAll']){_0x62148f[_0x7cfe('0xbb')]=[{'all':!![]}];}return db[_0x7cfe('0x9d')][_0x7cfe('0x86')](_0x62148f);})[_0x7cfe('0x19')](function(_0x3940c7){_0x4f7fcd['rows']=_0x3940c7;return _0x4f7fcd;});}})[_0x7cfe('0x19')](respondWithFilteredResult(_0x1925f3,_0x62148f))['catch'](handleError(_0x1925f3,null));};exports['getHopperFinals']=function(_0x428b8b,_0x53fb7c){var _0x267d76={'raw':!![],'where':{}};var _0x112431={};var _0x3dd28e={'count':0x0,'rows':[]};return db[_0x7cfe('0x21')][_0x7cfe('0x26')]({'where':{'id':_0x428b8b[_0x7cfe('0x81')]['id']}})[_0x7cfe('0x19')](handleEntityNotFound(_0x53fb7c,null))[_0x7cfe('0x19')](function(_0x330ad6){if(_0x330ad6){_0x112431['model']=_[_0x7cfe('0x23')](db[_0x7cfe('0xbd')]['rawAttributes']);_0x112431['query']=_['keys'](_0x428b8b[_0x7cfe('0x2c')]);_0x112431[_0x7cfe('0x2d')]=_[_0x7cfe('0x2e')](_0x112431[_0x7cfe('0x2b')],_0x112431[_0x7cfe('0x2c')]);_0x267d76['attributes']=_[_0x7cfe('0x2e')](_0x112431[_0x7cfe('0x2b')],qs[_0x7cfe('0x30')](_0x428b8b['query'][_0x7cfe('0x30')]));_0x267d76[_0x7cfe('0x2f')]=_0x267d76[_0x7cfe('0x2f')][_0x7cfe('0x24')]?_0x267d76[_0x7cfe('0x2f')]:_0x112431[_0x7cfe('0x2b')];if(!_0x428b8b[_0x7cfe('0x2c')]['hasOwnProperty']('nolimit')){_0x267d76[_0x7cfe('0x13')]=qs[_0x7cfe('0x13')](_0x428b8b[_0x7cfe('0x2c')][_0x7cfe('0x13')]);_0x267d76[_0x7cfe('0x11')]=qs[_0x7cfe('0x11')](_0x428b8b[_0x7cfe('0x2c')][_0x7cfe('0x11')]);}_0x267d76[_0x7cfe('0x6b')]=qs[_0x7cfe('0x33')](_0x428b8b[_0x7cfe('0x2c')][_0x7cfe('0x33')]);_0x267d76[_0x7cfe('0x34')]=qs[_0x7cfe('0x2d')](_[_0x7cfe('0xb6')](_0x428b8b[_0x7cfe('0x2c')],_0x112431[_0x7cfe('0x2d')]));_0x267d76['where']['ContactId']=_0x330ad6['id'];if(_0x428b8b['query'][_0x7cfe('0x52')]){_0x267d76[_0x7cfe('0x34')]=_[_0x7cfe('0x8a')](_0x267d76[_0x7cfe('0x34')],{'$or':_['map'](_0x267d76[_0x7cfe('0x2f')],function(_0x55e0f1){var _0xceecbe={};_0xceecbe[_0x55e0f1]={'$like':'%'+_0x428b8b[_0x7cfe('0x2c')]['filter']+'%'};return _0xceecbe;})});}_0x267d76=_['merge']({},_0x267d76,_0x428b8b[_0x7cfe('0xbc')]);return db[_0x7cfe('0xbd')][_0x7cfe('0x14')]({'where':_0x267d76[_0x7cfe('0x34')]})['then'](function(_0x3d2339){_0x3dd28e[_0x7cfe('0x14')]=_0x3d2339;if(_0x428b8b[_0x7cfe('0x2c')]['includeAll']){_0x267d76[_0x7cfe('0xbb')]=[{'all':!![]}];}return db[_0x7cfe('0xbd')][_0x7cfe('0x86')](_0x267d76);})[_0x7cfe('0x19')](function(_0x34a230){_0x3dd28e[_0x7cfe('0x7f')]=_0x34a230;return _0x3dd28e;});}})[_0x7cfe('0x19')](respondWithFilteredResult(_0x53fb7c,_0x267d76))['catch'](handleError(_0x53fb7c,null));};exports['getJscriptySessions']=function(_0x4ca084,_0x27a4b9){var _0x1f3d6f={'raw':!![],'where':{}};var _0x198bf5={};var _0x118a2e={'count':0x0,'rows':[]};return db['CmContact'][_0x7cfe('0x26')]({'where':{'id':_0x4ca084[_0x7cfe('0x81')]['id']}})['then'](handleEntityNotFound(_0x27a4b9,null))['then'](function(_0x42f1b0){if(_0x42f1b0){_0x198bf5[_0x7cfe('0x2b')]=_[_0x7cfe('0x23')](db[_0x7cfe('0xa3')]['rawAttributes']);_0x198bf5['query']=_['keys'](_0x4ca084['query']);_0x198bf5['filters']=_['intersection'](_0x198bf5[_0x7cfe('0x2b')],_0x198bf5[_0x7cfe('0x2c')]);_0x1f3d6f[_0x7cfe('0x2f')]=_['intersection'](_0x198bf5[_0x7cfe('0x2b')],qs[_0x7cfe('0x30')](_0x4ca084[_0x7cfe('0x2c')][_0x7cfe('0x30')]));_0x1f3d6f['attributes']=_0x1f3d6f[_0x7cfe('0x2f')]['length']?_0x1f3d6f[_0x7cfe('0x2f')]:_0x198bf5[_0x7cfe('0x2b')];if(!_0x4ca084[_0x7cfe('0x2c')][_0x7cfe('0x31')]('nolimit')){_0x1f3d6f[_0x7cfe('0x13')]=qs['limit'](_0x4ca084['query'][_0x7cfe('0x13')]);_0x1f3d6f[_0x7cfe('0x11')]=qs['offset'](_0x4ca084[_0x7cfe('0x2c')]['offset']);}_0x1f3d6f[_0x7cfe('0x6b')]=qs[_0x7cfe('0x33')](_0x4ca084['query'][_0x7cfe('0x33')]);_0x1f3d6f[_0x7cfe('0x34')]=qs[_0x7cfe('0x2d')](_[_0x7cfe('0xb6')](_0x4ca084['query'],_0x198bf5[_0x7cfe('0x2d')]));_0x1f3d6f[_0x7cfe('0x34')]['ContactId']=_0x42f1b0['id'];if(_0x4ca084['query'][_0x7cfe('0x52')]){_0x1f3d6f[_0x7cfe('0x34')]=_[_0x7cfe('0x8a')](_0x1f3d6f[_0x7cfe('0x34')],{'$or':_[_0x7cfe('0x48')](_0x1f3d6f[_0x7cfe('0x2f')],function(_0x8e968d){var _0x463c82={};_0x463c82[_0x8e968d]={'$like':'%'+_0x4ca084[_0x7cfe('0x2c')][_0x7cfe('0x52')]+'%'};return _0x463c82;})});}_0x1f3d6f=_[_0x7cfe('0x8a')]({},_0x1f3d6f,_0x4ca084[_0x7cfe('0xbc')]);return db[_0x7cfe('0xa3')][_0x7cfe('0x14')]({'where':_0x1f3d6f[_0x7cfe('0x34')]})[_0x7cfe('0x19')](function(_0x4cc4b6){_0x118a2e['count']=_0x4cc4b6;if(_0x4ca084['query'][_0x7cfe('0xbe')]){_0x1f3d6f[_0x7cfe('0xbb')]=[{'all':!![]}];}return db[_0x7cfe('0xa3')][_0x7cfe('0x86')](_0x1f3d6f);})[_0x7cfe('0x19')](function(_0xf4bf21){_0x118a2e[_0x7cfe('0x7f')]=_0xf4bf21;return _0x118a2e;});}})[_0x7cfe('0x19')](respondWithFilteredResult(_0x27a4b9,_0x1f3d6f))[_0x7cfe('0x80')](handleError(_0x27a4b9,null));};exports['uploadCsv']=function(_0x406ede,_0xa0c291){try{if(!_0x406ede[_0x7cfe('0x8b')]['ListId']){throw new Error(_0x7cfe('0xbf'));}if(!_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0xc0')]){throw new Error('No\x20association\x20keys\x20specified!');}if(!_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0xc1')]){throw new Error(_0x7cfe('0xc2'));}if(!_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0xc3')]){throw new Error(_0x7cfe('0xc4'));}var _0x1e2357=_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0xc0')]['split'](',');var _0x3157eb=_0x406ede['body'][_0x7cfe('0xc1')][_0x7cfe('0x47')](',');if(!_0x1e2357[_0x7cfe('0x24')]||!_0x3157eb[_0x7cfe('0x24')]||_0x1e2357[_0x7cfe('0x24')]!==_0x3157eb[_0x7cfe('0x24')]){throw new Error(_0x7cfe('0xc5'));}_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0x30')]=_[_0x7cfe('0xc6')](_0x1e2357,_0x3157eb);if(!_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0x30')]['phone']){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0x30')][_0x7cfe('0xc7')]){throw new Error(_0x7cfe('0xc8'));}var _0x4e22cd=path[_0x7cfe('0x8e')](config[_0x7cfe('0xc9')],'server/files/tmp',_0x406ede['file'][_0x7cfe('0xca')]);fs[_0x7cfe('0xcb')](_0x4e22cd,parseInt(_0x7cfe('0xcc'),0x8));var _0x40d9ec=require(_0x7cfe('0xcd'))[_0x7cfe('0xce')](path['join'](__dirname,_0x7cfe('0xcf')),[_0x4e22cd,_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0xc0')],_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0xc1')],_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0x57')],_0x406ede[_0x7cfe('0x8b')]['CompanyId'],_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0xa6')],_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0xc3')]]);return _0xa0c291[_0x7cfe('0x10')](0xc8)[_0x7cfe('0x17')]({'message':'File\x20uploaded\x20correctly!','pid':_0x40d9ec[_0x7cfe('0xd0')]});}catch(_0x42e0d1){return _0xa0c291[_0x7cfe('0x10')](0x1f4)['send'](_0x42e0d1);}};exports['upload']=function(_0x821b30,_0x476d95){var _0xe75564=fs[_0x7cfe('0xd1')](_0x821b30['file']['path']);Papa['parse'](_0xe75564,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x36f8d3){return _0x476d95[_0x7cfe('0x10')](0xc8)[_0x7cfe('0x17')]({'file':_0x821b30[_0x7cfe('0xd2')],'fields':_0x36f8d3[_0x7cfe('0xd3')][_0x7cfe('0x30')]});}});};exports[_0x7cfe('0xd4')]=function(_0x2ae921,_0x1ddc59){return db[_0x7cfe('0x4b')][_0x7cfe('0x86')]({'raw':!![],'attributes':['id'],'where':{'role':_0x7cfe('0x6f')}})[_0x7cfe('0x19')](function(_0x18808a){var _0x4c1bf4=![];if(!_0x2ae921['body'][_0x7cfe('0x57')]){throw new Error(_0x7cfe('0xbf'));}if(!_0x2ae921['body']['binding'][_0x7cfe('0xb3')]){throw new Error(_0x7cfe('0xd5'));}if(!_0x2ae921[_0x7cfe('0x8b')][_0x7cfe('0xd6')][_0x7cfe('0xc7')]){throw new Error(_0x7cfe('0xc8'));}if(!_0x2ae921[_0x7cfe('0x8b')][_0x7cfe('0xc3')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x51db37=require('child_process')['fork'](path[_0x7cfe('0x8e')](__dirname,'../../components/import/cm/csv2'),[_0x2ae921['params']['id'],JSON[_0x7cfe('0xd7')](_0x2ae921['body']),JSON['stringify'](_0x18808a)]);_0x51db37['on'](_0x7cfe('0xd8'),function(){_0x4c1bf4=!![];return _0x1ddc59[_0x7cfe('0x10')](0xc8)[_0x7cfe('0x17')]({'message':_0x7cfe('0xd9'),'pid':_0x51db37[_0x7cfe('0xd0')]});});_0x51db37['on'](_0x7cfe('0xda'),function(_0x19711e){if(_0x19711e&&!_0x4c1bf4){return _0x1ddc59[_0x7cfe('0x10')](0x1f4)[_0x7cfe('0x17')]({'message':_0x7cfe('0xdb'),'pid':_0x51db37[_0x7cfe('0xd0')]});}});})[_0x7cfe('0x80')](handleError(_0x1ddc59,null));};exports['getJourney']=function(_0x1646c0,_0x4e997e){var _0xd46fb=[_0x7cfe('0xdc'),'chat',_0x7cfe('0xdd'),'openchannel',_0x7cfe('0xde'),_0x7cfe('0xdf'),_0x7cfe('0xe0')];var _0x24736d={'offset':0x0,'order':qs[_0x7cfe('0x33')](_0x7cfe('0xe1'))},_0x44dfad={'count':0x0,'rows':[]};Promise[_0x7cfe('0xe2')]()[_0x7cfe('0x19')](function(){if(_0x1646c0['query'][_0x7cfe('0xe3')]){if(!_['includes'](_0xd46fb,_0x1646c0['query'][_0x7cfe('0xe3')]['toLowerCase']())){throw new Error(_0x7cfe('0xe4'));}_0xd46fb=[_0x1646c0[_0x7cfe('0x2c')][_0x7cfe('0xe3')][_0x7cfe('0xe5')]()];}if(_0x1646c0[_0x7cfe('0x2c')]['range']){try{var _0x1926f1=JSON[_0x7cfe('0xe6')](_0x1646c0['query'][_0x7cfe('0xe7')]);if(!moment(_0x1926f1['from'])[_0x7cfe('0xe8')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x1926f1['to'])[_0x7cfe('0xe8')]()){throw new Error(_0x7cfe('0xe9'));}}catch(_0x422b01){throw new Error('Invalid\x20createdAt\x20filter');}}if(!_0x1646c0[_0x7cfe('0x2c')][_0x7cfe('0x31')](_0x7cfe('0x32'))){_0x24736d[_0x7cfe('0x13')]=qs[_0x7cfe('0x13')](_0x1646c0[_0x7cfe('0x2c')][_0x7cfe('0x13')]||0xa);_0x24736d[_0x7cfe('0x11')]=qs[_0x7cfe('0x11')](_0x1646c0['query'][_0x7cfe('0x11')]);}var _0x1b6856=_0xd46fb[_0x7cfe('0x48')](function(_0x3757e9){if(_0x3757e9==='voice'){var _0x33acea={'attributes':['id',_0x7cfe('0xea'),_0x7cfe('0x2a'),_0x7cfe('0xeb'),'destination',_0x7cfe('0xec'),_0x7cfe('0xed'),'endtime','duration',_0x7cfe('0xee'),_0x7cfe('0xef'),'userDisposition',_0x7cfe('0xf0'),_0x7cfe('0xf1'),'UserId'],'where':{'ContactId':_0x1646c0[_0x7cfe('0x81')]['id']},'include':[{'model':db[_0x7cfe('0x4b')],'as':_0x7cfe('0x4b'),'attributes':['id',_0x7cfe('0x1e'),_0x7cfe('0xf2'),_0x7cfe('0x87')]}],'order':[['createdAt','DESC']]};if(_0x1646c0[_0x7cfe('0x2c')][_0x7cfe('0xe7')]){_0x33acea[_0x7cfe('0x34')][_0x7cfe('0xef')]={'$gte':_0x1926f1['from'],'$lte':_0x1926f1['to']};}return db['VoiceCallReport'][_0x7cfe('0xf3')](_0x33acea)[_0x7cfe('0x19')](function(_0x527af1){_0x44dfad[_0x7cfe('0x14')]+=_0x527af1[_0x7cfe('0x14')];return _[_0x7cfe('0x48')](_0x527af1[_0x7cfe('0x7f')],function(_0x236ed3){var _0x524837=_0x236ed3[_0x7cfe('0x8c')]({'plain':!![]});_0x524837[_0x7cfe('0xe3')]=_0x3757e9;if(_0x524837['User']){_0x524837[_0x7cfe('0x4b')]={'id':_0x524837[_0x7cfe('0x4b')]['id'],'name':_0x524837[_0x7cfe('0x4b')][_0x7cfe('0x1e')],'fullname':_0x524837['User']['fullname'],'alias':_0x524837[_0x7cfe('0x4b')][_0x7cfe('0x87')]};}return _0x524837;});});}else{var _0x39f3df=_[_0x7cfe('0xf4')](_0x3757e9)+(_0x3757e9==='chat'?'Website':_0x7cfe('0xf5'));var _0x11f441={'attributes':['id',_0x7cfe('0xf6'),_0x7cfe('0xf7'),_0x7cfe('0xef'),_0x7cfe('0xee'),_0x7cfe('0xf8'),'secondDisposition',_0x7cfe('0xf9'),_0x7cfe('0xfa'),_0x39f3df+'Id'],'where':{'ContactId':_0x1646c0['params']['id']},'include':[{'model':db[_0x39f3df],'as':_0x7cfe('0xf5'),'attributes':['id','name','key']},{'model':db['User'],'as':_0x7cfe('0xfb'),'attributes':['id',_0x7cfe('0x1e'),_0x7cfe('0xf2')]},{'model':db[_0x7cfe('0x45')],'as':_0x7cfe('0x7e'),'attributes':['id',_0x7cfe('0x1e'),'color'],'through':{'attributes':[]}}],'order':[[_0x7cfe('0xef'),_0x7cfe('0x6c')]]};if(_0x1646c0['query'][_0x7cfe('0xe7')]){_0x11f441[_0x7cfe('0x34')][_0x7cfe('0xef')]={'$gte':_0x1926f1['from'],'$lte':_0x1926f1['to']};}switch(_0x3757e9){case _0x7cfe('0xfc'):_0x11f441['attributes'][_0x7cfe('0x55')](_0x7cfe('0xfd'),_0x7cfe('0xfe'),_0x7cfe('0xff'),_0x7cfe('0x100'),_0x7cfe('0x101'),_0x7cfe('0x102'),_0x7cfe('0x103'),_0x7cfe('0x104'),_0x7cfe('0x105'));break;case _0x7cfe('0xdc'):_0x11f441[_0x7cfe('0x2f')][_0x7cfe('0x55')](_0x7cfe('0x106'),_0x7cfe('0x107'));break;case _0x7cfe('0x108'):_0x11f441[_0x7cfe('0x2f')][_0x7cfe('0x55')]('externalUrl','threadId');break;}return db[_[_0x7cfe('0xf4')](_0x3757e9)+_0x7cfe('0x109')][_0x7cfe('0xf3')](_0x11f441)[_0x7cfe('0x19')](function(_0x2fe20a){_0x44dfad['count']+=_0x2fe20a['count'];return _['map'](_0x2fe20a[_0x7cfe('0x7f')],function(_0xe000e6){var _0x245b3e=_0xe000e6[_0x7cfe('0x8c')]({'plain':!![]});_0x245b3e[_0x7cfe('0xe3')]=_0x3757e9;if(_0x245b3e[_0x7cfe('0xfb')]){_0x245b3e['Owner']={'id':_0x245b3e[_0x7cfe('0xfb')]['id'],'name':_0x245b3e['Owner'][_0x7cfe('0x1e')],'fullname':_0x245b3e[_0x7cfe('0xfb')]['fullname']};}return _0x245b3e;});});}});return Promise[_0x7cfe('0x27')](_0x1b6856);})[_0x7cfe('0x19')](function(_0x4eb20b){return _(_0x4eb20b)['flatten']()[_0x7cfe('0x10a')](_0x7cfe('0xef'))[_0x7cfe('0x10b')]()[_0x7cfe('0x46')]();})['then'](function(_0x4c4faf){_0x44dfad[_0x7cfe('0x7f')]=_0x24736d[_0x7cfe('0x13')]?_0x4c4faf[_0x7cfe('0x10c')](_0x24736d[_0x7cfe('0x11')],_0x24736d[_0x7cfe('0x11')]+_0x24736d['limit']):_0x4c4faf;return _0x44dfad;})[_0x7cfe('0x19')](respondWithFilteredResult(_0x4e997e,_0x24736d))[_0x7cfe('0x80')](handleError(_0x4e997e,null));};
\ No newline at end of file
index 732830e..04b9b22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5bc=['setMaxListeners','save','update','exports'];(function(_0xa7429,_0x5f3ff6){var _0x1687f6=function(_0x8410ea){while(--_0x8410ea){_0xa7429['push'](_0xa7429['shift']());}};_0x1687f6(++_0x5f3ff6);}(_0xa5bc,0xbc));var _0xca5b=function(_0x265177,_0x1ae8c0){_0x265177=_0x265177-0x0;var _0x468a3c=_0xa5bc[_0x265177];return _0x468a3c;};'use strict';var EventEmitter=require('events');var CmContact=require('../../mysqldb')['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents[_0xca5b('0x0')](0x0);var events={'afterCreate':_0xca5b('0x1'),'afterUpdate':_0xca5b('0x2'),'afterDestroy':'remove'};function emitEvent(_0x334d77){return function(_0x41c408,_0x41a2a1,_0x1d0be6){CmContactEvents['emit'](_0x334d77+':'+_0x41c408['id'],_0x41c408);CmContactEvents['emit'](_0x334d77,_0x41c408);_0x1d0be6(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module[_0xca5b('0x3')]=CmContactEvents;
\ No newline at end of file
+var _0x7408=['events','../../mysqldb','CmContact','save','remove','emit','hasOwnProperty','hook','exports'];(function(_0x1793de,_0x4d7233){var _0x4f0309=function(_0x229ee7){while(--_0x229ee7){_0x1793de['push'](_0x1793de['shift']());}};_0x4f0309(++_0x4d7233);}(_0x7408,0x13b));var _0x8740=function(_0x4ed520,_0x21be63){_0x4ed520=_0x4ed520-0x0;var _0x4415a6=_0x7408[_0x4ed520];return _0x4415a6;};'use strict';var EventEmitter=require(_0x8740('0x0'));var CmContact=require(_0x8740('0x1'))['db'][_0x8740('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8740('0x3'),'afterUpdate':'update','afterDestroy':_0x8740('0x4')};function emitEvent(_0x277a4e){return function(_0x24fbcd,_0x54c1c8,_0x218e7f){CmContactEvents[_0x8740('0x5')](_0x277a4e+':'+_0x24fbcd['id'],_0x24fbcd);CmContactEvents[_0x8740('0x5')](_0x277a4e,_0x24fbcd);_0x218e7f(null);};}for(var e in events){if(events[_0x8740('0x6')](e)){var event=events[e];CmContact[_0x8740('0x7')](e,emitEvent(event));}}module[_0x8740('0x8')]=CmContactEvents;
\ No newline at end of file
index 64c5b95..11ce69d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe93=['fti_cm_contacts','mobile','fax','email','utf8mb4','models','get','error','cmContact','inspect','CmHopper','findOne','then','isNil','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','ListId','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','catch','VoiceQueue','outbound','CmList','Lists','length','always','onlyIfOpen','findAll','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','dialCheckDuplicateType','afterCreate','List\x20not\x20found','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','push','all','info','[CmContact][afterDestroy][Succesfull]','lodash','util','api','moment','bluebird','request-promise','path','rimraf','exports','define','cm_contacts','phone'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0xfe93,0xf4));var _0x3fe9=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0xfe93[_0x3e5086];return _0xfeb102;};'use strict';var _=require(_0x3fe9('0x0'));var util=require(_0x3fe9('0x1'));var logger=require('../../config/logger')(_0x3fe9('0x2'));var moment=require(_0x3fe9('0x3'));var BPromise=require(_0x3fe9('0x4'));var rp=require(_0x3fe9('0x5'));var fs=require('fs');var path=require(_0x3fe9('0x6'));var rimraf=require(_0x3fe9('0x7'));var config=require('../../config/environment');var attributes=require('./cmContact.attributes');module[_0x3fe9('0x8')]=function(_0x21586d,_0x249bd4){return _0x21586d[_0x3fe9('0x9')]('CmContact',attributes,{'tableName':_0x3fe9('0xa'),'paranoid':!![],'indexes':[{'name':_0x3fe9('0xb'),'fields':['phone']},{'name':_0x3fe9('0xc'),'fields':['firstName','lastName',_0x3fe9('0xb'),_0x3fe9('0xd'),_0x3fe9('0xe'),_0x3fe9('0xf')],'type':'FULLTEXT'}],'timestamps':!![],'charset':_0x3fe9('0x10'),'collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x12b23c,_0x40f3e5,_0x1b5b5e){var _0xe2bbc7=_0x21586d[_0x3fe9('0x11')];var _0x3cb7bd=_0x12b23c[_0x3fe9('0x12')]({'plain':!![]});function _0xcfc51c(){return function(_0x135de7){logger[_0x3fe9('0x13')](_0x3fe9('0x14'),'afterCreate',util[_0x3fe9('0x15')](_0x135de7,{'showHidden':![],'depth':null}));};}var _0x59076a=function(_0x375e8c){return new BPromise(function(_0x441150,_0x14ba02){_0xe2bbc7[_0x3fe9('0x16')][_0x3fe9('0x17')]({'where':{'phone':_0x3cb7bd[_0x3fe9('0xb')],'VoiceQueueId':_0x375e8c['id']}})[_0x3fe9('0x18')](function(_0x2466f7){if(!_[_0x3fe9('0x19')](_0x2466f7)){throw new Error(_0x3fe9('0x1a')+_0x3cb7bd[_0x3fe9('0xb')]+_0x3fe9('0x1b')+_0x375e8c['id']);}return _0xe2bbc7['CmHopper'][_0x3fe9('0x1c')]({'phone':_0x3cb7bd['phone'],'ContactId':_0x3cb7bd['id'],'ListId':_0x3cb7bd['ListId'],'priority':_0x3cb7bd[_0x3fe9('0x1d')]?_0x3cb7bd[_0x3fe9('0x1d')]:0x2,'scheduledat':_0x3cb7bd[_0x3fe9('0x1e')]?_0x3cb7bd['scheduledat']:moment()[_0x3fe9('0x1f')](_0x3fe9('0x20')),'callback':_0x3cb7bd['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x3cb7bd[_0x3fe9('0x21')]?_0x3cb7bd[_0x3fe9('0x21')]:undefined,'callbackat':_0x3cb7bd[_0x3fe9('0x21')]?moment()[_0x3fe9('0x1f')](_0x3fe9('0x20')):undefined,'VoiceQueueId':_0x375e8c['id']});})['catch'](function(_0x13c6ba){_0x14ba02(_0x13c6ba);});});};var _0x27d361=function(_0xc93774){return new BPromise(function(_0x46c787,_0x19d15e){_0xe2bbc7[_0x3fe9('0x16')][_0x3fe9('0x17')]({'where':{'phone':_0x3cb7bd[_0x3fe9('0xb')],'VoiceQueueId':_0xc93774['id']}})[_0x3fe9('0x18')](function(_0x206bee){if(!_[_0x3fe9('0x19')](_0x206bee)){throw new Error(_0x3fe9('0x1a')+_0x3cb7bd[_0x3fe9('0xb')]+_0x3fe9('0x22')+_0xc93774['id']);}return _0xe2bbc7[_0x3fe9('0x23')][_0x3fe9('0x17')]({'where':{'calleridnum':_0x3cb7bd[_0x3fe9('0xb')],'VoiceQueueId':_0xc93774['id']}});})[_0x3fe9('0x18')](function(_0x55db2e){if(!_[_0x3fe9('0x19')](_0x55db2e)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x3cb7bd[_0x3fe9('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0xc93774['id']);}return _0xe2bbc7[_0x3fe9('0x16')][_0x3fe9('0x1c')]({'phone':_0x3cb7bd[_0x3fe9('0xb')],'ContactId':_0x3cb7bd['id'],'ListId':_0x3cb7bd[_0x3fe9('0x24')],'priority':_0x3cb7bd[_0x3fe9('0x1d')]?_0x3cb7bd[_0x3fe9('0x1d')]:0x2,'scheduledat':_0x3cb7bd['scheduledat']?_0x3cb7bd['scheduledat']:moment()[_0x3fe9('0x1f')](_0x3fe9('0x20')),'callback':_0x3cb7bd[_0x3fe9('0x21')]?!![]:![],'callbackuniqueid':_0x3cb7bd['callbackUniqueid']?_0x3cb7bd[_0x3fe9('0x21')]:undefined,'callbackat':_0x3cb7bd[_0x3fe9('0x21')]?moment()['format'](_0x3fe9('0x20')):undefined,'VoiceQueueId':_0xc93774['id']});})['catch'](function(_0x5c9b71){_0x19d15e(_0x5c9b71);});});};function _0x40e9b4(){return function(_0x28c497){logger['error'](_0x3fe9('0x14'),'afterCreate',util[_0x3fe9('0x15')](_0x28c497,{'showHidden':![],'depth':null}));};}var _0x1796dc=function(_0x5efdea){return new BPromise(function(_0x390430,_0x2632a9){_0xe2bbc7['CmHopper'][_0x3fe9('0x17')]({'where':{'phone':_0x3cb7bd['phone'],'CampaignId':_0x5efdea['id']}})['then'](function(_0xca4b2c){if(!_[_0x3fe9('0x19')](_0xca4b2c)){throw new Error(_0x3fe9('0x1a')+_0x3cb7bd['phone']+_0x3fe9('0x25')+_0x5efdea['id']);}return _0xe2bbc7[_0x3fe9('0x16')][_0x3fe9('0x1c')]({'phone':_0x3cb7bd[_0x3fe9('0xb')],'ContactId':_0x3cb7bd['id'],'ListId':_0x3cb7bd['ListId'],'priority':_0x3cb7bd[_0x3fe9('0x1d')]?_0x3cb7bd[_0x3fe9('0x1d')]:0x2,'scheduledat':_0x3cb7bd[_0x3fe9('0x1e')]?_0x3cb7bd[_0x3fe9('0x1e')]:moment()[_0x3fe9('0x1f')](_0x3fe9('0x20')),'callback':_0x3cb7bd[_0x3fe9('0x21')]?!![]:![],'callbackuniqueid':_0x3cb7bd[_0x3fe9('0x21')]?_0x3cb7bd[_0x3fe9('0x21')]:undefined,'callbackat':_0x3cb7bd[_0x3fe9('0x21')]?moment()[_0x3fe9('0x1f')](_0x3fe9('0x20')):undefined,'CampaignId':_0x5efdea['id']});})[_0x3fe9('0x26')](function(_0x8cdb7b){_0x2632a9(_0x8cdb7b);});});};var _0x5ae43c=function(_0x70c204){return new BPromise(function(_0x4d8ec2,_0x27b4b9){_0xe2bbc7[_0x3fe9('0x16')]['findOne']({'where':{'phone':_0x3cb7bd[_0x3fe9('0xb')],'CampaignId':_0x70c204['id']}})[_0x3fe9('0x18')](function(_0x29b06a){if(!_[_0x3fe9('0x19')](_0x29b06a)){throw new Error('cmContact,\x20afterCreate\x20'+_0x3cb7bd[_0x3fe9('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x70c204['id']);}return _0xe2bbc7['CmHopperFinal'][_0x3fe9('0x17')]({'where':{'calleridnum':_0x3cb7bd[_0x3fe9('0xb')],'CampaignId':_0x70c204['id']}});})['then'](function(_0x528f22){if(!_[_0x3fe9('0x19')](_0x528f22)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x3cb7bd[_0x3fe9('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0x70c204['id']);}return _0xe2bbc7[_0x3fe9('0x16')][_0x3fe9('0x1c')]({'phone':_0x3cb7bd[_0x3fe9('0xb')],'ContactId':_0x3cb7bd['id'],'ListId':_0x3cb7bd[_0x3fe9('0x24')],'priority':_0x3cb7bd['priority']?_0x3cb7bd[_0x3fe9('0x1d')]:0x2,'scheduledat':_0x3cb7bd[_0x3fe9('0x1e')]?_0x3cb7bd[_0x3fe9('0x1e')]:moment()[_0x3fe9('0x1f')](_0x3fe9('0x20')),'callback':_0x3cb7bd[_0x3fe9('0x21')]?!![]:![],'callbackuniqueid':_0x3cb7bd[_0x3fe9('0x21')]?_0x3cb7bd[_0x3fe9('0x21')]:undefined,'callbackat':_0x3cb7bd[_0x3fe9('0x21')]?moment()[_0x3fe9('0x1f')](_0x3fe9('0x20')):undefined,'CampaignId':_0x70c204['id']});})[_0x3fe9('0x26')](function(_0x1d3f06){_0x27b4b9(_0x1d3f06);});});};if(_0x3cb7bd['ListId']){_0xe2bbc7[_0x3fe9('0x27')]['findAll']({'where':{'type':_0x3fe9('0x28')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0xe2bbc7[_0x3fe9('0x29')],'as':_0x3fe9('0x2a'),'where':{'id':_0x3cb7bd[_0x3fe9('0x24')]}}]})[_0x3fe9('0x18')](function(_0x19c9fc){if(_0x19c9fc){var _0x57205e=[];for(var _0x27fbaf=0x0,_0x1acb4e;_0x27fbaf<_0x19c9fc[_0x3fe9('0x2b')];_0x27fbaf+=0x1){_0x1acb4e=_0x19c9fc[_0x27fbaf][_0x3fe9('0x12')]({'plain':!![]});switch(_0x1acb4e['dialCheckDuplicateType']){case _0x3fe9('0x2c'):_0x27d361(_0x1acb4e)[_0x3fe9('0x26')](_0xcfc51c());break;case _0x3fe9('0x2d'):_0x59076a(_0x1acb4e)['catch'](_0xcfc51c());break;default:_0xe2bbc7[_0x3fe9('0x16')]['create']({'phone':_0x3cb7bd['phone'],'ContactId':_0x3cb7bd['id'],'ListId':_0x3cb7bd[_0x3fe9('0x24')],'scheduledat':_0x3cb7bd['scheduledat']?_0x3cb7bd[_0x3fe9('0x1e')]:moment()['format'](_0x3fe9('0x20')),'priority':_0x3cb7bd[_0x3fe9('0x1d')]?_0x3cb7bd['priority']:0x2,'callback':_0x3cb7bd['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x3cb7bd[_0x3fe9('0x21')]?_0x3cb7bd[_0x3fe9('0x21')]:undefined,'callbackat':_0x3cb7bd[_0x3fe9('0x21')]?moment()['format'](_0x3fe9('0x20')):undefined,'VoiceQueueId':_0x1acb4e['id']})[_0x3fe9('0x26')](_0xcfc51c());}}}})[_0x3fe9('0x18')](function(){return _0xe2bbc7['VoiceQueue'][_0x3fe9('0x2e')]({'where':{'type':_0x3fe9('0x28')},'attributes':['id'],'include':[{'model':_0xe2bbc7['CmList'],'as':_0x3fe9('0x2f'),'where':{'id':_0x3cb7bd[_0x3fe9('0x24')]}}]})[_0x3fe9('0x18')](function(_0x4946a6){if(_0x4946a6){var _0x344fb0=[];for(var _0x53bf93=0x0,_0x5f35f6;_0x53bf93<_0x4946a6[_0x3fe9('0x2b')];_0x53bf93+=0x1){_0x5f35f6=_0x4946a6[_0x53bf93][_0x3fe9('0x12')]({'plain':!![]});_0xe2bbc7[_0x3fe9('0x30')][_0x3fe9('0x1c')]({'phone':_0x3cb7bd[_0x3fe9('0xb')],'ContactId':_0x3cb7bd['id'],'ListId':_0x3cb7bd[_0x3fe9('0x24')],'VoiceQueueId':_0x5f35f6['id']})[_0x3fe9('0x26')](function(_0x13b9bc){logger[_0x3fe9('0x13')](_0x3fe9('0x31'),'afterCreate',_0x13b9bc[_0x3fe9('0x32')]);});}}});})[_0x3fe9('0x18')](function(){return _0xe2bbc7[_0x3fe9('0x33')]['findAll']({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0xe2bbc7[_0x3fe9('0x29')],'as':_0x3fe9('0x2a'),'where':{'id':_0x3cb7bd[_0x3fe9('0x24')]}}]})['then'](function(_0x107183){if(_0x107183){var _0x51bc08=[];for(var _0x23f013=0x0,_0xb9cf6d;_0x23f013<_0x107183[_0x3fe9('0x2b')];_0x23f013+=0x1){_0xb9cf6d=_0x107183[_0x23f013][_0x3fe9('0x12')]({'plain':!![]});switch(_0xb9cf6d[_0x3fe9('0x34')]){case'always':_0x5ae43c(_0xb9cf6d)['catch'](_0x40e9b4());break;case'onlyIfOpen':_0x1796dc(_0xb9cf6d)[_0x3fe9('0x26')](_0x40e9b4());break;default:_0xe2bbc7[_0x3fe9('0x16')][_0x3fe9('0x1c')]({'phone':_0x3cb7bd[_0x3fe9('0xb')],'ContactId':_0x3cb7bd['id'],'ListId':_0x3cb7bd[_0x3fe9('0x24')],'scheduledat':_0x3cb7bd['scheduledat']?_0x3cb7bd[_0x3fe9('0x1e')]:moment()[_0x3fe9('0x1f')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x3cb7bd[_0x3fe9('0x1d')]?_0x3cb7bd[_0x3fe9('0x1d')]:0x2,'callback':_0x3cb7bd[_0x3fe9('0x21')]?!![]:![],'callbackuniqueid':_0x3cb7bd[_0x3fe9('0x21')]?_0x3cb7bd['callbackUniqueid']:undefined,'callbackat':_0x3cb7bd['callbackUniqueid']?moment()['format'](_0x3fe9('0x20')):undefined,'CampaignId':_0xb9cf6d['id']})['catch'](_0x40e9b4());}}}});})[_0x3fe9('0x18')](function(){return _0xe2bbc7[_0x3fe9('0x33')][_0x3fe9('0x2e')]({'attributes':['id'],'include':[{'model':_0xe2bbc7[_0x3fe9('0x29')],'as':'BlackLists','where':{'id':_0x3cb7bd[_0x3fe9('0x24')]}}]})['then'](function(_0x400ebd){if(_0x400ebd){var _0x3831b6=[];for(var _0x32ae7d=0x0,_0x440ba9;_0x32ae7d<_0x400ebd[_0x3fe9('0x2b')];_0x32ae7d+=0x1){_0x440ba9=_0x400ebd[_0x32ae7d]['get']({'plain':!![]});_0xe2bbc7[_0x3fe9('0x30')][_0x3fe9('0x1c')]({'phone':_0x3cb7bd['phone'],'ContactId':_0x3cb7bd['id'],'ListId':_0x3cb7bd[_0x3fe9('0x24')],'CampaignId':_0x440ba9['id']})[_0x3fe9('0x26')](function(_0x3166e2){logger['error'](_0x3fe9('0x31'),_0x3fe9('0x35'),_0x3166e2[_0x3fe9('0x32')]);});}}});})[_0x3fe9('0x18')](function(){_0x1b5b5e();})[_0x3fe9('0x26')](function(_0x163ea3){logger['error'](_0x3fe9('0x31'),_0x3fe9('0x35'),_0x163ea3[_0x3fe9('0x32')]);_0x1b5b5e(_0x163ea3);});}else{_0x1b5b5e(new Error(_0x3fe9('0x36')));}},'afterDestroy':function(_0x41bb17,_0x3a46cb,_0x5c4760){var _0x3367fe=_0x21586d['models'];var _0x4aff37=_0x41bb17[_0x3fe9('0x12')]({'plain':!![]});return _0x3367fe['CmHopper'][_0x3fe9('0x2e')]({'raw':!![],'where':{'ListId':_0x4aff37[_0x3fe9('0x24')],'ContactId':_0x4aff37['id']}})[_0x3fe9('0x18')](function(_0x3ada44){if(!_[_0x3fe9('0x37')](_0x3ada44)){var _0x560666=[];for(var _0x31c2d8=0x0;_0x31c2d8<_0x3ada44['length'];_0x31c2d8+=0x1){var _0x118241=_0x3367fe[_0x3fe9('0x16')][_0x3fe9('0x38')]({'where':{'ListId':_0x3ada44[_0x31c2d8][_0x3fe9('0x24')],'ContactId':_0x3ada44[_0x31c2d8][_0x3fe9('0x39')],'VoiceQueueId':_0x3ada44[_0x31c2d8][_0x3fe9('0x3a')],'CampaignId':_0x3ada44[_0x31c2d8][_0x3fe9('0x3b')]}});_0x560666[_0x3fe9('0x3c')](_0x118241);}return BPromise[_0x3fe9('0x3d')](_0x560666);}})['then'](function(_0x222229){logger[_0x3fe9('0x3e')](_0x3fe9('0x3f'),util[_0x3fe9('0x15')](_0x222229,{'showHidden':![],'depth':null}));_0x5c4760();})[_0x3fe9('0x26')](function(_0x46c1de){logger[_0x3fe9('0x13')]('[CmContact][afterDestroy][Error]',util['inspect'](_0x46c1de,{'showHidden':![],'depth':null}));_0x5c4760(_0x46c1de);});}}});};
\ No newline at end of file
+var _0xf0e4=['cmContact,\x20%s,\x20%s','message','Campaign','List\x20not\x20found','isEmpty','ContactId','VoiceQueueId','CampaignId','push','all','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmContact.attributes','exports','cm_contacts','phone','fti_cm_contacts','lastName','mobile','fax','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','get','error','cmContact','inspect','CmHopper','then','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','ListId','priority','scheduledat','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','format','catch','findOne','isNil','cmContact,\x20afterCreate\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','create','afterCreate','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','length','always','onlyIfOpen','BlackLists'];(function(_0x376b45,_0x5964fb){var _0x2341b3=function(_0x5a7f01){while(--_0x5a7f01){_0x376b45['push'](_0x376b45['shift']());}};_0x2341b3(++_0x5964fb);}(_0xf0e4,0x198));var _0x4f0e=function(_0x2a8184,_0x32581a){_0x2a8184=_0x2a8184-0x0;var _0x3ed812=_0xf0e4[_0x2a8184];return _0x3ed812;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x4f0e('0x0'));var moment=require(_0x4f0e('0x1'));var BPromise=require(_0x4f0e('0x2'));var rp=require(_0x4f0e('0x3'));var fs=require('fs');var path=require(_0x4f0e('0x4'));var rimraf=require(_0x4f0e('0x5'));var config=require(_0x4f0e('0x6'));var attributes=require(_0x4f0e('0x7'));module[_0x4f0e('0x8')]=function(_0x2c5999,_0x85019f){return _0x2c5999['define']('CmContact',attributes,{'tableName':_0x4f0e('0x9'),'paranoid':!![],'indexes':[{'name':_0x4f0e('0xa'),'fields':[_0x4f0e('0xa')]},{'name':_0x4f0e('0xb'),'fields':['firstName',_0x4f0e('0xc'),_0x4f0e('0xa'),_0x4f0e('0xd'),_0x4f0e('0xe'),_0x4f0e('0xf')],'type':_0x4f0e('0x10')}],'timestamps':!![],'charset':_0x4f0e('0x11'),'collate':_0x4f0e('0x12'),'hooks':{'afterCreate':function(_0x53e784,_0x46b794,_0x162267){var _0x2104ff=_0x2c5999[_0x4f0e('0x13')];var _0x2db416=_0x53e784[_0x4f0e('0x14')]({'plain':!![]});function _0x3783a5(){return function(_0x562098){logger[_0x4f0e('0x15')](_0x4f0e('0x16'),'afterCreate',util[_0x4f0e('0x17')](_0x562098,{'showHidden':![],'depth':null}));};}var _0x37ac31=function(_0x5b9321){return new BPromise(function(_0x57af8e,_0x54272d){_0x2104ff[_0x4f0e('0x18')]['findOne']({'where':{'phone':_0x2db416[_0x4f0e('0xa')],'VoiceQueueId':_0x5b9321['id']}})[_0x4f0e('0x19')](function(_0x5b0e18){if(!_['isNil'](_0x5b0e18)){throw new Error('cmContact,\x20afterCreate\x20'+_0x2db416['phone']+_0x4f0e('0x1a')+_0x5b9321['id']);}return _0x2104ff['CmHopper']['create']({'phone':_0x2db416[_0x4f0e('0xa')],'ContactId':_0x2db416['id'],'ListId':_0x2db416[_0x4f0e('0x1b')],'priority':_0x2db416['priority']?_0x2db416[_0x4f0e('0x1c')]:0x2,'scheduledat':_0x2db416['scheduledat']?_0x2db416[_0x4f0e('0x1d')]:moment()['format'](_0x4f0e('0x1e')),'callback':_0x2db416[_0x4f0e('0x1f')]?!![]:![],'callbackuniqueid':_0x2db416[_0x4f0e('0x1f')]?_0x2db416['callbackUniqueid']:undefined,'callbackat':_0x2db416[_0x4f0e('0x1f')]?moment()[_0x4f0e('0x20')](_0x4f0e('0x1e')):undefined,'VoiceQueueId':_0x5b9321['id']});})[_0x4f0e('0x21')](function(_0x23427b){_0x54272d(_0x23427b);});});};var _0x5d87c6=function(_0x208b94){return new BPromise(function(_0x44a527,_0x44b055){_0x2104ff['CmHopper'][_0x4f0e('0x22')]({'where':{'phone':_0x2db416[_0x4f0e('0xa')],'VoiceQueueId':_0x208b94['id']}})[_0x4f0e('0x19')](function(_0x5e2364){if(!_[_0x4f0e('0x23')](_0x5e2364)){throw new Error(_0x4f0e('0x24')+_0x2db416['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x208b94['id']);}return _0x2104ff[_0x4f0e('0x25')][_0x4f0e('0x22')]({'where':{'calleridnum':_0x2db416[_0x4f0e('0xa')],'VoiceQueueId':_0x208b94['id']}});})[_0x4f0e('0x19')](function(_0x509a45){if(!_[_0x4f0e('0x23')](_0x509a45)){throw new Error(_0x4f0e('0x26')+_0x2db416['phone']+_0x4f0e('0x27')+_0x208b94['id']);}return _0x2104ff['CmHopper'][_0x4f0e('0x28')]({'phone':_0x2db416[_0x4f0e('0xa')],'ContactId':_0x2db416['id'],'ListId':_0x2db416['ListId'],'priority':_0x2db416['priority']?_0x2db416[_0x4f0e('0x1c')]:0x2,'scheduledat':_0x2db416[_0x4f0e('0x1d')]?_0x2db416[_0x4f0e('0x1d')]:moment()['format'](_0x4f0e('0x1e')),'callback':_0x2db416[_0x4f0e('0x1f')]?!![]:![],'callbackuniqueid':_0x2db416[_0x4f0e('0x1f')]?_0x2db416[_0x4f0e('0x1f')]:undefined,'callbackat':_0x2db416[_0x4f0e('0x1f')]?moment()[_0x4f0e('0x20')](_0x4f0e('0x1e')):undefined,'VoiceQueueId':_0x208b94['id']});})[_0x4f0e('0x21')](function(_0x5e15cd){_0x44b055(_0x5e15cd);});});};function _0x198811(){return function(_0x51be66){logger[_0x4f0e('0x15')]('cmContact',_0x4f0e('0x29'),util[_0x4f0e('0x17')](_0x51be66,{'showHidden':![],'depth':null}));};}var _0x43f26e=function(_0x10cd4a){return new BPromise(function(_0xe0ae8,_0x241e51){_0x2104ff[_0x4f0e('0x18')]['findOne']({'where':{'phone':_0x2db416[_0x4f0e('0xa')],'CampaignId':_0x10cd4a['id']}})['then'](function(_0x4a29d1){if(!_[_0x4f0e('0x23')](_0x4a29d1)){throw new Error('cmContact,\x20afterCreate\x20'+_0x2db416['phone']+_0x4f0e('0x2a')+_0x10cd4a['id']);}return _0x2104ff[_0x4f0e('0x18')][_0x4f0e('0x28')]({'phone':_0x2db416['phone'],'ContactId':_0x2db416['id'],'ListId':_0x2db416[_0x4f0e('0x1b')],'priority':_0x2db416[_0x4f0e('0x1c')]?_0x2db416['priority']:0x2,'scheduledat':_0x2db416[_0x4f0e('0x1d')]?_0x2db416[_0x4f0e('0x1d')]:moment()[_0x4f0e('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x2db416['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x2db416[_0x4f0e('0x1f')]?_0x2db416[_0x4f0e('0x1f')]:undefined,'callbackat':_0x2db416[_0x4f0e('0x1f')]?moment()[_0x4f0e('0x20')](_0x4f0e('0x1e')):undefined,'CampaignId':_0x10cd4a['id']});})[_0x4f0e('0x21')](function(_0x2d8812){_0x241e51(_0x2d8812);});});};var _0x325586=function(_0xec778a){return new BPromise(function(_0x3e8f31,_0x371f6c){_0x2104ff[_0x4f0e('0x18')]['findOne']({'where':{'phone':_0x2db416[_0x4f0e('0xa')],'CampaignId':_0xec778a['id']}})[_0x4f0e('0x19')](function(_0xb864f){if(!_[_0x4f0e('0x23')](_0xb864f)){throw new Error(_0x4f0e('0x24')+_0x2db416[_0x4f0e('0xa')]+_0x4f0e('0x2b')+_0xec778a['id']);}return _0x2104ff[_0x4f0e('0x25')][_0x4f0e('0x22')]({'where':{'calleridnum':_0x2db416[_0x4f0e('0xa')],'CampaignId':_0xec778a['id']}});})[_0x4f0e('0x19')](function(_0x2257e9){if(!_[_0x4f0e('0x23')](_0x2257e9)){throw new Error(_0x4f0e('0x26')+_0x2db416[_0x4f0e('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0xec778a['id']);}return _0x2104ff[_0x4f0e('0x18')][_0x4f0e('0x28')]({'phone':_0x2db416[_0x4f0e('0xa')],'ContactId':_0x2db416['id'],'ListId':_0x2db416[_0x4f0e('0x1b')],'priority':_0x2db416['priority']?_0x2db416[_0x4f0e('0x1c')]:0x2,'scheduledat':_0x2db416[_0x4f0e('0x1d')]?_0x2db416[_0x4f0e('0x1d')]:moment()[_0x4f0e('0x20')](_0x4f0e('0x1e')),'callback':_0x2db416[_0x4f0e('0x1f')]?!![]:![],'callbackuniqueid':_0x2db416['callbackUniqueid']?_0x2db416[_0x4f0e('0x1f')]:undefined,'callbackat':_0x2db416['callbackUniqueid']?moment()['format'](_0x4f0e('0x1e')):undefined,'CampaignId':_0xec778a['id']});})[_0x4f0e('0x21')](function(_0x4f1350){_0x371f6c(_0x4f1350);});});};if(_0x2db416[_0x4f0e('0x1b')]){_0x2104ff[_0x4f0e('0x2c')][_0x4f0e('0x2d')]({'where':{'type':_0x4f0e('0x2e')},'attributes':['id',_0x4f0e('0x2f')],'include':[{'model':_0x2104ff[_0x4f0e('0x30')],'as':_0x4f0e('0x31'),'where':{'id':_0x2db416[_0x4f0e('0x1b')]}}]})['then'](function(_0x4aadf8){if(_0x4aadf8){var _0x2aac55=[];for(var _0x48578b=0x0,_0x3ff575;_0x48578b<_0x4aadf8[_0x4f0e('0x32')];_0x48578b+=0x1){_0x3ff575=_0x4aadf8[_0x48578b][_0x4f0e('0x14')]({'plain':!![]});switch(_0x3ff575[_0x4f0e('0x2f')]){case _0x4f0e('0x33'):_0x5d87c6(_0x3ff575)[_0x4f0e('0x21')](_0x3783a5());break;case _0x4f0e('0x34'):_0x37ac31(_0x3ff575)['catch'](_0x3783a5());break;default:_0x2104ff[_0x4f0e('0x18')][_0x4f0e('0x28')]({'phone':_0x2db416[_0x4f0e('0xa')],'ContactId':_0x2db416['id'],'ListId':_0x2db416[_0x4f0e('0x1b')],'scheduledat':_0x2db416[_0x4f0e('0x1d')]?_0x2db416[_0x4f0e('0x1d')]:moment()[_0x4f0e('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x2db416[_0x4f0e('0x1c')]?_0x2db416[_0x4f0e('0x1c')]:0x2,'callback':_0x2db416[_0x4f0e('0x1f')]?!![]:![],'callbackuniqueid':_0x2db416['callbackUniqueid']?_0x2db416[_0x4f0e('0x1f')]:undefined,'callbackat':_0x2db416[_0x4f0e('0x1f')]?moment()[_0x4f0e('0x20')](_0x4f0e('0x1e')):undefined,'VoiceQueueId':_0x3ff575['id']})['catch'](_0x3783a5());}}}})['then'](function(){return _0x2104ff[_0x4f0e('0x2c')]['findAll']({'where':{'type':_0x4f0e('0x2e')},'attributes':['id'],'include':[{'model':_0x2104ff[_0x4f0e('0x30')],'as':_0x4f0e('0x35'),'where':{'id':_0x2db416[_0x4f0e('0x1b')]}}]})['then'](function(_0xc45a69){if(_0xc45a69){var _0x2292c8=[];for(var _0x1b2d6a=0x0,_0x526dd1;_0x1b2d6a<_0xc45a69[_0x4f0e('0x32')];_0x1b2d6a+=0x1){_0x526dd1=_0xc45a69[_0x1b2d6a][_0x4f0e('0x14')]({'plain':!![]});_0x2104ff['CmHopperBlack'][_0x4f0e('0x28')]({'phone':_0x2db416[_0x4f0e('0xa')],'ContactId':_0x2db416['id'],'ListId':_0x2db416[_0x4f0e('0x1b')],'VoiceQueueId':_0x526dd1['id']})[_0x4f0e('0x21')](function(_0x473603){logger['error'](_0x4f0e('0x36'),_0x4f0e('0x29'),_0x473603[_0x4f0e('0x37')]);});}}});})[_0x4f0e('0x19')](function(){return _0x2104ff[_0x4f0e('0x38')]['findAll']({'attributes':['id',_0x4f0e('0x2f')],'include':[{'model':_0x2104ff[_0x4f0e('0x30')],'as':'Lists','where':{'id':_0x2db416[_0x4f0e('0x1b')]}}]})[_0x4f0e('0x19')](function(_0x294be4){if(_0x294be4){var _0x5e99ae=[];for(var _0x29a5f7=0x0,_0x52376c;_0x29a5f7<_0x294be4[_0x4f0e('0x32')];_0x29a5f7+=0x1){_0x52376c=_0x294be4[_0x29a5f7]['get']({'plain':!![]});switch(_0x52376c[_0x4f0e('0x2f')]){case _0x4f0e('0x33'):_0x325586(_0x52376c)['catch'](_0x198811());break;case _0x4f0e('0x34'):_0x43f26e(_0x52376c)[_0x4f0e('0x21')](_0x198811());break;default:_0x2104ff['CmHopper']['create']({'phone':_0x2db416[_0x4f0e('0xa')],'ContactId':_0x2db416['id'],'ListId':_0x2db416['ListId'],'scheduledat':_0x2db416['scheduledat']?_0x2db416[_0x4f0e('0x1d')]:moment()[_0x4f0e('0x20')](_0x4f0e('0x1e')),'priority':_0x2db416[_0x4f0e('0x1c')]?_0x2db416['priority']:0x2,'callback':_0x2db416[_0x4f0e('0x1f')]?!![]:![],'callbackuniqueid':_0x2db416[_0x4f0e('0x1f')]?_0x2db416[_0x4f0e('0x1f')]:undefined,'callbackat':_0x2db416[_0x4f0e('0x1f')]?moment()[_0x4f0e('0x20')](_0x4f0e('0x1e')):undefined,'CampaignId':_0x52376c['id']})[_0x4f0e('0x21')](_0x198811());}}}});})[_0x4f0e('0x19')](function(){return _0x2104ff[_0x4f0e('0x38')][_0x4f0e('0x2d')]({'attributes':['id'],'include':[{'model':_0x2104ff[_0x4f0e('0x30')],'as':_0x4f0e('0x35'),'where':{'id':_0x2db416[_0x4f0e('0x1b')]}}]})[_0x4f0e('0x19')](function(_0x4b5179){if(_0x4b5179){var _0x295c02=[];for(var _0x53f6fc=0x0,_0x390adb;_0x53f6fc<_0x4b5179[_0x4f0e('0x32')];_0x53f6fc+=0x1){_0x390adb=_0x4b5179[_0x53f6fc]['get']({'plain':!![]});_0x2104ff['CmHopperBlack'][_0x4f0e('0x28')]({'phone':_0x2db416['phone'],'ContactId':_0x2db416['id'],'ListId':_0x2db416[_0x4f0e('0x1b')],'CampaignId':_0x390adb['id']})[_0x4f0e('0x21')](function(_0x231cab){logger['error'](_0x4f0e('0x36'),_0x4f0e('0x29'),_0x231cab[_0x4f0e('0x37')]);});}}});})['then'](function(){_0x162267();})['catch'](function(_0x129876){logger['error'](_0x4f0e('0x36'),_0x4f0e('0x29'),_0x129876[_0x4f0e('0x37')]);_0x162267(_0x129876);});}else{_0x162267(new Error(_0x4f0e('0x39')));}},'afterDestroy':function(_0x5a9e7c,_0x485b6a,_0x5d8602){var _0x3ffb1f=_0x2c5999[_0x4f0e('0x13')];var _0x29e32a=_0x5a9e7c[_0x4f0e('0x14')]({'plain':!![]});return _0x3ffb1f[_0x4f0e('0x18')][_0x4f0e('0x2d')]({'raw':!![],'where':{'ListId':_0x29e32a[_0x4f0e('0x1b')],'ContactId':_0x29e32a['id']}})[_0x4f0e('0x19')](function(_0x73ff68){if(!_[_0x4f0e('0x3a')](_0x73ff68)){var _0x200efe=[];for(var _0x5dbb41=0x0;_0x5dbb41<_0x73ff68[_0x4f0e('0x32')];_0x5dbb41+=0x1){var _0x4c28a7=_0x3ffb1f[_0x4f0e('0x18')]['destroy']({'where':{'ListId':_0x73ff68[_0x5dbb41][_0x4f0e('0x1b')],'ContactId':_0x73ff68[_0x5dbb41][_0x4f0e('0x3b')],'VoiceQueueId':_0x73ff68[_0x5dbb41][_0x4f0e('0x3c')],'CampaignId':_0x73ff68[_0x5dbb41][_0x4f0e('0x3d')]}});_0x200efe[_0x4f0e('0x3e')](_0x4c28a7);}return BPromise[_0x4f0e('0x3f')](_0x200efe);}})[_0x4f0e('0x19')](function(_0xe8c991){logger['info'](_0x4f0e('0x40'),util[_0x4f0e('0x17')](_0xe8c991,{'showHidden':![],'depth':null}));_0x5d8602();})[_0x4f0e('0x21')](function(_0x2d16f1){logger[_0x4f0e('0x15')](_0x4f0e('0x41'),util[_0x4f0e('0x17')](_0x2d16f1,{'showHidden':![],'depth':null}));_0x5d8602(_0x2d16f1);});}}});};
\ No newline at end of file
index 6cc0ce1..9eeeba0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7124=['redis','./cmContact.socket','register','then','info','debug','request\x20sent','stringify','error','code','CmContact,\x20%s,\x20%s','message','result','catch','GetCmContact','CmContact','findAll','options','raw','where','attributes','limit','include','map','model','CreateCmContact','create','body','keys','length','startsWith','cf_','update','table','cm_contacts','set','id\x20=\x20?','toString','sequelize','query','lodash','util','moment','bluebird','randomstring','squel','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost'];(function(_0xe003a7,_0xd5fc46){var _0x42d100=function(_0x4dc306){while(--_0x4dc306){_0xe003a7['push'](_0xe003a7['shift']());}};_0x42d100(++_0xd5fc46);}(_0x7124,0x140));var _0x4712=function(_0x145f74,_0x346ce8){_0x145f74=_0x145f74-0x0;var _0x13ec90=_0x7124[_0x145f74];return _0x13ec90;};'use strict';var _=require(_0x4712('0x0'));var util=require(_0x4712('0x1'));var moment=require(_0x4712('0x2'));var BPromise=require(_0x4712('0x3'));var rs=require(_0x4712('0x4'));var fs=require('fs');var Redis=require('ioredis');var squel=require(_0x4712('0x5'));var db=require(_0x4712('0x6'))['db'];var utils=require(_0x4712('0x7'));var logger=require(_0x4712('0x8'))(_0x4712('0x9'));var config=require(_0x4712('0xa'));var jayson=require(_0x4712('0xb'));var client=jayson[_0x4712('0xc')][_0x4712('0xd')]({'port':0x232a});config['redis']=_[_0x4712('0xe')](config['redis'],{'host':_0x4712('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4712('0x10')]));require(_0x4712('0x11'))[_0x4712('0x12')](socket);function respondWithRpcPromise(_0x351362,_0x617fe2,_0x3e275f){return new BPromise(function(_0x5a524f,_0x237cb4){return client['request'](_0x351362,_0x3e275f)[_0x4712('0x13')](function(_0x3f0eee){logger[_0x4712('0x14')]('CmContact,\x20%s,\x20%s',_0x617fe2,'request\x20sent');logger[_0x4712('0x15')]('CmContact,\x20%s,\x20%s,\x20%s',_0x617fe2,_0x4712('0x16'),JSON[_0x4712('0x17')](_0x3f0eee));if(_0x3f0eee[_0x4712('0x18')]){if(_0x3f0eee[_0x4712('0x18')][_0x4712('0x19')]===0x1f4){logger[_0x4712('0x18')](_0x4712('0x1a'),_0x617fe2,_0x3f0eee[_0x4712('0x18')][_0x4712('0x1b')]);return _0x237cb4(_0x3f0eee['error'][_0x4712('0x1b')]);}logger[_0x4712('0x18')](_0x4712('0x1a'),_0x617fe2,_0x3f0eee[_0x4712('0x18')][_0x4712('0x1b')]);return _0x5a524f(_0x3f0eee['error'][_0x4712('0x1b')]);}else{logger[_0x4712('0x14')]('CmContact,\x20%s,\x20%s',_0x617fe2,_0x4712('0x16'));_0x5a524f(_0x3f0eee[_0x4712('0x1c')]['message']);}})[_0x4712('0x1d')](function(_0x22f0ca){logger[_0x4712('0x18')]('CmContact,\x20%s,\x20%s',_0x617fe2,_0x22f0ca);_0x237cb4(_0x22f0ca);});});}exports[_0x4712('0x1e')]=function(_0x38d0b7){var _0x18c8d8=this;return new Promise(function(_0x3cd8b5,_0x22f023){return db[_0x4712('0x1f')][_0x4712('0x20')]({'raw':_0x38d0b7['options']?_0x38d0b7[_0x4712('0x21')][_0x4712('0x22')]===undefined?!![]:![]:!![],'where':_0x38d0b7['options']?_0x38d0b7['options'][_0x4712('0x23')]||null:null,'attributes':_0x38d0b7[_0x4712('0x21')]?_0x38d0b7[_0x4712('0x21')][_0x4712('0x24')]||null:null,'limit':_0x38d0b7['options']?_0x38d0b7[_0x4712('0x21')][_0x4712('0x25')]||null:null,'include':_0x38d0b7['options']?_0x38d0b7[_0x4712('0x21')][_0x4712('0x26')]?_[_0x4712('0x27')](_0x38d0b7['options'][_0x4712('0x26')],function(_0x191852){return{'model':db[_0x191852['model']],'as':_0x191852['as'],'attributes':_0x191852[_0x4712('0x24')],'include':_0x191852[_0x4712('0x26')]?_[_0x4712('0x27')](_0x191852[_0x4712('0x26')],function(_0x2eb945){return{'model':db[_0x2eb945[_0x4712('0x28')]],'as':_0x2eb945['as'],'attributes':_0x2eb945['attributes'],'include':_0x2eb945[_0x4712('0x26')]?_[_0x4712('0x27')](_0x2eb945[_0x4712('0x26')],function(_0x3f41de){return{'model':db[_0x3f41de['model']],'as':_0x3f41de['as'],'attributes':_0x3f41de[_0x4712('0x24')]};}):[]};}):[]};}):[]:[]})[_0x4712('0x13')](function(_0x1a0442){logger[_0x4712('0x14')](_0x4712('0x1e'),_0x38d0b7);logger['debug'](_0x4712('0x1e'),_0x38d0b7,JSON[_0x4712('0x17')](_0x1a0442));_0x3cd8b5(_0x1a0442);})[_0x4712('0x1d')](function(_0x1f5399){logger[_0x4712('0x18')](_0x4712('0x1e'),_0x1f5399[_0x4712('0x1b')],_0x38d0b7);_0x22f023(_0x18c8d8[_0x4712('0x18')](0x1f4,_0x1f5399[_0x4712('0x1b')]));});});};exports[_0x4712('0x29')]=function(_0x4fbd77){var _0x3b7fbb=this;return new Promise(function(_0x17351f,_0x56d704){return db[_0x4712('0x1f')][_0x4712('0x2a')](_0x4fbd77[_0x4712('0x2b')],{'raw':_0x4fbd77['options']?_0x4fbd77[_0x4712('0x21')][_0x4712('0x22')]===undefined?!![]:![]:!![]})[_0x4712('0x13')](function(_0x479f9e){var _0x73d4f5;for(var _0x31bf88=0x0;_0x31bf88<Object[_0x4712('0x2c')](_0x4fbd77['body'])[_0x4712('0x2d')];_0x31bf88++){var _0x2eae65=Object[_0x4712('0x2c')](_0x4fbd77[_0x4712('0x2b')])[_0x31bf88];if(_0x2eae65[_0x4712('0x2e')](_0x4712('0x2f'))){_0x73d4f5=squel[_0x4712('0x30')]()[_0x4712('0x31')](_0x4712('0x32'))[_0x4712('0x33')](_0x2eae65,_0x4fbd77[_0x4712('0x2b')][_0x2eae65])[_0x4712('0x23')](_0x4712('0x34'),_0x479f9e['id'])[_0x4712('0x35')]();break;}}if(!_0x73d4f5)return _0x479f9e;return db[_0x4712('0x36')][_0x4712('0x37')](_0x73d4f5)['then'](function(){return _0x479f9e;});})[_0x4712('0x13')](function(_0x5a8870){logger[_0x4712('0x14')]('CreateCmContact',_0x4fbd77);logger[_0x4712('0x15')](_0x4712('0x29'),_0x4fbd77,JSON[_0x4712('0x17')](_0x5a8870));_0x17351f(_0x5a8870);})[_0x4712('0x1d')](function(_0x4d71db){logger[_0x4712('0x18')](_0x4712('0x29'),_0x4d71db[_0x4712('0x1b')],_0x4fbd77);_0x56d704(_0x3b7fbb[_0x4712('0x18')](0x1f4,_0x4d71db[_0x4712('0x1b')]));});});};
\ No newline at end of file
+var _0x9450=['register','request','then','info','CmContact,\x20%s,\x20%s','debug','request\x20sent','stringify','code','error','message','result','GetCmContact','CmContact','findAll','options','where','include','map','model','attributes','catch','CreateCmContact','body','raw','keys','startsWith','cf_','update','table','id\x20=\x20?','toString','sequelize','lodash','util','moment','bluebird','ioredis','squel','../../config/utils','../../config/logger','../../config/environment','client','redis','defaults','localhost','./cmContact.socket'];(function(_0x44695d,_0x87bb4c){var _0x1562a3=function(_0x3b99e0){while(--_0x3b99e0){_0x44695d['push'](_0x44695d['shift']());}};_0x1562a3(++_0x87bb4c);}(_0x9450,0xdd));var _0x0945=function(_0x554496,_0x27e942){_0x554496=_0x554496-0x0;var _0x173f5a=_0x9450[_0x554496];return _0x173f5a;};'use strict';var _=require(_0x0945('0x0'));var util=require(_0x0945('0x1'));var moment=require(_0x0945('0x2'));var BPromise=require(_0x0945('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0945('0x4'));var squel=require(_0x0945('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x0945('0x6'));var logger=require(_0x0945('0x7'))('rpc');var config=require(_0x0945('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0945('0x9')]['http']({'port':0x232a});config[_0x0945('0xa')]=_[_0x0945('0xb')](config[_0x0945('0xa')],{'host':_0x0945('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0945('0xa')]));require(_0x0945('0xd'))[_0x0945('0xe')](socket);function respondWithRpcPromise(_0x2cd031,_0x2aeadd,_0x301d52){return new BPromise(function(_0x1e7ff4,_0x1de769){return client[_0x0945('0xf')](_0x2cd031,_0x301d52)[_0x0945('0x10')](function(_0x2e2d55){logger[_0x0945('0x11')](_0x0945('0x12'),_0x2aeadd,'request\x20sent');logger[_0x0945('0x13')]('CmContact,\x20%s,\x20%s,\x20%s',_0x2aeadd,_0x0945('0x14'),JSON[_0x0945('0x15')](_0x2e2d55));if(_0x2e2d55['error']){if(_0x2e2d55['error'][_0x0945('0x16')]===0x1f4){logger[_0x0945('0x17')](_0x0945('0x12'),_0x2aeadd,_0x2e2d55['error'][_0x0945('0x18')]);return _0x1de769(_0x2e2d55[_0x0945('0x17')]['message']);}logger[_0x0945('0x17')](_0x0945('0x12'),_0x2aeadd,_0x2e2d55['error'][_0x0945('0x18')]);return _0x1e7ff4(_0x2e2d55[_0x0945('0x17')][_0x0945('0x18')]);}else{logger[_0x0945('0x11')](_0x0945('0x12'),_0x2aeadd,_0x0945('0x14'));_0x1e7ff4(_0x2e2d55[_0x0945('0x19')][_0x0945('0x18')]);}})['catch'](function(_0x2bb263){logger[_0x0945('0x17')](_0x0945('0x12'),_0x2aeadd,_0x2bb263);_0x1de769(_0x2bb263);});});}exports[_0x0945('0x1a')]=function(_0x441883){var _0x41a002=this;return new Promise(function(_0x7a1b03,_0x1d8ad3){return db[_0x0945('0x1b')][_0x0945('0x1c')]({'raw':_0x441883[_0x0945('0x1d')]?_0x441883[_0x0945('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x441883[_0x0945('0x1d')]?_0x441883[_0x0945('0x1d')][_0x0945('0x1e')]||null:null,'attributes':_0x441883[_0x0945('0x1d')]?_0x441883[_0x0945('0x1d')]['attributes']||null:null,'limit':_0x441883[_0x0945('0x1d')]?_0x441883[_0x0945('0x1d')]['limit']||null:null,'include':_0x441883[_0x0945('0x1d')]?_0x441883[_0x0945('0x1d')][_0x0945('0x1f')]?_[_0x0945('0x20')](_0x441883['options'][_0x0945('0x1f')],function(_0x215567){return{'model':db[_0x215567[_0x0945('0x21')]],'as':_0x215567['as'],'attributes':_0x215567['attributes'],'include':_0x215567[_0x0945('0x1f')]?_[_0x0945('0x20')](_0x215567['include'],function(_0x1d2599){return{'model':db[_0x1d2599[_0x0945('0x21')]],'as':_0x1d2599['as'],'attributes':_0x1d2599[_0x0945('0x22')],'include':_0x1d2599[_0x0945('0x1f')]?_[_0x0945('0x20')](_0x1d2599[_0x0945('0x1f')],function(_0x541965){return{'model':db[_0x541965[_0x0945('0x21')]],'as':_0x541965['as'],'attributes':_0x541965['attributes']};}):[]};}):[]};}):[]:[]})[_0x0945('0x10')](function(_0x520674){logger[_0x0945('0x11')]('GetCmContact',_0x441883);logger[_0x0945('0x13')](_0x0945('0x1a'),_0x441883,JSON[_0x0945('0x15')](_0x520674));_0x7a1b03(_0x520674);})[_0x0945('0x23')](function(_0x2a6d13){logger[_0x0945('0x17')]('GetCmContact',_0x2a6d13[_0x0945('0x18')],_0x441883);_0x1d8ad3(_0x41a002['error'](0x1f4,_0x2a6d13[_0x0945('0x18')]));});});};exports[_0x0945('0x24')]=function(_0x1f9fe1){var _0x3f1b48=this;return new Promise(function(_0x474766,_0x3a6396){return db[_0x0945('0x1b')]['create'](_0x1f9fe1[_0x0945('0x25')],{'raw':_0x1f9fe1[_0x0945('0x1d')]?_0x1f9fe1[_0x0945('0x1d')][_0x0945('0x26')]===undefined?!![]:![]:!![]})['then'](function(_0x44db70){var _0x3f0656;for(var _0x2c6869=0x0;_0x2c6869<Object[_0x0945('0x27')](_0x1f9fe1['body'])['length'];_0x2c6869++){var _0x5e2ba1=Object[_0x0945('0x27')](_0x1f9fe1[_0x0945('0x25')])[_0x2c6869];if(_0x5e2ba1[_0x0945('0x28')](_0x0945('0x29'))){_0x3f0656=squel[_0x0945('0x2a')]()[_0x0945('0x2b')]('cm_contacts')['set'](_0x5e2ba1,_0x1f9fe1[_0x0945('0x25')][_0x5e2ba1])[_0x0945('0x1e')](_0x0945('0x2c'),_0x44db70['id'])[_0x0945('0x2d')]();break;}}if(!_0x3f0656)return _0x44db70;return db[_0x0945('0x2e')]['query'](_0x3f0656)[_0x0945('0x10')](function(){return _0x44db70;});})[_0x0945('0x10')](function(_0x2ec24a){logger[_0x0945('0x11')]('CreateCmContact',_0x1f9fe1);logger[_0x0945('0x13')](_0x0945('0x24'),_0x1f9fe1,JSON['stringify'](_0x2ec24a));_0x474766(_0x2ec24a);})[_0x0945('0x23')](function(_0xbe3e79){logger[_0x0945('0x17')](_0x0945('0x24'),_0xbe3e79[_0x0945('0x18')],_0x1f9fe1);_0x3a6396(_0x3f1b48['error'](0x1f4,_0xbe3e79[_0x0945('0x18')]));});});};
\ No newline at end of file
index b2701c8..fb72dc5 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(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
index 9146edb..3041b61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b36=['%s-%s%s','basename','extname','now','single','uploadCsv','/upload','file','upload','update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','./cmContact.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/tags','getTags','/:id/hoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','/merge','merge','post','create','bulkCreate','setTags','diskStorage','join','root','server/files/tmp','originalname','replace','format'];(function(_0x12ca16,_0x281fd9){var _0x56fb78=function(_0x3479b2){while(--_0x3479b2){_0x12ca16['push'](_0x12ca16['shift']());}};_0x56fb78(++_0x281fd9);}(_0x6b36,0x12d));var _0x66b3=function(_0x2842fd,_0x3363a0){_0x2842fd=_0x2842fd-0x0;var _0x202a6d=_0x6b36[_0x2842fd];return _0x202a6d;};'use strict';var multer=require(_0x66b3('0x0'));var util=require('util');var path=require(_0x66b3('0x1'));var timeout=require(_0x66b3('0x2'));var express=require(_0x66b3('0x3'));var router=express['Router']();var fs_extra=require(_0x66b3('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x66b3('0x5'));router[_0x66b3('0x6')]('/',auth[_0x66b3('0x7')](),controller[_0x66b3('0x8')]);router[_0x66b3('0x6')](_0x66b3('0x9'),auth[_0x66b3('0x7')](),controller['describe']);router['get'](_0x66b3('0xa'),auth[_0x66b3('0x7')](),controller[_0x66b3('0xb')]);router['get'](_0x66b3('0xc'),auth[_0x66b3('0x7')](),controller[_0x66b3('0xd')]);router['get'](_0x66b3('0xe'),auth[_0x66b3('0x7')](),controller['getHoppers']);router[_0x66b3('0x6')](_0x66b3('0xf'),auth['isAuthenticated'](),controller[_0x66b3('0x10')]);router['get'](_0x66b3('0x11'),auth[_0x66b3('0x7')](),controller[_0x66b3('0x12')]);router[_0x66b3('0x6')](_0x66b3('0x13'),auth[_0x66b3('0x7')](),controller[_0x66b3('0x14')]);router[_0x66b3('0x6')](_0x66b3('0x15'),auth[_0x66b3('0x7')](),controller['getJourney']);router['post'](_0x66b3('0x16'),auth['isAuthenticated'](),controller[_0x66b3('0x17')]);router[_0x66b3('0x18')]('/',auth[_0x66b3('0x7')](),controller[_0x66b3('0x19')]);router[_0x66b3('0x18')]('/create_many',auth[_0x66b3('0x7')](),controller[_0x66b3('0x1a')]);router[_0x66b3('0x18')](_0x66b3('0xc'),auth[_0x66b3('0x7')](),controller[_0x66b3('0x1b')]);var upload=multer({'storage':multer[_0x66b3('0x1c')]({'destination':function(_0x28d63a,_0x1b1c4f,_0x184c1e){_0x184c1e(null,path[_0x66b3('0x1d')](config[_0x66b3('0x1e')],_0x66b3('0x1f')));},'filename':function(_0x1b40f0,_0x52a403,_0xb86fca){_0x52a403[_0x66b3('0x20')]=_0x52a403[_0x66b3('0x20')][_0x66b3('0x21')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0xb86fca(null,util[_0x66b3('0x22')](_0x66b3('0x23'),path[_0x66b3('0x24')](_0x52a403[_0x66b3('0x20')],path[_0x66b3('0x25')](_0x52a403[_0x66b3('0x20')])),Date[_0x66b3('0x26')](),path[_0x66b3('0x25')](_0x52a403[_0x66b3('0x20')])));}})});router['post']('/csv',upload[_0x66b3('0x27')]('file'),controller[_0x66b3('0x28')]);var upload=multer({'storage':multer[_0x66b3('0x1c')]({'destination':function(_0x251ce5,_0x375650,_0x265f57){_0x265f57(null,path[_0x66b3('0x1d')](config[_0x66b3('0x1e')],'server/files/tmp'));},'filename':function(_0x4b3e03,_0x4c610f,_0x3dba40){_0x4c610f[_0x66b3('0x20')]=_0x4c610f['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3dba40(null,util[_0x66b3('0x22')](_0x66b3('0x23'),path[_0x66b3('0x24')](_0x4c610f['originalname'],path[_0x66b3('0x25')](_0x4c610f[_0x66b3('0x20')])),Date[_0x66b3('0x26')](),path[_0x66b3('0x25')](_0x4c610f[_0x66b3('0x20')])));}})});router['post'](_0x66b3('0x29'),upload['single'](_0x66b3('0x2a')),controller[_0x66b3('0x2b')]);router[_0x66b3('0x18')]('/upload/:id',auth[_0x66b3('0x7')](),controller['import']);router['put'](_0x66b3('0xa'),auth['isAuthenticated'](),controller[_0x66b3('0x2c')]);router[_0x66b3('0x2d')](_0x66b3('0xa'),auth[_0x66b3('0x7')](),controller[_0x66b3('0x2e')]);module[_0x66b3('0x2f')]=router;
\ No newline at end of file
+var _0x0b06=['update','delete','destroy','exports','multer','util','express','Router','../../components/interaction/service','../../config/environment','./cmContact.controller','get','isAuthenticated','index','/describe','describe','show','/:id/tags','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','create','join','root','server/files/tmp','originalname','replace','%s-%s%s','basename','extname','now','single','file','uploadCsv','format','upload','/upload/:id','import','put','/:id'];(function(_0x53e3de,_0x13da7b){var _0x7b905b=function(_0x29b56a){while(--_0x29b56a){_0x53e3de['push'](_0x53e3de['shift']());}};_0x7b905b(++_0x13da7b);}(_0x0b06,0x1b4));var _0x60b0=function(_0x31920c,_0x2f48b6){_0x31920c=_0x31920c-0x0;var _0x4d046e=_0x0b06[_0x31920c];return _0x4d046e;};'use strict';var multer=require(_0x60b0('0x0'));var util=require(_0x60b0('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x60b0('0x2'));var router=express[_0x60b0('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x60b0('0x4'));var config=require(_0x60b0('0x5'));var controller=require(_0x60b0('0x6'));router[_0x60b0('0x7')]('/',auth[_0x60b0('0x8')](),controller[_0x60b0('0x9')]);router[_0x60b0('0x7')](_0x60b0('0xa'),auth[_0x60b0('0x8')](),controller[_0x60b0('0xb')]);router[_0x60b0('0x7')]('/:id',auth[_0x60b0('0x8')](),controller[_0x60b0('0xc')]);router[_0x60b0('0x7')](_0x60b0('0xd'),auth[_0x60b0('0x8')](),controller[_0x60b0('0xe')]);router['get'](_0x60b0('0xf'),auth[_0x60b0('0x8')](),controller[_0x60b0('0x10')]);router[_0x60b0('0x7')](_0x60b0('0x11'),auth[_0x60b0('0x8')](),controller['getHopperHistories']);router[_0x60b0('0x7')](_0x60b0('0x12'),auth[_0x60b0('0x8')](),controller[_0x60b0('0x13')]);router[_0x60b0('0x7')](_0x60b0('0x14'),auth[_0x60b0('0x8')](),controller[_0x60b0('0x15')]);router['get'](_0x60b0('0x16'),auth['isAuthenticated'](),controller[_0x60b0('0x17')]);router[_0x60b0('0x18')]('/merge',auth[_0x60b0('0x8')](),controller['merge']);router[_0x60b0('0x18')]('/',auth[_0x60b0('0x8')](),controller[_0x60b0('0x19')]);router['post']('/create_many',auth['isAuthenticated'](),controller['bulkCreate']);router[_0x60b0('0x18')](_0x60b0('0xd'),auth[_0x60b0('0x8')](),controller['setTags']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x659917,_0x57ddab,_0x1832e2){_0x1832e2(null,path[_0x60b0('0x1a')](config[_0x60b0('0x1b')],_0x60b0('0x1c')));},'filename':function(_0x28f1a1,_0x1d20b5,_0x5a0c15){_0x1d20b5[_0x60b0('0x1d')]=_0x1d20b5[_0x60b0('0x1d')][_0x60b0('0x1e')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x5a0c15(null,util['format'](_0x60b0('0x1f'),path[_0x60b0('0x20')](_0x1d20b5[_0x60b0('0x1d')],path[_0x60b0('0x21')](_0x1d20b5[_0x60b0('0x1d')])),Date[_0x60b0('0x22')](),path[_0x60b0('0x21')](_0x1d20b5[_0x60b0('0x1d')])));}})});router[_0x60b0('0x18')]('/csv',upload[_0x60b0('0x23')](_0x60b0('0x24')),controller[_0x60b0('0x25')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xe1fc28,_0x1cca24,_0x59fd49){_0x59fd49(null,path['join'](config[_0x60b0('0x1b')],'server/files/tmp'));},'filename':function(_0x5c7404,_0x34a582,_0x4e0f5e){_0x34a582['originalname']=_0x34a582[_0x60b0('0x1d')][_0x60b0('0x1e')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x4e0f5e(null,util[_0x60b0('0x26')](_0x60b0('0x1f'),path[_0x60b0('0x20')](_0x34a582['originalname'],path[_0x60b0('0x21')](_0x34a582['originalname'])),Date[_0x60b0('0x22')](),path[_0x60b0('0x21')](_0x34a582[_0x60b0('0x1d')])));}})});router[_0x60b0('0x18')]('/upload',upload[_0x60b0('0x23')]('file'),controller[_0x60b0('0x27')]);router[_0x60b0('0x18')](_0x60b0('0x28'),auth[_0x60b0('0x8')](),controller[_0x60b0('0x29')]);router[_0x60b0('0x2a')](_0x60b0('0x2b'),auth['isAuthenticated'](),controller[_0x60b0('0x2c')]);router[_0x60b0('0x2d')](_0x60b0('0x2b'),auth[_0x60b0('0x8')](),controller[_0x60b0('0x2e')]);module[_0x60b0('0x2f')]=router;
\ No newline at end of file
index bbf4665..5b88b6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x902b=['getDataValue','alias','STRING','setDataValue','name','TEXT','select','parse','values','isArray','stringify','BOOLEAN','voice','sequelize','lodash'];(function(_0x3c3218,_0x2d23f6){var _0x5682a7=function(_0x429183){while(--_0x429183){_0x3c3218['push'](_0x3c3218['shift']());}};_0x5682a7(++_0x2d23f6);}(_0x902b,0xee));var _0xb902=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x902b[_0x173441];return _0x2423a8;};'use strict';var Sequelize=require(_0xb902('0x0'));var _=require(_0xb902('0x1'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x4bae9f){return this[_0xb902('0x2')](_0xb902('0x3'));}},'alias':{'type':Sequelize[_0xb902('0x4')],'allowNull':![],'set':function(_0x535b32){this[_0xb902('0x5')](_0xb902('0x3'),_0x535b32?_0x535b32:this[_0xb902('0x2')](_0xb902('0x6')));}},'type':{'type':Sequelize[_0xb902('0x4')],'allowNull':![]},'values':{'type':Sequelize[_0xb902('0x7')]('long'),'get':function(){if(this['getDataValue']('type')===_0xb902('0x8')){return JSON[_0xb902('0x9')](this[_0xb902('0x2')](_0xb902('0xa')));}else{return this[_0xb902('0x2')](_0xb902('0xa'));}},'set':function(_0x3091a4){if(Array[_0xb902('0xb')](_0x3091a4)){this[_0xb902('0x5')](_0xb902('0xa'),JSON[_0xb902('0xc')](_0x3091a4));}else{this['setDataValue'](_0xb902('0xa'),_0x3091a4);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xb902('0xd')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0xb902('0xe'))}};
\ No newline at end of file
+var _0xca51=['BOOLEAN','ENUM','voice','sequelize','lodash','VIRTUAL','getDataValue','alias','STRING','setDataValue','TEXT','type','parse','values','isArray','stringify'];(function(_0x50181a,_0x2be9c1){var _0x169d9c=function(_0x184dc8){while(--_0x184dc8){_0x50181a['push'](_0x50181a['shift']());}};_0x169d9c(++_0x2be9c1);}(_0xca51,0x1b3));var _0x1ca5=function(_0x17f67d,_0x266613){_0x17f67d=_0x17f67d-0x0;var _0x3e838c=_0xca51[_0x17f67d];return _0x3e838c;};'use strict';var Sequelize=require(_0x1ca5('0x0'));var _=require(_0x1ca5('0x1'));module['exports']={'name':{'type':Sequelize[_0x1ca5('0x2')],'get':function(_0x19af33){return this[_0x1ca5('0x3')](_0x1ca5('0x4'));}},'alias':{'type':Sequelize[_0x1ca5('0x5')],'allowNull':![],'set':function(_0x1d5e82){this[_0x1ca5('0x6')]('alias',_0x1d5e82?_0x1d5e82:this['getDataValue']('name'));}},'type':{'type':Sequelize[_0x1ca5('0x5')],'allowNull':![]},'values':{'type':Sequelize[_0x1ca5('0x7')]('long'),'get':function(){if(this['getDataValue'](_0x1ca5('0x8'))==='select'){return JSON[_0x1ca5('0x9')](this[_0x1ca5('0x3')]('values'));}else{return this[_0x1ca5('0x3')](_0x1ca5('0xa'));}},'set':function(_0x3c81e5){if(Array[_0x1ca5('0xb')](_0x3c81e5)){this['setDataValue'](_0x1ca5('0xa'),JSON[_0x1ca5('0xc')](_0x3c81e5));}else{this[_0x1ca5('0x6')](_0x1ca5('0xa'),_0x3c81e5);}}},'required':{'type':Sequelize[_0x1ca5('0xd')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x1ca5('0xd')],'defaultValue':![]},'actionType':{'type':Sequelize[_0x1ca5('0xe')](_0x1ca5('0xf'))}};
\ No newline at end of file
index c1c224e..f8c28fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3114=['api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','destroy','error','stack','name','send','index','map','CmCustomField','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','where','pick','filter','merge','VIRTUAL','options','include','findAll','then','rows','catch','show','params','update','body','find','create','transaction','Sequelize','TEXT','number','INTEGER','switch','queryInterface','addColumn','cm_contacts','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x4b8be7,_0x4b565c){var _0x58ffee=function(_0x1c35a0){while(--_0x1c35a0){_0x4b8be7['push'](_0x4b8be7['shift']());}};_0x58ffee(++_0x4b565c);}(_0x3114,0x142));var _0x4311=function(_0x8eb9d,_0x320ee6){_0x8eb9d=_0x8eb9d-0x0;var _0x28c28=_0x3114[_0x8eb9d];return _0x28c28;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4311('0x0'));var zipdir=require(_0x4311('0x1'));var jsonpatch=require(_0x4311('0x2'));var rp=require(_0x4311('0x3'));var moment=require('moment');var BPromise=require(_0x4311('0x4'));var Mustache=require(_0x4311('0x5'));var util=require(_0x4311('0x6'));var path=require(_0x4311('0x7'));var sox=require(_0x4311('0x8'));var csv=require(_0x4311('0x9'));var ejs=require(_0x4311('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x4311('0xb'));var crypto=require(_0x4311('0xc'));var jsforce=require(_0x4311('0xd'));var deskjs=require(_0x4311('0xe'));var toCsv=require(_0x4311('0x9'));var querystring=require(_0x4311('0xf'));var Papa=require(_0x4311('0x10'));var Redis=require(_0x4311('0x11'));var authService=require(_0x4311('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x4311('0x13'));var hardwareService=require(_0x4311('0x14'));var logger=require(_0x4311('0x15'))(_0x4311('0x16'));var utils=require('../../config/utils');var config=require(_0x4311('0x17'));var licenseUtil=require(_0x4311('0x18'));var db=require(_0x4311('0x19'))['db'];function respondWithStatusCode(_0x375744,_0x4a45e7){_0x4a45e7=_0x4a45e7||0xcc;return function(_0x716684){if(_0x716684){return _0x375744['sendStatus'](_0x4a45e7);}return _0x375744[_0x4311('0x1a')](_0x4a45e7)[_0x4311('0x1b')]();};}function respondWithResult(_0x331f34,_0x39bc55){_0x39bc55=_0x39bc55||0xc8;return function(_0x961260){if(_0x961260){return _0x331f34[_0x4311('0x1a')](_0x39bc55)[_0x4311('0x1c')](_0x961260);}};}function respondWithFilteredResult(_0x2478bb,_0xd48f4a){return function(_0x66def8){if(_0x66def8){var _0x254723=typeof _0xd48f4a[_0x4311('0x1d')]===_0x4311('0x1e')&&typeof _0xd48f4a['limit']===_0x4311('0x1e');var _0x414787=_0x66def8[_0x4311('0x1f')];var _0x2204de=_0x254723?0x0:_0xd48f4a[_0x4311('0x1d')];var _0x3b24e9=_0x254723?_0x66def8[_0x4311('0x1f')]:_0xd48f4a[_0x4311('0x1d')]+_0xd48f4a[_0x4311('0x20')];var _0x25abeb;if(_0x3b24e9>=_0x414787){_0x3b24e9=_0x414787;_0x25abeb=0xc8;}else{_0x25abeb=0xce;}_0x2478bb['status'](_0x25abeb);return _0x2478bb[_0x4311('0x21')](_0x4311('0x22'),_0x2204de+'-'+_0x3b24e9+'/'+_0x414787)[_0x4311('0x1c')](_0x66def8);}return null;};}function patchUpdates(_0x5e311d){return function(_0x260a16){try{jsonpatch[_0x4311('0x23')](_0x260a16,_0x5e311d,!![]);}catch(_0x511783){return BPromise[_0x4311('0x24')](_0x511783);}return _0x260a16['save']();};}function saveUpdates(_0x4e7e6e,_0x143f84){return function(_0x425939){if(_0x425939){return _0x425939['update'](_0x4e7e6e)['then'](function(_0x373cf2){return _0x373cf2;});}return null;};}function removeEntity(_0x25d3d5,_0x455cf6){return function(_0x2beaf5){if(_0x2beaf5){return _0x2beaf5[_0x4311('0x25')]()['then'](function(){_0x25d3d5[_0x4311('0x1a')](0xcc)[_0x4311('0x1b')]();});}};}function handleEntityNotFound(_0x11d16f,_0x3559ee){return function(_0x51bb3c){if(!_0x51bb3c){_0x11d16f['sendStatus'](0x194);}return _0x51bb3c;};}function handleError(_0x2a8e0c,_0x848dbb){_0x848dbb=_0x848dbb||0x1f4;return function(_0x3eed22){logger[_0x4311('0x26')](_0x3eed22[_0x4311('0x27')]);if(_0x3eed22['name']){delete _0x3eed22[_0x4311('0x28')];}_0x2a8e0c[_0x4311('0x1a')](_0x848dbb)[_0x4311('0x29')](_0x3eed22);};}exports[_0x4311('0x2a')]=function(_0x2132f2,_0x248e22){var _0x14c6ec={},_0x4ff3cb={},_0x448598={'count':0x0,'rows':[]};var _0x2e20f8=_[_0x4311('0x2b')](db[_0x4311('0x2c')][_0x4311('0x2d')],function(_0x2837ff){return{'name':_0x2837ff[_0x4311('0x2e')],'type':_0x2837ff[_0x4311('0x2f')][_0x4311('0x30')]};});_0x4ff3cb[_0x4311('0x31')]=_[_0x4311('0x32')](_['map'](_0x2e20f8,'name'),[_0x4311('0x28')]);_0x4ff3cb[_0x4311('0x33')]=_[_0x4311('0x34')](_0x2132f2['query']);_0x4ff3cb[_0x4311('0x35')]=_['intersection'](_0x4ff3cb['model'],_0x4ff3cb['query']);_0x14c6ec['attributes']=_[_0x4311('0x36')](_0x4ff3cb[_0x4311('0x31')],qs['fields'](_0x2132f2[_0x4311('0x33')][_0x4311('0x37')]));_0x14c6ec[_0x4311('0x38')]=_0x14c6ec[_0x4311('0x38')][_0x4311('0x39')]?_0x14c6ec[_0x4311('0x38')]:_0x4ff3cb[_0x4311('0x31')];if(!_0x2132f2[_0x4311('0x33')][_0x4311('0x3a')](_0x4311('0x3b'))){_0x14c6ec[_0x4311('0x20')]=qs[_0x4311('0x20')](_0x2132f2['query']['limit']);_0x14c6ec[_0x4311('0x1d')]=qs['offset'](_0x2132f2[_0x4311('0x33')][_0x4311('0x1d')]);}_0x14c6ec['order']=qs['sort'](_0x2132f2[_0x4311('0x33')]['sort']);_0x14c6ec[_0x4311('0x3c')]=qs['filters'](_[_0x4311('0x3d')](_0x2132f2[_0x4311('0x33')],_0x4ff3cb[_0x4311('0x35')]),_0x2e20f8);if(_0x2132f2['query'][_0x4311('0x3e')]){_0x14c6ec[_0x4311('0x3c')]=_[_0x4311('0x3f')](_0x14c6ec[_0x4311('0x3c')],{'$or':_[_0x4311('0x2b')](_0x2e20f8,function(_0x54bcf5){if(_0x54bcf5[_0x4311('0x2f')]!==_0x4311('0x40')){var _0x6210ca={};_0x6210ca[_0x54bcf5[_0x4311('0x28')]]={'$like':'%'+_0x2132f2['query'][_0x4311('0x3e')]+'%'};return _0x6210ca;}})});}_0x14c6ec=_[_0x4311('0x3f')]({},_0x14c6ec,_0x2132f2[_0x4311('0x41')]);var _0x41279b={'where':_0x14c6ec[_0x4311('0x3c')]};return db['CmCustomField'][_0x4311('0x1f')](_0x41279b)['then'](function(_0x4a5d0e){_0x448598['count']=_0x4a5d0e;if(_0x2132f2['query']['includeAll']){_0x14c6ec[_0x4311('0x42')]=[{'all':!![]}];}return db['CmCustomField'][_0x4311('0x43')](_0x14c6ec);})[_0x4311('0x44')](function(_0xf482ef){_0x448598[_0x4311('0x45')]=_0xf482ef;return _0x448598;})['then'](respondWithFilteredResult(_0x248e22,_0x14c6ec))[_0x4311('0x46')](handleError(_0x248e22,null));};exports[_0x4311('0x47')]=function(_0xa58a09,_0x35b767){var _0x2ea44d={'raw':!![],'where':{'id':_0xa58a09[_0x4311('0x48')]['id']}},_0x1fe3c0={};_0x1fe3c0[_0x4311('0x31')]=_[_0x4311('0x34')](db[_0x4311('0x2c')][_0x4311('0x2d')]);_0x1fe3c0[_0x4311('0x33')]=_['keys'](_0xa58a09[_0x4311('0x33')]);_0x1fe3c0[_0x4311('0x35')]=_[_0x4311('0x36')](_0x1fe3c0[_0x4311('0x31')],_0x1fe3c0[_0x4311('0x33')]);_0x2ea44d['attributes']=_[_0x4311('0x36')](_0x1fe3c0[_0x4311('0x31')],qs[_0x4311('0x37')](_0xa58a09['query'][_0x4311('0x37')]));_0x2ea44d['attributes']=_0x2ea44d['attributes']['length']?_0x2ea44d[_0x4311('0x38')]:_0x1fe3c0[_0x4311('0x31')];if(_0xa58a09[_0x4311('0x33')]['includeAll']){_0x2ea44d[_0x4311('0x42')]=[{'all':!![]}];}_0x2ea44d=_['merge']({},_0x2ea44d,_0xa58a09[_0x4311('0x41')]);return db['CmCustomField']['find'](_0x2ea44d)[_0x4311('0x44')](handleEntityNotFound(_0x35b767,null))[_0x4311('0x44')](respondWithResult(_0x35b767,null))[_0x4311('0x46')](handleError(_0x35b767,null));};exports[_0x4311('0x49')]=function(_0x17e5e4,_0x5d3ca3){if(_0x17e5e4[_0x4311('0x4a')]['id']){delete _0x17e5e4[_0x4311('0x4a')]['id'];}return db[_0x4311('0x2c')][_0x4311('0x4b')]({'where':{'id':_0x17e5e4[_0x4311('0x48')]['id']}})[_0x4311('0x44')](handleEntityNotFound(_0x5d3ca3,null))[_0x4311('0x44')](saveUpdates(_0x17e5e4['body'],null))[_0x4311('0x44')](respondWithResult(_0x5d3ca3,null))['catch'](handleError(_0x5d3ca3,null));};exports[_0x4311('0x25')]=function(_0xf9302c,_0x2f75b9){return db[_0x4311('0x2c')][_0x4311('0x4b')]({'where':{'id':_0xf9302c[_0x4311('0x48')]['id']}})[_0x4311('0x44')](handleEntityNotFound(_0x2f75b9,null))[_0x4311('0x44')](removeEntity(_0x2f75b9,null))[_0x4311('0x46')](handleError(_0x2f75b9,null));};exports[_0x4311('0x4c')]=function(_0x425c00,_0x5cea0a){var _0x5b3b44;return db['sequelize'][_0x4311('0x4d')](function(_0xc2413b){return db[_0x4311('0x2c')]['create'](_0x425c00[_0x4311('0x4a')],{'transaction':_0xc2413b})[_0x4311('0x44')](function(_0x21ce4f){_0x5b3b44=_0x21ce4f;var _0x4cddbc={'type':db[_0x4311('0x4e')][_0x4311('0x4f')],'transaction':_0xc2413b};switch(_0x425c00[_0x4311('0x4a')][_0x4311('0x2f')]){case'text':_0x4cddbc[_0x4311('0x2f')]=db[_0x4311('0x4e')]['TEXT'];break;case _0x4311('0x50'):_0x4cddbc['type']=db[_0x4311('0x4e')][_0x4311('0x51')];break;case _0x4311('0x52'):_0x4cddbc[_0x4311('0x2f')]=db[_0x4311('0x4e')]['BOOLEAN'];_0x4cddbc['defaultValue']=![];break;default:}return db['sequelize'][_0x4311('0x53')][_0x4311('0x54')](_0x4311('0x55'),util['format']('cf_%d',_0x5b3b44['id']),_0x4cddbc);})[_0x4311('0x44')](function(){return _0x5b3b44;});})['then'](respondWithResult(_0x5cea0a,0xc9))[_0x4311('0x46')](handleError(_0x5cea0a,null));};
\ No newline at end of file
+var _0xfd71=['ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','reject','save','then','destroy','error','stack','name','send','index','map','CmCustomField','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','where','filter','merge','VIRTUAL','include','keys','includeAll','find','update','body','params','catch','create','transaction','TEXT','text','number','Sequelize','switch','BOOLEAN','defaultValue','sequelize','queryInterface','addColumn','format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse'];(function(_0x56482c,_0x16118d){var _0x5aae7a=function(_0x52512f){while(--_0x52512f){_0x56482c['push'](_0x56482c['shift']());}};_0x5aae7a(++_0x16118d);}(_0xfd71,0x132));var _0x1fd7=function(_0x380168,_0x40546c){_0x380168=_0x380168-0x0;var _0x12e86d=_0xfd71[_0x380168];return _0x12e86d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1fd7('0x0'));var zipdir=require(_0x1fd7('0x1'));var jsonpatch=require(_0x1fd7('0x2'));var rp=require(_0x1fd7('0x3'));var moment=require(_0x1fd7('0x4'));var BPromise=require(_0x1fd7('0x5'));var Mustache=require(_0x1fd7('0x6'));var util=require(_0x1fd7('0x7'));var path=require(_0x1fd7('0x8'));var sox=require(_0x1fd7('0x9'));var csv=require(_0x1fd7('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1fd7('0xb'));var _=require(_0x1fd7('0xc'));var squel=require(_0x1fd7('0xd'));var crypto=require(_0x1fd7('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x1fd7('0xf'));var toCsv=require(_0x1fd7('0xa'));var querystring=require(_0x1fd7('0x10'));var Papa=require(_0x1fd7('0x11'));var Redis=require(_0x1fd7('0x12'));var authService=require(_0x1fd7('0x13'));var qs=require(_0x1fd7('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1fd7('0x15'));var logger=require(_0x1fd7('0x16'))(_0x1fd7('0x17'));var utils=require(_0x1fd7('0x18'));var config=require(_0x1fd7('0x19'));var licenseUtil=require(_0x1fd7('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3e11e5,_0x561bb2){_0x561bb2=_0x561bb2||0xcc;return function(_0x3037bd){if(_0x3037bd){return _0x3e11e5['sendStatus'](_0x561bb2);}return _0x3e11e5[_0x1fd7('0x1b')](_0x561bb2)[_0x1fd7('0x1c')]();};}function respondWithResult(_0x11628d,_0x20de67){_0x20de67=_0x20de67||0xc8;return function(_0x20baf2){if(_0x20baf2){return _0x11628d[_0x1fd7('0x1b')](_0x20de67)[_0x1fd7('0x1d')](_0x20baf2);}};}function respondWithFilteredResult(_0x2a9ce1,_0x240be6){return function(_0x5dc0ae){if(_0x5dc0ae){var _0x1bbf66=typeof _0x240be6[_0x1fd7('0x1e')]===_0x1fd7('0x1f')&&typeof _0x240be6[_0x1fd7('0x20')]===_0x1fd7('0x1f');var _0x4ae0fe=_0x5dc0ae[_0x1fd7('0x21')];var _0x5a0d61=_0x1bbf66?0x0:_0x240be6[_0x1fd7('0x1e')];var _0x4fbfbd=_0x1bbf66?_0x5dc0ae['count']:_0x240be6[_0x1fd7('0x1e')]+_0x240be6[_0x1fd7('0x20')];var _0x1791c6;if(_0x4fbfbd>=_0x4ae0fe){_0x4fbfbd=_0x4ae0fe;_0x1791c6=0xc8;}else{_0x1791c6=0xce;}_0x2a9ce1[_0x1fd7('0x1b')](_0x1791c6);return _0x2a9ce1[_0x1fd7('0x22')]('Content-Range',_0x5a0d61+'-'+_0x4fbfbd+'/'+_0x4ae0fe)['json'](_0x5dc0ae);}return null;};}function patchUpdates(_0x12980d){return function(_0x496406){try{jsonpatch['apply'](_0x496406,_0x12980d,!![]);}catch(_0xd529b5){return BPromise[_0x1fd7('0x23')](_0xd529b5);}return _0x496406[_0x1fd7('0x24')]();};}function saveUpdates(_0xa4f4f7,_0x4209e1){return function(_0x33ec61){if(_0x33ec61){return _0x33ec61['update'](_0xa4f4f7)[_0x1fd7('0x25')](function(_0x33538e){return _0x33538e;});}return null;};}function removeEntity(_0x4660da,_0x47fd75){return function(_0x2cb779){if(_0x2cb779){return _0x2cb779[_0x1fd7('0x26')]()[_0x1fd7('0x25')](function(){_0x4660da['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a2902,_0x25b7b1){return function(_0x364ccb){if(!_0x364ccb){_0x5a2902['sendStatus'](0x194);}return _0x364ccb;};}function handleError(_0x44ebe8,_0x57ded8){_0x57ded8=_0x57ded8||0x1f4;return function(_0x426999){logger[_0x1fd7('0x27')](_0x426999[_0x1fd7('0x28')]);if(_0x426999[_0x1fd7('0x29')]){delete _0x426999[_0x1fd7('0x29')];}_0x44ebe8[_0x1fd7('0x1b')](_0x57ded8)[_0x1fd7('0x2a')](_0x426999);};}exports[_0x1fd7('0x2b')]=function(_0x47a11f,_0x5adfe7){var _0x31ad81={},_0x52c91d={},_0x869bde={'count':0x0,'rows':[]};var _0x3735cb=_[_0x1fd7('0x2c')](db[_0x1fd7('0x2d')][_0x1fd7('0x2e')],function(_0x5c4d96){return{'name':_0x5c4d96['fieldName'],'type':_0x5c4d96[_0x1fd7('0x2f')][_0x1fd7('0x30')]};});_0x52c91d[_0x1fd7('0x31')]=_['differenceBy'](_[_0x1fd7('0x2c')](_0x3735cb,_0x1fd7('0x29')),[_0x1fd7('0x29')]);_0x52c91d[_0x1fd7('0x32')]=_['keys'](_0x47a11f[_0x1fd7('0x32')]);_0x52c91d[_0x1fd7('0x33')]=_[_0x1fd7('0x34')](_0x52c91d[_0x1fd7('0x31')],_0x52c91d[_0x1fd7('0x32')]);_0x31ad81[_0x1fd7('0x35')]=_['intersection'](_0x52c91d[_0x1fd7('0x31')],qs['fields'](_0x47a11f['query'][_0x1fd7('0x36')]));_0x31ad81[_0x1fd7('0x35')]=_0x31ad81['attributes'][_0x1fd7('0x37')]?_0x31ad81['attributes']:_0x52c91d[_0x1fd7('0x31')];if(!_0x47a11f['query']['hasOwnProperty']('nolimit')){_0x31ad81['limit']=qs[_0x1fd7('0x20')](_0x47a11f[_0x1fd7('0x32')][_0x1fd7('0x20')]);_0x31ad81['offset']=qs[_0x1fd7('0x1e')](_0x47a11f['query'][_0x1fd7('0x1e')]);}_0x31ad81['order']=qs['sort'](_0x47a11f[_0x1fd7('0x32')]['sort']);_0x31ad81[_0x1fd7('0x38')]=qs[_0x1fd7('0x33')](_['pick'](_0x47a11f[_0x1fd7('0x32')],_0x52c91d['filters']),_0x3735cb);if(_0x47a11f[_0x1fd7('0x32')][_0x1fd7('0x39')]){_0x31ad81[_0x1fd7('0x38')]=_[_0x1fd7('0x3a')](_0x31ad81[_0x1fd7('0x38')],{'$or':_[_0x1fd7('0x2c')](_0x3735cb,function(_0x3fd5a4){if(_0x3fd5a4[_0x1fd7('0x2f')]!==_0x1fd7('0x3b')){var _0x2818c1={};_0x2818c1[_0x3fd5a4['name']]={'$like':'%'+_0x47a11f['query'][_0x1fd7('0x39')]+'%'};return _0x2818c1;}})});}_0x31ad81=_[_0x1fd7('0x3a')]({},_0x31ad81,_0x47a11f['options']);var _0x38b29d={'where':_0x31ad81[_0x1fd7('0x38')]};return db[_0x1fd7('0x2d')][_0x1fd7('0x21')](_0x38b29d)[_0x1fd7('0x25')](function(_0x4dde2b){_0x869bde['count']=_0x4dde2b;if(_0x47a11f[_0x1fd7('0x32')]['includeAll']){_0x31ad81[_0x1fd7('0x3c')]=[{'all':!![]}];}return db['CmCustomField']['findAll'](_0x31ad81);})[_0x1fd7('0x25')](function(_0x5420e4){_0x869bde['rows']=_0x5420e4;return _0x869bde;})[_0x1fd7('0x25')](respondWithFilteredResult(_0x5adfe7,_0x31ad81))['catch'](handleError(_0x5adfe7,null));};exports['show']=function(_0x837cee,_0x1d9fce){var _0x1e06ae={'raw':!![],'where':{'id':_0x837cee['params']['id']}},_0xa6a6d6={};_0xa6a6d6['model']=_[_0x1fd7('0x3d')](db[_0x1fd7('0x2d')]['rawAttributes']);_0xa6a6d6[_0x1fd7('0x32')]=_['keys'](_0x837cee[_0x1fd7('0x32')]);_0xa6a6d6[_0x1fd7('0x33')]=_['intersection'](_0xa6a6d6[_0x1fd7('0x31')],_0xa6a6d6[_0x1fd7('0x32')]);_0x1e06ae[_0x1fd7('0x35')]=_[_0x1fd7('0x34')](_0xa6a6d6[_0x1fd7('0x31')],qs[_0x1fd7('0x36')](_0x837cee[_0x1fd7('0x32')][_0x1fd7('0x36')]));_0x1e06ae[_0x1fd7('0x35')]=_0x1e06ae[_0x1fd7('0x35')][_0x1fd7('0x37')]?_0x1e06ae[_0x1fd7('0x35')]:_0xa6a6d6[_0x1fd7('0x31')];if(_0x837cee[_0x1fd7('0x32')][_0x1fd7('0x3e')]){_0x1e06ae['include']=[{'all':!![]}];}_0x1e06ae=_[_0x1fd7('0x3a')]({},_0x1e06ae,_0x837cee['options']);return db[_0x1fd7('0x2d')][_0x1fd7('0x3f')](_0x1e06ae)['then'](handleEntityNotFound(_0x1d9fce,null))[_0x1fd7('0x25')](respondWithResult(_0x1d9fce,null))['catch'](handleError(_0x1d9fce,null));};exports[_0x1fd7('0x40')]=function(_0x385c6d,_0x4ad6d3){if(_0x385c6d['body']['id']){delete _0x385c6d[_0x1fd7('0x41')]['id'];}return db['CmCustomField'][_0x1fd7('0x3f')]({'where':{'id':_0x385c6d[_0x1fd7('0x42')]['id']}})[_0x1fd7('0x25')](handleEntityNotFound(_0x4ad6d3,null))[_0x1fd7('0x25')](saveUpdates(_0x385c6d[_0x1fd7('0x41')],null))[_0x1fd7('0x25')](respondWithResult(_0x4ad6d3,null))[_0x1fd7('0x43')](handleError(_0x4ad6d3,null));};exports[_0x1fd7('0x26')]=function(_0x57f49b,_0x2bd8f4){return db[_0x1fd7('0x2d')][_0x1fd7('0x3f')]({'where':{'id':_0x57f49b[_0x1fd7('0x42')]['id']}})[_0x1fd7('0x25')](handleEntityNotFound(_0x2bd8f4,null))['then'](removeEntity(_0x2bd8f4,null))['catch'](handleError(_0x2bd8f4,null));};exports[_0x1fd7('0x44')]=function(_0x34552f,_0x2e622d){var _0x5991ff;return db['sequelize'][_0x1fd7('0x45')](function(_0x3b9d3c){return db[_0x1fd7('0x2d')][_0x1fd7('0x44')](_0x34552f[_0x1fd7('0x41')],{'transaction':_0x3b9d3c})[_0x1fd7('0x25')](function(_0x30e1c0){_0x5991ff=_0x30e1c0;var _0x39fc3d={'type':db['Sequelize'][_0x1fd7('0x46')],'transaction':_0x3b9d3c};switch(_0x34552f['body']['type']){case _0x1fd7('0x47'):_0x39fc3d['type']=db['Sequelize'][_0x1fd7('0x46')];break;case _0x1fd7('0x48'):_0x39fc3d[_0x1fd7('0x2f')]=db[_0x1fd7('0x49')]['INTEGER'];break;case _0x1fd7('0x4a'):_0x39fc3d[_0x1fd7('0x2f')]=db[_0x1fd7('0x49')][_0x1fd7('0x4b')];_0x39fc3d[_0x1fd7('0x4c')]=![];break;default:}return db[_0x1fd7('0x4d')][_0x1fd7('0x4e')][_0x1fd7('0x4f')]('cm_contacts',util[_0x1fd7('0x50')]('cf_%d',_0x5991ff['id']),_0x39fc3d);})['then'](function(){return _0x5991ff;});})[_0x1fd7('0x25')](respondWithResult(_0x2e622d,0xc9))[_0x1fd7('0x43')](handleError(_0x2e622d,null));};
\ No newline at end of file
index 1225694..2eaac21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e9c=['path','rimraf','exports','define','cm_custom_fields','lodash','api','moment','bluebird'];(function(_0x212efd,_0x494011){var _0x596365=function(_0x1aeb84){while(--_0x1aeb84){_0x212efd['push'](_0x212efd['shift']());}};_0x596365(++_0x494011);}(_0x7e9c,0x95));var _0xc7e9=function(_0x55e08b,_0x421620){_0x55e08b=_0x55e08b-0x0;var _0xd1a7ff=_0x7e9c[_0x55e08b];return _0xd1a7ff;};'use strict';var _=require(_0xc7e9('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xc7e9('0x1'));var moment=require(_0xc7e9('0x2'));var BPromise=require(_0xc7e9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc7e9('0x4'));var rimraf=require(_0xc7e9('0x5'));var config=require('../../config/environment');var attributes=require('./cmCustomField.attributes');module[_0xc7e9('0x6')]=function(_0x1cb744,_0x5a4779){return _0x1cb744[_0xc7e9('0x7')]('CmCustomField',attributes,{'tableName':_0xc7e9('0x8'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1827=['./cmCustomField.attributes','define','cm_custom_fields','util','../../config/logger','api','bluebird'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x1827,0xdc));var _0x7182=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x1827[_0x397e5f];return _0x5302b8;};'use strict';var _=require('lodash');var util=require(_0x7182('0x0'));var logger=require(_0x7182('0x1'))(_0x7182('0x2'));var moment=require('moment');var BPromise=require(_0x7182('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x7182('0x4'));module['exports']=function(_0x1e5ea6,_0x55ccb3){return _0x1e5ea6[_0x7182('0x5')]('CmCustomField',attributes,{'tableName':_0x7182('0x6'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 76c71a6..1a1e66b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ff0=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0x3adec3,_0x32c463){var _0xc01b43=function(_0x52fa1f){while(--_0x52fa1f){_0x3adec3['push'](_0x3adec3['shift']());}};_0xc01b43(++_0x32c463);}(_0x5ff0,0x1f4));var _0x05ff=function(_0xd29b04,_0x72455c){_0xd29b04=_0xd29b04-0x0;var _0x3ae5bd=_0x5ff0[_0xd29b04];return _0x3ae5bd;};'use strict';var _=require(_0x05ff('0x0'));var util=require(_0x05ff('0x1'));var moment=require(_0x05ff('0x2'));var BPromise=require(_0x05ff('0x3'));var rs=require(_0x05ff('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x05ff('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x05ff('0x6'))(_0x05ff('0x7'));var config=require(_0x05ff('0x8'));var jayson=require(_0x05ff('0x9'));var client=jayson['client'][_0x05ff('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x24ee3f,_0x466928,_0x53d1f3){return new BPromise(function(_0x1763a0,_0x1d884b){return client[_0x05ff('0xb')](_0x24ee3f,_0x53d1f3)[_0x05ff('0xc')](function(_0x2026f9){logger[_0x05ff('0xd')](_0x05ff('0xe'),_0x466928,_0x05ff('0xf'));logger[_0x05ff('0x10')](_0x05ff('0x11'),_0x466928,'request\x20sent',JSON[_0x05ff('0x12')](_0x2026f9));if(_0x2026f9[_0x05ff('0x13')]){if(_0x2026f9['error']['code']===0x1f4){logger[_0x05ff('0x13')](_0x05ff('0xe'),_0x466928,_0x2026f9[_0x05ff('0x13')][_0x05ff('0x14')]);return _0x1d884b(_0x2026f9[_0x05ff('0x13')][_0x05ff('0x14')]);}logger[_0x05ff('0x13')](_0x05ff('0xe'),_0x466928,_0x2026f9[_0x05ff('0x13')][_0x05ff('0x14')]);return _0x1763a0(_0x2026f9[_0x05ff('0x13')]['message']);}else{logger[_0x05ff('0xd')](_0x05ff('0xe'),_0x466928,'request\x20sent');_0x1763a0(_0x2026f9[_0x05ff('0x15')][_0x05ff('0x14')]);}})[_0x05ff('0x16')](function(_0x1c937b){logger[_0x05ff('0x13')](_0x05ff('0xe'),_0x466928,_0x1c937b);_0x1d884b(_0x1c937b);});});}
\ No newline at end of file
+var _0x3d44=['http','request','then','info','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x2b5eae,_0x55010d){var _0x5f3ac9=function(_0x397bfc){while(--_0x397bfc){_0x2b5eae['push'](_0x2b5eae['shift']());}};_0x5f3ac9(++_0x55010d);}(_0x3d44,0x139));var _0x43d4=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0x3d44[_0x4c12ec];return _0x3ae42c;};'use strict';var _=require('lodash');var util=require(_0x43d4('0x0'));var moment=require(_0x43d4('0x1'));var BPromise=require(_0x43d4('0x2'));var rs=require(_0x43d4('0x3'));var fs=require('fs');var Redis=require(_0x43d4('0x4'));var db=require(_0x43d4('0x5'))['db'];var utils=require(_0x43d4('0x6'));var logger=require(_0x43d4('0x7'))(_0x43d4('0x8'));var config=require(_0x43d4('0x9'));var jayson=require(_0x43d4('0xa'));var client=jayson[_0x43d4('0xb')][_0x43d4('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3c925e,_0x55fb53,_0x5e0ed5){return new BPromise(function(_0x28425d,_0x1cbb16){return client[_0x43d4('0xd')](_0x3c925e,_0x5e0ed5)[_0x43d4('0xe')](function(_0x36346b){logger[_0x43d4('0xf')](_0x43d4('0x10'),_0x55fb53,_0x43d4('0x11'));logger[_0x43d4('0x12')](_0x43d4('0x13'),_0x55fb53,_0x43d4('0x11'),JSON[_0x43d4('0x14')](_0x36346b));if(_0x36346b[_0x43d4('0x15')]){if(_0x36346b[_0x43d4('0x15')][_0x43d4('0x16')]===0x1f4){logger[_0x43d4('0x15')]('CmCustomField,\x20%s,\x20%s',_0x55fb53,_0x36346b[_0x43d4('0x15')][_0x43d4('0x17')]);return _0x1cbb16(_0x36346b['error'][_0x43d4('0x17')]);}logger[_0x43d4('0x15')](_0x43d4('0x10'),_0x55fb53,_0x36346b[_0x43d4('0x15')][_0x43d4('0x17')]);return _0x28425d(_0x36346b[_0x43d4('0x15')]['message']);}else{logger[_0x43d4('0xf')](_0x43d4('0x10'),_0x55fb53,'request\x20sent');_0x28425d(_0x36346b[_0x43d4('0x18')][_0x43d4('0x17')]);}})['catch'](function(_0x1ac425){logger['error'](_0x43d4('0x10'),_0x55fb53,_0x1ac425);_0x1cbb16(_0x1ac425);});});}
\ No newline at end of file
index 75f3e65..42e5f7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fed=['put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','post','create'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0x5fed,0xed));var _0xd5fe=function(_0x12b683,_0x124186){_0x12b683=_0x12b683-0x0;var _0xfb150b=_0x5fed[_0x12b683];return _0xfb150b;};'use strict';var multer=require(_0xd5fe('0x0'));var util=require(_0xd5fe('0x1'));var path=require(_0xd5fe('0x2'));var timeout=require(_0xd5fe('0x3'));var express=require(_0xd5fe('0x4'));var router=express[_0xd5fe('0x5')]();var fs_extra=require(_0xd5fe('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xd5fe('0x7'));var config=require(_0xd5fe('0x8'));var controller=require('./cmCustomField.controller');router[_0xd5fe('0x9')]('/',auth[_0xd5fe('0xa')](),controller[_0xd5fe('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xd5fe('0xc')]);router[_0xd5fe('0xd')]('/',auth['isAuthenticated'](),controller[_0xd5fe('0xe')]);router[_0xd5fe('0xf')](_0xd5fe('0x10'),auth['isAuthenticated'](),controller[_0xd5fe('0x11')]);router[_0xd5fe('0x12')](_0xd5fe('0x10'),auth[_0xd5fe('0xa')](),controller[_0xd5fe('0x13')]);module[_0xd5fe('0x14')]=router;
\ No newline at end of file
+var _0xc906=['./cmCustomField.controller','get','isAuthenticated','post','create','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc906,0x1ad));var _0x6c90=function(_0x48d29a,_0x1e96fc){_0x48d29a=_0x48d29a-0x0;var _0x11a7bf=_0xc906[_0x48d29a];return _0x11a7bf;};'use strict';var multer=require(_0x6c90('0x0'));var util=require(_0x6c90('0x1'));var path=require('path');var timeout=require(_0x6c90('0x2'));var express=require(_0x6c90('0x3'));var router=express[_0x6c90('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6c90('0x5'));var interaction=require(_0x6c90('0x6'));var config=require(_0x6c90('0x7'));var controller=require(_0x6c90('0x8'));router[_0x6c90('0x9')]('/',auth[_0x6c90('0xa')](),controller['index']);router['get']('/:id',auth[_0x6c90('0xa')](),controller['show']);router[_0x6c90('0xb')]('/',auth[_0x6c90('0xa')](),controller[_0x6c90('0xc')]);router[_0x6c90('0xd')](_0x6c90('0xe'),auth[_0x6c90('0xa')](),controller[_0x6c90('0xf')]);router[_0x6c90('0x10')](_0x6c90('0xe'),auth[_0x6c90('0xa')](),controller[_0x6c90('0x11')]);module[_0x6c90('0x12')]=router;
\ No newline at end of file
index acc7efe..38f309c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc207=['BOOLEAN','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','UNSIGNED','contactListQueue','moment','sequelize','STRING'];(function(_0xfc30db,_0x42fffd){var _0x419a8d=function(_0x505ea0){while(--_0x505ea0){_0xfc30db['push'](_0xfc30db['shift']());}};_0x419a8d(++_0x42fffd);}(_0xc207,0x1ad));var _0x7c20=function(_0x20be28,_0x24b925){_0x20be28=_0x20be28-0x0;var _0x8ab067=_0xc207[_0x20be28];return _0x8ab067;};'use strict';var moment=require(_0x7c20('0x0'));var Sequelize=require(_0x7c20('0x1'));module['exports']={'phone':{'type':Sequelize[_0x7c20('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0x7c20('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x7c20('0x4')](_0x7c20('0x5'))},'countbusyretry':{'type':Sequelize[_0x7c20('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x7c20('0x6')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x7c20('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x7c20('0x3')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x7c20('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'priority':{'type':Sequelize[_0x7c20('0x6')](0x2)[_0x7c20('0x7')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x7c20('0x6')],'unique':_0x7c20('0x8')},'ListId':{'type':Sequelize[_0x7c20('0x6')],'unique':_0x7c20('0x8')},'UserId':{'type':Sequelize[_0x7c20('0x6')]},'VoiceQueueId':{'type':Sequelize[_0x7c20('0x6')],'unique':_0x7c20('0x8')},'CampaignId':{'type':Sequelize[_0x7c20('0x6')]},'countnosuchnumberretry':{'type':Sequelize[_0x7c20('0x6')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x7c20('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xae88=['sequelize','exports','STRING','BOOLEAN','format','INTEGER','UNSIGNED','contactListQueue','moment'];(function(_0x4727f1,_0x2ff773){var _0x2977ce=function(_0x29be89){while(--_0x29be89){_0x4727f1['push'](_0x4727f1['shift']());}};_0x2977ce(++_0x2ff773);}(_0xae88,0xa1));var _0x8ae8=function(_0x430d54,_0x532e2f){_0x430d54=_0x430d54-0x0;var _0x1e0f1e=_0xae88[_0x430d54];return _0x1e0f1e;};'use strict';var moment=require(_0x8ae8('0x0'));var Sequelize=require(_0x8ae8('0x1'));module[_0x8ae8('0x2')]={'phone':{'type':Sequelize[_0x8ae8('0x3')],'allowNull':![]},'active':{'type':Sequelize[_0x8ae8('0x4')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x8ae8('0x5')]('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0x8ae8('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x8ae8('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x8ae8('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'priority':{'type':Sequelize[_0x8ae8('0x6')](0x2)[_0x8ae8('0x7')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x8ae8('0x6')],'unique':_0x8ae8('0x8')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x8ae8('0x8')},'UserId':{'type':Sequelize[_0x8ae8('0x6')]},'VoiceQueueId':{'type':Sequelize[_0x8ae8('0x6')],'unique':'contactListQueue'},'CampaignId':{'type':Sequelize[_0x8ae8('0x6')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x8ae8('0x6')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x8ae8('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x8ae8('0x6')],'defaultValue':0x0}};
\ No newline at end of file
index a3e5e30..8c48c85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14d=['preview','dialPreviewAutoRecallMe','sequelize','format','direction','prev','isEmpty','hopperIds','ASC','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','priority','dialOrderByScheduledAt','scheduledat','recallme','LOCK','UPDATE','Contact','Company','CmList','VoiceQueue','Queue','dialActive','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','CmHopper','rawAttributes','fieldName','type','model','query','filters','intersection','concat','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','$contained','attributes','fields','length','nolimit','order','sort','pick','filter','merge','where','options','include','findAll','rows','catch','keys','includeAll','find','create','body','describe','params','VoiceQueueId','Campaign','CampaignId','omit','dataValues','updatedAt','state','statedesc','campaign','membername','user','UserId','deleted','deletedat','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','getPreview','CmContact','getVoiceQueues'];(function(_0x12c7c7,_0x4e0831){var _0x28cfb4=function(_0x46f2f2){while(--_0x46f2f2){_0x12c7c7['push'](_0x12c7c7['shift']());}};_0x28cfb4(++_0x4e0831);}(_0xe14d,0x1ee));var _0xde14=function(_0x288f5e,_0x205edd){_0x288f5e=_0x288f5e-0x0;var _0x476cc9=_0xe14d[_0x288f5e];return _0x476cc9;};'use strict';var emlformat=require(_0xde14('0x0'));var rimraf=require(_0xde14('0x1'));var zipdir=require(_0xde14('0x2'));var jsonpatch=require(_0xde14('0x3'));var rp=require('request-promise');var moment=require(_0xde14('0x4'));var BPromise=require(_0xde14('0x5'));var Mustache=require('mustache');var util=require(_0xde14('0x6'));var path=require(_0xde14('0x7'));var sox=require(_0xde14('0x8'));var csv=require(_0xde14('0x9'));var ejs=require(_0xde14('0xa'));var fs=require('fs');var fs_extra=require(_0xde14('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xde14('0xc'));var jsforce=require(_0xde14('0xd'));var deskjs=require(_0xde14('0xe'));var toCsv=require(_0xde14('0x9'));var querystring=require(_0xde14('0xf'));var Papa=require(_0xde14('0x10'));var Redis=require(_0xde14('0x11'));var authService=require(_0xde14('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xde14('0x13'));var hardwareService=require(_0xde14('0x14'));var logger=require(_0xde14('0x15'))(_0xde14('0x16'));var utils=require(_0xde14('0x17'));var config=require(_0xde14('0x18'));var licenseUtil=require(_0xde14('0x19'));var db=require(_0xde14('0x1a'))['db'];function respondWithStatusCode(_0x34e28f,_0x29e3ca){_0x29e3ca=_0x29e3ca||0xcc;return function(_0x105f96){if(_0x105f96){return _0x34e28f[_0xde14('0x1b')](_0x29e3ca);}return _0x34e28f[_0xde14('0x1c')](_0x29e3ca)[_0xde14('0x1d')]();};}function respondWithResult(_0x1489e9,_0x54c58b){_0x54c58b=_0x54c58b||0xc8;return function(_0x584959){if(_0x584959){return _0x1489e9[_0xde14('0x1c')](_0x54c58b)[_0xde14('0x1e')](_0x584959);}};}function respondWithFilteredResult(_0x26c1ec,_0x4c86ff){return function(_0x16aa55){if(_0x16aa55){var _0x31adb3=typeof _0x4c86ff[_0xde14('0x1f')]===_0xde14('0x20')&&typeof _0x4c86ff[_0xde14('0x21')]===_0xde14('0x20');var _0x29e243=_0x16aa55[_0xde14('0x22')];var _0x3cc317=_0x31adb3?0x0:_0x4c86ff[_0xde14('0x1f')];var _0x590a8b=_0x31adb3?_0x16aa55[_0xde14('0x22')]:_0x4c86ff[_0xde14('0x1f')]+_0x4c86ff[_0xde14('0x21')];var _0x44ce4c;if(_0x590a8b>=_0x29e243){_0x590a8b=_0x29e243;_0x44ce4c=0xc8;}else{_0x44ce4c=0xce;}_0x26c1ec['status'](_0x44ce4c);return _0x26c1ec[_0xde14('0x23')]('Content-Range',_0x3cc317+'-'+_0x590a8b+'/'+_0x29e243)[_0xde14('0x1e')](_0x16aa55);}return null;};}function patchUpdates(_0x4c24a8){return function(_0xa50687){try{jsonpatch[_0xde14('0x24')](_0xa50687,_0x4c24a8,!![]);}catch(_0x51ee8d){return BPromise[_0xde14('0x25')](_0x51ee8d);}return _0xa50687[_0xde14('0x26')]();};}function saveUpdates(_0x11a4d9,_0x40b648){return function(_0x2dd9e7){if(_0x2dd9e7){return _0x2dd9e7[_0xde14('0x27')](_0x11a4d9)[_0xde14('0x28')](function(_0x475f2f){return _0x475f2f;});}return null;};}function removeEntity(_0xbaa078,_0x8f8033){return function(_0x5ae4c1){if(_0x5ae4c1){return _0x5ae4c1[_0xde14('0x29')]()[_0xde14('0x28')](function(){_0xbaa078[_0xde14('0x1c')](0xcc)[_0xde14('0x1d')]();});}};}function handleEntityNotFound(_0x1bb7be,_0x21ef15){return function(_0x310d75){if(!_0x310d75){_0x1bb7be[_0xde14('0x1b')](0x194);}return _0x310d75;};}function handleError(_0x1618e1,_0x350a78){_0x350a78=_0x350a78||0x1f4;return function(_0x4eff65){logger[_0xde14('0x2a')](_0x4eff65[_0xde14('0x2b')]);if(_0x4eff65[_0xde14('0x2c')]){delete _0x4eff65[_0xde14('0x2c')];}_0x1618e1['status'](_0x350a78)[_0xde14('0x2d')](_0x4eff65);};}exports[_0xde14('0x2e')]=function(_0x30c4a8,_0x553cab){var _0x4655fb={},_0x582537={},_0x2760f9={'count':0x0,'rows':[]};var _0x361b2c=_[_0xde14('0x2f')](db[_0xde14('0x30')][_0xde14('0x31')],function(_0x237d3f){return{'name':_0x237d3f[_0xde14('0x32')],'type':_0x237d3f[_0xde14('0x33')]['key']};});_0x582537[_0xde14('0x34')]=_[_0xde14('0x2f')](_0x361b2c,'name');_0x582537[_0xde14('0x35')]=_['keys'](_0x30c4a8[_0xde14('0x35')]);_0x582537[_0xde14('0x36')]=_[_0xde14('0x37')](_0x582537[_0xde14('0x34')],_0x582537[_0xde14('0x35')]);_0x582537['filters']=_[_0xde14('0x38')](_0x582537[_0xde14('0x36')],['$and',_0xde14('0x39'),_0xde14('0x3a'),_0xde14('0x3b'),_0xde14('0x3c'),_0xde14('0x3d'),_0xde14('0x3e'),_0xde14('0x3f'),_0xde14('0x40'),_0xde14('0x41'),'$notBetween','$in',_0xde14('0x42'),_0xde14('0x43'),_0xde14('0x44'),_0xde14('0x45'),_0xde14('0x46'),_0xde14('0x43'),_0xde14('0x47'),_0xde14('0x48'),_0xde14('0x49'),'$any']);_0x4655fb[_0xde14('0x4a')]=_['intersection'](_0x582537['model'],qs['fields'](_0x30c4a8[_0xde14('0x35')][_0xde14('0x4b')]));_0x4655fb[_0xde14('0x4a')]=_0x4655fb[_0xde14('0x4a')][_0xde14('0x4c')]?_0x4655fb[_0xde14('0x4a')]:_0x582537[_0xde14('0x34')];if(!_0x30c4a8[_0xde14('0x35')]['hasOwnProperty'](_0xde14('0x4d'))){_0x4655fb[_0xde14('0x21')]=qs[_0xde14('0x21')](_0x30c4a8[_0xde14('0x35')][_0xde14('0x21')]);_0x4655fb[_0xde14('0x1f')]=qs[_0xde14('0x1f')](_0x30c4a8[_0xde14('0x35')]['offset']);}_0x4655fb[_0xde14('0x4e')]=qs[_0xde14('0x4f')](_0x30c4a8[_0xde14('0x35')][_0xde14('0x4f')]);_0x4655fb['where']=qs['filters'](_[_0xde14('0x50')](_0x30c4a8[_0xde14('0x35')],_0x582537[_0xde14('0x36')]),_0x361b2c);if(_0x30c4a8[_0xde14('0x35')][_0xde14('0x51')]){_0x4655fb['where']=_[_0xde14('0x52')](_0x4655fb[_0xde14('0x53')],{'$or':_[_0xde14('0x2f')](_0x361b2c,function(_0x595fd5){if(_0x595fd5[_0xde14('0x33')]!=='VIRTUAL'){var _0x46ac22={};_0x46ac22[_0x595fd5['name']]={'$like':'%'+_0x30c4a8[_0xde14('0x35')][_0xde14('0x51')]+'%'};return _0x46ac22;}})});}_0x4655fb=_[_0xde14('0x52')]({},_0x4655fb,_0x30c4a8[_0xde14('0x54')]);var _0x44bf69={'where':_0x4655fb[_0xde14('0x53')]};return db[_0xde14('0x30')][_0xde14('0x22')](_0x44bf69)['then'](function(_0x46067d){_0x2760f9['count']=_0x46067d;if(_0x30c4a8[_0xde14('0x35')]['includeAll']){_0x4655fb[_0xde14('0x55')]=[{'all':!![]}];}return db[_0xde14('0x30')][_0xde14('0x56')](_0x4655fb);})[_0xde14('0x28')](function(_0x40e7ae){_0x2760f9[_0xde14('0x57')]=_0x40e7ae;return _0x2760f9;})[_0xde14('0x28')](respondWithFilteredResult(_0x553cab,_0x4655fb))[_0xde14('0x58')](handleError(_0x553cab,null));};exports['show']=function(_0x15859c,_0xe3669c){var _0x220ca7={'raw':!![],'where':{'id':_0x15859c['params']['id']}},_0x4b1ef7={};_0x4b1ef7[_0xde14('0x34')]=_[_0xde14('0x59')](db[_0xde14('0x30')][_0xde14('0x31')]);_0x4b1ef7[_0xde14('0x35')]=_[_0xde14('0x59')](_0x15859c['query']);_0x4b1ef7[_0xde14('0x36')]=_['intersection'](_0x4b1ef7[_0xde14('0x34')],_0x4b1ef7[_0xde14('0x35')]);_0x220ca7['attributes']=_[_0xde14('0x37')](_0x4b1ef7[_0xde14('0x34')],qs[_0xde14('0x4b')](_0x15859c[_0xde14('0x35')][_0xde14('0x4b')]));_0x220ca7[_0xde14('0x4a')]=_0x220ca7[_0xde14('0x4a')]['length']?_0x220ca7[_0xde14('0x4a')]:_0x4b1ef7['model'];if(_0x15859c[_0xde14('0x35')][_0xde14('0x5a')]){_0x220ca7[_0xde14('0x55')]=[{'all':!![]}];}_0x220ca7=_[_0xde14('0x52')]({},_0x220ca7,_0x15859c[_0xde14('0x54')]);return db[_0xde14('0x30')][_0xde14('0x5b')](_0x220ca7)[_0xde14('0x28')](handleEntityNotFound(_0xe3669c,null))[_0xde14('0x28')](respondWithResult(_0xe3669c,null))[_0xde14('0x58')](handleError(_0xe3669c,null));};exports['create']=function(_0xd37eb6,_0x1688c6){return db[_0xde14('0x30')][_0xde14('0x5c')](_0xd37eb6[_0xde14('0x5d')],{})['then'](respondWithResult(_0x1688c6,0xc9))[_0xde14('0x58')](handleError(_0x1688c6,null));};exports['update']=function(_0x2297af,_0x31e7a6){if(_0x2297af[_0xde14('0x5d')]['id']){delete _0x2297af[_0xde14('0x5d')]['id'];}return db[_0xde14('0x30')]['find']({'where':{'id':_0x2297af['params']['id']}})[_0xde14('0x28')](handleEntityNotFound(_0x31e7a6,null))['then'](saveUpdates(_0x2297af[_0xde14('0x5d')],null))[_0xde14('0x28')](respondWithResult(_0x31e7a6,null))[_0xde14('0x58')](handleError(_0x31e7a6,null));};exports[_0xde14('0x5e')]=function(_0x345d08,_0x1ed775){return db[_0xde14('0x30')][_0xde14('0x5e')]()[_0xde14('0x28')](respondWithResult(_0x1ed775,null))['catch'](handleError(_0x1ed775,null));};exports[_0xde14('0x29')]=function(_0x2c972b,_0x1ea6d2){var _0x21d226;return db[_0xde14('0x30')]['find']({'where':{'id':_0x2c972b[_0xde14('0x5f')]['id']}})['then'](handleEntityNotFound(_0x1ea6d2,null))[_0xde14('0x28')](function(_0x27fb42){if(_0x27fb42){return _0x27fb42[_0xde14('0x29')]()[_0xde14('0x28')](function(_0x32d48f){return _0x32d48f;});}})[_0xde14('0x28')](function(_0x27ab1a){_0x21d226=_0x27ab1a;if(_0x27ab1a){if(_0x27ab1a[_0xde14('0x60')]||_0x27ab1a['CampaignId']){return db[_0x27ab1a['VoiceQueueId']?'VoiceQueue':_0xde14('0x61')]['find']({'where':{'id':_0x27ab1a['VoiceQueueId']?_0x27ab1a[_0xde14('0x60')]:_0x27ab1a[_0xde14('0x62')]},'attributes':['id',_0xde14('0x2c')],'raw':!![]});}}})[_0xde14('0x28')](function(_0x1de7ef){var _0x70b4f1={};if(_0x1de7ef){_[_0xde14('0x52')](_0x70b4f1,_[_0xde14('0x63')](_0x21d226[_0xde14('0x64')],['createdAt',_0xde14('0x65'),'id']));_0x70b4f1[_0xde14('0x66')]=0x15;_0x70b4f1[_0xde14('0x67')]='deleted';_0x70b4f1[_0xde14('0x68')]=_0x1de7ef['name'];_0x70b4f1[_0xde14('0x69')]=_0x2c972b[_0xde14('0x6a')][_0xde14('0x2c')];_0x70b4f1[_0xde14('0x6b')]=_0x2c972b[_0xde14('0x6a')]['id'];_0x70b4f1[_0xde14('0x6c')]=!![];_0x70b4f1[_0xde14('0x6d')]=moment()['format'](_0xde14('0x6e'));_0x70b4f1[_0xde14('0x6f')]=_0x21d226[_0xde14('0x70')];_0x70b4f1[_0xde14('0x71')]=_0x21d226[_0xde14('0x60')]?_0xde14('0x72'):_0xde14('0x73');return db['CmContact']['find']({'where':{'id':_0x70b4f1[_0xde14('0x74')]},'attributes':[_0xde14('0x75'),_0xde14('0x76')]})['then'](function(_0x100111){if(!_[_0xde14('0x77')](_0x1ea6d2)&&!_[_0xde14('0x77')](_0x100111[_0xde14('0x75')])){_0x70b4f1['calleridname']=_0x100111['firstName'];if(!_[_0xde14('0x77')](_0x100111[_0xde14('0x76')])){_0x70b4f1[_0xde14('0x78')]+='\x20'+_0x100111[_0xde14('0x76')];}}})[_0xde14('0x79')](function(){return db[_0xde14('0x7a')][_0xde14('0x5c')](_0x70b4f1);});}})[_0xde14('0x28')](function(){return _0x1ea6d2[_0xde14('0x1c')](0xcc)[_0xde14('0x1d')]();})[_0xde14('0x58')](handleError(_0x1ea6d2,null));};exports[_0xde14('0x7b')]=function(_0x1ff577,_0x42329a,_0x6a641f){var _0x280e61=[];return db[_0xde14('0x7c')][_0xde14('0x5e')]()[_0xde14('0x28')](function(_0x1b5d70){_0x280e61=_[_0xde14('0x59')](_0x1b5d70);return _0x1ff577[_0xde14('0x6a')][_0xde14('0x7d')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xde14('0x7e')},'attributes':['id','dialOrderByScheduledAt',_0xde14('0x7f')],'raw':!![]});})['then'](function(_0x3bbbab){if(_0x3bbbab&&_0x3bbbab[_0xde14('0x4c')]){return db[_0xde14('0x80')]['transaction'](function(_0x5e16e2){var _0x23d3e1={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xde14('0x81')](_0xde14('0x6e'))},'VoiceQueueId':{'$in':_[_0xde14('0x2f')](_0x3bbbab,'id')},'$or':[{'UserId':null},{'UserId':_0x1ff577['user']['id']}]};var _0x162f3b={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x3bbbab)[_0xde14('0x51')]([_0xde14('0x7f'),0x0])['map']('id')['value']()},'$or':[{'UserId':null},{'UserId':_0x1ff577['user']['id']}]};var _0x58ccb4={'$or':[_0x23d3e1,_0x162f3b]};var _0x24b354=[];if(_0x1ff577[_0xde14('0x5d')][_0xde14('0x82')]&&_0x1ff577['body'][_0xde14('0x82')]===_0xde14('0x83')){if(!_[_0xde14('0x84')](_0x1ff577[_0xde14('0x5d')][_0xde14('0x85')])){_0x58ccb4['id']={'$in':_0x1ff577[_0xde14('0x5d')]['hopperIds']};}_0x24b354=[['priority',_0xde14('0x86')],[_0xde14('0x87'),_0x3bbbab[0x0]['dialOrderByScheduledAt']===_0xde14('0x86')?_0xde14('0x88'):_0xde14('0x86')],db[_0xde14('0x80')][_0xde14('0x89')](_0xde14('0x8a')),['id',_0xde14('0x88')]];}else{if(!_['isEmpty'](_0x1ff577['body']['hopperIds'])){_0x58ccb4['id']={'$notIn':_0x1ff577['body'][_0xde14('0x85')]};}_0x24b354=[[_0xde14('0x8b'),'DESC'],['scheduledAt',_0x3bbbab[0x0][_0xde14('0x8c')]],db[_0xde14('0x80')][_0xde14('0x89')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0xde14('0x86')]];}return db[_0xde14('0x30')]['findOne']({'attributes':['id',_0xde14('0x8d'),_0xde14('0x8e')],'where':_0x58ccb4,'order':_0x24b354,'transaction':_0x5e16e2,'lock':_0x5e16e2[_0xde14('0x8f')][_0xde14('0x90')],'include':[{'model':db['CmContact'],'as':_0xde14('0x91'),'attributes':_0x280e61,'include':[{'model':db['CmCompany'],'as':_0xde14('0x92'),'attributes':['id',_0xde14('0x2c')]}]},{'model':db[_0xde14('0x93')],'as':'List','attributes':['id',_0xde14('0x2c')]},{'model':db[_0xde14('0x94')],'as':_0xde14('0x95'),'attributes':['id',_0xde14('0x2c'),_0xde14('0x96')]}]})['then'](function(_0x53433d){if(_0x53433d){return _0x53433d[_0xde14('0x27')]({'UserId':_0x1ff577[_0xde14('0x6a')]['id']},{'transaction':_0x5e16e2});}});});}})[_0xde14('0x28')](handleEntityNotFound(_0x42329a,null))['then'](respondWithResult(_0x42329a,null))[_0xde14('0x58')](handleError(_0x42329a,null));};exports[_0xde14('0x97')]=function(_0x43cc47,_0x85f5d5,_0x27f2ba){return _0x43cc47[_0xde14('0x6a')][_0xde14('0x7d')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xde14('0x7e')},'attributes':['id'],'raw':!![]})[_0xde14('0x28')](function(_0x8aad40){if(_0x8aad40&&_0x8aad40[_0xde14('0x4c')]){return db[_0xde14('0x30')][_0xde14('0x22')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xde14('0x81')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0xde14('0x2f')](_0x8aad40,'id')},'$or':[{'UserId':null},{'UserId':_0x43cc47[_0xde14('0x6a')]['id']}]}});}return 0x0;})['then'](function(_0x4543f1){if(!_['isNil'](_0x4543f1)&&_[_0xde14('0x98')](_0x4543f1)){return _0x85f5d5['status'](0xc8)[_0xde14('0x1e')]({'contacts':_0x4543f1});}else{logger[_0xde14('0x2a')](_0xde14('0x99'),_0xde14('0x97'),0x194,_0xde14('0x9a'));_0x85f5d5[_0xde14('0x1b')](0x194);}})['catch'](handleError(_0x85f5d5,null));};
\ No newline at end of file
+var _0xd73a=['where','merge','type','VIRTUAL','options','CmHopper','includeAll','findAll','rows','catch','show','params','keys','include','find','body','describe','VoiceQueueId','Campaign','CampaignId','dataValues','createdAt','statedesc','deleted','membername','user','UserId','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','ContactId','lastName','isNil','firstName','calleridname','finally','CmHopperFinal','create','getPreview','getVoiceQueues','outbound','preview','dialPreviewAutoRecallMe','sequelize','filter','value','prev','isEmpty','hopperIds','priority','scheduledAt','dialOrderByScheduledAt','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','recallme','LOCK','Contact','Company','CmList','List','VoiceQueue','Queue','dialActive','getOpenContacts','CmHopper,\x20%s,\x20%s,\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','send','map','rawAttributes','fieldName','key','model','name','query','intersection','concat','filters','$gt','$gte','$ne','$not','$between','$in','$like','$notLike','$iLike','$notILike','$overlap','$contains','$contained','$any','fields','attributes','length','hasOwnProperty','order','sort','pick'];(function(_0x53f0b8,_0x30a2eb){var _0x581b8b=function(_0x40bb1c){while(--_0x40bb1c){_0x53f0b8['push'](_0x53f0b8['shift']());}};_0x581b8b(++_0x30a2eb);}(_0xd73a,0x171));var _0xad73=function(_0x26761f,_0x42f5fd){_0x26761f=_0x26761f-0x0;var _0x232e29=_0xd73a[_0x26761f];return _0x232e29;};'use strict';var emlformat=require(_0xad73('0x0'));var rimraf=require(_0xad73('0x1'));var zipdir=require(_0xad73('0x2'));var jsonpatch=require(_0xad73('0x3'));var rp=require(_0xad73('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xad73('0x5'));var util=require(_0xad73('0x6'));var path=require(_0xad73('0x7'));var sox=require(_0xad73('0x8'));var csv=require(_0xad73('0x9'));var ejs=require(_0xad73('0xa'));var fs=require('fs');var fs_extra=require(_0xad73('0xb'));var _=require(_0xad73('0xc'));var squel=require(_0xad73('0xd'));var crypto=require(_0xad73('0xe'));var jsforce=require(_0xad73('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xad73('0x9'));var querystring=require('querystring');var Papa=require(_0xad73('0x10'));var Redis=require(_0xad73('0x11'));var authService=require(_0xad73('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xad73('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xad73('0x14'))('api');var utils=require(_0xad73('0x15'));var config=require(_0xad73('0x16'));var licenseUtil=require(_0xad73('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1045be,_0x241ff5){_0x241ff5=_0x241ff5||0xcc;return function(_0x488787){if(_0x488787){return _0x1045be[_0xad73('0x18')](_0x241ff5);}return _0x1045be[_0xad73('0x19')](_0x241ff5)[_0xad73('0x1a')]();};}function respondWithResult(_0x27a9d2,_0x15f72d){_0x15f72d=_0x15f72d||0xc8;return function(_0x82fe13){if(_0x82fe13){return _0x27a9d2['status'](_0x15f72d)[_0xad73('0x1b')](_0x82fe13);}};}function respondWithFilteredResult(_0x35c2c5,_0x4336fa){return function(_0x155548){if(_0x155548){var _0x2f0dcd=typeof _0x4336fa[_0xad73('0x1c')]===_0xad73('0x1d')&&typeof _0x4336fa[_0xad73('0x1e')]===_0xad73('0x1d');var _0xad072c=_0x155548['count'];var _0x47381a=_0x2f0dcd?0x0:_0x4336fa['offset'];var _0x5bd242=_0x2f0dcd?_0x155548[_0xad73('0x1f')]:_0x4336fa[_0xad73('0x1c')]+_0x4336fa[_0xad73('0x1e')];var _0x578068;if(_0x5bd242>=_0xad072c){_0x5bd242=_0xad072c;_0x578068=0xc8;}else{_0x578068=0xce;}_0x35c2c5[_0xad73('0x19')](_0x578068);return _0x35c2c5[_0xad73('0x20')]('Content-Range',_0x47381a+'-'+_0x5bd242+'/'+_0xad072c)[_0xad73('0x1b')](_0x155548);}return null;};}function patchUpdates(_0x4289df){return function(_0x3e02ed){try{jsonpatch[_0xad73('0x21')](_0x3e02ed,_0x4289df,!![]);}catch(_0x2e6cdb){return BPromise[_0xad73('0x22')](_0x2e6cdb);}return _0x3e02ed[_0xad73('0x23')]();};}function saveUpdates(_0x497c3d,_0xfe2758){return function(_0x31f5c4){if(_0x31f5c4){return _0x31f5c4[_0xad73('0x24')](_0x497c3d)[_0xad73('0x25')](function(_0xb3e0b0){return _0xb3e0b0;});}return null;};}function removeEntity(_0x2a1295,_0xbfb297){return function(_0x439f09){if(_0x439f09){return _0x439f09[_0xad73('0x26')]()[_0xad73('0x25')](function(){_0x2a1295[_0xad73('0x19')](0xcc)[_0xad73('0x1a')]();});}};}function handleEntityNotFound(_0x182805,_0xfec523){return function(_0x1b7d84){if(!_0x1b7d84){_0x182805[_0xad73('0x18')](0x194);}return _0x1b7d84;};}function handleError(_0x34f8c4,_0x920ffc){_0x920ffc=_0x920ffc||0x1f4;return function(_0xb7700c){logger[_0xad73('0x27')](_0xb7700c['stack']);if(_0xb7700c['name']){delete _0xb7700c['name'];}_0x34f8c4[_0xad73('0x19')](_0x920ffc)[_0xad73('0x28')](_0xb7700c);};}exports['index']=function(_0x3f1f80,_0x54a8f9){var _0x54eadc={},_0x1f826c={},_0x377273={'count':0x0,'rows':[]};var _0x34fe4d=_[_0xad73('0x29')](db['CmHopper'][_0xad73('0x2a')],function(_0x3fab83){return{'name':_0x3fab83[_0xad73('0x2b')],'type':_0x3fab83['type'][_0xad73('0x2c')]};});_0x1f826c[_0xad73('0x2d')]=_[_0xad73('0x29')](_0x34fe4d,_0xad73('0x2e'));_0x1f826c[_0xad73('0x2f')]=_['keys'](_0x3f1f80['query']);_0x1f826c['filters']=_[_0xad73('0x30')](_0x1f826c['model'],_0x1f826c[_0xad73('0x2f')]);_0x1f826c['filters']=_[_0xad73('0x31')](_0x1f826c[_0xad73('0x32')],['$and','$or',_0xad73('0x33'),_0xad73('0x34'),'$lt','$lte',_0xad73('0x35'),'$eq',_0xad73('0x36'),_0xad73('0x37'),'$notBetween',_0xad73('0x38'),'$notIn',_0xad73('0x39'),_0xad73('0x3a'),_0xad73('0x3b'),_0xad73('0x3c'),_0xad73('0x39'),_0xad73('0x3d'),_0xad73('0x3e'),_0xad73('0x3f'),_0xad73('0x40')]);_0x54eadc['attributes']=_[_0xad73('0x30')](_0x1f826c[_0xad73('0x2d')],qs['fields'](_0x3f1f80[_0xad73('0x2f')][_0xad73('0x41')]));_0x54eadc[_0xad73('0x42')]=_0x54eadc[_0xad73('0x42')][_0xad73('0x43')]?_0x54eadc[_0xad73('0x42')]:_0x1f826c[_0xad73('0x2d')];if(!_0x3f1f80[_0xad73('0x2f')][_0xad73('0x44')]('nolimit')){_0x54eadc[_0xad73('0x1e')]=qs[_0xad73('0x1e')](_0x3f1f80[_0xad73('0x2f')]['limit']);_0x54eadc['offset']=qs[_0xad73('0x1c')](_0x3f1f80['query']['offset']);}_0x54eadc[_0xad73('0x45')]=qs[_0xad73('0x46')](_0x3f1f80[_0xad73('0x2f')][_0xad73('0x46')]);_0x54eadc['where']=qs[_0xad73('0x32')](_[_0xad73('0x47')](_0x3f1f80['query'],_0x1f826c[_0xad73('0x32')]),_0x34fe4d);if(_0x3f1f80[_0xad73('0x2f')]['filter']){_0x54eadc[_0xad73('0x48')]=_[_0xad73('0x49')](_0x54eadc[_0xad73('0x48')],{'$or':_['map'](_0x34fe4d,function(_0x2448da){if(_0x2448da[_0xad73('0x4a')]!==_0xad73('0x4b')){var _0x3d2ef0={};_0x3d2ef0[_0x2448da[_0xad73('0x2e')]]={'$like':'%'+_0x3f1f80['query']['filter']+'%'};return _0x3d2ef0;}})});}_0x54eadc=_['merge']({},_0x54eadc,_0x3f1f80[_0xad73('0x4c')]);var _0x12f035={'where':_0x54eadc[_0xad73('0x48')]};return db[_0xad73('0x4d')][_0xad73('0x1f')](_0x12f035)[_0xad73('0x25')](function(_0x3b0c68){_0x377273['count']=_0x3b0c68;if(_0x3f1f80[_0xad73('0x2f')][_0xad73('0x4e')]){_0x54eadc['include']=[{'all':!![]}];}return db['CmHopper'][_0xad73('0x4f')](_0x54eadc);})[_0xad73('0x25')](function(_0x1658a0){_0x377273[_0xad73('0x50')]=_0x1658a0;return _0x377273;})['then'](respondWithFilteredResult(_0x54a8f9,_0x54eadc))[_0xad73('0x51')](handleError(_0x54a8f9,null));};exports[_0xad73('0x52')]=function(_0xfea484,_0x5d8d87){var _0xa1bb3d={'raw':!![],'where':{'id':_0xfea484[_0xad73('0x53')]['id']}},_0x283783={};_0x283783[_0xad73('0x2d')]=_['keys'](db['CmHopper'][_0xad73('0x2a')]);_0x283783[_0xad73('0x2f')]=_[_0xad73('0x54')](_0xfea484[_0xad73('0x2f')]);_0x283783[_0xad73('0x32')]=_[_0xad73('0x30')](_0x283783[_0xad73('0x2d')],_0x283783[_0xad73('0x2f')]);_0xa1bb3d[_0xad73('0x42')]=_['intersection'](_0x283783['model'],qs[_0xad73('0x41')](_0xfea484[_0xad73('0x2f')][_0xad73('0x41')]));_0xa1bb3d['attributes']=_0xa1bb3d[_0xad73('0x42')][_0xad73('0x43')]?_0xa1bb3d[_0xad73('0x42')]:_0x283783[_0xad73('0x2d')];if(_0xfea484['query'][_0xad73('0x4e')]){_0xa1bb3d[_0xad73('0x55')]=[{'all':!![]}];}_0xa1bb3d=_[_0xad73('0x49')]({},_0xa1bb3d,_0xfea484['options']);return db[_0xad73('0x4d')][_0xad73('0x56')](_0xa1bb3d)[_0xad73('0x25')](handleEntityNotFound(_0x5d8d87,null))[_0xad73('0x25')](respondWithResult(_0x5d8d87,null))['catch'](handleError(_0x5d8d87,null));};exports['create']=function(_0x28b113,_0x361509){return db[_0xad73('0x4d')]['create'](_0x28b113[_0xad73('0x57')],{})[_0xad73('0x25')](respondWithResult(_0x361509,0xc9))[_0xad73('0x51')](handleError(_0x361509,null));};exports[_0xad73('0x24')]=function(_0x3fb4da,_0x36fd80){if(_0x3fb4da[_0xad73('0x57')]['id']){delete _0x3fb4da[_0xad73('0x57')]['id'];}return db['CmHopper'][_0xad73('0x56')]({'where':{'id':_0x3fb4da['params']['id']}})[_0xad73('0x25')](handleEntityNotFound(_0x36fd80,null))['then'](saveUpdates(_0x3fb4da['body'],null))[_0xad73('0x25')](respondWithResult(_0x36fd80,null))[_0xad73('0x51')](handleError(_0x36fd80,null));};exports['describe']=function(_0x25b6f1,_0x2def9f){return db[_0xad73('0x4d')][_0xad73('0x58')]()[_0xad73('0x25')](respondWithResult(_0x2def9f,null))[_0xad73('0x51')](handleError(_0x2def9f,null));};exports[_0xad73('0x26')]=function(_0xf71ea2,_0xeeaa26){var _0x317601;return db['CmHopper'][_0xad73('0x56')]({'where':{'id':_0xf71ea2['params']['id']}})[_0xad73('0x25')](handleEntityNotFound(_0xeeaa26,null))[_0xad73('0x25')](function(_0x2e1d54){if(_0x2e1d54){return _0x2e1d54[_0xad73('0x26')]()['then'](function(_0x404a21){return _0x404a21;});}})['then'](function(_0x4792d5){_0x317601=_0x4792d5;if(_0x4792d5){if(_0x4792d5[_0xad73('0x59')]||_0x4792d5['CampaignId']){return db[_0x4792d5[_0xad73('0x59')]?'VoiceQueue':_0xad73('0x5a')][_0xad73('0x56')]({'where':{'id':_0x4792d5[_0xad73('0x59')]?_0x4792d5['VoiceQueueId']:_0x4792d5[_0xad73('0x5b')]},'attributes':['id',_0xad73('0x2e')],'raw':!![]});}}})[_0xad73('0x25')](function(_0x4bd4b3){var _0x206e3a={};if(_0x4bd4b3){_['merge'](_0x206e3a,_['omit'](_0x317601[_0xad73('0x5c')],[_0xad73('0x5d'),'updatedAt','id']));_0x206e3a['state']=0x15;_0x206e3a[_0xad73('0x5e')]=_0xad73('0x5f');_0x206e3a['campaign']=_0x4bd4b3['name'];_0x206e3a[_0xad73('0x60')]=_0xf71ea2[_0xad73('0x61')][_0xad73('0x2e')];_0x206e3a[_0xad73('0x62')]=_0xf71ea2[_0xad73('0x61')]['id'];_0x206e3a['deleted']=!![];_0x206e3a['deletedat']=moment()[_0xad73('0x63')](_0xad73('0x64'));_0x206e3a[_0xad73('0x65')]=_0x317601[_0xad73('0x66')];_0x206e3a[_0xad73('0x67')]=_0x317601[_0xad73('0x59')]?_0xad73('0x68'):_0xad73('0x69');return db[_0xad73('0x6a')][_0xad73('0x56')]({'where':{'id':_0x206e3a[_0xad73('0x6b')]},'attributes':['firstName',_0xad73('0x6c')]})[_0xad73('0x25')](function(_0x110d1b){if(!_[_0xad73('0x6d')](_0xeeaa26)&&!_[_0xad73('0x6d')](_0x110d1b['firstName'])){_0x206e3a['calleridname']=_0x110d1b[_0xad73('0x6e')];if(!_[_0xad73('0x6d')](_0x110d1b[_0xad73('0x6c')])){_0x206e3a[_0xad73('0x6f')]+='\x20'+_0x110d1b[_0xad73('0x6c')];}}})[_0xad73('0x70')](function(){return db[_0xad73('0x71')][_0xad73('0x72')](_0x206e3a);});}})[_0xad73('0x25')](function(){return _0xeeaa26[_0xad73('0x19')](0xcc)[_0xad73('0x1a')]();})['catch'](handleError(_0xeeaa26,null));};exports[_0xad73('0x73')]=function(_0x269abe,_0x205b56,_0x118504){var _0x31d492=[];return db[_0xad73('0x6a')][_0xad73('0x58')]()['then'](function(_0x2525fe){_0x31d492=_[_0xad73('0x54')](_0x2525fe);return _0x269abe[_0xad73('0x61')][_0xad73('0x74')]({'where':{'type':_0xad73('0x75'),'dialActive':!![],'dialMethod':_0xad73('0x76')},'attributes':['id','dialOrderByScheduledAt',_0xad73('0x77')],'raw':!![]});})[_0xad73('0x25')](function(_0x2f93f9){if(_0x2f93f9&&_0x2f93f9[_0xad73('0x43')]){return db[_0xad73('0x78')]['transaction'](function(_0x3741cb){var _0xae9bdd={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xad73('0x63')](_0xad73('0x64'))},'VoiceQueueId':{'$in':_[_0xad73('0x29')](_0x2f93f9,'id')},'$or':[{'UserId':null},{'UserId':_0x269abe[_0xad73('0x61')]['id']}]};var _0x58c8ad={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x2f93f9)[_0xad73('0x79')]([_0xad73('0x77'),0x0])[_0xad73('0x29')]('id')[_0xad73('0x7a')]()},'$or':[{'UserId':null},{'UserId':_0x269abe[_0xad73('0x61')]['id']}]};var _0xec1025={'$or':[_0xae9bdd,_0x58c8ad]};var _0xb2324e=[];if(_0x269abe[_0xad73('0x57')]['direction']&&_0x269abe[_0xad73('0x57')]['direction']===_0xad73('0x7b')){if(!_[_0xad73('0x7c')](_0x269abe[_0xad73('0x57')]['hopperIds'])){_0xec1025['id']={'$in':_0x269abe[_0xad73('0x57')][_0xad73('0x7d')]};}_0xb2324e=[[_0xad73('0x7e'),'ASC'],[_0xad73('0x7f'),_0x2f93f9[0x0][_0xad73('0x80')]===_0xad73('0x81')?_0xad73('0x82'):_0xad73('0x81')],db['sequelize'][_0xad73('0x83')](_0xad73('0x84')),['id',_0xad73('0x82')]];}else{if(!_['isEmpty'](_0x269abe[_0xad73('0x57')][_0xad73('0x7d')])){_0xec1025['id']={'$notIn':_0x269abe[_0xad73('0x57')][_0xad73('0x7d')]};}_0xb2324e=[[_0xad73('0x7e'),_0xad73('0x82')],[_0xad73('0x7f'),_0x2f93f9[0x0]['dialOrderByScheduledAt']],db[_0xad73('0x78')]['literal'](_0xad73('0x85')),['id',_0xad73('0x81')]];}return db[_0xad73('0x4d')][_0xad73('0x86')]({'attributes':['id',_0xad73('0x87'),_0xad73('0x88')],'where':_0xec1025,'order':_0xb2324e,'transaction':_0x3741cb,'lock':_0x3741cb[_0xad73('0x89')]['UPDATE'],'include':[{'model':db[_0xad73('0x6a')],'as':_0xad73('0x8a'),'attributes':_0x31d492,'include':[{'model':db['CmCompany'],'as':_0xad73('0x8b'),'attributes':['id','name']}]},{'model':db[_0xad73('0x8c')],'as':_0xad73('0x8d'),'attributes':['id',_0xad73('0x2e')]},{'model':db[_0xad73('0x8e')],'as':_0xad73('0x8f'),'attributes':['id',_0xad73('0x2e'),_0xad73('0x90')]}]})[_0xad73('0x25')](function(_0x2d5321){if(_0x2d5321){return _0x2d5321[_0xad73('0x24')]({'UserId':_0x269abe[_0xad73('0x61')]['id']},{'transaction':_0x3741cb});}});});}})['then'](handleEntityNotFound(_0x205b56,null))['then'](respondWithResult(_0x205b56,null))[_0xad73('0x51')](handleError(_0x205b56,null));};exports[_0xad73('0x91')]=function(_0x3195e0,_0x21bc15,_0x91c99a){return _0x3195e0[_0xad73('0x61')][_0xad73('0x74')]({'where':{'type':_0xad73('0x75'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})['then'](function(_0x3e0057){if(_0x3e0057&&_0x3e0057['length']){return db['CmHopper']['count']({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xad73('0x63')](_0xad73('0x64'))},'VoiceQueueId':{'$in':_[_0xad73('0x29')](_0x3e0057,'id')},'$or':[{'UserId':null},{'UserId':_0x3195e0[_0xad73('0x61')]['id']}]}});}return 0x0;})[_0xad73('0x25')](function(_0x2236e3){if(!_[_0xad73('0x6d')](_0x2236e3)&&_['isNumber'](_0x2236e3)){return _0x21bc15[_0xad73('0x19')](0xc8)[_0xad73('0x1b')]({'contacts':_0x2236e3});}else{logger[_0xad73('0x27')](_0xad73('0x92'),_0xad73('0x91'),0x194,'entity\x20not\x20found');_0x21bc15[_0xad73('0x18')](0x194);}})[_0xad73('0x51')](handleError(_0x21bc15,null));};
\ No newline at end of file
index 7314214..e704c6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c60=['../../config/logger','api','bluebird','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','phone','priority','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4c60,0xc1));var _0x04c6=function(_0x2c4536,_0x3ebdd5){_0x2c4536=_0x2c4536-0x0;var _0x51bf10=_0x4c60[_0x2c4536];return _0x51bf10;};'use strict';var _=require(_0x04c6('0x0'));var util=require(_0x04c6('0x1'));var logger=require(_0x04c6('0x2'))(_0x04c6('0x3'));var moment=require('moment');var BPromise=require(_0x04c6('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(_0x04c6('0x5'));module[_0x04c6('0x6')]=function(_0x2054da,_0x12bd5d){return _0x2054da[_0x04c6('0x7')](_0x04c6('0x8'),attributes,{'tableName':_0x04c6('0x9'),'paranoid':![],'indexes':[{'name':'scheduledat','fields':[_0x04c6('0xa')]},{'name':_0x04c6('0xb'),'fields':[_0x04c6('0xb')]},{'name':_0x04c6('0xc'),'fields':['priority']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x814b=['phone','priority','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./cmHopper.attributes','exports','define','CmHopper','scheduledat'];(function(_0x3108d9,_0xf08d6){var _0x1455e6=function(_0xfd5906){while(--_0xfd5906){_0x3108d9['push'](_0x3108d9['shift']());}};_0x1455e6(++_0xf08d6);}(_0x814b,0x1a2));var _0xb814=function(_0x5e8c0f,_0x1f20d9){_0x5e8c0f=_0x5e8c0f-0x0;var _0x568dbe=_0x814b[_0x5e8c0f];return _0x568dbe;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'cm_hopper','paranoid':![],'indexes':[{'name':_0xb814('0xd'),'fields':[_0xb814('0xd')]},{'name':_0xb814('0xe'),'fields':[_0xb814('0xe')]},{'name':_0xb814('0xf'),'fields':[_0xb814('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index d11f2f9..de12d0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x692f=['map','model','catch','ShowCmHopper','CmHopper','then','CreateCmHopper','create','body','UpdateCmHopper','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','where','DestroyCmHopper','destroy','CmContact','describe','sequelize','transaction','findAll','order','LOCK','UPDATE','Contact','keys','User','Agent','name','length','UserId','includes','push','all','GetContactDialer','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','ContactId','active','MoveContactManagedDialer','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','CountReScheduled','COUNT','literal','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','GetContactRecallMe','ResetActiveCalls','update','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','CmHopper,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','GetCmHopper','options','raw','attributes','limit','include'];(function(_0x582ccd,_0xa9ab43){var _0x11545d=function(_0x4010fa){while(--_0x4010fa){_0x582ccd['push'](_0x582ccd['shift']());}};_0x11545d(++_0xa9ab43);}(_0x692f,0x10f));var _0xf692=function(_0x1c4951,_0x2038ee){_0x1c4951=_0x1c4951-0x0;var _0x345e1b=_0x692f[_0x1c4951];return _0x345e1b;};'use strict';var _=require(_0xf692('0x0'));var util=require(_0xf692('0x1'));var moment=require('moment');var BPromise=require(_0xf692('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf692('0x3'))['db'];var utils=require(_0xf692('0x4'));var logger=require(_0xf692('0x5'))('rpc');var config=require(_0xf692('0x6'));var jayson=require(_0xf692('0x7'));var client=jayson[_0xf692('0x8')][_0xf692('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x40ebb3,_0x460467,_0x360844){return new BPromise(function(_0x4e646a,_0x1d0b3b){return client[_0xf692('0xa')](_0x40ebb3,_0x360844)['then'](function(_0x1f2017){logger[_0xf692('0xb')](_0xf692('0xc'),_0x460467,_0xf692('0xd'));logger[_0xf692('0xe')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x460467,_0xf692('0xd'),JSON[_0xf692('0xf')](_0x1f2017));if(_0x1f2017[_0xf692('0x10')]){if(_0x1f2017[_0xf692('0x10')]['code']===0x1f4){logger[_0xf692('0x10')]('CmHopper,\x20%s,\x20%s',_0x460467,_0x1f2017[_0xf692('0x10')][_0xf692('0x11')]);return _0x1d0b3b(_0x1f2017[_0xf692('0x10')][_0xf692('0x11')]);}logger[_0xf692('0x10')](_0xf692('0xc'),_0x460467,_0x1f2017['error'][_0xf692('0x11')]);return _0x4e646a(_0x1f2017[_0xf692('0x10')][_0xf692('0x11')]);}else{logger[_0xf692('0xb')]('CmHopper,\x20%s,\x20%s',_0x460467,_0xf692('0xd'));_0x4e646a(_0x1f2017[_0xf692('0x12')]['message']);}})['catch'](function(_0x336032){logger['error']('CmHopper,\x20%s,\x20%s',_0x460467,_0x336032);_0x1d0b3b(_0x336032);});});}exports[_0xf692('0x13')]=function(_0x58fc31){var _0x5cfa43=this;return new Promise(function(_0x18e881,_0x325912){return db['CmHopper']['findAll']({'raw':_0x58fc31[_0xf692('0x14')]?_0x58fc31['options'][_0xf692('0x15')]===undefined?!![]:![]:!![],'where':_0x58fc31['options']?_0x58fc31[_0xf692('0x14')]['where']||null:null,'attributes':_0x58fc31[_0xf692('0x14')]?_0x58fc31['options'][_0xf692('0x16')]||null:null,'limit':_0x58fc31[_0xf692('0x14')]?_0x58fc31[_0xf692('0x14')][_0xf692('0x17')]||null:null,'include':_0x58fc31['options']?_0x58fc31['options'][_0xf692('0x18')]?_[_0xf692('0x19')](_0x58fc31[_0xf692('0x14')]['include'],function(_0x29dc55){return{'model':db[_0x29dc55['model']],'as':_0x29dc55['as'],'attributes':_0x29dc55[_0xf692('0x16')],'include':_0x29dc55[_0xf692('0x18')]?_[_0xf692('0x19')](_0x29dc55['include'],function(_0x479a0e){return{'model':db[_0x479a0e[_0xf692('0x1a')]],'as':_0x479a0e['as'],'attributes':_0x479a0e[_0xf692('0x16')],'include':_0x479a0e[_0xf692('0x18')]?_[_0xf692('0x19')](_0x479a0e[_0xf692('0x18')],function(_0xe10066){return{'model':db[_0xe10066['model']],'as':_0xe10066['as'],'attributes':_0xe10066[_0xf692('0x16')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x335d4e){logger[_0xf692('0xb')](_0xf692('0x13'),_0x58fc31);logger[_0xf692('0xe')](_0xf692('0x13'),_0x58fc31,JSON[_0xf692('0xf')](_0x335d4e));_0x18e881(_0x335d4e);})[_0xf692('0x1b')](function(_0x5d2f34){logger['error'](_0xf692('0x13'),_0x5d2f34[_0xf692('0x11')],_0x58fc31);_0x325912(_0x5cfa43[_0xf692('0x10')](0x1f4,_0x5d2f34[_0xf692('0x11')]));});});};exports[_0xf692('0x1c')]=function(_0x9b754c){var _0x4cee39=this;return new Promise(function(_0x41c2a7,_0x40ef7a){return db[_0xf692('0x1d')]['find']({'raw':_0x9b754c[_0xf692('0x14')]?_0x9b754c['options'][_0xf692('0x15')]===undefined?!![]:![]:!![],'where':_0x9b754c[_0xf692('0x14')]?_0x9b754c[_0xf692('0x14')]['where']||null:null,'attributes':_0x9b754c[_0xf692('0x14')]?_0x9b754c[_0xf692('0x14')]['attributes']||null:null,'include':_0x9b754c[_0xf692('0x14')]?_0x9b754c[_0xf692('0x14')][_0xf692('0x18')]?_['map'](_0x9b754c[_0xf692('0x14')]['include'],function(_0x197645){return{'model':db[_0x197645[_0xf692('0x1a')]],'as':_0x197645['as'],'attributes':_0x197645['attributes'],'include':_0x197645[_0xf692('0x18')]?_[_0xf692('0x19')](_0x197645[_0xf692('0x18')],function(_0x4797c5){return{'model':db[_0x4797c5['model']],'as':_0x4797c5['as'],'attributes':_0x4797c5['attributes'],'include':_0x4797c5[_0xf692('0x18')]?_[_0xf692('0x19')](_0x4797c5[_0xf692('0x18')],function(_0x986ed7){return{'model':db[_0x986ed7[_0xf692('0x1a')]],'as':_0x986ed7['as'],'attributes':_0x986ed7[_0xf692('0x16')]};}):[]};}):[]};}):[]:[]})[_0xf692('0x1e')](function(_0x39c911){logger[_0xf692('0xb')](_0xf692('0x1c'),_0x9b754c);logger[_0xf692('0xe')](_0xf692('0x1c'),_0x9b754c,JSON[_0xf692('0xf')](_0x39c911));_0x41c2a7(_0x39c911);})[_0xf692('0x1b')](function(_0x3817ac){logger[_0xf692('0x10')](_0xf692('0x1c'),_0x3817ac[_0xf692('0x11')],_0x9b754c);_0x40ef7a(_0x4cee39[_0xf692('0x10')](0x1f4,_0x3817ac[_0xf692('0x11')]));});});};exports[_0xf692('0x1f')]=function(_0x2b5f1c){var _0x50340a=this;return new Promise(function(_0x30da1f,_0x494ad3){return db['CmHopper'][_0xf692('0x20')](_0x2b5f1c[_0xf692('0x21')],{'raw':_0x2b5f1c[_0xf692('0x14')]?_0x2b5f1c[_0xf692('0x14')][_0xf692('0x15')]===undefined?!![]:![]:!![]})['then'](function(_0x58f80c){logger[_0xf692('0xb')]('CreateCmHopper',_0x2b5f1c);logger[_0xf692('0xe')](_0xf692('0x1f'),_0x2b5f1c,JSON[_0xf692('0xf')](_0x58f80c));_0x30da1f(_0x58f80c);})[_0xf692('0x1b')](function(_0xa818b){logger[_0xf692('0x10')](_0xf692('0x1f'),_0xa818b[_0xf692('0x11')],_0x2b5f1c);_0x494ad3(_0x50340a[_0xf692('0x10')](0x1f4,_0xa818b[_0xf692('0x11')]));});});};exports[_0xf692('0x22')]=function(_0x4c241b){var _0x5a4c35=this;return new Promise(function(_0x580bec,_0x55e84b){return db[_0xf692('0x1d')]['update'](_0x4c241b[_0xf692('0x21')],{'raw':_0x4c241b[_0xf692('0x14')]?_0x4c241b['options'][_0xf692('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4c241b[_0xf692('0x14')]?_0x4c241b[_0xf692('0x14')]['where']||null:null,'attributes':_0x4c241b[_0xf692('0x14')]?_0x4c241b[_0xf692('0x14')][_0xf692('0x16')]||null:null,'limit':_0x4c241b[_0xf692('0x14')]?_0x4c241b[_0xf692('0x14')][_0xf692('0x17')]||null:null})['then'](function(_0x3c28f6){logger[_0xf692('0xb')]('UpdateCmHopper',_0x4c241b);logger['info'](_0xf692('0x23'),JSON[_0xf692('0xf')](_0x4c241b[_0xf692('0x14')][_0xf692('0x24')]),_0x4c241b['body']['active']);logger[_0xf692('0xe')]('UpdateCmHopper',_0x4c241b,JSON[_0xf692('0xf')](_0x3c28f6));_0x580bec(_0x3c28f6);})[_0xf692('0x1b')](function(_0x2b9050){logger[_0xf692('0x10')](_0xf692('0x22'),_0x2b9050[_0xf692('0x11')],_0x4c241b);_0x55e84b(_0x5a4c35['error'](0x1f4,_0x2b9050[_0xf692('0x11')]));});});};exports[_0xf692('0x25')]=function(_0x425706){var _0x249ee3=this;return new Promise(function(_0x360d07,_0x30d8df){return db[_0xf692('0x1d')][_0xf692('0x26')]({'where':_0x425706['options']?_0x425706[_0xf692('0x14')][_0xf692('0x24')]||null:null})[_0xf692('0x1e')](function(_0x4504a5){logger[_0xf692('0xb')](_0xf692('0x25'),_0x425706);logger[_0xf692('0xe')]('DestroyCmHopper',_0x425706,JSON[_0xf692('0xf')](_0x4504a5));_0x360d07(_0x4504a5);})[_0xf692('0x1b')](function(_0xaa23ce){logger['error'](_0xf692('0x25'),_0xaa23ce['message'],_0x425706);_0x30d8df(_0x249ee3[_0xf692('0x10')](0x1f4,_0xaa23ce[_0xf692('0x11')]));});});};exports['GetContactDialer']=function(_0x53917a){var _0x349e62=this;return new Promise(function(_0x12a4a6,_0x2e5c60){return db[_0xf692('0x27')][_0xf692('0x28')]()['then'](function(_0x5dd1a2){return db[_0xf692('0x29')][_0xf692('0x2a')](function(_0x3a64ec){return db[_0xf692('0x1d')][_0xf692('0x2b')]({'where':_0x53917a[_0xf692('0x14')]?_0x53917a[_0xf692('0x14')][_0xf692('0x24')]||null:null,'attributes':_0x53917a[_0xf692('0x14')]?_0x53917a['options'][_0xf692('0x16')]||null:null,'limit':_0x53917a[_0xf692('0x14')]?_0x53917a[_0xf692('0x14')]['limit']||null:null,'order':_0x53917a[_0xf692('0x14')]?_0x53917a[_0xf692('0x14')][_0xf692('0x2c')]||null:null,'transaction':_0x3a64ec,'lock':_0x3a64ec[_0xf692('0x2d')][_0xf692('0x2e')],'include':[{'model':db[_0xf692('0x27')],'as':_0xf692('0x2f'),'attributes':_[_0xf692('0x30')](_0x5dd1a2)},{'model':db[_0xf692('0x31')],'as':_0xf692('0x32'),'attributes':['id',_0xf692('0x33'),'voicePause']}]})[_0xf692('0x1e')](function(_0x395809){var _0x39a08d=[];var _0x3b2170=[];for(var _0x173648=0x0;_0x173648<_0x395809[_0xf692('0x34')];_0x173648+=0x1){var _0x58456d=_0x395809[_0x173648][_0xf692('0x35')];if(_0x58456d===null){_0x39a08d['push'](_0x395809[_0x173648]['update'](_0x53917a[_0xf692('0x21')],{'transaction':_0x3a64ec}));}else if(!_0x3b2170[_0xf692('0x36')](_0x58456d)){_0x3b2170[_0xf692('0x37')](_0x58456d);_0x39a08d[_0xf692('0x37')](_0x395809[_0x173648]['update'](_0x53917a[_0xf692('0x21')],{'transaction':_0x3a64ec}));}}return BPromise[_0xf692('0x38')](_0x39a08d);});})[_0xf692('0x1e')](function(_0x4c111c){logger[_0xf692('0xb')](_0xf692('0x39'),_0x53917a);if(_0x4c111c['length']>0x0){logger['info'](_0xf692('0x3a'),_0x4c111c[0x0][_0xf692('0x3b')]['id'],_0x4c111c[0x0]['dataValues'][_0xf692('0x3c')],_0x4c111c[0x0][_0xf692('0x3b')][_0xf692('0x3d')]);}logger[_0xf692('0xe')](_0xf692('0x39'),_0x53917a,JSON[_0xf692('0xf')](_0x4c111c));_0x12a4a6(_0x4c111c);})[_0xf692('0x1b')](function(_0x38be42){logger['error'](_0xf692('0x39'),_0x38be42['message'],_0x53917a);_0x2e5c60(_0x349e62[_0xf692('0x10')](0x1f4,_0x38be42[_0xf692('0x11')]));});});});};exports[_0xf692('0x3e')]=function(_0x53064c){var _0x4b96c7=this;return new Promise(function(_0x3515de,_0x1753c6){return db['sequelize'][_0xf692('0x2a')](function(_0x5ddaf){return db[_0xf692('0x3f')][_0xf692('0x20')](_0x53064c['body'],{'raw':_0x53064c[_0xf692('0x14')]?_0x53064c['options'][_0xf692('0x15')]===undefined?!![]:![]:!![],'transaction':_0x5ddaf})['then'](function(){logger[_0xf692('0xb')](_0xf692('0x40'),JSON[_0xf692('0xf')](_0x53064c[_0xf692('0x14')]['where']),_0x53064c[_0xf692('0x14')][_0xf692('0x24')]['active']);return db['CmHopper']['destroy']({'where':_0x53064c['options']?_0x53064c[_0xf692('0x14')][_0xf692('0x24')]||null:null,'transaction':_0x5ddaf});});})['then'](function(_0x2fb8f6){logger[_0xf692('0xb')]('MoveContactManagedDialer',_0x53064c);logger[_0xf692('0xe')]('MoveContactManagedDialer',_0x53064c,JSON[_0xf692('0xf')](_0x2fb8f6));_0x3515de(_0x2fb8f6);})['catch'](function(_0x5037c9){logger['error']('MoveContactManagedDialer',_0x5037c9['message'],_0x53064c);_0x1753c6(_0x4b96c7[_0xf692('0x10')](0x1f4,_0x5037c9['message']));});});};exports[_0xf692('0x41')]=function(_0x2ae5cd){var _0x28800e=this;return new Promise(function(_0x590425,_0x40ed2c){return db[_0xf692('0x1d')][_0xf692('0x2b')]({'raw':_0x2ae5cd[_0xf692('0x14')]?_0x2ae5cd[_0xf692('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0x2ae5cd['options']?_0x2ae5cd[_0xf692('0x14')][_0xf692('0x24')]||null:null,'attributes':[[db[_0xf692('0x29')]['fn'](_0xf692('0x42'),db[_0xf692('0x29')]['fn']('IF',db[_0xf692('0x29')][_0xf692('0x43')]('`scheduledat`\x20>=\x20'+util[_0xf692('0x44')](_0xf692('0x45'),moment()[_0xf692('0x44')](_0xf692('0x46')))+'\x20,\x201,\x20null'))),'contactsRescheduled']]})[_0xf692('0x1e')](function(_0x417b7d){logger[_0xf692('0xb')]('CountReScheduled',_0x2ae5cd);logger['debug']('CountReScheduled',_0x2ae5cd,JSON['stringify'](_0x417b7d));_0x590425(_0x417b7d);})[_0xf692('0x1b')](function(_0x3bedfc){logger[_0xf692('0x10')](_0xf692('0x41'),_0x3bedfc[_0xf692('0x11')],_0x2ae5cd);_0x40ed2c(_0x28800e[_0xf692('0x10')](0x1f4,_0x3bedfc[_0xf692('0x11')]));});});};exports[_0xf692('0x47')]=function(_0x59510d){var _0x1b3b50=this;return new Promise(function(_0x40b1a5,_0x5caaa2){return db[_0xf692('0x27')][_0xf692('0x28')]()[_0xf692('0x1e')](function(_0x433259){return db['sequelize'][_0xf692('0x2a')](function(_0x550344){return db[_0xf692('0x1d')][_0xf692('0x2b')]({'where':_0x59510d[_0xf692('0x14')]?_0x59510d[_0xf692('0x14')][_0xf692('0x24')]||null:null,'attributes':_0x59510d[_0xf692('0x14')]?_0x59510d['options'][_0xf692('0x16')]||null:null,'limit':0x1,'order':_0x59510d[_0xf692('0x14')]?_0x59510d['options'][_0xf692('0x2c')]||null:null,'group':db[_0xf692('0x1d')]['UserId'],'transaction':_0x550344,'lock':_0x550344['LOCK']['UPDATE'],'include':_0x59510d[_0xf692('0x14')]?_0x59510d[_0xf692('0x14')]['include']?_['map'](_0x59510d[_0xf692('0x14')][_0xf692('0x18')],function(_0x57df90){return{'model':db[_0x57df90[_0xf692('0x1a')]],'as':_0x57df90['as'],'attributes':_0x57df90[_0xf692('0x16')],'include':_0x57df90[_0xf692('0x18')]?_[_0xf692('0x19')](_0x57df90['include'],function(_0x307f7b){return{'model':db[_0x307f7b[_0xf692('0x1a')]],'as':_0x307f7b['as'],'attributes':_0x307f7b['attributes'],'include':_0x307f7b['include']?_[_0xf692('0x19')](_0x307f7b[_0xf692('0x18')],function(_0x409d08){return{'model':db[_0x409d08[_0xf692('0x1a')]],'as':_0x409d08['as'],'attributes':_0x409d08[_0xf692('0x16')]};}):[]};}):[]};}):[]:[]})[_0xf692('0x1e')](function(_0x25ea97){var _0x1e5c45=[];for(var _0x420524=0x0;_0x420524<_0x25ea97['length'];_0x420524+=0x1){_0x1e5c45[_0xf692('0x37')](_0x25ea97[_0x420524]['update'](_0x59510d['body'],{'transaction':_0x550344}));}return BPromise[_0xf692('0x38')](_0x1e5c45);});})[_0xf692('0x1e')](function(_0x587abe){logger[_0xf692('0xb')]('GetContactRecallMe',_0x59510d);logger['debug'](_0xf692('0x47'),_0x59510d,JSON[_0xf692('0xf')](_0x587abe));_0x40b1a5(_0x587abe);})[_0xf692('0x1b')](function(_0x1ebff3){logger[_0xf692('0x10')](_0xf692('0x47'),_0x1ebff3[_0xf692('0x11')],_0x59510d);_0x5caaa2(_0x1b3b50[_0xf692('0x10')](0x1f4,_0x1ebff3[_0xf692('0x11')]));});});});};exports['GetCmHopperPreview']=function(_0x26acc1){var _0x2fdf6=this;return new Promise(function(_0x4cf942,_0x135fee){db[_0xf692('0x27')][_0xf692('0x28')]()['then'](function(_0x139abd){return db[_0xf692('0x1d')][_0xf692('0x2b')]({'raw':_0x26acc1[_0xf692('0x14')]?_0x26acc1['options']['raw']===undefined?!![]:![]:!![],'where':_0x26acc1[_0xf692('0x14')]?_0x26acc1[_0xf692('0x14')]['where']||null:null,'attributes':_0x26acc1[_0xf692('0x14')]?_0x26acc1[_0xf692('0x14')][_0xf692('0x16')]||null:null,'limit':_0x26acc1[_0xf692('0x14')]?_0x26acc1[_0xf692('0x14')][_0xf692('0x17')]||null:null,'include':_0x26acc1[_0xf692('0x14')]?_0x26acc1[_0xf692('0x14')][_0xf692('0x18')]?_['map'](_0x26acc1[_0xf692('0x14')][_0xf692('0x18')],function(_0x3044e4){return{'model':db[_0x3044e4['model']],'as':_0x3044e4['as'],'attributes':_0x3044e4['as']==='Contact'?_[_0xf692('0x30')](_0x139abd):_0x3044e4[_0xf692('0x16')],'include':_0x3044e4[_0xf692('0x18')]?_[_0xf692('0x19')](_0x3044e4[_0xf692('0x18')],function(_0x1b6e58){return{'model':db[_0x1b6e58[_0xf692('0x1a')]],'as':_0x1b6e58['as'],'attributes':_0x1b6e58['attributes'],'include':_0x1b6e58[_0xf692('0x18')]?_[_0xf692('0x19')](_0x1b6e58[_0xf692('0x18')],function(_0x2bf41e){return{'model':db[_0x2bf41e[_0xf692('0x1a')]],'as':_0x2bf41e['as'],'attributes':_0x2bf41e[_0xf692('0x16')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4d5da7){logger[_0xf692('0xb')]('GetCmHopper',_0x26acc1);logger[_0xf692('0xe')](_0xf692('0x13'),_0x26acc1,JSON['stringify'](_0x4d5da7));_0x4cf942(_0x4d5da7);})['catch'](function(_0xe8f1b2){logger[_0xf692('0x10')](_0xf692('0x13'),_0xe8f1b2['message'],_0x26acc1);_0x135fee(_0x2fdf6[_0xf692('0x10')](0x1f4,_0xe8f1b2[_0xf692('0x11')]));});});});};exports[_0xf692('0x48')]=function(_0x34fd4f){var _0x3d556f=this;return new Promise(function(_0x10a6e7,_0x2507f3){return db[_0xf692('0x29')]['transaction'](function(_0x318cca){return db[_0xf692('0x1d')][_0xf692('0x49')]({'active':![]},{'where':{},'transaction':_0x318cca})[_0xf692('0x1e')](function(_0x362659){logger[_0xf692('0xb')](_0xf692('0x48'),_0x34fd4f);logger['debug'](_0xf692('0x48'),_0x34fd4f,JSON[_0xf692('0xf')](_0x362659));_0x10a6e7(_0x362659);})[_0xf692('0x1b')](function(_0x4d59af){logger[_0xf692('0x10')](_0xf692('0x48'),_0x4d59af[_0xf692('0x11')],_0x34fd4f);_0x2507f3(_0x3d556f[_0xf692('0x10')](0x1f4,_0x4d59af[_0xf692('0x11')]));});});});};
\ No newline at end of file
+var _0xe51f=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','CmHopper,\x20%s,\x20%s','request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','CmHopper','findAll','raw','options','where','attributes','limit','include','map','model','GetCmHopper','ShowCmHopper','find','create','CreateCmHopper','UpdateCmHopper','update','body','DestroyCmHopper','describe','sequelize','transaction','order','UPDATE','CmContact','Contact','Agent','voicePause','UserId','push','all','GetContactDialer','MoveContactManagedDialer','CmHopperFinal','destroy','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','CountReScheduled','GetContactRecallMe','LOCK','length','GetCmHopperPreview','lodash','bluebird','ioredis'];(function(_0x47c167,_0x130ba6){var _0x113f55=function(_0x3082bb){while(--_0x3082bb){_0x47c167['push'](_0x47c167['shift']());}};_0x113f55(++_0x130ba6);}(_0xe51f,0xcc));var _0xfe51=function(_0x51a93b,_0x3fe7af){_0x51a93b=_0x51a93b-0x0;var _0x47f5ff=_0xe51f[_0x51a93b];return _0x47f5ff;};'use strict';var _=require(_0xfe51('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xfe51('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfe51('0x2'));var db=require(_0xfe51('0x3'))['db'];var utils=require(_0xfe51('0x4'));var logger=require('../../config/logger')(_0xfe51('0x5'));var config=require(_0xfe51('0x6'));var jayson=require(_0xfe51('0x7'));var client=jayson[_0xfe51('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x25f2f6,_0x212a7b,_0x21a68e){return new BPromise(function(_0x42294c,_0x379fe8){return client[_0xfe51('0x9')](_0x25f2f6,_0x21a68e)[_0xfe51('0xa')](function(_0xf5ec9c){logger['info'](_0xfe51('0xb'),_0x212a7b,_0xfe51('0xc'));logger[_0xfe51('0xd')](_0xfe51('0xe'),_0x212a7b,'request\x20sent',JSON[_0xfe51('0xf')](_0xf5ec9c));if(_0xf5ec9c[_0xfe51('0x10')]){if(_0xf5ec9c[_0xfe51('0x10')][_0xfe51('0x11')]===0x1f4){logger[_0xfe51('0x10')](_0xfe51('0xb'),_0x212a7b,_0xf5ec9c[_0xfe51('0x10')][_0xfe51('0x12')]);return _0x379fe8(_0xf5ec9c[_0xfe51('0x10')]['message']);}logger[_0xfe51('0x10')]('CmHopper,\x20%s,\x20%s',_0x212a7b,_0xf5ec9c[_0xfe51('0x10')][_0xfe51('0x12')]);return _0x42294c(_0xf5ec9c[_0xfe51('0x10')][_0xfe51('0x12')]);}else{logger[_0xfe51('0x13')]('CmHopper,\x20%s,\x20%s',_0x212a7b,_0xfe51('0xc'));_0x42294c(_0xf5ec9c['result'][_0xfe51('0x12')]);}})[_0xfe51('0x14')](function(_0x5d7372){logger[_0xfe51('0x10')]('CmHopper,\x20%s,\x20%s',_0x212a7b,_0x5d7372);_0x379fe8(_0x5d7372);});});}exports['GetCmHopper']=function(_0x79db08){var _0x320b40=this;return new Promise(function(_0x869b9f,_0x408e94){return db[_0xfe51('0x15')][_0xfe51('0x16')]({'raw':_0x79db08['options']?_0x79db08['options'][_0xfe51('0x17')]===undefined?!![]:![]:!![],'where':_0x79db08[_0xfe51('0x18')]?_0x79db08[_0xfe51('0x18')][_0xfe51('0x19')]||null:null,'attributes':_0x79db08[_0xfe51('0x18')]?_0x79db08[_0xfe51('0x18')][_0xfe51('0x1a')]||null:null,'limit':_0x79db08[_0xfe51('0x18')]?_0x79db08[_0xfe51('0x18')][_0xfe51('0x1b')]||null:null,'include':_0x79db08[_0xfe51('0x18')]?_0x79db08[_0xfe51('0x18')][_0xfe51('0x1c')]?_[_0xfe51('0x1d')](_0x79db08['options'][_0xfe51('0x1c')],function(_0x1afb87){return{'model':db[_0x1afb87[_0xfe51('0x1e')]],'as':_0x1afb87['as'],'attributes':_0x1afb87['attributes'],'include':_0x1afb87[_0xfe51('0x1c')]?_['map'](_0x1afb87['include'],function(_0x9599c4){return{'model':db[_0x9599c4['model']],'as':_0x9599c4['as'],'attributes':_0x9599c4[_0xfe51('0x1a')],'include':_0x9599c4[_0xfe51('0x1c')]?_['map'](_0x9599c4[_0xfe51('0x1c')],function(_0x5d953f){return{'model':db[_0x5d953f[_0xfe51('0x1e')]],'as':_0x5d953f['as'],'attributes':_0x5d953f[_0xfe51('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1f2295){logger[_0xfe51('0x13')](_0xfe51('0x1f'),_0x79db08);logger['debug'](_0xfe51('0x1f'),_0x79db08,JSON[_0xfe51('0xf')](_0x1f2295));_0x869b9f(_0x1f2295);})[_0xfe51('0x14')](function(_0x550890){logger[_0xfe51('0x10')](_0xfe51('0x1f'),_0x550890['message'],_0x79db08);_0x408e94(_0x320b40[_0xfe51('0x10')](0x1f4,_0x550890[_0xfe51('0x12')]));});});};exports[_0xfe51('0x20')]=function(_0x3e2255){var _0x3269ef=this;return new Promise(function(_0x28d5f5,_0x584387){return db[_0xfe51('0x15')][_0xfe51('0x21')]({'raw':_0x3e2255[_0xfe51('0x18')]?_0x3e2255[_0xfe51('0x18')][_0xfe51('0x17')]===undefined?!![]:![]:!![],'where':_0x3e2255[_0xfe51('0x18')]?_0x3e2255[_0xfe51('0x18')][_0xfe51('0x19')]||null:null,'attributes':_0x3e2255[_0xfe51('0x18')]?_0x3e2255[_0xfe51('0x18')][_0xfe51('0x1a')]||null:null,'include':_0x3e2255[_0xfe51('0x18')]?_0x3e2255[_0xfe51('0x18')]['include']?_[_0xfe51('0x1d')](_0x3e2255[_0xfe51('0x18')][_0xfe51('0x1c')],function(_0x178295){return{'model':db[_0x178295['model']],'as':_0x178295['as'],'attributes':_0x178295['attributes'],'include':_0x178295[_0xfe51('0x1c')]?_[_0xfe51('0x1d')](_0x178295[_0xfe51('0x1c')],function(_0x4804db){return{'model':db[_0x4804db[_0xfe51('0x1e')]],'as':_0x4804db['as'],'attributes':_0x4804db[_0xfe51('0x1a')],'include':_0x4804db['include']?_[_0xfe51('0x1d')](_0x4804db[_0xfe51('0x1c')],function(_0x38c0e4){return{'model':db[_0x38c0e4['model']],'as':_0x38c0e4['as'],'attributes':_0x38c0e4[_0xfe51('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xad6edd){logger[_0xfe51('0x13')]('ShowCmHopper',_0x3e2255);logger[_0xfe51('0xd')](_0xfe51('0x20'),_0x3e2255,JSON[_0xfe51('0xf')](_0xad6edd));_0x28d5f5(_0xad6edd);})[_0xfe51('0x14')](function(_0x502803){logger[_0xfe51('0x10')]('ShowCmHopper',_0x502803['message'],_0x3e2255);_0x584387(_0x3269ef[_0xfe51('0x10')](0x1f4,_0x502803[_0xfe51('0x12')]));});});};exports['CreateCmHopper']=function(_0x2fae42){var _0xdd4485=this;return new Promise(function(_0xd55eac,_0x200e6e){return db[_0xfe51('0x15')][_0xfe51('0x22')](_0x2fae42['body'],{'raw':_0x2fae42[_0xfe51('0x18')]?_0x2fae42[_0xfe51('0x18')][_0xfe51('0x17')]===undefined?!![]:![]:!![]})[_0xfe51('0xa')](function(_0x4970a5){logger[_0xfe51('0x13')](_0xfe51('0x23'),_0x2fae42);logger[_0xfe51('0xd')](_0xfe51('0x23'),_0x2fae42,JSON['stringify'](_0x4970a5));_0xd55eac(_0x4970a5);})[_0xfe51('0x14')](function(_0x3bc8c8){logger[_0xfe51('0x10')](_0xfe51('0x23'),_0x3bc8c8[_0xfe51('0x12')],_0x2fae42);_0x200e6e(_0xdd4485[_0xfe51('0x10')](0x1f4,_0x3bc8c8[_0xfe51('0x12')]));});});};exports[_0xfe51('0x24')]=function(_0x56b3bb){var _0x4e3300=this;return new Promise(function(_0x54faf2,_0x4cc6e2){return db[_0xfe51('0x15')][_0xfe51('0x25')](_0x56b3bb[_0xfe51('0x26')],{'raw':_0x56b3bb[_0xfe51('0x18')]?_0x56b3bb['options'][_0xfe51('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x56b3bb[_0xfe51('0x18')]?_0x56b3bb[_0xfe51('0x18')]['where']||null:null,'attributes':_0x56b3bb[_0xfe51('0x18')]?_0x56b3bb[_0xfe51('0x18')][_0xfe51('0x1a')]||null:null,'limit':_0x56b3bb['options']?_0x56b3bb[_0xfe51('0x18')]['limit']||null:null})[_0xfe51('0xa')](function(_0x3eba8e){logger[_0xfe51('0x13')](_0xfe51('0x24'),_0x56b3bb);logger['debug'](_0xfe51('0x24'),_0x56b3bb,JSON['stringify'](_0x3eba8e));_0x54faf2(_0x3eba8e);})['catch'](function(_0x333b0e){logger[_0xfe51('0x10')](_0xfe51('0x24'),_0x333b0e[_0xfe51('0x12')],_0x56b3bb);_0x4cc6e2(_0x4e3300['error'](0x1f4,_0x333b0e['message']));});});};exports[_0xfe51('0x27')]=function(_0x41ebe5){var _0x21a29b=this;return new Promise(function(_0x1a8f0d,_0x4b1136){return db['CmHopper']['destroy']({'where':_0x41ebe5[_0xfe51('0x18')]?_0x41ebe5['options'][_0xfe51('0x19')]||null:null})[_0xfe51('0xa')](function(_0x159790){logger[_0xfe51('0x13')](_0xfe51('0x27'),_0x41ebe5);logger['debug']('DestroyCmHopper',_0x41ebe5,JSON['stringify'](_0x159790));_0x1a8f0d(_0x159790);})['catch'](function(_0x2bcc22){logger[_0xfe51('0x10')](_0xfe51('0x27'),_0x2bcc22[_0xfe51('0x12')],_0x41ebe5);_0x4b1136(_0x21a29b[_0xfe51('0x10')](0x1f4,_0x2bcc22[_0xfe51('0x12')]));});});};exports['GetContactDialer']=function(_0xcb3dfc){var _0x5b44b4=this;return new Promise(function(_0x42087b,_0x228aad){return db['CmContact'][_0xfe51('0x28')]()[_0xfe51('0xa')](function(_0x51ba9b){return db[_0xfe51('0x29')][_0xfe51('0x2a')](function(_0x3ea055){return db[_0xfe51('0x15')][_0xfe51('0x16')]({'where':_0xcb3dfc[_0xfe51('0x18')]?_0xcb3dfc[_0xfe51('0x18')][_0xfe51('0x19')]||null:null,'attributes':_0xcb3dfc[_0xfe51('0x18')]?_0xcb3dfc['options'][_0xfe51('0x1a')]||null:null,'limit':_0xcb3dfc[_0xfe51('0x18')]?_0xcb3dfc[_0xfe51('0x18')][_0xfe51('0x1b')]||null:null,'order':_0xcb3dfc[_0xfe51('0x18')]?_0xcb3dfc[_0xfe51('0x18')][_0xfe51('0x2b')]||null:null,'transaction':_0x3ea055,'lock':_0x3ea055['LOCK'][_0xfe51('0x2c')],'include':[{'model':db[_0xfe51('0x2d')],'as':_0xfe51('0x2e'),'attributes':_['keys'](_0x51ba9b)},{'model':db['User'],'as':_0xfe51('0x2f'),'attributes':['id','name',_0xfe51('0x30')]}]})['then'](function(_0x51f090){var _0x785c59=[];var _0x255c90=[];for(var _0x4d2231=0x0;_0x4d2231<_0x51f090['length'];_0x4d2231+=0x1){var _0x2e3d93=_0x51f090[_0x4d2231][_0xfe51('0x31')];if(_0x2e3d93===null){_0x785c59[_0xfe51('0x32')](_0x51f090[_0x4d2231]['update'](_0xcb3dfc[_0xfe51('0x26')],{'transaction':_0x3ea055}));}else if(!_0x255c90['includes'](_0x2e3d93)){_0x255c90[_0xfe51('0x32')](_0x2e3d93);_0x785c59['push'](_0x51f090[_0x4d2231]['update'](_0xcb3dfc['body'],{'transaction':_0x3ea055}));}}return BPromise[_0xfe51('0x33')](_0x785c59);});})[_0xfe51('0xa')](function(_0x57284a){logger[_0xfe51('0x13')]('GetContactDialer',_0xcb3dfc);logger[_0xfe51('0xd')](_0xfe51('0x34'),_0xcb3dfc,JSON['stringify'](_0x57284a));_0x42087b(_0x57284a);})[_0xfe51('0x14')](function(_0x8c66c3){logger[_0xfe51('0x10')](_0xfe51('0x34'),_0x8c66c3[_0xfe51('0x12')],_0xcb3dfc);_0x228aad(_0x5b44b4[_0xfe51('0x10')](0x1f4,_0x8c66c3['message']));});});});};exports[_0xfe51('0x35')]=function(_0x963883){var _0xc5c412=this;return new Promise(function(_0x3e4af2,_0x230fa5){return db['sequelize'][_0xfe51('0x2a')](function(_0x34940f){return db[_0xfe51('0x36')]['create'](_0x963883[_0xfe51('0x26')],{'raw':_0x963883[_0xfe51('0x18')]?_0x963883[_0xfe51('0x18')]['raw']===undefined?!![]:![]:!![],'transaction':_0x34940f})[_0xfe51('0xa')](function(){return db[_0xfe51('0x15')][_0xfe51('0x37')]({'where':_0x963883[_0xfe51('0x18')]?_0x963883[_0xfe51('0x18')][_0xfe51('0x19')]||null:null,'transaction':_0x34940f});});})['then'](function(_0x3cb017){logger['info']('MoveContactManagedDialer',_0x963883);logger['debug'](_0xfe51('0x35'),_0x963883,JSON[_0xfe51('0xf')](_0x3cb017));_0x3e4af2(_0x3cb017);})[_0xfe51('0x14')](function(_0x30547c){logger[_0xfe51('0x10')](_0xfe51('0x35'),_0x30547c[_0xfe51('0x12')],_0x963883);_0x230fa5(_0xc5c412[_0xfe51('0x10')](0x1f4,_0x30547c['message']));});});};exports['CountReScheduled']=function(_0x50be5e){var _0x1c91a9=this;return new Promise(function(_0x514aad,_0xcaad07){return db[_0xfe51('0x15')][_0xfe51('0x16')]({'raw':_0x50be5e[_0xfe51('0x18')]?_0x50be5e['options'][_0xfe51('0x17')]===undefined?!![]:![]:!![],'where':_0x50be5e['options']?_0x50be5e[_0xfe51('0x18')]['where']||null:null,'attributes':[[db[_0xfe51('0x29')]['fn'](_0xfe51('0x38'),db[_0xfe51('0x29')]['fn']('IF',db[_0xfe51('0x29')][_0xfe51('0x39')](_0xfe51('0x3a')+util[_0xfe51('0x3b')](_0xfe51('0x3c'),moment()[_0xfe51('0x3b')](_0xfe51('0x3d')))+_0xfe51('0x3e')))),_0xfe51('0x3f')]]})[_0xfe51('0xa')](function(_0x1ec3e2){logger[_0xfe51('0x13')](_0xfe51('0x40'),_0x50be5e);logger[_0xfe51('0xd')]('CountReScheduled',_0x50be5e,JSON[_0xfe51('0xf')](_0x1ec3e2));_0x514aad(_0x1ec3e2);})[_0xfe51('0x14')](function(_0x578211){logger[_0xfe51('0x10')](_0xfe51('0x40'),_0x578211[_0xfe51('0x12')],_0x50be5e);_0xcaad07(_0x1c91a9['error'](0x1f4,_0x578211[_0xfe51('0x12')]));});});};exports[_0xfe51('0x41')]=function(_0x4bb774){var _0x2748d3=this;return new Promise(function(_0x384f25,_0x572b46){return db['CmContact']['describe']()[_0xfe51('0xa')](function(_0x259066){return db[_0xfe51('0x29')]['transaction'](function(_0x2956de){return db[_0xfe51('0x15')]['findAll']({'where':_0x4bb774[_0xfe51('0x18')]?_0x4bb774[_0xfe51('0x18')][_0xfe51('0x19')]||null:null,'attributes':_0x4bb774[_0xfe51('0x18')]?_0x4bb774[_0xfe51('0x18')][_0xfe51('0x1a')]||null:null,'limit':0x1,'order':_0x4bb774[_0xfe51('0x18')]?_0x4bb774[_0xfe51('0x18')]['order']||null:null,'group':db[_0xfe51('0x15')]['UserId'],'transaction':_0x2956de,'lock':_0x2956de[_0xfe51('0x42')][_0xfe51('0x2c')],'include':_0x4bb774[_0xfe51('0x18')]?_0x4bb774[_0xfe51('0x18')]['include']?_['map'](_0x4bb774[_0xfe51('0x18')][_0xfe51('0x1c')],function(_0x9c77a4){return{'model':db[_0x9c77a4[_0xfe51('0x1e')]],'as':_0x9c77a4['as'],'attributes':_0x9c77a4[_0xfe51('0x1a')],'include':_0x9c77a4[_0xfe51('0x1c')]?_[_0xfe51('0x1d')](_0x9c77a4[_0xfe51('0x1c')],function(_0x551b00){return{'model':db[_0x551b00[_0xfe51('0x1e')]],'as':_0x551b00['as'],'attributes':_0x551b00[_0xfe51('0x1a')],'include':_0x551b00[_0xfe51('0x1c')]?_[_0xfe51('0x1d')](_0x551b00[_0xfe51('0x1c')],function(_0x4e3820){return{'model':db[_0x4e3820['model']],'as':_0x4e3820['as'],'attributes':_0x4e3820[_0xfe51('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1602e9){var _0x14df1b=[];for(var _0x5e512a=0x0;_0x5e512a<_0x1602e9[_0xfe51('0x43')];_0x5e512a+=0x1){_0x14df1b[_0xfe51('0x32')](_0x1602e9[_0x5e512a][_0xfe51('0x25')](_0x4bb774[_0xfe51('0x26')],{'transaction':_0x2956de}));}return BPromise[_0xfe51('0x33')](_0x14df1b);});})[_0xfe51('0xa')](function(_0x5d781a){logger[_0xfe51('0x13')](_0xfe51('0x41'),_0x4bb774);logger[_0xfe51('0xd')](_0xfe51('0x41'),_0x4bb774,JSON[_0xfe51('0xf')](_0x5d781a));_0x384f25(_0x5d781a);})[_0xfe51('0x14')](function(_0x196d6a){logger[_0xfe51('0x10')](_0xfe51('0x41'),_0x196d6a[_0xfe51('0x12')],_0x4bb774);_0x572b46(_0x2748d3[_0xfe51('0x10')](0x1f4,_0x196d6a[_0xfe51('0x12')]));});});});};exports[_0xfe51('0x44')]=function(_0x5eb79f){var _0x169212=this;return new Promise(function(_0x59944e,_0x29b333){db[_0xfe51('0x2d')][_0xfe51('0x28')]()[_0xfe51('0xa')](function(_0x1da18e){return db[_0xfe51('0x15')]['findAll']({'raw':_0x5eb79f['options']?_0x5eb79f['options'][_0xfe51('0x17')]===undefined?!![]:![]:!![],'where':_0x5eb79f[_0xfe51('0x18')]?_0x5eb79f[_0xfe51('0x18')][_0xfe51('0x19')]||null:null,'attributes':_0x5eb79f[_0xfe51('0x18')]?_0x5eb79f[_0xfe51('0x18')][_0xfe51('0x1a')]||null:null,'limit':_0x5eb79f['options']?_0x5eb79f[_0xfe51('0x18')][_0xfe51('0x1b')]||null:null,'include':_0x5eb79f[_0xfe51('0x18')]?_0x5eb79f[_0xfe51('0x18')][_0xfe51('0x1c')]?_[_0xfe51('0x1d')](_0x5eb79f[_0xfe51('0x18')][_0xfe51('0x1c')],function(_0xf4dc8e){return{'model':db[_0xf4dc8e['model']],'as':_0xf4dc8e['as'],'attributes':_0xf4dc8e['as']==='Contact'?_['keys'](_0x1da18e):_0xf4dc8e[_0xfe51('0x1a')],'include':_0xf4dc8e['include']?_['map'](_0xf4dc8e['include'],function(_0x333f41){return{'model':db[_0x333f41[_0xfe51('0x1e')]],'as':_0x333f41['as'],'attributes':_0x333f41[_0xfe51('0x1a')],'include':_0x333f41[_0xfe51('0x1c')]?_[_0xfe51('0x1d')](_0x333f41[_0xfe51('0x1c')],function(_0x6caa0e){return{'model':db[_0x6caa0e[_0xfe51('0x1e')]],'as':_0x6caa0e['as'],'attributes':_0x6caa0e['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5c542e){logger[_0xfe51('0x13')](_0xfe51('0x1f'),_0x5eb79f);logger[_0xfe51('0xd')](_0xfe51('0x1f'),_0x5eb79f,JSON['stringify'](_0x5c542e));_0x59944e(_0x5c542e);})['catch'](function(_0x5298e3){logger[_0xfe51('0x10')](_0xfe51('0x1f'),_0x5298e3[_0xfe51('0x12')],_0x5eb79f);_0x29b333(_0x169212['error'](0x1f4,_0x5298e3[_0xfe51('0x12')]));});});});};
\ No newline at end of file
index 14cc02a..1f42fb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3123=['delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmHopper.controller','get','index','isAuthenticated','describe','/opencontacts','getOpenContacts','/:id','create','/preview','getPreview','put','update'];(function(_0x309515,_0x55f470){var _0x51f8bd=function(_0x4cd1ee){while(--_0x4cd1ee){_0x309515['push'](_0x309515['shift']());}};_0x51f8bd(++_0x55f470);}(_0x3123,0xc3));var _0x3312=function(_0x305abc,_0x41da61){_0x305abc=_0x305abc-0x0;var _0x2fa55c=_0x3123[_0x305abc];return _0x2fa55c;};'use strict';var multer=require(_0x3312('0x0'));var util=require('util');var path=require(_0x3312('0x1'));var timeout=require(_0x3312('0x2'));var express=require(_0x3312('0x3'));var router=express[_0x3312('0x4')]();var fs_extra=require(_0x3312('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3312('0x6'));var config=require(_0x3312('0x7'));var controller=require(_0x3312('0x8'));router[_0x3312('0x9')]('/',auth['isAuthenticated'](),controller[_0x3312('0xa')]);router[_0x3312('0x9')]('/describe',auth[_0x3312('0xb')](),controller[_0x3312('0xc')]);router['get'](_0x3312('0xd'),auth[_0x3312('0xb')](),controller[_0x3312('0xe')]);router[_0x3312('0x9')](_0x3312('0xf'),auth[_0x3312('0xb')](),controller['show']);router['post']('/',auth[_0x3312('0xb')](),controller[_0x3312('0x10')]);router['post'](_0x3312('0x11'),auth[_0x3312('0xb')](),controller[_0x3312('0x12')]);router[_0x3312('0x13')](_0x3312('0xf'),auth[_0x3312('0xb')](),controller[_0x3312('0x14')]);router[_0x3312('0x15')]('/:id',auth[_0x3312('0xb')](),controller[_0x3312('0x16')]);module[_0x3312('0x17')]=router;
\ No newline at end of file
+var _0x7eaa=['/describe','/opencontacts','getOpenContacts','/:id','show','post','create','/preview','put','delete','destroy','exports','Router','../../components/auth/service','../../config/environment','get','isAuthenticated'];(function(_0x24db2b,_0x3a5876){var _0x487ebb=function(_0x337108){while(--_0x337108){_0x24db2b['push'](_0x24db2b['shift']());}};_0x487ebb(++_0x3a5876);}(_0x7eaa,0x1a4));var _0xa7ea=function(_0x59de90,_0x2c9c1c){_0x59de90=_0x59de90-0x0;var _0x5f42b3=_0x7eaa[_0x59de90];return _0x5f42b3;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa7ea('0x0')]();var fs_extra=require('fs-extra');var auth=require(_0xa7ea('0x1'));var interaction=require('../../components/interaction/service');var config=require(_0xa7ea('0x2'));var controller=require('./cmHopper.controller');router[_0xa7ea('0x3')]('/',auth[_0xa7ea('0x4')](),controller['index']);router[_0xa7ea('0x3')](_0xa7ea('0x5'),auth['isAuthenticated'](),controller['describe']);router['get'](_0xa7ea('0x6'),auth[_0xa7ea('0x4')](),controller[_0xa7ea('0x7')]);router[_0xa7ea('0x3')](_0xa7ea('0x8'),auth[_0xa7ea('0x4')](),controller[_0xa7ea('0x9')]);router[_0xa7ea('0xa')]('/',auth[_0xa7ea('0x4')](),controller[_0xa7ea('0xb')]);router['post'](_0xa7ea('0xc'),auth[_0xa7ea('0x4')](),controller['getPreview']);router[_0xa7ea('0xd')](_0xa7ea('0x8'),auth['isAuthenticated'](),controller['update']);router[_0xa7ea('0xe')]('/:id',auth['isAuthenticated'](),controller[_0xa7ea('0xf')]);module[_0xa7ea('0x10')]=router;
\ No newline at end of file
index 13c2861..2ef450c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2706=['STRING','INTEGER','contactListQueue','sequelize','exports'];(function(_0x340380,_0x4bd2a8){var _0x49ce1c=function(_0x4cb9e2){while(--_0x4cb9e2){_0x340380['push'](_0x340380['shift']());}};_0x49ce1c(++_0x4bd2a8);}(_0x2706,0x107));var _0x6270=function(_0x5c94ec,_0x45d06e){_0x5c94ec=_0x5c94ec-0x0;var _0x16b3a8=_0x2706[_0x5c94ec];return _0x16b3a8;};'use strict';var moment=require('moment');var Sequelize=require(_0x6270('0x0'));module[_0x6270('0x1')]={'phone':{'type':Sequelize[_0x6270('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x6270('0x3')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x6270('0x3')],'unique':_0x6270('0x4')},'VoiceQueueId':{'type':Sequelize[_0x6270('0x3')],'unique':_0x6270('0x4')}};
\ No newline at end of file
+var _0x5d87=['STRING','INTEGER','contactListQueue','moment','sequelize','exports'];(function(_0x31c062,_0x2a40e4){var _0x541b8a=function(_0x4e7ee6){while(--_0x4e7ee6){_0x31c062['push'](_0x31c062['shift']());}};_0x541b8a(++_0x2a40e4);}(_0x5d87,0x16b));var _0x75d8=function(_0x3ea3f9,_0x41e7a1){_0x3ea3f9=_0x3ea3f9-0x0;var _0x4cb191=_0x5d87[_0x3ea3f9];return _0x4cb191;};'use strict';var moment=require(_0x75d8('0x0'));var Sequelize=require(_0x75d8('0x1'));module[_0x75d8('0x2')]={'phone':{'type':Sequelize[_0x75d8('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x75d8('0x4')],'unique':_0x75d8('0x5')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x75d8('0x5')},'VoiceQueueId':{'type':Sequelize[_0x75d8('0x4')],'unique':'contactListQueue'}};
\ No newline at end of file
index 48edc53..b9761ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93ef=['key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','CmHopperBlack','findAll','catch','find','body','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','stack','name','index','map','rawAttributes','fieldName','type'];(function(_0x131545,_0x1849fe){var _0xb88554=function(_0xa4908){while(--_0xa4908){_0x131545['push'](_0x131545['shift']());}};_0xb88554(++_0x1849fe);}(_0x93ef,0x192));var _0xf93e=function(_0x19c0d9,_0x30fcec){_0x19c0d9=_0x19c0d9-0x0;var _0x4bafb4=_0x93ef[_0x19c0d9];return _0x4bafb4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf93e('0x0'));var zipdir=require(_0xf93e('0x1'));var jsonpatch=require(_0xf93e('0x2'));var rp=require(_0xf93e('0x3'));var moment=require(_0xf93e('0x4'));var BPromise=require(_0xf93e('0x5'));var Mustache=require(_0xf93e('0x6'));var util=require(_0xf93e('0x7'));var path=require(_0xf93e('0x8'));var sox=require(_0xf93e('0x9'));var csv=require(_0xf93e('0xa'));var ejs=require(_0xf93e('0xb'));var fs=require('fs');var fs_extra=require(_0xf93e('0xc'));var _=require(_0xf93e('0xd'));var squel=require('squel');var crypto=require(_0xf93e('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xf93e('0xf'));var toCsv=require('to-csv');var querystring=require(_0xf93e('0x10'));var Papa=require(_0xf93e('0x11'));var Redis=require(_0xf93e('0x12'));var authService=require(_0xf93e('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf93e('0x14'));var logger=require(_0xf93e('0x15'))('api');var utils=require(_0xf93e('0x16'));var config=require(_0xf93e('0x17'));var licenseUtil=require(_0xf93e('0x18'));var db=require(_0xf93e('0x19'))['db'];function respondWithStatusCode(_0x4e0d5d,_0x5ca418){_0x5ca418=_0x5ca418||0xcc;return function(_0x575ae9){if(_0x575ae9){return _0x4e0d5d[_0xf93e('0x1a')](_0x5ca418);}return _0x4e0d5d[_0xf93e('0x1b')](_0x5ca418)[_0xf93e('0x1c')]();};}function respondWithResult(_0x35d323,_0x2c5a2c){_0x2c5a2c=_0x2c5a2c||0xc8;return function(_0x1d5e2d){if(_0x1d5e2d){return _0x35d323[_0xf93e('0x1b')](_0x2c5a2c)[_0xf93e('0x1d')](_0x1d5e2d);}};}function respondWithFilteredResult(_0x35e0df,_0x11e2d1){return function(_0x3693db){if(_0x3693db){var _0x18bb75=typeof _0x11e2d1[_0xf93e('0x1e')]===_0xf93e('0x1f')&&typeof _0x11e2d1[_0xf93e('0x20')]==='undefined';var _0x6b4404=_0x3693db[_0xf93e('0x21')];var _0x3acf0d=_0x18bb75?0x0:_0x11e2d1[_0xf93e('0x1e')];var _0x329e06=_0x18bb75?_0x3693db[_0xf93e('0x21')]:_0x11e2d1[_0xf93e('0x1e')]+_0x11e2d1[_0xf93e('0x20')];var _0x30a458;if(_0x329e06>=_0x6b4404){_0x329e06=_0x6b4404;_0x30a458=0xc8;}else{_0x30a458=0xce;}_0x35e0df[_0xf93e('0x1b')](_0x30a458);return _0x35e0df[_0xf93e('0x22')]('Content-Range',_0x3acf0d+'-'+_0x329e06+'/'+_0x6b4404)[_0xf93e('0x1d')](_0x3693db);}return null;};}function patchUpdates(_0x549456){return function(_0x42083c){try{jsonpatch[_0xf93e('0x23')](_0x42083c,_0x549456,!![]);}catch(_0x32b1f2){return BPromise[_0xf93e('0x24')](_0x32b1f2);}return _0x42083c[_0xf93e('0x25')]();};}function saveUpdates(_0x48d578,_0x110a6f){return function(_0x36a955){if(_0x36a955){return _0x36a955[_0xf93e('0x26')](_0x48d578)[_0xf93e('0x27')](function(_0xc7dcad){return _0xc7dcad;});}return null;};}function removeEntity(_0x3909e5,_0xc93583){return function(_0x4488f6){if(_0x4488f6){return _0x4488f6[_0xf93e('0x28')]()['then'](function(){_0x3909e5[_0xf93e('0x1b')](0xcc)[_0xf93e('0x1c')]();});}};}function handleEntityNotFound(_0x229f16,_0x3409b6){return function(_0x2aaff4){if(!_0x2aaff4){_0x229f16[_0xf93e('0x1a')](0x194);}return _0x2aaff4;};}function handleError(_0x2ba0e7,_0x50b1c8){_0x50b1c8=_0x50b1c8||0x1f4;return function(_0x2fe47e){logger['error'](_0x2fe47e[_0xf93e('0x29')]);if(_0x2fe47e[_0xf93e('0x2a')]){delete _0x2fe47e['name'];}_0x2ba0e7[_0xf93e('0x1b')](_0x50b1c8)['send'](_0x2fe47e);};}exports[_0xf93e('0x2b')]=function(_0x3b2b3b,_0x2f145d){var _0x5a79e3={},_0x515a3d={},_0x55a488={'count':0x0,'rows':[]};var _0x354a97=_[_0xf93e('0x2c')](db['CmHopperBlack'][_0xf93e('0x2d')],function(_0x5f4b62){return{'name':_0x5f4b62[_0xf93e('0x2e')],'type':_0x5f4b62[_0xf93e('0x2f')][_0xf93e('0x30')]};});_0x515a3d['model']=_[_0xf93e('0x2c')](_0x354a97,_0xf93e('0x2a'));_0x515a3d[_0xf93e('0x31')]=_[_0xf93e('0x32')](_0x3b2b3b[_0xf93e('0x31')]);_0x515a3d[_0xf93e('0x33')]=_[_0xf93e('0x34')](_0x515a3d[_0xf93e('0x35')],_0x515a3d[_0xf93e('0x31')]);_0x5a79e3[_0xf93e('0x36')]=_[_0xf93e('0x34')](_0x515a3d[_0xf93e('0x35')],qs[_0xf93e('0x37')](_0x3b2b3b[_0xf93e('0x31')][_0xf93e('0x37')]));_0x5a79e3['attributes']=_0x5a79e3[_0xf93e('0x36')][_0xf93e('0x38')]?_0x5a79e3['attributes']:_0x515a3d[_0xf93e('0x35')];if(!_0x3b2b3b[_0xf93e('0x31')][_0xf93e('0x39')](_0xf93e('0x3a'))){_0x5a79e3[_0xf93e('0x20')]=qs[_0xf93e('0x20')](_0x3b2b3b[_0xf93e('0x31')][_0xf93e('0x20')]);_0x5a79e3[_0xf93e('0x1e')]=qs['offset'](_0x3b2b3b['query']['offset']);}_0x5a79e3[_0xf93e('0x3b')]=qs[_0xf93e('0x3c')](_0x3b2b3b[_0xf93e('0x31')][_0xf93e('0x3c')]);_0x5a79e3[_0xf93e('0x3d')]=qs[_0xf93e('0x33')](_['pick'](_0x3b2b3b[_0xf93e('0x31')],_0x515a3d['filters']),_0x354a97);if(_0x3b2b3b[_0xf93e('0x31')][_0xf93e('0x3e')]){_0x5a79e3['where']=_[_0xf93e('0x3f')](_0x5a79e3[_0xf93e('0x3d')],{'$or':_[_0xf93e('0x2c')](_0x354a97,function(_0x272a07){if(_0x272a07[_0xf93e('0x2f')]!==_0xf93e('0x40')){var _0x48b23d={};_0x48b23d[_0x272a07[_0xf93e('0x2a')]]={'$like':'%'+_0x3b2b3b['query'][_0xf93e('0x3e')]+'%'};return _0x48b23d;}})});}_0x5a79e3=_['merge']({},_0x5a79e3,_0x3b2b3b[_0xf93e('0x41')]);var _0x4dee81={'where':_0x5a79e3[_0xf93e('0x3d')]};return db['CmHopperBlack'][_0xf93e('0x21')](_0x4dee81)['then'](function(_0x540376){_0x55a488[_0xf93e('0x21')]=_0x540376;if(_0x3b2b3b[_0xf93e('0x31')][_0xf93e('0x42')]){_0x5a79e3[_0xf93e('0x43')]=[{'all':!![]}];}return db[_0xf93e('0x44')][_0xf93e('0x45')](_0x5a79e3);})['then'](function(_0x30d04e){_0x55a488['rows']=_0x30d04e;return _0x55a488;})[_0xf93e('0x27')](respondWithFilteredResult(_0x2f145d,_0x5a79e3))[_0xf93e('0x46')](handleError(_0x2f145d,null));};exports['show']=function(_0x304c79,_0x35eced){var _0x4eccf9={'raw':!![],'where':{'id':_0x304c79['params']['id']}},_0x44d0ef={};_0x44d0ef[_0xf93e('0x35')]=_[_0xf93e('0x32')](db[_0xf93e('0x44')][_0xf93e('0x2d')]);_0x44d0ef[_0xf93e('0x31')]=_[_0xf93e('0x32')](_0x304c79[_0xf93e('0x31')]);_0x44d0ef[_0xf93e('0x33')]=_[_0xf93e('0x34')](_0x44d0ef[_0xf93e('0x35')],_0x44d0ef[_0xf93e('0x31')]);_0x4eccf9[_0xf93e('0x36')]=_[_0xf93e('0x34')](_0x44d0ef['model'],qs['fields'](_0x304c79[_0xf93e('0x31')][_0xf93e('0x37')]));_0x4eccf9[_0xf93e('0x36')]=_0x4eccf9[_0xf93e('0x36')][_0xf93e('0x38')]?_0x4eccf9['attributes']:_0x44d0ef[_0xf93e('0x35')];if(_0x304c79['query'][_0xf93e('0x42')]){_0x4eccf9['include']=[{'all':!![]}];}_0x4eccf9=_[_0xf93e('0x3f')]({},_0x4eccf9,_0x304c79[_0xf93e('0x41')]);return db['CmHopperBlack'][_0xf93e('0x47')](_0x4eccf9)[_0xf93e('0x27')](handleEntityNotFound(_0x35eced,null))['then'](respondWithResult(_0x35eced,null))[_0xf93e('0x46')](handleError(_0x35eced,null));};exports[_0xf93e('0x26')]=function(_0x331dc2,_0x5b64c2){if(_0x331dc2['body']['id']){delete _0x331dc2[_0xf93e('0x48')]['id'];}return db[_0xf93e('0x44')][_0xf93e('0x47')]({'where':{'id':_0x331dc2[_0xf93e('0x49')]['id']}})[_0xf93e('0x27')](handleEntityNotFound(_0x5b64c2,null))[_0xf93e('0x27')](saveUpdates(_0x331dc2[_0xf93e('0x48')],null))[_0xf93e('0x27')](respondWithResult(_0x5b64c2,null))[_0xf93e('0x46')](handleError(_0x5b64c2,null));};exports[_0xf93e('0x28')]=function(_0x41d37f,_0x4f2135){return db[_0xf93e('0x44')]['find']({'where':{'id':_0x41d37f[_0xf93e('0x49')]['id']}})[_0xf93e('0x27')](handleEntityNotFound(_0x4f2135,null))[_0xf93e('0x27')](removeEntity(_0x4f2135,null))['catch'](handleError(_0x4f2135,null));};exports[_0xf93e('0x4a')]=function(_0x16cc5b,_0x5b061f){return db[_0xf93e('0x44')][_0xf93e('0x4a')]()['then'](respondWithResult(_0x5b061f,null))[_0xf93e('0x46')](handleError(_0x5b061f,null));};
\ No newline at end of file
+var _0x2193=['rimraf','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','CmHopperBlack','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','type','merge','includeAll','include','findAll','catch','show','options','find','body','params','destroy','describe','eml-format'];(function(_0x11f0e3,_0x5170bc){var _0x2892e8=function(_0x3292b2){while(--_0x3292b2){_0x11f0e3['push'](_0x11f0e3['shift']());}};_0x2892e8(++_0x5170bc);}(_0x2193,0x1f0));var _0x3219=function(_0x9d2817,_0x3c2c17){_0x9d2817=_0x9d2817-0x0;var _0x5f24d6=_0x2193[_0x9d2817];return _0x5f24d6;};'use strict';var emlformat=require(_0x3219('0x0'));var rimraf=require(_0x3219('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3219('0x2'));var rp=require(_0x3219('0x3'));var moment=require(_0x3219('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x3219('0x5'));var util=require(_0x3219('0x6'));var path=require('path');var sox=require(_0x3219('0x7'));var csv=require('to-csv');var ejs=require(_0x3219('0x8'));var fs=require('fs');var fs_extra=require(_0x3219('0x9'));var _=require(_0x3219('0xa'));var squel=require(_0x3219('0xb'));var crypto=require('crypto');var jsforce=require(_0x3219('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x3219('0xd'));var Redis=require(_0x3219('0xe'));var authService=require(_0x3219('0xf'));var qs=require(_0x3219('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x3219('0x11'));var utils=require(_0x3219('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x3219('0x13'))['db'];function respondWithStatusCode(_0x5f1a9a,_0x43ef8b){_0x43ef8b=_0x43ef8b||0xcc;return function(_0xb7afaf){if(_0xb7afaf){return _0x5f1a9a[_0x3219('0x14')](_0x43ef8b);}return _0x5f1a9a[_0x3219('0x15')](_0x43ef8b)[_0x3219('0x16')]();};}function respondWithResult(_0x2c3318,_0x2685aa){_0x2685aa=_0x2685aa||0xc8;return function(_0x371c57){if(_0x371c57){return _0x2c3318[_0x3219('0x15')](_0x2685aa)['json'](_0x371c57);}};}function respondWithFilteredResult(_0x7a9980,_0x552455){return function(_0x41f425){if(_0x41f425){var _0x438a94=typeof _0x552455[_0x3219('0x17')]===_0x3219('0x18')&&typeof _0x552455[_0x3219('0x19')]==='undefined';var _0x425e97=_0x41f425[_0x3219('0x1a')];var _0x1157a4=_0x438a94?0x0:_0x552455[_0x3219('0x17')];var _0x463308=_0x438a94?_0x41f425[_0x3219('0x1a')]:_0x552455[_0x3219('0x17')]+_0x552455[_0x3219('0x19')];var _0x141de8;if(_0x463308>=_0x425e97){_0x463308=_0x425e97;_0x141de8=0xc8;}else{_0x141de8=0xce;}_0x7a9980['status'](_0x141de8);return _0x7a9980[_0x3219('0x1b')](_0x3219('0x1c'),_0x1157a4+'-'+_0x463308+'/'+_0x425e97)['json'](_0x41f425);}return null;};}function patchUpdates(_0x1aebed){return function(_0x23c48d){try{jsonpatch[_0x3219('0x1d')](_0x23c48d,_0x1aebed,!![]);}catch(_0x132828){return BPromise[_0x3219('0x1e')](_0x132828);}return _0x23c48d[_0x3219('0x1f')]();};}function saveUpdates(_0xd07a04,_0x2621da){return function(_0x397c44){if(_0x397c44){return _0x397c44[_0x3219('0x20')](_0xd07a04)['then'](function(_0x369aaf){return _0x369aaf;});}return null;};}function removeEntity(_0x88666e,_0x3e4c9d){return function(_0x4cea32){if(_0x4cea32){return _0x4cea32['destroy']()[_0x3219('0x21')](function(){_0x88666e[_0x3219('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3cdf47,_0x54d43d){return function(_0x55d8d7){if(!_0x55d8d7){_0x3cdf47['sendStatus'](0x194);}return _0x55d8d7;};}function handleError(_0x428823,_0x3650fb){_0x3650fb=_0x3650fb||0x1f4;return function(_0x2c4f4d){logger[_0x3219('0x22')](_0x2c4f4d[_0x3219('0x23')]);if(_0x2c4f4d[_0x3219('0x24')]){delete _0x2c4f4d[_0x3219('0x24')];}_0x428823[_0x3219('0x15')](_0x3650fb)[_0x3219('0x25')](_0x2c4f4d);};}exports[_0x3219('0x26')]=function(_0x197f50,_0x3dd827){var _0x29ab60={},_0x16fc95={},_0x44d26f={'count':0x0,'rows':[]};var _0x1c71bd=_[_0x3219('0x27')](db[_0x3219('0x28')][_0x3219('0x29')],function(_0x3cb2a1){return{'name':_0x3cb2a1[_0x3219('0x2a')],'type':_0x3cb2a1['type'][_0x3219('0x2b')]};});_0x16fc95[_0x3219('0x2c')]=_['map'](_0x1c71bd,'name');_0x16fc95[_0x3219('0x2d')]=_[_0x3219('0x2e')](_0x197f50[_0x3219('0x2d')]);_0x16fc95[_0x3219('0x2f')]=_[_0x3219('0x30')](_0x16fc95['model'],_0x16fc95[_0x3219('0x2d')]);_0x29ab60[_0x3219('0x31')]=_[_0x3219('0x30')](_0x16fc95['model'],qs[_0x3219('0x32')](_0x197f50[_0x3219('0x2d')][_0x3219('0x32')]));_0x29ab60['attributes']=_0x29ab60['attributes'][_0x3219('0x33')]?_0x29ab60['attributes']:_0x16fc95[_0x3219('0x2c')];if(!_0x197f50['query']['hasOwnProperty'](_0x3219('0x34'))){_0x29ab60['limit']=qs['limit'](_0x197f50['query'][_0x3219('0x19')]);_0x29ab60[_0x3219('0x17')]=qs[_0x3219('0x17')](_0x197f50[_0x3219('0x2d')][_0x3219('0x17')]);}_0x29ab60[_0x3219('0x35')]=qs[_0x3219('0x36')](_0x197f50['query'][_0x3219('0x36')]);_0x29ab60[_0x3219('0x37')]=qs[_0x3219('0x2f')](_[_0x3219('0x38')](_0x197f50[_0x3219('0x2d')],_0x16fc95[_0x3219('0x2f')]),_0x1c71bd);if(_0x197f50[_0x3219('0x2d')][_0x3219('0x39')]){_0x29ab60[_0x3219('0x37')]=_['merge'](_0x29ab60[_0x3219('0x37')],{'$or':_['map'](_0x1c71bd,function(_0x268146){if(_0x268146[_0x3219('0x3a')]!=='VIRTUAL'){var _0x3f5b91={};_0x3f5b91[_0x268146['name']]={'$like':'%'+_0x197f50[_0x3219('0x2d')]['filter']+'%'};return _0x3f5b91;}})});}_0x29ab60=_[_0x3219('0x3b')]({},_0x29ab60,_0x197f50['options']);var _0x18d19e={'where':_0x29ab60[_0x3219('0x37')]};return db[_0x3219('0x28')][_0x3219('0x1a')](_0x18d19e)[_0x3219('0x21')](function(_0x5240fa){_0x44d26f[_0x3219('0x1a')]=_0x5240fa;if(_0x197f50[_0x3219('0x2d')][_0x3219('0x3c')]){_0x29ab60[_0x3219('0x3d')]=[{'all':!![]}];}return db[_0x3219('0x28')][_0x3219('0x3e')](_0x29ab60);})[_0x3219('0x21')](function(_0x39623d){_0x44d26f['rows']=_0x39623d;return _0x44d26f;})['then'](respondWithFilteredResult(_0x3dd827,_0x29ab60))[_0x3219('0x3f')](handleError(_0x3dd827,null));};exports[_0x3219('0x40')]=function(_0x4d5c03,_0x28a54f){var _0x27d574={'raw':!![],'where':{'id':_0x4d5c03['params']['id']}},_0x13a59a={};_0x13a59a[_0x3219('0x2c')]=_[_0x3219('0x2e')](db['CmHopperBlack'][_0x3219('0x29')]);_0x13a59a[_0x3219('0x2d')]=_[_0x3219('0x2e')](_0x4d5c03[_0x3219('0x2d')]);_0x13a59a[_0x3219('0x2f')]=_[_0x3219('0x30')](_0x13a59a[_0x3219('0x2c')],_0x13a59a[_0x3219('0x2d')]);_0x27d574[_0x3219('0x31')]=_[_0x3219('0x30')](_0x13a59a['model'],qs[_0x3219('0x32')](_0x4d5c03[_0x3219('0x2d')][_0x3219('0x32')]));_0x27d574['attributes']=_0x27d574[_0x3219('0x31')][_0x3219('0x33')]?_0x27d574[_0x3219('0x31')]:_0x13a59a[_0x3219('0x2c')];if(_0x4d5c03[_0x3219('0x2d')][_0x3219('0x3c')]){_0x27d574[_0x3219('0x3d')]=[{'all':!![]}];}_0x27d574=_['merge']({},_0x27d574,_0x4d5c03[_0x3219('0x41')]);return db[_0x3219('0x28')][_0x3219('0x42')](_0x27d574)[_0x3219('0x21')](handleEntityNotFound(_0x28a54f,null))[_0x3219('0x21')](respondWithResult(_0x28a54f,null))['catch'](handleError(_0x28a54f,null));};exports[_0x3219('0x20')]=function(_0x2f474d,_0x1cdcbb){if(_0x2f474d[_0x3219('0x43')]['id']){delete _0x2f474d[_0x3219('0x43')]['id'];}return db[_0x3219('0x28')][_0x3219('0x42')]({'where':{'id':_0x2f474d[_0x3219('0x44')]['id']}})[_0x3219('0x21')](handleEntityNotFound(_0x1cdcbb,null))[_0x3219('0x21')](saveUpdates(_0x2f474d['body'],null))[_0x3219('0x21')](respondWithResult(_0x1cdcbb,null))['catch'](handleError(_0x1cdcbb,null));};exports[_0x3219('0x45')]=function(_0x420a67,_0x119566){return db[_0x3219('0x28')][_0x3219('0x42')]({'where':{'id':_0x420a67[_0x3219('0x44')]['id']}})[_0x3219('0x21')](handleEntityNotFound(_0x119566,null))[_0x3219('0x21')](removeEntity(_0x119566,null))[_0x3219('0x3f')](handleError(_0x119566,null));};exports[_0x3219('0x46')]=function(_0x15c598,_0x3870e5){return db['CmHopperBlack'][_0x3219('0x46')]()[_0x3219('0x21')](respondWithResult(_0x3870e5,null))['catch'](handleError(_0x3870e5,null));};
\ No newline at end of file
index db056ba..6aa14e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde76=['exports','define','CmHopperBlack','cm_hopper_black','lodash','util','api','path','rimraf','../../config/environment'];(function(_0x38847f,_0x320e81){var _0x36e9cb=function(_0x2c3e3a){while(--_0x2c3e3a){_0x38847f['push'](_0x38847f['shift']());}};_0x36e9cb(++_0x320e81);}(_0xde76,0x144));var _0x6de7=function(_0x16aaf4,_0x2b7413){_0x16aaf4=_0x16aaf4-0x0;var _0x3c958e=_0xde76[_0x16aaf4];return _0x3c958e;};'use strict';var _=require(_0x6de7('0x0'));var util=require(_0x6de7('0x1'));var logger=require('../../config/logger')(_0x6de7('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x6de7('0x3'));var rimraf=require(_0x6de7('0x4'));var config=require(_0x6de7('0x5'));var attributes=require('./cmHopperBlack.attributes');module[_0x6de7('0x6')]=function(_0x4fcc80,_0x3856ad){return _0x4fcc80[_0x6de7('0x7')](_0x6de7('0x8'),attributes,{'tableName':_0x6de7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbf44=['moment','bluebird','request-promise','rimraf','../../config/environment','./cmHopperBlack.attributes','exports','define','CmHopperBlack','util','api'];(function(_0x4e11d5,_0x1ce514){var _0x5e4e4c=function(_0xbee63d){while(--_0xbee63d){_0x4e11d5['push'](_0x4e11d5['shift']());}};_0x5e4e4c(++_0x1ce514);}(_0xbf44,0x1e2));var _0x4bf4=function(_0x3f94fa,_0xdf5b42){_0x3f94fa=_0x3f94fa-0x0;var _0xb2cf13=_0xbf44[_0x3f94fa];return _0xb2cf13;};'use strict';var _=require('lodash');var util=require(_0x4bf4('0x0'));var logger=require('../../config/logger')(_0x4bf4('0x1'));var moment=require(_0x4bf4('0x2'));var BPromise=require(_0x4bf4('0x3'));var rp=require(_0x4bf4('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4bf4('0x5'));var config=require(_0x4bf4('0x6'));var attributes=require(_0x4bf4('0x7'));module[_0x4bf4('0x8')]=function(_0xba5b8c,_0x57ddcf){return _0xba5b8c[_0x4bf4('0x9')](_0x4bf4('0xa'),attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 060d3b1..1201286 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42dc=['UpdateCmHopperBlack','body','raw','DestroyCmHopperBlack','destroy','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','where','attributes','limit','include','model','map'];(function(_0x3d4234,_0x247d7f){var _0x4cac3b=function(_0x2536b9){while(--_0x2536b9){_0x3d4234['push'](_0x3d4234['shift']());}};_0x4cac3b(++_0x247d7f);}(_0x42dc,0xa5));var _0xc42d=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x42dc[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0xc42d('0x0'));var util=require(_0xc42d('0x1'));var moment=require(_0xc42d('0x2'));var BPromise=require(_0xc42d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc42d('0x4'));var db=require(_0xc42d('0x5'))['db'];var utils=require(_0xc42d('0x6'));var logger=require(_0xc42d('0x7'))(_0xc42d('0x8'));var config=require('../../config/environment');var jayson=require(_0xc42d('0x9'));var client=jayson[_0xc42d('0xa')][_0xc42d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x42092e,_0x3f55a9,_0x5dde92){return new BPromise(function(_0x2ba7ba,_0x441fba){return client[_0xc42d('0xc')](_0x42092e,_0x5dde92)[_0xc42d('0xd')](function(_0x17dfe7){logger['info'](_0xc42d('0xe'),_0x3f55a9,_0xc42d('0xf'));logger[_0xc42d('0x10')](_0xc42d('0x11'),_0x3f55a9,_0xc42d('0xf'),JSON[_0xc42d('0x12')](_0x17dfe7));if(_0x17dfe7[_0xc42d('0x13')]){if(_0x17dfe7[_0xc42d('0x13')][_0xc42d('0x14')]===0x1f4){logger[_0xc42d('0x13')](_0xc42d('0xe'),_0x3f55a9,_0x17dfe7['error'][_0xc42d('0x15')]);return _0x441fba(_0x17dfe7[_0xc42d('0x13')][_0xc42d('0x15')]);}logger[_0xc42d('0x13')](_0xc42d('0xe'),_0x3f55a9,_0x17dfe7[_0xc42d('0x13')]['message']);return _0x2ba7ba(_0x17dfe7[_0xc42d('0x13')]['message']);}else{logger[_0xc42d('0x16')](_0xc42d('0xe'),_0x3f55a9,_0xc42d('0xf'));_0x2ba7ba(_0x17dfe7[_0xc42d('0x17')]['message']);}})[_0xc42d('0x18')](function(_0x2dfba2){logger['error'](_0xc42d('0xe'),_0x3f55a9,_0x2dfba2);_0x441fba(_0x2dfba2);});});}exports[_0xc42d('0x19')]=function(_0x143f11){var _0x42fc5b=this;return new Promise(function(_0x44cb18,_0x570c3e){return db[_0xc42d('0x1a')][_0xc42d('0x1b')]({'raw':_0x143f11['options']?_0x143f11[_0xc42d('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x143f11['options']?_0x143f11[_0xc42d('0x1c')][_0xc42d('0x1d')]||null:null,'attributes':_0x143f11['options']?_0x143f11['options'][_0xc42d('0x1e')]||null:null,'limit':_0x143f11[_0xc42d('0x1c')]?_0x143f11['options'][_0xc42d('0x1f')]||null:null,'include':_0x143f11[_0xc42d('0x1c')]?_0x143f11[_0xc42d('0x1c')][_0xc42d('0x20')]?_['map'](_0x143f11[_0xc42d('0x1c')][_0xc42d('0x20')],function(_0x30816d){return{'model':db[_0x30816d[_0xc42d('0x21')]],'as':_0x30816d['as'],'attributes':_0x30816d['attributes'],'include':_0x30816d['include']?_[_0xc42d('0x22')](_0x30816d[_0xc42d('0x20')],function(_0x4b6645){return{'model':db[_0x4b6645[_0xc42d('0x21')]],'as':_0x4b6645['as'],'attributes':_0x4b6645['attributes'],'include':_0x4b6645[_0xc42d('0x20')]?_[_0xc42d('0x22')](_0x4b6645[_0xc42d('0x20')],function(_0x47e476){return{'model':db[_0x47e476['model']],'as':_0x47e476['as'],'attributes':_0x47e476[_0xc42d('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xc42d('0xd')](function(_0x395735){logger[_0xc42d('0x16')](_0xc42d('0x19'),_0x143f11);logger['debug'](_0xc42d('0x19'),_0x143f11,JSON['stringify'](_0x395735));_0x44cb18(_0x395735);})[_0xc42d('0x18')](function(_0x575e15){logger[_0xc42d('0x13')](_0xc42d('0x19'),_0x575e15[_0xc42d('0x15')],_0x143f11);_0x570c3e(_0x42fc5b['error'](0x1f4,_0x575e15[_0xc42d('0x15')]));});});};exports[_0xc42d('0x23')]=function(_0x2cbd4b){var _0x273aaf=this;return new Promise(function(_0x3ef19b,_0x15de96){return db[_0xc42d('0x1a')]['update'](_0x2cbd4b[_0xc42d('0x24')],{'raw':_0x2cbd4b[_0xc42d('0x1c')]?_0x2cbd4b[_0xc42d('0x1c')][_0xc42d('0x25')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2cbd4b[_0xc42d('0x1c')]?_0x2cbd4b[_0xc42d('0x1c')]['where']||null:null,'attributes':_0x2cbd4b[_0xc42d('0x1c')]?_0x2cbd4b[_0xc42d('0x1c')][_0xc42d('0x1e')]||null:null,'limit':_0x2cbd4b[_0xc42d('0x1c')]?_0x2cbd4b[_0xc42d('0x1c')][_0xc42d('0x1f')]||null:null})[_0xc42d('0xd')](function(_0x33ad87){logger[_0xc42d('0x16')](_0xc42d('0x23'),_0x2cbd4b);logger[_0xc42d('0x10')](_0xc42d('0x23'),_0x2cbd4b,JSON[_0xc42d('0x12')](_0x33ad87));_0x3ef19b(_0x33ad87);})[_0xc42d('0x18')](function(_0x3ec8db){logger[_0xc42d('0x13')](_0xc42d('0x23'),_0x3ec8db[_0xc42d('0x15')],_0x2cbd4b);_0x15de96(_0x273aaf[_0xc42d('0x13')](0x1f4,_0x3ec8db[_0xc42d('0x15')]));});});};exports[_0xc42d('0x26')]=function(_0x269bf8){var _0x36603d=this;return new Promise(function(_0x1d5b82,_0xae607d){return db[_0xc42d('0x1a')][_0xc42d('0x27')]({'where':_0x269bf8[_0xc42d('0x1c')]?_0x269bf8['options'][_0xc42d('0x1d')]||null:null})[_0xc42d('0xd')](function(_0x25a5cc){logger['info'](_0xc42d('0x26'),_0x269bf8);logger[_0xc42d('0x10')](_0xc42d('0x26'),_0x269bf8,JSON['stringify'](_0x25a5cc));_0x1d5b82(_0x25a5cc);})['catch'](function(_0x4180d6){logger[_0xc42d('0x13')](_0xc42d('0x26'),_0x4180d6['message'],_0x269bf8);_0xae607d(_0x36603d[_0xc42d('0x13')](0x1f4,_0x4180d6[_0xc42d('0x15')]));});});};
\ No newline at end of file
+var _0x5913=['CmHopperBlack','findAll','options','raw','where','attributes','limit','include','model','map','GetCmHopperBlack','UpdateCmHopperBlack','update','body','DestroyCmHopperBlack','destroy','catch','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then','info','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','message','CmHopperBlack,\x20%s,\x20%s','request\x20sent'];(function(_0xb1e7c2,_0x523673){var _0x9d8c4c=function(_0x9da192){while(--_0x9da192){_0xb1e7c2['push'](_0xb1e7c2['shift']());}};_0x9d8c4c(++_0x523673);}(_0x5913,0x16f));var _0x3591=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5913[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3591('0x0'));var util=require('util');var moment=require(_0x3591('0x1'));var BPromise=require(_0x3591('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3591('0x3'))['db'];var utils=require(_0x3591('0x4'));var logger=require(_0x3591('0x5'))('rpc');var config=require(_0x3591('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3591('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x59ab1f,_0x25d58f,_0x23b2db){return new BPromise(function(_0x4f13b3,_0x11e5e1){return client[_0x3591('0x8')](_0x59ab1f,_0x23b2db)[_0x3591('0x9')](function(_0x497be1){logger[_0x3591('0xa')]('CmHopperBlack,\x20%s,\x20%s',_0x25d58f,'request\x20sent');logger[_0x3591('0xb')](_0x3591('0xc'),_0x25d58f,'request\x20sent',JSON[_0x3591('0xd')](_0x497be1));if(_0x497be1[_0x3591('0xe')]){if(_0x497be1[_0x3591('0xe')]['code']===0x1f4){logger[_0x3591('0xe')]('CmHopperBlack,\x20%s,\x20%s',_0x25d58f,_0x497be1[_0x3591('0xe')][_0x3591('0xf')]);return _0x11e5e1(_0x497be1[_0x3591('0xe')][_0x3591('0xf')]);}logger['error'](_0x3591('0x10'),_0x25d58f,_0x497be1['error'][_0x3591('0xf')]);return _0x4f13b3(_0x497be1[_0x3591('0xe')][_0x3591('0xf')]);}else{logger[_0x3591('0xa')](_0x3591('0x10'),_0x25d58f,_0x3591('0x11'));_0x4f13b3(_0x497be1['result'][_0x3591('0xf')]);}})['catch'](function(_0x5b5451){logger[_0x3591('0xe')](_0x3591('0x10'),_0x25d58f,_0x5b5451);_0x11e5e1(_0x5b5451);});});}exports['GetCmHopperBlack']=function(_0x951f85){var _0xa94edf=this;return new Promise(function(_0x21b63c,_0x56bfbb){return db[_0x3591('0x12')][_0x3591('0x13')]({'raw':_0x951f85[_0x3591('0x14')]?_0x951f85[_0x3591('0x14')][_0x3591('0x15')]===undefined?!![]:![]:!![],'where':_0x951f85[_0x3591('0x14')]?_0x951f85[_0x3591('0x14')][_0x3591('0x16')]||null:null,'attributes':_0x951f85['options']?_0x951f85[_0x3591('0x14')][_0x3591('0x17')]||null:null,'limit':_0x951f85[_0x3591('0x14')]?_0x951f85[_0x3591('0x14')][_0x3591('0x18')]||null:null,'include':_0x951f85[_0x3591('0x14')]?_0x951f85[_0x3591('0x14')][_0x3591('0x19')]?_['map'](_0x951f85[_0x3591('0x14')][_0x3591('0x19')],function(_0x3ad488){return{'model':db[_0x3ad488[_0x3591('0x1a')]],'as':_0x3ad488['as'],'attributes':_0x3ad488[_0x3591('0x17')],'include':_0x3ad488[_0x3591('0x19')]?_[_0x3591('0x1b')](_0x3ad488[_0x3591('0x19')],function(_0x3c04af){return{'model':db[_0x3c04af[_0x3591('0x1a')]],'as':_0x3c04af['as'],'attributes':_0x3c04af[_0x3591('0x17')],'include':_0x3c04af[_0x3591('0x19')]?_[_0x3591('0x1b')](_0x3c04af[_0x3591('0x19')],function(_0x166aa8){return{'model':db[_0x166aa8[_0x3591('0x1a')]],'as':_0x166aa8['as'],'attributes':_0x166aa8[_0x3591('0x17')]};}):[]};}):[]};}):[]:[]})[_0x3591('0x9')](function(_0x43627f){logger[_0x3591('0xa')](_0x3591('0x1c'),_0x951f85);logger[_0x3591('0xb')](_0x3591('0x1c'),_0x951f85,JSON['stringify'](_0x43627f));_0x21b63c(_0x43627f);})['catch'](function(_0x3c4353){logger['error']('GetCmHopperBlack',_0x3c4353['message'],_0x951f85);_0x56bfbb(_0xa94edf['error'](0x1f4,_0x3c4353[_0x3591('0xf')]));});});};exports[_0x3591('0x1d')]=function(_0x1d48b2){var _0x2db532=this;return new Promise(function(_0x34e46d,_0x489703){return db[_0x3591('0x12')][_0x3591('0x1e')](_0x1d48b2[_0x3591('0x1f')],{'raw':_0x1d48b2[_0x3591('0x14')]?_0x1d48b2[_0x3591('0x14')][_0x3591('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1d48b2['options']?_0x1d48b2[_0x3591('0x14')]['where']||null:null,'attributes':_0x1d48b2['options']?_0x1d48b2[_0x3591('0x14')][_0x3591('0x17')]||null:null,'limit':_0x1d48b2[_0x3591('0x14')]?_0x1d48b2[_0x3591('0x14')]['limit']||null:null})[_0x3591('0x9')](function(_0x1cfb5f){logger['info'](_0x3591('0x1d'),_0x1d48b2);logger['debug'](_0x3591('0x1d'),_0x1d48b2,JSON[_0x3591('0xd')](_0x1cfb5f));_0x34e46d(_0x1cfb5f);})['catch'](function(_0x2005cf){logger[_0x3591('0xe')]('UpdateCmHopperBlack',_0x2005cf[_0x3591('0xf')],_0x1d48b2);_0x489703(_0x2db532[_0x3591('0xe')](0x1f4,_0x2005cf['message']));});});};exports[_0x3591('0x20')]=function(_0xfbcacf){var _0x1da0c9=this;return new Promise(function(_0x2d9a47,_0x56f3a0){return db[_0x3591('0x12')][_0x3591('0x21')]({'where':_0xfbcacf[_0x3591('0x14')]?_0xfbcacf['options'][_0x3591('0x16')]||null:null})['then'](function(_0x3b4d80){logger[_0x3591('0xa')](_0x3591('0x20'),_0xfbcacf);logger[_0x3591('0xb')](_0x3591('0x20'),_0xfbcacf,JSON['stringify'](_0x3b4d80));_0x2d9a47(_0x3b4d80);})[_0x3591('0x22')](function(_0x6497b2){logger[_0x3591('0xe')](_0x3591('0x20'),_0x6497b2[_0x3591('0xf')],_0xfbcacf);_0x56f3a0(_0x1da0c9[_0x3591('0xe')](0x1f4,_0x6497b2['message']));});});};
\ No newline at end of file
index ed0bdb4..580a4e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31f0=['fs-extra','../../components/auth/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','describe','/:id','show','put','update','delete','exports','multer','path','express','Router'];(function(_0x58a975,_0x4f7451){var _0x47f055=function(_0x4f57e1){while(--_0x4f57e1){_0x58a975['push'](_0x58a975['shift']());}};_0x47f055(++_0x4f7451);}(_0x31f0,0xb7));var _0x031f=function(_0x4af826,_0x256a74){_0x4af826=_0x4af826-0x0;var _0x1c2a7b=_0x31f0[_0x4af826];return _0x1c2a7b;};'use strict';var multer=require(_0x031f('0x0'));var util=require('util');var path=require(_0x031f('0x1'));var timeout=require('connect-timeout');var express=require(_0x031f('0x2'));var router=express[_0x031f('0x3')]();var fs_extra=require(_0x031f('0x4'));var auth=require(_0x031f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x031f('0x6'));var controller=require(_0x031f('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x031f('0x8')]('/describe',auth[_0x031f('0x9')](),controller[_0x031f('0xa')]);router[_0x031f('0x8')](_0x031f('0xb'),auth['isAuthenticated'](),controller[_0x031f('0xc')]);router[_0x031f('0xd')](_0x031f('0xb'),auth[_0x031f('0x9')](),controller[_0x031f('0xe')]);router[_0x031f('0xf')](_0x031f('0xb'),auth[_0x031f('0x9')](),controller['destroy']);module[_0x031f('0x10')]=router;
\ No newline at end of file
+var _0xda19=['isAuthenticated','index','/describe','describe','show','/:id','update','delete','destroy','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get'];(function(_0x13992d,_0x3029ea){var _0x3d15bf=function(_0x3444f7){while(--_0x3444f7){_0x13992d['push'](_0x13992d['shift']());}};_0x3d15bf(++_0x3029ea);}(_0xda19,0xd5));var _0x9da1=function(_0x278e93,_0x47961b){_0x278e93=_0x278e93-0x0;var _0x577431=_0xda19[_0x278e93];return _0x577431;};'use strict';var multer=require('multer');var util=require(_0x9da1('0x0'));var path=require(_0x9da1('0x1'));var timeout=require('connect-timeout');var express=require(_0x9da1('0x2'));var router=express['Router']();var fs_extra=require(_0x9da1('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x9da1('0x4'));var config=require(_0x9da1('0x5'));var controller=require(_0x9da1('0x6'));router[_0x9da1('0x7')]('/',auth[_0x9da1('0x8')](),controller[_0x9da1('0x9')]);router[_0x9da1('0x7')](_0x9da1('0xa'),auth[_0x9da1('0x8')](),controller[_0x9da1('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x9da1('0xc')]);router['put'](_0x9da1('0xd'),auth[_0x9da1('0x8')](),controller[_0x9da1('0xe')]);router[_0x9da1('0xf')](_0x9da1('0xd'),auth[_0x9da1('0x8')](),controller[_0x9da1('0x10')]);module['exports']=router;
\ No newline at end of file
index 8359e90..3fff492 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea26=['seconds','setDataValue','dispositionat','BOOLEAN','sequelize','moment','exports','INTEGER','STRING','DATE','endtime','followuptime','diff'];(function(_0x4ed7b1,_0x321543){var _0x5dfe21=function(_0x4b1d59){while(--_0x4b1d59){_0x4ed7b1['push'](_0x4ed7b1['shift']());}};_0x5dfe21(++_0x321543);}(_0xea26,0x170));var _0x6ea2=function(_0x264528,_0x3a18d7){_0x264528=_0x264528-0x0;var _0x3bac1d=_0xea26[_0x264528];return _0x3bac1d;};'use strict';var Sequelize=require(_0x6ea2('0x0'));var moment=require(_0x6ea2('0x1'));module[_0x6ea2('0x2')]={'state':{'type':Sequelize[_0x6ea2('0x3')](0x2)},'statedesc':{'type':Sequelize[_0x6ea2('0x4')]},'scheduledat':{'type':Sequelize[_0x6ea2('0x5')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x6ea2('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x6ea2('0x4')]},'originatecalleridnum':{'type':Sequelize[_0x6ea2('0x4')]},'originatecalleridname':{'type':Sequelize[_0x6ea2('0x4')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x6ea2('0x4')]},'starttime':{'type':Sequelize[_0x6ea2('0x5')]},'responsetime':{'type':Sequelize[_0x6ea2('0x5')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0x6ea2('0x5')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x6ea2('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x6ea2('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x6ea2('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x6ea2('0x4')]},'campaign':{'type':Sequelize[_0x6ea2('0x4')]},'campaigntype':{'type':Sequelize[_0x6ea2('0x4')]},'membername':{'type':Sequelize[_0x6ea2('0x4')]},'reason':{'type':Sequelize[_0x6ea2('0x4')]},'disposition':{'type':Sequelize[_0x6ea2('0x4')]},'secondDisposition':{'type':Sequelize[_0x6ea2('0x4')]},'thirdDisposition':{'type':Sequelize[_0x6ea2('0x4')]},'dispositionat':{'type':Sequelize[_0x6ea2('0x5')],'set':function(_0x184943){var _0x6e5d00=this['getDataValue'](_0x6ea2('0x6'));if(_0x6e5d00&&_0x184943){this['setDataValue'](_0x6ea2('0x7'),moment(_0x184943)[_0x6ea2('0x8')](moment(_0x6e5d00),_0x6ea2('0x9')));}return this[_0x6ea2('0xa')](_0x6ea2('0xb'),_0x184943);}},'amd':{'type':Sequelize[_0x6ea2('0xc')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x6ea2('0xc')],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x6ea2('0x5')]},'callback':{'type':Sequelize[_0x6ea2('0xc')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize[_0x6ea2('0xc')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x6ea2('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0x6ea2('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x6ea2('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x6ea2('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb325=['endtime','setDataValue','seconds','dispositionat','BOOLEAN','sequelize','moment','INTEGER','STRING','DATE','getDataValue'];(function(_0x5eb8be,_0x4e6c25){var _0x2871bf=function(_0x728b75){while(--_0x728b75){_0x5eb8be['push'](_0x5eb8be['shift']());}};_0x2871bf(++_0x4e6c25);}(_0xb325,0x15a));var _0x5b32=function(_0x4d6adb,_0x555a76){_0x4d6adb=_0x4d6adb-0x0;var _0x10c3c8=_0xb325[_0x4d6adb];return _0x10c3c8;};'use strict';var Sequelize=require(_0x5b32('0x0'));var moment=require(_0x5b32('0x1'));module['exports']={'state':{'type':Sequelize[_0x5b32('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x5b32('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x5b32('0x3')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x5b32('0x3')]},'calleridname':{'type':Sequelize[_0x5b32('0x3')]},'starttime':{'type':Sequelize[_0x5b32('0x4')]},'responsetime':{'type':Sequelize[_0x5b32('0x4')]},'answertime':{'type':Sequelize[_0x5b32('0x4')]},'droptime':{'type':Sequelize[_0x5b32('0x4')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x5b32('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x5b32('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x5b32('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x5b32('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x5b32('0x3')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x5b32('0x3')]},'reason':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0x5b32('0x3')]},'secondDisposition':{'type':Sequelize[_0x5b32('0x3')]},'thirdDisposition':{'type':Sequelize[_0x5b32('0x3')]},'dispositionat':{'type':Sequelize[_0x5b32('0x4')],'set':function(_0x29b34c){var _0x133a78=this[_0x5b32('0x5')](_0x5b32('0x6'));if(_0x133a78&&_0x29b34c){this[_0x5b32('0x7')]('followuptime',moment(_0x29b34c)['diff'](moment(_0x133a78),_0x5b32('0x8')));}return this[_0x5b32('0x7')](_0x5b32('0x9'),_0x29b34c);}},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize[_0x5b32('0xa')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x5b32('0xa')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x5b32('0xa')],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize[_0x5b32('0xa')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x5b32('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'deleted':{'type':Sequelize[_0x5b32('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x5b32('0x4')]},'recallme':{'type':Sequelize[_0x5b32('0xa')],'defaultValue':![]},'agiafterat':{'type':Sequelize['DATE']},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x5b32('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x5b32('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x5b32('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index ded4497..0fb839f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['sendStatus','end','json','offset','undefined','limit','count','set','apply','save','update','then','status','error','name','send','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','CmHopperFinal','includeAll','include','findAll','rows','show','params','fields','options','find','catch','describe','uniqueid','body','countContactsQueueCampaignHopperFinal','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','noAnswerContacts','`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','countContactsIvrCampaignHopperFinal','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','reCallContacts','answeringMachine','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','select','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(VoiceQueueId)','from','toString','state\x20=\x20?','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','VoiceQueueId\x20=\x20?','state\x20=\x204','moveContactsIvrCampaignHopperFinal','Campaign','into','CampaignId','ANY_VALUE(ListId)','ANY_VALUE(CampaignId)','cm_hopper_final','CampaignId\x20=\x20?','state','calleridnum','group','checkContactHopper','findOne','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x33b4d3,_0x3ddc19){var _0x1503e4=function(_0x16310e){while(--_0x16310e){_0x33b4d3['push'](_0x33b4d3['shift']());}};_0x1503e4(++_0x3ddc19);}(_0x1967,0x173));var _0x7196=function(_0xb60a00,_0x1ead2b){_0xb60a00=_0xb60a00-0x0;var _0x5847d8=_0x1967[_0xb60a00];return _0x5847d8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7196('0x0'));var zipdir=require(_0x7196('0x1'));var jsonpatch=require(_0x7196('0x2'));var rp=require(_0x7196('0x3'));var moment=require(_0x7196('0x4'));var BPromise=require(_0x7196('0x5'));var Mustache=require(_0x7196('0x6'));var util=require(_0x7196('0x7'));var path=require(_0x7196('0x8'));var sox=require(_0x7196('0x9'));var csv=require('to-csv');var ejs=require(_0x7196('0xa'));var fs=require('fs');var fs_extra=require(_0x7196('0xb'));var _=require(_0x7196('0xc'));var squel=require(_0x7196('0xd'));var crypto=require(_0x7196('0xe'));var jsforce=require(_0x7196('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x7196('0x10'));var querystring=require(_0x7196('0x11'));var Papa=require(_0x7196('0x12'));var Redis=require(_0x7196('0x13'));var authService=require(_0x7196('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7196('0x15'));var logger=require(_0x7196('0x16'))(_0x7196('0x17'));var utils=require(_0x7196('0x18'));var config=require(_0x7196('0x19'));var licenseUtil=require(_0x7196('0x1a'));var db=require(_0x7196('0x1b'))['db'];function respondWithStatusCode(_0x325641,_0x24f1c3){_0x24f1c3=_0x24f1c3||0xcc;return function(_0xba707b){if(_0xba707b){return _0x325641[_0x7196('0x1c')](_0x24f1c3);}return _0x325641['status'](_0x24f1c3)[_0x7196('0x1d')]();};}function respondWithResult(_0x3feccd,_0x3545aa){_0x3545aa=_0x3545aa||0xc8;return function(_0xf098c1){if(_0xf098c1){return _0x3feccd['status'](_0x3545aa)[_0x7196('0x1e')](_0xf098c1);}};}function respondWithFilteredResult(_0x539414,_0xe32933){return function(_0x2590a6){if(_0x2590a6){var _0xf7e97=typeof _0xe32933[_0x7196('0x1f')]===_0x7196('0x20')&&typeof _0xe32933[_0x7196('0x21')]===_0x7196('0x20');var _0x1ed296=_0x2590a6[_0x7196('0x22')];var _0x32fe2b=_0xf7e97?0x0:_0xe32933[_0x7196('0x1f')];var _0x5b716a=_0xf7e97?_0x2590a6['count']:_0xe32933[_0x7196('0x1f')]+_0xe32933[_0x7196('0x21')];var _0x40418d;if(_0x5b716a>=_0x1ed296){_0x5b716a=_0x1ed296;_0x40418d=0xc8;}else{_0x40418d=0xce;}_0x539414['status'](_0x40418d);return _0x539414[_0x7196('0x23')]('Content-Range',_0x32fe2b+'-'+_0x5b716a+'/'+_0x1ed296)['json'](_0x2590a6);}return null;};}function patchUpdates(_0x296e07){return function(_0x627223){try{jsonpatch[_0x7196('0x24')](_0x627223,_0x296e07,!![]);}catch(_0x4ddf78){return BPromise['reject'](_0x4ddf78);}return _0x627223[_0x7196('0x25')]();};}function saveUpdates(_0x3cd8ff,_0x598a26){return function(_0x18649b){if(_0x18649b){return _0x18649b[_0x7196('0x26')](_0x3cd8ff)[_0x7196('0x27')](function(_0x18d389){return _0x18d389;});}return null;};}function removeEntity(_0x38b3d6,_0x549f34){return function(_0x3f8178){if(_0x3f8178){return _0x3f8178['destroy']()[_0x7196('0x27')](function(){_0x38b3d6[_0x7196('0x28')](0xcc)[_0x7196('0x1d')]();});}};}function handleEntityNotFound(_0xa69810,_0x70aa65){return function(_0x43f6a2){if(!_0x43f6a2){_0xa69810['sendStatus'](0x194);}return _0x43f6a2;};}function handleError(_0x57c404,_0x1482e5){_0x1482e5=_0x1482e5||0x1f4;return function(_0x2d284f){logger[_0x7196('0x29')](_0x2d284f['stack']);if(_0x2d284f['name']){delete _0x2d284f[_0x7196('0x2a')];}_0x57c404[_0x7196('0x28')](_0x1482e5)[_0x7196('0x2b')](_0x2d284f);};}exports['index']=function(_0x35eef9,_0x4ecea1){var _0x4fd339={},_0x59d79d={},_0x30151f={'count':0x0,'rows':[]};var _0x985727=_[_0x7196('0x2c')](db['CmHopperFinal'][_0x7196('0x2d')],function(_0x45d567){return{'name':_0x45d567[_0x7196('0x2e')],'type':_0x45d567[_0x7196('0x2f')]['key']};});_0x59d79d[_0x7196('0x30')]=_[_0x7196('0x2c')](_0x985727,_0x7196('0x2a'));_0x59d79d[_0x7196('0x31')]=_[_0x7196('0x32')](_0x35eef9[_0x7196('0x31')]);_0x59d79d[_0x7196('0x33')]=_[_0x7196('0x34')](_0x59d79d[_0x7196('0x30')],_0x59d79d[_0x7196('0x31')]);_0x4fd339[_0x7196('0x35')]=_['intersection'](_0x59d79d[_0x7196('0x30')],qs['fields'](_0x35eef9[_0x7196('0x31')]['fields']));_0x4fd339[_0x7196('0x35')]=_0x4fd339[_0x7196('0x35')]['length']?_0x4fd339[_0x7196('0x35')]:_0x59d79d[_0x7196('0x30')];if(!_0x35eef9[_0x7196('0x31')][_0x7196('0x36')](_0x7196('0x37'))){_0x4fd339['limit']=qs[_0x7196('0x21')](_0x35eef9[_0x7196('0x31')][_0x7196('0x21')]);_0x4fd339[_0x7196('0x1f')]=qs[_0x7196('0x1f')](_0x35eef9[_0x7196('0x31')]['offset']);}_0x4fd339[_0x7196('0x38')]=qs[_0x7196('0x39')](_0x35eef9[_0x7196('0x31')]['sort']);_0x4fd339[_0x7196('0x3a')]=qs[_0x7196('0x33')](_[_0x7196('0x3b')](_0x35eef9[_0x7196('0x31')],_0x59d79d[_0x7196('0x33')]),_0x985727);if(_0x35eef9[_0x7196('0x31')][_0x7196('0x3c')]){_0x4fd339[_0x7196('0x3a')]=_[_0x7196('0x3d')](_0x4fd339[_0x7196('0x3a')],{'$or':_['map'](_0x985727,function(_0x257754){if(_0x257754[_0x7196('0x2f')]!=='VIRTUAL'){var _0x186efe={};_0x186efe[_0x257754['name']]={'$like':'%'+_0x35eef9['query'][_0x7196('0x3c')]+'%'};return _0x186efe;}})});}_0x4fd339=_[_0x7196('0x3d')]({},_0x4fd339,_0x35eef9['options']);var _0x587f6f={'where':_0x4fd339[_0x7196('0x3a')]};return db[_0x7196('0x3e')][_0x7196('0x22')](_0x587f6f)['then'](function(_0x36a990){_0x30151f[_0x7196('0x22')]=_0x36a990;if(_0x35eef9[_0x7196('0x31')][_0x7196('0x3f')]){_0x4fd339[_0x7196('0x40')]=[{'all':!![]}];}return db[_0x7196('0x3e')][_0x7196('0x41')](_0x4fd339);})[_0x7196('0x27')](function(_0x5cd903){_0x30151f[_0x7196('0x42')]=_0x5cd903;return _0x30151f;})[_0x7196('0x27')](respondWithFilteredResult(_0x4ecea1,_0x4fd339))['catch'](handleError(_0x4ecea1,null));};exports[_0x7196('0x43')]=function(_0x43d4c0,_0x48178f){var _0x471915={'raw':!![],'where':{'id':_0x43d4c0[_0x7196('0x44')]['id']}},_0x471bb2={};_0x471bb2['model']=_[_0x7196('0x32')](db[_0x7196('0x3e')]['rawAttributes']);_0x471bb2[_0x7196('0x31')]=_[_0x7196('0x32')](_0x43d4c0['query']);_0x471bb2[_0x7196('0x33')]=_['intersection'](_0x471bb2['model'],_0x471bb2['query']);_0x471915['attributes']=_['intersection'](_0x471bb2[_0x7196('0x30')],qs['fields'](_0x43d4c0[_0x7196('0x31')][_0x7196('0x45')]));_0x471915[_0x7196('0x35')]=_0x471915[_0x7196('0x35')]['length']?_0x471915[_0x7196('0x35')]:_0x471bb2['model'];if(_0x43d4c0[_0x7196('0x31')][_0x7196('0x3f')]){_0x471915[_0x7196('0x40')]=[{'all':!![]}];}_0x471915=_['merge']({},_0x471915,_0x43d4c0[_0x7196('0x46')]);return db[_0x7196('0x3e')][_0x7196('0x47')](_0x471915)['then'](handleEntityNotFound(_0x48178f,null))['then'](respondWithResult(_0x48178f,null))[_0x7196('0x48')](handleError(_0x48178f,null));};exports['describe']=function(_0x29c7e8,_0x582884){return db['CmHopperFinal'][_0x7196('0x49')]()['then'](respondWithResult(_0x582884,null))['catch'](handleError(_0x582884,null));};exports['update']=function(_0x2299e2,_0x5052ee){if(_0x2299e2['body'][_0x7196('0x4a')]){delete _0x2299e2[_0x7196('0x4b')][_0x7196('0x4a')];}return db[_0x7196('0x3e')]['find']({'where':{'uniqueid':_0x2299e2[_0x7196('0x44')]['id']}})['then'](handleEntityNotFound(_0x5052ee,null))[_0x7196('0x27')](saveUpdates(_0x2299e2[_0x7196('0x4b')],null))['then'](respondWithResult(_0x5052ee,null))[_0x7196('0x48')](handleError(_0x5052ee,null));};exports[_0x7196('0x4c')]=function(_0x3fe092,_0x4fa18f,_0x317ab6){return db['CmHopperFinal'][_0x7196('0x41')]({'raw':![],'where':{'VoiceQueueId':_0x3fe092[_0x7196('0x44')]['id']},'attributes':[[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x50')))),'noSuchContacts'],[db['sequelize']['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')]('`state`\x20=\x203,\x201,\x20null'))),_0x7196('0x51')],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x52')))),_0x7196('0x53')],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db['sequelize'][_0x7196('0x4f')](_0x7196('0x54')))),_0x7196('0x55')],[db['sequelize']['fn'](_0x7196('0x4e'),db['sequelize']['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x56')))),_0x7196('0x57')],[db[_0x7196('0x4d')]['fn']('COUNT',db[_0x7196('0x4d')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x7196('0x58')],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x59')))),'reCallContacts'],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')]('`state`\x20=\x2019,\x201,\x20null'))),'answeringMachine']]})[_0x7196('0x27')](handleEntityNotFound(_0x4fa18f,null))[_0x7196('0x27')](respondWithResult(_0x4fa18f,null))[_0x7196('0x48')](handleError(_0x4fa18f,null));};exports[_0x7196('0x5a')]=function(_0x14cb38,_0x43b9ac,_0xe3fb61){return db[_0x7196('0x3e')][_0x7196('0x41')]({'raw':![],'where':{'CampaignId':_0x14cb38[_0x7196('0x44')]['id']},'attributes':[[db[_0x7196('0x4d')]['fn']('COUNT',db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x50')))),'noSuchContacts'],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x5b')))),_0x7196('0x51')],[db['sequelize']['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')]('`state`\x20=\x205,\x201,\x20null'))),_0x7196('0x53')],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x54')))),'congestionContacts'],[db['sequelize']['fn']('COUNT',db[_0x7196('0x4d')]['fn']('IF',db['sequelize'][_0x7196('0x4f')](_0x7196('0x56')))),_0x7196('0x57')],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x5c')))),'abandonedContacts'],[db['sequelize']['fn'](_0x7196('0x4e'),db[_0x7196('0x4d')]['fn']('IF',db[_0x7196('0x4d')][_0x7196('0x4f')](_0x7196('0x59')))),_0x7196('0x5d')],[db[_0x7196('0x4d')]['fn'](_0x7196('0x4e'),db['sequelize']['fn']('IF',db['sequelize'][_0x7196('0x4f')]('`state`\x20=\x2019,\x201,\x20null'))),_0x7196('0x5e')]]})['then'](handleEntityNotFound(_0x43b9ac,null))[_0x7196('0x27')](respondWithResult(_0x43b9ac,null))[_0x7196('0x48')](handleError(_0x43b9ac,null));};exports[_0x7196('0x5f')]=function(_0x267903,_0x5ab6ae,_0x5a786a){return db[_0x7196('0x60')]['find']({'where':{'id':_0x267903[_0x7196('0x44')]['id']}})[_0x7196('0x27')](handleEntityNotFound(_0x5ab6ae,null))[_0x7196('0x27')](function(_0x38c1b3){var _0xd4c784;if(_0x38c1b3){_0xd4c784=squel[_0x7196('0x61')]()['into'](_0x7196('0x62'))[_0x7196('0x63')]([_0x7196('0x64'),_0x7196('0x65'),_0x7196('0x66'),_0x7196('0x67'),_0x7196('0x68'),_0x7196('0x69'),_0x7196('0x6a')],squel[_0x7196('0x6b')]()[_0x7196('0x6c')](_0x7196('0x6d'),'phone')[_0x7196('0x6c')](_0x7196('0x6e'),'scheduledAt')['field'](_0x7196('0x6f'),_0x7196('0x66'))[_0x7196('0x6c')]('ANY_VALUE(ListId)',_0x7196('0x67'))['field'](_0x7196('0x70'),_0x7196('0x68'))['field'](_0x7196('0x6e'),'createdAt')['field'](_0x7196('0x6e'),_0x7196('0x6a'))[_0x7196('0x71')]('cm_hopper_final')[_0x7196('0x3a')]('VoiceQueueId\x20=\x20?',_0x267903[_0x7196('0x44')]['id'][_0x7196('0x72')]())[_0x7196('0x3a')](_0x7196('0x73'),_0x267903[_0x7196('0x4b')]['state'][_0x7196('0x72')]())[_0x7196('0x3a')](_0x7196('0x74'))[_0x7196('0x3a')](_0x7196('0x75'),squel[_0x7196('0x6b')]()[_0x7196('0x6c')](_0x7196('0x64'))['from'](_0x7196('0x62'))[_0x7196('0x3a')](_0x7196('0x76'),_0x267903[_0x7196('0x44')]['id']['toString']()))[_0x7196('0x3a')](_0x7196('0x75'),squel['select']()[_0x7196('0x6c')]('calleridnum')[_0x7196('0x71')]('cm_hopper_final')[_0x7196('0x3a')](_0x7196('0x76'),_0x267903['params']['id'][_0x7196('0x72')]())[_0x7196('0x3a')](_0x7196('0x77')))['group']('ContactId'))[_0x7196('0x72')]();return db['sequelize']['query'](_0xd4c784);}return[];})[_0x7196('0x27')](respondWithResult(_0x5ab6ae,null))[_0x7196('0x48')](handleError(_0x5ab6ae,null));};exports[_0x7196('0x78')]=function(_0x509c4a,_0x35c5b3,_0x59370b){return db[_0x7196('0x79')][_0x7196('0x47')]({'where':{'id':_0x509c4a[_0x7196('0x44')]['id']}})[_0x7196('0x27')](handleEntityNotFound(_0x35c5b3,null))[_0x7196('0x27')](function(_0x8673e){var _0x32ba47;if(_0x8673e){_0x32ba47=squel[_0x7196('0x61')]()[_0x7196('0x7a')]('cm_hopper')['fromQuery']([_0x7196('0x64'),'scheduledAt','ContactId',_0x7196('0x67'),_0x7196('0x7b'),_0x7196('0x69'),_0x7196('0x6a')],squel['select']()['field'](_0x7196('0x6d'),_0x7196('0x64'))[_0x7196('0x6c')](_0x7196('0x6e'),'scheduledAt')[_0x7196('0x6c')]('ANY_VALUE(ContactId)','ContactId')[_0x7196('0x6c')](_0x7196('0x7c'),_0x7196('0x67'))['field'](_0x7196('0x7d'),_0x7196('0x7b'))[_0x7196('0x6c')](_0x7196('0x6e'),_0x7196('0x69'))[_0x7196('0x6c')](_0x7196('0x6e'),_0x7196('0x6a'))['from'](_0x7196('0x7e'))[_0x7196('0x3a')](_0x7196('0x7f'),_0x509c4a[_0x7196('0x44')]['id'][_0x7196('0x72')]())['where'](_0x7196('0x73'),_0x509c4a[_0x7196('0x4b')][_0x7196('0x80')]['toString']())[_0x7196('0x3a')]('calleridnum\x20IS\x20NOT\x20NULL')['where'](_0x7196('0x75'),squel[_0x7196('0x6b')]()['field'](_0x7196('0x64'))[_0x7196('0x71')]('cm_hopper')[_0x7196('0x3a')](_0x7196('0x7f'),_0x509c4a[_0x7196('0x44')]['id'][_0x7196('0x72')]()))[_0x7196('0x3a')](_0x7196('0x75'),squel['select']()[_0x7196('0x6c')](_0x7196('0x81'))[_0x7196('0x71')]('cm_hopper_final')['where']('CampaignId\x20=\x20?',_0x509c4a[_0x7196('0x44')]['id'][_0x7196('0x72')]())[_0x7196('0x3a')]('state\x20=\x204'))[_0x7196('0x82')]('ContactId'))[_0x7196('0x72')]();return db['sequelize'][_0x7196('0x31')](_0x32ba47);}return[];})[_0x7196('0x27')](respondWithResult(_0x35c5b3,null))[_0x7196('0x48')](handleError(_0x35c5b3,null));};exports[_0x7196('0x83')]=function(_0x37290e,_0x10b628,_0x43e7d5){return db['CmHopper'][_0x7196('0x84')]({'where':{'VoiceQueueId':_0x37290e['body']['VoiceQueueId'],'CampaignId':_0x37290e['body']['CampaignId'],'ContactId':_0x37290e['body'][_0x7196('0x66')]}})[_0x7196('0x27')](handleEntityNotFound(_0x10b628,null))[_0x7196('0x27')](function(_0x5bab25){if(_0x5bab25){return _0x5bab25;}return null;})[_0x7196('0x27')](respondWithResult(_0x10b628,null))['catch'](handleError(_0x10b628,null));};
\ No newline at end of file
+var _0x6d38=['calleridnum\x20IS\x20NOT\x20NULL','CmHopper','findOne','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','save','update','then','stack','name','send','index','map','CmHopperFinal','rawAttributes','type','key','model','query','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','keys','filters','intersection','describe','catch','body','uniqueid','find','params','countContactsQueueCampaignHopperFinal','sequelize','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','COUNT','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','countContactsIvrCampaignHopperFinal','busyContacts','`state`\x20=\x208,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','moveContactsQueueCampaignHopperFinal','insert','into','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','select','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(VoiceQueueId)','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','from','calleridnum\x20NOT\x20IN\x20(?)','state\x20=\x204','group','Campaign','cm_hopper','CampaignId','ANY_VALUE(ListId)','CampaignId\x20=\x20?','state'];(function(_0x4f9673,_0x4313bd){var _0x337e5e=function(_0x5677cf){while(--_0x5677cf){_0x4f9673['push'](_0x4f9673['shift']());}};_0x337e5e(++_0x4313bd);}(_0x6d38,0x1ef));var _0x86d3=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x6d38[_0x21a9d9];return _0x46adce;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x86d3('0x0'));var zipdir=require(_0x86d3('0x1'));var jsonpatch=require(_0x86d3('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x86d3('0x3'));var Mustache=require('mustache');var util=require(_0x86d3('0x4'));var path=require(_0x86d3('0x5'));var sox=require(_0x86d3('0x6'));var csv=require('to-csv');var ejs=require(_0x86d3('0x7'));var fs=require('fs');var fs_extra=require(_0x86d3('0x8'));var _=require(_0x86d3('0x9'));var squel=require(_0x86d3('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x86d3('0xb'));var toCsv=require(_0x86d3('0xc'));var querystring=require(_0x86d3('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x86d3('0xe'));var qs=require(_0x86d3('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x86d3('0x10'))(_0x86d3('0x11'));var utils=require('../../config/utils');var config=require(_0x86d3('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x86d3('0x13'))['db'];function respondWithStatusCode(_0x7d4d2e,_0x440a55){_0x440a55=_0x440a55||0xcc;return function(_0x26d64c){if(_0x26d64c){return _0x7d4d2e[_0x86d3('0x14')](_0x440a55);}return _0x7d4d2e[_0x86d3('0x15')](_0x440a55)[_0x86d3('0x16')]();};}function respondWithResult(_0x12ef4a,_0x5ce2ff){_0x5ce2ff=_0x5ce2ff||0xc8;return function(_0x1c1ba8){if(_0x1c1ba8){return _0x12ef4a[_0x86d3('0x15')](_0x5ce2ff)[_0x86d3('0x17')](_0x1c1ba8);}};}function respondWithFilteredResult(_0x207f6f,_0x1ea535){return function(_0x34fb3b){if(_0x34fb3b){var _0x1ff008=typeof _0x1ea535[_0x86d3('0x18')]==='undefined'&&typeof _0x1ea535[_0x86d3('0x19')]===_0x86d3('0x1a');var _0x431b3f=_0x34fb3b[_0x86d3('0x1b')];var _0x46feec=_0x1ff008?0x0:_0x1ea535[_0x86d3('0x18')];var _0x33e459=_0x1ff008?_0x34fb3b[_0x86d3('0x1b')]:_0x1ea535[_0x86d3('0x18')]+_0x1ea535['limit'];var _0x191ba5;if(_0x33e459>=_0x431b3f){_0x33e459=_0x431b3f;_0x191ba5=0xc8;}else{_0x191ba5=0xce;}_0x207f6f['status'](_0x191ba5);return _0x207f6f[_0x86d3('0x1c')]('Content-Range',_0x46feec+'-'+_0x33e459+'/'+_0x431b3f)['json'](_0x34fb3b);}return null;};}function patchUpdates(_0x41486a){return function(_0x1edb6d){try{jsonpatch[_0x86d3('0x1d')](_0x1edb6d,_0x41486a,!![]);}catch(_0x1720ae){return BPromise['reject'](_0x1720ae);}return _0x1edb6d[_0x86d3('0x1e')]();};}function saveUpdates(_0x55e1c3,_0x36e0fa){return function(_0x3fdf67){if(_0x3fdf67){return _0x3fdf67[_0x86d3('0x1f')](_0x55e1c3)['then'](function(_0x39d819){return _0x39d819;});}return null;};}function removeEntity(_0x72b3d4,_0x1fa4ac){return function(_0x4bf5b8){if(_0x4bf5b8){return _0x4bf5b8['destroy']()[_0x86d3('0x20')](function(){_0x72b3d4['status'](0xcc)[_0x86d3('0x16')]();});}};}function handleEntityNotFound(_0x1bea5e,_0x3dfecd){return function(_0x3c5fe4){if(!_0x3c5fe4){_0x1bea5e['sendStatus'](0x194);}return _0x3c5fe4;};}function handleError(_0x481077,_0x3359e4){_0x3359e4=_0x3359e4||0x1f4;return function(_0x611764){logger['error'](_0x611764[_0x86d3('0x21')]);if(_0x611764['name']){delete _0x611764[_0x86d3('0x22')];}_0x481077[_0x86d3('0x15')](_0x3359e4)[_0x86d3('0x23')](_0x611764);};}exports[_0x86d3('0x24')]=function(_0x11a6fd,_0x14c9ff){var _0x1f203e={},_0x35d708={},_0x303f13={'count':0x0,'rows':[]};var _0x44dacf=_[_0x86d3('0x25')](db[_0x86d3('0x26')][_0x86d3('0x27')],function(_0x28c25e){return{'name':_0x28c25e['fieldName'],'type':_0x28c25e[_0x86d3('0x28')][_0x86d3('0x29')]};});_0x35d708[_0x86d3('0x2a')]=_[_0x86d3('0x25')](_0x44dacf,_0x86d3('0x22'));_0x35d708[_0x86d3('0x2b')]=_['keys'](_0x11a6fd[_0x86d3('0x2b')]);_0x35d708['filters']=_['intersection'](_0x35d708[_0x86d3('0x2a')],_0x35d708[_0x86d3('0x2b')]);_0x1f203e[_0x86d3('0x2c')]=_['intersection'](_0x35d708[_0x86d3('0x2a')],qs[_0x86d3('0x2d')](_0x11a6fd['query'][_0x86d3('0x2d')]));_0x1f203e[_0x86d3('0x2c')]=_0x1f203e[_0x86d3('0x2c')][_0x86d3('0x2e')]?_0x1f203e[_0x86d3('0x2c')]:_0x35d708[_0x86d3('0x2a')];if(!_0x11a6fd[_0x86d3('0x2b')][_0x86d3('0x2f')]('nolimit')){_0x1f203e['limit']=qs['limit'](_0x11a6fd[_0x86d3('0x2b')]['limit']);_0x1f203e[_0x86d3('0x18')]=qs['offset'](_0x11a6fd[_0x86d3('0x2b')][_0x86d3('0x18')]);}_0x1f203e[_0x86d3('0x30')]=qs[_0x86d3('0x31')](_0x11a6fd[_0x86d3('0x2b')][_0x86d3('0x31')]);_0x1f203e[_0x86d3('0x32')]=qs['filters'](_[_0x86d3('0x33')](_0x11a6fd[_0x86d3('0x2b')],_0x35d708['filters']),_0x44dacf);if(_0x11a6fd[_0x86d3('0x2b')][_0x86d3('0x34')]){_0x1f203e[_0x86d3('0x32')]=_[_0x86d3('0x35')](_0x1f203e['where'],{'$or':_[_0x86d3('0x25')](_0x44dacf,function(_0x42ac0d){if(_0x42ac0d[_0x86d3('0x28')]!=='VIRTUAL'){var _0x5762ca={};_0x5762ca[_0x42ac0d[_0x86d3('0x22')]]={'$like':'%'+_0x11a6fd[_0x86d3('0x2b')][_0x86d3('0x34')]+'%'};return _0x5762ca;}})});}_0x1f203e=_[_0x86d3('0x35')]({},_0x1f203e,_0x11a6fd[_0x86d3('0x36')]);var _0x3666fc={'where':_0x1f203e[_0x86d3('0x32')]};return db['CmHopperFinal'][_0x86d3('0x1b')](_0x3666fc)[_0x86d3('0x20')](function(_0x2bdc67){_0x303f13[_0x86d3('0x1b')]=_0x2bdc67;if(_0x11a6fd['query'][_0x86d3('0x37')]){_0x1f203e[_0x86d3('0x38')]=[{'all':!![]}];}return db[_0x86d3('0x26')][_0x86d3('0x39')](_0x1f203e);})['then'](function(_0x587747){_0x303f13[_0x86d3('0x3a')]=_0x587747;return _0x303f13;})['then'](respondWithFilteredResult(_0x14c9ff,_0x1f203e))['catch'](handleError(_0x14c9ff,null));};exports[_0x86d3('0x3b')]=function(_0x1385fc,_0x43490a){var _0x35d6fe={'raw':!![],'where':{'id':_0x1385fc['params']['id']}},_0x23ef72={};_0x23ef72[_0x86d3('0x2a')]=_[_0x86d3('0x3c')](db[_0x86d3('0x26')]['rawAttributes']);_0x23ef72[_0x86d3('0x2b')]=_[_0x86d3('0x3c')](_0x1385fc['query']);_0x23ef72[_0x86d3('0x3d')]=_[_0x86d3('0x3e')](_0x23ef72['model'],_0x23ef72['query']);_0x35d6fe['attributes']=_[_0x86d3('0x3e')](_0x23ef72[_0x86d3('0x2a')],qs[_0x86d3('0x2d')](_0x1385fc[_0x86d3('0x2b')][_0x86d3('0x2d')]));_0x35d6fe[_0x86d3('0x2c')]=_0x35d6fe['attributes'][_0x86d3('0x2e')]?_0x35d6fe[_0x86d3('0x2c')]:_0x23ef72['model'];if(_0x1385fc[_0x86d3('0x2b')][_0x86d3('0x37')]){_0x35d6fe[_0x86d3('0x38')]=[{'all':!![]}];}_0x35d6fe=_[_0x86d3('0x35')]({},_0x35d6fe,_0x1385fc[_0x86d3('0x36')]);return db[_0x86d3('0x26')]['find'](_0x35d6fe)[_0x86d3('0x20')](handleEntityNotFound(_0x43490a,null))[_0x86d3('0x20')](respondWithResult(_0x43490a,null))['catch'](handleError(_0x43490a,null));};exports[_0x86d3('0x3f')]=function(_0x412d0e,_0xd20863){return db[_0x86d3('0x26')][_0x86d3('0x3f')]()['then'](respondWithResult(_0xd20863,null))[_0x86d3('0x40')](handleError(_0xd20863,null));};exports[_0x86d3('0x1f')]=function(_0x3226b5,_0x14fa58){if(_0x3226b5[_0x86d3('0x41')][_0x86d3('0x42')]){delete _0x3226b5[_0x86d3('0x41')][_0x86d3('0x42')];}return db[_0x86d3('0x26')][_0x86d3('0x43')]({'where':{'uniqueid':_0x3226b5[_0x86d3('0x44')]['id']}})[_0x86d3('0x20')](handleEntityNotFound(_0x14fa58,null))['then'](saveUpdates(_0x3226b5[_0x86d3('0x41')],null))[_0x86d3('0x20')](respondWithResult(_0x14fa58,null))['catch'](handleError(_0x14fa58,null));};exports[_0x86d3('0x45')]=function(_0x23a6ee,_0x197047,_0x2e9af5){return db[_0x86d3('0x26')][_0x86d3('0x39')]({'raw':![],'where':{'VoiceQueueId':_0x23a6ee['params']['id']},'attributes':[[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')](_0x86d3('0x48')))),_0x86d3('0x49')],[db[_0x86d3('0x46')]['fn'](_0x86d3('0x4a'),db[_0x86d3('0x46')]['fn']('IF',db['sequelize'][_0x86d3('0x47')](_0x86d3('0x4b')))),_0x86d3('0x4c')],[db[_0x86d3('0x46')]['fn'](_0x86d3('0x4a'),db[_0x86d3('0x46')]['fn']('IF',db[_0x86d3('0x46')]['literal'](_0x86d3('0x4d')))),'busyContacts'],[db[_0x86d3('0x46')]['fn'](_0x86d3('0x4a'),db[_0x86d3('0x46')]['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')]('`state`\x20=\x208,\x201,\x20null'))),_0x86d3('0x4e')],[db[_0x86d3('0x46')]['fn'](_0x86d3('0x4a'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x86d3('0x4f')))),'dropContacts'],[db[_0x86d3('0x46')]['fn'](_0x86d3('0x4a'),db[_0x86d3('0x46')]['fn']('IF',db[_0x86d3('0x46')]['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),'abandonedContacts'],[db[_0x86d3('0x46')]['fn'](_0x86d3('0x4a'),db['sequelize']['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')](_0x86d3('0x50')))),_0x86d3('0x51')],[db[_0x86d3('0x46')]['fn']('COUNT',db[_0x86d3('0x46')]['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')](_0x86d3('0x52')))),'answeringMachine']]})[_0x86d3('0x20')](handleEntityNotFound(_0x197047,null))[_0x86d3('0x20')](respondWithResult(_0x197047,null))['catch'](handleError(_0x197047,null));};exports[_0x86d3('0x53')]=function(_0x416428,_0x15cdd0,_0x29bdee){return db[_0x86d3('0x26')][_0x86d3('0x39')]({'raw':![],'where':{'CampaignId':_0x416428[_0x86d3('0x44')]['id']},'attributes':[[db['sequelize']['fn']('COUNT',db[_0x86d3('0x46')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x200,\x201,\x20null'))),_0x86d3('0x49')],[db['sequelize']['fn'](_0x86d3('0x4a'),db['sequelize']['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')](_0x86d3('0x4b')))),'noAnswerContacts'],[db['sequelize']['fn'](_0x86d3('0x4a'),db[_0x86d3('0x46')]['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')](_0x86d3('0x4d')))),_0x86d3('0x54')],[db[_0x86d3('0x46')]['fn'](_0x86d3('0x4a'),db[_0x86d3('0x46')]['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')](_0x86d3('0x55')))),_0x86d3('0x4e')],[db[_0x86d3('0x46')]['fn'](_0x86d3('0x4a'),db[_0x86d3('0x46')]['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x86d3('0x56')],[db[_0x86d3('0x46')]['fn'](_0x86d3('0x4a'),db['sequelize']['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')](_0x86d3('0x57')))),_0x86d3('0x58')],[db['sequelize']['fn'](_0x86d3('0x4a'),db['sequelize']['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')](_0x86d3('0x50')))),_0x86d3('0x51')],[db[_0x86d3('0x46')]['fn']('COUNT',db[_0x86d3('0x46')]['fn']('IF',db['sequelize'][_0x86d3('0x47')](_0x86d3('0x52')))),'answeringMachine']]})[_0x86d3('0x20')](handleEntityNotFound(_0x15cdd0,null))[_0x86d3('0x20')](respondWithResult(_0x15cdd0,null))[_0x86d3('0x40')](handleError(_0x15cdd0,null));};exports[_0x86d3('0x59')]=function(_0x308fed,_0x1c966a,_0x379799){return db['VoiceQueue'][_0x86d3('0x43')]({'where':{'id':_0x308fed[_0x86d3('0x44')]['id']}})[_0x86d3('0x20')](handleEntityNotFound(_0x1c966a,null))[_0x86d3('0x20')](function(_0x46e356){var _0x47f72e;if(_0x46e356){_0x47f72e=squel[_0x86d3('0x5a')]()[_0x86d3('0x5b')]('cm_hopper')[_0x86d3('0x5c')]([_0x86d3('0x5d'),_0x86d3('0x5e'),_0x86d3('0x5f'),_0x86d3('0x60'),_0x86d3('0x61'),_0x86d3('0x62'),_0x86d3('0x63')],squel[_0x86d3('0x64')]()[_0x86d3('0x65')](_0x86d3('0x66'),_0x86d3('0x5d'))[_0x86d3('0x65')](_0x86d3('0x67'),'scheduledAt')[_0x86d3('0x65')](_0x86d3('0x68'),_0x86d3('0x5f'))[_0x86d3('0x65')]('ANY_VALUE(ListId)',_0x86d3('0x60'))[_0x86d3('0x65')](_0x86d3('0x69'),_0x86d3('0x61'))['field']('NOW()',_0x86d3('0x62'))['field'](_0x86d3('0x67'),'updatedAt')['from'](_0x86d3('0x6a'))[_0x86d3('0x32')](_0x86d3('0x6b'),_0x308fed[_0x86d3('0x44')]['id'][_0x86d3('0x6c')]())['where'](_0x86d3('0x6d'),_0x308fed[_0x86d3('0x41')]['state'][_0x86d3('0x6c')]())[_0x86d3('0x32')]('calleridnum\x20IS\x20NOT\x20NULL')[_0x86d3('0x32')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x86d3('0x64')]()['field']('phone')[_0x86d3('0x6e')]('cm_hopper')[_0x86d3('0x32')](_0x86d3('0x6b'),_0x308fed[_0x86d3('0x44')]['id'][_0x86d3('0x6c')]()))[_0x86d3('0x32')](_0x86d3('0x6f'),squel[_0x86d3('0x64')]()[_0x86d3('0x65')]('calleridnum')[_0x86d3('0x6e')](_0x86d3('0x6a'))[_0x86d3('0x32')](_0x86d3('0x6b'),_0x308fed[_0x86d3('0x44')]['id']['toString']())[_0x86d3('0x32')](_0x86d3('0x70')))[_0x86d3('0x71')](_0x86d3('0x5f')))[_0x86d3('0x6c')]();return db[_0x86d3('0x46')][_0x86d3('0x2b')](_0x47f72e);}return[];})['then'](respondWithResult(_0x1c966a,null))[_0x86d3('0x40')](handleError(_0x1c966a,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0xca2e0,_0x596b1d,_0x5a22ca){return db[_0x86d3('0x72')][_0x86d3('0x43')]({'where':{'id':_0xca2e0['params']['id']}})[_0x86d3('0x20')](handleEntityNotFound(_0x596b1d,null))[_0x86d3('0x20')](function(_0x879a8b){var _0x1c1384;if(_0x879a8b){_0x1c1384=squel[_0x86d3('0x5a')]()[_0x86d3('0x5b')](_0x86d3('0x73'))['fromQuery'](['phone',_0x86d3('0x5e'),_0x86d3('0x5f'),_0x86d3('0x60'),_0x86d3('0x74'),_0x86d3('0x62'),_0x86d3('0x63')],squel['select']()[_0x86d3('0x65')](_0x86d3('0x66'),_0x86d3('0x5d'))[_0x86d3('0x65')](_0x86d3('0x67'),_0x86d3('0x5e'))[_0x86d3('0x65')](_0x86d3('0x68'),_0x86d3('0x5f'))['field'](_0x86d3('0x75'),_0x86d3('0x60'))['field']('ANY_VALUE(CampaignId)',_0x86d3('0x74'))[_0x86d3('0x65')](_0x86d3('0x67'),'createdAt')[_0x86d3('0x65')](_0x86d3('0x67'),_0x86d3('0x63'))[_0x86d3('0x6e')](_0x86d3('0x6a'))['where'](_0x86d3('0x76'),_0xca2e0[_0x86d3('0x44')]['id']['toString']())[_0x86d3('0x32')](_0x86d3('0x6d'),_0xca2e0[_0x86d3('0x41')][_0x86d3('0x77')]['toString']())[_0x86d3('0x32')](_0x86d3('0x78'))[_0x86d3('0x32')](_0x86d3('0x6f'),squel[_0x86d3('0x64')]()['field'](_0x86d3('0x5d'))[_0x86d3('0x6e')](_0x86d3('0x73'))[_0x86d3('0x32')](_0x86d3('0x76'),_0xca2e0[_0x86d3('0x44')]['id'][_0x86d3('0x6c')]()))[_0x86d3('0x32')](_0x86d3('0x6f'),squel[_0x86d3('0x64')]()['field']('calleridnum')[_0x86d3('0x6e')](_0x86d3('0x6a'))['where'](_0x86d3('0x76'),_0xca2e0[_0x86d3('0x44')]['id'][_0x86d3('0x6c')]())[_0x86d3('0x32')](_0x86d3('0x70')))[_0x86d3('0x71')](_0x86d3('0x5f')))[_0x86d3('0x6c')]();return db[_0x86d3('0x46')]['query'](_0x1c1384);}return[];})['then'](respondWithResult(_0x596b1d,null))['catch'](handleError(_0x596b1d,null));};exports['checkContactHopper']=function(_0xad83bf,_0x2514c1,_0x28a509){return db[_0x86d3('0x79')][_0x86d3('0x7a')]({'where':{'VoiceQueueId':_0xad83bf[_0x86d3('0x41')][_0x86d3('0x61')],'CampaignId':_0xad83bf['body'][_0x86d3('0x74')],'ContactId':_0xad83bf[_0x86d3('0x41')][_0x86d3('0x5f')]}})[_0x86d3('0x20')](handleEntityNotFound(_0x2514c1,null))['then'](function(_0xe239b5){if(_0xe239b5){return _0xe239b5;}return null;})['then'](respondWithResult(_0x2514c1,null))[_0x86d3('0x40')](handleError(_0x2514c1,null));};
\ No newline at end of file
index 8d2594d..72e326c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd423=['moment','request-promise','path','rimraf','./cmHopperFinal.attributes','exports','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','util','../../config/logger','api'];(function(_0x40c8f6,_0xb0abb){var _0x67b544=function(_0x5feb9c){while(--_0x5feb9c){_0x40c8f6['push'](_0x40c8f6['shift']());}};_0x67b544(++_0xb0abb);}(_0xd423,0x1d8));var _0x3d42=function(_0x2d15a5,_0xa395ab){_0x2d15a5=_0x2d15a5-0x0;var _0x2d11a1=_0xd423[_0x2d15a5];return _0x2d11a1;};'use strict';var _=require(_0x3d42('0x0'));var util=require(_0x3d42('0x1'));var logger=require(_0x3d42('0x2'))(_0x3d42('0x3'));var moment=require(_0x3d42('0x4'));var BPromise=require('bluebird');var rp=require(_0x3d42('0x5'));var fs=require('fs');var path=require(_0x3d42('0x6'));var rimraf=require(_0x3d42('0x7'));var config=require('../../config/environment');var attributes=require(_0x3d42('0x8'));module[_0x3d42('0x9')]=function(_0xc40f5,_0x3329b2){return _0xc40f5['define'](_0x3d42('0xa'),attributes,{'tableName':_0x3d42('0xb'),'paranoid':![],'indexes':[{'name':_0x3d42('0xc'),'fields':[_0x3d42('0xc')]},{'name':_0x3d42('0xd'),'fields':[_0x3d42('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x30af=['calleridnum','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperFinal.attributes','exports','define','CmHopperFinal','cm_hopper_final'];(function(_0x3c9b66,_0xcacdeb){var _0x2d645d=function(_0x4d4ced){while(--_0x4d4ced){_0x3c9b66['push'](_0x3c9b66['shift']());}};_0x2d645d(++_0xcacdeb);}(_0x30af,0x134));var _0xf30a=function(_0x23a1ec,_0x2d521f){_0x23a1ec=_0x23a1ec-0x0;var _0x539cce=_0x30af[_0x23a1ec];return _0x539cce;};'use strict';var _=require(_0xf30a('0x0'));var util=require(_0xf30a('0x1'));var logger=require(_0xf30a('0x2'))(_0xf30a('0x3'));var moment=require(_0xf30a('0x4'));var BPromise=require(_0xf30a('0x5'));var rp=require(_0xf30a('0x6'));var fs=require('fs');var path=require(_0xf30a('0x7'));var rimraf=require(_0xf30a('0x8'));var config=require(_0xf30a('0x9'));var attributes=require(_0xf30a('0xa'));module[_0xf30a('0xb')]=function(_0x53b6bb,_0x2e2fae){return _0x53b6bb[_0xf30a('0xc')](_0xf30a('0xd'),attributes,{'tableName':_0xf30a('0xe'),'paranoid':![],'indexes':[{'name':_0xf30a('0xf'),'fields':[_0xf30a('0xf')]},{'name':_0xf30a('0x10'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 863be20..2501a65 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(_0x7547d9,_0x35e138){var _0x5397d9=function(_0x4b6def){while(--_0x4b6def){_0x7547d9['push'](_0x7547d9['shift']());}};_0x5397d9(++_0x35e138);}(_0xb10b,0x12a));var _0xbb10=function(_0x52980f,_0x47b3b0){_0x52980f=_0x52980f-0x0;var _0x1f52a1=_0xb10b[_0x52980f];return _0x1f52a1;};'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 _0xb10b=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperFinal,\x20%s,\x20%s','CmHopperFinal,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateCmHopperFinal','CmHopperFinal','create','options','raw'];(function(_0x2e1e72,_0x421478){var _0x3c8678=function(_0x140740){while(--_0x140740){_0x2e1e72['push'](_0x2e1e72['shift']());}};_0x3c8678(++_0x421478);}(_0xb10b,0x12a));var _0xbb10=function(_0x401ec9,_0x77c73f){_0x401ec9=_0x401ec9-0x0;var _0x8ef3a1=_0xb10b[_0x401ec9];return _0x8ef3a1;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')](_0x378da8['body'],{'raw':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![]})[_0xbb10('0xc')](function(_0xdf237d){logger[_0xbb10('0xd')]('CreateCmHopperFinal',_0x378da8);logger[_0xbb10('0x1a')](_0xbb10('0x15'),_0x378da8,JSON['stringify'](_0xdf237d));_0x575cca(_0xdf237d);})['catch'](function(_0x8e2b97){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x8e2b97[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x8e2b97[_0xbb10('0x13')]));});});};
\ No newline at end of file
index 02dfa46..c10cd77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4e2=['post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','put','update','exports','multer','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id'];(function(_0x9d7049,_0x32c4dd){var _0x104f10=function(_0x195b66){while(--_0x195b66){_0x9d7049['push'](_0x9d7049['shift']());}};_0x104f10(++_0x32c4dd);}(_0xb4e2,0x1aa));var _0x2b4e=function(_0x5a902b,_0x42502a){_0x5a902b=_0x5a902b-0x0;var _0x5c9e24=_0xb4e2[_0x5a902b];return _0x5c9e24;};'use strict';var multer=require(_0x2b4e('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x2b4e('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x2b4e('0x2'));var interaction=require(_0x2b4e('0x3'));var config=require(_0x2b4e('0x4'));var controller=require(_0x2b4e('0x5'));router[_0x2b4e('0x6')]('/',auth[_0x2b4e('0x7')](),controller[_0x2b4e('0x8')]);router['get'](_0x2b4e('0x9'),auth[_0x2b4e('0x7')](),controller[_0x2b4e('0xa')]);router[_0x2b4e('0x6')](_0x2b4e('0xb'),auth[_0x2b4e('0x7')](),controller[_0x2b4e('0xc')]);router[_0x2b4e('0x6')](_0x2b4e('0xd'),auth[_0x2b4e('0x7')](),controller[_0x2b4e('0xe')]);router[_0x2b4e('0x6')](_0x2b4e('0xf'),auth[_0x2b4e('0x7')](),controller['countContactsIvrCampaignHopperFinal']);router[_0x2b4e('0x10')](_0x2b4e('0x11'),auth[_0x2b4e('0x7')](),controller[_0x2b4e('0x12')]);router['post'](_0x2b4e('0x13'),auth['isAuthenticated'](),controller[_0x2b4e('0x14')]);router[_0x2b4e('0x10')](_0x2b4e('0x15'),auth[_0x2b4e('0x7')](),controller[_0x2b4e('0x16')]);router[_0x2b4e('0x17')]('/:id',auth[_0x2b4e('0x7')](),controller[_0x2b4e('0x18')]);module[_0x2b4e('0x19')]=router;
\ No newline at end of file
+var _0x0737=['/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','post','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','put','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/describe','describe','/:id','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal'];(function(_0x18fe0d,_0x1aa796){var _0x2691f4=function(_0x1a3748){while(--_0x1a3748){_0x18fe0d['push'](_0x18fe0d['shift']());}};_0x2691f4(++_0x1aa796);}(_0x0737,0x79));var _0x7073=function(_0x53d3db,_0x41bfe3){_0x53d3db=_0x53d3db-0x0;var _0x5953e8=_0x0737[_0x53d3db];return _0x5953e8;};'use strict';var multer=require(_0x7073('0x0'));var util=require(_0x7073('0x1'));var path=require(_0x7073('0x2'));var timeout=require(_0x7073('0x3'));var express=require(_0x7073('0x4'));var router=express[_0x7073('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x7073('0x6'));var interaction=require(_0x7073('0x7'));var config=require('../../config/environment');var controller=require('./cmHopperFinal.controller');router['get']('/',auth[_0x7073('0x8')](),controller[_0x7073('0x9')]);router[_0x7073('0xa')](_0x7073('0xb'),auth[_0x7073('0x8')](),controller[_0x7073('0xc')]);router[_0x7073('0xa')](_0x7073('0xd'),auth[_0x7073('0x8')](),controller[_0x7073('0xe')]);router['get'](_0x7073('0xf'),auth[_0x7073('0x8')](),controller[_0x7073('0x10')]);router['get'](_0x7073('0x11'),auth[_0x7073('0x8')](),controller[_0x7073('0x12')]);router['post'](_0x7073('0x13'),auth[_0x7073('0x8')](),controller[_0x7073('0x14')]);router[_0x7073('0x15')](_0x7073('0x16'),auth[_0x7073('0x8')](),controller[_0x7073('0x17')]);router[_0x7073('0x15')](_0x7073('0x18'),auth[_0x7073('0x8')](),controller[_0x7073('0x19')]);router[_0x7073('0x1a')]('/:id',auth['isAuthenticated'](),controller['update']);module[_0x7073('0x1b')]=router;
\ No newline at end of file
index bc12ae7..95ff16a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75aa=['STRING','DATE','BOOLEAN','exports','INTEGER'];(function(_0x24493e,_0x578854){var _0x5c444f=function(_0x386c9b){while(--_0x386c9b){_0x24493e['push'](_0x24493e['shift']());}};_0x5c444f(++_0x578854);}(_0x75aa,0xfd));var _0xa75a=function(_0x165d16,_0xa62398){_0x165d16=_0x165d16-0x0;var _0x1e85e5=_0x75aa[_0x165d16];return _0x1e85e5;};'use strict';var Sequelize=require('sequelize');module[_0xa75a('0x0')]={'state':{'type':Sequelize[_0xa75a('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xa75a('0x2')]},'scheduledat':{'type':Sequelize[_0xa75a('0x3')]},'countbusyretry':{'type':Sequelize[_0xa75a('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xa75a('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xa75a('0x1')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xa75a('0x2')]},'originatecalleridnum':{'type':Sequelize[_0xa75a('0x2')]},'originatecalleridname':{'type':Sequelize[_0xa75a('0x2')]},'calleridnum':{'type':Sequelize[_0xa75a('0x2')]},'calleridname':{'type':Sequelize[_0xa75a('0x2')]},'starttime':{'type':Sequelize[_0xa75a('0x3')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xa75a('0x3')]},'droptime':{'type':Sequelize[_0xa75a('0x3')]},'endtime':{'type':Sequelize[_0xa75a('0x3')]},'ringtime':{'type':Sequelize[_0xa75a('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xa75a('0x1')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xa75a('0x1')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xa75a('0x1')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xa75a('0x2')]},'campaign':{'type':Sequelize[_0xa75a('0x2')]},'campaigntype':{'type':Sequelize[_0xa75a('0x2')]},'membername':{'type':Sequelize[_0xa75a('0x2')]},'reason':{'type':Sequelize[_0xa75a('0x2')]},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize[_0xa75a('0x4')],'defaultValue':![]},'callback':{'type':Sequelize[_0xa75a('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xa75a('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xa75a('0x3')]},'recallme':{'type':Sequelize[_0xa75a('0x4')],'defaultValue':![]},'editedat':{'type':Sequelize[_0xa75a('0x3')]},'edited':{'type':Sequelize[_0xa75a('0x4')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0xa75a('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xa75a('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xa75a('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xa75a('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x18f3=['exports','INTEGER','STRING','DATE','BOOLEAN','sequelize'];(function(_0x3c51d4,_0x36ba53){var _0x53c45f=function(_0x3d6683){while(--_0x3d6683){_0x3c51d4['push'](_0x3c51d4['shift']());}};_0x53c45f(++_0x36ba53);}(_0x18f3,0xcb));var _0x318f=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0x18f3[_0x47e7cb];return _0x2a8874;};'use strict';var Sequelize=require(_0x318f('0x0'));module[_0x318f('0x1')]={'state':{'type':Sequelize[_0x318f('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x318f('0x3')]},'scheduledat':{'type':Sequelize[_0x318f('0x4')]},'countbusyretry':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x318f('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x318f('0x3')]},'originatecalleridname':{'type':Sequelize[_0x318f('0x3')]},'calleridnum':{'type':Sequelize[_0x318f('0x3')]},'calleridname':{'type':Sequelize[_0x318f('0x3')]},'starttime':{'type':Sequelize[_0x318f('0x4')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x318f('0x4')]},'droptime':{'type':Sequelize[_0x318f('0x4')]},'endtime':{'type':Sequelize[_0x318f('0x4')]},'ringtime':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x318f('0x3')]},'reason':{'type':Sequelize[_0x318f('0x3')]},'amd':{'type':Sequelize[_0x318f('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x318f('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x318f('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x318f('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize[_0x318f('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize['DATE']},'edited':{'type':Sequelize[_0x318f('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index e054187..9611339 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe611=['type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','find','create','body','uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','status','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','then','end','sendStatus','error','name','map','CmHopperHistory','rawAttributes','fieldName'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe611,0x15a));var _0x1e61=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0xe611[_0x565c49];return _0x20ca34;};'use strict';var emlformat=require(_0x1e61('0x0'));var rimraf=require(_0x1e61('0x1'));var zipdir=require(_0x1e61('0x2'));var jsonpatch=require(_0x1e61('0x3'));var rp=require(_0x1e61('0x4'));var moment=require(_0x1e61('0x5'));var BPromise=require(_0x1e61('0x6'));var Mustache=require(_0x1e61('0x7'));var util=require(_0x1e61('0x8'));var path=require('path');var sox=require(_0x1e61('0x9'));var csv=require(_0x1e61('0xa'));var ejs=require(_0x1e61('0xb'));var fs=require('fs');var fs_extra=require(_0x1e61('0xc'));var _=require(_0x1e61('0xd'));var squel=require(_0x1e61('0xe'));var crypto=require(_0x1e61('0xf'));var jsforce=require(_0x1e61('0x10'));var deskjs=require(_0x1e61('0x11'));var toCsv=require('to-csv');var querystring=require(_0x1e61('0x12'));var Papa=require(_0x1e61('0x13'));var Redis=require(_0x1e61('0x14'));var authService=require(_0x1e61('0x15'));var qs=require(_0x1e61('0x16'));var as=require(_0x1e61('0x17'));var hardwareService=require(_0x1e61('0x18'));var logger=require('../../config/logger')(_0x1e61('0x19'));var utils=require('../../config/utils');var config=require(_0x1e61('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x1e61('0x1b'))['db'];function respondWithStatusCode(_0xe04460,_0x3d8398){_0x3d8398=_0x3d8398||0xcc;return function(_0x580ad7){if(_0x580ad7){return _0xe04460['sendStatus'](_0x3d8398);}return _0xe04460[_0x1e61('0x1c')](_0x3d8398)['end']();};}function respondWithResult(_0x45053f,_0x710be5){_0x710be5=_0x710be5||0xc8;return function(_0x2dac26){if(_0x2dac26){return _0x45053f['status'](_0x710be5)[_0x1e61('0x1d')](_0x2dac26);}};}function respondWithFilteredResult(_0x9c6093,_0x138c16){return function(_0x31b77b){if(_0x31b77b){var _0x14a64a=typeof _0x138c16['offset']===_0x1e61('0x1e')&&typeof _0x138c16[_0x1e61('0x1f')]==='undefined';var _0x51376a=_0x31b77b['count'];var _0x1d1d28=_0x14a64a?0x0:_0x138c16[_0x1e61('0x20')];var _0x96932c=_0x14a64a?_0x31b77b[_0x1e61('0x21')]:_0x138c16[_0x1e61('0x20')]+_0x138c16['limit'];var _0x19f94f;if(_0x96932c>=_0x51376a){_0x96932c=_0x51376a;_0x19f94f=0xc8;}else{_0x19f94f=0xce;}_0x9c6093[_0x1e61('0x1c')](_0x19f94f);return _0x9c6093[_0x1e61('0x22')](_0x1e61('0x23'),_0x1d1d28+'-'+_0x96932c+'/'+_0x51376a)[_0x1e61('0x1d')](_0x31b77b);}return null;};}function patchUpdates(_0x230861){return function(_0x1258b3){try{jsonpatch[_0x1e61('0x24')](_0x1258b3,_0x230861,!![]);}catch(_0x610213){return BPromise[_0x1e61('0x25')](_0x610213);}return _0x1258b3[_0x1e61('0x26')]();};}function saveUpdates(_0x488294,_0x5412f7){return function(_0x124295){if(_0x124295){return _0x124295[_0x1e61('0x27')](_0x488294)[_0x1e61('0x28')](function(_0x549de2){return _0x549de2;});}return null;};}function removeEntity(_0x14319d,_0x297b4f){return function(_0x9bd841){if(_0x9bd841){return _0x9bd841['destroy']()[_0x1e61('0x28')](function(){_0x14319d['status'](0xcc)[_0x1e61('0x29')]();});}};}function handleEntityNotFound(_0x1141f2,_0x4b4eba){return function(_0x530cbd){if(!_0x530cbd){_0x1141f2[_0x1e61('0x2a')](0x194);}return _0x530cbd;};}function handleError(_0x11cc62,_0x452886){_0x452886=_0x452886||0x1f4;return function(_0x4d583d){logger[_0x1e61('0x2b')](_0x4d583d['stack']);if(_0x4d583d[_0x1e61('0x2c')]){delete _0x4d583d[_0x1e61('0x2c')];}_0x11cc62['status'](_0x452886)['send'](_0x4d583d);};}exports['index']=function(_0x53ee2e,_0x55b0ba){var _0x47d6d6={},_0x45adc8={},_0x51add9={'count':0x0,'rows':[]};var _0x2d0880=_[_0x1e61('0x2d')](db[_0x1e61('0x2e')][_0x1e61('0x2f')],function(_0x559b9a){return{'name':_0x559b9a[_0x1e61('0x30')],'type':_0x559b9a[_0x1e61('0x31')][_0x1e61('0x32')]};});_0x45adc8[_0x1e61('0x33')]=_[_0x1e61('0x2d')](_0x2d0880,'name');_0x45adc8[_0x1e61('0x34')]=_[_0x1e61('0x35')](_0x53ee2e[_0x1e61('0x34')]);_0x45adc8['filters']=_['intersection'](_0x45adc8[_0x1e61('0x33')],_0x45adc8[_0x1e61('0x34')]);_0x47d6d6[_0x1e61('0x36')]=_[_0x1e61('0x37')](_0x45adc8[_0x1e61('0x33')],qs[_0x1e61('0x38')](_0x53ee2e[_0x1e61('0x34')]['fields']));_0x47d6d6['attributes']=_0x47d6d6['attributes'][_0x1e61('0x39')]?_0x47d6d6['attributes']:_0x45adc8[_0x1e61('0x33')];if(!_0x53ee2e[_0x1e61('0x34')][_0x1e61('0x3a')](_0x1e61('0x3b'))){_0x47d6d6[_0x1e61('0x1f')]=qs[_0x1e61('0x1f')](_0x53ee2e['query'][_0x1e61('0x1f')]);_0x47d6d6[_0x1e61('0x20')]=qs[_0x1e61('0x20')](_0x53ee2e[_0x1e61('0x34')][_0x1e61('0x20')]);}_0x47d6d6[_0x1e61('0x3c')]=qs['sort'](_0x53ee2e['query'][_0x1e61('0x3d')]);_0x47d6d6[_0x1e61('0x3e')]=qs[_0x1e61('0x3f')](_[_0x1e61('0x40')](_0x53ee2e[_0x1e61('0x34')],_0x45adc8['filters']),_0x2d0880);if(_0x53ee2e[_0x1e61('0x34')][_0x1e61('0x41')]){_0x47d6d6[_0x1e61('0x3e')]=_[_0x1e61('0x42')](_0x47d6d6[_0x1e61('0x3e')],{'$or':_[_0x1e61('0x2d')](_0x2d0880,function(_0x1efd3e){if(_0x1efd3e[_0x1e61('0x31')]!==_0x1e61('0x43')){var _0x1d7cd5={};_0x1d7cd5[_0x1efd3e[_0x1e61('0x2c')]]={'$like':'%'+_0x53ee2e['query']['filter']+'%'};return _0x1d7cd5;}})});}_0x47d6d6=_['merge']({},_0x47d6d6,_0x53ee2e[_0x1e61('0x44')]);var _0x24852c={'where':_0x47d6d6[_0x1e61('0x3e')]};return db['CmHopperHistory']['count'](_0x24852c)['then'](function(_0x481afe){_0x51add9[_0x1e61('0x21')]=_0x481afe;if(_0x53ee2e[_0x1e61('0x34')][_0x1e61('0x45')]){_0x47d6d6['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x1e61('0x46')](_0x47d6d6);})[_0x1e61('0x28')](function(_0x347c2d){_0x51add9[_0x1e61('0x47')]=_0x347c2d;return _0x51add9;})[_0x1e61('0x28')](respondWithFilteredResult(_0x55b0ba,_0x47d6d6))[_0x1e61('0x48')](handleError(_0x55b0ba,null));};exports[_0x1e61('0x49')]=function(_0x2800ff,_0xe26481){var _0x39179c={'raw':!![],'where':{'id':_0x2800ff[_0x1e61('0x4a')]['id']}},_0x12c379={};_0x12c379[_0x1e61('0x33')]=_[_0x1e61('0x35')](db[_0x1e61('0x2e')][_0x1e61('0x2f')]);_0x12c379[_0x1e61('0x34')]=_[_0x1e61('0x35')](_0x2800ff[_0x1e61('0x34')]);_0x12c379['filters']=_[_0x1e61('0x37')](_0x12c379[_0x1e61('0x33')],_0x12c379[_0x1e61('0x34')]);_0x39179c[_0x1e61('0x36')]=_['intersection'](_0x12c379[_0x1e61('0x33')],qs[_0x1e61('0x38')](_0x2800ff[_0x1e61('0x34')][_0x1e61('0x38')]));_0x39179c[_0x1e61('0x36')]=_0x39179c[_0x1e61('0x36')][_0x1e61('0x39')]?_0x39179c[_0x1e61('0x36')]:_0x12c379[_0x1e61('0x33')];if(_0x2800ff[_0x1e61('0x34')][_0x1e61('0x45')]){_0x39179c['include']=[{'all':!![]}];}_0x39179c=_[_0x1e61('0x42')]({},_0x39179c,_0x2800ff['options']);return db[_0x1e61('0x2e')][_0x1e61('0x4b')](_0x39179c)[_0x1e61('0x28')](handleEntityNotFound(_0xe26481,null))[_0x1e61('0x28')](respondWithResult(_0xe26481,null))[_0x1e61('0x48')](handleError(_0xe26481,null));};exports['create']=function(_0x7e96ed,_0x1d364f){return db[_0x1e61('0x2e')][_0x1e61('0x4c')](_0x7e96ed[_0x1e61('0x4d')],{})[_0x1e61('0x28')](respondWithResult(_0x1d364f,0xc9))[_0x1e61('0x48')](handleError(_0x1d364f,null));};exports['describe']=function(_0x17be28,_0x3f6f93){return db[_0x1e61('0x2e')]['describe']()[_0x1e61('0x28')](respondWithResult(_0x3f6f93,null))[_0x1e61('0x48')](handleError(_0x3f6f93,null));};exports[_0x1e61('0x27')]=function(_0x517a89,_0x53f2a7){if(_0x517a89[_0x1e61('0x4d')][_0x1e61('0x4e')]){delete _0x517a89[_0x1e61('0x4d')]['uniqueid'];}return db[_0x1e61('0x2e')][_0x1e61('0x4b')]({'where':{'uniqueid':_0x517a89[_0x1e61('0x4a')]['id']}})[_0x1e61('0x28')](handleEntityNotFound(_0x53f2a7,null))['then'](saveUpdates(_0x517a89[_0x1e61('0x4d')],null))[_0x1e61('0x28')](respondWithResult(_0x53f2a7,null))[_0x1e61('0x48')](handleError(_0x53f2a7,null));};
\ No newline at end of file
+var _0xaee4=['squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','CmHopperHistory','findAll','rows','catch','show','includeAll','include','options','find','create','body','describe','uniqueid','params','eml-format','rimraf','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaee4,0x95));var _0x4aee=function(_0x28172,_0x48c229){_0x28172=_0x28172-0x0;var _0x23c3e9=_0xaee4[_0x28172];return _0x23c3e9;};'use strict';var emlformat=require(_0x4aee('0x0'));var rimraf=require(_0x4aee('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4aee('0x2'));var rp=require(_0x4aee('0x3'));var moment=require('moment');var BPromise=require(_0x4aee('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x4aee('0x5'));var sox=require(_0x4aee('0x6'));var csv=require(_0x4aee('0x7'));var ejs=require(_0x4aee('0x8'));var fs=require('fs');var fs_extra=require(_0x4aee('0x9'));var _=require(_0x4aee('0xa'));var squel=require(_0x4aee('0xb'));var crypto=require(_0x4aee('0xc'));var jsforce=require(_0x4aee('0xd'));var deskjs=require(_0x4aee('0xe'));var toCsv=require(_0x4aee('0x7'));var querystring=require(_0x4aee('0xf'));var Papa=require(_0x4aee('0x10'));var Redis=require(_0x4aee('0x11'));var authService=require(_0x4aee('0x12'));var qs=require(_0x4aee('0x13'));var as=require(_0x4aee('0x14'));var hardwareService=require(_0x4aee('0x15'));var logger=require(_0x4aee('0x16'))(_0x4aee('0x17'));var utils=require(_0x4aee('0x18'));var config=require(_0x4aee('0x19'));var licenseUtil=require(_0x4aee('0x1a'));var db=require(_0x4aee('0x1b'))['db'];function respondWithStatusCode(_0x35573b,_0x9f8f7e){_0x9f8f7e=_0x9f8f7e||0xcc;return function(_0x82af9a){if(_0x82af9a){return _0x35573b['sendStatus'](_0x9f8f7e);}return _0x35573b[_0x4aee('0x1c')](_0x9f8f7e)[_0x4aee('0x1d')]();};}function respondWithResult(_0x30b4a0,_0x530156){_0x530156=_0x530156||0xc8;return function(_0x2571f6){if(_0x2571f6){return _0x30b4a0[_0x4aee('0x1c')](_0x530156)['json'](_0x2571f6);}};}function respondWithFilteredResult(_0x5adb3f,_0x15f0c3){return function(_0x3b6138){if(_0x3b6138){var _0x4d362d=typeof _0x15f0c3[_0x4aee('0x1e')]===_0x4aee('0x1f')&&typeof _0x15f0c3[_0x4aee('0x20')]===_0x4aee('0x1f');var _0x35b27b=_0x3b6138[_0x4aee('0x21')];var _0x315c33=_0x4d362d?0x0:_0x15f0c3[_0x4aee('0x1e')];var _0x55b667=_0x4d362d?_0x3b6138[_0x4aee('0x21')]:_0x15f0c3['offset']+_0x15f0c3['limit'];var _0x2bc9df;if(_0x55b667>=_0x35b27b){_0x55b667=_0x35b27b;_0x2bc9df=0xc8;}else{_0x2bc9df=0xce;}_0x5adb3f[_0x4aee('0x1c')](_0x2bc9df);return _0x5adb3f[_0x4aee('0x22')]('Content-Range',_0x315c33+'-'+_0x55b667+'/'+_0x35b27b)[_0x4aee('0x23')](_0x3b6138);}return null;};}function patchUpdates(_0x3fbe27){return function(_0x3c1ca6){try{jsonpatch[_0x4aee('0x24')](_0x3c1ca6,_0x3fbe27,!![]);}catch(_0x106724){return BPromise[_0x4aee('0x25')](_0x106724);}return _0x3c1ca6[_0x4aee('0x26')]();};}function saveUpdates(_0x542ca8,_0x540c91){return function(_0x43362b){if(_0x43362b){return _0x43362b[_0x4aee('0x27')](_0x542ca8)['then'](function(_0x46d8ff){return _0x46d8ff;});}return null;};}function removeEntity(_0x29cb4b,_0x483e94){return function(_0x5a7a4a){if(_0x5a7a4a){return _0x5a7a4a[_0x4aee('0x28')]()[_0x4aee('0x29')](function(){_0x29cb4b[_0x4aee('0x1c')](0xcc)[_0x4aee('0x1d')]();});}};}function handleEntityNotFound(_0x496043,_0x8709b0){return function(_0x23a2d9){if(!_0x23a2d9){_0x496043['sendStatus'](0x194);}return _0x23a2d9;};}function handleError(_0x4b895a,_0x44ba3c){_0x44ba3c=_0x44ba3c||0x1f4;return function(_0x5ce591){logger[_0x4aee('0x2a')](_0x5ce591[_0x4aee('0x2b')]);if(_0x5ce591[_0x4aee('0x2c')]){delete _0x5ce591[_0x4aee('0x2c')];}_0x4b895a[_0x4aee('0x1c')](_0x44ba3c)[_0x4aee('0x2d')](_0x5ce591);};}exports[_0x4aee('0x2e')]=function(_0x103f91,_0x4f72b7){var _0x4e061e={},_0x5e699b={},_0x80e991={'count':0x0,'rows':[]};var _0x47afce=_[_0x4aee('0x2f')](db['CmHopperHistory'][_0x4aee('0x30')],function(_0x9e2246){return{'name':_0x9e2246[_0x4aee('0x31')],'type':_0x9e2246[_0x4aee('0x32')][_0x4aee('0x33')]};});_0x5e699b[_0x4aee('0x34')]=_[_0x4aee('0x2f')](_0x47afce,_0x4aee('0x2c'));_0x5e699b[_0x4aee('0x35')]=_[_0x4aee('0x36')](_0x103f91['query']);_0x5e699b[_0x4aee('0x37')]=_['intersection'](_0x5e699b[_0x4aee('0x34')],_0x5e699b[_0x4aee('0x35')]);_0x4e061e[_0x4aee('0x38')]=_['intersection'](_0x5e699b[_0x4aee('0x34')],qs[_0x4aee('0x39')](_0x103f91[_0x4aee('0x35')][_0x4aee('0x39')]));_0x4e061e[_0x4aee('0x38')]=_0x4e061e[_0x4aee('0x38')][_0x4aee('0x3a')]?_0x4e061e['attributes']:_0x5e699b[_0x4aee('0x34')];if(!_0x103f91[_0x4aee('0x35')][_0x4aee('0x3b')](_0x4aee('0x3c'))){_0x4e061e[_0x4aee('0x20')]=qs['limit'](_0x103f91[_0x4aee('0x35')]['limit']);_0x4e061e[_0x4aee('0x1e')]=qs['offset'](_0x103f91[_0x4aee('0x35')][_0x4aee('0x1e')]);}_0x4e061e[_0x4aee('0x3d')]=qs[_0x4aee('0x3e')](_0x103f91['query']['sort']);_0x4e061e['where']=qs['filters'](_['pick'](_0x103f91['query'],_0x5e699b[_0x4aee('0x37')]),_0x47afce);if(_0x103f91[_0x4aee('0x35')][_0x4aee('0x3f')]){_0x4e061e[_0x4aee('0x40')]=_[_0x4aee('0x41')](_0x4e061e[_0x4aee('0x40')],{'$or':_[_0x4aee('0x2f')](_0x47afce,function(_0x9a0a68){if(_0x9a0a68[_0x4aee('0x32')]!=='VIRTUAL'){var _0x56ac8b={};_0x56ac8b[_0x9a0a68[_0x4aee('0x2c')]]={'$like':'%'+_0x103f91[_0x4aee('0x35')][_0x4aee('0x3f')]+'%'};return _0x56ac8b;}})});}_0x4e061e=_[_0x4aee('0x41')]({},_0x4e061e,_0x103f91['options']);var _0x1f1adf={'where':_0x4e061e['where']};return db['CmHopperHistory']['count'](_0x1f1adf)['then'](function(_0x279b38){_0x80e991[_0x4aee('0x21')]=_0x279b38;if(_0x103f91[_0x4aee('0x35')]['includeAll']){_0x4e061e['include']=[{'all':!![]}];}return db[_0x4aee('0x42')][_0x4aee('0x43')](_0x4e061e);})['then'](function(_0x599d3e){_0x80e991[_0x4aee('0x44')]=_0x599d3e;return _0x80e991;})[_0x4aee('0x29')](respondWithFilteredResult(_0x4f72b7,_0x4e061e))[_0x4aee('0x45')](handleError(_0x4f72b7,null));};exports[_0x4aee('0x46')]=function(_0x491a5c,_0x8b7cd6){var _0x4d2f93={'raw':!![],'where':{'id':_0x491a5c['params']['id']}},_0x49ebef={};_0x49ebef['model']=_[_0x4aee('0x36')](db[_0x4aee('0x42')][_0x4aee('0x30')]);_0x49ebef['query']=_['keys'](_0x491a5c['query']);_0x49ebef['filters']=_['intersection'](_0x49ebef[_0x4aee('0x34')],_0x49ebef[_0x4aee('0x35')]);_0x4d2f93[_0x4aee('0x38')]=_['intersection'](_0x49ebef[_0x4aee('0x34')],qs[_0x4aee('0x39')](_0x491a5c[_0x4aee('0x35')]['fields']));_0x4d2f93[_0x4aee('0x38')]=_0x4d2f93[_0x4aee('0x38')]['length']?_0x4d2f93['attributes']:_0x49ebef[_0x4aee('0x34')];if(_0x491a5c[_0x4aee('0x35')][_0x4aee('0x47')]){_0x4d2f93[_0x4aee('0x48')]=[{'all':!![]}];}_0x4d2f93=_[_0x4aee('0x41')]({},_0x4d2f93,_0x491a5c[_0x4aee('0x49')]);return db[_0x4aee('0x42')][_0x4aee('0x4a')](_0x4d2f93)['then'](handleEntityNotFound(_0x8b7cd6,null))[_0x4aee('0x29')](respondWithResult(_0x8b7cd6,null))[_0x4aee('0x45')](handleError(_0x8b7cd6,null));};exports[_0x4aee('0x4b')]=function(_0x55f712,_0x4bc895){return db[_0x4aee('0x42')][_0x4aee('0x4b')](_0x55f712[_0x4aee('0x4c')],{})[_0x4aee('0x29')](respondWithResult(_0x4bc895,0xc9))['catch'](handleError(_0x4bc895,null));};exports[_0x4aee('0x4d')]=function(_0x3d3ec1,_0x4b9741){return db['CmHopperHistory']['describe']()[_0x4aee('0x29')](respondWithResult(_0x4b9741,null))[_0x4aee('0x45')](handleError(_0x4b9741,null));};exports[_0x4aee('0x27')]=function(_0x3ebf39,_0x25989f){if(_0x3ebf39[_0x4aee('0x4c')][_0x4aee('0x4e')]){delete _0x3ebf39[_0x4aee('0x4c')]['uniqueid'];}return db[_0x4aee('0x42')][_0x4aee('0x4a')]({'where':{'uniqueid':_0x3ebf39[_0x4aee('0x4f')]['id']}})[_0x4aee('0x29')](handleEntityNotFound(_0x25989f,null))[_0x4aee('0x29')](saveUpdates(_0x3ebf39['body'],null))[_0x4aee('0x29')](respondWithResult(_0x25989f,null))[_0x4aee('0x45')](handleError(_0x25989f,null));};
\ No newline at end of file
index 95410bd..aa8806e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e1c=['lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperHistory.attributes','exports','CmHopperHistory','cm_hopper_history','endtime','uniqueid'];(function(_0x53fd63,_0x1eb308){var _0x30b547=function(_0x2dda0c){while(--_0x2dda0c){_0x53fd63['push'](_0x53fd63['shift']());}};_0x30b547(++_0x1eb308);}(_0x6e1c,0xb6));var _0xc6e1=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6e1c[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xc6e1('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xc6e1('0x1'));var moment=require(_0xc6e1('0x2'));var BPromise=require(_0xc6e1('0x3'));var rp=require(_0xc6e1('0x4'));var fs=require('fs');var path=require(_0xc6e1('0x5'));var rimraf=require(_0xc6e1('0x6'));var config=require(_0xc6e1('0x7'));var attributes=require(_0xc6e1('0x8'));module[_0xc6e1('0x9')]=function(_0x3e2d6c,_0x468a80){return _0x3e2d6c['define'](_0xc6e1('0xa'),attributes,{'tableName':_0xc6e1('0xb'),'paranoid':![],'indexes':[{'name':_0xc6e1('0xc'),'fields':[_0xc6e1('0xc')]},{'name':_0xc6e1('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x79d7=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./cmHopperHistory.attributes','exports','define','cm_hopper_history','endtime'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x79d7,0x9c));var _0x779d=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0x79d7[_0x422905];return _0x33dc6c;};'use strict';var _=require(_0x779d('0x0'));var util=require('util');var logger=require(_0x779d('0x1'))(_0x779d('0x2'));var moment=require(_0x779d('0x3'));var BPromise=require(_0x779d('0x4'));var rp=require(_0x779d('0x5'));var fs=require('fs');var path=require(_0x779d('0x6'));var rimraf=require('rimraf');var config=require(_0x779d('0x7'));var attributes=require(_0x779d('0x8'));module[_0x779d('0x9')]=function(_0x4f0103,_0x51870f){return _0x4f0103[_0x779d('0xa')]('CmHopperHistory',attributes,{'tableName':_0x779d('0xb'),'paranoid':![],'indexes':[{'name':_0x779d('0xc'),'fields':['endtime']},{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index c929669..9a838eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63e4=['outboundRejectCallsDay','outboundReCallsDay','stringify','GetCampaignHopperHistory','findAll','ivrTotalCallsDays','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','error','CmHopperHistory,\x20%s,\x20%s','message','result','catch','CreateCmHopperHistory','create','body','options','raw','AvgHandleTime','CmHopperHistory','col','sequelize','COUNT','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null'];(function(_0x3f4dd9,_0xe0b819){var _0x31c54a=function(_0x25e6c6){while(--_0x25e6c6){_0x3f4dd9['push'](_0x3f4dd9['shift']());}};_0x31c54a(++_0xe0b819);}(_0x63e4,0x12a));var _0x463e=function(_0x4af629,_0x52bc11){_0x4af629=_0x4af629-0x0;var _0x4fca7e=_0x63e4[_0x4af629];return _0x4fca7e;};'use strict';var _=require(_0x463e('0x0'));var util=require(_0x463e('0x1'));var moment=require(_0x463e('0x2'));var BPromise=require(_0x463e('0x3'));var rs=require(_0x463e('0x4'));var fs=require('fs');var Redis=require(_0x463e('0x5'));var db=require(_0x463e('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x463e('0x7'))(_0x463e('0x8'));var config=require(_0x463e('0x9'));var jayson=require(_0x463e('0xa'));var client=jayson[_0x463e('0xb')][_0x463e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x703906,_0x273c7a,_0x3a5492){return new BPromise(function(_0x6d5e93,_0x441fed){return client[_0x463e('0xd')](_0x703906,_0x3a5492)[_0x463e('0xe')](function(_0x33e94f){logger[_0x463e('0xf')]('CmHopperHistory,\x20%s,\x20%s',_0x273c7a,_0x463e('0x10'));logger[_0x463e('0x11')](_0x463e('0x12'),_0x273c7a,_0x463e('0x10'),JSON['stringify'](_0x33e94f));if(_0x33e94f[_0x463e('0x13')]){if(_0x33e94f[_0x463e('0x13')]['code']===0x1f4){logger[_0x463e('0x13')](_0x463e('0x14'),_0x273c7a,_0x33e94f[_0x463e('0x13')][_0x463e('0x15')]);return _0x441fed(_0x33e94f['error'][_0x463e('0x15')]);}logger[_0x463e('0x13')](_0x463e('0x14'),_0x273c7a,_0x33e94f[_0x463e('0x13')]['message']);return _0x6d5e93(_0x33e94f[_0x463e('0x13')][_0x463e('0x15')]);}else{logger[_0x463e('0xf')](_0x463e('0x14'),_0x273c7a,_0x463e('0x10'));_0x6d5e93(_0x33e94f[_0x463e('0x16')][_0x463e('0x15')]);}})[_0x463e('0x17')](function(_0x1b29ad){logger['error']('CmHopperHistory,\x20%s,\x20%s',_0x273c7a,_0x1b29ad);_0x441fed(_0x1b29ad);});});}exports[_0x463e('0x18')]=function(_0x12d637){var _0x292639=this;return new Promise(function(_0x52789a,_0x7390d5){return db['CmHopperHistory'][_0x463e('0x19')](_0x12d637[_0x463e('0x1a')],{'raw':_0x12d637[_0x463e('0x1b')]?_0x12d637[_0x463e('0x1b')][_0x463e('0x1c')]===undefined?!![]:![]:!![]})[_0x463e('0xe')](function(_0x1b196b){logger[_0x463e('0xf')](_0x463e('0x18'),_0x12d637);logger['debug']('CreateCmHopperHistory',_0x12d637,JSON['stringify'](_0x1b196b));_0x52789a(_0x1b196b);})[_0x463e('0x17')](function(_0x402c74){logger['error'](_0x463e('0x18'),_0x402c74[_0x463e('0x15')],_0x12d637);_0x7390d5(_0x292639['error'](0x1f4,_0x402c74[_0x463e('0x15')]));});});};exports[_0x463e('0x1d')]=function(_0x3f001d){var _0x44d4ec=this;return new Promise(function(_0x77473b,_0x4726a5){return db[_0x463e('0x1e')]['findAll']({'raw':_0x3f001d[_0x463e('0x1b')]?_0x3f001d['options'][_0x463e('0x1c')]===undefined?!![]:![]:!![],'where':_0x3f001d['options']?_0x3f001d[_0x463e('0x1b')]['where']||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db['sequelize'][_0x463e('0x1f')]('id')),'predictiveIntervalTotalCalls'],[db[_0x463e('0x20')]['fn'](_0x463e('0x21'),db[_0x463e('0x20')]['fn']('IF',db[_0x463e('0x20')][_0x463e('0x22')](_0x463e('0x23')))),_0x463e('0x24')],[db['sequelize']['fn'](_0x463e('0x21'),db[_0x463e('0x20')]['fn']('IF',db[_0x463e('0x20')][_0x463e('0x22')](_0x463e('0x25')))),_0x463e('0x26')],[db[_0x463e('0x20')]['fn']('COUNT',db[_0x463e('0x20')]['fn']('IF',db[_0x463e('0x20')][_0x463e('0x22')](_0x463e('0x27')))),_0x463e('0x28')],[db[_0x463e('0x20')]['fn'](_0x463e('0x29'),db[_0x463e('0x20')]['fn']('IF',db[_0x463e('0x20')][_0x463e('0x22')](_0x463e('0x2a')))),_0x463e('0x2b')],[db[_0x463e('0x20')]['fn'](_0x463e('0x29'),db[_0x463e('0x20')]['fn']('IF',db[_0x463e('0x20')][_0x463e('0x22')](_0x463e('0x2c')))),_0x463e('0x2d')]]})[_0x463e('0xe')](function(_0x547615){logger['info'](_0x463e('0x1d'),_0x3f001d);logger['debug'](_0x463e('0x1d'),_0x3f001d,JSON['stringify'](_0x547615));_0x77473b(_0x547615);})[_0x463e('0x17')](function(_0x494ce3){logger[_0x463e('0x13')](_0x463e('0x1d'),_0x494ce3[_0x463e('0x15')],_0x3f001d);_0x4726a5(_0x44d4ec['error'](0x1f4,_0x494ce3[_0x463e('0x15')]));});});};exports[_0x463e('0x2e')]=function(_0x10795f){var _0x23ac94=this;return new Promise(function(_0x5e1f8c,_0x1f9f75){return db[_0x463e('0x1e')]['findAll']({'raw':_0x10795f[_0x463e('0x1b')]?_0x10795f[_0x463e('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x10795f[_0x463e('0x1b')]?_0x10795f[_0x463e('0x1b')]['where']||null:null,'attributes':[[_0x463e('0x2f'),_0x463e('0x30')],[db[_0x463e('0x20')]['fn'](_0x463e('0x21'),db['sequelize']['fn']('IF',db[_0x463e('0x20')][_0x463e('0x22')](_0x463e('0x31')))),_0x463e('0x32')],[db[_0x463e('0x20')]['fn'](_0x463e('0x21'),db[_0x463e('0x20')]['fn']('IF',db['sequelize']['literal'](_0x463e('0x33')))),_0x463e('0x34')],[db[_0x463e('0x20')]['fn'](_0x463e('0x21'),db[_0x463e('0x20')]['fn']('IF',db[_0x463e('0x20')][_0x463e('0x22')]('`state`\x20=\x204,\x201,\x20null'))),_0x463e('0x35')],[db[_0x463e('0x20')]['fn'](_0x463e('0x21'),db[_0x463e('0x20')]['fn']('IF',db[_0x463e('0x20')][_0x463e('0x22')](_0x463e('0x36')))),'outboundBusyCallsDay'],[db[_0x463e('0x20')]['fn'](_0x463e('0x21'),db[_0x463e('0x20')]['fn']('IF',db[_0x463e('0x20')][_0x463e('0x22')](_0x463e('0x37')))),_0x463e('0x38')],[db[_0x463e('0x20')]['fn'](_0x463e('0x21'),db[_0x463e('0x20')]['fn']('IF',db[_0x463e('0x20')][_0x463e('0x22')](_0x463e('0x39')))),_0x463e('0x3a')],[db['sequelize']['fn']('COUNT',db[_0x463e('0x20')]['fn']('IF',db[_0x463e('0x20')][_0x463e('0x22')](_0x463e('0x3b')))),_0x463e('0x3c')],[db[_0x463e('0x20')]['fn'](_0x463e('0x21'),db['sequelize']['fn']('IF',db['sequelize'][_0x463e('0x22')](_0x463e('0x3d')))),_0x463e('0x3e')],[db[_0x463e('0x20')]['fn']('COUNT',db[_0x463e('0x20')]['fn']('IF',db[_0x463e('0x20')][_0x463e('0x22')]('`state`\x20=\x2013,\x201,\x20null'))),_0x463e('0x3f')],[db[_0x463e('0x20')]['fn'](_0x463e('0x21'),db['sequelize']['fn']('IF',db[_0x463e('0x20')][_0x463e('0x22')](_0x463e('0x40')))),_0x463e('0x41')],[db[_0x463e('0x20')]['fn'](_0x463e('0x21'),db[_0x463e('0x20')]['fn']('IF',db[_0x463e('0x20')][_0x463e('0x22')](_0x463e('0x42')))),'outboundRejectCallsDay'],[db['sequelize']['fn'](_0x463e('0x21'),db[_0x463e('0x20')]['fn']('IF',db[_0x463e('0x20')][_0x463e('0x22')]('`state`\x20=\x2016,\x201,\x20null'))),'outboundAnswerAgiCallsDay'],[db[_0x463e('0x20')]['fn'](_0x463e('0x21'),db[_0x463e('0x20')]['fn']('IF',db['sequelize'][_0x463e('0x22')]('`state`\x20=\x2020,\x201,\x20null'))),_0x463e('0x43')],[db['sequelize']['fn']('COUNT',db[_0x463e('0x20')]['fn']('IF',db[_0x463e('0x20')][_0x463e('0x22')]('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),_0x463e('0x44')]],'group':[_0x463e('0x2f')]})[_0x463e('0xe')](function(_0x33f6ad){logger[_0x463e('0xf')](_0x463e('0x2e'),_0x10795f);logger[_0x463e('0x11')](_0x463e('0x2e'),_0x10795f,JSON[_0x463e('0x45')](_0x33f6ad));_0x5e1f8c(_0x33f6ad);})[_0x463e('0x17')](function(_0x4fa09e){logger[_0x463e('0x13')]('GetVoiceQueueHopperHistory',_0x4fa09e[_0x463e('0x15')],_0x10795f);_0x1f9f75(_0x23ac94[_0x463e('0x13')](0x1f4,_0x4fa09e[_0x463e('0x15')]));});});};exports[_0x463e('0x46')]=function(_0x5eb382){var _0x1c184b=this;return new Promise(function(_0x46f223,_0x352021){return db[_0x463e('0x1e')][_0x463e('0x47')]({'raw':_0x5eb382[_0x463e('0x1b')]?_0x5eb382[_0x463e('0x1b')][_0x463e('0x1c')]===undefined?!![]:![]:!![],'where':_0x5eb382[_0x463e('0x1b')]?_0x5eb382[_0x463e('0x1b')]['where']||null:null,'attributes':[[_0x463e('0x2f'),_0x463e('0x30')],[db[_0x463e('0x20')]['fn'](_0x463e('0x21'),db['sequelize'][_0x463e('0x1f')]('id')),_0x463e('0x48')],[db[_0x463e('0x20')]['fn'](_0x463e('0x21'),db[_0x463e('0x20')]['fn']('IF',db[_0x463e('0x20')][_0x463e('0x22')](_0x463e('0x23')))),'ivrAnswerCallsDay']],'group':['campaign']})[_0x463e('0xe')](function(_0x3e64c1){logger['info'](_0x463e('0x46'),_0x5eb382);logger[_0x463e('0x11')](_0x463e('0x46'),_0x5eb382,JSON[_0x463e('0x45')](_0x3e64c1));_0x46f223(_0x3e64c1);})['catch'](function(_0x35c0ea){logger['error'](_0x463e('0x46'),_0x35c0ea[_0x463e('0x15')],_0x5eb382);_0x352021(_0x1c184b[_0x463e('0x13')](0x1f4,_0x35c0ea[_0x463e('0x15')]));});});};
\ No newline at end of file
+var _0x74a1=['CreateCmHopperHistory','findAll','sequelize','col','predictiveIntervalTotalCalls','COUNT','`state`\x20=\x204,\x201,\x20null','`state`\x20=\x2010,\x201,\x20null','literal','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','`state`\x20=\x204,\x20`talktime`,\x20null','AvgHandleTime','GetVoiceQueueHopperHistory','where','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','GetCampaignHopperHistory','name','ivrTotalCallsDays','ivrAnswerCallsDay','campaign','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CmHopperHistory','body','options','raw'];(function(_0x2ea4d2,_0x218893){var _0x45e9f2=function(_0x210512){while(--_0x210512){_0x2ea4d2['push'](_0x2ea4d2['shift']());}};_0x45e9f2(++_0x218893);}(_0x74a1,0xff));var _0x174a=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x74a1[_0x1035c1];return _0x308d67;};'use strict';var _=require(_0x174a('0x0'));var util=require(_0x174a('0x1'));var moment=require('moment');var BPromise=require(_0x174a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x174a('0x3'));var db=require(_0x174a('0x4'))['db'];var utils=require(_0x174a('0x5'));var logger=require(_0x174a('0x6'))(_0x174a('0x7'));var config=require(_0x174a('0x8'));var jayson=require(_0x174a('0x9'));var client=jayson[_0x174a('0xa')][_0x174a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3297b6,_0x1f30d8,_0x46b36a){return new BPromise(function(_0x4547c2,_0x2a4bf7){return client[_0x174a('0xc')](_0x3297b6,_0x46b36a)[_0x174a('0xd')](function(_0x1f1a52){logger[_0x174a('0xe')](_0x174a('0xf'),_0x1f30d8,_0x174a('0x10'));logger[_0x174a('0x11')](_0x174a('0x12'),_0x1f30d8,_0x174a('0x10'),JSON[_0x174a('0x13')](_0x1f1a52));if(_0x1f1a52[_0x174a('0x14')]){if(_0x1f1a52[_0x174a('0x14')][_0x174a('0x15')]===0x1f4){logger['error'](_0x174a('0xf'),_0x1f30d8,_0x1f1a52[_0x174a('0x14')][_0x174a('0x16')]);return _0x2a4bf7(_0x1f1a52[_0x174a('0x14')][_0x174a('0x16')]);}logger[_0x174a('0x14')]('CmHopperHistory,\x20%s,\x20%s',_0x1f30d8,_0x1f1a52[_0x174a('0x14')]['message']);return _0x4547c2(_0x1f1a52['error']['message']);}else{logger['info'](_0x174a('0xf'),_0x1f30d8,_0x174a('0x10'));_0x4547c2(_0x1f1a52[_0x174a('0x17')][_0x174a('0x16')]);}})[_0x174a('0x18')](function(_0xa93b47){logger[_0x174a('0x14')](_0x174a('0xf'),_0x1f30d8,_0xa93b47);_0x2a4bf7(_0xa93b47);});});}exports['CreateCmHopperHistory']=function(_0x53da20){var _0x3a28ab=this;return new Promise(function(_0x416b4f,_0x4f8b8f){return db[_0x174a('0x19')]['create'](_0x53da20[_0x174a('0x1a')],{'raw':_0x53da20[_0x174a('0x1b')]?_0x53da20[_0x174a('0x1b')][_0x174a('0x1c')]===undefined?!![]:![]:!![]})[_0x174a('0xd')](function(_0x24d080){logger['info'](_0x174a('0x1d'),_0x53da20);logger[_0x174a('0x11')](_0x174a('0x1d'),_0x53da20,JSON[_0x174a('0x13')](_0x24d080));_0x416b4f(_0x24d080);})[_0x174a('0x18')](function(_0x4fcc28){logger[_0x174a('0x14')]('CreateCmHopperHistory',_0x4fcc28[_0x174a('0x16')],_0x53da20);_0x4f8b8f(_0x3a28ab[_0x174a('0x14')](0x1f4,_0x4fcc28['message']));});});};exports['AvgHandleTime']=function(_0x58da55){var _0x5d429b=this;return new Promise(function(_0xad968d,_0x485661){return db[_0x174a('0x19')][_0x174a('0x1e')]({'raw':_0x58da55[_0x174a('0x1b')]?_0x58da55['options'][_0x174a('0x1c')]===undefined?!![]:![]:!![],'where':_0x58da55['options']?_0x58da55[_0x174a('0x1b')]['where']||null:null,'attributes':[[db[_0x174a('0x1f')]['fn']('COUNT',db['sequelize'][_0x174a('0x20')]('id')),_0x174a('0x21')],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')]['literal'](_0x174a('0x23')))),'predictiveIntervalAnsweredCalls'],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')]['literal'](_0x174a('0x24')))),'predictiveIntervalDroppedCallsTimeout'],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db['sequelize'][_0x174a('0x25')](_0x174a('0x26')))),_0x174a('0x27')],[db['sequelize']['fn'](_0x174a('0x28'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x174a('0x29')))),'predictiveIntervalAvgHoldtime'],[db[_0x174a('0x1f')]['fn'](_0x174a('0x28'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')][_0x174a('0x25')](_0x174a('0x2a')))),'predictiveIntervalAvgTalktime']]})[_0x174a('0xd')](function(_0x1c11cd){logger[_0x174a('0xe')]('AvgHandleTime',_0x58da55);logger[_0x174a('0x11')](_0x174a('0x2b'),_0x58da55,JSON['stringify'](_0x1c11cd));_0xad968d(_0x1c11cd);})[_0x174a('0x18')](function(_0x2ee060){logger['error'](_0x174a('0x2b'),_0x2ee060[_0x174a('0x16')],_0x58da55);_0x485661(_0x5d429b[_0x174a('0x14')](0x1f4,_0x2ee060[_0x174a('0x16')]));});});};exports[_0x174a('0x2c')]=function(_0x1f5992){var _0x4ae867=this;return new Promise(function(_0x223c8e,_0x51c318){return db[_0x174a('0x19')][_0x174a('0x1e')]({'raw':_0x1f5992[_0x174a('0x1b')]?_0x1f5992[_0x174a('0x1b')][_0x174a('0x1c')]===undefined?!![]:![]:!![],'where':_0x1f5992[_0x174a('0x1b')]?_0x1f5992[_0x174a('0x1b')][_0x174a('0x2d')]||null:null,'attributes':[['campaign','name'],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')][_0x174a('0x25')](_0x174a('0x2e')))),_0x174a('0x2f')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x174a('0x1f')][_0x174a('0x25')](_0x174a('0x30')))),'outboundNoAnswerCallsDay'],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')]['literal']('`state`\x20=\x204,\x201,\x20null'))),'outboundAnswerCallsDay'],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')]['literal']('`state`\x20=\x205,\x201,\x20null'))),'outboundBusyCallsDay'],[db[_0x174a('0x1f')]['fn']('COUNT',db[_0x174a('0x1f')]['fn']('IF',db['sequelize']['literal'](_0x174a('0x31')))),_0x174a('0x32')],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')]['literal'](_0x174a('0x33')))),_0x174a('0x34')],[db[_0x174a('0x1f')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x174a('0x1f')]['literal'](_0x174a('0x35')))),_0x174a('0x36')],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')][_0x174a('0x25')](_0x174a('0x37')))),_0x174a('0x38')],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db['sequelize'][_0x174a('0x25')](_0x174a('0x39')))),_0x174a('0x3a')],[db['sequelize']['fn'](_0x174a('0x22'),db['sequelize']['fn']('IF',db[_0x174a('0x1f')]['literal'](_0x174a('0x3b')))),_0x174a('0x3c')],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db['sequelize']['fn']('IF',db[_0x174a('0x1f')][_0x174a('0x25')](_0x174a('0x3d')))),_0x174a('0x3e')],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db['sequelize']['fn']('IF',db[_0x174a('0x1f')][_0x174a('0x25')](_0x174a('0x3f')))),'outboundAnswerAgiCallsDay'],[db['sequelize']['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')]['literal'](_0x174a('0x40')))),'outboundRejectCallsDay'],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')]['literal'](_0x174a('0x41')))),'outboundReCallsDay']],'group':['campaign']})[_0x174a('0xd')](function(_0x1f6873){logger[_0x174a('0xe')]('GetVoiceQueueHopperHistory',_0x1f5992);logger[_0x174a('0x11')](_0x174a('0x2c'),_0x1f5992,JSON[_0x174a('0x13')](_0x1f6873));_0x223c8e(_0x1f6873);})[_0x174a('0x18')](function(_0x102d1a){logger[_0x174a('0x14')](_0x174a('0x2c'),_0x102d1a['message'],_0x1f5992);_0x51c318(_0x4ae867[_0x174a('0x14')](0x1f4,_0x102d1a[_0x174a('0x16')]));});});};exports[_0x174a('0x42')]=function(_0x3291c9){var _0xd439ab=this;return new Promise(function(_0x14cd0c,_0x5d1598){return db['CmHopperHistory']['findAll']({'raw':_0x3291c9[_0x174a('0x1b')]?_0x3291c9['options'][_0x174a('0x1c')]===undefined?!![]:![]:!![],'where':_0x3291c9[_0x174a('0x1b')]?_0x3291c9[_0x174a('0x1b')][_0x174a('0x2d')]||null:null,'attributes':[['campaign',_0x174a('0x43')],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')][_0x174a('0x20')]('id')),_0x174a('0x44')],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')][_0x174a('0x25')](_0x174a('0x23')))),_0x174a('0x45')]],'group':[_0x174a('0x46')]})['then'](function(_0x5f0e91){logger[_0x174a('0xe')](_0x174a('0x42'),_0x3291c9);logger['debug'](_0x174a('0x42'),_0x3291c9,JSON['stringify'](_0x5f0e91));_0x14cd0c(_0x5f0e91);})[_0x174a('0x18')](function(_0x441364){logger[_0x174a('0x14')]('GetCampaignHopperHistory',_0x441364[_0x174a('0x16')],_0x3291c9);_0x5d1598(_0xd439ab['error'](0x1f4,_0x441364[_0x174a('0x16')]));});});};
\ No newline at end of file
index 3a9f64d..2982fbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3548=['util','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','index','describe','/:id','post','create','multer'];(function(_0x1034bb,_0x4e20b3){var _0x453fdb=function(_0x455356){while(--_0x455356){_0x1034bb['push'](_0x1034bb['shift']());}};_0x453fdb(++_0x4e20b3);}(_0x3548,0x13a));var _0x8354=function(_0x4deca9,_0x470246){_0x4deca9=_0x4deca9-0x0;var _0x534fe2=_0x3548[_0x4deca9];return _0x534fe2;};'use strict';var multer=require(_0x8354('0x0'));var util=require(_0x8354('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x8354('0x2'));var router=express[_0x8354('0x3')]();var fs_extra=require(_0x8354('0x4'));var auth=require(_0x8354('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8354('0x6'));var controller=require(_0x8354('0x7'));router[_0x8354('0x8')]('/',auth[_0x8354('0x9')](),controller[_0x8354('0xa')]);router[_0x8354('0x8')]('/describe',auth[_0x8354('0x9')](),controller[_0x8354('0xb')]);router[_0x8354('0x8')](_0x8354('0xc'),auth[_0x8354('0x9')](),controller['show']);router[_0x8354('0xd')]('/',auth[_0x8354('0x9')](),controller[_0x8354('0xe')]);router['put'](_0x8354('0xc'),auth[_0x8354('0x9')](),controller['update']);module['exports']=router;
\ No newline at end of file
+var _0x5ef1=['/describe','describe','/:id','post','put','update','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','isAuthenticated','index','get'];(function(_0x2c84ce,_0x5d8d59){var _0x9ddda9=function(_0x150a2d){while(--_0x150a2d){_0x2c84ce['push'](_0x2c84ce['shift']());}};_0x9ddda9(++_0x5d8d59);}(_0x5ef1,0xa6));var _0x15ef=function(_0x53ea77,_0x3edf7e){_0x53ea77=_0x53ea77-0x0;var _0xfc6ae3=_0x5ef1[_0x53ea77];return _0xfc6ae3;};'use strict';var multer=require('multer');var util=require(_0x15ef('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x15ef('0x1')]();var fs_extra=require(_0x15ef('0x2'));var auth=require(_0x15ef('0x3'));var interaction=require(_0x15ef('0x4'));var config=require(_0x15ef('0x5'));var controller=require(_0x15ef('0x6'));router['get']('/',auth[_0x15ef('0x7')](),controller[_0x15ef('0x8')]);router[_0x15ef('0x9')](_0x15ef('0xa'),auth[_0x15ef('0x7')](),controller[_0x15ef('0xb')]);router['get'](_0x15ef('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x15ef('0xd')]('/',auth[_0x15ef('0x7')](),controller['create']);router[_0x15ef('0xe')](_0x15ef('0xc'),auth[_0x15ef('0x7')](),controller[_0x15ef('0xf')]);module['exports']=router;
\ No newline at end of file
index 95ca432..fd56c35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b4e=['exports'];(function(_0x26979c,_0x19c70d){var _0x1931d5=function(_0x309a47){while(--_0x309a47){_0x26979c['push'](_0x26979c['shift']());}};_0x1931d5(++_0x19c70d);}(_0x6b4e,0x1a8));var _0xe6b4=function(_0x57fe4d,_0x557ea7){_0x57fe4d=_0x57fe4d-0x0;var _0x3c1011=_0x6b4e[_0x57fe4d];return _0x3c1011;};'use strict';var Sequelize=require('sequelize');module[_0xe6b4('0x0')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1670=['name','STRING','sequelize','exports'];(function(_0x50d377,_0x55c12d){var _0x108531=function(_0x218bb8){while(--_0x218bb8){_0x50d377['push'](_0x50d377['shift']());}};_0x108531(++_0x55c12d);}(_0x1670,0x9a));var _0x0167=function(_0x4b7380,_0x3e040b){_0x4b7380=_0x4b7380-0x0;var _0x3a2f6b=_0x1670[_0x4b7380];return _0x3a2f6b;};'use strict';var Sequelize=require(_0x0167('0x0'));module[_0x0167('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x0167('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'dialPrefix':{'type':Sequelize[_0x0167('0x3')]}};
\ No newline at end of file
index 267624a..d45accc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee68=['ids','errors','Malformed\x20request\x20syntax','getContacts','CustomFields','concat','format','cf_%d','raw','getContactsCsv','CmCustomField','isEmpty','now','/tmp/list_%d_%s.csv','setHeader','Content-type','download','addCustomField','transaction','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','defaultValue','sequelize','queryInterface','addColumn','cm_contacts','cf_%s','getCustomFields','addAgents','userCmList:save','removeAgents','emit','userCmList:remove','getAgents','User','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./cmList.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','get','Lists','UserProfileResource','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','CmList','include','find','create','body','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ListId','getDispositions','findOne','Disposition','order','removeDispositions','addContacts','CmContact','tags','isArray','join','push','omit'];(function(_0x2a8e30,_0x11009f){var _0x4f84be=function(_0x45acc7){while(--_0x45acc7){_0x2a8e30['push'](_0x2a8e30['shift']());}};_0x4f84be(++_0x11009f);}(_0xee68,0x150));var _0x8ee6=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xee68[_0x17d9e3];return _0x14192d;};'use strict';var emlformat=require(_0x8ee6('0x0'));var rimraf=require(_0x8ee6('0x1'));var zipdir=require(_0x8ee6('0x2'));var jsonpatch=require(_0x8ee6('0x3'));var rp=require(_0x8ee6('0x4'));var moment=require(_0x8ee6('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x8ee6('0x6'));var util=require(_0x8ee6('0x7'));var path=require(_0x8ee6('0x8'));var sox=require(_0x8ee6('0x9'));var csv=require(_0x8ee6('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8ee6('0xb'));var _=require(_0x8ee6('0xc'));var squel=require(_0x8ee6('0xd'));var crypto=require('crypto');var jsforce=require(_0x8ee6('0xe'));var deskjs=require(_0x8ee6('0xf'));var toCsv=require(_0x8ee6('0xa'));var querystring=require(_0x8ee6('0x10'));var Papa=require(_0x8ee6('0x11'));var Redis=require(_0x8ee6('0x12'));var authService=require(_0x8ee6('0x13'));var qs=require(_0x8ee6('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8ee6('0x15'));var logger=require(_0x8ee6('0x16'))(_0x8ee6('0x17'));var utils=require(_0x8ee6('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x8ee6('0x19'));var db=require(_0x8ee6('0x1a'))['db'];config[_0x8ee6('0x1b')]=_[_0x8ee6('0x1c')](config[_0x8ee6('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x8ee6('0x1d'))(new Redis(config['redis']));require(_0x8ee6('0x1e'))[_0x8ee6('0x1f')](socket);function respondWithStatusCode(_0x101d0a,_0x407f66){_0x407f66=_0x407f66||0xcc;return function(_0x11daa5){if(_0x11daa5){return _0x101d0a[_0x8ee6('0x20')](_0x407f66);}return _0x101d0a[_0x8ee6('0x21')](_0x407f66)[_0x8ee6('0x22')]();};}function respondWithResult(_0xbfee8f,_0x54254a){_0x54254a=_0x54254a||0xc8;return function(_0x2a2444){if(_0x2a2444){return _0xbfee8f[_0x8ee6('0x21')](_0x54254a)[_0x8ee6('0x23')](_0x2a2444);}};}function respondWithFilteredResult(_0x5af861,_0x3613be){return function(_0x318db8){if(_0x318db8){var _0xce7155=typeof _0x3613be[_0x8ee6('0x24')]==='undefined'&&typeof _0x3613be['limit']===_0x8ee6('0x25');var _0x13ce27=_0x318db8[_0x8ee6('0x26')];var _0x46c0ee=_0xce7155?0x0:_0x3613be[_0x8ee6('0x24')];var _0x1941d3=_0xce7155?_0x318db8[_0x8ee6('0x26')]:_0x3613be[_0x8ee6('0x24')]+_0x3613be[_0x8ee6('0x27')];var _0x2d9ae2;if(_0x1941d3>=_0x13ce27){_0x1941d3=_0x13ce27;_0x2d9ae2=0xc8;}else{_0x2d9ae2=0xce;}_0x5af861[_0x8ee6('0x21')](_0x2d9ae2);return _0x5af861[_0x8ee6('0x28')](_0x8ee6('0x29'),_0x46c0ee+'-'+_0x1941d3+'/'+_0x13ce27)[_0x8ee6('0x23')](_0x318db8);}return null;};}function patchUpdates(_0x542b1a){return function(_0x216d84){try{jsonpatch[_0x8ee6('0x2a')](_0x216d84,_0x542b1a,!![]);}catch(_0x5ea78e){return BPromise['reject'](_0x5ea78e);}return _0x216d84[_0x8ee6('0x2b')]();};}function saveUpdates(_0x25ace0,_0x3ec681){return function(_0x577f1c){if(_0x577f1c){return _0x577f1c[_0x8ee6('0x2c')](_0x25ace0)[_0x8ee6('0x2d')](function(_0x4b7a21){return _0x4b7a21;});}return null;};}function removeEntity(_0x25f002,_0x80d34){return function(_0x1c3256){if(_0x1c3256){return _0x1c3256['destroy']()['then'](function(){var _0x52cd22=_0x1c3256[_0x8ee6('0x2e')]({'plain':!![]});var _0x1f7c2d=_0x8ee6('0x2f');return db[_0x8ee6('0x30')][_0x8ee6('0x31')]({'where':{'type':_0x1f7c2d,'resourceId':_0x52cd22['id']}})['then'](function(){return _0x1c3256;});})['then'](function(){_0x25f002[_0x8ee6('0x21')](0xcc)[_0x8ee6('0x22')]();});}};}function handleEntityNotFound(_0x538932,_0xca9931){return function(_0x547fd5){if(!_0x547fd5){_0x538932[_0x8ee6('0x20')](0x194);}return _0x547fd5;};}function handleError(_0x1f4eb6,_0x2ce665){_0x2ce665=_0x2ce665||0x1f4;return function(_0x4455b0){logger[_0x8ee6('0x32')](_0x4455b0[_0x8ee6('0x33')]);if(_0x4455b0[_0x8ee6('0x34')]){delete _0x4455b0['name'];}_0x1f4eb6['status'](_0x2ce665)[_0x8ee6('0x35')](_0x4455b0);};}exports['index']=function(_0x525294,_0x124a59){var _0x50b1f2={},_0x39cc26={},_0xf5c997={'count':0x0,'rows':[]};var _0xee2fb3=_[_0x8ee6('0x36')](db['CmList'][_0x8ee6('0x37')],function(_0x1cc956){return{'name':_0x1cc956[_0x8ee6('0x38')],'type':_0x1cc956[_0x8ee6('0x39')][_0x8ee6('0x3a')]};});_0x39cc26[_0x8ee6('0x3b')]=_[_0x8ee6('0x36')](_0xee2fb3,'name');_0x39cc26['query']=_[_0x8ee6('0x3c')](_0x525294[_0x8ee6('0x3d')]);_0x39cc26[_0x8ee6('0x3e')]=_[_0x8ee6('0x3f')](_0x39cc26['model'],_0x39cc26['query']);_0x50b1f2[_0x8ee6('0x40')]=_[_0x8ee6('0x3f')](_0x39cc26['model'],qs[_0x8ee6('0x41')](_0x525294['query'][_0x8ee6('0x41')]));_0x50b1f2[_0x8ee6('0x40')]=_0x50b1f2[_0x8ee6('0x40')][_0x8ee6('0x42')]?_0x50b1f2[_0x8ee6('0x40')]:_0x39cc26[_0x8ee6('0x3b')];if(!_0x525294[_0x8ee6('0x3d')][_0x8ee6('0x43')](_0x8ee6('0x44'))){_0x50b1f2[_0x8ee6('0x27')]=qs[_0x8ee6('0x27')](_0x525294[_0x8ee6('0x3d')][_0x8ee6('0x27')]);_0x50b1f2['offset']=qs[_0x8ee6('0x24')](_0x525294['query'][_0x8ee6('0x24')]);}_0x50b1f2['order']=qs[_0x8ee6('0x45')](_0x525294['query'][_0x8ee6('0x45')]);_0x50b1f2[_0x8ee6('0x46')]=qs['filters'](_[_0x8ee6('0x47')](_0x525294['query'],_0x39cc26['filters']),_0xee2fb3);if(_0x525294['query'][_0x8ee6('0x48')]){_0x50b1f2[_0x8ee6('0x46')]=_[_0x8ee6('0x49')](_0x50b1f2[_0x8ee6('0x46')],{'$or':_[_0x8ee6('0x36')](_0xee2fb3,function(_0xe4753d){if(_0xe4753d[_0x8ee6('0x39')]!==_0x8ee6('0x4a')){var _0x2238e1={};_0x2238e1[_0xe4753d['name']]={'$like':'%'+_0x525294[_0x8ee6('0x3d')][_0x8ee6('0x48')]+'%'};return _0x2238e1;}})});}_0x50b1f2=_[_0x8ee6('0x49')]({},_0x50b1f2,_0x525294[_0x8ee6('0x4b')]);var _0x5ef68b={'where':_0x50b1f2[_0x8ee6('0x46')]};return db['CmList'][_0x8ee6('0x26')](_0x5ef68b)[_0x8ee6('0x2d')](function(_0x870af6){_0xf5c997[_0x8ee6('0x26')]=_0x870af6;if(_0x525294[_0x8ee6('0x3d')][_0x8ee6('0x4c')]){_0x50b1f2['include']=[{'all':!![]}];}return db['CmList'][_0x8ee6('0x4d')](_0x50b1f2);})[_0x8ee6('0x2d')](function(_0xbbe0a0){_0xf5c997[_0x8ee6('0x4e')]=_0xbbe0a0;return _0xf5c997;})[_0x8ee6('0x2d')](respondWithFilteredResult(_0x124a59,_0x50b1f2))[_0x8ee6('0x4f')](handleError(_0x124a59,null));};exports[_0x8ee6('0x50')]=function(_0x34417d,_0x7238c3){var _0xa45296={'raw':![],'where':{'id':_0x34417d[_0x8ee6('0x51')]['id']}},_0x41e313={};_0x41e313[_0x8ee6('0x3b')]=_[_0x8ee6('0x3c')](db[_0x8ee6('0x52')]['rawAttributes']);_0x41e313[_0x8ee6('0x3d')]=_[_0x8ee6('0x3c')](_0x34417d[_0x8ee6('0x3d')]);_0x41e313[_0x8ee6('0x3e')]=_['intersection'](_0x41e313['model'],_0x41e313['query']);_0xa45296[_0x8ee6('0x40')]=_[_0x8ee6('0x3f')](_0x41e313[_0x8ee6('0x3b')],qs[_0x8ee6('0x41')](_0x34417d['query'][_0x8ee6('0x41')]));_0xa45296[_0x8ee6('0x40')]=_0xa45296[_0x8ee6('0x40')][_0x8ee6('0x42')]?_0xa45296[_0x8ee6('0x40')]:_0x41e313[_0x8ee6('0x3b')];if(_0x34417d[_0x8ee6('0x3d')]['includeAll']){_0xa45296[_0x8ee6('0x53')]=[{'all':!![]}];}_0xa45296=_[_0x8ee6('0x49')]({},_0xa45296,_0x34417d['options']);return db[_0x8ee6('0x52')][_0x8ee6('0x54')](_0xa45296)[_0x8ee6('0x2d')](handleEntityNotFound(_0x7238c3,null))[_0x8ee6('0x2d')](respondWithResult(_0x7238c3,null))[_0x8ee6('0x4f')](handleError(_0x7238c3,null));};exports[_0x8ee6('0x55')]=function(_0x4f51ee,_0x523a26){return db['CmList'][_0x8ee6('0x55')](_0x4f51ee[_0x8ee6('0x56')],{})[_0x8ee6('0x2d')](function(_0x2662f4){var _0x59afd8=_0x4f51ee['user'][_0x8ee6('0x2e')]({'plain':!![]});if(!_0x59afd8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x59afd8[_0x8ee6('0x57')]===_0x8ee6('0x58')){var _0x1f3b19=_0x2662f4[_0x8ee6('0x2e')]({'plain':!![]});var _0x456832=_0x8ee6('0x2f');return db[_0x8ee6('0x59')][_0x8ee6('0x54')]({'where':{'name':_0x456832,'userProfileId':_0x59afd8[_0x8ee6('0x5a')]},'raw':!![]})[_0x8ee6('0x2d')](function(_0x3e9d6d){if(_0x3e9d6d&&_0x3e9d6d[_0x8ee6('0x5b')]===0x0){return db['UserProfileResource']['create']({'name':_0x1f3b19[_0x8ee6('0x34')],'resourceId':_0x1f3b19['id'],'type':_0x3e9d6d[_0x8ee6('0x34')],'sectionId':_0x3e9d6d['id']},{})[_0x8ee6('0x2d')](function(){return _0x2662f4;});}else{return _0x2662f4;}})[_0x8ee6('0x4f')](function(_0x996df9){logger['error'](_0x8ee6('0x5c'),_0x996df9);throw _0x996df9;});}return _0x2662f4;})['then'](respondWithResult(_0x523a26,0xc9))[_0x8ee6('0x4f')](handleError(_0x523a26,null));};exports['update']=function(_0x5710f5,_0x48a170){if(_0x5710f5[_0x8ee6('0x56')]['id']){delete _0x5710f5['body']['id'];}return db[_0x8ee6('0x52')][_0x8ee6('0x54')]({'where':{'id':_0x5710f5[_0x8ee6('0x51')]['id']}})['then'](handleEntityNotFound(_0x48a170,null))[_0x8ee6('0x2d')](saveUpdates(_0x5710f5[_0x8ee6('0x56')],null))[_0x8ee6('0x2d')](respondWithResult(_0x48a170,null))[_0x8ee6('0x4f')](handleError(_0x48a170,null));};exports[_0x8ee6('0x31')]=function(_0x50c925,_0x5d6d06){return db[_0x8ee6('0x52')][_0x8ee6('0x54')]({'where':{'id':_0x50c925[_0x8ee6('0x51')]['id']}})[_0x8ee6('0x2d')](handleEntityNotFound(_0x5d6d06,null))[_0x8ee6('0x2d')](removeEntity(_0x5d6d06,null))[_0x8ee6('0x4f')](handleError(_0x5d6d06,null));};exports[_0x8ee6('0x5d')]=function(_0x373413,_0x240f67){return db[_0x8ee6('0x52')]['describe']()[_0x8ee6('0x2d')](respondWithResult(_0x240f67,null))[_0x8ee6('0x4f')](handleError(_0x240f67,null));};exports[_0x8ee6('0x5e')]=function(_0x387a97,_0x5ef44e,_0x8d6dfb){if(_0x387a97[_0x8ee6('0x56')]['id']){delete _0x387a97['body']['id'];}return db[_0x8ee6('0x52')][_0x8ee6('0x54')]({'where':{'id':_0x387a97['params']['id']}})[_0x8ee6('0x2d')](handleEntityNotFound(_0x5ef44e,null))['then'](function(_0x38ef18){if(_0x38ef18){_0x387a97[_0x8ee6('0x56')][_0x8ee6('0x5f')]=_0x38ef18['id'];return db['Disposition'][_0x8ee6('0x55')](_0x387a97[_0x8ee6('0x56')]);}})[_0x8ee6('0x2d')](respondWithResult(_0x5ef44e,null))[_0x8ee6('0x4f')](handleError(_0x5ef44e,null));};exports[_0x8ee6('0x60')]=function(_0xbffcc7,_0x19acc6,_0x3dcd9d){var _0x195a2e={'raw':![],'where':{}};var _0xf5e0f0={};var _0x531680={'count':0x0,'rows':[]};return db[_0x8ee6('0x52')][_0x8ee6('0x61')]({'where':{'id':_0xbffcc7[_0x8ee6('0x51')]['id']}})[_0x8ee6('0x2d')](handleEntityNotFound(_0x19acc6,null))[_0x8ee6('0x2d')](function(_0x565731){if(_0x565731){_0xf5e0f0[_0x8ee6('0x3b')]=_[_0x8ee6('0x3c')](db[_0x8ee6('0x62')][_0x8ee6('0x37')]);_0xf5e0f0[_0x8ee6('0x3d')]=_[_0x8ee6('0x3c')](_0xbffcc7[_0x8ee6('0x3d')]);_0xf5e0f0[_0x8ee6('0x3e')]=_[_0x8ee6('0x3f')](_0xf5e0f0[_0x8ee6('0x3b')],_0xf5e0f0[_0x8ee6('0x3d')]);_0x195a2e[_0x8ee6('0x40')]=_[_0x8ee6('0x3f')](_0xf5e0f0['model'],qs[_0x8ee6('0x41')](_0xbffcc7[_0x8ee6('0x3d')][_0x8ee6('0x41')]));_0x195a2e[_0x8ee6('0x40')]=_0x195a2e[_0x8ee6('0x40')][_0x8ee6('0x42')]?_0x195a2e[_0x8ee6('0x40')]:_0xf5e0f0[_0x8ee6('0x3b')];if(!_0xbffcc7[_0x8ee6('0x3d')]['hasOwnProperty']('nolimit')){_0x195a2e[_0x8ee6('0x27')]=qs[_0x8ee6('0x27')](_0xbffcc7['query'][_0x8ee6('0x27')]);_0x195a2e['offset']=qs['offset'](_0xbffcc7[_0x8ee6('0x3d')]['offset']);}_0x195a2e[_0x8ee6('0x63')]=qs[_0x8ee6('0x45')](_0xbffcc7['query'][_0x8ee6('0x45')]);_0x195a2e[_0x8ee6('0x46')]=qs[_0x8ee6('0x3e')](_[_0x8ee6('0x47')](_0xbffcc7['query'],_0xf5e0f0['filters']));_0x195a2e[_0x8ee6('0x46')][_0x8ee6('0x5f')]=_0x565731['id'];if(_0xbffcc7['query'][_0x8ee6('0x48')]){_0x195a2e[_0x8ee6('0x46')]=_['merge'](_0x195a2e[_0x8ee6('0x46')],{'$or':_[_0x8ee6('0x36')](_0x195a2e[_0x8ee6('0x40')],function(_0x33c0b0){var _0xc4ab7c={};_0xc4ab7c[_0x33c0b0]={'$like':'%'+_0xbffcc7[_0x8ee6('0x3d')][_0x8ee6('0x48')]+'%'};return _0xc4ab7c;})});}_0x195a2e=_['merge']({},_0x195a2e,_0xbffcc7['options']);return db[_0x8ee6('0x62')]['count']({'where':_0x195a2e[_0x8ee6('0x46')]})[_0x8ee6('0x2d')](function(_0x392f13){_0x531680['count']=_0x392f13;if(_0xbffcc7[_0x8ee6('0x3d')][_0x8ee6('0x4c')]){_0x195a2e['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x195a2e);})[_0x8ee6('0x2d')](function(_0x3eecb7){_0x531680[_0x8ee6('0x4e')]=_0x3eecb7;return _0x531680;});}})[_0x8ee6('0x2d')](respondWithFilteredResult(_0x19acc6,_0x195a2e))[_0x8ee6('0x4f')](handleError(_0x19acc6,null));};exports[_0x8ee6('0x64')]=function(_0x3d7ca8,_0x311fdf,_0x5e76f4){return db[_0x8ee6('0x52')][_0x8ee6('0x54')]({'where':{'id':_0x3d7ca8[_0x8ee6('0x51')]['id']}})[_0x8ee6('0x2d')](handleEntityNotFound(_0x311fdf,null))['then'](function(_0x35badb){if(_0x35badb){return _0x35badb['removeDispositions'](_0x3d7ca8['query']['ids']);}})[_0x8ee6('0x2d')](respondWithStatusCode(_0x311fdf,null))[_0x8ee6('0x4f')](handleError(_0x311fdf,null));};exports[_0x8ee6('0x65')]=function(_0x57a046,_0x3ebb66,_0xa46a62){return db[_0x8ee6('0x52')][_0x8ee6('0x54')]({'where':{'id':_0x57a046[_0x8ee6('0x51')]['id']}})[_0x8ee6('0x2d')](handleEntityNotFound(_0x3ebb66,null))[_0x8ee6('0x2d')](function(_0x344ded){if(_0x344ded){var _0x5ebc80=[];var _0x137f7d={'success':[],'errors':[]};return db[_0x8ee6('0x66')][_0x8ee6('0x5d')]()[_0x8ee6('0x2d')](function(_0x32f5b4){if(_0x57a046[_0x8ee6('0x56')][_0x8ee6('0x67')]&&_[_0x8ee6('0x68')](_0x57a046[_0x8ee6('0x56')][_0x8ee6('0x67')])){if(_0x57a046[_0x8ee6('0x56')][_0x8ee6('0x67')][_0x8ee6('0x42')]){_0x57a046[_0x8ee6('0x56')]['tags']=_0x57a046['body'][_0x8ee6('0x67')][_0x8ee6('0x69')](';')+';';}else{_0x57a046[_0x8ee6('0x56')][_0x8ee6('0x67')]=null;}}else{_0x57a046[_0x8ee6('0x56')]['tags']=null;}if(_0x57a046['body']&&_[_0x8ee6('0x68')](_0x57a046['body'])){for(var _0x2befc0=0x0;_0x2befc0<_0x57a046[_0x8ee6('0x56')][_0x8ee6('0x42')];_0x2befc0+=0x1){_0x57a046[_0x8ee6('0x56')][_0x2befc0][_0x8ee6('0x5f')]=_0x57a046[_0x8ee6('0x51')]['id'];_0x5ebc80[_0x8ee6('0x6a')](_0x57a046['body'][_0x2befc0]);}return BPromise['each'](_0x5ebc80,function(_0x110d0e){return db[_0x8ee6('0x66')][_0x8ee6('0x55')](_[_0x8ee6('0x6b')](_0x110d0e,[_0x8ee6('0x6c'),'id'])||{},{'fields':_['keys'](_0x32f5b4),'raw':!![]})[_0x8ee6('0x2d')](function(_0x40a82a){_0x137f7d['success'][_0x8ee6('0x6a')](_0x40a82a['dataValues']);})[_0x8ee6('0x4f')](function(_0xcc7400){_0x137f7d[_0x8ee6('0x6d')][_0x8ee6('0x6a')]({'data':_0x110d0e,'error':_0xcc7400['message']});});})[_0x8ee6('0x2d')](function(_0xe1188e){return _0x137f7d;})[_0x8ee6('0x4f')](function(_0x2f8335){return _0x2f8335;});}else{_0x3ebb66['status'](0x190)[_0x8ee6('0x23')]({'message':_0x8ee6('0x6e')});}});}})['then'](respondWithResult(_0x3ebb66,null))['catch'](handleError(_0x3ebb66,null));};exports[_0x8ee6('0x6f')]=function(_0x5e0851,_0xeb8d02,_0x4932ba){var _0x3e1aa8;return db[_0x8ee6('0x52')][_0x8ee6('0x54')]({'where':{'id':_0x5e0851[_0x8ee6('0x51')]['id']},'include':[{'model':db['CmCustomField'],'as':_0x8ee6('0x70')}]})[_0x8ee6('0x2d')](handleEntityNotFound(_0xeb8d02,null))['then'](function(_0x5ca38e){if(_0x5ca38e){_0x3e1aa8=_0x5ca38e;return db[_0x8ee6('0x66')][_0x8ee6('0x37')];}})[_0x8ee6('0x2d')](function(_0x4a4c40){if(_0x4a4c40){var _0x4cb724={};var _0x2f29b9={};_0x2f29b9[_0x8ee6('0x3b')]=_[_0x8ee6('0x71')](_[_0x8ee6('0x3c')](_0x4a4c40),_[_0x8ee6('0x36')](_0x3e1aa8[_0x8ee6('0x70')],function(_0x53e671){return util[_0x8ee6('0x72')](_0x8ee6('0x73'),_0x53e671['id']);}));_0x2f29b9[_0x8ee6('0x3d')]=_[_0x8ee6('0x3c')](_0x5e0851['query']);_0x2f29b9[_0x8ee6('0x3e')]=_[_0x8ee6('0x3f')](_0x2f29b9[_0x8ee6('0x3b')],_0x2f29b9[_0x8ee6('0x3d')]);_0x4cb724[_0x8ee6('0x40')]=_[_0x8ee6('0x3f')](_0x2f29b9[_0x8ee6('0x3b')],qs['fields'](_0x5e0851[_0x8ee6('0x3d')]['fields']));_0x4cb724[_0x8ee6('0x40')]=_0x4cb724[_0x8ee6('0x40')][_0x8ee6('0x42')]?_0x4cb724[_0x8ee6('0x40')]:_0x2f29b9[_0x8ee6('0x3b')];if(!_0x5e0851['query'][_0x8ee6('0x43')]('nolimit')){_0x4cb724[_0x8ee6('0x27')]=qs[_0x8ee6('0x27')](_0x5e0851[_0x8ee6('0x3d')][_0x8ee6('0x27')]);_0x4cb724[_0x8ee6('0x24')]=qs[_0x8ee6('0x24')](_0x5e0851['query']['offset']);}_0x4cb724[_0x8ee6('0x63')]=qs['sort'](_0x5e0851[_0x8ee6('0x3d')][_0x8ee6('0x45')]);_0x4cb724[_0x8ee6('0x46')]=qs[_0x8ee6('0x3e')](_['pick'](_0x5e0851[_0x8ee6('0x3d')],_0x2f29b9[_0x8ee6('0x3e')]));_0x4cb724[_0x8ee6('0x74')]=!![];if(_0x5e0851[_0x8ee6('0x3d')]['filter']){_0x4cb724[_0x8ee6('0x46')]=_[_0x8ee6('0x49')](_0x4cb724[_0x8ee6('0x46')],{'$or':_[_0x8ee6('0x36')](_0x4cb724[_0x8ee6('0x40')],function(_0x207ec6){var _0x28d740={};_0x28d740[_0x207ec6]={'$like':'%'+_0x5e0851[_0x8ee6('0x3d')][_0x8ee6('0x48')]+'%'};return _0x28d740;})});}_0x4cb724=_['merge']({},_0x4cb724,_0x5e0851[_0x8ee6('0x4b')]);return _0x3e1aa8[_0x8ee6('0x6f')](_0x4cb724);}})[_0x8ee6('0x2d')](respondWithResult(_0xeb8d02,null))[_0x8ee6('0x4f')](handleError(_0xeb8d02,null));};exports[_0x8ee6('0x75')]=function(_0x1d9e51,_0x44fda7,_0x3a0a96){var _0x23bac2;return db['CmList'][_0x8ee6('0x54')]({'where':{'id':_0x1d9e51[_0x8ee6('0x51')]['id']},'include':[{'model':db[_0x8ee6('0x76')],'as':'CustomFields'}]})['then'](handleEntityNotFound(_0x44fda7,null))[_0x8ee6('0x2d')](function(_0x12671f){if(_0x12671f){_0x23bac2=_0x12671f;return db[_0x8ee6('0x66')][_0x8ee6('0x37')];}})['then'](function(_0x358997){if(_0x358997){var _0x107e81={};var _0x235a56={};_0x235a56[_0x8ee6('0x3b')]=_[_0x8ee6('0x71')](_['keys'](_0x358997),_['map'](_0x23bac2['CustomFields'],function(_0x1f8154){return util[_0x8ee6('0x72')]('cf_%d',_0x1f8154['id']);}));_0x235a56['query']=_[_0x8ee6('0x3c')](_0x1d9e51[_0x8ee6('0x3d')]);_0x235a56['filters']=_[_0x8ee6('0x3f')](_0x235a56[_0x8ee6('0x3b')],_0x235a56['query']);_0x107e81[_0x8ee6('0x40')]=_[_0x8ee6('0x3f')](_0x235a56['model'],qs[_0x8ee6('0x41')](_0x1d9e51[_0x8ee6('0x3d')][_0x8ee6('0x41')]));_0x107e81[_0x8ee6('0x40')]=_0x107e81[_0x8ee6('0x40')][_0x8ee6('0x42')]?_0x107e81[_0x8ee6('0x40')]:_0x235a56['model'];if(!_0x1d9e51['query']['hasOwnProperty'](_0x8ee6('0x44'))){_0x107e81['limit']=qs[_0x8ee6('0x27')](_0x1d9e51['query'][_0x8ee6('0x27')]);_0x107e81[_0x8ee6('0x24')]=qs[_0x8ee6('0x24')](_0x1d9e51['query']['offset']);}_0x107e81[_0x8ee6('0x63')]=qs['sort'](_0x1d9e51[_0x8ee6('0x3d')][_0x8ee6('0x45')]);_0x107e81[_0x8ee6('0x46')]=qs[_0x8ee6('0x3e')](_[_0x8ee6('0x47')](_0x1d9e51[_0x8ee6('0x3d')],_0x235a56[_0x8ee6('0x3e')]));_0x107e81[_0x8ee6('0x74')]=!![];if(_0x1d9e51[_0x8ee6('0x3d')][_0x8ee6('0x48')]){_0x107e81[_0x8ee6('0x46')]=_[_0x8ee6('0x49')](_0x107e81[_0x8ee6('0x46')],{'$or':_[_0x8ee6('0x36')](_0x107e81[_0x8ee6('0x40')],function(_0x2fdfac){var _0x5dc711={};_0x5dc711[_0x2fdfac]={'$like':'%'+_0x1d9e51['query'][_0x8ee6('0x48')]+'%'};return _0x5dc711;})});}_0x107e81=_[_0x8ee6('0x49')]({},_0x107e81,_0x1d9e51[_0x8ee6('0x4b')]);return _0x23bac2[_0x8ee6('0x6f')](_0x107e81);}})[_0x8ee6('0x2d')](function(_0x44dfef){if(!_[_0x8ee6('0x77')](_0x44dfef)){var _0x1997bb=toCsv(_0x44dfef);var _0x59f056=Date[_0x8ee6('0x78')]();fs['writeFileSync'](util[_0x8ee6('0x72')](_0x8ee6('0x79'),_0x23bac2['id'],_0x59f056),_0x1997bb);_0x44fda7[_0x8ee6('0x7a')]('Content-disposition','attachment;\x20filename='+util[_0x8ee6('0x72')]('list_%d_%s.csv',_0x23bac2['id'],_0x59f056));_0x44fda7[_0x8ee6('0x7a')](_0x8ee6('0x7b'),'text/csv');return _0x44fda7[_0x8ee6('0x7c')](util[_0x8ee6('0x72')]('/tmp/list_%d_%s.csv',_0x23bac2['id'],_0x59f056));}else{return _0x44fda7[_0x8ee6('0x20')](0xcc);}})[_0x8ee6('0x4f')](handleError(_0x44fda7,null));};exports[_0x8ee6('0x7d')]=function(_0x27e4a4,_0x347faa,_0x5186de){var _0x1acf13;delete _0x27e4a4['body']['id'];return db[_0x8ee6('0x52')]['findOne']({'where':{'id':_0x27e4a4[_0x8ee6('0x51')]['id']}})[_0x8ee6('0x2d')](handleEntityNotFound(_0x347faa,null))[_0x8ee6('0x2d')](function(_0x11f0a2){if(_0x11f0a2){return db['sequelize'][_0x8ee6('0x7e')](function(_0x284ed1){return db[_0x8ee6('0x76')][_0x8ee6('0x55')](_0x27e4a4[_0x8ee6('0x56')],{'transaction':_0x284ed1})[_0x8ee6('0x2d')](function(_0x4926ba){_0x1acf13=_0x4926ba;return _0x11f0a2['addCustomFields'](_0x4926ba,{'transaction':_0x284ed1});})['then'](function(){var _0x266877={'type':db[_0x8ee6('0x7f')][_0x8ee6('0x80')],'transaction':_0x284ed1};switch(_0x27e4a4[_0x8ee6('0x56')][_0x8ee6('0x39')]){case _0x8ee6('0x81'):_0x266877[_0x8ee6('0x39')]=db[_0x8ee6('0x7f')][_0x8ee6('0x80')];break;case _0x8ee6('0x82'):_0x266877[_0x8ee6('0x39')]=db[_0x8ee6('0x7f')][_0x8ee6('0x83')];break;case _0x8ee6('0x84'):_0x266877[_0x8ee6('0x39')]=db[_0x8ee6('0x7f')][_0x8ee6('0x85')];_0x266877[_0x8ee6('0x86')]=![];break;default:}return db[_0x8ee6('0x87')][_0x8ee6('0x88')][_0x8ee6('0x89')](_0x8ee6('0x8a'),util[_0x8ee6('0x72')](_0x8ee6('0x8b'),_0x1acf13['id']),_0x266877);})['then'](function(){return _0x1acf13;});});}})['then'](respondWithResult(_0x347faa,null))['catch'](handleError(_0x347faa,null));};exports[_0x8ee6('0x8c')]=function(_0x125bc6,_0x32330f,_0x26bab7){var _0xa15f61={};var _0x1a861c={};var _0x3f93f8;var _0xd482dc;return db[_0x8ee6('0x52')][_0x8ee6('0x61')]({'where':{'id':_0x125bc6['params']['id']}})[_0x8ee6('0x2d')](handleEntityNotFound(_0x32330f,null))[_0x8ee6('0x2d')](function(_0x2e0a55){if(_0x2e0a55){_0x3f93f8=_0x2e0a55;_0x1a861c[_0x8ee6('0x3b')]=_['keys'](db[_0x8ee6('0x76')]['rawAttributes']);_0x1a861c[_0x8ee6('0x3d')]=_[_0x8ee6('0x3c')](_0x125bc6['query']);_0x1a861c[_0x8ee6('0x3e')]=_['intersection'](_0x1a861c['model'],_0x1a861c[_0x8ee6('0x3d')]);_0xa15f61[_0x8ee6('0x40')]=_[_0x8ee6('0x3f')](_0x1a861c['model'],qs[_0x8ee6('0x41')](_0x125bc6[_0x8ee6('0x3d')][_0x8ee6('0x41')]));_0xa15f61[_0x8ee6('0x40')]=_0xa15f61[_0x8ee6('0x40')][_0x8ee6('0x42')]?_0xa15f61[_0x8ee6('0x40')]:_0x1a861c[_0x8ee6('0x3b')];_0xa15f61[_0x8ee6('0x63')]=qs[_0x8ee6('0x45')](_0x125bc6[_0x8ee6('0x3d')][_0x8ee6('0x45')]);_0xa15f61['where']=qs[_0x8ee6('0x3e')](_['pick'](_0x125bc6[_0x8ee6('0x3d')],_0x1a861c['filters']));_0xa15f61[_0x8ee6('0x46')]=_[_0x8ee6('0x49')](_0xa15f61[_0x8ee6('0x46')],{'$or':[{'ListId':_0x2e0a55['id']},{'ListId':null}]});if(_0x125bc6['query'][_0x8ee6('0x48')]){_0xa15f61[_0x8ee6('0x46')]=_[_0x8ee6('0x49')](_0xa15f61['where'],{'$or':_[_0x8ee6('0x36')](_0xa15f61[_0x8ee6('0x40')],function(_0x1cfdaa){var _0x576aad={};_0x576aad[_0x1cfdaa]={'$like':'%'+_0x125bc6[_0x8ee6('0x3d')][_0x8ee6('0x48')]+'%'};return _0x576aad;})});}_0xa15f61=_[_0x8ee6('0x49')]({},_0xa15f61,_0x125bc6[_0x8ee6('0x4b')]);return db['CmCustomField']['findAndCountAll'](_0xa15f61);}})[_0x8ee6('0x2d')](respondWithResult(_0x32330f,null))['catch'](handleError(_0x32330f,null));};exports[_0x8ee6('0x8d')]=function(_0x37b501,_0x373346,_0x525f0b){return db[_0x8ee6('0x52')][_0x8ee6('0x54')]({'where':{'id':_0x37b501[_0x8ee6('0x51')]['id']}})[_0x8ee6('0x2d')](handleEntityNotFound(_0x373346,null))[_0x8ee6('0x2d')](function(_0x398214){if(_0x398214){return _0x398214[_0x8ee6('0x8d')](_0x37b501['body'][_0x8ee6('0x6c')],_['omit'](_0x37b501[_0x8ee6('0x56')],[_0x8ee6('0x6c'),'id'])||{})['spread'](function(_0x4ce48e){for(var _0x55a468=0x0;_0x55a468<_0x37b501[_0x8ee6('0x56')][_0x8ee6('0x6c')][_0x8ee6('0x42')];_0x55a468+=0x1){socket['emit'](_0x8ee6('0x8e'),{'UserId':Number(_0x37b501[_0x8ee6('0x56')][_0x8ee6('0x6c')][_0x55a468]),'CmListId':Number(_0x37b501[_0x8ee6('0x51')]['id'])});}return _0x4ce48e;});}})[_0x8ee6('0x2d')](respondWithResult(_0x373346,null))[_0x8ee6('0x4f')](handleError(_0x373346,null));};exports[_0x8ee6('0x8f')]=function(_0x114612,_0xf4e184,_0x698335){return db[_0x8ee6('0x52')]['find']({'where':{'id':_0x114612[_0x8ee6('0x51')]['id']}})['then'](handleEntityNotFound(_0xf4e184,null))['then'](function(_0x42441e){if(_0x42441e){return _0x42441e['removeAgents'](_0x114612[_0x8ee6('0x3d')][_0x8ee6('0x6c')])[_0x8ee6('0x2d')](function(){if(_[_0x8ee6('0x68')](_0x114612[_0x8ee6('0x3d')][_0x8ee6('0x6c')])){for(var _0x5f5863=0x0;_0x5f5863<_0x114612[_0x8ee6('0x3d')][_0x8ee6('0x6c')][_0x8ee6('0x42')];_0x5f5863+=0x1){socket[_0x8ee6('0x90')](_0x8ee6('0x91'),{'UserId':Number(_0x114612[_0x8ee6('0x3d')][_0x8ee6('0x6c')][_0x5f5863]),'CmListId':Number(_0x114612['params']['id'])});}}else{socket[_0x8ee6('0x90')](_0x8ee6('0x91'),{'UserId':Number(_0x114612['query'][_0x8ee6('0x6c')]),'CmListId':Number(_0x114612[_0x8ee6('0x51')]['id'])});}});}})[_0x8ee6('0x2d')](respondWithStatusCode(_0xf4e184,null))['catch'](handleError(_0xf4e184,null));};exports[_0x8ee6('0x92')]=function(_0x3f112,_0x38b219,_0x2542cb){var _0x266b3c={};var _0x1507e4={};var _0x5f4ae4;var _0xbd64ce;return db[_0x8ee6('0x52')][_0x8ee6('0x61')]({'where':{'id':_0x3f112['params']['id']}})[_0x8ee6('0x2d')](handleEntityNotFound(_0x38b219,null))[_0x8ee6('0x2d')](function(_0x4b0a7f){if(_0x4b0a7f){_0x5f4ae4=_0x4b0a7f;_0x1507e4[_0x8ee6('0x3b')]=_['keys'](db[_0x8ee6('0x93')][_0x8ee6('0x37')]);_0x1507e4[_0x8ee6('0x3d')]=_[_0x8ee6('0x3c')](_0x3f112[_0x8ee6('0x3d')]);_0x1507e4['filters']=_[_0x8ee6('0x3f')](_0x1507e4[_0x8ee6('0x3b')],_0x1507e4[_0x8ee6('0x3d')]);_0x266b3c['attributes']=_[_0x8ee6('0x3f')](_0x1507e4[_0x8ee6('0x3b')],qs[_0x8ee6('0x41')](_0x3f112[_0x8ee6('0x3d')][_0x8ee6('0x41')]));_0x266b3c[_0x8ee6('0x40')]=_0x266b3c[_0x8ee6('0x40')][_0x8ee6('0x42')]?_0x266b3c[_0x8ee6('0x40')]:_0x1507e4['model'];_0x266b3c[_0x8ee6('0x63')]=qs[_0x8ee6('0x45')](_0x3f112[_0x8ee6('0x3d')][_0x8ee6('0x45')]);_0x266b3c[_0x8ee6('0x46')]=qs[_0x8ee6('0x3e')](_[_0x8ee6('0x47')](_0x3f112[_0x8ee6('0x3d')],_0x1507e4['filters']));if(_0x3f112[_0x8ee6('0x3d')][_0x8ee6('0x48')]){_0x266b3c[_0x8ee6('0x46')]=_['merge'](_0x266b3c[_0x8ee6('0x46')],{'$or':_[_0x8ee6('0x36')](_0x266b3c['attributes'],function(_0x556ae6){var _0x463dd3={};_0x463dd3[_0x556ae6]={'$like':'%'+_0x3f112[_0x8ee6('0x3d')]['filter']+'%'};return _0x463dd3;})});}_0x266b3c=_[_0x8ee6('0x49')]({},_0x266b3c,_0x3f112['options']);return _0x5f4ae4['getAgents'](_0x266b3c);}})[_0x8ee6('0x2d')](function(_0x44d4c2){if(_0x44d4c2){_0xbd64ce=_0x44d4c2[_0x8ee6('0x42')];if(!_0x3f112[_0x8ee6('0x3d')][_0x8ee6('0x43')]('nolimit')){_0x266b3c['limit']=qs[_0x8ee6('0x27')](_0x3f112[_0x8ee6('0x3d')]['limit']);_0x266b3c[_0x8ee6('0x24')]=qs[_0x8ee6('0x24')](_0x3f112[_0x8ee6('0x3d')]['offset']);}return _0x5f4ae4['getAgents'](_0x266b3c);}})[_0x8ee6('0x2d')](function(_0x1df10b){if(_0x1df10b){return _0x1df10b?{'count':_0xbd64ce,'rows':_0x1df10b}:null;}})['then'](respondWithResult(_0x38b219,null))[_0x8ee6('0x4f')](handleError(_0x38b219,null));};
\ No newline at end of file
+var _0x2a03=['model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','VIRTUAL','options','CmList','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','get','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','ListId','Disposition','findOne','removeDispositions','ids','addContacts','CmContact','tags','isArray','join','push','each','omit','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','format','cf_%d','getContactsCsv','concat','CustomFields','raw','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','Content-disposition','attachment;\x20filename=','setHeader','Content-type','text/csv','download','addCustomField','sequelize','transaction','addCustomFields','Sequelize','TEXT','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','addColumn','cm_contacts','getCustomFields','findAndCountAll','addAgents','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','eml-format','rimraf','fast-json-patch','request-promise','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','status','json','undefined','limit','count','Content-Range','apply','reject','save','destroy','then','Lists','UserProfileResource','end','stack','name','send','index','map','rawAttributes','fieldName','type','key'];(function(_0x52067d,_0x25ba55){var _0x278376=function(_0x5c6bd9){while(--_0x5c6bd9){_0x52067d['push'](_0x52067d['shift']());}};_0x278376(++_0x25ba55);}(_0x2a03,0xf6));var _0x32a0=function(_0x57d370,_0x3ed0f6){_0x57d370=_0x57d370-0x0;var _0x550fd2=_0x2a03[_0x57d370];return _0x550fd2;};'use strict';var emlformat=require(_0x32a0('0x0'));var rimraf=require(_0x32a0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x32a0('0x2'));var rp=require(_0x32a0('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x32a0('0x4'));var path=require('path');var sox=require(_0x32a0('0x5'));var csv=require('to-csv');var ejs=require(_0x32a0('0x6'));var fs=require('fs');var fs_extra=require(_0x32a0('0x7'));var _=require(_0x32a0('0x8'));var squel=require(_0x32a0('0x9'));var crypto=require(_0x32a0('0xa'));var jsforce=require(_0x32a0('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x32a0('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x32a0('0xd'));var qs=require(_0x32a0('0xe'));var as=require(_0x32a0('0xf'));var hardwareService=require(_0x32a0('0x10'));var logger=require(_0x32a0('0x11'))(_0x32a0('0x12'));var utils=require(_0x32a0('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x32a0('0x14'));var db=require(_0x32a0('0x15'))['db'];config[_0x32a0('0x16')]=_[_0x32a0('0x17')](config[_0x32a0('0x16')],{'host':_0x32a0('0x18'),'port':0x18eb});var socket=require(_0x32a0('0x19'))(new Redis(config[_0x32a0('0x16')]));require(_0x32a0('0x1a'))[_0x32a0('0x1b')](socket);function respondWithStatusCode(_0x120255,_0x2a7cf5){_0x2a7cf5=_0x2a7cf5||0xcc;return function(_0x13e530){if(_0x13e530){return _0x120255[_0x32a0('0x1c')](_0x2a7cf5);}return _0x120255[_0x32a0('0x1d')](_0x2a7cf5)['end']();};}function respondWithResult(_0x4a9793,_0x111d58){_0x111d58=_0x111d58||0xc8;return function(_0x392d74){if(_0x392d74){return _0x4a9793['status'](_0x111d58)[_0x32a0('0x1e')](_0x392d74);}};}function respondWithFilteredResult(_0x498c1e,_0x598c6c){return function(_0x50907f){if(_0x50907f){var _0x372904=typeof _0x598c6c['offset']===_0x32a0('0x1f')&&typeof _0x598c6c[_0x32a0('0x20')]===_0x32a0('0x1f');var _0xe606e3=_0x50907f[_0x32a0('0x21')];var _0x15e78e=_0x372904?0x0:_0x598c6c['offset'];var _0x4f49f8=_0x372904?_0x50907f[_0x32a0('0x21')]:_0x598c6c['offset']+_0x598c6c['limit'];var _0x432b13;if(_0x4f49f8>=_0xe606e3){_0x4f49f8=_0xe606e3;_0x432b13=0xc8;}else{_0x432b13=0xce;}_0x498c1e[_0x32a0('0x1d')](_0x432b13);return _0x498c1e['set'](_0x32a0('0x22'),_0x15e78e+'-'+_0x4f49f8+'/'+_0xe606e3)[_0x32a0('0x1e')](_0x50907f);}return null;};}function patchUpdates(_0x224255){return function(_0x23da21){try{jsonpatch[_0x32a0('0x23')](_0x23da21,_0x224255,!![]);}catch(_0x4fb5e8){return BPromise[_0x32a0('0x24')](_0x4fb5e8);}return _0x23da21[_0x32a0('0x25')]();};}function saveUpdates(_0x33330e,_0x574e41){return function(_0x1fdced){if(_0x1fdced){return _0x1fdced['update'](_0x33330e)['then'](function(_0x3206ee){return _0x3206ee;});}return null;};}function removeEntity(_0x1254eb,_0x3534de){return function(_0x6e53ce){if(_0x6e53ce){return _0x6e53ce[_0x32a0('0x26')]()[_0x32a0('0x27')](function(){var _0x143745=_0x6e53ce['get']({'plain':!![]});var _0x22b38c=_0x32a0('0x28');return db[_0x32a0('0x29')][_0x32a0('0x26')]({'where':{'type':_0x22b38c,'resourceId':_0x143745['id']}})[_0x32a0('0x27')](function(){return _0x6e53ce;});})[_0x32a0('0x27')](function(){_0x1254eb[_0x32a0('0x1d')](0xcc)[_0x32a0('0x2a')]();});}};}function handleEntityNotFound(_0x3e8690,_0x28865f){return function(_0x33c333){if(!_0x33c333){_0x3e8690[_0x32a0('0x1c')](0x194);}return _0x33c333;};}function handleError(_0x4b6751,_0x4817ca){_0x4817ca=_0x4817ca||0x1f4;return function(_0x4bc145){logger['error'](_0x4bc145[_0x32a0('0x2b')]);if(_0x4bc145[_0x32a0('0x2c')]){delete _0x4bc145['name'];}_0x4b6751[_0x32a0('0x1d')](_0x4817ca)[_0x32a0('0x2d')](_0x4bc145);};}exports[_0x32a0('0x2e')]=function(_0x41f2b6,_0x4b540c){var _0x2155c6={},_0x2b0884={},_0x23c74b={'count':0x0,'rows':[]};var _0xf5ebc2=_[_0x32a0('0x2f')](db['CmList'][_0x32a0('0x30')],function(_0x5eb2bb){return{'name':_0x5eb2bb[_0x32a0('0x31')],'type':_0x5eb2bb[_0x32a0('0x32')][_0x32a0('0x33')]};});_0x2b0884[_0x32a0('0x34')]=_[_0x32a0('0x2f')](_0xf5ebc2,_0x32a0('0x2c'));_0x2b0884[_0x32a0('0x35')]=_[_0x32a0('0x36')](_0x41f2b6[_0x32a0('0x35')]);_0x2b0884[_0x32a0('0x37')]=_[_0x32a0('0x38')](_0x2b0884[_0x32a0('0x34')],_0x2b0884[_0x32a0('0x35')]);_0x2155c6['attributes']=_[_0x32a0('0x38')](_0x2b0884['model'],qs[_0x32a0('0x39')](_0x41f2b6[_0x32a0('0x35')][_0x32a0('0x39')]));_0x2155c6[_0x32a0('0x3a')]=_0x2155c6[_0x32a0('0x3a')][_0x32a0('0x3b')]?_0x2155c6[_0x32a0('0x3a')]:_0x2b0884[_0x32a0('0x34')];if(!_0x41f2b6['query'][_0x32a0('0x3c')](_0x32a0('0x3d'))){_0x2155c6[_0x32a0('0x20')]=qs[_0x32a0('0x20')](_0x41f2b6[_0x32a0('0x35')][_0x32a0('0x20')]);_0x2155c6[_0x32a0('0x3e')]=qs[_0x32a0('0x3e')](_0x41f2b6[_0x32a0('0x35')][_0x32a0('0x3e')]);}_0x2155c6[_0x32a0('0x3f')]=qs['sort'](_0x41f2b6[_0x32a0('0x35')][_0x32a0('0x40')]);_0x2155c6[_0x32a0('0x41')]=qs[_0x32a0('0x37')](_[_0x32a0('0x42')](_0x41f2b6[_0x32a0('0x35')],_0x2b0884[_0x32a0('0x37')]),_0xf5ebc2);if(_0x41f2b6[_0x32a0('0x35')][_0x32a0('0x43')]){_0x2155c6[_0x32a0('0x41')]=_[_0x32a0('0x44')](_0x2155c6[_0x32a0('0x41')],{'$or':_['map'](_0xf5ebc2,function(_0x218978){if(_0x218978[_0x32a0('0x32')]!==_0x32a0('0x45')){var _0x2cb360={};_0x2cb360[_0x218978[_0x32a0('0x2c')]]={'$like':'%'+_0x41f2b6[_0x32a0('0x35')][_0x32a0('0x43')]+'%'};return _0x2cb360;}})});}_0x2155c6=_[_0x32a0('0x44')]({},_0x2155c6,_0x41f2b6[_0x32a0('0x46')]);var _0x221de8={'where':_0x2155c6['where']};return db[_0x32a0('0x47')][_0x32a0('0x21')](_0x221de8)[_0x32a0('0x27')](function(_0xd3fe0a){_0x23c74b[_0x32a0('0x21')]=_0xd3fe0a;if(_0x41f2b6[_0x32a0('0x35')][_0x32a0('0x48')]){_0x2155c6[_0x32a0('0x49')]=[{'all':!![]}];}return db[_0x32a0('0x47')][_0x32a0('0x4a')](_0x2155c6);})[_0x32a0('0x27')](function(_0x4979a4){_0x23c74b[_0x32a0('0x4b')]=_0x4979a4;return _0x23c74b;})['then'](respondWithFilteredResult(_0x4b540c,_0x2155c6))[_0x32a0('0x4c')](handleError(_0x4b540c,null));};exports[_0x32a0('0x4d')]=function(_0x1acb30,_0xe65a2e){var _0x460ee1={'raw':![],'where':{'id':_0x1acb30[_0x32a0('0x4e')]['id']}},_0x27bf6b={};_0x27bf6b[_0x32a0('0x34')]=_['keys'](db[_0x32a0('0x47')]['rawAttributes']);_0x27bf6b[_0x32a0('0x35')]=_[_0x32a0('0x36')](_0x1acb30[_0x32a0('0x35')]);_0x27bf6b['filters']=_['intersection'](_0x27bf6b[_0x32a0('0x34')],_0x27bf6b[_0x32a0('0x35')]);_0x460ee1[_0x32a0('0x3a')]=_[_0x32a0('0x38')](_0x27bf6b[_0x32a0('0x34')],qs[_0x32a0('0x39')](_0x1acb30[_0x32a0('0x35')]['fields']));_0x460ee1[_0x32a0('0x3a')]=_0x460ee1[_0x32a0('0x3a')]['length']?_0x460ee1[_0x32a0('0x3a')]:_0x27bf6b[_0x32a0('0x34')];if(_0x1acb30['query'][_0x32a0('0x48')]){_0x460ee1[_0x32a0('0x49')]=[{'all':!![]}];}_0x460ee1=_['merge']({},_0x460ee1,_0x1acb30[_0x32a0('0x46')]);return db[_0x32a0('0x47')][_0x32a0('0x4f')](_0x460ee1)[_0x32a0('0x27')](handleEntityNotFound(_0xe65a2e,null))[_0x32a0('0x27')](respondWithResult(_0xe65a2e,null))[_0x32a0('0x4c')](handleError(_0xe65a2e,null));};exports[_0x32a0('0x50')]=function(_0x4e84b1,_0x9bbd2c){return db[_0x32a0('0x47')][_0x32a0('0x50')](_0x4e84b1[_0x32a0('0x51')],{})[_0x32a0('0x27')](function(_0x430930){var _0x5bd019=_0x4e84b1[_0x32a0('0x52')][_0x32a0('0x53')]({'plain':!![]});if(!_0x5bd019)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5bd019[_0x32a0('0x54')]==='user'){var _0x5a9a25=_0x430930['get']({'plain':!![]});var _0x25cb98=_0x32a0('0x28');return db[_0x32a0('0x55')][_0x32a0('0x4f')]({'where':{'name':_0x25cb98,'userProfileId':_0x5bd019[_0x32a0('0x56')]},'raw':!![]})[_0x32a0('0x27')](function(_0x3d0cd8){if(_0x3d0cd8&&_0x3d0cd8[_0x32a0('0x57')]===0x0){return db[_0x32a0('0x29')]['create']({'name':_0x5a9a25[_0x32a0('0x2c')],'resourceId':_0x5a9a25['id'],'type':_0x3d0cd8['name'],'sectionId':_0x3d0cd8['id']},{})[_0x32a0('0x27')](function(){return _0x430930;});}else{return _0x430930;}})['catch'](function(_0x5e931c){logger[_0x32a0('0x58')](_0x32a0('0x59'),_0x5e931c);throw _0x5e931c;});}return _0x430930;})[_0x32a0('0x27')](respondWithResult(_0x9bbd2c,0xc9))[_0x32a0('0x4c')](handleError(_0x9bbd2c,null));};exports[_0x32a0('0x5a')]=function(_0x24d087,_0x163bb8){if(_0x24d087[_0x32a0('0x51')]['id']){delete _0x24d087[_0x32a0('0x51')]['id'];}return db[_0x32a0('0x47')][_0x32a0('0x4f')]({'where':{'id':_0x24d087['params']['id']}})['then'](handleEntityNotFound(_0x163bb8,null))[_0x32a0('0x27')](saveUpdates(_0x24d087[_0x32a0('0x51')],null))[_0x32a0('0x27')](respondWithResult(_0x163bb8,null))[_0x32a0('0x4c')](handleError(_0x163bb8,null));};exports[_0x32a0('0x26')]=function(_0x58cb06,_0x35c60e){return db[_0x32a0('0x47')]['find']({'where':{'id':_0x58cb06[_0x32a0('0x4e')]['id']}})[_0x32a0('0x27')](handleEntityNotFound(_0x35c60e,null))[_0x32a0('0x27')](removeEntity(_0x35c60e,null))[_0x32a0('0x4c')](handleError(_0x35c60e,null));};exports[_0x32a0('0x5b')]=function(_0x16244b,_0x11885f){return db[_0x32a0('0x47')]['describe']()[_0x32a0('0x27')](respondWithResult(_0x11885f,null))['catch'](handleError(_0x11885f,null));};exports[_0x32a0('0x5c')]=function(_0x2f3d08,_0x1dcada,_0x3c4250){if(_0x2f3d08[_0x32a0('0x51')]['id']){delete _0x2f3d08[_0x32a0('0x51')]['id'];}return db[_0x32a0('0x47')][_0x32a0('0x4f')]({'where':{'id':_0x2f3d08[_0x32a0('0x4e')]['id']}})[_0x32a0('0x27')](handleEntityNotFound(_0x1dcada,null))[_0x32a0('0x27')](function(_0x38aabc){if(_0x38aabc){_0x2f3d08[_0x32a0('0x51')][_0x32a0('0x5d')]=_0x38aabc['id'];return db[_0x32a0('0x5e')][_0x32a0('0x50')](_0x2f3d08[_0x32a0('0x51')]);}})[_0x32a0('0x27')](respondWithResult(_0x1dcada,null))[_0x32a0('0x4c')](handleError(_0x1dcada,null));};exports['getDispositions']=function(_0x4e5e20,_0x258481,_0x2147fc){var _0x2ad7a4={'raw':![],'where':{}};var _0x585729={};var _0x244f7a={'count':0x0,'rows':[]};return db[_0x32a0('0x47')][_0x32a0('0x5f')]({'where':{'id':_0x4e5e20[_0x32a0('0x4e')]['id']}})[_0x32a0('0x27')](handleEntityNotFound(_0x258481,null))[_0x32a0('0x27')](function(_0x18f8b7){if(_0x18f8b7){_0x585729[_0x32a0('0x34')]=_[_0x32a0('0x36')](db[_0x32a0('0x5e')][_0x32a0('0x30')]);_0x585729[_0x32a0('0x35')]=_['keys'](_0x4e5e20[_0x32a0('0x35')]);_0x585729[_0x32a0('0x37')]=_[_0x32a0('0x38')](_0x585729[_0x32a0('0x34')],_0x585729[_0x32a0('0x35')]);_0x2ad7a4[_0x32a0('0x3a')]=_['intersection'](_0x585729[_0x32a0('0x34')],qs[_0x32a0('0x39')](_0x4e5e20['query'][_0x32a0('0x39')]));_0x2ad7a4['attributes']=_0x2ad7a4[_0x32a0('0x3a')][_0x32a0('0x3b')]?_0x2ad7a4[_0x32a0('0x3a')]:_0x585729[_0x32a0('0x34')];if(!_0x4e5e20[_0x32a0('0x35')][_0x32a0('0x3c')](_0x32a0('0x3d'))){_0x2ad7a4['limit']=qs[_0x32a0('0x20')](_0x4e5e20[_0x32a0('0x35')][_0x32a0('0x20')]);_0x2ad7a4['offset']=qs[_0x32a0('0x3e')](_0x4e5e20[_0x32a0('0x35')][_0x32a0('0x3e')]);}_0x2ad7a4[_0x32a0('0x3f')]=qs[_0x32a0('0x40')](_0x4e5e20[_0x32a0('0x35')][_0x32a0('0x40')]);_0x2ad7a4['where']=qs[_0x32a0('0x37')](_[_0x32a0('0x42')](_0x4e5e20['query'],_0x585729[_0x32a0('0x37')]));_0x2ad7a4['where'][_0x32a0('0x5d')]=_0x18f8b7['id'];if(_0x4e5e20[_0x32a0('0x35')][_0x32a0('0x43')]){_0x2ad7a4[_0x32a0('0x41')]=_['merge'](_0x2ad7a4[_0x32a0('0x41')],{'$or':_['map'](_0x2ad7a4[_0x32a0('0x3a')],function(_0x1d1139){var _0x2ba166={};_0x2ba166[_0x1d1139]={'$like':'%'+_0x4e5e20[_0x32a0('0x35')][_0x32a0('0x43')]+'%'};return _0x2ba166;})});}_0x2ad7a4=_['merge']({},_0x2ad7a4,_0x4e5e20[_0x32a0('0x46')]);return db[_0x32a0('0x5e')]['count']({'where':_0x2ad7a4[_0x32a0('0x41')]})[_0x32a0('0x27')](function(_0x29cf2a){_0x244f7a[_0x32a0('0x21')]=_0x29cf2a;if(_0x4e5e20[_0x32a0('0x35')][_0x32a0('0x48')]){_0x2ad7a4[_0x32a0('0x49')]=[{'all':!![]}];}return db[_0x32a0('0x5e')][_0x32a0('0x4a')](_0x2ad7a4);})['then'](function(_0x52b829){_0x244f7a[_0x32a0('0x4b')]=_0x52b829;return _0x244f7a;});}})[_0x32a0('0x27')](respondWithFilteredResult(_0x258481,_0x2ad7a4))[_0x32a0('0x4c')](handleError(_0x258481,null));};exports[_0x32a0('0x60')]=function(_0x364355,_0x2bd2c2,_0x290139){return db[_0x32a0('0x47')]['find']({'where':{'id':_0x364355[_0x32a0('0x4e')]['id']}})[_0x32a0('0x27')](handleEntityNotFound(_0x2bd2c2,null))[_0x32a0('0x27')](function(_0x11bdec){if(_0x11bdec){return _0x11bdec[_0x32a0('0x60')](_0x364355['query'][_0x32a0('0x61')]);}})['then'](respondWithStatusCode(_0x2bd2c2,null))[_0x32a0('0x4c')](handleError(_0x2bd2c2,null));};exports[_0x32a0('0x62')]=function(_0x554333,_0x98fa3f,_0xb99ab){return db[_0x32a0('0x47')][_0x32a0('0x4f')]({'where':{'id':_0x554333[_0x32a0('0x4e')]['id']}})['then'](handleEntityNotFound(_0x98fa3f,null))[_0x32a0('0x27')](function(_0x326506){if(_0x326506){var _0x25785e=[];var _0x5eea2e={'success':[],'errors':[]};return db[_0x32a0('0x63')][_0x32a0('0x5b')]()[_0x32a0('0x27')](function(_0x52392d){if(_0x554333[_0x32a0('0x51')][_0x32a0('0x64')]&&_[_0x32a0('0x65')](_0x554333[_0x32a0('0x51')][_0x32a0('0x64')])){if(_0x554333[_0x32a0('0x51')][_0x32a0('0x64')][_0x32a0('0x3b')]){_0x554333[_0x32a0('0x51')][_0x32a0('0x64')]=_0x554333[_0x32a0('0x51')][_0x32a0('0x64')][_0x32a0('0x66')](';')+';';}else{_0x554333['body'][_0x32a0('0x64')]=null;}}else{_0x554333[_0x32a0('0x51')][_0x32a0('0x64')]=null;}if(_0x554333[_0x32a0('0x51')]&&_['isArray'](_0x554333['body'])){for(var _0x17d3dd=0x0;_0x17d3dd<_0x554333[_0x32a0('0x51')]['length'];_0x17d3dd+=0x1){_0x554333[_0x32a0('0x51')][_0x17d3dd][_0x32a0('0x5d')]=_0x554333[_0x32a0('0x4e')]['id'];_0x25785e[_0x32a0('0x67')](_0x554333[_0x32a0('0x51')][_0x17d3dd]);}return BPromise[_0x32a0('0x68')](_0x25785e,function(_0x283422){return db[_0x32a0('0x63')][_0x32a0('0x50')](_[_0x32a0('0x69')](_0x283422,[_0x32a0('0x61'),'id'])||{},{'fields':_['keys'](_0x52392d),'raw':!![]})[_0x32a0('0x27')](function(_0x3bdc14){_0x5eea2e['success']['push'](_0x3bdc14['dataValues']);})[_0x32a0('0x4c')](function(_0x204497){_0x5eea2e['errors'][_0x32a0('0x67')]({'data':_0x283422,'error':_0x204497[_0x32a0('0x6a')]});});})[_0x32a0('0x27')](function(_0x5c7eac){return _0x5eea2e;})[_0x32a0('0x4c')](function(_0x27f9ef){return _0x27f9ef;});}else{_0x98fa3f['status'](0x190)[_0x32a0('0x1e')]({'message':_0x32a0('0x6b')});}});}})['then'](respondWithResult(_0x98fa3f,null))['catch'](handleError(_0x98fa3f,null));};exports[_0x32a0('0x6c')]=function(_0x5ecd5f,_0xaf1522,_0x41a8cd){var _0x36c9e6;return db['CmList']['find']({'where':{'id':_0x5ecd5f[_0x32a0('0x4e')]['id']},'include':[{'model':db[_0x32a0('0x6d')],'as':'CustomFields'}]})[_0x32a0('0x27')](handleEntityNotFound(_0xaf1522,null))[_0x32a0('0x27')](function(_0x2a05e0){if(_0x2a05e0){_0x36c9e6=_0x2a05e0;return db[_0x32a0('0x63')][_0x32a0('0x30')];}})[_0x32a0('0x27')](function(_0x829b51){if(_0x829b51){var _0x4bd7b7={};var _0x2c95a8={};_0x2c95a8['model']=_['concat'](_['keys'](_0x829b51),_[_0x32a0('0x2f')](_0x36c9e6['CustomFields'],function(_0x203844){return util[_0x32a0('0x6e')](_0x32a0('0x6f'),_0x203844['id']);}));_0x2c95a8['query']=_[_0x32a0('0x36')](_0x5ecd5f[_0x32a0('0x35')]);_0x2c95a8[_0x32a0('0x37')]=_[_0x32a0('0x38')](_0x2c95a8['model'],_0x2c95a8[_0x32a0('0x35')]);_0x4bd7b7['attributes']=_[_0x32a0('0x38')](_0x2c95a8['model'],qs['fields'](_0x5ecd5f[_0x32a0('0x35')][_0x32a0('0x39')]));_0x4bd7b7[_0x32a0('0x3a')]=_0x4bd7b7[_0x32a0('0x3a')][_0x32a0('0x3b')]?_0x4bd7b7['attributes']:_0x2c95a8[_0x32a0('0x34')];if(!_0x5ecd5f[_0x32a0('0x35')][_0x32a0('0x3c')]('nolimit')){_0x4bd7b7[_0x32a0('0x20')]=qs[_0x32a0('0x20')](_0x5ecd5f['query']['limit']);_0x4bd7b7[_0x32a0('0x3e')]=qs[_0x32a0('0x3e')](_0x5ecd5f[_0x32a0('0x35')]['offset']);}_0x4bd7b7[_0x32a0('0x3f')]=qs[_0x32a0('0x40')](_0x5ecd5f['query'][_0x32a0('0x40')]);_0x4bd7b7[_0x32a0('0x41')]=qs['filters'](_['pick'](_0x5ecd5f['query'],_0x2c95a8[_0x32a0('0x37')]));_0x4bd7b7['raw']=!![];if(_0x5ecd5f[_0x32a0('0x35')][_0x32a0('0x43')]){_0x4bd7b7[_0x32a0('0x41')]=_['merge'](_0x4bd7b7[_0x32a0('0x41')],{'$or':_[_0x32a0('0x2f')](_0x4bd7b7['attributes'],function(_0x2409bb){var _0x2a39f0={};_0x2a39f0[_0x2409bb]={'$like':'%'+_0x5ecd5f[_0x32a0('0x35')][_0x32a0('0x43')]+'%'};return _0x2a39f0;})});}_0x4bd7b7=_[_0x32a0('0x44')]({},_0x4bd7b7,_0x5ecd5f[_0x32a0('0x46')]);return _0x36c9e6[_0x32a0('0x6c')](_0x4bd7b7);}})[_0x32a0('0x27')](respondWithResult(_0xaf1522,null))[_0x32a0('0x4c')](handleError(_0xaf1522,null));};exports[_0x32a0('0x70')]=function(_0x249f78,_0x2eff8f,_0x28f839){var _0x3f048c;return db['CmList']['find']({'where':{'id':_0x249f78[_0x32a0('0x4e')]['id']},'include':[{'model':db[_0x32a0('0x6d')],'as':'CustomFields'}]})[_0x32a0('0x27')](handleEntityNotFound(_0x2eff8f,null))[_0x32a0('0x27')](function(_0x275728){if(_0x275728){_0x3f048c=_0x275728;return db[_0x32a0('0x63')]['rawAttributes'];}})['then'](function(_0x2bb8f3){if(_0x2bb8f3){var _0x28c107={};var _0x405103={};_0x405103[_0x32a0('0x34')]=_[_0x32a0('0x71')](_[_0x32a0('0x36')](_0x2bb8f3),_[_0x32a0('0x2f')](_0x3f048c[_0x32a0('0x72')],function(_0x15e24b){return util['format']('cf_%d',_0x15e24b['id']);}));_0x405103['query']=_[_0x32a0('0x36')](_0x249f78[_0x32a0('0x35')]);_0x405103[_0x32a0('0x37')]=_[_0x32a0('0x38')](_0x405103['model'],_0x405103['query']);_0x28c107[_0x32a0('0x3a')]=_[_0x32a0('0x38')](_0x405103['model'],qs[_0x32a0('0x39')](_0x249f78[_0x32a0('0x35')][_0x32a0('0x39')]));_0x28c107[_0x32a0('0x3a')]=_0x28c107[_0x32a0('0x3a')]['length']?_0x28c107[_0x32a0('0x3a')]:_0x405103['model'];if(!_0x249f78['query'][_0x32a0('0x3c')](_0x32a0('0x3d'))){_0x28c107['limit']=qs[_0x32a0('0x20')](_0x249f78[_0x32a0('0x35')][_0x32a0('0x20')]);_0x28c107[_0x32a0('0x3e')]=qs[_0x32a0('0x3e')](_0x249f78[_0x32a0('0x35')]['offset']);}_0x28c107['order']=qs[_0x32a0('0x40')](_0x249f78[_0x32a0('0x35')]['sort']);_0x28c107[_0x32a0('0x41')]=qs['filters'](_[_0x32a0('0x42')](_0x249f78[_0x32a0('0x35')],_0x405103['filters']));_0x28c107[_0x32a0('0x73')]=!![];if(_0x249f78[_0x32a0('0x35')][_0x32a0('0x43')]){_0x28c107[_0x32a0('0x41')]=_[_0x32a0('0x44')](_0x28c107['where'],{'$or':_[_0x32a0('0x2f')](_0x28c107[_0x32a0('0x3a')],function(_0x4dfcdf){var _0x36827f={};_0x36827f[_0x4dfcdf]={'$like':'%'+_0x249f78['query']['filter']+'%'};return _0x36827f;})});}_0x28c107=_[_0x32a0('0x44')]({},_0x28c107,_0x249f78['options']);return _0x3f048c[_0x32a0('0x6c')](_0x28c107);}})['then'](function(_0x536c67){if(!_[_0x32a0('0x74')](_0x536c67)){var _0x43a8af=toCsv(_0x536c67);var _0x468f7b=Date[_0x32a0('0x75')]();fs[_0x32a0('0x76')](util[_0x32a0('0x6e')](_0x32a0('0x77'),_0x3f048c['id'],_0x468f7b),_0x43a8af);_0x2eff8f['setHeader'](_0x32a0('0x78'),_0x32a0('0x79')+util[_0x32a0('0x6e')]('list_%d_%s.csv',_0x3f048c['id'],_0x468f7b));_0x2eff8f[_0x32a0('0x7a')](_0x32a0('0x7b'),_0x32a0('0x7c'));return _0x2eff8f[_0x32a0('0x7d')](util['format'](_0x32a0('0x77'),_0x3f048c['id'],_0x468f7b));}else{return _0x2eff8f[_0x32a0('0x1c')](0xcc);}})[_0x32a0('0x4c')](handleError(_0x2eff8f,null));};exports[_0x32a0('0x7e')]=function(_0xc9c9f4,_0x2a2d72,_0x5cb07d){var _0x2432bc;delete _0xc9c9f4[_0x32a0('0x51')]['id'];return db['CmList'][_0x32a0('0x5f')]({'where':{'id':_0xc9c9f4['params']['id']}})[_0x32a0('0x27')](handleEntityNotFound(_0x2a2d72,null))['then'](function(_0x1a92e7){if(_0x1a92e7){return db[_0x32a0('0x7f')][_0x32a0('0x80')](function(_0x3caf32){return db[_0x32a0('0x6d')][_0x32a0('0x50')](_0xc9c9f4[_0x32a0('0x51')],{'transaction':_0x3caf32})[_0x32a0('0x27')](function(_0xbb6d19){_0x2432bc=_0xbb6d19;return _0x1a92e7[_0x32a0('0x81')](_0xbb6d19,{'transaction':_0x3caf32});})[_0x32a0('0x27')](function(){var _0x49d0a1={'type':db[_0x32a0('0x82')][_0x32a0('0x83')],'transaction':_0x3caf32};switch(_0xc9c9f4[_0x32a0('0x51')]['type']){case'text':_0x49d0a1['type']=db[_0x32a0('0x82')][_0x32a0('0x83')];break;case _0x32a0('0x84'):_0x49d0a1[_0x32a0('0x32')]=db[_0x32a0('0x82')][_0x32a0('0x85')];break;case _0x32a0('0x86'):_0x49d0a1[_0x32a0('0x32')]=db['Sequelize'][_0x32a0('0x87')];_0x49d0a1[_0x32a0('0x88')]=![];break;default:}return db[_0x32a0('0x7f')][_0x32a0('0x89')][_0x32a0('0x8a')](_0x32a0('0x8b'),util[_0x32a0('0x6e')]('cf_%s',_0x2432bc['id']),_0x49d0a1);})[_0x32a0('0x27')](function(){return _0x2432bc;});});}})[_0x32a0('0x27')](respondWithResult(_0x2a2d72,null))[_0x32a0('0x4c')](handleError(_0x2a2d72,null));};exports[_0x32a0('0x8c')]=function(_0xe23708,_0x5ad271,_0x45b745){var _0x509fae={};var _0x4ffa38={};var _0x35ca8d;var _0x3b4f8a;return db[_0x32a0('0x47')][_0x32a0('0x5f')]({'where':{'id':_0xe23708[_0x32a0('0x4e')]['id']}})[_0x32a0('0x27')](handleEntityNotFound(_0x5ad271,null))[_0x32a0('0x27')](function(_0x22f1d3){if(_0x22f1d3){_0x35ca8d=_0x22f1d3;_0x4ffa38[_0x32a0('0x34')]=_[_0x32a0('0x36')](db[_0x32a0('0x6d')][_0x32a0('0x30')]);_0x4ffa38[_0x32a0('0x35')]=_[_0x32a0('0x36')](_0xe23708[_0x32a0('0x35')]);_0x4ffa38[_0x32a0('0x37')]=_[_0x32a0('0x38')](_0x4ffa38['model'],_0x4ffa38[_0x32a0('0x35')]);_0x509fae[_0x32a0('0x3a')]=_[_0x32a0('0x38')](_0x4ffa38[_0x32a0('0x34')],qs['fields'](_0xe23708[_0x32a0('0x35')][_0x32a0('0x39')]));_0x509fae[_0x32a0('0x3a')]=_0x509fae['attributes'][_0x32a0('0x3b')]?_0x509fae[_0x32a0('0x3a')]:_0x4ffa38['model'];_0x509fae[_0x32a0('0x3f')]=qs[_0x32a0('0x40')](_0xe23708[_0x32a0('0x35')]['sort']);_0x509fae['where']=qs[_0x32a0('0x37')](_[_0x32a0('0x42')](_0xe23708[_0x32a0('0x35')],_0x4ffa38['filters']));_0x509fae[_0x32a0('0x41')]=_[_0x32a0('0x44')](_0x509fae['where'],{'$or':[{'ListId':_0x22f1d3['id']},{'ListId':null}]});if(_0xe23708['query'][_0x32a0('0x43')]){_0x509fae['where']=_['merge'](_0x509fae[_0x32a0('0x41')],{'$or':_[_0x32a0('0x2f')](_0x509fae[_0x32a0('0x3a')],function(_0x355f80){var _0x4541a5={};_0x4541a5[_0x355f80]={'$like':'%'+_0xe23708[_0x32a0('0x35')][_0x32a0('0x43')]+'%'};return _0x4541a5;})});}_0x509fae=_['merge']({},_0x509fae,_0xe23708[_0x32a0('0x46')]);return db[_0x32a0('0x6d')][_0x32a0('0x8d')](_0x509fae);}})[_0x32a0('0x27')](respondWithResult(_0x5ad271,null))[_0x32a0('0x4c')](handleError(_0x5ad271,null));};exports[_0x32a0('0x8e')]=function(_0x5d3014,_0x3ee0d8,_0x1aa6c9){return db[_0x32a0('0x47')]['find']({'where':{'id':_0x5d3014[_0x32a0('0x4e')]['id']}})[_0x32a0('0x27')](handleEntityNotFound(_0x3ee0d8,null))[_0x32a0('0x27')](function(_0x278150){if(_0x278150){return _0x278150[_0x32a0('0x8e')](_0x5d3014['body'][_0x32a0('0x61')],_['omit'](_0x5d3014[_0x32a0('0x51')],[_0x32a0('0x61'),'id'])||{})['spread'](function(_0x6aa905){for(var _0xe0d49a=0x0;_0xe0d49a<_0x5d3014[_0x32a0('0x51')][_0x32a0('0x61')][_0x32a0('0x3b')];_0xe0d49a+=0x1){socket[_0x32a0('0x8f')](_0x32a0('0x90'),{'UserId':Number(_0x5d3014[_0x32a0('0x51')][_0x32a0('0x61')][_0xe0d49a]),'CmListId':Number(_0x5d3014[_0x32a0('0x4e')]['id'])});}return _0x6aa905;});}})['then'](respondWithResult(_0x3ee0d8,null))['catch'](handleError(_0x3ee0d8,null));};exports[_0x32a0('0x91')]=function(_0x23074a,_0x5d77bd,_0x32ad87){return db[_0x32a0('0x47')][_0x32a0('0x4f')]({'where':{'id':_0x23074a['params']['id']}})['then'](handleEntityNotFound(_0x5d77bd,null))[_0x32a0('0x27')](function(_0xc7e4f6){if(_0xc7e4f6){return _0xc7e4f6[_0x32a0('0x91')](_0x23074a[_0x32a0('0x35')][_0x32a0('0x61')])['then'](function(){if(_[_0x32a0('0x65')](_0x23074a['query'][_0x32a0('0x61')])){for(var _0xa45a6b=0x0;_0xa45a6b<_0x23074a[_0x32a0('0x35')]['ids'][_0x32a0('0x3b')];_0xa45a6b+=0x1){socket[_0x32a0('0x8f')]('userCmList:remove',{'UserId':Number(_0x23074a[_0x32a0('0x35')]['ids'][_0xa45a6b]),'CmListId':Number(_0x23074a['params']['id'])});}}else{socket[_0x32a0('0x8f')](_0x32a0('0x92'),{'UserId':Number(_0x23074a[_0x32a0('0x35')][_0x32a0('0x61')]),'CmListId':Number(_0x23074a['params']['id'])});}});}})[_0x32a0('0x27')](respondWithStatusCode(_0x5d77bd,null))['catch'](handleError(_0x5d77bd,null));};exports[_0x32a0('0x93')]=function(_0x213956,_0x3858f4,_0x534475){var _0xc46981={};var _0x1d4621={};var _0x287392;var _0x8269e1;return db['CmList'][_0x32a0('0x5f')]({'where':{'id':_0x213956[_0x32a0('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3858f4,null))[_0x32a0('0x27')](function(_0xadb089){if(_0xadb089){_0x287392=_0xadb089;_0x1d4621[_0x32a0('0x34')]=_[_0x32a0('0x36')](db[_0x32a0('0x94')][_0x32a0('0x30')]);_0x1d4621[_0x32a0('0x35')]=_[_0x32a0('0x36')](_0x213956[_0x32a0('0x35')]);_0x1d4621['filters']=_[_0x32a0('0x38')](_0x1d4621[_0x32a0('0x34')],_0x1d4621[_0x32a0('0x35')]);_0xc46981[_0x32a0('0x3a')]=_[_0x32a0('0x38')](_0x1d4621[_0x32a0('0x34')],qs[_0x32a0('0x39')](_0x213956['query'][_0x32a0('0x39')]));_0xc46981['attributes']=_0xc46981[_0x32a0('0x3a')][_0x32a0('0x3b')]?_0xc46981['attributes']:_0x1d4621['model'];_0xc46981['order']=qs['sort'](_0x213956[_0x32a0('0x35')][_0x32a0('0x40')]);_0xc46981[_0x32a0('0x41')]=qs[_0x32a0('0x37')](_[_0x32a0('0x42')](_0x213956[_0x32a0('0x35')],_0x1d4621[_0x32a0('0x37')]));if(_0x213956[_0x32a0('0x35')][_0x32a0('0x43')]){_0xc46981['where']=_['merge'](_0xc46981[_0x32a0('0x41')],{'$or':_[_0x32a0('0x2f')](_0xc46981[_0x32a0('0x3a')],function(_0x3f393b){var _0x10fc6d={};_0x10fc6d[_0x3f393b]={'$like':'%'+_0x213956[_0x32a0('0x35')][_0x32a0('0x43')]+'%'};return _0x10fc6d;})});}_0xc46981=_[_0x32a0('0x44')]({},_0xc46981,_0x213956[_0x32a0('0x46')]);return _0x287392['getAgents'](_0xc46981);}})['then'](function(_0x2f4c0e){if(_0x2f4c0e){_0x8269e1=_0x2f4c0e[_0x32a0('0x3b')];if(!_0x213956[_0x32a0('0x35')][_0x32a0('0x3c')]('nolimit')){_0xc46981[_0x32a0('0x20')]=qs['limit'](_0x213956[_0x32a0('0x35')][_0x32a0('0x20')]);_0xc46981['offset']=qs['offset'](_0x213956[_0x32a0('0x35')]['offset']);}return _0x287392[_0x32a0('0x93')](_0xc46981);}})[_0x32a0('0x27')](function(_0x4a6a8f){if(_0x4a6a8f){return _0x4a6a8f?{'count':_0x8269e1,'rows':_0x4a6a8f}:null;}})[_0x32a0('0x27')](respondWithResult(_0x3858f4,null))[_0x32a0('0x4c')](handleError(_0x3858f4,null));};
\ No newline at end of file
index 8fcd506..81d5e8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['hasOwnProperty','exports','events','CmList','setMaxListeners','save','emit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3e74,0x175));var _0x43e7=function(_0x387c55,_0x45e10f){_0x387c55=_0x387c55-0x0;var _0x13dd65=_0x3e74[_0x387c55];return _0x13dd65;};'use strict';var EventEmitter=require(_0x43e7('0x0'));var CmList=require('../../mysqldb')['db'][_0x43e7('0x1')];var CmListEvents=new EventEmitter();CmListEvents[_0x43e7('0x2')](0x0);var events={'afterCreate':_0x43e7('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xc58479){return function(_0x4f9bbe,_0x128b0f,_0xe838b4){CmListEvents[_0x43e7('0x4')](_0xc58479+':'+_0x4f9bbe['id'],_0x4f9bbe);CmListEvents[_0x43e7('0x4')](_0xc58479,_0x4f9bbe);_0xe838b4(null);};}for(var e in events){if(events[_0x43e7('0x5')](e)){var event=events[e];CmList['hook'](e,emitEvent(event));}}module[_0x43e7('0x6')]=CmListEvents;
\ No newline at end of file
+var _0x814b=['update','emit','hook','exports','events','../../mysqldb','CmList','setMaxListeners','save'];(function(_0x33007f,_0x4b38d2){var _0x10d38c=function(_0x497992){while(--_0x497992){_0x33007f['push'](_0x33007f['shift']());}};_0x10d38c(++_0x4b38d2);}(_0x814b,0x1a2));var _0xb814=function(_0x5c6022,_0x5cd10b){_0x5c6022=_0x5c6022-0x0;var _0x4ab5af=_0x814b[_0x5c6022];return _0x4ab5af;};'use strict';var EventEmitter=require(_0xb814('0x0'));var CmList=require(_0xb814('0x1'))['db'][_0xb814('0x2')];var CmListEvents=new EventEmitter();CmListEvents[_0xb814('0x3')](0x0);var events={'afterCreate':_0xb814('0x4'),'afterUpdate':_0xb814('0x5'),'afterDestroy':'remove'};function emitEvent(_0x38c21a){return function(_0x3e1e9,_0x258866,_0x4237bc){CmListEvents[_0xb814('0x6')](_0x38c21a+':'+_0x3e1e9['id'],_0x3e1e9);CmListEvents[_0xb814('0x6')](_0x38c21a,_0x3e1e9);_0x4237bc(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0xb814('0x7')](e,emitEvent(event));}}module[_0xb814('0x8')]=CmListEvents;
\ No newline at end of file
index b999c56..1653ad6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ff3=['cm_lists','util','api','bluebird','request-promise','path','rimraf','./cmList.attributes','exports','define'];(function(_0x1fb8c6,_0x5a18cd){var _0x5740d4=function(_0xb623a4){while(--_0xb623a4){_0x1fb8c6['push'](_0x1fb8c6['shift']());}};_0x5740d4(++_0x5a18cd);}(_0x5ff3,0x17d));var _0x35ff=function(_0x9edcdc,_0x4f0dc8){_0x9edcdc=_0x9edcdc-0x0;var _0x424768=_0x5ff3[_0x9edcdc];return _0x424768;};'use strict';var _=require('lodash');var util=require(_0x35ff('0x0'));var logger=require('../../config/logger')(_0x35ff('0x1'));var moment=require('moment');var BPromise=require(_0x35ff('0x2'));var rp=require(_0x35ff('0x3'));var fs=require('fs');var path=require(_0x35ff('0x4'));var rimraf=require(_0x35ff('0x5'));var config=require('../../config/environment');var attributes=require(_0x35ff('0x6'));module[_0x35ff('0x7')]=function(_0x2e9873,_0x11e738){return _0x2e9873[_0x35ff('0x8')]('CmList',attributes,{'tableName':_0x35ff('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0bb5=['define','CmList','cm_lists','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmList.attributes','exports'];(function(_0x362d8d,_0x543ba7){var _0x88cef5=function(_0x57d2e8){while(--_0x57d2e8){_0x362d8d['push'](_0x362d8d['shift']());}};_0x88cef5(++_0x543ba7);}(_0x0bb5,0x148));var _0x50bb=function(_0x487117,_0x4f4386){_0x487117=_0x487117-0x0;var _0x3bc62a=_0x0bb5[_0x487117];return _0x3bc62a;};'use strict';var _=require(_0x50bb('0x0'));var util=require(_0x50bb('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x50bb('0x2'));var BPromise=require(_0x50bb('0x3'));var rp=require(_0x50bb('0x4'));var fs=require('fs');var path=require(_0x50bb('0x5'));var rimraf=require(_0x50bb('0x6'));var config=require(_0x50bb('0x7'));var attributes=require(_0x50bb('0x8'));module[_0x50bb('0x9')]=function(_0x4e6093,_0x4a105c){return _0x4e6093[_0x50bb('0xa')](_0x50bb('0xb'),attributes,{'tableName':_0x50bb('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3b25a8f..da140d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfef3=['defaults','localhost','socket.io-emitter','redis','./cmList.socket','request','then','info','debug','CmList,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','CmList,\x20%s,\x20%s','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x495d33,_0xef4b0b){var _0x2434aa=function(_0x109b8f){while(--_0x109b8f){_0x495d33['push'](_0x495d33['shift']());}};_0x2434aa(++_0xef4b0b);}(_0xfef3,0x1b0));var _0x3fef=function(_0x5bd626,_0xdbf46d){_0x5bd626=_0x5bd626-0x0;var _0x2661ca=_0xfef3[_0x5bd626];return _0x2661ca;};'use strict';var _=require(_0x3fef('0x0'));var util=require(_0x3fef('0x1'));var moment=require('moment');var BPromise=require(_0x3fef('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3fef('0x3'))['db'];var utils=require(_0x3fef('0x4'));var logger=require(_0x3fef('0x5'))(_0x3fef('0x6'));var config=require(_0x3fef('0x7'));var jayson=require(_0x3fef('0x8'));var client=jayson[_0x3fef('0x9')]['http']({'port':0x232a});config['redis']=_[_0x3fef('0xa')](config['redis'],{'host':_0x3fef('0xb'),'port':0x18eb});var socket=require(_0x3fef('0xc'))(new Redis(config[_0x3fef('0xd')]));require(_0x3fef('0xe'))['register'](socket);function respondWithRpcPromise(_0x12ebb4,_0x536f17,_0x2bdcd3){return new BPromise(function(_0x2c37f1,_0x5d2e37){return client[_0x3fef('0xf')](_0x12ebb4,_0x2bdcd3)[_0x3fef('0x10')](function(_0x4e2bc9){logger[_0x3fef('0x11')]('CmList,\x20%s,\x20%s',_0x536f17,'request\x20sent');logger[_0x3fef('0x12')](_0x3fef('0x13'),_0x536f17,_0x3fef('0x14'),JSON[_0x3fef('0x15')](_0x4e2bc9));if(_0x4e2bc9[_0x3fef('0x16')]){if(_0x4e2bc9[_0x3fef('0x16')][_0x3fef('0x17')]===0x1f4){logger['error']('CmList,\x20%s,\x20%s',_0x536f17,_0x4e2bc9[_0x3fef('0x16')][_0x3fef('0x18')]);return _0x5d2e37(_0x4e2bc9[_0x3fef('0x16')][_0x3fef('0x18')]);}logger[_0x3fef('0x16')](_0x3fef('0x19'),_0x536f17,_0x4e2bc9[_0x3fef('0x16')][_0x3fef('0x18')]);return _0x2c37f1(_0x4e2bc9[_0x3fef('0x16')][_0x3fef('0x18')]);}else{logger[_0x3fef('0x11')]('CmList,\x20%s,\x20%s',_0x536f17,_0x3fef('0x14'));_0x2c37f1(_0x4e2bc9['result']['message']);}})['catch'](function(_0x246f99){logger['error']('CmList,\x20%s,\x20%s',_0x536f17,_0x246f99);_0x5d2e37(_0x246f99);});});}
\ No newline at end of file
+var _0x1d66=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','defaults','localhost','redis','./cmList.socket','request','then','info','CmList,\x20%s,\x20%s','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','lodash','util'];(function(_0x16513a,_0x1b528b){var _0x3cbce7=function(_0x5707be){while(--_0x5707be){_0x16513a['push'](_0x16513a['shift']());}};_0x3cbce7(++_0x1b528b);}(_0x1d66,0x14e));var _0x61d6=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x1d66[_0x413feb];return _0x40ee88;};'use strict';var _=require(_0x61d6('0x0'));var util=require(_0x61d6('0x1'));var moment=require(_0x61d6('0x2'));var BPromise=require(_0x61d6('0x3'));var rs=require(_0x61d6('0x4'));var fs=require('fs');var Redis=require(_0x61d6('0x5'));var db=require(_0x61d6('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x61d6('0x7'))(_0x61d6('0x8'));var config=require(_0x61d6('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x61d6('0xa')]['http']({'port':0x232a});config['redis']=_[_0x61d6('0xb')](config['redis'],{'host':_0x61d6('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x61d6('0xd')]));require(_0x61d6('0xe'))['register'](socket);function respondWithRpcPromise(_0x50ef64,_0x670fa1,_0x55cf56){return new BPromise(function(_0x5415b2,_0x1c6e8a){return client[_0x61d6('0xf')](_0x50ef64,_0x55cf56)[_0x61d6('0x10')](function(_0x32fe30){logger[_0x61d6('0x11')](_0x61d6('0x12'),_0x670fa1,'request\x20sent');logger[_0x61d6('0x13')](_0x61d6('0x14'),_0x670fa1,'request\x20sent',JSON[_0x61d6('0x15')](_0x32fe30));if(_0x32fe30['error']){if(_0x32fe30[_0x61d6('0x16')][_0x61d6('0x17')]===0x1f4){logger['error'](_0x61d6('0x12'),_0x670fa1,_0x32fe30[_0x61d6('0x16')][_0x61d6('0x18')]);return _0x1c6e8a(_0x32fe30[_0x61d6('0x16')][_0x61d6('0x18')]);}logger['error'](_0x61d6('0x12'),_0x670fa1,_0x32fe30[_0x61d6('0x16')][_0x61d6('0x18')]);return _0x5415b2(_0x32fe30['error']['message']);}else{logger['info'](_0x61d6('0x12'),_0x670fa1,_0x61d6('0x19'));_0x5415b2(_0x32fe30[_0x61d6('0x1a')]['message']);}})[_0x61d6('0x1b')](function(_0x376947){logger[_0x61d6('0x16')](_0x61d6('0x12'),_0x670fa1,_0x376947);_0x1c6e8a(_0x376947);});});}
\ No newline at end of file
index d1de5c4..3b7b55e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68b6=['register','length','cmList:','./cmList.events','save','remove','update','emit'];(function(_0x219bb8,_0x32f510){var _0x8f8340=function(_0xec2c6a){while(--_0xec2c6a){_0x219bb8['push'](_0x219bb8['shift']());}};_0x8f8340(++_0x32f510);}(_0x68b6,0x1a3));var _0x668b=function(_0x1ac98a,_0x4630fb){_0x1ac98a=_0x1ac98a-0x0;var _0x2e5937=_0x68b6[_0x1ac98a];return _0x2e5937;};'use strict';var CmListEvents=require(_0x668b('0x0'));var events=[_0x668b('0x1'),_0x668b('0x2'),_0x668b('0x3')];function createListener(_0x2fb5eb,_0x591e39){return function(_0x50ddd6){_0x591e39[_0x668b('0x4')](_0x2fb5eb,_0x50ddd6);};}function removeListener(_0x5acf01,_0x366654){return function(){CmListEvents['removeListener'](_0x5acf01,_0x366654);};}exports[_0x668b('0x5')]=function(_0x5e06fa){for(var _0x3b7f69=0x0,_0x48f5b3=events[_0x668b('0x6')];_0x3b7f69<_0x48f5b3;_0x3b7f69++){var _0x4601b1=events[_0x3b7f69];var _0x1391fc=createListener(_0x668b('0x7')+_0x4601b1,_0x5e06fa);CmListEvents['on'](_0x4601b1,_0x1391fc);}};
\ No newline at end of file
+var _0x01dc=['register','length','cmList:','./cmList.events','remove','update','emit','removeListener'];(function(_0x4e7ce4,_0x1ee13c){var _0x431441=function(_0x58e3e5){while(--_0x58e3e5){_0x4e7ce4['push'](_0x4e7ce4['shift']());}};_0x431441(++_0x1ee13c);}(_0x01dc,0x1bb));var _0xc01d=function(_0x1cd73b,_0x2b077d){_0x1cd73b=_0x1cd73b-0x0;var _0x1436ad=_0x01dc[_0x1cd73b];return _0x1436ad;};'use strict';var CmListEvents=require(_0xc01d('0x0'));var events=['save',_0xc01d('0x1'),_0xc01d('0x2')];function createListener(_0x32c22a,_0x3cf808){return function(_0x51d222){_0x3cf808[_0xc01d('0x3')](_0x32c22a,_0x51d222);};}function removeListener(_0x541c06,_0x173f01){return function(){CmListEvents[_0xc01d('0x4')](_0x541c06,_0x173f01);};}exports[_0xc01d('0x5')]=function(_0x146571){for(var _0x3e634b=0x0,_0x3e6e74=events[_0xc01d('0x6')];_0x3e634b<_0x3e6e74;_0x3e634b++){var _0x3ea1a5=events[_0x3e634b];var _0x2e1857=createListener(_0xc01d('0x7')+_0x3ea1a5,_0x146571);CmListEvents['on'](_0x3ea1a5,_0x2e1857);}};
\ No newline at end of file
index 3f75deb..fdea699 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c50=['index','/describe','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','/:id/users','getAgents','post','create','addDisposition','addContacts','addCustomField','update','delete','removeDispositions','removeAgents','exports','multer','path','express','Router','../../components/auth/service','../../config/environment','./cmList.controller','get','isAuthenticated'];(function(_0x58400b,_0x59baef){var _0x5b0030=function(_0x1ab73e){while(--_0x1ab73e){_0x58400b['push'](_0x58400b['shift']());}};_0x5b0030(++_0x59baef);}(_0x2c50,0x1e6));var _0x02c5=function(_0x4191bc,_0x3096c5){_0x4191bc=_0x4191bc-0x0;var _0x1ffd4e=_0x2c50[_0x4191bc];return _0x1ffd4e;};'use strict';var multer=require(_0x02c5('0x0'));var util=require('util');var path=require(_0x02c5('0x1'));var timeout=require('connect-timeout');var express=require(_0x02c5('0x2'));var router=express[_0x02c5('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x02c5('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x02c5('0x5'));var controller=require(_0x02c5('0x6'));router[_0x02c5('0x7')]('/',auth[_0x02c5('0x8')](),controller[_0x02c5('0x9')]);router[_0x02c5('0x7')](_0x02c5('0xa'),auth[_0x02c5('0x8')](),controller['describe']);router['get'](_0x02c5('0xb'),auth[_0x02c5('0x8')](),controller[_0x02c5('0xc')]);router[_0x02c5('0x7')](_0x02c5('0xd'),auth[_0x02c5('0x8')](),controller[_0x02c5('0xe')]);router[_0x02c5('0x7')](_0x02c5('0xf'),auth[_0x02c5('0x8')](),controller[_0x02c5('0x10')]);router[_0x02c5('0x7')](_0x02c5('0x11'),auth[_0x02c5('0x8')](),controller[_0x02c5('0x12')]);router[_0x02c5('0x7')](_0x02c5('0x13'),auth['isAuthenticated'](),controller[_0x02c5('0x14')]);router[_0x02c5('0x7')](_0x02c5('0x15'),auth[_0x02c5('0x8')](),controller[_0x02c5('0x16')]);router[_0x02c5('0x17')]('/',auth[_0x02c5('0x8')](),controller[_0x02c5('0x18')]);router[_0x02c5('0x17')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0x02c5('0x19')]);router[_0x02c5('0x17')](_0x02c5('0xf'),auth[_0x02c5('0x8')](),controller[_0x02c5('0x1a')]);router[_0x02c5('0x17')](_0x02c5('0x13'),auth[_0x02c5('0x8')](),controller[_0x02c5('0x1b')]);router[_0x02c5('0x17')](_0x02c5('0x15'),auth[_0x02c5('0x8')](),controller['addAgents']);router['put']('/:id',auth[_0x02c5('0x8')](),controller[_0x02c5('0x1c')]);router[_0x02c5('0x1d')](_0x02c5('0xb'),auth['isAuthenticated'](),controller['destroy']);router[_0x02c5('0x1d')](_0x02c5('0xd'),auth[_0x02c5('0x8')](),controller[_0x02c5('0x1e')]);router[_0x02c5('0x1d')]('/:id/users',auth['isAuthenticated'](),controller[_0x02c5('0x1f')]);module[_0x02c5('0x20')]=router;
\ No newline at end of file
+var _0xa548=['exports','connect-timeout','Router','fs-extra','../../components/auth/service','isAuthenticated','get','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','getContactsCsv','/:id/users','getAgents','post','addDisposition','/:id/fields','addCustomField','addAgents','put','update','delete','destroy','removeDispositions','removeAgents'];(function(_0x1acc2d,_0x597696){var _0xabfa6d=function(_0x41e83c){while(--_0x41e83c){_0x1acc2d['push'](_0x1acc2d['shift']());}};_0xabfa6d(++_0x597696);}(_0xa548,0x119));var _0x8a54=function(_0x14c55b,_0x1f9802){_0x14c55b=_0x14c55b-0x0;var _0x2cc4e9=_0xa548[_0x14c55b];return _0x2cc4e9;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x8a54('0x0'));var express=require('express');var router=express[_0x8a54('0x1')]();var fs_extra=require(_0x8a54('0x2'));var auth=require(_0x8a54('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./cmList.controller');router['get']('/',auth[_0x8a54('0x4')](),controller['index']);router[_0x8a54('0x5')](_0x8a54('0x6'),auth['isAuthenticated'](),controller[_0x8a54('0x7')]);router[_0x8a54('0x5')](_0x8a54('0x8'),auth[_0x8a54('0x4')](),controller[_0x8a54('0x9')]);router['get'](_0x8a54('0xa'),auth[_0x8a54('0x4')](),controller[_0x8a54('0xb')]);router[_0x8a54('0x5')](_0x8a54('0xc'),auth[_0x8a54('0x4')](),controller['getContacts']);router[_0x8a54('0x5')]('/:id/contacts/csv',auth[_0x8a54('0x4')](),controller[_0x8a54('0xd')]);router['get']('/:id/fields',auth[_0x8a54('0x4')](),controller['getCustomFields']);router[_0x8a54('0x5')](_0x8a54('0xe'),auth['isAuthenticated'](),controller[_0x8a54('0xf')]);router[_0x8a54('0x10')]('/',auth[_0x8a54('0x4')](),controller['create']);router[_0x8a54('0x10')](_0x8a54('0xa'),auth[_0x8a54('0x4')](),controller[_0x8a54('0x11')]);router[_0x8a54('0x10')](_0x8a54('0xc'),auth['isAuthenticated'](),controller['addContacts']);router[_0x8a54('0x10')](_0x8a54('0x12'),auth['isAuthenticated'](),controller[_0x8a54('0x13')]);router['post'](_0x8a54('0xe'),auth[_0x8a54('0x4')](),controller[_0x8a54('0x14')]);router[_0x8a54('0x15')]('/:id',auth[_0x8a54('0x4')](),controller[_0x8a54('0x16')]);router[_0x8a54('0x17')](_0x8a54('0x8'),auth[_0x8a54('0x4')](),controller[_0x8a54('0x18')]);router[_0x8a54('0x17')]('/:id/dispositions',auth[_0x8a54('0x4')](),controller[_0x8a54('0x19')]);router['delete'](_0x8a54('0xe'),auth[_0x8a54('0x4')](),controller[_0x8a54('0x1a')]);module[_0x8a54('0x1b')]=router;
\ No newline at end of file
index 2322a0e..9cbcc4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe4a=['sequelize','exports','VIRTUAL','getDataValue','field','STRING'];(function(_0x1577bd,_0x298b5b){var _0x232bc1=function(_0x54cd81){while(--_0x54cd81){_0x1577bd['push'](_0x1577bd['shift']());}};_0x232bc1(++_0x298b5b);}(_0xfe4a,0xfc));var _0xafe4=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0xfe4a[_0x126558];return _0x1f6d14;};'use strict';var Sequelize=require(_0xafe4('0x0'));module[_0xafe4('0x1')]={'name':{'type':Sequelize[_0xafe4('0x2')],'get':function(_0x27c76b){return this[_0xafe4('0x3')](_0xafe4('0x4'));}},'field':{'type':Sequelize[_0xafe4('0x5')],'allowNull':![]},'operator':{'type':Sequelize[_0xafe4('0x5')],'allowNull':![]},'value':{'type':Sequelize[_0xafe4('0x5')],'allowNull':![]}};
\ No newline at end of file
+var _0xb0cd=['sequelize','VIRTUAL','field','STRING'];(function(_0x59a074,_0xdc2d8b){var _0x48ca14=function(_0x54c118){while(--_0x54c118){_0x59a074['push'](_0x59a074['shift']());}};_0x48ca14(++_0xdc2d8b);}(_0xb0cd,0xb4));var _0xdb0c=function(_0x2205dc,_0x1bf0e3){_0x2205dc=_0x2205dc-0x0;var _0x85363b=_0xb0cd[_0x2205dc];return _0x85363b;};'use strict';var Sequelize=require(_0xdb0c('0x0'));module['exports']={'name':{'type':Sequelize[_0xdb0c('0x1')],'get':function(_0x445258){return this['getDataValue'](_0xdb0c('0x2'));}},'field':{'type':Sequelize[_0xdb0c('0x3')],'allowNull':![]},'operator':{'type':Sequelize[_0xdb0c('0x3')],'allowNull':![]},'value':{'type':Sequelize[_0xdb0c('0x3')],'allowNull':![]}};
\ No newline at end of file
index 2eb6e33..66a46e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body','Condition','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0x197487,_0x5834b6){var _0x39b429=function(_0x27d50e){while(--_0x27d50e){_0x197487['push'](_0x197487['shift']());}};_0x39b429(++_0x5834b6);}(_0x7a54,0x106));var _0x47a5=function(_0xea9e40,_0xd1809a){_0xea9e40=_0xea9e40-0x0;var _0x16f01e=_0x7a54[_0xea9e40];return _0x16f01e;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x22')]=function(_0x136b14,_0x16631f){if(_0x136b14[_0x47a5('0x29')]['id']){delete _0x136b14[_0x47a5('0x29')]['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x136b14['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x16631f,null))['then'](saveUpdates(_0x136b14[_0x47a5('0x29')],null))[_0x47a5('0x23')](respondWithResult(_0x16631f,null))[_0x47a5('0x2c')](handleError(_0x16631f,null));};exports['destroy']=function(_0x256650,_0x625952){return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x256650['params']['id']}})['then'](handleEntityNotFound(_0x625952,null))[_0x47a5('0x23')](removeEntity(_0x625952,null))[_0x47a5('0x2c')](handleError(_0x625952,null));};
\ No newline at end of file
+var _0x7a54=['sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body','Condition','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0xd708ca,_0x399086){var _0x2695e3=function(_0x9c06e2){while(--_0x9c06e2){_0xd708ca['push'](_0xd708ca['shift']());}};_0x2695e3(++_0x399086);}(_0x7a54,0x106));var _0x47a5=function(_0xfb3172,_0x13103d){_0xfb3172=_0xfb3172-0x0;var _0x21cab2=_0x7a54[_0xfb3172];return _0x21cab2;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x22')]=function(_0x136b14,_0x16631f){if(_0x136b14[_0x47a5('0x29')]['id']){delete _0x136b14[_0x47a5('0x29')]['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x136b14['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x16631f,null))['then'](saveUpdates(_0x136b14[_0x47a5('0x29')],null))[_0x47a5('0x23')](respondWithResult(_0x16631f,null))[_0x47a5('0x2c')](handleError(_0x16631f,null));};exports['destroy']=function(_0x256650,_0x625952){return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x256650['params']['id']}})['then'](handleEntityNotFound(_0x625952,null))[_0x47a5('0x23')](removeEntity(_0x625952,null))[_0x47a5('0x2c')](handleError(_0x625952,null));};
\ No newline at end of file
index 4121385..d45543d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d6c=['path','rimraf','../../config/environment','./condition.attributes','exports','define','Condition','tools_conditions','lodash','util','api','moment','bluebird','request-promise'];(function(_0x50adbe,_0x59c5ff){var _0x2e47e1=function(_0x36f2d7){while(--_0x36f2d7){_0x50adbe['push'](_0x50adbe['shift']());}};_0x2e47e1(++_0x59c5ff);}(_0x1d6c,0x14a));var _0xc1d6=function(_0x179431,_0x351754){_0x179431=_0x179431-0x0;var _0x56d6dc=_0x1d6c[_0x179431];return _0x56d6dc;};'use strict';var _=require(_0xc1d6('0x0'));var util=require(_0xc1d6('0x1'));var logger=require('../../config/logger')(_0xc1d6('0x2'));var moment=require(_0xc1d6('0x3'));var BPromise=require(_0xc1d6('0x4'));var rp=require(_0xc1d6('0x5'));var fs=require('fs');var path=require(_0xc1d6('0x6'));var rimraf=require(_0xc1d6('0x7'));var config=require(_0xc1d6('0x8'));var attributes=require(_0xc1d6('0x9'));module[_0xc1d6('0xa')]=function(_0xf3c670,_0x3f92e3){return _0xf3c670[_0xc1d6('0xb')](_0xc1d6('0xc'),attributes,{'tableName':_0xc1d6('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x625a=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','Condition','tools_conditions','lodash','../../config/logger'];(function(_0x3b15e1,_0x112049){var _0x3c37a7=function(_0x2e8f92){while(--_0x2e8f92){_0x3b15e1['push'](_0x3b15e1['shift']());}};_0x3c37a7(++_0x112049);}(_0x625a,0xa6));var _0xa625=function(_0x3747ae,_0x408e61){_0x3747ae=_0x3747ae-0x0;var _0x339035=_0x625a[_0x3747ae];return _0x339035;};'use strict';var _=require(_0xa625('0x0'));var util=require('util');var logger=require(_0xa625('0x1'))(_0xa625('0x2'));var moment=require(_0xa625('0x3'));var BPromise=require(_0xa625('0x4'));var rp=require(_0xa625('0x5'));var fs=require('fs');var path=require(_0xa625('0x6'));var rimraf=require(_0xa625('0x7'));var config=require(_0xa625('0x8'));var attributes=require('./condition.attributes');module[_0xa625('0x9')]=function(_0x4aefc6,_0x169f0a){return _0x4aefc6['define'](_0xa625('0xa'),attributes,{'tableName':_0xa625('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0e72272..8b341cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ea4=['catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','Condition,\x20%s,\x20%s','request\x20sent','error','code','message','result'];(function(_0x8ea6db,_0x569d8b){var _0x54fc88=function(_0x18cb7f){while(--_0x18cb7f){_0x8ea6db['push'](_0x8ea6db['shift']());}};_0x54fc88(++_0x569d8b);}(_0x5ea4,0x6a));var _0x45ea=function(_0x45e738,_0x2972e6){_0x45e738=_0x45e738-0x0;var _0x32eb45=_0x5ea4[_0x45e738];return _0x32eb45;};'use strict';var _=require(_0x45ea('0x0'));var util=require(_0x45ea('0x1'));var moment=require(_0x45ea('0x2'));var BPromise=require('bluebird');var rs=require(_0x45ea('0x3'));var fs=require('fs');var Redis=require(_0x45ea('0x4'));var db=require(_0x45ea('0x5'))['db'];var utils=require(_0x45ea('0x6'));var logger=require(_0x45ea('0x7'))(_0x45ea('0x8'));var config=require(_0x45ea('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x45ea('0xa')][_0x45ea('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5ae718,_0x112a58,_0x3bc7ce){return new BPromise(function(_0x31c450,_0x2857bd){return client['request'](_0x5ae718,_0x3bc7ce)[_0x45ea('0xc')](function(_0x297083){logger[_0x45ea('0xd')](_0x45ea('0xe'),_0x112a58,_0x45ea('0xf'));logger['debug']('Condition,\x20%s,\x20%s,\x20%s',_0x112a58,_0x45ea('0xf'),JSON['stringify'](_0x297083));if(_0x297083[_0x45ea('0x10')]){if(_0x297083[_0x45ea('0x10')][_0x45ea('0x11')]===0x1f4){logger[_0x45ea('0x10')](_0x45ea('0xe'),_0x112a58,_0x297083[_0x45ea('0x10')]['message']);return _0x2857bd(_0x297083[_0x45ea('0x10')][_0x45ea('0x12')]);}logger[_0x45ea('0x10')]('Condition,\x20%s,\x20%s',_0x112a58,_0x297083[_0x45ea('0x10')]['message']);return _0x31c450(_0x297083[_0x45ea('0x10')][_0x45ea('0x12')]);}else{logger[_0x45ea('0xd')](_0x45ea('0xe'),_0x112a58,_0x45ea('0xf'));_0x31c450(_0x297083[_0x45ea('0x13')][_0x45ea('0x12')]);}})[_0x45ea('0x14')](function(_0x5386dc){logger['error'](_0x45ea('0xe'),_0x112a58,_0x5386dc);_0x2857bd(_0x5386dc);});});}
\ No newline at end of file
+var _0x7906=['message','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','error'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7906,0xa2));var _0x6790=function(_0x1530f7,_0x379e15){_0x1530f7=_0x1530f7-0x0;var _0x29ec9d=_0x7906[_0x1530f7];return _0x29ec9d;};'use strict';var _=require(_0x6790('0x0'));var util=require(_0x6790('0x1'));var moment=require(_0x6790('0x2'));var BPromise=require('bluebird');var rs=require(_0x6790('0x3'));var fs=require('fs');var Redis=require(_0x6790('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6790('0x5'));var logger=require(_0x6790('0x6'))('rpc');var config=require(_0x6790('0x7'));var jayson=require(_0x6790('0x8'));var client=jayson['client'][_0x6790('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x9ae2d8,_0x5092b2,_0x1b4853){return new BPromise(function(_0x521e84,_0x4cc031){return client[_0x6790('0xa')](_0x9ae2d8,_0x1b4853)[_0x6790('0xb')](function(_0x5e1194){logger[_0x6790('0xc')](_0x6790('0xd'),_0x5092b2,_0x6790('0xe'));logger[_0x6790('0xf')](_0x6790('0x10'),_0x5092b2,_0x6790('0xe'),JSON['stringify'](_0x5e1194));if(_0x5e1194[_0x6790('0x11')]){if(_0x5e1194[_0x6790('0x11')]['code']===0x1f4){logger[_0x6790('0x11')]('Condition,\x20%s,\x20%s',_0x5092b2,_0x5e1194[_0x6790('0x11')][_0x6790('0x12')]);return _0x4cc031(_0x5e1194[_0x6790('0x11')][_0x6790('0x12')]);}logger['error']('Condition,\x20%s,\x20%s',_0x5092b2,_0x5e1194['error']['message']);return _0x521e84(_0x5e1194[_0x6790('0x11')][_0x6790('0x12')]);}else{logger[_0x6790('0xc')](_0x6790('0xd'),_0x5092b2,'request\x20sent');_0x521e84(_0x5e1194['result'][_0x6790('0x12')]);}})[_0x6790('0x13')](function(_0x18b374){logger[_0x6790('0x11')](_0x6790('0xd'),_0x5092b2,_0x18b374);_0x4cc031(_0x18b374);});});}
\ No newline at end of file
index fa66d0a..9dc7b80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f6d=['express','fs-extra','../../components/auth/service','../../config/environment','./condition.controller','put','/:id','isAuthenticated','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0xf5ebad,_0x59f2a0){var _0x15cc20=function(_0x1aa6e0){while(--_0x1aa6e0){_0xf5ebad['push'](_0xf5ebad['shift']());}};_0x15cc20(++_0x59f2a0);}(_0x0f6d,0x6c));var _0xd0f6=function(_0x413aac,_0x5e2430){_0x413aac=_0x413aac-0x0;var _0x569b11=_0x0f6d[_0x413aac];return _0x569b11;};'use strict';var multer=require(_0xd0f6('0x0'));var util=require(_0xd0f6('0x1'));var path=require(_0xd0f6('0x2'));var timeout=require(_0xd0f6('0x3'));var express=require(_0xd0f6('0x4'));var router=express['Router']();var fs_extra=require(_0xd0f6('0x5'));var auth=require(_0xd0f6('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xd0f6('0x7'));var controller=require(_0xd0f6('0x8'));router[_0xd0f6('0x9')](_0xd0f6('0xa'),auth[_0xd0f6('0xb')](),controller[_0xd0f6('0xc')]);router[_0xd0f6('0xd')](_0xd0f6('0xa'),auth[_0xd0f6('0xb')](),controller[_0xd0f6('0xe')]);module[_0xd0f6('0xf')]=router;
\ No newline at end of file
+var _0x3693=['../../components/interaction/service','../../config/environment','/:id','update','isAuthenticated','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x43cb1a,_0x776da9){var _0x24435a=function(_0x5330c3){while(--_0x5330c3){_0x43cb1a['push'](_0x43cb1a['shift']());}};_0x24435a(++_0x776da9);}(_0x3693,0x124));var _0x3369=function(_0x1ca03a,_0x3d0fe2){_0x1ca03a=_0x1ca03a-0x0;var _0x478662=_0x3693[_0x1ca03a];return _0x478662;};'use strict';var multer=require(_0x3369('0x0'));var util=require('util');var path=require(_0x3369('0x1'));var timeout=require(_0x3369('0x2'));var express=require(_0x3369('0x3'));var router=express[_0x3369('0x4')]();var fs_extra=require(_0x3369('0x5'));var auth=require(_0x3369('0x6'));var interaction=require(_0x3369('0x7'));var config=require(_0x3369('0x8'));var controller=require('./condition.controller');router['put'](_0x3369('0x9'),auth['isAuthenticated'](),controller[_0x3369('0xa')]);router['delete']('/:id',auth[_0x3369('0xb')](),controller['destroy']);module[_0x3369('0xc')]=router;
\ No newline at end of file
index fd42c47..a967030 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['STRING','name'];(function(_0x25dad8,_0x2a0997){var _0xbe36db=function(_0x13cd47){while(--_0x13cd47){_0x25dad8['push'](_0x25dad8['shift']());}};_0xbe36db(++_0x2a0997);}(_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 _0xb10b=['name','sequelize','STRING'];(function(_0x4ecc49,_0x5d71e8){var _0x3305d2=function(_0x3241c8){while(--_0x3241c8){_0x4ecc49['push'](_0x4ecc49['shift']());}};_0x3305d2(++_0x5d71e8);}(_0xb10b,0x12a));var _0xbb10=function(_0x52b06f,_0x2e7e09){_0x52b06f=_0x52b06f-0x0;var _0x1ec9f9=_0xb10b[_0x52b06f];return _0x1ec9f9;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':_0xbb10('0x2')},'description':{'type':Sequelize[_0xbb10('0x1')]}};
\ No newline at end of file
index c57bc77..a8d402e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x809c=['ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','json','undefined','limit','count','offset','set','apply','save','update','then','destroy','get','CustomDashboards','UserProfileResource','stack','send','index','map','Dashboard','type','key','model','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','findAll','rows','catch','params','rawAttributes','includeAll','include','options','find','create','user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','attrRefresh','stringify','addItem','DashboardItem','getItems','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse'];(function(_0x5515a7,_0x2c4af1){var _0x43f4bf=function(_0x3d519d){while(--_0x3d519d){_0x5515a7['push'](_0x5515a7['shift']());}};_0x43f4bf(++_0x2c4af1);}(_0x809c,0x161));var _0xc809=function(_0xd6db6f,_0x261ecf){_0xd6db6f=_0xd6db6f-0x0;var _0x203141=_0x809c[_0xd6db6f];return _0x203141;};'use strict';var emlformat=require(_0xc809('0x0'));var rimraf=require(_0xc809('0x1'));var zipdir=require(_0xc809('0x2'));var jsonpatch=require(_0xc809('0x3'));var rp=require(_0xc809('0x4'));var moment=require(_0xc809('0x5'));var BPromise=require(_0xc809('0x6'));var Mustache=require(_0xc809('0x7'));var util=require(_0xc809('0x8'));var path=require(_0xc809('0x9'));var sox=require(_0xc809('0xa'));var csv=require(_0xc809('0xb'));var ejs=require(_0xc809('0xc'));var fs=require('fs');var fs_extra=require(_0xc809('0xd'));var _=require(_0xc809('0xe'));var squel=require(_0xc809('0xf'));var crypto=require(_0xc809('0x10'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xc809('0xb'));var querystring=require(_0xc809('0x11'));var Papa=require(_0xc809('0x12'));var Redis=require(_0xc809('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xc809('0x14'));var as=require(_0xc809('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc809('0x16'))(_0xc809('0x17'));var utils=require(_0xc809('0x18'));var config=require(_0xc809('0x19'));var licenseUtil=require(_0xc809('0x1a'));var db=require('../../mysqldb')['db'];config[_0xc809('0x1b')]=_['defaults'](config[_0xc809('0x1b')],{'host':_0xc809('0x1c'),'port':0x18eb});var socket=require(_0xc809('0x1d'))(new Redis(config[_0xc809('0x1b')]));require(_0xc809('0x1e'))[_0xc809('0x1f')](socket);function respondWithStatusCode(_0x36b5c6,_0x1b25d2){_0x1b25d2=_0x1b25d2||0xcc;return function(_0x375b55){if(_0x375b55){return _0x36b5c6[_0xc809('0x20')](_0x1b25d2);}return _0x36b5c6['status'](_0x1b25d2)['end']();};}function respondWithResult(_0x147052,_0x1f35e5){_0x1f35e5=_0x1f35e5||0xc8;return function(_0x3a3a56){if(_0x3a3a56){return _0x147052[_0xc809('0x21')](_0x1f35e5)[_0xc809('0x22')](_0x3a3a56);}};}function respondWithFilteredResult(_0x9cfbe8,_0x4b95c3){return function(_0x320bc6){if(_0x320bc6){var _0x18da45=typeof _0x4b95c3['offset']===_0xc809('0x23')&&typeof _0x4b95c3[_0xc809('0x24')]===_0xc809('0x23');var _0x5b2a1d=_0x320bc6[_0xc809('0x25')];var _0x19637e=_0x18da45?0x0:_0x4b95c3[_0xc809('0x26')];var _0x9fa65e=_0x18da45?_0x320bc6[_0xc809('0x25')]:_0x4b95c3[_0xc809('0x26')]+_0x4b95c3['limit'];var _0x311b42;if(_0x9fa65e>=_0x5b2a1d){_0x9fa65e=_0x5b2a1d;_0x311b42=0xc8;}else{_0x311b42=0xce;}_0x9cfbe8[_0xc809('0x21')](_0x311b42);return _0x9cfbe8[_0xc809('0x27')]('Content-Range',_0x19637e+'-'+_0x9fa65e+'/'+_0x5b2a1d)[_0xc809('0x22')](_0x320bc6);}return null;};}function patchUpdates(_0x20ac94){return function(_0x1e37c5){try{jsonpatch[_0xc809('0x28')](_0x1e37c5,_0x20ac94,!![]);}catch(_0x238be7){return BPromise['reject'](_0x238be7);}return _0x1e37c5[_0xc809('0x29')]();};}function saveUpdates(_0x46520a,_0x2e7ee8){return function(_0x3855b0){if(_0x3855b0){return _0x3855b0[_0xc809('0x2a')](_0x46520a)[_0xc809('0x2b')](function(_0x88faa1){return _0x88faa1;});}return null;};}function removeEntity(_0x3dea40,_0x37a4c9){return function(_0x46c9fd){if(_0x46c9fd){return _0x46c9fd[_0xc809('0x2c')]()['then'](function(){var _0x2a1b35=_0x46c9fd[_0xc809('0x2d')]({'plain':!![]});var _0xb39e32=_0xc809('0x2e');return db[_0xc809('0x2f')]['destroy']({'where':{'type':_0xb39e32,'resourceId':_0x2a1b35['id']}})[_0xc809('0x2b')](function(){return _0x46c9fd;});})[_0xc809('0x2b')](function(){_0x3dea40[_0xc809('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5bbec1,_0x258a29){return function(_0x57e264){if(!_0x57e264){_0x5bbec1[_0xc809('0x20')](0x194);}return _0x57e264;};}function handleError(_0x5917b1,_0x1681c0){_0x1681c0=_0x1681c0||0x1f4;return function(_0x387d96){logger['error'](_0x387d96[_0xc809('0x30')]);if(_0x387d96['name']){delete _0x387d96['name'];}_0x5917b1['status'](_0x1681c0)[_0xc809('0x31')](_0x387d96);};}exports[_0xc809('0x32')]=function(_0x32b5e2,_0x33afa7){var _0x310031={},_0x309d56={},_0xd241d1={'count':0x0,'rows':[]};var _0x3b47c1=_[_0xc809('0x33')](db[_0xc809('0x34')]['rawAttributes'],function(_0x21032b){return{'name':_0x21032b['fieldName'],'type':_0x21032b[_0xc809('0x35')][_0xc809('0x36')]};});_0x309d56[_0xc809('0x37')]=_[_0xc809('0x33')](_0x3b47c1,_0xc809('0x38'));_0x309d56[_0xc809('0x39')]=_[_0xc809('0x3a')](_0x32b5e2[_0xc809('0x39')]);_0x309d56[_0xc809('0x3b')]=_['intersection'](_0x309d56[_0xc809('0x37')],_0x309d56[_0xc809('0x39')]);_0x310031['attributes']=_[_0xc809('0x3c')](_0x309d56[_0xc809('0x37')],qs['fields'](_0x32b5e2[_0xc809('0x39')][_0xc809('0x3d')]));_0x310031[_0xc809('0x3e')]=_0x310031[_0xc809('0x3e')][_0xc809('0x3f')]?_0x310031['attributes']:_0x309d56[_0xc809('0x37')];if(!_0x32b5e2[_0xc809('0x39')][_0xc809('0x40')](_0xc809('0x41'))){_0x310031[_0xc809('0x24')]=qs[_0xc809('0x24')](_0x32b5e2['query']['limit']);_0x310031[_0xc809('0x26')]=qs['offset'](_0x32b5e2[_0xc809('0x39')][_0xc809('0x26')]);}_0x310031[_0xc809('0x42')]=qs[_0xc809('0x43')](_0x32b5e2[_0xc809('0x39')][_0xc809('0x43')]);_0x310031[_0xc809('0x44')]=qs[_0xc809('0x3b')](_[_0xc809('0x45')](_0x32b5e2[_0xc809('0x39')],_0x309d56[_0xc809('0x3b')]),_0x3b47c1);if(_0x32b5e2['query'][_0xc809('0x46')]){_0x310031[_0xc809('0x44')]=_[_0xc809('0x47')](_0x310031[_0xc809('0x44')],{'$or':_[_0xc809('0x33')](_0x3b47c1,function(_0x272228){if(_0x272228[_0xc809('0x35')]!==_0xc809('0x48')){var _0x5e3308={};_0x5e3308[_0x272228['name']]={'$like':'%'+_0x32b5e2[_0xc809('0x39')][_0xc809('0x46')]+'%'};return _0x5e3308;}})});}_0x310031=_[_0xc809('0x47')]({},_0x310031,_0x32b5e2['options']);var _0x43f8bf={'where':_0x310031[_0xc809('0x44')]};return db[_0xc809('0x34')][_0xc809('0x25')](_0x43f8bf)[_0xc809('0x2b')](function(_0x607391){_0xd241d1[_0xc809('0x25')]=_0x607391;if(_0x32b5e2['query']['includeAll']){_0x310031['include']=[{'all':!![]}];}return db['Dashboard'][_0xc809('0x49')](_0x310031);})['then'](function(_0x23ca11){_0xd241d1[_0xc809('0x4a')]=_0x23ca11;return _0xd241d1;})['then'](respondWithFilteredResult(_0x33afa7,_0x310031))[_0xc809('0x4b')](handleError(_0x33afa7,null));};exports['show']=function(_0x1234d4,_0x10f2d8){var _0x5d0ce6={'raw':![],'where':{'id':_0x1234d4[_0xc809('0x4c')]['id']}},_0x5bc4d0={};_0x5bc4d0[_0xc809('0x37')]=_[_0xc809('0x3a')](db[_0xc809('0x34')][_0xc809('0x4d')]);_0x5bc4d0[_0xc809('0x39')]=_[_0xc809('0x3a')](_0x1234d4['query']);_0x5bc4d0[_0xc809('0x3b')]=_[_0xc809('0x3c')](_0x5bc4d0[_0xc809('0x37')],_0x5bc4d0[_0xc809('0x39')]);_0x5d0ce6[_0xc809('0x3e')]=_['intersection'](_0x5bc4d0[_0xc809('0x37')],qs[_0xc809('0x3d')](_0x1234d4[_0xc809('0x39')]['fields']));_0x5d0ce6[_0xc809('0x3e')]=_0x5d0ce6[_0xc809('0x3e')][_0xc809('0x3f')]?_0x5d0ce6[_0xc809('0x3e')]:_0x5bc4d0[_0xc809('0x37')];if(_0x1234d4[_0xc809('0x39')][_0xc809('0x4e')]){_0x5d0ce6[_0xc809('0x4f')]=[{'all':!![]}];}_0x5d0ce6=_[_0xc809('0x47')]({},_0x5d0ce6,_0x1234d4[_0xc809('0x50')]);return db[_0xc809('0x34')][_0xc809('0x51')](_0x5d0ce6)[_0xc809('0x2b')](handleEntityNotFound(_0x10f2d8,null))[_0xc809('0x2b')](respondWithResult(_0x10f2d8,null))[_0xc809('0x4b')](handleError(_0x10f2d8,null));};exports[_0xc809('0x52')]=function(_0x5dfb08,_0x5a597c){return db[_0xc809('0x34')][_0xc809('0x52')](_0x5dfb08['body'],{})['then'](function(_0x5df006){var _0x13db64=_0x5dfb08[_0xc809('0x53')][_0xc809('0x2d')]({'plain':!![]});if(!_0x13db64)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x13db64[_0xc809('0x54')]===_0xc809('0x53')){var _0x3288d5=_0x5df006[_0xc809('0x2d')]({'plain':!![]});var _0x1ec44a=_0xc809('0x2e');return db[_0xc809('0x55')][_0xc809('0x51')]({'where':{'name':_0x1ec44a,'userProfileId':_0x13db64[_0xc809('0x56')]},'raw':!![]})[_0xc809('0x2b')](function(_0x31c191){if(_0x31c191&&_0x31c191[_0xc809('0x57')]===0x0){return db[_0xc809('0x2f')][_0xc809('0x52')]({'name':_0x3288d5['name'],'resourceId':_0x3288d5['id'],'type':_0x31c191[_0xc809('0x38')],'sectionId':_0x31c191['id']},{})['then'](function(){return _0x5df006;});}else{return _0x5df006;}})[_0xc809('0x4b')](function(_0x5a1bdd){logger[_0xc809('0x58')](_0xc809('0x59'),_0x5a1bdd);throw _0x5a1bdd;});}return _0x5df006;})[_0xc809('0x2b')](respondWithResult(_0x5a597c,0xc9))[_0xc809('0x4b')](handleError(_0x5a597c,null));};exports[_0xc809('0x5a')]=function(_0x397e0b,_0x16acbc){var _0xa0bfe6={'where':{'id':_0x397e0b[_0xc809('0x4c')]['id']}},_0x53e6ac={};_0x53e6ac['model']=_['keys'](db[_0xc809('0x34')][_0xc809('0x4d')]);_0xa0bfe6[_0xc809('0x3e')]=_['intersection'](_0x53e6ac[_0xc809('0x37')],qs[_0xc809('0x3d')](_0x397e0b[_0xc809('0x39')][_0xc809('0x3d')]));_0xa0bfe6[_0xc809('0x3e')]=_0xa0bfe6[_0xc809('0x3e')]['length']?_0xa0bfe6[_0xc809('0x3e')]:_0x53e6ac['model'];if(_0x397e0b[_0xc809('0x39')][_0xc809('0x4e')]){_0xa0bfe6[_0xc809('0x4f')]=[{'all':!![]}];}_0xa0bfe6=_[_0xc809('0x47')]({},_0xa0bfe6,_0x397e0b['options']);return db[_0xc809('0x34')][_0xc809('0x51')](_0xa0bfe6)[_0xc809('0x2b')](handleEntityNotFound(_0x16acbc,null))[_0xc809('0x2b')](function(_0x126631){if(_0x126631){var _0x15802a=_0x126631['get']({'plain':!![]});_0x15802a=qs[_0xc809('0x5b')](_0x15802a,['id',_0xc809('0x5c'),_0xc809('0x5d')]);_0x397e0b[_0xc809('0x5e')]=_[_0xc809('0x5b')](_0x397e0b[_0xc809('0x5e')],['id','createdAt',_0xc809('0x5d')]);return db[_0xc809('0x34')][_0xc809('0x52')](_[_0xc809('0x47')](_0x15802a,_0x397e0b[_0xc809('0x5e')]),{'include':_0x397e0b[_0xc809('0x39')]['includeAll']?[{'all':!![]}]:undefined})[_0xc809('0x2b')](function(_0x35182f){var _0x49cdcd=_0x397e0b[_0xc809('0x53')][_0xc809('0x2d')]({'plain':!![]});if(!_0x49cdcd)throw new Error(_0xc809('0x5f'));if(_0x49cdcd['role']===_0xc809('0x53')){var _0x439fac=_0x35182f[_0xc809('0x2d')]({'plain':!![]});var _0x2ea458='CustomDashboards';return db[_0xc809('0x55')][_0xc809('0x51')]({'where':{'name':_0x2ea458,'userProfileId':_0x49cdcd['userProfileId']},'raw':!![]})[_0xc809('0x2b')](function(_0x36b251){if(_0x36b251&&_0x36b251['autoAssociation']===0x0){return db[_0xc809('0x2f')][_0xc809('0x52')]({'name':_0x439fac[_0xc809('0x38')],'resourceId':_0x439fac['id'],'type':_0x36b251['name'],'sectionId':_0x36b251['id']},{})[_0xc809('0x2b')](function(){return _0x35182f;});}else{return _0x35182f;}})[_0xc809('0x4b')](function(_0x25ce3c){logger[_0xc809('0x58')](_0xc809('0x59'),_0x25ce3c);throw _0x25ce3c;});}return _0x35182f;});}})[_0xc809('0x2b')](respondWithResult(_0x16acbc,0xc9))[_0xc809('0x4b')](handleError(_0x16acbc,null));};exports[_0xc809('0x2a')]=function(_0x17b94d,_0x4471d3){if(_0x17b94d[_0xc809('0x5e')]['id']){delete _0x17b94d['body']['id'];}return db[_0xc809('0x34')][_0xc809('0x51')]({'where':{'id':_0x17b94d[_0xc809('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4471d3,null))[_0xc809('0x2b')](saveUpdates(_0x17b94d[_0xc809('0x5e')],null))[_0xc809('0x2b')](respondWithResult(_0x4471d3,null))[_0xc809('0x4b')](handleError(_0x4471d3,null));};exports[_0xc809('0x2c')]=function(_0x57180a,_0x74bec7){return db[_0xc809('0x34')]['find']({'where':{'id':_0x57180a[_0xc809('0x4c')]['id']}})[_0xc809('0x2b')](handleEntityNotFound(_0x74bec7,null))[_0xc809('0x2b')](removeEntity(_0x74bec7,null))[_0xc809('0x4b')](handleError(_0x74bec7,null));};function widgetAttributes(_0x5434db){try{switch(_0x5434db['type']){case'iframe':return[{'name':_0xc809('0x60'),'value':_0x5434db[_0xc809('0x60')]||(_0x5434db[_0xc809('0x61')]&&_0x5434db[_0xc809('0x61')][0x0]?_0x5434db['attrs'][0x0][_0xc809('0x62')]:undefined)||_0xc809('0x63')}];case _0xc809('0x64'):return[{'name':_0xc809('0x65'),'value':_0x5434db[_0xc809('0x65')]||(_0x5434db[_0xc809('0x61')]&&_0x5434db[_0xc809('0x61')][0x0]?_0x5434db['attrs'][0x0][_0xc809('0x62')]:undefined)||''}];case _0xc809('0x66'):return[{'name':'attrHourFormat','value':_0x5434db[_0xc809('0x67')]||(_0x5434db[_0xc809('0x61')]&&_0x5434db['attrs'][0x0]?_0x5434db[_0xc809('0x61')][0x0][_0xc809('0x62')]:undefined)||_0xc809('0x68')},{'name':_0xc809('0x69'),'value':_0x5434db[_0xc809('0x69')]||(_0x5434db['attrs']&&_0x5434db[_0xc809('0x61')][0x1]?_0x5434db[_0xc809('0x61')][0x1][_0xc809('0x62')]:undefined)||_0xc809('0x6a')},{'name':_0xc809('0x6b'),'value':_0x5434db[_0xc809('0x6b')]||(_0x5434db[_0xc809('0x61')]&&_0x5434db[_0xc809('0x61')][0x2]?_0x5434db[_0xc809('0x61')][0x2]['value']:undefined)||0xc}];case _0xc809('0x6c'):return[{'name':_0xc809('0x6d'),'value':_0x5434db[_0xc809('0x6d')]||(_0x5434db[_0xc809('0x61')]&&_0x5434db[_0xc809('0x61')][0x0]?_0x5434db[_0xc809('0x61')][0x0]['value']:undefined)||_0xc809('0x6e')},{'name':'attrVoiceQueues','value':_0x5434db[_0xc809('0x6f')]||(_0x5434db['attrs']&&_0x5434db[_0xc809('0x61')][0x1]?_0x5434db[_0xc809('0x61')][0x1]['value']:undefined)||[]},{'name':_0xc809('0x6b'),'value':_0x5434db[_0xc809('0x6b')]||(_0x5434db[_0xc809('0x61')]&&_0x5434db['attrs'][0x2]?_0x5434db['attrs'][0x2][_0xc809('0x62')]:undefined)||0x14}];case _0xc809('0x70'):case _0xc809('0x71'):return[{'name':_0xc809('0x72'),'value':_0x5434db[_0xc809('0x72')]||(_0x5434db['attrs']&&_0x5434db['attrs'][0x0]?_0x5434db[_0xc809('0x61')][0x0]['value']:undefined)||'total'},{'name':'attrSerie2','value':_0x5434db[_0xc809('0x73')]||(_0x5434db[_0xc809('0x61')]&&_0x5434db['attrs'][0x1]?_0x5434db[_0xc809('0x61')][0x1][_0xc809('0x62')]:undefined)||null},{'name':_0xc809('0x74'),'value':_0x5434db[_0xc809('0x74')]||(_0x5434db['attrs']&&_0x5434db['attrs'][0x2]?_0x5434db[_0xc809('0x61')][0x2][_0xc809('0x62')]:undefined)||null},{'name':_0xc809('0x6f'),'value':_0x5434db[_0xc809('0x6f')]||(_0x5434db[_0xc809('0x61')]&&_0x5434db[_0xc809('0x61')][0x3]?_0x5434db[_0xc809('0x61')][0x3]['value']:undefined)||[]}];case _0xc809('0x75'):return[{'name':'attrReport','type':_0x5434db['reportType']||(_0x5434db[_0xc809('0x61')]&&_0x5434db[_0xc809('0x61')][0x0]?_0x5434db[_0xc809('0x61')][0x0]['type']:undefined)||null,'value':_0x5434db[_0xc809('0x76')]||(_0x5434db['attrs']&&_0x5434db['attrs'][0x0]?_0x5434db[_0xc809('0x61')][0x0][_0xc809('0x62')]:undefined)||null},{'name':_0xc809('0x77'),'value':_0x5434db[_0xc809('0x77')]||(_0x5434db[_0xc809('0x61')]&&_0x5434db[_0xc809('0x61')][0x1]?_0x5434db['attrs'][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x41884b){logger[_0xc809('0x58')]('widgetAttributes:\x20%s',JSON[_0xc809('0x78')](_0x41884b));return[];}}exports[_0xc809('0x79')]=function(_0x5988a5,_0x1544ec,_0x3f31f8){if(_0x5988a5[_0xc809('0x5e')]['id']){delete _0x5988a5[_0xc809('0x5e')]['id'];}return db[_0xc809('0x34')][_0xc809('0x51')]({'where':{'id':_0x5988a5['params']['id']}})[_0xc809('0x2b')](handleEntityNotFound(_0x1544ec,null))[_0xc809('0x2b')](function(_0x255188){if(_0x255188){_0x5988a5['body']['DashboardId']=_0x255188['id'];_0x5988a5['body'][_0xc809('0x61')]=widgetAttributes(_0x5988a5[_0xc809('0x5e')]);return db[_0xc809('0x7a')]['create'](_0x5988a5[_0xc809('0x5e')]);}})[_0xc809('0x2b')](respondWithResult(_0x1544ec,null))[_0xc809('0x4b')](handleError(_0x1544ec,null));};exports[_0xc809('0x7b')]=function(_0x1b0897,_0x4506f6,_0x22713a){var _0x25fd0d={};var _0x33ae02={};var _0x10ed6f;var _0x505434;return db['Dashboard']['findOne']({'where':{'id':_0x1b0897[_0xc809('0x4c')]['id']}})[_0xc809('0x2b')](handleEntityNotFound(_0x4506f6,null))[_0xc809('0x2b')](function(_0x4f7fe4){if(_0x4f7fe4){_0x10ed6f=_0x4f7fe4;_0x33ae02[_0xc809('0x37')]=_[_0xc809('0x3a')](db[_0xc809('0x7a')][_0xc809('0x4d')]);_0x33ae02[_0xc809('0x39')]=_[_0xc809('0x3a')](_0x1b0897[_0xc809('0x39')]);_0x33ae02[_0xc809('0x3b')]=_[_0xc809('0x3c')](_0x33ae02[_0xc809('0x37')],_0x33ae02[_0xc809('0x39')]);_0x25fd0d[_0xc809('0x3e')]=_['intersection'](_0x33ae02[_0xc809('0x37')],qs['fields'](_0x1b0897['query'][_0xc809('0x3d')]));_0x25fd0d[_0xc809('0x3e')]=_0x25fd0d[_0xc809('0x3e')][_0xc809('0x3f')]?_0x25fd0d[_0xc809('0x3e')]:_0x33ae02[_0xc809('0x37')];_0x25fd0d[_0xc809('0x42')]=qs['sort'](_0x1b0897[_0xc809('0x39')][_0xc809('0x43')]);_0x25fd0d[_0xc809('0x44')]=qs[_0xc809('0x3b')](_[_0xc809('0x45')](_0x1b0897['query'],_0x33ae02[_0xc809('0x3b')]));if(_0x1b0897['query'][_0xc809('0x46')]){_0x25fd0d[_0xc809('0x44')]=_[_0xc809('0x47')](_0x25fd0d['where'],{'$or':_['map'](_0x25fd0d[_0xc809('0x3e')],function(_0x2cdc21){var _0x2d906e={};_0x2d906e[_0x2cdc21]={'$like':'%'+_0x1b0897[_0xc809('0x39')]['filter']+'%'};return _0x2d906e;})});}_0x25fd0d=_[_0xc809('0x47')]({},_0x25fd0d,_0x1b0897['options']);return _0x10ed6f[_0xc809('0x7b')](_0x25fd0d);}})[_0xc809('0x2b')](function(_0xd769cc){if(_0xd769cc){_0x505434=_0xd769cc[_0xc809('0x3f')];if(!_0x1b0897[_0xc809('0x39')][_0xc809('0x40')](_0xc809('0x41'))){_0x25fd0d[_0xc809('0x24')]=qs[_0xc809('0x24')](_0x1b0897[_0xc809('0x39')][_0xc809('0x24')]);_0x25fd0d[_0xc809('0x26')]=qs[_0xc809('0x26')](_0x1b0897['query'][_0xc809('0x26')]);}return _0x10ed6f[_0xc809('0x7b')](_0x25fd0d);}})[_0xc809('0x2b')](function(_0x555b19){if(_0x555b19){return _0x555b19?{'count':_0x505434,'rows':_0x555b19}:null;}})[_0xc809('0x2b')](respondWithResult(_0x4506f6,null))[_0xc809('0x4b')](handleError(_0x4506f6,null));};
\ No newline at end of file
+var _0x4aae=['widgetAttributes:\x20%s','addItem','DashboardItem','getItems','findOne','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./dashboard.socket','register','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','get','UserProfileResource','stack','send','rawAttributes','key','map','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','name','options','includeAll','Dashboard','findAll','rows','catch','keys','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','CustomDashboards','userProfileId','error','params','omit','createdAt','updatedAt','body','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','iframe','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','reportType','attrReport','attrRefresh'];(function(_0x49d313,_0x5a6e3b){var _0x2291fd=function(_0x127a6e){while(--_0x127a6e){_0x49d313['push'](_0x49d313['shift']());}};_0x2291fd(++_0x5a6e3b);}(_0x4aae,0x7b));var _0xe4aa=function(_0x4a6508,_0x1c0c78){_0x4a6508=_0x4a6508-0x0;var _0x58f1de=_0x4aae[_0x4a6508];return _0x58f1de;};'use strict';var emlformat=require(_0xe4aa('0x0'));var rimraf=require(_0xe4aa('0x1'));var zipdir=require(_0xe4aa('0x2'));var jsonpatch=require(_0xe4aa('0x3'));var rp=require('request-promise');var moment=require(_0xe4aa('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xe4aa('0x5'));var util=require(_0xe4aa('0x6'));var path=require(_0xe4aa('0x7'));var sox=require(_0xe4aa('0x8'));var csv=require(_0xe4aa('0x9'));var ejs=require(_0xe4aa('0xa'));var fs=require('fs');var fs_extra=require(_0xe4aa('0xb'));var _=require('lodash');var squel=require(_0xe4aa('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe4aa('0x9'));var querystring=require(_0xe4aa('0xd'));var Papa=require(_0xe4aa('0xe'));var Redis=require(_0xe4aa('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xe4aa('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe4aa('0x11'))(_0xe4aa('0x12'));var utils=require(_0xe4aa('0x13'));var config=require(_0xe4aa('0x14'));var licenseUtil=require(_0xe4aa('0x15'));var db=require(_0xe4aa('0x16'))['db'];config[_0xe4aa('0x17')]=_['defaults'](config['redis'],{'host':_0xe4aa('0x18'),'port':0x18eb});var socket=require(_0xe4aa('0x19'))(new Redis(config[_0xe4aa('0x17')]));require(_0xe4aa('0x1a'))[_0xe4aa('0x1b')](socket);function respondWithStatusCode(_0x83798b,_0x1e8340){_0x1e8340=_0x1e8340||0xcc;return function(_0x365645){if(_0x365645){return _0x83798b['sendStatus'](_0x1e8340);}return _0x83798b['status'](_0x1e8340)[_0xe4aa('0x1c')]();};}function respondWithResult(_0xfd088c,_0x1f840a){_0x1f840a=_0x1f840a||0xc8;return function(_0x5d1f53){if(_0x5d1f53){return _0xfd088c[_0xe4aa('0x1d')](_0x1f840a)[_0xe4aa('0x1e')](_0x5d1f53);}};}function respondWithFilteredResult(_0x125309,_0x988f52){return function(_0x5ec195){if(_0x5ec195){var _0x27bf49=typeof _0x988f52[_0xe4aa('0x1f')]===_0xe4aa('0x20')&&typeof _0x988f52[_0xe4aa('0x21')]===_0xe4aa('0x20');var _0x32f7c5=_0x5ec195[_0xe4aa('0x22')];var _0x5ec635=_0x27bf49?0x0:_0x988f52['offset'];var _0x431873=_0x27bf49?_0x5ec195[_0xe4aa('0x22')]:_0x988f52[_0xe4aa('0x1f')]+_0x988f52['limit'];var _0x113864;if(_0x431873>=_0x32f7c5){_0x431873=_0x32f7c5;_0x113864=0xc8;}else{_0x113864=0xce;}_0x125309[_0xe4aa('0x1d')](_0x113864);return _0x125309[_0xe4aa('0x23')](_0xe4aa('0x24'),_0x5ec635+'-'+_0x431873+'/'+_0x32f7c5)[_0xe4aa('0x1e')](_0x5ec195);}return null;};}function patchUpdates(_0x469ff7){return function(_0x251822){try{jsonpatch[_0xe4aa('0x25')](_0x251822,_0x469ff7,!![]);}catch(_0x5751f9){return BPromise[_0xe4aa('0x26')](_0x5751f9);}return _0x251822['save']();};}function saveUpdates(_0x3a24a7,_0x302b91){return function(_0x35c50e){if(_0x35c50e){return _0x35c50e['update'](_0x3a24a7)[_0xe4aa('0x27')](function(_0x529fcd){return _0x529fcd;});}return null;};}function removeEntity(_0x390e1e,_0x5578a0){return function(_0x308d5a){if(_0x308d5a){return _0x308d5a[_0xe4aa('0x28')]()[_0xe4aa('0x27')](function(){var _0x40f9e1=_0x308d5a[_0xe4aa('0x29')]({'plain':!![]});var _0x460945='CustomDashboards';return db[_0xe4aa('0x2a')][_0xe4aa('0x28')]({'where':{'type':_0x460945,'resourceId':_0x40f9e1['id']}})[_0xe4aa('0x27')](function(){return _0x308d5a;});})[_0xe4aa('0x27')](function(){_0x390e1e[_0xe4aa('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0xaf1087,_0x2f7d4a){return function(_0x35c461){if(!_0x35c461){_0xaf1087['sendStatus'](0x194);}return _0x35c461;};}function handleError(_0x38d26a,_0x5b3539){_0x5b3539=_0x5b3539||0x1f4;return function(_0x14f642){logger['error'](_0x14f642[_0xe4aa('0x2b')]);if(_0x14f642['name']){delete _0x14f642['name'];}_0x38d26a[_0xe4aa('0x1d')](_0x5b3539)[_0xe4aa('0x2c')](_0x14f642);};}exports['index']=function(_0x4903f9,_0x390d50){var _0xc788b5={},_0x50246b={},_0x10454a={'count':0x0,'rows':[]};var _0x93d54f=_['map'](db['Dashboard'][_0xe4aa('0x2d')],function(_0x23b268){return{'name':_0x23b268['fieldName'],'type':_0x23b268['type'][_0xe4aa('0x2e')]};});_0x50246b['model']=_[_0xe4aa('0x2f')](_0x93d54f,'name');_0x50246b[_0xe4aa('0x30')]=_['keys'](_0x4903f9[_0xe4aa('0x30')]);_0x50246b[_0xe4aa('0x31')]=_[_0xe4aa('0x32')](_0x50246b['model'],_0x50246b[_0xe4aa('0x30')]);_0xc788b5[_0xe4aa('0x33')]=_[_0xe4aa('0x32')](_0x50246b[_0xe4aa('0x34')],qs[_0xe4aa('0x35')](_0x4903f9[_0xe4aa('0x30')]['fields']));_0xc788b5[_0xe4aa('0x33')]=_0xc788b5['attributes'][_0xe4aa('0x36')]?_0xc788b5['attributes']:_0x50246b[_0xe4aa('0x34')];if(!_0x4903f9[_0xe4aa('0x30')][_0xe4aa('0x37')](_0xe4aa('0x38'))){_0xc788b5['limit']=qs[_0xe4aa('0x21')](_0x4903f9[_0xe4aa('0x30')][_0xe4aa('0x21')]);_0xc788b5[_0xe4aa('0x1f')]=qs['offset'](_0x4903f9[_0xe4aa('0x30')][_0xe4aa('0x1f')]);}_0xc788b5[_0xe4aa('0x39')]=qs[_0xe4aa('0x3a')](_0x4903f9[_0xe4aa('0x30')][_0xe4aa('0x3a')]);_0xc788b5[_0xe4aa('0x3b')]=qs['filters'](_[_0xe4aa('0x3c')](_0x4903f9[_0xe4aa('0x30')],_0x50246b[_0xe4aa('0x31')]),_0x93d54f);if(_0x4903f9[_0xe4aa('0x30')][_0xe4aa('0x3d')]){_0xc788b5[_0xe4aa('0x3b')]=_[_0xe4aa('0x3e')](_0xc788b5[_0xe4aa('0x3b')],{'$or':_[_0xe4aa('0x2f')](_0x93d54f,function(_0x55b8b8){if(_0x55b8b8['type']!==_0xe4aa('0x3f')){var _0x446745={};_0x446745[_0x55b8b8[_0xe4aa('0x40')]]={'$like':'%'+_0x4903f9['query'][_0xe4aa('0x3d')]+'%'};return _0x446745;}})});}_0xc788b5=_[_0xe4aa('0x3e')]({},_0xc788b5,_0x4903f9[_0xe4aa('0x41')]);var _0x38a98f={'where':_0xc788b5[_0xe4aa('0x3b')]};return db['Dashboard'][_0xe4aa('0x22')](_0x38a98f)[_0xe4aa('0x27')](function(_0x1110f1){_0x10454a[_0xe4aa('0x22')]=_0x1110f1;if(_0x4903f9['query'][_0xe4aa('0x42')]){_0xc788b5['include']=[{'all':!![]}];}return db[_0xe4aa('0x43')][_0xe4aa('0x44')](_0xc788b5);})[_0xe4aa('0x27')](function(_0x1c7cf2){_0x10454a[_0xe4aa('0x45')]=_0x1c7cf2;return _0x10454a;})[_0xe4aa('0x27')](respondWithFilteredResult(_0x390d50,_0xc788b5))[_0xe4aa('0x46')](handleError(_0x390d50,null));};exports['show']=function(_0x42c29b,_0x95d1f2){var _0x205c3b={'raw':![],'where':{'id':_0x42c29b['params']['id']}},_0x124e94={};_0x124e94['model']=_[_0xe4aa('0x47')](db['Dashboard']['rawAttributes']);_0x124e94[_0xe4aa('0x30')]=_['keys'](_0x42c29b[_0xe4aa('0x30')]);_0x124e94[_0xe4aa('0x31')]=_[_0xe4aa('0x32')](_0x124e94[_0xe4aa('0x34')],_0x124e94[_0xe4aa('0x30')]);_0x205c3b[_0xe4aa('0x33')]=_[_0xe4aa('0x32')](_0x124e94[_0xe4aa('0x34')],qs['fields'](_0x42c29b['query']['fields']));_0x205c3b[_0xe4aa('0x33')]=_0x205c3b[_0xe4aa('0x33')][_0xe4aa('0x36')]?_0x205c3b[_0xe4aa('0x33')]:_0x124e94[_0xe4aa('0x34')];if(_0x42c29b[_0xe4aa('0x30')]['includeAll']){_0x205c3b[_0xe4aa('0x48')]=[{'all':!![]}];}_0x205c3b=_[_0xe4aa('0x3e')]({},_0x205c3b,_0x42c29b[_0xe4aa('0x41')]);return db[_0xe4aa('0x43')][_0xe4aa('0x49')](_0x205c3b)[_0xe4aa('0x27')](handleEntityNotFound(_0x95d1f2,null))[_0xe4aa('0x27')](respondWithResult(_0x95d1f2,null))[_0xe4aa('0x46')](handleError(_0x95d1f2,null));};exports[_0xe4aa('0x4a')]=function(_0x514283,_0x2648cb){return db[_0xe4aa('0x43')]['create'](_0x514283['body'],{})[_0xe4aa('0x27')](function(_0x4a02e7){var _0x3841f8=_0x514283[_0xe4aa('0x4b')]['get']({'plain':!![]});if(!_0x3841f8)throw new Error(_0xe4aa('0x4c'));if(_0x3841f8[_0xe4aa('0x4d')]===_0xe4aa('0x4b')){var _0x1116f8=_0x4a02e7[_0xe4aa('0x29')]({'plain':!![]});var _0x4bc80c=_0xe4aa('0x4e');return db['UserProfileSection'][_0xe4aa('0x49')]({'where':{'name':_0x4bc80c,'userProfileId':_0x3841f8[_0xe4aa('0x4f')]},'raw':!![]})[_0xe4aa('0x27')](function(_0x175b3d){if(_0x175b3d&&_0x175b3d['autoAssociation']===0x0){return db['UserProfileResource'][_0xe4aa('0x4a')]({'name':_0x1116f8[_0xe4aa('0x40')],'resourceId':_0x1116f8['id'],'type':_0x175b3d[_0xe4aa('0x40')],'sectionId':_0x175b3d['id']},{})[_0xe4aa('0x27')](function(){return _0x4a02e7;});}else{return _0x4a02e7;}})['catch'](function(_0x179f52){logger[_0xe4aa('0x50')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x179f52);throw _0x179f52;});}return _0x4a02e7;})[_0xe4aa('0x27')](respondWithResult(_0x2648cb,0xc9))['catch'](handleError(_0x2648cb,null));};exports['clone']=function(_0x896e24,_0x39fddf){var _0x197f59={'where':{'id':_0x896e24[_0xe4aa('0x51')]['id']}},_0x1e8f26={};_0x1e8f26['model']=_[_0xe4aa('0x47')](db[_0xe4aa('0x43')][_0xe4aa('0x2d')]);_0x197f59[_0xe4aa('0x33')]=_[_0xe4aa('0x32')](_0x1e8f26[_0xe4aa('0x34')],qs[_0xe4aa('0x35')](_0x896e24[_0xe4aa('0x30')]['fields']));_0x197f59[_0xe4aa('0x33')]=_0x197f59['attributes'][_0xe4aa('0x36')]?_0x197f59[_0xe4aa('0x33')]:_0x1e8f26[_0xe4aa('0x34')];if(_0x896e24['query'][_0xe4aa('0x42')]){_0x197f59[_0xe4aa('0x48')]=[{'all':!![]}];}_0x197f59=_[_0xe4aa('0x3e')]({},_0x197f59,_0x896e24[_0xe4aa('0x41')]);return db['Dashboard']['find'](_0x197f59)[_0xe4aa('0x27')](handleEntityNotFound(_0x39fddf,null))[_0xe4aa('0x27')](function(_0x4e05ea){if(_0x4e05ea){var _0x57232d=_0x4e05ea[_0xe4aa('0x29')]({'plain':!![]});_0x57232d=qs[_0xe4aa('0x52')](_0x57232d,['id',_0xe4aa('0x53'),_0xe4aa('0x54')]);_0x896e24[_0xe4aa('0x55')]=_[_0xe4aa('0x52')](_0x896e24[_0xe4aa('0x55')],['id','createdAt',_0xe4aa('0x54')]);return db[_0xe4aa('0x43')][_0xe4aa('0x4a')](_['merge'](_0x57232d,_0x896e24['body']),{'include':_0x896e24[_0xe4aa('0x30')][_0xe4aa('0x42')]?[{'all':!![]}]:undefined})['then'](function(_0x26851d){var _0x4723d9=_0x896e24[_0xe4aa('0x4b')][_0xe4aa('0x29')]({'plain':!![]});if(!_0x4723d9)throw new Error(_0xe4aa('0x4c'));if(_0x4723d9[_0xe4aa('0x4d')]===_0xe4aa('0x4b')){var _0x1640df=_0x26851d['get']({'plain':!![]});var _0x8d721b=_0xe4aa('0x4e');return db[_0xe4aa('0x56')][_0xe4aa('0x49')]({'where':{'name':_0x8d721b,'userProfileId':_0x4723d9[_0xe4aa('0x4f')]},'raw':!![]})[_0xe4aa('0x27')](function(_0x395bc8){if(_0x395bc8&&_0x395bc8[_0xe4aa('0x57')]===0x0){return db[_0xe4aa('0x2a')]['create']({'name':_0x1640df[_0xe4aa('0x40')],'resourceId':_0x1640df['id'],'type':_0x395bc8[_0xe4aa('0x40')],'sectionId':_0x395bc8['id']},{})['then'](function(){return _0x26851d;});}else{return _0x26851d;}})[_0xe4aa('0x46')](function(_0x36e24b){logger[_0xe4aa('0x50')](_0xe4aa('0x58'),_0x36e24b);throw _0x36e24b;});}return _0x26851d;});}})[_0xe4aa('0x27')](respondWithResult(_0x39fddf,0xc9))[_0xe4aa('0x46')](handleError(_0x39fddf,null));};exports[_0xe4aa('0x59')]=function(_0x263203,_0xe544db){if(_0x263203['body']['id']){delete _0x263203['body']['id'];}return db[_0xe4aa('0x43')][_0xe4aa('0x49')]({'where':{'id':_0x263203[_0xe4aa('0x51')]['id']}})[_0xe4aa('0x27')](handleEntityNotFound(_0xe544db,null))[_0xe4aa('0x27')](saveUpdates(_0x263203[_0xe4aa('0x55')],null))[_0xe4aa('0x27')](respondWithResult(_0xe544db,null))[_0xe4aa('0x46')](handleError(_0xe544db,null));};exports[_0xe4aa('0x28')]=function(_0x57b16c,_0x23d913){return db[_0xe4aa('0x43')][_0xe4aa('0x49')]({'where':{'id':_0x57b16c[_0xe4aa('0x51')]['id']}})[_0xe4aa('0x27')](handleEntityNotFound(_0x23d913,null))[_0xe4aa('0x27')](removeEntity(_0x23d913,null))[_0xe4aa('0x46')](handleError(_0x23d913,null));};function widgetAttributes(_0x16f6e7){try{switch(_0x16f6e7['type']){case _0xe4aa('0x5a'):return[{'name':'attrUrl','value':_0x16f6e7[_0xe4aa('0x5b')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7['attrs'][0x0]?_0x16f6e7['attrs'][0x0][_0xe4aa('0x5d')]:undefined)||_0xe4aa('0x5e')}];case'custom':return[{'name':_0xe4aa('0x5f'),'value':_0x16f6e7[_0xe4aa('0x5f')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7[_0xe4aa('0x5c')][0x0]?_0x16f6e7[_0xe4aa('0x5c')][0x0][_0xe4aa('0x5d')]:undefined)||''}];case _0xe4aa('0x60'):return[{'name':'attrHourFormat','value':_0x16f6e7[_0xe4aa('0x61')]||(_0x16f6e7['attrs']&&_0x16f6e7[_0xe4aa('0x5c')][0x0]?_0x16f6e7['attrs'][0x0]['value']:undefined)||_0xe4aa('0x62')},{'name':_0xe4aa('0x63'),'value':_0x16f6e7[_0xe4aa('0x63')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7[_0xe4aa('0x5c')][0x1]?_0x16f6e7[_0xe4aa('0x5c')][0x1]['value']:undefined)||'0.00'},{'name':'attrFontSize','value':_0x16f6e7[_0xe4aa('0x64')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7['attrs'][0x2]?_0x16f6e7[_0xe4aa('0x5c')][0x2][_0xe4aa('0x5d')]:undefined)||0xc}];case _0xe4aa('0x65'):return[{'name':'attrMetric','value':_0x16f6e7[_0xe4aa('0x66')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7['attrs'][0x0]?_0x16f6e7[_0xe4aa('0x5c')][0x0][_0xe4aa('0x5d')]:undefined)||_0xe4aa('0x67')},{'name':'attrVoiceQueues','value':_0x16f6e7[_0xe4aa('0x68')]||(_0x16f6e7['attrs']&&_0x16f6e7[_0xe4aa('0x5c')][0x1]?_0x16f6e7[_0xe4aa('0x5c')][0x1][_0xe4aa('0x5d')]:undefined)||[]},{'name':_0xe4aa('0x64'),'value':_0x16f6e7['attrFontSize']||(_0x16f6e7['attrs']&&_0x16f6e7['attrs'][0x2]?_0x16f6e7[_0xe4aa('0x5c')][0x2][_0xe4aa('0x5d')]:undefined)||0x14}];case _0xe4aa('0x69'):case _0xe4aa('0x6a'):return[{'name':_0xe4aa('0x6b'),'value':_0x16f6e7[_0xe4aa('0x6b')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7[_0xe4aa('0x5c')][0x0]?_0x16f6e7[_0xe4aa('0x5c')][0x0][_0xe4aa('0x5d')]:undefined)||_0xe4aa('0x67')},{'name':'attrSerie2','value':_0x16f6e7[_0xe4aa('0x6c')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7[_0xe4aa('0x5c')][0x1]?_0x16f6e7[_0xe4aa('0x5c')][0x1][_0xe4aa('0x5d')]:undefined)||null},{'name':_0xe4aa('0x6d'),'value':_0x16f6e7['attrSerie3']||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7[_0xe4aa('0x5c')][0x2]?_0x16f6e7[_0xe4aa('0x5c')][0x2][_0xe4aa('0x5d')]:undefined)||null},{'name':_0xe4aa('0x68'),'value':_0x16f6e7[_0xe4aa('0x68')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7[_0xe4aa('0x5c')][0x3]?_0x16f6e7[_0xe4aa('0x5c')][0x3][_0xe4aa('0x5d')]:undefined)||[]}];case'web-report':return[{'name':'attrReport','type':_0x16f6e7[_0xe4aa('0x6e')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7['attrs'][0x0]?_0x16f6e7['attrs'][0x0]['type']:undefined)||null,'value':_0x16f6e7[_0xe4aa('0x6f')]||(_0x16f6e7['attrs']&&_0x16f6e7[_0xe4aa('0x5c')][0x0]?_0x16f6e7[_0xe4aa('0x5c')][0x0][_0xe4aa('0x5d')]:undefined)||null},{'name':_0xe4aa('0x70'),'value':_0x16f6e7[_0xe4aa('0x70')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7[_0xe4aa('0x5c')][0x1]?_0x16f6e7['attrs'][0x1][_0xe4aa('0x5d')]:undefined)||0x0}];default:return[];}}catch(_0xc67a2f){logger['error'](_0xe4aa('0x71'),JSON['stringify'](_0xc67a2f));return[];}}exports[_0xe4aa('0x72')]=function(_0x220e18,_0x2cc9fb,_0x552a8){if(_0x220e18[_0xe4aa('0x55')]['id']){delete _0x220e18[_0xe4aa('0x55')]['id'];}return db[_0xe4aa('0x43')]['find']({'where':{'id':_0x220e18[_0xe4aa('0x51')]['id']}})[_0xe4aa('0x27')](handleEntityNotFound(_0x2cc9fb,null))[_0xe4aa('0x27')](function(_0x475334){if(_0x475334){_0x220e18[_0xe4aa('0x55')]['DashboardId']=_0x475334['id'];_0x220e18[_0xe4aa('0x55')][_0xe4aa('0x5c')]=widgetAttributes(_0x220e18[_0xe4aa('0x55')]);return db[_0xe4aa('0x73')]['create'](_0x220e18[_0xe4aa('0x55')]);}})['then'](respondWithResult(_0x2cc9fb,null))[_0xe4aa('0x46')](handleError(_0x2cc9fb,null));};exports[_0xe4aa('0x74')]=function(_0x2d8e96,_0x3f065f,_0x50f486){var _0x3bed61={};var _0x25f963={};var _0xc966ee;var _0x466a45;return db[_0xe4aa('0x43')][_0xe4aa('0x75')]({'where':{'id':_0x2d8e96[_0xe4aa('0x51')]['id']}})[_0xe4aa('0x27')](handleEntityNotFound(_0x3f065f,null))[_0xe4aa('0x27')](function(_0x586133){if(_0x586133){_0xc966ee=_0x586133;_0x25f963['model']=_[_0xe4aa('0x47')](db[_0xe4aa('0x73')][_0xe4aa('0x2d')]);_0x25f963[_0xe4aa('0x30')]=_[_0xe4aa('0x47')](_0x2d8e96[_0xe4aa('0x30')]);_0x25f963[_0xe4aa('0x31')]=_['intersection'](_0x25f963[_0xe4aa('0x34')],_0x25f963['query']);_0x3bed61['attributes']=_[_0xe4aa('0x32')](_0x25f963[_0xe4aa('0x34')],qs[_0xe4aa('0x35')](_0x2d8e96['query'][_0xe4aa('0x35')]));_0x3bed61['attributes']=_0x3bed61[_0xe4aa('0x33')][_0xe4aa('0x36')]?_0x3bed61[_0xe4aa('0x33')]:_0x25f963[_0xe4aa('0x34')];_0x3bed61[_0xe4aa('0x39')]=qs[_0xe4aa('0x3a')](_0x2d8e96[_0xe4aa('0x30')][_0xe4aa('0x3a')]);_0x3bed61[_0xe4aa('0x3b')]=qs['filters'](_['pick'](_0x2d8e96[_0xe4aa('0x30')],_0x25f963[_0xe4aa('0x31')]));if(_0x2d8e96['query']['filter']){_0x3bed61[_0xe4aa('0x3b')]=_[_0xe4aa('0x3e')](_0x3bed61[_0xe4aa('0x3b')],{'$or':_[_0xe4aa('0x2f')](_0x3bed61[_0xe4aa('0x33')],function(_0x347e5c){var _0x11a8ea={};_0x11a8ea[_0x347e5c]={'$like':'%'+_0x2d8e96['query'][_0xe4aa('0x3d')]+'%'};return _0x11a8ea;})});}_0x3bed61=_['merge']({},_0x3bed61,_0x2d8e96[_0xe4aa('0x41')]);return _0xc966ee[_0xe4aa('0x74')](_0x3bed61);}})['then'](function(_0x4c1ccd){if(_0x4c1ccd){_0x466a45=_0x4c1ccd[_0xe4aa('0x36')];if(!_0x2d8e96[_0xe4aa('0x30')][_0xe4aa('0x37')](_0xe4aa('0x38'))){_0x3bed61[_0xe4aa('0x21')]=qs['limit'](_0x2d8e96[_0xe4aa('0x30')]['limit']);_0x3bed61[_0xe4aa('0x1f')]=qs[_0xe4aa('0x1f')](_0x2d8e96[_0xe4aa('0x30')][_0xe4aa('0x1f')]);}return _0xc966ee['getItems'](_0x3bed61);}})[_0xe4aa('0x27')](function(_0x245c59){if(_0x245c59){return _0x245c59?{'count':_0x466a45,'rows':_0x245c59}:null;}})['then'](respondWithResult(_0x3f065f,null))['catch'](handleError(_0x3f065f,null));};
\ No newline at end of file
index 5c0619a..61a09fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc22d=['events','Dashboard','save','remove','emit','hasOwnProperty','hook','exports'];(function(_0x30819e,_0x442419){var _0x1d1492=function(_0x19120e){while(--_0x19120e){_0x30819e['push'](_0x30819e['shift']());}};_0x1d1492(++_0x442419);}(_0xc22d,0xa8));var _0xdc22=function(_0x5844ca,_0x4ea469){_0x5844ca=_0x5844ca-0x0;var _0x14e4c8=_0xc22d[_0x5844ca];return _0x14e4c8;};'use strict';var EventEmitter=require(_0xdc22('0x0'));var Dashboard=require('../../mysqldb')['db'][_0xdc22('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xdc22('0x2'),'afterUpdate':'update','afterDestroy':_0xdc22('0x3')};function emitEvent(_0xc3f9c8){return function(_0x49383c,_0x517716,_0x44e3e2){DashboardEvents[_0xdc22('0x4')](_0xc3f9c8+':'+_0x49383c['id'],_0x49383c);DashboardEvents[_0xdc22('0x4')](_0xc3f9c8,_0x49383c);_0x44e3e2(null);};}for(var e in events){if(events[_0xdc22('0x5')](e)){var event=events[e];Dashboard[_0xdc22('0x6')](e,emitEvent(event));}}module[_0xdc22('0x7')]=DashboardEvents;
\ No newline at end of file
+var _0xa7ad=['events','../../mysqldb','setMaxListeners','save','update','emit','hook','exports'];(function(_0x1547b7,_0x543a7b){var _0xe9d0d8=function(_0x2d5638){while(--_0x2d5638){_0x1547b7['push'](_0x1547b7['shift']());}};_0xe9d0d8(++_0x543a7b);}(_0xa7ad,0x168));var _0xda7a=function(_0x47aa64,_0xfb8a07){_0x47aa64=_0x47aa64-0x0;var _0x549c7a=_0xa7ad[_0x47aa64];return _0x549c7a;};'use strict';var EventEmitter=require(_0xda7a('0x0'));var Dashboard=require(_0xda7a('0x1'))['db']['Dashboard'];var DashboardEvents=new EventEmitter();DashboardEvents[_0xda7a('0x2')](0x0);var events={'afterCreate':_0xda7a('0x3'),'afterUpdate':_0xda7a('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2f7148){return function(_0x211169,_0x546c57,_0x950578){DashboardEvents[_0xda7a('0x5')](_0x2f7148+':'+_0x211169['id'],_0x211169);DashboardEvents[_0xda7a('0x5')](_0x2f7148,_0x211169);_0x950578(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0xda7a('0x6')](e,emitEvent(event));}}module[_0xda7a('0x7')]=DashboardEvents;
\ No newline at end of file
index 92c05ec..d61b94b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd04=['moment','bluebird','path','rimraf','../../config/environment','./dashboard.attributes','exports','Dashboard','lodash','../../config/logger','api'];(function(_0xa28795,_0x472cf){var _0x4df4b4=function(_0x24b508){while(--_0x24b508){_0xa28795['push'](_0xa28795['shift']());}};_0x4df4b4(++_0x472cf);}(_0xcd04,0x110));var _0x4cd0=function(_0x5b0753,_0x1f2ac8){_0x5b0753=_0x5b0753-0x0;var _0x203533=_0xcd04[_0x5b0753];return _0x203533;};'use strict';var _=require(_0x4cd0('0x0'));var util=require('util');var logger=require(_0x4cd0('0x1'))(_0x4cd0('0x2'));var moment=require(_0x4cd0('0x3'));var BPromise=require(_0x4cd0('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4cd0('0x5'));var rimraf=require(_0x4cd0('0x6'));var config=require(_0x4cd0('0x7'));var attributes=require(_0x4cd0('0x8'));module[_0x4cd0('0x9')]=function(_0x50d7cb,_0x506788){return _0x50d7cb['define'](_0x4cd0('0xa'),attributes,{'tableName':'dashboards','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x53ff=['Dashboard','dashboards','lodash','api','bluebird','request-promise','path','./dashboard.attributes','exports'];(function(_0x231e16,_0x67347b){var _0x570a7c=function(_0x2c35b4){while(--_0x2c35b4){_0x231e16['push'](_0x231e16['shift']());}};_0x570a7c(++_0x67347b);}(_0x53ff,0xb6));var _0xf53f=function(_0x5a7894,_0x2f9027){_0x5a7894=_0x5a7894-0x0;var _0x29a65f=_0x53ff[_0x5a7894];return _0x29a65f;};'use strict';var _=require(_0xf53f('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf53f('0x1'));var moment=require('moment');var BPromise=require(_0xf53f('0x2'));var rp=require(_0xf53f('0x3'));var fs=require('fs');var path=require(_0xf53f('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf53f('0x5'));module[_0xf53f('0x6')]=function(_0x2ab48a,_0x358645){return _0x2ab48a['define'](_0xf53f('0x7'),attributes,{'tableName':_0xf53f('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4dcbbc5..29696e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8089=['../../config/environment','jayson/promise','client','redis','defaults','localhost','./dashboard.socket','request','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x568f6a,_0x23f870){var _0x1b6117=function(_0x4b5177){while(--_0x4b5177){_0x568f6a['push'](_0x568f6a['shift']());}};_0x1b6117(++_0x23f870);}(_0x8089,0x1c2));var _0x9808=function(_0xf61220,_0x68af27){_0xf61220=_0xf61220-0x0;var _0x24da8a=_0x8089[_0xf61220];return _0x24da8a;};'use strict';var _=require(_0x9808('0x0'));var util=require(_0x9808('0x1'));var moment=require(_0x9808('0x2'));var BPromise=require(_0x9808('0x3'));var rs=require(_0x9808('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9808('0x5'))['db'];var utils=require(_0x9808('0x6'));var logger=require(_0x9808('0x7'))(_0x9808('0x8'));var config=require(_0x9808('0x9'));var jayson=require(_0x9808('0xa'));var client=jayson[_0x9808('0xb')]['http']({'port':0x232a});config[_0x9808('0xc')]=_[_0x9808('0xd')](config['redis'],{'host':_0x9808('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9808('0xc')]));require(_0x9808('0xf'))['register'](socket);function respondWithRpcPromise(_0x1aa057,_0x5b8cbe,_0x3d52f9){return new BPromise(function(_0x353488,_0x50f17b){return client[_0x9808('0x10')](_0x1aa057,_0x3d52f9)[_0x9808('0x11')](function(_0x10195a){logger[_0x9808('0x12')](_0x9808('0x13'),_0x5b8cbe,_0x9808('0x14'));logger[_0x9808('0x15')](_0x9808('0x16'),_0x5b8cbe,_0x9808('0x14'),JSON[_0x9808('0x17')](_0x10195a));if(_0x10195a[_0x9808('0x18')]){if(_0x10195a[_0x9808('0x18')]['code']===0x1f4){logger[_0x9808('0x18')](_0x9808('0x13'),_0x5b8cbe,_0x10195a[_0x9808('0x18')][_0x9808('0x19')]);return _0x50f17b(_0x10195a['error'][_0x9808('0x19')]);}logger[_0x9808('0x18')](_0x9808('0x13'),_0x5b8cbe,_0x10195a[_0x9808('0x18')]['message']);return _0x353488(_0x10195a[_0x9808('0x18')][_0x9808('0x19')]);}else{logger['info'](_0x9808('0x13'),_0x5b8cbe,'request\x20sent');_0x353488(_0x10195a['result'][_0x9808('0x19')]);}})[_0x9808('0x1a')](function(_0x284ae8){logger[_0x9808('0x18')](_0x9808('0x13'),_0x5b8cbe,_0x284ae8);_0x50f17b(_0x284ae8);});});}
\ No newline at end of file
+var _0x23ac=['jayson/promise','client','http','redis','defaults','./dashboard.socket','register','then','request\x20sent','stringify','error','code','message','Dashboard,\x20%s,\x20%s','result','lodash','util','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x3b711c,_0x4b22dc){var _0x2685f0=function(_0x3b5ba6){while(--_0x3b5ba6){_0x3b711c['push'](_0x3b711c['shift']());}};_0x2685f0(++_0x4b22dc);}(_0x23ac,0x67));var _0xc23a=function(_0x4c73ac,_0x46b73c){_0x4c73ac=_0x4c73ac-0x0;var _0x9839ee=_0x23ac[_0x4c73ac];return _0x9839ee;};'use strict';var _=require(_0xc23a('0x0'));var util=require(_0xc23a('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc23a('0x2'));var db=require(_0xc23a('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xc23a('0x4'))(_0xc23a('0x5'));var config=require(_0xc23a('0x6'));var jayson=require(_0xc23a('0x7'));var client=jayson[_0xc23a('0x8')][_0xc23a('0x9')]({'port':0x232a});config[_0xc23a('0xa')]=_[_0xc23a('0xb')](config[_0xc23a('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc23a('0xa')]));require(_0xc23a('0xc'))[_0xc23a('0xd')](socket);function respondWithRpcPromise(_0xd919e2,_0x3e80c4,_0x25d22e){return new BPromise(function(_0x3a7d85,_0x92c9f){return client['request'](_0xd919e2,_0x25d22e)[_0xc23a('0xe')](function(_0x219405){logger['info']('Dashboard,\x20%s,\x20%s',_0x3e80c4,_0xc23a('0xf'));logger['debug']('Dashboard,\x20%s,\x20%s,\x20%s',_0x3e80c4,_0xc23a('0xf'),JSON[_0xc23a('0x10')](_0x219405));if(_0x219405[_0xc23a('0x11')]){if(_0x219405[_0xc23a('0x11')][_0xc23a('0x12')]===0x1f4){logger['error']('Dashboard,\x20%s,\x20%s',_0x3e80c4,_0x219405['error'][_0xc23a('0x13')]);return _0x92c9f(_0x219405[_0xc23a('0x11')]['message']);}logger[_0xc23a('0x11')]('Dashboard,\x20%s,\x20%s',_0x3e80c4,_0x219405[_0xc23a('0x11')][_0xc23a('0x13')]);return _0x3a7d85(_0x219405['error'][_0xc23a('0x13')]);}else{logger['info'](_0xc23a('0x14'),_0x3e80c4,_0xc23a('0xf'));_0x3a7d85(_0x219405[_0xc23a('0x15')]['message']);}})['catch'](function(_0x39f8ab){logger[_0xc23a('0x11')](_0xc23a('0x14'),_0x3e80c4,_0x39f8ab);_0x92c9f(_0x39f8ab);});});}
\ No newline at end of file
index b3cc38c..8c1eb81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cb6=['remove','update','removeListener','register','length','dashboard:','./dashboard.events'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x3cb6,0x148));var _0x63cb=function(_0x8e47d6,_0x5dd331){_0x8e47d6=_0x8e47d6-0x0;var _0x161a7c=_0x3cb6[_0x8e47d6];return _0x161a7c;};'use strict';var DashboardEvents=require(_0x63cb('0x0'));var events=['save',_0x63cb('0x1'),_0x63cb('0x2')];function createListener(_0x1eb77a,_0x282cf2){return function(_0x41416a){_0x282cf2['emit'](_0x1eb77a,_0x41416a);};}function removeListener(_0x5114f2,_0x4367a7){return function(){DashboardEvents[_0x63cb('0x3')](_0x5114f2,_0x4367a7);};}exports[_0x63cb('0x4')]=function(_0x7557dd){for(var _0x2871fc=0x0,_0x4763d1=events[_0x63cb('0x5')];_0x2871fc<_0x4763d1;_0x2871fc++){var _0x149fd1=events[_0x2871fc];var _0x50625e=createListener(_0x63cb('0x6')+_0x149fd1,_0x7557dd);DashboardEvents['on'](_0x149fd1,_0x50625e);}};
\ No newline at end of file
+var _0x1397=['save','remove','length','dashboard:'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x1397,0xe4));var _0x7139=function(_0x118922,_0x2a1c1d){_0x118922=_0x118922-0x0;var _0x5eaab1=_0x1397[_0x118922];return _0x5eaab1;};'use strict';var DashboardEvents=require('./dashboard.events');var events=[_0x7139('0x0'),_0x7139('0x1'),'update'];function createListener(_0x8eda6e,_0x3a5b36){return function(_0x4dfac1){_0x3a5b36['emit'](_0x8eda6e,_0x4dfac1);};}function removeListener(_0xb09966,_0x4c159c){return function(){DashboardEvents['removeListener'](_0xb09966,_0x4c159c);};}exports['register']=function(_0x20f5e9){for(var _0x1c8495=0x0,_0x2edca4=events[_0x7139('0x2')];_0x1c8495<_0x2edca4;_0x1c8495++){var _0x18c60f=events[_0x1c8495];var _0x23910e=createListener(_0x7139('0x3')+_0x18c60f,_0x20f5e9);DashboardEvents['on'](_0x18c60f,_0x23910e);}};
\ No newline at end of file
index 5c6d9a8..13f32bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56ee=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./dashboard.controller','get','isAuthenticated','/:id','show','/:id/items','post','/:id/clone','clone','addItem','destroy','exports','multer'];(function(_0x9b6a52,_0x3cb0ab){var _0x5c5c6f=function(_0x439987){while(--_0x439987){_0x9b6a52['push'](_0x9b6a52['shift']());}};_0x5c5c6f(++_0x3cb0ab);}(_0x56ee,0x168));var _0xe56e=function(_0x3ef4f1,_0x5f0f9b){_0x3ef4f1=_0x3ef4f1-0x0;var _0x69953c=_0x56ee[_0x3ef4f1];return _0x69953c;};'use strict';var multer=require(_0xe56e('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xe56e('0x1'));var express=require(_0xe56e('0x2'));var router=express[_0xe56e('0x3')]();var fs_extra=require(_0xe56e('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xe56e('0x5'));var config=require(_0xe56e('0x6'));var controller=require(_0xe56e('0x7'));router[_0xe56e('0x8')]('/',auth[_0xe56e('0x9')](),controller['index']);router['get'](_0xe56e('0xa'),auth[_0xe56e('0x9')](),controller[_0xe56e('0xb')]);router[_0xe56e('0x8')](_0xe56e('0xc'),auth[_0xe56e('0x9')](),controller['getItems']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xe56e('0xd')](_0xe56e('0xe'),auth['isAuthenticated'](),controller[_0xe56e('0xf')]);router[_0xe56e('0xd')](_0xe56e('0xc'),auth[_0xe56e('0x9')](),controller[_0xe56e('0x10')]);router['put'](_0xe56e('0xa'),auth[_0xe56e('0x9')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xe56e('0x11')]);module[_0xe56e('0x12')]=router;
\ No newline at end of file
+var _0x0d84=['exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','get','/:id','isAuthenticated','show','/:id/items','getItems','create','post','/:id/clone','clone','put','update','delete','destroy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0d84,0x1c9));var _0x40d8=function(_0x5a9edb,_0x44e0fc){_0x5a9edb=_0x5a9edb-0x0;var _0x437b0e=_0x0d84[_0x5a9edb];return _0x437b0e;};'use strict';var multer=require(_0x40d8('0x0'));var util=require('util');var path=require(_0x40d8('0x1'));var timeout=require(_0x40d8('0x2'));var express=require(_0x40d8('0x3'));var router=express['Router']();var fs_extra=require(_0x40d8('0x4'));var auth=require(_0x40d8('0x5'));var interaction=require(_0x40d8('0x6'));var config=require(_0x40d8('0x7'));var controller=require(_0x40d8('0x8'));router[_0x40d8('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x40d8('0x9')](_0x40d8('0xa'),auth[_0x40d8('0xb')](),controller[_0x40d8('0xc')]);router['get'](_0x40d8('0xd'),auth[_0x40d8('0xb')](),controller[_0x40d8('0xe')]);router['post']('/',auth[_0x40d8('0xb')](),controller[_0x40d8('0xf')]);router[_0x40d8('0x10')](_0x40d8('0x11'),auth[_0x40d8('0xb')](),controller[_0x40d8('0x12')]);router[_0x40d8('0x10')]('/:id/items',auth[_0x40d8('0xb')](),controller['addItem']);router[_0x40d8('0x13')](_0x40d8('0xa'),auth[_0x40d8('0xb')](),controller[_0x40d8('0x14')]);router[_0x40d8('0x15')](_0x40d8('0xa'),auth[_0x40d8('0xb')](),controller[_0x40d8('0x16')]);module[_0x40d8('0x17')]=router;
\ No newline at end of file
index 1acbe86..f127f82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4819=['long','parse','getDataValue','attrs','stringify','setDataValue','INTEGER','#ffffff','#2196f3','squel','lodash','exports','STRING','TEXT'];(function(_0x1bf2af,_0x4072bd){var _0x54957e=function(_0x5aa2d0){while(--_0x5aa2d0){_0x1bf2af['push'](_0x1bf2af['shift']());}};_0x54957e(++_0x4072bd);}(_0x4819,0xcd));var _0x9481=function(_0x3250f7,_0x1c2afc){_0x3250f7=_0x3250f7-0x0;var _0xdb6ac4=_0x4819[_0x3250f7];return _0xdb6ac4;};'use strict';var Sequelize=require('sequelize');var squel=require(_0x9481('0x0'));var _=require(_0x9481('0x1'));module[_0x9481('0x2')]={'title':{'type':Sequelize[_0x9481('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x9481('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x9481('0x4')](_0x9481('0x5')),'get':function(){try{return JSON[_0x9481('0x6')](this[_0x9481('0x7')](_0x9481('0x8')));}catch(_0x5ac51c){return[];}},'set':function(_0x4d9e3a){try{this['setDataValue']('attrs',JSON[_0x9481('0x9')](_0x4d9e3a));}catch(_0x6c6a08){this[_0x9481('0xa')](_0x9481('0x8'),JSON[_0x9481('0x9')]([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x9481('0xb')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize[_0x9481('0xb')]},'background':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9481('0xc'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x9481('0x3')],'allowNull':![],'defaultValue':_0x9481('0xd'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x9481('0x3')]},'titleFontSize':{'type':Sequelize[_0x9481('0xb')],'defaultValue':0xc}};
\ No newline at end of file
+var _0x6f47=['#ffffff','squel','lodash','STRING','TEXT','parse','getDataValue','attrs','setDataValue','stringify','INTEGER'];(function(_0x25d2ab,_0x30ad94){var _0x5ab897=function(_0x451963){while(--_0x451963){_0x25d2ab['push'](_0x25d2ab['shift']());}};_0x5ab897(++_0x30ad94);}(_0x6f47,0xc7));var _0x76f4=function(_0x75f869,_0x3690d6){_0x75f869=_0x75f869-0x0;var _0x10af8b=_0x6f47[_0x75f869];return _0x10af8b;};'use strict';var Sequelize=require('sequelize');var squel=require(_0x76f4('0x0'));var _=require(_0x76f4('0x1'));module['exports']={'title':{'type':Sequelize[_0x76f4('0x2')],'allowNull':![]},'type':{'type':Sequelize['STRING'](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x76f4('0x3')]('long'),'get':function(){try{return JSON[_0x76f4('0x4')](this[_0x76f4('0x5')](_0x76f4('0x6')));}catch(_0x2523ba){return[];}},'set':function(_0x5754ca){try{this[_0x76f4('0x7')](_0x76f4('0x6'),JSON[_0x76f4('0x8')](_0x5754ca));}catch(_0x497f99){this[_0x76f4('0x7')](_0x76f4('0x6'),JSON[_0x76f4('0x8')]([]));}}},'sizeX':{'type':Sequelize[_0x76f4('0x9')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x76f4('0x9')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize['INTEGER']},'background':{'type':Sequelize[_0x76f4('0x2')],'allowNull':![],'defaultValue':_0x76f4('0xa'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x76f4('0x2')]},'titleFontSize':{'type':Sequelize[_0x76f4('0x9')],'defaultValue':0xc}};
\ No newline at end of file
index 7e463e2..b29b20e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c85=['sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','then','error','name','send','show','params','keys','DashboardItem','query','intersection','model','attributes','fields','length','includeAll','include','options','find','destroy','catch','type','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','attrVoiceQueues','multibar-chart','attrSerie1','total','attrSerie2','attrSerie3','web-report','attrReport','attrRefresh','stringify','create','body','eml-format','rimraf','request-promise','moment','mustache','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register'];(function(_0x14a7c8,_0x2d3dc0){var _0x47da08=function(_0x573e64){while(--_0x573e64){_0x14a7c8['push'](_0x14a7c8['shift']());}};_0x47da08(++_0x2d3dc0);}(_0x1c85,0x18b));var _0x51c8=function(_0x4df58b,_0xec7edb){_0x4df58b=_0x4df58b-0x0;var _0x4546e1=_0x1c85[_0x4df58b];return _0x4546e1;};'use strict';var emlformat=require(_0x51c8('0x0'));var rimraf=require(_0x51c8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x51c8('0x2'));var moment=require(_0x51c8('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x51c8('0x4'));var util=require('util');var path=require('path');var sox=require(_0x51c8('0x5'));var csv=require(_0x51c8('0x6'));var ejs=require(_0x51c8('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x51c8('0x8'));var squel=require(_0x51c8('0x9'));var crypto=require(_0x51c8('0xa'));var jsforce=require(_0x51c8('0xb'));var deskjs=require(_0x51c8('0xc'));var toCsv=require(_0x51c8('0x6'));var querystring=require(_0x51c8('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x51c8('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x51c8('0xf'));var logger=require(_0x51c8('0x10'))(_0x51c8('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x51c8('0x12'));var db=require(_0x51c8('0x13'))['db'];config[_0x51c8('0x14')]=_[_0x51c8('0x15')](config['redis'],{'host':_0x51c8('0x16'),'port':0x18eb});var socket=require(_0x51c8('0x17'))(new Redis(config[_0x51c8('0x14')]));require('./dashboardItem.socket')[_0x51c8('0x18')](socket);function respondWithStatusCode(_0x5d17e7,_0x2c0039){_0x2c0039=_0x2c0039||0xcc;return function(_0x3780f9){if(_0x3780f9){return _0x5d17e7[_0x51c8('0x19')](_0x2c0039);}return _0x5d17e7[_0x51c8('0x1a')](_0x2c0039)[_0x51c8('0x1b')]();};}function respondWithResult(_0x42c05e,_0xfb312){_0xfb312=_0xfb312||0xc8;return function(_0x339840){if(_0x339840){return _0x42c05e[_0x51c8('0x1a')](_0xfb312)[_0x51c8('0x1c')](_0x339840);}};}function respondWithFilteredResult(_0x3bfa24,_0x57fea6){return function(_0x33b074){if(_0x33b074){var _0x2c86b1=typeof _0x57fea6['offset']===_0x51c8('0x1d')&&typeof _0x57fea6['limit']===_0x51c8('0x1d');var _0x295972=_0x33b074[_0x51c8('0x1e')];var _0x2a044b=_0x2c86b1?0x0:_0x57fea6[_0x51c8('0x1f')];var _0x4eec4f=_0x2c86b1?_0x33b074['count']:_0x57fea6[_0x51c8('0x1f')]+_0x57fea6[_0x51c8('0x20')];var _0x4a20c2;if(_0x4eec4f>=_0x295972){_0x4eec4f=_0x295972;_0x4a20c2=0xc8;}else{_0x4a20c2=0xce;}_0x3bfa24[_0x51c8('0x1a')](_0x4a20c2);return _0x3bfa24[_0x51c8('0x21')](_0x51c8('0x22'),_0x2a044b+'-'+_0x4eec4f+'/'+_0x295972)['json'](_0x33b074);}return null;};}function patchUpdates(_0x38fd0e){return function(_0x251710){try{jsonpatch[_0x51c8('0x23')](_0x251710,_0x38fd0e,!![]);}catch(_0x1bd17b){return BPromise['reject'](_0x1bd17b);}return _0x251710[_0x51c8('0x24')]();};}function saveUpdates(_0x5394a4,_0x1c42f6){return function(_0x4843a7){if(_0x4843a7){return _0x4843a7[_0x51c8('0x25')](_0x5394a4)[_0x51c8('0x26')](function(_0x1162bf){return _0x1162bf;});}return null;};}function removeEntity(_0x392c34,_0x377544){return function(_0xc59cba){if(_0xc59cba){return _0xc59cba['destroy']()['then'](function(){_0x392c34['status'](0xcc)[_0x51c8('0x1b')]();});}};}function handleEntityNotFound(_0x495644,_0x25c9f6){return function(_0xf090ca){if(!_0xf090ca){_0x495644[_0x51c8('0x19')](0x194);}return _0xf090ca;};}function handleError(_0x48d8e5,_0x171d9e){_0x171d9e=_0x171d9e||0x1f4;return function(_0x3c8e93){logger[_0x51c8('0x27')](_0x3c8e93['stack']);if(_0x3c8e93['name']){delete _0x3c8e93[_0x51c8('0x28')];}_0x48d8e5['status'](_0x171d9e)[_0x51c8('0x29')](_0x3c8e93);};}exports[_0x51c8('0x2a')]=function(_0x47a37a,_0x5c7bdb){var _0x4cfcea={'raw':![],'where':{'id':_0x47a37a[_0x51c8('0x2b')]['id']}},_0x3f9180={};_0x3f9180['model']=_[_0x51c8('0x2c')](db[_0x51c8('0x2d')]['rawAttributes']);_0x3f9180['query']=_[_0x51c8('0x2c')](_0x47a37a[_0x51c8('0x2e')]);_0x3f9180['filters']=_[_0x51c8('0x2f')](_0x3f9180[_0x51c8('0x30')],_0x3f9180['query']);_0x4cfcea[_0x51c8('0x31')]=_['intersection'](_0x3f9180[_0x51c8('0x30')],qs[_0x51c8('0x32')](_0x47a37a[_0x51c8('0x2e')][_0x51c8('0x32')]));_0x4cfcea['attributes']=_0x4cfcea[_0x51c8('0x31')][_0x51c8('0x33')]?_0x4cfcea[_0x51c8('0x31')]:_0x3f9180[_0x51c8('0x30')];if(_0x47a37a[_0x51c8('0x2e')][_0x51c8('0x34')]){_0x4cfcea[_0x51c8('0x35')]=[{'all':!![]}];}_0x4cfcea=_['merge']({},_0x4cfcea,_0x47a37a[_0x51c8('0x36')]);return db[_0x51c8('0x2d')][_0x51c8('0x37')](_0x4cfcea)[_0x51c8('0x26')](handleEntityNotFound(_0x5c7bdb,null))[_0x51c8('0x26')](respondWithResult(_0x5c7bdb,null))['catch'](handleError(_0x5c7bdb,null));};exports[_0x51c8('0x38')]=function(_0x23efa8,_0xe920c9){return db['DashboardItem'][_0x51c8('0x37')]({'where':{'id':_0x23efa8['params']['id']}})[_0x51c8('0x26')](handleEntityNotFound(_0xe920c9,null))[_0x51c8('0x26')](removeEntity(_0xe920c9,null))[_0x51c8('0x39')](handleError(_0xe920c9,null));};function widgetAttributes(_0x45baf3){try{switch(_0x45baf3[_0x51c8('0x3a')]){case'iframe':return[{'name':_0x51c8('0x3b'),'value':_0x45baf3[_0x51c8('0x3b')]||(_0x45baf3[_0x51c8('0x3c')]&&_0x45baf3[_0x51c8('0x3c')][0x0]?_0x45baf3[_0x51c8('0x3c')][0x0][_0x51c8('0x3d')]:undefined)||_0x51c8('0x3e')}];case'custom':return[{'name':'attrPath','value':_0x45baf3[_0x51c8('0x3f')]||(_0x45baf3[_0x51c8('0x3c')]&&_0x45baf3[_0x51c8('0x3c')][0x0]?_0x45baf3[_0x51c8('0x3c')][0x0]['value']:undefined)||''}];case _0x51c8('0x40'):return[{'name':_0x51c8('0x41'),'value':_0x45baf3[_0x51c8('0x41')]||(_0x45baf3[_0x51c8('0x3c')]&&_0x45baf3['attrs'][0x0]?_0x45baf3[_0x51c8('0x3c')][0x0][_0x51c8('0x3d')]:undefined)||_0x51c8('0x42')},{'name':_0x51c8('0x43'),'value':_0x45baf3[_0x51c8('0x43')]||(_0x45baf3[_0x51c8('0x3c')]&&_0x45baf3[_0x51c8('0x3c')][0x1]?_0x45baf3['attrs'][0x1][_0x51c8('0x3d')]:undefined)||_0x51c8('0x44')},{'name':_0x51c8('0x45'),'value':_0x45baf3[_0x51c8('0x45')]||(_0x45baf3['attrs']&&_0x45baf3[_0x51c8('0x3c')][0x2]?_0x45baf3['attrs'][0x2][_0x51c8('0x3d')]:undefined)||0xc}];case _0x51c8('0x46'):return[{'name':_0x51c8('0x47'),'value':_0x45baf3[_0x51c8('0x47')]||(_0x45baf3[_0x51c8('0x3c')]&&_0x45baf3[_0x51c8('0x3c')][0x0]?_0x45baf3[_0x51c8('0x3c')][0x0][_0x51c8('0x3d')]:undefined)||'total'},{'name':_0x51c8('0x48'),'value':_0x45baf3[_0x51c8('0x48')]||(_0x45baf3[_0x51c8('0x3c')]&&_0x45baf3[_0x51c8('0x3c')][0x1]?_0x45baf3[_0x51c8('0x3c')][0x1][_0x51c8('0x3d')]:undefined)||[]},{'name':'attrFontSize','value':_0x45baf3[_0x51c8('0x45')]||(_0x45baf3[_0x51c8('0x3c')]&&_0x45baf3['attrs'][0x2]?_0x45baf3[_0x51c8('0x3c')][0x2][_0x51c8('0x3d')]:undefined)||0x14}];case _0x51c8('0x49'):case'pie-chart':return[{'name':'attrSerie1','value':_0x45baf3[_0x51c8('0x4a')]||(_0x45baf3[_0x51c8('0x3c')]&&_0x45baf3[_0x51c8('0x3c')][0x0]?_0x45baf3[_0x51c8('0x3c')][0x0][_0x51c8('0x3d')]:undefined)||_0x51c8('0x4b')},{'name':_0x51c8('0x4c'),'value':_0x45baf3[_0x51c8('0x4c')]||(_0x45baf3[_0x51c8('0x3c')]&&_0x45baf3['attrs'][0x1]?_0x45baf3[_0x51c8('0x3c')][0x1][_0x51c8('0x3d')]:undefined)||null},{'name':_0x51c8('0x4d'),'value':_0x45baf3[_0x51c8('0x4d')]||(_0x45baf3['attrs']&&_0x45baf3[_0x51c8('0x3c')][0x2]?_0x45baf3[_0x51c8('0x3c')][0x2][_0x51c8('0x3d')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x45baf3['attrVoiceQueues']||(_0x45baf3[_0x51c8('0x3c')]&&_0x45baf3[_0x51c8('0x3c')][0x3]?_0x45baf3[_0x51c8('0x3c')][0x3]['value']:undefined)||[]}];case _0x51c8('0x4e'):return[{'name':_0x51c8('0x4f'),'type':_0x45baf3['reportType']||(_0x45baf3[_0x51c8('0x3c')]&&_0x45baf3[_0x51c8('0x3c')][0x0]?_0x45baf3[_0x51c8('0x3c')][0x0][_0x51c8('0x3a')]:undefined)||null,'value':_0x45baf3[_0x51c8('0x4f')]||(_0x45baf3[_0x51c8('0x3c')]&&_0x45baf3[_0x51c8('0x3c')][0x0]?_0x45baf3[_0x51c8('0x3c')][0x0][_0x51c8('0x3d')]:undefined)||null},{'name':_0x51c8('0x50'),'value':_0x45baf3[_0x51c8('0x50')]||(_0x45baf3['attrs']&&_0x45baf3[_0x51c8('0x3c')][0x1]?_0x45baf3[_0x51c8('0x3c')][0x1][_0x51c8('0x3d')]:undefined)||0x0}];default:return[];}}catch(_0x3b242b){logger['error']('widgetAttributes:\x20%s',JSON[_0x51c8('0x51')](_0x3b242b));return[];}}exports[_0x51c8('0x52')]=function(_0x3c2ebd,_0x4fff02){if(_0x3c2ebd[_0x51c8('0x53')]){_0x3c2ebd[_0x51c8('0x53')][_0x51c8('0x3c')]=widgetAttributes(_0x3c2ebd['body']);}return db[_0x51c8('0x2d')][_0x51c8('0x52')](_0x3c2ebd[_0x51c8('0x53')],{})[_0x51c8('0x26')](respondWithResult(_0x4fff02,0xc9))[_0x51c8('0x39')](handleError(_0x4fff02,null));};exports[_0x51c8('0x25')]=function(_0x345684,_0xb6dbea){if(_0x345684['body']['id']){delete _0x345684[_0x51c8('0x53')]['id'];}_0x345684[_0x51c8('0x53')][_0x51c8('0x3c')]=widgetAttributes(_0x345684[_0x51c8('0x53')]);return db[_0x51c8('0x2d')]['find']({'where':{'id':_0x345684[_0x51c8('0x2b')]['id']}})[_0x51c8('0x26')](handleEntityNotFound(_0xb6dbea,null))[_0x51c8('0x26')](saveUpdates(_0x345684[_0x51c8('0x53')],null))[_0x51c8('0x26')](respondWithResult(_0xb6dbea,null))[_0x51c8('0x39')](handleError(_0xb6dbea,null));};
\ No newline at end of file
+var _0x5336=['params','type','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','total','attrSerie2','attrSerie3','web-report','attrReport','attrRefresh','widgetAttributes:\x20%s','create','body','update','eml-format','zip-dir','request-promise','moment','util','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','then','destroy','end','sendStatus','error','name','send','model','keys','DashboardItem','rawAttributes','query','filters','intersection','fields','attributes','length','include','merge','find','catch'];(function(_0x39d544,_0x35c14f){var _0x5a5ff2=function(_0x2271fb){while(--_0x2271fb){_0x39d544['push'](_0x39d544['shift']());}};_0x5a5ff2(++_0x35c14f);}(_0x5336,0x76));var _0x6533=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0x5336[_0x243b59];return _0x3e1676;};'use strict';var emlformat=require(_0x6533('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6533('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6533('0x2'));var moment=require(_0x6533('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6533('0x4'));var path=require(_0x6533('0x5'));var sox=require(_0x6533('0x6'));var csv=require('to-csv');var ejs=require(_0x6533('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6533('0x8'));var squel=require('squel');var crypto=require(_0x6533('0x9'));var jsforce=require(_0x6533('0xa'));var deskjs=require(_0x6533('0xb'));var toCsv=require(_0x6533('0xc'));var querystring=require(_0x6533('0xd'));var Papa=require(_0x6533('0xe'));var Redis=require(_0x6533('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x6533('0x10'));var as=require(_0x6533('0x11'));var hardwareService=require(_0x6533('0x12'));var logger=require(_0x6533('0x13'))('api');var utils=require(_0x6533('0x14'));var config=require(_0x6533('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x6533('0x16'))['db'];config['redis']=_[_0x6533('0x17')](config[_0x6533('0x18')],{'host':_0x6533('0x19'),'port':0x18eb});var socket=require(_0x6533('0x1a'))(new Redis(config['redis']));require(_0x6533('0x1b'))[_0x6533('0x1c')](socket);function respondWithStatusCode(_0x25e7c0,_0x8cd304){_0x8cd304=_0x8cd304||0xcc;return function(_0x45a170){if(_0x45a170){return _0x25e7c0['sendStatus'](_0x8cd304);}return _0x25e7c0[_0x6533('0x1d')](_0x8cd304)['end']();};}function respondWithResult(_0x3a8e04,_0x259db7){_0x259db7=_0x259db7||0xc8;return function(_0x49daf2){if(_0x49daf2){return _0x3a8e04[_0x6533('0x1d')](_0x259db7)[_0x6533('0x1e')](_0x49daf2);}};}function respondWithFilteredResult(_0x18763e,_0x138d9b){return function(_0x38db00){if(_0x38db00){var _0x294527=typeof _0x138d9b[_0x6533('0x1f')]===_0x6533('0x20')&&typeof _0x138d9b['limit']===_0x6533('0x20');var _0x594e61=_0x38db00[_0x6533('0x21')];var _0x5c41a9=_0x294527?0x0:_0x138d9b[_0x6533('0x1f')];var _0x30d2f9=_0x294527?_0x38db00[_0x6533('0x21')]:_0x138d9b[_0x6533('0x1f')]+_0x138d9b[_0x6533('0x22')];var _0x2f2dd3;if(_0x30d2f9>=_0x594e61){_0x30d2f9=_0x594e61;_0x2f2dd3=0xc8;}else{_0x2f2dd3=0xce;}_0x18763e[_0x6533('0x1d')](_0x2f2dd3);return _0x18763e[_0x6533('0x23')](_0x6533('0x24'),_0x5c41a9+'-'+_0x30d2f9+'/'+_0x594e61)[_0x6533('0x1e')](_0x38db00);}return null;};}function patchUpdates(_0x46fda9){return function(_0x3f1e4f){try{jsonpatch[_0x6533('0x25')](_0x3f1e4f,_0x46fda9,!![]);}catch(_0x468e38){return BPromise['reject'](_0x468e38);}return _0x3f1e4f[_0x6533('0x26')]();};}function saveUpdates(_0x5bd3df,_0x1ac462){return function(_0x486639){if(_0x486639){return _0x486639['update'](_0x5bd3df)[_0x6533('0x27')](function(_0x4a44f7){return _0x4a44f7;});}return null;};}function removeEntity(_0x2b790b,_0x27893c){return function(_0x52e4b3){if(_0x52e4b3){return _0x52e4b3[_0x6533('0x28')]()['then'](function(){_0x2b790b[_0x6533('0x1d')](0xcc)[_0x6533('0x29')]();});}};}function handleEntityNotFound(_0x4212a4,_0x502704){return function(_0x5dab0b){if(!_0x5dab0b){_0x4212a4[_0x6533('0x2a')](0x194);}return _0x5dab0b;};}function handleError(_0x192a63,_0x135540){_0x135540=_0x135540||0x1f4;return function(_0x5ac9cb){logger[_0x6533('0x2b')](_0x5ac9cb['stack']);if(_0x5ac9cb['name']){delete _0x5ac9cb[_0x6533('0x2c')];}_0x192a63[_0x6533('0x1d')](_0x135540)[_0x6533('0x2d')](_0x5ac9cb);};}exports['show']=function(_0x58c1d2,_0x5e4b47){var _0xbfa332={'raw':![],'where':{'id':_0x58c1d2['params']['id']}},_0x4f6705={};_0x4f6705[_0x6533('0x2e')]=_[_0x6533('0x2f')](db[_0x6533('0x30')][_0x6533('0x31')]);_0x4f6705[_0x6533('0x32')]=_['keys'](_0x58c1d2[_0x6533('0x32')]);_0x4f6705[_0x6533('0x33')]=_['intersection'](_0x4f6705[_0x6533('0x2e')],_0x4f6705[_0x6533('0x32')]);_0xbfa332['attributes']=_[_0x6533('0x34')](_0x4f6705[_0x6533('0x2e')],qs['fields'](_0x58c1d2['query'][_0x6533('0x35')]));_0xbfa332[_0x6533('0x36')]=_0xbfa332[_0x6533('0x36')][_0x6533('0x37')]?_0xbfa332[_0x6533('0x36')]:_0x4f6705[_0x6533('0x2e')];if(_0x58c1d2[_0x6533('0x32')]['includeAll']){_0xbfa332[_0x6533('0x38')]=[{'all':!![]}];}_0xbfa332=_[_0x6533('0x39')]({},_0xbfa332,_0x58c1d2['options']);return db[_0x6533('0x30')][_0x6533('0x3a')](_0xbfa332)[_0x6533('0x27')](handleEntityNotFound(_0x5e4b47,null))['then'](respondWithResult(_0x5e4b47,null))[_0x6533('0x3b')](handleError(_0x5e4b47,null));};exports[_0x6533('0x28')]=function(_0x115b21,_0x5be69b){return db[_0x6533('0x30')][_0x6533('0x3a')]({'where':{'id':_0x115b21[_0x6533('0x3c')]['id']}})[_0x6533('0x27')](handleEntityNotFound(_0x5be69b,null))[_0x6533('0x27')](removeEntity(_0x5be69b,null))[_0x6533('0x3b')](handleError(_0x5be69b,null));};function widgetAttributes(_0x3d65d9){try{switch(_0x3d65d9[_0x6533('0x3d')]){case'iframe':return[{'name':'attrUrl','value':_0x3d65d9[_0x6533('0x3e')]||(_0x3d65d9['attrs']&&_0x3d65d9['attrs'][0x0]?_0x3d65d9[_0x6533('0x3f')][0x0][_0x6533('0x40')]:undefined)||_0x6533('0x41')}];case'custom':return[{'name':_0x6533('0x42'),'value':_0x3d65d9['attrPath']||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9[_0x6533('0x3f')][0x0]?_0x3d65d9['attrs'][0x0][_0x6533('0x40')]:undefined)||''}];case _0x6533('0x43'):return[{'name':_0x6533('0x44'),'value':_0x3d65d9[_0x6533('0x44')]||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9['attrs'][0x0]?_0x3d65d9[_0x6533('0x3f')][0x0][_0x6533('0x40')]:undefined)||_0x6533('0x45')},{'name':_0x6533('0x46'),'value':_0x3d65d9[_0x6533('0x46')]||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9['attrs'][0x1]?_0x3d65d9[_0x6533('0x3f')][0x1][_0x6533('0x40')]:undefined)||_0x6533('0x47')},{'name':_0x6533('0x48'),'value':_0x3d65d9['attrFontSize']||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9['attrs'][0x2]?_0x3d65d9[_0x6533('0x3f')][0x2]['value']:undefined)||0xc}];case _0x6533('0x49'):return[{'name':_0x6533('0x4a'),'value':_0x3d65d9[_0x6533('0x4a')]||(_0x3d65d9['attrs']&&_0x3d65d9['attrs'][0x0]?_0x3d65d9[_0x6533('0x3f')][0x0][_0x6533('0x40')]:undefined)||'total'},{'name':_0x6533('0x4b'),'value':_0x3d65d9[_0x6533('0x4b')]||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9[_0x6533('0x3f')][0x1]?_0x3d65d9['attrs'][0x1][_0x6533('0x40')]:undefined)||[]},{'name':'attrFontSize','value':_0x3d65d9['attrFontSize']||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9['attrs'][0x2]?_0x3d65d9[_0x6533('0x3f')][0x2][_0x6533('0x40')]:undefined)||0x14}];case _0x6533('0x4c'):case _0x6533('0x4d'):return[{'name':'attrSerie1','value':_0x3d65d9[_0x6533('0x4e')]||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9[_0x6533('0x3f')][0x0]?_0x3d65d9[_0x6533('0x3f')][0x0][_0x6533('0x40')]:undefined)||_0x6533('0x4f')},{'name':_0x6533('0x50'),'value':_0x3d65d9[_0x6533('0x50')]||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9['attrs'][0x1]?_0x3d65d9[_0x6533('0x3f')][0x1][_0x6533('0x40')]:undefined)||null},{'name':'attrSerie3','value':_0x3d65d9[_0x6533('0x51')]||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9[_0x6533('0x3f')][0x2]?_0x3d65d9[_0x6533('0x3f')][0x2][_0x6533('0x40')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x3d65d9[_0x6533('0x4b')]||(_0x3d65d9['attrs']&&_0x3d65d9[_0x6533('0x3f')][0x3]?_0x3d65d9[_0x6533('0x3f')][0x3]['value']:undefined)||[]}];case _0x6533('0x52'):return[{'name':'attrReport','type':_0x3d65d9['reportType']||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9['attrs'][0x0]?_0x3d65d9['attrs'][0x0]['type']:undefined)||null,'value':_0x3d65d9[_0x6533('0x53')]||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9['attrs'][0x0]?_0x3d65d9[_0x6533('0x3f')][0x0][_0x6533('0x40')]:undefined)||null},{'name':_0x6533('0x54'),'value':_0x3d65d9[_0x6533('0x54')]||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9[_0x6533('0x3f')][0x1]?_0x3d65d9[_0x6533('0x3f')][0x1][_0x6533('0x40')]:undefined)||0x0}];default:return[];}}catch(_0x256e16){logger['error'](_0x6533('0x55'),JSON['stringify'](_0x256e16));return[];}}exports[_0x6533('0x56')]=function(_0x461ddb,_0x3b4195){if(_0x461ddb[_0x6533('0x57')]){_0x461ddb[_0x6533('0x57')]['attrs']=widgetAttributes(_0x461ddb['body']);}return db[_0x6533('0x30')][_0x6533('0x56')](_0x461ddb['body'],{})['then'](respondWithResult(_0x3b4195,0xc9))[_0x6533('0x3b')](handleError(_0x3b4195,null));};exports[_0x6533('0x58')]=function(_0x10142d,_0x5b8517){if(_0x10142d[_0x6533('0x57')]['id']){delete _0x10142d['body']['id'];}_0x10142d[_0x6533('0x57')][_0x6533('0x3f')]=widgetAttributes(_0x10142d['body']);return db['DashboardItem'][_0x6533('0x3a')]({'where':{'id':_0x10142d[_0x6533('0x3c')]['id']}})[_0x6533('0x27')](handleEntityNotFound(_0x5b8517,null))[_0x6533('0x27')](saveUpdates(_0x10142d[_0x6533('0x57')],null))[_0x6533('0x27')](respondWithResult(_0x5b8517,null))[_0x6533('0x3b')](handleError(_0x5b8517,null));};
\ No newline at end of file
index 9fbed71..4031be3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c62=['remove','emit','hasOwnProperty','hook','exports','events','DashboardItem','setMaxListeners','save','update'];(function(_0x13caea,_0x45481c){var _0x20b784=function(_0x3125c4){while(--_0x3125c4){_0x13caea['push'](_0x13caea['shift']());}};_0x20b784(++_0x45481c);}(_0x6c62,0x195));var _0x26c6=function(_0x278f93,_0x5d74c6){_0x278f93=_0x278f93-0x0;var _0x47d224=_0x6c62[_0x278f93];return _0x47d224;};'use strict';var EventEmitter=require(_0x26c6('0x0'));var DashboardItem=require('../../mysqldb')['db'][_0x26c6('0x1')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x26c6('0x2')](0x0);var events={'afterCreate':_0x26c6('0x3'),'afterUpdate':_0x26c6('0x4'),'afterDestroy':_0x26c6('0x5')};function emitEvent(_0x1685d9){return function(_0x265a4c,_0x32b518,_0x5b8750){DashboardItemEvents[_0x26c6('0x6')](_0x1685d9+':'+_0x265a4c['id'],_0x265a4c);DashboardItemEvents[_0x26c6('0x6')](_0x1685d9,_0x265a4c);_0x5b8750(null);};}for(var e in events){if(events[_0x26c6('0x7')](e)){var event=events[e];DashboardItem[_0x26c6('0x8')](e,emitEvent(event));}}module[_0x26c6('0x9')]=DashboardItemEvents;
\ No newline at end of file
+var _0x20b6=['setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','DashboardItem'];(function(_0x4f7ccf,_0x55d1f1){var _0x43bba2=function(_0x189914){while(--_0x189914){_0x4f7ccf['push'](_0x4f7ccf['shift']());}};_0x43bba2(++_0x55d1f1);}(_0x20b6,0x1ab));var _0x620b=function(_0x41bfa8,_0x2222f0){_0x41bfa8=_0x41bfa8-0x0;var _0x5a689e=_0x20b6[_0x41bfa8];return _0x5a689e;};'use strict';var EventEmitter=require(_0x620b('0x0'));var DashboardItem=require(_0x620b('0x1'))['db'][_0x620b('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x620b('0x3')](0x0);var events={'afterCreate':_0x620b('0x4'),'afterUpdate':'update','afterDestroy':_0x620b('0x5')};function emitEvent(_0x5ec738){return function(_0x45ba0e,_0x4f51c9,_0x1f5d79){DashboardItemEvents[_0x620b('0x6')](_0x5ec738+':'+_0x45ba0e['id'],_0x45ba0e);DashboardItemEvents['emit'](_0x5ec738,_0x45ba0e);_0x1f5d79(null);};}for(var e in events){if(events[_0x620b('0x7')](e)){var event=events[e];DashboardItem[_0x620b('0x8')](e,emitEvent(event));}}module[_0x620b('0x9')]=DashboardItemEvents;
\ No newline at end of file
index baba657..3e908b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe299=['define','DashboardItem','dashboard_items','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./dashboardItem.attributes','exports'];(function(_0xe775be,_0x4822af){var _0x49e73c=function(_0x225efd){while(--_0x225efd){_0xe775be['push'](_0xe775be['shift']());}};_0x49e73c(++_0x4822af);}(_0xe299,0x16f));var _0x9e29=function(_0x9f35e7,_0x2095dd){_0x9f35e7=_0x9f35e7-0x0;var _0x3d7c68=_0xe299[_0x9f35e7];return _0x3d7c68;};'use strict';var _=require(_0x9e29('0x0'));var util=require(_0x9e29('0x1'));var logger=require(_0x9e29('0x2'))('api');var moment=require('moment');var BPromise=require(_0x9e29('0x3'));var rp=require(_0x9e29('0x4'));var fs=require('fs');var path=require(_0x9e29('0x5'));var rimraf=require(_0x9e29('0x6'));var config=require(_0x9e29('0x7'));var attributes=require(_0x9e29('0x8'));module[_0x9e29('0x9')]=function(_0x56f89b,_0x458ae0){return _0x56f89b[_0x9e29('0xa')](_0x9e29('0xb'),attributes,{'tableName':_0x9e29('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x307e=['bluebird','request-promise','path','rimraf','./dashboardItem.attributes','define','DashboardItem','dashboard_items','../../config/logger','api','moment'];(function(_0x255642,_0x923271){var _0xf12044=function(_0x47725a){while(--_0x47725a){_0x255642['push'](_0x255642['shift']());}};_0xf12044(++_0x923271);}(_0x307e,0x1ec));var _0xe307=function(_0xa255c2,_0x1cc656){_0xa255c2=_0xa255c2-0x0;var _0x7cd61c=_0x307e[_0xa255c2];return _0x7cd61c;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe307('0x0'))(_0xe307('0x1'));var moment=require(_0xe307('0x2'));var BPromise=require(_0xe307('0x3'));var rp=require(_0xe307('0x4'));var fs=require('fs');var path=require(_0xe307('0x5'));var rimraf=require(_0xe307('0x6'));var config=require('../../config/environment');var attributes=require(_0xe307('0x7'));module['exports']=function(_0x275a35,_0x2eaf40){return _0x275a35[_0xe307('0x8')](_0xe307('0x9'),attributes,{'tableName':_0xe307('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 78c71a8..475b1f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3f8=['util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','./dashboardItem.socket','register','request\x20sent','error','code','DashboardItem,\x20%s,\x20%s','message','info','result','lodash'];(function(_0x558e48,_0x338922){var _0x4b912e=function(_0x3636db){while(--_0x3636db){_0x558e48['push'](_0x558e48['shift']());}};_0x4b912e(++_0x338922);}(_0xf3f8,0xf1));var _0x8f3f=function(_0x25e741,_0x53ec1d){_0x25e741=_0x25e741-0x0;var _0x1b4a42=_0xf3f8[_0x25e741];return _0x1b4a42;};'use strict';var _=require(_0x8f3f('0x0'));var util=require(_0x8f3f('0x1'));var moment=require('moment');var BPromise=require(_0x8f3f('0x2'));var rs=require(_0x8f3f('0x3'));var fs=require('fs');var Redis=require(_0x8f3f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8f3f('0x5'));var logger=require(_0x8f3f('0x6'))(_0x8f3f('0x7'));var config=require(_0x8f3f('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x8f3f('0x9')][_0x8f3f('0xa')]({'port':0x232a});config[_0x8f3f('0xb')]=_['defaults'](config[_0x8f3f('0xb')],{'host':_0x8f3f('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8f3f('0xb')]));require(_0x8f3f('0xd'))[_0x8f3f('0xe')](socket);function respondWithRpcPromise(_0x4a89be,_0x354148,_0x1b8e89){return new BPromise(function(_0x1662ff,_0x102677){return client['request'](_0x4a89be,_0x1b8e89)['then'](function(_0x342789){logger['info']('DashboardItem,\x20%s,\x20%s',_0x354148,'request\x20sent');logger['debug']('DashboardItem,\x20%s,\x20%s,\x20%s',_0x354148,_0x8f3f('0xf'),JSON['stringify'](_0x342789));if(_0x342789[_0x8f3f('0x10')]){if(_0x342789[_0x8f3f('0x10')][_0x8f3f('0x11')]===0x1f4){logger[_0x8f3f('0x10')](_0x8f3f('0x12'),_0x354148,_0x342789['error'][_0x8f3f('0x13')]);return _0x102677(_0x342789[_0x8f3f('0x10')][_0x8f3f('0x13')]);}logger[_0x8f3f('0x10')](_0x8f3f('0x12'),_0x354148,_0x342789[_0x8f3f('0x10')]['message']);return _0x1662ff(_0x342789[_0x8f3f('0x10')]['message']);}else{logger[_0x8f3f('0x14')](_0x8f3f('0x12'),_0x354148,_0x8f3f('0xf'));_0x1662ff(_0x342789[_0x8f3f('0x15')]['message']);}})['catch'](function(_0x2477a6){logger[_0x8f3f('0x10')](_0x8f3f('0x12'),_0x354148,_0x2477a6);_0x102677(_0x2477a6);});});}
\ No newline at end of file
+var _0x113e=['request','then','info','debug','DashboardItem,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','DashboardItem,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./dashboardItem.socket'];(function(_0x4b0290,_0x188c34){var _0x4bd9f4=function(_0x357f3f){while(--_0x357f3f){_0x4b0290['push'](_0x4b0290['shift']());}};_0x4bd9f4(++_0x188c34);}(_0x113e,0x79));var _0xe113=function(_0x1762b4,_0x33d836){_0x1762b4=_0x1762b4-0x0;var _0x29beda=_0x113e[_0x1762b4];return _0x29beda;};'use strict';var _=require(_0xe113('0x0'));var util=require(_0xe113('0x1'));var moment=require(_0xe113('0x2'));var BPromise=require('bluebird');var rs=require(_0xe113('0x3'));var fs=require('fs');var Redis=require(_0xe113('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe113('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xe113('0x6'));var jayson=require(_0xe113('0x7'));var client=jayson[_0xe113('0x8')][_0xe113('0x9')]({'port':0x232a});config[_0xe113('0xa')]=_['defaults'](config[_0xe113('0xa')],{'host':_0xe113('0xb'),'port':0x18eb});var socket=require(_0xe113('0xc'))(new Redis(config['redis']));require(_0xe113('0xd'))['register'](socket);function respondWithRpcPromise(_0x3bb464,_0x4ed915,_0x7a7923){return new BPromise(function(_0x22354f,_0x29e25c){return client[_0xe113('0xe')](_0x3bb464,_0x7a7923)[_0xe113('0xf')](function(_0x3212eb){logger[_0xe113('0x10')]('DashboardItem,\x20%s,\x20%s',_0x4ed915,'request\x20sent');logger[_0xe113('0x11')](_0xe113('0x12'),_0x4ed915,_0xe113('0x13'),JSON[_0xe113('0x14')](_0x3212eb));if(_0x3212eb[_0xe113('0x15')]){if(_0x3212eb[_0xe113('0x15')][_0xe113('0x16')]===0x1f4){logger[_0xe113('0x15')]('DashboardItem,\x20%s,\x20%s',_0x4ed915,_0x3212eb['error']['message']);return _0x29e25c(_0x3212eb['error']['message']);}logger[_0xe113('0x15')](_0xe113('0x17'),_0x4ed915,_0x3212eb[_0xe113('0x15')]['message']);return _0x22354f(_0x3212eb['error'][_0xe113('0x18')]);}else{logger[_0xe113('0x10')](_0xe113('0x17'),_0x4ed915,_0xe113('0x13'));_0x22354f(_0x3212eb[_0xe113('0x19')][_0xe113('0x18')]);}})[_0xe113('0x1a')](function(_0x224220){logger[_0xe113('0x15')](_0xe113('0x17'),_0x4ed915,_0x224220);_0x29e25c(_0x224220);});});}
\ No newline at end of file
index 8b62225..b6c6c57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dbf=['./dashboardItem.events','save','remove','emit','removeListener','register','length','dashboardItem:'];(function(_0x5f5862,_0xd1c9d2){var _0x4a83df=function(_0x59250a){while(--_0x59250a){_0x5f5862['push'](_0x5f5862['shift']());}};_0x4a83df(++_0xd1c9d2);}(_0x7dbf,0xd0));var _0xf7db=function(_0x305b55,_0x991130){_0x305b55=_0x305b55-0x0;var _0x45b3e7=_0x7dbf[_0x305b55];return _0x45b3e7;};'use strict';var DashboardItemEvents=require(_0xf7db('0x0'));var events=[_0xf7db('0x1'),_0xf7db('0x2'),'update'];function createListener(_0x19234e,_0x43abb2){return function(_0x2cbd8e){_0x43abb2[_0xf7db('0x3')](_0x19234e,_0x2cbd8e);};}function removeListener(_0x10259d,_0x1ed21b){return function(){DashboardItemEvents[_0xf7db('0x4')](_0x10259d,_0x1ed21b);};}exports[_0xf7db('0x5')]=function(_0x165a26){for(var _0x5ebe84=0x0,_0x2bbebb=events[_0xf7db('0x6')];_0x5ebe84<_0x2bbebb;_0x5ebe84++){var _0x103db5=events[_0x5ebe84];var _0x176e41=createListener(_0xf7db('0x7')+_0x103db5,_0x165a26);DashboardItemEvents['on'](_0x103db5,_0x176e41);}};
\ No newline at end of file
+var _0x964e=['./dashboardItem.events','update','emit','removeListener','register'];(function(_0xe23de1,_0x2cd4b9){var _0x59d143=function(_0x5039b8){while(--_0x5039b8){_0xe23de1['push'](_0xe23de1['shift']());}};_0x59d143(++_0x2cd4b9);}(_0x964e,0xeb));var _0xe964=function(_0x328a46,_0x55eb2e){_0x328a46=_0x328a46-0x0;var _0x140046=_0x964e[_0x328a46];return _0x140046;};'use strict';var DashboardItemEvents=require(_0xe964('0x0'));var events=['save','remove',_0xe964('0x1')];function createListener(_0x2c1eec,_0x3d130d){return function(_0x28b82a){_0x3d130d[_0xe964('0x2')](_0x2c1eec,_0x28b82a);};}function removeListener(_0x580df5,_0x1bbc4c){return function(){DashboardItemEvents[_0xe964('0x3')](_0x580df5,_0x1bbc4c);};}exports[_0xe964('0x4')]=function(_0x5cc2cb){for(var _0x5c492f=0x0,_0x6d1085=events['length'];_0x5c492f<_0x6d1085;_0x5c492f++){var _0x2c1881=events[_0x5c492f];var _0x44dd5c=createListener('dashboardItem:'+_0x2c1881,_0x5cc2cb);DashboardItemEvents['on'](_0x2c1881,_0x44dd5c);}};
\ No newline at end of file
index 4c47e6a..84c13d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa61c=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa61c,0x160));var _0xca61=function(_0x3682b3,_0x5a604d){_0x3682b3=_0x3682b3-0x0;var _0x472b5d=_0xa61c[_0x3682b3];return _0x472b5d;};'use strict';var multer=require(_0xca61('0x0'));var util=require(_0xca61('0x1'));var path=require(_0xca61('0x2'));var timeout=require(_0xca61('0x3'));var express=require(_0xca61('0x4'));var router=express[_0xca61('0x5')]();var fs_extra=require(_0xca61('0x6'));var auth=require(_0xca61('0x7'));var interaction=require(_0xca61('0x8'));var config=require(_0xca61('0x9'));var controller=require(_0xca61('0xa'));router[_0xca61('0xb')](_0xca61('0xc'),auth[_0xca61('0xd')](),controller[_0xca61('0xe')]);router[_0xca61('0xf')]('/',auth[_0xca61('0xd')](),controller[_0xca61('0x10')]);router[_0xca61('0x11')](_0xca61('0xc'),auth['isAuthenticated'](),controller[_0xca61('0x12')]);router[_0xca61('0x13')]('/:id',auth[_0xca61('0xd')](),controller[_0xca61('0x14')]);module[_0xca61('0x15')]=router;
\ No newline at end of file
+var _0xcac4=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./dashboardItem.controller','isAuthenticated','show','post','/:id','update','delete','multer','util','path','express'];(function(_0x1d1d09,_0x504d77){var _0x8827e=function(_0x4f3128){while(--_0x4f3128){_0x1d1d09['push'](_0x1d1d09['shift']());}};_0x8827e(++_0x504d77);}(_0xcac4,0xec));var _0x4cac=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xcac4[_0x4ea69d];return _0x5318e0;};'use strict';var multer=require(_0x4cac('0x0'));var util=require(_0x4cac('0x1'));var path=require(_0x4cac('0x2'));var timeout=require('connect-timeout');var express=require(_0x4cac('0x3'));var router=express[_0x4cac('0x4')]();var fs_extra=require(_0x4cac('0x5'));var auth=require(_0x4cac('0x6'));var interaction=require(_0x4cac('0x7'));var config=require('../../config/environment');var controller=require(_0x4cac('0x8'));router['get']('/:id',auth[_0x4cac('0x9')](),controller[_0x4cac('0xa')]);router[_0x4cac('0xb')]('/',auth[_0x4cac('0x9')](),controller['create']);router['put'](_0x4cac('0xc'),auth[_0x4cac('0x9')](),controller[_0x4cac('0xd')]);router[_0x4cac('0xe')](_0x4cac('0xc'),auth[_0x4cac('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 3a9e5a3..1ac58af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7fa=['STRING','ENUM','second','sequelize'];(function(_0x23c791,_0xa8bee3){var _0x57b777=function(_0x25f8c4){while(--_0x25f8c4){_0x23c791['push'](_0x23c791['shift']());}};_0x57b777(++_0xa8bee3);}(_0xe7fa,0x9b));var _0xae7f=function(_0x1f7f61,_0x441512){_0x1f7f61=_0x1f7f61-0x0;var _0x1db8d1=_0xe7fa[_0x1f7f61];return _0x1db8d1;};'use strict';var Sequelize=require(_0xae7f('0x0'));module['exports']={'name':{'type':Sequelize[_0xae7f('0x1')],'allowNull':![]},'level':{'type':Sequelize[_0xae7f('0x2')]('first',_0xae7f('0x3'),'third'),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize[_0xae7f('0x1')]}};
\ No newline at end of file
+var _0x4a4a=['ENUM','first','third','STRING','exports'];(function(_0x33823e,_0x311aea){var _0x1b0ada=function(_0xd27f8c){while(--_0xd27f8c){_0x33823e['push'](_0x33823e['shift']());}};_0x1b0ada(++_0x311aea);}(_0x4a4a,0x167));var _0xa4a4=function(_0x40a08c,_0x15d47e){_0x40a08c=_0x40a08c-0x0;var _0x3481a4=_0x4a4a[_0x40a08c];return _0x3481a4;};'use strict';var Sequelize=require('sequelize');module[_0xa4a4('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'level':{'type':Sequelize[_0xa4a4('0x1')](_0xa4a4('0x2'),'second',_0xa4a4('0x3')),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize[_0xa4a4('0x4')]}};
\ No newline at end of file
index b49c4da..c9219ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dd6=['UserProfileResource','stack','send','index','map','Disposition','fieldName','type','model','name','query','filters','attributes','fields','length','order','sort','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','keys','rawAttributes','intersection','find','catch','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','save','update','then','get','Dispositions'];(function(_0x10e7f7,_0x3fb7a6){var _0x12760c=function(_0x40edc5){while(--_0x40edc5){_0x10e7f7['push'](_0x10e7f7['shift']());}};_0x12760c(++_0x3fb7a6);}(_0x3dd6,0xcf));var _0x63dd=function(_0x7c13ed,_0x4d9dd5){_0x7c13ed=_0x7c13ed-0x0;var _0x4cad66=_0x3dd6[_0x7c13ed];return _0x4cad66;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x63dd('0x0'));var rp=require(_0x63dd('0x1'));var moment=require(_0x63dd('0x2'));var BPromise=require(_0x63dd('0x3'));var Mustache=require(_0x63dd('0x4'));var util=require(_0x63dd('0x5'));var path=require('path');var sox=require(_0x63dd('0x6'));var csv=require('to-csv');var ejs=require(_0x63dd('0x7'));var fs=require('fs');var fs_extra=require(_0x63dd('0x8'));var _=require(_0x63dd('0x9'));var squel=require(_0x63dd('0xa'));var crypto=require(_0x63dd('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x63dd('0xc'));var toCsv=require(_0x63dd('0xd'));var querystring=require(_0x63dd('0xe'));var Papa=require(_0x63dd('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x63dd('0x10'));var as=require(_0x63dd('0x11'));var hardwareService=require(_0x63dd('0x12'));var logger=require(_0x63dd('0x13'))(_0x63dd('0x14'));var utils=require('../../config/utils');var config=require(_0x63dd('0x15'));var licenseUtil=require(_0x63dd('0x16'));var db=require(_0x63dd('0x17'))['db'];function respondWithStatusCode(_0x35ba9e,_0x5a75b1){_0x5a75b1=_0x5a75b1||0xcc;return function(_0x4a842d){if(_0x4a842d){return _0x35ba9e[_0x63dd('0x18')](_0x5a75b1);}return _0x35ba9e[_0x63dd('0x19')](_0x5a75b1)[_0x63dd('0x1a')]();};}function respondWithResult(_0x313f45,_0x3a0981){_0x3a0981=_0x3a0981||0xc8;return function(_0x56c030){if(_0x56c030){return _0x313f45['status'](_0x3a0981)[_0x63dd('0x1b')](_0x56c030);}};}function respondWithFilteredResult(_0xa6ffcf,_0x2bb9f6){return function(_0x4d6623){if(_0x4d6623){var _0x4144eb=typeof _0x2bb9f6[_0x63dd('0x1c')]===_0x63dd('0x1d')&&typeof _0x2bb9f6['limit']===_0x63dd('0x1d');var _0x368f85=_0x4d6623[_0x63dd('0x1e')];var _0xaf3376=_0x4144eb?0x0:_0x2bb9f6[_0x63dd('0x1c')];var _0x19f8db=_0x4144eb?_0x4d6623[_0x63dd('0x1e')]:_0x2bb9f6[_0x63dd('0x1c')]+_0x2bb9f6[_0x63dd('0x1f')];var _0x8f2691;if(_0x19f8db>=_0x368f85){_0x19f8db=_0x368f85;_0x8f2691=0xc8;}else{_0x8f2691=0xce;}_0xa6ffcf[_0x63dd('0x19')](_0x8f2691);return _0xa6ffcf[_0x63dd('0x20')]('Content-Range',_0xaf3376+'-'+_0x19f8db+'/'+_0x368f85)[_0x63dd('0x1b')](_0x4d6623);}return null;};}function patchUpdates(_0x596046){return function(_0x466dac){try{jsonpatch[_0x63dd('0x21')](_0x466dac,_0x596046,!![]);}catch(_0x22ad3d){return BPromise['reject'](_0x22ad3d);}return _0x466dac[_0x63dd('0x22')]();};}function saveUpdates(_0x38bd01,_0x4a1622){return function(_0x887c58){if(_0x887c58){return _0x887c58[_0x63dd('0x23')](_0x38bd01)[_0x63dd('0x24')](function(_0xf8bc2){return _0xf8bc2;});}return null;};}function removeEntity(_0x3fd7ec,_0x379338){return function(_0x4b2451){if(_0x4b2451){return _0x4b2451['destroy']()['then'](function(){var _0x340725=_0x4b2451[_0x63dd('0x25')]({'plain':!![]});var _0x540a9f=_0x63dd('0x26');return db[_0x63dd('0x27')]['destroy']({'where':{'type':_0x540a9f,'resourceId':_0x340725['id']}})[_0x63dd('0x24')](function(){return _0x4b2451;});})[_0x63dd('0x24')](function(){_0x3fd7ec['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2417f0,_0x474f3e){return function(_0x105618){if(!_0x105618){_0x2417f0[_0x63dd('0x18')](0x194);}return _0x105618;};}function handleError(_0x15a13d,_0x47aa25){_0x47aa25=_0x47aa25||0x1f4;return function(_0x7ca662){logger['error'](_0x7ca662[_0x63dd('0x28')]);if(_0x7ca662['name']){delete _0x7ca662['name'];}_0x15a13d[_0x63dd('0x19')](_0x47aa25)[_0x63dd('0x29')](_0x7ca662);};}exports[_0x63dd('0x2a')]=function(_0x3da8d5,_0x2734c9){var _0x452daf={},_0x5525fd={},_0x5b1ed6={'count':0x0,'rows':[]};var _0x539428=_[_0x63dd('0x2b')](db[_0x63dd('0x2c')]['rawAttributes'],function(_0x14be75){return{'name':_0x14be75[_0x63dd('0x2d')],'type':_0x14be75[_0x63dd('0x2e')]['key']};});_0x5525fd[_0x63dd('0x2f')]=_[_0x63dd('0x2b')](_0x539428,_0x63dd('0x30'));_0x5525fd[_0x63dd('0x31')]=_['keys'](_0x3da8d5['query']);_0x5525fd[_0x63dd('0x32')]=_['intersection'](_0x5525fd[_0x63dd('0x2f')],_0x5525fd[_0x63dd('0x31')]);_0x452daf[_0x63dd('0x33')]=_['intersection'](_0x5525fd[_0x63dd('0x2f')],qs[_0x63dd('0x34')](_0x3da8d5[_0x63dd('0x31')]['fields']));_0x452daf[_0x63dd('0x33')]=_0x452daf[_0x63dd('0x33')][_0x63dd('0x35')]?_0x452daf[_0x63dd('0x33')]:_0x5525fd[_0x63dd('0x2f')];if(!_0x3da8d5[_0x63dd('0x31')]['hasOwnProperty']('nolimit')){_0x452daf[_0x63dd('0x1f')]=qs[_0x63dd('0x1f')](_0x3da8d5[_0x63dd('0x31')]['limit']);_0x452daf['offset']=qs['offset'](_0x3da8d5[_0x63dd('0x31')][_0x63dd('0x1c')]);}_0x452daf[_0x63dd('0x36')]=qs[_0x63dd('0x37')](_0x3da8d5[_0x63dd('0x31')][_0x63dd('0x37')]);_0x452daf['where']=qs[_0x63dd('0x32')](_['pick'](_0x3da8d5[_0x63dd('0x31')],_0x5525fd[_0x63dd('0x32')]),_0x539428);if(_0x3da8d5[_0x63dd('0x31')][_0x63dd('0x38')]){_0x452daf[_0x63dd('0x39')]=_['merge'](_0x452daf['where'],{'$or':_[_0x63dd('0x2b')](_0x539428,function(_0x2aca73){if(_0x2aca73['type']!==_0x63dd('0x3a')){var _0x227eb8={};_0x227eb8[_0x2aca73[_0x63dd('0x30')]]={'$like':'%'+_0x3da8d5[_0x63dd('0x31')][_0x63dd('0x38')]+'%'};return _0x227eb8;}})});}_0x452daf=_[_0x63dd('0x3b')]({},_0x452daf,_0x3da8d5[_0x63dd('0x3c')]);var _0x475964={'where':_0x452daf['where']};return db[_0x63dd('0x2c')][_0x63dd('0x1e')](_0x475964)[_0x63dd('0x24')](function(_0x5e6f53){_0x5b1ed6[_0x63dd('0x1e')]=_0x5e6f53;if(_0x3da8d5[_0x63dd('0x31')][_0x63dd('0x3d')]){_0x452daf[_0x63dd('0x3e')]=[{'all':!![]}];}return db[_0x63dd('0x2c')][_0x63dd('0x3f')](_0x452daf);})[_0x63dd('0x24')](function(_0x55dc09){_0x5b1ed6[_0x63dd('0x40')]=_0x55dc09;return _0x5b1ed6;})[_0x63dd('0x24')](respondWithFilteredResult(_0x2734c9,_0x452daf))['catch'](handleError(_0x2734c9,null));};exports[_0x63dd('0x41')]=function(_0x1ebd3d,_0x3d7793){var _0x1349cd={'raw':!![],'where':{'id':_0x1ebd3d[_0x63dd('0x42')]['id']}},_0x46c0e2={};_0x46c0e2[_0x63dd('0x2f')]=_[_0x63dd('0x43')](db[_0x63dd('0x2c')][_0x63dd('0x44')]);_0x46c0e2['query']=_[_0x63dd('0x43')](_0x1ebd3d[_0x63dd('0x31')]);_0x46c0e2[_0x63dd('0x32')]=_['intersection'](_0x46c0e2[_0x63dd('0x2f')],_0x46c0e2['query']);_0x1349cd[_0x63dd('0x33')]=_[_0x63dd('0x45')](_0x46c0e2[_0x63dd('0x2f')],qs[_0x63dd('0x34')](_0x1ebd3d[_0x63dd('0x31')][_0x63dd('0x34')]));_0x1349cd[_0x63dd('0x33')]=_0x1349cd[_0x63dd('0x33')][_0x63dd('0x35')]?_0x1349cd[_0x63dd('0x33')]:_0x46c0e2['model'];if(_0x1ebd3d['query']['includeAll']){_0x1349cd['include']=[{'all':!![]}];}_0x1349cd=_[_0x63dd('0x3b')]({},_0x1349cd,_0x1ebd3d[_0x63dd('0x3c')]);return db[_0x63dd('0x2c')][_0x63dd('0x46')](_0x1349cd)['then'](handleEntityNotFound(_0x3d7793,null))[_0x63dd('0x24')](respondWithResult(_0x3d7793,null))[_0x63dd('0x47')](handleError(_0x3d7793,null));};exports[_0x63dd('0x48')]=function(_0x53c856,_0x18b40e){return db['Disposition'][_0x63dd('0x48')](_0x53c856[_0x63dd('0x49')],{})[_0x63dd('0x24')](function(_0xd379d3){var _0x2d009c=_0x53c856[_0x63dd('0x4a')][_0x63dd('0x25')]({'plain':!![]});if(!_0x2d009c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2d009c[_0x63dd('0x4b')]===_0x63dd('0x4a')){var _0x5b9014=_0xd379d3[_0x63dd('0x25')]({'plain':!![]});var _0x78b332='Dispositions';return db[_0x63dd('0x4c')]['find']({'where':{'name':_0x78b332,'userProfileId':_0x2d009c[_0x63dd('0x4d')]},'raw':!![]})[_0x63dd('0x24')](function(_0x51cf0e){if(_0x51cf0e&&_0x51cf0e[_0x63dd('0x4e')]===0x0){return db[_0x63dd('0x27')][_0x63dd('0x48')]({'name':_0x5b9014[_0x63dd('0x30')],'resourceId':_0x5b9014['id'],'type':_0x51cf0e[_0x63dd('0x30')],'sectionId':_0x51cf0e['id']},{})[_0x63dd('0x24')](function(){return _0xd379d3;});}else{return _0xd379d3;}})['catch'](function(_0x2d6046){logger[_0x63dd('0x4f')](_0x63dd('0x50'),_0x2d6046);throw _0x2d6046;});}return _0xd379d3;})['then'](respondWithResult(_0x18b40e,0xc9))['catch'](handleError(_0x18b40e,null));};exports[_0x63dd('0x23')]=function(_0x4bd1e8,_0x1897c0){if(_0x4bd1e8[_0x63dd('0x49')]['id']){delete _0x4bd1e8[_0x63dd('0x49')]['id'];}return db[_0x63dd('0x2c')]['find']({'where':{'id':_0x4bd1e8[_0x63dd('0x42')]['id']}})['then'](handleEntityNotFound(_0x1897c0,null))[_0x63dd('0x24')](saveUpdates(_0x4bd1e8['body'],null))[_0x63dd('0x24')](respondWithResult(_0x1897c0,null))[_0x63dd('0x47')](handleError(_0x1897c0,null));};exports[_0x63dd('0x51')]=function(_0x4e35c1,_0x2abf47){return db[_0x63dd('0x2c')][_0x63dd('0x46')]({'where':{'id':_0x4e35c1['params']['id']}})[_0x63dd('0x24')](handleEntityNotFound(_0x2abf47,null))[_0x63dd('0x24')](removeEntity(_0x2abf47,null))[_0x63dd('0x47')](handleError(_0x2abf47,null));};
\ No newline at end of file
+var _0x683f=['../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','get','Dispositions','error','name','send','index','map','fieldName','type','key','keys','filters','intersection','model','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','Disposition','includeAll','findAll','rows','catch','show','params','rawAttributes','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x35810b,_0x5149e9){var _0xb52c7=function(_0x19d43b){while(--_0x19d43b){_0x35810b['push'](_0x35810b['shift']());}};_0xb52c7(++_0x5149e9);}(_0x683f,0x18e));var _0xf683=function(_0x43d701,_0x4bb2e9){_0x43d701=_0x43d701-0x0;var _0x2ec4c6=_0x683f[_0x43d701];return _0x2ec4c6;};'use strict';var emlformat=require(_0xf683('0x0'));var rimraf=require(_0xf683('0x1'));var zipdir=require(_0xf683('0x2'));var jsonpatch=require(_0xf683('0x3'));var rp=require('request-promise');var moment=require(_0xf683('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf683('0x5'));var path=require(_0xf683('0x6'));var sox=require(_0xf683('0x7'));var csv=require(_0xf683('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf683('0x9'));var _=require(_0xf683('0xa'));var squel=require('squel');var crypto=require(_0xf683('0xb'));var jsforce=require(_0xf683('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xf683('0x8'));var querystring=require('querystring');var Papa=require(_0xf683('0xd'));var Redis=require(_0xf683('0xe'));var authService=require(_0xf683('0xf'));var qs=require(_0xf683('0x10'));var as=require(_0xf683('0x11'));var hardwareService=require(_0xf683('0x12'));var logger=require(_0xf683('0x13'))(_0xf683('0x14'));var utils=require(_0xf683('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf683('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4b2132,_0x173fae){_0x173fae=_0x173fae||0xcc;return function(_0x498f9c){if(_0x498f9c){return _0x4b2132[_0xf683('0x17')](_0x173fae);}return _0x4b2132[_0xf683('0x18')](_0x173fae)[_0xf683('0x19')]();};}function respondWithResult(_0xcec699,_0x18693a){_0x18693a=_0x18693a||0xc8;return function(_0x4e9e17){if(_0x4e9e17){return _0xcec699[_0xf683('0x18')](_0x18693a)[_0xf683('0x1a')](_0x4e9e17);}};}function respondWithFilteredResult(_0x4dd082,_0x466e64){return function(_0x4ef42c){if(_0x4ef42c){var _0x139947=typeof _0x466e64[_0xf683('0x1b')]===_0xf683('0x1c')&&typeof _0x466e64[_0xf683('0x1d')]===_0xf683('0x1c');var _0x3942ee=_0x4ef42c[_0xf683('0x1e')];var _0x2c3255=_0x139947?0x0:_0x466e64[_0xf683('0x1b')];var _0x348fbe=_0x139947?_0x4ef42c[_0xf683('0x1e')]:_0x466e64[_0xf683('0x1b')]+_0x466e64[_0xf683('0x1d')];var _0x151c1d;if(_0x348fbe>=_0x3942ee){_0x348fbe=_0x3942ee;_0x151c1d=0xc8;}else{_0x151c1d=0xce;}_0x4dd082[_0xf683('0x18')](_0x151c1d);return _0x4dd082[_0xf683('0x1f')](_0xf683('0x20'),_0x2c3255+'-'+_0x348fbe+'/'+_0x3942ee)[_0xf683('0x1a')](_0x4ef42c);}return null;};}function patchUpdates(_0x3d9dc9){return function(_0x44e312){try{jsonpatch[_0xf683('0x21')](_0x44e312,_0x3d9dc9,!![]);}catch(_0x5a5b26){return BPromise[_0xf683('0x22')](_0x5a5b26);}return _0x44e312[_0xf683('0x23')]();};}function saveUpdates(_0x2410c9,_0x17ee14){return function(_0x57cb8a){if(_0x57cb8a){return _0x57cb8a['update'](_0x2410c9)[_0xf683('0x24')](function(_0x14aebc){return _0x14aebc;});}return null;};}function removeEntity(_0x13d90a,_0xf336e3){return function(_0x43120d){if(_0x43120d){return _0x43120d[_0xf683('0x25')]()[_0xf683('0x24')](function(){var _0x71d641=_0x43120d[_0xf683('0x26')]({'plain':!![]});var _0x15589a=_0xf683('0x27');return db['UserProfileResource'][_0xf683('0x25')]({'where':{'type':_0x15589a,'resourceId':_0x71d641['id']}})[_0xf683('0x24')](function(){return _0x43120d;});})[_0xf683('0x24')](function(){_0x13d90a[_0xf683('0x18')](0xcc)[_0xf683('0x19')]();});}};}function handleEntityNotFound(_0x1a162d,_0x1c8d58){return function(_0x2ee79c){if(!_0x2ee79c){_0x1a162d[_0xf683('0x17')](0x194);}return _0x2ee79c;};}function handleError(_0x73ae31,_0x45009b){_0x45009b=_0x45009b||0x1f4;return function(_0x1441e6){logger[_0xf683('0x28')](_0x1441e6['stack']);if(_0x1441e6['name']){delete _0x1441e6[_0xf683('0x29')];}_0x73ae31['status'](_0x45009b)[_0xf683('0x2a')](_0x1441e6);};}exports[_0xf683('0x2b')]=function(_0x242442,_0x31087f){var _0x270a33={},_0x4029e9={},_0x385eb7={'count':0x0,'rows':[]};var _0x1b34d2=_[_0xf683('0x2c')](db['Disposition']['rawAttributes'],function(_0x488cf3){return{'name':_0x488cf3[_0xf683('0x2d')],'type':_0x488cf3[_0xf683('0x2e')][_0xf683('0x2f')]};});_0x4029e9['model']=_[_0xf683('0x2c')](_0x1b34d2,_0xf683('0x29'));_0x4029e9['query']=_[_0xf683('0x30')](_0x242442['query']);_0x4029e9[_0xf683('0x31')]=_[_0xf683('0x32')](_0x4029e9[_0xf683('0x33')],_0x4029e9[_0xf683('0x34')]);_0x270a33[_0xf683('0x35')]=_['intersection'](_0x4029e9[_0xf683('0x33')],qs[_0xf683('0x36')](_0x242442['query']['fields']));_0x270a33[_0xf683('0x35')]=_0x270a33[_0xf683('0x35')][_0xf683('0x37')]?_0x270a33[_0xf683('0x35')]:_0x4029e9[_0xf683('0x33')];if(!_0x242442[_0xf683('0x34')][_0xf683('0x38')](_0xf683('0x39'))){_0x270a33[_0xf683('0x1d')]=qs[_0xf683('0x1d')](_0x242442['query'][_0xf683('0x1d')]);_0x270a33['offset']=qs[_0xf683('0x1b')](_0x242442[_0xf683('0x34')][_0xf683('0x1b')]);}_0x270a33['order']=qs[_0xf683('0x3a')](_0x242442[_0xf683('0x34')][_0xf683('0x3a')]);_0x270a33[_0xf683('0x3b')]=qs[_0xf683('0x31')](_[_0xf683('0x3c')](_0x242442[_0xf683('0x34')],_0x4029e9[_0xf683('0x31')]),_0x1b34d2);if(_0x242442[_0xf683('0x34')][_0xf683('0x3d')]){_0x270a33['where']=_[_0xf683('0x3e')](_0x270a33[_0xf683('0x3b')],{'$or':_[_0xf683('0x2c')](_0x1b34d2,function(_0xb38eb9){if(_0xb38eb9[_0xf683('0x2e')]!==_0xf683('0x3f')){var _0x1d066c={};_0x1d066c[_0xb38eb9['name']]={'$like':'%'+_0x242442[_0xf683('0x34')][_0xf683('0x3d')]+'%'};return _0x1d066c;}})});}_0x270a33=_[_0xf683('0x3e')]({},_0x270a33,_0x242442['options']);var _0x5468c2={'where':_0x270a33[_0xf683('0x3b')]};return db[_0xf683('0x40')][_0xf683('0x1e')](_0x5468c2)[_0xf683('0x24')](function(_0x120af2){_0x385eb7[_0xf683('0x1e')]=_0x120af2;if(_0x242442[_0xf683('0x34')][_0xf683('0x41')]){_0x270a33['include']=[{'all':!![]}];}return db['Disposition'][_0xf683('0x42')](_0x270a33);})[_0xf683('0x24')](function(_0x2569e3){_0x385eb7[_0xf683('0x43')]=_0x2569e3;return _0x385eb7;})[_0xf683('0x24')](respondWithFilteredResult(_0x31087f,_0x270a33))[_0xf683('0x44')](handleError(_0x31087f,null));};exports[_0xf683('0x45')]=function(_0x3a8fb2,_0x2ebdc1){var _0x1d55ef={'raw':!![],'where':{'id':_0x3a8fb2[_0xf683('0x46')]['id']}},_0x53a700={};_0x53a700['model']=_[_0xf683('0x30')](db[_0xf683('0x40')][_0xf683('0x47')]);_0x53a700['query']=_[_0xf683('0x30')](_0x3a8fb2['query']);_0x53a700[_0xf683('0x31')]=_[_0xf683('0x32')](_0x53a700[_0xf683('0x33')],_0x53a700[_0xf683('0x34')]);_0x1d55ef[_0xf683('0x35')]=_[_0xf683('0x32')](_0x53a700['model'],qs[_0xf683('0x36')](_0x3a8fb2[_0xf683('0x34')]['fields']));_0x1d55ef[_0xf683('0x35')]=_0x1d55ef[_0xf683('0x35')]['length']?_0x1d55ef['attributes']:_0x53a700[_0xf683('0x33')];if(_0x3a8fb2['query'][_0xf683('0x41')]){_0x1d55ef[_0xf683('0x48')]=[{'all':!![]}];}_0x1d55ef=_[_0xf683('0x3e')]({},_0x1d55ef,_0x3a8fb2['options']);return db[_0xf683('0x40')][_0xf683('0x49')](_0x1d55ef)[_0xf683('0x24')](handleEntityNotFound(_0x2ebdc1,null))[_0xf683('0x24')](respondWithResult(_0x2ebdc1,null))[_0xf683('0x44')](handleError(_0x2ebdc1,null));};exports['create']=function(_0x602d8b,_0x405628){return db[_0xf683('0x40')][_0xf683('0x4a')](_0x602d8b['body'],{})[_0xf683('0x24')](function(_0x339273){var _0x43230e=_0x602d8b[_0xf683('0x4b')][_0xf683('0x26')]({'plain':!![]});if(!_0x43230e)throw new Error(_0xf683('0x4c'));if(_0x43230e[_0xf683('0x4d')]===_0xf683('0x4b')){var _0x41fe4a=_0x339273[_0xf683('0x26')]({'plain':!![]});var _0x10d2e6='Dispositions';return db[_0xf683('0x4e')]['find']({'where':{'name':_0x10d2e6,'userProfileId':_0x43230e[_0xf683('0x4f')]},'raw':!![]})[_0xf683('0x24')](function(_0x3d76b6){if(_0x3d76b6&&_0x3d76b6['autoAssociation']===0x0){return db[_0xf683('0x50')][_0xf683('0x4a')]({'name':_0x41fe4a[_0xf683('0x29')],'resourceId':_0x41fe4a['id'],'type':_0x3d76b6['name'],'sectionId':_0x3d76b6['id']},{})['then'](function(){return _0x339273;});}else{return _0x339273;}})[_0xf683('0x44')](function(_0x46cba9){logger[_0xf683('0x28')](_0xf683('0x51'),_0x46cba9);throw _0x46cba9;});}return _0x339273;})[_0xf683('0x24')](respondWithResult(_0x405628,0xc9))[_0xf683('0x44')](handleError(_0x405628,null));};exports[_0xf683('0x52')]=function(_0x3ca387,_0xa28db6){if(_0x3ca387['body']['id']){delete _0x3ca387['body']['id'];}return db[_0xf683('0x40')]['find']({'where':{'id':_0x3ca387['params']['id']}})[_0xf683('0x24')](handleEntityNotFound(_0xa28db6,null))['then'](saveUpdates(_0x3ca387[_0xf683('0x53')],null))['then'](respondWithResult(_0xa28db6,null))[_0xf683('0x44')](handleError(_0xa28db6,null));};exports[_0xf683('0x25')]=function(_0x229e3e,_0x364559){return db[_0xf683('0x40')]['find']({'where':{'id':_0x229e3e[_0xf683('0x46')]['id']}})[_0xf683('0x24')](handleEntityNotFound(_0x364559,null))[_0xf683('0x24')](removeEntity(_0x364559,null))[_0xf683('0x44')](handleError(_0x364559,null));};
\ No newline at end of file
index eebecbe..b60c7da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb76=['ChatWebsiteId','name_mail','MailAccountId','name_sms','name','SmsAccountId','name_fax','FaxAccountId','name_openchannel','name_whatsapp','WhatsappAccountId','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./disposition.attributes','exports','define','Disposition','name_voice','ListId'];(function(_0x137d1d,_0x35c663){var _0x485108=function(_0x108a2a){while(--_0x108a2a){_0x137d1d['push'](_0x137d1d['shift']());}};_0x485108(++_0x35c663);}(_0xbb76,0x1b4));var _0x6bb7=function(_0x32e4de,_0x7da1c5){_0x32e4de=_0x32e4de-0x0;var _0x51ba2a=_0xbb76[_0x32e4de];return _0x51ba2a;};'use strict';var _=require(_0x6bb7('0x0'));var util=require(_0x6bb7('0x1'));var logger=require('../../config/logger')(_0x6bb7('0x2'));var moment=require(_0x6bb7('0x3'));var BPromise=require(_0x6bb7('0x4'));var rp=require(_0x6bb7('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6bb7('0x6'));var config=require(_0x6bb7('0x7'));var attributes=require(_0x6bb7('0x8'));module[_0x6bb7('0x9')]=function(_0x44d6df,_0x3a1756){return _0x44d6df[_0x6bb7('0xa')](_0x6bb7('0xb'),attributes,{'tableName':'tools_dispositions','paranoid':![],'indexes':[{'unique':!![],'name':_0x6bb7('0xc'),'fields':['name',_0x6bb7('0xd')]},{'unique':!![],'name':'name_chat','fields':['name',_0x6bb7('0xe')]},{'unique':!![],'name':_0x6bb7('0xf'),'fields':['name',_0x6bb7('0x10')]},{'unique':!![],'name':_0x6bb7('0x11'),'fields':[_0x6bb7('0x12'),_0x6bb7('0x13')]},{'unique':!![],'name':_0x6bb7('0x14'),'fields':['name',_0x6bb7('0x15')]},{'unique':!![],'name':_0x6bb7('0x16'),'fields':[_0x6bb7('0x12'),'OpenchannelAccountId']},{'unique':!![],'name':_0x6bb7('0x17'),'fields':['name',_0x6bb7('0x18')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3341=['name','name_chat','ChatWebsiteId','name_mail','name_sms','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./disposition.attributes','Disposition','tools_dispositions'];(function(_0x10dfc9,_0x25b62c){var _0x154afc=function(_0x5099ac){while(--_0x5099ac){_0x10dfc9['push'](_0x10dfc9['shift']());}};_0x154afc(++_0x25b62c);}(_0x3341,0x8f));var _0x1334=function(_0x2c8288,_0x578376){_0x2c8288=_0x2c8288-0x0;var _0x22aa83=_0x3341[_0x2c8288];return _0x22aa83;};'use strict';var _=require(_0x1334('0x0'));var util=require(_0x1334('0x1'));var logger=require(_0x1334('0x2'))('api');var moment=require(_0x1334('0x3'));var BPromise=require('bluebird');var rp=require(_0x1334('0x4'));var fs=require('fs');var path=require(_0x1334('0x5'));var rimraf=require(_0x1334('0x6'));var config=require(_0x1334('0x7'));var attributes=require(_0x1334('0x8'));module['exports']=function(_0x4fed65,_0x3286e4){return _0x4fed65['define'](_0x1334('0x9'),attributes,{'tableName':_0x1334('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':[_0x1334('0xb'),'ListId']},{'unique':!![],'name':_0x1334('0xc'),'fields':[_0x1334('0xb'),_0x1334('0xd')]},{'unique':!![],'name':_0x1334('0xe'),'fields':[_0x1334('0xb'),'MailAccountId']},{'unique':!![],'name':_0x1334('0xf'),'fields':[_0x1334('0xb'),'SmsAccountId']},{'unique':!![],'name':_0x1334('0x10'),'fields':[_0x1334('0xb'),_0x1334('0x11')]},{'unique':!![],'name':_0x1334('0x12'),'fields':[_0x1334('0xb'),_0x1334('0x13')]},{'unique':!![],'name':_0x1334('0x14'),'fields':[_0x1334('0xb'),_0x1334('0x15')]}],'timestamps':!![]});};
\ No newline at end of file
index 02ad6cb..7371ea4 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(_0x4ce032,_0x436cad){var _0x47591e=function(_0x4d5839){while(--_0x4d5839){_0x4ce032['push'](_0x4ce032['shift']());}};_0x47591e(++_0x436cad);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'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(_0x12eb14,_0x47879d){var _0x6a411c=function(_0x3c8848){while(--_0x3c8848){_0x12eb14['push'](_0x12eb14['shift']());}};_0x6a411c(++_0x47879d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index 234b3f2..3bc266f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97b1=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','post','isAuthenticated','put','delete','destroy','exports','multer'];(function(_0xcfb35b,_0x503651){var _0x3a5518=function(_0x440d6d){while(--_0x440d6d){_0xcfb35b['push'](_0xcfb35b['shift']());}};_0x3a5518(++_0x503651);}(_0x97b1,0x6b));var _0x197b=function(_0x4cc492,_0x162c85){_0x4cc492=_0x4cc492-0x0;var _0x1f36b9=_0x97b1[_0x4cc492];return _0x1f36b9;};'use strict';var multer=require(_0x197b('0x0'));var util=require(_0x197b('0x1'));var path=require(_0x197b('0x2'));var timeout=require(_0x197b('0x3'));var express=require('express');var router=express[_0x197b('0x4')]();var fs_extra=require(_0x197b('0x5'));var auth=require(_0x197b('0x6'));var interaction=require(_0x197b('0x7'));var config=require(_0x197b('0x8'));var controller=require('./disposition.controller');router[_0x197b('0x9')]('/',auth['isAuthenticated'](),controller[_0x197b('0xa')]);router[_0x197b('0x9')](_0x197b('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x197b('0xc')]('/',auth[_0x197b('0xd')](),controller['create']);router[_0x197b('0xe')](_0x197b('0xb'),auth[_0x197b('0xd')](),controller['update']);router[_0x197b('0xf')](_0x197b('0xb'),auth[_0x197b('0xd')](),controller[_0x197b('0x10')]);module[_0x197b('0x11')]=router;
\ No newline at end of file
+var _0xc0c1=['connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./disposition.controller','get','isAuthenticated','post','create','put','/:id','delete','destroy','exports','multer','util'];(function(_0x310e8e,_0x142cb2){var _0x2191d3=function(_0x1d7dad){while(--_0x1d7dad){_0x310e8e['push'](_0x310e8e['shift']());}};_0x2191d3(++_0x142cb2);}(_0xc0c1,0x97));var _0x1c0c=function(_0x1b5345,_0x4293e5){_0x1b5345=_0x1b5345-0x0;var _0x733c03=_0xc0c1[_0x1b5345];return _0x733c03;};'use strict';var multer=require(_0x1c0c('0x0'));var util=require(_0x1c0c('0x1'));var path=require('path');var timeout=require(_0x1c0c('0x2'));var express=require('express');var router=express[_0x1c0c('0x3')]();var fs_extra=require(_0x1c0c('0x4'));var auth=require(_0x1c0c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x1c0c('0x6'));var controller=require(_0x1c0c('0x7'));router[_0x1c0c('0x8')]('/',auth[_0x1c0c('0x9')](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x1c0c('0xa')]('/',auth[_0x1c0c('0x9')](),controller[_0x1c0c('0xb')]);router[_0x1c0c('0xc')](_0x1c0c('0xd'),auth[_0x1c0c('0x9')](),controller['update']);router[_0x1c0c('0xe')]('/:id',auth[_0x1c0c('0x9')](),controller[_0x1c0c('0xf')]);module[_0x1c0c('0x10')]=router;
\ No newline at end of file
index 32f2054..95174bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x396d=['yes','xCALLY\x20Motion\x20Fax','localstationid','2400','9600','12000','4800','7200','14400','INTEGER','SIP','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','setDataValue','mandatoryDisposition','sequelize','exports','STRING','ENUM'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x396d,0x6f));var _0xd396=function(_0x1631e3,_0xc68170){_0x1631e3=_0x1631e3-0x0;var _0x2e9a1a=_0x396d[_0x1631e3];return _0x2e9a1a;};'use strict';var Sequelize=require(_0xd396('0x0'));module[_0xd396('0x1')]={'name':{'type':Sequelize[_0xd396('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xd396('0x2')]},'ecm':{'type':Sequelize[_0xd396('0x3')](_0xd396('0x4'),'no'),'defaultValue':_0xd396('0x4')},'headerinfo':{'type':Sequelize['STRING'],'defaultValue':_0xd396('0x5')},'localstationid':{'type':Sequelize[_0xd396('0x2')],'unique':_0xd396('0x6')},'minrate':{'type':Sequelize['ENUM'](_0xd396('0x7'),'4800','7200',_0xd396('0x8'),_0xd396('0x9'),'14400'),'defaultValue':_0xd396('0xa')},'maxrate':{'type':Sequelize[_0xd396('0x3')](_0xd396('0x7'),_0xd396('0xa'),_0xd396('0xb'),_0xd396('0x8'),_0xd396('0x9'),'14400'),'defaultValue':_0xd396('0xc')},'modem':{'type':Sequelize[_0xd396('0x2')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize[_0xd396('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0xd396('0xd')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xd396('0x3')](_0xd396('0xe'),'IAX',_0xd396('0xf'),_0xd396('0x10')),'defaultValue':'SIP'},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xd396('0x11')],'defaultValue':function(){return _0xd396('0x12');}},'notificationSound':{'type':Sequelize[_0xd396('0x13')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xd396('0x13')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xd396('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xd396('0x13')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xd396('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xd396('0x13')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xd396('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xd396('0xd')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xd396('0x13')],'defaultValue':![],'comment':_0xd396('0x14'),'set':function(_0x420395){if(!_0x420395)this[_0xd396('0x15')]('mandatoryDispositionPauseId',null);this[_0xd396('0x15')](_0xd396('0x16'),_0x420395);}}};
\ No newline at end of file
+var _0xf2aa=['4800','7200','12000','9600','14400','v17,v27,v29','INTEGER','SIP','IAX','DADHI','KHOMP','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','2400'];(function(_0xcab8dd,_0xdfc877){var _0x12fb80=function(_0x21d1ab){while(--_0x21d1ab){_0xcab8dd['push'](_0xcab8dd['shift']());}};_0x12fb80(++_0xdfc877);}(_0xf2aa,0xaa));var _0xaf2a=function(_0x1f3dbb,_0x1671d6){_0x1f3dbb=_0x1f3dbb-0x0;var _0x2d71e6=_0xf2aa[_0x1f3dbb];return _0x2d71e6;};'use strict';var Sequelize=require('sequelize');module[_0xaf2a('0x0')]={'name':{'type':Sequelize[_0xaf2a('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xaf2a('0x1')]},'ecm':{'type':Sequelize[_0xaf2a('0x2')]('yes','no'),'defaultValue':_0xaf2a('0x3')},'headerinfo':{'type':Sequelize[_0xaf2a('0x1')],'defaultValue':_0xaf2a('0x4')},'localstationid':{'type':Sequelize[_0xaf2a('0x1')],'unique':'localstationid'},'minrate':{'type':Sequelize[_0xaf2a('0x2')](_0xaf2a('0x5'),_0xaf2a('0x6'),_0xaf2a('0x7'),'9600',_0xaf2a('0x8'),'14400'),'defaultValue':_0xaf2a('0x6')},'maxrate':{'type':Sequelize[_0xaf2a('0x2')](_0xaf2a('0x5'),'4800',_0xaf2a('0x7'),_0xaf2a('0x9'),_0xaf2a('0x8'),_0xaf2a('0xa')),'defaultValue':_0xaf2a('0xa')},'modem':{'type':Sequelize[_0xaf2a('0x1')],'defaultValue':_0xaf2a('0xb')},'gateway':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xaf2a('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0xaf2a('0xc')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xaf2a('0x2')](_0xaf2a('0xd'),_0xaf2a('0xe'),_0xaf2a('0xf'),_0xaf2a('0x10')),'defaultValue':_0xaf2a('0xd')},'key':{'type':Sequelize[_0xaf2a('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xaf2a('0x11');}},'notificationSound':{'type':Sequelize[_0xaf2a('0x12')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xaf2a('0x12')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xaf2a('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xaf2a('0x12')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xaf2a('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xaf2a('0x12')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xaf2a('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xaf2a('0xc')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xaf2a('0x12')],'defaultValue':![],'comment':_0xaf2a('0x13'),'set':function(_0x4e8c35){if(!_0x4e8c35)this['setDataValue']('mandatoryDispositionPauseId',null);this[_0xaf2a('0x14')](_0xaf2a('0x15'),_0x4e8c35);}}};
\ No newline at end of file
index f89112a..96a8572 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x443b=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./faxAccount.socket','register','client','http','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','json','offset','undefined','count','limit','status','set','apply','save','update','destroy','get','FaxAccounts','end','stack','name','index','Pause','mandatoryDispositionPause','map','FaxAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','filter','where','merge','VIRTUAL','include','findAll','rows','catch','show','params','length','includeAll','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','Disposition','getDispositions','order','FaxAccountId','removeDispositions','ids','CannedAnswer','getAnswers','pick','options','removeAnswers','addInteraction','FaxInteraction','omit','getInteractions','findOne','CmContact','Owner','fullname','internal','Tags','tag','addApplications','sequelize','Transaction','FaxApplication','bulkCreate','findAndCountAll','priority','send','getApplications','context','from-voip-provider','localstationid','description','Fax\x20Extension','appdata','push','Answer','CDR(type)=inbound-fax','Set','faxdetect','headerinfo','minrate','modem','t38timeout','FAXOPT(','Wait','ReceiveFax','addAccountApplications','transaction','VoiceExtension','tech','key','TrunkId','findById','getMessages','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','Contacts','DESC','attachments','join','root','server/files/attachments','basename','isNil','path','from','List','ListId','List\x20not\x20found','out','filename','Contact\x20not\x20found','spread','ContactId','Messages','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','userFaxAccount:save','removeAgents','isArray','emit','userFaxAccount:remove','getAgents','User','rimraf','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'];(function(_0x55d58f,_0x2bea83){var _0x1ad6e6=function(_0x31447e){while(--_0x31447e){_0x55d58f['push'](_0x55d58f['shift']());}};_0x1ad6e6(++_0x2bea83);}(_0x443b,0x16d));var _0xb443=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x443b[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb443('0x0'));var zipdir=require(_0xb443('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb443('0x2'));var moment=require(_0xb443('0x3'));var BPromise=require(_0xb443('0x4'));var Mustache=require(_0xb443('0x5'));var util=require(_0xb443('0x6'));var path=require('path');var sox=require(_0xb443('0x7'));var csv=require(_0xb443('0x8'));var ejs=require(_0xb443('0x9'));var fs=require('fs');var fs_extra=require(_0xb443('0xa'));var _=require(_0xb443('0xb'));var squel=require(_0xb443('0xc'));var crypto=require(_0xb443('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xb443('0xe'));var toCsv=require(_0xb443('0x8'));var querystring=require(_0xb443('0xf'));var Papa=require(_0xb443('0x10'));var Redis=require(_0xb443('0x11'));var authService=require(_0xb443('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xb443('0x13'));var hardwareService=require(_0xb443('0x14'));var logger=require(_0xb443('0x15'))(_0xb443('0x16'));var utils=require(_0xb443('0x17'));var config=require(_0xb443('0x18'));var licenseUtil=require(_0xb443('0x19'));var db=require(_0xb443('0x1a'))['db'];config[_0xb443('0x1b')]=_['defaults'](config['redis'],{'host':_0xb443('0x1c'),'port':0x18eb});var socket=require(_0xb443('0x1d'))(new Redis(config[_0xb443('0x1b')]));require(_0xb443('0x1e'))[_0xb443('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson[_0xb443('0x20')]['http']({'port':0x232c});var client9002=jayson[_0xb443('0x20')][_0xb443('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x1c6814,_0x4af414,_0x5d4870,_0x399eaa){return new BPromise(function(_0x55f6fb,_0x410075){var _0x4b503d=_0x399eaa||client;return _0x4b503d['request'](_0x1c6814,_0x5d4870)[_0xb443('0x22')](function(_0xd6a835){logger[_0xb443('0x23')](_0xb443('0x24'),_0x4af414,_0xb443('0x25'));logger[_0xb443('0x26')](_0xb443('0x27'),_0x4af414,_0xb443('0x25'),JSON[_0xb443('0x28')](_0xd6a835));if(_0xd6a835[_0xb443('0x29')]){if(_0xd6a835[_0xb443('0x29')][_0xb443('0x2a')]===0x1f4){logger[_0xb443('0x29')](_0xb443('0x24'),_0x4af414,_0xd6a835['error'][_0xb443('0x2b')]);return _0x410075(_0xd6a835['error'][_0xb443('0x2b')]);}logger[_0xb443('0x29')](_0xb443('0x24'),_0x4af414,_0xd6a835[_0xb443('0x29')][_0xb443('0x2b')]);return _0x55f6fb(_0xd6a835[_0xb443('0x29')][_0xb443('0x2b')]);}else{logger[_0xb443('0x23')](_0xb443('0x24'),_0x4af414,_0xb443('0x25'));_0x55f6fb(_0xd6a835['result']['message']);}})['catch'](function(_0x2774a9){logger[_0xb443('0x29')](_0xb443('0x24'),_0x4af414,_0x2774a9);_0x410075(_0x2774a9);});});}function respondWithStatusCode(_0x1a449a,_0x58c3a5){_0x58c3a5=_0x58c3a5||0xcc;return function(_0xe3d0b9){if(_0xe3d0b9){return _0x1a449a['sendStatus'](_0x58c3a5);}return _0x1a449a['status'](_0x58c3a5)['end']();};}function respondWithResult(_0x59cc7c,_0x42b2b5){_0x42b2b5=_0x42b2b5||0xc8;return function(_0x5f48d9){if(_0x5f48d9){return _0x59cc7c['status'](_0x42b2b5)[_0xb443('0x2c')](_0x5f48d9);}};}function respondWithFilteredResult(_0x5a5ccf,_0x1f1f69){return function(_0x3ebea3){if(_0x3ebea3){var _0x493bcf=typeof _0x1f1f69[_0xb443('0x2d')]==='undefined'&&typeof _0x1f1f69['limit']===_0xb443('0x2e');var _0x271e47=_0x3ebea3[_0xb443('0x2f')];var _0x267da3=_0x493bcf?0x0:_0x1f1f69[_0xb443('0x2d')];var _0x3675fa=_0x493bcf?_0x3ebea3['count']:_0x1f1f69['offset']+_0x1f1f69[_0xb443('0x30')];var _0xe9ba78;if(_0x3675fa>=_0x271e47){_0x3675fa=_0x271e47;_0xe9ba78=0xc8;}else{_0xe9ba78=0xce;}_0x5a5ccf[_0xb443('0x31')](_0xe9ba78);return _0x5a5ccf[_0xb443('0x32')]('Content-Range',_0x267da3+'-'+_0x3675fa+'/'+_0x271e47)[_0xb443('0x2c')](_0x3ebea3);}return null;};}function patchUpdates(_0xafd759){return function(_0x3f9850){try{jsonpatch[_0xb443('0x33')](_0x3f9850,_0xafd759,!![]);}catch(_0x56526a){return BPromise['reject'](_0x56526a);}return _0x3f9850[_0xb443('0x34')]();};}function saveUpdates(_0x5dd8da,_0xd1c80c){return function(_0x4f3cc0){if(_0x4f3cc0){return _0x4f3cc0[_0xb443('0x35')](_0x5dd8da)[_0xb443('0x22')](function(_0x4be868){return _0x4be868;});}return null;};}function removeEntity(_0x12a7ce,_0x4203ed){return function(_0x183a47){if(_0x183a47){return _0x183a47[_0xb443('0x36')]()[_0xb443('0x22')](function(){var _0x6b4912=_0x183a47[_0xb443('0x37')]({'plain':!![]});var _0x220f1e=_0xb443('0x38');return db['UserProfileResource'][_0xb443('0x36')]({'where':{'type':_0x220f1e,'resourceId':_0x6b4912['id']}})['then'](function(){return _0x183a47;});})[_0xb443('0x22')](function(){_0x12a7ce[_0xb443('0x31')](0xcc)[_0xb443('0x39')]();});}};}function handleEntityNotFound(_0x648fb8,_0x2683a9){return function(_0x3c15d4){if(!_0x3c15d4){_0x648fb8['sendStatus'](0x194);}return _0x3c15d4;};}function handleError(_0x286b86,_0x22a0bc){_0x22a0bc=_0x22a0bc||0x1f4;return function(_0x1be614){logger['error'](_0x1be614[_0xb443('0x3a')]);if(_0x1be614['name']){delete _0x1be614[_0xb443('0x3b')];}_0x286b86[_0xb443('0x31')](_0x22a0bc)['send'](_0x1be614);};}exports[_0xb443('0x3c')]=function(_0x1a1c18,_0x51957b){var _0x30efac={'include':[{'model':db[_0xb443('0x3d')],'as':_0xb443('0x3e')}]},_0x51202b={},_0x3671c1={'count':0x0,'rows':[]};var _0x28ca6b=_[_0xb443('0x3f')](db[_0xb443('0x40')][_0xb443('0x41')],function(_0x27cad9){return{'name':_0x27cad9[_0xb443('0x42')],'type':_0x27cad9[_0xb443('0x43')]['key']};});_0x51202b[_0xb443('0x44')]=_[_0xb443('0x3f')](_0x28ca6b,'name');_0x51202b[_0xb443('0x45')]=_[_0xb443('0x46')](_0x1a1c18[_0xb443('0x45')]);_0x51202b[_0xb443('0x47')]=_[_0xb443('0x48')](_0x51202b[_0xb443('0x44')],_0x51202b[_0xb443('0x45')]);_0x30efac[_0xb443('0x49')]=_['intersection'](_0x51202b[_0xb443('0x44')],qs[_0xb443('0x4a')](_0x1a1c18['query'][_0xb443('0x4a')]));_0x30efac[_0xb443('0x49')]=_0x30efac[_0xb443('0x49')]['length']?_0x30efac[_0xb443('0x49')]:_0x51202b[_0xb443('0x44')];if(!_0x1a1c18[_0xb443('0x45')][_0xb443('0x4b')](_0xb443('0x4c'))){_0x30efac[_0xb443('0x30')]=qs[_0xb443('0x30')](_0x1a1c18[_0xb443('0x45')]['limit']);_0x30efac[_0xb443('0x2d')]=qs[_0xb443('0x2d')](_0x1a1c18['query'][_0xb443('0x2d')]);}_0x30efac['order']=qs[_0xb443('0x4d')](_0x1a1c18[_0xb443('0x45')]['sort']);_0x30efac['where']=qs[_0xb443('0x47')](_['pick'](_0x1a1c18[_0xb443('0x45')],_0x51202b[_0xb443('0x47')]),_0x28ca6b);if(_0x1a1c18[_0xb443('0x45')][_0xb443('0x4e')]){_0x30efac[_0xb443('0x4f')]=_[_0xb443('0x50')](_0x30efac[_0xb443('0x4f')],{'$or':_[_0xb443('0x3f')](_0x28ca6b,function(_0x235666){if(_0x235666[_0xb443('0x43')]!==_0xb443('0x51')){var _0x23f717={};_0x23f717[_0x235666[_0xb443('0x3b')]]={'$like':'%'+_0x1a1c18['query']['filter']+'%'};return _0x23f717;}})});}_0x30efac=_[_0xb443('0x50')]({},_0x30efac,_0x1a1c18['options']);var _0x58aa23={'where':_0x30efac[_0xb443('0x4f')]};return db['FaxAccount'][_0xb443('0x2f')](_0x58aa23)[_0xb443('0x22')](function(_0x59e0d5){_0x3671c1[_0xb443('0x2f')]=_0x59e0d5;if(_0x1a1c18[_0xb443('0x45')]['includeAll']){_0x30efac[_0xb443('0x52')]=[{'all':!![]}];}return db['FaxAccount'][_0xb443('0x53')](_0x30efac);})[_0xb443('0x22')](function(_0x137634){_0x3671c1[_0xb443('0x54')]=_0x137634;return _0x3671c1;})[_0xb443('0x22')](respondWithFilteredResult(_0x51957b,_0x30efac))[_0xb443('0x55')](handleError(_0x51957b,null));};exports[_0xb443('0x56')]=function(_0x5be8e6,_0x1688f6){var _0x3bbac4={'raw':![],'where':{'id':_0x5be8e6[_0xb443('0x57')]['id']},'include':[{'model':db[_0xb443('0x3d')],'as':_0xb443('0x3e')}]},_0x3d2482={};_0x3d2482[_0xb443('0x44')]=_[_0xb443('0x46')](db[_0xb443('0x40')]['rawAttributes']);_0x3d2482['query']=_[_0xb443('0x46')](_0x5be8e6[_0xb443('0x45')]);_0x3d2482[_0xb443('0x47')]=_[_0xb443('0x48')](_0x3d2482['model'],_0x3d2482[_0xb443('0x45')]);_0x3bbac4[_0xb443('0x49')]=_[_0xb443('0x48')](_0x3d2482[_0xb443('0x44')],qs[_0xb443('0x4a')](_0x5be8e6[_0xb443('0x45')][_0xb443('0x4a')]));_0x3bbac4[_0xb443('0x49')]=_0x3bbac4[_0xb443('0x49')][_0xb443('0x58')]?_0x3bbac4[_0xb443('0x49')]:_0x3d2482['model'];if(_0x5be8e6[_0xb443('0x45')][_0xb443('0x59')]){_0x3bbac4[_0xb443('0x52')]=[{'all':!![]}];}_0x3bbac4=_[_0xb443('0x50')]({},_0x3bbac4,_0x5be8e6['options']);return db[_0xb443('0x40')][_0xb443('0x5a')](_0x3bbac4)[_0xb443('0x22')](handleEntityNotFound(_0x1688f6,null))[_0xb443('0x22')](respondWithResult(_0x1688f6,null))['catch'](handleError(_0x1688f6,null));};exports['create']=function(_0x1f8baa,_0x3499bc){return db[_0xb443('0x40')]['create'](_0x1f8baa[_0xb443('0x5b')],{})['then'](function(_0x289fcc){var _0x4901b2=_0x1f8baa[_0xb443('0x5c')][_0xb443('0x37')]({'plain':!![]});if(!_0x4901b2)throw new Error(_0xb443('0x5d'));if(_0x4901b2[_0xb443('0x5e')]===_0xb443('0x5c')){var _0x27dd52=_0x289fcc[_0xb443('0x37')]({'plain':!![]});var _0x3dff92=_0xb443('0x38');return db['UserProfileSection'][_0xb443('0x5a')]({'where':{'name':_0x3dff92,'userProfileId':_0x4901b2[_0xb443('0x5f')]},'raw':!![]})[_0xb443('0x22')](function(_0x1d9868){if(_0x1d9868&&_0x1d9868['autoAssociation']===0x0){return db[_0xb443('0x60')][_0xb443('0x61')]({'name':_0x27dd52[_0xb443('0x3b')],'resourceId':_0x27dd52['id'],'type':_0x1d9868[_0xb443('0x3b')],'sectionId':_0x1d9868['id']},{})[_0xb443('0x22')](function(){return _0x289fcc;});}else{return _0x289fcc;}})[_0xb443('0x55')](function(_0x221b23){logger[_0xb443('0x29')](_0xb443('0x62'),_0x221b23);throw _0x221b23;});}return _0x289fcc;})[_0xb443('0x22')](respondWithResult(_0x3499bc,0xc9))[_0xb443('0x55')](handleError(_0x3499bc,null));};exports['update']=function(_0x387a06,_0x59d9e6){if(_0x387a06[_0xb443('0x5b')]['id']){delete _0x387a06['body']['id'];}return db[_0xb443('0x40')][_0xb443('0x5a')]({'where':{'id':_0x387a06[_0xb443('0x57')]['id']},'include':[{'model':db[_0xb443('0x3d')],'as':_0xb443('0x3e')}]})[_0xb443('0x22')](handleEntityNotFound(_0x59d9e6,null))[_0xb443('0x22')](saveUpdates(_0x387a06[_0xb443('0x5b')],null))['then'](respondWithResult(_0x59d9e6,null))[_0xb443('0x55')](handleError(_0x59d9e6,null));};exports[_0xb443('0x36')]=function(_0x40ab37,_0x5cad75){return db['FaxAccount']['find']({'where':{'id':_0x40ab37[_0xb443('0x57')]['id']}})['then'](handleEntityNotFound(_0x5cad75,null))[_0xb443('0x22')](removeEntity(_0x5cad75,null))[_0xb443('0x55')](handleError(_0x5cad75,null));};exports[_0xb443('0x63')]=function(_0x5f1c65,_0x5e5c47){return db['FaxAccount'][_0xb443('0x63')]()['then'](respondWithResult(_0x5e5c47,null))[_0xb443('0x55')](handleError(_0x5e5c47,null));};exports['addDisposition']=function(_0x3dd79c,_0x2c9717,_0xb7f57e){if(_0x3dd79c['body']['id']){delete _0x3dd79c[_0xb443('0x5b')]['id'];}return db[_0xb443('0x40')][_0xb443('0x5a')]({'where':{'id':_0x3dd79c[_0xb443('0x57')]['id']}})[_0xb443('0x22')](handleEntityNotFound(_0x2c9717,null))[_0xb443('0x22')](function(_0x2bfa60){if(_0x2bfa60){_0x3dd79c['body']['FaxAccountId']=_0x2bfa60['id'];return db[_0xb443('0x64')][_0xb443('0x61')](_0x3dd79c[_0xb443('0x5b')]);}})[_0xb443('0x22')](respondWithResult(_0x2c9717,null))[_0xb443('0x55')](handleError(_0x2c9717,null));};exports[_0xb443('0x65')]=function(_0x330661,_0x1e4cee,_0x338af9){var _0x11e599={'raw':![],'where':{}};var _0x262b2b={};var _0x4663d6={'count':0x0,'rows':[]};return db[_0xb443('0x40')]['findOne']({'where':{'id':_0x330661['params']['id']}})[_0xb443('0x22')](handleEntityNotFound(_0x1e4cee,null))[_0xb443('0x22')](function(_0x193f37){if(_0x193f37){_0x262b2b[_0xb443('0x44')]=_[_0xb443('0x46')](db['Disposition']['rawAttributes']);_0x262b2b[_0xb443('0x45')]=_[_0xb443('0x46')](_0x330661['query']);_0x262b2b[_0xb443('0x47')]=_[_0xb443('0x48')](_0x262b2b['model'],_0x262b2b[_0xb443('0x45')]);_0x11e599[_0xb443('0x49')]=_['intersection'](_0x262b2b['model'],qs['fields'](_0x330661[_0xb443('0x45')][_0xb443('0x4a')]));_0x11e599['attributes']=_0x11e599[_0xb443('0x49')][_0xb443('0x58')]?_0x11e599['attributes']:_0x262b2b['model'];if(!_0x330661['query'][_0xb443('0x4b')](_0xb443('0x4c'))){_0x11e599[_0xb443('0x30')]=qs[_0xb443('0x30')](_0x330661[_0xb443('0x45')][_0xb443('0x30')]);_0x11e599[_0xb443('0x2d')]=qs[_0xb443('0x2d')](_0x330661[_0xb443('0x45')][_0xb443('0x2d')]);}_0x11e599[_0xb443('0x66')]=qs[_0xb443('0x4d')](_0x330661[_0xb443('0x45')][_0xb443('0x4d')]);_0x11e599['where']=qs[_0xb443('0x47')](_['pick'](_0x330661['query'],_0x262b2b[_0xb443('0x47')]));_0x11e599['where'][_0xb443('0x67')]=_0x193f37['id'];if(_0x330661[_0xb443('0x45')]['filter']){_0x11e599[_0xb443('0x4f')]=_['merge'](_0x11e599[_0xb443('0x4f')],{'$or':_[_0xb443('0x3f')](_0x11e599[_0xb443('0x49')],function(_0x273d15){var _0x5e1df0={};_0x5e1df0[_0x273d15]={'$like':'%'+_0x330661['query']['filter']+'%'};return _0x5e1df0;})});}_0x11e599=_[_0xb443('0x50')]({},_0x11e599,_0x330661['options']);return db['Disposition'][_0xb443('0x2f')]({'where':_0x11e599[_0xb443('0x4f')]})['then'](function(_0x1deaed){_0x4663d6['count']=_0x1deaed;if(_0x330661[_0xb443('0x45')][_0xb443('0x59')]){_0x11e599[_0xb443('0x52')]=[{'all':!![]}];}return db[_0xb443('0x64')][_0xb443('0x53')](_0x11e599);})[_0xb443('0x22')](function(_0x399e39){_0x4663d6[_0xb443('0x54')]=_0x399e39;return _0x4663d6;});}})[_0xb443('0x22')](respondWithFilteredResult(_0x1e4cee,_0x11e599))['catch'](handleError(_0x1e4cee,null));};exports[_0xb443('0x68')]=function(_0x10b980,_0x12d5e8,_0x5d9019){return db[_0xb443('0x40')][_0xb443('0x5a')]({'where':{'id':_0x10b980[_0xb443('0x57')]['id']}})['then'](handleEntityNotFound(_0x12d5e8,null))['then'](function(_0x13c918){if(_0x13c918){return _0x13c918['removeDispositions'](_0x10b980[_0xb443('0x45')][_0xb443('0x69')]);}})[_0xb443('0x22')](respondWithStatusCode(_0x12d5e8,null))[_0xb443('0x55')](handleError(_0x12d5e8,null));};exports['addAnswer']=function(_0x476147,_0x3585df,_0x18c583){if(_0x476147[_0xb443('0x5b')]['id']){delete _0x476147[_0xb443('0x5b')]['id'];}return db[_0xb443('0x40')]['find']({'where':{'id':_0x476147[_0xb443('0x57')]['id']}})[_0xb443('0x22')](handleEntityNotFound(_0x3585df,null))[_0xb443('0x22')](function(_0x50b802){if(_0x50b802){_0x476147[_0xb443('0x5b')][_0xb443('0x67')]=_0x50b802['id'];return db[_0xb443('0x6a')][_0xb443('0x61')](_0x476147[_0xb443('0x5b')]);}})[_0xb443('0x22')](respondWithResult(_0x3585df,null))[_0xb443('0x55')](handleError(_0x3585df,null));};exports[_0xb443('0x6b')]=function(_0x2cd8a9,_0x1f3f2d,_0x36c11b){var _0x27279d={'raw':![],'where':{}};var _0x380c15={};var _0xc50dae={'count':0x0,'rows':[]};return db[_0xb443('0x40')]['findOne']({'where':{'id':_0x2cd8a9[_0xb443('0x57')]['id']}})[_0xb443('0x22')](handleEntityNotFound(_0x1f3f2d,null))['then'](function(_0x262315){if(_0x262315){_0x380c15[_0xb443('0x44')]=_['keys'](db[_0xb443('0x6a')][_0xb443('0x41')]);_0x380c15['query']=_['keys'](_0x2cd8a9[_0xb443('0x45')]);_0x380c15[_0xb443('0x47')]=_[_0xb443('0x48')](_0x380c15[_0xb443('0x44')],_0x380c15[_0xb443('0x45')]);_0x27279d[_0xb443('0x49')]=_['intersection'](_0x380c15[_0xb443('0x44')],qs['fields'](_0x2cd8a9[_0xb443('0x45')][_0xb443('0x4a')]));_0x27279d['attributes']=_0x27279d[_0xb443('0x49')][_0xb443('0x58')]?_0x27279d[_0xb443('0x49')]:_0x380c15[_0xb443('0x44')];if(!_0x2cd8a9[_0xb443('0x45')]['hasOwnProperty']('nolimit')){_0x27279d[_0xb443('0x30')]=qs['limit'](_0x2cd8a9[_0xb443('0x45')][_0xb443('0x30')]);_0x27279d[_0xb443('0x2d')]=qs[_0xb443('0x2d')](_0x2cd8a9[_0xb443('0x45')]['offset']);}_0x27279d[_0xb443('0x66')]=qs[_0xb443('0x4d')](_0x2cd8a9[_0xb443('0x45')][_0xb443('0x4d')]);_0x27279d[_0xb443('0x4f')]=qs['filters'](_[_0xb443('0x6c')](_0x2cd8a9[_0xb443('0x45')],_0x380c15[_0xb443('0x47')]));_0x27279d[_0xb443('0x4f')][_0xb443('0x67')]=_0x262315['id'];if(_0x2cd8a9['query'][_0xb443('0x4e')]){_0x27279d[_0xb443('0x4f')]=_[_0xb443('0x50')](_0x27279d['where'],{'$or':_[_0xb443('0x3f')](_0x27279d[_0xb443('0x49')],function(_0x4487dc){var _0x2c2710={};_0x2c2710[_0x4487dc]={'$like':'%'+_0x2cd8a9['query'][_0xb443('0x4e')]+'%'};return _0x2c2710;})});}_0x27279d=_[_0xb443('0x50')]({},_0x27279d,_0x2cd8a9[_0xb443('0x6d')]);return db['CannedAnswer'][_0xb443('0x2f')]({'where':_0x27279d[_0xb443('0x4f')]})['then'](function(_0x3c5403){_0xc50dae['count']=_0x3c5403;if(_0x2cd8a9['query'][_0xb443('0x59')]){_0x27279d[_0xb443('0x52')]=[{'all':!![]}];}return db[_0xb443('0x6a')][_0xb443('0x53')](_0x27279d);})['then'](function(_0x448291){_0xc50dae[_0xb443('0x54')]=_0x448291;return _0xc50dae;});}})[_0xb443('0x22')](respondWithFilteredResult(_0x1f3f2d,_0x27279d))['catch'](handleError(_0x1f3f2d,null));};exports[_0xb443('0x6e')]=function(_0x1969b5,_0x2f942a,_0x55875a){return db['FaxAccount'][_0xb443('0x5a')]({'where':{'id':_0x1969b5[_0xb443('0x57')]['id']}})[_0xb443('0x22')](handleEntityNotFound(_0x2f942a,null))['then'](function(_0x112e07){if(_0x112e07){return _0x112e07[_0xb443('0x6e')](_0x1969b5[_0xb443('0x45')][_0xb443('0x69')]);}})[_0xb443('0x22')](respondWithStatusCode(_0x2f942a,null))[_0xb443('0x55')](handleError(_0x2f942a,null));};exports[_0xb443('0x6f')]=function(_0x87f7ac,_0x1271cf,_0x3d25c2){return db[_0xb443('0x70')]['find']({'where':{'id':_0x87f7ac['params']['id']}})[_0xb443('0x22')](handleEntityNotFound(_0x1271cf,null))[_0xb443('0x22')](function(_0x253fe3){if(_0x253fe3){return _0x253fe3['addInteraction'](_0x87f7ac[_0xb443('0x5b')]['ids'],_[_0xb443('0x71')](_0x87f7ac['body'],['ids','id'])||{});}})[_0xb443('0x22')](respondWithResult(_0x1271cf,null))['catch'](handleError(_0x1271cf,null));};exports[_0xb443('0x72')]=function(_0x190707,_0x206ba6,_0x3ac462){var _0x1973df={'raw':![],'where':{}};var _0x4f8dc6={};var _0x30b753={'count':0x0,'rows':[]};return db[_0xb443('0x40')][_0xb443('0x73')]({'where':{'id':_0x190707[_0xb443('0x57')]['id']}})['then'](handleEntityNotFound(_0x206ba6,null))[_0xb443('0x22')](function(_0x212c89){if(_0x212c89){_0x4f8dc6['model']=_[_0xb443('0x46')](db[_0xb443('0x70')][_0xb443('0x41')]);_0x4f8dc6['query']=_[_0xb443('0x46')](_0x190707[_0xb443('0x45')]);_0x4f8dc6['filters']=_[_0xb443('0x48')](_0x4f8dc6[_0xb443('0x44')],_0x4f8dc6[_0xb443('0x45')]);_0x1973df[_0xb443('0x49')]=_[_0xb443('0x48')](_0x4f8dc6['model'],qs[_0xb443('0x4a')](_0x190707[_0xb443('0x45')][_0xb443('0x4a')]));_0x1973df[_0xb443('0x49')]=_0x1973df[_0xb443('0x49')]['length']?_0x1973df[_0xb443('0x49')]:_0x4f8dc6[_0xb443('0x44')];if(!_0x190707[_0xb443('0x45')][_0xb443('0x4b')](_0xb443('0x4c'))){_0x1973df[_0xb443('0x30')]=qs[_0xb443('0x30')](_0x190707[_0xb443('0x45')][_0xb443('0x30')]);_0x1973df[_0xb443('0x2d')]=qs[_0xb443('0x2d')](_0x190707[_0xb443('0x45')]['offset']);}_0x1973df[_0xb443('0x66')]=qs[_0xb443('0x4d')](_0x190707[_0xb443('0x45')][_0xb443('0x4d')]);_0x1973df[_0xb443('0x4f')]=qs[_0xb443('0x47')](_['pick'](_0x190707[_0xb443('0x45')],_0x4f8dc6['filters']));_0x1973df[_0xb443('0x4f')][_0xb443('0x67')]=_0x212c89['id'];if(_0x190707['query'][_0xb443('0x4e')]){_0x1973df[_0xb443('0x4f')]=_[_0xb443('0x50')](_0x1973df[_0xb443('0x4f')],{'$or':_[_0xb443('0x3f')](_0x1973df[_0xb443('0x49')],function(_0x671e24){var _0x96445={};_0x96445[_0x671e24]={'$like':'%'+_0x190707[_0xb443('0x45')][_0xb443('0x4e')]+'%'};return _0x96445;})});}_0x1973df=_[_0xb443('0x50')]({},_0x1973df,_0x190707[_0xb443('0x6d')]);return db['FaxInteraction'][_0xb443('0x2f')]({'where':_0x1973df[_0xb443('0x4f')]})[_0xb443('0x22')](function(_0x17fb24){_0x30b753[_0xb443('0x2f')]=_0x17fb24;if(_0x190707[_0xb443('0x45')]['includeAll']){_0x1973df[_0xb443('0x52')]=[{'model':db[_0xb443('0x74')],'as':'Contact','required':![]},{'model':db['User'],'as':_0xb443('0x75'),'attributes':[_0xb443('0x3b'),_0xb443('0x76'),_0xb443('0x77')],'required':![]},{'model':db['Tag'],'as':_0xb443('0x78'),'attributes':['id','name','color'],'where':_0x190707[_0xb443('0x45')]['tag']?{'id':_0x190707[_0xb443('0x45')]['tag']}:undefined,'required':_0x190707[_0xb443('0x45')][_0xb443('0x79')]?!![]:![]}];}return db['FaxInteraction'][_0xb443('0x53')](_0x1973df);})['then'](function(_0x51b6a6){_0x30b753[_0xb443('0x54')]=_0x51b6a6;return _0x30b753;});}})[_0xb443('0x22')](respondWithFilteredResult(_0x206ba6,_0x1973df))['catch'](handleError(_0x206ba6,null));};exports[_0xb443('0x7a')]=function(_0xf8a28d,_0x20dc40){var _0x4779c3=_0xf8a28d[_0xb443('0x57')]['id'];var _0x7fcd60=_0xf8a28d['body'];var _0x396c0a=0xc8;var _0x2d9f26=null;return db[_0xb443('0x7b')]['transaction']({'isolationLevel':db[_0xb443('0x7b')][_0xb443('0x7c')]['ISOLATION_LEVELS']['READ_COMMITTED']},function(_0x1121ca){return db[_0xb443('0x40')][_0xb443('0x73')]({'where':{'id':_0x4779c3},'transaction':_0x1121ca})['then'](function(_0x8e07e2){if(_0x8e07e2){return db['FaxApplication']['destroy']({'where':{'FaxAccountId':_0x4779c3},'transaction':_0x1121ca})[_0xb443('0x22')](function(){var _0x16501d=_['map'](_0x7fcd60,function(_0xd76105){_0xd76105[_0xb443('0x67')]=_0x4779c3;return _0xd76105;});return db[_0xb443('0x7d')][_0xb443('0x7e')](_0x16501d,{'transaction':_0x1121ca});});}else{_0x396c0a=0x194;_0x2d9f26=[];}});})[_0xb443('0x22')](function(){if(_0x396c0a!==0x194){return db['FaxApplication'][_0xb443('0x7f')]({'where':{'FaxAccountId':_0x4779c3},'order':_0xb443('0x80')})['then'](function(_0x483100){_0x2d9f26=_0x483100;});}})['catch'](function(_0x583861){_0x396c0a=0x1f4;logger['error'](_0x583861[_0xb443('0x3a')]);if(_0x583861[_0xb443('0x3b')]){delete _0x583861[_0xb443('0x3b')];}_0x2d9f26=_0x583861;})['finally'](function(){if(_0x2d9f26===null){_0x20dc40['sendStatus'](_0x396c0a);}else{if(_0x396c0a===0x1f4){_0x20dc40[_0xb443('0x31')](_0x396c0a)[_0xb443('0x81')](_0x2d9f26);}else{_0x20dc40['status'](_0x396c0a)[_0xb443('0x2c')](_0x2d9f26);}}});};exports[_0xb443('0x82')]=function(_0x21da50,_0x1de0d8,_0x266f20){var _0x55f7f7={};var _0xffdb0f={};var _0x59bccc;var _0x1fb811;return db[_0xb443('0x40')]['findOne']({'where':{'id':_0x21da50['params']['id']}})['then'](handleEntityNotFound(_0x1de0d8,null))[_0xb443('0x22')](function(_0x2384c7){if(_0x2384c7){_0x59bccc=_0x2384c7;_0xffdb0f['model']=_[_0xb443('0x46')](db['FaxApplication'][_0xb443('0x41')]);_0xffdb0f['query']=_[_0xb443('0x46')](_0x21da50[_0xb443('0x45')]);_0xffdb0f[_0xb443('0x47')]=_['intersection'](_0xffdb0f[_0xb443('0x44')],_0xffdb0f[_0xb443('0x45')]);_0x55f7f7[_0xb443('0x49')]=_[_0xb443('0x48')](_0xffdb0f[_0xb443('0x44')],qs[_0xb443('0x4a')](_0x21da50[_0xb443('0x45')]['fields']));_0x55f7f7[_0xb443('0x49')]=_0x55f7f7['attributes'][_0xb443('0x58')]?_0x55f7f7['attributes']:_0xffdb0f['model'];_0x55f7f7[_0xb443('0x66')]=qs[_0xb443('0x4d')](_0x21da50[_0xb443('0x45')][_0xb443('0x4d')]);_0x55f7f7[_0xb443('0x4f')]=qs['filters'](_[_0xb443('0x6c')](_0x21da50[_0xb443('0x45')],_0xffdb0f[_0xb443('0x47')]));if(_0x21da50['query'][_0xb443('0x4e')]){_0x55f7f7[_0xb443('0x4f')]=_[_0xb443('0x50')](_0x55f7f7['where'],{'$or':_[_0xb443('0x3f')](_0x55f7f7['attributes'],function(_0x2dcf9f){var _0x467d97={};_0x467d97[_0x2dcf9f]={'$like':'%'+_0x21da50[_0xb443('0x45')][_0xb443('0x4e')]+'%'};return _0x467d97;})});}_0x55f7f7=_['merge']({},_0x55f7f7,_0x21da50['options']);return _0x59bccc[_0xb443('0x82')](_0x55f7f7);}})[_0xb443('0x22')](function(_0x3eac3e){if(_0x3eac3e){_0x1fb811=_0x3eac3e[_0xb443('0x58')];if(!_0x21da50[_0xb443('0x45')][_0xb443('0x4b')](_0xb443('0x4c'))){_0x55f7f7[_0xb443('0x30')]=qs[_0xb443('0x30')](_0x21da50[_0xb443('0x45')]['limit']);_0x55f7f7[_0xb443('0x2d')]=qs['offset'](_0x21da50[_0xb443('0x45')][_0xb443('0x2d')]);}return _0x59bccc['getApplications'](_0x55f7f7);}})[_0xb443('0x22')](function(_0x1eca0f){if(_0x1eca0f){return _0x1eca0f?{'count':_0x1fb811,'rows':_0x1eca0f}:null;}})[_0xb443('0x22')](respondWithResult(_0x1de0d8,null))[_0xb443('0x55')](handleError(_0x1de0d8,null));};function Extension(_0x37a0c7,_0x11d331,_0x3ec61c,_0x5365b6){this[_0xb443('0x83')]=_0xb443('0x84');this['exten']=_0x37a0c7[_0xb443('0x85')];this['app']=_0x5365b6;this[_0xb443('0x43')]='system';this[_0xb443('0x86')]=_0xb443('0x87');this[_0xb443('0x67')]=_0x37a0c7['id'];this['priority']=_0x11d331;this[_0xb443('0x88')]=_0x3ec61c;}function createExtensionsReciveFax(_0x1b0998){var _0x24f581=0x1;var _0x55be62=[];_0x55be62[_0xb443('0x89')](new Extension(_0x1b0998,_0x24f581,'',_0xb443('0x8a')));_0x24f581+=0x1;_0x55be62[_0xb443('0x89')](new Extension(_0x1b0998,_0x24f581,_0xb443('0x8b'),_0xb443('0x8c')));_0x24f581+=0x1;for(var _0x26dbb8 in _0x1b0998){if(_0x1b0998[_0xb443('0x4b')](_0x26dbb8)&&(_0x26dbb8==='ecm'||_0x26dbb8===_0xb443('0x85')||_0x26dbb8==='gateway'||_0x26dbb8===_0xb443('0x8d')||_0x26dbb8===_0xb443('0x8e')||_0x26dbb8==='maxrate'||_0x26dbb8===_0xb443('0x8f')||_0x26dbb8===_0xb443('0x90')||_0x26dbb8===_0xb443('0x91'))){_0x55be62[_0xb443('0x89')](new Extension(_0x1b0998,_0x24f581,_0xb443('0x92')+_0x26dbb8+')='+_0x1b0998[_0x26dbb8],'Set'));_0x24f581+=0x1;}}_0x55be62[_0xb443('0x89')](new Extension(_0x1b0998,_0x24f581,'6',_0xb443('0x93')));_0x24f581+=0x1;_0x55be62['push'](new Extension(_0x1b0998,_0x24f581,'/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',_0xb443('0x94')));_0x24f581=0x0;return _0x55be62;}exports[_0xb443('0x95')]=function(_0x1f6129,_0x3ecb79,_0x27667b){var _0xb5cd30;return db[_0xb443('0x7b')][_0xb443('0x96')](function(_0x41e19e){return db[_0xb443('0x40')][_0xb443('0x61')](_0x1f6129[_0xb443('0x5b')],{'transaction':_0x41e19e})[_0xb443('0x22')](function(_0x427449){_0xb5cd30=_0x427449[_0xb443('0x37')]({'plain':!![]});return db['VoiceExtension']['bulkCreate'](createExtensionsReciveFax(_0xb5cd30),{'transaction':_0x41e19e});});})[_0xb443('0x22')](function(){return _0xb5cd30;})[_0xb443('0x22')](respondWithResult(_0x3ecb79,null))['catch'](handleError(_0x3ecb79,null));};exports['updateAccountApplications']=function(_0x232ce8,_0x597068,_0x119f0a){var _0x3fdf10;return db[_0xb443('0x7b')][_0xb443('0x96')](function(_0x1abca0){return db['FaxAccount']['update'](_0x232ce8[_0xb443('0x5b')],{'where':{'id':_0x232ce8[_0xb443('0x5b')]['id']},'transaction':_0x1abca0})[_0xb443('0x22')](function(_0x550842){return db[_0xb443('0x97')][_0xb443('0x36')]({'where':{'FaxAccountId':_0x232ce8['body']['id']},'transaction':_0x1abca0})[_0xb443('0x22')](function(_0x56323f){return db[_0xb443('0x97')]['bulkCreate'](createExtensionsReciveFax(_[_0xb443('0x71')](_0x232ce8['body'],[_0xb443('0x98'),_0xb443('0x99'),'createdAt','updatedAt',_0xb443('0x9a'),'ListId'])),{'transaction':_0x1abca0});});});})[_0xb443('0x22')](function(){return db[_0xb443('0x40')][_0xb443('0x9b')](_0x232ce8[_0xb443('0x5b')]['id']);})[_0xb443('0x22')](respondWithResult(_0x597068,null))[_0xb443('0x55')](handleError(_0x597068,null));};exports[_0xb443('0x9c')]=function(_0x59524e,_0x2dc252,_0x156a2d){var _0x2ed081={'raw':!![],'where':{}};var _0x49f057={};var _0x3f0bcd={'count':0x0,'rows':[]};return db[_0xb443('0x40')][_0xb443('0x73')]({'where':{'id':_0x59524e['params']['id']}})[_0xb443('0x22')](handleEntityNotFound(_0x2dc252,null))[_0xb443('0x22')](function(_0x3dc8fe){if(_0x3dc8fe){_0x49f057[_0xb443('0x44')]=_[_0xb443('0x46')](db[_0xb443('0x9d')][_0xb443('0x41')]);_0x49f057['query']=_[_0xb443('0x46')](_0x59524e[_0xb443('0x45')]);_0x49f057[_0xb443('0x47')]=_[_0xb443('0x48')](_0x49f057[_0xb443('0x44')],_0x49f057['query']);_0x2ed081[_0xb443('0x49')]=_[_0xb443('0x48')](_0x49f057['model'],qs['fields'](_0x59524e[_0xb443('0x45')][_0xb443('0x4a')]));_0x2ed081[_0xb443('0x49')]=_0x2ed081[_0xb443('0x49')]['length']?_0x2ed081[_0xb443('0x49')]:_0x49f057['model'];if(!_0x59524e[_0xb443('0x45')][_0xb443('0x4b')](_0xb443('0x4c'))){_0x2ed081[_0xb443('0x30')]=qs[_0xb443('0x30')](_0x59524e[_0xb443('0x45')]['limit']);_0x2ed081['offset']=qs['offset'](_0x59524e[_0xb443('0x45')]['offset']);}_0x2ed081[_0xb443('0x66')]=qs[_0xb443('0x4d')](_0x59524e[_0xb443('0x45')][_0xb443('0x4d')]);_0x2ed081['where']=qs[_0xb443('0x47')](_[_0xb443('0x6c')](_0x59524e[_0xb443('0x45')],_0x49f057[_0xb443('0x47')]));_0x2ed081['where']['FaxAccountId']=_0x3dc8fe['id'];if(_0x59524e[_0xb443('0x45')]['filter']){_0x2ed081[_0xb443('0x4f')]=_[_0xb443('0x50')](_0x2ed081[_0xb443('0x4f')],{'$or':_[_0xb443('0x3f')](_0x2ed081['attributes'],function(_0x37d6ae){var _0x4bdc9a={};_0x4bdc9a[_0x37d6ae]={'$like':'%'+_0x59524e[_0xb443('0x45')][_0xb443('0x4e')]+'%'};return _0x4bdc9a;})});}if(_0x59524e[_0xb443('0x45')]['$gte']){var _0x21a336=_0x59524e[_0xb443('0x45')][_0xb443('0x9e')][_0xb443('0x9f')](',');var _0x1bbce9={};_0x1bbce9[_0x21a336[0x0]]={'$gte':moment(_0x21a336[0x1])[_0xb443('0xa0')](_0xb443('0xa1'))};_0x2ed081[_0xb443('0x4f')]=_[_0xb443('0x50')](_0x2ed081[_0xb443('0x4f')],_0x1bbce9);}_0x2ed081=_['merge']({},_0x2ed081,_0x59524e['options']);return db['FaxMessage']['count']({'where':_0x2ed081[_0xb443('0x4f')]})['then'](function(_0x426017){_0x3f0bcd['count']=_0x426017;if(_0x59524e[_0xb443('0x45')]['includeAll']){_0x2ed081['include']=[{'all':!![]}];}return db[_0xb443('0x9d')][_0xb443('0x53')](_0x2ed081);})[_0xb443('0x22')](function(_0x14f0a3){_0x3f0bcd[_0xb443('0x54')]=_0x14f0a3;return _0x3f0bcd;});}})[_0xb443('0x22')](respondWithFilteredResult(_0x2dc252,_0x2ed081))[_0xb443('0x55')](handleError(_0x2dc252,null));};exports[_0xb443('0x81')]=function(_0x404f79,_0x330055,_0x2f5709){var _0x292b39,_0x2ec336={},_0x301d5c;if(_0x404f79[_0xb443('0x5b')]['to']){_0x301d5c=_0x404f79[_0xb443('0x5b')]['to'][0x0];}return db[_0xb443('0x40')][_0xb443('0x5a')]({'where':{'id':_0x404f79[_0xb443('0x57')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0xb443('0x74')],'as':_0xb443('0xa2'),'where':{'fax':_0x301d5c},'limit':0x1,'order':[['updatedAt',_0xb443('0xa3')]]}]}]})['then'](handleEntityNotFound(_0x330055,null))[_0xb443('0x22')](function(_0xdeb5f){_0x292b39=_0xdeb5f;if(_0x404f79[_0xb443('0x5b')]['attachments']&&_0x404f79[_0xb443('0x5b')]['attachments'][_0xb443('0x58')]){for(var _0x4e6993=0x0;_0x4e6993<_0x404f79[_0xb443('0x5b')][_0xb443('0xa4')][_0xb443('0x58')];_0x4e6993+=0x1){_0x404f79[_0xb443('0x5b')][_0xb443('0xa4')][_0x4e6993]={'filename':_0x404f79[_0xb443('0x5b')][_0xb443('0xa4')][_0x4e6993][_0xb443('0x3b')],'id':_0x404f79[_0xb443('0x5b')][_0xb443('0xa4')][_0x4e6993]['id'],'path':path[_0xb443('0xa5')](config[_0xb443('0xa6')],_0xb443('0xa7'),_0x404f79['body']['attachments'][_0x4e6993][_0xb443('0xa8')])};}}return respondWithRpcPromise('CheckAfterSend','CheckAfterSend',{'FaxAccountId':_[_0xb443('0xa9')](_0x404f79[_0xb443('0x57')]['id'])?undefined:_0x404f79[_0xb443('0x57')]['id'],'path':_[_0xb443('0xa9')](_0x404f79['body'][_0xb443('0xa4')][0x0][_0xb443('0xaa')])?undefined:_0x404f79[_0xb443('0x5b')]['attachments'][0x0]['path'],'fax':_['isNil'](_0x404f79[_0xb443('0x5b')]['to'][0x0])?undefined:_0x404f79['body']['to'][0x0]},client9002);})['then'](function(){if(_0x292b39){if(_[_0xb443('0xa9')](_0x404f79[_0xb443('0x5b')][_0xb443('0xab')])){_0x404f79[_0xb443('0x5b')][_0xb443('0xab')]=util[_0xb443('0xa0')]('\x22%s\x22\x20<%s>',_0x292b39['name'],_0x292b39['fax']);}if(_0x292b39[_0xb443('0xac')]){if(_0x292b39[_0xb443('0xac')][_0xb443('0xa2')]['length']){return _0x292b39[_0xb443('0xac')]['Contacts'][0x0];}else{return db[_0xb443('0x74')][_0xb443('0x61')](_['defaults'](_0x404f79[_0xb443('0x5b')],{'firstName':_0x404f79[_0xb443('0x5b')]['to'][0x0],'phone':_0x404f79['body']['to'][0x0],'fax':_0x404f79[_0xb443('0x5b')]['to'][0x0],'ListId':_0x292b39[_0xb443('0xad')]}));}}else{throw new Error(_0xb443('0xae'));}}else{throw new Error('Send\x20Fax\x20failed');}})['then'](function(_0x1102d9){if(_0x1102d9){return db[_0xb443('0x70')]['find']({'where':{'ContactId':_0x1102d9['id'],'closed':![],'FaxAccountId':_0x292b39['id']}})[_0xb443('0x22')](function(_0x21663a){if(_0x21663a){return[_0x21663a,![]];}return db[_0xb443('0x70')][_0xb443('0x61')]({'UserId':_0x404f79[_0xb443('0x5c')]['id'],'ContactId':_0x1102d9['id'],'FaxAccountId':_0x292b39['id'],'fax':_0x404f79[_0xb443('0x5b')]['to'][0x0],'firstMsgDirection':_0xb443('0xaf'),'Messages':[_[_0xb443('0x50')](_0x404f79['body'],{'read':![],'body':_0x404f79[_0xb443('0x5b')][_0xb443('0xa4')][0x0][_0xb443('0xb0')],'FaxAccountId':_0x292b39['id'],'UserId':_0x404f79[_0xb443('0x5c')]['id'],'ContactId':_0x1102d9['id'],'AttachmentId':_0x404f79[_0xb443('0x5b')]['attachments'][0x0]['id']})]},{'include':[{'model':db[_0xb443('0x9d')],'as':'Messages'}]})[_0xb443('0x22')](function(_0x20eba7){return[_0x20eba7,!![]];});});}else{throw new Error(_0xb443('0xb1'));}})[_0xb443('0xb2')](function(_0x51fddd,_0x1d3568){if(_0x1d3568){return _0x51fddd;}return db['FaxMessage'][_0xb443('0x61')]({'direction':_0xb443('0xaf'),'read':![],'body':_0x404f79[_0xb443('0x5b')]['attachments'][0x0]['filename'],'FaxAccountId':_0x292b39['id'],'FaxInteractionId':_0x51fddd['id'],'UserId':_0x404f79['user']['id'],'ContactId':_0x51fddd[_0xb443('0xb3')],'AttachmentId':_0x404f79[_0xb443('0x5b')][_0xb443('0xa4')][0x0]['id']})[_0xb443('0x22')](function(_0x41111d){_0x51fddd['dataValues'][_0xb443('0xb4')]=[];_0x51fddd[_0xb443('0xb5')][_0xb443('0xb4')][_0xb443('0x89')](_0x41111d[_0xb443('0xb5')]);return _0x51fddd;});})[_0xb443('0x22')](function(_0x1046dd){respondWithRpcPromise(_0xb443('0xb6'),'SendFax',{'FaxAccountId':_[_0xb443('0xa9')](_0x404f79[_0xb443('0x57')]['id'])?undefined:_0x404f79['params']['id'],'path':_[_0xb443('0xa9')](_0x404f79['body'][_0xb443('0xa4')][0x0]['path'])?undefined:_0x404f79[_0xb443('0x5b')]['attachments'][0x0][_0xb443('0xaa')],'fax':_[_0xb443('0xa9')](_0x404f79['body']['to'][0x0])?undefined:_0x404f79[_0xb443('0x5b')]['to'][0x0],'AttachmentId':_0x404f79['body'][_0xb443('0xa4')][0x0]['id']},client9002)[_0xb443('0x22')](function(_0x288937){logger['info'](_0xb443('0xb7'),_0x288937);})[_0xb443('0x55')](function(_0x744e97){logger[_0xb443('0x23')](_0xb443('0xb7'),_0x744e97);});return _0x1046dd;})['then'](respondWithResult(_0x330055,null))['catch'](handleError(_0x330055,null));};exports['addAgents']=function(_0x3313c9,_0x502035,_0x474239){return db['FaxAccount'][_0xb443('0x5a')]({'where':{'id':_0x3313c9['params']['id']}})[_0xb443('0x22')](handleEntityNotFound(_0x502035,null))[_0xb443('0x22')](function(_0x51418b){if(_0x51418b){return _0x51418b[_0xb443('0xb8')](_0x3313c9[_0xb443('0x5b')][_0xb443('0x69')],_[_0xb443('0x71')](_0x3313c9[_0xb443('0x5b')],[_0xb443('0x69'),'id'])||{})[_0xb443('0xb2')](function(_0x25f37d){for(var _0x136fbd=0x0;_0x136fbd<_0x3313c9['body'][_0xb443('0x69')]['length'];_0x136fbd+=0x1){socket['emit'](_0xb443('0xb9'),{'UserId':Number(_0x3313c9[_0xb443('0x5b')][_0xb443('0x69')][_0x136fbd]),'FaxAccountId':Number(_0x3313c9['params']['id'])});}return _0x25f37d;});}})[_0xb443('0x22')](respondWithResult(_0x502035,null))[_0xb443('0x55')](handleError(_0x502035,null));};exports[_0xb443('0xba')]=function(_0x5e3068,_0x5323e2,_0x18b916){return db['FaxAccount'][_0xb443('0x5a')]({'where':{'id':_0x5e3068[_0xb443('0x57')]['id']}})['then'](handleEntityNotFound(_0x5323e2,null))[_0xb443('0x22')](function(_0x2ef741){if(_0x2ef741){return _0x2ef741[_0xb443('0xba')](_0x5e3068[_0xb443('0x45')][_0xb443('0x69')])[_0xb443('0x22')](function(){if(_[_0xb443('0xbb')](_0x5e3068[_0xb443('0x45')][_0xb443('0x69')])){for(var _0x36ea07=0x0;_0x36ea07<_0x5e3068[_0xb443('0x45')]['ids'][_0xb443('0x58')];_0x36ea07+=0x1){socket[_0xb443('0xbc')](_0xb443('0xbd'),{'UserId':Number(_0x5e3068[_0xb443('0x45')][_0xb443('0x69')][_0x36ea07]),'FaxAccountId':Number(_0x5e3068['params']['id'])});}}else{socket[_0xb443('0xbc')](_0xb443('0xbd'),{'UserId':Number(_0x5e3068[_0xb443('0x45')][_0xb443('0x69')]),'FaxAccountId':Number(_0x5e3068[_0xb443('0x57')]['id'])});}});}})[_0xb443('0x22')](respondWithStatusCode(_0x5323e2,null))['catch'](handleError(_0x5323e2,null));};exports[_0xb443('0xbe')]=function(_0x3e9454,_0x328dc3,_0x35dd6d){var _0x17722b={};var _0x16ac5f={};var _0x39250d;var _0x21ee52;return db['FaxAccount'][_0xb443('0x73')]({'where':{'id':_0x3e9454[_0xb443('0x57')]['id']}})['then'](handleEntityNotFound(_0x328dc3,null))['then'](function(_0x28f7ec){if(_0x28f7ec){_0x39250d=_0x28f7ec;_0x16ac5f[_0xb443('0x44')]=_['keys'](db[_0xb443('0xbf')][_0xb443('0x41')]);_0x16ac5f[_0xb443('0x45')]=_[_0xb443('0x46')](_0x3e9454[_0xb443('0x45')]);_0x16ac5f[_0xb443('0x47')]=_['intersection'](_0x16ac5f[_0xb443('0x44')],_0x16ac5f[_0xb443('0x45')]);_0x17722b['attributes']=_[_0xb443('0x48')](_0x16ac5f['model'],qs['fields'](_0x3e9454['query'][_0xb443('0x4a')]));_0x17722b[_0xb443('0x49')]=_0x17722b[_0xb443('0x49')][_0xb443('0x58')]?_0x17722b[_0xb443('0x49')]:_0x16ac5f[_0xb443('0x44')];_0x17722b[_0xb443('0x66')]=qs['sort'](_0x3e9454[_0xb443('0x45')][_0xb443('0x4d')]);_0x17722b[_0xb443('0x4f')]=qs[_0xb443('0x47')](_[_0xb443('0x6c')](_0x3e9454['query'],_0x16ac5f[_0xb443('0x47')]));if(_0x3e9454['query'][_0xb443('0x4e')]){_0x17722b['where']=_[_0xb443('0x50')](_0x17722b[_0xb443('0x4f')],{'$or':_[_0xb443('0x3f')](_0x17722b['attributes'],function(_0x24d7ae){var _0x26cf60={};_0x26cf60[_0x24d7ae]={'$like':'%'+_0x3e9454[_0xb443('0x45')][_0xb443('0x4e')]+'%'};return _0x26cf60;})});}_0x17722b=_[_0xb443('0x50')]({},_0x17722b,_0x3e9454[_0xb443('0x6d')]);return _0x39250d[_0xb443('0xbe')](_0x17722b);}})[_0xb443('0x22')](function(_0x3b963e){if(_0x3b963e){_0x21ee52=_0x3b963e['length'];if(!_0x3e9454[_0xb443('0x45')][_0xb443('0x4b')](_0xb443('0x4c'))){_0x17722b[_0xb443('0x30')]=qs[_0xb443('0x30')](_0x3e9454[_0xb443('0x45')][_0xb443('0x30')]);_0x17722b[_0xb443('0x2d')]=qs[_0xb443('0x2d')](_0x3e9454['query'][_0xb443('0x2d')]);}return _0x39250d[_0xb443('0xbe')](_0x17722b);}})[_0xb443('0x22')](function(_0x34520d){if(_0x34520d){return _0x34520d?{'count':_0x21ee52,'rows':_0x34520d}:null;}})[_0xb443('0x22')](respondWithResult(_0x328dc3,null))[_0xb443('0x55')](handleError(_0x328dc3,null));};
\ No newline at end of file
+var _0x68d8=['params','mandatoryDispositionPause','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','describe','addDisposition','FaxAccountId','Disposition','findOne','findAll','rows','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','addInteraction','FaxInteraction','CmContact','Owner','fullname','internal','Tags','color','tag','addApplications','sequelize','transaction','FaxApplication','findAndCountAll','priority','getApplications','from-voip-provider','exten','app','system','description','Fax\x20Extension','push','Answer','CDR(type)=inbound-fax','Set','ecm','localstationid','faxdetect','headerinfo','maxrate','minrate','t38timeout','FAXOPT(','Wait','ReceiveFax','addAccountApplications','bulkCreate','updateAccountApplications','VoiceExtension','tech','createdAt','TrunkId','ListId','findById','getMessages','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','CmList','updatedAt','DESC','attachments','join','root','basename','CheckAfterSend','isNil','path','from','\x22%s\x22\x20<%s>','List','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Messages','spread','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','omit','emit','removeAgents','isArray','userFaxAccount:remove','User','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','sox','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./faxAccount.socket','client','http','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','get','FaxAccounts','UserProfileResource','stack','name','send','index','Pause','map','FaxAccount','rawAttributes','fieldName','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','type','VIRTUAL','merge','options','includeAll','include','show'];(function(_0x2ea6f6,_0x3ed71c){var _0x12a6f1=function(_0x3a25fc){while(--_0x3a25fc){_0x2ea6f6['push'](_0x2ea6f6['shift']());}};_0x12a6f1(++_0x3ed71c);}(_0x68d8,0x128));var _0x868d=function(_0x3ca8f7,_0x2e1797){_0x3ca8f7=_0x3ca8f7-0x0;var _0x30a9ba=_0x68d8[_0x3ca8f7];return _0x30a9ba;};'use strict';var emlformat=require(_0x868d('0x0'));var rimraf=require(_0x868d('0x1'));var zipdir=require(_0x868d('0x2'));var jsonpatch=require(_0x868d('0x3'));var rp=require(_0x868d('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x868d('0x5'));var util=require(_0x868d('0x6'));var path=require('path');var sox=require(_0x868d('0x7'));var csv=require(_0x868d('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x868d('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x868d('0xa'));var jsforce=require(_0x868d('0xb'));var deskjs=require(_0x868d('0xc'));var toCsv=require(_0x868d('0x8'));var querystring=require(_0x868d('0xd'));var Papa=require(_0x868d('0xe'));var Redis=require(_0x868d('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x868d('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x868d('0x11'))(_0x868d('0x12'));var utils=require('../../config/utils');var config=require(_0x868d('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x868d('0x14'))['db'];config[_0x868d('0x15')]=_[_0x868d('0x16')](config['redis'],{'host':_0x868d('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x868d('0x15')]));require(_0x868d('0x18'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x868d('0x19')][_0x868d('0x1a')]({'port':0x232c});var client9002=jayson[_0x868d('0x19')][_0x868d('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x1f1a01,_0x4107f5,_0x5c6176,_0x4d8c44){return new BPromise(function(_0x51aca9,_0x14a140){var _0x508967=_0x4d8c44||client;return _0x508967[_0x868d('0x1b')](_0x1f1a01,_0x5c6176)[_0x868d('0x1c')](function(_0x151f5f){logger[_0x868d('0x1d')](_0x868d('0x1e'),_0x4107f5,_0x868d('0x1f'));logger[_0x868d('0x20')](_0x868d('0x21'),_0x4107f5,'request\x20sent',JSON['stringify'](_0x151f5f));if(_0x151f5f[_0x868d('0x22')]){if(_0x151f5f['error'][_0x868d('0x23')]===0x1f4){logger[_0x868d('0x22')]('FaxAccount,\x20%s,\x20%s',_0x4107f5,_0x151f5f[_0x868d('0x22')][_0x868d('0x24')]);return _0x14a140(_0x151f5f[_0x868d('0x22')][_0x868d('0x24')]);}logger[_0x868d('0x22')](_0x868d('0x1e'),_0x4107f5,_0x151f5f[_0x868d('0x22')][_0x868d('0x24')]);return _0x51aca9(_0x151f5f[_0x868d('0x22')]['message']);}else{logger[_0x868d('0x1d')]('FaxAccount,\x20%s,\x20%s',_0x4107f5,_0x868d('0x1f'));_0x51aca9(_0x151f5f['result'][_0x868d('0x24')]);}})[_0x868d('0x25')](function(_0xb49d2e){logger[_0x868d('0x22')]('FaxAccount,\x20%s,\x20%s',_0x4107f5,_0xb49d2e);_0x14a140(_0xb49d2e);});});}function respondWithStatusCode(_0x3c0d95,_0x5d8943){_0x5d8943=_0x5d8943||0xcc;return function(_0x2e1977){if(_0x2e1977){return _0x3c0d95[_0x868d('0x26')](_0x5d8943);}return _0x3c0d95[_0x868d('0x27')](_0x5d8943)[_0x868d('0x28')]();};}function respondWithResult(_0x403680,_0x4301f8){_0x4301f8=_0x4301f8||0xc8;return function(_0x2d122a){if(_0x2d122a){return _0x403680[_0x868d('0x27')](_0x4301f8)['json'](_0x2d122a);}};}function respondWithFilteredResult(_0x59e050,_0x400c7d){return function(_0x2c3c0c){if(_0x2c3c0c){var _0x4dccf0=typeof _0x400c7d[_0x868d('0x29')]===_0x868d('0x2a')&&typeof _0x400c7d['limit']==='undefined';var _0x161af7=_0x2c3c0c[_0x868d('0x2b')];var _0x1bfec9=_0x4dccf0?0x0:_0x400c7d['offset'];var _0x184eb3=_0x4dccf0?_0x2c3c0c['count']:_0x400c7d['offset']+_0x400c7d[_0x868d('0x2c')];var _0x2232d4;if(_0x184eb3>=_0x161af7){_0x184eb3=_0x161af7;_0x2232d4=0xc8;}else{_0x2232d4=0xce;}_0x59e050['status'](_0x2232d4);return _0x59e050[_0x868d('0x2d')](_0x868d('0x2e'),_0x1bfec9+'-'+_0x184eb3+'/'+_0x161af7)['json'](_0x2c3c0c);}return null;};}function patchUpdates(_0x15fa90){return function(_0x453685){try{jsonpatch[_0x868d('0x2f')](_0x453685,_0x15fa90,!![]);}catch(_0x41dba2){return BPromise[_0x868d('0x30')](_0x41dba2);}return _0x453685[_0x868d('0x31')]();};}function saveUpdates(_0x3d96d6,_0x2e1152){return function(_0x31f1be){if(_0x31f1be){return _0x31f1be[_0x868d('0x32')](_0x3d96d6)[_0x868d('0x1c')](function(_0x26a720){return _0x26a720;});}return null;};}function removeEntity(_0x34b8a2,_0x4d83d0){return function(_0x22bfec){if(_0x22bfec){return _0x22bfec[_0x868d('0x33')]()['then'](function(){var _0x5d196d=_0x22bfec[_0x868d('0x34')]({'plain':!![]});var _0x50d0c1=_0x868d('0x35');return db[_0x868d('0x36')]['destroy']({'where':{'type':_0x50d0c1,'resourceId':_0x5d196d['id']}})['then'](function(){return _0x22bfec;});})['then'](function(){_0x34b8a2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4e316f,_0x40b9d2){return function(_0x4a07dc){if(!_0x4a07dc){_0x4e316f['sendStatus'](0x194);}return _0x4a07dc;};}function handleError(_0x5bde1d,_0x42deaf){_0x42deaf=_0x42deaf||0x1f4;return function(_0x49e1b7){logger[_0x868d('0x22')](_0x49e1b7[_0x868d('0x37')]);if(_0x49e1b7[_0x868d('0x38')]){delete _0x49e1b7[_0x868d('0x38')];}_0x5bde1d['status'](_0x42deaf)[_0x868d('0x39')](_0x49e1b7);};}exports[_0x868d('0x3a')]=function(_0x325c47,_0x57172c){var _0x1eeae0={'include':[{'model':db[_0x868d('0x3b')],'as':'mandatoryDispositionPause'}]},_0x509fb7={},_0x495830={'count':0x0,'rows':[]};var _0x5e3a8b=_[_0x868d('0x3c')](db[_0x868d('0x3d')][_0x868d('0x3e')],function(_0x33543b){return{'name':_0x33543b[_0x868d('0x3f')],'type':_0x33543b['type']['key']};});_0x509fb7['model']=_[_0x868d('0x3c')](_0x5e3a8b,_0x868d('0x38'));_0x509fb7[_0x868d('0x40')]=_[_0x868d('0x41')](_0x325c47[_0x868d('0x40')]);_0x509fb7['filters']=_[_0x868d('0x42')](_0x509fb7[_0x868d('0x43')],_0x509fb7[_0x868d('0x40')]);_0x1eeae0[_0x868d('0x44')]=_[_0x868d('0x42')](_0x509fb7[_0x868d('0x43')],qs['fields'](_0x325c47[_0x868d('0x40')][_0x868d('0x45')]));_0x1eeae0[_0x868d('0x44')]=_0x1eeae0['attributes'][_0x868d('0x46')]?_0x1eeae0[_0x868d('0x44')]:_0x509fb7[_0x868d('0x43')];if(!_0x325c47[_0x868d('0x40')][_0x868d('0x47')](_0x868d('0x48'))){_0x1eeae0[_0x868d('0x2c')]=qs[_0x868d('0x2c')](_0x325c47[_0x868d('0x40')][_0x868d('0x2c')]);_0x1eeae0['offset']=qs[_0x868d('0x29')](_0x325c47[_0x868d('0x40')][_0x868d('0x29')]);}_0x1eeae0[_0x868d('0x49')]=qs[_0x868d('0x4a')](_0x325c47[_0x868d('0x40')][_0x868d('0x4a')]);_0x1eeae0['where']=qs[_0x868d('0x4b')](_[_0x868d('0x4c')](_0x325c47[_0x868d('0x40')],_0x509fb7[_0x868d('0x4b')]),_0x5e3a8b);if(_0x325c47[_0x868d('0x40')][_0x868d('0x4d')]){_0x1eeae0[_0x868d('0x4e')]=_['merge'](_0x1eeae0['where'],{'$or':_['map'](_0x5e3a8b,function(_0x32216c){if(_0x32216c[_0x868d('0x4f')]!==_0x868d('0x50')){var _0x5e5115={};_0x5e5115[_0x32216c[_0x868d('0x38')]]={'$like':'%'+_0x325c47['query'][_0x868d('0x4d')]+'%'};return _0x5e5115;}})});}_0x1eeae0=_[_0x868d('0x51')]({},_0x1eeae0,_0x325c47[_0x868d('0x52')]);var _0x42f984={'where':_0x1eeae0[_0x868d('0x4e')]};return db[_0x868d('0x3d')][_0x868d('0x2b')](_0x42f984)[_0x868d('0x1c')](function(_0x1477dd){_0x495830[_0x868d('0x2b')]=_0x1477dd;if(_0x325c47[_0x868d('0x40')][_0x868d('0x53')]){_0x1eeae0[_0x868d('0x54')]=[{'all':!![]}];}return db[_0x868d('0x3d')]['findAll'](_0x1eeae0);})[_0x868d('0x1c')](function(_0x4857da){_0x495830['rows']=_0x4857da;return _0x495830;})[_0x868d('0x1c')](respondWithFilteredResult(_0x57172c,_0x1eeae0))[_0x868d('0x25')](handleError(_0x57172c,null));};exports[_0x868d('0x55')]=function(_0x28ce2e,_0x2c02b6){var _0x369380={'raw':![],'where':{'id':_0x28ce2e[_0x868d('0x56')]['id']},'include':[{'model':db[_0x868d('0x3b')],'as':_0x868d('0x57')}]},_0x46dd92={};_0x46dd92[_0x868d('0x43')]=_[_0x868d('0x41')](db[_0x868d('0x3d')][_0x868d('0x3e')]);_0x46dd92[_0x868d('0x40')]=_[_0x868d('0x41')](_0x28ce2e[_0x868d('0x40')]);_0x46dd92['filters']=_[_0x868d('0x42')](_0x46dd92['model'],_0x46dd92[_0x868d('0x40')]);_0x369380[_0x868d('0x44')]=_['intersection'](_0x46dd92['model'],qs['fields'](_0x28ce2e[_0x868d('0x40')][_0x868d('0x45')]));_0x369380[_0x868d('0x44')]=_0x369380[_0x868d('0x44')][_0x868d('0x46')]?_0x369380[_0x868d('0x44')]:_0x46dd92[_0x868d('0x43')];if(_0x28ce2e['query'][_0x868d('0x53')]){_0x369380[_0x868d('0x54')]=[{'all':!![]}];}_0x369380=_['merge']({},_0x369380,_0x28ce2e[_0x868d('0x52')]);return db[_0x868d('0x3d')][_0x868d('0x58')](_0x369380)['then'](handleEntityNotFound(_0x2c02b6,null))['then'](respondWithResult(_0x2c02b6,null))[_0x868d('0x25')](handleError(_0x2c02b6,null));};exports[_0x868d('0x59')]=function(_0x36a6fb,_0xa30d4){return db['FaxAccount'][_0x868d('0x59')](_0x36a6fb[_0x868d('0x5a')],{})[_0x868d('0x1c')](function(_0x24a880){var _0x1a60bf=_0x36a6fb[_0x868d('0x5b')][_0x868d('0x34')]({'plain':!![]});if(!_0x1a60bf)throw new Error(_0x868d('0x5c'));if(_0x1a60bf[_0x868d('0x5d')]===_0x868d('0x5b')){var _0x540d46=_0x24a880['get']({'plain':!![]});var _0x780c45='FaxAccounts';return db[_0x868d('0x5e')][_0x868d('0x58')]({'where':{'name':_0x780c45,'userProfileId':_0x1a60bf['userProfileId']},'raw':!![]})[_0x868d('0x1c')](function(_0x439e00){if(_0x439e00&&_0x439e00[_0x868d('0x5f')]===0x0){return db[_0x868d('0x36')][_0x868d('0x59')]({'name':_0x540d46[_0x868d('0x38')],'resourceId':_0x540d46['id'],'type':_0x439e00[_0x868d('0x38')],'sectionId':_0x439e00['id']},{})[_0x868d('0x1c')](function(){return _0x24a880;});}else{return _0x24a880;}})[_0x868d('0x25')](function(_0x53682b){logger[_0x868d('0x22')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x53682b);throw _0x53682b;});}return _0x24a880;})['then'](respondWithResult(_0xa30d4,0xc9))[_0x868d('0x25')](handleError(_0xa30d4,null));};exports[_0x868d('0x32')]=function(_0x40e99b,_0x2f1b30){if(_0x40e99b['body']['id']){delete _0x40e99b[_0x868d('0x5a')]['id'];}return db[_0x868d('0x3d')][_0x868d('0x58')]({'where':{'id':_0x40e99b[_0x868d('0x56')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x868d('0x1c')](handleEntityNotFound(_0x2f1b30,null))['then'](saveUpdates(_0x40e99b[_0x868d('0x5a')],null))[_0x868d('0x1c')](respondWithResult(_0x2f1b30,null))[_0x868d('0x25')](handleError(_0x2f1b30,null));};exports['destroy']=function(_0x2b04a8,_0x90bca5){return db[_0x868d('0x3d')]['find']({'where':{'id':_0x2b04a8[_0x868d('0x56')]['id']}})['then'](handleEntityNotFound(_0x90bca5,null))[_0x868d('0x1c')](removeEntity(_0x90bca5,null))[_0x868d('0x25')](handleError(_0x90bca5,null));};exports[_0x868d('0x60')]=function(_0x2e78b7,_0x1aaf7f){return db[_0x868d('0x3d')]['describe']()['then'](respondWithResult(_0x1aaf7f,null))[_0x868d('0x25')](handleError(_0x1aaf7f,null));};exports[_0x868d('0x61')]=function(_0x7e1a83,_0x46db28,_0x2b5356){if(_0x7e1a83[_0x868d('0x5a')]['id']){delete _0x7e1a83['body']['id'];}return db[_0x868d('0x3d')][_0x868d('0x58')]({'where':{'id':_0x7e1a83[_0x868d('0x56')]['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x46db28,null))[_0x868d('0x1c')](function(_0x4caded){if(_0x4caded){_0x7e1a83[_0x868d('0x5a')][_0x868d('0x62')]=_0x4caded['id'];return db[_0x868d('0x63')]['create'](_0x7e1a83['body']);}})['then'](respondWithResult(_0x46db28,null))[_0x868d('0x25')](handleError(_0x46db28,null));};exports['getDispositions']=function(_0x5abbb7,_0x47815f,_0x2fe293){var _0x2550f3={'raw':![],'where':{}};var _0x4dfc43={};var _0x11651f={'count':0x0,'rows':[]};return db[_0x868d('0x3d')][_0x868d('0x64')]({'where':{'id':_0x5abbb7[_0x868d('0x56')]['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x47815f,null))[_0x868d('0x1c')](function(_0x3b90e6){if(_0x3b90e6){_0x4dfc43[_0x868d('0x43')]=_[_0x868d('0x41')](db[_0x868d('0x63')][_0x868d('0x3e')]);_0x4dfc43[_0x868d('0x40')]=_[_0x868d('0x41')](_0x5abbb7[_0x868d('0x40')]);_0x4dfc43[_0x868d('0x4b')]=_['intersection'](_0x4dfc43[_0x868d('0x43')],_0x4dfc43[_0x868d('0x40')]);_0x2550f3['attributes']=_[_0x868d('0x42')](_0x4dfc43[_0x868d('0x43')],qs[_0x868d('0x45')](_0x5abbb7['query'][_0x868d('0x45')]));_0x2550f3[_0x868d('0x44')]=_0x2550f3[_0x868d('0x44')]['length']?_0x2550f3[_0x868d('0x44')]:_0x4dfc43[_0x868d('0x43')];if(!_0x5abbb7[_0x868d('0x40')][_0x868d('0x47')](_0x868d('0x48'))){_0x2550f3['limit']=qs[_0x868d('0x2c')](_0x5abbb7[_0x868d('0x40')][_0x868d('0x2c')]);_0x2550f3[_0x868d('0x29')]=qs[_0x868d('0x29')](_0x5abbb7['query'][_0x868d('0x29')]);}_0x2550f3['order']=qs[_0x868d('0x4a')](_0x5abbb7['query'][_0x868d('0x4a')]);_0x2550f3[_0x868d('0x4e')]=qs[_0x868d('0x4b')](_[_0x868d('0x4c')](_0x5abbb7[_0x868d('0x40')],_0x4dfc43['filters']));_0x2550f3[_0x868d('0x4e')][_0x868d('0x62')]=_0x3b90e6['id'];if(_0x5abbb7['query'][_0x868d('0x4d')]){_0x2550f3[_0x868d('0x4e')]=_[_0x868d('0x51')](_0x2550f3[_0x868d('0x4e')],{'$or':_[_0x868d('0x3c')](_0x2550f3[_0x868d('0x44')],function(_0x1b714f){var _0x5ccc02={};_0x5ccc02[_0x1b714f]={'$like':'%'+_0x5abbb7[_0x868d('0x40')][_0x868d('0x4d')]+'%'};return _0x5ccc02;})});}_0x2550f3=_[_0x868d('0x51')]({},_0x2550f3,_0x5abbb7[_0x868d('0x52')]);return db[_0x868d('0x63')][_0x868d('0x2b')]({'where':_0x2550f3[_0x868d('0x4e')]})['then'](function(_0x3965ad){_0x11651f['count']=_0x3965ad;if(_0x5abbb7[_0x868d('0x40')][_0x868d('0x53')]){_0x2550f3['include']=[{'all':!![]}];}return db[_0x868d('0x63')][_0x868d('0x65')](_0x2550f3);})[_0x868d('0x1c')](function(_0x2744d5){_0x11651f[_0x868d('0x66')]=_0x2744d5;return _0x11651f;});}})[_0x868d('0x1c')](respondWithFilteredResult(_0x47815f,_0x2550f3))['catch'](handleError(_0x47815f,null));};exports[_0x868d('0x67')]=function(_0x18b990,_0x55682f,_0x254bc7){return db[_0x868d('0x3d')]['find']({'where':{'id':_0x18b990[_0x868d('0x56')]['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x55682f,null))['then'](function(_0x435012){if(_0x435012){return _0x435012[_0x868d('0x67')](_0x18b990['query']['ids']);}})['then'](respondWithStatusCode(_0x55682f,null))[_0x868d('0x25')](handleError(_0x55682f,null));};exports[_0x868d('0x68')]=function(_0x37db87,_0x45cec5,_0x47c3eb){if(_0x37db87[_0x868d('0x5a')]['id']){delete _0x37db87[_0x868d('0x5a')]['id'];}return db[_0x868d('0x3d')][_0x868d('0x58')]({'where':{'id':_0x37db87['params']['id']}})['then'](handleEntityNotFound(_0x45cec5,null))[_0x868d('0x1c')](function(_0x1e431a){if(_0x1e431a){_0x37db87['body'][_0x868d('0x62')]=_0x1e431a['id'];return db[_0x868d('0x69')][_0x868d('0x59')](_0x37db87[_0x868d('0x5a')]);}})[_0x868d('0x1c')](respondWithResult(_0x45cec5,null))[_0x868d('0x25')](handleError(_0x45cec5,null));};exports[_0x868d('0x6a')]=function(_0x3fd977,_0x1b15fa,_0x2fa573){var _0x309a92={'raw':![],'where':{}};var _0x25f429={};var _0x24e1b6={'count':0x0,'rows':[]};return db['FaxAccount'][_0x868d('0x64')]({'where':{'id':_0x3fd977[_0x868d('0x56')]['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x1b15fa,null))['then'](function(_0x574c93){if(_0x574c93){_0x25f429[_0x868d('0x43')]=_[_0x868d('0x41')](db['CannedAnswer'][_0x868d('0x3e')]);_0x25f429[_0x868d('0x40')]=_[_0x868d('0x41')](_0x3fd977[_0x868d('0x40')]);_0x25f429[_0x868d('0x4b')]=_[_0x868d('0x42')](_0x25f429[_0x868d('0x43')],_0x25f429[_0x868d('0x40')]);_0x309a92[_0x868d('0x44')]=_[_0x868d('0x42')](_0x25f429[_0x868d('0x43')],qs[_0x868d('0x45')](_0x3fd977[_0x868d('0x40')][_0x868d('0x45')]));_0x309a92['attributes']=_0x309a92[_0x868d('0x44')][_0x868d('0x46')]?_0x309a92[_0x868d('0x44')]:_0x25f429['model'];if(!_0x3fd977['query'][_0x868d('0x47')]('nolimit')){_0x309a92['limit']=qs[_0x868d('0x2c')](_0x3fd977[_0x868d('0x40')][_0x868d('0x2c')]);_0x309a92[_0x868d('0x29')]=qs[_0x868d('0x29')](_0x3fd977['query'][_0x868d('0x29')]);}_0x309a92[_0x868d('0x49')]=qs[_0x868d('0x4a')](_0x3fd977[_0x868d('0x40')]['sort']);_0x309a92['where']=qs[_0x868d('0x4b')](_[_0x868d('0x4c')](_0x3fd977[_0x868d('0x40')],_0x25f429[_0x868d('0x4b')]));_0x309a92[_0x868d('0x4e')][_0x868d('0x62')]=_0x574c93['id'];if(_0x3fd977[_0x868d('0x40')]['filter']){_0x309a92[_0x868d('0x4e')]=_['merge'](_0x309a92[_0x868d('0x4e')],{'$or':_[_0x868d('0x3c')](_0x309a92['attributes'],function(_0x56b238){var _0x391971={};_0x391971[_0x56b238]={'$like':'%'+_0x3fd977[_0x868d('0x40')]['filter']+'%'};return _0x391971;})});}_0x309a92=_['merge']({},_0x309a92,_0x3fd977[_0x868d('0x52')]);return db['CannedAnswer'][_0x868d('0x2b')]({'where':_0x309a92[_0x868d('0x4e')]})[_0x868d('0x1c')](function(_0x115418){_0x24e1b6[_0x868d('0x2b')]=_0x115418;if(_0x3fd977['query'][_0x868d('0x53')]){_0x309a92[_0x868d('0x54')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x309a92);})['then'](function(_0x1b4c49){_0x24e1b6['rows']=_0x1b4c49;return _0x24e1b6;});}})['then'](respondWithFilteredResult(_0x1b15fa,_0x309a92))[_0x868d('0x25')](handleError(_0x1b15fa,null));};exports['removeAnswers']=function(_0x2b93a6,_0x1dd267,_0x2fa833){return db['FaxAccount'][_0x868d('0x58')]({'where':{'id':_0x2b93a6[_0x868d('0x56')]['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x1dd267,null))['then'](function(_0xb15d76){if(_0xb15d76){return _0xb15d76[_0x868d('0x6b')](_0x2b93a6['query'][_0x868d('0x6c')]);}})[_0x868d('0x1c')](respondWithStatusCode(_0x1dd267,null))[_0x868d('0x25')](handleError(_0x1dd267,null));};exports[_0x868d('0x6d')]=function(_0x7a6c08,_0x5cd49e,_0x5f4f10){return db[_0x868d('0x6e')][_0x868d('0x58')]({'where':{'id':_0x7a6c08[_0x868d('0x56')]['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x5cd49e,null))['then'](function(_0x325b78){if(_0x325b78){return _0x325b78['addInteraction'](_0x7a6c08[_0x868d('0x5a')]['ids'],_['omit'](_0x7a6c08[_0x868d('0x5a')],[_0x868d('0x6c'),'id'])||{});}})[_0x868d('0x1c')](respondWithResult(_0x5cd49e,null))[_0x868d('0x25')](handleError(_0x5cd49e,null));};exports['getInteractions']=function(_0x68b807,_0x5ba9f7,_0x146da8){var _0x159a44={'raw':![],'where':{}};var _0x56f7f2={};var _0x3f6e43={'count':0x0,'rows':[]};return db[_0x868d('0x3d')]['findOne']({'where':{'id':_0x68b807['params']['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x5ba9f7,null))[_0x868d('0x1c')](function(_0x1724dd){if(_0x1724dd){_0x56f7f2['model']=_['keys'](db[_0x868d('0x6e')][_0x868d('0x3e')]);_0x56f7f2[_0x868d('0x40')]=_[_0x868d('0x41')](_0x68b807[_0x868d('0x40')]);_0x56f7f2[_0x868d('0x4b')]=_[_0x868d('0x42')](_0x56f7f2[_0x868d('0x43')],_0x56f7f2[_0x868d('0x40')]);_0x159a44[_0x868d('0x44')]=_[_0x868d('0x42')](_0x56f7f2[_0x868d('0x43')],qs['fields'](_0x68b807[_0x868d('0x40')][_0x868d('0x45')]));_0x159a44[_0x868d('0x44')]=_0x159a44[_0x868d('0x44')][_0x868d('0x46')]?_0x159a44[_0x868d('0x44')]:_0x56f7f2[_0x868d('0x43')];if(!_0x68b807[_0x868d('0x40')]['hasOwnProperty'](_0x868d('0x48'))){_0x159a44[_0x868d('0x2c')]=qs[_0x868d('0x2c')](_0x68b807[_0x868d('0x40')][_0x868d('0x2c')]);_0x159a44[_0x868d('0x29')]=qs['offset'](_0x68b807[_0x868d('0x40')][_0x868d('0x29')]);}_0x159a44[_0x868d('0x49')]=qs[_0x868d('0x4a')](_0x68b807[_0x868d('0x40')][_0x868d('0x4a')]);_0x159a44[_0x868d('0x4e')]=qs['filters'](_[_0x868d('0x4c')](_0x68b807[_0x868d('0x40')],_0x56f7f2[_0x868d('0x4b')]));_0x159a44[_0x868d('0x4e')][_0x868d('0x62')]=_0x1724dd['id'];if(_0x68b807[_0x868d('0x40')][_0x868d('0x4d')]){_0x159a44[_0x868d('0x4e')]=_[_0x868d('0x51')](_0x159a44[_0x868d('0x4e')],{'$or':_[_0x868d('0x3c')](_0x159a44[_0x868d('0x44')],function(_0x30462b){var _0x6a867c={};_0x6a867c[_0x30462b]={'$like':'%'+_0x68b807[_0x868d('0x40')][_0x868d('0x4d')]+'%'};return _0x6a867c;})});}_0x159a44=_['merge']({},_0x159a44,_0x68b807['options']);return db[_0x868d('0x6e')]['count']({'where':_0x159a44['where']})[_0x868d('0x1c')](function(_0x562eb2){_0x3f6e43['count']=_0x562eb2;if(_0x68b807[_0x868d('0x40')][_0x868d('0x53')]){_0x159a44['include']=[{'model':db[_0x868d('0x6f')],'as':'Contact','required':![]},{'model':db['User'],'as':_0x868d('0x70'),'attributes':[_0x868d('0x38'),_0x868d('0x71'),_0x868d('0x72')],'required':![]},{'model':db['Tag'],'as':_0x868d('0x73'),'attributes':['id',_0x868d('0x38'),_0x868d('0x74')],'where':_0x68b807['query'][_0x868d('0x75')]?{'id':_0x68b807[_0x868d('0x40')]['tag']}:undefined,'required':_0x68b807[_0x868d('0x40')]['tag']?!![]:![]}];}return db['FaxInteraction'][_0x868d('0x65')](_0x159a44);})[_0x868d('0x1c')](function(_0xf2bb85){_0x3f6e43['rows']=_0xf2bb85;return _0x3f6e43;});}})[_0x868d('0x1c')](respondWithFilteredResult(_0x5ba9f7,_0x159a44))[_0x868d('0x25')](handleError(_0x5ba9f7,null));};exports[_0x868d('0x76')]=function(_0x11440a,_0x5e59ec,_0x293773){return db[_0x868d('0x3d')][_0x868d('0x64')]({'where':{'id':_0x11440a[_0x868d('0x56')]['id']}})['then'](handleEntityNotFound(_0x5e59ec,null))['then'](function(_0x1a5181){if(_0x1a5181){return db[_0x868d('0x77')][_0x868d('0x78')](function(_0x2d2624){return db[_0x868d('0x79')][_0x868d('0x33')]({'where':{'FaxAccountId':_0x11440a[_0x868d('0x56')]['id']},'transaction':_0x2d2624})[_0x868d('0x1c')](function(_0x5a7510){var _0x3078a5=_[_0x868d('0x3c')](_0x11440a[_0x868d('0x5a')],function(_0x5b90be){_0x5b90be[_0x868d('0x62')]=_0x11440a['params']['id'];return _0x5b90be;});return db[_0x868d('0x79')]['bulkCreate'](_0x3078a5,{'transaction':_0x2d2624});});})[_0x868d('0x1c')](function(){return db[_0x868d('0x79')][_0x868d('0x7a')]({'where':{'FaxAccountId':_0x11440a[_0x868d('0x56')]['id']},'order':_0x868d('0x7b')});});}})[_0x868d('0x1c')](respondWithResult(_0x5e59ec,null))['catch'](handleError(_0x5e59ec,null));};exports['getApplications']=function(_0x389170,_0x1f97ab,_0x133072){var _0x192a58={};var _0x114960={};var _0x229ef0;var _0x48004b;return db['FaxAccount']['findOne']({'where':{'id':_0x389170[_0x868d('0x56')]['id']}})['then'](handleEntityNotFound(_0x1f97ab,null))['then'](function(_0x24be7d){if(_0x24be7d){_0x229ef0=_0x24be7d;_0x114960['model']=_['keys'](db[_0x868d('0x79')]['rawAttributes']);_0x114960[_0x868d('0x40')]=_[_0x868d('0x41')](_0x389170[_0x868d('0x40')]);_0x114960[_0x868d('0x4b')]=_[_0x868d('0x42')](_0x114960[_0x868d('0x43')],_0x114960[_0x868d('0x40')]);_0x192a58[_0x868d('0x44')]=_[_0x868d('0x42')](_0x114960['model'],qs[_0x868d('0x45')](_0x389170[_0x868d('0x40')]['fields']));_0x192a58['attributes']=_0x192a58[_0x868d('0x44')][_0x868d('0x46')]?_0x192a58[_0x868d('0x44')]:_0x114960[_0x868d('0x43')];_0x192a58['order']=qs[_0x868d('0x4a')](_0x389170[_0x868d('0x40')][_0x868d('0x4a')]);_0x192a58[_0x868d('0x4e')]=qs[_0x868d('0x4b')](_[_0x868d('0x4c')](_0x389170[_0x868d('0x40')],_0x114960[_0x868d('0x4b')]));if(_0x389170['query'][_0x868d('0x4d')]){_0x192a58['where']=_[_0x868d('0x51')](_0x192a58[_0x868d('0x4e')],{'$or':_[_0x868d('0x3c')](_0x192a58[_0x868d('0x44')],function(_0xf6c63d){var _0x44378d={};_0x44378d[_0xf6c63d]={'$like':'%'+_0x389170['query']['filter']+'%'};return _0x44378d;})});}_0x192a58=_[_0x868d('0x51')]({},_0x192a58,_0x389170[_0x868d('0x52')]);return _0x229ef0[_0x868d('0x7c')](_0x192a58);}})[_0x868d('0x1c')](function(_0x5d6e1f){if(_0x5d6e1f){_0x48004b=_0x5d6e1f[_0x868d('0x46')];if(!_0x389170['query'][_0x868d('0x47')](_0x868d('0x48'))){_0x192a58[_0x868d('0x2c')]=qs[_0x868d('0x2c')](_0x389170[_0x868d('0x40')][_0x868d('0x2c')]);_0x192a58[_0x868d('0x29')]=qs[_0x868d('0x29')](_0x389170['query'][_0x868d('0x29')]);}return _0x229ef0[_0x868d('0x7c')](_0x192a58);}})[_0x868d('0x1c')](function(_0x572adf){if(_0x572adf){return _0x572adf?{'count':_0x48004b,'rows':_0x572adf}:null;}})['then'](respondWithResult(_0x1f97ab,null))['catch'](handleError(_0x1f97ab,null));};function Extension(_0x37ee5e,_0x5c3d48,_0x4b481c,_0xeaf25c){this['context']=_0x868d('0x7d');this[_0x868d('0x7e')]=_0x37ee5e['localstationid'];this[_0x868d('0x7f')]=_0xeaf25c;this['type']=_0x868d('0x80');this[_0x868d('0x81')]=_0x868d('0x82');this[_0x868d('0x62')]=_0x37ee5e['id'];this[_0x868d('0x7b')]=_0x5c3d48;this['appdata']=_0x4b481c;}function createExtensionsReciveFax(_0x4e6fd4){var _0x47fbba=0x1;var _0x371432=[];_0x371432[_0x868d('0x83')](new Extension(_0x4e6fd4,_0x47fbba,'',_0x868d('0x84')));_0x47fbba+=0x1;_0x371432[_0x868d('0x83')](new Extension(_0x4e6fd4,_0x47fbba,_0x868d('0x85'),_0x868d('0x86')));_0x47fbba+=0x1;for(var _0x43f5da in _0x4e6fd4){if(_0x4e6fd4['hasOwnProperty'](_0x43f5da)&&(_0x43f5da===_0x868d('0x87')||_0x43f5da===_0x868d('0x88')||_0x43f5da==='gateway'||_0x43f5da===_0x868d('0x89')||_0x43f5da===_0x868d('0x8a')||_0x43f5da===_0x868d('0x8b')||_0x43f5da===_0x868d('0x8c')||_0x43f5da==='modem'||_0x43f5da===_0x868d('0x8d'))){_0x371432[_0x868d('0x83')](new Extension(_0x4e6fd4,_0x47fbba,_0x868d('0x8e')+_0x43f5da+')='+_0x4e6fd4[_0x43f5da],_0x868d('0x86')));_0x47fbba+=0x1;}}_0x371432[_0x868d('0x83')](new Extension(_0x4e6fd4,_0x47fbba,'6',_0x868d('0x8f')));_0x47fbba+=0x1;_0x371432['push'](new Extension(_0x4e6fd4,_0x47fbba,'/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d',_0x868d('0x90')));_0x47fbba=0x0;return _0x371432;}exports[_0x868d('0x91')]=function(_0x226563,_0x22f5d3,_0x1ffb74){var _0x43cee7;return db[_0x868d('0x77')][_0x868d('0x78')](function(_0x224a2d){return db[_0x868d('0x3d')][_0x868d('0x59')](_0x226563[_0x868d('0x5a')],{'transaction':_0x224a2d})[_0x868d('0x1c')](function(_0x58a7f5){_0x43cee7=_0x58a7f5['get']({'plain':!![]});return db['VoiceExtension'][_0x868d('0x92')](createExtensionsReciveFax(_0x43cee7),{'transaction':_0x224a2d});});})['then'](function(){return _0x43cee7;})[_0x868d('0x1c')](respondWithResult(_0x22f5d3,null))['catch'](handleError(_0x22f5d3,null));};exports[_0x868d('0x93')]=function(_0x14ceb8,_0x4bd3c1,_0xd89acf){var _0x531aad;return db[_0x868d('0x77')][_0x868d('0x78')](function(_0x2e009e){return db['FaxAccount'][_0x868d('0x32')](_0x14ceb8[_0x868d('0x5a')],{'where':{'id':_0x14ceb8[_0x868d('0x5a')]['id']},'transaction':_0x2e009e})[_0x868d('0x1c')](function(_0x28463d){return db[_0x868d('0x94')][_0x868d('0x33')]({'where':{'FaxAccountId':_0x14ceb8['body']['id']},'transaction':_0x2e009e})[_0x868d('0x1c')](function(_0x283ad5){return db[_0x868d('0x94')]['bulkCreate'](createExtensionsReciveFax(_['omit'](_0x14ceb8[_0x868d('0x5a')],[_0x868d('0x95'),'key',_0x868d('0x96'),'updatedAt',_0x868d('0x97'),_0x868d('0x98')])),{'transaction':_0x2e009e});});});})[_0x868d('0x1c')](function(){return db[_0x868d('0x3d')][_0x868d('0x99')](_0x14ceb8[_0x868d('0x5a')]['id']);})['then'](respondWithResult(_0x4bd3c1,null))[_0x868d('0x25')](handleError(_0x4bd3c1,null));};exports[_0x868d('0x9a')]=function(_0x445abc,_0x1046d6,_0x44eeca){var _0x506d71={'raw':!![],'where':{}};var _0x15f434={};var _0x5a280c={'count':0x0,'rows':[]};return db[_0x868d('0x3d')]['findOne']({'where':{'id':_0x445abc[_0x868d('0x56')]['id']}})['then'](handleEntityNotFound(_0x1046d6,null))['then'](function(_0xf1cb5a){if(_0xf1cb5a){_0x15f434[_0x868d('0x43')]=_[_0x868d('0x41')](db[_0x868d('0x9b')][_0x868d('0x3e')]);_0x15f434[_0x868d('0x40')]=_[_0x868d('0x41')](_0x445abc[_0x868d('0x40')]);_0x15f434['filters']=_['intersection'](_0x15f434[_0x868d('0x43')],_0x15f434[_0x868d('0x40')]);_0x506d71[_0x868d('0x44')]=_[_0x868d('0x42')](_0x15f434[_0x868d('0x43')],qs[_0x868d('0x45')](_0x445abc[_0x868d('0x40')][_0x868d('0x45')]));_0x506d71[_0x868d('0x44')]=_0x506d71['attributes'][_0x868d('0x46')]?_0x506d71['attributes']:_0x15f434[_0x868d('0x43')];if(!_0x445abc[_0x868d('0x40')]['hasOwnProperty']('nolimit')){_0x506d71['limit']=qs['limit'](_0x445abc[_0x868d('0x40')][_0x868d('0x2c')]);_0x506d71[_0x868d('0x29')]=qs[_0x868d('0x29')](_0x445abc['query'][_0x868d('0x29')]);}_0x506d71[_0x868d('0x49')]=qs[_0x868d('0x4a')](_0x445abc[_0x868d('0x40')]['sort']);_0x506d71['where']=qs[_0x868d('0x4b')](_[_0x868d('0x4c')](_0x445abc[_0x868d('0x40')],_0x15f434[_0x868d('0x4b')]));_0x506d71['where']['FaxAccountId']=_0xf1cb5a['id'];if(_0x445abc[_0x868d('0x40')]['filter']){_0x506d71[_0x868d('0x4e')]=_[_0x868d('0x51')](_0x506d71['where'],{'$or':_[_0x868d('0x3c')](_0x506d71['attributes'],function(_0x9edc10){var _0x1dd880={};_0x1dd880[_0x9edc10]={'$like':'%'+_0x445abc[_0x868d('0x40')][_0x868d('0x4d')]+'%'};return _0x1dd880;})});}if(_0x445abc['query']['$gte']){var _0x218ea6=_0x445abc[_0x868d('0x40')][_0x868d('0x9c')][_0x868d('0x9d')](',');var _0x398475={};_0x398475[_0x218ea6[0x0]]={'$gte':moment(_0x218ea6[0x1])[_0x868d('0x9e')](_0x868d('0x9f'))};_0x506d71[_0x868d('0x4e')]=_[_0x868d('0x51')](_0x506d71['where'],_0x398475);}_0x506d71=_['merge']({},_0x506d71,_0x445abc['options']);return db[_0x868d('0x9b')]['count']({'where':_0x506d71['where']})['then'](function(_0x5bc9d0){_0x5a280c[_0x868d('0x2b')]=_0x5bc9d0;if(_0x445abc['query']['includeAll']){_0x506d71[_0x868d('0x54')]=[{'all':!![]}];}return db[_0x868d('0x9b')][_0x868d('0x65')](_0x506d71);})['then'](function(_0x2d7829){_0x5a280c[_0x868d('0x66')]=_0x2d7829;return _0x5a280c;});}})[_0x868d('0x1c')](respondWithFilteredResult(_0x1046d6,_0x506d71))[_0x868d('0x25')](handleError(_0x1046d6,null));};exports['send']=function(_0xb3aee2,_0x32f651,_0x4f6eca){var _0x2b4be6,_0x50ac56={},_0x9cfe8;if(_0xb3aee2[_0x868d('0x5a')]['to']){_0x9cfe8=_0xb3aee2['body']['to'][0x0];}return db[_0x868d('0x3d')][_0x868d('0x58')]({'where':{'id':_0xb3aee2[_0x868d('0x56')]['id']},'include':[{'model':db[_0x868d('0xa0')],'as':'List','include':[{'model':db[_0x868d('0x6f')],'as':'Contacts','where':{'fax':_0x9cfe8},'limit':0x1,'order':[[_0x868d('0xa1'),_0x868d('0xa2')]]}]}]})['then'](handleEntityNotFound(_0x32f651,null))[_0x868d('0x1c')](function(_0x3c3751){_0x2b4be6=_0x3c3751;if(_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')]&&_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][_0x868d('0x46')]){for(var _0x12e22c=0x0;_0x12e22c<_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')]['length'];_0x12e22c+=0x1){_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][_0x12e22c]={'filename':_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][_0x12e22c][_0x868d('0x38')],'id':_0xb3aee2[_0x868d('0x5a')]['attachments'][_0x12e22c]['id'],'path':path[_0x868d('0xa4')](config[_0x868d('0xa5')],'server/files/attachments',_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][_0x12e22c][_0x868d('0xa6')])};}}return respondWithRpcPromise(_0x868d('0xa7'),_0x868d('0xa7'),{'FaxAccountId':_[_0x868d('0xa8')](_0xb3aee2[_0x868d('0x56')]['id'])?undefined:_0xb3aee2[_0x868d('0x56')]['id'],'path':_[_0x868d('0xa8')](_0xb3aee2['body'][_0x868d('0xa3')][0x0]['path'])?undefined:_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][0x0][_0x868d('0xa9')],'fax':_['isNil'](_0xb3aee2[_0x868d('0x5a')]['to'][0x0])?undefined:_0xb3aee2['body']['to'][0x0]},client9002);})['then'](function(){if(_0x2b4be6){if(_['isNil'](_0xb3aee2[_0x868d('0x5a')][_0x868d('0xaa')])){_0xb3aee2[_0x868d('0x5a')][_0x868d('0xaa')]=util['format'](_0x868d('0xab'),_0x2b4be6[_0x868d('0x38')],_0x2b4be6['fax']);}if(_0x2b4be6['List']){if(_0x2b4be6[_0x868d('0xac')]['Contacts'][_0x868d('0x46')]){return _0x2b4be6[_0x868d('0xac')]['Contacts'][0x0];}else{return db[_0x868d('0x6f')][_0x868d('0x59')](_[_0x868d('0x16')](_0xb3aee2[_0x868d('0x5a')],{'firstName':_0xb3aee2[_0x868d('0x5a')]['to'][0x0],'phone':_0xb3aee2[_0x868d('0x5a')]['to'][0x0],'fax':_0xb3aee2['body']['to'][0x0],'ListId':_0x2b4be6[_0x868d('0x98')]}));}}else{throw new Error(_0x868d('0xad'));}}else{throw new Error(_0x868d('0xae'));}})[_0x868d('0x1c')](function(_0x5ee136){if(_0x5ee136){return db['FaxInteraction']['find']({'where':{'ContactId':_0x5ee136['id'],'closed':![],'FaxAccountId':_0x2b4be6['id']}})[_0x868d('0x1c')](function(_0x184be0){if(_0x184be0){return[_0x184be0,![]];}return db[_0x868d('0x6e')][_0x868d('0x59')]({'UserId':_0xb3aee2[_0x868d('0x5b')]['id'],'ContactId':_0x5ee136['id'],'FaxAccountId':_0x2b4be6['id'],'fax':_0xb3aee2['body']['to'][0x0],'firstMsgDirection':_0x868d('0xaf'),'Messages':[_[_0x868d('0x51')](_0xb3aee2[_0x868d('0x5a')],{'read':![],'body':_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][0x0][_0x868d('0xb0')],'FaxAccountId':_0x2b4be6['id'],'UserId':_0xb3aee2[_0x868d('0x5b')]['id'],'ContactId':_0x5ee136['id'],'AttachmentId':_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][0x0]['id']})]},{'include':[{'model':db[_0x868d('0x9b')],'as':_0x868d('0xb1')}]})[_0x868d('0x1c')](function(_0x20b4fd){return[_0x20b4fd,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x868d('0xb2')](function(_0xcc9a7e,_0x2a898c){if(_0x2a898c){return _0xcc9a7e;}return db[_0x868d('0x9b')][_0x868d('0x59')]({'direction':_0x868d('0xaf'),'read':![],'body':_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][0x0]['filename'],'FaxAccountId':_0x2b4be6['id'],'FaxInteractionId':_0xcc9a7e['id'],'UserId':_0xb3aee2['user']['id'],'ContactId':_0xcc9a7e[_0x868d('0xb3')],'AttachmentId':_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][0x0]['id']})[_0x868d('0x1c')](function(_0x2fef86){_0xcc9a7e[_0x868d('0xb4')][_0x868d('0xb1')]=[];_0xcc9a7e['dataValues'][_0x868d('0xb1')][_0x868d('0x83')](_0x2fef86['dataValues']);return _0xcc9a7e;});})[_0x868d('0x1c')](function(_0x38260c){respondWithRpcPromise(_0x868d('0xb5'),_0x868d('0xb5'),{'FaxAccountId':_[_0x868d('0xa8')](_0xb3aee2[_0x868d('0x56')]['id'])?undefined:_0xb3aee2[_0x868d('0x56')]['id'],'path':_['isNil'](_0xb3aee2[_0x868d('0x5a')]['attachments'][0x0][_0x868d('0xa9')])?undefined:_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][0x0][_0x868d('0xa9')],'fax':_[_0x868d('0xa8')](_0xb3aee2[_0x868d('0x5a')]['to'][0x0])?undefined:_0xb3aee2[_0x868d('0x5a')]['to'][0x0],'AttachmentId':_0xb3aee2['body'][_0x868d('0xa3')][0x0]['id']},client9002)[_0x868d('0x1c')](function(_0x30a6e){logger[_0x868d('0x1d')]('SendFaxRpc,\x20%s',_0x30a6e);})[_0x868d('0x25')](function(_0x4b05ac){logger[_0x868d('0x1d')](_0x868d('0xb6'),_0x4b05ac);});return _0x38260c;})[_0x868d('0x1c')](respondWithResult(_0x32f651,null))['catch'](handleError(_0x32f651,null));};exports[_0x868d('0xb7')]=function(_0xad50cc,_0x2eb886,_0x57015b){return db['FaxAccount'][_0x868d('0x58')]({'where':{'id':_0xad50cc[_0x868d('0x56')]['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x2eb886,null))['then'](function(_0xd70f22){if(_0xd70f22){return _0xd70f22[_0x868d('0xb7')](_0xad50cc['body'][_0x868d('0x6c')],_[_0x868d('0xb8')](_0xad50cc[_0x868d('0x5a')],[_0x868d('0x6c'),'id'])||{})['spread'](function(_0xadbc26){for(var _0x51df07=0x0;_0x51df07<_0xad50cc[_0x868d('0x5a')][_0x868d('0x6c')]['length'];_0x51df07+=0x1){socket[_0x868d('0xb9')]('userFaxAccount:save',{'UserId':Number(_0xad50cc[_0x868d('0x5a')]['ids'][_0x51df07]),'FaxAccountId':Number(_0xad50cc[_0x868d('0x56')]['id'])});}return _0xadbc26;});}})['then'](respondWithResult(_0x2eb886,null))[_0x868d('0x25')](handleError(_0x2eb886,null));};exports[_0x868d('0xba')]=function(_0x16ed05,_0x3ef261,_0x41c698){return db[_0x868d('0x3d')]['find']({'where':{'id':_0x16ed05['params']['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x3ef261,null))['then'](function(_0x13e431){if(_0x13e431){return _0x13e431[_0x868d('0xba')](_0x16ed05[_0x868d('0x40')][_0x868d('0x6c')])['then'](function(){if(_[_0x868d('0xbb')](_0x16ed05[_0x868d('0x40')][_0x868d('0x6c')])){for(var _0x237855=0x0;_0x237855<_0x16ed05[_0x868d('0x40')][_0x868d('0x6c')][_0x868d('0x46')];_0x237855+=0x1){socket[_0x868d('0xb9')](_0x868d('0xbc'),{'UserId':Number(_0x16ed05[_0x868d('0x40')]['ids'][_0x237855]),'FaxAccountId':Number(_0x16ed05['params']['id'])});}}else{socket[_0x868d('0xb9')](_0x868d('0xbc'),{'UserId':Number(_0x16ed05[_0x868d('0x40')]['ids']),'FaxAccountId':Number(_0x16ed05[_0x868d('0x56')]['id'])});}});}})[_0x868d('0x1c')](respondWithStatusCode(_0x3ef261,null))[_0x868d('0x25')](handleError(_0x3ef261,null));};exports['getAgents']=function(_0x2df8ce,_0x41ef86,_0xa2d1ca){var _0x4b50ea={};var _0xffaa25={};var _0xda7ed2;var _0x2c1b74;return db[_0x868d('0x3d')][_0x868d('0x64')]({'where':{'id':_0x2df8ce[_0x868d('0x56')]['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x41ef86,null))[_0x868d('0x1c')](function(_0x2deb13){if(_0x2deb13){_0xda7ed2=_0x2deb13;_0xffaa25[_0x868d('0x43')]=_[_0x868d('0x41')](db[_0x868d('0xbd')][_0x868d('0x3e')]);_0xffaa25[_0x868d('0x40')]=_['keys'](_0x2df8ce[_0x868d('0x40')]);_0xffaa25[_0x868d('0x4b')]=_['intersection'](_0xffaa25[_0x868d('0x43')],_0xffaa25[_0x868d('0x40')]);_0x4b50ea[_0x868d('0x44')]=_[_0x868d('0x42')](_0xffaa25[_0x868d('0x43')],qs['fields'](_0x2df8ce['query'][_0x868d('0x45')]));_0x4b50ea[_0x868d('0x44')]=_0x4b50ea[_0x868d('0x44')]['length']?_0x4b50ea[_0x868d('0x44')]:_0xffaa25['model'];_0x4b50ea['order']=qs['sort'](_0x2df8ce[_0x868d('0x40')]['sort']);_0x4b50ea[_0x868d('0x4e')]=qs[_0x868d('0x4b')](_[_0x868d('0x4c')](_0x2df8ce[_0x868d('0x40')],_0xffaa25[_0x868d('0x4b')]));if(_0x2df8ce[_0x868d('0x40')][_0x868d('0x4d')]){_0x4b50ea[_0x868d('0x4e')]=_['merge'](_0x4b50ea[_0x868d('0x4e')],{'$or':_[_0x868d('0x3c')](_0x4b50ea['attributes'],function(_0x4f32cd){var _0x125461={};_0x125461[_0x4f32cd]={'$like':'%'+_0x2df8ce[_0x868d('0x40')][_0x868d('0x4d')]+'%'};return _0x125461;})});}_0x4b50ea=_[_0x868d('0x51')]({},_0x4b50ea,_0x2df8ce[_0x868d('0x52')]);return _0xda7ed2[_0x868d('0xbe')](_0x4b50ea);}})[_0x868d('0x1c')](function(_0x36317d){if(_0x36317d){_0x2c1b74=_0x36317d[_0x868d('0x46')];if(!_0x2df8ce[_0x868d('0x40')][_0x868d('0x47')]('nolimit')){_0x4b50ea[_0x868d('0x2c')]=qs[_0x868d('0x2c')](_0x2df8ce[_0x868d('0x40')]['limit']);_0x4b50ea['offset']=qs[_0x868d('0x29')](_0x2df8ce['query'][_0x868d('0x29')]);}return _0xda7ed2['getAgents'](_0x4b50ea);}})[_0x868d('0x1c')](function(_0x2178fb){if(_0x2178fb){return _0x2178fb?{'count':_0x2c1b74,'rows':_0x2178fb}:null;}})[_0x868d('0x1c')](respondWithResult(_0x41ef86,null))[_0x868d('0x25')](handleError(_0x41ef86,null));};
\ No newline at end of file
index b836beb..1d58a12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62a4=['update','remove','exports','../../mysqldb','FaxAccount','setMaxListeners','save'];(function(_0x513a86,_0x45f924){var _0xb3a480=function(_0x13dab7){while(--_0x13dab7){_0x513a86['push'](_0x513a86['shift']());}};_0xb3a480(++_0x45f924);}(_0x62a4,0x88));var _0x462a=function(_0x161757,_0x2f29af){_0x161757=_0x161757-0x0;var _0x4a6adc=_0x62a4[_0x161757];return _0x4a6adc;};'use strict';var EventEmitter=require('events');var FaxAccount=require(_0x462a('0x0'))['db'][_0x462a('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x462a('0x2')](0x0);var events={'afterCreate':_0x462a('0x3'),'afterUpdate':_0x462a('0x4'),'afterDestroy':_0x462a('0x5')};function emitEvent(_0x532675){return function(_0x324694,_0xd88445,_0x4130c8){FaxAccountEvents['emit'](_0x532675+':'+_0x324694['id'],_0x324694);FaxAccountEvents['emit'](_0x532675,_0x324694);_0x4130c8(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxAccount['hook'](e,emitEvent(event));}}module[_0x462a('0x6')]=FaxAccountEvents;
\ No newline at end of file
+var _0xba88=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxAccount'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xba88,0xed));var _0x8ba8=function(_0x48dc44,_0x28ce33){_0x48dc44=_0x48dc44-0x0;var _0x449f61=_0xba88[_0x48dc44];return _0x449f61;};'use strict';var EventEmitter=require(_0x8ba8('0x0'));var FaxAccount=require(_0x8ba8('0x1'))['db'][_0x8ba8('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x8ba8('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x8ba8('0x4'),'afterDestroy':_0x8ba8('0x5')};function emitEvent(_0x8a6ef1){return function(_0x5ac532,_0x435aba,_0xf4e6de){FaxAccountEvents[_0x8ba8('0x6')](_0x8a6ef1+':'+_0x5ac532['id'],_0x5ac532);FaxAccountEvents['emit'](_0x8a6ef1,_0x5ac532);_0xf4e6de(null);};}for(var e in events){if(events[_0x8ba8('0x7')](e)){var event=events[e];FaxAccount[_0x8ba8('0x8')](e,emitEvent(event));}}module[_0x8ba8('0x9')]=FaxAccountEvents;
\ No newline at end of file
index e5b3c97..47557ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7381=['rimraf','../../config/environment','define','fax_accounts','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x7381,0x19b));var _0x1738=function(_0x26da89,_0x264785){_0x26da89=_0x26da89-0x0;var _0xc95b7b=_0x7381[_0x26da89];return _0xc95b7b;};'use strict';var _=require(_0x1738('0x0'));var util=require(_0x1738('0x1'));var logger=require(_0x1738('0x2'))('api');var moment=require(_0x1738('0x3'));var BPromise=require(_0x1738('0x4'));var rp=require(_0x1738('0x5'));var fs=require('fs');var path=require(_0x1738('0x6'));var rimraf=require(_0x1738('0x7'));var config=require(_0x1738('0x8'));var attributes=require('./faxAccount.attributes');module['exports']=function(_0x370ac9,_0x81f9c9){return _0x370ac9[_0x1738('0x9')]('FaxAccount',attributes,{'tableName':_0x1738('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfd06=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./faxAccount.attributes','define','FaxAccount','lodash','util'];(function(_0x845505,_0x19e5f3){var _0x2513b9=function(_0x10e7af){while(--_0x10e7af){_0x845505['push'](_0x845505['shift']());}};_0x2513b9(++_0x19e5f3);}(_0xfd06,0xb2));var _0x6fd0=function(_0xed01eb,_0x275edb){_0xed01eb=_0xed01eb-0x0;var _0x25b9de=_0xfd06[_0xed01eb];return _0x25b9de;};'use strict';var _=require(_0x6fd0('0x0'));var util=require(_0x6fd0('0x1'));var logger=require(_0x6fd0('0x2'))(_0x6fd0('0x3'));var moment=require(_0x6fd0('0x4'));var BPromise=require(_0x6fd0('0x5'));var rp=require(_0x6fd0('0x6'));var fs=require('fs');var path=require(_0x6fd0('0x7'));var rimraf=require(_0x6fd0('0x8'));var config=require('../../config/environment');var attributes=require(_0x6fd0('0x9'));module['exports']=function(_0x313941,_0x31859d){return _0x313941[_0x6fd0('0xa')](_0x6fd0('0xb'),attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 262d775..e24047d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cd6=['FaxInteraction','spread','autoclose','*,*,*,*','created','interaction','FaxMessage','ContactId','AttachmentId','UserId','User','name','waitForTheAssignedAgent','Start','startRouting','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetFaxAccount','FaxAccount','findAll','options','raw','where','attributes','limit','include','map','model','body','fax','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','List','CmContact','Contacts','DESC','FaxApplication','Applications','get','list','applications','orderBy','asc','length','ListId','create','contact'];(function(_0x3ed148,_0x5d4692){var _0x2ff43a=function(_0x5a474e){while(--_0x5a474e){_0x3ed148['push'](_0x3ed148['shift']());}};_0x2ff43a(++_0x5d4692);}(_0x6cd6,0x16b));var _0x66cd=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x6cd6[_0x4e676e];return _0x336a3c;};'use strict';var _=require('lodash');var util=require(_0x66cd('0x0'));var moment=require(_0x66cd('0x1'));var BPromise=require(_0x66cd('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x66cd('0x3'));var db=require(_0x66cd('0x4'))['db'];var utils=require(_0x66cd('0x5'));var logger=require('../../config/logger')(_0x66cd('0x6'));var config=require(_0x66cd('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x66cd('0x8')][_0x66cd('0x9')]({'port':0x232c});config[_0x66cd('0xa')]=_[_0x66cd('0xb')](config[_0x66cd('0xa')],{'host':_0x66cd('0xc'),'port':0x18eb});var socket=require(_0x66cd('0xd'))(new Redis(config[_0x66cd('0xa')]));require(_0x66cd('0xe'))['register'](socket);function respondWithRpcPromise(_0x38f746,_0x2fd283,_0x5738f7){return new BPromise(function(_0x4fd832,_0x1b37db){return client['request'](_0x38f746,_0x5738f7)[_0x66cd('0xf')](function(_0x128b29){logger[_0x66cd('0x10')](_0x66cd('0x11'),_0x2fd283,_0x66cd('0x12'));logger[_0x66cd('0x13')](_0x66cd('0x14'),_0x2fd283,_0x66cd('0x12'),JSON[_0x66cd('0x15')](_0x128b29));if(_0x128b29['error']){if(_0x128b29[_0x66cd('0x16')][_0x66cd('0x17')]===0x1f4){logger[_0x66cd('0x16')]('FaxAccount,\x20%s,\x20%s',_0x2fd283,_0x128b29[_0x66cd('0x16')][_0x66cd('0x18')]);return _0x1b37db(_0x128b29['error'][_0x66cd('0x18')]);}logger[_0x66cd('0x16')](_0x66cd('0x11'),_0x2fd283,_0x128b29[_0x66cd('0x16')][_0x66cd('0x18')]);return _0x4fd832(_0x128b29[_0x66cd('0x16')][_0x66cd('0x18')]);}else{logger['info'](_0x66cd('0x11'),_0x2fd283,_0x66cd('0x12'));_0x4fd832(_0x128b29[_0x66cd('0x19')][_0x66cd('0x18')]);}})[_0x66cd('0x1a')](function(_0x14ec59){logger[_0x66cd('0x16')]('FaxAccount,\x20%s,\x20%s',_0x2fd283,_0x14ec59);_0x1b37db(_0x14ec59);});});}exports[_0x66cd('0x1b')]=function(_0x46a568){var _0x355559=this;return new Promise(function(_0x29d5d9,_0x294b44){return db[_0x66cd('0x1c')][_0x66cd('0x1d')]({'raw':_0x46a568[_0x66cd('0x1e')]?_0x46a568[_0x66cd('0x1e')][_0x66cd('0x1f')]===undefined?!![]:![]:!![],'where':_0x46a568['options']?_0x46a568[_0x66cd('0x1e')][_0x66cd('0x20')]||null:null,'attributes':_0x46a568[_0x66cd('0x1e')]?_0x46a568[_0x66cd('0x1e')][_0x66cd('0x21')]||null:null,'limit':_0x46a568[_0x66cd('0x1e')]?_0x46a568[_0x66cd('0x1e')][_0x66cd('0x22')]||null:null,'include':_0x46a568[_0x66cd('0x1e')]?_0x46a568[_0x66cd('0x1e')][_0x66cd('0x23')]?_[_0x66cd('0x24')](_0x46a568[_0x66cd('0x1e')][_0x66cd('0x23')],function(_0x54fab5){return{'model':db[_0x54fab5[_0x66cd('0x25')]],'as':_0x54fab5['as'],'attributes':_0x54fab5['attributes'],'include':_0x54fab5[_0x66cd('0x23')]?_[_0x66cd('0x24')](_0x54fab5[_0x66cd('0x23')],function(_0x4fda84){return{'model':db[_0x4fda84['model']],'as':_0x4fda84['as'],'attributes':_0x4fda84['attributes'],'include':_0x4fda84[_0x66cd('0x23')]?_[_0x66cd('0x24')](_0x4fda84['include'],function(_0x42ae7e){return{'model':db[_0x42ae7e[_0x66cd('0x25')]],'as':_0x42ae7e['as'],'attributes':_0x42ae7e[_0x66cd('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3fef9a){logger[_0x66cd('0x10')](_0x66cd('0x1b'),_0x46a568);logger[_0x66cd('0x13')](_0x66cd('0x1b'),_0x46a568,JSON[_0x66cd('0x15')](_0x3fef9a));_0x29d5d9(_0x3fef9a);})[_0x66cd('0x1a')](function(_0x1237fa){logger[_0x66cd('0x16')]('GetFaxAccount',_0x1237fa['message'],_0x46a568);_0x294b44(_0x355559['error'](0x1f4,_0x1237fa[_0x66cd('0x18')]));});});};exports['NotifyFaxAccount']=function(_0x20f9ba,_0x25e963,_0x4e757b){var _0x46c15f=this;return new Promise(function(_0x1f1f31,_0x2d2e85){var _0x3c1e06={'body':_0x20f9ba[_0x66cd('0x26')],'channel':_0x66cd('0x27')};var _0xc42450=[];var _0xab4a7c=[];var _0x431e6b={};return db['CmContact'][_0x66cd('0x28')]()[_0x66cd('0xf')](function(_0x251118){if(!_0x251118){throw new db[(_0x66cd('0x29'))][(_0x66cd('0x2a'))](_0x66cd('0x2b'));}_0xc42450=_[_0x66cd('0x2c')](_[_0x66cd('0x2d')](_0x251118),[_0x66cd('0x2e'),_0x66cd('0x2f')]);_0xab4a7c=_[_0x66cd('0x2c')](_['keys'](_0x251118),[_0x66cd('0x2e'),'updatedAt','CompanyId','ListId']);if(_0x20f9ba[_0x66cd('0x26')]['id']){delete _0x20f9ba[_0x66cd('0x26')]['id'];}if(_[_0x66cd('0x30')](_0x20f9ba[_0x66cd('0x26')][_0x66cd('0x31')])){throw new db['Sequelize'][(_0x66cd('0x2a'))]('from\x20is\x20mandatory');}if(_['isNil'](_0x20f9ba[_0x66cd('0x26')][_0x66cd('0x26')])||_0x20f9ba[_0x66cd('0x26')][_0x66cd('0x26')]===''){throw new db[(_0x66cd('0x29'))][(_0x66cd('0x2a'))](_0x66cd('0x32'));}if(_[_0x66cd('0x30')](_0x20f9ba['body'][_0x66cd('0x33')])){throw new db[(_0x66cd('0x29'))][(_0x66cd('0x2a'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0xab4a7c);}if(!_[_0x66cd('0x34')](_0xab4a7c,_0x20f9ba[_0x66cd('0x26')][_0x66cd('0x33')])){throw new db[(_0x66cd('0x29'))]['ValidationError'](_0x66cd('0x35')+_0xab4a7c);}_0x431e6b[_0x20f9ba[_0x66cd('0x26')][_0x66cd('0x33')]]=_0x20f9ba[_0x66cd('0x26')][_0x66cd('0x31')];})['then'](function(){return db[_0x66cd('0x1c')][_0x66cd('0x36')]({'where':{'id':_0x20f9ba[_0x66cd('0x37')]['id']},'include':[{'model':db[_0x66cd('0x38')],'as':_0x66cd('0x39'),'include':[{'model':db[_0x66cd('0x3a')],'as':_0x66cd('0x3b'),'where':_0x431e6b,'limit':0x1,'order':[[_0x66cd('0x2f'),_0x66cd('0x3c')]]}]},{'model':db[_0x66cd('0x3d')],'as':_0x66cd('0x3e')}]});})[_0x66cd('0xf')](function(_0x2e34cd){if(_0x2e34cd&&_0x2e34cd[_0x66cd('0x39')]){var _0x636b3d=_0x2e34cd[_0x66cd('0x3f')]({'plain':!![]});_0x3c1e06['account']=_0x636b3d;_0x3c1e06['applications']=_0x636b3d[_0x66cd('0x3e')];_0x3c1e06[_0x66cd('0x40')]=_0x636b3d['List'];_0x3c1e06[_0x66cd('0x41')]=_[_0x66cd('0x42')](_0x3c1e06['applications'],['priority'],[_0x66cd('0x43')]);if(_0x3c1e06[_0x66cd('0x37')][_0x66cd('0x3e')]){delete _0x3c1e06[_0x66cd('0x37')][_0x66cd('0x3e')];}if(_0x3c1e06[_0x66cd('0x37')][_0x66cd('0x39')]&&_0x3c1e06[_0x66cd('0x37')]['List'][_0x66cd('0x3b')][_0x66cd('0x44')]){return _0x3c1e06['account'][_0x66cd('0x39')][_0x66cd('0x3b')][0x0];}var _0x5d355e=_[_0x66cd('0xb')](_0x20f9ba[_0x66cd('0x26')],{'firstName':_0x20f9ba[_0x66cd('0x26')][_0x66cd('0x31')],'ListId':_0x636b3d[_0x66cd('0x45')]});_0x5d355e[_0x20f9ba[_0x66cd('0x26')][_0x66cd('0x33')]]=_0x20f9ba['body'][_0x66cd('0x31')];return db[_0x66cd('0x3a')][_0x66cd('0x46')](_0x5d355e,{'fields':_0xc42450,'raw':!![]});}})[_0x66cd('0xf')](function(_0x33b07d){_0x3c1e06[_0x66cd('0x47')]=_0x33b07d;if(_0x33b07d){var _0x1eeb69={'ContactId':_0x33b07d['id'],'FaxAccountId':_0x20f9ba[_0x66cd('0x37')]['id'],'fax':_0x33b07d[_0x66cd('0x27')]};return db[_0x66cd('0x48')][_0x66cd('0x36')]({'where':{'ContactId':_0x33b07d['id'],'closed':![],'FaxAccountId':_0x20f9ba[_0x66cd('0x37')]['id']}})[_0x66cd('0xf')](function(_0xe57b50){if(_0xe57b50){return[_0xe57b50,![]];}return db[_0x66cd('0x48')][_0x66cd('0x46')](_0x1eeb69)['then'](function(_0x1adda9){return[_0x1adda9,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x66cd('0x49')](function(_0x44a81e,_0x462019){var _0x423409=_0x44a81e[_0x66cd('0x3f')]({'plain':!![]});if(_0x462019){if(_0x3c1e06[_0x66cd('0x37')][_0x66cd('0x4a')]){_0x3c1e06[_0x66cd('0x41')]['push']({'id':0x0,'priority':_0x3c1e06[_0x66cd('0x41')][_0x66cd('0x44')]+0x1,'app':'close','appdata':'unmanaged','interval':_0x66cd('0x4b')});}_0x423409[_0x66cd('0x4c')]=!![];}else{_0x423409[_0x66cd('0x4c')]=![];}_0x3c1e06[_0x66cd('0x4d')]=_0x423409;return db[_0x66cd('0x4e')][_0x66cd('0x46')]({'body':_0x20f9ba['body'][_0x66cd('0x26')],'FaxAccountId':_0x20f9ba[_0x66cd('0x37')]['id'],'FaxInteractionId':_0x44a81e['id'],'direction':'in','ContactId':_0x44a81e[_0x66cd('0x4f')],'AttachmentId':_0x20f9ba[_0x66cd('0x26')][_0x66cd('0x50')]});})[_0x66cd('0xf')](function(_0x440f04){_0x3c1e06[_0x66cd('0x18')]=_0x440f04;if(_0x3c1e06[_0x66cd('0x4d')][_0x66cd('0x51')]){return db[_0x66cd('0x52')]['find']({'attributes':['id',_0x66cd('0x53')],'where':{'id':_0x3c1e06['interaction'][_0x66cd('0x51')]}})[_0x66cd('0xf')](function(_0x630c60){if(_0x630c60){_0x3c1e06[_0x66cd('0x41')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x630c60[_0x66cd('0x53')]+','+(_0x3c1e06[_0x66cd('0x37')][_0x66cd('0x54')]||0xa),'interval':_0x66cd('0x4b')});}return respondWithRpcPromise(_0x66cd('0x55'),_0x66cd('0x56'),_0x3c1e06);});}return respondWithRpcPromise(_0x66cd('0x55'),'startRouting',_0x3c1e06);})[_0x66cd('0xf')](function(_0x735211){_0x1f1f31(_0x735211);})[_0x66cd('0x1a')](function(_0x3b4504){_0x2d2e85(_0x46c15f[_0x66cd('0x16')](0x1f4,_0x3b4504[_0x66cd('0x18')]));});});};
\ No newline at end of file
+var _0x6f14=['defaults','FaxInteraction','Contact\x20not\x20found','spread','autoclose','close','unmanaged','*,*,*,*','created','interaction','create','ContactId','name','waitForTheAssignedAgent','startRouting','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./faxAccount.socket','register','request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','options','raw','where','attributes','limit','include','map','model','GetFaxAccount','catch','NotifyFaxAccount','body','fax','CmContact','then','Sequelize','ValidationError','difference','keys','updatedAt','createdAt','CompanyId','ListId','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','FaxAccount','find','account','CmList','Contacts','FaxApplication','Applications','List','get','applications','list','orderBy','priority','asc','length'];(function(_0x102243,_0x2b4dde){var _0x1d302c=function(_0x50c1fb){while(--_0x50c1fb){_0x102243['push'](_0x102243['shift']());}};_0x1d302c(++_0x2b4dde);}(_0x6f14,0x1bd));var _0x46f1=function(_0x204e43,_0x59a350){_0x204e43=_0x204e43-0x0;var _0x3888d2=_0x6f14[_0x204e43];return _0x3888d2;};'use strict';var _=require('lodash');var util=require(_0x46f1('0x0'));var moment=require(_0x46f1('0x1'));var BPromise=require(_0x46f1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x46f1('0x3'));var db=require(_0x46f1('0x4'))['db'];var utils=require(_0x46f1('0x5'));var logger=require(_0x46f1('0x6'))(_0x46f1('0x7'));var config=require(_0x46f1('0x8'));var jayson=require(_0x46f1('0x9'));var client=jayson['client'][_0x46f1('0xa')]({'port':0x232c});config[_0x46f1('0xb')]=_['defaults'](config[_0x46f1('0xb')],{'host':_0x46f1('0xc'),'port':0x18eb});var socket=require(_0x46f1('0xd'))(new Redis(config['redis']));require(_0x46f1('0xe'))[_0x46f1('0xf')](socket);function respondWithRpcPromise(_0x7a402e,_0x24f6ea,_0x17cfb2){return new BPromise(function(_0x4f0a9b,_0x4c6a04){return client[_0x46f1('0x10')](_0x7a402e,_0x17cfb2)['then'](function(_0x137b1b){logger[_0x46f1('0x11')](_0x46f1('0x12'),_0x24f6ea,_0x46f1('0x13'));logger[_0x46f1('0x14')](_0x46f1('0x15'),_0x24f6ea,_0x46f1('0x13'),JSON[_0x46f1('0x16')](_0x137b1b));if(_0x137b1b[_0x46f1('0x17')]){if(_0x137b1b[_0x46f1('0x17')][_0x46f1('0x18')]===0x1f4){logger['error'](_0x46f1('0x12'),_0x24f6ea,_0x137b1b[_0x46f1('0x17')][_0x46f1('0x19')]);return _0x4c6a04(_0x137b1b['error']['message']);}logger['error'](_0x46f1('0x12'),_0x24f6ea,_0x137b1b[_0x46f1('0x17')][_0x46f1('0x19')]);return _0x4f0a9b(_0x137b1b[_0x46f1('0x17')]['message']);}else{logger[_0x46f1('0x11')](_0x46f1('0x12'),_0x24f6ea,_0x46f1('0x13'));_0x4f0a9b(_0x137b1b[_0x46f1('0x1a')][_0x46f1('0x19')]);}})['catch'](function(_0xba679f){logger['error'](_0x46f1('0x12'),_0x24f6ea,_0xba679f);_0x4c6a04(_0xba679f);});});}exports['GetFaxAccount']=function(_0x58c51c){var _0x1acdc9=this;return new Promise(function(_0x36c3ba,_0x209bd0){return db['FaxAccount']['findAll']({'raw':_0x58c51c[_0x46f1('0x1b')]?_0x58c51c[_0x46f1('0x1b')][_0x46f1('0x1c')]===undefined?!![]:![]:!![],'where':_0x58c51c['options']?_0x58c51c[_0x46f1('0x1b')][_0x46f1('0x1d')]||null:null,'attributes':_0x58c51c[_0x46f1('0x1b')]?_0x58c51c['options'][_0x46f1('0x1e')]||null:null,'limit':_0x58c51c['options']?_0x58c51c[_0x46f1('0x1b')][_0x46f1('0x1f')]||null:null,'include':_0x58c51c[_0x46f1('0x1b')]?_0x58c51c[_0x46f1('0x1b')][_0x46f1('0x20')]?_['map'](_0x58c51c['options'][_0x46f1('0x20')],function(_0x3ff36b){return{'model':db[_0x3ff36b['model']],'as':_0x3ff36b['as'],'attributes':_0x3ff36b[_0x46f1('0x1e')],'include':_0x3ff36b['include']?_['map'](_0x3ff36b['include'],function(_0x5028b4){return{'model':db[_0x5028b4['model']],'as':_0x5028b4['as'],'attributes':_0x5028b4[_0x46f1('0x1e')],'include':_0x5028b4[_0x46f1('0x20')]?_[_0x46f1('0x21')](_0x5028b4[_0x46f1('0x20')],function(_0x747377){return{'model':db[_0x747377[_0x46f1('0x22')]],'as':_0x747377['as'],'attributes':_0x747377[_0x46f1('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2a8d15){logger[_0x46f1('0x11')](_0x46f1('0x23'),_0x58c51c);logger[_0x46f1('0x14')]('GetFaxAccount',_0x58c51c,JSON[_0x46f1('0x16')](_0x2a8d15));_0x36c3ba(_0x2a8d15);})[_0x46f1('0x24')](function(_0x1c9019){logger['error']('GetFaxAccount',_0x1c9019[_0x46f1('0x19')],_0x58c51c);_0x209bd0(_0x1acdc9['error'](0x1f4,_0x1c9019[_0x46f1('0x19')]));});});};exports[_0x46f1('0x25')]=function(_0x4f5795,_0xa7c0e5,_0x45faa2){var _0x4b6411=this;return new Promise(function(_0x23572f,_0x3ece5f){var _0x240cc3={'body':_0x4f5795[_0x46f1('0x26')],'channel':_0x46f1('0x27')};var _0x2a3916=[];var _0xca7cff=[];var _0x37a6ad={};return db[_0x46f1('0x28')]['describe']()[_0x46f1('0x29')](function(_0x49d032){if(!_0x49d032){throw new db[(_0x46f1('0x2a'))][(_0x46f1('0x2b'))]('no\x20available\x20attributes');}_0x2a3916=_[_0x46f1('0x2c')](_[_0x46f1('0x2d')](_0x49d032),['createdAt',_0x46f1('0x2e')]);_0xca7cff=_[_0x46f1('0x2c')](_[_0x46f1('0x2d')](_0x49d032),[_0x46f1('0x2f'),_0x46f1('0x2e'),_0x46f1('0x30'),_0x46f1('0x31')]);if(_0x4f5795[_0x46f1('0x26')]['id']){delete _0x4f5795[_0x46f1('0x26')]['id'];}if(_[_0x46f1('0x32')](_0x4f5795[_0x46f1('0x26')]['from'])){throw new db[(_0x46f1('0x2a'))][(_0x46f1('0x2b'))]('from\x20is\x20mandatory');}if(_['isNil'](_0x4f5795[_0x46f1('0x26')][_0x46f1('0x26')])||_0x4f5795[_0x46f1('0x26')][_0x46f1('0x26')]===''){throw new db[(_0x46f1('0x2a'))][(_0x46f1('0x2b'))](_0x46f1('0x33'));}if(_['isNil'](_0x4f5795[_0x46f1('0x26')]['mapKey'])){throw new db['Sequelize'][(_0x46f1('0x2b'))](_0x46f1('0x34')+_0xca7cff);}if(!_['includes'](_0xca7cff,_0x4f5795[_0x46f1('0x26')][_0x46f1('0x35')])){throw new db['Sequelize']['ValidationError'](_0x46f1('0x36')+_0xca7cff);}_0x37a6ad[_0x4f5795['body'][_0x46f1('0x35')]]=_0x4f5795['body'][_0x46f1('0x37')];})[_0x46f1('0x29')](function(){return db[_0x46f1('0x38')][_0x46f1('0x39')]({'where':{'id':_0x4f5795[_0x46f1('0x3a')]['id']},'include':[{'model':db[_0x46f1('0x3b')],'as':'List','include':[{'model':db['CmContact'],'as':_0x46f1('0x3c'),'where':_0x37a6ad,'limit':0x1,'order':[[_0x46f1('0x2e'),'DESC']]}]},{'model':db[_0x46f1('0x3d')],'as':_0x46f1('0x3e')}]});})[_0x46f1('0x29')](function(_0x30a2cc){if(_0x30a2cc&&_0x30a2cc[_0x46f1('0x3f')]){var _0x3177ff=_0x30a2cc[_0x46f1('0x40')]({'plain':!![]});_0x240cc3['account']=_0x3177ff;_0x240cc3[_0x46f1('0x41')]=_0x3177ff['Applications'];_0x240cc3[_0x46f1('0x42')]=_0x3177ff['List'];_0x240cc3[_0x46f1('0x41')]=_[_0x46f1('0x43')](_0x240cc3[_0x46f1('0x41')],[_0x46f1('0x44')],[_0x46f1('0x45')]);if(_0x240cc3[_0x46f1('0x3a')][_0x46f1('0x3e')]){delete _0x240cc3[_0x46f1('0x3a')]['Applications'];}if(_0x240cc3[_0x46f1('0x3a')][_0x46f1('0x3f')]&&_0x240cc3[_0x46f1('0x3a')][_0x46f1('0x3f')]['Contacts'][_0x46f1('0x46')]){return _0x240cc3[_0x46f1('0x3a')]['List'][_0x46f1('0x3c')][0x0];}var _0x58fb9e=_[_0x46f1('0x47')](_0x4f5795[_0x46f1('0x26')],{'firstName':_0x4f5795[_0x46f1('0x26')][_0x46f1('0x37')],'ListId':_0x3177ff['ListId']});_0x58fb9e[_0x4f5795['body'][_0x46f1('0x35')]]=_0x4f5795[_0x46f1('0x26')][_0x46f1('0x37')];return db[_0x46f1('0x28')]['create'](_0x58fb9e,{'fields':_0x2a3916,'raw':!![]});}})[_0x46f1('0x29')](function(_0x4027d3){_0x240cc3['contact']=_0x4027d3;if(_0x4027d3){var _0x12cb52={'ContactId':_0x4027d3['id'],'FaxAccountId':_0x4f5795[_0x46f1('0x3a')]['id'],'fax':_0x4027d3[_0x46f1('0x27')]};return db['FaxInteraction'][_0x46f1('0x39')]({'where':{'ContactId':_0x4027d3['id'],'closed':![],'FaxAccountId':_0x4f5795[_0x46f1('0x3a')]['id']}})['then'](function(_0x24f512){if(_0x24f512){return[_0x24f512,![]];}return db[_0x46f1('0x48')]['create'](_0x12cb52)[_0x46f1('0x29')](function(_0x4d538c){return[_0x4d538c,!![]];});});}else{throw new Error(_0x46f1('0x49'));}})[_0x46f1('0x4a')](function(_0x5c11ee,_0x53facf){var _0xe76b59=_0x5c11ee[_0x46f1('0x40')]({'plain':!![]});if(_0x53facf){if(_0x240cc3['account'][_0x46f1('0x4b')]){_0x240cc3[_0x46f1('0x41')]['push']({'id':0x0,'priority':_0x240cc3[_0x46f1('0x41')]['length']+0x1,'app':_0x46f1('0x4c'),'appdata':_0x46f1('0x4d'),'interval':_0x46f1('0x4e')});}_0xe76b59[_0x46f1('0x4f')]=!![];}else{_0xe76b59[_0x46f1('0x4f')]=![];}_0x240cc3[_0x46f1('0x50')]=_0xe76b59;return db['FaxMessage'][_0x46f1('0x51')]({'body':_0x4f5795[_0x46f1('0x26')][_0x46f1('0x26')],'FaxAccountId':_0x4f5795[_0x46f1('0x3a')]['id'],'FaxInteractionId':_0x5c11ee['id'],'direction':'in','ContactId':_0x5c11ee[_0x46f1('0x52')],'AttachmentId':_0x4f5795[_0x46f1('0x26')]['AttachmentId']});})[_0x46f1('0x29')](function(_0x46d4c4){_0x240cc3['message']=_0x46d4c4;if(_0x240cc3['interaction']['UserId']){return db['User'][_0x46f1('0x39')]({'attributes':['id',_0x46f1('0x53')],'where':{'id':_0x240cc3[_0x46f1('0x50')]['UserId']}})['then'](function(_0x42c0c1){if(_0x42c0c1){_0x240cc3['applications']['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x42c0c1[_0x46f1('0x53')]+','+(_0x240cc3[_0x46f1('0x3a')][_0x46f1('0x54')]||0xa),'interval':_0x46f1('0x4e')});}return respondWithRpcPromise('Start','startRouting',_0x240cc3);});}return respondWithRpcPromise('Start',_0x46f1('0x55'),_0x240cc3);})[_0x46f1('0x29')](function(_0x5cee94){_0x23572f(_0x5cee94);})[_0x46f1('0x24')](function(_0x380a1a){_0x3ece5f(_0x4b6411[_0x46f1('0x17')](0x1f4,_0x380a1a[_0x46f1('0x19')]));});});};
\ No newline at end of file
index 8d08739..d27e876 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14e4=['register','length','./faxAccount.events','save','update','emit','removeListener'];(function(_0x3b1354,_0x3a6d84){var _0x33cbb0=function(_0x49fe02){while(--_0x49fe02){_0x3b1354['push'](_0x3b1354['shift']());}};_0x33cbb0(++_0x3a6d84);}(_0x14e4,0xe2));var _0x414e=function(_0x3e2e8a,_0x3ddcdb){_0x3e2e8a=_0x3e2e8a-0x0;var _0x43c7dc=_0x14e4[_0x3e2e8a];return _0x43c7dc;};'use strict';var FaxAccountEvents=require(_0x414e('0x0'));var events=[_0x414e('0x1'),'remove',_0x414e('0x2')];function createListener(_0x9de1ef,_0x2f01bb){return function(_0x360315){_0x2f01bb[_0x414e('0x3')](_0x9de1ef,_0x360315);};}function removeListener(_0x4e0005,_0x33a169){return function(){FaxAccountEvents[_0x414e('0x4')](_0x4e0005,_0x33a169);};}exports[_0x414e('0x5')]=function(_0x339b96){for(var _0x4c557e=0x0,_0x4799fc=events[_0x414e('0x6')];_0x4c557e<_0x4799fc;_0x4c557e++){var _0x4ebe4d=events[_0x4c557e];var _0x19b2c7=createListener('faxAccount:'+_0x4ebe4d,_0x339b96);FaxAccountEvents['on'](_0x4ebe4d,_0x19b2c7);}};
\ No newline at end of file
+var _0xd451=['emit','length','./faxAccount.events','save','remove','update'];(function(_0x402dcf,_0x49d7a3){var _0x59e607=function(_0x1bf2dc){while(--_0x1bf2dc){_0x402dcf['push'](_0x402dcf['shift']());}};_0x59e607(++_0x49d7a3);}(_0xd451,0x68));var _0x1d45=function(_0x589e34,_0x40fe58){_0x589e34=_0x589e34-0x0;var _0x512a2f=_0xd451[_0x589e34];return _0x512a2f;};'use strict';var FaxAccountEvents=require(_0x1d45('0x0'));var events=[_0x1d45('0x1'),_0x1d45('0x2'),_0x1d45('0x3')];function createListener(_0x11c6b2,_0x17cd06){return function(_0xfa3f62){_0x17cd06[_0x1d45('0x4')](_0x11c6b2,_0xfa3f62);};}function removeListener(_0x71078a,_0x3cd05f){return function(){FaxAccountEvents['removeListener'](_0x71078a,_0x3cd05f);};}exports['register']=function(_0xcb294e){for(var _0x392e25=0x0,_0x5ab958=events[_0x1d45('0x5')];_0x392e25<_0x5ab958;_0x392e25++){var _0x4fb70a=events[_0x392e25];var _0xf0746=createListener('faxAccount:'+_0x4fb70a,_0xcb294e);FaxAccountEvents['on'](_0x4fb70a,_0xf0746);}};
\ No newline at end of file
index 3b7bb34..c542a27 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(_0x5af449,_0x18474b){var _0x45de40=function(_0x3d1df1){while(--_0x3d1df1){_0x5af449['push'](_0x5af449['shift']());}};_0x45de40(++_0x18474b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0xa9e0[_0x376b45];return _0x2341b3;};'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(_0xd4f3c3,_0x538c1b){var _0x2d338b=function(_0x8ad381){while(--_0x8ad381){_0xd4f3c3['push'](_0xd4f3c3['shift']());}};_0x2d338b(++_0x538c1b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0xa9e0[_0x47e7cb];return _0x2a8874;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getApplications']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0xd')](),controller['create']);router[_0x0a9e('0x16')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router['post'](_0x0a9e('0x18'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x16')](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x16')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x16')]('/addaccountapplications',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router['post'](_0x0a9e('0x1d'),auth['isAuthenticated'](),controller['updateAccountApplications']);router[_0x0a9e('0x16')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0x22'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x24')]);router[_0x0a9e('0x25')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x26')]);router['delete'](_0x0a9e('0x18'),auth['isAuthenticated'](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x25')](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x28')]);module[_0x0a9e('0x29')]=router;
\ No newline at end of file
index cd7410e..c2fb2aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd983=['noop','TEXT','*,*,*,*','exports','INTEGER','STRING'];(function(_0x4f4db0,_0x3378cb){var _0x41cfb9=function(_0x2ea3f){while(--_0x2ea3f){_0x4f4db0['push'](_0x4f4db0['shift']());}};_0x41cfb9(++_0x3378cb);}(_0xd983,0x183));var _0x3d98=function(_0x590fea,_0x481130){_0x590fea=_0x590fea-0x0;var _0x5a9dbf=_0xd983[_0x590fea];return _0x5a9dbf;};'use strict';var Sequelize=require('sequelize');module[_0x3d98('0x0')]={'priority':{'type':Sequelize[_0x3d98('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x3d98('0x2')],'allowNull':![],'defaultValue':_0x3d98('0x3')},'appdata':{'type':Sequelize[_0x3d98('0x4')]()},'description':{'type':Sequelize[_0x3d98('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x3d98('0x5')}};
\ No newline at end of file
+var _0xda97=['noop','TEXT','*,*,*,*','sequelize','exports','STRING'];(function(_0x60ef11,_0x1f8b52){var _0x19373b=function(_0x373ce1){while(--_0x373ce1){_0x60ef11['push'](_0x60ef11['shift']());}};_0x19373b(++_0x1f8b52);}(_0xda97,0x153));var _0x7da9=function(_0x8f1fe6,_0x4700b9){_0x8f1fe6=_0x8f1fe6-0x0;var _0x2e8732=_0xda97[_0x8f1fe6];return _0x2e8732;};'use strict';var Sequelize=require(_0x7da9('0x0'));module[_0x7da9('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x7da9('0x2')],'allowNull':![],'defaultValue':_0x7da9('0x3')},'appdata':{'type':Sequelize[_0x7da9('0x4')]()},'description':{'type':Sequelize[_0x7da9('0x2')]},'interval':{'type':Sequelize[_0x7da9('0x2')],'defaultValue':_0x7da9('0x5')}};
\ No newline at end of file
index ad774bf..16382ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9513=['name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','FaxApplication','include','findAll','rows','catch','show','params','includeAll','find','create','body','eml-format','rimraf','moment','bluebird','mustache','util','path','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','error','stack'];(function(_0x36b400,_0x277ec5){var _0x4d47bf=function(_0x55372b){while(--_0x55372b){_0x36b400['push'](_0x36b400['shift']());}};_0x4d47bf(++_0x277ec5);}(_0x9513,0xbe));var _0x3951=function(_0x56aaeb,_0x20414a){_0x56aaeb=_0x56aaeb-0x0;var _0x54ea63=_0x9513[_0x56aaeb];return _0x54ea63;};'use strict';var emlformat=require(_0x3951('0x0'));var rimraf=require(_0x3951('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x3951('0x2'));var BPromise=require(_0x3951('0x3'));var Mustache=require(_0x3951('0x4'));var util=require(_0x3951('0x5'));var path=require(_0x3951('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3951('0x7'));var _=require(_0x3951('0x8'));var squel=require(_0x3951('0x9'));var crypto=require(_0x3951('0xa'));var jsforce=require(_0x3951('0xb'));var deskjs=require(_0x3951('0xc'));var toCsv=require(_0x3951('0xd'));var querystring=require(_0x3951('0xe'));var Papa=require(_0x3951('0xf'));var Redis=require(_0x3951('0x10'));var authService=require(_0x3951('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x3951('0x12'));var hardwareService=require(_0x3951('0x13'));var logger=require(_0x3951('0x14'))(_0x3951('0x15'));var utils=require(_0x3951('0x16'));var config=require(_0x3951('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1f4247,_0x35e26a){_0x35e26a=_0x35e26a||0xcc;return function(_0x5423a9){if(_0x5423a9){return _0x1f4247['sendStatus'](_0x35e26a);}return _0x1f4247[_0x3951('0x18')](_0x35e26a)[_0x3951('0x19')]();};}function respondWithResult(_0x8cf84b,_0x2177f5){_0x2177f5=_0x2177f5||0xc8;return function(_0x190060){if(_0x190060){return _0x8cf84b[_0x3951('0x18')](_0x2177f5)['json'](_0x190060);}};}function respondWithFilteredResult(_0x5b3868,_0x257cb3){return function(_0x180400){if(_0x180400){var _0x1e629e=typeof _0x257cb3[_0x3951('0x1a')]===_0x3951('0x1b')&&typeof _0x257cb3[_0x3951('0x1c')]===_0x3951('0x1b');var _0x21fb67=_0x180400[_0x3951('0x1d')];var _0x513741=_0x1e629e?0x0:_0x257cb3['offset'];var _0x24f6dd=_0x1e629e?_0x180400[_0x3951('0x1d')]:_0x257cb3[_0x3951('0x1a')]+_0x257cb3['limit'];var _0x4b2cc0;if(_0x24f6dd>=_0x21fb67){_0x24f6dd=_0x21fb67;_0x4b2cc0=0xc8;}else{_0x4b2cc0=0xce;}_0x5b3868[_0x3951('0x18')](_0x4b2cc0);return _0x5b3868['set'](_0x3951('0x1e'),_0x513741+'-'+_0x24f6dd+'/'+_0x21fb67)[_0x3951('0x1f')](_0x180400);}return null;};}function patchUpdates(_0x5bbe62){return function(_0x43ce53){try{jsonpatch[_0x3951('0x20')](_0x43ce53,_0x5bbe62,!![]);}catch(_0x483b82){return BPromise[_0x3951('0x21')](_0x483b82);}return _0x43ce53[_0x3951('0x22')]();};}function saveUpdates(_0x229bc7,_0x14805d){return function(_0x47e493){if(_0x47e493){return _0x47e493[_0x3951('0x23')](_0x229bc7)[_0x3951('0x24')](function(_0x24c04e){return _0x24c04e;});}return null;};}function removeEntity(_0x520c03,_0x1de94c){return function(_0x51eaeb){if(_0x51eaeb){return _0x51eaeb[_0x3951('0x25')]()[_0x3951('0x24')](function(){_0x520c03[_0x3951('0x18')](0xcc)[_0x3951('0x19')]();});}};}function handleEntityNotFound(_0x2f7c4f,_0x2eef98){return function(_0x46052c){if(!_0x46052c){_0x2f7c4f[_0x3951('0x26')](0x194);}return _0x46052c;};}function handleError(_0xad16,_0x488361){_0x488361=_0x488361||0x1f4;return function(_0x16d9d0){logger[_0x3951('0x27')](_0x16d9d0[_0x3951('0x28')]);if(_0x16d9d0[_0x3951('0x29')]){delete _0x16d9d0[_0x3951('0x29')];}_0xad16[_0x3951('0x18')](_0x488361)[_0x3951('0x2a')](_0x16d9d0);};}exports[_0x3951('0x2b')]=function(_0x139e4e,_0x239b86){var _0x349941={},_0x54e244={},_0x2f824d={'count':0x0,'rows':[]};var _0x20988a=_[_0x3951('0x2c')](db['FaxApplication'][_0x3951('0x2d')],function(_0x2c486c){return{'name':_0x2c486c['fieldName'],'type':_0x2c486c[_0x3951('0x2e')][_0x3951('0x2f')]};});_0x54e244[_0x3951('0x30')]=_['map'](_0x20988a,_0x3951('0x29'));_0x54e244[_0x3951('0x31')]=_[_0x3951('0x32')](_0x139e4e[_0x3951('0x31')]);_0x54e244[_0x3951('0x33')]=_[_0x3951('0x34')](_0x54e244['model'],_0x54e244[_0x3951('0x31')]);_0x349941[_0x3951('0x35')]=_['intersection'](_0x54e244[_0x3951('0x30')],qs[_0x3951('0x36')](_0x139e4e[_0x3951('0x31')]['fields']));_0x349941['attributes']=_0x349941[_0x3951('0x35')][_0x3951('0x37')]?_0x349941['attributes']:_0x54e244[_0x3951('0x30')];if(!_0x139e4e[_0x3951('0x31')][_0x3951('0x38')](_0x3951('0x39'))){_0x349941[_0x3951('0x1c')]=qs[_0x3951('0x1c')](_0x139e4e[_0x3951('0x31')][_0x3951('0x1c')]);_0x349941['offset']=qs[_0x3951('0x1a')](_0x139e4e[_0x3951('0x31')][_0x3951('0x1a')]);}_0x349941[_0x3951('0x3a')]=qs[_0x3951('0x3b')](_0x139e4e[_0x3951('0x31')]['sort']);_0x349941[_0x3951('0x3c')]=qs['filters'](_[_0x3951('0x3d')](_0x139e4e[_0x3951('0x31')],_0x54e244[_0x3951('0x33')]),_0x20988a);if(_0x139e4e[_0x3951('0x31')][_0x3951('0x3e')]){_0x349941[_0x3951('0x3c')]=_['merge'](_0x349941[_0x3951('0x3c')],{'$or':_[_0x3951('0x2c')](_0x20988a,function(_0x95c3ac){if(_0x95c3ac[_0x3951('0x2e')]!==_0x3951('0x3f')){var _0x3d3784={};_0x3d3784[_0x95c3ac[_0x3951('0x29')]]={'$like':'%'+_0x139e4e[_0x3951('0x31')][_0x3951('0x3e')]+'%'};return _0x3d3784;}})});}_0x349941=_[_0x3951('0x40')]({},_0x349941,_0x139e4e[_0x3951('0x41')]);var _0x1a361f={'where':_0x349941[_0x3951('0x3c')]};return db[_0x3951('0x42')]['count'](_0x1a361f)[_0x3951('0x24')](function(_0x4f7529){_0x2f824d['count']=_0x4f7529;if(_0x139e4e[_0x3951('0x31')]['includeAll']){_0x349941[_0x3951('0x43')]=[{'all':!![]}];}return db[_0x3951('0x42')][_0x3951('0x44')](_0x349941);})[_0x3951('0x24')](function(_0x2cc2f9){_0x2f824d[_0x3951('0x45')]=_0x2cc2f9;return _0x2f824d;})['then'](respondWithFilteredResult(_0x239b86,_0x349941))[_0x3951('0x46')](handleError(_0x239b86,null));};exports[_0x3951('0x47')]=function(_0x41053a,_0x149fe5){var _0x86fb89={'raw':!![],'where':{'id':_0x41053a[_0x3951('0x48')]['id']}},_0x492e6e={};_0x492e6e[_0x3951('0x30')]=_[_0x3951('0x32')](db['FaxApplication'][_0x3951('0x2d')]);_0x492e6e['query']=_[_0x3951('0x32')](_0x41053a[_0x3951('0x31')]);_0x492e6e[_0x3951('0x33')]=_[_0x3951('0x34')](_0x492e6e[_0x3951('0x30')],_0x492e6e[_0x3951('0x31')]);_0x86fb89[_0x3951('0x35')]=_[_0x3951('0x34')](_0x492e6e[_0x3951('0x30')],qs[_0x3951('0x36')](_0x41053a[_0x3951('0x31')][_0x3951('0x36')]));_0x86fb89[_0x3951('0x35')]=_0x86fb89[_0x3951('0x35')]['length']?_0x86fb89[_0x3951('0x35')]:_0x492e6e[_0x3951('0x30')];if(_0x41053a['query'][_0x3951('0x49')]){_0x86fb89['include']=[{'all':!![]}];}_0x86fb89=_[_0x3951('0x40')]({},_0x86fb89,_0x41053a[_0x3951('0x41')]);return db[_0x3951('0x42')][_0x3951('0x4a')](_0x86fb89)[_0x3951('0x24')](handleEntityNotFound(_0x149fe5,null))[_0x3951('0x24')](respondWithResult(_0x149fe5,null))['catch'](handleError(_0x149fe5,null));};exports[_0x3951('0x4b')]=function(_0xef9db0,_0x570321){return db['FaxApplication']['create'](_0xef9db0[_0x3951('0x4c')],{})[_0x3951('0x24')](respondWithResult(_0x570321,0xc9))['catch'](handleError(_0x570321,null));};exports[_0x3951('0x23')]=function(_0x19b301,_0xd6cf26){if(_0x19b301[_0x3951('0x4c')]['id']){delete _0x19b301[_0x3951('0x4c')]['id'];}return db[_0x3951('0x42')][_0x3951('0x4a')]({'where':{'id':_0x19b301[_0x3951('0x48')]['id']}})[_0x3951('0x24')](handleEntityNotFound(_0xd6cf26,null))[_0x3951('0x24')](saveUpdates(_0x19b301[_0x3951('0x4c')],null))[_0x3951('0x24')](respondWithResult(_0xd6cf26,null))[_0x3951('0x46')](handleError(_0xd6cf26,null));};exports[_0x3951('0x25')]=function(_0x2718b3,_0x29d123){return db[_0x3951('0x42')][_0x3951('0x4a')]({'where':{'id':_0x2718b3[_0x3951('0x48')]['id']}})[_0x3951('0x24')](handleEntityNotFound(_0x29d123,null))[_0x3951('0x24')](removeEntity(_0x29d123,null))[_0x3951('0x46')](handleError(_0x29d123,null));};
\ No newline at end of file
+var _0x0014=['../../config/logger','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','name','send','index','map','FaxApplication','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','length','find','catch','create','body','params','eml-format','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x1e4150,_0x55b02a){var _0x1ce3ee=function(_0x59324e){while(--_0x59324e){_0x1e4150['push'](_0x1e4150['shift']());}};_0x1ce3ee(++_0x55b02a);}(_0x0014,0xbb));var _0x4001=function(_0x2d20bc,_0x1b7e64){_0x2d20bc=_0x2d20bc-0x0;var _0x442742=_0x0014[_0x2d20bc];return _0x442742;};'use strict';var emlformat=require(_0x4001('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4001('0x1'));var moment=require('moment');var BPromise=require(_0x4001('0x2'));var Mustache=require(_0x4001('0x3'));var util=require(_0x4001('0x4'));var path=require('path');var sox=require(_0x4001('0x5'));var csv=require(_0x4001('0x6'));var ejs=require(_0x4001('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4001('0x8'));var squel=require(_0x4001('0x9'));var crypto=require(_0x4001('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x4001('0xb'));var toCsv=require(_0x4001('0x6'));var querystring=require(_0x4001('0xc'));var Papa=require(_0x4001('0xd'));var Redis=require('ioredis');var authService=require(_0x4001('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x4001('0xf'));var hardwareService=require(_0x4001('0x10'));var logger=require(_0x4001('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x90b292,_0x508dca){_0x508dca=_0x508dca||0xcc;return function(_0x1077b9){if(_0x1077b9){return _0x90b292[_0x4001('0x12')](_0x508dca);}return _0x90b292[_0x4001('0x13')](_0x508dca)['end']();};}function respondWithResult(_0x32dce2,_0x361182){_0x361182=_0x361182||0xc8;return function(_0x3fec82){if(_0x3fec82){return _0x32dce2[_0x4001('0x13')](_0x361182)[_0x4001('0x14')](_0x3fec82);}};}function respondWithFilteredResult(_0xfc2d72,_0x5849e9){return function(_0x18671d){if(_0x18671d){var _0x4aed3d=typeof _0x5849e9[_0x4001('0x15')]===_0x4001('0x16')&&typeof _0x5849e9[_0x4001('0x17')]==='undefined';var _0x48106b=_0x18671d[_0x4001('0x18')];var _0x6116bb=_0x4aed3d?0x0:_0x5849e9['offset'];var _0x145fdd=_0x4aed3d?_0x18671d[_0x4001('0x18')]:_0x5849e9[_0x4001('0x15')]+_0x5849e9[_0x4001('0x17')];var _0x1b4c86;if(_0x145fdd>=_0x48106b){_0x145fdd=_0x48106b;_0x1b4c86=0xc8;}else{_0x1b4c86=0xce;}_0xfc2d72[_0x4001('0x13')](_0x1b4c86);return _0xfc2d72[_0x4001('0x19')](_0x4001('0x1a'),_0x6116bb+'-'+_0x145fdd+'/'+_0x48106b)[_0x4001('0x14')](_0x18671d);}return null;};}function patchUpdates(_0x18c212){return function(_0x25dabd){try{jsonpatch[_0x4001('0x1b')](_0x25dabd,_0x18c212,!![]);}catch(_0x151be8){return BPromise['reject'](_0x151be8);}return _0x25dabd[_0x4001('0x1c')]();};}function saveUpdates(_0x767b59,_0x48729f){return function(_0x2434c6){if(_0x2434c6){return _0x2434c6[_0x4001('0x1d')](_0x767b59)[_0x4001('0x1e')](function(_0xf9404a){return _0xf9404a;});}return null;};}function removeEntity(_0x2db702,_0x3abf49){return function(_0x48dfa6){if(_0x48dfa6){return _0x48dfa6[_0x4001('0x1f')]()[_0x4001('0x1e')](function(){_0x2db702[_0x4001('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44564f,_0x13d827){return function(_0x1fab31){if(!_0x1fab31){_0x44564f[_0x4001('0x12')](0x194);}return _0x1fab31;};}function handleError(_0x561343,_0x56ff48){_0x56ff48=_0x56ff48||0x1f4;return function(_0x24566e){logger[_0x4001('0x20')](_0x24566e['stack']);if(_0x24566e[_0x4001('0x21')]){delete _0x24566e[_0x4001('0x21')];}_0x561343[_0x4001('0x13')](_0x56ff48)[_0x4001('0x22')](_0x24566e);};}exports[_0x4001('0x23')]=function(_0x10ff66,_0x3664d2){var _0x1d199e={},_0x552948={},_0x2e4fa6={'count':0x0,'rows':[]};var _0x425d64=_[_0x4001('0x24')](db[_0x4001('0x25')][_0x4001('0x26')],function(_0x19abf2){return{'name':_0x19abf2[_0x4001('0x27')],'type':_0x19abf2[_0x4001('0x28')]['key']};});_0x552948[_0x4001('0x29')]=_[_0x4001('0x24')](_0x425d64,_0x4001('0x21'));_0x552948[_0x4001('0x2a')]=_[_0x4001('0x2b')](_0x10ff66['query']);_0x552948['filters']=_[_0x4001('0x2c')](_0x552948[_0x4001('0x29')],_0x552948[_0x4001('0x2a')]);_0x1d199e[_0x4001('0x2d')]=_[_0x4001('0x2c')](_0x552948[_0x4001('0x29')],qs[_0x4001('0x2e')](_0x10ff66['query'][_0x4001('0x2e')]));_0x1d199e[_0x4001('0x2d')]=_0x1d199e[_0x4001('0x2d')]['length']?_0x1d199e[_0x4001('0x2d')]:_0x552948[_0x4001('0x29')];if(!_0x10ff66[_0x4001('0x2a')][_0x4001('0x2f')](_0x4001('0x30'))){_0x1d199e['limit']=qs['limit'](_0x10ff66[_0x4001('0x2a')]['limit']);_0x1d199e[_0x4001('0x15')]=qs[_0x4001('0x15')](_0x10ff66[_0x4001('0x2a')]['offset']);}_0x1d199e['order']=qs[_0x4001('0x31')](_0x10ff66[_0x4001('0x2a')][_0x4001('0x31')]);_0x1d199e[_0x4001('0x32')]=qs[_0x4001('0x33')](_[_0x4001('0x34')](_0x10ff66[_0x4001('0x2a')],_0x552948[_0x4001('0x33')]),_0x425d64);if(_0x10ff66['query'][_0x4001('0x35')]){_0x1d199e[_0x4001('0x32')]=_[_0x4001('0x36')](_0x1d199e['where'],{'$or':_[_0x4001('0x24')](_0x425d64,function(_0x5bccbf){if(_0x5bccbf[_0x4001('0x28')]!==_0x4001('0x37')){var _0x3863f5={};_0x3863f5[_0x5bccbf[_0x4001('0x21')]]={'$like':'%'+_0x10ff66[_0x4001('0x2a')]['filter']+'%'};return _0x3863f5;}})});}_0x1d199e=_['merge']({},_0x1d199e,_0x10ff66[_0x4001('0x38')]);var _0x242a9f={'where':_0x1d199e[_0x4001('0x32')]};return db[_0x4001('0x25')][_0x4001('0x18')](_0x242a9f)[_0x4001('0x1e')](function(_0x508012){_0x2e4fa6[_0x4001('0x18')]=_0x508012;if(_0x10ff66[_0x4001('0x2a')][_0x4001('0x39')]){_0x1d199e[_0x4001('0x3a')]=[{'all':!![]}];}return db[_0x4001('0x25')][_0x4001('0x3b')](_0x1d199e);})[_0x4001('0x1e')](function(_0x2fa92d){_0x2e4fa6[_0x4001('0x3c')]=_0x2fa92d;return _0x2e4fa6;})['then'](respondWithFilteredResult(_0x3664d2,_0x1d199e))['catch'](handleError(_0x3664d2,null));};exports[_0x4001('0x3d')]=function(_0x2d7592,_0x58bb0d){var _0x478d38={'raw':!![],'where':{'id':_0x2d7592['params']['id']}},_0x50c0fb={};_0x50c0fb['model']=_['keys'](db['FaxApplication']['rawAttributes']);_0x50c0fb[_0x4001('0x2a')]=_['keys'](_0x2d7592[_0x4001('0x2a')]);_0x50c0fb['filters']=_[_0x4001('0x2c')](_0x50c0fb[_0x4001('0x29')],_0x50c0fb[_0x4001('0x2a')]);_0x478d38[_0x4001('0x2d')]=_['intersection'](_0x50c0fb[_0x4001('0x29')],qs[_0x4001('0x2e')](_0x2d7592[_0x4001('0x2a')][_0x4001('0x2e')]));_0x478d38['attributes']=_0x478d38[_0x4001('0x2d')][_0x4001('0x3e')]?_0x478d38[_0x4001('0x2d')]:_0x50c0fb['model'];if(_0x2d7592[_0x4001('0x2a')][_0x4001('0x39')]){_0x478d38['include']=[{'all':!![]}];}_0x478d38=_[_0x4001('0x36')]({},_0x478d38,_0x2d7592['options']);return db['FaxApplication'][_0x4001('0x3f')](_0x478d38)['then'](handleEntityNotFound(_0x58bb0d,null))['then'](respondWithResult(_0x58bb0d,null))[_0x4001('0x40')](handleError(_0x58bb0d,null));};exports[_0x4001('0x41')]=function(_0x502c2d,_0x335fc3){return db['FaxApplication'][_0x4001('0x41')](_0x502c2d[_0x4001('0x42')],{})[_0x4001('0x1e')](respondWithResult(_0x335fc3,0xc9))[_0x4001('0x40')](handleError(_0x335fc3,null));};exports[_0x4001('0x1d')]=function(_0xb42e44,_0x3ae9c2){if(_0xb42e44[_0x4001('0x42')]['id']){delete _0xb42e44[_0x4001('0x42')]['id'];}return db[_0x4001('0x25')][_0x4001('0x3f')]({'where':{'id':_0xb42e44[_0x4001('0x43')]['id']}})[_0x4001('0x1e')](handleEntityNotFound(_0x3ae9c2,null))[_0x4001('0x1e')](saveUpdates(_0xb42e44[_0x4001('0x42')],null))[_0x4001('0x1e')](respondWithResult(_0x3ae9c2,null))[_0x4001('0x40')](handleError(_0x3ae9c2,null));};exports['destroy']=function(_0xc65ed2,_0x29a179){return db[_0x4001('0x25')][_0x4001('0x3f')]({'where':{'id':_0xc65ed2['params']['id']}})[_0x4001('0x1e')](handleEntityNotFound(_0x29a179,null))[_0x4001('0x1e')](removeEntity(_0x29a179,null))['catch'](handleError(_0x29a179,null));};
\ No newline at end of file
index b401d66..6acb18b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbd7=['fax_applications','utf8mb4_unicode_ci','lodash','util','api','moment','rimraf','../../config/environment','./faxApplication.attributes','define'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xbbd7,0x138));var _0x7bbd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbbd7[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7bbd('0x0'));var util=require(_0x7bbd('0x1'));var logger=require('../../config/logger')(_0x7bbd('0x2'));var moment=require(_0x7bbd('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x7bbd('0x4'));var config=require(_0x7bbd('0x5'));var attributes=require(_0x7bbd('0x6'));module['exports']=function(_0x34a299,_0x5ece2a){return _0x34a299[_0x7bbd('0x7')]('FaxApplication',attributes,{'tableName':_0x7bbd('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x7bbd('0x9')});};
\ No newline at end of file
+var _0x1b61=['request-promise','rimraf','../../config/environment','./faxApplication.attributes','exports','define','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','moment','bluebird'];(function(_0x1678dc,_0x30f596){var _0x5b3608=function(_0x23511e){while(--_0x23511e){_0x1678dc['push'](_0x1678dc['shift']());}};_0x5b3608(++_0x30f596);}(_0x1b61,0x134));var _0x11b6=function(_0x9cd01b,_0x568ca3){_0x9cd01b=_0x9cd01b-0x0;var _0x51cd28=_0x1b61[_0x9cd01b];return _0x51cd28;};'use strict';var _=require('lodash');var util=require(_0x11b6('0x0'));var logger=require(_0x11b6('0x1'))('api');var moment=require(_0x11b6('0x2'));var BPromise=require(_0x11b6('0x3'));var rp=require(_0x11b6('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x11b6('0x5'));var config=require(_0x11b6('0x6'));var attributes=require(_0x11b6('0x7'));module[_0x11b6('0x8')]=function(_0x38c4c,_0x3d70d9){return _0x38c4c[_0x11b6('0x9')]('FaxApplication',attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x11b6('0xa'),'collate':_0x11b6('0xb')});};
\ No newline at end of file
index 893023c..0333506 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5f4=['debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateFaxApplication','FaxApplication','update','body','options','raw','attributes','lodash','util','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','FaxApplication,\x20%s,\x20%s','request\x20sent'];(function(_0x29e857,_0x52d046){var _0x43ad98=function(_0x5f1ab4){while(--_0x5f1ab4){_0x29e857['push'](_0x29e857['shift']());}};_0x43ad98(++_0x52d046);}(_0xb5f4,0x1c2));var _0x4b5f=function(_0x3584a7,_0x403176){_0x3584a7=_0x3584a7-0x0;var _0x3f575d=_0xb5f4[_0x3584a7];return _0x3f575d;};'use strict';var _=require(_0x4b5f('0x0'));var util=require(_0x4b5f('0x1'));var moment=require('moment');var BPromise=require(_0x4b5f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4b5f('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x4b5f('0x4'))(_0x4b5f('0x5'));var config=require(_0x4b5f('0x6'));var jayson=require(_0x4b5f('0x7'));var client=jayson[_0x4b5f('0x8')][_0x4b5f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x47f958,_0x5074e0,_0x4d1ded){return new BPromise(function(_0x47c2e2,_0x319e98){return client['request'](_0x47f958,_0x4d1ded)[_0x4b5f('0xa')](function(_0x587acd){logger[_0x4b5f('0xb')](_0x4b5f('0xc'),_0x5074e0,_0x4b5f('0xd'));logger[_0x4b5f('0xe')](_0x4b5f('0xf'),_0x5074e0,_0x4b5f('0xd'),JSON[_0x4b5f('0x10')](_0x587acd));if(_0x587acd[_0x4b5f('0x11')]){if(_0x587acd[_0x4b5f('0x11')][_0x4b5f('0x12')]===0x1f4){logger[_0x4b5f('0x11')](_0x4b5f('0xc'),_0x5074e0,_0x587acd[_0x4b5f('0x11')][_0x4b5f('0x13')]);return _0x319e98(_0x587acd['error'][_0x4b5f('0x13')]);}logger[_0x4b5f('0x11')]('FaxApplication,\x20%s,\x20%s',_0x5074e0,_0x587acd['error'][_0x4b5f('0x13')]);return _0x47c2e2(_0x587acd['error'][_0x4b5f('0x13')]);}else{logger[_0x4b5f('0xb')](_0x4b5f('0xc'),_0x5074e0,_0x4b5f('0xd'));_0x47c2e2(_0x587acd[_0x4b5f('0x14')][_0x4b5f('0x13')]);}})[_0x4b5f('0x15')](function(_0x593882){logger['error']('FaxApplication,\x20%s,\x20%s',_0x5074e0,_0x593882);_0x319e98(_0x593882);});});}exports[_0x4b5f('0x16')]=function(_0x332150){var _0x5bb3de=this;return new Promise(function(_0x53929b,_0x2aab09){return db[_0x4b5f('0x17')][_0x4b5f('0x18')](_0x332150[_0x4b5f('0x19')],{'raw':_0x332150['options']?_0x332150[_0x4b5f('0x1a')][_0x4b5f('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x332150[_0x4b5f('0x1a')]?_0x332150[_0x4b5f('0x1a')]['where']||null:null,'attributes':_0x332150[_0x4b5f('0x1a')]?_0x332150[_0x4b5f('0x1a')][_0x4b5f('0x1c')]||null:null,'limit':_0x332150[_0x4b5f('0x1a')]?_0x332150[_0x4b5f('0x1a')]['limit']||null:null})['then'](function(_0xe8a055){logger[_0x4b5f('0xb')](_0x4b5f('0x16'),_0x332150);logger[_0x4b5f('0xe')]('UpdateFaxApplication',_0x332150,JSON['stringify'](_0xe8a055));_0x53929b(_0xe8a055);})[_0x4b5f('0x15')](function(_0x5eeed6){logger[_0x4b5f('0x11')]('UpdateFaxApplication',_0x5eeed6[_0x4b5f('0x13')],_0x332150);_0x2aab09(_0x5bb3de[_0x4b5f('0x11')](0x1f4,_0x5eeed6[_0x4b5f('0x13')]));});});};
\ No newline at end of file
+var _0xc12f=['code','FaxApplication,\x20%s,\x20%s','message','info','result','FaxApplication','update','body','raw','options','where','attributes','limit','then','UpdateFaxApplication','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','client','http','request','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x536d1e,_0x1c0299){var _0x56ce53=function(_0x1047bd){while(--_0x1047bd){_0x536d1e['push'](_0x536d1e['shift']());}};_0x56ce53(++_0x1c0299);}(_0xc12f,0xe8));var _0xfc12=function(_0x7e2eb0,_0x17cd58){_0x7e2eb0=_0x7e2eb0-0x0;var _0xd92de4=_0xc12f[_0x7e2eb0];return _0xd92de4;};'use strict';var _=require(_0xfc12('0x0'));var util=require(_0xfc12('0x1'));var moment=require(_0xfc12('0x2'));var BPromise=require(_0xfc12('0x3'));var rs=require(_0xfc12('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfc12('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xfc12('0x6'));var config=require(_0xfc12('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xfc12('0x8')][_0xfc12('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3be23d,_0x2caef9,_0x983b54){return new BPromise(function(_0x4831be,_0x121c98){return client[_0xfc12('0xa')](_0x3be23d,_0x983b54)['then'](function(_0x57b044){logger['info']('FaxApplication,\x20%s,\x20%s',_0x2caef9,_0xfc12('0xb'));logger[_0xfc12('0xc')](_0xfc12('0xd'),_0x2caef9,_0xfc12('0xb'),JSON[_0xfc12('0xe')](_0x57b044));if(_0x57b044['error']){if(_0x57b044[_0xfc12('0xf')][_0xfc12('0x10')]===0x1f4){logger[_0xfc12('0xf')](_0xfc12('0x11'),_0x2caef9,_0x57b044[_0xfc12('0xf')]['message']);return _0x121c98(_0x57b044['error']['message']);}logger[_0xfc12('0xf')](_0xfc12('0x11'),_0x2caef9,_0x57b044[_0xfc12('0xf')]['message']);return _0x4831be(_0x57b044['error'][_0xfc12('0x12')]);}else{logger[_0xfc12('0x13')](_0xfc12('0x11'),_0x2caef9,'request\x20sent');_0x4831be(_0x57b044[_0xfc12('0x14')][_0xfc12('0x12')]);}})['catch'](function(_0x1a3fc7){logger[_0xfc12('0xf')](_0xfc12('0x11'),_0x2caef9,_0x1a3fc7);_0x121c98(_0x1a3fc7);});});}exports['UpdateFaxApplication']=function(_0x3c0cac){var _0x49ba95=this;return new Promise(function(_0x1acb53,_0x356214){return db[_0xfc12('0x15')][_0xfc12('0x16')](_0x3c0cac[_0xfc12('0x17')],{'raw':_0x3c0cac['options']?_0x3c0cac['options'][_0xfc12('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3c0cac[_0xfc12('0x19')]?_0x3c0cac[_0xfc12('0x19')][_0xfc12('0x1a')]||null:null,'attributes':_0x3c0cac['options']?_0x3c0cac['options'][_0xfc12('0x1b')]||null:null,'limit':_0x3c0cac[_0xfc12('0x19')]?_0x3c0cac[_0xfc12('0x19')][_0xfc12('0x1c')]||null:null})[_0xfc12('0x1d')](function(_0x2c93fe){logger['info'](_0xfc12('0x1e'),_0x3c0cac);logger[_0xfc12('0xc')](_0xfc12('0x1e'),_0x3c0cac,JSON[_0xfc12('0xe')](_0x2c93fe));_0x1acb53(_0x2c93fe);})['catch'](function(_0x220cb4){logger[_0xfc12('0xf')]('UpdateFaxApplication',_0x220cb4[_0xfc12('0x12')],_0x3c0cac);_0x356214(_0x49ba95[_0xfc12('0xf')](0x1f4,_0x220cb4[_0xfc12('0x12')]));});});};
\ No newline at end of file
index 63cff8a..6373d1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x955f=['path','connect-timeout','express','fs-extra','../../config/environment','get','isAuthenticated','index','/:id','post','create','put','update','destroy','exports','multer','util'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x955f,0x1eb));var _0xf955=function(_0x5c06c3,_0x1f403f){_0x5c06c3=_0x5c06c3-0x0;var _0x20645a=_0x955f[_0x5c06c3];return _0x20645a;};'use strict';var multer=require(_0xf955('0x0'));var util=require(_0xf955('0x1'));var path=require(_0xf955('0x2'));var timeout=require(_0xf955('0x3'));var express=require(_0xf955('0x4'));var router=express['Router']();var fs_extra=require(_0xf955('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf955('0x6'));var controller=require('./faxApplication.controller');router[_0xf955('0x7')]('/',auth[_0xf955('0x8')](),controller[_0xf955('0x9')]);router['get'](_0xf955('0xa'),auth[_0xf955('0x8')](),controller['show']);router[_0xf955('0xb')]('/',auth[_0xf955('0x8')](),controller[_0xf955('0xc')]);router[_0xf955('0xd')](_0xf955('0xa'),auth[_0xf955('0x8')](),controller[_0xf955('0xe')]);router['delete'](_0xf955('0xa'),auth['isAuthenticated'](),controller[_0xf955('0xf')]);module[_0xf955('0x10')]=router;
\ No newline at end of file
+var _0xb7e7=['exports','multer','path','express','fs-extra','../../components/interaction/service','../../config/environment','./faxApplication.controller','index','get','/:id','show','post','isAuthenticated','create','put','delete','destroy'];(function(_0x55d55f,_0x5e6a52){var _0x2d26eb=function(_0x168553){while(--_0x168553){_0x55d55f['push'](_0x55d55f['shift']());}};_0x2d26eb(++_0x5e6a52);}(_0xb7e7,0x121));var _0x7b7e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xb7e7[_0xf71120];return _0xbe2fd3;};'use strict';var multer=require(_0x7b7e('0x0'));var util=require('util');var path=require(_0x7b7e('0x1'));var timeout=require('connect-timeout');var express=require(_0x7b7e('0x2'));var router=express['Router']();var fs_extra=require(_0x7b7e('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var controller=require(_0x7b7e('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7b7e('0x7')]);router[_0x7b7e('0x8')](_0x7b7e('0x9'),auth['isAuthenticated'](),controller[_0x7b7e('0xa')]);router[_0x7b7e('0xb')]('/',auth[_0x7b7e('0xc')](),controller[_0x7b7e('0xd')]);router[_0x7b7e('0xe')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller['update']);router[_0x7b7e('0xf')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x10')]);module[_0x7b7e('0x11')]=router;
\ No newline at end of file
index d0d6cd5..b25e80e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdd2=['sequelize','exports','BOOLEAN','DATE','STRING','ENUM','out'];(function(_0x4c81f4,_0x3ad90a){var _0x212ffa=function(_0x1e6ed2){while(--_0x1e6ed2){_0x4c81f4['push'](_0x4c81f4['shift']());}};_0x212ffa(++_0x3ad90a);}(_0xfdd2,0x1d5));var _0x2fdd=function(_0x197837,_0x439ae2){_0x197837=_0x197837-0x0;var _0x3eed5f=_0xfdd2[_0x197837];return _0x3eed5f;};'use strict';var Sequelize=require(_0x2fdd('0x0'));module[_0x2fdd('0x1')]={'closed':{'type':Sequelize[_0x2fdd('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x2fdd('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x2fdd('0x4')]},'thirdDisposition':{'type':Sequelize[_0x2fdd('0x4')]},'note':{'type':Sequelize[_0x2fdd('0x4')]},'read1stAt':{'type':Sequelize[_0x2fdd('0x3')]},'fax':{'type':Sequelize[_0x2fdd('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x2fdd('0x5')]('in',_0x2fdd('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x2fdd('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x2fdd('0x5')]('in',_0x2fdd('0x6')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0x2216=['exports','BOOLEAN','STRING','DATE','ENUM','out'];(function(_0x28337b,_0x1a2f2a){var _0x5d7a45=function(_0x252c50){while(--_0x252c50){_0x28337b['push'](_0x28337b['shift']());}};_0x5d7a45(++_0x1a2f2a);}(_0x2216,0x8a));var _0x6221=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0x2216[_0x47e7cb];return _0x2a8874;};'use strict';var Sequelize=require('sequelize');module[_0x6221('0x0')]={'closed':{'type':Sequelize[_0x6221('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x6221('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x6221('0x2')]},'note':{'type':Sequelize[_0x6221('0x2')]},'read1stAt':{'type':Sequelize[_0x6221('0x3')]},'fax':{'type':Sequelize[_0x6221('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x6221('0x4')]('in',_0x6221('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x6221('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 1f1595e..4c78a7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e41=['start','compact','isEmpty','FaxAccountId','i.FaxAccountId\x20IN\x20?','createdAt','$gte','parse','$lte','where','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','agent','toString','keyBy','merge','a.key','Account.key','Account.mandatoryDisposition','i.*','c.firstName','Contact.firstName','c.lastName','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','groupBy','push','show','FaxInteraction','rawAttributes','includeAll','include','options','create','params','destroy','describe','addMessage','FaxMessage','omit','ids','findOne','hasOwnProperty','nolimit','FaxInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','addTags','setTags','spread','emit','faxInteractionTags:save','removeTags','unix','join','root','server','files','attachments','transcript-%d-%s.zip','Attachment','Messages','get','mkdirSync','basename','createReadStream','createWriteStream','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','lodash','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./faxInteraction.socket','register','sendStatus','status','end','limit','offset','count','set','Content-Range','json','apply','reject','update','name','Users','fullname','Tags','TagIds','forEach','then','catch','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.FaxInteractionId','user_has_fax_interactions','left_join','users','u.id\x20=\x20ui.UserId','fax_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','fax_messages','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','conditions','unreadMessages','having','`\x20=\x200','`\x20>\x200','Contact','$substring','value','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','find','ContactId','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','text','body'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8e41,0x6c));var _0x18e4=function(_0x2b84c8,_0x183d8e){_0x2b84c8=_0x2b84c8-0x0;var _0x5cea29=_0x8e41[_0x2b84c8];return _0x5cea29;};'use strict';var emlformat=require(_0x18e4('0x0'));var rimraf=require(_0x18e4('0x1'));var zipdir=require(_0x18e4('0x2'));var jsonpatch=require(_0x18e4('0x3'));var rp=require(_0x18e4('0x4'));var moment=require(_0x18e4('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x18e4('0x6'));var util=require(_0x18e4('0x7'));var path=require(_0x18e4('0x8'));var sox=require(_0x18e4('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x18e4('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x18e4('0xb'));var toCsv=require(_0x18e4('0xc'));var querystring=require(_0x18e4('0xd'));var Papa=require(_0x18e4('0xe'));var Redis=require(_0x18e4('0xf'));var authService=require(_0x18e4('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x18e4('0x11'));var logger=require(_0x18e4('0x12'))(_0x18e4('0x13'));var utils=require('../../config/utils');var config=require(_0x18e4('0x14'));var licenseUtil=require(_0x18e4('0x15'));var db=require(_0x18e4('0x16'))['db'];config[_0x18e4('0x17')]=_['defaults'](config[_0x18e4('0x17')],{'host':_0x18e4('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x18e4('0x17')]));require(_0x18e4('0x19'))[_0x18e4('0x1a')](socket);function respondWithStatusCode(_0x12c5d7,_0x322233){_0x322233=_0x322233||0xcc;return function(_0x48ee84){if(_0x48ee84){return _0x12c5d7[_0x18e4('0x1b')](_0x322233);}return _0x12c5d7[_0x18e4('0x1c')](_0x322233)[_0x18e4('0x1d')]();};}function respondWithResult(_0x2f147c,_0x134a40){_0x134a40=_0x134a40||0xc8;return function(_0x5e8ee8){if(_0x5e8ee8){return _0x2f147c['status'](_0x134a40)['json'](_0x5e8ee8);}};}function respondWithFilteredResult(_0x5d3fef,_0xa971b3){return function(_0x2fa4cf){if(_0x2fa4cf){var _0x3d5712=typeof _0xa971b3['offset']==='undefined'&&typeof _0xa971b3[_0x18e4('0x1e')]==='undefined';var _0x2b6acd=_0x2fa4cf['count'];var _0x42b2ee=_0x3d5712?0x0:_0xa971b3[_0x18e4('0x1f')];var _0x29ade0=_0x3d5712?_0x2fa4cf[_0x18e4('0x20')]:_0xa971b3[_0x18e4('0x1f')]+_0xa971b3[_0x18e4('0x1e')];var _0x7dd04;if(_0x29ade0>=_0x2b6acd){_0x29ade0=_0x2b6acd;_0x7dd04=0xc8;}else{_0x7dd04=0xce;}_0x5d3fef['status'](_0x7dd04);return _0x5d3fef[_0x18e4('0x21')](_0x18e4('0x22'),_0x42b2ee+'-'+_0x29ade0+'/'+_0x2b6acd)[_0x18e4('0x23')](_0x2fa4cf);}return null;};}function patchUpdates(_0x9cbf57){return function(_0x17c58b){try{jsonpatch[_0x18e4('0x24')](_0x17c58b,_0x9cbf57,!![]);}catch(_0x39f81c){return BPromise[_0x18e4('0x25')](_0x39f81c);}return _0x17c58b['save']();};}function saveUpdates(_0x3ce79e,_0x38c0df){return function(_0x6f71a9){if(_0x6f71a9){return _0x6f71a9[_0x18e4('0x26')](_0x3ce79e)['then'](function(_0x5da1ba){return _0x5da1ba;});}return null;};}function removeEntity(_0x3a1414,_0x831909){return function(_0x240c79){if(_0x240c79){return _0x240c79['destroy']()['then'](function(){_0x3a1414[_0x18e4('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x518027,_0x204b7b){return function(_0x47061e){if(!_0x47061e){_0x518027['sendStatus'](0x194);}return _0x47061e;};}function handleError(_0x4cad7c,_0x25b7f5){_0x25b7f5=_0x25b7f5||0x1f4;return function(_0x5a46b5){logger['error'](_0x5a46b5['stack']);if(_0x5a46b5[_0x18e4('0x27')]){delete _0x5a46b5['name'];}_0x4cad7c['status'](_0x25b7f5)['send'](_0x5a46b5);};}function getInteractionUsers(_0x1913c8,_0x60c150){return new BPromise(function(_0x4cddea,_0x5e002c){try{if(_0x60c150[_0x1913c8['id']]){_0x1913c8[_0x18e4('0x28')]=_['map'](_0x60c150[_0x1913c8['id']],function(_0x3e4fa6){return{'id':_0x3e4fa6['id'],'fullname':_0x3e4fa6[_0x18e4('0x29')]};});}}catch(_0x2ba70a){_0x5e002c(_0x2ba70a);}_0x4cddea(_0x1913c8);});}function getInteractionTags(_0x460a2f,_0x137429){return new BPromise(function(_0x82d9ce,_0x948a45){try{if(_0x460a2f['TagIds']){_0x460a2f[_0x18e4('0x2a')]=[];_0x460a2f[_0x18e4('0x2b')]['split'](',')[_0x18e4('0x2c')](function(_0x145294){_0x460a2f['Tags']['push'](_0x137429[_0x145294]);});}delete _0x460a2f['TagIds'];}catch(_0x25f893){_0x948a45(_0x25f893);}_0x82d9ce(_0x460a2f);});}function updateFaxInteraction(_0x679633,_0x2bf67e,_0x856805){return new BPromise(function(_0x2fa487,_0x260b0b){return getInteractionUsers(_0x679633,_0x856805)['then'](function(_0x1ac4ae){return getInteractionTags(_0x1ac4ae,_0x2bf67e);})[_0x18e4('0x2d')](function(_0x305903){_0x2fa487(_0x305903);})[_0x18e4('0x2e')](function(_0x52e3dc){_0x260b0b(_0x52e3dc);});});}exports['index']=function(_0x49fca5,_0x494eba){var _0x1212a2={},_0xcb39c6={},_0x2fed4c={'count':0x0,'rows':[]};var _0x348a89=_[_0x18e4('0x2f')](db['FaxInteraction']['rawAttributes'],function(_0x4e016f){return{'name':_0x4e016f[_0x18e4('0x30')],'type':_0x4e016f[_0x18e4('0x31')][_0x18e4('0x32')]};});_0xcb39c6[_0x18e4('0x33')]=_[_0x18e4('0x2f')](_0x348a89,'name');_0xcb39c6[_0x18e4('0x34')]=_[_0x18e4('0x35')](_0x49fca5['query']);_0xcb39c6[_0x18e4('0x36')]=_[_0x18e4('0x37')](_0xcb39c6[_0x18e4('0x33')],_0xcb39c6['query']);_0x1212a2[_0x18e4('0x38')]=_[_0x18e4('0x37')](_0xcb39c6[_0x18e4('0x33')],qs[_0x18e4('0x39')](_0x49fca5[_0x18e4('0x34')][_0x18e4('0x39')]));_0x1212a2[_0x18e4('0x38')]=_0x1212a2[_0x18e4('0x38')][_0x18e4('0x3a')]?_0x1212a2['attributes']:_0xcb39c6[_0x18e4('0x33')];if(!_0x49fca5['query']['hasOwnProperty']('nolimit')){_0x1212a2[_0x18e4('0x1e')]=qs[_0x18e4('0x1e')](_0x49fca5['query'][_0x18e4('0x1e')]);_0x1212a2[_0x18e4('0x1f')]=qs[_0x18e4('0x1f')](_0x49fca5[_0x18e4('0x34')]['offset']);}_0x1212a2[_0x18e4('0x3b')]=qs[_0x18e4('0x3c')](_0x49fca5[_0x18e4('0x34')]['sort']);_0x1212a2['where']=qs[_0x18e4('0x36')](_[_0x18e4('0x3d')](_0x49fca5['query'],_0xcb39c6[_0x18e4('0x36')]),_0x348a89);var _0x169808=[];var _0x259617=squel[_0x18e4('0x3e')]()[_0x18e4('0x3f')]('id')['field'](_0x18e4('0x27'))[_0x18e4('0x3f')](_0x18e4('0x40'))[_0x18e4('0x41')](_0x18e4('0x42'));var _0xd84c97=squel[_0x18e4('0x3e')]()[_0x18e4('0x3f')](_0x18e4('0x43'))[_0x18e4('0x3f')](_0x18e4('0x44'))[_0x18e4('0x3f')](_0x18e4('0x45'))['from'](_0x18e4('0x46'),'ui')[_0x18e4('0x47')](_0x18e4('0x48'),'u',_0x18e4('0x49'));var _0xfd8610=squel[_0x18e4('0x3e')]()[_0x18e4('0x41')](_0x18e4('0x4a'),'i')['left_join'](_0x18e4('0x4b'),'c',_0x18e4('0x4c'))[_0x18e4('0x47')](_0x18e4('0x48'),'o',_0x18e4('0x4d'))[_0x18e4('0x47')]('fax_accounts','a','a.id\x20=\x20i.FaxAccountId')['left_join'](_0x18e4('0x4e'),'me',_0x18e4('0x4f'))[_0x18e4('0x47')](_0x18e4('0x50'),'it','it.FaxInteractionId\x20=\x20i.id')['left_join']('tools_tags','t',_0x18e4('0x51'));var _0x3c32ae=squel[_0x18e4('0x52')]();var _0x42a459=[];var _0x44e693=squel['expr']();var _0x2b8f37;if(_0x49fca5[_0x18e4('0x34')][_0x18e4('0x53')]){_0x2b8f37=as[_0x18e4('0x54')](_0x49fca5[_0x18e4('0x34')][_0x18e4('0x53')]);var _0x527b17=_0x2b8f37['sqlOperator'];for(var _0x545835=0x0;_0x545835<_0x2b8f37[_0x18e4('0x55')][_0x18e4('0x3a')];_0x545835++){var _0x5986e4=_0x2b8f37['conditions'][_0x545835];var _0x54fd9d='i';var _0x3042d5=_['find'](_0x348a89,[_0x18e4('0x27'),_0x5986e4[_0x18e4('0x3f')]]);if(!_0x3042d5){switch(_0x5986e4[_0x18e4('0x3f')]){case _0x18e4('0x56'):if(_0x5986e4['value']==0x1){_0xfd8610[_0x18e4('0x57')]('`'+_0x5986e4[_0x18e4('0x3f')]+_0x18e4('0x58'));}else{_0xfd8610[_0x18e4('0x57')]('`'+_0x5986e4['field']+_0x18e4('0x59'));}break;case _0x18e4('0x5a'):if(_0x5986e4['operator']===_0x18e4('0x5b')){if(_0x5986e4[_0x18e4('0x5c')][_0x18e4('0x5d')]('\x20')[_0x18e4('0x3a')]>0x1){_0x3c32ae[_0x527b17](_0x18e4('0x5e'),qs['getFullTextValue'](_0x5986e4['value']),null);}else{var _0xc95efa='%'+_0x5986e4[_0x18e4('0x5c')]+'%';_0x3c32ae[_0x527b17]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0xc95efa,_0xc95efa,_0xc95efa);}}else{_0x3042d5=_[_0x18e4('0x5f')](_0x348a89,[_0x18e4('0x27'),_0x18e4('0x60')]);_0x5986e4[_0x18e4('0x3f')]='ContactId';_0x4eabd5=as['buildExpression'](_0x54fd9d,_0x3042d5[_0x18e4('0x31')],_0x5986e4);_0x3c32ae[_0x527b17](_0x4eabd5['text'],_0x4eabd5[_0x18e4('0x5c')]['start'],_0x4eabd5[_0x18e4('0x5c')]['end']);}break;case _0x18e4('0x61'):var _0x4babff=_0x5986e4[_0x18e4('0x5c')][_0x18e4('0x5d')](',')[_0x18e4('0x2f')](function(_0x3e437e){return Number(_0x3e437e);});_0x4babff['forEach'](function(_0xb28334){_0x44e693['or'](_0x18e4('0x62'),'%,'+_0xb28334+',%');});_0x42a459=_['union'](_0x42a459,_0x4babff);break;case _0x18e4('0x63'):if(_0x5986e4[_0x18e4('0x64')]===_0x18e4('0x5b')){_0x3c32ae[_0x527b17](_0x18e4('0x65'),'%'+_0x5986e4[_0x18e4('0x5c')]+'%',null);}else{_0x3042d5=_[_0x18e4('0x5f')](_0x348a89,['name',_0x18e4('0x66')]);_0x5986e4[_0x18e4('0x3f')]=_0x18e4('0x66');_0x4eabd5=as[_0x18e4('0x67')](_0x54fd9d,_0x3042d5[_0x18e4('0x31')],_0x5986e4);_0x3c32ae[_0x527b17](_0x4eabd5[_0x18e4('0x68')],_0x4eabd5[_0x18e4('0x5c')]['start'],_0x4eabd5[_0x18e4('0x5c')][_0x18e4('0x1d')]);}break;case _0x18e4('0x69'):_0x4eabd5=as['buildExpression']('me',null,_0x5986e4);_0x3c32ae[_0x527b17](_0x4eabd5[_0x18e4('0x68')],_0x4eabd5[_0x18e4('0x5c')][_0x18e4('0x6a')],_0x4eabd5[_0x18e4('0x5c')][_0x18e4('0x1d')]);break;}}else{var _0x4eabd5=as[_0x18e4('0x67')](_0x54fd9d,_0x3042d5[_0x18e4('0x31')],_0x5986e4);_0x3c32ae[_0x527b17](_0x4eabd5['text'],_0x4eabd5['value'][_0x18e4('0x6a')],_0x4eabd5[_0x18e4('0x5c')][_0x18e4('0x1d')]);}}}else{var _0x21b4a6=_(_0x49fca5['query'])[_0x18e4('0x35')]()[_0x18e4('0x2f')](function(_0x3158e6){return _['some'](_0x348a89,[_0x18e4('0x27'),_0x3158e6])?_0x3158e6:undefined;})[_0x18e4('0x6b')]()['value']();if(!_[_0x18e4('0x6c')](_0x21b4a6)){_0x21b4a6['forEach'](function(_0x1b3cde){if(_0x1b3cde===_0x18e4('0x6d')){_0xfd8610['where'](_0x18e4('0x6e'),[]['concat'](_0x49fca5[_0x18e4('0x34')][_0x1b3cde]));}else if(_0x1b3cde===_0x18e4('0x6f')){var _0x71e4db=JSON['parse'](_0x49fca5[_0x18e4('0x34')][_0x1b3cde])[_0x18e4('0x70')];var _0x498207=JSON[_0x18e4('0x71')](_0x49fca5[_0x18e4('0x34')][_0x1b3cde])[_0x18e4('0x72')];_0xfd8610[_0x18e4('0x73')](_0x18e4('0x74'),_0x71e4db,_0x498207);}else{if(_0x49fca5[_0x18e4('0x34')][_0x1b3cde]===_0x18e4('0x75')){_0xfd8610[_0x18e4('0x73')]('i.'+_0x1b3cde+_0x18e4('0x76'));}else{_0xfd8610[_0x18e4('0x73')]('i.'+_0x1b3cde+_0x18e4('0x77'),_0x49fca5[_0x18e4('0x34')][_0x1b3cde]);}}});}if(_0x49fca5[_0x18e4('0x34')][_0x18e4('0x78')]){if(_0x49fca5[_0x18e4('0x34')]['read']==0x1){_0xfd8610['having'](_0x18e4('0x79'));}else{_0xfd8610[_0x18e4('0x57')](_0x18e4('0x7a'));}}if(_0x49fca5[_0x18e4('0x34')][_0x18e4('0x7b')]){_0x42a459=_['isArray'](_0x49fca5[_0x18e4('0x34')][_0x18e4('0x7b')])?_0x49fca5[_0x18e4('0x34')][_0x18e4('0x7b')]:new Array(_0x49fca5[_0x18e4('0x34')][_0x18e4('0x7b')]);_0x42a459[_0x18e4('0x2c')](function(_0x214b40){_0x44e693['or'](_0x18e4('0x62'),'%,'+_0x214b40+',%');});}if(_0x49fca5[_0x18e4('0x34')][_0x18e4('0x7c')]){var _0x5f57df=_0x49fca5[_0x18e4('0x34')][_0x18e4('0x7c')][_0x18e4('0x7d')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x18e4('0x7e')](_0x5f57df)){_0x3c32ae['or']('i.id\x20LIKE\x20?',_0x5f57df+'%')['or'](_0x18e4('0x7f'),_0x5f57df+'%');}_0x3c32ae['or'](_0x18e4('0x80'),_0x5f57df+'%');}}_0xfd8610[_0x18e4('0x73')](_0x3c32ae);_0xfd8610[_0x18e4('0x81')](_0x18e4('0x82'));var _0x3c0d19={'type':db[_0x18e4('0x83')]['QueryTypes'][_0x18e4('0x84')],'raw':!![]};var _0x1495d8=_0xfd8610[_0x18e4('0x85')]();_0x1495d8[_0x18e4('0x3f')](_0x18e4('0x82'));_0x1495d8[_0x18e4('0x3f')](_0x18e4('0x86'),_0x18e4('0x56'));if(_0x1212a2[_0x18e4('0x3b')]){_0x1212a2[_0x18e4('0x3b')][_0x18e4('0x2c')](function(_0x40127b){var _0x62a8f=_0x40127b[0x0]===_0x18e4('0x87')?_0x40127b[0x0]:'i.'+_0x40127b[0x0];_0xfd8610['order'](_0x62a8f,_0x40127b[0x1]===_0x18e4('0x88')?![]:!![]);});}if(!_[_0x18e4('0x6c')](_0x42a459)){_0xfd8610[_0x18e4('0x57')](_0x44e693);_0x1495d8[_0x18e4('0x73')](_0x18e4('0x89'),_0x42a459);}BPromise[_0x18e4('0x8a')]()[_0x18e4('0x2d')](function(){if(!_0x2b8f37){if(_0x49fca5[_0x18e4('0x34')][_0x18e4('0x6d')])return;_0x1495d8['where'](_0x18e4('0x8b'));_0xfd8610[_0x18e4('0x73')](_0x18e4('0x8b'));return;}if(_0x49fca5[_0x18e4('0x8c')][_0x18e4('0x8d')]!=='agent')return;return _0x49fca5['user'][_0x18e4('0x8e')]({'attributes':['id'],'raw':!![]})['then'](function(_0x34f7b9){if(_[_0x18e4('0x6c')](_0x34f7b9)){_0x1495d8[_0x18e4('0x73')](_0x18e4('0x8f'));_0xfd8610[_0x18e4('0x73')]('i.FaxAccountId\x20IS\x20NULL');}else{_0x1495d8[_0x18e4('0x73')](_0x18e4('0x6e'),_[_0x18e4('0x2f')](_0x34f7b9,'id'));_0xfd8610['where']('i.FaxAccountId\x20IN\x20?',_[_0x18e4('0x2f')](_0x34f7b9,'id'));}});})[_0x18e4('0x2d')](function(){if(_0x49fca5[_0x18e4('0x8c')][_0x18e4('0x8d')]===_0x18e4('0x90')&&!_0x2b8f37&&!_0x49fca5[_0x18e4('0x34')][_0x18e4('0x6d')])return[];return db['sequelize'][_0x18e4('0x34')](_0x1495d8['toString'](),_0x3c0d19);})['then'](function(_0x436bee){_0x2fed4c[_0x18e4('0x20')]=_0x436bee[_0x18e4('0x3a')];if(_0x2fed4c[_0x18e4('0x20')]===0x0)return[];return db['sequelize'][_0x18e4('0x34')](_0x259617[_0x18e4('0x91')](),_0x3c0d19)['then'](function(_0x13affc){_0x169808=_[_0x18e4('0x92')](_0x13affc,'id');_0x3c0d19=_[_0x18e4('0x93')](_0x3c0d19,{'model':db['FaxInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x49fca5[_0x18e4('0x34')]['fields']){_0x1212a2[_0x18e4('0x38')][_0x18e4('0x2c')](function(_0x37560c){_0xfd8610['field']('i.'+_0x37560c);});}else{_0xfd8610[_0x18e4('0x3f')](_0x18e4('0x86'),_0x18e4('0x56'));_0xfd8610[_0x18e4('0x3f')](_0x18e4('0x94'),_0x18e4('0x95'));_0xfd8610['field']('a.mandatoryDisposition',_0x18e4('0x96'));_0xfd8610['field']('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',_0x18e4('0x87'));_0xfd8610[_0x18e4('0x3f')](_0x18e4('0x97'));_0xfd8610[_0x18e4('0x3f')](_0x18e4('0x98'),_0x18e4('0x99'));_0xfd8610['field'](_0x18e4('0x9a'),'Contact.lastName');_0xfd8610[_0x18e4('0x3f')]('c.email',_0x18e4('0x9b'));_0xfd8610[_0x18e4('0x3f')](_0x18e4('0x9c'),_0x18e4('0x9d'));_0xfd8610['field'](_0x18e4('0x9e'),_0x18e4('0x9f'));_0xfd8610[_0x18e4('0x3f')](_0x18e4('0xa0'),_0x18e4('0xa1'));_0xfd8610['field'](_0x18e4('0xa2'),_0x18e4('0xa3'));_0xfd8610['field']('o.internal',_0x18e4('0xa4'));_0xfd8610['field'](_0x18e4('0xa5'),_0x18e4('0x2b'));}if(_0x1212a2[_0x18e4('0x1e')])_0xfd8610[_0x18e4('0x1e')](_0x1212a2[_0x18e4('0x1e')]);if(_0x1212a2[_0x18e4('0x1f')])_0xfd8610['offset'](_0x1212a2[_0x18e4('0x1f')]);return db['sequelize'][_0x18e4('0x34')](_0xfd8610[_0x18e4('0x91')](),_0x3c0d19);})[_0x18e4('0x2d')](function(_0x419154){if(_0x419154[_0x18e4('0x3a')]>0x0)_0xd84c97[_0x18e4('0x73')](_0x18e4('0xa6'),_[_0x18e4('0x2f')](_0x419154,'id'));return db['sequelize'][_0x18e4('0x34')](_0xd84c97[_0x18e4('0x91')](),_0x3c0d19)[_0x18e4('0x2d')](function(_0x255345){var _0x1bcc89=_[_0x18e4('0xa7')](_0x255345,'FaxInteractionId');var _0x386cea=[];_0x419154[_0x18e4('0x2c')](function(_0x3b0ae3){_0x386cea[_0x18e4('0xa8')](updateFaxInteraction(_0x3b0ae3,_0x169808,_0x1bcc89));});return BPromise['all'](_0x386cea);});});})[_0x18e4('0x2d')](function(_0x3551c6){_0x2fed4c['rows']=_0x3551c6;return _0x2fed4c;})[_0x18e4('0x2d')](respondWithFilteredResult(_0x494eba,_0x1212a2))[_0x18e4('0x2e')](handleError(_0x494eba,null));};exports[_0x18e4('0xa9')]=function(_0x4da4b0,_0x288daa){var _0x181198={'raw':![],'where':{'id':_0x4da4b0['params']['id']}},_0x2d39f3={};_0x2d39f3['model']=_[_0x18e4('0x35')](db[_0x18e4('0xaa')][_0x18e4('0xab')]);_0x2d39f3[_0x18e4('0x34')]=_[_0x18e4('0x35')](_0x4da4b0[_0x18e4('0x34')]);_0x2d39f3['filters']=_[_0x18e4('0x37')](_0x2d39f3[_0x18e4('0x33')],_0x2d39f3[_0x18e4('0x34')]);_0x181198[_0x18e4('0x38')]=_[_0x18e4('0x37')](_0x2d39f3[_0x18e4('0x33')],qs['fields'](_0x4da4b0['query'][_0x18e4('0x39')]));_0x181198['attributes']=_0x181198[_0x18e4('0x38')][_0x18e4('0x3a')]?_0x181198[_0x18e4('0x38')]:_0x2d39f3[_0x18e4('0x33')];if(_0x4da4b0[_0x18e4('0x34')][_0x18e4('0xac')]){_0x181198[_0x18e4('0xad')]=[{'all':!![]}];}_0x181198=_['merge']({},_0x181198,_0x4da4b0[_0x18e4('0xae')]);return db[_0x18e4('0xaa')]['find'](_0x181198)[_0x18e4('0x2d')](handleEntityNotFound(_0x288daa,null))['then'](respondWithResult(_0x288daa,null))['catch'](handleError(_0x288daa,null));};exports[_0x18e4('0xaf')]=function(_0x5449b6,_0x469b10){return db['FaxInteraction'][_0x18e4('0xaf')](_0x5449b6[_0x18e4('0x69')],{})[_0x18e4('0x2d')](respondWithResult(_0x469b10,0xc9))[_0x18e4('0x2e')](handleError(_0x469b10,null));};exports[_0x18e4('0x26')]=function(_0x22d55e,_0x52520a){if(_0x22d55e[_0x18e4('0x69')]['id']){delete _0x22d55e[_0x18e4('0x69')]['id'];}return db[_0x18e4('0xaa')][_0x18e4('0x5f')]({'where':{'id':_0x22d55e[_0x18e4('0xb0')]['id']}})[_0x18e4('0x2d')](handleEntityNotFound(_0x52520a,null))['then'](saveUpdates(_0x22d55e['body'],null))[_0x18e4('0x2d')](respondWithResult(_0x52520a,null))[_0x18e4('0x2e')](handleError(_0x52520a,null));};exports[_0x18e4('0xb1')]=function(_0x84d114,_0x5c442b){return db[_0x18e4('0xaa')][_0x18e4('0x5f')]({'where':{'id':_0x84d114[_0x18e4('0xb0')]['id']}})['then'](handleEntityNotFound(_0x5c442b,null))[_0x18e4('0x2d')](removeEntity(_0x5c442b,null))[_0x18e4('0x2e')](handleError(_0x5c442b,null));};exports[_0x18e4('0xb2')]=function(_0x1ddcfd,_0x275c91){return db[_0x18e4('0xaa')][_0x18e4('0xb2')]()[_0x18e4('0x2d')](respondWithResult(_0x275c91,null))[_0x18e4('0x2e')](handleError(_0x275c91,null));};exports[_0x18e4('0xb3')]=function(_0x1fe2f4,_0x2fe8e8,_0xa646b3){return db[_0x18e4('0xb4')][_0x18e4('0x5f')]({'where':{'id':_0x1fe2f4[_0x18e4('0xb0')]['id']}})['then'](handleEntityNotFound(_0x2fe8e8,null))[_0x18e4('0x2d')](function(_0x2ad1e9){if(_0x2ad1e9){return _0x2ad1e9[_0x18e4('0xb3')](_0x1fe2f4['body']['ids'],_[_0x18e4('0xb5')](_0x1fe2f4['body'],[_0x18e4('0xb6'),'id'])||{});}})[_0x18e4('0x2d')](respondWithResult(_0x2fe8e8,null))[_0x18e4('0x2e')](handleError(_0x2fe8e8,null));};exports['getMessages']=function(_0x30bd25,_0x3e6abb,_0x5c37cd){var _0x2c1f14={'raw':![],'where':{}};var _0x1dc59d={};var _0xaffe6f={'count':0x0,'rows':[]};return db[_0x18e4('0xaa')][_0x18e4('0xb7')]({'where':{'id':_0x30bd25[_0x18e4('0xb0')]['id']}})[_0x18e4('0x2d')](handleEntityNotFound(_0x3e6abb,null))[_0x18e4('0x2d')](function(_0x2e2927){if(_0x2e2927){_0x1dc59d[_0x18e4('0x33')]=_[_0x18e4('0x35')](db[_0x18e4('0xb4')][_0x18e4('0xab')]);_0x1dc59d[_0x18e4('0x34')]=_[_0x18e4('0x35')](_0x30bd25[_0x18e4('0x34')]);_0x1dc59d[_0x18e4('0x36')]=_[_0x18e4('0x37')](_0x1dc59d[_0x18e4('0x33')],_0x1dc59d[_0x18e4('0x34')]);_0x2c1f14[_0x18e4('0x38')]=_[_0x18e4('0x37')](_0x1dc59d['model'],qs['fields'](_0x30bd25[_0x18e4('0x34')][_0x18e4('0x39')]));_0x2c1f14[_0x18e4('0x38')]=_0x2c1f14[_0x18e4('0x38')][_0x18e4('0x3a')]?_0x2c1f14[_0x18e4('0x38')]:_0x1dc59d[_0x18e4('0x33')];if(!_0x30bd25[_0x18e4('0x34')][_0x18e4('0xb8')](_0x18e4('0xb9'))){_0x2c1f14[_0x18e4('0x1e')]=qs[_0x18e4('0x1e')](_0x30bd25[_0x18e4('0x34')][_0x18e4('0x1e')]);_0x2c1f14['offset']=qs[_0x18e4('0x1f')](_0x30bd25[_0x18e4('0x34')][_0x18e4('0x1f')]);}_0x2c1f14[_0x18e4('0x3b')]=qs[_0x18e4('0x3c')](_0x30bd25[_0x18e4('0x34')]['sort']);_0x2c1f14[_0x18e4('0x73')]=qs[_0x18e4('0x36')](_[_0x18e4('0x3d')](_0x30bd25[_0x18e4('0x34')],_0x1dc59d[_0x18e4('0x36')]));_0x2c1f14[_0x18e4('0x73')][_0x18e4('0xba')]=_0x2e2927['id'];if(_0x30bd25[_0x18e4('0x34')]['filter']){_0x2c1f14['where']=_['merge'](_0x2c1f14[_0x18e4('0x73')],{'$or':_[_0x18e4('0x2f')](_0x2c1f14[_0x18e4('0x38')],function(_0x226445){var _0x480f38={};_0x480f38[_0x226445]={'$like':'%'+_0x30bd25[_0x18e4('0x34')][_0x18e4('0x7c')]+'%'};return _0x480f38;})});}if(_0x30bd25[_0x18e4('0x34')][_0x18e4('0x70')]){var _0xa8b85d=_0x30bd25[_0x18e4('0x34')][_0x18e4('0x70')][_0x18e4('0x5d')](',');var _0x337810={};_0x337810[_0xa8b85d[0x0]]={'$gte':moment(_0xa8b85d[0x1])[_0x18e4('0xbb')](_0x18e4('0xbc'))};_0x2c1f14[_0x18e4('0x73')]=_[_0x18e4('0x93')](_0x2c1f14[_0x18e4('0x73')],_0x337810);}_0x2c1f14=_['merge']({},_0x2c1f14,_0x30bd25[_0x18e4('0xae')]);return db[_0x18e4('0xb4')]['count']({'where':_0x2c1f14[_0x18e4('0x73')]})[_0x18e4('0x2d')](function(_0x4d8b1e){_0xaffe6f[_0x18e4('0x20')]=_0x4d8b1e;if(_0x30bd25['query']['includeAll']){_0x2c1f14['include']=[{'all':!![]}];}return db[_0x18e4('0xb4')][_0x18e4('0xbd')](_0x2c1f14);})[_0x18e4('0x2d')](function(_0x4d19bf){_0xaffe6f[_0x18e4('0xbe')]=_0x4d19bf;return _0xaffe6f;});}})[_0x18e4('0x2d')](respondWithFilteredResult(_0x3e6abb,_0x2c1f14))[_0x18e4('0x2e')](handleError(_0x3e6abb,null));};exports[_0x18e4('0xbf')]=function(_0x108c47,_0x464e04,_0x214f1f){return db[_0x18e4('0xaa')]['find']({'where':{'id':_0x108c47['params']['id']}})[_0x18e4('0x2d')](handleEntityNotFound(_0x464e04,null))['then'](function(_0x292206){if(_0x292206){return _0x292206[_0x18e4('0xc0')](_0x108c47['body'][_0x18e4('0xb6')],_['omit'](_0x108c47[_0x18e4('0x69')],['ids','id'])||{})[_0x18e4('0xc1')](function(){return db[_0x18e4('0x61')][_0x18e4('0xbd')]({'attributes':['id',_0x18e4('0x27'),_0x18e4('0x40')],'where':{'id':_0x108c47[_0x18e4('0x69')][_0x18e4('0xb6')]}});})['then'](function(_0x285d94){socket[_0x18e4('0xc2')](_0x18e4('0xc3'),{'id':Number(_0x108c47[_0x18e4('0xb0')]['id']),'tags':_0x285d94||[]});return{'id':Number(_0x108c47[_0x18e4('0xb0')]['id']),'tags':_0x285d94||[]};});}})[_0x18e4('0x2d')](respondWithResult(_0x464e04,null))['catch'](handleError(_0x464e04,null));};exports[_0x18e4('0xc4')]=function(_0x3e0cfe,_0x5a22ac,_0xce066){return db['FaxInteraction'][_0x18e4('0x5f')]({'where':{'id':_0x3e0cfe[_0x18e4('0xb0')]['id']}})[_0x18e4('0x2d')](handleEntityNotFound(_0x5a22ac,null))[_0x18e4('0x2d')](function(_0x5ac759){if(_0x5ac759){return _0x5ac759[_0x18e4('0xc4')](_0x3e0cfe[_0x18e4('0x34')][_0x18e4('0xb6')]);}})['then'](respondWithStatusCode(_0x5a22ac,null))[_0x18e4('0x2e')](handleError(_0x5a22ac,null));};exports['download']=function(_0x17ac54,_0x26f760){var _0x139c8e=moment()[_0x18e4('0xc5')]()[_0x18e4('0x91')]();var _0x59255e=path[_0x18e4('0xc6')](config[_0x18e4('0xc7')],_0x18e4('0xc8'),_0x18e4('0xc9'),'tmp');var _0x181ff4=path[_0x18e4('0xc6')](config['root'],_0x18e4('0xc8'),_0x18e4('0xc9'),_0x18e4('0xca'));var _0x54976f=path[_0x18e4('0xc6')](_0x59255e,_0x139c8e);var _0x3076a0=util[_0x18e4('0xbb')](_0x18e4('0xcb'),_0x17ac54[_0x18e4('0xb0')]['id'],_0x139c8e);var _0x5243af=path['join'](_0x59255e,_0x3076a0);var _0x48f8bd=[];_0x48f8bd['push']({'model':db['Attachment'],'as':_0x18e4('0xcc'),'raw':!![]});var _0xc65299=[{'model':db[_0x18e4('0xb4')],'as':_0x18e4('0xcd'),'attributes':['id',_0x18e4('0x69'),_0x18e4('0x6f')],'include':_0x48f8bd}];return db[_0x18e4('0xaa')][_0x18e4('0x5f')]({'where':{'id':_0x17ac54[_0x18e4('0xb0')]['id']},'include':_0xc65299})[_0x18e4('0x2d')](handleEntityNotFound(_0x26f760,null))[_0x18e4('0x2d')](function(_0x32e320){if(_0x32e320&&_0x32e320[_0x18e4('0xcd')]){var _0x11a7eb=_0x32e320[_0x18e4('0xce')]({'plain':!![]});fs[_0x18e4('0xcf')](_0x54976f);for(var _0x3b4547=0x0;_0x3b4547<_0x11a7eb[_0x18e4('0xcd')][_0x18e4('0x3a')];_0x3b4547++){var _0x19daff=_0x11a7eb[_0x18e4('0xcd')][_0x3b4547][_0x18e4('0xcc')];if(_0x19daff){var _0x4d3f0e=path[_0x18e4('0xc6')](_0x181ff4,_0x19daff[_0x18e4('0xd0')]);if(fs['existsSync'](_0x4d3f0e)){fs[_0x18e4('0xd1')](_0x4d3f0e)['pipe'](fs[_0x18e4('0xd2')](path[_0x18e4('0xc6')](_0x54976f,_0x19daff[_0x18e4('0xd0')])));}}}return BPromise[_0x18e4('0x8a')]()['then'](function(){return new BPromise(function(_0x18c2ed,_0x1ce81a){zipdir(_0x54976f,{'saveTo':_0x5243af},function(_0x418ad4,_0x13575a){if(_0x418ad4)return _0x1ce81a(_0x418ad4);return _0x18c2ed(_0x13575a);});})[_0x18e4('0x2d')](function(){return new BPromise(function(_0xbe6364,_0x513057){rimraf(_0x54976f,function(_0x34171e){if(_0x34171e)_0x513057(_0x34171e);return _0xbe6364();});});})[_0x18e4('0x2d')](function(){return _0x26f760['download'](_0x5243af,_0x3076a0,function(_0x14a0ce){if(_0x14a0ce){console[_0x18e4('0xd3')](_0x18e4('0xd4'),_0x14a0ce);}else{fs[_0x18e4('0xd5')](_0x5243af);}});});});}else{return _0x26f760['sendStatus'](0xc8);}})[_0x18e4('0x2e')](handleError(_0x26f760,null));};
\ No newline at end of file
+var _0x138b=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','defaults','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','destroy','then','stack','name','send','Users','map','fullname','Tags','TagIds','split','forEach','push','catch','index','FaxInteraction','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','select','field','color','tools_tags','u.id','u.fullname','ui.FaxInteractionId','from','user_has_fax_interactions','users','left_join','o.id\x20=\x20i.UserId','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','expr','parseSearch','search','sqlOperator','conditions','find','unreadMessages','value','`\x20=\x200','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','start','body','some','compact','FaxAccountId','i.FaxAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','isNumeric','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','isEmpty','having','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','agent','toString','sequelize','merge','a.key','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','Contact.firstName','c.lastName','c.email','c.phone','c.mobile','Contact.mobile','Contact.fax','Owner.fullname','o.internal','Owner.internal','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','all','rows','show','params','rawAttributes','includeAll','include','options','create','describe','FaxMessage','ids','omit','getMessages','findOne','nolimit','format','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','findAll','emit','faxInteractionTags:save','removeTags','download','unix','join','root','server','files','attachments','transcript-%d-%s.zip','Attachment','Messages','get','basename','existsSync','pipe','createWriteStream','err'];(function(_0x321b85,_0x597dbe){var _0x371e5b=function(_0x43fa23){while(--_0x43fa23){_0x321b85['push'](_0x321b85['shift']());}};_0x371e5b(++_0x597dbe);}(_0x138b,0xd6));var _0xb138=function(_0x2e1072,_0x4b12fe){_0x2e1072=_0x2e1072-0x0;var _0x15267e=_0x138b[_0x2e1072];return _0x15267e;};'use strict';var emlformat=require(_0xb138('0x0'));var rimraf=require(_0xb138('0x1'));var zipdir=require(_0xb138('0x2'));var jsonpatch=require(_0xb138('0x3'));var rp=require(_0xb138('0x4'));var moment=require('moment');var BPromise=require(_0xb138('0x5'));var Mustache=require(_0xb138('0x6'));var util=require(_0xb138('0x7'));var path=require(_0xb138('0x8'));var sox=require(_0xb138('0x9'));var csv=require('to-csv');var ejs=require(_0xb138('0xa'));var fs=require('fs');var fs_extra=require(_0xb138('0xb'));var _=require(_0xb138('0xc'));var squel=require(_0xb138('0xd'));var crypto=require(_0xb138('0xe'));var jsforce=require(_0xb138('0xf'));var deskjs=require(_0xb138('0x10'));var toCsv=require(_0xb138('0x11'));var querystring=require(_0xb138('0x12'));var Papa=require(_0xb138('0x13'));var Redis=require(_0xb138('0x14'));var authService=require(_0xb138('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0xb138('0x16'));var hardwareService=require(_0xb138('0x17'));var logger=require(_0xb138('0x18'))(_0xb138('0x19'));var utils=require(_0xb138('0x1a'));var config=require(_0xb138('0x1b'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_[_0xb138('0x1c')](config[_0xb138('0x1d')],{'host':_0xb138('0x1e'),'port':0x18eb});var socket=require(_0xb138('0x1f'))(new Redis(config[_0xb138('0x1d')]));require(_0xb138('0x20'))[_0xb138('0x21')](socket);function respondWithStatusCode(_0x2eb4cb,_0x6d3b15){_0x6d3b15=_0x6d3b15||0xcc;return function(_0x1effd6){if(_0x1effd6){return _0x2eb4cb[_0xb138('0x22')](_0x6d3b15);}return _0x2eb4cb['status'](_0x6d3b15)[_0xb138('0x23')]();};}function respondWithResult(_0x3b0b7c,_0x35aec7){_0x35aec7=_0x35aec7||0xc8;return function(_0x2f8acc){if(_0x2f8acc){return _0x3b0b7c[_0xb138('0x24')](_0x35aec7)['json'](_0x2f8acc);}};}function respondWithFilteredResult(_0x5f5697,_0x8f32e3){return function(_0x3cd232){if(_0x3cd232){var _0x50ea88=typeof _0x8f32e3['offset']===_0xb138('0x25')&&typeof _0x8f32e3[_0xb138('0x26')]===_0xb138('0x25');var _0x4552b2=_0x3cd232[_0xb138('0x27')];var _0x3d3e03=_0x50ea88?0x0:_0x8f32e3[_0xb138('0x28')];var _0x3687f7=_0x50ea88?_0x3cd232[_0xb138('0x27')]:_0x8f32e3['offset']+_0x8f32e3[_0xb138('0x26')];var _0x306ed1;if(_0x3687f7>=_0x4552b2){_0x3687f7=_0x4552b2;_0x306ed1=0xc8;}else{_0x306ed1=0xce;}_0x5f5697[_0xb138('0x24')](_0x306ed1);return _0x5f5697[_0xb138('0x29')](_0xb138('0x2a'),_0x3d3e03+'-'+_0x3687f7+'/'+_0x4552b2)[_0xb138('0x2b')](_0x3cd232);}return null;};}function patchUpdates(_0x7c3306){return function(_0x516a71){try{jsonpatch[_0xb138('0x2c')](_0x516a71,_0x7c3306,!![]);}catch(_0x4cb3e3){return BPromise[_0xb138('0x2d')](_0x4cb3e3);}return _0x516a71[_0xb138('0x2e')]();};}function saveUpdates(_0x50e7ae,_0x3dba1e){return function(_0x331bee){if(_0x331bee){return _0x331bee[_0xb138('0x2f')](_0x50e7ae)['then'](function(_0x372b0d){return _0x372b0d;});}return null;};}function removeEntity(_0x1c8dd5,_0x1648a4){return function(_0xa6528d){if(_0xa6528d){return _0xa6528d[_0xb138('0x30')]()[_0xb138('0x31')](function(){_0x1c8dd5[_0xb138('0x24')](0xcc)[_0xb138('0x23')]();});}};}function handleEntityNotFound(_0xb075d0,_0x1dbd3b){return function(_0x472d9b){if(!_0x472d9b){_0xb075d0[_0xb138('0x22')](0x194);}return _0x472d9b;};}function handleError(_0x58db7d,_0x4d7bca){_0x4d7bca=_0x4d7bca||0x1f4;return function(_0x145198){logger['error'](_0x145198[_0xb138('0x32')]);if(_0x145198['name']){delete _0x145198[_0xb138('0x33')];}_0x58db7d[_0xb138('0x24')](_0x4d7bca)[_0xb138('0x34')](_0x145198);};}function getInteractionUsers(_0x1c7cd7,_0xd6ebc5){return new BPromise(function(_0x11723a,_0x168bcb){try{if(_0xd6ebc5[_0x1c7cd7['id']]){_0x1c7cd7[_0xb138('0x35')]=_[_0xb138('0x36')](_0xd6ebc5[_0x1c7cd7['id']],function(_0x42eff2){return{'id':_0x42eff2['id'],'fullname':_0x42eff2[_0xb138('0x37')]};});}}catch(_0x533064){_0x168bcb(_0x533064);}_0x11723a(_0x1c7cd7);});}function getInteractionTags(_0x32bf9f,_0x537737){return new BPromise(function(_0x447afd,_0x56d8c5){try{if(_0x32bf9f['TagIds']){_0x32bf9f[_0xb138('0x38')]=[];_0x32bf9f[_0xb138('0x39')][_0xb138('0x3a')](',')[_0xb138('0x3b')](function(_0x8898eb){_0x32bf9f[_0xb138('0x38')][_0xb138('0x3c')](_0x537737[_0x8898eb]);});}delete _0x32bf9f[_0xb138('0x39')];}catch(_0x25dc37){_0x56d8c5(_0x25dc37);}_0x447afd(_0x32bf9f);});}function updateFaxInteraction(_0x1f110d,_0x59a31c,_0x5ab6f1){return new BPromise(function(_0x19bdc8,_0x3d811f){return getInteractionUsers(_0x1f110d,_0x5ab6f1)[_0xb138('0x31')](function(_0x25df41){return getInteractionTags(_0x25df41,_0x59a31c);})[_0xb138('0x31')](function(_0x1c9e3a){_0x19bdc8(_0x1c9e3a);})[_0xb138('0x3d')](function(_0x5d30cc){_0x3d811f(_0x5d30cc);});});}exports[_0xb138('0x3e')]=function(_0x10f264,_0x57fd1e){var _0x2d0621={},_0x3a4eb6={},_0xd8a7d9={'count':0x0,'rows':[]};var _0x269ff2=_[_0xb138('0x36')](db[_0xb138('0x3f')]['rawAttributes'],function(_0x50274e){return{'name':_0x50274e[_0xb138('0x40')],'type':_0x50274e[_0xb138('0x41')]['key']};});_0x3a4eb6['model']=_[_0xb138('0x36')](_0x269ff2,_0xb138('0x33'));_0x3a4eb6[_0xb138('0x42')]=_[_0xb138('0x43')](_0x10f264[_0xb138('0x42')]);_0x3a4eb6[_0xb138('0x44')]=_[_0xb138('0x45')](_0x3a4eb6[_0xb138('0x46')],_0x3a4eb6[_0xb138('0x42')]);_0x2d0621[_0xb138('0x47')]=_[_0xb138('0x45')](_0x3a4eb6[_0xb138('0x46')],qs[_0xb138('0x48')](_0x10f264[_0xb138('0x42')]['fields']));_0x2d0621['attributes']=_0x2d0621['attributes'][_0xb138('0x49')]?_0x2d0621[_0xb138('0x47')]:_0x3a4eb6['model'];if(!_0x10f264[_0xb138('0x42')][_0xb138('0x4a')]('nolimit')){_0x2d0621[_0xb138('0x26')]=qs[_0xb138('0x26')](_0x10f264['query'][_0xb138('0x26')]);_0x2d0621[_0xb138('0x28')]=qs[_0xb138('0x28')](_0x10f264['query'][_0xb138('0x28')]);}_0x2d0621[_0xb138('0x4b')]=qs[_0xb138('0x4c')](_0x10f264['query'][_0xb138('0x4c')]);_0x2d0621[_0xb138('0x4d')]=qs[_0xb138('0x44')](_[_0xb138('0x4e')](_0x10f264[_0xb138('0x42')],_0x3a4eb6[_0xb138('0x44')]),_0x269ff2);var _0x4ecd3a=[];var _0x241e15=squel[_0xb138('0x4f')]()[_0xb138('0x50')]('id')[_0xb138('0x50')](_0xb138('0x33'))['field'](_0xb138('0x51'))['from'](_0xb138('0x52'));var _0x1a3633=squel[_0xb138('0x4f')]()['field'](_0xb138('0x53'))[_0xb138('0x50')](_0xb138('0x54'))[_0xb138('0x50')](_0xb138('0x55'))[_0xb138('0x56')](_0xb138('0x57'),'ui')['left_join'](_0xb138('0x58'),'u','u.id\x20=\x20ui.UserId');var _0x4d3dec=squel['select']()[_0xb138('0x56')]('fax_interactions','i')[_0xb138('0x59')]('cm_contacts','c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')['left_join'](_0xb138('0x58'),'o',_0xb138('0x5a'))['left_join']('fax_accounts','a','a.id\x20=\x20i.FaxAccountId')[_0xb138('0x59')]('fax_messages','me','me.FaxInteractionId\x20=\x20i.id')[_0xb138('0x59')](_0xb138('0x5b'),'it',_0xb138('0x5c'))[_0xb138('0x59')](_0xb138('0x52'),'t','t.id\x20=\x20it.TagId');var _0x53604e=squel[_0xb138('0x5d')]();var _0x5dec24=[];var _0xa362f6=squel['expr']();var _0x558d76;if(_0x10f264[_0xb138('0x42')]['search']){_0x558d76=as[_0xb138('0x5e')](_0x10f264[_0xb138('0x42')][_0xb138('0x5f')]);var _0x4e5cfc=_0x558d76[_0xb138('0x60')];for(var _0x3a674e=0x0;_0x3a674e<_0x558d76[_0xb138('0x61')][_0xb138('0x49')];_0x3a674e++){var _0x3a3155=_0x558d76[_0xb138('0x61')][_0x3a674e];var _0xb592b4='i';var _0x2d0ec6=_[_0xb138('0x62')](_0x269ff2,[_0xb138('0x33'),_0x3a3155[_0xb138('0x50')]]);if(!_0x2d0ec6){switch(_0x3a3155['field']){case _0xb138('0x63'):if(_0x3a3155[_0xb138('0x64')]==0x1){_0x4d3dec['having']('`'+_0x3a3155[_0xb138('0x50')]+_0xb138('0x65'));}else{_0x4d3dec['having']('`'+_0x3a3155['field']+'`\x20>\x200');}break;case'Contact':if(_0x3a3155[_0xb138('0x66')]===_0xb138('0x67')){if(_0x3a3155[_0xb138('0x64')][_0xb138('0x3a')]('\x20')[_0xb138('0x49')]>0x1){_0x53604e[_0x4e5cfc](_0xb138('0x68'),qs[_0xb138('0x69')](_0x3a3155[_0xb138('0x64')]),null);}else{var _0x2dc0ff='%'+_0x3a3155[_0xb138('0x64')]+'%';_0x53604e[_0x4e5cfc](_0xb138('0x6a'),_0x2dc0ff,_0x2dc0ff,_0x2dc0ff);}}else{_0x2d0ec6=_[_0xb138('0x62')](_0x269ff2,[_0xb138('0x33'),_0xb138('0x6b')]);_0x3a3155[_0xb138('0x50')]='ContactId';_0x1f678c=as['buildExpression'](_0xb592b4,_0x2d0ec6[_0xb138('0x41')],_0x3a3155);_0x53604e[_0x4e5cfc](_0x1f678c[_0xb138('0x6c')],_0x1f678c[_0xb138('0x64')]['start'],_0x1f678c[_0xb138('0x64')][_0xb138('0x23')]);}break;case _0xb138('0x6d'):var _0x43aecc=_0x3a3155[_0xb138('0x64')][_0xb138('0x3a')](',')[_0xb138('0x36')](function(_0x1f9bef){return Number(_0x1f9bef);});_0x43aecc[_0xb138('0x3b')](function(_0x1cbe5){_0xa362f6['or'](_0xb138('0x6e'),'%,'+_0x1cbe5+',%');});_0x5dec24=_[_0xb138('0x6f')](_0x5dec24,_0x43aecc);break;case'User':if(_0x3a3155[_0xb138('0x66')]===_0xb138('0x67')){_0x53604e[_0x4e5cfc](_0xb138('0x70'),'%'+_0x3a3155[_0xb138('0x64')]+'%',null);}else{_0x2d0ec6=_[_0xb138('0x62')](_0x269ff2,['name',_0xb138('0x71')]);_0x3a3155[_0xb138('0x50')]='UserId';_0x1f678c=as[_0xb138('0x72')](_0xb592b4,_0x2d0ec6[_0xb138('0x41')],_0x3a3155);_0x53604e[_0x4e5cfc](_0x1f678c[_0xb138('0x6c')],_0x1f678c[_0xb138('0x64')][_0xb138('0x73')],_0x1f678c[_0xb138('0x64')][_0xb138('0x23')]);}break;case _0xb138('0x74'):_0x1f678c=as[_0xb138('0x72')]('me',null,_0x3a3155);_0x53604e[_0x4e5cfc](_0x1f678c[_0xb138('0x6c')],_0x1f678c['value']['start'],_0x1f678c[_0xb138('0x64')][_0xb138('0x23')]);break;}}else{var _0x1f678c=as[_0xb138('0x72')](_0xb592b4,_0x2d0ec6[_0xb138('0x41')],_0x3a3155);_0x53604e[_0x4e5cfc](_0x1f678c[_0xb138('0x6c')],_0x1f678c['value'][_0xb138('0x73')],_0x1f678c[_0xb138('0x64')][_0xb138('0x23')]);}}}else{var _0x3d2539=_(_0x10f264[_0xb138('0x42')])['keys']()[_0xb138('0x36')](function(_0x2caece){return _[_0xb138('0x75')](_0x269ff2,[_0xb138('0x33'),_0x2caece])?_0x2caece:undefined;})[_0xb138('0x76')]()[_0xb138('0x64')]();if(!_['isEmpty'](_0x3d2539)){_0x3d2539[_0xb138('0x3b')](function(_0x31efdd){if(_0x31efdd===_0xb138('0x77')){_0x4d3dec[_0xb138('0x4d')](_0xb138('0x78'),[][_0xb138('0x79')](_0x10f264[_0xb138('0x42')][_0x31efdd]));}else if(_0x31efdd===_0xb138('0x7a')){var _0x54369f=JSON[_0xb138('0x7b')](_0x10f264['query'][_0x31efdd])[_0xb138('0x7c')];var _0x1e2deb=JSON['parse'](_0x10f264[_0xb138('0x42')][_0x31efdd])[_0xb138('0x7d')];_0x4d3dec[_0xb138('0x4d')](_0xb138('0x7e'),_0x54369f,_0x1e2deb);}else{if(_0x10f264[_0xb138('0x42')][_0x31efdd]===_0xb138('0x7f')){_0x4d3dec['where']('i.'+_0x31efdd+_0xb138('0x80'));}else{_0x4d3dec[_0xb138('0x4d')]('i.'+_0x31efdd+_0xb138('0x81'),_0x10f264[_0xb138('0x42')][_0x31efdd]);}}});}if(_0x10f264[_0xb138('0x42')][_0xb138('0x82')]){if(_0x10f264[_0xb138('0x42')]['read']==0x1){_0x4d3dec['having'](_0xb138('0x83'));}else{_0x4d3dec['having'](_0xb138('0x84'));}}if(_0x10f264[_0xb138('0x42')][_0xb138('0x85')]){_0x5dec24=_[_0xb138('0x86')](_0x10f264[_0xb138('0x42')][_0xb138('0x85')])?_0x10f264[_0xb138('0x42')][_0xb138('0x85')]:new Array(_0x10f264[_0xb138('0x42')][_0xb138('0x85')]);_0x5dec24['forEach'](function(_0x70179f){_0xa362f6['or'](_0xb138('0x6e'),'%,'+_0x70179f+',%');});}if(_0x10f264['query'][_0xb138('0x87')]){var _0x5631a1=_0x10f264[_0xb138('0x42')][_0xb138('0x87')]['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xb138('0x88')](_0x5631a1)){_0x53604e['or']('i.id\x20LIKE\x20?',_0x5631a1+'%')['or'](_0xb138('0x89'),_0x5631a1+'%');}_0x53604e['or'](_0xb138('0x8a'),_0x5631a1+'%');}}_0x4d3dec[_0xb138('0x4d')](_0x53604e);_0x4d3dec[_0xb138('0x8b')]('i.id');var _0x2ae93a={'type':db[_0xb138('0x8c')][_0xb138('0x8d')][_0xb138('0x8e')],'raw':!![]};var _0x2b45e0=_0x4d3dec[_0xb138('0x8f')]();_0x2b45e0[_0xb138('0x50')]('i.id');_0x2b45e0[_0xb138('0x50')](_0xb138('0x90'),_0xb138('0x63'));if(_0x2d0621[_0xb138('0x4b')]){_0x2d0621[_0xb138('0x4b')][_0xb138('0x3b')](function(_0x305b44){var _0x33eebc=_0x305b44[0x0]==='contactName'?_0x305b44[0x0]:'i.'+_0x305b44[0x0];_0x4d3dec[_0xb138('0x4b')](_0x33eebc,_0x305b44[0x1]===_0xb138('0x91')?![]:!![]);});}if(!_[_0xb138('0x92')](_0x5dec24)){_0x4d3dec[_0xb138('0x93')](_0xa362f6);_0x2b45e0[_0xb138('0x4d')]('t.id\x20IN\x20?',_0x5dec24);}BPromise['resolve']()['then'](function(){if(!_0x558d76){if(_0x10f264[_0xb138('0x42')][_0xb138('0x77')])return;_0x2b45e0[_0xb138('0x4d')](_0xb138('0x94'));_0x4d3dec[_0xb138('0x4d')](_0xb138('0x94'));return;}if(_0x10f264[_0xb138('0x95')][_0xb138('0x96')]!=='agent')return;return _0x10f264['user'][_0xb138('0x97')]({'attributes':['id'],'raw':!![]})['then'](function(_0x110141){if(_[_0xb138('0x92')](_0x110141)){_0x2b45e0[_0xb138('0x4d')]('i.FaxAccountId\x20IS\x20NULL');_0x4d3dec[_0xb138('0x4d')](_0xb138('0x98'));}else{_0x2b45e0[_0xb138('0x4d')]('i.FaxAccountId\x20IN\x20?',_[_0xb138('0x36')](_0x110141,'id'));_0x4d3dec['where']('i.FaxAccountId\x20IN\x20?',_[_0xb138('0x36')](_0x110141,'id'));}});})[_0xb138('0x31')](function(){if(_0x10f264[_0xb138('0x95')][_0xb138('0x96')]===_0xb138('0x99')&&!_0x558d76&&!_0x10f264[_0xb138('0x42')][_0xb138('0x77')])return[];return db['sequelize']['query'](_0x2b45e0[_0xb138('0x9a')](),_0x2ae93a);})['then'](function(_0x5be0ba){_0xd8a7d9['count']=_0x5be0ba[_0xb138('0x49')];if(_0xd8a7d9[_0xb138('0x27')]===0x0)return[];return db[_0xb138('0x9b')][_0xb138('0x42')](_0x241e15[_0xb138('0x9a')](),_0x2ae93a)[_0xb138('0x31')](function(_0x50b364){_0x4ecd3a=_['keyBy'](_0x50b364,'id');_0x2ae93a=_[_0xb138('0x9c')](_0x2ae93a,{'model':db[_0xb138('0x3f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x10f264[_0xb138('0x42')][_0xb138('0x48')]){_0x2d0621[_0xb138('0x47')][_0xb138('0x3b')](function(_0x5b7ee9){_0x4d3dec[_0xb138('0x50')]('i.'+_0x5b7ee9);});}else{_0x4d3dec[_0xb138('0x50')](_0xb138('0x90'),_0xb138('0x63'));_0x4d3dec[_0xb138('0x50')](_0xb138('0x9d'),'Account.key');_0x4d3dec[_0xb138('0x50')](_0xb138('0x9e'),'Account.mandatoryDisposition');_0x4d3dec[_0xb138('0x50')](_0xb138('0x9f'),'contactName');_0x4d3dec[_0xb138('0x50')](_0xb138('0xa0'));_0x4d3dec['field']('c.firstName',_0xb138('0xa1'));_0x4d3dec[_0xb138('0x50')](_0xb138('0xa2'),'Contact.lastName');_0x4d3dec['field'](_0xb138('0xa3'),'Contact.email');_0x4d3dec[_0xb138('0x50')](_0xb138('0xa4'),'Contact.phone');_0x4d3dec[_0xb138('0x50')](_0xb138('0xa5'),_0xb138('0xa6'));_0x4d3dec[_0xb138('0x50')]('c.fax',_0xb138('0xa7'));_0x4d3dec[_0xb138('0x50')]('o.fullname',_0xb138('0xa8'));_0x4d3dec[_0xb138('0x50')](_0xb138('0xa9'),_0xb138('0xaa'));_0x4d3dec['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0xb138('0x39'));}if(_0x2d0621['limit'])_0x4d3dec[_0xb138('0x26')](_0x2d0621[_0xb138('0x26')]);if(_0x2d0621['offset'])_0x4d3dec[_0xb138('0x28')](_0x2d0621[_0xb138('0x28')]);return db[_0xb138('0x9b')][_0xb138('0x42')](_0x4d3dec['toString'](),_0x2ae93a);})[_0xb138('0x31')](function(_0x149581){if(_0x149581[_0xb138('0x49')]>0x0)_0x1a3633[_0xb138('0x4d')](_0xb138('0xab'),_['map'](_0x149581,'id'));return db[_0xb138('0x9b')]['query'](_0x1a3633['toString'](),_0x2ae93a)[_0xb138('0x31')](function(_0x5db49c){var _0xd3df59=_[_0xb138('0xac')](_0x5db49c,_0xb138('0xad'));var _0xdb0a63=[];_0x149581[_0xb138('0x3b')](function(_0x3174d3){_0xdb0a63[_0xb138('0x3c')](updateFaxInteraction(_0x3174d3,_0x4ecd3a,_0xd3df59));});return BPromise[_0xb138('0xae')](_0xdb0a63);});});})['then'](function(_0xcbbc2){_0xd8a7d9[_0xb138('0xaf')]=_0xcbbc2;return _0xd8a7d9;})[_0xb138('0x31')](respondWithFilteredResult(_0x57fd1e,_0x2d0621))[_0xb138('0x3d')](handleError(_0x57fd1e,null));};exports[_0xb138('0xb0')]=function(_0x29eb52,_0x11935c){var _0x59f05a={'raw':![],'where':{'id':_0x29eb52[_0xb138('0xb1')]['id']}},_0x2fa383={};_0x2fa383[_0xb138('0x46')]=_[_0xb138('0x43')](db[_0xb138('0x3f')][_0xb138('0xb2')]);_0x2fa383[_0xb138('0x42')]=_[_0xb138('0x43')](_0x29eb52[_0xb138('0x42')]);_0x2fa383[_0xb138('0x44')]=_[_0xb138('0x45')](_0x2fa383['model'],_0x2fa383[_0xb138('0x42')]);_0x59f05a[_0xb138('0x47')]=_[_0xb138('0x45')](_0x2fa383[_0xb138('0x46')],qs['fields'](_0x29eb52[_0xb138('0x42')][_0xb138('0x48')]));_0x59f05a[_0xb138('0x47')]=_0x59f05a[_0xb138('0x47')][_0xb138('0x49')]?_0x59f05a['attributes']:_0x2fa383[_0xb138('0x46')];if(_0x29eb52[_0xb138('0x42')][_0xb138('0xb3')]){_0x59f05a[_0xb138('0xb4')]=[{'all':!![]}];}_0x59f05a=_['merge']({},_0x59f05a,_0x29eb52[_0xb138('0xb5')]);return db[_0xb138('0x3f')][_0xb138('0x62')](_0x59f05a)[_0xb138('0x31')](handleEntityNotFound(_0x11935c,null))[_0xb138('0x31')](respondWithResult(_0x11935c,null))[_0xb138('0x3d')](handleError(_0x11935c,null));};exports[_0xb138('0xb6')]=function(_0xeadbd3,_0x2ae972){return db['FaxInteraction']['create'](_0xeadbd3[_0xb138('0x74')],{})[_0xb138('0x31')](respondWithResult(_0x2ae972,0xc9))[_0xb138('0x3d')](handleError(_0x2ae972,null));};exports[_0xb138('0x2f')]=function(_0x3062af,_0x41adc9){if(_0x3062af[_0xb138('0x74')]['id']){delete _0x3062af[_0xb138('0x74')]['id'];}return db[_0xb138('0x3f')][_0xb138('0x62')]({'where':{'id':_0x3062af['params']['id']}})[_0xb138('0x31')](handleEntityNotFound(_0x41adc9,null))[_0xb138('0x31')](saveUpdates(_0x3062af[_0xb138('0x74')],null))['then'](respondWithResult(_0x41adc9,null))[_0xb138('0x3d')](handleError(_0x41adc9,null));};exports['destroy']=function(_0x58d75a,_0x54b174){return db[_0xb138('0x3f')][_0xb138('0x62')]({'where':{'id':_0x58d75a['params']['id']}})[_0xb138('0x31')](handleEntityNotFound(_0x54b174,null))[_0xb138('0x31')](removeEntity(_0x54b174,null))[_0xb138('0x3d')](handleError(_0x54b174,null));};exports[_0xb138('0xb7')]=function(_0x5eecef,_0x112521){return db[_0xb138('0x3f')][_0xb138('0xb7')]()[_0xb138('0x31')](respondWithResult(_0x112521,null))[_0xb138('0x3d')](handleError(_0x112521,null));};exports['addMessage']=function(_0x2e50b1,_0x2659d3,_0x5e7743){return db[_0xb138('0xb8')][_0xb138('0x62')]({'where':{'id':_0x2e50b1[_0xb138('0xb1')]['id']}})['then'](handleEntityNotFound(_0x2659d3,null))['then'](function(_0x42e27d){if(_0x42e27d){return _0x42e27d['addMessage'](_0x2e50b1['body'][_0xb138('0xb9')],_[_0xb138('0xba')](_0x2e50b1[_0xb138('0x74')],[_0xb138('0xb9'),'id'])||{});}})[_0xb138('0x31')](respondWithResult(_0x2659d3,null))['catch'](handleError(_0x2659d3,null));};exports[_0xb138('0xbb')]=function(_0x11f313,_0x5e8858,_0x13655f){var _0xc32678={'raw':![],'where':{}};var _0x3e317a={};var _0x4361c7={'count':0x0,'rows':[]};return db['FaxInteraction'][_0xb138('0xbc')]({'where':{'id':_0x11f313['params']['id']}})[_0xb138('0x31')](handleEntityNotFound(_0x5e8858,null))['then'](function(_0xd2d3ec){if(_0xd2d3ec){_0x3e317a['model']=_[_0xb138('0x43')](db[_0xb138('0xb8')][_0xb138('0xb2')]);_0x3e317a[_0xb138('0x42')]=_[_0xb138('0x43')](_0x11f313[_0xb138('0x42')]);_0x3e317a['filters']=_[_0xb138('0x45')](_0x3e317a[_0xb138('0x46')],_0x3e317a['query']);_0xc32678[_0xb138('0x47')]=_[_0xb138('0x45')](_0x3e317a[_0xb138('0x46')],qs[_0xb138('0x48')](_0x11f313[_0xb138('0x42')][_0xb138('0x48')]));_0xc32678[_0xb138('0x47')]=_0xc32678[_0xb138('0x47')][_0xb138('0x49')]?_0xc32678['attributes']:_0x3e317a[_0xb138('0x46')];if(!_0x11f313[_0xb138('0x42')][_0xb138('0x4a')](_0xb138('0xbd'))){_0xc32678['limit']=qs[_0xb138('0x26')](_0x11f313[_0xb138('0x42')][_0xb138('0x26')]);_0xc32678[_0xb138('0x28')]=qs[_0xb138('0x28')](_0x11f313['query'][_0xb138('0x28')]);}_0xc32678[_0xb138('0x4b')]=qs['sort'](_0x11f313[_0xb138('0x42')][_0xb138('0x4c')]);_0xc32678['where']=qs[_0xb138('0x44')](_[_0xb138('0x4e')](_0x11f313['query'],_0x3e317a[_0xb138('0x44')]));_0xc32678[_0xb138('0x4d')][_0xb138('0xad')]=_0xd2d3ec['id'];if(_0x11f313[_0xb138('0x42')]['filter']){_0xc32678['where']=_[_0xb138('0x9c')](_0xc32678[_0xb138('0x4d')],{'$or':_[_0xb138('0x36')](_0xc32678['attributes'],function(_0x40f7e2){var _0x22ecaa={};_0x22ecaa[_0x40f7e2]={'$like':'%'+_0x11f313[_0xb138('0x42')]['filter']+'%'};return _0x22ecaa;})});}if(_0x11f313[_0xb138('0x42')][_0xb138('0x7c')]){var _0x36fe40=_0x11f313[_0xb138('0x42')]['$gte'][_0xb138('0x3a')](',');var _0x137264={};_0x137264[_0x36fe40[0x0]]={'$gte':moment(_0x36fe40[0x1])[_0xb138('0xbe')](_0xb138('0xbf'))};_0xc32678[_0xb138('0x4d')]=_[_0xb138('0x9c')](_0xc32678['where'],_0x137264);}_0xc32678=_[_0xb138('0x9c')]({},_0xc32678,_0x11f313['options']);return db[_0xb138('0xb8')]['count']({'where':_0xc32678[_0xb138('0x4d')]})['then'](function(_0x450ec2){_0x4361c7[_0xb138('0x27')]=_0x450ec2;if(_0x11f313[_0xb138('0x42')]['includeAll']){_0xc32678[_0xb138('0xb4')]=[{'all':!![]}];}return db[_0xb138('0xb8')]['findAll'](_0xc32678);})[_0xb138('0x31')](function(_0xba148e){_0x4361c7[_0xb138('0xaf')]=_0xba148e;return _0x4361c7;});}})['then'](respondWithFilteredResult(_0x5e8858,_0xc32678))['catch'](handleError(_0x5e8858,null));};exports[_0xb138('0xc0')]=function(_0xc8f359,_0x5dc668,_0x4301a0){return db['FaxInteraction'][_0xb138('0x62')]({'where':{'id':_0xc8f359['params']['id']}})[_0xb138('0x31')](handleEntityNotFound(_0x5dc668,null))[_0xb138('0x31')](function(_0x3184cd){if(_0x3184cd){return _0x3184cd[_0xb138('0xc1')](_0xc8f359[_0xb138('0x74')][_0xb138('0xb9')],_[_0xb138('0xba')](_0xc8f359['body'],[_0xb138('0xb9'),'id'])||{})['spread'](function(){return db[_0xb138('0x6d')][_0xb138('0xc2')]({'attributes':['id','name',_0xb138('0x51')],'where':{'id':_0xc8f359['body'][_0xb138('0xb9')]}});})[_0xb138('0x31')](function(_0x54d3f3){socket[_0xb138('0xc3')](_0xb138('0xc4'),{'id':Number(_0xc8f359['params']['id']),'tags':_0x54d3f3||[]});return{'id':Number(_0xc8f359[_0xb138('0xb1')]['id']),'tags':_0x54d3f3||[]};});}})[_0xb138('0x31')](respondWithResult(_0x5dc668,null))[_0xb138('0x3d')](handleError(_0x5dc668,null));};exports['removeTags']=function(_0x225519,_0x40a415,_0x23cf39){return db[_0xb138('0x3f')][_0xb138('0x62')]({'where':{'id':_0x225519[_0xb138('0xb1')]['id']}})[_0xb138('0x31')](handleEntityNotFound(_0x40a415,null))[_0xb138('0x31')](function(_0x432096){if(_0x432096){return _0x432096[_0xb138('0xc5')](_0x225519['query'][_0xb138('0xb9')]);}})[_0xb138('0x31')](respondWithStatusCode(_0x40a415,null))[_0xb138('0x3d')](handleError(_0x40a415,null));};exports[_0xb138('0xc6')]=function(_0x14cd3b,_0x5c6ee0){var _0x374a70=moment()[_0xb138('0xc7')]()[_0xb138('0x9a')]();var _0x4902e7=path[_0xb138('0xc8')](config[_0xb138('0xc9')],_0xb138('0xca'),'files','tmp');var _0x2c15c9=path[_0xb138('0xc8')](config['root'],'server',_0xb138('0xcb'),_0xb138('0xcc'));var _0xfddcf=path[_0xb138('0xc8')](_0x4902e7,_0x374a70);var _0x32b392=util[_0xb138('0xbe')](_0xb138('0xcd'),_0x14cd3b['params']['id'],_0x374a70);var _0x53e54f=path['join'](_0x4902e7,_0x32b392);var _0x25ff34=[];_0x25ff34['push']({'model':db[_0xb138('0xce')],'as':_0xb138('0xce'),'raw':!![]});var _0x7ce6b7=[{'model':db[_0xb138('0xb8')],'as':_0xb138('0xcf'),'attributes':['id',_0xb138('0x74'),_0xb138('0x7a')],'include':_0x25ff34}];return db[_0xb138('0x3f')][_0xb138('0x62')]({'where':{'id':_0x14cd3b[_0xb138('0xb1')]['id']},'include':_0x7ce6b7})[_0xb138('0x31')](handleEntityNotFound(_0x5c6ee0,null))[_0xb138('0x31')](function(_0x1374f1){if(_0x1374f1&&_0x1374f1['Messages']){var _0x5701ef=_0x1374f1[_0xb138('0xd0')]({'plain':!![]});fs['mkdirSync'](_0xfddcf);for(var _0x28c86d=0x0;_0x28c86d<_0x5701ef['Messages'][_0xb138('0x49')];_0x28c86d++){var _0x399a91=_0x5701ef[_0xb138('0xcf')][_0x28c86d][_0xb138('0xce')];if(_0x399a91){var _0x2351e1=path[_0xb138('0xc8')](_0x2c15c9,_0x399a91[_0xb138('0xd1')]);if(fs[_0xb138('0xd2')](_0x2351e1)){fs['createReadStream'](_0x2351e1)[_0xb138('0xd3')](fs[_0xb138('0xd4')](path['join'](_0xfddcf,_0x399a91[_0xb138('0xd1')])));}}}return BPromise['resolve']()['then'](function(){return new BPromise(function(_0x5df1b9,_0x31ccd6){zipdir(_0xfddcf,{'saveTo':_0x53e54f},function(_0x561d14,_0x52b00c){if(_0x561d14)return _0x31ccd6(_0x561d14);return _0x5df1b9(_0x52b00c);});})['then'](function(){return new BPromise(function(_0x25abad,_0xb04054){rimraf(_0xfddcf,function(_0x2f0775){if(_0x2f0775)_0xb04054(_0x2f0775);return _0x25abad();});});})[_0xb138('0x31')](function(){return _0x5c6ee0['download'](_0x53e54f,_0x32b392,function(_0x479810){if(_0x479810){console['log'](_0xb138('0xd5'),_0x479810);}else{fs['unlinkSync'](_0x53e54f);}});});});}else{return _0x5c6ee0['sendStatus'](0xc8);}})[_0xb138('0x3d')](handleError(_0x5c6ee0,null));};
\ No newline at end of file
index 2686e1c..c4f18ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e0=['setDataValue','Users','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','FaxInteraction','FaxMessage','save','update','remove','getUsers','then'];(function(_0xbf41f2,_0x371b05){var _0x1eeba6=function(_0x3b50f3){while(--_0x3b50f3){_0xbf41f2['push'](_0xbf41f2['shift']());}};_0x1eeba6(++_0x371b05);}(_0x34e0,0x12a));var _0x034e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0x34e0[_0x37bd26];return _0xe83dc4;};'use strict';var EventEmitter=require('events');var FaxInteraction=require(_0x034e('0x0'))['db'][_0x034e('0x1')];var FaxMessage=require(_0x034e('0x0'))['db'][_0x034e('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x034e('0x3'),'afterUpdate':_0x034e('0x4'),'afterDestroy':_0x034e('0x5')};function emitEvent(_0x4a6975){return function(_0x100cf6,_0x115cdf,_0x4104b4){_0x100cf6[_0x034e('0x6')]({'attributes':['id'],'raw':!![]})[_0x034e('0x7')](function(_0x28df88){_0x100cf6[_0x034e('0x8')](_0x034e('0x9'),_0x28df88['map'](function(_0x21086f){return{'id':_0x21086f['id']};}));return FaxMessage[_0x034e('0xa')]({'where':{'FaxInteractionId':_0x100cf6['id'],'direction':'in','read':![]},'raw':!![]});})[_0x034e('0x7')](function(_0x2d66d5){_0x100cf6[_0x034e('0x8')](_0x034e('0xb'),_0x2d66d5[_0x034e('0xc')]);FaxInteractionEvents[_0x034e('0xd')](_0x4a6975+':'+_0x100cf6['id'],_0x100cf6);FaxInteractionEvents[_0x034e('0xd')](_0x4a6975,_0x100cf6);_0x4104b4(null);})[_0x034e('0xe')](_0x4104b4(null));};}for(var e in events){if(events[_0x034e('0xf')](e)){var event=events[e];FaxInteraction[_0x034e('0x10')](e,emitEvent(event));}}module[_0x034e('0x11')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x60b9=['FaxMessage','save','remove','setDataValue','Users','map','findAll','then','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','FaxInteraction'];(function(_0x4211bb,_0x424082){var _0x36d8e8=function(_0x8665dc){while(--_0x8665dc){_0x4211bb['push'](_0x4211bb['shift']());}};_0x36d8e8(++_0x424082);}(_0x60b9,0x69));var _0x960b=function(_0x4f54a8,_0x564967){_0x4f54a8=_0x4f54a8-0x0;var _0x103a8a=_0x60b9[_0x4f54a8];return _0x103a8a;};'use strict';var EventEmitter=require(_0x960b('0x0'));var FaxInteraction=require(_0x960b('0x1'))['db'][_0x960b('0x2')];var FaxMessage=require('../../mysqldb')['db'][_0x960b('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x960b('0x4'),'afterUpdate':'update','afterDestroy':_0x960b('0x5')};function emitEvent(_0x3ae977){return function(_0x316490,_0x429648,_0x5c1baf){_0x316490['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x642760){_0x316490[_0x960b('0x6')](_0x960b('0x7'),_0x642760[_0x960b('0x8')](function(_0x318890){return{'id':_0x318890['id']};}));return FaxMessage[_0x960b('0x9')]({'where':{'FaxInteractionId':_0x316490['id'],'direction':'in','read':![]},'raw':!![]});})[_0x960b('0xa')](function(_0x426643){_0x316490[_0x960b('0x6')](_0x960b('0xb'),_0x426643[_0x960b('0xc')]);FaxInteractionEvents[_0x960b('0xd')](_0x3ae977+':'+_0x316490['id'],_0x316490);FaxInteractionEvents['emit'](_0x3ae977,_0x316490);_0x5c1baf(null);})[_0x960b('0xe')](_0x5c1baf(null));};}for(var e in events){if(events[_0x960b('0xf')](e)){var event=events[e];FaxInteraction[_0x960b('0x10')](e,emitEvent(event));}}module[_0x960b('0x11')]=FaxInteractionEvents;
\ No newline at end of file
index cc6c9ec..ab14815 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x726f=['request-promise','path','rimraf','../../config/environment','./faxInteraction.attributes','FaxInteraction','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x2b49bc,_0x47b636){var _0x43cc65=function(_0x236ec3){while(--_0x236ec3){_0x2b49bc['push'](_0x2b49bc['shift']());}};_0x43cc65(++_0x47b636);}(_0x726f,0x1ca));var _0xf726=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x726f[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0xf726('0x0'));var util=require(_0xf726('0x1'));var logger=require(_0xf726('0x2'))(_0xf726('0x3'));var moment=require(_0xf726('0x4'));var BPromise=require(_0xf726('0x5'));var rp=require(_0xf726('0x6'));var fs=require('fs');var path=require(_0xf726('0x7'));var rimraf=require(_0xf726('0x8'));var config=require(_0xf726('0x9'));var attributes=require(_0xf726('0xa'));module['exports']=function(_0x5446bd,_0x1ecf4c){return _0x5446bd['define'](_0xf726('0xb'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x524fd0,_0x19bfec,_0x7edb51){if(_0x524fd0[_0xf726('0xc')]('closed')){_0x524fd0[_0xf726('0xd')]=moment()[_0xf726('0xe')](_0xf726('0xf'));}_0x7edb51(null,_0x524fd0);}}});};
\ No newline at end of file
+var _0x0427=['bluebird','request-promise','rimraf','../../config/environment','./faxInteraction.attributes','exports','define','FaxInteraction','changed','closed','closedAt','lodash','util','api','moment'];(function(_0x14a385,_0x9b6d69){var _0x30b087=function(_0x3c28f1){while(--_0x3c28f1){_0x14a385['push'](_0x14a385['shift']());}};_0x30b087(++_0x9b6d69);}(_0x0427,0x173));var _0x7042=function(_0x42267,_0xb53dc6){_0x42267=_0x42267-0x0;var _0x44ffff=_0x0427[_0x42267];return _0x44ffff;};'use strict';var _=require(_0x7042('0x0'));var util=require(_0x7042('0x1'));var logger=require('../../config/logger')(_0x7042('0x2'));var moment=require(_0x7042('0x3'));var BPromise=require(_0x7042('0x4'));var rp=require(_0x7042('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7042('0x6'));var config=require(_0x7042('0x7'));var attributes=require(_0x7042('0x8'));module[_0x7042('0x9')]=function(_0x430ccd,_0xa68e28){return _0x430ccd[_0x7042('0xa')](_0x7042('0xb'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4c6214,_0x10a62a,_0x444113){if(_0x4c6214[_0x7042('0xc')](_0x7042('0xd'))){_0x4c6214[_0x7042('0xe')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x444113(null,_0x4c6214);}}});};
\ No newline at end of file
index c6cdfe7..cacf90a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf682=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','./faxInteraction.socket','request','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','update','options','raw','where','attributes','limit','UpdateFaxInteraction','AddTagsToFaxInteraction','FaxInteraction','find','addTags','ids','omit','body','spread','AddTags','util','bluebird','randomstring'];(function(_0x2991d8,_0x3cd07f){var _0x2c1363=function(_0x596712){while(--_0x596712){_0x2991d8['push'](_0x2991d8['shift']());}};_0x2c1363(++_0x3cd07f);}(_0xf682,0xa5));var _0x2f68=function(_0x1d045c,_0x3497ef){_0x1d045c=_0x1d045c-0x0;var _0x52ce43=_0xf682[_0x1d045c];return _0x52ce43;};'use strict';var _=require('lodash');var util=require(_0x2f68('0x0'));var moment=require('moment');var BPromise=require(_0x2f68('0x1'));var rs=require(_0x2f68('0x2'));var fs=require('fs');var Redis=require(_0x2f68('0x3'));var db=require(_0x2f68('0x4'))['db'];var utils=require(_0x2f68('0x5'));var logger=require(_0x2f68('0x6'))(_0x2f68('0x7'));var config=require(_0x2f68('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2f68('0x9')][_0x2f68('0xa')]({'port':0x232a});config[_0x2f68('0xb')]=_[_0x2f68('0xc')](config[_0x2f68('0xb')],{'host':_0x2f68('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x2f68('0xe'))['register'](socket);function respondWithRpcPromise(_0x564669,_0x3ad57c,_0x2333ef){return new BPromise(function(_0x3d2986,_0x5a16a9){return client[_0x2f68('0xf')](_0x564669,_0x2333ef)[_0x2f68('0x10')](function(_0x5ea673){logger[_0x2f68('0x11')](_0x2f68('0x12'),_0x3ad57c,_0x2f68('0x13'));logger[_0x2f68('0x14')]('FaxInteraction,\x20%s,\x20%s,\x20%s',_0x3ad57c,_0x2f68('0x13'),JSON[_0x2f68('0x15')](_0x5ea673));if(_0x5ea673['error']){if(_0x5ea673[_0x2f68('0x16')][_0x2f68('0x17')]===0x1f4){logger[_0x2f68('0x16')](_0x2f68('0x12'),_0x3ad57c,_0x5ea673['error'][_0x2f68('0x18')]);return _0x5a16a9(_0x5ea673[_0x2f68('0x16')][_0x2f68('0x18')]);}logger['error']('FaxInteraction,\x20%s,\x20%s',_0x3ad57c,_0x5ea673[_0x2f68('0x16')][_0x2f68('0x18')]);return _0x3d2986(_0x5ea673[_0x2f68('0x16')][_0x2f68('0x18')]);}else{logger[_0x2f68('0x11')](_0x2f68('0x12'),_0x3ad57c,_0x2f68('0x13'));_0x3d2986(_0x5ea673['result'][_0x2f68('0x18')]);}})[_0x2f68('0x19')](function(_0x553fd7){logger[_0x2f68('0x16')](_0x2f68('0x12'),_0x3ad57c,_0x553fd7);_0x5a16a9(_0x553fd7);});});}exports['UpdateFaxInteraction']=function(_0x10bb6b){var _0x18aaa8=this;return new Promise(function(_0x5b8d95,_0x28562e){return db['FaxInteraction'][_0x2f68('0x1a')](_0x10bb6b['body'],{'raw':_0x10bb6b[_0x2f68('0x1b')]?_0x10bb6b[_0x2f68('0x1b')][_0x2f68('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x10bb6b[_0x2f68('0x1b')]?_0x10bb6b['options'][_0x2f68('0x1d')]||null:null,'attributes':_0x10bb6b[_0x2f68('0x1b')]?_0x10bb6b[_0x2f68('0x1b')][_0x2f68('0x1e')]||null:null,'limit':_0x10bb6b[_0x2f68('0x1b')]?_0x10bb6b[_0x2f68('0x1b')][_0x2f68('0x1f')]||null:null})[_0x2f68('0x10')](function(_0x2f3566){logger[_0x2f68('0x11')](_0x2f68('0x20'),_0x10bb6b);logger[_0x2f68('0x14')](_0x2f68('0x20'),_0x10bb6b,JSON[_0x2f68('0x15')](_0x2f3566));_0x5b8d95(_0x2f3566);})[_0x2f68('0x19')](function(_0x296772){logger[_0x2f68('0x16')]('UpdateFaxInteraction',_0x296772[_0x2f68('0x18')],_0x10bb6b);_0x28562e(_0x18aaa8['error'](0x1f4,_0x296772[_0x2f68('0x18')]));});});};exports[_0x2f68('0x21')]=function(_0x55d6fc){return new Promise(function(_0x4c5316,_0x13d94c){return db[_0x2f68('0x22')][_0x2f68('0x23')]({'where':_0x55d6fc[_0x2f68('0x1b')]?_0x55d6fc[_0x2f68('0x1b')]['where']||null:null})['then'](function(_0x431461){if(_0x431461){return _0x431461[_0x2f68('0x24')](_0x55d6fc['body'][_0x2f68('0x25')],_[_0x2f68('0x26')](_0x55d6fc[_0x2f68('0x27')],['ids','id'])||{});}})[_0x2f68('0x28')](function(_0x40375c){logger['info'](_0x2f68('0x29'),_0x55d6fc);logger[_0x2f68('0x14')](_0x2f68('0x29'),_0x55d6fc,JSON[_0x2f68('0x15')](_0x40375c));_0x4c5316(_0x40375c);})['catch'](function(_0x4b34dd){logger[_0x2f68('0x16')](_0x2f68('0x29'),_0x4b34dd[_0x2f68('0x18')],_0x55d6fc);_0x13d94c(_this[_0x2f68('0x16')](0x1f4,_0x4b34dd['message']));});});};
\ No newline at end of file
+var _0x20fc=['result','UpdateFaxInteraction','FaxInteraction','update','body','options','raw','where','attributes','limit','stringify','catch','find','addTags','AddTags','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','client','redis','localhost','socket.io-emitter','./faxInteraction.socket','request','then','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','error','code','message','info'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x20fc,0x1cb));var _0xc20f=function(_0xbf5e16,_0x146ce3){_0xbf5e16=_0xbf5e16-0x0;var _0x5975a5=_0x20fc[_0xbf5e16];return _0x5975a5;};'use strict';var _=require(_0xc20f('0x0'));var util=require(_0xc20f('0x1'));var moment=require('moment');var BPromise=require(_0xc20f('0x2'));var rs=require(_0xc20f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc20f('0x4'))['db'];var utils=require(_0xc20f('0x5'));var logger=require('../../config/logger')(_0xc20f('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc20f('0x7')]['http']({'port':0x232a});config[_0xc20f('0x8')]=_['defaults'](config[_0xc20f('0x8')],{'host':_0xc20f('0x9'),'port':0x18eb});var socket=require(_0xc20f('0xa'))(new Redis(config[_0xc20f('0x8')]));require(_0xc20f('0xb'))['register'](socket);function respondWithRpcPromise(_0x5f629d,_0x483035,_0x989f1d){return new BPromise(function(_0x41a50d,_0x589221){return client[_0xc20f('0xc')](_0x5f629d,_0x989f1d)[_0xc20f('0xd')](function(_0x22d155){logger['info'](_0xc20f('0xe'),_0x483035,_0xc20f('0xf'));logger[_0xc20f('0x10')](_0xc20f('0x11'),_0x483035,_0xc20f('0xf'),JSON['stringify'](_0x22d155));if(_0x22d155['error']){if(_0x22d155[_0xc20f('0x12')][_0xc20f('0x13')]===0x1f4){logger[_0xc20f('0x12')]('FaxInteraction,\x20%s,\x20%s',_0x483035,_0x22d155[_0xc20f('0x12')]['message']);return _0x589221(_0x22d155[_0xc20f('0x12')][_0xc20f('0x14')]);}logger[_0xc20f('0x12')](_0xc20f('0xe'),_0x483035,_0x22d155[_0xc20f('0x12')][_0xc20f('0x14')]);return _0x41a50d(_0x22d155['error'][_0xc20f('0x14')]);}else{logger[_0xc20f('0x15')]('FaxInteraction,\x20%s,\x20%s',_0x483035,_0xc20f('0xf'));_0x41a50d(_0x22d155[_0xc20f('0x16')][_0xc20f('0x14')]);}})['catch'](function(_0x4a8480){logger[_0xc20f('0x12')](_0xc20f('0xe'),_0x483035,_0x4a8480);_0x589221(_0x4a8480);});});}exports[_0xc20f('0x17')]=function(_0x41da58){var _0x323e25=this;return new Promise(function(_0x59aa79,_0x1cd1cd){return db[_0xc20f('0x18')][_0xc20f('0x19')](_0x41da58[_0xc20f('0x1a')],{'raw':_0x41da58[_0xc20f('0x1b')]?_0x41da58[_0xc20f('0x1b')][_0xc20f('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x41da58[_0xc20f('0x1b')]?_0x41da58[_0xc20f('0x1b')][_0xc20f('0x1d')]||null:null,'attributes':_0x41da58[_0xc20f('0x1b')]?_0x41da58['options'][_0xc20f('0x1e')]||null:null,'limit':_0x41da58['options']?_0x41da58[_0xc20f('0x1b')][_0xc20f('0x1f')]||null:null})[_0xc20f('0xd')](function(_0x16f048){logger[_0xc20f('0x15')](_0xc20f('0x17'),_0x41da58);logger[_0xc20f('0x10')]('UpdateFaxInteraction',_0x41da58,JSON[_0xc20f('0x20')](_0x16f048));_0x59aa79(_0x16f048);})[_0xc20f('0x21')](function(_0x11ee71){logger[_0xc20f('0x12')](_0xc20f('0x17'),_0x11ee71[_0xc20f('0x14')],_0x41da58);_0x1cd1cd(_0x323e25[_0xc20f('0x12')](0x1f4,_0x11ee71[_0xc20f('0x14')]));});});};exports['AddTagsToFaxInteraction']=function(_0x105e05){return new Promise(function(_0x1ccf4c,_0x3019ed){return db[_0xc20f('0x18')][_0xc20f('0x22')]({'where':_0x105e05[_0xc20f('0x1b')]?_0x105e05[_0xc20f('0x1b')][_0xc20f('0x1d')]||null:null})[_0xc20f('0xd')](function(_0x54b367){if(_0x54b367){return _0x54b367[_0xc20f('0x23')](_0x105e05[_0xc20f('0x1a')]['ids'],_['omit'](_0x105e05['body'],['ids','id'])||{});}})['spread'](function(_0x439b79){logger[_0xc20f('0x15')](_0xc20f('0x24'),_0x105e05);logger['debug'](_0xc20f('0x24'),_0x105e05,JSON[_0xc20f('0x20')](_0x439b79));_0x1ccf4c(_0x439b79);})[_0xc20f('0x21')](function(_0x5340dd){logger[_0xc20f('0x12')](_0xc20f('0x24'),_0x5340dd[_0xc20f('0x14')],_0x105e05);_0x3019ed(_this['error'](0x1f4,_0x5340dd['message']));});});};
\ No newline at end of file
index 4e3edab..1eb1a96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc42=['faxInteraction:','remove','emit','removeListener'];(function(_0x478c8a,_0x9afc92){var _0x3b6b3e=function(_0x37634e){while(--_0x37634e){_0x478c8a['push'](_0x478c8a['shift']());}};_0x3b6b3e(++_0x9afc92);}(_0xfc42,0x199));var _0x2fc4=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xfc42[_0x20a584];return _0x4b41a8;};'use strict';var FaxInteractionEvents=require('./faxInteraction.events');var events=['save',_0x2fc4('0x0'),'update'];function createListener(_0x5e03ca,_0x2b10bb){return function(_0x37c67d){_0x2b10bb[_0x2fc4('0x1')](_0x5e03ca,_0x37c67d);};}function removeListener(_0x24bc9b,_0x988ea0){return function(){FaxInteractionEvents[_0x2fc4('0x2')](_0x24bc9b,_0x988ea0);};}exports['register']=function(_0x501a66){for(var _0x477fd4=0x0,_0x5711a8=events['length'];_0x477fd4<_0x5711a8;_0x477fd4++){var _0x3f0568=events[_0x477fd4];var _0x41b9a4=createListener(_0x2fc4('0x3')+_0x3f0568,_0x501a66);FaxInteractionEvents['on'](_0x3f0568,_0x41b9a4);}};
\ No newline at end of file
+var _0xd4a1=['register','length','faxInteraction:','./faxInteraction.events','remove','update','emit','removeListener'];(function(_0x196f12,_0x92b120){var _0x34aa51=function(_0x22dd87){while(--_0x22dd87){_0x196f12['push'](_0x196f12['shift']());}};_0x34aa51(++_0x92b120);}(_0xd4a1,0x73));var _0x1d4a=function(_0x31f280,_0x1dbe08){_0x31f280=_0x31f280-0x0;var _0x353349=_0xd4a1[_0x31f280];return _0x353349;};'use strict';var FaxInteractionEvents=require(_0x1d4a('0x0'));var events=['save',_0x1d4a('0x1'),_0x1d4a('0x2')];function createListener(_0x3099f7,_0x19d214){return function(_0x49f934){_0x19d214[_0x1d4a('0x3')](_0x3099f7,_0x49f934);};}function removeListener(_0x431b44,_0x4d6197){return function(){FaxInteractionEvents[_0x1d4a('0x4')](_0x431b44,_0x4d6197);};}exports[_0x1d4a('0x5')]=function(_0x4a8c15){for(var _0x253d9e=0x0,_0x5d15eb=events[_0x1d4a('0x6')];_0x253d9e<_0x5d15eb;_0x253d9e++){var _0xfb78d8=events[_0x253d9e];var _0x2c6d62=createListener(_0x1d4a('0x7')+_0xfb78d8,_0x4a8c15);FaxInteractionEvents['on'](_0xfb78d8,_0x2c6d62);}};
\ No newline at end of file
index 2e26368..6d82fe8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6935=['/describe','describe','/:id/messages','getMessages','/:id/download','post','create','addMessage','/:id/tags','faxinteraction:addtags','put','/:id','tracked','delete','fax','faxinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxInteraction.controller','isAuthenticated','index','get'];(function(_0x59118c,_0x440948){var _0x3b5f36=function(_0x4b74c5){while(--_0x4b74c5){_0x59118c['push'](_0x59118c['shift']());}};_0x3b5f36(++_0x440948);}(_0x6935,0x1c5));var _0x5693=function(_0x96198e,_0x49070b){_0x96198e=_0x96198e-0x0;var _0x564cb6=_0x6935[_0x96198e];return _0x564cb6;};'use strict';var multer=require(_0x5693('0x0'));var util=require(_0x5693('0x1'));var path=require(_0x5693('0x2'));var timeout=require(_0x5693('0x3'));var express=require('express');var router=express[_0x5693('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x5693('0x5'));var interaction=require(_0x5693('0x6'));var config=require(_0x5693('0x7'));var controller=require(_0x5693('0x8'));router['get']('/',auth[_0x5693('0x9')](),controller[_0x5693('0xa')]);router[_0x5693('0xb')](_0x5693('0xc'),auth[_0x5693('0x9')](),controller[_0x5693('0xd')]);router['get']('/:id',auth[_0x5693('0x9')](),controller['show']);router[_0x5693('0xb')](_0x5693('0xe'),auth[_0x5693('0x9')](),controller[_0x5693('0xf')]);router[_0x5693('0xb')](_0x5693('0x10'),auth[_0x5693('0x9')](),controller['download']);router[_0x5693('0x11')]('/',auth[_0x5693('0x9')](),controller[_0x5693('0x12')]);router['post'](_0x5693('0xe'),auth[_0x5693('0x9')](),controller[_0x5693('0x13')]);router[_0x5693('0x11')](_0x5693('0x14'),auth['isAuthenticated'](),interaction['tracked']('fax',_0x5693('0x15')),controller['addTags']);router[_0x5693('0x16')](_0x5693('0x17'),auth[_0x5693('0x9')](),interaction[_0x5693('0x18')]('fax','faxinteraction:update'),controller['update']);router[_0x5693('0x19')](_0x5693('0x17'),auth[_0x5693('0x9')](),interaction[_0x5693('0x18')](_0x5693('0x1a'),_0x5693('0x1b')),controller[_0x5693('0x1c')]);router[_0x5693('0x19')](_0x5693('0x14'),auth['isAuthenticated'](),controller[_0x5693('0x1d')]);module[_0x5693('0x1e')]=router;
\ No newline at end of file
+var _0x917d=['create','/:id/messages','addMessage','/:id/tags','tracked','fax','addTags','put','faxinteraction:update','update','delete','destroy','exports','multer','util','path','connect-timeout','../../components/auth/service','../../config/environment','./faxInteraction.controller','get','isAuthenticated','index','/:id','show','getMessages','download','post'];(function(_0x49155d,_0x2bb881){var _0x4c5f0f=function(_0x290321){while(--_0x290321){_0x49155d['push'](_0x49155d['shift']());}};_0x4c5f0f(++_0x2bb881);}(_0x917d,0x1cd));var _0xd917=function(_0x5e89e2,_0x2dd5ac){_0x5e89e2=_0x5e89e2-0x0;var _0x1a96f2=_0x917d[_0x5e89e2];return _0x1a96f2;};'use strict';var multer=require(_0xd917('0x0'));var util=require(_0xd917('0x1'));var path=require(_0xd917('0x2'));var timeout=require(_0xd917('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xd917('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xd917('0x5'));var controller=require(_0xd917('0x6'));router[_0xd917('0x7')]('/',auth[_0xd917('0x8')](),controller[_0xd917('0x9')]);router[_0xd917('0x7')]('/describe',auth[_0xd917('0x8')](),controller['describe']);router['get'](_0xd917('0xa'),auth['isAuthenticated'](),controller[_0xd917('0xb')]);router['get']('/:id/messages',auth[_0xd917('0x8')](),controller[_0xd917('0xc')]);router[_0xd917('0x7')]('/:id/download',auth[_0xd917('0x8')](),controller[_0xd917('0xd')]);router[_0xd917('0xe')]('/',auth['isAuthenticated'](),controller[_0xd917('0xf')]);router[_0xd917('0xe')](_0xd917('0x10'),auth[_0xd917('0x8')](),controller[_0xd917('0x11')]);router['post'](_0xd917('0x12'),auth[_0xd917('0x8')](),interaction[_0xd917('0x13')](_0xd917('0x14'),'faxinteraction:addtags'),controller[_0xd917('0x15')]);router[_0xd917('0x16')](_0xd917('0xa'),auth[_0xd917('0x8')](),interaction[_0xd917('0x13')]('fax',_0xd917('0x17')),controller[_0xd917('0x18')]);router[_0xd917('0x19')](_0xd917('0xa'),auth[_0xd917('0x8')](),interaction[_0xd917('0x13')](_0xd917('0x14'),'faxinteraction:destroy'),controller[_0xd917('0x1a')]);router[_0xd917('0x19')](_0xd917('0x12'),auth[_0xd917('0x8')](),controller['removeTags']);module[_0xd917('0x1b')]=router;
\ No newline at end of file
index 0b59a84..2155206 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc18a=['DATE','sequelize','exports','TEXT','medium','ENUM','out'];(function(_0x1b217b,_0x162f31){var _0x261bc7=function(_0x5a8010){while(--_0x5a8010){_0x1b217b['push'](_0x1b217b['shift']());}};_0x261bc7(++_0x162f31);}(_0xc18a,0x1cf));var _0xac18=function(_0x110cdc,_0x245a35){_0x110cdc=_0x110cdc-0x0;var _0x4ed9e7=_0xc18a[_0x110cdc];return _0x4ed9e7;};'use strict';var Sequelize=require(_0xac18('0x0'));module[_0xac18('0x1')]={'body':{'type':Sequelize[_0xac18('0x2')](_0xac18('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xac18('0x4')]('in',_0xac18('0x5')),'defaultValue':_0xac18('0x5'),'allowNull':![]},'failMessage':{'type':Sequelize[_0xac18('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0xac18('0x6')]}};
\ No newline at end of file
+var _0xb66c=['DATE','sequelize','TEXT','BOOLEAN','ENUM','out'];(function(_0x1888c4,_0x188e77){var _0x565160=function(_0x3329e2){while(--_0x3329e2){_0x1888c4['push'](_0x1888c4['shift']());}};_0x565160(++_0x188e77);}(_0xb66c,0x175));var _0xcb66=function(_0x185b37,_0x2a41e4){_0x185b37=_0x185b37-0x0;var _0x578ccc=_0xb66c[_0x185b37];return _0x578ccc;};'use strict';var Sequelize=require(_0xcb66('0x0'));module['exports']={'body':{'type':Sequelize[_0xcb66('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xcb66('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0xcb66('0x3')]('in',_0xcb66('0x4')),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize[_0xcb66('0x1')],'defaultValue':null},'readAt':{'type':Sequelize[_0xcb66('0x5')]}};
\ No newline at end of file
index 6458974..6141bda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3134=['to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./faxMessage.socket','register','jayson/promise','client','http','request','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','name','send','index','map','FaxMessage','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','pick','where','VIRTUAL','filter','merge','options','includeAll','include','findAll','show','params','body','find','describe','fax-interactions','accept','fax','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','FaxInteraction','FaxInteractionId','update','isNil','read1stAt','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','RejectMessage','rejectMessage','SELECT','User','rejectmessage','create','Attachment','findOne','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','join','root','attachments','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path'];(function(_0x35bb1c,_0x2a7365){var _0x1a29cd=function(_0x6a314c){while(--_0x6a314c){_0x35bb1c['push'](_0x35bb1c['shift']());}};_0x1a29cd(++_0x2a7365);}(_0x3134,0x1b0));var _0x4313=function(_0x3d8dcc,_0x3b5fc5){_0x3d8dcc=_0x3d8dcc-0x0;var _0xc6c107=_0x3134[_0x3d8dcc];return _0xc6c107;};'use strict';var emlformat=require(_0x4313('0x0'));var rimraf=require(_0x4313('0x1'));var zipdir=require(_0x4313('0x2'));var jsonpatch=require(_0x4313('0x3'));var rp=require(_0x4313('0x4'));var moment=require(_0x4313('0x5'));var BPromise=require(_0x4313('0x6'));var Mustache=require(_0x4313('0x7'));var util=require('util');var path=require(_0x4313('0x8'));var sox=require('sox');var csv=require(_0x4313('0x9'));var ejs=require(_0x4313('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4313('0xb'));var squel=require(_0x4313('0xc'));var crypto=require(_0x4313('0xd'));var jsforce=require(_0x4313('0xe'));var deskjs=require(_0x4313('0xf'));var toCsv=require(_0x4313('0x9'));var querystring=require(_0x4313('0x10'));var Papa=require(_0x4313('0x11'));var Redis=require(_0x4313('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x4313('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4313('0x14'));var logger=require(_0x4313('0x15'))(_0x4313('0x16'));var utils=require('../../config/utils');var config=require(_0x4313('0x17'));var licenseUtil=require(_0x4313('0x18'));var db=require(_0x4313('0x19'))['db'];config[_0x4313('0x1a')]=_['defaults'](config[_0x4313('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x4313('0x1b'))(new Redis(config[_0x4313('0x1a')]));require(_0x4313('0x1c'))[_0x4313('0x1d')](socket);var jayson=require(_0x4313('0x1e'));var client=jayson[_0x4313('0x1f')]['http']({'port':0x232c});var client9002=jayson[_0x4313('0x1f')][_0x4313('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x282f98,_0x5bb7d2,_0x3e94ae,_0x2382f1){return new BPromise(function(_0x6e4f9b,_0x11c95f){var _0x30dd06=_0x2382f1||client;return _0x30dd06[_0x4313('0x21')](_0x282f98,_0x3e94ae)['then'](function(_0x5857c3){logger[_0x4313('0x22')](_0x4313('0x23'),_0x5bb7d2,_0x4313('0x24'));logger[_0x4313('0x25')]('FaxMessage,\x20%s,\x20%s,\x20%s',_0x5bb7d2,'request\x20sent',JSON[_0x4313('0x26')](_0x5857c3));if(_0x5857c3['error']){if(_0x5857c3[_0x4313('0x27')][_0x4313('0x28')]===0x1f4){logger[_0x4313('0x27')]('FaxMessage,\x20%s,\x20%s',_0x5bb7d2,_0x5857c3[_0x4313('0x27')]['message']);return _0x11c95f(_0x5857c3[_0x4313('0x27')][_0x4313('0x29')]);}logger[_0x4313('0x27')](_0x4313('0x23'),_0x5bb7d2,_0x5857c3['error'][_0x4313('0x29')]);return _0x6e4f9b(_0x5857c3[_0x4313('0x27')]['message']);}else{logger[_0x4313('0x22')]('FaxMessage,\x20%s,\x20%s',_0x5bb7d2,_0x4313('0x24'));_0x6e4f9b(_0x5857c3[_0x4313('0x2a')][_0x4313('0x29')]);}})[_0x4313('0x2b')](function(_0x301790){logger[_0x4313('0x27')](_0x4313('0x23'),_0x5bb7d2,_0x301790);_0x11c95f(_0x301790);});});}function respondWithStatusCode(_0x1e551d,_0x34d64){_0x34d64=_0x34d64||0xcc;return function(_0x59864b){if(_0x59864b){return _0x1e551d[_0x4313('0x2c')](_0x34d64);}return _0x1e551d['status'](_0x34d64)[_0x4313('0x2d')]();};}function respondWithResult(_0x779c33,_0x3bd38a){_0x3bd38a=_0x3bd38a||0xc8;return function(_0x1625ea){if(_0x1625ea){return _0x779c33[_0x4313('0x2e')](_0x3bd38a)[_0x4313('0x2f')](_0x1625ea);}};}function respondWithFilteredResult(_0x4b2d34,_0x434280){return function(_0x1b4de0){if(_0x1b4de0){var _0x4f5e78=typeof _0x434280[_0x4313('0x30')]===_0x4313('0x31')&&typeof _0x434280[_0x4313('0x32')]===_0x4313('0x31');var _0x2b0b9a=_0x1b4de0[_0x4313('0x33')];var _0x2f7b8f=_0x4f5e78?0x0:_0x434280[_0x4313('0x30')];var _0x35fed2=_0x4f5e78?_0x1b4de0[_0x4313('0x33')]:_0x434280[_0x4313('0x30')]+_0x434280[_0x4313('0x32')];var _0xbbfff5;if(_0x35fed2>=_0x2b0b9a){_0x35fed2=_0x2b0b9a;_0xbbfff5=0xc8;}else{_0xbbfff5=0xce;}_0x4b2d34[_0x4313('0x2e')](_0xbbfff5);return _0x4b2d34[_0x4313('0x34')](_0x4313('0x35'),_0x2f7b8f+'-'+_0x35fed2+'/'+_0x2b0b9a)['json'](_0x1b4de0);}return null;};}function patchUpdates(_0x1a239a){return function(_0x4b22d6){try{jsonpatch[_0x4313('0x36')](_0x4b22d6,_0x1a239a,!![]);}catch(_0xe4a7b6){return BPromise[_0x4313('0x37')](_0xe4a7b6);}return _0x4b22d6['save']();};}function saveUpdates(_0x29e82a,_0x22a715){return function(_0x299927){if(_0x299927){return _0x299927['update'](_0x29e82a)[_0x4313('0x38')](function(_0x552c04){return _0x552c04;});}return null;};}function removeEntity(_0x7e1ae4,_0x125a9a){return function(_0xb61139){if(_0xb61139){return _0xb61139[_0x4313('0x39')]()[_0x4313('0x38')](function(){_0x7e1ae4[_0x4313('0x2e')](0xcc)[_0x4313('0x2d')]();});}};}function handleEntityNotFound(_0x339369,_0x3d0c08){return function(_0x189a8a){if(!_0x189a8a){_0x339369[_0x4313('0x2c')](0x194);}return _0x189a8a;};}function handleError(_0x4c664e,_0xf6c219){_0xf6c219=_0xf6c219||0x1f4;return function(_0x1e1cdd){logger[_0x4313('0x27')](_0x1e1cdd['stack']);if(_0x1e1cdd[_0x4313('0x3a')]){delete _0x1e1cdd[_0x4313('0x3a')];}_0x4c664e[_0x4313('0x2e')](_0xf6c219)[_0x4313('0x3b')](_0x1e1cdd);};}exports[_0x4313('0x3c')]=function(_0x34c59e,_0x11d6a0){var _0x5af028={},_0x2a52aa={},_0x443f74={'count':0x0,'rows':[]};var _0x4a3970=_[_0x4313('0x3d')](db[_0x4313('0x3e')][_0x4313('0x3f')],function(_0x2c1291){return{'name':_0x2c1291[_0x4313('0x40')],'type':_0x2c1291[_0x4313('0x41')][_0x4313('0x42')]};});_0x2a52aa['model']=_[_0x4313('0x3d')](_0x4a3970,_0x4313('0x3a'));_0x2a52aa['query']=_[_0x4313('0x43')](_0x34c59e[_0x4313('0x44')]);_0x2a52aa[_0x4313('0x45')]=_[_0x4313('0x46')](_0x2a52aa[_0x4313('0x47')],_0x2a52aa[_0x4313('0x44')]);_0x5af028[_0x4313('0x48')]=_[_0x4313('0x46')](_0x2a52aa[_0x4313('0x47')],qs[_0x4313('0x49')](_0x34c59e[_0x4313('0x44')][_0x4313('0x49')]));_0x5af028['attributes']=_0x5af028[_0x4313('0x48')][_0x4313('0x4a')]?_0x5af028['attributes']:_0x2a52aa[_0x4313('0x47')];if(!_0x34c59e[_0x4313('0x44')]['hasOwnProperty'](_0x4313('0x4b'))){_0x5af028[_0x4313('0x32')]=qs['limit'](_0x34c59e['query'][_0x4313('0x32')]);_0x5af028[_0x4313('0x30')]=qs['offset'](_0x34c59e[_0x4313('0x44')][_0x4313('0x30')]);}_0x5af028[_0x4313('0x4c')]=qs[_0x4313('0x4d')](_0x34c59e[_0x4313('0x44')][_0x4313('0x4d')]);_0x5af028['where']=qs['filters'](_[_0x4313('0x4e')](_0x34c59e[_0x4313('0x44')],_0x2a52aa[_0x4313('0x45')]),_0x4a3970);if(_0x34c59e[_0x4313('0x44')]['filter']){_0x5af028[_0x4313('0x4f')]=_['merge'](_0x5af028[_0x4313('0x4f')],{'$or':_[_0x4313('0x3d')](_0x4a3970,function(_0x394aff){if(_0x394aff[_0x4313('0x41')]!==_0x4313('0x50')){var _0x2ff0b1={};_0x2ff0b1[_0x394aff[_0x4313('0x3a')]]={'$like':'%'+_0x34c59e[_0x4313('0x44')][_0x4313('0x51')]+'%'};return _0x2ff0b1;}})});}_0x5af028=_[_0x4313('0x52')]({},_0x5af028,_0x34c59e[_0x4313('0x53')]);var _0x3faca2={'where':_0x5af028[_0x4313('0x4f')]};return db[_0x4313('0x3e')]['count'](_0x3faca2)['then'](function(_0x5cb1d8){_0x443f74['count']=_0x5cb1d8;if(_0x34c59e['query'][_0x4313('0x54')]){_0x5af028[_0x4313('0x55')]=[{'all':!![]}];}return db[_0x4313('0x3e')][_0x4313('0x56')](_0x5af028);})[_0x4313('0x38')](function(_0x731ff0){_0x443f74['rows']=_0x731ff0;return _0x443f74;})[_0x4313('0x38')](respondWithFilteredResult(_0x11d6a0,_0x5af028))[_0x4313('0x2b')](handleError(_0x11d6a0,null));};exports[_0x4313('0x57')]=function(_0x1a4277,_0x2889ec){var _0x52a8c3={'raw':!![],'where':{'id':_0x1a4277[_0x4313('0x58')]['id']}},_0x3fdea1={};_0x3fdea1[_0x4313('0x47')]=_[_0x4313('0x43')](db[_0x4313('0x3e')]['rawAttributes']);_0x3fdea1['query']=_[_0x4313('0x43')](_0x1a4277['query']);_0x3fdea1[_0x4313('0x45')]=_[_0x4313('0x46')](_0x3fdea1[_0x4313('0x47')],_0x3fdea1[_0x4313('0x44')]);_0x52a8c3[_0x4313('0x48')]=_[_0x4313('0x46')](_0x3fdea1[_0x4313('0x47')],qs[_0x4313('0x49')](_0x1a4277['query'][_0x4313('0x49')]));_0x52a8c3[_0x4313('0x48')]=_0x52a8c3[_0x4313('0x48')][_0x4313('0x4a')]?_0x52a8c3['attributes']:_0x3fdea1[_0x4313('0x47')];if(_0x1a4277[_0x4313('0x44')][_0x4313('0x54')]){_0x52a8c3[_0x4313('0x55')]=[{'all':!![]}];}_0x52a8c3=_[_0x4313('0x52')]({},_0x52a8c3,_0x1a4277['options']);return db[_0x4313('0x3e')]['find'](_0x52a8c3)[_0x4313('0x38')](handleEntityNotFound(_0x2889ec,null))['then'](respondWithResult(_0x2889ec,null))['catch'](handleError(_0x2889ec,null));};exports['update']=function(_0x935cc0,_0x17a72b){if(_0x935cc0['body']['id']){delete _0x935cc0[_0x4313('0x59')]['id'];}return db['FaxMessage'][_0x4313('0x5a')]({'where':{'id':_0x935cc0[_0x4313('0x58')]['id']}})[_0x4313('0x38')](handleEntityNotFound(_0x17a72b,null))[_0x4313('0x38')](saveUpdates(_0x935cc0['body'],null))['then'](respondWithResult(_0x17a72b,null))[_0x4313('0x2b')](handleError(_0x17a72b,null));};exports[_0x4313('0x39')]=function(_0x1b4ff1,_0x3a3632){return db[_0x4313('0x3e')][_0x4313('0x5a')]({'where':{'id':_0x1b4ff1[_0x4313('0x58')]['id']}})['then'](handleEntityNotFound(_0x3a3632,null))[_0x4313('0x38')](removeEntity(_0x3a3632,null))['catch'](handleError(_0x3a3632,null));};exports[_0x4313('0x5b')]=function(_0x5e9232,_0x95717e){return db[_0x4313('0x3e')][_0x4313('0x5b')]()[_0x4313('0x38')](respondWithResult(_0x95717e,null))[_0x4313('0x2b')](handleError(_0x95717e,null));};var interaction_log=require('../../config/logger')(_0x4313('0x5c'));exports[_0x4313('0x5d')]=function(_0x503012,_0x2ca6fd,_0x4b3b23){var _0xd091b4={'agent':{},'channel':_0x4313('0x5e')};if(_0x503012[_0x4313('0x59')]['id']){delete _0x503012['body']['id'];}_0x503012[_0x4313('0x59')][_0x4313('0x5f')]=!![];_0x503012[_0x4313('0x59')][_0x4313('0x60')]=moment()[_0x4313('0x61')](_0x4313('0x62'));_0x503012[_0x4313('0x59')]['UserId']=_0x503012[_0x4313('0x59')][_0x4313('0x63')]||_0x503012[_0x4313('0x64')]['id'];_0xd091b4[_0x4313('0x65')]['id']=_0x503012['body']['UserId'];return db[_0x4313('0x3e')][_0x4313('0x5a')]({'where':{'id':_0x503012[_0x4313('0x58')]['id'],'UserId':null}})[_0x4313('0x38')](handleEntityNotFound(_0x2ca6fd,null))[_0x4313('0x38')](saveUpdates(_0x503012[_0x4313('0x59')],null))[_0x4313('0x38')](function(_0x515573){if(_0x515573){_0xd091b4[_0x4313('0x29')]=_0x515573[_0x4313('0x66')]({'plain':!![]});return db[_0x4313('0x67')]['find']({'where':{'id':_0x515573[_0x4313('0x68')]}});}return null;})[_0x4313('0x38')](handleEntityNotFound(_0x2ca6fd,null))[_0x4313('0x38')](function(_0x13a32a){if(_0x13a32a){return _0x13a32a[_0x4313('0x69')]({'UserId':_0x503012['body']['UserId'],'read1stAt':_[_0x4313('0x6a')](_0x13a32a[_0x4313('0x6b')])?moment()[_0x4313('0x61')](_0x4313('0x62')):undefined});}return null;})[_0x4313('0x38')](function(_0x1fe530){if(_0x1fe530){_0xd091b4[_0x4313('0x6c')]=_0x1fe530['get']({'plain':!![]});interaction_log['info'](_0x4313('0x6d'),_0x503012[_0x4313('0x64')]['id'],_0x503012['user'][_0x4313('0x3a')],_0x503012[_0x4313('0x64')][_0x4313('0x6e')],_0xd091b4[_0x4313('0x6c')]['id'],_0x503012[_0x4313('0x59')]?JSON[_0x4313('0x26')](_0x503012[_0x4313('0x59')]):_0x4313('0x6f'));return respondWithRpcPromise(_0x4313('0x70'),_0x4313('0x71'),_0xd091b4);}return null;})[_0x4313('0x38')](function(_0x206eee){var _0x2f4af8=_0x4313('0x72')+_0x206eee[_0x4313('0x29')][_0x4313('0x73')];return db[_0x4313('0x74')]['query'](_0x2f4af8,{'type':db[_0x4313('0x75')][_0x4313('0x76')]['SELECT'],'raw':!![]})[_0x4313('0x38')](function(_0x2ecd8e){return _0x2ecd8e;});})[_0x4313('0x38')](function(_0x2b4b95){if(_0x2b4b95){_0xd091b4[_0x4313('0x29')][_0x4313('0x77')]=_0x2b4b95[0x0];if(!_0x503012[_0x4313('0x59')]['UserId'])return;return db['User'][_0x4313('0x5a')]({'where':{'id':_0x503012[_0x4313('0x59')][_0x4313('0x63')],'role':_0x4313('0x65')},'attributes':['id','name',_0x4313('0x78'),_0x4313('0x79'),_0x4313('0x7a')],'raw':!![]});}return null;})[_0x4313('0x38')](function(_0x17baed){if(!_0x17baed)return null;_0xd091b4['message'][_0x4313('0x65')]=_0x17baed;return _0xd091b4;})[_0x4313('0x38')](function(_0x87fb06){if(_0x87fb06){if(_0x503012[_0x4313('0x59')][_0x4313('0x7b')]){_0xd091b4[_0x4313('0x29')][_0x4313('0x7c')]=util[_0x4313('0x61')](_0x4313('0x7d'),_0x503012[_0x4313('0x64')]['name']);_0xd091b4['message']['channel']=_0xd091b4[_0x4313('0x7e')];_0xd091b4['message'][_0x4313('0x7f')]=_0xd091b4[_0x4313('0x7e')];_0xd091b4['message'][_0x4313('0x80')]=_0x4313('0x5d');return respondWithRpcPromise(_0x4313('0x81'),_0x4313('0x81'),{'event':_0x4313('0x82'),'message':_0xd091b4[_0x4313('0x29')]},client9002)[_0x4313('0x38')](function(){return _0xd091b4;});}return _0xd091b4;}return null;})[_0x4313('0x38')](respondWithResult(_0x2ca6fd,null))[_0x4313('0x2b')](handleError(_0x2ca6fd,null));};var interaction_log=require('../../config/logger')(_0x4313('0x5c'));exports[_0x4313('0x37')]=function(_0x2ec9c1,_0x1989b8,_0x204f98){var _0x1534f8={'agent':{},'channel':_0x4313('0x5e')};if(_0x2ec9c1[_0x4313('0x59')]['id']){delete _0x2ec9c1['body']['id'];}_0x2ec9c1[_0x4313('0x59')]['UserId']=_0x2ec9c1[_0x4313('0x59')][_0x4313('0x63')]||_0x2ec9c1[_0x4313('0x64')]['id'];_0x1534f8[_0x4313('0x65')]['id']=_0x2ec9c1[_0x4313('0x59')]['UserId'];return db[_0x4313('0x3e')][_0x4313('0x5a')]({'where':{'id':_0x2ec9c1[_0x4313('0x58')]['id'],'UserId':null}})[_0x4313('0x38')](handleEntityNotFound(_0x1989b8,null))['then'](function(_0x2221dd){if(_0x2221dd){_0x1534f8['message']=_0x2221dd[_0x4313('0x66')]({'plain':!![]});return db[_0x4313('0x67')][_0x4313('0x5a')]({'where':{'id':_0x2221dd[_0x4313('0x68')]}});}return null;})[_0x4313('0x38')](handleEntityNotFound(_0x1989b8,null))['then'](function(_0x26bd50){if(_0x26bd50){_0x1534f8['interaction']=_0x26bd50[_0x4313('0x66')]({'plain':!![]});interaction_log['info']('[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x2ec9c1[_0x4313('0x64')]['id'],_0x2ec9c1[_0x4313('0x64')]['name'],_0x2ec9c1['user'][_0x4313('0x6e')],_0x1534f8[_0x4313('0x6c')]['id'],_0x2ec9c1['body']?JSON['stringify'](_0x2ec9c1[_0x4313('0x59')]):_0x4313('0x6f'));return respondWithRpcPromise(_0x4313('0x83'),_0x4313('0x84'),_0x1534f8);}return null;})['then'](function(_0x14f6c9){var _0x13e926=_0x4313('0x72')+_0x14f6c9['message']['ContactId'];return db[_0x4313('0x74')][_0x4313('0x44')](_0x13e926,{'type':db[_0x4313('0x75')][_0x4313('0x76')][_0x4313('0x85')],'raw':!![]})['then'](function(_0x154be8){return _0x154be8;});})[_0x4313('0x38')](function(_0x4de8a3){if(_0x4de8a3){_0x1534f8[_0x4313('0x29')]['contact']=_0x4de8a3[0x0];if(!_0x2ec9c1[_0x4313('0x59')][_0x4313('0x63')])return;return db[_0x4313('0x86')][_0x4313('0x5a')]({'where':{'id':_0x2ec9c1['body']['UserId'],'role':'agent'},'attributes':['id',_0x4313('0x3a'),'fullname',_0x4313('0x79'),_0x4313('0x7a')],'raw':!![]});}return null;})[_0x4313('0x38')](function(_0x4e2ce0){if(!_0x4e2ce0)return null;_0x1534f8['message'][_0x4313('0x65')]=_0x4e2ce0;return _0x1534f8;})[_0x4313('0x38')](function(_0x3bb988){if(_0x3bb988){_0x3bb988[_0x4313('0x29')][_0x4313('0x7c')]=util['format'](_0x4313('0x7d'),_0x2ec9c1['user']['name']);_0x3bb988[_0x4313('0x29')][_0x4313('0x7e')]=_0x1534f8['channel'];_0x3bb988[_0x4313('0x29')][_0x4313('0x7f')]=_0x1534f8[_0x4313('0x7e')];_0x3bb988[_0x4313('0x29')][_0x4313('0x80')]='reject';respondWithRpcPromise(_0x4313('0x81'),_0x4313('0x81'),{'event':_0x4313('0x87'),'message':_0x3bb988[_0x4313('0x29')]},client9002);return _0x1534f8;}return null;})[_0x4313('0x38')](respondWithResult(_0x1989b8,null))[_0x4313('0x2b')](handleError(_0x1989b8,null));};exports[_0x4313('0x88')]=function(_0x57d6a1,_0x9620da){var _0x152d1a;return db[_0x4313('0x3e')][_0x4313('0x88')](_0x57d6a1[_0x4313('0x59')],{})[_0x4313('0x38')](function(_0x2523c3){_0x152d1a=_0x2523c3;return db['CmContact']['findOne']({'where':{'id':_0x152d1a['ContactId']}});})[_0x4313('0x38')](function(_0x1c1548){if(_[_0x4313('0x6a')](_0x1c1548)){return;}else{_0x152d1a[_0x4313('0x5e')]=_0x1c1548[_0x4313('0x5e')];return db[_0x4313('0x89')][_0x4313('0x8a')]({'where':{'id':_0x152d1a[_0x4313('0x8b')]}});}})[_0x4313('0x38')](function(_0x12b6bf){return respondWithRpcPromise(_0x4313('0x8c'),_0x4313('0x8c'),{'FaxAccountId':_[_0x4313('0x6a')](_0x57d6a1[_0x4313('0x59')])?undefined:_0x57d6a1[_0x4313('0x59')][_0x4313('0x8d')],'path':_[_0x4313('0x6a')](_0x12b6bf)?undefined:util[_0x4313('0x61')](_0x4313('0x8e'),_0x12b6bf[_0x4313('0x8f')]),'fax':_[_0x4313('0x6a')](_0x152d1a[_0x4313('0x5e')])?undefined:_0x152d1a['fax'],'AttachmentId':_0x152d1a['AttachmentId']},client9002);})[_0x4313('0x38')](respondWithResult(_0x9620da,0xc9))['catch'](handleError(_0x9620da,null));};exports['download']=function(_0x321d57,_0x57a3e4){var _0x43841e=path[_0x4313('0x90')](config[_0x4313('0x91')],'server','files',_0x4313('0x92'));return db[_0x4313('0x3e')][_0x4313('0x5a')]({'where':{'id':_0x321d57[_0x4313('0x58')]['id']},'include':[{'model':db[_0x4313('0x89')],'as':'Attachment'}]})[_0x4313('0x38')](handleEntityNotFound(_0x57a3e4,null))[_0x4313('0x38')](function(_0x249b34){if(_0x249b34){return _0x57a3e4['download'](path[_0x4313('0x90')](_0x43841e,_0x249b34[_0x4313('0x89')][_0x4313('0x8f')]));}})['catch'](handleError(_0x57a3e4,null));};
\ No newline at end of file
+var _0x20ad=['FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','status','end','json','offset','undefined','set','apply','reject','save','update','destroy','name','send','index','rawAttributes','model','query','keys','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','where','pick','filter','map','type','VIRTUAL','merge','options','FaxMessage','count','includeAll','findAll','rows','params','include','find','body','describe','fax-interactions','accept','fax','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','interaction','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','channel','event','EventManager','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','Sequelize','SIP/%s','motionChannel','create','CmContact','findOne','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','files','Attachment','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./faxMessage.socket','register','client','http','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x14a34a,_0x424129){var _0x4d921e=function(_0x1982be){while(--_0x1982be){_0x14a34a['push'](_0x14a34a['shift']());}};_0x4d921e(++_0x424129);}(_0x20ad,0x66));var _0xd20a=function(_0xdc37a1,_0x53ebb9){_0xdc37a1=_0xdc37a1-0x0;var _0x99b4fe=_0x20ad[_0xdc37a1];return _0x99b4fe;};'use strict';var emlformat=require(_0xd20a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd20a('0x1'));var jsonpatch=require(_0xd20a('0x2'));var rp=require(_0xd20a('0x3'));var moment=require(_0xd20a('0x4'));var BPromise=require(_0xd20a('0x5'));var Mustache=require('mustache');var util=require(_0xd20a('0x6'));var path=require(_0xd20a('0x7'));var sox=require('sox');var csv=require(_0xd20a('0x8'));var ejs=require(_0xd20a('0x9'));var fs=require('fs');var fs_extra=require(_0xd20a('0xa'));var _=require(_0xd20a('0xb'));var squel=require(_0xd20a('0xc'));var crypto=require(_0xd20a('0xd'));var jsforce=require(_0xd20a('0xe'));var deskjs=require(_0xd20a('0xf'));var toCsv=require('to-csv');var querystring=require(_0xd20a('0x10'));var Papa=require(_0xd20a('0x11'));var Redis=require(_0xd20a('0x12'));var authService=require(_0xd20a('0x13'));var qs=require(_0xd20a('0x14'));var as=require(_0xd20a('0x15'));var hardwareService=require(_0xd20a('0x16'));var logger=require(_0xd20a('0x17'))('api');var utils=require('../../config/utils');var config=require(_0xd20a('0x18'));var licenseUtil=require(_0xd20a('0x19'));var db=require(_0xd20a('0x1a'))['db'];config[_0xd20a('0x1b')]=_[_0xd20a('0x1c')](config['redis'],{'host':_0xd20a('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd20a('0x1b')]));require(_0xd20a('0x1e'))[_0xd20a('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson[_0xd20a('0x20')][_0xd20a('0x21')]({'port':0x232c});var client9002=jayson[_0xd20a('0x20')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1b16db,_0x41c2cd,_0x2227b5,_0x3fa6a7){return new BPromise(function(_0x4c895d,_0x3031ae){var _0x19bb39=_0x3fa6a7||client;return _0x19bb39[_0xd20a('0x22')](_0x1b16db,_0x2227b5)[_0xd20a('0x23')](function(_0x14783b){logger[_0xd20a('0x24')](_0xd20a('0x25'),_0x41c2cd,_0xd20a('0x26'));logger[_0xd20a('0x27')](_0xd20a('0x28'),_0x41c2cd,_0xd20a('0x26'),JSON[_0xd20a('0x29')](_0x14783b));if(_0x14783b[_0xd20a('0x2a')]){if(_0x14783b[_0xd20a('0x2a')]['code']===0x1f4){logger['error']('FaxMessage,\x20%s,\x20%s',_0x41c2cd,_0x14783b[_0xd20a('0x2a')]['message']);return _0x3031ae(_0x14783b[_0xd20a('0x2a')]['message']);}logger[_0xd20a('0x2a')](_0xd20a('0x25'),_0x41c2cd,_0x14783b[_0xd20a('0x2a')][_0xd20a('0x2b')]);return _0x4c895d(_0x14783b[_0xd20a('0x2a')]['message']);}else{logger[_0xd20a('0x24')]('FaxMessage,\x20%s,\x20%s',_0x41c2cd,_0xd20a('0x26'));_0x4c895d(_0x14783b[_0xd20a('0x2c')][_0xd20a('0x2b')]);}})[_0xd20a('0x2d')](function(_0x44063e){logger[_0xd20a('0x2a')](_0xd20a('0x25'),_0x41c2cd,_0x44063e);_0x3031ae(_0x44063e);});});}function respondWithStatusCode(_0x3efda9,_0x2b44dc){_0x2b44dc=_0x2b44dc||0xcc;return function(_0x79564b){if(_0x79564b){return _0x3efda9['sendStatus'](_0x2b44dc);}return _0x3efda9[_0xd20a('0x2e')](_0x2b44dc)[_0xd20a('0x2f')]();};}function respondWithResult(_0xf0673f,_0x151c99){_0x151c99=_0x151c99||0xc8;return function(_0xf1cc72){if(_0xf1cc72){return _0xf0673f[_0xd20a('0x2e')](_0x151c99)[_0xd20a('0x30')](_0xf1cc72);}};}function respondWithFilteredResult(_0x1bcd6a,_0x52da7e){return function(_0x190dce){if(_0x190dce){var _0x44b627=typeof _0x52da7e[_0xd20a('0x31')]===_0xd20a('0x32')&&typeof _0x52da7e['limit']==='undefined';var _0x3bc21c=_0x190dce['count'];var _0x541f97=_0x44b627?0x0:_0x52da7e[_0xd20a('0x31')];var _0x56b8d9=_0x44b627?_0x190dce['count']:_0x52da7e[_0xd20a('0x31')]+_0x52da7e['limit'];var _0x540173;if(_0x56b8d9>=_0x3bc21c){_0x56b8d9=_0x3bc21c;_0x540173=0xc8;}else{_0x540173=0xce;}_0x1bcd6a[_0xd20a('0x2e')](_0x540173);return _0x1bcd6a[_0xd20a('0x33')]('Content-Range',_0x541f97+'-'+_0x56b8d9+'/'+_0x3bc21c)[_0xd20a('0x30')](_0x190dce);}return null;};}function patchUpdates(_0x397593){return function(_0xfd9be7){try{jsonpatch[_0xd20a('0x34')](_0xfd9be7,_0x397593,!![]);}catch(_0x4e7381){return BPromise[_0xd20a('0x35')](_0x4e7381);}return _0xfd9be7[_0xd20a('0x36')]();};}function saveUpdates(_0x447509,_0x30021f){return function(_0x14494){if(_0x14494){return _0x14494[_0xd20a('0x37')](_0x447509)[_0xd20a('0x23')](function(_0x17f067){return _0x17f067;});}return null;};}function removeEntity(_0x4fcae4,_0x5cb4d9){return function(_0x2a0a0a){if(_0x2a0a0a){return _0x2a0a0a[_0xd20a('0x38')]()['then'](function(){_0x4fcae4[_0xd20a('0x2e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x18211d,_0x32bfa3){return function(_0x2aab01){if(!_0x2aab01){_0x18211d['sendStatus'](0x194);}return _0x2aab01;};}function handleError(_0x5ba24e,_0x2526ef){_0x2526ef=_0x2526ef||0x1f4;return function(_0xd629bc){logger['error'](_0xd629bc['stack']);if(_0xd629bc[_0xd20a('0x39')]){delete _0xd629bc[_0xd20a('0x39')];}_0x5ba24e[_0xd20a('0x2e')](_0x2526ef)[_0xd20a('0x3a')](_0xd629bc);};}exports[_0xd20a('0x3b')]=function(_0x4cb27b,_0x554265){var _0x3fe6d3={},_0x2365c9={},_0x4eee39={'count':0x0,'rows':[]};var _0x49600a=_['map'](db['FaxMessage'][_0xd20a('0x3c')],function(_0x1043db){return{'name':_0x1043db['fieldName'],'type':_0x1043db['type']['key']};});_0x2365c9[_0xd20a('0x3d')]=_['map'](_0x49600a,'name');_0x2365c9[_0xd20a('0x3e')]=_[_0xd20a('0x3f')](_0x4cb27b['query']);_0x2365c9[_0xd20a('0x40')]=_[_0xd20a('0x41')](_0x2365c9[_0xd20a('0x3d')],_0x2365c9[_0xd20a('0x3e')]);_0x3fe6d3[_0xd20a('0x42')]=_[_0xd20a('0x41')](_0x2365c9[_0xd20a('0x3d')],qs[_0xd20a('0x43')](_0x4cb27b[_0xd20a('0x3e')][_0xd20a('0x43')]));_0x3fe6d3[_0xd20a('0x42')]=_0x3fe6d3[_0xd20a('0x42')][_0xd20a('0x44')]?_0x3fe6d3[_0xd20a('0x42')]:_0x2365c9[_0xd20a('0x3d')];if(!_0x4cb27b[_0xd20a('0x3e')]['hasOwnProperty'](_0xd20a('0x45'))){_0x3fe6d3[_0xd20a('0x46')]=qs[_0xd20a('0x46')](_0x4cb27b['query'][_0xd20a('0x46')]);_0x3fe6d3[_0xd20a('0x31')]=qs[_0xd20a('0x31')](_0x4cb27b[_0xd20a('0x3e')][_0xd20a('0x31')]);}_0x3fe6d3[_0xd20a('0x47')]=qs[_0xd20a('0x48')](_0x4cb27b[_0xd20a('0x3e')][_0xd20a('0x48')]);_0x3fe6d3[_0xd20a('0x49')]=qs['filters'](_[_0xd20a('0x4a')](_0x4cb27b['query'],_0x2365c9[_0xd20a('0x40')]),_0x49600a);if(_0x4cb27b[_0xd20a('0x3e')][_0xd20a('0x4b')]){_0x3fe6d3[_0xd20a('0x49')]=_['merge'](_0x3fe6d3['where'],{'$or':_[_0xd20a('0x4c')](_0x49600a,function(_0xe55bad){if(_0xe55bad[_0xd20a('0x4d')]!==_0xd20a('0x4e')){var _0x12a724={};_0x12a724[_0xe55bad['name']]={'$like':'%'+_0x4cb27b[_0xd20a('0x3e')]['filter']+'%'};return _0x12a724;}})});}_0x3fe6d3=_[_0xd20a('0x4f')]({},_0x3fe6d3,_0x4cb27b[_0xd20a('0x50')]);var _0x59830e={'where':_0x3fe6d3['where']};return db[_0xd20a('0x51')][_0xd20a('0x52')](_0x59830e)['then'](function(_0x32be52){_0x4eee39[_0xd20a('0x52')]=_0x32be52;if(_0x4cb27b[_0xd20a('0x3e')][_0xd20a('0x53')]){_0x3fe6d3['include']=[{'all':!![]}];}return db['FaxMessage'][_0xd20a('0x54')](_0x3fe6d3);})[_0xd20a('0x23')](function(_0x4e8709){_0x4eee39[_0xd20a('0x55')]=_0x4e8709;return _0x4eee39;})[_0xd20a('0x23')](respondWithFilteredResult(_0x554265,_0x3fe6d3))[_0xd20a('0x2d')](handleError(_0x554265,null));};exports['show']=function(_0x17e3c9,_0x4fe498){var _0x58fade={'raw':!![],'where':{'id':_0x17e3c9[_0xd20a('0x56')]['id']}},_0x1abdd5={};_0x1abdd5[_0xd20a('0x3d')]=_[_0xd20a('0x3f')](db[_0xd20a('0x51')][_0xd20a('0x3c')]);_0x1abdd5[_0xd20a('0x3e')]=_['keys'](_0x17e3c9[_0xd20a('0x3e')]);_0x1abdd5[_0xd20a('0x40')]=_['intersection'](_0x1abdd5[_0xd20a('0x3d')],_0x1abdd5[_0xd20a('0x3e')]);_0x58fade[_0xd20a('0x42')]=_[_0xd20a('0x41')](_0x1abdd5['model'],qs[_0xd20a('0x43')](_0x17e3c9[_0xd20a('0x3e')][_0xd20a('0x43')]));_0x58fade['attributes']=_0x58fade['attributes'][_0xd20a('0x44')]?_0x58fade['attributes']:_0x1abdd5[_0xd20a('0x3d')];if(_0x17e3c9[_0xd20a('0x3e')][_0xd20a('0x53')]){_0x58fade[_0xd20a('0x57')]=[{'all':!![]}];}_0x58fade=_[_0xd20a('0x4f')]({},_0x58fade,_0x17e3c9[_0xd20a('0x50')]);return db[_0xd20a('0x51')][_0xd20a('0x58')](_0x58fade)[_0xd20a('0x23')](handleEntityNotFound(_0x4fe498,null))['then'](respondWithResult(_0x4fe498,null))[_0xd20a('0x2d')](handleError(_0x4fe498,null));};exports[_0xd20a('0x37')]=function(_0x278f87,_0x56d4e8){if(_0x278f87[_0xd20a('0x59')]['id']){delete _0x278f87[_0xd20a('0x59')]['id'];}return db[_0xd20a('0x51')][_0xd20a('0x58')]({'where':{'id':_0x278f87['params']['id']}})[_0xd20a('0x23')](handleEntityNotFound(_0x56d4e8,null))[_0xd20a('0x23')](saveUpdates(_0x278f87[_0xd20a('0x59')],null))[_0xd20a('0x23')](respondWithResult(_0x56d4e8,null))[_0xd20a('0x2d')](handleError(_0x56d4e8,null));};exports[_0xd20a('0x38')]=function(_0x2148d7,_0x3be280){return db['FaxMessage'][_0xd20a('0x58')]({'where':{'id':_0x2148d7[_0xd20a('0x56')]['id']}})[_0xd20a('0x23')](handleEntityNotFound(_0x3be280,null))[_0xd20a('0x23')](removeEntity(_0x3be280,null))[_0xd20a('0x2d')](handleError(_0x3be280,null));};exports['describe']=function(_0x2d2dd5,_0x2d1f72){return db[_0xd20a('0x51')][_0xd20a('0x5a')]()[_0xd20a('0x23')](respondWithResult(_0x2d1f72,null))[_0xd20a('0x2d')](handleError(_0x2d1f72,null));};var interaction_log=require(_0xd20a('0x17'))(_0xd20a('0x5b'));exports[_0xd20a('0x5c')]=function(_0x1e392b,_0x1a8366,_0x422b63){var _0x12076b={'agent':{},'channel':_0xd20a('0x5d')};if(_0x1e392b[_0xd20a('0x59')]['id']){delete _0x1e392b[_0xd20a('0x59')]['id'];}_0x1e392b[_0xd20a('0x59')]['read']=!![];_0x1e392b['body'][_0xd20a('0x5e')]=moment()[_0xd20a('0x5f')](_0xd20a('0x60'));_0x1e392b['body'][_0xd20a('0x61')]=_0x1e392b[_0xd20a('0x59')][_0xd20a('0x61')]||_0x1e392b[_0xd20a('0x62')]['id'];_0x12076b[_0xd20a('0x63')]['id']=_0x1e392b['body'][_0xd20a('0x61')];return db[_0xd20a('0x51')][_0xd20a('0x58')]({'where':{'id':_0x1e392b[_0xd20a('0x56')]['id'],'UserId':null}})[_0xd20a('0x23')](handleEntityNotFound(_0x1a8366,null))[_0xd20a('0x23')](saveUpdates(_0x1e392b[_0xd20a('0x59')],null))[_0xd20a('0x23')](function(_0x154327){if(_0x154327){_0x12076b[_0xd20a('0x2b')]=_0x154327[_0xd20a('0x64')]({'plain':!![]});return db[_0xd20a('0x65')][_0xd20a('0x58')]({'where':{'id':_0x154327[_0xd20a('0x66')]}});}return null;})[_0xd20a('0x23')](handleEntityNotFound(_0x1a8366,null))['then'](function(_0x1b4b00){if(_0x1b4b00){return _0x1b4b00['update']({'UserId':_0x1e392b[_0xd20a('0x59')][_0xd20a('0x61')],'read1stAt':_[_0xd20a('0x67')](_0x1b4b00[_0xd20a('0x68')])?moment()[_0xd20a('0x5f')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x57d38c){if(_0x57d38c){_0x12076b[_0xd20a('0x69')]=_0x57d38c[_0xd20a('0x64')]({'plain':!![]});interaction_log[_0xd20a('0x24')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1e392b[_0xd20a('0x62')]['id'],_0x1e392b['user'][_0xd20a('0x39')],_0x1e392b['user'][_0xd20a('0x6a')],_0x12076b[_0xd20a('0x69')]['id'],_0x1e392b[_0xd20a('0x59')]?JSON[_0xd20a('0x29')](_0x1e392b[_0xd20a('0x59')]):_0xd20a('0x6b'));return respondWithRpcPromise(_0xd20a('0x6c'),_0xd20a('0x6d'),_0x12076b);}return null;})['then'](function(_0x592a7a){var _0x331267=_0xd20a('0x6e')+_0x592a7a[_0xd20a('0x2b')][_0xd20a('0x6f')];return db['sequelize'][_0xd20a('0x3e')](_0x331267,{'type':db['Sequelize'][_0xd20a('0x70')][_0xd20a('0x71')],'raw':!![]})[_0xd20a('0x23')](function(_0xf6eaf1){return _0xf6eaf1;});})[_0xd20a('0x23')](function(_0x5e3f6b){if(_0x5e3f6b){_0x12076b[_0xd20a('0x2b')][_0xd20a('0x72')]=_0x5e3f6b[0x0];if(!_0x1e392b[_0xd20a('0x59')][_0xd20a('0x61')])return;return db[_0xd20a('0x73')][_0xd20a('0x58')]({'where':{'id':_0x1e392b[_0xd20a('0x59')][_0xd20a('0x61')],'role':_0xd20a('0x63')},'attributes':['id','name',_0xd20a('0x74'),_0xd20a('0x75'),_0xd20a('0x76')],'raw':!![]});}return null;})[_0xd20a('0x23')](function(_0xc79c79){if(!_0xc79c79)return null;_0x12076b[_0xd20a('0x2b')][_0xd20a('0x63')]=_0xc79c79;return _0x12076b;})[_0xd20a('0x23')](function(_0x38b8ed){if(_0x38b8ed){if(_0x1e392b[_0xd20a('0x59')][_0xd20a('0x77')]){_0x12076b[_0xd20a('0x2b')][_0xd20a('0x78')]=util[_0xd20a('0x5f')]('SIP/%s',_0x1e392b[_0xd20a('0x62')][_0xd20a('0x39')]);_0x12076b[_0xd20a('0x2b')]['channel']=_0x12076b[_0xd20a('0x79')];_0x12076b[_0xd20a('0x2b')]['motionChannel']=_0x12076b[_0xd20a('0x79')];_0x12076b[_0xd20a('0x2b')][_0xd20a('0x7a')]=_0xd20a('0x5c');return respondWithRpcPromise('EventManager',_0xd20a('0x7b'),{'event':'acceptmessage','message':_0x12076b[_0xd20a('0x2b')]},client9002)['then'](function(){return _0x12076b;});}return _0x12076b;}return null;})[_0xd20a('0x23')](respondWithResult(_0x1a8366,null))[_0xd20a('0x2d')](handleError(_0x1a8366,null));};var interaction_log=require('../../config/logger')(_0xd20a('0x5b'));exports[_0xd20a('0x35')]=function(_0x5e8016,_0x2ec413,_0x42c79f){var _0x4afe03={'agent':{},'channel':'fax'};if(_0x5e8016[_0xd20a('0x59')]['id']){delete _0x5e8016['body']['id'];}_0x5e8016[_0xd20a('0x59')]['UserId']=_0x5e8016['body']['UserId']||_0x5e8016[_0xd20a('0x62')]['id'];_0x4afe03[_0xd20a('0x63')]['id']=_0x5e8016['body'][_0xd20a('0x61')];return db[_0xd20a('0x51')][_0xd20a('0x58')]({'where':{'id':_0x5e8016[_0xd20a('0x56')]['id'],'UserId':null}})[_0xd20a('0x23')](handleEntityNotFound(_0x2ec413,null))[_0xd20a('0x23')](function(_0x1d949b){if(_0x1d949b){_0x4afe03['message']=_0x1d949b[_0xd20a('0x64')]({'plain':!![]});return db[_0xd20a('0x65')][_0xd20a('0x58')]({'where':{'id':_0x1d949b[_0xd20a('0x66')]}});}return null;})['then'](handleEntityNotFound(_0x2ec413,null))[_0xd20a('0x23')](function(_0x4403bc){if(_0x4403bc){_0x4afe03[_0xd20a('0x69')]=_0x4403bc['get']({'plain':!![]});interaction_log[_0xd20a('0x24')](_0xd20a('0x7c'),_0x5e8016[_0xd20a('0x62')]['id'],_0x5e8016[_0xd20a('0x62')]['name'],_0x5e8016[_0xd20a('0x62')][_0xd20a('0x6a')],_0x4afe03[_0xd20a('0x69')]['id'],_0x5e8016[_0xd20a('0x59')]?JSON[_0xd20a('0x29')](_0x5e8016[_0xd20a('0x59')]):_0xd20a('0x6b'));return respondWithRpcPromise('RejectMessage',_0xd20a('0x7d'),_0x4afe03);}return null;})[_0xd20a('0x23')](function(_0x4dddef){var _0x5b6ab4='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4dddef[_0xd20a('0x2b')][_0xd20a('0x6f')];return db['sequelize'][_0xd20a('0x3e')](_0x5b6ab4,{'type':db[_0xd20a('0x7e')][_0xd20a('0x70')]['SELECT'],'raw':!![]})['then'](function(_0x4e1b50){return _0x4e1b50;});})[_0xd20a('0x23')](function(_0x371eb0){if(_0x371eb0){_0x4afe03[_0xd20a('0x2b')]['contact']=_0x371eb0[0x0];if(!_0x5e8016[_0xd20a('0x59')]['UserId'])return;return db['User'][_0xd20a('0x58')]({'where':{'id':_0x5e8016[_0xd20a('0x59')][_0xd20a('0x61')],'role':'agent'},'attributes':['id',_0xd20a('0x39'),_0xd20a('0x74'),_0xd20a('0x75'),_0xd20a('0x76')],'raw':!![]});}return null;})[_0xd20a('0x23')](function(_0x12f291){if(!_0x12f291)return null;_0x4afe03['message']['agent']=_0x12f291;return _0x4afe03;})[_0xd20a('0x23')](function(_0x11210a){if(_0x11210a){_0x11210a[_0xd20a('0x2b')][_0xd20a('0x78')]=util[_0xd20a('0x5f')](_0xd20a('0x7f'),_0x5e8016[_0xd20a('0x62')][_0xd20a('0x39')]);_0x11210a[_0xd20a('0x2b')][_0xd20a('0x79')]=_0x4afe03[_0xd20a('0x79')];_0x11210a['message'][_0xd20a('0x80')]=_0x4afe03[_0xd20a('0x79')];_0x11210a['message'][_0xd20a('0x7a')]='reject';respondWithRpcPromise(_0xd20a('0x7b'),'EventManager',{'event':'rejectmessage','message':_0x11210a[_0xd20a('0x2b')]},client9002);return _0x4afe03;}return null;})['then'](respondWithResult(_0x2ec413,null))[_0xd20a('0x2d')](handleError(_0x2ec413,null));};exports[_0xd20a('0x81')]=function(_0xa7c4ce,_0x4aebf3){var _0x46e19b;return db[_0xd20a('0x51')]['create'](_0xa7c4ce[_0xd20a('0x59')],{})[_0xd20a('0x23')](function(_0x342c05){_0x46e19b=_0x342c05;return db[_0xd20a('0x82')][_0xd20a('0x83')]({'where':{'id':_0x46e19b['ContactId']}});})[_0xd20a('0x23')](function(_0x4de117){if(_[_0xd20a('0x67')](_0x4de117)){return;}else{_0x46e19b[_0xd20a('0x5d')]=_0x4de117['fax'];return db['Attachment']['findOne']({'where':{'id':_0x46e19b[_0xd20a('0x84')]}});}})['then'](function(_0x33a22f){return respondWithRpcPromise(_0xd20a('0x85'),_0xd20a('0x85'),{'FaxAccountId':_['isNil'](_0xa7c4ce[_0xd20a('0x59')])?undefined:_0xa7c4ce[_0xd20a('0x59')][_0xd20a('0x86')],'path':_[_0xd20a('0x67')](_0x33a22f)?undefined:util[_0xd20a('0x5f')](_0xd20a('0x87'),_0x33a22f[_0xd20a('0x88')]),'fax':_['isNil'](_0x46e19b['fax'])?undefined:_0x46e19b[_0xd20a('0x5d')],'AttachmentId':_0x46e19b[_0xd20a('0x84')]},client9002);})[_0xd20a('0x23')](respondWithResult(_0x4aebf3,0xc9))[_0xd20a('0x2d')](handleError(_0x4aebf3,null));};exports[_0xd20a('0x89')]=function(_0x5a85a9,_0x1cab98){var _0x5b4379=path[_0xd20a('0x8a')](config[_0xd20a('0x8b')],'server',_0xd20a('0x8c'),'attachments');return db[_0xd20a('0x51')][_0xd20a('0x58')]({'where':{'id':_0x5a85a9['params']['id']},'include':[{'model':db[_0xd20a('0x8d')],'as':_0xd20a('0x8d')}]})[_0xd20a('0x23')](handleEntityNotFound(_0x1cab98,null))['then'](function(_0x41e788){if(_0x41e788){return _0x1cab98[_0xd20a('0x89')](path['join'](_0x5b4379,_0x41e788[_0xd20a('0x8d')][_0xd20a('0x88')]));}})['catch'](handleError(_0x1cab98,null));};
\ No newline at end of file
index 066d460..59c621b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f8a=['../../mysqldb','FaxMessage','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x3e5a76,_0x1e2316){var _0x2b9bc6=function(_0x1218e3){while(--_0x1218e3){_0x3e5a76['push'](_0x3e5a76['shift']());}};_0x2b9bc6(++_0x1e2316);}(_0x3f8a,0x1d5));var _0xa3f8=function(_0xa61a4f,_0x325edf){_0xa61a4f=_0xa61a4f-0x0;var _0x4f2ba0=_0x3f8a[_0xa61a4f];return _0x4f2ba0;};'use strict';var EventEmitter=require(_0xa3f8('0x0'));var FaxMessage=require(_0xa3f8('0x1'))['db'][_0xa3f8('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xa3f8('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xa3f8('0x4'),'afterDestroy':_0xa3f8('0x5')};function emitEvent(_0x928738){return function(_0x15b6aa,_0x2553fd,_0x2847b4){FaxMessageEvents[_0xa3f8('0x6')](_0x928738+':'+_0x15b6aa['id'],_0x15b6aa);FaxMessageEvents[_0xa3f8('0x6')](_0x928738,_0x15b6aa);_0x2847b4(null);};}for(var e in events){if(events[_0xa3f8('0x7')](e)){var event=events[e];FaxMessage[_0xa3f8('0x8')](e,emitEvent(event));}}module[_0xa3f8('0x9')]=FaxMessageEvents;
\ No newline at end of file
+var _0x4fb4=['../../mysqldb','FaxMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x480bc8,_0x1fac40){var _0x28c245=function(_0x22a049){while(--_0x22a049){_0x480bc8['push'](_0x480bc8['shift']());}};_0x28c245(++_0x1fac40);}(_0x4fb4,0x190));var _0x44fb=function(_0x5fa7bc,_0xdb95e2){_0x5fa7bc=_0x5fa7bc-0x0;var _0x5b76bc=_0x4fb4[_0x5fa7bc];return _0x5b76bc;};'use strict';var EventEmitter=require('events');var FaxMessage=require(_0x44fb('0x0'))['db'][_0x44fb('0x1')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x44fb('0x2')](0x0);var events={'afterCreate':_0x44fb('0x3'),'afterUpdate':_0x44fb('0x4'),'afterDestroy':_0x44fb('0x5')};function emitEvent(_0x53ee5d){return function(_0xec6dce,_0x953327,_0x308b96){FaxMessageEvents[_0x44fb('0x6')](_0x53ee5d+':'+_0xec6dce['id'],_0xec6dce);FaxMessageEvents[_0x44fb('0x6')](_0x53ee5d,_0xec6dce);_0x308b96(null);};}for(var e in events){if(events[_0x44fb('0x7')](e)){var event=events[e];FaxMessage[_0x44fb('0x8')](e,emitEvent(event));}}module[_0x44fb('0x9')]=FaxMessageEvents;
\ No newline at end of file
index 8ec263a..0e526f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf365=['./faxMessage.attributes','exports','define','fti_fax_messages','body','FULLTEXT','toLowerCase','direction','out','secret','isNil','UserId','FaxInteraction','findOne','FaxInteractionId','then','update','error','util','../../config/logger','moment','request-promise','rimraf'];(function(_0x3407d0,_0x3d7d02){var _0x292678=function(_0x4a66b2){while(--_0x4a66b2){_0x3407d0['push'](_0x3407d0['shift']());}};_0x292678(++_0x3d7d02);}(_0xf365,0x1b0));var _0x5f36=function(_0x2f0244,_0x5c752b){_0x2f0244=_0x2f0244-0x0;var _0x1699a1=_0xf365[_0x2f0244];return _0x1699a1;};'use strict';var _=require('lodash');var util=require(_0x5f36('0x0'));var logger=require(_0x5f36('0x1'))('api');var moment=require(_0x5f36('0x2'));var BPromise=require('bluebird');var rp=require(_0x5f36('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5f36('0x4'));var config=require('../../config/environment');var attributes=require(_0x5f36('0x5'));module[_0x5f36('0x6')]=function(_0x1bf69f,_0x12f21d){return _0x1bf69f[_0x5f36('0x7')]('FaxMessage',attributes,{'tableName':'fax_messages','paranoid':![],'indexes':[{'name':_0x5f36('0x8'),'fields':[_0x5f36('0x9')],'type':_0x5f36('0xa')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x28c666,_0x523e25,_0x1aaef2){var _0xaf38e0=_0x1bf69f['models'];var _0x3231bb=_0x28c666['get']({'plain':!![]});if(_0x3231bb['direction'][_0x5f36('0xb')]()==='in'||_0x3231bb[_0x5f36('0xc')]['toLowerCase']()===_0x5f36('0xd')&&!_0x3231bb[_0x5f36('0xe')]&&!_[_0x5f36('0xf')](_0x3231bb[_0x5f36('0x10')])){_0xaf38e0[_0x5f36('0x11')][_0x5f36('0x12')]({'where':{'id':_0x3231bb[_0x5f36('0x13')]}})[_0x5f36('0x14')](function(_0x380d6d){if(_0x380d6d){_0x380d6d[_0x5f36('0x15')]({'lastMsgAt':_0x3231bb['createdAt'],'lastMsgDirection':_0x3231bb[_0x5f36('0xc')]['toLowerCase']()});}})['catch'](function(_0x41c803){console[_0x5f36('0x16')](_0x41c803);});}_0x1aaef2();}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x3440=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','define','FaxMessage','fax_messages','fti_fax_messages','body','FULLTEXT','models','get','direction','toLowerCase','secret','isNil','UserId','FaxInteraction','findOne','FaxInteractionId','then','createdAt','utf8mb4','utf8mb4_unicode_ci','util'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0x3440,0x1ec));var _0x0344=function(_0x405f26,_0x44eb88){_0x405f26=_0x405f26-0x0;var _0x1a259d=_0x3440[_0x405f26];return _0x1a259d;};'use strict';var _=require('lodash');var util=require(_0x0344('0x0'));var logger=require(_0x0344('0x1'))(_0x0344('0x2'));var moment=require(_0x0344('0x3'));var BPromise=require('bluebird');var rp=require(_0x0344('0x4'));var fs=require('fs');var path=require(_0x0344('0x5'));var rimraf=require(_0x0344('0x6'));var config=require(_0x0344('0x7'));var attributes=require('./faxMessage.attributes');module[_0x0344('0x8')]=function(_0x1d9a37,_0x55e598){return _0x1d9a37[_0x0344('0x9')](_0x0344('0xa'),attributes,{'tableName':_0x0344('0xb'),'paranoid':![],'indexes':[{'name':_0x0344('0xc'),'fields':[_0x0344('0xd')],'type':_0x0344('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1be2b5,_0xa9b27,_0x1c1abd){var _0x5e33da=_0x1d9a37[_0x0344('0xf')];var _0x2fa335=_0x1be2b5[_0x0344('0x10')]({'plain':!![]});if(_0x2fa335[_0x0344('0x11')]['toLowerCase']()==='in'||_0x2fa335['direction'][_0x0344('0x12')]()==='out'&&!_0x2fa335[_0x0344('0x13')]&&!_[_0x0344('0x14')](_0x2fa335[_0x0344('0x15')])){_0x5e33da[_0x0344('0x16')][_0x0344('0x17')]({'where':{'id':_0x2fa335[_0x0344('0x18')]}})[_0x0344('0x19')](function(_0x1684f8){if(_0x1684f8){_0x1684f8['update']({'lastMsgAt':_0x2fa335[_0x0344('0x1a')],'lastMsgDirection':_0x2fa335[_0x0344('0x11')][_0x0344('0x12')]()});}})['catch'](function(_0x363c54){console['error'](_0x363c54);});}_0x1c1abd();}},'charset':_0x0344('0x1b'),'collate':_0x0344('0x1c')});};
\ No newline at end of file
index 5d790d1..0661e87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['CreateFaxMessage','FaxMessage','create','body','options','raw','stringify','UpdateFaxMessage','attributes','catch','lodash','util','randomstring','../../config/utils','../../config/logger','rpc','http','defaults','localhost','./faxMessage.socket','register','request','then','info','request\x20sent','debug','error','message','FaxMessage,\x20%s,\x20%s','result'];(function(_0x2ea9b4,_0x1c52e6){var _0x451cde=function(_0x4c736f){while(--_0x4c736f){_0x2ea9b4['push'](_0x2ea9b4['shift']());}};_0x451cde(++_0x1c52e6);}(_0x4b84,0x1cc));var _0x44b8=function(_0x912d27,_0x28e0e3){_0x912d27=_0x912d27-0x0;var _0x31b918=_0x4b84[_0x912d27];return _0x31b918;};'use strict';var _=require(_0x44b8('0x0'));var util=require(_0x44b8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x44b8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x44b8('0x3'));var logger=require(_0x44b8('0x4'))(_0x44b8('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x44b8('0x6')]({'port':0x232a});config['redis']=_[_0x44b8('0x7')](config['redis'],{'host':_0x44b8('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x44b8('0x9'))[_0x44b8('0xa')](socket);function respondWithRpcPromise(_0x30ebc3,_0x48a371,_0xc650ec){return new BPromise(function(_0x2cc74b,_0x4315f6){return client[_0x44b8('0xb')](_0x30ebc3,_0xc650ec)[_0x44b8('0xc')](function(_0x37e471){logger[_0x44b8('0xd')]('FaxMessage,\x20%s,\x20%s',_0x48a371,_0x44b8('0xe'));logger[_0x44b8('0xf')]('FaxMessage,\x20%s,\x20%s,\x20%s',_0x48a371,_0x44b8('0xe'),JSON['stringify'](_0x37e471));if(_0x37e471[_0x44b8('0x10')]){if(_0x37e471[_0x44b8('0x10')]['code']===0x1f4){logger[_0x44b8('0x10')]('FaxMessage,\x20%s,\x20%s',_0x48a371,_0x37e471['error'][_0x44b8('0x11')]);return _0x4315f6(_0x37e471[_0x44b8('0x10')][_0x44b8('0x11')]);}logger[_0x44b8('0x10')]('FaxMessage,\x20%s,\x20%s',_0x48a371,_0x37e471['error']['message']);return _0x2cc74b(_0x37e471[_0x44b8('0x10')]['message']);}else{logger[_0x44b8('0xd')](_0x44b8('0x12'),_0x48a371,'request\x20sent');_0x2cc74b(_0x37e471[_0x44b8('0x13')][_0x44b8('0x11')]);}})['catch'](function(_0x89bc30){logger[_0x44b8('0x10')]('FaxMessage,\x20%s,\x20%s',_0x48a371,_0x89bc30);_0x4315f6(_0x89bc30);});});}exports[_0x44b8('0x14')]=function(_0x8b4301){var _0xebfe79=this;return new Promise(function(_0x235bdc,_0x102ef9){return db[_0x44b8('0x15')][_0x44b8('0x16')](_0x8b4301[_0x44b8('0x17')],{'raw':_0x8b4301[_0x44b8('0x18')]?_0x8b4301[_0x44b8('0x18')][_0x44b8('0x19')]===undefined?!![]:![]:!![]})[_0x44b8('0xc')](function(_0x48327e){logger[_0x44b8('0xd')](_0x44b8('0x14'),_0x8b4301);logger[_0x44b8('0xf')](_0x44b8('0x14'),_0x8b4301,JSON[_0x44b8('0x1a')](_0x48327e));_0x235bdc(_0x48327e);})['catch'](function(_0x402497){logger['error'](_0x44b8('0x14'),_0x402497[_0x44b8('0x11')],_0x8b4301);_0x102ef9(_0xebfe79[_0x44b8('0x10')](0x1f4,_0x402497[_0x44b8('0x11')]));});});};exports[_0x44b8('0x1b')]=function(_0x59acbc){var _0x474f01=this;return new Promise(function(_0x502acf,_0x41d673){return db[_0x44b8('0x15')]['update'](_0x59acbc[_0x44b8('0x17')],{'raw':_0x59acbc[_0x44b8('0x18')]?_0x59acbc[_0x44b8('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x59acbc[_0x44b8('0x18')]?_0x59acbc[_0x44b8('0x18')]['where']||null:null,'attributes':_0x59acbc[_0x44b8('0x18')]?_0x59acbc['options'][_0x44b8('0x1c')]||null:null,'limit':_0x59acbc['options']?_0x59acbc['options']['limit']||null:null})[_0x44b8('0xc')](function(_0x29b18d){logger[_0x44b8('0xd')](_0x44b8('0x1b'),_0x59acbc);logger[_0x44b8('0xf')](_0x44b8('0x1b'),_0x59acbc,JSON[_0x44b8('0x1a')](_0x29b18d));_0x502acf(_0x29b18d);})[_0x44b8('0x1d')](function(_0xd1d320){logger[_0x44b8('0x10')](_0x44b8('0x1b'),_0xd1d320[_0x44b8('0x11')],_0x59acbc);_0x41d673(_0x474f01[_0x44b8('0x10')](0x1f4,_0xd1d320['message']));});});};
\ No newline at end of file
+var _0xed1f=['jayson/promise','client','http','redis','defaults','localhost','./faxMessage.socket','request','then','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','error','message','CreateFaxMessage','FaxMessage','create','body','options','raw','info','catch','UpdateFaxMessage','update','attributes','limit','debug','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xed1f,0x6a));var _0xfed1=function(_0x39c734,_0x2f3e06){_0x39c734=_0x39c734-0x0;var _0xb2a2f9=_0xed1f[_0x39c734];return _0xb2a2f9;};'use strict';var _=require(_0xfed1('0x0'));var util=require(_0xfed1('0x1'));var moment=require(_0xfed1('0x2'));var BPromise=require(_0xfed1('0x3'));var rs=require(_0xfed1('0x4'));var fs=require('fs');var Redis=require(_0xfed1('0x5'));var db=require(_0xfed1('0x6'))['db'];var utils=require(_0xfed1('0x7'));var logger=require(_0xfed1('0x8'))(_0xfed1('0x9'));var config=require(_0xfed1('0xa'));var jayson=require(_0xfed1('0xb'));var client=jayson[_0xfed1('0xc')][_0xfed1('0xd')]({'port':0x232a});config[_0xfed1('0xe')]=_[_0xfed1('0xf')](config[_0xfed1('0xe')],{'host':_0xfed1('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xfed1('0xe')]));require(_0xfed1('0x11'))['register'](socket);function respondWithRpcPromise(_0x1414be,_0x7bf48c,_0x4a564e){return new BPromise(function(_0x3ce017,_0x48c338){return client[_0xfed1('0x12')](_0x1414be,_0x4a564e)[_0xfed1('0x13')](function(_0x4a8369){logger['info'](_0xfed1('0x14'),_0x7bf48c,_0xfed1('0x15'));logger['debug'](_0xfed1('0x16'),_0x7bf48c,'request\x20sent',JSON['stringify'](_0x4a8369));if(_0x4a8369[_0xfed1('0x17')]){if(_0x4a8369[_0xfed1('0x17')]['code']===0x1f4){logger[_0xfed1('0x17')]('FaxMessage,\x20%s,\x20%s',_0x7bf48c,_0x4a8369['error'][_0xfed1('0x18')]);return _0x48c338(_0x4a8369[_0xfed1('0x17')][_0xfed1('0x18')]);}logger[_0xfed1('0x17')]('FaxMessage,\x20%s,\x20%s',_0x7bf48c,_0x4a8369[_0xfed1('0x17')]['message']);return _0x3ce017(_0x4a8369[_0xfed1('0x17')][_0xfed1('0x18')]);}else{logger['info'](_0xfed1('0x14'),_0x7bf48c,_0xfed1('0x15'));_0x3ce017(_0x4a8369['result']['message']);}})['catch'](function(_0x1e5afb){logger['error'](_0xfed1('0x14'),_0x7bf48c,_0x1e5afb);_0x48c338(_0x1e5afb);});});}exports[_0xfed1('0x19')]=function(_0x51a860){var _0x94cb84=this;return new Promise(function(_0x65f14b,_0x59ee9d){return db[_0xfed1('0x1a')][_0xfed1('0x1b')](_0x51a860[_0xfed1('0x1c')],{'raw':_0x51a860[_0xfed1('0x1d')]?_0x51a860['options'][_0xfed1('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x446558){logger[_0xfed1('0x1f')](_0xfed1('0x19'),_0x51a860);logger['debug'](_0xfed1('0x19'),_0x51a860,JSON['stringify'](_0x446558));_0x65f14b(_0x446558);})[_0xfed1('0x20')](function(_0x2793b7){logger[_0xfed1('0x17')](_0xfed1('0x19'),_0x2793b7[_0xfed1('0x18')],_0x51a860);_0x59ee9d(_0x94cb84[_0xfed1('0x17')](0x1f4,_0x2793b7['message']));});});};exports[_0xfed1('0x21')]=function(_0xcb1cdc){var _0x49072b=this;return new Promise(function(_0x1d6c72,_0x2b9dd2){return db[_0xfed1('0x1a')][_0xfed1('0x22')](_0xcb1cdc[_0xfed1('0x1c')],{'raw':_0xcb1cdc[_0xfed1('0x1d')]?_0xcb1cdc['options'][_0xfed1('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xcb1cdc['options']?_0xcb1cdc[_0xfed1('0x1d')]['where']||null:null,'attributes':_0xcb1cdc['options']?_0xcb1cdc[_0xfed1('0x1d')][_0xfed1('0x23')]||null:null,'limit':_0xcb1cdc[_0xfed1('0x1d')]?_0xcb1cdc['options'][_0xfed1('0x24')]||null:null})[_0xfed1('0x13')](function(_0x13f414){logger[_0xfed1('0x1f')](_0xfed1('0x21'),_0xcb1cdc);logger[_0xfed1('0x25')]('UpdateFaxMessage',_0xcb1cdc,JSON[_0xfed1('0x26')](_0x13f414));_0x1d6c72(_0x13f414);})[_0xfed1('0x20')](function(_0x4fc309){logger['error'](_0xfed1('0x21'),_0x4fc309[_0xfed1('0x18')],_0xcb1cdc);_0x2b9dd2(_0x49072b[_0xfed1('0x17')](0x1f4,_0x4fc309[_0xfed1('0x18')]));});});};
\ No newline at end of file
index c454c41..1f68a6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7923=['remove','update','emit','removeListener','register','length','faxMessage:','./faxMessage.events','save'];(function(_0x2e2f84,_0x24e46f){var _0x448191=function(_0x336e06){while(--_0x336e06){_0x2e2f84['push'](_0x2e2f84['shift']());}};_0x448191(++_0x24e46f);}(_0x7923,0x97));var _0x3792=function(_0x465dc6,_0x3d19bd){_0x465dc6=_0x465dc6-0x0;var _0x22b665=_0x7923[_0x465dc6];return _0x22b665;};'use strict';var FaxMessageEvents=require(_0x3792('0x0'));var events=[_0x3792('0x1'),_0x3792('0x2'),_0x3792('0x3')];function createListener(_0x3176e0,_0x22a86a){return function(_0x5cff3a){_0x22a86a[_0x3792('0x4')](_0x3176e0,_0x5cff3a);};}function removeListener(_0x14c77d,_0x568d9d){return function(){FaxMessageEvents[_0x3792('0x5')](_0x14c77d,_0x568d9d);};}exports[_0x3792('0x6')]=function(_0x41b002){for(var _0x731101=0x0,_0x24845c=events[_0x3792('0x7')];_0x731101<_0x24845c;_0x731101++){var _0x4eba2a=events[_0x731101];var _0x2a8d27=createListener(_0x3792('0x8')+_0x4eba2a,_0x41b002);FaxMessageEvents['on'](_0x4eba2a,_0x2a8d27);}};
\ No newline at end of file
+var _0x86c7=['save','remove','removeListener','register','./faxMessage.events'];(function(_0x4200b3,_0x3a9eb9){var _0xf3f140=function(_0x49e8b3){while(--_0x49e8b3){_0x4200b3['push'](_0x4200b3['shift']());}};_0xf3f140(++_0x3a9eb9);}(_0x86c7,0xe0));var _0x786c=function(_0x5565a0,_0x1ee2d8){_0x5565a0=_0x5565a0-0x0;var _0x252393=_0x86c7[_0x5565a0];return _0x252393;};'use strict';var FaxMessageEvents=require(_0x786c('0x0'));var events=[_0x786c('0x1'),_0x786c('0x2'),'update'];function createListener(_0x2535b1,_0x390944){return function(_0x161612){_0x390944['emit'](_0x2535b1,_0x161612);};}function removeListener(_0x36ed84,_0x1af211){return function(){FaxMessageEvents[_0x786c('0x3')](_0x36ed84,_0x1af211);};}exports[_0x786c('0x4')]=function(_0x29aab2){for(var _0x9027d6=0x0,_0x127082=events['length'];_0x9027d6<_0x127082;_0x9027d6++){var _0x787089=events[_0x9027d6];var _0x4d8b65=createListener('faxMessage:'+_0x787089,_0x29aab2);FaxMessageEvents['on'](_0x787089,_0x4d8b65);}};
\ No newline at end of file
index 4966552..7927fe0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd404=['/:id','/:id/download','download','post','tracked','fax','faxmessage:create','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','describe'];(function(_0x12781a,_0x5566e0){var _0x5276ce=function(_0xbfd105){while(--_0xbfd105){_0x12781a['push'](_0x12781a['shift']());}};_0x5276ce(++_0x5566e0);}(_0xd404,0x15b));var _0x4d40=function(_0x5dbd65,_0xdf28af){_0x5dbd65=_0x5dbd65-0x0;var _0x1cb5ee=_0xd404[_0x5dbd65];return _0x1cb5ee;};'use strict';var multer=require(_0x4d40('0x0'));var util=require(_0x4d40('0x1'));var path=require('path');var timeout=require(_0x4d40('0x2'));var express=require(_0x4d40('0x3'));var router=express['Router']();var fs_extra=require(_0x4d40('0x4'));var auth=require(_0x4d40('0x5'));var interaction=require(_0x4d40('0x6'));var config=require(_0x4d40('0x7'));var controller=require(_0x4d40('0x8'));router[_0x4d40('0x9')]('/',auth[_0x4d40('0xa')](),controller[_0x4d40('0xb')]);router[_0x4d40('0x9')]('/describe',auth[_0x4d40('0xa')](),controller[_0x4d40('0xc')]);router['get'](_0x4d40('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x4d40('0x9')](_0x4d40('0xe'),auth[_0x4d40('0xa')](),controller[_0x4d40('0xf')]);router[_0x4d40('0x10')]('/',auth[_0x4d40('0xa')](),interaction[_0x4d40('0x11')](_0x4d40('0x12'),_0x4d40('0x13')),controller[_0x4d40('0x14')]);router[_0x4d40('0x15')](_0x4d40('0xd'),auth[_0x4d40('0xa')](),controller[_0x4d40('0x16')]);router['put'](_0x4d40('0x17'),auth[_0x4d40('0xa')](),controller[_0x4d40('0x18')]);router[_0x4d40('0x15')](_0x4d40('0x19'),auth['isAuthenticated'](),controller[_0x4d40('0x1a')]);router[_0x4d40('0x1b')](_0x4d40('0xd'),auth[_0x4d40('0xa')](),controller[_0x4d40('0x1c')]);module[_0x4d40('0x1d')]=router;
\ No newline at end of file
+var _0x2f68=['/:id/reject','reject','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','/:id','/:id/download','download','post','tracked','fax','faxmessage:create','put','update','/:id/accept','accept'];(function(_0xe5530b,_0x4477ea){var _0x549c66=function(_0x495293){while(--_0x495293){_0xe5530b['push'](_0xe5530b['shift']());}};_0x549c66(++_0x4477ea);}(_0x2f68,0x9a));var _0x82f6=function(_0x318431,_0x44beeb){_0x318431=_0x318431-0x0;var _0x472456=_0x2f68[_0x318431];return _0x472456;};'use strict';var multer=require('multer');var util=require(_0x82f6('0x0'));var path=require(_0x82f6('0x1'));var timeout=require(_0x82f6('0x2'));var express=require(_0x82f6('0x3'));var router=express['Router']();var fs_extra=require(_0x82f6('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x82f6('0x5'));var config=require(_0x82f6('0x6'));var controller=require('./faxMessage.controller');router[_0x82f6('0x7')]('/',auth[_0x82f6('0x8')](),controller['index']);router['get'](_0x82f6('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x82f6('0x7')](_0x82f6('0xa'),auth[_0x82f6('0x8')](),controller['show']);router[_0x82f6('0x7')](_0x82f6('0xb'),auth['isAuthenticated'](),controller[_0x82f6('0xc')]);router[_0x82f6('0xd')]('/',auth[_0x82f6('0x8')](),interaction[_0x82f6('0xe')](_0x82f6('0xf'),_0x82f6('0x10')),controller['create']);router[_0x82f6('0x11')](_0x82f6('0xa'),auth['isAuthenticated'](),controller[_0x82f6('0x12')]);router[_0x82f6('0x11')](_0x82f6('0x13'),auth[_0x82f6('0x8')](),controller[_0x82f6('0x14')]);router[_0x82f6('0x11')](_0x82f6('0x15'),auth[_0x82f6('0x8')](),controller[_0x82f6('0x16')]);router['delete'](_0x82f6('0xa'),auth['isAuthenticated'](),controller[_0x82f6('0x17')]);module[_0x82f6('0x18')]=router;
\ No newline at end of file
index 456b39e..a0b4baa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8868=['beepall','INTEGER','sequelize','exports','STRING','name'];(function(_0xedea6a,_0x4db04c){var _0x20f70e=function(_0x5b472d){while(--_0x5b472d){_0xedea6a['push'](_0xedea6a['shift']());}};_0x20f70e(++_0x4db04c);}(_0x8868,0x1ac));var _0x8886=function(_0x5bfeb1,_0x4da634){_0x5bfeb1=_0x5bfeb1-0x0;var _0x17512a=_0x8868[_0x5bfeb1];return _0x17512a;};'use strict';var Sequelize=require(_0x8886('0x0'));module[_0x8886('0x1')]={'name':{'type':Sequelize[_0x8886('0x2')],'unique':_0x8886('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x8886('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0x8886('0x4'),'roundrobin'),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x8886('0x5')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xf2ee=['exports','STRING','name','rrmemory','roundrobin','INTEGER','sequelize'];(function(_0x1d8015,_0x49c7b3){var _0x3c7314=function(_0xaeb40f){while(--_0xaeb40f){_0x1d8015['push'](_0x1d8015['shift']());}};_0x3c7314(++_0x49c7b3);}(_0xf2ee,0x110));var _0xef2e=function(_0x118434,_0x2488eb){_0x118434=_0x118434-0x0;var _0x256bfd=_0xf2ee[_0x118434];return _0x256bfd;};'use strict';var Sequelize=require(_0xef2e('0x0'));module[_0xef2e('0x1')]={'name':{'type':Sequelize[_0xef2e('0x2')],'unique':_0xef2e('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xef2e('0x4'),'beepall',_0xef2e('0x5')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xef2e('0x6')],'defaultValue':0x0}};
\ No newline at end of file
index f9b7889..7e8de68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95e7=['%s/%s','faxPause','getTeams','Team','addTeams','ids','online','voicePause','interface','flatMap','sequelize','transaction','forEach','userFaxQueue:save','Agents','select','field','tq.TeamId','from','team_has_fax_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','push','toString','TeamId','all','union','compact','value','emit','addAgents','omit','removeAgents','isArray','userFaxQueue:remove','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','lodash','crypto','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','status','end','json','offset','limit','count','set','Content-Range','reject','save','update','then','destroy','get','FaxQueues','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','length','nolimit','sort','filter','where','merge','type','VIRTUAL','options','FaxQueue','findAll','rows','catch','show','params','fields','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserFaxQueue','hasOwnProperty','order','pick','User','findAndCountAll','UserId','agent','updatedAt','createdAt','format'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x95e7,0x137));var _0x795e=function(_0x2e97f1,_0x52b24f){_0x2e97f1=_0x2e97f1-0x0;var _0x230279=_0x95e7[_0x2e97f1];return _0x230279;};'use strict';var emlformat=require(_0x795e('0x0'));var rimraf=require(_0x795e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x795e('0x2'));var rp=require(_0x795e('0x3'));var moment=require(_0x795e('0x4'));var BPromise=require(_0x795e('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x795e('0x6'));var sox=require(_0x795e('0x7'));var csv=require(_0x795e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x795e('0x9'));var _=require(_0x795e('0xa'));var squel=require('squel');var crypto=require(_0x795e('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x795e('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x795e('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x795e('0xe'));var hardwareService=require(_0x795e('0xf'));var logger=require(_0x795e('0x10'))(_0x795e('0x11'));var utils=require(_0x795e('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x795e('0x13'))['db'];config[_0x795e('0x14')]=_[_0x795e('0x15')](config['redis'],{'host':_0x795e('0x16'),'port':0x18eb});var socket=require(_0x795e('0x17'))(new Redis(config[_0x795e('0x14')]));require('./faxQueue.socket')[_0x795e('0x18')](socket);function respondWithStatusCode(_0x550b0d,_0x5f02a2){_0x5f02a2=_0x5f02a2||0xcc;return function(_0x5d01d6){if(_0x5d01d6){return _0x550b0d['sendStatus'](_0x5f02a2);}return _0x550b0d[_0x795e('0x19')](_0x5f02a2)[_0x795e('0x1a')]();};}function respondWithResult(_0x13ba79,_0x38e1c4){_0x38e1c4=_0x38e1c4||0xc8;return function(_0xdfe019){if(_0xdfe019){return _0x13ba79[_0x795e('0x19')](_0x38e1c4)[_0x795e('0x1b')](_0xdfe019);}};}function respondWithFilteredResult(_0x3a97e2,_0x5e2b47){return function(_0x228732){if(_0x228732){var _0x7b40cf=typeof _0x5e2b47[_0x795e('0x1c')]==='undefined'&&typeof _0x5e2b47[_0x795e('0x1d')]==='undefined';var _0x282133=_0x228732[_0x795e('0x1e')];var _0x54004b=_0x7b40cf?0x0:_0x5e2b47[_0x795e('0x1c')];var _0x938ae2=_0x7b40cf?_0x228732['count']:_0x5e2b47[_0x795e('0x1c')]+_0x5e2b47[_0x795e('0x1d')];var _0x172f1d;if(_0x938ae2>=_0x282133){_0x938ae2=_0x282133;_0x172f1d=0xc8;}else{_0x172f1d=0xce;}_0x3a97e2['status'](_0x172f1d);return _0x3a97e2[_0x795e('0x1f')](_0x795e('0x20'),_0x54004b+'-'+_0x938ae2+'/'+_0x282133)[_0x795e('0x1b')](_0x228732);}return null;};}function patchUpdates(_0x4ee5b1){return function(_0x2a6b7b){try{jsonpatch['apply'](_0x2a6b7b,_0x4ee5b1,!![]);}catch(_0x5f1e26){return BPromise[_0x795e('0x21')](_0x5f1e26);}return _0x2a6b7b[_0x795e('0x22')]();};}function saveUpdates(_0x570965,_0x59561d){return function(_0x2cfea0){if(_0x2cfea0){return _0x2cfea0[_0x795e('0x23')](_0x570965)[_0x795e('0x24')](function(_0xef65a4){return _0xef65a4;});}return null;};}function removeEntity(_0x398b69,_0x40b3ea){return function(_0x37a188){if(_0x37a188){return _0x37a188[_0x795e('0x25')]()[_0x795e('0x24')](function(){var _0x5b3e31=_0x37a188[_0x795e('0x26')]({'plain':!![]});var _0x5dc148=_0x795e('0x27');return db['UserProfileResource'][_0x795e('0x25')]({'where':{'type':_0x5dc148,'resourceId':_0x5b3e31['id']}})['then'](function(){return _0x37a188;});})[_0x795e('0x24')](function(){_0x398b69['status'](0xcc)[_0x795e('0x1a')]();});}};}function handleEntityNotFound(_0x30c89a,_0x241784){return function(_0x414366){if(!_0x414366){_0x30c89a[_0x795e('0x28')](0x194);}return _0x414366;};}function handleError(_0x501523,_0x206200){_0x206200=_0x206200||0x1f4;return function(_0x2faa78){logger[_0x795e('0x29')](_0x2faa78[_0x795e('0x2a')]);if(_0x2faa78[_0x795e('0x2b')]){delete _0x2faa78['name'];}_0x501523[_0x795e('0x19')](_0x206200)[_0x795e('0x2c')](_0x2faa78);};}exports[_0x795e('0x2d')]=function(_0x4dbb49,_0x21affc){var _0x4915d6={},_0x339de7={},_0x3a4956={'count':0x0,'rows':[]};var _0x57c524=_[_0x795e('0x2e')](db['FaxQueue'][_0x795e('0x2f')],function(_0x2eddd7){return{'name':_0x2eddd7[_0x795e('0x30')],'type':_0x2eddd7['type'][_0x795e('0x31')]};});_0x339de7[_0x795e('0x32')]=_[_0x795e('0x2e')](_0x57c524,_0x795e('0x2b'));_0x339de7[_0x795e('0x33')]=_[_0x795e('0x34')](_0x4dbb49[_0x795e('0x33')]);_0x339de7[_0x795e('0x35')]=_[_0x795e('0x36')](_0x339de7[_0x795e('0x32')],_0x339de7[_0x795e('0x33')]);_0x4915d6[_0x795e('0x37')]=_[_0x795e('0x36')](_0x339de7[_0x795e('0x32')],qs['fields'](_0x4dbb49[_0x795e('0x33')]['fields']));_0x4915d6['attributes']=_0x4915d6[_0x795e('0x37')][_0x795e('0x38')]?_0x4915d6['attributes']:_0x339de7[_0x795e('0x32')];if(!_0x4dbb49[_0x795e('0x33')]['hasOwnProperty'](_0x795e('0x39'))){_0x4915d6[_0x795e('0x1d')]=qs[_0x795e('0x1d')](_0x4dbb49[_0x795e('0x33')][_0x795e('0x1d')]);_0x4915d6['offset']=qs[_0x795e('0x1c')](_0x4dbb49[_0x795e('0x33')][_0x795e('0x1c')]);}_0x4915d6['order']=qs[_0x795e('0x3a')](_0x4dbb49['query'][_0x795e('0x3a')]);_0x4915d6['where']=qs[_0x795e('0x35')](_['pick'](_0x4dbb49[_0x795e('0x33')],_0x339de7[_0x795e('0x35')]),_0x57c524);if(_0x4dbb49['query'][_0x795e('0x3b')]){_0x4915d6[_0x795e('0x3c')]=_[_0x795e('0x3d')](_0x4915d6[_0x795e('0x3c')],{'$or':_[_0x795e('0x2e')](_0x57c524,function(_0x165e10){if(_0x165e10[_0x795e('0x3e')]!==_0x795e('0x3f')){var _0x1916ad={};_0x1916ad[_0x165e10['name']]={'$like':'%'+_0x4dbb49['query'][_0x795e('0x3b')]+'%'};return _0x1916ad;}})});}_0x4915d6=_[_0x795e('0x3d')]({},_0x4915d6,_0x4dbb49[_0x795e('0x40')]);var _0x31584e={'where':_0x4915d6[_0x795e('0x3c')]};return db[_0x795e('0x41')][_0x795e('0x1e')](_0x31584e)[_0x795e('0x24')](function(_0x4cd2c1){_0x3a4956[_0x795e('0x1e')]=_0x4cd2c1;if(_0x4dbb49[_0x795e('0x33')]['includeAll']){_0x4915d6['include']=[{'all':!![]}];}return db[_0x795e('0x41')][_0x795e('0x42')](_0x4915d6);})['then'](function(_0x23bbaf){_0x3a4956[_0x795e('0x43')]=_0x23bbaf;return _0x3a4956;})[_0x795e('0x24')](respondWithFilteredResult(_0x21affc,_0x4915d6))[_0x795e('0x44')](handleError(_0x21affc,null));};exports[_0x795e('0x45')]=function(_0x21ccbb,_0x179454){var _0x363a88={'raw':!![],'where':{'id':_0x21ccbb[_0x795e('0x46')]['id']}},_0x58c7c0={};_0x58c7c0[_0x795e('0x32')]=_['keys'](db[_0x795e('0x41')][_0x795e('0x2f')]);_0x58c7c0[_0x795e('0x33')]=_[_0x795e('0x34')](_0x21ccbb[_0x795e('0x33')]);_0x58c7c0[_0x795e('0x35')]=_[_0x795e('0x36')](_0x58c7c0[_0x795e('0x32')],_0x58c7c0[_0x795e('0x33')]);_0x363a88['attributes']=_[_0x795e('0x36')](_0x58c7c0[_0x795e('0x32')],qs[_0x795e('0x47')](_0x21ccbb[_0x795e('0x33')][_0x795e('0x47')]));_0x363a88[_0x795e('0x37')]=_0x363a88[_0x795e('0x37')][_0x795e('0x38')]?_0x363a88['attributes']:_0x58c7c0[_0x795e('0x32')];if(_0x21ccbb[_0x795e('0x33')][_0x795e('0x48')]){_0x363a88['include']=[{'all':!![]}];}_0x363a88=_['merge']({},_0x363a88,_0x21ccbb[_0x795e('0x40')]);return db['FaxQueue'][_0x795e('0x49')](_0x363a88)[_0x795e('0x24')](handleEntityNotFound(_0x179454,null))[_0x795e('0x24')](respondWithResult(_0x179454,null))['catch'](handleError(_0x179454,null));};exports[_0x795e('0x4a')]=function(_0x37d3ee,_0x482617){return db[_0x795e('0x41')][_0x795e('0x4a')](_0x37d3ee[_0x795e('0x4b')],{})[_0x795e('0x24')](function(_0xc42b85){var _0x4c4dc1=_0x37d3ee[_0x795e('0x4c')][_0x795e('0x26')]({'plain':!![]});if(!_0x4c4dc1)throw new Error(_0x795e('0x4d'));if(_0x4c4dc1['role']===_0x795e('0x4c')){var _0x22cd3b=_0xc42b85['get']({'plain':!![]});var _0x419025='FaxQueues';return db[_0x795e('0x4e')][_0x795e('0x49')]({'where':{'name':_0x419025,'userProfileId':_0x4c4dc1[_0x795e('0x4f')]},'raw':!![]})[_0x795e('0x24')](function(_0xc8b3e6){if(_0xc8b3e6&&_0xc8b3e6[_0x795e('0x50')]===0x0){return db[_0x795e('0x51')][_0x795e('0x4a')]({'name':_0x22cd3b[_0x795e('0x2b')],'resourceId':_0x22cd3b['id'],'type':_0xc8b3e6[_0x795e('0x2b')],'sectionId':_0xc8b3e6['id']},{})['then'](function(){return _0xc42b85;});}else{return _0xc42b85;}})[_0x795e('0x44')](function(_0x2ea814){logger[_0x795e('0x29')](_0x795e('0x52'),_0x2ea814);throw _0x2ea814;});}return _0xc42b85;})[_0x795e('0x24')](respondWithResult(_0x482617,0xc9))['catch'](handleError(_0x482617,null));};exports[_0x795e('0x23')]=function(_0x16cbab,_0x271717){if(_0x16cbab[_0x795e('0x4b')]['id']){delete _0x16cbab[_0x795e('0x4b')]['id'];}return db[_0x795e('0x41')][_0x795e('0x49')]({'where':{'id':_0x16cbab[_0x795e('0x46')]['id']}})[_0x795e('0x24')](handleEntityNotFound(_0x271717,null))['then'](saveUpdates(_0x16cbab['body'],null))[_0x795e('0x24')](respondWithResult(_0x271717,null))[_0x795e('0x44')](handleError(_0x271717,null));};exports[_0x795e('0x25')]=function(_0x46aac3,_0x3bf42d){return db['FaxQueue']['find']({'where':{'id':_0x46aac3[_0x795e('0x46')]['id']}})['then'](handleEntityNotFound(_0x3bf42d,null))[_0x795e('0x24')](removeEntity(_0x3bf42d,null))['catch'](handleError(_0x3bf42d,null));};exports[_0x795e('0x53')]=function(_0x4c7d36,_0x304c6b){return db[_0x795e('0x41')]['describe']()[_0x795e('0x24')](respondWithResult(_0x304c6b,null))[_0x795e('0x44')](handleError(_0x304c6b,null));};exports[_0x795e('0x54')]=function(_0x4a742d,_0x1feca5,_0x4ea54f){var _0x299ed7={'raw':!![],'where':{}},_0x1bb2fb={},_0x1546da;return db[_0x795e('0x41')][_0x795e('0x55')]({'where':{'id':_0x4a742d[_0x795e('0x46')]['id']}})[_0x795e('0x24')](handleEntityNotFound(_0x1feca5,null))[_0x795e('0x24')](function(_0x6d795e){if(_0x6d795e){_0x1546da=_0x6d795e[_0x795e('0x26')]({'plain':!![]});_0x1bb2fb[_0x795e('0x32')]=_[_0x795e('0x34')](db[_0x795e('0x56')][_0x795e('0x2f')]);_0x1bb2fb[_0x795e('0x33')]=_[_0x795e('0x34')](_0x4a742d[_0x795e('0x33')]);_0x1bb2fb[_0x795e('0x35')]=_[_0x795e('0x36')](_0x1bb2fb['model'],_0x1bb2fb[_0x795e('0x33')]);_0x299ed7[_0x795e('0x37')]=_[_0x795e('0x36')](_0x1bb2fb[_0x795e('0x32')],qs['fields'](_0x4a742d[_0x795e('0x33')][_0x795e('0x47')]));_0x299ed7[_0x795e('0x37')]=_0x299ed7[_0x795e('0x37')][_0x795e('0x38')]?_0x299ed7[_0x795e('0x37')]:_0x1bb2fb[_0x795e('0x32')];if(!_0x4a742d[_0x795e('0x33')][_0x795e('0x57')](_0x795e('0x39'))){_0x299ed7[_0x795e('0x1d')]=qs[_0x795e('0x1d')](_0x4a742d[_0x795e('0x33')][_0x795e('0x1d')]);_0x299ed7[_0x795e('0x1c')]=qs[_0x795e('0x1c')](_0x4a742d[_0x795e('0x33')]['offset']);}_0x299ed7[_0x795e('0x58')]=qs[_0x795e('0x3a')](_0x4a742d['query']['sort']);_0x299ed7[_0x795e('0x3c')]=qs[_0x795e('0x35')](_[_0x795e('0x59')](_0x4a742d['query'],_0x1bb2fb[_0x795e('0x35')]));_0x299ed7['where']['FaxQueueId']=_0x6d795e['id'];if(_0x4a742d[_0x795e('0x33')][_0x795e('0x3b')]){_0x299ed7[_0x795e('0x3c')]=_[_0x795e('0x3d')](_0x299ed7[_0x795e('0x3c')],{'$or':_['map'](_0x299ed7[_0x795e('0x37')],function(_0x533b2c){var _0x532a8b={};_0x532a8b[_0x533b2c]={'$like':'%'+_0x4a742d[_0x795e('0x33')]['filter']+'%'};return _0x532a8b;})});}_0x299ed7=_[_0x795e('0x3d')]({},_0x299ed7,_0x4a742d[_0x795e('0x40')]);return db[_0x795e('0x56')][_0x795e('0x42')](_0x299ed7);}})[_0x795e('0x24')](function(_0x83d9c0){if(_0x83d9c0){return db[_0x795e('0x5a')][_0x795e('0x5b')]({'where':{'id':_[_0x795e('0x2e')](_0x83d9c0,_0x795e('0x5c')),'role':_0x795e('0x5d')},'attributes':['id',_0x795e('0x2b'),'faxPause',_0x795e('0x5e'),_0x795e('0x5f')]});}})[_0x795e('0x24')](function(_0x358f04){if(_0x358f04){return{'count':_0x358f04[_0x795e('0x1e')],'rows':_[_0x795e('0x2e')](_0x358f04[_0x795e('0x43')],function(_0x16cfdf){return{'membername':_0x16cfdf[_0x795e('0x2b')],'UserId':_0x16cfdf['id'],'queue_name':_0x1546da[_0x795e('0x2b')],'FaxQueueId':_0x1546da['id'],'interface':util[_0x795e('0x60')](_0x795e('0x61'),'SIP',_0x16cfdf[_0x795e('0x2b')]),'penalty':0x0,'paused':_0x16cfdf[_0x795e('0x62')],'createdAt':_0x16cfdf['createdAt'],'updatedAt':_0x16cfdf[_0x795e('0x5e')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x795e('0x24')](respondWithFilteredResult(_0x1feca5,_0x299ed7))['catch'](handleError(_0x1feca5,null));};exports[_0x795e('0x63')]=function(_0x22ac82,_0x5a6208,_0x151094){var _0x15ead8={};var _0x345c8e={};var _0x1542de;var _0x3a3911;return db['FaxQueue'][_0x795e('0x55')]({'where':{'id':_0x22ac82[_0x795e('0x46')]['id']}})[_0x795e('0x24')](handleEntityNotFound(_0x5a6208,null))[_0x795e('0x24')](function(_0x76df1a){if(_0x76df1a){_0x1542de=_0x76df1a;_0x345c8e[_0x795e('0x32')]=_[_0x795e('0x34')](db[_0x795e('0x64')][_0x795e('0x2f')]);_0x345c8e[_0x795e('0x33')]=_['keys'](_0x22ac82['query']);_0x345c8e['filters']=_[_0x795e('0x36')](_0x345c8e['model'],_0x345c8e['query']);_0x15ead8[_0x795e('0x37')]=_['intersection'](_0x345c8e[_0x795e('0x32')],qs[_0x795e('0x47')](_0x22ac82['query'][_0x795e('0x47')]));_0x15ead8[_0x795e('0x37')]=_0x15ead8[_0x795e('0x37')][_0x795e('0x38')]?_0x15ead8['attributes']:_0x345c8e['model'];_0x15ead8[_0x795e('0x58')]=qs[_0x795e('0x3a')](_0x22ac82[_0x795e('0x33')][_0x795e('0x3a')]);_0x15ead8[_0x795e('0x3c')]=qs[_0x795e('0x35')](_[_0x795e('0x59')](_0x22ac82['query'],_0x345c8e[_0x795e('0x35')]));if(_0x22ac82[_0x795e('0x33')][_0x795e('0x3b')]){_0x15ead8[_0x795e('0x3c')]=_[_0x795e('0x3d')](_0x15ead8[_0x795e('0x3c')],{'$or':_['map'](_0x15ead8[_0x795e('0x37')],function(_0x9252d0){var _0x3740c9={};_0x3740c9[_0x9252d0]={'$like':'%'+_0x22ac82[_0x795e('0x33')]['filter']+'%'};return _0x3740c9;})});}_0x15ead8=_[_0x795e('0x3d')]({},_0x15ead8,_0x22ac82[_0x795e('0x40')]);return _0x1542de[_0x795e('0x63')](_0x15ead8);}})[_0x795e('0x24')](function(_0x47f711){if(_0x47f711){_0x3a3911=_0x47f711[_0x795e('0x38')];if(!_0x22ac82[_0x795e('0x33')][_0x795e('0x57')]('nolimit')){_0x15ead8[_0x795e('0x1d')]=qs[_0x795e('0x1d')](_0x22ac82[_0x795e('0x33')][_0x795e('0x1d')]);_0x15ead8[_0x795e('0x1c')]=qs['offset'](_0x22ac82[_0x795e('0x33')][_0x795e('0x1c')]);}return _0x1542de[_0x795e('0x63')](_0x15ead8);}})[_0x795e('0x24')](function(_0x4d1d31){if(_0x4d1d31){return _0x4d1d31?{'count':_0x3a3911,'rows':_0x4d1d31}:null;}})['then'](respondWithResult(_0x5a6208,null))[_0x795e('0x44')](handleError(_0x5a6208,null));};exports[_0x795e('0x65')]=function(_0x1d494e,_0x2d0a62,_0x3f6d7d){var _0x5b8dbe=_0x1d494e[_0x795e('0x4b')][_0x795e('0x66')];return db[_0x795e('0x64')]['findAll']({'where':{'id':_0x5b8dbe},'attributes':['id'],'include':[{'model':db[_0x795e('0x5a')],'as':'Agents','attributes':['id','name',_0x795e('0x67'),_0x795e('0x68'),_0x795e('0x69')],'raw':!![]}]})[_0x795e('0x24')](function(_0x515528){if(_0x515528){var _0x1c9340=_[_0x795e('0x6a')](_0x515528,function(_0x543949){var _0x238821=_0x543949['get']({'plain':!![]});return _0x238821['Agents'];});return db[_0x795e('0x41')][_0x795e('0x49')]({'where':{'id':_0x1d494e[_0x795e('0x46')]['id']}})[_0x795e('0x24')](function(_0x3737fa){return db[_0x795e('0x6b')][_0x795e('0x6c')](function(_0x1712ed){return _0x3737fa[_0x795e('0x65')](_0x5b8dbe,{'transaction':_0x1712ed})[_0x795e('0x24')](function(){return BPromise['each'](_0x1c9340,function(_0x133900){return db[_0x795e('0x56')]['findOrCreate']({'where':{'UserId':_0x133900['id'],'FaxQueueId':_0x1d494e[_0x795e('0x46')]['id']},'transaction':_0x1712ed});});})['then'](function(){_0x1c9340[_0x795e('0x6d')](function(_0xa69358){socket['emit'](_0x795e('0x6e'),{'UserId':_0xa69358['id'],'FaxQueueId':_0x3737fa['id']});});});});});}})[_0x795e('0x24')](respondWithStatusCode(_0x2d0a62,null))['catch'](handleError(_0x2d0a62,null));};exports['removeTeams']=function(_0x576fbc,_0x4b185a,_0xf6dd26){return db[_0x795e('0x64')][_0x795e('0x42')]({'where':{'id':_0x576fbc[_0x795e('0x33')][_0x795e('0x66')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x795e('0x6f'),'attributes':['id'],'raw':!![]}]})[_0x795e('0x24')](handleEntityNotFound(_0x4b185a,null))[_0x795e('0x24')](function(_0x11ba1f){var _0x91549c=_['map'](_0x11ba1f,'id');var _0x1e1d37=[];var _0x3189b6=[];var _0x3bcc8e=squel[_0x795e('0x70')]();_0x3bcc8e[_0x795e('0x71')](_0x795e('0x72'))[_0x795e('0x73')](_0x795e('0x74'),'tq')[_0x795e('0x75')](_0x795e('0x76'),'ut',_0x795e('0x77'))[_0x795e('0x3c')](_0x795e('0x78'),_0x576fbc[_0x795e('0x46')]['id']);for(var _0x40d196=0x0;_0x40d196<_0x11ba1f[_0x795e('0x38')];_0x40d196+=0x1){let _0x190f76=_0x11ba1f[_0x40d196];for(var _0x3d649e=0x0;_0x3d649e<_0x190f76['Agents'][_0x795e('0x38')];_0x3d649e+=0x1){let _0x1d4b44=_0x190f76['Agents'][_0x3d649e];var _0xd0c610=_0x3bcc8e[_0x795e('0x79')]();_0xd0c610[_0x795e('0x3c')]('ut.UserId\x20=\x20?',_0x1d4b44['id']);_0x3189b6[_0x795e('0x7a')](db['sequelize'][_0x795e('0x33')](_0xd0c610[_0x795e('0x7b')](),{'type':db[_0x795e('0x6b')]['QueryTypes']['SELECT']})[_0x795e('0x24')](function(_0x2a3454){if(_0x2a3454[_0x795e('0x38')]===0x1){return _0x1d4b44['id'];}else{var _0x1853fd=_['every'](_[_0x795e('0x2e')](_0x2a3454,_0x795e('0x7c')),function(_0x1d14e4){return _['includes'](_0x91549c,_0x1d14e4);});if(_0x1853fd){return _0x1d4b44['id'];}}}));}}return BPromise[_0x795e('0x7d')](_0x3189b6)['then'](function(_0x24b479){_0x1e1d37=_(_0x1e1d37)[_0x795e('0x7e')](_0x24b479)[_0x795e('0x7f')]()[_0x795e('0x80')]();return db['FaxQueue'][_0x795e('0x49')]({'where':{'id':_0x576fbc[_0x795e('0x46')]['id']}})[_0x795e('0x24')](function(_0x2de2d2){return db[_0x795e('0x6b')][_0x795e('0x6c')](function(_0x34c3b1){return _0x2de2d2['removeTeams'](_0x576fbc[_0x795e('0x33')][_0x795e('0x66')],{'transaction':_0x34c3b1})[_0x795e('0x24')](function(){if(!_['isEmpty'](_0x1e1d37)){return _0x2de2d2['removeAgents'](_0x1e1d37,{'transaction':_0x34c3b1});}})[_0x795e('0x24')](function(){_0x1e1d37[_0x795e('0x6d')](function(_0x45402f){socket[_0x795e('0x81')]('userFaxQueue:remove',{'UserId':_0x45402f,'FaxQueueId':_0x2de2d2['id']});});});});});});})[_0x795e('0x24')](respondWithStatusCode(_0x4b185a,null))[_0x795e('0x44')](handleError(_0x4b185a,null));};exports[_0x795e('0x82')]=function(_0x3a7ddb,_0x24df2a,_0x5b1c51){return db[_0x795e('0x41')][_0x795e('0x49')]({'where':{'id':_0x3a7ddb[_0x795e('0x46')]['id']}})[_0x795e('0x24')](handleEntityNotFound(_0x24df2a,null))[_0x795e('0x24')](function(_0x304213){if(_0x304213){return _0x304213[_0x795e('0x82')](_0x3a7ddb[_0x795e('0x4b')][_0x795e('0x66')],_[_0x795e('0x83')](_0x3a7ddb[_0x795e('0x4b')],['ids','id'])||{})['spread'](function(_0x3374a8){for(var _0x2d62e1=0x0;_0x2d62e1<_0x3a7ddb[_0x795e('0x4b')]['ids'][_0x795e('0x38')];_0x2d62e1+=0x1){socket[_0x795e('0x81')](_0x795e('0x6e'),{'UserId':Number(_0x3a7ddb[_0x795e('0x4b')]['ids'][_0x2d62e1]),'FaxQueueId':Number(_0x3a7ddb['params']['id'])});}return _0x3374a8;});}})['then'](respondWithResult(_0x24df2a,null))[_0x795e('0x44')](handleError(_0x24df2a,null));};exports[_0x795e('0x84')]=function(_0x5dfb7f,_0x230809,_0x5c804b){return db[_0x795e('0x41')][_0x795e('0x49')]({'where':{'id':_0x5dfb7f[_0x795e('0x46')]['id']}})['then'](handleEntityNotFound(_0x230809,null))['then'](function(_0x440a55){if(_0x440a55){return _0x440a55[_0x795e('0x84')](_0x5dfb7f[_0x795e('0x33')]['ids'])[_0x795e('0x24')](function(){if(_[_0x795e('0x85')](_0x5dfb7f[_0x795e('0x33')][_0x795e('0x66')])){for(var _0xe4a705=0x0;_0xe4a705<_0x5dfb7f[_0x795e('0x33')][_0x795e('0x66')]['length'];_0xe4a705+=0x1){socket[_0x795e('0x81')](_0x795e('0x86'),{'UserId':Number(_0x5dfb7f[_0x795e('0x33')]['ids'][_0xe4a705]),'FaxQueueId':Number(_0x5dfb7f[_0x795e('0x46')]['id'])});}}else{socket[_0x795e('0x81')](_0x795e('0x86'),{'UserId':Number(_0x5dfb7f[_0x795e('0x33')][_0x795e('0x66')]),'FaxQueueId':Number(_0x5dfb7f[_0x795e('0x46')]['id'])});}});}})['then'](respondWithStatusCode(_0x230809,null))['catch'](handleError(_0x230809,null));};exports[_0x795e('0x87')]=function(_0x3f6762,_0x3d4999,_0x289971){var _0x18d1ae={};var _0x2ce155={};var _0x185c83;var _0x22bfbd;return db[_0x795e('0x41')]['findOne']({'where':{'id':_0x3f6762[_0x795e('0x46')]['id']}})[_0x795e('0x24')](handleEntityNotFound(_0x3d4999,null))[_0x795e('0x24')](function(_0x55a2a6){if(_0x55a2a6){_0x185c83=_0x55a2a6;_0x2ce155[_0x795e('0x32')]=_['keys'](db[_0x795e('0x5a')][_0x795e('0x2f')]);_0x2ce155['query']=_[_0x795e('0x34')](_0x3f6762['query']);_0x2ce155[_0x795e('0x35')]=_[_0x795e('0x36')](_0x2ce155[_0x795e('0x32')],_0x2ce155[_0x795e('0x33')]);_0x18d1ae[_0x795e('0x37')]=_[_0x795e('0x36')](_0x2ce155[_0x795e('0x32')],qs['fields'](_0x3f6762['query'][_0x795e('0x47')]));_0x18d1ae[_0x795e('0x37')]=_0x18d1ae[_0x795e('0x37')][_0x795e('0x38')]?_0x18d1ae[_0x795e('0x37')]:_0x2ce155[_0x795e('0x32')];_0x18d1ae[_0x795e('0x58')]=qs['sort'](_0x3f6762[_0x795e('0x33')]['sort']);_0x18d1ae['where']=qs[_0x795e('0x35')](_[_0x795e('0x59')](_0x3f6762[_0x795e('0x33')],_0x2ce155[_0x795e('0x35')]));if(_0x3f6762[_0x795e('0x33')]['filter']){_0x18d1ae[_0x795e('0x3c')]=_[_0x795e('0x3d')](_0x18d1ae['where'],{'$or':_['map'](_0x18d1ae['attributes'],function(_0x678ea4){var _0x7b17a2={};_0x7b17a2[_0x678ea4]={'$like':'%'+_0x3f6762[_0x795e('0x33')][_0x795e('0x3b')]+'%'};return _0x7b17a2;})});}_0x18d1ae=_['merge']({},_0x18d1ae,_0x3f6762[_0x795e('0x40')]);return _0x185c83[_0x795e('0x87')](_0x18d1ae);}})[_0x795e('0x24')](function(_0x3cfd3c){if(_0x3cfd3c){_0x22bfbd=_0x3cfd3c[_0x795e('0x38')];if(!_0x3f6762[_0x795e('0x33')][_0x795e('0x57')](_0x795e('0x39'))){_0x18d1ae['limit']=qs['limit'](_0x3f6762['query'][_0x795e('0x1d')]);_0x18d1ae['offset']=qs['offset'](_0x3f6762[_0x795e('0x33')][_0x795e('0x1c')]);}return _0x185c83[_0x795e('0x87')](_0x18d1ae);}})[_0x795e('0x24')](function(_0x4daa4c){if(_0x4daa4c){return _0x4daa4c?{'count':_0x22bfbd,'rows':_0x4daa4c}:null;}})['then'](respondWithResult(_0x3d4999,null))[_0x795e('0x44')](handleError(_0x3d4999,null));};
\ No newline at end of file
+var _0x95b3=['addAgents','omit','userFaxQueue:save','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','localhost','./faxQueue.socket','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','end','sendStatus','error','stack','name','index','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','FaxQueue','findAll','catch','show','params','rawAttributes','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','FaxQueues','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','UserFaxQueue','nolimit','FaxQueueId','map','findAndCountAll','UserId','updatedAt','createdAt','rows','format','SIP','getTeams','Team','pick','addTeams','ids','Agents','online','voicePause','flatMap','sequelize','forEach','emit','User','select','field','tq.TeamId','from','team_has_fax_queues','join','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','value','transaction','removeTeams','isEmpty','removeAgents','userFaxQueue:remove'];(function(_0x47f7ec,_0x369f9d){var _0x415101=function(_0x41317a){while(--_0x41317a){_0x47f7ec['push'](_0x47f7ec['shift']());}};_0x415101(++_0x369f9d);}(_0x95b3,0x94));var _0x395b=function(_0x3b57fe,_0x2f8615){_0x3b57fe=_0x3b57fe-0x0;var _0x570ed3=_0x95b3[_0x3b57fe];return _0x570ed3;};'use strict';var emlformat=require(_0x395b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x395b('0x1'));var jsonpatch=require(_0x395b('0x2'));var rp=require(_0x395b('0x3'));var moment=require(_0x395b('0x4'));var BPromise=require(_0x395b('0x5'));var Mustache=require(_0x395b('0x6'));var util=require(_0x395b('0x7'));var path=require(_0x395b('0x8'));var sox=require(_0x395b('0x9'));var csv=require(_0x395b('0xa'));var ejs=require(_0x395b('0xb'));var fs=require('fs');var fs_extra=require(_0x395b('0xc'));var _=require(_0x395b('0xd'));var squel=require(_0x395b('0xe'));var crypto=require('crypto');var jsforce=require(_0x395b('0xf'));var deskjs=require(_0x395b('0x10'));var toCsv=require(_0x395b('0xa'));var querystring=require(_0x395b('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x395b('0x12'));var qs=require(_0x395b('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x395b('0x14'));var logger=require(_0x395b('0x15'))(_0x395b('0x16'));var utils=require(_0x395b('0x17'));var config=require(_0x395b('0x18'));var licenseUtil=require(_0x395b('0x19'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x395b('0x1a')](config[_0x395b('0x1b')],{'host':_0x395b('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x395b('0x1b')]));require(_0x395b('0x1d'))['register'](socket);function respondWithStatusCode(_0x13d5c6,_0x33bc70){_0x33bc70=_0x33bc70||0xcc;return function(_0x2d36f0){if(_0x2d36f0){return _0x13d5c6['sendStatus'](_0x33bc70);}return _0x13d5c6[_0x395b('0x1e')](_0x33bc70)['end']();};}function respondWithResult(_0x1ce6e9,_0x229922){_0x229922=_0x229922||0xc8;return function(_0x399c61){if(_0x399c61){return _0x1ce6e9[_0x395b('0x1e')](_0x229922)['json'](_0x399c61);}};}function respondWithFilteredResult(_0x19eb14,_0x234adb){return function(_0x45e562){if(_0x45e562){var _0x5270a0=typeof _0x234adb[_0x395b('0x1f')]===_0x395b('0x20')&&typeof _0x234adb[_0x395b('0x21')]==='undefined';var _0x5e23f9=_0x45e562[_0x395b('0x22')];var _0x883b3f=_0x5270a0?0x0:_0x234adb[_0x395b('0x1f')];var _0x2a880c=_0x5270a0?_0x45e562['count']:_0x234adb[_0x395b('0x1f')]+_0x234adb[_0x395b('0x21')];var _0x5dd4f5;if(_0x2a880c>=_0x5e23f9){_0x2a880c=_0x5e23f9;_0x5dd4f5=0xc8;}else{_0x5dd4f5=0xce;}_0x19eb14['status'](_0x5dd4f5);return _0x19eb14[_0x395b('0x23')](_0x395b('0x24'),_0x883b3f+'-'+_0x2a880c+'/'+_0x5e23f9)[_0x395b('0x25')](_0x45e562);}return null;};}function patchUpdates(_0x5b1d8c){return function(_0x57a419){try{jsonpatch[_0x395b('0x26')](_0x57a419,_0x5b1d8c,!![]);}catch(_0x4c8e70){return BPromise[_0x395b('0x27')](_0x4c8e70);}return _0x57a419[_0x395b('0x28')]();};}function saveUpdates(_0x4c699d,_0x13f8e2){return function(_0x36dee1){if(_0x36dee1){return _0x36dee1[_0x395b('0x29')](_0x4c699d)[_0x395b('0x2a')](function(_0x4af5fb){return _0x4af5fb;});}return null;};}function removeEntity(_0x466cfe,_0x823ec3){return function(_0xda5686){if(_0xda5686){return _0xda5686[_0x395b('0x2b')]()[_0x395b('0x2a')](function(){var _0x1bcd4d=_0xda5686[_0x395b('0x2c')]({'plain':!![]});var _0x413a92='FaxQueues';return db['UserProfileResource']['destroy']({'where':{'type':_0x413a92,'resourceId':_0x1bcd4d['id']}})[_0x395b('0x2a')](function(){return _0xda5686;});})[_0x395b('0x2a')](function(){_0x466cfe[_0x395b('0x1e')](0xcc)[_0x395b('0x2d')]();});}};}function handleEntityNotFound(_0x3593ce,_0x63704f){return function(_0x46d9c2){if(!_0x46d9c2){_0x3593ce[_0x395b('0x2e')](0x194);}return _0x46d9c2;};}function handleError(_0x4969e6,_0x3d1469){_0x3d1469=_0x3d1469||0x1f4;return function(_0x55055d){logger[_0x395b('0x2f')](_0x55055d[_0x395b('0x30')]);if(_0x55055d[_0x395b('0x31')]){delete _0x55055d[_0x395b('0x31')];}_0x4969e6[_0x395b('0x1e')](_0x3d1469)['send'](_0x55055d);};}exports[_0x395b('0x32')]=function(_0x928333,_0x474423){var _0x33e092={},_0x49b966={},_0x4309b8={'count':0x0,'rows':[]};var _0x18a339=_['map'](db['FaxQueue']['rawAttributes'],function(_0x26b618){return{'name':_0x26b618[_0x395b('0x33')],'type':_0x26b618[_0x395b('0x34')][_0x395b('0x35')]};});_0x49b966[_0x395b('0x36')]=_['map'](_0x18a339,_0x395b('0x31'));_0x49b966['query']=_[_0x395b('0x37')](_0x928333[_0x395b('0x38')]);_0x49b966[_0x395b('0x39')]=_[_0x395b('0x3a')](_0x49b966['model'],_0x49b966[_0x395b('0x38')]);_0x33e092[_0x395b('0x3b')]=_[_0x395b('0x3a')](_0x49b966['model'],qs[_0x395b('0x3c')](_0x928333[_0x395b('0x38')][_0x395b('0x3c')]));_0x33e092[_0x395b('0x3b')]=_0x33e092['attributes']['length']?_0x33e092[_0x395b('0x3b')]:_0x49b966['model'];if(!_0x928333[_0x395b('0x38')][_0x395b('0x3d')]('nolimit')){_0x33e092[_0x395b('0x21')]=qs[_0x395b('0x21')](_0x928333[_0x395b('0x38')][_0x395b('0x21')]);_0x33e092['offset']=qs['offset'](_0x928333[_0x395b('0x38')]['offset']);}_0x33e092[_0x395b('0x3e')]=qs[_0x395b('0x3f')](_0x928333[_0x395b('0x38')][_0x395b('0x3f')]);_0x33e092[_0x395b('0x40')]=qs[_0x395b('0x39')](_['pick'](_0x928333[_0x395b('0x38')],_0x49b966[_0x395b('0x39')]),_0x18a339);if(_0x928333[_0x395b('0x38')]['filter']){_0x33e092[_0x395b('0x40')]=_[_0x395b('0x41')](_0x33e092[_0x395b('0x40')],{'$or':_['map'](_0x18a339,function(_0x222047){if(_0x222047['type']!==_0x395b('0x42')){var _0x2adf7b={};_0x2adf7b[_0x222047['name']]={'$like':'%'+_0x928333[_0x395b('0x38')][_0x395b('0x43')]+'%'};return _0x2adf7b;}})});}_0x33e092=_['merge']({},_0x33e092,_0x928333[_0x395b('0x44')]);var _0x307429={'where':_0x33e092['where']};return db['FaxQueue']['count'](_0x307429)[_0x395b('0x2a')](function(_0x247157){_0x4309b8['count']=_0x247157;if(_0x928333[_0x395b('0x38')][_0x395b('0x45')]){_0x33e092[_0x395b('0x46')]=[{'all':!![]}];}return db[_0x395b('0x47')][_0x395b('0x48')](_0x33e092);})[_0x395b('0x2a')](function(_0x149b02){_0x4309b8['rows']=_0x149b02;return _0x4309b8;})['then'](respondWithFilteredResult(_0x474423,_0x33e092))[_0x395b('0x49')](handleError(_0x474423,null));};exports[_0x395b('0x4a')]=function(_0xec6e9c,_0x4888f1){var _0x2b73df={'raw':!![],'where':{'id':_0xec6e9c[_0x395b('0x4b')]['id']}},_0x4b82f9={};_0x4b82f9[_0x395b('0x36')]=_['keys'](db[_0x395b('0x47')][_0x395b('0x4c')]);_0x4b82f9[_0x395b('0x38')]=_[_0x395b('0x37')](_0xec6e9c[_0x395b('0x38')]);_0x4b82f9['filters']=_[_0x395b('0x3a')](_0x4b82f9['model'],_0x4b82f9[_0x395b('0x38')]);_0x2b73df[_0x395b('0x3b')]=_[_0x395b('0x3a')](_0x4b82f9[_0x395b('0x36')],qs['fields'](_0xec6e9c[_0x395b('0x38')][_0x395b('0x3c')]));_0x2b73df['attributes']=_0x2b73df[_0x395b('0x3b')][_0x395b('0x4d')]?_0x2b73df[_0x395b('0x3b')]:_0x4b82f9[_0x395b('0x36')];if(_0xec6e9c[_0x395b('0x38')][_0x395b('0x45')]){_0x2b73df[_0x395b('0x46')]=[{'all':!![]}];}_0x2b73df=_['merge']({},_0x2b73df,_0xec6e9c['options']);return db[_0x395b('0x47')][_0x395b('0x4e')](_0x2b73df)[_0x395b('0x2a')](handleEntityNotFound(_0x4888f1,null))[_0x395b('0x2a')](respondWithResult(_0x4888f1,null))[_0x395b('0x49')](handleError(_0x4888f1,null));};exports[_0x395b('0x4f')]=function(_0x45f1a3,_0x3aec4e){return db['FaxQueue'][_0x395b('0x4f')](_0x45f1a3[_0x395b('0x50')],{})[_0x395b('0x2a')](function(_0x4ca019){var _0x2d2f2a=_0x45f1a3[_0x395b('0x51')][_0x395b('0x2c')]({'plain':!![]});if(!_0x2d2f2a)throw new Error(_0x395b('0x52'));if(_0x2d2f2a[_0x395b('0x53')]===_0x395b('0x51')){var _0x2d18cf=_0x4ca019[_0x395b('0x2c')]({'plain':!![]});var _0x4934a1=_0x395b('0x54');return db['UserProfileSection'][_0x395b('0x4e')]({'where':{'name':_0x4934a1,'userProfileId':_0x2d2f2a[_0x395b('0x55')]},'raw':!![]})[_0x395b('0x2a')](function(_0xd3248b){if(_0xd3248b&&_0xd3248b[_0x395b('0x56')]===0x0){return db[_0x395b('0x57')][_0x395b('0x4f')]({'name':_0x2d18cf[_0x395b('0x31')],'resourceId':_0x2d18cf['id'],'type':_0xd3248b['name'],'sectionId':_0xd3248b['id']},{})[_0x395b('0x2a')](function(){return _0x4ca019;});}else{return _0x4ca019;}})[_0x395b('0x49')](function(_0x5b30cb){logger[_0x395b('0x2f')](_0x395b('0x58'),_0x5b30cb);throw _0x5b30cb;});}return _0x4ca019;})[_0x395b('0x2a')](respondWithResult(_0x3aec4e,0xc9))[_0x395b('0x49')](handleError(_0x3aec4e,null));};exports[_0x395b('0x29')]=function(_0x10eaa5,_0x208ecf){if(_0x10eaa5[_0x395b('0x50')]['id']){delete _0x10eaa5[_0x395b('0x50')]['id'];}return db[_0x395b('0x47')][_0x395b('0x4e')]({'where':{'id':_0x10eaa5[_0x395b('0x4b')]['id']}})[_0x395b('0x2a')](handleEntityNotFound(_0x208ecf,null))[_0x395b('0x2a')](saveUpdates(_0x10eaa5['body'],null))[_0x395b('0x2a')](respondWithResult(_0x208ecf,null))['catch'](handleError(_0x208ecf,null));};exports[_0x395b('0x2b')]=function(_0x165dec,_0x397132){return db['FaxQueue'][_0x395b('0x4e')]({'where':{'id':_0x165dec[_0x395b('0x4b')]['id']}})['then'](handleEntityNotFound(_0x397132,null))[_0x395b('0x2a')](removeEntity(_0x397132,null))[_0x395b('0x49')](handleError(_0x397132,null));};exports['describe']=function(_0x2d4d83,_0x3082b4){return db['FaxQueue'][_0x395b('0x59')]()[_0x395b('0x2a')](respondWithResult(_0x3082b4,null))['catch'](handleError(_0x3082b4,null));};exports['getMembers']=function(_0x4ec6a7,_0x50f7fc,_0x51a93c){var _0x40ffd0={'raw':!![],'where':{}},_0x2c84e2={},_0x111968;return db[_0x395b('0x47')][_0x395b('0x5a')]({'where':{'id':_0x4ec6a7[_0x395b('0x4b')]['id']}})[_0x395b('0x2a')](handleEntityNotFound(_0x50f7fc,null))[_0x395b('0x2a')](function(_0x2fe30a){if(_0x2fe30a){_0x111968=_0x2fe30a[_0x395b('0x2c')]({'plain':!![]});_0x2c84e2['model']=_[_0x395b('0x37')](db[_0x395b('0x5b')][_0x395b('0x4c')]);_0x2c84e2[_0x395b('0x38')]=_[_0x395b('0x37')](_0x4ec6a7[_0x395b('0x38')]);_0x2c84e2['filters']=_['intersection'](_0x2c84e2[_0x395b('0x36')],_0x2c84e2[_0x395b('0x38')]);_0x40ffd0[_0x395b('0x3b')]=_[_0x395b('0x3a')](_0x2c84e2[_0x395b('0x36')],qs[_0x395b('0x3c')](_0x4ec6a7[_0x395b('0x38')][_0x395b('0x3c')]));_0x40ffd0[_0x395b('0x3b')]=_0x40ffd0['attributes'][_0x395b('0x4d')]?_0x40ffd0[_0x395b('0x3b')]:_0x2c84e2['model'];if(!_0x4ec6a7[_0x395b('0x38')][_0x395b('0x3d')](_0x395b('0x5c'))){_0x40ffd0[_0x395b('0x21')]=qs[_0x395b('0x21')](_0x4ec6a7['query'][_0x395b('0x21')]);_0x40ffd0[_0x395b('0x1f')]=qs[_0x395b('0x1f')](_0x4ec6a7['query'][_0x395b('0x1f')]);}_0x40ffd0[_0x395b('0x3e')]=qs[_0x395b('0x3f')](_0x4ec6a7['query'][_0x395b('0x3f')]);_0x40ffd0[_0x395b('0x40')]=qs[_0x395b('0x39')](_['pick'](_0x4ec6a7[_0x395b('0x38')],_0x2c84e2['filters']));_0x40ffd0['where'][_0x395b('0x5d')]=_0x2fe30a['id'];if(_0x4ec6a7[_0x395b('0x38')]['filter']){_0x40ffd0['where']=_[_0x395b('0x41')](_0x40ffd0[_0x395b('0x40')],{'$or':_[_0x395b('0x5e')](_0x40ffd0[_0x395b('0x3b')],function(_0x32707c){var _0x364bc7={};_0x364bc7[_0x32707c]={'$like':'%'+_0x4ec6a7[_0x395b('0x38')][_0x395b('0x43')]+'%'};return _0x364bc7;})});}_0x40ffd0=_[_0x395b('0x41')]({},_0x40ffd0,_0x4ec6a7[_0x395b('0x44')]);return db[_0x395b('0x5b')][_0x395b('0x48')](_0x40ffd0);}})[_0x395b('0x2a')](function(_0x581396){if(_0x581396){return db['User'][_0x395b('0x5f')]({'where':{'id':_[_0x395b('0x5e')](_0x581396,_0x395b('0x60')),'role':'agent'},'attributes':['id',_0x395b('0x31'),'faxPause',_0x395b('0x61'),_0x395b('0x62')]});}})['then'](function(_0x30738a){if(_0x30738a){return{'count':_0x30738a[_0x395b('0x22')],'rows':_[_0x395b('0x5e')](_0x30738a[_0x395b('0x63')],function(_0x3c4ec9){return{'membername':_0x3c4ec9[_0x395b('0x31')],'UserId':_0x3c4ec9['id'],'queue_name':_0x111968[_0x395b('0x31')],'FaxQueueId':_0x111968['id'],'interface':util[_0x395b('0x64')]('%s/%s',_0x395b('0x65'),_0x3c4ec9['name']),'penalty':0x0,'paused':_0x3c4ec9['faxPause'],'createdAt':_0x3c4ec9[_0x395b('0x62')],'updatedAt':_0x3c4ec9[_0x395b('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x395b('0x2a')](respondWithFilteredResult(_0x50f7fc,_0x40ffd0))[_0x395b('0x49')](handleError(_0x50f7fc,null));};exports[_0x395b('0x66')]=function(_0x32a9f3,_0x285e8b,_0x277902){var _0x2fab87={};var _0x1aecaa={};var _0x282e42;var _0x21c34e;return db['FaxQueue'][_0x395b('0x5a')]({'where':{'id':_0x32a9f3[_0x395b('0x4b')]['id']}})['then'](handleEntityNotFound(_0x285e8b,null))[_0x395b('0x2a')](function(_0x46b6e8){if(_0x46b6e8){_0x282e42=_0x46b6e8;_0x1aecaa[_0x395b('0x36')]=_[_0x395b('0x37')](db[_0x395b('0x67')][_0x395b('0x4c')]);_0x1aecaa['query']=_[_0x395b('0x37')](_0x32a9f3[_0x395b('0x38')]);_0x1aecaa[_0x395b('0x39')]=_['intersection'](_0x1aecaa['model'],_0x1aecaa[_0x395b('0x38')]);_0x2fab87['attributes']=_[_0x395b('0x3a')](_0x1aecaa[_0x395b('0x36')],qs[_0x395b('0x3c')](_0x32a9f3[_0x395b('0x38')][_0x395b('0x3c')]));_0x2fab87[_0x395b('0x3b')]=_0x2fab87[_0x395b('0x3b')][_0x395b('0x4d')]?_0x2fab87[_0x395b('0x3b')]:_0x1aecaa[_0x395b('0x36')];_0x2fab87['order']=qs[_0x395b('0x3f')](_0x32a9f3[_0x395b('0x38')][_0x395b('0x3f')]);_0x2fab87[_0x395b('0x40')]=qs['filters'](_[_0x395b('0x68')](_0x32a9f3[_0x395b('0x38')],_0x1aecaa[_0x395b('0x39')]));if(_0x32a9f3[_0x395b('0x38')][_0x395b('0x43')]){_0x2fab87[_0x395b('0x40')]=_[_0x395b('0x41')](_0x2fab87['where'],{'$or':_[_0x395b('0x5e')](_0x2fab87['attributes'],function(_0x5ad22e){var _0x5c85e9={};_0x5c85e9[_0x5ad22e]={'$like':'%'+_0x32a9f3[_0x395b('0x38')][_0x395b('0x43')]+'%'};return _0x5c85e9;})});}_0x2fab87=_[_0x395b('0x41')]({},_0x2fab87,_0x32a9f3['options']);return _0x282e42['getTeams'](_0x2fab87);}})['then'](function(_0x3a1d09){if(_0x3a1d09){_0x21c34e=_0x3a1d09[_0x395b('0x4d')];if(!_0x32a9f3['query']['hasOwnProperty'](_0x395b('0x5c'))){_0x2fab87['limit']=qs[_0x395b('0x21')](_0x32a9f3['query'][_0x395b('0x21')]);_0x2fab87[_0x395b('0x1f')]=qs[_0x395b('0x1f')](_0x32a9f3['query']['offset']);}return _0x282e42[_0x395b('0x66')](_0x2fab87);}})[_0x395b('0x2a')](function(_0x5f4e48){if(_0x5f4e48){return _0x5f4e48?{'count':_0x21c34e,'rows':_0x5f4e48}:null;}})[_0x395b('0x2a')](respondWithResult(_0x285e8b,null))['catch'](handleError(_0x285e8b,null));};exports[_0x395b('0x69')]=function(_0x540079,_0x41853c,_0x3b3c0d){var _0x192ed2=_0x540079[_0x395b('0x50')][_0x395b('0x6a')];return db[_0x395b('0x67')][_0x395b('0x48')]({'where':{'id':_0x192ed2},'attributes':['id'],'include':[{'model':db['User'],'as':_0x395b('0x6b'),'attributes':['id',_0x395b('0x31'),_0x395b('0x6c'),_0x395b('0x6d'),'interface'],'raw':!![]}]})[_0x395b('0x2a')](function(_0xbab128){if(_0xbab128){var _0x8007cf=_[_0x395b('0x6e')](_0xbab128,function(_0x5de422){var _0x84bcd=_0x5de422[_0x395b('0x2c')]({'plain':!![]});return _0x84bcd[_0x395b('0x6b')];});return db['FaxQueue'][_0x395b('0x4e')]({'where':{'id':_0x540079[_0x395b('0x4b')]['id']}})['then'](function(_0x4754f1){return db[_0x395b('0x6f')]['transaction'](function(_0x9d2f88){return _0x4754f1['addTeams'](_0x192ed2,{'transaction':_0x9d2f88})[_0x395b('0x2a')](function(){return BPromise['each'](_0x8007cf,function(_0x548f7a){return db[_0x395b('0x5b')]['findOrCreate']({'where':{'UserId':_0x548f7a['id'],'FaxQueueId':_0x540079[_0x395b('0x4b')]['id']},'transaction':_0x9d2f88});});})[_0x395b('0x2a')](function(){_0x8007cf[_0x395b('0x70')](function(_0x4267a5){socket[_0x395b('0x71')]('userFaxQueue:save',{'UserId':_0x4267a5['id'],'FaxQueueId':_0x4754f1['id']});});});});});}})[_0x395b('0x2a')](respondWithStatusCode(_0x41853c,null))['catch'](handleError(_0x41853c,null));};exports['removeTeams']=function(_0xfb39aa,_0x13ab4c,_0xf90d8c){return db[_0x395b('0x67')][_0x395b('0x48')]({'where':{'id':_0xfb39aa['query'][_0x395b('0x6a')]},'attributes':['id'],'include':[{'model':db[_0x395b('0x72')],'as':_0x395b('0x6b'),'attributes':['id'],'raw':!![]}]})[_0x395b('0x2a')](handleEntityNotFound(_0x13ab4c,null))[_0x395b('0x2a')](function(_0x302f48){var _0x34395b=_[_0x395b('0x5e')](_0x302f48,'id');var _0x226dc8=[];var _0x1ffcc8=[];var _0x3552bf=squel[_0x395b('0x73')]();_0x3552bf[_0x395b('0x74')](_0x395b('0x75'))[_0x395b('0x76')](_0x395b('0x77'),'tq')[_0x395b('0x78')]('user_has_teams','ut',_0x395b('0x79'))['where']('FaxQueueId\x20=\x20?',_0xfb39aa[_0x395b('0x4b')]['id']);for(var _0x597ac4=0x0;_0x597ac4<_0x302f48[_0x395b('0x4d')];_0x597ac4+=0x1){let _0x643ddf=_0x302f48[_0x597ac4];for(var _0x26e369=0x0;_0x26e369<_0x643ddf['Agents'][_0x395b('0x4d')];_0x26e369+=0x1){let _0x3af6c1=_0x643ddf['Agents'][_0x26e369];var _0x1351c7=_0x3552bf[_0x395b('0x7a')]();_0x1351c7[_0x395b('0x40')](_0x395b('0x7b'),_0x3af6c1['id']);_0x1ffcc8['push'](db[_0x395b('0x6f')][_0x395b('0x38')](_0x1351c7[_0x395b('0x7c')](),{'type':db[_0x395b('0x6f')][_0x395b('0x7d')][_0x395b('0x7e')]})[_0x395b('0x2a')](function(_0x5109cc){if(_0x5109cc['length']===0x1){return _0x3af6c1['id'];}else{var _0x4f621e=_[_0x395b('0x7f')](_[_0x395b('0x5e')](_0x5109cc,_0x395b('0x80')),function(_0x141872){return _[_0x395b('0x81')](_0x34395b,_0x141872);});if(_0x4f621e){return _0x3af6c1['id'];}}}));}}return BPromise[_0x395b('0x82')](_0x1ffcc8)[_0x395b('0x2a')](function(_0x26f514){_0x226dc8=_(_0x226dc8)[_0x395b('0x83')](_0x26f514)['compact']()[_0x395b('0x84')]();return db[_0x395b('0x47')][_0x395b('0x4e')]({'where':{'id':_0xfb39aa['params']['id']}})['then'](function(_0x1d248e){return db[_0x395b('0x6f')][_0x395b('0x85')](function(_0x3c98f1){return _0x1d248e[_0x395b('0x86')](_0xfb39aa['query']['ids'],{'transaction':_0x3c98f1})[_0x395b('0x2a')](function(){if(!_[_0x395b('0x87')](_0x226dc8)){return _0x1d248e[_0x395b('0x88')](_0x226dc8,{'transaction':_0x3c98f1});}})[_0x395b('0x2a')](function(){_0x226dc8[_0x395b('0x70')](function(_0x2d1342){socket[_0x395b('0x71')](_0x395b('0x89'),{'UserId':_0x2d1342,'FaxQueueId':_0x1d248e['id']});});});});});});})[_0x395b('0x2a')](respondWithStatusCode(_0x13ab4c,null))[_0x395b('0x49')](handleError(_0x13ab4c,null));};exports[_0x395b('0x8a')]=function(_0x5a021f,_0x2185f1,_0x407b95){return db[_0x395b('0x47')][_0x395b('0x4e')]({'where':{'id':_0x5a021f[_0x395b('0x4b')]['id']}})[_0x395b('0x2a')](handleEntityNotFound(_0x2185f1,null))['then'](function(_0x51d8d3){if(_0x51d8d3){return _0x51d8d3[_0x395b('0x8a')](_0x5a021f['body'][_0x395b('0x6a')],_[_0x395b('0x8b')](_0x5a021f[_0x395b('0x50')],[_0x395b('0x6a'),'id'])||{})['spread'](function(_0x33f175){for(var _0x3613e8=0x0;_0x3613e8<_0x5a021f[_0x395b('0x50')][_0x395b('0x6a')][_0x395b('0x4d')];_0x3613e8+=0x1){socket['emit'](_0x395b('0x8c'),{'UserId':Number(_0x5a021f[_0x395b('0x50')][_0x395b('0x6a')][_0x3613e8]),'FaxQueueId':Number(_0x5a021f[_0x395b('0x4b')]['id'])});}return _0x33f175;});}})['then'](respondWithResult(_0x2185f1,null))['catch'](handleError(_0x2185f1,null));};exports[_0x395b('0x88')]=function(_0x2f3ce7,_0x143719,_0x615744){return db[_0x395b('0x47')][_0x395b('0x4e')]({'where':{'id':_0x2f3ce7[_0x395b('0x4b')]['id']}})['then'](handleEntityNotFound(_0x143719,null))[_0x395b('0x2a')](function(_0x473901){if(_0x473901){return _0x473901[_0x395b('0x88')](_0x2f3ce7['query'][_0x395b('0x6a')])[_0x395b('0x2a')](function(){if(_[_0x395b('0x8d')](_0x2f3ce7[_0x395b('0x38')][_0x395b('0x6a')])){for(var _0x4a0674=0x0;_0x4a0674<_0x2f3ce7[_0x395b('0x38')][_0x395b('0x6a')][_0x395b('0x4d')];_0x4a0674+=0x1){socket[_0x395b('0x71')](_0x395b('0x89'),{'UserId':Number(_0x2f3ce7['query'][_0x395b('0x6a')][_0x4a0674]),'FaxQueueId':Number(_0x2f3ce7['params']['id'])});}}else{socket[_0x395b('0x71')]('userFaxQueue:remove',{'UserId':Number(_0x2f3ce7[_0x395b('0x38')][_0x395b('0x6a')]),'FaxQueueId':Number(_0x2f3ce7[_0x395b('0x4b')]['id'])});}});}})[_0x395b('0x2a')](respondWithStatusCode(_0x143719,null))[_0x395b('0x49')](handleError(_0x143719,null));};exports[_0x395b('0x8e')]=function(_0x27e93b,_0xc77f7,_0x545e40){var _0x4f070a={};var _0x398d74={};var _0x14bf9c;var _0x176916;return db[_0x395b('0x47')][_0x395b('0x5a')]({'where':{'id':_0x27e93b['params']['id']}})[_0x395b('0x2a')](handleEntityNotFound(_0xc77f7,null))[_0x395b('0x2a')](function(_0x3b81e4){if(_0x3b81e4){_0x14bf9c=_0x3b81e4;_0x398d74[_0x395b('0x36')]=_[_0x395b('0x37')](db[_0x395b('0x72')][_0x395b('0x4c')]);_0x398d74[_0x395b('0x38')]=_['keys'](_0x27e93b[_0x395b('0x38')]);_0x398d74[_0x395b('0x39')]=_[_0x395b('0x3a')](_0x398d74[_0x395b('0x36')],_0x398d74[_0x395b('0x38')]);_0x4f070a[_0x395b('0x3b')]=_['intersection'](_0x398d74[_0x395b('0x36')],qs[_0x395b('0x3c')](_0x27e93b['query'][_0x395b('0x3c')]));_0x4f070a[_0x395b('0x3b')]=_0x4f070a['attributes'][_0x395b('0x4d')]?_0x4f070a[_0x395b('0x3b')]:_0x398d74[_0x395b('0x36')];_0x4f070a['order']=qs[_0x395b('0x3f')](_0x27e93b[_0x395b('0x38')][_0x395b('0x3f')]);_0x4f070a[_0x395b('0x40')]=qs['filters'](_[_0x395b('0x68')](_0x27e93b[_0x395b('0x38')],_0x398d74[_0x395b('0x39')]));if(_0x27e93b[_0x395b('0x38')]['filter']){_0x4f070a['where']=_[_0x395b('0x41')](_0x4f070a['where'],{'$or':_[_0x395b('0x5e')](_0x4f070a['attributes'],function(_0x3757b9){var _0x345f40={};_0x345f40[_0x3757b9]={'$like':'%'+_0x27e93b[_0x395b('0x38')][_0x395b('0x43')]+'%'};return _0x345f40;})});}_0x4f070a=_[_0x395b('0x41')]({},_0x4f070a,_0x27e93b['options']);return _0x14bf9c[_0x395b('0x8e')](_0x4f070a);}})[_0x395b('0x2a')](function(_0x54527b){if(_0x54527b){_0x176916=_0x54527b[_0x395b('0x4d')];if(!_0x27e93b[_0x395b('0x38')]['hasOwnProperty'](_0x395b('0x5c'))){_0x4f070a[_0x395b('0x21')]=qs['limit'](_0x27e93b[_0x395b('0x38')][_0x395b('0x21')]);_0x4f070a[_0x395b('0x1f')]=qs[_0x395b('0x1f')](_0x27e93b[_0x395b('0x38')][_0x395b('0x1f')]);}return _0x14bf9c['getAgents'](_0x4f070a);}})[_0x395b('0x2a')](function(_0x345712){if(_0x345712){return _0x345712?{'count':_0x176916,'rows':_0x345712}:null;}})[_0x395b('0x2a')](respondWithResult(_0xc77f7,null))[_0x395b('0x49')](handleError(_0xc77f7,null));};
\ No newline at end of file
index 1560a23..700fa22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5556=['events','../../mysqldb','FaxQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x2239d4,_0x387000){var _0x12da04=function(_0x1bfd42){while(--_0x1bfd42){_0x2239d4['push'](_0x2239d4['shift']());}};_0x12da04(++_0x387000);}(_0x5556,0x1ce));var _0x6555=function(_0x4f7ca7,_0x5099e7){_0x4f7ca7=_0x4f7ca7-0x0;var _0x55f6b0=_0x5556[_0x4f7ca7];return _0x55f6b0;};'use strict';var EventEmitter=require(_0x6555('0x0'));var FaxQueue=require(_0x6555('0x1'))['db'][_0x6555('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x6555('0x3')](0x0);var events={'afterCreate':_0x6555('0x4'),'afterUpdate':_0x6555('0x5'),'afterDestroy':_0x6555('0x6')};function emitEvent(_0x202a08){return function(_0x346369,_0x16f000,_0x6148f8){FaxQueueEvents[_0x6555('0x7')](_0x202a08+':'+_0x346369['id'],_0x346369);FaxQueueEvents[_0x6555('0x7')](_0x202a08,_0x346369);_0x6148f8(null);};}for(var e in events){if(events[_0x6555('0x8')](e)){var event=events[e];FaxQueue[_0x6555('0x9')](e,emitEvent(event));}}module[_0x6555('0xa')]=FaxQueueEvents;
\ No newline at end of file
+var _0x6ca8=['emit','hasOwnProperty','hook','exports','../../mysqldb','FaxQueue','setMaxListeners','update','remove'];(function(_0x4df937,_0x40b86c){var _0x2e2e51=function(_0x293584){while(--_0x293584){_0x4df937['push'](_0x4df937['shift']());}};_0x2e2e51(++_0x40b86c);}(_0x6ca8,0x136));var _0x86ca=function(_0x26194f,_0x2f47f3){_0x26194f=_0x26194f-0x0;var _0x335df3=_0x6ca8[_0x26194f];return _0x335df3;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0x86ca('0x0'))['db'][_0x86ca('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x86ca('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x86ca('0x3'),'afterDestroy':_0x86ca('0x4')};function emitEvent(_0x1694e4){return function(_0x5a2160,_0x4d6671,_0x324549){FaxQueueEvents[_0x86ca('0x5')](_0x1694e4+':'+_0x5a2160['id'],_0x5a2160);FaxQueueEvents[_0x86ca('0x5')](_0x1694e4,_0x5a2160);_0x324549(null);};}for(var e in events){if(events[_0x86ca('0x6')](e)){var event=events[e];FaxQueue[_0x86ca('0x7')](e,emitEvent(event));}}module[_0x86ca('0x8')]=FaxQueueEvents;
\ No newline at end of file
index c7630bc..45634e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa1a=['rimraf','../../config/environment','./faxQueue.attributes','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x8cb724,_0x5e78d5){var _0x348d6f=function(_0x7b70ea){while(--_0x7b70ea){_0x8cb724['push'](_0x8cb724['shift']());}};_0x348d6f(++_0x5e78d5);}(_0xaa1a,0x17f));var _0xaaa1=function(_0x325501,_0x5242f6){_0x325501=_0x325501-0x0;var _0x2c1626=_0xaa1a[_0x325501];return _0x2c1626;};'use strict';var _=require(_0xaaa1('0x0'));var util=require(_0xaaa1('0x1'));var logger=require(_0xaaa1('0x2'))('api');var moment=require(_0xaaa1('0x3'));var BPromise=require(_0xaaa1('0x4'));var rp=require(_0xaaa1('0x5'));var fs=require('fs');var path=require(_0xaaa1('0x6'));var rimraf=require(_0xaaa1('0x7'));var config=require(_0xaaa1('0x8'));var attributes=require(_0xaaa1('0x9'));module['exports']=function(_0x31fc48,_0x5527a6){return _0x31fc48['define']('FaxQueue',attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0809=['bluebird','request-promise','path','rimraf','../../config/environment','./faxQueue.attributes','exports','FaxQueue','fax_queues','lodash','util','../../config/logger','api','moment'];(function(_0x2f244b,_0x1c7a9f){var _0x38beea=function(_0x4de55f){while(--_0x4de55f){_0x2f244b['push'](_0x2f244b['shift']());}};_0x38beea(++_0x1c7a9f);}(_0x0809,0xcd));var _0x9080=function(_0x3ba4b5,_0x4f9765){_0x3ba4b5=_0x3ba4b5-0x0;var _0xce9569=_0x0809[_0x3ba4b5];return _0xce9569;};'use strict';var _=require(_0x9080('0x0'));var util=require(_0x9080('0x1'));var logger=require(_0x9080('0x2'))(_0x9080('0x3'));var moment=require(_0x9080('0x4'));var BPromise=require(_0x9080('0x5'));var rp=require(_0x9080('0x6'));var fs=require('fs');var path=require(_0x9080('0x7'));var rimraf=require(_0x9080('0x8'));var config=require(_0x9080('0x9'));var attributes=require(_0x9080('0xa'));module[_0x9080('0xb')]=function(_0x3a89bb,_0x26981a){return _0x3a89bb['define'](_0x9080('0xc'),attributes,{'tableName':_0x9080('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8a3163b..ef508da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcf0=['ioredis','../../mysqldb','rpc','../../config/environment','client','http','redis','socket.io-emitter','./faxQueue.socket','request','info','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxQueue,\x20%s,\x20%s','message','catch','FaxQueue','findAll','options','where','attributes','limit','include','map','model','then','GetFaxQueue','raw','ShowFaxQueue','lodash','util','moment','bluebird','randomstring'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbcf0,0x19d));var _0x0bcf=function(_0x5d80de,_0x2cf15d){_0x5d80de=_0x5d80de-0x0;var _0x1c7556=_0xbcf0[_0x5d80de];return _0x1c7556;};'use strict';var _=require(_0x0bcf('0x0'));var util=require(_0x0bcf('0x1'));var moment=require(_0x0bcf('0x2'));var BPromise=require(_0x0bcf('0x3'));var rs=require(_0x0bcf('0x4'));var fs=require('fs');var Redis=require(_0x0bcf('0x5'));var db=require(_0x0bcf('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x0bcf('0x7'));var config=require(_0x0bcf('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0bcf('0x9')][_0x0bcf('0xa')]({'port':0x232a});config[_0x0bcf('0xb')]=_['defaults'](config[_0x0bcf('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x0bcf('0xc'))(new Redis(config[_0x0bcf('0xb')]));require(_0x0bcf('0xd'))['register'](socket);function respondWithRpcPromise(_0xafa0e8,_0x264778,_0xd9c848){return new BPromise(function(_0x47aada,_0x306257){return client[_0x0bcf('0xe')](_0xafa0e8,_0xd9c848)['then'](function(_0x4649b6){logger[_0x0bcf('0xf')]('FaxQueue,\x20%s,\x20%s',_0x264778,_0x0bcf('0x10'));logger[_0x0bcf('0x11')](_0x0bcf('0x12'),_0x264778,'request\x20sent',JSON[_0x0bcf('0x13')](_0x4649b6));if(_0x4649b6[_0x0bcf('0x14')]){if(_0x4649b6[_0x0bcf('0x14')][_0x0bcf('0x15')]===0x1f4){logger['error'](_0x0bcf('0x16'),_0x264778,_0x4649b6[_0x0bcf('0x14')][_0x0bcf('0x17')]);return _0x306257(_0x4649b6[_0x0bcf('0x14')][_0x0bcf('0x17')]);}logger['error']('FaxQueue,\x20%s,\x20%s',_0x264778,_0x4649b6[_0x0bcf('0x14')]['message']);return _0x47aada(_0x4649b6['error'][_0x0bcf('0x17')]);}else{logger['info'](_0x0bcf('0x16'),_0x264778,_0x0bcf('0x10'));_0x47aada(_0x4649b6['result'][_0x0bcf('0x17')]);}})[_0x0bcf('0x18')](function(_0x547eaf){logger['error'](_0x0bcf('0x16'),_0x264778,_0x547eaf);_0x306257(_0x547eaf);});});}exports['GetFaxQueue']=function(_0xc29c80){var _0x48f733=this;return new Promise(function(_0x489b65,_0xe6daba){return db[_0x0bcf('0x19')][_0x0bcf('0x1a')]({'raw':_0xc29c80[_0x0bcf('0x1b')]?_0xc29c80[_0x0bcf('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0xc29c80['options']?_0xc29c80[_0x0bcf('0x1b')][_0x0bcf('0x1c')]||null:null,'attributes':_0xc29c80[_0x0bcf('0x1b')]?_0xc29c80['options'][_0x0bcf('0x1d')]||null:null,'limit':_0xc29c80[_0x0bcf('0x1b')]?_0xc29c80['options'][_0x0bcf('0x1e')]||null:null,'include':_0xc29c80[_0x0bcf('0x1b')]?_0xc29c80[_0x0bcf('0x1b')][_0x0bcf('0x1f')]?_[_0x0bcf('0x20')](_0xc29c80[_0x0bcf('0x1b')][_0x0bcf('0x1f')],function(_0x37bd04){return{'model':db[_0x37bd04[_0x0bcf('0x21')]],'as':_0x37bd04['as'],'attributes':_0x37bd04['attributes'],'include':_0x37bd04[_0x0bcf('0x1f')]?_[_0x0bcf('0x20')](_0x37bd04[_0x0bcf('0x1f')],function(_0x130493){return{'model':db[_0x130493[_0x0bcf('0x21')]],'as':_0x130493['as'],'attributes':_0x130493[_0x0bcf('0x1d')],'include':_0x130493[_0x0bcf('0x1f')]?_['map'](_0x130493[_0x0bcf('0x1f')],function(_0x1a714b){return{'model':db[_0x1a714b[_0x0bcf('0x21')]],'as':_0x1a714b['as'],'attributes':_0x1a714b['attributes']};}):[]};}):[]};}):[]:[]})[_0x0bcf('0x22')](function(_0x439ab3){logger[_0x0bcf('0xf')]('GetFaxQueue',_0xc29c80);logger[_0x0bcf('0x11')]('GetFaxQueue',_0xc29c80,JSON[_0x0bcf('0x13')](_0x439ab3));_0x489b65(_0x439ab3);})['catch'](function(_0x1cad98){logger[_0x0bcf('0x14')](_0x0bcf('0x23'),_0x1cad98[_0x0bcf('0x17')],_0xc29c80);_0xe6daba(_0x48f733[_0x0bcf('0x14')](0x1f4,_0x1cad98[_0x0bcf('0x17')]));});});};exports['ShowFaxQueue']=function(_0x2bbfcd){var _0xd24c17=this;return new Promise(function(_0x1255ba,_0x5a40af){return db['FaxQueue']['find']({'raw':_0x2bbfcd['options']?_0x2bbfcd[_0x0bcf('0x1b')][_0x0bcf('0x24')]===undefined?!![]:![]:!![],'where':_0x2bbfcd['options']?_0x2bbfcd[_0x0bcf('0x1b')][_0x0bcf('0x1c')]||null:null,'attributes':_0x2bbfcd['options']?_0x2bbfcd['options']['attributes']||null:null,'include':_0x2bbfcd[_0x0bcf('0x1b')]?_0x2bbfcd['options'][_0x0bcf('0x1f')]?_[_0x0bcf('0x20')](_0x2bbfcd[_0x0bcf('0x1b')][_0x0bcf('0x1f')],function(_0x121ae2){return{'model':db[_0x121ae2[_0x0bcf('0x21')]],'as':_0x121ae2['as'],'attributes':_0x121ae2[_0x0bcf('0x1d')],'include':_0x121ae2[_0x0bcf('0x1f')]?_[_0x0bcf('0x20')](_0x121ae2['include'],function(_0x50afbe){return{'model':db[_0x50afbe[_0x0bcf('0x21')]],'as':_0x50afbe['as'],'attributes':_0x50afbe[_0x0bcf('0x1d')],'include':_0x50afbe[_0x0bcf('0x1f')]?_['map'](_0x50afbe[_0x0bcf('0x1f')],function(_0x4c1c2e){return{'model':db[_0x4c1c2e[_0x0bcf('0x21')]],'as':_0x4c1c2e['as'],'attributes':_0x4c1c2e[_0x0bcf('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x0bcf('0x22')](function(_0x1f6d95){logger['info'](_0x0bcf('0x25'),_0x2bbfcd);logger[_0x0bcf('0x11')](_0x0bcf('0x25'),_0x2bbfcd,JSON[_0x0bcf('0x13')](_0x1f6d95));_0x1255ba(_0x1f6d95);})[_0x0bcf('0x18')](function(_0x1b8fec){logger[_0x0bcf('0x14')](_0x0bcf('0x25'),_0x1b8fec[_0x0bcf('0x17')],_0x2bbfcd);_0x5a40af(_0xd24c17[_0x0bcf('0x14')](0x1f4,_0x1b8fec['message']));});});};
\ No newline at end of file
+var _0x79d8=['stringify','error','code','FaxQueue,\x20%s,\x20%s','message','info','result','catch','GetFaxQueue','FaxQueue','findAll','options','where','attributes','limit','include','map','model','ShowFaxQueue','find','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','redis','defaults','localhost','register','request','then','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s'];(function(_0x4c105a,_0xb47453){var _0x3f36a9=function(_0x5172ec){while(--_0x5172ec){_0x4c105a['push'](_0x4c105a['shift']());}};_0x3f36a9(++_0xb47453);}(_0x79d8,0x14d));var _0x879d=function(_0x459f58,_0x18e32f){_0x459f58=_0x459f58-0x0;var _0x36de05=_0x79d8[_0x459f58];return _0x36de05;};'use strict';var _=require(_0x879d('0x0'));var util=require(_0x879d('0x1'));var moment=require(_0x879d('0x2'));var BPromise=require(_0x879d('0x3'));var rs=require(_0x879d('0x4'));var fs=require('fs');var Redis=require(_0x879d('0x5'));var db=require(_0x879d('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x879d('0x7'));var config=require('../../config/environment');var jayson=require(_0x879d('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x879d('0x9')]=_[_0x879d('0xa')](config[_0x879d('0x9')],{'host':_0x879d('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./faxQueue.socket')[_0x879d('0xc')](socket);function respondWithRpcPromise(_0x2866fb,_0x2bc648,_0x620676){return new BPromise(function(_0x741897,_0x411785){return client[_0x879d('0xd')](_0x2866fb,_0x620676)[_0x879d('0xe')](function(_0x4dbd53){logger['info']('FaxQueue,\x20%s,\x20%s',_0x2bc648,_0x879d('0xf'));logger[_0x879d('0x10')](_0x879d('0x11'),_0x2bc648,_0x879d('0xf'),JSON[_0x879d('0x12')](_0x4dbd53));if(_0x4dbd53[_0x879d('0x13')]){if(_0x4dbd53['error'][_0x879d('0x14')]===0x1f4){logger[_0x879d('0x13')](_0x879d('0x15'),_0x2bc648,_0x4dbd53[_0x879d('0x13')][_0x879d('0x16')]);return _0x411785(_0x4dbd53[_0x879d('0x13')][_0x879d('0x16')]);}logger['error'](_0x879d('0x15'),_0x2bc648,_0x4dbd53['error'][_0x879d('0x16')]);return _0x741897(_0x4dbd53[_0x879d('0x13')][_0x879d('0x16')]);}else{logger[_0x879d('0x17')](_0x879d('0x15'),_0x2bc648,_0x879d('0xf'));_0x741897(_0x4dbd53[_0x879d('0x18')][_0x879d('0x16')]);}})[_0x879d('0x19')](function(_0x45e2e3){logger[_0x879d('0x13')](_0x879d('0x15'),_0x2bc648,_0x45e2e3);_0x411785(_0x45e2e3);});});}exports[_0x879d('0x1a')]=function(_0x1c7ef2){var _0x265854=this;return new Promise(function(_0x2505c1,_0x3bb0a5){return db[_0x879d('0x1b')][_0x879d('0x1c')]({'raw':_0x1c7ef2[_0x879d('0x1d')]?_0x1c7ef2[_0x879d('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x1c7ef2['options']?_0x1c7ef2[_0x879d('0x1d')][_0x879d('0x1e')]||null:null,'attributes':_0x1c7ef2['options']?_0x1c7ef2[_0x879d('0x1d')][_0x879d('0x1f')]||null:null,'limit':_0x1c7ef2['options']?_0x1c7ef2[_0x879d('0x1d')][_0x879d('0x20')]||null:null,'include':_0x1c7ef2['options']?_0x1c7ef2['options'][_0x879d('0x21')]?_[_0x879d('0x22')](_0x1c7ef2[_0x879d('0x1d')][_0x879d('0x21')],function(_0x4776e7){return{'model':db[_0x4776e7[_0x879d('0x23')]],'as':_0x4776e7['as'],'attributes':_0x4776e7[_0x879d('0x1f')],'include':_0x4776e7[_0x879d('0x21')]?_[_0x879d('0x22')](_0x4776e7[_0x879d('0x21')],function(_0x2b20cb){return{'model':db[_0x2b20cb[_0x879d('0x23')]],'as':_0x2b20cb['as'],'attributes':_0x2b20cb['attributes'],'include':_0x2b20cb[_0x879d('0x21')]?_['map'](_0x2b20cb[_0x879d('0x21')],function(_0x285b96){return{'model':db[_0x285b96[_0x879d('0x23')]],'as':_0x285b96['as'],'attributes':_0x285b96[_0x879d('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x879d('0xe')](function(_0x592a88){logger[_0x879d('0x17')](_0x879d('0x1a'),_0x1c7ef2);logger[_0x879d('0x10')](_0x879d('0x1a'),_0x1c7ef2,JSON['stringify'](_0x592a88));_0x2505c1(_0x592a88);})[_0x879d('0x19')](function(_0x22ceba){logger[_0x879d('0x13')](_0x879d('0x1a'),_0x22ceba[_0x879d('0x16')],_0x1c7ef2);_0x3bb0a5(_0x265854[_0x879d('0x13')](0x1f4,_0x22ceba['message']));});});};exports[_0x879d('0x24')]=function(_0x239f3d){var _0x8f3ed3=this;return new Promise(function(_0x445f8d,_0x4fca03){return db[_0x879d('0x1b')][_0x879d('0x25')]({'raw':_0x239f3d[_0x879d('0x1d')]?_0x239f3d[_0x879d('0x1d')][_0x879d('0x26')]===undefined?!![]:![]:!![],'where':_0x239f3d[_0x879d('0x1d')]?_0x239f3d[_0x879d('0x1d')][_0x879d('0x1e')]||null:null,'attributes':_0x239f3d[_0x879d('0x1d')]?_0x239f3d[_0x879d('0x1d')]['attributes']||null:null,'include':_0x239f3d[_0x879d('0x1d')]?_0x239f3d['options'][_0x879d('0x21')]?_['map'](_0x239f3d[_0x879d('0x1d')][_0x879d('0x21')],function(_0x362031){return{'model':db[_0x362031[_0x879d('0x23')]],'as':_0x362031['as'],'attributes':_0x362031['attributes'],'include':_0x362031[_0x879d('0x21')]?_[_0x879d('0x22')](_0x362031[_0x879d('0x21')],function(_0x1c8280){return{'model':db[_0x1c8280[_0x879d('0x23')]],'as':_0x1c8280['as'],'attributes':_0x1c8280['attributes'],'include':_0x1c8280[_0x879d('0x21')]?_['map'](_0x1c8280[_0x879d('0x21')],function(_0x3a6269){return{'model':db[_0x3a6269[_0x879d('0x23')]],'as':_0x3a6269['as'],'attributes':_0x3a6269[_0x879d('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x879d('0xe')](function(_0x2c4923){logger['info'](_0x879d('0x24'),_0x239f3d);logger[_0x879d('0x10')](_0x879d('0x24'),_0x239f3d,JSON[_0x879d('0x12')](_0x2c4923));_0x445f8d(_0x2c4923);})[_0x879d('0x19')](function(_0x30d634){logger[_0x879d('0x13')]('ShowFaxQueue',_0x30d634[_0x879d('0x16')],_0x239f3d);_0x4fca03(_0x8f3ed3[_0x879d('0x13')](0x1f4,_0x30d634['message']));});});};
\ No newline at end of file
index 3f65d1e..f054990 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bb2=['update','emit','removeListener','save','remove'];(function(_0x26018c,_0x3c0903){var _0x1efc45=function(_0x3d952f){while(--_0x3d952f){_0x26018c['push'](_0x26018c['shift']());}};_0x1efc45(++_0x3c0903);}(_0x1bb2,0xc6));var _0x21bb=function(_0x48598c,_0x433e13){_0x48598c=_0x48598c-0x0;var _0xddd81b=_0x1bb2[_0x48598c];return _0xddd81b;};'use strict';var FaxQueueEvents=require('./faxQueue.events');var events=[_0x21bb('0x0'),_0x21bb('0x1'),_0x21bb('0x2')];function createListener(_0x5def2f,_0x21b4e0){return function(_0x147b34){_0x21b4e0[_0x21bb('0x3')](_0x5def2f,_0x147b34);};}function removeListener(_0x11917b,_0x178d58){return function(){FaxQueueEvents[_0x21bb('0x4')](_0x11917b,_0x178d58);};}exports['register']=function(_0x1fd5f8){for(var _0x287e51=0x0,_0x31114a=events['length'];_0x287e51<_0x31114a;_0x287e51++){var _0x5ad94a=events[_0x287e51];var _0x13021a=createListener('faxQueue:'+_0x5ad94a,_0x1fd5f8);FaxQueueEvents['on'](_0x5ad94a,_0x13021a);}};
\ No newline at end of file
+var _0xdc50=['update','emit','register','length','faxQueue:','./faxQueue.events','remove'];(function(_0x26c20a,_0x209858){var _0x3e5d00=function(_0x5d909d){while(--_0x5d909d){_0x26c20a['push'](_0x26c20a['shift']());}};_0x3e5d00(++_0x209858);}(_0xdc50,0x147));var _0x0dc5=function(_0x4b9610,_0x472ca4){_0x4b9610=_0x4b9610-0x0;var _0x49956c=_0xdc50[_0x4b9610];return _0x49956c;};'use strict';var FaxQueueEvents=require(_0x0dc5('0x0'));var events=['save',_0x0dc5('0x1'),_0x0dc5('0x2')];function createListener(_0x2d68ac,_0x1e1d80){return function(_0x144174){_0x1e1d80[_0x0dc5('0x3')](_0x2d68ac,_0x144174);};}function removeListener(_0x59640e,_0x43b335){return function(){FaxQueueEvents['removeListener'](_0x59640e,_0x43b335);};}exports[_0x0dc5('0x4')]=function(_0x1cfc70){for(var _0xa625b8=0x0,_0x4e0afc=events[_0x0dc5('0x5')];_0xa625b8<_0x4e0afc;_0xa625b8++){var _0x3209b4=events[_0xa625b8];var _0x3b05b0=createListener(_0x0dc5('0x6')+_0x3209b4,_0x1cfc70);FaxQueueEvents['on'](_0x3209b4,_0x3b05b0);}};
\ No newline at end of file
index 100c3d8..f976c1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82d8=['update','delete','destroy','removeAgents','exports','multer','path','Router','../../components/auth/service','./faxQueue.controller','get','isAuthenticated','index','/describe','/:id','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','put'];(function(_0x3a2f50,_0x5980b1){var _0x44d001=function(_0x46833e){while(--_0x46833e){_0x3a2f50['push'](_0x3a2f50['shift']());}};_0x44d001(++_0x5980b1);}(_0x82d8,0xff));var _0x882d=function(_0x5c97c7,_0x592e32){_0x5c97c7=_0x5c97c7-0x0;var _0x23ecd3=_0x82d8[_0x5c97c7];return _0x23ecd3;};'use strict';var multer=require(_0x882d('0x0'));var util=require('util');var path=require(_0x882d('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x882d('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x882d('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x882d('0x4'));router[_0x882d('0x5')]('/',auth[_0x882d('0x6')](),controller[_0x882d('0x7')]);router[_0x882d('0x5')](_0x882d('0x8'),auth[_0x882d('0x6')](),controller['describe']);router[_0x882d('0x5')](_0x882d('0x9'),auth[_0x882d('0x6')](),controller['show']);router[_0x882d('0x5')](_0x882d('0xa'),auth['isAuthenticated'](),controller[_0x882d('0xb')]);router[_0x882d('0x5')](_0x882d('0xc'),auth['isAuthenticated'](),controller[_0x882d('0xd')]);router[_0x882d('0x5')](_0x882d('0xe'),auth[_0x882d('0x6')](),controller[_0x882d('0xf')]);router[_0x882d('0x10')]('/',auth[_0x882d('0x6')](),controller['create']);router['post'](_0x882d('0xc'),auth[_0x882d('0x6')](),controller[_0x882d('0x11')]);router[_0x882d('0x10')](_0x882d('0xe'),auth['isAuthenticated'](),controller[_0x882d('0x12')]);router[_0x882d('0x13')](_0x882d('0x9'),auth[_0x882d('0x6')](),controller[_0x882d('0x14')]);router[_0x882d('0x15')](_0x882d('0x9'),auth[_0x882d('0x6')](),controller[_0x882d('0x16')]);router['delete']('/:id/teams',auth[_0x882d('0x6')](),controller['removeTeams']);router[_0x882d('0x15')]('/:id/users',auth[_0x882d('0x6')](),controller[_0x882d('0x17')]);module[_0x882d('0x18')]=router;
\ No newline at end of file
+var _0x36c3=['/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','create','addTeams','post','addAgents','update','destroy','delete','removeTeams','removeAgents','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0xa1d5af,_0xbae3b9){var _0x38f01f=function(_0x1c7ef3){while(--_0x1c7ef3){_0xa1d5af['push'](_0xa1d5af['shift']());}};_0x38f01f(++_0xbae3b9);}(_0x36c3,0x1a6));var _0x336c=function(_0x589bee,_0x3e06b9){_0x589bee=_0x589bee-0x0;var _0x58f126=_0x36c3[_0x589bee];return _0x58f126;};'use strict';var multer=require(_0x336c('0x0'));var util=require(_0x336c('0x1'));var path=require('path');var timeout=require(_0x336c('0x2'));var express=require(_0x336c('0x3'));var router=express[_0x336c('0x4')]();var fs_extra=require(_0x336c('0x5'));var auth=require(_0x336c('0x6'));var interaction=require(_0x336c('0x7'));var config=require(_0x336c('0x8'));var controller=require('./faxQueue.controller');router[_0x336c('0x9')]('/',auth[_0x336c('0xa')](),controller[_0x336c('0xb')]);router[_0x336c('0x9')](_0x336c('0xc'),auth['isAuthenticated'](),controller[_0x336c('0xd')]);router[_0x336c('0x9')](_0x336c('0xe'),auth[_0x336c('0xa')](),controller[_0x336c('0xf')]);router[_0x336c('0x9')](_0x336c('0x10'),auth[_0x336c('0xa')](),controller[_0x336c('0x11')]);router[_0x336c('0x9')](_0x336c('0x12'),auth[_0x336c('0xa')](),controller[_0x336c('0x13')]);router[_0x336c('0x9')](_0x336c('0x14'),auth[_0x336c('0xa')](),controller[_0x336c('0x15')]);router['post']('/',auth['isAuthenticated'](),controller[_0x336c('0x16')]);router['post'](_0x336c('0x12'),auth[_0x336c('0xa')](),controller[_0x336c('0x17')]);router[_0x336c('0x18')]('/:id/users',auth[_0x336c('0xa')](),controller[_0x336c('0x19')]);router['put'](_0x336c('0xe'),auth['isAuthenticated'](),controller[_0x336c('0x1a')]);router['delete'](_0x336c('0xe'),auth['isAuthenticated'](),controller[_0x336c('0x1b')]);router[_0x336c('0x1c')]('/:id/teams',auth['isAuthenticated'](),controller[_0x336c('0x1d')]);router[_0x336c('0x1c')](_0x336c('0x14'),auth[_0x336c('0xa')](),controller[_0x336c('0x1e')]);module['exports']=router;
\ No newline at end of file
index 4910629..0ace2c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6439=['moment','STRING','DATE'];(function(_0x5c672c,_0x5f4b3e){var _0x233554=function(_0x386d67){while(--_0x386d67){_0x5c672c['push'](_0x5c672c['shift']());}};_0x233554(++_0x5f4b3e);}(_0x6439,0x1ce));var _0x9643=function(_0xef8146,_0x459c34){_0xef8146=_0xef8146-0x0;var _0x5a6cb0=_0x6439[_0xef8146];return _0x5a6cb0;};'use strict';var moment=require(_0x9643('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x9643('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0x9643('0x1')]},'joinAt':{'type':Sequelize[_0x9643('0x2')]},'leaveAt':{'type':Sequelize[_0x9643('0x2')]},'acceptAt':{'type':Sequelize[_0x9643('0x2')]},'exitAt':{'type':Sequelize[_0x9643('0x2')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xfa39=['STRING','DATE','exports'];(function(_0x1abefd,_0x42ec09){var _0x481db4=function(_0x2bdb62){while(--_0x2bdb62){_0x1abefd['push'](_0x1abefd['shift']());}};_0x481db4(++_0x42ec09);}(_0xfa39,0x197));var _0x9fa3=function(_0x1cdb2d,_0x8f1f76){_0x1cdb2d=_0x1cdb2d-0x0;var _0x4dafe3=_0xfa39[_0x1cdb2d];return _0x4dafe3;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x9fa3('0x0')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x9fa3('0x1')]},'joinAt':{'type':Sequelize[_0x9fa3('0x2')]},'leaveAt':{'type':Sequelize[_0x9fa3('0x2')]},'acceptAt':{'type':Sequelize[_0x9fa3('0x2')]},'exitAt':{'type':Sequelize[_0x9fa3('0x2')]},'reason':{'type':Sequelize[_0x9fa3('0x1')]}};
\ No newline at end of file
index d800be7..27ffd7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01d3=['path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','apply','reject','save','update','then','destroy','error','stack','name','index','FaxQueueReport','rawAttributes','fieldName','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','map','type','VIRTUAL','include','rows','catch','show','params','includeAll','options','create','body','find','describe','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util'];(function(_0x381ad2,_0x5e5445){var _0x19d67e=function(_0x1c0893){while(--_0x1c0893){_0x381ad2['push'](_0x381ad2['shift']());}};_0x19d67e(++_0x5e5445);}(_0x01d3,0xdb));var _0x301d=function(_0x41d364,_0xdfdc1a){_0x41d364=_0x41d364-0x0;var _0x5ace98=_0x01d3[_0x41d364];return _0x5ace98;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x301d('0x0'));var jsonpatch=require(_0x301d('0x1'));var rp=require(_0x301d('0x2'));var moment=require('moment');var BPromise=require(_0x301d('0x3'));var Mustache=require(_0x301d('0x4'));var util=require(_0x301d('0x5'));var path=require(_0x301d('0x6'));var sox=require(_0x301d('0x7'));var csv=require('to-csv');var ejs=require(_0x301d('0x8'));var fs=require('fs');var fs_extra=require(_0x301d('0x9'));var _=require(_0x301d('0xa'));var squel=require(_0x301d('0xb'));var crypto=require(_0x301d('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x301d('0xd'));var toCsv=require(_0x301d('0xe'));var querystring=require(_0x301d('0xf'));var Papa=require(_0x301d('0x10'));var Redis=require(_0x301d('0x11'));var authService=require(_0x301d('0x12'));var qs=require(_0x301d('0x13'));var as=require(_0x301d('0x14'));var hardwareService=require(_0x301d('0x15'));var logger=require('../../config/logger')(_0x301d('0x16'));var utils=require(_0x301d('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x301d('0x18'));var db=require(_0x301d('0x19'))['db'];function respondWithStatusCode(_0x2eb3af,_0x53bfe2){_0x53bfe2=_0x53bfe2||0xcc;return function(_0x496f0c){if(_0x496f0c){return _0x2eb3af[_0x301d('0x1a')](_0x53bfe2);}return _0x2eb3af[_0x301d('0x1b')](_0x53bfe2)[_0x301d('0x1c')]();};}function respondWithResult(_0x377c7f,_0x11bacf){_0x11bacf=_0x11bacf||0xc8;return function(_0x5bdd8a){if(_0x5bdd8a){return _0x377c7f[_0x301d('0x1b')](_0x11bacf)['json'](_0x5bdd8a);}};}function respondWithFilteredResult(_0x1d4fb4,_0xc35239){return function(_0x4fd833){if(_0x4fd833){var _0x10d277=typeof _0xc35239[_0x301d('0x1d')]===_0x301d('0x1e')&&typeof _0xc35239[_0x301d('0x1f')]===_0x301d('0x1e');var _0x1c409b=_0x4fd833[_0x301d('0x20')];var _0x2c7afb=_0x10d277?0x0:_0xc35239[_0x301d('0x1d')];var _0x3a2ad2=_0x10d277?_0x4fd833[_0x301d('0x20')]:_0xc35239[_0x301d('0x1d')]+_0xc35239[_0x301d('0x1f')];var _0x3d75e5;if(_0x3a2ad2>=_0x1c409b){_0x3a2ad2=_0x1c409b;_0x3d75e5=0xc8;}else{_0x3d75e5=0xce;}_0x1d4fb4[_0x301d('0x1b')](_0x3d75e5);return _0x1d4fb4['set']('Content-Range',_0x2c7afb+'-'+_0x3a2ad2+'/'+_0x1c409b)['json'](_0x4fd833);}return null;};}function patchUpdates(_0x31c94e){return function(_0x17ee2a){try{jsonpatch[_0x301d('0x21')](_0x17ee2a,_0x31c94e,!![]);}catch(_0x4d8006){return BPromise[_0x301d('0x22')](_0x4d8006);}return _0x17ee2a[_0x301d('0x23')]();};}function saveUpdates(_0x5b6631,_0x485f96){return function(_0x292c89){if(_0x292c89){return _0x292c89[_0x301d('0x24')](_0x5b6631)[_0x301d('0x25')](function(_0x3fa47d){return _0x3fa47d;});}return null;};}function removeEntity(_0x549e57,_0x1119da){return function(_0x2491b8){if(_0x2491b8){return _0x2491b8[_0x301d('0x26')]()[_0x301d('0x25')](function(){_0x549e57[_0x301d('0x1b')](0xcc)[_0x301d('0x1c')]();});}};}function handleEntityNotFound(_0x4fae3d,_0x470b7a){return function(_0xb315b6){if(!_0xb315b6){_0x4fae3d[_0x301d('0x1a')](0x194);}return _0xb315b6;};}function handleError(_0x2f7092,_0x31ce2c){_0x31ce2c=_0x31ce2c||0x1f4;return function(_0x23c934){logger[_0x301d('0x27')](_0x23c934[_0x301d('0x28')]);if(_0x23c934['name']){delete _0x23c934[_0x301d('0x29')];}_0x2f7092['status'](_0x31ce2c)['send'](_0x23c934);};}exports[_0x301d('0x2a')]=function(_0x52eb42,_0x326722){var _0x119143={},_0x362c68={},_0x46127a={'count':0x0,'rows':[]};var _0xb6a139=_['map'](db[_0x301d('0x2b')][_0x301d('0x2c')],function(_0x2385ef){return{'name':_0x2385ef[_0x301d('0x2d')],'type':_0x2385ef['type']['key']};});_0x362c68['model']=_['map'](_0xb6a139,_0x301d('0x29'));_0x362c68[_0x301d('0x2e')]=_[_0x301d('0x2f')](_0x52eb42[_0x301d('0x2e')]);_0x362c68[_0x301d('0x30')]=_[_0x301d('0x31')](_0x362c68[_0x301d('0x32')],_0x362c68[_0x301d('0x2e')]);_0x119143[_0x301d('0x33')]=_[_0x301d('0x31')](_0x362c68['model'],qs[_0x301d('0x34')](_0x52eb42[_0x301d('0x2e')][_0x301d('0x34')]));_0x119143[_0x301d('0x33')]=_0x119143[_0x301d('0x33')][_0x301d('0x35')]?_0x119143[_0x301d('0x33')]:_0x362c68[_0x301d('0x32')];if(!_0x52eb42[_0x301d('0x2e')][_0x301d('0x36')]('nolimit')){_0x119143['limit']=qs[_0x301d('0x1f')](_0x52eb42[_0x301d('0x2e')][_0x301d('0x1f')]);_0x119143[_0x301d('0x1d')]=qs[_0x301d('0x1d')](_0x52eb42['query'][_0x301d('0x1d')]);}_0x119143[_0x301d('0x37')]=qs[_0x301d('0x38')](_0x52eb42['query'][_0x301d('0x38')]);_0x119143['where']=qs[_0x301d('0x30')](_[_0x301d('0x39')](_0x52eb42[_0x301d('0x2e')],_0x362c68[_0x301d('0x30')]),_0xb6a139);if(_0x52eb42[_0x301d('0x2e')][_0x301d('0x3a')]){_0x119143[_0x301d('0x3b')]=_[_0x301d('0x3c')](_0x119143['where'],{'$or':_[_0x301d('0x3d')](_0xb6a139,function(_0x2a1459){if(_0x2a1459[_0x301d('0x3e')]!==_0x301d('0x3f')){var _0xc4e7ff={};_0xc4e7ff[_0x2a1459['name']]={'$like':'%'+_0x52eb42['query']['filter']+'%'};return _0xc4e7ff;}})});}_0x119143=_[_0x301d('0x3c')]({},_0x119143,_0x52eb42['options']);var _0x35047e={'where':_0x119143[_0x301d('0x3b')]};return db[_0x301d('0x2b')][_0x301d('0x20')](_0x35047e)[_0x301d('0x25')](function(_0x5ee9cc){_0x46127a[_0x301d('0x20')]=_0x5ee9cc;if(_0x52eb42['query']['includeAll']){_0x119143[_0x301d('0x40')]=[{'all':!![]}];}return db['FaxQueueReport']['findAll'](_0x119143);})[_0x301d('0x25')](function(_0x168211){_0x46127a[_0x301d('0x41')]=_0x168211;return _0x46127a;})[_0x301d('0x25')](respondWithFilteredResult(_0x326722,_0x119143))[_0x301d('0x42')](handleError(_0x326722,null));};exports[_0x301d('0x43')]=function(_0x499ca8,_0x16a7ca){var _0x29ef1d={'raw':!![],'where':{'id':_0x499ca8[_0x301d('0x44')]['id']}},_0x3dd5f5={};_0x3dd5f5[_0x301d('0x32')]=_[_0x301d('0x2f')](db[_0x301d('0x2b')]['rawAttributes']);_0x3dd5f5[_0x301d('0x2e')]=_['keys'](_0x499ca8['query']);_0x3dd5f5[_0x301d('0x30')]=_[_0x301d('0x31')](_0x3dd5f5['model'],_0x3dd5f5[_0x301d('0x2e')]);_0x29ef1d[_0x301d('0x33')]=_['intersection'](_0x3dd5f5['model'],qs[_0x301d('0x34')](_0x499ca8[_0x301d('0x2e')][_0x301d('0x34')]));_0x29ef1d['attributes']=_0x29ef1d['attributes'][_0x301d('0x35')]?_0x29ef1d[_0x301d('0x33')]:_0x3dd5f5[_0x301d('0x32')];if(_0x499ca8[_0x301d('0x2e')][_0x301d('0x45')]){_0x29ef1d['include']=[{'all':!![]}];}_0x29ef1d=_[_0x301d('0x3c')]({},_0x29ef1d,_0x499ca8[_0x301d('0x46')]);return db[_0x301d('0x2b')]['find'](_0x29ef1d)[_0x301d('0x25')](handleEntityNotFound(_0x16a7ca,null))[_0x301d('0x25')](respondWithResult(_0x16a7ca,null))[_0x301d('0x42')](handleError(_0x16a7ca,null));};exports[_0x301d('0x47')]=function(_0x54cce3,_0x2c1fc8){return db['FaxQueueReport'][_0x301d('0x47')](_0x54cce3['body'],{})[_0x301d('0x25')](respondWithResult(_0x2c1fc8,0xc9))[_0x301d('0x42')](handleError(_0x2c1fc8,null));};exports[_0x301d('0x24')]=function(_0x155912,_0x2ed897){if(_0x155912[_0x301d('0x48')]['id']){delete _0x155912[_0x301d('0x48')]['id'];}return db[_0x301d('0x2b')][_0x301d('0x49')]({'where':{'id':_0x155912['params']['id']}})[_0x301d('0x25')](handleEntityNotFound(_0x2ed897,null))[_0x301d('0x25')](saveUpdates(_0x155912[_0x301d('0x48')],null))[_0x301d('0x25')](respondWithResult(_0x2ed897,null))['catch'](handleError(_0x2ed897,null));};exports[_0x301d('0x26')]=function(_0x5c1d19,_0x59d4f4){return db['FaxQueueReport'][_0x301d('0x49')]({'where':{'id':_0x5c1d19['params']['id']}})['then'](handleEntityNotFound(_0x59d4f4,null))[_0x301d('0x25')](removeEntity(_0x59d4f4,null))[_0x301d('0x42')](handleError(_0x59d4f4,null));};exports[_0x301d('0x4a')]=function(_0x29cb7b,_0x243cb2){return db[_0x301d('0x2b')][_0x301d('0x4a')]()[_0x301d('0x25')](respondWithResult(_0x243cb2,null))[_0x301d('0x42')](handleError(_0x243cb2,null));};
\ No newline at end of file
+var _0xb49a=['model','keys','filters','attributes','fields','query','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','FaxQueueReport','includeAll','then','catch','show','params','intersection','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','reject','update','destroy','error','name','send','index','map','rawAttributes','fieldName','type'];(function(_0x4bf27e,_0x29db91){var _0x1f8df7=function(_0x576a18){while(--_0x576a18){_0x4bf27e['push'](_0x4bf27e['shift']());}};_0x1f8df7(++_0x29db91);}(_0xb49a,0xfb));var _0xab49=function(_0x41f02b,_0x2ca2f0){_0x41f02b=_0x41f02b-0x0;var _0x3411eb=_0xb49a[_0x41f02b];return _0x3411eb;};'use strict';var emlformat=require(_0xab49('0x0'));var rimraf=require(_0xab49('0x1'));var zipdir=require(_0xab49('0x2'));var jsonpatch=require(_0xab49('0x3'));var rp=require(_0xab49('0x4'));var moment=require('moment');var BPromise=require(_0xab49('0x5'));var Mustache=require(_0xab49('0x6'));var util=require('util');var path=require('path');var sox=require(_0xab49('0x7'));var csv=require(_0xab49('0x8'));var ejs=require(_0xab49('0x9'));var fs=require('fs');var fs_extra=require(_0xab49('0xa'));var _=require(_0xab49('0xb'));var squel=require(_0xab49('0xc'));var crypto=require(_0xab49('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xab49('0xe'));var toCsv=require(_0xab49('0x8'));var querystring=require(_0xab49('0xf'));var Papa=require(_0xab49('0x10'));var Redis=require(_0xab49('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xab49('0x12'));var hardwareService=require(_0xab49('0x13'));var logger=require(_0xab49('0x14'))(_0xab49('0x15'));var utils=require(_0xab49('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xab49('0x17'));var db=require(_0xab49('0x18'))['db'];function respondWithStatusCode(_0x34af0d,_0x207d79){_0x207d79=_0x207d79||0xcc;return function(_0x394c1e){if(_0x394c1e){return _0x34af0d[_0xab49('0x19')](_0x207d79);}return _0x34af0d[_0xab49('0x1a')](_0x207d79)[_0xab49('0x1b')]();};}function respondWithResult(_0x24b4ad,_0x389ebb){_0x389ebb=_0x389ebb||0xc8;return function(_0x40f465){if(_0x40f465){return _0x24b4ad['status'](_0x389ebb)[_0xab49('0x1c')](_0x40f465);}};}function respondWithFilteredResult(_0x38ee23,_0x205b09){return function(_0x9c59e1){if(_0x9c59e1){var _0x14d8b8=typeof _0x205b09['offset']===_0xab49('0x1d')&&typeof _0x205b09[_0xab49('0x1e')]===_0xab49('0x1d');var _0xcaa6ca=_0x9c59e1[_0xab49('0x1f')];var _0x47f977=_0x14d8b8?0x0:_0x205b09[_0xab49('0x20')];var _0x24cb8f=_0x14d8b8?_0x9c59e1[_0xab49('0x1f')]:_0x205b09['offset']+_0x205b09['limit'];var _0x31da6b;if(_0x24cb8f>=_0xcaa6ca){_0x24cb8f=_0xcaa6ca;_0x31da6b=0xc8;}else{_0x31da6b=0xce;}_0x38ee23[_0xab49('0x1a')](_0x31da6b);return _0x38ee23['set'](_0xab49('0x21'),_0x47f977+'-'+_0x24cb8f+'/'+_0xcaa6ca)[_0xab49('0x1c')](_0x9c59e1);}return null;};}function patchUpdates(_0x49b716){return function(_0x3662b2){try{jsonpatch['apply'](_0x3662b2,_0x49b716,!![]);}catch(_0x34211e){return BPromise[_0xab49('0x22')](_0x34211e);}return _0x3662b2['save']();};}function saveUpdates(_0x5802db,_0x333506){return function(_0x4fa8d2){if(_0x4fa8d2){return _0x4fa8d2[_0xab49('0x23')](_0x5802db)['then'](function(_0x35682a){return _0x35682a;});}return null;};}function removeEntity(_0x2faeca,_0x2ba18a){return function(_0x579039){if(_0x579039){return _0x579039[_0xab49('0x24')]()['then'](function(){_0x2faeca[_0xab49('0x1a')](0xcc)[_0xab49('0x1b')]();});}};}function handleEntityNotFound(_0x5c3d71,_0x29096f){return function(_0x18e65a){if(!_0x18e65a){_0x5c3d71['sendStatus'](0x194);}return _0x18e65a;};}function handleError(_0x5409a1,_0x11446b){_0x11446b=_0x11446b||0x1f4;return function(_0x2e0e37){logger[_0xab49('0x25')](_0x2e0e37['stack']);if(_0x2e0e37[_0xab49('0x26')]){delete _0x2e0e37[_0xab49('0x26')];}_0x5409a1['status'](_0x11446b)[_0xab49('0x27')](_0x2e0e37);};}exports[_0xab49('0x28')]=function(_0x342fdf,_0x57fbad){var _0x30a3dd={},_0x550f06={},_0xb3927e={'count':0x0,'rows':[]};var _0x53ec05=_[_0xab49('0x29')](db['FaxQueueReport'][_0xab49('0x2a')],function(_0x24bd0f){return{'name':_0x24bd0f[_0xab49('0x2b')],'type':_0x24bd0f[_0xab49('0x2c')]['key']};});_0x550f06[_0xab49('0x2d')]=_[_0xab49('0x29')](_0x53ec05,_0xab49('0x26'));_0x550f06['query']=_[_0xab49('0x2e')](_0x342fdf['query']);_0x550f06[_0xab49('0x2f')]=_['intersection'](_0x550f06['model'],_0x550f06['query']);_0x30a3dd[_0xab49('0x30')]=_['intersection'](_0x550f06[_0xab49('0x2d')],qs[_0xab49('0x31')](_0x342fdf[_0xab49('0x32')]['fields']));_0x30a3dd[_0xab49('0x30')]=_0x30a3dd[_0xab49('0x30')][_0xab49('0x33')]?_0x30a3dd[_0xab49('0x30')]:_0x550f06[_0xab49('0x2d')];if(!_0x342fdf['query'][_0xab49('0x34')](_0xab49('0x35'))){_0x30a3dd['limit']=qs['limit'](_0x342fdf[_0xab49('0x32')][_0xab49('0x1e')]);_0x30a3dd[_0xab49('0x20')]=qs[_0xab49('0x20')](_0x342fdf[_0xab49('0x32')][_0xab49('0x20')]);}_0x30a3dd[_0xab49('0x36')]=qs[_0xab49('0x37')](_0x342fdf[_0xab49('0x32')][_0xab49('0x37')]);_0x30a3dd[_0xab49('0x38')]=qs[_0xab49('0x2f')](_[_0xab49('0x39')](_0x342fdf['query'],_0x550f06[_0xab49('0x2f')]),_0x53ec05);if(_0x342fdf[_0xab49('0x32')][_0xab49('0x3a')]){_0x30a3dd[_0xab49('0x38')]=_[_0xab49('0x3b')](_0x30a3dd['where'],{'$or':_[_0xab49('0x29')](_0x53ec05,function(_0x500f32){if(_0x500f32['type']!==_0xab49('0x3c')){var _0x254806={};_0x254806[_0x500f32[_0xab49('0x26')]]={'$like':'%'+_0x342fdf[_0xab49('0x32')][_0xab49('0x3a')]+'%'};return _0x254806;}})});}_0x30a3dd=_['merge']({},_0x30a3dd,_0x342fdf[_0xab49('0x3d')]);var _0x2cdcbf={'where':_0x30a3dd[_0xab49('0x38')]};return db[_0xab49('0x3e')][_0xab49('0x1f')](_0x2cdcbf)['then'](function(_0x4f89a3){_0xb3927e[_0xab49('0x1f')]=_0x4f89a3;if(_0x342fdf[_0xab49('0x32')][_0xab49('0x3f')]){_0x30a3dd['include']=[{'all':!![]}];}return db[_0xab49('0x3e')]['findAll'](_0x30a3dd);})['then'](function(_0x597e1c){_0xb3927e['rows']=_0x597e1c;return _0xb3927e;})[_0xab49('0x40')](respondWithFilteredResult(_0x57fbad,_0x30a3dd))[_0xab49('0x41')](handleError(_0x57fbad,null));};exports[_0xab49('0x42')]=function(_0x1aa993,_0x2133b3){var _0x3f3776={'raw':!![],'where':{'id':_0x1aa993[_0xab49('0x43')]['id']}},_0x162841={};_0x162841[_0xab49('0x2d')]=_[_0xab49('0x2e')](db['FaxQueueReport'][_0xab49('0x2a')]);_0x162841[_0xab49('0x32')]=_['keys'](_0x1aa993[_0xab49('0x32')]);_0x162841[_0xab49('0x2f')]=_[_0xab49('0x44')](_0x162841[_0xab49('0x2d')],_0x162841[_0xab49('0x32')]);_0x3f3776[_0xab49('0x30')]=_[_0xab49('0x44')](_0x162841[_0xab49('0x2d')],qs['fields'](_0x1aa993[_0xab49('0x32')][_0xab49('0x31')]));_0x3f3776[_0xab49('0x30')]=_0x3f3776['attributes'][_0xab49('0x33')]?_0x3f3776[_0xab49('0x30')]:_0x162841[_0xab49('0x2d')];if(_0x1aa993[_0xab49('0x32')][_0xab49('0x3f')]){_0x3f3776[_0xab49('0x45')]=[{'all':!![]}];}_0x3f3776=_['merge']({},_0x3f3776,_0x1aa993[_0xab49('0x3d')]);return db[_0xab49('0x3e')][_0xab49('0x46')](_0x3f3776)[_0xab49('0x40')](handleEntityNotFound(_0x2133b3,null))[_0xab49('0x40')](respondWithResult(_0x2133b3,null))[_0xab49('0x41')](handleError(_0x2133b3,null));};exports['create']=function(_0x3d4fb2,_0x186fcf){return db[_0xab49('0x3e')][_0xab49('0x47')](_0x3d4fb2[_0xab49('0x48')],{})[_0xab49('0x40')](respondWithResult(_0x186fcf,0xc9))[_0xab49('0x41')](handleError(_0x186fcf,null));};exports[_0xab49('0x23')]=function(_0x2ae9dc,_0xfb7d69){if(_0x2ae9dc[_0xab49('0x48')]['id']){delete _0x2ae9dc[_0xab49('0x48')]['id'];}return db['FaxQueueReport'][_0xab49('0x46')]({'where':{'id':_0x2ae9dc[_0xab49('0x43')]['id']}})[_0xab49('0x40')](handleEntityNotFound(_0xfb7d69,null))[_0xab49('0x40')](saveUpdates(_0x2ae9dc[_0xab49('0x48')],null))[_0xab49('0x40')](respondWithResult(_0xfb7d69,null))[_0xab49('0x41')](handleError(_0xfb7d69,null));};exports['destroy']=function(_0x3b7f1e,_0x5316ae){return db[_0xab49('0x3e')]['find']({'where':{'id':_0x3b7f1e[_0xab49('0x43')]['id']}})[_0xab49('0x40')](handleEntityNotFound(_0x5316ae,null))['then'](removeEntity(_0x5316ae,null))[_0xab49('0x41')](handleError(_0x5316ae,null));};exports[_0xab49('0x49')]=function(_0x1a5326,_0x2b9d6f){return db[_0xab49('0x3e')][_0xab49('0x49')]()[_0xab49('0x40')](respondWithResult(_0x2b9d6f,null))[_0xab49('0x41')](handleError(_0x2b9d6f,null));};
\ No newline at end of file
index d8e40ed..53011f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['util','api','moment','bluebird','request-promise','path','../../config/environment','./faxQueueReport.attributes','exports','define','report_fax_queue','uniqueid','lodash'];(function(_0x2f0851,_0x514094){var _0x392239=function(_0x5c5394){while(--_0x5c5394){_0x2f0851['push'](_0x2f0851['shift']());}};_0x392239(++_0x514094);}(_0x5fc3,0xa8));var _0x35fc=function(_0x3725ee,_0x543bd9){_0x3725ee=_0x3725ee-0x0;var _0x399c71=_0x5fc3[_0x3725ee];return _0x399c71;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var logger=require('../../config/logger')(_0x35fc('0x2'));var moment=require(_0x35fc('0x3'));var BPromise=require(_0x35fc('0x4'));var rp=require(_0x35fc('0x5'));var fs=require('fs');var path=require(_0x35fc('0x6'));var rimraf=require('rimraf');var config=require(_0x35fc('0x7'));var attributes=require(_0x35fc('0x8'));module[_0x35fc('0x9')]=function(_0x5b85ad,_0x5754be){return _0x5b85ad[_0x35fc('0xa')]('FaxQueueReport',attributes,{'tableName':_0x35fc('0xb'),'paranoid':![],'indexes':[{'name':_0x35fc('0xc'),'fields':[_0x35fc('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7217=['api','moment','bluebird','request-promise','../../config/environment','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','uniqueid','lodash','../../config/logger'];(function(_0x2e1b41,_0x17914a){var _0x163368=function(_0x1b2c7e){while(--_0x1b2c7e){_0x2e1b41['push'](_0x2e1b41['shift']());}};_0x163368(++_0x17914a);}(_0x7217,0x19e));var _0x7721=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x7217[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var logger=require(_0x7721('0x1'))(_0x7721('0x2'));var moment=require(_0x7721('0x3'));var BPromise=require(_0x7721('0x4'));var rp=require(_0x7721('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7721('0x6'));var attributes=require(_0x7721('0x7'));module[_0x7721('0x8')]=function(_0x3fe47c,_0xb239e0){return _0x3fe47c[_0x7721('0x9')](_0x7721('0xa'),attributes,{'tableName':_0x7721('0xb'),'paranoid':![],'indexes':[{'name':_0x7721('0xc'),'fields':[_0x7721('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 6d7632c..d74a22f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e5c=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','request\x20sent','FaxQueueReport,\x20%s,\x20%s,\x20%s','FaxQueueReport,\x20%s,\x20%s','error','message','info','FaxQueueReport','create','body','options','raw','then','CreateFaxQueueReport','debug','stringify','catch','UpdateFaxQueueReport','where','limit','lodash','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x4d3d19,_0x5e8ce0){var _0x1ee18d=function(_0x219126){while(--_0x219126){_0x4d3d19['push'](_0x4d3d19['shift']());}};_0x1ee18d(++_0x5e8ce0);}(_0x3e5c,0x1ba));var _0xc3e5=function(_0x36ff21,_0x44a40f){_0x36ff21=_0x36ff21-0x0;var _0x5b6daa=_0x3e5c[_0x36ff21];return _0x5b6daa;};'use strict';var _=require(_0xc3e5('0x0'));var util=require(_0xc3e5('0x1'));var moment=require(_0xc3e5('0x2'));var BPromise=require('bluebird');var rs=require(_0xc3e5('0x3'));var fs=require('fs');var Redis=require(_0xc3e5('0x4'));var db=require(_0xc3e5('0x5'))['db'];var utils=require(_0xc3e5('0x6'));var logger=require(_0xc3e5('0x7'))('rpc');var config=require(_0xc3e5('0x8'));var jayson=require(_0xc3e5('0x9'));var client=jayson[_0xc3e5('0xa')][_0xc3e5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x693ea9,_0xc66493,_0x117624){return new BPromise(function(_0x59642e,_0x4c0d7a){return client[_0xc3e5('0xc')](_0x693ea9,_0x117624)['then'](function(_0x460fa2){logger['info']('FaxQueueReport,\x20%s,\x20%s',_0xc66493,_0xc3e5('0xd'));logger['debug'](_0xc3e5('0xe'),_0xc66493,_0xc3e5('0xd'),JSON['stringify'](_0x460fa2));if(_0x460fa2['error']){if(_0x460fa2['error']['code']===0x1f4){logger['error'](_0xc3e5('0xf'),_0xc66493,_0x460fa2[_0xc3e5('0x10')][_0xc3e5('0x11')]);return _0x4c0d7a(_0x460fa2['error']['message']);}logger[_0xc3e5('0x10')](_0xc3e5('0xf'),_0xc66493,_0x460fa2[_0xc3e5('0x10')][_0xc3e5('0x11')]);return _0x59642e(_0x460fa2['error'][_0xc3e5('0x11')]);}else{logger[_0xc3e5('0x12')](_0xc3e5('0xf'),_0xc66493,'request\x20sent');_0x59642e(_0x460fa2['result']['message']);}})['catch'](function(_0x31deda){logger[_0xc3e5('0x10')](_0xc3e5('0xf'),_0xc66493,_0x31deda);_0x4c0d7a(_0x31deda);});});}exports['CreateFaxQueueReport']=function(_0xe393bc){var _0x5526d0=this;return new Promise(function(_0x497f39,_0x288c1f){return db[_0xc3e5('0x13')][_0xc3e5('0x14')](_0xe393bc[_0xc3e5('0x15')],{'raw':_0xe393bc['options']?_0xe393bc[_0xc3e5('0x16')][_0xc3e5('0x17')]===undefined?!![]:![]:!![]})[_0xc3e5('0x18')](function(_0x8935ab){logger[_0xc3e5('0x12')](_0xc3e5('0x19'),_0xe393bc);logger[_0xc3e5('0x1a')](_0xc3e5('0x19'),_0xe393bc,JSON[_0xc3e5('0x1b')](_0x8935ab));_0x497f39(_0x8935ab);})[_0xc3e5('0x1c')](function(_0x13b02d){logger[_0xc3e5('0x10')](_0xc3e5('0x19'),_0x13b02d['message'],_0xe393bc);_0x288c1f(_0x5526d0['error'](0x1f4,_0x13b02d['message']));});});};exports[_0xc3e5('0x1d')]=function(_0x4a39a7){var _0x4eaa27=this;return new Promise(function(_0x46ab64,_0x19ca2f){return db[_0xc3e5('0x13')]['update'](_0x4a39a7[_0xc3e5('0x15')],{'raw':_0x4a39a7[_0xc3e5('0x16')]?_0x4a39a7[_0xc3e5('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4a39a7[_0xc3e5('0x16')]?_0x4a39a7[_0xc3e5('0x16')][_0xc3e5('0x1e')]||null:null,'attributes':_0x4a39a7['options']?_0x4a39a7['options']['attributes']||null:null,'limit':_0x4a39a7[_0xc3e5('0x16')]?_0x4a39a7['options'][_0xc3e5('0x1f')]||null:null})[_0xc3e5('0x18')](function(_0x851c36){logger[_0xc3e5('0x12')](_0xc3e5('0x1d'),_0x4a39a7);logger[_0xc3e5('0x1a')](_0xc3e5('0x1d'),_0x4a39a7,JSON['stringify'](_0x851c36));_0x46ab64(_0x851c36);})[_0xc3e5('0x1c')](function(_0x2159f3){logger[_0xc3e5('0x10')]('UpdateFaxQueueReport',_0x2159f3[_0xc3e5('0x11')],_0x4a39a7);_0x19ca2f(_0x4eaa27['error'](0x1f4,_0x2159f3['message']));});});};
\ No newline at end of file
+var _0xc87c=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','CreateFaxQueueReport','create','body','options','raw','UpdateFaxQueueReport','FaxQueueReport','update','where','attributes','limit','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x2f4e19,_0x1eadb0){var _0x587b0a=function(_0x17f695){while(--_0x17f695){_0x2f4e19['push'](_0x2f4e19['shift']());}};_0x587b0a(++_0x1eadb0);}(_0xc87c,0x136));var _0xcc87=function(_0x6cb84f,_0x2eecde){_0x6cb84f=_0x6cb84f-0x0;var _0x562322=_0xc87c[_0x6cb84f];return _0x562322;};'use strict';var _=require(_0xcc87('0x0'));var util=require(_0xcc87('0x1'));var moment=require(_0xcc87('0x2'));var BPromise=require(_0xcc87('0x3'));var rs=require(_0xcc87('0x4'));var fs=require('fs');var Redis=require(_0xcc87('0x5'));var db=require(_0xcc87('0x6'))['db'];var utils=require(_0xcc87('0x7'));var logger=require(_0xcc87('0x8'))('rpc');var config=require(_0xcc87('0x9'));var jayson=require(_0xcc87('0xa'));var client=jayson[_0xcc87('0xb')][_0xcc87('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x20b2d2,_0x3f4384,_0x3534a2){return new BPromise(function(_0x570cd0,_0x58291c){return client[_0xcc87('0xd')](_0x20b2d2,_0x3534a2)[_0xcc87('0xe')](function(_0x55efe8){logger[_0xcc87('0xf')](_0xcc87('0x10'),_0x3f4384,_0xcc87('0x11'));logger[_0xcc87('0x12')]('FaxQueueReport,\x20%s,\x20%s,\x20%s',_0x3f4384,_0xcc87('0x11'),JSON[_0xcc87('0x13')](_0x55efe8));if(_0x55efe8['error']){if(_0x55efe8[_0xcc87('0x14')][_0xcc87('0x15')]===0x1f4){logger[_0xcc87('0x14')](_0xcc87('0x10'),_0x3f4384,_0x55efe8['error'][_0xcc87('0x16')]);return _0x58291c(_0x55efe8[_0xcc87('0x14')][_0xcc87('0x16')]);}logger['error'](_0xcc87('0x10'),_0x3f4384,_0x55efe8[_0xcc87('0x14')]['message']);return _0x570cd0(_0x55efe8[_0xcc87('0x14')][_0xcc87('0x16')]);}else{logger[_0xcc87('0xf')](_0xcc87('0x10'),_0x3f4384,_0xcc87('0x11'));_0x570cd0(_0x55efe8['result']['message']);}})['catch'](function(_0x52fc0e){logger[_0xcc87('0x14')](_0xcc87('0x10'),_0x3f4384,_0x52fc0e);_0x58291c(_0x52fc0e);});});}exports[_0xcc87('0x17')]=function(_0x2e92dd){var _0x3dc538=this;return new Promise(function(_0x441085,_0x1521bc){return db['FaxQueueReport'][_0xcc87('0x18')](_0x2e92dd[_0xcc87('0x19')],{'raw':_0x2e92dd[_0xcc87('0x1a')]?_0x2e92dd[_0xcc87('0x1a')][_0xcc87('0x1b')]===undefined?!![]:![]:!![]})[_0xcc87('0xe')](function(_0x3a9ba3){logger[_0xcc87('0xf')](_0xcc87('0x17'),_0x2e92dd);logger['debug'](_0xcc87('0x17'),_0x2e92dd,JSON[_0xcc87('0x13')](_0x3a9ba3));_0x441085(_0x3a9ba3);})['catch'](function(_0x5672d9){logger['error'](_0xcc87('0x17'),_0x5672d9['message'],_0x2e92dd);_0x1521bc(_0x3dc538[_0xcc87('0x14')](0x1f4,_0x5672d9[_0xcc87('0x16')]));});});};exports[_0xcc87('0x1c')]=function(_0x82d4e8){var _0x43a401=this;return new Promise(function(_0x78a2ea,_0x126990){return db[_0xcc87('0x1d')][_0xcc87('0x1e')](_0x82d4e8[_0xcc87('0x19')],{'raw':_0x82d4e8['options']?_0x82d4e8[_0xcc87('0x1a')][_0xcc87('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x82d4e8['options']?_0x82d4e8['options'][_0xcc87('0x1f')]||null:null,'attributes':_0x82d4e8['options']?_0x82d4e8[_0xcc87('0x1a')][_0xcc87('0x20')]||null:null,'limit':_0x82d4e8[_0xcc87('0x1a')]?_0x82d4e8[_0xcc87('0x1a')][_0xcc87('0x21')]||null:null})[_0xcc87('0xe')](function(_0x545588){logger[_0xcc87('0xf')](_0xcc87('0x1c'),_0x82d4e8);logger[_0xcc87('0x12')](_0xcc87('0x1c'),_0x82d4e8,JSON[_0xcc87('0x13')](_0x545588));_0x78a2ea(_0x545588);})[_0xcc87('0x22')](function(_0x164970){logger[_0xcc87('0x14')]('UpdateFaxQueueReport',_0x164970[_0xcc87('0x16')],_0x82d4e8);_0x126990(_0x43a401[_0xcc87('0x14')](0x1f4,_0x164970[_0xcc87('0x16')]));});});};
\ No newline at end of file
index 9600051..4c10408 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78c1=['/:id','show','post','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','get','isAuthenticated','/describe','describe'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x78c1,0x1eb));var _0x178c=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x78c1[_0x4e676e];return _0x336a3c;};'use strict';var multer=require(_0x178c('0x0'));var util=require(_0x178c('0x1'));var path=require('path');var timeout=require(_0x178c('0x2'));var express=require(_0x178c('0x3'));var router=express[_0x178c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x178c('0x5'));var interaction=require(_0x178c('0x6'));var config=require(_0x178c('0x7'));var controller=require(_0x178c('0x8'));router[_0x178c('0x9')]('/',auth[_0x178c('0xa')](),controller['index']);router[_0x178c('0x9')](_0x178c('0xb'),auth[_0x178c('0xa')](),controller[_0x178c('0xc')]);router[_0x178c('0x9')](_0x178c('0xd'),auth['isAuthenticated'](),controller[_0x178c('0xe')]);router[_0x178c('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0x178c('0x10')]('/:id',auth[_0x178c('0xa')](),controller[_0x178c('0x11')]);router[_0x178c('0x12')](_0x178c('0xd'),auth['isAuthenticated'](),controller[_0x178c('0x13')]);module[_0x178c('0x14')]=router;
\ No newline at end of file
+var _0x2dc7=['index','/describe','post','create','put','update','delete','/:id','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./faxQueueReport.controller','get','isAuthenticated'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x2dc7,0xdc));var _0x72dc=function(_0x4a0e68,_0x45c08c){_0x4a0e68=_0x4a0e68-0x0;var _0x4fb274=_0x2dc7[_0x4a0e68];return _0x4fb274;};'use strict';var multer=require(_0x72dc('0x0'));var util=require(_0x72dc('0x1'));var path=require(_0x72dc('0x2'));var timeout=require('connect-timeout');var express=require(_0x72dc('0x3'));var router=express[_0x72dc('0x4')]();var fs_extra=require(_0x72dc('0x5'));var auth=require(_0x72dc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x72dc('0x7'));var controller=require(_0x72dc('0x8'));router[_0x72dc('0x9')]('/',auth[_0x72dc('0xa')](),controller[_0x72dc('0xb')]);router[_0x72dc('0x9')](_0x72dc('0xc'),auth[_0x72dc('0xa')](),controller['describe']);router['get']('/:id',auth[_0x72dc('0xa')](),controller['show']);router[_0x72dc('0xd')]('/',auth[_0x72dc('0xa')](),controller[_0x72dc('0xe')]);router[_0x72dc('0xf')]('/:id',auth[_0x72dc('0xa')](),controller[_0x72dc('0x10')]);router[_0x72dc('0x11')](_0x72dc('0x12'),auth[_0x72dc('0xa')](),controller[_0x72dc('0x13')]);module[_0x72dc('0x14')]=router;
\ No newline at end of file
index ebc78e5..d5dcb7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x5e36d1,_0x471178){var _0x950b9e=function(_0x1872f3){while(--_0x1872f3){_0x5e36d1['push'](_0x5e36d1['shift']());}};_0x950b9e(++_0x471178);}(_0xb43b,0x1b2));var _0xbb43=function(_0x238f7f,_0x4467bf){_0x238f7f=_0x238f7f-0x0;var _0x3eaf05=_0xb43b[_0x238f7f];return _0x3eaf05;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
+var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x531e8c,_0x1829c9){var _0x368e93=function(_0x298701){while(--_0x298701){_0x531e8c['push'](_0x531e8c['shift']());}};_0x368e93(++_0x1829c9);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x184759,_0x1cc38a){_0x184759=_0x184759-0x0;var _0xf26d5f=_0xcb91[_0x184759];return _0xf26d5f;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1cb9('0x0')]={'uniqueid':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1cb9('0x2')](_0x1cb9('0x3'),'agent',_0x1cb9('0x4')),'allowNull':![],'defaultValue':_0x1cb9('0x4')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x1cb9('0x5')]}};
\ No newline at end of file
index 4ce3293..80a6525 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe8c=['findAll','rows','catch','show','length','find','create','body','params','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','destroy','then','stack','name','send','index','map','FaxTransferReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll'];(function(_0x53158d,_0x238839){var _0x114fc6=function(_0x556a6d){while(--_0x556a6d){_0x53158d['push'](_0x53158d['shift']());}};_0x114fc6(++_0x238839);}(_0xbe8c,0x9e));var _0xcbe8=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xbe8c[_0x167cc1];return _0x10bc4b;};'use strict';var emlformat=require(_0xcbe8('0x0'));var rimraf=require(_0xcbe8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcbe8('0x2'));var rp=require(_0xcbe8('0x3'));var moment=require(_0xcbe8('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xcbe8('0x5'));var sox=require(_0xcbe8('0x6'));var csv=require(_0xcbe8('0x7'));var ejs=require(_0xcbe8('0x8'));var fs=require('fs');var fs_extra=require(_0xcbe8('0x9'));var _=require(_0xcbe8('0xa'));var squel=require('squel');var crypto=require(_0xcbe8('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xcbe8('0xc'));var toCsv=require(_0xcbe8('0x7'));var querystring=require(_0xcbe8('0xd'));var Papa=require(_0xcbe8('0xe'));var Redis=require(_0xcbe8('0xf'));var authService=require(_0xcbe8('0x10'));var qs=require(_0xcbe8('0x11'));var as=require(_0xcbe8('0x12'));var hardwareService=require(_0xcbe8('0x13'));var logger=require('../../config/logger')(_0xcbe8('0x14'));var utils=require(_0xcbe8('0x15'));var config=require(_0xcbe8('0x16'));var licenseUtil=require(_0xcbe8('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x54a8f3,_0x25db9a){_0x25db9a=_0x25db9a||0xcc;return function(_0x514e49){if(_0x514e49){return _0x54a8f3[_0xcbe8('0x18')](_0x25db9a);}return _0x54a8f3[_0xcbe8('0x19')](_0x25db9a)[_0xcbe8('0x1a')]();};}function respondWithResult(_0x3a2aec,_0x14c9cd){_0x14c9cd=_0x14c9cd||0xc8;return function(_0x515f2f){if(_0x515f2f){return _0x3a2aec['status'](_0x14c9cd)[_0xcbe8('0x1b')](_0x515f2f);}};}function respondWithFilteredResult(_0xb82948,_0x53a41e){return function(_0x30c4ec){if(_0x30c4ec){var _0x366dd9=typeof _0x53a41e[_0xcbe8('0x1c')]===_0xcbe8('0x1d')&&typeof _0x53a41e[_0xcbe8('0x1e')]===_0xcbe8('0x1d');var _0x36d0f6=_0x30c4ec['count'];var _0x23b3a6=_0x366dd9?0x0:_0x53a41e[_0xcbe8('0x1c')];var _0x32231a=_0x366dd9?_0x30c4ec[_0xcbe8('0x1f')]:_0x53a41e[_0xcbe8('0x1c')]+_0x53a41e[_0xcbe8('0x1e')];var _0x2589b6;if(_0x32231a>=_0x36d0f6){_0x32231a=_0x36d0f6;_0x2589b6=0xc8;}else{_0x2589b6=0xce;}_0xb82948[_0xcbe8('0x19')](_0x2589b6);return _0xb82948[_0xcbe8('0x20')](_0xcbe8('0x21'),_0x23b3a6+'-'+_0x32231a+'/'+_0x36d0f6)[_0xcbe8('0x1b')](_0x30c4ec);}return null;};}function patchUpdates(_0x1d343a){return function(_0x2dfc2b){try{jsonpatch['apply'](_0x2dfc2b,_0x1d343a,!![]);}catch(_0x4b44f5){return BPromise[_0xcbe8('0x22')](_0x4b44f5);}return _0x2dfc2b['save']();};}function saveUpdates(_0x244b55,_0x320ceb){return function(_0x3aac1d){if(_0x3aac1d){return _0x3aac1d[_0xcbe8('0x23')](_0x244b55)['then'](function(_0x3f6763){return _0x3f6763;});}return null;};}function removeEntity(_0x3d3cf6,_0x1a47a7){return function(_0x1a2d57){if(_0x1a2d57){return _0x1a2d57[_0xcbe8('0x24')]()[_0xcbe8('0x25')](function(){_0x3d3cf6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x47a7b4,_0x35a28d){return function(_0x293427){if(!_0x293427){_0x47a7b4[_0xcbe8('0x18')](0x194);}return _0x293427;};}function handleError(_0x63af00,_0x58824e){_0x58824e=_0x58824e||0x1f4;return function(_0x364de2){logger['error'](_0x364de2[_0xcbe8('0x26')]);if(_0x364de2[_0xcbe8('0x27')]){delete _0x364de2[_0xcbe8('0x27')];}_0x63af00['status'](_0x58824e)[_0xcbe8('0x28')](_0x364de2);};}exports[_0xcbe8('0x29')]=function(_0x37a221,_0x47c219){var _0x1999f1={},_0x58fb65={},_0x2aade6={'count':0x0,'rows':[]};var _0x16caba=_[_0xcbe8('0x2a')](db[_0xcbe8('0x2b')][_0xcbe8('0x2c')],function(_0x192d99){return{'name':_0x192d99[_0xcbe8('0x2d')],'type':_0x192d99[_0xcbe8('0x2e')][_0xcbe8('0x2f')]};});_0x58fb65[_0xcbe8('0x30')]=_[_0xcbe8('0x2a')](_0x16caba,'name');_0x58fb65['query']=_[_0xcbe8('0x31')](_0x37a221[_0xcbe8('0x32')]);_0x58fb65[_0xcbe8('0x33')]=_[_0xcbe8('0x34')](_0x58fb65[_0xcbe8('0x30')],_0x58fb65[_0xcbe8('0x32')]);_0x1999f1[_0xcbe8('0x35')]=_[_0xcbe8('0x34')](_0x58fb65[_0xcbe8('0x30')],qs[_0xcbe8('0x36')](_0x37a221[_0xcbe8('0x32')][_0xcbe8('0x36')]));_0x1999f1[_0xcbe8('0x35')]=_0x1999f1[_0xcbe8('0x35')]['length']?_0x1999f1[_0xcbe8('0x35')]:_0x58fb65[_0xcbe8('0x30')];if(!_0x37a221[_0xcbe8('0x32')]['hasOwnProperty']('nolimit')){_0x1999f1[_0xcbe8('0x1e')]=qs[_0xcbe8('0x1e')](_0x37a221['query'][_0xcbe8('0x1e')]);_0x1999f1[_0xcbe8('0x1c')]=qs[_0xcbe8('0x1c')](_0x37a221['query']['offset']);}_0x1999f1[_0xcbe8('0x37')]=qs[_0xcbe8('0x38')](_0x37a221['query'][_0xcbe8('0x38')]);_0x1999f1[_0xcbe8('0x39')]=qs[_0xcbe8('0x33')](_[_0xcbe8('0x3a')](_0x37a221[_0xcbe8('0x32')],_0x58fb65[_0xcbe8('0x33')]),_0x16caba);if(_0x37a221[_0xcbe8('0x32')][_0xcbe8('0x3b')]){_0x1999f1[_0xcbe8('0x39')]=_[_0xcbe8('0x3c')](_0x1999f1[_0xcbe8('0x39')],{'$or':_['map'](_0x16caba,function(_0x37eb0c){if(_0x37eb0c['type']!==_0xcbe8('0x3d')){var _0x115da4={};_0x115da4[_0x37eb0c[_0xcbe8('0x27')]]={'$like':'%'+_0x37a221['query'][_0xcbe8('0x3b')]+'%'};return _0x115da4;}})});}_0x1999f1=_[_0xcbe8('0x3c')]({},_0x1999f1,_0x37a221[_0xcbe8('0x3e')]);var _0x7ae3b9={'where':_0x1999f1['where']};return db[_0xcbe8('0x2b')][_0xcbe8('0x1f')](_0x7ae3b9)[_0xcbe8('0x25')](function(_0x36f388){_0x2aade6[_0xcbe8('0x1f')]=_0x36f388;if(_0x37a221[_0xcbe8('0x32')][_0xcbe8('0x3f')]){_0x1999f1['include']=[{'all':!![]}];}return db[_0xcbe8('0x2b')][_0xcbe8('0x40')](_0x1999f1);})[_0xcbe8('0x25')](function(_0x416576){_0x2aade6[_0xcbe8('0x41')]=_0x416576;return _0x2aade6;})[_0xcbe8('0x25')](respondWithFilteredResult(_0x47c219,_0x1999f1))[_0xcbe8('0x42')](handleError(_0x47c219,null));};exports[_0xcbe8('0x43')]=function(_0x1d4ce5,_0xb5b0e){var _0xdc82fc={'raw':!![],'where':{'id':_0x1d4ce5['params']['id']}},_0x14f8a3={};_0x14f8a3[_0xcbe8('0x30')]=_[_0xcbe8('0x31')](db['FaxTransferReport']['rawAttributes']);_0x14f8a3[_0xcbe8('0x32')]=_['keys'](_0x1d4ce5[_0xcbe8('0x32')]);_0x14f8a3['filters']=_[_0xcbe8('0x34')](_0x14f8a3[_0xcbe8('0x30')],_0x14f8a3[_0xcbe8('0x32')]);_0xdc82fc[_0xcbe8('0x35')]=_[_0xcbe8('0x34')](_0x14f8a3[_0xcbe8('0x30')],qs[_0xcbe8('0x36')](_0x1d4ce5[_0xcbe8('0x32')][_0xcbe8('0x36')]));_0xdc82fc['attributes']=_0xdc82fc[_0xcbe8('0x35')][_0xcbe8('0x44')]?_0xdc82fc[_0xcbe8('0x35')]:_0x14f8a3[_0xcbe8('0x30')];if(_0x1d4ce5[_0xcbe8('0x32')][_0xcbe8('0x3f')]){_0xdc82fc['include']=[{'all':!![]}];}_0xdc82fc=_[_0xcbe8('0x3c')]({},_0xdc82fc,_0x1d4ce5[_0xcbe8('0x3e')]);return db[_0xcbe8('0x2b')][_0xcbe8('0x45')](_0xdc82fc)[_0xcbe8('0x25')](handleEntityNotFound(_0xb5b0e,null))[_0xcbe8('0x25')](respondWithResult(_0xb5b0e,null))[_0xcbe8('0x42')](handleError(_0xb5b0e,null));};exports[_0xcbe8('0x46')]=function(_0x32d8b3,_0x150380){return db[_0xcbe8('0x2b')][_0xcbe8('0x46')](_0x32d8b3['body'],{})['then'](respondWithResult(_0x150380,0xc9))['catch'](handleError(_0x150380,null));};exports[_0xcbe8('0x23')]=function(_0x13cfb9,_0x5766bf){if(_0x13cfb9[_0xcbe8('0x47')]['id']){delete _0x13cfb9[_0xcbe8('0x47')]['id'];}return db[_0xcbe8('0x2b')][_0xcbe8('0x45')]({'where':{'id':_0x13cfb9['params']['id']}})[_0xcbe8('0x25')](handleEntityNotFound(_0x5766bf,null))['then'](saveUpdates(_0x13cfb9[_0xcbe8('0x47')],null))[_0xcbe8('0x25')](respondWithResult(_0x5766bf,null))[_0xcbe8('0x42')](handleError(_0x5766bf,null));};exports[_0xcbe8('0x24')]=function(_0x4ce817,_0x1eb09f){return db[_0xcbe8('0x2b')][_0xcbe8('0x45')]({'where':{'id':_0x4ce817[_0xcbe8('0x48')]['id']}})[_0xcbe8('0x25')](handleEntityNotFound(_0x1eb09f,null))[_0xcbe8('0x25')](removeEntity(_0x1eb09f,null))['catch'](handleError(_0x1eb09f,null));};exports['describe']=function(_0x866963,_0x4cab62){return db[_0xcbe8('0x2b')][_0xcbe8('0x49')]()['then'](respondWithResult(_0x4cab62,null))[_0xcbe8('0x42')](handleError(_0x4cab62,null));};
\ No newline at end of file
+var _0x77f2=['type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','find','create','body','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','map','FaxTransferReport','rawAttributes','fieldName'];(function(_0x1eebf8,_0xff9989){var _0x5acc38=function(_0xc2ff25){while(--_0xc2ff25){_0x1eebf8['push'](_0x1eebf8['shift']());}};_0x5acc38(++_0xff9989);}(_0x77f2,0x189));var _0x277f=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0x77f2[_0x12fc8d];return _0x3f9d04;};'use strict';var emlformat=require(_0x277f('0x0'));var rimraf=require(_0x277f('0x1'));var zipdir=require(_0x277f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x277f('0x3'));var moment=require(_0x277f('0x4'));var BPromise=require(_0x277f('0x5'));var Mustache=require(_0x277f('0x6'));var util=require('util');var path=require(_0x277f('0x7'));var sox=require(_0x277f('0x8'));var csv=require('to-csv');var ejs=require(_0x277f('0x9'));var fs=require('fs');var fs_extra=require(_0x277f('0xa'));var _=require(_0x277f('0xb'));var squel=require(_0x277f('0xc'));var crypto=require(_0x277f('0xd'));var jsforce=require(_0x277f('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x277f('0xf'));var querystring=require('querystring');var Papa=require(_0x277f('0x10'));var Redis=require(_0x277f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x277f('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x277f('0x13'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x277f('0x14'));var db=require(_0x277f('0x15'))['db'];function respondWithStatusCode(_0x3b3f73,_0x161d90){_0x161d90=_0x161d90||0xcc;return function(_0x839e3a){if(_0x839e3a){return _0x3b3f73[_0x277f('0x16')](_0x161d90);}return _0x3b3f73['status'](_0x161d90)[_0x277f('0x17')]();};}function respondWithResult(_0x3c5f09,_0x28850c){_0x28850c=_0x28850c||0xc8;return function(_0x39d0c7){if(_0x39d0c7){return _0x3c5f09[_0x277f('0x18')](_0x28850c)[_0x277f('0x19')](_0x39d0c7);}};}function respondWithFilteredResult(_0x2f0927,_0x584127){return function(_0xffdff9){if(_0xffdff9){var _0x4662e9=typeof _0x584127[_0x277f('0x1a')]===_0x277f('0x1b')&&typeof _0x584127[_0x277f('0x1c')]===_0x277f('0x1b');var _0x29c42b=_0xffdff9[_0x277f('0x1d')];var _0x1970a8=_0x4662e9?0x0:_0x584127[_0x277f('0x1a')];var _0x2d8356=_0x4662e9?_0xffdff9[_0x277f('0x1d')]:_0x584127[_0x277f('0x1a')]+_0x584127[_0x277f('0x1c')];var _0x3a1f11;if(_0x2d8356>=_0x29c42b){_0x2d8356=_0x29c42b;_0x3a1f11=0xc8;}else{_0x3a1f11=0xce;}_0x2f0927['status'](_0x3a1f11);return _0x2f0927[_0x277f('0x1e')](_0x277f('0x1f'),_0x1970a8+'-'+_0x2d8356+'/'+_0x29c42b)[_0x277f('0x19')](_0xffdff9);}return null;};}function patchUpdates(_0x5a8731){return function(_0x4feb89){try{jsonpatch[_0x277f('0x20')](_0x4feb89,_0x5a8731,!![]);}catch(_0x1ebcfa){return BPromise[_0x277f('0x21')](_0x1ebcfa);}return _0x4feb89['save']();};}function saveUpdates(_0x5246a7,_0x3c13b2){return function(_0x56b4b9){if(_0x56b4b9){return _0x56b4b9[_0x277f('0x22')](_0x5246a7)[_0x277f('0x23')](function(_0x239d36){return _0x239d36;});}return null;};}function removeEntity(_0x14d9b5,_0xb47c2b){return function(_0x14c96a){if(_0x14c96a){return _0x14c96a[_0x277f('0x24')]()[_0x277f('0x23')](function(){_0x14d9b5[_0x277f('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f752e,_0x2364e1){return function(_0x536c51){if(!_0x536c51){_0x4f752e[_0x277f('0x16')](0x194);}return _0x536c51;};}function handleError(_0x440e0e,_0x15d9b0){_0x15d9b0=_0x15d9b0||0x1f4;return function(_0x525fec){logger[_0x277f('0x25')](_0x525fec[_0x277f('0x26')]);if(_0x525fec[_0x277f('0x27')]){delete _0x525fec['name'];}_0x440e0e[_0x277f('0x18')](_0x15d9b0)[_0x277f('0x28')](_0x525fec);};}exports['index']=function(_0x2d0a09,_0x25bd6c){var _0x3f74e5={},_0x14a04c={},_0x1bf281={'count':0x0,'rows':[]};var _0x228d2e=_[_0x277f('0x29')](db[_0x277f('0x2a')][_0x277f('0x2b')],function(_0x3164de){return{'name':_0x3164de[_0x277f('0x2c')],'type':_0x3164de[_0x277f('0x2d')][_0x277f('0x2e')]};});_0x14a04c[_0x277f('0x2f')]=_['map'](_0x228d2e,_0x277f('0x27'));_0x14a04c[_0x277f('0x30')]=_[_0x277f('0x31')](_0x2d0a09['query']);_0x14a04c[_0x277f('0x32')]=_[_0x277f('0x33')](_0x14a04c[_0x277f('0x2f')],_0x14a04c[_0x277f('0x30')]);_0x3f74e5[_0x277f('0x34')]=_[_0x277f('0x33')](_0x14a04c[_0x277f('0x2f')],qs['fields'](_0x2d0a09[_0x277f('0x30')][_0x277f('0x35')]));_0x3f74e5[_0x277f('0x34')]=_0x3f74e5[_0x277f('0x34')][_0x277f('0x36')]?_0x3f74e5[_0x277f('0x34')]:_0x14a04c[_0x277f('0x2f')];if(!_0x2d0a09[_0x277f('0x30')][_0x277f('0x37')]('nolimit')){_0x3f74e5[_0x277f('0x1c')]=qs[_0x277f('0x1c')](_0x2d0a09[_0x277f('0x30')]['limit']);_0x3f74e5['offset']=qs[_0x277f('0x1a')](_0x2d0a09[_0x277f('0x30')][_0x277f('0x1a')]);}_0x3f74e5[_0x277f('0x38')]=qs[_0x277f('0x39')](_0x2d0a09[_0x277f('0x30')][_0x277f('0x39')]);_0x3f74e5[_0x277f('0x3a')]=qs['filters'](_[_0x277f('0x3b')](_0x2d0a09[_0x277f('0x30')],_0x14a04c[_0x277f('0x32')]),_0x228d2e);if(_0x2d0a09['query'][_0x277f('0x3c')]){_0x3f74e5['where']=_[_0x277f('0x3d')](_0x3f74e5[_0x277f('0x3a')],{'$or':_[_0x277f('0x29')](_0x228d2e,function(_0x227b35){if(_0x227b35[_0x277f('0x2d')]!==_0x277f('0x3e')){var _0x1a6b72={};_0x1a6b72[_0x227b35[_0x277f('0x27')]]={'$like':'%'+_0x2d0a09[_0x277f('0x30')][_0x277f('0x3c')]+'%'};return _0x1a6b72;}})});}_0x3f74e5=_[_0x277f('0x3d')]({},_0x3f74e5,_0x2d0a09[_0x277f('0x3f')]);var _0x7a9fcf={'where':_0x3f74e5[_0x277f('0x3a')]};return db['FaxTransferReport'][_0x277f('0x1d')](_0x7a9fcf)[_0x277f('0x23')](function(_0x2f05e2){_0x1bf281[_0x277f('0x1d')]=_0x2f05e2;if(_0x2d0a09[_0x277f('0x30')][_0x277f('0x40')]){_0x3f74e5[_0x277f('0x41')]=[{'all':!![]}];}return db[_0x277f('0x2a')][_0x277f('0x42')](_0x3f74e5);})['then'](function(_0x24fbc1){_0x1bf281['rows']=_0x24fbc1;return _0x1bf281;})['then'](respondWithFilteredResult(_0x25bd6c,_0x3f74e5))[_0x277f('0x43')](handleError(_0x25bd6c,null));};exports['show']=function(_0x1bf054,_0x2a3527){var _0x4a2690={'raw':!![],'where':{'id':_0x1bf054['params']['id']}},_0x4661e6={};_0x4661e6[_0x277f('0x2f')]=_[_0x277f('0x31')](db[_0x277f('0x2a')][_0x277f('0x2b')]);_0x4661e6[_0x277f('0x30')]=_[_0x277f('0x31')](_0x1bf054['query']);_0x4661e6[_0x277f('0x32')]=_[_0x277f('0x33')](_0x4661e6[_0x277f('0x2f')],_0x4661e6[_0x277f('0x30')]);_0x4a2690['attributes']=_[_0x277f('0x33')](_0x4661e6[_0x277f('0x2f')],qs[_0x277f('0x35')](_0x1bf054[_0x277f('0x30')][_0x277f('0x35')]));_0x4a2690[_0x277f('0x34')]=_0x4a2690[_0x277f('0x34')][_0x277f('0x36')]?_0x4a2690[_0x277f('0x34')]:_0x4661e6[_0x277f('0x2f')];if(_0x1bf054[_0x277f('0x30')][_0x277f('0x40')]){_0x4a2690[_0x277f('0x41')]=[{'all':!![]}];}_0x4a2690=_[_0x277f('0x3d')]({},_0x4a2690,_0x1bf054['options']);return db[_0x277f('0x2a')][_0x277f('0x44')](_0x4a2690)[_0x277f('0x23')](handleEntityNotFound(_0x2a3527,null))[_0x277f('0x23')](respondWithResult(_0x2a3527,null))[_0x277f('0x43')](handleError(_0x2a3527,null));};exports[_0x277f('0x45')]=function(_0xfef4d0,_0x3c510d){return db[_0x277f('0x2a')][_0x277f('0x45')](_0xfef4d0[_0x277f('0x46')],{})['then'](respondWithResult(_0x3c510d,0xc9))['catch'](handleError(_0x3c510d,null));};exports[_0x277f('0x22')]=function(_0x15f84a,_0x3ec2d3){if(_0x15f84a[_0x277f('0x46')]['id']){delete _0x15f84a[_0x277f('0x46')]['id'];}return db[_0x277f('0x2a')][_0x277f('0x44')]({'where':{'id':_0x15f84a[_0x277f('0x47')]['id']}})[_0x277f('0x23')](handleEntityNotFound(_0x3ec2d3,null))[_0x277f('0x23')](saveUpdates(_0x15f84a[_0x277f('0x46')],null))[_0x277f('0x23')](respondWithResult(_0x3ec2d3,null))[_0x277f('0x43')](handleError(_0x3ec2d3,null));};exports[_0x277f('0x24')]=function(_0x1dc1b9,_0x3938ee){return db[_0x277f('0x2a')][_0x277f('0x44')]({'where':{'id':_0x1dc1b9[_0x277f('0x47')]['id']}})[_0x277f('0x23')](handleEntityNotFound(_0x3938ee,null))[_0x277f('0x23')](removeEntity(_0x3938ee,null))[_0x277f('0x43')](handleError(_0x3938ee,null));};exports[_0x277f('0x48')]=function(_0x239cf8,_0xb0d5b0){return db['FaxTransferReport']['describe']()[_0x277f('0x23')](respondWithResult(_0xb0d5b0,null))[_0x277f('0x43')](handleError(_0xb0d5b0,null));};
\ No newline at end of file
index b3a71df..69fd159 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7fb=['moment','bluebird','path','../../config/environment','exports','define','FaxTransferReport','report_fax_transfer','uniqueid','lodash','api'];(function(_0x40ebff,_0x1dd15e){var _0x40122a=function(_0xae6174){while(--_0xae6174){_0x40ebff['push'](_0x40ebff['shift']());}};_0x40122a(++_0x1dd15e);}(_0xf7fb,0x1cc));var _0xbf7f=function(_0xbc1e88,_0x521f1e){_0xbc1e88=_0xbc1e88-0x0;var _0x4a51c7=_0xf7fb[_0xbc1e88];return _0x4a51c7;};'use strict';var _=require(_0xbf7f('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xbf7f('0x1'));var moment=require(_0xbf7f('0x2'));var BPromise=require(_0xbf7f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbf7f('0x4'));var rimraf=require('rimraf');var config=require(_0xbf7f('0x5'));var attributes=require('./faxTransferReport.attributes');module[_0xbf7f('0x6')]=function(_0x1b00b5,_0x492c34){return _0x1b00b5[_0xbf7f('0x7')](_0xbf7f('0x8'),attributes,{'tableName':_0xbf7f('0x9'),'paranoid':![],'indexes':[{'name':_0xbf7f('0xa'),'fields':[_0xbf7f('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa4b2=['./faxTransferReport.attributes','exports','define','FaxTransferReport','report_fax_transfer','uniqueid','lodash','../../config/logger','api','moment','request-promise','path','../../config/environment'];(function(_0x117d60,_0x217e31){var _0x155472=function(_0x506d92){while(--_0x506d92){_0x117d60['push'](_0x117d60['shift']());}};_0x155472(++_0x217e31);}(_0xa4b2,0x1da));var _0x2a4b=function(_0x26b5f7,_0x12f74e){_0x26b5f7=_0x26b5f7-0x0;var _0x4f2c5d=_0xa4b2[_0x26b5f7];return _0x4f2c5d;};'use strict';var _=require(_0x2a4b('0x0'));var util=require('util');var logger=require(_0x2a4b('0x1'))(_0x2a4b('0x2'));var moment=require(_0x2a4b('0x3'));var BPromise=require('bluebird');var rp=require(_0x2a4b('0x4'));var fs=require('fs');var path=require(_0x2a4b('0x5'));var rimraf=require('rimraf');var config=require(_0x2a4b('0x6'));var attributes=require(_0x2a4b('0x7'));module[_0x2a4b('0x8')]=function(_0x51a2a5,_0x4451b9){return _0x51a2a5[_0x2a4b('0x9')](_0x2a4b('0xa'),attributes,{'tableName':_0x2a4b('0xb'),'paranoid':![],'indexes':[{'name':_0x2a4b('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 147df40..d2add97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe317=['then','info','FaxTransferReport,\x20%s,\x20%s','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','request'];(function(_0x3c25da,_0x1bc538){var _0x21a1a0=function(_0x3bb8d1){while(--_0x3bb8d1){_0x3c25da['push'](_0x3c25da['shift']());}};_0x21a1a0(++_0x1bc538);}(_0xe317,0xe7));var _0x7e31=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xe317[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x7e31('0x0'));var util=require(_0x7e31('0x1'));var moment=require(_0x7e31('0x2'));var BPromise=require(_0x7e31('0x3'));var rs=require(_0x7e31('0x4'));var fs=require('fs');var Redis=require(_0x7e31('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x7e31('0x6'));var logger=require(_0x7e31('0x7'))(_0x7e31('0x8'));var config=require(_0x7e31('0x9'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2d1083,_0x4371fb,_0x337f14){return new BPromise(function(_0x14f678,_0x3b5185){return client[_0x7e31('0xa')](_0x2d1083,_0x337f14)[_0x7e31('0xb')](function(_0x14fd18){logger[_0x7e31('0xc')](_0x7e31('0xd'),_0x4371fb,'request\x20sent');logger[_0x7e31('0xe')](_0x7e31('0xf'),_0x4371fb,_0x7e31('0x10'),JSON[_0x7e31('0x11')](_0x14fd18));if(_0x14fd18['error']){if(_0x14fd18['error'][_0x7e31('0x12')]===0x1f4){logger[_0x7e31('0x13')](_0x7e31('0xd'),_0x4371fb,_0x14fd18['error'][_0x7e31('0x14')]);return _0x3b5185(_0x14fd18[_0x7e31('0x13')][_0x7e31('0x14')]);}logger[_0x7e31('0x13')](_0x7e31('0xd'),_0x4371fb,_0x14fd18[_0x7e31('0x13')]['message']);return _0x14f678(_0x14fd18[_0x7e31('0x13')][_0x7e31('0x14')]);}else{logger['info']('FaxTransferReport,\x20%s,\x20%s',_0x4371fb,'request\x20sent');_0x14f678(_0x14fd18['result'][_0x7e31('0x14')]);}})[_0x7e31('0x15')](function(_0x500c16){logger[_0x7e31('0x13')](_0x7e31('0xd'),_0x4371fb,_0x500c16);_0x3b5185(_0x500c16);});});}
\ No newline at end of file
+var _0x351e=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','lodash','randomstring','ioredis'];(function(_0x33ebf5,_0x258ec6){var _0x66957b=function(_0x49739a){while(--_0x49739a){_0x33ebf5['push'](_0x33ebf5['shift']());}};_0x66957b(++_0x258ec6);}(_0x351e,0x184));var _0xe351=function(_0x12ceba,_0x59ba15){_0x12ceba=_0x12ceba-0x0;var _0x36c243=_0x351e[_0x12ceba];return _0x36c243;};'use strict';var _=require(_0xe351('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xe351('0x1'));var fs=require('fs');var Redis=require(_0xe351('0x2'));var db=require(_0xe351('0x3'))['db'];var utils=require(_0xe351('0x4'));var logger=require(_0xe351('0x5'))(_0xe351('0x6'));var config=require(_0xe351('0x7'));var jayson=require(_0xe351('0x8'));var client=jayson[_0xe351('0x9')][_0xe351('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x11e58b,_0x43e22c,_0x386ed8){return new BPromise(function(_0x554ce7,_0x2f0d19){return client[_0xe351('0xb')](_0x11e58b,_0x386ed8)[_0xe351('0xc')](function(_0x2cb0c4){logger['info'](_0xe351('0xd'),_0x43e22c,_0xe351('0xe'));logger[_0xe351('0xf')]('FaxTransferReport,\x20%s,\x20%s,\x20%s',_0x43e22c,'request\x20sent',JSON[_0xe351('0x10')](_0x2cb0c4));if(_0x2cb0c4['error']){if(_0x2cb0c4[_0xe351('0x11')][_0xe351('0x12')]===0x1f4){logger['error'](_0xe351('0xd'),_0x43e22c,_0x2cb0c4[_0xe351('0x11')][_0xe351('0x13')]);return _0x2f0d19(_0x2cb0c4['error']['message']);}logger[_0xe351('0x11')](_0xe351('0xd'),_0x43e22c,_0x2cb0c4[_0xe351('0x11')][_0xe351('0x13')]);return _0x554ce7(_0x2cb0c4[_0xe351('0x11')][_0xe351('0x13')]);}else{logger[_0xe351('0x14')](_0xe351('0xd'),_0x43e22c,'request\x20sent');_0x554ce7(_0x2cb0c4[_0xe351('0x15')][_0xe351('0x13')]);}})[_0xe351('0x16')](function(_0x45f237){logger[_0xe351('0x11')](_0xe351('0xd'),_0x43e22c,_0x45f237);_0x2f0d19(_0x45f237);});});}
\ No newline at end of file
index eb97bd1..4e2cce2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3aa=['Router','fs-extra','../../components/auth/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','multer','connect-timeout','express'];(function(_0x47e1b3,_0x4b152){var _0x20fe19=function(_0x1ce9f3){while(--_0x1ce9f3){_0x47e1b3['push'](_0x47e1b3['shift']());}};_0x20fe19(++_0x4b152);}(_0xd3aa,0x140));var _0xad3a=function(_0x258fb0,_0x5362dc){_0x258fb0=_0x258fb0-0x0;var _0x4d1afe=_0xd3aa[_0x258fb0];return _0x4d1afe;};'use strict';var multer=require(_0xad3a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xad3a('0x1'));var express=require(_0xad3a('0x2'));var router=express[_0xad3a('0x3')]();var fs_extra=require(_0xad3a('0x4'));var auth=require(_0xad3a('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xad3a('0x6'));var controller=require(_0xad3a('0x7'));router[_0xad3a('0x8')]('/',auth[_0xad3a('0x9')](),controller['index']);router['get']('/describe',auth[_0xad3a('0x9')](),controller[_0xad3a('0xa')]);router['get'](_0xad3a('0xb'),auth['isAuthenticated'](),controller[_0xad3a('0xc')]);router[_0xad3a('0xd')]('/',auth[_0xad3a('0x9')](),controller[_0xad3a('0xe')]);router[_0xad3a('0xf')]('/:id',auth[_0xad3a('0x9')](),controller[_0xad3a('0x10')]);router[_0xad3a('0x11')](_0xad3a('0xb'),auth[_0xad3a('0x9')](),controller[_0xad3a('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x5f87=['multer','util','path','fs-extra','../../components/interaction/service','./faxTransferReport.controller','isAuthenticated','index','/describe','/:id','show','create','put','delete','destroy','exports'];(function(_0x3c082e,_0x4bab6b){var _0x102d1f=function(_0x3ad158){while(--_0x3ad158){_0x3c082e['push'](_0x3c082e['shift']());}};_0x102d1f(++_0x4bab6b);}(_0x5f87,0x110));var _0x75f8=function(_0x33748f,_0x3314d8){_0x33748f=_0x33748f-0x0;var _0x39658c=_0x5f87[_0x33748f];return _0x39658c;};'use strict';var multer=require(_0x75f8('0x0'));var util=require(_0x75f8('0x1'));var path=require(_0x75f8('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x75f8('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x75f8('0x4'));var config=require('../../config/environment');var controller=require(_0x75f8('0x5'));router['get']('/',auth[_0x75f8('0x6')](),controller[_0x75f8('0x7')]);router['get'](_0x75f8('0x8'),auth[_0x75f8('0x6')](),controller['describe']);router['get'](_0x75f8('0x9'),auth['isAuthenticated'](),controller[_0x75f8('0xa')]);router['post']('/',auth[_0x75f8('0x6')](),controller[_0x75f8('0xb')]);router[_0x75f8('0xc')](_0x75f8('0x9'),auth[_0x75f8('0x6')](),controller['update']);router[_0x75f8('0xd')]('/:id',auth[_0x75f8('0x6')](),controller[_0x75f8('0xe')]);module[_0x75f8('0xf')]=router;
\ No newline at end of file
index 34e2063..fd7b9fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77d0=['get','isAuthenticated','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','update','delete','multer','util','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x30cd7e,_0x4db10a){var _0x462a02=function(_0x157d81){while(--_0x157d81){_0x30cd7e['push'](_0x30cd7e['shift']());}};_0x462a02(++_0x4db10a);}(_0x77d0,0x12d));var _0x077d=function(_0x504f9d,_0x309195){_0x504f9d=_0x504f9d-0x0;var _0x30c273=_0x77d0[_0x504f9d];return _0x30c273;};'use strict';var multer=require(_0x077d('0x0'));var util=require(_0x077d('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x077d('0x2'));var auth=require(_0x077d('0x3'));var interaction=require(_0x077d('0x4'));var config=require('../../config/environment');var controller=require('./intDeskAccount.controller');router[_0x077d('0x5')]('/',auth[_0x077d('0x6')](),controller['index']);router[_0x077d('0x5')](_0x077d('0x7'),auth['isAuthenticated'](),controller[_0x077d('0x8')]);router['get'](_0x077d('0x9'),auth[_0x077d('0x6')](),controller[_0x077d('0xa')]);router[_0x077d('0x5')](_0x077d('0xb'),auth[_0x077d('0x6')](),controller[_0x077d('0xc')]);router[_0x077d('0xd')]('/',auth[_0x077d('0x6')](),controller['create']);router[_0x077d('0xd')](_0x077d('0x9'),auth['isAuthenticated'](),controller[_0x077d('0xe')]);router[_0x077d('0xf')](_0x077d('0x7'),auth[_0x077d('0x6')](),controller[_0x077d('0x10')]);router[_0x077d('0x11')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x08b9=['destroy','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','update','delete','/:id'];(function(_0x27d21e,_0x1d0942){var _0x52c3c6=function(_0x3cb923){while(--_0x3cb923){_0x27d21e['push'](_0x27d21e['shift']());}};_0x52c3c6(++_0x1d0942);}(_0x08b9,0x177));var _0x908b=function(_0x34acff,_0x2637b3){_0x34acff=_0x34acff-0x0;var _0x3eacb6=_0x08b9[_0x34acff];return _0x3eacb6;};'use strict';var multer=require(_0x908b('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x908b('0x1'));var express=require('express');var router=express[_0x908b('0x2')]();var fs_extra=require(_0x908b('0x3'));var auth=require(_0x908b('0x4'));var interaction=require(_0x908b('0x5'));var config=require(_0x908b('0x6'));var controller=require(_0x908b('0x7'));router[_0x908b('0x8')]('/',auth[_0x908b('0x9')](),controller[_0x908b('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x908b('0xb')]);router[_0x908b('0x8')](_0x908b('0xc'),auth[_0x908b('0x9')](),controller[_0x908b('0xd')]);router[_0x908b('0x8')](_0x908b('0xe'),auth['isAuthenticated'](),controller[_0x908b('0xf')]);router['post']('/',auth[_0x908b('0x9')](),controller[_0x908b('0x10')]);router[_0x908b('0x11')]('/:id/configurations',auth[_0x908b('0x9')](),controller['addConfiguration']);router['put']('/:id',auth[_0x908b('0x9')](),controller[_0x908b('0x12')]);router[_0x908b('0x13')](_0x908b('0x14'),auth[_0x908b('0x9')](),controller[_0x908b('0x15')]);module['exports']=router;
\ No newline at end of file
index e803700..8a8dade 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbacd=['exports','STRING','basic','ENUM','integrationTab'];(function(_0x404dc4,_0x13cc13){var _0x574739=function(_0x29e484){while(--_0x29e484){_0x404dc4['push'](_0x404dc4['shift']());}};_0x574739(++_0x13cc13);}(_0xbacd,0x159));var _0xdbac=function(_0x33171d,_0x2ee14c){_0x33171d=_0x33171d-0x0;var _0x5c3c83=_0xbacd[_0x33171d];return _0x5c3c83;};'use strict';var Sequelize=require('sequelize');module[_0xdbac('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xdbac('0x1')]},'username':{'type':Sequelize[_0xdbac('0x1')]},'remoteUri':{'type':Sequelize[_0xdbac('0x1')]},'authType':{'type':Sequelize['ENUM'](_0xdbac('0x2')),'defaultValue':'basic'},'password':{'type':Sequelize[_0xdbac('0x1')]},'consumerKey':{'type':Sequelize[_0xdbac('0x1')]},'consumerSecret':{'type':Sequelize[_0xdbac('0x1')]},'token':{'type':Sequelize[_0xdbac('0x1')]},'tokenSecret':{'type':Sequelize[_0xdbac('0x1')]},'serverUrl':{'type':Sequelize[_0xdbac('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xdbac('0x3')](_0xdbac('0x4'),'newTab'),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0x5d44=['basic','integrationTab','newTab','sequelize','STRING','ENUM'];(function(_0x1d875a,_0x13faba){var _0x1da65f=function(_0x742618){while(--_0x742618){_0x1d875a['push'](_0x1d875a['shift']());}};_0x1da65f(++_0x13faba);}(_0x5d44,0x189));var _0x45d4=function(_0x33a12b,_0x526a98){_0x33a12b=_0x33a12b-0x0;var _0x41be89=_0x5d44[_0x33a12b];return _0x41be89;};'use strict';var Sequelize=require(_0x45d4('0x0'));module['exports']={'name':{'type':Sequelize[_0x45d4('0x1')]},'description':{'type':Sequelize[_0x45d4('0x1')]},'username':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x45d4('0x1')]},'authType':{'type':Sequelize[_0x45d4('0x2')](_0x45d4('0x3')),'defaultValue':_0x45d4('0x3')},'password':{'type':Sequelize[_0x45d4('0x1')]},'consumerKey':{'type':Sequelize['STRING']},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x45d4('0x1')]},'tokenSecret':{'type':Sequelize[_0x45d4('0x1')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x45d4('0x2')](_0x45d4('0x4'),_0x45d4('0x5')),'defaultValue':_0x45d4('0x4')}};
\ No newline at end of file
index 2768e79..0b22f17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dcf=['slice','substring','lastIndexOf','GET','format','application/json','basic','headers','Authorization','Basic\x20%s','%s:%s','password','base64','concat','entries','test','error','stringify','send','statusCode','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','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','status','end','offset','limit','undefined','count','json','reject','save','update','then','sendStatus','name','index','DeskAccount','rawAttributes','type','model','map','keys','query','filters','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows','params','intersection','options','find','catch','body','destroy','getConfigurations','findOne','DeskConfiguration','hasOwnProperty','addConfiguration','AccountId','channel','Descriptions','create','DeskField','Subjects','getFields','priority','remoteUri','authType','username','consumerKey','consumerSecret','token','tokenSecret'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0x6dcf,0x82));var _0xf6dc=function(_0xa7777d,_0x2045ce){_0xa7777d=_0xa7777d-0x0;var _0x53c35f=_0x6dcf[_0xa7777d];return _0x53c35f;};'use strict';var emlformat=require(_0xf6dc('0x0'));var rimraf=require(_0xf6dc('0x1'));var zipdir=require(_0xf6dc('0x2'));var jsonpatch=require(_0xf6dc('0x3'));var rp=require(_0xf6dc('0x4'));var moment=require(_0xf6dc('0x5'));var BPromise=require(_0xf6dc('0x6'));var Mustache=require(_0xf6dc('0x7'));var util=require(_0xf6dc('0x8'));var path=require(_0xf6dc('0x9'));var sox=require(_0xf6dc('0xa'));var csv=require(_0xf6dc('0xb'));var ejs=require(_0xf6dc('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf6dc('0xd'));var squel=require(_0xf6dc('0xe'));var crypto=require(_0xf6dc('0xf'));var jsforce=require(_0xf6dc('0x10'));var deskjs=require(_0xf6dc('0x11'));var toCsv=require('to-csv');var querystring=require(_0xf6dc('0x12'));var Papa=require(_0xf6dc('0x13'));var Redis=require(_0xf6dc('0x14'));var authService=require(_0xf6dc('0x15'));var qs=require(_0xf6dc('0x16'));var as=require(_0xf6dc('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xf6dc('0x18'));var config=require(_0xf6dc('0x19'));var licenseUtil=require(_0xf6dc('0x1a'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x43fd82,_0x317539){_0x317539=_0x317539||0xcc;return function(_0x312acf){if(_0x312acf){return _0x43fd82['sendStatus'](_0x317539);}return _0x43fd82[_0xf6dc('0x1b')](_0x317539)[_0xf6dc('0x1c')]();};}function respondWithResult(_0x5d7e9b,_0x15243c){_0x15243c=_0x15243c||0xc8;return function(_0x3a708a){if(_0x3a708a){return _0x5d7e9b[_0xf6dc('0x1b')](_0x15243c)['json'](_0x3a708a);}};}function respondWithFilteredResult(_0x1e44cd,_0x1766ba){return function(_0xe2127c){if(_0xe2127c){var _0x314cf2=typeof _0x1766ba[_0xf6dc('0x1d')]==='undefined'&&typeof _0x1766ba[_0xf6dc('0x1e')]===_0xf6dc('0x1f');var _0x4656ba=_0xe2127c[_0xf6dc('0x20')];var _0x2313ac=_0x314cf2?0x0:_0x1766ba[_0xf6dc('0x1d')];var _0x1079e7=_0x314cf2?_0xe2127c[_0xf6dc('0x20')]:_0x1766ba[_0xf6dc('0x1d')]+_0x1766ba['limit'];var _0x286c86;if(_0x1079e7>=_0x4656ba){_0x1079e7=_0x4656ba;_0x286c86=0xc8;}else{_0x286c86=0xce;}_0x1e44cd[_0xf6dc('0x1b')](_0x286c86);return _0x1e44cd['set']('Content-Range',_0x2313ac+'-'+_0x1079e7+'/'+_0x4656ba)[_0xf6dc('0x21')](_0xe2127c);}return null;};}function patchUpdates(_0x18ffe9){return function(_0x40d2e2){try{jsonpatch['apply'](_0x40d2e2,_0x18ffe9,!![]);}catch(_0x4efd67){return BPromise[_0xf6dc('0x22')](_0x4efd67);}return _0x40d2e2[_0xf6dc('0x23')]();};}function saveUpdates(_0x3d7787,_0x21e08a){return function(_0x16bbf8){if(_0x16bbf8){return _0x16bbf8[_0xf6dc('0x24')](_0x3d7787)[_0xf6dc('0x25')](function(_0x4c9a68){return _0x4c9a68;});}return null;};}function removeEntity(_0x4f0dad,_0x1b9238){return function(_0x59fbe9){if(_0x59fbe9){return _0x59fbe9['destroy']()[_0xf6dc('0x25')](function(){_0x4f0dad[_0xf6dc('0x1b')](0xcc)[_0xf6dc('0x1c')]();});}};}function handleEntityNotFound(_0x145158,_0x5940ce){return function(_0xde14a){if(!_0xde14a){_0x145158[_0xf6dc('0x26')](0x194);}return _0xde14a;};}function handleError(_0x488912,_0x4ade0d){_0x4ade0d=_0x4ade0d||0x1f4;return function(_0x5103ad){logger['error'](_0x5103ad['stack']);if(_0x5103ad[_0xf6dc('0x27')]){delete _0x5103ad[_0xf6dc('0x27')];}_0x488912[_0xf6dc('0x1b')](_0x4ade0d)['send'](_0x5103ad);};}exports[_0xf6dc('0x28')]=function(_0xdb2d3b,_0x5238c8){var _0x29ab24={},_0x2180b2={},_0x10e7e8={'count':0x0,'rows':[]};var _0x978df4=_['map'](db[_0xf6dc('0x29')][_0xf6dc('0x2a')],function(_0x490a0d){return{'name':_0x490a0d['fieldName'],'type':_0x490a0d[_0xf6dc('0x2b')]['key']};});_0x2180b2[_0xf6dc('0x2c')]=_[_0xf6dc('0x2d')](_0x978df4,_0xf6dc('0x27'));_0x2180b2['query']=_[_0xf6dc('0x2e')](_0xdb2d3b[_0xf6dc('0x2f')]);_0x2180b2[_0xf6dc('0x30')]=_['intersection'](_0x2180b2[_0xf6dc('0x2c')],_0x2180b2[_0xf6dc('0x2f')]);_0x29ab24[_0xf6dc('0x31')]=_['intersection'](_0x2180b2[_0xf6dc('0x2c')],qs[_0xf6dc('0x32')](_0xdb2d3b[_0xf6dc('0x2f')][_0xf6dc('0x32')]));_0x29ab24[_0xf6dc('0x31')]=_0x29ab24[_0xf6dc('0x31')][_0xf6dc('0x33')]?_0x29ab24['attributes']:_0x2180b2['model'];if(!_0xdb2d3b[_0xf6dc('0x2f')]['hasOwnProperty'](_0xf6dc('0x34'))){_0x29ab24[_0xf6dc('0x1e')]=qs['limit'](_0xdb2d3b[_0xf6dc('0x2f')][_0xf6dc('0x1e')]);_0x29ab24[_0xf6dc('0x1d')]=qs[_0xf6dc('0x1d')](_0xdb2d3b[_0xf6dc('0x2f')]['offset']);}_0x29ab24[_0xf6dc('0x35')]=qs[_0xf6dc('0x36')](_0xdb2d3b[_0xf6dc('0x2f')][_0xf6dc('0x36')]);_0x29ab24[_0xf6dc('0x37')]=qs[_0xf6dc('0x30')](_[_0xf6dc('0x38')](_0xdb2d3b[_0xf6dc('0x2f')],_0x2180b2[_0xf6dc('0x30')]),_0x978df4);if(_0xdb2d3b[_0xf6dc('0x2f')][_0xf6dc('0x39')]){_0x29ab24[_0xf6dc('0x37')]=_['merge'](_0x29ab24[_0xf6dc('0x37')],{'$or':_[_0xf6dc('0x2d')](_0x978df4,function(_0x3d6222){if(_0x3d6222['type']!=='VIRTUAL'){var _0x1a887a={};_0x1a887a[_0x3d6222[_0xf6dc('0x27')]]={'$like':'%'+_0xdb2d3b[_0xf6dc('0x2f')][_0xf6dc('0x39')]+'%'};return _0x1a887a;}})});}_0x29ab24=_[_0xf6dc('0x3a')]({},_0x29ab24,_0xdb2d3b['options']);var _0x28ad77={'where':_0x29ab24[_0xf6dc('0x37')]};return db['DeskAccount'][_0xf6dc('0x20')](_0x28ad77)['then'](function(_0x9f64ef){_0x10e7e8[_0xf6dc('0x20')]=_0x9f64ef;if(_0xdb2d3b['query'][_0xf6dc('0x3b')]){_0x29ab24[_0xf6dc('0x3c')]=[{'all':!![]}];}return db[_0xf6dc('0x29')][_0xf6dc('0x3d')](_0x29ab24);})[_0xf6dc('0x25')](function(_0x5ba013){_0x10e7e8[_0xf6dc('0x3e')]=_0x5ba013;return _0x10e7e8;})[_0xf6dc('0x25')](respondWithFilteredResult(_0x5238c8,_0x29ab24))['catch'](handleError(_0x5238c8,null));};exports['show']=function(_0xe68644,_0x579922){var _0x2e09d6={'raw':![],'where':{'id':_0xe68644[_0xf6dc('0x3f')]['id']}},_0x978269={};_0x978269[_0xf6dc('0x2c')]=_[_0xf6dc('0x2e')](db[_0xf6dc('0x29')][_0xf6dc('0x2a')]);_0x978269[_0xf6dc('0x2f')]=_[_0xf6dc('0x2e')](_0xe68644[_0xf6dc('0x2f')]);_0x978269[_0xf6dc('0x30')]=_['intersection'](_0x978269[_0xf6dc('0x2c')],_0x978269[_0xf6dc('0x2f')]);_0x2e09d6['attributes']=_[_0xf6dc('0x40')](_0x978269[_0xf6dc('0x2c')],qs['fields'](_0xe68644[_0xf6dc('0x2f')][_0xf6dc('0x32')]));_0x2e09d6[_0xf6dc('0x31')]=_0x2e09d6[_0xf6dc('0x31')][_0xf6dc('0x33')]?_0x2e09d6[_0xf6dc('0x31')]:_0x978269[_0xf6dc('0x2c')];if(_0xe68644['query']['includeAll']){_0x2e09d6[_0xf6dc('0x3c')]=[{'all':!![]}];}_0x2e09d6=_[_0xf6dc('0x3a')]({},_0x2e09d6,_0xe68644[_0xf6dc('0x41')]);return db[_0xf6dc('0x29')][_0xf6dc('0x42')](_0x2e09d6)['then'](handleEntityNotFound(_0x579922,null))[_0xf6dc('0x25')](respondWithResult(_0x579922,null))[_0xf6dc('0x43')](handleError(_0x579922,null));};exports['create']=function(_0x5c0e98,_0x4a3624){return db['DeskAccount']['create'](_0x5c0e98[_0xf6dc('0x44')],{})[_0xf6dc('0x25')](respondWithResult(_0x4a3624,0xc9))['catch'](handleError(_0x4a3624,null));};exports[_0xf6dc('0x24')]=function(_0x535851,_0x70d6ae){if(_0x535851['body']['id']){delete _0x535851['body']['id'];}return db['DeskAccount'][_0xf6dc('0x42')]({'where':{'id':_0x535851['params']['id']}})[_0xf6dc('0x25')](handleEntityNotFound(_0x70d6ae,null))[_0xf6dc('0x25')](saveUpdates(_0x535851[_0xf6dc('0x44')],null))[_0xf6dc('0x25')](respondWithResult(_0x70d6ae,null))['catch'](handleError(_0x70d6ae,null));};exports[_0xf6dc('0x45')]=function(_0x1883a8,_0x1747cd){return db[_0xf6dc('0x29')]['find']({'where':{'id':_0x1883a8['params']['id']}})[_0xf6dc('0x25')](handleEntityNotFound(_0x1747cd,null))[_0xf6dc('0x25')](removeEntity(_0x1747cd,null))[_0xf6dc('0x43')](handleError(_0x1747cd,null));};exports[_0xf6dc('0x46')]=function(_0x4a257d,_0x595b74,_0x1282fd){var _0x12a481={};var _0x5d4a31={};var _0x431132;var _0x244ff5;return db[_0xf6dc('0x29')][_0xf6dc('0x47')]({'where':{'id':_0x4a257d[_0xf6dc('0x3f')]['id']}})[_0xf6dc('0x25')](handleEntityNotFound(_0x595b74,null))['then'](function(_0x3c113e){if(_0x3c113e){_0x431132=_0x3c113e;_0x5d4a31['model']=_[_0xf6dc('0x2e')](db[_0xf6dc('0x48')]['rawAttributes']);_0x5d4a31[_0xf6dc('0x2f')]=_[_0xf6dc('0x2e')](_0x4a257d['query']);_0x5d4a31[_0xf6dc('0x30')]=_[_0xf6dc('0x40')](_0x5d4a31[_0xf6dc('0x2c')],_0x5d4a31[_0xf6dc('0x2f')]);_0x12a481[_0xf6dc('0x31')]=_[_0xf6dc('0x40')](_0x5d4a31[_0xf6dc('0x2c')],qs[_0xf6dc('0x32')](_0x4a257d['query'][_0xf6dc('0x32')]));_0x12a481[_0xf6dc('0x31')]=_0x12a481[_0xf6dc('0x31')][_0xf6dc('0x33')]?_0x12a481['attributes']:_0x5d4a31[_0xf6dc('0x2c')];_0x12a481[_0xf6dc('0x35')]=qs['sort'](_0x4a257d[_0xf6dc('0x2f')][_0xf6dc('0x36')]);_0x12a481['where']=qs['filters'](_['pick'](_0x4a257d['query'],_0x5d4a31[_0xf6dc('0x30')]));if(_0x4a257d[_0xf6dc('0x2f')][_0xf6dc('0x39')]){_0x12a481[_0xf6dc('0x37')]=_['merge'](_0x12a481[_0xf6dc('0x37')],{'$or':_['map'](_0x12a481[_0xf6dc('0x31')],function(_0x89c7c6){var _0x419d51={};_0x419d51[_0x89c7c6]={'$like':'%'+_0x4a257d[_0xf6dc('0x2f')]['filter']+'%'};return _0x419d51;})});}_0x12a481=_[_0xf6dc('0x3a')]({},_0x12a481,_0x4a257d[_0xf6dc('0x41')]);return _0x431132[_0xf6dc('0x46')](_0x12a481);}})['then'](function(_0x35ce8b){if(_0x35ce8b){_0x244ff5=_0x35ce8b[_0xf6dc('0x33')];if(!_0x4a257d[_0xf6dc('0x2f')][_0xf6dc('0x49')](_0xf6dc('0x34'))){_0x12a481[_0xf6dc('0x1e')]=qs[_0xf6dc('0x1e')](_0x4a257d[_0xf6dc('0x2f')][_0xf6dc('0x1e')]);_0x12a481['offset']=qs['offset'](_0x4a257d[_0xf6dc('0x2f')][_0xf6dc('0x1d')]);}return _0x431132[_0xf6dc('0x46')](_0x12a481);}})['then'](function(_0x25d3ac){if(_0x25d3ac){return _0x25d3ac?{'count':_0x244ff5,'rows':_0x25d3ac}:null;}})[_0xf6dc('0x25')](respondWithResult(_0x595b74,null))[_0xf6dc('0x43')](handleError(_0x595b74,null));};exports[_0xf6dc('0x4a')]=function(_0x4c7af8,_0x199156,_0x5135e7){if(_0x4c7af8['body']['id']){delete _0x4c7af8[_0xf6dc('0x44')]['id'];}return db[_0xf6dc('0x29')]['findOne']({'where':{'id':_0x4c7af8[_0xf6dc('0x3f')]['id']}})[_0xf6dc('0x25')](handleEntityNotFound(_0x199156,null))[_0xf6dc('0x25')](function(_0x452999){if(_0x452999){_0x4c7af8[_0xf6dc('0x44')][_0xf6dc('0x4b')]=_0x452999['id'];_0x4c7af8[_0xf6dc('0x44')]['Subjects']=integrations['getSubjects'](_0x4c7af8['body'][_0xf6dc('0x4c')],_0x4c7af8[_0xf6dc('0x44')][_0xf6dc('0x2b')]);_0x4c7af8[_0xf6dc('0x44')][_0xf6dc('0x4d')]=integrations['getDescriptions'](_0x4c7af8[_0xf6dc('0x44')][_0xf6dc('0x4c')],_0x4c7af8[_0xf6dc('0x44')][_0xf6dc('0x2b')]);return db[_0xf6dc('0x48')][_0xf6dc('0x4e')](_0x4c7af8[_0xf6dc('0x44')],{'include':[{'model':db[_0xf6dc('0x4f')],'as':_0xf6dc('0x50')},{'model':db[_0xf6dc('0x4f')],'as':_0xf6dc('0x4d')}]});}return null;})[_0xf6dc('0x25')](respondWithResult(_0x199156,null))[_0xf6dc('0x43')](handleError(_0x199156,null));};exports[_0xf6dc('0x51')]=function(_0x224b73,_0x128f7d,_0x251b41){var _0x534ab1=[{'name':'priority','label':_0xf6dc('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 _0x3f1228='';return db['DeskAccount'][_0xf6dc('0x47')]({'where':{'id':_0x224b73[_0xf6dc('0x3f')]['id']},'attributes':['id',_0xf6dc('0x53'),_0xf6dc('0x54'),_0xf6dc('0x55'),'password',_0xf6dc('0x56'),_0xf6dc('0x57'),_0xf6dc('0x58'),_0xf6dc('0x59')]})['then'](handleEntityNotFound(_0x128f7d,null))[_0xf6dc('0x25')](function(_0x4a466a){if(_0x4a466a){_0x3f1228=_0x4a466a[_0xf6dc('0x53')];var _0x297a2f=_0x3f1228[_0xf6dc('0x5a')](-0x1);if(_0x297a2f==='/'){_0x3f1228=_0x3f1228[_0xf6dc('0x5b')](0x0,_0x3f1228[_0xf6dc('0x5c')](_0x297a2f));}var _0x40cc5e={'method':_0xf6dc('0x5d'),'uri':util[_0xf6dc('0x5e')]('%s/custom_fields',_0x3f1228),'headers':{'Content-Type':'application/json','Accept':_0xf6dc('0x5f')},'json':!![]};if(_0x4a466a['authType']===_0xf6dc('0x60')){_0x40cc5e[_0xf6dc('0x61')][_0xf6dc('0x62')]=util[_0xf6dc('0x5e')](_0xf6dc('0x63'),new Buffer(util[_0xf6dc('0x5e')](_0xf6dc('0x64'),_0x4a466a[_0xf6dc('0x55')],_0x4a466a[_0xf6dc('0x65')]))['toString'](_0xf6dc('0x66')));}return rp(_0x40cc5e)[_0xf6dc('0x25')](function(_0x4a598e){return _0x534ab1[_0xf6dc('0x67')](_[_0xf6dc('0x2d')](_0x4a598e['_embedded'][_0xf6dc('0x68')],function(_0x383fa6){return{'id':_0x383fa6[_0xf6dc('0x27')],'name':_0x383fa6[_0xf6dc('0x27')],'type':_0x383fa6[_0xf6dc('0x2b')],'active':_0x383fa6['active'],'label':_0x383fa6['label'],'custom':!![]};}));});}})['then'](function(_0x46828a){return{'count':_0x46828a[_0xf6dc('0x33')],'rows':_0x46828a};})[_0xf6dc('0x25')](respondWithResult(_0x128f7d,null))[_0xf6dc('0x43')](function(_0x57926d){var _0x55a7ae=_0x224b73[_0xf6dc('0x2f')][_0xf6dc('0x69')]?0x1f4:_0x57926d['statusCode']||0x1f4;logger[_0xf6dc('0x6a')]('getFields,\x20%s,\x20%s,\x20%s',_0xf6dc('0x51'),_0x55a7ae,JSON[_0xf6dc('0x6b')](_0x57926d));delete _0x57926d[_0xf6dc('0x27')];if(_0x55a7ae===0x191){_0x55a7ae=0x190;}_0x128f7d[_0xf6dc('0x1b')](_0x55a7ae)[_0xf6dc('0x6c')](_0x224b73['query'][_0xf6dc('0x69')]?{'message':'Wrong\x20credentials','statusCode':_0x57926d[_0xf6dc('0x6d')]}:_0x57926d);});};
\ No newline at end of file
+var _0xb2f4=['Basic\x20%s','%s:%s','toString','base64','concat','_embedded','entries','label','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','index','map','DeskAccount','fieldName','type','model','keys','query','filters','attributes','fields','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','include','findAll','show','params','intersection','includeAll','options','find','catch','body','getConfigurations','findOne','rawAttributes','order','hasOwnProperty','addConfiguration','channel','Descriptions','getDescriptions','create','Subjects','DeskField','getFields','priority','authType','username','password','consumerKey','consumerSecret','token','tokenSecret','remoteUri','slice','substring','lastIndexOf','format','%s/custom_fields','application/json','headers','Authorization'];(function(_0x24af62,_0x2ec32a){var _0x5f265c=function(_0x258b03){while(--_0x258b03){_0x24af62['push'](_0x24af62['shift']());}};_0x5f265c(++_0x2ec32a);}(_0xb2f4,0xf6));var _0x4b2f=function(_0x3d542c,_0x2098ae){_0x3d542c=_0x3d542c-0x0;var _0x4946de=_0xb2f4[_0x3d542c];return _0x4946de;};'use strict';var emlformat=require(_0x4b2f('0x0'));var rimraf=require(_0x4b2f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4b2f('0x2'));var moment=require(_0x4b2f('0x3'));var BPromise=require(_0x4b2f('0x4'));var Mustache=require(_0x4b2f('0x5'));var util=require(_0x4b2f('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x4b2f('0x7'));var ejs=require(_0x4b2f('0x8'));var fs=require('fs');var fs_extra=require(_0x4b2f('0x9'));var _=require(_0x4b2f('0xa'));var squel=require(_0x4b2f('0xb'));var crypto=require('crypto');var jsforce=require(_0x4b2f('0xc'));var deskjs=require(_0x4b2f('0xd'));var toCsv=require(_0x4b2f('0x7'));var querystring=require('querystring');var Papa=require(_0x4b2f('0xe'));var Redis=require(_0x4b2f('0xf'));var authService=require(_0x4b2f('0x10'));var qs=require(_0x4b2f('0x11'));var as=require(_0x4b2f('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4b2f('0x13'))('api');var utils=require(_0x4b2f('0x14'));var config=require(_0x4b2f('0x15'));var licenseUtil=require(_0x4b2f('0x16'));var db=require(_0x4b2f('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3de4f7,_0x198284){_0x198284=_0x198284||0xcc;return function(_0xca4d5b){if(_0xca4d5b){return _0x3de4f7[_0x4b2f('0x18')](_0x198284);}return _0x3de4f7['status'](_0x198284)[_0x4b2f('0x19')]();};}function respondWithResult(_0x4ba4ba,_0x1edb65){_0x1edb65=_0x1edb65||0xc8;return function(_0x18a0d6){if(_0x18a0d6){return _0x4ba4ba[_0x4b2f('0x1a')](_0x1edb65)['json'](_0x18a0d6);}};}function respondWithFilteredResult(_0x23f168,_0x2dd4bb){return function(_0x180726){if(_0x180726){var _0x586324=typeof _0x2dd4bb[_0x4b2f('0x1b')]===_0x4b2f('0x1c')&&typeof _0x2dd4bb[_0x4b2f('0x1d')]===_0x4b2f('0x1c');var _0x123df1=_0x180726[_0x4b2f('0x1e')];var _0x1b9f10=_0x586324?0x0:_0x2dd4bb[_0x4b2f('0x1b')];var _0x527789=_0x586324?_0x180726[_0x4b2f('0x1e')]:_0x2dd4bb[_0x4b2f('0x1b')]+_0x2dd4bb[_0x4b2f('0x1d')];var _0x15d030;if(_0x527789>=_0x123df1){_0x527789=_0x123df1;_0x15d030=0xc8;}else{_0x15d030=0xce;}_0x23f168[_0x4b2f('0x1a')](_0x15d030);return _0x23f168[_0x4b2f('0x1f')](_0x4b2f('0x20'),_0x1b9f10+'-'+_0x527789+'/'+_0x123df1)[_0x4b2f('0x21')](_0x180726);}return null;};}function patchUpdates(_0x388968){return function(_0x52ebe1){try{jsonpatch[_0x4b2f('0x22')](_0x52ebe1,_0x388968,!![]);}catch(_0x5569e9){return BPromise[_0x4b2f('0x23')](_0x5569e9);}return _0x52ebe1[_0x4b2f('0x24')]();};}function saveUpdates(_0x4a40ad,_0x206bab){return function(_0x2bf49e){if(_0x2bf49e){return _0x2bf49e[_0x4b2f('0x25')](_0x4a40ad)[_0x4b2f('0x26')](function(_0x20901f){return _0x20901f;});}return null;};}function removeEntity(_0x5b578f,_0x1f4a75){return function(_0x254800){if(_0x254800){return _0x254800[_0x4b2f('0x27')]()['then'](function(){_0x5b578f[_0x4b2f('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d518a,_0x142938){return function(_0x32a598){if(!_0x32a598){_0x4d518a['sendStatus'](0x194);}return _0x32a598;};}function handleError(_0x30c78e,_0x4f76e3){_0x4f76e3=_0x4f76e3||0x1f4;return function(_0x31c54c){logger['error'](_0x31c54c[_0x4b2f('0x28')]);if(_0x31c54c[_0x4b2f('0x29')]){delete _0x31c54c[_0x4b2f('0x29')];}_0x30c78e[_0x4b2f('0x1a')](_0x4f76e3)[_0x4b2f('0x2a')](_0x31c54c);};}exports[_0x4b2f('0x2b')]=function(_0x3fe776,_0x5156b9){var _0x1f4dba={},_0xb61b1c={},_0x5372b6={'count':0x0,'rows':[]};var _0x5ee052=_[_0x4b2f('0x2c')](db[_0x4b2f('0x2d')]['rawAttributes'],function(_0x594db1){return{'name':_0x594db1[_0x4b2f('0x2e')],'type':_0x594db1[_0x4b2f('0x2f')]['key']};});_0xb61b1c[_0x4b2f('0x30')]=_[_0x4b2f('0x2c')](_0x5ee052,_0x4b2f('0x29'));_0xb61b1c['query']=_[_0x4b2f('0x31')](_0x3fe776[_0x4b2f('0x32')]);_0xb61b1c[_0x4b2f('0x33')]=_['intersection'](_0xb61b1c[_0x4b2f('0x30')],_0xb61b1c[_0x4b2f('0x32')]);_0x1f4dba[_0x4b2f('0x34')]=_['intersection'](_0xb61b1c[_0x4b2f('0x30')],qs['fields'](_0x3fe776['query'][_0x4b2f('0x35')]));_0x1f4dba['attributes']=_0x1f4dba[_0x4b2f('0x34')][_0x4b2f('0x36')]?_0x1f4dba[_0x4b2f('0x34')]:_0xb61b1c[_0x4b2f('0x30')];if(!_0x3fe776[_0x4b2f('0x32')]['hasOwnProperty'](_0x4b2f('0x37'))){_0x1f4dba[_0x4b2f('0x1d')]=qs[_0x4b2f('0x1d')](_0x3fe776[_0x4b2f('0x32')]['limit']);_0x1f4dba[_0x4b2f('0x1b')]=qs['offset'](_0x3fe776[_0x4b2f('0x32')][_0x4b2f('0x1b')]);}_0x1f4dba['order']=qs['sort'](_0x3fe776[_0x4b2f('0x32')][_0x4b2f('0x38')]);_0x1f4dba[_0x4b2f('0x39')]=qs[_0x4b2f('0x33')](_[_0x4b2f('0x3a')](_0x3fe776['query'],_0xb61b1c[_0x4b2f('0x33')]),_0x5ee052);if(_0x3fe776[_0x4b2f('0x32')]['filter']){_0x1f4dba[_0x4b2f('0x39')]=_[_0x4b2f('0x3b')](_0x1f4dba[_0x4b2f('0x39')],{'$or':_[_0x4b2f('0x2c')](_0x5ee052,function(_0x4409c5){if(_0x4409c5['type']!==_0x4b2f('0x3c')){var _0x3356c3={};_0x3356c3[_0x4409c5[_0x4b2f('0x29')]]={'$like':'%'+_0x3fe776[_0x4b2f('0x32')][_0x4b2f('0x3d')]+'%'};return _0x3356c3;}})});}_0x1f4dba=_[_0x4b2f('0x3b')]({},_0x1f4dba,_0x3fe776['options']);var _0x477a04={'where':_0x1f4dba[_0x4b2f('0x39')]};return db[_0x4b2f('0x2d')][_0x4b2f('0x1e')](_0x477a04)[_0x4b2f('0x26')](function(_0x1bd216){_0x5372b6[_0x4b2f('0x1e')]=_0x1bd216;if(_0x3fe776[_0x4b2f('0x32')]['includeAll']){_0x1f4dba[_0x4b2f('0x3e')]=[{'all':!![]}];}return db[_0x4b2f('0x2d')][_0x4b2f('0x3f')](_0x1f4dba);})['then'](function(_0x2982a0){_0x5372b6['rows']=_0x2982a0;return _0x5372b6;})['then'](respondWithFilteredResult(_0x5156b9,_0x1f4dba))['catch'](handleError(_0x5156b9,null));};exports[_0x4b2f('0x40')]=function(_0x3ff5da,_0x10159d){var _0x1ed4d6={'raw':![],'where':{'id':_0x3ff5da[_0x4b2f('0x41')]['id']}},_0x114dd3={};_0x114dd3['model']=_[_0x4b2f('0x31')](db[_0x4b2f('0x2d')]['rawAttributes']);_0x114dd3[_0x4b2f('0x32')]=_[_0x4b2f('0x31')](_0x3ff5da['query']);_0x114dd3[_0x4b2f('0x33')]=_[_0x4b2f('0x42')](_0x114dd3[_0x4b2f('0x30')],_0x114dd3[_0x4b2f('0x32')]);_0x1ed4d6['attributes']=_[_0x4b2f('0x42')](_0x114dd3[_0x4b2f('0x30')],qs['fields'](_0x3ff5da[_0x4b2f('0x32')]['fields']));_0x1ed4d6['attributes']=_0x1ed4d6[_0x4b2f('0x34')][_0x4b2f('0x36')]?_0x1ed4d6[_0x4b2f('0x34')]:_0x114dd3[_0x4b2f('0x30')];if(_0x3ff5da[_0x4b2f('0x32')][_0x4b2f('0x43')]){_0x1ed4d6[_0x4b2f('0x3e')]=[{'all':!![]}];}_0x1ed4d6=_[_0x4b2f('0x3b')]({},_0x1ed4d6,_0x3ff5da[_0x4b2f('0x44')]);return db[_0x4b2f('0x2d')][_0x4b2f('0x45')](_0x1ed4d6)[_0x4b2f('0x26')](handleEntityNotFound(_0x10159d,null))[_0x4b2f('0x26')](respondWithResult(_0x10159d,null))[_0x4b2f('0x46')](handleError(_0x10159d,null));};exports['create']=function(_0x53882e,_0x1921a4){return db['DeskAccount']['create'](_0x53882e[_0x4b2f('0x47')],{})[_0x4b2f('0x26')](respondWithResult(_0x1921a4,0xc9))[_0x4b2f('0x46')](handleError(_0x1921a4,null));};exports[_0x4b2f('0x25')]=function(_0x10ae9b,_0x2d1134){if(_0x10ae9b[_0x4b2f('0x47')]['id']){delete _0x10ae9b['body']['id'];}return db[_0x4b2f('0x2d')][_0x4b2f('0x45')]({'where':{'id':_0x10ae9b[_0x4b2f('0x41')]['id']}})[_0x4b2f('0x26')](handleEntityNotFound(_0x2d1134,null))[_0x4b2f('0x26')](saveUpdates(_0x10ae9b[_0x4b2f('0x47')],null))[_0x4b2f('0x26')](respondWithResult(_0x2d1134,null))[_0x4b2f('0x46')](handleError(_0x2d1134,null));};exports['destroy']=function(_0x3d6f29,_0x6e9821){return db[_0x4b2f('0x2d')]['find']({'where':{'id':_0x3d6f29['params']['id']}})[_0x4b2f('0x26')](handleEntityNotFound(_0x6e9821,null))[_0x4b2f('0x26')](removeEntity(_0x6e9821,null))['catch'](handleError(_0x6e9821,null));};exports[_0x4b2f('0x48')]=function(_0x1ba4f5,_0x3d149f,_0x5467aa){var _0x586cd6={};var _0x586c52={};var _0x396d8e;var _0x2c3951;return db[_0x4b2f('0x2d')][_0x4b2f('0x49')]({'where':{'id':_0x1ba4f5[_0x4b2f('0x41')]['id']}})[_0x4b2f('0x26')](handleEntityNotFound(_0x3d149f,null))[_0x4b2f('0x26')](function(_0x138620){if(_0x138620){_0x396d8e=_0x138620;_0x586c52[_0x4b2f('0x30')]=_[_0x4b2f('0x31')](db['DeskConfiguration'][_0x4b2f('0x4a')]);_0x586c52['query']=_['keys'](_0x1ba4f5[_0x4b2f('0x32')]);_0x586c52[_0x4b2f('0x33')]=_[_0x4b2f('0x42')](_0x586c52[_0x4b2f('0x30')],_0x586c52[_0x4b2f('0x32')]);_0x586cd6[_0x4b2f('0x34')]=_[_0x4b2f('0x42')](_0x586c52['model'],qs['fields'](_0x1ba4f5[_0x4b2f('0x32')]['fields']));_0x586cd6[_0x4b2f('0x34')]=_0x586cd6['attributes']['length']?_0x586cd6[_0x4b2f('0x34')]:_0x586c52[_0x4b2f('0x30')];_0x586cd6[_0x4b2f('0x4b')]=qs['sort'](_0x1ba4f5['query'][_0x4b2f('0x38')]);_0x586cd6['where']=qs['filters'](_[_0x4b2f('0x3a')](_0x1ba4f5['query'],_0x586c52[_0x4b2f('0x33')]));if(_0x1ba4f5[_0x4b2f('0x32')][_0x4b2f('0x3d')]){_0x586cd6['where']=_['merge'](_0x586cd6['where'],{'$or':_['map'](_0x586cd6[_0x4b2f('0x34')],function(_0x5bc39e){var _0x2eeff5={};_0x2eeff5[_0x5bc39e]={'$like':'%'+_0x1ba4f5[_0x4b2f('0x32')][_0x4b2f('0x3d')]+'%'};return _0x2eeff5;})});}_0x586cd6=_[_0x4b2f('0x3b')]({},_0x586cd6,_0x1ba4f5[_0x4b2f('0x44')]);return _0x396d8e['getConfigurations'](_0x586cd6);}})[_0x4b2f('0x26')](function(_0xb9bc){if(_0xb9bc){_0x2c3951=_0xb9bc['length'];if(!_0x1ba4f5['query'][_0x4b2f('0x4c')](_0x4b2f('0x37'))){_0x586cd6['limit']=qs[_0x4b2f('0x1d')](_0x1ba4f5[_0x4b2f('0x32')][_0x4b2f('0x1d')]);_0x586cd6[_0x4b2f('0x1b')]=qs['offset'](_0x1ba4f5[_0x4b2f('0x32')]['offset']);}return _0x396d8e[_0x4b2f('0x48')](_0x586cd6);}})[_0x4b2f('0x26')](function(_0xc31054){if(_0xc31054){return _0xc31054?{'count':_0x2c3951,'rows':_0xc31054}:null;}})[_0x4b2f('0x26')](respondWithResult(_0x3d149f,null))[_0x4b2f('0x46')](handleError(_0x3d149f,null));};exports[_0x4b2f('0x4d')]=function(_0x1e2294,_0x1125ff,_0x39ac0d){if(_0x1e2294['body']['id']){delete _0x1e2294[_0x4b2f('0x47')]['id'];}return db[_0x4b2f('0x2d')][_0x4b2f('0x49')]({'where':{'id':_0x1e2294['params']['id']}})[_0x4b2f('0x26')](handleEntityNotFound(_0x1125ff,null))['then'](function(_0x416117){if(_0x416117){_0x1e2294[_0x4b2f('0x47')]['AccountId']=_0x416117['id'];_0x1e2294[_0x4b2f('0x47')]['Subjects']=integrations['getSubjects'](_0x1e2294[_0x4b2f('0x47')][_0x4b2f('0x4e')],_0x1e2294['body']['type']);_0x1e2294['body'][_0x4b2f('0x4f')]=integrations[_0x4b2f('0x50')](_0x1e2294['body'][_0x4b2f('0x4e')],_0x1e2294[_0x4b2f('0x47')][_0x4b2f('0x2f')]);return db['DeskConfiguration'][_0x4b2f('0x51')](_0x1e2294[_0x4b2f('0x47')],{'include':[{'model':db['DeskField'],'as':_0x4b2f('0x52')},{'model':db[_0x4b2f('0x53')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x1125ff,null))['catch'](handleError(_0x1125ff,null));};exports[_0x4b2f('0x54')]=function(_0x450aeb,_0x1d3e7b,_0x2e2231){var _0x4c9513=[{'name':_0x4b2f('0x55'),'label':'priority','custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x27f378='';return db[_0x4b2f('0x2d')][_0x4b2f('0x49')]({'where':{'id':_0x450aeb[_0x4b2f('0x41')]['id']},'attributes':['id','remoteUri',_0x4b2f('0x56'),_0x4b2f('0x57'),_0x4b2f('0x58'),_0x4b2f('0x59'),_0x4b2f('0x5a'),_0x4b2f('0x5b'),_0x4b2f('0x5c')]})[_0x4b2f('0x26')](handleEntityNotFound(_0x1d3e7b,null))[_0x4b2f('0x26')](function(_0xc09502){if(_0xc09502){_0x27f378=_0xc09502[_0x4b2f('0x5d')];var _0xdee6d4=_0x27f378[_0x4b2f('0x5e')](-0x1);if(_0xdee6d4==='/'){_0x27f378=_0x27f378[_0x4b2f('0x5f')](0x0,_0x27f378[_0x4b2f('0x60')](_0xdee6d4));}var _0x3853d0={'method':'GET','uri':util[_0x4b2f('0x61')](_0x4b2f('0x62'),_0x27f378),'headers':{'Content-Type':_0x4b2f('0x63'),'Accept':_0x4b2f('0x63')},'json':!![]};if(_0xc09502[_0x4b2f('0x56')]==='basic'){_0x3853d0[_0x4b2f('0x64')][_0x4b2f('0x65')]=util[_0x4b2f('0x61')](_0x4b2f('0x66'),new Buffer(util[_0x4b2f('0x61')](_0x4b2f('0x67'),_0xc09502['username'],_0xc09502[_0x4b2f('0x58')]))[_0x4b2f('0x68')](_0x4b2f('0x69')));}return rp(_0x3853d0)[_0x4b2f('0x26')](function(_0x50d59f){return _0x4c9513[_0x4b2f('0x6a')](_['map'](_0x50d59f[_0x4b2f('0x6b')][_0x4b2f('0x6c')],function(_0x5838b0){return{'id':_0x5838b0[_0x4b2f('0x29')],'name':_0x5838b0[_0x4b2f('0x29')],'type':_0x5838b0['type'],'active':_0x5838b0['active'],'label':_0x5838b0[_0x4b2f('0x6d')],'custom':!![]};}));});}})['then'](function(_0x4ffa40){return{'count':_0x4ffa40['length'],'rows':_0x4ffa40};})[_0x4b2f('0x26')](respondWithResult(_0x1d3e7b,null))[_0x4b2f('0x46')](function(_0x5e372f){var _0x2ec62a=_0x450aeb[_0x4b2f('0x32')][_0x4b2f('0x6e')]?0x1f4:_0x5e372f[_0x4b2f('0x6f')]||0x1f4;logger[_0x4b2f('0x70')](_0x4b2f('0x71'),_0x4b2f('0x54'),_0x2ec62a,JSON[_0x4b2f('0x72')](_0x5e372f));delete _0x5e372f['name'];if(_0x2ec62a===0x191){_0x2ec62a=0x190;}_0x1d3e7b[_0x4b2f('0x1a')](_0x2ec62a)[_0x4b2f('0x2a')](_0x450aeb[_0x4b2f('0x32')]['test']?{'message':_0x4b2f('0x73'),'statusCode':_0x5e372f[_0x4b2f('0x6f')]}:_0x5e372f);});};
\ No newline at end of file
index 6decdd9..e60b165 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x915f=['util','../../config/logger','api','bluebird','request-promise','rimraf','./intDeskAccount.attributes','../../components/integrations/configuration','exports','int_desk_accounts'];(function(_0x5268d0,_0x4168da){var _0x1aa9d9=function(_0x28ff22){while(--_0x28ff22){_0x5268d0['push'](_0x5268d0['shift']());}};_0x1aa9d9(++_0x4168da);}(_0x915f,0xdc));var _0xf915=function(_0x2c89d9,_0x13320f){_0x2c89d9=_0x2c89d9-0x0;var _0x17e988=_0x915f[_0x2c89d9];return _0x17e988;};'use strict';var _=require('lodash');var util=require(_0xf915('0x0'));var logger=require(_0xf915('0x1'))(_0xf915('0x2'));var moment=require('moment');var BPromise=require(_0xf915('0x3'));var rp=require(_0xf915('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf915('0x5'));var config=require('../../config/environment');var attributes=require(_0xf915('0x6'));var integrations=require(_0xf915('0x7'));module[_0xf915('0x8')]=function(_0x134d73,_0x52855e){return _0x134d73['define']('DeskAccount',attributes,{'tableName':_0xf915('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x895d=['../../config/environment','exports','define','DeskAccount','int_desk_accounts','util','api','moment','request-promise','path','rimraf'];(function(_0x270364,_0x356ac5){var _0xd5c6eb=function(_0x4af9d5){while(--_0x4af9d5){_0x270364['push'](_0x270364['shift']());}};_0xd5c6eb(++_0x356ac5);}(_0x895d,0x14f));var _0xd895=function(_0x4cc526,_0x229c72){_0x4cc526=_0x4cc526-0x0;var _0x2a8d50=_0x895d[_0x4cc526];return _0x2a8d50;};'use strict';var _=require('lodash');var util=require(_0xd895('0x0'));var logger=require('../../config/logger')(_0xd895('0x1'));var moment=require(_0xd895('0x2'));var BPromise=require('bluebird');var rp=require(_0xd895('0x3'));var fs=require('fs');var path=require(_0xd895('0x4'));var rimraf=require(_0xd895('0x5'));var config=require(_0xd895('0x6'));var attributes=require('./intDeskAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0xd895('0x7')]=function(_0xc0f7e7,_0x39d2a1){return _0xc0f7e7[_0xd895('0x8')](_0xd895('0x9'),attributes,{'tableName':_0xd895('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b7e2082..0a0207f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb44a=['catch','GetDeskAccount','DeskAccount','findAll','options','raw','where','attributes','limit','include','map','model','ShowDeskAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','DeskAccount,\x20%s,\x20%s','message','info','result'];(function(_0x1daf0f,_0x4cb452){var _0x3b013b=function(_0x7c61a1){while(--_0x7c61a1){_0x1daf0f['push'](_0x1daf0f['shift']());}};_0x3b013b(++_0x4cb452);}(_0xb44a,0x1e2));var _0xab44=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0xb44a[_0x40ac5e];return _0x2839d6;};'use strict';var _=require(_0xab44('0x0'));var util=require(_0xab44('0x1'));var moment=require(_0xab44('0x2'));var BPromise=require(_0xab44('0x3'));var rs=require(_0xab44('0x4'));var fs=require('fs');var Redis=require(_0xab44('0x5'));var db=require(_0xab44('0x6'))['db'];var utils=require(_0xab44('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xab44('0x8'));var jayson=require(_0xab44('0x9'));var client=jayson[_0xab44('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x279051,_0x314879,_0x2f225d){return new BPromise(function(_0x335185,_0x4f0110){return client[_0xab44('0xb')](_0x279051,_0x2f225d)[_0xab44('0xc')](function(_0x26c8da){logger['info']('DeskAccount,\x20%s,\x20%s',_0x314879,_0xab44('0xd'));logger[_0xab44('0xe')](_0xab44('0xf'),_0x314879,_0xab44('0xd'),JSON[_0xab44('0x10')](_0x26c8da));if(_0x26c8da[_0xab44('0x11')]){if(_0x26c8da[_0xab44('0x11')]['code']===0x1f4){logger[_0xab44('0x11')](_0xab44('0x12'),_0x314879,_0x26c8da[_0xab44('0x11')][_0xab44('0x13')]);return _0x4f0110(_0x26c8da[_0xab44('0x11')][_0xab44('0x13')]);}logger[_0xab44('0x11')](_0xab44('0x12'),_0x314879,_0x26c8da[_0xab44('0x11')][_0xab44('0x13')]);return _0x335185(_0x26c8da[_0xab44('0x11')][_0xab44('0x13')]);}else{logger[_0xab44('0x14')](_0xab44('0x12'),_0x314879,_0xab44('0xd'));_0x335185(_0x26c8da[_0xab44('0x15')][_0xab44('0x13')]);}})[_0xab44('0x16')](function(_0x358f37){logger[_0xab44('0x11')](_0xab44('0x12'),_0x314879,_0x358f37);_0x4f0110(_0x358f37);});});}exports[_0xab44('0x17')]=function(_0x384352){var _0x57b757=this;return new Promise(function(_0x20fa08,_0x2a3b4b){return db[_0xab44('0x18')][_0xab44('0x19')]({'raw':_0x384352['options']?_0x384352[_0xab44('0x1a')][_0xab44('0x1b')]===undefined?!![]:![]:!![],'where':_0x384352[_0xab44('0x1a')]?_0x384352[_0xab44('0x1a')][_0xab44('0x1c')]||null:null,'attributes':_0x384352[_0xab44('0x1a')]?_0x384352[_0xab44('0x1a')][_0xab44('0x1d')]||null:null,'limit':_0x384352[_0xab44('0x1a')]?_0x384352[_0xab44('0x1a')][_0xab44('0x1e')]||null:null,'include':_0x384352[_0xab44('0x1a')]?_0x384352['options'][_0xab44('0x1f')]?_[_0xab44('0x20')](_0x384352['options']['include'],function(_0x423f5b){return{'model':db[_0x423f5b[_0xab44('0x21')]],'as':_0x423f5b['as'],'attributes':_0x423f5b[_0xab44('0x1d')],'include':_0x423f5b[_0xab44('0x1f')]?_[_0xab44('0x20')](_0x423f5b[_0xab44('0x1f')],function(_0x2e80f5){return{'model':db[_0x2e80f5[_0xab44('0x21')]],'as':_0x2e80f5['as'],'attributes':_0x2e80f5['attributes'],'include':_0x2e80f5['include']?_[_0xab44('0x20')](_0x2e80f5[_0xab44('0x1f')],function(_0x1fdb95){return{'model':db[_0x1fdb95[_0xab44('0x21')]],'as':_0x1fdb95['as'],'attributes':_0x1fdb95[_0xab44('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xab44('0xc')](function(_0x50eeca){logger[_0xab44('0x14')](_0xab44('0x17'),_0x384352);logger[_0xab44('0xe')](_0xab44('0x17'),_0x384352,JSON[_0xab44('0x10')](_0x50eeca));_0x20fa08(_0x50eeca);})[_0xab44('0x16')](function(_0x1380a0){logger[_0xab44('0x11')](_0xab44('0x17'),_0x1380a0[_0xab44('0x13')],_0x384352);_0x2a3b4b(_0x57b757[_0xab44('0x11')](0x1f4,_0x1380a0[_0xab44('0x13')]));});});};exports[_0xab44('0x22')]=function(_0x4a4890){var _0xd49bc4=this;return new Promise(function(_0x1229c5,_0x3e965f){return db[_0xab44('0x18')][_0xab44('0x23')]({'raw':_0x4a4890[_0xab44('0x1a')]?_0x4a4890[_0xab44('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x4a4890[_0xab44('0x1a')]?_0x4a4890[_0xab44('0x1a')][_0xab44('0x1c')]||null:null,'attributes':_0x4a4890[_0xab44('0x1a')]?_0x4a4890[_0xab44('0x1a')][_0xab44('0x1d')]||null:null,'include':_0x4a4890['options']?_0x4a4890[_0xab44('0x1a')][_0xab44('0x1f')]?_[_0xab44('0x20')](_0x4a4890[_0xab44('0x1a')]['include'],function(_0x1840b5){return{'model':db[_0x1840b5['model']],'as':_0x1840b5['as'],'attributes':_0x1840b5[_0xab44('0x1d')],'include':_0x1840b5[_0xab44('0x1f')]?_[_0xab44('0x20')](_0x1840b5[_0xab44('0x1f')],function(_0x24dac1){return{'model':db[_0x24dac1['model']],'as':_0x24dac1['as'],'attributes':_0x24dac1[_0xab44('0x1d')],'include':_0x24dac1[_0xab44('0x1f')]?_['map'](_0x24dac1[_0xab44('0x1f')],function(_0x23be12){return{'model':db[_0x23be12['model']],'as':_0x23be12['as'],'attributes':_0x23be12[_0xab44('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xab44('0xc')](function(_0x45e1f8){logger[_0xab44('0x14')](_0xab44('0x22'),_0x4a4890);logger[_0xab44('0xe')](_0xab44('0x22'),_0x4a4890,JSON[_0xab44('0x10')](_0x45e1f8));_0x1229c5(_0x45e1f8);})[_0xab44('0x16')](function(_0x43ace0){logger['error'](_0xab44('0x22'),_0x43ace0[_0xab44('0x13')],_0x4a4890);_0x3e965f(_0xd49bc4['error'](0x1f4,_0x43ace0['message']));});});};
\ No newline at end of file
+var _0x38fc=['rpc','../../config/environment','jayson/promise','http','DeskAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','GetDeskAccount','options','where','limit','include','map','model','attributes','then','debug','catch','ShowDeskAccount','DeskAccount','find','raw','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x225823,_0x316937){var _0x39e98f=function(_0x7e632a){while(--_0x7e632a){_0x225823['push'](_0x225823['shift']());}};_0x39e98f(++_0x316937);}(_0x38fc,0x1c7));var _0xc38f=function(_0x53e147,_0x44e047){_0x53e147=_0x53e147-0x0;var _0x518334=_0x38fc[_0x53e147];return _0x518334;};'use strict';var _=require(_0xc38f('0x0'));var util=require('util');var moment=require(_0xc38f('0x1'));var BPromise=require('bluebird');var rs=require(_0xc38f('0x2'));var fs=require('fs');var Redis=require(_0xc38f('0x3'));var db=require(_0xc38f('0x4'))['db'];var utils=require(_0xc38f('0x5'));var logger=require(_0xc38f('0x6'))(_0xc38f('0x7'));var config=require(_0xc38f('0x8'));var jayson=require(_0xc38f('0x9'));var client=jayson['client'][_0xc38f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1dd52f,_0x4912f1,_0x108648){return new BPromise(function(_0x1ef7dd,_0xb24e9){return client['request'](_0x1dd52f,_0x108648)['then'](function(_0x5f51ef){logger['info'](_0xc38f('0xb'),_0x4912f1,_0xc38f('0xc'));logger['debug']('DeskAccount,\x20%s,\x20%s,\x20%s',_0x4912f1,_0xc38f('0xc'),JSON[_0xc38f('0xd')](_0x5f51ef));if(_0x5f51ef[_0xc38f('0xe')]){if(_0x5f51ef['error'][_0xc38f('0xf')]===0x1f4){logger[_0xc38f('0xe')]('DeskAccount,\x20%s,\x20%s',_0x4912f1,_0x5f51ef['error']['message']);return _0xb24e9(_0x5f51ef['error']['message']);}logger['error'](_0xc38f('0xb'),_0x4912f1,_0x5f51ef[_0xc38f('0xe')][_0xc38f('0x10')]);return _0x1ef7dd(_0x5f51ef[_0xc38f('0xe')]['message']);}else{logger[_0xc38f('0x11')](_0xc38f('0xb'),_0x4912f1,_0xc38f('0xc'));_0x1ef7dd(_0x5f51ef['result']['message']);}})['catch'](function(_0xd0df92){logger[_0xc38f('0xe')](_0xc38f('0xb'),_0x4912f1,_0xd0df92);_0xb24e9(_0xd0df92);});});}exports[_0xc38f('0x12')]=function(_0x90e3c){var _0x3c38ca=this;return new Promise(function(_0xb3643,_0x1a4202){return db['DeskAccount']['findAll']({'raw':_0x90e3c[_0xc38f('0x13')]?_0x90e3c[_0xc38f('0x13')]['raw']===undefined?!![]:![]:!![],'where':_0x90e3c['options']?_0x90e3c['options'][_0xc38f('0x14')]||null:null,'attributes':_0x90e3c[_0xc38f('0x13')]?_0x90e3c['options']['attributes']||null:null,'limit':_0x90e3c[_0xc38f('0x13')]?_0x90e3c['options'][_0xc38f('0x15')]||null:null,'include':_0x90e3c['options']?_0x90e3c[_0xc38f('0x13')][_0xc38f('0x16')]?_[_0xc38f('0x17')](_0x90e3c[_0xc38f('0x13')][_0xc38f('0x16')],function(_0x41cbe2){return{'model':db[_0x41cbe2[_0xc38f('0x18')]],'as':_0x41cbe2['as'],'attributes':_0x41cbe2[_0xc38f('0x19')],'include':_0x41cbe2[_0xc38f('0x16')]?_['map'](_0x41cbe2[_0xc38f('0x16')],function(_0x47dc48){return{'model':db[_0x47dc48[_0xc38f('0x18')]],'as':_0x47dc48['as'],'attributes':_0x47dc48[_0xc38f('0x19')],'include':_0x47dc48[_0xc38f('0x16')]?_[_0xc38f('0x17')](_0x47dc48[_0xc38f('0x16')],function(_0x4c5d50){return{'model':db[_0x4c5d50[_0xc38f('0x18')]],'as':_0x4c5d50['as'],'attributes':_0x4c5d50[_0xc38f('0x19')]};}):[]};}):[]};}):[]:[]})[_0xc38f('0x1a')](function(_0x1f78d7){logger['info'](_0xc38f('0x12'),_0x90e3c);logger[_0xc38f('0x1b')]('GetDeskAccount',_0x90e3c,JSON[_0xc38f('0xd')](_0x1f78d7));_0xb3643(_0x1f78d7);})[_0xc38f('0x1c')](function(_0x1e70c1){logger['error']('GetDeskAccount',_0x1e70c1[_0xc38f('0x10')],_0x90e3c);_0x1a4202(_0x3c38ca[_0xc38f('0xe')](0x1f4,_0x1e70c1['message']));});});};exports[_0xc38f('0x1d')]=function(_0x3db760){var _0x151cf6=this;return new Promise(function(_0x2f9bf3,_0x387099){return db[_0xc38f('0x1e')][_0xc38f('0x1f')]({'raw':_0x3db760[_0xc38f('0x13')]?_0x3db760['options'][_0xc38f('0x20')]===undefined?!![]:![]:!![],'where':_0x3db760['options']?_0x3db760[_0xc38f('0x13')][_0xc38f('0x14')]||null:null,'attributes':_0x3db760[_0xc38f('0x13')]?_0x3db760['options'][_0xc38f('0x19')]||null:null,'include':_0x3db760[_0xc38f('0x13')]?_0x3db760['options'][_0xc38f('0x16')]?_[_0xc38f('0x17')](_0x3db760[_0xc38f('0x13')]['include'],function(_0x352c03){return{'model':db[_0x352c03[_0xc38f('0x18')]],'as':_0x352c03['as'],'attributes':_0x352c03['attributes'],'include':_0x352c03[_0xc38f('0x16')]?_['map'](_0x352c03[_0xc38f('0x16')],function(_0x3d4289){return{'model':db[_0x3d4289[_0xc38f('0x18')]],'as':_0x3d4289['as'],'attributes':_0x3d4289[_0xc38f('0x19')],'include':_0x3d4289[_0xc38f('0x16')]?_['map'](_0x3d4289[_0xc38f('0x16')],function(_0x2a1c42){return{'model':db[_0x2a1c42['model']],'as':_0x2a1c42['as'],'attributes':_0x2a1c42[_0xc38f('0x19')]};}):[]};}):[]};}):[]:[]})[_0xc38f('0x1a')](function(_0x23b73f){logger['info']('ShowDeskAccount',_0x3db760);logger[_0xc38f('0x1b')]('ShowDeskAccount',_0x3db760,JSON[_0xc38f('0xd')](_0x23b73f));_0x2f9bf3(_0x23b73f);})[_0xc38f('0x1c')](function(_0x20bd41){logger[_0xc38f('0xe')](_0xc38f('0x1d'),_0x20bd41[_0xc38f('0x10')],_0x3db760);_0x387099(_0x151cf6[_0xc38f('0xe')](0x1f4,_0x20bd41[_0xc38f('0x10')]));});});};
\ No newline at end of file
index 6a894bd..384f970 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['/:id/subjects','getSubjects','getDescriptions','/:id/tags','getTags','post','create','setTags','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields'];(function(_0x193454,_0x3ada46){var _0x444eb5=function(_0x26a701){while(--_0x26a701){_0x193454['push'](_0x193454['shift']());}};_0x444eb5(++_0x3ada46);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'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/fields',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/descriptions',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/tags',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x17')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x18')]);router[_0x7995('0x19')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller['destroy']);module[_0x7995('0x1a')]=router;
\ No newline at end of file
+var _0x3e74=['show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','getTags','post','/:id/tags','setTags','update','delete','exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id'];(function(_0x391476,_0xa2bc64){var _0x44ace8=function(_0x19d871){while(--_0x19d871){_0x391476['push'](_0x391476['shift']());}};_0x44ace8(++_0xa2bc64);}(_0x3e74,0x175));var _0x43e7=function(_0x10bd83,_0x184674){_0x10bd83=_0x10bd83-0x0;var _0x533344=_0x3e74[_0x10bd83];return _0x533344;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),auth[_0x43e7('0x8')](),controller[_0x43e7('0xb')]);router[_0x43e7('0x7')](_0x43e7('0xc'),auth['isAuthenticated'](),controller[_0x43e7('0xd')]);router['get']('/:id/subjects',auth[_0x43e7('0x8')](),controller[_0x43e7('0xe')]);router['get'](_0x43e7('0xf'),auth['isAuthenticated'](),controller[_0x43e7('0x10')]);router[_0x43e7('0x7')]('/:id/tags',auth[_0x43e7('0x8')](),controller[_0x43e7('0x11')]);router[_0x43e7('0x12')]('/',auth[_0x43e7('0x8')](),controller['create']);router['post'](_0x43e7('0x13'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x14')]);router['put']('/:id',auth[_0x43e7('0x8')](),controller[_0x43e7('0x15')]);router[_0x43e7('0x16')](_0x43e7('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x43e7('0x17')]=router;
\ No newline at end of file
index 7b80f84..ed3c4ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f19=['sequelize','exports','STRING'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x8f19,0x1ce));var _0x98f1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8f19[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x98f1('0x0'));module[_0x98f1('0x1')]={'name':{'type':Sequelize[_0x98f1('0x2')]},'description':{'type':Sequelize[_0x98f1('0x2')]}};
\ No newline at end of file
+var _0x29bb=['exports','STRING','sequelize'];(function(_0x154983,_0xc29edf){var _0x3d1243=function(_0x5cb7a4){while(--_0x5cb7a4){_0x154983['push'](_0x154983['shift']());}};_0x3d1243(++_0xc29edf);}(_0x29bb,0x122));var _0xb29b=function(_0x368e16,_0x32de35){_0x368e16=_0x368e16-0x0;var _0x4dc724=_0x29bb[_0x368e16];return _0x4dc724;};'use strict';var Sequelize=require(_0xb29b('0x0'));module[_0xb29b('0x1')]={'name':{'type':Sequelize[_0xb29b('0x2')]},'description':{'type':Sequelize[_0xb29b('0x2')]}};
\ No newline at end of file
index d6b275a..913eb6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5f9=['catch','show','params','keys','rawAttributes','include','create','body','find','getFields','DeskField','order','getSubjects','getDescriptions','getTags','Tag','setTags','findOne','eml-format','zip-dir','fast-json-patch','mustache','util','sox','to-csv','fs-extra','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','set','json','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','DeskConfiguration','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','findAll'];(function(_0x596f85,_0x587203){var _0x276aa1=function(_0x20fdf8){while(--_0x20fdf8){_0x596f85['push'](_0x596f85['shift']());}};_0x276aa1(++_0x587203);}(_0xa5f9,0x102));var _0x9a5f=function(_0x142b75,_0x1d632f){_0x142b75=_0x142b75-0x0;var _0x4d8bb2=_0xa5f9[_0x142b75];return _0x4d8bb2;};'use strict';var emlformat=require(_0x9a5f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9a5f('0x1'));var jsonpatch=require(_0x9a5f('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x9a5f('0x3'));var util=require(_0x9a5f('0x4'));var path=require('path');var sox=require(_0x9a5f('0x5'));var csv=require(_0x9a5f('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9a5f('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x9a5f('0x8'));var jsforce=require(_0x9a5f('0x9'));var deskjs=require(_0x9a5f('0xa'));var toCsv=require(_0x9a5f('0x6'));var querystring=require('querystring');var Papa=require(_0x9a5f('0xb'));var Redis=require('ioredis');var authService=require(_0x9a5f('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0x9a5f('0xd'));var hardwareService=require(_0x9a5f('0xe'));var logger=require(_0x9a5f('0xf'))(_0x9a5f('0x10'));var utils=require(_0x9a5f('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x9a5f('0x12'));var db=require(_0x9a5f('0x13'))['db'];function respondWithStatusCode(_0x4a2e0,_0xdbf679){_0xdbf679=_0xdbf679||0xcc;return function(_0x24f2c9){if(_0x24f2c9){return _0x4a2e0['sendStatus'](_0xdbf679);}return _0x4a2e0[_0x9a5f('0x14')](_0xdbf679)['end']();};}function respondWithResult(_0x23bd10,_0x401edf){_0x401edf=_0x401edf||0xc8;return function(_0x3347bd){if(_0x3347bd){return _0x23bd10[_0x9a5f('0x14')](_0x401edf)['json'](_0x3347bd);}};}function respondWithFilteredResult(_0x1a37d1,_0xe0ac4a){return function(_0x213143){if(_0x213143){var _0x249e5f=typeof _0xe0ac4a[_0x9a5f('0x15')]===_0x9a5f('0x16')&&typeof _0xe0ac4a[_0x9a5f('0x17')]===_0x9a5f('0x16');var _0x26b280=_0x213143[_0x9a5f('0x18')];var _0x244c86=_0x249e5f?0x0:_0xe0ac4a[_0x9a5f('0x15')];var _0x18e561=_0x249e5f?_0x213143['count']:_0xe0ac4a[_0x9a5f('0x15')]+_0xe0ac4a['limit'];var _0x49bfc1;if(_0x18e561>=_0x26b280){_0x18e561=_0x26b280;_0x49bfc1=0xc8;}else{_0x49bfc1=0xce;}_0x1a37d1[_0x9a5f('0x14')](_0x49bfc1);return _0x1a37d1[_0x9a5f('0x19')]('Content-Range',_0x244c86+'-'+_0x18e561+'/'+_0x26b280)[_0x9a5f('0x1a')](_0x213143);}return null;};}function patchUpdates(_0x26e090){return function(_0x1a6087){try{jsonpatch[_0x9a5f('0x1b')](_0x1a6087,_0x26e090,!![]);}catch(_0x15e0d8){return BPromise[_0x9a5f('0x1c')](_0x15e0d8);}return _0x1a6087[_0x9a5f('0x1d')]();};}function saveUpdates(_0x5d7de5,_0x1521e3){return function(_0x3d4119){if(_0x3d4119){return _0x3d4119[_0x9a5f('0x1e')](_0x5d7de5)[_0x9a5f('0x1f')](function(_0x519319){return _0x519319;});}return null;};}function removeEntity(_0x4ec8d7,_0x264185){return function(_0x4e6482){if(_0x4e6482){return _0x4e6482[_0x9a5f('0x20')]()[_0x9a5f('0x1f')](function(){_0x4ec8d7['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x558235,_0x5202a1){return function(_0x12076b){if(!_0x12076b){_0x558235[_0x9a5f('0x21')](0x194);}return _0x12076b;};}function handleError(_0x544636,_0x206584){_0x206584=_0x206584||0x1f4;return function(_0xa0e3ff){logger[_0x9a5f('0x22')](_0xa0e3ff[_0x9a5f('0x23')]);if(_0xa0e3ff[_0x9a5f('0x24')]){delete _0xa0e3ff['name'];}_0x544636['status'](_0x206584)[_0x9a5f('0x25')](_0xa0e3ff);};}exports[_0x9a5f('0x26')]=function(_0x1e0268,_0x40143f){var _0x2d4ce9={},_0x167eec={},_0x2023cc={'count':0x0,'rows':[]};var _0xfb8dc2=_[_0x9a5f('0x27')](db[_0x9a5f('0x28')]['rawAttributes'],function(_0x44b72c){return{'name':_0x44b72c[_0x9a5f('0x29')],'type':_0x44b72c[_0x9a5f('0x2a')][_0x9a5f('0x2b')]};});_0x167eec[_0x9a5f('0x2c')]=_['map'](_0xfb8dc2,_0x9a5f('0x24'));_0x167eec[_0x9a5f('0x2d')]=_['keys'](_0x1e0268['query']);_0x167eec[_0x9a5f('0x2e')]=_[_0x9a5f('0x2f')](_0x167eec[_0x9a5f('0x2c')],_0x167eec[_0x9a5f('0x2d')]);_0x2d4ce9[_0x9a5f('0x30')]=_['intersection'](_0x167eec[_0x9a5f('0x2c')],qs[_0x9a5f('0x31')](_0x1e0268[_0x9a5f('0x2d')][_0x9a5f('0x31')]));_0x2d4ce9[_0x9a5f('0x30')]=_0x2d4ce9[_0x9a5f('0x30')][_0x9a5f('0x32')]?_0x2d4ce9[_0x9a5f('0x30')]:_0x167eec['model'];if(!_0x1e0268[_0x9a5f('0x2d')][_0x9a5f('0x33')](_0x9a5f('0x34'))){_0x2d4ce9[_0x9a5f('0x17')]=qs[_0x9a5f('0x17')](_0x1e0268[_0x9a5f('0x2d')][_0x9a5f('0x17')]);_0x2d4ce9[_0x9a5f('0x15')]=qs[_0x9a5f('0x15')](_0x1e0268[_0x9a5f('0x2d')][_0x9a5f('0x15')]);}_0x2d4ce9['order']=qs['sort'](_0x1e0268[_0x9a5f('0x2d')][_0x9a5f('0x35')]);_0x2d4ce9['where']=qs[_0x9a5f('0x2e')](_[_0x9a5f('0x36')](_0x1e0268['query'],_0x167eec['filters']),_0xfb8dc2);if(_0x1e0268['query'][_0x9a5f('0x37')]){_0x2d4ce9[_0x9a5f('0x38')]=_['merge'](_0x2d4ce9[_0x9a5f('0x38')],{'$or':_['map'](_0xfb8dc2,function(_0x49acd5){if(_0x49acd5[_0x9a5f('0x2a')]!==_0x9a5f('0x39')){var _0x4316e1={};_0x4316e1[_0x49acd5[_0x9a5f('0x24')]]={'$like':'%'+_0x1e0268[_0x9a5f('0x2d')]['filter']+'%'};return _0x4316e1;}})});}_0x2d4ce9=_[_0x9a5f('0x3a')]({},_0x2d4ce9,_0x1e0268[_0x9a5f('0x3b')]);var _0x570702={'where':_0x2d4ce9[_0x9a5f('0x38')]};return db[_0x9a5f('0x28')][_0x9a5f('0x18')](_0x570702)[_0x9a5f('0x1f')](function(_0x3da33c){_0x2023cc[_0x9a5f('0x18')]=_0x3da33c;if(_0x1e0268[_0x9a5f('0x2d')][_0x9a5f('0x3c')]){_0x2d4ce9['include']=[{'all':!![]}];}return db[_0x9a5f('0x28')][_0x9a5f('0x3d')](_0x2d4ce9);})[_0x9a5f('0x1f')](function(_0x130436){_0x2023cc['rows']=_0x130436;return _0x2023cc;})[_0x9a5f('0x1f')](respondWithFilteredResult(_0x40143f,_0x2d4ce9))[_0x9a5f('0x3e')](handleError(_0x40143f,null));};exports[_0x9a5f('0x3f')]=function(_0x192a28,_0x4e6537){var _0x256eef={'raw':![],'where':{'id':_0x192a28[_0x9a5f('0x40')]['id']}},_0x445044={};_0x445044[_0x9a5f('0x2c')]=_[_0x9a5f('0x41')](db['DeskConfiguration'][_0x9a5f('0x42')]);_0x445044[_0x9a5f('0x2d')]=_['keys'](_0x192a28['query']);_0x445044[_0x9a5f('0x2e')]=_[_0x9a5f('0x2f')](_0x445044['model'],_0x445044[_0x9a5f('0x2d')]);_0x256eef['attributes']=_[_0x9a5f('0x2f')](_0x445044[_0x9a5f('0x2c')],qs[_0x9a5f('0x31')](_0x192a28[_0x9a5f('0x2d')]['fields']));_0x256eef[_0x9a5f('0x30')]=_0x256eef[_0x9a5f('0x30')][_0x9a5f('0x32')]?_0x256eef['attributes']:_0x445044[_0x9a5f('0x2c')];if(_0x192a28[_0x9a5f('0x2d')][_0x9a5f('0x3c')]){_0x256eef[_0x9a5f('0x43')]=[{'all':!![]}];}_0x256eef=_[_0x9a5f('0x3a')]({},_0x256eef,_0x192a28[_0x9a5f('0x3b')]);return db['DeskConfiguration']['find'](_0x256eef)[_0x9a5f('0x1f')](handleEntityNotFound(_0x4e6537,null))[_0x9a5f('0x1f')](respondWithResult(_0x4e6537,null))['catch'](handleError(_0x4e6537,null));};exports['create']=function(_0x849718,_0x4dd2fe){return db[_0x9a5f('0x28')][_0x9a5f('0x44')](_0x849718['body'],{})['then'](respondWithResult(_0x4dd2fe,0xc9))['catch'](handleError(_0x4dd2fe,null));};exports[_0x9a5f('0x1e')]=function(_0x315ebf,_0x4936f5){if(_0x315ebf[_0x9a5f('0x45')]['id']){delete _0x315ebf[_0x9a5f('0x45')]['id'];}return db['DeskConfiguration'][_0x9a5f('0x46')]({'where':{'id':_0x315ebf[_0x9a5f('0x40')]['id']}})[_0x9a5f('0x1f')](handleEntityNotFound(_0x4936f5,null))[_0x9a5f('0x1f')](saveUpdates(_0x315ebf['body'],null))[_0x9a5f('0x1f')](respondWithResult(_0x4936f5,null))['catch'](handleError(_0x4936f5,null));};exports[_0x9a5f('0x20')]=function(_0x10ea1d,_0x1865ca){return db[_0x9a5f('0x28')]['find']({'where':{'id':_0x10ea1d[_0x9a5f('0x40')]['id']}})[_0x9a5f('0x1f')](handleEntityNotFound(_0x1865ca,null))[_0x9a5f('0x1f')](removeEntity(_0x1865ca,null))[_0x9a5f('0x3e')](handleError(_0x1865ca,null));};exports[_0x9a5f('0x47')]=function(_0x60ab6e,_0x265b52,_0x5ad9e9){var _0x750c98={};var _0x39176a={};var _0x44f600;var _0x593721;return db[_0x9a5f('0x28')]['findOne']({'where':{'id':_0x60ab6e[_0x9a5f('0x40')]['id']}})[_0x9a5f('0x1f')](handleEntityNotFound(_0x265b52,null))[_0x9a5f('0x1f')](function(_0x56047f){if(_0x56047f){_0x44f600=_0x56047f;_0x39176a['model']=_[_0x9a5f('0x41')](db[_0x9a5f('0x48')]['rawAttributes']);_0x39176a[_0x9a5f('0x2d')]=_[_0x9a5f('0x41')](_0x60ab6e[_0x9a5f('0x2d')]);_0x39176a['filters']=_[_0x9a5f('0x2f')](_0x39176a['model'],_0x39176a['query']);_0x750c98[_0x9a5f('0x30')]=_[_0x9a5f('0x2f')](_0x39176a['model'],qs[_0x9a5f('0x31')](_0x60ab6e[_0x9a5f('0x2d')]['fields']));_0x750c98[_0x9a5f('0x30')]=_0x750c98['attributes'][_0x9a5f('0x32')]?_0x750c98[_0x9a5f('0x30')]:_0x39176a['model'];_0x750c98['order']=qs[_0x9a5f('0x35')](_0x60ab6e[_0x9a5f('0x2d')][_0x9a5f('0x35')]);_0x750c98[_0x9a5f('0x38')]=qs[_0x9a5f('0x2e')](_[_0x9a5f('0x36')](_0x60ab6e['query'],_0x39176a[_0x9a5f('0x2e')]));if(_0x60ab6e[_0x9a5f('0x2d')][_0x9a5f('0x37')]){_0x750c98[_0x9a5f('0x38')]=_[_0x9a5f('0x3a')](_0x750c98[_0x9a5f('0x38')],{'$or':_[_0x9a5f('0x27')](_0x750c98[_0x9a5f('0x30')],function(_0x108745){var _0x146841={};_0x146841[_0x108745]={'$like':'%'+_0x60ab6e[_0x9a5f('0x2d')][_0x9a5f('0x37')]+'%'};return _0x146841;})});}_0x750c98=_[_0x9a5f('0x3a')]({},_0x750c98,_0x60ab6e[_0x9a5f('0x3b')]);return _0x44f600[_0x9a5f('0x47')](_0x750c98);}})[_0x9a5f('0x1f')](function(_0x1e79fb){if(_0x1e79fb){_0x593721=_0x1e79fb[_0x9a5f('0x32')];if(!_0x60ab6e[_0x9a5f('0x2d')][_0x9a5f('0x33')](_0x9a5f('0x34'))){_0x750c98[_0x9a5f('0x17')]=qs[_0x9a5f('0x17')](_0x60ab6e[_0x9a5f('0x2d')][_0x9a5f('0x17')]);_0x750c98[_0x9a5f('0x15')]=qs['offset'](_0x60ab6e['query'][_0x9a5f('0x15')]);}return _0x44f600[_0x9a5f('0x47')](_0x750c98);}})[_0x9a5f('0x1f')](function(_0x5cb424){if(_0x5cb424){return _0x5cb424?{'count':_0x593721,'rows':_0x5cb424}:null;}})[_0x9a5f('0x1f')](respondWithResult(_0x265b52,null))['catch'](handleError(_0x265b52,null));};exports['getSubjects']=function(_0x345914,_0x340530,_0x19020e){var _0x4b9812={};var _0x26c316={};var _0x7e5e1;var _0x362c7f;return db['DeskConfiguration']['findOne']({'where':{'id':_0x345914[_0x9a5f('0x40')]['id']}})[_0x9a5f('0x1f')](handleEntityNotFound(_0x340530,null))['then'](function(_0x423c12){if(_0x423c12){_0x7e5e1=_0x423c12;_0x26c316[_0x9a5f('0x2c')]=_[_0x9a5f('0x41')](db['DeskField'][_0x9a5f('0x42')]);_0x26c316[_0x9a5f('0x2d')]=_[_0x9a5f('0x41')](_0x345914['query']);_0x26c316[_0x9a5f('0x2e')]=_[_0x9a5f('0x2f')](_0x26c316[_0x9a5f('0x2c')],_0x26c316[_0x9a5f('0x2d')]);_0x4b9812[_0x9a5f('0x30')]=_[_0x9a5f('0x2f')](_0x26c316[_0x9a5f('0x2c')],qs[_0x9a5f('0x31')](_0x345914[_0x9a5f('0x2d')][_0x9a5f('0x31')]));_0x4b9812[_0x9a5f('0x30')]=_0x4b9812[_0x9a5f('0x30')]['length']?_0x4b9812[_0x9a5f('0x30')]:_0x26c316[_0x9a5f('0x2c')];_0x4b9812[_0x9a5f('0x49')]=qs[_0x9a5f('0x35')](_0x345914[_0x9a5f('0x2d')]['sort']);_0x4b9812[_0x9a5f('0x38')]=qs[_0x9a5f('0x2e')](_[_0x9a5f('0x36')](_0x345914[_0x9a5f('0x2d')],_0x26c316[_0x9a5f('0x2e')]));if(_0x345914['query'][_0x9a5f('0x37')]){_0x4b9812[_0x9a5f('0x38')]=_[_0x9a5f('0x3a')](_0x4b9812[_0x9a5f('0x38')],{'$or':_[_0x9a5f('0x27')](_0x4b9812[_0x9a5f('0x30')],function(_0x55ce25){var _0x2451ae={};_0x2451ae[_0x55ce25]={'$like':'%'+_0x345914[_0x9a5f('0x2d')]['filter']+'%'};return _0x2451ae;})});}_0x4b9812=_['merge']({},_0x4b9812,_0x345914[_0x9a5f('0x3b')]);return _0x7e5e1[_0x9a5f('0x4a')](_0x4b9812);}})['then'](function(_0x303c7b){if(_0x303c7b){_0x362c7f=_0x303c7b[_0x9a5f('0x32')];if(!_0x345914[_0x9a5f('0x2d')][_0x9a5f('0x33')]('nolimit')){_0x4b9812[_0x9a5f('0x17')]=qs[_0x9a5f('0x17')](_0x345914['query'][_0x9a5f('0x17')]);_0x4b9812[_0x9a5f('0x15')]=qs[_0x9a5f('0x15')](_0x345914['query']['offset']);}return _0x7e5e1['getSubjects'](_0x4b9812);}})[_0x9a5f('0x1f')](function(_0x31807d){if(_0x31807d){return _0x31807d?{'count':_0x362c7f,'rows':_0x31807d}:null;}})[_0x9a5f('0x1f')](respondWithResult(_0x340530,null))[_0x9a5f('0x3e')](handleError(_0x340530,null));};exports[_0x9a5f('0x4b')]=function(_0x3785ef,_0x389ad6,_0x580ff4){var _0x55fbed={};var _0x5e176f={};var _0x271fff;var _0x262373;return db['DeskConfiguration']['findOne']({'where':{'id':_0x3785ef['params']['id']}})['then'](handleEntityNotFound(_0x389ad6,null))[_0x9a5f('0x1f')](function(_0x4d99cf){if(_0x4d99cf){_0x271fff=_0x4d99cf;_0x5e176f[_0x9a5f('0x2c')]=_[_0x9a5f('0x41')](db['DeskField']['rawAttributes']);_0x5e176f['query']=_[_0x9a5f('0x41')](_0x3785ef[_0x9a5f('0x2d')]);_0x5e176f[_0x9a5f('0x2e')]=_[_0x9a5f('0x2f')](_0x5e176f[_0x9a5f('0x2c')],_0x5e176f[_0x9a5f('0x2d')]);_0x55fbed[_0x9a5f('0x30')]=_[_0x9a5f('0x2f')](_0x5e176f['model'],qs[_0x9a5f('0x31')](_0x3785ef[_0x9a5f('0x2d')][_0x9a5f('0x31')]));_0x55fbed[_0x9a5f('0x30')]=_0x55fbed[_0x9a5f('0x30')][_0x9a5f('0x32')]?_0x55fbed[_0x9a5f('0x30')]:_0x5e176f[_0x9a5f('0x2c')];_0x55fbed[_0x9a5f('0x49')]=qs['sort'](_0x3785ef['query']['sort']);_0x55fbed[_0x9a5f('0x38')]=qs[_0x9a5f('0x2e')](_['pick'](_0x3785ef['query'],_0x5e176f[_0x9a5f('0x2e')]));if(_0x3785ef['query'][_0x9a5f('0x37')]){_0x55fbed[_0x9a5f('0x38')]=_['merge'](_0x55fbed[_0x9a5f('0x38')],{'$or':_[_0x9a5f('0x27')](_0x55fbed['attributes'],function(_0x229646){var _0x5312f5={};_0x5312f5[_0x229646]={'$like':'%'+_0x3785ef[_0x9a5f('0x2d')][_0x9a5f('0x37')]+'%'};return _0x5312f5;})});}_0x55fbed=_[_0x9a5f('0x3a')]({},_0x55fbed,_0x3785ef[_0x9a5f('0x3b')]);return _0x271fff[_0x9a5f('0x4b')](_0x55fbed);}})[_0x9a5f('0x1f')](function(_0x7ecad5){if(_0x7ecad5){_0x262373=_0x7ecad5[_0x9a5f('0x32')];if(!_0x3785ef[_0x9a5f('0x2d')]['hasOwnProperty'](_0x9a5f('0x34'))){_0x55fbed[_0x9a5f('0x17')]=qs[_0x9a5f('0x17')](_0x3785ef[_0x9a5f('0x2d')]['limit']);_0x55fbed['offset']=qs[_0x9a5f('0x15')](_0x3785ef[_0x9a5f('0x2d')][_0x9a5f('0x15')]);}return _0x271fff[_0x9a5f('0x4b')](_0x55fbed);}})[_0x9a5f('0x1f')](function(_0x196644){if(_0x196644){return _0x196644?{'count':_0x262373,'rows':_0x196644}:null;}})[_0x9a5f('0x1f')](respondWithResult(_0x389ad6,null))[_0x9a5f('0x3e')](handleError(_0x389ad6,null));};exports[_0x9a5f('0x4c')]=function(_0x407f03,_0x4036aa,_0x5bdc23){var _0x1195e2={};var _0x3df66a={};var _0x32c851;var _0x140124;return db[_0x9a5f('0x28')]['findOne']({'where':{'id':_0x407f03[_0x9a5f('0x40')]['id']}})[_0x9a5f('0x1f')](handleEntityNotFound(_0x4036aa,null))[_0x9a5f('0x1f')](function(_0x23d2f0){if(_0x23d2f0){_0x32c851=_0x23d2f0;_0x3df66a['model']=_[_0x9a5f('0x41')](db[_0x9a5f('0x4d')][_0x9a5f('0x42')]);_0x3df66a['query']=_[_0x9a5f('0x41')](_0x407f03[_0x9a5f('0x2d')]);_0x3df66a[_0x9a5f('0x2e')]=_[_0x9a5f('0x2f')](_0x3df66a[_0x9a5f('0x2c')],_0x3df66a[_0x9a5f('0x2d')]);_0x1195e2[_0x9a5f('0x30')]=_[_0x9a5f('0x2f')](_0x3df66a[_0x9a5f('0x2c')],qs['fields'](_0x407f03[_0x9a5f('0x2d')][_0x9a5f('0x31')]));_0x1195e2[_0x9a5f('0x30')]=_0x1195e2['attributes'][_0x9a5f('0x32')]?_0x1195e2[_0x9a5f('0x30')]:_0x3df66a['model'];_0x1195e2[_0x9a5f('0x49')]=qs['sort'](_0x407f03[_0x9a5f('0x2d')][_0x9a5f('0x35')]);_0x1195e2['where']=qs[_0x9a5f('0x2e')](_[_0x9a5f('0x36')](_0x407f03[_0x9a5f('0x2d')],_0x3df66a['filters']));if(_0x407f03[_0x9a5f('0x2d')][_0x9a5f('0x37')]){_0x1195e2[_0x9a5f('0x38')]=_[_0x9a5f('0x3a')](_0x1195e2[_0x9a5f('0x38')],{'$or':_[_0x9a5f('0x27')](_0x1195e2[_0x9a5f('0x30')],function(_0x5f197e){var _0x4b56ac={};_0x4b56ac[_0x5f197e]={'$like':'%'+_0x407f03['query'][_0x9a5f('0x37')]+'%'};return _0x4b56ac;})});}_0x1195e2=_['merge']({},_0x1195e2,_0x407f03[_0x9a5f('0x3b')]);return _0x32c851[_0x9a5f('0x4c')](_0x1195e2);}})[_0x9a5f('0x1f')](function(_0x3f6d7b){if(_0x3f6d7b){_0x140124=_0x3f6d7b[_0x9a5f('0x32')];if(!_0x407f03[_0x9a5f('0x2d')]['hasOwnProperty']('nolimit')){_0x1195e2[_0x9a5f('0x17')]=qs[_0x9a5f('0x17')](_0x407f03[_0x9a5f('0x2d')][_0x9a5f('0x17')]);_0x1195e2[_0x9a5f('0x15')]=qs['offset'](_0x407f03[_0x9a5f('0x2d')][_0x9a5f('0x15')]);}return _0x32c851[_0x9a5f('0x4c')](_0x1195e2);}})[_0x9a5f('0x1f')](function(_0x4e6c43){if(_0x4e6c43){return _0x4e6c43?{'count':_0x140124,'rows':_0x4e6c43}:null;}})['then'](respondWithResult(_0x4036aa,null))[_0x9a5f('0x3e')](handleError(_0x4036aa,null));};exports[_0x9a5f('0x4e')]=function(_0x59e61d,_0x101c53,_0x5198f7){if(_0x59e61d[_0x9a5f('0x45')]['id']){delete _0x59e61d[_0x9a5f('0x45')]['id'];}return db['DeskConfiguration'][_0x9a5f('0x4f')]({'where':{'id':_0x59e61d[_0x9a5f('0x40')]['id']}})[_0x9a5f('0x1f')](handleEntityNotFound(_0x101c53,null))[_0x9a5f('0x1f')](function(_0x153687){if(_0x153687){return _0x153687[_0x9a5f('0x4e')](_0x59e61d[_0x9a5f('0x45')]['ids']||[]);}return null;})[_0x9a5f('0x1f')](respondWithResult(_0x101c53,null))[_0x9a5f('0x3e')](handleError(_0x101c53,null));};
\ No newline at end of file
+var _0x3370=['attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','body','destroy','getFields','DeskField','hasOwnProperty','findOne','getSubjects','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','json','undefined','count','offset','limit','status','set','Content-Range','save','then','end','error','name','send','DeskConfiguration','fieldName','type','key','model','map','query','keys','filters','intersection'];(function(_0x4b679d,_0x4e647c){var _0x2af4cc=function(_0x4b6051){while(--_0x4b6051){_0x4b679d['push'](_0x4b679d['shift']());}};_0x2af4cc(++_0x4e647c);}(_0x3370,0xc1));var _0x0337=function(_0xfc91a8,_0x8c743d){_0xfc91a8=_0xfc91a8-0x0;var _0x331c48=_0x3370[_0xfc91a8];return _0x331c48;};'use strict';var emlformat=require(_0x0337('0x0'));var rimraf=require(_0x0337('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0337('0x2'));var rp=require(_0x0337('0x3'));var moment=require(_0x0337('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0337('0x5'));var util=require(_0x0337('0x6'));var path=require(_0x0337('0x7'));var sox=require(_0x0337('0x8'));var csv=require(_0x0337('0x9'));var ejs=require(_0x0337('0xa'));var fs=require('fs');var fs_extra=require(_0x0337('0xb'));var _=require(_0x0337('0xc'));var squel=require(_0x0337('0xd'));var crypto=require(_0x0337('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x0337('0xf'));var toCsv=require(_0x0337('0x9'));var querystring=require('querystring');var Papa=require(_0x0337('0x10'));var Redis=require('ioredis');var authService=require(_0x0337('0x11'));var qs=require(_0x0337('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0337('0x13'));var logger=require(_0x0337('0x14'))(_0x0337('0x15'));var utils=require(_0x0337('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0337('0x17'));var db=require(_0x0337('0x18'))['db'];function respondWithStatusCode(_0x4923c5,_0x1458c9){_0x1458c9=_0x1458c9||0xcc;return function(_0x2c92a3){if(_0x2c92a3){return _0x4923c5[_0x0337('0x19')](_0x1458c9);}return _0x4923c5['status'](_0x1458c9)['end']();};}function respondWithResult(_0x1f6645,_0x24fa50){_0x24fa50=_0x24fa50||0xc8;return function(_0x6eae50){if(_0x6eae50){return _0x1f6645['status'](_0x24fa50)[_0x0337('0x1a')](_0x6eae50);}};}function respondWithFilteredResult(_0x4a0a28,_0x4d5035){return function(_0x1cbb1e){if(_0x1cbb1e){var _0x11c3a9=typeof _0x4d5035['offset']===_0x0337('0x1b')&&typeof _0x4d5035['limit']===_0x0337('0x1b');var _0x414245=_0x1cbb1e[_0x0337('0x1c')];var _0x42ba84=_0x11c3a9?0x0:_0x4d5035['offset'];var _0x3f272a=_0x11c3a9?_0x1cbb1e[_0x0337('0x1c')]:_0x4d5035[_0x0337('0x1d')]+_0x4d5035[_0x0337('0x1e')];var _0xa17e50;if(_0x3f272a>=_0x414245){_0x3f272a=_0x414245;_0xa17e50=0xc8;}else{_0xa17e50=0xce;}_0x4a0a28[_0x0337('0x1f')](_0xa17e50);return _0x4a0a28[_0x0337('0x20')](_0x0337('0x21'),_0x42ba84+'-'+_0x3f272a+'/'+_0x414245)[_0x0337('0x1a')](_0x1cbb1e);}return null;};}function patchUpdates(_0x311f7e){return function(_0x12324c){try{jsonpatch['apply'](_0x12324c,_0x311f7e,!![]);}catch(_0x268584){return BPromise['reject'](_0x268584);}return _0x12324c[_0x0337('0x22')]();};}function saveUpdates(_0x3f9008,_0x3d4e00){return function(_0x4a2ad1){if(_0x4a2ad1){return _0x4a2ad1['update'](_0x3f9008)[_0x0337('0x23')](function(_0xc98ed8){return _0xc98ed8;});}return null;};}function removeEntity(_0x47d8ea,_0x51ec8e){return function(_0x292faa){if(_0x292faa){return _0x292faa['destroy']()['then'](function(){_0x47d8ea[_0x0337('0x1f')](0xcc)[_0x0337('0x24')]();});}};}function handleEntityNotFound(_0x53f158,_0x1d9779){return function(_0x43eebd){if(!_0x43eebd){_0x53f158['sendStatus'](0x194);}return _0x43eebd;};}function handleError(_0x6a8c8a,_0x4a9ab4){_0x4a9ab4=_0x4a9ab4||0x1f4;return function(_0x18eaec){logger[_0x0337('0x25')](_0x18eaec['stack']);if(_0x18eaec['name']){delete _0x18eaec[_0x0337('0x26')];}_0x6a8c8a[_0x0337('0x1f')](_0x4a9ab4)[_0x0337('0x27')](_0x18eaec);};}exports['index']=function(_0x5d66ed,_0x349e2a){var _0x285bac={},_0x3ebcb7={},_0xee776e={'count':0x0,'rows':[]};var _0x593535=_['map'](db[_0x0337('0x28')]['rawAttributes'],function(_0x2c87c9){return{'name':_0x2c87c9[_0x0337('0x29')],'type':_0x2c87c9[_0x0337('0x2a')][_0x0337('0x2b')]};});_0x3ebcb7[_0x0337('0x2c')]=_[_0x0337('0x2d')](_0x593535,_0x0337('0x26'));_0x3ebcb7[_0x0337('0x2e')]=_[_0x0337('0x2f')](_0x5d66ed['query']);_0x3ebcb7[_0x0337('0x30')]=_[_0x0337('0x31')](_0x3ebcb7[_0x0337('0x2c')],_0x3ebcb7[_0x0337('0x2e')]);_0x285bac[_0x0337('0x32')]=_['intersection'](_0x3ebcb7[_0x0337('0x2c')],qs[_0x0337('0x33')](_0x5d66ed[_0x0337('0x2e')][_0x0337('0x33')]));_0x285bac[_0x0337('0x32')]=_0x285bac[_0x0337('0x32')][_0x0337('0x34')]?_0x285bac['attributes']:_0x3ebcb7[_0x0337('0x2c')];if(!_0x5d66ed[_0x0337('0x2e')]['hasOwnProperty'](_0x0337('0x35'))){_0x285bac[_0x0337('0x1e')]=qs[_0x0337('0x1e')](_0x5d66ed['query'][_0x0337('0x1e')]);_0x285bac[_0x0337('0x1d')]=qs[_0x0337('0x1d')](_0x5d66ed[_0x0337('0x2e')][_0x0337('0x1d')]);}_0x285bac[_0x0337('0x36')]=qs[_0x0337('0x37')](_0x5d66ed[_0x0337('0x2e')][_0x0337('0x37')]);_0x285bac['where']=qs[_0x0337('0x30')](_[_0x0337('0x38')](_0x5d66ed['query'],_0x3ebcb7[_0x0337('0x30')]),_0x593535);if(_0x5d66ed[_0x0337('0x2e')][_0x0337('0x39')]){_0x285bac[_0x0337('0x3a')]=_[_0x0337('0x3b')](_0x285bac[_0x0337('0x3a')],{'$or':_['map'](_0x593535,function(_0x408b13){if(_0x408b13[_0x0337('0x2a')]!=='VIRTUAL'){var _0x4ba7a4={};_0x4ba7a4[_0x408b13['name']]={'$like':'%'+_0x5d66ed[_0x0337('0x2e')][_0x0337('0x39')]+'%'};return _0x4ba7a4;}})});}_0x285bac=_['merge']({},_0x285bac,_0x5d66ed[_0x0337('0x3c')]);var _0x359629={'where':_0x285bac[_0x0337('0x3a')]};return db['DeskConfiguration'][_0x0337('0x1c')](_0x359629)['then'](function(_0x3f317f){_0xee776e['count']=_0x3f317f;if(_0x5d66ed[_0x0337('0x2e')][_0x0337('0x3d')]){_0x285bac[_0x0337('0x3e')]=[{'all':!![]}];}return db['DeskConfiguration'][_0x0337('0x3f')](_0x285bac);})[_0x0337('0x23')](function(_0x2564d5){_0xee776e[_0x0337('0x40')]=_0x2564d5;return _0xee776e;})[_0x0337('0x23')](respondWithFilteredResult(_0x349e2a,_0x285bac))[_0x0337('0x41')](handleError(_0x349e2a,null));};exports['show']=function(_0x3f7338,_0x7ae4a4){var _0x319b95={'raw':![],'where':{'id':_0x3f7338[_0x0337('0x42')]['id']}},_0x569734={};_0x569734['model']=_[_0x0337('0x2f')](db[_0x0337('0x28')][_0x0337('0x43')]);_0x569734[_0x0337('0x2e')]=_[_0x0337('0x2f')](_0x3f7338[_0x0337('0x2e')]);_0x569734[_0x0337('0x30')]=_[_0x0337('0x31')](_0x569734[_0x0337('0x2c')],_0x569734[_0x0337('0x2e')]);_0x319b95[_0x0337('0x32')]=_[_0x0337('0x31')](_0x569734['model'],qs[_0x0337('0x33')](_0x3f7338[_0x0337('0x2e')][_0x0337('0x33')]));_0x319b95['attributes']=_0x319b95['attributes']['length']?_0x319b95[_0x0337('0x32')]:_0x569734['model'];if(_0x3f7338['query'][_0x0337('0x3d')]){_0x319b95['include']=[{'all':!![]}];}_0x319b95=_[_0x0337('0x3b')]({},_0x319b95,_0x3f7338['options']);return db[_0x0337('0x28')][_0x0337('0x44')](_0x319b95)[_0x0337('0x23')](handleEntityNotFound(_0x7ae4a4,null))['then'](respondWithResult(_0x7ae4a4,null))[_0x0337('0x41')](handleError(_0x7ae4a4,null));};exports[_0x0337('0x45')]=function(_0x285977,_0x31c9d8){return db[_0x0337('0x28')]['create'](_0x285977[_0x0337('0x46')],{})[_0x0337('0x23')](respondWithResult(_0x31c9d8,0xc9))[_0x0337('0x41')](handleError(_0x31c9d8,null));};exports['update']=function(_0x3a460b,_0x204c23){if(_0x3a460b['body']['id']){delete _0x3a460b[_0x0337('0x46')]['id'];}return db[_0x0337('0x28')]['find']({'where':{'id':_0x3a460b[_0x0337('0x42')]['id']}})[_0x0337('0x23')](handleEntityNotFound(_0x204c23,null))[_0x0337('0x23')](saveUpdates(_0x3a460b[_0x0337('0x46')],null))[_0x0337('0x23')](respondWithResult(_0x204c23,null))['catch'](handleError(_0x204c23,null));};exports[_0x0337('0x47')]=function(_0x7af185,_0x2f0f19){return db[_0x0337('0x28')]['find']({'where':{'id':_0x7af185[_0x0337('0x42')]['id']}})[_0x0337('0x23')](handleEntityNotFound(_0x2f0f19,null))[_0x0337('0x23')](removeEntity(_0x2f0f19,null))[_0x0337('0x41')](handleError(_0x2f0f19,null));};exports[_0x0337('0x48')]=function(_0x1d9d66,_0x20f7df,_0x3263a5){var _0x5ed0eb={};var _0x3c0a22={};var _0x446734;var _0x1e0929;return db[_0x0337('0x28')]['findOne']({'where':{'id':_0x1d9d66['params']['id']}})[_0x0337('0x23')](handleEntityNotFound(_0x20f7df,null))[_0x0337('0x23')](function(_0x51cecd){if(_0x51cecd){_0x446734=_0x51cecd;_0x3c0a22[_0x0337('0x2c')]=_[_0x0337('0x2f')](db[_0x0337('0x49')][_0x0337('0x43')]);_0x3c0a22[_0x0337('0x2e')]=_[_0x0337('0x2f')](_0x1d9d66[_0x0337('0x2e')]);_0x3c0a22[_0x0337('0x30')]=_[_0x0337('0x31')](_0x3c0a22[_0x0337('0x2c')],_0x3c0a22[_0x0337('0x2e')]);_0x5ed0eb['attributes']=_[_0x0337('0x31')](_0x3c0a22[_0x0337('0x2c')],qs[_0x0337('0x33')](_0x1d9d66[_0x0337('0x2e')][_0x0337('0x33')]));_0x5ed0eb['attributes']=_0x5ed0eb['attributes'][_0x0337('0x34')]?_0x5ed0eb[_0x0337('0x32')]:_0x3c0a22[_0x0337('0x2c')];_0x5ed0eb['order']=qs[_0x0337('0x37')](_0x1d9d66['query']['sort']);_0x5ed0eb[_0x0337('0x3a')]=qs[_0x0337('0x30')](_['pick'](_0x1d9d66['query'],_0x3c0a22[_0x0337('0x30')]));if(_0x1d9d66[_0x0337('0x2e')]['filter']){_0x5ed0eb[_0x0337('0x3a')]=_[_0x0337('0x3b')](_0x5ed0eb[_0x0337('0x3a')],{'$or':_[_0x0337('0x2d')](_0x5ed0eb[_0x0337('0x32')],function(_0x1a2dce){var _0x4a834e={};_0x4a834e[_0x1a2dce]={'$like':'%'+_0x1d9d66['query']['filter']+'%'};return _0x4a834e;})});}_0x5ed0eb=_[_0x0337('0x3b')]({},_0x5ed0eb,_0x1d9d66['options']);return _0x446734[_0x0337('0x48')](_0x5ed0eb);}})[_0x0337('0x23')](function(_0x554a40){if(_0x554a40){_0x1e0929=_0x554a40[_0x0337('0x34')];if(!_0x1d9d66[_0x0337('0x2e')][_0x0337('0x4a')](_0x0337('0x35'))){_0x5ed0eb[_0x0337('0x1e')]=qs[_0x0337('0x1e')](_0x1d9d66[_0x0337('0x2e')]['limit']);_0x5ed0eb[_0x0337('0x1d')]=qs['offset'](_0x1d9d66[_0x0337('0x2e')][_0x0337('0x1d')]);}return _0x446734['getFields'](_0x5ed0eb);}})[_0x0337('0x23')](function(_0x107c94){if(_0x107c94){return _0x107c94?{'count':_0x1e0929,'rows':_0x107c94}:null;}})[_0x0337('0x23')](respondWithResult(_0x20f7df,null))[_0x0337('0x41')](handleError(_0x20f7df,null));};exports['getSubjects']=function(_0xcc3a93,_0x5852bc,_0x452503){var _0x27693c={};var _0x2983da={};var _0x443e2e;var _0x7dabc4;return db[_0x0337('0x28')][_0x0337('0x4b')]({'where':{'id':_0xcc3a93[_0x0337('0x42')]['id']}})[_0x0337('0x23')](handleEntityNotFound(_0x5852bc,null))[_0x0337('0x23')](function(_0x1e23a4){if(_0x1e23a4){_0x443e2e=_0x1e23a4;_0x2983da[_0x0337('0x2c')]=_[_0x0337('0x2f')](db[_0x0337('0x49')][_0x0337('0x43')]);_0x2983da['query']=_[_0x0337('0x2f')](_0xcc3a93[_0x0337('0x2e')]);_0x2983da[_0x0337('0x30')]=_[_0x0337('0x31')](_0x2983da['model'],_0x2983da[_0x0337('0x2e')]);_0x27693c[_0x0337('0x32')]=_['intersection'](_0x2983da[_0x0337('0x2c')],qs[_0x0337('0x33')](_0xcc3a93[_0x0337('0x2e')][_0x0337('0x33')]));_0x27693c[_0x0337('0x32')]=_0x27693c[_0x0337('0x32')][_0x0337('0x34')]?_0x27693c['attributes']:_0x2983da[_0x0337('0x2c')];_0x27693c[_0x0337('0x36')]=qs[_0x0337('0x37')](_0xcc3a93[_0x0337('0x2e')]['sort']);_0x27693c[_0x0337('0x3a')]=qs[_0x0337('0x30')](_[_0x0337('0x38')](_0xcc3a93[_0x0337('0x2e')],_0x2983da['filters']));if(_0xcc3a93['query'][_0x0337('0x39')]){_0x27693c[_0x0337('0x3a')]=_[_0x0337('0x3b')](_0x27693c[_0x0337('0x3a')],{'$or':_['map'](_0x27693c[_0x0337('0x32')],function(_0x4d6d9b){var _0x42a8b6={};_0x42a8b6[_0x4d6d9b]={'$like':'%'+_0xcc3a93[_0x0337('0x2e')]['filter']+'%'};return _0x42a8b6;})});}_0x27693c=_[_0x0337('0x3b')]({},_0x27693c,_0xcc3a93[_0x0337('0x3c')]);return _0x443e2e[_0x0337('0x4c')](_0x27693c);}})[_0x0337('0x23')](function(_0x45c23b){if(_0x45c23b){_0x7dabc4=_0x45c23b[_0x0337('0x34')];if(!_0xcc3a93[_0x0337('0x2e')][_0x0337('0x4a')]('nolimit')){_0x27693c[_0x0337('0x1e')]=qs[_0x0337('0x1e')](_0xcc3a93[_0x0337('0x2e')][_0x0337('0x1e')]);_0x27693c[_0x0337('0x1d')]=qs[_0x0337('0x1d')](_0xcc3a93[_0x0337('0x2e')][_0x0337('0x1d')]);}return _0x443e2e[_0x0337('0x4c')](_0x27693c);}})['then'](function(_0x3e59fb){if(_0x3e59fb){return _0x3e59fb?{'count':_0x7dabc4,'rows':_0x3e59fb}:null;}})[_0x0337('0x23')](respondWithResult(_0x5852bc,null))[_0x0337('0x41')](handleError(_0x5852bc,null));};exports[_0x0337('0x4d')]=function(_0x8913ad,_0x47d9dc,_0x4ad4c0){var _0x36553d={};var _0x1a8c94={};var _0x1c4f47;var _0x55866b;return db[_0x0337('0x28')][_0x0337('0x4b')]({'where':{'id':_0x8913ad[_0x0337('0x42')]['id']}})[_0x0337('0x23')](handleEntityNotFound(_0x47d9dc,null))['then'](function(_0x518aa5){if(_0x518aa5){_0x1c4f47=_0x518aa5;_0x1a8c94['model']=_[_0x0337('0x2f')](db[_0x0337('0x49')][_0x0337('0x43')]);_0x1a8c94[_0x0337('0x2e')]=_[_0x0337('0x2f')](_0x8913ad[_0x0337('0x2e')]);_0x1a8c94[_0x0337('0x30')]=_[_0x0337('0x31')](_0x1a8c94[_0x0337('0x2c')],_0x1a8c94['query']);_0x36553d[_0x0337('0x32')]=_[_0x0337('0x31')](_0x1a8c94['model'],qs[_0x0337('0x33')](_0x8913ad[_0x0337('0x2e')][_0x0337('0x33')]));_0x36553d[_0x0337('0x32')]=_0x36553d['attributes'][_0x0337('0x34')]?_0x36553d[_0x0337('0x32')]:_0x1a8c94[_0x0337('0x2c')];_0x36553d[_0x0337('0x36')]=qs[_0x0337('0x37')](_0x8913ad[_0x0337('0x2e')][_0x0337('0x37')]);_0x36553d[_0x0337('0x3a')]=qs[_0x0337('0x30')](_[_0x0337('0x38')](_0x8913ad[_0x0337('0x2e')],_0x1a8c94[_0x0337('0x30')]));if(_0x8913ad[_0x0337('0x2e')]['filter']){_0x36553d[_0x0337('0x3a')]=_[_0x0337('0x3b')](_0x36553d[_0x0337('0x3a')],{'$or':_[_0x0337('0x2d')](_0x36553d['attributes'],function(_0x34c4ba){var _0x263dd4={};_0x263dd4[_0x34c4ba]={'$like':'%'+_0x8913ad[_0x0337('0x2e')]['filter']+'%'};return _0x263dd4;})});}_0x36553d=_['merge']({},_0x36553d,_0x8913ad[_0x0337('0x3c')]);return _0x1c4f47[_0x0337('0x4d')](_0x36553d);}})[_0x0337('0x23')](function(_0x1ee3a5){if(_0x1ee3a5){_0x55866b=_0x1ee3a5[_0x0337('0x34')];if(!_0x8913ad[_0x0337('0x2e')]['hasOwnProperty'](_0x0337('0x35'))){_0x36553d[_0x0337('0x1e')]=qs[_0x0337('0x1e')](_0x8913ad['query'][_0x0337('0x1e')]);_0x36553d[_0x0337('0x1d')]=qs['offset'](_0x8913ad[_0x0337('0x2e')][_0x0337('0x1d')]);}return _0x1c4f47[_0x0337('0x4d')](_0x36553d);}})['then'](function(_0x35225b){if(_0x35225b){return _0x35225b?{'count':_0x55866b,'rows':_0x35225b}:null;}})['then'](respondWithResult(_0x47d9dc,null))[_0x0337('0x41')](handleError(_0x47d9dc,null));};exports[_0x0337('0x4e')]=function(_0x4aa4d5,_0x5153e0,_0x4986c0){var _0x3d34d4={};var _0x439145={};var _0x40c396;var _0x11cd08;return db[_0x0337('0x28')][_0x0337('0x4b')]({'where':{'id':_0x4aa4d5[_0x0337('0x42')]['id']}})[_0x0337('0x23')](handleEntityNotFound(_0x5153e0,null))[_0x0337('0x23')](function(_0x3c1ee4){if(_0x3c1ee4){_0x40c396=_0x3c1ee4;_0x439145[_0x0337('0x2c')]=_['keys'](db[_0x0337('0x4f')][_0x0337('0x43')]);_0x439145['query']=_['keys'](_0x4aa4d5['query']);_0x439145[_0x0337('0x30')]=_[_0x0337('0x31')](_0x439145[_0x0337('0x2c')],_0x439145[_0x0337('0x2e')]);_0x3d34d4[_0x0337('0x32')]=_['intersection'](_0x439145[_0x0337('0x2c')],qs[_0x0337('0x33')](_0x4aa4d5[_0x0337('0x2e')][_0x0337('0x33')]));_0x3d34d4[_0x0337('0x32')]=_0x3d34d4[_0x0337('0x32')]['length']?_0x3d34d4[_0x0337('0x32')]:_0x439145[_0x0337('0x2c')];_0x3d34d4[_0x0337('0x36')]=qs[_0x0337('0x37')](_0x4aa4d5[_0x0337('0x2e')][_0x0337('0x37')]);_0x3d34d4[_0x0337('0x3a')]=qs[_0x0337('0x30')](_[_0x0337('0x38')](_0x4aa4d5[_0x0337('0x2e')],_0x439145[_0x0337('0x30')]));if(_0x4aa4d5['query'][_0x0337('0x39')]){_0x3d34d4[_0x0337('0x3a')]=_[_0x0337('0x3b')](_0x3d34d4['where'],{'$or':_[_0x0337('0x2d')](_0x3d34d4['attributes'],function(_0x11b503){var _0x5184d5={};_0x5184d5[_0x11b503]={'$like':'%'+_0x4aa4d5['query']['filter']+'%'};return _0x5184d5;})});}_0x3d34d4=_['merge']({},_0x3d34d4,_0x4aa4d5[_0x0337('0x3c')]);return _0x40c396[_0x0337('0x4e')](_0x3d34d4);}})['then'](function(_0x4f5c8f){if(_0x4f5c8f){_0x11cd08=_0x4f5c8f[_0x0337('0x34')];if(!_0x4aa4d5['query'][_0x0337('0x4a')](_0x0337('0x35'))){_0x3d34d4[_0x0337('0x1e')]=qs[_0x0337('0x1e')](_0x4aa4d5[_0x0337('0x2e')][_0x0337('0x1e')]);_0x3d34d4['offset']=qs['offset'](_0x4aa4d5[_0x0337('0x2e')][_0x0337('0x1d')]);}return _0x40c396[_0x0337('0x4e')](_0x3d34d4);}})[_0x0337('0x23')](function(_0x50045c){if(_0x50045c){return _0x50045c?{'count':_0x11cd08,'rows':_0x50045c}:null;}})[_0x0337('0x23')](respondWithResult(_0x5153e0,null))[_0x0337('0x41')](handleError(_0x5153e0,null));};exports[_0x0337('0x50')]=function(_0x1ceb1e,_0x251bc1,_0x1fed41){if(_0x1ceb1e[_0x0337('0x46')]['id']){delete _0x1ceb1e['body']['id'];}return db[_0x0337('0x28')][_0x0337('0x4b')]({'where':{'id':_0x1ceb1e['params']['id']}})['then'](handleEntityNotFound(_0x251bc1,null))[_0x0337('0x23')](function(_0x2ee433){if(_0x2ee433){return _0x2ee433[_0x0337('0x50')](_0x1ceb1e[_0x0337('0x46')]['ids']||[]);}return null;})[_0x0337('0x23')](respondWithResult(_0x251bc1,null))[_0x0337('0x41')](handleError(_0x251bc1,null));};
\ No newline at end of file
index 0c7d2ae..f51f1ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c7d=['moment','request-promise','rimraf','./intDeskConfiguration.attributes','exports','int_desk_configurations','util','../../config/logger','api'];(function(_0x521155,_0x33a9d3){var _0x4e525c=function(_0x2cec08){while(--_0x2cec08){_0x521155['push'](_0x521155['shift']());}};_0x4e525c(++_0x33a9d3);}(_0x6c7d,0xf9));var _0xd6c7=function(_0x431f82,_0x1f4d0d){_0x431f82=_0x431f82-0x0;var _0x31cd63=_0x6c7d[_0x431f82];return _0x31cd63;};'use strict';var _=require('lodash');var util=require(_0xd6c7('0x0'));var logger=require(_0xd6c7('0x1'))(_0xd6c7('0x2'));var moment=require(_0xd6c7('0x3'));var BPromise=require('bluebird');var rp=require(_0xd6c7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd6c7('0x5'));var config=require('../../config/environment');var attributes=require(_0xd6c7('0x6'));module[_0xd6c7('0x7')]=function(_0x1f4f07,_0x4a081e){return _0x1f4f07['define']('DeskConfiguration',attributes,{'tableName':_0xd6c7('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6499=['api','bluebird','request-promise','path','../../config/environment','./intDeskConfiguration.attributes','exports','DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger'];(function(_0x1280a1,_0x5967cd){var _0x240d6f=function(_0x480ee9){while(--_0x480ee9){_0x1280a1['push'](_0x1280a1['shift']());}};_0x240d6f(++_0x5967cd);}(_0x6499,0x141));var _0x9649=function(_0x1e36bf,_0x90996d){_0x1e36bf=_0x1e36bf-0x0;var _0x3049e8=_0x6499[_0x1e36bf];return _0x3049e8;};'use strict';var _=require(_0x9649('0x0'));var util=require(_0x9649('0x1'));var logger=require(_0x9649('0x2'))(_0x9649('0x3'));var moment=require('moment');var BPromise=require(_0x9649('0x4'));var rp=require(_0x9649('0x5'));var fs=require('fs');var path=require(_0x9649('0x6'));var rimraf=require('rimraf');var config=require(_0x9649('0x7'));var attributes=require(_0x9649('0x8'));module[_0x9649('0x9')]=function(_0x4935d5,_0x3fcc80){return _0x4935d5['define'](_0x9649('0xa'),attributes,{'tableName':_0x9649('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 04d37e7..e8ef234 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x928c=['catch','lodash','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client','http','request','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x4dfec4,_0x49a6cb){var _0x1f7ba8=function(_0x40184b){while(--_0x40184b){_0x4dfec4['push'](_0x4dfec4['shift']());}};_0x1f7ba8(++_0x49a6cb);}(_0x928c,0x157));var _0xc928=function(_0x59291b,_0x5e7125){_0x59291b=_0x59291b-0x0;var _0x3ff71e=_0x928c[_0x59291b];return _0x3ff71e;};'use strict';var _=require(_0xc928('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xc928('0x1'));var rs=require(_0xc928('0x2'));var fs=require('fs');var Redis=require(_0xc928('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xc928('0x4'));var logger=require('../../config/logger')(_0xc928('0x5'));var config=require('../../config/environment');var jayson=require(_0xc928('0x6'));var client=jayson[_0xc928('0x7')][_0xc928('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3c61c1,_0x41f542,_0x111004){return new BPromise(function(_0x19ec0a,_0x37a526){return client[_0xc928('0x9')](_0x3c61c1,_0x111004)['then'](function(_0x470b11){logger[_0xc928('0xa')](_0xc928('0xb'),_0x41f542,_0xc928('0xc'));logger[_0xc928('0xd')]('DeskConfiguration,\x20%s,\x20%s,\x20%s',_0x41f542,_0xc928('0xc'),JSON[_0xc928('0xe')](_0x470b11));if(_0x470b11[_0xc928('0xf')]){if(_0x470b11['error'][_0xc928('0x10')]===0x1f4){logger[_0xc928('0xf')](_0xc928('0xb'),_0x41f542,_0x470b11['error'][_0xc928('0x11')]);return _0x37a526(_0x470b11['error'][_0xc928('0x11')]);}logger['error'](_0xc928('0xb'),_0x41f542,_0x470b11['error'][_0xc928('0x11')]);return _0x19ec0a(_0x470b11[_0xc928('0xf')]['message']);}else{logger[_0xc928('0xa')](_0xc928('0xb'),_0x41f542,'request\x20sent');_0x19ec0a(_0x470b11['result']['message']);}})[_0xc928('0x12')](function(_0x1e0f0e){logger['error'](_0xc928('0xb'),_0x41f542,_0x1e0f0e);_0x37a526(_0x1e0f0e);});});}
\ No newline at end of file
+var _0x9aea=['DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','ioredis','../../config/logger','rpc','../../config/environment','client','http','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x1dd2cc,_0x36ddfe){var _0x305d8e=function(_0x27df09){while(--_0x27df09){_0x1dd2cc['push'](_0x1dd2cc['shift']());}};_0x305d8e(++_0x36ddfe);}(_0x9aea,0x196));var _0xa9ae=function(_0x369e8c,_0x88dfe0){_0x369e8c=_0x369e8c-0x0;var _0x2c568d=_0x9aea[_0x369e8c];return _0x2c568d;};'use strict';var _=require(_0xa9ae('0x0'));var util=require(_0xa9ae('0x1'));var moment=require(_0xa9ae('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa9ae('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa9ae('0x4'))(_0xa9ae('0x5'));var config=require(_0xa9ae('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xa9ae('0x7')][_0xa9ae('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5e149f,_0xacbb0c,_0x7ae815){return new BPromise(function(_0x4c5866,_0x1e1e41){return client['request'](_0x5e149f,_0x7ae815)[_0xa9ae('0x9')](function(_0x573d7c){logger[_0xa9ae('0xa')](_0xa9ae('0xb'),_0xacbb0c,_0xa9ae('0xc'));logger[_0xa9ae('0xd')](_0xa9ae('0xe'),_0xacbb0c,_0xa9ae('0xc'),JSON[_0xa9ae('0xf')](_0x573d7c));if(_0x573d7c[_0xa9ae('0x10')]){if(_0x573d7c[_0xa9ae('0x10')][_0xa9ae('0x11')]===0x1f4){logger[_0xa9ae('0x10')](_0xa9ae('0xb'),_0xacbb0c,_0x573d7c[_0xa9ae('0x10')][_0xa9ae('0x12')]);return _0x1e1e41(_0x573d7c[_0xa9ae('0x10')][_0xa9ae('0x12')]);}logger[_0xa9ae('0x10')](_0xa9ae('0xb'),_0xacbb0c,_0x573d7c[_0xa9ae('0x10')][_0xa9ae('0x12')]);return _0x4c5866(_0x573d7c['error'][_0xa9ae('0x12')]);}else{logger[_0xa9ae('0xa')](_0xa9ae('0xb'),_0xacbb0c,'request\x20sent');_0x4c5866(_0x573d7c['result'][_0xa9ae('0x12')]);}})[_0xa9ae('0x13')](function(_0x383c28){logger[_0xa9ae('0x10')]('DeskConfiguration,\x20%s,\x20%s',_0xacbb0c,_0x383c28);_0x1e1e41(_0x383c28);});});}
\ No newline at end of file
index 88aa421..529a873 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20d9=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller','index','get','/:id','isAuthenticated','show','post','create','put','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x22468d,_0x2c865d){var _0x4338e9=function(_0x691843){while(--_0x691843){_0x22468d['push'](_0x22468d['shift']());}};_0x4338e9(++_0x2c865d);}(_0x20d9,0xcc));var _0x920d=function(_0x47c663,_0xb2d8ab){_0x47c663=_0x47c663-0x0;var _0x29a8f1=_0x20d9[_0x47c663];return _0x29a8f1;};'use strict';var multer=require('multer');var util=require(_0x920d('0x0'));var path=require(_0x920d('0x1'));var timeout=require(_0x920d('0x2'));var express=require(_0x920d('0x3'));var router=express[_0x920d('0x4')]();var fs_extra=require(_0x920d('0x5'));var auth=require(_0x920d('0x6'));var interaction=require(_0x920d('0x7'));var config=require(_0x920d('0x8'));var controller=require(_0x920d('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x920d('0xa')]);router[_0x920d('0xb')](_0x920d('0xc'),auth[_0x920d('0xd')](),controller[_0x920d('0xe')]);router[_0x920d('0xf')]('/',auth['isAuthenticated'](),controller[_0x920d('0x10')]);router[_0x920d('0x11')]('/:id',auth[_0x920d('0xd')](),controller[_0x920d('0x12')]);router[_0x920d('0x13')](_0x920d('0xc'),auth[_0x920d('0xd')](),controller['destroy']);module[_0x920d('0x14')]=router;
\ No newline at end of file
+var _0xa6f9=['../../config/environment','isAuthenticated','index','get','/:id','show','post','update','exports','util','path','connect-timeout','Router'];(function(_0x2d0031,_0x322541){var _0x3d8f42=function(_0x32432c){while(--_0x32432c){_0x2d0031['push'](_0x2d0031['shift']());}};_0x3d8f42(++_0x322541);}(_0xa6f9,0x11a));var _0x9a6f=function(_0x745eaa,_0x154802){_0x745eaa=_0x745eaa-0x0;var _0x4298b6=_0xa6f9[_0x745eaa];return _0x4298b6;};'use strict';var multer=require('multer');var util=require(_0x9a6f('0x0'));var path=require(_0x9a6f('0x1'));var timeout=require(_0x9a6f('0x2'));var express=require('express');var router=express[_0x9a6f('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x9a6f('0x4'));var controller=require('./intDeskField.controller');router['get']('/',auth[_0x9a6f('0x5')](),controller[_0x9a6f('0x6')]);router[_0x9a6f('0x7')](_0x9a6f('0x8'),auth[_0x9a6f('0x5')](),controller[_0x9a6f('0x9')]);router[_0x9a6f('0xa')]('/',auth[_0x9a6f('0x5')](),controller['create']);router['put'](_0x9a6f('0x8'),auth[_0x9a6f('0x5')](),controller[_0x9a6f('0xb')]);router['delete'](_0x9a6f('0x8'),auth[_0x9a6f('0x5')](),controller['destroy']);module[_0x9a6f('0xc')]=router;
\ No newline at end of file
index ca3a87e..f3349a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2b4=['sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x337261,_0x1182a7){var _0x2639a1=function(_0x3b83c1){while(--_0x3b83c1){_0x337261['push'](_0x337261['shift']());}};_0x2639a1(++_0x1182a7);}(_0xc2b4,0x1cb));var _0x4c2b=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc2b4[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x4c2b('0x0'));module[_0x4c2b('0x1')]={'type':{'type':Sequelize[_0x4c2b('0x2')](_0x4c2b('0x3'),_0x4c2b('0x4'),_0x4c2b('0x5'),_0x4c2b('0x6'),_0x4c2b('0x7')),'defaultValue':_0x4c2b('0x3')},'content':{'type':Sequelize[_0x4c2b('0x8')]},'key':{'type':Sequelize[_0x4c2b('0x8')]},'keyType':{'type':Sequelize['ENUM'](_0x4c2b('0x3'),_0x4c2b('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0x4c2b('0x8')]},'idField':{'type':Sequelize[_0x4c2b('0x8')]},'nameField':{'type':Sequelize[_0x4c2b('0x8')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4c2b('0x8')]}};
\ No newline at end of file
+var _0x0791=['exports','ENUM','customVariable','keyValue','picklist','STRING','variable','BOOLEAN','sequelize'];(function(_0x4c7b20,_0x361515){var _0x4872bd=function(_0x358e19){while(--_0x358e19){_0x4c7b20['push'](_0x4c7b20['shift']());}};_0x4872bd(++_0x361515);}(_0x0791,0x179));var _0x1079=function(_0x2aee2f,_0xad9887){_0x2aee2f=_0x2aee2f-0x0;var _0x19337f=_0x0791[_0x2aee2f];return _0x19337f;};'use strict';var Sequelize=require(_0x1079('0x0'));module[_0x1079('0x1')]={'type':{'type':Sequelize[_0x1079('0x2')]('string','variable',_0x1079('0x3'),_0x1079('0x4'),_0x1079('0x5')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x1079('0x6')]},'keyType':{'type':Sequelize[_0x1079('0x2')]('string',_0x1079('0x7'),_0x1079('0x3'))},'keyContent':{'type':Sequelize[_0x1079('0x6')]},'idField':{'type':Sequelize[_0x1079('0x6')]},'nameField':{'type':Sequelize[_0x1079('0x6')]},'customField':{'type':Sequelize[_0x1079('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1079('0x6')]}};
\ No newline at end of file
index d4e523b..31b0d3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16a7=['filter','merge','options','where','count','include','rows','catch','params','keys','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','status','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','map','DeskField','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','pick'];(function(_0xdc37a1,_0x53ebb9){var _0x99b4fe=function(_0x2811e3){while(--_0x2811e3){_0xdc37a1['push'](_0xdc37a1['shift']());}};_0x99b4fe(++_0x53ebb9);}(_0x16a7,0xa5));var _0x716a=function(_0x167044,_0x2832d8){_0x167044=_0x167044-0x0;var _0x1c17bc=_0x16a7[_0x167044];return _0x1c17bc;};'use strict';var emlformat=require(_0x716a('0x0'));var rimraf=require(_0x716a('0x1'));var zipdir=require(_0x716a('0x2'));var jsonpatch=require(_0x716a('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x716a('0x4'));var Mustache=require(_0x716a('0x5'));var util=require('util');var path=require(_0x716a('0x6'));var sox=require(_0x716a('0x7'));var csv=require(_0x716a('0x8'));var ejs=require(_0x716a('0x9'));var fs=require('fs');var fs_extra=require(_0x716a('0xa'));var _=require('lodash');var squel=require(_0x716a('0xb'));var crypto=require(_0x716a('0xc'));var jsforce=require(_0x716a('0xd'));var deskjs=require(_0x716a('0xe'));var toCsv=require('to-csv');var querystring=require(_0x716a('0xf'));var Papa=require(_0x716a('0x10'));var Redis=require(_0x716a('0x11'));var authService=require(_0x716a('0x12'));var qs=require(_0x716a('0x13'));var as=require(_0x716a('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x716a('0x15'))(_0x716a('0x16'));var utils=require(_0x716a('0x17'));var config=require(_0x716a('0x18'));var licenseUtil=require(_0x716a('0x19'));var db=require(_0x716a('0x1a'))['db'];function respondWithStatusCode(_0x341c18,_0x59ebf1){_0x59ebf1=_0x59ebf1||0xcc;return function(_0xdab1a5){if(_0xdab1a5){return _0x341c18[_0x716a('0x1b')](_0x59ebf1);}return _0x341c18['status'](_0x59ebf1)[_0x716a('0x1c')]();};}function respondWithResult(_0x5e75c8,_0x3f629f){_0x3f629f=_0x3f629f||0xc8;return function(_0x153da9){if(_0x153da9){return _0x5e75c8['status'](_0x3f629f)[_0x716a('0x1d')](_0x153da9);}};}function respondWithFilteredResult(_0x3096fe,_0x3a9793){return function(_0x34860f){if(_0x34860f){var _0x2f31b2=typeof _0x3a9793[_0x716a('0x1e')]===_0x716a('0x1f')&&typeof _0x3a9793['limit']===_0x716a('0x1f');var _0x2ad622=_0x34860f['count'];var _0x3776d3=_0x2f31b2?0x0:_0x3a9793['offset'];var _0x3fb152=_0x2f31b2?_0x34860f['count']:_0x3a9793[_0x716a('0x1e')]+_0x3a9793[_0x716a('0x20')];var _0x58c183;if(_0x3fb152>=_0x2ad622){_0x3fb152=_0x2ad622;_0x58c183=0xc8;}else{_0x58c183=0xce;}_0x3096fe[_0x716a('0x21')](_0x58c183);return _0x3096fe['set'](_0x716a('0x22'),_0x3776d3+'-'+_0x3fb152+'/'+_0x2ad622)[_0x716a('0x1d')](_0x34860f);}return null;};}function patchUpdates(_0x43fcd7){return function(_0x32e549){try{jsonpatch[_0x716a('0x23')](_0x32e549,_0x43fcd7,!![]);}catch(_0x1e1e0e){return BPromise[_0x716a('0x24')](_0x1e1e0e);}return _0x32e549[_0x716a('0x25')]();};}function saveUpdates(_0x309779,_0x31219d){return function(_0x427265){if(_0x427265){return _0x427265[_0x716a('0x26')](_0x309779)[_0x716a('0x27')](function(_0x2b878d){return _0x2b878d;});}return null;};}function removeEntity(_0x44093c,_0x3f8160){return function(_0x45ed14){if(_0x45ed14){return _0x45ed14[_0x716a('0x28')]()[_0x716a('0x27')](function(){_0x44093c[_0x716a('0x21')](0xcc)[_0x716a('0x1c')]();});}};}function handleEntityNotFound(_0x3217e4,_0x2e4adb){return function(_0x2c5892){if(!_0x2c5892){_0x3217e4[_0x716a('0x1b')](0x194);}return _0x2c5892;};}function handleError(_0x584549,_0x1d5957){_0x1d5957=_0x1d5957||0x1f4;return function(_0x409564){logger[_0x716a('0x29')](_0x409564[_0x716a('0x2a')]);if(_0x409564[_0x716a('0x2b')]){delete _0x409564[_0x716a('0x2b')];}_0x584549[_0x716a('0x21')](_0x1d5957)['send'](_0x409564);};}exports[_0x716a('0x2c')]=function(_0x3b3406,_0x2302dc){var _0xb06d2={},_0x34462e={},_0x56ebb4={'count':0x0,'rows':[]};var _0x3b4051=_[_0x716a('0x2d')](db[_0x716a('0x2e')][_0x716a('0x2f')],function(_0x1c947f){return{'name':_0x1c947f[_0x716a('0x30')],'type':_0x1c947f[_0x716a('0x31')][_0x716a('0x32')]};});_0x34462e[_0x716a('0x33')]=_[_0x716a('0x2d')](_0x3b4051,'name');_0x34462e[_0x716a('0x34')]=_['keys'](_0x3b3406[_0x716a('0x34')]);_0x34462e['filters']=_[_0x716a('0x35')](_0x34462e[_0x716a('0x33')],_0x34462e[_0x716a('0x34')]);_0xb06d2['attributes']=_['intersection'](_0x34462e[_0x716a('0x33')],qs[_0x716a('0x36')](_0x3b3406[_0x716a('0x34')][_0x716a('0x36')]));_0xb06d2['attributes']=_0xb06d2[_0x716a('0x37')][_0x716a('0x38')]?_0xb06d2[_0x716a('0x37')]:_0x34462e[_0x716a('0x33')];if(!_0x3b3406[_0x716a('0x34')][_0x716a('0x39')](_0x716a('0x3a'))){_0xb06d2[_0x716a('0x20')]=qs[_0x716a('0x20')](_0x3b3406[_0x716a('0x34')][_0x716a('0x20')]);_0xb06d2[_0x716a('0x1e')]=qs[_0x716a('0x1e')](_0x3b3406['query'][_0x716a('0x1e')]);}_0xb06d2[_0x716a('0x3b')]=qs[_0x716a('0x3c')](_0x3b3406[_0x716a('0x34')][_0x716a('0x3c')]);_0xb06d2['where']=qs[_0x716a('0x3d')](_[_0x716a('0x3e')](_0x3b3406['query'],_0x34462e['filters']),_0x3b4051);if(_0x3b3406[_0x716a('0x34')][_0x716a('0x3f')]){_0xb06d2['where']=_[_0x716a('0x40')](_0xb06d2['where'],{'$or':_[_0x716a('0x2d')](_0x3b4051,function(_0x4a55f3){if(_0x4a55f3[_0x716a('0x31')]!=='VIRTUAL'){var _0x4c5472={};_0x4c5472[_0x4a55f3['name']]={'$like':'%'+_0x3b3406[_0x716a('0x34')][_0x716a('0x3f')]+'%'};return _0x4c5472;}})});}_0xb06d2=_[_0x716a('0x40')]({},_0xb06d2,_0x3b3406[_0x716a('0x41')]);var _0x5265a8={'where':_0xb06d2[_0x716a('0x42')]};return db[_0x716a('0x2e')]['count'](_0x5265a8)[_0x716a('0x27')](function(_0x50bc02){_0x56ebb4[_0x716a('0x43')]=_0x50bc02;if(_0x3b3406[_0x716a('0x34')]['includeAll']){_0xb06d2[_0x716a('0x44')]=[{'all':!![]}];}return db[_0x716a('0x2e')]['findAll'](_0xb06d2);})['then'](function(_0xa32b5a){_0x56ebb4[_0x716a('0x45')]=_0xa32b5a;return _0x56ebb4;})[_0x716a('0x27')](respondWithFilteredResult(_0x2302dc,_0xb06d2))[_0x716a('0x46')](handleError(_0x2302dc,null));};exports['show']=function(_0x261334,_0x2d2ef9){var _0x196a99={'raw':!![],'where':{'id':_0x261334[_0x716a('0x47')]['id']}},_0x4dcce9={};_0x4dcce9['model']=_[_0x716a('0x48')](db['DeskField'][_0x716a('0x2f')]);_0x4dcce9[_0x716a('0x34')]=_[_0x716a('0x48')](_0x261334['query']);_0x4dcce9[_0x716a('0x3d')]=_['intersection'](_0x4dcce9['model'],_0x4dcce9[_0x716a('0x34')]);_0x196a99[_0x716a('0x37')]=_[_0x716a('0x35')](_0x4dcce9[_0x716a('0x33')],qs['fields'](_0x261334[_0x716a('0x34')]['fields']));_0x196a99[_0x716a('0x37')]=_0x196a99['attributes'][_0x716a('0x38')]?_0x196a99[_0x716a('0x37')]:_0x4dcce9[_0x716a('0x33')];if(_0x261334[_0x716a('0x34')]['includeAll']){_0x196a99[_0x716a('0x44')]=[{'all':!![]}];}_0x196a99=_[_0x716a('0x40')]({},_0x196a99,_0x261334[_0x716a('0x41')]);return db[_0x716a('0x2e')][_0x716a('0x49')](_0x196a99)[_0x716a('0x27')](handleEntityNotFound(_0x2d2ef9,null))[_0x716a('0x27')](respondWithResult(_0x2d2ef9,null))['catch'](handleError(_0x2d2ef9,null));};exports[_0x716a('0x4a')]=function(_0xb8edbe,_0x5c81ca){return db['DeskField'][_0x716a('0x4a')](_0xb8edbe[_0x716a('0x4b')],{})['then'](respondWithResult(_0x5c81ca,0xc9))[_0x716a('0x46')](handleError(_0x5c81ca,null));};exports['update']=function(_0x3360e2,_0x5c1e25){if(_0x3360e2[_0x716a('0x4b')]['id']){delete _0x3360e2['body']['id'];}return db['DeskField'][_0x716a('0x49')]({'where':{'id':_0x3360e2['params']['id']}})['then'](handleEntityNotFound(_0x5c1e25,null))[_0x716a('0x27')](saveUpdates(_0x3360e2[_0x716a('0x4b')],null))[_0x716a('0x27')](respondWithResult(_0x5c1e25,null))[_0x716a('0x46')](handleError(_0x5c1e25,null));};exports[_0x716a('0x28')]=function(_0x2023f9,_0x56b27a){return db[_0x716a('0x2e')][_0x716a('0x49')]({'where':{'id':_0x2023f9[_0x716a('0x47')]['id']}})[_0x716a('0x27')](handleEntityNotFound(_0x56b27a,null))[_0x716a('0x27')](removeEntity(_0x56b27a,null))[_0x716a('0x46')](handleError(_0x56b27a,null));};
\ No newline at end of file
+var _0xcca7=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','index','DeskField','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','catch','show','params','options','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x17f324,_0x3df025){var _0xc5295=function(_0x44e59a){while(--_0x44e59a){_0x17f324['push'](_0x17f324['shift']());}};_0xc5295(++_0x3df025);}(_0xcca7,0x15b));var _0x7cca=function(_0x181c09,_0x1abf25){_0x181c09=_0x181c09-0x0;var _0x20473e=_0xcca7[_0x181c09];return _0x20473e;};'use strict';var emlformat=require(_0x7cca('0x0'));var rimraf=require(_0x7cca('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7cca('0x2'));var rp=require(_0x7cca('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x7cca('0x4'));var util=require(_0x7cca('0x5'));var path=require(_0x7cca('0x6'));var sox=require('sox');var csv=require(_0x7cca('0x7'));var ejs=require(_0x7cca('0x8'));var fs=require('fs');var fs_extra=require(_0x7cca('0x9'));var _=require(_0x7cca('0xa'));var squel=require(_0x7cca('0xb'));var crypto=require(_0x7cca('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x7cca('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7cca('0xd'));var qs=require(_0x7cca('0xe'));var as=require(_0x7cca('0xf'));var hardwareService=require(_0x7cca('0x10'));var logger=require(_0x7cca('0x11'))(_0x7cca('0x12'));var utils=require(_0x7cca('0x13'));var config=require(_0x7cca('0x14'));var licenseUtil=require(_0x7cca('0x15'));var db=require(_0x7cca('0x16'))['db'];function respondWithStatusCode(_0x2ed119,_0x34ab21){_0x34ab21=_0x34ab21||0xcc;return function(_0x509127){if(_0x509127){return _0x2ed119['sendStatus'](_0x34ab21);}return _0x2ed119[_0x7cca('0x17')](_0x34ab21)[_0x7cca('0x18')]();};}function respondWithResult(_0xdc357a,_0x3f86b9){_0x3f86b9=_0x3f86b9||0xc8;return function(_0x7cd436){if(_0x7cd436){return _0xdc357a[_0x7cca('0x17')](_0x3f86b9)['json'](_0x7cd436);}};}function respondWithFilteredResult(_0x53c5b3,_0x5d40e8){return function(_0x332b51){if(_0x332b51){var _0xb76fc3=typeof _0x5d40e8[_0x7cca('0x19')]===_0x7cca('0x1a')&&typeof _0x5d40e8[_0x7cca('0x1b')]===_0x7cca('0x1a');var _0x34fc4a=_0x332b51[_0x7cca('0x1c')];var _0x3cb2fb=_0xb76fc3?0x0:_0x5d40e8[_0x7cca('0x19')];var _0x51d2b0=_0xb76fc3?_0x332b51['count']:_0x5d40e8['offset']+_0x5d40e8[_0x7cca('0x1b')];var _0x443cd7;if(_0x51d2b0>=_0x34fc4a){_0x51d2b0=_0x34fc4a;_0x443cd7=0xc8;}else{_0x443cd7=0xce;}_0x53c5b3['status'](_0x443cd7);return _0x53c5b3[_0x7cca('0x1d')](_0x7cca('0x1e'),_0x3cb2fb+'-'+_0x51d2b0+'/'+_0x34fc4a)['json'](_0x332b51);}return null;};}function patchUpdates(_0x489360){return function(_0x3cc2bc){try{jsonpatch[_0x7cca('0x1f')](_0x3cc2bc,_0x489360,!![]);}catch(_0x22fa12){return BPromise[_0x7cca('0x20')](_0x22fa12);}return _0x3cc2bc[_0x7cca('0x21')]();};}function saveUpdates(_0x2f1910,_0x5b5363){return function(_0x51e12c){if(_0x51e12c){return _0x51e12c[_0x7cca('0x22')](_0x2f1910)['then'](function(_0x121fe8){return _0x121fe8;});}return null;};}function removeEntity(_0x40338c,_0x4e17e8){return function(_0x27d5fb){if(_0x27d5fb){return _0x27d5fb[_0x7cca('0x23')]()[_0x7cca('0x24')](function(){_0x40338c['status'](0xcc)[_0x7cca('0x18')]();});}};}function handleEntityNotFound(_0x20f031,_0xaef07f){return function(_0x1c1e2c){if(!_0x1c1e2c){_0x20f031['sendStatus'](0x194);}return _0x1c1e2c;};}function handleError(_0x11a140,_0x2a2b8e){_0x2a2b8e=_0x2a2b8e||0x1f4;return function(_0xe1974){logger[_0x7cca('0x25')](_0xe1974[_0x7cca('0x26')]);if(_0xe1974[_0x7cca('0x27')]){delete _0xe1974['name'];}_0x11a140[_0x7cca('0x17')](_0x2a2b8e)['send'](_0xe1974);};}exports[_0x7cca('0x28')]=function(_0x34ce82,_0x1bb757){var _0x43810c={},_0x1d9ccf={},_0x5f398b={'count':0x0,'rows':[]};var _0x327cff=_['map'](db[_0x7cca('0x29')][_0x7cca('0x2a')],function(_0x2d044f){return{'name':_0x2d044f['fieldName'],'type':_0x2d044f[_0x7cca('0x2b')][_0x7cca('0x2c')]};});_0x1d9ccf[_0x7cca('0x2d')]=_[_0x7cca('0x2e')](_0x327cff,_0x7cca('0x27'));_0x1d9ccf[_0x7cca('0x2f')]=_[_0x7cca('0x30')](_0x34ce82[_0x7cca('0x2f')]);_0x1d9ccf[_0x7cca('0x31')]=_[_0x7cca('0x32')](_0x1d9ccf['model'],_0x1d9ccf['query']);_0x43810c[_0x7cca('0x33')]=_[_0x7cca('0x32')](_0x1d9ccf['model'],qs[_0x7cca('0x34')](_0x34ce82['query']['fields']));_0x43810c[_0x7cca('0x33')]=_0x43810c[_0x7cca('0x33')][_0x7cca('0x35')]?_0x43810c[_0x7cca('0x33')]:_0x1d9ccf[_0x7cca('0x2d')];if(!_0x34ce82[_0x7cca('0x2f')][_0x7cca('0x36')](_0x7cca('0x37'))){_0x43810c[_0x7cca('0x1b')]=qs[_0x7cca('0x1b')](_0x34ce82[_0x7cca('0x2f')][_0x7cca('0x1b')]);_0x43810c['offset']=qs[_0x7cca('0x19')](_0x34ce82[_0x7cca('0x2f')][_0x7cca('0x19')]);}_0x43810c[_0x7cca('0x38')]=qs['sort'](_0x34ce82['query'][_0x7cca('0x39')]);_0x43810c[_0x7cca('0x3a')]=qs[_0x7cca('0x31')](_[_0x7cca('0x3b')](_0x34ce82[_0x7cca('0x2f')],_0x1d9ccf[_0x7cca('0x31')]),_0x327cff);if(_0x34ce82[_0x7cca('0x2f')][_0x7cca('0x3c')]){_0x43810c[_0x7cca('0x3a')]=_['merge'](_0x43810c[_0x7cca('0x3a')],{'$or':_[_0x7cca('0x2e')](_0x327cff,function(_0x217e79){if(_0x217e79[_0x7cca('0x2b')]!==_0x7cca('0x3d')){var _0x3c0f9a={};_0x3c0f9a[_0x217e79[_0x7cca('0x27')]]={'$like':'%'+_0x34ce82[_0x7cca('0x2f')]['filter']+'%'};return _0x3c0f9a;}})});}_0x43810c=_[_0x7cca('0x3e')]({},_0x43810c,_0x34ce82['options']);var _0x21a918={'where':_0x43810c[_0x7cca('0x3a')]};return db[_0x7cca('0x29')][_0x7cca('0x1c')](_0x21a918)[_0x7cca('0x24')](function(_0x421454){_0x5f398b['count']=_0x421454;if(_0x34ce82['query'][_0x7cca('0x3f')]){_0x43810c[_0x7cca('0x40')]=[{'all':!![]}];}return db['DeskField'][_0x7cca('0x41')](_0x43810c);})[_0x7cca('0x24')](function(_0x26025e){_0x5f398b['rows']=_0x26025e;return _0x5f398b;})['then'](respondWithFilteredResult(_0x1bb757,_0x43810c))[_0x7cca('0x42')](handleError(_0x1bb757,null));};exports[_0x7cca('0x43')]=function(_0x587f8a,_0x5d228a){var _0xcff9f={'raw':!![],'where':{'id':_0x587f8a[_0x7cca('0x44')]['id']}},_0x29eb45={};_0x29eb45[_0x7cca('0x2d')]=_[_0x7cca('0x30')](db[_0x7cca('0x29')][_0x7cca('0x2a')]);_0x29eb45[_0x7cca('0x2f')]=_[_0x7cca('0x30')](_0x587f8a[_0x7cca('0x2f')]);_0x29eb45[_0x7cca('0x31')]=_['intersection'](_0x29eb45[_0x7cca('0x2d')],_0x29eb45[_0x7cca('0x2f')]);_0xcff9f['attributes']=_[_0x7cca('0x32')](_0x29eb45[_0x7cca('0x2d')],qs[_0x7cca('0x34')](_0x587f8a['query'][_0x7cca('0x34')]));_0xcff9f[_0x7cca('0x33')]=_0xcff9f[_0x7cca('0x33')]['length']?_0xcff9f[_0x7cca('0x33')]:_0x29eb45['model'];if(_0x587f8a['query'][_0x7cca('0x3f')]){_0xcff9f[_0x7cca('0x40')]=[{'all':!![]}];}_0xcff9f=_[_0x7cca('0x3e')]({},_0xcff9f,_0x587f8a[_0x7cca('0x45')]);return db[_0x7cca('0x29')][_0x7cca('0x46')](_0xcff9f)[_0x7cca('0x24')](handleEntityNotFound(_0x5d228a,null))[_0x7cca('0x24')](respondWithResult(_0x5d228a,null))[_0x7cca('0x42')](handleError(_0x5d228a,null));};exports[_0x7cca('0x47')]=function(_0x162144,_0x406fc1){return db[_0x7cca('0x29')][_0x7cca('0x47')](_0x162144['body'],{})[_0x7cca('0x24')](respondWithResult(_0x406fc1,0xc9))[_0x7cca('0x42')](handleError(_0x406fc1,null));};exports['update']=function(_0xf8674d,_0x35efb0){if(_0xf8674d['body']['id']){delete _0xf8674d['body']['id'];}return db[_0x7cca('0x29')][_0x7cca('0x46')]({'where':{'id':_0xf8674d[_0x7cca('0x44')]['id']}})[_0x7cca('0x24')](handleEntityNotFound(_0x35efb0,null))[_0x7cca('0x24')](saveUpdates(_0xf8674d[_0x7cca('0x48')],null))[_0x7cca('0x24')](respondWithResult(_0x35efb0,null))[_0x7cca('0x42')](handleError(_0x35efb0,null));};exports[_0x7cca('0x23')]=function(_0xc9336e,_0x4ddf52){return db[_0x7cca('0x29')][_0x7cca('0x46')]({'where':{'id':_0xc9336e[_0x7cca('0x44')]['id']}})[_0x7cca('0x24')](handleEntityNotFound(_0x4ddf52,null))['then'](removeEntity(_0x4ddf52,null))['catch'](handleError(_0x4ddf52,null));};
\ No newline at end of file
index a5f197c..7b42cfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0605=['util','../../config/logger','api','moment','request-promise','./intDeskField.attributes','DeskField','desk_unique_index','idField','FieldId','lodash'];(function(_0x92f772,_0x4eee07){var _0x437a18=function(_0xd41225){while(--_0xd41225){_0x92f772['push'](_0x92f772['shift']());}};_0x437a18(++_0x4eee07);}(_0x0605,0x1d8));var _0x5060=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0x0605[_0x487b0c];return _0x1adbdc;};'use strict';var _=require(_0x5060('0x0'));var util=require(_0x5060('0x1'));var logger=require(_0x5060('0x2'))(_0x5060('0x3'));var moment=require(_0x5060('0x4'));var BPromise=require('bluebird');var rp=require(_0x5060('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x5060('0x6'));module['exports']=function(_0x444d60,_0x41d946){return _0x444d60['define'](_0x5060('0x7'),attributes,{'tableName':'int_desk_fields','paranoid':![],'indexes':[{'name':_0x5060('0x8'),'fields':[_0x5060('0x9'),_0x5060('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3d38=['desk_unique_index','FieldId','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intDeskField.attributes','exports','define','DeskField'];(function(_0x4c0c5f,_0x4518a5){var _0x435960=function(_0x6793f2){while(--_0x6793f2){_0x4c0c5f['push'](_0x4c0c5f['shift']());}};_0x435960(++_0x4518a5);}(_0x3d38,0x1a6));var _0x83d3=function(_0x432fca,_0xb0b1b5){_0x432fca=_0x432fca-0x0;var _0x3adba4=_0x3d38[_0x432fca];return _0x3adba4;};'use strict';var _=require('lodash');var util=require(_0x83d3('0x0'));var logger=require(_0x83d3('0x1'))(_0x83d3('0x2'));var moment=require(_0x83d3('0x3'));var BPromise=require(_0x83d3('0x4'));var rp=require(_0x83d3('0x5'));var fs=require('fs');var path=require(_0x83d3('0x6'));var rimraf=require(_0x83d3('0x7'));var config=require('../../config/environment');var attributes=require(_0x83d3('0x8'));module[_0x83d3('0x9')]=function(_0x5c29ca,_0x4c0e33){return _0x5c29ca[_0x83d3('0xa')](_0x83d3('0xb'),attributes,{'tableName':'int_desk_fields','paranoid':![],'indexes':[{'name':_0x83d3('0xc'),'fields':['idField',_0x83d3('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 15853fe..6d24d54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43df=['request','then','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x2aaeac,_0x30bda5){var _0x757741=function(_0x5893d2){while(--_0x5893d2){_0x2aaeac['push'](_0x2aaeac['shift']());}};_0x757741(++_0x30bda5);}(_0x43df,0xe5));var _0xf43d=function(_0x4b487d,_0x5d066e){_0x4b487d=_0x4b487d-0x0;var _0x13a2d3=_0x43df[_0x4b487d];return _0x13a2d3;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf43d('0x0'));var BPromise=require(_0xf43d('0x1'));var rs=require(_0xf43d('0x2'));var fs=require('fs');var Redis=require(_0xf43d('0x3'));var db=require(_0xf43d('0x4'))['db'];var utils=require(_0xf43d('0x5'));var logger=require(_0xf43d('0x6'))(_0xf43d('0x7'));var config=require(_0xf43d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xf43d('0x9')][_0xf43d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5cf606,_0x191886,_0x2ac062){return new BPromise(function(_0x2200b4,_0x18a61a){return client[_0xf43d('0xb')](_0x5cf606,_0x2ac062)[_0xf43d('0xc')](function(_0x2d4d44){logger[_0xf43d('0xd')](_0xf43d('0xe'),_0x191886,_0xf43d('0xf'));logger[_0xf43d('0x10')](_0xf43d('0x11'),_0x191886,_0xf43d('0xf'),JSON[_0xf43d('0x12')](_0x2d4d44));if(_0x2d4d44[_0xf43d('0x13')]){if(_0x2d4d44[_0xf43d('0x13')][_0xf43d('0x14')]===0x1f4){logger[_0xf43d('0x13')]('DeskField,\x20%s,\x20%s',_0x191886,_0x2d4d44['error'][_0xf43d('0x15')]);return _0x18a61a(_0x2d4d44[_0xf43d('0x13')][_0xf43d('0x15')]);}logger[_0xf43d('0x13')](_0xf43d('0xe'),_0x191886,_0x2d4d44[_0xf43d('0x13')][_0xf43d('0x15')]);return _0x2200b4(_0x2d4d44[_0xf43d('0x13')]['message']);}else{logger[_0xf43d('0xd')]('DeskField,\x20%s,\x20%s',_0x191886,_0xf43d('0xf'));_0x2200b4(_0x2d4d44[_0xf43d('0x16')]['message']);}})[_0xf43d('0x17')](function(_0x1656ce){logger['error'](_0xf43d('0xe'),_0x191886,_0x1656ce);_0x18a61a(_0x1656ce);});});}
\ No newline at end of file
+var _0x8994=['catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','then','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result'];(function(_0x1dd3ba,_0x264100){var _0x3acc9d=function(_0xd681c){while(--_0xd681c){_0x1dd3ba['push'](_0x1dd3ba['shift']());}};_0x3acc9d(++_0x264100);}(_0x8994,0x94));var _0x4899=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0x8994[_0x13b02f];return _0x12e9a6;};'use strict';var _=require(_0x4899('0x0'));var util=require('util');var moment=require(_0x4899('0x1'));var BPromise=require(_0x4899('0x2'));var rs=require(_0x4899('0x3'));var fs=require('fs');var Redis=require(_0x4899('0x4'));var db=require(_0x4899('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4899('0x6'))(_0x4899('0x7'));var config=require('../../config/environment');var jayson=require(_0x4899('0x8'));var client=jayson[_0x4899('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x383ad9,_0x337e5b,_0x5318ae){return new BPromise(function(_0x503acd,_0x5d8347){return client[_0x4899('0xa')](_0x383ad9,_0x5318ae)[_0x4899('0xb')](function(_0x5ea14a){logger[_0x4899('0xc')](_0x4899('0xd'),_0x337e5b,_0x4899('0xe'));logger[_0x4899('0xf')]('DeskField,\x20%s,\x20%s,\x20%s',_0x337e5b,_0x4899('0xe'),JSON[_0x4899('0x10')](_0x5ea14a));if(_0x5ea14a[_0x4899('0x11')]){if(_0x5ea14a[_0x4899('0x11')]['code']===0x1f4){logger[_0x4899('0x11')](_0x4899('0xd'),_0x337e5b,_0x5ea14a[_0x4899('0x11')][_0x4899('0x12')]);return _0x5d8347(_0x5ea14a[_0x4899('0x11')][_0x4899('0x12')]);}logger[_0x4899('0x11')](_0x4899('0xd'),_0x337e5b,_0x5ea14a[_0x4899('0x11')][_0x4899('0x12')]);return _0x503acd(_0x5ea14a[_0x4899('0x11')][_0x4899('0x12')]);}else{logger[_0x4899('0xc')]('DeskField,\x20%s,\x20%s',_0x337e5b,'request\x20sent');_0x503acd(_0x5ea14a[_0x4899('0x13')][_0x4899('0x12')]);}})[_0x4899('0x14')](function(_0x421c52){logger['error'](_0x4899('0xd'),_0x337e5b,_0x421c52);_0x5d8347(_0x421c52);});});}
\ No newline at end of file
index 123f00d..c59e23e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x707f=['getFields','post','create','/:id/configurations','addConfiguration','put','delete','destroy','exports','multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get','isAuthenticated','/:id','show'];(function(_0x14d966,_0x31bfbd){var _0x46ef0c=function(_0x248b78){while(--_0x248b78){_0x14d966['push'](_0x14d966['shift']());}};_0x46ef0c(++_0x31bfbd);}(_0x707f,0x87));var _0xf707=function(_0x223ebb,_0x30c9e0){_0x223ebb=_0x223ebb-0x0;var _0x943971=_0x707f[_0x223ebb];return _0x943971;};'use strict';var multer=require(_0xf707('0x0'));var util=require(_0xf707('0x1'));var path=require(_0xf707('0x2'));var timeout=require(_0xf707('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xf707('0x4'));var interaction=require(_0xf707('0x5'));var config=require(_0xf707('0x6'));var controller=require(_0xf707('0x7'));router[_0xf707('0x8')]('/',auth[_0xf707('0x9')](),controller['index']);router[_0xf707('0x8')](_0xf707('0xa'),auth[_0xf707('0x9')](),controller[_0xf707('0xb')]);router[_0xf707('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller['getConfigurations']);router[_0xf707('0x8')]('/:id/fields',auth[_0xf707('0x9')](),controller[_0xf707('0xc')]);router[_0xf707('0xd')]('/',auth[_0xf707('0x9')](),controller[_0xf707('0xe')]);router[_0xf707('0xd')](_0xf707('0xf'),auth[_0xf707('0x9')](),controller[_0xf707('0x10')]);router[_0xf707('0x11')](_0xf707('0xa'),auth[_0xf707('0x9')](),controller['update']);router[_0xf707('0x12')]('/:id',auth[_0xf707('0x9')](),controller[_0xf707('0x13')]);module[_0xf707('0x14')]=router;
\ No newline at end of file
+var _0xf5a6=['./intDynamics365Account.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','/:id/fields','post','addConfiguration','put','update','destroy','exports','multer','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service'];(function(_0x251d9c,_0x580977){var _0x16ae64=function(_0x4d3b53){while(--_0x4d3b53){_0x251d9c['push'](_0x251d9c['shift']());}};_0x16ae64(++_0x580977);}(_0xf5a6,0x14e));var _0x6f5a=function(_0x407132,_0x349b53){_0x407132=_0x407132-0x0;var _0x1dd167=_0xf5a6[_0x407132];return _0x1dd167;};'use strict';var multer=require(_0x6f5a('0x0'));var util=require('util');var path=require(_0x6f5a('0x1'));var timeout=require(_0x6f5a('0x2'));var express=require(_0x6f5a('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x6f5a('0x4'));var interaction=require(_0x6f5a('0x5'));var config=require('../../config/environment');var controller=require(_0x6f5a('0x6'));router[_0x6f5a('0x7')]('/',auth[_0x6f5a('0x8')](),controller[_0x6f5a('0x9')]);router[_0x6f5a('0x7')](_0x6f5a('0xa'),auth[_0x6f5a('0x8')](),controller[_0x6f5a('0xb')]);router[_0x6f5a('0x7')](_0x6f5a('0xc'),auth[_0x6f5a('0x8')](),controller['getConfigurations']);router[_0x6f5a('0x7')](_0x6f5a('0xd'),auth[_0x6f5a('0x8')](),controller['getFields']);router[_0x6f5a('0xe')]('/',auth[_0x6f5a('0x8')](),controller['create']);router[_0x6f5a('0xe')](_0x6f5a('0xc'),auth['isAuthenticated'](),controller[_0x6f5a('0xf')]);router[_0x6f5a('0x10')](_0x6f5a('0xa'),auth['isAuthenticated'](),controller[_0x6f5a('0x11')]);router['delete']('/:id',auth[_0x6f5a('0x8')](),controller[_0x6f5a('0x12')]);module[_0x6f5a('0x13')]=router;
\ No newline at end of file
index 28454df..9ee3599 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe34c=['STRING','sequelize','exports'];(function(_0x3d2717,_0x55a57b){var _0x3a54ef=function(_0xff28dd){while(--_0xff28dd){_0x3d2717['push'](_0x3d2717['shift']());}};_0x3a54ef(++_0x55a57b);}(_0xe34c,0x1cc));var _0xce34=function(_0x573f08,_0x12a271){_0x573f08=_0x573f08-0x0;var _0xca7986=_0xe34c[_0x573f08];return _0xca7986;};'use strict';var Sequelize=require(_0xce34('0x0'));module[_0xce34('0x1')]={'name':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xce34('0x2')]},'password':{'type':Sequelize[_0xce34('0x2')]},'remoteUri':{'type':Sequelize[_0xce34('0x2')]},'tenantId':{'type':Sequelize[_0xce34('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0xce34('0x2')]},'serverUrl':{'type':Sequelize[_0xce34('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4972=['exports','STRING'];(function(_0x5aa6a9,_0x3ae14c){var _0x119ce5=function(_0x4a97ef){while(--_0x4a97ef){_0x5aa6a9['push'](_0x5aa6a9['shift']());}};_0x119ce5(++_0x3ae14c);}(_0x4972,0x130));var _0x2497=function(_0x8a4811,_0x581ead){_0x8a4811=_0x8a4811-0x0;var _0x376e28=_0x4972[_0x8a4811];return _0x376e28;};'use strict';var Sequelize=require('sequelize');module[_0x2497('0x0')]={'name':{'type':Sequelize[_0x2497('0x1')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x2497('0x1')]},'remoteUri':{'type':Sequelize[_0x2497('0x1')]},'tenantId':{'type':Sequelize[_0x2497('0x1')]},'clientId':{'type':Sequelize[_0x2497('0x1')]},'clientSecret':{'type':Sequelize[_0x2497('0x1')]},'serverUrl':{'type':Sequelize[_0x2497('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x2497('0x1')]}};
\ No newline at end of file
index 75d248f..381857a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x238f=['then','destroy','error','stack','name','send','index','map','Dynamics365Account','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','merge','where','options','includeAll','show','params','rawAttributes','include','find','catch','create','body','getConfigurations','findOne','nolimit','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','Subjects','Dynamics365Field','getFields','ticketType','incident','title','customerid','ownerid','caseorigincode','directioncode','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidyominame','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdonbehalfbyname','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','overriddencreatedon','owneridname','owneridtype','owneridyominame','parentcaseidname','prioritycodename','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','socialprofileidname','statuscode','subjectidname','ticketnumber','traversedpath','utcconversiontimezonecode','versionnumber','concat','username','remoteUri','tenantId','clientId','clientSecret','slice','substring','lastIndexOf','format','%s/api/data/v9.0/','https://login.microsoftonline.com/','/oauth2/token','password','access_token','GET','Bearer\x20','4.0','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','LogicalName','@odata.type','PicklistAttributeMetadata','push','all','forEach','BooleanAttributeMetadata','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','statusCode','test','Wrong\x20credentials',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Label','Value','DisplayName','UserLocalizedLabel','OptionSet','TrueOption','true','FalseOption',')/Microsoft.Dynamics.CRM.','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','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','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update'];(function(_0x33b31e,_0x37d7ab){var _0x39d4d9=function(_0x250a3e){while(--_0x250a3e){_0x33b31e['push'](_0x33b31e['shift']());}};_0x39d4d9(++_0x37d7ab);}(_0x238f,0xa5));var _0xf238=function(_0x3ffa96,_0x553b48){_0x3ffa96=_0x3ffa96-0x0;var _0x18534c=_0x238f[_0x3ffa96];return _0x18534c;};'use strict';var emlformat=require(_0xf238('0x0'));var rimraf=require(_0xf238('0x1'));var zipdir=require(_0xf238('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf238('0x3'));var moment=require(_0xf238('0x4'));var BPromise=require(_0xf238('0x5'));var Mustache=require(_0xf238('0x6'));var util=require(_0xf238('0x7'));var path=require(_0xf238('0x8'));var sox=require('sox');var csv=require(_0xf238('0x9'));var ejs=require(_0xf238('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xf238('0xb'));var crypto=require('crypto');var jsforce=require(_0xf238('0xc'));var deskjs=require(_0xf238('0xd'));var toCsv=require(_0xf238('0x9'));var querystring=require(_0xf238('0xe'));var Papa=require('papaparse');var Redis=require(_0xf238('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xf238('0x10'));var as=require(_0xf238('0x11'));var hardwareService=require(_0xf238('0x12'));var logger=require(_0xf238('0x13'))(_0xf238('0x14'));var utils=require(_0xf238('0x15'));var config=require(_0xf238('0x16'));var licenseUtil=require(_0xf238('0x17'));var db=require('../../mysqldb')['db'];var integrations=require(_0xf238('0x18'));function respondWithStatusCode(_0x2235d4,_0x2a1df3){_0x2a1df3=_0x2a1df3||0xcc;return function(_0x5b3de3){if(_0x5b3de3){return _0x2235d4[_0xf238('0x19')](_0x2a1df3);}return _0x2235d4[_0xf238('0x1a')](_0x2a1df3)[_0xf238('0x1b')]();};}function respondWithResult(_0xc5b447,_0x14d20c){_0x14d20c=_0x14d20c||0xc8;return function(_0x57d638){if(_0x57d638){return _0xc5b447[_0xf238('0x1a')](_0x14d20c)['json'](_0x57d638);}};}function respondWithFilteredResult(_0x5451f6,_0x26e66a){return function(_0x3b7eeb){if(_0x3b7eeb){var _0x8b3218=typeof _0x26e66a[_0xf238('0x1c')]===_0xf238('0x1d')&&typeof _0x26e66a[_0xf238('0x1e')]==='undefined';var _0xfae73d=_0x3b7eeb[_0xf238('0x1f')];var _0x42f740=_0x8b3218?0x0:_0x26e66a[_0xf238('0x1c')];var _0x4d913a=_0x8b3218?_0x3b7eeb[_0xf238('0x1f')]:_0x26e66a[_0xf238('0x1c')]+_0x26e66a[_0xf238('0x1e')];var _0x3f2c91;if(_0x4d913a>=_0xfae73d){_0x4d913a=_0xfae73d;_0x3f2c91=0xc8;}else{_0x3f2c91=0xce;}_0x5451f6[_0xf238('0x1a')](_0x3f2c91);return _0x5451f6[_0xf238('0x20')](_0xf238('0x21'),_0x42f740+'-'+_0x4d913a+'/'+_0xfae73d)[_0xf238('0x22')](_0x3b7eeb);}return null;};}function patchUpdates(_0x37ca09){return function(_0x289cca){try{jsonpatch[_0xf238('0x23')](_0x289cca,_0x37ca09,!![]);}catch(_0x46600f){return BPromise[_0xf238('0x24')](_0x46600f);}return _0x289cca[_0xf238('0x25')]();};}function saveUpdates(_0x37553d,_0x136d2d){return function(_0x222a50){if(_0x222a50){return _0x222a50[_0xf238('0x26')](_0x37553d)[_0xf238('0x27')](function(_0x2b1ed7){return _0x2b1ed7;});}return null;};}function removeEntity(_0xbb1c0c,_0xd93105){return function(_0x5c0070){if(_0x5c0070){return _0x5c0070[_0xf238('0x28')]()[_0xf238('0x27')](function(){_0xbb1c0c[_0xf238('0x1a')](0xcc)[_0xf238('0x1b')]();});}};}function handleEntityNotFound(_0xf26e92,_0x57ef55){return function(_0x1b12fd){if(!_0x1b12fd){_0xf26e92[_0xf238('0x19')](0x194);}return _0x1b12fd;};}function handleError(_0x17c8c7,_0x5c6952){_0x5c6952=_0x5c6952||0x1f4;return function(_0x98bc8d){logger[_0xf238('0x29')](_0x98bc8d[_0xf238('0x2a')]);if(_0x98bc8d[_0xf238('0x2b')]){delete _0x98bc8d[_0xf238('0x2b')];}_0x17c8c7[_0xf238('0x1a')](_0x5c6952)[_0xf238('0x2c')](_0x98bc8d);};}exports[_0xf238('0x2d')]=function(_0x414538,_0x3b3675){var _0x3738a9={},_0x5eacb8={},_0x506d22={'count':0x0,'rows':[]};var _0x5a1132=_[_0xf238('0x2e')](db[_0xf238('0x2f')]['rawAttributes'],function(_0x597a4b){return{'name':_0x597a4b['fieldName'],'type':_0x597a4b[_0xf238('0x30')][_0xf238('0x31')]};});_0x5eacb8[_0xf238('0x32')]=_[_0xf238('0x2e')](_0x5a1132,'name');_0x5eacb8[_0xf238('0x33')]=_[_0xf238('0x34')](_0x414538[_0xf238('0x33')]);_0x5eacb8[_0xf238('0x35')]=_[_0xf238('0x36')](_0x5eacb8[_0xf238('0x32')],_0x5eacb8['query']);_0x3738a9['attributes']=_[_0xf238('0x36')](_0x5eacb8[_0xf238('0x32')],qs[_0xf238('0x37')](_0x414538[_0xf238('0x33')][_0xf238('0x37')]));_0x3738a9[_0xf238('0x38')]=_0x3738a9['attributes'][_0xf238('0x39')]?_0x3738a9[_0xf238('0x38')]:_0x5eacb8['model'];if(!_0x414538[_0xf238('0x33')][_0xf238('0x3a')]('nolimit')){_0x3738a9[_0xf238('0x1e')]=qs[_0xf238('0x1e')](_0x414538[_0xf238('0x33')]['limit']);_0x3738a9[_0xf238('0x1c')]=qs[_0xf238('0x1c')](_0x414538[_0xf238('0x33')][_0xf238('0x1c')]);}_0x3738a9[_0xf238('0x3b')]=qs[_0xf238('0x3c')](_0x414538[_0xf238('0x33')][_0xf238('0x3c')]);_0x3738a9['where']=qs['filters'](_[_0xf238('0x3d')](_0x414538[_0xf238('0x33')],_0x5eacb8[_0xf238('0x35')]),_0x5a1132);if(_0x414538['query'][_0xf238('0x3e')]){_0x3738a9['where']=_[_0xf238('0x3f')](_0x3738a9[_0xf238('0x40')],{'$or':_['map'](_0x5a1132,function(_0x3420e7){if(_0x3420e7[_0xf238('0x30')]!=='VIRTUAL'){var _0x460688={};_0x460688[_0x3420e7['name']]={'$like':'%'+_0x414538['query']['filter']+'%'};return _0x460688;}})});}_0x3738a9=_['merge']({},_0x3738a9,_0x414538[_0xf238('0x41')]);var _0x35535f={'where':_0x3738a9[_0xf238('0x40')]};return db[_0xf238('0x2f')][_0xf238('0x1f')](_0x35535f)['then'](function(_0x518de0){_0x506d22['count']=_0x518de0;if(_0x414538[_0xf238('0x33')][_0xf238('0x42')]){_0x3738a9['include']=[{'all':!![]}];}return db['Dynamics365Account']['findAll'](_0x3738a9);})[_0xf238('0x27')](function(_0x256d2e){_0x506d22['rows']=_0x256d2e;return _0x506d22;})[_0xf238('0x27')](respondWithFilteredResult(_0x3b3675,_0x3738a9))['catch'](handleError(_0x3b3675,null));};exports[_0xf238('0x43')]=function(_0x28c8fd,_0x5cf728){var _0x3f1fec={'raw':![],'where':{'id':_0x28c8fd[_0xf238('0x44')]['id']}},_0x13ec3b={};_0x13ec3b[_0xf238('0x32')]=_[_0xf238('0x34')](db[_0xf238('0x2f')][_0xf238('0x45')]);_0x13ec3b[_0xf238('0x33')]=_[_0xf238('0x34')](_0x28c8fd[_0xf238('0x33')]);_0x13ec3b[_0xf238('0x35')]=_[_0xf238('0x36')](_0x13ec3b[_0xf238('0x32')],_0x13ec3b[_0xf238('0x33')]);_0x3f1fec[_0xf238('0x38')]=_[_0xf238('0x36')](_0x13ec3b['model'],qs[_0xf238('0x37')](_0x28c8fd[_0xf238('0x33')][_0xf238('0x37')]));_0x3f1fec[_0xf238('0x38')]=_0x3f1fec[_0xf238('0x38')][_0xf238('0x39')]?_0x3f1fec[_0xf238('0x38')]:_0x13ec3b['model'];if(_0x28c8fd[_0xf238('0x33')]['includeAll']){_0x3f1fec[_0xf238('0x46')]=[{'all':!![]}];}_0x3f1fec=_['merge']({},_0x3f1fec,_0x28c8fd[_0xf238('0x41')]);return db[_0xf238('0x2f')][_0xf238('0x47')](_0x3f1fec)[_0xf238('0x27')](handleEntityNotFound(_0x5cf728,null))[_0xf238('0x27')](respondWithResult(_0x5cf728,null))[_0xf238('0x48')](handleError(_0x5cf728,null));};exports[_0xf238('0x49')]=function(_0x497b87,_0x6a99d5){return db[_0xf238('0x2f')][_0xf238('0x49')](_0x497b87[_0xf238('0x4a')],{})['then'](respondWithResult(_0x6a99d5,0xc9))[_0xf238('0x48')](handleError(_0x6a99d5,null));};exports[_0xf238('0x26')]=function(_0x2ee461,_0x2180bd){if(_0x2ee461[_0xf238('0x4a')]['id']){delete _0x2ee461['body']['id'];}return db[_0xf238('0x2f')][_0xf238('0x47')]({'where':{'id':_0x2ee461[_0xf238('0x44')]['id']}})[_0xf238('0x27')](handleEntityNotFound(_0x2180bd,null))[_0xf238('0x27')](saveUpdates(_0x2ee461[_0xf238('0x4a')],null))[_0xf238('0x27')](respondWithResult(_0x2180bd,null))[_0xf238('0x48')](handleError(_0x2180bd,null));};exports[_0xf238('0x28')]=function(_0x195b00,_0x5a4cf0){return db[_0xf238('0x2f')][_0xf238('0x47')]({'where':{'id':_0x195b00[_0xf238('0x44')]['id']}})['then'](handleEntityNotFound(_0x5a4cf0,null))[_0xf238('0x27')](removeEntity(_0x5a4cf0,null))[_0xf238('0x48')](handleError(_0x5a4cf0,null));};exports[_0xf238('0x4b')]=function(_0x37452c,_0x3fb56d,_0x1d9393){var _0x438c95={};var _0x941067={};var _0x290d70;var _0x112346;return db[_0xf238('0x2f')][_0xf238('0x4c')]({'where':{'id':_0x37452c[_0xf238('0x44')]['id']}})[_0xf238('0x27')](handleEntityNotFound(_0x3fb56d,null))[_0xf238('0x27')](function(_0x308375){if(_0x308375){_0x290d70=_0x308375;_0x941067['model']=_['keys'](db['Dynamics365Configuration']['rawAttributes']);_0x941067[_0xf238('0x33')]=_[_0xf238('0x34')](_0x37452c[_0xf238('0x33')]);_0x941067[_0xf238('0x35')]=_[_0xf238('0x36')](_0x941067[_0xf238('0x32')],_0x941067['query']);_0x438c95[_0xf238('0x38')]=_[_0xf238('0x36')](_0x941067['model'],qs[_0xf238('0x37')](_0x37452c[_0xf238('0x33')]['fields']));_0x438c95['attributes']=_0x438c95[_0xf238('0x38')][_0xf238('0x39')]?_0x438c95['attributes']:_0x941067['model'];_0x438c95[_0xf238('0x3b')]=qs[_0xf238('0x3c')](_0x37452c[_0xf238('0x33')][_0xf238('0x3c')]);_0x438c95[_0xf238('0x40')]=qs[_0xf238('0x35')](_[_0xf238('0x3d')](_0x37452c[_0xf238('0x33')],_0x941067['filters']));if(_0x37452c[_0xf238('0x33')]['filter']){_0x438c95[_0xf238('0x40')]=_['merge'](_0x438c95[_0xf238('0x40')],{'$or':_[_0xf238('0x2e')](_0x438c95[_0xf238('0x38')],function(_0x19fc28){var _0x327d3={};_0x327d3[_0x19fc28]={'$like':'%'+_0x37452c[_0xf238('0x33')][_0xf238('0x3e')]+'%'};return _0x327d3;})});}_0x438c95=_[_0xf238('0x3f')]({},_0x438c95,_0x37452c[_0xf238('0x41')]);return _0x290d70[_0xf238('0x4b')](_0x438c95);}})[_0xf238('0x27')](function(_0x186abc){if(_0x186abc){_0x112346=_0x186abc[_0xf238('0x39')];if(!_0x37452c['query']['hasOwnProperty'](_0xf238('0x4d'))){_0x438c95['limit']=qs['limit'](_0x37452c[_0xf238('0x33')]['limit']);_0x438c95[_0xf238('0x1c')]=qs[_0xf238('0x1c')](_0x37452c['query'][_0xf238('0x1c')]);}return _0x290d70[_0xf238('0x4b')](_0x438c95);}})[_0xf238('0x27')](function(_0x375516){if(_0x375516){return _0x375516?{'count':_0x112346,'rows':_0x375516}:null;}})['then'](respondWithResult(_0x3fb56d,null))[_0xf238('0x48')](handleError(_0x3fb56d,null));};exports[_0xf238('0x4e')]=function(_0x446ba9,_0x28c95e,_0x150f02){if(_0x446ba9[_0xf238('0x4a')]['id']){delete _0x446ba9[_0xf238('0x4a')]['id'];}return db['Dynamics365Account'][_0xf238('0x4c')]({'where':{'id':_0x446ba9[_0xf238('0x44')]['id']}})[_0xf238('0x27')](handleEntityNotFound(_0x28c95e,null))[_0xf238('0x27')](function(_0x22976f){if(_0x22976f){_0x446ba9[_0xf238('0x4a')][_0xf238('0x4f')]=_0x22976f['id'];_0x446ba9['body']['Subjects']=integrations[_0xf238('0x50')](_0x446ba9[_0xf238('0x4a')][_0xf238('0x51')],_0x446ba9['body'][_0xf238('0x30')]);_0x446ba9[_0xf238('0x4a')][_0xf238('0x52')]=integrations[_0xf238('0x53')](_0x446ba9[_0xf238('0x4a')][_0xf238('0x51')],_0x446ba9[_0xf238('0x4a')][_0xf238('0x30')]);return db['Dynamics365Configuration'][_0xf238('0x49')](_0x446ba9[_0xf238('0x4a')],{'include':[{'model':db['Dynamics365Field'],'as':_0xf238('0x54')},{'model':db[_0xf238('0x55')],'as':_0xf238('0x52')}]});}return null;})[_0xf238('0x27')](respondWithResult(_0x28c95e,null))[_0xf238('0x48')](handleError(_0x28c95e,null));};exports[_0xf238('0x56')]=function(_0x562be5,_0x228dc0,_0x36f204){var _0x2e9341=_0x562be5[_0xf238('0x33')][_0xf238('0x57')];var _0xb92df5=_0x2e9341===_0xf238('0x58')?'Incident':'PhoneCall';var _0x2f3116='';var _0x39eb37='';var _0xb3e18e='';var _0x591d09='';var _0x25b439='';var _0x582fc7='';var _0x523491='';var _0x5d71e6='';var _0x44a186=[_0xf238('0x59'),'description',_0xf238('0x5a'),_0xf238('0x5b'),_0xf238('0x5c'),'subject','phonenumber','regardingobjectid',_0xf238('0x5d'),'phonecall_activity_parties'];var _0x34fed3=[_0xf238('0x5e'),_0xf238('0x5f'),_0xf238('0x60'),_0xf238('0x61'),'contactidname',_0xf238('0x62'),_0xf238('0x63'),_0xf238('0x64'),_0xf238('0x65'),_0xf238('0x66'),_0xf238('0x67'),_0xf238('0x68'),'createdon',_0xf238('0x69'),'createdonbehalfbyyominame',_0xf238('0x6a'),_0xf238('0x6b'),_0xf238('0x6c'),_0xf238('0x6d'),_0xf238('0x6e'),_0xf238('0x6f'),_0xf238('0x70'),_0xf238('0x71'),'exchangerate',_0xf238('0x72'),_0xf238('0x73'),_0xf238('0x74'),_0xf238('0x75'),_0xf238('0x76'),_0xf238('0x77'),'masteridname',_0xf238('0x78'),_0xf238('0x79'),'modifiedbyname',_0xf238('0x7a'),_0xf238('0x7b'),_0xf238('0x7c'),_0xf238('0x7d'),_0xf238('0x7e'),_0xf238('0x7f'),_0xf238('0x80'),'onholdtime',_0xf238('0x81'),_0xf238('0x82'),_0xf238('0x83'),_0xf238('0x84'),_0xf238('0x85'),'primarycontactidname','primarycontactidyominame',_0xf238('0x86'),'productidname',_0xf238('0x87'),_0xf238('0x88'),_0xf238('0x89'),_0xf238('0x8a'),_0xf238('0x8b'),_0xf238('0x8c'),_0xf238('0x8d'),_0xf238('0x8e'),_0xf238('0x8f'),_0xf238('0x90'),'statecode',_0xf238('0x91'),_0xf238('0x92'),_0xf238('0x93'),'timezoneruleversionnumber','transactioncurrencyidname',_0xf238('0x94'),_0xf238('0x95'),_0xf238('0x96')];var _0x250a9a=_0x44a186[_0xf238('0x97')](_0x34fed3);return db[_0xf238('0x2f')][_0xf238('0x4c')]({'where':{'id':_0x562be5[_0xf238('0x44')]['id']},'attributes':['id',_0xf238('0x98'),'password',_0xf238('0x99'),_0xf238('0x9a'),_0xf238('0x9b'),_0xf238('0x9c')]})[_0xf238('0x27')](handleEntityNotFound(_0x228dc0,null))[_0xf238('0x27')](function(_0x5c3c01){if(_0x5c3c01){_0x5d71e6=_0x5c3c01['remoteUri'];var _0x38fc19=_0x5d71e6[_0xf238('0x9d')](-0x1);if(_0x38fc19==='/'){_0x5d71e6=_0x5d71e6[_0xf238('0x9e')](0x0,_0x5d71e6[_0xf238('0x9f')](_0x38fc19));}_0x523491=util[_0xf238('0xa0')](_0xf238('0xa1'),_0x5d71e6);var _0x41ac1d={'method':'POST','uri':_0xf238('0xa2')+_0x5c3c01[_0xf238('0x9a')]+_0xf238('0xa3'),'form':{'client_id':_0x5c3c01[_0xf238('0x9b')],'resource':_0x5d71e6,'username':_0x5c3c01['username'],'password':_0x5c3c01['password'],'grant_type':_0xf238('0xa4'),'client_secret':_0x5c3c01['clientSecret']},'json':!![]};return rp(_0x41ac1d);}})[_0xf238('0x27')](function(_0x155374){_0x582fc7=_0x155374[_0xf238('0xa5')];var _0x2cd5e1={'method':_0xf238('0xa6'),'uri':encodeURI(_0x523491+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0xb92df5+'\x27'),'headers':{'Authorization':_0xf238('0xa7')+_0x582fc7,'If-None-Match':null,'OData-Version':_0xf238('0xa8')},'json':!![]};return rp(_0x2cd5e1);})[_0xf238('0x27')](function(_0x5f14b1){var _0x73386e=_0x5f14b1['value'][0x0];var _0x417d26=_0x73386e[_0xf238('0xa9')];var _0x26741d={'method':'GET','uri':_0x523491+_0xf238('0xaa')+_0x417d26+_0xf238('0xab'),'headers':{'Authorization':'Bearer\x20'+_0x582fc7,'If-None-Match':null,'OData-Version':_0xf238('0xa8')},'json':!![]};return rp(_0x26741d);})['then'](function(_0xa917b2){_0x2f3116=_0xa917b2;_0x39eb37=_0x2f3116[_0xf238('0xac')];_0x39eb37=_['remove'](_0x39eb37,function(_0x52187e){return!_0x250a9a['includes'](_0x52187e[_0xf238('0xad')]);});var _0x4e64de=[];var _0x4d59fd=[];_0x39eb37['forEach'](function(_0x5ec9d5){if(_0x5ec9d5['@odata.type']){var _0x5160f6=_0x5ec9d5[_0xf238('0xae')]['substring'](_0x5ec9d5['@odata.type']['lastIndexOf']('.')+0x1);if(_0x5160f6===_0xf238('0xaf')){_0x4e64de[_0xf238('0xb0')](getSelectList(_0x523491,_0x2e9341,_0x4d59fd,_0x2f3116[_0xf238('0xa9')],_0x5ec9d5[_0xf238('0xa9')],_0x582fc7));}}});return Promise[_0xf238('0xb1')](_0x4e64de);})[_0xf238('0x27')](function(_0x1e4101){_0xb3e18e=_0x1e4101[0x0];var _0xc603d9=[];var _0x32cba8=[];_0x39eb37[_0xf238('0xb2')](function(_0x512346){if(!_['isNil'](_0x512346[_0xf238('0xae')])){var _0x1bcec5=_0x512346['@odata.type'][_0xf238('0x9e')](_0x512346[_0xf238('0xae')][_0xf238('0x9f')]('.')+0x1);if(_0x1bcec5===_0xf238('0xb3')){_0xc603d9[_0xf238('0xb0')](getBooleanList(_0x523491,_0x2e9341,_0x32cba8,_0x2f3116[_0xf238('0xa9')],_0x512346[_0xf238('0xa9')],_0x582fc7));}}});return Promise[_0xf238('0xb1')](_0xc603d9);})[_0xf238('0x27')](function(_0x13bc76){_0x591d09=_0x13bc76[0x0];var _0x392436=[];var _0x1a8264=[];_0x39eb37['forEach'](function(_0x53558b){if(_0x53558b[_0xf238('0xae')]){var _0x378c44=_0x53558b[_0xf238('0xae')][_0xf238('0x9e')](_0x53558b['@odata.type'][_0xf238('0x9f')]('.')+0x1);if(_0x378c44===_0xf238('0xb4')||_0x378c44===_0xf238('0xb5')||_0x378c44===_0xf238('0xb6')||_0x378c44===_0xf238('0xb7')||_0x378c44==='MemoAttributeMetadata'||_0x378c44===_0xf238('0xb8')||_0x378c44===_0xf238('0xb9')||_0x378c44===_0xf238('0xba')||_0x378c44===_0xf238('0xbb')||_0x378c44===_0xf238('0xbc')){_0x392436['push'](getInputList(_0x523491,_0x2e9341,_0x378c44,_0x1a8264,_0x2f3116[_0xf238('0xa9')],_0x53558b[_0xf238('0xa9')],_0x582fc7));}}});return Promise[_0xf238('0xb1')](_0x392436);})[_0xf238('0x27')](function(_0x360cfe){_0x25b439=_0x360cfe[0x0];var _0x53fcae=_0xb3e18e[_0xf238('0x97')](_0x591d09)[_0xf238('0x97')](_0x25b439);var _0x20c4e6={'count':_0x53fcae[_0xf238('0x39')],'rows':_0x53fcae};return _0x20c4e6;})[_0xf238('0x27')](respondWithResult(_0x228dc0,null))[_0xf238('0x48')](function(_0x54d954){var _0x5e06b1=_0x562be5[_0xf238('0x33')]['test']?0x1f4:_0x54d954[_0xf238('0xbd')]||0x1f4;logger[_0xf238('0x29')](_0x54d954[_0xf238('0x2a')]);delete _0x54d954['name'];if(_0x5e06b1===0x191){_0x5e06b1=0x190;}_0x228dc0[_0xf238('0x1a')](_0x5e06b1)[_0xf238('0x2c')](_0x562be5[_0xf238('0x33')][_0xf238('0xbe')]?{'message':_0xf238('0xbf'),'statusCode':_0x54d954['statusCode']}:_0x54d954);});};function getSelectList(_0x9aec0b,_0x300da4,_0x1e593e,_0x3f389c,_0x7465d6,_0x296e67){var _0x4da295={'method':_0xf238('0xa6'),'uri':_0x9aec0b+_0xf238('0xaa')+_0x3f389c+_0xf238('0xc0')+_0x7465d6+_0xf238('0xc1')+_0xf238('0xc2'),'headers':{'Authorization':_0xf238('0xa7')+_0x296e67,'If-None-Match':null,'OData-Version':_0xf238('0xa8')},'json':!![]};return rp(_0x4da295)['then'](function(_0x19adfe){var _0x4f0d11=[];var _0x5909e8=_0x19adfe['OptionSet']['Options'];_0x5909e8[_0xf238('0xb2')](function(_0x1f2bda){_0x4f0d11['push']({'name':_0x1f2bda[_0xf238('0xc3')]['UserLocalizedLabel'][_0xf238('0xc3')],'value':String(_0x1f2bda[_0xf238('0xc4')])});});var _0x1a3960={'id':_0x300da4+'_'+_0x19adfe[_0xf238('0xad')],'name':_0x19adfe[_0xf238('0xc5')][_0xf238('0xc6')][_0xf238('0xc3')],'custom':![],'options':_0x4f0d11};_0x1e593e['push'](_0x1a3960);return _0x1e593e;});}function getBooleanList(_0x1d7fa0,_0x1433dc,_0x594a98,_0x804cc4,_0x93fed2,_0x1cc37e){var _0x50edc8={'method':'GET','uri':_0x1d7fa0+_0xf238('0xaa')+_0x804cc4+_0xf238('0xc0')+_0x93fed2+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':_0xf238('0xa7')+_0x1cc37e,'If-None-Match':null,'OData-Version':_0xf238('0xa8')},'json':!![]};return rp(_0x50edc8)[_0xf238('0x27')](function(_0x5101ce){var _0xcb3cbd=[];_0xcb3cbd[_0xf238('0xb0')]({'name':_0x5101ce[_0xf238('0xc7')][_0xf238('0xc8')][_0xf238('0xc3')][_0xf238('0xc6')][_0xf238('0xc3')],'value':_0xf238('0xc9')},{'name':_0x5101ce['OptionSet'][_0xf238('0xca')]['Label'][_0xf238('0xc6')][_0xf238('0xc3')],'value':'false'});var _0x103e52={'id':_0x1433dc+'_'+_0x5101ce[_0xf238('0xad')],'name':_0x5101ce[_0xf238('0xc5')]['UserLocalizedLabel']['Label'],'custom':![],'options':_0xcb3cbd};_0x594a98[_0xf238('0xb0')](_0x103e52);return _0x594a98;});}function getInputList(_0x3085eb,_0x19bc67,_0x1d6001,_0x55d95f,_0x396fb4,_0x35f8ca,_0xd541b){var _0x10a5b0={'method':_0xf238('0xa6'),'uri':_0x3085eb+'EntityDefinitions('+_0x396fb4+_0xf238('0xc0')+_0x35f8ca+_0xf238('0xcb')+_0x1d6001+'?$select=DisplayName,LogicalName','headers':{'Authorization':_0xf238('0xa7')+_0xd541b,'If-None-Match':null,'OData-Version':_0xf238('0xa8')},'json':!![]};return rp(_0x10a5b0)[_0xf238('0x27')](function(_0x391cfa){var _0x2c68b2={'id':_0x19bc67+'_'+_0x391cfa[_0xf238('0xad')],'name':_0x391cfa[_0xf238('0xc5')][_0xf238('0xc6')]?_0x391cfa[_0xf238('0xc5')][_0xf238('0xc6')][_0xf238('0xc3')]:_0x391cfa[_0xf238('0xad')],'custom':![],'options':[]};_0x55d95f['push'](_0x2c68b2);return _0x55d95f;});}
\ No newline at end of file
+var _0xf675=['4.0','MetadataId','GET','EntityDefinitions(','remove','includes','LogicalName','forEach','@odata.type','lastIndexOf','PicklistAttributeMetadata','push','all','isNil','StringAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','DateTimeAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','concat','test','statusCode','Wrong\x20credentials',')/Attributes(','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','Label','UserLocalizedLabel','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','true','FalseOption',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','end','error','stack','send','index','Dynamics365Account','fieldName','type','name','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','merge','map','VIRTUAL','filter','includeAll','include','findAll','catch','show','rawAttributes','options','create','body','find','params','destroy','findOne','nolimit','getConfigurations','AccountId','Subjects','getSubjects','Descriptions','channel','Dynamics365Configuration','getFields','ticketType','incident','PhoneCall','customerid','ownerid','caseorigincode','phonenumber','regardingobjectid','phonecall_activity_parties','accountidname','actualserviceunits','billedserviceunits','contactidname','contactidyominame','contractdetailidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyyominame','customeridname','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','importsequencenumber','influencescore','kbarticleidname','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyyominame','msdyn_iotalertname','numberofchildincidents','owneridname','primarycontactidyominame','resolvebykpiidname','responseby','responsiblecontactidyominame','slainvokedidname','slaname','socialprofileidname','statecode','statuscode','subjectidname','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','remoteUri','clientId','slice','substring','%s/api/data/v9.0/','POST','https://login.microsoftonline.com/','tenantId','/oauth2/token','username','password','access_token','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20'];(function(_0x53cb11,_0xb3b106){var _0x4ec798=function(_0x1b3d7c){while(--_0x1b3d7c){_0x53cb11['push'](_0x53cb11['shift']());}};_0x4ec798(++_0xb3b106);}(_0xf675,0x199));var _0x5f67=function(_0x46a634,_0x439b70){_0x46a634=_0x46a634-0x0;var _0x42007a=_0xf675[_0x46a634];return _0x42007a;};'use strict';var emlformat=require(_0x5f67('0x0'));var rimraf=require(_0x5f67('0x1'));var zipdir=require(_0x5f67('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5f67('0x3'));var moment=require('moment');var BPromise=require(_0x5f67('0x4'));var Mustache=require(_0x5f67('0x5'));var util=require(_0x5f67('0x6'));var path=require('path');var sox=require(_0x5f67('0x7'));var csv=require(_0x5f67('0x8'));var ejs=require(_0x5f67('0x9'));var fs=require('fs');var fs_extra=require(_0x5f67('0xa'));var _=require('lodash');var squel=require(_0x5f67('0xb'));var crypto=require(_0x5f67('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x5f67('0x8'));var querystring=require(_0x5f67('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5f67('0xe'));var qs=require(_0x5f67('0xf'));var as=require(_0x5f67('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x5f67('0x11'));var config=require(_0x5f67('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x5f67('0x13'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x4653c7,_0x49e27f){_0x49e27f=_0x49e27f||0xcc;return function(_0x34ad41){if(_0x34ad41){return _0x4653c7[_0x5f67('0x14')](_0x49e27f);}return _0x4653c7[_0x5f67('0x15')](_0x49e27f)['end']();};}function respondWithResult(_0x121c72,_0x59b8c6){_0x59b8c6=_0x59b8c6||0xc8;return function(_0x2d9c4e){if(_0x2d9c4e){return _0x121c72['status'](_0x59b8c6)[_0x5f67('0x16')](_0x2d9c4e);}};}function respondWithFilteredResult(_0x50a146,_0x1d1b15){return function(_0x2ea6ad){if(_0x2ea6ad){var _0x3a4cc3=typeof _0x1d1b15[_0x5f67('0x17')]===_0x5f67('0x18')&&typeof _0x1d1b15[_0x5f67('0x19')]===_0x5f67('0x18');var _0x223295=_0x2ea6ad[_0x5f67('0x1a')];var _0x8f3bd6=_0x3a4cc3?0x0:_0x1d1b15['offset'];var _0x5bc956=_0x3a4cc3?_0x2ea6ad[_0x5f67('0x1a')]:_0x1d1b15[_0x5f67('0x17')]+_0x1d1b15['limit'];var _0x3a867b;if(_0x5bc956>=_0x223295){_0x5bc956=_0x223295;_0x3a867b=0xc8;}else{_0x3a867b=0xce;}_0x50a146[_0x5f67('0x15')](_0x3a867b);return _0x50a146[_0x5f67('0x1b')](_0x5f67('0x1c'),_0x8f3bd6+'-'+_0x5bc956+'/'+_0x223295)[_0x5f67('0x16')](_0x2ea6ad);}return null;};}function patchUpdates(_0x3d487b){return function(_0x145218){try{jsonpatch[_0x5f67('0x1d')](_0x145218,_0x3d487b,!![]);}catch(_0xf3f894){return BPromise[_0x5f67('0x1e')](_0xf3f894);}return _0x145218[_0x5f67('0x1f')]();};}function saveUpdates(_0x8d876e,_0x531f2e){return function(_0x31980e){if(_0x31980e){return _0x31980e[_0x5f67('0x20')](_0x8d876e)[_0x5f67('0x21')](function(_0x5bb1de){return _0x5bb1de;});}return null;};}function removeEntity(_0x537b39,_0x217cf9){return function(_0x40b138){if(_0x40b138){return _0x40b138['destroy']()[_0x5f67('0x21')](function(){_0x537b39[_0x5f67('0x15')](0xcc)[_0x5f67('0x22')]();});}};}function handleEntityNotFound(_0x2dc788,_0x4b24de){return function(_0x41cfc3){if(!_0x41cfc3){_0x2dc788['sendStatus'](0x194);}return _0x41cfc3;};}function handleError(_0x31b02e,_0x167601){_0x167601=_0x167601||0x1f4;return function(_0x5af40c){logger[_0x5f67('0x23')](_0x5af40c[_0x5f67('0x24')]);if(_0x5af40c['name']){delete _0x5af40c['name'];}_0x31b02e[_0x5f67('0x15')](_0x167601)[_0x5f67('0x25')](_0x5af40c);};}exports[_0x5f67('0x26')]=function(_0x5dd8d7,_0x3491b0){var _0xd36b79={},_0x4a10b5={},_0x172b47={'count':0x0,'rows':[]};var _0x11da91=_['map'](db[_0x5f67('0x27')]['rawAttributes'],function(_0x30d3fd){return{'name':_0x30d3fd[_0x5f67('0x28')],'type':_0x30d3fd[_0x5f67('0x29')]['key']};});_0x4a10b5['model']=_['map'](_0x11da91,_0x5f67('0x2a'));_0x4a10b5['query']=_[_0x5f67('0x2b')](_0x5dd8d7[_0x5f67('0x2c')]);_0x4a10b5[_0x5f67('0x2d')]=_[_0x5f67('0x2e')](_0x4a10b5['model'],_0x4a10b5['query']);_0xd36b79[_0x5f67('0x2f')]=_[_0x5f67('0x2e')](_0x4a10b5[_0x5f67('0x30')],qs[_0x5f67('0x31')](_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x31')]));_0xd36b79['attributes']=_0xd36b79[_0x5f67('0x2f')][_0x5f67('0x32')]?_0xd36b79[_0x5f67('0x2f')]:_0x4a10b5[_0x5f67('0x30')];if(!_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x33')]('nolimit')){_0xd36b79[_0x5f67('0x19')]=qs[_0x5f67('0x19')](_0x5dd8d7['query'][_0x5f67('0x19')]);_0xd36b79[_0x5f67('0x17')]=qs[_0x5f67('0x17')](_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x17')]);}_0xd36b79[_0x5f67('0x34')]=qs[_0x5f67('0x35')](_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x35')]);_0xd36b79[_0x5f67('0x36')]=qs[_0x5f67('0x2d')](_['pick'](_0x5dd8d7[_0x5f67('0x2c')],_0x4a10b5[_0x5f67('0x2d')]),_0x11da91);if(_0x5dd8d7[_0x5f67('0x2c')]['filter']){_0xd36b79[_0x5f67('0x36')]=_[_0x5f67('0x37')](_0xd36b79[_0x5f67('0x36')],{'$or':_[_0x5f67('0x38')](_0x11da91,function(_0x3fed78){if(_0x3fed78[_0x5f67('0x29')]!==_0x5f67('0x39')){var _0x44a43b={};_0x44a43b[_0x3fed78[_0x5f67('0x2a')]]={'$like':'%'+_0x5dd8d7['query'][_0x5f67('0x3a')]+'%'};return _0x44a43b;}})});}_0xd36b79=_['merge']({},_0xd36b79,_0x5dd8d7['options']);var _0x794915={'where':_0xd36b79[_0x5f67('0x36')]};return db[_0x5f67('0x27')][_0x5f67('0x1a')](_0x794915)[_0x5f67('0x21')](function(_0x47a84b){_0x172b47['count']=_0x47a84b;if(_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x3b')]){_0xd36b79[_0x5f67('0x3c')]=[{'all':!![]}];}return db[_0x5f67('0x27')][_0x5f67('0x3d')](_0xd36b79);})['then'](function(_0x3da68d){_0x172b47['rows']=_0x3da68d;return _0x172b47;})[_0x5f67('0x21')](respondWithFilteredResult(_0x3491b0,_0xd36b79))[_0x5f67('0x3e')](handleError(_0x3491b0,null));};exports[_0x5f67('0x3f')]=function(_0x3a6405,_0x212cc1){var _0x4d8f32={'raw':![],'where':{'id':_0x3a6405['params']['id']}},_0x4baf80={};_0x4baf80[_0x5f67('0x30')]=_['keys'](db['Dynamics365Account'][_0x5f67('0x40')]);_0x4baf80[_0x5f67('0x2c')]=_[_0x5f67('0x2b')](_0x3a6405[_0x5f67('0x2c')]);_0x4baf80[_0x5f67('0x2d')]=_[_0x5f67('0x2e')](_0x4baf80[_0x5f67('0x30')],_0x4baf80[_0x5f67('0x2c')]);_0x4d8f32['attributes']=_[_0x5f67('0x2e')](_0x4baf80[_0x5f67('0x30')],qs['fields'](_0x3a6405[_0x5f67('0x2c')]['fields']));_0x4d8f32[_0x5f67('0x2f')]=_0x4d8f32['attributes'][_0x5f67('0x32')]?_0x4d8f32['attributes']:_0x4baf80[_0x5f67('0x30')];if(_0x3a6405[_0x5f67('0x2c')][_0x5f67('0x3b')]){_0x4d8f32['include']=[{'all':!![]}];}_0x4d8f32=_[_0x5f67('0x37')]({},_0x4d8f32,_0x3a6405[_0x5f67('0x41')]);return db['Dynamics365Account']['find'](_0x4d8f32)[_0x5f67('0x21')](handleEntityNotFound(_0x212cc1,null))[_0x5f67('0x21')](respondWithResult(_0x212cc1,null))[_0x5f67('0x3e')](handleError(_0x212cc1,null));};exports[_0x5f67('0x42')]=function(_0xb58550,_0x3f361b){return db[_0x5f67('0x27')][_0x5f67('0x42')](_0xb58550['body'],{})['then'](respondWithResult(_0x3f361b,0xc9))[_0x5f67('0x3e')](handleError(_0x3f361b,null));};exports[_0x5f67('0x20')]=function(_0x3f3bf9,_0x11d2db){if(_0x3f3bf9[_0x5f67('0x43')]['id']){delete _0x3f3bf9[_0x5f67('0x43')]['id'];}return db[_0x5f67('0x27')][_0x5f67('0x44')]({'where':{'id':_0x3f3bf9[_0x5f67('0x45')]['id']}})['then'](handleEntityNotFound(_0x11d2db,null))[_0x5f67('0x21')](saveUpdates(_0x3f3bf9[_0x5f67('0x43')],null))[_0x5f67('0x21')](respondWithResult(_0x11d2db,null))['catch'](handleError(_0x11d2db,null));};exports[_0x5f67('0x46')]=function(_0x29832a,_0x371bb8){return db[_0x5f67('0x27')][_0x5f67('0x44')]({'where':{'id':_0x29832a[_0x5f67('0x45')]['id']}})[_0x5f67('0x21')](handleEntityNotFound(_0x371bb8,null))['then'](removeEntity(_0x371bb8,null))[_0x5f67('0x3e')](handleError(_0x371bb8,null));};exports['getConfigurations']=function(_0x38d730,_0x43e6b0,_0x3d5cbe){var _0x4a9784={};var _0x1d6f6b={};var _0xaa01c1;var _0x3547be;return db[_0x5f67('0x27')][_0x5f67('0x47')]({'where':{'id':_0x38d730['params']['id']}})[_0x5f67('0x21')](handleEntityNotFound(_0x43e6b0,null))['then'](function(_0x344dc2){if(_0x344dc2){_0xaa01c1=_0x344dc2;_0x1d6f6b[_0x5f67('0x30')]=_[_0x5f67('0x2b')](db['Dynamics365Configuration'][_0x5f67('0x40')]);_0x1d6f6b[_0x5f67('0x2c')]=_['keys'](_0x38d730[_0x5f67('0x2c')]);_0x1d6f6b[_0x5f67('0x2d')]=_[_0x5f67('0x2e')](_0x1d6f6b['model'],_0x1d6f6b['query']);_0x4a9784['attributes']=_[_0x5f67('0x2e')](_0x1d6f6b[_0x5f67('0x30')],qs[_0x5f67('0x31')](_0x38d730['query'][_0x5f67('0x31')]));_0x4a9784[_0x5f67('0x2f')]=_0x4a9784[_0x5f67('0x2f')][_0x5f67('0x32')]?_0x4a9784[_0x5f67('0x2f')]:_0x1d6f6b[_0x5f67('0x30')];_0x4a9784[_0x5f67('0x34')]=qs[_0x5f67('0x35')](_0x38d730[_0x5f67('0x2c')]['sort']);_0x4a9784[_0x5f67('0x36')]=qs[_0x5f67('0x2d')](_['pick'](_0x38d730[_0x5f67('0x2c')],_0x1d6f6b[_0x5f67('0x2d')]));if(_0x38d730[_0x5f67('0x2c')][_0x5f67('0x3a')]){_0x4a9784['where']=_[_0x5f67('0x37')](_0x4a9784[_0x5f67('0x36')],{'$or':_[_0x5f67('0x38')](_0x4a9784[_0x5f67('0x2f')],function(_0x545ef5){var _0x3fa9c0={};_0x3fa9c0[_0x545ef5]={'$like':'%'+_0x38d730[_0x5f67('0x2c')][_0x5f67('0x3a')]+'%'};return _0x3fa9c0;})});}_0x4a9784=_[_0x5f67('0x37')]({},_0x4a9784,_0x38d730['options']);return _0xaa01c1['getConfigurations'](_0x4a9784);}})[_0x5f67('0x21')](function(_0xb1e12c){if(_0xb1e12c){_0x3547be=_0xb1e12c[_0x5f67('0x32')];if(!_0x38d730['query'][_0x5f67('0x33')](_0x5f67('0x48'))){_0x4a9784[_0x5f67('0x19')]=qs['limit'](_0x38d730[_0x5f67('0x2c')][_0x5f67('0x19')]);_0x4a9784[_0x5f67('0x17')]=qs[_0x5f67('0x17')](_0x38d730[_0x5f67('0x2c')][_0x5f67('0x17')]);}return _0xaa01c1[_0x5f67('0x49')](_0x4a9784);}})[_0x5f67('0x21')](function(_0x43de23){if(_0x43de23){return _0x43de23?{'count':_0x3547be,'rows':_0x43de23}:null;}})[_0x5f67('0x21')](respondWithResult(_0x43e6b0,null))['catch'](handleError(_0x43e6b0,null));};exports['addConfiguration']=function(_0x2e0e52,_0x39b262,_0x58ee8c){if(_0x2e0e52['body']['id']){delete _0x2e0e52[_0x5f67('0x43')]['id'];}return db[_0x5f67('0x27')]['findOne']({'where':{'id':_0x2e0e52[_0x5f67('0x45')]['id']}})[_0x5f67('0x21')](handleEntityNotFound(_0x39b262,null))[_0x5f67('0x21')](function(_0x5ed197){if(_0x5ed197){_0x2e0e52['body'][_0x5f67('0x4a')]=_0x5ed197['id'];_0x2e0e52[_0x5f67('0x43')][_0x5f67('0x4b')]=integrations[_0x5f67('0x4c')](_0x2e0e52['body']['channel'],_0x2e0e52['body'][_0x5f67('0x29')]);_0x2e0e52['body'][_0x5f67('0x4d')]=integrations['getDescriptions'](_0x2e0e52[_0x5f67('0x43')][_0x5f67('0x4e')],_0x2e0e52[_0x5f67('0x43')][_0x5f67('0x29')]);return db[_0x5f67('0x4f')][_0x5f67('0x42')](_0x2e0e52[_0x5f67('0x43')],{'include':[{'model':db['Dynamics365Field'],'as':_0x5f67('0x4b')},{'model':db['Dynamics365Field'],'as':_0x5f67('0x4d')}]});}return null;})[_0x5f67('0x21')](respondWithResult(_0x39b262,null))[_0x5f67('0x3e')](handleError(_0x39b262,null));};exports[_0x5f67('0x50')]=function(_0x2baff6,_0x21e3be,_0xf20c36){var _0x10277c=_0x2baff6['query'][_0x5f67('0x51')];var _0x520762=_0x10277c===_0x5f67('0x52')?'Incident':_0x5f67('0x53');var _0xc8010e='';var _0x41293b='';var _0x588dc5='';var _0x520fb1='';var _0x1dbba7='';var _0x20fce1='';var _0x5a4f9b='';var _0x244fb9='';var _0x136a18=['title','description',_0x5f67('0x54'),_0x5f67('0x55'),_0x5f67('0x56'),'subject',_0x5f67('0x57'),_0x5f67('0x58'),'directioncode',_0x5f67('0x59')];var _0x393558=[_0x5f67('0x5a'),'accountidyominame',_0x5f67('0x5b'),_0x5f67('0x5c'),_0x5f67('0x5d'),_0x5f67('0x5e'),_0x5f67('0x5f'),'contractidname',_0x5f67('0x60'),_0x5f67('0x61'),_0x5f67('0x62'),_0x5f67('0x63'),_0x5f67('0x64'),'createdonbehalfbyname',_0x5f67('0x65'),_0x5f67('0x66'),'customeridtype','customeridyominame','emailaddress',_0x5f67('0x67'),_0x5f67('0x68'),_0x5f67('0x69'),_0x5f67('0x6a'),_0x5f67('0x6b'),'firstresponsebykpiidname','followupby',_0x5f67('0x6c'),_0x5f67('0x6d'),_0x5f67('0x6e'),'lastonholdtime',_0x5f67('0x6f'),_0x5f67('0x70'),_0x5f67('0x71'),_0x5f67('0x72'),_0x5f67('0x73'),_0x5f67('0x74'),'modifiedonbehalfbyname',_0x5f67('0x75'),'msdyn_incidenttypename',_0x5f67('0x76'),_0x5f67('0x77'),'onholdtime','overriddencreatedon',_0x5f67('0x78'),'owneridtype','owneridyominame','parentcaseidname','primarycontactidname',_0x5f67('0x79'),'prioritycodename','productidname','productserialnumber','resolveby',_0x5f67('0x7a'),_0x5f67('0x7b'),'responsiblecontactidname',_0x5f67('0x7c'),'sentimentvalue',_0x5f67('0x7d'),_0x5f67('0x7e'),_0x5f67('0x7f'),_0x5f67('0x80'),_0x5f67('0x81'),_0x5f67('0x82'),'ticketnumber','timezoneruleversionnumber',_0x5f67('0x83'),_0x5f67('0x84'),_0x5f67('0x85'),_0x5f67('0x86')];var _0x5a6a5b=_0x136a18['concat'](_0x393558);return db['Dynamics365Account']['findOne']({'where':{'id':_0x2baff6[_0x5f67('0x45')]['id']},'attributes':['id','username','password',_0x5f67('0x87'),'tenantId',_0x5f67('0x88'),'clientSecret']})[_0x5f67('0x21')](handleEntityNotFound(_0x21e3be,null))['then'](function(_0x1005fa){if(_0x1005fa){_0x244fb9=_0x1005fa['remoteUri'];var _0x5202cb=_0x244fb9[_0x5f67('0x89')](-0x1);if(_0x5202cb==='/'){_0x244fb9=_0x244fb9[_0x5f67('0x8a')](0x0,_0x244fb9['lastIndexOf'](_0x5202cb));}_0x5a4f9b=util['format'](_0x5f67('0x8b'),_0x244fb9);var _0x40c39e={'method':_0x5f67('0x8c'),'uri':_0x5f67('0x8d')+_0x1005fa[_0x5f67('0x8e')]+_0x5f67('0x8f'),'form':{'client_id':_0x1005fa[_0x5f67('0x88')],'resource':_0x244fb9,'username':_0x1005fa[_0x5f67('0x90')],'password':_0x1005fa[_0x5f67('0x91')],'grant_type':_0x5f67('0x91'),'client_secret':_0x1005fa['clientSecret']},'json':!![]};return rp(_0x40c39e);}})[_0x5f67('0x21')](function(_0x5f67f3){_0x20fce1=_0x5f67f3[_0x5f67('0x92')];var _0x3c843e={'method':'GET','uri':encodeURI(_0x5a4f9b+_0x5f67('0x93')+_0x520762+'\x27'),'headers':{'Authorization':_0x5f67('0x94')+_0x20fce1,'If-None-Match':null,'OData-Version':_0x5f67('0x95')},'json':!![]};return rp(_0x3c843e);})[_0x5f67('0x21')](function(_0x395c97){var _0x1e0df7=_0x395c97['value'][0x0];var _0x30d4c7=_0x1e0df7[_0x5f67('0x96')];var _0x3fd1f4={'method':_0x5f67('0x97'),'uri':_0x5a4f9b+_0x5f67('0x98')+_0x30d4c7+')?$select=LogicalName&$expand=Attributes($select=LogicalName)','headers':{'Authorization':'Bearer\x20'+_0x20fce1,'If-None-Match':null,'OData-Version':_0x5f67('0x95')},'json':!![]};return rp(_0x3fd1f4);})[_0x5f67('0x21')](function(_0x1730a7){_0xc8010e=_0x1730a7;_0x41293b=_0xc8010e['Attributes'];_0x41293b=_[_0x5f67('0x99')](_0x41293b,function(_0x77c146){return!_0x5a6a5b[_0x5f67('0x9a')](_0x77c146[_0x5f67('0x9b')]);});var _0x22cf65=[];var _0x24df53=[];_0x41293b[_0x5f67('0x9c')](function(_0x2e3d41){if(_0x2e3d41['@odata.type']){var _0x565e75=_0x2e3d41[_0x5f67('0x9d')][_0x5f67('0x8a')](_0x2e3d41['@odata.type'][_0x5f67('0x9e')]('.')+0x1);if(_0x565e75===_0x5f67('0x9f')){_0x22cf65[_0x5f67('0xa0')](getSelectList(_0x5a4f9b,_0x10277c,_0x24df53,_0xc8010e['MetadataId'],_0x2e3d41[_0x5f67('0x96')],_0x20fce1));}}});return Promise[_0x5f67('0xa1')](_0x22cf65);})[_0x5f67('0x21')](function(_0x549bb8){_0x588dc5=_0x549bb8[0x0];var _0x4471df=[];var _0x5ab2e1=[];_0x41293b[_0x5f67('0x9c')](function(_0x25ad1f){if(!_[_0x5f67('0xa2')](_0x25ad1f[_0x5f67('0x9d')])){var _0xff33a5=_0x25ad1f[_0x5f67('0x9d')][_0x5f67('0x8a')](_0x25ad1f['@odata.type'][_0x5f67('0x9e')]('.')+0x1);if(_0xff33a5==='BooleanAttributeMetadata'){_0x4471df['push'](getBooleanList(_0x5a4f9b,_0x10277c,_0x5ab2e1,_0xc8010e[_0x5f67('0x96')],_0x25ad1f[_0x5f67('0x96')],_0x20fce1));}}});return Promise[_0x5f67('0xa1')](_0x4471df);})[_0x5f67('0x21')](function(_0x55df2a){_0x520fb1=_0x55df2a[0x0];var _0x112186=[];var _0x32272c=[];_0x41293b[_0x5f67('0x9c')](function(_0x259090){if(_0x259090[_0x5f67('0x9d')]){var _0x5cdc1d=_0x259090[_0x5f67('0x9d')]['substring'](_0x259090[_0x5f67('0x9d')][_0x5f67('0x9e')]('.')+0x1);if(_0x5cdc1d===_0x5f67('0xa3')||_0x5cdc1d==='DoubleAttributeMetadata'||_0x5cdc1d===_0x5f67('0xa4')||_0x5cdc1d===_0x5f67('0xa5')||_0x5cdc1d==='MemoAttributeMetadata'||_0x5cdc1d===_0x5f67('0xa6')||_0x5cdc1d==='StatusAttributeMetadata'||_0x5cdc1d===_0x5f67('0xa7')||_0x5cdc1d===_0x5f67('0xa8')||_0x5cdc1d===_0x5f67('0xa9')){_0x112186[_0x5f67('0xa0')](getInputList(_0x5a4f9b,_0x10277c,_0x5cdc1d,_0x32272c,_0xc8010e[_0x5f67('0x96')],_0x259090[_0x5f67('0x96')],_0x20fce1));}}});return Promise['all'](_0x112186);})['then'](function(_0x3f377e){_0x1dbba7=_0x3f377e[0x0];var _0x3b74b0=_0x588dc5[_0x5f67('0xaa')](_0x520fb1)[_0x5f67('0xaa')](_0x1dbba7);var _0x588f57={'count':_0x3b74b0[_0x5f67('0x32')],'rows':_0x3b74b0};return _0x588f57;})[_0x5f67('0x21')](respondWithResult(_0x21e3be,null))['catch'](function(_0x213587){var _0x3362ba=_0x2baff6[_0x5f67('0x2c')][_0x5f67('0xab')]?0x1f4:_0x213587[_0x5f67('0xac')]||0x1f4;logger[_0x5f67('0x23')](_0x213587[_0x5f67('0x24')]);delete _0x213587[_0x5f67('0x2a')];if(_0x3362ba===0x191){_0x3362ba=0x190;}_0x21e3be[_0x5f67('0x15')](_0x3362ba)[_0x5f67('0x25')](_0x2baff6['query'][_0x5f67('0xab')]?{'message':_0x5f67('0xad'),'statusCode':_0x213587[_0x5f67('0xac')]}:_0x213587);});};function getSelectList(_0x468238,_0x2638c9,_0x2c0a9e,_0x14981d,_0x2f80e0,_0x4bf10c){var _0x18f4fb={'method':'GET','uri':_0x468238+_0x5f67('0x98')+_0x14981d+_0x5f67('0xae')+_0x2f80e0+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+_0x5f67('0xaf'),'headers':{'Authorization':_0x5f67('0x94')+_0x4bf10c,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x18f4fb)['then'](function(_0x8839eb){var _0x20976b=[];var _0x17e554=_0x8839eb[_0x5f67('0xb0')][_0x5f67('0xb1')];_0x17e554[_0x5f67('0x9c')](function(_0x4dab12){_0x20976b[_0x5f67('0xa0')]({'name':_0x4dab12[_0x5f67('0xb2')][_0x5f67('0xb3')][_0x5f67('0xb2')],'value':String(_0x4dab12['Value'])});});var _0x44a972={'id':_0x2638c9+'_'+_0x8839eb['LogicalName'],'name':_0x8839eb[_0x5f67('0xb4')][_0x5f67('0xb3')]['Label'],'custom':![],'options':_0x20976b};_0x2c0a9e[_0x5f67('0xa0')](_0x44a972);return _0x2c0a9e;});}function getBooleanList(_0x112129,_0x33c0bd,_0xf1f5b4,_0x580a30,_0x1e2165,_0x4df798){var _0x1e1b14={'method':_0x5f67('0x97'),'uri':_0x112129+_0x5f67('0x98')+_0x580a30+_0x5f67('0xae')+_0x1e2165+_0x5f67('0xb5'),'headers':{'Authorization':'Bearer\x20'+_0x4df798,'If-None-Match':null,'OData-Version':_0x5f67('0x95')},'json':!![]};return rp(_0x1e1b14)[_0x5f67('0x21')](function(_0x2e09a9){var _0x272d12=[];_0x272d12[_0x5f67('0xa0')]({'name':_0x2e09a9[_0x5f67('0xb0')]['TrueOption'][_0x5f67('0xb2')][_0x5f67('0xb3')][_0x5f67('0xb2')],'value':_0x5f67('0xb6')},{'name':_0x2e09a9[_0x5f67('0xb0')][_0x5f67('0xb7')][_0x5f67('0xb2')]['UserLocalizedLabel'][_0x5f67('0xb2')],'value':'false'});var _0x532202={'id':_0x33c0bd+'_'+_0x2e09a9[_0x5f67('0x9b')],'name':_0x2e09a9[_0x5f67('0xb4')][_0x5f67('0xb3')][_0x5f67('0xb2')],'custom':![],'options':_0x272d12};_0xf1f5b4[_0x5f67('0xa0')](_0x532202);return _0xf1f5b4;});}function getInputList(_0x556718,_0x3dcb35,_0xeb1ec1,_0x5d3054,_0x517f93,_0x1e7ffe,_0xd59c96){var _0x32294c={'method':'GET','uri':_0x556718+_0x5f67('0x98')+_0x517f93+_0x5f67('0xae')+_0x1e7ffe+_0x5f67('0xb8')+_0xeb1ec1+_0x5f67('0xb9'),'headers':{'Authorization':'Bearer\x20'+_0xd59c96,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x32294c)[_0x5f67('0x21')](function(_0x5515be){var _0x1e749e={'id':_0x3dcb35+'_'+_0x5515be[_0x5f67('0x9b')],'name':_0x5515be[_0x5f67('0xb4')][_0x5f67('0xb3')]?_0x5515be[_0x5f67('0xb4')][_0x5f67('0xb3')][_0x5f67('0xb2')]:_0x5515be[_0x5f67('0x9b')],'custom':![],'options':[]};_0x5d3054[_0x5f67('0xa0')](_0x1e749e);return _0x5d3054;});}
\ No newline at end of file
index 3e28114..9db9292 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','int_dynamics365_accounts','lodash','util'];(function(_0x37ee65,_0x14f835){var _0x1c0757=function(_0x56d139){while(--_0x56d139){_0x37ee65['push'](_0x37ee65['shift']());}};_0x1c0757(++_0x14f835);}(_0xe706,0xa3));var _0x6e70=function(_0x2ee974,_0x1cceb5){_0x2ee974=_0x2ee974-0x0;var _0x20c5fb=_0xe706[_0x2ee974];return _0x20c5fb;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var moment=require(_0x6e70('0x3'));var BPromise=require(_0x6e70('0x4'));var rp=require(_0x6e70('0x5'));var fs=require('fs');var path=require(_0x6e70('0x6'));var rimraf=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var attributes=require(_0x6e70('0x9'));var integrations=require(_0x6e70('0xa'));module[_0x6e70('0xb')]=function(_0x4381d1,_0x36357b){return _0x4381d1[_0x6e70('0xc')](_0x6e70('0xd'),attributes,{'tableName':_0x6e70('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7e7=['int_dynamics365_accounts','lodash','../../config/logger','moment','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','define'];(function(_0x1e373d,_0x122b53){var _0x2fc1a8=function(_0x1eb0c5){while(--_0x1eb0c5){_0x1e373d['push'](_0x1e373d['shift']());}};_0x2fc1a8(++_0x122b53);}(_0xb7e7,0x121));var _0x7b7e=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xb7e7[_0x2b4411];return _0x8e41ef;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x333fa4,_0x372bde){return _0x333fa4[_0x7b7e('0x7')]('Dynamics365Account',attributes,{'tableName':_0x7b7e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aaaed9b..6467b23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5ea=['include','model','map','GetDynamics365Account','debug','ShowDynamics365Account','find','lodash','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Dynamics365Account,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','Dynamics365Account,\x20%s,\x20%s','message','result','catch','Dynamics365Account','findAll','options','raw','where','attributes','limit'];(function(_0xda464c,_0x26e47d){var _0x19e222=function(_0x1ec605){while(--_0x1ec605){_0xda464c['push'](_0xda464c['shift']());}};_0x19e222(++_0x26e47d);}(_0xe5ea,0x17d));var _0xae5e=function(_0x1650f6,_0x1c0557){_0x1650f6=_0x1650f6-0x0;var _0xdd36f0=_0xe5ea[_0x1650f6];return _0xdd36f0;};'use strict';var _=require(_0xae5e('0x0'));var util=require('util');var moment=require(_0xae5e('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xae5e('0x2'));var db=require(_0xae5e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xae5e('0x4'))(_0xae5e('0x5'));var config=require(_0xae5e('0x6'));var jayson=require(_0xae5e('0x7'));var client=jayson['client'][_0xae5e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4fe1e7,_0x4cd5ea,_0x26c2ac){return new BPromise(function(_0x6b4e2a,_0x5f0a3f){return client[_0xae5e('0x9')](_0x4fe1e7,_0x26c2ac)[_0xae5e('0xa')](function(_0x19705c){logger[_0xae5e('0xb')]('Dynamics365Account,\x20%s,\x20%s',_0x4cd5ea,'request\x20sent');logger['debug'](_0xae5e('0xc'),_0x4cd5ea,_0xae5e('0xd'),JSON[_0xae5e('0xe')](_0x19705c));if(_0x19705c[_0xae5e('0xf')]){if(_0x19705c['error']['code']===0x1f4){logger['error'](_0xae5e('0x10'),_0x4cd5ea,_0x19705c[_0xae5e('0xf')][_0xae5e('0x11')]);return _0x5f0a3f(_0x19705c[_0xae5e('0xf')][_0xae5e('0x11')]);}logger['error'](_0xae5e('0x10'),_0x4cd5ea,_0x19705c['error'][_0xae5e('0x11')]);return _0x6b4e2a(_0x19705c['error'][_0xae5e('0x11')]);}else{logger[_0xae5e('0xb')](_0xae5e('0x10'),_0x4cd5ea,_0xae5e('0xd'));_0x6b4e2a(_0x19705c[_0xae5e('0x12')][_0xae5e('0x11')]);}})[_0xae5e('0x13')](function(_0x4148a1){logger[_0xae5e('0xf')](_0xae5e('0x10'),_0x4cd5ea,_0x4148a1);_0x5f0a3f(_0x4148a1);});});}exports['GetDynamics365Account']=function(_0x32fc85){var _0x379d8e=this;return new Promise(function(_0x4e2510,_0x240d97){return db[_0xae5e('0x14')][_0xae5e('0x15')]({'raw':_0x32fc85[_0xae5e('0x16')]?_0x32fc85['options'][_0xae5e('0x17')]===undefined?!![]:![]:!![],'where':_0x32fc85[_0xae5e('0x16')]?_0x32fc85[_0xae5e('0x16')][_0xae5e('0x18')]||null:null,'attributes':_0x32fc85[_0xae5e('0x16')]?_0x32fc85[_0xae5e('0x16')][_0xae5e('0x19')]||null:null,'limit':_0x32fc85[_0xae5e('0x16')]?_0x32fc85[_0xae5e('0x16')][_0xae5e('0x1a')]||null:null,'include':_0x32fc85['options']?_0x32fc85[_0xae5e('0x16')][_0xae5e('0x1b')]?_['map'](_0x32fc85[_0xae5e('0x16')][_0xae5e('0x1b')],function(_0x5d0b18){return{'model':db[_0x5d0b18[_0xae5e('0x1c')]],'as':_0x5d0b18['as'],'attributes':_0x5d0b18[_0xae5e('0x19')],'include':_0x5d0b18[_0xae5e('0x1b')]?_[_0xae5e('0x1d')](_0x5d0b18[_0xae5e('0x1b')],function(_0x2c4550){return{'model':db[_0x2c4550[_0xae5e('0x1c')]],'as':_0x2c4550['as'],'attributes':_0x2c4550[_0xae5e('0x19')],'include':_0x2c4550[_0xae5e('0x1b')]?_['map'](_0x2c4550[_0xae5e('0x1b')],function(_0x1efca2){return{'model':db[_0x1efca2[_0xae5e('0x1c')]],'as':_0x1efca2['as'],'attributes':_0x1efca2[_0xae5e('0x19')]};}):[]};}):[]};}):[]:[]})[_0xae5e('0xa')](function(_0x2c4102){logger[_0xae5e('0xb')](_0xae5e('0x1e'),_0x32fc85);logger[_0xae5e('0x1f')](_0xae5e('0x1e'),_0x32fc85,JSON[_0xae5e('0xe')](_0x2c4102));_0x4e2510(_0x2c4102);})[_0xae5e('0x13')](function(_0x4219cd){logger[_0xae5e('0xf')](_0xae5e('0x1e'),_0x4219cd[_0xae5e('0x11')],_0x32fc85);_0x240d97(_0x379d8e[_0xae5e('0xf')](0x1f4,_0x4219cd['message']));});});};exports[_0xae5e('0x20')]=function(_0x5787d2){var _0x2c4695=this;return new Promise(function(_0x53332c,_0x5de588){return db[_0xae5e('0x14')][_0xae5e('0x21')]({'raw':_0x5787d2['options']?_0x5787d2['options'][_0xae5e('0x17')]===undefined?!![]:![]:!![],'where':_0x5787d2[_0xae5e('0x16')]?_0x5787d2[_0xae5e('0x16')][_0xae5e('0x18')]||null:null,'attributes':_0x5787d2[_0xae5e('0x16')]?_0x5787d2[_0xae5e('0x16')][_0xae5e('0x19')]||null:null,'include':_0x5787d2[_0xae5e('0x16')]?_0x5787d2['options']['include']?_[_0xae5e('0x1d')](_0x5787d2[_0xae5e('0x16')]['include'],function(_0x254719){return{'model':db[_0x254719[_0xae5e('0x1c')]],'as':_0x254719['as'],'attributes':_0x254719[_0xae5e('0x19')],'include':_0x254719['include']?_['map'](_0x254719[_0xae5e('0x1b')],function(_0x58388e){return{'model':db[_0x58388e[_0xae5e('0x1c')]],'as':_0x58388e['as'],'attributes':_0x58388e[_0xae5e('0x19')],'include':_0x58388e[_0xae5e('0x1b')]?_[_0xae5e('0x1d')](_0x58388e[_0xae5e('0x1b')],function(_0x8f757d){return{'model':db[_0x8f757d['model']],'as':_0x8f757d['as'],'attributes':_0x8f757d[_0xae5e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x24061c){logger['info'](_0xae5e('0x20'),_0x5787d2);logger['debug'](_0xae5e('0x20'),_0x5787d2,JSON[_0xae5e('0xe')](_0x24061c));_0x53332c(_0x24061c);})['catch'](function(_0x3a88c3){logger[_0xae5e('0xf')](_0xae5e('0x20'),_0x3a88c3[_0xae5e('0x11')],_0x5787d2);_0x5de588(_0x2c4695[_0xae5e('0xf')](0x1f4,_0x3a88c3['message']));});});};
\ No newline at end of file
+var _0x0f8a=['findAll','options','raw','where','limit','include','map','model','attributes','catch','find','lodash','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','Dynamics365Account,\x20%s,\x20%s','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','GetDynamics365Account','Dynamics365Account'];(function(_0x4d5d0a,_0x4148dd){var _0x502c59=function(_0x79c6c){while(--_0x79c6c){_0x4d5d0a['push'](_0x4d5d0a['shift']());}};_0x502c59(++_0x4148dd);}(_0x0f8a,0x6e));var _0xa0f8=function(_0xa9ad65,_0x585c82){_0xa9ad65=_0xa9ad65-0x0;var _0x57d821=_0x0f8a[_0xa9ad65];return _0x57d821;};'use strict';var _=require(_0xa0f8('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa0f8('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa0f8('0x2'))['db'];var utils=require(_0xa0f8('0x3'));var logger=require(_0xa0f8('0x4'))(_0xa0f8('0x5'));var config=require(_0xa0f8('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xa0f8('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4d7ed9,_0xb043a6,_0x103a51){return new BPromise(function(_0x2400e2,_0x348697){return client[_0xa0f8('0x8')](_0x4d7ed9,_0x103a51)[_0xa0f8('0x9')](function(_0x47c0d6){logger[_0xa0f8('0xa')](_0xa0f8('0xb'),_0xb043a6,'request\x20sent');logger[_0xa0f8('0xc')](_0xa0f8('0xd'),_0xb043a6,'request\x20sent',JSON[_0xa0f8('0xe')](_0x47c0d6));if(_0x47c0d6[_0xa0f8('0xf')]){if(_0x47c0d6[_0xa0f8('0xf')][_0xa0f8('0x10')]===0x1f4){logger['error'](_0xa0f8('0xb'),_0xb043a6,_0x47c0d6['error']['message']);return _0x348697(_0x47c0d6[_0xa0f8('0xf')][_0xa0f8('0x11')]);}logger['error']('Dynamics365Account,\x20%s,\x20%s',_0xb043a6,_0x47c0d6[_0xa0f8('0xf')][_0xa0f8('0x11')]);return _0x2400e2(_0x47c0d6[_0xa0f8('0xf')]['message']);}else{logger[_0xa0f8('0xa')]('Dynamics365Account,\x20%s,\x20%s',_0xb043a6,_0xa0f8('0x12'));_0x2400e2(_0x47c0d6[_0xa0f8('0x13')][_0xa0f8('0x11')]);}})['catch'](function(_0x346271){logger['error'](_0xa0f8('0xb'),_0xb043a6,_0x346271);_0x348697(_0x346271);});});}exports[_0xa0f8('0x14')]=function(_0x44bc71){var _0xbfef32=this;return new Promise(function(_0x52e73b,_0x1ea1a7){return db[_0xa0f8('0x15')][_0xa0f8('0x16')]({'raw':_0x44bc71['options']?_0x44bc71[_0xa0f8('0x17')][_0xa0f8('0x18')]===undefined?!![]:![]:!![],'where':_0x44bc71[_0xa0f8('0x17')]?_0x44bc71[_0xa0f8('0x17')][_0xa0f8('0x19')]||null:null,'attributes':_0x44bc71[_0xa0f8('0x17')]?_0x44bc71[_0xa0f8('0x17')]['attributes']||null:null,'limit':_0x44bc71[_0xa0f8('0x17')]?_0x44bc71[_0xa0f8('0x17')][_0xa0f8('0x1a')]||null:null,'include':_0x44bc71['options']?_0x44bc71['options'][_0xa0f8('0x1b')]?_[_0xa0f8('0x1c')](_0x44bc71[_0xa0f8('0x17')][_0xa0f8('0x1b')],function(_0xb697fa){return{'model':db[_0xb697fa[_0xa0f8('0x1d')]],'as':_0xb697fa['as'],'attributes':_0xb697fa[_0xa0f8('0x1e')],'include':_0xb697fa[_0xa0f8('0x1b')]?_[_0xa0f8('0x1c')](_0xb697fa[_0xa0f8('0x1b')],function(_0x19af28){return{'model':db[_0x19af28['model']],'as':_0x19af28['as'],'attributes':_0x19af28[_0xa0f8('0x1e')],'include':_0x19af28[_0xa0f8('0x1b')]?_[_0xa0f8('0x1c')](_0x19af28[_0xa0f8('0x1b')],function(_0xcceaae){return{'model':db[_0xcceaae[_0xa0f8('0x1d')]],'as':_0xcceaae['as'],'attributes':_0xcceaae[_0xa0f8('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xa0f8('0x9')](function(_0x5e532d){logger['info'](_0xa0f8('0x14'),_0x44bc71);logger['debug'](_0xa0f8('0x14'),_0x44bc71,JSON['stringify'](_0x5e532d));_0x52e73b(_0x5e532d);})[_0xa0f8('0x1f')](function(_0x59ead2){logger[_0xa0f8('0xf')](_0xa0f8('0x14'),_0x59ead2['message'],_0x44bc71);_0x1ea1a7(_0xbfef32[_0xa0f8('0xf')](0x1f4,_0x59ead2[_0xa0f8('0x11')]));});});};exports['ShowDynamics365Account']=function(_0x4ea811){var _0x29105f=this;return new Promise(function(_0x2d8337,_0xb54671){return db[_0xa0f8('0x15')][_0xa0f8('0x20')]({'raw':_0x4ea811[_0xa0f8('0x17')]?_0x4ea811['options']['raw']===undefined?!![]:![]:!![],'where':_0x4ea811['options']?_0x4ea811[_0xa0f8('0x17')][_0xa0f8('0x19')]||null:null,'attributes':_0x4ea811[_0xa0f8('0x17')]?_0x4ea811[_0xa0f8('0x17')][_0xa0f8('0x1e')]||null:null,'include':_0x4ea811[_0xa0f8('0x17')]?_0x4ea811[_0xa0f8('0x17')][_0xa0f8('0x1b')]?_['map'](_0x4ea811[_0xa0f8('0x17')]['include'],function(_0x3f5757){return{'model':db[_0x3f5757[_0xa0f8('0x1d')]],'as':_0x3f5757['as'],'attributes':_0x3f5757['attributes'],'include':_0x3f5757['include']?_[_0xa0f8('0x1c')](_0x3f5757[_0xa0f8('0x1b')],function(_0x4f1306){return{'model':db[_0x4f1306[_0xa0f8('0x1d')]],'as':_0x4f1306['as'],'attributes':_0x4f1306[_0xa0f8('0x1e')],'include':_0x4f1306[_0xa0f8('0x1b')]?_[_0xa0f8('0x1c')](_0x4f1306[_0xa0f8('0x1b')],function(_0x57172b){return{'model':db[_0x57172b[_0xa0f8('0x1d')]],'as':_0x57172b['as'],'attributes':_0x57172b[_0xa0f8('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xa0f8('0x9')](function(_0x3f4d7f){logger[_0xa0f8('0xa')]('ShowDynamics365Account',_0x4ea811);logger[_0xa0f8('0xc')]('ShowDynamics365Account',_0x4ea811,JSON[_0xa0f8('0xe')](_0x3f4d7f));_0x2d8337(_0x3f4d7f);})[_0xa0f8('0x1f')](function(_0xe35d65){logger[_0xa0f8('0xf')]('ShowDynamics365Account',_0xe35d65[_0xa0f8('0x11')],_0x4ea811);_0xb54671(_0x29105f[_0xa0f8('0xf')](0x1f4,_0xe35d65[_0xa0f8('0x11')]));});});};
\ No newline at end of file
index a631cc4..fb956f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc933=['index','/:id','show','get','/:id/fields','getFields','/:id/descriptions','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','isAuthenticated'];(function(_0x2fe689,_0x5794e5){var _0x35ea44=function(_0x51b9d6){while(--_0x51b9d6){_0x2fe689['push'](_0x2fe689['shift']());}};_0x35ea44(++_0x5794e5);}(_0xc933,0xf9));var _0x3c93=function(_0x16ccc8,_0x555631){_0x16ccc8=_0x16ccc8-0x0;var _0x4325db=_0xc933[_0x16ccc8];return _0x4325db;};'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')](_0x3c93('0xf'),auth[_0x3c93('0xa')](),controller[_0x3c93('0x10')]);router[_0x3c93('0xe')]('/:id/subjects',auth['isAuthenticated'](),controller['getSubjects']);router[_0x3c93('0xe')](_0x3c93('0x11'),auth[_0x3c93('0xa')](),controller[_0x3c93('0x12')]);router[_0x3c93('0x13')]('/',auth[_0x3c93('0xa')](),controller[_0x3c93('0x14')]);router[_0x3c93('0x15')](_0x3c93('0xc'),auth[_0x3c93('0xa')](),controller[_0x3c93('0x16')]);router[_0x3c93('0x17')](_0x3c93('0xc'),auth[_0x3c93('0xa')](),controller[_0x3c93('0x18')]);module[_0x3c93('0x19')]=router;
\ No newline at end of file
+var _0x0b70=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','index','show','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post','create','/:id','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0b70,0x192));var _0x00b7=function(_0x1626e8,_0x545374){_0x1626e8=_0x1626e8-0x0;var _0x4e3278=_0x0b70[_0x1626e8];return _0x4e3278;};'use strict';var multer=require(_0x00b7('0x0'));var util=require(_0x00b7('0x1'));var path=require(_0x00b7('0x2'));var timeout=require(_0x00b7('0x3'));var express=require(_0x00b7('0x4'));var router=express['Router']();var fs_extra=require(_0x00b7('0x5'));var auth=require(_0x00b7('0x6'));var interaction=require(_0x00b7('0x7'));var config=require(_0x00b7('0x8'));var controller=require(_0x00b7('0x9'));router[_0x00b7('0xa')]('/',auth[_0x00b7('0xb')](),controller[_0x00b7('0xc')]);router[_0x00b7('0xa')]('/:id',auth[_0x00b7('0xb')](),controller[_0x00b7('0xd')]);router[_0x00b7('0xa')]('/:id/fields',auth[_0x00b7('0xb')](),controller[_0x00b7('0xe')]);router['get'](_0x00b7('0xf'),auth[_0x00b7('0xb')](),controller['getSubjects']);router[_0x00b7('0xa')](_0x00b7('0x10'),auth['isAuthenticated'](),controller[_0x00b7('0x11')]);router[_0x00b7('0x12')]('/',auth['isAuthenticated'](),controller[_0x00b7('0x13')]);router['put'](_0x00b7('0x14'),auth['isAuthenticated'](),controller[_0x00b7('0x15')]);router[_0x00b7('0x16')]('/:id',auth[_0x00b7('0xb')](),controller['destroy']);module[_0x00b7('0x17')]=router;
\ No newline at end of file
index 0044aab..8abba19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01e9=['STRING','ENUM','phonecall','exports'];(function(_0x4b40ae,_0x479eac){var _0x101668=function(_0x1bc8b8){while(--_0x1bc8b8){_0x4b40ae['push'](_0x4b40ae['shift']());}};_0x101668(++_0x479eac);}(_0x01e9,0x1eb));var _0x901e=function(_0x5a8047,_0x5cec69){_0x5a8047=_0x5a8047-0x0;var _0x2a89fb=_0x01e9[_0x5a8047];return _0x2a89fb;};'use strict';var Sequelize=require('sequelize');module[_0x901e('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x901e('0x1')]},'ticketType':{'type':Sequelize[_0x901e('0x2')]('incident',_0x901e('0x3')),'defaultValue':'incident'}};
\ No newline at end of file
+var _0x15e2=['ENUM','incident','phonecall','sequelize','exports'];(function(_0x2e8da3,_0x362e51){var _0x3630dc=function(_0x5ddec0){while(--_0x5ddec0){_0x2e8da3['push'](_0x2e8da3['shift']());}};_0x3630dc(++_0x362e51);}(_0x15e2,0x134));var _0x215e=function(_0x24259d,_0x64a194){_0x24259d=_0x24259d-0x0;var _0x5a701=_0x15e2[_0x24259d];return _0x5a701;};'use strict';var Sequelize=require(_0x215e('0x0'));module[_0x215e('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0x215e('0x2')](_0x215e('0x3'),_0x215e('0x4')),'defaultValue':_0x215e('0x3')}};
\ No newline at end of file
index 378ef1c..e9f0c79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6852=['sendStatus','status','end','json','offset','undefined','limit','count','set','apply','update','error','stack','send','rawAttributes','fieldName','key','model','map','keys','intersection','query','attributes','fields','hasOwnProperty','nolimit','order','where','pick','filter','type','VIRTUAL','merge','options','Dynamics365Configuration','then','includeAll','include','rows','catch','show','params','length','find','create','body','destroy','getFields','findOne','filters','sort','Dynamics365Field','getSubjects','getDescriptions','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb'];(function(_0x31b39a,_0xcc93f9){var _0x4a3935=function(_0x4e9dfc){while(--_0x4e9dfc){_0x31b39a['push'](_0x31b39a['shift']());}};_0x4a3935(++_0xcc93f9);}(_0x6852,0xd4));var _0x2685=function(_0x58f046,_0x3272f0){_0x58f046=_0x58f046-0x0;var _0x3ad45c=_0x6852[_0x58f046];return _0x3ad45c;};'use strict';var emlformat=require(_0x2685('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2685('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2685('0x2'));var moment=require(_0x2685('0x3'));var BPromise=require(_0x2685('0x4'));var Mustache=require(_0x2685('0x5'));var util=require(_0x2685('0x6'));var path=require(_0x2685('0x7'));var sox=require(_0x2685('0x8'));var csv=require(_0x2685('0x9'));var ejs=require(_0x2685('0xa'));var fs=require('fs');var fs_extra=require(_0x2685('0xb'));var _=require(_0x2685('0xc'));var squel=require(_0x2685('0xd'));var crypto=require('crypto');var jsforce=require(_0x2685('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x2685('0x9'));var querystring=require(_0x2685('0xf'));var Papa=require('papaparse');var Redis=require(_0x2685('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x2685('0x11'));var as=require(_0x2685('0x12'));var hardwareService=require(_0x2685('0x13'));var logger=require(_0x2685('0x14'))(_0x2685('0x15'));var utils=require(_0x2685('0x16'));var config=require(_0x2685('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x2685('0x18'))['db'];function respondWithStatusCode(_0x45b140,_0x97ea4){_0x97ea4=_0x97ea4||0xcc;return function(_0xdf2f15){if(_0xdf2f15){return _0x45b140[_0x2685('0x19')](_0x97ea4);}return _0x45b140[_0x2685('0x1a')](_0x97ea4)[_0x2685('0x1b')]();};}function respondWithResult(_0x3d5c94,_0x4ba9cd){_0x4ba9cd=_0x4ba9cd||0xc8;return function(_0x51a5e5){if(_0x51a5e5){return _0x3d5c94[_0x2685('0x1a')](_0x4ba9cd)[_0x2685('0x1c')](_0x51a5e5);}};}function respondWithFilteredResult(_0x101db3,_0x5c558b){return function(_0x91af80){if(_0x91af80){var _0xb8dd24=typeof _0x5c558b[_0x2685('0x1d')]===_0x2685('0x1e')&&typeof _0x5c558b[_0x2685('0x1f')]==='undefined';var _0x1d7723=_0x91af80[_0x2685('0x20')];var _0x46bec8=_0xb8dd24?0x0:_0x5c558b[_0x2685('0x1d')];var _0x2c6d32=_0xb8dd24?_0x91af80[_0x2685('0x20')]:_0x5c558b[_0x2685('0x1d')]+_0x5c558b[_0x2685('0x1f')];var _0x57bcbf;if(_0x2c6d32>=_0x1d7723){_0x2c6d32=_0x1d7723;_0x57bcbf=0xc8;}else{_0x57bcbf=0xce;}_0x101db3['status'](_0x57bcbf);return _0x101db3[_0x2685('0x21')]('Content-Range',_0x46bec8+'-'+_0x2c6d32+'/'+_0x1d7723)[_0x2685('0x1c')](_0x91af80);}return null;};}function patchUpdates(_0x1e2815){return function(_0x47f7c9){try{jsonpatch[_0x2685('0x22')](_0x47f7c9,_0x1e2815,!![]);}catch(_0x8ee41f){return BPromise['reject'](_0x8ee41f);}return _0x47f7c9['save']();};}function saveUpdates(_0x283b2e,_0x71ec0e){return function(_0xb738f2){if(_0xb738f2){return _0xb738f2[_0x2685('0x23')](_0x283b2e)['then'](function(_0x38879e){return _0x38879e;});}return null;};}function removeEntity(_0x19dc96,_0x3e3d67){return function(_0x160b02){if(_0x160b02){return _0x160b02['destroy']()['then'](function(){_0x19dc96[_0x2685('0x1a')](0xcc)[_0x2685('0x1b')]();});}};}function handleEntityNotFound(_0x1de531,_0x5c686b){return function(_0xf6220){if(!_0xf6220){_0x1de531[_0x2685('0x19')](0x194);}return _0xf6220;};}function handleError(_0x44c302,_0x881ad){_0x881ad=_0x881ad||0x1f4;return function(_0x4d3f98){logger[_0x2685('0x24')](_0x4d3f98[_0x2685('0x25')]);if(_0x4d3f98['name']){delete _0x4d3f98['name'];}_0x44c302[_0x2685('0x1a')](_0x881ad)[_0x2685('0x26')](_0x4d3f98);};}exports['index']=function(_0x4a9eb2,_0x1bf7d2){var _0x2b7e32={},_0x251f0e={},_0x2264b4={'count':0x0,'rows':[]};var _0x16e3e1=_['map'](db['Dynamics365Configuration'][_0x2685('0x27')],function(_0x72282c){return{'name':_0x72282c[_0x2685('0x28')],'type':_0x72282c['type'][_0x2685('0x29')]};});_0x251f0e[_0x2685('0x2a')]=_[_0x2685('0x2b')](_0x16e3e1,'name');_0x251f0e['query']=_[_0x2685('0x2c')](_0x4a9eb2['query']);_0x251f0e['filters']=_[_0x2685('0x2d')](_0x251f0e['model'],_0x251f0e[_0x2685('0x2e')]);_0x2b7e32[_0x2685('0x2f')]=_[_0x2685('0x2d')](_0x251f0e[_0x2685('0x2a')],qs[_0x2685('0x30')](_0x4a9eb2['query']['fields']));_0x2b7e32[_0x2685('0x2f')]=_0x2b7e32['attributes']['length']?_0x2b7e32[_0x2685('0x2f')]:_0x251f0e[_0x2685('0x2a')];if(!_0x4a9eb2[_0x2685('0x2e')][_0x2685('0x31')](_0x2685('0x32'))){_0x2b7e32[_0x2685('0x1f')]=qs[_0x2685('0x1f')](_0x4a9eb2[_0x2685('0x2e')][_0x2685('0x1f')]);_0x2b7e32[_0x2685('0x1d')]=qs[_0x2685('0x1d')](_0x4a9eb2[_0x2685('0x2e')][_0x2685('0x1d')]);}_0x2b7e32[_0x2685('0x33')]=qs['sort'](_0x4a9eb2[_0x2685('0x2e')]['sort']);_0x2b7e32[_0x2685('0x34')]=qs['filters'](_[_0x2685('0x35')](_0x4a9eb2[_0x2685('0x2e')],_0x251f0e['filters']),_0x16e3e1);if(_0x4a9eb2['query'][_0x2685('0x36')]){_0x2b7e32[_0x2685('0x34')]=_['merge'](_0x2b7e32['where'],{'$or':_[_0x2685('0x2b')](_0x16e3e1,function(_0x36007d){if(_0x36007d[_0x2685('0x37')]!==_0x2685('0x38')){var _0x501443={};_0x501443[_0x36007d['name']]={'$like':'%'+_0x4a9eb2[_0x2685('0x2e')]['filter']+'%'};return _0x501443;}})});}_0x2b7e32=_[_0x2685('0x39')]({},_0x2b7e32,_0x4a9eb2[_0x2685('0x3a')]);var _0x52bbcf={'where':_0x2b7e32[_0x2685('0x34')]};return db[_0x2685('0x3b')]['count'](_0x52bbcf)[_0x2685('0x3c')](function(_0x4b6a0a){_0x2264b4[_0x2685('0x20')]=_0x4b6a0a;if(_0x4a9eb2[_0x2685('0x2e')][_0x2685('0x3d')]){_0x2b7e32[_0x2685('0x3e')]=[{'all':!![]}];}return db[_0x2685('0x3b')]['findAll'](_0x2b7e32);})[_0x2685('0x3c')](function(_0x47469e){_0x2264b4[_0x2685('0x3f')]=_0x47469e;return _0x2264b4;})[_0x2685('0x3c')](respondWithFilteredResult(_0x1bf7d2,_0x2b7e32))[_0x2685('0x40')](handleError(_0x1bf7d2,null));};exports[_0x2685('0x41')]=function(_0x1069c5,_0x588e90){var _0x151726={'raw':![],'where':{'id':_0x1069c5[_0x2685('0x42')]['id']}},_0x53bdd4={};_0x53bdd4[_0x2685('0x2a')]=_['keys'](db[_0x2685('0x3b')][_0x2685('0x27')]);_0x53bdd4[_0x2685('0x2e')]=_[_0x2685('0x2c')](_0x1069c5['query']);_0x53bdd4['filters']=_['intersection'](_0x53bdd4[_0x2685('0x2a')],_0x53bdd4[_0x2685('0x2e')]);_0x151726[_0x2685('0x2f')]=_[_0x2685('0x2d')](_0x53bdd4[_0x2685('0x2a')],qs[_0x2685('0x30')](_0x1069c5['query'][_0x2685('0x30')]));_0x151726['attributes']=_0x151726['attributes'][_0x2685('0x43')]?_0x151726['attributes']:_0x53bdd4[_0x2685('0x2a')];if(_0x1069c5['query'][_0x2685('0x3d')]){_0x151726[_0x2685('0x3e')]=[{'all':!![]}];}_0x151726=_[_0x2685('0x39')]({},_0x151726,_0x1069c5['options']);return db[_0x2685('0x3b')][_0x2685('0x44')](_0x151726)['then'](handleEntityNotFound(_0x588e90,null))[_0x2685('0x3c')](respondWithResult(_0x588e90,null))['catch'](handleError(_0x588e90,null));};exports[_0x2685('0x45')]=function(_0x30580c,_0x1a6055){return db[_0x2685('0x3b')][_0x2685('0x45')](_0x30580c[_0x2685('0x46')],{})['then'](respondWithResult(_0x1a6055,0xc9))[_0x2685('0x40')](handleError(_0x1a6055,null));};exports[_0x2685('0x23')]=function(_0x4ccf93,_0x43ca0b){if(_0x4ccf93[_0x2685('0x46')]['id']){delete _0x4ccf93[_0x2685('0x46')]['id'];}return db[_0x2685('0x3b')][_0x2685('0x44')]({'where':{'id':_0x4ccf93[_0x2685('0x42')]['id']}})[_0x2685('0x3c')](handleEntityNotFound(_0x43ca0b,null))[_0x2685('0x3c')](saveUpdates(_0x4ccf93[_0x2685('0x46')],null))[_0x2685('0x3c')](respondWithResult(_0x43ca0b,null))[_0x2685('0x40')](handleError(_0x43ca0b,null));};exports[_0x2685('0x47')]=function(_0x366d83,_0x48eb51){return db['Dynamics365Configuration']['find']({'where':{'id':_0x366d83[_0x2685('0x42')]['id']}})['then'](handleEntityNotFound(_0x48eb51,null))[_0x2685('0x3c')](removeEntity(_0x48eb51,null))[_0x2685('0x40')](handleError(_0x48eb51,null));};exports[_0x2685('0x48')]=function(_0x6eeb23,_0x43a139,_0xb7c9c2){var _0x3a1d13={};var _0x5100d9={};var _0x3ae475;var _0x15c5b3;return db[_0x2685('0x3b')][_0x2685('0x49')]({'where':{'id':_0x6eeb23[_0x2685('0x42')]['id']}})[_0x2685('0x3c')](handleEntityNotFound(_0x43a139,null))[_0x2685('0x3c')](function(_0x13b877){if(_0x13b877){_0x3ae475=_0x13b877;_0x5100d9[_0x2685('0x2a')]=_[_0x2685('0x2c')](db['Dynamics365Field'][_0x2685('0x27')]);_0x5100d9[_0x2685('0x2e')]=_[_0x2685('0x2c')](_0x6eeb23['query']);_0x5100d9[_0x2685('0x4a')]=_['intersection'](_0x5100d9[_0x2685('0x2a')],_0x5100d9[_0x2685('0x2e')]);_0x3a1d13[_0x2685('0x2f')]=_[_0x2685('0x2d')](_0x5100d9[_0x2685('0x2a')],qs[_0x2685('0x30')](_0x6eeb23[_0x2685('0x2e')]['fields']));_0x3a1d13[_0x2685('0x2f')]=_0x3a1d13[_0x2685('0x2f')][_0x2685('0x43')]?_0x3a1d13['attributes']:_0x5100d9[_0x2685('0x2a')];_0x3a1d13[_0x2685('0x33')]=qs[_0x2685('0x4b')](_0x6eeb23[_0x2685('0x2e')][_0x2685('0x4b')]);_0x3a1d13['where']=qs[_0x2685('0x4a')](_['pick'](_0x6eeb23[_0x2685('0x2e')],_0x5100d9[_0x2685('0x4a')]));if(_0x6eeb23[_0x2685('0x2e')][_0x2685('0x36')]){_0x3a1d13[_0x2685('0x34')]=_[_0x2685('0x39')](_0x3a1d13[_0x2685('0x34')],{'$or':_[_0x2685('0x2b')](_0x3a1d13[_0x2685('0x2f')],function(_0x145937){var _0x5a8f64={};_0x5a8f64[_0x145937]={'$like':'%'+_0x6eeb23[_0x2685('0x2e')][_0x2685('0x36')]+'%'};return _0x5a8f64;})});}_0x3a1d13=_['merge']({},_0x3a1d13,_0x6eeb23[_0x2685('0x3a')]);return _0x3ae475[_0x2685('0x48')](_0x3a1d13);}})[_0x2685('0x3c')](function(_0x190b10){if(_0x190b10){_0x15c5b3=_0x190b10['length'];if(!_0x6eeb23[_0x2685('0x2e')][_0x2685('0x31')](_0x2685('0x32'))){_0x3a1d13[_0x2685('0x1f')]=qs[_0x2685('0x1f')](_0x6eeb23[_0x2685('0x2e')][_0x2685('0x1f')]);_0x3a1d13[_0x2685('0x1d')]=qs[_0x2685('0x1d')](_0x6eeb23[_0x2685('0x2e')][_0x2685('0x1d')]);}return _0x3ae475['getFields'](_0x3a1d13);}})[_0x2685('0x3c')](function(_0x31bb6e){if(_0x31bb6e){return _0x31bb6e?{'count':_0x15c5b3,'rows':_0x31bb6e}:null;}})[_0x2685('0x3c')](respondWithResult(_0x43a139,null))[_0x2685('0x40')](handleError(_0x43a139,null));};exports['getSubjects']=function(_0x573d86,_0x7fe272,_0x27a442){var _0x13efef={};var _0x4b328a={};var _0x5e1e01;var _0x4cf69b;return db[_0x2685('0x3b')][_0x2685('0x49')]({'where':{'id':_0x573d86[_0x2685('0x42')]['id']}})[_0x2685('0x3c')](handleEntityNotFound(_0x7fe272,null))[_0x2685('0x3c')](function(_0x1954e3){if(_0x1954e3){_0x5e1e01=_0x1954e3;_0x4b328a[_0x2685('0x2a')]=_[_0x2685('0x2c')](db[_0x2685('0x4c')][_0x2685('0x27')]);_0x4b328a[_0x2685('0x2e')]=_[_0x2685('0x2c')](_0x573d86[_0x2685('0x2e')]);_0x4b328a['filters']=_[_0x2685('0x2d')](_0x4b328a['model'],_0x4b328a[_0x2685('0x2e')]);_0x13efef['attributes']=_[_0x2685('0x2d')](_0x4b328a['model'],qs[_0x2685('0x30')](_0x573d86['query'][_0x2685('0x30')]));_0x13efef['attributes']=_0x13efef['attributes'][_0x2685('0x43')]?_0x13efef['attributes']:_0x4b328a[_0x2685('0x2a')];_0x13efef[_0x2685('0x33')]=qs['sort'](_0x573d86[_0x2685('0x2e')][_0x2685('0x4b')]);_0x13efef[_0x2685('0x34')]=qs[_0x2685('0x4a')](_[_0x2685('0x35')](_0x573d86[_0x2685('0x2e')],_0x4b328a[_0x2685('0x4a')]));if(_0x573d86[_0x2685('0x2e')][_0x2685('0x36')]){_0x13efef[_0x2685('0x34')]=_[_0x2685('0x39')](_0x13efef['where'],{'$or':_[_0x2685('0x2b')](_0x13efef[_0x2685('0x2f')],function(_0x5beffa){var _0x2743e8={};_0x2743e8[_0x5beffa]={'$like':'%'+_0x573d86[_0x2685('0x2e')][_0x2685('0x36')]+'%'};return _0x2743e8;})});}_0x13efef=_[_0x2685('0x39')]({},_0x13efef,_0x573d86[_0x2685('0x3a')]);return _0x5e1e01[_0x2685('0x4d')](_0x13efef);}})[_0x2685('0x3c')](function(_0x21855a){if(_0x21855a){_0x4cf69b=_0x21855a[_0x2685('0x43')];if(!_0x573d86[_0x2685('0x2e')][_0x2685('0x31')](_0x2685('0x32'))){_0x13efef[_0x2685('0x1f')]=qs[_0x2685('0x1f')](_0x573d86[_0x2685('0x2e')][_0x2685('0x1f')]);_0x13efef[_0x2685('0x1d')]=qs[_0x2685('0x1d')](_0x573d86['query']['offset']);}return _0x5e1e01[_0x2685('0x4d')](_0x13efef);}})['then'](function(_0x2f8871){if(_0x2f8871){return _0x2f8871?{'count':_0x4cf69b,'rows':_0x2f8871}:null;}})['then'](respondWithResult(_0x7fe272,null))['catch'](handleError(_0x7fe272,null));};exports['getDescriptions']=function(_0x4516bf,_0x3c0a0e,_0x4cff8d){var _0x4a83b2={};var _0x387e6d={};var _0x28221f;var _0x34faf0;return db[_0x2685('0x3b')][_0x2685('0x49')]({'where':{'id':_0x4516bf['params']['id']}})[_0x2685('0x3c')](handleEntityNotFound(_0x3c0a0e,null))[_0x2685('0x3c')](function(_0x17475c){if(_0x17475c){_0x28221f=_0x17475c;_0x387e6d[_0x2685('0x2a')]=_['keys'](db['Dynamics365Field'][_0x2685('0x27')]);_0x387e6d[_0x2685('0x2e')]=_[_0x2685('0x2c')](_0x4516bf[_0x2685('0x2e')]);_0x387e6d['filters']=_['intersection'](_0x387e6d[_0x2685('0x2a')],_0x387e6d[_0x2685('0x2e')]);_0x4a83b2[_0x2685('0x2f')]=_[_0x2685('0x2d')](_0x387e6d[_0x2685('0x2a')],qs['fields'](_0x4516bf[_0x2685('0x2e')][_0x2685('0x30')]));_0x4a83b2[_0x2685('0x2f')]=_0x4a83b2[_0x2685('0x2f')]['length']?_0x4a83b2['attributes']:_0x387e6d[_0x2685('0x2a')];_0x4a83b2[_0x2685('0x33')]=qs[_0x2685('0x4b')](_0x4516bf[_0x2685('0x2e')][_0x2685('0x4b')]);_0x4a83b2[_0x2685('0x34')]=qs['filters'](_[_0x2685('0x35')](_0x4516bf[_0x2685('0x2e')],_0x387e6d[_0x2685('0x4a')]));if(_0x4516bf['query'][_0x2685('0x36')]){_0x4a83b2[_0x2685('0x34')]=_['merge'](_0x4a83b2[_0x2685('0x34')],{'$or':_['map'](_0x4a83b2['attributes'],function(_0x18ddcd){var _0x21e3ef={};_0x21e3ef[_0x18ddcd]={'$like':'%'+_0x4516bf['query'][_0x2685('0x36')]+'%'};return _0x21e3ef;})});}_0x4a83b2=_['merge']({},_0x4a83b2,_0x4516bf[_0x2685('0x3a')]);return _0x28221f['getDescriptions'](_0x4a83b2);}})[_0x2685('0x3c')](function(_0x176dc5){if(_0x176dc5){_0x34faf0=_0x176dc5[_0x2685('0x43')];if(!_0x4516bf[_0x2685('0x2e')][_0x2685('0x31')](_0x2685('0x32'))){_0x4a83b2[_0x2685('0x1f')]=qs['limit'](_0x4516bf[_0x2685('0x2e')][_0x2685('0x1f')]);_0x4a83b2['offset']=qs[_0x2685('0x1d')](_0x4516bf[_0x2685('0x2e')]['offset']);}return _0x28221f[_0x2685('0x4e')](_0x4a83b2);}})[_0x2685('0x3c')](function(_0x10e09f){if(_0x10e09f){return _0x10e09f?{'count':_0x34faf0,'rows':_0x10e09f}:null;}})['then'](respondWithResult(_0x3c0a0e,null))[_0x2685('0x40')](handleError(_0x3c0a0e,null));};
\ No newline at end of file
+var _0x9647=['getDescriptions','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','name','send','index','map','Dynamics365Configuration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','fields','length','nolimit','order','filter','where','VIRTUAL','merge','includeAll','include','rows','catch','model','find','create','body','params','getFields','findOne','Dynamics365Field','sort','options','hasOwnProperty','getSubjects','pick'];(function(_0x1b97f3,_0xce63f3){var _0x32d818=function(_0x9671b7){while(--_0x9671b7){_0x1b97f3['push'](_0x1b97f3['shift']());}};_0x32d818(++_0xce63f3);}(_0x9647,0x13d));var _0x7964=function(_0xdf1e46,_0x36df44){_0xdf1e46=_0xdf1e46-0x0;var _0x324e3c=_0x9647[_0xdf1e46];return _0x324e3c;};'use strict';var emlformat=require(_0x7964('0x0'));var rimraf=require(_0x7964('0x1'));var zipdir=require(_0x7964('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7964('0x3'));var BPromise=require(_0x7964('0x4'));var Mustache=require(_0x7964('0x5'));var util=require(_0x7964('0x6'));var path=require(_0x7964('0x7'));var sox=require(_0x7964('0x8'));var csv=require(_0x7964('0x9'));var ejs=require(_0x7964('0xa'));var fs=require('fs');var fs_extra=require(_0x7964('0xb'));var _=require(_0x7964('0xc'));var squel=require(_0x7964('0xd'));var crypto=require('crypto');var jsforce=require(_0x7964('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7964('0x9'));var querystring=require(_0x7964('0xf'));var Papa=require('papaparse');var Redis=require(_0x7964('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x7964('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7964('0x12'));var logger=require(_0x7964('0x13'))(_0x7964('0x14'));var utils=require(_0x7964('0x15'));var config=require(_0x7964('0x16'));var licenseUtil=require(_0x7964('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1b512b,_0x5ef007){_0x5ef007=_0x5ef007||0xcc;return function(_0x38ccd9){if(_0x38ccd9){return _0x1b512b[_0x7964('0x18')](_0x5ef007);}return _0x1b512b[_0x7964('0x19')](_0x5ef007)[_0x7964('0x1a')]();};}function respondWithResult(_0x4379b1,_0x507b4d){_0x507b4d=_0x507b4d||0xc8;return function(_0x2e159d){if(_0x2e159d){return _0x4379b1[_0x7964('0x19')](_0x507b4d)[_0x7964('0x1b')](_0x2e159d);}};}function respondWithFilteredResult(_0x58378a,_0x24fab0){return function(_0x13ef5a){if(_0x13ef5a){var _0x3238b6=typeof _0x24fab0[_0x7964('0x1c')]===_0x7964('0x1d')&&typeof _0x24fab0[_0x7964('0x1e')]===_0x7964('0x1d');var _0x2dee54=_0x13ef5a[_0x7964('0x1f')];var _0x15887b=_0x3238b6?0x0:_0x24fab0[_0x7964('0x1c')];var _0x5281a4=_0x3238b6?_0x13ef5a[_0x7964('0x1f')]:_0x24fab0[_0x7964('0x1c')]+_0x24fab0[_0x7964('0x1e')];var _0x5e2b1f;if(_0x5281a4>=_0x2dee54){_0x5281a4=_0x2dee54;_0x5e2b1f=0xc8;}else{_0x5e2b1f=0xce;}_0x58378a[_0x7964('0x19')](_0x5e2b1f);return _0x58378a[_0x7964('0x20')](_0x7964('0x21'),_0x15887b+'-'+_0x5281a4+'/'+_0x2dee54)[_0x7964('0x1b')](_0x13ef5a);}return null;};}function patchUpdates(_0x3a9b4b){return function(_0x308abf){try{jsonpatch['apply'](_0x308abf,_0x3a9b4b,!![]);}catch(_0x41f0fc){return BPromise[_0x7964('0x22')](_0x41f0fc);}return _0x308abf[_0x7964('0x23')]();};}function saveUpdates(_0x129aed,_0x437038){return function(_0x3eeef6){if(_0x3eeef6){return _0x3eeef6[_0x7964('0x24')](_0x129aed)[_0x7964('0x25')](function(_0x36d314){return _0x36d314;});}return null;};}function removeEntity(_0x39a457,_0x32e208){return function(_0x3e6f9d){if(_0x3e6f9d){return _0x3e6f9d[_0x7964('0x26')]()[_0x7964('0x25')](function(){_0x39a457['status'](0xcc)[_0x7964('0x1a')]();});}};}function handleEntityNotFound(_0x49d85e,_0xf9b6f0){return function(_0x2597fd){if(!_0x2597fd){_0x49d85e[_0x7964('0x18')](0x194);}return _0x2597fd;};}function handleError(_0x3254cd,_0xb72c1e){_0xb72c1e=_0xb72c1e||0x1f4;return function(_0x4420e6){logger['error'](_0x4420e6['stack']);if(_0x4420e6[_0x7964('0x27')]){delete _0x4420e6[_0x7964('0x27')];}_0x3254cd['status'](_0xb72c1e)[_0x7964('0x28')](_0x4420e6);};}exports[_0x7964('0x29')]=function(_0x4885c7,_0x2cfbda){var _0x1954be={},_0x82b46d={},_0xa80cfa={'count':0x0,'rows':[]};var _0x12e4a6=_[_0x7964('0x2a')](db[_0x7964('0x2b')][_0x7964('0x2c')],function(_0x1ece10){return{'name':_0x1ece10[_0x7964('0x2d')],'type':_0x1ece10[_0x7964('0x2e')][_0x7964('0x2f')]};});_0x82b46d['model']=_['map'](_0x12e4a6,'name');_0x82b46d[_0x7964('0x30')]=_[_0x7964('0x31')](_0x4885c7['query']);_0x82b46d[_0x7964('0x32')]=_[_0x7964('0x33')](_0x82b46d['model'],_0x82b46d[_0x7964('0x30')]);_0x1954be[_0x7964('0x34')]=_[_0x7964('0x33')](_0x82b46d['model'],qs[_0x7964('0x35')](_0x4885c7[_0x7964('0x30')][_0x7964('0x35')]));_0x1954be[_0x7964('0x34')]=_0x1954be[_0x7964('0x34')][_0x7964('0x36')]?_0x1954be['attributes']:_0x82b46d['model'];if(!_0x4885c7['query']['hasOwnProperty'](_0x7964('0x37'))){_0x1954be[_0x7964('0x1e')]=qs[_0x7964('0x1e')](_0x4885c7[_0x7964('0x30')][_0x7964('0x1e')]);_0x1954be[_0x7964('0x1c')]=qs[_0x7964('0x1c')](_0x4885c7[_0x7964('0x30')]['offset']);}_0x1954be[_0x7964('0x38')]=qs['sort'](_0x4885c7['query']['sort']);_0x1954be['where']=qs[_0x7964('0x32')](_['pick'](_0x4885c7[_0x7964('0x30')],_0x82b46d[_0x7964('0x32')]),_0x12e4a6);if(_0x4885c7['query'][_0x7964('0x39')]){_0x1954be[_0x7964('0x3a')]=_['merge'](_0x1954be[_0x7964('0x3a')],{'$or':_[_0x7964('0x2a')](_0x12e4a6,function(_0x1c3ea6){if(_0x1c3ea6[_0x7964('0x2e')]!==_0x7964('0x3b')){var _0x6182a0={};_0x6182a0[_0x1c3ea6[_0x7964('0x27')]]={'$like':'%'+_0x4885c7[_0x7964('0x30')][_0x7964('0x39')]+'%'};return _0x6182a0;}})});}_0x1954be=_[_0x7964('0x3c')]({},_0x1954be,_0x4885c7['options']);var _0x18b829={'where':_0x1954be[_0x7964('0x3a')]};return db['Dynamics365Configuration'][_0x7964('0x1f')](_0x18b829)[_0x7964('0x25')](function(_0x4399cc){_0xa80cfa[_0x7964('0x1f')]=_0x4399cc;if(_0x4885c7[_0x7964('0x30')][_0x7964('0x3d')]){_0x1954be[_0x7964('0x3e')]=[{'all':!![]}];}return db[_0x7964('0x2b')]['findAll'](_0x1954be);})['then'](function(_0x487fe1){_0xa80cfa[_0x7964('0x3f')]=_0x487fe1;return _0xa80cfa;})[_0x7964('0x25')](respondWithFilteredResult(_0x2cfbda,_0x1954be))[_0x7964('0x40')](handleError(_0x2cfbda,null));};exports['show']=function(_0x330afc,_0x4d474f){var _0x5ee615={'raw':![],'where':{'id':_0x330afc['params']['id']}},_0x281a5b={};_0x281a5b[_0x7964('0x41')]=_['keys'](db[_0x7964('0x2b')][_0x7964('0x2c')]);_0x281a5b[_0x7964('0x30')]=_[_0x7964('0x31')](_0x330afc[_0x7964('0x30')]);_0x281a5b['filters']=_['intersection'](_0x281a5b['model'],_0x281a5b[_0x7964('0x30')]);_0x5ee615[_0x7964('0x34')]=_[_0x7964('0x33')](_0x281a5b[_0x7964('0x41')],qs[_0x7964('0x35')](_0x330afc['query'][_0x7964('0x35')]));_0x5ee615[_0x7964('0x34')]=_0x5ee615['attributes']['length']?_0x5ee615[_0x7964('0x34')]:_0x281a5b[_0x7964('0x41')];if(_0x330afc['query'][_0x7964('0x3d')]){_0x5ee615[_0x7964('0x3e')]=[{'all':!![]}];}_0x5ee615=_[_0x7964('0x3c')]({},_0x5ee615,_0x330afc['options']);return db[_0x7964('0x2b')][_0x7964('0x42')](_0x5ee615)['then'](handleEntityNotFound(_0x4d474f,null))[_0x7964('0x25')](respondWithResult(_0x4d474f,null))['catch'](handleError(_0x4d474f,null));};exports['create']=function(_0xf39146,_0x3a1a2e){return db['Dynamics365Configuration'][_0x7964('0x43')](_0xf39146[_0x7964('0x44')],{})[_0x7964('0x25')](respondWithResult(_0x3a1a2e,0xc9))[_0x7964('0x40')](handleError(_0x3a1a2e,null));};exports[_0x7964('0x24')]=function(_0x1be3f3,_0x36498c){if(_0x1be3f3[_0x7964('0x44')]['id']){delete _0x1be3f3['body']['id'];}return db[_0x7964('0x2b')][_0x7964('0x42')]({'where':{'id':_0x1be3f3[_0x7964('0x45')]['id']}})['then'](handleEntityNotFound(_0x36498c,null))[_0x7964('0x25')](saveUpdates(_0x1be3f3[_0x7964('0x44')],null))['then'](respondWithResult(_0x36498c,null))[_0x7964('0x40')](handleError(_0x36498c,null));};exports[_0x7964('0x26')]=function(_0x4a60b2,_0x4b2739){return db[_0x7964('0x2b')][_0x7964('0x42')]({'where':{'id':_0x4a60b2[_0x7964('0x45')]['id']}})[_0x7964('0x25')](handleEntityNotFound(_0x4b2739,null))[_0x7964('0x25')](removeEntity(_0x4b2739,null))['catch'](handleError(_0x4b2739,null));};exports[_0x7964('0x46')]=function(_0xa18d25,_0x3e76f3,_0x3fb8f8){var _0x387573={};var _0x29e611={};var _0x2be203;var _0x4abd07;return db['Dynamics365Configuration'][_0x7964('0x47')]({'where':{'id':_0xa18d25[_0x7964('0x45')]['id']}})[_0x7964('0x25')](handleEntityNotFound(_0x3e76f3,null))['then'](function(_0x534b2e){if(_0x534b2e){_0x2be203=_0x534b2e;_0x29e611[_0x7964('0x41')]=_[_0x7964('0x31')](db[_0x7964('0x48')][_0x7964('0x2c')]);_0x29e611[_0x7964('0x30')]=_['keys'](_0xa18d25[_0x7964('0x30')]);_0x29e611[_0x7964('0x32')]=_[_0x7964('0x33')](_0x29e611[_0x7964('0x41')],_0x29e611[_0x7964('0x30')]);_0x387573[_0x7964('0x34')]=_[_0x7964('0x33')](_0x29e611[_0x7964('0x41')],qs[_0x7964('0x35')](_0xa18d25[_0x7964('0x30')][_0x7964('0x35')]));_0x387573[_0x7964('0x34')]=_0x387573[_0x7964('0x34')][_0x7964('0x36')]?_0x387573[_0x7964('0x34')]:_0x29e611[_0x7964('0x41')];_0x387573['order']=qs[_0x7964('0x49')](_0xa18d25[_0x7964('0x30')][_0x7964('0x49')]);_0x387573[_0x7964('0x3a')]=qs[_0x7964('0x32')](_['pick'](_0xa18d25[_0x7964('0x30')],_0x29e611[_0x7964('0x32')]));if(_0xa18d25[_0x7964('0x30')][_0x7964('0x39')]){_0x387573['where']=_[_0x7964('0x3c')](_0x387573[_0x7964('0x3a')],{'$or':_[_0x7964('0x2a')](_0x387573[_0x7964('0x34')],function(_0x4130ae){var _0x53b094={};_0x53b094[_0x4130ae]={'$like':'%'+_0xa18d25[_0x7964('0x30')][_0x7964('0x39')]+'%'};return _0x53b094;})});}_0x387573=_['merge']({},_0x387573,_0xa18d25[_0x7964('0x4a')]);return _0x2be203['getFields'](_0x387573);}})[_0x7964('0x25')](function(_0x51dacb){if(_0x51dacb){_0x4abd07=_0x51dacb[_0x7964('0x36')];if(!_0xa18d25[_0x7964('0x30')][_0x7964('0x4b')](_0x7964('0x37'))){_0x387573['limit']=qs['limit'](_0xa18d25[_0x7964('0x30')]['limit']);_0x387573[_0x7964('0x1c')]=qs[_0x7964('0x1c')](_0xa18d25[_0x7964('0x30')][_0x7964('0x1c')]);}return _0x2be203['getFields'](_0x387573);}})['then'](function(_0x33aad3){if(_0x33aad3){return _0x33aad3?{'count':_0x4abd07,'rows':_0x33aad3}:null;}})[_0x7964('0x25')](respondWithResult(_0x3e76f3,null))[_0x7964('0x40')](handleError(_0x3e76f3,null));};exports[_0x7964('0x4c')]=function(_0x5cc51f,_0x10d347,_0x27003b){var _0x407f60={};var _0x541a75={};var _0x4d4cfb;var _0x40b88a;return db[_0x7964('0x2b')][_0x7964('0x47')]({'where':{'id':_0x5cc51f[_0x7964('0x45')]['id']}})[_0x7964('0x25')](handleEntityNotFound(_0x10d347,null))[_0x7964('0x25')](function(_0x3b752c){if(_0x3b752c){_0x4d4cfb=_0x3b752c;_0x541a75['model']=_[_0x7964('0x31')](db['Dynamics365Field'][_0x7964('0x2c')]);_0x541a75['query']=_[_0x7964('0x31')](_0x5cc51f[_0x7964('0x30')]);_0x541a75[_0x7964('0x32')]=_[_0x7964('0x33')](_0x541a75[_0x7964('0x41')],_0x541a75[_0x7964('0x30')]);_0x407f60[_0x7964('0x34')]=_[_0x7964('0x33')](_0x541a75['model'],qs[_0x7964('0x35')](_0x5cc51f[_0x7964('0x30')][_0x7964('0x35')]));_0x407f60[_0x7964('0x34')]=_0x407f60[_0x7964('0x34')]['length']?_0x407f60[_0x7964('0x34')]:_0x541a75[_0x7964('0x41')];_0x407f60['order']=qs[_0x7964('0x49')](_0x5cc51f[_0x7964('0x30')][_0x7964('0x49')]);_0x407f60[_0x7964('0x3a')]=qs['filters'](_[_0x7964('0x4d')](_0x5cc51f[_0x7964('0x30')],_0x541a75[_0x7964('0x32')]));if(_0x5cc51f['query'][_0x7964('0x39')]){_0x407f60['where']=_[_0x7964('0x3c')](_0x407f60[_0x7964('0x3a')],{'$or':_[_0x7964('0x2a')](_0x407f60[_0x7964('0x34')],function(_0x336a79){var _0x200165={};_0x200165[_0x336a79]={'$like':'%'+_0x5cc51f[_0x7964('0x30')][_0x7964('0x39')]+'%'};return _0x200165;})});}_0x407f60=_[_0x7964('0x3c')]({},_0x407f60,_0x5cc51f[_0x7964('0x4a')]);return _0x4d4cfb[_0x7964('0x4c')](_0x407f60);}})[_0x7964('0x25')](function(_0x32885a){if(_0x32885a){_0x40b88a=_0x32885a['length'];if(!_0x5cc51f[_0x7964('0x30')]['hasOwnProperty'](_0x7964('0x37'))){_0x407f60[_0x7964('0x1e')]=qs['limit'](_0x5cc51f['query']['limit']);_0x407f60[_0x7964('0x1c')]=qs[_0x7964('0x1c')](_0x5cc51f['query'][_0x7964('0x1c')]);}return _0x4d4cfb[_0x7964('0x4c')](_0x407f60);}})[_0x7964('0x25')](function(_0x32f091){if(_0x32f091){return _0x32f091?{'count':_0x40b88a,'rows':_0x32f091}:null;}})[_0x7964('0x25')](respondWithResult(_0x10d347,null))['catch'](handleError(_0x10d347,null));};exports[_0x7964('0x4e')]=function(_0x2d5f35,_0x38dd41,_0x20e3a8){var _0x6d8e9c={};var _0x3568c6={};var _0x1bfa7a;var _0x3c80f8;return db['Dynamics365Configuration'][_0x7964('0x47')]({'where':{'id':_0x2d5f35['params']['id']}})['then'](handleEntityNotFound(_0x38dd41,null))['then'](function(_0x526390){if(_0x526390){_0x1bfa7a=_0x526390;_0x3568c6[_0x7964('0x41')]=_[_0x7964('0x31')](db[_0x7964('0x48')]['rawAttributes']);_0x3568c6['query']=_[_0x7964('0x31')](_0x2d5f35[_0x7964('0x30')]);_0x3568c6[_0x7964('0x32')]=_[_0x7964('0x33')](_0x3568c6[_0x7964('0x41')],_0x3568c6[_0x7964('0x30')]);_0x6d8e9c[_0x7964('0x34')]=_['intersection'](_0x3568c6[_0x7964('0x41')],qs[_0x7964('0x35')](_0x2d5f35[_0x7964('0x30')][_0x7964('0x35')]));_0x6d8e9c['attributes']=_0x6d8e9c[_0x7964('0x34')]['length']?_0x6d8e9c['attributes']:_0x3568c6[_0x7964('0x41')];_0x6d8e9c[_0x7964('0x38')]=qs[_0x7964('0x49')](_0x2d5f35[_0x7964('0x30')][_0x7964('0x49')]);_0x6d8e9c['where']=qs[_0x7964('0x32')](_[_0x7964('0x4d')](_0x2d5f35[_0x7964('0x30')],_0x3568c6[_0x7964('0x32')]));if(_0x2d5f35[_0x7964('0x30')]['filter']){_0x6d8e9c[_0x7964('0x3a')]=_[_0x7964('0x3c')](_0x6d8e9c[_0x7964('0x3a')],{'$or':_[_0x7964('0x2a')](_0x6d8e9c[_0x7964('0x34')],function(_0x4e32c1){var _0x4d5d05={};_0x4d5d05[_0x4e32c1]={'$like':'%'+_0x2d5f35[_0x7964('0x30')][_0x7964('0x39')]+'%'};return _0x4d5d05;})});}_0x6d8e9c=_[_0x7964('0x3c')]({},_0x6d8e9c,_0x2d5f35['options']);return _0x1bfa7a[_0x7964('0x4e')](_0x6d8e9c);}})[_0x7964('0x25')](function(_0x370826){if(_0x370826){_0x3c80f8=_0x370826['length'];if(!_0x2d5f35[_0x7964('0x30')]['hasOwnProperty'](_0x7964('0x37'))){_0x6d8e9c[_0x7964('0x1e')]=qs['limit'](_0x2d5f35[_0x7964('0x30')][_0x7964('0x1e')]);_0x6d8e9c[_0x7964('0x1c')]=qs[_0x7964('0x1c')](_0x2d5f35[_0x7964('0x30')]['offset']);}return _0x1bfa7a[_0x7964('0x4e')](_0x6d8e9c);}})['then'](function(_0x5b7e27){if(_0x5b7e27){return _0x5b7e27?{'count':_0x3c80f8,'rows':_0x5b7e27}:null;}})[_0x7964('0x25')](respondWithResult(_0x38dd41,null))[_0x7964('0x40')](handleError(_0x38dd41,null));};
\ No newline at end of file
index ae9c658..1a55db8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb821=['rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','define','Dynamics365Configuration','int_dynamics365_configurations','util','../../config/logger','bluebird'];(function(_0x4d62a2,_0x50e7fd){var _0x2bb49d=function(_0x50cf88){while(--_0x50cf88){_0x4d62a2['push'](_0x4d62a2['shift']());}};_0x2bb49d(++_0x50e7fd);}(_0xb821,0xa7));var _0x1b82=function(_0x46470c,_0x31243d){_0x46470c=_0x46470c-0x0;var _0x2d9258=_0xb821[_0x46470c];return _0x2d9258;};'use strict';var _=require('lodash');var util=require(_0x1b82('0x0'));var logger=require(_0x1b82('0x1'))('api');var moment=require('moment');var BPromise=require(_0x1b82('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1b82('0x3'));var config=require(_0x1b82('0x4'));var attributes=require(_0x1b82('0x5'));module[_0x1b82('0x6')]=function(_0x597ca7,_0x3e27c4){return _0x597ca7[_0x1b82('0x7')](_0x1b82('0x8'),attributes,{'tableName':_0x1b82('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe14d=['util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','int_dynamics365_configurations','lodash'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0xe14d,0x1ee));var _0xde14=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0xe14d[_0x15bc81];return _0x59440e;};'use strict';var _=require(_0xde14('0x0'));var util=require(_0xde14('0x1'));var logger=require(_0xde14('0x2'))(_0xde14('0x3'));var moment=require('moment');var BPromise=require(_0xde14('0x4'));var rp=require(_0xde14('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xde14('0x6'));var config=require(_0xde14('0x7'));var attributes=require(_0xde14('0x8'));module[_0xde14('0x9')]=function(_0x461af3,_0xba1514){return _0x461af3['define']('Dynamics365Configuration',attributes,{'tableName':_0xde14('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6669c8c..a59da43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1d8=['request\x20sent','debug','stringify','error','message','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','request','info','Dynamics365Configuration,\x20%s,\x20%s'];(function(_0x4b2a2c,_0x4051ed){var _0x9146f4=function(_0x3a2772){while(--_0x3a2772){_0x4b2a2c['push'](_0x4b2a2c['shift']());}};_0x9146f4(++_0x4051ed);}(_0xf1d8,0x180));var _0x8f1d=function(_0x43d16c,_0x2b5447){_0x43d16c=_0x43d16c-0x0;var _0x208cce=_0xf1d8[_0x43d16c];return _0x208cce;};'use strict';var _=require('lodash');var util=require(_0x8f1d('0x0'));var moment=require(_0x8f1d('0x1'));var BPromise=require(_0x8f1d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8f1d('0x3'));var db=require(_0x8f1d('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x8f1d('0x5'))('rpc');var config=require(_0x8f1d('0x6'));var jayson=require(_0x8f1d('0x7'));var client=jayson['client'][_0x8f1d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4f29f2,_0x38efc1,_0x414c26){return new BPromise(function(_0x50a755,_0x2aa4e9){return client[_0x8f1d('0x9')](_0x4f29f2,_0x414c26)['then'](function(_0x6f13be){logger[_0x8f1d('0xa')](_0x8f1d('0xb'),_0x38efc1,_0x8f1d('0xc'));logger[_0x8f1d('0xd')]('Dynamics365Configuration,\x20%s,\x20%s,\x20%s',_0x38efc1,'request\x20sent',JSON[_0x8f1d('0xe')](_0x6f13be));if(_0x6f13be[_0x8f1d('0xf')]){if(_0x6f13be['error']['code']===0x1f4){logger['error'](_0x8f1d('0xb'),_0x38efc1,_0x6f13be['error'][_0x8f1d('0x10')]);return _0x2aa4e9(_0x6f13be['error'][_0x8f1d('0x10')]);}logger[_0x8f1d('0xf')](_0x8f1d('0xb'),_0x38efc1,_0x6f13be['error']['message']);return _0x50a755(_0x6f13be[_0x8f1d('0xf')][_0x8f1d('0x10')]);}else{logger[_0x8f1d('0xa')](_0x8f1d('0xb'),_0x38efc1,_0x8f1d('0xc'));_0x50a755(_0x6f13be['result'][_0x8f1d('0x10')]);}})[_0x8f1d('0x11')](function(_0x4556f3){logger[_0x8f1d('0xf')]('Dynamics365Configuration,\x20%s,\x20%s',_0x38efc1,_0x4556f3);_0x2aa4e9(_0x4556f3);});});}
\ No newline at end of file
+var _0xa575=['lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','Dynamics365Configuration,\x20%s,\x20%s','message','info','result'];(function(_0xf1e0b1,_0x531f27){var _0x23b714=function(_0x891431){while(--_0x891431){_0xf1e0b1['push'](_0xf1e0b1['shift']());}};_0x23b714(++_0x531f27);}(_0xa575,0x114));var _0x5a57=function(_0x4a3034,_0x4f32aa){_0x4a3034=_0x4a3034-0x0;var _0x536786=_0xa575[_0x4a3034];return _0x536786;};'use strict';var _=require(_0x5a57('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5a57('0x1'));var rs=require(_0x5a57('0x2'));var fs=require('fs');var Redis=require(_0x5a57('0x3'));var db=require(_0x5a57('0x4'))['db'];var utils=require(_0x5a57('0x5'));var logger=require(_0x5a57('0x6'))(_0x5a57('0x7'));var config=require(_0x5a57('0x8'));var jayson=require(_0x5a57('0x9'));var client=jayson[_0x5a57('0xa')][_0x5a57('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x41ceb9,_0x467441,_0x4e2386){return new BPromise(function(_0x2234fb,_0x4a6eb0){return client[_0x5a57('0xc')](_0x41ceb9,_0x4e2386)[_0x5a57('0xd')](function(_0x4e8477){logger['info']('Dynamics365Configuration,\x20%s,\x20%s',_0x467441,'request\x20sent');logger[_0x5a57('0xe')](_0x5a57('0xf'),_0x467441,_0x5a57('0x10'),JSON[_0x5a57('0x11')](_0x4e8477));if(_0x4e8477['error']){if(_0x4e8477[_0x5a57('0x12')]['code']===0x1f4){logger[_0x5a57('0x12')](_0x5a57('0x13'),_0x467441,_0x4e8477[_0x5a57('0x12')][_0x5a57('0x14')]);return _0x4a6eb0(_0x4e8477[_0x5a57('0x12')][_0x5a57('0x14')]);}logger[_0x5a57('0x12')](_0x5a57('0x13'),_0x467441,_0x4e8477['error'][_0x5a57('0x14')]);return _0x2234fb(_0x4e8477[_0x5a57('0x12')][_0x5a57('0x14')]);}else{logger[_0x5a57('0x15')](_0x5a57('0x13'),_0x467441,'request\x20sent');_0x2234fb(_0x4e8477[_0x5a57('0x16')][_0x5a57('0x14')]);}})['catch'](function(_0x56102a){logger[_0x5a57('0x12')]('Dynamics365Configuration,\x20%s,\x20%s',_0x467441,_0x56102a);_0x4a6eb0(_0x56102a);});});}
\ No newline at end of file
index 3cf63ae..ba86661 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ad0=['express','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','index','show','post','put','/:id','update','delete','exports','multer','util','path','connect-timeout'];(function(_0x1bff41,_0x386880){var _0x4db66b=function(_0x5aa7b6){while(--_0x5aa7b6){_0x1bff41['push'](_0x1bff41['shift']());}};_0x4db66b(++_0x386880);}(_0x4ad0,0xc2));var _0x04ad=function(_0x124921,_0x36596b){_0x124921=_0x124921-0x0;var _0x2fd6a9=_0x4ad0[_0x124921];return _0x2fd6a9;};'use strict';var multer=require(_0x04ad('0x0'));var util=require(_0x04ad('0x1'));var path=require(_0x04ad('0x2'));var timeout=require(_0x04ad('0x3'));var express=require(_0x04ad('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x04ad('0x5'));var config=require(_0x04ad('0x6'));var controller=require(_0x04ad('0x7'));router[_0x04ad('0x8')]('/',auth[_0x04ad('0x9')](),controller[_0x04ad('0xa')]);router[_0x04ad('0x8')]('/:id',auth[_0x04ad('0x9')](),controller[_0x04ad('0xb')]);router[_0x04ad('0xc')]('/',auth[_0x04ad('0x9')](),controller['create']);router[_0x04ad('0xd')](_0x04ad('0xe'),auth[_0x04ad('0x9')](),controller[_0x04ad('0xf')]);router[_0x04ad('0x10')]('/:id',auth[_0x04ad('0x9')](),controller['destroy']);module[_0x04ad('0x11')]=router;
\ No newline at end of file
+var _0xfb1a=['../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x18ed67,_0x51e154){var _0x253b35=function(_0x598c59){while(--_0x598c59){_0x18ed67['push'](_0x18ed67['shift']());}};_0x253b35(++_0x51e154);}(_0xfb1a,0xb6));var _0xafb1=function(_0x214711,_0x2a8642){_0x214711=_0x214711-0x0;var _0x1ca7c8=_0xfb1a[_0x214711];return _0x1ca7c8;};'use strict';var multer=require(_0xafb1('0x0'));var util=require('util');var path=require(_0xafb1('0x1'));var timeout=require(_0xafb1('0x2'));var express=require(_0xafb1('0x3'));var router=express[_0xafb1('0x4')]();var fs_extra=require(_0xafb1('0x5'));var auth=require(_0xafb1('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xafb1('0x7'));var controller=require(_0xafb1('0x8'));router[_0xafb1('0x9')]('/',auth[_0xafb1('0xa')](),controller[_0xafb1('0xb')]);router[_0xafb1('0x9')](_0xafb1('0xc'),auth['isAuthenticated'](),controller[_0xafb1('0xd')]);router[_0xafb1('0xe')]('/',auth[_0xafb1('0xa')](),controller[_0xafb1('0xf')]);router[_0xafb1('0x10')](_0xafb1('0xc'),auth['isAuthenticated'](),controller[_0xafb1('0x11')]);router[_0xafb1('0x12')](_0xafb1('0xc'),auth[_0xafb1('0xa')](),controller[_0xafb1('0x13')]);module[_0xafb1('0x14')]=router;
\ No newline at end of file
index db1c1d4..22bb49b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ae4=['string','variable','customVariable','keyValue','STRING','BOOLEAN','sequelize','exports','ENUM'];(function(_0x49d0b0,_0x3faeb4){var _0x2dd6d3=function(_0x2b97ed){while(--_0x2b97ed){_0x49d0b0['push'](_0x49d0b0['shift']());}};_0x2dd6d3(++_0x3faeb4);}(_0x1ae4,0x19b));var _0x41ae=function(_0xe7d0aa,_0x123763){_0xe7d0aa=_0xe7d0aa-0x0;var _0x3f0e40=_0x1ae4[_0xe7d0aa];return _0x3f0e40;};'use strict';var Sequelize=require(_0x41ae('0x0'));module[_0x41ae('0x1')]={'type':{'type':Sequelize[_0x41ae('0x2')](_0x41ae('0x3'),_0x41ae('0x4'),_0x41ae('0x5'),_0x41ae('0x6'),'picklist'),'defaultValue':_0x41ae('0x3')},'content':{'type':Sequelize[_0x41ae('0x7')]},'key':{'type':Sequelize[_0x41ae('0x7')]},'keyType':{'type':Sequelize[_0x41ae('0x2')](_0x41ae('0x3'),_0x41ae('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0x41ae('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x41ae('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0934=['STRING','variable','BOOLEAN','exports','ENUM','string','customVariable','keyValue','picklist'];(function(_0xb82218,_0x58f808){var _0x2aed3f=function(_0x4ede57){while(--_0x4ede57){_0xb82218['push'](_0xb82218['shift']());}};_0x2aed3f(++_0x58f808);}(_0x0934,0x1c5));var _0x4093=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0x0934[_0x4e9628];return _0x27bc8c;};'use strict';var Sequelize=require('sequelize');module[_0x4093('0x0')]={'type':{'type':Sequelize[_0x4093('0x1')](_0x4093('0x2'),'variable',_0x4093('0x3'),_0x4093('0x4'),_0x4093('0x5')),'defaultValue':_0x4093('0x2')},'content':{'type':Sequelize[_0x4093('0x6')]},'key':{'type':Sequelize[_0x4093('0x6')]},'keyType':{'type':Sequelize['ENUM']('string',_0x4093('0x7'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x4093('0x6')]},'nameField':{'type':Sequelize[_0x4093('0x6')]},'customField':{'type':Sequelize[_0x4093('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4093('0x6')]}};
\ No newline at end of file
index 32a5d1a..c9b6ba5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcf8=['util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','Dynamics365Field','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0xa80d06,_0x555696){var _0x5e8a1d=function(_0x124797){while(--_0x124797){_0xa80d06['push'](_0xa80d06['shift']());}};_0x5e8a1d(++_0x555696);}(_0xdcf8,0xe3));var _0x8dcf=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xdcf8[_0x502c7d];return _0x30b7ed;};'use strict';var emlformat=require(_0x8dcf('0x0'));var rimraf=require(_0x8dcf('0x1'));var zipdir=require(_0x8dcf('0x2'));var jsonpatch=require(_0x8dcf('0x3'));var rp=require(_0x8dcf('0x4'));var moment=require(_0x8dcf('0x5'));var BPromise=require(_0x8dcf('0x6'));var Mustache=require('mustache');var util=require(_0x8dcf('0x7'));var path=require('path');var sox=require(_0x8dcf('0x8'));var csv=require(_0x8dcf('0x9'));var ejs=require(_0x8dcf('0xa'));var fs=require('fs');var fs_extra=require(_0x8dcf('0xb'));var _=require('lodash');var squel=require(_0x8dcf('0xc'));var crypto=require(_0x8dcf('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x8dcf('0xe'));var toCsv=require('to-csv');var querystring=require(_0x8dcf('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x8dcf('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x8dcf('0x11'));var hardwareService=require(_0x8dcf('0x12'));var logger=require(_0x8dcf('0x13'))(_0x8dcf('0x14'));var utils=require(_0x8dcf('0x15'));var config=require(_0x8dcf('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x8dcf('0x17'))['db'];function respondWithStatusCode(_0x36f26d,_0x5cf180){_0x5cf180=_0x5cf180||0xcc;return function(_0x182c21){if(_0x182c21){return _0x36f26d[_0x8dcf('0x18')](_0x5cf180);}return _0x36f26d['status'](_0x5cf180)[_0x8dcf('0x19')]();};}function respondWithResult(_0xa15bca,_0x42011d){_0x42011d=_0x42011d||0xc8;return function(_0x39e2a9){if(_0x39e2a9){return _0xa15bca[_0x8dcf('0x1a')](_0x42011d)[_0x8dcf('0x1b')](_0x39e2a9);}};}function respondWithFilteredResult(_0x43d7a7,_0x189950){return function(_0x25a5e8){if(_0x25a5e8){var _0x44fccf=typeof _0x189950[_0x8dcf('0x1c')]===_0x8dcf('0x1d')&&typeof _0x189950[_0x8dcf('0x1e')]===_0x8dcf('0x1d');var _0x33a97c=_0x25a5e8[_0x8dcf('0x1f')];var _0xc37df4=_0x44fccf?0x0:_0x189950['offset'];var _0x115fca=_0x44fccf?_0x25a5e8[_0x8dcf('0x1f')]:_0x189950[_0x8dcf('0x1c')]+_0x189950[_0x8dcf('0x1e')];var _0x24e605;if(_0x115fca>=_0x33a97c){_0x115fca=_0x33a97c;_0x24e605=0xc8;}else{_0x24e605=0xce;}_0x43d7a7[_0x8dcf('0x1a')](_0x24e605);return _0x43d7a7[_0x8dcf('0x20')](_0x8dcf('0x21'),_0xc37df4+'-'+_0x115fca+'/'+_0x33a97c)['json'](_0x25a5e8);}return null;};}function patchUpdates(_0x7b77b0){return function(_0x2551bb){try{jsonpatch[_0x8dcf('0x22')](_0x2551bb,_0x7b77b0,!![]);}catch(_0x2a255a){return BPromise[_0x8dcf('0x23')](_0x2a255a);}return _0x2551bb[_0x8dcf('0x24')]();};}function saveUpdates(_0x45f9f2,_0x12d23d){return function(_0x1d3e2d){if(_0x1d3e2d){return _0x1d3e2d[_0x8dcf('0x25')](_0x45f9f2)[_0x8dcf('0x26')](function(_0x3066ff){return _0x3066ff;});}return null;};}function removeEntity(_0x170ab4,_0xbd2aa9){return function(_0x643b17){if(_0x643b17){return _0x643b17[_0x8dcf('0x27')]()['then'](function(){_0x170ab4[_0x8dcf('0x1a')](0xcc)[_0x8dcf('0x19')]();});}};}function handleEntityNotFound(_0x2779d8,_0x2fd9a6){return function(_0x5e880c){if(!_0x5e880c){_0x2779d8[_0x8dcf('0x18')](0x194);}return _0x5e880c;};}function handleError(_0x58e06f,_0x2a96a9){_0x2a96a9=_0x2a96a9||0x1f4;return function(_0x355a91){logger[_0x8dcf('0x28')](_0x355a91[_0x8dcf('0x29')]);if(_0x355a91[_0x8dcf('0x2a')]){delete _0x355a91[_0x8dcf('0x2a')];}_0x58e06f[_0x8dcf('0x1a')](_0x2a96a9)[_0x8dcf('0x2b')](_0x355a91);};}exports['index']=function(_0x36b66d,_0x2287bb){var _0x18a414={},_0x28feff={},_0x1ff9d3={'count':0x0,'rows':[]};var _0x5b07df=_[_0x8dcf('0x2c')](db[_0x8dcf('0x2d')][_0x8dcf('0x2e')],function(_0x59805a){return{'name':_0x59805a[_0x8dcf('0x2f')],'type':_0x59805a[_0x8dcf('0x30')][_0x8dcf('0x31')]};});_0x28feff[_0x8dcf('0x32')]=_[_0x8dcf('0x2c')](_0x5b07df,_0x8dcf('0x2a'));_0x28feff[_0x8dcf('0x33')]=_[_0x8dcf('0x34')](_0x36b66d['query']);_0x28feff[_0x8dcf('0x35')]=_[_0x8dcf('0x36')](_0x28feff[_0x8dcf('0x32')],_0x28feff[_0x8dcf('0x33')]);_0x18a414[_0x8dcf('0x37')]=_[_0x8dcf('0x36')](_0x28feff[_0x8dcf('0x32')],qs[_0x8dcf('0x38')](_0x36b66d[_0x8dcf('0x33')]['fields']));_0x18a414[_0x8dcf('0x37')]=_0x18a414[_0x8dcf('0x37')][_0x8dcf('0x39')]?_0x18a414['attributes']:_0x28feff['model'];if(!_0x36b66d[_0x8dcf('0x33')][_0x8dcf('0x3a')](_0x8dcf('0x3b'))){_0x18a414['limit']=qs['limit'](_0x36b66d[_0x8dcf('0x33')][_0x8dcf('0x1e')]);_0x18a414[_0x8dcf('0x1c')]=qs[_0x8dcf('0x1c')](_0x36b66d[_0x8dcf('0x33')][_0x8dcf('0x1c')]);}_0x18a414[_0x8dcf('0x3c')]=qs[_0x8dcf('0x3d')](_0x36b66d['query']['sort']);_0x18a414['where']=qs[_0x8dcf('0x35')](_[_0x8dcf('0x3e')](_0x36b66d[_0x8dcf('0x33')],_0x28feff['filters']),_0x5b07df);if(_0x36b66d[_0x8dcf('0x33')][_0x8dcf('0x3f')]){_0x18a414[_0x8dcf('0x40')]=_[_0x8dcf('0x41')](_0x18a414[_0x8dcf('0x40')],{'$or':_[_0x8dcf('0x2c')](_0x5b07df,function(_0x108409){if(_0x108409[_0x8dcf('0x30')]!==_0x8dcf('0x42')){var _0x40fd5f={};_0x40fd5f[_0x108409['name']]={'$like':'%'+_0x36b66d['query'][_0x8dcf('0x3f')]+'%'};return _0x40fd5f;}})});}_0x18a414=_[_0x8dcf('0x41')]({},_0x18a414,_0x36b66d[_0x8dcf('0x43')]);var _0x3e7dca={'where':_0x18a414[_0x8dcf('0x40')]};return db[_0x8dcf('0x2d')]['count'](_0x3e7dca)[_0x8dcf('0x26')](function(_0x2ee746){_0x1ff9d3['count']=_0x2ee746;if(_0x36b66d[_0x8dcf('0x33')][_0x8dcf('0x44')]){_0x18a414[_0x8dcf('0x45')]=[{'all':!![]}];}return db[_0x8dcf('0x2d')][_0x8dcf('0x46')](_0x18a414);})['then'](function(_0x318eac){_0x1ff9d3[_0x8dcf('0x47')]=_0x318eac;return _0x1ff9d3;})[_0x8dcf('0x26')](respondWithFilteredResult(_0x2287bb,_0x18a414))[_0x8dcf('0x48')](handleError(_0x2287bb,null));};exports[_0x8dcf('0x49')]=function(_0x2a83b9,_0x3c08cc){var _0xc8b11b={'raw':!![],'where':{'id':_0x2a83b9[_0x8dcf('0x4a')]['id']}},_0x438d46={};_0x438d46[_0x8dcf('0x32')]=_[_0x8dcf('0x34')](db['Dynamics365Field'][_0x8dcf('0x2e')]);_0x438d46[_0x8dcf('0x33')]=_[_0x8dcf('0x34')](_0x2a83b9['query']);_0x438d46['filters']=_[_0x8dcf('0x36')](_0x438d46[_0x8dcf('0x32')],_0x438d46[_0x8dcf('0x33')]);_0xc8b11b['attributes']=_[_0x8dcf('0x36')](_0x438d46[_0x8dcf('0x32')],qs[_0x8dcf('0x38')](_0x2a83b9[_0x8dcf('0x33')][_0x8dcf('0x38')]));_0xc8b11b[_0x8dcf('0x37')]=_0xc8b11b[_0x8dcf('0x37')][_0x8dcf('0x39')]?_0xc8b11b[_0x8dcf('0x37')]:_0x438d46[_0x8dcf('0x32')];if(_0x2a83b9[_0x8dcf('0x33')][_0x8dcf('0x44')]){_0xc8b11b[_0x8dcf('0x45')]=[{'all':!![]}];}_0xc8b11b=_[_0x8dcf('0x41')]({},_0xc8b11b,_0x2a83b9[_0x8dcf('0x43')]);return db[_0x8dcf('0x2d')][_0x8dcf('0x4b')](_0xc8b11b)[_0x8dcf('0x26')](handleEntityNotFound(_0x3c08cc,null))[_0x8dcf('0x26')](respondWithResult(_0x3c08cc,null))[_0x8dcf('0x48')](handleError(_0x3c08cc,null));};exports[_0x8dcf('0x4c')]=function(_0x260f85,_0x547c98){return db[_0x8dcf('0x2d')][_0x8dcf('0x4c')](_0x260f85['body'],{})[_0x8dcf('0x26')](respondWithResult(_0x547c98,0xc9))[_0x8dcf('0x48')](handleError(_0x547c98,null));};exports[_0x8dcf('0x25')]=function(_0x1831cb,_0x5c13aa){if(_0x1831cb[_0x8dcf('0x4d')]['id']){delete _0x1831cb[_0x8dcf('0x4d')]['id'];}return db[_0x8dcf('0x2d')][_0x8dcf('0x4b')]({'where':{'id':_0x1831cb['params']['id']}})[_0x8dcf('0x26')](handleEntityNotFound(_0x5c13aa,null))[_0x8dcf('0x26')](saveUpdates(_0x1831cb[_0x8dcf('0x4d')],null))[_0x8dcf('0x26')](respondWithResult(_0x5c13aa,null))[_0x8dcf('0x48')](handleError(_0x5c13aa,null));};exports['destroy']=function(_0x24f85c,_0x933f30){return db[_0x8dcf('0x2d')][_0x8dcf('0x4b')]({'where':{'id':_0x24f85c[_0x8dcf('0x4a')]['id']}})[_0x8dcf('0x26')](handleEntityNotFound(_0x933f30,null))[_0x8dcf('0x26')](removeEntity(_0x933f30,null))[_0x8dcf('0x48')](handleError(_0x933f30,null));};
\ No newline at end of file
+var _0x5b87=['find','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','save','then','destroy','stack','name','map','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','Dynamics365Field','includeAll','include','findAll','catch','show','create','body','update','params'];(function(_0x6e1239,_0x3562ac){var _0x418150=function(_0x279f06){while(--_0x279f06){_0x6e1239['push'](_0x6e1239['shift']());}};_0x418150(++_0x3562ac);}(_0x5b87,0x173));var _0x75b8=function(_0x405de0,_0x57be04){_0x405de0=_0x405de0-0x0;var _0x48e421=_0x5b87[_0x405de0];return _0x48e421;};'use strict';var emlformat=require(_0x75b8('0x0'));var rimraf=require(_0x75b8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x75b8('0x2'));var rp=require(_0x75b8('0x3'));var moment=require(_0x75b8('0x4'));var BPromise=require(_0x75b8('0x5'));var Mustache=require('mustache');var util=require(_0x75b8('0x6'));var path=require(_0x75b8('0x7'));var sox=require(_0x75b8('0x8'));var csv=require('to-csv');var ejs=require(_0x75b8('0x9'));var fs=require('fs');var fs_extra=require(_0x75b8('0xa'));var _=require(_0x75b8('0xb'));var squel=require(_0x75b8('0xc'));var crypto=require(_0x75b8('0xd'));var jsforce=require(_0x75b8('0xe'));var deskjs=require(_0x75b8('0xf'));var toCsv=require('to-csv');var querystring=require(_0x75b8('0x10'));var Papa=require(_0x75b8('0x11'));var Redis=require('ioredis');var authService=require(_0x75b8('0x12'));var qs=require(_0x75b8('0x13'));var as=require(_0x75b8('0x14'));var hardwareService=require(_0x75b8('0x15'));var logger=require(_0x75b8('0x16'))('api');var utils=require(_0x75b8('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x75b8('0x18'));var db=require(_0x75b8('0x19'))['db'];function respondWithStatusCode(_0x1953a8,_0x1ff6aa){_0x1ff6aa=_0x1ff6aa||0xcc;return function(_0x3e344d){if(_0x3e344d){return _0x1953a8[_0x75b8('0x1a')](_0x1ff6aa);}return _0x1953a8[_0x75b8('0x1b')](_0x1ff6aa)[_0x75b8('0x1c')]();};}function respondWithResult(_0x44452f,_0x427adb){_0x427adb=_0x427adb||0xc8;return function(_0x253015){if(_0x253015){return _0x44452f[_0x75b8('0x1b')](_0x427adb)['json'](_0x253015);}};}function respondWithFilteredResult(_0x4cc92d,_0x5cf82e){return function(_0x3173d0){if(_0x3173d0){var _0x75033b=typeof _0x5cf82e['offset']===_0x75b8('0x1d')&&typeof _0x5cf82e['limit']===_0x75b8('0x1d');var _0x1b6077=_0x3173d0[_0x75b8('0x1e')];var _0x5c8a48=_0x75033b?0x0:_0x5cf82e['offset'];var _0x3acef4=_0x75033b?_0x3173d0[_0x75b8('0x1e')]:_0x5cf82e[_0x75b8('0x1f')]+_0x5cf82e[_0x75b8('0x20')];var _0x4d17cb;if(_0x3acef4>=_0x1b6077){_0x3acef4=_0x1b6077;_0x4d17cb=0xc8;}else{_0x4d17cb=0xce;}_0x4cc92d[_0x75b8('0x1b')](_0x4d17cb);return _0x4cc92d[_0x75b8('0x21')](_0x75b8('0x22'),_0x5c8a48+'-'+_0x3acef4+'/'+_0x1b6077)[_0x75b8('0x23')](_0x3173d0);}return null;};}function patchUpdates(_0x4743ea){return function(_0x316133){try{jsonpatch[_0x75b8('0x24')](_0x316133,_0x4743ea,!![]);}catch(_0x46769d){return BPromise[_0x75b8('0x25')](_0x46769d);}return _0x316133[_0x75b8('0x26')]();};}function saveUpdates(_0x375fca,_0x4272bb){return function(_0x39989f){if(_0x39989f){return _0x39989f['update'](_0x375fca)[_0x75b8('0x27')](function(_0xf29ffc){return _0xf29ffc;});}return null;};}function removeEntity(_0x4a0f39,_0x107177){return function(_0x147990){if(_0x147990){return _0x147990[_0x75b8('0x28')]()[_0x75b8('0x27')](function(){_0x4a0f39[_0x75b8('0x1b')](0xcc)[_0x75b8('0x1c')]();});}};}function handleEntityNotFound(_0x3c6c04,_0xe788a8){return function(_0x3b70e5){if(!_0x3b70e5){_0x3c6c04['sendStatus'](0x194);}return _0x3b70e5;};}function handleError(_0x1b7249,_0x375d60){_0x375d60=_0x375d60||0x1f4;return function(_0x3b4852){logger['error'](_0x3b4852[_0x75b8('0x29')]);if(_0x3b4852[_0x75b8('0x2a')]){delete _0x3b4852[_0x75b8('0x2a')];}_0x1b7249[_0x75b8('0x1b')](_0x375d60)['send'](_0x3b4852);};}exports['index']=function(_0x1ee4a4,_0xebffc7){var _0x5dfb5d={},_0x20f754={},_0x2cd9b7={'count':0x0,'rows':[]};var _0x598229=_[_0x75b8('0x2b')](db['Dynamics365Field']['rawAttributes'],function(_0x521dcc){return{'name':_0x521dcc['fieldName'],'type':_0x521dcc[_0x75b8('0x2c')][_0x75b8('0x2d')]};});_0x20f754[_0x75b8('0x2e')]=_[_0x75b8('0x2b')](_0x598229,_0x75b8('0x2a'));_0x20f754[_0x75b8('0x2f')]=_[_0x75b8('0x30')](_0x1ee4a4[_0x75b8('0x2f')]);_0x20f754[_0x75b8('0x31')]=_[_0x75b8('0x32')](_0x20f754[_0x75b8('0x2e')],_0x20f754[_0x75b8('0x2f')]);_0x5dfb5d['attributes']=_[_0x75b8('0x32')](_0x20f754[_0x75b8('0x2e')],qs[_0x75b8('0x33')](_0x1ee4a4[_0x75b8('0x2f')][_0x75b8('0x33')]));_0x5dfb5d[_0x75b8('0x34')]=_0x5dfb5d[_0x75b8('0x34')][_0x75b8('0x35')]?_0x5dfb5d['attributes']:_0x20f754['model'];if(!_0x1ee4a4[_0x75b8('0x2f')][_0x75b8('0x36')](_0x75b8('0x37'))){_0x5dfb5d[_0x75b8('0x20')]=qs['limit'](_0x1ee4a4['query'][_0x75b8('0x20')]);_0x5dfb5d[_0x75b8('0x1f')]=qs[_0x75b8('0x1f')](_0x1ee4a4['query'][_0x75b8('0x1f')]);}_0x5dfb5d[_0x75b8('0x38')]=qs[_0x75b8('0x39')](_0x1ee4a4[_0x75b8('0x2f')][_0x75b8('0x39')]);_0x5dfb5d[_0x75b8('0x3a')]=qs[_0x75b8('0x31')](_[_0x75b8('0x3b')](_0x1ee4a4[_0x75b8('0x2f')],_0x20f754[_0x75b8('0x31')]),_0x598229);if(_0x1ee4a4[_0x75b8('0x2f')][_0x75b8('0x3c')]){_0x5dfb5d[_0x75b8('0x3a')]=_[_0x75b8('0x3d')](_0x5dfb5d['where'],{'$or':_[_0x75b8('0x2b')](_0x598229,function(_0x4e366c){if(_0x4e366c[_0x75b8('0x2c')]!=='VIRTUAL'){var _0x5739fb={};_0x5739fb[_0x4e366c[_0x75b8('0x2a')]]={'$like':'%'+_0x1ee4a4[_0x75b8('0x2f')]['filter']+'%'};return _0x5739fb;}})});}_0x5dfb5d=_[_0x75b8('0x3d')]({},_0x5dfb5d,_0x1ee4a4[_0x75b8('0x3e')]);var _0xc9956={'where':_0x5dfb5d['where']};return db[_0x75b8('0x3f')]['count'](_0xc9956)[_0x75b8('0x27')](function(_0x4c14e0){_0x2cd9b7[_0x75b8('0x1e')]=_0x4c14e0;if(_0x1ee4a4[_0x75b8('0x2f')][_0x75b8('0x40')]){_0x5dfb5d[_0x75b8('0x41')]=[{'all':!![]}];}return db['Dynamics365Field'][_0x75b8('0x42')](_0x5dfb5d);})[_0x75b8('0x27')](function(_0x2a9969){_0x2cd9b7['rows']=_0x2a9969;return _0x2cd9b7;})[_0x75b8('0x27')](respondWithFilteredResult(_0xebffc7,_0x5dfb5d))[_0x75b8('0x43')](handleError(_0xebffc7,null));};exports[_0x75b8('0x44')]=function(_0x43c7bb,_0x402a64){var _0x4a6312={'raw':!![],'where':{'id':_0x43c7bb['params']['id']}},_0x1ff805={};_0x1ff805[_0x75b8('0x2e')]=_['keys'](db['Dynamics365Field']['rawAttributes']);_0x1ff805['query']=_[_0x75b8('0x30')](_0x43c7bb[_0x75b8('0x2f')]);_0x1ff805['filters']=_[_0x75b8('0x32')](_0x1ff805[_0x75b8('0x2e')],_0x1ff805[_0x75b8('0x2f')]);_0x4a6312[_0x75b8('0x34')]=_[_0x75b8('0x32')](_0x1ff805['model'],qs[_0x75b8('0x33')](_0x43c7bb[_0x75b8('0x2f')][_0x75b8('0x33')]));_0x4a6312['attributes']=_0x4a6312[_0x75b8('0x34')][_0x75b8('0x35')]?_0x4a6312[_0x75b8('0x34')]:_0x1ff805['model'];if(_0x43c7bb['query'][_0x75b8('0x40')]){_0x4a6312[_0x75b8('0x41')]=[{'all':!![]}];}_0x4a6312=_[_0x75b8('0x3d')]({},_0x4a6312,_0x43c7bb[_0x75b8('0x3e')]);return db[_0x75b8('0x3f')]['find'](_0x4a6312)[_0x75b8('0x27')](handleEntityNotFound(_0x402a64,null))[_0x75b8('0x27')](respondWithResult(_0x402a64,null))[_0x75b8('0x43')](handleError(_0x402a64,null));};exports[_0x75b8('0x45')]=function(_0x53d9d4,_0x136ebf){return db[_0x75b8('0x3f')][_0x75b8('0x45')](_0x53d9d4[_0x75b8('0x46')],{})[_0x75b8('0x27')](respondWithResult(_0x136ebf,0xc9))[_0x75b8('0x43')](handleError(_0x136ebf,null));};exports[_0x75b8('0x47')]=function(_0x46203d,_0x4b54b7){if(_0x46203d[_0x75b8('0x46')]['id']){delete _0x46203d[_0x75b8('0x46')]['id'];}return db[_0x75b8('0x3f')]['find']({'where':{'id':_0x46203d[_0x75b8('0x48')]['id']}})[_0x75b8('0x27')](handleEntityNotFound(_0x4b54b7,null))[_0x75b8('0x27')](saveUpdates(_0x46203d['body'],null))[_0x75b8('0x27')](respondWithResult(_0x4b54b7,null))[_0x75b8('0x43')](handleError(_0x4b54b7,null));};exports['destroy']=function(_0xd69328,_0xbf7fce){return db[_0x75b8('0x3f')][_0x75b8('0x49')]({'where':{'id':_0xd69328[_0x75b8('0x48')]['id']}})[_0x75b8('0x27')](handleEntityNotFound(_0xbf7fce,null))['then'](removeEntity(_0xbf7fce,null))[_0x75b8('0x43')](handleError(_0xbf7fce,null));};
\ No newline at end of file
index b55ea6b..676aa5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4af=['rimraf','../../config/environment','./intDynamics365Field.attributes','define','int_dynamics365_fields','dynamics365_unique_index','idField','FieldId','util','../../config/logger','moment','path'];(function(_0x4e2240,_0xac55e5){var _0x35f114=function(_0x4c037f){while(--_0x4c037f){_0x4e2240['push'](_0x4e2240['shift']());}};_0x35f114(++_0xac55e5);}(_0xb4af,0xbc));var _0xfb4a=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xb4af[_0x2b4411];return _0x8e41ef;};'use strict';var _=require('lodash');var util=require(_0xfb4a('0x0'));var logger=require(_0xfb4a('0x1'))('api');var moment=require(_0xfb4a('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xfb4a('0x3'));var rimraf=require(_0xfb4a('0x4'));var config=require(_0xfb4a('0x5'));var attributes=require(_0xfb4a('0x6'));module['exports']=function(_0x3375d0,_0x505e64){return _0x3375d0[_0xfb4a('0x7')]('Dynamics365Field',attributes,{'tableName':_0xfb4a('0x8'),'paranoid':![],'indexes':[{'name':_0xfb4a('0x9'),'fields':[_0xfb4a('0xa'),_0xfb4a('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbdfe=['../../config/environment','./intDynamics365Field.attributes','define','Dynamics365Field','dynamics365_unique_index','idField','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x149a4c,_0x4d172a){var _0xf63db1=function(_0x358693){while(--_0x358693){_0x149a4c['push'](_0x149a4c['shift']());}};_0xf63db1(++_0x4d172a);}(_0xbdfe,0x172));var _0xebdf=function(_0x10a548,_0x26a534){_0x10a548=_0x10a548-0x0;var _0x2a8b3b=_0xbdfe[_0x10a548];return _0x2a8b3b;};'use strict';var _=require(_0xebdf('0x0'));var util=require(_0xebdf('0x1'));var logger=require(_0xebdf('0x2'))(_0xebdf('0x3'));var moment=require(_0xebdf('0x4'));var BPromise=require(_0xebdf('0x5'));var rp=require(_0xebdf('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xebdf('0x7'));var config=require(_0xebdf('0x8'));var attributes=require(_0xebdf('0x9'));module['exports']=function(_0x43b997,_0x519132){return _0x43b997[_0xebdf('0xa')](_0xebdf('0xb'),attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':_0xebdf('0xc'),'fields':[_0xebdf('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 3ec4fd9..5013057 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe059=['jayson/promise','client','http','request','then','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Dynamics365Field,\x20%s,\x20%s','message','info','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0xa7acd9,_0x491264){var _0x492857=function(_0x140e6c){while(--_0x140e6c){_0xa7acd9['push'](_0xa7acd9['shift']());}};_0x492857(++_0x491264);}(_0xe059,0x177));var _0x9e05=function(_0x3505fe,_0x423e13){_0x3505fe=_0x3505fe-0x0;var _0x11e7ce=_0xe059[_0x3505fe];return _0x11e7ce;};'use strict';var _=require(_0x9e05('0x0'));var util=require(_0x9e05('0x1'));var moment=require(_0x9e05('0x2'));var BPromise=require(_0x9e05('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9e05('0x4'));var db=require(_0x9e05('0x5'))['db'];var utils=require(_0x9e05('0x6'));var logger=require('../../config/logger')(_0x9e05('0x7'));var config=require(_0x9e05('0x8'));var jayson=require(_0x9e05('0x9'));var client=jayson[_0x9e05('0xa')][_0x9e05('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xfbcfe7,_0x3eff77,_0x22bd97){return new BPromise(function(_0x1727b6,_0x3ef1ef){return client[_0x9e05('0xc')](_0xfbcfe7,_0x22bd97)[_0x9e05('0xd')](function(_0x2b2e31){logger['info']('Dynamics365Field,\x20%s,\x20%s',_0x3eff77,'request\x20sent');logger[_0x9e05('0xe')](_0x9e05('0xf'),_0x3eff77,_0x9e05('0x10'),JSON[_0x9e05('0x11')](_0x2b2e31));if(_0x2b2e31[_0x9e05('0x12')]){if(_0x2b2e31[_0x9e05('0x12')][_0x9e05('0x13')]===0x1f4){logger['error'](_0x9e05('0x14'),_0x3eff77,_0x2b2e31[_0x9e05('0x12')]['message']);return _0x3ef1ef(_0x2b2e31[_0x9e05('0x12')][_0x9e05('0x15')]);}logger[_0x9e05('0x12')]('Dynamics365Field,\x20%s,\x20%s',_0x3eff77,_0x2b2e31[_0x9e05('0x12')]['message']);return _0x1727b6(_0x2b2e31['error'][_0x9e05('0x15')]);}else{logger[_0x9e05('0x16')](_0x9e05('0x14'),_0x3eff77,_0x9e05('0x10'));_0x1727b6(_0x2b2e31['result'][_0x9e05('0x15')]);}})[_0x9e05('0x17')](function(_0x18f576){logger[_0x9e05('0x12')](_0x9e05('0x14'),_0x3eff77,_0x18f576);_0x3ef1ef(_0x18f576);});});}
\ No newline at end of file
+var _0x66c2=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis'];(function(_0x54ab9a,_0x4c5838){var _0x25ef56=function(_0x3f42fb){while(--_0x3f42fb){_0x54ab9a['push'](_0x54ab9a['shift']());}};_0x25ef56(++_0x4c5838);}(_0x66c2,0xc3));var _0x266c=function(_0x3ae495,_0x41213c){_0x3ae495=_0x3ae495-0x0;var _0x2f7937=_0x66c2[_0x3ae495];return _0x2f7937;};'use strict';var _=require(_0x266c('0x0'));var util=require(_0x266c('0x1'));var moment=require(_0x266c('0x2'));var BPromise=require(_0x266c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x266c('0x4'));var db=require(_0x266c('0x5'))['db'];var utils=require(_0x266c('0x6'));var logger=require(_0x266c('0x7'))(_0x266c('0x8'));var config=require(_0x266c('0x9'));var jayson=require(_0x266c('0xa'));var client=jayson[_0x266c('0xb')][_0x266c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x226263,_0x582d43,_0x16dd2e){return new BPromise(function(_0x23c5b0,_0x550edb){return client[_0x266c('0xd')](_0x226263,_0x16dd2e)['then'](function(_0xd3106f){logger[_0x266c('0xe')](_0x266c('0xf'),_0x582d43,_0x266c('0x10'));logger[_0x266c('0x11')](_0x266c('0x12'),_0x582d43,'request\x20sent',JSON[_0x266c('0x13')](_0xd3106f));if(_0xd3106f[_0x266c('0x14')]){if(_0xd3106f['error'][_0x266c('0x15')]===0x1f4){logger[_0x266c('0x14')]('Dynamics365Field,\x20%s,\x20%s',_0x582d43,_0xd3106f[_0x266c('0x14')][_0x266c('0x16')]);return _0x550edb(_0xd3106f[_0x266c('0x14')][_0x266c('0x16')]);}logger[_0x266c('0x14')](_0x266c('0xf'),_0x582d43,_0xd3106f[_0x266c('0x14')]['message']);return _0x23c5b0(_0xd3106f[_0x266c('0x14')][_0x266c('0x16')]);}else{logger['info']('Dynamics365Field,\x20%s,\x20%s',_0x582d43,_0x266c('0x10'));_0x23c5b0(_0xd3106f[_0x266c('0x17')][_0x266c('0x16')]);}})[_0x266c('0x18')](function(_0x1ac495){logger[_0x266c('0x14')](_0x266c('0xf'),_0x582d43,_0x1ac495);_0x550edb(_0x1ac495);});});}
\ No newline at end of file
index 1989798..56b14f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcce8=['express','Router','fs-extra','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','/:id','show','/:id/configurations','create','post','addConfiguration','put','delete','destroy','multer','util','path','connect-timeout'];(function(_0x102249,_0x4c8b65){var _0x54b2cb=function(_0x4b09bc){while(--_0x4b09bc){_0x102249['push'](_0x102249['shift']());}};_0x54b2cb(++_0x4c8b65);}(_0xcce8,0x100));var _0x8cce=function(_0x47b345,_0x41530e){_0x47b345=_0x47b345-0x0;var _0x2982d9=_0xcce8[_0x47b345];return _0x2982d9;};'use strict';var multer=require(_0x8cce('0x0'));var util=require(_0x8cce('0x1'));var path=require(_0x8cce('0x2'));var timeout=require(_0x8cce('0x3'));var express=require(_0x8cce('0x4'));var router=express[_0x8cce('0x5')]();var fs_extra=require(_0x8cce('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x8cce('0x7'));var controller=require(_0x8cce('0x8'));router[_0x8cce('0x9')]('/',auth[_0x8cce('0xa')](),controller['index']);router[_0x8cce('0x9')](_0x8cce('0xb'),auth[_0x8cce('0xa')](),controller[_0x8cce('0xc')]);router['get'](_0x8cce('0xd'),auth[_0x8cce('0xa')](),controller['getConfigurations']);router[_0x8cce('0x9')]('/:id/fields',auth[_0x8cce('0xa')](),controller['getFields']);router['post']('/',auth[_0x8cce('0xa')](),controller[_0x8cce('0xe')]);router[_0x8cce('0xf')](_0x8cce('0xd'),auth[_0x8cce('0xa')](),controller[_0x8cce('0x10')]);router[_0x8cce('0x11')](_0x8cce('0xb'),auth[_0x8cce('0xa')](),controller['update']);router[_0x8cce('0x12')](_0x8cce('0xb'),auth[_0x8cce('0xa')](),controller[_0x8cce('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x4cb4=['delete','destroy','multer','util','path','connect-timeout','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','put'];(function(_0x37bfba,_0x39a80e){var _0x2d2e6e=function(_0x69afbc){while(--_0x69afbc){_0x37bfba['push'](_0x37bfba['shift']());}};_0x2d2e6e(++_0x39a80e);}(_0x4cb4,0xde));var _0x44cb=function(_0x20936e,_0x4d5283){_0x20936e=_0x20936e-0x0;var _0x50a212=_0x4cb4[_0x20936e];return _0x50a212;};'use strict';var multer=require(_0x44cb('0x0'));var util=require(_0x44cb('0x1'));var path=require(_0x44cb('0x2'));var timeout=require(_0x44cb('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x44cb('0x4'));var config=require(_0x44cb('0x5'));var controller=require(_0x44cb('0x6'));router[_0x44cb('0x7')]('/',auth[_0x44cb('0x8')](),controller[_0x44cb('0x9')]);router['get'](_0x44cb('0xa'),auth[_0x44cb('0x8')](),controller['show']);router[_0x44cb('0x7')](_0x44cb('0xb'),auth['isAuthenticated'](),controller[_0x44cb('0xc')]);router[_0x44cb('0x7')]('/:id/fields',auth['isAuthenticated'](),controller[_0x44cb('0xd')]);router[_0x44cb('0xe')]('/',auth['isAuthenticated'](),controller[_0x44cb('0xf')]);router[_0x44cb('0xe')](_0x44cb('0xb'),auth['isAuthenticated'](),controller[_0x44cb('0x10')]);router[_0x44cb('0x11')](_0x44cb('0xa'),auth[_0x44cb('0x8')](),controller['update']);router[_0x44cb('0x12')](_0x44cb('0xa'),auth[_0x44cb('0x8')](),controller[_0x44cb('0x13')]);module['exports']=router;
\ No newline at end of file
index f325dcc..83a1b25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e3f=['STRING','username','remoteUri','sequelize','exports'];(function(_0xe5443f,_0x2ea4fe){var _0x1d3fa2=function(_0x3fa290){while(--_0x3fa290){_0xe5443f['push'](_0xe5443f['shift']());}};_0x1d3fa2(++_0x2ea4fe);}(_0x8e3f,0xc1));var _0xf8e3=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x8e3f[_0x4a9fb1];return _0x348672;};'use strict';var Sequelize=require(_0xf8e3('0x0'));module[_0xf8e3('0x1')]={'name':{'type':Sequelize[_0xf8e3('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xf8e3('0x2')],'unique':_0xf8e3('0x3')},'apiKey':{'type':Sequelize[_0xf8e3('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xf8e3('0x4')},'serverUrl':{'type':Sequelize[_0xf8e3('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x8f4c=['sequelize','exports','STRING','username','remoteUri'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x8f4c,0x113));var _0xc8f4=function(_0x5a86a9,_0x49f269){_0x5a86a9=_0x5a86a9-0x0;var _0x3ab2cc=_0x8f4c[_0x5a86a9];return _0x3ab2cc;};'use strict';var Sequelize=require(_0xc8f4('0x0'));module[_0xc8f4('0x1')]={'name':{'type':Sequelize[_0xc8f4('0x2')]},'description':{'type':Sequelize[_0xc8f4('0x2')]},'username':{'type':Sequelize[_0xc8f4('0x2')],'unique':_0xc8f4('0x3')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xc8f4('0x2')],'unique':_0xc8f4('0x4')},'serverUrl':{'type':Sequelize[_0xc8f4('0x2')],'allowNull':![]}};
\ No newline at end of file
index fe99e92..5689273 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x477a=['getConfigurations','findOne','FreshdeskConfiguration','addConfiguration','AccountId','Subjects','getSubjects','getDescriptions','FreshdeskField','Descriptions','getFields','remoteUri','slice','substring','GET','%s/%s','api/v2/ticket_fields','format','Basic\x20%s','%s:X','apiKey','toString','base64','requester','agent','priority','group','source','remove','default','custom_text','custom_dropdown','label','choices','capitalize','test','statusCode','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','destroy','then','error','name','send','index','map','FreshdeskAccount','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','length','find','create','body'];(function(_0x4c7fb5,_0x2548ef){var _0x2e10ac=function(_0xf7e27c){while(--_0xf7e27c){_0x4c7fb5['push'](_0x4c7fb5['shift']());}};_0x2e10ac(++_0x2548ef);}(_0x477a,0x1e2));var _0xa477=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x477a[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xa477('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa477('0x1'));var jsonpatch=require(_0xa477('0x2'));var rp=require('request-promise');var moment=require(_0xa477('0x3'));var BPromise=require(_0xa477('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xa477('0x5'));var sox=require(_0xa477('0x6'));var csv=require('to-csv');var ejs=require(_0xa477('0x7'));var fs=require('fs');var fs_extra=require(_0xa477('0x8'));var _=require(_0xa477('0x9'));var squel=require(_0xa477('0xa'));var crypto=require(_0xa477('0xb'));var jsforce=require(_0xa477('0xc'));var deskjs=require(_0xa477('0xd'));var toCsv=require(_0xa477('0xe'));var querystring=require(_0xa477('0xf'));var Papa=require('papaparse');var Redis=require(_0xa477('0x10'));var authService=require(_0xa477('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xa477('0x12'));var config=require(_0xa477('0x13'));var licenseUtil=require(_0xa477('0x14'));var db=require('../../mysqldb')['db'];var integrations=require(_0xa477('0x15'));function respondWithStatusCode(_0x3d2a17,_0x70e1c1){_0x70e1c1=_0x70e1c1||0xcc;return function(_0x5e09ef){if(_0x5e09ef){return _0x3d2a17[_0xa477('0x16')](_0x70e1c1);}return _0x3d2a17[_0xa477('0x17')](_0x70e1c1)[_0xa477('0x18')]();};}function respondWithResult(_0x185c76,_0xe878a){_0xe878a=_0xe878a||0xc8;return function(_0x484706){if(_0x484706){return _0x185c76[_0xa477('0x17')](_0xe878a)[_0xa477('0x19')](_0x484706);}};}function respondWithFilteredResult(_0xa607d0,_0x45ecc1){return function(_0x22a156){if(_0x22a156){var _0x1659cb=typeof _0x45ecc1[_0xa477('0x1a')]===_0xa477('0x1b')&&typeof _0x45ecc1[_0xa477('0x1c')]===_0xa477('0x1b');var _0xc21f88=_0x22a156[_0xa477('0x1d')];var _0xd9cdae=_0x1659cb?0x0:_0x45ecc1['offset'];var _0x6d645=_0x1659cb?_0x22a156[_0xa477('0x1d')]:_0x45ecc1[_0xa477('0x1a')]+_0x45ecc1[_0xa477('0x1c')];var _0x4596bd;if(_0x6d645>=_0xc21f88){_0x6d645=_0xc21f88;_0x4596bd=0xc8;}else{_0x4596bd=0xce;}_0xa607d0[_0xa477('0x17')](_0x4596bd);return _0xa607d0[_0xa477('0x1e')](_0xa477('0x1f'),_0xd9cdae+'-'+_0x6d645+'/'+_0xc21f88)['json'](_0x22a156);}return null;};}function patchUpdates(_0x434ef1){return function(_0x240956){try{jsonpatch[_0xa477('0x20')](_0x240956,_0x434ef1,!![]);}catch(_0x5ed526){return BPromise['reject'](_0x5ed526);}return _0x240956['save']();};}function saveUpdates(_0x14d01e,_0x2debae){return function(_0x571501){if(_0x571501){return _0x571501[_0xa477('0x21')](_0x14d01e)['then'](function(_0x5b6e98){return _0x5b6e98;});}return null;};}function removeEntity(_0x7aa4ac,_0x166694){return function(_0x1bb568){if(_0x1bb568){return _0x1bb568[_0xa477('0x22')]()[_0xa477('0x23')](function(){_0x7aa4ac[_0xa477('0x17')](0xcc)[_0xa477('0x18')]();});}};}function handleEntityNotFound(_0x48209e,_0x3cafd9){return function(_0x1e444e){if(!_0x1e444e){_0x48209e[_0xa477('0x16')](0x194);}return _0x1e444e;};}function handleError(_0x236416,_0x18e8c3){_0x18e8c3=_0x18e8c3||0x1f4;return function(_0x27ec39){logger[_0xa477('0x24')](_0x27ec39['stack']);if(_0x27ec39[_0xa477('0x25')]){delete _0x27ec39[_0xa477('0x25')];}_0x236416[_0xa477('0x17')](_0x18e8c3)[_0xa477('0x26')](_0x27ec39);};}exports[_0xa477('0x27')]=function(_0xdb15a9,_0x14b0e8){var _0x5aed5d={},_0x169089={},_0x5819c8={'count':0x0,'rows':[]};var _0x599371=_[_0xa477('0x28')](db[_0xa477('0x29')]['rawAttributes'],function(_0x15e476){return{'name':_0x15e476[_0xa477('0x2a')],'type':_0x15e476[_0xa477('0x2b')][_0xa477('0x2c')]};});_0x169089[_0xa477('0x2d')]=_[_0xa477('0x28')](_0x599371,_0xa477('0x25'));_0x169089[_0xa477('0x2e')]=_[_0xa477('0x2f')](_0xdb15a9[_0xa477('0x2e')]);_0x169089[_0xa477('0x30')]=_[_0xa477('0x31')](_0x169089[_0xa477('0x2d')],_0x169089['query']);_0x5aed5d[_0xa477('0x32')]=_[_0xa477('0x31')](_0x169089[_0xa477('0x2d')],qs[_0xa477('0x33')](_0xdb15a9[_0xa477('0x2e')][_0xa477('0x33')]));_0x5aed5d[_0xa477('0x32')]=_0x5aed5d[_0xa477('0x32')]['length']?_0x5aed5d[_0xa477('0x32')]:_0x169089[_0xa477('0x2d')];if(!_0xdb15a9[_0xa477('0x2e')][_0xa477('0x34')](_0xa477('0x35'))){_0x5aed5d[_0xa477('0x1c')]=qs[_0xa477('0x1c')](_0xdb15a9[_0xa477('0x2e')][_0xa477('0x1c')]);_0x5aed5d[_0xa477('0x1a')]=qs[_0xa477('0x1a')](_0xdb15a9[_0xa477('0x2e')][_0xa477('0x1a')]);}_0x5aed5d[_0xa477('0x36')]=qs[_0xa477('0x37')](_0xdb15a9[_0xa477('0x2e')][_0xa477('0x37')]);_0x5aed5d[_0xa477('0x38')]=qs[_0xa477('0x30')](_['pick'](_0xdb15a9[_0xa477('0x2e')],_0x169089[_0xa477('0x30')]),_0x599371);if(_0xdb15a9[_0xa477('0x2e')][_0xa477('0x39')]){_0x5aed5d[_0xa477('0x38')]=_[_0xa477('0x3a')](_0x5aed5d['where'],{'$or':_['map'](_0x599371,function(_0x3065e7){if(_0x3065e7[_0xa477('0x2b')]!==_0xa477('0x3b')){var _0x764cef={};_0x764cef[_0x3065e7['name']]={'$like':'%'+_0xdb15a9['query'][_0xa477('0x39')]+'%'};return _0x764cef;}})});}_0x5aed5d=_[_0xa477('0x3a')]({},_0x5aed5d,_0xdb15a9[_0xa477('0x3c')]);var _0x3db1a6={'where':_0x5aed5d[_0xa477('0x38')]};return db[_0xa477('0x29')][_0xa477('0x1d')](_0x3db1a6)[_0xa477('0x23')](function(_0x365f1a){_0x5819c8['count']=_0x365f1a;if(_0xdb15a9[_0xa477('0x2e')][_0xa477('0x3d')]){_0x5aed5d[_0xa477('0x3e')]=[{'all':!![]}];}return db['FreshdeskAccount'][_0xa477('0x3f')](_0x5aed5d);})['then'](function(_0x3d9ba0){_0x5819c8[_0xa477('0x40')]=_0x3d9ba0;return _0x5819c8;})['then'](respondWithFilteredResult(_0x14b0e8,_0x5aed5d))[_0xa477('0x41')](handleError(_0x14b0e8,null));};exports[_0xa477('0x42')]=function(_0x5c1e58,_0x240ad9){var _0x37f18c={'raw':![],'where':{'id':_0x5c1e58[_0xa477('0x43')]['id']}},_0x289080={};_0x289080[_0xa477('0x2d')]=_[_0xa477('0x2f')](db[_0xa477('0x29')][_0xa477('0x44')]);_0x289080[_0xa477('0x2e')]=_[_0xa477('0x2f')](_0x5c1e58['query']);_0x289080[_0xa477('0x30')]=_[_0xa477('0x31')](_0x289080[_0xa477('0x2d')],_0x289080[_0xa477('0x2e')]);_0x37f18c[_0xa477('0x32')]=_['intersection'](_0x289080[_0xa477('0x2d')],qs['fields'](_0x5c1e58[_0xa477('0x2e')][_0xa477('0x33')]));_0x37f18c[_0xa477('0x32')]=_0x37f18c['attributes'][_0xa477('0x45')]?_0x37f18c[_0xa477('0x32')]:_0x289080[_0xa477('0x2d')];if(_0x5c1e58[_0xa477('0x2e')][_0xa477('0x3d')]){_0x37f18c[_0xa477('0x3e')]=[{'all':!![]}];}_0x37f18c=_[_0xa477('0x3a')]({},_0x37f18c,_0x5c1e58[_0xa477('0x3c')]);return db[_0xa477('0x29')][_0xa477('0x46')](_0x37f18c)[_0xa477('0x23')](handleEntityNotFound(_0x240ad9,null))['then'](respondWithResult(_0x240ad9,null))[_0xa477('0x41')](handleError(_0x240ad9,null));};exports[_0xa477('0x47')]=function(_0xeacd33,_0x545410){return db[_0xa477('0x29')][_0xa477('0x47')](_0xeacd33['body'],{})[_0xa477('0x23')](respondWithResult(_0x545410,0xc9))[_0xa477('0x41')](handleError(_0x545410,null));};exports[_0xa477('0x21')]=function(_0x543a19,_0xcb8c41){if(_0x543a19['body']['id']){delete _0x543a19[_0xa477('0x48')]['id'];}return db['FreshdeskAccount'][_0xa477('0x46')]({'where':{'id':_0x543a19[_0xa477('0x43')]['id']}})[_0xa477('0x23')](handleEntityNotFound(_0xcb8c41,null))[_0xa477('0x23')](saveUpdates(_0x543a19['body'],null))[_0xa477('0x23')](respondWithResult(_0xcb8c41,null))[_0xa477('0x41')](handleError(_0xcb8c41,null));};exports[_0xa477('0x22')]=function(_0x59b17a,_0x4fb38b){return db[_0xa477('0x29')][_0xa477('0x46')]({'where':{'id':_0x59b17a[_0xa477('0x43')]['id']}})[_0xa477('0x23')](handleEntityNotFound(_0x4fb38b,null))[_0xa477('0x23')](removeEntity(_0x4fb38b,null))[_0xa477('0x41')](handleError(_0x4fb38b,null));};exports[_0xa477('0x49')]=function(_0x3f03c0,_0x596eb5,_0x53e55e){var _0x4052e0={};var _0x16f491={};var _0x2c1d27;var _0xadf7b9;return db[_0xa477('0x29')][_0xa477('0x4a')]({'where':{'id':_0x3f03c0['params']['id']}})[_0xa477('0x23')](handleEntityNotFound(_0x596eb5,null))[_0xa477('0x23')](function(_0x219417){if(_0x219417){_0x2c1d27=_0x219417;_0x16f491[_0xa477('0x2d')]=_[_0xa477('0x2f')](db[_0xa477('0x4b')][_0xa477('0x44')]);_0x16f491['query']=_['keys'](_0x3f03c0[_0xa477('0x2e')]);_0x16f491[_0xa477('0x30')]=_[_0xa477('0x31')](_0x16f491['model'],_0x16f491[_0xa477('0x2e')]);_0x4052e0[_0xa477('0x32')]=_[_0xa477('0x31')](_0x16f491['model'],qs[_0xa477('0x33')](_0x3f03c0[_0xa477('0x2e')][_0xa477('0x33')]));_0x4052e0[_0xa477('0x32')]=_0x4052e0[_0xa477('0x32')][_0xa477('0x45')]?_0x4052e0[_0xa477('0x32')]:_0x16f491[_0xa477('0x2d')];_0x4052e0['order']=qs['sort'](_0x3f03c0[_0xa477('0x2e')][_0xa477('0x37')]);_0x4052e0[_0xa477('0x38')]=qs[_0xa477('0x30')](_['pick'](_0x3f03c0['query'],_0x16f491[_0xa477('0x30')]));if(_0x3f03c0[_0xa477('0x2e')][_0xa477('0x39')]){_0x4052e0[_0xa477('0x38')]=_['merge'](_0x4052e0[_0xa477('0x38')],{'$or':_['map'](_0x4052e0['attributes'],function(_0x460ccf){var _0x2e20ca={};_0x2e20ca[_0x460ccf]={'$like':'%'+_0x3f03c0[_0xa477('0x2e')]['filter']+'%'};return _0x2e20ca;})});}_0x4052e0=_[_0xa477('0x3a')]({},_0x4052e0,_0x3f03c0['options']);return _0x2c1d27[_0xa477('0x49')](_0x4052e0);}})['then'](function(_0x1a0b6b){if(_0x1a0b6b){_0xadf7b9=_0x1a0b6b[_0xa477('0x45')];if(!_0x3f03c0[_0xa477('0x2e')]['hasOwnProperty'](_0xa477('0x35'))){_0x4052e0[_0xa477('0x1c')]=qs[_0xa477('0x1c')](_0x3f03c0[_0xa477('0x2e')][_0xa477('0x1c')]);_0x4052e0[_0xa477('0x1a')]=qs[_0xa477('0x1a')](_0x3f03c0[_0xa477('0x2e')]['offset']);}return _0x2c1d27[_0xa477('0x49')](_0x4052e0);}})[_0xa477('0x23')](function(_0x31cde3){if(_0x31cde3){return _0x31cde3?{'count':_0xadf7b9,'rows':_0x31cde3}:null;}})[_0xa477('0x23')](respondWithResult(_0x596eb5,null))['catch'](handleError(_0x596eb5,null));};exports[_0xa477('0x4c')]=function(_0x5a4eb2,_0x48189b,_0x3df3bf){if(_0x5a4eb2[_0xa477('0x48')]['id']){delete _0x5a4eb2['body']['id'];}return db[_0xa477('0x29')][_0xa477('0x4a')]({'where':{'id':_0x5a4eb2[_0xa477('0x43')]['id']}})['then'](handleEntityNotFound(_0x48189b,null))[_0xa477('0x23')](function(_0x578d64){if(_0x578d64){_0x5a4eb2[_0xa477('0x48')][_0xa477('0x4d')]=_0x578d64['id'];_0x5a4eb2[_0xa477('0x48')][_0xa477('0x4e')]=integrations[_0xa477('0x4f')](_0x5a4eb2['body']['channel'],_0x5a4eb2[_0xa477('0x48')][_0xa477('0x2b')]);_0x5a4eb2[_0xa477('0x48')]['Descriptions']=integrations[_0xa477('0x50')](_0x5a4eb2['body']['channel'],_0x5a4eb2[_0xa477('0x48')]['type']);return db['FreshdeskConfiguration']['create'](_0x5a4eb2[_0xa477('0x48')],{'include':[{'model':db[_0xa477('0x51')],'as':_0xa477('0x4e')},{'model':db[_0xa477('0x51')],'as':_0xa477('0x52')}]});}return null;})[_0xa477('0x23')](respondWithResult(_0x48189b,null))['catch'](handleError(_0x48189b,null));};exports[_0xa477('0x53')]=function(_0x3378a1,_0x1254fd,_0x4eb045){var _0x2b9139='';return db[_0xa477('0x29')][_0xa477('0x4a')]({'where':{'id':_0x3378a1['params']['id']},'attributes':['id','remoteUri','apiKey']})['then'](handleEntityNotFound(_0x1254fd,null))[_0xa477('0x23')](function(_0x452834){if(_0x452834){_0x2b9139=_0x452834[_0xa477('0x54')];var _0x1a48a4=_0x2b9139[_0xa477('0x55')](-0x1);if(_0x1a48a4==='/'){_0x2b9139=_0x2b9139[_0xa477('0x56')](0x0,_0x2b9139['lastIndexOf'](_0x1a48a4));}return rp({'method':_0xa477('0x57'),'uri':util['format'](_0xa477('0x58'),_0x2b9139,_0xa477('0x59')),'headers':{'Authorization':util[_0xa477('0x5a')](_0xa477('0x5b'),new Buffer(util[_0xa477('0x5a')](_0xa477('0x5c'),_0x452834[_0xa477('0x5d')]))[_0xa477('0x5e')](_0xa477('0x5f')))},'json':!![]});}})['then'](function(_0x16fcec){if(_0x16fcec){var _0x47be0a=[_0xa477('0x60'),'subject',_0xa477('0x61'),'description',_0xa477('0x17'),_0xa477('0x62'),_0xa477('0x63'),_0xa477('0x64'),'ticket_type',_0xa477('0x63'),'company'];_[_0xa477('0x65')](_0x16fcec,function(_0x3c8b35){return _0x47be0a['includes'](_0x3c8b35[_0xa477('0x25')])||!_0x3c8b35[_0xa477('0x66')]&&_0x3c8b35[_0xa477('0x2b')]!==_0xa477('0x67')&&_0x3c8b35['type']!==_0xa477('0x68');});return{'count':_0x16fcec[_0xa477('0x45')],'rows':_[_0xa477('0x28')](_0x16fcec,function(_0x4596ce){return{'id':_0x4596ce[_0xa477('0x25')],'name':_0x4596ce[_0xa477('0x69')],'custom':!_0x4596ce[_0xa477('0x66')],'options':_0x4596ce['choices']?_[_0xa477('0x28')](_0x4596ce[_0xa477('0x6a')],function(_0x7a28a7){return{'name':_[_0xa477('0x6b')](_0x7a28a7),'value':_0x7a28a7};}):[]};})};}})['then'](respondWithResult(_0x1254fd,null))[_0xa477('0x41')](function(_0x23dd79){var _0xa25710=_0x3378a1[_0xa477('0x2e')][_0xa477('0x6c')]?0x1f4:_0x23dd79[_0xa477('0x6d')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0xa477('0x53'),_0xa25710,JSON['stringify'](_0x23dd79));delete _0x23dd79['name'];if(_0xa25710===0x191){_0xa25710=0x190;}_0x1254fd[_0xa477('0x17')](_0xa25710)[_0xa477('0x26')](_0x3378a1[_0xa477('0x2e')][_0xa477('0x6c')]?{'message':_0xa477('0x6e'),'statusCode':_0x23dd79[_0xa477('0x6d')]}:_0x23dd79);});};
\ No newline at end of file
+var _0x8a55=['channel','getDescriptions','FreshdeskField','Descriptions','getFields','remoteUri','apiKey','substring','lastIndexOf','GET','format','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','requester','subject','agent','description','group','source','ticket_type','remove','default','custom_text','custom_dropdown','label','choices','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','map','FreshdeskAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','offset','order','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','params','find','catch','create','body','getConfigurations','findOne','FreshdeskConfiguration','length','sort','nolimit','addConfiguration','AccountId','Subjects','getSubjects'];(function(_0x45a85e,_0x292dd7){var _0x4c85b7=function(_0x10059f){while(--_0x10059f){_0x45a85e['push'](_0x45a85e['shift']());}};_0x4c85b7(++_0x292dd7);}(_0x8a55,0x185));var _0x58a5=function(_0xc2ce3b,_0x44e4c9){_0xc2ce3b=_0xc2ce3b-0x0;var _0x55331e=_0x8a55[_0xc2ce3b];return _0x55331e;};'use strict';var emlformat=require(_0x58a5('0x0'));var rimraf=require(_0x58a5('0x1'));var zipdir=require(_0x58a5('0x2'));var jsonpatch=require(_0x58a5('0x3'));var rp=require(_0x58a5('0x4'));var moment=require(_0x58a5('0x5'));var BPromise=require(_0x58a5('0x6'));var Mustache=require(_0x58a5('0x7'));var util=require('util');var path=require(_0x58a5('0x8'));var sox=require(_0x58a5('0x9'));var csv=require(_0x58a5('0xa'));var ejs=require(_0x58a5('0xb'));var fs=require('fs');var fs_extra=require(_0x58a5('0xc'));var _=require(_0x58a5('0xd'));var squel=require(_0x58a5('0xe'));var crypto=require(_0x58a5('0xf'));var jsforce=require(_0x58a5('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x58a5('0xa'));var querystring=require(_0x58a5('0x11'));var Papa=require(_0x58a5('0x12'));var Redis=require(_0x58a5('0x13'));var authService=require(_0x58a5('0x14'));var qs=require(_0x58a5('0x15'));var as=require(_0x58a5('0x16'));var hardwareService=require(_0x58a5('0x17'));var logger=require(_0x58a5('0x18'))(_0x58a5('0x19'));var utils=require(_0x58a5('0x1a'));var config=require(_0x58a5('0x1b'));var licenseUtil=require(_0x58a5('0x1c'));var db=require(_0x58a5('0x1d'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x23cd4a,_0x3ed0df){_0x3ed0df=_0x3ed0df||0xcc;return function(_0x270805){if(_0x270805){return _0x23cd4a[_0x58a5('0x1e')](_0x3ed0df);}return _0x23cd4a[_0x58a5('0x1f')](_0x3ed0df)['end']();};}function respondWithResult(_0x504295,_0x3ae4e5){_0x3ae4e5=_0x3ae4e5||0xc8;return function(_0x43d237){if(_0x43d237){return _0x504295[_0x58a5('0x1f')](_0x3ae4e5)[_0x58a5('0x20')](_0x43d237);}};}function respondWithFilteredResult(_0x12de1f,_0x598b0f){return function(_0x9577d5){if(_0x9577d5){var _0x42ea0c=typeof _0x598b0f['offset']===_0x58a5('0x21')&&typeof _0x598b0f[_0x58a5('0x22')]==='undefined';var _0x1fe496=_0x9577d5[_0x58a5('0x23')];var _0x59c170=_0x42ea0c?0x0:_0x598b0f['offset'];var _0x24aa8f=_0x42ea0c?_0x9577d5['count']:_0x598b0f['offset']+_0x598b0f['limit'];var _0x12abb2;if(_0x24aa8f>=_0x1fe496){_0x24aa8f=_0x1fe496;_0x12abb2=0xc8;}else{_0x12abb2=0xce;}_0x12de1f[_0x58a5('0x1f')](_0x12abb2);return _0x12de1f['set'](_0x58a5('0x24'),_0x59c170+'-'+_0x24aa8f+'/'+_0x1fe496)[_0x58a5('0x20')](_0x9577d5);}return null;};}function patchUpdates(_0x43e0fc){return function(_0x5afb6b){try{jsonpatch[_0x58a5('0x25')](_0x5afb6b,_0x43e0fc,!![]);}catch(_0x2a2226){return BPromise[_0x58a5('0x26')](_0x2a2226);}return _0x5afb6b[_0x58a5('0x27')]();};}function saveUpdates(_0x4b0df7,_0x5aecca){return function(_0x3aab6d){if(_0x3aab6d){return _0x3aab6d[_0x58a5('0x28')](_0x4b0df7)[_0x58a5('0x29')](function(_0x5d9be2){return _0x5d9be2;});}return null;};}function removeEntity(_0x543c49,_0x2da18b){return function(_0x48e5cf){if(_0x48e5cf){return _0x48e5cf[_0x58a5('0x2a')]()[_0x58a5('0x29')](function(){_0x543c49[_0x58a5('0x1f')](0xcc)[_0x58a5('0x2b')]();});}};}function handleEntityNotFound(_0x3a2e8c,_0x56f0a4){return function(_0x1a0f37){if(!_0x1a0f37){_0x3a2e8c['sendStatus'](0x194);}return _0x1a0f37;};}function handleError(_0x15b1b5,_0x2a884d){_0x2a884d=_0x2a884d||0x1f4;return function(_0x59823d){logger[_0x58a5('0x2c')](_0x59823d[_0x58a5('0x2d')]);if(_0x59823d['name']){delete _0x59823d[_0x58a5('0x2e')];}_0x15b1b5[_0x58a5('0x1f')](_0x2a884d)[_0x58a5('0x2f')](_0x59823d);};}exports['index']=function(_0x34bd7a,_0x2aa897){var _0x3d8968={},_0x3fbcd9={},_0x25bb2a={'count':0x0,'rows':[]};var _0x5bbb59=_[_0x58a5('0x30')](db[_0x58a5('0x31')][_0x58a5('0x32')],function(_0x3af368){return{'name':_0x3af368[_0x58a5('0x33')],'type':_0x3af368[_0x58a5('0x34')]['key']};});_0x3fbcd9[_0x58a5('0x35')]=_[_0x58a5('0x30')](_0x5bbb59,_0x58a5('0x2e'));_0x3fbcd9[_0x58a5('0x36')]=_[_0x58a5('0x37')](_0x34bd7a[_0x58a5('0x36')]);_0x3fbcd9[_0x58a5('0x38')]=_[_0x58a5('0x39')](_0x3fbcd9[_0x58a5('0x35')],_0x3fbcd9[_0x58a5('0x36')]);_0x3d8968[_0x58a5('0x3a')]=_['intersection'](_0x3fbcd9[_0x58a5('0x35')],qs[_0x58a5('0x3b')](_0x34bd7a['query'][_0x58a5('0x3b')]));_0x3d8968[_0x58a5('0x3a')]=_0x3d8968['attributes']['length']?_0x3d8968['attributes']:_0x3fbcd9['model'];if(!_0x34bd7a[_0x58a5('0x36')][_0x58a5('0x3c')]('nolimit')){_0x3d8968[_0x58a5('0x22')]=qs['limit'](_0x34bd7a[_0x58a5('0x36')]['limit']);_0x3d8968[_0x58a5('0x3d')]=qs[_0x58a5('0x3d')](_0x34bd7a[_0x58a5('0x36')][_0x58a5('0x3d')]);}_0x3d8968[_0x58a5('0x3e')]=qs['sort'](_0x34bd7a[_0x58a5('0x36')]['sort']);_0x3d8968['where']=qs[_0x58a5('0x38')](_[_0x58a5('0x3f')](_0x34bd7a[_0x58a5('0x36')],_0x3fbcd9[_0x58a5('0x38')]),_0x5bbb59);if(_0x34bd7a[_0x58a5('0x36')][_0x58a5('0x40')]){_0x3d8968[_0x58a5('0x41')]=_[_0x58a5('0x42')](_0x3d8968[_0x58a5('0x41')],{'$or':_[_0x58a5('0x30')](_0x5bbb59,function(_0x7074d3){if(_0x7074d3['type']!==_0x58a5('0x43')){var _0x5331bd={};_0x5331bd[_0x7074d3[_0x58a5('0x2e')]]={'$like':'%'+_0x34bd7a['query'][_0x58a5('0x40')]+'%'};return _0x5331bd;}})});}_0x3d8968=_[_0x58a5('0x42')]({},_0x3d8968,_0x34bd7a[_0x58a5('0x44')]);var _0x3cd6c3={'where':_0x3d8968[_0x58a5('0x41')]};return db[_0x58a5('0x31')][_0x58a5('0x23')](_0x3cd6c3)['then'](function(_0x2b43c5){_0x25bb2a['count']=_0x2b43c5;if(_0x34bd7a[_0x58a5('0x36')][_0x58a5('0x45')]){_0x3d8968[_0x58a5('0x46')]=[{'all':!![]}];}return db[_0x58a5('0x31')]['findAll'](_0x3d8968);})['then'](function(_0xb15572){_0x25bb2a[_0x58a5('0x47')]=_0xb15572;return _0x25bb2a;})[_0x58a5('0x29')](respondWithFilteredResult(_0x2aa897,_0x3d8968))['catch'](handleError(_0x2aa897,null));};exports['show']=function(_0x4b62f5,_0xe8ec6){var _0x1eeec1={'raw':![],'where':{'id':_0x4b62f5[_0x58a5('0x48')]['id']}},_0x5b2385={};_0x5b2385[_0x58a5('0x35')]=_[_0x58a5('0x37')](db[_0x58a5('0x31')][_0x58a5('0x32')]);_0x5b2385[_0x58a5('0x36')]=_[_0x58a5('0x37')](_0x4b62f5[_0x58a5('0x36')]);_0x5b2385[_0x58a5('0x38')]=_['intersection'](_0x5b2385[_0x58a5('0x35')],_0x5b2385[_0x58a5('0x36')]);_0x1eeec1[_0x58a5('0x3a')]=_['intersection'](_0x5b2385[_0x58a5('0x35')],qs[_0x58a5('0x3b')](_0x4b62f5[_0x58a5('0x36')][_0x58a5('0x3b')]));_0x1eeec1[_0x58a5('0x3a')]=_0x1eeec1[_0x58a5('0x3a')]['length']?_0x1eeec1[_0x58a5('0x3a')]:_0x5b2385[_0x58a5('0x35')];if(_0x4b62f5[_0x58a5('0x36')][_0x58a5('0x45')]){_0x1eeec1[_0x58a5('0x46')]=[{'all':!![]}];}_0x1eeec1=_[_0x58a5('0x42')]({},_0x1eeec1,_0x4b62f5[_0x58a5('0x44')]);return db[_0x58a5('0x31')][_0x58a5('0x49')](_0x1eeec1)[_0x58a5('0x29')](handleEntityNotFound(_0xe8ec6,null))[_0x58a5('0x29')](respondWithResult(_0xe8ec6,null))[_0x58a5('0x4a')](handleError(_0xe8ec6,null));};exports[_0x58a5('0x4b')]=function(_0x598219,_0x736443){return db[_0x58a5('0x31')][_0x58a5('0x4b')](_0x598219['body'],{})[_0x58a5('0x29')](respondWithResult(_0x736443,0xc9))[_0x58a5('0x4a')](handleError(_0x736443,null));};exports[_0x58a5('0x28')]=function(_0x381426,_0x118099){if(_0x381426[_0x58a5('0x4c')]['id']){delete _0x381426['body']['id'];}return db[_0x58a5('0x31')][_0x58a5('0x49')]({'where':{'id':_0x381426[_0x58a5('0x48')]['id']}})[_0x58a5('0x29')](handleEntityNotFound(_0x118099,null))[_0x58a5('0x29')](saveUpdates(_0x381426[_0x58a5('0x4c')],null))[_0x58a5('0x29')](respondWithResult(_0x118099,null))['catch'](handleError(_0x118099,null));};exports[_0x58a5('0x2a')]=function(_0x4bb401,_0x1b39af){return db[_0x58a5('0x31')][_0x58a5('0x49')]({'where':{'id':_0x4bb401['params']['id']}})[_0x58a5('0x29')](handleEntityNotFound(_0x1b39af,null))['then'](removeEntity(_0x1b39af,null))[_0x58a5('0x4a')](handleError(_0x1b39af,null));};exports[_0x58a5('0x4d')]=function(_0x4f785e,_0x4dbd13,_0x4021be){var _0xa8cd6b={};var _0x4e9667={};var _0x2f6ef0;var _0x238269;return db[_0x58a5('0x31')][_0x58a5('0x4e')]({'where':{'id':_0x4f785e[_0x58a5('0x48')]['id']}})['then'](handleEntityNotFound(_0x4dbd13,null))['then'](function(_0x4c81c2){if(_0x4c81c2){_0x2f6ef0=_0x4c81c2;_0x4e9667['model']=_[_0x58a5('0x37')](db[_0x58a5('0x4f')]['rawAttributes']);_0x4e9667['query']=_[_0x58a5('0x37')](_0x4f785e[_0x58a5('0x36')]);_0x4e9667[_0x58a5('0x38')]=_[_0x58a5('0x39')](_0x4e9667[_0x58a5('0x35')],_0x4e9667[_0x58a5('0x36')]);_0xa8cd6b['attributes']=_['intersection'](_0x4e9667[_0x58a5('0x35')],qs[_0x58a5('0x3b')](_0x4f785e[_0x58a5('0x36')][_0x58a5('0x3b')]));_0xa8cd6b[_0x58a5('0x3a')]=_0xa8cd6b[_0x58a5('0x3a')][_0x58a5('0x50')]?_0xa8cd6b['attributes']:_0x4e9667[_0x58a5('0x35')];_0xa8cd6b[_0x58a5('0x3e')]=qs['sort'](_0x4f785e[_0x58a5('0x36')][_0x58a5('0x51')]);_0xa8cd6b['where']=qs[_0x58a5('0x38')](_[_0x58a5('0x3f')](_0x4f785e[_0x58a5('0x36')],_0x4e9667['filters']));if(_0x4f785e[_0x58a5('0x36')][_0x58a5('0x40')]){_0xa8cd6b['where']=_['merge'](_0xa8cd6b[_0x58a5('0x41')],{'$or':_['map'](_0xa8cd6b[_0x58a5('0x3a')],function(_0x21ccf8){var _0x21b5b5={};_0x21b5b5[_0x21ccf8]={'$like':'%'+_0x4f785e[_0x58a5('0x36')]['filter']+'%'};return _0x21b5b5;})});}_0xa8cd6b=_[_0x58a5('0x42')]({},_0xa8cd6b,_0x4f785e[_0x58a5('0x44')]);return _0x2f6ef0[_0x58a5('0x4d')](_0xa8cd6b);}})[_0x58a5('0x29')](function(_0x35e690){if(_0x35e690){_0x238269=_0x35e690[_0x58a5('0x50')];if(!_0x4f785e['query']['hasOwnProperty'](_0x58a5('0x52'))){_0xa8cd6b[_0x58a5('0x22')]=qs[_0x58a5('0x22')](_0x4f785e[_0x58a5('0x36')][_0x58a5('0x22')]);_0xa8cd6b['offset']=qs[_0x58a5('0x3d')](_0x4f785e[_0x58a5('0x36')]['offset']);}return _0x2f6ef0[_0x58a5('0x4d')](_0xa8cd6b);}})[_0x58a5('0x29')](function(_0x445fca){if(_0x445fca){return _0x445fca?{'count':_0x238269,'rows':_0x445fca}:null;}})['then'](respondWithResult(_0x4dbd13,null))[_0x58a5('0x4a')](handleError(_0x4dbd13,null));};exports[_0x58a5('0x53')]=function(_0x4a58c1,_0x508e08,_0x39572b){if(_0x4a58c1[_0x58a5('0x4c')]['id']){delete _0x4a58c1['body']['id'];}return db[_0x58a5('0x31')][_0x58a5('0x4e')]({'where':{'id':_0x4a58c1[_0x58a5('0x48')]['id']}})[_0x58a5('0x29')](handleEntityNotFound(_0x508e08,null))['then'](function(_0x455f2e){if(_0x455f2e){_0x4a58c1[_0x58a5('0x4c')][_0x58a5('0x54')]=_0x455f2e['id'];_0x4a58c1[_0x58a5('0x4c')][_0x58a5('0x55')]=integrations[_0x58a5('0x56')](_0x4a58c1['body'][_0x58a5('0x57')],_0x4a58c1['body'][_0x58a5('0x34')]);_0x4a58c1[_0x58a5('0x4c')]['Descriptions']=integrations[_0x58a5('0x58')](_0x4a58c1['body'][_0x58a5('0x57')],_0x4a58c1[_0x58a5('0x4c')][_0x58a5('0x34')]);return db[_0x58a5('0x4f')][_0x58a5('0x4b')](_0x4a58c1[_0x58a5('0x4c')],{'include':[{'model':db[_0x58a5('0x59')],'as':_0x58a5('0x55')},{'model':db[_0x58a5('0x59')],'as':_0x58a5('0x5a')}]});}return null;})[_0x58a5('0x29')](respondWithResult(_0x508e08,null))[_0x58a5('0x4a')](handleError(_0x508e08,null));};exports[_0x58a5('0x5b')]=function(_0x89c3e2,_0x2f9ffa,_0xfdc5ac){var _0x132189='';return db['FreshdeskAccount'][_0x58a5('0x4e')]({'where':{'id':_0x89c3e2['params']['id']},'attributes':['id',_0x58a5('0x5c'),_0x58a5('0x5d')]})['then'](handleEntityNotFound(_0x2f9ffa,null))['then'](function(_0x1463bc){if(_0x1463bc){_0x132189=_0x1463bc[_0x58a5('0x5c')];var _0x494ad7=_0x132189['slice'](-0x1);if(_0x494ad7==='/'){_0x132189=_0x132189[_0x58a5('0x5e')](0x0,_0x132189[_0x58a5('0x5f')](_0x494ad7));}return rp({'method':_0x58a5('0x60'),'uri':util[_0x58a5('0x61')]('%s/%s',_0x132189,_0x58a5('0x62')),'headers':{'Authorization':util[_0x58a5('0x61')](_0x58a5('0x63'),new Buffer(util[_0x58a5('0x61')](_0x58a5('0x64'),_0x1463bc[_0x58a5('0x5d')]))[_0x58a5('0x65')]('base64'))},'json':!![]});}})[_0x58a5('0x29')](function(_0x5d85ce){if(_0x5d85ce){var _0x4688c8=[_0x58a5('0x66'),_0x58a5('0x67'),_0x58a5('0x68'),_0x58a5('0x69'),'status','priority',_0x58a5('0x6a'),_0x58a5('0x6b'),_0x58a5('0x6c'),_0x58a5('0x6a'),'company'];_[_0x58a5('0x6d')](_0x5d85ce,function(_0x271704){return _0x4688c8['includes'](_0x271704[_0x58a5('0x2e')])||!_0x271704[_0x58a5('0x6e')]&&_0x271704[_0x58a5('0x34')]!==_0x58a5('0x6f')&&_0x271704[_0x58a5('0x34')]!==_0x58a5('0x70');});return{'count':_0x5d85ce[_0x58a5('0x50')],'rows':_[_0x58a5('0x30')](_0x5d85ce,function(_0x406037){return{'id':_0x406037[_0x58a5('0x2e')],'name':_0x406037[_0x58a5('0x71')],'custom':!_0x406037[_0x58a5('0x6e')],'options':_0x406037[_0x58a5('0x72')]?_[_0x58a5('0x30')](_0x406037[_0x58a5('0x72')],function(_0xae16af){return{'name':_['capitalize'](_0xae16af),'value':_0xae16af};}):[]};})};}})[_0x58a5('0x29')](respondWithResult(_0x2f9ffa,null))[_0x58a5('0x4a')](function(_0x2bac6f){var _0x1da23a=_0x89c3e2['query'][_0x58a5('0x73')]?0x1f4:_0x2bac6f[_0x58a5('0x74')]||0x1f4;logger['error'](_0x58a5('0x75'),_0x58a5('0x5b'),_0x1da23a,JSON['stringify'](_0x2bac6f));delete _0x2bac6f[_0x58a5('0x2e')];if(_0x1da23a===0x191){_0x1da23a=0x190;}_0x2f9ffa[_0x58a5('0x1f')](_0x1da23a)['send'](_0x89c3e2[_0x58a5('0x36')][_0x58a5('0x73')]?{'message':_0x58a5('0x76'),'statusCode':_0x2bac6f['statusCode']}:_0x2bac6f);});};
\ No newline at end of file
index 0a5b031..d8e26c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf079=['define','FreshdeskAccount','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','exports'];(function(_0xc8a11,_0x347a33){var _0x55a500=function(_0x288d05){while(--_0x288d05){_0xc8a11['push'](_0xc8a11['shift']());}};_0x55a500(++_0x347a33);}(_0xf079,0xb6));var _0x9f07=function(_0x1107bd,_0x54b545){_0x1107bd=_0x1107bd-0x0;var _0x7bd4c=_0xf079[_0x1107bd];return _0x7bd4c;};'use strict';var _=require(_0x9f07('0x0'));var util=require(_0x9f07('0x1'));var logger=require(_0x9f07('0x2'))(_0x9f07('0x3'));var moment=require(_0x9f07('0x4'));var BPromise=require(_0x9f07('0x5'));var rp=require(_0x9f07('0x6'));var fs=require('fs');var path=require(_0x9f07('0x7'));var rimraf=require(_0x9f07('0x8'));var config=require(_0x9f07('0x9'));var attributes=require(_0x9f07('0xa'));var integrations=require(_0x9f07('0xb'));module[_0x9f07('0xc')]=function(_0x1d3bc2,_0x417502){return _0x1d3bc2[_0x9f07('0xd')](_0x9f07('0xe'),attributes,{'tableName':'int_freshdesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x681a=['../../components/integrations/configuration','define','int_freshdesk_accounts','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intFreshdeskAccount.attributes'];(function(_0x361d3f,_0x3be2aa){var _0x320229=function(_0x138319){while(--_0x138319){_0x361d3f['push'](_0x361d3f['shift']());}};_0x320229(++_0x3be2aa);}(_0x681a,0xcf));var _0xa681=function(_0x5c0a22,_0x3e0eb3){_0x5c0a22=_0x5c0a22-0x0;var _0x292d8e=_0x681a[_0x5c0a22];return _0x292d8e;};'use strict';var _=require(_0xa681('0x0'));var util=require(_0xa681('0x1'));var logger=require('../../config/logger')(_0xa681('0x2'));var moment=require(_0xa681('0x3'));var BPromise=require(_0xa681('0x4'));var rp=require(_0xa681('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa681('0x6'));var config=require(_0xa681('0x7'));var attributes=require(_0xa681('0x8'));var integrations=require(_0xa681('0x9'));module['exports']=function(_0x56fd7b,_0x3342ee){return _0x56fd7b[_0xa681('0xa')]('FreshdeskAccount',attributes,{'tableName':_0xa681('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c8e39e6..f340546 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbde3=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','attributes','limit','include','map','model','ShowFreshdeskAccount','find','where','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x38e7f0,_0x2df6e3){var _0x4899f1=function(_0x577a1c){while(--_0x577a1c){_0x38e7f0['push'](_0x38e7f0['shift']());}};_0x4899f1(++_0x2df6e3);}(_0xbde3,0xf6));var _0x3bde=function(_0x59f5fe,_0x4524ed){_0x59f5fe=_0x59f5fe-0x0;var _0x398bd2=_0xbde3[_0x59f5fe];return _0x398bd2;};'use strict';var _=require(_0x3bde('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3bde('0x1'));var rs=require(_0x3bde('0x2'));var fs=require('fs');var Redis=require(_0x3bde('0x3'));var db=require(_0x3bde('0x4'))['db'];var utils=require(_0x3bde('0x5'));var logger=require(_0x3bde('0x6'))(_0x3bde('0x7'));var config=require(_0x3bde('0x8'));var jayson=require(_0x3bde('0x9'));var client=jayson[_0x3bde('0xa')][_0x3bde('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1e1445,_0x9245a1,_0x567143){return new BPromise(function(_0x262094,_0x3a3e5f){return client[_0x3bde('0xc')](_0x1e1445,_0x567143)['then'](function(_0x30225c){logger[_0x3bde('0xd')](_0x3bde('0xe'),_0x9245a1,_0x3bde('0xf'));logger[_0x3bde('0x10')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x9245a1,_0x3bde('0xf'),JSON[_0x3bde('0x11')](_0x30225c));if(_0x30225c[_0x3bde('0x12')]){if(_0x30225c[_0x3bde('0x12')][_0x3bde('0x13')]===0x1f4){logger[_0x3bde('0x12')]('FreshdeskAccount,\x20%s,\x20%s',_0x9245a1,_0x30225c[_0x3bde('0x12')]['message']);return _0x3a3e5f(_0x30225c[_0x3bde('0x12')]['message']);}logger[_0x3bde('0x12')]('FreshdeskAccount,\x20%s,\x20%s',_0x9245a1,_0x30225c['error']['message']);return _0x262094(_0x30225c[_0x3bde('0x12')][_0x3bde('0x14')]);}else{logger[_0x3bde('0xd')](_0x3bde('0xe'),_0x9245a1,_0x3bde('0xf'));_0x262094(_0x30225c[_0x3bde('0x15')][_0x3bde('0x14')]);}})[_0x3bde('0x16')](function(_0x54d0ee){logger[_0x3bde('0x12')](_0x3bde('0xe'),_0x9245a1,_0x54d0ee);_0x3a3e5f(_0x54d0ee);});});}exports[_0x3bde('0x17')]=function(_0x47fe9e){var _0x10ecf1=this;return new Promise(function(_0x240b17,_0x59e538){return db[_0x3bde('0x18')][_0x3bde('0x19')]({'raw':_0x47fe9e[_0x3bde('0x1a')]?_0x47fe9e[_0x3bde('0x1a')][_0x3bde('0x1b')]===undefined?!![]:![]:!![],'where':_0x47fe9e['options']?_0x47fe9e[_0x3bde('0x1a')]['where']||null:null,'attributes':_0x47fe9e[_0x3bde('0x1a')]?_0x47fe9e['options'][_0x3bde('0x1c')]||null:null,'limit':_0x47fe9e[_0x3bde('0x1a')]?_0x47fe9e[_0x3bde('0x1a')][_0x3bde('0x1d')]||null:null,'include':_0x47fe9e[_0x3bde('0x1a')]?_0x47fe9e['options'][_0x3bde('0x1e')]?_[_0x3bde('0x1f')](_0x47fe9e[_0x3bde('0x1a')][_0x3bde('0x1e')],function(_0x3e0b4e){return{'model':db[_0x3e0b4e[_0x3bde('0x20')]],'as':_0x3e0b4e['as'],'attributes':_0x3e0b4e['attributes'],'include':_0x3e0b4e[_0x3bde('0x1e')]?_[_0x3bde('0x1f')](_0x3e0b4e['include'],function(_0x140f81){return{'model':db[_0x140f81['model']],'as':_0x140f81['as'],'attributes':_0x140f81[_0x3bde('0x1c')],'include':_0x140f81[_0x3bde('0x1e')]?_[_0x3bde('0x1f')](_0x140f81[_0x3bde('0x1e')],function(_0x378172){return{'model':db[_0x378172['model']],'as':_0x378172['as'],'attributes':_0x378172[_0x3bde('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x375406){logger[_0x3bde('0xd')](_0x3bde('0x17'),_0x47fe9e);logger['debug'](_0x3bde('0x17'),_0x47fe9e,JSON[_0x3bde('0x11')](_0x375406));_0x240b17(_0x375406);})[_0x3bde('0x16')](function(_0x1f212b){logger[_0x3bde('0x12')](_0x3bde('0x17'),_0x1f212b[_0x3bde('0x14')],_0x47fe9e);_0x59e538(_0x10ecf1['error'](0x1f4,_0x1f212b[_0x3bde('0x14')]));});});};exports[_0x3bde('0x21')]=function(_0x22ab6a){var _0x50d3f1=this;return new Promise(function(_0x18d82b,_0x367036){return db[_0x3bde('0x18')][_0x3bde('0x22')]({'raw':_0x22ab6a['options']?_0x22ab6a[_0x3bde('0x1a')][_0x3bde('0x1b')]===undefined?!![]:![]:!![],'where':_0x22ab6a['options']?_0x22ab6a[_0x3bde('0x1a')][_0x3bde('0x23')]||null:null,'attributes':_0x22ab6a[_0x3bde('0x1a')]?_0x22ab6a[_0x3bde('0x1a')][_0x3bde('0x1c')]||null:null,'include':_0x22ab6a[_0x3bde('0x1a')]?_0x22ab6a[_0x3bde('0x1a')][_0x3bde('0x1e')]?_['map'](_0x22ab6a[_0x3bde('0x1a')][_0x3bde('0x1e')],function(_0x4d51b8){return{'model':db[_0x4d51b8[_0x3bde('0x20')]],'as':_0x4d51b8['as'],'attributes':_0x4d51b8[_0x3bde('0x1c')],'include':_0x4d51b8['include']?_[_0x3bde('0x1f')](_0x4d51b8[_0x3bde('0x1e')],function(_0x2a0422){return{'model':db[_0x2a0422[_0x3bde('0x20')]],'as':_0x2a0422['as'],'attributes':_0x2a0422[_0x3bde('0x1c')],'include':_0x2a0422[_0x3bde('0x1e')]?_[_0x3bde('0x1f')](_0x2a0422['include'],function(_0x3a37dc){return{'model':db[_0x3a37dc[_0x3bde('0x20')]],'as':_0x3a37dc['as'],'attributes':_0x3a37dc['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4d1e9f){logger['info']('ShowFreshdeskAccount',_0x22ab6a);logger[_0x3bde('0x10')](_0x3bde('0x21'),_0x22ab6a,JSON[_0x3bde('0x11')](_0x4d1e9f));_0x18d82b(_0x4d1e9f);})['catch'](function(_0x546836){logger[_0x3bde('0x12')](_0x3bde('0x21'),_0x546836[_0x3bde('0x14')],_0x22ab6a);_0x367036(_0x50d3f1[_0x3bde('0x12')](0x1f4,_0x546836[_0x3bde('0x14')]));});});};
\ No newline at end of file
+var _0x9c39=['catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','where','attributes','limit','map','include','model','debug','ShowFreshdeskAccount','find','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x438472,_0x3a446d){var _0x176019=function(_0x1cd9f7){while(--_0x1cd9f7){_0x438472['push'](_0x438472['shift']());}};_0x176019(++_0x3a446d);}(_0x9c39,0xe7));var _0x99c3=function(_0x2e76a7,_0x23871a){_0x2e76a7=_0x2e76a7-0x0;var _0x454cde=_0x9c39[_0x2e76a7];return _0x454cde;};'use strict';var _=require(_0x99c3('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x99c3('0x1'));var rs=require(_0x99c3('0x2'));var fs=require('fs');var Redis=require(_0x99c3('0x3'));var db=require(_0x99c3('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x99c3('0x5'))(_0x99c3('0x6'));var config=require(_0x99c3('0x7'));var jayson=require(_0x99c3('0x8'));var client=jayson[_0x99c3('0x9')][_0x99c3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x30f750,_0x5d43a0,_0x1ca320){return new BPromise(function(_0x59cb7a,_0x25c620){return client['request'](_0x30f750,_0x1ca320)[_0x99c3('0xb')](function(_0x4d2f58){logger[_0x99c3('0xc')](_0x99c3('0xd'),_0x5d43a0,_0x99c3('0xe'));logger['debug'](_0x99c3('0xf'),_0x5d43a0,_0x99c3('0xe'),JSON[_0x99c3('0x10')](_0x4d2f58));if(_0x4d2f58['error']){if(_0x4d2f58[_0x99c3('0x11')][_0x99c3('0x12')]===0x1f4){logger[_0x99c3('0x11')](_0x99c3('0xd'),_0x5d43a0,_0x4d2f58['error'][_0x99c3('0x13')]);return _0x25c620(_0x4d2f58['error'][_0x99c3('0x13')]);}logger[_0x99c3('0x11')](_0x99c3('0xd'),_0x5d43a0,_0x4d2f58[_0x99c3('0x11')][_0x99c3('0x13')]);return _0x59cb7a(_0x4d2f58['error'][_0x99c3('0x13')]);}else{logger[_0x99c3('0xc')]('FreshdeskAccount,\x20%s,\x20%s',_0x5d43a0,'request\x20sent');_0x59cb7a(_0x4d2f58[_0x99c3('0x14')]['message']);}})[_0x99c3('0x15')](function(_0x4f4092){logger[_0x99c3('0x11')](_0x99c3('0xd'),_0x5d43a0,_0x4f4092);_0x25c620(_0x4f4092);});});}exports[_0x99c3('0x16')]=function(_0x51dff5){var _0x15edaf=this;return new Promise(function(_0xa37c1b,_0x2856ba){return db[_0x99c3('0x17')][_0x99c3('0x18')]({'raw':_0x51dff5['options']?_0x51dff5[_0x99c3('0x19')][_0x99c3('0x1a')]===undefined?!![]:![]:!![],'where':_0x51dff5[_0x99c3('0x19')]?_0x51dff5['options'][_0x99c3('0x1b')]||null:null,'attributes':_0x51dff5['options']?_0x51dff5[_0x99c3('0x19')][_0x99c3('0x1c')]||null:null,'limit':_0x51dff5[_0x99c3('0x19')]?_0x51dff5['options'][_0x99c3('0x1d')]||null:null,'include':_0x51dff5[_0x99c3('0x19')]?_0x51dff5[_0x99c3('0x19')]['include']?_[_0x99c3('0x1e')](_0x51dff5[_0x99c3('0x19')][_0x99c3('0x1f')],function(_0x45eb70){return{'model':db[_0x45eb70[_0x99c3('0x20')]],'as':_0x45eb70['as'],'attributes':_0x45eb70[_0x99c3('0x1c')],'include':_0x45eb70[_0x99c3('0x1f')]?_[_0x99c3('0x1e')](_0x45eb70[_0x99c3('0x1f')],function(_0x347e2a){return{'model':db[_0x347e2a[_0x99c3('0x20')]],'as':_0x347e2a['as'],'attributes':_0x347e2a[_0x99c3('0x1c')],'include':_0x347e2a['include']?_['map'](_0x347e2a[_0x99c3('0x1f')],function(_0x466f4f){return{'model':db[_0x466f4f[_0x99c3('0x20')]],'as':_0x466f4f['as'],'attributes':_0x466f4f[_0x99c3('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x58be02){logger[_0x99c3('0xc')]('GetFreshdeskAccount',_0x51dff5);logger[_0x99c3('0x21')](_0x99c3('0x16'),_0x51dff5,JSON[_0x99c3('0x10')](_0x58be02));_0xa37c1b(_0x58be02);})[_0x99c3('0x15')](function(_0x56a021){logger[_0x99c3('0x11')](_0x99c3('0x16'),_0x56a021['message'],_0x51dff5);_0x2856ba(_0x15edaf[_0x99c3('0x11')](0x1f4,_0x56a021[_0x99c3('0x13')]));});});};exports[_0x99c3('0x22')]=function(_0x4f712f){var _0x5363fe=this;return new Promise(function(_0x51d431,_0x370264){return db['FreshdeskAccount'][_0x99c3('0x23')]({'raw':_0x4f712f[_0x99c3('0x19')]?_0x4f712f[_0x99c3('0x19')][_0x99c3('0x1a')]===undefined?!![]:![]:!![],'where':_0x4f712f[_0x99c3('0x19')]?_0x4f712f[_0x99c3('0x19')][_0x99c3('0x1b')]||null:null,'attributes':_0x4f712f[_0x99c3('0x19')]?_0x4f712f[_0x99c3('0x19')][_0x99c3('0x1c')]||null:null,'include':_0x4f712f[_0x99c3('0x19')]?_0x4f712f[_0x99c3('0x19')][_0x99c3('0x1f')]?_[_0x99c3('0x1e')](_0x4f712f[_0x99c3('0x19')]['include'],function(_0x2c8862){return{'model':db[_0x2c8862[_0x99c3('0x20')]],'as':_0x2c8862['as'],'attributes':_0x2c8862[_0x99c3('0x1c')],'include':_0x2c8862[_0x99c3('0x1f')]?_[_0x99c3('0x1e')](_0x2c8862['include'],function(_0x402551){return{'model':db[_0x402551[_0x99c3('0x20')]],'as':_0x402551['as'],'attributes':_0x402551['attributes'],'include':_0x402551[_0x99c3('0x1f')]?_[_0x99c3('0x1e')](_0x402551['include'],function(_0x56cc96){return{'model':db[_0x56cc96[_0x99c3('0x20')]],'as':_0x56cc96['as'],'attributes':_0x56cc96[_0x99c3('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x99c3('0xb')](function(_0x22ea79){logger['info']('ShowFreshdeskAccount',_0x4f712f);logger[_0x99c3('0x21')](_0x99c3('0x22'),_0x4f712f,JSON[_0x99c3('0x10')](_0x22ea79));_0x51d431(_0x22ea79);})['catch'](function(_0x4d61e9){logger[_0x99c3('0x11')](_0x99c3('0x22'),_0x4d61e9['message'],_0x4f712f);_0x370264(_0x5363fe[_0x99c3('0x11')](0x1f4,_0x4d61e9['message']));});});};
\ No newline at end of file
index d8409a0..f497007 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7727=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshdeskConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields','/:id/subjects','getDescriptions','/:id/tags','post','create','delete','destroy','exports'];(function(_0x47c0c1,_0x2fd98f){var _0x48e551=function(_0x7d272f){while(--_0x7d272f){_0x47c0c1['push'](_0x47c0c1['shift']());}};_0x48e551(++_0x2fd98f);}(_0x7727,0x1cc));var _0x7772=function(_0x4b92f0,_0x5255d3){_0x4b92f0=_0x4b92f0-0x0;var _0x1626a3=_0x7727[_0x4b92f0];return _0x1626a3;};'use strict';var multer=require('multer');var util=require(_0x7772('0x0'));var path=require(_0x7772('0x1'));var timeout=require(_0x7772('0x2'));var express=require(_0x7772('0x3'));var router=express[_0x7772('0x4')]();var fs_extra=require(_0x7772('0x5'));var auth=require(_0x7772('0x6'));var interaction=require(_0x7772('0x7'));var config=require('../../config/environment');var controller=require(_0x7772('0x8'));router[_0x7772('0x9')]('/',auth[_0x7772('0xa')](),controller[_0x7772('0xb')]);router[_0x7772('0x9')](_0x7772('0xc'),auth[_0x7772('0xa')](),controller[_0x7772('0xd')]);router[_0x7772('0x9')]('/:id/fields',auth[_0x7772('0xa')](),controller[_0x7772('0xe')]);router[_0x7772('0x9')](_0x7772('0xf'),auth[_0x7772('0xa')](),controller['getSubjects']);router[_0x7772('0x9')]('/:id/descriptions',auth[_0x7772('0xa')](),controller[_0x7772('0x10')]);router['get'](_0x7772('0x11'),auth['isAuthenticated'](),controller['getTags']);router[_0x7772('0x12')]('/',auth[_0x7772('0xa')](),controller[_0x7772('0x13')]);router[_0x7772('0x12')]('/:id/tags',auth[_0x7772('0xa')](),controller['setTags']);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x7772('0x14')](_0x7772('0xc'),auth[_0x7772('0xa')](),controller[_0x7772('0x15')]);module[_0x7772('0x16')]=router;
\ No newline at end of file
+var _0xa877=['multer','path','express','fs-extra','../../components/auth/service','../../config/environment','./intFreshdeskConfiguration.controller','isAuthenticated','/:id','/:id/fields','getFields','get','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','create','setTags','put','update','destroy','exports'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0xa877,0xa1));var _0x7a87=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xa877[_0x2641f9];return _0x585741;};'use strict';var multer=require(_0x7a87('0x0'));var util=require('util');var path=require(_0x7a87('0x1'));var timeout=require('connect-timeout');var express=require(_0x7a87('0x2'));var router=express['Router']();var fs_extra=require(_0x7a87('0x3'));var auth=require(_0x7a87('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x7a87('0x5'));var controller=require(_0x7a87('0x6'));router['get']('/',auth[_0x7a87('0x7')](),controller['index']);router['get'](_0x7a87('0x8'),auth[_0x7a87('0x7')](),controller['show']);router['get'](_0x7a87('0x9'),auth[_0x7a87('0x7')](),controller[_0x7a87('0xa')]);router[_0x7a87('0xb')]('/:id/subjects',auth[_0x7a87('0x7')](),controller[_0x7a87('0xc')]);router['get'](_0x7a87('0xd'),auth[_0x7a87('0x7')](),controller[_0x7a87('0xe')]);router[_0x7a87('0xb')](_0x7a87('0xf'),auth['isAuthenticated'](),controller[_0x7a87('0x10')]);router['post']('/',auth[_0x7a87('0x7')](),controller[_0x7a87('0x11')]);router['post'](_0x7a87('0xf'),auth[_0x7a87('0x7')](),controller[_0x7a87('0x12')]);router[_0x7a87('0x13')](_0x7a87('0x8'),auth[_0x7a87('0x7')](),controller[_0x7a87('0x14')]);router['delete'](_0x7a87('0x8'),auth[_0x7a87('0x7')](),controller[_0x7a87('0x15')]);module[_0x7a87('0x16')]=router;
\ No newline at end of file
index 1f7ee9a..13db291 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2071=['STRING'];(function(_0x1bfe82,_0x3e3bbd){var _0x2b7723=function(_0x49e9f4){while(--_0x49e9f4){_0x1bfe82['push'](_0x1bfe82['shift']());}};_0x2b7723(++_0x3e3bbd);}(_0x2071,0x1d9));var _0x1207=function(_0x39b316,_0x3def1e){_0x39b316=_0x39b316-0x0;var _0x182ab1=_0x2071[_0x39b316];return _0x182ab1;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x1207('0x0')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf8be=['sequelize','STRING'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0xf8be,0x92));var _0xef8b=function(_0x5b0ac9,_0x1ce921){_0x5b0ac9=_0x5b0ac9-0x0;var _0x103d08=_0xf8be[_0x5b0ac9];return _0x103d08;};'use strict';var Sequelize=require(_0xef8b('0x0'));module['exports']={'name':{'type':Sequelize[_0xef8b('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 704ee26..0b9259d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f61=['stack','name','send','index','map','FreshdeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','pick','merge','where','VIRTUAL','filter','includeAll','findAll','rows','catch','include','find','create','body','params','getFields','FreshdeskField','sort','options','hasOwnProperty','getSubjects','nolimit','findOne','getDescriptions','Tag','getTags','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','apply','save','update','then','destroy','error'];(function(_0x1ae163,_0x55affc){var _0x9c8466=function(_0xf3e81){while(--_0xf3e81){_0x1ae163['push'](_0x1ae163['shift']());}};_0x9c8466(++_0x55affc);}(_0x3f61,0x18a));var _0x13f6=function(_0x2ad70c,_0x202ce3){_0x2ad70c=_0x2ad70c-0x0;var _0x368863=_0x3f61[_0x2ad70c];return _0x368863;};'use strict';var emlformat=require(_0x13f6('0x0'));var rimraf=require(_0x13f6('0x1'));var zipdir=require(_0x13f6('0x2'));var jsonpatch=require(_0x13f6('0x3'));var rp=require('request-promise');var moment=require(_0x13f6('0x4'));var BPromise=require(_0x13f6('0x5'));var Mustache=require(_0x13f6('0x6'));var util=require('util');var path=require(_0x13f6('0x7'));var sox=require(_0x13f6('0x8'));var csv=require('to-csv');var ejs=require(_0x13f6('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x13f6('0xa'));var squel=require(_0x13f6('0xb'));var crypto=require('crypto');var jsforce=require(_0x13f6('0xc'));var deskjs=require(_0x13f6('0xd'));var toCsv=require(_0x13f6('0xe'));var querystring=require(_0x13f6('0xf'));var Papa=require(_0x13f6('0x10'));var Redis=require(_0x13f6('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x13f6('0x12'));var as=require(_0x13f6('0x13'));var hardwareService=require(_0x13f6('0x14'));var logger=require(_0x13f6('0x15'))(_0x13f6('0x16'));var utils=require('../../config/utils');var config=require(_0x13f6('0x17'));var licenseUtil=require(_0x13f6('0x18'));var db=require(_0x13f6('0x19'))['db'];function respondWithStatusCode(_0x3376cf,_0x4f097b){_0x4f097b=_0x4f097b||0xcc;return function(_0x109a08){if(_0x109a08){return _0x3376cf[_0x13f6('0x1a')](_0x4f097b);}return _0x3376cf['status'](_0x4f097b)[_0x13f6('0x1b')]();};}function respondWithResult(_0x20cb30,_0x5030e5){_0x5030e5=_0x5030e5||0xc8;return function(_0x55ee8a){if(_0x55ee8a){return _0x20cb30[_0x13f6('0x1c')](_0x5030e5)[_0x13f6('0x1d')](_0x55ee8a);}};}function respondWithFilteredResult(_0x5a4e78,_0x58288b){return function(_0x5e0ec3){if(_0x5e0ec3){var _0x6cee14=typeof _0x58288b['offset']===_0x13f6('0x1e')&&typeof _0x58288b[_0x13f6('0x1f')]===_0x13f6('0x1e');var _0x4333af=_0x5e0ec3[_0x13f6('0x20')];var _0x82e68b=_0x6cee14?0x0:_0x58288b[_0x13f6('0x21')];var _0x4b2a14=_0x6cee14?_0x5e0ec3[_0x13f6('0x20')]:_0x58288b['offset']+_0x58288b[_0x13f6('0x1f')];var _0x39dedd;if(_0x4b2a14>=_0x4333af){_0x4b2a14=_0x4333af;_0x39dedd=0xc8;}else{_0x39dedd=0xce;}_0x5a4e78[_0x13f6('0x1c')](_0x39dedd);return _0x5a4e78[_0x13f6('0x22')]('Content-Range',_0x82e68b+'-'+_0x4b2a14+'/'+_0x4333af)[_0x13f6('0x1d')](_0x5e0ec3);}return null;};}function patchUpdates(_0x35c842){return function(_0x46a70c){try{jsonpatch[_0x13f6('0x23')](_0x46a70c,_0x35c842,!![]);}catch(_0x2da303){return BPromise['reject'](_0x2da303);}return _0x46a70c[_0x13f6('0x24')]();};}function saveUpdates(_0x47b3a1,_0x545005){return function(_0x2ae013){if(_0x2ae013){return _0x2ae013[_0x13f6('0x25')](_0x47b3a1)[_0x13f6('0x26')](function(_0x2f3d23){return _0x2f3d23;});}return null;};}function removeEntity(_0xaa93ef,_0x52c08c){return function(_0x5adb39){if(_0x5adb39){return _0x5adb39[_0x13f6('0x27')]()['then'](function(){_0xaa93ef[_0x13f6('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a9ae4,_0x12b347){return function(_0x1db8bb){if(!_0x1db8bb){_0x3a9ae4[_0x13f6('0x1a')](0x194);}return _0x1db8bb;};}function handleError(_0x1fd2ac,_0x374f30){_0x374f30=_0x374f30||0x1f4;return function(_0x1a7736){logger[_0x13f6('0x28')](_0x1a7736[_0x13f6('0x29')]);if(_0x1a7736[_0x13f6('0x2a')]){delete _0x1a7736['name'];}_0x1fd2ac[_0x13f6('0x1c')](_0x374f30)[_0x13f6('0x2b')](_0x1a7736);};}exports[_0x13f6('0x2c')]=function(_0x544e34,_0x5ae0e3){var _0x416ab8={},_0x32da2e={},_0x1791c5={'count':0x0,'rows':[]};var _0x389ed0=_[_0x13f6('0x2d')](db[_0x13f6('0x2e')][_0x13f6('0x2f')],function(_0x373752){return{'name':_0x373752[_0x13f6('0x30')],'type':_0x373752[_0x13f6('0x31')][_0x13f6('0x32')]};});_0x32da2e[_0x13f6('0x33')]=_['map'](_0x389ed0,_0x13f6('0x2a'));_0x32da2e[_0x13f6('0x34')]=_[_0x13f6('0x35')](_0x544e34[_0x13f6('0x34')]);_0x32da2e[_0x13f6('0x36')]=_[_0x13f6('0x37')](_0x32da2e[_0x13f6('0x33')],_0x32da2e[_0x13f6('0x34')]);_0x416ab8[_0x13f6('0x38')]=_[_0x13f6('0x37')](_0x32da2e[_0x13f6('0x33')],qs[_0x13f6('0x39')](_0x544e34[_0x13f6('0x34')]['fields']));_0x416ab8[_0x13f6('0x38')]=_0x416ab8[_0x13f6('0x38')][_0x13f6('0x3a')]?_0x416ab8[_0x13f6('0x38')]:_0x32da2e[_0x13f6('0x33')];if(!_0x544e34['query']['hasOwnProperty']('nolimit')){_0x416ab8[_0x13f6('0x1f')]=qs['limit'](_0x544e34['query'][_0x13f6('0x1f')]);_0x416ab8[_0x13f6('0x21')]=qs[_0x13f6('0x21')](_0x544e34[_0x13f6('0x34')][_0x13f6('0x21')]);}_0x416ab8[_0x13f6('0x3b')]=qs['sort'](_0x544e34[_0x13f6('0x34')]['sort']);_0x416ab8['where']=qs[_0x13f6('0x36')](_[_0x13f6('0x3c')](_0x544e34['query'],_0x32da2e[_0x13f6('0x36')]),_0x389ed0);if(_0x544e34[_0x13f6('0x34')]['filter']){_0x416ab8['where']=_[_0x13f6('0x3d')](_0x416ab8[_0x13f6('0x3e')],{'$or':_[_0x13f6('0x2d')](_0x389ed0,function(_0xf149e6){if(_0xf149e6[_0x13f6('0x31')]!==_0x13f6('0x3f')){var _0x398549={};_0x398549[_0xf149e6[_0x13f6('0x2a')]]={'$like':'%'+_0x544e34[_0x13f6('0x34')][_0x13f6('0x40')]+'%'};return _0x398549;}})});}_0x416ab8=_[_0x13f6('0x3d')]({},_0x416ab8,_0x544e34['options']);var _0x4f4a64={'where':_0x416ab8[_0x13f6('0x3e')]};return db[_0x13f6('0x2e')][_0x13f6('0x20')](_0x4f4a64)['then'](function(_0xe401cd){_0x1791c5[_0x13f6('0x20')]=_0xe401cd;if(_0x544e34[_0x13f6('0x34')][_0x13f6('0x41')]){_0x416ab8['include']=[{'all':!![]}];}return db[_0x13f6('0x2e')][_0x13f6('0x42')](_0x416ab8);})['then'](function(_0x2d4e5d){_0x1791c5[_0x13f6('0x43')]=_0x2d4e5d;return _0x1791c5;})['then'](respondWithFilteredResult(_0x5ae0e3,_0x416ab8))[_0x13f6('0x44')](handleError(_0x5ae0e3,null));};exports['show']=function(_0xe560c3,_0x30ea1c){var _0x521763={'raw':![],'where':{'id':_0xe560c3['params']['id']}},_0x356279={};_0x356279[_0x13f6('0x33')]=_[_0x13f6('0x35')](db['FreshdeskConfiguration'][_0x13f6('0x2f')]);_0x356279[_0x13f6('0x34')]=_[_0x13f6('0x35')](_0xe560c3['query']);_0x356279[_0x13f6('0x36')]=_['intersection'](_0x356279['model'],_0x356279[_0x13f6('0x34')]);_0x521763[_0x13f6('0x38')]=_['intersection'](_0x356279[_0x13f6('0x33')],qs['fields'](_0xe560c3['query']['fields']));_0x521763[_0x13f6('0x38')]=_0x521763[_0x13f6('0x38')][_0x13f6('0x3a')]?_0x521763[_0x13f6('0x38')]:_0x356279[_0x13f6('0x33')];if(_0xe560c3[_0x13f6('0x34')]['includeAll']){_0x521763[_0x13f6('0x45')]=[{'all':!![]}];}_0x521763=_[_0x13f6('0x3d')]({},_0x521763,_0xe560c3['options']);return db[_0x13f6('0x2e')][_0x13f6('0x46')](_0x521763)[_0x13f6('0x26')](handleEntityNotFound(_0x30ea1c,null))[_0x13f6('0x26')](respondWithResult(_0x30ea1c,null))[_0x13f6('0x44')](handleError(_0x30ea1c,null));};exports[_0x13f6('0x47')]=function(_0x390710,_0x38a4bc){return db[_0x13f6('0x2e')]['create'](_0x390710[_0x13f6('0x48')],{})['then'](respondWithResult(_0x38a4bc,0xc9))[_0x13f6('0x44')](handleError(_0x38a4bc,null));};exports[_0x13f6('0x25')]=function(_0x57c80c,_0x209bdc){if(_0x57c80c[_0x13f6('0x48')]['id']){delete _0x57c80c[_0x13f6('0x48')]['id'];}return db[_0x13f6('0x2e')][_0x13f6('0x46')]({'where':{'id':_0x57c80c['params']['id']}})[_0x13f6('0x26')](handleEntityNotFound(_0x209bdc,null))['then'](saveUpdates(_0x57c80c['body'],null))[_0x13f6('0x26')](respondWithResult(_0x209bdc,null))[_0x13f6('0x44')](handleError(_0x209bdc,null));};exports[_0x13f6('0x27')]=function(_0x162a0f,_0x2f49af){return db[_0x13f6('0x2e')][_0x13f6('0x46')]({'where':{'id':_0x162a0f[_0x13f6('0x49')]['id']}})[_0x13f6('0x26')](handleEntityNotFound(_0x2f49af,null))[_0x13f6('0x26')](removeEntity(_0x2f49af,null))[_0x13f6('0x44')](handleError(_0x2f49af,null));};exports[_0x13f6('0x4a')]=function(_0x1d4e4d,_0x3eb4ad,_0x19ab44){var _0x319ec8={};var _0x2e33ee={};var _0x23c4a8;var _0x13edf7;return db[_0x13f6('0x2e')]['findOne']({'where':{'id':_0x1d4e4d[_0x13f6('0x49')]['id']}})[_0x13f6('0x26')](handleEntityNotFound(_0x3eb4ad,null))[_0x13f6('0x26')](function(_0x4c4507){if(_0x4c4507){_0x23c4a8=_0x4c4507;_0x2e33ee[_0x13f6('0x33')]=_[_0x13f6('0x35')](db[_0x13f6('0x4b')][_0x13f6('0x2f')]);_0x2e33ee[_0x13f6('0x34')]=_['keys'](_0x1d4e4d[_0x13f6('0x34')]);_0x2e33ee[_0x13f6('0x36')]=_[_0x13f6('0x37')](_0x2e33ee['model'],_0x2e33ee['query']);_0x319ec8[_0x13f6('0x38')]=_['intersection'](_0x2e33ee[_0x13f6('0x33')],qs['fields'](_0x1d4e4d['query'][_0x13f6('0x39')]));_0x319ec8[_0x13f6('0x38')]=_0x319ec8[_0x13f6('0x38')][_0x13f6('0x3a')]?_0x319ec8[_0x13f6('0x38')]:_0x2e33ee[_0x13f6('0x33')];_0x319ec8[_0x13f6('0x3b')]=qs[_0x13f6('0x4c')](_0x1d4e4d[_0x13f6('0x34')][_0x13f6('0x4c')]);_0x319ec8[_0x13f6('0x3e')]=qs['filters'](_[_0x13f6('0x3c')](_0x1d4e4d['query'],_0x2e33ee['filters']));if(_0x1d4e4d['query'][_0x13f6('0x40')]){_0x319ec8[_0x13f6('0x3e')]=_[_0x13f6('0x3d')](_0x319ec8[_0x13f6('0x3e')],{'$or':_[_0x13f6('0x2d')](_0x319ec8[_0x13f6('0x38')],function(_0x38b821){var _0x311c6b={};_0x311c6b[_0x38b821]={'$like':'%'+_0x1d4e4d[_0x13f6('0x34')]['filter']+'%'};return _0x311c6b;})});}_0x319ec8=_[_0x13f6('0x3d')]({},_0x319ec8,_0x1d4e4d[_0x13f6('0x4d')]);return _0x23c4a8[_0x13f6('0x4a')](_0x319ec8);}})[_0x13f6('0x26')](function(_0x289312){if(_0x289312){_0x13edf7=_0x289312['length'];if(!_0x1d4e4d['query'][_0x13f6('0x4e')]('nolimit')){_0x319ec8['limit']=qs[_0x13f6('0x1f')](_0x1d4e4d['query'][_0x13f6('0x1f')]);_0x319ec8[_0x13f6('0x21')]=qs['offset'](_0x1d4e4d[_0x13f6('0x34')][_0x13f6('0x21')]);}return _0x23c4a8[_0x13f6('0x4a')](_0x319ec8);}})[_0x13f6('0x26')](function(_0x51c3c7){if(_0x51c3c7){return _0x51c3c7?{'count':_0x13edf7,'rows':_0x51c3c7}:null;}})[_0x13f6('0x26')](respondWithResult(_0x3eb4ad,null))[_0x13f6('0x44')](handleError(_0x3eb4ad,null));};exports['getSubjects']=function(_0x5d8cc0,_0x121fba,_0x801254){var _0x1e887d={};var _0x509d69={};var _0x1e21a4;var _0x38db3f;return db[_0x13f6('0x2e')]['findOne']({'where':{'id':_0x5d8cc0['params']['id']}})[_0x13f6('0x26')](handleEntityNotFound(_0x121fba,null))[_0x13f6('0x26')](function(_0x51ce3a){if(_0x51ce3a){_0x1e21a4=_0x51ce3a;_0x509d69['model']=_[_0x13f6('0x35')](db[_0x13f6('0x4b')][_0x13f6('0x2f')]);_0x509d69[_0x13f6('0x34')]=_[_0x13f6('0x35')](_0x5d8cc0[_0x13f6('0x34')]);_0x509d69[_0x13f6('0x36')]=_['intersection'](_0x509d69[_0x13f6('0x33')],_0x509d69['query']);_0x1e887d[_0x13f6('0x38')]=_['intersection'](_0x509d69[_0x13f6('0x33')],qs[_0x13f6('0x39')](_0x5d8cc0[_0x13f6('0x34')][_0x13f6('0x39')]));_0x1e887d[_0x13f6('0x38')]=_0x1e887d[_0x13f6('0x38')][_0x13f6('0x3a')]?_0x1e887d[_0x13f6('0x38')]:_0x509d69[_0x13f6('0x33')];_0x1e887d['order']=qs[_0x13f6('0x4c')](_0x5d8cc0['query']['sort']);_0x1e887d[_0x13f6('0x3e')]=qs[_0x13f6('0x36')](_['pick'](_0x5d8cc0[_0x13f6('0x34')],_0x509d69[_0x13f6('0x36')]));if(_0x5d8cc0[_0x13f6('0x34')][_0x13f6('0x40')]){_0x1e887d[_0x13f6('0x3e')]=_['merge'](_0x1e887d[_0x13f6('0x3e')],{'$or':_[_0x13f6('0x2d')](_0x1e887d[_0x13f6('0x38')],function(_0x56c505){var _0x10d02a={};_0x10d02a[_0x56c505]={'$like':'%'+_0x5d8cc0[_0x13f6('0x34')]['filter']+'%'};return _0x10d02a;})});}_0x1e887d=_[_0x13f6('0x3d')]({},_0x1e887d,_0x5d8cc0[_0x13f6('0x4d')]);return _0x1e21a4[_0x13f6('0x4f')](_0x1e887d);}})[_0x13f6('0x26')](function(_0x2fe7d1){if(_0x2fe7d1){_0x38db3f=_0x2fe7d1[_0x13f6('0x3a')];if(!_0x5d8cc0['query'][_0x13f6('0x4e')](_0x13f6('0x50'))){_0x1e887d[_0x13f6('0x1f')]=qs[_0x13f6('0x1f')](_0x5d8cc0['query'][_0x13f6('0x1f')]);_0x1e887d[_0x13f6('0x21')]=qs[_0x13f6('0x21')](_0x5d8cc0[_0x13f6('0x34')][_0x13f6('0x21')]);}return _0x1e21a4[_0x13f6('0x4f')](_0x1e887d);}})['then'](function(_0x203c7a){if(_0x203c7a){return _0x203c7a?{'count':_0x38db3f,'rows':_0x203c7a}:null;}})['then'](respondWithResult(_0x121fba,null))[_0x13f6('0x44')](handleError(_0x121fba,null));};exports['getDescriptions']=function(_0x58ad87,_0x31a55c,_0x43c5f3){var _0x785109={};var _0x457479={};var _0xfa268e;var _0x2f4958;return db['FreshdeskConfiguration'][_0x13f6('0x51')]({'where':{'id':_0x58ad87['params']['id']}})['then'](handleEntityNotFound(_0x31a55c,null))['then'](function(_0x1d463d){if(_0x1d463d){_0xfa268e=_0x1d463d;_0x457479[_0x13f6('0x33')]=_['keys'](db[_0x13f6('0x4b')][_0x13f6('0x2f')]);_0x457479[_0x13f6('0x34')]=_[_0x13f6('0x35')](_0x58ad87[_0x13f6('0x34')]);_0x457479[_0x13f6('0x36')]=_[_0x13f6('0x37')](_0x457479['model'],_0x457479['query']);_0x785109['attributes']=_['intersection'](_0x457479[_0x13f6('0x33')],qs[_0x13f6('0x39')](_0x58ad87['query'][_0x13f6('0x39')]));_0x785109[_0x13f6('0x38')]=_0x785109[_0x13f6('0x38')][_0x13f6('0x3a')]?_0x785109[_0x13f6('0x38')]:_0x457479[_0x13f6('0x33')];_0x785109['order']=qs[_0x13f6('0x4c')](_0x58ad87[_0x13f6('0x34')][_0x13f6('0x4c')]);_0x785109[_0x13f6('0x3e')]=qs[_0x13f6('0x36')](_[_0x13f6('0x3c')](_0x58ad87['query'],_0x457479[_0x13f6('0x36')]));if(_0x58ad87['query']['filter']){_0x785109[_0x13f6('0x3e')]=_[_0x13f6('0x3d')](_0x785109[_0x13f6('0x3e')],{'$or':_[_0x13f6('0x2d')](_0x785109[_0x13f6('0x38')],function(_0x1c11e2){var _0x8e206e={};_0x8e206e[_0x1c11e2]={'$like':'%'+_0x58ad87[_0x13f6('0x34')][_0x13f6('0x40')]+'%'};return _0x8e206e;})});}_0x785109=_[_0x13f6('0x3d')]({},_0x785109,_0x58ad87[_0x13f6('0x4d')]);return _0xfa268e['getDescriptions'](_0x785109);}})[_0x13f6('0x26')](function(_0x3b162e){if(_0x3b162e){_0x2f4958=_0x3b162e[_0x13f6('0x3a')];if(!_0x58ad87[_0x13f6('0x34')]['hasOwnProperty'](_0x13f6('0x50'))){_0x785109[_0x13f6('0x1f')]=qs[_0x13f6('0x1f')](_0x58ad87[_0x13f6('0x34')][_0x13f6('0x1f')]);_0x785109['offset']=qs[_0x13f6('0x21')](_0x58ad87[_0x13f6('0x34')][_0x13f6('0x21')]);}return _0xfa268e[_0x13f6('0x52')](_0x785109);}})['then'](function(_0x45a4a1){if(_0x45a4a1){return _0x45a4a1?{'count':_0x2f4958,'rows':_0x45a4a1}:null;}})[_0x13f6('0x26')](respondWithResult(_0x31a55c,null))[_0x13f6('0x44')](handleError(_0x31a55c,null));};exports['getTags']=function(_0x28f17a,_0x4f0052,_0x115a78){var _0x40ab7d={};var _0x35b395={};var _0xf77fc8;var _0x31d287;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x28f17a[_0x13f6('0x49')]['id']}})['then'](handleEntityNotFound(_0x4f0052,null))[_0x13f6('0x26')](function(_0x5620e){if(_0x5620e){_0xf77fc8=_0x5620e;_0x35b395['model']=_['keys'](db[_0x13f6('0x53')]['rawAttributes']);_0x35b395[_0x13f6('0x34')]=_[_0x13f6('0x35')](_0x28f17a[_0x13f6('0x34')]);_0x35b395[_0x13f6('0x36')]=_['intersection'](_0x35b395[_0x13f6('0x33')],_0x35b395['query']);_0x40ab7d['attributes']=_[_0x13f6('0x37')](_0x35b395[_0x13f6('0x33')],qs[_0x13f6('0x39')](_0x28f17a[_0x13f6('0x34')]['fields']));_0x40ab7d['attributes']=_0x40ab7d['attributes'][_0x13f6('0x3a')]?_0x40ab7d['attributes']:_0x35b395[_0x13f6('0x33')];_0x40ab7d[_0x13f6('0x3b')]=qs[_0x13f6('0x4c')](_0x28f17a['query']['sort']);_0x40ab7d[_0x13f6('0x3e')]=qs[_0x13f6('0x36')](_[_0x13f6('0x3c')](_0x28f17a[_0x13f6('0x34')],_0x35b395[_0x13f6('0x36')]));if(_0x28f17a[_0x13f6('0x34')][_0x13f6('0x40')]){_0x40ab7d['where']=_['merge'](_0x40ab7d[_0x13f6('0x3e')],{'$or':_[_0x13f6('0x2d')](_0x40ab7d[_0x13f6('0x38')],function(_0x474338){var _0x51400c={};_0x51400c[_0x474338]={'$like':'%'+_0x28f17a[_0x13f6('0x34')]['filter']+'%'};return _0x51400c;})});}_0x40ab7d=_[_0x13f6('0x3d')]({},_0x40ab7d,_0x28f17a['options']);return _0xf77fc8[_0x13f6('0x54')](_0x40ab7d);}})['then'](function(_0x57fca3){if(_0x57fca3){_0x31d287=_0x57fca3['length'];if(!_0x28f17a['query'][_0x13f6('0x4e')]('nolimit')){_0x40ab7d[_0x13f6('0x1f')]=qs[_0x13f6('0x1f')](_0x28f17a[_0x13f6('0x34')][_0x13f6('0x1f')]);_0x40ab7d[_0x13f6('0x21')]=qs[_0x13f6('0x21')](_0x28f17a['query']['offset']);}return _0xf77fc8[_0x13f6('0x54')](_0x40ab7d);}})['then'](function(_0x5a9635){if(_0x5a9635){return _0x5a9635?{'count':_0x31d287,'rows':_0x5a9635}:null;}})[_0x13f6('0x26')](respondWithResult(_0x4f0052,null))[_0x13f6('0x44')](handleError(_0x4f0052,null));};exports['setTags']=function(_0x51dabc,_0xfd3d39,_0x27f233){if(_0x51dabc[_0x13f6('0x48')]['id']){delete _0x51dabc[_0x13f6('0x48')]['id'];}return db[_0x13f6('0x2e')]['findOne']({'where':{'id':_0x51dabc[_0x13f6('0x49')]['id']}})[_0x13f6('0x26')](handleEntityNotFound(_0xfd3d39,null))[_0x13f6('0x26')](function(_0x2a5b17){if(_0x2a5b17){return _0x2a5b17[_0x13f6('0x55')](_0x51dabc[_0x13f6('0x48')][_0x13f6('0x56')]||[]);}return null;})['then'](respondWithResult(_0xfd3d39,null))[_0x13f6('0x44')](handleError(_0xfd3d39,null));};
\ No newline at end of file
+var _0x7c68=['where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','keys','find','create','body','params','getFields','findOne','FreshdeskField','order','pick','nolimit','getSubjects','getDescriptions','Tag','getTags','setTags','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','reject','update','then','destroy','error','name','send','map','FreshdeskConfiguration','rawAttributes','query','intersection','model','attributes','fields','length','hasOwnProperty','sort'];(function(_0x1afd36,_0x447b43){var _0x59e59f=function(_0x4b71ba){while(--_0x4b71ba){_0x1afd36['push'](_0x1afd36['shift']());}};_0x59e59f(++_0x447b43);}(_0x7c68,0x15b));var _0x87c6=function(_0x1d5e54,_0x5115e6){_0x1d5e54=_0x1d5e54-0x0;var _0x420d64=_0x7c68[_0x1d5e54];return _0x420d64;};'use strict';var emlformat=require(_0x87c6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x87c6('0x1'));var jsonpatch=require(_0x87c6('0x2'));var rp=require(_0x87c6('0x3'));var moment=require(_0x87c6('0x4'));var BPromise=require(_0x87c6('0x5'));var Mustache=require(_0x87c6('0x6'));var util=require(_0x87c6('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x87c6('0x8'));var ejs=require(_0x87c6('0x9'));var fs=require('fs');var fs_extra=require(_0x87c6('0xa'));var _=require(_0x87c6('0xb'));var squel=require(_0x87c6('0xc'));var crypto=require(_0x87c6('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x87c6('0xe'));var toCsv=require(_0x87c6('0x8'));var querystring=require(_0x87c6('0xf'));var Papa=require('papaparse');var Redis=require(_0x87c6('0x10'));var authService=require(_0x87c6('0x11'));var qs=require(_0x87c6('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x87c6('0x13'));var logger=require(_0x87c6('0x14'))(_0x87c6('0x15'));var utils=require(_0x87c6('0x16'));var config=require(_0x87c6('0x17'));var licenseUtil=require(_0x87c6('0x18'));var db=require(_0x87c6('0x19'))['db'];function respondWithStatusCode(_0x42e93c,_0x599aab){_0x599aab=_0x599aab||0xcc;return function(_0x41e965){if(_0x41e965){return _0x42e93c[_0x87c6('0x1a')](_0x599aab);}return _0x42e93c[_0x87c6('0x1b')](_0x599aab)['end']();};}function respondWithResult(_0x460f8a,_0x489e2a){_0x489e2a=_0x489e2a||0xc8;return function(_0x1502f2){if(_0x1502f2){return _0x460f8a[_0x87c6('0x1b')](_0x489e2a)['json'](_0x1502f2);}};}function respondWithFilteredResult(_0x3eb648,_0x53ed7f){return function(_0x51cfb1){if(_0x51cfb1){var _0x1cd49c=typeof _0x53ed7f[_0x87c6('0x1c')]===_0x87c6('0x1d')&&typeof _0x53ed7f[_0x87c6('0x1e')]===_0x87c6('0x1d');var _0x1d1642=_0x51cfb1[_0x87c6('0x1f')];var _0x2b7879=_0x1cd49c?0x0:_0x53ed7f[_0x87c6('0x1c')];var _0x22f6b9=_0x1cd49c?_0x51cfb1[_0x87c6('0x1f')]:_0x53ed7f[_0x87c6('0x1c')]+_0x53ed7f[_0x87c6('0x1e')];var _0x5f3186;if(_0x22f6b9>=_0x1d1642){_0x22f6b9=_0x1d1642;_0x5f3186=0xc8;}else{_0x5f3186=0xce;}_0x3eb648[_0x87c6('0x1b')](_0x5f3186);return _0x3eb648[_0x87c6('0x20')](_0x87c6('0x21'),_0x2b7879+'-'+_0x22f6b9+'/'+_0x1d1642)[_0x87c6('0x22')](_0x51cfb1);}return null;};}function patchUpdates(_0x4cf65b){return function(_0x469238){try{jsonpatch['apply'](_0x469238,_0x4cf65b,!![]);}catch(_0x1d67af){return BPromise[_0x87c6('0x23')](_0x1d67af);}return _0x469238['save']();};}function saveUpdates(_0x25648f,_0x53b0d3){return function(_0x1a2f2d){if(_0x1a2f2d){return _0x1a2f2d[_0x87c6('0x24')](_0x25648f)[_0x87c6('0x25')](function(_0x47e367){return _0x47e367;});}return null;};}function removeEntity(_0x5e02d6,_0x518da4){return function(_0x1dfeac){if(_0x1dfeac){return _0x1dfeac[_0x87c6('0x26')]()[_0x87c6('0x25')](function(){_0x5e02d6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2a6221,_0x200bc5){return function(_0x5b4471){if(!_0x5b4471){_0x2a6221[_0x87c6('0x1a')](0x194);}return _0x5b4471;};}function handleError(_0x594816,_0xd6ed69){_0xd6ed69=_0xd6ed69||0x1f4;return function(_0x562ff0){logger[_0x87c6('0x27')](_0x562ff0['stack']);if(_0x562ff0[_0x87c6('0x28')]){delete _0x562ff0['name'];}_0x594816['status'](_0xd6ed69)[_0x87c6('0x29')](_0x562ff0);};}exports['index']=function(_0x4a1c46,_0x3c4eea){var _0x183181={},_0x4a1163={},_0x1e1895={'count':0x0,'rows':[]};var _0x305cea=_[_0x87c6('0x2a')](db[_0x87c6('0x2b')][_0x87c6('0x2c')],function(_0x36036c){return{'name':_0x36036c['fieldName'],'type':_0x36036c['type']['key']};});_0x4a1163['model']=_[_0x87c6('0x2a')](_0x305cea,_0x87c6('0x28'));_0x4a1163[_0x87c6('0x2d')]=_['keys'](_0x4a1c46['query']);_0x4a1163['filters']=_[_0x87c6('0x2e')](_0x4a1163[_0x87c6('0x2f')],_0x4a1163['query']);_0x183181[_0x87c6('0x30')]=_[_0x87c6('0x2e')](_0x4a1163[_0x87c6('0x2f')],qs[_0x87c6('0x31')](_0x4a1c46['query'][_0x87c6('0x31')]));_0x183181[_0x87c6('0x30')]=_0x183181[_0x87c6('0x30')][_0x87c6('0x32')]?_0x183181[_0x87c6('0x30')]:_0x4a1163['model'];if(!_0x4a1c46[_0x87c6('0x2d')][_0x87c6('0x33')]('nolimit')){_0x183181[_0x87c6('0x1e')]=qs[_0x87c6('0x1e')](_0x4a1c46[_0x87c6('0x2d')][_0x87c6('0x1e')]);_0x183181[_0x87c6('0x1c')]=qs[_0x87c6('0x1c')](_0x4a1c46[_0x87c6('0x2d')]['offset']);}_0x183181['order']=qs['sort'](_0x4a1c46[_0x87c6('0x2d')][_0x87c6('0x34')]);_0x183181[_0x87c6('0x35')]=qs[_0x87c6('0x36')](_['pick'](_0x4a1c46[_0x87c6('0x2d')],_0x4a1163[_0x87c6('0x36')]),_0x305cea);if(_0x4a1c46[_0x87c6('0x2d')][_0x87c6('0x37')]){_0x183181['where']=_[_0x87c6('0x38')](_0x183181[_0x87c6('0x35')],{'$or':_[_0x87c6('0x2a')](_0x305cea,function(_0x359ffa){if(_0x359ffa['type']!==_0x87c6('0x39')){var _0x4fc870={};_0x4fc870[_0x359ffa['name']]={'$like':'%'+_0x4a1c46['query']['filter']+'%'};return _0x4fc870;}})});}_0x183181=_['merge']({},_0x183181,_0x4a1c46[_0x87c6('0x3a')]);var _0x389e05={'where':_0x183181[_0x87c6('0x35')]};return db[_0x87c6('0x2b')][_0x87c6('0x1f')](_0x389e05)[_0x87c6('0x25')](function(_0x25632a){_0x1e1895[_0x87c6('0x1f')]=_0x25632a;if(_0x4a1c46[_0x87c6('0x2d')][_0x87c6('0x3b')]){_0x183181[_0x87c6('0x3c')]=[{'all':!![]}];}return db['FreshdeskConfiguration'][_0x87c6('0x3d')](_0x183181);})[_0x87c6('0x25')](function(_0x4ed3b0){_0x1e1895[_0x87c6('0x3e')]=_0x4ed3b0;return _0x1e1895;})[_0x87c6('0x25')](respondWithFilteredResult(_0x3c4eea,_0x183181))[_0x87c6('0x3f')](handleError(_0x3c4eea,null));};exports['show']=function(_0x3cdbbb,_0x5e478a){var _0x5b45a4={'raw':![],'where':{'id':_0x3cdbbb['params']['id']}},_0x3de96e={};_0x3de96e[_0x87c6('0x2f')]=_[_0x87c6('0x40')](db['FreshdeskConfiguration'][_0x87c6('0x2c')]);_0x3de96e[_0x87c6('0x2d')]=_[_0x87c6('0x40')](_0x3cdbbb['query']);_0x3de96e['filters']=_['intersection'](_0x3de96e['model'],_0x3de96e[_0x87c6('0x2d')]);_0x5b45a4[_0x87c6('0x30')]=_['intersection'](_0x3de96e['model'],qs[_0x87c6('0x31')](_0x3cdbbb[_0x87c6('0x2d')][_0x87c6('0x31')]));_0x5b45a4[_0x87c6('0x30')]=_0x5b45a4[_0x87c6('0x30')][_0x87c6('0x32')]?_0x5b45a4[_0x87c6('0x30')]:_0x3de96e[_0x87c6('0x2f')];if(_0x3cdbbb[_0x87c6('0x2d')][_0x87c6('0x3b')]){_0x5b45a4[_0x87c6('0x3c')]=[{'all':!![]}];}_0x5b45a4=_[_0x87c6('0x38')]({},_0x5b45a4,_0x3cdbbb[_0x87c6('0x3a')]);return db[_0x87c6('0x2b')][_0x87c6('0x41')](_0x5b45a4)[_0x87c6('0x25')](handleEntityNotFound(_0x5e478a,null))[_0x87c6('0x25')](respondWithResult(_0x5e478a,null))[_0x87c6('0x3f')](handleError(_0x5e478a,null));};exports[_0x87c6('0x42')]=function(_0x3b2218,_0x1ce8cf){return db[_0x87c6('0x2b')]['create'](_0x3b2218[_0x87c6('0x43')],{})[_0x87c6('0x25')](respondWithResult(_0x1ce8cf,0xc9))[_0x87c6('0x3f')](handleError(_0x1ce8cf,null));};exports[_0x87c6('0x24')]=function(_0x34180f,_0x1bee96){if(_0x34180f[_0x87c6('0x43')]['id']){delete _0x34180f[_0x87c6('0x43')]['id'];}return db[_0x87c6('0x2b')][_0x87c6('0x41')]({'where':{'id':_0x34180f[_0x87c6('0x44')]['id']}})['then'](handleEntityNotFound(_0x1bee96,null))[_0x87c6('0x25')](saveUpdates(_0x34180f[_0x87c6('0x43')],null))[_0x87c6('0x25')](respondWithResult(_0x1bee96,null))[_0x87c6('0x3f')](handleError(_0x1bee96,null));};exports[_0x87c6('0x26')]=function(_0x54d1f6,_0x421d1c){return db[_0x87c6('0x2b')]['find']({'where':{'id':_0x54d1f6[_0x87c6('0x44')]['id']}})[_0x87c6('0x25')](handleEntityNotFound(_0x421d1c,null))['then'](removeEntity(_0x421d1c,null))[_0x87c6('0x3f')](handleError(_0x421d1c,null));};exports[_0x87c6('0x45')]=function(_0x4223a0,_0x332755,_0x176a3f){var _0x1cf03c={};var _0x4332f7={};var _0x5b582d;var _0x474cc3;return db['FreshdeskConfiguration'][_0x87c6('0x46')]({'where':{'id':_0x4223a0[_0x87c6('0x44')]['id']}})[_0x87c6('0x25')](handleEntityNotFound(_0x332755,null))[_0x87c6('0x25')](function(_0x1df12a){if(_0x1df12a){_0x5b582d=_0x1df12a;_0x4332f7[_0x87c6('0x2f')]=_[_0x87c6('0x40')](db[_0x87c6('0x47')][_0x87c6('0x2c')]);_0x4332f7[_0x87c6('0x2d')]=_[_0x87c6('0x40')](_0x4223a0[_0x87c6('0x2d')]);_0x4332f7[_0x87c6('0x36')]=_[_0x87c6('0x2e')](_0x4332f7[_0x87c6('0x2f')],_0x4332f7['query']);_0x1cf03c[_0x87c6('0x30')]=_[_0x87c6('0x2e')](_0x4332f7[_0x87c6('0x2f')],qs[_0x87c6('0x31')](_0x4223a0[_0x87c6('0x2d')][_0x87c6('0x31')]));_0x1cf03c[_0x87c6('0x30')]=_0x1cf03c[_0x87c6('0x30')][_0x87c6('0x32')]?_0x1cf03c[_0x87c6('0x30')]:_0x4332f7[_0x87c6('0x2f')];_0x1cf03c[_0x87c6('0x48')]=qs['sort'](_0x4223a0[_0x87c6('0x2d')][_0x87c6('0x34')]);_0x1cf03c['where']=qs[_0x87c6('0x36')](_[_0x87c6('0x49')](_0x4223a0[_0x87c6('0x2d')],_0x4332f7[_0x87c6('0x36')]));if(_0x4223a0[_0x87c6('0x2d')][_0x87c6('0x37')]){_0x1cf03c[_0x87c6('0x35')]=_[_0x87c6('0x38')](_0x1cf03c['where'],{'$or':_[_0x87c6('0x2a')](_0x1cf03c[_0x87c6('0x30')],function(_0x690da2){var _0x30e4f2={};_0x30e4f2[_0x690da2]={'$like':'%'+_0x4223a0['query'][_0x87c6('0x37')]+'%'};return _0x30e4f2;})});}_0x1cf03c=_[_0x87c6('0x38')]({},_0x1cf03c,_0x4223a0[_0x87c6('0x3a')]);return _0x5b582d[_0x87c6('0x45')](_0x1cf03c);}})['then'](function(_0x293073){if(_0x293073){_0x474cc3=_0x293073[_0x87c6('0x32')];if(!_0x4223a0[_0x87c6('0x2d')][_0x87c6('0x33')](_0x87c6('0x4a'))){_0x1cf03c[_0x87c6('0x1e')]=qs['limit'](_0x4223a0[_0x87c6('0x2d')]['limit']);_0x1cf03c[_0x87c6('0x1c')]=qs[_0x87c6('0x1c')](_0x4223a0['query'][_0x87c6('0x1c')]);}return _0x5b582d[_0x87c6('0x45')](_0x1cf03c);}})[_0x87c6('0x25')](function(_0x533db9){if(_0x533db9){return _0x533db9?{'count':_0x474cc3,'rows':_0x533db9}:null;}})[_0x87c6('0x25')](respondWithResult(_0x332755,null))[_0x87c6('0x3f')](handleError(_0x332755,null));};exports[_0x87c6('0x4b')]=function(_0xc61f48,_0x2cb2fd,_0x3208ae){var _0x39f112={};var _0x53dca9={};var _0x81de7;var _0x47fc13;return db[_0x87c6('0x2b')][_0x87c6('0x46')]({'where':{'id':_0xc61f48[_0x87c6('0x44')]['id']}})[_0x87c6('0x25')](handleEntityNotFound(_0x2cb2fd,null))[_0x87c6('0x25')](function(_0x340b5d){if(_0x340b5d){_0x81de7=_0x340b5d;_0x53dca9[_0x87c6('0x2f')]=_[_0x87c6('0x40')](db[_0x87c6('0x47')]['rawAttributes']);_0x53dca9[_0x87c6('0x2d')]=_[_0x87c6('0x40')](_0xc61f48[_0x87c6('0x2d')]);_0x53dca9[_0x87c6('0x36')]=_[_0x87c6('0x2e')](_0x53dca9[_0x87c6('0x2f')],_0x53dca9['query']);_0x39f112[_0x87c6('0x30')]=_[_0x87c6('0x2e')](_0x53dca9[_0x87c6('0x2f')],qs['fields'](_0xc61f48['query'][_0x87c6('0x31')]));_0x39f112[_0x87c6('0x30')]=_0x39f112['attributes']['length']?_0x39f112[_0x87c6('0x30')]:_0x53dca9[_0x87c6('0x2f')];_0x39f112['order']=qs[_0x87c6('0x34')](_0xc61f48[_0x87c6('0x2d')][_0x87c6('0x34')]);_0x39f112[_0x87c6('0x35')]=qs[_0x87c6('0x36')](_[_0x87c6('0x49')](_0xc61f48[_0x87c6('0x2d')],_0x53dca9[_0x87c6('0x36')]));if(_0xc61f48[_0x87c6('0x2d')][_0x87c6('0x37')]){_0x39f112[_0x87c6('0x35')]=_[_0x87c6('0x38')](_0x39f112['where'],{'$or':_[_0x87c6('0x2a')](_0x39f112[_0x87c6('0x30')],function(_0x1204bc){var _0x26a758={};_0x26a758[_0x1204bc]={'$like':'%'+_0xc61f48[_0x87c6('0x2d')][_0x87c6('0x37')]+'%'};return _0x26a758;})});}_0x39f112=_[_0x87c6('0x38')]({},_0x39f112,_0xc61f48['options']);return _0x81de7[_0x87c6('0x4b')](_0x39f112);}})[_0x87c6('0x25')](function(_0x22aa9e){if(_0x22aa9e){_0x47fc13=_0x22aa9e[_0x87c6('0x32')];if(!_0xc61f48[_0x87c6('0x2d')]['hasOwnProperty'](_0x87c6('0x4a'))){_0x39f112['limit']=qs['limit'](_0xc61f48['query'][_0x87c6('0x1e')]);_0x39f112[_0x87c6('0x1c')]=qs['offset'](_0xc61f48[_0x87c6('0x2d')][_0x87c6('0x1c')]);}return _0x81de7[_0x87c6('0x4b')](_0x39f112);}})[_0x87c6('0x25')](function(_0xc75fbe){if(_0xc75fbe){return _0xc75fbe?{'count':_0x47fc13,'rows':_0xc75fbe}:null;}})['then'](respondWithResult(_0x2cb2fd,null))['catch'](handleError(_0x2cb2fd,null));};exports['getDescriptions']=function(_0x42af70,_0x218951,_0xe7ff92){var _0x5622f0={};var _0x302dee={};var _0x4b0c24;var _0x3c2cee;return db['FreshdeskConfiguration'][_0x87c6('0x46')]({'where':{'id':_0x42af70[_0x87c6('0x44')]['id']}})[_0x87c6('0x25')](handleEntityNotFound(_0x218951,null))[_0x87c6('0x25')](function(_0x53f864){if(_0x53f864){_0x4b0c24=_0x53f864;_0x302dee[_0x87c6('0x2f')]=_[_0x87c6('0x40')](db[_0x87c6('0x47')][_0x87c6('0x2c')]);_0x302dee['query']=_[_0x87c6('0x40')](_0x42af70[_0x87c6('0x2d')]);_0x302dee['filters']=_[_0x87c6('0x2e')](_0x302dee['model'],_0x302dee[_0x87c6('0x2d')]);_0x5622f0['attributes']=_[_0x87c6('0x2e')](_0x302dee[_0x87c6('0x2f')],qs[_0x87c6('0x31')](_0x42af70[_0x87c6('0x2d')][_0x87c6('0x31')]));_0x5622f0[_0x87c6('0x30')]=_0x5622f0['attributes'][_0x87c6('0x32')]?_0x5622f0[_0x87c6('0x30')]:_0x302dee['model'];_0x5622f0[_0x87c6('0x48')]=qs[_0x87c6('0x34')](_0x42af70[_0x87c6('0x2d')][_0x87c6('0x34')]);_0x5622f0[_0x87c6('0x35')]=qs[_0x87c6('0x36')](_[_0x87c6('0x49')](_0x42af70[_0x87c6('0x2d')],_0x302dee[_0x87c6('0x36')]));if(_0x42af70[_0x87c6('0x2d')]['filter']){_0x5622f0[_0x87c6('0x35')]=_[_0x87c6('0x38')](_0x5622f0[_0x87c6('0x35')],{'$or':_['map'](_0x5622f0[_0x87c6('0x30')],function(_0x114372){var _0x380426={};_0x380426[_0x114372]={'$like':'%'+_0x42af70[_0x87c6('0x2d')][_0x87c6('0x37')]+'%'};return _0x380426;})});}_0x5622f0=_[_0x87c6('0x38')]({},_0x5622f0,_0x42af70[_0x87c6('0x3a')]);return _0x4b0c24[_0x87c6('0x4c')](_0x5622f0);}})['then'](function(_0x1ca3eb){if(_0x1ca3eb){_0x3c2cee=_0x1ca3eb[_0x87c6('0x32')];if(!_0x42af70[_0x87c6('0x2d')][_0x87c6('0x33')]('nolimit')){_0x5622f0[_0x87c6('0x1e')]=qs['limit'](_0x42af70[_0x87c6('0x2d')][_0x87c6('0x1e')]);_0x5622f0[_0x87c6('0x1c')]=qs[_0x87c6('0x1c')](_0x42af70['query'][_0x87c6('0x1c')]);}return _0x4b0c24[_0x87c6('0x4c')](_0x5622f0);}})[_0x87c6('0x25')](function(_0xbf8c17){if(_0xbf8c17){return _0xbf8c17?{'count':_0x3c2cee,'rows':_0xbf8c17}:null;}})['then'](respondWithResult(_0x218951,null))[_0x87c6('0x3f')](handleError(_0x218951,null));};exports['getTags']=function(_0x319cf8,_0x573cbc,_0x47d02f){var _0x1d03e7={};var _0x6b0ecc={};var _0x583115;var _0x8bcc6d;return db[_0x87c6('0x2b')]['findOne']({'where':{'id':_0x319cf8[_0x87c6('0x44')]['id']}})[_0x87c6('0x25')](handleEntityNotFound(_0x573cbc,null))[_0x87c6('0x25')](function(_0x1200e6){if(_0x1200e6){_0x583115=_0x1200e6;_0x6b0ecc['model']=_[_0x87c6('0x40')](db[_0x87c6('0x4d')][_0x87c6('0x2c')]);_0x6b0ecc[_0x87c6('0x2d')]=_[_0x87c6('0x40')](_0x319cf8['query']);_0x6b0ecc[_0x87c6('0x36')]=_[_0x87c6('0x2e')](_0x6b0ecc[_0x87c6('0x2f')],_0x6b0ecc[_0x87c6('0x2d')]);_0x1d03e7[_0x87c6('0x30')]=_['intersection'](_0x6b0ecc[_0x87c6('0x2f')],qs['fields'](_0x319cf8[_0x87c6('0x2d')]['fields']));_0x1d03e7['attributes']=_0x1d03e7['attributes'][_0x87c6('0x32')]?_0x1d03e7['attributes']:_0x6b0ecc['model'];_0x1d03e7[_0x87c6('0x48')]=qs['sort'](_0x319cf8['query'][_0x87c6('0x34')]);_0x1d03e7['where']=qs[_0x87c6('0x36')](_[_0x87c6('0x49')](_0x319cf8[_0x87c6('0x2d')],_0x6b0ecc[_0x87c6('0x36')]));if(_0x319cf8['query'][_0x87c6('0x37')]){_0x1d03e7[_0x87c6('0x35')]=_[_0x87c6('0x38')](_0x1d03e7[_0x87c6('0x35')],{'$or':_[_0x87c6('0x2a')](_0x1d03e7[_0x87c6('0x30')],function(_0x44b015){var _0x52deeb={};_0x52deeb[_0x44b015]={'$like':'%'+_0x319cf8[_0x87c6('0x2d')][_0x87c6('0x37')]+'%'};return _0x52deeb;})});}_0x1d03e7=_[_0x87c6('0x38')]({},_0x1d03e7,_0x319cf8[_0x87c6('0x3a')]);return _0x583115[_0x87c6('0x4e')](_0x1d03e7);}})['then'](function(_0x4d98a3){if(_0x4d98a3){_0x8bcc6d=_0x4d98a3[_0x87c6('0x32')];if(!_0x319cf8[_0x87c6('0x2d')][_0x87c6('0x33')]('nolimit')){_0x1d03e7['limit']=qs[_0x87c6('0x1e')](_0x319cf8[_0x87c6('0x2d')][_0x87c6('0x1e')]);_0x1d03e7[_0x87c6('0x1c')]=qs[_0x87c6('0x1c')](_0x319cf8['query'][_0x87c6('0x1c')]);}return _0x583115['getTags'](_0x1d03e7);}})[_0x87c6('0x25')](function(_0x2b7b47){if(_0x2b7b47){return _0x2b7b47?{'count':_0x8bcc6d,'rows':_0x2b7b47}:null;}})[_0x87c6('0x25')](respondWithResult(_0x573cbc,null))[_0x87c6('0x3f')](handleError(_0x573cbc,null));};exports['setTags']=function(_0x3bf0a0,_0x3d8821,_0x3aafaa){if(_0x3bf0a0[_0x87c6('0x43')]['id']){delete _0x3bf0a0[_0x87c6('0x43')]['id'];}return db['FreshdeskConfiguration'][_0x87c6('0x46')]({'where':{'id':_0x3bf0a0[_0x87c6('0x44')]['id']}})[_0x87c6('0x25')](handleEntityNotFound(_0x3d8821,null))[_0x87c6('0x25')](function(_0x379124){if(_0x379124){return _0x379124[_0x87c6('0x4f')](_0x3bf0a0[_0x87c6('0x43')]['ids']||[]);}return null;})['then'](respondWithResult(_0x3d8821,null))[_0x87c6('0x3f')](handleError(_0x3d8821,null));};
\ No newline at end of file
index 45ee85b..d2debd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e62=['bluebird','path','rimraf','./intFreshdeskConfiguration.attributes','define','FreshdeskConfiguration','int_freshdesk_configurations','lodash','util','../../config/logger','moment'];(function(_0x5c47d8,_0x47eff2){var _0x5988c7=function(_0x4eb1db){while(--_0x4eb1db){_0x5c47d8['push'](_0x5c47d8['shift']());}};_0x5988c7(++_0x47eff2);}(_0x3e62,0x80));var _0x23e6=function(_0x5393d3,_0x5929ca){_0x5393d3=_0x5393d3-0x0;var _0x14182e=_0x3e62[_0x5393d3];return _0x14182e;};'use strict';var _=require(_0x23e6('0x0'));var util=require(_0x23e6('0x1'));var logger=require(_0x23e6('0x2'))('api');var moment=require(_0x23e6('0x3'));var BPromise=require(_0x23e6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x23e6('0x5'));var rimraf=require(_0x23e6('0x6'));var config=require('../../config/environment');var attributes=require(_0x23e6('0x7'));module['exports']=function(_0x3fc9d3,_0x4eb014){return _0x3fc9d3[_0x23e6('0x8')](_0x23e6('0x9'),attributes,{'tableName':_0x23e6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1798=['define','FreshdeskConfiguration','int_freshdesk_configurations','util','api','moment','bluebird','path','../../config/environment','./intFreshdeskConfiguration.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1798,0xd4));var _0x8179=function(_0x4f6c24,_0x4204af){_0x4f6c24=_0x4f6c24-0x0;var _0x1f67c6=_0x1798[_0x4f6c24];return _0x1f67c6;};'use strict';var _=require('lodash');var util=require(_0x8179('0x0'));var logger=require('../../config/logger')(_0x8179('0x1'));var moment=require(_0x8179('0x2'));var BPromise=require(_0x8179('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8179('0x4'));var rimraf=require('rimraf');var config=require(_0x8179('0x5'));var attributes=require(_0x8179('0x6'));module[_0x8179('0x7')]=function(_0x3cabb1,_0x5988a1){return _0x3cabb1[_0x8179('0x8')](_0x8179('0x9'),attributes,{'tableName':_0x8179('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bde67df..d0341be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9539=['FreshdeskConfiguration,\x20%s,\x20%s','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','moment','bluebird','randomstring','../../config/utils','rpc','client','request','then','info'];(function(_0x80d733,_0x266211){var _0x435868=function(_0x2ae0f0){while(--_0x2ae0f0){_0x80d733['push'](_0x80d733['shift']());}};_0x435868(++_0x266211);}(_0x9539,0xaa));var _0x9953=function(_0x661651,_0x43fb9c){_0x661651=_0x661651-0x0;var _0x24b6f0=_0x9539[_0x661651];return _0x24b6f0;};'use strict';var _=require('lodash');var util=require(_0x9953('0x0'));var moment=require(_0x9953('0x1'));var BPromise=require(_0x9953('0x2'));var rs=require(_0x9953('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9953('0x4'));var logger=require('../../config/logger')(_0x9953('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x9953('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x17eea1,_0xd70532,_0x24965d){return new BPromise(function(_0x419314,_0x5f9dcb){return client[_0x9953('0x7')](_0x17eea1,_0x24965d)[_0x9953('0x8')](function(_0xd3ab04){logger[_0x9953('0x9')](_0x9953('0xa'),_0xd70532,'request\x20sent');logger[_0x9953('0xb')](_0x9953('0xc'),_0xd70532,'request\x20sent',JSON['stringify'](_0xd3ab04));if(_0xd3ab04[_0x9953('0xd')]){if(_0xd3ab04[_0x9953('0xd')][_0x9953('0xe')]===0x1f4){logger[_0x9953('0xd')](_0x9953('0xa'),_0xd70532,_0xd3ab04[_0x9953('0xd')]['message']);return _0x5f9dcb(_0xd3ab04['error'][_0x9953('0xf')]);}logger[_0x9953('0xd')](_0x9953('0xa'),_0xd70532,_0xd3ab04['error']['message']);return _0x419314(_0xd3ab04[_0x9953('0xd')][_0x9953('0xf')]);}else{logger[_0x9953('0x9')](_0x9953('0xa'),_0xd70532,'request\x20sent');_0x419314(_0xd3ab04[_0x9953('0x10')][_0x9953('0xf')]);}})[_0x9953('0x11')](function(_0xed09a1){logger[_0x9953('0xd')]('FreshdeskConfiguration,\x20%s,\x20%s',_0xd70532,_0xed09a1);_0x5f9dcb(_0xed09a1);});});}
\ No newline at end of file
+var _0x5cff=['then','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshdeskConfiguration,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','request'];(function(_0x47adb8,_0x591ccc){var _0x4689a8=function(_0x2ba76f){while(--_0x2ba76f){_0x47adb8['push'](_0x47adb8['shift']());}};_0x4689a8(++_0x591ccc);}(_0x5cff,0x79));var _0xf5cf=function(_0x24a66a,_0xba9d6f){_0x24a66a=_0x24a66a-0x0;var _0x19a92e=_0x5cff[_0x24a66a];return _0x19a92e;};'use strict';var _=require(_0xf5cf('0x0'));var util=require(_0xf5cf('0x1'));var moment=require(_0xf5cf('0x2'));var BPromise=require('bluebird');var rs=require(_0xf5cf('0x3'));var fs=require('fs');var Redis=require(_0xf5cf('0x4'));var db=require(_0xf5cf('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf5cf('0x6'))('rpc');var config=require(_0xf5cf('0x7'));var jayson=require(_0xf5cf('0x8'));var client=jayson['client'][_0xf5cf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x396fc1,_0x1c889f,_0x5a9f32){return new BPromise(function(_0x4d068b,_0xe4276b){return client[_0xf5cf('0xa')](_0x396fc1,_0x5a9f32)[_0xf5cf('0xb')](function(_0x11602f){logger['info']('FreshdeskConfiguration,\x20%s,\x20%s',_0x1c889f,'request\x20sent');logger[_0xf5cf('0xc')](_0xf5cf('0xd'),_0x1c889f,'request\x20sent',JSON[_0xf5cf('0xe')](_0x11602f));if(_0x11602f[_0xf5cf('0xf')]){if(_0x11602f['error'][_0xf5cf('0x10')]===0x1f4){logger[_0xf5cf('0xf')](_0xf5cf('0x11'),_0x1c889f,_0x11602f[_0xf5cf('0xf')]['message']);return _0xe4276b(_0x11602f[_0xf5cf('0xf')][_0xf5cf('0x12')]);}logger[_0xf5cf('0xf')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x1c889f,_0x11602f[_0xf5cf('0xf')][_0xf5cf('0x12')]);return _0x4d068b(_0x11602f[_0xf5cf('0xf')][_0xf5cf('0x12')]);}else{logger[_0xf5cf('0x13')](_0xf5cf('0x11'),_0x1c889f,'request\x20sent');_0x4d068b(_0x11602f[_0xf5cf('0x14')][_0xf5cf('0x12')]);}})[_0xf5cf('0x15')](function(_0x28dffb){logger['error']('FreshdeskConfiguration,\x20%s,\x20%s',_0x1c889f,_0x28dffb);_0xe4276b(_0x28dffb);});});}
\ No newline at end of file
index 9fa65d2..786522f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87bf=['put','update','delete','destroy','exports','multer','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','get','isAuthenticated','index','/:id','post'];(function(_0x30a86f,_0x4a925c){var _0x35d0e2=function(_0x563a5d){while(--_0x563a5d){_0x30a86f['push'](_0x30a86f['shift']());}};_0x35d0e2(++_0x4a925c);}(_0x87bf,0x1e1));var _0xf87b=function(_0x3dac28,_0x345de7){_0x3dac28=_0x3dac28-0x0;var _0x139e69=_0x87bf[_0x3dac28];return _0x139e69;};'use strict';var multer=require(_0xf87b('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf87b('0x1'));var router=express[_0xf87b('0x2')]();var fs_extra=require(_0xf87b('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xf87b('0x4'));var config=require(_0xf87b('0x5'));var controller=require(_0xf87b('0x6'));router[_0xf87b('0x7')]('/',auth[_0xf87b('0x8')](),controller[_0xf87b('0x9')]);router[_0xf87b('0x7')](_0xf87b('0xa'),auth['isAuthenticated'](),controller['show']);router[_0xf87b('0xb')]('/',auth[_0xf87b('0x8')](),controller['create']);router[_0xf87b('0xc')](_0xf87b('0xa'),auth['isAuthenticated'](),controller[_0xf87b('0xd')]);router[_0xf87b('0xe')]('/:id',auth[_0xf87b('0x8')](),controller[_0xf87b('0xf')]);module[_0xf87b('0x10')]=router;
\ No newline at end of file
+var _0x173c=['delete','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intFreshdeskField.controller','isAuthenticated','index','get','/:id','show','post','create','put','update'];(function(_0x138a41,_0xb4e471){var _0x15bea2=function(_0x2fce81){while(--_0x2fce81){_0x138a41['push'](_0x138a41['shift']());}};_0x15bea2(++_0xb4e471);}(_0x173c,0xb7));var _0xc173=function(_0x11fb6c,_0x2e994e){_0x11fb6c=_0x11fb6c-0x0;var _0x4b6754=_0x173c[_0x11fb6c];return _0x4b6754;};'use strict';var multer=require(_0xc173('0x0'));var util=require(_0xc173('0x1'));var path=require('path');var timeout=require(_0xc173('0x2'));var express=require(_0xc173('0x3'));var router=express[_0xc173('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc173('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xc173('0x6'));var controller=require(_0xc173('0x7'));router['get']('/',auth[_0xc173('0x8')](),controller[_0xc173('0x9')]);router[_0xc173('0xa')](_0xc173('0xb'),auth[_0xc173('0x8')](),controller[_0xc173('0xc')]);router[_0xc173('0xd')]('/',auth[_0xc173('0x8')](),controller[_0xc173('0xe')]);router[_0xc173('0xf')]('/:id',auth[_0xc173('0x8')](),controller[_0xc173('0x10')]);router[_0xc173('0x11')](_0xc173('0xb'),auth['isAuthenticated'](),controller[_0xc173('0x12')]);module[_0xc173('0x13')]=router;
\ No newline at end of file
index 852e604..e11a991 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23ee=['exports','string','variable','customVariable','keyValue','picklist','STRING','ENUM','BOOLEAN','sequelize'];(function(_0x5c431d,_0x303e10){var _0x2e5734=function(_0x56368d){while(--_0x56368d){_0x5c431d['push'](_0x5c431d['shift']());}};_0x2e5734(++_0x303e10);}(_0x23ee,0x153));var _0xe23e=function(_0xc8db6b,_0x320abd){_0xc8db6b=_0xc8db6b-0x0;var _0x12cb81=_0x23ee[_0xc8db6b];return _0x12cb81;};'use strict';var Sequelize=require(_0xe23e('0x0'));module[_0xe23e('0x1')]={'type':{'type':Sequelize['ENUM'](_0xe23e('0x2'),_0xe23e('0x3'),_0xe23e('0x4'),_0xe23e('0x5'),_0xe23e('0x6')),'defaultValue':_0xe23e('0x2')},'content':{'type':Sequelize[_0xe23e('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xe23e('0x8')](_0xe23e('0x2'),'variable',_0xe23e('0x4'))},'keyContent':{'type':Sequelize[_0xe23e('0x7')]},'idField':{'type':Sequelize[_0xe23e('0x7')]},'nameField':{'type':Sequelize[_0xe23e('0x7')]},'customField':{'type':Sequelize[_0xe23e('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xe23e('0x7')]}};
\ No newline at end of file
+var _0x1728=['BOOLEAN','sequelize','ENUM','string','variable','keyValue','picklist','STRING'];(function(_0x148913,_0x22b814){var _0xf60236=function(_0x4b013a){while(--_0x4b013a){_0x148913['push'](_0x148913['shift']());}};_0xf60236(++_0x22b814);}(_0x1728,0x81));var _0x8172=function(_0x5668a5,_0x1b3de7){_0x5668a5=_0x5668a5-0x0;var _0x2ea98a=_0x1728[_0x5668a5];return _0x2ea98a;};'use strict';var Sequelize=require(_0x8172('0x0'));module['exports']={'type':{'type':Sequelize[_0x8172('0x1')](_0x8172('0x2'),_0x8172('0x3'),'customVariable',_0x8172('0x4'),_0x8172('0x5')),'defaultValue':_0x8172('0x2')},'content':{'type':Sequelize[_0x8172('0x6')]},'key':{'type':Sequelize[_0x8172('0x6')]},'keyType':{'type':Sequelize[_0x8172('0x1')]('string',_0x8172('0x3'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x8172('0x6')]},'nameField':{'type':Sequelize[_0x8172('0x6')]},'customField':{'type':Sequelize[_0x8172('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8172('0x6')]}};
\ No newline at end of file
index 21b0cc2..156a4c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf403=['error','name','send','index','map','FreshdeskField','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','catch','show','params','intersection','include','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','limit','Content-Range','apply','reject','update','then','destroy'];(function(_0x1a8f86,_0x5ed9c4){var _0x20d876=function(_0x596e1b){while(--_0x596e1b){_0x1a8f86['push'](_0x1a8f86['shift']());}};_0x20d876(++_0x5ed9c4);}(_0xf403,0x1d3));var _0x3f40=function(_0x36975f,_0xe8e6d7){_0x36975f=_0x36975f-0x0;var _0x1c18ea=_0xf403[_0x36975f];return _0x1c18ea;};'use strict';var emlformat=require(_0x3f40('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3f40('0x1'));var jsonpatch=require(_0x3f40('0x2'));var rp=require(_0x3f40('0x3'));var moment=require(_0x3f40('0x4'));var BPromise=require(_0x3f40('0x5'));var Mustache=require(_0x3f40('0x6'));var util=require(_0x3f40('0x7'));var path=require(_0x3f40('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3f40('0x9'));var fs=require('fs');var fs_extra=require(_0x3f40('0xa'));var _=require(_0x3f40('0xb'));var squel=require(_0x3f40('0xc'));var crypto=require('crypto');var jsforce=require(_0x3f40('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3f40('0xe'));var Papa=require(_0x3f40('0xf'));var Redis=require(_0x3f40('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3f40('0x11'));var hardwareService=require(_0x3f40('0x12'));var logger=require(_0x3f40('0x13'))('api');var utils=require(_0x3f40('0x14'));var config=require(_0x3f40('0x15'));var licenseUtil=require(_0x3f40('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x332635,_0x509c02){_0x509c02=_0x509c02||0xcc;return function(_0x116460){if(_0x116460){return _0x332635[_0x3f40('0x17')](_0x509c02);}return _0x332635[_0x3f40('0x18')](_0x509c02)[_0x3f40('0x19')]();};}function respondWithResult(_0x569c6e,_0x2b2bfe){_0x2b2bfe=_0x2b2bfe||0xc8;return function(_0x308e97){if(_0x308e97){return _0x569c6e[_0x3f40('0x18')](_0x2b2bfe)[_0x3f40('0x1a')](_0x308e97);}};}function respondWithFilteredResult(_0x232241,_0x4e28b9){return function(_0x2e51ed){if(_0x2e51ed){var _0x3d11c9=typeof _0x4e28b9['offset']==='undefined'&&typeof _0x4e28b9['limit']===_0x3f40('0x1b');var _0x13b950=_0x2e51ed[_0x3f40('0x1c')];var _0x131e55=_0x3d11c9?0x0:_0x4e28b9[_0x3f40('0x1d')];var _0x5b4ebc=_0x3d11c9?_0x2e51ed[_0x3f40('0x1c')]:_0x4e28b9[_0x3f40('0x1d')]+_0x4e28b9[_0x3f40('0x1e')];var _0x29405a;if(_0x5b4ebc>=_0x13b950){_0x5b4ebc=_0x13b950;_0x29405a=0xc8;}else{_0x29405a=0xce;}_0x232241[_0x3f40('0x18')](_0x29405a);return _0x232241['set'](_0x3f40('0x1f'),_0x131e55+'-'+_0x5b4ebc+'/'+_0x13b950)['json'](_0x2e51ed);}return null;};}function patchUpdates(_0x12aabf){return function(_0x32b945){try{jsonpatch[_0x3f40('0x20')](_0x32b945,_0x12aabf,!![]);}catch(_0x113293){return BPromise[_0x3f40('0x21')](_0x113293);}return _0x32b945['save']();};}function saveUpdates(_0x27f5a5,_0x379b4e){return function(_0x117823){if(_0x117823){return _0x117823[_0x3f40('0x22')](_0x27f5a5)[_0x3f40('0x23')](function(_0xa1f39d){return _0xa1f39d;});}return null;};}function removeEntity(_0x4e1f47,_0x31fc91){return function(_0x59eb32){if(_0x59eb32){return _0x59eb32[_0x3f40('0x24')]()['then'](function(){_0x4e1f47[_0x3f40('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x37b47e,_0x5ae235){return function(_0x4b206b){if(!_0x4b206b){_0x37b47e['sendStatus'](0x194);}return _0x4b206b;};}function handleError(_0x30a945,_0x26e46b){_0x26e46b=_0x26e46b||0x1f4;return function(_0x140044){logger[_0x3f40('0x25')](_0x140044['stack']);if(_0x140044[_0x3f40('0x26')]){delete _0x140044['name'];}_0x30a945[_0x3f40('0x18')](_0x26e46b)[_0x3f40('0x27')](_0x140044);};}exports[_0x3f40('0x28')]=function(_0x5e0f25,_0x287632){var _0x4b5ef7={},_0x1cab5c={},_0x5b9079={'count':0x0,'rows':[]};var _0x49057b=_[_0x3f40('0x29')](db[_0x3f40('0x2a')][_0x3f40('0x2b')],function(_0xb23186){return{'name':_0xb23186[_0x3f40('0x2c')],'type':_0xb23186[_0x3f40('0x2d')][_0x3f40('0x2e')]};});_0x1cab5c[_0x3f40('0x2f')]=_['map'](_0x49057b,_0x3f40('0x26'));_0x1cab5c[_0x3f40('0x30')]=_[_0x3f40('0x31')](_0x5e0f25[_0x3f40('0x30')]);_0x1cab5c[_0x3f40('0x32')]=_['intersection'](_0x1cab5c[_0x3f40('0x2f')],_0x1cab5c[_0x3f40('0x30')]);_0x4b5ef7[_0x3f40('0x33')]=_['intersection'](_0x1cab5c[_0x3f40('0x2f')],qs[_0x3f40('0x34')](_0x5e0f25[_0x3f40('0x30')][_0x3f40('0x34')]));_0x4b5ef7[_0x3f40('0x33')]=_0x4b5ef7[_0x3f40('0x33')][_0x3f40('0x35')]?_0x4b5ef7[_0x3f40('0x33')]:_0x1cab5c[_0x3f40('0x2f')];if(!_0x5e0f25[_0x3f40('0x30')][_0x3f40('0x36')](_0x3f40('0x37'))){_0x4b5ef7[_0x3f40('0x1e')]=qs[_0x3f40('0x1e')](_0x5e0f25[_0x3f40('0x30')][_0x3f40('0x1e')]);_0x4b5ef7[_0x3f40('0x1d')]=qs[_0x3f40('0x1d')](_0x5e0f25[_0x3f40('0x30')][_0x3f40('0x1d')]);}_0x4b5ef7[_0x3f40('0x38')]=qs[_0x3f40('0x39')](_0x5e0f25[_0x3f40('0x30')][_0x3f40('0x39')]);_0x4b5ef7[_0x3f40('0x3a')]=qs[_0x3f40('0x32')](_[_0x3f40('0x3b')](_0x5e0f25[_0x3f40('0x30')],_0x1cab5c[_0x3f40('0x32')]),_0x49057b);if(_0x5e0f25[_0x3f40('0x30')]['filter']){_0x4b5ef7['where']=_[_0x3f40('0x3c')](_0x4b5ef7[_0x3f40('0x3a')],{'$or':_[_0x3f40('0x29')](_0x49057b,function(_0x4778ec){if(_0x4778ec[_0x3f40('0x2d')]!==_0x3f40('0x3d')){var _0x1ffa33={};_0x1ffa33[_0x4778ec['name']]={'$like':'%'+_0x5e0f25[_0x3f40('0x30')]['filter']+'%'};return _0x1ffa33;}})});}_0x4b5ef7=_[_0x3f40('0x3c')]({},_0x4b5ef7,_0x5e0f25[_0x3f40('0x3e')]);var _0xec24e4={'where':_0x4b5ef7['where']};return db[_0x3f40('0x2a')][_0x3f40('0x1c')](_0xec24e4)['then'](function(_0x1eb15c){_0x5b9079[_0x3f40('0x1c')]=_0x1eb15c;if(_0x5e0f25['query'][_0x3f40('0x3f')]){_0x4b5ef7['include']=[{'all':!![]}];}return db[_0x3f40('0x2a')]['findAll'](_0x4b5ef7);})['then'](function(_0x8e89a){_0x5b9079['rows']=_0x8e89a;return _0x5b9079;})[_0x3f40('0x23')](respondWithFilteredResult(_0x287632,_0x4b5ef7))[_0x3f40('0x40')](handleError(_0x287632,null));};exports[_0x3f40('0x41')]=function(_0x460237,_0x48b65e){var _0x237c91={'raw':!![],'where':{'id':_0x460237[_0x3f40('0x42')]['id']}},_0x5b0eaa={};_0x5b0eaa[_0x3f40('0x2f')]=_[_0x3f40('0x31')](db['FreshdeskField']['rawAttributes']);_0x5b0eaa[_0x3f40('0x30')]=_[_0x3f40('0x31')](_0x460237[_0x3f40('0x30')]);_0x5b0eaa[_0x3f40('0x32')]=_[_0x3f40('0x43')](_0x5b0eaa[_0x3f40('0x2f')],_0x5b0eaa[_0x3f40('0x30')]);_0x237c91[_0x3f40('0x33')]=_['intersection'](_0x5b0eaa[_0x3f40('0x2f')],qs['fields'](_0x460237['query'][_0x3f40('0x34')]));_0x237c91[_0x3f40('0x33')]=_0x237c91[_0x3f40('0x33')][_0x3f40('0x35')]?_0x237c91[_0x3f40('0x33')]:_0x5b0eaa[_0x3f40('0x2f')];if(_0x460237[_0x3f40('0x30')][_0x3f40('0x3f')]){_0x237c91[_0x3f40('0x44')]=[{'all':!![]}];}_0x237c91=_[_0x3f40('0x3c')]({},_0x237c91,_0x460237[_0x3f40('0x3e')]);return db[_0x3f40('0x2a')][_0x3f40('0x45')](_0x237c91)[_0x3f40('0x23')](handleEntityNotFound(_0x48b65e,null))['then'](respondWithResult(_0x48b65e,null))[_0x3f40('0x40')](handleError(_0x48b65e,null));};exports['create']=function(_0x2c1fa2,_0x2f16d6){return db['FreshdeskField'][_0x3f40('0x46')](_0x2c1fa2[_0x3f40('0x47')],{})[_0x3f40('0x23')](respondWithResult(_0x2f16d6,0xc9))[_0x3f40('0x40')](handleError(_0x2f16d6,null));};exports[_0x3f40('0x22')]=function(_0x268ae4,_0x851bfc){if(_0x268ae4[_0x3f40('0x47')]['id']){delete _0x268ae4[_0x3f40('0x47')]['id'];}return db[_0x3f40('0x2a')][_0x3f40('0x45')]({'where':{'id':_0x268ae4[_0x3f40('0x42')]['id']}})[_0x3f40('0x23')](handleEntityNotFound(_0x851bfc,null))[_0x3f40('0x23')](saveUpdates(_0x268ae4[_0x3f40('0x47')],null))[_0x3f40('0x23')](respondWithResult(_0x851bfc,null))[_0x3f40('0x40')](handleError(_0x851bfc,null));};exports[_0x3f40('0x24')]=function(_0x32bd05,_0x2d7e66){return db[_0x3f40('0x2a')]['find']({'where':{'id':_0x32bd05[_0x3f40('0x42')]['id']}})[_0x3f40('0x23')](handleEntityNotFound(_0x2d7e66,null))[_0x3f40('0x23')](removeEntity(_0x2d7e66,null))[_0x3f40('0x40')](handleError(_0x2d7e66,null));};
\ No newline at end of file
+var _0xa571=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','save','update','then','destroy','end','error','name','index','map','FreshdeskField','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','show','params','rawAttributes','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xa571,0x107));var _0x1a57=function(_0x482b94,_0x29ad8e){_0x482b94=_0x482b94-0x0;var _0x579e3c=_0xa571[_0x482b94];return _0x579e3c;};'use strict';var emlformat=require(_0x1a57('0x0'));var rimraf=require(_0x1a57('0x1'));var zipdir=require(_0x1a57('0x2'));var jsonpatch=require(_0x1a57('0x3'));var rp=require('request-promise');var moment=require(_0x1a57('0x4'));var BPromise=require(_0x1a57('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x1a57('0x6'));var sox=require('sox');var csv=require(_0x1a57('0x7'));var ejs=require(_0x1a57('0x8'));var fs=require('fs');var fs_extra=require(_0x1a57('0x9'));var _=require(_0x1a57('0xa'));var squel=require(_0x1a57('0xb'));var crypto=require(_0x1a57('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x1a57('0xd'));var toCsv=require(_0x1a57('0x7'));var querystring=require(_0x1a57('0xe'));var Papa=require('papaparse');var Redis=require(_0x1a57('0xf'));var authService=require(_0x1a57('0x10'));var qs=require(_0x1a57('0x11'));var as=require(_0x1a57('0x12'));var hardwareService=require(_0x1a57('0x13'));var logger=require(_0x1a57('0x14'))(_0x1a57('0x15'));var utils=require(_0x1a57('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x1a57('0x17'))['db'];function respondWithStatusCode(_0x1911b2,_0x202d9a){_0x202d9a=_0x202d9a||0xcc;return function(_0x5ae643){if(_0x5ae643){return _0x1911b2[_0x1a57('0x18')](_0x202d9a);}return _0x1911b2[_0x1a57('0x19')](_0x202d9a)['end']();};}function respondWithResult(_0x503278,_0x587422){_0x587422=_0x587422||0xc8;return function(_0xd08107){if(_0xd08107){return _0x503278[_0x1a57('0x19')](_0x587422)[_0x1a57('0x1a')](_0xd08107);}};}function respondWithFilteredResult(_0x153d01,_0x5802d6){return function(_0x20f7ad){if(_0x20f7ad){var _0x53c61f=typeof _0x5802d6['offset']===_0x1a57('0x1b')&&typeof _0x5802d6[_0x1a57('0x1c')]===_0x1a57('0x1b');var _0x51b4c2=_0x20f7ad[_0x1a57('0x1d')];var _0x1662a3=_0x53c61f?0x0:_0x5802d6[_0x1a57('0x1e')];var _0x53bb20=_0x53c61f?_0x20f7ad[_0x1a57('0x1d')]:_0x5802d6[_0x1a57('0x1e')]+_0x5802d6[_0x1a57('0x1c')];var _0xcba6b7;if(_0x53bb20>=_0x51b4c2){_0x53bb20=_0x51b4c2;_0xcba6b7=0xc8;}else{_0xcba6b7=0xce;}_0x153d01[_0x1a57('0x19')](_0xcba6b7);return _0x153d01['set']('Content-Range',_0x1662a3+'-'+_0x53bb20+'/'+_0x51b4c2)[_0x1a57('0x1a')](_0x20f7ad);}return null;};}function patchUpdates(_0x21e811){return function(_0x211c63){try{jsonpatch['apply'](_0x211c63,_0x21e811,!![]);}catch(_0x5c200e){return BPromise['reject'](_0x5c200e);}return _0x211c63[_0x1a57('0x1f')]();};}function saveUpdates(_0x113ad4,_0x3f52b9){return function(_0xee133b){if(_0xee133b){return _0xee133b[_0x1a57('0x20')](_0x113ad4)[_0x1a57('0x21')](function(_0x2efa49){return _0x2efa49;});}return null;};}function removeEntity(_0x2f8b00,_0x183ca3){return function(_0x35d5dc){if(_0x35d5dc){return _0x35d5dc[_0x1a57('0x22')]()[_0x1a57('0x21')](function(){_0x2f8b00[_0x1a57('0x19')](0xcc)[_0x1a57('0x23')]();});}};}function handleEntityNotFound(_0x2f9454,_0x182649){return function(_0x25c1e9){if(!_0x25c1e9){_0x2f9454[_0x1a57('0x18')](0x194);}return _0x25c1e9;};}function handleError(_0x27cfe1,_0xf6ffef){_0xf6ffef=_0xf6ffef||0x1f4;return function(_0x26584b){logger[_0x1a57('0x24')](_0x26584b['stack']);if(_0x26584b['name']){delete _0x26584b[_0x1a57('0x25')];}_0x27cfe1[_0x1a57('0x19')](_0xf6ffef)['send'](_0x26584b);};}exports[_0x1a57('0x26')]=function(_0x54f6a5,_0x2d8738){var _0x4a2901={},_0x53bf6e={},_0x8179a4={'count':0x0,'rows':[]};var _0x274fe6=_[_0x1a57('0x27')](db[_0x1a57('0x28')]['rawAttributes'],function(_0x366d5f){return{'name':_0x366d5f[_0x1a57('0x29')],'type':_0x366d5f[_0x1a57('0x2a')][_0x1a57('0x2b')]};});_0x53bf6e['model']=_[_0x1a57('0x27')](_0x274fe6,_0x1a57('0x25'));_0x53bf6e[_0x1a57('0x2c')]=_[_0x1a57('0x2d')](_0x54f6a5[_0x1a57('0x2c')]);_0x53bf6e[_0x1a57('0x2e')]=_[_0x1a57('0x2f')](_0x53bf6e[_0x1a57('0x30')],_0x53bf6e[_0x1a57('0x2c')]);_0x4a2901['attributes']=_[_0x1a57('0x2f')](_0x53bf6e[_0x1a57('0x30')],qs['fields'](_0x54f6a5['query'][_0x1a57('0x31')]));_0x4a2901[_0x1a57('0x32')]=_0x4a2901[_0x1a57('0x32')][_0x1a57('0x33')]?_0x4a2901[_0x1a57('0x32')]:_0x53bf6e[_0x1a57('0x30')];if(!_0x54f6a5[_0x1a57('0x2c')][_0x1a57('0x34')](_0x1a57('0x35'))){_0x4a2901[_0x1a57('0x1c')]=qs[_0x1a57('0x1c')](_0x54f6a5[_0x1a57('0x2c')][_0x1a57('0x1c')]);_0x4a2901[_0x1a57('0x1e')]=qs[_0x1a57('0x1e')](_0x54f6a5[_0x1a57('0x2c')][_0x1a57('0x1e')]);}_0x4a2901[_0x1a57('0x36')]=qs['sort'](_0x54f6a5[_0x1a57('0x2c')][_0x1a57('0x37')]);_0x4a2901[_0x1a57('0x38')]=qs[_0x1a57('0x2e')](_[_0x1a57('0x39')](_0x54f6a5[_0x1a57('0x2c')],_0x53bf6e[_0x1a57('0x2e')]),_0x274fe6);if(_0x54f6a5[_0x1a57('0x2c')][_0x1a57('0x3a')]){_0x4a2901['where']=_['merge'](_0x4a2901['where'],{'$or':_['map'](_0x274fe6,function(_0x333b32){if(_0x333b32[_0x1a57('0x2a')]!==_0x1a57('0x3b')){var _0x4d6e1e={};_0x4d6e1e[_0x333b32[_0x1a57('0x25')]]={'$like':'%'+_0x54f6a5[_0x1a57('0x2c')][_0x1a57('0x3a')]+'%'};return _0x4d6e1e;}})});}_0x4a2901=_[_0x1a57('0x3c')]({},_0x4a2901,_0x54f6a5['options']);var _0x1be254={'where':_0x4a2901['where']};return db[_0x1a57('0x28')][_0x1a57('0x1d')](_0x1be254)[_0x1a57('0x21')](function(_0x534a9a){_0x8179a4[_0x1a57('0x1d')]=_0x534a9a;if(_0x54f6a5[_0x1a57('0x2c')][_0x1a57('0x3d')]){_0x4a2901[_0x1a57('0x3e')]=[{'all':!![]}];}return db[_0x1a57('0x28')]['findAll'](_0x4a2901);})[_0x1a57('0x21')](function(_0x47e998){_0x8179a4['rows']=_0x47e998;return _0x8179a4;})[_0x1a57('0x21')](respondWithFilteredResult(_0x2d8738,_0x4a2901))['catch'](handleError(_0x2d8738,null));};exports[_0x1a57('0x3f')]=function(_0x398c59,_0x3fbae1){var _0x59abb1={'raw':!![],'where':{'id':_0x398c59[_0x1a57('0x40')]['id']}},_0x188a50={};_0x188a50[_0x1a57('0x30')]=_[_0x1a57('0x2d')](db['FreshdeskField'][_0x1a57('0x41')]);_0x188a50[_0x1a57('0x2c')]=_['keys'](_0x398c59[_0x1a57('0x2c')]);_0x188a50['filters']=_['intersection'](_0x188a50[_0x1a57('0x30')],_0x188a50[_0x1a57('0x2c')]);_0x59abb1[_0x1a57('0x32')]=_[_0x1a57('0x2f')](_0x188a50['model'],qs[_0x1a57('0x31')](_0x398c59[_0x1a57('0x2c')][_0x1a57('0x31')]));_0x59abb1[_0x1a57('0x32')]=_0x59abb1[_0x1a57('0x32')]['length']?_0x59abb1[_0x1a57('0x32')]:_0x188a50[_0x1a57('0x30')];if(_0x398c59[_0x1a57('0x2c')][_0x1a57('0x3d')]){_0x59abb1['include']=[{'all':!![]}];}_0x59abb1=_[_0x1a57('0x3c')]({},_0x59abb1,_0x398c59['options']);return db[_0x1a57('0x28')][_0x1a57('0x42')](_0x59abb1)[_0x1a57('0x21')](handleEntityNotFound(_0x3fbae1,null))[_0x1a57('0x21')](respondWithResult(_0x3fbae1,null))[_0x1a57('0x43')](handleError(_0x3fbae1,null));};exports[_0x1a57('0x44')]=function(_0x28f629,_0x401285){return db[_0x1a57('0x28')][_0x1a57('0x44')](_0x28f629[_0x1a57('0x45')],{})[_0x1a57('0x21')](respondWithResult(_0x401285,0xc9))[_0x1a57('0x43')](handleError(_0x401285,null));};exports['update']=function(_0xf4d056,_0x480aff){if(_0xf4d056[_0x1a57('0x45')]['id']){delete _0xf4d056[_0x1a57('0x45')]['id'];}return db[_0x1a57('0x28')][_0x1a57('0x42')]({'where':{'id':_0xf4d056[_0x1a57('0x40')]['id']}})[_0x1a57('0x21')](handleEntityNotFound(_0x480aff,null))[_0x1a57('0x21')](saveUpdates(_0xf4d056[_0x1a57('0x45')],null))[_0x1a57('0x21')](respondWithResult(_0x480aff,null))['catch'](handleError(_0x480aff,null));};exports[_0x1a57('0x22')]=function(_0x439a42,_0x51651d){return db[_0x1a57('0x28')][_0x1a57('0x42')]({'where':{'id':_0x439a42['params']['id']}})[_0x1a57('0x21')](handleEntityNotFound(_0x51651d,null))[_0x1a57('0x21')](removeEntity(_0x51651d,null))['catch'](handleError(_0x51651d,null));};
\ No newline at end of file
index 68354e8..f8159be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77ec=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','FieldId','lodash','util'];(function(_0x21e3e4,_0x2f28a0){var _0x32589c=function(_0x4acbcc){while(--_0x4acbcc){_0x21e3e4['push'](_0x21e3e4['shift']());}};_0x32589c(++_0x2f28a0);}(_0x77ec,0x1cf));var _0xc77e=function(_0x3b7b54,_0x3bd3b6){_0x3b7b54=_0x3b7b54-0x0;var _0x2568c6=_0x77ec[_0x3b7b54];return _0x2568c6;};'use strict';var _=require(_0xc77e('0x0'));var util=require(_0xc77e('0x1'));var logger=require(_0xc77e('0x2'))(_0xc77e('0x3'));var moment=require(_0xc77e('0x4'));var BPromise=require(_0xc77e('0x5'));var rp=require(_0xc77e('0x6'));var fs=require('fs');var path=require(_0xc77e('0x7'));var rimraf=require(_0xc77e('0x8'));var config=require(_0xc77e('0x9'));var attributes=require('./intFreshdeskField.attributes');module['exports']=function(_0x2e5108,_0x420d94){return _0x2e5108['define'](_0xc77e('0xa'),attributes,{'tableName':_0xc77e('0xb'),'paranoid':![],'indexes':[{'name':_0xc77e('0xc'),'fields':[_0xc77e('0xd'),_0xc77e('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x07b5=['path','rimraf','../../config/environment','exports','define','int_freshdesk_fields','FieldId','lodash','util','../../config/logger','bluebird','request-promise'];(function(_0x3efa90,_0x2a8aef){var _0xdb3449=function(_0x5e2de5){while(--_0x5e2de5){_0x3efa90['push'](_0x3efa90['shift']());}};_0xdb3449(++_0x2a8aef);}(_0x07b5,0x10f));var _0x507b=function(_0x1af05b,_0x5134b5){_0x1af05b=_0x1af05b-0x0;var _0x5be7cc=_0x07b5[_0x1af05b];return _0x5be7cc;};'use strict';var _=require(_0x507b('0x0'));var util=require(_0x507b('0x1'));var logger=require(_0x507b('0x2'))('api');var moment=require('moment');var BPromise=require(_0x507b('0x3'));var rp=require(_0x507b('0x4'));var fs=require('fs');var path=require(_0x507b('0x5'));var rimraf=require(_0x507b('0x6'));var config=require(_0x507b('0x7'));var attributes=require('./intFreshdeskField.attributes');module[_0x507b('0x8')]=function(_0x41c082,_0x414133){return _0x41c082[_0x507b('0x9')]('FreshdeskField',attributes,{'tableName':_0x507b('0xa'),'paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':['idField',_0x507b('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index efe9f49..55b3a0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9837=['error','message','FreshdeskField,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','stringify'];(function(_0x5808f6,_0x3eb582){var _0x308aef=function(_0x2116fb){while(--_0x2116fb){_0x5808f6['push'](_0x5808f6['shift']());}};_0x308aef(++_0x3eb582);}(_0x9837,0x1d3));var _0x7983=function(_0x3952f8,_0x38ce07){_0x3952f8=_0x3952f8-0x0;var _0x3d57c0=_0x9837[_0x3952f8];return _0x3d57c0;};'use strict';var _=require(_0x7983('0x0'));var util=require(_0x7983('0x1'));var moment=require(_0x7983('0x2'));var BPromise=require(_0x7983('0x3'));var rs=require(_0x7983('0x4'));var fs=require('fs');var Redis=require(_0x7983('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x7983('0x6'));var logger=require(_0x7983('0x7'))(_0x7983('0x8'));var config=require(_0x7983('0x9'));var jayson=require(_0x7983('0xa'));var client=jayson[_0x7983('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5c1e35,_0x294679,_0x75a6b6){return new BPromise(function(_0x11eb88,_0x2bae02){return client['request'](_0x5c1e35,_0x75a6b6)[_0x7983('0xc')](function(_0x49db28){logger[_0x7983('0xd')]('FreshdeskField,\x20%s,\x20%s',_0x294679,_0x7983('0xe'));logger[_0x7983('0xf')]('FreshdeskField,\x20%s,\x20%s,\x20%s',_0x294679,_0x7983('0xe'),JSON[_0x7983('0x10')](_0x49db28));if(_0x49db28[_0x7983('0x11')]){if(_0x49db28[_0x7983('0x11')]['code']===0x1f4){logger['error']('FreshdeskField,\x20%s,\x20%s',_0x294679,_0x49db28[_0x7983('0x11')][_0x7983('0x12')]);return _0x2bae02(_0x49db28[_0x7983('0x11')][_0x7983('0x12')]);}logger[_0x7983('0x11')](_0x7983('0x13'),_0x294679,_0x49db28[_0x7983('0x11')]['message']);return _0x11eb88(_0x49db28[_0x7983('0x11')][_0x7983('0x12')]);}else{logger[_0x7983('0xd')]('FreshdeskField,\x20%s,\x20%s',_0x294679,_0x7983('0xe'));_0x11eb88(_0x49db28[_0x7983('0x14')]['message']);}})[_0x7983('0x15')](function(_0x3d672e){logger['error'](_0x7983('0x13'),_0x294679,_0x3d672e);_0x2bae02(_0x3d672e);});});}
\ No newline at end of file
+var _0x901c=['moment','bluebird','ioredis','../../config/utils','../../config/environment','jayson/promise','http','request','info','FreshdeskField,\x20%s,\x20%s','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util'];(function(_0x20cc29,_0x30a46d){var _0x28d513=function(_0x179b06){while(--_0x179b06){_0x20cc29['push'](_0x20cc29['shift']());}};_0x28d513(++_0x30a46d);}(_0x901c,0x91));var _0xc901=function(_0x45afa4,_0x4112d1){_0x45afa4=_0x45afa4-0x0;var _0x5ea9b9=_0x901c[_0x45afa4];return _0x5ea9b9;};'use strict';var _=require(_0xc901('0x0'));var util=require(_0xc901('0x1'));var moment=require(_0xc901('0x2'));var BPromise=require(_0xc901('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc901('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc901('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xc901('0x6'));var jayson=require(_0xc901('0x7'));var client=jayson['client'][_0xc901('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x48527b,_0x5f145f,_0x581129){return new BPromise(function(_0x4b5458,_0x3d408d){return client[_0xc901('0x9')](_0x48527b,_0x581129)['then'](function(_0x36262e){logger[_0xc901('0xa')](_0xc901('0xb'),_0x5f145f,'request\x20sent');logger[_0xc901('0xc')](_0xc901('0xd'),_0x5f145f,_0xc901('0xe'),JSON[_0xc901('0xf')](_0x36262e));if(_0x36262e[_0xc901('0x10')]){if(_0x36262e['error'][_0xc901('0x11')]===0x1f4){logger[_0xc901('0x10')]('FreshdeskField,\x20%s,\x20%s',_0x5f145f,_0x36262e[_0xc901('0x10')][_0xc901('0x12')]);return _0x3d408d(_0x36262e['error']['message']);}logger['error'](_0xc901('0xb'),_0x5f145f,_0x36262e[_0xc901('0x10')][_0xc901('0x12')]);return _0x4b5458(_0x36262e[_0xc901('0x10')][_0xc901('0x12')]);}else{logger[_0xc901('0xa')](_0xc901('0xb'),_0x5f145f,_0xc901('0xe'));_0x4b5458(_0x36262e[_0xc901('0x13')][_0xc901('0x12')]);}})[_0xc901('0x14')](function(_0x3892c0){logger[_0xc901('0x10')](_0xc901('0xb'),_0x5f145f,_0x3892c0);_0x3d408d(_0x3892c0);});});}
\ No newline at end of file
index 4da74b0..4cf722e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9be=['isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','put','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get'];(function(_0x2eab77,_0x4d6f2e){var _0x127541=function(_0x23e4b2){while(--_0x23e4b2){_0x2eab77['push'](_0x2eab77['shift']());}};_0x127541(++_0x4d6f2e);}(_0xb9be,0xc5));var _0xeb9b=function(_0x40911a,_0x55ec99){_0x40911a=_0x40911a-0x0;var _0x27e8e3=_0xb9be[_0x40911a];return _0x27e8e3;};'use strict';var multer=require(_0xeb9b('0x0'));var util=require(_0xeb9b('0x1'));var path=require(_0xeb9b('0x2'));var timeout=require(_0xeb9b('0x3'));var express=require(_0xeb9b('0x4'));var router=express[_0xeb9b('0x5')]();var fs_extra=require(_0xeb9b('0x6'));var auth=require(_0xeb9b('0x7'));var interaction=require(_0xeb9b('0x8'));var config=require('../../config/environment');var controller=require('./intFreshsalesAccount.controller');router[_0xeb9b('0x9')]('/',auth[_0xeb9b('0xa')](),controller[_0xeb9b('0xb')]);router['get'](_0xeb9b('0xc'),auth[_0xeb9b('0xa')](),controller[_0xeb9b('0xd')]);router[_0xeb9b('0x9')](_0xeb9b('0xe'),auth[_0xeb9b('0xa')](),controller[_0xeb9b('0xf')]);router[_0xeb9b('0x9')](_0xeb9b('0x10'),auth['isAuthenticated'](),controller[_0xeb9b('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0xeb9b('0x12')]);router[_0xeb9b('0x13')]('/:id/configurations',auth[_0xeb9b('0xa')](),controller[_0xeb9b('0x14')]);router[_0xeb9b('0x15')](_0xeb9b('0xc'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xeb9b('0xc'),auth[_0xeb9b('0xa')](),controller[_0xeb9b('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xa75b=['post','create','/:id/configurations','addConfiguration','put','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','/:id','getConfigurations','/:id/fields','getFields'];(function(_0x17dc4c,_0x365224){var _0x4a885f=function(_0x5b939b){while(--_0x5b939b){_0x17dc4c['push'](_0x17dc4c['shift']());}};_0x4a885f(++_0x365224);}(_0xa75b,0x170));var _0xba75=function(_0xfc9873,_0x4d0651){_0xfc9873=_0xfc9873-0x0;var _0x29e36e=_0xa75b[_0xfc9873];return _0x29e36e;};'use strict';var multer=require(_0xba75('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xba75('0x1'));var express=require(_0xba75('0x2'));var router=express[_0xba75('0x3')]();var fs_extra=require(_0xba75('0x4'));var auth=require(_0xba75('0x5'));var interaction=require(_0xba75('0x6'));var config=require(_0xba75('0x7'));var controller=require(_0xba75('0x8'));router[_0xba75('0x9')]('/',auth[_0xba75('0xa')](),controller[_0xba75('0xb')]);router[_0xba75('0x9')](_0xba75('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xba75('0x9')]('/:id/configurations',auth['isAuthenticated'](),controller[_0xba75('0xd')]);router['get'](_0xba75('0xe'),auth[_0xba75('0xa')](),controller[_0xba75('0xf')]);router[_0xba75('0x10')]('/',auth[_0xba75('0xa')](),controller[_0xba75('0x11')]);router[_0xba75('0x10')](_0xba75('0x12'),auth[_0xba75('0xa')](),controller[_0xba75('0x13')]);router[_0xba75('0x14')](_0xba75('0xc'),auth['isAuthenticated'](),controller['update']);router[_0xba75('0x15')]('/:id',auth[_0xba75('0xa')](),controller[_0xba75('0x16')]);module[_0xba75('0x17')]=router;
\ No newline at end of file
index e713677..3fa701d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x781d=['sequelize','exports','STRING','username','remoteUri'];(function(_0x2a3746,_0x4a8a46){var _0x1d7e9a=function(_0x110fdd){while(--_0x110fdd){_0x2a3746['push'](_0x2a3746['shift']());}};_0x1d7e9a(++_0x4a8a46);}(_0x781d,0x14a));var _0xd781=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x781d[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require(_0xd781('0x0'));module[_0xd781('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xd781('0x2')],'unique':_0xd781('0x3')},'apiKey':{'type':Sequelize[_0xd781('0x2')]},'remoteUri':{'type':Sequelize[_0xd781('0x2')],'unique':_0xd781('0x4')},'serverUrl':{'type':Sequelize[_0xd781('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xfcbb=['exports','STRING','username','remoteUri','sequelize'];(function(_0x47fdd5,_0x4e0dca){var _0x563b30=function(_0x32ed98){while(--_0x32ed98){_0x47fdd5['push'](_0x47fdd5['shift']());}};_0x563b30(++_0x4e0dca);}(_0xfcbb,0x10d));var _0xbfcb=function(_0x3d233c,_0x12e5ae){_0x3d233c=_0x3d233c-0x0;var _0x1b1426=_0xfcbb[_0x3d233c];return _0x1b1426;};'use strict';var Sequelize=require(_0xbfcb('0x0'));module[_0xbfcb('0x1')]={'name':{'type':Sequelize[_0xbfcb('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0xbfcb('0x3')},'apiKey':{'type':Sequelize[_0xbfcb('0x2')]},'remoteUri':{'type':Sequelize[_0xbfcb('0x2')],'unique':_0xbfcb('0x4')},'serverUrl':{'type':Sequelize[_0xbfcb('0x2')],'allowNull':![]}};
\ No newline at end of file
index 369016e..559ec9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3ad=['status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','name','send','index','FreshsalesAccount','rawAttributes','fieldName','type','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','findAll','rows','show','params','keys','include','catch','create','body','find','getConfigurations','findOne','filter','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshsalesConfiguration','FreshsalesField','getFields','username','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','/api/selector/owners','Token\x20token=','users','Requested\x20Resource\x20not\x20Found','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd3ad,0xba));var _0xdd3a=function(_0x5844a3,_0x304446){_0x5844a3=_0x5844a3-0x0;var _0x45c45e=_0xd3ad[_0x5844a3];return _0x45c45e;};'use strict';var emlformat=require(_0xdd3a('0x0'));var rimraf=require(_0xdd3a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdd3a('0x2'));var rp=require(_0xdd3a('0x3'));var moment=require(_0xdd3a('0x4'));var BPromise=require(_0xdd3a('0x5'));var Mustache=require(_0xdd3a('0x6'));var util=require(_0xdd3a('0x7'));var path=require(_0xdd3a('0x8'));var sox=require(_0xdd3a('0x9'));var csv=require(_0xdd3a('0xa'));var ejs=require(_0xdd3a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdd3a('0xc'));var squel=require(_0xdd3a('0xd'));var crypto=require(_0xdd3a('0xe'));var jsforce=require(_0xdd3a('0xf'));var deskjs=require(_0xdd3a('0x10'));var toCsv=require(_0xdd3a('0xa'));var querystring=require('querystring');var Papa=require(_0xdd3a('0x11'));var Redis=require(_0xdd3a('0x12'));var authService=require(_0xdd3a('0x13'));var qs=require(_0xdd3a('0x14'));var as=require(_0xdd3a('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdd3a('0x16'))(_0xdd3a('0x17'));var utils=require('../../config/utils');var config=require(_0xdd3a('0x18'));var licenseUtil=require(_0xdd3a('0x19'));var db=require(_0xdd3a('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5d5c96,_0x372d18){_0x372d18=_0x372d18||0xcc;return function(_0x17c469){if(_0x17c469){return _0x5d5c96[_0xdd3a('0x1b')](_0x372d18);}return _0x5d5c96[_0xdd3a('0x1c')](_0x372d18)[_0xdd3a('0x1d')]();};}function respondWithResult(_0x2e28ed,_0x5843c4){_0x5843c4=_0x5843c4||0xc8;return function(_0x5c72c6){if(_0x5c72c6){return _0x2e28ed[_0xdd3a('0x1c')](_0x5843c4)[_0xdd3a('0x1e')](_0x5c72c6);}};}function respondWithFilteredResult(_0x249f25,_0x1d6f44){return function(_0x1baac6){if(_0x1baac6){var _0x5d7db4=typeof _0x1d6f44[_0xdd3a('0x1f')]===_0xdd3a('0x20')&&typeof _0x1d6f44[_0xdd3a('0x21')]===_0xdd3a('0x20');var _0x315d27=_0x1baac6['count'];var _0x24a6cc=_0x5d7db4?0x0:_0x1d6f44[_0xdd3a('0x1f')];var _0x5d75d5=_0x5d7db4?_0x1baac6[_0xdd3a('0x22')]:_0x1d6f44['offset']+_0x1d6f44['limit'];var _0x4b4365;if(_0x5d75d5>=_0x315d27){_0x5d75d5=_0x315d27;_0x4b4365=0xc8;}else{_0x4b4365=0xce;}_0x249f25[_0xdd3a('0x1c')](_0x4b4365);return _0x249f25[_0xdd3a('0x23')](_0xdd3a('0x24'),_0x24a6cc+'-'+_0x5d75d5+'/'+_0x315d27)[_0xdd3a('0x1e')](_0x1baac6);}return null;};}function patchUpdates(_0x167477){return function(_0xc31442){try{jsonpatch[_0xdd3a('0x25')](_0xc31442,_0x167477,!![]);}catch(_0x44ca22){return BPromise['reject'](_0x44ca22);}return _0xc31442[_0xdd3a('0x26')]();};}function saveUpdates(_0x3c6677,_0x44f2c2){return function(_0x4fdc6b){if(_0x4fdc6b){return _0x4fdc6b[_0xdd3a('0x27')](_0x3c6677)[_0xdd3a('0x28')](function(_0x26ba39){return _0x26ba39;});}return null;};}function removeEntity(_0x546616,_0x49ffb0){return function(_0x5751f4){if(_0x5751f4){return _0x5751f4[_0xdd3a('0x29')]()[_0xdd3a('0x28')](function(){_0x546616[_0xdd3a('0x1c')](0xcc)[_0xdd3a('0x1d')]();});}};}function handleEntityNotFound(_0x163956,_0x42e175){return function(_0x2c8b){if(!_0x2c8b){_0x163956[_0xdd3a('0x1b')](0x194);}return _0x2c8b;};}function handleError(_0x1c8fdd,_0x2a2c5f){_0x2a2c5f=_0x2a2c5f||0x1f4;return function(_0xc7aad7){logger['error'](_0xc7aad7['stack']);if(_0xc7aad7[_0xdd3a('0x2a')]){delete _0xc7aad7['name'];}_0x1c8fdd['status'](_0x2a2c5f)[_0xdd3a('0x2b')](_0xc7aad7);};}exports[_0xdd3a('0x2c')]=function(_0x395fa7,_0x356c29){var _0x37e2b4={},_0x5101e4={},_0x3529b8={'count':0x0,'rows':[]};var _0x31940d=_['map'](db[_0xdd3a('0x2d')][_0xdd3a('0x2e')],function(_0x27b0e5){return{'name':_0x27b0e5[_0xdd3a('0x2f')],'type':_0x27b0e5[_0xdd3a('0x30')]['key']};});_0x5101e4[_0xdd3a('0x31')]=_[_0xdd3a('0x32')](_0x31940d,'name');_0x5101e4[_0xdd3a('0x33')]=_['keys'](_0x395fa7[_0xdd3a('0x33')]);_0x5101e4[_0xdd3a('0x34')]=_[_0xdd3a('0x35')](_0x5101e4[_0xdd3a('0x31')],_0x5101e4[_0xdd3a('0x33')]);_0x37e2b4[_0xdd3a('0x36')]=_[_0xdd3a('0x35')](_0x5101e4[_0xdd3a('0x31')],qs[_0xdd3a('0x37')](_0x395fa7[_0xdd3a('0x33')][_0xdd3a('0x37')]));_0x37e2b4[_0xdd3a('0x36')]=_0x37e2b4['attributes'][_0xdd3a('0x38')]?_0x37e2b4['attributes']:_0x5101e4['model'];if(!_0x395fa7['query'][_0xdd3a('0x39')](_0xdd3a('0x3a'))){_0x37e2b4[_0xdd3a('0x21')]=qs[_0xdd3a('0x21')](_0x395fa7[_0xdd3a('0x33')][_0xdd3a('0x21')]);_0x37e2b4[_0xdd3a('0x1f')]=qs[_0xdd3a('0x1f')](_0x395fa7[_0xdd3a('0x33')]['offset']);}_0x37e2b4[_0xdd3a('0x3b')]=qs[_0xdd3a('0x3c')](_0x395fa7[_0xdd3a('0x33')][_0xdd3a('0x3c')]);_0x37e2b4[_0xdd3a('0x3d')]=qs[_0xdd3a('0x34')](_[_0xdd3a('0x3e')](_0x395fa7[_0xdd3a('0x33')],_0x5101e4['filters']),_0x31940d);if(_0x395fa7[_0xdd3a('0x33')]['filter']){_0x37e2b4[_0xdd3a('0x3d')]=_[_0xdd3a('0x3f')](_0x37e2b4[_0xdd3a('0x3d')],{'$or':_['map'](_0x31940d,function(_0x42a7c3){if(_0x42a7c3['type']!==_0xdd3a('0x40')){var _0x199164={};_0x199164[_0x42a7c3[_0xdd3a('0x2a')]]={'$like':'%'+_0x395fa7[_0xdd3a('0x33')]['filter']+'%'};return _0x199164;}})});}_0x37e2b4=_[_0xdd3a('0x3f')]({},_0x37e2b4,_0x395fa7[_0xdd3a('0x41')]);var _0x1c9f4e={'where':_0x37e2b4[_0xdd3a('0x3d')]};return db[_0xdd3a('0x2d')][_0xdd3a('0x22')](_0x1c9f4e)['then'](function(_0x396c31){_0x3529b8['count']=_0x396c31;if(_0x395fa7[_0xdd3a('0x33')]['includeAll']){_0x37e2b4['include']=[{'all':!![]}];}return db[_0xdd3a('0x2d')][_0xdd3a('0x42')](_0x37e2b4);})[_0xdd3a('0x28')](function(_0x2d9614){_0x3529b8[_0xdd3a('0x43')]=_0x2d9614;return _0x3529b8;})['then'](respondWithFilteredResult(_0x356c29,_0x37e2b4))['catch'](handleError(_0x356c29,null));};exports[_0xdd3a('0x44')]=function(_0x53fbba,_0x104486){var _0x294e48={'raw':![],'where':{'id':_0x53fbba[_0xdd3a('0x45')]['id']}},_0x3ccd01={};_0x3ccd01['model']=_[_0xdd3a('0x46')](db[_0xdd3a('0x2d')]['rawAttributes']);_0x3ccd01[_0xdd3a('0x33')]=_[_0xdd3a('0x46')](_0x53fbba['query']);_0x3ccd01[_0xdd3a('0x34')]=_[_0xdd3a('0x35')](_0x3ccd01[_0xdd3a('0x31')],_0x3ccd01[_0xdd3a('0x33')]);_0x294e48[_0xdd3a('0x36')]=_[_0xdd3a('0x35')](_0x3ccd01[_0xdd3a('0x31')],qs[_0xdd3a('0x37')](_0x53fbba['query']['fields']));_0x294e48['attributes']=_0x294e48[_0xdd3a('0x36')]['length']?_0x294e48[_0xdd3a('0x36')]:_0x3ccd01[_0xdd3a('0x31')];if(_0x53fbba[_0xdd3a('0x33')]['includeAll']){_0x294e48[_0xdd3a('0x47')]=[{'all':!![]}];}_0x294e48=_[_0xdd3a('0x3f')]({},_0x294e48,_0x53fbba[_0xdd3a('0x41')]);return db[_0xdd3a('0x2d')]['find'](_0x294e48)[_0xdd3a('0x28')](handleEntityNotFound(_0x104486,null))[_0xdd3a('0x28')](respondWithResult(_0x104486,null))[_0xdd3a('0x48')](handleError(_0x104486,null));};exports[_0xdd3a('0x49')]=function(_0x2fde01,_0x4f00c9){return db[_0xdd3a('0x2d')]['create'](_0x2fde01['body'],{})[_0xdd3a('0x28')](respondWithResult(_0x4f00c9,0xc9))[_0xdd3a('0x48')](handleError(_0x4f00c9,null));};exports[_0xdd3a('0x27')]=function(_0x4c9854,_0xab81a4){if(_0x4c9854[_0xdd3a('0x4a')]['id']){delete _0x4c9854[_0xdd3a('0x4a')]['id'];}return db[_0xdd3a('0x2d')][_0xdd3a('0x4b')]({'where':{'id':_0x4c9854[_0xdd3a('0x45')]['id']}})['then'](handleEntityNotFound(_0xab81a4,null))[_0xdd3a('0x28')](saveUpdates(_0x4c9854['body'],null))[_0xdd3a('0x28')](respondWithResult(_0xab81a4,null))[_0xdd3a('0x48')](handleError(_0xab81a4,null));};exports[_0xdd3a('0x29')]=function(_0xa7a29,_0x5cd333){return db[_0xdd3a('0x2d')][_0xdd3a('0x4b')]({'where':{'id':_0xa7a29['params']['id']}})[_0xdd3a('0x28')](handleEntityNotFound(_0x5cd333,null))[_0xdd3a('0x28')](removeEntity(_0x5cd333,null))['catch'](handleError(_0x5cd333,null));};exports[_0xdd3a('0x4c')]=function(_0x158d2f,_0x44c5d9,_0x2a8870){var _0x38c574={};var _0x3f1922={};var _0x42ee71;var _0x136194;return db[_0xdd3a('0x2d')][_0xdd3a('0x4d')]({'where':{'id':_0x158d2f['params']['id']}})[_0xdd3a('0x28')](handleEntityNotFound(_0x44c5d9,null))[_0xdd3a('0x28')](function(_0x51b1c8){if(_0x51b1c8){_0x42ee71=_0x51b1c8;_0x3f1922[_0xdd3a('0x31')]=_[_0xdd3a('0x46')](db['FreshsalesConfiguration'][_0xdd3a('0x2e')]);_0x3f1922[_0xdd3a('0x33')]=_['keys'](_0x158d2f[_0xdd3a('0x33')]);_0x3f1922[_0xdd3a('0x34')]=_[_0xdd3a('0x35')](_0x3f1922['model'],_0x3f1922['query']);_0x38c574[_0xdd3a('0x36')]=_[_0xdd3a('0x35')](_0x3f1922[_0xdd3a('0x31')],qs[_0xdd3a('0x37')](_0x158d2f[_0xdd3a('0x33')][_0xdd3a('0x37')]));_0x38c574[_0xdd3a('0x36')]=_0x38c574[_0xdd3a('0x36')][_0xdd3a('0x38')]?_0x38c574[_0xdd3a('0x36')]:_0x3f1922[_0xdd3a('0x31')];_0x38c574[_0xdd3a('0x3b')]=qs[_0xdd3a('0x3c')](_0x158d2f[_0xdd3a('0x33')][_0xdd3a('0x3c')]);_0x38c574[_0xdd3a('0x3d')]=qs[_0xdd3a('0x34')](_[_0xdd3a('0x3e')](_0x158d2f['query'],_0x3f1922[_0xdd3a('0x34')]));if(_0x158d2f[_0xdd3a('0x33')][_0xdd3a('0x4e')]){_0x38c574[_0xdd3a('0x3d')]=_[_0xdd3a('0x3f')](_0x38c574[_0xdd3a('0x3d')],{'$or':_['map'](_0x38c574[_0xdd3a('0x36')],function(_0x1e0e7c){var _0xbff8ba={};_0xbff8ba[_0x1e0e7c]={'$like':'%'+_0x158d2f[_0xdd3a('0x33')][_0xdd3a('0x4e')]+'%'};return _0xbff8ba;})});}_0x38c574=_['merge']({},_0x38c574,_0x158d2f[_0xdd3a('0x41')]);return _0x42ee71[_0xdd3a('0x4c')](_0x38c574);}})[_0xdd3a('0x28')](function(_0x2c0967){if(_0x2c0967){_0x136194=_0x2c0967[_0xdd3a('0x38')];if(!_0x158d2f[_0xdd3a('0x33')]['hasOwnProperty'](_0xdd3a('0x3a'))){_0x38c574[_0xdd3a('0x21')]=qs[_0xdd3a('0x21')](_0x158d2f[_0xdd3a('0x33')][_0xdd3a('0x21')]);_0x38c574['offset']=qs[_0xdd3a('0x1f')](_0x158d2f[_0xdd3a('0x33')][_0xdd3a('0x1f')]);}return _0x42ee71[_0xdd3a('0x4c')](_0x38c574);}})['then'](function(_0x44b136){if(_0x44b136){return _0x44b136?{'count':_0x136194,'rows':_0x44b136}:null;}})['then'](respondWithResult(_0x44c5d9,null))[_0xdd3a('0x48')](handleError(_0x44c5d9,null));};exports[_0xdd3a('0x4f')]=function(_0x46b3a5,_0x30c972,_0x232f9e){if(_0x46b3a5['body']['id']){delete _0x46b3a5[_0xdd3a('0x4a')]['id'];}return db[_0xdd3a('0x2d')]['findOne']({'where':{'id':_0x46b3a5['params']['id']}})[_0xdd3a('0x28')](handleEntityNotFound(_0x30c972,null))[_0xdd3a('0x28')](function(_0x2ad41b){if(_0x2ad41b){_0x46b3a5[_0xdd3a('0x4a')][_0xdd3a('0x50')]=_0x2ad41b['id'];_0x46b3a5[_0xdd3a('0x4a')][_0xdd3a('0x51')]=integrations[_0xdd3a('0x52')](_0x46b3a5['body'][_0xdd3a('0x53')],_0x46b3a5[_0xdd3a('0x4a')][_0xdd3a('0x30')]);_0x46b3a5[_0xdd3a('0x4a')][_0xdd3a('0x54')]=integrations[_0xdd3a('0x55')](_0x46b3a5[_0xdd3a('0x4a')][_0xdd3a('0x53')],_0x46b3a5[_0xdd3a('0x4a')]['type']);return db[_0xdd3a('0x56')][_0xdd3a('0x49')](_0x46b3a5[_0xdd3a('0x4a')],{'include':[{'model':db[_0xdd3a('0x57')],'as':_0xdd3a('0x51')},{'model':db[_0xdd3a('0x57')],'as':_0xdd3a('0x54')}]});}return null;})[_0xdd3a('0x28')](respondWithResult(_0x30c972,null))[_0xdd3a('0x48')](handleError(_0x30c972,null));};exports[_0xdd3a('0x58')]=function(_0x377edd,_0x257ee8,_0x549ea6){var _0x5d52fd='';var _0xbfd18c='';return db[_0xdd3a('0x2d')][_0xdd3a('0x4d')]({'where':{'id':_0x377edd[_0xdd3a('0x45')]['id']},'attributes':['id',_0xdd3a('0x59'),_0xdd3a('0x5a'),_0xdd3a('0x5b')]})[_0xdd3a('0x28')](handleEntityNotFound(_0x257ee8,null))[_0xdd3a('0x28')](function(_0x38ff3b){if(_0x38ff3b){_0xbfd18c=_0x38ff3b[_0xdd3a('0x59')];_0x5d52fd=_0x38ff3b[_0xdd3a('0x5a')];var _0x12faca=_0x38ff3b[_0xdd3a('0x5a')][_0xdd3a('0x5c')](-0x1);if(_0x12faca==='/'){_0x5d52fd=_0x5d52fd[_0xdd3a('0x5d')](0x0,_0x5d52fd[_0xdd3a('0x5e')](_0x12faca));}return rp({'method':_0xdd3a('0x5f'),'uri':util[_0xdd3a('0x60')]('%s%s',_0x5d52fd,_0xdd3a('0x61')),'headers':{'Authorization':_0xdd3a('0x62')+_0x38ff3b[_0xdd3a('0x5b')]},'json':!![]});}})[_0xdd3a('0x28')](function(_0x48bdd5){if(_0x48bdd5){var _0x861445=_0x48bdd5[_0xdd3a('0x63')];var _0x49f512=![];var _0x1cec58=null;for(_0x1cec58=0x0;_0x1cec58<_0x861445['length'];_0x1cec58++){if(_0x861445[_0x1cec58]['email']===_0xbfd18c){_0x49f512=!![];}}if(_0x49f512){return!![];}else{throw new Error({'statusCode':0x194,'message':_0xdd3a('0x64')});}}})['then'](respondWithResult(_0x257ee8,null))[_0xdd3a('0x48')](function(_0x5ac55c){var _0x418214=_0x377edd['query'][_0xdd3a('0x65')]?0x1f4:_0x5ac55c[_0xdd3a('0x66')]||0x1f4;logger[_0xdd3a('0x67')](_0xdd3a('0x68'),_0xdd3a('0x58'),_0x418214,JSON[_0xdd3a('0x69')](_0x5ac55c));delete _0x5ac55c[_0xdd3a('0x2a')];if(_0x418214===0x191){_0x418214=0x190;}_0x257ee8[_0xdd3a('0x1c')](_0x418214)[_0xdd3a('0x2b')](_0x377edd[_0xdd3a('0x33')][_0xdd3a('0x65')]?{'message':_0xdd3a('0x6a'),'statusCode':_0x5ac55c[_0xdd3a('0x66')]}:_0x5ac55c);});};
\ No newline at end of file
+var _0x77f6=['send','index','map','FreshsalesAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','nolimit','limit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','length','catch','create','body','find','params','destroy','getConfigurations','findOne','FreshsalesConfiguration','hasOwnProperty','addConfiguration','AccountId','getSubjects','channel','Descriptions','FreshsalesField','Subjects','getFields','username','remoteUri','slice','substring','lastIndexOf','GET','format','%s%s','/api/selector/owners','Token\x20token=','apiKey','email','Requested\x20Resource\x20not\x20Found','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','reject','update','then','end','error','stack','name'];(function(_0x55701f,_0x57f545){var _0x30497d=function(_0x254a0a){while(--_0x254a0a){_0x55701f['push'](_0x55701f['shift']());}};_0x30497d(++_0x57f545);}(_0x77f6,0x115));var _0x677f=function(_0x6617c,_0x195988){_0x6617c=_0x6617c-0x0;var _0x2a05cb=_0x77f6[_0x6617c];return _0x2a05cb;};'use strict';var emlformat=require(_0x677f('0x0'));var rimraf=require(_0x677f('0x1'));var zipdir=require(_0x677f('0x2'));var jsonpatch=require(_0x677f('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x677f('0x4'));var Mustache=require(_0x677f('0x5'));var util=require(_0x677f('0x6'));var path=require('path');var sox=require(_0x677f('0x7'));var csv=require(_0x677f('0x8'));var ejs=require(_0x677f('0x9'));var fs=require('fs');var fs_extra=require(_0x677f('0xa'));var _=require(_0x677f('0xb'));var squel=require(_0x677f('0xc'));var crypto=require(_0x677f('0xd'));var jsforce=require(_0x677f('0xe'));var deskjs=require(_0x677f('0xf'));var toCsv=require(_0x677f('0x8'));var querystring=require(_0x677f('0x10'));var Papa=require(_0x677f('0x11'));var Redis=require(_0x677f('0x12'));var authService=require(_0x677f('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x677f('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x677f('0x15'));var utils=require(_0x677f('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x677f('0x17'));var db=require(_0x677f('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x428716,_0x5670c5){_0x5670c5=_0x5670c5||0xcc;return function(_0x4e0d2c){if(_0x4e0d2c){return _0x428716[_0x677f('0x19')](_0x5670c5);}return _0x428716[_0x677f('0x1a')](_0x5670c5)['end']();};}function respondWithResult(_0x2b6d5e,_0x53bcb5){_0x53bcb5=_0x53bcb5||0xc8;return function(_0x18b020){if(_0x18b020){return _0x2b6d5e[_0x677f('0x1a')](_0x53bcb5)[_0x677f('0x1b')](_0x18b020);}};}function respondWithFilteredResult(_0x248177,_0x5149b0){return function(_0x2e1188){if(_0x2e1188){var _0x28d84c=typeof _0x5149b0[_0x677f('0x1c')]===_0x677f('0x1d')&&typeof _0x5149b0['limit']===_0x677f('0x1d');var _0x4b7ba2=_0x2e1188[_0x677f('0x1e')];var _0x133d88=_0x28d84c?0x0:_0x5149b0['offset'];var _0x49934d=_0x28d84c?_0x2e1188[_0x677f('0x1e')]:_0x5149b0[_0x677f('0x1c')]+_0x5149b0['limit'];var _0x301d81;if(_0x49934d>=_0x4b7ba2){_0x49934d=_0x4b7ba2;_0x301d81=0xc8;}else{_0x301d81=0xce;}_0x248177[_0x677f('0x1a')](_0x301d81);return _0x248177[_0x677f('0x1f')](_0x677f('0x20'),_0x133d88+'-'+_0x49934d+'/'+_0x4b7ba2)[_0x677f('0x1b')](_0x2e1188);}return null;};}function patchUpdates(_0x443ba6){return function(_0x2b66a3){try{jsonpatch[_0x677f('0x21')](_0x2b66a3,_0x443ba6,!![]);}catch(_0xc4bd12){return BPromise[_0x677f('0x22')](_0xc4bd12);}return _0x2b66a3['save']();};}function saveUpdates(_0x5320fe,_0x26558a){return function(_0x1bf1fb){if(_0x1bf1fb){return _0x1bf1fb[_0x677f('0x23')](_0x5320fe)['then'](function(_0x5d3fa7){return _0x5d3fa7;});}return null;};}function removeEntity(_0x1f2885,_0x481cb9){return function(_0x22be82){if(_0x22be82){return _0x22be82['destroy']()[_0x677f('0x24')](function(){_0x1f2885['status'](0xcc)[_0x677f('0x25')]();});}};}function handleEntityNotFound(_0x2481ac,_0x4c7c27){return function(_0x4f2465){if(!_0x4f2465){_0x2481ac['sendStatus'](0x194);}return _0x4f2465;};}function handleError(_0x37d4cc,_0x4458fe){_0x4458fe=_0x4458fe||0x1f4;return function(_0x484221){logger[_0x677f('0x26')](_0x484221[_0x677f('0x27')]);if(_0x484221[_0x677f('0x28')]){delete _0x484221[_0x677f('0x28')];}_0x37d4cc['status'](_0x4458fe)[_0x677f('0x29')](_0x484221);};}exports[_0x677f('0x2a')]=function(_0x2fbda2,_0x455b71){var _0x467ac0={},_0x45d581={},_0x7ff8c7={'count':0x0,'rows':[]};var _0x5aff7f=_[_0x677f('0x2b')](db[_0x677f('0x2c')][_0x677f('0x2d')],function(_0x541eb5){return{'name':_0x541eb5[_0x677f('0x2e')],'type':_0x541eb5[_0x677f('0x2f')][_0x677f('0x30')]};});_0x45d581[_0x677f('0x31')]=_['map'](_0x5aff7f,'name');_0x45d581[_0x677f('0x32')]=_[_0x677f('0x33')](_0x2fbda2[_0x677f('0x32')]);_0x45d581['filters']=_[_0x677f('0x34')](_0x45d581['model'],_0x45d581['query']);_0x467ac0['attributes']=_[_0x677f('0x34')](_0x45d581[_0x677f('0x31')],qs[_0x677f('0x35')](_0x2fbda2[_0x677f('0x32')][_0x677f('0x35')]));_0x467ac0[_0x677f('0x36')]=_0x467ac0['attributes']['length']?_0x467ac0['attributes']:_0x45d581[_0x677f('0x31')];if(!_0x2fbda2['query']['hasOwnProperty'](_0x677f('0x37'))){_0x467ac0['limit']=qs[_0x677f('0x38')](_0x2fbda2[_0x677f('0x32')][_0x677f('0x38')]);_0x467ac0[_0x677f('0x1c')]=qs['offset'](_0x2fbda2[_0x677f('0x32')][_0x677f('0x1c')]);}_0x467ac0[_0x677f('0x39')]=qs[_0x677f('0x3a')](_0x2fbda2[_0x677f('0x32')]['sort']);_0x467ac0[_0x677f('0x3b')]=qs[_0x677f('0x3c')](_[_0x677f('0x3d')](_0x2fbda2['query'],_0x45d581[_0x677f('0x3c')]),_0x5aff7f);if(_0x2fbda2[_0x677f('0x32')][_0x677f('0x3e')]){_0x467ac0[_0x677f('0x3b')]=_[_0x677f('0x3f')](_0x467ac0[_0x677f('0x3b')],{'$or':_['map'](_0x5aff7f,function(_0x4a6ddb){if(_0x4a6ddb['type']!==_0x677f('0x40')){var _0x27dfad={};_0x27dfad[_0x4a6ddb[_0x677f('0x28')]]={'$like':'%'+_0x2fbda2[_0x677f('0x32')]['filter']+'%'};return _0x27dfad;}})});}_0x467ac0=_[_0x677f('0x3f')]({},_0x467ac0,_0x2fbda2[_0x677f('0x41')]);var _0x563ab0={'where':_0x467ac0['where']};return db['FreshsalesAccount']['count'](_0x563ab0)['then'](function(_0x201573){_0x7ff8c7[_0x677f('0x1e')]=_0x201573;if(_0x2fbda2[_0x677f('0x32')][_0x677f('0x42')]){_0x467ac0[_0x677f('0x43')]=[{'all':!![]}];}return db[_0x677f('0x2c')][_0x677f('0x44')](_0x467ac0);})[_0x677f('0x24')](function(_0x2aa2c4){_0x7ff8c7['rows']=_0x2aa2c4;return _0x7ff8c7;})['then'](respondWithFilteredResult(_0x455b71,_0x467ac0))['catch'](handleError(_0x455b71,null));};exports[_0x677f('0x45')]=function(_0x4f7c85,_0x36f74b){var _0x474570={'raw':![],'where':{'id':_0x4f7c85['params']['id']}},_0x33dda3={};_0x33dda3[_0x677f('0x31')]=_[_0x677f('0x33')](db['FreshsalesAccount'][_0x677f('0x2d')]);_0x33dda3['query']=_['keys'](_0x4f7c85[_0x677f('0x32')]);_0x33dda3[_0x677f('0x3c')]=_[_0x677f('0x34')](_0x33dda3[_0x677f('0x31')],_0x33dda3[_0x677f('0x32')]);_0x474570[_0x677f('0x36')]=_[_0x677f('0x34')](_0x33dda3[_0x677f('0x31')],qs[_0x677f('0x35')](_0x4f7c85['query']['fields']));_0x474570[_0x677f('0x36')]=_0x474570[_0x677f('0x36')][_0x677f('0x46')]?_0x474570[_0x677f('0x36')]:_0x33dda3[_0x677f('0x31')];if(_0x4f7c85[_0x677f('0x32')][_0x677f('0x42')]){_0x474570[_0x677f('0x43')]=[{'all':!![]}];}_0x474570=_['merge']({},_0x474570,_0x4f7c85[_0x677f('0x41')]);return db[_0x677f('0x2c')]['find'](_0x474570)[_0x677f('0x24')](handleEntityNotFound(_0x36f74b,null))[_0x677f('0x24')](respondWithResult(_0x36f74b,null))[_0x677f('0x47')](handleError(_0x36f74b,null));};exports[_0x677f('0x48')]=function(_0x12543b,_0x780e08){return db['FreshsalesAccount'][_0x677f('0x48')](_0x12543b[_0x677f('0x49')],{})[_0x677f('0x24')](respondWithResult(_0x780e08,0xc9))[_0x677f('0x47')](handleError(_0x780e08,null));};exports[_0x677f('0x23')]=function(_0x398c99,_0x1d9333){if(_0x398c99[_0x677f('0x49')]['id']){delete _0x398c99[_0x677f('0x49')]['id'];}return db[_0x677f('0x2c')][_0x677f('0x4a')]({'where':{'id':_0x398c99[_0x677f('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1d9333,null))['then'](saveUpdates(_0x398c99[_0x677f('0x49')],null))[_0x677f('0x24')](respondWithResult(_0x1d9333,null))[_0x677f('0x47')](handleError(_0x1d9333,null));};exports[_0x677f('0x4c')]=function(_0x897b4f,_0x355080){return db[_0x677f('0x2c')][_0x677f('0x4a')]({'where':{'id':_0x897b4f['params']['id']}})[_0x677f('0x24')](handleEntityNotFound(_0x355080,null))[_0x677f('0x24')](removeEntity(_0x355080,null))[_0x677f('0x47')](handleError(_0x355080,null));};exports[_0x677f('0x4d')]=function(_0x476f58,_0x3762eb,_0x25fdeb){var _0x57b987={};var _0x2f4126={};var _0x5b0014;var _0x52440c;return db['FreshsalesAccount'][_0x677f('0x4e')]({'where':{'id':_0x476f58['params']['id']}})['then'](handleEntityNotFound(_0x3762eb,null))[_0x677f('0x24')](function(_0x4edf60){if(_0x4edf60){_0x5b0014=_0x4edf60;_0x2f4126[_0x677f('0x31')]=_[_0x677f('0x33')](db[_0x677f('0x4f')][_0x677f('0x2d')]);_0x2f4126[_0x677f('0x32')]=_[_0x677f('0x33')](_0x476f58[_0x677f('0x32')]);_0x2f4126[_0x677f('0x3c')]=_['intersection'](_0x2f4126[_0x677f('0x31')],_0x2f4126[_0x677f('0x32')]);_0x57b987['attributes']=_[_0x677f('0x34')](_0x2f4126[_0x677f('0x31')],qs[_0x677f('0x35')](_0x476f58[_0x677f('0x32')][_0x677f('0x35')]));_0x57b987[_0x677f('0x36')]=_0x57b987[_0x677f('0x36')][_0x677f('0x46')]?_0x57b987[_0x677f('0x36')]:_0x2f4126[_0x677f('0x31')];_0x57b987[_0x677f('0x39')]=qs[_0x677f('0x3a')](_0x476f58[_0x677f('0x32')][_0x677f('0x3a')]);_0x57b987['where']=qs['filters'](_[_0x677f('0x3d')](_0x476f58['query'],_0x2f4126[_0x677f('0x3c')]));if(_0x476f58[_0x677f('0x32')][_0x677f('0x3e')]){_0x57b987[_0x677f('0x3b')]=_[_0x677f('0x3f')](_0x57b987['where'],{'$or':_[_0x677f('0x2b')](_0x57b987['attributes'],function(_0x395a8b){var _0x145b60={};_0x145b60[_0x395a8b]={'$like':'%'+_0x476f58['query'][_0x677f('0x3e')]+'%'};return _0x145b60;})});}_0x57b987=_[_0x677f('0x3f')]({},_0x57b987,_0x476f58[_0x677f('0x41')]);return _0x5b0014['getConfigurations'](_0x57b987);}})[_0x677f('0x24')](function(_0xb2881f){if(_0xb2881f){_0x52440c=_0xb2881f['length'];if(!_0x476f58[_0x677f('0x32')][_0x677f('0x50')](_0x677f('0x37'))){_0x57b987[_0x677f('0x38')]=qs[_0x677f('0x38')](_0x476f58['query'][_0x677f('0x38')]);_0x57b987['offset']=qs[_0x677f('0x1c')](_0x476f58[_0x677f('0x32')][_0x677f('0x1c')]);}return _0x5b0014[_0x677f('0x4d')](_0x57b987);}})['then'](function(_0x3f3e69){if(_0x3f3e69){return _0x3f3e69?{'count':_0x52440c,'rows':_0x3f3e69}:null;}})['then'](respondWithResult(_0x3762eb,null))[_0x677f('0x47')](handleError(_0x3762eb,null));};exports[_0x677f('0x51')]=function(_0x473bff,_0xffc701,_0x21e1d4){if(_0x473bff[_0x677f('0x49')]['id']){delete _0x473bff[_0x677f('0x49')]['id'];}return db[_0x677f('0x2c')][_0x677f('0x4e')]({'where':{'id':_0x473bff[_0x677f('0x4b')]['id']}})[_0x677f('0x24')](handleEntityNotFound(_0xffc701,null))[_0x677f('0x24')](function(_0x40be52){if(_0x40be52){_0x473bff[_0x677f('0x49')][_0x677f('0x52')]=_0x40be52['id'];_0x473bff[_0x677f('0x49')]['Subjects']=integrations[_0x677f('0x53')](_0x473bff[_0x677f('0x49')][_0x677f('0x54')],_0x473bff[_0x677f('0x49')]['type']);_0x473bff['body'][_0x677f('0x55')]=integrations['getDescriptions'](_0x473bff[_0x677f('0x49')][_0x677f('0x54')],_0x473bff[_0x677f('0x49')][_0x677f('0x2f')]);return db[_0x677f('0x4f')][_0x677f('0x48')](_0x473bff[_0x677f('0x49')],{'include':[{'model':db[_0x677f('0x56')],'as':_0x677f('0x57')},{'model':db['FreshsalesField'],'as':_0x677f('0x55')}]});}return null;})[_0x677f('0x24')](respondWithResult(_0xffc701,null))[_0x677f('0x47')](handleError(_0xffc701,null));};exports[_0x677f('0x58')]=function(_0x269b94,_0x1e7cf2,_0x57b0a8){var _0x748b7b='';var _0x108c53='';return db[_0x677f('0x2c')][_0x677f('0x4e')]({'where':{'id':_0x269b94['params']['id']},'attributes':['id',_0x677f('0x59'),_0x677f('0x5a'),'apiKey']})['then'](handleEntityNotFound(_0x1e7cf2,null))[_0x677f('0x24')](function(_0x14a82b){if(_0x14a82b){_0x108c53=_0x14a82b[_0x677f('0x59')];_0x748b7b=_0x14a82b[_0x677f('0x5a')];var _0x15cf3c=_0x14a82b[_0x677f('0x5a')][_0x677f('0x5b')](-0x1);if(_0x15cf3c==='/'){_0x748b7b=_0x748b7b[_0x677f('0x5c')](0x0,_0x748b7b[_0x677f('0x5d')](_0x15cf3c));}return rp({'method':_0x677f('0x5e'),'uri':util[_0x677f('0x5f')](_0x677f('0x60'),_0x748b7b,_0x677f('0x61')),'headers':{'Authorization':_0x677f('0x62')+_0x14a82b[_0x677f('0x63')]},'json':!![]});}})[_0x677f('0x24')](function(_0x3a6143){if(_0x3a6143){var _0x3a8566=_0x3a6143['users'];var _0x5366bf=![];var _0x25d518=null;for(_0x25d518=0x0;_0x25d518<_0x3a8566['length'];_0x25d518++){if(_0x3a8566[_0x25d518][_0x677f('0x64')]===_0x108c53){_0x5366bf=!![];}}if(_0x5366bf){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x677f('0x65')});}}})[_0x677f('0x24')](respondWithResult(_0x1e7cf2,null))[_0x677f('0x47')](function(_0x14d8f3){var _0x40207b=_0x269b94[_0x677f('0x32')][_0x677f('0x66')]?0x1f4:_0x14d8f3[_0x677f('0x67')]||0x1f4;logger[_0x677f('0x26')]('getFields,\x20%s,\x20%s,\x20%s',_0x677f('0x58'),_0x40207b,JSON[_0x677f('0x68')](_0x14d8f3));delete _0x14d8f3[_0x677f('0x28')];if(_0x40207b===0x191){_0x40207b=0x190;}_0x1e7cf2[_0x677f('0x1a')](_0x40207b)[_0x677f('0x29')](_0x269b94[_0x677f('0x32')]['test']?{'message':_0x677f('0x69'),'statusCode':_0x14d8f3[_0x677f('0x67')]}:_0x14d8f3);});};
\ No newline at end of file
index f776a01..d34dfd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7096=['rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','FreshsalesAccount','int_freshsales_accounts','util','api','bluebird','request-promise','path'];(function(_0x503566,_0x394643){var _0x24bd7d=function(_0xcaed6b){while(--_0xcaed6b){_0x503566['push'](_0x503566['shift']());}};_0x24bd7d(++_0x394643);}(_0x7096,0x10c));var _0x6709=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0x7096[_0x13e741];return _0x3f8bb3;};'use strict';var _=require('lodash');var util=require(_0x6709('0x0'));var logger=require('../../config/logger')(_0x6709('0x1'));var moment=require('moment');var BPromise=require(_0x6709('0x2'));var rp=require(_0x6709('0x3'));var fs=require('fs');var path=require(_0x6709('0x4'));var rimraf=require(_0x6709('0x5'));var config=require(_0x6709('0x6'));var attributes=require(_0x6709('0x7'));var integrations=require(_0x6709('0x8'));module[_0x6709('0x9')]=function(_0xa35832,_0x3e2223){return _0xa35832[_0x6709('0xa')](_0x6709('0xb'),attributes,{'tableName':_0x6709('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1623=['path','./intFreshsalesAccount.attributes','exports','define','FreshsalesAccount','int_freshsales_accounts','lodash','api','moment','bluebird','request-promise'];(function(_0x598331,_0x492c9b){var _0x17a8a1=function(_0x3bf13e){while(--_0x3bf13e){_0x598331['push'](_0x598331['shift']());}};_0x17a8a1(++_0x492c9b);}(_0x1623,0xab));var _0x3162=function(_0x37912b,_0x393a25){_0x37912b=_0x37912b-0x0;var _0xa5f34c=_0x1623[_0x37912b];return _0xa5f34c;};'use strict';var _=require(_0x3162('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3162('0x1'));var moment=require(_0x3162('0x2'));var BPromise=require(_0x3162('0x3'));var rp=require(_0x3162('0x4'));var fs=require('fs');var path=require(_0x3162('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x3162('0x6'));var integrations=require('../../components/integrations/configuration');module[_0x3162('0x7')]=function(_0x428de6,_0x53260d){return _0x428de6[_0x3162('0x8')](_0x3162('0x9'),attributes,{'tableName':_0x3162('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 46aea31..4981602 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x781d=['model','map','GetFreshsalesAccount','find','ShowFreshsalesAccount','stringify','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','FreshsalesAccount,\x20%s,\x20%s','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','FreshsalesAccount','findAll','options','where','attributes','limit','include'];(function(_0x500785,_0x15e5ff){var _0x1f8bcc=function(_0x406983){while(--_0x406983){_0x500785['push'](_0x500785['shift']());}};_0x1f8bcc(++_0x15e5ff);}(_0x781d,0x14a));var _0xd781=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x781d[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0xd781('0x0'));var util=require(_0xd781('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xd781('0x2'));var fs=require('fs');var Redis=require(_0xd781('0x3'));var db=require(_0xd781('0x4'))['db'];var utils=require(_0xd781('0x5'));var logger=require(_0xd781('0x6'))(_0xd781('0x7'));var config=require(_0xd781('0x8'));var jayson=require(_0xd781('0x9'));var client=jayson[_0xd781('0xa')][_0xd781('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5a07f0,_0x133509,_0x1a242d){return new BPromise(function(_0x50610d,_0x248172){return client['request'](_0x5a07f0,_0x1a242d)[_0xd781('0xc')](function(_0x5c18c8){logger[_0xd781('0xd')](_0xd781('0xe'),_0x133509,'request\x20sent');logger[_0xd781('0xf')](_0xd781('0x10'),_0x133509,'request\x20sent',JSON['stringify'](_0x5c18c8));if(_0x5c18c8[_0xd781('0x11')]){if(_0x5c18c8[_0xd781('0x11')][_0xd781('0x12')]===0x1f4){logger[_0xd781('0x11')](_0xd781('0xe'),_0x133509,_0x5c18c8[_0xd781('0x11')][_0xd781('0x13')]);return _0x248172(_0x5c18c8[_0xd781('0x11')][_0xd781('0x13')]);}logger[_0xd781('0x11')](_0xd781('0xe'),_0x133509,_0x5c18c8['error'][_0xd781('0x13')]);return _0x50610d(_0x5c18c8[_0xd781('0x11')]['message']);}else{logger[_0xd781('0xd')]('FreshsalesAccount,\x20%s,\x20%s',_0x133509,_0xd781('0x14'));_0x50610d(_0x5c18c8[_0xd781('0x15')][_0xd781('0x13')]);}})[_0xd781('0x16')](function(_0x42a9c1){logger[_0xd781('0x11')](_0xd781('0xe'),_0x133509,_0x42a9c1);_0x248172(_0x42a9c1);});});}exports['GetFreshsalesAccount']=function(_0x1407fc){var _0x3f2922=this;return new Promise(function(_0x395d9c,_0x2f1273){return db[_0xd781('0x17')][_0xd781('0x18')]({'raw':_0x1407fc[_0xd781('0x19')]?_0x1407fc[_0xd781('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x1407fc[_0xd781('0x19')]?_0x1407fc[_0xd781('0x19')][_0xd781('0x1a')]||null:null,'attributes':_0x1407fc[_0xd781('0x19')]?_0x1407fc[_0xd781('0x19')][_0xd781('0x1b')]||null:null,'limit':_0x1407fc[_0xd781('0x19')]?_0x1407fc['options'][_0xd781('0x1c')]||null:null,'include':_0x1407fc['options']?_0x1407fc['options'][_0xd781('0x1d')]?_['map'](_0x1407fc[_0xd781('0x19')][_0xd781('0x1d')],function(_0x395087){return{'model':db[_0x395087[_0xd781('0x1e')]],'as':_0x395087['as'],'attributes':_0x395087[_0xd781('0x1b')],'include':_0x395087[_0xd781('0x1d')]?_[_0xd781('0x1f')](_0x395087[_0xd781('0x1d')],function(_0x10940b){return{'model':db[_0x10940b['model']],'as':_0x10940b['as'],'attributes':_0x10940b['attributes'],'include':_0x10940b[_0xd781('0x1d')]?_[_0xd781('0x1f')](_0x10940b[_0xd781('0x1d')],function(_0x57b41e){return{'model':db[_0x57b41e[_0xd781('0x1e')]],'as':_0x57b41e['as'],'attributes':_0x57b41e['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1e29c8){logger['info'](_0xd781('0x20'),_0x1407fc);logger[_0xd781('0xf')]('GetFreshsalesAccount',_0x1407fc,JSON['stringify'](_0x1e29c8));_0x395d9c(_0x1e29c8);})[_0xd781('0x16')](function(_0x5b0464){logger[_0xd781('0x11')]('GetFreshsalesAccount',_0x5b0464[_0xd781('0x13')],_0x1407fc);_0x2f1273(_0x3f2922[_0xd781('0x11')](0x1f4,_0x5b0464['message']));});});};exports['ShowFreshsalesAccount']=function(_0x432d14){var _0x29e81a=this;return new Promise(function(_0x1c7d83,_0x5a389c){return db['FreshsalesAccount'][_0xd781('0x21')]({'raw':_0x432d14[_0xd781('0x19')]?_0x432d14[_0xd781('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x432d14['options']?_0x432d14[_0xd781('0x19')][_0xd781('0x1a')]||null:null,'attributes':_0x432d14['options']?_0x432d14[_0xd781('0x19')][_0xd781('0x1b')]||null:null,'include':_0x432d14['options']?_0x432d14[_0xd781('0x19')][_0xd781('0x1d')]?_[_0xd781('0x1f')](_0x432d14[_0xd781('0x19')]['include'],function(_0x23dffb){return{'model':db[_0x23dffb[_0xd781('0x1e')]],'as':_0x23dffb['as'],'attributes':_0x23dffb[_0xd781('0x1b')],'include':_0x23dffb[_0xd781('0x1d')]?_['map'](_0x23dffb[_0xd781('0x1d')],function(_0x3f20e2){return{'model':db[_0x3f20e2['model']],'as':_0x3f20e2['as'],'attributes':_0x3f20e2[_0xd781('0x1b')],'include':_0x3f20e2['include']?_[_0xd781('0x1f')](_0x3f20e2[_0xd781('0x1d')],function(_0x57fdb6){return{'model':db[_0x57fdb6[_0xd781('0x1e')]],'as':_0x57fdb6['as'],'attributes':_0x57fdb6[_0xd781('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2a29b7){logger['info'](_0xd781('0x22'),_0x432d14);logger[_0xd781('0xf')]('ShowFreshsalesAccount',_0x432d14,JSON[_0xd781('0x23')](_0x2a29b7));_0x1c7d83(_0x2a29b7);})[_0xd781('0x16')](function(_0x5651de){logger[_0xd781('0x11')](_0xd781('0x22'),_0x5651de[_0xd781('0x13')],_0x432d14);_0x5a389c(_0x29e81a['error'](0x1f4,_0x5651de[_0xd781('0x13')]));});});};
\ No newline at end of file
+var _0xdf55=['FreshsalesAccount,\x20%s,\x20%s','message','info','result','catch','GetFreshsalesAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','stringify','ShowFreshsalesAccount','FreshsalesAccount','find','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','FreshsalesAccount,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xdf55,0x83));var _0x5df5=function(_0x3b80d6,_0x18a56a){_0x3b80d6=_0x3b80d6-0x0;var _0x4e08f1=_0xdf55[_0x3b80d6];return _0x4e08f1;};'use strict';var _=require(_0x5df5('0x0'));var util=require(_0x5df5('0x1'));var moment=require('moment');var BPromise=require(_0x5df5('0x2'));var rs=require(_0x5df5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5df5('0x4'))['db'];var utils=require(_0x5df5('0x5'));var logger=require(_0x5df5('0x6'))('rpc');var config=require(_0x5df5('0x7'));var jayson=require(_0x5df5('0x8'));var client=jayson[_0x5df5('0x9')][_0x5df5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x9b8756,_0x2b7ed9,_0x4722a2){return new BPromise(function(_0x3743f3,_0x4d43a3){return client[_0x5df5('0xb')](_0x9b8756,_0x4722a2)[_0x5df5('0xc')](function(_0x41941e){logger['info']('FreshsalesAccount,\x20%s,\x20%s',_0x2b7ed9,_0x5df5('0xd'));logger['debug'](_0x5df5('0xe'),_0x2b7ed9,_0x5df5('0xd'),JSON['stringify'](_0x41941e));if(_0x41941e['error']){if(_0x41941e[_0x5df5('0xf')][_0x5df5('0x10')]===0x1f4){logger[_0x5df5('0xf')](_0x5df5('0x11'),_0x2b7ed9,_0x41941e[_0x5df5('0xf')][_0x5df5('0x12')]);return _0x4d43a3(_0x41941e[_0x5df5('0xf')][_0x5df5('0x12')]);}logger[_0x5df5('0xf')](_0x5df5('0x11'),_0x2b7ed9,_0x41941e['error'][_0x5df5('0x12')]);return _0x3743f3(_0x41941e['error'][_0x5df5('0x12')]);}else{logger[_0x5df5('0x13')](_0x5df5('0x11'),_0x2b7ed9,_0x5df5('0xd'));_0x3743f3(_0x41941e[_0x5df5('0x14')]['message']);}})[_0x5df5('0x15')](function(_0x457205){logger['error'](_0x5df5('0x11'),_0x2b7ed9,_0x457205);_0x4d43a3(_0x457205);});});}exports[_0x5df5('0x16')]=function(_0xb7e1c2){var _0x44f700=this;return new Promise(function(_0x215d59,_0x4b499d){return db['FreshsalesAccount'][_0x5df5('0x17')]({'raw':_0xb7e1c2['options']?_0xb7e1c2[_0x5df5('0x18')][_0x5df5('0x19')]===undefined?!![]:![]:!![],'where':_0xb7e1c2[_0x5df5('0x18')]?_0xb7e1c2[_0x5df5('0x18')][_0x5df5('0x1a')]||null:null,'attributes':_0xb7e1c2['options']?_0xb7e1c2[_0x5df5('0x18')][_0x5df5('0x1b')]||null:null,'limit':_0xb7e1c2[_0x5df5('0x18')]?_0xb7e1c2[_0x5df5('0x18')][_0x5df5('0x1c')]||null:null,'include':_0xb7e1c2[_0x5df5('0x18')]?_0xb7e1c2['options'][_0x5df5('0x1d')]?_[_0x5df5('0x1e')](_0xb7e1c2[_0x5df5('0x18')][_0x5df5('0x1d')],function(_0x5ca542){return{'model':db[_0x5ca542[_0x5df5('0x1f')]],'as':_0x5ca542['as'],'attributes':_0x5ca542[_0x5df5('0x1b')],'include':_0x5ca542[_0x5df5('0x1d')]?_['map'](_0x5ca542['include'],function(_0x532923){return{'model':db[_0x532923[_0x5df5('0x1f')]],'as':_0x532923['as'],'attributes':_0x532923[_0x5df5('0x1b')],'include':_0x532923[_0x5df5('0x1d')]?_[_0x5df5('0x1e')](_0x532923[_0x5df5('0x1d')],function(_0x1fd83c){return{'model':db[_0x1fd83c[_0x5df5('0x1f')]],'as':_0x1fd83c['as'],'attributes':_0x1fd83c[_0x5df5('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x18bb61){logger['info'](_0x5df5('0x16'),_0xb7e1c2);logger[_0x5df5('0x20')]('GetFreshsalesAccount',_0xb7e1c2,JSON[_0x5df5('0x21')](_0x18bb61));_0x215d59(_0x18bb61);})['catch'](function(_0xd2b213){logger['error'](_0x5df5('0x16'),_0xd2b213['message'],_0xb7e1c2);_0x4b499d(_0x44f700[_0x5df5('0xf')](0x1f4,_0xd2b213['message']));});});};exports[_0x5df5('0x22')]=function(_0x47bebb){var _0x4784ca=this;return new Promise(function(_0x485484,_0xf445de){return db[_0x5df5('0x23')][_0x5df5('0x24')]({'raw':_0x47bebb[_0x5df5('0x18')]?_0x47bebb[_0x5df5('0x18')][_0x5df5('0x19')]===undefined?!![]:![]:!![],'where':_0x47bebb[_0x5df5('0x18')]?_0x47bebb['options']['where']||null:null,'attributes':_0x47bebb[_0x5df5('0x18')]?_0x47bebb[_0x5df5('0x18')][_0x5df5('0x1b')]||null:null,'include':_0x47bebb[_0x5df5('0x18')]?_0x47bebb[_0x5df5('0x18')][_0x5df5('0x1d')]?_['map'](_0x47bebb[_0x5df5('0x18')][_0x5df5('0x1d')],function(_0x2f1001){return{'model':db[_0x2f1001[_0x5df5('0x1f')]],'as':_0x2f1001['as'],'attributes':_0x2f1001['attributes'],'include':_0x2f1001[_0x5df5('0x1d')]?_['map'](_0x2f1001[_0x5df5('0x1d')],function(_0x394676){return{'model':db[_0x394676['model']],'as':_0x394676['as'],'attributes':_0x394676[_0x5df5('0x1b')],'include':_0x394676['include']?_[_0x5df5('0x1e')](_0x394676[_0x5df5('0x1d')],function(_0x4697c2){return{'model':db[_0x4697c2[_0x5df5('0x1f')]],'as':_0x4697c2['as'],'attributes':_0x4697c2['attributes']};}):[]};}):[]};}):[]:[]})[_0x5df5('0xc')](function(_0x2e7e64){logger[_0x5df5('0x13')](_0x5df5('0x22'),_0x47bebb);logger['debug'](_0x5df5('0x22'),_0x47bebb,JSON[_0x5df5('0x21')](_0x2e7e64));_0x485484(_0x2e7e64);})[_0x5df5('0x15')](function(_0x18b597){logger[_0x5df5('0xf')](_0x5df5('0x22'),_0x18b597[_0x5df5('0x12')],_0x47bebb);_0xf445de(_0x4784ca['error'](0x1f4,_0x18b597[_0x5df5('0x12')]));});});};
\ No newline at end of file
index e22a650..5ad97cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cc4=['getFields','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','get','index','/:id','/:id/subjects','/:id/descriptions','isAuthenticated','getDescriptions','/:id/fields'];(function(_0x9fb081,_0x48f480){var _0x43f8b0=function(_0x418570){while(--_0x418570){_0x9fb081['push'](_0x9fb081['shift']());}};_0x43f8b0(++_0x48f480);}(_0x9cc4,0x126));var _0x49cc=function(_0x319f7a,_0x2dd107){_0x319f7a=_0x319f7a-0x0;var _0x55839e=_0x9cc4[_0x319f7a];return _0x55839e;};'use strict';var multer=require(_0x49cc('0x0'));var util=require(_0x49cc('0x1'));var path=require('path');var timeout=require(_0x49cc('0x2'));var express=require(_0x49cc('0x3'));var router=express[_0x49cc('0x4')]();var fs_extra=require(_0x49cc('0x5'));var auth=require(_0x49cc('0x6'));var interaction=require(_0x49cc('0x7'));var config=require(_0x49cc('0x8'));var controller=require(_0x49cc('0x9'));router[_0x49cc('0xa')]('/',auth['isAuthenticated'](),controller[_0x49cc('0xb')]);router[_0x49cc('0xa')](_0x49cc('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x49cc('0xa')](_0x49cc('0xd'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x49cc('0xa')](_0x49cc('0xe'),auth[_0x49cc('0xf')](),controller[_0x49cc('0x10')]);router[_0x49cc('0xa')](_0x49cc('0x11'),auth[_0x49cc('0xf')](),controller[_0x49cc('0x12')]);router[_0x49cc('0x13')]('/',auth[_0x49cc('0xf')](),controller[_0x49cc('0x14')]);router[_0x49cc('0x15')](_0x49cc('0xc'),auth['isAuthenticated'](),controller[_0x49cc('0x16')]);router[_0x49cc('0x17')](_0x49cc('0xc'),auth[_0x49cc('0xf')](),controller[_0x49cc('0x18')]);module[_0x49cc('0x19')]=router;
\ No newline at end of file
+var _0x9312=['/:id','isAuthenticated','show','/:id/subjects','/:id/descriptions','getDescriptions','/:id/fields','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','index'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x9312,0x145));var _0x2931=function(_0x1a89a1,_0x56d889){_0x1a89a1=_0x1a89a1-0x0;var _0x3d5b46=_0x9312[_0x1a89a1];return _0x3d5b46;};'use strict';var multer=require(_0x2931('0x0'));var util=require(_0x2931('0x1'));var path=require(_0x2931('0x2'));var timeout=require(_0x2931('0x3'));var express=require(_0x2931('0x4'));var router=express[_0x2931('0x5')]();var fs_extra=require(_0x2931('0x6'));var auth=require(_0x2931('0x7'));var interaction=require(_0x2931('0x8'));var config=require('../../config/environment');var controller=require('./intFreshsalesConfiguration.controller');router[_0x2931('0x9')]('/',auth['isAuthenticated'](),controller[_0x2931('0xa')]);router['get'](_0x2931('0xb'),auth[_0x2931('0xc')](),controller[_0x2931('0xd')]);router[_0x2931('0x9')](_0x2931('0xe'),auth[_0x2931('0xc')](),controller['getSubjects']);router['get'](_0x2931('0xf'),auth[_0x2931('0xc')](),controller[_0x2931('0x10')]);router[_0x2931('0x9')](_0x2931('0x11'),auth[_0x2931('0xc')](),controller['getFields']);router[_0x2931('0x12')]('/',auth[_0x2931('0xc')](),controller[_0x2931('0x13')]);router['put'](_0x2931('0xb'),auth[_0x2931('0xc')](),controller[_0x2931('0x14')]);router[_0x2931('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x2931('0x16')]);module[_0x2931('0x17')]=router;
\ No newline at end of file
index 0c03a5d..7081abb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f93=['sequelize','exports','STRING'];(function(_0x5724cd,_0x30ecd8){var _0x4ac317=function(_0x316b14){while(--_0x316b14){_0x5724cd['push'](_0x5724cd['shift']());}};_0x4ac317(++_0x30ecd8);}(_0x0f93,0x117));var _0x30f9=function(_0x285fe3,_0x147a1e){_0x285fe3=_0x285fe3-0x0;var _0x588ba8=_0x0f93[_0x285fe3];return _0x588ba8;};'use strict';var Sequelize=require(_0x30f9('0x0'));module[_0x30f9('0x1')]={'name':{'type':Sequelize[_0x30f9('0x2')]},'description':{'type':Sequelize[_0x30f9('0x2')]}};
\ No newline at end of file
+var _0xf973=['exports','STRING','sequelize'];(function(_0x57405d,_0x5b87c6){var _0x3cf792=function(_0x434e0c){while(--_0x434e0c){_0x57405d['push'](_0x57405d['shift']());}};_0x3cf792(++_0x5b87c6);}(_0xf973,0x92));var _0x3f97=function(_0x20be28,_0x24b925){_0x20be28=_0x20be28-0x0;var _0x8ab067=_0xf973[_0x20be28];return _0x8ab067;};'use strict';var Sequelize=require(_0x3f97('0x0'));module[_0x3f97('0x1')]={'name':{'type':Sequelize[_0x3f97('0x2')]},'description':{'type':Sequelize[_0x3f97('0x2')]}};
\ No newline at end of file
index b6cf738..b4e1dbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8fb=['undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','map','FreshsalesConfiguration','rawAttributes','fieldName','type','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','includeAll','include','findAll','rows','catch','show','params','keys','length','options','find','body','getSubjects','findOne','FreshsalesField','getDescriptions','getFields','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit'];(function(_0x19dcc3,_0x58651a){var _0x24d519=function(_0x2ef672){while(--_0x2ef672){_0x19dcc3['push'](_0x19dcc3['shift']());}};_0x24d519(++_0x58651a);}(_0xd8fb,0x171));var _0xbd8f=function(_0x27f9c9,_0x31ae7c){_0x27f9c9=_0x27f9c9-0x0;var _0x2b1a13=_0xd8fb[_0x27f9c9];return _0x2b1a13;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xbd8f('0x0'));var jsonpatch=require(_0xbd8f('0x1'));var rp=require(_0xbd8f('0x2'));var moment=require(_0xbd8f('0x3'));var BPromise=require(_0xbd8f('0x4'));var Mustache=require(_0xbd8f('0x5'));var util=require('util');var path=require(_0xbd8f('0x6'));var sox=require(_0xbd8f('0x7'));var csv=require(_0xbd8f('0x8'));var ejs=require(_0xbd8f('0x9'));var fs=require('fs');var fs_extra=require(_0xbd8f('0xa'));var _=require('lodash');var squel=require(_0xbd8f('0xb'));var crypto=require(_0xbd8f('0xc'));var jsforce=require(_0xbd8f('0xd'));var deskjs=require(_0xbd8f('0xe'));var toCsv=require(_0xbd8f('0x8'));var querystring=require('querystring');var Papa=require(_0xbd8f('0xf'));var Redis=require(_0xbd8f('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xbd8f('0x11'));var as=require(_0xbd8f('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbd8f('0x13'))(_0xbd8f('0x14'));var utils=require(_0xbd8f('0x15'));var config=require(_0xbd8f('0x16'));var licenseUtil=require(_0xbd8f('0x17'));var db=require(_0xbd8f('0x18'))['db'];function respondWithStatusCode(_0x132892,_0x291d4b){_0x291d4b=_0x291d4b||0xcc;return function(_0x3d96fd){if(_0x3d96fd){return _0x132892[_0xbd8f('0x19')](_0x291d4b);}return _0x132892['status'](_0x291d4b)[_0xbd8f('0x1a')]();};}function respondWithResult(_0x2655ab,_0x22259f){_0x22259f=_0x22259f||0xc8;return function(_0x4a8b8c){if(_0x4a8b8c){return _0x2655ab[_0xbd8f('0x1b')](_0x22259f)[_0xbd8f('0x1c')](_0x4a8b8c);}};}function respondWithFilteredResult(_0x3c7c30,_0xb290df){return function(_0x23d510){if(_0x23d510){var _0x2d1ef1=typeof _0xb290df[_0xbd8f('0x1d')]==='undefined'&&typeof _0xb290df[_0xbd8f('0x1e')]===_0xbd8f('0x1f');var _0x5b935b=_0x23d510[_0xbd8f('0x20')];var _0x559bb6=_0x2d1ef1?0x0:_0xb290df[_0xbd8f('0x1d')];var _0x248caa=_0x2d1ef1?_0x23d510['count']:_0xb290df[_0xbd8f('0x1d')]+_0xb290df[_0xbd8f('0x1e')];var _0x358468;if(_0x248caa>=_0x5b935b){_0x248caa=_0x5b935b;_0x358468=0xc8;}else{_0x358468=0xce;}_0x3c7c30[_0xbd8f('0x1b')](_0x358468);return _0x3c7c30[_0xbd8f('0x21')](_0xbd8f('0x22'),_0x559bb6+'-'+_0x248caa+'/'+_0x5b935b)['json'](_0x23d510);}return null;};}function patchUpdates(_0x1b085c){return function(_0x268ee6){try{jsonpatch[_0xbd8f('0x23')](_0x268ee6,_0x1b085c,!![]);}catch(_0x17d94e){return BPromise[_0xbd8f('0x24')](_0x17d94e);}return _0x268ee6[_0xbd8f('0x25')]();};}function saveUpdates(_0x24f9fb,_0x349baf){return function(_0x41cbd5){if(_0x41cbd5){return _0x41cbd5[_0xbd8f('0x26')](_0x24f9fb)[_0xbd8f('0x27')](function(_0x1ce8fe){return _0x1ce8fe;});}return null;};}function removeEntity(_0xc576ea,_0x2b8723){return function(_0x4f8057){if(_0x4f8057){return _0x4f8057[_0xbd8f('0x28')]()[_0xbd8f('0x27')](function(){_0xc576ea[_0xbd8f('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5f10c8,_0xc6493a){return function(_0x5a3787){if(!_0x5a3787){_0x5f10c8['sendStatus'](0x194);}return _0x5a3787;};}function handleError(_0x42e11c,_0x589b32){_0x589b32=_0x589b32||0x1f4;return function(_0x55779d){logger[_0xbd8f('0x29')](_0x55779d['stack']);if(_0x55779d[_0xbd8f('0x2a')]){delete _0x55779d[_0xbd8f('0x2a')];}_0x42e11c[_0xbd8f('0x1b')](_0x589b32)[_0xbd8f('0x2b')](_0x55779d);};}exports['index']=function(_0x5b90b4,_0x330abc){var _0x88a2f6={},_0x78491d={},_0x1394c2={'count':0x0,'rows':[]};var _0x1e96eb=_[_0xbd8f('0x2c')](db[_0xbd8f('0x2d')][_0xbd8f('0x2e')],function(_0x32a2ea){return{'name':_0x32a2ea[_0xbd8f('0x2f')],'type':_0x32a2ea[_0xbd8f('0x30')]['key']};});_0x78491d[_0xbd8f('0x31')]=_[_0xbd8f('0x2c')](_0x1e96eb,'name');_0x78491d[_0xbd8f('0x32')]=_['keys'](_0x5b90b4['query']);_0x78491d['filters']=_[_0xbd8f('0x33')](_0x78491d['model'],_0x78491d[_0xbd8f('0x32')]);_0x88a2f6[_0xbd8f('0x34')]=_[_0xbd8f('0x33')](_0x78491d[_0xbd8f('0x31')],qs[_0xbd8f('0x35')](_0x5b90b4[_0xbd8f('0x32')][_0xbd8f('0x35')]));_0x88a2f6[_0xbd8f('0x34')]=_0x88a2f6['attributes']['length']?_0x88a2f6[_0xbd8f('0x34')]:_0x78491d[_0xbd8f('0x31')];if(!_0x5b90b4[_0xbd8f('0x32')][_0xbd8f('0x36')](_0xbd8f('0x37'))){_0x88a2f6[_0xbd8f('0x1e')]=qs[_0xbd8f('0x1e')](_0x5b90b4[_0xbd8f('0x32')][_0xbd8f('0x1e')]);_0x88a2f6[_0xbd8f('0x1d')]=qs[_0xbd8f('0x1d')](_0x5b90b4['query'][_0xbd8f('0x1d')]);}_0x88a2f6[_0xbd8f('0x38')]=qs[_0xbd8f('0x39')](_0x5b90b4[_0xbd8f('0x32')]['sort']);_0x88a2f6['where']=qs[_0xbd8f('0x3a')](_[_0xbd8f('0x3b')](_0x5b90b4[_0xbd8f('0x32')],_0x78491d[_0xbd8f('0x3a')]),_0x1e96eb);if(_0x5b90b4[_0xbd8f('0x32')][_0xbd8f('0x3c')]){_0x88a2f6[_0xbd8f('0x3d')]=_['merge'](_0x88a2f6[_0xbd8f('0x3d')],{'$or':_[_0xbd8f('0x2c')](_0x1e96eb,function(_0x3c99dc){if(_0x3c99dc[_0xbd8f('0x30')]!=='VIRTUAL'){var _0x4642ca={};_0x4642ca[_0x3c99dc['name']]={'$like':'%'+_0x5b90b4[_0xbd8f('0x32')]['filter']+'%'};return _0x4642ca;}})});}_0x88a2f6=_[_0xbd8f('0x3e')]({},_0x88a2f6,_0x5b90b4['options']);var _0xf95d44={'where':_0x88a2f6[_0xbd8f('0x3d')]};return db[_0xbd8f('0x2d')]['count'](_0xf95d44)[_0xbd8f('0x27')](function(_0x198dc5){_0x1394c2[_0xbd8f('0x20')]=_0x198dc5;if(_0x5b90b4['query'][_0xbd8f('0x3f')]){_0x88a2f6[_0xbd8f('0x40')]=[{'all':!![]}];}return db[_0xbd8f('0x2d')][_0xbd8f('0x41')](_0x88a2f6);})[_0xbd8f('0x27')](function(_0x2fa467){_0x1394c2[_0xbd8f('0x42')]=_0x2fa467;return _0x1394c2;})[_0xbd8f('0x27')](respondWithFilteredResult(_0x330abc,_0x88a2f6))[_0xbd8f('0x43')](handleError(_0x330abc,null));};exports[_0xbd8f('0x44')]=function(_0x45422e,_0x2c99a4){var _0x35c31e={'raw':![],'where':{'id':_0x45422e[_0xbd8f('0x45')]['id']}},_0x36c4dd={};_0x36c4dd[_0xbd8f('0x31')]=_[_0xbd8f('0x46')](db[_0xbd8f('0x2d')][_0xbd8f('0x2e')]);_0x36c4dd[_0xbd8f('0x32')]=_['keys'](_0x45422e[_0xbd8f('0x32')]);_0x36c4dd[_0xbd8f('0x3a')]=_['intersection'](_0x36c4dd[_0xbd8f('0x31')],_0x36c4dd['query']);_0x35c31e[_0xbd8f('0x34')]=_['intersection'](_0x36c4dd[_0xbd8f('0x31')],qs['fields'](_0x45422e['query'][_0xbd8f('0x35')]));_0x35c31e[_0xbd8f('0x34')]=_0x35c31e['attributes'][_0xbd8f('0x47')]?_0x35c31e[_0xbd8f('0x34')]:_0x36c4dd[_0xbd8f('0x31')];if(_0x45422e[_0xbd8f('0x32')][_0xbd8f('0x3f')]){_0x35c31e[_0xbd8f('0x40')]=[{'all':!![]}];}_0x35c31e=_[_0xbd8f('0x3e')]({},_0x35c31e,_0x45422e[_0xbd8f('0x48')]);return db[_0xbd8f('0x2d')][_0xbd8f('0x49')](_0x35c31e)[_0xbd8f('0x27')](handleEntityNotFound(_0x2c99a4,null))[_0xbd8f('0x27')](respondWithResult(_0x2c99a4,null))['catch'](handleError(_0x2c99a4,null));};exports['create']=function(_0x584831,_0x14e4eb){return db[_0xbd8f('0x2d')]['create'](_0x584831['body'],{})[_0xbd8f('0x27')](respondWithResult(_0x14e4eb,0xc9))[_0xbd8f('0x43')](handleError(_0x14e4eb,null));};exports[_0xbd8f('0x26')]=function(_0x372357,_0x3670b9){if(_0x372357[_0xbd8f('0x4a')]['id']){delete _0x372357['body']['id'];}return db[_0xbd8f('0x2d')][_0xbd8f('0x49')]({'where':{'id':_0x372357['params']['id']}})[_0xbd8f('0x27')](handleEntityNotFound(_0x3670b9,null))[_0xbd8f('0x27')](saveUpdates(_0x372357[_0xbd8f('0x4a')],null))[_0xbd8f('0x27')](respondWithResult(_0x3670b9,null))[_0xbd8f('0x43')](handleError(_0x3670b9,null));};exports['destroy']=function(_0x2dfe15,_0x2f05d8){return db['FreshsalesConfiguration']['find']({'where':{'id':_0x2dfe15['params']['id']}})[_0xbd8f('0x27')](handleEntityNotFound(_0x2f05d8,null))[_0xbd8f('0x27')](removeEntity(_0x2f05d8,null))[_0xbd8f('0x43')](handleError(_0x2f05d8,null));};exports[_0xbd8f('0x4b')]=function(_0x5d7b63,_0x44d7d4,_0x35ec86){var _0x296294={};var _0x2cee62={};var _0x5ccdba;var _0xace15f;return db[_0xbd8f('0x2d')][_0xbd8f('0x4c')]({'where':{'id':_0x5d7b63[_0xbd8f('0x45')]['id']}})[_0xbd8f('0x27')](handleEntityNotFound(_0x44d7d4,null))['then'](function(_0x1e7436){if(_0x1e7436){_0x5ccdba=_0x1e7436;_0x2cee62[_0xbd8f('0x31')]=_['keys'](db[_0xbd8f('0x4d')][_0xbd8f('0x2e')]);_0x2cee62[_0xbd8f('0x32')]=_[_0xbd8f('0x46')](_0x5d7b63[_0xbd8f('0x32')]);_0x2cee62[_0xbd8f('0x3a')]=_['intersection'](_0x2cee62[_0xbd8f('0x31')],_0x2cee62[_0xbd8f('0x32')]);_0x296294[_0xbd8f('0x34')]=_[_0xbd8f('0x33')](_0x2cee62[_0xbd8f('0x31')],qs[_0xbd8f('0x35')](_0x5d7b63['query'][_0xbd8f('0x35')]));_0x296294[_0xbd8f('0x34')]=_0x296294[_0xbd8f('0x34')][_0xbd8f('0x47')]?_0x296294[_0xbd8f('0x34')]:_0x2cee62['model'];_0x296294[_0xbd8f('0x38')]=qs['sort'](_0x5d7b63['query'][_0xbd8f('0x39')]);_0x296294[_0xbd8f('0x3d')]=qs['filters'](_[_0xbd8f('0x3b')](_0x5d7b63[_0xbd8f('0x32')],_0x2cee62[_0xbd8f('0x3a')]));if(_0x5d7b63[_0xbd8f('0x32')][_0xbd8f('0x3c')]){_0x296294[_0xbd8f('0x3d')]=_['merge'](_0x296294[_0xbd8f('0x3d')],{'$or':_['map'](_0x296294['attributes'],function(_0x58ebc0){var _0x4f6e29={};_0x4f6e29[_0x58ebc0]={'$like':'%'+_0x5d7b63[_0xbd8f('0x32')][_0xbd8f('0x3c')]+'%'};return _0x4f6e29;})});}_0x296294=_['merge']({},_0x296294,_0x5d7b63[_0xbd8f('0x48')]);return _0x5ccdba['getSubjects'](_0x296294);}})['then'](function(_0x3bd4e5){if(_0x3bd4e5){_0xace15f=_0x3bd4e5[_0xbd8f('0x47')];if(!_0x5d7b63[_0xbd8f('0x32')][_0xbd8f('0x36')](_0xbd8f('0x37'))){_0x296294[_0xbd8f('0x1e')]=qs[_0xbd8f('0x1e')](_0x5d7b63[_0xbd8f('0x32')][_0xbd8f('0x1e')]);_0x296294['offset']=qs['offset'](_0x5d7b63['query'][_0xbd8f('0x1d')]);}return _0x5ccdba[_0xbd8f('0x4b')](_0x296294);}})[_0xbd8f('0x27')](function(_0x21aec3){if(_0x21aec3){return _0x21aec3?{'count':_0xace15f,'rows':_0x21aec3}:null;}})['then'](respondWithResult(_0x44d7d4,null))[_0xbd8f('0x43')](handleError(_0x44d7d4,null));};exports[_0xbd8f('0x4e')]=function(_0x155078,_0x58f5f3,_0x1a908c){var _0x1cb0d5={};var _0x2fe2be={};var _0x54d60c;var _0x24aa8d;return db[_0xbd8f('0x2d')][_0xbd8f('0x4c')]({'where':{'id':_0x155078['params']['id']}})[_0xbd8f('0x27')](handleEntityNotFound(_0x58f5f3,null))['then'](function(_0x2cb768){if(_0x2cb768){_0x54d60c=_0x2cb768;_0x2fe2be[_0xbd8f('0x31')]=_[_0xbd8f('0x46')](db['FreshsalesField'][_0xbd8f('0x2e')]);_0x2fe2be[_0xbd8f('0x32')]=_[_0xbd8f('0x46')](_0x155078['query']);_0x2fe2be[_0xbd8f('0x3a')]=_[_0xbd8f('0x33')](_0x2fe2be['model'],_0x2fe2be['query']);_0x1cb0d5[_0xbd8f('0x34')]=_['intersection'](_0x2fe2be[_0xbd8f('0x31')],qs[_0xbd8f('0x35')](_0x155078[_0xbd8f('0x32')][_0xbd8f('0x35')]));_0x1cb0d5['attributes']=_0x1cb0d5[_0xbd8f('0x34')]['length']?_0x1cb0d5[_0xbd8f('0x34')]:_0x2fe2be[_0xbd8f('0x31')];_0x1cb0d5[_0xbd8f('0x38')]=qs[_0xbd8f('0x39')](_0x155078[_0xbd8f('0x32')][_0xbd8f('0x39')]);_0x1cb0d5[_0xbd8f('0x3d')]=qs[_0xbd8f('0x3a')](_[_0xbd8f('0x3b')](_0x155078['query'],_0x2fe2be[_0xbd8f('0x3a')]));if(_0x155078[_0xbd8f('0x32')][_0xbd8f('0x3c')]){_0x1cb0d5[_0xbd8f('0x3d')]=_['merge'](_0x1cb0d5[_0xbd8f('0x3d')],{'$or':_[_0xbd8f('0x2c')](_0x1cb0d5[_0xbd8f('0x34')],function(_0x1f6e2e){var _0xae8348={};_0xae8348[_0x1f6e2e]={'$like':'%'+_0x155078[_0xbd8f('0x32')][_0xbd8f('0x3c')]+'%'};return _0xae8348;})});}_0x1cb0d5=_['merge']({},_0x1cb0d5,_0x155078['options']);return _0x54d60c[_0xbd8f('0x4e')](_0x1cb0d5);}})[_0xbd8f('0x27')](function(_0x18c104){if(_0x18c104){_0x24aa8d=_0x18c104[_0xbd8f('0x47')];if(!_0x155078[_0xbd8f('0x32')][_0xbd8f('0x36')]('nolimit')){_0x1cb0d5[_0xbd8f('0x1e')]=qs[_0xbd8f('0x1e')](_0x155078[_0xbd8f('0x32')][_0xbd8f('0x1e')]);_0x1cb0d5[_0xbd8f('0x1d')]=qs[_0xbd8f('0x1d')](_0x155078[_0xbd8f('0x32')][_0xbd8f('0x1d')]);}return _0x54d60c[_0xbd8f('0x4e')](_0x1cb0d5);}})[_0xbd8f('0x27')](function(_0x3c619b){if(_0x3c619b){return _0x3c619b?{'count':_0x24aa8d,'rows':_0x3c619b}:null;}})[_0xbd8f('0x27')](respondWithResult(_0x58f5f3,null))['catch'](handleError(_0x58f5f3,null));};exports[_0xbd8f('0x4f')]=function(_0x312d93,_0x46051a,_0x2a6f97){var _0x974132={};var _0x220616={};var _0x206b53;var _0x49e853;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0x312d93[_0xbd8f('0x45')]['id']}})[_0xbd8f('0x27')](handleEntityNotFound(_0x46051a,null))[_0xbd8f('0x27')](function(_0x520116){if(_0x520116){_0x206b53=_0x520116;_0x220616['model']=_[_0xbd8f('0x46')](db[_0xbd8f('0x4d')]['rawAttributes']);_0x220616[_0xbd8f('0x32')]=_[_0xbd8f('0x46')](_0x312d93[_0xbd8f('0x32')]);_0x220616[_0xbd8f('0x3a')]=_[_0xbd8f('0x33')](_0x220616[_0xbd8f('0x31')],_0x220616[_0xbd8f('0x32')]);_0x974132[_0xbd8f('0x34')]=_[_0xbd8f('0x33')](_0x220616[_0xbd8f('0x31')],qs[_0xbd8f('0x35')](_0x312d93[_0xbd8f('0x32')]['fields']));_0x974132[_0xbd8f('0x34')]=_0x974132[_0xbd8f('0x34')]['length']?_0x974132[_0xbd8f('0x34')]:_0x220616['model'];_0x974132[_0xbd8f('0x38')]=qs[_0xbd8f('0x39')](_0x312d93['query'][_0xbd8f('0x39')]);_0x974132[_0xbd8f('0x3d')]=qs[_0xbd8f('0x3a')](_[_0xbd8f('0x3b')](_0x312d93[_0xbd8f('0x32')],_0x220616['filters']));if(_0x312d93['query'][_0xbd8f('0x3c')]){_0x974132[_0xbd8f('0x3d')]=_['merge'](_0x974132['where'],{'$or':_['map'](_0x974132['attributes'],function(_0x5874f9){var _0x2e8fbb={};_0x2e8fbb[_0x5874f9]={'$like':'%'+_0x312d93[_0xbd8f('0x32')]['filter']+'%'};return _0x2e8fbb;})});}_0x974132=_['merge']({},_0x974132,_0x312d93[_0xbd8f('0x48')]);return _0x206b53['getFields'](_0x974132);}})['then'](function(_0x566972){if(_0x566972){_0x49e853=_0x566972[_0xbd8f('0x47')];if(!_0x312d93[_0xbd8f('0x32')][_0xbd8f('0x36')](_0xbd8f('0x37'))){_0x974132['limit']=qs[_0xbd8f('0x1e')](_0x312d93[_0xbd8f('0x32')][_0xbd8f('0x1e')]);_0x974132[_0xbd8f('0x1d')]=qs[_0xbd8f('0x1d')](_0x312d93[_0xbd8f('0x32')]['offset']);}return _0x206b53['getFields'](_0x974132);}})['then'](function(_0xf79e9f){if(_0xf79e9f){return _0xf79e9f?{'count':_0x49e853,'rows':_0xf79e9f}:null;}})[_0xbd8f('0x27')](respondWithResult(_0x46051a,null))[_0xbd8f('0x43')](handleError(_0x46051a,null));};
\ No newline at end of file
+var _0x7d77=['sort','where','merge','VIRTUAL','options','FreshsalesConfiguration','findAll','rows','catch','show','params','include','find','body','update','getSubjects','findOne','fields','pick','filter','hasOwnProperty','FreshsalesField','getDescriptions','getFields','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','status','end','offset','undefined','count','limit','set','json','apply','destroy','then','error','stack','name','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','nolimit','order'];(function(_0x3df516,_0x36d636){var _0xa6612c=function(_0x5bf41a){while(--_0x5bf41a){_0x3df516['push'](_0x3df516['shift']());}};_0xa6612c(++_0x36d636);}(_0x7d77,0x19e));var _0x77d7=function(_0x146fc2,_0x4beccc){_0x146fc2=_0x146fc2-0x0;var _0x3600ee=_0x7d77[_0x146fc2];return _0x3600ee;};'use strict';var emlformat=require(_0x77d7('0x0'));var rimraf=require(_0x77d7('0x1'));var zipdir=require(_0x77d7('0x2'));var jsonpatch=require(_0x77d7('0x3'));var rp=require(_0x77d7('0x4'));var moment=require(_0x77d7('0x5'));var BPromise=require(_0x77d7('0x6'));var Mustache=require(_0x77d7('0x7'));var util=require(_0x77d7('0x8'));var path=require(_0x77d7('0x9'));var sox=require(_0x77d7('0xa'));var csv=require(_0x77d7('0xb'));var ejs=require(_0x77d7('0xc'));var fs=require('fs');var fs_extra=require(_0x77d7('0xd'));var _=require(_0x77d7('0xe'));var squel=require(_0x77d7('0xf'));var crypto=require(_0x77d7('0x10'));var jsforce=require('jsforce');var deskjs=require(_0x77d7('0x11'));var toCsv=require('to-csv');var querystring=require(_0x77d7('0x12'));var Papa=require('papaparse');var Redis=require(_0x77d7('0x13'));var authService=require(_0x77d7('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x77d7('0x15'));var hardwareService=require(_0x77d7('0x16'));var logger=require('../../config/logger')(_0x77d7('0x17'));var utils=require('../../config/utils');var config=require(_0x77d7('0x18'));var licenseUtil=require(_0x77d7('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x31de81,_0x3ff3d1){_0x3ff3d1=_0x3ff3d1||0xcc;return function(_0x1af1cd){if(_0x1af1cd){return _0x31de81['sendStatus'](_0x3ff3d1);}return _0x31de81[_0x77d7('0x1a')](_0x3ff3d1)[_0x77d7('0x1b')]();};}function respondWithResult(_0x1b2a10,_0x294a06){_0x294a06=_0x294a06||0xc8;return function(_0x25be4e){if(_0x25be4e){return _0x1b2a10['status'](_0x294a06)['json'](_0x25be4e);}};}function respondWithFilteredResult(_0x2bf848,_0x2ac171){return function(_0x3e2072){if(_0x3e2072){var _0x53e99f=typeof _0x2ac171[_0x77d7('0x1c')]===_0x77d7('0x1d')&&typeof _0x2ac171['limit']===_0x77d7('0x1d');var _0x481e71=_0x3e2072[_0x77d7('0x1e')];var _0x1807e2=_0x53e99f?0x0:_0x2ac171['offset'];var _0x378901=_0x53e99f?_0x3e2072[_0x77d7('0x1e')]:_0x2ac171[_0x77d7('0x1c')]+_0x2ac171[_0x77d7('0x1f')];var _0x166c83;if(_0x378901>=_0x481e71){_0x378901=_0x481e71;_0x166c83=0xc8;}else{_0x166c83=0xce;}_0x2bf848[_0x77d7('0x1a')](_0x166c83);return _0x2bf848[_0x77d7('0x20')]('Content-Range',_0x1807e2+'-'+_0x378901+'/'+_0x481e71)[_0x77d7('0x21')](_0x3e2072);}return null;};}function patchUpdates(_0x117542){return function(_0x43cb67){try{jsonpatch[_0x77d7('0x22')](_0x43cb67,_0x117542,!![]);}catch(_0x4dbb56){return BPromise['reject'](_0x4dbb56);}return _0x43cb67['save']();};}function saveUpdates(_0x5328a4,_0x436e34){return function(_0x486f30){if(_0x486f30){return _0x486f30['update'](_0x5328a4)['then'](function(_0x703506){return _0x703506;});}return null;};}function removeEntity(_0x5deb27,_0x5c8c92){return function(_0x392e14){if(_0x392e14){return _0x392e14[_0x77d7('0x23')]()[_0x77d7('0x24')](function(){_0x5deb27[_0x77d7('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x7216ec,_0x4a9242){return function(_0x42ba1b){if(!_0x42ba1b){_0x7216ec['sendStatus'](0x194);}return _0x42ba1b;};}function handleError(_0x391bde,_0x242eb5){_0x242eb5=_0x242eb5||0x1f4;return function(_0x4c15f4){logger[_0x77d7('0x25')](_0x4c15f4[_0x77d7('0x26')]);if(_0x4c15f4[_0x77d7('0x27')]){delete _0x4c15f4[_0x77d7('0x27')];}_0x391bde['status'](_0x242eb5)['send'](_0x4c15f4);};}exports['index']=function(_0x4c86ea,_0x5b85e1){var _0x47ff5f={},_0x1b92ff={},_0x19e783={'count':0x0,'rows':[]};var _0x401465=_[_0x77d7('0x28')](db['FreshsalesConfiguration'][_0x77d7('0x29')],function(_0x45ad0e){return{'name':_0x45ad0e[_0x77d7('0x2a')],'type':_0x45ad0e[_0x77d7('0x2b')][_0x77d7('0x2c')]};});_0x1b92ff[_0x77d7('0x2d')]=_['map'](_0x401465,'name');_0x1b92ff[_0x77d7('0x2e')]=_[_0x77d7('0x2f')](_0x4c86ea['query']);_0x1b92ff[_0x77d7('0x30')]=_[_0x77d7('0x31')](_0x1b92ff['model'],_0x1b92ff[_0x77d7('0x2e')]);_0x47ff5f[_0x77d7('0x32')]=_[_0x77d7('0x31')](_0x1b92ff['model'],qs['fields'](_0x4c86ea[_0x77d7('0x2e')]['fields']));_0x47ff5f[_0x77d7('0x32')]=_0x47ff5f[_0x77d7('0x32')][_0x77d7('0x33')]?_0x47ff5f[_0x77d7('0x32')]:_0x1b92ff[_0x77d7('0x2d')];if(!_0x4c86ea[_0x77d7('0x2e')]['hasOwnProperty'](_0x77d7('0x34'))){_0x47ff5f[_0x77d7('0x1f')]=qs[_0x77d7('0x1f')](_0x4c86ea['query']['limit']);_0x47ff5f[_0x77d7('0x1c')]=qs[_0x77d7('0x1c')](_0x4c86ea['query'][_0x77d7('0x1c')]);}_0x47ff5f[_0x77d7('0x35')]=qs[_0x77d7('0x36')](_0x4c86ea[_0x77d7('0x2e')][_0x77d7('0x36')]);_0x47ff5f[_0x77d7('0x37')]=qs[_0x77d7('0x30')](_['pick'](_0x4c86ea['query'],_0x1b92ff[_0x77d7('0x30')]),_0x401465);if(_0x4c86ea['query']['filter']){_0x47ff5f[_0x77d7('0x37')]=_[_0x77d7('0x38')](_0x47ff5f[_0x77d7('0x37')],{'$or':_[_0x77d7('0x28')](_0x401465,function(_0x1222b7){if(_0x1222b7['type']!==_0x77d7('0x39')){var _0x3ca0d3={};_0x3ca0d3[_0x1222b7['name']]={'$like':'%'+_0x4c86ea[_0x77d7('0x2e')]['filter']+'%'};return _0x3ca0d3;}})});}_0x47ff5f=_[_0x77d7('0x38')]({},_0x47ff5f,_0x4c86ea[_0x77d7('0x3a')]);var _0x5d3f0f={'where':_0x47ff5f[_0x77d7('0x37')]};return db[_0x77d7('0x3b')]['count'](_0x5d3f0f)[_0x77d7('0x24')](function(_0x1a913d){_0x19e783[_0x77d7('0x1e')]=_0x1a913d;if(_0x4c86ea[_0x77d7('0x2e')]['includeAll']){_0x47ff5f['include']=[{'all':!![]}];}return db[_0x77d7('0x3b')][_0x77d7('0x3c')](_0x47ff5f);})[_0x77d7('0x24')](function(_0x54fc98){_0x19e783[_0x77d7('0x3d')]=_0x54fc98;return _0x19e783;})[_0x77d7('0x24')](respondWithFilteredResult(_0x5b85e1,_0x47ff5f))[_0x77d7('0x3e')](handleError(_0x5b85e1,null));};exports[_0x77d7('0x3f')]=function(_0x4299fc,_0x22cab8){var _0x5b94c7={'raw':![],'where':{'id':_0x4299fc[_0x77d7('0x40')]['id']}},_0x4f8fcb={};_0x4f8fcb[_0x77d7('0x2d')]=_[_0x77d7('0x2f')](db[_0x77d7('0x3b')][_0x77d7('0x29')]);_0x4f8fcb[_0x77d7('0x2e')]=_[_0x77d7('0x2f')](_0x4299fc[_0x77d7('0x2e')]);_0x4f8fcb[_0x77d7('0x30')]=_[_0x77d7('0x31')](_0x4f8fcb['model'],_0x4f8fcb['query']);_0x5b94c7['attributes']=_['intersection'](_0x4f8fcb[_0x77d7('0x2d')],qs['fields'](_0x4299fc['query']['fields']));_0x5b94c7[_0x77d7('0x32')]=_0x5b94c7['attributes'][_0x77d7('0x33')]?_0x5b94c7[_0x77d7('0x32')]:_0x4f8fcb[_0x77d7('0x2d')];if(_0x4299fc[_0x77d7('0x2e')]['includeAll']){_0x5b94c7[_0x77d7('0x41')]=[{'all':!![]}];}_0x5b94c7=_['merge']({},_0x5b94c7,_0x4299fc[_0x77d7('0x3a')]);return db[_0x77d7('0x3b')][_0x77d7('0x42')](_0x5b94c7)['then'](handleEntityNotFound(_0x22cab8,null))[_0x77d7('0x24')](respondWithResult(_0x22cab8,null))[_0x77d7('0x3e')](handleError(_0x22cab8,null));};exports['create']=function(_0x4f5d97,_0x21a886){return db[_0x77d7('0x3b')]['create'](_0x4f5d97[_0x77d7('0x43')],{})[_0x77d7('0x24')](respondWithResult(_0x21a886,0xc9))['catch'](handleError(_0x21a886,null));};exports[_0x77d7('0x44')]=function(_0x2f16c1,_0x3d53c2){if(_0x2f16c1['body']['id']){delete _0x2f16c1[_0x77d7('0x43')]['id'];}return db[_0x77d7('0x3b')][_0x77d7('0x42')]({'where':{'id':_0x2f16c1[_0x77d7('0x40')]['id']}})[_0x77d7('0x24')](handleEntityNotFound(_0x3d53c2,null))[_0x77d7('0x24')](saveUpdates(_0x2f16c1[_0x77d7('0x43')],null))[_0x77d7('0x24')](respondWithResult(_0x3d53c2,null))[_0x77d7('0x3e')](handleError(_0x3d53c2,null));};exports['destroy']=function(_0x5f378e,_0x40cbde){return db[_0x77d7('0x3b')][_0x77d7('0x42')]({'where':{'id':_0x5f378e[_0x77d7('0x40')]['id']}})[_0x77d7('0x24')](handleEntityNotFound(_0x40cbde,null))[_0x77d7('0x24')](removeEntity(_0x40cbde,null))['catch'](handleError(_0x40cbde,null));};exports[_0x77d7('0x45')]=function(_0x5731ea,_0x141c6b,_0x589667){var _0x4c18fb={};var _0x245599={};var _0x252993;var _0x57dc66;return db['FreshsalesConfiguration'][_0x77d7('0x46')]({'where':{'id':_0x5731ea[_0x77d7('0x40')]['id']}})['then'](handleEntityNotFound(_0x141c6b,null))[_0x77d7('0x24')](function(_0x398b88){if(_0x398b88){_0x252993=_0x398b88;_0x245599[_0x77d7('0x2d')]=_[_0x77d7('0x2f')](db['FreshsalesField'][_0x77d7('0x29')]);_0x245599[_0x77d7('0x2e')]=_[_0x77d7('0x2f')](_0x5731ea['query']);_0x245599[_0x77d7('0x30')]=_[_0x77d7('0x31')](_0x245599[_0x77d7('0x2d')],_0x245599['query']);_0x4c18fb[_0x77d7('0x32')]=_['intersection'](_0x245599[_0x77d7('0x2d')],qs[_0x77d7('0x47')](_0x5731ea[_0x77d7('0x2e')][_0x77d7('0x47')]));_0x4c18fb[_0x77d7('0x32')]=_0x4c18fb[_0x77d7('0x32')]['length']?_0x4c18fb[_0x77d7('0x32')]:_0x245599[_0x77d7('0x2d')];_0x4c18fb[_0x77d7('0x35')]=qs['sort'](_0x5731ea[_0x77d7('0x2e')][_0x77d7('0x36')]);_0x4c18fb[_0x77d7('0x37')]=qs[_0x77d7('0x30')](_[_0x77d7('0x48')](_0x5731ea[_0x77d7('0x2e')],_0x245599[_0x77d7('0x30')]));if(_0x5731ea[_0x77d7('0x2e')][_0x77d7('0x49')]){_0x4c18fb[_0x77d7('0x37')]=_['merge'](_0x4c18fb[_0x77d7('0x37')],{'$or':_['map'](_0x4c18fb['attributes'],function(_0x243074){var _0x480e48={};_0x480e48[_0x243074]={'$like':'%'+_0x5731ea[_0x77d7('0x2e')][_0x77d7('0x49')]+'%'};return _0x480e48;})});}_0x4c18fb=_['merge']({},_0x4c18fb,_0x5731ea[_0x77d7('0x3a')]);return _0x252993['getSubjects'](_0x4c18fb);}})[_0x77d7('0x24')](function(_0xbe6b3f){if(_0xbe6b3f){_0x57dc66=_0xbe6b3f[_0x77d7('0x33')];if(!_0x5731ea['query'][_0x77d7('0x4a')](_0x77d7('0x34'))){_0x4c18fb['limit']=qs[_0x77d7('0x1f')](_0x5731ea['query'][_0x77d7('0x1f')]);_0x4c18fb[_0x77d7('0x1c')]=qs[_0x77d7('0x1c')](_0x5731ea[_0x77d7('0x2e')]['offset']);}return _0x252993[_0x77d7('0x45')](_0x4c18fb);}})[_0x77d7('0x24')](function(_0x1b67cb){if(_0x1b67cb){return _0x1b67cb?{'count':_0x57dc66,'rows':_0x1b67cb}:null;}})['then'](respondWithResult(_0x141c6b,null))[_0x77d7('0x3e')](handleError(_0x141c6b,null));};exports['getDescriptions']=function(_0xbbedf7,_0x248472,_0x33cf8e){var _0x5994ab={};var _0x35e450={};var _0x483fdb;var _0x1b14bc;return db[_0x77d7('0x3b')][_0x77d7('0x46')]({'where':{'id':_0xbbedf7['params']['id']}})['then'](handleEntityNotFound(_0x248472,null))['then'](function(_0x5c482d){if(_0x5c482d){_0x483fdb=_0x5c482d;_0x35e450[_0x77d7('0x2d')]=_[_0x77d7('0x2f')](db[_0x77d7('0x4b')][_0x77d7('0x29')]);_0x35e450[_0x77d7('0x2e')]=_[_0x77d7('0x2f')](_0xbbedf7[_0x77d7('0x2e')]);_0x35e450[_0x77d7('0x30')]=_[_0x77d7('0x31')](_0x35e450['model'],_0x35e450[_0x77d7('0x2e')]);_0x5994ab[_0x77d7('0x32')]=_['intersection'](_0x35e450['model'],qs[_0x77d7('0x47')](_0xbbedf7[_0x77d7('0x2e')]['fields']));_0x5994ab['attributes']=_0x5994ab[_0x77d7('0x32')][_0x77d7('0x33')]?_0x5994ab[_0x77d7('0x32')]:_0x35e450[_0x77d7('0x2d')];_0x5994ab['order']=qs[_0x77d7('0x36')](_0xbbedf7[_0x77d7('0x2e')][_0x77d7('0x36')]);_0x5994ab[_0x77d7('0x37')]=qs[_0x77d7('0x30')](_['pick'](_0xbbedf7[_0x77d7('0x2e')],_0x35e450[_0x77d7('0x30')]));if(_0xbbedf7[_0x77d7('0x2e')][_0x77d7('0x49')]){_0x5994ab['where']=_['merge'](_0x5994ab[_0x77d7('0x37')],{'$or':_[_0x77d7('0x28')](_0x5994ab[_0x77d7('0x32')],function(_0x14d175){var _0x4e783d={};_0x4e783d[_0x14d175]={'$like':'%'+_0xbbedf7[_0x77d7('0x2e')][_0x77d7('0x49')]+'%'};return _0x4e783d;})});}_0x5994ab=_[_0x77d7('0x38')]({},_0x5994ab,_0xbbedf7[_0x77d7('0x3a')]);return _0x483fdb[_0x77d7('0x4c')](_0x5994ab);}})[_0x77d7('0x24')](function(_0x2e7af0){if(_0x2e7af0){_0x1b14bc=_0x2e7af0[_0x77d7('0x33')];if(!_0xbbedf7['query'][_0x77d7('0x4a')]('nolimit')){_0x5994ab[_0x77d7('0x1f')]=qs[_0x77d7('0x1f')](_0xbbedf7[_0x77d7('0x2e')][_0x77d7('0x1f')]);_0x5994ab['offset']=qs['offset'](_0xbbedf7[_0x77d7('0x2e')][_0x77d7('0x1c')]);}return _0x483fdb[_0x77d7('0x4c')](_0x5994ab);}})[_0x77d7('0x24')](function(_0x1fa245){if(_0x1fa245){return _0x1fa245?{'count':_0x1b14bc,'rows':_0x1fa245}:null;}})[_0x77d7('0x24')](respondWithResult(_0x248472,null))[_0x77d7('0x3e')](handleError(_0x248472,null));};exports['getFields']=function(_0x3d4158,_0x5afb92,_0x1f265d){var _0x4a7a0e={};var _0x2f0539={};var _0x3f8798;var _0x26ad3e;return db[_0x77d7('0x3b')][_0x77d7('0x46')]({'where':{'id':_0x3d4158[_0x77d7('0x40')]['id']}})[_0x77d7('0x24')](handleEntityNotFound(_0x5afb92,null))[_0x77d7('0x24')](function(_0x3270c7){if(_0x3270c7){_0x3f8798=_0x3270c7;_0x2f0539[_0x77d7('0x2d')]=_[_0x77d7('0x2f')](db[_0x77d7('0x4b')]['rawAttributes']);_0x2f0539[_0x77d7('0x2e')]=_[_0x77d7('0x2f')](_0x3d4158['query']);_0x2f0539[_0x77d7('0x30')]=_[_0x77d7('0x31')](_0x2f0539[_0x77d7('0x2d')],_0x2f0539[_0x77d7('0x2e')]);_0x4a7a0e[_0x77d7('0x32')]=_[_0x77d7('0x31')](_0x2f0539['model'],qs[_0x77d7('0x47')](_0x3d4158[_0x77d7('0x2e')][_0x77d7('0x47')]));_0x4a7a0e[_0x77d7('0x32')]=_0x4a7a0e[_0x77d7('0x32')][_0x77d7('0x33')]?_0x4a7a0e[_0x77d7('0x32')]:_0x2f0539[_0x77d7('0x2d')];_0x4a7a0e[_0x77d7('0x35')]=qs['sort'](_0x3d4158[_0x77d7('0x2e')]['sort']);_0x4a7a0e[_0x77d7('0x37')]=qs['filters'](_[_0x77d7('0x48')](_0x3d4158[_0x77d7('0x2e')],_0x2f0539[_0x77d7('0x30')]));if(_0x3d4158[_0x77d7('0x2e')][_0x77d7('0x49')]){_0x4a7a0e['where']=_[_0x77d7('0x38')](_0x4a7a0e['where'],{'$or':_[_0x77d7('0x28')](_0x4a7a0e['attributes'],function(_0x1049f7){var _0x5543d8={};_0x5543d8[_0x1049f7]={'$like':'%'+_0x3d4158[_0x77d7('0x2e')][_0x77d7('0x49')]+'%'};return _0x5543d8;})});}_0x4a7a0e=_[_0x77d7('0x38')]({},_0x4a7a0e,_0x3d4158[_0x77d7('0x3a')]);return _0x3f8798[_0x77d7('0x4d')](_0x4a7a0e);}})['then'](function(_0x4688f1){if(_0x4688f1){_0x26ad3e=_0x4688f1[_0x77d7('0x33')];if(!_0x3d4158[_0x77d7('0x2e')][_0x77d7('0x4a')]('nolimit')){_0x4a7a0e[_0x77d7('0x1f')]=qs[_0x77d7('0x1f')](_0x3d4158[_0x77d7('0x2e')][_0x77d7('0x1f')]);_0x4a7a0e[_0x77d7('0x1c')]=qs[_0x77d7('0x1c')](_0x3d4158[_0x77d7('0x2e')]['offset']);}return _0x3f8798[_0x77d7('0x4d')](_0x4a7a0e);}})[_0x77d7('0x24')](function(_0x28d85f){if(_0x28d85f){return _0x28d85f?{'count':_0x26ad3e,'rows':_0x28d85f}:null;}})[_0x77d7('0x24')](respondWithResult(_0x5afb92,null))[_0x77d7('0x3e')](handleError(_0x5afb92,null));};
\ No newline at end of file
index f1c34d1..85a7885 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd30a=['api','moment','bluebird','request-promise','path','lodash','util','../../config/logger'];(function(_0x154029,_0x377c35){var _0x211022=function(_0xc732b3){while(--_0xc732b3){_0x154029['push'](_0x154029['shift']());}};_0x211022(++_0x377c35);}(_0xd30a,0x1d5));var _0xad30=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0xd30a[_0x1cfa0d];return _0xe33279;};'use strict';var _=require(_0xad30('0x0'));var util=require(_0xad30('0x1'));var logger=require(_0xad30('0x2'))(_0xad30('0x3'));var moment=require(_0xad30('0x4'));var BPromise=require(_0xad30('0x5'));var rp=require(_0xad30('0x6'));var fs=require('fs');var path=require(_0xad30('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intFreshsalesConfiguration.attributes');module['exports']=function(_0x82ec3d,_0x302c96){return _0x82ec3d['define']('FreshsalesConfiguration',attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x46ff=['FreshsalesConfiguration','int_freshsales_configurations','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','exports','define'];(function(_0x193784,_0x445291){var _0x5a009d=function(_0xd74591){while(--_0xd74591){_0x193784['push'](_0x193784['shift']());}};_0x5a009d(++_0x445291);}(_0x46ff,0xfe));var _0xf46f=function(_0x4da9f3,_0x489f0d){_0x4da9f3=_0x4da9f3-0x0;var _0x898997=_0x46ff[_0x4da9f3];return _0x898997;};'use strict';var _=require(_0xf46f('0x0'));var util=require(_0xf46f('0x1'));var logger=require(_0xf46f('0x2'))(_0xf46f('0x3'));var moment=require(_0xf46f('0x4'));var BPromise=require(_0xf46f('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xf46f('0x6'));var config=require(_0xf46f('0x7'));var attributes=require('./intFreshsalesConfiguration.attributes');module[_0xf46f('0x8')]=function(_0x433a02,_0x4a0357){return _0x433a02[_0xf46f('0x9')](_0xf46f('0xa'),attributes,{'tableName':_0xf46f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 59a8a3f..c0ecb3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb397=['FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info'];(function(_0x459423,_0x3416a8){var _0x42ed14=function(_0x1d4f69){while(--_0x1d4f69){_0x459423['push'](_0x459423['shift']());}};_0x42ed14(++_0x3416a8);}(_0xb397,0xc0));var _0x7b39=function(_0x3a7313,_0x1ea6ac){_0x3a7313=_0x3a7313-0x0;var _0x4153c2=_0xb397[_0x3a7313];return _0x4153c2;};'use strict';var _=require(_0x7b39('0x0'));var util=require(_0x7b39('0x1'));var moment=require(_0x7b39('0x2'));var BPromise=require(_0x7b39('0x3'));var rs=require(_0x7b39('0x4'));var fs=require('fs');var Redis=require(_0x7b39('0x5'));var db=require(_0x7b39('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x7b39('0x7'))(_0x7b39('0x8'));var config=require(_0x7b39('0x9'));var jayson=require(_0x7b39('0xa'));var client=jayson[_0x7b39('0xb')][_0x7b39('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x75126b,_0x2e6e4d,_0x131af8){return new BPromise(function(_0x538a26,_0x45328a){return client[_0x7b39('0xd')](_0x75126b,_0x131af8)['then'](function(_0x4c9dac){logger[_0x7b39('0xe')](_0x7b39('0xf'),_0x2e6e4d,_0x7b39('0x10'));logger[_0x7b39('0x11')](_0x7b39('0x12'),_0x2e6e4d,'request\x20sent',JSON['stringify'](_0x4c9dac));if(_0x4c9dac[_0x7b39('0x13')]){if(_0x4c9dac[_0x7b39('0x13')]['code']===0x1f4){logger[_0x7b39('0x13')](_0x7b39('0xf'),_0x2e6e4d,_0x4c9dac[_0x7b39('0x13')][_0x7b39('0x14')]);return _0x45328a(_0x4c9dac[_0x7b39('0x13')]['message']);}logger[_0x7b39('0x13')](_0x7b39('0xf'),_0x2e6e4d,_0x4c9dac[_0x7b39('0x13')][_0x7b39('0x14')]);return _0x538a26(_0x4c9dac[_0x7b39('0x13')][_0x7b39('0x14')]);}else{logger[_0x7b39('0xe')](_0x7b39('0xf'),_0x2e6e4d,_0x7b39('0x10'));_0x538a26(_0x4c9dac[_0x7b39('0x15')][_0x7b39('0x14')]);}})[_0x7b39('0x16')](function(_0x4f69a0){logger[_0x7b39('0x13')](_0x7b39('0xf'),_0x2e6e4d,_0x4f69a0);_0x45328a(_0x4f69a0);});});}
\ No newline at end of file
+var _0x5bd2=['result','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','jayson/promise','http','request','then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','error','message'];(function(_0xe896bf,_0x4f8e5e){var _0x4c7a8a=function(_0x410ff2){while(--_0x410ff2){_0xe896bf['push'](_0xe896bf['shift']());}};_0x4c7a8a(++_0x4f8e5e);}(_0x5bd2,0x1b6));var _0x25bd=function(_0x526dc4,_0x56d252){_0x526dc4=_0x526dc4-0x0;var _0x3ed987=_0x5bd2[_0x526dc4];return _0x3ed987;};'use strict';var _=require(_0x25bd('0x0'));var util=require(_0x25bd('0x1'));var moment=require(_0x25bd('0x2'));var BPromise=require(_0x25bd('0x3'));var rs=require(_0x25bd('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x25bd('0x5'));var logger=require(_0x25bd('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x25bd('0x7'));var client=jayson['client'][_0x25bd('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x294141,_0x147cdf,_0x2a0886){return new BPromise(function(_0x1fb868,_0x577941){return client[_0x25bd('0x9')](_0x294141,_0x2a0886)[_0x25bd('0xa')](function(_0x54a342){logger[_0x25bd('0xb')](_0x25bd('0xc'),_0x147cdf,_0x25bd('0xd'));logger[_0x25bd('0xe')](_0x25bd('0xf'),_0x147cdf,_0x25bd('0xd'),JSON['stringify'](_0x54a342));if(_0x54a342[_0x25bd('0x10')]){if(_0x54a342[_0x25bd('0x10')]['code']===0x1f4){logger[_0x25bd('0x10')](_0x25bd('0xc'),_0x147cdf,_0x54a342[_0x25bd('0x10')][_0x25bd('0x11')]);return _0x577941(_0x54a342[_0x25bd('0x10')][_0x25bd('0x11')]);}logger[_0x25bd('0x10')](_0x25bd('0xc'),_0x147cdf,_0x54a342[_0x25bd('0x10')]['message']);return _0x1fb868(_0x54a342[_0x25bd('0x10')][_0x25bd('0x11')]);}else{logger[_0x25bd('0xb')](_0x25bd('0xc'),_0x147cdf,'request\x20sent');_0x1fb868(_0x54a342[_0x25bd('0x12')][_0x25bd('0x11')]);}})['catch'](function(_0x5a24c5){logger[_0x25bd('0x10')](_0x25bd('0xc'),_0x147cdf,_0x5a24c5);_0x577941(_0x5a24c5);});});}
\ No newline at end of file
index 7f5b402..ae43f06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbec5=['/:id','isAuthenticated','show','post','create','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intFreshsalesField.controller','get','index'];(function(_0x376f50,_0x1b6855){var _0x1c5f2e=function(_0x50adf8){while(--_0x50adf8){_0x376f50['push'](_0x376f50['shift']());}};_0x1c5f2e(++_0x1b6855);}(_0xbec5,0xe5));var _0x5bec=function(_0x42bafd,_0x3f0fe3){_0x42bafd=_0x42bafd-0x0;var _0x2ed705=_0xbec5[_0x42bafd];return _0x2ed705;};'use strict';var multer=require(_0x5bec('0x0'));var util=require(_0x5bec('0x1'));var path=require('path');var timeout=require(_0x5bec('0x2'));var express=require(_0x5bec('0x3'));var router=express[_0x5bec('0x4')]();var fs_extra=require(_0x5bec('0x5'));var auth=require(_0x5bec('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5bec('0x7'));var controller=require(_0x5bec('0x8'));router[_0x5bec('0x9')]('/',auth['isAuthenticated'](),controller[_0x5bec('0xa')]);router[_0x5bec('0x9')](_0x5bec('0xb'),auth[_0x5bec('0xc')](),controller[_0x5bec('0xd')]);router[_0x5bec('0xe')]('/',auth[_0x5bec('0xc')](),controller[_0x5bec('0xf')]);router['put'](_0x5bec('0xb'),auth['isAuthenticated'](),controller[_0x5bec('0x10')]);router[_0x5bec('0x11')](_0x5bec('0xb'),auth['isAuthenticated'](),controller[_0x5bec('0x12')]);module[_0x5bec('0x13')]=router;
\ No newline at end of file
+var _0x37a4=['path','express','Router','fs-extra','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','/:id','show','post','create','put','update','delete','exports','multer'];(function(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0x37a4,0xcb));var _0x437a=function(_0x14217c,_0x349af9){_0x14217c=_0x14217c-0x0;var _0x335418=_0x37a4[_0x14217c];return _0x335418;};'use strict';var multer=require(_0x437a('0x0'));var util=require('util');var path=require(_0x437a('0x1'));var timeout=require('connect-timeout');var express=require(_0x437a('0x2'));var router=express[_0x437a('0x3')]();var fs_extra=require(_0x437a('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x437a('0x5'));var controller=require(_0x437a('0x6'));router[_0x437a('0x7')]('/',auth[_0x437a('0x8')](),controller['index']);router[_0x437a('0x7')](_0x437a('0x9'),auth['isAuthenticated'](),controller[_0x437a('0xa')]);router[_0x437a('0xb')]('/',auth[_0x437a('0x8')](),controller[_0x437a('0xc')]);router[_0x437a('0xd')](_0x437a('0x9'),auth[_0x437a('0x8')](),controller[_0x437a('0xe')]);router[_0x437a('0xf')](_0x437a('0x9'),auth[_0x437a('0x8')](),controller['destroy']);module[_0x437a('0x10')]=router;
\ No newline at end of file
index 80a38e2..c1fde33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9b1=['string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','exports','ENUM'];(function(_0x292423,_0x1759b7){var _0x2801cb=function(_0x23c821){while(--_0x23c821){_0x292423['push'](_0x292423['shift']());}};_0x2801cb(++_0x1759b7);}(_0xd9b1,0x1ed));var _0x1d9b=function(_0x273034,_0x44374a){_0x273034=_0x273034-0x0;var _0x4275d1=_0xd9b1[_0x273034];return _0x4275d1;};'use strict';var Sequelize=require('sequelize');module[_0x1d9b('0x0')]={'type':{'type':Sequelize[_0x1d9b('0x1')](_0x1d9b('0x2'),_0x1d9b('0x3'),_0x1d9b('0x4'),_0x1d9b('0x5'),_0x1d9b('0x6')),'defaultValue':_0x1d9b('0x2')},'content':{'type':Sequelize[_0x1d9b('0x7')]},'key':{'type':Sequelize[_0x1d9b('0x7')]},'keyType':{'type':Sequelize[_0x1d9b('0x1')](_0x1d9b('0x2'),_0x1d9b('0x3'),_0x1d9b('0x4'))},'keyContent':{'type':Sequelize[_0x1d9b('0x7')]},'idField':{'type':Sequelize[_0x1d9b('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x1d9b('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xe42e=['variable','customVariable','keyValue','STRING','exports','ENUM','string'];(function(_0x36fa1f,_0x3a8689){var _0x51754b=function(_0x95b538){while(--_0x95b538){_0x36fa1f['push'](_0x36fa1f['shift']());}};_0x51754b(++_0x3a8689);}(_0xe42e,0x82));var _0xee42=function(_0x3f5b2d,_0x4bd45e){_0x3f5b2d=_0x3f5b2d-0x0;var _0x2b43a1=_0xe42e[_0x3f5b2d];return _0x2b43a1;};'use strict';var Sequelize=require('sequelize');module[_0xee42('0x0')]={'type':{'type':Sequelize[_0xee42('0x1')](_0xee42('0x2'),_0xee42('0x3'),_0xee42('0x4'),_0xee42('0x5'),'picklist'),'defaultValue':_0xee42('0x2')},'content':{'type':Sequelize[_0xee42('0x6')]},'key':{'type':Sequelize[_0xee42('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0xee42('0x2'),_0xee42('0x3'),_0xee42('0x4'))},'keyContent':{'type':Sequelize[_0xee42('0x6')]},'idField':{'type':Sequelize[_0xee42('0x6')]},'nameField':{'type':Sequelize[_0xee42('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xee42('0x6')]}};
\ No newline at end of file
index d1e23e2..f8d9eb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d7e=['mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','limit','undefined','count','offset','status','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','map','FreshsalesField','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x145f1a,_0x53bb2d){var _0x23370f=function(_0x5755b0){while(--_0x5755b0){_0x145f1a['push'](_0x145f1a['shift']());}};_0x23370f(++_0x53bb2d);}(_0x0d7e,0x97));var _0xe0d7=function(_0x3a8517,_0x2b5a1d){_0x3a8517=_0x3a8517-0x0;var _0x43ff0e=_0x0d7e[_0x3a8517];return _0x43ff0e;};'use strict';var emlformat=require(_0xe0d7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe0d7('0x1'));var jsonpatch=require(_0xe0d7('0x2'));var rp=require(_0xe0d7('0x3'));var moment=require(_0xe0d7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xe0d7('0x5'));var util=require('util');var path=require(_0xe0d7('0x6'));var sox=require(_0xe0d7('0x7'));var csv=require('to-csv');var ejs=require(_0xe0d7('0x8'));var fs=require('fs');var fs_extra=require(_0xe0d7('0x9'));var _=require(_0xe0d7('0xa'));var squel=require(_0xe0d7('0xb'));var crypto=require(_0xe0d7('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe0d7('0xd'));var toCsv=require(_0xe0d7('0xe'));var querystring=require(_0xe0d7('0xf'));var Papa=require(_0xe0d7('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xe0d7('0x11'));var as=require(_0xe0d7('0x12'));var hardwareService=require(_0xe0d7('0x13'));var logger=require(_0xe0d7('0x14'))('api');var utils=require(_0xe0d7('0x15'));var config=require(_0xe0d7('0x16'));var licenseUtil=require(_0xe0d7('0x17'));var db=require(_0xe0d7('0x18'))['db'];function respondWithStatusCode(_0x19aa02,_0x13acae){_0x13acae=_0x13acae||0xcc;return function(_0x39032c){if(_0x39032c){return _0x19aa02[_0xe0d7('0x19')](_0x13acae);}return _0x19aa02['status'](_0x13acae)[_0xe0d7('0x1a')]();};}function respondWithResult(_0x2c8966,_0x269a26){_0x269a26=_0x269a26||0xc8;return function(_0x3648cf){if(_0x3648cf){return _0x2c8966['status'](_0x269a26)[_0xe0d7('0x1b')](_0x3648cf);}};}function respondWithFilteredResult(_0x359484,_0x365766){return function(_0x34451f){if(_0x34451f){var _0x25f3a1=typeof _0x365766['offset']==='undefined'&&typeof _0x365766[_0xe0d7('0x1c')]===_0xe0d7('0x1d');var _0x2ec616=_0x34451f[_0xe0d7('0x1e')];var _0x3bb982=_0x25f3a1?0x0:_0x365766[_0xe0d7('0x1f')];var _0x2f8084=_0x25f3a1?_0x34451f['count']:_0x365766[_0xe0d7('0x1f')]+_0x365766[_0xe0d7('0x1c')];var _0x2d8c8d;if(_0x2f8084>=_0x2ec616){_0x2f8084=_0x2ec616;_0x2d8c8d=0xc8;}else{_0x2d8c8d=0xce;}_0x359484[_0xe0d7('0x20')](_0x2d8c8d);return _0x359484[_0xe0d7('0x21')](_0xe0d7('0x22'),_0x3bb982+'-'+_0x2f8084+'/'+_0x2ec616)['json'](_0x34451f);}return null;};}function patchUpdates(_0x494b03){return function(_0x1409b3){try{jsonpatch[_0xe0d7('0x23')](_0x1409b3,_0x494b03,!![]);}catch(_0x44f2d4){return BPromise[_0xe0d7('0x24')](_0x44f2d4);}return _0x1409b3[_0xe0d7('0x25')]();};}function saveUpdates(_0xd02f9a,_0x3e7aca){return function(_0x5bd9e5){if(_0x5bd9e5){return _0x5bd9e5[_0xe0d7('0x26')](_0xd02f9a)[_0xe0d7('0x27')](function(_0x10f5ab){return _0x10f5ab;});}return null;};}function removeEntity(_0x2ce3e7,_0x1e440c){return function(_0x2e6796){if(_0x2e6796){return _0x2e6796[_0xe0d7('0x28')]()['then'](function(){_0x2ce3e7['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3ebcbb,_0x121696){return function(_0x5c790e){if(!_0x5c790e){_0x3ebcbb['sendStatus'](0x194);}return _0x5c790e;};}function handleError(_0x30a007,_0x14dd56){_0x14dd56=_0x14dd56||0x1f4;return function(_0xb94172){logger[_0xe0d7('0x29')](_0xb94172['stack']);if(_0xb94172[_0xe0d7('0x2a')]){delete _0xb94172['name'];}_0x30a007[_0xe0d7('0x20')](_0x14dd56)[_0xe0d7('0x2b')](_0xb94172);};}exports[_0xe0d7('0x2c')]=function(_0x5839ee,_0x57b7cb){var _0x405b6c={},_0x2b27a5={},_0x3c4195={'count':0x0,'rows':[]};var _0x32b670=_[_0xe0d7('0x2d')](db[_0xe0d7('0x2e')][_0xe0d7('0x2f')],function(_0x5398dd){return{'name':_0x5398dd[_0xe0d7('0x30')],'type':_0x5398dd['type'][_0xe0d7('0x31')]};});_0x2b27a5[_0xe0d7('0x32')]=_['map'](_0x32b670,_0xe0d7('0x2a'));_0x2b27a5[_0xe0d7('0x33')]=_[_0xe0d7('0x34')](_0x5839ee[_0xe0d7('0x33')]);_0x2b27a5[_0xe0d7('0x35')]=_[_0xe0d7('0x36')](_0x2b27a5['model'],_0x2b27a5[_0xe0d7('0x33')]);_0x405b6c[_0xe0d7('0x37')]=_['intersection'](_0x2b27a5[_0xe0d7('0x32')],qs[_0xe0d7('0x38')](_0x5839ee[_0xe0d7('0x33')][_0xe0d7('0x38')]));_0x405b6c['attributes']=_0x405b6c[_0xe0d7('0x37')]['length']?_0x405b6c[_0xe0d7('0x37')]:_0x2b27a5['model'];if(!_0x5839ee[_0xe0d7('0x33')][_0xe0d7('0x39')](_0xe0d7('0x3a'))){_0x405b6c[_0xe0d7('0x1c')]=qs[_0xe0d7('0x1c')](_0x5839ee[_0xe0d7('0x33')][_0xe0d7('0x1c')]);_0x405b6c[_0xe0d7('0x1f')]=qs[_0xe0d7('0x1f')](_0x5839ee[_0xe0d7('0x33')][_0xe0d7('0x1f')]);}_0x405b6c[_0xe0d7('0x3b')]=qs[_0xe0d7('0x3c')](_0x5839ee[_0xe0d7('0x33')][_0xe0d7('0x3c')]);_0x405b6c[_0xe0d7('0x3d')]=qs[_0xe0d7('0x35')](_['pick'](_0x5839ee[_0xe0d7('0x33')],_0x2b27a5['filters']),_0x32b670);if(_0x5839ee[_0xe0d7('0x33')][_0xe0d7('0x3e')]){_0x405b6c[_0xe0d7('0x3d')]=_[_0xe0d7('0x3f')](_0x405b6c[_0xe0d7('0x3d')],{'$or':_['map'](_0x32b670,function(_0xc1137d){if(_0xc1137d[_0xe0d7('0x40')]!==_0xe0d7('0x41')){var _0x13206b={};_0x13206b[_0xc1137d['name']]={'$like':'%'+_0x5839ee[_0xe0d7('0x33')][_0xe0d7('0x3e')]+'%'};return _0x13206b;}})});}_0x405b6c=_[_0xe0d7('0x3f')]({},_0x405b6c,_0x5839ee[_0xe0d7('0x42')]);var _0x592a0c={'where':_0x405b6c[_0xe0d7('0x3d')]};return db['FreshsalesField'][_0xe0d7('0x1e')](_0x592a0c)['then'](function(_0xf436c1){_0x3c4195[_0xe0d7('0x1e')]=_0xf436c1;if(_0x5839ee[_0xe0d7('0x33')][_0xe0d7('0x43')]){_0x405b6c[_0xe0d7('0x44')]=[{'all':!![]}];}return db[_0xe0d7('0x2e')][_0xe0d7('0x45')](_0x405b6c);})['then'](function(_0x170b48){_0x3c4195[_0xe0d7('0x46')]=_0x170b48;return _0x3c4195;})[_0xe0d7('0x27')](respondWithFilteredResult(_0x57b7cb,_0x405b6c))[_0xe0d7('0x47')](handleError(_0x57b7cb,null));};exports[_0xe0d7('0x48')]=function(_0x1c2cdd,_0x24cf4c){var _0x4df4b7={'raw':!![],'where':{'id':_0x1c2cdd[_0xe0d7('0x49')]['id']}},_0x1aa405={};_0x1aa405[_0xe0d7('0x32')]=_[_0xe0d7('0x34')](db[_0xe0d7('0x2e')][_0xe0d7('0x2f')]);_0x1aa405['query']=_[_0xe0d7('0x34')](_0x1c2cdd[_0xe0d7('0x33')]);_0x1aa405[_0xe0d7('0x35')]=_['intersection'](_0x1aa405['model'],_0x1aa405[_0xe0d7('0x33')]);_0x4df4b7[_0xe0d7('0x37')]=_[_0xe0d7('0x36')](_0x1aa405[_0xe0d7('0x32')],qs['fields'](_0x1c2cdd['query'][_0xe0d7('0x38')]));_0x4df4b7[_0xe0d7('0x37')]=_0x4df4b7[_0xe0d7('0x37')][_0xe0d7('0x4a')]?_0x4df4b7[_0xe0d7('0x37')]:_0x1aa405[_0xe0d7('0x32')];if(_0x1c2cdd[_0xe0d7('0x33')][_0xe0d7('0x43')]){_0x4df4b7[_0xe0d7('0x44')]=[{'all':!![]}];}_0x4df4b7=_['merge']({},_0x4df4b7,_0x1c2cdd['options']);return db[_0xe0d7('0x2e')][_0xe0d7('0x4b')](_0x4df4b7)[_0xe0d7('0x27')](handleEntityNotFound(_0x24cf4c,null))['then'](respondWithResult(_0x24cf4c,null))[_0xe0d7('0x47')](handleError(_0x24cf4c,null));};exports[_0xe0d7('0x4c')]=function(_0x56f6f5,_0x10917a){return db[_0xe0d7('0x2e')][_0xe0d7('0x4c')](_0x56f6f5['body'],{})[_0xe0d7('0x27')](respondWithResult(_0x10917a,0xc9))[_0xe0d7('0x47')](handleError(_0x10917a,null));};exports[_0xe0d7('0x26')]=function(_0xf7f9b2,_0x5b4429){if(_0xf7f9b2[_0xe0d7('0x4d')]['id']){delete _0xf7f9b2[_0xe0d7('0x4d')]['id'];}return db[_0xe0d7('0x2e')]['find']({'where':{'id':_0xf7f9b2[_0xe0d7('0x49')]['id']}})[_0xe0d7('0x27')](handleEntityNotFound(_0x5b4429,null))[_0xe0d7('0x27')](saveUpdates(_0xf7f9b2['body'],null))[_0xe0d7('0x27')](respondWithResult(_0x5b4429,null))[_0xe0d7('0x47')](handleError(_0x5b4429,null));};exports[_0xe0d7('0x28')]=function(_0x42a8cf,_0x3d03c2){return db[_0xe0d7('0x2e')][_0xe0d7('0x4b')]({'where':{'id':_0x42a8cf['params']['id']}})[_0xe0d7('0x27')](handleEntityNotFound(_0x3d03c2,null))['then'](removeEntity(_0x3d03c2,null))[_0xe0d7('0x47')](handleError(_0x3d03c2,null));};
\ No newline at end of file
+var _0xe019=['sort','where','pick','merge','filter','options','includeAll','findAll','catch','show','keys','fields','include','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','undefined','limit','count','offset','set','apply','save','update','then','destroy','sendStatus','error','stack','name','index','FreshsalesField','rawAttributes','fieldName','type','key','model','map','query','filters','attributes','intersection','length','hasOwnProperty','nolimit','order'];(function(_0x48a660,_0x35ad89){var _0x874e67=function(_0x6a0c8a){while(--_0x6a0c8a){_0x48a660['push'](_0x48a660['shift']());}};_0x874e67(++_0x35ad89);}(_0xe019,0xec));var _0x9e01=function(_0x39165a,_0x704f0){_0x39165a=_0x39165a-0x0;var _0x10e796=_0xe019[_0x39165a];return _0x10e796;};'use strict';var emlformat=require(_0x9e01('0x0'));var rimraf=require(_0x9e01('0x1'));var zipdir=require(_0x9e01('0x2'));var jsonpatch=require(_0x9e01('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x9e01('0x4'));var sox=require(_0x9e01('0x5'));var csv=require(_0x9e01('0x6'));var ejs=require(_0x9e01('0x7'));var fs=require('fs');var fs_extra=require(_0x9e01('0x8'));var _=require(_0x9e01('0x9'));var squel=require(_0x9e01('0xa'));var crypto=require(_0x9e01('0xb'));var jsforce=require(_0x9e01('0xc'));var deskjs=require(_0x9e01('0xd'));var toCsv=require(_0x9e01('0x6'));var querystring=require(_0x9e01('0xe'));var Papa=require(_0x9e01('0xf'));var Redis=require(_0x9e01('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9e01('0x11'));var hardwareService=require(_0x9e01('0x12'));var logger=require('../../config/logger')(_0x9e01('0x13'));var utils=require(_0x9e01('0x14'));var config=require(_0x9e01('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x9e01('0x16'))['db'];function respondWithStatusCode(_0x45d286,_0x4d9ad9){_0x4d9ad9=_0x4d9ad9||0xcc;return function(_0x426be5){if(_0x426be5){return _0x45d286['sendStatus'](_0x4d9ad9);}return _0x45d286[_0x9e01('0x17')](_0x4d9ad9)[_0x9e01('0x18')]();};}function respondWithResult(_0x2ed6e8,_0x4995de){_0x4995de=_0x4995de||0xc8;return function(_0x17c49e){if(_0x17c49e){return _0x2ed6e8[_0x9e01('0x17')](_0x4995de)[_0x9e01('0x19')](_0x17c49e);}};}function respondWithFilteredResult(_0x422a0e,_0x39a68e){return function(_0x4fe30d){if(_0x4fe30d){var _0x24cb64=typeof _0x39a68e['offset']===_0x9e01('0x1a')&&typeof _0x39a68e[_0x9e01('0x1b')]===_0x9e01('0x1a');var _0x55facd=_0x4fe30d[_0x9e01('0x1c')];var _0xcc325c=_0x24cb64?0x0:_0x39a68e[_0x9e01('0x1d')];var _0x511707=_0x24cb64?_0x4fe30d['count']:_0x39a68e['offset']+_0x39a68e['limit'];var _0x101866;if(_0x511707>=_0x55facd){_0x511707=_0x55facd;_0x101866=0xc8;}else{_0x101866=0xce;}_0x422a0e['status'](_0x101866);return _0x422a0e[_0x9e01('0x1e')]('Content-Range',_0xcc325c+'-'+_0x511707+'/'+_0x55facd)[_0x9e01('0x19')](_0x4fe30d);}return null;};}function patchUpdates(_0x1fee55){return function(_0x45337d){try{jsonpatch[_0x9e01('0x1f')](_0x45337d,_0x1fee55,!![]);}catch(_0x53d5ed){return BPromise['reject'](_0x53d5ed);}return _0x45337d[_0x9e01('0x20')]();};}function saveUpdates(_0x43bede,_0x553819){return function(_0x379af2){if(_0x379af2){return _0x379af2[_0x9e01('0x21')](_0x43bede)[_0x9e01('0x22')](function(_0x4fcd40){return _0x4fcd40;});}return null;};}function removeEntity(_0x593d86,_0x52dd86){return function(_0x23b979){if(_0x23b979){return _0x23b979[_0x9e01('0x23')]()['then'](function(){_0x593d86[_0x9e01('0x17')](0xcc)[_0x9e01('0x18')]();});}};}function handleEntityNotFound(_0x3e5af5,_0x1f47e2){return function(_0x33ecad){if(!_0x33ecad){_0x3e5af5[_0x9e01('0x24')](0x194);}return _0x33ecad;};}function handleError(_0x8fbe67,_0x39cb8d){_0x39cb8d=_0x39cb8d||0x1f4;return function(_0x6adc1){logger[_0x9e01('0x25')](_0x6adc1[_0x9e01('0x26')]);if(_0x6adc1[_0x9e01('0x27')]){delete _0x6adc1[_0x9e01('0x27')];}_0x8fbe67[_0x9e01('0x17')](_0x39cb8d)['send'](_0x6adc1);};}exports[_0x9e01('0x28')]=function(_0x58e652,_0x1149cc){var _0x1991c1={},_0x633dd8={},_0x14871d={'count':0x0,'rows':[]};var _0x5588a4=_['map'](db[_0x9e01('0x29')][_0x9e01('0x2a')],function(_0x9dc633){return{'name':_0x9dc633[_0x9e01('0x2b')],'type':_0x9dc633[_0x9e01('0x2c')][_0x9e01('0x2d')]};});_0x633dd8[_0x9e01('0x2e')]=_[_0x9e01('0x2f')](_0x5588a4,_0x9e01('0x27'));_0x633dd8[_0x9e01('0x30')]=_['keys'](_0x58e652[_0x9e01('0x30')]);_0x633dd8[_0x9e01('0x31')]=_['intersection'](_0x633dd8[_0x9e01('0x2e')],_0x633dd8['query']);_0x1991c1[_0x9e01('0x32')]=_[_0x9e01('0x33')](_0x633dd8[_0x9e01('0x2e')],qs['fields'](_0x58e652[_0x9e01('0x30')]['fields']));_0x1991c1[_0x9e01('0x32')]=_0x1991c1[_0x9e01('0x32')][_0x9e01('0x34')]?_0x1991c1[_0x9e01('0x32')]:_0x633dd8[_0x9e01('0x2e')];if(!_0x58e652[_0x9e01('0x30')][_0x9e01('0x35')](_0x9e01('0x36'))){_0x1991c1[_0x9e01('0x1b')]=qs[_0x9e01('0x1b')](_0x58e652['query']['limit']);_0x1991c1[_0x9e01('0x1d')]=qs[_0x9e01('0x1d')](_0x58e652[_0x9e01('0x30')][_0x9e01('0x1d')]);}_0x1991c1[_0x9e01('0x37')]=qs['sort'](_0x58e652[_0x9e01('0x30')][_0x9e01('0x38')]);_0x1991c1[_0x9e01('0x39')]=qs[_0x9e01('0x31')](_[_0x9e01('0x3a')](_0x58e652[_0x9e01('0x30')],_0x633dd8[_0x9e01('0x31')]),_0x5588a4);if(_0x58e652[_0x9e01('0x30')]['filter']){_0x1991c1['where']=_[_0x9e01('0x3b')](_0x1991c1[_0x9e01('0x39')],{'$or':_[_0x9e01('0x2f')](_0x5588a4,function(_0x2d4c32){if(_0x2d4c32[_0x9e01('0x2c')]!=='VIRTUAL'){var _0xbbcf00={};_0xbbcf00[_0x2d4c32[_0x9e01('0x27')]]={'$like':'%'+_0x58e652['query'][_0x9e01('0x3c')]+'%'};return _0xbbcf00;}})});}_0x1991c1=_[_0x9e01('0x3b')]({},_0x1991c1,_0x58e652[_0x9e01('0x3d')]);var _0x2cbf78={'where':_0x1991c1[_0x9e01('0x39')]};return db[_0x9e01('0x29')]['count'](_0x2cbf78)[_0x9e01('0x22')](function(_0x38d337){_0x14871d[_0x9e01('0x1c')]=_0x38d337;if(_0x58e652[_0x9e01('0x30')][_0x9e01('0x3e')]){_0x1991c1['include']=[{'all':!![]}];}return db[_0x9e01('0x29')][_0x9e01('0x3f')](_0x1991c1);})[_0x9e01('0x22')](function(_0x181290){_0x14871d['rows']=_0x181290;return _0x14871d;})[_0x9e01('0x22')](respondWithFilteredResult(_0x1149cc,_0x1991c1))[_0x9e01('0x40')](handleError(_0x1149cc,null));};exports[_0x9e01('0x41')]=function(_0x28fb11,_0x3c1ac9){var _0x2065e4={'raw':!![],'where':{'id':_0x28fb11['params']['id']}},_0x1ffbbf={};_0x1ffbbf[_0x9e01('0x2e')]=_[_0x9e01('0x42')](db[_0x9e01('0x29')]['rawAttributes']);_0x1ffbbf[_0x9e01('0x30')]=_[_0x9e01('0x42')](_0x28fb11[_0x9e01('0x30')]);_0x1ffbbf[_0x9e01('0x31')]=_[_0x9e01('0x33')](_0x1ffbbf[_0x9e01('0x2e')],_0x1ffbbf[_0x9e01('0x30')]);_0x2065e4['attributes']=_[_0x9e01('0x33')](_0x1ffbbf[_0x9e01('0x2e')],qs[_0x9e01('0x43')](_0x28fb11[_0x9e01('0x30')][_0x9e01('0x43')]));_0x2065e4[_0x9e01('0x32')]=_0x2065e4[_0x9e01('0x32')]['length']?_0x2065e4['attributes']:_0x1ffbbf[_0x9e01('0x2e')];if(_0x28fb11[_0x9e01('0x30')]['includeAll']){_0x2065e4[_0x9e01('0x44')]=[{'all':!![]}];}_0x2065e4=_[_0x9e01('0x3b')]({},_0x2065e4,_0x28fb11['options']);return db[_0x9e01('0x29')][_0x9e01('0x45')](_0x2065e4)[_0x9e01('0x22')](handleEntityNotFound(_0x3c1ac9,null))[_0x9e01('0x22')](respondWithResult(_0x3c1ac9,null))[_0x9e01('0x40')](handleError(_0x3c1ac9,null));};exports['create']=function(_0x579f26,_0x31fcf7){return db[_0x9e01('0x29')][_0x9e01('0x46')](_0x579f26[_0x9e01('0x47')],{})[_0x9e01('0x22')](respondWithResult(_0x31fcf7,0xc9))['catch'](handleError(_0x31fcf7,null));};exports[_0x9e01('0x21')]=function(_0x3fd457,_0x43babc){if(_0x3fd457[_0x9e01('0x47')]['id']){delete _0x3fd457[_0x9e01('0x47')]['id'];}return db[_0x9e01('0x29')]['find']({'where':{'id':_0x3fd457[_0x9e01('0x48')]['id']}})['then'](handleEntityNotFound(_0x43babc,null))[_0x9e01('0x22')](saveUpdates(_0x3fd457[_0x9e01('0x47')],null))['then'](respondWithResult(_0x43babc,null))[_0x9e01('0x40')](handleError(_0x43babc,null));};exports[_0x9e01('0x23')]=function(_0x158e63,_0x27fe37){return db['FreshsalesField']['find']({'where':{'id':_0x158e63[_0x9e01('0x48')]['id']}})['then'](handleEntityNotFound(_0x27fe37,null))[_0x9e01('0x22')](removeEntity(_0x27fe37,null))[_0x9e01('0x40')](handleError(_0x27fe37,null));};
\ No newline at end of file
index 1d0e256..8ea276b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x341c=['rimraf','../../config/environment','./intFreshsalesField.attributes','exports','define','FreshsalesField','int_freshsales_fields','freshsales_unique_index','FieldId','lodash','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x2080a3,_0x48acfa){var _0x8d7d17=function(_0x2dbc06){while(--_0x2dbc06){_0x2080a3['push'](_0x2080a3['shift']());}};_0x8d7d17(++_0x48acfa);}(_0x341c,0xcc));var _0xc341=function(_0x161cb1,_0x7930a){_0x161cb1=_0x161cb1-0x0;var _0x36dd92=_0x341c[_0x161cb1];return _0x36dd92;};'use strict';var _=require(_0xc341('0x0'));var util=require('util');var logger=require(_0xc341('0x1'))('api');var moment=require(_0xc341('0x2'));var BPromise=require(_0xc341('0x3'));var rp=require(_0xc341('0x4'));var fs=require('fs');var path=require(_0xc341('0x5'));var rimraf=require(_0xc341('0x6'));var config=require(_0xc341('0x7'));var attributes=require(_0xc341('0x8'));module[_0xc341('0x9')]=function(_0x5226bd,_0xf9fe84){return _0x5226bd[_0xc341('0xa')](_0xc341('0xb'),attributes,{'tableName':_0xc341('0xc'),'paranoid':![],'indexes':[{'name':_0xc341('0xd'),'fields':['idField',_0xc341('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8603=['util','../../config/logger','api','request-promise','path','rimraf','./intFreshsalesField.attributes','define','FreshsalesField','int_freshsales_fields'];(function(_0x183f0a,_0x2fff11){var _0xa7d99c=function(_0x19e105){while(--_0x19e105){_0x183f0a['push'](_0x183f0a['shift']());}};_0xa7d99c(++_0x2fff11);}(_0x8603,0x190));var _0x3860=function(_0x599a0f,_0x4ce2d9){_0x599a0f=_0x599a0f-0x0;var _0x392039=_0x8603[_0x599a0f];return _0x392039;};'use strict';var _=require('lodash');var util=require(_0x3860('0x0'));var logger=require(_0x3860('0x1'))(_0x3860('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3860('0x3'));var fs=require('fs');var path=require(_0x3860('0x4'));var rimraf=require(_0x3860('0x5'));var config=require('../../config/environment');var attributes=require(_0x3860('0x6'));module['exports']=function(_0xb0fc24,_0x40739b){return _0xb0fc24[_0x3860('0x7')](_0x3860('0x8'),attributes,{'tableName':_0x3860('0x9'),'paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index edbc721..eaec96a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeff8=['util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','lodash'];(function(_0xd14e26,_0x182735){var _0x15e428=function(_0x4aa194){while(--_0x4aa194){_0xd14e26['push'](_0xd14e26['shift']());}};_0x15e428(++_0x182735);}(_0xeff8,0x186));var _0x8eff=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0xeff8[_0x173441];return _0x2423a8;};'use strict';var _=require(_0x8eff('0x0'));var util=require(_0x8eff('0x1'));var moment=require('moment');var BPromise=require(_0x8eff('0x2'));var rs=require(_0x8eff('0x3'));var fs=require('fs');var Redis=require(_0x8eff('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8eff('0x5'));var logger=require(_0x8eff('0x6'))(_0x8eff('0x7'));var config=require(_0x8eff('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x8eff('0x9')][_0x8eff('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3409bc,_0x323b2,_0x491f01){return new BPromise(function(_0x3fb9ee,_0x19557f){return client[_0x8eff('0xb')](_0x3409bc,_0x491f01)[_0x8eff('0xc')](function(_0x5bd403){logger['info'](_0x8eff('0xd'),_0x323b2,_0x8eff('0xe'));logger[_0x8eff('0xf')]('FreshsalesField,\x20%s,\x20%s,\x20%s',_0x323b2,_0x8eff('0xe'),JSON[_0x8eff('0x10')](_0x5bd403));if(_0x5bd403['error']){if(_0x5bd403[_0x8eff('0x11')][_0x8eff('0x12')]===0x1f4){logger['error']('FreshsalesField,\x20%s,\x20%s',_0x323b2,_0x5bd403[_0x8eff('0x11')][_0x8eff('0x13')]);return _0x19557f(_0x5bd403[_0x8eff('0x11')][_0x8eff('0x13')]);}logger[_0x8eff('0x11')]('FreshsalesField,\x20%s,\x20%s',_0x323b2,_0x5bd403[_0x8eff('0x11')][_0x8eff('0x13')]);return _0x3fb9ee(_0x5bd403[_0x8eff('0x11')][_0x8eff('0x13')]);}else{logger[_0x8eff('0x14')](_0x8eff('0xd'),_0x323b2,_0x8eff('0xe'));_0x3fb9ee(_0x5bd403[_0x8eff('0x15')][_0x8eff('0x13')]);}})[_0x8eff('0x16')](function(_0x137344){logger['error'](_0x8eff('0xd'),_0x323b2,_0x137344);_0x19557f(_0x137344);});});}
\ No newline at end of file
+var _0x2bd8=['info','request\x20sent','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','FreshsalesField,\x20%s,\x20%s','FreshsalesField,\x20%s,\x20%s,\x20%s','error','message'];(function(_0x4a2d95,_0x58576a){var _0x58831c=function(_0x3a8e17){while(--_0x3a8e17){_0x4a2d95['push'](_0x4a2d95['shift']());}};_0x58831c(++_0x58576a);}(_0x2bd8,0x130));var _0x82bd=function(_0xd2c6e7,_0x5331bb){_0xd2c6e7=_0xd2c6e7-0x0;var _0x472660=_0x2bd8[_0xd2c6e7];return _0x472660;};'use strict';var _=require(_0x82bd('0x0'));var util=require('util');var moment=require(_0x82bd('0x1'));var BPromise=require(_0x82bd('0x2'));var rs=require(_0x82bd('0x3'));var fs=require('fs');var Redis=require(_0x82bd('0x4'));var db=require(_0x82bd('0x5'))['db'];var utils=require(_0x82bd('0x6'));var logger=require(_0x82bd('0x7'))('rpc');var config=require(_0x82bd('0x8'));var jayson=require(_0x82bd('0x9'));var client=jayson[_0x82bd('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x19dbb1,_0x77d7a9,_0x226f60){return new BPromise(function(_0x1f7463,_0x4dc3a6){return client[_0x82bd('0xb')](_0x19dbb1,_0x226f60)['then'](function(_0x4a9b2c){logger['info'](_0x82bd('0xc'),_0x77d7a9,'request\x20sent');logger['debug'](_0x82bd('0xd'),_0x77d7a9,'request\x20sent',JSON['stringify'](_0x4a9b2c));if(_0x4a9b2c[_0x82bd('0xe')]){if(_0x4a9b2c[_0x82bd('0xe')]['code']===0x1f4){logger[_0x82bd('0xe')]('FreshsalesField,\x20%s,\x20%s',_0x77d7a9,_0x4a9b2c[_0x82bd('0xe')]['message']);return _0x4dc3a6(_0x4a9b2c[_0x82bd('0xe')][_0x82bd('0xf')]);}logger[_0x82bd('0xe')](_0x82bd('0xc'),_0x77d7a9,_0x4a9b2c['error'][_0x82bd('0xf')]);return _0x1f7463(_0x4a9b2c[_0x82bd('0xe')]['message']);}else{logger[_0x82bd('0x10')]('FreshsalesField,\x20%s,\x20%s',_0x77d7a9,_0x82bd('0x11'));_0x1f7463(_0x4a9b2c[_0x82bd('0x12')][_0x82bd('0xf')]);}})[_0x82bd('0x13')](function(_0x209081){logger[_0x82bd('0xe')](_0x82bd('0xc'),_0x77d7a9,_0x209081);_0x4dc3a6(_0x209081);});});}
\ No newline at end of file
index f3fae6a..163bca0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x401790,_0x1af7a6){var _0x2e80dd=function(_0x156b38){while(--_0x156b38){_0x401790['push'](_0x401790['shift']());}};_0x2e80dd(++_0x1af7a6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa9e0[_0x5c351c];return _0x26f3b3;};'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','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x4bea87,_0x5d2117){var _0x4c309a=function(_0x32ef69){while(--_0x32ef69){_0x4bea87['push'](_0x4bea87['shift']());}};_0x4c309a(++_0x5d2117);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index 6f35fc9..fd87f81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1131=['integrationTab','newTab','sequelize','exports','STRING','ENUM'];(function(_0x4f7987,_0x3af1f3){var _0x1becb2=function(_0x541562){while(--_0x541562){_0x4f7987['push'](_0x4f7987['shift']());}};_0x1becb2(++_0x3af1f3);}(_0x1131,0x1c4));var _0x1113=function(_0x77a170,_0x2ddfd8){_0x77a170=_0x77a170-0x0;var _0x1db33f=_0x1131[_0x77a170];return _0x1db33f;};'use strict';var Sequelize=require(_0x1113('0x0'));module[_0x1113('0x1')]={'name':{'type':Sequelize[_0x1113('0x2')]},'description':{'type':Sequelize[_0x1113('0x2')]},'username':{'type':Sequelize[_0x1113('0x2')],'unique':'username'},'remoteUri':{'type':Sequelize[_0x1113('0x2')]},'password':{'type':Sequelize[_0x1113('0x2')]},'clientId':{'type':Sequelize[_0x1113('0x2')]},'clientSecret':{'type':Sequelize[_0x1113('0x2')]},'securityToken':{'type':Sequelize[_0x1113('0x2')]},'serverUrl':{'type':Sequelize[_0x1113('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x1113('0x3')](_0x1113('0x4'),_0x1113('0x5')),'defaultValue':_0x1113('0x4')}};
\ No newline at end of file
+var _0x1a3b=['exports','STRING','username','ENUM','integrationTab','sequelize'];(function(_0x14a434,_0x58d0b4){var _0x19fe36=function(_0x562b52){while(--_0x562b52){_0x14a434['push'](_0x14a434['shift']());}};_0x19fe36(++_0x58d0b4);}(_0x1a3b,0x83));var _0xb1a3=function(_0x2541ad,_0x4a0a3b){_0x2541ad=_0x2541ad-0x0;var _0x1aafac=_0x1a3b[_0x2541ad];return _0x1aafac;};'use strict';var Sequelize=require(_0xb1a3('0x0'));module[_0xb1a3('0x1')]={'name':{'type':Sequelize[_0xb1a3('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xb1a3('0x2')],'unique':_0xb1a3('0x3')},'remoteUri':{'type':Sequelize[_0xb1a3('0x2')]},'password':{'type':Sequelize[_0xb1a3('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0xb1a3('0x2')]},'securityToken':{'type':Sequelize[_0xb1a3('0x2')]},'serverUrl':{'type':Sequelize[_0xb1a3('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xb1a3('0x4')](_0xb1a3('0x5'),'newTab'),'defaultValue':_0xb1a3('0x5')}};
\ No newline at end of file
index 66c263b..c005349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ef8=['rows','catch','params','keys','create','body','find','getConfigurations','SalesforceConfiguration','pick','hasOwnProperty','addConfiguration','findOne','getSubjects','channel','Descriptions','SalesforceField','Subjects','remoteUri','clientId','username','password','slice','lastIndexOf','clientSecret','securityToken','isNil','sobject','describe','OwnerId','IsRecurrence','Subject','Description','string','picklist','boolean','textarea','phone','remove','includes','label','picklistValues','value','True','False','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','fast-json-patch','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','undefined','count','offset','limit','set','json','apply','reject','save','update','destroy','then','stack','name','send','index','SalesforceAccount','rawAttributes','fieldName','type','key','map','query','filters','intersection','model','fields','attributes','length','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll'];(function(_0x4d885a,_0x57fb79){var _0x3b43fd=function(_0x3136c1){while(--_0x3136c1){_0x4d885a['push'](_0x4d885a['shift']());}};_0x3b43fd(++_0x57fb79);}(_0x9ef8,0xa5));var _0x89ef=function(_0x254081,_0x20731a){_0x254081=_0x254081-0x0;var _0x5d1e2a=_0x9ef8[_0x254081];return _0x5d1e2a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x89ef('0x0'));var rp=require('request-promise');var moment=require(_0x89ef('0x1'));var BPromise=require('bluebird');var Mustache=require(_0x89ef('0x2'));var util=require(_0x89ef('0x3'));var path=require(_0x89ef('0x4'));var sox=require(_0x89ef('0x5'));var csv=require('to-csv');var ejs=require(_0x89ef('0x6'));var fs=require('fs');var fs_extra=require(_0x89ef('0x7'));var _=require(_0x89ef('0x8'));var squel=require(_0x89ef('0x9'));var crypto=require(_0x89ef('0xa'));var jsforce=require(_0x89ef('0xb'));var deskjs=require(_0x89ef('0xc'));var toCsv=require(_0x89ef('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x89ef('0xe'));var authService=require(_0x89ef('0xf'));var qs=require(_0x89ef('0x10'));var as=require(_0x89ef('0x11'));var hardwareService=require(_0x89ef('0x12'));var logger=require(_0x89ef('0x13'))(_0x89ef('0x14'));var utils=require(_0x89ef('0x15'));var config=require(_0x89ef('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x89ef('0x17'))['db'];var integrations=require(_0x89ef('0x18'));function respondWithStatusCode(_0x2b4795,_0x45e8fd){_0x45e8fd=_0x45e8fd||0xcc;return function(_0x423ea1){if(_0x423ea1){return _0x2b4795[_0x89ef('0x19')](_0x45e8fd);}return _0x2b4795['status'](_0x45e8fd)[_0x89ef('0x1a')]();};}function respondWithResult(_0x428c94,_0x1e304e){_0x1e304e=_0x1e304e||0xc8;return function(_0x35397c){if(_0x35397c){return _0x428c94[_0x89ef('0x1b')](_0x1e304e)['json'](_0x35397c);}};}function respondWithFilteredResult(_0x2a3c7a,_0x361376){return function(_0x5f1a79){if(_0x5f1a79){var _0x32514e=typeof _0x361376['offset']===_0x89ef('0x1c')&&typeof _0x361376['limit']===_0x89ef('0x1c');var _0x5cae28=_0x5f1a79[_0x89ef('0x1d')];var _0x42f34a=_0x32514e?0x0:_0x361376['offset'];var _0x27fe64=_0x32514e?_0x5f1a79[_0x89ef('0x1d')]:_0x361376[_0x89ef('0x1e')]+_0x361376[_0x89ef('0x1f')];var _0x46df40;if(_0x27fe64>=_0x5cae28){_0x27fe64=_0x5cae28;_0x46df40=0xc8;}else{_0x46df40=0xce;}_0x2a3c7a[_0x89ef('0x1b')](_0x46df40);return _0x2a3c7a[_0x89ef('0x20')]('Content-Range',_0x42f34a+'-'+_0x27fe64+'/'+_0x5cae28)[_0x89ef('0x21')](_0x5f1a79);}return null;};}function patchUpdates(_0x48167e){return function(_0x376c60){try{jsonpatch[_0x89ef('0x22')](_0x376c60,_0x48167e,!![]);}catch(_0x58e2cd){return BPromise[_0x89ef('0x23')](_0x58e2cd);}return _0x376c60[_0x89ef('0x24')]();};}function saveUpdates(_0x1ab6f3,_0x2b76b6){return function(_0x1ea5c5){if(_0x1ea5c5){return _0x1ea5c5[_0x89ef('0x25')](_0x1ab6f3)['then'](function(_0x597b4d){return _0x597b4d;});}return null;};}function removeEntity(_0x396332,_0x4711ef){return function(_0x4e76da){if(_0x4e76da){return _0x4e76da[_0x89ef('0x26')]()[_0x89ef('0x27')](function(){_0x396332[_0x89ef('0x1b')](0xcc)[_0x89ef('0x1a')]();});}};}function handleEntityNotFound(_0x6308e3,_0x4abb5a){return function(_0x51e468){if(!_0x51e468){_0x6308e3[_0x89ef('0x19')](0x194);}return _0x51e468;};}function handleError(_0x5f45c9,_0x413699){_0x413699=_0x413699||0x1f4;return function(_0x4b2d95){logger['error'](_0x4b2d95[_0x89ef('0x28')]);if(_0x4b2d95[_0x89ef('0x29')]){delete _0x4b2d95[_0x89ef('0x29')];}_0x5f45c9['status'](_0x413699)[_0x89ef('0x2a')](_0x4b2d95);};}exports[_0x89ef('0x2b')]=function(_0x22f6b6,_0x3f6203){var _0x5e41ee={},_0x1bd396={},_0xcb8cdd={'count':0x0,'rows':[]};var _0xd88a93=_['map'](db[_0x89ef('0x2c')][_0x89ef('0x2d')],function(_0x3f4a6a){return{'name':_0x3f4a6a[_0x89ef('0x2e')],'type':_0x3f4a6a[_0x89ef('0x2f')][_0x89ef('0x30')]};});_0x1bd396['model']=_[_0x89ef('0x31')](_0xd88a93,_0x89ef('0x29'));_0x1bd396[_0x89ef('0x32')]=_['keys'](_0x22f6b6['query']);_0x1bd396[_0x89ef('0x33')]=_[_0x89ef('0x34')](_0x1bd396['model'],_0x1bd396[_0x89ef('0x32')]);_0x5e41ee['attributes']=_[_0x89ef('0x34')](_0x1bd396[_0x89ef('0x35')],qs[_0x89ef('0x36')](_0x22f6b6[_0x89ef('0x32')][_0x89ef('0x36')]));_0x5e41ee[_0x89ef('0x37')]=_0x5e41ee[_0x89ef('0x37')][_0x89ef('0x38')]?_0x5e41ee[_0x89ef('0x37')]:_0x1bd396[_0x89ef('0x35')];if(!_0x22f6b6['query']['hasOwnProperty']('nolimit')){_0x5e41ee[_0x89ef('0x1f')]=qs['limit'](_0x22f6b6[_0x89ef('0x32')][_0x89ef('0x1f')]);_0x5e41ee[_0x89ef('0x1e')]=qs[_0x89ef('0x1e')](_0x22f6b6['query'][_0x89ef('0x1e')]);}_0x5e41ee[_0x89ef('0x39')]=qs[_0x89ef('0x3a')](_0x22f6b6[_0x89ef('0x32')][_0x89ef('0x3a')]);_0x5e41ee[_0x89ef('0x3b')]=qs[_0x89ef('0x33')](_['pick'](_0x22f6b6[_0x89ef('0x32')],_0x1bd396['filters']),_0xd88a93);if(_0x22f6b6[_0x89ef('0x32')][_0x89ef('0x3c')]){_0x5e41ee['where']=_['merge'](_0x5e41ee[_0x89ef('0x3b')],{'$or':_[_0x89ef('0x31')](_0xd88a93,function(_0x52d881){if(_0x52d881[_0x89ef('0x2f')]!==_0x89ef('0x3d')){var _0x31ec1f={};_0x31ec1f[_0x52d881[_0x89ef('0x29')]]={'$like':'%'+_0x22f6b6['query'][_0x89ef('0x3c')]+'%'};return _0x31ec1f;}})});}_0x5e41ee=_[_0x89ef('0x3e')]({},_0x5e41ee,_0x22f6b6[_0x89ef('0x3f')]);var _0x4179b8={'where':_0x5e41ee['where']};return db[_0x89ef('0x2c')][_0x89ef('0x1d')](_0x4179b8)[_0x89ef('0x27')](function(_0x250dc6){_0xcb8cdd['count']=_0x250dc6;if(_0x22f6b6[_0x89ef('0x32')][_0x89ef('0x40')]){_0x5e41ee[_0x89ef('0x41')]=[{'all':!![]}];}return db[_0x89ef('0x2c')][_0x89ef('0x42')](_0x5e41ee);})[_0x89ef('0x27')](function(_0x58da06){_0xcb8cdd[_0x89ef('0x43')]=_0x58da06;return _0xcb8cdd;})[_0x89ef('0x27')](respondWithFilteredResult(_0x3f6203,_0x5e41ee))[_0x89ef('0x44')](handleError(_0x3f6203,null));};exports['show']=function(_0x39d434,_0x2ba209){var _0x18deca={'raw':![],'where':{'id':_0x39d434[_0x89ef('0x45')]['id']}},_0x1be49c={};_0x1be49c[_0x89ef('0x35')]=_[_0x89ef('0x46')](db['SalesforceAccount'][_0x89ef('0x2d')]);_0x1be49c['query']=_[_0x89ef('0x46')](_0x39d434[_0x89ef('0x32')]);_0x1be49c[_0x89ef('0x33')]=_[_0x89ef('0x34')](_0x1be49c['model'],_0x1be49c[_0x89ef('0x32')]);_0x18deca[_0x89ef('0x37')]=_[_0x89ef('0x34')](_0x1be49c[_0x89ef('0x35')],qs[_0x89ef('0x36')](_0x39d434[_0x89ef('0x32')][_0x89ef('0x36')]));_0x18deca['attributes']=_0x18deca[_0x89ef('0x37')]['length']?_0x18deca[_0x89ef('0x37')]:_0x1be49c[_0x89ef('0x35')];if(_0x39d434[_0x89ef('0x32')][_0x89ef('0x40')]){_0x18deca[_0x89ef('0x41')]=[{'all':!![]}];}_0x18deca=_[_0x89ef('0x3e')]({},_0x18deca,_0x39d434[_0x89ef('0x3f')]);return db['SalesforceAccount']['find'](_0x18deca)['then'](handleEntityNotFound(_0x2ba209,null))[_0x89ef('0x27')](respondWithResult(_0x2ba209,null))[_0x89ef('0x44')](handleError(_0x2ba209,null));};exports['create']=function(_0x2fd8f5,_0x28ea0a){return db[_0x89ef('0x2c')][_0x89ef('0x47')](_0x2fd8f5[_0x89ef('0x48')],{})[_0x89ef('0x27')](respondWithResult(_0x28ea0a,0xc9))[_0x89ef('0x44')](handleError(_0x28ea0a,null));};exports['update']=function(_0x51e354,_0x565ce0){if(_0x51e354['body']['id']){delete _0x51e354[_0x89ef('0x48')]['id'];}return db['SalesforceAccount'][_0x89ef('0x49')]({'where':{'id':_0x51e354[_0x89ef('0x45')]['id']}})['then'](handleEntityNotFound(_0x565ce0,null))[_0x89ef('0x27')](saveUpdates(_0x51e354[_0x89ef('0x48')],null))['then'](respondWithResult(_0x565ce0,null))[_0x89ef('0x44')](handleError(_0x565ce0,null));};exports[_0x89ef('0x26')]=function(_0xc64ca8,_0x3a0b1f){return db[_0x89ef('0x2c')]['find']({'where':{'id':_0xc64ca8[_0x89ef('0x45')]['id']}})[_0x89ef('0x27')](handleEntityNotFound(_0x3a0b1f,null))[_0x89ef('0x27')](removeEntity(_0x3a0b1f,null))[_0x89ef('0x44')](handleError(_0x3a0b1f,null));};exports[_0x89ef('0x4a')]=function(_0x443ac8,_0x1b33ac,_0x3274a1){var _0x1d94d6={};var _0x3a21d1={};var _0x47e437;var _0x4d6853;return db[_0x89ef('0x2c')]['findOne']({'where':{'id':_0x443ac8['params']['id']}})[_0x89ef('0x27')](handleEntityNotFound(_0x1b33ac,null))['then'](function(_0x583bf2){if(_0x583bf2){_0x47e437=_0x583bf2;_0x3a21d1['model']=_[_0x89ef('0x46')](db[_0x89ef('0x4b')][_0x89ef('0x2d')]);_0x3a21d1[_0x89ef('0x32')]=_[_0x89ef('0x46')](_0x443ac8[_0x89ef('0x32')]);_0x3a21d1[_0x89ef('0x33')]=_[_0x89ef('0x34')](_0x3a21d1['model'],_0x3a21d1[_0x89ef('0x32')]);_0x1d94d6[_0x89ef('0x37')]=_[_0x89ef('0x34')](_0x3a21d1[_0x89ef('0x35')],qs[_0x89ef('0x36')](_0x443ac8[_0x89ef('0x32')]['fields']));_0x1d94d6[_0x89ef('0x37')]=_0x1d94d6[_0x89ef('0x37')][_0x89ef('0x38')]?_0x1d94d6['attributes']:_0x3a21d1[_0x89ef('0x35')];_0x1d94d6['order']=qs[_0x89ef('0x3a')](_0x443ac8[_0x89ef('0x32')][_0x89ef('0x3a')]);_0x1d94d6[_0x89ef('0x3b')]=qs[_0x89ef('0x33')](_[_0x89ef('0x4c')](_0x443ac8['query'],_0x3a21d1[_0x89ef('0x33')]));if(_0x443ac8[_0x89ef('0x32')][_0x89ef('0x3c')]){_0x1d94d6[_0x89ef('0x3b')]=_[_0x89ef('0x3e')](_0x1d94d6[_0x89ef('0x3b')],{'$or':_[_0x89ef('0x31')](_0x1d94d6[_0x89ef('0x37')],function(_0x1c8038){var _0x31afc7={};_0x31afc7[_0x1c8038]={'$like':'%'+_0x443ac8[_0x89ef('0x32')][_0x89ef('0x3c')]+'%'};return _0x31afc7;})});}_0x1d94d6=_[_0x89ef('0x3e')]({},_0x1d94d6,_0x443ac8[_0x89ef('0x3f')]);return _0x47e437[_0x89ef('0x4a')](_0x1d94d6);}})[_0x89ef('0x27')](function(_0xba5e5a){if(_0xba5e5a){_0x4d6853=_0xba5e5a[_0x89ef('0x38')];if(!_0x443ac8[_0x89ef('0x32')][_0x89ef('0x4d')]('nolimit')){_0x1d94d6[_0x89ef('0x1f')]=qs[_0x89ef('0x1f')](_0x443ac8['query'][_0x89ef('0x1f')]);_0x1d94d6[_0x89ef('0x1e')]=qs[_0x89ef('0x1e')](_0x443ac8[_0x89ef('0x32')][_0x89ef('0x1e')]);}return _0x47e437['getConfigurations'](_0x1d94d6);}})[_0x89ef('0x27')](function(_0x2ddc42){if(_0x2ddc42){return _0x2ddc42?{'count':_0x4d6853,'rows':_0x2ddc42}:null;}})['then'](respondWithResult(_0x1b33ac,null))[_0x89ef('0x44')](handleError(_0x1b33ac,null));};exports[_0x89ef('0x4e')]=function(_0xc65703,_0x1432a8,_0x17b4fa){if(_0xc65703[_0x89ef('0x48')]['id']){delete _0xc65703['body']['id'];}return db['SalesforceAccount'][_0x89ef('0x4f')]({'where':{'id':_0xc65703[_0x89ef('0x45')]['id']}})[_0x89ef('0x27')](handleEntityNotFound(_0x1432a8,null))[_0x89ef('0x27')](function(_0x155ae9){if(_0x155ae9){_0xc65703[_0x89ef('0x48')]['AccountId']=_0x155ae9['id'];_0xc65703[_0x89ef('0x48')]['Subjects']=integrations[_0x89ef('0x50')](_0xc65703[_0x89ef('0x48')][_0x89ef('0x51')],_0xc65703[_0x89ef('0x48')][_0x89ef('0x2f')]);_0xc65703[_0x89ef('0x48')][_0x89ef('0x52')]=integrations['getDescriptions'](_0xc65703[_0x89ef('0x48')][_0x89ef('0x51')],_0xc65703[_0x89ef('0x48')]['type']);return db[_0x89ef('0x4b')]['create'](_0xc65703['body'],{'include':[{'model':db[_0x89ef('0x53')],'as':_0x89ef('0x54')},{'model':db[_0x89ef('0x53')],'as':_0x89ef('0x52')}]});}return null;})[_0x89ef('0x27')](respondWithResult(_0x1432a8,null))[_0x89ef('0x44')](handleError(_0x1432a8,null));};exports['getFields']=function(_0x8adf24,_0x2463c3,_0x38d697){var _0x25511a;var _0x157383='';var _0x4a8446='Task';return db[_0x89ef('0x2c')]['findOne']({'where':{'id':_0x8adf24[_0x89ef('0x45')]['id']},'attributes':['id',_0x89ef('0x55'),_0x89ef('0x56'),'clientSecret',_0x89ef('0x57'),_0x89ef('0x58'),'securityToken']})['then'](handleEntityNotFound(_0x2463c3,null))[_0x89ef('0x27')](function(_0xdab80c){if(_0xdab80c){_0x157383=_0xdab80c['remoteUri'];var _0x5853ff=_0x157383[_0x89ef('0x59')](-0x1);if(_0x5853ff==='/'){_0x157383=_0x157383['substring'](0x0,_0x157383[_0x89ef('0x5a')](_0x5853ff));}_0x25511a=new jsforce['Connection']({'oauth2':{'loginUrl':_0x157383,'clientId':_0xdab80c[_0x89ef('0x56')],'clientSecret':_0xdab80c[_0x89ef('0x5b')]}});return _0x25511a['login'](_0xdab80c[_0x89ef('0x57')],_0xdab80c[_0x89ef('0x58')]['concat'](_0xdab80c[_0x89ef('0x5c')]));}})[_0x89ef('0x27')](function(_0xb230d5){if(_0xb230d5){if(!_[_0x89ef('0x5d')](_0x8adf24[_0x89ef('0x32')]['ticketType'])){_0x4a8446=_0x8adf24[_0x89ef('0x32')]['ticketType'];}return _0x25511a[_0x89ef('0x5e')](_0x4a8446)[_0x89ef('0x5f')]();}})[_0x89ef('0x27')](function(_0x56c28a){var _0x3dcb33=[_0x89ef('0x60'),'ActivityDate','IsReminderSet',_0x89ef('0x61'),_0x89ef('0x62'),_0x89ef('0x63')];var _0x22efc6=[_0x89ef('0x64'),'int',_0x89ef('0x65'),_0x89ef('0x66'),'email',_0x89ef('0x67'),_0x89ef('0x68')];if(_0x56c28a){_[_0x89ef('0x69')](_0x56c28a[_0x89ef('0x36')],function(_0x577a11){return _0x3dcb33[_0x89ef('0x6a')](_0x577a11[_0x89ef('0x29')])||!_0x22efc6['includes'](_0x577a11[_0x89ef('0x2f')]);});return{'count':_0x56c28a[_0x89ef('0x36')][_0x89ef('0x38')],'rows':_[_0x89ef('0x31')](_0x56c28a[_0x89ef('0x36')],function(_0x4faec7){return{'id':_0x4faec7[_0x89ef('0x29')],'name':_0x4faec7[_0x89ef('0x6b')],'custom':_0x4faec7['custom'],'options':_0x4faec7[_0x89ef('0x6c')]['length']>0x0?_[_0x89ef('0x31')](_0x4faec7[_0x89ef('0x6c')],function(_0x31b2a1){return{'name':_0x31b2a1[_0x89ef('0x6b')],'value':_0x31b2a1[_0x89ef('0x6d')]};}):_0x4faec7['type']==_0x89ef('0x66')?[{'name':_0x89ef('0x6e'),'value':'true'},{'name':_0x89ef('0x6f'),'value':'false'}]:[]};})};}})[_0x89ef('0x27')](respondWithResult(_0x2463c3,null))['catch'](function(_0x310ee4){var _0x37bd6d=_0x8adf24[_0x89ef('0x32')][_0x89ef('0x70')]?0x1f4:_0x310ee4[_0x89ef('0x71')]||0x1f4;logger[_0x89ef('0x72')](_0x89ef('0x73'),'getFields',_0x37bd6d,JSON['stringify'](_0x310ee4));delete _0x310ee4['name'];if(_0x37bd6d===0x191){_0x37bd6d=0x190;}_0x2463c3[_0x89ef('0x1b')](_0x37bd6d)[_0x89ef('0x2a')](_0x8adf24[_0x89ef('0x32')][_0x89ef('0x70')]?{'message':'Wrong\x20credentials','statusCode':_0x310ee4[_0x89ef('0x71')]}:_0x310ee4);});};
\ No newline at end of file
+var _0x2d2f=['undefined','limit','count','status','set','Content-Range','apply','reject','then','error','send','index','map','SalesforceAccount','rawAttributes','fieldName','type','key','model','name','query','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','show','params','keys','find','create','body','destroy','getConfigurations','findOne','SalesforceConfiguration','nolimit','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','SalesforceField','getFields','remoteUri','clientId','clientSecret','password','securityToken','slice','lastIndexOf','username','concat','isNil','sobject','describe','OwnerId','ActivityDate','IsRecurrence','string','int','picklist','email','includes','length','label','custom','picklistValues','boolean','True','true','false','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','json','offset'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x2d2f,0x1be));var _0xf2d2=function(_0x1f0cbd,_0x2d5ff5){_0x1f0cbd=_0x1f0cbd-0x0;var _0x229cc8=_0x2d2f[_0x1f0cbd];return _0x229cc8;};'use strict';var emlformat=require(_0xf2d2('0x0'));var rimraf=require(_0xf2d2('0x1'));var zipdir=require(_0xf2d2('0x2'));var jsonpatch=require(_0xf2d2('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xf2d2('0x4'));var Mustache=require(_0xf2d2('0x5'));var util=require(_0xf2d2('0x6'));var path=require(_0xf2d2('0x7'));var sox=require('sox');var csv=require(_0xf2d2('0x8'));var ejs=require(_0xf2d2('0x9'));var fs=require('fs');var fs_extra=require(_0xf2d2('0xa'));var _=require(_0xf2d2('0xb'));var squel=require(_0xf2d2('0xc'));var crypto=require(_0xf2d2('0xd'));var jsforce=require(_0xf2d2('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xf2d2('0x8'));var querystring=require(_0xf2d2('0xf'));var Papa=require(_0xf2d2('0x10'));var Redis=require(_0xf2d2('0x11'));var authService=require(_0xf2d2('0x12'));var qs=require(_0xf2d2('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf2d2('0x14'))('api');var utils=require(_0xf2d2('0x15'));var config=require(_0xf2d2('0x16'));var licenseUtil=require(_0xf2d2('0x17'));var db=require(_0xf2d2('0x18'))['db'];var integrations=require(_0xf2d2('0x19'));function respondWithStatusCode(_0x52be6f,_0x5b2d6c){_0x5b2d6c=_0x5b2d6c||0xcc;return function(_0x531e89){if(_0x531e89){return _0x52be6f[_0xf2d2('0x1a')](_0x5b2d6c);}return _0x52be6f['status'](_0x5b2d6c)[_0xf2d2('0x1b')]();};}function respondWithResult(_0x3cd72f,_0x4a96e0){_0x4a96e0=_0x4a96e0||0xc8;return function(_0x3a505a){if(_0x3a505a){return _0x3cd72f['status'](_0x4a96e0)[_0xf2d2('0x1c')](_0x3a505a);}};}function respondWithFilteredResult(_0x2da43a,_0x21e11e){return function(_0x5d6969){if(_0x5d6969){var _0x467c6d=typeof _0x21e11e[_0xf2d2('0x1d')]===_0xf2d2('0x1e')&&typeof _0x21e11e[_0xf2d2('0x1f')]==='undefined';var _0x2fced0=_0x5d6969['count'];var _0x295a12=_0x467c6d?0x0:_0x21e11e['offset'];var _0xd81f4a=_0x467c6d?_0x5d6969[_0xf2d2('0x20')]:_0x21e11e[_0xf2d2('0x1d')]+_0x21e11e[_0xf2d2('0x1f')];var _0xb905d7;if(_0xd81f4a>=_0x2fced0){_0xd81f4a=_0x2fced0;_0xb905d7=0xc8;}else{_0xb905d7=0xce;}_0x2da43a[_0xf2d2('0x21')](_0xb905d7);return _0x2da43a[_0xf2d2('0x22')](_0xf2d2('0x23'),_0x295a12+'-'+_0xd81f4a+'/'+_0x2fced0)[_0xf2d2('0x1c')](_0x5d6969);}return null;};}function patchUpdates(_0x190234){return function(_0x45c5e0){try{jsonpatch[_0xf2d2('0x24')](_0x45c5e0,_0x190234,!![]);}catch(_0x590c6c){return BPromise[_0xf2d2('0x25')](_0x590c6c);}return _0x45c5e0['save']();};}function saveUpdates(_0xf39c82,_0x40c274){return function(_0x512c62){if(_0x512c62){return _0x512c62['update'](_0xf39c82)['then'](function(_0x2e5c5b){return _0x2e5c5b;});}return null;};}function removeEntity(_0x5f7deb,_0x48902a){return function(_0x210a5b){if(_0x210a5b){return _0x210a5b['destroy']()[_0xf2d2('0x26')](function(){_0x5f7deb[_0xf2d2('0x21')](0xcc)[_0xf2d2('0x1b')]();});}};}function handleEntityNotFound(_0x26e596,_0x2b68af){return function(_0x5d1a25){if(!_0x5d1a25){_0x26e596[_0xf2d2('0x1a')](0x194);}return _0x5d1a25;};}function handleError(_0x28d52b,_0x58a2c3){_0x58a2c3=_0x58a2c3||0x1f4;return function(_0x3963e7){logger[_0xf2d2('0x27')](_0x3963e7['stack']);if(_0x3963e7['name']){delete _0x3963e7['name'];}_0x28d52b[_0xf2d2('0x21')](_0x58a2c3)[_0xf2d2('0x28')](_0x3963e7);};}exports[_0xf2d2('0x29')]=function(_0x26f127,_0x15b660){var _0x2afb26={},_0x33db53={},_0x5a4976={'count':0x0,'rows':[]};var _0x3b31b4=_[_0xf2d2('0x2a')](db[_0xf2d2('0x2b')][_0xf2d2('0x2c')],function(_0x40a0f9){return{'name':_0x40a0f9[_0xf2d2('0x2d')],'type':_0x40a0f9[_0xf2d2('0x2e')][_0xf2d2('0x2f')]};});_0x33db53[_0xf2d2('0x30')]=_['map'](_0x3b31b4,_0xf2d2('0x31'));_0x33db53['query']=_['keys'](_0x26f127[_0xf2d2('0x32')]);_0x33db53[_0xf2d2('0x33')]=_[_0xf2d2('0x34')](_0x33db53[_0xf2d2('0x30')],_0x33db53['query']);_0x2afb26[_0xf2d2('0x35')]=_[_0xf2d2('0x34')](_0x33db53[_0xf2d2('0x30')],qs[_0xf2d2('0x36')](_0x26f127['query'][_0xf2d2('0x36')]));_0x2afb26[_0xf2d2('0x35')]=_0x2afb26[_0xf2d2('0x35')]['length']?_0x2afb26[_0xf2d2('0x35')]:_0x33db53[_0xf2d2('0x30')];if(!_0x26f127['query'][_0xf2d2('0x37')]('nolimit')){_0x2afb26['limit']=qs['limit'](_0x26f127[_0xf2d2('0x32')][_0xf2d2('0x1f')]);_0x2afb26['offset']=qs[_0xf2d2('0x1d')](_0x26f127[_0xf2d2('0x32')][_0xf2d2('0x1d')]);}_0x2afb26['order']=qs['sort'](_0x26f127[_0xf2d2('0x32')][_0xf2d2('0x38')]);_0x2afb26[_0xf2d2('0x39')]=qs['filters'](_[_0xf2d2('0x3a')](_0x26f127[_0xf2d2('0x32')],_0x33db53[_0xf2d2('0x33')]),_0x3b31b4);if(_0x26f127[_0xf2d2('0x32')]['filter']){_0x2afb26[_0xf2d2('0x39')]=_[_0xf2d2('0x3b')](_0x2afb26[_0xf2d2('0x39')],{'$or':_[_0xf2d2('0x2a')](_0x3b31b4,function(_0x441632){if(_0x441632[_0xf2d2('0x2e')]!==_0xf2d2('0x3c')){var _0x5bf175={};_0x5bf175[_0x441632[_0xf2d2('0x31')]]={'$like':'%'+_0x26f127[_0xf2d2('0x32')][_0xf2d2('0x3d')]+'%'};return _0x5bf175;}})});}_0x2afb26=_[_0xf2d2('0x3b')]({},_0x2afb26,_0x26f127[_0xf2d2('0x3e')]);var _0x306cea={'where':_0x2afb26[_0xf2d2('0x39')]};return db['SalesforceAccount'][_0xf2d2('0x20')](_0x306cea)[_0xf2d2('0x26')](function(_0x47a8a2){_0x5a4976[_0xf2d2('0x20')]=_0x47a8a2;if(_0x26f127[_0xf2d2('0x32')][_0xf2d2('0x3f')]){_0x2afb26[_0xf2d2('0x40')]=[{'all':!![]}];}return db[_0xf2d2('0x2b')]['findAll'](_0x2afb26);})[_0xf2d2('0x26')](function(_0x17ce5a){_0x5a4976[_0xf2d2('0x41')]=_0x17ce5a;return _0x5a4976;})['then'](respondWithFilteredResult(_0x15b660,_0x2afb26))[_0xf2d2('0x42')](handleError(_0x15b660,null));};exports[_0xf2d2('0x43')]=function(_0xf4f89e,_0xcfd73b){var _0x2a60b7={'raw':![],'where':{'id':_0xf4f89e[_0xf2d2('0x44')]['id']}},_0x56ae6d={};_0x56ae6d[_0xf2d2('0x30')]=_[_0xf2d2('0x45')](db[_0xf2d2('0x2b')][_0xf2d2('0x2c')]);_0x56ae6d[_0xf2d2('0x32')]=_[_0xf2d2('0x45')](_0xf4f89e['query']);_0x56ae6d[_0xf2d2('0x33')]=_[_0xf2d2('0x34')](_0x56ae6d[_0xf2d2('0x30')],_0x56ae6d[_0xf2d2('0x32')]);_0x2a60b7[_0xf2d2('0x35')]=_[_0xf2d2('0x34')](_0x56ae6d['model'],qs[_0xf2d2('0x36')](_0xf4f89e[_0xf2d2('0x32')][_0xf2d2('0x36')]));_0x2a60b7['attributes']=_0x2a60b7['attributes']['length']?_0x2a60b7[_0xf2d2('0x35')]:_0x56ae6d['model'];if(_0xf4f89e[_0xf2d2('0x32')][_0xf2d2('0x3f')]){_0x2a60b7[_0xf2d2('0x40')]=[{'all':!![]}];}_0x2a60b7=_['merge']({},_0x2a60b7,_0xf4f89e['options']);return db[_0xf2d2('0x2b')][_0xf2d2('0x46')](_0x2a60b7)[_0xf2d2('0x26')](handleEntityNotFound(_0xcfd73b,null))[_0xf2d2('0x26')](respondWithResult(_0xcfd73b,null))[_0xf2d2('0x42')](handleError(_0xcfd73b,null));};exports[_0xf2d2('0x47')]=function(_0x5e7597,_0x1d2d35){return db['SalesforceAccount']['create'](_0x5e7597['body'],{})[_0xf2d2('0x26')](respondWithResult(_0x1d2d35,0xc9))[_0xf2d2('0x42')](handleError(_0x1d2d35,null));};exports['update']=function(_0x22ab0b,_0x271f27){if(_0x22ab0b[_0xf2d2('0x48')]['id']){delete _0x22ab0b[_0xf2d2('0x48')]['id'];}return db['SalesforceAccount'][_0xf2d2('0x46')]({'where':{'id':_0x22ab0b[_0xf2d2('0x44')]['id']}})[_0xf2d2('0x26')](handleEntityNotFound(_0x271f27,null))[_0xf2d2('0x26')](saveUpdates(_0x22ab0b['body'],null))[_0xf2d2('0x26')](respondWithResult(_0x271f27,null))['catch'](handleError(_0x271f27,null));};exports[_0xf2d2('0x49')]=function(_0x15ce80,_0x11f25e){return db['SalesforceAccount']['find']({'where':{'id':_0x15ce80['params']['id']}})[_0xf2d2('0x26')](handleEntityNotFound(_0x11f25e,null))[_0xf2d2('0x26')](removeEntity(_0x11f25e,null))[_0xf2d2('0x42')](handleError(_0x11f25e,null));};exports[_0xf2d2('0x4a')]=function(_0x4e542f,_0x38a17e,_0x17acf1){var _0x26bc04={};var _0x3a847b={};var _0x366c66;var _0x4ce2fd;return db[_0xf2d2('0x2b')][_0xf2d2('0x4b')]({'where':{'id':_0x4e542f[_0xf2d2('0x44')]['id']}})[_0xf2d2('0x26')](handleEntityNotFound(_0x38a17e,null))[_0xf2d2('0x26')](function(_0x222310){if(_0x222310){_0x366c66=_0x222310;_0x3a847b[_0xf2d2('0x30')]=_[_0xf2d2('0x45')](db[_0xf2d2('0x4c')][_0xf2d2('0x2c')]);_0x3a847b[_0xf2d2('0x32')]=_[_0xf2d2('0x45')](_0x4e542f['query']);_0x3a847b[_0xf2d2('0x33')]=_[_0xf2d2('0x34')](_0x3a847b[_0xf2d2('0x30')],_0x3a847b['query']);_0x26bc04[_0xf2d2('0x35')]=_[_0xf2d2('0x34')](_0x3a847b['model'],qs[_0xf2d2('0x36')](_0x4e542f[_0xf2d2('0x32')]['fields']));_0x26bc04[_0xf2d2('0x35')]=_0x26bc04[_0xf2d2('0x35')]['length']?_0x26bc04[_0xf2d2('0x35')]:_0x3a847b[_0xf2d2('0x30')];_0x26bc04['order']=qs[_0xf2d2('0x38')](_0x4e542f['query'][_0xf2d2('0x38')]);_0x26bc04[_0xf2d2('0x39')]=qs[_0xf2d2('0x33')](_[_0xf2d2('0x3a')](_0x4e542f[_0xf2d2('0x32')],_0x3a847b[_0xf2d2('0x33')]));if(_0x4e542f[_0xf2d2('0x32')][_0xf2d2('0x3d')]){_0x26bc04[_0xf2d2('0x39')]=_[_0xf2d2('0x3b')](_0x26bc04[_0xf2d2('0x39')],{'$or':_['map'](_0x26bc04[_0xf2d2('0x35')],function(_0x15bed3){var _0x662afa={};_0x662afa[_0x15bed3]={'$like':'%'+_0x4e542f[_0xf2d2('0x32')][_0xf2d2('0x3d')]+'%'};return _0x662afa;})});}_0x26bc04=_[_0xf2d2('0x3b')]({},_0x26bc04,_0x4e542f[_0xf2d2('0x3e')]);return _0x366c66[_0xf2d2('0x4a')](_0x26bc04);}})[_0xf2d2('0x26')](function(_0x4b244b){if(_0x4b244b){_0x4ce2fd=_0x4b244b['length'];if(!_0x4e542f['query'][_0xf2d2('0x37')](_0xf2d2('0x4d'))){_0x26bc04[_0xf2d2('0x1f')]=qs[_0xf2d2('0x1f')](_0x4e542f[_0xf2d2('0x32')][_0xf2d2('0x1f')]);_0x26bc04[_0xf2d2('0x1d')]=qs[_0xf2d2('0x1d')](_0x4e542f[_0xf2d2('0x32')][_0xf2d2('0x1d')]);}return _0x366c66[_0xf2d2('0x4a')](_0x26bc04);}})[_0xf2d2('0x26')](function(_0x1b8f09){if(_0x1b8f09){return _0x1b8f09?{'count':_0x4ce2fd,'rows':_0x1b8f09}:null;}})[_0xf2d2('0x26')](respondWithResult(_0x38a17e,null))[_0xf2d2('0x42')](handleError(_0x38a17e,null));};exports['addConfiguration']=function(_0x498d29,_0x29e49d,_0x47faf6){if(_0x498d29[_0xf2d2('0x48')]['id']){delete _0x498d29[_0xf2d2('0x48')]['id'];}return db['SalesforceAccount']['findOne']({'where':{'id':_0x498d29[_0xf2d2('0x44')]['id']}})[_0xf2d2('0x26')](handleEntityNotFound(_0x29e49d,null))['then'](function(_0xacdcbf){if(_0xacdcbf){_0x498d29[_0xf2d2('0x48')][_0xf2d2('0x4e')]=_0xacdcbf['id'];_0x498d29[_0xf2d2('0x48')][_0xf2d2('0x4f')]=integrations[_0xf2d2('0x50')](_0x498d29[_0xf2d2('0x48')]['channel'],_0x498d29[_0xf2d2('0x48')][_0xf2d2('0x2e')]);_0x498d29[_0xf2d2('0x48')][_0xf2d2('0x51')]=integrations[_0xf2d2('0x52')](_0x498d29[_0xf2d2('0x48')][_0xf2d2('0x53')],_0x498d29[_0xf2d2('0x48')][_0xf2d2('0x2e')]);return db[_0xf2d2('0x4c')][_0xf2d2('0x47')](_0x498d29[_0xf2d2('0x48')],{'include':[{'model':db[_0xf2d2('0x54')],'as':_0xf2d2('0x4f')},{'model':db[_0xf2d2('0x54')],'as':_0xf2d2('0x51')}]});}return null;})[_0xf2d2('0x26')](respondWithResult(_0x29e49d,null))[_0xf2d2('0x42')](handleError(_0x29e49d,null));};exports[_0xf2d2('0x55')]=function(_0x572c5c,_0x42efb1,_0x5f41c7){var _0x497980;var _0x3163e4='';var _0x377a97='Task';return db[_0xf2d2('0x2b')][_0xf2d2('0x4b')]({'where':{'id':_0x572c5c[_0xf2d2('0x44')]['id']},'attributes':['id',_0xf2d2('0x56'),_0xf2d2('0x57'),_0xf2d2('0x58'),'username',_0xf2d2('0x59'),_0xf2d2('0x5a')]})['then'](handleEntityNotFound(_0x42efb1,null))[_0xf2d2('0x26')](function(_0x354955){if(_0x354955){_0x3163e4=_0x354955[_0xf2d2('0x56')];var _0x4c3e9d=_0x3163e4[_0xf2d2('0x5b')](-0x1);if(_0x4c3e9d==='/'){_0x3163e4=_0x3163e4['substring'](0x0,_0x3163e4[_0xf2d2('0x5c')](_0x4c3e9d));}_0x497980=new jsforce['Connection']({'oauth2':{'loginUrl':_0x3163e4,'clientId':_0x354955['clientId'],'clientSecret':_0x354955[_0xf2d2('0x58')]}});return _0x497980['login'](_0x354955[_0xf2d2('0x5d')],_0x354955['password'][_0xf2d2('0x5e')](_0x354955['securityToken']));}})['then'](function(_0x5a0956){if(_0x5a0956){if(!_[_0xf2d2('0x5f')](_0x572c5c[_0xf2d2('0x32')]['ticketType'])){_0x377a97=_0x572c5c[_0xf2d2('0x32')]['ticketType'];}return _0x497980[_0xf2d2('0x60')](_0x377a97)[_0xf2d2('0x61')]();}})['then'](function(_0x5b729e){var _0x3dbb6a=[_0xf2d2('0x62'),_0xf2d2('0x63'),'IsReminderSet',_0xf2d2('0x64'),'Subject','Description'];var _0x337036=[_0xf2d2('0x65'),_0xf2d2('0x66'),_0xf2d2('0x67'),'boolean',_0xf2d2('0x68'),'textarea','phone'];if(_0x5b729e){_['remove'](_0x5b729e[_0xf2d2('0x36')],function(_0xf2ff1){return _0x3dbb6a[_0xf2d2('0x69')](_0xf2ff1[_0xf2d2('0x31')])||!_0x337036[_0xf2d2('0x69')](_0xf2ff1[_0xf2d2('0x2e')]);});return{'count':_0x5b729e[_0xf2d2('0x36')][_0xf2d2('0x6a')],'rows':_['map'](_0x5b729e[_0xf2d2('0x36')],function(_0x510004){return{'id':_0x510004['name'],'name':_0x510004[_0xf2d2('0x6b')],'custom':_0x510004[_0xf2d2('0x6c')],'options':_0x510004[_0xf2d2('0x6d')][_0xf2d2('0x6a')]>0x0?_['map'](_0x510004[_0xf2d2('0x6d')],function(_0x5c128d){return{'name':_0x5c128d[_0xf2d2('0x6b')],'value':_0x5c128d['value']};}):_0x510004['type']==_0xf2d2('0x6e')?[{'name':_0xf2d2('0x6f'),'value':_0xf2d2('0x70')},{'name':'False','value':_0xf2d2('0x71')}]:[]};})};}})[_0xf2d2('0x26')](respondWithResult(_0x42efb1,null))['catch'](function(_0xfc57ef){var _0xcf76e=_0x572c5c[_0xf2d2('0x32')][_0xf2d2('0x72')]?0x1f4:_0xfc57ef[_0xf2d2('0x73')]||0x1f4;logger[_0xf2d2('0x27')](_0xf2d2('0x74'),_0xf2d2('0x55'),_0xcf76e,JSON[_0xf2d2('0x75')](_0xfc57ef));delete _0xfc57ef['name'];if(_0xcf76e===0x191){_0xcf76e=0x190;}_0x42efb1[_0xf2d2('0x21')](_0xcf76e)[_0xf2d2('0x28')](_0x572c5c['query']['test']?{'message':_0xf2d2('0x76'),'statusCode':_0xfc57ef[_0xf2d2('0x73')]}:_0xfc57ef);});};
\ No newline at end of file
index d978702..a5e4f8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dd2=['../../components/integrations/configuration','define','lodash','../../config/logger','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x327143,_0x37aa94){var _0x5c7789=function(_0x163e25){while(--_0x163e25){_0x327143['push'](_0x327143['shift']());}};_0x5c7789(++_0x37aa94);}(_0x2dd2,0x89));var _0x22dd=function(_0xc0f8a4,_0x590a5f){_0xc0f8a4=_0xc0f8a4-0x0;var _0x358cad=_0x2dd2[_0xc0f8a4];return _0x358cad;};'use strict';var _=require(_0x22dd('0x0'));var util=require('util');var logger=require(_0x22dd('0x1'))('api');var moment=require(_0x22dd('0x2'));var BPromise=require(_0x22dd('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x22dd('0x4'));var rimraf=require(_0x22dd('0x5'));var config=require(_0x22dd('0x6'));var attributes=require('./intSalesforceAccount.attributes');var integrations=require(_0x22dd('0x7'));module['exports']=function(_0x18623c,_0x462fdd){return _0x18623c[_0x22dd('0x8')]('SalesforceAccount',attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe4fb=['rimraf','./intSalesforceAccount.attributes','exports','define','api','moment','bluebird','request-promise','path'];(function(_0xe73080,_0x24c56d){var _0x12cbc4=function(_0x1377e2){while(--_0x1377e2){_0xe73080['push'](_0xe73080['shift']());}};_0x12cbc4(++_0x24c56d);}(_0xe4fb,0x9d));var _0xbe4f=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xe4fb[_0x397e5f];return _0x5302b8;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xbe4f('0x0'));var moment=require(_0xbe4f('0x1'));var BPromise=require(_0xbe4f('0x2'));var rp=require(_0xbe4f('0x3'));var fs=require('fs');var path=require(_0xbe4f('0x4'));var rimraf=require(_0xbe4f('0x5'));var config=require('../../config/environment');var attributes=require(_0xbe4f('0x6'));var integrations=require('../../components/integrations/configuration');module[_0xbe4f('0x7')]=function(_0x1a9396,_0x4a5572){return _0x1a9396[_0xbe4f('0x8')]('SalesforceAccount',attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 230f2e7..7fddd41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c55=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetSalesforceAccount','SalesforceAccount','findAll','options','attributes','limit','include','model','map','then','catch','raw','where','ShowSalesforceAccount','lodash','util','moment','bluebird','../../config/utils'];(function(_0x395518,_0x50794d){var _0x13706e=function(_0x2beba3){while(--_0x2beba3){_0x395518['push'](_0x395518['shift']());}};_0x13706e(++_0x50794d);}(_0x3c55,0x163));var _0x53c5=function(_0x4c7fc8,_0x41d13a){_0x4c7fc8=_0x4c7fc8-0x0;var _0x4fc0a9=_0x3c55[_0x4c7fc8];return _0x4fc0a9;};'use strict';var _=require(_0x53c5('0x0'));var util=require(_0x53c5('0x1'));var moment=require(_0x53c5('0x2'));var BPromise=require(_0x53c5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x53c5('0x4'));var logger=require(_0x53c5('0x5'))(_0x53c5('0x6'));var config=require(_0x53c5('0x7'));var jayson=require(_0x53c5('0x8'));var client=jayson[_0x53c5('0x9')][_0x53c5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x51ca8c,_0x3d58a,_0x19d49a){return new BPromise(function(_0x314420,_0xa14518){return client[_0x53c5('0xb')](_0x51ca8c,_0x19d49a)['then'](function(_0x466ca0){logger[_0x53c5('0xc')](_0x53c5('0xd'),_0x3d58a,_0x53c5('0xe'));logger[_0x53c5('0xf')](_0x53c5('0x10'),_0x3d58a,'request\x20sent',JSON[_0x53c5('0x11')](_0x466ca0));if(_0x466ca0[_0x53c5('0x12')]){if(_0x466ca0[_0x53c5('0x12')][_0x53c5('0x13')]===0x1f4){logger[_0x53c5('0x12')](_0x53c5('0xd'),_0x3d58a,_0x466ca0[_0x53c5('0x12')][_0x53c5('0x14')]);return _0xa14518(_0x466ca0['error'][_0x53c5('0x14')]);}logger[_0x53c5('0x12')](_0x53c5('0xd'),_0x3d58a,_0x466ca0['error'][_0x53c5('0x14')]);return _0x314420(_0x466ca0[_0x53c5('0x12')]['message']);}else{logger[_0x53c5('0xc')]('SalesforceAccount,\x20%s,\x20%s',_0x3d58a,'request\x20sent');_0x314420(_0x466ca0[_0x53c5('0x15')][_0x53c5('0x14')]);}})['catch'](function(_0x565558){logger[_0x53c5('0x12')]('SalesforceAccount,\x20%s,\x20%s',_0x3d58a,_0x565558);_0xa14518(_0x565558);});});}exports[_0x53c5('0x16')]=function(_0x214be6){var _0xcfe80=this;return new Promise(function(_0x17ddd6,_0x31bf9d){return db[_0x53c5('0x17')][_0x53c5('0x18')]({'raw':_0x214be6[_0x53c5('0x19')]?_0x214be6['options']['raw']===undefined?!![]:![]:!![],'where':_0x214be6[_0x53c5('0x19')]?_0x214be6[_0x53c5('0x19')]['where']||null:null,'attributes':_0x214be6['options']?_0x214be6[_0x53c5('0x19')][_0x53c5('0x1a')]||null:null,'limit':_0x214be6['options']?_0x214be6['options'][_0x53c5('0x1b')]||null:null,'include':_0x214be6[_0x53c5('0x19')]?_0x214be6['options']['include']?_['map'](_0x214be6['options'][_0x53c5('0x1c')],function(_0xcd277d){return{'model':db[_0xcd277d[_0x53c5('0x1d')]],'as':_0xcd277d['as'],'attributes':_0xcd277d[_0x53c5('0x1a')],'include':_0xcd277d[_0x53c5('0x1c')]?_[_0x53c5('0x1e')](_0xcd277d[_0x53c5('0x1c')],function(_0x40eee7){return{'model':db[_0x40eee7[_0x53c5('0x1d')]],'as':_0x40eee7['as'],'attributes':_0x40eee7[_0x53c5('0x1a')],'include':_0x40eee7['include']?_[_0x53c5('0x1e')](_0x40eee7['include'],function(_0x1a9dbc){return{'model':db[_0x1a9dbc[_0x53c5('0x1d')]],'as':_0x1a9dbc['as'],'attributes':_0x1a9dbc[_0x53c5('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x53c5('0x1f')](function(_0x209277){logger[_0x53c5('0xc')](_0x53c5('0x16'),_0x214be6);logger[_0x53c5('0xf')]('GetSalesforceAccount',_0x214be6,JSON[_0x53c5('0x11')](_0x209277));_0x17ddd6(_0x209277);})[_0x53c5('0x20')](function(_0x508b1b){logger[_0x53c5('0x12')]('GetSalesforceAccount',_0x508b1b[_0x53c5('0x14')],_0x214be6);_0x31bf9d(_0xcfe80[_0x53c5('0x12')](0x1f4,_0x508b1b[_0x53c5('0x14')]));});});};exports['ShowSalesforceAccount']=function(_0x1c3d94){var _0x49297b=this;return new Promise(function(_0x5680cc,_0x35da40){return db['SalesforceAccount']['find']({'raw':_0x1c3d94[_0x53c5('0x19')]?_0x1c3d94[_0x53c5('0x19')][_0x53c5('0x21')]===undefined?!![]:![]:!![],'where':_0x1c3d94[_0x53c5('0x19')]?_0x1c3d94[_0x53c5('0x19')][_0x53c5('0x22')]||null:null,'attributes':_0x1c3d94['options']?_0x1c3d94['options'][_0x53c5('0x1a')]||null:null,'include':_0x1c3d94[_0x53c5('0x19')]?_0x1c3d94[_0x53c5('0x19')][_0x53c5('0x1c')]?_[_0x53c5('0x1e')](_0x1c3d94['options']['include'],function(_0x4d1c93){return{'model':db[_0x4d1c93[_0x53c5('0x1d')]],'as':_0x4d1c93['as'],'attributes':_0x4d1c93['attributes'],'include':_0x4d1c93[_0x53c5('0x1c')]?_[_0x53c5('0x1e')](_0x4d1c93[_0x53c5('0x1c')],function(_0x357f59){return{'model':db[_0x357f59['model']],'as':_0x357f59['as'],'attributes':_0x357f59[_0x53c5('0x1a')],'include':_0x357f59[_0x53c5('0x1c')]?_['map'](_0x357f59[_0x53c5('0x1c')],function(_0x4301bd){return{'model':db[_0x4301bd[_0x53c5('0x1d')]],'as':_0x4301bd['as'],'attributes':_0x4301bd[_0x53c5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x55a06d){logger[_0x53c5('0xc')]('ShowSalesforceAccount',_0x1c3d94);logger[_0x53c5('0xf')](_0x53c5('0x23'),_0x1c3d94,JSON['stringify'](_0x55a06d));_0x5680cc(_0x55a06d);})['catch'](function(_0x5692b3){logger[_0x53c5('0x12')]('ShowSalesforceAccount',_0x5692b3['message'],_0x1c3d94);_0x35da40(_0x49297b[_0x53c5('0x12')](0x1f4,_0x5692b3[_0x53c5('0x14')]));});});};
\ No newline at end of file
+var _0x419f=['GetSalesforceAccount','debug','ShowSalesforceAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','SalesforceAccount','findAll','options','raw','where','limit','include','map','model','attributes'];(function(_0x3e91a9,_0x53c466){var _0x25c9ad=function(_0x69ee2d){while(--_0x69ee2d){_0x3e91a9['push'](_0x3e91a9['shift']());}};_0x25c9ad(++_0x53c466);}(_0x419f,0x176));var _0xf419=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x419f[_0x2d7f0e];return _0x110b07;};'use strict';var _=require(_0xf419('0x0'));var util=require(_0xf419('0x1'));var moment=require(_0xf419('0x2'));var BPromise=require(_0xf419('0x3'));var rs=require(_0xf419('0x4'));var fs=require('fs');var Redis=require(_0xf419('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf419('0x6'));var logger=require('../../config/logger')(_0xf419('0x7'));var config=require(_0xf419('0x8'));var jayson=require(_0xf419('0x9'));var client=jayson[_0xf419('0xa')][_0xf419('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2b5526,_0x4082de,_0x2e42a8){return new BPromise(function(_0x3f0c3e,_0x4bb5fd){return client[_0xf419('0xc')](_0x2b5526,_0x2e42a8)[_0xf419('0xd')](function(_0x5ab7d3){logger[_0xf419('0xe')](_0xf419('0xf'),_0x4082de,_0xf419('0x10'));logger['debug'](_0xf419('0x11'),_0x4082de,_0xf419('0x10'),JSON[_0xf419('0x12')](_0x5ab7d3));if(_0x5ab7d3[_0xf419('0x13')]){if(_0x5ab7d3[_0xf419('0x13')]['code']===0x1f4){logger['error'](_0xf419('0xf'),_0x4082de,_0x5ab7d3[_0xf419('0x13')][_0xf419('0x14')]);return _0x4bb5fd(_0x5ab7d3[_0xf419('0x13')][_0xf419('0x14')]);}logger['error'](_0xf419('0xf'),_0x4082de,_0x5ab7d3[_0xf419('0x13')][_0xf419('0x14')]);return _0x3f0c3e(_0x5ab7d3[_0xf419('0x13')][_0xf419('0x14')]);}else{logger[_0xf419('0xe')]('SalesforceAccount,\x20%s,\x20%s',_0x4082de,_0xf419('0x10'));_0x3f0c3e(_0x5ab7d3[_0xf419('0x15')]['message']);}})[_0xf419('0x16')](function(_0x19660e){logger[_0xf419('0x13')]('SalesforceAccount,\x20%s,\x20%s',_0x4082de,_0x19660e);_0x4bb5fd(_0x19660e);});});}exports['GetSalesforceAccount']=function(_0x599492){var _0x44aad6=this;return new Promise(function(_0x55fb4a,_0x12660e){return db[_0xf419('0x17')][_0xf419('0x18')]({'raw':_0x599492[_0xf419('0x19')]?_0x599492['options'][_0xf419('0x1a')]===undefined?!![]:![]:!![],'where':_0x599492['options']?_0x599492[_0xf419('0x19')][_0xf419('0x1b')]||null:null,'attributes':_0x599492[_0xf419('0x19')]?_0x599492['options']['attributes']||null:null,'limit':_0x599492[_0xf419('0x19')]?_0x599492[_0xf419('0x19')][_0xf419('0x1c')]||null:null,'include':_0x599492[_0xf419('0x19')]?_0x599492['options'][_0xf419('0x1d')]?_[_0xf419('0x1e')](_0x599492['options']['include'],function(_0x4a32d8){return{'model':db[_0x4a32d8[_0xf419('0x1f')]],'as':_0x4a32d8['as'],'attributes':_0x4a32d8[_0xf419('0x20')],'include':_0x4a32d8[_0xf419('0x1d')]?_[_0xf419('0x1e')](_0x4a32d8[_0xf419('0x1d')],function(_0x5aa688){return{'model':db[_0x5aa688[_0xf419('0x1f')]],'as':_0x5aa688['as'],'attributes':_0x5aa688[_0xf419('0x20')],'include':_0x5aa688['include']?_[_0xf419('0x1e')](_0x5aa688['include'],function(_0x1bd979){return{'model':db[_0x1bd979[_0xf419('0x1f')]],'as':_0x1bd979['as'],'attributes':_0x1bd979[_0xf419('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4555f0){logger[_0xf419('0xe')](_0xf419('0x21'),_0x599492);logger[_0xf419('0x22')](_0xf419('0x21'),_0x599492,JSON[_0xf419('0x12')](_0x4555f0));_0x55fb4a(_0x4555f0);})[_0xf419('0x16')](function(_0x4f9ee5){logger[_0xf419('0x13')](_0xf419('0x21'),_0x4f9ee5[_0xf419('0x14')],_0x599492);_0x12660e(_0x44aad6[_0xf419('0x13')](0x1f4,_0x4f9ee5['message']));});});};exports[_0xf419('0x23')]=function(_0x1e2e8d){var _0x4b4b88=this;return new Promise(function(_0x3a8412,_0x5387cc){return db['SalesforceAccount'][_0xf419('0x24')]({'raw':_0x1e2e8d[_0xf419('0x19')]?_0x1e2e8d['options'][_0xf419('0x1a')]===undefined?!![]:![]:!![],'where':_0x1e2e8d[_0xf419('0x19')]?_0x1e2e8d[_0xf419('0x19')][_0xf419('0x1b')]||null:null,'attributes':_0x1e2e8d[_0xf419('0x19')]?_0x1e2e8d[_0xf419('0x19')]['attributes']||null:null,'include':_0x1e2e8d[_0xf419('0x19')]?_0x1e2e8d[_0xf419('0x19')][_0xf419('0x1d')]?_[_0xf419('0x1e')](_0x1e2e8d[_0xf419('0x19')][_0xf419('0x1d')],function(_0x3742e7){return{'model':db[_0x3742e7[_0xf419('0x1f')]],'as':_0x3742e7['as'],'attributes':_0x3742e7[_0xf419('0x20')],'include':_0x3742e7['include']?_[_0xf419('0x1e')](_0x3742e7[_0xf419('0x1d')],function(_0x4321d7){return{'model':db[_0x4321d7['model']],'as':_0x4321d7['as'],'attributes':_0x4321d7[_0xf419('0x20')],'include':_0x4321d7[_0xf419('0x1d')]?_[_0xf419('0x1e')](_0x4321d7[_0xf419('0x1d')],function(_0x5a673e){return{'model':db[_0x5a673e[_0xf419('0x1f')]],'as':_0x5a673e['as'],'attributes':_0x5a673e[_0xf419('0x20')]};}):[]};}):[]};}):[]:[]})[_0xf419('0xd')](function(_0x45bf10){logger[_0xf419('0xe')]('ShowSalesforceAccount',_0x1e2e8d);logger[_0xf419('0x22')](_0xf419('0x23'),_0x1e2e8d,JSON['stringify'](_0x45bf10));_0x3a8412(_0x45bf10);})[_0xf419('0x16')](function(_0xc605f4){logger[_0xf419('0x13')](_0xf419('0x23'),_0xc605f4[_0xf419('0x14')],_0x1e2e8d);_0x5387cc(_0x4b4b88[_0xf419('0x13')](0x1f4,_0xc605f4['message']));});});};
\ No newline at end of file
index 94b796f..3aff43c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intSalesforceConfiguration.controller','get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','put','update','exports','multer','util','path'];(function(_0x5d6edc,_0x3a314c){var _0x223b1c=function(_0xee9d6e){while(--_0xee9d6e){_0x5d6edc['push'](_0x5d6edc['shift']());}};_0x223b1c(++_0x3a314c);}(_0x2ef3,0xba));var _0x32ef=function(_0x25c5f4,_0x5ac98f){_0x25c5f4=_0x25c5f4-0x0;var _0x125c20=_0x2ef3[_0x25c5f4];return _0x125c20;};'use strict';var multer=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var path=require(_0x32ef('0x2'));var timeout=require(_0x32ef('0x3'));var express=require(_0x32ef('0x4'));var router=express[_0x32ef('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x32ef('0x6'));var interaction=require(_0x32ef('0x7'));var config=require('../../config/environment');var controller=require(_0x32ef('0x8'));router[_0x32ef('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x32ef('0x9')](_0x32ef('0xa'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xc')]);router[_0x32ef('0x9')](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xe')]);router[_0x32ef('0x9')](_0x32ef('0xf'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x32ef('0x9')](_0x32ef('0x10'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x11')]);router['post']('/',auth[_0x32ef('0xb')](),controller['create']);router[_0x32ef('0x12')]('/:id',auth[_0x32ef('0xb')](),controller[_0x32ef('0x13')]);router['delete']('/:id',auth[_0x32ef('0xb')](),controller['destroy']);module[_0x32ef('0x14')]=router;
\ No newline at end of file
+var _0x0b0e=['post','create','put','/:id','update','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','/:id/subjects','getSubjects','getDescriptions'];(function(_0xfcbcb8,_0x35bf6b){var _0x1b1f97=function(_0x51e11d){while(--_0x51e11d){_0xfcbcb8['push'](_0xfcbcb8['shift']());}};_0x1b1f97(++_0x35bf6b);}(_0x0b0e,0x187));var _0xe0b0=function(_0x125425,_0x4b6bab){_0x125425=_0x125425-0x0;var _0xd04dc4=_0x0b0e[_0x125425];return _0xd04dc4;};'use strict';var multer=require(_0xe0b0('0x0'));var util=require('util');var path=require(_0xe0b0('0x1'));var timeout=require('connect-timeout');var express=require(_0xe0b0('0x2'));var router=express[_0xe0b0('0x3')]();var fs_extra=require(_0xe0b0('0x4'));var auth=require(_0xe0b0('0x5'));var interaction=require(_0xe0b0('0x6'));var config=require(_0xe0b0('0x7'));var controller=require(_0xe0b0('0x8'));router[_0xe0b0('0x9')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xb')]);router[_0xe0b0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe0b0('0xc')]);router[_0xe0b0('0x9')](_0xe0b0('0xd'),auth[_0xe0b0('0xa')](),controller['getFields']);router[_0xe0b0('0x9')](_0xe0b0('0xe'),auth['isAuthenticated'](),controller[_0xe0b0('0xf')]);router[_0xe0b0('0x9')]('/:id/descriptions',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x10')]);router[_0xe0b0('0x11')]('/',auth['isAuthenticated'](),controller[_0xe0b0('0x12')]);router[_0xe0b0('0x13')](_0xe0b0('0x14'),auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x15')]);router['delete'](_0xe0b0('0x14'),auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x16')]);module[_0xe0b0('0x17')]=router;
\ No newline at end of file
index 0982e92..be555ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bda=['ENUM','Task','Case','contact_lead','lead','account_contact_lead','account','nothing','contact','sequelize','exports','STRING'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0x7bda,0x171));var _0xa7bd=function(_0x57d1ed,_0x3b65af){_0x57d1ed=_0x57d1ed-0x0;var _0x3c8375=_0x7bda[_0x57d1ed];return _0x3c8375;};'use strict';var Sequelize=require(_0xa7bd('0x0'));module[_0xa7bd('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xa7bd('0x2')]},'ticketType':{'type':Sequelize[_0xa7bd('0x3')](_0xa7bd('0x4'),_0xa7bd('0x5')),'defaultValue':'Task'},'moduleSearch':{'type':Sequelize[_0xa7bd('0x3')](_0xa7bd('0x6'),'contact',_0xa7bd('0x7'),_0xa7bd('0x8'),_0xa7bd('0x9')),'defaultValue':_0xa7bd('0x6')},'moduleCreate':{'type':Sequelize[_0xa7bd('0x3')](_0xa7bd('0xa'),_0xa7bd('0xb'),_0xa7bd('0x7'),_0xa7bd('0x9')),'defaultValue':'lead'},'leadId':{'type':Sequelize[_0xa7bd('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0xa7bd('0x2')]},'additionalSearchContact':{'type':Sequelize[_0xa7bd('0x2')]},'additionalSearchLead':{'type':Sequelize[_0xa7bd('0x2')]}};
\ No newline at end of file
+var _0x0f3a=['account','nothing','contact','exports','STRING','ENUM','Task','lead'];(function(_0x535085,_0x25e65d){var _0x1b6c68=function(_0x412a6d){while(--_0x412a6d){_0x535085['push'](_0x535085['shift']());}};_0x1b6c68(++_0x25e65d);}(_0x0f3a,0x1bb));var _0xa0f3=function(_0x3a74c9,_0x5edbc1){_0x3a74c9=_0x3a74c9-0x0;var _0x49b49e=_0x0f3a[_0x3a74c9];return _0x49b49e;};'use strict';var Sequelize=require('sequelize');module[_0xa0f3('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xa0f3('0x1')]},'ticketType':{'type':Sequelize[_0xa0f3('0x2')](_0xa0f3('0x3'),'Case'),'defaultValue':_0xa0f3('0x3')},'moduleSearch':{'type':Sequelize[_0xa0f3('0x2')]('contact_lead','contact',_0xa0f3('0x4'),'account_contact_lead',_0xa0f3('0x5')),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize[_0xa0f3('0x2')](_0xa0f3('0x6'),_0xa0f3('0x7'),_0xa0f3('0x4'),'account'),'defaultValue':_0xa0f3('0x4')},'leadId':{'type':Sequelize[_0xa0f3('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0xa0f3('0x1')]},'additionalSearchContact':{'type':Sequelize[_0xa0f3('0x1')]},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 65a1860..4580513 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25b2=['../../config/utils','../../config/environment','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','save','update','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','SalesforceConfiguration','then','include','findAll','params','includeAll','find','create','body','catch','getFields','SalesforceField','hasOwnProperty','getSubjects','findOne','getDescriptions','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger'];(function(_0xd566fe,_0x36cba1){var _0x41d3e4=function(_0x31e983){while(--_0x31e983){_0xd566fe['push'](_0xd566fe['shift']());}};_0x41d3e4(++_0x36cba1);}(_0x25b2,0x12e));var _0x225b=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x25b2[_0x3b380d];return _0x54502b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x225b('0x0'));var jsonpatch=require(_0x225b('0x1'));var rp=require(_0x225b('0x2'));var moment=require(_0x225b('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x225b('0x4'));var util=require(_0x225b('0x5'));var path=require(_0x225b('0x6'));var sox=require(_0x225b('0x7'));var csv=require(_0x225b('0x8'));var ejs=require(_0x225b('0x9'));var fs=require('fs');var fs_extra=require(_0x225b('0xa'));var _=require(_0x225b('0xb'));var squel=require('squel');var crypto=require(_0x225b('0xc'));var jsforce=require(_0x225b('0xd'));var deskjs=require(_0x225b('0xe'));var toCsv=require(_0x225b('0x8'));var querystring=require(_0x225b('0xf'));var Papa=require(_0x225b('0x10'));var Redis=require(_0x225b('0x11'));var authService=require(_0x225b('0x12'));var qs=require(_0x225b('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x225b('0x14'));var logger=require(_0x225b('0x15'))('api');var utils=require(_0x225b('0x16'));var config=require(_0x225b('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x424f15,_0x5c8976){_0x5c8976=_0x5c8976||0xcc;return function(_0x5b1a36){if(_0x5b1a36){return _0x424f15[_0x225b('0x18')](_0x5c8976);}return _0x424f15[_0x225b('0x19')](_0x5c8976)[_0x225b('0x1a')]();};}function respondWithResult(_0x4bb2c5,_0x986b2d){_0x986b2d=_0x986b2d||0xc8;return function(_0xcb87de){if(_0xcb87de){return _0x4bb2c5['status'](_0x986b2d)['json'](_0xcb87de);}};}function respondWithFilteredResult(_0x38009b,_0x518697){return function(_0x133658){if(_0x133658){var _0x53cd9a=typeof _0x518697[_0x225b('0x1b')]===_0x225b('0x1c')&&typeof _0x518697['limit']===_0x225b('0x1c');var _0x32be6b=_0x133658[_0x225b('0x1d')];var _0x26085f=_0x53cd9a?0x0:_0x518697[_0x225b('0x1b')];var _0x3d8b20=_0x53cd9a?_0x133658['count']:_0x518697[_0x225b('0x1b')]+_0x518697[_0x225b('0x1e')];var _0x1b6ebd;if(_0x3d8b20>=_0x32be6b){_0x3d8b20=_0x32be6b;_0x1b6ebd=0xc8;}else{_0x1b6ebd=0xce;}_0x38009b[_0x225b('0x19')](_0x1b6ebd);return _0x38009b[_0x225b('0x1f')](_0x225b('0x20'),_0x26085f+'-'+_0x3d8b20+'/'+_0x32be6b)[_0x225b('0x21')](_0x133658);}return null;};}function patchUpdates(_0x23f3bb){return function(_0x323815){try{jsonpatch[_0x225b('0x22')](_0x323815,_0x23f3bb,!![]);}catch(_0x1bbc41){return BPromise['reject'](_0x1bbc41);}return _0x323815[_0x225b('0x23')]();};}function saveUpdates(_0x2074da,_0x2a977e){return function(_0x41b772){if(_0x41b772){return _0x41b772[_0x225b('0x24')](_0x2074da)['then'](function(_0x2cefd9){return _0x2cefd9;});}return null;};}function removeEntity(_0x89639,_0x56611f){return function(_0x3d078f){if(_0x3d078f){return _0x3d078f[_0x225b('0x25')]()['then'](function(){_0x89639[_0x225b('0x19')](0xcc)[_0x225b('0x1a')]();});}};}function handleEntityNotFound(_0x468525,_0xc1b507){return function(_0x5e9205){if(!_0x5e9205){_0x468525[_0x225b('0x18')](0x194);}return _0x5e9205;};}function handleError(_0x5259f7,_0x1faeba){_0x1faeba=_0x1faeba||0x1f4;return function(_0x85b682){logger[_0x225b('0x26')](_0x85b682[_0x225b('0x27')]);if(_0x85b682[_0x225b('0x28')]){delete _0x85b682[_0x225b('0x28')];}_0x5259f7['status'](_0x1faeba)[_0x225b('0x29')](_0x85b682);};}exports[_0x225b('0x2a')]=function(_0x29a46d,_0x2d4529){var _0x2ae085={},_0xc5021d={},_0x566792={'count':0x0,'rows':[]};var _0x2b0109=_[_0x225b('0x2b')](db['SalesforceConfiguration'][_0x225b('0x2c')],function(_0x8bb534){return{'name':_0x8bb534[_0x225b('0x2d')],'type':_0x8bb534[_0x225b('0x2e')][_0x225b('0x2f')]};});_0xc5021d[_0x225b('0x30')]=_[_0x225b('0x2b')](_0x2b0109,_0x225b('0x28'));_0xc5021d['query']=_[_0x225b('0x31')](_0x29a46d[_0x225b('0x32')]);_0xc5021d[_0x225b('0x33')]=_[_0x225b('0x34')](_0xc5021d[_0x225b('0x30')],_0xc5021d['query']);_0x2ae085[_0x225b('0x35')]=_[_0x225b('0x34')](_0xc5021d[_0x225b('0x30')],qs[_0x225b('0x36')](_0x29a46d[_0x225b('0x32')][_0x225b('0x36')]));_0x2ae085[_0x225b('0x35')]=_0x2ae085[_0x225b('0x35')][_0x225b('0x37')]?_0x2ae085['attributes']:_0xc5021d[_0x225b('0x30')];if(!_0x29a46d['query']['hasOwnProperty'](_0x225b('0x38'))){_0x2ae085['limit']=qs['limit'](_0x29a46d[_0x225b('0x32')][_0x225b('0x1e')]);_0x2ae085[_0x225b('0x1b')]=qs['offset'](_0x29a46d[_0x225b('0x32')][_0x225b('0x1b')]);}_0x2ae085[_0x225b('0x39')]=qs['sort'](_0x29a46d[_0x225b('0x32')][_0x225b('0x3a')]);_0x2ae085['where']=qs['filters'](_[_0x225b('0x3b')](_0x29a46d[_0x225b('0x32')],_0xc5021d[_0x225b('0x33')]),_0x2b0109);if(_0x29a46d[_0x225b('0x32')][_0x225b('0x3c')]){_0x2ae085['where']=_['merge'](_0x2ae085[_0x225b('0x3d')],{'$or':_[_0x225b('0x2b')](_0x2b0109,function(_0x576cb4){if(_0x576cb4[_0x225b('0x2e')]!==_0x225b('0x3e')){var _0x19be0e={};_0x19be0e[_0x576cb4[_0x225b('0x28')]]={'$like':'%'+_0x29a46d[_0x225b('0x32')][_0x225b('0x3c')]+'%'};return _0x19be0e;}})});}_0x2ae085=_[_0x225b('0x3f')]({},_0x2ae085,_0x29a46d[_0x225b('0x40')]);var _0x3ca5c2={'where':_0x2ae085[_0x225b('0x3d')]};return db[_0x225b('0x41')]['count'](_0x3ca5c2)[_0x225b('0x42')](function(_0x801bef){_0x566792['count']=_0x801bef;if(_0x29a46d['query']['includeAll']){_0x2ae085[_0x225b('0x43')]=[{'all':!![]}];}return db['SalesforceConfiguration'][_0x225b('0x44')](_0x2ae085);})[_0x225b('0x42')](function(_0x47c11e){_0x566792['rows']=_0x47c11e;return _0x566792;})[_0x225b('0x42')](respondWithFilteredResult(_0x2d4529,_0x2ae085))['catch'](handleError(_0x2d4529,null));};exports['show']=function(_0x2c1451,_0x112fe6){var _0x48c8e6={'raw':![],'where':{'id':_0x2c1451[_0x225b('0x45')]['id']}},_0x194d66={};_0x194d66[_0x225b('0x30')]=_[_0x225b('0x31')](db[_0x225b('0x41')]['rawAttributes']);_0x194d66[_0x225b('0x32')]=_[_0x225b('0x31')](_0x2c1451[_0x225b('0x32')]);_0x194d66[_0x225b('0x33')]=_['intersection'](_0x194d66[_0x225b('0x30')],_0x194d66[_0x225b('0x32')]);_0x48c8e6[_0x225b('0x35')]=_[_0x225b('0x34')](_0x194d66['model'],qs['fields'](_0x2c1451[_0x225b('0x32')][_0x225b('0x36')]));_0x48c8e6[_0x225b('0x35')]=_0x48c8e6[_0x225b('0x35')][_0x225b('0x37')]?_0x48c8e6[_0x225b('0x35')]:_0x194d66[_0x225b('0x30')];if(_0x2c1451[_0x225b('0x32')][_0x225b('0x46')]){_0x48c8e6[_0x225b('0x43')]=[{'all':!![]}];}_0x48c8e6=_[_0x225b('0x3f')]({},_0x48c8e6,_0x2c1451[_0x225b('0x40')]);return db[_0x225b('0x41')][_0x225b('0x47')](_0x48c8e6)[_0x225b('0x42')](handleEntityNotFound(_0x112fe6,null))[_0x225b('0x42')](respondWithResult(_0x112fe6,null))['catch'](handleError(_0x112fe6,null));};exports[_0x225b('0x48')]=function(_0x2b2add,_0x28c2ba){return db['SalesforceConfiguration'][_0x225b('0x48')](_0x2b2add[_0x225b('0x49')],{})['then'](respondWithResult(_0x28c2ba,0xc9))[_0x225b('0x4a')](handleError(_0x28c2ba,null));};exports[_0x225b('0x24')]=function(_0x305f72,_0x468d12){if(_0x305f72[_0x225b('0x49')]['id']){delete _0x305f72[_0x225b('0x49')]['id'];}return db[_0x225b('0x41')][_0x225b('0x47')]({'where':{'id':_0x305f72['params']['id']}})[_0x225b('0x42')](handleEntityNotFound(_0x468d12,null))[_0x225b('0x42')](saveUpdates(_0x305f72[_0x225b('0x49')],null))[_0x225b('0x42')](respondWithResult(_0x468d12,null))[_0x225b('0x4a')](handleError(_0x468d12,null));};exports[_0x225b('0x25')]=function(_0x81f2bb,_0x6c3532){return db['SalesforceConfiguration'][_0x225b('0x47')]({'where':{'id':_0x81f2bb[_0x225b('0x45')]['id']}})[_0x225b('0x42')](handleEntityNotFound(_0x6c3532,null))[_0x225b('0x42')](removeEntity(_0x6c3532,null))[_0x225b('0x4a')](handleError(_0x6c3532,null));};exports[_0x225b('0x4b')]=function(_0x509993,_0x16bc42,_0x55b91d){var _0xf90886={};var _0x37ab61={};var _0x2475f1;var _0x26bb1d;return db[_0x225b('0x41')]['findOne']({'where':{'id':_0x509993['params']['id']}})[_0x225b('0x42')](handleEntityNotFound(_0x16bc42,null))[_0x225b('0x42')](function(_0x423645){if(_0x423645){_0x2475f1=_0x423645;_0x37ab61[_0x225b('0x30')]=_[_0x225b('0x31')](db[_0x225b('0x4c')]['rawAttributes']);_0x37ab61[_0x225b('0x32')]=_[_0x225b('0x31')](_0x509993[_0x225b('0x32')]);_0x37ab61[_0x225b('0x33')]=_[_0x225b('0x34')](_0x37ab61[_0x225b('0x30')],_0x37ab61['query']);_0xf90886['attributes']=_[_0x225b('0x34')](_0x37ab61[_0x225b('0x30')],qs[_0x225b('0x36')](_0x509993['query'][_0x225b('0x36')]));_0xf90886['attributes']=_0xf90886[_0x225b('0x35')][_0x225b('0x37')]?_0xf90886[_0x225b('0x35')]:_0x37ab61[_0x225b('0x30')];_0xf90886[_0x225b('0x39')]=qs[_0x225b('0x3a')](_0x509993[_0x225b('0x32')][_0x225b('0x3a')]);_0xf90886[_0x225b('0x3d')]=qs[_0x225b('0x33')](_['pick'](_0x509993[_0x225b('0x32')],_0x37ab61['filters']));if(_0x509993['query'][_0x225b('0x3c')]){_0xf90886[_0x225b('0x3d')]=_['merge'](_0xf90886[_0x225b('0x3d')],{'$or':_[_0x225b('0x2b')](_0xf90886[_0x225b('0x35')],function(_0x369d44){var _0x5d1103={};_0x5d1103[_0x369d44]={'$like':'%'+_0x509993[_0x225b('0x32')][_0x225b('0x3c')]+'%'};return _0x5d1103;})});}_0xf90886=_[_0x225b('0x3f')]({},_0xf90886,_0x509993['options']);return _0x2475f1[_0x225b('0x4b')](_0xf90886);}})['then'](function(_0x4bf010){if(_0x4bf010){_0x26bb1d=_0x4bf010[_0x225b('0x37')];if(!_0x509993[_0x225b('0x32')][_0x225b('0x4d')]('nolimit')){_0xf90886[_0x225b('0x1e')]=qs[_0x225b('0x1e')](_0x509993[_0x225b('0x32')][_0x225b('0x1e')]);_0xf90886[_0x225b('0x1b')]=qs[_0x225b('0x1b')](_0x509993[_0x225b('0x32')]['offset']);}return _0x2475f1[_0x225b('0x4b')](_0xf90886);}})['then'](function(_0x3ed0ee){if(_0x3ed0ee){return _0x3ed0ee?{'count':_0x26bb1d,'rows':_0x3ed0ee}:null;}})['then'](respondWithResult(_0x16bc42,null))[_0x225b('0x4a')](handleError(_0x16bc42,null));};exports[_0x225b('0x4e')]=function(_0x4c8a23,_0x1b9a3e,_0x54bcbd){var _0xb4865c={};var _0x30f6e8={};var _0x42dffe;var _0xf61755;return db[_0x225b('0x41')][_0x225b('0x4f')]({'where':{'id':_0x4c8a23[_0x225b('0x45')]['id']}})[_0x225b('0x42')](handleEntityNotFound(_0x1b9a3e,null))[_0x225b('0x42')](function(_0x5172e5){if(_0x5172e5){_0x42dffe=_0x5172e5;_0x30f6e8[_0x225b('0x30')]=_[_0x225b('0x31')](db['SalesforceField'][_0x225b('0x2c')]);_0x30f6e8[_0x225b('0x32')]=_[_0x225b('0x31')](_0x4c8a23['query']);_0x30f6e8['filters']=_[_0x225b('0x34')](_0x30f6e8['model'],_0x30f6e8['query']);_0xb4865c['attributes']=_[_0x225b('0x34')](_0x30f6e8[_0x225b('0x30')],qs[_0x225b('0x36')](_0x4c8a23['query'][_0x225b('0x36')]));_0xb4865c[_0x225b('0x35')]=_0xb4865c['attributes'][_0x225b('0x37')]?_0xb4865c[_0x225b('0x35')]:_0x30f6e8[_0x225b('0x30')];_0xb4865c['order']=qs[_0x225b('0x3a')](_0x4c8a23[_0x225b('0x32')]['sort']);_0xb4865c['where']=qs[_0x225b('0x33')](_[_0x225b('0x3b')](_0x4c8a23['query'],_0x30f6e8['filters']));if(_0x4c8a23['query'][_0x225b('0x3c')]){_0xb4865c[_0x225b('0x3d')]=_[_0x225b('0x3f')](_0xb4865c[_0x225b('0x3d')],{'$or':_[_0x225b('0x2b')](_0xb4865c[_0x225b('0x35')],function(_0x165c21){var _0x2cb933={};_0x2cb933[_0x165c21]={'$like':'%'+_0x4c8a23['query']['filter']+'%'};return _0x2cb933;})});}_0xb4865c=_[_0x225b('0x3f')]({},_0xb4865c,_0x4c8a23[_0x225b('0x40')]);return _0x42dffe[_0x225b('0x4e')](_0xb4865c);}})[_0x225b('0x42')](function(_0x19a1b0){if(_0x19a1b0){_0xf61755=_0x19a1b0[_0x225b('0x37')];if(!_0x4c8a23[_0x225b('0x32')][_0x225b('0x4d')]('nolimit')){_0xb4865c[_0x225b('0x1e')]=qs['limit'](_0x4c8a23[_0x225b('0x32')]['limit']);_0xb4865c['offset']=qs['offset'](_0x4c8a23['query'][_0x225b('0x1b')]);}return _0x42dffe[_0x225b('0x4e')](_0xb4865c);}})['then'](function(_0x2c6951){if(_0x2c6951){return _0x2c6951?{'count':_0xf61755,'rows':_0x2c6951}:null;}})[_0x225b('0x42')](respondWithResult(_0x1b9a3e,null))[_0x225b('0x4a')](handleError(_0x1b9a3e,null));};exports['getDescriptions']=function(_0x156ac6,_0x35bebc,_0x4eb32a){var _0x3a8eed={};var _0x2dc6bd={};var _0x316a9c;var _0x56f5f4;return db[_0x225b('0x41')][_0x225b('0x4f')]({'where':{'id':_0x156ac6['params']['id']}})[_0x225b('0x42')](handleEntityNotFound(_0x35bebc,null))[_0x225b('0x42')](function(_0x45ab1a){if(_0x45ab1a){_0x316a9c=_0x45ab1a;_0x2dc6bd[_0x225b('0x30')]=_[_0x225b('0x31')](db[_0x225b('0x4c')][_0x225b('0x2c')]);_0x2dc6bd[_0x225b('0x32')]=_[_0x225b('0x31')](_0x156ac6['query']);_0x2dc6bd[_0x225b('0x33')]=_[_0x225b('0x34')](_0x2dc6bd[_0x225b('0x30')],_0x2dc6bd['query']);_0x3a8eed['attributes']=_['intersection'](_0x2dc6bd[_0x225b('0x30')],qs[_0x225b('0x36')](_0x156ac6[_0x225b('0x32')][_0x225b('0x36')]));_0x3a8eed[_0x225b('0x35')]=_0x3a8eed[_0x225b('0x35')][_0x225b('0x37')]?_0x3a8eed[_0x225b('0x35')]:_0x2dc6bd[_0x225b('0x30')];_0x3a8eed[_0x225b('0x39')]=qs['sort'](_0x156ac6['query'][_0x225b('0x3a')]);_0x3a8eed[_0x225b('0x3d')]=qs[_0x225b('0x33')](_[_0x225b('0x3b')](_0x156ac6[_0x225b('0x32')],_0x2dc6bd[_0x225b('0x33')]));if(_0x156ac6[_0x225b('0x32')]['filter']){_0x3a8eed[_0x225b('0x3d')]=_[_0x225b('0x3f')](_0x3a8eed[_0x225b('0x3d')],{'$or':_[_0x225b('0x2b')](_0x3a8eed[_0x225b('0x35')],function(_0x3670a9){var _0xf2cd7={};_0xf2cd7[_0x3670a9]={'$like':'%'+_0x156ac6[_0x225b('0x32')][_0x225b('0x3c')]+'%'};return _0xf2cd7;})});}_0x3a8eed=_['merge']({},_0x3a8eed,_0x156ac6['options']);return _0x316a9c[_0x225b('0x50')](_0x3a8eed);}})['then'](function(_0x2ecbcc){if(_0x2ecbcc){_0x56f5f4=_0x2ecbcc[_0x225b('0x37')];if(!_0x156ac6[_0x225b('0x32')][_0x225b('0x4d')](_0x225b('0x38'))){_0x3a8eed[_0x225b('0x1e')]=qs[_0x225b('0x1e')](_0x156ac6['query'][_0x225b('0x1e')]);_0x3a8eed[_0x225b('0x1b')]=qs[_0x225b('0x1b')](_0x156ac6[_0x225b('0x32')][_0x225b('0x1b')]);}return _0x316a9c[_0x225b('0x50')](_0x3a8eed);}})[_0x225b('0x42')](function(_0x55ff94){if(_0x55ff94){return _0x55ff94?{'count':_0x56f5f4,'rows':_0x55ff94}:null;}})[_0x225b('0x42')](respondWithResult(_0x35bebc,null))['catch'](handleError(_0x35bebc,null));};
\ No newline at end of file
+var _0x25ab=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','undefined','limit','count','offset','set','apply','save','update','destroy','sendStatus','error','name','send','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','SalesforceConfiguration','then','includeAll','findAll','show','params','options','find','catch','create','body','findOne','SalesforceField','hasOwnProperty','getFields','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x25ab,0xe7));var _0xb25a=function(_0x19b4e1,_0x4c99ac){_0x19b4e1=_0x19b4e1-0x0;var _0x2c71d1=_0x25ab[_0x19b4e1];return _0x2c71d1;};'use strict';var emlformat=require(_0xb25a('0x0'));var rimraf=require(_0xb25a('0x1'));var zipdir=require(_0xb25a('0x2'));var jsonpatch=require(_0xb25a('0x3'));var rp=require(_0xb25a('0x4'));var moment=require(_0xb25a('0x5'));var BPromise=require(_0xb25a('0x6'));var Mustache=require(_0xb25a('0x7'));var util=require(_0xb25a('0x8'));var path=require(_0xb25a('0x9'));var sox=require(_0xb25a('0xa'));var csv=require(_0xb25a('0xb'));var ejs=require(_0xb25a('0xc'));var fs=require('fs');var fs_extra=require(_0xb25a('0xd'));var _=require(_0xb25a('0xe'));var squel=require(_0xb25a('0xf'));var crypto=require(_0xb25a('0x10'));var jsforce=require(_0xb25a('0x11'));var deskjs=require(_0xb25a('0x12'));var toCsv=require(_0xb25a('0xb'));var querystring=require(_0xb25a('0x13'));var Papa=require(_0xb25a('0x14'));var Redis=require(_0xb25a('0x15'));var authService=require(_0xb25a('0x16'));var qs=require(_0xb25a('0x17'));var as=require(_0xb25a('0x18'));var hardwareService=require(_0xb25a('0x19'));var logger=require('../../config/logger')(_0xb25a('0x1a'));var utils=require(_0xb25a('0x1b'));var config=require(_0xb25a('0x1c'));var licenseUtil=require(_0xb25a('0x1d'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4b36db,_0x51f00f){_0x51f00f=_0x51f00f||0xcc;return function(_0x562000){if(_0x562000){return _0x4b36db['sendStatus'](_0x51f00f);}return _0x4b36db[_0xb25a('0x1e')](_0x51f00f)[_0xb25a('0x1f')]();};}function respondWithResult(_0x354e13,_0x3f8837){_0x3f8837=_0x3f8837||0xc8;return function(_0x4a3319){if(_0x4a3319){return _0x354e13[_0xb25a('0x1e')](_0x3f8837)[_0xb25a('0x20')](_0x4a3319);}};}function respondWithFilteredResult(_0x43e151,_0x4f1c10){return function(_0xac86c1){if(_0xac86c1){var _0x2e1fec=typeof _0x4f1c10['offset']===_0xb25a('0x21')&&typeof _0x4f1c10[_0xb25a('0x22')]===_0xb25a('0x21');var _0xd880de=_0xac86c1[_0xb25a('0x23')];var _0x208159=_0x2e1fec?0x0:_0x4f1c10[_0xb25a('0x24')];var _0x33b7da=_0x2e1fec?_0xac86c1[_0xb25a('0x23')]:_0x4f1c10[_0xb25a('0x24')]+_0x4f1c10[_0xb25a('0x22')];var _0x569281;if(_0x33b7da>=_0xd880de){_0x33b7da=_0xd880de;_0x569281=0xc8;}else{_0x569281=0xce;}_0x43e151[_0xb25a('0x1e')](_0x569281);return _0x43e151[_0xb25a('0x25')]('Content-Range',_0x208159+'-'+_0x33b7da+'/'+_0xd880de)[_0xb25a('0x20')](_0xac86c1);}return null;};}function patchUpdates(_0x586317){return function(_0x22de33){try{jsonpatch[_0xb25a('0x26')](_0x22de33,_0x586317,!![]);}catch(_0x55f259){return BPromise['reject'](_0x55f259);}return _0x22de33[_0xb25a('0x27')]();};}function saveUpdates(_0x37de98,_0x647640){return function(_0x3a3ed2){if(_0x3a3ed2){return _0x3a3ed2[_0xb25a('0x28')](_0x37de98)['then'](function(_0x5d6530){return _0x5d6530;});}return null;};}function removeEntity(_0x491ac0,_0x1cf6dd){return function(_0xa103e1){if(_0xa103e1){return _0xa103e1[_0xb25a('0x29')]()['then'](function(){_0x491ac0[_0xb25a('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x83da8e,_0x4c996f){return function(_0x5e17b2){if(!_0x5e17b2){_0x83da8e[_0xb25a('0x2a')](0x194);}return _0x5e17b2;};}function handleError(_0x54e94d,_0x37dbfc){_0x37dbfc=_0x37dbfc||0x1f4;return function(_0x3ee486){logger[_0xb25a('0x2b')](_0x3ee486['stack']);if(_0x3ee486[_0xb25a('0x2c')]){delete _0x3ee486[_0xb25a('0x2c')];}_0x54e94d[_0xb25a('0x1e')](_0x37dbfc)[_0xb25a('0x2d')](_0x3ee486);};}exports['index']=function(_0x51c3ed,_0x4b0bbf){var _0x1f4298={},_0x1ca885={},_0x1bc7a4={'count':0x0,'rows':[]};var _0x54cb25=_[_0xb25a('0x2e')](db['SalesforceConfiguration'][_0xb25a('0x2f')],function(_0x2b30b4){return{'name':_0x2b30b4[_0xb25a('0x30')],'type':_0x2b30b4[_0xb25a('0x31')]['key']};});_0x1ca885[_0xb25a('0x32')]=_[_0xb25a('0x2e')](_0x54cb25,_0xb25a('0x2c'));_0x1ca885[_0xb25a('0x33')]=_[_0xb25a('0x34')](_0x51c3ed[_0xb25a('0x33')]);_0x1ca885[_0xb25a('0x35')]=_[_0xb25a('0x36')](_0x1ca885[_0xb25a('0x32')],_0x1ca885['query']);_0x1f4298[_0xb25a('0x37')]=_[_0xb25a('0x36')](_0x1ca885['model'],qs['fields'](_0x51c3ed[_0xb25a('0x33')][_0xb25a('0x38')]));_0x1f4298['attributes']=_0x1f4298[_0xb25a('0x37')][_0xb25a('0x39')]?_0x1f4298['attributes']:_0x1ca885[_0xb25a('0x32')];if(!_0x51c3ed['query']['hasOwnProperty'](_0xb25a('0x3a'))){_0x1f4298['limit']=qs[_0xb25a('0x22')](_0x51c3ed[_0xb25a('0x33')][_0xb25a('0x22')]);_0x1f4298[_0xb25a('0x24')]=qs['offset'](_0x51c3ed[_0xb25a('0x33')][_0xb25a('0x24')]);}_0x1f4298[_0xb25a('0x3b')]=qs[_0xb25a('0x3c')](_0x51c3ed[_0xb25a('0x33')][_0xb25a('0x3c')]);_0x1f4298[_0xb25a('0x3d')]=qs[_0xb25a('0x35')](_[_0xb25a('0x3e')](_0x51c3ed['query'],_0x1ca885[_0xb25a('0x35')]),_0x54cb25);if(_0x51c3ed[_0xb25a('0x33')]['filter']){_0x1f4298[_0xb25a('0x3d')]=_[_0xb25a('0x3f')](_0x1f4298[_0xb25a('0x3d')],{'$or':_[_0xb25a('0x2e')](_0x54cb25,function(_0x387bd8){if(_0x387bd8[_0xb25a('0x31')]!==_0xb25a('0x40')){var _0x1a1fb1={};_0x1a1fb1[_0x387bd8[_0xb25a('0x2c')]]={'$like':'%'+_0x51c3ed[_0xb25a('0x33')][_0xb25a('0x41')]+'%'};return _0x1a1fb1;}})});}_0x1f4298=_[_0xb25a('0x3f')]({},_0x1f4298,_0x51c3ed['options']);var _0x2f2246={'where':_0x1f4298['where']};return db[_0xb25a('0x42')]['count'](_0x2f2246)[_0xb25a('0x43')](function(_0x3c6a2a){_0x1bc7a4[_0xb25a('0x23')]=_0x3c6a2a;if(_0x51c3ed[_0xb25a('0x33')][_0xb25a('0x44')]){_0x1f4298['include']=[{'all':!![]}];}return db[_0xb25a('0x42')][_0xb25a('0x45')](_0x1f4298);})[_0xb25a('0x43')](function(_0xe5f90e){_0x1bc7a4['rows']=_0xe5f90e;return _0x1bc7a4;})[_0xb25a('0x43')](respondWithFilteredResult(_0x4b0bbf,_0x1f4298))['catch'](handleError(_0x4b0bbf,null));};exports[_0xb25a('0x46')]=function(_0x408765,_0x334132){var _0x4455b1={'raw':![],'where':{'id':_0x408765[_0xb25a('0x47')]['id']}},_0x59fbf8={};_0x59fbf8[_0xb25a('0x32')]=_['keys'](db[_0xb25a('0x42')][_0xb25a('0x2f')]);_0x59fbf8['query']=_[_0xb25a('0x34')](_0x408765['query']);_0x59fbf8['filters']=_['intersection'](_0x59fbf8['model'],_0x59fbf8[_0xb25a('0x33')]);_0x4455b1[_0xb25a('0x37')]=_[_0xb25a('0x36')](_0x59fbf8['model'],qs[_0xb25a('0x38')](_0x408765[_0xb25a('0x33')][_0xb25a('0x38')]));_0x4455b1[_0xb25a('0x37')]=_0x4455b1[_0xb25a('0x37')]['length']?_0x4455b1[_0xb25a('0x37')]:_0x59fbf8[_0xb25a('0x32')];if(_0x408765[_0xb25a('0x33')][_0xb25a('0x44')]){_0x4455b1['include']=[{'all':!![]}];}_0x4455b1=_[_0xb25a('0x3f')]({},_0x4455b1,_0x408765[_0xb25a('0x48')]);return db['SalesforceConfiguration'][_0xb25a('0x49')](_0x4455b1)[_0xb25a('0x43')](handleEntityNotFound(_0x334132,null))[_0xb25a('0x43')](respondWithResult(_0x334132,null))[_0xb25a('0x4a')](handleError(_0x334132,null));};exports[_0xb25a('0x4b')]=function(_0xbd8d4a,_0x582b70){return db[_0xb25a('0x42')][_0xb25a('0x4b')](_0xbd8d4a[_0xb25a('0x4c')],{})[_0xb25a('0x43')](respondWithResult(_0x582b70,0xc9))[_0xb25a('0x4a')](handleError(_0x582b70,null));};exports[_0xb25a('0x28')]=function(_0x16316e,_0x4b8281){if(_0x16316e['body']['id']){delete _0x16316e[_0xb25a('0x4c')]['id'];}return db[_0xb25a('0x42')]['find']({'where':{'id':_0x16316e['params']['id']}})['then'](handleEntityNotFound(_0x4b8281,null))[_0xb25a('0x43')](saveUpdates(_0x16316e['body'],null))[_0xb25a('0x43')](respondWithResult(_0x4b8281,null))[_0xb25a('0x4a')](handleError(_0x4b8281,null));};exports[_0xb25a('0x29')]=function(_0x503040,_0x8da82b){return db[_0xb25a('0x42')]['find']({'where':{'id':_0x503040[_0xb25a('0x47')]['id']}})[_0xb25a('0x43')](handleEntityNotFound(_0x8da82b,null))[_0xb25a('0x43')](removeEntity(_0x8da82b,null))[_0xb25a('0x4a')](handleError(_0x8da82b,null));};exports['getFields']=function(_0x80c025,_0x20a1f0,_0x3645f1){var _0xcc74b4={};var _0x4835dc={};var _0x59d4ec;var _0x337a38;return db[_0xb25a('0x42')][_0xb25a('0x4d')]({'where':{'id':_0x80c025[_0xb25a('0x47')]['id']}})[_0xb25a('0x43')](handleEntityNotFound(_0x20a1f0,null))[_0xb25a('0x43')](function(_0x1a9f89){if(_0x1a9f89){_0x59d4ec=_0x1a9f89;_0x4835dc['model']=_[_0xb25a('0x34')](db[_0xb25a('0x4e')][_0xb25a('0x2f')]);_0x4835dc[_0xb25a('0x33')]=_[_0xb25a('0x34')](_0x80c025[_0xb25a('0x33')]);_0x4835dc[_0xb25a('0x35')]=_['intersection'](_0x4835dc['model'],_0x4835dc[_0xb25a('0x33')]);_0xcc74b4['attributes']=_['intersection'](_0x4835dc[_0xb25a('0x32')],qs[_0xb25a('0x38')](_0x80c025['query'][_0xb25a('0x38')]));_0xcc74b4[_0xb25a('0x37')]=_0xcc74b4[_0xb25a('0x37')][_0xb25a('0x39')]?_0xcc74b4['attributes']:_0x4835dc['model'];_0xcc74b4[_0xb25a('0x3b')]=qs[_0xb25a('0x3c')](_0x80c025[_0xb25a('0x33')][_0xb25a('0x3c')]);_0xcc74b4[_0xb25a('0x3d')]=qs['filters'](_['pick'](_0x80c025[_0xb25a('0x33')],_0x4835dc[_0xb25a('0x35')]));if(_0x80c025[_0xb25a('0x33')][_0xb25a('0x41')]){_0xcc74b4[_0xb25a('0x3d')]=_[_0xb25a('0x3f')](_0xcc74b4[_0xb25a('0x3d')],{'$or':_[_0xb25a('0x2e')](_0xcc74b4[_0xb25a('0x37')],function(_0x1b3d0c){var _0x44e3c3={};_0x44e3c3[_0x1b3d0c]={'$like':'%'+_0x80c025[_0xb25a('0x33')][_0xb25a('0x41')]+'%'};return _0x44e3c3;})});}_0xcc74b4=_[_0xb25a('0x3f')]({},_0xcc74b4,_0x80c025['options']);return _0x59d4ec['getFields'](_0xcc74b4);}})['then'](function(_0x4f613c){if(_0x4f613c){_0x337a38=_0x4f613c[_0xb25a('0x39')];if(!_0x80c025[_0xb25a('0x33')][_0xb25a('0x4f')](_0xb25a('0x3a'))){_0xcc74b4[_0xb25a('0x22')]=qs[_0xb25a('0x22')](_0x80c025[_0xb25a('0x33')][_0xb25a('0x22')]);_0xcc74b4['offset']=qs[_0xb25a('0x24')](_0x80c025[_0xb25a('0x33')][_0xb25a('0x24')]);}return _0x59d4ec[_0xb25a('0x50')](_0xcc74b4);}})[_0xb25a('0x43')](function(_0xe631f2){if(_0xe631f2){return _0xe631f2?{'count':_0x337a38,'rows':_0xe631f2}:null;}})['then'](respondWithResult(_0x20a1f0,null))[_0xb25a('0x4a')](handleError(_0x20a1f0,null));};exports[_0xb25a('0x51')]=function(_0x592c05,_0x2d00ad,_0x2aa8bb){var _0x1f04c9={};var _0x58ca26={};var _0x11278d;var _0x5b8805;return db['SalesforceConfiguration'][_0xb25a('0x4d')]({'where':{'id':_0x592c05[_0xb25a('0x47')]['id']}})[_0xb25a('0x43')](handleEntityNotFound(_0x2d00ad,null))['then'](function(_0x149e58){if(_0x149e58){_0x11278d=_0x149e58;_0x58ca26[_0xb25a('0x32')]=_[_0xb25a('0x34')](db[_0xb25a('0x4e')][_0xb25a('0x2f')]);_0x58ca26[_0xb25a('0x33')]=_[_0xb25a('0x34')](_0x592c05[_0xb25a('0x33')]);_0x58ca26[_0xb25a('0x35')]=_['intersection'](_0x58ca26[_0xb25a('0x32')],_0x58ca26[_0xb25a('0x33')]);_0x1f04c9[_0xb25a('0x37')]=_['intersection'](_0x58ca26['model'],qs['fields'](_0x592c05[_0xb25a('0x33')]['fields']));_0x1f04c9['attributes']=_0x1f04c9['attributes'][_0xb25a('0x39')]?_0x1f04c9[_0xb25a('0x37')]:_0x58ca26[_0xb25a('0x32')];_0x1f04c9[_0xb25a('0x3b')]=qs['sort'](_0x592c05[_0xb25a('0x33')][_0xb25a('0x3c')]);_0x1f04c9['where']=qs[_0xb25a('0x35')](_['pick'](_0x592c05[_0xb25a('0x33')],_0x58ca26[_0xb25a('0x35')]));if(_0x592c05[_0xb25a('0x33')][_0xb25a('0x41')]){_0x1f04c9[_0xb25a('0x3d')]=_[_0xb25a('0x3f')](_0x1f04c9[_0xb25a('0x3d')],{'$or':_[_0xb25a('0x2e')](_0x1f04c9[_0xb25a('0x37')],function(_0x1f57ee){var _0x1d7930={};_0x1d7930[_0x1f57ee]={'$like':'%'+_0x592c05[_0xb25a('0x33')][_0xb25a('0x41')]+'%'};return _0x1d7930;})});}_0x1f04c9=_[_0xb25a('0x3f')]({},_0x1f04c9,_0x592c05[_0xb25a('0x48')]);return _0x11278d[_0xb25a('0x51')](_0x1f04c9);}})[_0xb25a('0x43')](function(_0x5ef985){if(_0x5ef985){_0x5b8805=_0x5ef985[_0xb25a('0x39')];if(!_0x592c05[_0xb25a('0x33')][_0xb25a('0x4f')](_0xb25a('0x3a'))){_0x1f04c9[_0xb25a('0x22')]=qs[_0xb25a('0x22')](_0x592c05[_0xb25a('0x33')][_0xb25a('0x22')]);_0x1f04c9[_0xb25a('0x24')]=qs[_0xb25a('0x24')](_0x592c05[_0xb25a('0x33')][_0xb25a('0x24')]);}return _0x11278d['getSubjects'](_0x1f04c9);}})['then'](function(_0x18ad1c){if(_0x18ad1c){return _0x18ad1c?{'count':_0x5b8805,'rows':_0x18ad1c}:null;}})[_0xb25a('0x43')](respondWithResult(_0x2d00ad,null))[_0xb25a('0x4a')](handleError(_0x2d00ad,null));};exports['getDescriptions']=function(_0x521ccb,_0x232787,_0x25b414){var _0xeaacd2={};var _0x261f66={};var _0x1e5af8;var _0x8a0975;return db[_0xb25a('0x42')][_0xb25a('0x4d')]({'where':{'id':_0x521ccb[_0xb25a('0x47')]['id']}})[_0xb25a('0x43')](handleEntityNotFound(_0x232787,null))[_0xb25a('0x43')](function(_0x38fb51){if(_0x38fb51){_0x1e5af8=_0x38fb51;_0x261f66['model']=_[_0xb25a('0x34')](db[_0xb25a('0x4e')][_0xb25a('0x2f')]);_0x261f66[_0xb25a('0x33')]=_[_0xb25a('0x34')](_0x521ccb['query']);_0x261f66['filters']=_[_0xb25a('0x36')](_0x261f66[_0xb25a('0x32')],_0x261f66[_0xb25a('0x33')]);_0xeaacd2[_0xb25a('0x37')]=_['intersection'](_0x261f66['model'],qs['fields'](_0x521ccb[_0xb25a('0x33')][_0xb25a('0x38')]));_0xeaacd2[_0xb25a('0x37')]=_0xeaacd2['attributes']['length']?_0xeaacd2[_0xb25a('0x37')]:_0x261f66[_0xb25a('0x32')];_0xeaacd2['order']=qs[_0xb25a('0x3c')](_0x521ccb[_0xb25a('0x33')][_0xb25a('0x3c')]);_0xeaacd2[_0xb25a('0x3d')]=qs[_0xb25a('0x35')](_[_0xb25a('0x3e')](_0x521ccb['query'],_0x261f66[_0xb25a('0x35')]));if(_0x521ccb[_0xb25a('0x33')][_0xb25a('0x41')]){_0xeaacd2[_0xb25a('0x3d')]=_[_0xb25a('0x3f')](_0xeaacd2['where'],{'$or':_[_0xb25a('0x2e')](_0xeaacd2['attributes'],function(_0x40aa0d){var _0x45d7dd={};_0x45d7dd[_0x40aa0d]={'$like':'%'+_0x521ccb[_0xb25a('0x33')][_0xb25a('0x41')]+'%'};return _0x45d7dd;})});}_0xeaacd2=_[_0xb25a('0x3f')]({},_0xeaacd2,_0x521ccb[_0xb25a('0x48')]);return _0x1e5af8[_0xb25a('0x52')](_0xeaacd2);}})['then'](function(_0x16d84a){if(_0x16d84a){_0x8a0975=_0x16d84a[_0xb25a('0x39')];if(!_0x521ccb['query'][_0xb25a('0x4f')](_0xb25a('0x3a'))){_0xeaacd2['limit']=qs[_0xb25a('0x22')](_0x521ccb[_0xb25a('0x33')][_0xb25a('0x22')]);_0xeaacd2[_0xb25a('0x24')]=qs[_0xb25a('0x24')](_0x521ccb['query'][_0xb25a('0x24')]);}return _0x1e5af8[_0xb25a('0x52')](_0xeaacd2);}})[_0xb25a('0x43')](function(_0x5687b5){if(_0x5687b5){return _0x5687b5?{'count':_0x8a0975,'rows':_0x5687b5}:null;}})['then'](respondWithResult(_0x232787,null))[_0xb25a('0x4a')](handleError(_0x232787,null));};
\ No newline at end of file
index c7daacb..220ad8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9be0=['path','rimraf','../../config/environment','exports','define','SalesforceConfiguration','int_salesforce_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x54b48c,_0x4b29ce){var _0x43f074=function(_0x4d0a6d){while(--_0x4d0a6d){_0x54b48c['push'](_0x54b48c['shift']());}};_0x43f074(++_0x4b29ce);}(_0x9be0,0x157));var _0x09be=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x9be0[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0x09be('0x0'));var util=require(_0x09be('0x1'));var logger=require(_0x09be('0x2'))(_0x09be('0x3'));var moment=require(_0x09be('0x4'));var BPromise=require(_0x09be('0x5'));var rp=require(_0x09be('0x6'));var fs=require('fs');var path=require(_0x09be('0x7'));var rimraf=require(_0x09be('0x8'));var config=require(_0x09be('0x9'));var attributes=require('./intSalesforceConfiguration.attributes');module[_0x09be('0xa')]=function(_0x3691cf,_0x2c7940){return _0x3691cf[_0x09be('0xb')](_0x09be('0xc'),attributes,{'tableName':_0x09be('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdd4e=['lodash','util','../../config/logger','api','moment','request-promise','../../config/environment','exports','define','int_salesforce_configurations'];(function(_0xbb091,_0x3fe7ee){var _0x467a04=function(_0x3a978d){while(--_0x3a978d){_0xbb091['push'](_0xbb091['shift']());}};_0x467a04(++_0x3fe7ee);}(_0xdd4e,0x8c));var _0xedd4=function(_0x6d6a66,_0x2924af){_0x6d6a66=_0x6d6a66-0x0;var _0x11eb6e=_0xdd4e[_0x6d6a66];return _0x11eb6e;};'use strict';var _=require(_0xedd4('0x0'));var util=require(_0xedd4('0x1'));var logger=require(_0xedd4('0x2'))(_0xedd4('0x3'));var moment=require(_0xedd4('0x4'));var BPromise=require('bluebird');var rp=require(_0xedd4('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xedd4('0x6'));var attributes=require('./intSalesforceConfiguration.attributes');module[_0xedd4('0x7')]=function(_0x2c95ca,_0x4adaad){return _0x2c95ca[_0xedd4('0x8')]('SalesforceConfiguration',attributes,{'tableName':_0xedd4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 87f2a64..0bd3f58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2a7=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','lodash','util','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb2a7,0xa5));var _0x7b2a=function(_0x156914,_0x271849){_0x156914=_0x156914-0x0;var _0x4c2321=_0xb2a7[_0x156914];return _0x4c2321;};'use strict';var _=require(_0x7b2a('0x0'));var util=require(_0x7b2a('0x1'));var moment=require(_0x7b2a('0x2'));var BPromise=require(_0x7b2a('0x3'));var rs=require(_0x7b2a('0x4'));var fs=require('fs');var Redis=require(_0x7b2a('0x5'));var db=require(_0x7b2a('0x6'))['db'];var utils=require(_0x7b2a('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x7b2a('0x8'));var jayson=require(_0x7b2a('0x9'));var client=jayson['client'][_0x7b2a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2a7a1f,_0x12dd17,_0x162a1b){return new BPromise(function(_0xd5b020,_0x48b23c){return client[_0x7b2a('0xb')](_0x2a7a1f,_0x162a1b)[_0x7b2a('0xc')](function(_0x490231){logger[_0x7b2a('0xd')](_0x7b2a('0xe'),_0x12dd17,'request\x20sent');logger['debug']('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x12dd17,'request\x20sent',JSON['stringify'](_0x490231));if(_0x490231[_0x7b2a('0xf')]){if(_0x490231[_0x7b2a('0xf')][_0x7b2a('0x10')]===0x1f4){logger[_0x7b2a('0xf')](_0x7b2a('0xe'),_0x12dd17,_0x490231[_0x7b2a('0xf')][_0x7b2a('0x11')]);return _0x48b23c(_0x490231[_0x7b2a('0xf')]['message']);}logger[_0x7b2a('0xf')](_0x7b2a('0xe'),_0x12dd17,_0x490231[_0x7b2a('0xf')][_0x7b2a('0x11')]);return _0xd5b020(_0x490231[_0x7b2a('0xf')]['message']);}else{logger[_0x7b2a('0xd')](_0x7b2a('0xe'),_0x12dd17,_0x7b2a('0x12'));_0xd5b020(_0x490231[_0x7b2a('0x13')][_0x7b2a('0x11')]);}})[_0x7b2a('0x14')](function(_0x25b5d1){logger[_0x7b2a('0xf')]('SalesforceConfiguration,\x20%s,\x20%s',_0x12dd17,_0x25b5d1);_0x48b23c(_0x25b5d1);});});}
\ No newline at end of file
+var _0x0249=['client','request','then','SalesforceConfiguration,\x20%s,\x20%s','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise'];(function(_0x19d49e,_0x3300ee){var _0x9f2723=function(_0x57d6fd){while(--_0x57d6fd){_0x19d49e['push'](_0x19d49e['shift']());}};_0x9f2723(++_0x3300ee);}(_0x0249,0x8b));var _0x9024=function(_0x443866,_0x15f7de){_0x443866=_0x443866-0x0;var _0x471bb6=_0x0249[_0x443866];return _0x471bb6;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9024('0x0'));var BPromise=require(_0x9024('0x1'));var rs=require(_0x9024('0x2'));var fs=require('fs');var Redis=require(_0x9024('0x3'));var db=require(_0x9024('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x9024('0x5'))(_0x9024('0x6'));var config=require('../../config/environment');var jayson=require(_0x9024('0x7'));var client=jayson[_0x9024('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x47e919,_0x1637c1,_0x511747){return new BPromise(function(_0x106112,_0x4eb096){return client[_0x9024('0x9')](_0x47e919,_0x511747)[_0x9024('0xa')](function(_0x31ca98){logger['info'](_0x9024('0xb'),_0x1637c1,'request\x20sent');logger[_0x9024('0xc')](_0x9024('0xd'),_0x1637c1,_0x9024('0xe'),JSON[_0x9024('0xf')](_0x31ca98));if(_0x31ca98['error']){if(_0x31ca98[_0x9024('0x10')][_0x9024('0x11')]===0x1f4){logger[_0x9024('0x10')]('SalesforceConfiguration,\x20%s,\x20%s',_0x1637c1,_0x31ca98['error'][_0x9024('0x12')]);return _0x4eb096(_0x31ca98[_0x9024('0x10')][_0x9024('0x12')]);}logger[_0x9024('0x10')](_0x9024('0xb'),_0x1637c1,_0x31ca98[_0x9024('0x10')][_0x9024('0x12')]);return _0x106112(_0x31ca98[_0x9024('0x10')][_0x9024('0x12')]);}else{logger['info'](_0x9024('0xb'),_0x1637c1,_0x9024('0xe'));_0x106112(_0x31ca98[_0x9024('0x13')][_0x9024('0x12')]);}})[_0x9024('0x14')](function(_0x3c2bfa){logger[_0x9024('0x10')]('SalesforceConfiguration,\x20%s,\x20%s',_0x1637c1,_0x3c2bfa);_0x4eb096(_0x3c2bfa);});});}
\ No newline at end of file
index 2ba10ce..857157f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x044c=['create','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../config/environment','./intSalesforceField.controller','get','isAuthenticated','index','/:id','post'];(function(_0x13f9c3,_0x2036c0){var _0x22185a=function(_0x36a7e6){while(--_0x36a7e6){_0x13f9c3['push'](_0x13f9c3['shift']());}};_0x22185a(++_0x2036c0);}(_0x044c,0x158));var _0xc044=function(_0x53de0f,_0x3ce637){_0x53de0f=_0x53de0f-0x0;var _0x5ae1be=_0x044c[_0x53de0f];return _0x5ae1be;};'use strict';var multer=require(_0xc044('0x0'));var util=require(_0xc044('0x1'));var path=require(_0xc044('0x2'));var timeout=require('connect-timeout');var express=require(_0xc044('0x3'));var router=express[_0xc044('0x4')]();var fs_extra=require(_0xc044('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xc044('0x6'));var controller=require(_0xc044('0x7'));router[_0xc044('0x8')]('/',auth[_0xc044('0x9')](),controller[_0xc044('0xa')]);router[_0xc044('0x8')](_0xc044('0xb'),auth[_0xc044('0x9')](),controller['show']);router[_0xc044('0xc')]('/',auth[_0xc044('0x9')](),controller[_0xc044('0xd')]);router['put'](_0xc044('0xb'),auth[_0xc044('0x9')](),controller['update']);router[_0xc044('0xe')](_0xc044('0xb'),auth[_0xc044('0x9')](),controller[_0xc044('0xf')]);module[_0xc044('0x10')]=router;
\ No newline at end of file
+var _0xb6ad=['connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xb6ad,0x14d));var _0xdb6a=function(_0x4b1fd7,_0x562f01){_0x4b1fd7=_0x4b1fd7-0x0;var _0x555b16=_0xb6ad[_0x4b1fd7];return _0x555b16;};'use strict';var multer=require(_0xdb6a('0x0'));var util=require(_0xdb6a('0x1'));var path=require(_0xdb6a('0x2'));var timeout=require(_0xdb6a('0x3'));var express=require('express');var router=express[_0xdb6a('0x4')]();var fs_extra=require(_0xdb6a('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xdb6a('0x6'));var config=require(_0xdb6a('0x7'));var controller=require(_0xdb6a('0x8'));router[_0xdb6a('0x9')]('/',auth[_0xdb6a('0xa')](),controller[_0xdb6a('0xb')]);router['get'](_0xdb6a('0xc'),auth['isAuthenticated'](),controller[_0xdb6a('0xd')]);router[_0xdb6a('0xe')]('/',auth[_0xdb6a('0xa')](),controller[_0xdb6a('0xf')]);router[_0xdb6a('0x10')](_0xdb6a('0xc'),auth[_0xdb6a('0xa')](),controller[_0xdb6a('0x11')]);router[_0xdb6a('0x12')]('/:id',auth['isAuthenticated'](),controller[_0xdb6a('0x13')]);module[_0xdb6a('0x14')]=router;
\ No newline at end of file
index ffd47ea..1324b15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33bf=['STRING','string','exports','ENUM','variable','customVariable','keyValue','picklist'];(function(_0x1f2768,_0x3a9c1b){var _0x383ed6=function(_0x5ae3c6){while(--_0x5ae3c6){_0x1f2768['push'](_0x1f2768['shift']());}};_0x383ed6(++_0x3a9c1b);}(_0x33bf,0x17a));var _0xf33b=function(_0x45d1fd,_0x463212){_0x45d1fd=_0x45d1fd-0x0;var _0xd0e542=_0x33bf[_0x45d1fd];return _0xd0e542;};'use strict';var Sequelize=require('sequelize');module[_0xf33b('0x0')]={'type':{'type':Sequelize[_0xf33b('0x1')]('string',_0xf33b('0x2'),_0xf33b('0x3'),_0xf33b('0x4'),_0xf33b('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0xf33b('0x6')]},'key':{'type':Sequelize[_0xf33b('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0xf33b('0x7'),_0xf33b('0x2'),_0xf33b('0x3'))},'keyContent':{'type':Sequelize[_0xf33b('0x6')]},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize[_0xf33b('0x6')]}};
\ No newline at end of file
+var _0x9924=['exports','string','variable','picklist','STRING','customVariable'];(function(_0x350ff3,_0x2c05a8){var _0x9d68cb=function(_0x4f3d4c){while(--_0x4f3d4c){_0x350ff3['push'](_0x350ff3['shift']());}};_0x9d68cb(++_0x2c05a8);}(_0x9924,0xe4));var _0x4992=function(_0x38305d,_0x18ad6f){_0x38305d=_0x38305d-0x0;var _0x23db51=_0x9924[_0x38305d];return _0x23db51;};'use strict';var Sequelize=require('sequelize');module[_0x4992('0x0')]={'type':{'type':Sequelize['ENUM'](_0x4992('0x1'),_0x4992('0x2'),'customVariable','keyValue',_0x4992('0x3')),'defaultValue':'string'},'content':{'type':Sequelize[_0x4992('0x4')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0x4992('0x1'),_0x4992('0x2'),_0x4992('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x4992('0x4')]},'variableName':{'type':Sequelize[_0x4992('0x4')]}};
\ No newline at end of file
index bdf3203..1640da0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a76=['params','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','SalesforceField','fieldName','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','options','includeAll','include','findAll','rows','catch','show','rawAttributes','create','body','find'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9a76,0x131));var _0x69a7=function(_0x1d5f26,_0x1005d6){_0x1d5f26=_0x1d5f26-0x0;var _0x220487=_0x9a76[_0x1d5f26];return _0x220487;};'use strict';var emlformat=require(_0x69a7('0x0'));var rimraf=require(_0x69a7('0x1'));var zipdir=require(_0x69a7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x69a7('0x3'));var BPromise=require(_0x69a7('0x4'));var Mustache=require(_0x69a7('0x5'));var util=require(_0x69a7('0x6'));var path=require('path');var sox=require(_0x69a7('0x7'));var csv=require(_0x69a7('0x8'));var ejs=require(_0x69a7('0x9'));var fs=require('fs');var fs_extra=require(_0x69a7('0xa'));var _=require('lodash');var squel=require(_0x69a7('0xb'));var crypto=require(_0x69a7('0xc'));var jsforce=require(_0x69a7('0xd'));var deskjs=require(_0x69a7('0xe'));var toCsv=require('to-csv');var querystring=require(_0x69a7('0xf'));var Papa=require(_0x69a7('0x10'));var Redis=require(_0x69a7('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x69a7('0x12'));var as=require(_0x69a7('0x13'));var hardwareService=require(_0x69a7('0x14'));var logger=require('../../config/logger')(_0x69a7('0x15'));var utils=require(_0x69a7('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x69a7('0x17'));var db=require(_0x69a7('0x18'))['db'];function respondWithStatusCode(_0x4491b0,_0x274c7a){_0x274c7a=_0x274c7a||0xcc;return function(_0x5e2a0f){if(_0x5e2a0f){return _0x4491b0['sendStatus'](_0x274c7a);}return _0x4491b0[_0x69a7('0x19')](_0x274c7a)[_0x69a7('0x1a')]();};}function respondWithResult(_0x1a4ca6,_0x397ead){_0x397ead=_0x397ead||0xc8;return function(_0x2f205e){if(_0x2f205e){return _0x1a4ca6[_0x69a7('0x19')](_0x397ead)[_0x69a7('0x1b')](_0x2f205e);}};}function respondWithFilteredResult(_0x200b28,_0x42bec8){return function(_0x58886c){if(_0x58886c){var _0x3e65a9=typeof _0x42bec8[_0x69a7('0x1c')]===_0x69a7('0x1d')&&typeof _0x42bec8[_0x69a7('0x1e')]===_0x69a7('0x1d');var _0x26989a=_0x58886c[_0x69a7('0x1f')];var _0x2996c9=_0x3e65a9?0x0:_0x42bec8['offset'];var _0x3aa2b7=_0x3e65a9?_0x58886c[_0x69a7('0x1f')]:_0x42bec8[_0x69a7('0x1c')]+_0x42bec8['limit'];var _0x331541;if(_0x3aa2b7>=_0x26989a){_0x3aa2b7=_0x26989a;_0x331541=0xc8;}else{_0x331541=0xce;}_0x200b28['status'](_0x331541);return _0x200b28[_0x69a7('0x20')](_0x69a7('0x21'),_0x2996c9+'-'+_0x3aa2b7+'/'+_0x26989a)[_0x69a7('0x1b')](_0x58886c);}return null;};}function patchUpdates(_0x18ce7b){return function(_0x1e20fa){try{jsonpatch[_0x69a7('0x22')](_0x1e20fa,_0x18ce7b,!![]);}catch(_0x5d6d8f){return BPromise[_0x69a7('0x23')](_0x5d6d8f);}return _0x1e20fa[_0x69a7('0x24')]();};}function saveUpdates(_0xa9115d,_0x468abb){return function(_0x5f3fda){if(_0x5f3fda){return _0x5f3fda[_0x69a7('0x25')](_0xa9115d)[_0x69a7('0x26')](function(_0xc7e32d){return _0xc7e32d;});}return null;};}function removeEntity(_0x1b8d56,_0x3f863e){return function(_0xf2ad32){if(_0xf2ad32){return _0xf2ad32['destroy']()['then'](function(){_0x1b8d56[_0x69a7('0x19')](0xcc)[_0x69a7('0x1a')]();});}};}function handleEntityNotFound(_0x2bdcc8,_0x3436d6){return function(_0x4f05c9){if(!_0x4f05c9){_0x2bdcc8['sendStatus'](0x194);}return _0x4f05c9;};}function handleError(_0x19a652,_0x554d89){_0x554d89=_0x554d89||0x1f4;return function(_0x5708d4){logger[_0x69a7('0x27')](_0x5708d4[_0x69a7('0x28')]);if(_0x5708d4[_0x69a7('0x29')]){delete _0x5708d4[_0x69a7('0x29')];}_0x19a652[_0x69a7('0x19')](_0x554d89)[_0x69a7('0x2a')](_0x5708d4);};}exports[_0x69a7('0x2b')]=function(_0x5482b1,_0x58a96c){var _0x1eb449={},_0x3c9e08={},_0x50b99c={'count':0x0,'rows':[]};var _0x3e02d1=_[_0x69a7('0x2c')](db[_0x69a7('0x2d')]['rawAttributes'],function(_0x5c4d43){return{'name':_0x5c4d43[_0x69a7('0x2e')],'type':_0x5c4d43['type'][_0x69a7('0x2f')]};});_0x3c9e08['model']=_['map'](_0x3e02d1,_0x69a7('0x29'));_0x3c9e08[_0x69a7('0x30')]=_[_0x69a7('0x31')](_0x5482b1[_0x69a7('0x30')]);_0x3c9e08[_0x69a7('0x32')]=_[_0x69a7('0x33')](_0x3c9e08[_0x69a7('0x34')],_0x3c9e08['query']);_0x1eb449['attributes']=_['intersection'](_0x3c9e08[_0x69a7('0x34')],qs[_0x69a7('0x35')](_0x5482b1[_0x69a7('0x30')][_0x69a7('0x35')]));_0x1eb449[_0x69a7('0x36')]=_0x1eb449['attributes'][_0x69a7('0x37')]?_0x1eb449[_0x69a7('0x36')]:_0x3c9e08[_0x69a7('0x34')];if(!_0x5482b1[_0x69a7('0x30')][_0x69a7('0x38')](_0x69a7('0x39'))){_0x1eb449['limit']=qs[_0x69a7('0x1e')](_0x5482b1['query'][_0x69a7('0x1e')]);_0x1eb449['offset']=qs['offset'](_0x5482b1[_0x69a7('0x30')][_0x69a7('0x1c')]);}_0x1eb449[_0x69a7('0x3a')]=qs[_0x69a7('0x3b')](_0x5482b1[_0x69a7('0x30')][_0x69a7('0x3b')]);_0x1eb449['where']=qs[_0x69a7('0x32')](_[_0x69a7('0x3c')](_0x5482b1[_0x69a7('0x30')],_0x3c9e08[_0x69a7('0x32')]),_0x3e02d1);if(_0x5482b1[_0x69a7('0x30')][_0x69a7('0x3d')]){_0x1eb449[_0x69a7('0x3e')]=_['merge'](_0x1eb449[_0x69a7('0x3e')],{'$or':_[_0x69a7('0x2c')](_0x3e02d1,function(_0x346801){if(_0x346801[_0x69a7('0x3f')]!=='VIRTUAL'){var _0x499a92={};_0x499a92[_0x346801[_0x69a7('0x29')]]={'$like':'%'+_0x5482b1[_0x69a7('0x30')][_0x69a7('0x3d')]+'%'};return _0x499a92;}})});}_0x1eb449=_['merge']({},_0x1eb449,_0x5482b1[_0x69a7('0x40')]);var _0x43bbcc={'where':_0x1eb449[_0x69a7('0x3e')]};return db[_0x69a7('0x2d')][_0x69a7('0x1f')](_0x43bbcc)['then'](function(_0x1b0297){_0x50b99c[_0x69a7('0x1f')]=_0x1b0297;if(_0x5482b1['query'][_0x69a7('0x41')]){_0x1eb449[_0x69a7('0x42')]=[{'all':!![]}];}return db[_0x69a7('0x2d')][_0x69a7('0x43')](_0x1eb449);})[_0x69a7('0x26')](function(_0x3334a9){_0x50b99c[_0x69a7('0x44')]=_0x3334a9;return _0x50b99c;})['then'](respondWithFilteredResult(_0x58a96c,_0x1eb449))[_0x69a7('0x45')](handleError(_0x58a96c,null));};exports[_0x69a7('0x46')]=function(_0x2020f1,_0x3d6b2e){var _0x2872e3={'raw':!![],'where':{'id':_0x2020f1['params']['id']}},_0x1d065e={};_0x1d065e[_0x69a7('0x34')]=_[_0x69a7('0x31')](db[_0x69a7('0x2d')][_0x69a7('0x47')]);_0x1d065e[_0x69a7('0x30')]=_[_0x69a7('0x31')](_0x2020f1['query']);_0x1d065e[_0x69a7('0x32')]=_[_0x69a7('0x33')](_0x1d065e['model'],_0x1d065e[_0x69a7('0x30')]);_0x2872e3[_0x69a7('0x36')]=_[_0x69a7('0x33')](_0x1d065e['model'],qs['fields'](_0x2020f1[_0x69a7('0x30')][_0x69a7('0x35')]));_0x2872e3[_0x69a7('0x36')]=_0x2872e3[_0x69a7('0x36')][_0x69a7('0x37')]?_0x2872e3[_0x69a7('0x36')]:_0x1d065e[_0x69a7('0x34')];if(_0x2020f1[_0x69a7('0x30')]['includeAll']){_0x2872e3[_0x69a7('0x42')]=[{'all':!![]}];}_0x2872e3=_['merge']({},_0x2872e3,_0x2020f1[_0x69a7('0x40')]);return db[_0x69a7('0x2d')]['find'](_0x2872e3)[_0x69a7('0x26')](handleEntityNotFound(_0x3d6b2e,null))[_0x69a7('0x26')](respondWithResult(_0x3d6b2e,null))[_0x69a7('0x45')](handleError(_0x3d6b2e,null));};exports[_0x69a7('0x48')]=function(_0x11ee27,_0x543c3f){return db[_0x69a7('0x2d')][_0x69a7('0x48')](_0x11ee27['body'],{})[_0x69a7('0x26')](respondWithResult(_0x543c3f,0xc9))[_0x69a7('0x45')](handleError(_0x543c3f,null));};exports[_0x69a7('0x25')]=function(_0x459db8,_0x13d5c3){if(_0x459db8['body']['id']){delete _0x459db8[_0x69a7('0x49')]['id'];}return db[_0x69a7('0x2d')][_0x69a7('0x4a')]({'where':{'id':_0x459db8[_0x69a7('0x4b')]['id']}})['then'](handleEntityNotFound(_0x13d5c3,null))[_0x69a7('0x26')](saveUpdates(_0x459db8[_0x69a7('0x49')],null))[_0x69a7('0x26')](respondWithResult(_0x13d5c3,null))[_0x69a7('0x45')](handleError(_0x13d5c3,null));};exports['destroy']=function(_0x148f42,_0x3d2011){return db[_0x69a7('0x2d')][_0x69a7('0x4a')]({'where':{'id':_0x148f42[_0x69a7('0x4b')]['id']}})[_0x69a7('0x26')](handleEntityNotFound(_0x3d2011,null))[_0x69a7('0x26')](removeEntity(_0x3d2011,null))[_0x69a7('0x45')](handleError(_0x3d2011,null));};
\ No newline at end of file
+var _0x26ec=['eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','then','error','stack','name','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','SalesforceField','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','update','destroy'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x26ec,0x1e0));var _0xc26e=function(_0x13d9af,_0x48cff6){_0x13d9af=_0x13d9af-0x0;var _0xb774b6=_0x26ec[_0x13d9af];return _0xb774b6;};'use strict';var emlformat=require(_0xc26e('0x0'));var rimraf=require(_0xc26e('0x1'));var zipdir=require(_0xc26e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc26e('0x3'));var moment=require(_0xc26e('0x4'));var BPromise=require(_0xc26e('0x5'));var Mustache=require(_0xc26e('0x6'));var util=require('util');var path=require('path');var sox=require(_0xc26e('0x7'));var csv=require(_0xc26e('0x8'));var ejs=require(_0xc26e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc26e('0xa'));var squel=require(_0xc26e('0xb'));var crypto=require('crypto');var jsforce=require(_0xc26e('0xc'));var deskjs=require(_0xc26e('0xd'));var toCsv=require(_0xc26e('0x8'));var querystring=require(_0xc26e('0xe'));var Papa=require(_0xc26e('0xf'));var Redis=require(_0xc26e('0x10'));var authService=require(_0xc26e('0x11'));var qs=require(_0xc26e('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc26e('0x13'));var logger=require(_0xc26e('0x14'))(_0xc26e('0x15'));var utils=require(_0xc26e('0x16'));var config=require(_0xc26e('0x17'));var licenseUtil=require(_0xc26e('0x18'));var db=require(_0xc26e('0x19'))['db'];function respondWithStatusCode(_0x191b64,_0xd7dcdc){_0xd7dcdc=_0xd7dcdc||0xcc;return function(_0x4f1349){if(_0x4f1349){return _0x191b64[_0xc26e('0x1a')](_0xd7dcdc);}return _0x191b64['status'](_0xd7dcdc)[_0xc26e('0x1b')]();};}function respondWithResult(_0xf8ef4c,_0x4d3482){_0x4d3482=_0x4d3482||0xc8;return function(_0x54c24b){if(_0x54c24b){return _0xf8ef4c[_0xc26e('0x1c')](_0x4d3482)['json'](_0x54c24b);}};}function respondWithFilteredResult(_0x98c1bb,_0x4f9dcf){return function(_0xf6c337){if(_0xf6c337){var _0x24125b=typeof _0x4f9dcf[_0xc26e('0x1d')]==='undefined'&&typeof _0x4f9dcf[_0xc26e('0x1e')]===_0xc26e('0x1f');var _0x4020e0=_0xf6c337['count'];var _0x503979=_0x24125b?0x0:_0x4f9dcf[_0xc26e('0x1d')];var _0x151ddb=_0x24125b?_0xf6c337[_0xc26e('0x20')]:_0x4f9dcf[_0xc26e('0x1d')]+_0x4f9dcf['limit'];var _0x4744a6;if(_0x151ddb>=_0x4020e0){_0x151ddb=_0x4020e0;_0x4744a6=0xc8;}else{_0x4744a6=0xce;}_0x98c1bb[_0xc26e('0x1c')](_0x4744a6);return _0x98c1bb[_0xc26e('0x21')](_0xc26e('0x22'),_0x503979+'-'+_0x151ddb+'/'+_0x4020e0)[_0xc26e('0x23')](_0xf6c337);}return null;};}function patchUpdates(_0x56e696){return function(_0x28e6bc){try{jsonpatch[_0xc26e('0x24')](_0x28e6bc,_0x56e696,!![]);}catch(_0x2446ca){return BPromise[_0xc26e('0x25')](_0x2446ca);}return _0x28e6bc[_0xc26e('0x26')]();};}function saveUpdates(_0x35a0c2,_0xf8e7c8){return function(_0x22542d){if(_0x22542d){return _0x22542d['update'](_0x35a0c2)[_0xc26e('0x27')](function(_0xb58b6c){return _0xb58b6c;});}return null;};}function removeEntity(_0x455380,_0x1e760c){return function(_0x19f39f){if(_0x19f39f){return _0x19f39f['destroy']()[_0xc26e('0x27')](function(){_0x455380['status'](0xcc)[_0xc26e('0x1b')]();});}};}function handleEntityNotFound(_0x282198,_0x5efd95){return function(_0x57296e){if(!_0x57296e){_0x282198[_0xc26e('0x1a')](0x194);}return _0x57296e;};}function handleError(_0x4a7b6d,_0xc52ae2){_0xc52ae2=_0xc52ae2||0x1f4;return function(_0x2ac771){logger[_0xc26e('0x28')](_0x2ac771[_0xc26e('0x29')]);if(_0x2ac771['name']){delete _0x2ac771[_0xc26e('0x2a')];}_0x4a7b6d[_0xc26e('0x1c')](_0xc52ae2)['send'](_0x2ac771);};}exports[_0xc26e('0x2b')]=function(_0x41d20a,_0x391b8f){var _0x3ea43f={},_0x4976a6={},_0x4adfda={'count':0x0,'rows':[]};var _0x36bc65=_[_0xc26e('0x2c')](db['SalesforceField'][_0xc26e('0x2d')],function(_0x5ded0c){return{'name':_0x5ded0c[_0xc26e('0x2e')],'type':_0x5ded0c[_0xc26e('0x2f')][_0xc26e('0x30')]};});_0x4976a6['model']=_['map'](_0x36bc65,_0xc26e('0x2a'));_0x4976a6[_0xc26e('0x31')]=_['keys'](_0x41d20a[_0xc26e('0x31')]);_0x4976a6[_0xc26e('0x32')]=_[_0xc26e('0x33')](_0x4976a6[_0xc26e('0x34')],_0x4976a6[_0xc26e('0x31')]);_0x3ea43f[_0xc26e('0x35')]=_['intersection'](_0x4976a6[_0xc26e('0x34')],qs[_0xc26e('0x36')](_0x41d20a['query'][_0xc26e('0x36')]));_0x3ea43f[_0xc26e('0x35')]=_0x3ea43f[_0xc26e('0x35')][_0xc26e('0x37')]?_0x3ea43f[_0xc26e('0x35')]:_0x4976a6[_0xc26e('0x34')];if(!_0x41d20a['query'][_0xc26e('0x38')](_0xc26e('0x39'))){_0x3ea43f[_0xc26e('0x1e')]=qs[_0xc26e('0x1e')](_0x41d20a[_0xc26e('0x31')][_0xc26e('0x1e')]);_0x3ea43f[_0xc26e('0x1d')]=qs[_0xc26e('0x1d')](_0x41d20a[_0xc26e('0x31')][_0xc26e('0x1d')]);}_0x3ea43f[_0xc26e('0x3a')]=qs[_0xc26e('0x3b')](_0x41d20a[_0xc26e('0x31')][_0xc26e('0x3b')]);_0x3ea43f[_0xc26e('0x3c')]=qs['filters'](_[_0xc26e('0x3d')](_0x41d20a['query'],_0x4976a6[_0xc26e('0x32')]),_0x36bc65);if(_0x41d20a['query'][_0xc26e('0x3e')]){_0x3ea43f[_0xc26e('0x3c')]=_[_0xc26e('0x3f')](_0x3ea43f['where'],{'$or':_[_0xc26e('0x2c')](_0x36bc65,function(_0xa73405){if(_0xa73405[_0xc26e('0x2f')]!==_0xc26e('0x40')){var _0x5798d7={};_0x5798d7[_0xa73405['name']]={'$like':'%'+_0x41d20a[_0xc26e('0x31')][_0xc26e('0x3e')]+'%'};return _0x5798d7;}})});}_0x3ea43f=_[_0xc26e('0x3f')]({},_0x3ea43f,_0x41d20a[_0xc26e('0x41')]);var _0x1a2f36={'where':_0x3ea43f[_0xc26e('0x3c')]};return db[_0xc26e('0x42')][_0xc26e('0x20')](_0x1a2f36)[_0xc26e('0x27')](function(_0x228be5){_0x4adfda[_0xc26e('0x20')]=_0x228be5;if(_0x41d20a['query'][_0xc26e('0x43')]){_0x3ea43f[_0xc26e('0x44')]=[{'all':!![]}];}return db[_0xc26e('0x42')][_0xc26e('0x45')](_0x3ea43f);})[_0xc26e('0x27')](function(_0x146dc4){_0x4adfda[_0xc26e('0x46')]=_0x146dc4;return _0x4adfda;})[_0xc26e('0x27')](respondWithFilteredResult(_0x391b8f,_0x3ea43f))[_0xc26e('0x47')](handleError(_0x391b8f,null));};exports[_0xc26e('0x48')]=function(_0x1ac330,_0xf523c2){var _0x324b8f={'raw':!![],'where':{'id':_0x1ac330[_0xc26e('0x49')]['id']}},_0x8d711e={};_0x8d711e[_0xc26e('0x34')]=_[_0xc26e('0x4a')](db[_0xc26e('0x42')][_0xc26e('0x2d')]);_0x8d711e['query']=_[_0xc26e('0x4a')](_0x1ac330[_0xc26e('0x31')]);_0x8d711e[_0xc26e('0x32')]=_[_0xc26e('0x33')](_0x8d711e[_0xc26e('0x34')],_0x8d711e[_0xc26e('0x31')]);_0x324b8f['attributes']=_[_0xc26e('0x33')](_0x8d711e['model'],qs[_0xc26e('0x36')](_0x1ac330['query'][_0xc26e('0x36')]));_0x324b8f[_0xc26e('0x35')]=_0x324b8f['attributes'][_0xc26e('0x37')]?_0x324b8f['attributes']:_0x8d711e[_0xc26e('0x34')];if(_0x1ac330[_0xc26e('0x31')]['includeAll']){_0x324b8f[_0xc26e('0x44')]=[{'all':!![]}];}_0x324b8f=_[_0xc26e('0x3f')]({},_0x324b8f,_0x1ac330[_0xc26e('0x41')]);return db['SalesforceField'][_0xc26e('0x4b')](_0x324b8f)['then'](handleEntityNotFound(_0xf523c2,null))[_0xc26e('0x27')](respondWithResult(_0xf523c2,null))[_0xc26e('0x47')](handleError(_0xf523c2,null));};exports[_0xc26e('0x4c')]=function(_0x4db22d,_0x3b326c){return db[_0xc26e('0x42')][_0xc26e('0x4c')](_0x4db22d[_0xc26e('0x4d')],{})[_0xc26e('0x27')](respondWithResult(_0x3b326c,0xc9))[_0xc26e('0x47')](handleError(_0x3b326c,null));};exports[_0xc26e('0x4e')]=function(_0x5f575f,_0x4d671b){if(_0x5f575f['body']['id']){delete _0x5f575f['body']['id'];}return db['SalesforceField'][_0xc26e('0x4b')]({'where':{'id':_0x5f575f[_0xc26e('0x49')]['id']}})[_0xc26e('0x27')](handleEntityNotFound(_0x4d671b,null))[_0xc26e('0x27')](saveUpdates(_0x5f575f['body'],null))[_0xc26e('0x27')](respondWithResult(_0x4d671b,null))[_0xc26e('0x47')](handleError(_0x4d671b,null));};exports[_0xc26e('0x4f')]=function(_0x314252,_0x3a4cb1){return db['SalesforceField'][_0xc26e('0x4b')]({'where':{'id':_0x314252[_0xc26e('0x49')]['id']}})[_0xc26e('0x27')](handleEntityNotFound(_0x3a4cb1,null))['then'](removeEntity(_0x3a4cb1,null))['catch'](handleError(_0x3a4cb1,null));};
\ No newline at end of file
index 53e8ad4..f622da2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8090=['exports','define','int_salesforce_fields','salesforce_unique_index','idField','../../config/logger','bluebird','path','rimraf','../../config/environment','./intSalesforceField.attributes'];(function(_0x50e30b,_0x216368){var _0x4b7300=function(_0x8f06d7){while(--_0x8f06d7){_0x50e30b['push'](_0x50e30b['shift']());}};_0x4b7300(++_0x216368);}(_0x8090,0x170));var _0x0809=function(_0x324661,_0x3fb798){_0x324661=_0x324661-0x0;var _0x135bed=_0x8090[_0x324661];return _0x135bed;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0809('0x0'))('api');var moment=require('moment');var BPromise=require(_0x0809('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0809('0x2'));var rimraf=require(_0x0809('0x3'));var config=require(_0x0809('0x4'));var attributes=require(_0x0809('0x5'));module[_0x0809('0x6')]=function(_0x4ee376,_0x1a7b8f){return _0x4ee376[_0x0809('0x7')]('SalesforceField',attributes,{'tableName':_0x0809('0x8'),'paranoid':![],'indexes':[{'name':_0x0809('0x9'),'fields':[_0x0809('0xa'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x378d=['salesforce_unique_index','idField','FieldId','lodash','util','api','moment','request-promise','./intSalesforceField.attributes','exports','define','SalesforceField'];(function(_0x1ed761,_0x14c903){var _0x14c51c=function(_0x31cba4){while(--_0x31cba4){_0x1ed761['push'](_0x1ed761['shift']());}};_0x14c51c(++_0x14c903);}(_0x378d,0x1b3));var _0xd378=function(_0x33c2af,_0x163198){_0x33c2af=_0x33c2af-0x0;var _0x13c04a=_0x378d[_0x33c2af];return _0x13c04a;};'use strict';var _=require(_0xd378('0x0'));var util=require(_0xd378('0x1'));var logger=require('../../config/logger')(_0xd378('0x2'));var moment=require(_0xd378('0x3'));var BPromise=require('bluebird');var rp=require(_0xd378('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd378('0x5'));module[_0xd378('0x6')]=function(_0x46669d,_0x1c1b55){return _0x46669d[_0xd378('0x7')](_0xd378('0x8'),attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0xd378('0x9'),'fields':[_0xd378('0xa'),_0xd378('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 00c185e..c2966c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc30=['client','http','request','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x475305,_0x23e228){var _0x26f630=function(_0xbc220b){while(--_0xbc220b){_0x475305['push'](_0x475305['shift']());}};_0x26f630(++_0x23e228);}(_0xfc30,0x19a));var _0x0fc3=function(_0x2170e4,_0x5b969e){_0x2170e4=_0x2170e4-0x0;var _0xec86f5=_0xfc30[_0x2170e4];return _0xec86f5;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0fc3('0x0'));var fs=require('fs');var Redis=require(_0x0fc3('0x1'));var db=require(_0x0fc3('0x2'))['db'];var utils=require(_0x0fc3('0x3'));var logger=require(_0x0fc3('0x4'))(_0x0fc3('0x5'));var config=require(_0x0fc3('0x6'));var jayson=require(_0x0fc3('0x7'));var client=jayson[_0x0fc3('0x8')][_0x0fc3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x77a5e8,_0x1af933,_0x34956b){return new BPromise(function(_0x28edb9,_0xd05ede){return client[_0x0fc3('0xa')](_0x77a5e8,_0x34956b)[_0x0fc3('0xb')](function(_0x36071b){logger[_0x0fc3('0xc')](_0x0fc3('0xd'),_0x1af933,_0x0fc3('0xe'));logger[_0x0fc3('0xf')](_0x0fc3('0x10'),_0x1af933,'request\x20sent',JSON[_0x0fc3('0x11')](_0x36071b));if(_0x36071b[_0x0fc3('0x12')]){if(_0x36071b[_0x0fc3('0x12')][_0x0fc3('0x13')]===0x1f4){logger[_0x0fc3('0x12')](_0x0fc3('0xd'),_0x1af933,_0x36071b[_0x0fc3('0x12')]['message']);return _0xd05ede(_0x36071b[_0x0fc3('0x12')][_0x0fc3('0x14')]);}logger[_0x0fc3('0x12')](_0x0fc3('0xd'),_0x1af933,_0x36071b['error'][_0x0fc3('0x14')]);return _0x28edb9(_0x36071b[_0x0fc3('0x12')]['message']);}else{logger['info'](_0x0fc3('0xd'),_0x1af933,'request\x20sent');_0x28edb9(_0x36071b['result'][_0x0fc3('0x14')]);}})[_0x0fc3('0x15')](function(_0x455c50){logger['error'](_0x0fc3('0xd'),_0x1af933,_0x455c50);_0xd05ede(_0x455c50);});});}
\ No newline at end of file
+var _0x49fd=['http','request','then','info','SalesforceField,\x20%s,\x20%s','debug','SalesforceField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x2be93f,_0x38d08a){var _0x5f59b7=function(_0x14f1fd){while(--_0x14f1fd){_0x2be93f['push'](_0x2be93f['shift']());}};_0x5f59b7(++_0x38d08a);}(_0x49fd,0x194));var _0xd49f=function(_0x4a70ef,_0x1210ae){_0x4a70ef=_0x4a70ef-0x0;var _0x3aa3a6=_0x49fd[_0x4a70ef];return _0x3aa3a6;};'use strict';var _=require('lodash');var util=require(_0xd49f('0x0'));var moment=require(_0xd49f('0x1'));var BPromise=require(_0xd49f('0x2'));var rs=require(_0xd49f('0x3'));var fs=require('fs');var Redis=require(_0xd49f('0x4'));var db=require(_0xd49f('0x5'))['db'];var utils=require(_0xd49f('0x6'));var logger=require(_0xd49f('0x7'))(_0xd49f('0x8'));var config=require(_0xd49f('0x9'));var jayson=require(_0xd49f('0xa'));var client=jayson[_0xd49f('0xb')][_0xd49f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4418eb,_0x36876f,_0x40287b){return new BPromise(function(_0x3af8c5,_0x1230d1){return client[_0xd49f('0xd')](_0x4418eb,_0x40287b)[_0xd49f('0xe')](function(_0xaf0d4a){logger[_0xd49f('0xf')](_0xd49f('0x10'),_0x36876f,'request\x20sent');logger[_0xd49f('0x11')](_0xd49f('0x12'),_0x36876f,_0xd49f('0x13'),JSON[_0xd49f('0x14')](_0xaf0d4a));if(_0xaf0d4a[_0xd49f('0x15')]){if(_0xaf0d4a[_0xd49f('0x15')][_0xd49f('0x16')]===0x1f4){logger[_0xd49f('0x15')](_0xd49f('0x10'),_0x36876f,_0xaf0d4a['error'][_0xd49f('0x17')]);return _0x1230d1(_0xaf0d4a[_0xd49f('0x15')]['message']);}logger[_0xd49f('0x15')](_0xd49f('0x10'),_0x36876f,_0xaf0d4a['error']['message']);return _0x3af8c5(_0xaf0d4a[_0xd49f('0x15')][_0xd49f('0x17')]);}else{logger[_0xd49f('0xf')]('SalesforceField,\x20%s,\x20%s',_0x36876f,_0xd49f('0x13'));_0x3af8c5(_0xaf0d4a[_0xd49f('0x18')][_0xd49f('0x17')]);}})[_0xd49f('0x19')](function(_0x48e03e){logger['error'](_0xd49f('0x10'),_0x36876f,_0x48e03e);_0x1230d1(_0x48e03e);});});}
\ No newline at end of file
index cb17b81..a5e2c4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2318=['destroy','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','isAuthenticated','index','show','/:id/configurations','get','/:id/fields','getFields','create','post','addConfiguration','put','/:id','update'];(function(_0x5d8a95,_0x3fb670){var _0x2aa1fc=function(_0x20d270){while(--_0x20d270){_0x5d8a95['push'](_0x5d8a95['shift']());}};_0x2aa1fc(++_0x3fb670);}(_0x2318,0x115));var _0x8231=function(_0x45e35d,_0x30a52a){_0x45e35d=_0x45e35d-0x0;var _0x41ea02=_0x2318[_0x45e35d];return _0x41ea02;};'use strict';var multer=require('multer');var util=require(_0x8231('0x0'));var path=require(_0x8231('0x1'));var timeout=require(_0x8231('0x2'));var express=require('express');var router=express[_0x8231('0x3')]();var fs_extra=require(_0x8231('0x4'));var auth=require(_0x8231('0x5'));var interaction=require(_0x8231('0x6'));var config=require(_0x8231('0x7'));var controller=require(_0x8231('0x8'));router['get']('/',auth[_0x8231('0x9')](),controller[_0x8231('0xa')]);router['get']('/:id',auth[_0x8231('0x9')](),controller[_0x8231('0xb')]);router['get'](_0x8231('0xc'),auth[_0x8231('0x9')](),controller['getConfigurations']);router[_0x8231('0xd')](_0x8231('0xe'),auth[_0x8231('0x9')](),controller[_0x8231('0xf')]);router['post']('/',auth[_0x8231('0x9')](),controller[_0x8231('0x10')]);router[_0x8231('0x11')](_0x8231('0xc'),auth['isAuthenticated'](),controller[_0x8231('0x12')]);router[_0x8231('0x13')](_0x8231('0x14'),auth[_0x8231('0x9')](),controller[_0x8231('0x15')]);router['delete'](_0x8231('0x14'),auth[_0x8231('0x9')](),controller[_0x8231('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xde56=['/:id','isAuthenticated','show','getConfigurations','/:id/fields','post','create','addConfiguration','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','index'];(function(_0x3cb52a,_0x5a586d){var _0x4e6bab=function(_0xd38f5){while(--_0xd38f5){_0x3cb52a['push'](_0x3cb52a['shift']());}};_0x4e6bab(++_0x5a586d);}(_0xde56,0x144));var _0x6de5=function(_0x3050ca,_0x3e36b0){_0x3050ca=_0x3050ca-0x0;var _0x1eed1d=_0xde56[_0x3050ca];return _0x1eed1d;};'use strict';var multer=require(_0x6de5('0x0'));var util=require('util');var path=require(_0x6de5('0x1'));var timeout=require(_0x6de5('0x2'));var express=require(_0x6de5('0x3'));var router=express[_0x6de5('0x4')]();var fs_extra=require(_0x6de5('0x5'));var auth=require(_0x6de5('0x6'));var interaction=require(_0x6de5('0x7'));var config=require(_0x6de5('0x8'));var controller=require(_0x6de5('0x9'));router[_0x6de5('0xa')]('/',auth['isAuthenticated'](),controller[_0x6de5('0xb')]);router[_0x6de5('0xa')](_0x6de5('0xc'),auth[_0x6de5('0xd')](),controller[_0x6de5('0xe')]);router[_0x6de5('0xa')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x6de5('0xf')]);router[_0x6de5('0xa')](_0x6de5('0x10'),auth[_0x6de5('0xd')](),controller['getFields']);router[_0x6de5('0x11')]('/',auth[_0x6de5('0xd')](),controller[_0x6de5('0x12')]);router[_0x6de5('0x11')]('/:id/configurations',auth[_0x6de5('0xd')](),controller[_0x6de5('0x13')]);router['put'](_0x6de5('0xc'),auth[_0x6de5('0xd')](),controller[_0x6de5('0x14')]);router[_0x6de5('0x15')]('/:id',auth[_0x6de5('0xd')](),controller[_0x6de5('0x16')]);module[_0x6de5('0x17')]=router;
\ No newline at end of file
index 267501d..697147b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5df3=['remoteUri','sequelize','exports','STRING','username'];(function(_0x43cd50,_0x1ed1c){var _0x8a2f83=function(_0xcf4ec6){while(--_0xcf4ec6){_0x43cd50['push'](_0x43cd50['shift']());}};_0x8a2f83(++_0x1ed1c);}(_0x5df3,0x15f));var _0x35df=function(_0x54b56d,_0x43cee0){_0x54b56d=_0x54b56d-0x0;var _0x29e581=_0x5df3[_0x54b56d];return _0x29e581;};'use strict';var Sequelize=require(_0x35df('0x0'));module[_0x35df('0x1')]={'name':{'type':Sequelize[_0x35df('0x2')]},'description':{'type':Sequelize[_0x35df('0x2')]},'username':{'type':Sequelize[_0x35df('0x2')],'unique':_0x35df('0x3')},'password':{'type':Sequelize[_0x35df('0x2')]},'email':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x35df('0x2')],'unique':_0x35df('0x4')},'serverUrl':{'type':Sequelize[_0x35df('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x3001=['username','remoteUri','sequelize','exports','STRING'];(function(_0x30fe8c,_0x272cb9){var _0x4f1068=function(_0x5f52c7){while(--_0x5f52c7){_0x30fe8c['push'](_0x30fe8c['shift']());}};_0x4f1068(++_0x272cb9);}(_0x3001,0x84));var _0x1300=function(_0x5ef8df,_0x4555ab){_0x5ef8df=_0x5ef8df-0x0;var _0x571d33=_0x3001[_0x5ef8df];return _0x571d33;};'use strict';var Sequelize=require(_0x1300('0x0'));module[_0x1300('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x1300('0x2')]},'username':{'type':Sequelize[_0x1300('0x2')],'unique':_0x1300('0x3')},'password':{'type':Sequelize[_0x1300('0x2')]},'email':{'type':Sequelize[_0x1300('0x2')]},'remoteUri':{'type':Sequelize[_0x1300('0x2')],'unique':_0x1300('0x4')},'serverUrl':{'type':Sequelize[_0x1300('0x2')],'allowNull':![]}};
\ No newline at end of file
index f4b7390..8d23d86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6ed=['crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','error','send','map','ServicenowAccount','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','update','getConfigurations','ServicenowConfiguration','hasOwnProperty','nolimit','addConfiguration','getSubjects','channel','Descriptions','getDescriptions','ServicenowField','Subjects','getFields','made_sla','knowledge','subcategory','notify','incident_state','severity','category','sys_updated_on','child_incidents','approval_history','number','resolved_by','sys_updated_by','opened_by','user_input','sys_created_on','sys_domain','state','sys_created_by','calendar_stc','closed_at','cmdb_ci','delivery_plan','active','work_notes_list','business_service','sys_domain_path','rfc','time_worked','expected_start','opened_at','group_list','reopened_time','resolved_at','caller_id','close_code','correlation_display','delivery_task','work_start','assignment_group','additional_assignee_list','calendar_duration','close_notes','closed_by','follow_up','parent_incident','sys_id','contact_type','problem_id','company','reassignment_count','activity_due','comments','sla_due','approval','comments_and_work_notes','due_date','reopen_count','sys_tags','escalation','upon_approval','location','username','password','remoteUri','substring','format','%s/api/now/doc/table/schema/','GET','incident?sysparm_display_value=all','result','log','remove','includes','forEach','label','all','assign','push','concat','ServiceNow\x20error:\x20','statusCode','stack','test','Wrong\x20credentials','True','False','false','inactive','value','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs'];(function(_0x4fbb15,_0x21be0c){var _0x436338=function(_0x3b5a05){while(--_0x3b5a05){_0x4fbb15['push'](_0x4fbb15['shift']());}};_0x436338(++_0x21be0c);}(_0xb6ed,0xa4));var _0xdb6e=function(_0x2a1e07,_0x4520c2){_0x2a1e07=_0x2a1e07-0x0;var _0x120d5f=_0xb6ed[_0x2a1e07];return _0x120d5f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xdb6e('0x0'));var rp=require(_0xdb6e('0x1'));var moment=require('moment');var BPromise=require(_0xdb6e('0x2'));var Mustache=require('mustache');var util=require(_0xdb6e('0x3'));var path=require(_0xdb6e('0x4'));var sox=require(_0xdb6e('0x5'));var csv=require(_0xdb6e('0x6'));var ejs=require(_0xdb6e('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xdb6e('0x8'));var jsforce=require(_0xdb6e('0x9'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xdb6e('0xa'));var Papa=require(_0xdb6e('0xb'));var Redis=require(_0xdb6e('0xc'));var authService=require(_0xdb6e('0xd'));var qs=require(_0xdb6e('0xe'));var as=require(_0xdb6e('0xf'));var hardwareService=require(_0xdb6e('0x10'));var logger=require('../../config/logger')(_0xdb6e('0x11'));var utils=require(_0xdb6e('0x12'));var config=require(_0xdb6e('0x13'));var licenseUtil=require(_0xdb6e('0x14'));var db=require('../../mysqldb')['db'];var integrations=require(_0xdb6e('0x15'));function respondWithStatusCode(_0x24d9e4,_0x4985b2){_0x4985b2=_0x4985b2||0xcc;return function(_0x38d692){if(_0x38d692){return _0x24d9e4[_0xdb6e('0x16')](_0x4985b2);}return _0x24d9e4[_0xdb6e('0x17')](_0x4985b2)['end']();};}function respondWithResult(_0x5e157b,_0x3ba494){_0x3ba494=_0x3ba494||0xc8;return function(_0x415104){if(_0x415104){return _0x5e157b[_0xdb6e('0x17')](_0x3ba494)[_0xdb6e('0x18')](_0x415104);}};}function respondWithFilteredResult(_0x20636c,_0x33d99b){return function(_0x4d89bb){if(_0x4d89bb){var _0x178575=typeof _0x33d99b[_0xdb6e('0x19')]===_0xdb6e('0x1a')&&typeof _0x33d99b[_0xdb6e('0x1b')]===_0xdb6e('0x1a');var _0x210acb=_0x4d89bb[_0xdb6e('0x1c')];var _0x4dddd7=_0x178575?0x0:_0x33d99b[_0xdb6e('0x19')];var _0x17f607=_0x178575?_0x4d89bb[_0xdb6e('0x1c')]:_0x33d99b['offset']+_0x33d99b[_0xdb6e('0x1b')];var _0x4309de;if(_0x17f607>=_0x210acb){_0x17f607=_0x210acb;_0x4309de=0xc8;}else{_0x4309de=0xce;}_0x20636c[_0xdb6e('0x17')](_0x4309de);return _0x20636c[_0xdb6e('0x1d')](_0xdb6e('0x1e'),_0x4dddd7+'-'+_0x17f607+'/'+_0x210acb)[_0xdb6e('0x18')](_0x4d89bb);}return null;};}function patchUpdates(_0x2c659a){return function(_0x1d1fef){try{jsonpatch[_0xdb6e('0x1f')](_0x1d1fef,_0x2c659a,!![]);}catch(_0x4bc15d){return BPromise[_0xdb6e('0x20')](_0x4bc15d);}return _0x1d1fef['save']();};}function saveUpdates(_0x174f47,_0x87c5c0){return function(_0x307cd5){if(_0x307cd5){return _0x307cd5['update'](_0x174f47)[_0xdb6e('0x21')](function(_0x59c1ab){return _0x59c1ab;});}return null;};}function removeEntity(_0x3fa047,_0x240afb){return function(_0x2ef8a9){if(_0x2ef8a9){return _0x2ef8a9[_0xdb6e('0x22')]()[_0xdb6e('0x21')](function(){_0x3fa047[_0xdb6e('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x42b1f0,_0x26ca1f){return function(_0x164d05){if(!_0x164d05){_0x42b1f0[_0xdb6e('0x16')](0x194);}return _0x164d05;};}function handleError(_0x11faf3,_0x17e2a8){_0x17e2a8=_0x17e2a8||0x1f4;return function(_0x1c055b){logger[_0xdb6e('0x23')](_0x1c055b['stack']);if(_0x1c055b['name']){delete _0x1c055b['name'];}_0x11faf3['status'](_0x17e2a8)[_0xdb6e('0x24')](_0x1c055b);};}exports['index']=function(_0x2ae156,_0x3574e3){var _0xdd925b={},_0x24fae5={},_0x3f2f0d={'count':0x0,'rows':[]};var _0x57bcb9=_[_0xdb6e('0x25')](db[_0xdb6e('0x26')][_0xdb6e('0x27')],function(_0x1b72ef){return{'name':_0x1b72ef[_0xdb6e('0x28')],'type':_0x1b72ef[_0xdb6e('0x29')][_0xdb6e('0x2a')]};});_0x24fae5[_0xdb6e('0x2b')]=_[_0xdb6e('0x25')](_0x57bcb9,_0xdb6e('0x2c'));_0x24fae5[_0xdb6e('0x2d')]=_[_0xdb6e('0x2e')](_0x2ae156[_0xdb6e('0x2d')]);_0x24fae5[_0xdb6e('0x2f')]=_[_0xdb6e('0x30')](_0x24fae5[_0xdb6e('0x2b')],_0x24fae5[_0xdb6e('0x2d')]);_0xdd925b[_0xdb6e('0x31')]=_[_0xdb6e('0x30')](_0x24fae5[_0xdb6e('0x2b')],qs[_0xdb6e('0x32')](_0x2ae156['query'][_0xdb6e('0x32')]));_0xdd925b[_0xdb6e('0x31')]=_0xdd925b['attributes'][_0xdb6e('0x33')]?_0xdd925b[_0xdb6e('0x31')]:_0x24fae5[_0xdb6e('0x2b')];if(!_0x2ae156[_0xdb6e('0x2d')]['hasOwnProperty']('nolimit')){_0xdd925b['limit']=qs[_0xdb6e('0x1b')](_0x2ae156[_0xdb6e('0x2d')][_0xdb6e('0x1b')]);_0xdd925b['offset']=qs[_0xdb6e('0x19')](_0x2ae156[_0xdb6e('0x2d')][_0xdb6e('0x19')]);}_0xdd925b[_0xdb6e('0x34')]=qs[_0xdb6e('0x35')](_0x2ae156[_0xdb6e('0x2d')][_0xdb6e('0x35')]);_0xdd925b[_0xdb6e('0x36')]=qs['filters'](_[_0xdb6e('0x37')](_0x2ae156[_0xdb6e('0x2d')],_0x24fae5[_0xdb6e('0x2f')]),_0x57bcb9);if(_0x2ae156['query'][_0xdb6e('0x38')]){_0xdd925b[_0xdb6e('0x36')]=_[_0xdb6e('0x39')](_0xdd925b[_0xdb6e('0x36')],{'$or':_[_0xdb6e('0x25')](_0x57bcb9,function(_0x2d2719){if(_0x2d2719[_0xdb6e('0x29')]!=='VIRTUAL'){var _0x5ac088={};_0x5ac088[_0x2d2719['name']]={'$like':'%'+_0x2ae156['query'][_0xdb6e('0x38')]+'%'};return _0x5ac088;}})});}_0xdd925b=_['merge']({},_0xdd925b,_0x2ae156[_0xdb6e('0x3a')]);var _0x1c19e5={'where':_0xdd925b[_0xdb6e('0x36')]};return db[_0xdb6e('0x26')]['count'](_0x1c19e5)['then'](function(_0x2ecf64){_0x3f2f0d[_0xdb6e('0x1c')]=_0x2ecf64;if(_0x2ae156[_0xdb6e('0x2d')][_0xdb6e('0x3b')]){_0xdd925b[_0xdb6e('0x3c')]=[{'all':!![]}];}return db[_0xdb6e('0x26')][_0xdb6e('0x3d')](_0xdd925b);})[_0xdb6e('0x21')](function(_0x320a4f){_0x3f2f0d[_0xdb6e('0x3e')]=_0x320a4f;return _0x3f2f0d;})['then'](respondWithFilteredResult(_0x3574e3,_0xdd925b))[_0xdb6e('0x3f')](handleError(_0x3574e3,null));};exports[_0xdb6e('0x40')]=function(_0x1c227f,_0x1cb499){var _0x3a962c={'raw':![],'where':{'id':_0x1c227f[_0xdb6e('0x41')]['id']}},_0x5cb4c5={};_0x5cb4c5[_0xdb6e('0x2b')]=_['keys'](db[_0xdb6e('0x26')][_0xdb6e('0x27')]);_0x5cb4c5[_0xdb6e('0x2d')]=_['keys'](_0x1c227f['query']);_0x5cb4c5['filters']=_[_0xdb6e('0x30')](_0x5cb4c5[_0xdb6e('0x2b')],_0x5cb4c5[_0xdb6e('0x2d')]);_0x3a962c[_0xdb6e('0x31')]=_[_0xdb6e('0x30')](_0x5cb4c5[_0xdb6e('0x2b')],qs['fields'](_0x1c227f['query'][_0xdb6e('0x32')]));_0x3a962c['attributes']=_0x3a962c[_0xdb6e('0x31')]['length']?_0x3a962c['attributes']:_0x5cb4c5[_0xdb6e('0x2b')];if(_0x1c227f[_0xdb6e('0x2d')][_0xdb6e('0x3b')]){_0x3a962c[_0xdb6e('0x3c')]=[{'all':!![]}];}_0x3a962c=_[_0xdb6e('0x39')]({},_0x3a962c,_0x1c227f[_0xdb6e('0x3a')]);return db[_0xdb6e('0x26')][_0xdb6e('0x42')](_0x3a962c)[_0xdb6e('0x21')](handleEntityNotFound(_0x1cb499,null))[_0xdb6e('0x21')](respondWithResult(_0x1cb499,null))[_0xdb6e('0x3f')](handleError(_0x1cb499,null));};exports['create']=function(_0x4f08a4,_0x35bc80){return db[_0xdb6e('0x26')][_0xdb6e('0x43')](_0x4f08a4[_0xdb6e('0x44')],{})[_0xdb6e('0x21')](respondWithResult(_0x35bc80,0xc9))[_0xdb6e('0x3f')](handleError(_0x35bc80,null));};exports[_0xdb6e('0x45')]=function(_0x374bb8,_0x19c812){if(_0x374bb8['body']['id']){delete _0x374bb8[_0xdb6e('0x44')]['id'];}return db[_0xdb6e('0x26')]['find']({'where':{'id':_0x374bb8[_0xdb6e('0x41')]['id']}})['then'](handleEntityNotFound(_0x19c812,null))[_0xdb6e('0x21')](saveUpdates(_0x374bb8[_0xdb6e('0x44')],null))['then'](respondWithResult(_0x19c812,null))['catch'](handleError(_0x19c812,null));};exports[_0xdb6e('0x22')]=function(_0x949e5,_0xc71db){return db[_0xdb6e('0x26')][_0xdb6e('0x42')]({'where':{'id':_0x949e5['params']['id']}})['then'](handleEntityNotFound(_0xc71db,null))[_0xdb6e('0x21')](removeEntity(_0xc71db,null))[_0xdb6e('0x3f')](handleError(_0xc71db,null));};exports[_0xdb6e('0x46')]=function(_0x1135f4,_0xa58a42,_0x5cb7d6){var _0x57b4c2={};var _0xb2f03b={};var _0x381b52;var _0x59862d;return db[_0xdb6e('0x26')]['findOne']({'where':{'id':_0x1135f4[_0xdb6e('0x41')]['id']}})[_0xdb6e('0x21')](handleEntityNotFound(_0xa58a42,null))[_0xdb6e('0x21')](function(_0x43b43a){if(_0x43b43a){_0x381b52=_0x43b43a;_0xb2f03b[_0xdb6e('0x2b')]=_[_0xdb6e('0x2e')](db[_0xdb6e('0x47')][_0xdb6e('0x27')]);_0xb2f03b[_0xdb6e('0x2d')]=_['keys'](_0x1135f4[_0xdb6e('0x2d')]);_0xb2f03b[_0xdb6e('0x2f')]=_[_0xdb6e('0x30')](_0xb2f03b['model'],_0xb2f03b[_0xdb6e('0x2d')]);_0x57b4c2[_0xdb6e('0x31')]=_[_0xdb6e('0x30')](_0xb2f03b[_0xdb6e('0x2b')],qs[_0xdb6e('0x32')](_0x1135f4['query'][_0xdb6e('0x32')]));_0x57b4c2['attributes']=_0x57b4c2[_0xdb6e('0x31')][_0xdb6e('0x33')]?_0x57b4c2[_0xdb6e('0x31')]:_0xb2f03b[_0xdb6e('0x2b')];_0x57b4c2[_0xdb6e('0x34')]=qs[_0xdb6e('0x35')](_0x1135f4[_0xdb6e('0x2d')][_0xdb6e('0x35')]);_0x57b4c2[_0xdb6e('0x36')]=qs[_0xdb6e('0x2f')](_[_0xdb6e('0x37')](_0x1135f4[_0xdb6e('0x2d')],_0xb2f03b[_0xdb6e('0x2f')]));if(_0x1135f4['query'][_0xdb6e('0x38')]){_0x57b4c2[_0xdb6e('0x36')]=_[_0xdb6e('0x39')](_0x57b4c2['where'],{'$or':_[_0xdb6e('0x25')](_0x57b4c2[_0xdb6e('0x31')],function(_0x1ef463){var _0x26ec44={};_0x26ec44[_0x1ef463]={'$like':'%'+_0x1135f4[_0xdb6e('0x2d')][_0xdb6e('0x38')]+'%'};return _0x26ec44;})});}_0x57b4c2=_[_0xdb6e('0x39')]({},_0x57b4c2,_0x1135f4[_0xdb6e('0x3a')]);return _0x381b52[_0xdb6e('0x46')](_0x57b4c2);}})['then'](function(_0x265052){if(_0x265052){_0x59862d=_0x265052['length'];if(!_0x1135f4[_0xdb6e('0x2d')][_0xdb6e('0x48')](_0xdb6e('0x49'))){_0x57b4c2[_0xdb6e('0x1b')]=qs['limit'](_0x1135f4[_0xdb6e('0x2d')][_0xdb6e('0x1b')]);_0x57b4c2[_0xdb6e('0x19')]=qs[_0xdb6e('0x19')](_0x1135f4[_0xdb6e('0x2d')][_0xdb6e('0x19')]);}return _0x381b52[_0xdb6e('0x46')](_0x57b4c2);}})[_0xdb6e('0x21')](function(_0x13316d){if(_0x13316d){return _0x13316d?{'count':_0x59862d,'rows':_0x13316d}:null;}})[_0xdb6e('0x21')](respondWithResult(_0xa58a42,null))[_0xdb6e('0x3f')](handleError(_0xa58a42,null));};exports[_0xdb6e('0x4a')]=function(_0x4bb36d,_0x127a51,_0x25a02d){if(_0x4bb36d[_0xdb6e('0x44')]['id']){delete _0x4bb36d[_0xdb6e('0x44')]['id'];}return db[_0xdb6e('0x26')]['findOne']({'where':{'id':_0x4bb36d[_0xdb6e('0x41')]['id']}})['then'](handleEntityNotFound(_0x127a51,null))[_0xdb6e('0x21')](function(_0x2ded6a){if(_0x2ded6a){_0x4bb36d[_0xdb6e('0x44')]['AccountId']=_0x2ded6a['id'];_0x4bb36d[_0xdb6e('0x44')]['Subjects']=integrations[_0xdb6e('0x4b')](_0x4bb36d['body'][_0xdb6e('0x4c')],_0x4bb36d[_0xdb6e('0x44')]['type']);_0x4bb36d[_0xdb6e('0x44')][_0xdb6e('0x4d')]=integrations[_0xdb6e('0x4e')](_0x4bb36d[_0xdb6e('0x44')][_0xdb6e('0x4c')],_0x4bb36d[_0xdb6e('0x44')][_0xdb6e('0x29')]);return db[_0xdb6e('0x47')]['create'](_0x4bb36d[_0xdb6e('0x44')],{'include':[{'model':db[_0xdb6e('0x4f')],'as':_0xdb6e('0x50')},{'model':db[_0xdb6e('0x4f')],'as':'Descriptions'}]});}return null;})[_0xdb6e('0x21')](respondWithResult(_0x127a51,null))[_0xdb6e('0x3f')](handleError(_0x127a51,null));};exports[_0xdb6e('0x51')]=function(_0x37d9dc,_0x134340,_0x251ec0){var _0x3cd5ac=[_0xdb6e('0x52'),'hold_reason',_0xdb6e('0x53'),_0xdb6e('0x54'),'close_code',_0xdb6e('0x55'),_0xdb6e('0x56'),_0xdb6e('0x57'),_0xdb6e('0x58')];var _0x51f9d9=['parent','made_sla','caused_by','watch_list','upon_reject',_0xdb6e('0x59'),_0xdb6e('0x5a'),'hold_reason',_0xdb6e('0x5b'),_0xdb6e('0x5c'),_0xdb6e('0x5d'),_0xdb6e('0x5e'),_0xdb6e('0x5f'),_0xdb6e('0x60'),_0xdb6e('0x61'),_0xdb6e('0x62'),_0xdb6e('0x63'),_0xdb6e('0x64'),_0xdb6e('0x53'),_0xdb6e('0x34'),_0xdb6e('0x65'),_0xdb6e('0x66'),_0xdb6e('0x67'),_0xdb6e('0x68'),'impact',_0xdb6e('0x69'),_0xdb6e('0x6a'),_0xdb6e('0x6b'),'priority',_0xdb6e('0x6c'),_0xdb6e('0x6d'),_0xdb6e('0x6e'),_0xdb6e('0x6f'),_0xdb6e('0x70'),'business_duration',_0xdb6e('0x71'),'work_end',_0xdb6e('0x72'),_0xdb6e('0x73'),_0xdb6e('0x74'),'approval_set',_0xdb6e('0x54'),'work_notes','short_description',_0xdb6e('0x75'),_0xdb6e('0x76'),_0xdb6e('0x77'),_0xdb6e('0x78'),_0xdb6e('0x79'),'business_stc',_0xdb6e('0x7a'),'description',_0xdb6e('0x7b'),_0xdb6e('0x55'),'sys_class_name',_0xdb6e('0x7c'),_0xdb6e('0x7d'),_0xdb6e('0x7e'),_0xdb6e('0x7f'),_0xdb6e('0x80'),_0xdb6e('0x81'),'reopened_by','incident_state','urgency',_0xdb6e('0x82'),_0xdb6e('0x83'),_0xdb6e('0x84'),_0xdb6e('0x85'),'assigned_to',_0xdb6e('0x57'),_0xdb6e('0x86'),_0xdb6e('0x87'),_0xdb6e('0x88'),_0xdb6e('0x89'),_0xdb6e('0x8a'),'sys_mod_count',_0xdb6e('0x8b'),_0xdb6e('0x8c'),_0xdb6e('0x8d'),_0xdb6e('0x8e'),'correlation_id',_0xdb6e('0x8f'),_0xdb6e('0x58')];var _0x90c810='';var _0x4d01af='';var _0x51079a=[];var _0x556d45='';var _0xc223ed='';var _0x542e74=[];var _0x50e5e8='';var _0x212017='';var _0x53ceeb={};var _0x19393f='';return db['ServicenowAccount']['findOne']({'where':{'id':_0x37d9dc[_0xdb6e('0x41')]['id']},'attributes':['id',_0xdb6e('0x90'),_0xdb6e('0x91'),'email',_0xdb6e('0x92'),'serverUrl']})[_0xdb6e('0x21')](handleEntityNotFound(_0x134340,null))[_0xdb6e('0x21')](function(_0x3d9b72){if(_0x3d9b72){_0x19393f=_0x3d9b72[_0xdb6e('0x92')];var _0x48f388=_0x19393f['slice'](-0x1);if(_0x48f388==='/'){_0x19393f=_0x19393f[_0xdb6e('0x93')](0x0,_0x19393f['lastIndexOf'](_0x48f388));}_0x212017=util[_0xdb6e('0x94')](_0xdb6e('0x95'),_0x19393f);_0x50e5e8=util[_0xdb6e('0x94')]('%s/api/now/table/',_0x19393f);_0x53ceeb={'user':_0x3d9b72['username'],'pass':_0x3d9b72['password']};var _0x5be353={'method':_0xdb6e('0x96'),'uri':_0x212017+_0xdb6e('0x97'),'auth':_0x53ceeb,'json':!![]};return rp(_0x5be353);}})['then'](function(_0x9cdbb7){if(_0x9cdbb7['result'][_0xdb6e('0x33')]>0x0){_0x90c810=_0x9cdbb7[_0xdb6e('0x98')];}console[_0xdb6e('0x99')]('incident\x20table\x20objects',_0x90c810);_0x542e74=[];_0x4d01af=Object['assign']([],_0x90c810);_[_0xdb6e('0x9a')](_0x4d01af,function(_0x512afe){return!_0x3cd5ac[_0xdb6e('0x9b')](_0x512afe['name']);});_0x4d01af[_0xdb6e('0x9c')](function(_0x49aeb4){var _0x4e4a57=createFieldObject(_0x50e5e8,_0x53ceeb,_0x49aeb4['internalType'],_0x49aeb4[_0xdb6e('0x2c')],_0x49aeb4[_0xdb6e('0x9d')],![]);_0x542e74['push'](_0x4e4a57);});return Promise[_0xdb6e('0x9e')](_0x542e74);})[_0xdb6e('0x21')](function(_0x2000e8){_0x51079a=_0x2000e8;_0x556d45=Object[_0xdb6e('0x9f')]([],_0x90c810);console[_0xdb6e('0x99')]('TCL:\x20_object',_0x90c810);_[_0xdb6e('0x9a')](_0x556d45,function(_0x589c50){return _0x51f9d9[_0xdb6e('0x9b')](_0x589c50[_0xdb6e('0x2c')]);});console['log']('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x556d45);_0x542e74=[];_0x556d45[_0xdb6e('0x9c')](function(_0x25a22f){var _0x1b8dbd=createFieldObject(_0x50e5e8,_0x53ceeb,_0x25a22f['internalType'],_0x25a22f[_0xdb6e('0x2c')],_0x25a22f['label'],!![]);_0x542e74[_0xdb6e('0xa0')](_0x1b8dbd);});return Promise[_0xdb6e('0x9e')](_0x542e74);})[_0xdb6e('0x21')](function(_0x208fee){_0xc223ed=_0x208fee;var _0x3b2844=_0x51079a[_0xdb6e('0xa1')](_0xc223ed);return{'count':_0x3b2844[_0xdb6e('0x33')],'rows':_0x3b2844};})[_0xdb6e('0x21')](respondWithResult(_0x134340,null))['catch'](function(_0x33c0c7){console['log'](_0xdb6e('0xa2')+_0x33c0c7);var _0x1359d5=_0x37d9dc[_0xdb6e('0x2d')]['test']?0x1f4:_0x33c0c7[_0xdb6e('0xa3')]||0x1f4;logger[_0xdb6e('0x23')](_0x33c0c7[_0xdb6e('0xa4')]);delete _0x33c0c7[_0xdb6e('0x2c')];if(_0x1359d5===0x191){_0x1359d5=0x190;}_0x134340[_0xdb6e('0x17')](_0x1359d5)[_0xdb6e('0x24')](_0x37d9dc['query'][_0xdb6e('0xa5')]?{'message':_0xdb6e('0xa6'),'statusCode':_0x33c0c7['statusCode']}:_0x33c0c7);});};function createFieldObject(_0x30d8fa,_0x27bd40,_0x3afac6,_0x4cc31f,_0x3b5545,_0x4a8a79){return new Promise(function(_0x227a01,_0x39908a){var _0x4fcb26={'id':_0x4cc31f,'name':_0x3b5545,'custom':_0x4a8a79};if(_0x3afac6==='boolean'){_0x4fcb26['options']=[{'name':_0xdb6e('0xa7'),'value':'true'},{'name':_0xdb6e('0xa8'),'value':_0xdb6e('0xa9')}];_0x227a01(_0x4fcb26);}else{var _0x553a7b={'method':_0xdb6e('0x96'),'uri':_0x30d8fa+'sys_choice?sysparm_query=name=incident^element='+_0x4cc31f,'auth':_0x27bd40,'json':!![]};return rp(_0x553a7b)[_0xdb6e('0x21')](function(_0x8f704f){var _0x5d572e=[];if(_0x8f704f[_0xdb6e('0x98')]['length']>0x0){_0x8f704f['result']['forEach'](function(_0x540acb){if(_0x540acb[_0xdb6e('0xaa')]===_0xdb6e('0xa9')){var _0x3d4c85={'name':_0x540acb[_0xdb6e('0x9d')],'value':_0x540acb[_0xdb6e('0xab')]};_0x5d572e[_0xdb6e('0xa0')](_0x3d4c85);}});}_0x4fcb26[_0xdb6e('0x3a')]=_0x5d572e;if(_0x4fcb26[_0xdb6e('0x3a')]['length']>0x0){_0x227a01(_0x4fcb26);}else{if(_0x4a8a79==![]){_0x227a01();}else{_0x227a01(_0x4fcb26);}}});}});}
\ No newline at end of file
+var _0x1769=['ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','offset','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','end','error','name','index','map','ServicenowAccount','rawAttributes','fieldName','key','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','count','includeAll','include','findAll','rows','catch','show','params','options','create','body','find','getConfigurations','findOne','ServicenowConfiguration','addConfiguration','AccountId','Subjects','Descriptions','ServicenowField','getFields','made_sla','hold_reason','subcategory','close_code','notify','incident_state','category','caused_by','watch_list','upon_reject','sys_updated_on','child_incidents','approval_history','number','resolved_by','sys_updated_by','opened_by','user_input','sys_created_on','state','knowledge','calendar_stc','cmdb_ci','delivery_plan','impact','work_notes_list','business_service','priority','time_worked','opened_at','business_duration','group_list','work_end','reopened_time','resolved_at','approval_set','work_notes','short_description','delivery_task','work_start','business_stc','additional_assignee_list','sys_class_name','close_notes','closed_by','follow_up','parent_incident','sys_id','contact_type','problem_id','company','reassignment_count','assigned_to','comments','sla_due','approval','comments_and_work_notes','sys_mod_count','reopen_count','escalation','upon_approval','correlation_id','location','username','password','remoteUri','serverUrl','substring','lastIndexOf','format','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','forEach','internalType','all','TCL:\x20_object','includes','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','push','concat','ServiceNow\x20error:\x20','test','statusCode','stack','send','Wrong\x20credentials','True','true','False','false','sys_choice?sysparm_query=name=incident^element=','inactive','label','value','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse'];(function(_0x315d8c,_0x349cd4){var _0xd2f041=function(_0x3218ba){while(--_0x3218ba){_0x315d8c['push'](_0x315d8c['shift']());}};_0xd2f041(++_0x349cd4);}(_0x1769,0xaa));var _0x9176=function(_0x159c8c,_0x452c62){_0x159c8c=_0x159c8c-0x0;var _0x42b73e=_0x1769[_0x159c8c];return _0x42b73e;};'use strict';var emlformat=require(_0x9176('0x0'));var rimraf=require(_0x9176('0x1'));var zipdir=require(_0x9176('0x2'));var jsonpatch=require(_0x9176('0x3'));var rp=require(_0x9176('0x4'));var moment=require(_0x9176('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9176('0x6'));var util=require(_0x9176('0x7'));var path=require(_0x9176('0x8'));var sox=require(_0x9176('0x9'));var csv=require(_0x9176('0xa'));var ejs=require(_0x9176('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9176('0xc'));var squel=require('squel');var crypto=require(_0x9176('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x9176('0xe'));var toCsv=require(_0x9176('0xa'));var querystring=require(_0x9176('0xf'));var Papa=require(_0x9176('0x10'));var Redis=require(_0x9176('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x9176('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9176('0x13'))(_0x9176('0x14'));var utils=require(_0x9176('0x15'));var config=require(_0x9176('0x16'));var licenseUtil=require(_0x9176('0x17'));var db=require(_0x9176('0x18'))['db'];var integrations=require(_0x9176('0x19'));function respondWithStatusCode(_0x15c605,_0x340b33){_0x340b33=_0x340b33||0xcc;return function(_0x322788){if(_0x322788){return _0x15c605[_0x9176('0x1a')](_0x340b33);}return _0x15c605['status'](_0x340b33)['end']();};}function respondWithResult(_0x4c75ed,_0x1ebbdd){_0x1ebbdd=_0x1ebbdd||0xc8;return function(_0x1ab949){if(_0x1ab949){return _0x4c75ed[_0x9176('0x1b')](_0x1ebbdd)['json'](_0x1ab949);}};}function respondWithFilteredResult(_0x186ace,_0x239543){return function(_0x5ca9de){if(_0x5ca9de){var _0x14501e=typeof _0x239543[_0x9176('0x1c')]==='undefined'&&typeof _0x239543[_0x9176('0x1d')]==='undefined';var _0x227c56=_0x5ca9de['count'];var _0x29585b=_0x14501e?0x0:_0x239543[_0x9176('0x1c')];var _0x175be5=_0x14501e?_0x5ca9de['count']:_0x239543[_0x9176('0x1c')]+_0x239543[_0x9176('0x1d')];var _0x8c3393;if(_0x175be5>=_0x227c56){_0x175be5=_0x227c56;_0x8c3393=0xc8;}else{_0x8c3393=0xce;}_0x186ace['status'](_0x8c3393);return _0x186ace[_0x9176('0x1e')](_0x9176('0x1f'),_0x29585b+'-'+_0x175be5+'/'+_0x227c56)[_0x9176('0x20')](_0x5ca9de);}return null;};}function patchUpdates(_0x3dddbe){return function(_0xb42913){try{jsonpatch[_0x9176('0x21')](_0xb42913,_0x3dddbe,!![]);}catch(_0xe762f4){return BPromise[_0x9176('0x22')](_0xe762f4);}return _0xb42913[_0x9176('0x23')]();};}function saveUpdates(_0x3be7a6,_0x1c9c3a){return function(_0x5651c7){if(_0x5651c7){return _0x5651c7[_0x9176('0x24')](_0x3be7a6)[_0x9176('0x25')](function(_0x54f90b){return _0x54f90b;});}return null;};}function removeEntity(_0x5ee30c,_0x341cfb){return function(_0x1448df){if(_0x1448df){return _0x1448df[_0x9176('0x26')]()[_0x9176('0x25')](function(){_0x5ee30c['status'](0xcc)[_0x9176('0x27')]();});}};}function handleEntityNotFound(_0x5c4ebc,_0x2af995){return function(_0x457858){if(!_0x457858){_0x5c4ebc[_0x9176('0x1a')](0x194);}return _0x457858;};}function handleError(_0x3851c4,_0x274132){_0x274132=_0x274132||0x1f4;return function(_0x3eb2dc){logger[_0x9176('0x28')](_0x3eb2dc['stack']);if(_0x3eb2dc[_0x9176('0x29')]){delete _0x3eb2dc[_0x9176('0x29')];}_0x3851c4['status'](_0x274132)['send'](_0x3eb2dc);};}exports[_0x9176('0x2a')]=function(_0x3add0e,_0x2142b1){var _0x3d4860={},_0x285b73={},_0x246062={'count':0x0,'rows':[]};var _0x17d951=_[_0x9176('0x2b')](db[_0x9176('0x2c')][_0x9176('0x2d')],function(_0x33b864){return{'name':_0x33b864[_0x9176('0x2e')],'type':_0x33b864['type'][_0x9176('0x2f')]};});_0x285b73['model']=_[_0x9176('0x2b')](_0x17d951,_0x9176('0x29'));_0x285b73['query']=_[_0x9176('0x30')](_0x3add0e[_0x9176('0x31')]);_0x285b73[_0x9176('0x32')]=_[_0x9176('0x33')](_0x285b73['model'],_0x285b73[_0x9176('0x31')]);_0x3d4860[_0x9176('0x34')]=_[_0x9176('0x33')](_0x285b73[_0x9176('0x35')],qs[_0x9176('0x36')](_0x3add0e[_0x9176('0x31')][_0x9176('0x36')]));_0x3d4860['attributes']=_0x3d4860['attributes'][_0x9176('0x37')]?_0x3d4860[_0x9176('0x34')]:_0x285b73[_0x9176('0x35')];if(!_0x3add0e[_0x9176('0x31')][_0x9176('0x38')](_0x9176('0x39'))){_0x3d4860[_0x9176('0x1d')]=qs[_0x9176('0x1d')](_0x3add0e[_0x9176('0x31')][_0x9176('0x1d')]);_0x3d4860[_0x9176('0x1c')]=qs[_0x9176('0x1c')](_0x3add0e[_0x9176('0x31')][_0x9176('0x1c')]);}_0x3d4860[_0x9176('0x3a')]=qs[_0x9176('0x3b')](_0x3add0e[_0x9176('0x31')][_0x9176('0x3b')]);_0x3d4860[_0x9176('0x3c')]=qs[_0x9176('0x32')](_[_0x9176('0x3d')](_0x3add0e[_0x9176('0x31')],_0x285b73[_0x9176('0x32')]),_0x17d951);if(_0x3add0e[_0x9176('0x31')][_0x9176('0x3e')]){_0x3d4860[_0x9176('0x3c')]=_[_0x9176('0x3f')](_0x3d4860[_0x9176('0x3c')],{'$or':_['map'](_0x17d951,function(_0x2b5eb2){if(_0x2b5eb2[_0x9176('0x40')]!==_0x9176('0x41')){var _0x6f1c56={};_0x6f1c56[_0x2b5eb2[_0x9176('0x29')]]={'$like':'%'+_0x3add0e[_0x9176('0x31')][_0x9176('0x3e')]+'%'};return _0x6f1c56;}})});}_0x3d4860=_[_0x9176('0x3f')]({},_0x3d4860,_0x3add0e['options']);var _0x47ee53={'where':_0x3d4860[_0x9176('0x3c')]};return db['ServicenowAccount'][_0x9176('0x42')](_0x47ee53)[_0x9176('0x25')](function(_0x188189){_0x246062['count']=_0x188189;if(_0x3add0e[_0x9176('0x31')][_0x9176('0x43')]){_0x3d4860[_0x9176('0x44')]=[{'all':!![]}];}return db[_0x9176('0x2c')][_0x9176('0x45')](_0x3d4860);})[_0x9176('0x25')](function(_0x1ce327){_0x246062[_0x9176('0x46')]=_0x1ce327;return _0x246062;})[_0x9176('0x25')](respondWithFilteredResult(_0x2142b1,_0x3d4860))[_0x9176('0x47')](handleError(_0x2142b1,null));};exports[_0x9176('0x48')]=function(_0x12478f,_0xdacac4){var _0x643592={'raw':![],'where':{'id':_0x12478f[_0x9176('0x49')]['id']}},_0x55f5f5={};_0x55f5f5['model']=_[_0x9176('0x30')](db[_0x9176('0x2c')]['rawAttributes']);_0x55f5f5[_0x9176('0x31')]=_[_0x9176('0x30')](_0x12478f[_0x9176('0x31')]);_0x55f5f5[_0x9176('0x32')]=_[_0x9176('0x33')](_0x55f5f5[_0x9176('0x35')],_0x55f5f5[_0x9176('0x31')]);_0x643592[_0x9176('0x34')]=_[_0x9176('0x33')](_0x55f5f5[_0x9176('0x35')],qs[_0x9176('0x36')](_0x12478f[_0x9176('0x31')]['fields']));_0x643592[_0x9176('0x34')]=_0x643592[_0x9176('0x34')][_0x9176('0x37')]?_0x643592[_0x9176('0x34')]:_0x55f5f5[_0x9176('0x35')];if(_0x12478f[_0x9176('0x31')][_0x9176('0x43')]){_0x643592['include']=[{'all':!![]}];}_0x643592=_['merge']({},_0x643592,_0x12478f[_0x9176('0x4a')]);return db[_0x9176('0x2c')]['find'](_0x643592)[_0x9176('0x25')](handleEntityNotFound(_0xdacac4,null))[_0x9176('0x25')](respondWithResult(_0xdacac4,null))[_0x9176('0x47')](handleError(_0xdacac4,null));};exports[_0x9176('0x4b')]=function(_0x2ae1db,_0x26a828){return db['ServicenowAccount'][_0x9176('0x4b')](_0x2ae1db['body'],{})[_0x9176('0x25')](respondWithResult(_0x26a828,0xc9))[_0x9176('0x47')](handleError(_0x26a828,null));};exports[_0x9176('0x24')]=function(_0x5143a8,_0x513976){if(_0x5143a8[_0x9176('0x4c')]['id']){delete _0x5143a8[_0x9176('0x4c')]['id'];}return db['ServicenowAccount'][_0x9176('0x4d')]({'where':{'id':_0x5143a8['params']['id']}})[_0x9176('0x25')](handleEntityNotFound(_0x513976,null))[_0x9176('0x25')](saveUpdates(_0x5143a8[_0x9176('0x4c')],null))['then'](respondWithResult(_0x513976,null))[_0x9176('0x47')](handleError(_0x513976,null));};exports['destroy']=function(_0x5d28a5,_0x330a7e){return db[_0x9176('0x2c')][_0x9176('0x4d')]({'where':{'id':_0x5d28a5[_0x9176('0x49')]['id']}})[_0x9176('0x25')](handleEntityNotFound(_0x330a7e,null))[_0x9176('0x25')](removeEntity(_0x330a7e,null))[_0x9176('0x47')](handleError(_0x330a7e,null));};exports[_0x9176('0x4e')]=function(_0x5bfa43,_0x25c233,_0x42780a){var _0x5d9cda={};var _0x158f05={};var _0x530df5;var _0x5d74fd;return db['ServicenowAccount'][_0x9176('0x4f')]({'where':{'id':_0x5bfa43[_0x9176('0x49')]['id']}})['then'](handleEntityNotFound(_0x25c233,null))['then'](function(_0x268fef){if(_0x268fef){_0x530df5=_0x268fef;_0x158f05['model']=_[_0x9176('0x30')](db[_0x9176('0x50')][_0x9176('0x2d')]);_0x158f05['query']=_['keys'](_0x5bfa43['query']);_0x158f05[_0x9176('0x32')]=_[_0x9176('0x33')](_0x158f05[_0x9176('0x35')],_0x158f05[_0x9176('0x31')]);_0x5d9cda['attributes']=_[_0x9176('0x33')](_0x158f05[_0x9176('0x35')],qs[_0x9176('0x36')](_0x5bfa43[_0x9176('0x31')]['fields']));_0x5d9cda[_0x9176('0x34')]=_0x5d9cda[_0x9176('0x34')][_0x9176('0x37')]?_0x5d9cda[_0x9176('0x34')]:_0x158f05[_0x9176('0x35')];_0x5d9cda[_0x9176('0x3a')]=qs[_0x9176('0x3b')](_0x5bfa43[_0x9176('0x31')][_0x9176('0x3b')]);_0x5d9cda[_0x9176('0x3c')]=qs[_0x9176('0x32')](_[_0x9176('0x3d')](_0x5bfa43[_0x9176('0x31')],_0x158f05[_0x9176('0x32')]));if(_0x5bfa43[_0x9176('0x31')][_0x9176('0x3e')]){_0x5d9cda[_0x9176('0x3c')]=_['merge'](_0x5d9cda[_0x9176('0x3c')],{'$or':_[_0x9176('0x2b')](_0x5d9cda[_0x9176('0x34')],function(_0x520585){var _0x4e83b0={};_0x4e83b0[_0x520585]={'$like':'%'+_0x5bfa43[_0x9176('0x31')][_0x9176('0x3e')]+'%'};return _0x4e83b0;})});}_0x5d9cda=_[_0x9176('0x3f')]({},_0x5d9cda,_0x5bfa43[_0x9176('0x4a')]);return _0x530df5[_0x9176('0x4e')](_0x5d9cda);}})[_0x9176('0x25')](function(_0x12df0f){if(_0x12df0f){_0x5d74fd=_0x12df0f[_0x9176('0x37')];if(!_0x5bfa43[_0x9176('0x31')]['hasOwnProperty']('nolimit')){_0x5d9cda[_0x9176('0x1d')]=qs['limit'](_0x5bfa43[_0x9176('0x31')]['limit']);_0x5d9cda[_0x9176('0x1c')]=qs[_0x9176('0x1c')](_0x5bfa43[_0x9176('0x31')][_0x9176('0x1c')]);}return _0x530df5['getConfigurations'](_0x5d9cda);}})[_0x9176('0x25')](function(_0x47a34a){if(_0x47a34a){return _0x47a34a?{'count':_0x5d74fd,'rows':_0x47a34a}:null;}})['then'](respondWithResult(_0x25c233,null))[_0x9176('0x47')](handleError(_0x25c233,null));};exports[_0x9176('0x51')]=function(_0x53aa86,_0x5ecd89,_0xd4d2e4){if(_0x53aa86[_0x9176('0x4c')]['id']){delete _0x53aa86[_0x9176('0x4c')]['id'];}return db[_0x9176('0x2c')][_0x9176('0x4f')]({'where':{'id':_0x53aa86[_0x9176('0x49')]['id']}})[_0x9176('0x25')](handleEntityNotFound(_0x5ecd89,null))[_0x9176('0x25')](function(_0x3d9a24){if(_0x3d9a24){_0x53aa86['body'][_0x9176('0x52')]=_0x3d9a24['id'];_0x53aa86['body'][_0x9176('0x53')]=integrations['getSubjects'](_0x53aa86[_0x9176('0x4c')]['channel'],_0x53aa86[_0x9176('0x4c')][_0x9176('0x40')]);_0x53aa86[_0x9176('0x4c')][_0x9176('0x54')]=integrations['getDescriptions'](_0x53aa86[_0x9176('0x4c')]['channel'],_0x53aa86[_0x9176('0x4c')][_0x9176('0x40')]);return db['ServicenowConfiguration'][_0x9176('0x4b')](_0x53aa86[_0x9176('0x4c')],{'include':[{'model':db[_0x9176('0x55')],'as':_0x9176('0x53')},{'model':db[_0x9176('0x55')],'as':_0x9176('0x54')}]});}return null;})[_0x9176('0x25')](respondWithResult(_0x5ecd89,null))[_0x9176('0x47')](handleError(_0x5ecd89,null));};exports[_0x9176('0x56')]=function(_0x3895ac,_0x35a78d,_0x1aac44){var _0x416aa3=[_0x9176('0x57'),_0x9176('0x58'),'knowledge',_0x9176('0x59'),_0x9176('0x5a'),_0x9176('0x5b'),_0x9176('0x5c'),'severity',_0x9176('0x5d')];var _0x19ef79=['parent','made_sla',_0x9176('0x5e'),_0x9176('0x5f'),_0x9176('0x60'),_0x9176('0x61'),_0x9176('0x62'),_0x9176('0x58'),_0x9176('0x63'),_0x9176('0x64'),_0x9176('0x65'),_0x9176('0x66'),_0x9176('0x67'),_0x9176('0x68'),_0x9176('0x69'),'sys_domain',_0x9176('0x6a'),'sys_created_by',_0x9176('0x6b'),_0x9176('0x3a'),_0x9176('0x6c'),'closed_at',_0x9176('0x6d'),_0x9176('0x6e'),_0x9176('0x6f'),'active',_0x9176('0x70'),_0x9176('0x71'),_0x9176('0x72'),'sys_domain_path','rfc',_0x9176('0x73'),'expected_start',_0x9176('0x74'),_0x9176('0x75'),_0x9176('0x76'),_0x9176('0x77'),_0x9176('0x78'),_0x9176('0x79'),'caller_id',_0x9176('0x7a'),_0x9176('0x59'),_0x9176('0x7b'),_0x9176('0x7c'),_0x9176('0x5a'),'correlation_display',_0x9176('0x7d'),_0x9176('0x7e'),'assignment_group',_0x9176('0x7f'),_0x9176('0x80'),'description','calendar_duration',_0x9176('0x5b'),_0x9176('0x81'),_0x9176('0x82'),_0x9176('0x83'),_0x9176('0x84'),_0x9176('0x85'),_0x9176('0x86'),_0x9176('0x87'),'reopened_by',_0x9176('0x5c'),'urgency',_0x9176('0x88'),_0x9176('0x89'),_0x9176('0x8a'),'activity_due',_0x9176('0x8b'),'severity',_0x9176('0x8c'),_0x9176('0x8d'),_0x9176('0x8e'),_0x9176('0x8f'),'due_date',_0x9176('0x90'),_0x9176('0x91'),'sys_tags',_0x9176('0x92'),_0x9176('0x93'),_0x9176('0x94'),_0x9176('0x95'),_0x9176('0x5d')];var _0x288a82='';var _0x4737e1='';var _0x2c4a0a=[];var _0x1cb9f7='';var _0xddce10='';var _0x3b126f=[];var _0x48cdb4='';var _0x1b419a='';var _0x119cd3={};var _0x172ff7='';return db['ServicenowAccount'][_0x9176('0x4f')]({'where':{'id':_0x3895ac[_0x9176('0x49')]['id']},'attributes':['id',_0x9176('0x96'),_0x9176('0x97'),'email',_0x9176('0x98'),_0x9176('0x99')]})['then'](handleEntityNotFound(_0x35a78d,null))['then'](function(_0x2b989a){if(_0x2b989a){_0x172ff7=_0x2b989a[_0x9176('0x98')];var _0x2fc8f7=_0x172ff7['slice'](-0x1);if(_0x2fc8f7==='/'){_0x172ff7=_0x172ff7[_0x9176('0x9a')](0x0,_0x172ff7[_0x9176('0x9b')](_0x2fc8f7));}_0x1b419a=util[_0x9176('0x9c')]('%s/api/now/doc/table/schema/',_0x172ff7);_0x48cdb4=util[_0x9176('0x9c')](_0x9176('0x9d'),_0x172ff7);_0x119cd3={'user':_0x2b989a[_0x9176('0x96')],'pass':_0x2b989a['password']};var _0x2f1141={'method':_0x9176('0x9e'),'uri':_0x1b419a+_0x9176('0x9f'),'auth':_0x119cd3,'json':!![]};return rp(_0x2f1141);}})[_0x9176('0x25')](function(_0x475f13){if(_0x475f13[_0x9176('0xa0')][_0x9176('0x37')]>0x0){_0x288a82=_0x475f13[_0x9176('0xa0')];}console[_0x9176('0xa1')](_0x9176('0xa2'),_0x288a82);_0x3b126f=[];_0x4737e1=Object[_0x9176('0xa3')]([],_0x288a82);_[_0x9176('0xa4')](_0x4737e1,function(_0x3b2179){return!_0x416aa3['includes'](_0x3b2179[_0x9176('0x29')]);});_0x4737e1[_0x9176('0xa5')](function(_0x2fd5ab){var _0x2530f8=createFieldObject(_0x48cdb4,_0x119cd3,_0x2fd5ab[_0x9176('0xa6')],_0x2fd5ab['name'],_0x2fd5ab['label'],![]);_0x3b126f['push'](_0x2530f8);});return Promise[_0x9176('0xa7')](_0x3b126f);})[_0x9176('0x25')](function(_0x4923d7){_0x2c4a0a=_0x4923d7;_0x1cb9f7=Object[_0x9176('0xa3')]([],_0x288a82);console[_0x9176('0xa1')](_0x9176('0xa8'),_0x288a82);_[_0x9176('0xa4')](_0x1cb9f7,function(_0x2e8673){return _0x19ef79[_0x9176('0xa9')](_0x2e8673[_0x9176('0x29')]);});console[_0x9176('0xa1')](_0x9176('0xaa'),_0x1cb9f7);_0x3b126f=[];_0x1cb9f7[_0x9176('0xa5')](function(_0x24332e){var _0x36261e=createFieldObject(_0x48cdb4,_0x119cd3,_0x24332e['internalType'],_0x24332e[_0x9176('0x29')],_0x24332e['label'],!![]);_0x3b126f[_0x9176('0xab')](_0x36261e);});return Promise[_0x9176('0xa7')](_0x3b126f);})[_0x9176('0x25')](function(_0xee4dc6){_0xddce10=_0xee4dc6;var _0x500d8c=_0x2c4a0a[_0x9176('0xac')](_0xddce10);return{'count':_0x500d8c[_0x9176('0x37')],'rows':_0x500d8c};})[_0x9176('0x25')](respondWithResult(_0x35a78d,null))[_0x9176('0x47')](function(_0x3a3dcb){console['log'](_0x9176('0xad')+_0x3a3dcb);var _0x4ac312=_0x3895ac[_0x9176('0x31')][_0x9176('0xae')]?0x1f4:_0x3a3dcb[_0x9176('0xaf')]||0x1f4;logger['error'](_0x3a3dcb[_0x9176('0xb0')]);delete _0x3a3dcb['name'];if(_0x4ac312===0x191){_0x4ac312=0x190;}_0x35a78d[_0x9176('0x1b')](_0x4ac312)[_0x9176('0xb1')](_0x3895ac[_0x9176('0x31')][_0x9176('0xae')]?{'message':_0x9176('0xb2'),'statusCode':_0x3a3dcb['statusCode']}:_0x3a3dcb);});};function createFieldObject(_0x123bf6,_0x4a967f,_0x6a0403,_0x114a32,_0x29e08f,_0x239a49){return new Promise(function(_0x481864,_0x40fb10){var _0x8705a6={'id':_0x114a32,'name':_0x29e08f,'custom':_0x239a49};if(_0x6a0403==='boolean'){_0x8705a6[_0x9176('0x4a')]=[{'name':_0x9176('0xb3'),'value':_0x9176('0xb4')},{'name':_0x9176('0xb5'),'value':_0x9176('0xb6')}];_0x481864(_0x8705a6);}else{var _0x55ab51={'method':'GET','uri':_0x123bf6+_0x9176('0xb7')+_0x114a32,'auth':_0x4a967f,'json':!![]};return rp(_0x55ab51)[_0x9176('0x25')](function(_0x33f224){var _0x22a457=[];if(_0x33f224[_0x9176('0xa0')][_0x9176('0x37')]>0x0){_0x33f224[_0x9176('0xa0')][_0x9176('0xa5')](function(_0x9afec9){if(_0x9afec9[_0x9176('0xb8')]===_0x9176('0xb6')){var _0x52fb80={'name':_0x9afec9[_0x9176('0xb9')],'value':_0x9afec9[_0x9176('0xba')]};_0x22a457[_0x9176('0xab')](_0x52fb80);}});}_0x8705a6[_0x9176('0x4a')]=_0x22a457;if(_0x8705a6['options'][_0x9176('0x37')]>0x0){_0x481864(_0x8705a6);}else{if(_0x239a49==![]){_0x481864();}else{_0x481864(_0x8705a6);}}});}});}
\ No newline at end of file
index 4500213..1827be6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['api','moment','bluebird','request-promise','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','ServicenowAccount','int_servicenow_accounts','lodash','../../config/logger'];(function(_0x559b90,_0x2595e0){var _0x4c4ad2=function(_0x1a40bd){while(--_0x1a40bd){_0x559b90['push'](_0x559b90['shift']());}};_0x4c4ad2(++_0x2595e0);}(_0x7217,0x19e));var _0x7721=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0x7217[_0x1cfa0d];return _0xe33279;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var logger=require(_0x7721('0x1'))(_0x7721('0x2'));var moment=require(_0x7721('0x3'));var BPromise=require(_0x7721('0x4'));var rp=require(_0x7721('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7721('0x6'));var attributes=require(_0x7721('0x7'));var integrations=require(_0x7721('0x8'));module[_0x7721('0x9')]=function(_0xb239e0,_0xf7ff37){return _0xb239e0[_0x7721('0xa')](_0x7721('0xb'),attributes,{'tableName':_0x7721('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xba34=['./intServicenowAccount.attributes','../../components/integrations/configuration','exports','ServicenowAccount','int_servicenow_accounts','lodash','util','../../config/logger','api','moment','rimraf','../../config/environment'];(function(_0x525737,_0x46ecfe){var _0x52245a=function(_0x2e1d5d){while(--_0x2e1d5d){_0x525737['push'](_0x525737['shift']());}};_0x52245a(++_0x46ecfe);}(_0xba34,0x119));var _0x4ba3=function(_0x3963fe,_0xf662bf){_0x3963fe=_0x3963fe-0x0;var _0x2c6c2c=_0xba34[_0x3963fe];return _0x2c6c2c;};'use strict';var _=require(_0x4ba3('0x0'));var util=require(_0x4ba3('0x1'));var logger=require(_0x4ba3('0x2'))(_0x4ba3('0x3'));var moment=require(_0x4ba3('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4ba3('0x5'));var config=require(_0x4ba3('0x6'));var attributes=require(_0x4ba3('0x7'));var integrations=require(_0x4ba3('0x8'));module[_0x4ba3('0x9')]=function(_0xb88621,_0xe5f99a){return _0xb88621['define'](_0x4ba3('0xa'),attributes,{'tableName':_0x4ba3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f4dfe90..0f90911 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb072=['limit','include','map','model','attributes','ShowServicenowAccount','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','request','then','info','ServicenowAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','GetServicenowAccount','ServicenowAccount','findAll','options','raw','where'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0xb072,0x139));var _0x2b07=function(_0x4fde27,_0x353703){_0x4fde27=_0x4fde27-0x0;var _0x14b773=_0xb072[_0x4fde27];return _0x14b773;};'use strict';var _=require(_0x2b07('0x0'));var util=require(_0x2b07('0x1'));var moment=require('moment');var BPromise=require(_0x2b07('0x2'));var rs=require(_0x2b07('0x3'));var fs=require('fs');var Redis=require(_0x2b07('0x4'));var db=require(_0x2b07('0x5'))['db'];var utils=require(_0x2b07('0x6'));var logger=require(_0x2b07('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2b07('0x8')][_0x2b07('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4cbc6b,_0x2e9626,_0x4e801f){return new BPromise(function(_0x8e938c,_0x532497){return client[_0x2b07('0xa')](_0x4cbc6b,_0x4e801f)[_0x2b07('0xb')](function(_0x6becc6){logger[_0x2b07('0xc')](_0x2b07('0xd'),_0x2e9626,'request\x20sent');logger[_0x2b07('0xe')]('ServicenowAccount,\x20%s,\x20%s,\x20%s',_0x2e9626,_0x2b07('0xf'),JSON[_0x2b07('0x10')](_0x6becc6));if(_0x6becc6['error']){if(_0x6becc6[_0x2b07('0x11')][_0x2b07('0x12')]===0x1f4){logger[_0x2b07('0x11')]('ServicenowAccount,\x20%s,\x20%s',_0x2e9626,_0x6becc6['error'][_0x2b07('0x13')]);return _0x532497(_0x6becc6[_0x2b07('0x11')]['message']);}logger[_0x2b07('0x11')](_0x2b07('0xd'),_0x2e9626,_0x6becc6[_0x2b07('0x11')][_0x2b07('0x13')]);return _0x8e938c(_0x6becc6[_0x2b07('0x11')]['message']);}else{logger[_0x2b07('0xc')](_0x2b07('0xd'),_0x2e9626,'request\x20sent');_0x8e938c(_0x6becc6['result'][_0x2b07('0x13')]);}})[_0x2b07('0x14')](function(_0x340982){logger[_0x2b07('0x11')]('ServicenowAccount,\x20%s,\x20%s',_0x2e9626,_0x340982);_0x532497(_0x340982);});});}exports[_0x2b07('0x15')]=function(_0xb9a8ff){var _0x118677=this;return new Promise(function(_0x5783ac,_0x5de169){return db[_0x2b07('0x16')][_0x2b07('0x17')]({'raw':_0xb9a8ff['options']?_0xb9a8ff[_0x2b07('0x18')][_0x2b07('0x19')]===undefined?!![]:![]:!![],'where':_0xb9a8ff[_0x2b07('0x18')]?_0xb9a8ff[_0x2b07('0x18')][_0x2b07('0x1a')]||null:null,'attributes':_0xb9a8ff[_0x2b07('0x18')]?_0xb9a8ff[_0x2b07('0x18')]['attributes']||null:null,'limit':_0xb9a8ff[_0x2b07('0x18')]?_0xb9a8ff[_0x2b07('0x18')][_0x2b07('0x1b')]||null:null,'include':_0xb9a8ff[_0x2b07('0x18')]?_0xb9a8ff['options'][_0x2b07('0x1c')]?_[_0x2b07('0x1d')](_0xb9a8ff[_0x2b07('0x18')][_0x2b07('0x1c')],function(_0x311735){return{'model':db[_0x311735[_0x2b07('0x1e')]],'as':_0x311735['as'],'attributes':_0x311735['attributes'],'include':_0x311735[_0x2b07('0x1c')]?_[_0x2b07('0x1d')](_0x311735['include'],function(_0x89ae70){return{'model':db[_0x89ae70[_0x2b07('0x1e')]],'as':_0x89ae70['as'],'attributes':_0x89ae70[_0x2b07('0x1f')],'include':_0x89ae70['include']?_[_0x2b07('0x1d')](_0x89ae70[_0x2b07('0x1c')],function(_0x100f0b){return{'model':db[_0x100f0b[_0x2b07('0x1e')]],'as':_0x100f0b['as'],'attributes':_0x100f0b[_0x2b07('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x2b07('0xb')](function(_0x3231f5){logger['info'](_0x2b07('0x15'),_0xb9a8ff);logger['debug'](_0x2b07('0x15'),_0xb9a8ff,JSON[_0x2b07('0x10')](_0x3231f5));_0x5783ac(_0x3231f5);})[_0x2b07('0x14')](function(_0x2ad420){logger[_0x2b07('0x11')](_0x2b07('0x15'),_0x2ad420['message'],_0xb9a8ff);_0x5de169(_0x118677['error'](0x1f4,_0x2ad420[_0x2b07('0x13')]));});});};exports[_0x2b07('0x20')]=function(_0x38b76c){var _0x9a6a9e=this;return new Promise(function(_0xdea355,_0x4d6fbd){return db['ServicenowAccount'][_0x2b07('0x21')]({'raw':_0x38b76c[_0x2b07('0x18')]?_0x38b76c[_0x2b07('0x18')][_0x2b07('0x19')]===undefined?!![]:![]:!![],'where':_0x38b76c['options']?_0x38b76c[_0x2b07('0x18')][_0x2b07('0x1a')]||null:null,'attributes':_0x38b76c['options']?_0x38b76c[_0x2b07('0x18')]['attributes']||null:null,'include':_0x38b76c[_0x2b07('0x18')]?_0x38b76c[_0x2b07('0x18')][_0x2b07('0x1c')]?_[_0x2b07('0x1d')](_0x38b76c[_0x2b07('0x18')][_0x2b07('0x1c')],function(_0x2f848c){return{'model':db[_0x2f848c[_0x2b07('0x1e')]],'as':_0x2f848c['as'],'attributes':_0x2f848c[_0x2b07('0x1f')],'include':_0x2f848c[_0x2b07('0x1c')]?_['map'](_0x2f848c[_0x2b07('0x1c')],function(_0x4d3cda){return{'model':db[_0x4d3cda['model']],'as':_0x4d3cda['as'],'attributes':_0x4d3cda[_0x2b07('0x1f')],'include':_0x4d3cda[_0x2b07('0x1c')]?_[_0x2b07('0x1d')](_0x4d3cda[_0x2b07('0x1c')],function(_0x1a1a30){return{'model':db[_0x1a1a30[_0x2b07('0x1e')]],'as':_0x1a1a30['as'],'attributes':_0x1a1a30[_0x2b07('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x244610){logger[_0x2b07('0xc')]('ShowServicenowAccount',_0x38b76c);logger[_0x2b07('0xe')](_0x2b07('0x20'),_0x38b76c,JSON[_0x2b07('0x10')](_0x244610));_0xdea355(_0x244610);})[_0x2b07('0x14')](function(_0x471622){logger[_0x2b07('0x11')](_0x2b07('0x20'),_0x471622[_0x2b07('0x13')],_0x38b76c);_0x4d6fbd(_0x9a6a9e[_0x2b07('0x11')](0x1f4,_0x471622[_0x2b07('0x13')]));});});};
\ No newline at end of file
+var _0x1978=['catch','GetServicenowAccount','ServicenowAccount','options','where','limit','include','model','attributes','map','find','raw','ShowServicenowAccount','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','request','then','info','ServicenowAccount,\x20%s,\x20%s','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x427e6d,_0x9e4f29){var _0x593bf4=function(_0x35a318){while(--_0x35a318){_0x427e6d['push'](_0x427e6d['shift']());}};_0x593bf4(++_0x9e4f29);}(_0x1978,0x1a5));var _0x8197=function(_0x1ce833,_0xbd6d2c){_0x1ce833=_0x1ce833-0x0;var _0x37165c=_0x1978[_0x1ce833];return _0x37165c;};'use strict';var _=require(_0x8197('0x0'));var util=require(_0x8197('0x1'));var moment=require(_0x8197('0x2'));var BPromise=require(_0x8197('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8197('0x4'));var db=require(_0x8197('0x5'))['db'];var utils=require(_0x8197('0x6'));var logger=require(_0x8197('0x7'))(_0x8197('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x8197('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3a805f,_0x5b0a12,_0x3195b1){return new BPromise(function(_0x253ef2,_0x3a8be4){return client[_0x8197('0xa')](_0x3a805f,_0x3195b1)[_0x8197('0xb')](function(_0xd210a4){logger[_0x8197('0xc')](_0x8197('0xd'),_0x5b0a12,'request\x20sent');logger[_0x8197('0xe')](_0x8197('0xf'),_0x5b0a12,'request\x20sent',JSON[_0x8197('0x10')](_0xd210a4));if(_0xd210a4[_0x8197('0x11')]){if(_0xd210a4[_0x8197('0x11')][_0x8197('0x12')]===0x1f4){logger[_0x8197('0x11')](_0x8197('0xd'),_0x5b0a12,_0xd210a4[_0x8197('0x11')][_0x8197('0x13')]);return _0x3a8be4(_0xd210a4['error'][_0x8197('0x13')]);}logger[_0x8197('0x11')]('ServicenowAccount,\x20%s,\x20%s',_0x5b0a12,_0xd210a4[_0x8197('0x11')][_0x8197('0x13')]);return _0x253ef2(_0xd210a4['error'][_0x8197('0x13')]);}else{logger[_0x8197('0xc')](_0x8197('0xd'),_0x5b0a12,'request\x20sent');_0x253ef2(_0xd210a4[_0x8197('0x14')][_0x8197('0x13')]);}})[_0x8197('0x15')](function(_0x11d005){logger[_0x8197('0x11')](_0x8197('0xd'),_0x5b0a12,_0x11d005);_0x3a8be4(_0x11d005);});});}exports[_0x8197('0x16')]=function(_0x2dcd17){var _0x37dbde=this;return new Promise(function(_0xddbe73,_0x331971){return db[_0x8197('0x17')]['findAll']({'raw':_0x2dcd17[_0x8197('0x18')]?_0x2dcd17[_0x8197('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x2dcd17[_0x8197('0x18')]?_0x2dcd17['options'][_0x8197('0x19')]||null:null,'attributes':_0x2dcd17['options']?_0x2dcd17[_0x8197('0x18')]['attributes']||null:null,'limit':_0x2dcd17['options']?_0x2dcd17[_0x8197('0x18')][_0x8197('0x1a')]||null:null,'include':_0x2dcd17[_0x8197('0x18')]?_0x2dcd17[_0x8197('0x18')][_0x8197('0x1b')]?_['map'](_0x2dcd17[_0x8197('0x18')][_0x8197('0x1b')],function(_0x2cad59){return{'model':db[_0x2cad59[_0x8197('0x1c')]],'as':_0x2cad59['as'],'attributes':_0x2cad59[_0x8197('0x1d')],'include':_0x2cad59[_0x8197('0x1b')]?_[_0x8197('0x1e')](_0x2cad59[_0x8197('0x1b')],function(_0xb06a6){return{'model':db[_0xb06a6['model']],'as':_0xb06a6['as'],'attributes':_0xb06a6[_0x8197('0x1d')],'include':_0xb06a6['include']?_[_0x8197('0x1e')](_0xb06a6[_0x8197('0x1b')],function(_0x5b25f7){return{'model':db[_0x5b25f7[_0x8197('0x1c')]],'as':_0x5b25f7['as'],'attributes':_0x5b25f7[_0x8197('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x8197('0xb')](function(_0x356dac){logger[_0x8197('0xc')](_0x8197('0x16'),_0x2dcd17);logger[_0x8197('0xe')](_0x8197('0x16'),_0x2dcd17,JSON[_0x8197('0x10')](_0x356dac));_0xddbe73(_0x356dac);})['catch'](function(_0x45f2b0){logger[_0x8197('0x11')](_0x8197('0x16'),_0x45f2b0[_0x8197('0x13')],_0x2dcd17);_0x331971(_0x37dbde['error'](0x1f4,_0x45f2b0['message']));});});};exports['ShowServicenowAccount']=function(_0x3d5226){var _0x18cb6c=this;return new Promise(function(_0x760adb,_0x44b133){return db['ServicenowAccount'][_0x8197('0x1f')]({'raw':_0x3d5226[_0x8197('0x18')]?_0x3d5226['options'][_0x8197('0x20')]===undefined?!![]:![]:!![],'where':_0x3d5226['options']?_0x3d5226[_0x8197('0x18')][_0x8197('0x19')]||null:null,'attributes':_0x3d5226[_0x8197('0x18')]?_0x3d5226[_0x8197('0x18')][_0x8197('0x1d')]||null:null,'include':_0x3d5226['options']?_0x3d5226[_0x8197('0x18')][_0x8197('0x1b')]?_[_0x8197('0x1e')](_0x3d5226['options'][_0x8197('0x1b')],function(_0x634610){return{'model':db[_0x634610['model']],'as':_0x634610['as'],'attributes':_0x634610[_0x8197('0x1d')],'include':_0x634610[_0x8197('0x1b')]?_['map'](_0x634610[_0x8197('0x1b')],function(_0x2e4fdc){return{'model':db[_0x2e4fdc[_0x8197('0x1c')]],'as':_0x2e4fdc['as'],'attributes':_0x2e4fdc[_0x8197('0x1d')],'include':_0x2e4fdc[_0x8197('0x1b')]?_[_0x8197('0x1e')](_0x2e4fdc[_0x8197('0x1b')],function(_0x197b7d){return{'model':db[_0x197b7d['model']],'as':_0x197b7d['as'],'attributes':_0x197b7d['attributes']};}):[]};}):[]};}):[]:[]})[_0x8197('0xb')](function(_0xe0d3e2){logger[_0x8197('0xc')](_0x8197('0x21'),_0x3d5226);logger[_0x8197('0xe')]('ShowServicenowAccount',_0x3d5226,JSON[_0x8197('0x10')](_0xe0d3e2));_0x760adb(_0xe0d3e2);})[_0x8197('0x15')](function(_0x59790a){logger[_0x8197('0x11')](_0x8197('0x21'),_0x59790a[_0x8197('0x13')],_0x3d5226);_0x44b133(_0x18cb6c[_0x8197('0x11')](0x1f4,_0x59790a['message']));});});};
\ No newline at end of file
index 7f6df71..ef35274 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dbe=['exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','/:id/subjects','/:id/descriptions','getDescriptions','post','put','update','delete'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2dbe,0xfe));var _0xe2db=function(_0x22a833,_0x23bcb9){_0x22a833=_0x22a833-0x0;var _0x44b0ce=_0x2dbe[_0x22a833];return _0x44b0ce;};'use strict';var multer=require(_0xe2db('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xe2db('0x1'));var express=require(_0xe2db('0x2'));var router=express[_0xe2db('0x3')]();var fs_extra=require(_0xe2db('0x4'));var auth=require(_0xe2db('0x5'));var interaction=require(_0xe2db('0x6'));var config=require(_0xe2db('0x7'));var controller=require(_0xe2db('0x8'));router[_0xe2db('0x9')]('/',auth[_0xe2db('0xa')](),controller[_0xe2db('0xb')]);router['get'](_0xe2db('0xc'),auth[_0xe2db('0xa')](),controller[_0xe2db('0xd')]);router[_0xe2db('0x9')](_0xe2db('0xe'),auth['isAuthenticated'](),controller['getFields']);router[_0xe2db('0x9')](_0xe2db('0xf'),auth[_0xe2db('0xa')](),controller['getSubjects']);router[_0xe2db('0x9')](_0xe2db('0x10'),auth[_0xe2db('0xa')](),controller[_0xe2db('0x11')]);router[_0xe2db('0x12')]('/',auth['isAuthenticated'](),controller['create']);router[_0xe2db('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xe2db('0x14')]);router[_0xe2db('0x15')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xe2db('0x16')]=router;
\ No newline at end of file
+var _0x553e=['delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/:id','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','update'];(function(_0x38baac,_0x2772b3){var _0x47baf1=function(_0x5646a8){while(--_0x5646a8){_0x38baac['push'](_0x38baac['shift']());}};_0x47baf1(++_0x2772b3);}(_0x553e,0x1cf));var _0xe553=function(_0x75395,_0x1963d6){_0x75395=_0x75395-0x0;var _0x321fe1=_0x553e[_0x75395];return _0x321fe1;};'use strict';var multer=require(_0xe553('0x0'));var util=require(_0xe553('0x1'));var path=require('path');var timeout=require(_0xe553('0x2'));var express=require(_0xe553('0x3'));var router=express[_0xe553('0x4')]();var fs_extra=require(_0xe553('0x5'));var auth=require(_0xe553('0x6'));var interaction=require(_0xe553('0x7'));var config=require('../../config/environment');var controller=require('./intServicenowConfiguration.controller');router['get']('/',auth[_0xe553('0x8')](),controller[_0xe553('0x9')]);router[_0xe553('0xa')](_0xe553('0xb'),auth[_0xe553('0x8')](),controller[_0xe553('0xc')]);router[_0xe553('0xa')]('/:id/fields',auth[_0xe553('0x8')](),controller[_0xe553('0xd')]);router[_0xe553('0xa')](_0xe553('0xe'),auth[_0xe553('0x8')](),controller[_0xe553('0xf')]);router['get'](_0xe553('0x10'),auth[_0xe553('0x8')](),controller['getDescriptions']);router[_0xe553('0x11')]('/',auth['isAuthenticated'](),controller[_0xe553('0x12')]);router['put'](_0xe553('0xb'),auth[_0xe553('0x8')](),controller[_0xe553('0x13')]);router[_0xe553('0x14')](_0xe553('0xb'),auth[_0xe553('0x8')](),controller[_0xe553('0x15')]);module[_0xe553('0x16')]=router;
\ No newline at end of file
index bc446e9..86b4082 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba51=['sequelize','exports','STRING'];(function(_0x48999d,_0x1e02cb){var _0x1ad0d1=function(_0x3f974e){while(--_0x3f974e){_0x48999d['push'](_0x48999d['shift']());}};_0x1ad0d1(++_0x1e02cb);}(_0xba51,0xab));var _0x1ba5=function(_0x50f851,_0xfc6206){_0x50f851=_0x50f851-0x0;var _0x276568=_0xba51[_0x50f851];return _0x276568;};'use strict';var Sequelize=require(_0x1ba5('0x0'));module[_0x1ba5('0x1')]={'name':{'type':Sequelize[_0x1ba5('0x2')]},'description':{'type':Sequelize[_0x1ba5('0x2')]}};
\ No newline at end of file
+var _0xe70f=['sequelize','STRING'];(function(_0x23f2a6,_0x31ec81){var _0x1b548c=function(_0x5ef9b1){while(--_0x5ef9b1){_0x23f2a6['push'](_0x23f2a6['shift']());}};_0x1b548c(++_0x31ec81);}(_0xe70f,0x150));var _0xfe70=function(_0x42084f,_0x393b8c){_0x42084f=_0x42084f-0x0;var _0xb88237=_0xe70f[_0x42084f];return _0xb88237;};'use strict';var Sequelize=require(_0xfe70('0x0'));module['exports']={'name':{'type':Sequelize[_0xfe70('0x1')]},'description':{'type':Sequelize[_0xfe70('0x1')]}};
\ No newline at end of file
index b893299..13025f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe259=['model','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','show','params','find','catch','create','body','getFields','findOne','ServicenowField','nolimit','getSubjects','getDescriptions','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','apply','update','then','end','error','stack','name','map','ServicenowConfiguration','rawAttributes','type','key','query','keys','filters','intersection','attributes'];(function(_0x3550b4,_0x59b309){var _0x237bca=function(_0x9624f9){while(--_0x9624f9){_0x3550b4['push'](_0x3550b4['shift']());}};_0x237bca(++_0x59b309);}(_0xe259,0x1dc));var _0x9e25=function(_0x4bf143,_0x58b36d){_0x4bf143=_0x4bf143-0x0;var _0x33c4d2=_0xe259[_0x4bf143];return _0x33c4d2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9e25('0x0'));var zipdir=require(_0x9e25('0x1'));var jsonpatch=require(_0x9e25('0x2'));var rp=require(_0x9e25('0x3'));var moment=require(_0x9e25('0x4'));var BPromise=require(_0x9e25('0x5'));var Mustache=require(_0x9e25('0x6'));var util=require(_0x9e25('0x7'));var path=require(_0x9e25('0x8'));var sox=require(_0x9e25('0x9'));var csv=require(_0x9e25('0xa'));var ejs=require(_0x9e25('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9e25('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9e25('0xd'));var deskjs=require(_0x9e25('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9e25('0xf'));var Redis=require(_0x9e25('0x10'));var authService=require(_0x9e25('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9e25('0x12'));var logger=require(_0x9e25('0x13'))(_0x9e25('0x14'));var utils=require(_0x9e25('0x15'));var config=require(_0x9e25('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x9e25('0x17'))['db'];function respondWithStatusCode(_0x148876,_0x5ad561){_0x5ad561=_0x5ad561||0xcc;return function(_0xbfc338){if(_0xbfc338){return _0x148876[_0x9e25('0x18')](_0x5ad561);}return _0x148876[_0x9e25('0x19')](_0x5ad561)['end']();};}function respondWithResult(_0x485318,_0x2cf0be){_0x2cf0be=_0x2cf0be||0xc8;return function(_0x5952c1){if(_0x5952c1){return _0x485318[_0x9e25('0x19')](_0x2cf0be)[_0x9e25('0x1a')](_0x5952c1);}};}function respondWithFilteredResult(_0x145fc6,_0x5b5ce5){return function(_0x533823){if(_0x533823){var _0x59b724=typeof _0x5b5ce5[_0x9e25('0x1b')]===_0x9e25('0x1c')&&typeof _0x5b5ce5['limit']===_0x9e25('0x1c');var _0x21b22d=_0x533823[_0x9e25('0x1d')];var _0xf70835=_0x59b724?0x0:_0x5b5ce5[_0x9e25('0x1b')];var _0x2b9d58=_0x59b724?_0x533823[_0x9e25('0x1d')]:_0x5b5ce5[_0x9e25('0x1b')]+_0x5b5ce5[_0x9e25('0x1e')];var _0x5b0e47;if(_0x2b9d58>=_0x21b22d){_0x2b9d58=_0x21b22d;_0x5b0e47=0xc8;}else{_0x5b0e47=0xce;}_0x145fc6[_0x9e25('0x19')](_0x5b0e47);return _0x145fc6[_0x9e25('0x1f')]('Content-Range',_0xf70835+'-'+_0x2b9d58+'/'+_0x21b22d)['json'](_0x533823);}return null;};}function patchUpdates(_0x5c1e62){return function(_0x497b07){try{jsonpatch[_0x9e25('0x20')](_0x497b07,_0x5c1e62,!![]);}catch(_0x46f893){return BPromise['reject'](_0x46f893);}return _0x497b07['save']();};}function saveUpdates(_0x45b496,_0x2d51d0){return function(_0x59afba){if(_0x59afba){return _0x59afba[_0x9e25('0x21')](_0x45b496)['then'](function(_0x12da9c){return _0x12da9c;});}return null;};}function removeEntity(_0x187132,_0x392a80){return function(_0x5e05d9){if(_0x5e05d9){return _0x5e05d9['destroy']()[_0x9e25('0x22')](function(){_0x187132[_0x9e25('0x19')](0xcc)[_0x9e25('0x23')]();});}};}function handleEntityNotFound(_0x3e3834,_0x3ce314){return function(_0x445eb4){if(!_0x445eb4){_0x3e3834[_0x9e25('0x18')](0x194);}return _0x445eb4;};}function handleError(_0x4cb06d,_0x5176b5){_0x5176b5=_0x5176b5||0x1f4;return function(_0x4d77c5){logger[_0x9e25('0x24')](_0x4d77c5[_0x9e25('0x25')]);if(_0x4d77c5[_0x9e25('0x26')]){delete _0x4d77c5[_0x9e25('0x26')];}_0x4cb06d[_0x9e25('0x19')](_0x5176b5)['send'](_0x4d77c5);};}exports['index']=function(_0x33718d,_0x484c0e){var _0x467c04={},_0x2ade66={},_0x366932={'count':0x0,'rows':[]};var _0x80b17c=_[_0x9e25('0x27')](db[_0x9e25('0x28')][_0x9e25('0x29')],function(_0x1e5529){return{'name':_0x1e5529['fieldName'],'type':_0x1e5529[_0x9e25('0x2a')][_0x9e25('0x2b')]};});_0x2ade66['model']=_[_0x9e25('0x27')](_0x80b17c,_0x9e25('0x26'));_0x2ade66[_0x9e25('0x2c')]=_[_0x9e25('0x2d')](_0x33718d[_0x9e25('0x2c')]);_0x2ade66[_0x9e25('0x2e')]=_[_0x9e25('0x2f')](_0x2ade66['model'],_0x2ade66[_0x9e25('0x2c')]);_0x467c04[_0x9e25('0x30')]=_['intersection'](_0x2ade66[_0x9e25('0x31')],qs[_0x9e25('0x32')](_0x33718d[_0x9e25('0x2c')][_0x9e25('0x32')]));_0x467c04[_0x9e25('0x30')]=_0x467c04['attributes'][_0x9e25('0x33')]?_0x467c04[_0x9e25('0x30')]:_0x2ade66['model'];if(!_0x33718d[_0x9e25('0x2c')][_0x9e25('0x34')]('nolimit')){_0x467c04[_0x9e25('0x1e')]=qs[_0x9e25('0x1e')](_0x33718d[_0x9e25('0x2c')][_0x9e25('0x1e')]);_0x467c04[_0x9e25('0x1b')]=qs[_0x9e25('0x1b')](_0x33718d[_0x9e25('0x2c')][_0x9e25('0x1b')]);}_0x467c04[_0x9e25('0x35')]=qs[_0x9e25('0x36')](_0x33718d['query'][_0x9e25('0x36')]);_0x467c04[_0x9e25('0x37')]=qs[_0x9e25('0x2e')](_[_0x9e25('0x38')](_0x33718d[_0x9e25('0x2c')],_0x2ade66[_0x9e25('0x2e')]),_0x80b17c);if(_0x33718d[_0x9e25('0x2c')][_0x9e25('0x39')]){_0x467c04[_0x9e25('0x37')]=_[_0x9e25('0x3a')](_0x467c04[_0x9e25('0x37')],{'$or':_[_0x9e25('0x27')](_0x80b17c,function(_0x140d1d){if(_0x140d1d['type']!==_0x9e25('0x3b')){var _0x1bdf23={};_0x1bdf23[_0x140d1d[_0x9e25('0x26')]]={'$like':'%'+_0x33718d['query'][_0x9e25('0x39')]+'%'};return _0x1bdf23;}})});}_0x467c04=_[_0x9e25('0x3a')]({},_0x467c04,_0x33718d[_0x9e25('0x3c')]);var _0x326be7={'where':_0x467c04[_0x9e25('0x37')]};return db[_0x9e25('0x28')][_0x9e25('0x1d')](_0x326be7)[_0x9e25('0x22')](function(_0x53fe82){_0x366932['count']=_0x53fe82;if(_0x33718d['query']['includeAll']){_0x467c04['include']=[{'all':!![]}];}return db[_0x9e25('0x28')][_0x9e25('0x3d')](_0x467c04);})[_0x9e25('0x22')](function(_0x535a0c){_0x366932[_0x9e25('0x3e')]=_0x535a0c;return _0x366932;})[_0x9e25('0x22')](respondWithFilteredResult(_0x484c0e,_0x467c04))['catch'](handleError(_0x484c0e,null));};exports[_0x9e25('0x3f')]=function(_0x448a57,_0x38ebc7){var _0x3a015b={'raw':![],'where':{'id':_0x448a57[_0x9e25('0x40')]['id']}},_0xc202c5={};_0xc202c5['model']=_[_0x9e25('0x2d')](db[_0x9e25('0x28')][_0x9e25('0x29')]);_0xc202c5['query']=_[_0x9e25('0x2d')](_0x448a57['query']);_0xc202c5['filters']=_[_0x9e25('0x2f')](_0xc202c5[_0x9e25('0x31')],_0xc202c5['query']);_0x3a015b['attributes']=_[_0x9e25('0x2f')](_0xc202c5[_0x9e25('0x31')],qs[_0x9e25('0x32')](_0x448a57['query'][_0x9e25('0x32')]));_0x3a015b[_0x9e25('0x30')]=_0x3a015b[_0x9e25('0x30')][_0x9e25('0x33')]?_0x3a015b[_0x9e25('0x30')]:_0xc202c5[_0x9e25('0x31')];if(_0x448a57[_0x9e25('0x2c')]['includeAll']){_0x3a015b['include']=[{'all':!![]}];}_0x3a015b=_[_0x9e25('0x3a')]({},_0x3a015b,_0x448a57[_0x9e25('0x3c')]);return db[_0x9e25('0x28')][_0x9e25('0x41')](_0x3a015b)[_0x9e25('0x22')](handleEntityNotFound(_0x38ebc7,null))[_0x9e25('0x22')](respondWithResult(_0x38ebc7,null))[_0x9e25('0x42')](handleError(_0x38ebc7,null));};exports[_0x9e25('0x43')]=function(_0x221983,_0x4e43e2){return db[_0x9e25('0x28')][_0x9e25('0x43')](_0x221983[_0x9e25('0x44')],{})['then'](respondWithResult(_0x4e43e2,0xc9))['catch'](handleError(_0x4e43e2,null));};exports['update']=function(_0x3ddf8d,_0x176b97){if(_0x3ddf8d['body']['id']){delete _0x3ddf8d[_0x9e25('0x44')]['id'];}return db[_0x9e25('0x28')]['find']({'where':{'id':_0x3ddf8d[_0x9e25('0x40')]['id']}})[_0x9e25('0x22')](handleEntityNotFound(_0x176b97,null))['then'](saveUpdates(_0x3ddf8d['body'],null))['then'](respondWithResult(_0x176b97,null))[_0x9e25('0x42')](handleError(_0x176b97,null));};exports['destroy']=function(_0x35aaf4,_0x1d492a){return db[_0x9e25('0x28')][_0x9e25('0x41')]({'where':{'id':_0x35aaf4['params']['id']}})['then'](handleEntityNotFound(_0x1d492a,null))['then'](removeEntity(_0x1d492a,null))[_0x9e25('0x42')](handleError(_0x1d492a,null));};exports[_0x9e25('0x45')]=function(_0x256f04,_0x532905,_0x439f3d){var _0x4f00cc={};var _0x4fdbdf={};var _0x2803b9;var _0x331a32;return db[_0x9e25('0x28')][_0x9e25('0x46')]({'where':{'id':_0x256f04[_0x9e25('0x40')]['id']}})[_0x9e25('0x22')](handleEntityNotFound(_0x532905,null))[_0x9e25('0x22')](function(_0x442792){if(_0x442792){_0x2803b9=_0x442792;_0x4fdbdf[_0x9e25('0x31')]=_['keys'](db[_0x9e25('0x47')]['rawAttributes']);_0x4fdbdf[_0x9e25('0x2c')]=_['keys'](_0x256f04['query']);_0x4fdbdf['filters']=_[_0x9e25('0x2f')](_0x4fdbdf[_0x9e25('0x31')],_0x4fdbdf[_0x9e25('0x2c')]);_0x4f00cc[_0x9e25('0x30')]=_[_0x9e25('0x2f')](_0x4fdbdf[_0x9e25('0x31')],qs[_0x9e25('0x32')](_0x256f04[_0x9e25('0x2c')][_0x9e25('0x32')]));_0x4f00cc[_0x9e25('0x30')]=_0x4f00cc[_0x9e25('0x30')][_0x9e25('0x33')]?_0x4f00cc[_0x9e25('0x30')]:_0x4fdbdf['model'];_0x4f00cc[_0x9e25('0x35')]=qs[_0x9e25('0x36')](_0x256f04[_0x9e25('0x2c')][_0x9e25('0x36')]);_0x4f00cc[_0x9e25('0x37')]=qs[_0x9e25('0x2e')](_[_0x9e25('0x38')](_0x256f04[_0x9e25('0x2c')],_0x4fdbdf[_0x9e25('0x2e')]));if(_0x256f04['query'][_0x9e25('0x39')]){_0x4f00cc['where']=_[_0x9e25('0x3a')](_0x4f00cc['where'],{'$or':_[_0x9e25('0x27')](_0x4f00cc[_0x9e25('0x30')],function(_0x508653){var _0x563f51={};_0x563f51[_0x508653]={'$like':'%'+_0x256f04[_0x9e25('0x2c')]['filter']+'%'};return _0x563f51;})});}_0x4f00cc=_[_0x9e25('0x3a')]({},_0x4f00cc,_0x256f04['options']);return _0x2803b9['getFields'](_0x4f00cc);}})[_0x9e25('0x22')](function(_0x58d764){if(_0x58d764){_0x331a32=_0x58d764[_0x9e25('0x33')];if(!_0x256f04[_0x9e25('0x2c')][_0x9e25('0x34')](_0x9e25('0x48'))){_0x4f00cc['limit']=qs[_0x9e25('0x1e')](_0x256f04[_0x9e25('0x2c')][_0x9e25('0x1e')]);_0x4f00cc[_0x9e25('0x1b')]=qs['offset'](_0x256f04[_0x9e25('0x2c')][_0x9e25('0x1b')]);}return _0x2803b9[_0x9e25('0x45')](_0x4f00cc);}})['then'](function(_0x25a9a0){if(_0x25a9a0){return _0x25a9a0?{'count':_0x331a32,'rows':_0x25a9a0}:null;}})[_0x9e25('0x22')](respondWithResult(_0x532905,null))['catch'](handleError(_0x532905,null));};exports['getSubjects']=function(_0xb98121,_0x3bcaa3,_0x3592fd){var _0x5be49d={};var _0x4819e8={};var _0x564316;var _0xa20a48;return db[_0x9e25('0x28')][_0x9e25('0x46')]({'where':{'id':_0xb98121[_0x9e25('0x40')]['id']}})[_0x9e25('0x22')](handleEntityNotFound(_0x3bcaa3,null))[_0x9e25('0x22')](function(_0x1718dc){if(_0x1718dc){_0x564316=_0x1718dc;_0x4819e8[_0x9e25('0x31')]=_[_0x9e25('0x2d')](db[_0x9e25('0x47')]['rawAttributes']);_0x4819e8[_0x9e25('0x2c')]=_[_0x9e25('0x2d')](_0xb98121[_0x9e25('0x2c')]);_0x4819e8[_0x9e25('0x2e')]=_[_0x9e25('0x2f')](_0x4819e8['model'],_0x4819e8[_0x9e25('0x2c')]);_0x5be49d[_0x9e25('0x30')]=_[_0x9e25('0x2f')](_0x4819e8[_0x9e25('0x31')],qs[_0x9e25('0x32')](_0xb98121[_0x9e25('0x2c')][_0x9e25('0x32')]));_0x5be49d[_0x9e25('0x30')]=_0x5be49d['attributes'][_0x9e25('0x33')]?_0x5be49d['attributes']:_0x4819e8[_0x9e25('0x31')];_0x5be49d[_0x9e25('0x35')]=qs[_0x9e25('0x36')](_0xb98121[_0x9e25('0x2c')][_0x9e25('0x36')]);_0x5be49d[_0x9e25('0x37')]=qs[_0x9e25('0x2e')](_[_0x9e25('0x38')](_0xb98121[_0x9e25('0x2c')],_0x4819e8['filters']));if(_0xb98121[_0x9e25('0x2c')][_0x9e25('0x39')]){_0x5be49d['where']=_['merge'](_0x5be49d[_0x9e25('0x37')],{'$or':_['map'](_0x5be49d[_0x9e25('0x30')],function(_0x4c8904){var _0x343c49={};_0x343c49[_0x4c8904]={'$like':'%'+_0xb98121[_0x9e25('0x2c')][_0x9e25('0x39')]+'%'};return _0x343c49;})});}_0x5be49d=_[_0x9e25('0x3a')]({},_0x5be49d,_0xb98121[_0x9e25('0x3c')]);return _0x564316[_0x9e25('0x49')](_0x5be49d);}})[_0x9e25('0x22')](function(_0x44fa83){if(_0x44fa83){_0xa20a48=_0x44fa83[_0x9e25('0x33')];if(!_0xb98121[_0x9e25('0x2c')][_0x9e25('0x34')]('nolimit')){_0x5be49d[_0x9e25('0x1e')]=qs['limit'](_0xb98121[_0x9e25('0x2c')][_0x9e25('0x1e')]);_0x5be49d[_0x9e25('0x1b')]=qs[_0x9e25('0x1b')](_0xb98121['query'][_0x9e25('0x1b')]);}return _0x564316['getSubjects'](_0x5be49d);}})[_0x9e25('0x22')](function(_0xb70b13){if(_0xb70b13){return _0xb70b13?{'count':_0xa20a48,'rows':_0xb70b13}:null;}})[_0x9e25('0x22')](respondWithResult(_0x3bcaa3,null))['catch'](handleError(_0x3bcaa3,null));};exports['getDescriptions']=function(_0x15207a,_0x2e74a9,_0x900615){var _0xf80b1e={};var _0x410f38={};var _0x8b216d;var _0x509edd;return db[_0x9e25('0x28')][_0x9e25('0x46')]({'where':{'id':_0x15207a[_0x9e25('0x40')]['id']}})[_0x9e25('0x22')](handleEntityNotFound(_0x2e74a9,null))['then'](function(_0x238283){if(_0x238283){_0x8b216d=_0x238283;_0x410f38[_0x9e25('0x31')]=_[_0x9e25('0x2d')](db[_0x9e25('0x47')]['rawAttributes']);_0x410f38[_0x9e25('0x2c')]=_[_0x9e25('0x2d')](_0x15207a[_0x9e25('0x2c')]);_0x410f38[_0x9e25('0x2e')]=_[_0x9e25('0x2f')](_0x410f38['model'],_0x410f38[_0x9e25('0x2c')]);_0xf80b1e[_0x9e25('0x30')]=_[_0x9e25('0x2f')](_0x410f38['model'],qs[_0x9e25('0x32')](_0x15207a[_0x9e25('0x2c')][_0x9e25('0x32')]));_0xf80b1e[_0x9e25('0x30')]=_0xf80b1e[_0x9e25('0x30')][_0x9e25('0x33')]?_0xf80b1e['attributes']:_0x410f38[_0x9e25('0x31')];_0xf80b1e['order']=qs['sort'](_0x15207a[_0x9e25('0x2c')]['sort']);_0xf80b1e[_0x9e25('0x37')]=qs[_0x9e25('0x2e')](_['pick'](_0x15207a[_0x9e25('0x2c')],_0x410f38[_0x9e25('0x2e')]));if(_0x15207a[_0x9e25('0x2c')][_0x9e25('0x39')]){_0xf80b1e[_0x9e25('0x37')]=_[_0x9e25('0x3a')](_0xf80b1e[_0x9e25('0x37')],{'$or':_[_0x9e25('0x27')](_0xf80b1e[_0x9e25('0x30')],function(_0x1f5cf6){var _0x2fccf3={};_0x2fccf3[_0x1f5cf6]={'$like':'%'+_0x15207a[_0x9e25('0x2c')]['filter']+'%'};return _0x2fccf3;})});}_0xf80b1e=_[_0x9e25('0x3a')]({},_0xf80b1e,_0x15207a[_0x9e25('0x3c')]);return _0x8b216d[_0x9e25('0x4a')](_0xf80b1e);}})[_0x9e25('0x22')](function(_0x31bb2d){if(_0x31bb2d){_0x509edd=_0x31bb2d[_0x9e25('0x33')];if(!_0x15207a[_0x9e25('0x2c')][_0x9e25('0x34')](_0x9e25('0x48'))){_0xf80b1e[_0x9e25('0x1e')]=qs['limit'](_0x15207a[_0x9e25('0x2c')][_0x9e25('0x1e')]);_0xf80b1e[_0x9e25('0x1b')]=qs[_0x9e25('0x1b')](_0x15207a['query'][_0x9e25('0x1b')]);}return _0x8b216d[_0x9e25('0x4a')](_0xf80b1e);}})[_0x9e25('0x22')](function(_0x2c46c5){if(_0x2c46c5){return _0x2c46c5?{'count':_0x509edd,'rows':_0x2c46c5}:null;}})[_0x9e25('0x22')](respondWithResult(_0x2e74a9,null))[_0x9e25('0x42')](handleError(_0x2e74a9,null));};
\ No newline at end of file
+var _0x993e=['json','offset','undefined','count','limit','Content-Range','apply','reject','destroy','then','stack','name','send','map','ServicenowConfiguration','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','body','findOne','ServicenowField','hasOwnProperty','nolimit','getFields','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x367ef9,_0x1ef0ee){var _0x35ca32=function(_0x369e2e){while(--_0x369e2e){_0x367ef9['push'](_0x367ef9['shift']());}};_0x35ca32(++_0x1ef0ee);}(_0x993e,0x123));var _0xe993=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x993e[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0xe993('0x0'));var rimraf=require(_0xe993('0x1'));var zipdir=require(_0xe993('0x2'));var jsonpatch=require(_0xe993('0x3'));var rp=require(_0xe993('0x4'));var moment=require(_0xe993('0x5'));var BPromise=require(_0xe993('0x6'));var Mustache=require(_0xe993('0x7'));var util=require(_0xe993('0x8'));var path=require(_0xe993('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe993('0xa'));var fs=require('fs');var fs_extra=require(_0xe993('0xb'));var _=require(_0xe993('0xc'));var squel=require(_0xe993('0xd'));var crypto=require(_0xe993('0xe'));var jsforce=require(_0xe993('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xe993('0x10'));var querystring=require(_0xe993('0x11'));var Papa=require(_0xe993('0x12'));var Redis=require(_0xe993('0x13'));var authService=require(_0xe993('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xe993('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe993('0x16'))('api');var utils=require(_0xe993('0x17'));var config=require(_0xe993('0x18'));var licenseUtil=require(_0xe993('0x19'));var db=require(_0xe993('0x1a'))['db'];function respondWithStatusCode(_0x2e2bec,_0x2273a4){_0x2273a4=_0x2273a4||0xcc;return function(_0x944736){if(_0x944736){return _0x2e2bec[_0xe993('0x1b')](_0x2273a4);}return _0x2e2bec[_0xe993('0x1c')](_0x2273a4)['end']();};}function respondWithResult(_0x151a9e,_0xd341a4){_0xd341a4=_0xd341a4||0xc8;return function(_0x39df2a){if(_0x39df2a){return _0x151a9e['status'](_0xd341a4)[_0xe993('0x1d')](_0x39df2a);}};}function respondWithFilteredResult(_0xba0c7f,_0x4b3b03){return function(_0x91ae44){if(_0x91ae44){var _0x2b8d68=typeof _0x4b3b03[_0xe993('0x1e')]===_0xe993('0x1f')&&typeof _0x4b3b03['limit']===_0xe993('0x1f');var _0x437cea=_0x91ae44[_0xe993('0x20')];var _0x2cffc9=_0x2b8d68?0x0:_0x4b3b03[_0xe993('0x1e')];var _0x2fc49f=_0x2b8d68?_0x91ae44['count']:_0x4b3b03['offset']+_0x4b3b03[_0xe993('0x21')];var _0xe427a1;if(_0x2fc49f>=_0x437cea){_0x2fc49f=_0x437cea;_0xe427a1=0xc8;}else{_0xe427a1=0xce;}_0xba0c7f['status'](_0xe427a1);return _0xba0c7f['set'](_0xe993('0x22'),_0x2cffc9+'-'+_0x2fc49f+'/'+_0x437cea)['json'](_0x91ae44);}return null;};}function patchUpdates(_0x4c5d2b){return function(_0x68a60d){try{jsonpatch[_0xe993('0x23')](_0x68a60d,_0x4c5d2b,!![]);}catch(_0xdfb051){return BPromise[_0xe993('0x24')](_0xdfb051);}return _0x68a60d['save']();};}function saveUpdates(_0x3fdb13,_0x328579){return function(_0x44e26f){if(_0x44e26f){return _0x44e26f['update'](_0x3fdb13)['then'](function(_0x30f647){return _0x30f647;});}return null;};}function removeEntity(_0x17f0fe,_0x31bf34){return function(_0x57d79c){if(_0x57d79c){return _0x57d79c[_0xe993('0x25')]()[_0xe993('0x26')](function(){_0x17f0fe[_0xe993('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x18546b,_0x40eb16){return function(_0x1a2c13){if(!_0x1a2c13){_0x18546b['sendStatus'](0x194);}return _0x1a2c13;};}function handleError(_0x2124b2,_0x3b1a37){_0x3b1a37=_0x3b1a37||0x1f4;return function(_0x57330f){logger['error'](_0x57330f[_0xe993('0x27')]);if(_0x57330f[_0xe993('0x28')]){delete _0x57330f[_0xe993('0x28')];}_0x2124b2[_0xe993('0x1c')](_0x3b1a37)[_0xe993('0x29')](_0x57330f);};}exports['index']=function(_0x30c342,_0x474c6c){var _0x598a8e={},_0x4987db={},_0x238c66={'count':0x0,'rows':[]};var _0x444de6=_[_0xe993('0x2a')](db[_0xe993('0x2b')][_0xe993('0x2c')],function(_0xe89465){return{'name':_0xe89465[_0xe993('0x2d')],'type':_0xe89465[_0xe993('0x2e')][_0xe993('0x2f')]};});_0x4987db[_0xe993('0x30')]=_['map'](_0x444de6,_0xe993('0x28'));_0x4987db[_0xe993('0x31')]=_[_0xe993('0x32')](_0x30c342[_0xe993('0x31')]);_0x4987db['filters']=_[_0xe993('0x33')](_0x4987db[_0xe993('0x30')],_0x4987db[_0xe993('0x31')]);_0x598a8e[_0xe993('0x34')]=_['intersection'](_0x4987db[_0xe993('0x30')],qs[_0xe993('0x35')](_0x30c342['query'][_0xe993('0x35')]));_0x598a8e[_0xe993('0x34')]=_0x598a8e['attributes'][_0xe993('0x36')]?_0x598a8e[_0xe993('0x34')]:_0x4987db[_0xe993('0x30')];if(!_0x30c342['query']['hasOwnProperty']('nolimit')){_0x598a8e['limit']=qs[_0xe993('0x21')](_0x30c342[_0xe993('0x31')][_0xe993('0x21')]);_0x598a8e[_0xe993('0x1e')]=qs[_0xe993('0x1e')](_0x30c342[_0xe993('0x31')][_0xe993('0x1e')]);}_0x598a8e[_0xe993('0x37')]=qs[_0xe993('0x38')](_0x30c342[_0xe993('0x31')][_0xe993('0x38')]);_0x598a8e[_0xe993('0x39')]=qs['filters'](_[_0xe993('0x3a')](_0x30c342[_0xe993('0x31')],_0x4987db[_0xe993('0x3b')]),_0x444de6);if(_0x30c342['query'][_0xe993('0x3c')]){_0x598a8e[_0xe993('0x39')]=_[_0xe993('0x3d')](_0x598a8e[_0xe993('0x39')],{'$or':_[_0xe993('0x2a')](_0x444de6,function(_0xc035f8){if(_0xc035f8[_0xe993('0x2e')]!==_0xe993('0x3e')){var _0x296386={};_0x296386[_0xc035f8[_0xe993('0x28')]]={'$like':'%'+_0x30c342['query']['filter']+'%'};return _0x296386;}})});}_0x598a8e=_['merge']({},_0x598a8e,_0x30c342[_0xe993('0x3f')]);var _0x4dc357={'where':_0x598a8e['where']};return db['ServicenowConfiguration']['count'](_0x4dc357)[_0xe993('0x26')](function(_0x25e633){_0x238c66[_0xe993('0x20')]=_0x25e633;if(_0x30c342['query'][_0xe993('0x40')]){_0x598a8e[_0xe993('0x41')]=[{'all':!![]}];}return db['ServicenowConfiguration'][_0xe993('0x42')](_0x598a8e);})[_0xe993('0x26')](function(_0x2991a0){_0x238c66[_0xe993('0x43')]=_0x2991a0;return _0x238c66;})[_0xe993('0x26')](respondWithFilteredResult(_0x474c6c,_0x598a8e))[_0xe993('0x44')](handleError(_0x474c6c,null));};exports[_0xe993('0x45')]=function(_0x5c1c6e,_0x5984d2){var _0x44c773={'raw':![],'where':{'id':_0x5c1c6e[_0xe993('0x46')]['id']}},_0x5af746={};_0x5af746[_0xe993('0x30')]=_['keys'](db[_0xe993('0x2b')][_0xe993('0x2c')]);_0x5af746[_0xe993('0x31')]=_[_0xe993('0x32')](_0x5c1c6e['query']);_0x5af746[_0xe993('0x3b')]=_[_0xe993('0x33')](_0x5af746[_0xe993('0x30')],_0x5af746['query']);_0x44c773[_0xe993('0x34')]=_[_0xe993('0x33')](_0x5af746[_0xe993('0x30')],qs[_0xe993('0x35')](_0x5c1c6e[_0xe993('0x31')][_0xe993('0x35')]));_0x44c773[_0xe993('0x34')]=_0x44c773[_0xe993('0x34')][_0xe993('0x36')]?_0x44c773[_0xe993('0x34')]:_0x5af746[_0xe993('0x30')];if(_0x5c1c6e[_0xe993('0x31')][_0xe993('0x40')]){_0x44c773[_0xe993('0x41')]=[{'all':!![]}];}_0x44c773=_[_0xe993('0x3d')]({},_0x44c773,_0x5c1c6e[_0xe993('0x3f')]);return db[_0xe993('0x2b')][_0xe993('0x47')](_0x44c773)[_0xe993('0x26')](handleEntityNotFound(_0x5984d2,null))[_0xe993('0x26')](respondWithResult(_0x5984d2,null))[_0xe993('0x44')](handleError(_0x5984d2,null));};exports['create']=function(_0x5209c3,_0x1bd4aa){return db[_0xe993('0x2b')]['create'](_0x5209c3['body'],{})['then'](respondWithResult(_0x1bd4aa,0xc9))[_0xe993('0x44')](handleError(_0x1bd4aa,null));};exports['update']=function(_0x4d537f,_0x48d5bc){if(_0x4d537f[_0xe993('0x48')]['id']){delete _0x4d537f[_0xe993('0x48')]['id'];}return db[_0xe993('0x2b')][_0xe993('0x47')]({'where':{'id':_0x4d537f['params']['id']}})['then'](handleEntityNotFound(_0x48d5bc,null))[_0xe993('0x26')](saveUpdates(_0x4d537f[_0xe993('0x48')],null))[_0xe993('0x26')](respondWithResult(_0x48d5bc,null))['catch'](handleError(_0x48d5bc,null));};exports[_0xe993('0x25')]=function(_0xa00522,_0x1decae){return db[_0xe993('0x2b')]['find']({'where':{'id':_0xa00522[_0xe993('0x46')]['id']}})['then'](handleEntityNotFound(_0x1decae,null))['then'](removeEntity(_0x1decae,null))[_0xe993('0x44')](handleError(_0x1decae,null));};exports['getFields']=function(_0x1df6b4,_0x432ebf,_0x4278ee){var _0x55b7bf={};var _0x59132f={};var _0xbe1b85;var _0x5c475b;return db[_0xe993('0x2b')][_0xe993('0x49')]({'where':{'id':_0x1df6b4[_0xe993('0x46')]['id']}})[_0xe993('0x26')](handleEntityNotFound(_0x432ebf,null))['then'](function(_0x4cec99){if(_0x4cec99){_0xbe1b85=_0x4cec99;_0x59132f[_0xe993('0x30')]=_[_0xe993('0x32')](db[_0xe993('0x4a')][_0xe993('0x2c')]);_0x59132f[_0xe993('0x31')]=_[_0xe993('0x32')](_0x1df6b4['query']);_0x59132f[_0xe993('0x3b')]=_[_0xe993('0x33')](_0x59132f[_0xe993('0x30')],_0x59132f[_0xe993('0x31')]);_0x55b7bf['attributes']=_['intersection'](_0x59132f[_0xe993('0x30')],qs[_0xe993('0x35')](_0x1df6b4['query']['fields']));_0x55b7bf[_0xe993('0x34')]=_0x55b7bf[_0xe993('0x34')]['length']?_0x55b7bf[_0xe993('0x34')]:_0x59132f['model'];_0x55b7bf[_0xe993('0x37')]=qs['sort'](_0x1df6b4[_0xe993('0x31')][_0xe993('0x38')]);_0x55b7bf[_0xe993('0x39')]=qs[_0xe993('0x3b')](_[_0xe993('0x3a')](_0x1df6b4[_0xe993('0x31')],_0x59132f[_0xe993('0x3b')]));if(_0x1df6b4[_0xe993('0x31')]['filter']){_0x55b7bf[_0xe993('0x39')]=_[_0xe993('0x3d')](_0x55b7bf[_0xe993('0x39')],{'$or':_[_0xe993('0x2a')](_0x55b7bf[_0xe993('0x34')],function(_0x224b6c){var _0x3cc3a8={};_0x3cc3a8[_0x224b6c]={'$like':'%'+_0x1df6b4[_0xe993('0x31')]['filter']+'%'};return _0x3cc3a8;})});}_0x55b7bf=_[_0xe993('0x3d')]({},_0x55b7bf,_0x1df6b4[_0xe993('0x3f')]);return _0xbe1b85['getFields'](_0x55b7bf);}})[_0xe993('0x26')](function(_0x1951de){if(_0x1951de){_0x5c475b=_0x1951de['length'];if(!_0x1df6b4['query'][_0xe993('0x4b')](_0xe993('0x4c'))){_0x55b7bf[_0xe993('0x21')]=qs[_0xe993('0x21')](_0x1df6b4[_0xe993('0x31')][_0xe993('0x21')]);_0x55b7bf[_0xe993('0x1e')]=qs[_0xe993('0x1e')](_0x1df6b4[_0xe993('0x31')][_0xe993('0x1e')]);}return _0xbe1b85[_0xe993('0x4d')](_0x55b7bf);}})[_0xe993('0x26')](function(_0x5d3db6){if(_0x5d3db6){return _0x5d3db6?{'count':_0x5c475b,'rows':_0x5d3db6}:null;}})[_0xe993('0x26')](respondWithResult(_0x432ebf,null))[_0xe993('0x44')](handleError(_0x432ebf,null));};exports[_0xe993('0x4e')]=function(_0x2ee5d1,_0x118162,_0x5352fc){var _0xdb9e76={};var _0x55fb1b={};var _0x4e2b79;var _0x3915f9;return db[_0xe993('0x2b')][_0xe993('0x49')]({'where':{'id':_0x2ee5d1[_0xe993('0x46')]['id']}})[_0xe993('0x26')](handleEntityNotFound(_0x118162,null))[_0xe993('0x26')](function(_0x465393){if(_0x465393){_0x4e2b79=_0x465393;_0x55fb1b['model']=_[_0xe993('0x32')](db[_0xe993('0x4a')]['rawAttributes']);_0x55fb1b['query']=_[_0xe993('0x32')](_0x2ee5d1[_0xe993('0x31')]);_0x55fb1b[_0xe993('0x3b')]=_[_0xe993('0x33')](_0x55fb1b[_0xe993('0x30')],_0x55fb1b[_0xe993('0x31')]);_0xdb9e76[_0xe993('0x34')]=_[_0xe993('0x33')](_0x55fb1b[_0xe993('0x30')],qs[_0xe993('0x35')](_0x2ee5d1[_0xe993('0x31')][_0xe993('0x35')]));_0xdb9e76['attributes']=_0xdb9e76[_0xe993('0x34')][_0xe993('0x36')]?_0xdb9e76[_0xe993('0x34')]:_0x55fb1b['model'];_0xdb9e76['order']=qs['sort'](_0x2ee5d1[_0xe993('0x31')][_0xe993('0x38')]);_0xdb9e76['where']=qs[_0xe993('0x3b')](_['pick'](_0x2ee5d1[_0xe993('0x31')],_0x55fb1b[_0xe993('0x3b')]));if(_0x2ee5d1[_0xe993('0x31')][_0xe993('0x3c')]){_0xdb9e76[_0xe993('0x39')]=_[_0xe993('0x3d')](_0xdb9e76['where'],{'$or':_[_0xe993('0x2a')](_0xdb9e76[_0xe993('0x34')],function(_0x2765b5){var _0x21abc3={};_0x21abc3[_0x2765b5]={'$like':'%'+_0x2ee5d1['query'][_0xe993('0x3c')]+'%'};return _0x21abc3;})});}_0xdb9e76=_[_0xe993('0x3d')]({},_0xdb9e76,_0x2ee5d1[_0xe993('0x3f')]);return _0x4e2b79['getSubjects'](_0xdb9e76);}})[_0xe993('0x26')](function(_0x36feda){if(_0x36feda){_0x3915f9=_0x36feda[_0xe993('0x36')];if(!_0x2ee5d1[_0xe993('0x31')][_0xe993('0x4b')](_0xe993('0x4c'))){_0xdb9e76[_0xe993('0x21')]=qs['limit'](_0x2ee5d1['query']['limit']);_0xdb9e76[_0xe993('0x1e')]=qs['offset'](_0x2ee5d1[_0xe993('0x31')][_0xe993('0x1e')]);}return _0x4e2b79[_0xe993('0x4e')](_0xdb9e76);}})[_0xe993('0x26')](function(_0x54310f){if(_0x54310f){return _0x54310f?{'count':_0x3915f9,'rows':_0x54310f}:null;}})[_0xe993('0x26')](respondWithResult(_0x118162,null))['catch'](handleError(_0x118162,null));};exports[_0xe993('0x4f')]=function(_0xe6994a,_0x48d096,_0x1257b9){var _0x333140={};var _0x5d3a17={};var _0x7d4c84;var _0x244cb9;return db[_0xe993('0x2b')]['findOne']({'where':{'id':_0xe6994a[_0xe993('0x46')]['id']}})[_0xe993('0x26')](handleEntityNotFound(_0x48d096,null))[_0xe993('0x26')](function(_0x287f86){if(_0x287f86){_0x7d4c84=_0x287f86;_0x5d3a17[_0xe993('0x30')]=_[_0xe993('0x32')](db[_0xe993('0x4a')][_0xe993('0x2c')]);_0x5d3a17[_0xe993('0x31')]=_[_0xe993('0x32')](_0xe6994a[_0xe993('0x31')]);_0x5d3a17['filters']=_[_0xe993('0x33')](_0x5d3a17[_0xe993('0x30')],_0x5d3a17[_0xe993('0x31')]);_0x333140[_0xe993('0x34')]=_[_0xe993('0x33')](_0x5d3a17[_0xe993('0x30')],qs[_0xe993('0x35')](_0xe6994a['query'][_0xe993('0x35')]));_0x333140['attributes']=_0x333140['attributes'][_0xe993('0x36')]?_0x333140[_0xe993('0x34')]:_0x5d3a17[_0xe993('0x30')];_0x333140[_0xe993('0x37')]=qs[_0xe993('0x38')](_0xe6994a[_0xe993('0x31')][_0xe993('0x38')]);_0x333140['where']=qs[_0xe993('0x3b')](_[_0xe993('0x3a')](_0xe6994a[_0xe993('0x31')],_0x5d3a17['filters']));if(_0xe6994a[_0xe993('0x31')][_0xe993('0x3c')]){_0x333140[_0xe993('0x39')]=_['merge'](_0x333140[_0xe993('0x39')],{'$or':_['map'](_0x333140[_0xe993('0x34')],function(_0x1347ff){var _0x5e35f9={};_0x5e35f9[_0x1347ff]={'$like':'%'+_0xe6994a[_0xe993('0x31')][_0xe993('0x3c')]+'%'};return _0x5e35f9;})});}_0x333140=_['merge']({},_0x333140,_0xe6994a['options']);return _0x7d4c84[_0xe993('0x4f')](_0x333140);}})[_0xe993('0x26')](function(_0x416430){if(_0x416430){_0x244cb9=_0x416430[_0xe993('0x36')];if(!_0xe6994a['query'][_0xe993('0x4b')](_0xe993('0x4c'))){_0x333140[_0xe993('0x21')]=qs[_0xe993('0x21')](_0xe6994a[_0xe993('0x31')][_0xe993('0x21')]);_0x333140[_0xe993('0x1e')]=qs[_0xe993('0x1e')](_0xe6994a[_0xe993('0x31')][_0xe993('0x1e')]);}return _0x7d4c84[_0xe993('0x4f')](_0x333140);}})[_0xe993('0x26')](function(_0x24976a){if(_0x24976a){return _0x24976a?{'count':_0x244cb9,'rows':_0x24976a}:null;}})[_0xe993('0x26')](respondWithResult(_0x48d096,null))[_0xe993('0x44')](handleError(_0x48d096,null));};
\ No newline at end of file
index e56bfd9..50521e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ef=['api','moment','bluebird','request-promise','path','../../config/environment','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration','int_servicenow_configurations','util','../../config/logger'];(function(_0x1beef3,_0x57c4b8){var _0x5af964=function(_0x36f463){while(--_0x36f463){_0x1beef3['push'](_0x1beef3['shift']());}};_0x5af964(++_0x57c4b8);}(_0x57ef,0xdb));var _0xf57e=function(_0x154743,_0x32e3c6){_0x154743=_0x154743-0x0;var _0x4f0421=_0x57ef[_0x154743];return _0x4f0421;};'use strict';var _=require('lodash');var util=require(_0xf57e('0x0'));var logger=require(_0xf57e('0x1'))(_0xf57e('0x2'));var moment=require(_0xf57e('0x3'));var BPromise=require(_0xf57e('0x4'));var rp=require(_0xf57e('0x5'));var fs=require('fs');var path=require(_0xf57e('0x6'));var rimraf=require('rimraf');var config=require(_0xf57e('0x7'));var attributes=require(_0xf57e('0x8'));module[_0xf57e('0x9')]=function(_0xf9d112,_0x31d997){return _0xf9d112[_0xf57e('0xa')](_0xf57e('0xb'),attributes,{'tableName':_0xf57e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe34f=['request-promise','path','rimraf','../../config/environment','./intServicenowConfiguration.attributes','define','ServicenowConfiguration','int_servicenow_configurations','moment','bluebird'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xe34f,0xbc));var _0xfe34=function(_0x4481cc,_0x21280d){_0x4481cc=_0x4481cc-0x0;var _0x687002=_0xe34f[_0x4481cc];return _0x687002;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xfe34('0x0'));var BPromise=require(_0xfe34('0x1'));var rp=require(_0xfe34('0x2'));var fs=require('fs');var path=require(_0xfe34('0x3'));var rimraf=require(_0xfe34('0x4'));var config=require(_0xfe34('0x5'));var attributes=require(_0xfe34('0x6'));module['exports']=function(_0x1a3c2b,_0x24e8cb){return _0x1a3c2b[_0xfe34('0x7')](_0xfe34('0x8'),attributes,{'tableName':_0xfe34('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3bb9a6d..21a5543 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81c6=['stringify','code','error','message','info','result','catch','util','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','ServicenowConfiguration,\x20%s,\x20%s','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x81c6,0x1d5));var _0x681c=function(_0x202962,_0x4baf03){_0x202962=_0x202962-0x0;var _0x4896a0=_0x81c6[_0x202962];return _0x4896a0;};'use strict';var _=require('lodash');var util=require(_0x681c('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x681c('0x1'));var db=require(_0x681c('0x2'))['db'];var utils=require(_0x681c('0x3'));var logger=require('../../config/logger')(_0x681c('0x4'));var config=require(_0x681c('0x5'));var jayson=require(_0x681c('0x6'));var client=jayson[_0x681c('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x45331,_0xdc57a5,_0x5624d7){return new BPromise(function(_0x5b5f22,_0x1750e2){return client[_0x681c('0x8')](_0x45331,_0x5624d7)[_0x681c('0x9')](function(_0x5de78e){logger['info'](_0x681c('0xa'),_0xdc57a5,'request\x20sent');logger[_0x681c('0xb')](_0x681c('0xc'),_0xdc57a5,_0x681c('0xd'),JSON[_0x681c('0xe')](_0x5de78e));if(_0x5de78e['error']){if(_0x5de78e['error'][_0x681c('0xf')]===0x1f4){logger[_0x681c('0x10')](_0x681c('0xa'),_0xdc57a5,_0x5de78e['error'][_0x681c('0x11')]);return _0x1750e2(_0x5de78e['error'][_0x681c('0x11')]);}logger['error'](_0x681c('0xa'),_0xdc57a5,_0x5de78e[_0x681c('0x10')][_0x681c('0x11')]);return _0x5b5f22(_0x5de78e[_0x681c('0x10')][_0x681c('0x11')]);}else{logger[_0x681c('0x12')]('ServicenowConfiguration,\x20%s,\x20%s',_0xdc57a5,_0x681c('0xd'));_0x5b5f22(_0x5de78e[_0x681c('0x13')][_0x681c('0x11')]);}})[_0x681c('0x14')](function(_0x2fce11){logger[_0x681c('0x10')]('ServicenowConfiguration,\x20%s,\x20%s',_0xdc57a5,_0x2fce11);_0x1750e2(_0x2fce11);});});}
\ No newline at end of file
+var _0x20c3=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ServicenowConfiguration,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x236433,_0x21c2bb){var _0xf16531=function(_0x186a23){while(--_0x186a23){_0x236433['push'](_0x236433['shift']());}};_0xf16531(++_0x21c2bb);}(_0x20c3,0x1b0));var _0x320c=function(_0x17144e,_0x54b854){_0x17144e=_0x17144e-0x0;var _0x393e3e=_0x20c3[_0x17144e];return _0x393e3e;};'use strict';var _=require(_0x320c('0x0'));var util=require(_0x320c('0x1'));var moment=require(_0x320c('0x2'));var BPromise=require(_0x320c('0x3'));var rs=require(_0x320c('0x4'));var fs=require('fs');var Redis=require(_0x320c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x320c('0x6'));var logger=require(_0x320c('0x7'))(_0x320c('0x8'));var config=require(_0x320c('0x9'));var jayson=require(_0x320c('0xa'));var client=jayson[_0x320c('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1eaec9,_0x1861d7,_0x45ca55){return new BPromise(function(_0x3ae2e5,_0x1ea230){return client['request'](_0x1eaec9,_0x45ca55)[_0x320c('0xc')](function(_0x34e145){logger[_0x320c('0xd')]('ServicenowConfiguration,\x20%s,\x20%s',_0x1861d7,'request\x20sent');logger[_0x320c('0xe')](_0x320c('0xf'),_0x1861d7,_0x320c('0x10'),JSON[_0x320c('0x11')](_0x34e145));if(_0x34e145['error']){if(_0x34e145[_0x320c('0x12')][_0x320c('0x13')]===0x1f4){logger['error'](_0x320c('0x14'),_0x1861d7,_0x34e145[_0x320c('0x12')]['message']);return _0x1ea230(_0x34e145['error'][_0x320c('0x15')]);}logger['error']('ServicenowConfiguration,\x20%s,\x20%s',_0x1861d7,_0x34e145['error']['message']);return _0x3ae2e5(_0x34e145[_0x320c('0x12')]['message']);}else{logger[_0x320c('0xd')](_0x320c('0x14'),_0x1861d7,_0x320c('0x10'));_0x3ae2e5(_0x34e145['result'][_0x320c('0x15')]);}})[_0x320c('0x16')](function(_0x5ef03b){logger['error'](_0x320c('0x14'),_0x1861d7,_0x5ef03b);_0x1ea230(_0x5ef03b);});});}
\ No newline at end of file
index 1a124bf..6e42600 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61ef=['isAuthenticated','index','get','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','Router','fs-extra','../../config/environment'];(function(_0x195586,_0x1a047d){var _0x39c422=function(_0x30223f){while(--_0x30223f){_0x195586['push'](_0x195586['shift']());}};_0x39c422(++_0x1a047d);}(_0x61ef,0x66));var _0xf61e=function(_0x344a3f,_0x579a22){_0x344a3f=_0x344a3f-0x0;var _0x264712=_0x61ef[_0x344a3f];return _0x264712;};'use strict';var multer=require(_0xf61e('0x0'));var util=require(_0xf61e('0x1'));var path=require(_0xf61e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf61e('0x3')]();var fs_extra=require(_0xf61e('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf61e('0x5'));var controller=require('./intServicenowField.controller');router['get']('/',auth[_0xf61e('0x6')](),controller[_0xf61e('0x7')]);router[_0xf61e('0x8')](_0xf61e('0x9'),auth[_0xf61e('0x6')](),controller[_0xf61e('0xa')]);router[_0xf61e('0xb')]('/',auth[_0xf61e('0x6')](),controller[_0xf61e('0xc')]);router[_0xf61e('0xd')](_0xf61e('0x9'),auth[_0xf61e('0x6')](),controller[_0xf61e('0xe')]);router[_0xf61e('0xf')](_0xf61e('0x9'),auth[_0xf61e('0x6')](),controller[_0xf61e('0x10')]);module[_0xf61e('0x11')]=router;
\ No newline at end of file
+var _0x4569=['express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/:id','post','create','destroy','exports','path','connect-timeout'];(function(_0xb08ddf,_0x350e1b){var _0x24dc29=function(_0x334bed){while(--_0x334bed){_0xb08ddf['push'](_0xb08ddf['shift']());}};_0x24dc29(++_0x350e1b);}(_0x4569,0x15c));var _0x9456=function(_0x2ad165,_0x44efd6){_0x2ad165=_0x2ad165-0x0;var _0x3394c3=_0x4569[_0x2ad165];return _0x3394c3;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x9456('0x0'));var timeout=require(_0x9456('0x1'));var express=require(_0x9456('0x2'));var router=express[_0x9456('0x3')]();var fs_extra=require(_0x9456('0x4'));var auth=require(_0x9456('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intServicenowField.controller');router[_0x9456('0x6')]('/',auth[_0x9456('0x7')](),controller[_0x9456('0x8')]);router[_0x9456('0x6')](_0x9456('0x9'),auth[_0x9456('0x7')](),controller['show']);router[_0x9456('0xa')]('/',auth['isAuthenticated'](),controller[_0x9456('0xb')]);router['put']('/:id',auth[_0x9456('0x7')](),controller['update']);router['delete']('/:id',auth[_0x9456('0x7')](),controller[_0x9456('0xc')]);module[_0x9456('0xd')]=router;
\ No newline at end of file
index 6e37d87..c23042c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a92=['customVariable','keyValue','picklist','STRING','sequelize','exports','ENUM','string','variable'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0x2a92,0x79));var _0x22a9=function(_0x18f396,_0x174d17){_0x18f396=_0x18f396-0x0;var _0x3ba532=_0x2a92[_0x18f396];return _0x3ba532;};'use strict';var Sequelize=require(_0x22a9('0x0'));module[_0x22a9('0x1')]={'type':{'type':Sequelize[_0x22a9('0x2')](_0x22a9('0x3'),_0x22a9('0x4'),_0x22a9('0x5'),_0x22a9('0x6'),_0x22a9('0x7')),'defaultValue':_0x22a9('0x3')},'content':{'type':Sequelize[_0x22a9('0x8')]},'key':{'type':Sequelize[_0x22a9('0x8')]},'keyType':{'type':Sequelize['ENUM'](_0x22a9('0x3'),_0x22a9('0x4'),_0x22a9('0x5'))},'keyContent':{'type':Sequelize[_0x22a9('0x8')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x22a9('0x8')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4448=['customVariable','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable'];(function(_0x5912ab,_0x128475){var _0x2c4c73=function(_0x24ef39){while(--_0x24ef39){_0x5912ab['push'](_0x5912ab['shift']());}};_0x2c4c73(++_0x128475);}(_0x4448,0x151));var _0x8444=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x4448[_0x2641f9];return _0x585741;};'use strict';var Sequelize=require(_0x8444('0x0'));module[_0x8444('0x1')]={'type':{'type':Sequelize[_0x8444('0x2')](_0x8444('0x3'),_0x8444('0x4'),_0x8444('0x5'),'keyValue',_0x8444('0x6')),'defaultValue':_0x8444('0x3')},'content':{'type':Sequelize[_0x8444('0x7')]},'key':{'type':Sequelize[_0x8444('0x7')]},'keyType':{'type':Sequelize['ENUM']('string',_0x8444('0x4'),_0x8444('0x5'))},'keyContent':{'type':Sequelize[_0x8444('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x8444('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index cff47b4..b7c7f45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d1b=['ServicenowField','rawAttributes','fieldName','key','map','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','type','options','where','includeAll','include','catch','show','find','create','body','update','params','eml-format','rimraf','request-promise','moment','bluebird','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','then','destroy','sendStatus','name','send','index'];(function(_0x1b77ad,_0x4c1541){var _0x401c6a=function(_0x3ca538){while(--_0x3ca538){_0x1b77ad['push'](_0x1b77ad['shift']());}};_0x401c6a(++_0x4c1541);}(_0x7d1b,0xac));var _0xb7d1=function(_0x405289,_0x1ffd6a){_0x405289=_0x405289-0x0;var _0x29ef29=_0x7d1b[_0x405289];return _0x29ef29;};'use strict';var emlformat=require(_0xb7d1('0x0'));var rimraf=require(_0xb7d1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb7d1('0x2'));var moment=require(_0xb7d1('0x3'));var BPromise=require(_0xb7d1('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xb7d1('0x5'));var sox=require('sox');var csv=require(_0xb7d1('0x6'));var ejs=require(_0xb7d1('0x7'));var fs=require('fs');var fs_extra=require(_0xb7d1('0x8'));var _=require(_0xb7d1('0x9'));var squel=require(_0xb7d1('0xa'));var crypto=require('crypto');var jsforce=require(_0xb7d1('0xb'));var deskjs=require(_0xb7d1('0xc'));var toCsv=require(_0xb7d1('0x6'));var querystring=require(_0xb7d1('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xb7d1('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xb7d1('0xf'));var hardwareService=require(_0xb7d1('0x10'));var logger=require('../../config/logger')(_0xb7d1('0x11'));var utils=require(_0xb7d1('0x12'));var config=require(_0xb7d1('0x13'));var licenseUtil=require(_0xb7d1('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4460f3,_0x2c7ab4){_0x2c7ab4=_0x2c7ab4||0xcc;return function(_0x2ffac4){if(_0x2ffac4){return _0x4460f3['sendStatus'](_0x2c7ab4);}return _0x4460f3['status'](_0x2c7ab4)[_0xb7d1('0x15')]();};}function respondWithResult(_0x3678cc,_0x5ea13c){_0x5ea13c=_0x5ea13c||0xc8;return function(_0x466c62){if(_0x466c62){return _0x3678cc[_0xb7d1('0x16')](_0x5ea13c)[_0xb7d1('0x17')](_0x466c62);}};}function respondWithFilteredResult(_0xa8574d,_0x488423){return function(_0x942dee){if(_0x942dee){var _0x29950c=typeof _0x488423['offset']===_0xb7d1('0x18')&&typeof _0x488423[_0xb7d1('0x19')]==='undefined';var _0x36b6bd=_0x942dee[_0xb7d1('0x1a')];var _0x1366d3=_0x29950c?0x0:_0x488423[_0xb7d1('0x1b')];var _0x3d43c7=_0x29950c?_0x942dee['count']:_0x488423[_0xb7d1('0x1b')]+_0x488423['limit'];var _0x5d879e;if(_0x3d43c7>=_0x36b6bd){_0x3d43c7=_0x36b6bd;_0x5d879e=0xc8;}else{_0x5d879e=0xce;}_0xa8574d['status'](_0x5d879e);return _0xa8574d[_0xb7d1('0x1c')](_0xb7d1('0x1d'),_0x1366d3+'-'+_0x3d43c7+'/'+_0x36b6bd)[_0xb7d1('0x17')](_0x942dee);}return null;};}function patchUpdates(_0x3f9304){return function(_0x336973){try{jsonpatch[_0xb7d1('0x1e')](_0x336973,_0x3f9304,!![]);}catch(_0xd571bd){return BPromise[_0xb7d1('0x1f')](_0xd571bd);}return _0x336973['save']();};}function saveUpdates(_0x4f60c5,_0x317d03){return function(_0x139c8a){if(_0x139c8a){return _0x139c8a['update'](_0x4f60c5)[_0xb7d1('0x20')](function(_0x4f3748){return _0x4f3748;});}return null;};}function removeEntity(_0xbcbea,_0x1dc0f8){return function(_0x545ae7){if(_0x545ae7){return _0x545ae7[_0xb7d1('0x21')]()['then'](function(){_0xbcbea[_0xb7d1('0x16')](0xcc)[_0xb7d1('0x15')]();});}};}function handleEntityNotFound(_0x5c83d0,_0x1af3cc){return function(_0x2ade30){if(!_0x2ade30){_0x5c83d0[_0xb7d1('0x22')](0x194);}return _0x2ade30;};}function handleError(_0x3d9cc0,_0x479819){_0x479819=_0x479819||0x1f4;return function(_0x1604de){logger['error'](_0x1604de['stack']);if(_0x1604de['name']){delete _0x1604de[_0xb7d1('0x23')];}_0x3d9cc0[_0xb7d1('0x16')](_0x479819)[_0xb7d1('0x24')](_0x1604de);};}exports[_0xb7d1('0x25')]=function(_0x52f59b,_0x4ee41a){var _0x470de3={},_0x14e9fe={},_0x349367={'count':0x0,'rows':[]};var _0x44bd5c=_['map'](db[_0xb7d1('0x26')][_0xb7d1('0x27')],function(_0x3a6d79){return{'name':_0x3a6d79[_0xb7d1('0x28')],'type':_0x3a6d79['type'][_0xb7d1('0x29')]};});_0x14e9fe['model']=_[_0xb7d1('0x2a')](_0x44bd5c,_0xb7d1('0x23'));_0x14e9fe[_0xb7d1('0x2b')]=_[_0xb7d1('0x2c')](_0x52f59b[_0xb7d1('0x2b')]);_0x14e9fe[_0xb7d1('0x2d')]=_[_0xb7d1('0x2e')](_0x14e9fe['model'],_0x14e9fe[_0xb7d1('0x2b')]);_0x470de3['attributes']=_['intersection'](_0x14e9fe[_0xb7d1('0x2f')],qs[_0xb7d1('0x30')](_0x52f59b[_0xb7d1('0x2b')][_0xb7d1('0x30')]));_0x470de3[_0xb7d1('0x31')]=_0x470de3[_0xb7d1('0x31')][_0xb7d1('0x32')]?_0x470de3[_0xb7d1('0x31')]:_0x14e9fe[_0xb7d1('0x2f')];if(!_0x52f59b['query'][_0xb7d1('0x33')](_0xb7d1('0x34'))){_0x470de3[_0xb7d1('0x19')]=qs['limit'](_0x52f59b['query'][_0xb7d1('0x19')]);_0x470de3[_0xb7d1('0x1b')]=qs['offset'](_0x52f59b[_0xb7d1('0x2b')][_0xb7d1('0x1b')]);}_0x470de3[_0xb7d1('0x35')]=qs[_0xb7d1('0x36')](_0x52f59b[_0xb7d1('0x2b')][_0xb7d1('0x36')]);_0x470de3['where']=qs['filters'](_[_0xb7d1('0x37')](_0x52f59b[_0xb7d1('0x2b')],_0x14e9fe[_0xb7d1('0x2d')]),_0x44bd5c);if(_0x52f59b[_0xb7d1('0x2b')][_0xb7d1('0x38')]){_0x470de3['where']=_[_0xb7d1('0x39')](_0x470de3['where'],{'$or':_[_0xb7d1('0x2a')](_0x44bd5c,function(_0x540fd7){if(_0x540fd7[_0xb7d1('0x3a')]!=='VIRTUAL'){var _0x10810b={};_0x10810b[_0x540fd7[_0xb7d1('0x23')]]={'$like':'%'+_0x52f59b['query']['filter']+'%'};return _0x10810b;}})});}_0x470de3=_[_0xb7d1('0x39')]({},_0x470de3,_0x52f59b[_0xb7d1('0x3b')]);var _0x62f4d8={'where':_0x470de3[_0xb7d1('0x3c')]};return db[_0xb7d1('0x26')][_0xb7d1('0x1a')](_0x62f4d8)[_0xb7d1('0x20')](function(_0x3a7e63){_0x349367[_0xb7d1('0x1a')]=_0x3a7e63;if(_0x52f59b[_0xb7d1('0x2b')][_0xb7d1('0x3d')]){_0x470de3[_0xb7d1('0x3e')]=[{'all':!![]}];}return db[_0xb7d1('0x26')]['findAll'](_0x470de3);})[_0xb7d1('0x20')](function(_0x3eb59f){_0x349367['rows']=_0x3eb59f;return _0x349367;})[_0xb7d1('0x20')](respondWithFilteredResult(_0x4ee41a,_0x470de3))[_0xb7d1('0x3f')](handleError(_0x4ee41a,null));};exports[_0xb7d1('0x40')]=function(_0x2ae6dc,_0x520ff7){var _0x3dc0c8={'raw':!![],'where':{'id':_0x2ae6dc['params']['id']}},_0x8e6aed={};_0x8e6aed[_0xb7d1('0x2f')]=_[_0xb7d1('0x2c')](db[_0xb7d1('0x26')]['rawAttributes']);_0x8e6aed[_0xb7d1('0x2b')]=_[_0xb7d1('0x2c')](_0x2ae6dc[_0xb7d1('0x2b')]);_0x8e6aed['filters']=_[_0xb7d1('0x2e')](_0x8e6aed['model'],_0x8e6aed[_0xb7d1('0x2b')]);_0x3dc0c8[_0xb7d1('0x31')]=_['intersection'](_0x8e6aed['model'],qs[_0xb7d1('0x30')](_0x2ae6dc[_0xb7d1('0x2b')]['fields']));_0x3dc0c8[_0xb7d1('0x31')]=_0x3dc0c8[_0xb7d1('0x31')][_0xb7d1('0x32')]?_0x3dc0c8[_0xb7d1('0x31')]:_0x8e6aed['model'];if(_0x2ae6dc['query']['includeAll']){_0x3dc0c8[_0xb7d1('0x3e')]=[{'all':!![]}];}_0x3dc0c8=_['merge']({},_0x3dc0c8,_0x2ae6dc['options']);return db['ServicenowField'][_0xb7d1('0x41')](_0x3dc0c8)[_0xb7d1('0x20')](handleEntityNotFound(_0x520ff7,null))['then'](respondWithResult(_0x520ff7,null))[_0xb7d1('0x3f')](handleError(_0x520ff7,null));};exports[_0xb7d1('0x42')]=function(_0x555a68,_0x3aefba){return db[_0xb7d1('0x26')][_0xb7d1('0x42')](_0x555a68[_0xb7d1('0x43')],{})[_0xb7d1('0x20')](respondWithResult(_0x3aefba,0xc9))[_0xb7d1('0x3f')](handleError(_0x3aefba,null));};exports[_0xb7d1('0x44')]=function(_0x1b54b8,_0x31bbbd){if(_0x1b54b8[_0xb7d1('0x43')]['id']){delete _0x1b54b8['body']['id'];}return db[_0xb7d1('0x26')][_0xb7d1('0x41')]({'where':{'id':_0x1b54b8[_0xb7d1('0x45')]['id']}})[_0xb7d1('0x20')](handleEntityNotFound(_0x31bbbd,null))[_0xb7d1('0x20')](saveUpdates(_0x1b54b8[_0xb7d1('0x43')],null))[_0xb7d1('0x20')](respondWithResult(_0x31bbbd,null))[_0xb7d1('0x3f')](handleError(_0x31bbbd,null));};exports[_0xb7d1('0x21')]=function(_0x2a70ab,_0x26fccc){return db[_0xb7d1('0x26')]['find']({'where':{'id':_0x2a70ab[_0xb7d1('0x45')]['id']}})['then'](handleEntityNotFound(_0x26fccc,null))[_0xb7d1('0x20')](removeEntity(_0x26fccc,null))[_0xb7d1('0x3f')](handleError(_0x26fccc,null));};
\ No newline at end of file
+var _0x6c3d=['find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','fs-extra','squel','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../mysqldb','status','end','json','offset','limit','undefined','count','Content-Range','reject','update','then','destroy','stack','name','send','index','map','ServicenowField','fieldName','query','keys','intersection','model','attributes','fields','nolimit','order','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params'];(function(_0x125984,_0x3b536e){var _0x1ca1e1=function(_0x364228){while(--_0x364228){_0x125984['push'](_0x125984['shift']());}};_0x1ca1e1(++_0x3b536e);}(_0x6c3d,0x85));var _0xd6c3=function(_0x410b10,_0x490889){_0x410b10=_0x410b10-0x0;var _0x14ac37=_0x6c3d[_0x410b10];return _0x14ac37;};'use strict';var emlformat=require(_0xd6c3('0x0'));var rimraf=require(_0xd6c3('0x1'));var zipdir=require(_0xd6c3('0x2'));var jsonpatch=require(_0xd6c3('0x3'));var rp=require(_0xd6c3('0x4'));var moment=require(_0xd6c3('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd6c3('0x6'));var path=require(_0xd6c3('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd6c3('0x8'));var _=require('lodash');var squel=require(_0xd6c3('0x9'));var crypto=require('crypto');var jsforce=require(_0xd6c3('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xd6c3('0xb'));var querystring=require(_0xd6c3('0xc'));var Papa=require('papaparse');var Redis=require(_0xd6c3('0xd'));var authService=require(_0xd6c3('0xe'));var qs=require(_0xd6c3('0xf'));var as=require(_0xd6c3('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd6c3('0x11'));var utils=require('../../config/utils');var config=require(_0xd6c3('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xd6c3('0x13'))['db'];function respondWithStatusCode(_0x3081a6,_0x2c4112){_0x2c4112=_0x2c4112||0xcc;return function(_0x350796){if(_0x350796){return _0x3081a6['sendStatus'](_0x2c4112);}return _0x3081a6[_0xd6c3('0x14')](_0x2c4112)[_0xd6c3('0x15')]();};}function respondWithResult(_0x5e6150,_0xd6fef2){_0xd6fef2=_0xd6fef2||0xc8;return function(_0xa7076b){if(_0xa7076b){return _0x5e6150['status'](_0xd6fef2)[_0xd6c3('0x16')](_0xa7076b);}};}function respondWithFilteredResult(_0x4ef57b,_0x1f2767){return function(_0x3b3f94){if(_0x3b3f94){var _0x44be30=typeof _0x1f2767[_0xd6c3('0x17')]==='undefined'&&typeof _0x1f2767[_0xd6c3('0x18')]===_0xd6c3('0x19');var _0x53f3e3=_0x3b3f94[_0xd6c3('0x1a')];var _0x21ea1e=_0x44be30?0x0:_0x1f2767[_0xd6c3('0x17')];var _0x52bf8d=_0x44be30?_0x3b3f94['count']:_0x1f2767[_0xd6c3('0x17')]+_0x1f2767[_0xd6c3('0x18')];var _0x6aec89;if(_0x52bf8d>=_0x53f3e3){_0x52bf8d=_0x53f3e3;_0x6aec89=0xc8;}else{_0x6aec89=0xce;}_0x4ef57b['status'](_0x6aec89);return _0x4ef57b['set'](_0xd6c3('0x1b'),_0x21ea1e+'-'+_0x52bf8d+'/'+_0x53f3e3)[_0xd6c3('0x16')](_0x3b3f94);}return null;};}function patchUpdates(_0x130d50){return function(_0x5b474a){try{jsonpatch['apply'](_0x5b474a,_0x130d50,!![]);}catch(_0x163e71){return BPromise[_0xd6c3('0x1c')](_0x163e71);}return _0x5b474a['save']();};}function saveUpdates(_0x4ad040,_0x47bddb){return function(_0x1a1dfe){if(_0x1a1dfe){return _0x1a1dfe[_0xd6c3('0x1d')](_0x4ad040)[_0xd6c3('0x1e')](function(_0x313564){return _0x313564;});}return null;};}function removeEntity(_0x4e1dc6,_0x4eb6e2){return function(_0x55f64d){if(_0x55f64d){return _0x55f64d[_0xd6c3('0x1f')]()[_0xd6c3('0x1e')](function(){_0x4e1dc6[_0xd6c3('0x14')](0xcc)[_0xd6c3('0x15')]();});}};}function handleEntityNotFound(_0x3606a1,_0x30ce12){return function(_0x13d639){if(!_0x13d639){_0x3606a1['sendStatus'](0x194);}return _0x13d639;};}function handleError(_0x1da4de,_0x16faaa){_0x16faaa=_0x16faaa||0x1f4;return function(_0x3901e7){logger['error'](_0x3901e7[_0xd6c3('0x20')]);if(_0x3901e7[_0xd6c3('0x21')]){delete _0x3901e7[_0xd6c3('0x21')];}_0x1da4de[_0xd6c3('0x14')](_0x16faaa)[_0xd6c3('0x22')](_0x3901e7);};}exports[_0xd6c3('0x23')]=function(_0x20b6ca,_0x47333c){var _0x37abf3={},_0x359945={},_0x199877={'count':0x0,'rows':[]};var _0x74080a=_[_0xd6c3('0x24')](db[_0xd6c3('0x25')]['rawAttributes'],function(_0x13cf95){return{'name':_0x13cf95[_0xd6c3('0x26')],'type':_0x13cf95['type']['key']};});_0x359945['model']=_['map'](_0x74080a,_0xd6c3('0x21'));_0x359945[_0xd6c3('0x27')]=_[_0xd6c3('0x28')](_0x20b6ca[_0xd6c3('0x27')]);_0x359945['filters']=_[_0xd6c3('0x29')](_0x359945[_0xd6c3('0x2a')],_0x359945[_0xd6c3('0x27')]);_0x37abf3[_0xd6c3('0x2b')]=_['intersection'](_0x359945[_0xd6c3('0x2a')],qs[_0xd6c3('0x2c')](_0x20b6ca[_0xd6c3('0x27')]['fields']));_0x37abf3[_0xd6c3('0x2b')]=_0x37abf3['attributes']['length']?_0x37abf3[_0xd6c3('0x2b')]:_0x359945[_0xd6c3('0x2a')];if(!_0x20b6ca[_0xd6c3('0x27')]['hasOwnProperty'](_0xd6c3('0x2d'))){_0x37abf3[_0xd6c3('0x18')]=qs[_0xd6c3('0x18')](_0x20b6ca['query']['limit']);_0x37abf3[_0xd6c3('0x17')]=qs[_0xd6c3('0x17')](_0x20b6ca[_0xd6c3('0x27')][_0xd6c3('0x17')]);}_0x37abf3[_0xd6c3('0x2e')]=qs['sort'](_0x20b6ca[_0xd6c3('0x27')]['sort']);_0x37abf3[_0xd6c3('0x2f')]=qs[_0xd6c3('0x30')](_[_0xd6c3('0x31')](_0x20b6ca['query'],_0x359945['filters']),_0x74080a);if(_0x20b6ca[_0xd6c3('0x27')][_0xd6c3('0x32')]){_0x37abf3[_0xd6c3('0x2f')]=_[_0xd6c3('0x33')](_0x37abf3[_0xd6c3('0x2f')],{'$or':_[_0xd6c3('0x24')](_0x74080a,function(_0x4552b2){if(_0x4552b2[_0xd6c3('0x34')]!==_0xd6c3('0x35')){var _0x6b76c9={};_0x6b76c9[_0x4552b2['name']]={'$like':'%'+_0x20b6ca['query'][_0xd6c3('0x32')]+'%'};return _0x6b76c9;}})});}_0x37abf3=_[_0xd6c3('0x33')]({},_0x37abf3,_0x20b6ca[_0xd6c3('0x36')]);var _0x401778={'where':_0x37abf3[_0xd6c3('0x2f')]};return db[_0xd6c3('0x25')][_0xd6c3('0x1a')](_0x401778)['then'](function(_0x364616){_0x199877[_0xd6c3('0x1a')]=_0x364616;if(_0x20b6ca[_0xd6c3('0x27')][_0xd6c3('0x37')]){_0x37abf3[_0xd6c3('0x38')]=[{'all':!![]}];}return db['ServicenowField'][_0xd6c3('0x39')](_0x37abf3);})[_0xd6c3('0x1e')](function(_0x5854b7){_0x199877[_0xd6c3('0x3a')]=_0x5854b7;return _0x199877;})['then'](respondWithFilteredResult(_0x47333c,_0x37abf3))[_0xd6c3('0x3b')](handleError(_0x47333c,null));};exports[_0xd6c3('0x3c')]=function(_0x595a7f,_0x55f8a2){var _0x5a70f2={'raw':!![],'where':{'id':_0x595a7f[_0xd6c3('0x3d')]['id']}},_0x25c5d0={};_0x25c5d0['model']=_[_0xd6c3('0x28')](db[_0xd6c3('0x25')]['rawAttributes']);_0x25c5d0[_0xd6c3('0x27')]=_[_0xd6c3('0x28')](_0x595a7f['query']);_0x25c5d0[_0xd6c3('0x30')]=_[_0xd6c3('0x29')](_0x25c5d0[_0xd6c3('0x2a')],_0x25c5d0[_0xd6c3('0x27')]);_0x5a70f2[_0xd6c3('0x2b')]=_[_0xd6c3('0x29')](_0x25c5d0[_0xd6c3('0x2a')],qs[_0xd6c3('0x2c')](_0x595a7f['query'][_0xd6c3('0x2c')]));_0x5a70f2[_0xd6c3('0x2b')]=_0x5a70f2['attributes']['length']?_0x5a70f2[_0xd6c3('0x2b')]:_0x25c5d0['model'];if(_0x595a7f['query']['includeAll']){_0x5a70f2[_0xd6c3('0x38')]=[{'all':!![]}];}_0x5a70f2=_[_0xd6c3('0x33')]({},_0x5a70f2,_0x595a7f[_0xd6c3('0x36')]);return db[_0xd6c3('0x25')][_0xd6c3('0x3e')](_0x5a70f2)[_0xd6c3('0x1e')](handleEntityNotFound(_0x55f8a2,null))[_0xd6c3('0x1e')](respondWithResult(_0x55f8a2,null))[_0xd6c3('0x3b')](handleError(_0x55f8a2,null));};exports[_0xd6c3('0x3f')]=function(_0x284037,_0xb3d109){return db[_0xd6c3('0x25')][_0xd6c3('0x3f')](_0x284037[_0xd6c3('0x40')],{})[_0xd6c3('0x1e')](respondWithResult(_0xb3d109,0xc9))[_0xd6c3('0x3b')](handleError(_0xb3d109,null));};exports[_0xd6c3('0x1d')]=function(_0x1bce43,_0x3765d2){if(_0x1bce43['body']['id']){delete _0x1bce43[_0xd6c3('0x40')]['id'];}return db[_0xd6c3('0x25')][_0xd6c3('0x3e')]({'where':{'id':_0x1bce43[_0xd6c3('0x3d')]['id']}})[_0xd6c3('0x1e')](handleEntityNotFound(_0x3765d2,null))[_0xd6c3('0x1e')](saveUpdates(_0x1bce43[_0xd6c3('0x40')],null))[_0xd6c3('0x1e')](respondWithResult(_0x3765d2,null))['catch'](handleError(_0x3765d2,null));};exports[_0xd6c3('0x1f')]=function(_0xd5744e,_0x59cd23){return db[_0xd6c3('0x25')][_0xd6c3('0x3e')]({'where':{'id':_0xd5744e[_0xd6c3('0x3d')]['id']}})[_0xd6c3('0x1e')](handleEntityNotFound(_0x59cd23,null))[_0xd6c3('0x1e')](removeEntity(_0x59cd23,null))[_0xd6c3('0x3b')](handleError(_0x59cd23,null));};
\ No newline at end of file
index e1b7bb4..5dfaf6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x102f=['lodash','../../config/logger','api','moment','bluebird','request-promise','./intServicenowField.attributes','exports','define','ServicenowField','int_servicenow_fields','FieldId'];(function(_0x431017,_0x4f1d5b){var _0x54c185=function(_0x23364e){while(--_0x23364e){_0x431017['push'](_0x431017['shift']());}};_0x54c185(++_0x4f1d5b);}(_0x102f,0x90));var _0xf102=function(_0xdeefbd,_0x9e1b3d){_0xdeefbd=_0xdeefbd-0x0;var _0x4ff63f=_0x102f[_0xdeefbd];return _0x4ff63f;};'use strict';var _=require(_0xf102('0x0'));var util=require('util');var logger=require(_0xf102('0x1'))(_0xf102('0x2'));var moment=require(_0xf102('0x3'));var BPromise=require(_0xf102('0x4'));var rp=require(_0xf102('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf102('0x6'));module[_0xf102('0x7')]=function(_0x1d70e5,_0x1756ac){return _0x1d70e5[_0xf102('0x8')](_0xf102('0x9'),attributes,{'tableName':_0xf102('0xa'),'paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':['idField',_0xf102('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd819=['../../config/environment','./intServicenowField.attributes','exports','int_servicenow_fields','servicenow_unique_index','idField','lodash','util','../../config/logger','moment','bluebird','path','rimraf'];(function(_0x496ac7,_0x5bd8f5){var _0x13f8ea=function(_0x40dfd9){while(--_0x40dfd9){_0x496ac7['push'](_0x496ac7['shift']());}};_0x13f8ea(++_0x5bd8f5);}(_0xd819,0x131));var _0x9d81=function(_0x398437,_0x382e5f){_0x398437=_0x398437-0x0;var _0x539597=_0xd819[_0x398437];return _0x539597;};'use strict';var _=require(_0x9d81('0x0'));var util=require(_0x9d81('0x1'));var logger=require(_0x9d81('0x2'))('api');var moment=require(_0x9d81('0x3'));var BPromise=require(_0x9d81('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9d81('0x5'));var rimraf=require(_0x9d81('0x6'));var config=require(_0x9d81('0x7'));var attributes=require(_0x9d81('0x8'));module[_0x9d81('0x9')]=function(_0x3f0db0,_0x199563){return _0x3f0db0['define']('ServicenowField',attributes,{'tableName':_0x9d81('0xa'),'paranoid':![],'indexes':[{'name':_0x9d81('0xb'),'fields':[_0x9d81('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 95962f6..1103a38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['ServicenowField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x1f146c,_0xfb86d6){var _0x2354fb=function(_0x2078d0){while(--_0x2078d0){_0x1f146c['push'](_0x1f146c['shift']());}};_0x2354fb(++_0xfb86d6);}(_0xf4eb,0xec));var _0xbf4e=function(_0x16b8d3,_0x122dd3){_0x16b8d3=_0x16b8d3-0x0;var _0xcfe59d=_0xf4eb[_0x16b8d3];return _0xcfe59d;};'use strict';var _=require(_0xbf4e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbf4e('0x1'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbf4e('0x2'))(_0xbf4e('0x3'));var config=require(_0xbf4e('0x4'));var jayson=require(_0xbf4e('0x5'));var client=jayson[_0xbf4e('0x6')][_0xbf4e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x15b99f,_0x540736,_0x449d55){return new BPromise(function(_0x5013c2,_0x5e23d4){return client[_0xbf4e('0x8')](_0x15b99f,_0x449d55)[_0xbf4e('0x9')](function(_0xcc4097){logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));logger[_0xbf4e('0xd')]('ServicenowField,\x20%s,\x20%s,\x20%s',_0x540736,'request\x20sent',JSON[_0xbf4e('0xe')](_0xcc4097));if(_0xcc4097['error']){if(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x10')]===0x1f4){logger['error'](_0xbf4e('0xb'),_0x540736,_0xcc4097['error']['message']);return _0x5e23d4(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);}logger[_0xbf4e('0xf')](_0xbf4e('0xb'),_0x540736,_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);return _0x5013c2(_0xcc4097['error']['message']);}else{logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));_0x5013c2(_0xcc4097['result'][_0xbf4e('0x11')]);}})[_0xbf4e('0x12')](function(_0x912fc0){logger[_0xbf4e('0xf')]('ServicenowField,\x20%s,\x20%s',_0x540736,_0x912fc0);_0x5e23d4(_0x912fc0);});});}
\ 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','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s'];(function(_0x96ae1d,_0x17ca87){var _0x43622e=function(_0x2aa3d2){while(--_0x2aa3d2){_0x96ae1d['push'](_0x96ae1d['shift']());}};_0x43622e(++_0x17ca87);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x506d2f,_0x5ab76e){_0x506d2f=_0x506d2f-0x0;var _0x101255=_0xcb91[_0x506d2f];return _0x101255;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var BPromise=require(_0x1cb9('0x1'));var rs=require(_0x1cb9('0x2'));var fs=require('fs');var Redis=require(_0x1cb9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1cb9('0x4'));var logger=require(_0x1cb9('0x5'))('rpc');var config=require(_0x1cb9('0x6'));var jayson=require(_0x1cb9('0x7'));var client=jayson['client'][_0x1cb9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f7deb,_0x4ffe20,_0x38737d){return new BPromise(function(_0x12567c,_0x59d1be){return client[_0x1cb9('0x9')](_0x3f7deb,_0x38737d)['then'](function(_0x567139){logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,_0x1cb9('0xc'));logger[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x4ffe20,'request\x20sent',JSON[_0x1cb9('0xf')](_0x567139));if(_0x567139[_0x1cb9('0x10')]){if(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x11')]===0x1f4){logger[_0x1cb9('0x10')]('ServicenowField,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ No newline at end of file
index 488e2fe..2a31bfe 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(_0x509fb2,_0x541f31){var _0x1b1072=function(_0x2b4283){while(--_0x2b4283){_0x509fb2['push'](_0x509fb2['shift']());}};_0x1b1072(++_0x541f31);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xa9e0[_0x4e1d03];return _0x362d4b;};'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(_0x3b0148,_0x5a28e8){var _0x59e6fd=function(_0x659240){while(--_0x659240){_0x3b0148['push'](_0x3b0148['shift']());}};_0x59e6fd(++_0x5a28e8);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index 8456bf4..2f4f1e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x4b9ae4,_0x1929ca){var _0x1ac160=function(_0x2c3c53){while(--_0x2c3c53){_0x4b9ae4['push'](_0x4b9ae4['shift']());}};_0x1ac160(++_0x1929ca);}(_0xa9e0,0x123));var _0x0a9e=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xa9e0[_0x29b609];return _0x54c952;};'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(_0x3edaed,_0x2a73b0){var _0x3526d7=function(_0x3453f4){while(--_0x3453f4){_0x3edaed['push'](_0x3edaed['shift']());}};_0x3526d7(++_0x2a73b0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'name':{'type':Sequelize[_0x0a9e('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0x0a9e('0x3')},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x0a9e('0x2')],'unique':_0x0a9e('0x4')},'serverUrl':{'type':Sequelize[_0x0a9e('0x2')],'allowNull':![]}};
\ No newline at end of file
index ef3b708..29fc1f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec60=['../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','send','map','SugarcrmAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','create','body','getConfigurations','findOne','SugarcrmConfiguration','nolimit','addConfiguration','AccountId','getSubjects','channel','Descriptions','Subjects','SugarcrmField','getFields','assigned_user_id','created_by','description','date_start','duration_hours','duration_minutes','parent_id','parent_type','direction','password','remoteUri','slice','substring','lastIndexOf','POST','format','/service/v4_1/rest.php','login','JSON','stringify','username','PLAIN','xCALLY\x20Motion\x20Integration','%s%s','get_module_fields','values','module_fields','remove','includes','label','endsWith','value','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x215b06,_0x2a0935){var _0x5a8e83=function(_0x4dcdd8){while(--_0x4dcdd8){_0x215b06['push'](_0x215b06['shift']());}};_0x5a8e83(++_0x2a0935);}(_0xec60,0x1de));var _0x0ec6=function(_0x5c1a71,_0x2573ee){_0x5c1a71=_0x5c1a71-0x0;var _0x5926aa=_0xec60[_0x5c1a71];return _0x5926aa;};'use strict';var emlformat=require(_0x0ec6('0x0'));var rimraf=require(_0x0ec6('0x1'));var zipdir=require(_0x0ec6('0x2'));var jsonpatch=require(_0x0ec6('0x3'));var rp=require(_0x0ec6('0x4'));var moment=require(_0x0ec6('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x0ec6('0x6'));var util=require(_0x0ec6('0x7'));var path=require('path');var sox=require(_0x0ec6('0x8'));var csv=require('to-csv');var ejs=require(_0x0ec6('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0ec6('0xa'));var squel=require(_0x0ec6('0xb'));var crypto=require(_0x0ec6('0xc'));var jsforce=require(_0x0ec6('0xd'));var deskjs=require(_0x0ec6('0xe'));var toCsv=require('to-csv');var querystring=require(_0x0ec6('0xf'));var Papa=require(_0x0ec6('0x10'));var Redis=require(_0x0ec6('0x11'));var authService=require(_0x0ec6('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0ec6('0x13'));var logger=require(_0x0ec6('0x14'))('api');var utils=require(_0x0ec6('0x15'));var config=require(_0x0ec6('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x0ec6('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x4d3630,_0x374366){_0x374366=_0x374366||0xcc;return function(_0x84ba23){if(_0x84ba23){return _0x4d3630['sendStatus'](_0x374366);}return _0x4d3630[_0x0ec6('0x18')](_0x374366)[_0x0ec6('0x19')]();};}function respondWithResult(_0x25a54a,_0x1e9614){_0x1e9614=_0x1e9614||0xc8;return function(_0x300654){if(_0x300654){return _0x25a54a[_0x0ec6('0x18')](_0x1e9614)[_0x0ec6('0x1a')](_0x300654);}};}function respondWithFilteredResult(_0x5345c5,_0x21459a){return function(_0x327b15){if(_0x327b15){var _0x35d449=typeof _0x21459a[_0x0ec6('0x1b')]==='undefined'&&typeof _0x21459a[_0x0ec6('0x1c')]===_0x0ec6('0x1d');var _0x3d196d=_0x327b15[_0x0ec6('0x1e')];var _0xbd41bf=_0x35d449?0x0:_0x21459a[_0x0ec6('0x1b')];var _0x1f4f03=_0x35d449?_0x327b15[_0x0ec6('0x1e')]:_0x21459a['offset']+_0x21459a['limit'];var _0x49e2fd;if(_0x1f4f03>=_0x3d196d){_0x1f4f03=_0x3d196d;_0x49e2fd=0xc8;}else{_0x49e2fd=0xce;}_0x5345c5[_0x0ec6('0x18')](_0x49e2fd);return _0x5345c5[_0x0ec6('0x1f')](_0x0ec6('0x20'),_0xbd41bf+'-'+_0x1f4f03+'/'+_0x3d196d)[_0x0ec6('0x1a')](_0x327b15);}return null;};}function patchUpdates(_0x245617){return function(_0x280c87){try{jsonpatch[_0x0ec6('0x21')](_0x280c87,_0x245617,!![]);}catch(_0x1da62e){return BPromise[_0x0ec6('0x22')](_0x1da62e);}return _0x280c87[_0x0ec6('0x23')]();};}function saveUpdates(_0x3d8385,_0x1498db){return function(_0x39b4a9){if(_0x39b4a9){return _0x39b4a9[_0x0ec6('0x24')](_0x3d8385)['then'](function(_0x58c20a){return _0x58c20a;});}return null;};}function removeEntity(_0x37c49d,_0x18f320){return function(_0x21a475){if(_0x21a475){return _0x21a475[_0x0ec6('0x25')]()[_0x0ec6('0x26')](function(){_0x37c49d[_0x0ec6('0x18')](0xcc)[_0x0ec6('0x19')]();});}};}function handleEntityNotFound(_0x5e0e50,_0x4ed8e4){return function(_0x154b2c){if(!_0x154b2c){_0x5e0e50[_0x0ec6('0x27')](0x194);}return _0x154b2c;};}function handleError(_0x47db32,_0x38103f){_0x38103f=_0x38103f||0x1f4;return function(_0x13c918){logger[_0x0ec6('0x28')](_0x13c918[_0x0ec6('0x29')]);if(_0x13c918[_0x0ec6('0x2a')]){delete _0x13c918[_0x0ec6('0x2a')];}_0x47db32[_0x0ec6('0x18')](_0x38103f)[_0x0ec6('0x2b')](_0x13c918);};}exports['index']=function(_0x560be4,_0x4d6268){var _0x2f93e5={},_0x165bf6={},_0x143aea={'count':0x0,'rows':[]};var _0x590b3d=_[_0x0ec6('0x2c')](db[_0x0ec6('0x2d')][_0x0ec6('0x2e')],function(_0x2c21ed){return{'name':_0x2c21ed[_0x0ec6('0x2f')],'type':_0x2c21ed[_0x0ec6('0x30')][_0x0ec6('0x31')]};});_0x165bf6[_0x0ec6('0x32')]=_[_0x0ec6('0x2c')](_0x590b3d,_0x0ec6('0x2a'));_0x165bf6[_0x0ec6('0x33')]=_[_0x0ec6('0x34')](_0x560be4[_0x0ec6('0x33')]);_0x165bf6['filters']=_['intersection'](_0x165bf6['model'],_0x165bf6[_0x0ec6('0x33')]);_0x2f93e5['attributes']=_[_0x0ec6('0x35')](_0x165bf6['model'],qs[_0x0ec6('0x36')](_0x560be4['query'][_0x0ec6('0x36')]));_0x2f93e5[_0x0ec6('0x37')]=_0x2f93e5[_0x0ec6('0x37')][_0x0ec6('0x38')]?_0x2f93e5[_0x0ec6('0x37')]:_0x165bf6['model'];if(!_0x560be4['query'][_0x0ec6('0x39')]('nolimit')){_0x2f93e5[_0x0ec6('0x1c')]=qs[_0x0ec6('0x1c')](_0x560be4['query']['limit']);_0x2f93e5['offset']=qs[_0x0ec6('0x1b')](_0x560be4[_0x0ec6('0x33')][_0x0ec6('0x1b')]);}_0x2f93e5[_0x0ec6('0x3a')]=qs['sort'](_0x560be4[_0x0ec6('0x33')][_0x0ec6('0x3b')]);_0x2f93e5[_0x0ec6('0x3c')]=qs[_0x0ec6('0x3d')](_[_0x0ec6('0x3e')](_0x560be4[_0x0ec6('0x33')],_0x165bf6[_0x0ec6('0x3d')]),_0x590b3d);if(_0x560be4[_0x0ec6('0x33')][_0x0ec6('0x3f')]){_0x2f93e5[_0x0ec6('0x3c')]=_[_0x0ec6('0x40')](_0x2f93e5['where'],{'$or':_[_0x0ec6('0x2c')](_0x590b3d,function(_0x38cb81){if(_0x38cb81[_0x0ec6('0x30')]!==_0x0ec6('0x41')){var _0x4fedb0={};_0x4fedb0[_0x38cb81[_0x0ec6('0x2a')]]={'$like':'%'+_0x560be4[_0x0ec6('0x33')][_0x0ec6('0x3f')]+'%'};return _0x4fedb0;}})});}_0x2f93e5=_[_0x0ec6('0x40')]({},_0x2f93e5,_0x560be4[_0x0ec6('0x42')]);var _0x49e28e={'where':_0x2f93e5[_0x0ec6('0x3c')]};return db['SugarcrmAccount'][_0x0ec6('0x1e')](_0x49e28e)['then'](function(_0x5a6f93){_0x143aea['count']=_0x5a6f93;if(_0x560be4[_0x0ec6('0x33')][_0x0ec6('0x43')]){_0x2f93e5[_0x0ec6('0x44')]=[{'all':!![]}];}return db['SugarcrmAccount'][_0x0ec6('0x45')](_0x2f93e5);})[_0x0ec6('0x26')](function(_0x5063dc){_0x143aea[_0x0ec6('0x46')]=_0x5063dc;return _0x143aea;})[_0x0ec6('0x26')](respondWithFilteredResult(_0x4d6268,_0x2f93e5))[_0x0ec6('0x47')](handleError(_0x4d6268,null));};exports['show']=function(_0x30dc80,_0x54cafd){var _0x3ca2c9={'raw':![],'where':{'id':_0x30dc80[_0x0ec6('0x48')]['id']}},_0x22dcfd={};_0x22dcfd[_0x0ec6('0x32')]=_[_0x0ec6('0x34')](db[_0x0ec6('0x2d')]['rawAttributes']);_0x22dcfd[_0x0ec6('0x33')]=_[_0x0ec6('0x34')](_0x30dc80['query']);_0x22dcfd[_0x0ec6('0x3d')]=_[_0x0ec6('0x35')](_0x22dcfd[_0x0ec6('0x32')],_0x22dcfd[_0x0ec6('0x33')]);_0x3ca2c9[_0x0ec6('0x37')]=_[_0x0ec6('0x35')](_0x22dcfd[_0x0ec6('0x32')],qs[_0x0ec6('0x36')](_0x30dc80[_0x0ec6('0x33')][_0x0ec6('0x36')]));_0x3ca2c9[_0x0ec6('0x37')]=_0x3ca2c9[_0x0ec6('0x37')][_0x0ec6('0x38')]?_0x3ca2c9[_0x0ec6('0x37')]:_0x22dcfd[_0x0ec6('0x32')];if(_0x30dc80[_0x0ec6('0x33')][_0x0ec6('0x43')]){_0x3ca2c9['include']=[{'all':!![]}];}_0x3ca2c9=_['merge']({},_0x3ca2c9,_0x30dc80[_0x0ec6('0x42')]);return db[_0x0ec6('0x2d')][_0x0ec6('0x49')](_0x3ca2c9)['then'](handleEntityNotFound(_0x54cafd,null))[_0x0ec6('0x26')](respondWithResult(_0x54cafd,null))[_0x0ec6('0x47')](handleError(_0x54cafd,null));};exports[_0x0ec6('0x4a')]=function(_0x5f24a9,_0x4ff4fa){return db[_0x0ec6('0x2d')][_0x0ec6('0x4a')](_0x5f24a9[_0x0ec6('0x4b')],{})[_0x0ec6('0x26')](respondWithResult(_0x4ff4fa,0xc9))[_0x0ec6('0x47')](handleError(_0x4ff4fa,null));};exports[_0x0ec6('0x24')]=function(_0x2d55fa,_0x513f18){if(_0x2d55fa[_0x0ec6('0x4b')]['id']){delete _0x2d55fa[_0x0ec6('0x4b')]['id'];}return db[_0x0ec6('0x2d')][_0x0ec6('0x49')]({'where':{'id':_0x2d55fa[_0x0ec6('0x48')]['id']}})[_0x0ec6('0x26')](handleEntityNotFound(_0x513f18,null))['then'](saveUpdates(_0x2d55fa[_0x0ec6('0x4b')],null))[_0x0ec6('0x26')](respondWithResult(_0x513f18,null))[_0x0ec6('0x47')](handleError(_0x513f18,null));};exports['destroy']=function(_0x3f00f3,_0x46736d){return db[_0x0ec6('0x2d')]['find']({'where':{'id':_0x3f00f3[_0x0ec6('0x48')]['id']}})[_0x0ec6('0x26')](handleEntityNotFound(_0x46736d,null))[_0x0ec6('0x26')](removeEntity(_0x46736d,null))[_0x0ec6('0x47')](handleError(_0x46736d,null));};exports[_0x0ec6('0x4c')]=function(_0x4109da,_0x4aa465,_0x5ce82e){var _0x2d854b={};var _0x19a1ef={};var _0x1f9297;var _0x2b0bb1;return db['SugarcrmAccount'][_0x0ec6('0x4d')]({'where':{'id':_0x4109da[_0x0ec6('0x48')]['id']}})[_0x0ec6('0x26')](handleEntityNotFound(_0x4aa465,null))['then'](function(_0x20fab9){if(_0x20fab9){_0x1f9297=_0x20fab9;_0x19a1ef[_0x0ec6('0x32')]=_['keys'](db[_0x0ec6('0x4e')][_0x0ec6('0x2e')]);_0x19a1ef[_0x0ec6('0x33')]=_['keys'](_0x4109da[_0x0ec6('0x33')]);_0x19a1ef[_0x0ec6('0x3d')]=_[_0x0ec6('0x35')](_0x19a1ef[_0x0ec6('0x32')],_0x19a1ef[_0x0ec6('0x33')]);_0x2d854b[_0x0ec6('0x37')]=_[_0x0ec6('0x35')](_0x19a1ef[_0x0ec6('0x32')],qs[_0x0ec6('0x36')](_0x4109da['query']['fields']));_0x2d854b['attributes']=_0x2d854b[_0x0ec6('0x37')][_0x0ec6('0x38')]?_0x2d854b[_0x0ec6('0x37')]:_0x19a1ef['model'];_0x2d854b['order']=qs['sort'](_0x4109da[_0x0ec6('0x33')][_0x0ec6('0x3b')]);_0x2d854b['where']=qs[_0x0ec6('0x3d')](_[_0x0ec6('0x3e')](_0x4109da[_0x0ec6('0x33')],_0x19a1ef[_0x0ec6('0x3d')]));if(_0x4109da['query'][_0x0ec6('0x3f')]){_0x2d854b[_0x0ec6('0x3c')]=_['merge'](_0x2d854b['where'],{'$or':_['map'](_0x2d854b[_0x0ec6('0x37')],function(_0x3fb4e8){var _0x49142a={};_0x49142a[_0x3fb4e8]={'$like':'%'+_0x4109da['query'][_0x0ec6('0x3f')]+'%'};return _0x49142a;})});}_0x2d854b=_[_0x0ec6('0x40')]({},_0x2d854b,_0x4109da[_0x0ec6('0x42')]);return _0x1f9297[_0x0ec6('0x4c')](_0x2d854b);}})['then'](function(_0x179c35){if(_0x179c35){_0x2b0bb1=_0x179c35['length'];if(!_0x4109da['query']['hasOwnProperty'](_0x0ec6('0x4f'))){_0x2d854b[_0x0ec6('0x1c')]=qs['limit'](_0x4109da[_0x0ec6('0x33')][_0x0ec6('0x1c')]);_0x2d854b[_0x0ec6('0x1b')]=qs[_0x0ec6('0x1b')](_0x4109da[_0x0ec6('0x33')]['offset']);}return _0x1f9297['getConfigurations'](_0x2d854b);}})[_0x0ec6('0x26')](function(_0x2894c3){if(_0x2894c3){return _0x2894c3?{'count':_0x2b0bb1,'rows':_0x2894c3}:null;}})['then'](respondWithResult(_0x4aa465,null))[_0x0ec6('0x47')](handleError(_0x4aa465,null));};exports[_0x0ec6('0x50')]=function(_0x2314e4,_0x4a316a,_0x72d4bc){if(_0x2314e4[_0x0ec6('0x4b')]['id']){delete _0x2314e4['body']['id'];}return db[_0x0ec6('0x2d')][_0x0ec6('0x4d')]({'where':{'id':_0x2314e4['params']['id']}})[_0x0ec6('0x26')](handleEntityNotFound(_0x4a316a,null))[_0x0ec6('0x26')](function(_0x5caa8e){if(_0x5caa8e){_0x2314e4[_0x0ec6('0x4b')][_0x0ec6('0x51')]=_0x5caa8e['id'];_0x2314e4[_0x0ec6('0x4b')]['Subjects']=integrations[_0x0ec6('0x52')](_0x2314e4[_0x0ec6('0x4b')][_0x0ec6('0x53')],_0x2314e4[_0x0ec6('0x4b')]['type']);_0x2314e4[_0x0ec6('0x4b')][_0x0ec6('0x54')]=integrations['getDescriptions'](_0x2314e4['body'][_0x0ec6('0x53')],_0x2314e4['body'][_0x0ec6('0x30')]);return db[_0x0ec6('0x4e')]['create'](_0x2314e4[_0x0ec6('0x4b')],{'include':[{'model':db['SugarcrmField'],'as':_0x0ec6('0x55')},{'model':db[_0x0ec6('0x56')],'as':'Descriptions'}]});}return null;})[_0x0ec6('0x26')](respondWithResult(_0x4a316a,null))[_0x0ec6('0x47')](handleError(_0x4a316a,null));};exports[_0x0ec6('0x57')]=function(_0x2ccf3e,_0x8c54c7,_0xa1b5ce){var _0x2c2544='';var _0x196ee5=['id',_0x0ec6('0x2a'),_0x0ec6('0x58'),_0x0ec6('0x59'),_0x0ec6('0x5a'),_0x0ec6('0x5b'),_0x0ec6('0x5c'),_0x0ec6('0x5d'),_0x0ec6('0x5e'),_0x0ec6('0x5f'),'parent_name',_0x0ec6('0x60')];return db[_0x0ec6('0x2d')]['findOne']({'where':{'id':_0x2ccf3e[_0x0ec6('0x48')]['id']},'attributes':['id','username',_0x0ec6('0x61'),'remoteUri']})[_0x0ec6('0x26')](handleEntityNotFound(_0x8c54c7,null))[_0x0ec6('0x26')](function(_0x1e8b91){if(_0x1e8b91){_0x2c2544=_0x1e8b91[_0x0ec6('0x62')];var _0x4c9426=_0x2c2544[_0x0ec6('0x63')](-0x1);if(_0x4c9426==='/'){_0x2c2544=_0x2c2544[_0x0ec6('0x64')](0x0,_0x2c2544[_0x0ec6('0x65')](_0x4c9426));}return rp({'method':_0x0ec6('0x66'),'uri':util[_0x0ec6('0x67')]('%s%s',_0x2c2544,_0x0ec6('0x68')),'json':!![],'form':{'method':_0x0ec6('0x69'),'input_type':_0x0ec6('0x6a'),'response_type':_0x0ec6('0x6a'),'rest_data':JSON[_0x0ec6('0x6b')]({'user_auth':{'user_name':_0x1e8b91[_0x0ec6('0x6c')],'password':_0x1e8b91[_0x0ec6('0x61')],'encryption':_0x0ec6('0x6d')},'application':_0x0ec6('0x6e')})}});}})[_0x0ec6('0x26')](function(_0xce47bb){if(_0xce47bb&&_0xce47bb[_0x0ec6('0x2a')]!=='Invalid\x20Login'&&_0xce47bb[_0x0ec6('0x2a')]!=='Password\x20Expired'){return rp({'method':_0x0ec6('0x66'),'uri':util[_0x0ec6('0x67')](_0x0ec6('0x6f'),_0x2c2544,_0x0ec6('0x68')),'json':!![],'form':{'method':_0x0ec6('0x70'),'input_type':_0x0ec6('0x6a'),'response_type':'JSON','rest_data':JSON[_0x0ec6('0x6b')]({'session':_0xce47bb['id'],'module_name':'Calls'})}})[_0x0ec6('0x26')](function(_0x49516b){if(_0x49516b){var _0x4f0991=_[_0x0ec6('0x71')](_0x49516b[_0x0ec6('0x72')]);_[_0x0ec6('0x73')](_0x4f0991,function(_0x1f7fb4){return _0x196ee5[_0x0ec6('0x74')](_0x1f7fb4[_0x0ec6('0x2a')]);});return{'count':_0x4f0991[_0x0ec6('0x38')],'rows':_[_0x0ec6('0x2c')](_0x4f0991,function(_0x2acea2){return{'id':_0x2acea2[_0x0ec6('0x2a')],'name':_0x2acea2[_0x0ec6('0x75')],'custom':_[_0x0ec6('0x76')](_0x2acea2[_0x0ec6('0x2a')],'_c')?!![]:![],'options':_0x2acea2[_0x0ec6('0x42')]?_[_0x0ec6('0x2c')](_[_0x0ec6('0x71')](_0x2acea2[_0x0ec6('0x42')]),function(_0x57ae17){return{'name':_0x57ae17[_0x0ec6('0x77')],'value':_0x57ae17[_0x0ec6('0x2a')]};}):[]};})};}})[_0x0ec6('0x26')](respondWithResult(_0x8c54c7,null))[_0x0ec6('0x47')](function(_0x1e923d){var _0x4482c4=_0x2ccf3e[_0x0ec6('0x33')][_0x0ec6('0x78')]?0x1f4:_0x1e923d[_0x0ec6('0x79')]||0x1f4;logger[_0x0ec6('0x28')](_0x0ec6('0x7a'),'getFields',_0x4482c4,JSON[_0x0ec6('0x6b')](_0x1e923d));delete _0x1e923d[_0x0ec6('0x2a')];if(_0x4482c4===0x191){_0x4482c4=0x190;}_0x8c54c7[_0x0ec6('0x18')](_0x4482c4)[_0x0ec6('0x2b')](_0x2ccf3e[_0x0ec6('0x33')][_0x0ec6('0x78')]?{'message':'Wrong\x20credentials','statusCode':_0x1e923d[_0x0ec6('0x79')]}:_0x1e923d);});}else{var _0x255cc8=0x1f4;_0x8c54c7[_0x0ec6('0x18')](_0x255cc8)['send']({'message':_0x0ec6('0x7b'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0x6f04=['ejs','fs-extra','lodash','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','SugarcrmAccount','includeAll','include','findAll','rows','catch','params','rawAttributes','create','body','find','findOne','SugarcrmConfiguration','getConfigurations','AccountId','Subjects','Descriptions','getDescriptions','channel','SugarcrmField','created_by','date_start','duration_hours','duration_minutes','parent_id','parent_name','password','remoteUri','slice','substring','lastIndexOf','format','%s%s','/service/v4_1/rest.php','login','stringify','username','Invalid\x20Login','Password\x20Expired','POST','get_module_fields','JSON','Calls','includes','label','endsWith','test','getFields,\x20%s,\x20%s,\x20%s','getFields','Wrong\x20credentials','statusCode','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox'];(function(_0x30293c,_0x519ca2){var _0x506ca0=function(_0x4b00a4){while(--_0x4b00a4){_0x30293c['push'](_0x30293c['shift']());}};_0x506ca0(++_0x519ca2);}(_0x6f04,0x154));var _0x46f0=function(_0x3164a2,_0x4e4ca4){_0x3164a2=_0x3164a2-0x0;var _0x2b5b86=_0x6f04[_0x3164a2];return _0x2b5b86;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x46f0('0x0'));var zipdir=require(_0x46f0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x46f0('0x2'));var moment=require(_0x46f0('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x46f0('0x4'));var util=require(_0x46f0('0x5'));var path=require(_0x46f0('0x6'));var sox=require(_0x46f0('0x7'));var csv=require('to-csv');var ejs=require(_0x46f0('0x8'));var fs=require('fs');var fs_extra=require(_0x46f0('0x9'));var _=require(_0x46f0('0xa'));var squel=require(_0x46f0('0xb'));var crypto=require(_0x46f0('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x46f0('0xd'));var querystring=require(_0x46f0('0xe'));var Papa=require(_0x46f0('0xf'));var Redis=require(_0x46f0('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x46f0('0x11'));var as=require(_0x46f0('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x46f0('0x13'))('api');var utils=require(_0x46f0('0x14'));var config=require(_0x46f0('0x15'));var licenseUtil=require(_0x46f0('0x16'));var db=require(_0x46f0('0x17'))['db'];var integrations=require(_0x46f0('0x18'));function respondWithStatusCode(_0x2b0c54,_0x91ea6f){_0x91ea6f=_0x91ea6f||0xcc;return function(_0x4fd11f){if(_0x4fd11f){return _0x2b0c54[_0x46f0('0x19')](_0x91ea6f);}return _0x2b0c54[_0x46f0('0x1a')](_0x91ea6f)[_0x46f0('0x1b')]();};}function respondWithResult(_0x48f053,_0x10f577){_0x10f577=_0x10f577||0xc8;return function(_0x2cc78f){if(_0x2cc78f){return _0x48f053[_0x46f0('0x1a')](_0x10f577)[_0x46f0('0x1c')](_0x2cc78f);}};}function respondWithFilteredResult(_0x46218c,_0x22e576){return function(_0x2b8a67){if(_0x2b8a67){var _0x37cca8=typeof _0x22e576[_0x46f0('0x1d')]===_0x46f0('0x1e')&&typeof _0x22e576['limit']==='undefined';var _0xe1dba8=_0x2b8a67[_0x46f0('0x1f')];var _0x1d238d=_0x37cca8?0x0:_0x22e576['offset'];var _0x123b49=_0x37cca8?_0x2b8a67[_0x46f0('0x1f')]:_0x22e576[_0x46f0('0x1d')]+_0x22e576[_0x46f0('0x20')];var _0x13d2ca;if(_0x123b49>=_0xe1dba8){_0x123b49=_0xe1dba8;_0x13d2ca=0xc8;}else{_0x13d2ca=0xce;}_0x46218c[_0x46f0('0x1a')](_0x13d2ca);return _0x46218c[_0x46f0('0x21')](_0x46f0('0x22'),_0x1d238d+'-'+_0x123b49+'/'+_0xe1dba8)[_0x46f0('0x1c')](_0x2b8a67);}return null;};}function patchUpdates(_0x2e88c4){return function(_0x500492){try{jsonpatch[_0x46f0('0x23')](_0x500492,_0x2e88c4,!![]);}catch(_0xf74a4d){return BPromise['reject'](_0xf74a4d);}return _0x500492[_0x46f0('0x24')]();};}function saveUpdates(_0x36e4f7,_0xfba51f){return function(_0x480f63){if(_0x480f63){return _0x480f63[_0x46f0('0x25')](_0x36e4f7)[_0x46f0('0x26')](function(_0xebf3f9){return _0xebf3f9;});}return null;};}function removeEntity(_0x5edc3d,_0x5e54ce){return function(_0x4d8e0c){if(_0x4d8e0c){return _0x4d8e0c[_0x46f0('0x27')]()[_0x46f0('0x26')](function(){_0x5edc3d[_0x46f0('0x1a')](0xcc)[_0x46f0('0x1b')]();});}};}function handleEntityNotFound(_0xe65e2e,_0xe3a09c){return function(_0x13a7c7){if(!_0x13a7c7){_0xe65e2e[_0x46f0('0x19')](0x194);}return _0x13a7c7;};}function handleError(_0x1a11c0,_0x46e7f1){_0x46e7f1=_0x46e7f1||0x1f4;return function(_0x2247fb){logger[_0x46f0('0x28')](_0x2247fb[_0x46f0('0x29')]);if(_0x2247fb[_0x46f0('0x2a')]){delete _0x2247fb['name'];}_0x1a11c0[_0x46f0('0x1a')](_0x46e7f1)[_0x46f0('0x2b')](_0x2247fb);};}exports['index']=function(_0x29473b,_0x1fb88e){var _0x1d44d4={},_0x6532c0={},_0x142a34={'count':0x0,'rows':[]};var _0x2eb174=_['map'](db['SugarcrmAccount']['rawAttributes'],function(_0x55fb7e){return{'name':_0x55fb7e['fieldName'],'type':_0x55fb7e['type'][_0x46f0('0x2c')]};});_0x6532c0['model']=_[_0x46f0('0x2d')](_0x2eb174,_0x46f0('0x2a'));_0x6532c0[_0x46f0('0x2e')]=_[_0x46f0('0x2f')](_0x29473b['query']);_0x6532c0[_0x46f0('0x30')]=_[_0x46f0('0x31')](_0x6532c0[_0x46f0('0x32')],_0x6532c0[_0x46f0('0x2e')]);_0x1d44d4[_0x46f0('0x33')]=_[_0x46f0('0x31')](_0x6532c0[_0x46f0('0x32')],qs[_0x46f0('0x34')](_0x29473b[_0x46f0('0x2e')][_0x46f0('0x34')]));_0x1d44d4['attributes']=_0x1d44d4[_0x46f0('0x33')][_0x46f0('0x35')]?_0x1d44d4[_0x46f0('0x33')]:_0x6532c0['model'];if(!_0x29473b['query'][_0x46f0('0x36')](_0x46f0('0x37'))){_0x1d44d4[_0x46f0('0x20')]=qs[_0x46f0('0x20')](_0x29473b['query'][_0x46f0('0x20')]);_0x1d44d4['offset']=qs[_0x46f0('0x1d')](_0x29473b[_0x46f0('0x2e')][_0x46f0('0x1d')]);}_0x1d44d4[_0x46f0('0x38')]=qs[_0x46f0('0x39')](_0x29473b['query'][_0x46f0('0x39')]);_0x1d44d4[_0x46f0('0x3a')]=qs['filters'](_[_0x46f0('0x3b')](_0x29473b['query'],_0x6532c0[_0x46f0('0x30')]),_0x2eb174);if(_0x29473b[_0x46f0('0x2e')]['filter']){_0x1d44d4[_0x46f0('0x3a')]=_[_0x46f0('0x3c')](_0x1d44d4[_0x46f0('0x3a')],{'$or':_[_0x46f0('0x2d')](_0x2eb174,function(_0x51d9f8){if(_0x51d9f8[_0x46f0('0x3d')]!==_0x46f0('0x3e')){var _0x564474={};_0x564474[_0x51d9f8[_0x46f0('0x2a')]]={'$like':'%'+_0x29473b[_0x46f0('0x2e')][_0x46f0('0x3f')]+'%'};return _0x564474;}})});}_0x1d44d4=_[_0x46f0('0x3c')]({},_0x1d44d4,_0x29473b[_0x46f0('0x40')]);var _0x347b55={'where':_0x1d44d4[_0x46f0('0x3a')]};return db[_0x46f0('0x41')][_0x46f0('0x1f')](_0x347b55)[_0x46f0('0x26')](function(_0x3b7b80){_0x142a34[_0x46f0('0x1f')]=_0x3b7b80;if(_0x29473b[_0x46f0('0x2e')][_0x46f0('0x42')]){_0x1d44d4[_0x46f0('0x43')]=[{'all':!![]}];}return db[_0x46f0('0x41')][_0x46f0('0x44')](_0x1d44d4);})[_0x46f0('0x26')](function(_0x4dc74c){_0x142a34[_0x46f0('0x45')]=_0x4dc74c;return _0x142a34;})[_0x46f0('0x26')](respondWithFilteredResult(_0x1fb88e,_0x1d44d4))[_0x46f0('0x46')](handleError(_0x1fb88e,null));};exports['show']=function(_0xccf429,_0x1894bc){var _0x2b6056={'raw':![],'where':{'id':_0xccf429[_0x46f0('0x47')]['id']}},_0x2eac11={};_0x2eac11[_0x46f0('0x32')]=_[_0x46f0('0x2f')](db['SugarcrmAccount'][_0x46f0('0x48')]);_0x2eac11[_0x46f0('0x2e')]=_['keys'](_0xccf429[_0x46f0('0x2e')]);_0x2eac11['filters']=_[_0x46f0('0x31')](_0x2eac11['model'],_0x2eac11[_0x46f0('0x2e')]);_0x2b6056[_0x46f0('0x33')]=_[_0x46f0('0x31')](_0x2eac11[_0x46f0('0x32')],qs[_0x46f0('0x34')](_0xccf429[_0x46f0('0x2e')][_0x46f0('0x34')]));_0x2b6056[_0x46f0('0x33')]=_0x2b6056[_0x46f0('0x33')][_0x46f0('0x35')]?_0x2b6056[_0x46f0('0x33')]:_0x2eac11[_0x46f0('0x32')];if(_0xccf429[_0x46f0('0x2e')][_0x46f0('0x42')]){_0x2b6056[_0x46f0('0x43')]=[{'all':!![]}];}_0x2b6056=_['merge']({},_0x2b6056,_0xccf429[_0x46f0('0x40')]);return db[_0x46f0('0x41')]['find'](_0x2b6056)[_0x46f0('0x26')](handleEntityNotFound(_0x1894bc,null))[_0x46f0('0x26')](respondWithResult(_0x1894bc,null))['catch'](handleError(_0x1894bc,null));};exports[_0x46f0('0x49')]=function(_0x2d2619,_0x261d29){return db['SugarcrmAccount'][_0x46f0('0x49')](_0x2d2619[_0x46f0('0x4a')],{})[_0x46f0('0x26')](respondWithResult(_0x261d29,0xc9))[_0x46f0('0x46')](handleError(_0x261d29,null));};exports[_0x46f0('0x25')]=function(_0x43d590,_0x3582e1){if(_0x43d590['body']['id']){delete _0x43d590['body']['id'];}return db[_0x46f0('0x41')][_0x46f0('0x4b')]({'where':{'id':_0x43d590[_0x46f0('0x47')]['id']}})[_0x46f0('0x26')](handleEntityNotFound(_0x3582e1,null))[_0x46f0('0x26')](saveUpdates(_0x43d590['body'],null))[_0x46f0('0x26')](respondWithResult(_0x3582e1,null))[_0x46f0('0x46')](handleError(_0x3582e1,null));};exports[_0x46f0('0x27')]=function(_0x124b1a,_0x2e2b8d){return db[_0x46f0('0x41')][_0x46f0('0x4b')]({'where':{'id':_0x124b1a[_0x46f0('0x47')]['id']}})[_0x46f0('0x26')](handleEntityNotFound(_0x2e2b8d,null))[_0x46f0('0x26')](removeEntity(_0x2e2b8d,null))[_0x46f0('0x46')](handleError(_0x2e2b8d,null));};exports['getConfigurations']=function(_0x648d74,_0x40cf73,_0x2d2b98){var _0x3413af={};var _0xe97c46={};var _0x5a85e3;var _0x406d48;return db[_0x46f0('0x41')][_0x46f0('0x4c')]({'where':{'id':_0x648d74[_0x46f0('0x47')]['id']}})['then'](handleEntityNotFound(_0x40cf73,null))['then'](function(_0x53f362){if(_0x53f362){_0x5a85e3=_0x53f362;_0xe97c46['model']=_[_0x46f0('0x2f')](db[_0x46f0('0x4d')][_0x46f0('0x48')]);_0xe97c46['query']=_[_0x46f0('0x2f')](_0x648d74['query']);_0xe97c46[_0x46f0('0x30')]=_[_0x46f0('0x31')](_0xe97c46[_0x46f0('0x32')],_0xe97c46[_0x46f0('0x2e')]);_0x3413af[_0x46f0('0x33')]=_[_0x46f0('0x31')](_0xe97c46[_0x46f0('0x32')],qs['fields'](_0x648d74[_0x46f0('0x2e')]['fields']));_0x3413af[_0x46f0('0x33')]=_0x3413af[_0x46f0('0x33')][_0x46f0('0x35')]?_0x3413af[_0x46f0('0x33')]:_0xe97c46[_0x46f0('0x32')];_0x3413af[_0x46f0('0x38')]=qs[_0x46f0('0x39')](_0x648d74[_0x46f0('0x2e')][_0x46f0('0x39')]);_0x3413af['where']=qs['filters'](_[_0x46f0('0x3b')](_0x648d74[_0x46f0('0x2e')],_0xe97c46['filters']));if(_0x648d74['query'][_0x46f0('0x3f')]){_0x3413af[_0x46f0('0x3a')]=_[_0x46f0('0x3c')](_0x3413af[_0x46f0('0x3a')],{'$or':_[_0x46f0('0x2d')](_0x3413af[_0x46f0('0x33')],function(_0xef3a72){var _0x16bab3={};_0x16bab3[_0xef3a72]={'$like':'%'+_0x648d74[_0x46f0('0x2e')][_0x46f0('0x3f')]+'%'};return _0x16bab3;})});}_0x3413af=_[_0x46f0('0x3c')]({},_0x3413af,_0x648d74[_0x46f0('0x40')]);return _0x5a85e3[_0x46f0('0x4e')](_0x3413af);}})[_0x46f0('0x26')](function(_0x2583d9){if(_0x2583d9){_0x406d48=_0x2583d9[_0x46f0('0x35')];if(!_0x648d74['query'][_0x46f0('0x36')](_0x46f0('0x37'))){_0x3413af['limit']=qs[_0x46f0('0x20')](_0x648d74[_0x46f0('0x2e')][_0x46f0('0x20')]);_0x3413af[_0x46f0('0x1d')]=qs[_0x46f0('0x1d')](_0x648d74[_0x46f0('0x2e')][_0x46f0('0x1d')]);}return _0x5a85e3['getConfigurations'](_0x3413af);}})[_0x46f0('0x26')](function(_0x190234){if(_0x190234){return _0x190234?{'count':_0x406d48,'rows':_0x190234}:null;}})[_0x46f0('0x26')](respondWithResult(_0x40cf73,null))[_0x46f0('0x46')](handleError(_0x40cf73,null));};exports['addConfiguration']=function(_0x5ea814,_0x4b9d03,_0xf8bbaa){if(_0x5ea814[_0x46f0('0x4a')]['id']){delete _0x5ea814[_0x46f0('0x4a')]['id'];}return db[_0x46f0('0x41')][_0x46f0('0x4c')]({'where':{'id':_0x5ea814['params']['id']}})[_0x46f0('0x26')](handleEntityNotFound(_0x4b9d03,null))['then'](function(_0x320cfc){if(_0x320cfc){_0x5ea814[_0x46f0('0x4a')][_0x46f0('0x4f')]=_0x320cfc['id'];_0x5ea814['body'][_0x46f0('0x50')]=integrations['getSubjects'](_0x5ea814[_0x46f0('0x4a')]['channel'],_0x5ea814[_0x46f0('0x4a')][_0x46f0('0x3d')]);_0x5ea814[_0x46f0('0x4a')][_0x46f0('0x51')]=integrations[_0x46f0('0x52')](_0x5ea814[_0x46f0('0x4a')][_0x46f0('0x53')],_0x5ea814[_0x46f0('0x4a')][_0x46f0('0x3d')]);return db['SugarcrmConfiguration'][_0x46f0('0x49')](_0x5ea814['body'],{'include':[{'model':db['SugarcrmField'],'as':_0x46f0('0x50')},{'model':db[_0x46f0('0x54')],'as':_0x46f0('0x51')}]});}return null;})[_0x46f0('0x26')](respondWithResult(_0x4b9d03,null))[_0x46f0('0x46')](handleError(_0x4b9d03,null));};exports['getFields']=function(_0x5969fe,_0x1f7285,_0x52c8a0){var _0x30f5b4='';var _0x3dca62=['id','name','assigned_user_id',_0x46f0('0x55'),'description',_0x46f0('0x56'),_0x46f0('0x57'),_0x46f0('0x58'),_0x46f0('0x59'),'parent_type',_0x46f0('0x5a'),'direction'];return db['SugarcrmAccount'][_0x46f0('0x4c')]({'where':{'id':_0x5969fe[_0x46f0('0x47')]['id']},'attributes':['id','username',_0x46f0('0x5b'),_0x46f0('0x5c')]})[_0x46f0('0x26')](handleEntityNotFound(_0x1f7285,null))[_0x46f0('0x26')](function(_0x406c8a){if(_0x406c8a){_0x30f5b4=_0x406c8a[_0x46f0('0x5c')];var _0x6be65b=_0x30f5b4[_0x46f0('0x5d')](-0x1);if(_0x6be65b==='/'){_0x30f5b4=_0x30f5b4[_0x46f0('0x5e')](0x0,_0x30f5b4[_0x46f0('0x5f')](_0x6be65b));}return rp({'method':'POST','uri':util[_0x46f0('0x60')](_0x46f0('0x61'),_0x30f5b4,_0x46f0('0x62')),'json':!![],'form':{'method':_0x46f0('0x63'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0x46f0('0x64')]({'user_auth':{'user_name':_0x406c8a[_0x46f0('0x65')],'password':_0x406c8a['password'],'encryption':'PLAIN'},'application':'xCALLY\x20Motion\x20Integration'})}});}})['then'](function(_0x29832b){if(_0x29832b&&_0x29832b[_0x46f0('0x2a')]!==_0x46f0('0x66')&&_0x29832b[_0x46f0('0x2a')]!==_0x46f0('0x67')){return rp({'method':_0x46f0('0x68'),'uri':util[_0x46f0('0x60')]('%s%s',_0x30f5b4,_0x46f0('0x62')),'json':!![],'form':{'method':_0x46f0('0x69'),'input_type':'JSON','response_type':_0x46f0('0x6a'),'rest_data':JSON[_0x46f0('0x64')]({'session':_0x29832b['id'],'module_name':_0x46f0('0x6b')})}})[_0x46f0('0x26')](function(_0xfc9ed5){if(_0xfc9ed5){var _0x58158a=_['values'](_0xfc9ed5['module_fields']);_['remove'](_0x58158a,function(_0x5b7575){return _0x3dca62[_0x46f0('0x6c')](_0x5b7575['name']);});return{'count':_0x58158a[_0x46f0('0x35')],'rows':_[_0x46f0('0x2d')](_0x58158a,function(_0x2444a5){return{'id':_0x2444a5[_0x46f0('0x2a')],'name':_0x2444a5[_0x46f0('0x6d')],'custom':_[_0x46f0('0x6e')](_0x2444a5[_0x46f0('0x2a')],'_c')?!![]:![],'options':_0x2444a5['options']?_['map'](_['values'](_0x2444a5['options']),function(_0x37d89c){return{'name':_0x37d89c['value'],'value':_0x37d89c[_0x46f0('0x2a')]};}):[]};})};}})[_0x46f0('0x26')](respondWithResult(_0x1f7285,null))[_0x46f0('0x46')](function(_0x53ea84){var _0x8a5e9=_0x5969fe['query'][_0x46f0('0x6f')]?0x1f4:_0x53ea84['statusCode']||0x1f4;logger[_0x46f0('0x28')](_0x46f0('0x70'),_0x46f0('0x71'),_0x8a5e9,JSON[_0x46f0('0x64')](_0x53ea84));delete _0x53ea84['name'];if(_0x8a5e9===0x191){_0x8a5e9=0x190;}_0x1f7285[_0x46f0('0x1a')](_0x8a5e9)['send'](_0x5969fe['query']['test']?{'message':_0x46f0('0x72'),'statusCode':_0x53ea84[_0x46f0('0x73')]}:_0x53ea84);});}else{var _0x4275b2=0x1f4;_0x1f7285[_0x46f0('0x1a')](_0x4275b2)[_0x46f0('0x2b')]({'message':_0x46f0('0x72'),'statusCode':0x190});}});};
\ No newline at end of file
index fa63e81..2d22b13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8ed=['define','SugarcrmAccount','int_sugarcrm_accounts','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports'];(function(_0x2daf9b,_0x5d7a1b){var _0x519601=function(_0x2c303e){while(--_0x2c303e){_0x2daf9b['push'](_0x2daf9b['shift']());}};_0x519601(++_0x5d7a1b);}(_0xe8ed,0x8a));var _0xde8e=function(_0x23a63c,_0xd09586){_0x23a63c=_0x23a63c-0x0;var _0x34d2d8=_0xe8ed[_0x23a63c];return _0x34d2d8;};'use strict';var _=require(_0xde8e('0x0'));var util=require('util');var logger=require(_0xde8e('0x1'))(_0xde8e('0x2'));var moment=require(_0xde8e('0x3'));var BPromise=require(_0xde8e('0x4'));var rp=require(_0xde8e('0x5'));var fs=require('fs');var path=require(_0xde8e('0x6'));var rimraf=require(_0xde8e('0x7'));var config=require(_0xde8e('0x8'));var attributes=require(_0xde8e('0x9'));var integrations=require(_0xde8e('0xa'));module[_0xde8e('0xb')]=function(_0x328aaf,_0x56ac26){return _0x328aaf[_0xde8e('0xc')](_0xde8e('0xd'),attributes,{'tableName':_0xde8e('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf6bc=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','define','SugarcrmAccount','int_sugarcrm_accounts'];(function(_0x45ad09,_0x521ab1){var _0x2084fd=function(_0x6fd212){while(--_0x6fd212){_0x45ad09['push'](_0x45ad09['shift']());}};_0x2084fd(++_0x521ab1);}(_0xf6bc,0xfd));var _0xcf6b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf6bc[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xcf6b('0x0'))('api');var moment=require(_0xcf6b('0x1'));var BPromise=require(_0xcf6b('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcf6b('0x3'));var rimraf=require(_0xcf6b('0x4'));var config=require(_0xcf6b('0x5'));var attributes=require(_0xcf6b('0x6'));var integrations=require(_0xcf6b('0x7'));module['exports']=function(_0x18b368,_0x56e48c){return _0x18b368[_0xcf6b('0x8')](_0xcf6b('0x9'),attributes,{'tableName':_0xcf6b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b9f7c87..da253ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1017=['then','GetSugarcrmAccount','stringify','find','model','ShowSugarcrmAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','info','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','error','message','SugarcrmAccount,\x20%s,\x20%s','result','catch','SugarcrmAccount','findAll','options','raw','where','limit','include','attributes','map'];(function(_0x213f91,_0x8f3782){var _0x5cf677=function(_0x469754){while(--_0x469754){_0x213f91['push'](_0x213f91['shift']());}};_0x5cf677(++_0x8f3782);}(_0x1017,0x1b6));var _0x7101=function(_0x317fe0,_0x3657ae){_0x317fe0=_0x317fe0-0x0;var _0x3b3973=_0x1017[_0x317fe0];return _0x3b3973;};'use strict';var _=require(_0x7101('0x0'));var util=require(_0x7101('0x1'));var moment=require(_0x7101('0x2'));var BPromise=require(_0x7101('0x3'));var rs=require(_0x7101('0x4'));var fs=require('fs');var Redis=require(_0x7101('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x7101('0x6'));var logger=require(_0x7101('0x7'))(_0x7101('0x8'));var config=require('../../config/environment');var jayson=require(_0x7101('0x9'));var client=jayson[_0x7101('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x201b5b,_0x1f4d3d,_0x3a180d){return new BPromise(function(_0x4864e1,_0x2ce896){return client[_0x7101('0xb')](_0x201b5b,_0x3a180d)['then'](function(_0x3bf3d9){logger[_0x7101('0xc')]('SugarcrmAccount,\x20%s,\x20%s',_0x1f4d3d,_0x7101('0xd'));logger[_0x7101('0xe')](_0x7101('0xf'),_0x1f4d3d,_0x7101('0xd'),JSON['stringify'](_0x3bf3d9));if(_0x3bf3d9[_0x7101('0x10')]){if(_0x3bf3d9[_0x7101('0x10')]['code']===0x1f4){logger[_0x7101('0x10')]('SugarcrmAccount,\x20%s,\x20%s',_0x1f4d3d,_0x3bf3d9[_0x7101('0x10')]['message']);return _0x2ce896(_0x3bf3d9[_0x7101('0x10')][_0x7101('0x11')]);}logger['error'](_0x7101('0x12'),_0x1f4d3d,_0x3bf3d9['error'][_0x7101('0x11')]);return _0x4864e1(_0x3bf3d9['error'][_0x7101('0x11')]);}else{logger[_0x7101('0xc')]('SugarcrmAccount,\x20%s,\x20%s',_0x1f4d3d,_0x7101('0xd'));_0x4864e1(_0x3bf3d9[_0x7101('0x13')]['message']);}})[_0x7101('0x14')](function(_0x507d5e){logger['error'](_0x7101('0x12'),_0x1f4d3d,_0x507d5e);_0x2ce896(_0x507d5e);});});}exports['GetSugarcrmAccount']=function(_0x22cf5d){var _0x134aac=this;return new Promise(function(_0x3cce8c,_0x287f06){return db[_0x7101('0x15')][_0x7101('0x16')]({'raw':_0x22cf5d[_0x7101('0x17')]?_0x22cf5d[_0x7101('0x17')][_0x7101('0x18')]===undefined?!![]:![]:!![],'where':_0x22cf5d['options']?_0x22cf5d[_0x7101('0x17')][_0x7101('0x19')]||null:null,'attributes':_0x22cf5d['options']?_0x22cf5d[_0x7101('0x17')]['attributes']||null:null,'limit':_0x22cf5d[_0x7101('0x17')]?_0x22cf5d[_0x7101('0x17')][_0x7101('0x1a')]||null:null,'include':_0x22cf5d[_0x7101('0x17')]?_0x22cf5d[_0x7101('0x17')][_0x7101('0x1b')]?_['map'](_0x22cf5d['options'][_0x7101('0x1b')],function(_0x5c390b){return{'model':db[_0x5c390b['model']],'as':_0x5c390b['as'],'attributes':_0x5c390b['attributes'],'include':_0x5c390b[_0x7101('0x1b')]?_['map'](_0x5c390b['include'],function(_0x166332){return{'model':db[_0x166332['model']],'as':_0x166332['as'],'attributes':_0x166332[_0x7101('0x1c')],'include':_0x166332[_0x7101('0x1b')]?_[_0x7101('0x1d')](_0x166332[_0x7101('0x1b')],function(_0x3eeb12){return{'model':db[_0x3eeb12['model']],'as':_0x3eeb12['as'],'attributes':_0x3eeb12[_0x7101('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x7101('0x1e')](function(_0x543439){logger[_0x7101('0xc')](_0x7101('0x1f'),_0x22cf5d);logger[_0x7101('0xe')]('GetSugarcrmAccount',_0x22cf5d,JSON[_0x7101('0x20')](_0x543439));_0x3cce8c(_0x543439);})[_0x7101('0x14')](function(_0x5fe5a5){logger['error'](_0x7101('0x1f'),_0x5fe5a5[_0x7101('0x11')],_0x22cf5d);_0x287f06(_0x134aac[_0x7101('0x10')](0x1f4,_0x5fe5a5['message']));});});};exports['ShowSugarcrmAccount']=function(_0x1aa9a3){var _0x2c6bee=this;return new Promise(function(_0x1c5439,_0x1460ce){return db[_0x7101('0x15')][_0x7101('0x21')]({'raw':_0x1aa9a3[_0x7101('0x17')]?_0x1aa9a3[_0x7101('0x17')][_0x7101('0x18')]===undefined?!![]:![]:!![],'where':_0x1aa9a3[_0x7101('0x17')]?_0x1aa9a3['options'][_0x7101('0x19')]||null:null,'attributes':_0x1aa9a3['options']?_0x1aa9a3['options']['attributes']||null:null,'include':_0x1aa9a3[_0x7101('0x17')]?_0x1aa9a3[_0x7101('0x17')][_0x7101('0x1b')]?_[_0x7101('0x1d')](_0x1aa9a3[_0x7101('0x17')][_0x7101('0x1b')],function(_0x5d8111){return{'model':db[_0x5d8111[_0x7101('0x22')]],'as':_0x5d8111['as'],'attributes':_0x5d8111[_0x7101('0x1c')],'include':_0x5d8111[_0x7101('0x1b')]?_['map'](_0x5d8111[_0x7101('0x1b')],function(_0x361b9a){return{'model':db[_0x361b9a[_0x7101('0x22')]],'as':_0x361b9a['as'],'attributes':_0x361b9a[_0x7101('0x1c')],'include':_0x361b9a['include']?_[_0x7101('0x1d')](_0x361b9a[_0x7101('0x1b')],function(_0x3744a0){return{'model':db[_0x3744a0[_0x7101('0x22')]],'as':_0x3744a0['as'],'attributes':_0x3744a0['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x19da3e){logger['info'](_0x7101('0x23'),_0x1aa9a3);logger[_0x7101('0xe')](_0x7101('0x23'),_0x1aa9a3,JSON[_0x7101('0x20')](_0x19da3e));_0x1c5439(_0x19da3e);})[_0x7101('0x14')](function(_0xb61693){logger[_0x7101('0x10')](_0x7101('0x23'),_0xb61693[_0x7101('0x11')],_0x1aa9a3);_0x1460ce(_0x2c6bee['error'](0x1f4,_0xb61693['message']));});});};
\ No newline at end of file
+var _0x8d39=['rpc','../../config/environment','jayson/promise','http','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','SugarcrmAccount','options','attributes','limit','include','map','model','GetSugarcrmAccount','ShowSugarcrmAccount','raw','moment','randomstring','ioredis','../../mysqldb'];(function(_0x458dac,_0x3f5a32){var _0x1c9824=function(_0x25e9e3){while(--_0x25e9e3){_0x458dac['push'](_0x458dac['shift']());}};_0x1c9824(++_0x3f5a32);}(_0x8d39,0xd5));var _0x98d3=function(_0x30c649,_0x2ebbac){_0x30c649=_0x30c649-0x0;var _0x3edfb9=_0x8d39[_0x30c649];return _0x3edfb9;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x98d3('0x0'));var BPromise=require('bluebird');var rs=require(_0x98d3('0x1'));var fs=require('fs');var Redis=require(_0x98d3('0x2'));var db=require(_0x98d3('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x98d3('0x4'));var config=require(_0x98d3('0x5'));var jayson=require(_0x98d3('0x6'));var client=jayson['client'][_0x98d3('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4613dc,_0x3d1a25,_0x5e6029){return new BPromise(function(_0x59f075,_0x28f74b){return client[_0x98d3('0x8')](_0x4613dc,_0x5e6029)[_0x98d3('0x9')](function(_0x4a8dba){logger[_0x98d3('0xa')](_0x98d3('0xb'),_0x3d1a25,_0x98d3('0xc'));logger[_0x98d3('0xd')](_0x98d3('0xe'),_0x3d1a25,_0x98d3('0xc'),JSON[_0x98d3('0xf')](_0x4a8dba));if(_0x4a8dba[_0x98d3('0x10')]){if(_0x4a8dba[_0x98d3('0x10')][_0x98d3('0x11')]===0x1f4){logger['error'](_0x98d3('0xb'),_0x3d1a25,_0x4a8dba['error']['message']);return _0x28f74b(_0x4a8dba['error'][_0x98d3('0x12')]);}logger['error'](_0x98d3('0xb'),_0x3d1a25,_0x4a8dba['error'][_0x98d3('0x12')]);return _0x59f075(_0x4a8dba[_0x98d3('0x10')][_0x98d3('0x12')]);}else{logger[_0x98d3('0xa')](_0x98d3('0xb'),_0x3d1a25,_0x98d3('0xc'));_0x59f075(_0x4a8dba[_0x98d3('0x13')][_0x98d3('0x12')]);}})[_0x98d3('0x14')](function(_0x4e9eb6){logger['error'](_0x98d3('0xb'),_0x3d1a25,_0x4e9eb6);_0x28f74b(_0x4e9eb6);});});}exports['GetSugarcrmAccount']=function(_0x1804e9){var _0x46e16b=this;return new Promise(function(_0x2a018a,_0x407521){return db[_0x98d3('0x15')]['findAll']({'raw':_0x1804e9['options']?_0x1804e9[_0x98d3('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x1804e9[_0x98d3('0x16')]?_0x1804e9['options']['where']||null:null,'attributes':_0x1804e9[_0x98d3('0x16')]?_0x1804e9[_0x98d3('0x16')][_0x98d3('0x17')]||null:null,'limit':_0x1804e9[_0x98d3('0x16')]?_0x1804e9['options'][_0x98d3('0x18')]||null:null,'include':_0x1804e9[_0x98d3('0x16')]?_0x1804e9['options'][_0x98d3('0x19')]?_[_0x98d3('0x1a')](_0x1804e9[_0x98d3('0x16')][_0x98d3('0x19')],function(_0x40cfc6){return{'model':db[_0x40cfc6[_0x98d3('0x1b')]],'as':_0x40cfc6['as'],'attributes':_0x40cfc6[_0x98d3('0x17')],'include':_0x40cfc6['include']?_[_0x98d3('0x1a')](_0x40cfc6[_0x98d3('0x19')],function(_0xf959d3){return{'model':db[_0xf959d3['model']],'as':_0xf959d3['as'],'attributes':_0xf959d3[_0x98d3('0x17')],'include':_0xf959d3[_0x98d3('0x19')]?_[_0x98d3('0x1a')](_0xf959d3['include'],function(_0xc76951){return{'model':db[_0xc76951[_0x98d3('0x1b')]],'as':_0xc76951['as'],'attributes':_0xc76951[_0x98d3('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x6e732a){logger[_0x98d3('0xa')](_0x98d3('0x1c'),_0x1804e9);logger[_0x98d3('0xd')](_0x98d3('0x1c'),_0x1804e9,JSON[_0x98d3('0xf')](_0x6e732a));_0x2a018a(_0x6e732a);})[_0x98d3('0x14')](function(_0x2aacfc){logger['error'](_0x98d3('0x1c'),_0x2aacfc[_0x98d3('0x12')],_0x1804e9);_0x407521(_0x46e16b[_0x98d3('0x10')](0x1f4,_0x2aacfc['message']));});});};exports[_0x98d3('0x1d')]=function(_0x542d2f){var _0x2c3fb4=this;return new Promise(function(_0x121f24,_0x369848){return db[_0x98d3('0x15')]['find']({'raw':_0x542d2f[_0x98d3('0x16')]?_0x542d2f[_0x98d3('0x16')][_0x98d3('0x1e')]===undefined?!![]:![]:!![],'where':_0x542d2f[_0x98d3('0x16')]?_0x542d2f[_0x98d3('0x16')]['where']||null:null,'attributes':_0x542d2f[_0x98d3('0x16')]?_0x542d2f[_0x98d3('0x16')][_0x98d3('0x17')]||null:null,'include':_0x542d2f[_0x98d3('0x16')]?_0x542d2f[_0x98d3('0x16')][_0x98d3('0x19')]?_[_0x98d3('0x1a')](_0x542d2f[_0x98d3('0x16')]['include'],function(_0x4b2e99){return{'model':db[_0x4b2e99[_0x98d3('0x1b')]],'as':_0x4b2e99['as'],'attributes':_0x4b2e99[_0x98d3('0x17')],'include':_0x4b2e99['include']?_[_0x98d3('0x1a')](_0x4b2e99['include'],function(_0x347770){return{'model':db[_0x347770[_0x98d3('0x1b')]],'as':_0x347770['as'],'attributes':_0x347770['attributes'],'include':_0x347770[_0x98d3('0x19')]?_[_0x98d3('0x1a')](_0x347770[_0x98d3('0x19')],function(_0xbbf5f3){return{'model':db[_0xbbf5f3[_0x98d3('0x1b')]],'as':_0xbbf5f3['as'],'attributes':_0xbbf5f3[_0x98d3('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3c8263){logger[_0x98d3('0xa')](_0x98d3('0x1d'),_0x542d2f);logger[_0x98d3('0xd')](_0x98d3('0x1d'),_0x542d2f,JSON[_0x98d3('0xf')](_0x3c8263));_0x121f24(_0x3c8263);})[_0x98d3('0x14')](function(_0x5d168d){logger[_0x98d3('0x10')]('ShowSugarcrmAccount',_0x5d168d['message'],_0x542d2f);_0x369848(_0x2c3fb4[_0x98d3('0x10')](0x1f4,_0x5d168d['message']));});});};
\ No newline at end of file
index eb31f20..185cfdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b6b=['exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intSugarcrmConfiguration.controller','get','index','/:id','show','/:id/fields','isAuthenticated','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','update','delete','destroy'];(function(_0x28393e,_0x14dfef){var _0x49ec7d=function(_0x2d1d63){while(--_0x2d1d63){_0x28393e['push'](_0x28393e['shift']());}};_0x49ec7d(++_0x14dfef);}(_0x9b6b,0x9d));var _0xb9b6=function(_0x32b354,_0x576f22){_0x32b354=_0x32b354-0x0;var _0x49f073=_0x9b6b[_0x32b354];return _0x49f073;};'use strict';var multer=require('multer');var util=require(_0xb9b6('0x0'));var path=require(_0xb9b6('0x1'));var timeout=require(_0xb9b6('0x2'));var express=require(_0xb9b6('0x3'));var router=express[_0xb9b6('0x4')]();var fs_extra=require(_0xb9b6('0x5'));var auth=require(_0xb9b6('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xb9b6('0x7'));var controller=require(_0xb9b6('0x8'));router[_0xb9b6('0x9')]('/',auth['isAuthenticated'](),controller[_0xb9b6('0xa')]);router[_0xb9b6('0x9')](_0xb9b6('0xb'),auth['isAuthenticated'](),controller[_0xb9b6('0xc')]);router['get'](_0xb9b6('0xd'),auth[_0xb9b6('0xe')](),controller[_0xb9b6('0xf')]);router[_0xb9b6('0x9')](_0xb9b6('0x10'),auth[_0xb9b6('0xe')](),controller[_0xb9b6('0x11')]);router[_0xb9b6('0x9')](_0xb9b6('0x12'),auth[_0xb9b6('0xe')](),controller['getDescriptions']);router[_0xb9b6('0x13')]('/',auth[_0xb9b6('0xe')](),controller[_0xb9b6('0x14')]);router[_0xb9b6('0x15')](_0xb9b6('0xb'),auth[_0xb9b6('0xe')](),controller[_0xb9b6('0x16')]);router[_0xb9b6('0x17')](_0xb9b6('0xb'),auth[_0xb9b6('0xe')](),controller[_0xb9b6('0x18')]);module[_0xb9b6('0x19')]=router;
\ No newline at end of file
+var _0xecd5=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','isAuthenticated','index','get','/:id','show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','create','put','destroy','exports','multer','util','path','express'];(function(_0x30dfa4,_0x1a6275){var _0x185b37=function(_0x1a8025){while(--_0x1a8025){_0x30dfa4['push'](_0x30dfa4['shift']());}};_0x185b37(++_0x1a6275);}(_0xecd5,0x15c));var _0x5ecd=function(_0x3b6149,_0x3fdcc2){_0x3b6149=_0x3b6149-0x0;var _0x4472d7=_0xecd5[_0x3b6149];return _0x4472d7;};'use strict';var multer=require(_0x5ecd('0x0'));var util=require(_0x5ecd('0x1'));var path=require(_0x5ecd('0x2'));var timeout=require('connect-timeout');var express=require(_0x5ecd('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x5ecd('0x4'));var interaction=require(_0x5ecd('0x5'));var config=require(_0x5ecd('0x6'));var controller=require(_0x5ecd('0x7'));router['get']('/',auth[_0x5ecd('0x8')](),controller[_0x5ecd('0x9')]);router[_0x5ecd('0xa')](_0x5ecd('0xb'),auth[_0x5ecd('0x8')](),controller[_0x5ecd('0xc')]);router[_0x5ecd('0xa')](_0x5ecd('0xd'),auth[_0x5ecd('0x8')](),controller[_0x5ecd('0xe')]);router['get']('/:id/subjects',auth['isAuthenticated'](),controller[_0x5ecd('0xf')]);router['get'](_0x5ecd('0x10'),auth[_0x5ecd('0x8')](),controller[_0x5ecd('0x11')]);router['post']('/',auth[_0x5ecd('0x8')](),controller[_0x5ecd('0x12')]);router[_0x5ecd('0x13')](_0x5ecd('0xb'),auth[_0x5ecd('0x8')](),controller['update']);router['delete'](_0x5ecd('0xb'),auth['isAuthenticated'](),controller[_0x5ecd('0x14')]);module[_0x5ecd('0x15')]=router;
\ No newline at end of file
index 4895a34..a7a98fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48a3=['STRING'];(function(_0x37d8ea,_0x4c47ce){var _0x59bec4=function(_0xc1fb72){while(--_0xc1fb72){_0x37d8ea['push'](_0x37d8ea['shift']());}};_0x59bec4(++_0x4c47ce);}(_0x48a3,0x14e));var _0x348a=function(_0x1c518c,_0x383352){_0x1c518c=_0x1c518c-0x0;var _0x2650cb=_0x48a3[_0x1c518c];return _0x2650cb;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x348a('0x0')]},'description':{'type':Sequelize[_0x348a('0x0')]}};
\ No newline at end of file
+var _0xfe70=['STRING','sequelize'];(function(_0x1b4c78,_0x5c6762){var _0x199898=function(_0x397366){while(--_0x397366){_0x1b4c78['push'](_0x1b4c78['shift']());}};_0x199898(++_0x5c6762);}(_0xfe70,0x177));var _0x0fe7=function(_0x5e4563,_0x3ff918){_0x5e4563=_0x5e4563-0x0;var _0x8d1bf5=_0xfe70[_0x5e4563];return _0x8d1bf5;};'use strict';var Sequelize=require(_0x0fe7('0x0'));module['exports']={'name':{'type':Sequelize[_0x0fe7('0x1')]},'description':{'type':Sequelize[_0x0fe7('0x1')]}};
\ No newline at end of file
index a41aac0..a2ab3c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x469c=['where','merge','VIRTUAL','options','includeAll','include','rows','show','params','find','catch','create','body','update','destroy','getFields','findOne','SugarcrmField','hasOwnProperty','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','ejs','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','then','error','stack','name','send','index','SugarcrmConfiguration','rawAttributes','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','order','sort','pick','filter'];(function(_0x22e69e,_0x1785fb){var _0x2c050f=function(_0x5e36d5){while(--_0x5e36d5){_0x22e69e['push'](_0x22e69e['shift']());}};_0x2c050f(++_0x1785fb);}(_0x469c,0x1a6));var _0xc469=function(_0x3ee21e,_0x5cf64c){_0x3ee21e=_0x3ee21e-0x0;var _0x10755a=_0x469c[_0x3ee21e];return _0x10755a;};'use strict';var emlformat=require(_0xc469('0x0'));var rimraf=require(_0xc469('0x1'));var zipdir=require(_0xc469('0x2'));var jsonpatch=require(_0xc469('0x3'));var rp=require('request-promise');var moment=require(_0xc469('0x4'));var BPromise=require(_0xc469('0x5'));var Mustache=require(_0xc469('0x6'));var util=require('util');var path=require(_0xc469('0x7'));var sox=require(_0xc469('0x8'));var csv=require('to-csv');var ejs=require(_0xc469('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc469('0xa'));var crypto=require('crypto');var jsforce=require(_0xc469('0xb'));var deskjs=require(_0xc469('0xc'));var toCsv=require(_0xc469('0xd'));var querystring=require(_0xc469('0xe'));var Papa=require('papaparse');var Redis=require(_0xc469('0xf'));var authService=require(_0xc469('0x10'));var qs=require(_0xc469('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc469('0x12'));var logger=require(_0xc469('0x13'))('api');var utils=require(_0xc469('0x14'));var config=require(_0xc469('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xc469('0x16'))['db'];function respondWithStatusCode(_0x4ca13f,_0x107431){_0x107431=_0x107431||0xcc;return function(_0x1234ef){if(_0x1234ef){return _0x4ca13f[_0xc469('0x17')](_0x107431);}return _0x4ca13f['status'](_0x107431)[_0xc469('0x18')]();};}function respondWithResult(_0xc076a5,_0x284ad5){_0x284ad5=_0x284ad5||0xc8;return function(_0x1a025b){if(_0x1a025b){return _0xc076a5[_0xc469('0x19')](_0x284ad5)[_0xc469('0x1a')](_0x1a025b);}};}function respondWithFilteredResult(_0x32381d,_0x2621ea){return function(_0x481731){if(_0x481731){var _0x2ebf8=typeof _0x2621ea['offset']===_0xc469('0x1b')&&typeof _0x2621ea[_0xc469('0x1c')]===_0xc469('0x1b');var _0xb8ce95=_0x481731[_0xc469('0x1d')];var _0x2f5f81=_0x2ebf8?0x0:_0x2621ea['offset'];var _0x1fae42=_0x2ebf8?_0x481731['count']:_0x2621ea[_0xc469('0x1e')]+_0x2621ea[_0xc469('0x1c')];var _0x1760f8;if(_0x1fae42>=_0xb8ce95){_0x1fae42=_0xb8ce95;_0x1760f8=0xc8;}else{_0x1760f8=0xce;}_0x32381d[_0xc469('0x19')](_0x1760f8);return _0x32381d[_0xc469('0x1f')](_0xc469('0x20'),_0x2f5f81+'-'+_0x1fae42+'/'+_0xb8ce95)[_0xc469('0x1a')](_0x481731);}return null;};}function patchUpdates(_0x19e3d0){return function(_0x7cc3a8){try{jsonpatch['apply'](_0x7cc3a8,_0x19e3d0,!![]);}catch(_0x4dec0a){return BPromise[_0xc469('0x21')](_0x4dec0a);}return _0x7cc3a8[_0xc469('0x22')]();};}function saveUpdates(_0x5ef79e,_0x3aaa55){return function(_0x238841){if(_0x238841){return _0x238841['update'](_0x5ef79e)[_0xc469('0x23')](function(_0x201846){return _0x201846;});}return null;};}function removeEntity(_0x42f912,_0x1d6f4c){return function(_0x20aad6){if(_0x20aad6){return _0x20aad6['destroy']()[_0xc469('0x23')](function(){_0x42f912[_0xc469('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x10ffcd,_0x3fef53){return function(_0x39f33d){if(!_0x39f33d){_0x10ffcd['sendStatus'](0x194);}return _0x39f33d;};}function handleError(_0x380c12,_0x2eeb8f){_0x2eeb8f=_0x2eeb8f||0x1f4;return function(_0x303240){logger[_0xc469('0x24')](_0x303240[_0xc469('0x25')]);if(_0x303240[_0xc469('0x26')]){delete _0x303240[_0xc469('0x26')];}_0x380c12[_0xc469('0x19')](_0x2eeb8f)[_0xc469('0x27')](_0x303240);};}exports[_0xc469('0x28')]=function(_0x24006a,_0x208d9c){var _0x5bea2b={},_0x577ff3={},_0xbc402e={'count':0x0,'rows':[]};var _0x38aad5=_['map'](db[_0xc469('0x29')][_0xc469('0x2a')],function(_0x2f4ac1){return{'name':_0x2f4ac1['fieldName'],'type':_0x2f4ac1[_0xc469('0x2b')][_0xc469('0x2c')]};});_0x577ff3[_0xc469('0x2d')]=_[_0xc469('0x2e')](_0x38aad5,'name');_0x577ff3['query']=_[_0xc469('0x2f')](_0x24006a['query']);_0x577ff3[_0xc469('0x30')]=_[_0xc469('0x31')](_0x577ff3['model'],_0x577ff3[_0xc469('0x32')]);_0x5bea2b[_0xc469('0x33')]=_[_0xc469('0x31')](_0x577ff3[_0xc469('0x2d')],qs[_0xc469('0x34')](_0x24006a[_0xc469('0x32')][_0xc469('0x34')]));_0x5bea2b[_0xc469('0x33')]=_0x5bea2b['attributes'][_0xc469('0x35')]?_0x5bea2b[_0xc469('0x33')]:_0x577ff3['model'];if(!_0x24006a[_0xc469('0x32')]['hasOwnProperty']('nolimit')){_0x5bea2b[_0xc469('0x1c')]=qs[_0xc469('0x1c')](_0x24006a[_0xc469('0x32')][_0xc469('0x1c')]);_0x5bea2b[_0xc469('0x1e')]=qs[_0xc469('0x1e')](_0x24006a['query'][_0xc469('0x1e')]);}_0x5bea2b[_0xc469('0x36')]=qs['sort'](_0x24006a[_0xc469('0x32')][_0xc469('0x37')]);_0x5bea2b['where']=qs['filters'](_[_0xc469('0x38')](_0x24006a[_0xc469('0x32')],_0x577ff3[_0xc469('0x30')]),_0x38aad5);if(_0x24006a[_0xc469('0x32')][_0xc469('0x39')]){_0x5bea2b[_0xc469('0x3a')]=_[_0xc469('0x3b')](_0x5bea2b[_0xc469('0x3a')],{'$or':_[_0xc469('0x2e')](_0x38aad5,function(_0x8d4aba){if(_0x8d4aba[_0xc469('0x2b')]!==_0xc469('0x3c')){var _0x55af19={};_0x55af19[_0x8d4aba[_0xc469('0x26')]]={'$like':'%'+_0x24006a[_0xc469('0x32')][_0xc469('0x39')]+'%'};return _0x55af19;}})});}_0x5bea2b=_[_0xc469('0x3b')]({},_0x5bea2b,_0x24006a[_0xc469('0x3d')]);var _0x1532d7={'where':_0x5bea2b[_0xc469('0x3a')]};return db['SugarcrmConfiguration'][_0xc469('0x1d')](_0x1532d7)[_0xc469('0x23')](function(_0x1a6bac){_0xbc402e['count']=_0x1a6bac;if(_0x24006a[_0xc469('0x32')][_0xc469('0x3e')]){_0x5bea2b[_0xc469('0x3f')]=[{'all':!![]}];}return db['SugarcrmConfiguration']['findAll'](_0x5bea2b);})['then'](function(_0x24dadf){_0xbc402e[_0xc469('0x40')]=_0x24dadf;return _0xbc402e;})[_0xc469('0x23')](respondWithFilteredResult(_0x208d9c,_0x5bea2b))['catch'](handleError(_0x208d9c,null));};exports[_0xc469('0x41')]=function(_0x24fb30,_0x2d2d63){var _0x13112a={'raw':![],'where':{'id':_0x24fb30[_0xc469('0x42')]['id']}},_0x1b73e6={};_0x1b73e6['model']=_[_0xc469('0x2f')](db['SugarcrmConfiguration'][_0xc469('0x2a')]);_0x1b73e6[_0xc469('0x32')]=_['keys'](_0x24fb30['query']);_0x1b73e6[_0xc469('0x30')]=_[_0xc469('0x31')](_0x1b73e6[_0xc469('0x2d')],_0x1b73e6['query']);_0x13112a[_0xc469('0x33')]=_[_0xc469('0x31')](_0x1b73e6[_0xc469('0x2d')],qs[_0xc469('0x34')](_0x24fb30[_0xc469('0x32')][_0xc469('0x34')]));_0x13112a['attributes']=_0x13112a['attributes'][_0xc469('0x35')]?_0x13112a['attributes']:_0x1b73e6['model'];if(_0x24fb30['query'][_0xc469('0x3e')]){_0x13112a[_0xc469('0x3f')]=[{'all':!![]}];}_0x13112a=_['merge']({},_0x13112a,_0x24fb30[_0xc469('0x3d')]);return db['SugarcrmConfiguration'][_0xc469('0x43')](_0x13112a)[_0xc469('0x23')](handleEntityNotFound(_0x2d2d63,null))[_0xc469('0x23')](respondWithResult(_0x2d2d63,null))[_0xc469('0x44')](handleError(_0x2d2d63,null));};exports[_0xc469('0x45')]=function(_0xd76897,_0x4cc28c){return db['SugarcrmConfiguration'][_0xc469('0x45')](_0xd76897[_0xc469('0x46')],{})[_0xc469('0x23')](respondWithResult(_0x4cc28c,0xc9))[_0xc469('0x44')](handleError(_0x4cc28c,null));};exports[_0xc469('0x47')]=function(_0x12a91e,_0x2284b1){if(_0x12a91e[_0xc469('0x46')]['id']){delete _0x12a91e[_0xc469('0x46')]['id'];}return db[_0xc469('0x29')][_0xc469('0x43')]({'where':{'id':_0x12a91e[_0xc469('0x42')]['id']}})[_0xc469('0x23')](handleEntityNotFound(_0x2284b1,null))[_0xc469('0x23')](saveUpdates(_0x12a91e[_0xc469('0x46')],null))[_0xc469('0x23')](respondWithResult(_0x2284b1,null))[_0xc469('0x44')](handleError(_0x2284b1,null));};exports[_0xc469('0x48')]=function(_0x146132,_0x147997){return db[_0xc469('0x29')][_0xc469('0x43')]({'where':{'id':_0x146132[_0xc469('0x42')]['id']}})['then'](handleEntityNotFound(_0x147997,null))[_0xc469('0x23')](removeEntity(_0x147997,null))[_0xc469('0x44')](handleError(_0x147997,null));};exports[_0xc469('0x49')]=function(_0x523f7c,_0x5522d9,_0x4b8636){var _0x9cd90e={};var _0x21a206={};var _0x31d2c6;var _0x442f06;return db[_0xc469('0x29')][_0xc469('0x4a')]({'where':{'id':_0x523f7c[_0xc469('0x42')]['id']}})[_0xc469('0x23')](handleEntityNotFound(_0x5522d9,null))[_0xc469('0x23')](function(_0x17f3da){if(_0x17f3da){_0x31d2c6=_0x17f3da;_0x21a206[_0xc469('0x2d')]=_[_0xc469('0x2f')](db[_0xc469('0x4b')]['rawAttributes']);_0x21a206[_0xc469('0x32')]=_[_0xc469('0x2f')](_0x523f7c[_0xc469('0x32')]);_0x21a206[_0xc469('0x30')]=_[_0xc469('0x31')](_0x21a206[_0xc469('0x2d')],_0x21a206[_0xc469('0x32')]);_0x9cd90e[_0xc469('0x33')]=_[_0xc469('0x31')](_0x21a206[_0xc469('0x2d')],qs[_0xc469('0x34')](_0x523f7c['query'][_0xc469('0x34')]));_0x9cd90e[_0xc469('0x33')]=_0x9cd90e[_0xc469('0x33')][_0xc469('0x35')]?_0x9cd90e['attributes']:_0x21a206[_0xc469('0x2d')];_0x9cd90e[_0xc469('0x36')]=qs[_0xc469('0x37')](_0x523f7c['query'][_0xc469('0x37')]);_0x9cd90e['where']=qs[_0xc469('0x30')](_[_0xc469('0x38')](_0x523f7c['query'],_0x21a206[_0xc469('0x30')]));if(_0x523f7c[_0xc469('0x32')][_0xc469('0x39')]){_0x9cd90e[_0xc469('0x3a')]=_[_0xc469('0x3b')](_0x9cd90e['where'],{'$or':_[_0xc469('0x2e')](_0x9cd90e[_0xc469('0x33')],function(_0x324d92){var _0x572666={};_0x572666[_0x324d92]={'$like':'%'+_0x523f7c[_0xc469('0x32')]['filter']+'%'};return _0x572666;})});}_0x9cd90e=_['merge']({},_0x9cd90e,_0x523f7c['options']);return _0x31d2c6[_0xc469('0x49')](_0x9cd90e);}})['then'](function(_0x29dca5){if(_0x29dca5){_0x442f06=_0x29dca5[_0xc469('0x35')];if(!_0x523f7c[_0xc469('0x32')][_0xc469('0x4c')](_0xc469('0x4d'))){_0x9cd90e['limit']=qs[_0xc469('0x1c')](_0x523f7c[_0xc469('0x32')][_0xc469('0x1c')]);_0x9cd90e[_0xc469('0x1e')]=qs[_0xc469('0x1e')](_0x523f7c[_0xc469('0x32')][_0xc469('0x1e')]);}return _0x31d2c6[_0xc469('0x49')](_0x9cd90e);}})['then'](function(_0x4ce3ee){if(_0x4ce3ee){return _0x4ce3ee?{'count':_0x442f06,'rows':_0x4ce3ee}:null;}})[_0xc469('0x23')](respondWithResult(_0x5522d9,null))[_0xc469('0x44')](handleError(_0x5522d9,null));};exports[_0xc469('0x4e')]=function(_0x2bc80c,_0xf802a0,_0x50cac3){var _0x382b67={};var _0x2ddffa={};var _0x548722;var _0x506e1a;return db[_0xc469('0x29')][_0xc469('0x4a')]({'where':{'id':_0x2bc80c['params']['id']}})['then'](handleEntityNotFound(_0xf802a0,null))['then'](function(_0x255ae9){if(_0x255ae9){_0x548722=_0x255ae9;_0x2ddffa['model']=_['keys'](db[_0xc469('0x4b')][_0xc469('0x2a')]);_0x2ddffa[_0xc469('0x32')]=_['keys'](_0x2bc80c['query']);_0x2ddffa[_0xc469('0x30')]=_[_0xc469('0x31')](_0x2ddffa[_0xc469('0x2d')],_0x2ddffa[_0xc469('0x32')]);_0x382b67[_0xc469('0x33')]=_['intersection'](_0x2ddffa[_0xc469('0x2d')],qs[_0xc469('0x34')](_0x2bc80c['query'][_0xc469('0x34')]));_0x382b67[_0xc469('0x33')]=_0x382b67['attributes'][_0xc469('0x35')]?_0x382b67[_0xc469('0x33')]:_0x2ddffa[_0xc469('0x2d')];_0x382b67[_0xc469('0x36')]=qs[_0xc469('0x37')](_0x2bc80c[_0xc469('0x32')]['sort']);_0x382b67['where']=qs[_0xc469('0x30')](_[_0xc469('0x38')](_0x2bc80c[_0xc469('0x32')],_0x2ddffa[_0xc469('0x30')]));if(_0x2bc80c[_0xc469('0x32')]['filter']){_0x382b67[_0xc469('0x3a')]=_[_0xc469('0x3b')](_0x382b67[_0xc469('0x3a')],{'$or':_[_0xc469('0x2e')](_0x382b67[_0xc469('0x33')],function(_0x31cf66){var _0x5c1698={};_0x5c1698[_0x31cf66]={'$like':'%'+_0x2bc80c['query'][_0xc469('0x39')]+'%'};return _0x5c1698;})});}_0x382b67=_[_0xc469('0x3b')]({},_0x382b67,_0x2bc80c[_0xc469('0x3d')]);return _0x548722['getSubjects'](_0x382b67);}})[_0xc469('0x23')](function(_0x5b8e2d){if(_0x5b8e2d){_0x506e1a=_0x5b8e2d[_0xc469('0x35')];if(!_0x2bc80c['query']['hasOwnProperty']('nolimit')){_0x382b67['limit']=qs['limit'](_0x2bc80c[_0xc469('0x32')][_0xc469('0x1c')]);_0x382b67[_0xc469('0x1e')]=qs[_0xc469('0x1e')](_0x2bc80c[_0xc469('0x32')][_0xc469('0x1e')]);}return _0x548722[_0xc469('0x4e')](_0x382b67);}})[_0xc469('0x23')](function(_0x515a24){if(_0x515a24){return _0x515a24?{'count':_0x506e1a,'rows':_0x515a24}:null;}})[_0xc469('0x23')](respondWithResult(_0xf802a0,null))[_0xc469('0x44')](handleError(_0xf802a0,null));};exports[_0xc469('0x4f')]=function(_0x409c0c,_0x2060c7,_0x189fb3){var _0x2a910a={};var _0x3f9d4a={};var _0x4d446d;var _0x2c5cd4;return db['SugarcrmConfiguration'][_0xc469('0x4a')]({'where':{'id':_0x409c0c[_0xc469('0x42')]['id']}})['then'](handleEntityNotFound(_0x2060c7,null))[_0xc469('0x23')](function(_0x57793e){if(_0x57793e){_0x4d446d=_0x57793e;_0x3f9d4a[_0xc469('0x2d')]=_[_0xc469('0x2f')](db[_0xc469('0x4b')][_0xc469('0x2a')]);_0x3f9d4a[_0xc469('0x32')]=_[_0xc469('0x2f')](_0x409c0c[_0xc469('0x32')]);_0x3f9d4a[_0xc469('0x30')]=_[_0xc469('0x31')](_0x3f9d4a[_0xc469('0x2d')],_0x3f9d4a[_0xc469('0x32')]);_0x2a910a[_0xc469('0x33')]=_[_0xc469('0x31')](_0x3f9d4a[_0xc469('0x2d')],qs[_0xc469('0x34')](_0x409c0c[_0xc469('0x32')][_0xc469('0x34')]));_0x2a910a[_0xc469('0x33')]=_0x2a910a[_0xc469('0x33')][_0xc469('0x35')]?_0x2a910a[_0xc469('0x33')]:_0x3f9d4a[_0xc469('0x2d')];_0x2a910a[_0xc469('0x36')]=qs[_0xc469('0x37')](_0x409c0c[_0xc469('0x32')][_0xc469('0x37')]);_0x2a910a[_0xc469('0x3a')]=qs['filters'](_[_0xc469('0x38')](_0x409c0c[_0xc469('0x32')],_0x3f9d4a[_0xc469('0x30')]));if(_0x409c0c[_0xc469('0x32')][_0xc469('0x39')]){_0x2a910a[_0xc469('0x3a')]=_[_0xc469('0x3b')](_0x2a910a['where'],{'$or':_['map'](_0x2a910a[_0xc469('0x33')],function(_0x2c5158){var _0x2fa915={};_0x2fa915[_0x2c5158]={'$like':'%'+_0x409c0c[_0xc469('0x32')][_0xc469('0x39')]+'%'};return _0x2fa915;})});}_0x2a910a=_['merge']({},_0x2a910a,_0x409c0c[_0xc469('0x3d')]);return _0x4d446d[_0xc469('0x4f')](_0x2a910a);}})['then'](function(_0x429eec){if(_0x429eec){_0x2c5cd4=_0x429eec[_0xc469('0x35')];if(!_0x409c0c['query']['hasOwnProperty'](_0xc469('0x4d'))){_0x2a910a[_0xc469('0x1c')]=qs[_0xc469('0x1c')](_0x409c0c[_0xc469('0x32')][_0xc469('0x1c')]);_0x2a910a[_0xc469('0x1e')]=qs[_0xc469('0x1e')](_0x409c0c[_0xc469('0x32')][_0xc469('0x1e')]);}return _0x4d446d[_0xc469('0x4f')](_0x2a910a);}})[_0xc469('0x23')](function(_0xba2dec){if(_0xba2dec){return _0xba2dec?{'count':_0x2c5cd4,'rows':_0xba2dec}:null;}})[_0xc469('0x23')](respondWithResult(_0x2060c7,null))[_0xc469('0x44')](handleError(_0x2060c7,null));};
\ No newline at end of file
+var _0x8663=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','SugarcrmConfiguration','rawAttributes','fieldName','type','key','query','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','options','include','findAll','rows','catch','show','params','keys','includeAll','find','create','body','getFields','SugarcrmField','nolimit','findOne','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis'];(function(_0x3664b2,_0x521f37){var _0x35fcbb=function(_0x1d32d7){while(--_0x1d32d7){_0x3664b2['push'](_0x3664b2['shift']());}};_0x35fcbb(++_0x521f37);}(_0x8663,0x19a));var _0x3866=function(_0x468e0e,_0x153833){_0x468e0e=_0x468e0e-0x0;var _0x454c80=_0x8663[_0x468e0e];return _0x454c80;};'use strict';var emlformat=require(_0x3866('0x0'));var rimraf=require(_0x3866('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3866('0x2'));var rp=require(_0x3866('0x3'));var moment=require(_0x3866('0x4'));var BPromise=require(_0x3866('0x5'));var Mustache=require(_0x3866('0x6'));var util=require(_0x3866('0x7'));var path=require(_0x3866('0x8'));var sox=require(_0x3866('0x9'));var csv=require('to-csv');var ejs=require(_0x3866('0xa'));var fs=require('fs');var fs_extra=require(_0x3866('0xb'));var _=require(_0x3866('0xc'));var squel=require('squel');var crypto=require(_0x3866('0xd'));var jsforce=require(_0x3866('0xe'));var deskjs=require(_0x3866('0xf'));var toCsv=require(_0x3866('0x10'));var querystring=require(_0x3866('0x11'));var Papa=require(_0x3866('0x12'));var Redis=require(_0x3866('0x13'));var authService=require(_0x3866('0x14'));var qs=require(_0x3866('0x15'));var as=require(_0x3866('0x16'));var hardwareService=require(_0x3866('0x17'));var logger=require(_0x3866('0x18'))(_0x3866('0x19'));var utils=require('../../config/utils');var config=require(_0x3866('0x1a'));var licenseUtil=require(_0x3866('0x1b'));var db=require(_0x3866('0x1c'))['db'];function respondWithStatusCode(_0x398edc,_0x5de597){_0x5de597=_0x5de597||0xcc;return function(_0x218278){if(_0x218278){return _0x398edc[_0x3866('0x1d')](_0x5de597);}return _0x398edc[_0x3866('0x1e')](_0x5de597)[_0x3866('0x1f')]();};}function respondWithResult(_0x3c4f23,_0x1d1185){_0x1d1185=_0x1d1185||0xc8;return function(_0xd85e59){if(_0xd85e59){return _0x3c4f23['status'](_0x1d1185)['json'](_0xd85e59);}};}function respondWithFilteredResult(_0x11f0cf,_0x49d6b5){return function(_0x12bb7c){if(_0x12bb7c){var _0x2f911d=typeof _0x49d6b5['offset']===_0x3866('0x20')&&typeof _0x49d6b5[_0x3866('0x21')]===_0x3866('0x20');var _0xd49e91=_0x12bb7c[_0x3866('0x22')];var _0x4792c5=_0x2f911d?0x0:_0x49d6b5[_0x3866('0x23')];var _0x2e31e4=_0x2f911d?_0x12bb7c[_0x3866('0x22')]:_0x49d6b5[_0x3866('0x23')]+_0x49d6b5[_0x3866('0x21')];var _0x4fbdb4;if(_0x2e31e4>=_0xd49e91){_0x2e31e4=_0xd49e91;_0x4fbdb4=0xc8;}else{_0x4fbdb4=0xce;}_0x11f0cf[_0x3866('0x1e')](_0x4fbdb4);return _0x11f0cf[_0x3866('0x24')](_0x3866('0x25'),_0x4792c5+'-'+_0x2e31e4+'/'+_0xd49e91)['json'](_0x12bb7c);}return null;};}function patchUpdates(_0x50a78b){return function(_0x1a484b){try{jsonpatch[_0x3866('0x26')](_0x1a484b,_0x50a78b,!![]);}catch(_0x4a04e4){return BPromise[_0x3866('0x27')](_0x4a04e4);}return _0x1a484b['save']();};}function saveUpdates(_0x4b7a2b,_0xf6332c){return function(_0x1847dd){if(_0x1847dd){return _0x1847dd[_0x3866('0x28')](_0x4b7a2b)[_0x3866('0x29')](function(_0x2b9e64){return _0x2b9e64;});}return null;};}function removeEntity(_0x2dbaf6,_0x3533d6){return function(_0x2e167d){if(_0x2e167d){return _0x2e167d[_0x3866('0x2a')]()[_0x3866('0x29')](function(){_0x2dbaf6[_0x3866('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x26e1e4,_0x46f570){return function(_0x6f6a5b){if(!_0x6f6a5b){_0x26e1e4[_0x3866('0x1d')](0x194);}return _0x6f6a5b;};}function handleError(_0x315e5a,_0x53a22e){_0x53a22e=_0x53a22e||0x1f4;return function(_0x892d90){logger[_0x3866('0x2b')](_0x892d90[_0x3866('0x2c')]);if(_0x892d90[_0x3866('0x2d')]){delete _0x892d90['name'];}_0x315e5a['status'](_0x53a22e)[_0x3866('0x2e')](_0x892d90);};}exports[_0x3866('0x2f')]=function(_0x43a7ad,_0x54fefa){var _0x1b205e={},_0x4ffb64={},_0x4f43b5={'count':0x0,'rows':[]};var _0x2af53f=_[_0x3866('0x30')](db[_0x3866('0x31')][_0x3866('0x32')],function(_0x486c99){return{'name':_0x486c99[_0x3866('0x33')],'type':_0x486c99[_0x3866('0x34')][_0x3866('0x35')]};});_0x4ffb64['model']=_[_0x3866('0x30')](_0x2af53f,_0x3866('0x2d'));_0x4ffb64[_0x3866('0x36')]=_['keys'](_0x43a7ad['query']);_0x4ffb64['filters']=_[_0x3866('0x37')](_0x4ffb64[_0x3866('0x38')],_0x4ffb64['query']);_0x1b205e[_0x3866('0x39')]=_[_0x3866('0x37')](_0x4ffb64[_0x3866('0x38')],qs[_0x3866('0x3a')](_0x43a7ad[_0x3866('0x36')][_0x3866('0x3a')]));_0x1b205e[_0x3866('0x39')]=_0x1b205e[_0x3866('0x39')][_0x3866('0x3b')]?_0x1b205e['attributes']:_0x4ffb64['model'];if(!_0x43a7ad['query'][_0x3866('0x3c')]('nolimit')){_0x1b205e['limit']=qs[_0x3866('0x21')](_0x43a7ad[_0x3866('0x36')][_0x3866('0x21')]);_0x1b205e[_0x3866('0x23')]=qs[_0x3866('0x23')](_0x43a7ad['query'][_0x3866('0x23')]);}_0x1b205e[_0x3866('0x3d')]=qs['sort'](_0x43a7ad[_0x3866('0x36')][_0x3866('0x3e')]);_0x1b205e[_0x3866('0x3f')]=qs[_0x3866('0x40')](_[_0x3866('0x41')](_0x43a7ad[_0x3866('0x36')],_0x4ffb64['filters']),_0x2af53f);if(_0x43a7ad['query'][_0x3866('0x42')]){_0x1b205e[_0x3866('0x3f')]=_[_0x3866('0x43')](_0x1b205e[_0x3866('0x3f')],{'$or':_[_0x3866('0x30')](_0x2af53f,function(_0x850a44){if(_0x850a44['type']!=='VIRTUAL'){var _0x1778e4={};_0x1778e4[_0x850a44[_0x3866('0x2d')]]={'$like':'%'+_0x43a7ad[_0x3866('0x36')][_0x3866('0x42')]+'%'};return _0x1778e4;}})});}_0x1b205e=_['merge']({},_0x1b205e,_0x43a7ad[_0x3866('0x44')]);var _0xd8ef63={'where':_0x1b205e['where']};return db[_0x3866('0x31')][_0x3866('0x22')](_0xd8ef63)[_0x3866('0x29')](function(_0x4ceab4){_0x4f43b5[_0x3866('0x22')]=_0x4ceab4;if(_0x43a7ad[_0x3866('0x36')]['includeAll']){_0x1b205e[_0x3866('0x45')]=[{'all':!![]}];}return db['SugarcrmConfiguration'][_0x3866('0x46')](_0x1b205e);})[_0x3866('0x29')](function(_0x3cfeff){_0x4f43b5[_0x3866('0x47')]=_0x3cfeff;return _0x4f43b5;})[_0x3866('0x29')](respondWithFilteredResult(_0x54fefa,_0x1b205e))[_0x3866('0x48')](handleError(_0x54fefa,null));};exports[_0x3866('0x49')]=function(_0xaee528,_0x1cee25){var _0x850493={'raw':![],'where':{'id':_0xaee528[_0x3866('0x4a')]['id']}},_0x290523={};_0x290523[_0x3866('0x38')]=_['keys'](db[_0x3866('0x31')][_0x3866('0x32')]);_0x290523['query']=_[_0x3866('0x4b')](_0xaee528[_0x3866('0x36')]);_0x290523[_0x3866('0x40')]=_[_0x3866('0x37')](_0x290523[_0x3866('0x38')],_0x290523[_0x3866('0x36')]);_0x850493[_0x3866('0x39')]=_[_0x3866('0x37')](_0x290523[_0x3866('0x38')],qs[_0x3866('0x3a')](_0xaee528[_0x3866('0x36')][_0x3866('0x3a')]));_0x850493[_0x3866('0x39')]=_0x850493[_0x3866('0x39')][_0x3866('0x3b')]?_0x850493[_0x3866('0x39')]:_0x290523[_0x3866('0x38')];if(_0xaee528[_0x3866('0x36')][_0x3866('0x4c')]){_0x850493[_0x3866('0x45')]=[{'all':!![]}];}_0x850493=_[_0x3866('0x43')]({},_0x850493,_0xaee528[_0x3866('0x44')]);return db[_0x3866('0x31')][_0x3866('0x4d')](_0x850493)[_0x3866('0x29')](handleEntityNotFound(_0x1cee25,null))['then'](respondWithResult(_0x1cee25,null))[_0x3866('0x48')](handleError(_0x1cee25,null));};exports['create']=function(_0x4eb029,_0x32c9d3){return db[_0x3866('0x31')][_0x3866('0x4e')](_0x4eb029['body'],{})[_0x3866('0x29')](respondWithResult(_0x32c9d3,0xc9))['catch'](handleError(_0x32c9d3,null));};exports[_0x3866('0x28')]=function(_0x328d93,_0x5c312d){if(_0x328d93[_0x3866('0x4f')]['id']){delete _0x328d93['body']['id'];}return db[_0x3866('0x31')][_0x3866('0x4d')]({'where':{'id':_0x328d93[_0x3866('0x4a')]['id']}})[_0x3866('0x29')](handleEntityNotFound(_0x5c312d,null))['then'](saveUpdates(_0x328d93['body'],null))[_0x3866('0x29')](respondWithResult(_0x5c312d,null))[_0x3866('0x48')](handleError(_0x5c312d,null));};exports[_0x3866('0x2a')]=function(_0x468c12,_0x44af21){return db[_0x3866('0x31')][_0x3866('0x4d')]({'where':{'id':_0x468c12[_0x3866('0x4a')]['id']}})[_0x3866('0x29')](handleEntityNotFound(_0x44af21,null))[_0x3866('0x29')](removeEntity(_0x44af21,null))[_0x3866('0x48')](handleError(_0x44af21,null));};exports[_0x3866('0x50')]=function(_0x40a2c8,_0x1f0711,_0x38985b){var _0x1970ab={};var _0x1f5c6a={};var _0x41ad90;var _0x2fcd5f;return db[_0x3866('0x31')]['findOne']({'where':{'id':_0x40a2c8[_0x3866('0x4a')]['id']}})[_0x3866('0x29')](handleEntityNotFound(_0x1f0711,null))[_0x3866('0x29')](function(_0x21a60b){if(_0x21a60b){_0x41ad90=_0x21a60b;_0x1f5c6a[_0x3866('0x38')]=_[_0x3866('0x4b')](db[_0x3866('0x51')]['rawAttributes']);_0x1f5c6a['query']=_['keys'](_0x40a2c8[_0x3866('0x36')]);_0x1f5c6a[_0x3866('0x40')]=_['intersection'](_0x1f5c6a['model'],_0x1f5c6a[_0x3866('0x36')]);_0x1970ab['attributes']=_['intersection'](_0x1f5c6a[_0x3866('0x38')],qs[_0x3866('0x3a')](_0x40a2c8['query'][_0x3866('0x3a')]));_0x1970ab[_0x3866('0x39')]=_0x1970ab['attributes'][_0x3866('0x3b')]?_0x1970ab['attributes']:_0x1f5c6a[_0x3866('0x38')];_0x1970ab[_0x3866('0x3d')]=qs[_0x3866('0x3e')](_0x40a2c8[_0x3866('0x36')]['sort']);_0x1970ab[_0x3866('0x3f')]=qs[_0x3866('0x40')](_[_0x3866('0x41')](_0x40a2c8[_0x3866('0x36')],_0x1f5c6a[_0x3866('0x40')]));if(_0x40a2c8['query']['filter']){_0x1970ab['where']=_['merge'](_0x1970ab[_0x3866('0x3f')],{'$or':_[_0x3866('0x30')](_0x1970ab[_0x3866('0x39')],function(_0x52e5c9){var _0x14c731={};_0x14c731[_0x52e5c9]={'$like':'%'+_0x40a2c8[_0x3866('0x36')][_0x3866('0x42')]+'%'};return _0x14c731;})});}_0x1970ab=_['merge']({},_0x1970ab,_0x40a2c8[_0x3866('0x44')]);return _0x41ad90[_0x3866('0x50')](_0x1970ab);}})[_0x3866('0x29')](function(_0xa58694){if(_0xa58694){_0x2fcd5f=_0xa58694[_0x3866('0x3b')];if(!_0x40a2c8[_0x3866('0x36')]['hasOwnProperty'](_0x3866('0x52'))){_0x1970ab[_0x3866('0x21')]=qs[_0x3866('0x21')](_0x40a2c8[_0x3866('0x36')]['limit']);_0x1970ab[_0x3866('0x23')]=qs['offset'](_0x40a2c8[_0x3866('0x36')]['offset']);}return _0x41ad90[_0x3866('0x50')](_0x1970ab);}})[_0x3866('0x29')](function(_0x56946a){if(_0x56946a){return _0x56946a?{'count':_0x2fcd5f,'rows':_0x56946a}:null;}})[_0x3866('0x29')](respondWithResult(_0x1f0711,null))['catch'](handleError(_0x1f0711,null));};exports['getSubjects']=function(_0x32a97a,_0x5d4217,_0x18c61a){var _0x33d7fc={};var _0x13a1bd={};var _0x516bd1;var _0x166ad4;return db[_0x3866('0x31')][_0x3866('0x53')]({'where':{'id':_0x32a97a[_0x3866('0x4a')]['id']}})[_0x3866('0x29')](handleEntityNotFound(_0x5d4217,null))['then'](function(_0x23a6ea){if(_0x23a6ea){_0x516bd1=_0x23a6ea;_0x13a1bd[_0x3866('0x38')]=_[_0x3866('0x4b')](db[_0x3866('0x51')][_0x3866('0x32')]);_0x13a1bd[_0x3866('0x36')]=_[_0x3866('0x4b')](_0x32a97a[_0x3866('0x36')]);_0x13a1bd[_0x3866('0x40')]=_[_0x3866('0x37')](_0x13a1bd[_0x3866('0x38')],_0x13a1bd[_0x3866('0x36')]);_0x33d7fc[_0x3866('0x39')]=_[_0x3866('0x37')](_0x13a1bd[_0x3866('0x38')],qs['fields'](_0x32a97a[_0x3866('0x36')][_0x3866('0x3a')]));_0x33d7fc[_0x3866('0x39')]=_0x33d7fc['attributes'][_0x3866('0x3b')]?_0x33d7fc['attributes']:_0x13a1bd[_0x3866('0x38')];_0x33d7fc['order']=qs[_0x3866('0x3e')](_0x32a97a[_0x3866('0x36')]['sort']);_0x33d7fc[_0x3866('0x3f')]=qs['filters'](_[_0x3866('0x41')](_0x32a97a['query'],_0x13a1bd['filters']));if(_0x32a97a[_0x3866('0x36')]['filter']){_0x33d7fc[_0x3866('0x3f')]=_[_0x3866('0x43')](_0x33d7fc[_0x3866('0x3f')],{'$or':_[_0x3866('0x30')](_0x33d7fc['attributes'],function(_0x775339){var _0x242bd3={};_0x242bd3[_0x775339]={'$like':'%'+_0x32a97a[_0x3866('0x36')][_0x3866('0x42')]+'%'};return _0x242bd3;})});}_0x33d7fc=_[_0x3866('0x43')]({},_0x33d7fc,_0x32a97a[_0x3866('0x44')]);return _0x516bd1[_0x3866('0x54')](_0x33d7fc);}})[_0x3866('0x29')](function(_0x3f5104){if(_0x3f5104){_0x166ad4=_0x3f5104[_0x3866('0x3b')];if(!_0x32a97a[_0x3866('0x36')][_0x3866('0x3c')]('nolimit')){_0x33d7fc[_0x3866('0x21')]=qs[_0x3866('0x21')](_0x32a97a[_0x3866('0x36')]['limit']);_0x33d7fc[_0x3866('0x23')]=qs['offset'](_0x32a97a[_0x3866('0x36')]['offset']);}return _0x516bd1[_0x3866('0x54')](_0x33d7fc);}})[_0x3866('0x29')](function(_0x1fd2b2){if(_0x1fd2b2){return _0x1fd2b2?{'count':_0x166ad4,'rows':_0x1fd2b2}:null;}})[_0x3866('0x29')](respondWithResult(_0x5d4217,null))[_0x3866('0x48')](handleError(_0x5d4217,null));};exports['getDescriptions']=function(_0x2ca54d,_0x359e07,_0x2a0b0c){var _0x46b2f9={};var _0x13e519={};var _0x30a627;var _0x44c2c2;return db[_0x3866('0x31')][_0x3866('0x53')]({'where':{'id':_0x2ca54d[_0x3866('0x4a')]['id']}})[_0x3866('0x29')](handleEntityNotFound(_0x359e07,null))['then'](function(_0x2700ac){if(_0x2700ac){_0x30a627=_0x2700ac;_0x13e519[_0x3866('0x38')]=_[_0x3866('0x4b')](db[_0x3866('0x51')][_0x3866('0x32')]);_0x13e519[_0x3866('0x36')]=_[_0x3866('0x4b')](_0x2ca54d['query']);_0x13e519[_0x3866('0x40')]=_[_0x3866('0x37')](_0x13e519[_0x3866('0x38')],_0x13e519[_0x3866('0x36')]);_0x46b2f9[_0x3866('0x39')]=_[_0x3866('0x37')](_0x13e519['model'],qs['fields'](_0x2ca54d[_0x3866('0x36')][_0x3866('0x3a')]));_0x46b2f9['attributes']=_0x46b2f9['attributes'][_0x3866('0x3b')]?_0x46b2f9['attributes']:_0x13e519[_0x3866('0x38')];_0x46b2f9[_0x3866('0x3d')]=qs[_0x3866('0x3e')](_0x2ca54d[_0x3866('0x36')][_0x3866('0x3e')]);_0x46b2f9[_0x3866('0x3f')]=qs[_0x3866('0x40')](_[_0x3866('0x41')](_0x2ca54d[_0x3866('0x36')],_0x13e519[_0x3866('0x40')]));if(_0x2ca54d[_0x3866('0x36')]['filter']){_0x46b2f9['where']=_[_0x3866('0x43')](_0x46b2f9[_0x3866('0x3f')],{'$or':_[_0x3866('0x30')](_0x46b2f9[_0x3866('0x39')],function(_0x2785d1){var _0xb188cb={};_0xb188cb[_0x2785d1]={'$like':'%'+_0x2ca54d[_0x3866('0x36')]['filter']+'%'};return _0xb188cb;})});}_0x46b2f9=_[_0x3866('0x43')]({},_0x46b2f9,_0x2ca54d[_0x3866('0x44')]);return _0x30a627['getDescriptions'](_0x46b2f9);}})[_0x3866('0x29')](function(_0x31244b){if(_0x31244b){_0x44c2c2=_0x31244b[_0x3866('0x3b')];if(!_0x2ca54d[_0x3866('0x36')]['hasOwnProperty'](_0x3866('0x52'))){_0x46b2f9[_0x3866('0x21')]=qs[_0x3866('0x21')](_0x2ca54d['query'][_0x3866('0x21')]);_0x46b2f9[_0x3866('0x23')]=qs[_0x3866('0x23')](_0x2ca54d['query']['offset']);}return _0x30a627[_0x3866('0x55')](_0x46b2f9);}})[_0x3866('0x29')](function(_0x5cae2e){if(_0x5cae2e){return _0x5cae2e?{'count':_0x44c2c2,'rows':_0x5cae2e}:null;}})[_0x3866('0x29')](respondWithResult(_0x359e07,null))[_0x3866('0x48')](handleError(_0x359e07,null));};
\ No newline at end of file
index 1594455..67218f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a64=['bluebird','../../config/environment','./intSugarcrmConfiguration.attributes','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','api'];(function(_0x4036b0,_0x495c27){var _0x4aebe0=function(_0x186452){while(--_0x186452){_0x4036b0['push'](_0x4036b0['shift']());}};_0x4aebe0(++_0x495c27);}(_0x2a64,0xfa));var _0x42a6=function(_0x1065a6,_0x1d01f5){_0x1065a6=_0x1065a6-0x0;var _0x57544b=_0x2a64[_0x1065a6];return _0x57544b;};'use strict';var _=require(_0x42a6('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x42a6('0x1'));var moment=require('moment');var BPromise=require(_0x42a6('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x42a6('0x3'));var attributes=require(_0x42a6('0x4'));module[_0x42a6('0x5')]=function(_0x4db007,_0x576f6f){return _0x4db007[_0x42a6('0x6')](_0x42a6('0x7'),attributes,{'tableName':_0x42a6('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x93bf=['util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','exports','define','lodash'];(function(_0x44440c,_0x24fae6){var _0x410a5d=function(_0x19cc18){while(--_0x19cc18){_0x44440c['push'](_0x44440c['shift']());}};_0x410a5d(++_0x24fae6);}(_0x93bf,0x121));var _0xf93b=function(_0x171143,_0x68a3fd){_0x171143=_0x171143-0x0;var _0x3b4dd6=_0x93bf[_0x171143];return _0x3b4dd6;};'use strict';var _=require(_0xf93b('0x0'));var util=require(_0xf93b('0x1'));var logger=require(_0xf93b('0x2'))(_0xf93b('0x3'));var moment=require(_0xf93b('0x4'));var BPromise=require(_0xf93b('0x5'));var rp=require(_0xf93b('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf93b('0x7'));var attributes=require('./intSugarcrmConfiguration.attributes');module[_0xf93b('0x8')]=function(_0x50ec5a,_0x5aabc2){return _0x50ec5a[_0xf93b('0x9')]('SugarcrmConfiguration',attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dc74957..ecad612 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66b9=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment'];(function(_0x4cb9d5,_0x187d5a){var _0x444523=function(_0x46497c){while(--_0x46497c){_0x4cb9d5['push'](_0x4cb9d5['shift']());}};_0x444523(++_0x187d5a);}(_0x66b9,0x1e0));var _0x966b=function(_0x10b2e5,_0xc2f0ed){_0x10b2e5=_0x10b2e5-0x0;var _0x5b9939=_0x66b9[_0x10b2e5];return _0x5b9939;};'use strict';var _=require(_0x966b('0x0'));var util=require(_0x966b('0x1'));var moment=require(_0x966b('0x2'));var BPromise=require('bluebird');var rs=require(_0x966b('0x3'));var fs=require('fs');var Redis=require(_0x966b('0x4'));var db=require(_0x966b('0x5'))['db'];var utils=require(_0x966b('0x6'));var logger=require(_0x966b('0x7'))('rpc');var config=require(_0x966b('0x8'));var jayson=require(_0x966b('0x9'));var client=jayson['client'][_0x966b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4a8924,_0x5d04a3,_0x18456d){return new BPromise(function(_0x352633,_0x11a899){return client[_0x966b('0xb')](_0x4a8924,_0x18456d)['then'](function(_0x3bee61){logger[_0x966b('0xc')](_0x966b('0xd'),_0x5d04a3,_0x966b('0xe'));logger[_0x966b('0xf')](_0x966b('0x10'),_0x5d04a3,_0x966b('0xe'),JSON['stringify'](_0x3bee61));if(_0x3bee61['error']){if(_0x3bee61[_0x966b('0x11')]['code']===0x1f4){logger[_0x966b('0x11')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x5d04a3,_0x3bee61[_0x966b('0x11')]['message']);return _0x11a899(_0x3bee61[_0x966b('0x11')][_0x966b('0x12')]);}logger[_0x966b('0x11')](_0x966b('0xd'),_0x5d04a3,_0x3bee61[_0x966b('0x11')][_0x966b('0x12')]);return _0x352633(_0x3bee61[_0x966b('0x11')][_0x966b('0x12')]);}else{logger['info']('SugarcrmConfiguration,\x20%s,\x20%s',_0x5d04a3,'request\x20sent');_0x352633(_0x3bee61[_0x966b('0x13')][_0x966b('0x12')]);}})[_0x966b('0x14')](function(_0x352db1){logger[_0x966b('0x11')](_0x966b('0xd'),_0x5d04a3,_0x352db1);_0x11a899(_0x352db1);});});}
\ No newline at end of file
+var _0x8db3=['../../config/environment','jayson/promise','client','request','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x119d5a,_0x19b457){var _0x15bff4=function(_0x1b7c78){while(--_0x1b7c78){_0x119d5a['push'](_0x119d5a['shift']());}};_0x15bff4(++_0x19b457);}(_0x8db3,0x161));var _0x38db=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x8db3[_0x502c7d];return _0x30b7ed;};'use strict';var _=require('lodash');var util=require(_0x38db('0x0'));var moment=require('moment');var BPromise=require(_0x38db('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x38db('0x2'));var db=require(_0x38db('0x3'))['db'];var utils=require(_0x38db('0x4'));var logger=require(_0x38db('0x5'))(_0x38db('0x6'));var config=require(_0x38db('0x7'));var jayson=require(_0x38db('0x8'));var client=jayson[_0x38db('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x21f7ad,_0xe14d94,_0x4077c5){return new BPromise(function(_0x4b3e86,_0x59a48c){return client[_0x38db('0xa')](_0x21f7ad,_0x4077c5)['then'](function(_0x18da2c){logger[_0x38db('0xb')](_0x38db('0xc'),_0xe14d94,_0x38db('0xd'));logger[_0x38db('0xe')](_0x38db('0xf'),_0xe14d94,_0x38db('0xd'),JSON[_0x38db('0x10')](_0x18da2c));if(_0x18da2c[_0x38db('0x11')]){if(_0x18da2c[_0x38db('0x11')]['code']===0x1f4){logger[_0x38db('0x11')](_0x38db('0xc'),_0xe14d94,_0x18da2c['error'][_0x38db('0x12')]);return _0x59a48c(_0x18da2c[_0x38db('0x11')]['message']);}logger[_0x38db('0x11')](_0x38db('0xc'),_0xe14d94,_0x18da2c[_0x38db('0x11')][_0x38db('0x12')]);return _0x4b3e86(_0x18da2c[_0x38db('0x11')][_0x38db('0x12')]);}else{logger[_0x38db('0xb')](_0x38db('0xc'),_0xe14d94,_0x38db('0xd'));_0x4b3e86(_0x18da2c['result'][_0x38db('0x12')]);}})[_0x38db('0x13')](function(_0x8dbf59){logger[_0x38db('0x11')]('SugarcrmConfiguration,\x20%s,\x20%s',_0xe14d94,_0x8dbf59);_0x59a48c(_0x8dbf59);});});}
\ No newline at end of file
index 94e93c0..3f6da3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x653a=['../../components/interaction/service','./intSugarcrmField.controller','get','isAuthenticated','index','post','create','put','/:id','update','delete','destroy','exports','multer','util','express','fs-extra','../../components/auth/service'];(function(_0x5e36d1,_0x471178){var _0x950b9e=function(_0x1872f3){while(--_0x1872f3){_0x5e36d1['push'](_0x5e36d1['shift']());}};_0x950b9e(++_0x471178);}(_0x653a,0x67));var _0xa653=function(_0x3b6f7e,_0x2c6e88){_0x3b6f7e=_0x3b6f7e-0x0;var _0xa6608=_0x653a[_0x3b6f7e];return _0xa6608;};'use strict';var multer=require(_0xa653('0x0'));var util=require(_0xa653('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa653('0x2'));var router=express['Router']();var fs_extra=require(_0xa653('0x3'));var auth=require(_0xa653('0x4'));var interaction=require(_0xa653('0x5'));var config=require('../../config/environment');var controller=require(_0xa653('0x6'));router[_0xa653('0x7')]('/',auth[_0xa653('0x8')](),controller[_0xa653('0x9')]);router[_0xa653('0x7')]('/:id',auth[_0xa653('0x8')](),controller['show']);router[_0xa653('0xa')]('/',auth[_0xa653('0x8')](),controller[_0xa653('0xb')]);router[_0xa653('0xc')](_0xa653('0xd'),auth[_0xa653('0x8')](),controller[_0xa653('0xe')]);router[_0xa653('0xf')](_0xa653('0xd'),auth[_0xa653('0x8')](),controller[_0xa653('0x10')]);module[_0xa653('0x11')]=router;
\ No newline at end of file
+var _0xd271=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intSugarcrmField.controller','get','isAuthenticated','index','/:id','show','create','put','update','exports','multer','util'];(function(_0x3e446e,_0x2ad15c){var _0x58615c=function(_0x572290){while(--_0x572290){_0x3e446e['push'](_0x3e446e['shift']());}};_0x58615c(++_0x2ad15c);}(_0xd271,0x1eb));var _0x1d27=function(_0x1a1375,_0x23710f){_0x1a1375=_0x1a1375-0x0;var _0x39bb26=_0xd271[_0x1a1375];return _0x39bb26;};'use strict';var multer=require(_0x1d27('0x0'));var util=require(_0x1d27('0x1'));var path=require('path');var timeout=require(_0x1d27('0x2'));var express=require(_0x1d27('0x3'));var router=express[_0x1d27('0x4')]();var fs_extra=require(_0x1d27('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x1d27('0x6'));var config=require('../../config/environment');var controller=require(_0x1d27('0x7'));router[_0x1d27('0x8')]('/',auth[_0x1d27('0x9')](),controller[_0x1d27('0xa')]);router[_0x1d27('0x8')](_0x1d27('0xb'),auth['isAuthenticated'](),controller[_0x1d27('0xc')]);router['post']('/',auth[_0x1d27('0x9')](),controller[_0x1d27('0xd')]);router[_0x1d27('0xe')](_0x1d27('0xb'),auth[_0x1d27('0x9')](),controller[_0x1d27('0xf')]);router['delete'](_0x1d27('0xb'),auth[_0x1d27('0x9')](),controller['destroy']);module[_0x1d27('0x10')]=router;
\ No newline at end of file
index 5c93b17..bbed345 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4324=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports'];(function(_0xf9a6cf,_0x11870e){var _0x59e2bc=function(_0x1cd606){while(--_0x1cd606){_0xf9a6cf['push'](_0xf9a6cf['shift']());}};_0x59e2bc(++_0x11870e);}(_0x4324,0x198));var _0x4432=function(_0x5d4f12,_0x11e67c){_0x5d4f12=_0x5d4f12-0x0;var _0x4eb577=_0x4324[_0x5d4f12];return _0x4eb577;};'use strict';var Sequelize=require(_0x4432('0x0'));module[_0x4432('0x1')]={'type':{'type':Sequelize[_0x4432('0x2')](_0x4432('0x3'),_0x4432('0x4'),_0x4432('0x5'),_0x4432('0x6'),_0x4432('0x7')),'defaultValue':_0x4432('0x3')},'content':{'type':Sequelize[_0x4432('0x8')]},'key':{'type':Sequelize[_0x4432('0x8')]},'keyType':{'type':Sequelize[_0x4432('0x2')](_0x4432('0x3'),_0x4432('0x4'),_0x4432('0x5'))},'keyContent':{'type':Sequelize[_0x4432('0x8')]},'idField':{'type':Sequelize[_0x4432('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x4432('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4432('0x8')]}};
\ No newline at end of file
+var _0x953d=['BOOLEAN','sequelize','ENUM','string','variable','keyValue','picklist','STRING','customVariable'];(function(_0x385198,_0x57ada3){var _0x40cd6b=function(_0x6875b6){while(--_0x6875b6){_0x385198['push'](_0x385198['shift']());}};_0x40cd6b(++_0x57ada3);}(_0x953d,0xc7));var _0xd953=function(_0x3f48e0,_0x453a44){_0x3f48e0=_0x3f48e0-0x0;var _0x2333e1=_0x953d[_0x3f48e0];return _0x2333e1;};'use strict';var Sequelize=require(_0xd953('0x0'));module['exports']={'type':{'type':Sequelize[_0xd953('0x1')](_0xd953('0x2'),_0xd953('0x3'),'customVariable',_0xd953('0x4'),_0xd953('0x5')),'defaultValue':_0xd953('0x2')},'content':{'type':Sequelize[_0xd953('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xd953('0x1')](_0xd953('0x2'),_0xd953('0x3'),_0xd953('0x7'))},'keyContent':{'type':Sequelize[_0xd953('0x6')]},'idField':{'type':Sequelize[_0xd953('0x6')]},'nameField':{'type':Sequelize[_0xd953('0x6')]},'customField':{'type':Sequelize[_0xd953('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xd953('0x6')]}};
\ No newline at end of file
index 4e65ccb..057e492 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3738=['find','create','body','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','ejs','lodash','squel','crypto','jsforce','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','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','name','send','index','map','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','options','SugarcrmField','include','findAll','rows','catch','show','params','filters','length'];(function(_0x1443d5,_0x21f839){var _0x3f8e34=function(_0x5e1263){while(--_0x5e1263){_0x1443d5['push'](_0x1443d5['shift']());}};_0x3f8e34(++_0x21f839);}(_0x3738,0xdb));var _0x8373=function(_0xee18e4,_0x1835eb){_0xee18e4=_0xee18e4-0x0;var _0x5993a8=_0x3738[_0xee18e4];return _0x5993a8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8373('0x0'));var zipdir=require(_0x8373('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8373('0x2'));var moment=require('moment');var BPromise=require(_0x8373('0x3'));var Mustache=require(_0x8373('0x4'));var util=require('util');var path=require(_0x8373('0x5'));var sox=require(_0x8373('0x6'));var csv=require('to-csv');var ejs=require(_0x8373('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8373('0x8'));var squel=require(_0x8373('0x9'));var crypto=require(_0x8373('0xa'));var jsforce=require(_0x8373('0xb'));var deskjs=require(_0x8373('0xc'));var toCsv=require(_0x8373('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x8373('0xe'));var authService=require(_0x8373('0xf'));var qs=require(_0x8373('0x10'));var as=require(_0x8373('0x11'));var hardwareService=require(_0x8373('0x12'));var logger=require(_0x8373('0x13'))(_0x8373('0x14'));var utils=require(_0x8373('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x8373('0x16'));var db=require(_0x8373('0x17'))['db'];function respondWithStatusCode(_0x2bcb0a,_0x5def00){_0x5def00=_0x5def00||0xcc;return function(_0x4ce38f){if(_0x4ce38f){return _0x2bcb0a[_0x8373('0x18')](_0x5def00);}return _0x2bcb0a[_0x8373('0x19')](_0x5def00)[_0x8373('0x1a')]();};}function respondWithResult(_0x1693c3,_0x1cc7d9){_0x1cc7d9=_0x1cc7d9||0xc8;return function(_0x27262f){if(_0x27262f){return _0x1693c3[_0x8373('0x19')](_0x1cc7d9)[_0x8373('0x1b')](_0x27262f);}};}function respondWithFilteredResult(_0x17cc07,_0x4c033b){return function(_0x39ceb0){if(_0x39ceb0){var _0x582121=typeof _0x4c033b[_0x8373('0x1c')]==='undefined'&&typeof _0x4c033b[_0x8373('0x1d')]===_0x8373('0x1e');var _0x3c562e=_0x39ceb0[_0x8373('0x1f')];var _0xbc9362=_0x582121?0x0:_0x4c033b[_0x8373('0x1c')];var _0x4e237e=_0x582121?_0x39ceb0['count']:_0x4c033b[_0x8373('0x1c')]+_0x4c033b[_0x8373('0x1d')];var _0x39117f;if(_0x4e237e>=_0x3c562e){_0x4e237e=_0x3c562e;_0x39117f=0xc8;}else{_0x39117f=0xce;}_0x17cc07[_0x8373('0x19')](_0x39117f);return _0x17cc07[_0x8373('0x20')](_0x8373('0x21'),_0xbc9362+'-'+_0x4e237e+'/'+_0x3c562e)[_0x8373('0x1b')](_0x39ceb0);}return null;};}function patchUpdates(_0x4c8b92){return function(_0x51bc8d){try{jsonpatch[_0x8373('0x22')](_0x51bc8d,_0x4c8b92,!![]);}catch(_0x2141c6){return BPromise[_0x8373('0x23')](_0x2141c6);}return _0x51bc8d['save']();};}function saveUpdates(_0x25f625,_0x1e8d87){return function(_0x34d5ac){if(_0x34d5ac){return _0x34d5ac[_0x8373('0x24')](_0x25f625)[_0x8373('0x25')](function(_0x5b966a){return _0x5b966a;});}return null;};}function removeEntity(_0x40319d,_0x407b15){return function(_0x142128){if(_0x142128){return _0x142128[_0x8373('0x26')]()[_0x8373('0x25')](function(){_0x40319d[_0x8373('0x19')](0xcc)[_0x8373('0x1a')]();});}};}function handleEntityNotFound(_0x3389de,_0x34641a){return function(_0x34f4cf){if(!_0x34f4cf){_0x3389de[_0x8373('0x18')](0x194);}return _0x34f4cf;};}function handleError(_0x2d63cd,_0x5f0e09){_0x5f0e09=_0x5f0e09||0x1f4;return function(_0x4acc4d){logger['error'](_0x4acc4d['stack']);if(_0x4acc4d[_0x8373('0x27')]){delete _0x4acc4d[_0x8373('0x27')];}_0x2d63cd[_0x8373('0x19')](_0x5f0e09)[_0x8373('0x28')](_0x4acc4d);};}exports[_0x8373('0x29')]=function(_0x4771c0,_0x1c6fab){var _0x28e0ae={},_0x5553cf={},_0xf135ce={'count':0x0,'rows':[]};var _0x4f2b9c=_[_0x8373('0x2a')](db['SugarcrmField'][_0x8373('0x2b')],function(_0x32b083){return{'name':_0x32b083[_0x8373('0x2c')],'type':_0x32b083[_0x8373('0x2d')]['key']};});_0x5553cf['model']=_[_0x8373('0x2a')](_0x4f2b9c,'name');_0x5553cf[_0x8373('0x2e')]=_[_0x8373('0x2f')](_0x4771c0[_0x8373('0x2e')]);_0x5553cf['filters']=_[_0x8373('0x30')](_0x5553cf[_0x8373('0x31')],_0x5553cf[_0x8373('0x2e')]);_0x28e0ae[_0x8373('0x32')]=_['intersection'](_0x5553cf[_0x8373('0x31')],qs[_0x8373('0x33')](_0x4771c0['query'][_0x8373('0x33')]));_0x28e0ae[_0x8373('0x32')]=_0x28e0ae[_0x8373('0x32')]['length']?_0x28e0ae['attributes']:_0x5553cf['model'];if(!_0x4771c0[_0x8373('0x2e')][_0x8373('0x34')]('nolimit')){_0x28e0ae['limit']=qs['limit'](_0x4771c0['query'][_0x8373('0x1d')]);_0x28e0ae['offset']=qs[_0x8373('0x1c')](_0x4771c0[_0x8373('0x2e')]['offset']);}_0x28e0ae[_0x8373('0x35')]=qs['sort'](_0x4771c0[_0x8373('0x2e')][_0x8373('0x36')]);_0x28e0ae[_0x8373('0x37')]=qs['filters'](_[_0x8373('0x38')](_0x4771c0['query'],_0x5553cf['filters']),_0x4f2b9c);if(_0x4771c0[_0x8373('0x2e')][_0x8373('0x39')]){_0x28e0ae[_0x8373('0x37')]=_[_0x8373('0x3a')](_0x28e0ae['where'],{'$or':_[_0x8373('0x2a')](_0x4f2b9c,function(_0x5e3955){if(_0x5e3955[_0x8373('0x2d')]!=='VIRTUAL'){var _0x520f50={};_0x520f50[_0x5e3955['name']]={'$like':'%'+_0x4771c0[_0x8373('0x2e')][_0x8373('0x39')]+'%'};return _0x520f50;}})});}_0x28e0ae=_[_0x8373('0x3a')]({},_0x28e0ae,_0x4771c0[_0x8373('0x3b')]);var _0x354b2e={'where':_0x28e0ae['where']};return db[_0x8373('0x3c')][_0x8373('0x1f')](_0x354b2e)[_0x8373('0x25')](function(_0xf371a2){_0xf135ce[_0x8373('0x1f')]=_0xf371a2;if(_0x4771c0[_0x8373('0x2e')]['includeAll']){_0x28e0ae[_0x8373('0x3d')]=[{'all':!![]}];}return db[_0x8373('0x3c')][_0x8373('0x3e')](_0x28e0ae);})['then'](function(_0x337da8){_0xf135ce[_0x8373('0x3f')]=_0x337da8;return _0xf135ce;})[_0x8373('0x25')](respondWithFilteredResult(_0x1c6fab,_0x28e0ae))[_0x8373('0x40')](handleError(_0x1c6fab,null));};exports[_0x8373('0x41')]=function(_0x1cb4aa,_0x2188b3){var _0x339417={'raw':!![],'where':{'id':_0x1cb4aa[_0x8373('0x42')]['id']}},_0x3599c4={};_0x3599c4[_0x8373('0x31')]=_[_0x8373('0x2f')](db[_0x8373('0x3c')][_0x8373('0x2b')]);_0x3599c4[_0x8373('0x2e')]=_[_0x8373('0x2f')](_0x1cb4aa[_0x8373('0x2e')]);_0x3599c4[_0x8373('0x43')]=_[_0x8373('0x30')](_0x3599c4['model'],_0x3599c4[_0x8373('0x2e')]);_0x339417[_0x8373('0x32')]=_['intersection'](_0x3599c4[_0x8373('0x31')],qs[_0x8373('0x33')](_0x1cb4aa[_0x8373('0x2e')]['fields']));_0x339417[_0x8373('0x32')]=_0x339417[_0x8373('0x32')][_0x8373('0x44')]?_0x339417[_0x8373('0x32')]:_0x3599c4[_0x8373('0x31')];if(_0x1cb4aa[_0x8373('0x2e')]['includeAll']){_0x339417[_0x8373('0x3d')]=[{'all':!![]}];}_0x339417=_[_0x8373('0x3a')]({},_0x339417,_0x1cb4aa[_0x8373('0x3b')]);return db['SugarcrmField'][_0x8373('0x45')](_0x339417)[_0x8373('0x25')](handleEntityNotFound(_0x2188b3,null))[_0x8373('0x25')](respondWithResult(_0x2188b3,null))[_0x8373('0x40')](handleError(_0x2188b3,null));};exports[_0x8373('0x46')]=function(_0x29a8b6,_0x46ab37){return db[_0x8373('0x3c')][_0x8373('0x46')](_0x29a8b6['body'],{})[_0x8373('0x25')](respondWithResult(_0x46ab37,0xc9))[_0x8373('0x40')](handleError(_0x46ab37,null));};exports[_0x8373('0x24')]=function(_0x2996ac,_0x463fed){if(_0x2996ac[_0x8373('0x47')]['id']){delete _0x2996ac[_0x8373('0x47')]['id'];}return db['SugarcrmField'][_0x8373('0x45')]({'where':{'id':_0x2996ac[_0x8373('0x42')]['id']}})[_0x8373('0x25')](handleEntityNotFound(_0x463fed,null))[_0x8373('0x25')](saveUpdates(_0x2996ac[_0x8373('0x47')],null))['then'](respondWithResult(_0x463fed,null))[_0x8373('0x40')](handleError(_0x463fed,null));};exports[_0x8373('0x26')]=function(_0x2f2c78,_0x55e4b0){return db[_0x8373('0x3c')][_0x8373('0x45')]({'where':{'id':_0x2f2c78[_0x8373('0x42')]['id']}})[_0x8373('0x25')](handleEntityNotFound(_0x55e4b0,null))['then'](removeEntity(_0x55e4b0,null))['catch'](handleError(_0x55e4b0,null));};
\ No newline at end of file
+var _0xbd85=['end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','update','then','destroy','error','name','index','fieldName','type','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','SugarcrmField','findAll','rows','keys','options','find','catch','create','params','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0xbd85,0x78));var _0x5bd8=function(_0x4a4c78,_0x13d5b7){_0x4a4c78=_0x4a4c78-0x0;var _0xd58f32=_0xbd85[_0x4a4c78];return _0xd58f32;};'use strict';var emlformat=require(_0x5bd8('0x0'));var rimraf=require(_0x5bd8('0x1'));var zipdir=require(_0x5bd8('0x2'));var jsonpatch=require(_0x5bd8('0x3'));var rp=require(_0x5bd8('0x4'));var moment=require(_0x5bd8('0x5'));var BPromise=require(_0x5bd8('0x6'));var Mustache=require(_0x5bd8('0x7'));var util=require(_0x5bd8('0x8'));var path=require(_0x5bd8('0x9'));var sox=require(_0x5bd8('0xa'));var csv=require(_0x5bd8('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5bd8('0xc'));var _=require('lodash');var squel=require(_0x5bd8('0xd'));var crypto=require(_0x5bd8('0xe'));var jsforce=require(_0x5bd8('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x5bd8('0xb'));var querystring=require(_0x5bd8('0x10'));var Papa=require('papaparse');var Redis=require(_0x5bd8('0x11'));var authService=require(_0x5bd8('0x12'));var qs=require(_0x5bd8('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5bd8('0x14'));var logger=require(_0x5bd8('0x15'))(_0x5bd8('0x16'));var utils=require('../../config/utils');var config=require(_0x5bd8('0x17'));var licenseUtil=require(_0x5bd8('0x18'));var db=require(_0x5bd8('0x19'))['db'];function respondWithStatusCode(_0x5141fd,_0x107529){_0x107529=_0x107529||0xcc;return function(_0x395588){if(_0x395588){return _0x5141fd[_0x5bd8('0x1a')](_0x107529);}return _0x5141fd[_0x5bd8('0x1b')](_0x107529)[_0x5bd8('0x1c')]();};}function respondWithResult(_0x130d76,_0x17fa87){_0x17fa87=_0x17fa87||0xc8;return function(_0x1431d4){if(_0x1431d4){return _0x130d76[_0x5bd8('0x1b')](_0x17fa87)['json'](_0x1431d4);}};}function respondWithFilteredResult(_0x4e418c,_0x551560){return function(_0x68051f){if(_0x68051f){var _0x25e5b0=typeof _0x551560[_0x5bd8('0x1d')]==='undefined'&&typeof _0x551560[_0x5bd8('0x1e')]===_0x5bd8('0x1f');var _0x34cbe5=_0x68051f[_0x5bd8('0x20')];var _0x2f353a=_0x25e5b0?0x0:_0x551560[_0x5bd8('0x1d')];var _0x2e8230=_0x25e5b0?_0x68051f['count']:_0x551560[_0x5bd8('0x1d')]+_0x551560[_0x5bd8('0x1e')];var _0x403f9c;if(_0x2e8230>=_0x34cbe5){_0x2e8230=_0x34cbe5;_0x403f9c=0xc8;}else{_0x403f9c=0xce;}_0x4e418c['status'](_0x403f9c);return _0x4e418c[_0x5bd8('0x21')](_0x5bd8('0x22'),_0x2f353a+'-'+_0x2e8230+'/'+_0x34cbe5)[_0x5bd8('0x23')](_0x68051f);}return null;};}function patchUpdates(_0x5a19b0){return function(_0x66aee1){try{jsonpatch[_0x5bd8('0x24')](_0x66aee1,_0x5a19b0,!![]);}catch(_0x552801){return BPromise[_0x5bd8('0x25')](_0x552801);}return _0x66aee1['save']();};}function saveUpdates(_0x1f7d3e,_0x7827e2){return function(_0x25b167){if(_0x25b167){return _0x25b167[_0x5bd8('0x26')](_0x1f7d3e)[_0x5bd8('0x27')](function(_0x3494a0){return _0x3494a0;});}return null;};}function removeEntity(_0x3a571b,_0x57976c){return function(_0x39aead){if(_0x39aead){return _0x39aead[_0x5bd8('0x28')]()[_0x5bd8('0x27')](function(){_0x3a571b['status'](0xcc)[_0x5bd8('0x1c')]();});}};}function handleEntityNotFound(_0x2e017a,_0x57c908){return function(_0x105e14){if(!_0x105e14){_0x2e017a[_0x5bd8('0x1a')](0x194);}return _0x105e14;};}function handleError(_0x437b0d,_0x5e51cf){_0x5e51cf=_0x5e51cf||0x1f4;return function(_0x1ee562){logger[_0x5bd8('0x29')](_0x1ee562['stack']);if(_0x1ee562[_0x5bd8('0x2a')]){delete _0x1ee562[_0x5bd8('0x2a')];}_0x437b0d[_0x5bd8('0x1b')](_0x5e51cf)['send'](_0x1ee562);};}exports[_0x5bd8('0x2b')]=function(_0x4dbcfb,_0x2b9dff){var _0x4acbc8={},_0x18f148={},_0x56fe98={'count':0x0,'rows':[]};var _0xf5015c=_['map'](db['SugarcrmField']['rawAttributes'],function(_0x1dc32d){return{'name':_0x1dc32d[_0x5bd8('0x2c')],'type':_0x1dc32d[_0x5bd8('0x2d')][_0x5bd8('0x2e')]};});_0x18f148[_0x5bd8('0x2f')]=_[_0x5bd8('0x30')](_0xf5015c,_0x5bd8('0x2a'));_0x18f148[_0x5bd8('0x31')]=_['keys'](_0x4dbcfb[_0x5bd8('0x31')]);_0x18f148[_0x5bd8('0x32')]=_[_0x5bd8('0x33')](_0x18f148[_0x5bd8('0x2f')],_0x18f148[_0x5bd8('0x31')]);_0x4acbc8['attributes']=_['intersection'](_0x18f148[_0x5bd8('0x2f')],qs[_0x5bd8('0x34')](_0x4dbcfb[_0x5bd8('0x31')][_0x5bd8('0x34')]));_0x4acbc8[_0x5bd8('0x35')]=_0x4acbc8['attributes'][_0x5bd8('0x36')]?_0x4acbc8[_0x5bd8('0x35')]:_0x18f148[_0x5bd8('0x2f')];if(!_0x4dbcfb[_0x5bd8('0x31')][_0x5bd8('0x37')]('nolimit')){_0x4acbc8[_0x5bd8('0x1e')]=qs['limit'](_0x4dbcfb[_0x5bd8('0x31')][_0x5bd8('0x1e')]);_0x4acbc8[_0x5bd8('0x1d')]=qs[_0x5bd8('0x1d')](_0x4dbcfb[_0x5bd8('0x31')][_0x5bd8('0x1d')]);}_0x4acbc8['order']=qs[_0x5bd8('0x38')](_0x4dbcfb[_0x5bd8('0x31')][_0x5bd8('0x38')]);_0x4acbc8[_0x5bd8('0x39')]=qs['filters'](_[_0x5bd8('0x3a')](_0x4dbcfb[_0x5bd8('0x31')],_0x18f148[_0x5bd8('0x32')]),_0xf5015c);if(_0x4dbcfb[_0x5bd8('0x31')][_0x5bd8('0x3b')]){_0x4acbc8['where']=_['merge'](_0x4acbc8[_0x5bd8('0x39')],{'$or':_['map'](_0xf5015c,function(_0x414deb){if(_0x414deb[_0x5bd8('0x2d')]!==_0x5bd8('0x3c')){var _0x1d8339={};_0x1d8339[_0x414deb['name']]={'$like':'%'+_0x4dbcfb['query'][_0x5bd8('0x3b')]+'%'};return _0x1d8339;}})});}_0x4acbc8=_[_0x5bd8('0x3d')]({},_0x4acbc8,_0x4dbcfb['options']);var _0x373c18={'where':_0x4acbc8[_0x5bd8('0x39')]};return db['SugarcrmField']['count'](_0x373c18)['then'](function(_0x289648){_0x56fe98[_0x5bd8('0x20')]=_0x289648;if(_0x4dbcfb[_0x5bd8('0x31')][_0x5bd8('0x3e')]){_0x4acbc8[_0x5bd8('0x3f')]=[{'all':!![]}];}return db[_0x5bd8('0x40')][_0x5bd8('0x41')](_0x4acbc8);})[_0x5bd8('0x27')](function(_0x504fe9){_0x56fe98[_0x5bd8('0x42')]=_0x504fe9;return _0x56fe98;})[_0x5bd8('0x27')](respondWithFilteredResult(_0x2b9dff,_0x4acbc8))['catch'](handleError(_0x2b9dff,null));};exports['show']=function(_0x5a84fa,_0x55cd17){var _0x229936={'raw':!![],'where':{'id':_0x5a84fa['params']['id']}},_0x137ba6={};_0x137ba6[_0x5bd8('0x2f')]=_[_0x5bd8('0x43')](db[_0x5bd8('0x40')]['rawAttributes']);_0x137ba6[_0x5bd8('0x31')]=_[_0x5bd8('0x43')](_0x5a84fa[_0x5bd8('0x31')]);_0x137ba6[_0x5bd8('0x32')]=_[_0x5bd8('0x33')](_0x137ba6[_0x5bd8('0x2f')],_0x137ba6[_0x5bd8('0x31')]);_0x229936[_0x5bd8('0x35')]=_[_0x5bd8('0x33')](_0x137ba6[_0x5bd8('0x2f')],qs[_0x5bd8('0x34')](_0x5a84fa[_0x5bd8('0x31')][_0x5bd8('0x34')]));_0x229936[_0x5bd8('0x35')]=_0x229936[_0x5bd8('0x35')][_0x5bd8('0x36')]?_0x229936[_0x5bd8('0x35')]:_0x137ba6['model'];if(_0x5a84fa['query'][_0x5bd8('0x3e')]){_0x229936[_0x5bd8('0x3f')]=[{'all':!![]}];}_0x229936=_['merge']({},_0x229936,_0x5a84fa[_0x5bd8('0x44')]);return db[_0x5bd8('0x40')][_0x5bd8('0x45')](_0x229936)[_0x5bd8('0x27')](handleEntityNotFound(_0x55cd17,null))['then'](respondWithResult(_0x55cd17,null))[_0x5bd8('0x46')](handleError(_0x55cd17,null));};exports[_0x5bd8('0x47')]=function(_0x20151b,_0x27aeb4){return db[_0x5bd8('0x40')][_0x5bd8('0x47')](_0x20151b['body'],{})[_0x5bd8('0x27')](respondWithResult(_0x27aeb4,0xc9))[_0x5bd8('0x46')](handleError(_0x27aeb4,null));};exports[_0x5bd8('0x26')]=function(_0x1826eb,_0x3e6316){if(_0x1826eb['body']['id']){delete _0x1826eb['body']['id'];}return db[_0x5bd8('0x40')][_0x5bd8('0x45')]({'where':{'id':_0x1826eb[_0x5bd8('0x48')]['id']}})['then'](handleEntityNotFound(_0x3e6316,null))[_0x5bd8('0x27')](saveUpdates(_0x1826eb[_0x5bd8('0x49')],null))[_0x5bd8('0x27')](respondWithResult(_0x3e6316,null))[_0x5bd8('0x46')](handleError(_0x3e6316,null));};exports[_0x5bd8('0x28')]=function(_0x43b95e,_0x42c2af){return db[_0x5bd8('0x40')]['find']({'where':{'id':_0x43b95e[_0x5bd8('0x48')]['id']}})[_0x5bd8('0x27')](handleEntityNotFound(_0x42c2af,null))[_0x5bd8('0x27')](removeEntity(_0x42c2af,null))[_0x5bd8('0x46')](handleError(_0x42c2af,null));};
\ No newline at end of file
index ee7f2ab..bdf33e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd866=['request-promise','path','../../config/environment','exports','define','SugarcrmField','int_sugarcrm_fields','sugarcrm_unique_index','FieldId','lodash','util','../../config/logger','bluebird'];(function(_0x237c45,_0x55cf99){var _0x2942f6=function(_0x45a615){while(--_0x45a615){_0x237c45['push'](_0x237c45['shift']());}};_0x2942f6(++_0x55cf99);}(_0xd866,0x71));var _0x6d86=function(_0x6266e6,_0x1cfc62){_0x6266e6=_0x6266e6-0x0;var _0xa813d3=_0xd866[_0x6266e6];return _0xa813d3;};'use strict';var _=require(_0x6d86('0x0'));var util=require(_0x6d86('0x1'));var logger=require(_0x6d86('0x2'))('api');var moment=require('moment');var BPromise=require(_0x6d86('0x3'));var rp=require(_0x6d86('0x4'));var fs=require('fs');var path=require(_0x6d86('0x5'));var rimraf=require('rimraf');var config=require(_0x6d86('0x6'));var attributes=require('./intSugarcrmField.attributes');module[_0x6d86('0x7')]=function(_0x363d54,_0x1b18b7){return _0x363d54[_0x6d86('0x8')](_0x6d86('0x9'),attributes,{'tableName':_0x6d86('0xa'),'paranoid':![],'indexes':[{'name':_0x6d86('0xb'),'fields':['idField',_0x6d86('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xec3a=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','SugarcrmField','int_sugarcrm_fields','sugarcrm_unique_index','idField','lodash','util','../../config/logger','api'];(function(_0x4f4957,_0x2962d2){var _0x182229=function(_0x1d7fdc){while(--_0x1d7fdc){_0x4f4957['push'](_0x4f4957['shift']());}};_0x182229(++_0x2962d2);}(_0xec3a,0x12c));var _0xaec3=function(_0x2aecb2,_0x343312){_0x2aecb2=_0x2aecb2-0x0;var _0x3ebb80=_0xec3a[_0x2aecb2];return _0x3ebb80;};'use strict';var _=require(_0xaec3('0x0'));var util=require(_0xaec3('0x1'));var logger=require(_0xaec3('0x2'))(_0xaec3('0x3'));var moment=require(_0xaec3('0x4'));var BPromise=require(_0xaec3('0x5'));var rp=require(_0xaec3('0x6'));var fs=require('fs');var path=require(_0xaec3('0x7'));var rimraf=require(_0xaec3('0x8'));var config=require(_0xaec3('0x9'));var attributes=require(_0xaec3('0xa'));module[_0xaec3('0xb')]=function(_0x3c448f,_0xf144b0){return _0x3c448f['define'](_0xaec3('0xc'),attributes,{'tableName':_0xaec3('0xd'),'paranoid':![],'indexes':[{'name':_0xaec3('0xe'),'fields':[_0xaec3('0xf'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index a0d5eb4..2e86ec5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05c2=['SugarcrmField,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent'];(function(_0x5eb3c1,_0x2d0bab){var _0xfafed=function(_0x5ec542){while(--_0x5ec542){_0x5eb3c1['push'](_0x5eb3c1['shift']());}};_0xfafed(++_0x2d0bab);}(_0x05c2,0x191));var _0x205c=function(_0x42ede2,_0x37ed04){_0x42ede2=_0x42ede2-0x0;var _0xb7e04d=_0x05c2[_0x42ede2];return _0xb7e04d;};'use strict';var _=require(_0x205c('0x0'));var util=require(_0x205c('0x1'));var moment=require(_0x205c('0x2'));var BPromise=require(_0x205c('0x3'));var rs=require(_0x205c('0x4'));var fs=require('fs');var Redis=require(_0x205c('0x5'));var db=require(_0x205c('0x6'))['db'];var utils=require(_0x205c('0x7'));var logger=require(_0x205c('0x8'))(_0x205c('0x9'));var config=require(_0x205c('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x205c('0xb')][_0x205c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x46da36,_0x5a6de9,_0x1567d3){return new BPromise(function(_0x100d2c,_0x5779c8){return client['request'](_0x46da36,_0x1567d3)[_0x205c('0xd')](function(_0x2d19f1){logger[_0x205c('0xe')](_0x205c('0xf'),_0x5a6de9,_0x205c('0x10'));logger['debug'](_0x205c('0x11'),_0x5a6de9,_0x205c('0x10'),JSON['stringify'](_0x2d19f1));if(_0x2d19f1[_0x205c('0x12')]){if(_0x2d19f1['error'][_0x205c('0x13')]===0x1f4){logger[_0x205c('0x12')](_0x205c('0xf'),_0x5a6de9,_0x2d19f1[_0x205c('0x12')][_0x205c('0x14')]);return _0x5779c8(_0x2d19f1[_0x205c('0x12')][_0x205c('0x14')]);}logger[_0x205c('0x12')](_0x205c('0xf'),_0x5a6de9,_0x2d19f1['error'][_0x205c('0x14')]);return _0x100d2c(_0x2d19f1[_0x205c('0x12')][_0x205c('0x14')]);}else{logger['info'](_0x205c('0xf'),_0x5a6de9,_0x205c('0x10'));_0x100d2c(_0x2d19f1[_0x205c('0x15')]['message']);}})['catch'](function(_0x3f6247){logger[_0x205c('0x12')](_0x205c('0xf'),_0x5a6de9,_0x3f6247);_0x5779c8(_0x3f6247);});});}
\ No newline at end of file
+var _0x70aa=['lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','request','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch'];(function(_0x585133,_0x2412a1){var _0x18254a=function(_0x4c8aaf){while(--_0x4c8aaf){_0x585133['push'](_0x585133['shift']());}};_0x18254a(++_0x2412a1);}(_0x70aa,0xbd));var _0xa70a=function(_0x1da527,_0x2dc953){_0x1da527=_0x1da527-0x0;var _0x40fc7c=_0x70aa[_0x1da527];return _0x40fc7c;};'use strict';var _=require(_0xa70a('0x0'));var util=require(_0xa70a('0x1'));var moment=require('moment');var BPromise=require(_0xa70a('0x2'));var rs=require(_0xa70a('0x3'));var fs=require('fs');var Redis=require(_0xa70a('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa70a('0x5'))(_0xa70a('0x6'));var config=require(_0xa70a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa70a('0x8')][_0xa70a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x151520,_0x5ad9be,_0x257089){return new BPromise(function(_0x256023,_0x3122d8){return client[_0xa70a('0xa')](_0x151520,_0x257089)[_0xa70a('0xb')](function(_0x4f8471){logger[_0xa70a('0xc')](_0xa70a('0xd'),_0x5ad9be,_0xa70a('0xe'));logger[_0xa70a('0xf')]('SugarcrmField,\x20%s,\x20%s,\x20%s',_0x5ad9be,_0xa70a('0xe'),JSON[_0xa70a('0x10')](_0x4f8471));if(_0x4f8471[_0xa70a('0x11')]){if(_0x4f8471[_0xa70a('0x11')][_0xa70a('0x12')]===0x1f4){logger['error'](_0xa70a('0xd'),_0x5ad9be,_0x4f8471[_0xa70a('0x11')]['message']);return _0x3122d8(_0x4f8471[_0xa70a('0x11')][_0xa70a('0x13')]);}logger[_0xa70a('0x11')]('SugarcrmField,\x20%s,\x20%s',_0x5ad9be,_0x4f8471[_0xa70a('0x11')][_0xa70a('0x13')]);return _0x256023(_0x4f8471[_0xa70a('0x11')][_0xa70a('0x13')]);}else{logger[_0xa70a('0xc')]('SugarcrmField,\x20%s,\x20%s',_0x5ad9be,'request\x20sent');_0x256023(_0x4f8471['result'][_0xa70a('0x13')]);}})[_0xa70a('0x14')](function(_0x529af5){logger['error'](_0xa70a('0xd'),_0x5ad9be,_0x529af5);_0x3122d8(_0x529af5);});});}
\ No newline at end of file
index 154a038..3f14ec7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf555=['addConfiguration','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./intVtigerAccount.controller','isAuthenticated','index','get','/:id','show','/:id/configurations','/:id/fields','getFields','create'];(function(_0x45ee63,_0xa4a9e3){var _0x162f86=function(_0x464165){while(--_0x464165){_0x45ee63['push'](_0x45ee63['shift']());}};_0x162f86(++_0xa4a9e3);}(_0xf555,0x97));var _0x5f55=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf555[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x5f55('0x0'));var util=require(_0x5f55('0x1'));var path=require('path');var timeout=require(_0x5f55('0x2'));var express=require('express');var router=express[_0x5f55('0x3')]();var fs_extra=require(_0x5f55('0x4'));var auth=require(_0x5f55('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x5f55('0x6'));var controller=require(_0x5f55('0x7'));router['get']('/',auth[_0x5f55('0x8')](),controller[_0x5f55('0x9')]);router[_0x5f55('0xa')](_0x5f55('0xb'),auth[_0x5f55('0x8')](),controller[_0x5f55('0xc')]);router[_0x5f55('0xa')](_0x5f55('0xd'),auth[_0x5f55('0x8')](),controller['getConfigurations']);router[_0x5f55('0xa')](_0x5f55('0xe'),auth[_0x5f55('0x8')](),controller[_0x5f55('0xf')]);router['post']('/',auth[_0x5f55('0x8')](),controller[_0x5f55('0x10')]);router['post']('/:id/configurations',auth['isAuthenticated'](),controller[_0x5f55('0x11')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x5f55('0x12')](_0x5f55('0xb'),auth[_0x5f55('0x8')](),controller[_0x5f55('0x13')]);module[_0x5f55('0x14')]=router;
\ No newline at end of file
+var _0x5ed2=['fs-extra','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','index','/:id','isAuthenticated','getConfigurations','/:id/fields','post','create','addConfiguration','put','update','destroy','multer','path','connect-timeout','Router'];(function(_0x1f6f84,_0x2bab55){var _0x177f40=function(_0x384ab4){while(--_0x384ab4){_0x1f6f84['push'](_0x1f6f84['shift']());}};_0x177f40(++_0x2bab55);}(_0x5ed2,0x114));var _0x25ed=function(_0x11a566,_0x4b82c5){_0x11a566=_0x11a566-0x0;var _0x2395ac=_0x5ed2[_0x11a566];return _0x2395ac;};'use strict';var multer=require(_0x25ed('0x0'));var util=require('util');var path=require(_0x25ed('0x1'));var timeout=require(_0x25ed('0x2'));var express=require('express');var router=express[_0x25ed('0x3')]();var fs_extra=require(_0x25ed('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x25ed('0x5'));var config=require(_0x25ed('0x6'));var controller=require(_0x25ed('0x7'));router[_0x25ed('0x8')]('/',auth['isAuthenticated'](),controller[_0x25ed('0x9')]);router[_0x25ed('0x8')](_0x25ed('0xa'),auth[_0x25ed('0xb')](),controller['show']);router['get']('/:id/configurations',auth['isAuthenticated'](),controller[_0x25ed('0xc')]);router[_0x25ed('0x8')](_0x25ed('0xd'),auth[_0x25ed('0xb')](),controller['getFields']);router[_0x25ed('0xe')]('/',auth[_0x25ed('0xb')](),controller[_0x25ed('0xf')]);router['post']('/:id/configurations',auth[_0x25ed('0xb')](),controller[_0x25ed('0x10')]);router[_0x25ed('0x11')](_0x25ed('0xa'),auth[_0x25ed('0xb')](),controller[_0x25ed('0x12')]);router['delete'](_0x25ed('0xa'),auth[_0x25ed('0xb')](),controller[_0x25ed('0x13')]);module['exports']=router;
\ No newline at end of file
index cb2c007..e54fbc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef82=['sequelize','STRING','HelpDesk'];(function(_0x201f06,_0x5a80b8){var _0x33b9f1=function(_0x76ba3e){while(--_0x76ba3e){_0x201f06['push'](_0x201f06['shift']());}};_0x33b9f1(++_0x5a80b8);}(_0xef82,0x1c5));var _0x2ef8=function(_0x2112d4,_0x3c863c){_0x2112d4=_0x2112d4-0x0;var _0x434972=_0xef82[_0x2112d4];return _0x434972;};'use strict';var Sequelize=require(_0x2ef8('0x0'));module['exports']={'name':{'type':Sequelize[_0x2ef8('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x2ef8('0x1')]},'username':{'type':Sequelize[_0x2ef8('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x2ef8('0x1')],'allowNull':![],'defaultValue':_0x2ef8('0x2')},'remoteUri':{'type':Sequelize[_0x2ef8('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x2ef8('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x2ef8('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x9a79=['sequelize','exports','STRING','HelpDesk'];(function(_0x4e6842,_0x468c69){var _0x2015d0=function(_0x1c7a7c){while(--_0x1c7a7c){_0x4e6842['push'](_0x4e6842['shift']());}};_0x2015d0(++_0x468c69);}(_0x9a79,0xec));var _0x99a7=function(_0x3efe87,_0x35ad48){_0x3efe87=_0x3efe87-0x0;var _0x56a4cc=_0x9a79[_0x3efe87];return _0x56a4cc;};'use strict';var Sequelize=require(_0x99a7('0x0'));module[_0x99a7('0x1')]={'name':{'type':Sequelize[_0x99a7('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x99a7('0x2')]},'username':{'type':Sequelize['STRING'],'allowNull':![]},'moduleName':{'type':Sequelize[_0x99a7('0x2')],'allowNull':![],'defaultValue':_0x99a7('0x3')},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x99a7('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x99a7('0x2')],'allowNull':![]}};
\ No newline at end of file
index e893ae6..3b641c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f1a=['VtigerField','username','description','moduleName','remoteUri','serverUrl','accessKey','slice','substring','lastIndexOf','%s/webservice.php','GET','getchallenge','success','login','result','token','describe','sessionName','reference','owner','remove','includes','editable','label','startsWith','cf_','picklist','picklistValues','value','vTiger\x20error:\x20','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','Wrong\x20credentials','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','crypto','desk.js','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','name','send','index','map','VtigerAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','include','findAll','catch','show','params','includeAll','find','create','body','destroy','getConfigurations','findOne','VtigerConfiguration','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions'];(function(_0x2d33c7,_0x20e736){var _0x3f5a29=function(_0x41f9fb){while(--_0x41f9fb){_0x2d33c7['push'](_0x2d33c7['shift']());}};_0x3f5a29(++_0x20e736);}(_0x1f1a,0x98));var _0xa1f1=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0x1f1a[_0x2a6809];return _0x11c371;};'use strict';var emlformat=require(_0xa1f1('0x0'));var rimraf=require(_0xa1f1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa1f1('0x2'));var moment=require(_0xa1f1('0x3'));var BPromise=require(_0xa1f1('0x4'));var Mustache=require(_0xa1f1('0x5'));var util=require(_0xa1f1('0x6'));var path=require(_0xa1f1('0x7'));var sox=require(_0xa1f1('0x8'));var csv=require('to-csv');var ejs=require(_0xa1f1('0x9'));var fs=require('fs');var fs_extra=require(_0xa1f1('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xa1f1('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xa1f1('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa1f1('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa1f1('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa1f1('0xf'));var logger=require(_0xa1f1('0x10'))(_0xa1f1('0x11'));var utils=require(_0xa1f1('0x12'));var config=require(_0xa1f1('0x13'));var licenseUtil=require(_0xa1f1('0x14'));var db=require('../../mysqldb')['db'];var integrations=require(_0xa1f1('0x15'));function respondWithStatusCode(_0x1f6ab3,_0x41b60d){_0x41b60d=_0x41b60d||0xcc;return function(_0x1c0429){if(_0x1c0429){return _0x1f6ab3[_0xa1f1('0x16')](_0x41b60d);}return _0x1f6ab3[_0xa1f1('0x17')](_0x41b60d)[_0xa1f1('0x18')]();};}function respondWithResult(_0x2435ce,_0x4af7d1){_0x4af7d1=_0x4af7d1||0xc8;return function(_0x238a53){if(_0x238a53){return _0x2435ce[_0xa1f1('0x17')](_0x4af7d1)[_0xa1f1('0x19')](_0x238a53);}};}function respondWithFilteredResult(_0x3e51c3,_0x3acf54){return function(_0x409f8b){if(_0x409f8b){var _0x5c7e1e=typeof _0x3acf54[_0xa1f1('0x1a')]===_0xa1f1('0x1b')&&typeof _0x3acf54[_0xa1f1('0x1c')]==='undefined';var _0x295bd8=_0x409f8b['count'];var _0x587037=_0x5c7e1e?0x0:_0x3acf54[_0xa1f1('0x1a')];var _0x4ab080=_0x5c7e1e?_0x409f8b[_0xa1f1('0x1d')]:_0x3acf54[_0xa1f1('0x1a')]+_0x3acf54[_0xa1f1('0x1c')];var _0x42255c;if(_0x4ab080>=_0x295bd8){_0x4ab080=_0x295bd8;_0x42255c=0xc8;}else{_0x42255c=0xce;}_0x3e51c3[_0xa1f1('0x17')](_0x42255c);return _0x3e51c3[_0xa1f1('0x1e')](_0xa1f1('0x1f'),_0x587037+'-'+_0x4ab080+'/'+_0x295bd8)['json'](_0x409f8b);}return null;};}function patchUpdates(_0x4c3db1){return function(_0x556025){try{jsonpatch[_0xa1f1('0x20')](_0x556025,_0x4c3db1,!![]);}catch(_0x41689b){return BPromise[_0xa1f1('0x21')](_0x41689b);}return _0x556025[_0xa1f1('0x22')]();};}function saveUpdates(_0x25a031,_0x1960f1){return function(_0xb827b7){if(_0xb827b7){return _0xb827b7[_0xa1f1('0x23')](_0x25a031)[_0xa1f1('0x24')](function(_0x55f45f){return _0x55f45f;});}return null;};}function removeEntity(_0x2ffbc5,_0x1478a3){return function(_0x18a7b4){if(_0x18a7b4){return _0x18a7b4['destroy']()[_0xa1f1('0x24')](function(){_0x2ffbc5['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b6a5f,_0x5b279c){return function(_0xeebbdb){if(!_0xeebbdb){_0x4b6a5f[_0xa1f1('0x16')](0x194);}return _0xeebbdb;};}function handleError(_0x1f51b5,_0x3227cc){_0x3227cc=_0x3227cc||0x1f4;return function(_0x385ac6){logger['error'](_0x385ac6['stack']);if(_0x385ac6[_0xa1f1('0x25')]){delete _0x385ac6[_0xa1f1('0x25')];}_0x1f51b5[_0xa1f1('0x17')](_0x3227cc)[_0xa1f1('0x26')](_0x385ac6);};}exports[_0xa1f1('0x27')]=function(_0x16ab74,_0x266719){var _0x39e56f={},_0x55b9f8={},_0xa89f0d={'count':0x0,'rows':[]};var _0x155cea=_[_0xa1f1('0x28')](db[_0xa1f1('0x29')][_0xa1f1('0x2a')],function(_0x5d543d){return{'name':_0x5d543d[_0xa1f1('0x2b')],'type':_0x5d543d[_0xa1f1('0x2c')]['key']};});_0x55b9f8[_0xa1f1('0x2d')]=_['map'](_0x155cea,_0xa1f1('0x25'));_0x55b9f8[_0xa1f1('0x2e')]=_[_0xa1f1('0x2f')](_0x16ab74[_0xa1f1('0x2e')]);_0x55b9f8[_0xa1f1('0x30')]=_[_0xa1f1('0x31')](_0x55b9f8[_0xa1f1('0x2d')],_0x55b9f8[_0xa1f1('0x2e')]);_0x39e56f[_0xa1f1('0x32')]=_[_0xa1f1('0x31')](_0x55b9f8[_0xa1f1('0x2d')],qs[_0xa1f1('0x33')](_0x16ab74[_0xa1f1('0x2e')][_0xa1f1('0x33')]));_0x39e56f[_0xa1f1('0x32')]=_0x39e56f['attributes'][_0xa1f1('0x34')]?_0x39e56f['attributes']:_0x55b9f8[_0xa1f1('0x2d')];if(!_0x16ab74['query'][_0xa1f1('0x35')](_0xa1f1('0x36'))){_0x39e56f[_0xa1f1('0x1c')]=qs[_0xa1f1('0x1c')](_0x16ab74[_0xa1f1('0x2e')]['limit']);_0x39e56f['offset']=qs[_0xa1f1('0x1a')](_0x16ab74[_0xa1f1('0x2e')][_0xa1f1('0x1a')]);}_0x39e56f[_0xa1f1('0x37')]=qs[_0xa1f1('0x38')](_0x16ab74['query'][_0xa1f1('0x38')]);_0x39e56f['where']=qs['filters'](_[_0xa1f1('0x39')](_0x16ab74['query'],_0x55b9f8[_0xa1f1('0x30')]),_0x155cea);if(_0x16ab74[_0xa1f1('0x2e')][_0xa1f1('0x3a')]){_0x39e56f[_0xa1f1('0x3b')]=_[_0xa1f1('0x3c')](_0x39e56f[_0xa1f1('0x3b')],{'$or':_[_0xa1f1('0x28')](_0x155cea,function(_0x4f4aaf){if(_0x4f4aaf['type']!==_0xa1f1('0x3d')){var _0x150911={};_0x150911[_0x4f4aaf[_0xa1f1('0x25')]]={'$like':'%'+_0x16ab74[_0xa1f1('0x2e')][_0xa1f1('0x3a')]+'%'};return _0x150911;}})});}_0x39e56f=_[_0xa1f1('0x3c')]({},_0x39e56f,_0x16ab74[_0xa1f1('0x3e')]);var _0x2dbd93={'where':_0x39e56f[_0xa1f1('0x3b')]};return db[_0xa1f1('0x29')][_0xa1f1('0x1d')](_0x2dbd93)[_0xa1f1('0x24')](function(_0x2f7d72){_0xa89f0d['count']=_0x2f7d72;if(_0x16ab74[_0xa1f1('0x2e')]['includeAll']){_0x39e56f[_0xa1f1('0x3f')]=[{'all':!![]}];}return db[_0xa1f1('0x29')][_0xa1f1('0x40')](_0x39e56f);})[_0xa1f1('0x24')](function(_0xee21c4){_0xa89f0d['rows']=_0xee21c4;return _0xa89f0d;})[_0xa1f1('0x24')](respondWithFilteredResult(_0x266719,_0x39e56f))[_0xa1f1('0x41')](handleError(_0x266719,null));};exports[_0xa1f1('0x42')]=function(_0x52a226,_0x4a4a65){var _0x1c069={'raw':![],'where':{'id':_0x52a226[_0xa1f1('0x43')]['id']}},_0x29e1eb={};_0x29e1eb['model']=_[_0xa1f1('0x2f')](db[_0xa1f1('0x29')][_0xa1f1('0x2a')]);_0x29e1eb[_0xa1f1('0x2e')]=_[_0xa1f1('0x2f')](_0x52a226[_0xa1f1('0x2e')]);_0x29e1eb[_0xa1f1('0x30')]=_['intersection'](_0x29e1eb[_0xa1f1('0x2d')],_0x29e1eb[_0xa1f1('0x2e')]);_0x1c069[_0xa1f1('0x32')]=_[_0xa1f1('0x31')](_0x29e1eb[_0xa1f1('0x2d')],qs[_0xa1f1('0x33')](_0x52a226[_0xa1f1('0x2e')]['fields']));_0x1c069['attributes']=_0x1c069['attributes'][_0xa1f1('0x34')]?_0x1c069['attributes']:_0x29e1eb['model'];if(_0x52a226[_0xa1f1('0x2e')][_0xa1f1('0x44')]){_0x1c069['include']=[{'all':!![]}];}_0x1c069=_['merge']({},_0x1c069,_0x52a226[_0xa1f1('0x3e')]);return db[_0xa1f1('0x29')][_0xa1f1('0x45')](_0x1c069)[_0xa1f1('0x24')](handleEntityNotFound(_0x4a4a65,null))['then'](respondWithResult(_0x4a4a65,null))[_0xa1f1('0x41')](handleError(_0x4a4a65,null));};exports[_0xa1f1('0x46')]=function(_0x103a3a,_0x1f20c0){return db['VtigerAccount']['create'](_0x103a3a[_0xa1f1('0x47')],{})[_0xa1f1('0x24')](respondWithResult(_0x1f20c0,0xc9))[_0xa1f1('0x41')](handleError(_0x1f20c0,null));};exports[_0xa1f1('0x23')]=function(_0x30e9e5,_0x51b08c){if(_0x30e9e5[_0xa1f1('0x47')]['id']){delete _0x30e9e5[_0xa1f1('0x47')]['id'];}return db[_0xa1f1('0x29')][_0xa1f1('0x45')]({'where':{'id':_0x30e9e5[_0xa1f1('0x43')]['id']}})[_0xa1f1('0x24')](handleEntityNotFound(_0x51b08c,null))[_0xa1f1('0x24')](saveUpdates(_0x30e9e5['body'],null))[_0xa1f1('0x24')](respondWithResult(_0x51b08c,null))[_0xa1f1('0x41')](handleError(_0x51b08c,null));};exports[_0xa1f1('0x48')]=function(_0x5b30ff,_0x46ba4d){return db[_0xa1f1('0x29')][_0xa1f1('0x45')]({'where':{'id':_0x5b30ff[_0xa1f1('0x43')]['id']}})['then'](handleEntityNotFound(_0x46ba4d,null))[_0xa1f1('0x24')](removeEntity(_0x46ba4d,null))[_0xa1f1('0x41')](handleError(_0x46ba4d,null));};exports[_0xa1f1('0x49')]=function(_0x57819a,_0x3af2f7,_0x31391e){var _0x3cee1f={};var _0xa69977={};var _0xd5880d;var _0x16733e;return db[_0xa1f1('0x29')][_0xa1f1('0x4a')]({'where':{'id':_0x57819a[_0xa1f1('0x43')]['id']}})[_0xa1f1('0x24')](handleEntityNotFound(_0x3af2f7,null))[_0xa1f1('0x24')](function(_0x28cb7f){if(_0x28cb7f){_0xd5880d=_0x28cb7f;_0xa69977['model']=_[_0xa1f1('0x2f')](db[_0xa1f1('0x4b')][_0xa1f1('0x2a')]);_0xa69977[_0xa1f1('0x2e')]=_[_0xa1f1('0x2f')](_0x57819a[_0xa1f1('0x2e')]);_0xa69977[_0xa1f1('0x30')]=_[_0xa1f1('0x31')](_0xa69977[_0xa1f1('0x2d')],_0xa69977[_0xa1f1('0x2e')]);_0x3cee1f[_0xa1f1('0x32')]=_[_0xa1f1('0x31')](_0xa69977[_0xa1f1('0x2d')],qs[_0xa1f1('0x33')](_0x57819a['query'][_0xa1f1('0x33')]));_0x3cee1f[_0xa1f1('0x32')]=_0x3cee1f[_0xa1f1('0x32')]['length']?_0x3cee1f[_0xa1f1('0x32')]:_0xa69977[_0xa1f1('0x2d')];_0x3cee1f[_0xa1f1('0x37')]=qs[_0xa1f1('0x38')](_0x57819a['query'][_0xa1f1('0x38')]);_0x3cee1f[_0xa1f1('0x3b')]=qs['filters'](_['pick'](_0x57819a[_0xa1f1('0x2e')],_0xa69977[_0xa1f1('0x30')]));if(_0x57819a[_0xa1f1('0x2e')][_0xa1f1('0x3a')]){_0x3cee1f[_0xa1f1('0x3b')]=_[_0xa1f1('0x3c')](_0x3cee1f[_0xa1f1('0x3b')],{'$or':_[_0xa1f1('0x28')](_0x3cee1f[_0xa1f1('0x32')],function(_0x308bb8){var _0x5d8451={};_0x5d8451[_0x308bb8]={'$like':'%'+_0x57819a[_0xa1f1('0x2e')][_0xa1f1('0x3a')]+'%'};return _0x5d8451;})});}_0x3cee1f=_['merge']({},_0x3cee1f,_0x57819a['options']);return _0xd5880d[_0xa1f1('0x49')](_0x3cee1f);}})['then'](function(_0x54ef96){if(_0x54ef96){_0x16733e=_0x54ef96['length'];if(!_0x57819a[_0xa1f1('0x2e')][_0xa1f1('0x35')](_0xa1f1('0x36'))){_0x3cee1f[_0xa1f1('0x1c')]=qs[_0xa1f1('0x1c')](_0x57819a[_0xa1f1('0x2e')]['limit']);_0x3cee1f[_0xa1f1('0x1a')]=qs['offset'](_0x57819a[_0xa1f1('0x2e')]['offset']);}return _0xd5880d['getConfigurations'](_0x3cee1f);}})[_0xa1f1('0x24')](function(_0x282589){if(_0x282589){return _0x282589?{'count':_0x16733e,'rows':_0x282589}:null;}})[_0xa1f1('0x24')](respondWithResult(_0x3af2f7,null))[_0xa1f1('0x41')](handleError(_0x3af2f7,null));};exports[_0xa1f1('0x4c')]=function(_0x5df7ec,_0x563c0a,_0x16eeae){if(_0x5df7ec[_0xa1f1('0x47')]['id']){delete _0x5df7ec[_0xa1f1('0x47')]['id'];}return db[_0xa1f1('0x29')][_0xa1f1('0x4a')]({'where':{'id':_0x5df7ec[_0xa1f1('0x43')]['id']}})[_0xa1f1('0x24')](handleEntityNotFound(_0x563c0a,null))[_0xa1f1('0x24')](function(_0x1ff43d){if(_0x1ff43d){_0x5df7ec[_0xa1f1('0x47')][_0xa1f1('0x4d')]=_0x1ff43d['id'];_0x5df7ec['body'][_0xa1f1('0x4e')]=integrations['getSubjects'](_0x5df7ec[_0xa1f1('0x47')][_0xa1f1('0x4f')],_0x5df7ec['body'][_0xa1f1('0x2c')]);_0x5df7ec['body'][_0xa1f1('0x50')]=integrations[_0xa1f1('0x51')](_0x5df7ec['body']['channel'],_0x5df7ec['body'][_0xa1f1('0x2c')]);return db[_0xa1f1('0x4b')][_0xa1f1('0x46')](_0x5df7ec[_0xa1f1('0x47')],{'include':[{'model':db[_0xa1f1('0x52')],'as':_0xa1f1('0x4e')},{'model':db['VtigerField'],'as':_0xa1f1('0x50')}]});}return null;})[_0xa1f1('0x24')](respondWithResult(_0x563c0a,null))[_0xa1f1('0x41')](handleError(_0x563c0a,null));};var md5=require('md5');exports['getFields']=function(_0x156afb,_0x18728a,_0x4d358b){var _0x55ab77=null;var _0x116ef1=null;var _0x5d4e58=null;var _0x5440ed=null;var _0x38d421='';return db['VtigerAccount'][_0xa1f1('0x4a')]({'where':{'id':_0x156afb['params']['id']},'attributes':['id',_0xa1f1('0x25'),_0xa1f1('0x53'),_0xa1f1('0x54'),_0xa1f1('0x55'),_0xa1f1('0x56'),_0xa1f1('0x57'),_0xa1f1('0x58')]})['then'](handleEntityNotFound(_0x18728a,null))[_0xa1f1('0x24')](function(_0x4e9ecc){if(_0x4e9ecc){_0x55ab77=_0x4e9ecc[_0xa1f1('0x53')];_0x116ef1=_0x4e9ecc[_0xa1f1('0x58')];_0x5d4e58=_0x4e9ecc[_0xa1f1('0x55')];_0x38d421=_0x4e9ecc[_0xa1f1('0x56')];var _0x168fe5=_0x38d421[_0xa1f1('0x59')](-0x1);if(_0x168fe5==='/'){_0x38d421=_0x38d421[_0xa1f1('0x5a')](0x0,_0x38d421[_0xa1f1('0x5b')](_0x168fe5));}_0x5440ed=util['format'](_0xa1f1('0x5c'),_0x38d421);var _0x28b36c={'method':_0xa1f1('0x5d'),'uri':_0x5440ed,'qs':{'operation':_0xa1f1('0x5e'),'username':_0x4e9ecc[_0xa1f1('0x53')]},'json':!![]};return rp(_0x28b36c);}})[_0xa1f1('0x24')](function(_0x5a9fff){if(_0x5a9fff[_0xa1f1('0x5f')]){var _0x496a39={'method':'POST','uri':_0x5440ed,'form':{'operation':_0xa1f1('0x60'),'username':_0x55ab77,'accessKey':md5(_0x5a9fff[_0xa1f1('0x61')][_0xa1f1('0x62')]+_0x116ef1)},'json':!![]};return rp(_0x496a39);}})['then'](function(_0x1c1520){if(_0x1c1520[_0xa1f1('0x5f')]){var _0xa1ce5e={'method':'GET','uri':_0x5440ed,'qs':{'operation':_0xa1f1('0x63'),'username':_0x55ab77,'sessionName':_0x1c1520[_0xa1f1('0x61')][_0xa1f1('0x64')],'elementType':_0x5d4e58},'json':!![]};return rp(_0xa1ce5e);}})['then'](function(_0x1d8988){if(_0x1d8988[_0xa1f1('0x5f')]){var _0x65452b=['autogenerated',_0xa1f1('0x65'),_0xa1f1('0x66')];_[_0xa1f1('0x67')](_0x1d8988['result'][_0xa1f1('0x33')],function(_0x44e656){return _0x65452b[_0xa1f1('0x68')](_0x44e656['type']['name']);});_[_0xa1f1('0x67')](_0x1d8988[_0xa1f1('0x61')][_0xa1f1('0x33')],function(_0x4d25bc){return _0x4d25bc[_0xa1f1('0x69')]==='false';});return{'count':_0x1d8988[_0xa1f1('0x61')][_0xa1f1('0x33')][_0xa1f1('0x34')],'rows':_[_0xa1f1('0x28')](_0x1d8988[_0xa1f1('0x61')][_0xa1f1('0x33')],function(_0x1dc1db){return{'id':_0x1dc1db[_0xa1f1('0x25')],'name':_0x1dc1db[_0xa1f1('0x6a')],'custom':_[_0xa1f1('0x6b')](_0x1dc1db['name'],_0xa1f1('0x6c'))?!![]:![],'options':_0x1dc1db['type'][_0xa1f1('0x25')]===_0xa1f1('0x6d')&&_0x1dc1db[_0xa1f1('0x2c')][_0xa1f1('0x6e')][_0xa1f1('0x34')]>0x0?_[_0xa1f1('0x28')](_0x1dc1db[_0xa1f1('0x2c')][_0xa1f1('0x6e')],function(_0x48855d){return{'name':_0x48855d[_0xa1f1('0x6a')],'value':_0x48855d[_0xa1f1('0x6f')]};}):[]};})};}})['then'](respondWithResult(_0x18728a,null))[_0xa1f1('0x41')](function(_0x2da0ae){console['log'](_0xa1f1('0x70')+_0x2da0ae);var _0x10f46a=_0x156afb[_0xa1f1('0x2e')]['test']?0x1f4:_0x2da0ae[_0xa1f1('0x71')]||0x1f4;logger['error'](_0xa1f1('0x72'),_0xa1f1('0x73'),_0x10f46a,JSON['stringify'](_0x2da0ae));delete _0x2da0ae[_0xa1f1('0x25')];if(_0x10f46a===0x191){_0x10f46a=0x190;}_0x18728a[_0xa1f1('0x17')](_0x10f46a)['send'](_0x156afb['query']['test']?{'message':_0xa1f1('0x74'),'statusCode':_0x2da0ae[_0xa1f1('0x71')]}:_0x2da0ae);});};
\ No newline at end of file
+var _0xf663=['query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','keys','includeAll','find','create','body','VtigerConfiguration','nolimit','getConfigurations','addConfiguration','findOne','AccountId','getSubjects','channel','getDescriptions','VtigerField','Descriptions','md5','getFields','username','description','moduleName','remoteUri','serverUrl','accessKey','slice','lastIndexOf','%s/webservice.php','GET','getchallenge','success','POST','login','result','token','describe','sessionName','autogenerated','reference','owner','remove','includes','editable','false','label','cf_','picklist','picklistValues','value','log','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','stack','name','index','map','VtigerAccount','rawAttributes','fieldName','type','key','model'];(function(_0x5c3274,_0x3dcdaa){var _0x3befa4=function(_0x5af42b){while(--_0x5af42b){_0x5c3274['push'](_0x5c3274['shift']());}};_0x3befa4(++_0x3dcdaa);}(_0xf663,0x1b9));var _0x3f66=function(_0x115f14,_0x1242e8){_0x115f14=_0x115f14-0x0;var _0x1785ee=_0xf663[_0x115f14];return _0x1785ee;};'use strict';var emlformat=require(_0x3f66('0x0'));var rimraf=require(_0x3f66('0x1'));var zipdir=require(_0x3f66('0x2'));var jsonpatch=require(_0x3f66('0x3'));var rp=require(_0x3f66('0x4'));var moment=require('moment');var BPromise=require(_0x3f66('0x5'));var Mustache=require(_0x3f66('0x6'));var util=require('util');var path=require(_0x3f66('0x7'));var sox=require(_0x3f66('0x8'));var csv=require(_0x3f66('0x9'));var ejs=require(_0x3f66('0xa'));var fs=require('fs');var fs_extra=require(_0x3f66('0xb'));var _=require(_0x3f66('0xc'));var squel=require(_0x3f66('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x3f66('0x9'));var querystring=require('querystring');var Papa=require(_0x3f66('0xe'));var Redis=require(_0x3f66('0xf'));var authService=require(_0x3f66('0x10'));var qs=require(_0x3f66('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3f66('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x3f66('0x13'));var licenseUtil=require(_0x3f66('0x14'));var db=require(_0x3f66('0x15'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3592a1,_0x38f733){_0x38f733=_0x38f733||0xcc;return function(_0x5271b0){if(_0x5271b0){return _0x3592a1[_0x3f66('0x16')](_0x38f733);}return _0x3592a1[_0x3f66('0x17')](_0x38f733)[_0x3f66('0x18')]();};}function respondWithResult(_0x31a7f4,_0x982a87){_0x982a87=_0x982a87||0xc8;return function(_0x2acb77){if(_0x2acb77){return _0x31a7f4[_0x3f66('0x17')](_0x982a87)[_0x3f66('0x19')](_0x2acb77);}};}function respondWithFilteredResult(_0x3fea7d,_0x229acc){return function(_0x3953c1){if(_0x3953c1){var _0xe82836=typeof _0x229acc[_0x3f66('0x1a')]===_0x3f66('0x1b')&&typeof _0x229acc[_0x3f66('0x1c')]==='undefined';var _0x37e513=_0x3953c1['count'];var _0xfee373=_0xe82836?0x0:_0x229acc[_0x3f66('0x1a')];var _0x2b4637=_0xe82836?_0x3953c1[_0x3f66('0x1d')]:_0x229acc[_0x3f66('0x1a')]+_0x229acc[_0x3f66('0x1c')];var _0xdbe05c;if(_0x2b4637>=_0x37e513){_0x2b4637=_0x37e513;_0xdbe05c=0xc8;}else{_0xdbe05c=0xce;}_0x3fea7d[_0x3f66('0x17')](_0xdbe05c);return _0x3fea7d['set'](_0x3f66('0x1e'),_0xfee373+'-'+_0x2b4637+'/'+_0x37e513)[_0x3f66('0x19')](_0x3953c1);}return null;};}function patchUpdates(_0x81e3d0){return function(_0x351cff){try{jsonpatch[_0x3f66('0x1f')](_0x351cff,_0x81e3d0,!![]);}catch(_0x1a6354){return BPromise[_0x3f66('0x20')](_0x1a6354);}return _0x351cff[_0x3f66('0x21')]();};}function saveUpdates(_0x24e919,_0x29f61e){return function(_0x516d6f){if(_0x516d6f){return _0x516d6f[_0x3f66('0x22')](_0x24e919)['then'](function(_0x3fbeb0){return _0x3fbeb0;});}return null;};}function removeEntity(_0x180a9d,_0x491008){return function(_0x5f6578){if(_0x5f6578){return _0x5f6578[_0x3f66('0x23')]()[_0x3f66('0x24')](function(){_0x180a9d[_0x3f66('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3212e2,_0x192b0b){return function(_0x7cda7b){if(!_0x7cda7b){_0x3212e2[_0x3f66('0x16')](0x194);}return _0x7cda7b;};}function handleError(_0x46f6bf,_0x576b2f){_0x576b2f=_0x576b2f||0x1f4;return function(_0x302fe8){logger['error'](_0x302fe8[_0x3f66('0x25')]);if(_0x302fe8[_0x3f66('0x26')]){delete _0x302fe8[_0x3f66('0x26')];}_0x46f6bf[_0x3f66('0x17')](_0x576b2f)['send'](_0x302fe8);};}exports[_0x3f66('0x27')]=function(_0x5f56b8,_0x24c125){var _0xb7c70={},_0xf2d7ed={},_0x410a35={'count':0x0,'rows':[]};var _0x3ddfea=_[_0x3f66('0x28')](db[_0x3f66('0x29')][_0x3f66('0x2a')],function(_0xd5e351){return{'name':_0xd5e351[_0x3f66('0x2b')],'type':_0xd5e351[_0x3f66('0x2c')][_0x3f66('0x2d')]};});_0xf2d7ed[_0x3f66('0x2e')]=_['map'](_0x3ddfea,_0x3f66('0x26'));_0xf2d7ed[_0x3f66('0x2f')]=_['keys'](_0x5f56b8[_0x3f66('0x2f')]);_0xf2d7ed[_0x3f66('0x30')]=_['intersection'](_0xf2d7ed['model'],_0xf2d7ed[_0x3f66('0x2f')]);_0xb7c70['attributes']=_[_0x3f66('0x31')](_0xf2d7ed['model'],qs[_0x3f66('0x32')](_0x5f56b8['query'][_0x3f66('0x32')]));_0xb7c70[_0x3f66('0x33')]=_0xb7c70[_0x3f66('0x33')][_0x3f66('0x34')]?_0xb7c70[_0x3f66('0x33')]:_0xf2d7ed[_0x3f66('0x2e')];if(!_0x5f56b8[_0x3f66('0x2f')][_0x3f66('0x35')]('nolimit')){_0xb7c70[_0x3f66('0x1c')]=qs['limit'](_0x5f56b8['query'][_0x3f66('0x1c')]);_0xb7c70['offset']=qs[_0x3f66('0x1a')](_0x5f56b8[_0x3f66('0x2f')][_0x3f66('0x1a')]);}_0xb7c70[_0x3f66('0x36')]=qs[_0x3f66('0x37')](_0x5f56b8[_0x3f66('0x2f')][_0x3f66('0x37')]);_0xb7c70[_0x3f66('0x38')]=qs[_0x3f66('0x30')](_[_0x3f66('0x39')](_0x5f56b8[_0x3f66('0x2f')],_0xf2d7ed[_0x3f66('0x30')]),_0x3ddfea);if(_0x5f56b8[_0x3f66('0x2f')][_0x3f66('0x3a')]){_0xb7c70[_0x3f66('0x38')]=_[_0x3f66('0x3b')](_0xb7c70[_0x3f66('0x38')],{'$or':_[_0x3f66('0x28')](_0x3ddfea,function(_0x541773){if(_0x541773['type']!==_0x3f66('0x3c')){var _0x4c0f2f={};_0x4c0f2f[_0x541773[_0x3f66('0x26')]]={'$like':'%'+_0x5f56b8[_0x3f66('0x2f')][_0x3f66('0x3a')]+'%'};return _0x4c0f2f;}})});}_0xb7c70=_[_0x3f66('0x3b')]({},_0xb7c70,_0x5f56b8[_0x3f66('0x3d')]);var _0x289ed4={'where':_0xb7c70[_0x3f66('0x38')]};return db[_0x3f66('0x29')]['count'](_0x289ed4)['then'](function(_0x5a889b){_0x410a35['count']=_0x5a889b;if(_0x5f56b8[_0x3f66('0x2f')]['includeAll']){_0xb7c70[_0x3f66('0x3e')]=[{'all':!![]}];}return db[_0x3f66('0x29')][_0x3f66('0x3f')](_0xb7c70);})['then'](function(_0x175bb4){_0x410a35[_0x3f66('0x40')]=_0x175bb4;return _0x410a35;})[_0x3f66('0x24')](respondWithFilteredResult(_0x24c125,_0xb7c70))[_0x3f66('0x41')](handleError(_0x24c125,null));};exports[_0x3f66('0x42')]=function(_0x3c6e1a,_0x1a0e0){var _0x4d5e87={'raw':![],'where':{'id':_0x3c6e1a[_0x3f66('0x43')]['id']}},_0x129d5b={};_0x129d5b[_0x3f66('0x2e')]=_[_0x3f66('0x44')](db[_0x3f66('0x29')][_0x3f66('0x2a')]);_0x129d5b[_0x3f66('0x2f')]=_['keys'](_0x3c6e1a[_0x3f66('0x2f')]);_0x129d5b[_0x3f66('0x30')]=_[_0x3f66('0x31')](_0x129d5b['model'],_0x129d5b[_0x3f66('0x2f')]);_0x4d5e87[_0x3f66('0x33')]=_[_0x3f66('0x31')](_0x129d5b[_0x3f66('0x2e')],qs[_0x3f66('0x32')](_0x3c6e1a[_0x3f66('0x2f')][_0x3f66('0x32')]));_0x4d5e87['attributes']=_0x4d5e87[_0x3f66('0x33')][_0x3f66('0x34')]?_0x4d5e87[_0x3f66('0x33')]:_0x129d5b['model'];if(_0x3c6e1a[_0x3f66('0x2f')][_0x3f66('0x45')]){_0x4d5e87[_0x3f66('0x3e')]=[{'all':!![]}];}_0x4d5e87=_[_0x3f66('0x3b')]({},_0x4d5e87,_0x3c6e1a[_0x3f66('0x3d')]);return db['VtigerAccount'][_0x3f66('0x46')](_0x4d5e87)[_0x3f66('0x24')](handleEntityNotFound(_0x1a0e0,null))[_0x3f66('0x24')](respondWithResult(_0x1a0e0,null))['catch'](handleError(_0x1a0e0,null));};exports[_0x3f66('0x47')]=function(_0x54ad29,_0x1d8862){return db[_0x3f66('0x29')][_0x3f66('0x47')](_0x54ad29[_0x3f66('0x48')],{})[_0x3f66('0x24')](respondWithResult(_0x1d8862,0xc9))[_0x3f66('0x41')](handleError(_0x1d8862,null));};exports[_0x3f66('0x22')]=function(_0x1707be,_0x28845e){if(_0x1707be[_0x3f66('0x48')]['id']){delete _0x1707be['body']['id'];}return db[_0x3f66('0x29')][_0x3f66('0x46')]({'where':{'id':_0x1707be[_0x3f66('0x43')]['id']}})[_0x3f66('0x24')](handleEntityNotFound(_0x28845e,null))[_0x3f66('0x24')](saveUpdates(_0x1707be['body'],null))[_0x3f66('0x24')](respondWithResult(_0x28845e,null))[_0x3f66('0x41')](handleError(_0x28845e,null));};exports[_0x3f66('0x23')]=function(_0x4ec018,_0x533471){return db[_0x3f66('0x29')]['find']({'where':{'id':_0x4ec018[_0x3f66('0x43')]['id']}})[_0x3f66('0x24')](handleEntityNotFound(_0x533471,null))['then'](removeEntity(_0x533471,null))[_0x3f66('0x41')](handleError(_0x533471,null));};exports['getConfigurations']=function(_0x2f74d1,_0x15c96a,_0x122006){var _0x28601d={};var _0x2c4b08={};var _0x5902b4;var _0x364234;return db[_0x3f66('0x29')]['findOne']({'where':{'id':_0x2f74d1[_0x3f66('0x43')]['id']}})[_0x3f66('0x24')](handleEntityNotFound(_0x15c96a,null))[_0x3f66('0x24')](function(_0x3fb78d){if(_0x3fb78d){_0x5902b4=_0x3fb78d;_0x2c4b08[_0x3f66('0x2e')]=_[_0x3f66('0x44')](db[_0x3f66('0x49')][_0x3f66('0x2a')]);_0x2c4b08[_0x3f66('0x2f')]=_[_0x3f66('0x44')](_0x2f74d1[_0x3f66('0x2f')]);_0x2c4b08['filters']=_['intersection'](_0x2c4b08[_0x3f66('0x2e')],_0x2c4b08[_0x3f66('0x2f')]);_0x28601d[_0x3f66('0x33')]=_['intersection'](_0x2c4b08[_0x3f66('0x2e')],qs[_0x3f66('0x32')](_0x2f74d1[_0x3f66('0x2f')][_0x3f66('0x32')]));_0x28601d[_0x3f66('0x33')]=_0x28601d['attributes'][_0x3f66('0x34')]?_0x28601d['attributes']:_0x2c4b08[_0x3f66('0x2e')];_0x28601d['order']=qs[_0x3f66('0x37')](_0x2f74d1[_0x3f66('0x2f')][_0x3f66('0x37')]);_0x28601d[_0x3f66('0x38')]=qs['filters'](_['pick'](_0x2f74d1[_0x3f66('0x2f')],_0x2c4b08[_0x3f66('0x30')]));if(_0x2f74d1['query'][_0x3f66('0x3a')]){_0x28601d['where']=_[_0x3f66('0x3b')](_0x28601d[_0x3f66('0x38')],{'$or':_[_0x3f66('0x28')](_0x28601d[_0x3f66('0x33')],function(_0x5ec5c5){var _0xe4752d={};_0xe4752d[_0x5ec5c5]={'$like':'%'+_0x2f74d1[_0x3f66('0x2f')][_0x3f66('0x3a')]+'%'};return _0xe4752d;})});}_0x28601d=_[_0x3f66('0x3b')]({},_0x28601d,_0x2f74d1['options']);return _0x5902b4['getConfigurations'](_0x28601d);}})['then'](function(_0x27515c){if(_0x27515c){_0x364234=_0x27515c[_0x3f66('0x34')];if(!_0x2f74d1[_0x3f66('0x2f')][_0x3f66('0x35')](_0x3f66('0x4a'))){_0x28601d[_0x3f66('0x1c')]=qs[_0x3f66('0x1c')](_0x2f74d1['query'][_0x3f66('0x1c')]);_0x28601d[_0x3f66('0x1a')]=qs['offset'](_0x2f74d1['query'][_0x3f66('0x1a')]);}return _0x5902b4[_0x3f66('0x4b')](_0x28601d);}})['then'](function(_0x2717ac){if(_0x2717ac){return _0x2717ac?{'count':_0x364234,'rows':_0x2717ac}:null;}})[_0x3f66('0x24')](respondWithResult(_0x15c96a,null))[_0x3f66('0x41')](handleError(_0x15c96a,null));};exports[_0x3f66('0x4c')]=function(_0x5ef96a,_0x2bec31,_0x28d6dd){if(_0x5ef96a[_0x3f66('0x48')]['id']){delete _0x5ef96a['body']['id'];}return db['VtigerAccount'][_0x3f66('0x4d')]({'where':{'id':_0x5ef96a['params']['id']}})['then'](handleEntityNotFound(_0x2bec31,null))[_0x3f66('0x24')](function(_0x202658){if(_0x202658){_0x5ef96a['body'][_0x3f66('0x4e')]=_0x202658['id'];_0x5ef96a[_0x3f66('0x48')]['Subjects']=integrations[_0x3f66('0x4f')](_0x5ef96a[_0x3f66('0x48')][_0x3f66('0x50')],_0x5ef96a['body'][_0x3f66('0x2c')]);_0x5ef96a['body']['Descriptions']=integrations[_0x3f66('0x51')](_0x5ef96a[_0x3f66('0x48')][_0x3f66('0x50')],_0x5ef96a[_0x3f66('0x48')][_0x3f66('0x2c')]);return db[_0x3f66('0x49')][_0x3f66('0x47')](_0x5ef96a[_0x3f66('0x48')],{'include':[{'model':db['VtigerField'],'as':'Subjects'},{'model':db[_0x3f66('0x52')],'as':_0x3f66('0x53')}]});}return null;})[_0x3f66('0x24')](respondWithResult(_0x2bec31,null))['catch'](handleError(_0x2bec31,null));};var md5=require(_0x3f66('0x54'));exports[_0x3f66('0x55')]=function(_0x52a526,_0x3b13d0,_0x5aa273){var _0x4533e7=null;var _0x2b14a0=null;var _0x79a767=null;var _0x4b0340=null;var _0x323f4c='';return db[_0x3f66('0x29')][_0x3f66('0x4d')]({'where':{'id':_0x52a526[_0x3f66('0x43')]['id']},'attributes':['id',_0x3f66('0x26'),_0x3f66('0x56'),_0x3f66('0x57'),_0x3f66('0x58'),_0x3f66('0x59'),_0x3f66('0x5a'),_0x3f66('0x5b')]})[_0x3f66('0x24')](handleEntityNotFound(_0x3b13d0,null))[_0x3f66('0x24')](function(_0x4ef216){if(_0x4ef216){_0x4533e7=_0x4ef216['username'];_0x2b14a0=_0x4ef216['accessKey'];_0x79a767=_0x4ef216[_0x3f66('0x58')];_0x323f4c=_0x4ef216[_0x3f66('0x59')];var _0x525c29=_0x323f4c[_0x3f66('0x5c')](-0x1);if(_0x525c29==='/'){_0x323f4c=_0x323f4c['substring'](0x0,_0x323f4c[_0x3f66('0x5d')](_0x525c29));}_0x4b0340=util['format'](_0x3f66('0x5e'),_0x323f4c);var _0x4ce20e={'method':_0x3f66('0x5f'),'uri':_0x4b0340,'qs':{'operation':_0x3f66('0x60'),'username':_0x4ef216[_0x3f66('0x56')]},'json':!![]};return rp(_0x4ce20e);}})[_0x3f66('0x24')](function(_0x5b26ca){if(_0x5b26ca[_0x3f66('0x61')]){var _0x580f38={'method':_0x3f66('0x62'),'uri':_0x4b0340,'form':{'operation':_0x3f66('0x63'),'username':_0x4533e7,'accessKey':md5(_0x5b26ca[_0x3f66('0x64')][_0x3f66('0x65')]+_0x2b14a0)},'json':!![]};return rp(_0x580f38);}})[_0x3f66('0x24')](function(_0x22c72e){if(_0x22c72e['success']){var _0x4a4383={'method':_0x3f66('0x5f'),'uri':_0x4b0340,'qs':{'operation':_0x3f66('0x66'),'username':_0x4533e7,'sessionName':_0x22c72e[_0x3f66('0x64')][_0x3f66('0x67')],'elementType':_0x79a767},'json':!![]};return rp(_0x4a4383);}})[_0x3f66('0x24')](function(_0xe60f81){if(_0xe60f81[_0x3f66('0x61')]){var _0x471d13=[_0x3f66('0x68'),_0x3f66('0x69'),_0x3f66('0x6a')];_[_0x3f66('0x6b')](_0xe60f81[_0x3f66('0x64')][_0x3f66('0x32')],function(_0x31f9a5){return _0x471d13[_0x3f66('0x6c')](_0x31f9a5[_0x3f66('0x2c')][_0x3f66('0x26')]);});_['remove'](_0xe60f81[_0x3f66('0x64')][_0x3f66('0x32')],function(_0x383d17){return _0x383d17[_0x3f66('0x6d')]===_0x3f66('0x6e');});return{'count':_0xe60f81[_0x3f66('0x64')][_0x3f66('0x32')][_0x3f66('0x34')],'rows':_[_0x3f66('0x28')](_0xe60f81[_0x3f66('0x64')][_0x3f66('0x32')],function(_0x397bca){return{'id':_0x397bca['name'],'name':_0x397bca[_0x3f66('0x6f')],'custom':_['startsWith'](_0x397bca[_0x3f66('0x26')],_0x3f66('0x70'))?!![]:![],'options':_0x397bca['type'][_0x3f66('0x26')]===_0x3f66('0x71')&&_0x397bca[_0x3f66('0x2c')][_0x3f66('0x72')][_0x3f66('0x34')]>0x0?_[_0x3f66('0x28')](_0x397bca['type']['picklistValues'],function(_0x3a6615){return{'name':_0x3a6615['label'],'value':_0x3a6615[_0x3f66('0x73')]};}):[]};})};}})[_0x3f66('0x24')](respondWithResult(_0x3b13d0,null))[_0x3f66('0x41')](function(_0x2ee775){console[_0x3f66('0x74')](_0x3f66('0x75')+_0x2ee775);var _0x2a3bda=_0x52a526['query'][_0x3f66('0x76')]?0x1f4:_0x2ee775[_0x3f66('0x77')]||0x1f4;logger['error'](_0x3f66('0x78'),_0x3f66('0x55'),_0x2a3bda,JSON['stringify'](_0x2ee775));delete _0x2ee775[_0x3f66('0x26')];if(_0x2a3bda===0x191){_0x2a3bda=0x190;}_0x3b13d0[_0x3f66('0x17')](_0x2a3bda)[_0x3f66('0x79')](_0x52a526[_0x3f66('0x2f')][_0x3f66('0x76')]?{'message':'Wrong\x20credentials','statusCode':_0x2ee775[_0x3f66('0x77')]}:_0x2ee775);});};
\ No newline at end of file
index 2f776e9..ff7b455 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c5e=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount','int_vtiger_accounts','lodash','util'];(function(_0x546357,_0x20a92e){var _0x1d7109=function(_0x4abfc2){while(--_0x4abfc2){_0x546357['push'](_0x546357['shift']());}};_0x1d7109(++_0x20a92e);}(_0x2c5e,0x139));var _0xe2c5=function(_0x27a5b8,_0x10b486){_0x27a5b8=_0x27a5b8-0x0;var _0x31d17e=_0x2c5e[_0x27a5b8];return _0x31d17e;};'use strict';var _=require(_0xe2c5('0x0'));var util=require(_0xe2c5('0x1'));var logger=require(_0xe2c5('0x2'))(_0xe2c5('0x3'));var moment=require(_0xe2c5('0x4'));var BPromise=require(_0xe2c5('0x5'));var rp=require(_0xe2c5('0x6'));var fs=require('fs');var path=require(_0xe2c5('0x7'));var rimraf=require('rimraf');var config=require(_0xe2c5('0x8'));var attributes=require(_0xe2c5('0x9'));var integrations=require(_0xe2c5('0xa'));module[_0xe2c5('0xb')]=function(_0xfd433,_0x172933){return _0xfd433[_0xe2c5('0xc')](_0xe2c5('0xd'),attributes,{'tableName':_0xe2c5('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x595a=['moment','request-promise','path','../../config/environment','../../components/integrations/configuration','exports','VtigerAccount','int_vtiger_accounts','lodash','../../config/logger','api'];(function(_0x50a6ca,_0x24fbcb){var _0x1aee9b=function(_0x42cbb9){while(--_0x42cbb9){_0x50a6ca['push'](_0x50a6ca['shift']());}};_0x1aee9b(++_0x24fbcb);}(_0x595a,0x8c));var _0xa595=function(_0x55e659,_0x233aa4){_0x55e659=_0x55e659-0x0;var _0xca08c7=_0x595a[_0x55e659];return _0xca08c7;};'use strict';var _=require(_0xa595('0x0'));var util=require('util');var logger=require(_0xa595('0x1'))(_0xa595('0x2'));var moment=require(_0xa595('0x3'));var BPromise=require('bluebird');var rp=require(_0xa595('0x4'));var fs=require('fs');var path=require(_0xa595('0x5'));var rimraf=require('rimraf');var config=require(_0xa595('0x6'));var attributes=require('./intVtigerAccount.attributes');var integrations=require(_0xa595('0x7'));module[_0xa595('0x8')]=function(_0x5ee89d,_0x4794bb){return _0x5ee89d['define'](_0xa595('0x9'),attributes,{'tableName':_0xa595('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 697163c..6eba6fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69d3=['debug','stringify','error','code','message','result','catch','VtigerAccount','options','raw','attributes','limit','include','model','map','then','GetVtigerAccount','ShowVtigerAccount','find','where','lodash','util','moment','randomstring','ioredis','../../config/logger','jayson/promise','client','http','request','info','VtigerAccount,\x20%s,\x20%s','request\x20sent'];(function(_0x42e752,_0x1db51a){var _0x261222=function(_0x3de59e){while(--_0x3de59e){_0x42e752['push'](_0x42e752['shift']());}};_0x261222(++_0x1db51a);}(_0x69d3,0xda));var _0x369d=function(_0xd04fc2,_0x425c17){_0xd04fc2=_0xd04fc2-0x0;var _0x2e65e3=_0x69d3[_0xd04fc2];return _0x2e65e3;};'use strict';var _=require(_0x369d('0x0'));var util=require(_0x369d('0x1'));var moment=require(_0x369d('0x2'));var BPromise=require('bluebird');var rs=require(_0x369d('0x3'));var fs=require('fs');var Redis=require(_0x369d('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x369d('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x369d('0x6'));var client=jayson[_0x369d('0x7')][_0x369d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x424d8c,_0x1bd94c,_0x186302){return new BPromise(function(_0x3adb26,_0x2ac0ec){return client[_0x369d('0x9')](_0x424d8c,_0x186302)['then'](function(_0x5d2ded){logger[_0x369d('0xa')](_0x369d('0xb'),_0x1bd94c,_0x369d('0xc'));logger[_0x369d('0xd')]('VtigerAccount,\x20%s,\x20%s,\x20%s',_0x1bd94c,'request\x20sent',JSON[_0x369d('0xe')](_0x5d2ded));if(_0x5d2ded[_0x369d('0xf')]){if(_0x5d2ded[_0x369d('0xf')][_0x369d('0x10')]===0x1f4){logger[_0x369d('0xf')](_0x369d('0xb'),_0x1bd94c,_0x5d2ded['error'][_0x369d('0x11')]);return _0x2ac0ec(_0x5d2ded[_0x369d('0xf')][_0x369d('0x11')]);}logger[_0x369d('0xf')](_0x369d('0xb'),_0x1bd94c,_0x5d2ded['error']['message']);return _0x3adb26(_0x5d2ded['error'][_0x369d('0x11')]);}else{logger[_0x369d('0xa')](_0x369d('0xb'),_0x1bd94c,'request\x20sent');_0x3adb26(_0x5d2ded[_0x369d('0x12')][_0x369d('0x11')]);}})[_0x369d('0x13')](function(_0x4e234e){logger[_0x369d('0xf')](_0x369d('0xb'),_0x1bd94c,_0x4e234e);_0x2ac0ec(_0x4e234e);});});}exports['GetVtigerAccount']=function(_0x572513){var _0x597b67=this;return new Promise(function(_0x2946be,_0x4494b3){return db[_0x369d('0x14')]['findAll']({'raw':_0x572513[_0x369d('0x15')]?_0x572513[_0x369d('0x15')][_0x369d('0x16')]===undefined?!![]:![]:!![],'where':_0x572513[_0x369d('0x15')]?_0x572513[_0x369d('0x15')]['where']||null:null,'attributes':_0x572513[_0x369d('0x15')]?_0x572513[_0x369d('0x15')][_0x369d('0x17')]||null:null,'limit':_0x572513[_0x369d('0x15')]?_0x572513[_0x369d('0x15')][_0x369d('0x18')]||null:null,'include':_0x572513[_0x369d('0x15')]?_0x572513[_0x369d('0x15')]['include']?_['map'](_0x572513[_0x369d('0x15')][_0x369d('0x19')],function(_0xf7bc3a){return{'model':db[_0xf7bc3a[_0x369d('0x1a')]],'as':_0xf7bc3a['as'],'attributes':_0xf7bc3a[_0x369d('0x17')],'include':_0xf7bc3a[_0x369d('0x19')]?_[_0x369d('0x1b')](_0xf7bc3a['include'],function(_0x4dfe83){return{'model':db[_0x4dfe83[_0x369d('0x1a')]],'as':_0x4dfe83['as'],'attributes':_0x4dfe83[_0x369d('0x17')],'include':_0x4dfe83[_0x369d('0x19')]?_[_0x369d('0x1b')](_0x4dfe83[_0x369d('0x19')],function(_0x41e0cf){return{'model':db[_0x41e0cf[_0x369d('0x1a')]],'as':_0x41e0cf['as'],'attributes':_0x41e0cf['attributes']};}):[]};}):[]};}):[]:[]})[_0x369d('0x1c')](function(_0xe95742){logger[_0x369d('0xa')](_0x369d('0x1d'),_0x572513);logger[_0x369d('0xd')](_0x369d('0x1d'),_0x572513,JSON[_0x369d('0xe')](_0xe95742));_0x2946be(_0xe95742);})['catch'](function(_0x157291){logger['error']('GetVtigerAccount',_0x157291[_0x369d('0x11')],_0x572513);_0x4494b3(_0x597b67[_0x369d('0xf')](0x1f4,_0x157291['message']));});});};exports[_0x369d('0x1e')]=function(_0x5a14ce){var _0x37274f=this;return new Promise(function(_0x39d656,_0xe45219){return db[_0x369d('0x14')][_0x369d('0x1f')]({'raw':_0x5a14ce[_0x369d('0x15')]?_0x5a14ce[_0x369d('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x5a14ce[_0x369d('0x15')]?_0x5a14ce[_0x369d('0x15')][_0x369d('0x20')]||null:null,'attributes':_0x5a14ce[_0x369d('0x15')]?_0x5a14ce[_0x369d('0x15')][_0x369d('0x17')]||null:null,'include':_0x5a14ce[_0x369d('0x15')]?_0x5a14ce[_0x369d('0x15')]['include']?_[_0x369d('0x1b')](_0x5a14ce[_0x369d('0x15')][_0x369d('0x19')],function(_0x1b4453){return{'model':db[_0x1b4453[_0x369d('0x1a')]],'as':_0x1b4453['as'],'attributes':_0x1b4453['attributes'],'include':_0x1b4453[_0x369d('0x19')]?_[_0x369d('0x1b')](_0x1b4453[_0x369d('0x19')],function(_0x3a0277){return{'model':db[_0x3a0277[_0x369d('0x1a')]],'as':_0x3a0277['as'],'attributes':_0x3a0277[_0x369d('0x17')],'include':_0x3a0277['include']?_[_0x369d('0x1b')](_0x3a0277[_0x369d('0x19')],function(_0x40afb2){return{'model':db[_0x40afb2[_0x369d('0x1a')]],'as':_0x40afb2['as'],'attributes':_0x40afb2[_0x369d('0x17')]};}):[]};}):[]};}):[]:[]})[_0x369d('0x1c')](function(_0xfa13da){logger[_0x369d('0xa')](_0x369d('0x1e'),_0x5a14ce);logger[_0x369d('0xd')](_0x369d('0x1e'),_0x5a14ce,JSON[_0x369d('0xe')](_0xfa13da));_0x39d656(_0xfa13da);})[_0x369d('0x13')](function(_0x43d734){logger[_0x369d('0xf')](_0x369d('0x1e'),_0x43d734[_0x369d('0x11')],_0x5a14ce);_0xe45219(_0x37274f[_0x369d('0xf')](0x1f4,_0x43d734[_0x369d('0x11')]));});});};
\ No newline at end of file
+var _0xe511=['find','attributes','ShowVtigerAccount','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetVtigerAccount','VtigerAccount','options','raw','where','include','map','model','then'];(function(_0x4d9a93,_0x547671){var _0xe200a0=function(_0x1a9f61){while(--_0x1a9f61){_0x4d9a93['push'](_0x4d9a93['shift']());}};_0xe200a0(++_0x547671);}(_0xe511,0x16f));var _0x1e51=function(_0xb8f8ba,_0x56a48f){_0xb8f8ba=_0xb8f8ba-0x0;var _0x426419=_0xe511[_0xb8f8ba];return _0x426419;};'use strict';var _=require(_0x1e51('0x0'));var util=require(_0x1e51('0x1'));var moment=require('moment');var BPromise=require(_0x1e51('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1e51('0x3'));var db=require(_0x1e51('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x1e51('0x5'))(_0x1e51('0x6'));var config=require(_0x1e51('0x7'));var jayson=require(_0x1e51('0x8'));var client=jayson['client'][_0x1e51('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x21ed6b,_0x5c4590,_0x4fa2ba){return new BPromise(function(_0x394ad8,_0x133021){return client['request'](_0x21ed6b,_0x4fa2ba)['then'](function(_0x658941){logger[_0x1e51('0xa')](_0x1e51('0xb'),_0x5c4590,_0x1e51('0xc'));logger[_0x1e51('0xd')](_0x1e51('0xe'),_0x5c4590,'request\x20sent',JSON[_0x1e51('0xf')](_0x658941));if(_0x658941[_0x1e51('0x10')]){if(_0x658941[_0x1e51('0x10')][_0x1e51('0x11')]===0x1f4){logger[_0x1e51('0x10')](_0x1e51('0xb'),_0x5c4590,_0x658941['error'][_0x1e51('0x12')]);return _0x133021(_0x658941[_0x1e51('0x10')][_0x1e51('0x12')]);}logger[_0x1e51('0x10')](_0x1e51('0xb'),_0x5c4590,_0x658941[_0x1e51('0x10')][_0x1e51('0x12')]);return _0x394ad8(_0x658941[_0x1e51('0x10')][_0x1e51('0x12')]);}else{logger[_0x1e51('0xa')]('VtigerAccount,\x20%s,\x20%s',_0x5c4590,_0x1e51('0xc'));_0x394ad8(_0x658941[_0x1e51('0x13')][_0x1e51('0x12')]);}})['catch'](function(_0xa3b410){logger['error']('VtigerAccount,\x20%s,\x20%s',_0x5c4590,_0xa3b410);_0x133021(_0xa3b410);});});}exports[_0x1e51('0x14')]=function(_0x27dcad){var _0x40ae4c=this;return new Promise(function(_0x4785a5,_0x4d1aae){return db[_0x1e51('0x15')]['findAll']({'raw':_0x27dcad[_0x1e51('0x16')]?_0x27dcad['options'][_0x1e51('0x17')]===undefined?!![]:![]:!![],'where':_0x27dcad[_0x1e51('0x16')]?_0x27dcad[_0x1e51('0x16')][_0x1e51('0x18')]||null:null,'attributes':_0x27dcad['options']?_0x27dcad['options']['attributes']||null:null,'limit':_0x27dcad['options']?_0x27dcad[_0x1e51('0x16')]['limit']||null:null,'include':_0x27dcad[_0x1e51('0x16')]?_0x27dcad[_0x1e51('0x16')][_0x1e51('0x19')]?_[_0x1e51('0x1a')](_0x27dcad[_0x1e51('0x16')][_0x1e51('0x19')],function(_0x270adf){return{'model':db[_0x270adf[_0x1e51('0x1b')]],'as':_0x270adf['as'],'attributes':_0x270adf['attributes'],'include':_0x270adf['include']?_[_0x1e51('0x1a')](_0x270adf[_0x1e51('0x19')],function(_0x2e42b1){return{'model':db[_0x2e42b1[_0x1e51('0x1b')]],'as':_0x2e42b1['as'],'attributes':_0x2e42b1['attributes'],'include':_0x2e42b1['include']?_['map'](_0x2e42b1[_0x1e51('0x19')],function(_0x2a1561){return{'model':db[_0x2a1561[_0x1e51('0x1b')]],'as':_0x2a1561['as'],'attributes':_0x2a1561['attributes']};}):[]};}):[]};}):[]:[]})[_0x1e51('0x1c')](function(_0x49c507){logger['info'](_0x1e51('0x14'),_0x27dcad);logger['debug'](_0x1e51('0x14'),_0x27dcad,JSON[_0x1e51('0xf')](_0x49c507));_0x4785a5(_0x49c507);})['catch'](function(_0x3e6ef2){logger[_0x1e51('0x10')](_0x1e51('0x14'),_0x3e6ef2[_0x1e51('0x12')],_0x27dcad);_0x4d1aae(_0x40ae4c['error'](0x1f4,_0x3e6ef2['message']));});});};exports['ShowVtigerAccount']=function(_0x20eb9b){var _0x288b50=this;return new Promise(function(_0x1ba84a,_0x36dabe){return db[_0x1e51('0x15')][_0x1e51('0x1d')]({'raw':_0x20eb9b[_0x1e51('0x16')]?_0x20eb9b[_0x1e51('0x16')][_0x1e51('0x17')]===undefined?!![]:![]:!![],'where':_0x20eb9b[_0x1e51('0x16')]?_0x20eb9b[_0x1e51('0x16')]['where']||null:null,'attributes':_0x20eb9b[_0x1e51('0x16')]?_0x20eb9b[_0x1e51('0x16')][_0x1e51('0x1e')]||null:null,'include':_0x20eb9b[_0x1e51('0x16')]?_0x20eb9b[_0x1e51('0x16')]['include']?_[_0x1e51('0x1a')](_0x20eb9b['options'][_0x1e51('0x19')],function(_0x3fb57e){return{'model':db[_0x3fb57e[_0x1e51('0x1b')]],'as':_0x3fb57e['as'],'attributes':_0x3fb57e['attributes'],'include':_0x3fb57e[_0x1e51('0x19')]?_['map'](_0x3fb57e[_0x1e51('0x19')],function(_0x4e0187){return{'model':db[_0x4e0187['model']],'as':_0x4e0187['as'],'attributes':_0x4e0187[_0x1e51('0x1e')],'include':_0x4e0187[_0x1e51('0x19')]?_[_0x1e51('0x1a')](_0x4e0187['include'],function(_0x42ac30){return{'model':db[_0x42ac30['model']],'as':_0x42ac30['as'],'attributes':_0x42ac30[_0x1e51('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x1e51('0x1c')](function(_0x5760ba){logger[_0x1e51('0xa')](_0x1e51('0x1f'),_0x20eb9b);logger[_0x1e51('0xd')](_0x1e51('0x1f'),_0x20eb9b,JSON[_0x1e51('0xf')](_0x5760ba));_0x1ba84a(_0x5760ba);})[_0x1e51('0x20')](function(_0x5c57a6){logger['error'](_0x1e51('0x1f'),_0x5c57a6['message'],_0x20eb9b);_0x36dabe(_0x288b50[_0x1e51('0x10')](0x1f4,_0x5c57a6[_0x1e51('0x12')]));});});};
\ No newline at end of file
index d17194b..e9cdb08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3da6=['put','update','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','index','/:id','show','isAuthenticated','getFields','/:id/subjects','getSubjects','getDescriptions','create'];(function(_0x4aa079,_0x584b3e){var _0x53b1db=function(_0xa5a5e){while(--_0xa5a5e){_0x4aa079['push'](_0x4aa079['shift']());}};_0x53b1db(++_0x584b3e);}(_0x3da6,0xd5));var _0x63da=function(_0x128d90,_0x5d79a9){_0x128d90=_0x128d90-0x0;var _0x314b0b=_0x3da6[_0x128d90];return _0x314b0b;};'use strict';var multer=require(_0x63da('0x0'));var util=require(_0x63da('0x1'));var path=require(_0x63da('0x2'));var timeout=require(_0x63da('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x63da('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x63da('0x5'));var config=require(_0x63da('0x6'));var controller=require(_0x63da('0x7'));router[_0x63da('0x8')]('/',auth['isAuthenticated'](),controller[_0x63da('0x9')]);router[_0x63da('0x8')](_0x63da('0xa'),auth['isAuthenticated'](),controller[_0x63da('0xb')]);router[_0x63da('0x8')]('/:id/fields',auth[_0x63da('0xc')](),controller[_0x63da('0xd')]);router[_0x63da('0x8')](_0x63da('0xe'),auth[_0x63da('0xc')](),controller[_0x63da('0xf')]);router[_0x63da('0x8')]('/:id/descriptions',auth[_0x63da('0xc')](),controller[_0x63da('0x10')]);router['post']('/',auth[_0x63da('0xc')](),controller[_0x63da('0x11')]);router[_0x63da('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x63da('0x13')]);router['delete'](_0x63da('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x63da('0x14')]=router;
\ No newline at end of file
+var _0x902b=['index','get','/:id','isAuthenticated','show','/:id/fields','getSubjects','post','create','put','update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../config/environment','./intVtigerConfiguration.controller'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x902b,0x15e));var _0xb902=function(_0x5f3f88,_0x562baf){_0x5f3f88=_0x5f3f88-0x0;var _0xd08119=_0x902b[_0x5f3f88];return _0xd08119;};'use strict';var multer=require(_0xb902('0x0'));var util=require(_0xb902('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb902('0x2'));var router=express[_0xb902('0x3')]();var fs_extra=require(_0xb902('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb902('0x5'));var controller=require(_0xb902('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0xb902('0x7')]);router[_0xb902('0x8')](_0xb902('0x9'),auth[_0xb902('0xa')](),controller[_0xb902('0xb')]);router[_0xb902('0x8')](_0xb902('0xc'),auth['isAuthenticated'](),controller['getFields']);router[_0xb902('0x8')]('/:id/subjects',auth['isAuthenticated'](),controller[_0xb902('0xd')]);router[_0xb902('0x8')]('/:id/descriptions',auth[_0xb902('0xa')](),controller['getDescriptions']);router[_0xb902('0xe')]('/',auth['isAuthenticated'](),controller[_0xb902('0xf')]);router[_0xb902('0x10')]('/:id',auth[_0xb902('0xa')](),controller[_0xb902('0x11')]);router[_0xb902('0x12')](_0xb902('0x9'),auth['isAuthenticated'](),controller[_0xb902('0x13')]);module[_0xb902('0x14')]=router;
\ No newline at end of file
index 0e261da..b230c39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab68=['STRING','sequelize'];(function(_0x58ec0a,_0x187389){var _0x392d05=function(_0x567c14){while(--_0x567c14){_0x58ec0a['push'](_0x58ec0a['shift']());}};_0x392d05(++_0x187389);}(_0xab68,0x14f));var _0x8ab6=function(_0x461b47,_0x5ca4c4){_0x461b47=_0x461b47-0x0;var _0x1c9b8d=_0xab68[_0x461b47];return _0x1c9b8d;};'use strict';var Sequelize=require(_0x8ab6('0x0'));module['exports']={'name':{'type':Sequelize[_0x8ab6('0x1')]},'description':{'type':Sequelize[_0x8ab6('0x1')]}};
\ No newline at end of file
+var _0x201c=['sequelize','exports','STRING'];(function(_0x59ef16,_0x20c685){var _0x9c4dfb=function(_0x454ad5){while(--_0x454ad5){_0x59ef16['push'](_0x59ef16['shift']());}};_0x9c4dfb(++_0x20c685);}(_0x201c,0x66));var _0xc201=function(_0x52e3a8,_0xb55c5b){_0x52e3a8=_0x52e3a8-0x0;var _0x4964f0=_0x201c[_0x52e3a8];return _0x4964f0;};'use strict';var Sequelize=require(_0xc201('0x0'));module[_0xc201('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xc201('0x2')]}};
\ No newline at end of file
index be96f63..fffdab3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x718b=['map','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where','filter','type','VIRTUAL','merge','VtigerConfiguration','include','findAll','catch','show','keys','includeAll','options','create','body','update','find','params','getFields','VtigerField','pick','hasOwnProperty','getSubjects','findOne','getDescriptions','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','key','model'];(function(_0x4459b8,_0x3271b8){var _0x4a4b07=function(_0x3075f8){while(--_0x3075f8){_0x4459b8['push'](_0x4459b8['shift']());}};_0x4a4b07(++_0x3271b8);}(_0x718b,0xc3));var _0xb718=function(_0x4254e7,_0x4fc342){_0x4254e7=_0x4254e7-0x0;var _0x5e0844=_0x718b[_0x4254e7];return _0x5e0844;};'use strict';var emlformat=require(_0xb718('0x0'));var rimraf=require(_0xb718('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb718('0x2'));var moment=require(_0xb718('0x3'));var BPromise=require(_0xb718('0x4'));var Mustache=require(_0xb718('0x5'));var util=require(_0xb718('0x6'));var path=require(_0xb718('0x7'));var sox=require(_0xb718('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb718('0x9'));var _=require(_0xb718('0xa'));var squel=require('squel');var crypto=require(_0xb718('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xb718('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb718('0xd'));var Redis=require(_0xb718('0xe'));var authService=require(_0xb718('0xf'));var qs=require(_0xb718('0x10'));var as=require(_0xb718('0x11'));var hardwareService=require(_0xb718('0x12'));var logger=require(_0xb718('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xb718('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xb718('0x15'))['db'];function respondWithStatusCode(_0x4bbfa8,_0x11a6ca){_0x11a6ca=_0x11a6ca||0xcc;return function(_0x553c9d){if(_0x553c9d){return _0x4bbfa8[_0xb718('0x16')](_0x11a6ca);}return _0x4bbfa8[_0xb718('0x17')](_0x11a6ca)[_0xb718('0x18')]();};}function respondWithResult(_0x13c680,_0x173446){_0x173446=_0x173446||0xc8;return function(_0x56971c){if(_0x56971c){return _0x13c680[_0xb718('0x17')](_0x173446)[_0xb718('0x19')](_0x56971c);}};}function respondWithFilteredResult(_0x1d9360,_0x12a473){return function(_0x367d10){if(_0x367d10){var _0x3f4f05=typeof _0x12a473['offset']===_0xb718('0x1a')&&typeof _0x12a473['limit']===_0xb718('0x1a');var _0x50fb4b=_0x367d10[_0xb718('0x1b')];var _0x425a02=_0x3f4f05?0x0:_0x12a473[_0xb718('0x1c')];var _0x1fa345=_0x3f4f05?_0x367d10['count']:_0x12a473[_0xb718('0x1c')]+_0x12a473[_0xb718('0x1d')];var _0xd0d7c1;if(_0x1fa345>=_0x50fb4b){_0x1fa345=_0x50fb4b;_0xd0d7c1=0xc8;}else{_0xd0d7c1=0xce;}_0x1d9360['status'](_0xd0d7c1);return _0x1d9360['set'](_0xb718('0x1e'),_0x425a02+'-'+_0x1fa345+'/'+_0x50fb4b)[_0xb718('0x19')](_0x367d10);}return null;};}function patchUpdates(_0x47d8ea){return function(_0x45411a){try{jsonpatch[_0xb718('0x1f')](_0x45411a,_0x47d8ea,!![]);}catch(_0x520d7c){return BPromise[_0xb718('0x20')](_0x520d7c);}return _0x45411a[_0xb718('0x21')]();};}function saveUpdates(_0x562188,_0x3e5d31){return function(_0x1cda9a){if(_0x1cda9a){return _0x1cda9a['update'](_0x562188)[_0xb718('0x22')](function(_0x3fa19d){return _0x3fa19d;});}return null;};}function removeEntity(_0xe813bb,_0x1c5b52){return function(_0x524f72){if(_0x524f72){return _0x524f72[_0xb718('0x23')]()[_0xb718('0x22')](function(){_0xe813bb[_0xb718('0x17')](0xcc)[_0xb718('0x18')]();});}};}function handleEntityNotFound(_0xe3e74f,_0x197ece){return function(_0x5f3fd2){if(!_0x5f3fd2){_0xe3e74f[_0xb718('0x16')](0x194);}return _0x5f3fd2;};}function handleError(_0x1b5612,_0x619228){_0x619228=_0x619228||0x1f4;return function(_0x299b1f){logger[_0xb718('0x24')](_0x299b1f[_0xb718('0x25')]);if(_0x299b1f[_0xb718('0x26')]){delete _0x299b1f[_0xb718('0x26')];}_0x1b5612[_0xb718('0x17')](_0x619228)[_0xb718('0x27')](_0x299b1f);};}exports[_0xb718('0x28')]=function(_0x38fc92,_0x2e350f){var _0x5f3282={},_0xa5e86={},_0x589f92={'count':0x0,'rows':[]};var _0xdde118=_['map'](db['VtigerConfiguration'][_0xb718('0x29')],function(_0x4e1837){return{'name':_0x4e1837[_0xb718('0x2a')],'type':_0x4e1837['type'][_0xb718('0x2b')]};});_0xa5e86[_0xb718('0x2c')]=_[_0xb718('0x2d')](_0xdde118,_0xb718('0x26'));_0xa5e86[_0xb718('0x2e')]=_['keys'](_0x38fc92['query']);_0xa5e86[_0xb718('0x2f')]=_['intersection'](_0xa5e86['model'],_0xa5e86[_0xb718('0x2e')]);_0x5f3282[_0xb718('0x30')]=_[_0xb718('0x31')](_0xa5e86[_0xb718('0x2c')],qs[_0xb718('0x32')](_0x38fc92['query']['fields']));_0x5f3282[_0xb718('0x30')]=_0x5f3282[_0xb718('0x30')][_0xb718('0x33')]?_0x5f3282[_0xb718('0x30')]:_0xa5e86[_0xb718('0x2c')];if(!_0x38fc92[_0xb718('0x2e')]['hasOwnProperty'](_0xb718('0x34'))){_0x5f3282[_0xb718('0x1d')]=qs[_0xb718('0x1d')](_0x38fc92[_0xb718('0x2e')][_0xb718('0x1d')]);_0x5f3282[_0xb718('0x1c')]=qs[_0xb718('0x1c')](_0x38fc92[_0xb718('0x2e')]['offset']);}_0x5f3282[_0xb718('0x35')]=qs[_0xb718('0x36')](_0x38fc92[_0xb718('0x2e')]['sort']);_0x5f3282[_0xb718('0x37')]=qs['filters'](_['pick'](_0x38fc92[_0xb718('0x2e')],_0xa5e86[_0xb718('0x2f')]),_0xdde118);if(_0x38fc92[_0xb718('0x2e')][_0xb718('0x38')]){_0x5f3282[_0xb718('0x37')]=_['merge'](_0x5f3282[_0xb718('0x37')],{'$or':_[_0xb718('0x2d')](_0xdde118,function(_0x360ce0){if(_0x360ce0[_0xb718('0x39')]!==_0xb718('0x3a')){var _0x4826c1={};_0x4826c1[_0x360ce0['name']]={'$like':'%'+_0x38fc92['query'][_0xb718('0x38')]+'%'};return _0x4826c1;}})});}_0x5f3282=_[_0xb718('0x3b')]({},_0x5f3282,_0x38fc92['options']);var _0x3a05d0={'where':_0x5f3282['where']};return db[_0xb718('0x3c')][_0xb718('0x1b')](_0x3a05d0)[_0xb718('0x22')](function(_0x5cdc49){_0x589f92['count']=_0x5cdc49;if(_0x38fc92[_0xb718('0x2e')]['includeAll']){_0x5f3282[_0xb718('0x3d')]=[{'all':!![]}];}return db['VtigerConfiguration'][_0xb718('0x3e')](_0x5f3282);})[_0xb718('0x22')](function(_0xec852c){_0x589f92['rows']=_0xec852c;return _0x589f92;})[_0xb718('0x22')](respondWithFilteredResult(_0x2e350f,_0x5f3282))[_0xb718('0x3f')](handleError(_0x2e350f,null));};exports[_0xb718('0x40')]=function(_0x4f6f60,_0x331c15){var _0x357c4b={'raw':![],'where':{'id':_0x4f6f60['params']['id']}},_0x16b5ab={};_0x16b5ab['model']=_[_0xb718('0x41')](db['VtigerConfiguration'][_0xb718('0x29')]);_0x16b5ab[_0xb718('0x2e')]=_[_0xb718('0x41')](_0x4f6f60[_0xb718('0x2e')]);_0x16b5ab[_0xb718('0x2f')]=_[_0xb718('0x31')](_0x16b5ab[_0xb718('0x2c')],_0x16b5ab[_0xb718('0x2e')]);_0x357c4b[_0xb718('0x30')]=_['intersection'](_0x16b5ab['model'],qs['fields'](_0x4f6f60['query'][_0xb718('0x32')]));_0x357c4b['attributes']=_0x357c4b[_0xb718('0x30')]['length']?_0x357c4b[_0xb718('0x30')]:_0x16b5ab[_0xb718('0x2c')];if(_0x4f6f60[_0xb718('0x2e')][_0xb718('0x42')]){_0x357c4b[_0xb718('0x3d')]=[{'all':!![]}];}_0x357c4b=_['merge']({},_0x357c4b,_0x4f6f60[_0xb718('0x43')]);return db[_0xb718('0x3c')]['find'](_0x357c4b)[_0xb718('0x22')](handleEntityNotFound(_0x331c15,null))['then'](respondWithResult(_0x331c15,null))[_0xb718('0x3f')](handleError(_0x331c15,null));};exports[_0xb718('0x44')]=function(_0x290d09,_0x11f3f0){return db[_0xb718('0x3c')]['create'](_0x290d09[_0xb718('0x45')],{})['then'](respondWithResult(_0x11f3f0,0xc9))[_0xb718('0x3f')](handleError(_0x11f3f0,null));};exports[_0xb718('0x46')]=function(_0x44e5d8,_0x183ce4){if(_0x44e5d8[_0xb718('0x45')]['id']){delete _0x44e5d8[_0xb718('0x45')]['id'];}return db[_0xb718('0x3c')][_0xb718('0x47')]({'where':{'id':_0x44e5d8[_0xb718('0x48')]['id']}})[_0xb718('0x22')](handleEntityNotFound(_0x183ce4,null))['then'](saveUpdates(_0x44e5d8[_0xb718('0x45')],null))[_0xb718('0x22')](respondWithResult(_0x183ce4,null))[_0xb718('0x3f')](handleError(_0x183ce4,null));};exports[_0xb718('0x23')]=function(_0x71e135,_0x3eaa1c){return db['VtigerConfiguration'][_0xb718('0x47')]({'where':{'id':_0x71e135[_0xb718('0x48')]['id']}})[_0xb718('0x22')](handleEntityNotFound(_0x3eaa1c,null))[_0xb718('0x22')](removeEntity(_0x3eaa1c,null))['catch'](handleError(_0x3eaa1c,null));};exports[_0xb718('0x49')]=function(_0x385671,_0x28ad1f,_0x46ca6a){var _0x8adc89={};var _0x471c16={};var _0x3ccbb5;var _0x230a1b;return db[_0xb718('0x3c')]['findOne']({'where':{'id':_0x385671[_0xb718('0x48')]['id']}})[_0xb718('0x22')](handleEntityNotFound(_0x28ad1f,null))[_0xb718('0x22')](function(_0x2cda51){if(_0x2cda51){_0x3ccbb5=_0x2cda51;_0x471c16[_0xb718('0x2c')]=_[_0xb718('0x41')](db[_0xb718('0x4a')]['rawAttributes']);_0x471c16['query']=_[_0xb718('0x41')](_0x385671[_0xb718('0x2e')]);_0x471c16[_0xb718('0x2f')]=_['intersection'](_0x471c16[_0xb718('0x2c')],_0x471c16['query']);_0x8adc89[_0xb718('0x30')]=_[_0xb718('0x31')](_0x471c16[_0xb718('0x2c')],qs['fields'](_0x385671[_0xb718('0x2e')][_0xb718('0x32')]));_0x8adc89[_0xb718('0x30')]=_0x8adc89[_0xb718('0x30')][_0xb718('0x33')]?_0x8adc89[_0xb718('0x30')]:_0x471c16[_0xb718('0x2c')];_0x8adc89[_0xb718('0x35')]=qs[_0xb718('0x36')](_0x385671[_0xb718('0x2e')][_0xb718('0x36')]);_0x8adc89[_0xb718('0x37')]=qs[_0xb718('0x2f')](_[_0xb718('0x4b')](_0x385671[_0xb718('0x2e')],_0x471c16[_0xb718('0x2f')]));if(_0x385671[_0xb718('0x2e')][_0xb718('0x38')]){_0x8adc89[_0xb718('0x37')]=_[_0xb718('0x3b')](_0x8adc89[_0xb718('0x37')],{'$or':_[_0xb718('0x2d')](_0x8adc89['attributes'],function(_0x5659fd){var _0x5a30ee={};_0x5a30ee[_0x5659fd]={'$like':'%'+_0x385671[_0xb718('0x2e')][_0xb718('0x38')]+'%'};return _0x5a30ee;})});}_0x8adc89=_[_0xb718('0x3b')]({},_0x8adc89,_0x385671[_0xb718('0x43')]);return _0x3ccbb5[_0xb718('0x49')](_0x8adc89);}})['then'](function(_0xbdaae3){if(_0xbdaae3){_0x230a1b=_0xbdaae3[_0xb718('0x33')];if(!_0x385671[_0xb718('0x2e')][_0xb718('0x4c')](_0xb718('0x34'))){_0x8adc89[_0xb718('0x1d')]=qs['limit'](_0x385671[_0xb718('0x2e')][_0xb718('0x1d')]);_0x8adc89[_0xb718('0x1c')]=qs[_0xb718('0x1c')](_0x385671[_0xb718('0x2e')][_0xb718('0x1c')]);}return _0x3ccbb5['getFields'](_0x8adc89);}})[_0xb718('0x22')](function(_0x3c2db9){if(_0x3c2db9){return _0x3c2db9?{'count':_0x230a1b,'rows':_0x3c2db9}:null;}})[_0xb718('0x22')](respondWithResult(_0x28ad1f,null))[_0xb718('0x3f')](handleError(_0x28ad1f,null));};exports[_0xb718('0x4d')]=function(_0x408651,_0x232931,_0x3277cb){var _0x1c0ce8={};var _0x2d835f={};var _0x3acab3;var _0x4f2124;return db[_0xb718('0x3c')][_0xb718('0x4e')]({'where':{'id':_0x408651[_0xb718('0x48')]['id']}})['then'](handleEntityNotFound(_0x232931,null))[_0xb718('0x22')](function(_0x3d97ef){if(_0x3d97ef){_0x3acab3=_0x3d97ef;_0x2d835f[_0xb718('0x2c')]=_[_0xb718('0x41')](db['VtigerField'][_0xb718('0x29')]);_0x2d835f[_0xb718('0x2e')]=_['keys'](_0x408651[_0xb718('0x2e')]);_0x2d835f[_0xb718('0x2f')]=_[_0xb718('0x31')](_0x2d835f[_0xb718('0x2c')],_0x2d835f[_0xb718('0x2e')]);_0x1c0ce8['attributes']=_[_0xb718('0x31')](_0x2d835f[_0xb718('0x2c')],qs[_0xb718('0x32')](_0x408651['query'][_0xb718('0x32')]));_0x1c0ce8['attributes']=_0x1c0ce8['attributes'][_0xb718('0x33')]?_0x1c0ce8[_0xb718('0x30')]:_0x2d835f[_0xb718('0x2c')];_0x1c0ce8['order']=qs['sort'](_0x408651[_0xb718('0x2e')][_0xb718('0x36')]);_0x1c0ce8[_0xb718('0x37')]=qs[_0xb718('0x2f')](_[_0xb718('0x4b')](_0x408651[_0xb718('0x2e')],_0x2d835f[_0xb718('0x2f')]));if(_0x408651['query'][_0xb718('0x38')]){_0x1c0ce8[_0xb718('0x37')]=_[_0xb718('0x3b')](_0x1c0ce8[_0xb718('0x37')],{'$or':_['map'](_0x1c0ce8['attributes'],function(_0xaaba4a){var _0x8f9445={};_0x8f9445[_0xaaba4a]={'$like':'%'+_0x408651[_0xb718('0x2e')][_0xb718('0x38')]+'%'};return _0x8f9445;})});}_0x1c0ce8=_[_0xb718('0x3b')]({},_0x1c0ce8,_0x408651[_0xb718('0x43')]);return _0x3acab3[_0xb718('0x4d')](_0x1c0ce8);}})[_0xb718('0x22')](function(_0x5ab02b){if(_0x5ab02b){_0x4f2124=_0x5ab02b[_0xb718('0x33')];if(!_0x408651['query']['hasOwnProperty'](_0xb718('0x34'))){_0x1c0ce8[_0xb718('0x1d')]=qs[_0xb718('0x1d')](_0x408651[_0xb718('0x2e')]['limit']);_0x1c0ce8[_0xb718('0x1c')]=qs[_0xb718('0x1c')](_0x408651[_0xb718('0x2e')][_0xb718('0x1c')]);}return _0x3acab3[_0xb718('0x4d')](_0x1c0ce8);}})['then'](function(_0x326feb){if(_0x326feb){return _0x326feb?{'count':_0x4f2124,'rows':_0x326feb}:null;}})['then'](respondWithResult(_0x232931,null))[_0xb718('0x3f')](handleError(_0x232931,null));};exports['getDescriptions']=function(_0x22216d,_0x30534c,_0x19868b){var _0x61ba4={};var _0x1fbf81={};var _0x53ea0d;var _0x54b7d0;return db[_0xb718('0x3c')][_0xb718('0x4e')]({'where':{'id':_0x22216d[_0xb718('0x48')]['id']}})[_0xb718('0x22')](handleEntityNotFound(_0x30534c,null))[_0xb718('0x22')](function(_0x72c097){if(_0x72c097){_0x53ea0d=_0x72c097;_0x1fbf81[_0xb718('0x2c')]=_[_0xb718('0x41')](db[_0xb718('0x4a')][_0xb718('0x29')]);_0x1fbf81[_0xb718('0x2e')]=_[_0xb718('0x41')](_0x22216d[_0xb718('0x2e')]);_0x1fbf81[_0xb718('0x2f')]=_[_0xb718('0x31')](_0x1fbf81['model'],_0x1fbf81['query']);_0x61ba4[_0xb718('0x30')]=_[_0xb718('0x31')](_0x1fbf81[_0xb718('0x2c')],qs['fields'](_0x22216d[_0xb718('0x2e')][_0xb718('0x32')]));_0x61ba4[_0xb718('0x30')]=_0x61ba4[_0xb718('0x30')][_0xb718('0x33')]?_0x61ba4[_0xb718('0x30')]:_0x1fbf81[_0xb718('0x2c')];_0x61ba4[_0xb718('0x35')]=qs[_0xb718('0x36')](_0x22216d[_0xb718('0x2e')][_0xb718('0x36')]);_0x61ba4['where']=qs[_0xb718('0x2f')](_[_0xb718('0x4b')](_0x22216d[_0xb718('0x2e')],_0x1fbf81[_0xb718('0x2f')]));if(_0x22216d[_0xb718('0x2e')]['filter']){_0x61ba4[_0xb718('0x37')]=_[_0xb718('0x3b')](_0x61ba4['where'],{'$or':_[_0xb718('0x2d')](_0x61ba4[_0xb718('0x30')],function(_0x45cbcd){var _0x3eaac2={};_0x3eaac2[_0x45cbcd]={'$like':'%'+_0x22216d[_0xb718('0x2e')][_0xb718('0x38')]+'%'};return _0x3eaac2;})});}_0x61ba4=_[_0xb718('0x3b')]({},_0x61ba4,_0x22216d[_0xb718('0x43')]);return _0x53ea0d[_0xb718('0x4f')](_0x61ba4);}})[_0xb718('0x22')](function(_0x65a169){if(_0x65a169){_0x54b7d0=_0x65a169[_0xb718('0x33')];if(!_0x22216d[_0xb718('0x2e')][_0xb718('0x4c')](_0xb718('0x34'))){_0x61ba4['limit']=qs['limit'](_0x22216d[_0xb718('0x2e')][_0xb718('0x1d')]);_0x61ba4['offset']=qs[_0xb718('0x1c')](_0x22216d[_0xb718('0x2e')][_0xb718('0x1c')]);}return _0x53ea0d[_0xb718('0x4f')](_0x61ba4);}})[_0xb718('0x22')](function(_0x5e1b0d){if(_0x5e1b0d){return _0x5e1b0d?{'count':_0x54b7d0,'rows':_0x5e1b0d}:null;}})[_0xb718('0x22')](respondWithResult(_0x30534c,null))[_0xb718('0x3f')](handleError(_0x30534c,null));};
\ No newline at end of file
+var _0x0851=['status','undefined','count','offset','limit','json','reject','save','then','destroy','error','stack','name','send','index','map','VtigerConfiguration','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','rows','params','keys','includeAll','find','catch','create','body','update','findOne','VtigerField','order','getFields','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end'];(function(_0x279142,_0x2fd2bf){var _0x5c416b=function(_0x34d4d1){while(--_0x34d4d1){_0x279142['push'](_0x279142['shift']());}};_0x5c416b(++_0x2fd2bf);}(_0x0851,0x8a));var _0x1085=function(_0x186872,_0x50a406){_0x186872=_0x186872-0x0;var _0x2f440d=_0x0851[_0x186872];return _0x2f440d;};'use strict';var emlformat=require(_0x1085('0x0'));var rimraf=require(_0x1085('0x1'));var zipdir=require(_0x1085('0x2'));var jsonpatch=require(_0x1085('0x3'));var rp=require('request-promise');var moment=require(_0x1085('0x4'));var BPromise=require(_0x1085('0x5'));var Mustache=require(_0x1085('0x6'));var util=require(_0x1085('0x7'));var path=require(_0x1085('0x8'));var sox=require(_0x1085('0x9'));var csv=require(_0x1085('0xa'));var ejs=require(_0x1085('0xb'));var fs=require('fs');var fs_extra=require(_0x1085('0xc'));var _=require(_0x1085('0xd'));var squel=require(_0x1085('0xe'));var crypto=require(_0x1085('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x1085('0xa'));var querystring=require(_0x1085('0x10'));var Papa=require(_0x1085('0x11'));var Redis=require(_0x1085('0x12'));var authService=require(_0x1085('0x13'));var qs=require(_0x1085('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1085('0x15'));var logger=require(_0x1085('0x16'))(_0x1085('0x17'));var utils=require(_0x1085('0x18'));var config=require(_0x1085('0x19'));var licenseUtil=require(_0x1085('0x1a'));var db=require(_0x1085('0x1b'))['db'];function respondWithStatusCode(_0x4c7520,_0x3664c9){_0x3664c9=_0x3664c9||0xcc;return function(_0x95194a){if(_0x95194a){return _0x4c7520[_0x1085('0x1c')](_0x3664c9);}return _0x4c7520['status'](_0x3664c9)[_0x1085('0x1d')]();};}function respondWithResult(_0x59802d,_0x4754c9){_0x4754c9=_0x4754c9||0xc8;return function(_0x23dcd7){if(_0x23dcd7){return _0x59802d[_0x1085('0x1e')](_0x4754c9)['json'](_0x23dcd7);}};}function respondWithFilteredResult(_0x334c3a,_0x27b8d9){return function(_0x1332ad){if(_0x1332ad){var _0x41e4d7=typeof _0x27b8d9['offset']===_0x1085('0x1f')&&typeof _0x27b8d9['limit']===_0x1085('0x1f');var _0x5877e9=_0x1332ad[_0x1085('0x20')];var _0x37b760=_0x41e4d7?0x0:_0x27b8d9[_0x1085('0x21')];var _0x5e2270=_0x41e4d7?_0x1332ad[_0x1085('0x20')]:_0x27b8d9['offset']+_0x27b8d9[_0x1085('0x22')];var _0x5b715a;if(_0x5e2270>=_0x5877e9){_0x5e2270=_0x5877e9;_0x5b715a=0xc8;}else{_0x5b715a=0xce;}_0x334c3a['status'](_0x5b715a);return _0x334c3a['set']('Content-Range',_0x37b760+'-'+_0x5e2270+'/'+_0x5877e9)[_0x1085('0x23')](_0x1332ad);}return null;};}function patchUpdates(_0x5c89f2){return function(_0x5460cb){try{jsonpatch['apply'](_0x5460cb,_0x5c89f2,!![]);}catch(_0x17aed6){return BPromise[_0x1085('0x24')](_0x17aed6);}return _0x5460cb[_0x1085('0x25')]();};}function saveUpdates(_0x50d3d6,_0x146a78){return function(_0x3c77f2){if(_0x3c77f2){return _0x3c77f2['update'](_0x50d3d6)[_0x1085('0x26')](function(_0x55a0eb){return _0x55a0eb;});}return null;};}function removeEntity(_0x32efc1,_0x54f32c){return function(_0xafd7df){if(_0xafd7df){return _0xafd7df[_0x1085('0x27')]()[_0x1085('0x26')](function(){_0x32efc1['status'](0xcc)[_0x1085('0x1d')]();});}};}function handleEntityNotFound(_0x1698e2,_0x2712c9){return function(_0x552876){if(!_0x552876){_0x1698e2[_0x1085('0x1c')](0x194);}return _0x552876;};}function handleError(_0xbf3272,_0x3f788b){_0x3f788b=_0x3f788b||0x1f4;return function(_0x4b3ca1){logger[_0x1085('0x28')](_0x4b3ca1[_0x1085('0x29')]);if(_0x4b3ca1[_0x1085('0x2a')]){delete _0x4b3ca1[_0x1085('0x2a')];}_0xbf3272[_0x1085('0x1e')](_0x3f788b)[_0x1085('0x2b')](_0x4b3ca1);};}exports[_0x1085('0x2c')]=function(_0x2a90d1,_0x22f3d9){var _0x417cb6={},_0x1881d5={},_0x5c5ed1={'count':0x0,'rows':[]};var _0x24959b=_[_0x1085('0x2d')](db[_0x1085('0x2e')][_0x1085('0x2f')],function(_0x41da9b){return{'name':_0x41da9b[_0x1085('0x30')],'type':_0x41da9b[_0x1085('0x31')][_0x1085('0x32')]};});_0x1881d5[_0x1085('0x33')]=_[_0x1085('0x2d')](_0x24959b,_0x1085('0x2a'));_0x1881d5[_0x1085('0x34')]=_['keys'](_0x2a90d1[_0x1085('0x34')]);_0x1881d5[_0x1085('0x35')]=_['intersection'](_0x1881d5[_0x1085('0x33')],_0x1881d5[_0x1085('0x34')]);_0x417cb6[_0x1085('0x36')]=_[_0x1085('0x37')](_0x1881d5[_0x1085('0x33')],qs['fields'](_0x2a90d1[_0x1085('0x34')][_0x1085('0x38')]));_0x417cb6['attributes']=_0x417cb6[_0x1085('0x36')][_0x1085('0x39')]?_0x417cb6[_0x1085('0x36')]:_0x1881d5[_0x1085('0x33')];if(!_0x2a90d1['query'][_0x1085('0x3a')](_0x1085('0x3b'))){_0x417cb6[_0x1085('0x22')]=qs[_0x1085('0x22')](_0x2a90d1['query'][_0x1085('0x22')]);_0x417cb6[_0x1085('0x21')]=qs[_0x1085('0x21')](_0x2a90d1['query'][_0x1085('0x21')]);}_0x417cb6['order']=qs[_0x1085('0x3c')](_0x2a90d1['query'][_0x1085('0x3c')]);_0x417cb6[_0x1085('0x3d')]=qs['filters'](_[_0x1085('0x3e')](_0x2a90d1[_0x1085('0x34')],_0x1881d5['filters']),_0x24959b);if(_0x2a90d1[_0x1085('0x34')]['filter']){_0x417cb6['where']=_[_0x1085('0x3f')](_0x417cb6[_0x1085('0x3d')],{'$or':_['map'](_0x24959b,function(_0x2b34b9){if(_0x2b34b9[_0x1085('0x31')]!==_0x1085('0x40')){var _0x34b696={};_0x34b696[_0x2b34b9['name']]={'$like':'%'+_0x2a90d1[_0x1085('0x34')][_0x1085('0x41')]+'%'};return _0x34b696;}})});}_0x417cb6=_[_0x1085('0x3f')]({},_0x417cb6,_0x2a90d1[_0x1085('0x42')]);var _0x3d11f4={'where':_0x417cb6['where']};return db[_0x1085('0x2e')]['count'](_0x3d11f4)['then'](function(_0x3b7482){_0x5c5ed1['count']=_0x3b7482;if(_0x2a90d1['query']['includeAll']){_0x417cb6[_0x1085('0x43')]=[{'all':!![]}];}return db[_0x1085('0x2e')][_0x1085('0x44')](_0x417cb6);})[_0x1085('0x26')](function(_0x3bda3b){_0x5c5ed1[_0x1085('0x45')]=_0x3bda3b;return _0x5c5ed1;})[_0x1085('0x26')](respondWithFilteredResult(_0x22f3d9,_0x417cb6))['catch'](handleError(_0x22f3d9,null));};exports['show']=function(_0x26fefd,_0x47a10c){var _0x4e8ccf={'raw':![],'where':{'id':_0x26fefd[_0x1085('0x46')]['id']}},_0x2fbad5={};_0x2fbad5[_0x1085('0x33')]=_[_0x1085('0x47')](db[_0x1085('0x2e')][_0x1085('0x2f')]);_0x2fbad5[_0x1085('0x34')]=_['keys'](_0x26fefd['query']);_0x2fbad5[_0x1085('0x35')]=_['intersection'](_0x2fbad5['model'],_0x2fbad5[_0x1085('0x34')]);_0x4e8ccf[_0x1085('0x36')]=_[_0x1085('0x37')](_0x2fbad5[_0x1085('0x33')],qs[_0x1085('0x38')](_0x26fefd[_0x1085('0x34')][_0x1085('0x38')]));_0x4e8ccf[_0x1085('0x36')]=_0x4e8ccf['attributes'][_0x1085('0x39')]?_0x4e8ccf['attributes']:_0x2fbad5[_0x1085('0x33')];if(_0x26fefd[_0x1085('0x34')][_0x1085('0x48')]){_0x4e8ccf[_0x1085('0x43')]=[{'all':!![]}];}_0x4e8ccf=_[_0x1085('0x3f')]({},_0x4e8ccf,_0x26fefd['options']);return db[_0x1085('0x2e')][_0x1085('0x49')](_0x4e8ccf)[_0x1085('0x26')](handleEntityNotFound(_0x47a10c,null))[_0x1085('0x26')](respondWithResult(_0x47a10c,null))[_0x1085('0x4a')](handleError(_0x47a10c,null));};exports['create']=function(_0x3b004d,_0x32c07d){return db[_0x1085('0x2e')][_0x1085('0x4b')](_0x3b004d[_0x1085('0x4c')],{})[_0x1085('0x26')](respondWithResult(_0x32c07d,0xc9))['catch'](handleError(_0x32c07d,null));};exports[_0x1085('0x4d')]=function(_0x43ccd2,_0x7338f9){if(_0x43ccd2[_0x1085('0x4c')]['id']){delete _0x43ccd2[_0x1085('0x4c')]['id'];}return db['VtigerConfiguration'][_0x1085('0x49')]({'where':{'id':_0x43ccd2[_0x1085('0x46')]['id']}})[_0x1085('0x26')](handleEntityNotFound(_0x7338f9,null))[_0x1085('0x26')](saveUpdates(_0x43ccd2['body'],null))['then'](respondWithResult(_0x7338f9,null))[_0x1085('0x4a')](handleError(_0x7338f9,null));};exports['destroy']=function(_0x329804,_0x279d0b){return db[_0x1085('0x2e')][_0x1085('0x49')]({'where':{'id':_0x329804['params']['id']}})[_0x1085('0x26')](handleEntityNotFound(_0x279d0b,null))[_0x1085('0x26')](removeEntity(_0x279d0b,null))[_0x1085('0x4a')](handleError(_0x279d0b,null));};exports['getFields']=function(_0x1c9d86,_0x1ccbb5,_0x2ed852){var _0x400c61={};var _0x18699d={};var _0x66afa1;var _0x46104b;return db[_0x1085('0x2e')][_0x1085('0x4e')]({'where':{'id':_0x1c9d86[_0x1085('0x46')]['id']}})[_0x1085('0x26')](handleEntityNotFound(_0x1ccbb5,null))[_0x1085('0x26')](function(_0x1a27ae){if(_0x1a27ae){_0x66afa1=_0x1a27ae;_0x18699d[_0x1085('0x33')]=_['keys'](db[_0x1085('0x4f')][_0x1085('0x2f')]);_0x18699d[_0x1085('0x34')]=_[_0x1085('0x47')](_0x1c9d86[_0x1085('0x34')]);_0x18699d['filters']=_[_0x1085('0x37')](_0x18699d[_0x1085('0x33')],_0x18699d[_0x1085('0x34')]);_0x400c61['attributes']=_[_0x1085('0x37')](_0x18699d['model'],qs[_0x1085('0x38')](_0x1c9d86[_0x1085('0x34')][_0x1085('0x38')]));_0x400c61[_0x1085('0x36')]=_0x400c61[_0x1085('0x36')]['length']?_0x400c61[_0x1085('0x36')]:_0x18699d[_0x1085('0x33')];_0x400c61[_0x1085('0x50')]=qs[_0x1085('0x3c')](_0x1c9d86['query']['sort']);_0x400c61[_0x1085('0x3d')]=qs[_0x1085('0x35')](_[_0x1085('0x3e')](_0x1c9d86[_0x1085('0x34')],_0x18699d[_0x1085('0x35')]));if(_0x1c9d86['query']['filter']){_0x400c61[_0x1085('0x3d')]=_['merge'](_0x400c61['where'],{'$or':_[_0x1085('0x2d')](_0x400c61[_0x1085('0x36')],function(_0x40c2e1){var _0x4fe02a={};_0x4fe02a[_0x40c2e1]={'$like':'%'+_0x1c9d86[_0x1085('0x34')][_0x1085('0x41')]+'%'};return _0x4fe02a;})});}_0x400c61=_[_0x1085('0x3f')]({},_0x400c61,_0x1c9d86['options']);return _0x66afa1[_0x1085('0x51')](_0x400c61);}})[_0x1085('0x26')](function(_0x5809d4){if(_0x5809d4){_0x46104b=_0x5809d4['length'];if(!_0x1c9d86[_0x1085('0x34')][_0x1085('0x3a')](_0x1085('0x3b'))){_0x400c61[_0x1085('0x22')]=qs[_0x1085('0x22')](_0x1c9d86[_0x1085('0x34')][_0x1085('0x22')]);_0x400c61[_0x1085('0x21')]=qs[_0x1085('0x21')](_0x1c9d86['query'][_0x1085('0x21')]);}return _0x66afa1[_0x1085('0x51')](_0x400c61);}})[_0x1085('0x26')](function(_0x54a639){if(_0x54a639){return _0x54a639?{'count':_0x46104b,'rows':_0x54a639}:null;}})[_0x1085('0x26')](respondWithResult(_0x1ccbb5,null))[_0x1085('0x4a')](handleError(_0x1ccbb5,null));};exports[_0x1085('0x52')]=function(_0xaf3997,_0x3636d9,_0x4b1b96){var _0x5784df={};var _0x5d5579={};var _0x5c0e52;var _0x3d92ca;return db[_0x1085('0x2e')][_0x1085('0x4e')]({'where':{'id':_0xaf3997[_0x1085('0x46')]['id']}})['then'](handleEntityNotFound(_0x3636d9,null))[_0x1085('0x26')](function(_0x476514){if(_0x476514){_0x5c0e52=_0x476514;_0x5d5579[_0x1085('0x33')]=_['keys'](db[_0x1085('0x4f')][_0x1085('0x2f')]);_0x5d5579['query']=_[_0x1085('0x47')](_0xaf3997[_0x1085('0x34')]);_0x5d5579[_0x1085('0x35')]=_[_0x1085('0x37')](_0x5d5579[_0x1085('0x33')],_0x5d5579[_0x1085('0x34')]);_0x5784df[_0x1085('0x36')]=_[_0x1085('0x37')](_0x5d5579[_0x1085('0x33')],qs[_0x1085('0x38')](_0xaf3997[_0x1085('0x34')][_0x1085('0x38')]));_0x5784df['attributes']=_0x5784df[_0x1085('0x36')]['length']?_0x5784df[_0x1085('0x36')]:_0x5d5579[_0x1085('0x33')];_0x5784df[_0x1085('0x50')]=qs['sort'](_0xaf3997['query'][_0x1085('0x3c')]);_0x5784df[_0x1085('0x3d')]=qs[_0x1085('0x35')](_['pick'](_0xaf3997[_0x1085('0x34')],_0x5d5579[_0x1085('0x35')]));if(_0xaf3997[_0x1085('0x34')][_0x1085('0x41')]){_0x5784df[_0x1085('0x3d')]=_['merge'](_0x5784df[_0x1085('0x3d')],{'$or':_[_0x1085('0x2d')](_0x5784df['attributes'],function(_0x41cbd7){var _0x48db7e={};_0x48db7e[_0x41cbd7]={'$like':'%'+_0xaf3997[_0x1085('0x34')][_0x1085('0x41')]+'%'};return _0x48db7e;})});}_0x5784df=_[_0x1085('0x3f')]({},_0x5784df,_0xaf3997[_0x1085('0x42')]);return _0x5c0e52['getSubjects'](_0x5784df);}})[_0x1085('0x26')](function(_0x5f5883){if(_0x5f5883){_0x3d92ca=_0x5f5883['length'];if(!_0xaf3997[_0x1085('0x34')][_0x1085('0x3a')](_0x1085('0x3b'))){_0x5784df[_0x1085('0x22')]=qs['limit'](_0xaf3997[_0x1085('0x34')][_0x1085('0x22')]);_0x5784df[_0x1085('0x21')]=qs[_0x1085('0x21')](_0xaf3997[_0x1085('0x34')][_0x1085('0x21')]);}return _0x5c0e52[_0x1085('0x52')](_0x5784df);}})[_0x1085('0x26')](function(_0x588d30){if(_0x588d30){return _0x588d30?{'count':_0x3d92ca,'rows':_0x588d30}:null;}})['then'](respondWithResult(_0x3636d9,null))['catch'](handleError(_0x3636d9,null));};exports[_0x1085('0x53')]=function(_0x451f95,_0x2dfa44,_0x46b0f2){var _0x590adb={};var _0xc432cb={};var _0x2e52f9;var _0x3e5e8c;return db[_0x1085('0x2e')][_0x1085('0x4e')]({'where':{'id':_0x451f95[_0x1085('0x46')]['id']}})[_0x1085('0x26')](handleEntityNotFound(_0x2dfa44,null))[_0x1085('0x26')](function(_0xd4f978){if(_0xd4f978){_0x2e52f9=_0xd4f978;_0xc432cb[_0x1085('0x33')]=_[_0x1085('0x47')](db[_0x1085('0x4f')]['rawAttributes']);_0xc432cb[_0x1085('0x34')]=_[_0x1085('0x47')](_0x451f95[_0x1085('0x34')]);_0xc432cb['filters']=_[_0x1085('0x37')](_0xc432cb[_0x1085('0x33')],_0xc432cb['query']);_0x590adb[_0x1085('0x36')]=_['intersection'](_0xc432cb['model'],qs[_0x1085('0x38')](_0x451f95['query'][_0x1085('0x38')]));_0x590adb['attributes']=_0x590adb['attributes'][_0x1085('0x39')]?_0x590adb[_0x1085('0x36')]:_0xc432cb[_0x1085('0x33')];_0x590adb[_0x1085('0x50')]=qs[_0x1085('0x3c')](_0x451f95[_0x1085('0x34')]['sort']);_0x590adb['where']=qs[_0x1085('0x35')](_[_0x1085('0x3e')](_0x451f95[_0x1085('0x34')],_0xc432cb[_0x1085('0x35')]));if(_0x451f95[_0x1085('0x34')][_0x1085('0x41')]){_0x590adb[_0x1085('0x3d')]=_['merge'](_0x590adb['where'],{'$or':_[_0x1085('0x2d')](_0x590adb['attributes'],function(_0x360b58){var _0x4e1c77={};_0x4e1c77[_0x360b58]={'$like':'%'+_0x451f95[_0x1085('0x34')][_0x1085('0x41')]+'%'};return _0x4e1c77;})});}_0x590adb=_['merge']({},_0x590adb,_0x451f95[_0x1085('0x42')]);return _0x2e52f9[_0x1085('0x53')](_0x590adb);}})[_0x1085('0x26')](function(_0x472b56){if(_0x472b56){_0x3e5e8c=_0x472b56[_0x1085('0x39')];if(!_0x451f95[_0x1085('0x34')][_0x1085('0x3a')]('nolimit')){_0x590adb[_0x1085('0x22')]=qs['limit'](_0x451f95[_0x1085('0x34')][_0x1085('0x22')]);_0x590adb[_0x1085('0x21')]=qs['offset'](_0x451f95[_0x1085('0x34')][_0x1085('0x21')]);}return _0x2e52f9[_0x1085('0x53')](_0x590adb);}})[_0x1085('0x26')](function(_0x406099){if(_0x406099){return _0x406099?{'count':_0x3e5e8c,'rows':_0x406099}:null;}})[_0x1085('0x26')](respondWithResult(_0x2dfa44,null))[_0x1085('0x4a')](handleError(_0x2dfa44,null));};
\ No newline at end of file
index 01d2ba9..c95851a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5058=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes','define','VtigerConfiguration','lodash','util','api'];(function(_0x443716,_0x533693){var _0x1e8a30=function(_0x582318){while(--_0x582318){_0x443716['push'](_0x443716['shift']());}};_0x1e8a30(++_0x533693);}(_0x5058,0x99));var _0x8505=function(_0x2d91c6,_0x10ae0e){_0x2d91c6=_0x2d91c6-0x0;var _0x3a8d19=_0x5058[_0x2d91c6];return _0x3a8d19;};'use strict';var _=require(_0x8505('0x0'));var util=require(_0x8505('0x1'));var logger=require('../../config/logger')(_0x8505('0x2'));var moment=require(_0x8505('0x3'));var BPromise=require(_0x8505('0x4'));var rp=require(_0x8505('0x5'));var fs=require('fs');var path=require(_0x8505('0x6'));var rimraf=require(_0x8505('0x7'));var config=require(_0x8505('0x8'));var attributes=require(_0x8505('0x9'));module['exports']=function(_0x48dd2d,_0xe5cc44){return _0x48dd2d[_0x8505('0xa')](_0x8505('0xb'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8a4c=['VtigerConfiguration','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports','define'];(function(_0x49ca18,_0x5e6d05){var _0x145d54=function(_0x30b9be){while(--_0x30b9be){_0x49ca18['push'](_0x49ca18['shift']());}};_0x145d54(++_0x5e6d05);}(_0x8a4c,0x1d5));var _0xc8a4=function(_0x2d364e,_0x301c5e){_0x2d364e=_0x2d364e-0x0;var _0x1b9312=_0x8a4c[_0x2d364e];return _0x1b9312;};'use strict';var _=require(_0xc8a4('0x0'));var util=require(_0xc8a4('0x1'));var logger=require(_0xc8a4('0x2'))('api');var moment=require(_0xc8a4('0x3'));var BPromise=require(_0xc8a4('0x4'));var rp=require(_0xc8a4('0x5'));var fs=require('fs');var path=require(_0xc8a4('0x6'));var rimraf=require(_0xc8a4('0x7'));var config=require(_0xc8a4('0x8'));var attributes=require(_0xc8a4('0x9'));module[_0xc8a4('0xa')]=function(_0x571fe2,_0x3d3cd3){return _0x571fe2[_0xc8a4('0xb')](_0xc8a4('0xc'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 38f839b..86c8d6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc54=['http','then','info','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VtigerConfiguration,\x20%s,\x20%s','result','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client'];(function(_0x52e0b3,_0x237bd5){var _0x4ede58=function(_0x150aab){while(--_0x150aab){_0x52e0b3['push'](_0x52e0b3['shift']());}};_0x4ede58(++_0x237bd5);}(_0xdc54,0xde));var _0x4dc5=function(_0x49a704,_0x1cdd55){_0x49a704=_0x49a704-0x0;var _0x421453=_0xdc54[_0x49a704];return _0x421453;};'use strict';var _=require(_0x4dc5('0x0'));var util=require(_0x4dc5('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x4dc5('0x2'));var fs=require('fs');var Redis=require(_0x4dc5('0x3'));var db=require(_0x4dc5('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4dc5('0x5'))(_0x4dc5('0x6'));var config=require('../../config/environment');var jayson=require(_0x4dc5('0x7'));var client=jayson[_0x4dc5('0x8')][_0x4dc5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x448503,_0x5cd3e1,_0x4cc716){return new BPromise(function(_0x2768ab,_0x147603){return client['request'](_0x448503,_0x4cc716)[_0x4dc5('0xa')](function(_0xf3a766){logger[_0x4dc5('0xb')]('VtigerConfiguration,\x20%s,\x20%s',_0x5cd3e1,_0x4dc5('0xc'));logger[_0x4dc5('0xd')](_0x4dc5('0xe'),_0x5cd3e1,'request\x20sent',JSON[_0x4dc5('0xf')](_0xf3a766));if(_0xf3a766[_0x4dc5('0x10')]){if(_0xf3a766[_0x4dc5('0x10')][_0x4dc5('0x11')]===0x1f4){logger[_0x4dc5('0x10')]('VtigerConfiguration,\x20%s,\x20%s',_0x5cd3e1,_0xf3a766[_0x4dc5('0x10')][_0x4dc5('0x12')]);return _0x147603(_0xf3a766[_0x4dc5('0x10')]['message']);}logger[_0x4dc5('0x10')]('VtigerConfiguration,\x20%s,\x20%s',_0x5cd3e1,_0xf3a766[_0x4dc5('0x10')]['message']);return _0x2768ab(_0xf3a766[_0x4dc5('0x10')][_0x4dc5('0x12')]);}else{logger['info'](_0x4dc5('0x13'),_0x5cd3e1,'request\x20sent');_0x2768ab(_0xf3a766[_0x4dc5('0x14')][_0x4dc5('0x12')]);}})['catch'](function(_0x34d63b){logger[_0x4dc5('0x10')](_0x4dc5('0x13'),_0x5cd3e1,_0x34d63b);_0x147603(_0x34d63b);});});}
\ No newline at end of file
+var _0xec46=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','VtigerConfiguration,\x20%s,\x20%s','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','lodash','util'];(function(_0x4ab3fb,_0x776775){var _0x34fe1e=function(_0x1c94c5){while(--_0x1c94c5){_0x4ab3fb['push'](_0x4ab3fb['shift']());}};_0x34fe1e(++_0x776775);}(_0xec46,0x8e));var _0x6ec4=function(_0x1fa2b7,_0x1072a4){_0x1fa2b7=_0x1fa2b7-0x0;var _0x16fb89=_0xec46[_0x1fa2b7];return _0x16fb89;};'use strict';var _=require(_0x6ec4('0x0'));var util=require(_0x6ec4('0x1'));var moment=require('moment');var BPromise=require(_0x6ec4('0x2'));var rs=require(_0x6ec4('0x3'));var fs=require('fs');var Redis=require(_0x6ec4('0x4'));var db=require(_0x6ec4('0x5'))['db'];var utils=require(_0x6ec4('0x6'));var logger=require(_0x6ec4('0x7'))(_0x6ec4('0x8'));var config=require('../../config/environment');var jayson=require(_0x6ec4('0x9'));var client=jayson[_0x6ec4('0xa')][_0x6ec4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4f3a5c,_0x218fdf,_0x3e0abf){return new BPromise(function(_0x5e0422,_0x40a83c){return client['request'](_0x4f3a5c,_0x3e0abf)[_0x6ec4('0xc')](function(_0x17a3a1){logger['info'](_0x6ec4('0xd'),_0x218fdf,'request\x20sent');logger[_0x6ec4('0xe')](_0x6ec4('0xf'),_0x218fdf,'request\x20sent',JSON[_0x6ec4('0x10')](_0x17a3a1));if(_0x17a3a1['error']){if(_0x17a3a1[_0x6ec4('0x11')][_0x6ec4('0x12')]===0x1f4){logger[_0x6ec4('0x11')](_0x6ec4('0xd'),_0x218fdf,_0x17a3a1[_0x6ec4('0x11')][_0x6ec4('0x13')]);return _0x40a83c(_0x17a3a1[_0x6ec4('0x11')]['message']);}logger[_0x6ec4('0x11')](_0x6ec4('0xd'),_0x218fdf,_0x17a3a1[_0x6ec4('0x11')][_0x6ec4('0x13')]);return _0x5e0422(_0x17a3a1['error'][_0x6ec4('0x13')]);}else{logger[_0x6ec4('0x14')](_0x6ec4('0xd'),_0x218fdf,_0x6ec4('0x15'));_0x5e0422(_0x17a3a1[_0x6ec4('0x16')][_0x6ec4('0x13')]);}})[_0x6ec4('0x17')](function(_0x4607e3){logger['error'](_0x6ec4('0xd'),_0x218fdf,_0x4607e3);_0x40a83c(_0x4607e3);});});}
\ No newline at end of file
index 174f28e..8fd6678 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46a9=['create','put','/:id','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','isAuthenticated','index','post'];(function(_0x5ef55a,_0x2a03b1){var _0x20ae40=function(_0x46ce81){while(--_0x46ce81){_0x5ef55a['push'](_0x5ef55a['shift']());}};_0x20ae40(++_0x2a03b1);}(_0x46a9,0x1e5));var _0x946a=function(_0x5b3450,_0x189865){_0x5b3450=_0x5b3450-0x0;var _0xd64cb2=_0x46a9[_0x5b3450];return _0xd64cb2;};'use strict';var multer=require('multer');var util=require(_0x946a('0x0'));var path=require(_0x946a('0x1'));var timeout=require(_0x946a('0x2'));var express=require(_0x946a('0x3'));var router=express[_0x946a('0x4')]();var fs_extra=require(_0x946a('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x946a('0x6'));var config=require('../../config/environment');var controller=require('./intVtigerField.controller');router['get']('/',auth[_0x946a('0x7')](),controller[_0x946a('0x8')]);router['get']('/:id',auth[_0x946a('0x7')](),controller['show']);router[_0x946a('0x9')]('/',auth[_0x946a('0x7')](),controller[_0x946a('0xa')]);router[_0x946a('0xb')](_0x946a('0xc'),auth[_0x946a('0x7')](),controller['update']);router[_0x946a('0xd')](_0x946a('0xc'),auth[_0x946a('0x7')](),controller[_0x946a('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0xcdcd=['./intVtigerField.controller','isAuthenticated','index','show','post','create','/:id','delete','destroy','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x11f249,_0x4ca4a8){var _0x5c3656=function(_0x27c9f8){while(--_0x27c9f8){_0x11f249['push'](_0x11f249['shift']());}};_0x5c3656(++_0x4ca4a8);}(_0xcdcd,0x189));var _0xdcdc=function(_0x38aa04,_0x2c8039){_0x38aa04=_0x38aa04-0x0;var _0x39bb22=_0xcdcd[_0x38aa04];return _0x39bb22;};'use strict';var multer=require('multer');var util=require(_0xdcdc('0x0'));var path=require('path');var timeout=require(_0xdcdc('0x1'));var express=require(_0xdcdc('0x2'));var router=express[_0xdcdc('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xdcdc('0x4'));var interaction=require(_0xdcdc('0x5'));var config=require(_0xdcdc('0x6'));var controller=require(_0xdcdc('0x7'));router['get']('/',auth[_0xdcdc('0x8')](),controller[_0xdcdc('0x9')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xdcdc('0xa')]);router[_0xdcdc('0xb')]('/',auth[_0xdcdc('0x8')](),controller[_0xdcdc('0xc')]);router['put'](_0xdcdc('0xd'),auth['isAuthenticated'](),controller['update']);router[_0xdcdc('0xe')](_0xdcdc('0xd'),auth['isAuthenticated'](),controller[_0xdcdc('0xf')]);module['exports']=router;
\ No newline at end of file
index 89527fd..da61b8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ccf=['string','customVariable','keyValue','picklist','STRING','ENUM','variable','BOOLEAN','sequelize'];(function(_0x4b8052,_0x217325){var _0x3ee955=function(_0x240d24){while(--_0x240d24){_0x4b8052['push'](_0x4b8052['shift']());}};_0x3ee955(++_0x217325);}(_0x7ccf,0x8f));var _0xf7cc=function(_0xe84805,_0x2702d9){_0xe84805=_0xe84805-0x0;var _0x398efd=_0x7ccf[_0xe84805];return _0x398efd;};'use strict';var Sequelize=require(_0xf7cc('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0xf7cc('0x1'),'variable',_0xf7cc('0x2'),_0xf7cc('0x3'),_0xf7cc('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0xf7cc('0x5')]},'key':{'type':Sequelize[_0xf7cc('0x5')]},'keyType':{'type':Sequelize[_0xf7cc('0x6')](_0xf7cc('0x1'),_0xf7cc('0x7'),_0xf7cc('0x2'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xf7cc('0x5')]},'customField':{'type':Sequelize[_0xf7cc('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf7cc('0x5')]}};
\ No newline at end of file
+var _0x544e=['string','variable','customVariable','keyValue','STRING','sequelize','exports','ENUM'];(function(_0x529c58,_0x5040d0){var _0x5ad8d8=function(_0x571785){while(--_0x571785){_0x529c58['push'](_0x529c58['shift']());}};_0x5ad8d8(++_0x5040d0);}(_0x544e,0xb5));var _0xe544=function(_0x254aea,_0x21fe07){_0x254aea=_0x254aea-0x0;var _0x36e4f3=_0x544e[_0x254aea];return _0x36e4f3;};'use strict';var Sequelize=require(_0xe544('0x0'));module[_0xe544('0x1')]={'type':{'type':Sequelize[_0xe544('0x2')](_0xe544('0x3'),_0xe544('0x4'),_0xe544('0x5'),_0xe544('0x6'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0xe544('0x3'),_0xe544('0x4'),_0xe544('0x5'))},'keyContent':{'type':Sequelize[_0xe544('0x7')]},'idField':{'type':Sequelize[_0xe544('0x7')]},'nameField':{'type':Sequelize[_0xe544('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xe544('0x7')]}};
\ No newline at end of file
index a1c6911..065625e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c10=['query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','where','pick','filter','merge','VIRTUAL','includeAll','include','rows','catch','show','params','keys','find','create','body','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','destroy','then','error','stack','name','send','index','map','VtigerField','rawAttributes','type','key'];(function(_0x51d9cb,_0x2b225d){var _0xccbfc3=function(_0x25df06){while(--_0x25df06){_0x51d9cb['push'](_0x51d9cb['shift']());}};_0xccbfc3(++_0x2b225d);}(_0x0c10,0xf0));var _0x00c1=function(_0x3dff0d,_0x4d59ff){_0x3dff0d=_0x3dff0d-0x0;var _0x352383=_0x0c10[_0x3dff0d];return _0x352383;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x00c1('0x0'));var zipdir=require(_0x00c1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x00c1('0x2'));var BPromise=require(_0x00c1('0x3'));var Mustache=require(_0x00c1('0x4'));var util=require(_0x00c1('0x5'));var path=require(_0x00c1('0x6'));var sox=require(_0x00c1('0x7'));var csv=require(_0x00c1('0x8'));var ejs=require(_0x00c1('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x00c1('0xa'));var squel=require(_0x00c1('0xb'));var crypto=require(_0x00c1('0xc'));var jsforce=require(_0x00c1('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x00c1('0xe'));var Papa=require(_0x00c1('0xf'));var Redis=require('ioredis');var authService=require(_0x00c1('0x10'));var qs=require(_0x00c1('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x00c1('0x12'));var logger=require(_0x00c1('0x13'))(_0x00c1('0x14'));var utils=require('../../config/utils');var config=require(_0x00c1('0x15'));var licenseUtil=require(_0x00c1('0x16'));var db=require(_0x00c1('0x17'))['db'];function respondWithStatusCode(_0x159237,_0x11ae8b){_0x11ae8b=_0x11ae8b||0xcc;return function(_0x24b852){if(_0x24b852){return _0x159237[_0x00c1('0x18')](_0x11ae8b);}return _0x159237[_0x00c1('0x19')](_0x11ae8b)[_0x00c1('0x1a')]();};}function respondWithResult(_0x437040,_0x566ddc){_0x566ddc=_0x566ddc||0xc8;return function(_0x3032e3){if(_0x3032e3){return _0x437040[_0x00c1('0x19')](_0x566ddc)[_0x00c1('0x1b')](_0x3032e3);}};}function respondWithFilteredResult(_0x2842b,_0x24e489){return function(_0x84113a){if(_0x84113a){var _0xbf9a2b=typeof _0x24e489[_0x00c1('0x1c')]===_0x00c1('0x1d')&&typeof _0x24e489[_0x00c1('0x1e')]===_0x00c1('0x1d');var _0x2c0f07=_0x84113a[_0x00c1('0x1f')];var _0x2082ab=_0xbf9a2b?0x0:_0x24e489[_0x00c1('0x1c')];var _0x236446=_0xbf9a2b?_0x84113a['count']:_0x24e489['offset']+_0x24e489[_0x00c1('0x1e')];var _0x4a0a7e;if(_0x236446>=_0x2c0f07){_0x236446=_0x2c0f07;_0x4a0a7e=0xc8;}else{_0x4a0a7e=0xce;}_0x2842b[_0x00c1('0x19')](_0x4a0a7e);return _0x2842b[_0x00c1('0x20')]('Content-Range',_0x2082ab+'-'+_0x236446+'/'+_0x2c0f07)[_0x00c1('0x1b')](_0x84113a);}return null;};}function patchUpdates(_0x4d7c1f){return function(_0x10fa8b){try{jsonpatch[_0x00c1('0x21')](_0x10fa8b,_0x4d7c1f,!![]);}catch(_0x33c8fa){return BPromise[_0x00c1('0x22')](_0x33c8fa);}return _0x10fa8b[_0x00c1('0x23')]();};}function saveUpdates(_0x5e8627,_0x2407b8){return function(_0x440ea8){if(_0x440ea8){return _0x440ea8['update'](_0x5e8627)['then'](function(_0x1cb598){return _0x1cb598;});}return null;};}function removeEntity(_0x1e244b,_0x1ce41b){return function(_0x3507b3){if(_0x3507b3){return _0x3507b3[_0x00c1('0x24')]()[_0x00c1('0x25')](function(){_0x1e244b['status'](0xcc)[_0x00c1('0x1a')]();});}};}function handleEntityNotFound(_0x54ff2a,_0x591d67){return function(_0x4d0d6a){if(!_0x4d0d6a){_0x54ff2a[_0x00c1('0x18')](0x194);}return _0x4d0d6a;};}function handleError(_0x34ef59,_0x41cb9e){_0x41cb9e=_0x41cb9e||0x1f4;return function(_0x174d27){logger[_0x00c1('0x26')](_0x174d27[_0x00c1('0x27')]);if(_0x174d27['name']){delete _0x174d27[_0x00c1('0x28')];}_0x34ef59[_0x00c1('0x19')](_0x41cb9e)[_0x00c1('0x29')](_0x174d27);};}exports[_0x00c1('0x2a')]=function(_0x1c8a04,_0x21f0fb){var _0x3b4bdb={},_0x943d0c={},_0x4f0dce={'count':0x0,'rows':[]};var _0x10d77b=_[_0x00c1('0x2b')](db[_0x00c1('0x2c')][_0x00c1('0x2d')],function(_0x8214f9){return{'name':_0x8214f9['fieldName'],'type':_0x8214f9[_0x00c1('0x2e')][_0x00c1('0x2f')]};});_0x943d0c['model']=_[_0x00c1('0x2b')](_0x10d77b,_0x00c1('0x28'));_0x943d0c[_0x00c1('0x30')]=_['keys'](_0x1c8a04[_0x00c1('0x30')]);_0x943d0c[_0x00c1('0x31')]=_[_0x00c1('0x32')](_0x943d0c['model'],_0x943d0c[_0x00c1('0x30')]);_0x3b4bdb[_0x00c1('0x33')]=_[_0x00c1('0x32')](_0x943d0c[_0x00c1('0x34')],qs[_0x00c1('0x35')](_0x1c8a04[_0x00c1('0x30')][_0x00c1('0x35')]));_0x3b4bdb[_0x00c1('0x33')]=_0x3b4bdb[_0x00c1('0x33')][_0x00c1('0x36')]?_0x3b4bdb[_0x00c1('0x33')]:_0x943d0c[_0x00c1('0x34')];if(!_0x1c8a04['query'][_0x00c1('0x37')](_0x00c1('0x38'))){_0x3b4bdb[_0x00c1('0x1e')]=qs['limit'](_0x1c8a04[_0x00c1('0x30')][_0x00c1('0x1e')]);_0x3b4bdb['offset']=qs[_0x00c1('0x1c')](_0x1c8a04['query']['offset']);}_0x3b4bdb['order']=qs['sort'](_0x1c8a04[_0x00c1('0x30')]['sort']);_0x3b4bdb[_0x00c1('0x39')]=qs['filters'](_[_0x00c1('0x3a')](_0x1c8a04[_0x00c1('0x30')],_0x943d0c[_0x00c1('0x31')]),_0x10d77b);if(_0x1c8a04[_0x00c1('0x30')][_0x00c1('0x3b')]){_0x3b4bdb[_0x00c1('0x39')]=_[_0x00c1('0x3c')](_0x3b4bdb[_0x00c1('0x39')],{'$or':_[_0x00c1('0x2b')](_0x10d77b,function(_0xd30031){if(_0xd30031['type']!==_0x00c1('0x3d')){var _0x14d666={};_0x14d666[_0xd30031['name']]={'$like':'%'+_0x1c8a04[_0x00c1('0x30')][_0x00c1('0x3b')]+'%'};return _0x14d666;}})});}_0x3b4bdb=_[_0x00c1('0x3c')]({},_0x3b4bdb,_0x1c8a04['options']);var _0x575ea4={'where':_0x3b4bdb[_0x00c1('0x39')]};return db['VtigerField'][_0x00c1('0x1f')](_0x575ea4)['then'](function(_0x24bb04){_0x4f0dce['count']=_0x24bb04;if(_0x1c8a04[_0x00c1('0x30')][_0x00c1('0x3e')]){_0x3b4bdb[_0x00c1('0x3f')]=[{'all':!![]}];}return db[_0x00c1('0x2c')]['findAll'](_0x3b4bdb);})[_0x00c1('0x25')](function(_0x4a0ca3){_0x4f0dce[_0x00c1('0x40')]=_0x4a0ca3;return _0x4f0dce;})[_0x00c1('0x25')](respondWithFilteredResult(_0x21f0fb,_0x3b4bdb))[_0x00c1('0x41')](handleError(_0x21f0fb,null));};exports[_0x00c1('0x42')]=function(_0x148b35,_0x3a4735){var _0x1b112c={'raw':!![],'where':{'id':_0x148b35[_0x00c1('0x43')]['id']}},_0x51c211={};_0x51c211['model']=_[_0x00c1('0x44')](db[_0x00c1('0x2c')][_0x00c1('0x2d')]);_0x51c211[_0x00c1('0x30')]=_[_0x00c1('0x44')](_0x148b35[_0x00c1('0x30')]);_0x51c211[_0x00c1('0x31')]=_[_0x00c1('0x32')](_0x51c211[_0x00c1('0x34')],_0x51c211[_0x00c1('0x30')]);_0x1b112c[_0x00c1('0x33')]=_[_0x00c1('0x32')](_0x51c211[_0x00c1('0x34')],qs[_0x00c1('0x35')](_0x148b35[_0x00c1('0x30')][_0x00c1('0x35')]));_0x1b112c[_0x00c1('0x33')]=_0x1b112c[_0x00c1('0x33')]['length']?_0x1b112c[_0x00c1('0x33')]:_0x51c211[_0x00c1('0x34')];if(_0x148b35[_0x00c1('0x30')][_0x00c1('0x3e')]){_0x1b112c[_0x00c1('0x3f')]=[{'all':!![]}];}_0x1b112c=_[_0x00c1('0x3c')]({},_0x1b112c,_0x148b35['options']);return db[_0x00c1('0x2c')][_0x00c1('0x45')](_0x1b112c)[_0x00c1('0x25')](handleEntityNotFound(_0x3a4735,null))['then'](respondWithResult(_0x3a4735,null))[_0x00c1('0x41')](handleError(_0x3a4735,null));};exports[_0x00c1('0x46')]=function(_0x4b0163,_0x3979c7){return db[_0x00c1('0x2c')]['create'](_0x4b0163[_0x00c1('0x47')],{})[_0x00c1('0x25')](respondWithResult(_0x3979c7,0xc9))[_0x00c1('0x41')](handleError(_0x3979c7,null));};exports['update']=function(_0x45c8ca,_0x105481){if(_0x45c8ca['body']['id']){delete _0x45c8ca['body']['id'];}return db['VtigerField'][_0x00c1('0x45')]({'where':{'id':_0x45c8ca['params']['id']}})[_0x00c1('0x25')](handleEntityNotFound(_0x105481,null))[_0x00c1('0x25')](saveUpdates(_0x45c8ca['body'],null))['then'](respondWithResult(_0x105481,null))[_0x00c1('0x41')](handleError(_0x105481,null));};exports[_0x00c1('0x24')]=function(_0x821ba6,_0xd2fcee){return db[_0x00c1('0x2c')][_0x00c1('0x45')]({'where':{'id':_0x821ba6['params']['id']}})['then'](handleEntityNotFound(_0xd2fcee,null))[_0x00c1('0x25')](removeEntity(_0xd2fcee,null))[_0x00c1('0x41')](handleError(_0xd2fcee,null));};
\ No newline at end of file
+var _0x27d8=['Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','VtigerField','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0x27d8,0x111));var _0x827d=function(_0x3e478c,_0x152670){_0x3e478c=_0x3e478c-0x0;var _0x29ef89=_0x27d8[_0x3e478c];return _0x29ef89;};'use strict';var emlformat=require(_0x827d('0x0'));var rimraf=require(_0x827d('0x1'));var zipdir=require(_0x827d('0x2'));var jsonpatch=require(_0x827d('0x3'));var rp=require('request-promise');var moment=require(_0x827d('0x4'));var BPromise=require(_0x827d('0x5'));var Mustache=require('mustache');var util=require(_0x827d('0x6'));var path=require(_0x827d('0x7'));var sox=require('sox');var csv=require(_0x827d('0x8'));var ejs=require(_0x827d('0x9'));var fs=require('fs');var fs_extra=require(_0x827d('0xa'));var _=require('lodash');var squel=require(_0x827d('0xb'));var crypto=require(_0x827d('0xc'));var jsforce=require(_0x827d('0xd'));var deskjs=require(_0x827d('0xe'));var toCsv=require(_0x827d('0x8'));var querystring=require(_0x827d('0xf'));var Papa=require(_0x827d('0x10'));var Redis=require(_0x827d('0x11'));var authService=require(_0x827d('0x12'));var qs=require(_0x827d('0x13'));var as=require(_0x827d('0x14'));var hardwareService=require(_0x827d('0x15'));var logger=require('../../config/logger')(_0x827d('0x16'));var utils=require(_0x827d('0x17'));var config=require(_0x827d('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x827d('0x19'))['db'];function respondWithStatusCode(_0x25490d,_0x39019f){_0x39019f=_0x39019f||0xcc;return function(_0x4d268a){if(_0x4d268a){return _0x25490d[_0x827d('0x1a')](_0x39019f);}return _0x25490d[_0x827d('0x1b')](_0x39019f)[_0x827d('0x1c')]();};}function respondWithResult(_0x40d7a1,_0x118609){_0x118609=_0x118609||0xc8;return function(_0x2064e9){if(_0x2064e9){return _0x40d7a1[_0x827d('0x1b')](_0x118609)[_0x827d('0x1d')](_0x2064e9);}};}function respondWithFilteredResult(_0x49f8cd,_0x11e98c){return function(_0x515378){if(_0x515378){var _0x47e0ad=typeof _0x11e98c[_0x827d('0x1e')]===_0x827d('0x1f')&&typeof _0x11e98c[_0x827d('0x20')]===_0x827d('0x1f');var _0x12473f=_0x515378[_0x827d('0x21')];var _0x5b7f8d=_0x47e0ad?0x0:_0x11e98c[_0x827d('0x1e')];var _0x5cf908=_0x47e0ad?_0x515378['count']:_0x11e98c[_0x827d('0x1e')]+_0x11e98c[_0x827d('0x20')];var _0x536a6a;if(_0x5cf908>=_0x12473f){_0x5cf908=_0x12473f;_0x536a6a=0xc8;}else{_0x536a6a=0xce;}_0x49f8cd[_0x827d('0x1b')](_0x536a6a);return _0x49f8cd[_0x827d('0x22')](_0x827d('0x23'),_0x5b7f8d+'-'+_0x5cf908+'/'+_0x12473f)['json'](_0x515378);}return null;};}function patchUpdates(_0x1662f6){return function(_0x45b3ba){try{jsonpatch['apply'](_0x45b3ba,_0x1662f6,!![]);}catch(_0x1270d1){return BPromise[_0x827d('0x24')](_0x1270d1);}return _0x45b3ba[_0x827d('0x25')]();};}function saveUpdates(_0x5457c8,_0x2ea432){return function(_0x34fffd){if(_0x34fffd){return _0x34fffd[_0x827d('0x26')](_0x5457c8)[_0x827d('0x27')](function(_0x322dbb){return _0x322dbb;});}return null;};}function removeEntity(_0x3031e9,_0x267d9d){return function(_0x569de9){if(_0x569de9){return _0x569de9[_0x827d('0x28')]()[_0x827d('0x27')](function(){_0x3031e9[_0x827d('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c9e3c,_0x151a62){return function(_0x1c5977){if(!_0x1c5977){_0x5c9e3c['sendStatus'](0x194);}return _0x1c5977;};}function handleError(_0x412c8e,_0x10bd0a){_0x10bd0a=_0x10bd0a||0x1f4;return function(_0x23c839){logger[_0x827d('0x29')](_0x23c839[_0x827d('0x2a')]);if(_0x23c839[_0x827d('0x2b')]){delete _0x23c839[_0x827d('0x2b')];}_0x412c8e[_0x827d('0x1b')](_0x10bd0a)[_0x827d('0x2c')](_0x23c839);};}exports[_0x827d('0x2d')]=function(_0x3124d3,_0x3589b2){var _0x270f98={},_0x5ddc5f={},_0xc4b2f5={'count':0x0,'rows':[]};var _0x3313eb=_[_0x827d('0x2e')](db[_0x827d('0x2f')][_0x827d('0x30')],function(_0x383ae3){return{'name':_0x383ae3[_0x827d('0x31')],'type':_0x383ae3[_0x827d('0x32')][_0x827d('0x33')]};});_0x5ddc5f[_0x827d('0x34')]=_[_0x827d('0x2e')](_0x3313eb,_0x827d('0x2b'));_0x5ddc5f[_0x827d('0x35')]=_[_0x827d('0x36')](_0x3124d3['query']);_0x5ddc5f['filters']=_[_0x827d('0x37')](_0x5ddc5f['model'],_0x5ddc5f['query']);_0x270f98[_0x827d('0x38')]=_['intersection'](_0x5ddc5f[_0x827d('0x34')],qs[_0x827d('0x39')](_0x3124d3[_0x827d('0x35')][_0x827d('0x39')]));_0x270f98[_0x827d('0x38')]=_0x270f98['attributes'][_0x827d('0x3a')]?_0x270f98['attributes']:_0x5ddc5f[_0x827d('0x34')];if(!_0x3124d3[_0x827d('0x35')][_0x827d('0x3b')](_0x827d('0x3c'))){_0x270f98[_0x827d('0x20')]=qs['limit'](_0x3124d3[_0x827d('0x35')][_0x827d('0x20')]);_0x270f98['offset']=qs[_0x827d('0x1e')](_0x3124d3[_0x827d('0x35')][_0x827d('0x1e')]);}_0x270f98['order']=qs[_0x827d('0x3d')](_0x3124d3[_0x827d('0x35')][_0x827d('0x3d')]);_0x270f98[_0x827d('0x3e')]=qs['filters'](_['pick'](_0x3124d3['query'],_0x5ddc5f[_0x827d('0x3f')]),_0x3313eb);if(_0x3124d3[_0x827d('0x35')]['filter']){_0x270f98[_0x827d('0x3e')]=_[_0x827d('0x40')](_0x270f98['where'],{'$or':_[_0x827d('0x2e')](_0x3313eb,function(_0x5dbba1){if(_0x5dbba1[_0x827d('0x32')]!==_0x827d('0x41')){var _0x5c5d24={};_0x5c5d24[_0x5dbba1[_0x827d('0x2b')]]={'$like':'%'+_0x3124d3[_0x827d('0x35')]['filter']+'%'};return _0x5c5d24;}})});}_0x270f98=_[_0x827d('0x40')]({},_0x270f98,_0x3124d3[_0x827d('0x42')]);var _0x4e6a52={'where':_0x270f98[_0x827d('0x3e')]};return db[_0x827d('0x2f')][_0x827d('0x21')](_0x4e6a52)[_0x827d('0x27')](function(_0xcd80d0){_0xc4b2f5[_0x827d('0x21')]=_0xcd80d0;if(_0x3124d3[_0x827d('0x35')][_0x827d('0x43')]){_0x270f98[_0x827d('0x44')]=[{'all':!![]}];}return db[_0x827d('0x2f')][_0x827d('0x45')](_0x270f98);})['then'](function(_0x40ac1d){_0xc4b2f5[_0x827d('0x46')]=_0x40ac1d;return _0xc4b2f5;})[_0x827d('0x27')](respondWithFilteredResult(_0x3589b2,_0x270f98))[_0x827d('0x47')](handleError(_0x3589b2,null));};exports[_0x827d('0x48')]=function(_0x5229cb,_0x4bcde6){var _0x3723ad={'raw':!![],'where':{'id':_0x5229cb['params']['id']}},_0x3beda6={};_0x3beda6[_0x827d('0x34')]=_[_0x827d('0x36')](db['VtigerField'][_0x827d('0x30')]);_0x3beda6['query']=_[_0x827d('0x36')](_0x5229cb[_0x827d('0x35')]);_0x3beda6[_0x827d('0x3f')]=_[_0x827d('0x37')](_0x3beda6[_0x827d('0x34')],_0x3beda6[_0x827d('0x35')]);_0x3723ad['attributes']=_['intersection'](_0x3beda6[_0x827d('0x34')],qs['fields'](_0x5229cb['query'][_0x827d('0x39')]));_0x3723ad[_0x827d('0x38')]=_0x3723ad[_0x827d('0x38')][_0x827d('0x3a')]?_0x3723ad[_0x827d('0x38')]:_0x3beda6['model'];if(_0x5229cb['query']['includeAll']){_0x3723ad[_0x827d('0x44')]=[{'all':!![]}];}_0x3723ad=_['merge']({},_0x3723ad,_0x5229cb['options']);return db[_0x827d('0x2f')][_0x827d('0x49')](_0x3723ad)['then'](handleEntityNotFound(_0x4bcde6,null))[_0x827d('0x27')](respondWithResult(_0x4bcde6,null))['catch'](handleError(_0x4bcde6,null));};exports[_0x827d('0x4a')]=function(_0x28462d,_0x9bd0c2){return db['VtigerField'][_0x827d('0x4a')](_0x28462d['body'],{})[_0x827d('0x27')](respondWithResult(_0x9bd0c2,0xc9))[_0x827d('0x47')](handleError(_0x9bd0c2,null));};exports[_0x827d('0x26')]=function(_0x4e9907,_0x2ad18a){if(_0x4e9907['body']['id']){delete _0x4e9907[_0x827d('0x4b')]['id'];}return db[_0x827d('0x2f')]['find']({'where':{'id':_0x4e9907['params']['id']}})[_0x827d('0x27')](handleEntityNotFound(_0x2ad18a,null))[_0x827d('0x27')](saveUpdates(_0x4e9907[_0x827d('0x4b')],null))[_0x827d('0x27')](respondWithResult(_0x2ad18a,null))[_0x827d('0x47')](handleError(_0x2ad18a,null));};exports[_0x827d('0x28')]=function(_0x39aa7f,_0x5f1de0){return db[_0x827d('0x2f')][_0x827d('0x49')]({'where':{'id':_0x39aa7f[_0x827d('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5f1de0,null))[_0x827d('0x27')](removeEntity(_0x5f1de0,null))['catch'](handleError(_0x5f1de0,null));};
\ No newline at end of file
index a6395e2..affa118 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeda9=['path','rimraf','./intVtigerField.attributes','exports','define','VtigerField','int_vtiger_fields','vtiger_unique_index','FieldId','util','../../config/logger','api','bluebird'];(function(_0x5e5f5a,_0x5cb19a){var _0x4141ae=function(_0x4bb2ea){while(--_0x4bb2ea){_0x5e5f5a['push'](_0x5e5f5a['shift']());}};_0x4141ae(++_0x5cb19a);}(_0xeda9,0x64));var _0x9eda=function(_0x45518f,_0x475a6b){_0x45518f=_0x45518f-0x0;var _0x198175=_0xeda9[_0x45518f];return _0x198175;};'use strict';var _=require('lodash');var util=require(_0x9eda('0x0'));var logger=require(_0x9eda('0x1'))(_0x9eda('0x2'));var moment=require('moment');var BPromise=require(_0x9eda('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9eda('0x4'));var rimraf=require(_0x9eda('0x5'));var config=require('../../config/environment');var attributes=require(_0x9eda('0x6'));module[_0x9eda('0x7')]=function(_0x59d156,_0x190076){return _0x59d156[_0x9eda('0x8')](_0x9eda('0x9'),attributes,{'tableName':_0x9eda('0xa'),'paranoid':![],'indexes':[{'name':_0x9eda('0xb'),'fields':['idField',_0x9eda('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa99a=['define','VtigerField','int_vtiger_fields','idField','FieldId','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intVtigerField.attributes'];(function(_0x3f3bad,_0x193f06){var _0x4f0801=function(_0x5cfd32){while(--_0x5cfd32){_0x3f3bad['push'](_0x3f3bad['shift']());}};_0x4f0801(++_0x193f06);}(_0xa99a,0x11d));var _0xaa99=function(_0x291f0c,_0x526ee5){_0x291f0c=_0x291f0c-0x0;var _0x46eb84=_0xa99a[_0x291f0c];return _0x46eb84;};'use strict';var _=require(_0xaa99('0x0'));var util=require('util');var logger=require(_0xaa99('0x1'))(_0xaa99('0x2'));var moment=require(_0xaa99('0x3'));var BPromise=require('bluebird');var rp=require(_0xaa99('0x4'));var fs=require('fs');var path=require(_0xaa99('0x5'));var rimraf=require(_0xaa99('0x6'));var config=require(_0xaa99('0x7'));var attributes=require(_0xaa99('0x8'));module['exports']=function(_0x172b47,_0x46a944){return _0x172b47[_0xaa99('0x9')](_0xaa99('0xa'),attributes,{'tableName':_0xaa99('0xb'),'paranoid':![],'indexes':[{'name':'vtiger_unique_index','fields':[_0xaa99('0xc'),_0xaa99('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index e641d50..fbf1a13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd748=['VtigerField,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VtigerField,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x1c081c,_0x513b69){var _0x137ab8=function(_0x38ae8b){while(--_0x38ae8b){_0x1c081c['push'](_0x1c081c['shift']());}};_0x137ab8(++_0x513b69);}(_0xd748,0x148));var _0x8d74=function(_0x57e00e,_0x36e79a){_0x57e00e=_0x57e00e-0x0;var _0x415e60=_0xd748[_0x57e00e];return _0x415e60;};'use strict';var _=require(_0x8d74('0x0'));var util=require('util');var moment=require(_0x8d74('0x1'));var BPromise=require(_0x8d74('0x2'));var rs=require(_0x8d74('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8d74('0x4'))['db'];var utils=require(_0x8d74('0x5'));var logger=require('../../config/logger')(_0x8d74('0x6'));var config=require(_0x8d74('0x7'));var jayson=require(_0x8d74('0x8'));var client=jayson[_0x8d74('0x9')][_0x8d74('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2f4e8c,_0x34f06e,_0x44af97){return new BPromise(function(_0x5f19b2,_0x1e0deb){return client[_0x8d74('0xb')](_0x2f4e8c,_0x44af97)[_0x8d74('0xc')](function(_0x122c50){logger[_0x8d74('0xd')](_0x8d74('0xe'),_0x34f06e,_0x8d74('0xf'));logger[_0x8d74('0x10')](_0x8d74('0x11'),_0x34f06e,_0x8d74('0xf'),JSON['stringify'](_0x122c50));if(_0x122c50[_0x8d74('0x12')]){if(_0x122c50[_0x8d74('0x12')][_0x8d74('0x13')]===0x1f4){logger[_0x8d74('0x12')](_0x8d74('0xe'),_0x34f06e,_0x122c50['error']['message']);return _0x1e0deb(_0x122c50[_0x8d74('0x12')]['message']);}logger[_0x8d74('0x12')](_0x8d74('0xe'),_0x34f06e,_0x122c50[_0x8d74('0x12')][_0x8d74('0x14')]);return _0x5f19b2(_0x122c50[_0x8d74('0x12')][_0x8d74('0x14')]);}else{logger[_0x8d74('0xd')](_0x8d74('0xe'),_0x34f06e,'request\x20sent');_0x5f19b2(_0x122c50[_0x8d74('0x15')][_0x8d74('0x14')]);}})[_0x8d74('0x16')](function(_0x5e8002){logger['error'](_0x8d74('0xe'),_0x34f06e,_0x5e8002);_0x1e0deb(_0x5e8002);});});}
\ No newline at end of file
+var _0x31ff=['client','http','request','then','info','VtigerField,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x280cb3,_0x155729){var _0x297cea=function(_0x796676){while(--_0x796676){_0x280cb3['push'](_0x280cb3['shift']());}};_0x297cea(++_0x155729);}(_0x31ff,0xd3));var _0xf31f=function(_0x2fbc48,_0x14e997){_0x2fbc48=_0x2fbc48-0x0;var _0x1dd872=_0x31ff[_0x2fbc48];return _0x1dd872;};'use strict';var _=require(_0xf31f('0x0'));var util=require(_0xf31f('0x1'));var moment=require(_0xf31f('0x2'));var BPromise=require(_0xf31f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf31f('0x4'))['db'];var utils=require(_0xf31f('0x5'));var logger=require(_0xf31f('0x6'))('rpc');var config=require(_0xf31f('0x7'));var jayson=require(_0xf31f('0x8'));var client=jayson[_0xf31f('0x9')][_0xf31f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xca0680,_0x2f9393,_0x2b8cb7){return new BPromise(function(_0x93dd82,_0x2e6f90){return client[_0xf31f('0xb')](_0xca0680,_0x2b8cb7)[_0xf31f('0xc')](function(_0x2b3201){logger[_0xf31f('0xd')](_0xf31f('0xe'),_0x2f9393,_0xf31f('0xf'));logger['debug']('VtigerField,\x20%s,\x20%s,\x20%s',_0x2f9393,_0xf31f('0xf'),JSON[_0xf31f('0x10')](_0x2b3201));if(_0x2b3201[_0xf31f('0x11')]){if(_0x2b3201[_0xf31f('0x11')][_0xf31f('0x12')]===0x1f4){logger[_0xf31f('0x11')]('VtigerField,\x20%s,\x20%s',_0x2f9393,_0x2b3201[_0xf31f('0x11')][_0xf31f('0x13')]);return _0x2e6f90(_0x2b3201[_0xf31f('0x11')]['message']);}logger[_0xf31f('0x11')](_0xf31f('0xe'),_0x2f9393,_0x2b3201['error']['message']);return _0x93dd82(_0x2b3201['error']['message']);}else{logger[_0xf31f('0xd')](_0xf31f('0xe'),_0x2f9393,'request\x20sent');_0x93dd82(_0x2b3201['result'][_0xf31f('0x13')]);}})['catch'](function(_0x1d75a9){logger['error'](_0xf31f('0xe'),_0x2f9393,_0x1d75a9);_0x2e6f90(_0x1d75a9);});});}
\ No newline at end of file
index 0a60ea3..fdb138f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b4d=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','create','post','addConfiguration','put','/:id','update','destroy','exports','multer'];(function(_0x39b62d,_0x4b802f){var _0x27ab0a=function(_0x3dea86){while(--_0x3dea86){_0x39b62d['push'](_0x39b62d['shift']());}};_0x27ab0a(++_0x4b802f);}(_0x8b4d,0x11d));var _0xd8b4=function(_0x4063a4,_0x19d730){_0x4063a4=_0x4063a4-0x0;var _0x17908d=_0x8b4d[_0x4063a4];return _0x17908d;};'use strict';var multer=require(_0xd8b4('0x0'));var util=require(_0xd8b4('0x1'));var path=require(_0xd8b4('0x2'));var timeout=require(_0xd8b4('0x3'));var express=require('express');var router=express[_0xd8b4('0x4')]();var fs_extra=require(_0xd8b4('0x5'));var auth=require(_0xd8b4('0x6'));var interaction=require(_0xd8b4('0x7'));var config=require('../../config/environment');var controller=require('./intZendeskAccount.controller');router[_0xd8b4('0x8')]('/',auth[_0xd8b4('0x9')](),controller['index']);router[_0xd8b4('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xd8b4('0xa')]);router[_0xd8b4('0x8')](_0xd8b4('0xb'),auth['isAuthenticated'](),controller[_0xd8b4('0xc')]);router['get'](_0xd8b4('0xd'),auth[_0xd8b4('0x9')](),controller['getFields']);router['post']('/',auth[_0xd8b4('0x9')](),controller[_0xd8b4('0xe')]);router[_0xd8b4('0xf')](_0xd8b4('0xb'),auth[_0xd8b4('0x9')](),controller[_0xd8b4('0x10')]);router[_0xd8b4('0x11')](_0xd8b4('0x12'),auth[_0xd8b4('0x9')](),controller[_0xd8b4('0x13')]);router['delete']('/:id',auth[_0xd8b4('0x9')](),controller[_0xd8b4('0x14')]);module[_0xd8b4('0x15')]=router;
\ No newline at end of file
+var _0x7286=['fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskAccount.controller','get','index','show','isAuthenticated','getConfigurations','getFields','create','/:id/configurations','addConfiguration','put','/:id','update','delete','exports','multer','util','path','connect-timeout','express'];(function(_0xf5e19b,_0x5a3305){var _0x17da4b=function(_0x353198){while(--_0x353198){_0xf5e19b['push'](_0xf5e19b['shift']());}};_0x17da4b(++_0x5a3305);}(_0x7286,0xca));var _0x6728=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0x7286[_0x49b207];return _0x2dc8fa;};'use strict';var multer=require(_0x6728('0x0'));var util=require(_0x6728('0x1'));var path=require(_0x6728('0x2'));var timeout=require(_0x6728('0x3'));var express=require(_0x6728('0x4'));var router=express['Router']();var fs_extra=require(_0x6728('0x5'));var auth=require(_0x6728('0x6'));var interaction=require(_0x6728('0x7'));var config=require('../../config/environment');var controller=require(_0x6728('0x8'));router[_0x6728('0x9')]('/',auth['isAuthenticated'](),controller[_0x6728('0xa')]);router[_0x6728('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x6728('0xb')]);router['get']('/:id/configurations',auth[_0x6728('0xc')](),controller[_0x6728('0xd')]);router[_0x6728('0x9')]('/:id/fields',auth['isAuthenticated'](),controller[_0x6728('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x6728('0xf')]);router['post'](_0x6728('0x10'),auth[_0x6728('0xc')](),controller[_0x6728('0x11')]);router[_0x6728('0x12')](_0x6728('0x13'),auth['isAuthenticated'](),controller[_0x6728('0x14')]);router[_0x6728('0x15')](_0x6728('0x13'),auth[_0x6728('0xc')](),controller['destroy']);module[_0x6728('0x16')]=router;
\ No newline at end of file
index b792b24..1bfc617 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x292c=['username','password','token','ENUM','integrationTab','newTab','sequelize','STRING'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x292c,0x66));var _0xc292=function(_0x496333,_0x1c47d6){_0x496333=_0x496333-0x0;var _0x44256e=_0x292c[_0x496333];return _0x44256e;};'use strict';var Sequelize=require(_0xc292('0x0'));module['exports']={'name':{'type':Sequelize[_0xc292('0x1')]},'description':{'type':Sequelize[_0xc292('0x1')]},'username':{'type':Sequelize[_0xc292('0x1')],'unique':_0xc292('0x2')},'password':{'type':Sequelize[_0xc292('0x1')]},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xc292('0x1')],'unique':'remoteUri'},'authType':{'type':Sequelize['ENUM'](_0xc292('0x3'),_0xc292('0x4')),'defaultValue':_0xc292('0x3')},'serverUrl':{'type':Sequelize[_0xc292('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xc292('0x5')](_0xc292('0x6'),_0xc292('0x7')),'defaultValue':_0xc292('0x6')}};
\ No newline at end of file
+var _0x1410=['password','token','integrationTab','newTab','sequelize','exports','STRING','username','remoteUri','ENUM'];(function(_0x2bc83a,_0xee75f1){var _0xb28a51=function(_0x5dc3ea){while(--_0x5dc3ea){_0x2bc83a['push'](_0x2bc83a['shift']());}};_0xb28a51(++_0xee75f1);}(_0x1410,0x130));var _0x0141=function(_0x2a3f94,_0x4667c3){_0x2a3f94=_0x2a3f94-0x0;var _0x1fbb3b=_0x1410[_0x2a3f94];return _0x1fbb3b;};'use strict';var Sequelize=require(_0x0141('0x0'));module[_0x0141('0x1')]={'name':{'type':Sequelize[_0x0141('0x2')]},'description':{'type':Sequelize[_0x0141('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x0141('0x3')},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x0141('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x0141('0x4')},'authType':{'type':Sequelize[_0x0141('0x5')](_0x0141('0x6'),_0x0141('0x7')),'defaultValue':_0x0141('0x6')},'serverUrl':{'type':Sequelize[_0x0141('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x0141('0x5')](_0x0141('0x8'),_0x0141('0x9')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index cb88efb..f639a49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['getConfigurations','findOne','ZendeskConfiguration','pick','hasOwnProperty','AccountId','Subjects','getSubjects','Descriptions','channel','ZendeskField','getFields','username','token','authType','remoteUri','slice','substring','GET','format','password','headers','Basic\x20%s','base64','%s/token:%s','toString','Sequelize','ValidationError','Unknown\x20authentication\x20type','description','remove','includes','ticket_fields','title','position','system_field_options','custom_field_options','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','json','offset','undefined','limit','status','set','Content-Range','apply','reject','save','update','then','stack','name','send','map','ZendeskAccount','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','count','findAll','rows','show','includeAll','include','find','create','body','catch','params'];(function(_0x3e6b2f,_0x1ffa07){var _0x323215=function(_0x5c4d82){while(--_0x5c4d82){_0x3e6b2f['push'](_0x3e6b2f['shift']());}};_0x323215(++_0x1ffa07);}(_0xe706,0xa3));var _0x6e70=function(_0x714e4e,_0x220d25){_0x714e4e=_0x714e4e-0x0;var _0x10552a=_0xe706[_0x714e4e];return _0x10552a;};'use strict';var emlformat=require(_0x6e70('0x0'));var rimraf=require(_0x6e70('0x1'));var zipdir=require(_0x6e70('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6e70('0x3'));var moment=require(_0x6e70('0x4'));var BPromise=require(_0x6e70('0x5'));var Mustache=require(_0x6e70('0x6'));var util=require(_0x6e70('0x7'));var path=require(_0x6e70('0x8'));var sox=require(_0x6e70('0x9'));var csv=require(_0x6e70('0xa'));var ejs=require(_0x6e70('0xb'));var fs=require('fs');var fs_extra=require(_0x6e70('0xc'));var _=require(_0x6e70('0xd'));var squel=require(_0x6e70('0xe'));var crypto=require(_0x6e70('0xf'));var jsforce=require(_0x6e70('0x10'));var deskjs=require(_0x6e70('0x11'));var toCsv=require(_0x6e70('0xa'));var querystring=require(_0x6e70('0x12'));var Papa=require(_0x6e70('0x13'));var Redis=require(_0x6e70('0x14'));var authService=require(_0x6e70('0x15'));var qs=require(_0x6e70('0x16'));var as=require(_0x6e70('0x17'));var hardwareService=require(_0x6e70('0x18'));var logger=require(_0x6e70('0x19'))('api');var utils=require('../../config/utils');var config=require(_0x6e70('0x1a'));var licenseUtil=require(_0x6e70('0x1b'));var db=require(_0x6e70('0x1c'))['db'];var integrations=require(_0x6e70('0x1d'));function respondWithStatusCode(_0x3b38f3,_0x310eb7){_0x310eb7=_0x310eb7||0xcc;return function(_0xa1eb74){if(_0xa1eb74){return _0x3b38f3[_0x6e70('0x1e')](_0x310eb7);}return _0x3b38f3['status'](_0x310eb7)['end']();};}function respondWithResult(_0x48bc72,_0x257e81){_0x257e81=_0x257e81||0xc8;return function(_0x5a37a6){if(_0x5a37a6){return _0x48bc72['status'](_0x257e81)[_0x6e70('0x1f')](_0x5a37a6);}};}function respondWithFilteredResult(_0x22c50c,_0x5d9263){return function(_0x24f3ac){if(_0x24f3ac){var _0x5c3fe7=typeof _0x5d9263[_0x6e70('0x20')]===_0x6e70('0x21')&&typeof _0x5d9263['limit']==='undefined';var _0x3bd572=_0x24f3ac['count'];var _0x28a21f=_0x5c3fe7?0x0:_0x5d9263[_0x6e70('0x20')];var _0x53acdc=_0x5c3fe7?_0x24f3ac['count']:_0x5d9263[_0x6e70('0x20')]+_0x5d9263[_0x6e70('0x22')];var _0x2368eb;if(_0x53acdc>=_0x3bd572){_0x53acdc=_0x3bd572;_0x2368eb=0xc8;}else{_0x2368eb=0xce;}_0x22c50c[_0x6e70('0x23')](_0x2368eb);return _0x22c50c[_0x6e70('0x24')](_0x6e70('0x25'),_0x28a21f+'-'+_0x53acdc+'/'+_0x3bd572)[_0x6e70('0x1f')](_0x24f3ac);}return null;};}function patchUpdates(_0x44a49f){return function(_0x29326f){try{jsonpatch[_0x6e70('0x26')](_0x29326f,_0x44a49f,!![]);}catch(_0x4a0cfe){return BPromise[_0x6e70('0x27')](_0x4a0cfe);}return _0x29326f[_0x6e70('0x28')]();};}function saveUpdates(_0x27b294,_0x502b2d){return function(_0x3ccd87){if(_0x3ccd87){return _0x3ccd87[_0x6e70('0x29')](_0x27b294)[_0x6e70('0x2a')](function(_0x50da2c){return _0x50da2c;});}return null;};}function removeEntity(_0x10fc91,_0x538b9c){return function(_0x50aec2){if(_0x50aec2){return _0x50aec2['destroy']()[_0x6e70('0x2a')](function(){_0x10fc91[_0x6e70('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3ecdf1,_0x1196ed){return function(_0x5f268f){if(!_0x5f268f){_0x3ecdf1[_0x6e70('0x1e')](0x194);}return _0x5f268f;};}function handleError(_0x67fb43,_0x2bb231){_0x2bb231=_0x2bb231||0x1f4;return function(_0x4a67ac){logger['error'](_0x4a67ac[_0x6e70('0x2b')]);if(_0x4a67ac[_0x6e70('0x2c')]){delete _0x4a67ac[_0x6e70('0x2c')];}_0x67fb43[_0x6e70('0x23')](_0x2bb231)[_0x6e70('0x2d')](_0x4a67ac);};}exports['index']=function(_0x1952ea,_0x406f29){var _0xecf336={},_0x2864a0={},_0x396a67={'count':0x0,'rows':[]};var _0x20a225=_[_0x6e70('0x2e')](db[_0x6e70('0x2f')][_0x6e70('0x30')],function(_0x3a5d30){return{'name':_0x3a5d30['fieldName'],'type':_0x3a5d30[_0x6e70('0x31')]['key']};});_0x2864a0[_0x6e70('0x32')]=_['map'](_0x20a225,_0x6e70('0x2c'));_0x2864a0[_0x6e70('0x33')]=_[_0x6e70('0x34')](_0x1952ea['query']);_0x2864a0[_0x6e70('0x35')]=_[_0x6e70('0x36')](_0x2864a0['model'],_0x2864a0[_0x6e70('0x33')]);_0xecf336[_0x6e70('0x37')]=_['intersection'](_0x2864a0[_0x6e70('0x32')],qs[_0x6e70('0x38')](_0x1952ea[_0x6e70('0x33')][_0x6e70('0x38')]));_0xecf336[_0x6e70('0x37')]=_0xecf336[_0x6e70('0x37')][_0x6e70('0x39')]?_0xecf336[_0x6e70('0x37')]:_0x2864a0[_0x6e70('0x32')];if(!_0x1952ea[_0x6e70('0x33')]['hasOwnProperty'](_0x6e70('0x3a'))){_0xecf336['limit']=qs[_0x6e70('0x22')](_0x1952ea[_0x6e70('0x33')][_0x6e70('0x22')]);_0xecf336[_0x6e70('0x20')]=qs[_0x6e70('0x20')](_0x1952ea[_0x6e70('0x33')][_0x6e70('0x20')]);}_0xecf336[_0x6e70('0x3b')]=qs[_0x6e70('0x3c')](_0x1952ea[_0x6e70('0x33')][_0x6e70('0x3c')]);_0xecf336[_0x6e70('0x3d')]=qs[_0x6e70('0x35')](_['pick'](_0x1952ea['query'],_0x2864a0['filters']),_0x20a225);if(_0x1952ea[_0x6e70('0x33')][_0x6e70('0x3e')]){_0xecf336[_0x6e70('0x3d')]=_[_0x6e70('0x3f')](_0xecf336[_0x6e70('0x3d')],{'$or':_[_0x6e70('0x2e')](_0x20a225,function(_0x572a71){if(_0x572a71[_0x6e70('0x31')]!==_0x6e70('0x40')){var _0x1c5cde={};_0x1c5cde[_0x572a71[_0x6e70('0x2c')]]={'$like':'%'+_0x1952ea[_0x6e70('0x33')][_0x6e70('0x3e')]+'%'};return _0x1c5cde;}})});}_0xecf336=_[_0x6e70('0x3f')]({},_0xecf336,_0x1952ea[_0x6e70('0x41')]);var _0x5be100={'where':_0xecf336[_0x6e70('0x3d')]};return db[_0x6e70('0x2f')][_0x6e70('0x42')](_0x5be100)[_0x6e70('0x2a')](function(_0x201da9){_0x396a67[_0x6e70('0x42')]=_0x201da9;if(_0x1952ea[_0x6e70('0x33')]['includeAll']){_0xecf336['include']=[{'all':!![]}];}return db['ZendeskAccount'][_0x6e70('0x43')](_0xecf336);})[_0x6e70('0x2a')](function(_0x83847b){_0x396a67[_0x6e70('0x44')]=_0x83847b;return _0x396a67;})[_0x6e70('0x2a')](respondWithFilteredResult(_0x406f29,_0xecf336))['catch'](handleError(_0x406f29,null));};exports[_0x6e70('0x45')]=function(_0x2a58d7,_0x2a2aca){var _0x52b197={'raw':![],'where':{'id':_0x2a58d7['params']['id']}},_0x544ad0={};_0x544ad0[_0x6e70('0x32')]=_['keys'](db[_0x6e70('0x2f')][_0x6e70('0x30')]);_0x544ad0[_0x6e70('0x33')]=_[_0x6e70('0x34')](_0x2a58d7['query']);_0x544ad0[_0x6e70('0x35')]=_['intersection'](_0x544ad0[_0x6e70('0x32')],_0x544ad0[_0x6e70('0x33')]);_0x52b197[_0x6e70('0x37')]=_[_0x6e70('0x36')](_0x544ad0['model'],qs[_0x6e70('0x38')](_0x2a58d7[_0x6e70('0x33')][_0x6e70('0x38')]));_0x52b197[_0x6e70('0x37')]=_0x52b197[_0x6e70('0x37')][_0x6e70('0x39')]?_0x52b197[_0x6e70('0x37')]:_0x544ad0['model'];if(_0x2a58d7[_0x6e70('0x33')][_0x6e70('0x46')]){_0x52b197[_0x6e70('0x47')]=[{'all':!![]}];}_0x52b197=_[_0x6e70('0x3f')]({},_0x52b197,_0x2a58d7[_0x6e70('0x41')]);return db[_0x6e70('0x2f')][_0x6e70('0x48')](_0x52b197)['then'](handleEntityNotFound(_0x2a2aca,null))[_0x6e70('0x2a')](respondWithResult(_0x2a2aca,null))['catch'](handleError(_0x2a2aca,null));};exports[_0x6e70('0x49')]=function(_0x3836e4,_0x4b351e){return db['ZendeskAccount'][_0x6e70('0x49')](_0x3836e4[_0x6e70('0x4a')],{})[_0x6e70('0x2a')](respondWithResult(_0x4b351e,0xc9))['catch'](handleError(_0x4b351e,null));};exports['update']=function(_0x238ebb,_0x11ac3d){if(_0x238ebb[_0x6e70('0x4a')]['id']){delete _0x238ebb[_0x6e70('0x4a')]['id'];}return db[_0x6e70('0x2f')][_0x6e70('0x48')]({'where':{'id':_0x238ebb['params']['id']}})[_0x6e70('0x2a')](handleEntityNotFound(_0x11ac3d,null))[_0x6e70('0x2a')](saveUpdates(_0x238ebb[_0x6e70('0x4a')],null))[_0x6e70('0x2a')](respondWithResult(_0x11ac3d,null))[_0x6e70('0x4b')](handleError(_0x11ac3d,null));};exports['destroy']=function(_0x4ae901,_0x2c5538){return db[_0x6e70('0x2f')][_0x6e70('0x48')]({'where':{'id':_0x4ae901[_0x6e70('0x4c')]['id']}})[_0x6e70('0x2a')](handleEntityNotFound(_0x2c5538,null))['then'](removeEntity(_0x2c5538,null))[_0x6e70('0x4b')](handleError(_0x2c5538,null));};exports[_0x6e70('0x4d')]=function(_0x1fa320,_0x23ebfb,_0x3aba34){var _0x4a111a={};var _0x1142cd={};var _0x1dd242;var _0x2c20d3;return db[_0x6e70('0x2f')][_0x6e70('0x4e')]({'where':{'id':_0x1fa320[_0x6e70('0x4c')]['id']}})['then'](handleEntityNotFound(_0x23ebfb,null))[_0x6e70('0x2a')](function(_0x8d425d){if(_0x8d425d){_0x1dd242=_0x8d425d;_0x1142cd['model']=_[_0x6e70('0x34')](db[_0x6e70('0x4f')]['rawAttributes']);_0x1142cd[_0x6e70('0x33')]=_[_0x6e70('0x34')](_0x1fa320[_0x6e70('0x33')]);_0x1142cd[_0x6e70('0x35')]=_[_0x6e70('0x36')](_0x1142cd['model'],_0x1142cd[_0x6e70('0x33')]);_0x4a111a[_0x6e70('0x37')]=_[_0x6e70('0x36')](_0x1142cd[_0x6e70('0x32')],qs[_0x6e70('0x38')](_0x1fa320[_0x6e70('0x33')][_0x6e70('0x38')]));_0x4a111a[_0x6e70('0x37')]=_0x4a111a[_0x6e70('0x37')][_0x6e70('0x39')]?_0x4a111a[_0x6e70('0x37')]:_0x1142cd[_0x6e70('0x32')];_0x4a111a[_0x6e70('0x3b')]=qs[_0x6e70('0x3c')](_0x1fa320[_0x6e70('0x33')][_0x6e70('0x3c')]);_0x4a111a[_0x6e70('0x3d')]=qs[_0x6e70('0x35')](_[_0x6e70('0x50')](_0x1fa320[_0x6e70('0x33')],_0x1142cd['filters']));if(_0x1fa320[_0x6e70('0x33')][_0x6e70('0x3e')]){_0x4a111a[_0x6e70('0x3d')]=_[_0x6e70('0x3f')](_0x4a111a[_0x6e70('0x3d')],{'$or':_[_0x6e70('0x2e')](_0x4a111a['attributes'],function(_0x42bd85){var _0x6cabf0={};_0x6cabf0[_0x42bd85]={'$like':'%'+_0x1fa320['query'][_0x6e70('0x3e')]+'%'};return _0x6cabf0;})});}_0x4a111a=_[_0x6e70('0x3f')]({},_0x4a111a,_0x1fa320[_0x6e70('0x41')]);return _0x1dd242['getConfigurations'](_0x4a111a);}})['then'](function(_0x2f9be4){if(_0x2f9be4){_0x2c20d3=_0x2f9be4[_0x6e70('0x39')];if(!_0x1fa320[_0x6e70('0x33')][_0x6e70('0x51')](_0x6e70('0x3a'))){_0x4a111a[_0x6e70('0x22')]=qs[_0x6e70('0x22')](_0x1fa320['query']['limit']);_0x4a111a[_0x6e70('0x20')]=qs[_0x6e70('0x20')](_0x1fa320[_0x6e70('0x33')][_0x6e70('0x20')]);}return _0x1dd242['getConfigurations'](_0x4a111a);}})['then'](function(_0x2e972b){if(_0x2e972b){return _0x2e972b?{'count':_0x2c20d3,'rows':_0x2e972b}:null;}})[_0x6e70('0x2a')](respondWithResult(_0x23ebfb,null))['catch'](handleError(_0x23ebfb,null));};exports['addConfiguration']=function(_0x355708,_0x47fbed,_0x2a8fb7){if(_0x355708[_0x6e70('0x4a')]['id']){delete _0x355708[_0x6e70('0x4a')]['id'];}return db[_0x6e70('0x2f')][_0x6e70('0x4e')]({'where':{'id':_0x355708[_0x6e70('0x4c')]['id']}})[_0x6e70('0x2a')](handleEntityNotFound(_0x47fbed,null))[_0x6e70('0x2a')](function(_0x570115){if(_0x570115){_0x355708[_0x6e70('0x4a')][_0x6e70('0x52')]=_0x570115['id'];_0x355708[_0x6e70('0x4a')][_0x6e70('0x53')]=integrations[_0x6e70('0x54')](_0x355708['body']['channel'],_0x355708['body'][_0x6e70('0x31')]);_0x355708[_0x6e70('0x4a')][_0x6e70('0x55')]=integrations['getDescriptions'](_0x355708['body'][_0x6e70('0x56')],_0x355708[_0x6e70('0x4a')][_0x6e70('0x31')]);return db[_0x6e70('0x4f')][_0x6e70('0x49')](_0x355708[_0x6e70('0x4a')],{'include':[{'model':db['ZendeskField'],'as':_0x6e70('0x53')},{'model':db[_0x6e70('0x57')],'as':_0x6e70('0x55')}]});}return null;})[_0x6e70('0x2a')](respondWithResult(_0x47fbed,null))['catch'](handleError(_0x47fbed,null));};exports[_0x6e70('0x58')]=function(_0x531097,_0x5b4046,_0x30487b){var _0x3249a5='';return db[_0x6e70('0x2f')][_0x6e70('0x4e')]({'where':{'id':_0x531097[_0x6e70('0x4c')]['id']},'attributes':['id',_0x6e70('0x59'),'password',_0x6e70('0x5a'),_0x6e70('0x5b'),_0x6e70('0x5c')]})[_0x6e70('0x2a')](handleEntityNotFound(_0x5b4046,null))[_0x6e70('0x2a')](function(_0x13c092){if(_0x13c092){_0x3249a5=_0x13c092[_0x6e70('0x5c')];var _0xd9b4a9=_0x3249a5[_0x6e70('0x5d')](-0x1);if(_0xd9b4a9==='/'){_0x3249a5=_0x3249a5[_0x6e70('0x5e')](0x0,_0x3249a5['lastIndexOf'](_0xd9b4a9));}var _0x44c877={'method':_0x6e70('0x5f'),'uri':util[_0x6e70('0x60')]('%s/%s',_0x3249a5,'ticket_fields'),'json':!![]};switch(_0x13c092[_0x6e70('0x5b')]){case _0x6e70('0x61'):_0x44c877[_0x6e70('0x62')]={'Authorization':util[_0x6e70('0x60')](_0x6e70('0x63'),new Buffer(util['format']('%s:%s',_0x13c092[_0x6e70('0x59')],_0x13c092[_0x6e70('0x61')]))['toString'](_0x6e70('0x64')))};break;case _0x6e70('0x5a'):_0x44c877[_0x6e70('0x62')]={'Authorization':util[_0x6e70('0x60')](_0x6e70('0x63'),new Buffer(util[_0x6e70('0x60')](_0x6e70('0x65'),_0x13c092[_0x6e70('0x59')],_0x13c092[_0x6e70('0x5a')]))[_0x6e70('0x66')](_0x6e70('0x64')))};break;default:throw new db[(_0x6e70('0x67'))][(_0x6e70('0x68'))](_0x6e70('0x69'));}return rp(_0x44c877);}})['then'](function(_0x5b3cb0){if(_0x5b3cb0){var _0x39ed95=['subject',_0x6e70('0x6a'),'group','assignee'];_[_0x6e70('0x6b')](_0x5b3cb0['ticket_fields'],function(_0x576069){return _0x39ed95[_0x6e70('0x6c')](_0x576069[_0x6e70('0x31')]);});return{'count':_0x5b3cb0[_0x6e70('0x6d')]['length'],'rows':_['map'](_0x5b3cb0['ticket_fields'],function(_0x3e7be7){return{'id':_0x3e7be7['id'],'name':_0x3e7be7['position']>0x7?_0x3e7be7[_0x6e70('0x6e')]:_0x3e7be7[_0x6e70('0x31')],'custom':_0x3e7be7[_0x6e70('0x6f')]>0x7?!![]:![],'options':_0x3e7be7[_0x6e70('0x70')]?_0x3e7be7[_0x6e70('0x70')]:_0x3e7be7[_0x6e70('0x71')]?_0x3e7be7[_0x6e70('0x71')]:[]};})};}})['then'](respondWithResult(_0x5b4046,null))[_0x6e70('0x4b')](function(_0x2493b0){var _0xb649a6=_0x531097['query'][_0x6e70('0x72')]?0x1f4:_0x2493b0[_0x6e70('0x73')]||0x1f4;logger[_0x6e70('0x74')](_0x6e70('0x75'),_0x6e70('0x58'),_0xb649a6,JSON[_0x6e70('0x76')](_0x2493b0));delete _0x2493b0[_0x6e70('0x2c')];if(_0xb649a6===0x191){_0xb649a6=0x190;}_0x5b4046[_0x6e70('0x23')](_0xb649a6)[_0x6e70('0x2d')](_0x531097['query'][_0x6e70('0x72')]?{'message':_0x6e70('0x77'),'statusCode':_0x2493b0['statusCode']}:_0x2493b0);});};
\ No newline at end of file
+var _0x2e54=['position','title','system_field_options','custom_field_options','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','ZendeskAccount','rawAttributes','fieldName','type','key','model','query','keys','attributes','fields','hasOwnProperty','nolimit','order','filters','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','catch','params','intersection','options','create','body','find','getConfigurations','findOne','ZendeskConfiguration','length','sort','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','ZendeskField','getFields','username','password','token','authType','remoteUri','slice','substring','format','%s/%s','Basic\x20%s','%s:%s','headers','%s/token:%s','toString','Sequelize','ValidationError','subject','description','group','assignee','remove','ticket_fields'];(function(_0xea67f4,_0x334874){var _0x5812d8=function(_0x547312){while(--_0x547312){_0xea67f4['push'](_0xea67f4['shift']());}};_0x5812d8(++_0x334874);}(_0x2e54,0x1dd));var _0x42e5=function(_0x2b895c,_0x2b39b7){_0x2b895c=_0x2b895c-0x0;var _0x50f201=_0x2e54[_0x2b895c];return _0x50f201;};'use strict';var emlformat=require(_0x42e5('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x42e5('0x1'));var rp=require(_0x42e5('0x2'));var moment=require(_0x42e5('0x3'));var BPromise=require(_0x42e5('0x4'));var Mustache=require(_0x42e5('0x5'));var util=require(_0x42e5('0x6'));var path=require(_0x42e5('0x7'));var sox=require('sox');var csv=require(_0x42e5('0x8'));var ejs=require(_0x42e5('0x9'));var fs=require('fs');var fs_extra=require(_0x42e5('0xa'));var _=require('lodash');var squel=require(_0x42e5('0xb'));var crypto=require('crypto');var jsforce=require(_0x42e5('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x42e5('0x8'));var querystring=require(_0x42e5('0xd'));var Papa=require(_0x42e5('0xe'));var Redis=require(_0x42e5('0xf'));var authService=require(_0x42e5('0x10'));var qs=require(_0x42e5('0x11'));var as=require(_0x42e5('0x12'));var hardwareService=require(_0x42e5('0x13'));var logger=require(_0x42e5('0x14'))('api');var utils=require(_0x42e5('0x15'));var config=require(_0x42e5('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x42e5('0x17'))['db'];var integrations=require(_0x42e5('0x18'));function respondWithStatusCode(_0x4530ba,_0x41598d){_0x41598d=_0x41598d||0xcc;return function(_0x144fb4){if(_0x144fb4){return _0x4530ba[_0x42e5('0x19')](_0x41598d);}return _0x4530ba[_0x42e5('0x1a')](_0x41598d)[_0x42e5('0x1b')]();};}function respondWithResult(_0x447648,_0x23957f){_0x23957f=_0x23957f||0xc8;return function(_0x51b2f4){if(_0x51b2f4){return _0x447648[_0x42e5('0x1a')](_0x23957f)[_0x42e5('0x1c')](_0x51b2f4);}};}function respondWithFilteredResult(_0x4034bd,_0x388300){return function(_0x2f4999){if(_0x2f4999){var _0x263a3d=typeof _0x388300[_0x42e5('0x1d')]===_0x42e5('0x1e')&&typeof _0x388300[_0x42e5('0x1f')]===_0x42e5('0x1e');var _0x22655f=_0x2f4999[_0x42e5('0x20')];var _0x11550e=_0x263a3d?0x0:_0x388300[_0x42e5('0x1d')];var _0x54fcfc=_0x263a3d?_0x2f4999[_0x42e5('0x20')]:_0x388300['offset']+_0x388300['limit'];var _0x14d16d;if(_0x54fcfc>=_0x22655f){_0x54fcfc=_0x22655f;_0x14d16d=0xc8;}else{_0x14d16d=0xce;}_0x4034bd[_0x42e5('0x1a')](_0x14d16d);return _0x4034bd['set'](_0x42e5('0x21'),_0x11550e+'-'+_0x54fcfc+'/'+_0x22655f)[_0x42e5('0x1c')](_0x2f4999);}return null;};}function patchUpdates(_0x1c2169){return function(_0x3fde76){try{jsonpatch[_0x42e5('0x22')](_0x3fde76,_0x1c2169,!![]);}catch(_0xa6825e){return BPromise[_0x42e5('0x23')](_0xa6825e);}return _0x3fde76['save']();};}function saveUpdates(_0x4da508,_0x283d44){return function(_0x52d319){if(_0x52d319){return _0x52d319[_0x42e5('0x24')](_0x4da508)[_0x42e5('0x25')](function(_0x37d10e){return _0x37d10e;});}return null;};}function removeEntity(_0x49490f,_0x32380f){return function(_0x5d6b24){if(_0x5d6b24){return _0x5d6b24[_0x42e5('0x26')]()[_0x42e5('0x25')](function(){_0x49490f[_0x42e5('0x1a')](0xcc)[_0x42e5('0x1b')]();});}};}function handleEntityNotFound(_0x4638bc,_0x4f52b2){return function(_0x4fb147){if(!_0x4fb147){_0x4638bc[_0x42e5('0x19')](0x194);}return _0x4fb147;};}function handleError(_0x534a26,_0x56f812){_0x56f812=_0x56f812||0x1f4;return function(_0x1b60be){logger['error'](_0x1b60be[_0x42e5('0x27')]);if(_0x1b60be[_0x42e5('0x28')]){delete _0x1b60be[_0x42e5('0x28')];}_0x534a26[_0x42e5('0x1a')](_0x56f812)[_0x42e5('0x29')](_0x1b60be);};}exports[_0x42e5('0x2a')]=function(_0x59a46b,_0x3e2ea5){var _0x201d9e={},_0x39f763={},_0x2c53d4={'count':0x0,'rows':[]};var _0x1d22ba=_[_0x42e5('0x2b')](db[_0x42e5('0x2c')][_0x42e5('0x2d')],function(_0x5a4930){return{'name':_0x5a4930[_0x42e5('0x2e')],'type':_0x5a4930[_0x42e5('0x2f')][_0x42e5('0x30')]};});_0x39f763[_0x42e5('0x31')]=_['map'](_0x1d22ba,_0x42e5('0x28'));_0x39f763[_0x42e5('0x32')]=_[_0x42e5('0x33')](_0x59a46b[_0x42e5('0x32')]);_0x39f763['filters']=_['intersection'](_0x39f763[_0x42e5('0x31')],_0x39f763['query']);_0x201d9e[_0x42e5('0x34')]=_['intersection'](_0x39f763[_0x42e5('0x31')],qs[_0x42e5('0x35')](_0x59a46b[_0x42e5('0x32')]['fields']));_0x201d9e[_0x42e5('0x34')]=_0x201d9e[_0x42e5('0x34')]['length']?_0x201d9e[_0x42e5('0x34')]:_0x39f763['model'];if(!_0x59a46b[_0x42e5('0x32')][_0x42e5('0x36')](_0x42e5('0x37'))){_0x201d9e[_0x42e5('0x1f')]=qs[_0x42e5('0x1f')](_0x59a46b[_0x42e5('0x32')][_0x42e5('0x1f')]);_0x201d9e['offset']=qs['offset'](_0x59a46b[_0x42e5('0x32')][_0x42e5('0x1d')]);}_0x201d9e[_0x42e5('0x38')]=qs['sort'](_0x59a46b['query']['sort']);_0x201d9e['where']=qs[_0x42e5('0x39')](_[_0x42e5('0x3a')](_0x59a46b[_0x42e5('0x32')],_0x39f763[_0x42e5('0x39')]),_0x1d22ba);if(_0x59a46b[_0x42e5('0x32')][_0x42e5('0x3b')]){_0x201d9e[_0x42e5('0x3c')]=_[_0x42e5('0x3d')](_0x201d9e['where'],{'$or':_[_0x42e5('0x2b')](_0x1d22ba,function(_0x587832){if(_0x587832[_0x42e5('0x2f')]!==_0x42e5('0x3e')){var _0x340caf={};_0x340caf[_0x587832[_0x42e5('0x28')]]={'$like':'%'+_0x59a46b[_0x42e5('0x32')][_0x42e5('0x3b')]+'%'};return _0x340caf;}})});}_0x201d9e=_[_0x42e5('0x3d')]({},_0x201d9e,_0x59a46b['options']);var _0x20f372={'where':_0x201d9e[_0x42e5('0x3c')]};return db['ZendeskAccount'][_0x42e5('0x20')](_0x20f372)['then'](function(_0x53b0bd){_0x2c53d4['count']=_0x53b0bd;if(_0x59a46b[_0x42e5('0x32')][_0x42e5('0x3f')]){_0x201d9e[_0x42e5('0x40')]=[{'all':!![]}];}return db[_0x42e5('0x2c')][_0x42e5('0x41')](_0x201d9e);})[_0x42e5('0x25')](function(_0x1fbde){_0x2c53d4['rows']=_0x1fbde;return _0x2c53d4;})[_0x42e5('0x25')](respondWithFilteredResult(_0x3e2ea5,_0x201d9e))[_0x42e5('0x42')](handleError(_0x3e2ea5,null));};exports['show']=function(_0x398b73,_0x1c697a){var _0x5db771={'raw':![],'where':{'id':_0x398b73[_0x42e5('0x43')]['id']}},_0x33054f={};_0x33054f[_0x42e5('0x31')]=_[_0x42e5('0x33')](db[_0x42e5('0x2c')]['rawAttributes']);_0x33054f[_0x42e5('0x32')]=_[_0x42e5('0x33')](_0x398b73[_0x42e5('0x32')]);_0x33054f[_0x42e5('0x39')]=_['intersection'](_0x33054f[_0x42e5('0x31')],_0x33054f[_0x42e5('0x32')]);_0x5db771[_0x42e5('0x34')]=_[_0x42e5('0x44')](_0x33054f[_0x42e5('0x31')],qs[_0x42e5('0x35')](_0x398b73[_0x42e5('0x32')][_0x42e5('0x35')]));_0x5db771['attributes']=_0x5db771[_0x42e5('0x34')]['length']?_0x5db771['attributes']:_0x33054f[_0x42e5('0x31')];if(_0x398b73[_0x42e5('0x32')][_0x42e5('0x3f')]){_0x5db771[_0x42e5('0x40')]=[{'all':!![]}];}_0x5db771=_[_0x42e5('0x3d')]({},_0x5db771,_0x398b73[_0x42e5('0x45')]);return db[_0x42e5('0x2c')]['find'](_0x5db771)[_0x42e5('0x25')](handleEntityNotFound(_0x1c697a,null))[_0x42e5('0x25')](respondWithResult(_0x1c697a,null))[_0x42e5('0x42')](handleError(_0x1c697a,null));};exports[_0x42e5('0x46')]=function(_0x1086b2,_0xc8de4d){return db[_0x42e5('0x2c')][_0x42e5('0x46')](_0x1086b2['body'],{})[_0x42e5('0x25')](respondWithResult(_0xc8de4d,0xc9))[_0x42e5('0x42')](handleError(_0xc8de4d,null));};exports[_0x42e5('0x24')]=function(_0x48757e,_0x2ab52a){if(_0x48757e[_0x42e5('0x47')]['id']){delete _0x48757e[_0x42e5('0x47')]['id'];}return db[_0x42e5('0x2c')][_0x42e5('0x48')]({'where':{'id':_0x48757e['params']['id']}})[_0x42e5('0x25')](handleEntityNotFound(_0x2ab52a,null))['then'](saveUpdates(_0x48757e[_0x42e5('0x47')],null))[_0x42e5('0x25')](respondWithResult(_0x2ab52a,null))[_0x42e5('0x42')](handleError(_0x2ab52a,null));};exports['destroy']=function(_0x50f59c,_0x4f0639){return db[_0x42e5('0x2c')][_0x42e5('0x48')]({'where':{'id':_0x50f59c[_0x42e5('0x43')]['id']}})[_0x42e5('0x25')](handleEntityNotFound(_0x4f0639,null))['then'](removeEntity(_0x4f0639,null))[_0x42e5('0x42')](handleError(_0x4f0639,null));};exports[_0x42e5('0x49')]=function(_0x18cedc,_0x504110,_0x34e169){var _0x5070aa={};var _0x319088={};var _0x2583cd;var _0x53e29b;return db[_0x42e5('0x2c')][_0x42e5('0x4a')]({'where':{'id':_0x18cedc[_0x42e5('0x43')]['id']}})[_0x42e5('0x25')](handleEntityNotFound(_0x504110,null))[_0x42e5('0x25')](function(_0x3f043f){if(_0x3f043f){_0x2583cd=_0x3f043f;_0x319088[_0x42e5('0x31')]=_[_0x42e5('0x33')](db[_0x42e5('0x4b')][_0x42e5('0x2d')]);_0x319088['query']=_[_0x42e5('0x33')](_0x18cedc[_0x42e5('0x32')]);_0x319088[_0x42e5('0x39')]=_[_0x42e5('0x44')](_0x319088[_0x42e5('0x31')],_0x319088['query']);_0x5070aa[_0x42e5('0x34')]=_[_0x42e5('0x44')](_0x319088[_0x42e5('0x31')],qs[_0x42e5('0x35')](_0x18cedc['query']['fields']));_0x5070aa['attributes']=_0x5070aa[_0x42e5('0x34')][_0x42e5('0x4c')]?_0x5070aa['attributes']:_0x319088[_0x42e5('0x31')];_0x5070aa[_0x42e5('0x38')]=qs[_0x42e5('0x4d')](_0x18cedc[_0x42e5('0x32')][_0x42e5('0x4d')]);_0x5070aa[_0x42e5('0x3c')]=qs[_0x42e5('0x39')](_[_0x42e5('0x3a')](_0x18cedc[_0x42e5('0x32')],_0x319088['filters']));if(_0x18cedc[_0x42e5('0x32')]['filter']){_0x5070aa[_0x42e5('0x3c')]=_[_0x42e5('0x3d')](_0x5070aa[_0x42e5('0x3c')],{'$or':_[_0x42e5('0x2b')](_0x5070aa[_0x42e5('0x34')],function(_0x3b46d2){var _0x248cb8={};_0x248cb8[_0x3b46d2]={'$like':'%'+_0x18cedc[_0x42e5('0x32')][_0x42e5('0x3b')]+'%'};return _0x248cb8;})});}_0x5070aa=_[_0x42e5('0x3d')]({},_0x5070aa,_0x18cedc[_0x42e5('0x45')]);return _0x2583cd['getConfigurations'](_0x5070aa);}})[_0x42e5('0x25')](function(_0x4ff58c){if(_0x4ff58c){_0x53e29b=_0x4ff58c[_0x42e5('0x4c')];if(!_0x18cedc['query'][_0x42e5('0x36')](_0x42e5('0x37'))){_0x5070aa['limit']=qs[_0x42e5('0x1f')](_0x18cedc[_0x42e5('0x32')]['limit']);_0x5070aa[_0x42e5('0x1d')]=qs[_0x42e5('0x1d')](_0x18cedc['query'][_0x42e5('0x1d')]);}return _0x2583cd[_0x42e5('0x49')](_0x5070aa);}})[_0x42e5('0x25')](function(_0x57814b){if(_0x57814b){return _0x57814b?{'count':_0x53e29b,'rows':_0x57814b}:null;}})[_0x42e5('0x25')](respondWithResult(_0x504110,null))[_0x42e5('0x42')](handleError(_0x504110,null));};exports[_0x42e5('0x4e')]=function(_0x78394d,_0x57368e,_0x42db50){if(_0x78394d['body']['id']){delete _0x78394d[_0x42e5('0x47')]['id'];}return db[_0x42e5('0x2c')][_0x42e5('0x4a')]({'where':{'id':_0x78394d[_0x42e5('0x43')]['id']}})[_0x42e5('0x25')](handleEntityNotFound(_0x57368e,null))[_0x42e5('0x25')](function(_0x15ff42){if(_0x15ff42){_0x78394d['body'][_0x42e5('0x4f')]=_0x15ff42['id'];_0x78394d[_0x42e5('0x47')][_0x42e5('0x50')]=integrations[_0x42e5('0x51')](_0x78394d[_0x42e5('0x47')][_0x42e5('0x52')],_0x78394d[_0x42e5('0x47')][_0x42e5('0x2f')]);_0x78394d[_0x42e5('0x47')]['Descriptions']=integrations[_0x42e5('0x53')](_0x78394d[_0x42e5('0x47')][_0x42e5('0x52')],_0x78394d[_0x42e5('0x47')]['type']);return db[_0x42e5('0x4b')][_0x42e5('0x46')](_0x78394d[_0x42e5('0x47')],{'include':[{'model':db[_0x42e5('0x54')],'as':'Subjects'},{'model':db['ZendeskField'],'as':'Descriptions'}]});}return null;})[_0x42e5('0x25')](respondWithResult(_0x57368e,null))[_0x42e5('0x42')](handleError(_0x57368e,null));};exports[_0x42e5('0x55')]=function(_0x2ce1d4,_0xb198d,_0x14d111){var _0x1cfe79='';return db[_0x42e5('0x2c')][_0x42e5('0x4a')]({'where':{'id':_0x2ce1d4['params']['id']},'attributes':['id',_0x42e5('0x56'),_0x42e5('0x57'),_0x42e5('0x58'),_0x42e5('0x59'),_0x42e5('0x5a')]})[_0x42e5('0x25')](handleEntityNotFound(_0xb198d,null))[_0x42e5('0x25')](function(_0x147613){if(_0x147613){_0x1cfe79=_0x147613['remoteUri'];var _0x548f8a=_0x1cfe79[_0x42e5('0x5b')](-0x1);if(_0x548f8a==='/'){_0x1cfe79=_0x1cfe79[_0x42e5('0x5c')](0x0,_0x1cfe79['lastIndexOf'](_0x548f8a));}var _0x4b9559={'method':'GET','uri':util[_0x42e5('0x5d')](_0x42e5('0x5e'),_0x1cfe79,'ticket_fields'),'json':!![]};switch(_0x147613[_0x42e5('0x59')]){case _0x42e5('0x57'):_0x4b9559['headers']={'Authorization':util[_0x42e5('0x5d')](_0x42e5('0x5f'),new Buffer(util['format'](_0x42e5('0x60'),_0x147613['username'],_0x147613['password']))['toString']('base64'))};break;case _0x42e5('0x58'):_0x4b9559[_0x42e5('0x61')]={'Authorization':util['format'](_0x42e5('0x5f'),new Buffer(util[_0x42e5('0x5d')](_0x42e5('0x62'),_0x147613[_0x42e5('0x56')],_0x147613[_0x42e5('0x58')]))[_0x42e5('0x63')]('base64'))};break;default:throw new db[(_0x42e5('0x64'))][(_0x42e5('0x65'))]('Unknown\x20authentication\x20type');}return rp(_0x4b9559);}})['then'](function(_0x2faf9b){if(_0x2faf9b){var _0xfa822e=[_0x42e5('0x66'),_0x42e5('0x67'),_0x42e5('0x68'),_0x42e5('0x69')];_[_0x42e5('0x6a')](_0x2faf9b['ticket_fields'],function(_0x5a1b63){return _0xfa822e['includes'](_0x5a1b63['type']);});return{'count':_0x2faf9b[_0x42e5('0x6b')][_0x42e5('0x4c')],'rows':_['map'](_0x2faf9b[_0x42e5('0x6b')],function(_0x5debb1){return{'id':_0x5debb1['id'],'name':_0x5debb1[_0x42e5('0x6c')]>0x7?_0x5debb1[_0x42e5('0x6d')]:_0x5debb1[_0x42e5('0x2f')],'custom':_0x5debb1[_0x42e5('0x6c')]>0x7?!![]:![],'options':_0x5debb1[_0x42e5('0x6e')]?_0x5debb1[_0x42e5('0x6e')]:_0x5debb1[_0x42e5('0x6f')]?_0x5debb1[_0x42e5('0x6f')]:[]};})};}})[_0x42e5('0x25')](respondWithResult(_0xb198d,null))[_0x42e5('0x42')](function(_0x1ee9b2){var _0x78573b=_0x2ce1d4[_0x42e5('0x32')][_0x42e5('0x70')]?0x1f4:_0x1ee9b2[_0x42e5('0x71')]||0x1f4;logger[_0x42e5('0x72')](_0x42e5('0x73'),_0x42e5('0x55'),_0x78573b,JSON['stringify'](_0x1ee9b2));delete _0x1ee9b2[_0x42e5('0x28')];if(_0x78573b===0x191){_0x78573b=0x190;}_0xb198d[_0x42e5('0x1a')](_0x78573b)[_0x42e5('0x29')](_0x2ce1d4[_0x42e5('0x32')][_0x42e5('0x70')]?{'message':_0x42e5('0x74'),'statusCode':_0x1ee9b2[_0x42e5('0x71')]}:_0x1ee9b2);});};
\ No newline at end of file
index c527f9a..88b676f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c6e=['bluebird','request-promise','rimraf','../../components/integrations/configuration','exports','ZendeskAccount','lodash','../../config/logger','api'];(function(_0x356149,_0x5f292f){var _0x5558bd=function(_0x3d1844){while(--_0x3d1844){_0x356149['push'](_0x356149['shift']());}};_0x5558bd(++_0x5f292f);}(_0x9c6e,0x96));var _0xe9c6=function(_0x134192,_0x36adc5){_0x134192=_0x134192-0x0;var _0x3cd080=_0x9c6e[_0x134192];return _0x3cd080;};'use strict';var _=require(_0xe9c6('0x0'));var util=require('util');var logger=require(_0xe9c6('0x1'))(_0xe9c6('0x2'));var moment=require('moment');var BPromise=require(_0xe9c6('0x3'));var rp=require(_0xe9c6('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe9c6('0x5'));var config=require('../../config/environment');var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0xe9c6('0x6'));module[_0xe9c6('0x7')]=function(_0x5abdc6,_0x42574f){return _0x5abdc6['define'](_0xe9c6('0x8'),attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2b5e=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','ZendeskAccount','int_zendesk_accounts','lodash','util'];(function(_0x37a042,_0x2c307a){var _0x19a727=function(_0x34b0eb){while(--_0x34b0eb){_0x37a042['push'](_0x37a042['shift']());}};_0x19a727(++_0x2c307a);}(_0x2b5e,0x11b));var _0xe2b5=function(_0x36a5d0,_0x477b0f){_0x36a5d0=_0x36a5d0-0x0;var _0x2b0076=_0x2b5e[_0x36a5d0];return _0x2b0076;};'use strict';var _=require(_0xe2b5('0x0'));var util=require(_0xe2b5('0x1'));var logger=require(_0xe2b5('0x2'))(_0xe2b5('0x3'));var moment=require(_0xe2b5('0x4'));var BPromise=require(_0xe2b5('0x5'));var rp=require(_0xe2b5('0x6'));var fs=require('fs');var path=require(_0xe2b5('0x7'));var rimraf=require(_0xe2b5('0x8'));var config=require(_0xe2b5('0x9'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0xe2b5('0xa'));module[_0xe2b5('0xb')]=function(_0x41a8b3,_0x2c963e){return _0x41a8b3[_0xe2b5('0xc')](_0xe2b5('0xd'),attributes,{'tableName':_0xe2b5('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a3e9d2a..bc7cd4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75b4=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','error','ZendeskAccount,\x20%s,\x20%s','message','catch','GetZendeskAccount','ZendeskAccount','findAll','options','where','attributes','limit','include','map','model','debug','stringify','find','raw','ShowZendeskAccount','lodash','util','moment','bluebird'];(function(_0x57f22c,_0x1c18f5){var _0x414177=function(_0x403f11){while(--_0x403f11){_0x57f22c['push'](_0x57f22c['shift']());}};_0x414177(++_0x1c18f5);}(_0x75b4,0x164));var _0x475b=function(_0x588e79,_0x5913d8){_0x588e79=_0x588e79-0x0;var _0x474e6f=_0x75b4[_0x588e79];return _0x474e6f;};'use strict';var _=require(_0x475b('0x0'));var util=require(_0x475b('0x1'));var moment=require(_0x475b('0x2'));var BPromise=require(_0x475b('0x3'));var rs=require(_0x475b('0x4'));var fs=require('fs');var Redis=require(_0x475b('0x5'));var db=require(_0x475b('0x6'))['db'];var utils=require(_0x475b('0x7'));var logger=require(_0x475b('0x8'))(_0x475b('0x9'));var config=require(_0x475b('0xa'));var jayson=require(_0x475b('0xb'));var client=jayson[_0x475b('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x836d63,_0x2e1e6e,_0x2c7fef){return new BPromise(function(_0x412e7d,_0x4abb05){return client[_0x475b('0xd')](_0x836d63,_0x2c7fef)[_0x475b('0xe')](function(_0x54fd3b){logger[_0x475b('0xf')]('ZendeskAccount,\x20%s,\x20%s',_0x2e1e6e,_0x475b('0x10'));logger['debug']('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x2e1e6e,_0x475b('0x10'),JSON['stringify'](_0x54fd3b));if(_0x54fd3b[_0x475b('0x11')]){if(_0x54fd3b[_0x475b('0x11')]['code']===0x1f4){logger[_0x475b('0x11')](_0x475b('0x12'),_0x2e1e6e,_0x54fd3b[_0x475b('0x11')][_0x475b('0x13')]);return _0x4abb05(_0x54fd3b['error']['message']);}logger[_0x475b('0x11')](_0x475b('0x12'),_0x2e1e6e,_0x54fd3b[_0x475b('0x11')][_0x475b('0x13')]);return _0x412e7d(_0x54fd3b[_0x475b('0x11')][_0x475b('0x13')]);}else{logger[_0x475b('0xf')]('ZendeskAccount,\x20%s,\x20%s',_0x2e1e6e,'request\x20sent');_0x412e7d(_0x54fd3b['result']['message']);}})[_0x475b('0x14')](function(_0x227d5d){logger[_0x475b('0x11')]('ZendeskAccount,\x20%s,\x20%s',_0x2e1e6e,_0x227d5d);_0x4abb05(_0x227d5d);});});}exports[_0x475b('0x15')]=function(_0x4bcf02){var _0x28c12e=this;return new Promise(function(_0x3e65be,_0x18c565){return db[_0x475b('0x16')][_0x475b('0x17')]({'raw':_0x4bcf02[_0x475b('0x18')]?_0x4bcf02[_0x475b('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x4bcf02[_0x475b('0x18')]?_0x4bcf02[_0x475b('0x18')][_0x475b('0x19')]||null:null,'attributes':_0x4bcf02['options']?_0x4bcf02[_0x475b('0x18')][_0x475b('0x1a')]||null:null,'limit':_0x4bcf02[_0x475b('0x18')]?_0x4bcf02[_0x475b('0x18')][_0x475b('0x1b')]||null:null,'include':_0x4bcf02[_0x475b('0x18')]?_0x4bcf02[_0x475b('0x18')][_0x475b('0x1c')]?_[_0x475b('0x1d')](_0x4bcf02['options'][_0x475b('0x1c')],function(_0x53e417){return{'model':db[_0x53e417[_0x475b('0x1e')]],'as':_0x53e417['as'],'attributes':_0x53e417['attributes'],'include':_0x53e417['include']?_['map'](_0x53e417[_0x475b('0x1c')],function(_0x4ed7f0){return{'model':db[_0x4ed7f0[_0x475b('0x1e')]],'as':_0x4ed7f0['as'],'attributes':_0x4ed7f0[_0x475b('0x1a')],'include':_0x4ed7f0[_0x475b('0x1c')]?_['map'](_0x4ed7f0[_0x475b('0x1c')],function(_0x10f2ca){return{'model':db[_0x10f2ca[_0x475b('0x1e')]],'as':_0x10f2ca['as'],'attributes':_0x10f2ca[_0x475b('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x6be3c8){logger['info'](_0x475b('0x15'),_0x4bcf02);logger[_0x475b('0x1f')](_0x475b('0x15'),_0x4bcf02,JSON[_0x475b('0x20')](_0x6be3c8));_0x3e65be(_0x6be3c8);})[_0x475b('0x14')](function(_0x4b6db4){logger['error'](_0x475b('0x15'),_0x4b6db4[_0x475b('0x13')],_0x4bcf02);_0x18c565(_0x28c12e['error'](0x1f4,_0x4b6db4[_0x475b('0x13')]));});});};exports['ShowZendeskAccount']=function(_0x1c6b35){var _0x4067e5=this;return new Promise(function(_0x1d6bbc,_0x50e012){return db[_0x475b('0x16')][_0x475b('0x21')]({'raw':_0x1c6b35[_0x475b('0x18')]?_0x1c6b35[_0x475b('0x18')][_0x475b('0x22')]===undefined?!![]:![]:!![],'where':_0x1c6b35['options']?_0x1c6b35[_0x475b('0x18')][_0x475b('0x19')]||null:null,'attributes':_0x1c6b35['options']?_0x1c6b35[_0x475b('0x18')][_0x475b('0x1a')]||null:null,'include':_0x1c6b35[_0x475b('0x18')]?_0x1c6b35[_0x475b('0x18')][_0x475b('0x1c')]?_['map'](_0x1c6b35[_0x475b('0x18')][_0x475b('0x1c')],function(_0x6997c8){return{'model':db[_0x6997c8[_0x475b('0x1e')]],'as':_0x6997c8['as'],'attributes':_0x6997c8[_0x475b('0x1a')],'include':_0x6997c8[_0x475b('0x1c')]?_['map'](_0x6997c8[_0x475b('0x1c')],function(_0x315ce5){return{'model':db[_0x315ce5[_0x475b('0x1e')]],'as':_0x315ce5['as'],'attributes':_0x315ce5[_0x475b('0x1a')],'include':_0x315ce5[_0x475b('0x1c')]?_['map'](_0x315ce5[_0x475b('0x1c')],function(_0x3be06b){return{'model':db[_0x3be06b['model']],'as':_0x3be06b['as'],'attributes':_0x3be06b[_0x475b('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4d1649){logger[_0x475b('0xf')](_0x475b('0x23'),_0x1c6b35);logger['debug']('ShowZendeskAccount',_0x1c6b35,JSON['stringify'](_0x4d1649));_0x1d6bbc(_0x4d1649);})[_0x475b('0x14')](function(_0x2d8de8){logger['error'](_0x475b('0x23'),_0x2d8de8[_0x475b('0x13')],_0x1c6b35);_0x50e012(_0x4067e5[_0x475b('0x11')](0x1f4,_0x2d8de8[_0x475b('0x13')]));});});};
\ No newline at end of file
+var _0x090e=['ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetZendeskAccount','ZendeskAccount','findAll','options','raw','where','attributes','include','map','model','debug','ShowZendeskAccount','find','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','jayson/promise','request','then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent'];(function(_0x401d93,_0x12389f){var _0x9a5b47=function(_0x4984f3){while(--_0x4984f3){_0x401d93['push'](_0x401d93['shift']());}};_0x9a5b47(++_0x12389f);}(_0x090e,0x154));var _0xe090=function(_0x493c8c,_0x470567){_0x493c8c=_0x493c8c-0x0;var _0x17344b=_0x090e[_0x493c8c];return _0x17344b;};'use strict';var _=require(_0xe090('0x0'));var util=require('util');var moment=require(_0xe090('0x1'));var BPromise=require(_0xe090('0x2'));var rs=require(_0xe090('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe090('0x4'));var logger=require(_0xe090('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xe090('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5885e9,_0x4d8a90,_0xfaf5ac){return new BPromise(function(_0x1612b1,_0x4b60de){return client[_0xe090('0x7')](_0x5885e9,_0xfaf5ac)[_0xe090('0x8')](function(_0xed97){logger[_0xe090('0x9')](_0xe090('0xa'),_0x4d8a90,_0xe090('0xb'));logger['debug'](_0xe090('0xc'),_0x4d8a90,_0xe090('0xb'),JSON[_0xe090('0xd')](_0xed97));if(_0xed97[_0xe090('0xe')]){if(_0xed97['error'][_0xe090('0xf')]===0x1f4){logger[_0xe090('0xe')](_0xe090('0xa'),_0x4d8a90,_0xed97[_0xe090('0xe')][_0xe090('0x10')]);return _0x4b60de(_0xed97[_0xe090('0xe')][_0xe090('0x10')]);}logger[_0xe090('0xe')]('ZendeskAccount,\x20%s,\x20%s',_0x4d8a90,_0xed97['error'][_0xe090('0x10')]);return _0x1612b1(_0xed97[_0xe090('0xe')][_0xe090('0x10')]);}else{logger[_0xe090('0x9')](_0xe090('0xa'),_0x4d8a90,_0xe090('0xb'));_0x1612b1(_0xed97[_0xe090('0x11')][_0xe090('0x10')]);}})[_0xe090('0x12')](function(_0x17dac6){logger[_0xe090('0xe')](_0xe090('0xa'),_0x4d8a90,_0x17dac6);_0x4b60de(_0x17dac6);});});}exports[_0xe090('0x13')]=function(_0x526f5c){var _0x5c5d9a=this;return new Promise(function(_0x24c361,_0x566a88){return db[_0xe090('0x14')][_0xe090('0x15')]({'raw':_0x526f5c[_0xe090('0x16')]?_0x526f5c['options'][_0xe090('0x17')]===undefined?!![]:![]:!![],'where':_0x526f5c[_0xe090('0x16')]?_0x526f5c[_0xe090('0x16')][_0xe090('0x18')]||null:null,'attributes':_0x526f5c[_0xe090('0x16')]?_0x526f5c[_0xe090('0x16')][_0xe090('0x19')]||null:null,'limit':_0x526f5c[_0xe090('0x16')]?_0x526f5c[_0xe090('0x16')]['limit']||null:null,'include':_0x526f5c[_0xe090('0x16')]?_0x526f5c[_0xe090('0x16')][_0xe090('0x1a')]?_[_0xe090('0x1b')](_0x526f5c[_0xe090('0x16')]['include'],function(_0x46b3a7){return{'model':db[_0x46b3a7[_0xe090('0x1c')]],'as':_0x46b3a7['as'],'attributes':_0x46b3a7[_0xe090('0x19')],'include':_0x46b3a7[_0xe090('0x1a')]?_['map'](_0x46b3a7[_0xe090('0x1a')],function(_0x4a3806){return{'model':db[_0x4a3806[_0xe090('0x1c')]],'as':_0x4a3806['as'],'attributes':_0x4a3806[_0xe090('0x19')],'include':_0x4a3806[_0xe090('0x1a')]?_[_0xe090('0x1b')](_0x4a3806['include'],function(_0x1f1338){return{'model':db[_0x1f1338[_0xe090('0x1c')]],'as':_0x1f1338['as'],'attributes':_0x1f1338[_0xe090('0x19')]};}):[]};}):[]};}):[]:[]})[_0xe090('0x8')](function(_0x4608b5){logger['info'](_0xe090('0x13'),_0x526f5c);logger[_0xe090('0x1d')]('GetZendeskAccount',_0x526f5c,JSON[_0xe090('0xd')](_0x4608b5));_0x24c361(_0x4608b5);})[_0xe090('0x12')](function(_0xf3afca){logger[_0xe090('0xe')](_0xe090('0x13'),_0xf3afca[_0xe090('0x10')],_0x526f5c);_0x566a88(_0x5c5d9a['error'](0x1f4,_0xf3afca[_0xe090('0x10')]));});});};exports[_0xe090('0x1e')]=function(_0x39d3dc){var _0x3b033a=this;return new Promise(function(_0x58ae75,_0x396258){return db[_0xe090('0x14')][_0xe090('0x1f')]({'raw':_0x39d3dc[_0xe090('0x16')]?_0x39d3dc[_0xe090('0x16')][_0xe090('0x17')]===undefined?!![]:![]:!![],'where':_0x39d3dc[_0xe090('0x16')]?_0x39d3dc[_0xe090('0x16')][_0xe090('0x18')]||null:null,'attributes':_0x39d3dc[_0xe090('0x16')]?_0x39d3dc['options']['attributes']||null:null,'include':_0x39d3dc[_0xe090('0x16')]?_0x39d3dc[_0xe090('0x16')][_0xe090('0x1a')]?_['map'](_0x39d3dc['options'][_0xe090('0x1a')],function(_0x42c402){return{'model':db[_0x42c402[_0xe090('0x1c')]],'as':_0x42c402['as'],'attributes':_0x42c402[_0xe090('0x19')],'include':_0x42c402[_0xe090('0x1a')]?_[_0xe090('0x1b')](_0x42c402[_0xe090('0x1a')],function(_0x32e0d7){return{'model':db[_0x32e0d7[_0xe090('0x1c')]],'as':_0x32e0d7['as'],'attributes':_0x32e0d7[_0xe090('0x19')],'include':_0x32e0d7[_0xe090('0x1a')]?_[_0xe090('0x1b')](_0x32e0d7[_0xe090('0x1a')],function(_0xb1cfb0){return{'model':db[_0xb1cfb0[_0xe090('0x1c')]],'as':_0xb1cfb0['as'],'attributes':_0xb1cfb0[_0xe090('0x19')]};}):[]};}):[]};}):[]:[]})[_0xe090('0x8')](function(_0x2b13f6){logger['info'](_0xe090('0x1e'),_0x39d3dc);logger[_0xe090('0x1d')]('ShowZendeskAccount',_0x39d3dc,JSON[_0xe090('0xd')](_0x2b13f6));_0x58ae75(_0x2b13f6);})[_0xe090('0x12')](function(_0x42092e){logger[_0xe090('0xe')](_0xe090('0x1e'),_0x42092e['message'],_0x39d3dc);_0x396258(_0x3b033a['error'](0x1f4,_0x42092e[_0xe090('0x10')]));});});};
\ No newline at end of file
index e940e9b..546114b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x087b=['getSubjects','/:id/descriptions','getDescriptions','getTags','post','create','/:id/tags','setTags','put','update','delete','destroy','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields'];(function(_0x37bc6d,_0x2fd411){var _0x13bb4a=function(_0x2fd7d7){while(--_0x2fd7d7){_0x37bc6d['push'](_0x37bc6d['shift']());}};_0x13bb4a(++_0x2fd411);}(_0x087b,0x11a));var _0xb087=function(_0x1b6186,_0x1ec7f2){_0x1b6186=_0x1b6186-0x0;var _0x186121=_0x087b[_0x1b6186];return _0x186121;};'use strict';var multer=require(_0xb087('0x0'));var util=require(_0xb087('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb087('0x2'));var router=express['Router']();var fs_extra=require(_0xb087('0x3'));var auth=require(_0xb087('0x4'));var interaction=require(_0xb087('0x5'));var config=require(_0xb087('0x6'));var controller=require(_0xb087('0x7'));router[_0xb087('0x8')]('/',auth[_0xb087('0x9')](),controller[_0xb087('0xa')]);router[_0xb087('0x8')](_0xb087('0xb'),auth[_0xb087('0x9')](),controller[_0xb087('0xc')]);router[_0xb087('0x8')](_0xb087('0xd'),auth[_0xb087('0x9')](),controller[_0xb087('0xe')]);router[_0xb087('0x8')]('/:id/subjects',auth[_0xb087('0x9')](),controller[_0xb087('0xf')]);router[_0xb087('0x8')](_0xb087('0x10'),auth[_0xb087('0x9')](),controller[_0xb087('0x11')]);router[_0xb087('0x8')]('/:id/tags',auth[_0xb087('0x9')](),controller[_0xb087('0x12')]);router[_0xb087('0x13')]('/',auth['isAuthenticated'](),controller[_0xb087('0x14')]);router[_0xb087('0x13')](_0xb087('0x15'),auth[_0xb087('0x9')](),controller[_0xb087('0x16')]);router[_0xb087('0x17')](_0xb087('0xb'),auth[_0xb087('0x9')](),controller[_0xb087('0x18')]);router[_0xb087('0x19')]('/:id',auth[_0xb087('0x9')](),controller[_0xb087('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0x4024=['util','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id/fields','getDescriptions','/:id/tags','getTags','create','post','setTags','put','/:id','update','delete','destroy','exports','multer'];(function(_0x374ccf,_0xa945c4){var _0x443cde=function(_0x27ff10){while(--_0x27ff10){_0x374ccf['push'](_0x374ccf['shift']());}};_0x443cde(++_0xa945c4);}(_0x4024,0x89));var _0x4402=function(_0x4a64c2,_0x109bf5){_0x4a64c2=_0x4a64c2-0x0;var _0x545135=_0x4024[_0x4a64c2];return _0x545135;};'use strict';var multer=require(_0x4402('0x0'));var util=require(_0x4402('0x1'));var path=require('path');var timeout=require(_0x4402('0x2'));var express=require(_0x4402('0x3'));var router=express['Router']();var fs_extra=require(_0x4402('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x4402('0x5'));var config=require(_0x4402('0x6'));var controller=require('./intZendeskConfiguration.controller');router['get']('/',auth[_0x4402('0x7')](),controller[_0x4402('0x8')]);router[_0x4402('0x9')]('/:id',auth[_0x4402('0x7')](),controller['show']);router['get'](_0x4402('0xa'),auth['isAuthenticated'](),controller['getFields']);router[_0x4402('0x9')]('/:id/subjects',auth[_0x4402('0x7')](),controller['getSubjects']);router[_0x4402('0x9')]('/:id/descriptions',auth[_0x4402('0x7')](),controller[_0x4402('0xb')]);router['get'](_0x4402('0xc'),auth[_0x4402('0x7')](),controller[_0x4402('0xd')]);router['post']('/',auth[_0x4402('0x7')](),controller[_0x4402('0xe')]);router[_0x4402('0xf')](_0x4402('0xc'),auth[_0x4402('0x7')](),controller[_0x4402('0x10')]);router[_0x4402('0x11')](_0x4402('0x12'),auth[_0x4402('0x7')](),controller[_0x4402('0x13')]);router[_0x4402('0x14')](_0x4402('0x12'),auth[_0x4402('0x7')](),controller[_0x4402('0x15')]);module[_0x4402('0x16')]=router;
\ No newline at end of file
index c7ed9f1..9332a95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x542c=['exports','STRING','sequelize'];(function(_0xf07911,_0x43e327){var _0x50b69d=function(_0x15f234){while(--_0x15f234){_0xf07911['push'](_0xf07911['shift']());}};_0x50b69d(++_0x43e327);}(_0x542c,0x1e5));var _0xc542=function(_0x2b400a,_0x33c5cb){_0x2b400a=_0x2b400a-0x0;var _0x145d0c=_0x542c[_0x2b400a];return _0x145d0c;};'use strict';var Sequelize=require(_0xc542('0x0'));module[_0xc542('0x1')]={'name':{'type':Sequelize[_0xc542('0x2')]},'description':{'type':Sequelize[_0xc542('0x2')]}};
\ No newline at end of file
+var _0x0cc1=['exports','STRING','sequelize'];(function(_0xfdef07,_0x201e33){var _0x1704ec=function(_0x1b1b91){while(--_0x1b1b91){_0xfdef07['push'](_0xfdef07['shift']());}};_0x1704ec(++_0x201e33);}(_0x0cc1,0x1dc));var _0x10cc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0cc1[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x10cc('0x0'));module[_0x10cc('0x1')]={'name':{'type':Sequelize[_0x10cc('0x2')]},'description':{'type':Sequelize[_0x10cc('0x2')]}};
\ No newline at end of file
index 5592ce7..35369c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3249=['Content-Range','json','apply','update','then','destroy','stack','name','send','index','map','ZendeskConfiguration','fieldName','type','model','query','keys','filters','attributes','fields','length','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','intersection','find','create','body','params','getFields','ZendeskField','order','pick','nolimit','getSubjects','findOne','rawAttributes','getDescriptions','getTags','Tag','setTags','eml-format','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','undefined','limit','offset'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x3249,0x1b3));var _0x9324=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x3249[_0x4d613c];return _0x301fe3;};'use strict';var emlformat=require(_0x9324('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9324('0x1'));var rp=require(_0x9324('0x2'));var moment=require('moment');var BPromise=require(_0x9324('0x3'));var Mustache=require(_0x9324('0x4'));var util=require('util');var path=require('path');var sox=require(_0x9324('0x5'));var csv=require(_0x9324('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9324('0x7'));var squel=require(_0x9324('0x8'));var crypto=require('crypto');var jsforce=require(_0x9324('0x9'));var deskjs=require(_0x9324('0xa'));var toCsv=require('to-csv');var querystring=require(_0x9324('0xb'));var Papa=require(_0x9324('0xc'));var Redis=require(_0x9324('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x9324('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9324('0xf'));var logger=require(_0x9324('0x10'))('api');var utils=require(_0x9324('0x11'));var config=require(_0x9324('0x12'));var licenseUtil=require(_0x9324('0x13'));var db=require(_0x9324('0x14'))['db'];function respondWithStatusCode(_0xb8a34f,_0x223c14){_0x223c14=_0x223c14||0xcc;return function(_0x42b833){if(_0x42b833){return _0xb8a34f[_0x9324('0x15')](_0x223c14);}return _0xb8a34f['status'](_0x223c14)[_0x9324('0x16')]();};}function respondWithResult(_0x510b2a,_0x3a4bd0){_0x3a4bd0=_0x3a4bd0||0xc8;return function(_0x298f12){if(_0x298f12){return _0x510b2a[_0x9324('0x17')](_0x3a4bd0)['json'](_0x298f12);}};}function respondWithFilteredResult(_0x23f027,_0x1b4939){return function(_0x106eb8){if(_0x106eb8){var _0x298f72=typeof _0x1b4939['offset']===_0x9324('0x18')&&typeof _0x1b4939[_0x9324('0x19')]===_0x9324('0x18');var _0x3c1c27=_0x106eb8['count'];var _0x3c622b=_0x298f72?0x0:_0x1b4939[_0x9324('0x1a')];var _0x3ff8e3=_0x298f72?_0x106eb8['count']:_0x1b4939[_0x9324('0x1a')]+_0x1b4939[_0x9324('0x19')];var _0x18a499;if(_0x3ff8e3>=_0x3c1c27){_0x3ff8e3=_0x3c1c27;_0x18a499=0xc8;}else{_0x18a499=0xce;}_0x23f027['status'](_0x18a499);return _0x23f027['set'](_0x9324('0x1b'),_0x3c622b+'-'+_0x3ff8e3+'/'+_0x3c1c27)[_0x9324('0x1c')](_0x106eb8);}return null;};}function patchUpdates(_0x1b008a){return function(_0x5c4c2e){try{jsonpatch[_0x9324('0x1d')](_0x5c4c2e,_0x1b008a,!![]);}catch(_0x161d0d){return BPromise['reject'](_0x161d0d);}return _0x5c4c2e['save']();};}function saveUpdates(_0x4ad391,_0x29d5be){return function(_0x40c268){if(_0x40c268){return _0x40c268[_0x9324('0x1e')](_0x4ad391)[_0x9324('0x1f')](function(_0x4d47ad){return _0x4d47ad;});}return null;};}function removeEntity(_0x11fe50,_0x39b05c){return function(_0x100ced){if(_0x100ced){return _0x100ced[_0x9324('0x20')]()[_0x9324('0x1f')](function(){_0x11fe50[_0x9324('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x492dcd,_0x39a829){return function(_0x497c6d){if(!_0x497c6d){_0x492dcd[_0x9324('0x15')](0x194);}return _0x497c6d;};}function handleError(_0x5ccb17,_0x3aa97c){_0x3aa97c=_0x3aa97c||0x1f4;return function(_0x2b6268){logger['error'](_0x2b6268[_0x9324('0x21')]);if(_0x2b6268[_0x9324('0x22')]){delete _0x2b6268['name'];}_0x5ccb17[_0x9324('0x17')](_0x3aa97c)[_0x9324('0x23')](_0x2b6268);};}exports[_0x9324('0x24')]=function(_0x5e6814,_0x1eb4af){var _0x1236fd={},_0x160a00={},_0x325fb4={'count':0x0,'rows':[]};var _0x5de5cb=_[_0x9324('0x25')](db[_0x9324('0x26')]['rawAttributes'],function(_0x1b0313){return{'name':_0x1b0313[_0x9324('0x27')],'type':_0x1b0313[_0x9324('0x28')]['key']};});_0x160a00[_0x9324('0x29')]=_[_0x9324('0x25')](_0x5de5cb,_0x9324('0x22'));_0x160a00[_0x9324('0x2a')]=_[_0x9324('0x2b')](_0x5e6814[_0x9324('0x2a')]);_0x160a00[_0x9324('0x2c')]=_['intersection'](_0x160a00[_0x9324('0x29')],_0x160a00[_0x9324('0x2a')]);_0x1236fd[_0x9324('0x2d')]=_['intersection'](_0x160a00[_0x9324('0x29')],qs[_0x9324('0x2e')](_0x5e6814[_0x9324('0x2a')][_0x9324('0x2e')]));_0x1236fd[_0x9324('0x2d')]=_0x1236fd[_0x9324('0x2d')][_0x9324('0x2f')]?_0x1236fd['attributes']:_0x160a00[_0x9324('0x29')];if(!_0x5e6814[_0x9324('0x2a')][_0x9324('0x30')]('nolimit')){_0x1236fd[_0x9324('0x19')]=qs['limit'](_0x5e6814[_0x9324('0x2a')][_0x9324('0x19')]);_0x1236fd[_0x9324('0x1a')]=qs[_0x9324('0x1a')](_0x5e6814[_0x9324('0x2a')][_0x9324('0x1a')]);}_0x1236fd['order']=qs[_0x9324('0x31')](_0x5e6814[_0x9324('0x2a')][_0x9324('0x31')]);_0x1236fd[_0x9324('0x32')]=qs[_0x9324('0x2c')](_['pick'](_0x5e6814[_0x9324('0x2a')],_0x160a00['filters']),_0x5de5cb);if(_0x5e6814['query'][_0x9324('0x33')]){_0x1236fd[_0x9324('0x32')]=_[_0x9324('0x34')](_0x1236fd[_0x9324('0x32')],{'$or':_['map'](_0x5de5cb,function(_0x4c08af){if(_0x4c08af[_0x9324('0x28')]!==_0x9324('0x35')){var _0x197678={};_0x197678[_0x4c08af[_0x9324('0x22')]]={'$like':'%'+_0x5e6814['query'][_0x9324('0x33')]+'%'};return _0x197678;}})});}_0x1236fd=_[_0x9324('0x34')]({},_0x1236fd,_0x5e6814[_0x9324('0x36')]);var _0x5c7496={'where':_0x1236fd['where']};return db[_0x9324('0x26')]['count'](_0x5c7496)[_0x9324('0x1f')](function(_0x912f99){_0x325fb4['count']=_0x912f99;if(_0x5e6814[_0x9324('0x2a')][_0x9324('0x37')]){_0x1236fd[_0x9324('0x38')]=[{'all':!![]}];}return db[_0x9324('0x26')][_0x9324('0x39')](_0x1236fd);})['then'](function(_0x4d8112){_0x325fb4['rows']=_0x4d8112;return _0x325fb4;})[_0x9324('0x1f')](respondWithFilteredResult(_0x1eb4af,_0x1236fd))[_0x9324('0x3a')](handleError(_0x1eb4af,null));};exports[_0x9324('0x3b')]=function(_0x289d4a,_0x128932){var _0xaf3e33={'raw':![],'where':{'id':_0x289d4a['params']['id']}},_0x4e24b7={};_0x4e24b7[_0x9324('0x29')]=_['keys'](db[_0x9324('0x26')]['rawAttributes']);_0x4e24b7[_0x9324('0x2a')]=_['keys'](_0x289d4a[_0x9324('0x2a')]);_0x4e24b7[_0x9324('0x2c')]=_[_0x9324('0x3c')](_0x4e24b7['model'],_0x4e24b7['query']);_0xaf3e33[_0x9324('0x2d')]=_[_0x9324('0x3c')](_0x4e24b7['model'],qs['fields'](_0x289d4a['query'][_0x9324('0x2e')]));_0xaf3e33['attributes']=_0xaf3e33['attributes']['length']?_0xaf3e33[_0x9324('0x2d')]:_0x4e24b7['model'];if(_0x289d4a[_0x9324('0x2a')][_0x9324('0x37')]){_0xaf3e33[_0x9324('0x38')]=[{'all':!![]}];}_0xaf3e33=_[_0x9324('0x34')]({},_0xaf3e33,_0x289d4a[_0x9324('0x36')]);return db['ZendeskConfiguration'][_0x9324('0x3d')](_0xaf3e33)[_0x9324('0x1f')](handleEntityNotFound(_0x128932,null))[_0x9324('0x1f')](respondWithResult(_0x128932,null))[_0x9324('0x3a')](handleError(_0x128932,null));};exports[_0x9324('0x3e')]=function(_0x39d18b,_0x22e216){return db[_0x9324('0x26')][_0x9324('0x3e')](_0x39d18b[_0x9324('0x3f')],{})[_0x9324('0x1f')](respondWithResult(_0x22e216,0xc9))[_0x9324('0x3a')](handleError(_0x22e216,null));};exports[_0x9324('0x1e')]=function(_0x200352,_0x50e41b){if(_0x200352[_0x9324('0x3f')]['id']){delete _0x200352[_0x9324('0x3f')]['id'];}return db[_0x9324('0x26')][_0x9324('0x3d')]({'where':{'id':_0x200352[_0x9324('0x40')]['id']}})[_0x9324('0x1f')](handleEntityNotFound(_0x50e41b,null))[_0x9324('0x1f')](saveUpdates(_0x200352[_0x9324('0x3f')],null))[_0x9324('0x1f')](respondWithResult(_0x50e41b,null))['catch'](handleError(_0x50e41b,null));};exports[_0x9324('0x20')]=function(_0x2c2843,_0x5e892e){return db['ZendeskConfiguration']['find']({'where':{'id':_0x2c2843[_0x9324('0x40')]['id']}})[_0x9324('0x1f')](handleEntityNotFound(_0x5e892e,null))[_0x9324('0x1f')](removeEntity(_0x5e892e,null))[_0x9324('0x3a')](handleError(_0x5e892e,null));};exports[_0x9324('0x41')]=function(_0x401764,_0x13203e,_0x27579f){var _0x348822={};var _0x25216d={};var _0x463595;var _0xb0e98e;return db['ZendeskConfiguration']['findOne']({'where':{'id':_0x401764['params']['id']}})['then'](handleEntityNotFound(_0x13203e,null))[_0x9324('0x1f')](function(_0x484247){if(_0x484247){_0x463595=_0x484247;_0x25216d[_0x9324('0x29')]=_[_0x9324('0x2b')](db[_0x9324('0x42')]['rawAttributes']);_0x25216d[_0x9324('0x2a')]=_[_0x9324('0x2b')](_0x401764['query']);_0x25216d[_0x9324('0x2c')]=_[_0x9324('0x3c')](_0x25216d[_0x9324('0x29')],_0x25216d[_0x9324('0x2a')]);_0x348822[_0x9324('0x2d')]=_[_0x9324('0x3c')](_0x25216d[_0x9324('0x29')],qs[_0x9324('0x2e')](_0x401764[_0x9324('0x2a')][_0x9324('0x2e')]));_0x348822[_0x9324('0x2d')]=_0x348822[_0x9324('0x2d')][_0x9324('0x2f')]?_0x348822[_0x9324('0x2d')]:_0x25216d[_0x9324('0x29')];_0x348822[_0x9324('0x43')]=qs['sort'](_0x401764['query'][_0x9324('0x31')]);_0x348822[_0x9324('0x32')]=qs[_0x9324('0x2c')](_[_0x9324('0x44')](_0x401764[_0x9324('0x2a')],_0x25216d[_0x9324('0x2c')]));if(_0x401764[_0x9324('0x2a')][_0x9324('0x33')]){_0x348822['where']=_[_0x9324('0x34')](_0x348822['where'],{'$or':_[_0x9324('0x25')](_0x348822['attributes'],function(_0x49743a){var _0x1f6619={};_0x1f6619[_0x49743a]={'$like':'%'+_0x401764[_0x9324('0x2a')][_0x9324('0x33')]+'%'};return _0x1f6619;})});}_0x348822=_['merge']({},_0x348822,_0x401764[_0x9324('0x36')]);return _0x463595[_0x9324('0x41')](_0x348822);}})[_0x9324('0x1f')](function(_0x24b4a0){if(_0x24b4a0){_0xb0e98e=_0x24b4a0[_0x9324('0x2f')];if(!_0x401764[_0x9324('0x2a')]['hasOwnProperty'](_0x9324('0x45'))){_0x348822[_0x9324('0x19')]=qs[_0x9324('0x19')](_0x401764[_0x9324('0x2a')][_0x9324('0x19')]);_0x348822['offset']=qs[_0x9324('0x1a')](_0x401764[_0x9324('0x2a')][_0x9324('0x1a')]);}return _0x463595[_0x9324('0x41')](_0x348822);}})['then'](function(_0x224b03){if(_0x224b03){return _0x224b03?{'count':_0xb0e98e,'rows':_0x224b03}:null;}})[_0x9324('0x1f')](respondWithResult(_0x13203e,null))[_0x9324('0x3a')](handleError(_0x13203e,null));};exports[_0x9324('0x46')]=function(_0x26eebc,_0x191203,_0x5c6a79){var _0x3fff2a={};var _0x54a55c={};var _0x5a582a;var _0x1dde7a;return db['ZendeskConfiguration'][_0x9324('0x47')]({'where':{'id':_0x26eebc['params']['id']}})[_0x9324('0x1f')](handleEntityNotFound(_0x191203,null))[_0x9324('0x1f')](function(_0x2d9bee){if(_0x2d9bee){_0x5a582a=_0x2d9bee;_0x54a55c[_0x9324('0x29')]=_[_0x9324('0x2b')](db[_0x9324('0x42')][_0x9324('0x48')]);_0x54a55c[_0x9324('0x2a')]=_[_0x9324('0x2b')](_0x26eebc[_0x9324('0x2a')]);_0x54a55c['filters']=_[_0x9324('0x3c')](_0x54a55c[_0x9324('0x29')],_0x54a55c[_0x9324('0x2a')]);_0x3fff2a['attributes']=_[_0x9324('0x3c')](_0x54a55c[_0x9324('0x29')],qs[_0x9324('0x2e')](_0x26eebc[_0x9324('0x2a')][_0x9324('0x2e')]));_0x3fff2a[_0x9324('0x2d')]=_0x3fff2a[_0x9324('0x2d')][_0x9324('0x2f')]?_0x3fff2a['attributes']:_0x54a55c[_0x9324('0x29')];_0x3fff2a[_0x9324('0x43')]=qs[_0x9324('0x31')](_0x26eebc[_0x9324('0x2a')][_0x9324('0x31')]);_0x3fff2a[_0x9324('0x32')]=qs[_0x9324('0x2c')](_[_0x9324('0x44')](_0x26eebc[_0x9324('0x2a')],_0x54a55c[_0x9324('0x2c')]));if(_0x26eebc[_0x9324('0x2a')][_0x9324('0x33')]){_0x3fff2a[_0x9324('0x32')]=_[_0x9324('0x34')](_0x3fff2a[_0x9324('0x32')],{'$or':_[_0x9324('0x25')](_0x3fff2a['attributes'],function(_0x27aff7){var _0x53ef43={};_0x53ef43[_0x27aff7]={'$like':'%'+_0x26eebc[_0x9324('0x2a')][_0x9324('0x33')]+'%'};return _0x53ef43;})});}_0x3fff2a=_[_0x9324('0x34')]({},_0x3fff2a,_0x26eebc[_0x9324('0x36')]);return _0x5a582a[_0x9324('0x46')](_0x3fff2a);}})[_0x9324('0x1f')](function(_0x434269){if(_0x434269){_0x1dde7a=_0x434269[_0x9324('0x2f')];if(!_0x26eebc[_0x9324('0x2a')][_0x9324('0x30')](_0x9324('0x45'))){_0x3fff2a[_0x9324('0x19')]=qs[_0x9324('0x19')](_0x26eebc['query'][_0x9324('0x19')]);_0x3fff2a[_0x9324('0x1a')]=qs[_0x9324('0x1a')](_0x26eebc['query'][_0x9324('0x1a')]);}return _0x5a582a[_0x9324('0x46')](_0x3fff2a);}})['then'](function(_0x7accab){if(_0x7accab){return _0x7accab?{'count':_0x1dde7a,'rows':_0x7accab}:null;}})[_0x9324('0x1f')](respondWithResult(_0x191203,null))[_0x9324('0x3a')](handleError(_0x191203,null));};exports['getDescriptions']=function(_0x28e3a2,_0x49d540,_0x48c86e){var _0xabc145={};var _0x434790={};var _0x7cb655;var _0x183fbe;return db[_0x9324('0x26')]['findOne']({'where':{'id':_0x28e3a2[_0x9324('0x40')]['id']}})[_0x9324('0x1f')](handleEntityNotFound(_0x49d540,null))['then'](function(_0x1efa2d){if(_0x1efa2d){_0x7cb655=_0x1efa2d;_0x434790['model']=_[_0x9324('0x2b')](db[_0x9324('0x42')][_0x9324('0x48')]);_0x434790['query']=_[_0x9324('0x2b')](_0x28e3a2[_0x9324('0x2a')]);_0x434790[_0x9324('0x2c')]=_[_0x9324('0x3c')](_0x434790[_0x9324('0x29')],_0x434790[_0x9324('0x2a')]);_0xabc145[_0x9324('0x2d')]=_[_0x9324('0x3c')](_0x434790[_0x9324('0x29')],qs[_0x9324('0x2e')](_0x28e3a2[_0x9324('0x2a')][_0x9324('0x2e')]));_0xabc145[_0x9324('0x2d')]=_0xabc145[_0x9324('0x2d')][_0x9324('0x2f')]?_0xabc145[_0x9324('0x2d')]:_0x434790[_0x9324('0x29')];_0xabc145[_0x9324('0x43')]=qs[_0x9324('0x31')](_0x28e3a2[_0x9324('0x2a')]['sort']);_0xabc145['where']=qs[_0x9324('0x2c')](_['pick'](_0x28e3a2[_0x9324('0x2a')],_0x434790[_0x9324('0x2c')]));if(_0x28e3a2[_0x9324('0x2a')][_0x9324('0x33')]){_0xabc145[_0x9324('0x32')]=_[_0x9324('0x34')](_0xabc145[_0x9324('0x32')],{'$or':_[_0x9324('0x25')](_0xabc145[_0x9324('0x2d')],function(_0x2a24bc){var _0x48cf0c={};_0x48cf0c[_0x2a24bc]={'$like':'%'+_0x28e3a2[_0x9324('0x2a')]['filter']+'%'};return _0x48cf0c;})});}_0xabc145=_[_0x9324('0x34')]({},_0xabc145,_0x28e3a2[_0x9324('0x36')]);return _0x7cb655[_0x9324('0x49')](_0xabc145);}})[_0x9324('0x1f')](function(_0x1da936){if(_0x1da936){_0x183fbe=_0x1da936[_0x9324('0x2f')];if(!_0x28e3a2[_0x9324('0x2a')]['hasOwnProperty']('nolimit')){_0xabc145[_0x9324('0x19')]=qs[_0x9324('0x19')](_0x28e3a2['query'][_0x9324('0x19')]);_0xabc145[_0x9324('0x1a')]=qs[_0x9324('0x1a')](_0x28e3a2[_0x9324('0x2a')][_0x9324('0x1a')]);}return _0x7cb655[_0x9324('0x49')](_0xabc145);}})[_0x9324('0x1f')](function(_0x55e318){if(_0x55e318){return _0x55e318?{'count':_0x183fbe,'rows':_0x55e318}:null;}})[_0x9324('0x1f')](respondWithResult(_0x49d540,null))['catch'](handleError(_0x49d540,null));};exports[_0x9324('0x4a')]=function(_0x5c49ac,_0x12bf15,_0x4343c0){var _0x57ca5e={};var _0x50dae4={};var _0x268c07;var _0x3926d2;return db['ZendeskConfiguration'][_0x9324('0x47')]({'where':{'id':_0x5c49ac[_0x9324('0x40')]['id']}})['then'](handleEntityNotFound(_0x12bf15,null))[_0x9324('0x1f')](function(_0x229757){if(_0x229757){_0x268c07=_0x229757;_0x50dae4['model']=_['keys'](db[_0x9324('0x4b')][_0x9324('0x48')]);_0x50dae4[_0x9324('0x2a')]=_[_0x9324('0x2b')](_0x5c49ac['query']);_0x50dae4[_0x9324('0x2c')]=_[_0x9324('0x3c')](_0x50dae4['model'],_0x50dae4[_0x9324('0x2a')]);_0x57ca5e['attributes']=_['intersection'](_0x50dae4[_0x9324('0x29')],qs['fields'](_0x5c49ac[_0x9324('0x2a')]['fields']));_0x57ca5e[_0x9324('0x2d')]=_0x57ca5e['attributes'][_0x9324('0x2f')]?_0x57ca5e['attributes']:_0x50dae4[_0x9324('0x29')];_0x57ca5e[_0x9324('0x43')]=qs[_0x9324('0x31')](_0x5c49ac[_0x9324('0x2a')][_0x9324('0x31')]);_0x57ca5e['where']=qs['filters'](_[_0x9324('0x44')](_0x5c49ac[_0x9324('0x2a')],_0x50dae4['filters']));if(_0x5c49ac[_0x9324('0x2a')][_0x9324('0x33')]){_0x57ca5e[_0x9324('0x32')]=_['merge'](_0x57ca5e[_0x9324('0x32')],{'$or':_[_0x9324('0x25')](_0x57ca5e[_0x9324('0x2d')],function(_0x380709){var _0x3c72c2={};_0x3c72c2[_0x380709]={'$like':'%'+_0x5c49ac[_0x9324('0x2a')][_0x9324('0x33')]+'%'};return _0x3c72c2;})});}_0x57ca5e=_[_0x9324('0x34')]({},_0x57ca5e,_0x5c49ac[_0x9324('0x36')]);return _0x268c07['getTags'](_0x57ca5e);}})[_0x9324('0x1f')](function(_0x3dcec7){if(_0x3dcec7){_0x3926d2=_0x3dcec7['length'];if(!_0x5c49ac[_0x9324('0x2a')][_0x9324('0x30')](_0x9324('0x45'))){_0x57ca5e[_0x9324('0x19')]=qs[_0x9324('0x19')](_0x5c49ac[_0x9324('0x2a')]['limit']);_0x57ca5e[_0x9324('0x1a')]=qs[_0x9324('0x1a')](_0x5c49ac[_0x9324('0x2a')][_0x9324('0x1a')]);}return _0x268c07[_0x9324('0x4a')](_0x57ca5e);}})['then'](function(_0x9e8958){if(_0x9e8958){return _0x9e8958?{'count':_0x3926d2,'rows':_0x9e8958}:null;}})['then'](respondWithResult(_0x12bf15,null))['catch'](handleError(_0x12bf15,null));};exports[_0x9324('0x4c')]=function(_0x319c21,_0x54de5a,_0x1b9b4e){if(_0x319c21[_0x9324('0x3f')]['id']){delete _0x319c21[_0x9324('0x3f')]['id'];}return db[_0x9324('0x26')][_0x9324('0x47')]({'where':{'id':_0x319c21[_0x9324('0x40')]['id']}})[_0x9324('0x1f')](handleEntityNotFound(_0x54de5a,null))[_0x9324('0x1f')](function(_0x5b942b){if(_0x5b942b){return _0x5b942b['setTags'](_0x319c21[_0x9324('0x3f')]['ids']||[]);}return null;})[_0x9324('0x1f')](respondWithResult(_0x54de5a,null))['catch'](handleError(_0x54de5a,null));};
\ No newline at end of file
+var _0x00dc=['count','offset','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','ZendeskConfiguration','rawAttributes','fieldName','type','model','map','keys','query','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','params','find','create','body','update','getFields','hasOwnProperty','getSubjects','findOne','ZendeskField','getDescriptions','getTags','setTags','ids','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','json','undefined','limit'];(function(_0x199301,_0x447fbc){var _0x49f477=function(_0xfeaa2a){while(--_0xfeaa2a){_0x199301['push'](_0x199301['shift']());}};_0x49f477(++_0x447fbc);}(_0x00dc,0xdc));var _0xc00d=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x00dc[_0x3947c9];return _0x2e7871;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc00d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc00d('0x1'));var rp=require('request-promise');var moment=require(_0xc00d('0x2'));var BPromise=require(_0xc00d('0x3'));var Mustache=require(_0xc00d('0x4'));var util=require(_0xc00d('0x5'));var path=require(_0xc00d('0x6'));var sox=require('sox');var csv=require(_0xc00d('0x7'));var ejs=require(_0xc00d('0x8'));var fs=require('fs');var fs_extra=require(_0xc00d('0x9'));var _=require('lodash');var squel=require(_0xc00d('0xa'));var crypto=require(_0xc00d('0xb'));var jsforce=require(_0xc00d('0xc'));var deskjs=require(_0xc00d('0xd'));var toCsv=require(_0xc00d('0x7'));var querystring=require(_0xc00d('0xe'));var Papa=require(_0xc00d('0xf'));var Redis=require(_0xc00d('0x10'));var authService=require(_0xc00d('0x11'));var qs=require(_0xc00d('0x12'));var as=require(_0xc00d('0x13'));var hardwareService=require(_0xc00d('0x14'));var logger=require(_0xc00d('0x15'))('api');var utils=require(_0xc00d('0x16'));var config=require(_0xc00d('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x42072e,_0x29352a){_0x29352a=_0x29352a||0xcc;return function(_0x4fcb7d){if(_0x4fcb7d){return _0x42072e[_0xc00d('0x18')](_0x29352a);}return _0x42072e[_0xc00d('0x19')](_0x29352a)['end']();};}function respondWithResult(_0x117c0d,_0xe2a1a9){_0xe2a1a9=_0xe2a1a9||0xc8;return function(_0x54a6e4){if(_0x54a6e4){return _0x117c0d[_0xc00d('0x19')](_0xe2a1a9)[_0xc00d('0x1a')](_0x54a6e4);}};}function respondWithFilteredResult(_0x2d6f9b,_0x4481d2){return function(_0x452129){if(_0x452129){var _0x4d1705=typeof _0x4481d2['offset']===_0xc00d('0x1b')&&typeof _0x4481d2[_0xc00d('0x1c')]===_0xc00d('0x1b');var _0x34c9fb=_0x452129[_0xc00d('0x1d')];var _0x2b2094=_0x4d1705?0x0:_0x4481d2[_0xc00d('0x1e')];var _0x43b0a3=_0x4d1705?_0x452129[_0xc00d('0x1d')]:_0x4481d2['offset']+_0x4481d2['limit'];var _0x252b3f;if(_0x43b0a3>=_0x34c9fb){_0x43b0a3=_0x34c9fb;_0x252b3f=0xc8;}else{_0x252b3f=0xce;}_0x2d6f9b['status'](_0x252b3f);return _0x2d6f9b[_0xc00d('0x1f')](_0xc00d('0x20'),_0x2b2094+'-'+_0x43b0a3+'/'+_0x34c9fb)[_0xc00d('0x1a')](_0x452129);}return null;};}function patchUpdates(_0x37c248){return function(_0x1f8358){try{jsonpatch[_0xc00d('0x21')](_0x1f8358,_0x37c248,!![]);}catch(_0x1ebe69){return BPromise[_0xc00d('0x22')](_0x1ebe69);}return _0x1f8358[_0xc00d('0x23')]();};}function saveUpdates(_0x48c3cc,_0x2a3b29){return function(_0x7f2b0a){if(_0x7f2b0a){return _0x7f2b0a['update'](_0x48c3cc)[_0xc00d('0x24')](function(_0x57a93b){return _0x57a93b;});}return null;};}function removeEntity(_0x248aa6,_0x3a4158){return function(_0x4b1090){if(_0x4b1090){return _0x4b1090[_0xc00d('0x25')]()[_0xc00d('0x24')](function(){_0x248aa6[_0xc00d('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3720f3,_0x1753e8){return function(_0x17707b){if(!_0x17707b){_0x3720f3[_0xc00d('0x18')](0x194);}return _0x17707b;};}function handleError(_0x107b49,_0x44bb43){_0x44bb43=_0x44bb43||0x1f4;return function(_0x195194){logger[_0xc00d('0x26')](_0x195194[_0xc00d('0x27')]);if(_0x195194['name']){delete _0x195194[_0xc00d('0x28')];}_0x107b49[_0xc00d('0x19')](_0x44bb43)[_0xc00d('0x29')](_0x195194);};}exports[_0xc00d('0x2a')]=function(_0x59c477,_0x1049c8){var _0x486270={},_0x5e5f0d={},_0x46ad40={'count':0x0,'rows':[]};var _0x2f32da=_['map'](db[_0xc00d('0x2b')][_0xc00d('0x2c')],function(_0x967738){return{'name':_0x967738[_0xc00d('0x2d')],'type':_0x967738[_0xc00d('0x2e')]['key']};});_0x5e5f0d[_0xc00d('0x2f')]=_[_0xc00d('0x30')](_0x2f32da,_0xc00d('0x28'));_0x5e5f0d['query']=_[_0xc00d('0x31')](_0x59c477[_0xc00d('0x32')]);_0x5e5f0d['filters']=_[_0xc00d('0x33')](_0x5e5f0d['model'],_0x5e5f0d[_0xc00d('0x32')]);_0x486270[_0xc00d('0x34')]=_[_0xc00d('0x33')](_0x5e5f0d[_0xc00d('0x2f')],qs[_0xc00d('0x35')](_0x59c477[_0xc00d('0x32')][_0xc00d('0x35')]));_0x486270[_0xc00d('0x34')]=_0x486270[_0xc00d('0x34')][_0xc00d('0x36')]?_0x486270[_0xc00d('0x34')]:_0x5e5f0d[_0xc00d('0x2f')];if(!_0x59c477[_0xc00d('0x32')]['hasOwnProperty'](_0xc00d('0x37'))){_0x486270[_0xc00d('0x1c')]=qs[_0xc00d('0x1c')](_0x59c477[_0xc00d('0x32')][_0xc00d('0x1c')]);_0x486270[_0xc00d('0x1e')]=qs[_0xc00d('0x1e')](_0x59c477['query'][_0xc00d('0x1e')]);}_0x486270[_0xc00d('0x38')]=qs[_0xc00d('0x39')](_0x59c477['query']['sort']);_0x486270[_0xc00d('0x3a')]=qs[_0xc00d('0x3b')](_[_0xc00d('0x3c')](_0x59c477['query'],_0x5e5f0d['filters']),_0x2f32da);if(_0x59c477[_0xc00d('0x32')][_0xc00d('0x3d')]){_0x486270[_0xc00d('0x3a')]=_['merge'](_0x486270['where'],{'$or':_[_0xc00d('0x30')](_0x2f32da,function(_0x56352c){if(_0x56352c[_0xc00d('0x2e')]!==_0xc00d('0x3e')){var _0x3cf2af={};_0x3cf2af[_0x56352c[_0xc00d('0x28')]]={'$like':'%'+_0x59c477[_0xc00d('0x32')][_0xc00d('0x3d')]+'%'};return _0x3cf2af;}})});}_0x486270=_[_0xc00d('0x3f')]({},_0x486270,_0x59c477[_0xc00d('0x40')]);var _0x3dedc1={'where':_0x486270[_0xc00d('0x3a')]};return db[_0xc00d('0x2b')][_0xc00d('0x1d')](_0x3dedc1)[_0xc00d('0x24')](function(_0x262800){_0x46ad40['count']=_0x262800;if(_0x59c477[_0xc00d('0x32')][_0xc00d('0x41')]){_0x486270[_0xc00d('0x42')]=[{'all':!![]}];}return db[_0xc00d('0x2b')]['findAll'](_0x486270);})['then'](function(_0x2f9cdc){_0x46ad40[_0xc00d('0x43')]=_0x2f9cdc;return _0x46ad40;})[_0xc00d('0x24')](respondWithFilteredResult(_0x1049c8,_0x486270))[_0xc00d('0x44')](handleError(_0x1049c8,null));};exports['show']=function(_0x118186,_0x38b52d){var _0x2633b4={'raw':![],'where':{'id':_0x118186[_0xc00d('0x45')]['id']}},_0x514fb6={};_0x514fb6[_0xc00d('0x2f')]=_['keys'](db[_0xc00d('0x2b')][_0xc00d('0x2c')]);_0x514fb6[_0xc00d('0x32')]=_[_0xc00d('0x31')](_0x118186[_0xc00d('0x32')]);_0x514fb6[_0xc00d('0x3b')]=_['intersection'](_0x514fb6[_0xc00d('0x2f')],_0x514fb6['query']);_0x2633b4[_0xc00d('0x34')]=_['intersection'](_0x514fb6['model'],qs['fields'](_0x118186[_0xc00d('0x32')]['fields']));_0x2633b4[_0xc00d('0x34')]=_0x2633b4[_0xc00d('0x34')][_0xc00d('0x36')]?_0x2633b4['attributes']:_0x514fb6['model'];if(_0x118186['query'][_0xc00d('0x41')]){_0x2633b4[_0xc00d('0x42')]=[{'all':!![]}];}_0x2633b4=_['merge']({},_0x2633b4,_0x118186[_0xc00d('0x40')]);return db['ZendeskConfiguration'][_0xc00d('0x46')](_0x2633b4)['then'](handleEntityNotFound(_0x38b52d,null))[_0xc00d('0x24')](respondWithResult(_0x38b52d,null))[_0xc00d('0x44')](handleError(_0x38b52d,null));};exports['create']=function(_0x4fd327,_0xc2bebd){return db[_0xc00d('0x2b')][_0xc00d('0x47')](_0x4fd327[_0xc00d('0x48')],{})[_0xc00d('0x24')](respondWithResult(_0xc2bebd,0xc9))[_0xc00d('0x44')](handleError(_0xc2bebd,null));};exports[_0xc00d('0x49')]=function(_0x24fd59,_0x280f5a){if(_0x24fd59['body']['id']){delete _0x24fd59[_0xc00d('0x48')]['id'];}return db[_0xc00d('0x2b')][_0xc00d('0x46')]({'where':{'id':_0x24fd59['params']['id']}})['then'](handleEntityNotFound(_0x280f5a,null))[_0xc00d('0x24')](saveUpdates(_0x24fd59[_0xc00d('0x48')],null))[_0xc00d('0x24')](respondWithResult(_0x280f5a,null))[_0xc00d('0x44')](handleError(_0x280f5a,null));};exports['destroy']=function(_0x29bf1f,_0x2bdf6a){return db['ZendeskConfiguration'][_0xc00d('0x46')]({'where':{'id':_0x29bf1f[_0xc00d('0x45')]['id']}})[_0xc00d('0x24')](handleEntityNotFound(_0x2bdf6a,null))[_0xc00d('0x24')](removeEntity(_0x2bdf6a,null))['catch'](handleError(_0x2bdf6a,null));};exports[_0xc00d('0x4a')]=function(_0x71427,_0x2ab708,_0x494e38){var _0x4203e1={};var _0xe87759={};var _0x6c34c0;var _0x2e5eba;return db[_0xc00d('0x2b')]['findOne']({'where':{'id':_0x71427[_0xc00d('0x45')]['id']}})[_0xc00d('0x24')](handleEntityNotFound(_0x2ab708,null))[_0xc00d('0x24')](function(_0x501cae){if(_0x501cae){_0x6c34c0=_0x501cae;_0xe87759[_0xc00d('0x2f')]=_[_0xc00d('0x31')](db['ZendeskField'][_0xc00d('0x2c')]);_0xe87759[_0xc00d('0x32')]=_[_0xc00d('0x31')](_0x71427['query']);_0xe87759[_0xc00d('0x3b')]=_[_0xc00d('0x33')](_0xe87759['model'],_0xe87759[_0xc00d('0x32')]);_0x4203e1['attributes']=_['intersection'](_0xe87759[_0xc00d('0x2f')],qs[_0xc00d('0x35')](_0x71427[_0xc00d('0x32')][_0xc00d('0x35')]));_0x4203e1[_0xc00d('0x34')]=_0x4203e1[_0xc00d('0x34')][_0xc00d('0x36')]?_0x4203e1[_0xc00d('0x34')]:_0xe87759['model'];_0x4203e1[_0xc00d('0x38')]=qs[_0xc00d('0x39')](_0x71427[_0xc00d('0x32')][_0xc00d('0x39')]);_0x4203e1[_0xc00d('0x3a')]=qs['filters'](_['pick'](_0x71427['query'],_0xe87759[_0xc00d('0x3b')]));if(_0x71427[_0xc00d('0x32')][_0xc00d('0x3d')]){_0x4203e1[_0xc00d('0x3a')]=_[_0xc00d('0x3f')](_0x4203e1[_0xc00d('0x3a')],{'$or':_['map'](_0x4203e1['attributes'],function(_0xe9b241){var _0x124cf7={};_0x124cf7[_0xe9b241]={'$like':'%'+_0x71427[_0xc00d('0x32')][_0xc00d('0x3d')]+'%'};return _0x124cf7;})});}_0x4203e1=_['merge']({},_0x4203e1,_0x71427[_0xc00d('0x40')]);return _0x6c34c0[_0xc00d('0x4a')](_0x4203e1);}})[_0xc00d('0x24')](function(_0xe4bd37){if(_0xe4bd37){_0x2e5eba=_0xe4bd37[_0xc00d('0x36')];if(!_0x71427[_0xc00d('0x32')][_0xc00d('0x4b')](_0xc00d('0x37'))){_0x4203e1[_0xc00d('0x1c')]=qs['limit'](_0x71427[_0xc00d('0x32')][_0xc00d('0x1c')]);_0x4203e1['offset']=qs[_0xc00d('0x1e')](_0x71427[_0xc00d('0x32')][_0xc00d('0x1e')]);}return _0x6c34c0[_0xc00d('0x4a')](_0x4203e1);}})['then'](function(_0x4f9867){if(_0x4f9867){return _0x4f9867?{'count':_0x2e5eba,'rows':_0x4f9867}:null;}})['then'](respondWithResult(_0x2ab708,null))[_0xc00d('0x44')](handleError(_0x2ab708,null));};exports[_0xc00d('0x4c')]=function(_0x415ea6,_0x41ab03,_0x4e5be8){var _0x115dd6={};var _0x5d88a2={};var _0x36529e;var _0x3cbecb;return db[_0xc00d('0x2b')][_0xc00d('0x4d')]({'where':{'id':_0x415ea6['params']['id']}})[_0xc00d('0x24')](handleEntityNotFound(_0x41ab03,null))['then'](function(_0x3eef2a){if(_0x3eef2a){_0x36529e=_0x3eef2a;_0x5d88a2['model']=_[_0xc00d('0x31')](db[_0xc00d('0x4e')][_0xc00d('0x2c')]);_0x5d88a2['query']=_[_0xc00d('0x31')](_0x415ea6[_0xc00d('0x32')]);_0x5d88a2['filters']=_[_0xc00d('0x33')](_0x5d88a2[_0xc00d('0x2f')],_0x5d88a2[_0xc00d('0x32')]);_0x115dd6[_0xc00d('0x34')]=_[_0xc00d('0x33')](_0x5d88a2[_0xc00d('0x2f')],qs['fields'](_0x415ea6[_0xc00d('0x32')]['fields']));_0x115dd6[_0xc00d('0x34')]=_0x115dd6['attributes']['length']?_0x115dd6[_0xc00d('0x34')]:_0x5d88a2[_0xc00d('0x2f')];_0x115dd6[_0xc00d('0x38')]=qs[_0xc00d('0x39')](_0x415ea6['query'][_0xc00d('0x39')]);_0x115dd6[_0xc00d('0x3a')]=qs['filters'](_['pick'](_0x415ea6[_0xc00d('0x32')],_0x5d88a2[_0xc00d('0x3b')]));if(_0x415ea6[_0xc00d('0x32')]['filter']){_0x115dd6[_0xc00d('0x3a')]=_['merge'](_0x115dd6[_0xc00d('0x3a')],{'$or':_['map'](_0x115dd6['attributes'],function(_0xba9cdc){var _0x41ad29={};_0x41ad29[_0xba9cdc]={'$like':'%'+_0x415ea6[_0xc00d('0x32')][_0xc00d('0x3d')]+'%'};return _0x41ad29;})});}_0x115dd6=_[_0xc00d('0x3f')]({},_0x115dd6,_0x415ea6[_0xc00d('0x40')]);return _0x36529e[_0xc00d('0x4c')](_0x115dd6);}})[_0xc00d('0x24')](function(_0x53126d){if(_0x53126d){_0x3cbecb=_0x53126d[_0xc00d('0x36')];if(!_0x415ea6[_0xc00d('0x32')][_0xc00d('0x4b')](_0xc00d('0x37'))){_0x115dd6['limit']=qs[_0xc00d('0x1c')](_0x415ea6['query'][_0xc00d('0x1c')]);_0x115dd6['offset']=qs['offset'](_0x415ea6['query'][_0xc00d('0x1e')]);}return _0x36529e['getSubjects'](_0x115dd6);}})['then'](function(_0x1cf829){if(_0x1cf829){return _0x1cf829?{'count':_0x3cbecb,'rows':_0x1cf829}:null;}})[_0xc00d('0x24')](respondWithResult(_0x41ab03,null))[_0xc00d('0x44')](handleError(_0x41ab03,null));};exports['getDescriptions']=function(_0x4f00e5,_0x4f0d24,_0x147622){var _0x64d123={};var _0x929d9c={};var _0x2eb130;var _0x2d4cea;return db['ZendeskConfiguration'][_0xc00d('0x4d')]({'where':{'id':_0x4f00e5[_0xc00d('0x45')]['id']}})[_0xc00d('0x24')](handleEntityNotFound(_0x4f0d24,null))['then'](function(_0x264d6f){if(_0x264d6f){_0x2eb130=_0x264d6f;_0x929d9c[_0xc00d('0x2f')]=_[_0xc00d('0x31')](db[_0xc00d('0x4e')][_0xc00d('0x2c')]);_0x929d9c[_0xc00d('0x32')]=_['keys'](_0x4f00e5['query']);_0x929d9c[_0xc00d('0x3b')]=_[_0xc00d('0x33')](_0x929d9c[_0xc00d('0x2f')],_0x929d9c[_0xc00d('0x32')]);_0x64d123[_0xc00d('0x34')]=_[_0xc00d('0x33')](_0x929d9c['model'],qs[_0xc00d('0x35')](_0x4f00e5[_0xc00d('0x32')][_0xc00d('0x35')]));_0x64d123[_0xc00d('0x34')]=_0x64d123[_0xc00d('0x34')]['length']?_0x64d123[_0xc00d('0x34')]:_0x929d9c[_0xc00d('0x2f')];_0x64d123['order']=qs[_0xc00d('0x39')](_0x4f00e5[_0xc00d('0x32')]['sort']);_0x64d123[_0xc00d('0x3a')]=qs['filters'](_[_0xc00d('0x3c')](_0x4f00e5[_0xc00d('0x32')],_0x929d9c[_0xc00d('0x3b')]));if(_0x4f00e5[_0xc00d('0x32')][_0xc00d('0x3d')]){_0x64d123[_0xc00d('0x3a')]=_[_0xc00d('0x3f')](_0x64d123['where'],{'$or':_[_0xc00d('0x30')](_0x64d123['attributes'],function(_0x72760a){var _0x5a577f={};_0x5a577f[_0x72760a]={'$like':'%'+_0x4f00e5[_0xc00d('0x32')][_0xc00d('0x3d')]+'%'};return _0x5a577f;})});}_0x64d123=_[_0xc00d('0x3f')]({},_0x64d123,_0x4f00e5['options']);return _0x2eb130[_0xc00d('0x4f')](_0x64d123);}})[_0xc00d('0x24')](function(_0x3252b3){if(_0x3252b3){_0x2d4cea=_0x3252b3[_0xc00d('0x36')];if(!_0x4f00e5[_0xc00d('0x32')][_0xc00d('0x4b')](_0xc00d('0x37'))){_0x64d123[_0xc00d('0x1c')]=qs['limit'](_0x4f00e5[_0xc00d('0x32')][_0xc00d('0x1c')]);_0x64d123[_0xc00d('0x1e')]=qs[_0xc00d('0x1e')](_0x4f00e5[_0xc00d('0x32')]['offset']);}return _0x2eb130[_0xc00d('0x4f')](_0x64d123);}})[_0xc00d('0x24')](function(_0x122e77){if(_0x122e77){return _0x122e77?{'count':_0x2d4cea,'rows':_0x122e77}:null;}})[_0xc00d('0x24')](respondWithResult(_0x4f0d24,null))[_0xc00d('0x44')](handleError(_0x4f0d24,null));};exports['getTags']=function(_0x2cc3b2,_0x34e4a6,_0x1c0b26){var _0x1c6bdd={};var _0x50e6fd={};var _0x52d0d3;var _0x6405fb;return db[_0xc00d('0x2b')][_0xc00d('0x4d')]({'where':{'id':_0x2cc3b2[_0xc00d('0x45')]['id']}})[_0xc00d('0x24')](handleEntityNotFound(_0x34e4a6,null))[_0xc00d('0x24')](function(_0x1830ad){if(_0x1830ad){_0x52d0d3=_0x1830ad;_0x50e6fd[_0xc00d('0x2f')]=_['keys'](db['Tag'][_0xc00d('0x2c')]);_0x50e6fd[_0xc00d('0x32')]=_[_0xc00d('0x31')](_0x2cc3b2[_0xc00d('0x32')]);_0x50e6fd['filters']=_[_0xc00d('0x33')](_0x50e6fd[_0xc00d('0x2f')],_0x50e6fd[_0xc00d('0x32')]);_0x1c6bdd['attributes']=_['intersection'](_0x50e6fd[_0xc00d('0x2f')],qs[_0xc00d('0x35')](_0x2cc3b2[_0xc00d('0x32')]['fields']));_0x1c6bdd[_0xc00d('0x34')]=_0x1c6bdd[_0xc00d('0x34')]['length']?_0x1c6bdd['attributes']:_0x50e6fd[_0xc00d('0x2f')];_0x1c6bdd[_0xc00d('0x38')]=qs[_0xc00d('0x39')](_0x2cc3b2[_0xc00d('0x32')]['sort']);_0x1c6bdd[_0xc00d('0x3a')]=qs[_0xc00d('0x3b')](_[_0xc00d('0x3c')](_0x2cc3b2['query'],_0x50e6fd[_0xc00d('0x3b')]));if(_0x2cc3b2['query'][_0xc00d('0x3d')]){_0x1c6bdd[_0xc00d('0x3a')]=_[_0xc00d('0x3f')](_0x1c6bdd[_0xc00d('0x3a')],{'$or':_['map'](_0x1c6bdd['attributes'],function(_0xca61e6){var _0xc5d3a9={};_0xc5d3a9[_0xca61e6]={'$like':'%'+_0x2cc3b2[_0xc00d('0x32')][_0xc00d('0x3d')]+'%'};return _0xc5d3a9;})});}_0x1c6bdd=_[_0xc00d('0x3f')]({},_0x1c6bdd,_0x2cc3b2[_0xc00d('0x40')]);return _0x52d0d3[_0xc00d('0x50')](_0x1c6bdd);}})[_0xc00d('0x24')](function(_0x3dfe13){if(_0x3dfe13){_0x6405fb=_0x3dfe13[_0xc00d('0x36')];if(!_0x2cc3b2[_0xc00d('0x32')]['hasOwnProperty'](_0xc00d('0x37'))){_0x1c6bdd['limit']=qs[_0xc00d('0x1c')](_0x2cc3b2['query'][_0xc00d('0x1c')]);_0x1c6bdd['offset']=qs[_0xc00d('0x1e')](_0x2cc3b2[_0xc00d('0x32')][_0xc00d('0x1e')]);}return _0x52d0d3[_0xc00d('0x50')](_0x1c6bdd);}})['then'](function(_0x53f0d5){if(_0x53f0d5){return _0x53f0d5?{'count':_0x6405fb,'rows':_0x53f0d5}:null;}})[_0xc00d('0x24')](respondWithResult(_0x34e4a6,null))[_0xc00d('0x44')](handleError(_0x34e4a6,null));};exports['setTags']=function(_0xf666fa,_0x49a816,_0x386be6){if(_0xf666fa[_0xc00d('0x48')]['id']){delete _0xf666fa['body']['id'];}return db['ZendeskConfiguration'][_0xc00d('0x4d')]({'where':{'id':_0xf666fa[_0xc00d('0x45')]['id']}})[_0xc00d('0x24')](handleEntityNotFound(_0x49a816,null))[_0xc00d('0x24')](function(_0xee59d0){if(_0xee59d0){return _0xee59d0[_0xc00d('0x51')](_0xf666fa[_0xc00d('0x48')][_0xc00d('0x52')]||[]);}return null;})[_0xc00d('0x24')](respondWithResult(_0x49a816,null))[_0xc00d('0x44')](handleError(_0x49a816,null));};
\ No newline at end of file
index 65a9aec..281735d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7d1=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes','exports','define','ZendeskConfiguration','int_zendesk_configurations'];(function(_0x491a7f,_0x28bb80){var _0x3d8f44=function(_0xdaa716){while(--_0xdaa716){_0x491a7f['push'](_0x491a7f['shift']());}};_0x3d8f44(++_0x28bb80);}(_0xd7d1,0x1b3));var _0x1d7d=function(_0x308896,_0x5e9684){_0x308896=_0x308896-0x0;var _0x14f056=_0xd7d1[_0x308896];return _0x14f056;};'use strict';var _=require(_0x1d7d('0x0'));var util=require(_0x1d7d('0x1'));var logger=require(_0x1d7d('0x2'))(_0x1d7d('0x3'));var moment=require(_0x1d7d('0x4'));var BPromise=require(_0x1d7d('0x5'));var rp=require(_0x1d7d('0x6'));var fs=require('fs');var path=require(_0x1d7d('0x7'));var rimraf=require(_0x1d7d('0x8'));var config=require(_0x1d7d('0x9'));var attributes=require(_0x1d7d('0xa'));module[_0x1d7d('0xb')]=function(_0x14b2b9,_0x5a8cf3){return _0x14b2b9[_0x1d7d('0xc')](_0x1d7d('0xd'),attributes,{'tableName':_0x1d7d('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5b12=['int_zendesk_configurations','lodash','util','../../config/logger','moment','request-promise','path','../../config/environment','ZendeskConfiguration'];(function(_0x7d87a5,_0x365868){var _0x1fd89d=function(_0x5e0a36){while(--_0x5e0a36){_0x7d87a5['push'](_0x7d87a5['shift']());}};_0x1fd89d(++_0x365868);}(_0x5b12,0xa3));var _0x25b1=function(_0x470b4d,_0x5b797d){_0x470b4d=_0x470b4d-0x0;var _0xa6664e=_0x5b12[_0x470b4d];return _0xa6664e;};'use strict';var _=require(_0x25b1('0x0'));var util=require(_0x25b1('0x1'));var logger=require(_0x25b1('0x2'))('api');var moment=require(_0x25b1('0x3'));var BPromise=require('bluebird');var rp=require(_0x25b1('0x4'));var fs=require('fs');var path=require(_0x25b1('0x5'));var rimraf=require('rimraf');var config=require(_0x25b1('0x6'));var attributes=require('./intZendeskConfiguration.attributes');module['exports']=function(_0x35d90b,_0x5523c9){return _0x35d90b['define'](_0x25b1('0x7'),attributes,{'tableName':_0x25b1('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 12a3530..67d3e7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf47=['ZendeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ZendeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug'];(function(_0xa1dd3,_0x934684){var _0x2ef922=function(_0x7a9614){while(--_0x7a9614){_0xa1dd3['push'](_0xa1dd3['shift']());}};_0x2ef922(++_0x934684);}(_0xaf47,0xaa));var _0x7af4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xaf47[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7af4('0x0'));var util=require('util');var moment=require(_0x7af4('0x1'));var BPromise=require(_0x7af4('0x2'));var rs=require(_0x7af4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7af4('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7af4('0x5'));var config=require(_0x7af4('0x6'));var jayson=require(_0x7af4('0x7'));var client=jayson[_0x7af4('0x8')][_0x7af4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x515768,_0x487758,_0x756c84){return new BPromise(function(_0x57fb35,_0x27d98f){return client[_0x7af4('0xa')](_0x515768,_0x756c84)[_0x7af4('0xb')](function(_0x40f6e1){logger[_0x7af4('0xc')]('ZendeskConfiguration,\x20%s,\x20%s',_0x487758,'request\x20sent');logger[_0x7af4('0xd')](_0x7af4('0xe'),_0x487758,_0x7af4('0xf'),JSON[_0x7af4('0x10')](_0x40f6e1));if(_0x40f6e1[_0x7af4('0x11')]){if(_0x40f6e1[_0x7af4('0x11')][_0x7af4('0x12')]===0x1f4){logger['error'](_0x7af4('0x13'),_0x487758,_0x40f6e1['error']['message']);return _0x27d98f(_0x40f6e1[_0x7af4('0x11')][_0x7af4('0x14')]);}logger[_0x7af4('0x11')](_0x7af4('0x13'),_0x487758,_0x40f6e1['error'][_0x7af4('0x14')]);return _0x57fb35(_0x40f6e1[_0x7af4('0x11')]['message']);}else{logger[_0x7af4('0xc')](_0x7af4('0x13'),_0x487758,'request\x20sent');_0x57fb35(_0x40f6e1[_0x7af4('0x15')]['message']);}})[_0x7af4('0x16')](function(_0x3fd8bf){logger[_0x7af4('0x11')](_0x7af4('0x13'),_0x487758,_0x3fd8bf);_0x27d98f(_0x3fd8bf);});});}
\ No newline at end of file
+var _0xb491=['message','request\x20sent','result','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','then','info','ZendeskConfiguration,\x20%s,\x20%s','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x1b71fb,_0x2a0ac9){var _0x5d417d=function(_0x2d4da6){while(--_0x2d4da6){_0x1b71fb['push'](_0x1b71fb['shift']());}};_0x5d417d(++_0x2a0ac9);}(_0xb491,0x147));var _0x1b49=function(_0x92713a,_0x68f8b0){_0x92713a=_0x92713a-0x0;var _0x1893e1=_0xb491[_0x92713a];return _0x1893e1;};'use strict';var _=require('lodash');var util=require(_0x1b49('0x0'));var moment=require(_0x1b49('0x1'));var BPromise=require(_0x1b49('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1b49('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1b49('0x4'));var logger=require(_0x1b49('0x5'))(_0x1b49('0x6'));var config=require('../../config/environment');var jayson=require(_0x1b49('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3c71bd,_0x5469c2,_0x280a35){return new BPromise(function(_0x191745,_0x257f59){return client['request'](_0x3c71bd,_0x280a35)[_0x1b49('0x8')](function(_0x1e3f92){logger[_0x1b49('0x9')](_0x1b49('0xa'),_0x5469c2,'request\x20sent');logger[_0x1b49('0xb')](_0x1b49('0xc'),_0x5469c2,'request\x20sent',JSON['stringify'](_0x1e3f92));if(_0x1e3f92[_0x1b49('0xd')]){if(_0x1e3f92[_0x1b49('0xd')][_0x1b49('0xe')]===0x1f4){logger[_0x1b49('0xd')]('ZendeskConfiguration,\x20%s,\x20%s',_0x5469c2,_0x1e3f92[_0x1b49('0xd')][_0x1b49('0xf')]);return _0x257f59(_0x1e3f92[_0x1b49('0xd')][_0x1b49('0xf')]);}logger[_0x1b49('0xd')](_0x1b49('0xa'),_0x5469c2,_0x1e3f92['error'][_0x1b49('0xf')]);return _0x191745(_0x1e3f92[_0x1b49('0xd')][_0x1b49('0xf')]);}else{logger[_0x1b49('0x9')](_0x1b49('0xa'),_0x5469c2,_0x1b49('0x10'));_0x191745(_0x1e3f92[_0x1b49('0x11')]['message']);}})['catch'](function(_0x41cb2a){logger['error'](_0x1b49('0xa'),_0x5469c2,_0x41cb2a);_0x257f59(_0x41cb2a);});});}
\ No newline at end of file
index 2e0eb5c..b96ebf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d1e=['index','/:id','post','put','update','delete','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x4e1fcf,_0x31e47e){var _0x45f6be=function(_0x3cde94){while(--_0x3cde94){_0x4e1fcf['push'](_0x4e1fcf['shift']());}};_0x45f6be(++_0x31e47e);}(_0x7d1e,0x15a));var _0xe7d1=function(_0x4bbabf,_0x3e3454){_0x4bbabf=_0x4bbabf-0x0;var _0x159343=_0x7d1e[_0x4bbabf];return _0x159343;};'use strict';var multer=require('multer');var util=require(_0xe7d1('0x0'));var path=require(_0xe7d1('0x1'));var timeout=require(_0xe7d1('0x2'));var express=require(_0xe7d1('0x3'));var router=express[_0xe7d1('0x4')]();var fs_extra=require(_0xe7d1('0x5'));var auth=require(_0xe7d1('0x6'));var interaction=require(_0xe7d1('0x7'));var config=require(_0xe7d1('0x8'));var controller=require('./intZendeskField.controller');router[_0xe7d1('0x9')]('/',auth[_0xe7d1('0xa')](),controller[_0xe7d1('0xb')]);router[_0xe7d1('0x9')](_0xe7d1('0xc'),auth[_0xe7d1('0xa')](),controller['show']);router[_0xe7d1('0xd')]('/',auth[_0xe7d1('0xa')](),controller['create']);router[_0xe7d1('0xe')](_0xe7d1('0xc'),auth[_0xe7d1('0xa')](),controller[_0xe7d1('0xf')]);router[_0xe7d1('0x10')](_0xe7d1('0xc'),auth[_0xe7d1('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x0d19=['isAuthenticated','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','post'];(function(_0x5c3bc2,_0x244b25){var _0x3e05a4=function(_0x32686e){while(--_0x32686e){_0x5c3bc2['push'](_0x5c3bc2['shift']());}};_0x3e05a4(++_0x244b25);}(_0x0d19,0x15c));var _0x90d1=function(_0x469852,_0x532e8c){_0x469852=_0x469852-0x0;var _0xa844b9=_0x0d19[_0x469852];return _0xa844b9;};'use strict';var multer=require(_0x90d1('0x0'));var util=require(_0x90d1('0x1'));var path=require('path');var timeout=require(_0x90d1('0x2'));var express=require(_0x90d1('0x3'));var router=express[_0x90d1('0x4')]();var fs_extra=require(_0x90d1('0x5'));var auth=require(_0x90d1('0x6'));var interaction=require(_0x90d1('0x7'));var config=require(_0x90d1('0x8'));var controller=require('./intZendeskField.controller');router[_0x90d1('0x9')]('/',auth['isAuthenticated'](),controller[_0x90d1('0xa')]);router[_0x90d1('0x9')](_0x90d1('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x90d1('0xc')]('/',auth[_0x90d1('0xd')](),controller['create']);router[_0x90d1('0xe')](_0x90d1('0xb'),auth[_0x90d1('0xd')](),controller[_0x90d1('0xf')]);router[_0x90d1('0x10')](_0x90d1('0xb'),auth[_0x90d1('0xd')](),controller[_0x90d1('0x11')]);module[_0x90d1('0x12')]=router;
\ No newline at end of file
index bb725ce..f076fc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4aa3=['STRING','BOOLEAN','exports','ENUM','string','customVariable','keyValue','picklist'];(function(_0x1147ab,_0x10e72b){var _0x55cb5a=function(_0x364bd6){while(--_0x364bd6){_0x1147ab['push'](_0x1147ab['shift']());}};_0x55cb5a(++_0x10e72b);}(_0x4aa3,0x82));var _0x34aa=function(_0x2e1fab,_0x4347d4){_0x2e1fab=_0x2e1fab-0x0;var _0x2ece21=_0x4aa3[_0x2e1fab];return _0x2ece21;};'use strict';var Sequelize=require('sequelize');module[_0x34aa('0x0')]={'type':{'type':Sequelize[_0x34aa('0x1')](_0x34aa('0x2'),'variable',_0x34aa('0x3'),_0x34aa('0x4'),_0x34aa('0x5')),'defaultValue':_0x34aa('0x2')},'content':{'type':Sequelize[_0x34aa('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x34aa('0x1')](_0x34aa('0x2'),'variable',_0x34aa('0x3'))},'keyContent':{'type':Sequelize[_0x34aa('0x6')]},'idField':{'type':Sequelize[_0x34aa('0x6')]},'nameField':{'type':Sequelize[_0x34aa('0x6')]},'customField':{'type':Sequelize[_0x34aa('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x34aa('0x6')]}};
\ No newline at end of file
+var _0x412a=['ENUM','string','variable','customVariable','STRING','BOOLEAN','exports'];(function(_0x1762b4,_0x33d836){var _0x29beda=function(_0x31c2fa){while(--_0x31c2fa){_0x1762b4['push'](_0x1762b4['shift']());}};_0x29beda(++_0x33d836);}(_0x412a,0xa7));var _0xa412=function(_0xe17f2,_0xc98fb8){_0xe17f2=_0xe17f2-0x0;var _0x51cb24=_0x412a[_0xe17f2];return _0x51cb24;};'use strict';var Sequelize=require('sequelize');module[_0xa412('0x0')]={'type':{'type':Sequelize[_0xa412('0x1')](_0xa412('0x2'),_0xa412('0x3'),_0xa412('0x4'),'keyValue','picklist'),'defaultValue':_0xa412('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xa412('0x5')]},'keyType':{'type':Sequelize[_0xa412('0x1')]('string',_0xa412('0x3'),_0xa412('0x4'))},'keyContent':{'type':Sequelize[_0xa412('0x5')]},'idField':{'type':Sequelize[_0xa412('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xa412('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xa412('0x5')]}};
\ No newline at end of file
index 78024da..fe01540 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f98=['keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','map','options','ZendeskField','includeAll','include','findAll','catch','params','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','destroy','then','stack','name','send','index','rawAttributes','type','key','model'];(function(_0x3f8e6f,_0x298450){var _0x1094b6=function(_0x522317){while(--_0x522317){_0x3f8e6f['push'](_0x3f8e6f['shift']());}};_0x1094b6(++_0x298450);}(_0x9f98,0xac));var _0x89f9=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x9f98[_0x19950b];return _0x3c6b41;};'use strict';var emlformat=require(_0x89f9('0x0'));var rimraf=require(_0x89f9('0x1'));var zipdir=require(_0x89f9('0x2'));var jsonpatch=require(_0x89f9('0x3'));var rp=require('request-promise');var moment=require(_0x89f9('0x4'));var BPromise=require(_0x89f9('0x5'));var Mustache=require('mustache');var util=require(_0x89f9('0x6'));var path=require(_0x89f9('0x7'));var sox=require('sox');var csv=require(_0x89f9('0x8'));var ejs=require(_0x89f9('0x9'));var fs=require('fs');var fs_extra=require(_0x89f9('0xa'));var _=require(_0x89f9('0xb'));var squel=require(_0x89f9('0xc'));var crypto=require(_0x89f9('0xd'));var jsforce=require(_0x89f9('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x89f9('0xf'));var Papa=require(_0x89f9('0x10'));var Redis=require('ioredis');var authService=require(_0x89f9('0x11'));var qs=require(_0x89f9('0x12'));var as=require(_0x89f9('0x13'));var hardwareService=require(_0x89f9('0x14'));var logger=require(_0x89f9('0x15'))('api');var utils=require(_0x89f9('0x16'));var config=require(_0x89f9('0x17'));var licenseUtil=require(_0x89f9('0x18'));var db=require(_0x89f9('0x19'))['db'];function respondWithStatusCode(_0x1c1edb,_0x20b0da){_0x20b0da=_0x20b0da||0xcc;return function(_0x2e861b){if(_0x2e861b){return _0x1c1edb[_0x89f9('0x1a')](_0x20b0da);}return _0x1c1edb[_0x89f9('0x1b')](_0x20b0da)[_0x89f9('0x1c')]();};}function respondWithResult(_0x119a2d,_0x571cae){_0x571cae=_0x571cae||0xc8;return function(_0x23c957){if(_0x23c957){return _0x119a2d[_0x89f9('0x1b')](_0x571cae)[_0x89f9('0x1d')](_0x23c957);}};}function respondWithFilteredResult(_0x1f729a,_0x3a0fab){return function(_0x175621){if(_0x175621){var _0xa8ed99=typeof _0x3a0fab[_0x89f9('0x1e')]===_0x89f9('0x1f')&&typeof _0x3a0fab[_0x89f9('0x20')]===_0x89f9('0x1f');var _0x20c073=_0x175621[_0x89f9('0x21')];var _0x5e5c89=_0xa8ed99?0x0:_0x3a0fab[_0x89f9('0x1e')];var _0x5a31ee=_0xa8ed99?_0x175621[_0x89f9('0x21')]:_0x3a0fab[_0x89f9('0x1e')]+_0x3a0fab[_0x89f9('0x20')];var _0x589270;if(_0x5a31ee>=_0x20c073){_0x5a31ee=_0x20c073;_0x589270=0xc8;}else{_0x589270=0xce;}_0x1f729a[_0x89f9('0x1b')](_0x589270);return _0x1f729a['set']('Content-Range',_0x5e5c89+'-'+_0x5a31ee+'/'+_0x20c073)[_0x89f9('0x1d')](_0x175621);}return null;};}function patchUpdates(_0x59fa08){return function(_0xb6335b){try{jsonpatch[_0x89f9('0x22')](_0xb6335b,_0x59fa08,!![]);}catch(_0x1bf774){return BPromise[_0x89f9('0x23')](_0x1bf774);}return _0xb6335b[_0x89f9('0x24')]();};}function saveUpdates(_0x2499d6,_0x5c34e9){return function(_0x115e15){if(_0x115e15){return _0x115e15['update'](_0x2499d6)['then'](function(_0x973640){return _0x973640;});}return null;};}function removeEntity(_0x3b7dba,_0x4bfd3c){return function(_0x29075b){if(_0x29075b){return _0x29075b[_0x89f9('0x25')]()[_0x89f9('0x26')](function(){_0x3b7dba[_0x89f9('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x168ee0,_0x26c02e){return function(_0x17668b){if(!_0x17668b){_0x168ee0['sendStatus'](0x194);}return _0x17668b;};}function handleError(_0x538fb5,_0x1b43cc){_0x1b43cc=_0x1b43cc||0x1f4;return function(_0x3346cc){logger['error'](_0x3346cc[_0x89f9('0x27')]);if(_0x3346cc[_0x89f9('0x28')]){delete _0x3346cc[_0x89f9('0x28')];}_0x538fb5['status'](_0x1b43cc)[_0x89f9('0x29')](_0x3346cc);};}exports[_0x89f9('0x2a')]=function(_0x350ecc,_0x27a6e3){var _0x101e8b={},_0x271663={},_0x6d3168={'count':0x0,'rows':[]};var _0x45c2da=_['map'](db['ZendeskField'][_0x89f9('0x2b')],function(_0x507d27){return{'name':_0x507d27['fieldName'],'type':_0x507d27[_0x89f9('0x2c')][_0x89f9('0x2d')]};});_0x271663[_0x89f9('0x2e')]=_['map'](_0x45c2da,_0x89f9('0x28'));_0x271663['query']=_[_0x89f9('0x2f')](_0x350ecc[_0x89f9('0x30')]);_0x271663[_0x89f9('0x31')]=_[_0x89f9('0x32')](_0x271663[_0x89f9('0x2e')],_0x271663[_0x89f9('0x30')]);_0x101e8b['attributes']=_[_0x89f9('0x32')](_0x271663['model'],qs[_0x89f9('0x33')](_0x350ecc[_0x89f9('0x30')][_0x89f9('0x33')]));_0x101e8b[_0x89f9('0x34')]=_0x101e8b['attributes'][_0x89f9('0x35')]?_0x101e8b[_0x89f9('0x34')]:_0x271663[_0x89f9('0x2e')];if(!_0x350ecc[_0x89f9('0x30')][_0x89f9('0x36')](_0x89f9('0x37'))){_0x101e8b[_0x89f9('0x20')]=qs['limit'](_0x350ecc[_0x89f9('0x30')]['limit']);_0x101e8b[_0x89f9('0x1e')]=qs['offset'](_0x350ecc[_0x89f9('0x30')][_0x89f9('0x1e')]);}_0x101e8b[_0x89f9('0x38')]=qs[_0x89f9('0x39')](_0x350ecc[_0x89f9('0x30')][_0x89f9('0x39')]);_0x101e8b['where']=qs[_0x89f9('0x31')](_[_0x89f9('0x3a')](_0x350ecc[_0x89f9('0x30')],_0x271663['filters']),_0x45c2da);if(_0x350ecc[_0x89f9('0x30')][_0x89f9('0x3b')]){_0x101e8b[_0x89f9('0x3c')]=_[_0x89f9('0x3d')](_0x101e8b[_0x89f9('0x3c')],{'$or':_[_0x89f9('0x3e')](_0x45c2da,function(_0x3f0f3b){if(_0x3f0f3b[_0x89f9('0x2c')]!=='VIRTUAL'){var _0x38cf24={};_0x38cf24[_0x3f0f3b[_0x89f9('0x28')]]={'$like':'%'+_0x350ecc[_0x89f9('0x30')][_0x89f9('0x3b')]+'%'};return _0x38cf24;}})});}_0x101e8b=_['merge']({},_0x101e8b,_0x350ecc[_0x89f9('0x3f')]);var _0x2156fa={'where':_0x101e8b['where']};return db[_0x89f9('0x40')]['count'](_0x2156fa)['then'](function(_0xc811de){_0x6d3168[_0x89f9('0x21')]=_0xc811de;if(_0x350ecc[_0x89f9('0x30')][_0x89f9('0x41')]){_0x101e8b[_0x89f9('0x42')]=[{'all':!![]}];}return db[_0x89f9('0x40')][_0x89f9('0x43')](_0x101e8b);})[_0x89f9('0x26')](function(_0x503cda){_0x6d3168['rows']=_0x503cda;return _0x6d3168;})[_0x89f9('0x26')](respondWithFilteredResult(_0x27a6e3,_0x101e8b))[_0x89f9('0x44')](handleError(_0x27a6e3,null));};exports['show']=function(_0x24172c,_0x5e717d){var _0x3b1fa9={'raw':!![],'where':{'id':_0x24172c[_0x89f9('0x45')]['id']}},_0x3bb90d={};_0x3bb90d[_0x89f9('0x2e')]=_[_0x89f9('0x2f')](db[_0x89f9('0x40')]['rawAttributes']);_0x3bb90d[_0x89f9('0x30')]=_[_0x89f9('0x2f')](_0x24172c[_0x89f9('0x30')]);_0x3bb90d['filters']=_['intersection'](_0x3bb90d['model'],_0x3bb90d[_0x89f9('0x30')]);_0x3b1fa9[_0x89f9('0x34')]=_[_0x89f9('0x32')](_0x3bb90d[_0x89f9('0x2e')],qs['fields'](_0x24172c['query'][_0x89f9('0x33')]));_0x3b1fa9[_0x89f9('0x34')]=_0x3b1fa9[_0x89f9('0x34')]['length']?_0x3b1fa9[_0x89f9('0x34')]:_0x3bb90d[_0x89f9('0x2e')];if(_0x24172c[_0x89f9('0x30')][_0x89f9('0x41')]){_0x3b1fa9[_0x89f9('0x42')]=[{'all':!![]}];}_0x3b1fa9=_['merge']({},_0x3b1fa9,_0x24172c[_0x89f9('0x3f')]);return db[_0x89f9('0x40')][_0x89f9('0x46')](_0x3b1fa9)['then'](handleEntityNotFound(_0x5e717d,null))[_0x89f9('0x26')](respondWithResult(_0x5e717d,null))['catch'](handleError(_0x5e717d,null));};exports[_0x89f9('0x47')]=function(_0x1f1a74,_0x4098c2){return db['ZendeskField'][_0x89f9('0x47')](_0x1f1a74['body'],{})[_0x89f9('0x26')](respondWithResult(_0x4098c2,0xc9))[_0x89f9('0x44')](handleError(_0x4098c2,null));};exports['update']=function(_0x3dd009,_0x1ea191){if(_0x3dd009['body']['id']){delete _0x3dd009[_0x89f9('0x48')]['id'];}return db['ZendeskField'][_0x89f9('0x46')]({'where':{'id':_0x3dd009[_0x89f9('0x45')]['id']}})['then'](handleEntityNotFound(_0x1ea191,null))[_0x89f9('0x26')](saveUpdates(_0x3dd009[_0x89f9('0x48')],null))[_0x89f9('0x26')](respondWithResult(_0x1ea191,null))[_0x89f9('0x44')](handleError(_0x1ea191,null));};exports[_0x89f9('0x25')]=function(_0x27f535,_0x2f551a){return db[_0x89f9('0x40')][_0x89f9('0x46')]({'where':{'id':_0x27f535[_0x89f9('0x45')]['id']}})['then'](handleEntityNotFound(_0x2f551a,null))['then'](removeEntity(_0x2f551a,null))['catch'](handleError(_0x2f551a,null));};
\ No newline at end of file
+var _0x03a6=['rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','error','stack','name','send','index','ZendeskField','rawAttributes','fieldName','type','key','map','query','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','includeAll','rows','show','params','keys','options','catch','create','body','find','eml-format'];(function(_0x582244,_0x33f08b){var _0x81f9e4=function(_0x1f63f8){while(--_0x1f63f8){_0x582244['push'](_0x582244['shift']());}};_0x81f9e4(++_0x33f08b);}(_0x03a6,0x1af));var _0x603a=function(_0x28e8ae,_0x2816ef){_0x28e8ae=_0x28e8ae-0x0;var _0x197456=_0x03a6[_0x28e8ae];return _0x197456;};'use strict';var emlformat=require(_0x603a('0x0'));var rimraf=require(_0x603a('0x1'));var zipdir=require(_0x603a('0x2'));var jsonpatch=require(_0x603a('0x3'));var rp=require(_0x603a('0x4'));var moment=require(_0x603a('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x603a('0x6'));var util=require('util');var path=require(_0x603a('0x7'));var sox=require(_0x603a('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x603a('0x9'));var _=require(_0x603a('0xa'));var squel=require(_0x603a('0xb'));var crypto=require(_0x603a('0xc'));var jsforce=require(_0x603a('0xd'));var deskjs=require(_0x603a('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x603a('0xf'));var Redis=require('ioredis');var authService=require(_0x603a('0x10'));var qs=require(_0x603a('0x11'));var as=require(_0x603a('0x12'));var hardwareService=require(_0x603a('0x13'));var logger=require(_0x603a('0x14'))('api');var utils=require(_0x603a('0x15'));var config=require(_0x603a('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3d25d0,_0x2ceae3){_0x2ceae3=_0x2ceae3||0xcc;return function(_0x3ed776){if(_0x3ed776){return _0x3d25d0['sendStatus'](_0x2ceae3);}return _0x3d25d0[_0x603a('0x17')](_0x2ceae3)[_0x603a('0x18')]();};}function respondWithResult(_0x5790c9,_0x20de7d){_0x20de7d=_0x20de7d||0xc8;return function(_0xd11033){if(_0xd11033){return _0x5790c9['status'](_0x20de7d)[_0x603a('0x19')](_0xd11033);}};}function respondWithFilteredResult(_0x6514a3,_0x534999){return function(_0x1f7d20){if(_0x1f7d20){var _0x3f2f16=typeof _0x534999[_0x603a('0x1a')]===_0x603a('0x1b')&&typeof _0x534999[_0x603a('0x1c')]===_0x603a('0x1b');var _0x13e18e=_0x1f7d20[_0x603a('0x1d')];var _0x5e7460=_0x3f2f16?0x0:_0x534999[_0x603a('0x1a')];var _0x23f700=_0x3f2f16?_0x1f7d20[_0x603a('0x1d')]:_0x534999[_0x603a('0x1a')]+_0x534999[_0x603a('0x1c')];var _0x4ebe0b;if(_0x23f700>=_0x13e18e){_0x23f700=_0x13e18e;_0x4ebe0b=0xc8;}else{_0x4ebe0b=0xce;}_0x6514a3['status'](_0x4ebe0b);return _0x6514a3[_0x603a('0x1e')](_0x603a('0x1f'),_0x5e7460+'-'+_0x23f700+'/'+_0x13e18e)[_0x603a('0x19')](_0x1f7d20);}return null;};}function patchUpdates(_0xa8b049){return function(_0x26c036){try{jsonpatch['apply'](_0x26c036,_0xa8b049,!![]);}catch(_0x333e24){return BPromise['reject'](_0x333e24);}return _0x26c036[_0x603a('0x20')]();};}function saveUpdates(_0x2e7f47,_0x2e5f61){return function(_0x7fc3f){if(_0x7fc3f){return _0x7fc3f[_0x603a('0x21')](_0x2e7f47)[_0x603a('0x22')](function(_0x27c438){return _0x27c438;});}return null;};}function removeEntity(_0x27a009,_0xbfa436){return function(_0x3dc3dd){if(_0x3dc3dd){return _0x3dc3dd[_0x603a('0x23')]()['then'](function(){_0x27a009[_0x603a('0x17')](0xcc)[_0x603a('0x18')]();});}};}function handleEntityNotFound(_0x17fe1e,_0x367202){return function(_0x24a9af){if(!_0x24a9af){_0x17fe1e['sendStatus'](0x194);}return _0x24a9af;};}function handleError(_0x373dcc,_0x26af71){_0x26af71=_0x26af71||0x1f4;return function(_0x5e4e02){logger[_0x603a('0x24')](_0x5e4e02[_0x603a('0x25')]);if(_0x5e4e02[_0x603a('0x26')]){delete _0x5e4e02[_0x603a('0x26')];}_0x373dcc[_0x603a('0x17')](_0x26af71)[_0x603a('0x27')](_0x5e4e02);};}exports[_0x603a('0x28')]=function(_0x40df62,_0x18f18b){var _0x27e142={},_0x286616={},_0x376200={'count':0x0,'rows':[]};var _0x34c2ef=_['map'](db[_0x603a('0x29')][_0x603a('0x2a')],function(_0x326daf){return{'name':_0x326daf[_0x603a('0x2b')],'type':_0x326daf[_0x603a('0x2c')][_0x603a('0x2d')]};});_0x286616['model']=_[_0x603a('0x2e')](_0x34c2ef,_0x603a('0x26'));_0x286616[_0x603a('0x2f')]=_['keys'](_0x40df62[_0x603a('0x2f')]);_0x286616['filters']=_[_0x603a('0x30')](_0x286616[_0x603a('0x31')],_0x286616[_0x603a('0x2f')]);_0x27e142['attributes']=_[_0x603a('0x30')](_0x286616['model'],qs[_0x603a('0x32')](_0x40df62[_0x603a('0x2f')][_0x603a('0x32')]));_0x27e142[_0x603a('0x33')]=_0x27e142[_0x603a('0x33')]['length']?_0x27e142['attributes']:_0x286616['model'];if(!_0x40df62[_0x603a('0x2f')][_0x603a('0x34')](_0x603a('0x35'))){_0x27e142[_0x603a('0x1c')]=qs[_0x603a('0x1c')](_0x40df62[_0x603a('0x2f')][_0x603a('0x1c')]);_0x27e142[_0x603a('0x1a')]=qs[_0x603a('0x1a')](_0x40df62['query']['offset']);}_0x27e142[_0x603a('0x36')]=qs[_0x603a('0x37')](_0x40df62[_0x603a('0x2f')]['sort']);_0x27e142['where']=qs[_0x603a('0x38')](_[_0x603a('0x39')](_0x40df62[_0x603a('0x2f')],_0x286616['filters']),_0x34c2ef);if(_0x40df62['query'][_0x603a('0x3a')]){_0x27e142[_0x603a('0x3b')]=_[_0x603a('0x3c')](_0x27e142[_0x603a('0x3b')],{'$or':_[_0x603a('0x2e')](_0x34c2ef,function(_0x5227ec){if(_0x5227ec[_0x603a('0x2c')]!==_0x603a('0x3d')){var _0xdd5cd2={};_0xdd5cd2[_0x5227ec['name']]={'$like':'%'+_0x40df62['query']['filter']+'%'};return _0xdd5cd2;}})});}_0x27e142=_[_0x603a('0x3c')]({},_0x27e142,_0x40df62['options']);var _0x9dfcc7={'where':_0x27e142['where']};return db['ZendeskField'][_0x603a('0x1d')](_0x9dfcc7)['then'](function(_0x3bd55f){_0x376200[_0x603a('0x1d')]=_0x3bd55f;if(_0x40df62['query'][_0x603a('0x3e')]){_0x27e142['include']=[{'all':!![]}];}return db[_0x603a('0x29')]['findAll'](_0x27e142);})[_0x603a('0x22')](function(_0x3d8e72){_0x376200[_0x603a('0x3f')]=_0x3d8e72;return _0x376200;})[_0x603a('0x22')](respondWithFilteredResult(_0x18f18b,_0x27e142))['catch'](handleError(_0x18f18b,null));};exports[_0x603a('0x40')]=function(_0x41676d,_0x3cff73){var _0x1a6912={'raw':!![],'where':{'id':_0x41676d[_0x603a('0x41')]['id']}},_0x8fc5ca={};_0x8fc5ca[_0x603a('0x31')]=_[_0x603a('0x42')](db[_0x603a('0x29')][_0x603a('0x2a')]);_0x8fc5ca[_0x603a('0x2f')]=_[_0x603a('0x42')](_0x41676d['query']);_0x8fc5ca[_0x603a('0x38')]=_['intersection'](_0x8fc5ca['model'],_0x8fc5ca[_0x603a('0x2f')]);_0x1a6912[_0x603a('0x33')]=_[_0x603a('0x30')](_0x8fc5ca['model'],qs['fields'](_0x41676d[_0x603a('0x2f')][_0x603a('0x32')]));_0x1a6912['attributes']=_0x1a6912['attributes']['length']?_0x1a6912[_0x603a('0x33')]:_0x8fc5ca[_0x603a('0x31')];if(_0x41676d[_0x603a('0x2f')][_0x603a('0x3e')]){_0x1a6912['include']=[{'all':!![]}];}_0x1a6912=_[_0x603a('0x3c')]({},_0x1a6912,_0x41676d[_0x603a('0x43')]);return db[_0x603a('0x29')]['find'](_0x1a6912)[_0x603a('0x22')](handleEntityNotFound(_0x3cff73,null))[_0x603a('0x22')](respondWithResult(_0x3cff73,null))[_0x603a('0x44')](handleError(_0x3cff73,null));};exports[_0x603a('0x45')]=function(_0x1428de,_0x42b229){return db['ZendeskField'][_0x603a('0x45')](_0x1428de[_0x603a('0x46')],{})['then'](respondWithResult(_0x42b229,0xc9))[_0x603a('0x44')](handleError(_0x42b229,null));};exports[_0x603a('0x21')]=function(_0x2064a7,_0x50069a){if(_0x2064a7[_0x603a('0x46')]['id']){delete _0x2064a7['body']['id'];}return db[_0x603a('0x29')][_0x603a('0x47')]({'where':{'id':_0x2064a7[_0x603a('0x41')]['id']}})[_0x603a('0x22')](handleEntityNotFound(_0x50069a,null))[_0x603a('0x22')](saveUpdates(_0x2064a7[_0x603a('0x46')],null))[_0x603a('0x22')](respondWithResult(_0x50069a,null))[_0x603a('0x44')](handleError(_0x50069a,null));};exports[_0x603a('0x23')]=function(_0x3f528b,_0x1e4e5e){return db['ZendeskField'][_0x603a('0x47')]({'where':{'id':_0x3f528b[_0x603a('0x41')]['id']}})[_0x603a('0x22')](handleEntityNotFound(_0x1e4e5e,null))[_0x603a('0x22')](removeEntity(_0x1e4e5e,null))['catch'](handleError(_0x1e4e5e,null));};
\ No newline at end of file
index 585d9ea..6b74a50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x056f=['moment','bluebird','request-promise','rimraf','../../config/environment','./intZendeskField.attributes','exports','ZendeskField','idField','FieldId','util','../../config/logger','api'];(function(_0x488a75,_0x1e66ab){var _0x5b5794=function(_0x1c5e8f){while(--_0x1c5e8f){_0x488a75['push'](_0x488a75['shift']());}};_0x5b5794(++_0x1e66ab);}(_0x056f,0x1aa));var _0xf056=function(_0x477085,_0x5c8bbf){_0x477085=_0x477085-0x0;var _0x5e2c7e=_0x056f[_0x477085];return _0x5e2c7e;};'use strict';var _=require('lodash');var util=require(_0xf056('0x0'));var logger=require(_0xf056('0x1'))(_0xf056('0x2'));var moment=require(_0xf056('0x3'));var BPromise=require(_0xf056('0x4'));var rp=require(_0xf056('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf056('0x6'));var config=require(_0xf056('0x7'));var attributes=require(_0xf056('0x8'));module[_0xf056('0x9')]=function(_0x3ae2b0,_0x28ebeb){return _0x3ae2b0['define'](_0xf056('0xa'),attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':'zendesk_unique_index','fields':[_0xf056('0xb'),_0xf056('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3d7a=['path','rimraf','../../config/environment','./intZendeskField.attributes','exports','ZendeskField','int_zendesk_fields','zendesk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x3e4670,_0x190161){var _0x4972b6=function(_0x373ce4){while(--_0x373ce4){_0x3e4670['push'](_0x3e4670['shift']());}};_0x4972b6(++_0x190161);}(_0x3d7a,0xd6));var _0xa3d7=function(_0x1c7137,_0x4c7c26){_0x1c7137=_0x1c7137-0x0;var _0xeb4432=_0x3d7a[_0x1c7137];return _0xeb4432;};'use strict';var _=require(_0xa3d7('0x0'));var util=require(_0xa3d7('0x1'));var logger=require(_0xa3d7('0x2'))(_0xa3d7('0x3'));var moment=require(_0xa3d7('0x4'));var BPromise=require(_0xa3d7('0x5'));var rp=require(_0xa3d7('0x6'));var fs=require('fs');var path=require(_0xa3d7('0x7'));var rimraf=require(_0xa3d7('0x8'));var config=require(_0xa3d7('0x9'));var attributes=require(_0xa3d7('0xa'));module[_0xa3d7('0xb')]=function(_0x2eb05f,_0x39ab2e){return _0x2eb05f['define'](_0xa3d7('0xc'),attributes,{'tableName':_0xa3d7('0xd'),'paranoid':![],'indexes':[{'name':_0xa3d7('0xe'),'fields':[_0xa3d7('0xf'),_0xa3d7('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index c0b0d15..159897d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26a5=['debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ZendeskField,\x20%s,\x20%s'];(function(_0x754fd2,_0x27ac7d){var _0x1d7dbc=function(_0x122da9){while(--_0x122da9){_0x754fd2['push'](_0x754fd2['shift']());}};_0x1d7dbc(++_0x27ac7d);}(_0x26a5,0xbf));var _0x526a=function(_0x32b634,_0x4a83a7){_0x32b634=_0x32b634-0x0;var _0x245a0e=_0x26a5[_0x32b634];return _0x245a0e;};'use strict';var _=require(_0x526a('0x0'));var util=require(_0x526a('0x1'));var moment=require(_0x526a('0x2'));var BPromise=require(_0x526a('0x3'));var rs=require(_0x526a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x526a('0x5'))['db'];var utils=require(_0x526a('0x6'));var logger=require(_0x526a('0x7'))(_0x526a('0x8'));var config=require(_0x526a('0x9'));var jayson=require(_0x526a('0xa'));var client=jayson[_0x526a('0xb')][_0x526a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x39e643,_0x588d1a,_0x3ff689){return new BPromise(function(_0x208078,_0x45ba7c){return client['request'](_0x39e643,_0x3ff689)[_0x526a('0xd')](function(_0x14826d){logger[_0x526a('0xe')](_0x526a('0xf'),_0x588d1a,'request\x20sent');logger[_0x526a('0x10')](_0x526a('0x11'),_0x588d1a,'request\x20sent',JSON[_0x526a('0x12')](_0x14826d));if(_0x14826d[_0x526a('0x13')]){if(_0x14826d[_0x526a('0x13')][_0x526a('0x14')]===0x1f4){logger[_0x526a('0x13')](_0x526a('0xf'),_0x588d1a,_0x14826d[_0x526a('0x13')][_0x526a('0x15')]);return _0x45ba7c(_0x14826d[_0x526a('0x13')]['message']);}logger['error'](_0x526a('0xf'),_0x588d1a,_0x14826d[_0x526a('0x13')][_0x526a('0x15')]);return _0x208078(_0x14826d[_0x526a('0x13')][_0x526a('0x15')]);}else{logger['info']('ZendeskField,\x20%s,\x20%s',_0x588d1a,'request\x20sent');_0x208078(_0x14826d['result'][_0x526a('0x15')]);}})[_0x526a('0x16')](function(_0x498eff){logger[_0x526a('0x13')]('ZendeskField,\x20%s,\x20%s',_0x588d1a,_0x498eff);_0x45ba7c(_0x498eff);});});}
\ No newline at end of file
+var _0x9233=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','ZendeskField,\x20%s,\x20%s','debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result'];(function(_0x1ba14f,_0x370fc2){var _0x23ca83=function(_0x41ee8b){while(--_0x41ee8b){_0x1ba14f['push'](_0x1ba14f['shift']());}};_0x23ca83(++_0x370fc2);}(_0x9233,0x96));var _0x3923=function(_0x4dcf3a,_0xa0d121){_0x4dcf3a=_0x4dcf3a-0x0;var _0x31cc5f=_0x9233[_0x4dcf3a];return _0x31cc5f;};'use strict';var _=require(_0x3923('0x0'));var util=require(_0x3923('0x1'));var moment=require(_0x3923('0x2'));var BPromise=require(_0x3923('0x3'));var rs=require(_0x3923('0x4'));var fs=require('fs');var Redis=require(_0x3923('0x5'));var db=require(_0x3923('0x6'))['db'];var utils=require(_0x3923('0x7'));var logger=require(_0x3923('0x8'))('rpc');var config=require(_0x3923('0x9'));var jayson=require(_0x3923('0xa'));var client=jayson[_0x3923('0xb')][_0x3923('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x55e23f,_0x50e165,_0x46eefc){return new BPromise(function(_0x297ab0,_0x35fddc){return client[_0x3923('0xd')](_0x55e23f,_0x46eefc)[_0x3923('0xe')](function(_0x5bf8aa){logger[_0x3923('0xf')](_0x3923('0x10'),_0x50e165,'request\x20sent');logger[_0x3923('0x11')](_0x3923('0x12'),_0x50e165,'request\x20sent',JSON[_0x3923('0x13')](_0x5bf8aa));if(_0x5bf8aa[_0x3923('0x14')]){if(_0x5bf8aa['error'][_0x3923('0x15')]===0x1f4){logger[_0x3923('0x14')](_0x3923('0x10'),_0x50e165,_0x5bf8aa[_0x3923('0x14')][_0x3923('0x16')]);return _0x35fddc(_0x5bf8aa[_0x3923('0x14')]['message']);}logger[_0x3923('0x14')]('ZendeskField,\x20%s,\x20%s',_0x50e165,_0x5bf8aa[_0x3923('0x14')]['message']);return _0x297ab0(_0x5bf8aa[_0x3923('0x14')][_0x3923('0x16')]);}else{logger[_0x3923('0xf')](_0x3923('0x10'),_0x50e165,_0x3923('0x17'));_0x297ab0(_0x5bf8aa[_0x3923('0x18')][_0x3923('0x16')]);}})['catch'](function(_0x1db49d){logger[_0x3923('0x14')](_0x3923('0x10'),_0x50e165,_0x1db49d);_0x35fddc(_0x1db49d);});});}
\ No newline at end of file
index 27128fd..10c8e66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3820=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','index','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','update','delete','destroy','multer'];(function(_0x9f547c,_0x3455f8){var _0x488ac9=function(_0x1a7b63){while(--_0x1a7b63){_0x9f547c['push'](_0x9f547c['shift']());}};_0x488ac9(++_0x3455f8);}(_0x3820,0x92));var _0x0382=function(_0x30b0d8,_0x57470c){_0x30b0d8=_0x30b0d8-0x0;var _0x459c09=_0x3820[_0x30b0d8];return _0x459c09;};'use strict';var multer=require(_0x0382('0x0'));var util=require('util');var path=require(_0x0382('0x1'));var timeout=require(_0x0382('0x2'));var express=require('express');var router=express[_0x0382('0x3')]();var fs_extra=require(_0x0382('0x4'));var auth=require(_0x0382('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x0382('0x6'));var controller=require('./intZohoAccount.controller');router[_0x0382('0x7')]('/',auth['isAuthenticated'](),controller[_0x0382('0x8')]);router['get'](_0x0382('0x9'),auth[_0x0382('0xa')](),controller[_0x0382('0xb')]);router[_0x0382('0x7')](_0x0382('0xc'),auth[_0x0382('0xa')](),controller[_0x0382('0xd')]);router[_0x0382('0x7')](_0x0382('0xe'),auth['isAuthenticated'](),controller[_0x0382('0xf')]);router[_0x0382('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0382('0x10')](_0x0382('0xc'),auth[_0x0382('0xa')](),controller[_0x0382('0x11')]);router['put'](_0x0382('0x9'),auth['isAuthenticated'](),controller[_0x0382('0x12')]);router[_0x0382('0x13')]('/:id',auth[_0x0382('0xa')](),controller[_0x0382('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xe76b=['/:id/configurations','getConfigurations','getFields','post','addConfiguration','put','update','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','/:id'];(function(_0x4aa564,_0x1bba00){var _0x19a7c7=function(_0x4d56fd){while(--_0x4d56fd){_0x4aa564['push'](_0x4aa564['shift']());}};_0x19a7c7(++_0x1bba00);}(_0xe76b,0x72));var _0xbe76=function(_0x1005d4,_0x5199ab){_0x1005d4=_0x1005d4-0x0;var _0x421977=_0xe76b[_0x1005d4];return _0x421977;};'use strict';var multer=require('multer');var util=require(_0xbe76('0x0'));var path=require(_0xbe76('0x1'));var timeout=require(_0xbe76('0x2'));var express=require(_0xbe76('0x3'));var router=express[_0xbe76('0x4')]();var fs_extra=require(_0xbe76('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xbe76('0x6'));var config=require(_0xbe76('0x7'));var controller=require(_0xbe76('0x8'));router[_0xbe76('0x9')]('/',auth[_0xbe76('0xa')](),controller['index']);router['get'](_0xbe76('0xb'),auth[_0xbe76('0xa')](),controller['show']);router[_0xbe76('0x9')](_0xbe76('0xc'),auth[_0xbe76('0xa')](),controller[_0xbe76('0xd')]);router[_0xbe76('0x9')]('/:id/fields',auth[_0xbe76('0xa')](),controller[_0xbe76('0xe')]);router[_0xbe76('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xbe76('0xf')]('/:id/configurations',auth['isAuthenticated'](),controller[_0xbe76('0x10')]);router[_0xbe76('0x11')](_0xbe76('0xb'),auth[_0xbe76('0xa')](),controller[_0xbe76('0x12')]);router['delete']('/:id',auth[_0xbe76('0xa')](),controller[_0xbe76('0x13')]);module[_0xbe76('0x14')]=router;
\ No newline at end of file
index 07574ce..fe28488 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b3=['STRING','exports'];(function(_0x41e67a,_0x555fd2){var _0x33f606=function(_0x3d2c80){while(--_0x3d2c80){_0x41e67a['push'](_0x41e67a['shift']());}};_0x33f606(++_0x555fd2);}(_0xe5b3,0x133));var _0x3e5b=function(_0x51784a,_0x3663d7){_0x51784a=_0x51784a-0x0;var _0x42b922=_0xe5b3[_0x51784a];return _0x42b922;};'use strict';var Sequelize=require('sequelize');module[_0x3e5b('0x0')]={'name':{'type':Sequelize[_0x3e5b('0x1')]},'description':{'type':Sequelize[_0x3e5b('0x1')]},'host':{'type':Sequelize[_0x3e5b('0x1')]},'zone':{'type':Sequelize[_0x3e5b('0x1')]},'clientId':{'type':Sequelize[_0x3e5b('0x1')]},'clientSecret':{'type':Sequelize[_0x3e5b('0x1')]},'serverUrl':{'type':Sequelize[_0x3e5b('0x1')],'allowNull':![]},'code':{'type':Sequelize[_0x3e5b('0x1')]},'refreshToken':{'type':Sequelize[_0x3e5b('0x1')]}};
\ No newline at end of file
+var _0x4ea3=['STRING','sequelize','exports'];(function(_0x2679b0,_0x2a1a6f){var _0x192302=function(_0x258202){while(--_0x258202){_0x2679b0['push'](_0x2679b0['shift']());}};_0x192302(++_0x2a1a6f);}(_0x4ea3,0x70));var _0x34ea=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x4ea3[_0x6c993a];return _0x27f547;};'use strict';var Sequelize=require(_0x34ea('0x0'));module[_0x34ea('0x1')]={'name':{'type':Sequelize[_0x34ea('0x2')]},'description':{'type':Sequelize[_0x34ea('0x2')]},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0x34ea('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0x34ea('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x34ea('0x2')]}};
\ No newline at end of file
index cecf8a4..7b81117 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x829c=['../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','set','Content-Range','save','then','status','stack','name','send','index','map','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','ZohoAccount','includeAll','include','catch','show','params','rawAttributes','find','create','body','destroy','getConfigurations','ZohoConfiguration','findOne','AccountId','Subjects','channel','Descriptions','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','serverUrl','code','host','zoho.eu','com','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','format','https://www.zohoapis.%s/crm/v2/settings/fields','response','error','message','Subject','Description','WhoId','Call_Start_Time','Call_Type','remove','includes','push','display_label','custom_field','data_type','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util'];(function(_0x381589,_0x27a707){var _0x2a075d=function(_0x4ea19d){while(--_0x4ea19d){_0x381589['push'](_0x381589['shift']());}};_0x2a075d(++_0x27a707);}(_0x829c,0x165));var _0xc829=function(_0x1a1ed2,_0x309fd2){_0x1a1ed2=_0x1a1ed2-0x0;var _0x5e11d5=_0x829c[_0x1a1ed2];return _0x5e11d5;};'use strict';var emlformat=require(_0xc829('0x0'));var rimraf=require(_0xc829('0x1'));var zipdir=require(_0xc829('0x2'));var jsonpatch=require(_0xc829('0x3'));var rp=require(_0xc829('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc829('0x5'));var util=require(_0xc829('0x6'));var path=require(_0xc829('0x7'));var sox=require(_0xc829('0x8'));var csv=require(_0xc829('0x9'));var ejs=require(_0xc829('0xa'));var fs=require('fs');var fs_extra=require(_0xc829('0xb'));var _=require(_0xc829('0xc'));var squel=require(_0xc829('0xd'));var crypto=require(_0xc829('0xe'));var jsforce=require(_0xc829('0xf'));var deskjs=require(_0xc829('0x10'));var toCsv=require(_0xc829('0x9'));var querystring=require(_0xc829('0x11'));var Papa=require(_0xc829('0x12'));var Redis=require(_0xc829('0x13'));var authService=require(_0xc829('0x14'));var qs=require(_0xc829('0x15'));var as=require(_0xc829('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc829('0x17'))(_0xc829('0x18'));var utils=require('../../config/utils');var config=require(_0xc829('0x19'));var licenseUtil=require(_0xc829('0x1a'));var db=require(_0xc829('0x1b'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x52fcc,_0x354aef){_0x354aef=_0x354aef||0xcc;return function(_0x389b81){if(_0x389b81){return _0x52fcc[_0xc829('0x1c')](_0x354aef);}return _0x52fcc['status'](_0x354aef)[_0xc829('0x1d')]();};}function respondWithResult(_0x369bc3,_0x3861a2){_0x3861a2=_0x3861a2||0xc8;return function(_0x578427){if(_0x578427){return _0x369bc3['status'](_0x3861a2)[_0xc829('0x1e')](_0x578427);}};}function respondWithFilteredResult(_0x2848dc,_0x450558){return function(_0x1a857d){if(_0x1a857d){var _0x3ce990=typeof _0x450558[_0xc829('0x1f')]===_0xc829('0x20')&&typeof _0x450558[_0xc829('0x21')]===_0xc829('0x20');var _0x2a1e4f=_0x1a857d['count'];var _0x31a230=_0x3ce990?0x0:_0x450558[_0xc829('0x1f')];var _0x30af08=_0x3ce990?_0x1a857d[_0xc829('0x22')]:_0x450558['offset']+_0x450558['limit'];var _0x1e2696;if(_0x30af08>=_0x2a1e4f){_0x30af08=_0x2a1e4f;_0x1e2696=0xc8;}else{_0x1e2696=0xce;}_0x2848dc['status'](_0x1e2696);return _0x2848dc[_0xc829('0x23')](_0xc829('0x24'),_0x31a230+'-'+_0x30af08+'/'+_0x2a1e4f)[_0xc829('0x1e')](_0x1a857d);}return null;};}function patchUpdates(_0x16bac9){return function(_0x4050b7){try{jsonpatch['apply'](_0x4050b7,_0x16bac9,!![]);}catch(_0x3c4323){return BPromise['reject'](_0x3c4323);}return _0x4050b7[_0xc829('0x25')]();};}function saveUpdates(_0x20788e,_0x2a06fb){return function(_0xe70f37){if(_0xe70f37){return _0xe70f37['update'](_0x20788e)['then'](function(_0x9e0d76){return _0x9e0d76;});}return null;};}function removeEntity(_0x734ca2,_0x14b568){return function(_0x2834fb){if(_0x2834fb){return _0x2834fb['destroy']()[_0xc829('0x26')](function(){_0x734ca2[_0xc829('0x27')](0xcc)['end']();});}};}function handleEntityNotFound(_0x50532d,_0x387593){return function(_0x1aeb5d){if(!_0x1aeb5d){_0x50532d['sendStatus'](0x194);}return _0x1aeb5d;};}function handleError(_0x235063,_0x153361){_0x153361=_0x153361||0x1f4;return function(_0x746c05){logger['error'](_0x746c05[_0xc829('0x28')]);if(_0x746c05[_0xc829('0x29')]){delete _0x746c05['name'];}_0x235063[_0xc829('0x27')](_0x153361)[_0xc829('0x2a')](_0x746c05);};}exports[_0xc829('0x2b')]=function(_0x4f64e2,_0x9764d7){var _0x342ab3={},_0x37ec36={},_0x304767={'count':0x0,'rows':[]};var _0x57a73d=_[_0xc829('0x2c')](db['ZohoAccount']['rawAttributes'],function(_0x19c683){return{'name':_0x19c683['fieldName'],'type':_0x19c683[_0xc829('0x2d')][_0xc829('0x2e')]};});_0x37ec36[_0xc829('0x2f')]=_['map'](_0x57a73d,_0xc829('0x29'));_0x37ec36[_0xc829('0x30')]=_[_0xc829('0x31')](_0x4f64e2['query']);_0x37ec36[_0xc829('0x32')]=_[_0xc829('0x33')](_0x37ec36[_0xc829('0x2f')],_0x37ec36[_0xc829('0x30')]);_0x342ab3['attributes']=_[_0xc829('0x33')](_0x37ec36[_0xc829('0x2f')],qs['fields'](_0x4f64e2[_0xc829('0x30')][_0xc829('0x34')]));_0x342ab3[_0xc829('0x35')]=_0x342ab3[_0xc829('0x35')][_0xc829('0x36')]?_0x342ab3[_0xc829('0x35')]:_0x37ec36[_0xc829('0x2f')];if(!_0x4f64e2[_0xc829('0x30')][_0xc829('0x37')](_0xc829('0x38'))){_0x342ab3['limit']=qs[_0xc829('0x21')](_0x4f64e2[_0xc829('0x30')][_0xc829('0x21')]);_0x342ab3[_0xc829('0x1f')]=qs[_0xc829('0x1f')](_0x4f64e2[_0xc829('0x30')][_0xc829('0x1f')]);}_0x342ab3[_0xc829('0x39')]=qs['sort'](_0x4f64e2['query'][_0xc829('0x3a')]);_0x342ab3['where']=qs[_0xc829('0x32')](_[_0xc829('0x3b')](_0x4f64e2['query'],_0x37ec36['filters']),_0x57a73d);if(_0x4f64e2[_0xc829('0x30')][_0xc829('0x3c')]){_0x342ab3[_0xc829('0x3d')]=_[_0xc829('0x3e')](_0x342ab3[_0xc829('0x3d')],{'$or':_[_0xc829('0x2c')](_0x57a73d,function(_0x2ea695){if(_0x2ea695[_0xc829('0x2d')]!==_0xc829('0x3f')){var _0x484349={};_0x484349[_0x2ea695[_0xc829('0x29')]]={'$like':'%'+_0x4f64e2['query']['filter']+'%'};return _0x484349;}})});}_0x342ab3=_['merge']({},_0x342ab3,_0x4f64e2[_0xc829('0x40')]);var _0x455ea2={'where':_0x342ab3[_0xc829('0x3d')]};return db[_0xc829('0x41')][_0xc829('0x22')](_0x455ea2)['then'](function(_0x2e97a9){_0x304767[_0xc829('0x22')]=_0x2e97a9;if(_0x4f64e2[_0xc829('0x30')][_0xc829('0x42')]){_0x342ab3[_0xc829('0x43')]=[{'all':!![]}];}return db['ZohoAccount']['findAll'](_0x342ab3);})['then'](function(_0x2273bf){_0x304767['rows']=_0x2273bf;return _0x304767;})['then'](respondWithFilteredResult(_0x9764d7,_0x342ab3))[_0xc829('0x44')](handleError(_0x9764d7,null));};exports[_0xc829('0x45')]=function(_0x3411a9,_0x6c4067){var _0x3e7163={'raw':![],'where':{'id':_0x3411a9[_0xc829('0x46')]['id']}},_0x3c152d={};_0x3c152d[_0xc829('0x2f')]=_['keys'](db['ZohoAccount'][_0xc829('0x47')]);_0x3c152d[_0xc829('0x30')]=_[_0xc829('0x31')](_0x3411a9[_0xc829('0x30')]);_0x3c152d[_0xc829('0x32')]=_['intersection'](_0x3c152d['model'],_0x3c152d['query']);_0x3e7163[_0xc829('0x35')]=_[_0xc829('0x33')](_0x3c152d[_0xc829('0x2f')],qs[_0xc829('0x34')](_0x3411a9[_0xc829('0x30')]['fields']));_0x3e7163[_0xc829('0x35')]=_0x3e7163[_0xc829('0x35')]['length']?_0x3e7163[_0xc829('0x35')]:_0x3c152d['model'];if(_0x3411a9[_0xc829('0x30')][_0xc829('0x42')]){_0x3e7163['include']=[{'all':!![]}];}_0x3e7163=_['merge']({},_0x3e7163,_0x3411a9[_0xc829('0x40')]);return db[_0xc829('0x41')][_0xc829('0x48')](_0x3e7163)[_0xc829('0x26')](handleEntityNotFound(_0x6c4067,null))['then'](respondWithResult(_0x6c4067,null))['catch'](handleError(_0x6c4067,null));};exports[_0xc829('0x49')]=function(_0xf09a45,_0x34c802){return db[_0xc829('0x41')][_0xc829('0x49')](_0xf09a45[_0xc829('0x4a')],{})['then'](respondWithResult(_0x34c802,0xc9))[_0xc829('0x44')](handleError(_0x34c802,null));};exports['update']=function(_0x4d72f1,_0x194197){if(_0x4d72f1[_0xc829('0x4a')]['id']){delete _0x4d72f1[_0xc829('0x4a')]['id'];}return db[_0xc829('0x41')][_0xc829('0x48')]({'where':{'id':_0x4d72f1[_0xc829('0x46')]['id']}})[_0xc829('0x26')](handleEntityNotFound(_0x194197,null))[_0xc829('0x26')](saveUpdates(_0x4d72f1[_0xc829('0x4a')],null))['then'](respondWithResult(_0x194197,null))[_0xc829('0x44')](handleError(_0x194197,null));};exports[_0xc829('0x4b')]=function(_0x179284,_0x2e4ad7){return db[_0xc829('0x41')][_0xc829('0x48')]({'where':{'id':_0x179284[_0xc829('0x46')]['id']}})['then'](handleEntityNotFound(_0x2e4ad7,null))[_0xc829('0x26')](removeEntity(_0x2e4ad7,null))[_0xc829('0x44')](handleError(_0x2e4ad7,null));};exports[_0xc829('0x4c')]=function(_0x508ed1,_0x4e9dd6,_0x26879b){var _0x5cae4e={};var _0x19225b={};var _0x466974;var _0x5e90f2;return db['ZohoAccount']['findOne']({'where':{'id':_0x508ed1['params']['id']}})[_0xc829('0x26')](handleEntityNotFound(_0x4e9dd6,null))[_0xc829('0x26')](function(_0x632b56){if(_0x632b56){_0x466974=_0x632b56;_0x19225b[_0xc829('0x2f')]=_[_0xc829('0x31')](db[_0xc829('0x4d')]['rawAttributes']);_0x19225b[_0xc829('0x30')]=_[_0xc829('0x31')](_0x508ed1[_0xc829('0x30')]);_0x19225b[_0xc829('0x32')]=_[_0xc829('0x33')](_0x19225b[_0xc829('0x2f')],_0x19225b['query']);_0x5cae4e[_0xc829('0x35')]=_['intersection'](_0x19225b[_0xc829('0x2f')],qs[_0xc829('0x34')](_0x508ed1[_0xc829('0x30')]['fields']));_0x5cae4e[_0xc829('0x35')]=_0x5cae4e[_0xc829('0x35')][_0xc829('0x36')]?_0x5cae4e[_0xc829('0x35')]:_0x19225b[_0xc829('0x2f')];_0x5cae4e[_0xc829('0x39')]=qs['sort'](_0x508ed1['query'][_0xc829('0x3a')]);_0x5cae4e['where']=qs['filters'](_[_0xc829('0x3b')](_0x508ed1[_0xc829('0x30')],_0x19225b[_0xc829('0x32')]));if(_0x508ed1[_0xc829('0x30')][_0xc829('0x3c')]){_0x5cae4e[_0xc829('0x3d')]=_[_0xc829('0x3e')](_0x5cae4e['where'],{'$or':_[_0xc829('0x2c')](_0x5cae4e[_0xc829('0x35')],function(_0x128463){var _0x79b2ca={};_0x79b2ca[_0x128463]={'$like':'%'+_0x508ed1[_0xc829('0x30')][_0xc829('0x3c')]+'%'};return _0x79b2ca;})});}_0x5cae4e=_[_0xc829('0x3e')]({},_0x5cae4e,_0x508ed1[_0xc829('0x40')]);return _0x466974[_0xc829('0x4c')](_0x5cae4e);}})[_0xc829('0x26')](function(_0x3dddcd){if(_0x3dddcd){_0x5e90f2=_0x3dddcd[_0xc829('0x36')];if(!_0x508ed1[_0xc829('0x30')][_0xc829('0x37')](_0xc829('0x38'))){_0x5cae4e['limit']=qs[_0xc829('0x21')](_0x508ed1[_0xc829('0x30')]['limit']);_0x5cae4e[_0xc829('0x1f')]=qs['offset'](_0x508ed1[_0xc829('0x30')][_0xc829('0x1f')]);}return _0x466974[_0xc829('0x4c')](_0x5cae4e);}})[_0xc829('0x26')](function(_0x58db79){if(_0x58db79){return _0x58db79?{'count':_0x5e90f2,'rows':_0x58db79}:null;}})[_0xc829('0x26')](respondWithResult(_0x4e9dd6,null))[_0xc829('0x44')](handleError(_0x4e9dd6,null));};exports['addConfiguration']=function(_0x62d9ee,_0xa6e45a,_0x33ca35){if(_0x62d9ee[_0xc829('0x4a')]['id']){delete _0x62d9ee[_0xc829('0x4a')]['id'];}return db[_0xc829('0x41')][_0xc829('0x4e')]({'where':{'id':_0x62d9ee[_0xc829('0x46')]['id']}})[_0xc829('0x26')](handleEntityNotFound(_0xa6e45a,null))[_0xc829('0x26')](function(_0x305861){if(_0x305861){_0x62d9ee[_0xc829('0x4a')][_0xc829('0x4f')]=_0x305861['id'];_0x62d9ee[_0xc829('0x4a')][_0xc829('0x50')]=integrations['getSubjects'](_0x62d9ee[_0xc829('0x4a')][_0xc829('0x51')],_0x62d9ee['body'][_0xc829('0x2d')]);_0x62d9ee['body'][_0xc829('0x52')]=integrations['getDescriptions'](_0x62d9ee[_0xc829('0x4a')][_0xc829('0x51')],_0x62d9ee[_0xc829('0x4a')][_0xc829('0x2d')]);return db['ZohoConfiguration']['create'](_0x62d9ee[_0xc829('0x4a')],{'include':[{'model':db[_0xc829('0x53')],'as':_0xc829('0x50')},{'model':db[_0xc829('0x53')],'as':'Descriptions'}]});}return null;})[_0xc829('0x26')](respondWithResult(_0xa6e45a,null))['catch'](handleError(_0xa6e45a,null));};function getAccessToken(_0x387d94){return new Promise(function(_0x73d67c,_0x50ebaa){var _0x839a48;switch(_0x387d94[_0xc829('0x54')]){case'US':_0x839a48=_0xc829('0x55');break;case'AU':_0x839a48=_0xc829('0x56');break;case'EU':_0x839a48='https://accounts.zoho.eu';break;case'IN':_0x839a48=_0xc829('0x57');break;case'CN':_0x839a48='https://accounts.zoho.com.cn';break;default:_0x839a48='https://accounts.zoho.eu';break;}var _0x11029b={'method':_0xc829('0x58'),'uri':_0x839a48+_0xc829('0x59'),'qs':{'refresh_token':_0x387d94[_0xc829('0x5a')],'client_id':_0x387d94[_0xc829('0x5b')],'client_secret':_0x387d94[_0xc829('0x5c')],'grant_type':_0xc829('0x5d')},'json':!![]};return rp(_0x11029b)['then'](function(_0x4dad19){if(_0x4dad19[_0xc829('0x5e')]){_0x73d67c(_0x4dad19['access_token']);}else{_0x50ebaa(_0xc829('0x5f'));}})[_0xc829('0x44')](function(_0x83a12d){_0x50ebaa(_0x83a12d);});});}exports[_0xc829('0x60')]=function(_0x4da410,_0x513f7a,_0x4864c2){var _0x4b1d9c,_0x4f86e0,_0x27369d,_0x54e1b3,_0x153c72;return db[_0xc829('0x41')][_0xc829('0x4e')]({'where':{'id':_0x4da410['params']['id']},'attributes':['id','host',_0xc829('0x54'),_0xc829('0x5b'),'clientSecret',_0xc829('0x61'),_0xc829('0x62'),'refreshToken']})[_0xc829('0x26')](handleEntityNotFound(_0x513f7a,null))[_0xc829('0x26')](function(_0x1ff9ce){_0x153c72=_0x1ff9ce;_0x4b1d9c=_0x153c72[_0xc829('0x63')];_0x4f86e0=_0x4b1d9c===_0xc829('0x64')?'eu':_0xc829('0x65');_0x27369d=_0x153c72['serverUrl'];var _0xdbc226=_0x27369d[_0xc829('0x66')](-0x1);if(_0xdbc226==='/'||_0xdbc226==='\x5c'||_0xdbc226===':'){_0x27369d=_0x27369d[_0xc829('0x67')](0x0,_0x27369d[_0xc829('0x68')](_0xdbc226));}if(!_0x153c72[_0xc829('0x5a')]){throw new Error(_0xc829('0x69'));}return getAccessToken(_0x153c72);})['then'](function(_0x1f66d3){if(_0x1f66d3){return rp({'method':'GET','uri':util[_0xc829('0x6a')](_0xc829('0x6b'),_0x4f86e0),'qs':{'module':'Calls'},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x1f66d3},'json':!![]});}})[_0xc829('0x26')](function(_0xd61843){if(_0xd61843){if(_0xd61843[_0xc829('0x6c')]&&_0xd61843[_0xc829('0x6c')][_0xc829('0x6d')]){throw new Error(_0xd61843[_0xc829('0x6c')][_0xc829('0x6d')][_0xc829('0x6e')]);}var _0x709fa8=[];var _0x10d5e9=[];var _0x3c34f7=['Owner',_0xc829('0x6f'),_0xc829('0x70'),_0xc829('0x71'),'Call_Duration','Call_Result',_0xc829('0x72'),_0xc829('0x73')];_0x10d5e9=_[_0xc829('0x74')](_0xd61843['fields'],function(_0x4d0cb9){return _0x3c34f7[_0xc829('0x75')](_0x4d0cb9['api_name']);});for(var _0x42ca3c=0x0;_0x42ca3c<_0x10d5e9['length'];_0x42ca3c++){if(_0x10d5e9[_0x42ca3c]['system_mandatory']===![]){_0x709fa8[_0xc829('0x76')]({'id':_0x10d5e9[_0x42ca3c]['id'],'name':_0x10d5e9[_0x42ca3c][_0xc829('0x77')],'custom':_0x10d5e9[_0x42ca3c][_0xc829('0x78')],'options':_0x10d5e9[_0x42ca3c][_0xc829('0x79')]==='picklist'&&_0x10d5e9[_0x42ca3c][_0xc829('0x7a')][_0xc829('0x36')]>-0x1?_['map'](_0x10d5e9[_0x42ca3c]['pick_list_values'],function(_0x1b1211){return{'name':_0x1b1211,'value':_0x1b1211};}):[]});}}return{'count':_0x709fa8[_0xc829('0x36')],'rows':_0x709fa8};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x513f7a,null))[_0xc829('0x44')](function(_0x337f04){var _0x4f1486=_0x4da410['query'][_0xc829('0x7b')]?0x1f4:_0x337f04[_0xc829('0x7c')]||0x1f4;logger['error'](_0xc829('0x7d'),_0xc829('0x60'),_0x4f1486,JSON[_0xc829('0x7e')](_0x337f04));delete _0x337f04[_0xc829('0x29')];if(_0x4f1486===0x191){_0x4f1486=0x190;}_0x513f7a['status'](_0x4f1486)['send'](_0x4da410[_0xc829('0x30')][_0xc829('0x7b')]?{'message':_0xc829('0x7f'),'statusCode':_0x337f04[_0xc829('0x7c')]}:_0x337f04);});};
\ No newline at end of file
+var _0xaa2e=['error','stack','send','map','ZohoAccount','key','name','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','include','findAll','catch','show','params','rawAttributes','includeAll','find','body','destroy','getConfigurations','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZohoConfiguration','create','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','clientId','clientSecret','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','serverUrl','code','refreshToken','com','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','Owner','Subject','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','push','display_label','custom_field','picklist','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','bluebird','mustache','util','path','sox','to-csv','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then'];(function(_0x33358a,_0x410ec6){var _0x4e9192=function(_0x10c78d){while(--_0x10c78d){_0x33358a['push'](_0x33358a['shift']());}};_0x4e9192(++_0x410ec6);}(_0xaa2e,0xdc));var _0xeaa2=function(_0xaae01a,_0x541a5a){_0xaae01a=_0xaae01a-0x0;var _0x3b6fee=_0xaa2e[_0xaae01a];return _0x3b6fee;};'use strict';var emlformat=require(_0xeaa2('0x0'));var rimraf=require(_0xeaa2('0x1'));var zipdir=require(_0xeaa2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xeaa2('0x3'));var Mustache=require(_0xeaa2('0x4'));var util=require(_0xeaa2('0x5'));var path=require(_0xeaa2('0x6'));var sox=require(_0xeaa2('0x7'));var csv=require(_0xeaa2('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xeaa2('0x9'));var jsforce=require(_0xeaa2('0xa'));var deskjs=require(_0xeaa2('0xb'));var toCsv=require('to-csv');var querystring=require(_0xeaa2('0xc'));var Papa=require(_0xeaa2('0xd'));var Redis=require(_0xeaa2('0xe'));var authService=require(_0xeaa2('0xf'));var qs=require(_0xeaa2('0x10'));var as=require(_0xeaa2('0x11'));var hardwareService=require(_0xeaa2('0x12'));var logger=require(_0xeaa2('0x13'))(_0xeaa2('0x14'));var utils=require(_0xeaa2('0x15'));var config=require(_0xeaa2('0x16'));var licenseUtil=require(_0xeaa2('0x17'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2ed08b,_0x5a8e2f){_0x5a8e2f=_0x5a8e2f||0xcc;return function(_0x1482a7){if(_0x1482a7){return _0x2ed08b[_0xeaa2('0x18')](_0x5a8e2f);}return _0x2ed08b[_0xeaa2('0x19')](_0x5a8e2f)[_0xeaa2('0x1a')]();};}function respondWithResult(_0x2f7308,_0x22505e){_0x22505e=_0x22505e||0xc8;return function(_0x10d456){if(_0x10d456){return _0x2f7308['status'](_0x22505e)[_0xeaa2('0x1b')](_0x10d456);}};}function respondWithFilteredResult(_0x472540,_0x7de39a){return function(_0x162101){if(_0x162101){var _0x497a73=typeof _0x7de39a[_0xeaa2('0x1c')]==='undefined'&&typeof _0x7de39a[_0xeaa2('0x1d')]===_0xeaa2('0x1e');var _0x441ddc=_0x162101[_0xeaa2('0x1f')];var _0x5c656a=_0x497a73?0x0:_0x7de39a['offset'];var _0x16da81=_0x497a73?_0x162101[_0xeaa2('0x1f')]:_0x7de39a[_0xeaa2('0x1c')]+_0x7de39a['limit'];var _0x4c08c3;if(_0x16da81>=_0x441ddc){_0x16da81=_0x441ddc;_0x4c08c3=0xc8;}else{_0x4c08c3=0xce;}_0x472540[_0xeaa2('0x19')](_0x4c08c3);return _0x472540[_0xeaa2('0x20')](_0xeaa2('0x21'),_0x5c656a+'-'+_0x16da81+'/'+_0x441ddc)['json'](_0x162101);}return null;};}function patchUpdates(_0x2abe53){return function(_0x4c8549){try{jsonpatch['apply'](_0x4c8549,_0x2abe53,!![]);}catch(_0x77e901){return BPromise[_0xeaa2('0x22')](_0x77e901);}return _0x4c8549[_0xeaa2('0x23')]();};}function saveUpdates(_0x4970e5,_0x4b8f06){return function(_0x26dc74){if(_0x26dc74){return _0x26dc74[_0xeaa2('0x24')](_0x4970e5)[_0xeaa2('0x25')](function(_0x605fdd){return _0x605fdd;});}return null;};}function removeEntity(_0x402d32,_0x190184){return function(_0x2df291){if(_0x2df291){return _0x2df291['destroy']()[_0xeaa2('0x25')](function(){_0x402d32['status'](0xcc)[_0xeaa2('0x1a')]();});}};}function handleEntityNotFound(_0xbdcd68,_0xdf9036){return function(_0x41e725){if(!_0x41e725){_0xbdcd68['sendStatus'](0x194);}return _0x41e725;};}function handleError(_0x1017fc,_0x56da34){_0x56da34=_0x56da34||0x1f4;return function(_0x16205c){logger[_0xeaa2('0x26')](_0x16205c[_0xeaa2('0x27')]);if(_0x16205c['name']){delete _0x16205c['name'];}_0x1017fc['status'](_0x56da34)[_0xeaa2('0x28')](_0x16205c);};}exports['index']=function(_0x27461f,_0x1a07d1){var _0x5cec7f={},_0x3e49f1={},_0x1450ae={'count':0x0,'rows':[]};var _0x2f5fb8=_[_0xeaa2('0x29')](db[_0xeaa2('0x2a')]['rawAttributes'],function(_0x37ae83){return{'name':_0x37ae83['fieldName'],'type':_0x37ae83['type'][_0xeaa2('0x2b')]};});_0x3e49f1['model']=_[_0xeaa2('0x29')](_0x2f5fb8,_0xeaa2('0x2c'));_0x3e49f1[_0xeaa2('0x2d')]=_[_0xeaa2('0x2e')](_0x27461f[_0xeaa2('0x2d')]);_0x3e49f1['filters']=_[_0xeaa2('0x2f')](_0x3e49f1[_0xeaa2('0x30')],_0x3e49f1[_0xeaa2('0x2d')]);_0x5cec7f[_0xeaa2('0x31')]=_['intersection'](_0x3e49f1[_0xeaa2('0x30')],qs[_0xeaa2('0x32')](_0x27461f[_0xeaa2('0x2d')]['fields']));_0x5cec7f[_0xeaa2('0x31')]=_0x5cec7f['attributes'][_0xeaa2('0x33')]?_0x5cec7f['attributes']:_0x3e49f1[_0xeaa2('0x30')];if(!_0x27461f[_0xeaa2('0x2d')][_0xeaa2('0x34')](_0xeaa2('0x35'))){_0x5cec7f[_0xeaa2('0x1d')]=qs[_0xeaa2('0x1d')](_0x27461f['query'][_0xeaa2('0x1d')]);_0x5cec7f[_0xeaa2('0x1c')]=qs[_0xeaa2('0x1c')](_0x27461f['query'][_0xeaa2('0x1c')]);}_0x5cec7f[_0xeaa2('0x36')]=qs['sort'](_0x27461f[_0xeaa2('0x2d')][_0xeaa2('0x37')]);_0x5cec7f[_0xeaa2('0x38')]=qs[_0xeaa2('0x39')](_[_0xeaa2('0x3a')](_0x27461f[_0xeaa2('0x2d')],_0x3e49f1[_0xeaa2('0x39')]),_0x2f5fb8);if(_0x27461f['query'][_0xeaa2('0x3b')]){_0x5cec7f['where']=_[_0xeaa2('0x3c')](_0x5cec7f[_0xeaa2('0x38')],{'$or':_[_0xeaa2('0x29')](_0x2f5fb8,function(_0x36fd6a){if(_0x36fd6a[_0xeaa2('0x3d')]!==_0xeaa2('0x3e')){var _0x5a7f3a={};_0x5a7f3a[_0x36fd6a['name']]={'$like':'%'+_0x27461f['query'][_0xeaa2('0x3b')]+'%'};return _0x5a7f3a;}})});}_0x5cec7f=_[_0xeaa2('0x3c')]({},_0x5cec7f,_0x27461f[_0xeaa2('0x3f')]);var _0x2b43cb={'where':_0x5cec7f[_0xeaa2('0x38')]};return db['ZohoAccount'][_0xeaa2('0x1f')](_0x2b43cb)['then'](function(_0x42e8ae){_0x1450ae[_0xeaa2('0x1f')]=_0x42e8ae;if(_0x27461f['query']['includeAll']){_0x5cec7f[_0xeaa2('0x40')]=[{'all':!![]}];}return db[_0xeaa2('0x2a')][_0xeaa2('0x41')](_0x5cec7f);})['then'](function(_0x4fbcd4){_0x1450ae['rows']=_0x4fbcd4;return _0x1450ae;})[_0xeaa2('0x25')](respondWithFilteredResult(_0x1a07d1,_0x5cec7f))[_0xeaa2('0x42')](handleError(_0x1a07d1,null));};exports[_0xeaa2('0x43')]=function(_0x697224,_0x390d4e){var _0x2d880d={'raw':![],'where':{'id':_0x697224[_0xeaa2('0x44')]['id']}},_0x576892={};_0x576892['model']=_[_0xeaa2('0x2e')](db[_0xeaa2('0x2a')][_0xeaa2('0x45')]);_0x576892[_0xeaa2('0x2d')]=_['keys'](_0x697224['query']);_0x576892[_0xeaa2('0x39')]=_[_0xeaa2('0x2f')](_0x576892[_0xeaa2('0x30')],_0x576892[_0xeaa2('0x2d')]);_0x2d880d[_0xeaa2('0x31')]=_[_0xeaa2('0x2f')](_0x576892[_0xeaa2('0x30')],qs[_0xeaa2('0x32')](_0x697224[_0xeaa2('0x2d')][_0xeaa2('0x32')]));_0x2d880d[_0xeaa2('0x31')]=_0x2d880d[_0xeaa2('0x31')][_0xeaa2('0x33')]?_0x2d880d[_0xeaa2('0x31')]:_0x576892['model'];if(_0x697224[_0xeaa2('0x2d')][_0xeaa2('0x46')]){_0x2d880d['include']=[{'all':!![]}];}_0x2d880d=_['merge']({},_0x2d880d,_0x697224[_0xeaa2('0x3f')]);return db['ZohoAccount'][_0xeaa2('0x47')](_0x2d880d)[_0xeaa2('0x25')](handleEntityNotFound(_0x390d4e,null))[_0xeaa2('0x25')](respondWithResult(_0x390d4e,null))[_0xeaa2('0x42')](handleError(_0x390d4e,null));};exports['create']=function(_0x5b56ff,_0x2b1950){return db[_0xeaa2('0x2a')]['create'](_0x5b56ff[_0xeaa2('0x48')],{})[_0xeaa2('0x25')](respondWithResult(_0x2b1950,0xc9))[_0xeaa2('0x42')](handleError(_0x2b1950,null));};exports[_0xeaa2('0x24')]=function(_0x407bce,_0x397840){if(_0x407bce[_0xeaa2('0x48')]['id']){delete _0x407bce['body']['id'];}return db[_0xeaa2('0x2a')]['find']({'where':{'id':_0x407bce[_0xeaa2('0x44')]['id']}})['then'](handleEntityNotFound(_0x397840,null))[_0xeaa2('0x25')](saveUpdates(_0x407bce[_0xeaa2('0x48')],null))['then'](respondWithResult(_0x397840,null))[_0xeaa2('0x42')](handleError(_0x397840,null));};exports[_0xeaa2('0x49')]=function(_0x1dab12,_0x2ec6a1){return db[_0xeaa2('0x2a')][_0xeaa2('0x47')]({'where':{'id':_0x1dab12[_0xeaa2('0x44')]['id']}})[_0xeaa2('0x25')](handleEntityNotFound(_0x2ec6a1,null))['then'](removeEntity(_0x2ec6a1,null))['catch'](handleError(_0x2ec6a1,null));};exports[_0xeaa2('0x4a')]=function(_0x3ba072,_0x36638f,_0x62b75){var _0x5ea94a={};var _0x2f3fb8={};var _0x3d2a4c;var _0x5205ca;return db[_0xeaa2('0x2a')]['findOne']({'where':{'id':_0x3ba072['params']['id']}})[_0xeaa2('0x25')](handleEntityNotFound(_0x36638f,null))[_0xeaa2('0x25')](function(_0x56f211){if(_0x56f211){_0x3d2a4c=_0x56f211;_0x2f3fb8['model']=_[_0xeaa2('0x2e')](db['ZohoConfiguration'][_0xeaa2('0x45')]);_0x2f3fb8['query']=_[_0xeaa2('0x2e')](_0x3ba072[_0xeaa2('0x2d')]);_0x2f3fb8[_0xeaa2('0x39')]=_['intersection'](_0x2f3fb8[_0xeaa2('0x30')],_0x2f3fb8['query']);_0x5ea94a[_0xeaa2('0x31')]=_[_0xeaa2('0x2f')](_0x2f3fb8[_0xeaa2('0x30')],qs[_0xeaa2('0x32')](_0x3ba072[_0xeaa2('0x2d')][_0xeaa2('0x32')]));_0x5ea94a[_0xeaa2('0x31')]=_0x5ea94a[_0xeaa2('0x31')][_0xeaa2('0x33')]?_0x5ea94a['attributes']:_0x2f3fb8[_0xeaa2('0x30')];_0x5ea94a[_0xeaa2('0x36')]=qs[_0xeaa2('0x37')](_0x3ba072[_0xeaa2('0x2d')][_0xeaa2('0x37')]);_0x5ea94a[_0xeaa2('0x38')]=qs[_0xeaa2('0x39')](_[_0xeaa2('0x3a')](_0x3ba072[_0xeaa2('0x2d')],_0x2f3fb8[_0xeaa2('0x39')]));if(_0x3ba072[_0xeaa2('0x2d')][_0xeaa2('0x3b')]){_0x5ea94a[_0xeaa2('0x38')]=_[_0xeaa2('0x3c')](_0x5ea94a[_0xeaa2('0x38')],{'$or':_[_0xeaa2('0x29')](_0x5ea94a[_0xeaa2('0x31')],function(_0x2666a8){var _0x3938bd={};_0x3938bd[_0x2666a8]={'$like':'%'+_0x3ba072['query'][_0xeaa2('0x3b')]+'%'};return _0x3938bd;})});}_0x5ea94a=_[_0xeaa2('0x3c')]({},_0x5ea94a,_0x3ba072[_0xeaa2('0x3f')]);return _0x3d2a4c[_0xeaa2('0x4a')](_0x5ea94a);}})[_0xeaa2('0x25')](function(_0x20af9d){if(_0x20af9d){_0x5205ca=_0x20af9d[_0xeaa2('0x33')];if(!_0x3ba072[_0xeaa2('0x2d')][_0xeaa2('0x34')](_0xeaa2('0x35'))){_0x5ea94a['limit']=qs['limit'](_0x3ba072[_0xeaa2('0x2d')][_0xeaa2('0x1d')]);_0x5ea94a[_0xeaa2('0x1c')]=qs[_0xeaa2('0x1c')](_0x3ba072[_0xeaa2('0x2d')][_0xeaa2('0x1c')]);}return _0x3d2a4c[_0xeaa2('0x4a')](_0x5ea94a);}})[_0xeaa2('0x25')](function(_0xb26784){if(_0xb26784){return _0xb26784?{'count':_0x5205ca,'rows':_0xb26784}:null;}})[_0xeaa2('0x25')](respondWithResult(_0x36638f,null))[_0xeaa2('0x42')](handleError(_0x36638f,null));};exports[_0xeaa2('0x4b')]=function(_0x1066ea,_0x21189d,_0x567531){if(_0x1066ea[_0xeaa2('0x48')]['id']){delete _0x1066ea[_0xeaa2('0x48')]['id'];}return db['ZohoAccount'][_0xeaa2('0x4c')]({'where':{'id':_0x1066ea[_0xeaa2('0x44')]['id']}})[_0xeaa2('0x25')](handleEntityNotFound(_0x21189d,null))[_0xeaa2('0x25')](function(_0x3c6cd7){if(_0x3c6cd7){_0x1066ea[_0xeaa2('0x48')][_0xeaa2('0x4d')]=_0x3c6cd7['id'];_0x1066ea['body'][_0xeaa2('0x4e')]=integrations[_0xeaa2('0x4f')](_0x1066ea[_0xeaa2('0x48')][_0xeaa2('0x50')],_0x1066ea[_0xeaa2('0x48')][_0xeaa2('0x3d')]);_0x1066ea[_0xeaa2('0x48')][_0xeaa2('0x51')]=integrations[_0xeaa2('0x52')](_0x1066ea[_0xeaa2('0x48')][_0xeaa2('0x50')],_0x1066ea['body'][_0xeaa2('0x3d')]);return db[_0xeaa2('0x53')][_0xeaa2('0x54')](_0x1066ea['body'],{'include':[{'model':db['ZohoField'],'as':_0xeaa2('0x4e')},{'model':db[_0xeaa2('0x55')],'as':_0xeaa2('0x51')}]});}return null;})[_0xeaa2('0x25')](respondWithResult(_0x21189d,null))[_0xeaa2('0x42')](handleError(_0x21189d,null));};function getAccessToken(_0x2b4730){return new Promise(function(_0x1570c8,_0x5717df){var _0x2bc746;switch(_0x2b4730[_0xeaa2('0x56')]){case'US':_0x2bc746=_0xeaa2('0x57');break;case'AU':_0x2bc746=_0xeaa2('0x58');break;case'EU':_0x2bc746=_0xeaa2('0x59');break;case'IN':_0x2bc746=_0xeaa2('0x5a');break;case'CN':_0x2bc746=_0xeaa2('0x5b');break;default:_0x2bc746=_0xeaa2('0x59');break;}var _0x57748f={'method':_0xeaa2('0x5c'),'uri':_0x2bc746+_0xeaa2('0x5d'),'qs':{'refresh_token':_0x2b4730['refreshToken'],'client_id':_0x2b4730[_0xeaa2('0x5e')],'client_secret':_0x2b4730[_0xeaa2('0x5f')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x57748f)[_0xeaa2('0x25')](function(_0x275f47){if(_0x275f47['access_token']){_0x1570c8(_0x275f47['access_token']);}else{_0x5717df(_0xeaa2('0x60'));}})['catch'](function(_0x28376d){_0x5717df(_0x28376d);});});}exports[_0xeaa2('0x61')]=function(_0x59c0c4,_0x4fabf2,_0x190074){var _0x198fb5,_0xc4951e,_0x2fb538,_0x5bcd49,_0x3f7b6a;return db[_0xeaa2('0x2a')][_0xeaa2('0x4c')]({'where':{'id':_0x59c0c4['params']['id']},'attributes':['id',_0xeaa2('0x62'),_0xeaa2('0x56'),_0xeaa2('0x5e'),_0xeaa2('0x5f'),_0xeaa2('0x63'),_0xeaa2('0x64'),_0xeaa2('0x65')]})[_0xeaa2('0x25')](handleEntityNotFound(_0x4fabf2,null))[_0xeaa2('0x25')](function(_0x147343){_0x3f7b6a=_0x147343;_0x198fb5=_0x3f7b6a[_0xeaa2('0x62')];_0xc4951e=_0x198fb5==='zoho.eu'?'eu':_0xeaa2('0x66');_0x2fb538=_0x3f7b6a[_0xeaa2('0x63')];var _0x156d05=_0x2fb538['slice'](-0x1);if(_0x156d05==='/'||_0x156d05==='\x5c'||_0x156d05===':'){_0x2fb538=_0x2fb538['substring'](0x0,_0x2fb538['lastIndexOf'](_0x156d05));}if(!_0x3f7b6a[_0xeaa2('0x65')]){throw new Error(_0xeaa2('0x67'));}return getAccessToken(_0x3f7b6a);})[_0xeaa2('0x25')](function(_0x314e6e){if(_0x314e6e){return rp({'method':_0xeaa2('0x68'),'uri':util[_0xeaa2('0x69')](_0xeaa2('0x6a'),_0xc4951e),'qs':{'module':_0xeaa2('0x6b')},'headers':{'Authorization':_0xeaa2('0x6c')+_0x314e6e},'json':!![]});}})[_0xeaa2('0x25')](function(_0x56e8c5){if(_0x56e8c5){if(_0x56e8c5[_0xeaa2('0x6d')]&&_0x56e8c5['response'][_0xeaa2('0x26')]){throw new Error(_0x56e8c5[_0xeaa2('0x6d')][_0xeaa2('0x26')]['message']);}var _0xb6252b=[];var _0x13b040=[];var _0x13f6db=[_0xeaa2('0x6e'),_0xeaa2('0x6f'),'Description',_0xeaa2('0x70'),_0xeaa2('0x71'),_0xeaa2('0x72'),_0xeaa2('0x73'),_0xeaa2('0x74')];_0x13b040=_[_0xeaa2('0x75')](_0x56e8c5[_0xeaa2('0x32')],function(_0x54088e){return _0x13f6db[_0xeaa2('0x76')](_0x54088e[_0xeaa2('0x77')]);});for(var _0x55a42d=0x0;_0x55a42d<_0x13b040[_0xeaa2('0x33')];_0x55a42d++){if(_0x13b040[_0x55a42d]['system_mandatory']===![]){_0xb6252b[_0xeaa2('0x78')]({'id':_0x13b040[_0x55a42d]['id'],'name':_0x13b040[_0x55a42d][_0xeaa2('0x79')],'custom':_0x13b040[_0x55a42d][_0xeaa2('0x7a')],'options':_0x13b040[_0x55a42d]['data_type']===_0xeaa2('0x7b')&&_0x13b040[_0x55a42d]['pick_list_values'][_0xeaa2('0x33')]>-0x1?_[_0xeaa2('0x29')](_0x13b040[_0x55a42d]['pick_list_values'],function(_0x3d55f4){return{'name':_0x3d55f4,'value':_0x3d55f4};}):[]});}}return{'count':_0xb6252b['length'],'rows':_0xb6252b};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x4fabf2,null))[_0xeaa2('0x42')](function(_0x38e964){var _0x3bac43=_0x59c0c4[_0xeaa2('0x2d')][_0xeaa2('0x7c')]?0x1f4:_0x38e964[_0xeaa2('0x7d')]||0x1f4;logger[_0xeaa2('0x26')](_0xeaa2('0x7e'),'getFields',_0x3bac43,JSON[_0xeaa2('0x7f')](_0x38e964));delete _0x38e964[_0xeaa2('0x2c')];if(_0x3bac43===0x191){_0x3bac43=0x190;}_0x4fabf2['status'](_0x3bac43)['send'](_0x59c0c4[_0xeaa2('0x2d')][_0xeaa2('0x7c')]?{'message':_0xeaa2('0x80'),'statusCode':_0x38e964[_0xeaa2('0x7d')]}:_0x38e964);});};
\ No newline at end of file
index 2f73b5b..fd9e00c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb16a=['then','parse','refresh_token','info','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','inspect','POST','authorization_code','application/x-www-form-urlencoded','refreshToken','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','changed','zone','clientId','clientSecret','host','serverUrl','substring','https://accounts.zoho.com.au','https://accounts.zoho.com.cn','https://accounts.zoho.eu','/oauth/v2/token','code'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xb16a,0xd6));var _0xab16=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xb16a[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xab16('0x0'));var util=require('util');var logger=require(_0xab16('0x1'))(_0xab16('0x2'));var moment=require(_0xab16('0x3'));var BPromise=require('bluebird');var rp=require(_0xab16('0x4'));var fs=require('fs');var path=require(_0xab16('0x5'));var rimraf=require(_0xab16('0x6'));var config=require(_0xab16('0x7'));var attributes=require(_0xab16('0x8'));var integrations=require(_0xab16('0x9'));module[_0xab16('0xa')]=function(_0x5113b3,_0x13a928){return _0x5113b3[_0xab16('0xb')](_0xab16('0xc'),attributes,{'tableName':_0xab16('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x307264,_0x1d06d4,_0x1bdd84){if(_0x307264[_0xab16('0xe')](_0xab16('0xf'))||_0x307264[_0xab16('0xe')]('serverUrl')||_0x307264['changed'](_0xab16('0x10'))||_0x307264[_0xab16('0xe')](_0xab16('0x11'))||_0x307264[_0xab16('0xe')]('code')||_0x307264['changed'](_0xab16('0x12'))){var _0x54e9da,_0x52d7fb;_0x54e9da=_0x307264[_0xab16('0x13')];var _0x6065a8=_0x54e9da['slice'](-0x1);if(_0x6065a8==='/'||_0x6065a8==='\x5c'||_0x6065a8===':'){_0x54e9da=_0x54e9da[_0xab16('0x14')](0x0,_0x54e9da['lastIndexOf'](_0x6065a8));}switch(_0x307264[_0xab16('0xf')]){case'US':_0x52d7fb='https://accounts.zoho.com';break;case'AU':_0x52d7fb=_0xab16('0x15');break;case'IN':_0x52d7fb='https://accounts.zoho.in';break;case'CN':_0x52d7fb=_0xab16('0x16');break;default:_0x52d7fb=_0xab16('0x17');break;}var _0x2ed3d2={'method':'POST','uri':_0x52d7fb+_0xab16('0x18'),'form':{'grant_type':'authorization_code','client_id':_0x307264[_0xab16('0x10')],'client_secret':_0x307264[_0xab16('0x11')],'redirect_uri':_0x307264[_0xab16('0x13')],'code':_0x307264[_0xab16('0x19')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x2ed3d2)[_0xab16('0x1a')](function(_0x2203d2){var _0x7d4845=JSON[_0xab16('0x1b')](_0x2203d2);if(_0x7d4845[_0xab16('0x1c')]){_0x307264['refreshToken']=_0x7d4845[_0xab16('0x1c')];logger[_0xab16('0x1d')](util[_0xab16('0x1e')](_0xab16('0x1f'),_0x307264[_0xab16('0x20')],_0x307264['id']));}else{logger['error'](util[_0xab16('0x1e')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x307264[_0xab16('0x20')],_0x307264['id']),util[_0xab16('0x21')](_0x7d4845,{'showHidden':![],'depth':null}));}return _0x1bdd84(null,_0x1d06d4);})['catch'](function(_0x5c4f4b){logger['error'](util[_0xab16('0x1e')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x307264[_0xab16('0x20')],_0x307264['id']),util[_0xab16('0x21')](parsedResult,{'showHidden':![],'depth':null}));return _0x1bdd84(_0x5c4f4b);});}else{return _0x1bdd84(null,_0x1d06d4);}},'beforeUpdate':function(_0x1503a,_0x33774f,_0x1b9b4d){if(_0x1503a['changed'](_0xab16('0xf'))||_0x1503a[_0xab16('0xe')](_0xab16('0x13'))||_0x1503a[_0xab16('0xe')](_0xab16('0x10'))||_0x1503a[_0xab16('0xe')](_0xab16('0x11'))||_0x1503a['changed'](_0xab16('0x19'))||_0x1503a[_0xab16('0xe')](_0xab16('0x12'))){var _0x262b8b,_0x10d7d3;_0x262b8b=_0x1503a[_0xab16('0x13')];var _0x1bac2b=_0x262b8b['slice'](-0x1);if(_0x1bac2b==='/'||_0x1bac2b==='\x5c'||_0x1bac2b===':'){_0x262b8b=_0x262b8b[_0xab16('0x14')](0x0,_0x262b8b['lastIndexOf'](_0x1bac2b));}switch(_0x1503a[_0xab16('0xf')]){case'US':_0x10d7d3='https://accounts.zoho.com';break;case'AU':_0x10d7d3='https://accounts.zoho.com.au';break;case'IN':_0x10d7d3='https://accounts.zoho.in';break;case'CN':_0x10d7d3='https://accounts.zoho.com.cn';break;default:_0x10d7d3=_0xab16('0x17');break;}var _0x59744b={'method':_0xab16('0x22'),'uri':_0x10d7d3+_0xab16('0x18'),'form':{'grant_type':_0xab16('0x23'),'client_id':_0x1503a[_0xab16('0x10')],'client_secret':_0x1503a['clientSecret'],'redirect_uri':_0x1503a[_0xab16('0x13')],'code':_0x1503a['code']},'headers':{'Content-Type':_0xab16('0x24')}};return rp(_0x59744b)[_0xab16('0x1a')](function(_0x25ef30){var _0x458db9=JSON['parse'](_0x25ef30);if(_0x458db9[_0xab16('0x1c')]){_0x1503a[_0xab16('0x25')]=_0x458db9[_0xab16('0x1c')];logger[_0xab16('0x1d')](util[_0xab16('0x1e')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x1503a['name'],_0x1503a['id']));}else{logger[_0xab16('0x26')](util[_0xab16('0x1e')](_0xab16('0x27'),_0x1503a[_0xab16('0x20')],_0x1503a['id']),util['inspect'](_0x458db9,{'showHidden':![],'depth':null}));}return _0x1b9b4d(null,_0x33774f);})['catch'](function(_0x248087){logger[_0xab16('0x26')](util[_0xab16('0x1e')](_0xab16('0x27'),_0x1503a['name'],_0x1503a['id']),util[_0xab16('0x21')](parsedResult,{'showHidden':![],'depth':null}));return _0x1b9b4d(_0x248087);});}else{return _0x1b9b4d(null,_0x33774f);}}}});};
\ No newline at end of file
+var _0xb137=['application/x-www-form-urlencoded','refresh_token','info','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','catch','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','host','lastIndexOf','https://accounts.zoho.com.cn','then','parse','lodash','api','request-promise','path','../../config/environment','./intZohoAccount.attributes','exports','define','changed','zone','serverUrl','clientId','clientSecret','code','slice','substring','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.eu','/oauth/v2/token','authorization_code'];(function(_0x54eda9,_0x3f328b){var _0x506ccc=function(_0x2add35){while(--_0x2add35){_0x54eda9['push'](_0x54eda9['shift']());}};_0x506ccc(++_0x3f328b);}(_0xb137,0x1f0));var _0x7b13=function(_0x211632,_0x378e2e){_0x211632=_0x211632-0x0;var _0x5a1da1=_0xb137[_0x211632];return _0x5a1da1;};'use strict';var _=require(_0x7b13('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x7b13('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x7b13('0x2'));var fs=require('fs');var path=require(_0x7b13('0x3'));var rimraf=require('rimraf');var config=require(_0x7b13('0x4'));var attributes=require(_0x7b13('0x5'));var integrations=require('../../components/integrations/configuration');module[_0x7b13('0x6')]=function(_0x351cf2,_0x55265f){return _0x351cf2[_0x7b13('0x7')]('ZohoAccount',attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x305f86,_0xfa5236,_0x54d959){if(_0x305f86[_0x7b13('0x8')](_0x7b13('0x9'))||_0x305f86[_0x7b13('0x8')](_0x7b13('0xa'))||_0x305f86[_0x7b13('0x8')](_0x7b13('0xb'))||_0x305f86[_0x7b13('0x8')](_0x7b13('0xc'))||_0x305f86[_0x7b13('0x8')](_0x7b13('0xd'))||_0x305f86['changed']('host')){var _0x464d44,_0x19ee65;_0x464d44=_0x305f86[_0x7b13('0xa')];var _0x4bf626=_0x464d44[_0x7b13('0xe')](-0x1);if(_0x4bf626==='/'||_0x4bf626==='\x5c'||_0x4bf626===':'){_0x464d44=_0x464d44[_0x7b13('0xf')](0x0,_0x464d44['lastIndexOf'](_0x4bf626));}switch(_0x305f86['zone']){case'US':_0x19ee65=_0x7b13('0x10');break;case'AU':_0x19ee65=_0x7b13('0x11');break;case'IN':_0x19ee65=_0x7b13('0x12');break;case'CN':_0x19ee65='https://accounts.zoho.com.cn';break;default:_0x19ee65=_0x7b13('0x13');break;}var _0x4e742d={'method':'POST','uri':_0x19ee65+_0x7b13('0x14'),'form':{'grant_type':_0x7b13('0x15'),'client_id':_0x305f86[_0x7b13('0xb')],'client_secret':_0x305f86[_0x7b13('0xc')],'redirect_uri':_0x305f86[_0x7b13('0xa')],'code':_0x305f86['code']},'headers':{'Content-Type':_0x7b13('0x16')}};return rp(_0x4e742d)['then'](function(_0x34dc47){var _0x41ae59=JSON['parse'](_0x34dc47);if(_0x41ae59[_0x7b13('0x17')]){_0x305f86['refreshToken']=_0x41ae59[_0x7b13('0x17')];logger[_0x7b13('0x18')](util[_0x7b13('0x19')](_0x7b13('0x1a'),_0x305f86[_0x7b13('0x1b')],_0x305f86['id']));}else{logger['error'](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x305f86[_0x7b13('0x1b')],_0x305f86['id']),util['inspect'](_0x41ae59,{'showHidden':![],'depth':null}));}return _0x54d959(null,_0xfa5236);})[_0x7b13('0x1c')](function(_0x265d98){logger[_0x7b13('0x1d')](util['format'](_0x7b13('0x1e'),_0x305f86[_0x7b13('0x1b')],_0x305f86['id']),util[_0x7b13('0x1f')](parsedResult,{'showHidden':![],'depth':null}));return _0x54d959(_0x265d98);});}else{return _0x54d959(null,_0xfa5236);}},'beforeUpdate':function(_0x264db8,_0x433122,_0x32e8f2){if(_0x264db8[_0x7b13('0x8')](_0x7b13('0x9'))||_0x264db8[_0x7b13('0x8')]('serverUrl')||_0x264db8[_0x7b13('0x8')](_0x7b13('0xb'))||_0x264db8[_0x7b13('0x8')](_0x7b13('0xc'))||_0x264db8['changed'](_0x7b13('0xd'))||_0x264db8[_0x7b13('0x8')](_0x7b13('0x20'))){var _0x46fc2d,_0x5b144f;_0x46fc2d=_0x264db8[_0x7b13('0xa')];var _0x385470=_0x46fc2d[_0x7b13('0xe')](-0x1);if(_0x385470==='/'||_0x385470==='\x5c'||_0x385470===':'){_0x46fc2d=_0x46fc2d[_0x7b13('0xf')](0x0,_0x46fc2d[_0x7b13('0x21')](_0x385470));}switch(_0x264db8['zone']){case'US':_0x5b144f=_0x7b13('0x10');break;case'AU':_0x5b144f='https://accounts.zoho.com.au';break;case'IN':_0x5b144f=_0x7b13('0x12');break;case'CN':_0x5b144f=_0x7b13('0x22');break;default:_0x5b144f='https://accounts.zoho.eu';break;}var _0x47d89c={'method':'POST','uri':_0x5b144f+_0x7b13('0x14'),'form':{'grant_type':_0x7b13('0x15'),'client_id':_0x264db8[_0x7b13('0xb')],'client_secret':_0x264db8['clientSecret'],'redirect_uri':_0x264db8[_0x7b13('0xa')],'code':_0x264db8[_0x7b13('0xd')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x47d89c)[_0x7b13('0x23')](function(_0x469d13){var _0x585111=JSON[_0x7b13('0x24')](_0x469d13);if(_0x585111[_0x7b13('0x17')]){_0x264db8['refreshToken']=_0x585111[_0x7b13('0x17')];logger[_0x7b13('0x18')](util[_0x7b13('0x19')](_0x7b13('0x1a'),_0x264db8[_0x7b13('0x1b')],_0x264db8['id']));}else{logger['error'](util[_0x7b13('0x19')](_0x7b13('0x1e'),_0x264db8[_0x7b13('0x1b')],_0x264db8['id']),util['inspect'](_0x585111,{'showHidden':![],'depth':null}));}return _0x32e8f2(null,_0x433122);})[_0x7b13('0x1c')](function(_0x1de252){logger['error'](util[_0x7b13('0x19')](_0x7b13('0x1e'),_0x264db8[_0x7b13('0x1b')],_0x264db8['id']),util[_0x7b13('0x1f')](parsedResult,{'showHidden':![],'depth':null}));return _0x32e8f2(_0x1de252);});}else{return _0x32e8f2(null,_0x433122);}}}});};
\ No newline at end of file
index 26dbff8..3b59373 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5454=['model','debug','catch','ShowZohoAccount','find','raw','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetZohoAccount','ZohoAccount','options','where','attributes','map','include'];(function(_0x324fe8,_0x1ccb46){var _0x4a1cd9=function(_0x506af2){while(--_0x506af2){_0x324fe8['push'](_0x324fe8['shift']());}};_0x4a1cd9(++_0x1ccb46);}(_0x5454,0x15b));var _0x4545=function(_0x3274a4,_0x17bc0e){_0x3274a4=_0x3274a4-0x0;var _0x54c7cd=_0x5454[_0x3274a4];return _0x54c7cd;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x4545('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4545('0x1'));var logger=require(_0x4545('0x2'))(_0x4545('0x3'));var config=require(_0x4545('0x4'));var jayson=require('jayson/promise');var client=jayson[_0x4545('0x5')][_0x4545('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x6fd3bb,_0xc79c57,_0x3f1134){return new BPromise(function(_0x1fd7e5,_0x1c5649){return client[_0x4545('0x7')](_0x6fd3bb,_0x3f1134)[_0x4545('0x8')](function(_0x3e2526){logger[_0x4545('0x9')](_0x4545('0xa'),_0xc79c57,_0x4545('0xb'));logger['debug'](_0x4545('0xc'),_0xc79c57,_0x4545('0xb'),JSON[_0x4545('0xd')](_0x3e2526));if(_0x3e2526[_0x4545('0xe')]){if(_0x3e2526[_0x4545('0xe')][_0x4545('0xf')]===0x1f4){logger['error'](_0x4545('0xa'),_0xc79c57,_0x3e2526[_0x4545('0xe')][_0x4545('0x10')]);return _0x1c5649(_0x3e2526[_0x4545('0xe')][_0x4545('0x10')]);}logger[_0x4545('0xe')](_0x4545('0xa'),_0xc79c57,_0x3e2526[_0x4545('0xe')][_0x4545('0x10')]);return _0x1fd7e5(_0x3e2526[_0x4545('0xe')][_0x4545('0x10')]);}else{logger['info'](_0x4545('0xa'),_0xc79c57,_0x4545('0xb'));_0x1fd7e5(_0x3e2526[_0x4545('0x11')][_0x4545('0x10')]);}})['catch'](function(_0x4a5bdf){logger[_0x4545('0xe')](_0x4545('0xa'),_0xc79c57,_0x4a5bdf);_0x1c5649(_0x4a5bdf);});});}exports[_0x4545('0x12')]=function(_0x2e13e0){var _0x207e38=this;return new Promise(function(_0x33393b,_0x3161c8){return db[_0x4545('0x13')]['findAll']({'raw':_0x2e13e0['options']?_0x2e13e0[_0x4545('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0x2e13e0[_0x4545('0x14')]?_0x2e13e0[_0x4545('0x14')][_0x4545('0x15')]||null:null,'attributes':_0x2e13e0[_0x4545('0x14')]?_0x2e13e0[_0x4545('0x14')][_0x4545('0x16')]||null:null,'limit':_0x2e13e0[_0x4545('0x14')]?_0x2e13e0[_0x4545('0x14')]['limit']||null:null,'include':_0x2e13e0['options']?_0x2e13e0[_0x4545('0x14')]['include']?_[_0x4545('0x17')](_0x2e13e0['options'][_0x4545('0x18')],function(_0x4c47c0){return{'model':db[_0x4c47c0['model']],'as':_0x4c47c0['as'],'attributes':_0x4c47c0[_0x4545('0x16')],'include':_0x4c47c0[_0x4545('0x18')]?_[_0x4545('0x17')](_0x4c47c0[_0x4545('0x18')],function(_0x344633){return{'model':db[_0x344633[_0x4545('0x19')]],'as':_0x344633['as'],'attributes':_0x344633[_0x4545('0x16')],'include':_0x344633[_0x4545('0x18')]?_[_0x4545('0x17')](_0x344633[_0x4545('0x18')],function(_0x3e5807){return{'model':db[_0x3e5807[_0x4545('0x19')]],'as':_0x3e5807['as'],'attributes':_0x3e5807[_0x4545('0x16')]};}):[]};}):[]};}):[]:[]})[_0x4545('0x8')](function(_0x1d8c39){logger[_0x4545('0x9')]('GetZohoAccount',_0x2e13e0);logger[_0x4545('0x1a')](_0x4545('0x12'),_0x2e13e0,JSON[_0x4545('0xd')](_0x1d8c39));_0x33393b(_0x1d8c39);})[_0x4545('0x1b')](function(_0xb9c5ee){logger['error'](_0x4545('0x12'),_0xb9c5ee[_0x4545('0x10')],_0x2e13e0);_0x3161c8(_0x207e38[_0x4545('0xe')](0x1f4,_0xb9c5ee[_0x4545('0x10')]));});});};exports[_0x4545('0x1c')]=function(_0x27b7d7){var _0x52dd8e=this;return new Promise(function(_0x406920,_0x80b55f){return db[_0x4545('0x13')][_0x4545('0x1d')]({'raw':_0x27b7d7[_0x4545('0x14')]?_0x27b7d7[_0x4545('0x14')][_0x4545('0x1e')]===undefined?!![]:![]:!![],'where':_0x27b7d7[_0x4545('0x14')]?_0x27b7d7[_0x4545('0x14')][_0x4545('0x15')]||null:null,'attributes':_0x27b7d7[_0x4545('0x14')]?_0x27b7d7['options'][_0x4545('0x16')]||null:null,'include':_0x27b7d7['options']?_0x27b7d7[_0x4545('0x14')][_0x4545('0x18')]?_['map'](_0x27b7d7[_0x4545('0x14')][_0x4545('0x18')],function(_0x46e814){return{'model':db[_0x46e814[_0x4545('0x19')]],'as':_0x46e814['as'],'attributes':_0x46e814[_0x4545('0x16')],'include':_0x46e814[_0x4545('0x18')]?_[_0x4545('0x17')](_0x46e814['include'],function(_0x1abc06){return{'model':db[_0x1abc06[_0x4545('0x19')]],'as':_0x1abc06['as'],'attributes':_0x1abc06[_0x4545('0x16')],'include':_0x1abc06[_0x4545('0x18')]?_[_0x4545('0x17')](_0x1abc06[_0x4545('0x18')],function(_0x5bc452){return{'model':db[_0x5bc452[_0x4545('0x19')]],'as':_0x5bc452['as'],'attributes':_0x5bc452[_0x4545('0x16')]};}):[]};}):[]};}):[]:[]})[_0x4545('0x8')](function(_0x3cee1a){logger[_0x4545('0x9')](_0x4545('0x1c'),_0x27b7d7);logger[_0x4545('0x1a')](_0x4545('0x1c'),_0x27b7d7,JSON[_0x4545('0xd')](_0x3cee1a));_0x406920(_0x3cee1a);})['catch'](function(_0x47c85d){logger['error'](_0x4545('0x1c'),_0x47c85d['message'],_0x27b7d7);_0x80b55f(_0x52dd8e[_0x4545('0xe')](0x1f4,_0x47c85d[_0x4545('0x10')]));});});};
\ No newline at end of file
+var _0xcac2=['findAll','options','raw','where','attributes','limit','include','model','map','then','ShowZohoAccount','find','lodash','util','moment','randomstring','ioredis','../../config/environment','jayson/promise','client','http','request','info','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','ZohoAccount,\x20%s,\x20%s','message','result','catch','GetZohoAccount','ZohoAccount'];(function(_0xf090bb,_0x4b4d9f){var _0x4a57f5=function(_0x24f2d3){while(--_0x24f2d3){_0xf090bb['push'](_0xf090bb['shift']());}};_0x4a57f5(++_0x4b4d9f);}(_0xcac2,0x1e8));var _0x2cac=function(_0x445010,_0x27317d){_0x445010=_0x445010-0x0;var _0x11fa38=_0xcac2[_0x445010];return _0x11fa38;};'use strict';var _=require(_0x2cac('0x0'));var util=require(_0x2cac('0x1'));var moment=require(_0x2cac('0x2'));var BPromise=require('bluebird');var rs=require(_0x2cac('0x3'));var fs=require('fs');var Redis=require(_0x2cac('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x2cac('0x5'));var jayson=require(_0x2cac('0x6'));var client=jayson[_0x2cac('0x7')][_0x2cac('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2f996c,_0x703f11,_0x1920cf){return new BPromise(function(_0x56b4f9,_0x5df249){return client[_0x2cac('0x9')](_0x2f996c,_0x1920cf)['then'](function(_0x361260){logger[_0x2cac('0xa')]('ZohoAccount,\x20%s,\x20%s',_0x703f11,'request\x20sent');logger[_0x2cac('0xb')](_0x2cac('0xc'),_0x703f11,'request\x20sent',JSON[_0x2cac('0xd')](_0x361260));if(_0x361260['error']){if(_0x361260[_0x2cac('0xe')][_0x2cac('0xf')]===0x1f4){logger[_0x2cac('0xe')](_0x2cac('0x10'),_0x703f11,_0x361260[_0x2cac('0xe')]['message']);return _0x5df249(_0x361260[_0x2cac('0xe')][_0x2cac('0x11')]);}logger['error'](_0x2cac('0x10'),_0x703f11,_0x361260[_0x2cac('0xe')][_0x2cac('0x11')]);return _0x56b4f9(_0x361260['error'][_0x2cac('0x11')]);}else{logger[_0x2cac('0xa')](_0x2cac('0x10'),_0x703f11,'request\x20sent');_0x56b4f9(_0x361260[_0x2cac('0x12')][_0x2cac('0x11')]);}})[_0x2cac('0x13')](function(_0x4d4646){logger['error'](_0x2cac('0x10'),_0x703f11,_0x4d4646);_0x5df249(_0x4d4646);});});}exports[_0x2cac('0x14')]=function(_0x1dac01){var _0x10d454=this;return new Promise(function(_0x2109af,_0x5b6f17){return db[_0x2cac('0x15')][_0x2cac('0x16')]({'raw':_0x1dac01[_0x2cac('0x17')]?_0x1dac01[_0x2cac('0x17')][_0x2cac('0x18')]===undefined?!![]:![]:!![],'where':_0x1dac01[_0x2cac('0x17')]?_0x1dac01[_0x2cac('0x17')][_0x2cac('0x19')]||null:null,'attributes':_0x1dac01['options']?_0x1dac01[_0x2cac('0x17')][_0x2cac('0x1a')]||null:null,'limit':_0x1dac01['options']?_0x1dac01['options'][_0x2cac('0x1b')]||null:null,'include':_0x1dac01['options']?_0x1dac01[_0x2cac('0x17')][_0x2cac('0x1c')]?_['map'](_0x1dac01[_0x2cac('0x17')]['include'],function(_0x43b372){return{'model':db[_0x43b372[_0x2cac('0x1d')]],'as':_0x43b372['as'],'attributes':_0x43b372[_0x2cac('0x1a')],'include':_0x43b372[_0x2cac('0x1c')]?_['map'](_0x43b372[_0x2cac('0x1c')],function(_0x1de22c){return{'model':db[_0x1de22c[_0x2cac('0x1d')]],'as':_0x1de22c['as'],'attributes':_0x1de22c[_0x2cac('0x1a')],'include':_0x1de22c[_0x2cac('0x1c')]?_[_0x2cac('0x1e')](_0x1de22c['include'],function(_0x2c1968){return{'model':db[_0x2c1968[_0x2cac('0x1d')]],'as':_0x2c1968['as'],'attributes':_0x2c1968['attributes']};}):[]};}):[]};}):[]:[]})[_0x2cac('0x1f')](function(_0x4b6ad1){logger[_0x2cac('0xa')](_0x2cac('0x14'),_0x1dac01);logger['debug']('GetZohoAccount',_0x1dac01,JSON[_0x2cac('0xd')](_0x4b6ad1));_0x2109af(_0x4b6ad1);})[_0x2cac('0x13')](function(_0x246cef){logger['error'](_0x2cac('0x14'),_0x246cef[_0x2cac('0x11')],_0x1dac01);_0x5b6f17(_0x10d454[_0x2cac('0xe')](0x1f4,_0x246cef['message']));});});};exports[_0x2cac('0x20')]=function(_0x1460da){var _0x3780c0=this;return new Promise(function(_0x2bed7d,_0x1b4844){return db[_0x2cac('0x15')][_0x2cac('0x21')]({'raw':_0x1460da['options']?_0x1460da[_0x2cac('0x17')][_0x2cac('0x18')]===undefined?!![]:![]:!![],'where':_0x1460da[_0x2cac('0x17')]?_0x1460da['options'][_0x2cac('0x19')]||null:null,'attributes':_0x1460da[_0x2cac('0x17')]?_0x1460da[_0x2cac('0x17')][_0x2cac('0x1a')]||null:null,'include':_0x1460da[_0x2cac('0x17')]?_0x1460da[_0x2cac('0x17')][_0x2cac('0x1c')]?_[_0x2cac('0x1e')](_0x1460da[_0x2cac('0x17')]['include'],function(_0x4ad3af){return{'model':db[_0x4ad3af['model']],'as':_0x4ad3af['as'],'attributes':_0x4ad3af[_0x2cac('0x1a')],'include':_0x4ad3af[_0x2cac('0x1c')]?_['map'](_0x4ad3af['include'],function(_0x47a5aa){return{'model':db[_0x47a5aa['model']],'as':_0x47a5aa['as'],'attributes':_0x47a5aa['attributes'],'include':_0x47a5aa[_0x2cac('0x1c')]?_['map'](_0x47a5aa[_0x2cac('0x1c')],function(_0x11c7a9){return{'model':db[_0x11c7a9[_0x2cac('0x1d')]],'as':_0x11c7a9['as'],'attributes':_0x11c7a9[_0x2cac('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x2cac('0x1f')](function(_0x314507){logger[_0x2cac('0xa')](_0x2cac('0x20'),_0x1460da);logger[_0x2cac('0xb')](_0x2cac('0x20'),_0x1460da,JSON['stringify'](_0x314507));_0x2bed7d(_0x314507);})[_0x2cac('0x13')](function(_0x27a48d){logger['error']('ShowZohoAccount',_0x27a48d[_0x2cac('0x11')],_0x1460da);_0x1b4844(_0x3780c0[_0x2cac('0xe')](0x1f4,_0x27a48d[_0x2cac('0x11')]));});});};
\ No newline at end of file
index 081089a..2c87d3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc549=['getSubjects','/:id/descriptions','getDescriptions','post','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intZohoConfiguration.controller','isAuthenticated','index','get','/:id/fields','/:id/subjects'];(function(_0x5573b4,_0x4020ec){var _0x506a32=function(_0x187f4b){while(--_0x187f4b){_0x5573b4['push'](_0x5573b4['shift']());}};_0x506a32(++_0x4020ec);}(_0xc549,0xaa));var _0x9c54=function(_0x25eaec,_0x12f562){_0x25eaec=_0x25eaec-0x0;var _0x7702ab=_0xc549[_0x25eaec];return _0x7702ab;};'use strict';var multer=require(_0x9c54('0x0'));var util=require(_0x9c54('0x1'));var path=require(_0x9c54('0x2'));var timeout=require(_0x9c54('0x3'));var express=require(_0x9c54('0x4'));var router=express[_0x9c54('0x5')]();var fs_extra=require(_0x9c54('0x6'));var auth=require(_0x9c54('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x9c54('0x8'));router['get']('/',auth[_0x9c54('0x9')](),controller[_0x9c54('0xa')]);router[_0x9c54('0xb')]('/:id',auth[_0x9c54('0x9')](),controller['show']);router[_0x9c54('0xb')](_0x9c54('0xc'),auth[_0x9c54('0x9')](),controller['getFields']);router[_0x9c54('0xb')](_0x9c54('0xd'),auth[_0x9c54('0x9')](),controller[_0x9c54('0xe')]);router[_0x9c54('0xb')](_0x9c54('0xf'),auth['isAuthenticated'](),controller[_0x9c54('0x10')]);router[_0x9c54('0x11')]('/',auth[_0x9c54('0x9')](),controller['create']);router['put'](_0x9c54('0x12'),auth[_0x9c54('0x9')](),controller[_0x9c54('0x13')]);router[_0x9c54('0x14')](_0x9c54('0x12'),auth['isAuthenticated'](),controller[_0x9c54('0x15')]);module[_0x9c54('0x16')]=router;
\ No newline at end of file
+var _0x20fe=['index','/:id','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated'];(function(_0x17b6e3,_0x4522ed){var _0x3906f3=function(_0x430f87){while(--_0x430f87){_0x17b6e3['push'](_0x17b6e3['shift']());}};_0x3906f3(++_0x4522ed);}(_0x20fe,0x160));var _0xe20f=function(_0x52dfba,_0x30de83){_0x52dfba=_0x52dfba-0x0;var _0x1f16c1=_0x20fe[_0x52dfba];return _0x1f16c1;};'use strict';var multer=require('multer');var util=require(_0xe20f('0x0'));var path=require(_0xe20f('0x1'));var timeout=require(_0xe20f('0x2'));var express=require(_0xe20f('0x3'));var router=express[_0xe20f('0x4')]();var fs_extra=require(_0xe20f('0x5'));var auth=require(_0xe20f('0x6'));var interaction=require(_0xe20f('0x7'));var config=require(_0xe20f('0x8'));var controller=require(_0xe20f('0x9'));router[_0xe20f('0xa')]('/',auth[_0xe20f('0xb')](),controller[_0xe20f('0xc')]);router[_0xe20f('0xa')](_0xe20f('0xd'),auth['isAuthenticated'](),controller[_0xe20f('0xe')]);router[_0xe20f('0xa')](_0xe20f('0xf'),auth[_0xe20f('0xb')](),controller['getFields']);router['get'](_0xe20f('0x10'),auth[_0xe20f('0xb')](),controller[_0xe20f('0x11')]);router[_0xe20f('0xa')](_0xe20f('0x12'),auth['isAuthenticated'](),controller[_0xe20f('0x13')]);router[_0xe20f('0x14')]('/',auth[_0xe20f('0xb')](),controller[_0xe20f('0x15')]);router['put'](_0xe20f('0xd'),auth[_0xe20f('0xb')](),controller[_0xe20f('0x16')]);router[_0xe20f('0x17')](_0xe20f('0xd'),auth['isAuthenticated'](),controller[_0xe20f('0x18')]);module[_0xe20f('0x19')]=router;
\ No newline at end of file
index 3738b8a..f3c46a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf301=['exports','STRING','lead','ENUM','contact_lead','contact','sequelize'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xf301,0x1d4));var _0x1f30=function(_0x1855cd,_0x6fdae){_0x1855cd=_0x1855cd-0x0;var _0x562668=_0xf301[_0x1855cd];return _0x562668;};'use strict';var Sequelize=require(_0x1f30('0x0'));module[_0x1f30('0x1')]={'name':{'type':Sequelize[_0x1f30('0x2')]},'moduleCreate':{'type':Sequelize['ENUM'](_0x1f30('0x3'),'contact','nothing'),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0x1f30('0x4')](_0x1f30('0x5'),_0x1f30('0x6'),_0x1f30('0x3')),'defaultValue':_0x1f30('0x5')},'description':{'type':Sequelize[_0x1f30('0x2')]}};
\ No newline at end of file
+var _0x6797=['nothing','sequelize','exports','STRING','ENUM','lead','contact'];(function(_0x5eba42,_0x5e100){var _0x17906c=function(_0x4bb312){while(--_0x4bb312){_0x5eba42['push'](_0x5eba42['shift']());}};_0x17906c(++_0x5e100);}(_0x6797,0x94));var _0x7679=function(_0x2e06e0,_0xc8d819){_0x2e06e0=_0x2e06e0-0x0;var _0x18bd5c=_0x6797[_0x2e06e0];return _0x18bd5c;};'use strict';var Sequelize=require(_0x7679('0x0'));module[_0x7679('0x1')]={'name':{'type':Sequelize[_0x7679('0x2')]},'moduleCreate':{'type':Sequelize[_0x7679('0x3')](_0x7679('0x4'),_0x7679('0x5'),_0x7679('0x6')),'defaultValue':_0x7679('0x4')},'moduleSearch':{'type':Sequelize[_0x7679('0x3')]('contact_lead',_0x7679('0x5'),_0x7679('0x4')),'defaultValue':'contact_lead'},'description':{'type':Sequelize[_0x7679('0x2')]}};
\ No newline at end of file
index d795656..763ea19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9e3=['zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','end','status','json','offset','limit','count','set','apply','reject','save','update','then','error','stack','name','send','map','ZohoConfiguration','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','catch','params','keys','includeAll','include','find','create','body','destroy','getFields','getSubjects','findOne','ZohoField','getDescriptions','eml-format','rimraf'];(function(_0x29abe4,_0xffec54){var _0x5bae3b=function(_0xad4366){while(--_0xad4366){_0x29abe4['push'](_0x29abe4['shift']());}};_0x5bae3b(++_0xffec54);}(_0xc9e3,0x98));var _0x3c9e=function(_0x54c6d8,_0x346092){_0x54c6d8=_0x54c6d8-0x0;var _0xe335bb=_0xc9e3[_0x54c6d8];return _0xe335bb;};'use strict';var emlformat=require(_0x3c9e('0x0'));var rimraf=require(_0x3c9e('0x1'));var zipdir=require(_0x3c9e('0x2'));var jsonpatch=require(_0x3c9e('0x3'));var rp=require(_0x3c9e('0x4'));var moment=require(_0x3c9e('0x5'));var BPromise=require(_0x3c9e('0x6'));var Mustache=require('mustache');var util=require(_0x3c9e('0x7'));var path=require(_0x3c9e('0x8'));var sox=require(_0x3c9e('0x9'));var csv=require(_0x3c9e('0xa'));var ejs=require(_0x3c9e('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3c9e('0xc'));var squel=require(_0x3c9e('0xd'));var crypto=require('crypto');var jsforce=require(_0x3c9e('0xe'));var deskjs=require(_0x3c9e('0xf'));var toCsv=require('to-csv');var querystring=require(_0x3c9e('0x10'));var Papa=require(_0x3c9e('0x11'));var Redis=require('ioredis');var authService=require(_0x3c9e('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x3c9e('0x13'));var hardwareService=require(_0x3c9e('0x14'));var logger=require('../../config/logger')(_0x3c9e('0x15'));var utils=require(_0x3c9e('0x16'));var config=require(_0x3c9e('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x46c74f,_0x42e00b){_0x42e00b=_0x42e00b||0xcc;return function(_0x5152da){if(_0x5152da){return _0x46c74f[_0x3c9e('0x18')](_0x42e00b);}return _0x46c74f['status'](_0x42e00b)[_0x3c9e('0x19')]();};}function respondWithResult(_0x399fa5,_0x4dfc5d){_0x4dfc5d=_0x4dfc5d||0xc8;return function(_0x5de3e7){if(_0x5de3e7){return _0x399fa5[_0x3c9e('0x1a')](_0x4dfc5d)[_0x3c9e('0x1b')](_0x5de3e7);}};}function respondWithFilteredResult(_0x24767a,_0x49e922){return function(_0x36aae4){if(_0x36aae4){var _0x2c69d9=typeof _0x49e922[_0x3c9e('0x1c')]==='undefined'&&typeof _0x49e922[_0x3c9e('0x1d')]==='undefined';var _0x25eb31=_0x36aae4[_0x3c9e('0x1e')];var _0x9d445c=_0x2c69d9?0x0:_0x49e922[_0x3c9e('0x1c')];var _0x49bddc=_0x2c69d9?_0x36aae4[_0x3c9e('0x1e')]:_0x49e922[_0x3c9e('0x1c')]+_0x49e922['limit'];var _0x47f9eb;if(_0x49bddc>=_0x25eb31){_0x49bddc=_0x25eb31;_0x47f9eb=0xc8;}else{_0x47f9eb=0xce;}_0x24767a['status'](_0x47f9eb);return _0x24767a[_0x3c9e('0x1f')]('Content-Range',_0x9d445c+'-'+_0x49bddc+'/'+_0x25eb31)['json'](_0x36aae4);}return null;};}function patchUpdates(_0x3032ec){return function(_0x109fc7){try{jsonpatch[_0x3c9e('0x20')](_0x109fc7,_0x3032ec,!![]);}catch(_0x72b806){return BPromise[_0x3c9e('0x21')](_0x72b806);}return _0x109fc7[_0x3c9e('0x22')]();};}function saveUpdates(_0x1906a3,_0x1ebcc3){return function(_0x27341f){if(_0x27341f){return _0x27341f[_0x3c9e('0x23')](_0x1906a3)[_0x3c9e('0x24')](function(_0x226a93){return _0x226a93;});}return null;};}function removeEntity(_0x411707,_0x5b5cf2){return function(_0x536f82){if(_0x536f82){return _0x536f82['destroy']()[_0x3c9e('0x24')](function(){_0x411707['status'](0xcc)[_0x3c9e('0x19')]();});}};}function handleEntityNotFound(_0xc9ecb4,_0x56fbca){return function(_0x4bf051){if(!_0x4bf051){_0xc9ecb4[_0x3c9e('0x18')](0x194);}return _0x4bf051;};}function handleError(_0x13dd35,_0x53d50f){_0x53d50f=_0x53d50f||0x1f4;return function(_0x50e288){logger[_0x3c9e('0x25')](_0x50e288[_0x3c9e('0x26')]);if(_0x50e288[_0x3c9e('0x27')]){delete _0x50e288[_0x3c9e('0x27')];}_0x13dd35[_0x3c9e('0x1a')](_0x53d50f)[_0x3c9e('0x28')](_0x50e288);};}exports['index']=function(_0x28ed8c,_0x2e28e8){var _0x2eed25={},_0x104567={},_0x5e4845={'count':0x0,'rows':[]};var _0x3e18f3=_[_0x3c9e('0x29')](db[_0x3c9e('0x2a')][_0x3c9e('0x2b')],function(_0x444f7c){return{'name':_0x444f7c[_0x3c9e('0x2c')],'type':_0x444f7c[_0x3c9e('0x2d')]['key']};});_0x104567[_0x3c9e('0x2e')]=_[_0x3c9e('0x29')](_0x3e18f3,_0x3c9e('0x27'));_0x104567[_0x3c9e('0x2f')]=_['keys'](_0x28ed8c['query']);_0x104567[_0x3c9e('0x30')]=_[_0x3c9e('0x31')](_0x104567[_0x3c9e('0x2e')],_0x104567[_0x3c9e('0x2f')]);_0x2eed25[_0x3c9e('0x32')]=_[_0x3c9e('0x31')](_0x104567[_0x3c9e('0x2e')],qs[_0x3c9e('0x33')](_0x28ed8c[_0x3c9e('0x2f')][_0x3c9e('0x33')]));_0x2eed25[_0x3c9e('0x32')]=_0x2eed25[_0x3c9e('0x32')][_0x3c9e('0x34')]?_0x2eed25[_0x3c9e('0x32')]:_0x104567[_0x3c9e('0x2e')];if(!_0x28ed8c['query'][_0x3c9e('0x35')](_0x3c9e('0x36'))){_0x2eed25[_0x3c9e('0x1d')]=qs[_0x3c9e('0x1d')](_0x28ed8c[_0x3c9e('0x2f')][_0x3c9e('0x1d')]);_0x2eed25['offset']=qs[_0x3c9e('0x1c')](_0x28ed8c[_0x3c9e('0x2f')]['offset']);}_0x2eed25[_0x3c9e('0x37')]=qs[_0x3c9e('0x38')](_0x28ed8c[_0x3c9e('0x2f')][_0x3c9e('0x38')]);_0x2eed25[_0x3c9e('0x39')]=qs[_0x3c9e('0x30')](_[_0x3c9e('0x3a')](_0x28ed8c[_0x3c9e('0x2f')],_0x104567[_0x3c9e('0x30')]),_0x3e18f3);if(_0x28ed8c[_0x3c9e('0x2f')][_0x3c9e('0x3b')]){_0x2eed25[_0x3c9e('0x39')]=_['merge'](_0x2eed25[_0x3c9e('0x39')],{'$or':_[_0x3c9e('0x29')](_0x3e18f3,function(_0xfb80a5){if(_0xfb80a5['type']!==_0x3c9e('0x3c')){var _0x58a11f={};_0x58a11f[_0xfb80a5[_0x3c9e('0x27')]]={'$like':'%'+_0x28ed8c[_0x3c9e('0x2f')]['filter']+'%'};return _0x58a11f;}})});}_0x2eed25=_[_0x3c9e('0x3d')]({},_0x2eed25,_0x28ed8c[_0x3c9e('0x3e')]);var _0x2a3d02={'where':_0x2eed25[_0x3c9e('0x39')]};return db[_0x3c9e('0x2a')]['count'](_0x2a3d02)['then'](function(_0x34b5da){_0x5e4845[_0x3c9e('0x1e')]=_0x34b5da;if(_0x28ed8c[_0x3c9e('0x2f')]['includeAll']){_0x2eed25['include']=[{'all':!![]}];}return db['ZohoConfiguration']['findAll'](_0x2eed25);})['then'](function(_0x4d62fc){_0x5e4845['rows']=_0x4d62fc;return _0x5e4845;})[_0x3c9e('0x24')](respondWithFilteredResult(_0x2e28e8,_0x2eed25))[_0x3c9e('0x3f')](handleError(_0x2e28e8,null));};exports['show']=function(_0x1020e2,_0x40d93a){var _0x58bc74={'raw':![],'where':{'id':_0x1020e2[_0x3c9e('0x40')]['id']}},_0x8d4a58={};_0x8d4a58[_0x3c9e('0x2e')]=_[_0x3c9e('0x41')](db[_0x3c9e('0x2a')][_0x3c9e('0x2b')]);_0x8d4a58[_0x3c9e('0x2f')]=_[_0x3c9e('0x41')](_0x1020e2[_0x3c9e('0x2f')]);_0x8d4a58[_0x3c9e('0x30')]=_[_0x3c9e('0x31')](_0x8d4a58[_0x3c9e('0x2e')],_0x8d4a58[_0x3c9e('0x2f')]);_0x58bc74[_0x3c9e('0x32')]=_[_0x3c9e('0x31')](_0x8d4a58[_0x3c9e('0x2e')],qs[_0x3c9e('0x33')](_0x1020e2[_0x3c9e('0x2f')]['fields']));_0x58bc74[_0x3c9e('0x32')]=_0x58bc74[_0x3c9e('0x32')][_0x3c9e('0x34')]?_0x58bc74[_0x3c9e('0x32')]:_0x8d4a58[_0x3c9e('0x2e')];if(_0x1020e2[_0x3c9e('0x2f')][_0x3c9e('0x42')]){_0x58bc74[_0x3c9e('0x43')]=[{'all':!![]}];}_0x58bc74=_[_0x3c9e('0x3d')]({},_0x58bc74,_0x1020e2['options']);return db['ZohoConfiguration'][_0x3c9e('0x44')](_0x58bc74)[_0x3c9e('0x24')](handleEntityNotFound(_0x40d93a,null))[_0x3c9e('0x24')](respondWithResult(_0x40d93a,null))[_0x3c9e('0x3f')](handleError(_0x40d93a,null));};exports[_0x3c9e('0x45')]=function(_0x37425a,_0x5a4288){return db[_0x3c9e('0x2a')]['create'](_0x37425a['body'],{})[_0x3c9e('0x24')](respondWithResult(_0x5a4288,0xc9))['catch'](handleError(_0x5a4288,null));};exports['update']=function(_0x12a9e8,_0x202bb0){if(_0x12a9e8[_0x3c9e('0x46')]['id']){delete _0x12a9e8[_0x3c9e('0x46')]['id'];}return db[_0x3c9e('0x2a')][_0x3c9e('0x44')]({'where':{'id':_0x12a9e8[_0x3c9e('0x40')]['id']}})[_0x3c9e('0x24')](handleEntityNotFound(_0x202bb0,null))[_0x3c9e('0x24')](saveUpdates(_0x12a9e8['body'],null))['then'](respondWithResult(_0x202bb0,null))[_0x3c9e('0x3f')](handleError(_0x202bb0,null));};exports[_0x3c9e('0x47')]=function(_0x233b05,_0x318203){return db['ZohoConfiguration']['find']({'where':{'id':_0x233b05[_0x3c9e('0x40')]['id']}})[_0x3c9e('0x24')](handleEntityNotFound(_0x318203,null))[_0x3c9e('0x24')](removeEntity(_0x318203,null))[_0x3c9e('0x3f')](handleError(_0x318203,null));};exports[_0x3c9e('0x48')]=function(_0x14f7d4,_0x1e45b3,_0x2c8caa){var _0x1346f5={};var _0x30a122={};var _0x11f1a7;var _0x357275;return db[_0x3c9e('0x2a')]['findOne']({'where':{'id':_0x14f7d4['params']['id']}})[_0x3c9e('0x24')](handleEntityNotFound(_0x1e45b3,null))[_0x3c9e('0x24')](function(_0x15e9bb){if(_0x15e9bb){_0x11f1a7=_0x15e9bb;_0x30a122[_0x3c9e('0x2e')]=_['keys'](db['ZohoField']['rawAttributes']);_0x30a122[_0x3c9e('0x2f')]=_['keys'](_0x14f7d4[_0x3c9e('0x2f')]);_0x30a122['filters']=_[_0x3c9e('0x31')](_0x30a122[_0x3c9e('0x2e')],_0x30a122[_0x3c9e('0x2f')]);_0x1346f5[_0x3c9e('0x32')]=_[_0x3c9e('0x31')](_0x30a122[_0x3c9e('0x2e')],qs[_0x3c9e('0x33')](_0x14f7d4[_0x3c9e('0x2f')][_0x3c9e('0x33')]));_0x1346f5[_0x3c9e('0x32')]=_0x1346f5[_0x3c9e('0x32')][_0x3c9e('0x34')]?_0x1346f5[_0x3c9e('0x32')]:_0x30a122['model'];_0x1346f5['order']=qs[_0x3c9e('0x38')](_0x14f7d4[_0x3c9e('0x2f')][_0x3c9e('0x38')]);_0x1346f5['where']=qs['filters'](_[_0x3c9e('0x3a')](_0x14f7d4[_0x3c9e('0x2f')],_0x30a122['filters']));if(_0x14f7d4[_0x3c9e('0x2f')]['filter']){_0x1346f5[_0x3c9e('0x39')]=_[_0x3c9e('0x3d')](_0x1346f5[_0x3c9e('0x39')],{'$or':_['map'](_0x1346f5[_0x3c9e('0x32')],function(_0x3d453a){var _0x51b4bf={};_0x51b4bf[_0x3d453a]={'$like':'%'+_0x14f7d4[_0x3c9e('0x2f')][_0x3c9e('0x3b')]+'%'};return _0x51b4bf;})});}_0x1346f5=_[_0x3c9e('0x3d')]({},_0x1346f5,_0x14f7d4[_0x3c9e('0x3e')]);return _0x11f1a7[_0x3c9e('0x48')](_0x1346f5);}})[_0x3c9e('0x24')](function(_0x3555b4){if(_0x3555b4){_0x357275=_0x3555b4[_0x3c9e('0x34')];if(!_0x14f7d4['query'][_0x3c9e('0x35')](_0x3c9e('0x36'))){_0x1346f5[_0x3c9e('0x1d')]=qs['limit'](_0x14f7d4[_0x3c9e('0x2f')]['limit']);_0x1346f5[_0x3c9e('0x1c')]=qs['offset'](_0x14f7d4['query'][_0x3c9e('0x1c')]);}return _0x11f1a7[_0x3c9e('0x48')](_0x1346f5);}})[_0x3c9e('0x24')](function(_0x16b558){if(_0x16b558){return _0x16b558?{'count':_0x357275,'rows':_0x16b558}:null;}})[_0x3c9e('0x24')](respondWithResult(_0x1e45b3,null))[_0x3c9e('0x3f')](handleError(_0x1e45b3,null));};exports[_0x3c9e('0x49')]=function(_0x582b67,_0x599752,_0x5b4073){var _0x211402={};var _0x59e3b3={};var _0x30a360;var _0x247e62;return db[_0x3c9e('0x2a')]['findOne']({'where':{'id':_0x582b67[_0x3c9e('0x40')]['id']}})[_0x3c9e('0x24')](handleEntityNotFound(_0x599752,null))[_0x3c9e('0x24')](function(_0x79fe32){if(_0x79fe32){_0x30a360=_0x79fe32;_0x59e3b3[_0x3c9e('0x2e')]=_['keys'](db['ZohoField'][_0x3c9e('0x2b')]);_0x59e3b3['query']=_[_0x3c9e('0x41')](_0x582b67[_0x3c9e('0x2f')]);_0x59e3b3[_0x3c9e('0x30')]=_[_0x3c9e('0x31')](_0x59e3b3['model'],_0x59e3b3[_0x3c9e('0x2f')]);_0x211402[_0x3c9e('0x32')]=_[_0x3c9e('0x31')](_0x59e3b3[_0x3c9e('0x2e')],qs[_0x3c9e('0x33')](_0x582b67[_0x3c9e('0x2f')][_0x3c9e('0x33')]));_0x211402[_0x3c9e('0x32')]=_0x211402['attributes'][_0x3c9e('0x34')]?_0x211402[_0x3c9e('0x32')]:_0x59e3b3[_0x3c9e('0x2e')];_0x211402['order']=qs[_0x3c9e('0x38')](_0x582b67[_0x3c9e('0x2f')][_0x3c9e('0x38')]);_0x211402[_0x3c9e('0x39')]=qs[_0x3c9e('0x30')](_[_0x3c9e('0x3a')](_0x582b67['query'],_0x59e3b3[_0x3c9e('0x30')]));if(_0x582b67[_0x3c9e('0x2f')][_0x3c9e('0x3b')]){_0x211402[_0x3c9e('0x39')]=_[_0x3c9e('0x3d')](_0x211402['where'],{'$or':_[_0x3c9e('0x29')](_0x211402[_0x3c9e('0x32')],function(_0x45e96f){var _0xb001de={};_0xb001de[_0x45e96f]={'$like':'%'+_0x582b67[_0x3c9e('0x2f')][_0x3c9e('0x3b')]+'%'};return _0xb001de;})});}_0x211402=_[_0x3c9e('0x3d')]({},_0x211402,_0x582b67[_0x3c9e('0x3e')]);return _0x30a360[_0x3c9e('0x49')](_0x211402);}})[_0x3c9e('0x24')](function(_0xf44237){if(_0xf44237){_0x247e62=_0xf44237[_0x3c9e('0x34')];if(!_0x582b67[_0x3c9e('0x2f')][_0x3c9e('0x35')](_0x3c9e('0x36'))){_0x211402[_0x3c9e('0x1d')]=qs['limit'](_0x582b67[_0x3c9e('0x2f')][_0x3c9e('0x1d')]);_0x211402['offset']=qs['offset'](_0x582b67[_0x3c9e('0x2f')][_0x3c9e('0x1c')]);}return _0x30a360[_0x3c9e('0x49')](_0x211402);}})[_0x3c9e('0x24')](function(_0x19a5ea){if(_0x19a5ea){return _0x19a5ea?{'count':_0x247e62,'rows':_0x19a5ea}:null;}})[_0x3c9e('0x24')](respondWithResult(_0x599752,null))[_0x3c9e('0x3f')](handleError(_0x599752,null));};exports['getDescriptions']=function(_0xe03d88,_0x1f427a,_0x48deb5){var _0xd4058={};var _0x4c6781={};var _0x4a88fe;var _0x10fa70;return db[_0x3c9e('0x2a')][_0x3c9e('0x4a')]({'where':{'id':_0xe03d88[_0x3c9e('0x40')]['id']}})['then'](handleEntityNotFound(_0x1f427a,null))[_0x3c9e('0x24')](function(_0x281195){if(_0x281195){_0x4a88fe=_0x281195;_0x4c6781['model']=_[_0x3c9e('0x41')](db[_0x3c9e('0x4b')][_0x3c9e('0x2b')]);_0x4c6781[_0x3c9e('0x2f')]=_[_0x3c9e('0x41')](_0xe03d88['query']);_0x4c6781[_0x3c9e('0x30')]=_[_0x3c9e('0x31')](_0x4c6781[_0x3c9e('0x2e')],_0x4c6781[_0x3c9e('0x2f')]);_0xd4058[_0x3c9e('0x32')]=_[_0x3c9e('0x31')](_0x4c6781[_0x3c9e('0x2e')],qs[_0x3c9e('0x33')](_0xe03d88[_0x3c9e('0x2f')][_0x3c9e('0x33')]));_0xd4058[_0x3c9e('0x32')]=_0xd4058['attributes'][_0x3c9e('0x34')]?_0xd4058[_0x3c9e('0x32')]:_0x4c6781[_0x3c9e('0x2e')];_0xd4058[_0x3c9e('0x37')]=qs[_0x3c9e('0x38')](_0xe03d88[_0x3c9e('0x2f')][_0x3c9e('0x38')]);_0xd4058['where']=qs[_0x3c9e('0x30')](_[_0x3c9e('0x3a')](_0xe03d88['query'],_0x4c6781[_0x3c9e('0x30')]));if(_0xe03d88[_0x3c9e('0x2f')][_0x3c9e('0x3b')]){_0xd4058[_0x3c9e('0x39')]=_['merge'](_0xd4058[_0x3c9e('0x39')],{'$or':_[_0x3c9e('0x29')](_0xd4058[_0x3c9e('0x32')],function(_0xe0ef50){var _0x2ee995={};_0x2ee995[_0xe0ef50]={'$like':'%'+_0xe03d88[_0x3c9e('0x2f')][_0x3c9e('0x3b')]+'%'};return _0x2ee995;})});}_0xd4058=_[_0x3c9e('0x3d')]({},_0xd4058,_0xe03d88[_0x3c9e('0x3e')]);return _0x4a88fe[_0x3c9e('0x4c')](_0xd4058);}})[_0x3c9e('0x24')](function(_0xcdf969){if(_0xcdf969){_0x10fa70=_0xcdf969[_0x3c9e('0x34')];if(!_0xe03d88[_0x3c9e('0x2f')][_0x3c9e('0x35')](_0x3c9e('0x36'))){_0xd4058[_0x3c9e('0x1d')]=qs[_0x3c9e('0x1d')](_0xe03d88[_0x3c9e('0x2f')][_0x3c9e('0x1d')]);_0xd4058[_0x3c9e('0x1c')]=qs[_0x3c9e('0x1c')](_0xe03d88[_0x3c9e('0x2f')][_0x3c9e('0x1c')]);}return _0x4a88fe['getDescriptions'](_0xd4058);}})[_0x3c9e('0x24')](function(_0x52cb00){if(_0x52cb00){return _0x52cb00?{'count':_0x10fa70,'rows':_0x52cb00}:null;}})['then'](respondWithResult(_0x1f427a,null))[_0x3c9e('0x3f')](handleError(_0x1f427a,null));};
\ No newline at end of file
+var _0xaa70=['zip-dir','request-promise','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','update','then','error','stack','send','index','map','ZohoConfiguration','rawAttributes','fieldName','type','name','query','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','show','params','keys','fields','options','find','catch','create','body','destroy','getFields','findOne','getSubjects','ZohoField','order','getDescriptions','eml-format','rimraf'];(function(_0x553770,_0x57e1f4){var _0x131be5=function(_0x22ad5f){while(--_0x22ad5f){_0x553770['push'](_0x553770['shift']());}};_0x131be5(++_0x57e1f4);}(_0xaa70,0x146));var _0x0aa7=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xaa70[_0x5b78e8];return _0xf2c321;};'use strict';var emlformat=require(_0x0aa7('0x0'));var rimraf=require(_0x0aa7('0x1'));var zipdir=require(_0x0aa7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0aa7('0x3'));var moment=require('moment');var BPromise=require(_0x0aa7('0x4'));var Mustache=require(_0x0aa7('0x5'));var util=require('util');var path=require(_0x0aa7('0x6'));var sox=require(_0x0aa7('0x7'));var csv=require('to-csv');var ejs=require(_0x0aa7('0x8'));var fs=require('fs');var fs_extra=require(_0x0aa7('0x9'));var _=require(_0x0aa7('0xa'));var squel=require(_0x0aa7('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x0aa7('0xc'));var querystring=require(_0x0aa7('0xd'));var Papa=require(_0x0aa7('0xe'));var Redis=require(_0x0aa7('0xf'));var authService=require(_0x0aa7('0x10'));var qs=require(_0x0aa7('0x11'));var as=require(_0x0aa7('0x12'));var hardwareService=require(_0x0aa7('0x13'));var logger=require(_0x0aa7('0x14'))(_0x0aa7('0x15'));var utils=require('../../config/utils');var config=require(_0x0aa7('0x16'));var licenseUtil=require(_0x0aa7('0x17'));var db=require(_0x0aa7('0x18'))['db'];function respondWithStatusCode(_0x2f748e,_0x292c53){_0x292c53=_0x292c53||0xcc;return function(_0x51b50e){if(_0x51b50e){return _0x2f748e[_0x0aa7('0x19')](_0x292c53);}return _0x2f748e[_0x0aa7('0x1a')](_0x292c53)[_0x0aa7('0x1b')]();};}function respondWithResult(_0x8ed278,_0x393e37){_0x393e37=_0x393e37||0xc8;return function(_0x694956){if(_0x694956){return _0x8ed278[_0x0aa7('0x1a')](_0x393e37)[_0x0aa7('0x1c')](_0x694956);}};}function respondWithFilteredResult(_0x41da40,_0x435e78){return function(_0x56f914){if(_0x56f914){var _0x431833=typeof _0x435e78['offset']===_0x0aa7('0x1d')&&typeof _0x435e78[_0x0aa7('0x1e')]===_0x0aa7('0x1d');var _0x47ae1b=_0x56f914['count'];var _0x2fdb97=_0x431833?0x0:_0x435e78[_0x0aa7('0x1f')];var _0x5845a5=_0x431833?_0x56f914[_0x0aa7('0x20')]:_0x435e78['offset']+_0x435e78[_0x0aa7('0x1e')];var _0xf746b2;if(_0x5845a5>=_0x47ae1b){_0x5845a5=_0x47ae1b;_0xf746b2=0xc8;}else{_0xf746b2=0xce;}_0x41da40[_0x0aa7('0x1a')](_0xf746b2);return _0x41da40[_0x0aa7('0x21')](_0x0aa7('0x22'),_0x2fdb97+'-'+_0x5845a5+'/'+_0x47ae1b)[_0x0aa7('0x1c')](_0x56f914);}return null;};}function patchUpdates(_0x3f0ae9){return function(_0x4d45e4){try{jsonpatch[_0x0aa7('0x23')](_0x4d45e4,_0x3f0ae9,!![]);}catch(_0x5baddf){return BPromise['reject'](_0x5baddf);}return _0x4d45e4['save']();};}function saveUpdates(_0xc76d6c,_0x56f95e){return function(_0x385a45){if(_0x385a45){return _0x385a45[_0x0aa7('0x24')](_0xc76d6c)[_0x0aa7('0x25')](function(_0x4e94f1){return _0x4e94f1;});}return null;};}function removeEntity(_0x27138e,_0x328c4f){return function(_0xdf5e49){if(_0xdf5e49){return _0xdf5e49['destroy']()[_0x0aa7('0x25')](function(){_0x27138e[_0x0aa7('0x1a')](0xcc)[_0x0aa7('0x1b')]();});}};}function handleEntityNotFound(_0x3576f1,_0x1f9835){return function(_0x68ab19){if(!_0x68ab19){_0x3576f1[_0x0aa7('0x19')](0x194);}return _0x68ab19;};}function handleError(_0x504227,_0x275f29){_0x275f29=_0x275f29||0x1f4;return function(_0x213ca6){logger[_0x0aa7('0x26')](_0x213ca6[_0x0aa7('0x27')]);if(_0x213ca6['name']){delete _0x213ca6['name'];}_0x504227[_0x0aa7('0x1a')](_0x275f29)[_0x0aa7('0x28')](_0x213ca6);};}exports[_0x0aa7('0x29')]=function(_0xed322a,_0x4d63f2){var _0x6899b={},_0x7ce039={},_0x5ccd79={'count':0x0,'rows':[]};var _0x4fc4c3=_[_0x0aa7('0x2a')](db[_0x0aa7('0x2b')][_0x0aa7('0x2c')],function(_0x31ec39){return{'name':_0x31ec39[_0x0aa7('0x2d')],'type':_0x31ec39[_0x0aa7('0x2e')]['key']};});_0x7ce039['model']=_[_0x0aa7('0x2a')](_0x4fc4c3,_0x0aa7('0x2f'));_0x7ce039[_0x0aa7('0x30')]=_['keys'](_0xed322a['query']);_0x7ce039[_0x0aa7('0x31')]=_[_0x0aa7('0x32')](_0x7ce039[_0x0aa7('0x33')],_0x7ce039[_0x0aa7('0x30')]);_0x6899b[_0x0aa7('0x34')]=_[_0x0aa7('0x32')](_0x7ce039['model'],qs['fields'](_0xed322a['query']['fields']));_0x6899b['attributes']=_0x6899b['attributes'][_0x0aa7('0x35')]?_0x6899b[_0x0aa7('0x34')]:_0x7ce039[_0x0aa7('0x33')];if(!_0xed322a[_0x0aa7('0x30')][_0x0aa7('0x36')](_0x0aa7('0x37'))){_0x6899b[_0x0aa7('0x1e')]=qs[_0x0aa7('0x1e')](_0xed322a['query']['limit']);_0x6899b[_0x0aa7('0x1f')]=qs[_0x0aa7('0x1f')](_0xed322a['query'][_0x0aa7('0x1f')]);}_0x6899b['order']=qs['sort'](_0xed322a[_0x0aa7('0x30')][_0x0aa7('0x38')]);_0x6899b[_0x0aa7('0x39')]=qs[_0x0aa7('0x31')](_[_0x0aa7('0x3a')](_0xed322a[_0x0aa7('0x30')],_0x7ce039[_0x0aa7('0x31')]),_0x4fc4c3);if(_0xed322a[_0x0aa7('0x30')]['filter']){_0x6899b[_0x0aa7('0x39')]=_[_0x0aa7('0x3b')](_0x6899b['where'],{'$or':_[_0x0aa7('0x2a')](_0x4fc4c3,function(_0x267b4f){if(_0x267b4f['type']!==_0x0aa7('0x3c')){var _0x4187a4={};_0x4187a4[_0x267b4f[_0x0aa7('0x2f')]]={'$like':'%'+_0xed322a[_0x0aa7('0x30')][_0x0aa7('0x3d')]+'%'};return _0x4187a4;}})});}_0x6899b=_[_0x0aa7('0x3b')]({},_0x6899b,_0xed322a['options']);var _0x1f1de9={'where':_0x6899b[_0x0aa7('0x39')]};return db['ZohoConfiguration']['count'](_0x1f1de9)['then'](function(_0x304c9b){_0x5ccd79[_0x0aa7('0x20')]=_0x304c9b;if(_0xed322a[_0x0aa7('0x30')][_0x0aa7('0x3e')]){_0x6899b[_0x0aa7('0x3f')]=[{'all':!![]}];}return db[_0x0aa7('0x2b')][_0x0aa7('0x40')](_0x6899b);})[_0x0aa7('0x25')](function(_0x3eb7dd){_0x5ccd79[_0x0aa7('0x41')]=_0x3eb7dd;return _0x5ccd79;})[_0x0aa7('0x25')](respondWithFilteredResult(_0x4d63f2,_0x6899b))['catch'](handleError(_0x4d63f2,null));};exports[_0x0aa7('0x42')]=function(_0x292084,_0x10f7ff){var _0x454305={'raw':![],'where':{'id':_0x292084[_0x0aa7('0x43')]['id']}},_0x1edd3c={};_0x1edd3c[_0x0aa7('0x33')]=_[_0x0aa7('0x44')](db[_0x0aa7('0x2b')][_0x0aa7('0x2c')]);_0x1edd3c[_0x0aa7('0x30')]=_[_0x0aa7('0x44')](_0x292084[_0x0aa7('0x30')]);_0x1edd3c[_0x0aa7('0x31')]=_['intersection'](_0x1edd3c['model'],_0x1edd3c[_0x0aa7('0x30')]);_0x454305[_0x0aa7('0x34')]=_[_0x0aa7('0x32')](_0x1edd3c['model'],qs['fields'](_0x292084[_0x0aa7('0x30')][_0x0aa7('0x45')]));_0x454305[_0x0aa7('0x34')]=_0x454305[_0x0aa7('0x34')][_0x0aa7('0x35')]?_0x454305[_0x0aa7('0x34')]:_0x1edd3c[_0x0aa7('0x33')];if(_0x292084[_0x0aa7('0x30')][_0x0aa7('0x3e')]){_0x454305['include']=[{'all':!![]}];}_0x454305=_[_0x0aa7('0x3b')]({},_0x454305,_0x292084[_0x0aa7('0x46')]);return db['ZohoConfiguration'][_0x0aa7('0x47')](_0x454305)[_0x0aa7('0x25')](handleEntityNotFound(_0x10f7ff,null))[_0x0aa7('0x25')](respondWithResult(_0x10f7ff,null))[_0x0aa7('0x48')](handleError(_0x10f7ff,null));};exports[_0x0aa7('0x49')]=function(_0xf7af3a,_0x1f27e8){return db[_0x0aa7('0x2b')][_0x0aa7('0x49')](_0xf7af3a[_0x0aa7('0x4a')],{})[_0x0aa7('0x25')](respondWithResult(_0x1f27e8,0xc9))['catch'](handleError(_0x1f27e8,null));};exports['update']=function(_0x4a060e,_0xa02a90){if(_0x4a060e[_0x0aa7('0x4a')]['id']){delete _0x4a060e[_0x0aa7('0x4a')]['id'];}return db['ZohoConfiguration'][_0x0aa7('0x47')]({'where':{'id':_0x4a060e[_0x0aa7('0x43')]['id']}})[_0x0aa7('0x25')](handleEntityNotFound(_0xa02a90,null))[_0x0aa7('0x25')](saveUpdates(_0x4a060e['body'],null))[_0x0aa7('0x25')](respondWithResult(_0xa02a90,null))['catch'](handleError(_0xa02a90,null));};exports[_0x0aa7('0x4b')]=function(_0x4b8a65,_0x58957f){return db[_0x0aa7('0x2b')][_0x0aa7('0x47')]({'where':{'id':_0x4b8a65[_0x0aa7('0x43')]['id']}})[_0x0aa7('0x25')](handleEntityNotFound(_0x58957f,null))[_0x0aa7('0x25')](removeEntity(_0x58957f,null))[_0x0aa7('0x48')](handleError(_0x58957f,null));};exports[_0x0aa7('0x4c')]=function(_0x2850f1,_0x24efb5,_0x39acce){var _0x47a0ee={};var _0x339e59={};var _0x595906;var _0x1c7818;return db[_0x0aa7('0x2b')][_0x0aa7('0x4d')]({'where':{'id':_0x2850f1['params']['id']}})['then'](handleEntityNotFound(_0x24efb5,null))['then'](function(_0x30d461){if(_0x30d461){_0x595906=_0x30d461;_0x339e59[_0x0aa7('0x33')]=_[_0x0aa7('0x44')](db['ZohoField'][_0x0aa7('0x2c')]);_0x339e59[_0x0aa7('0x30')]=_[_0x0aa7('0x44')](_0x2850f1[_0x0aa7('0x30')]);_0x339e59['filters']=_[_0x0aa7('0x32')](_0x339e59[_0x0aa7('0x33')],_0x339e59[_0x0aa7('0x30')]);_0x47a0ee[_0x0aa7('0x34')]=_[_0x0aa7('0x32')](_0x339e59[_0x0aa7('0x33')],qs[_0x0aa7('0x45')](_0x2850f1[_0x0aa7('0x30')][_0x0aa7('0x45')]));_0x47a0ee[_0x0aa7('0x34')]=_0x47a0ee[_0x0aa7('0x34')][_0x0aa7('0x35')]?_0x47a0ee['attributes']:_0x339e59[_0x0aa7('0x33')];_0x47a0ee['order']=qs[_0x0aa7('0x38')](_0x2850f1['query'][_0x0aa7('0x38')]);_0x47a0ee[_0x0aa7('0x39')]=qs['filters'](_['pick'](_0x2850f1[_0x0aa7('0x30')],_0x339e59[_0x0aa7('0x31')]));if(_0x2850f1[_0x0aa7('0x30')][_0x0aa7('0x3d')]){_0x47a0ee[_0x0aa7('0x39')]=_[_0x0aa7('0x3b')](_0x47a0ee[_0x0aa7('0x39')],{'$or':_['map'](_0x47a0ee[_0x0aa7('0x34')],function(_0x364bde){var _0x8aa361={};_0x8aa361[_0x364bde]={'$like':'%'+_0x2850f1[_0x0aa7('0x30')]['filter']+'%'};return _0x8aa361;})});}_0x47a0ee=_['merge']({},_0x47a0ee,_0x2850f1[_0x0aa7('0x46')]);return _0x595906[_0x0aa7('0x4c')](_0x47a0ee);}})[_0x0aa7('0x25')](function(_0x1375db){if(_0x1375db){_0x1c7818=_0x1375db[_0x0aa7('0x35')];if(!_0x2850f1[_0x0aa7('0x30')][_0x0aa7('0x36')](_0x0aa7('0x37'))){_0x47a0ee[_0x0aa7('0x1e')]=qs['limit'](_0x2850f1[_0x0aa7('0x30')][_0x0aa7('0x1e')]);_0x47a0ee[_0x0aa7('0x1f')]=qs[_0x0aa7('0x1f')](_0x2850f1['query'][_0x0aa7('0x1f')]);}return _0x595906[_0x0aa7('0x4c')](_0x47a0ee);}})[_0x0aa7('0x25')](function(_0xf0f2aa){if(_0xf0f2aa){return _0xf0f2aa?{'count':_0x1c7818,'rows':_0xf0f2aa}:null;}})[_0x0aa7('0x25')](respondWithResult(_0x24efb5,null))[_0x0aa7('0x48')](handleError(_0x24efb5,null));};exports[_0x0aa7('0x4e')]=function(_0x270c7b,_0x2d111e,_0x22bdee){var _0x221d78={};var _0x3a900e={};var _0x1841b0;var _0x53eb92;return db['ZohoConfiguration'][_0x0aa7('0x4d')]({'where':{'id':_0x270c7b[_0x0aa7('0x43')]['id']}})[_0x0aa7('0x25')](handleEntityNotFound(_0x2d111e,null))[_0x0aa7('0x25')](function(_0x1c5fc2){if(_0x1c5fc2){_0x1841b0=_0x1c5fc2;_0x3a900e[_0x0aa7('0x33')]=_['keys'](db[_0x0aa7('0x4f')][_0x0aa7('0x2c')]);_0x3a900e[_0x0aa7('0x30')]=_[_0x0aa7('0x44')](_0x270c7b[_0x0aa7('0x30')]);_0x3a900e[_0x0aa7('0x31')]=_[_0x0aa7('0x32')](_0x3a900e[_0x0aa7('0x33')],_0x3a900e[_0x0aa7('0x30')]);_0x221d78['attributes']=_[_0x0aa7('0x32')](_0x3a900e['model'],qs[_0x0aa7('0x45')](_0x270c7b[_0x0aa7('0x30')][_0x0aa7('0x45')]));_0x221d78[_0x0aa7('0x34')]=_0x221d78['attributes']['length']?_0x221d78[_0x0aa7('0x34')]:_0x3a900e['model'];_0x221d78[_0x0aa7('0x50')]=qs[_0x0aa7('0x38')](_0x270c7b[_0x0aa7('0x30')][_0x0aa7('0x38')]);_0x221d78[_0x0aa7('0x39')]=qs[_0x0aa7('0x31')](_[_0x0aa7('0x3a')](_0x270c7b[_0x0aa7('0x30')],_0x3a900e['filters']));if(_0x270c7b[_0x0aa7('0x30')][_0x0aa7('0x3d')]){_0x221d78[_0x0aa7('0x39')]=_[_0x0aa7('0x3b')](_0x221d78[_0x0aa7('0x39')],{'$or':_[_0x0aa7('0x2a')](_0x221d78['attributes'],function(_0x1b08cc){var _0x148113={};_0x148113[_0x1b08cc]={'$like':'%'+_0x270c7b[_0x0aa7('0x30')]['filter']+'%'};return _0x148113;})});}_0x221d78=_[_0x0aa7('0x3b')]({},_0x221d78,_0x270c7b['options']);return _0x1841b0[_0x0aa7('0x4e')](_0x221d78);}})[_0x0aa7('0x25')](function(_0x4834dd){if(_0x4834dd){_0x53eb92=_0x4834dd[_0x0aa7('0x35')];if(!_0x270c7b[_0x0aa7('0x30')]['hasOwnProperty']('nolimit')){_0x221d78[_0x0aa7('0x1e')]=qs[_0x0aa7('0x1e')](_0x270c7b[_0x0aa7('0x30')][_0x0aa7('0x1e')]);_0x221d78[_0x0aa7('0x1f')]=qs['offset'](_0x270c7b[_0x0aa7('0x30')]['offset']);}return _0x1841b0['getSubjects'](_0x221d78);}})[_0x0aa7('0x25')](function(_0x3e5a77){if(_0x3e5a77){return _0x3e5a77?{'count':_0x53eb92,'rows':_0x3e5a77}:null;}})['then'](respondWithResult(_0x2d111e,null))['catch'](handleError(_0x2d111e,null));};exports[_0x0aa7('0x51')]=function(_0x20ea4d,_0x150123,_0x2a2298){var _0x639e52={};var _0x3684f6={};var _0x20ce07;var _0x5aa568;return db[_0x0aa7('0x2b')]['findOne']({'where':{'id':_0x20ea4d[_0x0aa7('0x43')]['id']}})['then'](handleEntityNotFound(_0x150123,null))[_0x0aa7('0x25')](function(_0x10f9ab){if(_0x10f9ab){_0x20ce07=_0x10f9ab;_0x3684f6[_0x0aa7('0x33')]=_[_0x0aa7('0x44')](db[_0x0aa7('0x4f')][_0x0aa7('0x2c')]);_0x3684f6[_0x0aa7('0x30')]=_['keys'](_0x20ea4d[_0x0aa7('0x30')]);_0x3684f6[_0x0aa7('0x31')]=_['intersection'](_0x3684f6[_0x0aa7('0x33')],_0x3684f6[_0x0aa7('0x30')]);_0x639e52[_0x0aa7('0x34')]=_[_0x0aa7('0x32')](_0x3684f6[_0x0aa7('0x33')],qs[_0x0aa7('0x45')](_0x20ea4d[_0x0aa7('0x30')][_0x0aa7('0x45')]));_0x639e52[_0x0aa7('0x34')]=_0x639e52[_0x0aa7('0x34')]['length']?_0x639e52[_0x0aa7('0x34')]:_0x3684f6['model'];_0x639e52['order']=qs[_0x0aa7('0x38')](_0x20ea4d[_0x0aa7('0x30')][_0x0aa7('0x38')]);_0x639e52[_0x0aa7('0x39')]=qs[_0x0aa7('0x31')](_[_0x0aa7('0x3a')](_0x20ea4d['query'],_0x3684f6[_0x0aa7('0x31')]));if(_0x20ea4d[_0x0aa7('0x30')]['filter']){_0x639e52[_0x0aa7('0x39')]=_[_0x0aa7('0x3b')](_0x639e52[_0x0aa7('0x39')],{'$or':_[_0x0aa7('0x2a')](_0x639e52['attributes'],function(_0x5d4a91){var _0x384edf={};_0x384edf[_0x5d4a91]={'$like':'%'+_0x20ea4d[_0x0aa7('0x30')][_0x0aa7('0x3d')]+'%'};return _0x384edf;})});}_0x639e52=_[_0x0aa7('0x3b')]({},_0x639e52,_0x20ea4d['options']);return _0x20ce07[_0x0aa7('0x51')](_0x639e52);}})[_0x0aa7('0x25')](function(_0x456c83){if(_0x456c83){_0x5aa568=_0x456c83[_0x0aa7('0x35')];if(!_0x20ea4d['query'][_0x0aa7('0x36')](_0x0aa7('0x37'))){_0x639e52[_0x0aa7('0x1e')]=qs[_0x0aa7('0x1e')](_0x20ea4d[_0x0aa7('0x30')][_0x0aa7('0x1e')]);_0x639e52['offset']=qs['offset'](_0x20ea4d[_0x0aa7('0x30')][_0x0aa7('0x1f')]);}return _0x20ce07[_0x0aa7('0x51')](_0x639e52);}})[_0x0aa7('0x25')](function(_0x2a4317){if(_0x2a4317){return _0x2a4317?{'count':_0x5aa568,'rows':_0x2a4317}:null;}})[_0x0aa7('0x25')](respondWithResult(_0x150123,null))[_0x0aa7('0x48')](handleError(_0x150123,null));};
\ No newline at end of file
index 00e9c67..9b357e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb778=['lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./intZohoConfiguration.attributes','exports','define','ZohoConfiguration','int_zoho_configurations'];(function(_0x411134,_0x3e39dc){var _0x3e4433=function(_0x43f557){while(--_0x43f557){_0x411134['push'](_0x411134['shift']());}};_0x3e4433(++_0x3e39dc);}(_0xb778,0x193));var _0x8b77=function(_0x77b525,_0xd4dc1e){_0x77b525=_0x77b525-0x0;var _0xa83673=_0xb778[_0x77b525];return _0xa83673;};'use strict';var _=require(_0x8b77('0x0'));var util=require(_0x8b77('0x1'));var logger=require(_0x8b77('0x2'))(_0x8b77('0x3'));var moment=require(_0x8b77('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8b77('0x5'));var rimraf=require(_0x8b77('0x6'));var config=require(_0x8b77('0x7'));var attributes=require(_0x8b77('0x8'));module[_0x8b77('0x9')]=function(_0x47a7cc,_0x57b26b){return _0x47a7cc[_0x8b77('0xa')](_0x8b77('0xb'),attributes,{'tableName':_0x8b77('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x318e=['./intZohoConfiguration.attributes','exports','define','ZohoConfiguration','int_zoho_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x3a4c51,_0x1f8d2c){var _0x42c5af=function(_0x1d72eb){while(--_0x1d72eb){_0x3a4c51['push'](_0x3a4c51['shift']());}};_0x42c5af(++_0x1f8d2c);}(_0x318e,0x17f));var _0xe318=function(_0x15cfcf,_0x5e469c){_0x15cfcf=_0x15cfcf-0x0;var _0x1b10e9=_0x318e[_0x15cfcf];return _0x1b10e9;};'use strict';var _=require(_0xe318('0x0'));var util=require(_0xe318('0x1'));var logger=require(_0xe318('0x2'))(_0xe318('0x3'));var moment=require(_0xe318('0x4'));var BPromise=require(_0xe318('0x5'));var rp=require(_0xe318('0x6'));var fs=require('fs');var path=require(_0xe318('0x7'));var rimraf=require('rimraf');var config=require(_0xe318('0x8'));var attributes=require(_0xe318('0x9'));module[_0xe318('0xa')]=function(_0xde9245,_0x3c3e6d){return _0xde9245[_0xe318('0xb')](_0xe318('0xc'),attributes,{'tableName':_0xe318('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f3cc79c..1b2f8ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6093=['then','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request'];(function(_0x5cb1af,_0x4bdc8c){var _0x8d7940=function(_0x3db70a){while(--_0x3db70a){_0x5cb1af['push'](_0x5cb1af['shift']());}};_0x8d7940(++_0x4bdc8c);}(_0x6093,0x182));var _0x3609=function(_0x4040a6,_0x49cbcd){_0x4040a6=_0x4040a6-0x0;var _0x55fd3f=_0x6093[_0x4040a6];return _0x55fd3f;};'use strict';var _=require('lodash');var util=require(_0x3609('0x0'));var moment=require('moment');var BPromise=require(_0x3609('0x1'));var rs=require(_0x3609('0x2'));var fs=require('fs');var Redis=require(_0x3609('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3609('0x4'));var logger=require(_0x3609('0x5'))('rpc');var config=require(_0x3609('0x6'));var jayson=require(_0x3609('0x7'));var client=jayson[_0x3609('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4bbfcf,_0x189b9d,_0xb2b2be){return new BPromise(function(_0x367b24,_0x5d3b4e){return client[_0x3609('0x9')](_0x4bbfcf,_0xb2b2be)[_0x3609('0xa')](function(_0x71e5e9){logger[_0x3609('0xb')](_0x3609('0xc'),_0x189b9d,_0x3609('0xd'));logger[_0x3609('0xe')](_0x3609('0xf'),_0x189b9d,_0x3609('0xd'),JSON[_0x3609('0x10')](_0x71e5e9));if(_0x71e5e9[_0x3609('0x11')]){if(_0x71e5e9[_0x3609('0x11')][_0x3609('0x12')]===0x1f4){logger[_0x3609('0x11')](_0x3609('0xc'),_0x189b9d,_0x71e5e9['error'][_0x3609('0x13')]);return _0x5d3b4e(_0x71e5e9[_0x3609('0x11')][_0x3609('0x13')]);}logger[_0x3609('0x11')]('ZohoConfiguration,\x20%s,\x20%s',_0x189b9d,_0x71e5e9[_0x3609('0x11')]['message']);return _0x367b24(_0x71e5e9[_0x3609('0x11')][_0x3609('0x13')]);}else{logger[_0x3609('0xb')](_0x3609('0xc'),_0x189b9d,_0x3609('0xd'));_0x367b24(_0x71e5e9[_0x3609('0x14')][_0x3609('0x13')]);}})[_0x3609('0x15')](function(_0x34b390){logger['error']('ZohoConfiguration,\x20%s,\x20%s',_0x189b9d,_0x34b390);_0x5d3b4e(_0x34b390);});});}
\ No newline at end of file
+var _0x986b=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','request\x20sent','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','ZohoConfiguration,\x20%s,\x20%s','message','result','catch','util','moment','randomstring','ioredis'];(function(_0x3a8b45,_0x52da26){var _0x37a80c=function(_0x31d9df){while(--_0x31d9df){_0x3a8b45['push'](_0x3a8b45['shift']());}};_0x37a80c(++_0x52da26);}(_0x986b,0x6a));var _0xb986=function(_0x57ffa3,_0x34c610){_0x57ffa3=_0x57ffa3-0x0;var _0x1cf45b=_0x986b[_0x57ffa3];return _0x1cf45b;};'use strict';var _=require('lodash');var util=require(_0xb986('0x0'));var moment=require(_0xb986('0x1'));var BPromise=require('bluebird');var rs=require(_0xb986('0x2'));var fs=require('fs');var Redis=require(_0xb986('0x3'));var db=require(_0xb986('0x4'))['db'];var utils=require(_0xb986('0x5'));var logger=require(_0xb986('0x6'))(_0xb986('0x7'));var config=require(_0xb986('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xb986('0x9')][_0xb986('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x517925,_0x357f2e,_0x5ecb11){return new BPromise(function(_0x630496,_0x92688d){return client[_0xb986('0xb')](_0x517925,_0x5ecb11)['then'](function(_0x2b71ab){logger[_0xb986('0xc')]('ZohoConfiguration,\x20%s,\x20%s',_0x357f2e,_0xb986('0xd'));logger['debug'](_0xb986('0xe'),_0x357f2e,_0xb986('0xd'),JSON[_0xb986('0xf')](_0x2b71ab));if(_0x2b71ab[_0xb986('0x10')]){if(_0x2b71ab['error'][_0xb986('0x11')]===0x1f4){logger[_0xb986('0x10')](_0xb986('0x12'),_0x357f2e,_0x2b71ab['error'][_0xb986('0x13')]);return _0x92688d(_0x2b71ab[_0xb986('0x10')]['message']);}logger[_0xb986('0x10')](_0xb986('0x12'),_0x357f2e,_0x2b71ab[_0xb986('0x10')][_0xb986('0x13')]);return _0x630496(_0x2b71ab[_0xb986('0x10')][_0xb986('0x13')]);}else{logger[_0xb986('0xc')](_0xb986('0x12'),_0x357f2e,_0xb986('0xd'));_0x630496(_0x2b71ab[_0xb986('0x14')][_0xb986('0x13')]);}})[_0xb986('0x15')](function(_0x26e6aa){logger[_0xb986('0x10')](_0xb986('0x12'),_0x357f2e,_0x26e6aa);_0x92688d(_0x26e6aa);});});}
\ No newline at end of file
index da4c9f2..0a4d00e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xead4=['connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./intZohoField.controller','get','index','/:id','isAuthenticated','update','delete','destroy','multer','path'];(function(_0x24b2c1,_0x9bc75){var _0x314776=function(_0x34dcbd){while(--_0x34dcbd){_0x24b2c1['push'](_0x24b2c1['shift']());}};_0x314776(++_0x9bc75);}(_0xead4,0x1ed));var _0x4ead=function(_0x308213,_0x224541){_0x308213=_0x308213-0x0;var _0x2e1619=_0xead4[_0x308213];return _0x2e1619;};'use strict';var multer=require(_0x4ead('0x0'));var util=require('util');var path=require(_0x4ead('0x1'));var timeout=require(_0x4ead('0x2'));var express=require(_0x4ead('0x3'));var router=express['Router']();var fs_extra=require(_0x4ead('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x4ead('0x5'));var config=require(_0x4ead('0x6'));var controller=require(_0x4ead('0x7'));router[_0x4ead('0x8')]('/',auth['isAuthenticated'](),controller[_0x4ead('0x9')]);router['get'](_0x4ead('0xa'),auth[_0x4ead('0xb')](),controller['show']);router['post']('/',auth[_0x4ead('0xb')](),controller['create']);router['put'](_0x4ead('0xa'),auth[_0x4ead('0xb')](),controller[_0x4ead('0xc')]);router[_0x4ead('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x4ead('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x2acf=['get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoField.controller'];(function(_0x5459c1,_0x36f6f0){var _0x3f99b5=function(_0x512bea){while(--_0x512bea){_0x5459c1['push'](_0x5459c1['shift']());}};_0x3f99b5(++_0x36f6f0);}(_0x2acf,0x1d7));var _0xf2ac=function(_0x47a12a,_0x70f591){_0x47a12a=_0x47a12a-0x0;var _0x30cd40=_0x2acf[_0x47a12a];return _0x30cd40;};'use strict';var multer=require(_0xf2ac('0x0'));var util=require('util');var path=require(_0xf2ac('0x1'));var timeout=require(_0xf2ac('0x2'));var express=require(_0xf2ac('0x3'));var router=express[_0xf2ac('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xf2ac('0x5'));var interaction=require(_0xf2ac('0x6'));var config=require(_0xf2ac('0x7'));var controller=require(_0xf2ac('0x8'));router[_0xf2ac('0x9')]('/',auth[_0xf2ac('0xa')](),controller['index']);router['get'](_0xf2ac('0xb'),auth[_0xf2ac('0xa')](),controller[_0xf2ac('0xc')]);router[_0xf2ac('0xd')]('/',auth[_0xf2ac('0xa')](),controller[_0xf2ac('0xe')]);router[_0xf2ac('0xf')](_0xf2ac('0xb'),auth[_0xf2ac('0xa')](),controller[_0xf2ac('0x10')]);router[_0xf2ac('0x11')](_0xf2ac('0xb'),auth[_0xf2ac('0xa')](),controller[_0xf2ac('0x12')]);module[_0xf2ac('0x13')]=router;
\ No newline at end of file
index fc457ae..ce82254 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e66=['customVariable','keyValue','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable'];(function(_0x288b2c,_0x50c793){var _0x381897=function(_0x3fc37d){while(--_0x3fc37d){_0x288b2c['push'](_0x288b2c['shift']());}};_0x381897(++_0x50c793);}(_0x3e66,0x1b4));var _0x63e6=function(_0x50e61e,_0x53c188){_0x50e61e=_0x50e61e-0x0;var _0x5b4469=_0x3e66[_0x50e61e];return _0x5b4469;};'use strict';var Sequelize=require(_0x63e6('0x0'));module[_0x63e6('0x1')]={'type':{'type':Sequelize[_0x63e6('0x2')](_0x63e6('0x3'),_0x63e6('0x4'),_0x63e6('0x5'),_0x63e6('0x6'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x63e6('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x63e6('0x2')](_0x63e6('0x3'),'variable',_0x63e6('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x63e6('0x7')]},'nameField':{'type':Sequelize[_0x63e6('0x7')]},'customField':{'type':Sequelize[_0x63e6('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x63e6('0x7')]}};
\ No newline at end of file
+var _0x06c1=['variable','customVariable','keyValue','STRING','sequelize','ENUM','string'];(function(_0x3e955e,_0x2c30f5){var _0x379dbc=function(_0x12db40){while(--_0x12db40){_0x3e955e['push'](_0x3e955e['shift']());}};_0x379dbc(++_0x2c30f5);}(_0x06c1,0x11c));var _0x106c=function(_0x207d2f,_0x44400f){_0x207d2f=_0x207d2f-0x0;var _0x3c3498=_0x06c1[_0x207d2f];return _0x3c3498;};'use strict';var Sequelize=require(_0x106c('0x0'));module['exports']={'type':{'type':Sequelize[_0x106c('0x1')](_0x106c('0x2'),_0x106c('0x3'),_0x106c('0x4'),_0x106c('0x5'),'picklist'),'defaultValue':_0x106c('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x106c('0x1')](_0x106c('0x2'),_0x106c('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x106c('0x6')]},'idField':{'type':Sequelize[_0x106c('0x6')]},'nameField':{'type':Sequelize[_0x106c('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x106c('0x6')]}};
\ No newline at end of file
index 7ae1ecb..f891d8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2883=['ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','reject','save','then','error','stack','name','index','map','fieldName','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','ZohoField','includeAll','include','findAll','catch','show','params','keys','rawAttributes','length','find','create','update','body','destroy','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv'];(function(_0x40b7bd,_0x2f8acc){var _0x30f8a5=function(_0x34d3b3){while(--_0x34d3b3){_0x40b7bd['push'](_0x40b7bd['shift']());}};_0x30f8a5(++_0x2f8acc);}(_0x2883,0x11e));var _0x3288=function(_0x35a543,_0x1b70da){_0x35a543=_0x35a543-0x0;var _0x14fe43=_0x2883[_0x35a543];return _0x14fe43;};'use strict';var emlformat=require(_0x3288('0x0'));var rimraf=require(_0x3288('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3288('0x2'));var rp=require(_0x3288('0x3'));var moment=require(_0x3288('0x4'));var BPromise=require(_0x3288('0x5'));var Mustache=require(_0x3288('0x6'));var util=require(_0x3288('0x7'));var path=require('path');var sox=require(_0x3288('0x8'));var csv=require(_0x3288('0x9'));var ejs=require(_0x3288('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3288('0xb'));var squel=require(_0x3288('0xc'));var crypto=require(_0x3288('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x3288('0xe'));var toCsv=require(_0x3288('0x9'));var querystring=require(_0x3288('0xf'));var Papa=require(_0x3288('0x10'));var Redis=require(_0x3288('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3288('0x12'));var logger=require('../../config/logger')(_0x3288('0x13'));var utils=require(_0x3288('0x14'));var config=require(_0x3288('0x15'));var licenseUtil=require(_0x3288('0x16'));var db=require(_0x3288('0x17'))['db'];function respondWithStatusCode(_0x375b4c,_0x5aa608){_0x5aa608=_0x5aa608||0xcc;return function(_0x32ed2d){if(_0x32ed2d){return _0x375b4c[_0x3288('0x18')](_0x5aa608);}return _0x375b4c[_0x3288('0x19')](_0x5aa608)[_0x3288('0x1a')]();};}function respondWithResult(_0x90bb20,_0x584229){_0x584229=_0x584229||0xc8;return function(_0x50eeb3){if(_0x50eeb3){return _0x90bb20[_0x3288('0x19')](_0x584229)[_0x3288('0x1b')](_0x50eeb3);}};}function respondWithFilteredResult(_0x5f3dd1,_0x32e986){return function(_0x36fdea){if(_0x36fdea){var _0x5bb67d=typeof _0x32e986[_0x3288('0x1c')]===_0x3288('0x1d')&&typeof _0x32e986['limit']===_0x3288('0x1d');var _0x283ec9=_0x36fdea[_0x3288('0x1e')];var _0x48093e=_0x5bb67d?0x0:_0x32e986['offset'];var _0x4672b1=_0x5bb67d?_0x36fdea[_0x3288('0x1e')]:_0x32e986[_0x3288('0x1c')]+_0x32e986['limit'];var _0x51fe99;if(_0x4672b1>=_0x283ec9){_0x4672b1=_0x283ec9;_0x51fe99=0xc8;}else{_0x51fe99=0xce;}_0x5f3dd1[_0x3288('0x19')](_0x51fe99);return _0x5f3dd1[_0x3288('0x1f')](_0x3288('0x20'),_0x48093e+'-'+_0x4672b1+'/'+_0x283ec9)[_0x3288('0x1b')](_0x36fdea);}return null;};}function patchUpdates(_0x58a602){return function(_0x44cb55){try{jsonpatch['apply'](_0x44cb55,_0x58a602,!![]);}catch(_0x45056e){return BPromise[_0x3288('0x21')](_0x45056e);}return _0x44cb55[_0x3288('0x22')]();};}function saveUpdates(_0x17bd28,_0x51829c){return function(_0x44a5f6){if(_0x44a5f6){return _0x44a5f6['update'](_0x17bd28)[_0x3288('0x23')](function(_0x489143){return _0x489143;});}return null;};}function removeEntity(_0x54d154,_0x5579db){return function(_0x17cce1){if(_0x17cce1){return _0x17cce1['destroy']()['then'](function(){_0x54d154[_0x3288('0x19')](0xcc)[_0x3288('0x1a')]();});}};}function handleEntityNotFound(_0xdecb36,_0x28ac40){return function(_0x2ab568){if(!_0x2ab568){_0xdecb36[_0x3288('0x18')](0x194);}return _0x2ab568;};}function handleError(_0x34d7bd,_0x413b28){_0x413b28=_0x413b28||0x1f4;return function(_0x55d84b){logger[_0x3288('0x24')](_0x55d84b[_0x3288('0x25')]);if(_0x55d84b[_0x3288('0x26')]){delete _0x55d84b[_0x3288('0x26')];}_0x34d7bd['status'](_0x413b28)['send'](_0x55d84b);};}exports[_0x3288('0x27')]=function(_0x4309ec,_0x559665){var _0x2e3f88={},_0x5eea75={},_0x4a879c={'count':0x0,'rows':[]};var _0x41c2c4=_[_0x3288('0x28')](db['ZohoField']['rawAttributes'],function(_0x1eb727){return{'name':_0x1eb727[_0x3288('0x29')],'type':_0x1eb727['type']['key']};});_0x5eea75['model']=_[_0x3288('0x28')](_0x41c2c4,_0x3288('0x26'));_0x5eea75[_0x3288('0x2a')]=_['keys'](_0x4309ec['query']);_0x5eea75[_0x3288('0x2b')]=_[_0x3288('0x2c')](_0x5eea75[_0x3288('0x2d')],_0x5eea75[_0x3288('0x2a')]);_0x2e3f88[_0x3288('0x2e')]=_['intersection'](_0x5eea75[_0x3288('0x2d')],qs[_0x3288('0x2f')](_0x4309ec[_0x3288('0x2a')][_0x3288('0x2f')]));_0x2e3f88[_0x3288('0x2e')]=_0x2e3f88[_0x3288('0x2e')]['length']?_0x2e3f88[_0x3288('0x2e')]:_0x5eea75[_0x3288('0x2d')];if(!_0x4309ec[_0x3288('0x2a')][_0x3288('0x30')](_0x3288('0x31'))){_0x2e3f88[_0x3288('0x32')]=qs[_0x3288('0x32')](_0x4309ec[_0x3288('0x2a')][_0x3288('0x32')]);_0x2e3f88[_0x3288('0x1c')]=qs[_0x3288('0x1c')](_0x4309ec[_0x3288('0x2a')][_0x3288('0x1c')]);}_0x2e3f88[_0x3288('0x33')]=qs[_0x3288('0x34')](_0x4309ec[_0x3288('0x2a')]['sort']);_0x2e3f88[_0x3288('0x35')]=qs['filters'](_[_0x3288('0x36')](_0x4309ec[_0x3288('0x2a')],_0x5eea75['filters']),_0x41c2c4);if(_0x4309ec[_0x3288('0x2a')][_0x3288('0x37')]){_0x2e3f88['where']=_[_0x3288('0x38')](_0x2e3f88[_0x3288('0x35')],{'$or':_[_0x3288('0x28')](_0x41c2c4,function(_0x59349c){if(_0x59349c['type']!==_0x3288('0x39')){var _0x4c7f51={};_0x4c7f51[_0x59349c[_0x3288('0x26')]]={'$like':'%'+_0x4309ec[_0x3288('0x2a')][_0x3288('0x37')]+'%'};return _0x4c7f51;}})});}_0x2e3f88=_['merge']({},_0x2e3f88,_0x4309ec[_0x3288('0x3a')]);var _0x151206={'where':_0x2e3f88['where']};return db[_0x3288('0x3b')][_0x3288('0x1e')](_0x151206)['then'](function(_0x440742){_0x4a879c[_0x3288('0x1e')]=_0x440742;if(_0x4309ec[_0x3288('0x2a')][_0x3288('0x3c')]){_0x2e3f88[_0x3288('0x3d')]=[{'all':!![]}];}return db[_0x3288('0x3b')][_0x3288('0x3e')](_0x2e3f88);})['then'](function(_0x255f6f){_0x4a879c['rows']=_0x255f6f;return _0x4a879c;})[_0x3288('0x23')](respondWithFilteredResult(_0x559665,_0x2e3f88))[_0x3288('0x3f')](handleError(_0x559665,null));};exports[_0x3288('0x40')]=function(_0x1d81ea,_0x61b4be){var _0x478347={'raw':!![],'where':{'id':_0x1d81ea[_0x3288('0x41')]['id']}},_0x4861fd={};_0x4861fd[_0x3288('0x2d')]=_[_0x3288('0x42')](db['ZohoField'][_0x3288('0x43')]);_0x4861fd[_0x3288('0x2a')]=_['keys'](_0x1d81ea['query']);_0x4861fd[_0x3288('0x2b')]=_[_0x3288('0x2c')](_0x4861fd[_0x3288('0x2d')],_0x4861fd['query']);_0x478347['attributes']=_[_0x3288('0x2c')](_0x4861fd[_0x3288('0x2d')],qs[_0x3288('0x2f')](_0x1d81ea[_0x3288('0x2a')]['fields']));_0x478347[_0x3288('0x2e')]=_0x478347[_0x3288('0x2e')][_0x3288('0x44')]?_0x478347['attributes']:_0x4861fd[_0x3288('0x2d')];if(_0x1d81ea[_0x3288('0x2a')][_0x3288('0x3c')]){_0x478347['include']=[{'all':!![]}];}_0x478347=_[_0x3288('0x38')]({},_0x478347,_0x1d81ea[_0x3288('0x3a')]);return db[_0x3288('0x3b')][_0x3288('0x45')](_0x478347)[_0x3288('0x23')](handleEntityNotFound(_0x61b4be,null))[_0x3288('0x23')](respondWithResult(_0x61b4be,null))[_0x3288('0x3f')](handleError(_0x61b4be,null));};exports[_0x3288('0x46')]=function(_0x19e115,_0x57304b){return db[_0x3288('0x3b')]['create'](_0x19e115['body'],{})[_0x3288('0x23')](respondWithResult(_0x57304b,0xc9))['catch'](handleError(_0x57304b,null));};exports[_0x3288('0x47')]=function(_0x215cd4,_0x2af85d){if(_0x215cd4[_0x3288('0x48')]['id']){delete _0x215cd4[_0x3288('0x48')]['id'];}return db[_0x3288('0x3b')][_0x3288('0x45')]({'where':{'id':_0x215cd4[_0x3288('0x41')]['id']}})[_0x3288('0x23')](handleEntityNotFound(_0x2af85d,null))['then'](saveUpdates(_0x215cd4['body'],null))[_0x3288('0x23')](respondWithResult(_0x2af85d,null))[_0x3288('0x3f')](handleError(_0x2af85d,null));};exports[_0x3288('0x49')]=function(_0x47eddc,_0x5d3536){return db['ZohoField'][_0x3288('0x45')]({'where':{'id':_0x47eddc[_0x3288('0x41')]['id']}})[_0x3288('0x23')](handleEntityNotFound(_0x5d3536,null))[_0x3288('0x23')](removeEntity(_0x5d3536,null))[_0x3288('0x3f')](handleError(_0x5d3536,null));};
\ No newline at end of file
+var _0x4822=['pick','VIRTUAL','filter','merge','options','then','includeAll','include','findAll','rows','catch','show','params','filters','length','find','create','body','zip-dir','fast-json-patch','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','destroy','error','send','index','ZohoField','rawAttributes','fieldName','key','model','map','name','query','keys','intersection','attributes','fields','sort','where'];(function(_0x4e20b0,_0x2cb888){var _0x4cb218=function(_0x34191a){while(--_0x34191a){_0x4e20b0['push'](_0x4e20b0['shift']());}};_0x4cb218(++_0x2cb888);}(_0x4822,0x12e));var _0x2482=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0x4822[_0x68c979];return _0x4f0001;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2482('0x0'));var jsonpatch=require(_0x2482('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2482('0x2'));var Mustache=require(_0x2482('0x3'));var util=require(_0x2482('0x4'));var path=require(_0x2482('0x5'));var sox=require('sox');var csv=require(_0x2482('0x6'));var ejs=require(_0x2482('0x7'));var fs=require('fs');var fs_extra=require(_0x2482('0x8'));var _=require(_0x2482('0x9'));var squel=require(_0x2482('0xa'));var crypto=require('crypto');var jsforce=require(_0x2482('0xb'));var deskjs=require(_0x2482('0xc'));var toCsv=require(_0x2482('0x6'));var querystring=require(_0x2482('0xd'));var Papa=require(_0x2482('0xe'));var Redis=require(_0x2482('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x2482('0x10'));var as=require(_0x2482('0x11'));var hardwareService=require(_0x2482('0x12'));var logger=require(_0x2482('0x13'))(_0x2482('0x14'));var utils=require('../../config/utils');var config=require(_0x2482('0x15'));var licenseUtil=require(_0x2482('0x16'));var db=require(_0x2482('0x17'))['db'];function respondWithStatusCode(_0x34a0b3,_0x499358){_0x499358=_0x499358||0xcc;return function(_0x36e154){if(_0x36e154){return _0x34a0b3[_0x2482('0x18')](_0x499358);}return _0x34a0b3[_0x2482('0x19')](_0x499358)[_0x2482('0x1a')]();};}function respondWithResult(_0x1b45d2,_0x4b5ec0){_0x4b5ec0=_0x4b5ec0||0xc8;return function(_0xe2cb99){if(_0xe2cb99){return _0x1b45d2['status'](_0x4b5ec0)[_0x2482('0x1b')](_0xe2cb99);}};}function respondWithFilteredResult(_0x4395a0,_0x407c26){return function(_0x3b6a28){if(_0x3b6a28){var _0x17ae11=typeof _0x407c26[_0x2482('0x1c')]==='undefined'&&typeof _0x407c26[_0x2482('0x1d')]===_0x2482('0x1e');var _0x35ca1c=_0x3b6a28[_0x2482('0x1f')];var _0x2dad33=_0x17ae11?0x0:_0x407c26[_0x2482('0x1c')];var _0x2a6f42=_0x17ae11?_0x3b6a28[_0x2482('0x1f')]:_0x407c26[_0x2482('0x1c')]+_0x407c26[_0x2482('0x1d')];var _0x2ef7e3;if(_0x2a6f42>=_0x35ca1c){_0x2a6f42=_0x35ca1c;_0x2ef7e3=0xc8;}else{_0x2ef7e3=0xce;}_0x4395a0[_0x2482('0x19')](_0x2ef7e3);return _0x4395a0['set'](_0x2482('0x20'),_0x2dad33+'-'+_0x2a6f42+'/'+_0x35ca1c)[_0x2482('0x1b')](_0x3b6a28);}return null;};}function patchUpdates(_0x543271){return function(_0x2ba27e){try{jsonpatch[_0x2482('0x21')](_0x2ba27e,_0x543271,!![]);}catch(_0x124a6b){return BPromise[_0x2482('0x22')](_0x124a6b);}return _0x2ba27e['save']();};}function saveUpdates(_0x4aa9b0,_0x48a56d){return function(_0x590423){if(_0x590423){return _0x590423['update'](_0x4aa9b0)['then'](function(_0x28b142){return _0x28b142;});}return null;};}function removeEntity(_0xb4b2e7,_0x2ae5d1){return function(_0x21c70b){if(_0x21c70b){return _0x21c70b[_0x2482('0x23')]()['then'](function(){_0xb4b2e7[_0x2482('0x19')](0xcc)[_0x2482('0x1a')]();});}};}function handleEntityNotFound(_0x34915f,_0x3749aa){return function(_0x2d3522){if(!_0x2d3522){_0x34915f['sendStatus'](0x194);}return _0x2d3522;};}function handleError(_0x10f9ca,_0x11ef35){_0x11ef35=_0x11ef35||0x1f4;return function(_0xf7f857){logger[_0x2482('0x24')](_0xf7f857['stack']);if(_0xf7f857['name']){delete _0xf7f857['name'];}_0x10f9ca[_0x2482('0x19')](_0x11ef35)[_0x2482('0x25')](_0xf7f857);};}exports[_0x2482('0x26')]=function(_0x512a3c,_0x3c769c){var _0x45df8d={},_0x40fdbc={},_0x15a2e3={'count':0x0,'rows':[]};var _0x52bd6f=_['map'](db[_0x2482('0x27')][_0x2482('0x28')],function(_0x19ab1c){return{'name':_0x19ab1c[_0x2482('0x29')],'type':_0x19ab1c['type'][_0x2482('0x2a')]};});_0x40fdbc[_0x2482('0x2b')]=_[_0x2482('0x2c')](_0x52bd6f,_0x2482('0x2d'));_0x40fdbc[_0x2482('0x2e')]=_[_0x2482('0x2f')](_0x512a3c[_0x2482('0x2e')]);_0x40fdbc['filters']=_[_0x2482('0x30')](_0x40fdbc['model'],_0x40fdbc[_0x2482('0x2e')]);_0x45df8d[_0x2482('0x31')]=_[_0x2482('0x30')](_0x40fdbc['model'],qs[_0x2482('0x32')](_0x512a3c[_0x2482('0x2e')][_0x2482('0x32')]));_0x45df8d[_0x2482('0x31')]=_0x45df8d[_0x2482('0x31')]['length']?_0x45df8d[_0x2482('0x31')]:_0x40fdbc['model'];if(!_0x512a3c[_0x2482('0x2e')]['hasOwnProperty']('nolimit')){_0x45df8d['limit']=qs[_0x2482('0x1d')](_0x512a3c[_0x2482('0x2e')][_0x2482('0x1d')]);_0x45df8d[_0x2482('0x1c')]=qs[_0x2482('0x1c')](_0x512a3c[_0x2482('0x2e')][_0x2482('0x1c')]);}_0x45df8d['order']=qs[_0x2482('0x33')](_0x512a3c[_0x2482('0x2e')]['sort']);_0x45df8d[_0x2482('0x34')]=qs['filters'](_[_0x2482('0x35')](_0x512a3c[_0x2482('0x2e')],_0x40fdbc['filters']),_0x52bd6f);if(_0x512a3c[_0x2482('0x2e')]['filter']){_0x45df8d[_0x2482('0x34')]=_['merge'](_0x45df8d[_0x2482('0x34')],{'$or':_[_0x2482('0x2c')](_0x52bd6f,function(_0x3619fd){if(_0x3619fd['type']!==_0x2482('0x36')){var _0x3d9632={};_0x3d9632[_0x3619fd['name']]={'$like':'%'+_0x512a3c[_0x2482('0x2e')][_0x2482('0x37')]+'%'};return _0x3d9632;}})});}_0x45df8d=_[_0x2482('0x38')]({},_0x45df8d,_0x512a3c[_0x2482('0x39')]);var _0x3afafe={'where':_0x45df8d[_0x2482('0x34')]};return db['ZohoField'][_0x2482('0x1f')](_0x3afafe)[_0x2482('0x3a')](function(_0x32be33){_0x15a2e3[_0x2482('0x1f')]=_0x32be33;if(_0x512a3c[_0x2482('0x2e')][_0x2482('0x3b')]){_0x45df8d[_0x2482('0x3c')]=[{'all':!![]}];}return db[_0x2482('0x27')][_0x2482('0x3d')](_0x45df8d);})[_0x2482('0x3a')](function(_0x5e6cb4){_0x15a2e3[_0x2482('0x3e')]=_0x5e6cb4;return _0x15a2e3;})[_0x2482('0x3a')](respondWithFilteredResult(_0x3c769c,_0x45df8d))[_0x2482('0x3f')](handleError(_0x3c769c,null));};exports[_0x2482('0x40')]=function(_0x2d4297,_0x15317d){var _0x15a46c={'raw':!![],'where':{'id':_0x2d4297[_0x2482('0x41')]['id']}},_0x4f4086={};_0x4f4086[_0x2482('0x2b')]=_[_0x2482('0x2f')](db[_0x2482('0x27')]['rawAttributes']);_0x4f4086[_0x2482('0x2e')]=_['keys'](_0x2d4297[_0x2482('0x2e')]);_0x4f4086[_0x2482('0x42')]=_[_0x2482('0x30')](_0x4f4086['model'],_0x4f4086[_0x2482('0x2e')]);_0x15a46c[_0x2482('0x31')]=_['intersection'](_0x4f4086[_0x2482('0x2b')],qs[_0x2482('0x32')](_0x2d4297[_0x2482('0x2e')][_0x2482('0x32')]));_0x15a46c[_0x2482('0x31')]=_0x15a46c[_0x2482('0x31')][_0x2482('0x43')]?_0x15a46c[_0x2482('0x31')]:_0x4f4086[_0x2482('0x2b')];if(_0x2d4297[_0x2482('0x2e')][_0x2482('0x3b')]){_0x15a46c[_0x2482('0x3c')]=[{'all':!![]}];}_0x15a46c=_['merge']({},_0x15a46c,_0x2d4297[_0x2482('0x39')]);return db[_0x2482('0x27')][_0x2482('0x44')](_0x15a46c)[_0x2482('0x3a')](handleEntityNotFound(_0x15317d,null))[_0x2482('0x3a')](respondWithResult(_0x15317d,null))[_0x2482('0x3f')](handleError(_0x15317d,null));};exports[_0x2482('0x45')]=function(_0x3bbe51,_0x59b313){return db[_0x2482('0x27')][_0x2482('0x45')](_0x3bbe51[_0x2482('0x46')],{})['then'](respondWithResult(_0x59b313,0xc9))[_0x2482('0x3f')](handleError(_0x59b313,null));};exports['update']=function(_0x2bf308,_0x17d338){if(_0x2bf308[_0x2482('0x46')]['id']){delete _0x2bf308[_0x2482('0x46')]['id'];}return db[_0x2482('0x27')][_0x2482('0x44')]({'where':{'id':_0x2bf308[_0x2482('0x41')]['id']}})['then'](handleEntityNotFound(_0x17d338,null))[_0x2482('0x3a')](saveUpdates(_0x2bf308[_0x2482('0x46')],null))[_0x2482('0x3a')](respondWithResult(_0x17d338,null))[_0x2482('0x3f')](handleError(_0x17d338,null));};exports[_0x2482('0x23')]=function(_0x2506d3,_0x42fe1a){return db[_0x2482('0x27')][_0x2482('0x44')]({'where':{'id':_0x2506d3[_0x2482('0x41')]['id']}})[_0x2482('0x3a')](handleEntityNotFound(_0x42fe1a,null))[_0x2482('0x3a')](removeEntity(_0x42fe1a,null))[_0x2482('0x3f')](handleError(_0x42fe1a,null));};
\ No newline at end of file
index f5d88a3..a48da91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['moment','bluebird','request-promise','path','rimraf','./intZohoField.attributes','exports','define','ZohoField','int_zoho_fields','zoho_unique_index','FieldId','util','../../config/logger'];(function(_0x2c28e7,_0x13bab5){var _0x100084=function(_0x2c2a8e){while(--_0x2c2a8e){_0x2c28e7['push'](_0x2c28e7['shift']());}};_0x100084(++_0x13bab5);}(_0x57ca,0x108));var _0xa57c=function(_0x35cb03,_0x8f7393){_0x35cb03=_0x35cb03-0x0;var _0x27a965=_0x57ca[_0x35cb03];return _0x27a965;};'use strict';var _=require('lodash');var util=require(_0xa57c('0x0'));var logger=require(_0xa57c('0x1'))('api');var moment=require(_0xa57c('0x2'));var BPromise=require(_0xa57c('0x3'));var rp=require(_0xa57c('0x4'));var fs=require('fs');var path=require(_0xa57c('0x5'));var rimraf=require(_0xa57c('0x6'));var config=require('../../config/environment');var attributes=require(_0xa57c('0x7'));module[_0xa57c('0x8')]=function(_0x113dcf,_0x19473f){return _0x113dcf[_0xa57c('0x9')](_0xa57c('0xa'),attributes,{'tableName':_0xa57c('0xb'),'paranoid':![],'indexes':[{'name':_0xa57c('0xc'),'fields':['idField',_0xa57c('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x82c4=['moment','bluebird','request-promise','rimraf','./intZohoField.attributes','define','ZohoField','int_zoho_fields','zoho_unique_index','idField','lodash','util','../../config/logger','api'];(function(_0x475630,_0x383d22){var _0x5155be=function(_0x25471a){while(--_0x25471a){_0x475630['push'](_0x475630['shift']());}};_0x5155be(++_0x383d22);}(_0x82c4,0x1ca));var _0x482c=function(_0xccb95,_0x300783){_0xccb95=_0xccb95-0x0;var _0x382f46=_0x82c4[_0xccb95];return _0x382f46;};'use strict';var _=require(_0x482c('0x0'));var util=require(_0x482c('0x1'));var logger=require(_0x482c('0x2'))(_0x482c('0x3'));var moment=require(_0x482c('0x4'));var BPromise=require(_0x482c('0x5'));var rp=require(_0x482c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x482c('0x7'));var config=require('../../config/environment');var attributes=require(_0x482c('0x8'));module['exports']=function(_0x477cf4,_0x5d7c76){return _0x477cf4[_0x482c('0x9')](_0x482c('0xa'),attributes,{'tableName':_0x482c('0xb'),'paranoid':![],'indexes':[{'name':_0x482c('0xc'),'fields':[_0x482c('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index d06c2b2..042c21a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83b5=['message','result','catch','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ZohoField,\x20%s,\x20%s','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x83b5,0x153));var _0x583b=function(_0x234318,_0xf22f31){_0x234318=_0x234318-0x0;var _0x1ab719=_0x83b5[_0x234318];return _0x1ab719;};'use strict';var _=require(_0x583b('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x583b('0x1'));var rs=require(_0x583b('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x583b('0x3'))['db'];var utils=require(_0x583b('0x4'));var logger=require(_0x583b('0x5'))(_0x583b('0x6'));var config=require(_0x583b('0x7'));var jayson=require(_0x583b('0x8'));var client=jayson[_0x583b('0x9')][_0x583b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x26e662,_0x598fce,_0xfc4f5c){return new BPromise(function(_0x26f699,_0x357e21){return client['request'](_0x26e662,_0xfc4f5c)[_0x583b('0xb')](function(_0x17c942){logger[_0x583b('0xc')](_0x583b('0xd'),_0x598fce,'request\x20sent');logger['debug'](_0x583b('0xe'),_0x598fce,'request\x20sent',JSON[_0x583b('0xf')](_0x17c942));if(_0x17c942[_0x583b('0x10')]){if(_0x17c942[_0x583b('0x10')][_0x583b('0x11')]===0x1f4){logger[_0x583b('0x10')](_0x583b('0xd'),_0x598fce,_0x17c942[_0x583b('0x10')]['message']);return _0x357e21(_0x17c942[_0x583b('0x10')]['message']);}logger['error']('ZohoField,\x20%s,\x20%s',_0x598fce,_0x17c942[_0x583b('0x10')][_0x583b('0x12')]);return _0x26f699(_0x17c942[_0x583b('0x10')][_0x583b('0x12')]);}else{logger[_0x583b('0xc')](_0x583b('0xd'),_0x598fce,'request\x20sent');_0x26f699(_0x17c942[_0x583b('0x13')][_0x583b('0x12')]);}})[_0x583b('0x14')](function(_0x101856){logger[_0x583b('0x10')](_0x583b('0xd'),_0x598fce,_0x101856);_0x357e21(_0x101856);});});}
\ No newline at end of file
+var _0x6450=['moment','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','ZohoField,\x20%s,\x20%s','ZohoField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util'];(function(_0x3f6903,_0x34370e){var _0x38e844=function(_0x2b157c){while(--_0x2b157c){_0x3f6903['push'](_0x3f6903['shift']());}};_0x38e844(++_0x34370e);}(_0x6450,0xa7));var _0x0645=function(_0x368398,_0x512162){_0x368398=_0x368398-0x0;var _0x46d852=_0x6450[_0x368398];return _0x46d852;};'use strict';var _=require('lodash');var util=require(_0x0645('0x0'));var moment=require(_0x0645('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0645('0x2'));var db=require(_0x0645('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x0645('0x4'))(_0x0645('0x5'));var config=require('../../config/environment');var jayson=require(_0x0645('0x6'));var client=jayson[_0x0645('0x7')][_0x0645('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xa94c56,_0x231778,_0x5f51a5){return new BPromise(function(_0x52c714,_0x5b4db1){return client[_0x0645('0x9')](_0xa94c56,_0x5f51a5)[_0x0645('0xa')](function(_0x206314){logger[_0x0645('0xb')](_0x0645('0xc'),_0x231778,'request\x20sent');logger['debug'](_0x0645('0xd'),_0x231778,_0x0645('0xe'),JSON[_0x0645('0xf')](_0x206314));if(_0x206314[_0x0645('0x10')]){if(_0x206314[_0x0645('0x10')][_0x0645('0x11')]===0x1f4){logger[_0x0645('0x10')](_0x0645('0xc'),_0x231778,_0x206314['error'][_0x0645('0x12')]);return _0x5b4db1(_0x206314['error'][_0x0645('0x12')]);}logger[_0x0645('0x10')](_0x0645('0xc'),_0x231778,_0x206314[_0x0645('0x10')][_0x0645('0x12')]);return _0x52c714(_0x206314['error']['message']);}else{logger['info'](_0x0645('0xc'),_0x231778,_0x0645('0xe'));_0x52c714(_0x206314[_0x0645('0x13')][_0x0645('0x12')]);}})[_0x0645('0x14')](function(_0x5e59e6){logger[_0x0645('0x10')](_0x0645('0xc'),_0x231778,_0x5e59e6);_0x5b4db1(_0x5e59e6);});});}
\ No newline at end of file
index ec1c9b4..f9b5b1d 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(_0x373b37,_0x201bbf){var _0x144a38=function(_0x367ab8){while(--_0x367ab8){_0x373b37['push'](_0x373b37['shift']());}};_0x144a38(++_0x201bbf);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x40eca3,_0x5a0da4){var _0x38f50b=function(_0x2f3aa2){while(--_0x2f3aa2){_0x40eca3['push'](_0x40eca3['shift']());}};_0x38f50b(++_0x5a0da4);}(_0xe706,0xa3));var _0x6e70=function(_0x1f8999,_0x58ef02){_0x1f8999=_0x1f8999-0x0;var _0x4a4d99=_0xe706[_0x1f8999];return _0x4a4d99;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index f07d3a7..a1158e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x162a=['sequelize','exports','STRING','unique_name_and_version','app.js','INTEGER','BOOLEAN','state'];(function(_0x19a490,_0x4627d9){var _0x52081c=function(_0x418ba5){while(--_0x418ba5){_0x19a490['push'](_0x19a490['shift']());}};_0x52081c(++_0x4627d9);}(_0x162a,0x180));var _0xa162=function(_0xee2f01,_0x5bd1b7){_0xee2f01=_0xee2f01-0x0;var _0x3d4fde=_0x162a[_0xee2f01];return _0x3d4fde;};'use strict';var Sequelize=require(_0xa162('0x0'));module[_0xa162('0x1')]={'name':{'type':Sequelize[_0xa162('0x2')],'allowNull':![],'unique':_0xa162('0x3')},'version':{'type':Sequelize[_0xa162('0x2')],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize[_0xa162('0x2')],'defaultValue':_0xa162('0x4')},'filename':{'type':Sequelize[_0xa162('0x2')]},'path':{'type':Sequelize[_0xa162('0x2')]},'type':{'type':Sequelize[_0xa162('0x2')]},'size':{'type':Sequelize[_0xa162('0x5')]},'active':{'type':Sequelize[_0xa162('0x6')],'defaultValue':![]},'author':{'type':Sequelize[_0xa162('0x2')]},'logo':{'type':Sequelize[_0xa162('0x2')]},'state':{'type':Sequelize[_0xa162('0x2')],'unique':_0xa162('0x7')},'description':{'type':Sequelize[_0xa162('0x2')]},'title':{'type':Sequelize[_0xa162('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize[_0xa162('0x2')],'defaultValue':'#'}};
\ No newline at end of file
+var _0xfbf1=['unique_name_and_version','app.js','INTEGER','sequelize','exports','STRING'];(function(_0x4a7bb0,_0x51d5d){var _0xb0d399=function(_0x24d6e7){while(--_0x24d6e7){_0x4a7bb0['push'](_0x4a7bb0['shift']());}};_0xb0d399(++_0x51d5d);}(_0xfbf1,0x16b));var _0x1fbf=function(_0x5737e1,_0x579fae){_0x5737e1=_0x5737e1-0x0;var _0x232b48=_0xfbf1[_0x5737e1];return _0x232b48;};'use strict';var Sequelize=require(_0x1fbf('0x0'));module[_0x1fbf('0x1')]={'name':{'type':Sequelize[_0x1fbf('0x2')],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize[_0x1fbf('0x2')],'allowNull':![],'unique':_0x1fbf('0x3')},'main':{'type':Sequelize['STRING'],'defaultValue':_0x1fbf('0x4')},'filename':{'type':Sequelize['STRING']},'path':{'type':Sequelize[_0x1fbf('0x2')]},'type':{'type':Sequelize['STRING']},'size':{'type':Sequelize[_0x1fbf('0x5')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'author':{'type':Sequelize[_0x1fbf('0x2')]},'logo':{'type':Sequelize['STRING']},'state':{'type':Sequelize[_0x1fbf('0x2')],'unique':'state'},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x1fbf('0x2')]},'link':{'type':Sequelize[_0x1fbf('0x2')],'defaultValue':'#'}};
\ No newline at end of file
index ae1fb29..269562d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90b1=['map','rawAttributes','fieldName','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','pick','filter','merge','where','type','options','Integration','includeAll','rows','include','find','catch','body','params','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','then','destroy','error','name','send','index'];(function(_0x5aee84,_0x38c0b4){var _0x119212=function(_0x1c357b){while(--_0x1c357b){_0x5aee84['push'](_0x5aee84['shift']());}};_0x119212(++_0x38c0b4);}(_0x90b1,0x1bb));var _0x190b=function(_0x3222f7,_0x151aac){_0x3222f7=_0x3222f7-0x0;var _0x2fa881=_0x90b1[_0x3222f7];return _0x2fa881;};'use strict';var emlformat=require(_0x190b('0x0'));var rimraf=require(_0x190b('0x1'));var zipdir=require(_0x190b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x190b('0x3'));var BPromise=require(_0x190b('0x4'));var Mustache=require(_0x190b('0x5'));var util=require(_0x190b('0x6'));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(_0x190b('0x7'));var _=require(_0x190b('0x8'));var squel=require(_0x190b('0x9'));var crypto=require(_0x190b('0xa'));var jsforce=require(_0x190b('0xb'));var deskjs=require(_0x190b('0xc'));var toCsv=require(_0x190b('0xd'));var querystring=require('querystring');var Papa=require(_0x190b('0xe'));var Redis=require(_0x190b('0xf'));var authService=require(_0x190b('0x10'));var qs=require(_0x190b('0x11'));var as=require(_0x190b('0x12'));var hardwareService=require(_0x190b('0x13'));var logger=require(_0x190b('0x14'))(_0x190b('0x15'));var utils=require('../../config/utils');var config=require(_0x190b('0x16'));var licenseUtil=require(_0x190b('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4d63ac,_0x596c48){_0x596c48=_0x596c48||0xcc;return function(_0x286c81){if(_0x286c81){return _0x4d63ac[_0x190b('0x18')](_0x596c48);}return _0x4d63ac[_0x190b('0x19')](_0x596c48)[_0x190b('0x1a')]();};}function respondWithResult(_0x2e12d4,_0x13544c){_0x13544c=_0x13544c||0xc8;return function(_0x1ff180){if(_0x1ff180){return _0x2e12d4[_0x190b('0x19')](_0x13544c)[_0x190b('0x1b')](_0x1ff180);}};}function respondWithFilteredResult(_0x1a046f,_0xab346){return function(_0x3e8781){if(_0x3e8781){var _0x3fbfc3=typeof _0xab346[_0x190b('0x1c')]===_0x190b('0x1d')&&typeof _0xab346['limit']===_0x190b('0x1d');var _0x5efbed=_0x3e8781[_0x190b('0x1e')];var _0x21e458=_0x3fbfc3?0x0:_0xab346[_0x190b('0x1c')];var _0x16c009=_0x3fbfc3?_0x3e8781['count']:_0xab346[_0x190b('0x1c')]+_0xab346[_0x190b('0x1f')];var _0x441a2b;if(_0x16c009>=_0x5efbed){_0x16c009=_0x5efbed;_0x441a2b=0xc8;}else{_0x441a2b=0xce;}_0x1a046f[_0x190b('0x19')](_0x441a2b);return _0x1a046f[_0x190b('0x20')](_0x190b('0x21'),_0x21e458+'-'+_0x16c009+'/'+_0x5efbed)['json'](_0x3e8781);}return null;};}function patchUpdates(_0x3ed24c){return function(_0x14f0a5){try{jsonpatch['apply'](_0x14f0a5,_0x3ed24c,!![]);}catch(_0xb4c32b){return BPromise['reject'](_0xb4c32b);}return _0x14f0a5['save']();};}function saveUpdates(_0xcd15e5,_0x42e7f2){return function(_0x332006){if(_0x332006){return _0x332006['update'](_0xcd15e5)[_0x190b('0x22')](function(_0x2e633e){return _0x2e633e;});}return null;};}function removeEntity(_0x16e989,_0x292ce3){return function(_0x3b8c74){if(_0x3b8c74){return _0x3b8c74[_0x190b('0x23')]()[_0x190b('0x22')](function(){_0x16e989['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x262a63,_0x1a5f86){return function(_0x50605b){if(!_0x50605b){_0x262a63['sendStatus'](0x194);}return _0x50605b;};}function handleError(_0x3260d5,_0x4e2a93){_0x4e2a93=_0x4e2a93||0x1f4;return function(_0x328e5e){logger[_0x190b('0x24')](_0x328e5e['stack']);if(_0x328e5e[_0x190b('0x25')]){delete _0x328e5e[_0x190b('0x25')];}_0x3260d5['status'](_0x4e2a93)[_0x190b('0x26')](_0x328e5e);};}exports[_0x190b('0x27')]=function(_0x359b4a,_0x494f3f){var _0x536d7b={},_0x3730cc={},_0x4d5f3f={'count':0x0,'rows':[]};var _0x14be2c=_[_0x190b('0x28')](db['Integration'][_0x190b('0x29')],function(_0x580b92){return{'name':_0x580b92[_0x190b('0x2a')],'type':_0x580b92['type'][_0x190b('0x2b')]};});_0x3730cc['model']=_[_0x190b('0x28')](_0x14be2c,_0x190b('0x25'));_0x3730cc['query']=_[_0x190b('0x2c')](_0x359b4a[_0x190b('0x2d')]);_0x3730cc[_0x190b('0x2e')]=_[_0x190b('0x2f')](_0x3730cc[_0x190b('0x30')],_0x3730cc[_0x190b('0x2d')]);_0x536d7b[_0x190b('0x31')]=_[_0x190b('0x2f')](_0x3730cc['model'],qs['fields'](_0x359b4a[_0x190b('0x2d')][_0x190b('0x32')]));_0x536d7b['attributes']=_0x536d7b[_0x190b('0x31')][_0x190b('0x33')]?_0x536d7b[_0x190b('0x31')]:_0x3730cc[_0x190b('0x30')];if(!_0x359b4a[_0x190b('0x2d')][_0x190b('0x34')](_0x190b('0x35'))){_0x536d7b['limit']=qs['limit'](_0x359b4a[_0x190b('0x2d')][_0x190b('0x1f')]);_0x536d7b[_0x190b('0x1c')]=qs['offset'](_0x359b4a[_0x190b('0x2d')][_0x190b('0x1c')]);}_0x536d7b[_0x190b('0x36')]=qs['sort'](_0x359b4a[_0x190b('0x2d')]['sort']);_0x536d7b['where']=qs[_0x190b('0x2e')](_[_0x190b('0x37')](_0x359b4a['query'],_0x3730cc[_0x190b('0x2e')]),_0x14be2c);if(_0x359b4a[_0x190b('0x2d')][_0x190b('0x38')]){_0x536d7b['where']=_[_0x190b('0x39')](_0x536d7b[_0x190b('0x3a')],{'$or':_['map'](_0x14be2c,function(_0x5d006d){if(_0x5d006d[_0x190b('0x3b')]!=='VIRTUAL'){var _0x46bdba={};_0x46bdba[_0x5d006d[_0x190b('0x25')]]={'$like':'%'+_0x359b4a[_0x190b('0x2d')][_0x190b('0x38')]+'%'};return _0x46bdba;}})});}_0x536d7b=_['merge']({},_0x536d7b,_0x359b4a[_0x190b('0x3c')]);var _0x5f118c={'where':_0x536d7b[_0x190b('0x3a')]};return db[_0x190b('0x3d')]['count'](_0x5f118c)[_0x190b('0x22')](function(_0x2a75d2){_0x4d5f3f[_0x190b('0x1e')]=_0x2a75d2;if(_0x359b4a['query'][_0x190b('0x3e')]){_0x536d7b['include']=[{'all':!![]}];}return db['Integration']['findAll'](_0x536d7b);})[_0x190b('0x22')](function(_0x3aef1d){_0x4d5f3f[_0x190b('0x3f')]=_0x3aef1d;return _0x4d5f3f;})[_0x190b('0x22')](respondWithFilteredResult(_0x494f3f,_0x536d7b))['catch'](handleError(_0x494f3f,null));};exports['show']=function(_0x4045b7,_0x492240){var _0x110891={'raw':![],'where':{'id':_0x4045b7['params']['id']}},_0x3d67f0={};_0x3d67f0[_0x190b('0x30')]=_[_0x190b('0x2c')](db[_0x190b('0x3d')]['rawAttributes']);_0x3d67f0[_0x190b('0x2d')]=_[_0x190b('0x2c')](_0x4045b7['query']);_0x3d67f0[_0x190b('0x2e')]=_['intersection'](_0x3d67f0[_0x190b('0x30')],_0x3d67f0[_0x190b('0x2d')]);_0x110891[_0x190b('0x31')]=_['intersection'](_0x3d67f0[_0x190b('0x30')],qs['fields'](_0x4045b7[_0x190b('0x2d')][_0x190b('0x32')]));_0x110891[_0x190b('0x31')]=_0x110891[_0x190b('0x31')][_0x190b('0x33')]?_0x110891[_0x190b('0x31')]:_0x3d67f0[_0x190b('0x30')];if(_0x4045b7['query'][_0x190b('0x3e')]){_0x110891[_0x190b('0x40')]=[{'all':!![]}];}_0x110891=_[_0x190b('0x39')]({},_0x110891,_0x4045b7['options']);return db[_0x190b('0x3d')][_0x190b('0x41')](_0x110891)[_0x190b('0x22')](handleEntityNotFound(_0x492240,null))[_0x190b('0x22')](respondWithResult(_0x492240,null))[_0x190b('0x42')](handleError(_0x492240,null));};exports['create']=function(_0x1f2262,_0xadc789){return db[_0x190b('0x3d')]['create'](_0x1f2262[_0x190b('0x43')],{})[_0x190b('0x22')](respondWithResult(_0xadc789,0xc9))[_0x190b('0x42')](handleError(_0xadc789,null));};exports['update']=function(_0x4cb561,_0x14958e){if(_0x4cb561[_0x190b('0x43')]['id']){delete _0x4cb561[_0x190b('0x43')]['id'];}return db[_0x190b('0x3d')][_0x190b('0x41')]({'where':{'id':_0x4cb561[_0x190b('0x44')]['id']}})['then'](handleEntityNotFound(_0x14958e,null))[_0x190b('0x22')](saveUpdates(_0x4cb561[_0x190b('0x43')],null))[_0x190b('0x22')](respondWithResult(_0x14958e,null))['catch'](handleError(_0x14958e,null));};exports[_0x190b('0x23')]=function(_0x38c135,_0x215ab6){return db['Integration'][_0x190b('0x41')]({'where':{'id':_0x38c135[_0x190b('0x44')]['id']}})[_0x190b('0x22')](handleEntityNotFound(_0x215ab6,null))[_0x190b('0x22')](removeEntity(_0x215ab6,null))[_0x190b('0x42')](handleError(_0x215ab6,null));};
\ No newline at end of file
+var _0x5fab=['querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','end','sendStatus','name','send','index','map','Integration','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','includeAll','include','findAll','then','rows','show','params','intersection','fields','options','find','catch','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce'];(function(_0x193be1,_0x3e1726){var _0x4dda07=function(_0x5cda9c){while(--_0x5cda9c){_0x193be1['push'](_0x193be1['shift']());}};_0x4dda07(++_0x3e1726);}(_0x5fab,0x177));var _0xb5fa=function(_0x5bf152,_0x2884b3){_0x5bf152=_0x5bf152-0x0;var _0x5d1230=_0x5fab[_0x5bf152];return _0x5d1230;};'use strict';var emlformat=require(_0xb5fa('0x0'));var rimraf=require(_0xb5fa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb5fa('0x2'));var rp=require(_0xb5fa('0x3'));var moment=require(_0xb5fa('0x4'));var BPromise=require(_0xb5fa('0x5'));var Mustache=require(_0xb5fa('0x6'));var util=require(_0xb5fa('0x7'));var path=require(_0xb5fa('0x8'));var sox=require(_0xb5fa('0x9'));var csv=require(_0xb5fa('0xa'));var ejs=require(_0xb5fa('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb5fa('0xc'));var crypto=require(_0xb5fa('0xd'));var jsforce=require(_0xb5fa('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xb5fa('0xa'));var querystring=require(_0xb5fa('0xf'));var Papa=require(_0xb5fa('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xb5fa('0x11'));var as=require(_0xb5fa('0x12'));var hardwareService=require(_0xb5fa('0x13'));var logger=require(_0xb5fa('0x14'))(_0xb5fa('0x15'));var utils=require(_0xb5fa('0x16'));var config=require(_0xb5fa('0x17'));var licenseUtil=require(_0xb5fa('0x18'));var db=require(_0xb5fa('0x19'))['db'];function respondWithStatusCode(_0x4d3576,_0x2ad830){_0x2ad830=_0x2ad830||0xcc;return function(_0x3dad4d){if(_0x3dad4d){return _0x4d3576['sendStatus'](_0x2ad830);}return _0x4d3576[_0xb5fa('0x1a')](_0x2ad830)['end']();};}function respondWithResult(_0x265992,_0x3fc372){_0x3fc372=_0x3fc372||0xc8;return function(_0x40c914){if(_0x40c914){return _0x265992[_0xb5fa('0x1a')](_0x3fc372)[_0xb5fa('0x1b')](_0x40c914);}};}function respondWithFilteredResult(_0x5371cf,_0x567f31){return function(_0x38e964){if(_0x38e964){var _0x587043=typeof _0x567f31[_0xb5fa('0x1c')]===_0xb5fa('0x1d')&&typeof _0x567f31['limit']==='undefined';var _0x451a55=_0x38e964[_0xb5fa('0x1e')];var _0x32e9e5=_0x587043?0x0:_0x567f31[_0xb5fa('0x1c')];var _0x324ba5=_0x587043?_0x38e964[_0xb5fa('0x1e')]:_0x567f31[_0xb5fa('0x1c')]+_0x567f31[_0xb5fa('0x1f')];var _0xc14dc4;if(_0x324ba5>=_0x451a55){_0x324ba5=_0x451a55;_0xc14dc4=0xc8;}else{_0xc14dc4=0xce;}_0x5371cf[_0xb5fa('0x1a')](_0xc14dc4);return _0x5371cf[_0xb5fa('0x20')](_0xb5fa('0x21'),_0x32e9e5+'-'+_0x324ba5+'/'+_0x451a55)['json'](_0x38e964);}return null;};}function patchUpdates(_0x432bfa){return function(_0x519e20){try{jsonpatch[_0xb5fa('0x22')](_0x519e20,_0x432bfa,!![]);}catch(_0x4a6c04){return BPromise[_0xb5fa('0x23')](_0x4a6c04);}return _0x519e20[_0xb5fa('0x24')]();};}function saveUpdates(_0x4e05c0,_0x40dfdf){return function(_0x3a2ab9){if(_0x3a2ab9){return _0x3a2ab9[_0xb5fa('0x25')](_0x4e05c0)['then'](function(_0x32a85c){return _0x32a85c;});}return null;};}function removeEntity(_0xec108f,_0x444237){return function(_0x542348){if(_0x542348){return _0x542348[_0xb5fa('0x26')]()['then'](function(){_0xec108f[_0xb5fa('0x1a')](0xcc)[_0xb5fa('0x27')]();});}};}function handleEntityNotFound(_0x11053a,_0x543edf){return function(_0x2dbd22){if(!_0x2dbd22){_0x11053a[_0xb5fa('0x28')](0x194);}return _0x2dbd22;};}function handleError(_0x6a455c,_0x20d649){_0x20d649=_0x20d649||0x1f4;return function(_0x568870){logger['error'](_0x568870['stack']);if(_0x568870['name']){delete _0x568870[_0xb5fa('0x29')];}_0x6a455c[_0xb5fa('0x1a')](_0x20d649)[_0xb5fa('0x2a')](_0x568870);};}exports[_0xb5fa('0x2b')]=function(_0x534884,_0x3506a4){var _0x358549={},_0x353314={},_0x409af9={'count':0x0,'rows':[]};var _0x2a5690=_[_0xb5fa('0x2c')](db[_0xb5fa('0x2d')][_0xb5fa('0x2e')],function(_0x1f4380){return{'name':_0x1f4380[_0xb5fa('0x2f')],'type':_0x1f4380[_0xb5fa('0x30')][_0xb5fa('0x31')]};});_0x353314[_0xb5fa('0x32')]=_[_0xb5fa('0x2c')](_0x2a5690,_0xb5fa('0x29'));_0x353314[_0xb5fa('0x33')]=_[_0xb5fa('0x34')](_0x534884[_0xb5fa('0x33')]);_0x353314[_0xb5fa('0x35')]=_['intersection'](_0x353314[_0xb5fa('0x32')],_0x353314['query']);_0x358549['attributes']=_['intersection'](_0x353314[_0xb5fa('0x32')],qs['fields'](_0x534884[_0xb5fa('0x33')]['fields']));_0x358549['attributes']=_0x358549[_0xb5fa('0x36')][_0xb5fa('0x37')]?_0x358549['attributes']:_0x353314['model'];if(!_0x534884[_0xb5fa('0x33')][_0xb5fa('0x38')](_0xb5fa('0x39'))){_0x358549['limit']=qs[_0xb5fa('0x1f')](_0x534884[_0xb5fa('0x33')]['limit']);_0x358549[_0xb5fa('0x1c')]=qs[_0xb5fa('0x1c')](_0x534884[_0xb5fa('0x33')]['offset']);}_0x358549[_0xb5fa('0x3a')]=qs[_0xb5fa('0x3b')](_0x534884[_0xb5fa('0x33')]['sort']);_0x358549[_0xb5fa('0x3c')]=qs[_0xb5fa('0x35')](_[_0xb5fa('0x3d')](_0x534884[_0xb5fa('0x33')],_0x353314['filters']),_0x2a5690);if(_0x534884['query']['filter']){_0x358549['where']=_['merge'](_0x358549['where'],{'$or':_[_0xb5fa('0x2c')](_0x2a5690,function(_0x4c0a4d){if(_0x4c0a4d[_0xb5fa('0x30')]!==_0xb5fa('0x3e')){var _0x36db1a={};_0x36db1a[_0x4c0a4d[_0xb5fa('0x29')]]={'$like':'%'+_0x534884[_0xb5fa('0x33')][_0xb5fa('0x3f')]+'%'};return _0x36db1a;}})});}_0x358549=_['merge']({},_0x358549,_0x534884['options']);var _0x4c4bf0={'where':_0x358549[_0xb5fa('0x3c')]};return db['Integration'][_0xb5fa('0x1e')](_0x4c4bf0)['then'](function(_0x58aa97){_0x409af9[_0xb5fa('0x1e')]=_0x58aa97;if(_0x534884[_0xb5fa('0x33')][_0xb5fa('0x40')]){_0x358549[_0xb5fa('0x41')]=[{'all':!![]}];}return db[_0xb5fa('0x2d')][_0xb5fa('0x42')](_0x358549);})[_0xb5fa('0x43')](function(_0x83df0b){_0x409af9[_0xb5fa('0x44')]=_0x83df0b;return _0x409af9;})[_0xb5fa('0x43')](respondWithFilteredResult(_0x3506a4,_0x358549))['catch'](handleError(_0x3506a4,null));};exports[_0xb5fa('0x45')]=function(_0x4bc9df,_0x233f90){var _0x39aac3={'raw':![],'where':{'id':_0x4bc9df[_0xb5fa('0x46')]['id']}},_0x2c7c5f={};_0x2c7c5f[_0xb5fa('0x32')]=_[_0xb5fa('0x34')](db[_0xb5fa('0x2d')][_0xb5fa('0x2e')]);_0x2c7c5f['query']=_[_0xb5fa('0x34')](_0x4bc9df[_0xb5fa('0x33')]);_0x2c7c5f['filters']=_[_0xb5fa('0x47')](_0x2c7c5f['model'],_0x2c7c5f[_0xb5fa('0x33')]);_0x39aac3[_0xb5fa('0x36')]=_['intersection'](_0x2c7c5f['model'],qs[_0xb5fa('0x48')](_0x4bc9df[_0xb5fa('0x33')][_0xb5fa('0x48')]));_0x39aac3[_0xb5fa('0x36')]=_0x39aac3[_0xb5fa('0x36')][_0xb5fa('0x37')]?_0x39aac3[_0xb5fa('0x36')]:_0x2c7c5f[_0xb5fa('0x32')];if(_0x4bc9df['query'][_0xb5fa('0x40')]){_0x39aac3[_0xb5fa('0x41')]=[{'all':!![]}];}_0x39aac3=_['merge']({},_0x39aac3,_0x4bc9df[_0xb5fa('0x49')]);return db[_0xb5fa('0x2d')][_0xb5fa('0x4a')](_0x39aac3)[_0xb5fa('0x43')](handleEntityNotFound(_0x233f90,null))[_0xb5fa('0x43')](respondWithResult(_0x233f90,null))[_0xb5fa('0x4b')](handleError(_0x233f90,null));};exports[_0xb5fa('0x4c')]=function(_0x33eb2c,_0x20f5f5){return db[_0xb5fa('0x2d')][_0xb5fa('0x4c')](_0x33eb2c[_0xb5fa('0x4d')],{})[_0xb5fa('0x43')](respondWithResult(_0x20f5f5,0xc9))[_0xb5fa('0x4b')](handleError(_0x20f5f5,null));};exports[_0xb5fa('0x25')]=function(_0x3a39f2,_0x52f5d8){if(_0x3a39f2['body']['id']){delete _0x3a39f2[_0xb5fa('0x4d')]['id'];}return db['Integration'][_0xb5fa('0x4a')]({'where':{'id':_0x3a39f2[_0xb5fa('0x46')]['id']}})['then'](handleEntityNotFound(_0x52f5d8,null))[_0xb5fa('0x43')](saveUpdates(_0x3a39f2[_0xb5fa('0x4d')],null))[_0xb5fa('0x43')](respondWithResult(_0x52f5d8,null))[_0xb5fa('0x4b')](handleError(_0x52f5d8,null));};exports[_0xb5fa('0x26')]=function(_0x3ffee0,_0x51d5f7){return db[_0xb5fa('0x2d')]['find']({'where':{'id':_0x3ffee0[_0xb5fa('0x46')]['id']}})[_0xb5fa('0x43')](handleEntityNotFound(_0x51d5f7,null))[_0xb5fa('0x43')](removeEntity(_0x51d5f7,null))['catch'](handleError(_0x51d5f7,null));};
\ No newline at end of file
index 99fa6ac..405ae84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bce=['exports','define','Integration','integrations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','./integration.attributes'];(function(_0x394f63,_0x34f396){var _0x3e940b=function(_0x4036b8){while(--_0x4036b8){_0x394f63['push'](_0x394f63['shift']());}};_0x3e940b(++_0x34f396);}(_0x5bce,0xfb));var _0xe5bc=function(_0x32b30c,_0x2d5ec8){_0x32b30c=_0x32b30c-0x0;var _0xcfc212=_0x5bce[_0x32b30c];return _0xcfc212;};'use strict';var _=require(_0xe5bc('0x0'));var util=require(_0xe5bc('0x1'));var logger=require(_0xe5bc('0x2'))(_0xe5bc('0x3'));var moment=require(_0xe5bc('0x4'));var BPromise=require(_0xe5bc('0x5'));var rp=require(_0xe5bc('0x6'));var fs=require('fs');var path=require(_0xe5bc('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xe5bc('0x8'));module[_0xe5bc('0x9')]=function(_0x2c66fa,_0xdac508){return _0x2c66fa[_0xe5bc('0xa')](_0xe5bc('0xb'),attributes,{'tableName':_0xe5bc('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc7ba=['exports','Integration','integrations','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./integration.attributes'];(function(_0xaae86e,_0x560082){var _0x4d2f39=function(_0x3fa430){while(--_0x3fa430){_0xaae86e['push'](_0xaae86e['shift']());}};_0x4d2f39(++_0x560082);}(_0xc7ba,0x6f));var _0xac7b=function(_0x165157,_0x743394){_0x165157=_0x165157-0x0;var _0x179831=_0xc7ba[_0x165157];return _0x179831;};'use strict';var _=require(_0xac7b('0x0'));var util=require(_0xac7b('0x1'));var logger=require(_0xac7b('0x2'))('api');var moment=require(_0xac7b('0x3'));var BPromise=require(_0xac7b('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xac7b('0x5'));var rimraf=require(_0xac7b('0x6'));var config=require(_0xac7b('0x7'));var attributes=require(_0xac7b('0x8'));module[_0xac7b('0x9')]=function(_0x1082ad,_0x4500a7){return _0x1082ad['define'](_0xac7b('0xa'),attributes,{'tableName':_0xac7b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2b93f1d..a356a44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a0=['../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','then','debug','request\x20sent','stringify','error','code','Integration,\x20%s,\x20%s','message','info','result','catch','util','moment','bluebird','randomstring','ioredis'];(function(_0x26dcd8,_0x461d6b){var _0x1654e9=function(_0x29ab7b){while(--_0x29ab7b){_0x26dcd8['push'](_0x26dcd8['shift']());}};_0x1654e9(++_0x461d6b);}(_0x14a0,0x8e));var _0x014a=function(_0x1cb28a,_0x2d22a7){_0x1cb28a=_0x1cb28a-0x0;var _0xe9f9d4=_0x14a0[_0x1cb28a];return _0xe9f9d4;};'use strict';var _=require('lodash');var util=require(_0x014a('0x0'));var moment=require(_0x014a('0x1'));var BPromise=require(_0x014a('0x2'));var rs=require(_0x014a('0x3'));var fs=require('fs');var Redis=require(_0x014a('0x4'));var db=require(_0x014a('0x5'))['db'];var utils=require(_0x014a('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x014a('0x7'));var jayson=require(_0x014a('0x8'));var client=jayson[_0x014a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5a61ac,_0x11b8ce,_0x6d05f2){return new BPromise(function(_0x22f17c,_0x4d943b){return client['request'](_0x5a61ac,_0x6d05f2)[_0x014a('0xa')](function(_0x4f5506){logger['info']('Integration,\x20%s,\x20%s',_0x11b8ce,'request\x20sent');logger[_0x014a('0xb')]('Integration,\x20%s,\x20%s,\x20%s',_0x11b8ce,_0x014a('0xc'),JSON[_0x014a('0xd')](_0x4f5506));if(_0x4f5506['error']){if(_0x4f5506[_0x014a('0xe')][_0x014a('0xf')]===0x1f4){logger[_0x014a('0xe')](_0x014a('0x10'),_0x11b8ce,_0x4f5506[_0x014a('0xe')][_0x014a('0x11')]);return _0x4d943b(_0x4f5506[_0x014a('0xe')][_0x014a('0x11')]);}logger[_0x014a('0xe')](_0x014a('0x10'),_0x11b8ce,_0x4f5506[_0x014a('0xe')][_0x014a('0x11')]);return _0x22f17c(_0x4f5506['error'][_0x014a('0x11')]);}else{logger[_0x014a('0x12')]('Integration,\x20%s,\x20%s',_0x11b8ce,_0x014a('0xc'));_0x22f17c(_0x4f5506[_0x014a('0x13')]['message']);}})[_0x014a('0x14')](function(_0x17e4be){logger[_0x014a('0xe')](_0x014a('0x10'),_0x11b8ce,_0x17e4be);_0x4d943b(_0x17e4be);});});}
\ No newline at end of file
+var _0xc6ac=['http','request','then','info','Integration,\x20%s,\x20%s','debug','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x1f22aa,_0x4dd128){var _0xbbf043=function(_0x563f82){while(--_0x563f82){_0x1f22aa['push'](_0x1f22aa['shift']());}};_0xbbf043(++_0x4dd128);}(_0xc6ac,0x15b));var _0xcc6a=function(_0xaeddb1,_0x406d9d){_0xaeddb1=_0xaeddb1-0x0;var _0x1d9c89=_0xc6ac[_0xaeddb1];return _0x1d9c89;};'use strict';var _=require(_0xcc6a('0x0'));var util=require(_0xcc6a('0x1'));var moment=require(_0xcc6a('0x2'));var BPromise=require(_0xcc6a('0x3'));var rs=require(_0xcc6a('0x4'));var fs=require('fs');var Redis=require(_0xcc6a('0x5'));var db=require(_0xcc6a('0x6'))['db'];var utils=require(_0xcc6a('0x7'));var logger=require(_0xcc6a('0x8'))(_0xcc6a('0x9'));var config=require(_0xcc6a('0xa'));var jayson=require(_0xcc6a('0xb'));var client=jayson[_0xcc6a('0xc')][_0xcc6a('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x5f3887,_0x3dd497,_0x11b919){return new BPromise(function(_0xf02261,_0x560cc4){return client[_0xcc6a('0xe')](_0x5f3887,_0x11b919)[_0xcc6a('0xf')](function(_0x7806a0){logger[_0xcc6a('0x10')](_0xcc6a('0x11'),_0x3dd497,'request\x20sent');logger[_0xcc6a('0x12')](_0xcc6a('0x13'),_0x3dd497,_0xcc6a('0x14'),JSON['stringify'](_0x7806a0));if(_0x7806a0[_0xcc6a('0x15')]){if(_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x16')]===0x1f4){logger['error']('Integration,\x20%s,\x20%s',_0x3dd497,_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);return _0x560cc4(_0x7806a0[_0xcc6a('0x15')]['message']);}logger['error'](_0xcc6a('0x11'),_0x3dd497,_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);return _0xf02261(_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);}else{logger[_0xcc6a('0x10')](_0xcc6a('0x11'),_0x3dd497,_0xcc6a('0x14'));_0xf02261(_0x7806a0['result']['message']);}})['catch'](function(_0x395a55){logger[_0xcc6a('0x15')](_0xcc6a('0x11'),_0x3dd497,_0x395a55);_0x560cc4(_0x395a55);});});}
\ No newline at end of file
index 42b1110..0028bd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2fe=['describe','/:id','post','update','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe'];(function(_0x3f7861,_0x13619b){var _0x36fdae=function(_0x6aa7b8){while(--_0x6aa7b8){_0x3f7861['push'](_0x3f7861['shift']());}};_0x36fdae(++_0x13619b);}(_0xe2fe,0x86));var _0xee2f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe2fe[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xee2f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xee2f('0x1'));var express=require('express');var router=express[_0xee2f('0x2')]();var fs_extra=require(_0xee2f('0x3'));var auth=require(_0xee2f('0x4'));var interaction=require(_0xee2f('0x5'));var config=require(_0xee2f('0x6'));var controller=require('./integrationReport.controller');router[_0xee2f('0x7')]('/',auth[_0xee2f('0x8')](),controller['index']);router[_0xee2f('0x7')](_0xee2f('0x9'),auth['isAuthenticated'](),controller[_0xee2f('0xa')]);router['get'](_0xee2f('0xb'),auth[_0xee2f('0x8')](),controller['show']);router[_0xee2f('0xc')]('/',auth[_0xee2f('0x8')](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0xee2f('0xd')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xee2f('0xe')]);module[_0xee2f('0xf')]=router;
\ No newline at end of file
+var _0xc6ac=['./integrationReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','put','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x51d4f3,_0x55a3a5){var _0x46d2b9=function(_0x4cf2dc){while(--_0x4cf2dc){_0x51d4f3['push'](_0x51d4f3['shift']());}};_0x46d2b9(++_0x55a3a5);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x443ccf,_0x254680){_0x443ccf=_0x443ccf-0x0;var _0x4b5847=_0xc6ac[_0x443ccf];return _0x4b5847;};'use strict';var multer=require(_0xcc6a('0x0'));var util=require(_0xcc6a('0x1'));var path=require(_0xcc6a('0x2'));var timeout=require(_0xcc6a('0x3'));var express=require(_0xcc6a('0x4'));var router=express[_0xcc6a('0x5')]();var fs_extra=require(_0xcc6a('0x6'));var auth=require(_0xcc6a('0x7'));var interaction=require(_0xcc6a('0x8'));var config=require(_0xcc6a('0x9'));var controller=require(_0xcc6a('0xa'));router[_0xcc6a('0xb')]('/',auth[_0xcc6a('0xc')](),controller[_0xcc6a('0xd')]);router['get'](_0xcc6a('0xe'),auth[_0xcc6a('0xc')](),controller[_0xcc6a('0xf')]);router['get'](_0xcc6a('0x10'),auth[_0xcc6a('0xc')](),controller[_0xcc6a('0x11')]);router[_0xcc6a('0x12')]('/',auth[_0xcc6a('0xc')](),controller['create']);router[_0xcc6a('0x13')](_0xcc6a('0x10'),auth[_0xcc6a('0xc')](),controller['update']);router[_0xcc6a('0x14')](_0xcc6a('0x10'),auth[_0xcc6a('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index d655df7..ecf7444 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3b0=['DATE','BOOLEAN','TEXT','SENT','SENDING','RECEIVED','sequelize','exports','STRING','INTEGER'];(function(_0x2a0dc9,_0x3802f4){var _0x198be1=function(_0x154add){while(--_0x154add){_0x2a0dc9['push'](_0x2a0dc9['shift']());}};_0x198be1(++_0x3802f4);}(_0xf3b0,0x15a));var _0x0f3b=function(_0x29e3b6,_0x40b0b4){_0x29e3b6=_0x29e3b6-0x0;var _0x55d4b0=_0xf3b0[_0x29e3b6];return _0x55d4b0;};'use strict';var Sequelize=require(_0x0f3b('0x0'));module[_0x0f3b('0x1')]={'integration':{'type':Sequelize[_0x0f3b('0x2')]},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize['STRING']},'integrationId':{'type':Sequelize[_0x0f3b('0x3')]},'contacts':{'type':Sequelize[_0x0f3b('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x0f3b('0x2')]},'calleridname':{'type':Sequelize[_0x0f3b('0x2')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x0f3b('0x4')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x0f3b('0x4')]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0x0f3b('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x0f3b('0x3')]},'reason':{'type':Sequelize[_0x0f3b('0x2')]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x0f3b('0x4')]},'agentdump':{'type':Sequelize[_0x0f3b('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x0f3b('0x4')]},'lastevent':{'type':Sequelize[_0x0f3b('0x2')]},'channel':{'type':Sequelize[_0x0f3b('0x2')]},'channelstate':{'type':Sequelize[_0x0f3b('0x3')]},'channelstatedesc':{'type':Sequelize[_0x0f3b('0x2')]},'connectedlinenum':{'type':Sequelize[_0x0f3b('0x2')]},'connectedlinename':{'type':Sequelize[_0x0f3b('0x2')]},'language':{'type':Sequelize[_0x0f3b('0x2')]},'accountcode':{'type':Sequelize[_0x0f3b('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x0f3b('0x2')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0x0f3b('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0x0f3b('0x2')]},'destcalleridnum':{'type':Sequelize[_0x0f3b('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x0f3b('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x0f3b('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x0f3b('0x2')]},'destexten':{'type':Sequelize[_0x0f3b('0x2')]},'destpriority':{'type':Sequelize[_0x0f3b('0x2')]},'destuniqueid':{'type':Sequelize[_0x0f3b('0x2')]},'messageId':{'type':Sequelize[_0x0f3b('0x2')]},'inReplyTo':{'type':Sequelize[_0x0f3b('0x2')]},'subject':{'type':Sequelize[_0x0f3b('0x2')]},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0x0f3b('0x2')]},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize[_0x0f3b('0x6')]},'html':{'type':Sequelize[_0x0f3b('0x6')]},'text':{'type':Sequelize[_0x0f3b('0x6')]},'status':{'type':Sequelize['ENUM'](_0x0f3b('0x7'),_0x0f3b('0x8'),_0x0f3b('0x9'),'FAILED')},'url':{'type':Sequelize[_0x0f3b('0x2')]},'app':{'type':Sequelize[_0x0f3b('0x2')]},'appdata':{'type':Sequelize[_0x0f3b('0x2')]},'projectId':{'type':Sequelize[_0x0f3b('0x3')]}};
\ No newline at end of file
+var _0x7d5a=['TEXT','ENUM','SENT','SENDING','FAILED','sequelize','STRING','DATE','INTEGER','BOOLEAN'];(function(_0x47e7cb,_0x4c1b8d){var _0x2a8874=function(_0x36498f){while(--_0x36498f){_0x47e7cb['push'](_0x47e7cb['shift']());}};_0x2a8874(++_0x4c1b8d);}(_0x7d5a,0x195));var _0xa7d5=function(_0x3f1e2e,_0x2421b5){_0x3f1e2e=_0x3f1e2e-0x0;var _0x8c4bff=_0x7d5a[_0x3f1e2e];return _0x8c4bff;};'use strict';var Sequelize=require(_0xa7d5('0x0'));module['exports']={'integration':{'type':Sequelize[_0xa7d5('0x1')]},'eventChannel':{'type':Sequelize[_0xa7d5('0x1')]},'exitStatus':{'type':Sequelize[_0xa7d5('0x1')]},'ticketId':{'type':Sequelize[_0xa7d5('0x1')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xa7d5('0x1')]},'calleridnum':{'type':Sequelize[_0xa7d5('0x1')]},'calleridname':{'type':Sequelize[_0xa7d5('0x1')]},'queue':{'type':Sequelize[_0xa7d5('0x1')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xa7d5('0x1')]},'agentcalledAt':{'type':Sequelize[_0xa7d5('0x2')]},'agentconnectAt':{'type':Sequelize[_0xa7d5('0x2')]},'holdtime':{'type':Sequelize[_0xa7d5('0x3')]},'agentcomplete':{'type':Sequelize[_0xa7d5('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xa7d5('0x2')]},'talktime':{'type':Sequelize[_0xa7d5('0x3')]},'agentacw':{'type':Sequelize[_0xa7d5('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0xa7d5('0x1')]},'agentringnoanswer':{'type':Sequelize[_0xa7d5('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xa7d5('0x2')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0xa7d5('0x2')]},'lastevent':{'type':Sequelize[_0xa7d5('0x1')]},'channel':{'type':Sequelize[_0xa7d5('0x1')]},'channelstate':{'type':Sequelize[_0xa7d5('0x3')]},'channelstatedesc':{'type':Sequelize[_0xa7d5('0x1')]},'connectedlinenum':{'type':Sequelize[_0xa7d5('0x1')]},'connectedlinename':{'type':Sequelize[_0xa7d5('0x1')]},'language':{'type':Sequelize[_0xa7d5('0x1')]},'accountcode':{'type':Sequelize[_0xa7d5('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xa7d5('0x1')]},'priority':{'type':Sequelize[_0xa7d5('0x1')]},'destchannel':{'type':Sequelize[_0xa7d5('0x1')]},'destchannelstate':{'type':Sequelize[_0xa7d5('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xa7d5('0x1')]},'destcalleridnum':{'type':Sequelize[_0xa7d5('0x1')]},'destcalleridname':{'type':Sequelize[_0xa7d5('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xa7d5('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xa7d5('0x1')]},'destlanguage':{'type':Sequelize[_0xa7d5('0x1')]},'destaccountcode':{'type':Sequelize[_0xa7d5('0x1')]},'destcontext':{'type':Sequelize[_0xa7d5('0x1')]},'destexten':{'type':Sequelize[_0xa7d5('0x1')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0xa7d5('0x1')]},'messageId':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize['STRING']},'subject':{'type':Sequelize[_0xa7d5('0x1')]},'from':{'type':Sequelize[_0xa7d5('0x1')]},'to':{'type':Sequelize[_0xa7d5('0x1')]},'cc':{'type':Sequelize[_0xa7d5('0x1')]},'attachment':{'type':Sequelize[_0xa7d5('0x5')]},'html':{'type':Sequelize[_0xa7d5('0x5')]},'text':{'type':Sequelize[_0xa7d5('0x5')]},'status':{'type':Sequelize[_0xa7d5('0x6')](_0xa7d5('0x7'),_0xa7d5('0x8'),'RECEIVED',_0xa7d5('0x9'))},'url':{'type':Sequelize[_0xa7d5('0x1')]},'app':{'type':Sequelize[_0xa7d5('0x1')]},'appdata':{'type':Sequelize[_0xa7d5('0x1')]},'projectId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index fe3561e..528ad48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cb7=['sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','reject','save','then','end','stack','name','send','map','IntegrationReport','fieldName','key','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','rows','catch','show','params','keys','include','create','body','update','find','describe','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment'];(function(_0xde092d,_0x58e6a3){var _0x204466=function(_0x4a495c){while(--_0x4a495c){_0xde092d['push'](_0xde092d['shift']());}};_0x204466(++_0x58e6a3);}(_0x4cb7,0x1c7));var _0x74cb=function(_0xabe055,_0x2b7883){_0xabe055=_0xabe055-0x0;var _0x3ebfc=_0x4cb7[_0xabe055];return _0x3ebfc;};'use strict';var emlformat=require(_0x74cb('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x74cb('0x1'));var rp=require(_0x74cb('0x2'));var moment=require(_0x74cb('0x3'));var BPromise=require(_0x74cb('0x4'));var Mustache=require(_0x74cb('0x5'));var util=require(_0x74cb('0x6'));var path=require(_0x74cb('0x7'));var sox=require(_0x74cb('0x8'));var csv=require(_0x74cb('0x9'));var ejs=require(_0x74cb('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x74cb('0xb'));var squel=require('squel');var crypto=require(_0x74cb('0xc'));var jsforce=require(_0x74cb('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x74cb('0x9'));var querystring=require(_0x74cb('0xe'));var Papa=require('papaparse');var Redis=require(_0x74cb('0xf'));var authService=require(_0x74cb('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x74cb('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x74cb('0x12'))(_0x74cb('0x13'));var utils=require('../../config/utils');var config=require(_0x74cb('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1ca8ac,_0x2784e3){_0x2784e3=_0x2784e3||0xcc;return function(_0x2eb3b2){if(_0x2eb3b2){return _0x1ca8ac[_0x74cb('0x15')](_0x2784e3);}return _0x1ca8ac[_0x74cb('0x16')](_0x2784e3)['end']();};}function respondWithResult(_0x1d0e51,_0x3d3ea6){_0x3d3ea6=_0x3d3ea6||0xc8;return function(_0x40a34a){if(_0x40a34a){return _0x1d0e51[_0x74cb('0x16')](_0x3d3ea6)[_0x74cb('0x17')](_0x40a34a);}};}function respondWithFilteredResult(_0x5d9ef4,_0x228500){return function(_0x40dd6a){if(_0x40dd6a){var _0x24c640=typeof _0x228500[_0x74cb('0x18')]==='undefined'&&typeof _0x228500[_0x74cb('0x19')]===_0x74cb('0x1a');var _0x2a1c3f=_0x40dd6a[_0x74cb('0x1b')];var _0xf42c5e=_0x24c640?0x0:_0x228500[_0x74cb('0x18')];var _0xeb06f6=_0x24c640?_0x40dd6a[_0x74cb('0x1b')]:_0x228500['offset']+_0x228500['limit'];var _0x3928d1;if(_0xeb06f6>=_0x2a1c3f){_0xeb06f6=_0x2a1c3f;_0x3928d1=0xc8;}else{_0x3928d1=0xce;}_0x5d9ef4[_0x74cb('0x16')](_0x3928d1);return _0x5d9ef4[_0x74cb('0x1c')](_0x74cb('0x1d'),_0xf42c5e+'-'+_0xeb06f6+'/'+_0x2a1c3f)['json'](_0x40dd6a);}return null;};}function patchUpdates(_0x445dec){return function(_0x3a5148){try{jsonpatch['apply'](_0x3a5148,_0x445dec,!![]);}catch(_0x58a9db){return BPromise[_0x74cb('0x1e')](_0x58a9db);}return _0x3a5148[_0x74cb('0x1f')]();};}function saveUpdates(_0x5d4148,_0x3284d4){return function(_0x3e2fa9){if(_0x3e2fa9){return _0x3e2fa9['update'](_0x5d4148)[_0x74cb('0x20')](function(_0x4bc3f6){return _0x4bc3f6;});}return null;};}function removeEntity(_0x11ead1,_0x414ce0){return function(_0x314fe5){if(_0x314fe5){return _0x314fe5['destroy']()[_0x74cb('0x20')](function(){_0x11ead1['status'](0xcc)[_0x74cb('0x21')]();});}};}function handleEntityNotFound(_0xf5cddb,_0x16faa9){return function(_0x299284){if(!_0x299284){_0xf5cddb['sendStatus'](0x194);}return _0x299284;};}function handleError(_0x1a9317,_0x26f5ad){_0x26f5ad=_0x26f5ad||0x1f4;return function(_0x1651e2){logger['error'](_0x1651e2[_0x74cb('0x22')]);if(_0x1651e2['name']){delete _0x1651e2[_0x74cb('0x23')];}_0x1a9317[_0x74cb('0x16')](_0x26f5ad)[_0x74cb('0x24')](_0x1651e2);};}exports['index']=function(_0x1d8233,_0x4504fc){var _0x5896b3={},_0x373215={},_0x3e9fa0={'count':0x0,'rows':[]};var _0x5749fa=_[_0x74cb('0x25')](db[_0x74cb('0x26')]['rawAttributes'],function(_0x3b17df){return{'name':_0x3b17df[_0x74cb('0x27')],'type':_0x3b17df['type'][_0x74cb('0x28')]};});_0x373215['model']=_['map'](_0x5749fa,_0x74cb('0x23'));_0x373215[_0x74cb('0x29')]=_['keys'](_0x1d8233['query']);_0x373215[_0x74cb('0x2a')]=_[_0x74cb('0x2b')](_0x373215[_0x74cb('0x2c')],_0x373215[_0x74cb('0x29')]);_0x5896b3['attributes']=_[_0x74cb('0x2b')](_0x373215[_0x74cb('0x2c')],qs[_0x74cb('0x2d')](_0x1d8233['query'][_0x74cb('0x2d')]));_0x5896b3[_0x74cb('0x2e')]=_0x5896b3[_0x74cb('0x2e')][_0x74cb('0x2f')]?_0x5896b3[_0x74cb('0x2e')]:_0x373215[_0x74cb('0x2c')];if(!_0x1d8233[_0x74cb('0x29')][_0x74cb('0x30')]('nolimit')){_0x5896b3[_0x74cb('0x19')]=qs[_0x74cb('0x19')](_0x1d8233[_0x74cb('0x29')][_0x74cb('0x19')]);_0x5896b3[_0x74cb('0x18')]=qs[_0x74cb('0x18')](_0x1d8233[_0x74cb('0x29')][_0x74cb('0x18')]);}_0x5896b3['order']=qs['sort'](_0x1d8233[_0x74cb('0x29')][_0x74cb('0x31')]);_0x5896b3['where']=qs[_0x74cb('0x2a')](_[_0x74cb('0x32')](_0x1d8233['query'],_0x373215['filters']),_0x5749fa);if(_0x1d8233[_0x74cb('0x29')]['filter']){_0x5896b3[_0x74cb('0x33')]=_[_0x74cb('0x34')](_0x5896b3[_0x74cb('0x33')],{'$or':_[_0x74cb('0x25')](_0x5749fa,function(_0x35e1b6){if(_0x35e1b6['type']!==_0x74cb('0x35')){var _0x4254a5={};_0x4254a5[_0x35e1b6[_0x74cb('0x23')]]={'$like':'%'+_0x1d8233[_0x74cb('0x29')][_0x74cb('0x36')]+'%'};return _0x4254a5;}})});}_0x5896b3=_[_0x74cb('0x34')]({},_0x5896b3,_0x1d8233[_0x74cb('0x37')]);var _0x35f587={'where':_0x5896b3['where']};return db['IntegrationReport'][_0x74cb('0x1b')](_0x35f587)[_0x74cb('0x20')](function(_0x55be38){_0x3e9fa0[_0x74cb('0x1b')]=_0x55be38;if(_0x1d8233['query'][_0x74cb('0x38')]){_0x5896b3['include']=[{'all':!![]}];}return db[_0x74cb('0x26')]['findAll'](_0x5896b3);})[_0x74cb('0x20')](function(_0x1c4631){_0x3e9fa0[_0x74cb('0x39')]=_0x1c4631;return _0x3e9fa0;})[_0x74cb('0x20')](respondWithFilteredResult(_0x4504fc,_0x5896b3))[_0x74cb('0x3a')](handleError(_0x4504fc,null));};exports[_0x74cb('0x3b')]=function(_0x4853da,_0x235367){var _0x514522={'raw':![],'where':{'id':_0x4853da[_0x74cb('0x3c')]['id']}},_0x2fb2a3={};_0x2fb2a3[_0x74cb('0x2c')]=_['keys'](db['IntegrationReport']['rawAttributes']);_0x2fb2a3[_0x74cb('0x29')]=_[_0x74cb('0x3d')](_0x4853da[_0x74cb('0x29')]);_0x2fb2a3[_0x74cb('0x2a')]=_['intersection'](_0x2fb2a3[_0x74cb('0x2c')],_0x2fb2a3[_0x74cb('0x29')]);_0x514522[_0x74cb('0x2e')]=_[_0x74cb('0x2b')](_0x2fb2a3[_0x74cb('0x2c')],qs[_0x74cb('0x2d')](_0x4853da['query'][_0x74cb('0x2d')]));_0x514522[_0x74cb('0x2e')]=_0x514522[_0x74cb('0x2e')][_0x74cb('0x2f')]?_0x514522[_0x74cb('0x2e')]:_0x2fb2a3['model'];if(_0x4853da[_0x74cb('0x29')][_0x74cb('0x38')]){_0x514522[_0x74cb('0x3e')]=[{'all':!![]}];}_0x514522=_['merge']({},_0x514522,_0x4853da[_0x74cb('0x37')]);return db[_0x74cb('0x26')]['find'](_0x514522)[_0x74cb('0x20')](handleEntityNotFound(_0x235367,null))[_0x74cb('0x20')](respondWithResult(_0x235367,null))[_0x74cb('0x3a')](handleError(_0x235367,null));};exports['create']=function(_0x4f670d,_0x387246){return db[_0x74cb('0x26')][_0x74cb('0x3f')](_0x4f670d[_0x74cb('0x40')],{})[_0x74cb('0x20')](respondWithResult(_0x387246,0xc9))[_0x74cb('0x3a')](handleError(_0x387246,null));};exports[_0x74cb('0x41')]=function(_0x1445d6,_0x540301){if(_0x1445d6[_0x74cb('0x40')]['id']){delete _0x1445d6['body']['id'];}return db[_0x74cb('0x26')]['find']({'where':{'id':_0x1445d6[_0x74cb('0x3c')]['id']}})[_0x74cb('0x20')](handleEntityNotFound(_0x540301,null))['then'](saveUpdates(_0x1445d6[_0x74cb('0x40')],null))[_0x74cb('0x20')](respondWithResult(_0x540301,null))[_0x74cb('0x3a')](handleError(_0x540301,null));};exports['destroy']=function(_0x4edd1c,_0x1dcdf0){return db[_0x74cb('0x26')][_0x74cb('0x42')]({'where':{'id':_0x4edd1c['params']['id']}})[_0x74cb('0x20')](handleEntityNotFound(_0x1dcdf0,null))['then'](removeEntity(_0x1dcdf0,null))['catch'](handleError(_0x1dcdf0,null));};exports[_0x74cb('0x43')]=function(_0x5ad718,_0x50b5f5){return db[_0x74cb('0x26')][_0x74cb('0x43')]()[_0x74cb('0x20')](respondWithResult(_0x50b5f5,null))['catch'](handleError(_0x50b5f5,null));};
\ No newline at end of file
+var _0x7e40=['fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','stack','name','index','map','IntegrationReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','find','create','body','catch','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs'];(function(_0x33b7ce,_0x1346fb){var _0x37ec51=function(_0x4f7e4a){while(--_0x4f7e4a){_0x33b7ce['push'](_0x33b7ce['shift']());}};_0x37ec51(++_0x1346fb);}(_0x7e40,0x16b));var _0x07e4=function(_0x3376bd,_0x4fdb2a){_0x3376bd=_0x3376bd-0x0;var _0x587b0b=_0x7e40[_0x3376bd];return _0x587b0b;};'use strict';var emlformat=require(_0x07e4('0x0'));var rimraf=require(_0x07e4('0x1'));var zipdir=require(_0x07e4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x07e4('0x3'));var moment=require(_0x07e4('0x4'));var BPromise=require(_0x07e4('0x5'));var Mustache=require(_0x07e4('0x6'));var util=require(_0x07e4('0x7'));var path=require(_0x07e4('0x8'));var sox=require(_0x07e4('0x9'));var csv=require(_0x07e4('0xa'));var ejs=require(_0x07e4('0xb'));var fs=require('fs');var fs_extra=require(_0x07e4('0xc'));var _=require(_0x07e4('0xd'));var squel=require(_0x07e4('0xe'));var crypto=require(_0x07e4('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x07e4('0x10'));var Papa=require(_0x07e4('0x11'));var Redis=require(_0x07e4('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x07e4('0x13'));var as=require(_0x07e4('0x14'));var hardwareService=require(_0x07e4('0x15'));var logger=require(_0x07e4('0x16'))(_0x07e4('0x17'));var utils=require(_0x07e4('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x07e4('0x19'));var db=require(_0x07e4('0x1a'))['db'];function respondWithStatusCode(_0x3abdc0,_0x38e4b8){_0x38e4b8=_0x38e4b8||0xcc;return function(_0x123a6f){if(_0x123a6f){return _0x3abdc0[_0x07e4('0x1b')](_0x38e4b8);}return _0x3abdc0[_0x07e4('0x1c')](_0x38e4b8)[_0x07e4('0x1d')]();};}function respondWithResult(_0x97edd,_0x230536){_0x230536=_0x230536||0xc8;return function(_0x49260a){if(_0x49260a){return _0x97edd[_0x07e4('0x1c')](_0x230536)[_0x07e4('0x1e')](_0x49260a);}};}function respondWithFilteredResult(_0x31c239,_0x1ace83){return function(_0x5a3a67){if(_0x5a3a67){var _0x3d6f00=typeof _0x1ace83[_0x07e4('0x1f')]===_0x07e4('0x20')&&typeof _0x1ace83[_0x07e4('0x21')]===_0x07e4('0x20');var _0x502161=_0x5a3a67['count'];var _0x3b6341=_0x3d6f00?0x0:_0x1ace83['offset'];var _0x27370f=_0x3d6f00?_0x5a3a67[_0x07e4('0x22')]:_0x1ace83[_0x07e4('0x1f')]+_0x1ace83[_0x07e4('0x21')];var _0x392d06;if(_0x27370f>=_0x502161){_0x27370f=_0x502161;_0x392d06=0xc8;}else{_0x392d06=0xce;}_0x31c239[_0x07e4('0x1c')](_0x392d06);return _0x31c239[_0x07e4('0x23')](_0x07e4('0x24'),_0x3b6341+'-'+_0x27370f+'/'+_0x502161)[_0x07e4('0x1e')](_0x5a3a67);}return null;};}function patchUpdates(_0x317c05){return function(_0x32a628){try{jsonpatch['apply'](_0x32a628,_0x317c05,!![]);}catch(_0x2249f3){return BPromise['reject'](_0x2249f3);}return _0x32a628[_0x07e4('0x25')]();};}function saveUpdates(_0x149d9c,_0x598021){return function(_0x50fa1c){if(_0x50fa1c){return _0x50fa1c[_0x07e4('0x26')](_0x149d9c)[_0x07e4('0x27')](function(_0x11f997){return _0x11f997;});}return null;};}function removeEntity(_0x5c5090,_0x13aea5){return function(_0x20fbf5){if(_0x20fbf5){return _0x20fbf5[_0x07e4('0x28')]()['then'](function(){_0x5c5090[_0x07e4('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d4962,_0x351295){return function(_0x340b8f){if(!_0x340b8f){_0x3d4962['sendStatus'](0x194);}return _0x340b8f;};}function handleError(_0x3c799b,_0x2b681d){_0x2b681d=_0x2b681d||0x1f4;return function(_0x10c857){logger['error'](_0x10c857[_0x07e4('0x29')]);if(_0x10c857[_0x07e4('0x2a')]){delete _0x10c857[_0x07e4('0x2a')];}_0x3c799b[_0x07e4('0x1c')](_0x2b681d)['send'](_0x10c857);};}exports[_0x07e4('0x2b')]=function(_0x20edbd,_0xb5fc0c){var _0x436906={},_0x1cbe41={},_0x44d717={'count':0x0,'rows':[]};var _0x3507d0=_[_0x07e4('0x2c')](db[_0x07e4('0x2d')][_0x07e4('0x2e')],function(_0xae7539){return{'name':_0xae7539['fieldName'],'type':_0xae7539[_0x07e4('0x2f')][_0x07e4('0x30')]};});_0x1cbe41[_0x07e4('0x31')]=_[_0x07e4('0x2c')](_0x3507d0,'name');_0x1cbe41[_0x07e4('0x32')]=_[_0x07e4('0x33')](_0x20edbd[_0x07e4('0x32')]);_0x1cbe41[_0x07e4('0x34')]=_[_0x07e4('0x35')](_0x1cbe41[_0x07e4('0x31')],_0x1cbe41[_0x07e4('0x32')]);_0x436906[_0x07e4('0x36')]=_[_0x07e4('0x35')](_0x1cbe41[_0x07e4('0x31')],qs[_0x07e4('0x37')](_0x20edbd['query'][_0x07e4('0x37')]));_0x436906[_0x07e4('0x36')]=_0x436906[_0x07e4('0x36')][_0x07e4('0x38')]?_0x436906['attributes']:_0x1cbe41[_0x07e4('0x31')];if(!_0x20edbd['query'][_0x07e4('0x39')](_0x07e4('0x3a'))){_0x436906[_0x07e4('0x21')]=qs['limit'](_0x20edbd[_0x07e4('0x32')][_0x07e4('0x21')]);_0x436906[_0x07e4('0x1f')]=qs[_0x07e4('0x1f')](_0x20edbd['query']['offset']);}_0x436906['order']=qs['sort'](_0x20edbd[_0x07e4('0x32')][_0x07e4('0x3b')]);_0x436906[_0x07e4('0x3c')]=qs[_0x07e4('0x34')](_[_0x07e4('0x3d')](_0x20edbd[_0x07e4('0x32')],_0x1cbe41['filters']),_0x3507d0);if(_0x20edbd[_0x07e4('0x32')][_0x07e4('0x3e')]){_0x436906[_0x07e4('0x3c')]=_[_0x07e4('0x3f')](_0x436906[_0x07e4('0x3c')],{'$or':_[_0x07e4('0x2c')](_0x3507d0,function(_0x4de6bc){if(_0x4de6bc['type']!==_0x07e4('0x40')){var _0x2833a6={};_0x2833a6[_0x4de6bc[_0x07e4('0x2a')]]={'$like':'%'+_0x20edbd[_0x07e4('0x32')][_0x07e4('0x3e')]+'%'};return _0x2833a6;}})});}_0x436906=_[_0x07e4('0x3f')]({},_0x436906,_0x20edbd[_0x07e4('0x41')]);var _0x4e5780={'where':_0x436906['where']};return db[_0x07e4('0x2d')][_0x07e4('0x22')](_0x4e5780)[_0x07e4('0x27')](function(_0x33d460){_0x44d717[_0x07e4('0x22')]=_0x33d460;if(_0x20edbd['query'][_0x07e4('0x42')]){_0x436906[_0x07e4('0x43')]=[{'all':!![]}];}return db['IntegrationReport'][_0x07e4('0x44')](_0x436906);})[_0x07e4('0x27')](function(_0x271d95){_0x44d717['rows']=_0x271d95;return _0x44d717;})[_0x07e4('0x27')](respondWithFilteredResult(_0xb5fc0c,_0x436906))['catch'](handleError(_0xb5fc0c,null));};exports[_0x07e4('0x45')]=function(_0x4f9881,_0x1f12d1){var _0x1ee5d7={'raw':![],'where':{'id':_0x4f9881[_0x07e4('0x46')]['id']}},_0x2bcd34={};_0x2bcd34[_0x07e4('0x31')]=_[_0x07e4('0x33')](db[_0x07e4('0x2d')][_0x07e4('0x2e')]);_0x2bcd34[_0x07e4('0x32')]=_[_0x07e4('0x33')](_0x4f9881[_0x07e4('0x32')]);_0x2bcd34[_0x07e4('0x34')]=_[_0x07e4('0x35')](_0x2bcd34['model'],_0x2bcd34[_0x07e4('0x32')]);_0x1ee5d7[_0x07e4('0x36')]=_[_0x07e4('0x35')](_0x2bcd34[_0x07e4('0x31')],qs[_0x07e4('0x37')](_0x4f9881[_0x07e4('0x32')][_0x07e4('0x37')]));_0x1ee5d7[_0x07e4('0x36')]=_0x1ee5d7[_0x07e4('0x36')][_0x07e4('0x38')]?_0x1ee5d7['attributes']:_0x2bcd34[_0x07e4('0x31')];if(_0x4f9881[_0x07e4('0x32')]['includeAll']){_0x1ee5d7['include']=[{'all':!![]}];}_0x1ee5d7=_[_0x07e4('0x3f')]({},_0x1ee5d7,_0x4f9881['options']);return db['IntegrationReport'][_0x07e4('0x47')](_0x1ee5d7)['then'](handleEntityNotFound(_0x1f12d1,null))[_0x07e4('0x27')](respondWithResult(_0x1f12d1,null))['catch'](handleError(_0x1f12d1,null));};exports[_0x07e4('0x48')]=function(_0x37e7c0,_0x47c67f){return db[_0x07e4('0x2d')][_0x07e4('0x48')](_0x37e7c0[_0x07e4('0x49')],{})['then'](respondWithResult(_0x47c67f,0xc9))[_0x07e4('0x4a')](handleError(_0x47c67f,null));};exports['update']=function(_0x2d7cb7,_0xb9b381){if(_0x2d7cb7[_0x07e4('0x49')]['id']){delete _0x2d7cb7[_0x07e4('0x49')]['id'];}return db[_0x07e4('0x2d')]['find']({'where':{'id':_0x2d7cb7[_0x07e4('0x46')]['id']}})[_0x07e4('0x27')](handleEntityNotFound(_0xb9b381,null))['then'](saveUpdates(_0x2d7cb7['body'],null))[_0x07e4('0x27')](respondWithResult(_0xb9b381,null))[_0x07e4('0x4a')](handleError(_0xb9b381,null));};exports[_0x07e4('0x28')]=function(_0x52a133,_0x54e442){return db[_0x07e4('0x2d')][_0x07e4('0x47')]({'where':{'id':_0x52a133[_0x07e4('0x46')]['id']}})[_0x07e4('0x27')](handleEntityNotFound(_0x54e442,null))[_0x07e4('0x27')](removeEntity(_0x54e442,null))['catch'](handleError(_0x54e442,null));};exports['describe']=function(_0x56ef35,_0x4bfa69){return db[_0x07e4('0x2d')]['describe']()[_0x07e4('0x27')](respondWithResult(_0x4bfa69,null))[_0x07e4('0x4a')](handleError(_0x4bfa69,null));};
\ No newline at end of file
index f6dd95d..4f8add5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bc5=['define','IntegrationReport','report_integration','lodash','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./integrationReport.attributes','exports'];(function(_0x4a1d87,_0x69e5c9){var _0x3caade=function(_0x174f07){while(--_0x174f07){_0x4a1d87['push'](_0x4a1d87['shift']());}};_0x3caade(++_0x69e5c9);}(_0x2bc5,0x6f));var _0x52bc=function(_0x49a91f,_0x32339c){_0x49a91f=_0x49a91f-0x0;var _0x45243c=_0x2bc5[_0x49a91f];return _0x45243c;};'use strict';var _=require(_0x52bc('0x0'));var util=require('util');var logger=require(_0x52bc('0x1'))('api');var moment=require(_0x52bc('0x2'));var BPromise=require(_0x52bc('0x3'));var rp=require(_0x52bc('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x52bc('0x5'));var config=require(_0x52bc('0x6'));var attributes=require(_0x52bc('0x7'));module[_0x52bc('0x8')]=function(_0x17e938,_0xa5abb9){return _0x17e938[_0x52bc('0x9')](_0x52bc('0xa'),attributes,{'tableName':_0x52bc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9958=['define','report_integration','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./integrationReport.attributes'];(function(_0x251d9c,_0x580977){var _0x16ae64=function(_0x4d3b53){while(--_0x4d3b53){_0x251d9c['push'](_0x251d9c['shift']());}};_0x16ae64(++_0x580977);}(_0x9958,0x141));var _0x8995=function(_0x50fcf3,_0x2090b3){_0x50fcf3=_0x50fcf3-0x0;var _0x3a66f4=_0x9958[_0x50fcf3];return _0x3a66f4;};'use strict';var _=require('lodash');var util=require(_0x8995('0x0'));var logger=require(_0x8995('0x1'))(_0x8995('0x2'));var moment=require(_0x8995('0x3'));var BPromise=require('bluebird');var rp=require(_0x8995('0x4'));var fs=require('fs');var path=require(_0x8995('0x5'));var rimraf=require(_0x8995('0x6'));var config=require(_0x8995('0x7'));var attributes=require(_0x8995('0x8'));module['exports']=function(_0x3eca9a,_0x1e107f){return _0x3eca9a[_0x8995('0x9')]('IntegrationReport',attributes,{'tableName':_0x8995('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 978d6d9..3e413fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31f0=['../../config/environment','request','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x546895,_0xb414da){var _0x3b5a09=function(_0x1da01c){while(--_0x1da01c){_0x546895['push'](_0x546895['shift']());}};_0x3b5a09(++_0xb414da);}(_0x31f0,0xb7));var _0x031f=function(_0x142392,_0xb80a2c){_0x142392=_0x142392-0x0;var _0x235df3=_0x31f0[_0x142392];return _0x235df3;};'use strict';var _=require(_0x031f('0x0'));var util=require('util');var moment=require(_0x031f('0x1'));var BPromise=require('bluebird');var rs=require(_0x031f('0x2'));var fs=require('fs');var Redis=require(_0x031f('0x3'));var db=require(_0x031f('0x4'))['db'];var utils=require(_0x031f('0x5'));var logger=require('../../config/logger')(_0x031f('0x6'));var config=require(_0x031f('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3dc98e,_0x487e65,_0x365f59){return new BPromise(function(_0x4300b4,_0x2569b6){return client[_0x031f('0x8')](_0x3dc98e,_0x365f59)['then'](function(_0x2e5624){logger[_0x031f('0x9')](_0x031f('0xa'),_0x487e65,_0x031f('0xb'));logger[_0x031f('0xc')](_0x031f('0xd'),_0x487e65,_0x031f('0xb'),JSON[_0x031f('0xe')](_0x2e5624));if(_0x2e5624['error']){if(_0x2e5624[_0x031f('0xf')][_0x031f('0x10')]===0x1f4){logger[_0x031f('0xf')](_0x031f('0xa'),_0x487e65,_0x2e5624[_0x031f('0xf')][_0x031f('0x11')]);return _0x2569b6(_0x2e5624[_0x031f('0xf')]['message']);}logger[_0x031f('0xf')](_0x031f('0xa'),_0x487e65,_0x2e5624[_0x031f('0xf')][_0x031f('0x11')]);return _0x4300b4(_0x2e5624[_0x031f('0xf')]['message']);}else{logger['info'](_0x031f('0xa'),_0x487e65,_0x031f('0xb'));_0x4300b4(_0x2e5624[_0x031f('0x12')][_0x031f('0x11')]);}})['catch'](function(_0x1dc4a7){logger[_0x031f('0xf')]('IntegrationReport,\x20%s,\x20%s',_0x487e65,_0x1dc4a7);_0x2569b6(_0x1dc4a7);});});}
\ 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(_0x2fd637,_0x2eb80d){var _0x383d2a=function(_0x12c05e){while(--_0x12c05e){_0x2fd637['push'](_0x2fd637['shift']());}};_0x383d2a(++_0x2eb80d);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0xc4aa[_0x3b0731];return _0x4204d7;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('IntegrationReport,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
index 7cfb11c..0de435c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00b3=['getIntervals','post','addInterval','addIntervals','put','update','delete','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./interval.controller','isAuthenticated','index','get','/:id','/:id/sub_intervals'];(function(_0x37b546,_0x8c85de){var _0x24a3b5=function(_0x337bc5){while(--_0x337bc5){_0x37b546['push'](_0x37b546['shift']());}};_0x24a3b5(++_0x8c85de);}(_0x00b3,0x157));var _0x300b=function(_0x1ab50f,_0x24ccfa){_0x1ab50f=_0x1ab50f-0x0;var _0x212551=_0x00b3[_0x1ab50f];return _0x212551;};'use strict';var multer=require(_0x300b('0x0'));var util=require(_0x300b('0x1'));var path=require(_0x300b('0x2'));var timeout=require(_0x300b('0x3'));var express=require(_0x300b('0x4'));var router=express[_0x300b('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x300b('0x6'));var interaction=require(_0x300b('0x7'));var config=require('../../config/environment');var controller=require(_0x300b('0x8'));router['get']('/',auth[_0x300b('0x9')](),controller[_0x300b('0xa')]);router[_0x300b('0xb')](_0x300b('0xc'),auth[_0x300b('0x9')](),controller['show']);router[_0x300b('0xb')](_0x300b('0xd'),auth[_0x300b('0x9')](),controller[_0x300b('0xe')]);router[_0x300b('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0x300b('0xf')](_0x300b('0xd'),auth['isAuthenticated'](),controller[_0x300b('0x10')]);router[_0x300b('0xf')]('/:id/sub_intervals/create_many',auth[_0x300b('0x9')](),controller[_0x300b('0x11')]);router[_0x300b('0x12')](_0x300b('0xc'),auth[_0x300b('0x9')](),controller[_0x300b('0x13')]);router[_0x300b('0x14')](_0x300b('0xc'),auth[_0x300b('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x5fdc=['../../components/auth/service','../../components/interaction/service','../../config/environment','./interval.controller','get','isAuthenticated','index','/:id','getIntervals','create','post','addInterval','/:id/sub_intervals/create_many','addIntervals','put','update','delete','destroy','exports','multer','connect-timeout','express','Router'];(function(_0xbb091,_0x3fe7ee){var _0x467a04=function(_0x3a978d){while(--_0x3a978d){_0xbb091['push'](_0xbb091['shift']());}};_0x467a04(++_0x3fe7ee);}(_0x5fdc,0xcb));var _0xc5fd=function(_0x4646f1,_0x4cce1d){_0x4646f1=_0x4646f1-0x0;var _0x4126e6=_0x5fdc[_0x4646f1];return _0x4126e6;};'use strict';var multer=require(_0xc5fd('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xc5fd('0x1'));var express=require(_0xc5fd('0x2'));var router=express[_0xc5fd('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc5fd('0x4'));var interaction=require(_0xc5fd('0x5'));var config=require(_0xc5fd('0x6'));var controller=require(_0xc5fd('0x7'));router[_0xc5fd('0x8')]('/',auth[_0xc5fd('0x9')](),controller[_0xc5fd('0xa')]);router[_0xc5fd('0x8')](_0xc5fd('0xb'),auth[_0xc5fd('0x9')](),controller['show']);router[_0xc5fd('0x8')]('/:id/sub_intervals',auth[_0xc5fd('0x9')](),controller[_0xc5fd('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0xc5fd('0xd')]);router[_0xc5fd('0xe')]('/:id/sub_intervals',auth['isAuthenticated'](),controller[_0xc5fd('0xf')]);router['post'](_0xc5fd('0x10'),auth['isAuthenticated'](),controller[_0xc5fd('0x11')]);router[_0xc5fd('0x12')](_0xc5fd('0xb'),auth[_0xc5fd('0x9')](),controller[_0xc5fd('0x13')]);router[_0xc5fd('0x14')](_0xc5fd('0xb'),auth[_0xc5fd('0x9')](),controller[_0xc5fd('0x15')]);module[_0xc5fd('0x16')]=router;
\ No newline at end of file
index ce11e7a..d45755a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd50b=['STRING','exports'];(function(_0x5e8460,_0x2003b5){var _0x3d50fd=function(_0x4c499f){while(--_0x4c499f){_0x5e8460['push'](_0x5e8460['shift']());}};_0x3d50fd(++_0x2003b5);}(_0xd50b,0x1db));var _0xbd50=function(_0x2126c7,_0x5cd37f){_0x2126c7=_0x2126c7-0x0;var _0x2d91f4=_0xd50b[_0x2126c7];return _0x2d91f4;};'use strict';var Sequelize=require('sequelize');module[_0xbd50('0x0')]={'name':{'type':Sequelize[_0xbd50('0x1')]},'description':{'type':Sequelize[_0xbd50('0x1')]},'interval':{'type':Sequelize[_0xbd50('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0x2ba4=['exports','STRING','sequelize'];(function(_0x39475e,_0x391c79){var _0x56658f=function(_0x12b869){while(--_0x12b869){_0x39475e['push'](_0x39475e['shift']());}};_0x56658f(++_0x391c79);}(_0x2ba4,0x1c4));var _0x42ba=function(_0x49778f,_0x1f5b68){_0x49778f=_0x49778f-0x0;var _0x435b1a=_0x2ba4[_0x49778f];return _0x435b1a;};'use strict';var Sequelize=require(_0x42ba('0x0'));module[_0x42ba('0x1')]={'name':{'type':Sequelize[_0x42ba('0x2')]},'description':{'type':Sequelize[_0x42ba('0x2')]},'interval':{'type':Sequelize[_0x42ba('0x2')],'allowNull':!![]}};
\ No newline at end of file
index bef36c0..f5027cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c61=['hasOwnProperty','nolimit','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','create','body','role','user','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','IntervalId','findOne','order','getIntervals','addIntervals','sequelize','bulkCreate','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','Intervals','name','Interval','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length'];(function(_0x386b03,_0x5d0000){var _0xd3d524=function(_0x474754){while(--_0x474754){_0x386b03['push'](_0x386b03['shift']());}};_0xd3d524(++_0x5d0000);}(_0x0c61,0xd2));var _0x10c6=function(_0x235f49,_0x2992b4){_0x235f49=_0x235f49-0x0;var _0x551139=_0x0c61[_0x235f49];return _0x551139;};'use strict';var emlformat=require(_0x10c6('0x0'));var rimraf=require(_0x10c6('0x1'));var zipdir=require(_0x10c6('0x2'));var jsonpatch=require(_0x10c6('0x3'));var rp=require(_0x10c6('0x4'));var moment=require('moment');var BPromise=require(_0x10c6('0x5'));var Mustache=require(_0x10c6('0x6'));var util=require(_0x10c6('0x7'));var path=require(_0x10c6('0x8'));var sox=require(_0x10c6('0x9'));var csv=require(_0x10c6('0xa'));var ejs=require(_0x10c6('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x10c6('0xc'));var squel=require(_0x10c6('0xd'));var crypto=require(_0x10c6('0xe'));var jsforce=require(_0x10c6('0xf'));var deskjs=require(_0x10c6('0x10'));var toCsv=require('to-csv');var querystring=require(_0x10c6('0x11'));var Papa=require(_0x10c6('0x12'));var Redis=require(_0x10c6('0x13'));var authService=require(_0x10c6('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x10c6('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x10c6('0x16'))(_0x10c6('0x17'));var utils=require(_0x10c6('0x18'));var config=require(_0x10c6('0x19'));var licenseUtil=require(_0x10c6('0x1a'));var db=require(_0x10c6('0x1b'))['db'];var extensions=require('../../components/extensions/rewrite');function respondWithStatusCode(_0x3a9af8,_0xc86778){_0xc86778=_0xc86778||0xcc;return function(_0x4d885d){if(_0x4d885d){return _0x3a9af8[_0x10c6('0x1c')](_0xc86778);}return _0x3a9af8[_0x10c6('0x1d')](_0xc86778)['end']();};}function respondWithResult(_0x144a11,_0x362c0e){_0x362c0e=_0x362c0e||0xc8;return function(_0xc8b96f){if(_0xc8b96f){return _0x144a11[_0x10c6('0x1d')](_0x362c0e)['json'](_0xc8b96f);}};}function respondWithFilteredResult(_0x28725b,_0x5c2370){return function(_0x5df266){if(_0x5df266){var _0x2906f2=typeof _0x5c2370[_0x10c6('0x1e')]===_0x10c6('0x1f')&&typeof _0x5c2370[_0x10c6('0x20')]===_0x10c6('0x1f');var _0x1771ed=_0x5df266[_0x10c6('0x21')];var _0x16b898=_0x2906f2?0x0:_0x5c2370[_0x10c6('0x1e')];var _0x47dc60=_0x2906f2?_0x5df266[_0x10c6('0x21')]:_0x5c2370[_0x10c6('0x1e')]+_0x5c2370[_0x10c6('0x20')];var _0x107827;if(_0x47dc60>=_0x1771ed){_0x47dc60=_0x1771ed;_0x107827=0xc8;}else{_0x107827=0xce;}_0x28725b[_0x10c6('0x1d')](_0x107827);return _0x28725b['set'](_0x10c6('0x22'),_0x16b898+'-'+_0x47dc60+'/'+_0x1771ed)['json'](_0x5df266);}return null;};}function patchUpdates(_0x43e9fd){return function(_0x304152){try{jsonpatch[_0x10c6('0x23')](_0x304152,_0x43e9fd,!![]);}catch(_0xf52a28){return BPromise[_0x10c6('0x24')](_0xf52a28);}return _0x304152[_0x10c6('0x25')]();};}function saveUpdates(_0x5d05de,_0xd8e0e7){return function(_0x15948a){if(_0x15948a){return _0x15948a[_0x10c6('0x26')](_0x5d05de)[_0x10c6('0x27')](function(_0x42f346){return _0x42f346;});}return null;};}function removeEntity(_0x572b8f,_0x5c5e88){return function(_0x20c8c7){if(_0x20c8c7){return _0x20c8c7[_0x10c6('0x28')]()[_0x10c6('0x27')](function(){var _0x320bc3=_0x20c8c7[_0x10c6('0x29')]({'plain':!![]});var _0x2a8015=_0x10c6('0x2a');return db['UserProfileResource']['destroy']({'where':{'type':_0x2a8015,'resourceId':_0x320bc3['id']}})['then'](function(){return _0x20c8c7;});})[_0x10c6('0x27')](function(){_0x572b8f[_0x10c6('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1a729e,_0x1f32b8){return function(_0x570d9c){if(!_0x570d9c){_0x1a729e['sendStatus'](0x194);}return _0x570d9c;};}function handleError(_0x48bd93,_0x278df3){_0x278df3=_0x278df3||0x1f4;return function(_0x47da38){logger['error'](_0x47da38['stack']);if(_0x47da38[_0x10c6('0x2b')]){delete _0x47da38[_0x10c6('0x2b')];}_0x48bd93[_0x10c6('0x1d')](_0x278df3)['send'](_0x47da38);};}exports['index']=function(_0x38926f,_0x31f113){var _0x5e1320={},_0x2c0aa2={},_0x3500e7={'count':0x0,'rows':[]};var _0x5db099=_['map'](db[_0x10c6('0x2c')][_0x10c6('0x2d')],function(_0x461ced){return{'name':_0x461ced[_0x10c6('0x2e')],'type':_0x461ced[_0x10c6('0x2f')][_0x10c6('0x30')]};});_0x2c0aa2[_0x10c6('0x31')]=_[_0x10c6('0x32')](_0x5db099,_0x10c6('0x2b'));_0x2c0aa2[_0x10c6('0x33')]=_['keys'](_0x38926f[_0x10c6('0x33')]);_0x2c0aa2[_0x10c6('0x34')]=_[_0x10c6('0x35')](_0x2c0aa2[_0x10c6('0x31')],_0x2c0aa2[_0x10c6('0x33')]);_0x5e1320[_0x10c6('0x36')]=_['intersection'](_0x2c0aa2[_0x10c6('0x31')],qs[_0x10c6('0x37')](_0x38926f[_0x10c6('0x33')][_0x10c6('0x37')]));_0x5e1320['attributes']=_0x5e1320[_0x10c6('0x36')][_0x10c6('0x38')]?_0x5e1320[_0x10c6('0x36')]:_0x2c0aa2[_0x10c6('0x31')];if(!_0x38926f['query'][_0x10c6('0x39')](_0x10c6('0x3a'))){_0x5e1320[_0x10c6('0x20')]=qs['limit'](_0x38926f[_0x10c6('0x33')][_0x10c6('0x20')]);_0x5e1320[_0x10c6('0x1e')]=qs[_0x10c6('0x1e')](_0x38926f[_0x10c6('0x33')]['offset']);}_0x5e1320['order']=qs[_0x10c6('0x3b')](_0x38926f[_0x10c6('0x33')][_0x10c6('0x3b')]);_0x5e1320['where']=qs[_0x10c6('0x34')](_[_0x10c6('0x3c')](_0x38926f[_0x10c6('0x33')],_0x2c0aa2[_0x10c6('0x34')]),_0x5db099);if(_0x38926f[_0x10c6('0x33')][_0x10c6('0x3d')]){_0x5e1320[_0x10c6('0x3e')]=_[_0x10c6('0x3f')](_0x5e1320[_0x10c6('0x3e')],{'$or':_['map'](_0x5db099,function(_0x78d9a5){if(_0x78d9a5[_0x10c6('0x2f')]!=='VIRTUAL'){var _0x24d398={};_0x24d398[_0x78d9a5['name']]={'$like':'%'+_0x38926f[_0x10c6('0x33')][_0x10c6('0x3d')]+'%'};return _0x24d398;}})});}_0x5e1320=_[_0x10c6('0x3f')]({},_0x5e1320,_0x38926f[_0x10c6('0x40')]);var _0xa209d={'where':_0x5e1320[_0x10c6('0x3e')]};return db[_0x10c6('0x2c')][_0x10c6('0x21')](_0xa209d)['then'](function(_0x5bc462){_0x3500e7[_0x10c6('0x21')]=_0x5bc462;if(_0x38926f[_0x10c6('0x33')][_0x10c6('0x41')]){_0x5e1320[_0x10c6('0x42')]=[{'all':!![]}];}return db[_0x10c6('0x2c')][_0x10c6('0x43')](_0x5e1320);})[_0x10c6('0x27')](function(_0x53b8cb){_0x3500e7[_0x10c6('0x44')]=_0x53b8cb;return _0x3500e7;})[_0x10c6('0x27')](respondWithFilteredResult(_0x31f113,_0x5e1320))[_0x10c6('0x45')](handleError(_0x31f113,null));};exports[_0x10c6('0x46')]=function(_0x43841e,_0x5cdb03){var _0x26c735={'raw':!![],'where':{'id':_0x43841e[_0x10c6('0x47')]['id']}},_0x4fd907={};_0x4fd907['model']=_[_0x10c6('0x48')](db[_0x10c6('0x2c')]['rawAttributes']);_0x4fd907[_0x10c6('0x33')]=_[_0x10c6('0x48')](_0x43841e['query']);_0x4fd907['filters']=_[_0x10c6('0x35')](_0x4fd907[_0x10c6('0x31')],_0x4fd907[_0x10c6('0x33')]);_0x26c735['attributes']=_[_0x10c6('0x35')](_0x4fd907['model'],qs[_0x10c6('0x37')](_0x43841e[_0x10c6('0x33')][_0x10c6('0x37')]));_0x26c735[_0x10c6('0x36')]=_0x26c735[_0x10c6('0x36')][_0x10c6('0x38')]?_0x26c735[_0x10c6('0x36')]:_0x4fd907['model'];if(_0x43841e[_0x10c6('0x33')][_0x10c6('0x41')]){_0x26c735[_0x10c6('0x42')]=[{'all':!![]}];}_0x26c735=_['merge']({},_0x26c735,_0x43841e['options']);return db[_0x10c6('0x2c')]['find'](_0x26c735)['then'](handleEntityNotFound(_0x5cdb03,null))[_0x10c6('0x27')](respondWithResult(_0x5cdb03,null))[_0x10c6('0x45')](handleError(_0x5cdb03,null));};exports[_0x10c6('0x49')]=function(_0x3c1e00,_0x120524){return db[_0x10c6('0x2c')][_0x10c6('0x49')](_0x3c1e00[_0x10c6('0x4a')],{})[_0x10c6('0x27')](function(_0x39db1e){var _0x5333c0=_0x3c1e00['user']['get']({'plain':!![]});if(!_0x5333c0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5333c0[_0x10c6('0x4b')]===_0x10c6('0x4c')){var _0x3eef7c=_0x39db1e[_0x10c6('0x29')]({'plain':!![]});var _0x26357b=_0x10c6('0x2a');return db['UserProfileSection']['find']({'where':{'name':_0x26357b,'userProfileId':_0x5333c0[_0x10c6('0x4d')]},'raw':!![]})[_0x10c6('0x27')](function(_0x252628){if(_0x252628&&_0x252628[_0x10c6('0x4e')]===0x0){return db['UserProfileResource'][_0x10c6('0x49')]({'name':_0x3eef7c[_0x10c6('0x2b')],'resourceId':_0x3eef7c['id'],'type':_0x252628[_0x10c6('0x2b')],'sectionId':_0x252628['id']},{})[_0x10c6('0x27')](function(){return _0x39db1e;});}else{return _0x39db1e;}})[_0x10c6('0x45')](function(_0x5f1007){logger[_0x10c6('0x4f')](_0x10c6('0x50'),_0x5f1007);throw _0x5f1007;});}return _0x39db1e;})['then'](respondWithResult(_0x120524,0xc9))[_0x10c6('0x45')](handleError(_0x120524,null));};exports[_0x10c6('0x26')]=function(_0x32fad9,_0x257a38){if(_0x32fad9[_0x10c6('0x4a')]['id']){delete _0x32fad9['body']['id'];}return db[_0x10c6('0x2c')][_0x10c6('0x51')]({'where':{'id':_0x32fad9[_0x10c6('0x47')]['id']}})[_0x10c6('0x27')](handleEntityNotFound(_0x257a38,null))['then'](saveUpdates(_0x32fad9['body'],null))['then'](respondWithResult(_0x257a38,null))[_0x10c6('0x45')](handleError(_0x257a38,null));};exports[_0x10c6('0x28')]=function(_0x50b51a,_0x1b5af6){return db[_0x10c6('0x2c')][_0x10c6('0x51')]({'where':{'id':_0x50b51a[_0x10c6('0x47')]['id']}})[_0x10c6('0x27')](handleEntityNotFound(_0x1b5af6,null))[_0x10c6('0x27')](removeEntity(_0x1b5af6,null))[_0x10c6('0x45')](handleError(_0x1b5af6,null));};exports['addInterval']=function(_0x35f2b8,_0x675a3e,_0x5d9950){if(_0x35f2b8[_0x10c6('0x4a')]['id']){delete _0x35f2b8[_0x10c6('0x4a')]['id'];}return db[_0x10c6('0x2c')][_0x10c6('0x51')]({'where':{'id':_0x35f2b8[_0x10c6('0x47')]['id']}})[_0x10c6('0x27')](handleEntityNotFound(_0x675a3e,null))['then'](function(_0x579f93){if(_0x579f93){_0x35f2b8[_0x10c6('0x4a')][_0x10c6('0x52')]=_0x579f93['id'];return db[_0x10c6('0x2c')]['create'](_0x35f2b8[_0x10c6('0x4a')]);}})[_0x10c6('0x27')](respondWithResult(_0x675a3e,null))[_0x10c6('0x45')](handleError(_0x675a3e,null));};exports['getIntervals']=function(_0xf54d39,_0x29742a,_0x485139){var _0x3e939f={};var _0x46c356={};var _0x500d1f;var _0xcc2772;return db[_0x10c6('0x2c')][_0x10c6('0x53')]({'where':{'id':_0xf54d39[_0x10c6('0x47')]['id']}})[_0x10c6('0x27')](handleEntityNotFound(_0x29742a,null))[_0x10c6('0x27')](function(_0x53a8b1){if(_0x53a8b1){_0x500d1f=_0x53a8b1;_0x46c356[_0x10c6('0x31')]=_['keys'](db[_0x10c6('0x2c')][_0x10c6('0x2d')]);_0x46c356[_0x10c6('0x33')]=_[_0x10c6('0x48')](_0xf54d39['query']);_0x46c356[_0x10c6('0x34')]=_[_0x10c6('0x35')](_0x46c356[_0x10c6('0x31')],_0x46c356[_0x10c6('0x33')]);_0x3e939f[_0x10c6('0x36')]=_['intersection'](_0x46c356['model'],qs['fields'](_0xf54d39[_0x10c6('0x33')][_0x10c6('0x37')]));_0x3e939f[_0x10c6('0x36')]=_0x3e939f[_0x10c6('0x36')]['length']?_0x3e939f[_0x10c6('0x36')]:_0x46c356[_0x10c6('0x31')];_0x3e939f[_0x10c6('0x54')]=qs[_0x10c6('0x3b')](_0xf54d39['query']['sort']);_0x3e939f['where']=qs[_0x10c6('0x34')](_['pick'](_0xf54d39[_0x10c6('0x33')],_0x46c356[_0x10c6('0x34')]));if(_0xf54d39['query']['filter']){_0x3e939f[_0x10c6('0x3e')]=_[_0x10c6('0x3f')](_0x3e939f['where'],{'$or':_[_0x10c6('0x32')](_0x3e939f[_0x10c6('0x36')],function(_0x5ae17d){var _0x49da7f={};_0x49da7f[_0x5ae17d]={'$like':'%'+_0xf54d39[_0x10c6('0x33')]['filter']+'%'};return _0x49da7f;})});}_0x3e939f=_[_0x10c6('0x3f')]({},_0x3e939f,_0xf54d39[_0x10c6('0x40')]);return _0x500d1f[_0x10c6('0x55')](_0x3e939f);}})[_0x10c6('0x27')](function(_0x31033e){if(_0x31033e){_0xcc2772=_0x31033e['length'];if(!_0xf54d39['query'][_0x10c6('0x39')](_0x10c6('0x3a'))){_0x3e939f[_0x10c6('0x20')]=qs['limit'](_0xf54d39[_0x10c6('0x33')][_0x10c6('0x20')]);_0x3e939f['offset']=qs[_0x10c6('0x1e')](_0xf54d39['query'][_0x10c6('0x1e')]);}return _0x500d1f['getIntervals'](_0x3e939f);}})['then'](function(_0x364414){if(_0x364414){return _0x364414?{'count':_0xcc2772,'rows':_0x364414}:null;}})['then'](respondWithResult(_0x29742a,null))['catch'](handleError(_0x29742a,null));};exports[_0x10c6('0x56')]=function(_0x55d7ae,_0x598e85,_0x11de1d){return db['Interval'][_0x10c6('0x53')]({'where':{'id':_0x55d7ae[_0x10c6('0x47')]['id']}})[_0x10c6('0x27')](handleEntityNotFound(_0x598e85,null))[_0x10c6('0x27')](function(_0x3a3480){if(_0x3a3480){return db[_0x10c6('0x57')]['transaction'](function(_0x47882c){return db[_0x10c6('0x2c')][_0x10c6('0x28')]({'where':{'IntervalId':_0x55d7ae[_0x10c6('0x47')]['id']},'transaction':_0x47882c})[_0x10c6('0x27')](function(_0x44a634){var _0x59f979=_['map'](_0x55d7ae[_0x10c6('0x4a')],function(_0x38ab70){delete _0x38ab70['id'];_0x38ab70['IntervalId']=_0x55d7ae[_0x10c6('0x47')]['id'];return _0x38ab70;});return db['Interval'][_0x10c6('0x58')](_0x59f979,{'transaction':_0x47882c});});})['then'](function(){return db[_0x10c6('0x2c')][_0x10c6('0x43')]({'where':{'IntervalId':_0x55d7ae['params']['id']}});});}})[_0x10c6('0x27')](respondWithResult(_0x598e85,null))['catch'](handleError(_0x598e85,null));};
\ No newline at end of file
+var _0x3777=['filter','merge','options','includeAll','include','findAll','catch','show','params','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Intervals','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addInterval','IntervalId','getIntervals','findOne','addIntervals','sequelize','transaction','bulkCreate','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','get','UserProfileResource','send','index','Interval','rawAttributes','fieldName','type','key','model','map','name','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick'];(function(_0x2c10fb,_0x380e1b){var _0x23e4c0=function(_0x4fdea5){while(--_0x4fdea5){_0x2c10fb['push'](_0x2c10fb['shift']());}};_0x23e4c0(++_0x380e1b);}(_0x3777,0x194));var _0x7377=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x3777[_0x3bf83f];return _0x22c4a9;};'use strict';var emlformat=require(_0x7377('0x0'));var rimraf=require(_0x7377('0x1'));var zipdir=require(_0x7377('0x2'));var jsonpatch=require(_0x7377('0x3'));var rp=require(_0x7377('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x7377('0x5'));var path=require(_0x7377('0x6'));var sox=require(_0x7377('0x7'));var csv=require(_0x7377('0x8'));var ejs=require(_0x7377('0x9'));var fs=require('fs');var fs_extra=require(_0x7377('0xa'));var _=require(_0x7377('0xb'));var squel=require(_0x7377('0xc'));var crypto=require(_0x7377('0xd'));var jsforce=require(_0x7377('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7377('0x8'));var querystring=require(_0x7377('0xf'));var Papa=require(_0x7377('0x10'));var Redis=require(_0x7377('0x11'));var authService=require(_0x7377('0x12'));var qs=require(_0x7377('0x13'));var as=require(_0x7377('0x14'));var hardwareService=require(_0x7377('0x15'));var logger=require(_0x7377('0x16'))(_0x7377('0x17'));var utils=require(_0x7377('0x18'));var config=require(_0x7377('0x19'));var licenseUtil=require(_0x7377('0x1a'));var db=require('../../mysqldb')['db'];var extensions=require('../../components/extensions/rewrite');function respondWithStatusCode(_0x368983,_0x2f0dad){_0x2f0dad=_0x2f0dad||0xcc;return function(_0x427586){if(_0x427586){return _0x368983[_0x7377('0x1b')](_0x2f0dad);}return _0x368983[_0x7377('0x1c')](_0x2f0dad)[_0x7377('0x1d')]();};}function respondWithResult(_0x461646,_0x2eb108){_0x2eb108=_0x2eb108||0xc8;return function(_0x143634){if(_0x143634){return _0x461646[_0x7377('0x1c')](_0x2eb108)[_0x7377('0x1e')](_0x143634);}};}function respondWithFilteredResult(_0x342bfe,_0x5d3067){return function(_0x14e219){if(_0x14e219){var _0x16cc44=typeof _0x5d3067[_0x7377('0x1f')]===_0x7377('0x20')&&typeof _0x5d3067[_0x7377('0x21')]===_0x7377('0x20');var _0x3c6506=_0x14e219['count'];var _0x45dc79=_0x16cc44?0x0:_0x5d3067['offset'];var _0x4f987b=_0x16cc44?_0x14e219[_0x7377('0x22')]:_0x5d3067[_0x7377('0x1f')]+_0x5d3067[_0x7377('0x21')];var _0x3070b;if(_0x4f987b>=_0x3c6506){_0x4f987b=_0x3c6506;_0x3070b=0xc8;}else{_0x3070b=0xce;}_0x342bfe[_0x7377('0x1c')](_0x3070b);return _0x342bfe['set'](_0x7377('0x23'),_0x45dc79+'-'+_0x4f987b+'/'+_0x3c6506)[_0x7377('0x1e')](_0x14e219);}return null;};}function patchUpdates(_0x1d621d){return function(_0x52fccb){try{jsonpatch['apply'](_0x52fccb,_0x1d621d,!![]);}catch(_0x4a1249){return BPromise[_0x7377('0x24')](_0x4a1249);}return _0x52fccb[_0x7377('0x25')]();};}function saveUpdates(_0x4d187a,_0x4a2359){return function(_0x10b6d2){if(_0x10b6d2){return _0x10b6d2[_0x7377('0x26')](_0x4d187a)[_0x7377('0x27')](function(_0x21267a){return _0x21267a;});}return null;};}function removeEntity(_0xb76f43,_0x104214){return function(_0x3709d6){if(_0x3709d6){return _0x3709d6[_0x7377('0x28')]()[_0x7377('0x27')](function(){var _0x1f27c6=_0x3709d6[_0x7377('0x29')]({'plain':!![]});var _0x1d209d='Intervals';return db[_0x7377('0x2a')]['destroy']({'where':{'type':_0x1d209d,'resourceId':_0x1f27c6['id']}})[_0x7377('0x27')](function(){return _0x3709d6;});})[_0x7377('0x27')](function(){_0xb76f43[_0x7377('0x1c')](0xcc)[_0x7377('0x1d')]();});}};}function handleEntityNotFound(_0x8a9336,_0x263b4c){return function(_0xf3e703){if(!_0xf3e703){_0x8a9336[_0x7377('0x1b')](0x194);}return _0xf3e703;};}function handleError(_0x3c2e35,_0x514b21){_0x514b21=_0x514b21||0x1f4;return function(_0x57eb96){logger['error'](_0x57eb96['stack']);if(_0x57eb96['name']){delete _0x57eb96['name'];}_0x3c2e35['status'](_0x514b21)[_0x7377('0x2b')](_0x57eb96);};}exports[_0x7377('0x2c')]=function(_0x5a7763,_0xf8841d){var _0x440ee1={},_0x2a1303={},_0x51a6e8={'count':0x0,'rows':[]};var _0x5b1de8=_['map'](db[_0x7377('0x2d')][_0x7377('0x2e')],function(_0x55a5ce){return{'name':_0x55a5ce[_0x7377('0x2f')],'type':_0x55a5ce[_0x7377('0x30')][_0x7377('0x31')]};});_0x2a1303[_0x7377('0x32')]=_[_0x7377('0x33')](_0x5b1de8,_0x7377('0x34'));_0x2a1303[_0x7377('0x35')]=_[_0x7377('0x36')](_0x5a7763[_0x7377('0x35')]);_0x2a1303['filters']=_[_0x7377('0x37')](_0x2a1303['model'],_0x2a1303[_0x7377('0x35')]);_0x440ee1[_0x7377('0x38')]=_[_0x7377('0x37')](_0x2a1303[_0x7377('0x32')],qs[_0x7377('0x39')](_0x5a7763[_0x7377('0x35')][_0x7377('0x39')]));_0x440ee1[_0x7377('0x38')]=_0x440ee1[_0x7377('0x38')][_0x7377('0x3a')]?_0x440ee1[_0x7377('0x38')]:_0x2a1303[_0x7377('0x32')];if(!_0x5a7763['query'][_0x7377('0x3b')](_0x7377('0x3c'))){_0x440ee1['limit']=qs[_0x7377('0x21')](_0x5a7763['query'][_0x7377('0x21')]);_0x440ee1[_0x7377('0x1f')]=qs[_0x7377('0x1f')](_0x5a7763['query'][_0x7377('0x1f')]);}_0x440ee1[_0x7377('0x3d')]=qs['sort'](_0x5a7763[_0x7377('0x35')][_0x7377('0x3e')]);_0x440ee1[_0x7377('0x3f')]=qs[_0x7377('0x40')](_[_0x7377('0x41')](_0x5a7763[_0x7377('0x35')],_0x2a1303['filters']),_0x5b1de8);if(_0x5a7763[_0x7377('0x35')][_0x7377('0x42')]){_0x440ee1[_0x7377('0x3f')]=_[_0x7377('0x43')](_0x440ee1['where'],{'$or':_[_0x7377('0x33')](_0x5b1de8,function(_0x32e31e){if(_0x32e31e[_0x7377('0x30')]!=='VIRTUAL'){var _0xe00f6a={};_0xe00f6a[_0x32e31e[_0x7377('0x34')]]={'$like':'%'+_0x5a7763['query'][_0x7377('0x42')]+'%'};return _0xe00f6a;}})});}_0x440ee1=_['merge']({},_0x440ee1,_0x5a7763[_0x7377('0x44')]);var _0x354116={'where':_0x440ee1[_0x7377('0x3f')]};return db['Interval']['count'](_0x354116)[_0x7377('0x27')](function(_0x4373f4){_0x51a6e8[_0x7377('0x22')]=_0x4373f4;if(_0x5a7763[_0x7377('0x35')][_0x7377('0x45')]){_0x440ee1[_0x7377('0x46')]=[{'all':!![]}];}return db[_0x7377('0x2d')][_0x7377('0x47')](_0x440ee1);})[_0x7377('0x27')](function(_0x5d0fe8){_0x51a6e8['rows']=_0x5d0fe8;return _0x51a6e8;})[_0x7377('0x27')](respondWithFilteredResult(_0xf8841d,_0x440ee1))[_0x7377('0x48')](handleError(_0xf8841d,null));};exports[_0x7377('0x49')]=function(_0x3c5bef,_0xfea7e){var _0x385504={'raw':!![],'where':{'id':_0x3c5bef[_0x7377('0x4a')]['id']}},_0x37c6c0={};_0x37c6c0[_0x7377('0x32')]=_[_0x7377('0x36')](db[_0x7377('0x2d')]['rawAttributes']);_0x37c6c0[_0x7377('0x35')]=_[_0x7377('0x36')](_0x3c5bef[_0x7377('0x35')]);_0x37c6c0['filters']=_[_0x7377('0x37')](_0x37c6c0[_0x7377('0x32')],_0x37c6c0[_0x7377('0x35')]);_0x385504['attributes']=_['intersection'](_0x37c6c0[_0x7377('0x32')],qs[_0x7377('0x39')](_0x3c5bef['query'][_0x7377('0x39')]));_0x385504[_0x7377('0x38')]=_0x385504[_0x7377('0x38')][_0x7377('0x3a')]?_0x385504[_0x7377('0x38')]:_0x37c6c0[_0x7377('0x32')];if(_0x3c5bef[_0x7377('0x35')][_0x7377('0x45')]){_0x385504[_0x7377('0x46')]=[{'all':!![]}];}_0x385504=_['merge']({},_0x385504,_0x3c5bef[_0x7377('0x44')]);return db['Interval']['find'](_0x385504)[_0x7377('0x27')](handleEntityNotFound(_0xfea7e,null))[_0x7377('0x27')](respondWithResult(_0xfea7e,null))['catch'](handleError(_0xfea7e,null));};exports[_0x7377('0x4b')]=function(_0x1b7b71,_0x2c3d46){return db[_0x7377('0x2d')][_0x7377('0x4b')](_0x1b7b71[_0x7377('0x4c')],{})[_0x7377('0x27')](function(_0x2bece0){var _0x48a7d9=_0x1b7b71['user'][_0x7377('0x29')]({'plain':!![]});if(!_0x48a7d9)throw new Error(_0x7377('0x4d'));if(_0x48a7d9[_0x7377('0x4e')]===_0x7377('0x4f')){var _0x351928=_0x2bece0[_0x7377('0x29')]({'plain':!![]});var _0x2510a1=_0x7377('0x50');return db['UserProfileSection'][_0x7377('0x51')]({'where':{'name':_0x2510a1,'userProfileId':_0x48a7d9[_0x7377('0x52')]},'raw':!![]})[_0x7377('0x27')](function(_0x4e45a1){if(_0x4e45a1&&_0x4e45a1[_0x7377('0x53')]===0x0){return db[_0x7377('0x2a')][_0x7377('0x4b')]({'name':_0x351928[_0x7377('0x34')],'resourceId':_0x351928['id'],'type':_0x4e45a1[_0x7377('0x34')],'sectionId':_0x4e45a1['id']},{})[_0x7377('0x27')](function(){return _0x2bece0;});}else{return _0x2bece0;}})[_0x7377('0x48')](function(_0x2e158b){logger[_0x7377('0x54')](_0x7377('0x55'),_0x2e158b);throw _0x2e158b;});}return _0x2bece0;})[_0x7377('0x27')](respondWithResult(_0x2c3d46,0xc9))['catch'](handleError(_0x2c3d46,null));};exports['update']=function(_0x3fbf68,_0x26251c){if(_0x3fbf68[_0x7377('0x4c')]['id']){delete _0x3fbf68[_0x7377('0x4c')]['id'];}return db[_0x7377('0x2d')]['find']({'where':{'id':_0x3fbf68[_0x7377('0x4a')]['id']}})[_0x7377('0x27')](handleEntityNotFound(_0x26251c,null))['then'](saveUpdates(_0x3fbf68[_0x7377('0x4c')],null))[_0x7377('0x27')](respondWithResult(_0x26251c,null))[_0x7377('0x48')](handleError(_0x26251c,null));};exports['destroy']=function(_0x122d26,_0x19de15){return db[_0x7377('0x2d')][_0x7377('0x51')]({'where':{'id':_0x122d26[_0x7377('0x4a')]['id']}})['then'](handleEntityNotFound(_0x19de15,null))[_0x7377('0x27')](removeEntity(_0x19de15,null))[_0x7377('0x48')](handleError(_0x19de15,null));};exports[_0x7377('0x56')]=function(_0x50c2f6,_0x3bbbee,_0x3e7281){if(_0x50c2f6[_0x7377('0x4c')]['id']){delete _0x50c2f6['body']['id'];}return db[_0x7377('0x2d')][_0x7377('0x51')]({'where':{'id':_0x50c2f6[_0x7377('0x4a')]['id']}})[_0x7377('0x27')](handleEntityNotFound(_0x3bbbee,null))[_0x7377('0x27')](function(_0x175373){if(_0x175373){_0x50c2f6[_0x7377('0x4c')][_0x7377('0x57')]=_0x175373['id'];return db[_0x7377('0x2d')][_0x7377('0x4b')](_0x50c2f6[_0x7377('0x4c')]);}})[_0x7377('0x27')](respondWithResult(_0x3bbbee,null))['catch'](handleError(_0x3bbbee,null));};exports[_0x7377('0x58')]=function(_0x56b1fd,_0x51adf3,_0x43dd37){var _0x2fbe4a={};var _0x31beb5={};var _0x3689a4;var _0x26f117;return db['Interval'][_0x7377('0x59')]({'where':{'id':_0x56b1fd[_0x7377('0x4a')]['id']}})['then'](handleEntityNotFound(_0x51adf3,null))[_0x7377('0x27')](function(_0x52f2f6){if(_0x52f2f6){_0x3689a4=_0x52f2f6;_0x31beb5[_0x7377('0x32')]=_[_0x7377('0x36')](db[_0x7377('0x2d')][_0x7377('0x2e')]);_0x31beb5[_0x7377('0x35')]=_[_0x7377('0x36')](_0x56b1fd['query']);_0x31beb5['filters']=_[_0x7377('0x37')](_0x31beb5[_0x7377('0x32')],_0x31beb5[_0x7377('0x35')]);_0x2fbe4a['attributes']=_[_0x7377('0x37')](_0x31beb5[_0x7377('0x32')],qs['fields'](_0x56b1fd[_0x7377('0x35')][_0x7377('0x39')]));_0x2fbe4a[_0x7377('0x38')]=_0x2fbe4a[_0x7377('0x38')]['length']?_0x2fbe4a[_0x7377('0x38')]:_0x31beb5[_0x7377('0x32')];_0x2fbe4a[_0x7377('0x3d')]=qs[_0x7377('0x3e')](_0x56b1fd[_0x7377('0x35')][_0x7377('0x3e')]);_0x2fbe4a[_0x7377('0x3f')]=qs[_0x7377('0x40')](_[_0x7377('0x41')](_0x56b1fd[_0x7377('0x35')],_0x31beb5['filters']));if(_0x56b1fd[_0x7377('0x35')][_0x7377('0x42')]){_0x2fbe4a[_0x7377('0x3f')]=_[_0x7377('0x43')](_0x2fbe4a['where'],{'$or':_[_0x7377('0x33')](_0x2fbe4a['attributes'],function(_0x2dcf5b){var _0x172980={};_0x172980[_0x2dcf5b]={'$like':'%'+_0x56b1fd['query'][_0x7377('0x42')]+'%'};return _0x172980;})});}_0x2fbe4a=_['merge']({},_0x2fbe4a,_0x56b1fd[_0x7377('0x44')]);return _0x3689a4[_0x7377('0x58')](_0x2fbe4a);}})[_0x7377('0x27')](function(_0x358e19){if(_0x358e19){_0x26f117=_0x358e19[_0x7377('0x3a')];if(!_0x56b1fd['query']['hasOwnProperty'](_0x7377('0x3c'))){_0x2fbe4a[_0x7377('0x21')]=qs[_0x7377('0x21')](_0x56b1fd[_0x7377('0x35')]['limit']);_0x2fbe4a[_0x7377('0x1f')]=qs[_0x7377('0x1f')](_0x56b1fd[_0x7377('0x35')][_0x7377('0x1f')]);}return _0x3689a4['getIntervals'](_0x2fbe4a);}})[_0x7377('0x27')](function(_0x1a4882){if(_0x1a4882){return _0x1a4882?{'count':_0x26f117,'rows':_0x1a4882}:null;}})['then'](respondWithResult(_0x51adf3,null))[_0x7377('0x48')](handleError(_0x51adf3,null));};exports[_0x7377('0x5a')]=function(_0x5806d9,_0x512939,_0x2f9dc7){return db[_0x7377('0x2d')][_0x7377('0x59')]({'where':{'id':_0x5806d9[_0x7377('0x4a')]['id']}})['then'](handleEntityNotFound(_0x512939,null))[_0x7377('0x27')](function(_0x4b80ef){if(_0x4b80ef){return db[_0x7377('0x5b')][_0x7377('0x5c')](function(_0x449acd){return db[_0x7377('0x2d')][_0x7377('0x28')]({'where':{'IntervalId':_0x5806d9[_0x7377('0x4a')]['id']},'transaction':_0x449acd})[_0x7377('0x27')](function(_0x2306e5){var _0x1c3370=_['map'](_0x5806d9['body'],function(_0x180c24){delete _0x180c24['id'];_0x180c24['IntervalId']=_0x5806d9[_0x7377('0x4a')]['id'];return _0x180c24;});return db['Interval'][_0x7377('0x5d')](_0x1c3370,{'transaction':_0x449acd});});})[_0x7377('0x27')](function(){return db[_0x7377('0x2d')]['findAll']({'where':{'IntervalId':_0x5806d9[_0x7377('0x4a')]['id']}});});}})['then'](respondWithResult(_0x512939,null))[_0x7377('0x48')](handleError(_0x512939,null));};
\ No newline at end of file
index e333519..dcb6d7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x815f=['../../components/extensions/rewrite','define','Interval','tools_intervals','rewrite','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./interval.attributes'];(function(_0x4d88f6,_0x52f758){var _0x2041c8=function(_0x16f556){while(--_0x16f556){_0x4d88f6['push'](_0x4d88f6['shift']());}};_0x2041c8(++_0x52f758);}(_0x815f,0x1c5));var _0xf815=function(_0xef6cd2,_0x4f2c29){_0xef6cd2=_0xef6cd2-0x0;var _0x46f4a9=_0x815f[_0xef6cd2];return _0x46f4a9;};'use strict';var _=require(_0xf815('0x0'));var util=require('util');var logger=require(_0xf815('0x1'))('api');var moment=require(_0xf815('0x2'));var BPromise=require(_0xf815('0x3'));var rp=require(_0xf815('0x4'));var fs=require('fs');var path=require(_0xf815('0x5'));var rimraf=require(_0xf815('0x6'));var config=require(_0xf815('0x7'));var attributes=require(_0xf815('0x8'));var extensions=require(_0xf815('0x9'));module['exports']=function(_0x4b22c1,_0x1665ff){return _0x4b22c1[_0xf815('0xa')](_0xf815('0xb'),attributes,{'tableName':_0xf815('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x5ac028,_0x48f73a){extensions[_0xf815('0xd')](_0x4b22c1,_0x5ac028);},'afterBulkCreate':function(_0x1cd300,_0x55672d,_0x476fe5){_0x476fe5();extensions[_0xf815('0xd')](_0x4b22c1,_0x1cd300[0x0]);},'afterUpdate':function(_0x94ab48,_0x33b0de){extensions['rewrite'](_0x4b22c1,_0x94ab48);},'afterDestroy':function(_0x542936,_0x96a9e7){extensions['rewrite'](_0x4b22c1,_0x542936);}}});};
\ No newline at end of file
+var _0x3d74=['define','Interval','tools_intervals','rewrite','lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../components/extensions/rewrite','exports'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x3d74,0x149));var _0x43d7=function(_0x1e3c9e,_0x46b783){_0x1e3c9e=_0x1e3c9e-0x0;var _0x42728d=_0x3d74[_0x1e3c9e];return _0x42728d;};'use strict';var _=require(_0x43d7('0x0'));var util=require(_0x43d7('0x1'));var logger=require(_0x43d7('0x2'))(_0x43d7('0x3'));var moment=require(_0x43d7('0x4'));var BPromise=require('bluebird');var rp=require(_0x43d7('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x43d7('0x6'));var config=require('../../config/environment');var attributes=require('./interval.attributes');var extensions=require(_0x43d7('0x7'));module[_0x43d7('0x8')]=function(_0x23204a,_0x2dd33c){return _0x23204a[_0x43d7('0x9')](_0x43d7('0xa'),attributes,{'tableName':_0x43d7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x23e06a,_0x27a691){extensions[_0x43d7('0xc')](_0x23204a,_0x23e06a);},'afterBulkCreate':function(_0x5048ec,_0xcf3f4d,_0x11f557){_0x11f557();extensions[_0x43d7('0xc')](_0x23204a,_0x5048ec[0x0]);},'afterUpdate':function(_0x5dfbd1,_0x4288ec){extensions[_0x43d7('0xc')](_0x23204a,_0x5dfbd1);},'afterDestroy':function(_0x583310,_0x20e0eb){extensions[_0x43d7('0xc')](_0x23204a,_0x583310);}}});};
\ No newline at end of file
index 8eeccfd..dc59794 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x622035,_0x1a4b91){var _0x326cf2=function(_0x5c3002){while(--_0x5c3002){_0x622035['push'](_0x622035['shift']());}};_0x326cf2(++_0x1a4b91);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
+var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0xdd2bfa,_0x5bd304){var _0x55397e=function(_0x196f7d){while(--_0x196f7d){_0xdd2bfa['push'](_0xdd2bfa['shift']());}};_0x55397e(++_0x5bd304);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
index 333432b..540c9d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['isAuthenticated','send','exports','express','Router','../../components/auth/service','./jira.controller'];(function(_0x2ef69a,_0x414188){var _0x3e82b5=function(_0x32c941){while(--_0x32c941){_0x2ef69a['push'](_0x2ef69a['shift']());}};_0x3e82b5(++_0x414188);}(_0xdb28,0x106));var _0x8db2=function(_0x24cd22,_0x3df367){_0x24cd22=_0x24cd22-0x0;var _0x39853f=_0xdb28[_0x24cd22];return _0x39853f;};'use strict';var express=require(_0x8db2('0x0'));var router=express[_0x8db2('0x1')]();var auth=require(_0x8db2('0x2'));var controller=require(_0x8db2('0x3'));router['post']('/',auth[_0x8db2('0x4')](),controller[_0x8db2('0x5')]);module[_0x8db2('0x6')]=router;
\ No newline at end of file
+var _0x5f66=['send','exports','Router','./jira.controller','post','isAuthenticated'];(function(_0x1ae5ab,_0xc5d441){var _0x1ce001=function(_0x5ef96d){while(--_0x5ef96d){_0x1ae5ab['push'](_0x1ae5ab['shift']());}};_0x1ce001(++_0xc5d441);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x5f66[_0x4154a6];return _0x3b2786;};'use strict';var express=require('express');var router=express[_0x65f6('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x65f6('0x1'));router[_0x65f6('0x2')]('/',auth[_0x65f6('0x3')](),controller[_0x65f6('0x4')]);module[_0x65f6('0x5')]=router;
\ No newline at end of file
index a6e78a9..9d83655 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78a0=['customfield_11502','newToken','customfield_11503','name','customfield_11504','reason','customfield_10102','/rest/api/2/issue','POST','application/json','Basic\x20','toString','base64','request','setEncoding','utf8','data','end','statusCode','status','json','write','send','body','headers','x-forwarded-for','connection','socket','remoteAddress','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','key','MOTGUI','summary','Report','description','stringify','issuetype','Bug','fields','customfield_11500','email','customfield_11501'];(function(_0x20db6c,_0x4ff24a){var _0x30b5d3=function(_0x1ba9f0){while(--_0x1ba9f0){_0x20db6c['push'](_0x20db6c['shift']());}};_0x30b5d3(++_0x4ff24a);}(_0x78a0,0x1f3));var _0x078a=function(_0x5999ba,_0x97b26a){_0x5999ba=_0x5999ba-0x0;var _0x2140b5=_0x78a0[_0x5999ba];return _0x2140b5;};'use strict';var BPromise=require(_0x078a('0x0'));var https=require(_0x078a('0x1'));var logger=require(_0x078a('0x2'))(_0x078a('0x3'));var USERNAME=_0x078a('0x4');var PASSWORD=_0x078a('0x5');function openIssue(_0x45514a,_0x180291){var _0x42ec47={'fields':{'project':{'key':_0x45514a[_0x078a('0x6')]||_0x078a('0x7')},'summary':(_0x45514a[_0x078a('0x8')]||_0x078a('0x9'))+'\x20from\x20'+_0x45514a['ip'],'description':_0x45514a[_0x078a('0xa')]||JSON[_0x078a('0xb')](_0x45514a),'issuetype':{'name':_0x45514a[_0x078a('0xc')]||_0x078a('0xd')}}};_0x42ec47[_0x078a('0xe')][_0x078a('0xf')]=_0x45514a[_0x078a('0x10')];_0x42ec47[_0x078a('0xe')][_0x078a('0x11')]=_0x45514a['oldToken'];_0x42ec47['fields'][_0x078a('0x12')]=_0x45514a[_0x078a('0x13')];_0x42ec47['fields'][_0x078a('0x14')]=_0x45514a[_0x078a('0x15')];_0x42ec47['fields'][_0x078a('0x16')]=_0x45514a[_0x078a('0x17')];_0x42ec47['fields'][_0x078a('0x18')]=_0x45514a['ip'];var _0x32e895={'host':'track.xcallymotion.com','port':0x1bb,'path':_0x078a('0x19'),'method':_0x078a('0x1a'),'timeout':0x4e20,'headers':{'Content-Type':_0x078a('0x1b'),'Authorization':_0x078a('0x1c')+new Buffer(USERNAME+':'+PASSWORD)[_0x078a('0x1d')](_0x078a('0x1e'))}};var _0x3bb19c=JSON[_0x078a('0xb')](_0x42ec47);var _0x3c3db7=https[_0x078a('0x1f')](_0x32e895,function(_0x95b76e){_0x95b76e[_0x078a('0x20')](_0x078a('0x21'));var _0x201d72='';_0x95b76e['on'](_0x078a('0x22'),function(_0x24d496){_0x201d72+=_0x24d496;});_0x95b76e['on'](_0x078a('0x23'),function(){if(_0x180291){return _0x180291['status'](_0x95b76e[_0x078a('0x24')])['json'](JSON['parse'](_0x201d72));}});});_0x3c3db7['on']('error',function(_0x7f5465){if(_0x180291){return _0x180291[_0x078a('0x25')](0x1f4)[_0x078a('0x26')]({'errors':[{'message':'Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','type':'api.jira'}]});}});_0x3c3db7[_0x078a('0x27')](_0x3bb19c);_0x3c3db7['end']();}exports['openIssue']=openIssue;exports[_0x078a('0x28')]=function(_0x49e617,_0x77160a){_0x49e617[_0x078a('0x29')]['ip']=_0x49e617[_0x078a('0x2a')][_0x078a('0x2b')]||_0x49e617[_0x078a('0x2c')]['remoteAddress']||_0x49e617['socket']['remoteAddress']||_0x49e617[_0x078a('0x2c')][_0x078a('0x2d')][_0x078a('0x2e')];return openIssue(_0x49e617[_0x078a('0x29')],_0x77160a);};
\ No newline at end of file
+var _0x0715=['request','setEncoding','utf8','data','end','statusCode','parse','error','status','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','send','body','remoteAddress','socket','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','key','\x20from\x20','stringify','Bug','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','customfield_11503','name','customfield_11504','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','application/json','Basic\x20','base64'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x0715,0xb4));var _0x5071=function(_0x125144,_0x42656a){_0x125144=_0x125144-0x0;var _0xe5cfcc=_0x0715[_0x125144];return _0xe5cfcc;};'use strict';var BPromise=require(_0x5071('0x0'));var https=require(_0x5071('0x1'));var logger=require(_0x5071('0x2'))(_0x5071('0x3'));var USERNAME=_0x5071('0x4');var PASSWORD=_0x5071('0x5');function openIssue(_0x3bb5e7,_0x1c5c2f){var _0x12083b={'fields':{'project':{'key':_0x3bb5e7[_0x5071('0x6')]||'MOTGUI'},'summary':(_0x3bb5e7['summary']||'Report')+_0x5071('0x7')+_0x3bb5e7['ip'],'description':_0x3bb5e7['description']||JSON[_0x5071('0x8')](_0x3bb5e7),'issuetype':{'name':_0x3bb5e7['issuetype']||_0x5071('0x9')}}};_0x12083b[_0x5071('0xa')][_0x5071('0xb')]=_0x3bb5e7[_0x5071('0xc')];_0x12083b[_0x5071('0xa')][_0x5071('0xd')]=_0x3bb5e7[_0x5071('0xe')];_0x12083b[_0x5071('0xa')][_0x5071('0xf')]=_0x3bb5e7['newToken'];_0x12083b[_0x5071('0xa')][_0x5071('0x10')]=_0x3bb5e7[_0x5071('0x11')];_0x12083b['fields'][_0x5071('0x12')]=_0x3bb5e7['reason'];_0x12083b['fields'][_0x5071('0x13')]=_0x3bb5e7['ip'];var _0x24e297={'host':_0x5071('0x14'),'port':0x1bb,'path':_0x5071('0x15'),'method':'POST','timeout':0x4e20,'headers':{'Content-Type':_0x5071('0x16'),'Authorization':_0x5071('0x17')+new Buffer(USERNAME+':'+PASSWORD)['toString'](_0x5071('0x18'))}};var _0x3fb468=JSON[_0x5071('0x8')](_0x12083b);var _0x8cc9de=https[_0x5071('0x19')](_0x24e297,function(_0x38b745){_0x38b745[_0x5071('0x1a')](_0x5071('0x1b'));var _0x53cae9='';_0x38b745['on'](_0x5071('0x1c'),function(_0x387e56){_0x53cae9+=_0x387e56;});_0x38b745['on'](_0x5071('0x1d'),function(){if(_0x1c5c2f){return _0x1c5c2f['status'](_0x38b745[_0x5071('0x1e')])['json'](JSON[_0x5071('0x1f')](_0x53cae9));}});});_0x8cc9de['on'](_0x5071('0x20'),function(_0x3f4025){if(_0x1c5c2f){return _0x1c5c2f[_0x5071('0x21')](0x1f4)['json']({'errors':[{'message':_0x5071('0x22'),'type':_0x5071('0x23')}]});}});_0x8cc9de[_0x5071('0x24')](_0x3fb468);_0x8cc9de[_0x5071('0x1d')]();}exports['openIssue']=openIssue;exports[_0x5071('0x25')]=function(_0x4c93cb,_0x24449f){_0x4c93cb[_0x5071('0x26')]['ip']=_0x4c93cb['headers']['x-forwarded-for']||_0x4c93cb['connection'][_0x5071('0x27')]||_0x4c93cb[_0x5071('0x28')][_0x5071('0x27')]||_0x4c93cb['connection'][_0x5071('0x28')][_0x5071('0x27')];return openIssue(_0x4c93cb['body'],_0x24449f);};
\ No newline at end of file
index 5e9370b..d21980f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x668b=['get','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','isAuthenticated','index'];(function(_0x26e721,_0x5eb0ad){var _0x455880=function(_0x86248b){while(--_0x86248b){_0x26e721['push'](_0x26e721['shift']());}};_0x455880(++_0x5eb0ad);}(_0x668b,0x140));var _0xb668=function(_0xa2b098,_0x461a08){_0xa2b098=_0xa2b098-0x0;var _0x29502e=_0x668b[_0xa2b098];return _0x29502e;};'use strict';var multer=require(_0xb668('0x0'));var util=require(_0xb668('0x1'));var path=require('path');var timeout=require(_0xb668('0x2'));var express=require(_0xb668('0x3'));var router=express['Router']();var fs_extra=require(_0xb668('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xb668('0x5'));var config=require(_0xb668('0x6'));var controller=require(_0xb668('0x7'));router['get']('/',auth[_0xb668('0x8')](),controller[_0xb668('0x9')]);router[_0xb668('0xa')](_0xb668('0xb'),auth[_0xb668('0x8')](),controller[_0xb668('0xc')]);router['get'](_0xb668('0xd'),auth[_0xb668('0x8')](),controller[_0xb668('0xe')]);router[_0xb668('0xf')]('/',auth[_0xb668('0x8')](),controller[_0xb668('0x10')]);router[_0xb668('0x11')](_0xb668('0xd'),auth['isAuthenticated'](),controller[_0xb668('0x12')]);router[_0xb668('0x13')](_0xb668('0xd'),auth[_0xb668('0x8')](),controller[_0xb668('0x14')]);module[_0xb668('0x15')]=router;
\ No newline at end of file
+var _0xa8a8=['create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post'];(function(_0x51838e,_0x3d3aeb){var _0x4e92b4=function(_0x3aab2b){while(--_0x3aab2b){_0x51838e['push'](_0x51838e['shift']());}};_0x4e92b4(++_0x3d3aeb);}(_0xa8a8,0xec));var _0x8a8a=function(_0x3ebea7,_0x2c920d){_0x3ebea7=_0x3ebea7-0x0;var _0x331c56=_0xa8a8[_0x3ebea7];return _0x331c56;};'use strict';var multer=require(_0x8a8a('0x0'));var util=require(_0x8a8a('0x1'));var path=require(_0x8a8a('0x2'));var timeout=require(_0x8a8a('0x3'));var express=require('express');var router=express[_0x8a8a('0x4')]();var fs_extra=require(_0x8a8a('0x5'));var auth=require(_0x8a8a('0x6'));var interaction=require(_0x8a8a('0x7'));var config=require(_0x8a8a('0x8'));var controller=require(_0x8a8a('0x9'));router[_0x8a8a('0xa')]('/',auth[_0x8a8a('0xb')](),controller[_0x8a8a('0xc')]);router[_0x8a8a('0xa')](_0x8a8a('0xd'),auth[_0x8a8a('0xb')](),controller[_0x8a8a('0xe')]);router[_0x8a8a('0xa')](_0x8a8a('0xf'),auth['isAuthenticated'](),controller['show']);router[_0x8a8a('0x10')]('/',auth['isAuthenticated'](),controller[_0x8a8a('0x11')]);router[_0x8a8a('0x12')]('/:id',auth[_0x8a8a('0xb')](),controller[_0x8a8a('0x13')]);router[_0x8a8a('0x14')]('/:id',auth[_0x8a8a('0xb')](),controller[_0x8a8a('0x15')]);module[_0x8a8a('0x16')]=router;
\ No newline at end of file
index 3ddd5f5..c615ff2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x1969a7,_0x5a133a){var _0x3d665f=function(_0x39c64b){while(--_0x39c64b){_0x1969a7['push'](_0x1969a7['shift']());}};_0x3d665f(++_0x5a133a);}(_0x7a54,0x106));var _0x47a5=function(_0xc7ef97,_0x44c828){_0xc7ef97=_0xc7ef97-0x0;var _0xb01e8a=_0x7a54[_0xc7ef97];return _0xb01e8a;};'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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x7a54,0x106));var _0x47a5=function(_0x1e80a3,_0xee2fc3){_0x1e80a3=_0x1e80a3-0x0;var _0x17965c=_0x7a54[_0x1e80a3];return _0x17965c;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
index b46cc67..c0596e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x078c=['lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','apply','save','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','JscriptyAnswerReport','count','include','rows','catch','intersection','includeAll','options','create','body','find','params','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra'];(function(_0x76f473,_0x4d6271){var _0x41dbec=function(_0x40d328){while(--_0x40d328){_0x76f473['push'](_0x76f473['shift']());}};_0x41dbec(++_0x4d6271);}(_0x078c,0x19f));var _0xc078=function(_0x2c27ed,_0x5c50f0){_0x2c27ed=_0x2c27ed-0x0;var _0x597bd1=_0x078c[_0x2c27ed];return _0x597bd1;};'use strict';var emlformat=require(_0xc078('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc078('0x1'));var jsonpatch=require(_0xc078('0x2'));var rp=require('request-promise');var moment=require(_0xc078('0x3'));var BPromise=require(_0xc078('0x4'));var Mustache=require(_0xc078('0x5'));var util=require(_0xc078('0x6'));var path=require('path');var sox=require(_0xc078('0x7'));var csv=require(_0xc078('0x8'));var ejs=require(_0xc078('0x9'));var fs=require('fs');var fs_extra=require(_0xc078('0xa'));var _=require(_0xc078('0xb'));var squel=require(_0xc078('0xc'));var crypto=require(_0xc078('0xd'));var jsforce=require(_0xc078('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc078('0xf'));var Redis=require(_0xc078('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xc078('0x11'));var as=require(_0xc078('0x12'));var hardwareService=require(_0xc078('0x13'));var logger=require(_0xc078('0x14'))(_0xc078('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc078('0x16'));var db=require(_0xc078('0x17'))['db'];function respondWithStatusCode(_0x3fa2be,_0x25e95d){_0x25e95d=_0x25e95d||0xcc;return function(_0x3e27c7){if(_0x3e27c7){return _0x3fa2be[_0xc078('0x18')](_0x25e95d);}return _0x3fa2be[_0xc078('0x19')](_0x25e95d)[_0xc078('0x1a')]();};}function respondWithResult(_0x11a3c3,_0x393225){_0x393225=_0x393225||0xc8;return function(_0x256d7b){if(_0x256d7b){return _0x11a3c3[_0xc078('0x19')](_0x393225)[_0xc078('0x1b')](_0x256d7b);}};}function respondWithFilteredResult(_0x36b6b1,_0x404ab0){return function(_0x5a1cbc){if(_0x5a1cbc){var _0x39e242=typeof _0x404ab0[_0xc078('0x1c')]===_0xc078('0x1d')&&typeof _0x404ab0['limit']===_0xc078('0x1d');var _0x5ab33a=_0x5a1cbc['count'];var _0xfd361b=_0x39e242?0x0:_0x404ab0['offset'];var _0x2ec2d5=_0x39e242?_0x5a1cbc['count']:_0x404ab0[_0xc078('0x1c')]+_0x404ab0[_0xc078('0x1e')];var _0x25fb75;if(_0x2ec2d5>=_0x5ab33a){_0x2ec2d5=_0x5ab33a;_0x25fb75=0xc8;}else{_0x25fb75=0xce;}_0x36b6b1['status'](_0x25fb75);return _0x36b6b1[_0xc078('0x1f')]('Content-Range',_0xfd361b+'-'+_0x2ec2d5+'/'+_0x5ab33a)[_0xc078('0x1b')](_0x5a1cbc);}return null;};}function patchUpdates(_0x2a9bbf){return function(_0x19b29b){try{jsonpatch[_0xc078('0x20')](_0x19b29b,_0x2a9bbf,!![]);}catch(_0x3f68ca){return BPromise['reject'](_0x3f68ca);}return _0x19b29b[_0xc078('0x21')]();};}function saveUpdates(_0x36efa2,_0x2e56fa){return function(_0x275cbc){if(_0x275cbc){return _0x275cbc['update'](_0x36efa2)[_0xc078('0x22')](function(_0xa4cd22){return _0xa4cd22;});}return null;};}function removeEntity(_0x3bde7a,_0x1cb7cb){return function(_0x41fac6){if(_0x41fac6){return _0x41fac6[_0xc078('0x23')]()[_0xc078('0x22')](function(){_0x3bde7a[_0xc078('0x19')](0xcc)[_0xc078('0x1a')]();});}};}function handleEntityNotFound(_0x3017a3,_0x14f677){return function(_0x531945){if(!_0x531945){_0x3017a3['sendStatus'](0x194);}return _0x531945;};}function handleError(_0x29525b,_0x5c7fc9){_0x5c7fc9=_0x5c7fc9||0x1f4;return function(_0x4a022a){logger['error'](_0x4a022a[_0xc078('0x24')]);if(_0x4a022a['name']){delete _0x4a022a[_0xc078('0x25')];}_0x29525b[_0xc078('0x19')](_0x5c7fc9)[_0xc078('0x26')](_0x4a022a);};}exports[_0xc078('0x27')]=function(_0xd43338,_0x2b257c){var _0x7c965e={},_0x3c481f={},_0x50e5d={'count':0x0,'rows':[]};var _0x43c377=_[_0xc078('0x28')](db['JscriptyAnswerReport'][_0xc078('0x29')],function(_0x560cbb){return{'name':_0x560cbb[_0xc078('0x2a')],'type':_0x560cbb[_0xc078('0x2b')][_0xc078('0x2c')]};});_0x3c481f[_0xc078('0x2d')]=_['map'](_0x43c377,_0xc078('0x25'));_0x3c481f['query']=_['keys'](_0xd43338[_0xc078('0x2e')]);_0x3c481f[_0xc078('0x2f')]=_['intersection'](_0x3c481f[_0xc078('0x2d')],_0x3c481f[_0xc078('0x2e')]);_0x7c965e[_0xc078('0x30')]=_['intersection'](_0x3c481f['model'],qs[_0xc078('0x31')](_0xd43338['query'][_0xc078('0x31')]));_0x7c965e[_0xc078('0x30')]=_0x7c965e['attributes'][_0xc078('0x32')]?_0x7c965e[_0xc078('0x30')]:_0x3c481f[_0xc078('0x2d')];if(!_0xd43338['query'][_0xc078('0x33')](_0xc078('0x34'))){_0x7c965e[_0xc078('0x1e')]=qs['limit'](_0xd43338['query'][_0xc078('0x1e')]);_0x7c965e[_0xc078('0x1c')]=qs['offset'](_0xd43338['query']['offset']);}_0x7c965e['order']=qs['sort'](_0xd43338[_0xc078('0x2e')][_0xc078('0x35')]);_0x7c965e[_0xc078('0x36')]=qs[_0xc078('0x2f')](_['pick'](_0xd43338[_0xc078('0x2e')],_0x3c481f['filters']),_0x43c377);if(_0xd43338['query'][_0xc078('0x37')]){_0x7c965e[_0xc078('0x36')]=_[_0xc078('0x38')](_0x7c965e[_0xc078('0x36')],{'$or':_[_0xc078('0x28')](_0x43c377,function(_0x2d5558){if(_0x2d5558[_0xc078('0x2b')]!==_0xc078('0x39')){var _0x534def={};_0x534def[_0x2d5558['name']]={'$like':'%'+_0xd43338['query']['filter']+'%'};return _0x534def;}})});}_0x7c965e=_[_0xc078('0x38')]({},_0x7c965e,_0xd43338['options']);var _0x122555={'where':_0x7c965e['where']};return db[_0xc078('0x3a')]['count'](_0x122555)['then'](function(_0x13e765){_0x50e5d[_0xc078('0x3b')]=_0x13e765;if(_0xd43338[_0xc078('0x2e')]['includeAll']){_0x7c965e[_0xc078('0x3c')]=[{'all':!![]}];}return db[_0xc078('0x3a')]['findAll'](_0x7c965e);})[_0xc078('0x22')](function(_0x3c2bc9){_0x50e5d[_0xc078('0x3d')]=_0x3c2bc9;return _0x50e5d;})[_0xc078('0x22')](respondWithFilteredResult(_0x2b257c,_0x7c965e))[_0xc078('0x3e')](handleError(_0x2b257c,null));};exports['show']=function(_0x3ffd96,_0x1d8e5b){var _0x3710b6={'raw':!![],'where':{'id':_0x3ffd96['params']['id']}},_0x548507={};_0x548507[_0xc078('0x2d')]=_['keys'](db['JscriptyAnswerReport'][_0xc078('0x29')]);_0x548507[_0xc078('0x2e')]=_['keys'](_0x3ffd96[_0xc078('0x2e')]);_0x548507['filters']=_[_0xc078('0x3f')](_0x548507['model'],_0x548507[_0xc078('0x2e')]);_0x3710b6[_0xc078('0x30')]=_[_0xc078('0x3f')](_0x548507[_0xc078('0x2d')],qs['fields'](_0x3ffd96[_0xc078('0x2e')][_0xc078('0x31')]));_0x3710b6[_0xc078('0x30')]=_0x3710b6[_0xc078('0x30')]['length']?_0x3710b6[_0xc078('0x30')]:_0x548507[_0xc078('0x2d')];if(_0x3ffd96[_0xc078('0x2e')][_0xc078('0x40')]){_0x3710b6[_0xc078('0x3c')]=[{'all':!![]}];}_0x3710b6=_['merge']({},_0x3710b6,_0x3ffd96[_0xc078('0x41')]);return db['JscriptyAnswerReport']['find'](_0x3710b6)['then'](handleEntityNotFound(_0x1d8e5b,null))[_0xc078('0x22')](respondWithResult(_0x1d8e5b,null))[_0xc078('0x3e')](handleError(_0x1d8e5b,null));};exports[_0xc078('0x42')]=function(_0x4c3041,_0x57abc6){return db[_0xc078('0x3a')][_0xc078('0x42')](_0x4c3041['body'],{})[_0xc078('0x22')](respondWithResult(_0x57abc6,0xc9))[_0xc078('0x3e')](handleError(_0x57abc6,null));};exports['update']=function(_0x2a846f,_0x57889b){if(_0x2a846f[_0xc078('0x43')]['id']){delete _0x2a846f[_0xc078('0x43')]['id'];}return db[_0xc078('0x3a')][_0xc078('0x44')]({'where':{'id':_0x2a846f[_0xc078('0x45')]['id']}})[_0xc078('0x22')](handleEntityNotFound(_0x57889b,null))['then'](saveUpdates(_0x2a846f[_0xc078('0x43')],null))[_0xc078('0x22')](respondWithResult(_0x57889b,null))[_0xc078('0x3e')](handleError(_0x57889b,null));};exports[_0xc078('0x23')]=function(_0x71ae97,_0x4c82c6){return db[_0xc078('0x3a')][_0xc078('0x44')]({'where':{'id':_0x71ae97['params']['id']}})[_0xc078('0x22')](handleEntityNotFound(_0x4c82c6,null))[_0xc078('0x22')](removeEntity(_0x4c82c6,null))[_0xc078('0x3e')](handleError(_0x4c82c6,null));};exports['describe']=function(_0x36456e,_0x5e3021){return db[_0xc078('0x3a')][_0xc078('0x46')]()[_0xc078('0x22')](respondWithResult(_0x5e3021,null))[_0xc078('0x3e')](handleError(_0x5e3021,null));};
\ No newline at end of file
+var _0x4fd7=['VIRTUAL','includeAll','rows','show','params','include','options','find','body','catch','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','to-csv','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','name','map','JscriptyAnswerReport','rawAttributes','fieldName','key','query','keys','intersection','model','attributes','fields','length','nolimit','sort','where','filters','pick','filter','merge'];(function(_0x2c9626,_0x533f10){var _0xaaaf74=function(_0x1cf261){while(--_0x1cf261){_0x2c9626['push'](_0x2c9626['shift']());}};_0xaaaf74(++_0x533f10);}(_0x4fd7,0xe6));var _0x74fd=function(_0x157343,_0x1422d0){_0x157343=_0x157343-0x0;var _0x500ce5=_0x4fd7[_0x157343];return _0x500ce5;};'use strict';var emlformat=require(_0x74fd('0x0'));var rimraf=require(_0x74fd('0x1'));var zipdir=require(_0x74fd('0x2'));var jsonpatch=require(_0x74fd('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x74fd('0x4'));var Mustache=require(_0x74fd('0x5'));var util=require('util');var path=require(_0x74fd('0x6'));var sox=require('sox');var csv=require(_0x74fd('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x74fd('0x8'));var _=require(_0x74fd('0x9'));var squel=require('squel');var crypto=require(_0x74fd('0xa'));var jsforce=require(_0x74fd('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x74fd('0x7'));var querystring=require(_0x74fd('0xc'));var Papa=require(_0x74fd('0xd'));var Redis=require(_0x74fd('0xe'));var authService=require(_0x74fd('0xf'));var qs=require(_0x74fd('0x10'));var as=require(_0x74fd('0x11'));var hardwareService=require(_0x74fd('0x12'));var logger=require(_0x74fd('0x13'))(_0x74fd('0x14'));var utils=require(_0x74fd('0x15'));var config=require(_0x74fd('0x16'));var licenseUtil=require(_0x74fd('0x17'));var db=require(_0x74fd('0x18'))['db'];function respondWithStatusCode(_0x3fd552,_0x8fafcb){_0x8fafcb=_0x8fafcb||0xcc;return function(_0x4d250d){if(_0x4d250d){return _0x3fd552[_0x74fd('0x19')](_0x8fafcb);}return _0x3fd552[_0x74fd('0x1a')](_0x8fafcb)['end']();};}function respondWithResult(_0x47e63c,_0x3e1d11){_0x3e1d11=_0x3e1d11||0xc8;return function(_0x2a4d2e){if(_0x2a4d2e){return _0x47e63c[_0x74fd('0x1a')](_0x3e1d11)[_0x74fd('0x1b')](_0x2a4d2e);}};}function respondWithFilteredResult(_0x24639c,_0x29bbc2){return function(_0x22e64a){if(_0x22e64a){var _0x127353=typeof _0x29bbc2[_0x74fd('0x1c')]===_0x74fd('0x1d')&&typeof _0x29bbc2[_0x74fd('0x1e')]==='undefined';var _0x2975f3=_0x22e64a[_0x74fd('0x1f')];var _0x4cd126=_0x127353?0x0:_0x29bbc2[_0x74fd('0x1c')];var _0x3904e3=_0x127353?_0x22e64a[_0x74fd('0x1f')]:_0x29bbc2[_0x74fd('0x1c')]+_0x29bbc2[_0x74fd('0x1e')];var _0x299f76;if(_0x3904e3>=_0x2975f3){_0x3904e3=_0x2975f3;_0x299f76=0xc8;}else{_0x299f76=0xce;}_0x24639c[_0x74fd('0x1a')](_0x299f76);return _0x24639c[_0x74fd('0x20')](_0x74fd('0x21'),_0x4cd126+'-'+_0x3904e3+'/'+_0x2975f3)[_0x74fd('0x1b')](_0x22e64a);}return null;};}function patchUpdates(_0x5fe487){return function(_0xb23e0){try{jsonpatch[_0x74fd('0x22')](_0xb23e0,_0x5fe487,!![]);}catch(_0x35a735){return BPromise[_0x74fd('0x23')](_0x35a735);}return _0xb23e0[_0x74fd('0x24')]();};}function saveUpdates(_0x1973a1,_0x204f5f){return function(_0x54fb4d){if(_0x54fb4d){return _0x54fb4d[_0x74fd('0x25')](_0x1973a1)[_0x74fd('0x26')](function(_0xf2c6ce){return _0xf2c6ce;});}return null;};}function removeEntity(_0x42cae0,_0x371d9c){return function(_0x4aae69){if(_0x4aae69){return _0x4aae69[_0x74fd('0x27')]()[_0x74fd('0x26')](function(){_0x42cae0['status'](0xcc)[_0x74fd('0x28')]();});}};}function handleEntityNotFound(_0x49debf,_0x2bc644){return function(_0x23d0ce){if(!_0x23d0ce){_0x49debf[_0x74fd('0x19')](0x194);}return _0x23d0ce;};}function handleError(_0x33d3d9,_0x214102){_0x214102=_0x214102||0x1f4;return function(_0x272d16){logger['error'](_0x272d16[_0x74fd('0x29')]);if(_0x272d16[_0x74fd('0x2a')]){delete _0x272d16[_0x74fd('0x2a')];}_0x33d3d9[_0x74fd('0x1a')](_0x214102)['send'](_0x272d16);};}exports['index']=function(_0x2de0eb,_0x476382){var _0x51e574={},_0x22a98c={},_0x57f0e6={'count':0x0,'rows':[]};var _0x4c0609=_[_0x74fd('0x2b')](db[_0x74fd('0x2c')][_0x74fd('0x2d')],function(_0x239839){return{'name':_0x239839[_0x74fd('0x2e')],'type':_0x239839['type'][_0x74fd('0x2f')]};});_0x22a98c['model']=_['map'](_0x4c0609,_0x74fd('0x2a'));_0x22a98c[_0x74fd('0x30')]=_[_0x74fd('0x31')](_0x2de0eb[_0x74fd('0x30')]);_0x22a98c['filters']=_[_0x74fd('0x32')](_0x22a98c[_0x74fd('0x33')],_0x22a98c[_0x74fd('0x30')]);_0x51e574[_0x74fd('0x34')]=_[_0x74fd('0x32')](_0x22a98c[_0x74fd('0x33')],qs[_0x74fd('0x35')](_0x2de0eb[_0x74fd('0x30')][_0x74fd('0x35')]));_0x51e574[_0x74fd('0x34')]=_0x51e574[_0x74fd('0x34')][_0x74fd('0x36')]?_0x51e574[_0x74fd('0x34')]:_0x22a98c[_0x74fd('0x33')];if(!_0x2de0eb[_0x74fd('0x30')]['hasOwnProperty'](_0x74fd('0x37'))){_0x51e574[_0x74fd('0x1e')]=qs[_0x74fd('0x1e')](_0x2de0eb['query'][_0x74fd('0x1e')]);_0x51e574[_0x74fd('0x1c')]=qs[_0x74fd('0x1c')](_0x2de0eb[_0x74fd('0x30')][_0x74fd('0x1c')]);}_0x51e574['order']=qs[_0x74fd('0x38')](_0x2de0eb[_0x74fd('0x30')][_0x74fd('0x38')]);_0x51e574[_0x74fd('0x39')]=qs[_0x74fd('0x3a')](_[_0x74fd('0x3b')](_0x2de0eb[_0x74fd('0x30')],_0x22a98c[_0x74fd('0x3a')]),_0x4c0609);if(_0x2de0eb[_0x74fd('0x30')][_0x74fd('0x3c')]){_0x51e574[_0x74fd('0x39')]=_[_0x74fd('0x3d')](_0x51e574['where'],{'$or':_[_0x74fd('0x2b')](_0x4c0609,function(_0x48b640){if(_0x48b640['type']!==_0x74fd('0x3e')){var _0x242c33={};_0x242c33[_0x48b640[_0x74fd('0x2a')]]={'$like':'%'+_0x2de0eb[_0x74fd('0x30')][_0x74fd('0x3c')]+'%'};return _0x242c33;}})});}_0x51e574=_[_0x74fd('0x3d')]({},_0x51e574,_0x2de0eb['options']);var _0xfa3e6a={'where':_0x51e574[_0x74fd('0x39')]};return db['JscriptyAnswerReport'][_0x74fd('0x1f')](_0xfa3e6a)[_0x74fd('0x26')](function(_0x5a0de1){_0x57f0e6[_0x74fd('0x1f')]=_0x5a0de1;if(_0x2de0eb[_0x74fd('0x30')][_0x74fd('0x3f')]){_0x51e574['include']=[{'all':!![]}];}return db[_0x74fd('0x2c')]['findAll'](_0x51e574);})[_0x74fd('0x26')](function(_0x143aa6){_0x57f0e6[_0x74fd('0x40')]=_0x143aa6;return _0x57f0e6;})[_0x74fd('0x26')](respondWithFilteredResult(_0x476382,_0x51e574))['catch'](handleError(_0x476382,null));};exports[_0x74fd('0x41')]=function(_0x5779e1,_0x47be20){var _0x59d957={'raw':!![],'where':{'id':_0x5779e1[_0x74fd('0x42')]['id']}},_0x4fccd0={};_0x4fccd0[_0x74fd('0x33')]=_[_0x74fd('0x31')](db[_0x74fd('0x2c')]['rawAttributes']);_0x4fccd0[_0x74fd('0x30')]=_['keys'](_0x5779e1[_0x74fd('0x30')]);_0x4fccd0['filters']=_[_0x74fd('0x32')](_0x4fccd0[_0x74fd('0x33')],_0x4fccd0[_0x74fd('0x30')]);_0x59d957[_0x74fd('0x34')]=_[_0x74fd('0x32')](_0x4fccd0[_0x74fd('0x33')],qs[_0x74fd('0x35')](_0x5779e1[_0x74fd('0x30')][_0x74fd('0x35')]));_0x59d957[_0x74fd('0x34')]=_0x59d957[_0x74fd('0x34')][_0x74fd('0x36')]?_0x59d957[_0x74fd('0x34')]:_0x4fccd0[_0x74fd('0x33')];if(_0x5779e1[_0x74fd('0x30')][_0x74fd('0x3f')]){_0x59d957[_0x74fd('0x43')]=[{'all':!![]}];}_0x59d957=_[_0x74fd('0x3d')]({},_0x59d957,_0x5779e1[_0x74fd('0x44')]);return db[_0x74fd('0x2c')][_0x74fd('0x45')](_0x59d957)[_0x74fd('0x26')](handleEntityNotFound(_0x47be20,null))['then'](respondWithResult(_0x47be20,null))['catch'](handleError(_0x47be20,null));};exports['create']=function(_0x14846b,_0x2dea8f){return db[_0x74fd('0x2c')]['create'](_0x14846b['body'],{})[_0x74fd('0x26')](respondWithResult(_0x2dea8f,0xc9))['catch'](handleError(_0x2dea8f,null));};exports[_0x74fd('0x25')]=function(_0x439978,_0x649148){if(_0x439978[_0x74fd('0x46')]['id']){delete _0x439978[_0x74fd('0x46')]['id'];}return db[_0x74fd('0x2c')][_0x74fd('0x45')]({'where':{'id':_0x439978[_0x74fd('0x42')]['id']}})['then'](handleEntityNotFound(_0x649148,null))['then'](saveUpdates(_0x439978[_0x74fd('0x46')],null))[_0x74fd('0x26')](respondWithResult(_0x649148,null))['catch'](handleError(_0x649148,null));};exports['destroy']=function(_0x227d99,_0x39909e){return db[_0x74fd('0x2c')]['find']({'where':{'id':_0x227d99[_0x74fd('0x42')]['id']}})[_0x74fd('0x26')](handleEntityNotFound(_0x39909e,null))['then'](removeEntity(_0x39909e,null))[_0x74fd('0x47')](handleError(_0x39909e,null));};exports[_0x74fd('0x48')]=function(_0x593c6f,_0x470309){return db['JscriptyAnswerReport'][_0x74fd('0x48')]()[_0x74fd('0x26')](respondWithResult(_0x470309,null))[_0x74fd('0x47')](handleError(_0x470309,null));};
\ No newline at end of file
index 2d5c267..0b3bc20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf59b=['../../config/environment','exports','define','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x1df54c,_0x29c015){var _0x49fe97=function(_0x5d46b3){while(--_0x5d46b3){_0x1df54c['push'](_0x1df54c['shift']());}};_0x49fe97(++_0x29c015);}(_0xf59b,0x158));var _0xbf59=function(_0xd8a16a,_0x146ac1){_0xd8a16a=_0xd8a16a-0x0;var _0x4e5768=_0xf59b[_0xd8a16a];return _0x4e5768;};'use strict';var _=require(_0xbf59('0x0'));var util=require('util');var logger=require(_0xbf59('0x1'))(_0xbf59('0x2'));var moment=require(_0xbf59('0x3'));var BPromise=require(_0xbf59('0x4'));var rp=require(_0xbf59('0x5'));var fs=require('fs');var path=require(_0xbf59('0x6'));var rimraf=require(_0xbf59('0x7'));var config=require(_0xbf59('0x8'));var attributes=require('./jscriptyAnswerReport.attributes');module[_0xbf59('0x9')]=function(_0x154e27,_0x361813){return _0x154e27[_0xbf59('0xa')]('JscriptyAnswerReport',attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7c6e=['report_jscripty_answers','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport'];(function(_0x42a21b,_0x4ade52){var _0x1523a8=function(_0x244404){while(--_0x244404){_0x42a21b['push'](_0x42a21b['shift']());}};_0x1523a8(++_0x4ade52);}(_0x7c6e,0x121));var _0xe7c6=function(_0x4a6cac,_0x1b5a31){_0x4a6cac=_0x4a6cac-0x0;var _0x5cfabd=_0x7c6e[_0x4a6cac];return _0x5cfabd;};'use strict';var _=require('lodash');var util=require(_0xe7c6('0x0'));var logger=require(_0xe7c6('0x1'))(_0xe7c6('0x2'));var moment=require(_0xe7c6('0x3'));var BPromise=require(_0xe7c6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xe7c6('0x5'));var config=require(_0xe7c6('0x6'));var attributes=require(_0xe7c6('0x7'));module[_0xe7c6('0x8')]=function(_0x3a39cb,_0x2ea48f){return _0x3a39cb[_0xe7c6('0x9')](_0xe7c6('0xa'),attributes,{'tableName':_0xe7c6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1fd25dc..7e2cc52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0009=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','moment','bluebird','ioredis'];(function(_0x21c76e,_0x657e32){var _0x1c28c7=function(_0x1053ed){while(--_0x1053ed){_0x21c76e['push'](_0x21c76e['shift']());}};_0x1c28c7(++_0x657e32);}(_0x0009,0x171));var _0x9000=function(_0x1509f7,_0x2fc1d2){_0x1509f7=_0x1509f7-0x0;var _0x3211a0=_0x0009[_0x1509f7];return _0x3211a0;};'use strict';var _=require(_0x9000('0x0'));var util=require(_0x9000('0x1'));var moment=require(_0x9000('0x2'));var BPromise=require(_0x9000('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9000('0x4'));var db=require(_0x9000('0x5'))['db'];var utils=require(_0x9000('0x6'));var logger=require(_0x9000('0x7'))(_0x9000('0x8'));var config=require(_0x9000('0x9'));var jayson=require(_0x9000('0xa'));var client=jayson[_0x9000('0xb')][_0x9000('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5708d3,_0x5eb170,_0x419512){return new BPromise(function(_0x2f6259,_0x20c1a5){return client[_0x9000('0xd')](_0x5708d3,_0x419512)['then'](function(_0x486675){logger[_0x9000('0xe')](_0x9000('0xf'),_0x5eb170,_0x9000('0x10'));logger['debug']('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x5eb170,_0x9000('0x10'),JSON[_0x9000('0x11')](_0x486675));if(_0x486675[_0x9000('0x12')]){if(_0x486675[_0x9000('0x12')][_0x9000('0x13')]===0x1f4){logger[_0x9000('0x12')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x5eb170,_0x486675[_0x9000('0x12')][_0x9000('0x14')]);return _0x20c1a5(_0x486675[_0x9000('0x12')][_0x9000('0x14')]);}logger[_0x9000('0x12')](_0x9000('0xf'),_0x5eb170,_0x486675[_0x9000('0x12')]['message']);return _0x2f6259(_0x486675[_0x9000('0x12')][_0x9000('0x14')]);}else{logger[_0x9000('0xe')](_0x9000('0xf'),_0x5eb170,_0x9000('0x10'));_0x2f6259(_0x486675[_0x9000('0x15')][_0x9000('0x14')]);}})['catch'](function(_0x38280a){logger[_0x9000('0x12')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x5eb170,_0x38280a);_0x20c1a5(_0x38280a);});});}
\ No newline at end of file
+var _0xe96b=['util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch'];(function(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0xe96b,0x150));var _0xbe96=function(_0x2a7f9f,_0x377719){_0x2a7f9f=_0x2a7f9f-0x0;var _0x2e4098=_0xe96b[_0x2a7f9f];return _0x2e4098;};'use strict';var _=require('lodash');var util=require(_0xbe96('0x0'));var moment=require('moment');var BPromise=require(_0xbe96('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbe96('0x2'));var db=require(_0xbe96('0x3'))['db'];var utils=require(_0xbe96('0x4'));var logger=require(_0xbe96('0x5'))('rpc');var config=require(_0xbe96('0x6'));var jayson=require(_0xbe96('0x7'));var client=jayson['client'][_0xbe96('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4b791b,_0x51d3ff,_0x1af2b3){return new BPromise(function(_0x4de7c5,_0x2610b0){return client[_0xbe96('0x9')](_0x4b791b,_0x1af2b3)[_0xbe96('0xa')](function(_0x1ebe2a){logger['info'](_0xbe96('0xb'),_0x51d3ff,_0xbe96('0xc'));logger['debug'](_0xbe96('0xd'),_0x51d3ff,_0xbe96('0xc'),JSON[_0xbe96('0xe')](_0x1ebe2a));if(_0x1ebe2a['error']){if(_0x1ebe2a['error'][_0xbe96('0xf')]===0x1f4){logger[_0xbe96('0x10')](_0xbe96('0xb'),_0x51d3ff,_0x1ebe2a[_0xbe96('0x10')][_0xbe96('0x11')]);return _0x2610b0(_0x1ebe2a[_0xbe96('0x10')][_0xbe96('0x11')]);}logger[_0xbe96('0x10')](_0xbe96('0xb'),_0x51d3ff,_0x1ebe2a[_0xbe96('0x10')]['message']);return _0x4de7c5(_0x1ebe2a[_0xbe96('0x10')][_0xbe96('0x11')]);}else{logger[_0xbe96('0x12')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x51d3ff,_0xbe96('0xc'));_0x4de7c5(_0x1ebe2a[_0xbe96('0x13')][_0xbe96('0x11')]);}})[_0xbe96('0x14')](function(_0x227d28){logger[_0xbe96('0x10')](_0xbe96('0xb'),_0x51d3ff,_0x227d28);_0x2610b0(_0x227d28);});});}
\ No newline at end of file
index 8686528..283b74e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd137=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyProject.controller','get','isAuthenticated','index','/:id','show','/:id/sessions','getSessions','/:id/answers','getAnswers','/:id/summary','getSummary','post','create','/:id/clone','clone','put','destroy','exports','multer','util'];(function(_0x344ada,_0x938407){var _0x162a60=function(_0x544d68){while(--_0x544d68){_0x344ada['push'](_0x344ada['shift']());}};_0x162a60(++_0x938407);}(_0xd137,0xa6));var _0x7d13=function(_0x33164b,_0x5af270){_0x33164b=_0x33164b-0x0;var _0x4137da=_0xd137[_0x33164b];return _0x4137da;};'use strict';var multer=require(_0x7d13('0x0'));var util=require(_0x7d13('0x1'));var path=require(_0x7d13('0x2'));var timeout=require(_0x7d13('0x3'));var express=require(_0x7d13('0x4'));var router=express[_0x7d13('0x5')]();var fs_extra=require(_0x7d13('0x6'));var auth=require(_0x7d13('0x7'));var interaction=require(_0x7d13('0x8'));var config=require('../../config/environment');var controller=require(_0x7d13('0x9'));router[_0x7d13('0xa')]('/',auth[_0x7d13('0xb')](),controller[_0x7d13('0xc')]);router['get'](_0x7d13('0xd'),auth['isAuthenticated'](),controller[_0x7d13('0xe')]);router[_0x7d13('0xa')](_0x7d13('0xf'),auth['isAuthenticated'](),controller[_0x7d13('0x10')]);router['get'](_0x7d13('0x11'),auth[_0x7d13('0xb')](),controller[_0x7d13('0x12')]);router[_0x7d13('0xa')](_0x7d13('0x13'),auth[_0x7d13('0xb')](),timeout('30s'),controller[_0x7d13('0x14')]);router[_0x7d13('0x15')]('/',auth['isAuthenticated'](),controller[_0x7d13('0x16')]);router[_0x7d13('0x15')](_0x7d13('0x17'),auth['isAuthenticated'](),controller[_0x7d13('0x18')]);router[_0x7d13('0x19')](_0x7d13('0xd'),auth[_0x7d13('0xb')](),controller['update']);router['delete'](_0x7d13('0xd'),auth[_0x7d13('0xb')](),controller[_0x7d13('0x1a')]);module[_0x7d13('0x1b')]=router;
\ No newline at end of file
+var _0x6fd6=['clone','update','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyProject.controller','get','isAuthenticated','index','/:id','show','/:id/sessions','getSessions','getAnswers','/:id/summary','30s','getSummary','post','create','/:id/clone'];(function(_0x46428c,_0x20ab75){var _0x16a677=function(_0x2b0817){while(--_0x2b0817){_0x46428c['push'](_0x46428c['shift']());}};_0x16a677(++_0x20ab75);}(_0x6fd6,0x161));var _0x66fd=function(_0x173a1c,_0x3e2bcb){_0x173a1c=_0x173a1c-0x0;var _0x52f4ad=_0x6fd6[_0x173a1c];return _0x52f4ad;};'use strict';var multer=require(_0x66fd('0x0'));var util=require(_0x66fd('0x1'));var path=require(_0x66fd('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x66fd('0x3')]();var fs_extra=require(_0x66fd('0x4'));var auth=require(_0x66fd('0x5'));var interaction=require(_0x66fd('0x6'));var config=require('../../config/environment');var controller=require(_0x66fd('0x7'));router[_0x66fd('0x8')]('/',auth[_0x66fd('0x9')](),controller[_0x66fd('0xa')]);router[_0x66fd('0x8')](_0x66fd('0xb'),auth['isAuthenticated'](),controller[_0x66fd('0xc')]);router[_0x66fd('0x8')](_0x66fd('0xd'),auth['isAuthenticated'](),controller[_0x66fd('0xe')]);router[_0x66fd('0x8')]('/:id/answers',auth[_0x66fd('0x9')](),controller[_0x66fd('0xf')]);router[_0x66fd('0x8')](_0x66fd('0x10'),auth[_0x66fd('0x9')](),timeout(_0x66fd('0x11')),controller[_0x66fd('0x12')]);router[_0x66fd('0x13')]('/',auth[_0x66fd('0x9')](),controller[_0x66fd('0x14')]);router[_0x66fd('0x13')](_0x66fd('0x15'),auth[_0x66fd('0x9')](),controller[_0x66fd('0x16')]);router['put'](_0x66fd('0xb'),auth[_0x66fd('0x9')](),controller[_0x66fd('0x17')]);router['delete'](_0x66fd('0xb'),auth[_0x66fd('0x9')](),controller['destroy']);module[_0x66fd('0x18')]=router;
\ No newline at end of file
index 5a3075e..9b8aef1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfff8=['long','isObjectLike','setDataValue','formData','stringify','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','sequelize','lodash','exports','name','STRING','TEXT'];(function(_0x55d04f,_0x4963e8){var _0x1c8d06=function(_0x20732d){while(--_0x20732d){_0x55d04f['push'](_0x55d04f['shift']());}};_0x1c8d06(++_0x4963e8);}(_0xfff8,0x108));var _0x8fff=function(_0x5d8974,_0x3bb3f2){_0x5d8974=_0x5d8974-0x0;var _0x4a7282=_0xfff8[_0x5d8974];return _0x4a7282;};'use strict';var Sequelize=require(_0x8fff('0x0'));var _=require(_0x8fff('0x1'));var util=require('util');module[_0x8fff('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0x8fff('0x3')},'description':{'type':Sequelize[_0x8fff('0x4')]},'formData':{'type':Sequelize[_0x8fff('0x5')](_0x8fff('0x6')),'set':function(_0x14bae8){if(_[_0x8fff('0x7')](_0x14bae8)){this[_0x8fff('0x8')](_0x8fff('0x9'),JSON[_0x8fff('0xa')](_0x14bae8));}else if(_['isString'](_0x14bae8)){this['setDataValue']('formData',_0x14bae8);}else{this[_0x8fff('0x8')](_0x8fff('0x9'),util['format'](_0x8fff('0xb'),this[_0x8fff('0xc')]('name')||'',this[_0x8fff('0xc')](_0x8fff('0xd'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x8fff('0xe')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x652f=['isObjectLike','setDataValue','formData','stringify','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','BOOLEAN','sequelize','lodash','STRING','name','TEXT','long'];(function(_0x3dfa2c,_0x39ee52){var _0x5f2eeb=function(_0x42ecb7){while(--_0x42ecb7){_0x3dfa2c['push'](_0x3dfa2c['shift']());}};_0x5f2eeb(++_0x39ee52);}(_0x652f,0x166));var _0xf652=function(_0x3b82b2,_0x59a129){_0x3b82b2=_0x3b82b2-0x0;var _0xabc545=_0x652f[_0x3b82b2];return _0xabc545;};'use strict';var Sequelize=require(_0xf652('0x0'));var _=require(_0xf652('0x1'));var util=require('util');module['exports']={'name':{'type':Sequelize[_0xf652('0x2')],'unique':_0xf652('0x3')},'description':{'type':Sequelize[_0xf652('0x2')]},'formData':{'type':Sequelize[_0xf652('0x4')](_0xf652('0x5')),'set':function(_0x5e7ccc){if(_[_0xf652('0x6')](_0x5e7ccc)){this[_0xf652('0x7')](_0xf652('0x8'),JSON[_0xf652('0x9')](_0x5e7ccc));}else if(_['isString'](_0x5e7ccc)){this['setDataValue'](_0xf652('0x8'),_0x5e7ccc);}else{this['setDataValue'](_0xf652('0x8'),util['format'](_0xf652('0xa'),this[_0xf652('0xb')](_0xf652('0x3'))||'',this[_0xf652('0xb')]('description')||''));}}},'enableUncompleteSave':{'type':Sequelize[_0xf652('0xc')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0xf652('0xc')],'defaultValue':![]}};
\ No newline at end of file
index d016038..6343a25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3339=['nolimit','sort','where','pick','filter','merge','map','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','error','clone','omit','createdAt','updatedAt','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','findOne','JscriptySessionReport','hasOwnProperty','order','ProjectId','getAnswers','JscriptyAnswerReport','number','fromCharCode','toString','indexOf','replace','startTime','starttime','parse','JscriptyQuestionReport','-createdAt','questionId','question','format','isEmpty','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','limit','undefined','offset','set','json','apply','reject','save','update','then','get','Projects','UserProfileResource','stack','name','index','JscriptyProject','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length'];(function(_0x6c200b,_0x1dd691){var _0x2158ef=function(_0x5e0544){while(--_0x5e0544){_0x6c200b['push'](_0x6c200b['shift']());}};_0x2158ef(++_0x1dd691);}(_0x3339,0x1a7));var _0x9333=function(_0x434c82,_0xf7bd70){_0x434c82=_0x434c82-0x0;var _0x483389=_0x3339[_0x434c82];return _0x483389;};'use strict';var emlformat=require(_0x9333('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9333('0x1'));var jsonpatch=require(_0x9333('0x2'));var rp=require(_0x9333('0x3'));var moment=require(_0x9333('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9333('0x5'));var util=require('util');var path=require(_0x9333('0x6'));var sox=require(_0x9333('0x7'));var csv=require(_0x9333('0x8'));var ejs=require(_0x9333('0x9'));var fs=require('fs');var fs_extra=require(_0x9333('0xa'));var _=require(_0x9333('0xb'));var squel=require(_0x9333('0xc'));var crypto=require(_0x9333('0xd'));var jsforce=require(_0x9333('0xe'));var deskjs=require(_0x9333('0xf'));var toCsv=require(_0x9333('0x8'));var querystring=require(_0x9333('0x10'));var Papa=require('papaparse');var Redis=require(_0x9333('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x9333('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9333('0x13'));var logger=require(_0x9333('0x14'))(_0x9333('0x15'));var utils=require(_0x9333('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x9333('0x17'));var db=require(_0x9333('0x18'))['db'];function respondWithStatusCode(_0x54563a,_0x2f3918){_0x2f3918=_0x2f3918||0xcc;return function(_0x5247d3){if(_0x5247d3){return _0x54563a[_0x9333('0x19')](_0x2f3918);}return _0x54563a[_0x9333('0x1a')](_0x2f3918)[_0x9333('0x1b')]();};}function respondWithResult(_0x5a023c,_0x1eecff){_0x1eecff=_0x1eecff||0xc8;return function(_0x3b9075){if(_0x3b9075){return _0x5a023c[_0x9333('0x1a')](_0x1eecff)['json'](_0x3b9075);}};}function respondWithFilteredResult(_0x1b996b,_0x127a5a){return function(_0x2940bd){if(_0x2940bd){var _0x4c3cd9=typeof _0x127a5a['offset']==='undefined'&&typeof _0x127a5a[_0x9333('0x1c')]===_0x9333('0x1d');var _0x4d0e7c=_0x2940bd['count'];var _0x3060d6=_0x4c3cd9?0x0:_0x127a5a['offset'];var _0x2102aa=_0x4c3cd9?_0x2940bd['count']:_0x127a5a[_0x9333('0x1e')]+_0x127a5a[_0x9333('0x1c')];var _0x309872;if(_0x2102aa>=_0x4d0e7c){_0x2102aa=_0x4d0e7c;_0x309872=0xc8;}else{_0x309872=0xce;}_0x1b996b[_0x9333('0x1a')](_0x309872);return _0x1b996b[_0x9333('0x1f')]('Content-Range',_0x3060d6+'-'+_0x2102aa+'/'+_0x4d0e7c)[_0x9333('0x20')](_0x2940bd);}return null;};}function patchUpdates(_0xbea6c3){return function(_0x2afa69){try{jsonpatch[_0x9333('0x21')](_0x2afa69,_0xbea6c3,!![]);}catch(_0x3c6169){return BPromise[_0x9333('0x22')](_0x3c6169);}return _0x2afa69[_0x9333('0x23')]();};}function saveUpdates(_0x56cc3e,_0x2791ac){return function(_0x2e5f58){if(_0x2e5f58){return _0x2e5f58[_0x9333('0x24')](_0x56cc3e)[_0x9333('0x25')](function(_0x1987c4){return _0x1987c4;});}return null;};}function removeEntity(_0x18c528,_0x6e32eb){return function(_0x4155a0){if(_0x4155a0){return _0x4155a0['destroy']()['then'](function(){var _0xe58fd6=_0x4155a0[_0x9333('0x26')]({'plain':!![]});var _0x2bd79a=_0x9333('0x27');return db[_0x9333('0x28')]['destroy']({'where':{'type':_0x2bd79a,'resourceId':_0xe58fd6['id']}})[_0x9333('0x25')](function(){return _0x4155a0;});})[_0x9333('0x25')](function(){_0x18c528[_0x9333('0x1a')](0xcc)[_0x9333('0x1b')]();});}};}function handleEntityNotFound(_0x1a4fda,_0x51ffff){return function(_0x271072){if(!_0x271072){_0x1a4fda[_0x9333('0x19')](0x194);}return _0x271072;};}function handleError(_0x3deea9,_0x91ec5c){_0x91ec5c=_0x91ec5c||0x1f4;return function(_0x58c535){logger['error'](_0x58c535[_0x9333('0x29')]);if(_0x58c535[_0x9333('0x2a')]){delete _0x58c535[_0x9333('0x2a')];}_0x3deea9[_0x9333('0x1a')](_0x91ec5c)['send'](_0x58c535);};}exports[_0x9333('0x2b')]=function(_0x5e4bd0,_0x5d406b){var _0x349f4f={},_0x4f0bb7={},_0x22ab4f={'count':0x0,'rows':[]};var _0x263099=_['map'](db[_0x9333('0x2c')][_0x9333('0x2d')],function(_0x197bf9){return{'name':_0x197bf9[_0x9333('0x2e')],'type':_0x197bf9[_0x9333('0x2f')][_0x9333('0x30')]};});_0x4f0bb7[_0x9333('0x31')]=_['map'](_0x263099,_0x9333('0x2a'));_0x4f0bb7[_0x9333('0x32')]=_[_0x9333('0x33')](_0x5e4bd0[_0x9333('0x32')]);_0x4f0bb7[_0x9333('0x34')]=_[_0x9333('0x35')](_0x4f0bb7['model'],_0x4f0bb7[_0x9333('0x32')]);_0x349f4f[_0x9333('0x36')]=_['intersection'](_0x4f0bb7[_0x9333('0x31')],qs[_0x9333('0x37')](_0x5e4bd0[_0x9333('0x32')][_0x9333('0x37')]));_0x349f4f[_0x9333('0x36')]=_0x349f4f[_0x9333('0x36')][_0x9333('0x38')]?_0x349f4f[_0x9333('0x36')]:_0x4f0bb7[_0x9333('0x31')];if(!_0x5e4bd0[_0x9333('0x32')]['hasOwnProperty'](_0x9333('0x39'))){_0x349f4f[_0x9333('0x1c')]=qs[_0x9333('0x1c')](_0x5e4bd0[_0x9333('0x32')]['limit']);_0x349f4f[_0x9333('0x1e')]=qs['offset'](_0x5e4bd0[_0x9333('0x32')]['offset']);}_0x349f4f['order']=qs[_0x9333('0x3a')](_0x5e4bd0[_0x9333('0x32')]['sort']);_0x349f4f[_0x9333('0x3b')]=qs[_0x9333('0x34')](_[_0x9333('0x3c')](_0x5e4bd0[_0x9333('0x32')],_0x4f0bb7[_0x9333('0x34')]),_0x263099);if(_0x5e4bd0[_0x9333('0x32')][_0x9333('0x3d')]){_0x349f4f['where']=_[_0x9333('0x3e')](_0x349f4f[_0x9333('0x3b')],{'$or':_[_0x9333('0x3f')](_0x263099,function(_0x5ad0d8){if(_0x5ad0d8['type']!==_0x9333('0x40')){var _0xc96f6c={};_0xc96f6c[_0x5ad0d8[_0x9333('0x2a')]]={'$like':'%'+_0x5e4bd0[_0x9333('0x32')]['filter']+'%'};return _0xc96f6c;}})});}_0x349f4f=_[_0x9333('0x3e')]({},_0x349f4f,_0x5e4bd0[_0x9333('0x41')]);var _0x7be911={'where':_0x349f4f[_0x9333('0x3b')]};return db['JscriptyProject'][_0x9333('0x42')](_0x7be911)[_0x9333('0x25')](function(_0x2be4ba){_0x22ab4f[_0x9333('0x42')]=_0x2be4ba;if(_0x5e4bd0[_0x9333('0x32')][_0x9333('0x43')]){_0x349f4f[_0x9333('0x44')]=[{'all':!![]}];}return db['JscriptyProject'][_0x9333('0x45')](_0x349f4f);})['then'](function(_0x56d168){_0x22ab4f[_0x9333('0x46')]=_0x56d168;return _0x22ab4f;})['then'](respondWithFilteredResult(_0x5d406b,_0x349f4f))[_0x9333('0x47')](handleError(_0x5d406b,null));};exports[_0x9333('0x48')]=function(_0x3c7e14,_0x192cad){var _0x1b643={'raw':![],'where':{'id':_0x3c7e14[_0x9333('0x49')]['id']}},_0x368b21={};_0x368b21['model']=_[_0x9333('0x33')](db[_0x9333('0x2c')][_0x9333('0x2d')]);_0x368b21[_0x9333('0x32')]=_[_0x9333('0x33')](_0x3c7e14[_0x9333('0x32')]);_0x368b21[_0x9333('0x34')]=_['intersection'](_0x368b21[_0x9333('0x31')],_0x368b21[_0x9333('0x32')]);_0x1b643[_0x9333('0x36')]=_[_0x9333('0x35')](_0x368b21[_0x9333('0x31')],qs['fields'](_0x3c7e14[_0x9333('0x32')]['fields']));_0x1b643[_0x9333('0x36')]=_0x1b643[_0x9333('0x36')][_0x9333('0x38')]?_0x1b643[_0x9333('0x36')]:_0x368b21[_0x9333('0x31')];if(_0x3c7e14[_0x9333('0x32')][_0x9333('0x43')]){_0x1b643[_0x9333('0x44')]=[{'all':!![]}];}_0x1b643=_[_0x9333('0x3e')]({},_0x1b643,_0x3c7e14[_0x9333('0x41')]);return db[_0x9333('0x2c')][_0x9333('0x4a')](_0x1b643)['then'](handleEntityNotFound(_0x192cad,null))[_0x9333('0x25')](respondWithResult(_0x192cad,null))[_0x9333('0x47')](handleError(_0x192cad,null));};exports['create']=function(_0x1a9dc9,_0xc7140e){return db[_0x9333('0x2c')][_0x9333('0x4b')](_0x1a9dc9[_0x9333('0x4c')],{})[_0x9333('0x25')](function(_0x53a9cf){var _0x3cccb6=_0x1a9dc9[_0x9333('0x4d')][_0x9333('0x26')]({'plain':!![]});if(!_0x3cccb6)throw new Error(_0x9333('0x4e'));if(_0x3cccb6[_0x9333('0x4f')]===_0x9333('0x4d')){var _0x28080c=_0x53a9cf[_0x9333('0x26')]({'plain':!![]});var _0x56a170='Projects';return db[_0x9333('0x50')]['find']({'where':{'name':_0x56a170,'userProfileId':_0x3cccb6['userProfileId']},'raw':!![]})[_0x9333('0x25')](function(_0x4f42c2){if(_0x4f42c2&&_0x4f42c2[_0x9333('0x51')]===0x0){return db[_0x9333('0x28')][_0x9333('0x4b')]({'name':_0x28080c[_0x9333('0x2a')],'resourceId':_0x28080c['id'],'type':_0x4f42c2['name'],'sectionId':_0x4f42c2['id']},{})[_0x9333('0x25')](function(){return _0x53a9cf;});}else{return _0x53a9cf;}})[_0x9333('0x47')](function(_0x23ea1d){logger[_0x9333('0x52')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x23ea1d);throw _0x23ea1d;});}return _0x53a9cf;})['then'](respondWithResult(_0xc7140e,0xc9))[_0x9333('0x47')](handleError(_0xc7140e,null));};exports[_0x9333('0x53')]=function(_0x59fea7,_0x526195){var _0x4035b2={'where':{'id':_0x59fea7['params']['id']}},_0x587ebe={};_0x587ebe['model']=_[_0x9333('0x33')](db['JscriptyProject'][_0x9333('0x2d')]);_0x4035b2[_0x9333('0x36')]=_[_0x9333('0x35')](_0x587ebe['model'],qs[_0x9333('0x37')](_0x59fea7['query'][_0x9333('0x37')]));_0x4035b2['attributes']=_0x4035b2[_0x9333('0x36')][_0x9333('0x38')]?_0x4035b2[_0x9333('0x36')]:_0x587ebe[_0x9333('0x31')];if(_0x59fea7[_0x9333('0x32')][_0x9333('0x43')]){_0x4035b2[_0x9333('0x44')]=[{'all':!![]}];}_0x4035b2=_[_0x9333('0x3e')]({},_0x4035b2,_0x59fea7['options']);return db['JscriptyProject']['find'](_0x4035b2)['then'](handleEntityNotFound(_0x526195,null))[_0x9333('0x25')](function(_0x1cbf1a){if(_0x1cbf1a){var _0x8adebc=_0x1cbf1a[_0x9333('0x26')]({'plain':!![]});_0x8adebc=qs[_0x9333('0x54')](_0x8adebc,['id',_0x9333('0x55'),_0x9333('0x56')]);_0x59fea7['body']=_[_0x9333('0x54')](_0x59fea7[_0x9333('0x4c')],['id',_0x9333('0x55'),_0x9333('0x56')]);return db[_0x9333('0x2c')]['create'](_[_0x9333('0x3e')](_0x8adebc,_0x59fea7[_0x9333('0x4c')]),{'include':_0x59fea7[_0x9333('0x32')][_0x9333('0x43')]?[{'all':!![]}]:undefined})['then'](function(_0xf4abf4){var _0x3894c0=_0x59fea7[_0x9333('0x4d')][_0x9333('0x26')]({'plain':!![]});if(!_0x3894c0)throw new Error(_0x9333('0x4e'));if(_0x3894c0['role']===_0x9333('0x4d')){var _0x47699b=_0xf4abf4['get']({'plain':!![]});var _0x1fef83=_0x9333('0x27');return db['UserProfileSection'][_0x9333('0x4a')]({'where':{'name':_0x1fef83,'userProfileId':_0x3894c0[_0x9333('0x57')]},'raw':!![]})['then'](function(_0x464bd1){if(_0x464bd1&&_0x464bd1[_0x9333('0x51')]===0x0){return db[_0x9333('0x28')]['create']({'name':_0x47699b[_0x9333('0x2a')],'resourceId':_0x47699b['id'],'type':_0x464bd1[_0x9333('0x2a')],'sectionId':_0x464bd1['id']},{})[_0x9333('0x25')](function(){return _0xf4abf4;});}else{return _0xf4abf4;}})[_0x9333('0x47')](function(_0x50f57c){logger['error'](_0x9333('0x58'),_0x50f57c);throw _0x50f57c;});}return _0xf4abf4;});}})['then'](respondWithResult(_0x526195,0xc9))[_0x9333('0x47')](handleError(_0x526195,null));};exports[_0x9333('0x24')]=function(_0x1e7e0b,_0x218dd3){if(_0x1e7e0b[_0x9333('0x4c')]['id']){delete _0x1e7e0b[_0x9333('0x4c')]['id'];}return db[_0x9333('0x2c')]['find']({'where':{'id':_0x1e7e0b[_0x9333('0x49')]['id']}})[_0x9333('0x25')](handleEntityNotFound(_0x218dd3,null))[_0x9333('0x25')](saveUpdates(_0x1e7e0b['body'],null))[_0x9333('0x25')](respondWithResult(_0x218dd3,null))[_0x9333('0x47')](handleError(_0x218dd3,null));};exports[_0x9333('0x59')]=function(_0x2e0a24,_0x2b61b2){return db[_0x9333('0x2c')][_0x9333('0x4a')]({'where':{'id':_0x2e0a24[_0x9333('0x49')]['id']}})[_0x9333('0x25')](handleEntityNotFound(_0x2b61b2,null))[_0x9333('0x25')](removeEntity(_0x2b61b2,null))['catch'](handleError(_0x2b61b2,null));};exports['getSessions']=function(_0x4e2b11,_0x5428b7,_0x10a853){var _0x210711={'raw':!![],'where':{}};var _0x38a5d0={};var _0x16db07={'count':0x0,'rows':[]};return db[_0x9333('0x2c')][_0x9333('0x5a')]({'where':{'id':_0x4e2b11[_0x9333('0x49')]['id']}})[_0x9333('0x25')](handleEntityNotFound(_0x5428b7,null))['then'](function(_0x292dff){if(_0x292dff){_0x38a5d0[_0x9333('0x31')]=_[_0x9333('0x33')](db[_0x9333('0x5b')][_0x9333('0x2d')]);_0x38a5d0[_0x9333('0x32')]=_[_0x9333('0x33')](_0x4e2b11['query']);_0x38a5d0[_0x9333('0x34')]=_[_0x9333('0x35')](_0x38a5d0[_0x9333('0x31')],_0x38a5d0[_0x9333('0x32')]);_0x210711['attributes']=_[_0x9333('0x35')](_0x38a5d0['model'],qs[_0x9333('0x37')](_0x4e2b11[_0x9333('0x32')][_0x9333('0x37')]));_0x210711[_0x9333('0x36')]=_0x210711[_0x9333('0x36')][_0x9333('0x38')]?_0x210711[_0x9333('0x36')]:_0x38a5d0['model'];if(!_0x4e2b11[_0x9333('0x32')][_0x9333('0x5c')](_0x9333('0x39'))){_0x210711['limit']=qs['limit'](_0x4e2b11['query'][_0x9333('0x1c')]);_0x210711[_0x9333('0x1e')]=qs['offset'](_0x4e2b11[_0x9333('0x32')][_0x9333('0x1e')]);}_0x210711[_0x9333('0x5d')]=qs['sort'](_0x4e2b11['query'][_0x9333('0x3a')]);_0x210711[_0x9333('0x3b')]=qs['filters'](_[_0x9333('0x3c')](_0x4e2b11['query'],_0x38a5d0[_0x9333('0x34')]));_0x210711['where'][_0x9333('0x5e')]=_0x292dff['id'];if(_0x4e2b11[_0x9333('0x32')][_0x9333('0x3d')]){_0x210711[_0x9333('0x3b')]=_['merge'](_0x210711[_0x9333('0x3b')],{'$or':_[_0x9333('0x3f')](_0x210711[_0x9333('0x36')],function(_0x3da4c4){var _0x3f0246={};_0x3f0246[_0x3da4c4]={'$like':'%'+_0x4e2b11[_0x9333('0x32')][_0x9333('0x3d')]+'%'};return _0x3f0246;})});}_0x210711=_[_0x9333('0x3e')]({},_0x210711,_0x4e2b11[_0x9333('0x41')]);return db[_0x9333('0x5b')][_0x9333('0x42')]({'where':_0x210711[_0x9333('0x3b')]})[_0x9333('0x25')](function(_0x30f3e6){_0x16db07[_0x9333('0x42')]=_0x30f3e6;if(_0x4e2b11[_0x9333('0x32')][_0x9333('0x43')]){_0x210711['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x9333('0x45')](_0x210711);})[_0x9333('0x25')](function(_0x54d40d){_0x16db07['rows']=_0x54d40d;return _0x16db07;});}})[_0x9333('0x25')](respondWithFilteredResult(_0x5428b7,_0x210711))[_0x9333('0x47')](handleError(_0x5428b7,null));};exports[_0x9333('0x5f')]=function(_0x106580,_0x167166,_0x4884ce){var _0x3f906e={'raw':!![],'where':{}};var _0x533652={};var _0x5d7863={'count':0x0,'rows':[]};return db[_0x9333('0x2c')][_0x9333('0x5a')]({'where':{'id':_0x106580[_0x9333('0x49')]['id']}})[_0x9333('0x25')](handleEntityNotFound(_0x167166,null))[_0x9333('0x25')](function(_0x2adc52){if(_0x2adc52){_0x533652[_0x9333('0x31')]=_[_0x9333('0x33')](db['JscriptyAnswerReport'][_0x9333('0x2d')]);_0x533652[_0x9333('0x32')]=_[_0x9333('0x33')](_0x106580['query']);_0x533652[_0x9333('0x34')]=_['intersection'](_0x533652[_0x9333('0x31')],_0x533652['query']);_0x3f906e[_0x9333('0x36')]=_[_0x9333('0x35')](_0x533652[_0x9333('0x31')],qs['fields'](_0x106580[_0x9333('0x32')]['fields']));_0x3f906e[_0x9333('0x36')]=_0x3f906e[_0x9333('0x36')][_0x9333('0x38')]?_0x3f906e[_0x9333('0x36')]:_0x533652[_0x9333('0x31')];if(!_0x106580[_0x9333('0x32')]['hasOwnProperty']('nolimit')){_0x3f906e[_0x9333('0x1c')]=qs[_0x9333('0x1c')](_0x106580['query'][_0x9333('0x1c')]);_0x3f906e['offset']=qs[_0x9333('0x1e')](_0x106580[_0x9333('0x32')][_0x9333('0x1e')]);}_0x3f906e['order']=qs['sort'](_0x106580[_0x9333('0x32')][_0x9333('0x3a')]);_0x3f906e[_0x9333('0x3b')]=qs[_0x9333('0x34')](_[_0x9333('0x3c')](_0x106580['query'],_0x533652['filters']));_0x3f906e[_0x9333('0x3b')][_0x9333('0x5e')]=_0x2adc52['id'];if(_0x106580[_0x9333('0x32')]['filter']){_0x3f906e[_0x9333('0x3b')]=_[_0x9333('0x3e')](_0x3f906e[_0x9333('0x3b')],{'$or':_[_0x9333('0x3f')](_0x3f906e[_0x9333('0x36')],function(_0x100eb2){var _0x358a8d={};_0x358a8d[_0x100eb2]={'$like':'%'+_0x106580[_0x9333('0x32')]['filter']+'%'};return _0x358a8d;})});}_0x3f906e=_[_0x9333('0x3e')]({},_0x3f906e,_0x106580[_0x9333('0x41')]);return db[_0x9333('0x60')][_0x9333('0x42')]({'where':_0x3f906e[_0x9333('0x3b')]})[_0x9333('0x25')](function(_0x14e14e){_0x5d7863[_0x9333('0x42')]=_0x14e14e;if(_0x106580[_0x9333('0x32')][_0x9333('0x43')]){_0x3f906e['include']=[{'all':!![]}];}return db[_0x9333('0x60')][_0x9333('0x45')](_0x3f906e);})[_0x9333('0x25')](function(_0x14fbf1){_0x5d7863['rows']=_0x14fbf1;return _0x5d7863;});}})[_0x9333('0x25')](respondWithFilteredResult(_0x167166,_0x3f906e))[_0x9333('0x47')](handleError(_0x167166,null));};function char(_0x2b0c3c){return _0x9333('0x61')===typeof _0x2b0c3c?String[_0x9333('0x62')][_0x9333('0x21')](null,arguments):_0x2b0c3c;}function needsEncapsulation(_0x335941){return!!_0x335941&&(_0x335941[_0x9333('0x63')]()[_0x9333('0x64')](char(0xd))>=0x0||_0x335941['toString']()[_0x9333('0x64')](char(0xa))>=0x0||_0x335941['toString']()[_0x9333('0x64')](char(0x2c))>=0x0||_0x335941[_0x9333('0x63')]()[_0x9333('0x64')](char(0x22))>=0x0);}function encapsulate(_0x1ce625){var _0x570e09=char(0x22),_0x5a356d='\x5c'+char(0x22),_0x553801=_0x1ce625['toString']()[_0x9333('0x65')](new RegExp(_0x570e09,'g'),_0x5a356d);return _0x570e09+_0x553801+_0x570e09;}exports['getSummary']=function(_0x487dbf,_0x13fca8,_0x5250a8){var _0x595a02,_0x3356cf;var _0x3df54a={'where':{'ProjectId':_0x487dbf['params']['id']}};if(_0x487dbf['query'][_0x9333('0x66')]){_0x3df54a[_0x9333('0x3b')][_0x9333('0x67')]=JSON[_0x9333('0x68')](_0x487dbf[_0x9333('0x32')][_0x9333('0x66')]);}return db[_0x9333('0x5b')][_0x9333('0x45')](_0x3df54a)[_0x9333('0x25')](handleEntityNotFound(_0x13fca8,null))[_0x9333('0x25')](function(_0x4bcc0f){if(_0x4bcc0f){_0x595a02=_0x4bcc0f;return db[_0x9333('0x69')]['findAll']({'where':{'SessionId':{'$in':_[_0x9333('0x3f')](_0x595a02,'id')},'ProjectId':_0x487dbf[_0x9333('0x49')]['id']},'order':_0x9333('0x6a')});}})[_0x9333('0x25')](handleEntityNotFound(_0x13fca8,null))[_0x9333('0x25')](function(_0x12122c){if(_0x12122c){_0x3356cf=_0x12122c;var _0x5b0608={};for(var _0x31bba6=0x0,_0x535864=_0x3356cf['length'];_0x31bba6<_0x535864;_0x31bba6++){if(!_0x5b0608[_0x9333('0x5c')](_0x3356cf[_0x31bba6][_0x9333('0x6b')])){_0x5b0608[_0x3356cf[_0x31bba6][_0x9333('0x6b')]]=needsEncapsulation(_0x3356cf[_0x31bba6][_0x9333('0x6c')])?encapsulate(_0x3356cf[_0x31bba6]['question']):_0x3356cf[_0x31bba6][_0x9333('0x6c')];}}var _0x38fa58=[],_0x10434e={};for(var _0x226c2c=0x0,_0x5c32fb=_0x595a02['length'];_0x226c2c<_0x5c32fb;_0x226c2c++){_0x10434e={'ProjectId':_0x487dbf['params']['id'],'SessionId':_0x595a02[_0x226c2c]['id'],'StartTime':moment(_0x595a02[_0x226c2c][_0x9333('0x67')])[_0x9333('0x6d')]('YYYY-MM-DD\x20HH:mm:ss')};for(var _0x3601bc=0x0,_0x3820b2=_0x3356cf['length'];_0x3601bc<_0x3820b2;_0x3601bc++){if(_0x3356cf[_0x3601bc]['SessionId']==_0x595a02[_0x226c2c]['id']&&_0x5b0608[_0x9333('0x5c')](_0x3356cf[_0x3601bc]['questionId'])){_0x10434e[_0x5b0608[_0x3356cf[_0x3601bc][_0x9333('0x6b')]]]=_0x3356cf[_0x3601bc]['answer'];}}for(var _0x56eec6 in _0x5b0608){if(!_0x10434e[_0x9333('0x5c')](_0x5b0608[_0x56eec6])){_0x10434e[_0x5b0608[_0x56eec6]]=null;}}_0x38fa58['push'](_0x10434e);}return _0x38fa58;}})['then'](function(_0x199e7f){if(!_[_0x9333('0x6e')](_0x199e7f)){var _0x2f9425=toCsv(_0x199e7f);var _0x22b593=Date['now']();fs[_0x9333('0x6f')](util[_0x9333('0x6d')](_0x9333('0x70'),_0x487dbf[_0x9333('0x49')]['id'],_0x22b593),_0x2f9425);_0x13fca8[_0x9333('0x71')](_0x9333('0x72'),_0x9333('0x73')+util[_0x9333('0x6d')](_0x9333('0x74'),_0x487dbf[_0x9333('0x49')]['id'],_0x22b593));_0x13fca8['setHeader'](_0x9333('0x75'),_0x9333('0x76'));return _0x13fca8[_0x9333('0x77')](util[_0x9333('0x6d')](_0x9333('0x70'),_0x487dbf['params']['id'],_0x22b593));}else{return _0x13fca8[_0x9333('0x19')](0xcc);}})[_0x9333('0x47')](handleError(_0x13fca8,null));};
\ No newline at end of file
+var _0x0d90=['create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','params','createdAt','updatedAt','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getSessions','findOne','JscriptySessionReport','hasOwnProperty','nolimit','order','sort','rows','getAnswers','JscriptyAnswerReport','number','fromCharCode','toString','indexOf','replace','getSummary','starttime','parse','startTime','JscriptyQuestionReport','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','isEmpty','now','/tmp/Jscripty_Project_%d_Summary_%s.csv','attachment;\x20filename=','setHeader','Content-type','download','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','offset','undefined','count','limit','status','set','json','reject','update','then','get','Projects','UserProfileResource','destroy','sendStatus','error','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','where','pick','filter','merge','VIRTUAL','options','JscriptyProject','includeAll','include','findAll','catch','show','find'];(function(_0x1b82d9,_0x4fb27d){var _0x194149=function(_0x1b5b8c){while(--_0x1b5b8c){_0x1b82d9['push'](_0x1b82d9['shift']());}};_0x194149(++_0x4fb27d);}(_0x0d90,0xa0));var _0x00d9=function(_0x2cfd02,_0x580a7a){_0x2cfd02=_0x2cfd02-0x0;var _0x3f085d=_0x0d90[_0x2cfd02];return _0x3f085d;};'use strict';var emlformat=require(_0x00d9('0x0'));var rimraf=require(_0x00d9('0x1'));var zipdir=require(_0x00d9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x00d9('0x3'));var moment=require(_0x00d9('0x4'));var BPromise=require(_0x00d9('0x5'));var Mustache=require('mustache');var util=require(_0x00d9('0x6'));var path=require(_0x00d9('0x7'));var sox=require(_0x00d9('0x8'));var csv=require(_0x00d9('0x9'));var ejs=require(_0x00d9('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x00d9('0xb'));var squel=require(_0x00d9('0xc'));var crypto=require(_0x00d9('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x00d9('0xe'));var toCsv=require(_0x00d9('0x9'));var querystring=require('querystring');var Papa=require(_0x00d9('0xf'));var Redis=require(_0x00d9('0x10'));var authService=require(_0x00d9('0x11'));var qs=require(_0x00d9('0x12'));var as=require(_0x00d9('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x00d9('0x14'))(_0x00d9('0x15'));var utils=require(_0x00d9('0x16'));var config=require(_0x00d9('0x17'));var licenseUtil=require(_0x00d9('0x18'));var db=require(_0x00d9('0x19'))['db'];function respondWithStatusCode(_0x217b29,_0xca42d8){_0xca42d8=_0xca42d8||0xcc;return function(_0x498346){if(_0x498346){return _0x217b29['sendStatus'](_0xca42d8);}return _0x217b29['status'](_0xca42d8)[_0x00d9('0x1a')]();};}function respondWithResult(_0x3fab95,_0x49f0b0){_0x49f0b0=_0x49f0b0||0xc8;return function(_0x4b0719){if(_0x4b0719){return _0x3fab95['status'](_0x49f0b0)['json'](_0x4b0719);}};}function respondWithFilteredResult(_0x2bf2d8,_0x476d19){return function(_0xccb344){if(_0xccb344){var _0x15206b=typeof _0x476d19[_0x00d9('0x1b')]===_0x00d9('0x1c')&&typeof _0x476d19['limit']===_0x00d9('0x1c');var _0x3bd27d=_0xccb344[_0x00d9('0x1d')];var _0x3fe22e=_0x15206b?0x0:_0x476d19[_0x00d9('0x1b')];var _0x53ddec=_0x15206b?_0xccb344[_0x00d9('0x1d')]:_0x476d19[_0x00d9('0x1b')]+_0x476d19[_0x00d9('0x1e')];var _0x109088;if(_0x53ddec>=_0x3bd27d){_0x53ddec=_0x3bd27d;_0x109088=0xc8;}else{_0x109088=0xce;}_0x2bf2d8[_0x00d9('0x1f')](_0x109088);return _0x2bf2d8[_0x00d9('0x20')]('Content-Range',_0x3fe22e+'-'+_0x53ddec+'/'+_0x3bd27d)[_0x00d9('0x21')](_0xccb344);}return null;};}function patchUpdates(_0x3124e3){return function(_0x163e82){try{jsonpatch['apply'](_0x163e82,_0x3124e3,!![]);}catch(_0x250944){return BPromise[_0x00d9('0x22')](_0x250944);}return _0x163e82['save']();};}function saveUpdates(_0x269cc9,_0x425f97){return function(_0x45007a){if(_0x45007a){return _0x45007a[_0x00d9('0x23')](_0x269cc9)[_0x00d9('0x24')](function(_0x26ab9a){return _0x26ab9a;});}return null;};}function removeEntity(_0x5e7482,_0x571a21){return function(_0x35101a){if(_0x35101a){return _0x35101a['destroy']()[_0x00d9('0x24')](function(){var _0xf06159=_0x35101a[_0x00d9('0x25')]({'plain':!![]});var _0x3542c5=_0x00d9('0x26');return db[_0x00d9('0x27')][_0x00d9('0x28')]({'where':{'type':_0x3542c5,'resourceId':_0xf06159['id']}})[_0x00d9('0x24')](function(){return _0x35101a;});})[_0x00d9('0x24')](function(){_0x5e7482[_0x00d9('0x1f')](0xcc)[_0x00d9('0x1a')]();});}};}function handleEntityNotFound(_0x54f100,_0x1a3989){return function(_0x5c5938){if(!_0x5c5938){_0x54f100[_0x00d9('0x29')](0x194);}return _0x5c5938;};}function handleError(_0x198fb7,_0x134662){_0x134662=_0x134662||0x1f4;return function(_0x2ec808){logger[_0x00d9('0x2a')](_0x2ec808[_0x00d9('0x2b')]);if(_0x2ec808[_0x00d9('0x2c')]){delete _0x2ec808[_0x00d9('0x2c')];}_0x198fb7[_0x00d9('0x1f')](_0x134662)[_0x00d9('0x2d')](_0x2ec808);};}exports[_0x00d9('0x2e')]=function(_0x2bdb60,_0x38eb09){var _0x496c97={},_0x22d89a={},_0x412210={'count':0x0,'rows':[]};var _0x341da1=_[_0x00d9('0x2f')](db['JscriptyProject'][_0x00d9('0x30')],function(_0x2cad65){return{'name':_0x2cad65['fieldName'],'type':_0x2cad65[_0x00d9('0x31')][_0x00d9('0x32')]};});_0x22d89a[_0x00d9('0x33')]=_[_0x00d9('0x2f')](_0x341da1,_0x00d9('0x2c'));_0x22d89a[_0x00d9('0x34')]=_[_0x00d9('0x35')](_0x2bdb60['query']);_0x22d89a[_0x00d9('0x36')]=_[_0x00d9('0x37')](_0x22d89a[_0x00d9('0x33')],_0x22d89a[_0x00d9('0x34')]);_0x496c97[_0x00d9('0x38')]=_[_0x00d9('0x37')](_0x22d89a[_0x00d9('0x33')],qs['fields'](_0x2bdb60[_0x00d9('0x34')][_0x00d9('0x39')]));_0x496c97[_0x00d9('0x38')]=_0x496c97[_0x00d9('0x38')][_0x00d9('0x3a')]?_0x496c97[_0x00d9('0x38')]:_0x22d89a[_0x00d9('0x33')];if(!_0x2bdb60[_0x00d9('0x34')]['hasOwnProperty']('nolimit')){_0x496c97[_0x00d9('0x1e')]=qs[_0x00d9('0x1e')](_0x2bdb60[_0x00d9('0x34')]['limit']);_0x496c97[_0x00d9('0x1b')]=qs[_0x00d9('0x1b')](_0x2bdb60[_0x00d9('0x34')][_0x00d9('0x1b')]);}_0x496c97['order']=qs['sort'](_0x2bdb60[_0x00d9('0x34')]['sort']);_0x496c97[_0x00d9('0x3b')]=qs['filters'](_[_0x00d9('0x3c')](_0x2bdb60[_0x00d9('0x34')],_0x22d89a[_0x00d9('0x36')]),_0x341da1);if(_0x2bdb60[_0x00d9('0x34')][_0x00d9('0x3d')]){_0x496c97[_0x00d9('0x3b')]=_[_0x00d9('0x3e')](_0x496c97['where'],{'$or':_[_0x00d9('0x2f')](_0x341da1,function(_0x2029aa){if(_0x2029aa[_0x00d9('0x31')]!==_0x00d9('0x3f')){var _0x1b7c3a={};_0x1b7c3a[_0x2029aa[_0x00d9('0x2c')]]={'$like':'%'+_0x2bdb60[_0x00d9('0x34')]['filter']+'%'};return _0x1b7c3a;}})});}_0x496c97=_[_0x00d9('0x3e')]({},_0x496c97,_0x2bdb60[_0x00d9('0x40')]);var _0x402c42={'where':_0x496c97['where']};return db[_0x00d9('0x41')][_0x00d9('0x1d')](_0x402c42)[_0x00d9('0x24')](function(_0x41e786){_0x412210[_0x00d9('0x1d')]=_0x41e786;if(_0x2bdb60[_0x00d9('0x34')][_0x00d9('0x42')]){_0x496c97[_0x00d9('0x43')]=[{'all':!![]}];}return db['JscriptyProject'][_0x00d9('0x44')](_0x496c97);})[_0x00d9('0x24')](function(_0x40252d){_0x412210['rows']=_0x40252d;return _0x412210;})[_0x00d9('0x24')](respondWithFilteredResult(_0x38eb09,_0x496c97))[_0x00d9('0x45')](handleError(_0x38eb09,null));};exports[_0x00d9('0x46')]=function(_0x2f4eb3,_0x1682d9){var _0x4276b9={'raw':![],'where':{'id':_0x2f4eb3['params']['id']}},_0x2bf5a5={};_0x2bf5a5[_0x00d9('0x33')]=_['keys'](db[_0x00d9('0x41')]['rawAttributes']);_0x2bf5a5[_0x00d9('0x34')]=_[_0x00d9('0x35')](_0x2f4eb3[_0x00d9('0x34')]);_0x2bf5a5['filters']=_[_0x00d9('0x37')](_0x2bf5a5[_0x00d9('0x33')],_0x2bf5a5[_0x00d9('0x34')]);_0x4276b9[_0x00d9('0x38')]=_[_0x00d9('0x37')](_0x2bf5a5[_0x00d9('0x33')],qs['fields'](_0x2f4eb3['query']['fields']));_0x4276b9['attributes']=_0x4276b9['attributes'][_0x00d9('0x3a')]?_0x4276b9[_0x00d9('0x38')]:_0x2bf5a5[_0x00d9('0x33')];if(_0x2f4eb3[_0x00d9('0x34')][_0x00d9('0x42')]){_0x4276b9[_0x00d9('0x43')]=[{'all':!![]}];}_0x4276b9=_[_0x00d9('0x3e')]({},_0x4276b9,_0x2f4eb3[_0x00d9('0x40')]);return db['JscriptyProject'][_0x00d9('0x47')](_0x4276b9)['then'](handleEntityNotFound(_0x1682d9,null))[_0x00d9('0x24')](respondWithResult(_0x1682d9,null))['catch'](handleError(_0x1682d9,null));};exports[_0x00d9('0x48')]=function(_0x56c419,_0x21ad43){return db[_0x00d9('0x41')][_0x00d9('0x48')](_0x56c419[_0x00d9('0x49')],{})['then'](function(_0x4ece35){var _0x1c7f00=_0x56c419[_0x00d9('0x4a')][_0x00d9('0x25')]({'plain':!![]});if(!_0x1c7f00)throw new Error(_0x00d9('0x4b'));if(_0x1c7f00[_0x00d9('0x4c')]==='user'){var _0x59b6e3=_0x4ece35[_0x00d9('0x25')]({'plain':!![]});var _0x37fb98='Projects';return db['UserProfileSection'][_0x00d9('0x47')]({'where':{'name':_0x37fb98,'userProfileId':_0x1c7f00[_0x00d9('0x4d')]},'raw':!![]})[_0x00d9('0x24')](function(_0x5a367b){if(_0x5a367b&&_0x5a367b[_0x00d9('0x4e')]===0x0){return db[_0x00d9('0x27')][_0x00d9('0x48')]({'name':_0x59b6e3[_0x00d9('0x2c')],'resourceId':_0x59b6e3['id'],'type':_0x5a367b[_0x00d9('0x2c')],'sectionId':_0x5a367b['id']},{})['then'](function(){return _0x4ece35;});}else{return _0x4ece35;}})[_0x00d9('0x45')](function(_0x4dda73){logger[_0x00d9('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4dda73);throw _0x4dda73;});}return _0x4ece35;})[_0x00d9('0x24')](respondWithResult(_0x21ad43,0xc9))[_0x00d9('0x45')](handleError(_0x21ad43,null));};exports['clone']=function(_0x69beda,_0x22898d){var _0x2fa4e8={'where':{'id':_0x69beda[_0x00d9('0x4f')]['id']}},_0x1091cc={};_0x1091cc['model']=_['keys'](db[_0x00d9('0x41')][_0x00d9('0x30')]);_0x2fa4e8[_0x00d9('0x38')]=_[_0x00d9('0x37')](_0x1091cc[_0x00d9('0x33')],qs[_0x00d9('0x39')](_0x69beda[_0x00d9('0x34')][_0x00d9('0x39')]));_0x2fa4e8['attributes']=_0x2fa4e8[_0x00d9('0x38')][_0x00d9('0x3a')]?_0x2fa4e8[_0x00d9('0x38')]:_0x1091cc['model'];if(_0x69beda['query'][_0x00d9('0x42')]){_0x2fa4e8[_0x00d9('0x43')]=[{'all':!![]}];}_0x2fa4e8=_[_0x00d9('0x3e')]({},_0x2fa4e8,_0x69beda['options']);return db['JscriptyProject']['find'](_0x2fa4e8)[_0x00d9('0x24')](handleEntityNotFound(_0x22898d,null))[_0x00d9('0x24')](function(_0x2de9a5){if(_0x2de9a5){var _0x34ee8b=_0x2de9a5[_0x00d9('0x25')]({'plain':!![]});_0x34ee8b=qs['omit'](_0x34ee8b,['id',_0x00d9('0x50'),_0x00d9('0x51')]);_0x69beda['body']=_['omit'](_0x69beda[_0x00d9('0x49')],['id',_0x00d9('0x50'),_0x00d9('0x51')]);return db['JscriptyProject'][_0x00d9('0x48')](_[_0x00d9('0x3e')](_0x34ee8b,_0x69beda['body']),{'include':_0x69beda[_0x00d9('0x34')][_0x00d9('0x42')]?[{'all':!![]}]:undefined})['then'](function(_0x2e5c91){var _0x2edb62=_0x69beda[_0x00d9('0x4a')][_0x00d9('0x25')]({'plain':!![]});if(!_0x2edb62)throw new Error(_0x00d9('0x4b'));if(_0x2edb62[_0x00d9('0x4c')]===_0x00d9('0x4a')){var _0x19a9ef=_0x2e5c91['get']({'plain':!![]});var _0x503f96=_0x00d9('0x26');return db['UserProfileSection'][_0x00d9('0x47')]({'where':{'name':_0x503f96,'userProfileId':_0x2edb62[_0x00d9('0x4d')]},'raw':!![]})[_0x00d9('0x24')](function(_0x406c49){if(_0x406c49&&_0x406c49[_0x00d9('0x4e')]===0x0){return db[_0x00d9('0x27')][_0x00d9('0x48')]({'name':_0x19a9ef['name'],'resourceId':_0x19a9ef['id'],'type':_0x406c49[_0x00d9('0x2c')],'sectionId':_0x406c49['id']},{})[_0x00d9('0x24')](function(){return _0x2e5c91;});}else{return _0x2e5c91;}})[_0x00d9('0x45')](function(_0x271d0b){logger[_0x00d9('0x2a')](_0x00d9('0x52'),_0x271d0b);throw _0x271d0b;});}return _0x2e5c91;});}})['then'](respondWithResult(_0x22898d,0xc9))['catch'](handleError(_0x22898d,null));};exports[_0x00d9('0x23')]=function(_0x17e874,_0x3884a4){if(_0x17e874[_0x00d9('0x49')]['id']){delete _0x17e874[_0x00d9('0x49')]['id'];}return db['JscriptyProject']['find']({'where':{'id':_0x17e874[_0x00d9('0x4f')]['id']}})[_0x00d9('0x24')](handleEntityNotFound(_0x3884a4,null))['then'](saveUpdates(_0x17e874['body'],null))['then'](respondWithResult(_0x3884a4,null))['catch'](handleError(_0x3884a4,null));};exports['destroy']=function(_0x31aa4c,_0x39dbe2){return db[_0x00d9('0x41')][_0x00d9('0x47')]({'where':{'id':_0x31aa4c[_0x00d9('0x4f')]['id']}})[_0x00d9('0x24')](handleEntityNotFound(_0x39dbe2,null))['then'](removeEntity(_0x39dbe2,null))[_0x00d9('0x45')](handleError(_0x39dbe2,null));};exports[_0x00d9('0x53')]=function(_0x28bd00,_0xe1bc88,_0x4e30c9){var _0x458231={'raw':!![],'where':{}};var _0x1d89bf={};var _0x32ba9d={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x00d9('0x54')]({'where':{'id':_0x28bd00['params']['id']}})[_0x00d9('0x24')](handleEntityNotFound(_0xe1bc88,null))['then'](function(_0x3f65cd){if(_0x3f65cd){_0x1d89bf['model']=_['keys'](db[_0x00d9('0x55')][_0x00d9('0x30')]);_0x1d89bf['query']=_['keys'](_0x28bd00[_0x00d9('0x34')]);_0x1d89bf[_0x00d9('0x36')]=_['intersection'](_0x1d89bf['model'],_0x1d89bf[_0x00d9('0x34')]);_0x458231[_0x00d9('0x38')]=_[_0x00d9('0x37')](_0x1d89bf[_0x00d9('0x33')],qs[_0x00d9('0x39')](_0x28bd00[_0x00d9('0x34')][_0x00d9('0x39')]));_0x458231[_0x00d9('0x38')]=_0x458231['attributes'][_0x00d9('0x3a')]?_0x458231['attributes']:_0x1d89bf['model'];if(!_0x28bd00[_0x00d9('0x34')][_0x00d9('0x56')](_0x00d9('0x57'))){_0x458231[_0x00d9('0x1e')]=qs['limit'](_0x28bd00['query'][_0x00d9('0x1e')]);_0x458231[_0x00d9('0x1b')]=qs[_0x00d9('0x1b')](_0x28bd00[_0x00d9('0x34')][_0x00d9('0x1b')]);}_0x458231[_0x00d9('0x58')]=qs[_0x00d9('0x59')](_0x28bd00[_0x00d9('0x34')]['sort']);_0x458231[_0x00d9('0x3b')]=qs[_0x00d9('0x36')](_['pick'](_0x28bd00['query'],_0x1d89bf[_0x00d9('0x36')]));_0x458231[_0x00d9('0x3b')]['ProjectId']=_0x3f65cd['id'];if(_0x28bd00['query'][_0x00d9('0x3d')]){_0x458231['where']=_[_0x00d9('0x3e')](_0x458231['where'],{'$or':_[_0x00d9('0x2f')](_0x458231[_0x00d9('0x38')],function(_0x50d46e){var _0x22d0dc={};_0x22d0dc[_0x50d46e]={'$like':'%'+_0x28bd00['query']['filter']+'%'};return _0x22d0dc;})});}_0x458231=_['merge']({},_0x458231,_0x28bd00[_0x00d9('0x40')]);return db[_0x00d9('0x55')][_0x00d9('0x1d')]({'where':_0x458231[_0x00d9('0x3b')]})[_0x00d9('0x24')](function(_0x146f1d){_0x32ba9d[_0x00d9('0x1d')]=_0x146f1d;if(_0x28bd00[_0x00d9('0x34')][_0x00d9('0x42')]){_0x458231[_0x00d9('0x43')]=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0x458231);})['then'](function(_0xf09637){_0x32ba9d[_0x00d9('0x5a')]=_0xf09637;return _0x32ba9d;});}})[_0x00d9('0x24')](respondWithFilteredResult(_0xe1bc88,_0x458231))[_0x00d9('0x45')](handleError(_0xe1bc88,null));};exports[_0x00d9('0x5b')]=function(_0x5a51d8,_0x555dec,_0x540d3d){var _0x47615b={'raw':!![],'where':{}};var _0x5887a6={};var _0x513641={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x00d9('0x54')]({'where':{'id':_0x5a51d8[_0x00d9('0x4f')]['id']}})[_0x00d9('0x24')](handleEntityNotFound(_0x555dec,null))[_0x00d9('0x24')](function(_0x1c214c){if(_0x1c214c){_0x5887a6[_0x00d9('0x33')]=_[_0x00d9('0x35')](db[_0x00d9('0x5c')][_0x00d9('0x30')]);_0x5887a6[_0x00d9('0x34')]=_['keys'](_0x5a51d8[_0x00d9('0x34')]);_0x5887a6['filters']=_[_0x00d9('0x37')](_0x5887a6['model'],_0x5887a6[_0x00d9('0x34')]);_0x47615b[_0x00d9('0x38')]=_[_0x00d9('0x37')](_0x5887a6[_0x00d9('0x33')],qs[_0x00d9('0x39')](_0x5a51d8[_0x00d9('0x34')][_0x00d9('0x39')]));_0x47615b[_0x00d9('0x38')]=_0x47615b[_0x00d9('0x38')]['length']?_0x47615b['attributes']:_0x5887a6[_0x00d9('0x33')];if(!_0x5a51d8['query'][_0x00d9('0x56')]('nolimit')){_0x47615b[_0x00d9('0x1e')]=qs[_0x00d9('0x1e')](_0x5a51d8[_0x00d9('0x34')][_0x00d9('0x1e')]);_0x47615b[_0x00d9('0x1b')]=qs[_0x00d9('0x1b')](_0x5a51d8[_0x00d9('0x34')]['offset']);}_0x47615b['order']=qs[_0x00d9('0x59')](_0x5a51d8[_0x00d9('0x34')][_0x00d9('0x59')]);_0x47615b[_0x00d9('0x3b')]=qs[_0x00d9('0x36')](_[_0x00d9('0x3c')](_0x5a51d8[_0x00d9('0x34')],_0x5887a6[_0x00d9('0x36')]));_0x47615b[_0x00d9('0x3b')]['ProjectId']=_0x1c214c['id'];if(_0x5a51d8[_0x00d9('0x34')][_0x00d9('0x3d')]){_0x47615b[_0x00d9('0x3b')]=_[_0x00d9('0x3e')](_0x47615b['where'],{'$or':_[_0x00d9('0x2f')](_0x47615b['attributes'],function(_0x4dca48){var _0x31c400={};_0x31c400[_0x4dca48]={'$like':'%'+_0x5a51d8[_0x00d9('0x34')][_0x00d9('0x3d')]+'%'};return _0x31c400;})});}_0x47615b=_['merge']({},_0x47615b,_0x5a51d8[_0x00d9('0x40')]);return db[_0x00d9('0x5c')]['count']({'where':_0x47615b['where']})[_0x00d9('0x24')](function(_0x4db569){_0x513641[_0x00d9('0x1d')]=_0x4db569;if(_0x5a51d8[_0x00d9('0x34')][_0x00d9('0x42')]){_0x47615b['include']=[{'all':!![]}];}return db[_0x00d9('0x5c')][_0x00d9('0x44')](_0x47615b);})[_0x00d9('0x24')](function(_0x15a6d1){_0x513641[_0x00d9('0x5a')]=_0x15a6d1;return _0x513641;});}})[_0x00d9('0x24')](respondWithFilteredResult(_0x555dec,_0x47615b))[_0x00d9('0x45')](handleError(_0x555dec,null));};function char(_0x16e0f5){return _0x00d9('0x5d')===typeof _0x16e0f5?String[_0x00d9('0x5e')]['apply'](null,arguments):_0x16e0f5;}function needsEncapsulation(_0x28bf78){return!!_0x28bf78&&(_0x28bf78[_0x00d9('0x5f')]()[_0x00d9('0x60')](char(0xd))>=0x0||_0x28bf78[_0x00d9('0x5f')]()[_0x00d9('0x60')](char(0xa))>=0x0||_0x28bf78[_0x00d9('0x5f')]()[_0x00d9('0x60')](char(0x2c))>=0x0||_0x28bf78['toString']()[_0x00d9('0x60')](char(0x22))>=0x0);}function encapsulate(_0x2cedfc){var _0x55383c=char(0x22),_0x3aade5='\x5c'+char(0x22),_0x18950b=_0x2cedfc['toString']()[_0x00d9('0x61')](new RegExp(_0x55383c,'g'),_0x3aade5);return _0x55383c+_0x18950b+_0x55383c;}exports[_0x00d9('0x62')]=function(_0x45d7d6,_0x4454f7,_0x3f7d1e){var _0x22b602,_0x397f3b;var _0x27b83f={'where':{'ProjectId':_0x45d7d6[_0x00d9('0x4f')]['id']}};if(_0x45d7d6['query']['startTime']){_0x27b83f[_0x00d9('0x3b')][_0x00d9('0x63')]=JSON[_0x00d9('0x64')](_0x45d7d6[_0x00d9('0x34')][_0x00d9('0x65')]);}return db[_0x00d9('0x55')][_0x00d9('0x44')](_0x27b83f)['then'](handleEntityNotFound(_0x4454f7,null))[_0x00d9('0x24')](function(_0x26a49e){if(_0x26a49e){_0x22b602=_0x26a49e;return db[_0x00d9('0x66')][_0x00d9('0x44')]({'where':{'SessionId':{'$in':_[_0x00d9('0x2f')](_0x22b602,'id')},'ProjectId':_0x45d7d6[_0x00d9('0x4f')]['id']},'order':'-createdAt'});}})[_0x00d9('0x24')](handleEntityNotFound(_0x4454f7,null))[_0x00d9('0x24')](function(_0x3202c7){if(_0x3202c7){_0x397f3b=_0x3202c7;var _0x3421c4={};for(var _0x226113=0x0,_0xdf8bd9=_0x397f3b[_0x00d9('0x3a')];_0x226113<_0xdf8bd9;_0x226113++){if(!_0x3421c4['hasOwnProperty'](_0x397f3b[_0x226113][_0x00d9('0x67')])){_0x3421c4[_0x397f3b[_0x226113]['questionId']]=needsEncapsulation(_0x397f3b[_0x226113][_0x00d9('0x68')])?encapsulate(_0x397f3b[_0x226113]['question']):_0x397f3b[_0x226113]['question'];}}var _0x4368f9=[],_0x33bde3={};for(var _0x4200dd=0x0,_0x57edc0=_0x22b602[_0x00d9('0x3a')];_0x4200dd<_0x57edc0;_0x4200dd++){_0x33bde3={'ProjectId':_0x45d7d6['params']['id'],'SessionId':_0x22b602[_0x4200dd]['id'],'StartTime':moment(_0x22b602[_0x4200dd][_0x00d9('0x63')])[_0x00d9('0x69')](_0x00d9('0x6a'))};for(var _0x13df63=0x0,_0x1d545d=_0x397f3b[_0x00d9('0x3a')];_0x13df63<_0x1d545d;_0x13df63++){if(_0x397f3b[_0x13df63][_0x00d9('0x6b')]==_0x22b602[_0x4200dd]['id']&&_0x3421c4[_0x00d9('0x56')](_0x397f3b[_0x13df63][_0x00d9('0x67')])){_0x33bde3[_0x3421c4[_0x397f3b[_0x13df63][_0x00d9('0x67')]]]=_0x397f3b[_0x13df63][_0x00d9('0x6c')];}}for(var _0xa18c19 in _0x3421c4){if(!_0x33bde3[_0x00d9('0x56')](_0x3421c4[_0xa18c19])){_0x33bde3[_0x3421c4[_0xa18c19]]=null;}}_0x4368f9['push'](_0x33bde3);}return _0x4368f9;}})[_0x00d9('0x24')](function(_0x4c2461){if(!_[_0x00d9('0x6d')](_0x4c2461)){var _0xbf5647=toCsv(_0x4c2461);var _0x22cd4d=Date[_0x00d9('0x6e')]();fs['writeFileSync'](util[_0x00d9('0x69')](_0x00d9('0x6f'),_0x45d7d6[_0x00d9('0x4f')]['id'],_0x22cd4d),_0xbf5647);_0x4454f7['setHeader']('Content-disposition',_0x00d9('0x70')+util[_0x00d9('0x69')]('Jscripty_Project_%d_Summary_%s.csv',_0x45d7d6[_0x00d9('0x4f')]['id'],_0x22cd4d));_0x4454f7[_0x00d9('0x71')](_0x00d9('0x72'),'text/csv');return _0x4454f7[_0x00d9('0x73')](util[_0x00d9('0x69')](_0x00d9('0x6f'),_0x45d7d6['params']['id'],_0x22cd4d));}else{return _0x4454f7[_0x00d9('0x29')](0xcc);}})[_0x00d9('0x45')](handleError(_0x4454f7,null));};
\ No newline at end of file
index 86034f9..9a9c5e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92bc=['../../config/logger','bluebird','request-promise','path','rimraf','./jscriptyProject.attributes','exports','JscriptyProject','jscripty_projects','lodash','util'];(function(_0x179d86,_0x139c2c){var _0x437ec7=function(_0x6fc453){while(--_0x6fc453){_0x179d86['push'](_0x179d86['shift']());}};_0x437ec7(++_0x139c2c);}(_0x92bc,0x106));var _0xc92b=function(_0x4b34bd,_0x40a6ef){_0x4b34bd=_0x4b34bd-0x0;var _0x5af5d6=_0x92bc[_0x4b34bd];return _0x5af5d6;};'use strict';var _=require(_0xc92b('0x0'));var util=require(_0xc92b('0x1'));var logger=require(_0xc92b('0x2'))('api');var moment=require('moment');var BPromise=require(_0xc92b('0x3'));var rp=require(_0xc92b('0x4'));var fs=require('fs');var path=require(_0xc92b('0x5'));var rimraf=require(_0xc92b('0x6'));var config=require('../../config/environment');var attributes=require(_0xc92b('0x7'));module[_0xc92b('0x8')]=function(_0x3dbb56,_0x51b6e7){return _0x3dbb56['define'](_0xc92b('0x9'),attributes,{'tableName':_0xc92b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c88=['./jscriptyProject.attributes','exports','define','JscriptyProject','jscripty_projects','lodash','../../config/logger','api','moment','path','rimraf','../../config/environment'];(function(_0x32084f,_0x28fc38){var _0x187302=function(_0x481c2b){while(--_0x481c2b){_0x32084f['push'](_0x32084f['shift']());}};_0x187302(++_0x28fc38);}(_0x1c88,0x1a9));var _0x81c8=function(_0x31db70,_0x62d245){_0x31db70=_0x31db70-0x0;var _0x5623a4=_0x1c88[_0x31db70];return _0x5623a4;};'use strict';var _=require(_0x81c8('0x0'));var util=require('util');var logger=require(_0x81c8('0x1'))(_0x81c8('0x2'));var moment=require(_0x81c8('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x81c8('0x4'));var rimraf=require(_0x81c8('0x5'));var config=require(_0x81c8('0x6'));var attributes=require(_0x81c8('0x7'));module[_0x81c8('0x8')]=function(_0x3e5721,_0x3f4e27){return _0x3e5721[_0x81c8('0x9')](_0x81c8('0xa'),attributes,{'tableName':_0x81c8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1954e88..e17aeff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['rpc','../../config/environment','http','request','info','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','JscriptyProject,\x20%s,\x20%s','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x2c76d0,_0x6dd97d){var _0x20cd0a=function(_0x13ff34){while(--_0x13ff34){_0x2c76d0['push'](_0x2c76d0['shift']());}};_0x20cd0a(++_0x6dd97d);}(_0xb43b,0x1b2));var _0xbb43=function(_0x552956,_0x4a18d6){_0x552956=_0x552956-0x0;var _0x2b0623=_0xb43b[_0x552956];return _0x2b0623;};'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')]('JscriptyProject,\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')]('JscriptyProject,\x20%s,\x20%s',_0x80fe61,_0x208c2b['error'][_0xbb43('0x12')]);return _0x29ae1a(_0x208c2b['error']['message']);}logger[_0xbb43('0x10')]('JscriptyProject,\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
+var _0xbdb7=['request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','info','JscriptyProject,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x38d9cb,_0x30654d){_0x38d9cb=_0x38d9cb-0x0;var _0x15102a=_0xbdb7[_0x38d9cb];return _0x15102a;};'use strict';var _=require(_0x7bdb('0x0'));var util=require(_0x7bdb('0x1'));var moment=require(_0x7bdb('0x2'));var BPromise=require(_0x7bdb('0x3'));var rs=require(_0x7bdb('0x4'));var fs=require('fs');var Redis=require(_0x7bdb('0x5'));var db=require(_0x7bdb('0x6'))['db'];var utils=require(_0x7bdb('0x7'));var logger=require(_0x7bdb('0x8'))('rpc');var config=require(_0x7bdb('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7bdb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1e23a3,_0x493bde,_0x513cba){return new BPromise(function(_0x468041,_0x11a877){return client['request'](_0x1e23a3,_0x513cba)['then'](function(_0xdc2ffc){logger[_0x7bdb('0xb')](_0x7bdb('0xc'),_0x493bde,_0x7bdb('0xd'));logger[_0x7bdb('0xe')](_0x7bdb('0xf'),_0x493bde,_0x7bdb('0xd'),JSON[_0x7bdb('0x10')](_0xdc2ffc));if(_0xdc2ffc['error']){if(_0xdc2ffc['error']['code']===0x1f4){logger[_0x7bdb('0x11')](_0x7bdb('0xc'),_0x493bde,_0xdc2ffc['error'][_0x7bdb('0x12')]);return _0x11a877(_0xdc2ffc['error']['message']);}logger[_0x7bdb('0x11')](_0x7bdb('0xc'),_0x493bde,_0xdc2ffc['error']['message']);return _0x468041(_0xdc2ffc['error'][_0x7bdb('0x12')]);}else{logger[_0x7bdb('0xb')](_0x7bdb('0xc'),_0x493bde,_0x7bdb('0xd'));_0x468041(_0xdc2ffc[_0x7bdb('0x13')][_0x7bdb('0x12')]);}})[_0x7bdb('0x14')](function(_0x1b2d9b){logger['error'](_0x7bdb('0xc'),_0x493bde,_0x1b2d9b);_0x11a877(_0x1b2d9b);});});}
\ No newline at end of file
index c59b348..9ec1b15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4711=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./jscriptyQuestionReport.controller','isAuthenticated','index','get','/describe','/:id','show'];(function(_0x2edb2d,_0x54d1ea){var _0xa46db7=function(_0x30a65d){while(--_0x30a65d){_0x2edb2d['push'](_0x2edb2d['shift']());}};_0xa46db7(++_0x54d1ea);}(_0x4711,0xad));var _0x1471=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4711[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x1471('0x0'));var util=require(_0x1471('0x1'));var path=require(_0x1471('0x2'));var timeout=require(_0x1471('0x3'));var express=require(_0x1471('0x4'));var router=express[_0x1471('0x5')]();var fs_extra=require(_0x1471('0x6'));var auth=require(_0x1471('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x1471('0x8'));var controller=require(_0x1471('0x9'));router['get']('/',auth[_0x1471('0xa')](),controller[_0x1471('0xb')]);router[_0x1471('0xc')](_0x1471('0xd'),auth[_0x1471('0xa')](),controller['describe']);router[_0x1471('0xc')](_0x1471('0xe'),auth[_0x1471('0xa')](),controller[_0x1471('0xf')]);router['post']('/',auth[_0x1471('0xa')](),controller['create']);router[_0x1471('0x10')](_0x1471('0xe'),auth[_0x1471('0xa')](),controller[_0x1471('0x11')]);router[_0x1471('0x12')](_0x1471('0xe'),auth[_0x1471('0xa')](),controller[_0x1471('0x13')]);module[_0x1471('0x14')]=router;
\ No newline at end of file
+var _0xc443=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','show','post','create','/:id'];(function(_0x2aea9e,_0x1f587f){var _0x430b92=function(_0x416c37){while(--_0x416c37){_0x2aea9e['push'](_0x2aea9e['shift']());}};_0x430b92(++_0x1f587f);}(_0xc443,0xb4));var _0x3c44=function(_0x8e564d,_0x2c04c3){_0x8e564d=_0x8e564d-0x0;var _0x244ac0=_0xc443[_0x8e564d];return _0x244ac0;};'use strict';var multer=require(_0x3c44('0x0'));var util=require(_0x3c44('0x1'));var path=require(_0x3c44('0x2'));var timeout=require(_0x3c44('0x3'));var express=require(_0x3c44('0x4'));var router=express[_0x3c44('0x5')]();var fs_extra=require(_0x3c44('0x6'));var auth=require(_0x3c44('0x7'));var interaction=require(_0x3c44('0x8'));var config=require(_0x3c44('0x9'));var controller=require('./jscriptyQuestionReport.controller');router[_0x3c44('0xa')]('/',auth[_0x3c44('0xb')](),controller[_0x3c44('0xc')]);router[_0x3c44('0xa')]('/describe',auth[_0x3c44('0xb')](),controller[_0x3c44('0xd')]);router[_0x3c44('0xa')]('/:id',auth[_0x3c44('0xb')](),controller[_0x3c44('0xe')]);router[_0x3c44('0xf')]('/',auth['isAuthenticated'](),controller[_0x3c44('0x10')]);router['put'](_0x3c44('0x11'),auth['isAuthenticated'](),controller[_0x3c44('0x12')]);router[_0x3c44('0x13')]('/:id',auth[_0x3c44('0xb')](),controller[_0x3c44('0x14')]);module[_0x3c44('0x15')]=router;
\ No newline at end of file
index 3019caa..94e2cc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x7a54,0x106));var _0x47a5=function(_0xdb5382,_0x44972a){_0xdb5382=_0xdb5382-0x0;var _0xc469c8=_0x7a54[_0xdb5382];return _0xc469c8;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0x7a54,0x106));var _0x47a5=function(_0x2baaf7,_0x4cdd0d){_0x2baaf7=_0x2baaf7-0x0;var _0x2a84fa=_0x7a54[_0x2baaf7];return _0x2a84fa;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
index 4101a14..cc5537a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x381b=['request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','sendStatus','error','stack','name','send','index','map','JscriptyQuestionReport','rawAttributes','fieldName','type','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','keys','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x21140e,_0x5d3c73){var _0x5d6eff=function(_0x3d1ae0){while(--_0x3d1ae0){_0x21140e['push'](_0x21140e['shift']());}};_0x5d6eff(++_0x5d3c73);}(_0x381b,0x134));var _0xb381=function(_0x13b796,_0x19507b){_0x13b796=_0x13b796-0x0;var _0x54757d=_0x381b[_0x13b796];return _0x54757d;};'use strict';var emlformat=require(_0xb381('0x0'));var rimraf=require(_0xb381('0x1'));var zipdir=require(_0xb381('0x2'));var jsonpatch=require(_0xb381('0x3'));var rp=require(_0xb381('0x4'));var moment=require(_0xb381('0x5'));var BPromise=require(_0xb381('0x6'));var Mustache=require(_0xb381('0x7'));var util=require('util');var path=require(_0xb381('0x8'));var sox=require(_0xb381('0x9'));var csv=require(_0xb381('0xa'));var ejs=require(_0xb381('0xb'));var fs=require('fs');var fs_extra=require(_0xb381('0xc'));var _=require('lodash');var squel=require(_0xb381('0xd'));var crypto=require(_0xb381('0xe'));var jsforce=require(_0xb381('0xf'));var deskjs=require(_0xb381('0x10'));var toCsv=require('to-csv');var querystring=require(_0xb381('0x11'));var Papa=require(_0xb381('0x12'));var Redis=require(_0xb381('0x13'));var authService=require(_0xb381('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xb381('0x15'));var hardwareService=require(_0xb381('0x16'));var logger=require(_0xb381('0x17'))('api');var utils=require(_0xb381('0x18'));var config=require(_0xb381('0x19'));var licenseUtil=require(_0xb381('0x1a'));var db=require(_0xb381('0x1b'))['db'];function respondWithStatusCode(_0x18452c,_0x3e1428){_0x3e1428=_0x3e1428||0xcc;return function(_0x17774b){if(_0x17774b){return _0x18452c['sendStatus'](_0x3e1428);}return _0x18452c['status'](_0x3e1428)['end']();};}function respondWithResult(_0x498b0f,_0x43a8af){_0x43a8af=_0x43a8af||0xc8;return function(_0x47f676){if(_0x47f676){return _0x498b0f[_0xb381('0x1c')](_0x43a8af)[_0xb381('0x1d')](_0x47f676);}};}function respondWithFilteredResult(_0x9ce2f5,_0x5aa3ff){return function(_0x56df65){if(_0x56df65){var _0xe16974=typeof _0x5aa3ff[_0xb381('0x1e')]===_0xb381('0x1f')&&typeof _0x5aa3ff[_0xb381('0x20')]===_0xb381('0x1f');var _0x3db290=_0x56df65[_0xb381('0x21')];var _0x53a4fd=_0xe16974?0x0:_0x5aa3ff[_0xb381('0x1e')];var _0x4d12fb=_0xe16974?_0x56df65[_0xb381('0x21')]:_0x5aa3ff[_0xb381('0x1e')]+_0x5aa3ff[_0xb381('0x20')];var _0x932cf4;if(_0x4d12fb>=_0x3db290){_0x4d12fb=_0x3db290;_0x932cf4=0xc8;}else{_0x932cf4=0xce;}_0x9ce2f5[_0xb381('0x1c')](_0x932cf4);return _0x9ce2f5[_0xb381('0x22')](_0xb381('0x23'),_0x53a4fd+'-'+_0x4d12fb+'/'+_0x3db290)[_0xb381('0x1d')](_0x56df65);}return null;};}function patchUpdates(_0x277b98){return function(_0x40709d){try{jsonpatch[_0xb381('0x24')](_0x40709d,_0x277b98,!![]);}catch(_0x334e5a){return BPromise['reject'](_0x334e5a);}return _0x40709d['save']();};}function saveUpdates(_0x11bb35,_0x421d4b){return function(_0x3b9a67){if(_0x3b9a67){return _0x3b9a67[_0xb381('0x25')](_0x11bb35)[_0xb381('0x26')](function(_0x382dc1){return _0x382dc1;});}return null;};}function removeEntity(_0x10d52d,_0x2ea309){return function(_0xbcccd3){if(_0xbcccd3){return _0xbcccd3[_0xb381('0x27')]()[_0xb381('0x26')](function(){_0x10d52d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xd3801e,_0xbbbf7d){return function(_0x5c5a7f){if(!_0x5c5a7f){_0xd3801e[_0xb381('0x28')](0x194);}return _0x5c5a7f;};}function handleError(_0x519808,_0x416edf){_0x416edf=_0x416edf||0x1f4;return function(_0x4717bf){logger[_0xb381('0x29')](_0x4717bf[_0xb381('0x2a')]);if(_0x4717bf[_0xb381('0x2b')]){delete _0x4717bf[_0xb381('0x2b')];}_0x519808[_0xb381('0x1c')](_0x416edf)[_0xb381('0x2c')](_0x4717bf);};}exports[_0xb381('0x2d')]=function(_0x1b1f53,_0x39f655){var _0x16b2a0={},_0x222a77={},_0x2bbe46={'count':0x0,'rows':[]};var _0x3604f6=_[_0xb381('0x2e')](db[_0xb381('0x2f')][_0xb381('0x30')],function(_0x4ed914){return{'name':_0x4ed914[_0xb381('0x31')],'type':_0x4ed914[_0xb381('0x32')]['key']};});_0x222a77[_0xb381('0x33')]=_[_0xb381('0x2e')](_0x3604f6,_0xb381('0x2b'));_0x222a77[_0xb381('0x34')]=_['keys'](_0x1b1f53[_0xb381('0x34')]);_0x222a77['filters']=_[_0xb381('0x35')](_0x222a77[_0xb381('0x33')],_0x222a77[_0xb381('0x34')]);_0x16b2a0[_0xb381('0x36')]=_[_0xb381('0x35')](_0x222a77[_0xb381('0x33')],qs[_0xb381('0x37')](_0x1b1f53[_0xb381('0x34')][_0xb381('0x37')]));_0x16b2a0[_0xb381('0x36')]=_0x16b2a0['attributes'][_0xb381('0x38')]?_0x16b2a0[_0xb381('0x36')]:_0x222a77['model'];if(!_0x1b1f53[_0xb381('0x34')][_0xb381('0x39')](_0xb381('0x3a'))){_0x16b2a0[_0xb381('0x20')]=qs[_0xb381('0x20')](_0x1b1f53[_0xb381('0x34')][_0xb381('0x20')]);_0x16b2a0[_0xb381('0x1e')]=qs[_0xb381('0x1e')](_0x1b1f53['query']['offset']);}_0x16b2a0[_0xb381('0x3b')]=qs[_0xb381('0x3c')](_0x1b1f53[_0xb381('0x34')][_0xb381('0x3c')]);_0x16b2a0['where']=qs[_0xb381('0x3d')](_[_0xb381('0x3e')](_0x1b1f53[_0xb381('0x34')],_0x222a77['filters']),_0x3604f6);if(_0x1b1f53[_0xb381('0x34')][_0xb381('0x3f')]){_0x16b2a0['where']=_[_0xb381('0x40')](_0x16b2a0['where'],{'$or':_[_0xb381('0x2e')](_0x3604f6,function(_0x22027f){if(_0x22027f[_0xb381('0x32')]!==_0xb381('0x41')){var _0x4e955e={};_0x4e955e[_0x22027f[_0xb381('0x2b')]]={'$like':'%'+_0x1b1f53[_0xb381('0x34')]['filter']+'%'};return _0x4e955e;}})});}_0x16b2a0=_[_0xb381('0x40')]({},_0x16b2a0,_0x1b1f53[_0xb381('0x42')]);var _0x582f85={'where':_0x16b2a0['where']};return db['JscriptyQuestionReport'][_0xb381('0x21')](_0x582f85)['then'](function(_0x50731e){_0x2bbe46[_0xb381('0x21')]=_0x50731e;if(_0x1b1f53[_0xb381('0x34')][_0xb381('0x43')]){_0x16b2a0[_0xb381('0x44')]=[{'all':!![]}];}return db[_0xb381('0x2f')][_0xb381('0x45')](_0x16b2a0);})[_0xb381('0x26')](function(_0x344d61){_0x2bbe46[_0xb381('0x46')]=_0x344d61;return _0x2bbe46;})[_0xb381('0x26')](respondWithFilteredResult(_0x39f655,_0x16b2a0))['catch'](handleError(_0x39f655,null));};exports['show']=function(_0x3e06c3,_0x2aedcc){var _0x291e1b={'raw':!![],'where':{'id':_0x3e06c3[_0xb381('0x47')]['id']}},_0x44c85e={};_0x44c85e['model']=_['keys'](db['JscriptyQuestionReport']['rawAttributes']);_0x44c85e[_0xb381('0x34')]=_[_0xb381('0x48')](_0x3e06c3[_0xb381('0x34')]);_0x44c85e[_0xb381('0x3d')]=_[_0xb381('0x35')](_0x44c85e[_0xb381('0x33')],_0x44c85e[_0xb381('0x34')]);_0x291e1b[_0xb381('0x36')]=_['intersection'](_0x44c85e['model'],qs[_0xb381('0x37')](_0x3e06c3[_0xb381('0x34')]['fields']));_0x291e1b[_0xb381('0x36')]=_0x291e1b[_0xb381('0x36')][_0xb381('0x38')]?_0x291e1b[_0xb381('0x36')]:_0x44c85e[_0xb381('0x33')];if(_0x3e06c3[_0xb381('0x34')][_0xb381('0x43')]){_0x291e1b[_0xb381('0x44')]=[{'all':!![]}];}_0x291e1b=_['merge']({},_0x291e1b,_0x3e06c3[_0xb381('0x42')]);return db[_0xb381('0x2f')][_0xb381('0x49')](_0x291e1b)[_0xb381('0x26')](handleEntityNotFound(_0x2aedcc,null))[_0xb381('0x26')](respondWithResult(_0x2aedcc,null))[_0xb381('0x4a')](handleError(_0x2aedcc,null));};exports[_0xb381('0x4b')]=function(_0x2e745d,_0x3fa5a8){return db['JscriptyQuestionReport'][_0xb381('0x4b')](_0x2e745d[_0xb381('0x4c')],{})[_0xb381('0x26')](respondWithResult(_0x3fa5a8,0xc9))[_0xb381('0x4a')](handleError(_0x3fa5a8,null));};exports[_0xb381('0x25')]=function(_0x1bef62,_0x38ea54){if(_0x1bef62[_0xb381('0x4c')]['id']){delete _0x1bef62[_0xb381('0x4c')]['id'];}return db[_0xb381('0x2f')][_0xb381('0x49')]({'where':{'id':_0x1bef62[_0xb381('0x47')]['id']}})[_0xb381('0x26')](handleEntityNotFound(_0x38ea54,null))[_0xb381('0x26')](saveUpdates(_0x1bef62[_0xb381('0x4c')],null))[_0xb381('0x26')](respondWithResult(_0x38ea54,null))[_0xb381('0x4a')](handleError(_0x38ea54,null));};exports['destroy']=function(_0x212a4d,_0x13f56d){return db[_0xb381('0x2f')][_0xb381('0x49')]({'where':{'id':_0x212a4d[_0xb381('0x47')]['id']}})['then'](handleEntityNotFound(_0x13f56d,null))[_0xb381('0x26')](removeEntity(_0x13f56d,null))[_0xb381('0x4a')](handleError(_0x13f56d,null));};exports[_0xb381('0x4d')]=function(_0x48ad07,_0x3fad62){return db[_0xb381('0x2f')][_0xb381('0x4d')]()[_0xb381('0x26')](respondWithResult(_0x3fad62,null))[_0xb381('0x4a')](handleError(_0x3fad62,null));};
\ No newline at end of file
+var _0x04f9=['fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','include','rows','catch','show','params','length','includeAll','find','create','body','destroy','describe','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','reject','save','update','then','error','stack','name','send','index','map','JscriptyQuestionReport','rawAttributes'];(function(_0x38b48d,_0x240bd3){var _0x5a0e3f=function(_0x3ac6ec){while(--_0x3ac6ec){_0x38b48d['push'](_0x38b48d['shift']());}};_0x5a0e3f(++_0x240bd3);}(_0x04f9,0xb8));var _0x904f=function(_0x44ad60,_0x47907e){_0x44ad60=_0x44ad60-0x0;var _0x1d574c=_0x04f9[_0x44ad60];return _0x1d574c;};'use strict';var emlformat=require(_0x904f('0x0'));var rimraf=require(_0x904f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x904f('0x2'));var moment=require('moment');var BPromise=require(_0x904f('0x3'));var Mustache=require(_0x904f('0x4'));var util=require(_0x904f('0x5'));var path=require(_0x904f('0x6'));var sox=require(_0x904f('0x7'));var csv=require('to-csv');var ejs=require(_0x904f('0x8'));var fs=require('fs');var fs_extra=require(_0x904f('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x904f('0xa'));var deskjs=require(_0x904f('0xb'));var toCsv=require(_0x904f('0xc'));var querystring=require(_0x904f('0xd'));var Papa=require(_0x904f('0xe'));var Redis=require(_0x904f('0xf'));var authService=require(_0x904f('0x10'));var qs=require(_0x904f('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x904f('0x12'));var logger=require(_0x904f('0x13'))(_0x904f('0x14'));var utils=require(_0x904f('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x904f('0x16'))['db'];function respondWithStatusCode(_0x50780a,_0x49e07e){_0x49e07e=_0x49e07e||0xcc;return function(_0x5b59ec){if(_0x5b59ec){return _0x50780a[_0x904f('0x17')](_0x49e07e);}return _0x50780a[_0x904f('0x18')](_0x49e07e)[_0x904f('0x19')]();};}function respondWithResult(_0x14c396,_0x3f1209){_0x3f1209=_0x3f1209||0xc8;return function(_0x19a9c5){if(_0x19a9c5){return _0x14c396[_0x904f('0x18')](_0x3f1209)[_0x904f('0x1a')](_0x19a9c5);}};}function respondWithFilteredResult(_0x39f56d,_0x472ccd){return function(_0x1e79e8){if(_0x1e79e8){var _0x10c311=typeof _0x472ccd[_0x904f('0x1b')]==='undefined'&&typeof _0x472ccd[_0x904f('0x1c')]===_0x904f('0x1d');var _0x42887d=_0x1e79e8[_0x904f('0x1e')];var _0xb74509=_0x10c311?0x0:_0x472ccd[_0x904f('0x1b')];var _0x5ee2df=_0x10c311?_0x1e79e8[_0x904f('0x1e')]:_0x472ccd['offset']+_0x472ccd[_0x904f('0x1c')];var _0x2a24c1;if(_0x5ee2df>=_0x42887d){_0x5ee2df=_0x42887d;_0x2a24c1=0xc8;}else{_0x2a24c1=0xce;}_0x39f56d[_0x904f('0x18')](_0x2a24c1);return _0x39f56d['set'](_0x904f('0x1f'),_0xb74509+'-'+_0x5ee2df+'/'+_0x42887d)[_0x904f('0x1a')](_0x1e79e8);}return null;};}function patchUpdates(_0x131322){return function(_0x45d438){try{jsonpatch['apply'](_0x45d438,_0x131322,!![]);}catch(_0x385ada){return BPromise[_0x904f('0x20')](_0x385ada);}return _0x45d438[_0x904f('0x21')]();};}function saveUpdates(_0x3f50e1,_0x4bd2ee){return function(_0x195d57){if(_0x195d57){return _0x195d57[_0x904f('0x22')](_0x3f50e1)[_0x904f('0x23')](function(_0x20d048){return _0x20d048;});}return null;};}function removeEntity(_0x4cda98,_0x1a818b){return function(_0x589e21){if(_0x589e21){return _0x589e21['destroy']()['then'](function(){_0x4cda98[_0x904f('0x18')](0xcc)[_0x904f('0x19')]();});}};}function handleEntityNotFound(_0x22290b,_0x4fd883){return function(_0x1fcd93){if(!_0x1fcd93){_0x22290b[_0x904f('0x17')](0x194);}return _0x1fcd93;};}function handleError(_0x24f036,_0x58d020){_0x58d020=_0x58d020||0x1f4;return function(_0x4d8ea5){logger[_0x904f('0x24')](_0x4d8ea5[_0x904f('0x25')]);if(_0x4d8ea5[_0x904f('0x26')]){delete _0x4d8ea5[_0x904f('0x26')];}_0x24f036['status'](_0x58d020)[_0x904f('0x27')](_0x4d8ea5);};}exports[_0x904f('0x28')]=function(_0x4af3c0,_0x2ae1c8){var _0x4db9fc={},_0x1f5d4e={},_0x4724f3={'count':0x0,'rows':[]};var _0x4ec6d5=_[_0x904f('0x29')](db[_0x904f('0x2a')][_0x904f('0x2b')],function(_0x1d89e9){return{'name':_0x1d89e9[_0x904f('0x2c')],'type':_0x1d89e9[_0x904f('0x2d')][_0x904f('0x2e')]};});_0x1f5d4e['model']=_[_0x904f('0x29')](_0x4ec6d5,_0x904f('0x26'));_0x1f5d4e[_0x904f('0x2f')]=_[_0x904f('0x30')](_0x4af3c0[_0x904f('0x2f')]);_0x1f5d4e[_0x904f('0x31')]=_['intersection'](_0x1f5d4e[_0x904f('0x32')],_0x1f5d4e[_0x904f('0x2f')]);_0x4db9fc[_0x904f('0x33')]=_[_0x904f('0x34')](_0x1f5d4e[_0x904f('0x32')],qs[_0x904f('0x35')](_0x4af3c0[_0x904f('0x2f')][_0x904f('0x35')]));_0x4db9fc[_0x904f('0x33')]=_0x4db9fc['attributes']['length']?_0x4db9fc[_0x904f('0x33')]:_0x1f5d4e[_0x904f('0x32')];if(!_0x4af3c0[_0x904f('0x2f')][_0x904f('0x36')](_0x904f('0x37'))){_0x4db9fc[_0x904f('0x1c')]=qs[_0x904f('0x1c')](_0x4af3c0[_0x904f('0x2f')][_0x904f('0x1c')]);_0x4db9fc[_0x904f('0x1b')]=qs[_0x904f('0x1b')](_0x4af3c0[_0x904f('0x2f')][_0x904f('0x1b')]);}_0x4db9fc[_0x904f('0x38')]=qs[_0x904f('0x39')](_0x4af3c0[_0x904f('0x2f')][_0x904f('0x39')]);_0x4db9fc['where']=qs[_0x904f('0x31')](_[_0x904f('0x3a')](_0x4af3c0['query'],_0x1f5d4e[_0x904f('0x31')]),_0x4ec6d5);if(_0x4af3c0[_0x904f('0x2f')][_0x904f('0x3b')]){_0x4db9fc[_0x904f('0x3c')]=_['merge'](_0x4db9fc[_0x904f('0x3c')],{'$or':_[_0x904f('0x29')](_0x4ec6d5,function(_0x38decc){if(_0x38decc[_0x904f('0x2d')]!==_0x904f('0x3d')){var _0x3fb474={};_0x3fb474[_0x38decc[_0x904f('0x26')]]={'$like':'%'+_0x4af3c0[_0x904f('0x2f')][_0x904f('0x3b')]+'%'};return _0x3fb474;}})});}_0x4db9fc=_[_0x904f('0x3e')]({},_0x4db9fc,_0x4af3c0[_0x904f('0x3f')]);var _0xd506e1={'where':_0x4db9fc['where']};return db[_0x904f('0x2a')][_0x904f('0x1e')](_0xd506e1)[_0x904f('0x23')](function(_0x1d3136){_0x4724f3[_0x904f('0x1e')]=_0x1d3136;if(_0x4af3c0['query']['includeAll']){_0x4db9fc[_0x904f('0x40')]=[{'all':!![]}];}return db[_0x904f('0x2a')]['findAll'](_0x4db9fc);})[_0x904f('0x23')](function(_0x5c664e){_0x4724f3[_0x904f('0x41')]=_0x5c664e;return _0x4724f3;})['then'](respondWithFilteredResult(_0x2ae1c8,_0x4db9fc))[_0x904f('0x42')](handleError(_0x2ae1c8,null));};exports[_0x904f('0x43')]=function(_0x163305,_0x10252e){var _0x3b0621={'raw':!![],'where':{'id':_0x163305[_0x904f('0x44')]['id']}},_0x487152={};_0x487152[_0x904f('0x32')]=_['keys'](db['JscriptyQuestionReport'][_0x904f('0x2b')]);_0x487152[_0x904f('0x2f')]=_[_0x904f('0x30')](_0x163305[_0x904f('0x2f')]);_0x487152[_0x904f('0x31')]=_[_0x904f('0x34')](_0x487152[_0x904f('0x32')],_0x487152[_0x904f('0x2f')]);_0x3b0621['attributes']=_[_0x904f('0x34')](_0x487152[_0x904f('0x32')],qs['fields'](_0x163305['query']['fields']));_0x3b0621[_0x904f('0x33')]=_0x3b0621[_0x904f('0x33')][_0x904f('0x45')]?_0x3b0621[_0x904f('0x33')]:_0x487152[_0x904f('0x32')];if(_0x163305['query'][_0x904f('0x46')]){_0x3b0621[_0x904f('0x40')]=[{'all':!![]}];}_0x3b0621=_[_0x904f('0x3e')]({},_0x3b0621,_0x163305[_0x904f('0x3f')]);return db[_0x904f('0x2a')][_0x904f('0x47')](_0x3b0621)['then'](handleEntityNotFound(_0x10252e,null))['then'](respondWithResult(_0x10252e,null))[_0x904f('0x42')](handleError(_0x10252e,null));};exports[_0x904f('0x48')]=function(_0x45b6be,_0x21eb31){return db['JscriptyQuestionReport']['create'](_0x45b6be[_0x904f('0x49')],{})[_0x904f('0x23')](respondWithResult(_0x21eb31,0xc9))[_0x904f('0x42')](handleError(_0x21eb31,null));};exports[_0x904f('0x22')]=function(_0x1b0b72,_0x5cf4f3){if(_0x1b0b72[_0x904f('0x49')]['id']){delete _0x1b0b72[_0x904f('0x49')]['id'];}return db[_0x904f('0x2a')][_0x904f('0x47')]({'where':{'id':_0x1b0b72['params']['id']}})['then'](handleEntityNotFound(_0x5cf4f3,null))[_0x904f('0x23')](saveUpdates(_0x1b0b72['body'],null))[_0x904f('0x23')](respondWithResult(_0x5cf4f3,null))[_0x904f('0x42')](handleError(_0x5cf4f3,null));};exports[_0x904f('0x4a')]=function(_0x5c5f0f,_0x180db6){return db[_0x904f('0x2a')][_0x904f('0x47')]({'where':{'id':_0x5c5f0f[_0x904f('0x44')]['id']}})[_0x904f('0x23')](handleEntityNotFound(_0x180db6,null))['then'](removeEntity(_0x180db6,null))['catch'](handleError(_0x180db6,null));};exports[_0x904f('0x4b')]=function(_0x257a4a,_0x284434){return db[_0x904f('0x2a')]['describe']()['then'](respondWithResult(_0x284434,null))[_0x904f('0x42')](handleError(_0x284434,null));};
\ No newline at end of file
index 122b192..c86751c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6798=['report_jscripty_questions','lodash','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./jscriptyQuestionReport.attributes','define'];(function(_0x9fa8b,_0x14508d){var _0x1da16f=function(_0x25b69c){while(--_0x25b69c){_0x9fa8b['push'](_0x9fa8b['shift']());}};_0x1da16f(++_0x14508d);}(_0x6798,0x12d));var _0x8679=function(_0x6a6034,_0xc389ea){_0x6a6034=_0x6a6034-0x0;var _0x12f23a=_0x6798[_0x6a6034];return _0x12f23a;};'use strict';var _=require(_0x8679('0x0'));var util=require('util');var logger=require(_0x8679('0x1'))(_0x8679('0x2'));var moment=require('moment');var BPromise=require(_0x8679('0x3'));var rp=require(_0x8679('0x4'));var fs=require('fs');var path=require(_0x8679('0x5'));var rimraf=require('rimraf');var config=require(_0x8679('0x6'));var attributes=require(_0x8679('0x7'));module['exports']=function(_0x2e2582,_0x4f4108){return _0x2e2582[_0x8679('0x8')]('JscriptyQuestionReport',attributes,{'tableName':_0x8679('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xae41=['JscriptyQuestionReport','report_jscripty_questions','../../config/logger','api','moment','bluebird','request-promise','path','./jscriptyQuestionReport.attributes'];(function(_0x1d34e3,_0x4f5844){var _0x34266b=function(_0x343260){while(--_0x343260){_0x1d34e3['push'](_0x1d34e3['shift']());}};_0x34266b(++_0x4f5844);}(_0xae41,0x1cd));var _0x1ae4=function(_0x107eee,_0x1718f0){_0x107eee=_0x107eee-0x0;var _0x360bbb=_0xae41[_0x107eee];return _0x360bbb;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1ae4('0x0'))(_0x1ae4('0x1'));var moment=require(_0x1ae4('0x2'));var BPromise=require(_0x1ae4('0x3'));var rp=require(_0x1ae4('0x4'));var fs=require('fs');var path=require(_0x1ae4('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x1ae4('0x6'));module['exports']=function(_0x425b86,_0x537a5b){return _0x425b86['define'](_0x1ae4('0x7'),attributes,{'tableName':_0x1ae4('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2ee2aa4..4d27f76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19a3=['../../mysqldb','../../config/logger','rpc','client','http','request','then','JscriptyQuestionReport,\x20%s,\x20%s','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','request\x20sent','lodash','moment','randomstring','ioredis'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x19a3,0x165));var _0x319a=function(_0x2c5472,_0x4a04c2){_0x2c5472=_0x2c5472-0x0;var _0x4d511c=_0x19a3[_0x2c5472];return _0x4d511c;};'use strict';var _=require(_0x319a('0x0'));var util=require('util');var moment=require(_0x319a('0x1'));var BPromise=require('bluebird');var rs=require(_0x319a('0x2'));var fs=require('fs');var Redis=require(_0x319a('0x3'));var db=require(_0x319a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x319a('0x5'))(_0x319a('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x319a('0x7')][_0x319a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4f9fd2,_0x27318d,_0x405672){return new BPromise(function(_0xdfd29b,_0x46a8da){return client[_0x319a('0x9')](_0x4f9fd2,_0x405672)[_0x319a('0xa')](function(_0xeb32a6){logger['info'](_0x319a('0xb'),_0x27318d,'request\x20sent');logger[_0x319a('0xc')](_0x319a('0xd'),_0x27318d,'request\x20sent',JSON[_0x319a('0xe')](_0xeb32a6));if(_0xeb32a6[_0x319a('0xf')]){if(_0xeb32a6[_0x319a('0xf')]['code']===0x1f4){logger[_0x319a('0xf')](_0x319a('0xb'),_0x27318d,_0xeb32a6[_0x319a('0xf')][_0x319a('0x10')]);return _0x46a8da(_0xeb32a6[_0x319a('0xf')][_0x319a('0x10')]);}logger[_0x319a('0xf')](_0x319a('0xb'),_0x27318d,_0xeb32a6['error'][_0x319a('0x10')]);return _0xdfd29b(_0xeb32a6[_0x319a('0xf')]['message']);}else{logger[_0x319a('0x11')](_0x319a('0xb'),_0x27318d,_0x319a('0x12'));_0xdfd29b(_0xeb32a6['result'][_0x319a('0x10')]);}})['catch'](function(_0x37de6a){logger[_0x319a('0xf')](_0x319a('0xb'),_0x27318d,_0x37de6a);_0x46a8da(_0x37de6a);});});}
\ No newline at end of file
+var _0x3dfd=['../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3dfd,0x136));var _0xd3df=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x3dfd[_0x36c5b0];return _0xf19333;};'use strict';var _=require(_0xd3df('0x0'));var util=require(_0xd3df('0x1'));var moment=require(_0xd3df('0x2'));var BPromise=require(_0xd3df('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd3df('0x4'));var db=require(_0xd3df('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd3df('0x6'))(_0xd3df('0x7'));var config=require('../../config/environment');var jayson=require(_0xd3df('0x8'));var client=jayson[_0xd3df('0x9')][_0xd3df('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x342bc1,_0x413520,_0x5bb96f){return new BPromise(function(_0x191bf3,_0x4fd038){return client[_0xd3df('0xb')](_0x342bc1,_0x5bb96f)['then'](function(_0xf514ed){logger['info'](_0xd3df('0xc'),_0x413520,_0xd3df('0xd'));logger[_0xd3df('0xe')](_0xd3df('0xf'),_0x413520,_0xd3df('0xd'),JSON['stringify'](_0xf514ed));if(_0xf514ed['error']){if(_0xf514ed[_0xd3df('0x10')][_0xd3df('0x11')]===0x1f4){logger[_0xd3df('0x10')](_0xd3df('0xc'),_0x413520,_0xf514ed[_0xd3df('0x10')][_0xd3df('0x12')]);return _0x4fd038(_0xf514ed['error']['message']);}logger[_0xd3df('0x10')](_0xd3df('0xc'),_0x413520,_0xf514ed[_0xd3df('0x10')][_0xd3df('0x12')]);return _0x191bf3(_0xf514ed['error']['message']);}else{logger['info']('JscriptyQuestionReport,\x20%s,\x20%s',_0x413520,'request\x20sent');_0x191bf3(_0xf514ed[_0xd3df('0x13')][_0xd3df('0x12')]);}})[_0xd3df('0x14')](function(_0xea48e4){logger[_0xd3df('0x10')](_0xd3df('0xc'),_0x413520,_0xea48e4);_0x4fd038(_0xea48e4);});});}
\ No newline at end of file
index 9eacbac..c170d0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bca=['get','/describe','describe','show','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptySessionReport.controller','isAuthenticated','index'];(function(_0x47a349,_0x4699d9){var _0x18ab75=function(_0x210796){while(--_0x210796){_0x47a349['push'](_0x47a349['shift']());}};_0x18ab75(++_0x4699d9);}(_0x3bca,0x136));var _0xa3bc=function(_0x5298aa,_0x3d8599){_0x5298aa=_0x5298aa-0x0;var _0x392cc3=_0x3bca[_0x5298aa];return _0x392cc3;};'use strict';var multer=require(_0xa3bc('0x0'));var util=require('util');var path=require(_0xa3bc('0x1'));var timeout=require(_0xa3bc('0x2'));var express=require('express');var router=express[_0xa3bc('0x3')]();var fs_extra=require(_0xa3bc('0x4'));var auth=require(_0xa3bc('0x5'));var interaction=require(_0xa3bc('0x6'));var config=require('../../config/environment');var controller=require(_0xa3bc('0x7'));router['get']('/',auth[_0xa3bc('0x8')](),controller[_0xa3bc('0x9')]);router[_0xa3bc('0xa')](_0xa3bc('0xb'),auth[_0xa3bc('0x8')](),controller[_0xa3bc('0xc')]);router[_0xa3bc('0xa')]('/:id',auth[_0xa3bc('0x8')](),controller[_0xa3bc('0xd')]);router['get']('/:id/questions',auth[_0xa3bc('0x8')](),controller['getQuestions']);router['post']('/',auth[_0xa3bc('0x8')](),controller['create']);router[_0xa3bc('0xe')](_0xa3bc('0xf'),auth[_0xa3bc('0x8')](),controller[_0xa3bc('0x10')]);router[_0xa3bc('0x11')](_0xa3bc('0xf'),auth[_0xa3bc('0x8')](),controller[_0xa3bc('0x12')]);module[_0xa3bc('0x13')]=router;
\ No newline at end of file
+var _0x7c7e=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','isAuthenticated','/describe','describe','get','show','post','create','put','/:id','update','destroy','exports','multer','path'];(function(_0x48f2b7,_0x40f214){var _0x54506f=function(_0x193c0a){while(--_0x193c0a){_0x48f2b7['push'](_0x48f2b7['shift']());}};_0x54506f(++_0x40f214);}(_0x7c7e,0xda));var _0xe7c7=function(_0x3b605f,_0x3c25c9){_0x3b605f=_0x3b605f-0x0;var _0x3446d7=_0x7c7e[_0x3b605f];return _0x3446d7;};'use strict';var multer=require(_0xe7c7('0x0'));var util=require('util');var path=require(_0xe7c7('0x1'));var timeout=require(_0xe7c7('0x2'));var express=require(_0xe7c7('0x3'));var router=express[_0xe7c7('0x4')]();var fs_extra=require(_0xe7c7('0x5'));var auth=require(_0xe7c7('0x6'));var interaction=require(_0xe7c7('0x7'));var config=require(_0xe7c7('0x8'));var controller=require(_0xe7c7('0x9'));router['get']('/',auth[_0xe7c7('0xa')](),controller['index']);router['get'](_0xe7c7('0xb'),auth['isAuthenticated'](),controller[_0xe7c7('0xc')]);router[_0xe7c7('0xd')]('/:id',auth[_0xe7c7('0xa')](),controller[_0xe7c7('0xe')]);router['get']('/:id/questions',auth[_0xe7c7('0xa')](),controller['getQuestions']);router[_0xe7c7('0xf')]('/',auth[_0xe7c7('0xa')](),controller[_0xe7c7('0x10')]);router[_0xe7c7('0x11')](_0xe7c7('0x12'),auth['isAuthenticated'](),controller[_0xe7c7('0x13')]);router['delete'](_0xe7c7('0x12'),auth['isAuthenticated'](),controller[_0xe7c7('0x14')]);module[_0xe7c7('0x15')]=router;
\ No newline at end of file
index 9af7513..0f2c426 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8328=['DATE','STRING','BOOLEAN','moment','setDataValue','starttime','endtime','format'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x8328,0xb3));var _0x8832=function(_0xf8915d,_0x166d7a){_0xf8915d=_0xf8915d-0x0;var _0x1c3ade=_0x8328[_0xf8915d];return _0x1c3ade;};'use strict';var moment=require(_0x8832('0x0'));var Sequelize=require('sequelize');module['exports']={'starttime':{'type':Sequelize['DATE'],'set':function(_0x43db1c){this[_0x8832('0x1')](_0x8832('0x2'),_0x43db1c);this[_0x8832('0x1')](_0x8832('0x3'),moment()[_0x8832('0x4')]('YYYY-MM-DD\x20HH:mm:ss'));}},'endtime':{'type':Sequelize[_0x8832('0x5')]},'membername':{'type':Sequelize[_0x8832('0x6')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x8832('0x6')]},'uniqueid':{'type':Sequelize[_0x8832('0x6')]},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x8832('0x6')]},'completed':{'type':Sequelize[_0x8832('0x7')],'defaultValue':![]}};
\ No newline at end of file
+var _0xc67b=['starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment','exports','DATE','setDataValue'];(function(_0x244862,_0x3da79e){var _0x2bce23=function(_0x235ae5){while(--_0x235ae5){_0x244862['push'](_0x244862['shift']());}};_0x2bce23(++_0x3da79e);}(_0xc67b,0x178));var _0xbc67=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xc67b[_0x13d07a];return _0x5ee0ee;};'use strict';var moment=require(_0xbc67('0x0'));var Sequelize=require('sequelize');module[_0xbc67('0x1')]={'starttime':{'type':Sequelize[_0xbc67('0x2')],'set':function(_0x2e3ba8){this[_0xbc67('0x3')](_0xbc67('0x4'),_0x2e3ba8);this[_0xbc67('0x3')](_0xbc67('0x5'),moment()[_0xbc67('0x6')](_0xbc67('0x7')));}},'endtime':{'type':Sequelize[_0xbc67('0x2')]},'membername':{'type':Sequelize[_0xbc67('0x8')]},'projectname':{'type':Sequelize[_0xbc67('0x8')]},'queue':{'type':Sequelize[_0xbc67('0x8')]},'uniqueid':{'type':Sequelize[_0xbc67('0x8')]},'calleridname':{'type':Sequelize[_0xbc67('0x8')]},'calleridnum':{'type':Sequelize[_0xbc67('0x8')]},'completed':{'type':Sequelize[_0xbc67('0x9')],'defaultValue':![]}};
\ No newline at end of file
index 9cd4fd7..7d3d8d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d78=['find','catch','create','body','destroy','describe','getQuestions','findOne','JscriptyQuestionReport','rawAttributes','nolimit','pick','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','jsforce','../../components/auth/service','../../components/parsers/qs','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','error','name','send','index','fieldName','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','type','VIRTUAL','options','then','includeAll','JscriptySessionReport','findAll','rows','params'];(function(_0x19115e,_0x507bab){var _0x45bbd4=function(_0x1308bf){while(--_0x1308bf){_0x19115e['push'](_0x19115e['shift']());}};_0x45bbd4(++_0x507bab);}(_0x6d78,0x179));var _0x86d7=function(_0x36f641,_0x1a3063){_0x36f641=_0x36f641-0x0;var _0x39b299=_0x6d78[_0x36f641];return _0x39b299;};'use strict';var emlformat=require(_0x86d7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x86d7('0x1'));var jsonpatch=require(_0x86d7('0x2'));var rp=require('request-promise');var moment=require(_0x86d7('0x3'));var BPromise=require(_0x86d7('0x4'));var Mustache=require(_0x86d7('0x5'));var util=require(_0x86d7('0x6'));var path=require(_0x86d7('0x7'));var sox=require(_0x86d7('0x8'));var csv=require(_0x86d7('0x9'));var ejs=require(_0x86d7('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x86d7('0xb'));var crypto=require('crypto');var jsforce=require(_0x86d7('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(_0x86d7('0xd'));var qs=require(_0x86d7('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x86d7('0xf'));var utils=require('../../config/utils');var config=require(_0x86d7('0x10'));var licenseUtil=require(_0x86d7('0x11'));var db=require(_0x86d7('0x12'))['db'];function respondWithStatusCode(_0x41a528,_0x57d8f0){_0x57d8f0=_0x57d8f0||0xcc;return function(_0x1576ea){if(_0x1576ea){return _0x41a528[_0x86d7('0x13')](_0x57d8f0);}return _0x41a528[_0x86d7('0x14')](_0x57d8f0)[_0x86d7('0x15')]();};}function respondWithResult(_0x31844f,_0x1e1e7a){_0x1e1e7a=_0x1e1e7a||0xc8;return function(_0x1e12a6){if(_0x1e12a6){return _0x31844f['status'](_0x1e1e7a)['json'](_0x1e12a6);}};}function respondWithFilteredResult(_0x1ee92d,_0x2579cd){return function(_0x201c73){if(_0x201c73){var _0x5a9130=typeof _0x2579cd[_0x86d7('0x16')]===_0x86d7('0x17')&&typeof _0x2579cd[_0x86d7('0x18')]===_0x86d7('0x17');var _0x47a6c1=_0x201c73[_0x86d7('0x19')];var _0x105f59=_0x5a9130?0x0:_0x2579cd[_0x86d7('0x16')];var _0x4b4386=_0x5a9130?_0x201c73[_0x86d7('0x19')]:_0x2579cd[_0x86d7('0x16')]+_0x2579cd[_0x86d7('0x18')];var _0x19873b;if(_0x4b4386>=_0x47a6c1){_0x4b4386=_0x47a6c1;_0x19873b=0xc8;}else{_0x19873b=0xce;}_0x1ee92d[_0x86d7('0x14')](_0x19873b);return _0x1ee92d[_0x86d7('0x1a')]('Content-Range',_0x105f59+'-'+_0x4b4386+'/'+_0x47a6c1)[_0x86d7('0x1b')](_0x201c73);}return null;};}function patchUpdates(_0x1a353d){return function(_0x1d1fcd){try{jsonpatch[_0x86d7('0x1c')](_0x1d1fcd,_0x1a353d,!![]);}catch(_0x5789a5){return BPromise[_0x86d7('0x1d')](_0x5789a5);}return _0x1d1fcd[_0x86d7('0x1e')]();};}function saveUpdates(_0x5506d1,_0x47de47){return function(_0x2d7165){if(_0x2d7165){return _0x2d7165[_0x86d7('0x1f')](_0x5506d1)['then'](function(_0x4328e2){return _0x4328e2;});}return null;};}function removeEntity(_0x4e0e67,_0x1e8811){return function(_0x30d3c6){if(_0x30d3c6){return _0x30d3c6['destroy']()['then'](function(){_0x4e0e67[_0x86d7('0x14')](0xcc)[_0x86d7('0x15')]();});}};}function handleEntityNotFound(_0x4c277a,_0x3134a8){return function(_0x1e8e00){if(!_0x1e8e00){_0x4c277a[_0x86d7('0x13')](0x194);}return _0x1e8e00;};}function handleError(_0x3beaf0,_0x8690a7){_0x8690a7=_0x8690a7||0x1f4;return function(_0x4a24e3){logger[_0x86d7('0x20')](_0x4a24e3['stack']);if(_0x4a24e3[_0x86d7('0x21')]){delete _0x4a24e3[_0x86d7('0x21')];}_0x3beaf0[_0x86d7('0x14')](_0x8690a7)[_0x86d7('0x22')](_0x4a24e3);};}exports[_0x86d7('0x23')]=function(_0x324ecb,_0x1b0c7b){var _0xf7e9cb={},_0x583b12={},_0x2109f5={'count':0x0,'rows':[]};var _0x349268=_['map'](db['JscriptySessionReport']['rawAttributes'],function(_0x503648){return{'name':_0x503648[_0x86d7('0x24')],'type':_0x503648['type']['key']};});_0x583b12['model']=_[_0x86d7('0x25')](_0x349268,_0x86d7('0x21'));_0x583b12[_0x86d7('0x26')]=_[_0x86d7('0x27')](_0x324ecb[_0x86d7('0x26')]);_0x583b12[_0x86d7('0x28')]=_[_0x86d7('0x29')](_0x583b12[_0x86d7('0x2a')],_0x583b12[_0x86d7('0x26')]);_0xf7e9cb[_0x86d7('0x2b')]=_['intersection'](_0x583b12[_0x86d7('0x2a')],qs[_0x86d7('0x2c')](_0x324ecb[_0x86d7('0x26')]['fields']));_0xf7e9cb[_0x86d7('0x2b')]=_0xf7e9cb[_0x86d7('0x2b')][_0x86d7('0x2d')]?_0xf7e9cb[_0x86d7('0x2b')]:_0x583b12[_0x86d7('0x2a')];if(!_0x324ecb[_0x86d7('0x26')][_0x86d7('0x2e')]('nolimit')){_0xf7e9cb['limit']=qs[_0x86d7('0x18')](_0x324ecb[_0x86d7('0x26')][_0x86d7('0x18')]);_0xf7e9cb[_0x86d7('0x16')]=qs[_0x86d7('0x16')](_0x324ecb[_0x86d7('0x26')][_0x86d7('0x16')]);}_0xf7e9cb[_0x86d7('0x2f')]=qs[_0x86d7('0x30')](_0x324ecb[_0x86d7('0x26')][_0x86d7('0x30')]);_0xf7e9cb[_0x86d7('0x31')]=qs[_0x86d7('0x28')](_['pick'](_0x324ecb[_0x86d7('0x26')],_0x583b12[_0x86d7('0x28')]),_0x349268);if(_0x324ecb[_0x86d7('0x26')][_0x86d7('0x32')]){_0xf7e9cb[_0x86d7('0x31')]=_[_0x86d7('0x33')](_0xf7e9cb[_0x86d7('0x31')],{'$or':_[_0x86d7('0x25')](_0x349268,function(_0x50a36b){if(_0x50a36b[_0x86d7('0x34')]!==_0x86d7('0x35')){var _0x22b2e5={};_0x22b2e5[_0x50a36b['name']]={'$like':'%'+_0x324ecb[_0x86d7('0x26')][_0x86d7('0x32')]+'%'};return _0x22b2e5;}})});}_0xf7e9cb=_['merge']({},_0xf7e9cb,_0x324ecb[_0x86d7('0x36')]);var _0x518052={'where':_0xf7e9cb[_0x86d7('0x31')]};return db['JscriptySessionReport'][_0x86d7('0x19')](_0x518052)[_0x86d7('0x37')](function(_0x3d240c){_0x2109f5[_0x86d7('0x19')]=_0x3d240c;if(_0x324ecb[_0x86d7('0x26')][_0x86d7('0x38')]){_0xf7e9cb['include']=[{'all':!![]}];}return db[_0x86d7('0x39')][_0x86d7('0x3a')](_0xf7e9cb);})[_0x86d7('0x37')](function(_0x32d502){_0x2109f5[_0x86d7('0x3b')]=_0x32d502;return _0x2109f5;})[_0x86d7('0x37')](respondWithFilteredResult(_0x1b0c7b,_0xf7e9cb))['catch'](handleError(_0x1b0c7b,null));};exports['show']=function(_0x20bcab,_0x344dbe){var _0x278c8b={'raw':!![],'where':{'id':_0x20bcab[_0x86d7('0x3c')]['id']}},_0x483b61={};_0x483b61[_0x86d7('0x2a')]=_[_0x86d7('0x27')](db[_0x86d7('0x39')]['rawAttributes']);_0x483b61[_0x86d7('0x26')]=_['keys'](_0x20bcab[_0x86d7('0x26')]);_0x483b61[_0x86d7('0x28')]=_['intersection'](_0x483b61[_0x86d7('0x2a')],_0x483b61['query']);_0x278c8b[_0x86d7('0x2b')]=_[_0x86d7('0x29')](_0x483b61[_0x86d7('0x2a')],qs[_0x86d7('0x2c')](_0x20bcab[_0x86d7('0x26')][_0x86d7('0x2c')]));_0x278c8b[_0x86d7('0x2b')]=_0x278c8b[_0x86d7('0x2b')][_0x86d7('0x2d')]?_0x278c8b[_0x86d7('0x2b')]:_0x483b61[_0x86d7('0x2a')];if(_0x20bcab['query'][_0x86d7('0x38')]){_0x278c8b['include']=[{'all':!![]}];}_0x278c8b=_[_0x86d7('0x33')]({},_0x278c8b,_0x20bcab[_0x86d7('0x36')]);return db[_0x86d7('0x39')][_0x86d7('0x3d')](_0x278c8b)[_0x86d7('0x37')](handleEntityNotFound(_0x344dbe,null))[_0x86d7('0x37')](respondWithResult(_0x344dbe,null))[_0x86d7('0x3e')](handleError(_0x344dbe,null));};exports[_0x86d7('0x3f')]=function(_0xab3c87,_0x5a2eab){return db['JscriptySessionReport']['create'](_0xab3c87[_0x86d7('0x40')],{})[_0x86d7('0x37')](respondWithResult(_0x5a2eab,0xc9))['catch'](handleError(_0x5a2eab,null));};exports[_0x86d7('0x1f')]=function(_0x1d2493,_0x348df2){if(_0x1d2493['body']['id']){delete _0x1d2493[_0x86d7('0x40')]['id'];}return db['JscriptySessionReport'][_0x86d7('0x3d')]({'where':{'id':_0x1d2493[_0x86d7('0x3c')]['id']}})['then'](handleEntityNotFound(_0x348df2,null))[_0x86d7('0x37')](saveUpdates(_0x1d2493[_0x86d7('0x40')],null))['then'](respondWithResult(_0x348df2,null))['catch'](handleError(_0x348df2,null));};exports[_0x86d7('0x41')]=function(_0x58fd7b,_0x3fbf45){return db[_0x86d7('0x39')][_0x86d7('0x3d')]({'where':{'id':_0x58fd7b[_0x86d7('0x3c')]['id']}})[_0x86d7('0x37')](handleEntityNotFound(_0x3fbf45,null))[_0x86d7('0x37')](removeEntity(_0x3fbf45,null))[_0x86d7('0x3e')](handleError(_0x3fbf45,null));};exports[_0x86d7('0x42')]=function(_0xb3bd5a,_0x1e73da){return db[_0x86d7('0x39')]['describe']()[_0x86d7('0x37')](respondWithResult(_0x1e73da,null))['catch'](handleError(_0x1e73da,null));};exports[_0x86d7('0x43')]=function(_0x753cc,_0x592636,_0x140167){var _0x317a0a={'raw':!![],'where':{}};var _0x48b7a0={};var _0x2af4c7={'count':0x0,'rows':[]};return db[_0x86d7('0x39')][_0x86d7('0x44')]({'where':{'id':_0x753cc[_0x86d7('0x3c')]['id']}})[_0x86d7('0x37')](handleEntityNotFound(_0x592636,null))[_0x86d7('0x37')](function(_0x583c03){if(_0x583c03){_0x48b7a0[_0x86d7('0x2a')]=_['keys'](db[_0x86d7('0x45')][_0x86d7('0x46')]);_0x48b7a0[_0x86d7('0x26')]=_[_0x86d7('0x27')](_0x753cc[_0x86d7('0x26')]);_0x48b7a0[_0x86d7('0x28')]=_[_0x86d7('0x29')](_0x48b7a0['model'],_0x48b7a0[_0x86d7('0x26')]);_0x317a0a[_0x86d7('0x2b')]=_[_0x86d7('0x29')](_0x48b7a0['model'],qs[_0x86d7('0x2c')](_0x753cc[_0x86d7('0x26')][_0x86d7('0x2c')]));_0x317a0a[_0x86d7('0x2b')]=_0x317a0a['attributes']['length']?_0x317a0a[_0x86d7('0x2b')]:_0x48b7a0['model'];if(!_0x753cc['query']['hasOwnProperty'](_0x86d7('0x47'))){_0x317a0a[_0x86d7('0x18')]=qs[_0x86d7('0x18')](_0x753cc[_0x86d7('0x26')]['limit']);_0x317a0a[_0x86d7('0x16')]=qs[_0x86d7('0x16')](_0x753cc[_0x86d7('0x26')][_0x86d7('0x16')]);}_0x317a0a['order']=qs[_0x86d7('0x30')](_0x753cc[_0x86d7('0x26')][_0x86d7('0x30')]);_0x317a0a['where']=qs[_0x86d7('0x28')](_[_0x86d7('0x48')](_0x753cc[_0x86d7('0x26')],_0x48b7a0[_0x86d7('0x28')]));_0x317a0a['where']['SessionId']=_0x583c03['id'];if(_0x753cc[_0x86d7('0x26')][_0x86d7('0x32')]){_0x317a0a[_0x86d7('0x31')]=_['merge'](_0x317a0a['where'],{'$or':_[_0x86d7('0x25')](_0x317a0a[_0x86d7('0x2b')],function(_0x8524ba){var _0x1074a8={};_0x1074a8[_0x8524ba]={'$like':'%'+_0x753cc[_0x86d7('0x26')][_0x86d7('0x32')]+'%'};return _0x1074a8;})});}_0x317a0a=_[_0x86d7('0x33')]({},_0x317a0a,_0x753cc[_0x86d7('0x36')]);return db[_0x86d7('0x45')][_0x86d7('0x19')]({'where':_0x317a0a[_0x86d7('0x31')]})[_0x86d7('0x37')](function(_0x4e7ecb){_0x2af4c7[_0x86d7('0x19')]=_0x4e7ecb;if(_0x753cc['query'][_0x86d7('0x38')]){_0x317a0a['include']=[{'all':!![]}];}return db['JscriptyQuestionReport']['findAll'](_0x317a0a);})['then'](function(_0x255e96){_0x2af4c7[_0x86d7('0x3b')]=_0x255e96;return _0x2af4c7;});}})[_0x86d7('0x37')](respondWithFilteredResult(_0x592636,_0x317a0a))[_0x86d7('0x3e')](handleError(_0x592636,null));};
\ No newline at end of file
+var _0x4942=['merge','options','includeAll','include','findAll','rows','params','keys','find','catch','create','body','describe','getQuestions','findOne','rawAttributes','hasOwnProperty','nolimit','SessionId','JscriptyQuestionReport','fast-json-patch','mustache','util','path','sox','fs-extra','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','map','JscriptySessionReport','type','key','model','query','filters','intersection','attributes','fields','length','order','sort','where','pick','filter'];(function(_0x2b5bab,_0x2018e1){var _0x243b04=function(_0x3b880f){while(--_0x3b880f){_0x2b5bab['push'](_0x2b5bab['shift']());}};_0x243b04(++_0x2018e1);}(_0x4942,0xa6));var _0x2494=function(_0x2f03e4,_0x4d2c08){_0x2f03e4=_0x2f03e4-0x0;var _0x59472e=_0x4942[_0x2f03e4];return _0x59472e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2494('0x0'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x2494('0x1'));var util=require(_0x2494('0x2'));var path=require(_0x2494('0x3'));var sox=require(_0x2494('0x4'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2494('0x5'));var _=require('lodash');var squel=require(_0x2494('0x6'));var crypto=require('crypto');var jsforce=require(_0x2494('0x7'));var deskjs=require(_0x2494('0x8'));var toCsv=require(_0x2494('0x9'));var querystring=require(_0x2494('0xa'));var Papa=require(_0x2494('0xb'));var Redis=require(_0x2494('0xc'));var authService=require(_0x2494('0xd'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x2494('0xe'))(_0x2494('0xf'));var utils=require(_0x2494('0x10'));var config=require(_0x2494('0x11'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4cb0a8,_0xd91b5c){_0xd91b5c=_0xd91b5c||0xcc;return function(_0x6e0bfa){if(_0x6e0bfa){return _0x4cb0a8['sendStatus'](_0xd91b5c);}return _0x4cb0a8[_0x2494('0x12')](_0xd91b5c)[_0x2494('0x13')]();};}function respondWithResult(_0x32d811,_0x53e5b8){_0x53e5b8=_0x53e5b8||0xc8;return function(_0x5f2bf2){if(_0x5f2bf2){return _0x32d811[_0x2494('0x12')](_0x53e5b8)[_0x2494('0x14')](_0x5f2bf2);}};}function respondWithFilteredResult(_0x3865c1,_0x6cdca3){return function(_0x157efd){if(_0x157efd){var _0x2616f5=typeof _0x6cdca3[_0x2494('0x15')]===_0x2494('0x16')&&typeof _0x6cdca3[_0x2494('0x17')]===_0x2494('0x16');var _0x13b65d=_0x157efd['count'];var _0x1670a0=_0x2616f5?0x0:_0x6cdca3[_0x2494('0x15')];var _0x33488b=_0x2616f5?_0x157efd[_0x2494('0x18')]:_0x6cdca3['offset']+_0x6cdca3[_0x2494('0x17')];var _0x242233;if(_0x33488b>=_0x13b65d){_0x33488b=_0x13b65d;_0x242233=0xc8;}else{_0x242233=0xce;}_0x3865c1[_0x2494('0x12')](_0x242233);return _0x3865c1[_0x2494('0x19')](_0x2494('0x1a'),_0x1670a0+'-'+_0x33488b+'/'+_0x13b65d)[_0x2494('0x14')](_0x157efd);}return null;};}function patchUpdates(_0x26e42c){return function(_0x2e5cdb){try{jsonpatch[_0x2494('0x1b')](_0x2e5cdb,_0x26e42c,!![]);}catch(_0x19f39b){return BPromise[_0x2494('0x1c')](_0x19f39b);}return _0x2e5cdb[_0x2494('0x1d')]();};}function saveUpdates(_0xfe7da3,_0x89e72c){return function(_0xb194c1){if(_0xb194c1){return _0xb194c1[_0x2494('0x1e')](_0xfe7da3)[_0x2494('0x1f')](function(_0x265caa){return _0x265caa;});}return null;};}function removeEntity(_0x4f5a4a,_0x19fcc2){return function(_0x18f438){if(_0x18f438){return _0x18f438[_0x2494('0x20')]()[_0x2494('0x1f')](function(){_0x4f5a4a[_0x2494('0x12')](0xcc)['end']();});}};}function handleEntityNotFound(_0x206154,_0xa626a3){return function(_0x30e4f2){if(!_0x30e4f2){_0x206154[_0x2494('0x21')](0x194);}return _0x30e4f2;};}function handleError(_0x577146,_0x45cfa5){_0x45cfa5=_0x45cfa5||0x1f4;return function(_0x1fd237){logger[_0x2494('0x22')](_0x1fd237[_0x2494('0x23')]);if(_0x1fd237[_0x2494('0x24')]){delete _0x1fd237[_0x2494('0x24')];}_0x577146['status'](_0x45cfa5)['send'](_0x1fd237);};}exports['index']=function(_0x814667,_0x243243){var _0x4e14ef={},_0x4f8c30={},_0x53f056={'count':0x0,'rows':[]};var _0x5ad199=_[_0x2494('0x25')](db[_0x2494('0x26')]['rawAttributes'],function(_0x3a8be9){return{'name':_0x3a8be9['fieldName'],'type':_0x3a8be9[_0x2494('0x27')][_0x2494('0x28')]};});_0x4f8c30[_0x2494('0x29')]=_[_0x2494('0x25')](_0x5ad199,'name');_0x4f8c30[_0x2494('0x2a')]=_['keys'](_0x814667[_0x2494('0x2a')]);_0x4f8c30[_0x2494('0x2b')]=_[_0x2494('0x2c')](_0x4f8c30[_0x2494('0x29')],_0x4f8c30[_0x2494('0x2a')]);_0x4e14ef[_0x2494('0x2d')]=_[_0x2494('0x2c')](_0x4f8c30[_0x2494('0x29')],qs['fields'](_0x814667[_0x2494('0x2a')][_0x2494('0x2e')]));_0x4e14ef[_0x2494('0x2d')]=_0x4e14ef[_0x2494('0x2d')][_0x2494('0x2f')]?_0x4e14ef[_0x2494('0x2d')]:_0x4f8c30[_0x2494('0x29')];if(!_0x814667['query']['hasOwnProperty']('nolimit')){_0x4e14ef[_0x2494('0x17')]=qs[_0x2494('0x17')](_0x814667[_0x2494('0x2a')]['limit']);_0x4e14ef[_0x2494('0x15')]=qs[_0x2494('0x15')](_0x814667[_0x2494('0x2a')][_0x2494('0x15')]);}_0x4e14ef[_0x2494('0x30')]=qs[_0x2494('0x31')](_0x814667[_0x2494('0x2a')][_0x2494('0x31')]);_0x4e14ef[_0x2494('0x32')]=qs['filters'](_[_0x2494('0x33')](_0x814667[_0x2494('0x2a')],_0x4f8c30['filters']),_0x5ad199);if(_0x814667[_0x2494('0x2a')][_0x2494('0x34')]){_0x4e14ef[_0x2494('0x32')]=_[_0x2494('0x35')](_0x4e14ef[_0x2494('0x32')],{'$or':_[_0x2494('0x25')](_0x5ad199,function(_0x3f85ed){if(_0x3f85ed['type']!=='VIRTUAL'){var _0x32d5cb={};_0x32d5cb[_0x3f85ed[_0x2494('0x24')]]={'$like':'%'+_0x814667[_0x2494('0x2a')][_0x2494('0x34')]+'%'};return _0x32d5cb;}})});}_0x4e14ef=_['merge']({},_0x4e14ef,_0x814667[_0x2494('0x36')]);var _0x22fde8={'where':_0x4e14ef[_0x2494('0x32')]};return db[_0x2494('0x26')][_0x2494('0x18')](_0x22fde8)[_0x2494('0x1f')](function(_0x14b5bd){_0x53f056[_0x2494('0x18')]=_0x14b5bd;if(_0x814667[_0x2494('0x2a')][_0x2494('0x37')]){_0x4e14ef[_0x2494('0x38')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0x2494('0x39')](_0x4e14ef);})['then'](function(_0x3a3a03){_0x53f056[_0x2494('0x3a')]=_0x3a3a03;return _0x53f056;})[_0x2494('0x1f')](respondWithFilteredResult(_0x243243,_0x4e14ef))['catch'](handleError(_0x243243,null));};exports['show']=function(_0x3f165d,_0x31cb23){var _0xf3075={'raw':!![],'where':{'id':_0x3f165d[_0x2494('0x3b')]['id']}},_0x2622d6={};_0x2622d6['model']=_[_0x2494('0x3c')](db[_0x2494('0x26')]['rawAttributes']);_0x2622d6['query']=_[_0x2494('0x3c')](_0x3f165d[_0x2494('0x2a')]);_0x2622d6[_0x2494('0x2b')]=_[_0x2494('0x2c')](_0x2622d6[_0x2494('0x29')],_0x2622d6[_0x2494('0x2a')]);_0xf3075[_0x2494('0x2d')]=_[_0x2494('0x2c')](_0x2622d6[_0x2494('0x29')],qs[_0x2494('0x2e')](_0x3f165d[_0x2494('0x2a')]['fields']));_0xf3075[_0x2494('0x2d')]=_0xf3075['attributes'][_0x2494('0x2f')]?_0xf3075['attributes']:_0x2622d6[_0x2494('0x29')];if(_0x3f165d['query'][_0x2494('0x37')]){_0xf3075[_0x2494('0x38')]=[{'all':!![]}];}_0xf3075=_[_0x2494('0x35')]({},_0xf3075,_0x3f165d[_0x2494('0x36')]);return db[_0x2494('0x26')][_0x2494('0x3d')](_0xf3075)['then'](handleEntityNotFound(_0x31cb23,null))[_0x2494('0x1f')](respondWithResult(_0x31cb23,null))[_0x2494('0x3e')](handleError(_0x31cb23,null));};exports[_0x2494('0x3f')]=function(_0x5b7f02,_0x45e8aa){return db[_0x2494('0x26')]['create'](_0x5b7f02[_0x2494('0x40')],{})[_0x2494('0x1f')](respondWithResult(_0x45e8aa,0xc9))['catch'](handleError(_0x45e8aa,null));};exports[_0x2494('0x1e')]=function(_0x5d3521,_0x5e4af3){if(_0x5d3521[_0x2494('0x40')]['id']){delete _0x5d3521[_0x2494('0x40')]['id'];}return db[_0x2494('0x26')][_0x2494('0x3d')]({'where':{'id':_0x5d3521['params']['id']}})[_0x2494('0x1f')](handleEntityNotFound(_0x5e4af3,null))[_0x2494('0x1f')](saveUpdates(_0x5d3521[_0x2494('0x40')],null))['then'](respondWithResult(_0x5e4af3,null))[_0x2494('0x3e')](handleError(_0x5e4af3,null));};exports['destroy']=function(_0x138609,_0x3ca8eb){return db[_0x2494('0x26')]['find']({'where':{'id':_0x138609[_0x2494('0x3b')]['id']}})[_0x2494('0x1f')](handleEntityNotFound(_0x3ca8eb,null))[_0x2494('0x1f')](removeEntity(_0x3ca8eb,null))[_0x2494('0x3e')](handleError(_0x3ca8eb,null));};exports[_0x2494('0x41')]=function(_0x45de93,_0x473637){return db['JscriptySessionReport']['describe']()[_0x2494('0x1f')](respondWithResult(_0x473637,null))['catch'](handleError(_0x473637,null));};exports[_0x2494('0x42')]=function(_0x261a79,_0xfda1d8,_0xb6efc0){var _0x5a1a2f={'raw':!![],'where':{}};var _0x2501e7={};var _0x156ee6={'count':0x0,'rows':[]};return db['JscriptySessionReport'][_0x2494('0x43')]({'where':{'id':_0x261a79['params']['id']}})['then'](handleEntityNotFound(_0xfda1d8,null))[_0x2494('0x1f')](function(_0x5a865d){if(_0x5a865d){_0x2501e7['model']=_['keys'](db['JscriptyQuestionReport'][_0x2494('0x44')]);_0x2501e7['query']=_['keys'](_0x261a79[_0x2494('0x2a')]);_0x2501e7[_0x2494('0x2b')]=_[_0x2494('0x2c')](_0x2501e7[_0x2494('0x29')],_0x2501e7['query']);_0x5a1a2f['attributes']=_[_0x2494('0x2c')](_0x2501e7[_0x2494('0x29')],qs[_0x2494('0x2e')](_0x261a79['query']['fields']));_0x5a1a2f[_0x2494('0x2d')]=_0x5a1a2f['attributes']['length']?_0x5a1a2f[_0x2494('0x2d')]:_0x2501e7[_0x2494('0x29')];if(!_0x261a79[_0x2494('0x2a')][_0x2494('0x45')](_0x2494('0x46'))){_0x5a1a2f[_0x2494('0x17')]=qs[_0x2494('0x17')](_0x261a79[_0x2494('0x2a')][_0x2494('0x17')]);_0x5a1a2f['offset']=qs[_0x2494('0x15')](_0x261a79['query']['offset']);}_0x5a1a2f[_0x2494('0x30')]=qs['sort'](_0x261a79['query'][_0x2494('0x31')]);_0x5a1a2f[_0x2494('0x32')]=qs[_0x2494('0x2b')](_[_0x2494('0x33')](_0x261a79[_0x2494('0x2a')],_0x2501e7[_0x2494('0x2b')]));_0x5a1a2f[_0x2494('0x32')][_0x2494('0x47')]=_0x5a865d['id'];if(_0x261a79[_0x2494('0x2a')][_0x2494('0x34')]){_0x5a1a2f['where']=_[_0x2494('0x35')](_0x5a1a2f[_0x2494('0x32')],{'$or':_['map'](_0x5a1a2f[_0x2494('0x2d')],function(_0x5c67c3){var _0x39b753={};_0x39b753[_0x5c67c3]={'$like':'%'+_0x261a79[_0x2494('0x2a')][_0x2494('0x34')]+'%'};return _0x39b753;})});}_0x5a1a2f=_[_0x2494('0x35')]({},_0x5a1a2f,_0x261a79[_0x2494('0x36')]);return db[_0x2494('0x48')][_0x2494('0x18')]({'where':_0x5a1a2f[_0x2494('0x32')]})[_0x2494('0x1f')](function(_0x206017){_0x156ee6[_0x2494('0x18')]=_0x206017;if(_0x261a79['query'][_0x2494('0x37')]){_0x5a1a2f[_0x2494('0x38')]=[{'all':!![]}];}return db[_0x2494('0x48')]['findAll'](_0x5a1a2f);})[_0x2494('0x1f')](function(_0x5901f6){_0x156ee6['rows']=_0x5901f6;return _0x156ee6;});}})[_0x2494('0x1f')](respondWithFilteredResult(_0xfda1d8,_0x5a1a2f))[_0x2494('0x3e')](handleError(_0xfda1d8,null));};
\ No newline at end of file
index 4e9a1de..11c2314 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1c=['exports','JscriptySessionReport','report_jscripty_sessions','lodash','util','request-promise','path','rimraf','./jscriptySessionReport.attributes'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xed1c,0xe4));var _0xced1=function(_0x59612b,_0x182e66){_0x59612b=_0x59612b-0x0;var _0x26b911=_0xed1c[_0x59612b];return _0x26b911;};'use strict';var _=require(_0xced1('0x0'));var util=require(_0xced1('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xced1('0x2'));var fs=require('fs');var path=require(_0xced1('0x3'));var rimraf=require(_0xced1('0x4'));var config=require('../../config/environment');var attributes=require(_0xced1('0x5'));module[_0xced1('0x6')]=function(_0x466657,_0x37b22b){return _0x466657['define'](_0xced1('0x7'),attributes,{'tableName':_0xced1('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2675=['lodash','moment','bluebird','path','rimraf','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport'];(function(_0x2e561f,_0x1b1660){var _0x4160ea=function(_0x1fa2ca){while(--_0x1fa2ca){_0x2e561f['push'](_0x2e561f['shift']());}};_0x4160ea(++_0x1b1660);}(_0x2675,0x75));var _0x5267=function(_0x1d2252,_0x5b0ce0){_0x1d2252=_0x1d2252-0x0;var _0x3ac18b=_0x2675[_0x1d2252];return _0x3ac18b;};'use strict';var _=require(_0x5267('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x5267('0x1'));var BPromise=require(_0x5267('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5267('0x3'));var rimraf=require(_0x5267('0x4'));var config=require('../../config/environment');var attributes=require(_0x5267('0x5'));module[_0x5267('0x6')]=function(_0x4bd042,_0x10f92c){return _0x4bd042[_0x5267('0x7')](_0x5267('0x8'),attributes,{'tableName':'report_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c8283d0..502aea2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82c4=['randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x45c48f,_0x4aa891){var _0xaf5037=function(_0x3e3c1f){while(--_0x3e3c1f){_0x45c48f['push'](_0x45c48f['shift']());}};_0xaf5037(++_0x4aa891);}(_0x82c4,0x1ca));var _0x482c=function(_0x46a00a,_0x1ebb84){_0x46a00a=_0x46a00a-0x0;var _0x2fc495=_0x82c4[_0x46a00a];return _0x2fc495;};'use strict';var _=require(_0x482c('0x0'));var util=require(_0x482c('0x1'));var moment=require(_0x482c('0x2'));var BPromise=require(_0x482c('0x3'));var rs=require(_0x482c('0x4'));var fs=require('fs');var Redis=require(_0x482c('0x5'));var db=require(_0x482c('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x482c('0x7'))('rpc');var config=require(_0x482c('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x482c('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xfdb92,_0x32a503,_0x35cdab){return new BPromise(function(_0x1c10f2,_0x3846d8){return client['request'](_0xfdb92,_0x35cdab)[_0x482c('0xa')](function(_0x135cc1){logger[_0x482c('0xb')](_0x482c('0xc'),_0x32a503,_0x482c('0xd'));logger[_0x482c('0xe')]('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x32a503,_0x482c('0xd'),JSON[_0x482c('0xf')](_0x135cc1));if(_0x135cc1[_0x482c('0x10')]){if(_0x135cc1['error'][_0x482c('0x11')]===0x1f4){logger[_0x482c('0x10')](_0x482c('0xc'),_0x32a503,_0x135cc1['error']['message']);return _0x3846d8(_0x135cc1[_0x482c('0x10')][_0x482c('0x12')]);}logger['error']('JscriptySessionReport,\x20%s,\x20%s',_0x32a503,_0x135cc1[_0x482c('0x10')][_0x482c('0x12')]);return _0x1c10f2(_0x135cc1[_0x482c('0x10')][_0x482c('0x12')]);}else{logger[_0x482c('0xb')](_0x482c('0xc'),_0x32a503,_0x482c('0xd'));_0x1c10f2(_0x135cc1[_0x482c('0x13')][_0x482c('0x12')]);}})[_0x482c('0x14')](function(_0x363403){logger[_0x482c('0x10')]('JscriptySessionReport,\x20%s,\x20%s',_0x32a503,_0x363403);_0x3846d8(_0x363403);});});}
\ No newline at end of file
+var _0xc1c6=['lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','then','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch'];(function(_0x52fdf8,_0x21fdfa){var _0x3a3711=function(_0x4abc4d){while(--_0x4abc4d){_0x52fdf8['push'](_0x52fdf8['shift']());}};_0x3a3711(++_0x21fdfa);}(_0xc1c6,0xf7));var _0x6c1c=function(_0x12320e,_0x45cdf5){_0x12320e=_0x12320e-0x0;var _0xf91c44=_0xc1c6[_0x12320e];return _0xf91c44;};'use strict';var _=require(_0x6c1c('0x0'));var util=require(_0x6c1c('0x1'));var moment=require(_0x6c1c('0x2'));var BPromise=require('bluebird');var rs=require(_0x6c1c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6c1c('0x4'))['db'];var utils=require(_0x6c1c('0x5'));var logger=require(_0x6c1c('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6c1c('0x7'));var client=jayson['client'][_0x6c1c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x582bec,_0xe510ca,_0x2eb1ba){return new BPromise(function(_0x38369d,_0x2cec58){return client['request'](_0x582bec,_0x2eb1ba)[_0x6c1c('0x9')](function(_0x3ca985){logger['info'](_0x6c1c('0xa'),_0xe510ca,_0x6c1c('0xb'));logger[_0x6c1c('0xc')](_0x6c1c('0xd'),_0xe510ca,'request\x20sent',JSON[_0x6c1c('0xe')](_0x3ca985));if(_0x3ca985[_0x6c1c('0xf')]){if(_0x3ca985[_0x6c1c('0xf')]['code']===0x1f4){logger[_0x6c1c('0xf')](_0x6c1c('0xa'),_0xe510ca,_0x3ca985[_0x6c1c('0xf')]['message']);return _0x2cec58(_0x3ca985[_0x6c1c('0xf')]['message']);}logger[_0x6c1c('0xf')](_0x6c1c('0xa'),_0xe510ca,_0x3ca985[_0x6c1c('0xf')][_0x6c1c('0x10')]);return _0x38369d(_0x3ca985[_0x6c1c('0xf')][_0x6c1c('0x10')]);}else{logger[_0x6c1c('0x11')](_0x6c1c('0xa'),_0xe510ca,_0x6c1c('0xb'));_0x38369d(_0x3ca985['result'][_0x6c1c('0x10')]);}})[_0x6c1c('0x12')](function(_0x5214ee){logger[_0x6c1c('0xf')](_0x6c1c('0xa'),_0xe510ca,_0x5214ee);_0x2cec58(_0x5214ee);});});}
\ No newline at end of file
index 9033dea..0881b08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3379=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./license.controller','get','index','put','isAuthenticated','exports','multer','util','path'];(function(_0x4d72b3,_0x208e41){var _0x1a8777=function(_0x59a54b){while(--_0x59a54b){_0x4d72b3['push'](_0x4d72b3['shift']());}};_0x1a8777(++_0x208e41);}(_0x3379,0x115));var _0x9337=function(_0x31fc9e,_0xabf90d){_0x31fc9e=_0x31fc9e-0x0;var _0x7f9da=_0x3379[_0x31fc9e];return _0x7f9da;};'use strict';var multer=require(_0x9337('0x0'));var util=require(_0x9337('0x1'));var path=require(_0x9337('0x2'));var timeout=require(_0x9337('0x3'));var express=require('express');var router=express[_0x9337('0x4')]();var fs_extra=require(_0x9337('0x5'));var auth=require(_0x9337('0x6'));var interaction=require(_0x9337('0x7'));var config=require('../../config/environment');var controller=require(_0x9337('0x8'));router[_0x9337('0x9')]('/',controller[_0x9337('0xa')]);router[_0x9337('0xb')]('/:id',auth[_0x9337('0xc')](),controller['update']);module[_0x9337('0xd')]=router;
\ No newline at end of file
+var _0x5bb7=['get','index','put','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./license.controller'];(function(_0x1c62b3,_0x13130c){var _0x43cce8=function(_0x11dbed){while(--_0x11dbed){_0x1c62b3['push'](_0x1c62b3['shift']());}};_0x43cce8(++_0x13130c);}(_0x5bb7,0x1ee));var _0x75bb=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0x5bb7[_0x3ce3c];return _0x55a2c9;};'use strict';var multer=require(_0x75bb('0x0'));var util=require(_0x75bb('0x1'));var path=require(_0x75bb('0x2'));var timeout=require(_0x75bb('0x3'));var express=require(_0x75bb('0x4'));var router=express[_0x75bb('0x5')]();var fs_extra=require(_0x75bb('0x6'));var auth=require(_0x75bb('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x75bb('0x8'));var controller=require(_0x75bb('0x9'));router[_0x75bb('0xa')]('/',controller[_0x75bb('0xb')]);router[_0x75bb('0xc')]('/:id',auth['isAuthenticated'](),controller['update']);module[_0x75bb('0xd')]=router;
\ No newline at end of file
index f50f6db..e8f6805 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb52=['sequelize','TEXT','STRING','INTEGER'];(function(_0x498dec,_0x305f99){var _0x1abe55=function(_0x5d7b04){while(--_0x5d7b04){_0x498dec['push'](_0x498dec['shift']());}};_0x1abe55(++_0x305f99);}(_0xeb52,0x1ac));var _0x2eb5=function(_0x59ca5c,_0x3cc98d){_0x59ca5c=_0x59ca5c-0x0;var _0x59a251=_0xeb52[_0x59ca5c];return _0x59a251;};'use strict';var Sequelize=require(_0x2eb5('0x0'));module['exports']={'license':{'type':Sequelize[_0x2eb5('0x1')]},'data1':{'type':Sequelize[_0x2eb5('0x2')]},'data2':{'type':Sequelize['STRING']},'chatLicenseExceeded':{'type':Sequelize[_0x2eb5('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2091=['STRING','INTEGER','exports','TEXT'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x2091,0x182));var _0x1209=function(_0x2f3d2e,_0x5650c8){_0x2f3d2e=_0x2f3d2e-0x0;var _0x5af34c=_0x2091[_0x2f3d2e];return _0x5af34c;};'use strict';var Sequelize=require('sequelize');module[_0x1209('0x0')]={'license':{'type':Sequelize[_0x1209('0x1')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0x1209('0x2')]},'chatLicenseExceeded':{'type':Sequelize[_0x1209('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 3c6e1ca..be632d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['status','end','json','limit','count','offset','Content-Range','apply','reject','save','update','then','sendStatus','error','name','send','model','keys','License','rawAttributes','query','intersection','attributes','fields','merge','getLicense','catch','find','get','body','demo','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x356fc5,_0x1592c8){var _0x162c2d=function(_0x5c63a0){while(--_0x5c63a0){_0x356fc5['push'](_0x356fc5['shift']());}};_0x162c2d(++_0x1592c8);}(_0xabce,0x103));var _0xeabc=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xabce[_0x5b78e8];return _0xf2c321;};'use strict';var emlformat=require(_0xeabc('0x0'));var rimraf=require(_0xeabc('0x1'));var zipdir=require(_0xeabc('0x2'));var jsonpatch=require(_0xeabc('0x3'));var rp=require(_0xeabc('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xeabc('0x5'));var util=require(_0xeabc('0x6'));var path=require(_0xeabc('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xeabc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeabc('0x9'));var squel=require('squel');var crypto=require(_0xeabc('0xa'));var jsforce=require(_0xeabc('0xb'));var deskjs=require(_0xeabc('0xc'));var toCsv=require('to-csv');var querystring=require(_0xeabc('0xd'));var Papa=require(_0xeabc('0xe'));var Redis=require(_0xeabc('0xf'));var authService=require(_0xeabc('0x10'));var qs=require(_0xeabc('0x11'));var as=require(_0xeabc('0x12'));var hardwareService=require(_0xeabc('0x13'));var logger=require(_0xeabc('0x14'))(_0xeabc('0x15'));var utils=require(_0xeabc('0x16'));var config=require(_0xeabc('0x17'));var licenseUtil=require(_0xeabc('0x18'));var db=require(_0xeabc('0x19'))['db'];function respondWithStatusCode(_0x3fd0b5,_0x36a92e){_0x36a92e=_0x36a92e||0xcc;return function(_0xcfbf06){if(_0xcfbf06){return _0x3fd0b5['sendStatus'](_0x36a92e);}return _0x3fd0b5[_0xeabc('0x1a')](_0x36a92e)[_0xeabc('0x1b')]();};}function respondWithResult(_0x3251c6,_0x55f0de){_0x55f0de=_0x55f0de||0xc8;return function(_0x5f4ee8){if(_0x5f4ee8){return _0x3251c6[_0xeabc('0x1a')](_0x55f0de)[_0xeabc('0x1c')](_0x5f4ee8);}};}function respondWithFilteredResult(_0x326bac,_0x53d5cb){return function(_0xf913d7){if(_0xf913d7){var _0x638976=typeof _0x53d5cb['offset']==='undefined'&&typeof _0x53d5cb[_0xeabc('0x1d')]==='undefined';var _0x3d0e21=_0xf913d7[_0xeabc('0x1e')];var _0x58a3c0=_0x638976?0x0:_0x53d5cb[_0xeabc('0x1f')];var _0x31dd53=_0x638976?_0xf913d7[_0xeabc('0x1e')]:_0x53d5cb[_0xeabc('0x1f')]+_0x53d5cb[_0xeabc('0x1d')];var _0x5d92e5;if(_0x31dd53>=_0x3d0e21){_0x31dd53=_0x3d0e21;_0x5d92e5=0xc8;}else{_0x5d92e5=0xce;}_0x326bac[_0xeabc('0x1a')](_0x5d92e5);return _0x326bac['set'](_0xeabc('0x20'),_0x58a3c0+'-'+_0x31dd53+'/'+_0x3d0e21)[_0xeabc('0x1c')](_0xf913d7);}return null;};}function patchUpdates(_0x502947){return function(_0x28063a){try{jsonpatch[_0xeabc('0x21')](_0x28063a,_0x502947,!![]);}catch(_0x254590){return BPromise[_0xeabc('0x22')](_0x254590);}return _0x28063a[_0xeabc('0x23')]();};}function saveUpdates(_0x4e99a4,_0xecdbf){return function(_0x10c675){if(_0x10c675){return _0x10c675[_0xeabc('0x24')](_0x4e99a4)['then'](function(_0x457f27){return _0x457f27;});}return null;};}function removeEntity(_0x3854d2,_0x214953){return function(_0x319119){if(_0x319119){return _0x319119['destroy']()[_0xeabc('0x25')](function(){_0x3854d2['status'](0xcc)[_0xeabc('0x1b')]();});}};}function handleEntityNotFound(_0x4d4e29,_0x811f0d){return function(_0x12acbd){if(!_0x12acbd){_0x4d4e29[_0xeabc('0x26')](0x194);}return _0x12acbd;};}function handleError(_0x3f194e,_0x3a1a04){_0x3a1a04=_0x3a1a04||0x1f4;return function(_0x137293){logger[_0xeabc('0x27')](_0x137293['stack']);if(_0x137293['name']){delete _0x137293[_0xeabc('0x28')];}_0x3f194e['status'](_0x3a1a04)[_0xeabc('0x29')](_0x137293);};}var utilLicense=require(_0xeabc('0x18'));exports['index']=function(_0x2163e6,_0x38572d){var _0x2b568f={'raw':!![],'where':{'id':0x1}},_0x2f8633={};_0x2f8633[_0xeabc('0x2a')]=_[_0xeabc('0x2b')](db[_0xeabc('0x2c')][_0xeabc('0x2d')]);_0x2f8633[_0xeabc('0x2e')]=_['keys'](_0x2163e6[_0xeabc('0x2e')]);_0x2f8633['filters']=_[_0xeabc('0x2f')](_0x2f8633[_0xeabc('0x2a')],_0x2f8633[_0xeabc('0x2e')]);_0x2b568f[_0xeabc('0x30')]=_[_0xeabc('0x2f')](_0x2f8633[_0xeabc('0x2a')],qs[_0xeabc('0x31')](_0x2163e6['query'][_0xeabc('0x31')]));_0x2b568f[_0xeabc('0x30')]=_0x2b568f[_0xeabc('0x30')]['length']?_0x2b568f[_0xeabc('0x30')]:_0x2f8633[_0xeabc('0x2a')];_0x2b568f=_[_0xeabc('0x32')]({},_0x2b568f,_0x2163e6['options']);return utilLicense[_0xeabc('0x33')](_0x2b568f)[_0xeabc('0x25')](respondWithResult(_0x38572d,null))[_0xeabc('0x34')](handleError(_0x38572d,null));};exports['update']=function(_0xf98c7c,_0x286203){if(_0xf98c7c['body']['id']){delete _0xf98c7c['body']['id'];}return db[_0xeabc('0x2c')][_0xeabc('0x35')]({'where':{'id':_0xf98c7c['params']['id']}})[_0xeabc('0x25')](handleEntityNotFound(_0x286203,null))[_0xeabc('0x25')](function(_0x3edee7){var _0x10434e=_0x3edee7[_0xeabc('0x36')]({'plain':!![]});return utilLicense['checkLicense'](_0x10434e,_0xf98c7c[_0xeabc('0x37')]['key']);})[_0xeabc('0x25')](function(_0x2bda29){if(!_0x2bda29[_0xeabc('0x38')]){return saveUpdates(_0xf98c7c['body'],null);}return _0x2bda29;})['then'](respondWithResult(_0x286203,null))[_0xeabc('0x34')](handleError(_0x286203,null));};
\ No newline at end of file
+var _0x0295=['demo','eml-format','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','stack','name','send','../../config/license/util','model','keys','rawAttributes','query','filters','intersection','attributes','fields','merge','options','catch','body','License','find','checkLicense','key'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x0295,0x1f0));var _0x5029=function(_0x16b667,_0xadec02){_0x16b667=_0x16b667-0x0;var _0x58620e=_0x0295[_0x16b667];return _0x58620e;};'use strict';var emlformat=require(_0x5029('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5029('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5029('0x2'));var Mustache=require(_0x5029('0x3'));var util=require(_0x5029('0x4'));var path=require(_0x5029('0x5'));var sox=require(_0x5029('0x6'));var csv=require(_0x5029('0x7'));var ejs=require(_0x5029('0x8'));var fs=require('fs');var fs_extra=require(_0x5029('0x9'));var _=require(_0x5029('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5029('0xb'));var toCsv=require('to-csv');var querystring=require(_0x5029('0xc'));var Papa=require('papaparse');var Redis=require(_0x5029('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x5029('0xe'));var as=require(_0x5029('0xf'));var hardwareService=require(_0x5029('0x10'));var logger=require('../../config/logger')(_0x5029('0x11'));var utils=require(_0x5029('0x12'));var config=require(_0x5029('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x5029('0x14'))['db'];function respondWithStatusCode(_0x2442b2,_0x4cced9){_0x4cced9=_0x4cced9||0xcc;return function(_0x4fa22d){if(_0x4fa22d){return _0x2442b2['sendStatus'](_0x4cced9);}return _0x2442b2['status'](_0x4cced9)[_0x5029('0x15')]();};}function respondWithResult(_0x2e0369,_0x12c237){_0x12c237=_0x12c237||0xc8;return function(_0x434630){if(_0x434630){return _0x2e0369[_0x5029('0x16')](_0x12c237)[_0x5029('0x17')](_0x434630);}};}function respondWithFilteredResult(_0xe278b7,_0x317c20){return function(_0x10bf55){if(_0x10bf55){var _0x326923=typeof _0x317c20[_0x5029('0x18')]===_0x5029('0x19')&&typeof _0x317c20[_0x5029('0x1a')]===_0x5029('0x19');var _0x343918=_0x10bf55['count'];var _0x1ed567=_0x326923?0x0:_0x317c20[_0x5029('0x18')];var _0x35de81=_0x326923?_0x10bf55[_0x5029('0x1b')]:_0x317c20[_0x5029('0x18')]+_0x317c20[_0x5029('0x1a')];var _0xaba461;if(_0x35de81>=_0x343918){_0x35de81=_0x343918;_0xaba461=0xc8;}else{_0xaba461=0xce;}_0xe278b7['status'](_0xaba461);return _0xe278b7[_0x5029('0x1c')]('Content-Range',_0x1ed567+'-'+_0x35de81+'/'+_0x343918)[_0x5029('0x17')](_0x10bf55);}return null;};}function patchUpdates(_0x8a414c){return function(_0x2710aa){try{jsonpatch[_0x5029('0x1d')](_0x2710aa,_0x8a414c,!![]);}catch(_0x4b5854){return BPromise['reject'](_0x4b5854);}return _0x2710aa[_0x5029('0x1e')]();};}function saveUpdates(_0x4a49b6,_0x3f657d){return function(_0x853a34){if(_0x853a34){return _0x853a34[_0x5029('0x1f')](_0x4a49b6)[_0x5029('0x20')](function(_0x16bd22){return _0x16bd22;});}return null;};}function removeEntity(_0x3a3e52,_0x125c26){return function(_0x356dac){if(_0x356dac){return _0x356dac[_0x5029('0x21')]()['then'](function(){_0x3a3e52['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x588d90,_0x45666c){return function(_0x51093c){if(!_0x51093c){_0x588d90['sendStatus'](0x194);}return _0x51093c;};}function handleError(_0x181da0,_0x1e7e61){_0x1e7e61=_0x1e7e61||0x1f4;return function(_0x36d810){logger['error'](_0x36d810[_0x5029('0x22')]);if(_0x36d810[_0x5029('0x23')]){delete _0x36d810['name'];}_0x181da0[_0x5029('0x16')](_0x1e7e61)[_0x5029('0x24')](_0x36d810);};}var utilLicense=require(_0x5029('0x25'));exports['index']=function(_0x32da06,_0x251f99){var _0xe5313e={'raw':!![],'where':{'id':0x1}},_0x4b6f92={};_0x4b6f92[_0x5029('0x26')]=_[_0x5029('0x27')](db['License'][_0x5029('0x28')]);_0x4b6f92[_0x5029('0x29')]=_[_0x5029('0x27')](_0x32da06[_0x5029('0x29')]);_0x4b6f92[_0x5029('0x2a')]=_[_0x5029('0x2b')](_0x4b6f92[_0x5029('0x26')],_0x4b6f92[_0x5029('0x29')]);_0xe5313e[_0x5029('0x2c')]=_[_0x5029('0x2b')](_0x4b6f92[_0x5029('0x26')],qs[_0x5029('0x2d')](_0x32da06['query'][_0x5029('0x2d')]));_0xe5313e['attributes']=_0xe5313e[_0x5029('0x2c')]['length']?_0xe5313e['attributes']:_0x4b6f92[_0x5029('0x26')];_0xe5313e=_[_0x5029('0x2e')]({},_0xe5313e,_0x32da06[_0x5029('0x2f')]);return utilLicense['getLicense'](_0xe5313e)[_0x5029('0x20')](respondWithResult(_0x251f99,null))[_0x5029('0x30')](handleError(_0x251f99,null));};exports[_0x5029('0x1f')]=function(_0x29c59a,_0x1bb896){if(_0x29c59a[_0x5029('0x31')]['id']){delete _0x29c59a[_0x5029('0x31')]['id'];}return db[_0x5029('0x32')][_0x5029('0x33')]({'where':{'id':_0x29c59a['params']['id']}})[_0x5029('0x20')](handleEntityNotFound(_0x1bb896,null))[_0x5029('0x20')](function(_0xc110e8){var _0x1b3817=_0xc110e8['get']({'plain':!![]});return utilLicense[_0x5029('0x34')](_0x1b3817,_0x29c59a[_0x5029('0x31')][_0x5029('0x35')]);})['then'](function(_0x4904cc){if(!_0x4904cc[_0x5029('0x36')]){return saveUpdates(_0x29c59a[_0x5029('0x31')],null);}return _0x4904cc;})['then'](respondWithResult(_0x1bb896,null))['catch'](handleError(_0x1bb896,null));};
\ No newline at end of file
index e6e4fa6..c514507 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaff4=['util','../../config/logger','api','moment','bluebird','rimraf','./license.attributes','exports','define','License','license','lodash'];(function(_0x2f46bc,_0x3503de){var _0x3b8cd1=function(_0x500483){while(--_0x500483){_0x2f46bc['push'](_0x2f46bc['shift']());}};_0x3b8cd1(++_0x3503de);}(_0xaff4,0xbf));var _0x4aff=function(_0x142ec2,_0x5bb03d){_0x142ec2=_0x142ec2-0x0;var _0x45ef4e=_0xaff4[_0x142ec2];return _0x45ef4e;};'use strict';var _=require(_0x4aff('0x0'));var util=require(_0x4aff('0x1'));var logger=require(_0x4aff('0x2'))(_0x4aff('0x3'));var moment=require(_0x4aff('0x4'));var BPromise=require(_0x4aff('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4aff('0x6'));var config=require('../../config/environment');var attributes=require(_0x4aff('0x7'));module[_0x4aff('0x8')]=function(_0x4ca394,_0x6ef6b4){return _0x4ca394[_0x4aff('0x9')](_0x4aff('0xa'),attributes,{'tableName':_0x4aff('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb0d0=['license','lodash','api','moment','bluebird','request-promise','rimraf','../../config/environment','./license.attributes','exports','License'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb0d0,0x7a));var _0x0b0d=function(_0x4c28b1,_0x428f49){_0x4c28b1=_0x4c28b1-0x0;var _0x733e39=_0xb0d0[_0x4c28b1];return _0x733e39;};'use strict';var _=require(_0x0b0d('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x0b0d('0x1'));var moment=require(_0x0b0d('0x2'));var BPromise=require(_0x0b0d('0x3'));var rp=require(_0x0b0d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0b0d('0x5'));var config=require(_0x0b0d('0x6'));var attributes=require(_0x0b0d('0x7'));module[_0x0b0d('0x8')]=function(_0x52e190,_0x53ab0a){return _0x52e190['define'](_0x0b0d('0x9'),attributes,{'tableName':_0x0b0d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a14ea62..7b4878c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6560=['debug','License,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','util','moment','bluebird','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','then','License,\x20%s,\x20%s','request\x20sent'];(function(_0x11b34c,_0x3927d1){var _0x3fc1d3=function(_0x4dd148){while(--_0x4dd148){_0x11b34c['push'](_0x11b34c['shift']());}};_0x3fc1d3(++_0x3927d1);}(_0x6560,0x111));var _0x0656=function(_0xcdce8a,_0x10b639){_0xcdce8a=_0xcdce8a-0x0;var _0x79611f=_0x6560[_0xcdce8a];return _0x79611f;};'use strict';var _=require('lodash');var util=require(_0x0656('0x0'));var moment=require(_0x0656('0x1'));var BPromise=require(_0x0656('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0656('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x0656('0x4'));var config=require(_0x0656('0x5'));var jayson=require(_0x0656('0x6'));var client=jayson[_0x0656('0x7')][_0x0656('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x261afe,_0x14311e,_0x48cd6a){return new BPromise(function(_0x37b11c,_0x278471){return client['request'](_0x261afe,_0x48cd6a)[_0x0656('0x9')](function(_0xa28d73){logger['info'](_0x0656('0xa'),_0x14311e,_0x0656('0xb'));logger[_0x0656('0xc')](_0x0656('0xd'),_0x14311e,_0x0656('0xb'),JSON[_0x0656('0xe')](_0xa28d73));if(_0xa28d73['error']){if(_0xa28d73[_0x0656('0xf')]['code']===0x1f4){logger[_0x0656('0xf')]('License,\x20%s,\x20%s',_0x14311e,_0xa28d73[_0x0656('0xf')][_0x0656('0x10')]);return _0x278471(_0xa28d73[_0x0656('0xf')]['message']);}logger[_0x0656('0xf')]('License,\x20%s,\x20%s',_0x14311e,_0xa28d73['error'][_0x0656('0x10')]);return _0x37b11c(_0xa28d73[_0x0656('0xf')][_0x0656('0x10')]);}else{logger[_0x0656('0x11')](_0x0656('0xa'),_0x14311e,'request\x20sent');_0x37b11c(_0xa28d73[_0x0656('0x12')][_0x0656('0x10')]);}})['catch'](function(_0x140240){logger[_0x0656('0xf')](_0x0656('0xa'),_0x14311e,_0x140240);_0x278471(_0x140240);});});}
\ No newline at end of file
+var _0x4c94=['rpc','../../config/environment','client','http','request','then','License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x46401e,_0x2a345b){var _0x447cba=function(_0x54ea97){while(--_0x54ea97){_0x46401e['push'](_0x46401e['shift']());}};_0x447cba(++_0x2a345b);}(_0x4c94,0x1c0));var _0x44c9=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x4c94[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0x44c9('0x0'));var util=require(_0x44c9('0x1'));var moment=require(_0x44c9('0x2'));var BPromise=require(_0x44c9('0x3'));var rs=require(_0x44c9('0x4'));var fs=require('fs');var Redis=require(_0x44c9('0x5'));var db=require(_0x44c9('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x44c9('0x7'))(_0x44c9('0x8'));var config=require(_0x44c9('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x44c9('0xa')][_0x44c9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2820c8,_0x5899f1,_0x122cfc){return new BPromise(function(_0x36bc92,_0x293bb7){return client[_0x44c9('0xc')](_0x2820c8,_0x122cfc)[_0x44c9('0xd')](function(_0x1db228){logger['info'](_0x44c9('0xe'),_0x5899f1,_0x44c9('0xf'));logger[_0x44c9('0x10')](_0x44c9('0x11'),_0x5899f1,_0x44c9('0xf'),JSON[_0x44c9('0x12')](_0x1db228));if(_0x1db228['error']){if(_0x1db228['error']['code']===0x1f4){logger[_0x44c9('0x13')]('License,\x20%s,\x20%s',_0x5899f1,_0x1db228[_0x44c9('0x13')][_0x44c9('0x14')]);return _0x293bb7(_0x1db228[_0x44c9('0x13')][_0x44c9('0x14')]);}logger[_0x44c9('0x13')](_0x44c9('0xe'),_0x5899f1,_0x1db228[_0x44c9('0x13')][_0x44c9('0x14')]);return _0x36bc92(_0x1db228['error'][_0x44c9('0x14')]);}else{logger[_0x44c9('0x15')]('License,\x20%s,\x20%s',_0x5899f1,'request\x20sent');_0x36bc92(_0x1db228[_0x44c9('0x16')][_0x44c9('0x14')]);}})[_0x44c9('0x17')](function(_0x140113){logger[_0x44c9('0x13')](_0x44c9('0xe'),_0x5899f1,_0x140113);_0x293bb7(_0x140113);});});}
\ No newline at end of file
index 7143fd3..1078d99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd41=['/:id/users','getAgents','addDisposition','addAnswer','post','create','/:id/in_servers','addImap','/:id/out_servers','addInteraction','addApplications','send','addAgents','/:id','update','removeDispositions','delete','removeImap','removeSmtp','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','/describe','describe','/:id/dispositions','/:id/canned_answers','getAnswers','getImap','getSmtp','getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','verifySmtp'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xdd41,0x142));var _0x1dd4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdd41[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x1dd4('0x0'));var util=require(_0x1dd4('0x1'));var path=require('path');var timeout=require(_0x1dd4('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x1dd4('0x3'));var auth=require(_0x1dd4('0x4'));var interaction=require(_0x1dd4('0x5'));var config=require(_0x1dd4('0x6'));var controller=require('./mailAccount.controller');router['get']('/',auth[_0x1dd4('0x7')](),controller['index']);router[_0x1dd4('0x8')](_0x1dd4('0x9'),auth[_0x1dd4('0x7')](),controller[_0x1dd4('0xa')]);router[_0x1dd4('0x8')]('/:id',auth[_0x1dd4('0x7')](),controller['show']);router['get'](_0x1dd4('0xb'),auth['isAuthenticated'](),controller['getDispositions']);router[_0x1dd4('0x8')](_0x1dd4('0xc'),auth[_0x1dd4('0x7')](),controller[_0x1dd4('0xd')]);router['get']('/:id/in_servers',auth[_0x1dd4('0x7')](),controller[_0x1dd4('0xe')]);router[_0x1dd4('0x8')]('/:id/out_servers',auth['isAuthenticated'](),controller[_0x1dd4('0xf')]);router[_0x1dd4('0x8')]('/:id/interactions',auth['isAuthenticated'](),controller[_0x1dd4('0x10')]);router['get'](_0x1dd4('0x11'),auth[_0x1dd4('0x7')](),controller[_0x1dd4('0x12')]);router[_0x1dd4('0x8')](_0x1dd4('0x13'),auth[_0x1dd4('0x7')](),controller[_0x1dd4('0x14')]);router['get']('/:id/verify',auth[_0x1dd4('0x7')](),controller[_0x1dd4('0x15')]);router[_0x1dd4('0x8')](_0x1dd4('0x16'),auth[_0x1dd4('0x7')](),controller[_0x1dd4('0x17')]);router['post'](_0x1dd4('0xb'),auth[_0x1dd4('0x7')](),controller[_0x1dd4('0x18')]);router['post'](_0x1dd4('0xc'),auth[_0x1dd4('0x7')](),controller[_0x1dd4('0x19')]);router[_0x1dd4('0x1a')]('/',auth[_0x1dd4('0x7')](),controller[_0x1dd4('0x1b')]);router['post'](_0x1dd4('0x1c'),auth['isAuthenticated'](),controller[_0x1dd4('0x1d')]);router[_0x1dd4('0x1a')](_0x1dd4('0x1e'),auth[_0x1dd4('0x7')](),controller['addSmtp']);router[_0x1dd4('0x1a')]('/:id/interactions',auth[_0x1dd4('0x7')](),controller[_0x1dd4('0x1f')]);router['post'](_0x1dd4('0x11'),auth['isAuthenticated'](),controller[_0x1dd4('0x20')]);router['post']('/:id/send',auth[_0x1dd4('0x7')](),controller[_0x1dd4('0x21')]);router['post']('/:id/users',auth[_0x1dd4('0x7')](),controller[_0x1dd4('0x22')]);router['put'](_0x1dd4('0x23'),auth[_0x1dd4('0x7')](),controller[_0x1dd4('0x24')]);router['delete']('/:id/dispositions',auth[_0x1dd4('0x7')](),controller[_0x1dd4('0x25')]);router[_0x1dd4('0x26')](_0x1dd4('0xc'),auth[_0x1dd4('0x7')](),controller['removeAnswers']);router['delete'](_0x1dd4('0x1c'),auth['isAuthenticated'](),controller[_0x1dd4('0x27')]);router[_0x1dd4('0x26')]('/:id/out_servers',auth['isAuthenticated'](),controller[_0x1dd4('0x28')]);router[_0x1dd4('0x26')](_0x1dd4('0x23'),auth[_0x1dd4('0x7')](),controller[_0x1dd4('0x29')]);router[_0x1dd4('0x26')](_0x1dd4('0x16'),auth[_0x1dd4('0x7')](),controller['removeAgents']);module[_0x1dd4('0x2a')]=router;
\ No newline at end of file
+var _0x223b=['/:id/dispositions','getDispositions','/:id/canned_answers','/:id/in_servers','getImap','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','verifySmtp','getAgents','addDisposition','post','create','addSmtp','addInteraction','addApplications','/:id/users','addAgents','put','delete','removeDispositions','removeImap','removeSmtp','destroy','removeAgents','exports','multer','util','path','express','fs-extra','../../config/environment','./mailAccount.controller','get','isAuthenticated','/describe','describe','/:id','show'];(function(_0x230ab8,_0x188390){var _0xb1ef96=function(_0x27cf3d){while(--_0x27cf3d){_0x230ab8['push'](_0x230ab8['shift']());}};_0xb1ef96(++_0x188390);}(_0x223b,0x1ab));var _0xb223=function(_0x50bff8,_0x2a417f){_0x50bff8=_0x50bff8-0x0;var _0x56626a=_0x223b[_0x50bff8];return _0x56626a;};'use strict';var multer=require(_0xb223('0x0'));var util=require(_0xb223('0x1'));var path=require(_0xb223('0x2'));var timeout=require('connect-timeout');var express=require(_0xb223('0x3'));var router=express['Router']();var fs_extra=require(_0xb223('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb223('0x5'));var controller=require(_0xb223('0x6'));router[_0xb223('0x7')]('/',auth[_0xb223('0x8')](),controller['index']);router[_0xb223('0x7')](_0xb223('0x9'),auth['isAuthenticated'](),controller[_0xb223('0xa')]);router[_0xb223('0x7')](_0xb223('0xb'),auth['isAuthenticated'](),controller[_0xb223('0xc')]);router[_0xb223('0x7')](_0xb223('0xd'),auth['isAuthenticated'](),controller[_0xb223('0xe')]);router[_0xb223('0x7')](_0xb223('0xf'),auth['isAuthenticated'](),controller['getAnswers']);router[_0xb223('0x7')](_0xb223('0x10'),auth[_0xb223('0x8')](),controller[_0xb223('0x11')]);router[_0xb223('0x7')](_0xb223('0x12'),auth[_0xb223('0x8')](),controller[_0xb223('0x13')]);router['get'](_0xb223('0x14'),auth['isAuthenticated'](),controller[_0xb223('0x15')]);router[_0xb223('0x7')](_0xb223('0x16'),auth[_0xb223('0x8')](),controller[_0xb223('0x17')]);router[_0xb223('0x7')](_0xb223('0x18'),auth[_0xb223('0x8')](),controller[_0xb223('0x19')]);router[_0xb223('0x7')]('/:id/verify',auth[_0xb223('0x8')](),controller[_0xb223('0x1a')]);router[_0xb223('0x7')]('/:id/users',auth[_0xb223('0x8')](),controller[_0xb223('0x1b')]);router['post'](_0xb223('0xd'),auth[_0xb223('0x8')](),controller[_0xb223('0x1c')]);router[_0xb223('0x1d')]('/:id/canned_answers',auth[_0xb223('0x8')](),controller['addAnswer']);router[_0xb223('0x1d')]('/',auth[_0xb223('0x8')](),controller[_0xb223('0x1e')]);router[_0xb223('0x1d')]('/:id/in_servers',auth['isAuthenticated'](),controller['addImap']);router['post'](_0xb223('0x12'),auth[_0xb223('0x8')](),controller[_0xb223('0x1f')]);router[_0xb223('0x1d')](_0xb223('0x14'),auth[_0xb223('0x8')](),controller[_0xb223('0x20')]);router[_0xb223('0x1d')]('/:id/applications',auth['isAuthenticated'](),controller[_0xb223('0x21')]);router[_0xb223('0x1d')]('/:id/send',auth[_0xb223('0x8')](),controller['send']);router[_0xb223('0x1d')](_0xb223('0x22'),auth[_0xb223('0x8')](),controller[_0xb223('0x23')]);router[_0xb223('0x24')]('/:id',auth[_0xb223('0x8')](),controller['update']);router[_0xb223('0x25')](_0xb223('0xd'),auth[_0xb223('0x8')](),controller[_0xb223('0x26')]);router[_0xb223('0x25')](_0xb223('0xf'),auth[_0xb223('0x8')](),controller['removeAnswers']);router['delete']('/:id/in_servers',auth['isAuthenticated'](),controller[_0xb223('0x27')]);router[_0xb223('0x25')](_0xb223('0x12'),auth[_0xb223('0x8')](),controller[_0xb223('0x28')]);router[_0xb223('0x25')](_0xb223('0xb'),auth[_0xb223('0x8')](),controller[_0xb223('0x29')]);router[_0xb223('0x25')](_0xb223('0x22'),auth[_0xb223('0x8')](),controller[_0xb223('0x2a')]);module[_0xb223('0x2b')]=router;
\ No newline at end of file
index 8ff0f47..7fe3abb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa19=['sequelize','exports','STRING','BOOLEAN','Arial,Helvetica,sans-serif','UNSIGNED','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xaa19,0x79));var _0x9aa1=function(_0x4dcfaf,_0x237d19){_0x4dcfaf=_0x4dcfaf-0x0;var _0x42b5a4=_0xaa19[_0x4dcfaf];return _0x42b5a4;};'use strict';var Sequelize=require(_0x9aa1('0x0'));module[_0x9aa1('0x1')]={'description':{'type':Sequelize[_0x9aa1('0x2')]},'name':{'type':Sequelize[_0x9aa1('0x2')],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0x9aa1('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize[_0x9aa1('0x2')],'allowNull':![]},'template':{'type':Sequelize['TEXT']},'markAsUnread':{'type':Sequelize[_0x9aa1('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x9aa1('0x2')],'allowNull':![],'defaultValue':_0x9aa1('0x4')},'fontSize':{'type':Sequelize['INTEGER'](0x2)[_0x9aa1('0x5')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x9aa1('0x6')],'defaultValue':function(){return _0x9aa1('0x7');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x9aa1('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x9aa1('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x9aa1('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x9aa1('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x9aa1('0x8')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x9aa1('0x9'),'set':function(_0x4ffdcc){if(!_0x4ffdcc)this[_0x9aa1('0xa')]('mandatoryDispositionPauseId',null);this['setDataValue']('mandatoryDisposition',_0x4ffdcc);}}};
\ No newline at end of file
+var _0xedd9=['STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDisposition','exports'];(function(_0x4c2dca,_0x389823){var _0x58230f=function(_0x37b74f){while(--_0x37b74f){_0x4c2dca['push'](_0x4c2dca['shift']());}};_0x58230f(++_0x389823);}(_0xedd9,0xfc));var _0x9edd=function(_0x46ddbf,_0x2efab7){_0x46ddbf=_0x46ddbf-0x0;var _0xdacb86=_0xedd9[_0x46ddbf];return _0xdacb86;};'use strict';var Sequelize=require('sequelize');module[_0x9edd('0x0')]={'description':{'type':Sequelize[_0x9edd('0x1')]},'name':{'type':Sequelize[_0x9edd('0x1')],'allowNull':![]},'service':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x9edd('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0x9edd('0x1')],'allowNull':![]},'template':{'type':Sequelize[_0x9edd('0x3')]},'markAsUnread':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x9edd('0x1')],'allowNull':![],'defaultValue':_0x9edd('0x4')},'fontSize':{'type':Sequelize[_0x9edd('0x5')](0x2)[_0x9edd('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x9edd('0x7');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x9edd('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x9edd('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x9edd('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x9edd('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0xbf9da6){if(!_0xbf9da6)this[_0x9edd('0x9')]('mandatoryDispositionPauseId',null);this[_0x9edd('0x9')](_0x9edd('0xa'),_0xbf9da6);}}};
\ No newline at end of file
index 8d66ded..ca4090a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa20b=['cpassword','authentication','host','port','service','pass','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','setImap','getSmtp','removeSmtp','setSmtp','MailInteraction','addInteraction','omit','getInteractions','rawAttributes','CmContact','Contact','Owner','fullname','Tag','Tags','tag','sequelize','transaction','ISOLATION_LEVELS','MailApplication','finally','getApplications','getMessages','MailMessage','$gte','split','inlineCss','true','List','Contacts','updatedAt','from','format','%s\x20<%s>','email','attachments','join','root','server/files/attachments','basename','auth','secure','SendMail','sendMail','List\x20not\x20found','defaults','subject','attach','out','YYYY-MM-DD\x20HH:mm:ss','messageId','Interaction','Messages','verifySmtp','VerifySmtp','Sequelize','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./mailAccount.socket','register','jayson/promise','client','http','info','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','MailAccount,\x20%s,\x20%s','status','end','undefined','limit','count','offset','set','json','apply','reject','save','update','destroy','get','MailAccounts','UserProfileResource','then','sendStatus','stack','name','send','index','MailServerIn','Imap','Smtp','mandatoryDispositionPause','type','key','map','keys','query','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','order','where','filters','filter','merge','VIRTUAL','options','MailAccount','include','findAll','rows','show','MailServerOut','Pause','includeAll','find','body','params','describe','addDisposition','MailAccountId','Disposition','create','findOne','sort','pick','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','ListId','isNil','active','cauthentication','user','cuser','password'];(function(_0x3158ac,_0x26bbab){var _0xdea395=function(_0x373f26){while(--_0x373f26){_0x3158ac['push'](_0x3158ac['shift']());}};_0xdea395(++_0x26bbab);}(_0xa20b,0x10e));var _0xba20=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xa20b[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xba20('0x0'));var zipdir=require(_0xba20('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xba20('0x2'));var moment=require('moment');var BPromise=require(_0xba20('0x3'));var Mustache=require(_0xba20('0x4'));var util=require(_0xba20('0x5'));var path=require(_0xba20('0x6'));var sox=require(_0xba20('0x7'));var csv=require(_0xba20('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xba20('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xba20('0xa'));var jsforce=require(_0xba20('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xba20('0x8'));var querystring=require(_0xba20('0xc'));var Papa=require(_0xba20('0xd'));var htmlToText=require('html-to-text');var juice=require('juice');var Redis=require(_0xba20('0xe'));var authService=require(_0xba20('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xba20('0x10'));var hardwareService=require(_0xba20('0x11'));var logger=require(_0xba20('0x12'))(_0xba20('0x13'));var utils=require('../../config/utils');var config=require(_0xba20('0x14'));var licenseUtil=require(_0xba20('0x15'));var db=require(_0xba20('0x16'))['db'];config[_0xba20('0x17')]=_['defaults'](config['redis'],{'host':_0xba20('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xba20('0x17')]));require(_0xba20('0x19'))[_0xba20('0x1a')](socket);var jayson=require(_0xba20('0x1b'));var client=jayson[_0xba20('0x1c')][_0xba20('0x1d')]({'port':0x232b});function respondWithRpcPromise(_0x55f01d,_0x5d9642,_0x3b0038,_0x252948){return new BPromise(function(_0x3f6950,_0x4ebd6b){var _0x1440fb=_0x252948||client;return _0x1440fb['request'](_0x55f01d,_0x3b0038)['then'](function(_0x363e81){logger[_0xba20('0x1e')]('MailAccount,\x20%s,\x20%s',_0x5d9642,'request\x20sent');logger[_0xba20('0x1f')](_0xba20('0x20'),_0x5d9642,_0xba20('0x21'),JSON['stringify'](_0x363e81));if(_0x363e81[_0xba20('0x22')]){if(_0x363e81[_0xba20('0x22')][_0xba20('0x23')]===0x1f4){logger[_0xba20('0x22')]('MailAccount,\x20%s,\x20%s',_0x5d9642,_0x363e81[_0xba20('0x22')][_0xba20('0x24')]);return _0x4ebd6b(_0x363e81[_0xba20('0x22')][_0xba20('0x24')]);}logger['error']('MailAccount,\x20%s,\x20%s',_0x5d9642,_0x363e81[_0xba20('0x22')][_0xba20('0x24')]);return _0x3f6950(_0x363e81[_0xba20('0x22')]['message']);}else{logger['info']('MailAccount,\x20%s,\x20%s',_0x5d9642,_0xba20('0x21'));_0x3f6950(_0x363e81['result']['message']);}})[_0xba20('0x25')](function(_0xb91e6a){logger['error'](_0xba20('0x26'),_0x5d9642,_0xb91e6a);_0x4ebd6b(_0xb91e6a);});});}function respondWithStatusCode(_0x23b729,_0x248339){_0x248339=_0x248339||0xcc;return function(_0x252de3){if(_0x252de3){return _0x23b729['sendStatus'](_0x248339);}return _0x23b729[_0xba20('0x27')](_0x248339)[_0xba20('0x28')]();};}function respondWithResult(_0x1096bf,_0x2e6ff9){_0x2e6ff9=_0x2e6ff9||0xc8;return function(_0x4d7a34){if(_0x4d7a34){return _0x1096bf[_0xba20('0x27')](_0x2e6ff9)['json'](_0x4d7a34);}};}function respondWithFilteredResult(_0x317f52,_0x523877){return function(_0xbca3ff){if(_0xbca3ff){var _0x3cc1ee=typeof _0x523877['offset']===_0xba20('0x29')&&typeof _0x523877[_0xba20('0x2a')]===_0xba20('0x29');var _0x591fac=_0xbca3ff[_0xba20('0x2b')];var _0x54ec41=_0x3cc1ee?0x0:_0x523877[_0xba20('0x2c')];var _0x462fab=_0x3cc1ee?_0xbca3ff['count']:_0x523877[_0xba20('0x2c')]+_0x523877[_0xba20('0x2a')];var _0x430873;if(_0x462fab>=_0x591fac){_0x462fab=_0x591fac;_0x430873=0xc8;}else{_0x430873=0xce;}_0x317f52[_0xba20('0x27')](_0x430873);return _0x317f52[_0xba20('0x2d')]('Content-Range',_0x54ec41+'-'+_0x462fab+'/'+_0x591fac)[_0xba20('0x2e')](_0xbca3ff);}return null;};}function patchUpdates(_0x43e5e0){return function(_0x46c698){try{jsonpatch[_0xba20('0x2f')](_0x46c698,_0x43e5e0,!![]);}catch(_0x2d237f){return BPromise[_0xba20('0x30')](_0x2d237f);}return _0x46c698[_0xba20('0x31')]();};}function saveUpdates(_0xdf5e84,_0x15ce64){return function(_0x3e1400){if(_0x3e1400){return _0x3e1400[_0xba20('0x32')](_0xdf5e84)['then'](function(_0x5bc650){return _0x5bc650;});}return null;};}function removeEntity(_0x33a23b,_0x5d37cc){return function(_0x127581){if(_0x127581){return _0x127581[_0xba20('0x33')]()['then'](function(){var _0x48cdf2=_0x127581[_0xba20('0x34')]({'plain':!![]});var _0x2bf287=_0xba20('0x35');return db[_0xba20('0x36')][_0xba20('0x33')]({'where':{'type':_0x2bf287,'resourceId':_0x48cdf2['id']}})[_0xba20('0x37')](function(){return _0x127581;});})[_0xba20('0x37')](function(){_0x33a23b[_0xba20('0x27')](0xcc)['end']();});}};}function handleEntityNotFound(_0x192505,_0x36b947){return function(_0x263f43){if(!_0x263f43){_0x192505[_0xba20('0x38')](0x194);}return _0x263f43;};}function handleError(_0x3fd077,_0x265f25){_0x265f25=_0x265f25||0x1f4;return function(_0x2fe276){logger[_0xba20('0x22')](_0x2fe276[_0xba20('0x39')]);if(_0x2fe276[_0xba20('0x3a')]){delete _0x2fe276[_0xba20('0x3a')];}_0x3fd077[_0xba20('0x27')](_0x265f25)[_0xba20('0x3b')](_0x2fe276);};}exports[_0xba20('0x3c')]=function(_0x2b114e,_0x3f21e3){var _0x106508={'include':[{'model':db[_0xba20('0x3d')],'as':_0xba20('0x3e')},{'model':db['MailServerOut'],'as':_0xba20('0x3f')},{'model':db['Pause'],'as':_0xba20('0x40')}]},_0x69f563={},_0x3a9812={'count':0x0,'rows':[]};var _0xd3db0=_['map'](db['MailAccount']['rawAttributes'],function(_0x3afd13){return{'name':_0x3afd13['fieldName'],'type':_0x3afd13[_0xba20('0x41')][_0xba20('0x42')]};});_0x69f563['model']=_[_0xba20('0x43')](_0xd3db0,_0xba20('0x3a'));_0x69f563['query']=_[_0xba20('0x44')](_0x2b114e[_0xba20('0x45')]);_0x69f563['filters']=_[_0xba20('0x46')](_0x69f563['model'],_0x69f563[_0xba20('0x45')]);_0x106508[_0xba20('0x47')]=_[_0xba20('0x46')](_0x69f563['model'],qs[_0xba20('0x48')](_0x2b114e[_0xba20('0x45')][_0xba20('0x48')]));_0x106508[_0xba20('0x47')]=_0x106508[_0xba20('0x47')][_0xba20('0x49')]?_0x106508[_0xba20('0x47')]:_0x69f563[_0xba20('0x4a')];if(!_0x2b114e[_0xba20('0x45')][_0xba20('0x4b')](_0xba20('0x4c'))){_0x106508[_0xba20('0x2a')]=qs[_0xba20('0x2a')](_0x2b114e[_0xba20('0x45')]['limit']);_0x106508[_0xba20('0x2c')]=qs[_0xba20('0x2c')](_0x2b114e[_0xba20('0x45')]['offset']);}_0x106508[_0xba20('0x4d')]=qs['sort'](_0x2b114e[_0xba20('0x45')]['sort']);_0x106508[_0xba20('0x4e')]=qs[_0xba20('0x4f')](_['pick'](_0x2b114e[_0xba20('0x45')],_0x69f563[_0xba20('0x4f')]),_0xd3db0);if(_0x2b114e[_0xba20('0x45')][_0xba20('0x50')]){_0x106508['where']=_[_0xba20('0x51')](_0x106508[_0xba20('0x4e')],{'$or':_['map'](_0xd3db0,function(_0x2b8549){if(_0x2b8549[_0xba20('0x41')]!==_0xba20('0x52')){var _0x55dec9={};_0x55dec9[_0x2b8549[_0xba20('0x3a')]]={'$like':'%'+_0x2b114e[_0xba20('0x45')]['filter']+'%'};return _0x55dec9;}})});}_0x106508=_[_0xba20('0x51')]({},_0x106508,_0x2b114e[_0xba20('0x53')]);var _0x908d60={'where':_0x106508['where']};return db[_0xba20('0x54')]['count'](_0x908d60)[_0xba20('0x37')](function(_0x31d9c0){_0x3a9812[_0xba20('0x2b')]=_0x31d9c0;if(_0x2b114e[_0xba20('0x45')]['includeAll']){_0x106508[_0xba20('0x55')]=[{'all':!![]}];}return db['MailAccount'][_0xba20('0x56')](_0x106508);})[_0xba20('0x37')](function(_0x480f2b){_0x3a9812[_0xba20('0x57')]=_0x480f2b;return _0x3a9812;})[_0xba20('0x37')](respondWithFilteredResult(_0x3f21e3,_0x106508))[_0xba20('0x25')](handleError(_0x3f21e3,null));};exports[_0xba20('0x58')]=function(_0x2660b3,_0xe3aa8a){var _0x1519b2={'raw':![],'where':{'id':_0x2660b3['params']['id']},'include':[{'model':db[_0xba20('0x3d')],'as':_0xba20('0x3e')},{'model':db[_0xba20('0x59')],'as':_0xba20('0x3f')},{'model':db[_0xba20('0x5a')],'as':'mandatoryDispositionPause'}]},_0x1952a8={};_0x1952a8[_0xba20('0x4a')]=_[_0xba20('0x44')](db[_0xba20('0x54')]['rawAttributes']);_0x1952a8[_0xba20('0x45')]=_[_0xba20('0x44')](_0x2660b3[_0xba20('0x45')]);_0x1952a8[_0xba20('0x4f')]=_[_0xba20('0x46')](_0x1952a8[_0xba20('0x4a')],_0x1952a8[_0xba20('0x45')]);_0x1519b2[_0xba20('0x47')]=_['intersection'](_0x1952a8['model'],qs[_0xba20('0x48')](_0x2660b3[_0xba20('0x45')][_0xba20('0x48')]));_0x1519b2[_0xba20('0x47')]=_0x1519b2[_0xba20('0x47')][_0xba20('0x49')]?_0x1519b2[_0xba20('0x47')]:_0x1952a8[_0xba20('0x4a')];if(_0x2660b3['query'][_0xba20('0x5b')]){_0x1519b2[_0xba20('0x55')]=[{'all':!![]}];}_0x1519b2=_[_0xba20('0x51')]({},_0x1519b2,_0x2660b3[_0xba20('0x53')]);return db[_0xba20('0x54')][_0xba20('0x5c')](_0x1519b2)['then'](handleEntityNotFound(_0xe3aa8a,null))[_0xba20('0x37')](respondWithResult(_0xe3aa8a,null))['catch'](handleError(_0xe3aa8a,null));};exports[_0xba20('0x32')]=function(_0x20e8bc,_0x259680){if(_0x20e8bc[_0xba20('0x5d')]['id']){delete _0x20e8bc['body']['id'];}return db[_0xba20('0x54')][_0xba20('0x5c')]({'where':{'id':_0x20e8bc[_0xba20('0x5e')]['id']},'include':[{'model':db[_0xba20('0x3d')],'as':'Imap'},{'model':db['MailServerOut'],'as':_0xba20('0x3f')},{'model':db['Pause'],'as':_0xba20('0x40')}]})[_0xba20('0x37')](handleEntityNotFound(_0x259680,null))[_0xba20('0x37')](saveUpdates(_0x20e8bc['body'],null))[_0xba20('0x37')](function(_0x1307fc){if(_0x1307fc&&_0x20e8bc['body']['Imap']){return db[_0xba20('0x3d')]['update'](_0x20e8bc[_0xba20('0x5d')]['Imap'],{'where':{'MailAccountId':_0x1307fc['id']}})[_0xba20('0x37')](function(){return _0x1307fc;});}return _0x1307fc;})[_0xba20('0x37')](function(_0x387c21){if(_0x387c21&&_0x20e8bc[_0xba20('0x5d')][_0xba20('0x3f')]){return db[_0xba20('0x59')][_0xba20('0x32')](_0x20e8bc[_0xba20('0x5d')][_0xba20('0x3f')],{'where':{'MailAccountId':_0x387c21['id']}})[_0xba20('0x37')](function(){return _0x387c21;});}return _0x387c21;})[_0xba20('0x37')](respondWithResult(_0x259680,null))[_0xba20('0x25')](handleError(_0x259680,null));};exports[_0xba20('0x5f')]=function(_0x369227,_0x1009bf){return db[_0xba20('0x54')]['describe']()[_0xba20('0x37')](respondWithResult(_0x1009bf,null))[_0xba20('0x25')](handleError(_0x1009bf,null));};exports[_0xba20('0x60')]=function(_0x5ccd53,_0x3c4a7d,_0x563b30){if(_0x5ccd53[_0xba20('0x5d')]['id']){delete _0x5ccd53[_0xba20('0x5d')]['id'];}return db[_0xba20('0x54')][_0xba20('0x5c')]({'where':{'id':_0x5ccd53['params']['id']}})[_0xba20('0x37')](handleEntityNotFound(_0x3c4a7d,null))[_0xba20('0x37')](function(_0x27f3cc){if(_0x27f3cc){_0x5ccd53[_0xba20('0x5d')][_0xba20('0x61')]=_0x27f3cc['id'];return db[_0xba20('0x62')][_0xba20('0x63')](_0x5ccd53[_0xba20('0x5d')]);}})[_0xba20('0x37')](respondWithResult(_0x3c4a7d,null))[_0xba20('0x25')](handleError(_0x3c4a7d,null));};exports['getDispositions']=function(_0x557007,_0x431387,_0x3a6799){var _0x5a8f84={'raw':![],'where':{}};var _0x2a80ba={};var _0x5e35ac={'count':0x0,'rows':[]};return db[_0xba20('0x54')][_0xba20('0x64')]({'where':{'id':_0x557007[_0xba20('0x5e')]['id']}})[_0xba20('0x37')](handleEntityNotFound(_0x431387,null))['then'](function(_0x3efc15){if(_0x3efc15){_0x2a80ba[_0xba20('0x4a')]=_[_0xba20('0x44')](db[_0xba20('0x62')]['rawAttributes']);_0x2a80ba[_0xba20('0x45')]=_['keys'](_0x557007[_0xba20('0x45')]);_0x2a80ba[_0xba20('0x4f')]=_[_0xba20('0x46')](_0x2a80ba['model'],_0x2a80ba[_0xba20('0x45')]);_0x5a8f84[_0xba20('0x47')]=_['intersection'](_0x2a80ba['model'],qs[_0xba20('0x48')](_0x557007[_0xba20('0x45')][_0xba20('0x48')]));_0x5a8f84['attributes']=_0x5a8f84['attributes'][_0xba20('0x49')]?_0x5a8f84[_0xba20('0x47')]:_0x2a80ba[_0xba20('0x4a')];if(!_0x557007[_0xba20('0x45')]['hasOwnProperty'](_0xba20('0x4c'))){_0x5a8f84[_0xba20('0x2a')]=qs['limit'](_0x557007[_0xba20('0x45')][_0xba20('0x2a')]);_0x5a8f84[_0xba20('0x2c')]=qs[_0xba20('0x2c')](_0x557007[_0xba20('0x45')][_0xba20('0x2c')]);}_0x5a8f84[_0xba20('0x4d')]=qs[_0xba20('0x65')](_0x557007[_0xba20('0x45')][_0xba20('0x65')]);_0x5a8f84[_0xba20('0x4e')]=qs['filters'](_[_0xba20('0x66')](_0x557007[_0xba20('0x45')],_0x2a80ba[_0xba20('0x4f')]));_0x5a8f84[_0xba20('0x4e')][_0xba20('0x61')]=_0x3efc15['id'];if(_0x557007[_0xba20('0x45')]['filter']){_0x5a8f84[_0xba20('0x4e')]=_['merge'](_0x5a8f84[_0xba20('0x4e')],{'$or':_[_0xba20('0x43')](_0x5a8f84[_0xba20('0x47')],function(_0x46f3ec){var _0x25a7fd={};_0x25a7fd[_0x46f3ec]={'$like':'%'+_0x557007[_0xba20('0x45')][_0xba20('0x50')]+'%'};return _0x25a7fd;})});}_0x5a8f84=_[_0xba20('0x51')]({},_0x5a8f84,_0x557007[_0xba20('0x53')]);return db[_0xba20('0x62')][_0xba20('0x2b')]({'where':_0x5a8f84[_0xba20('0x4e')]})[_0xba20('0x37')](function(_0x3caea7){_0x5e35ac[_0xba20('0x2b')]=_0x3caea7;if(_0x557007[_0xba20('0x45')]['includeAll']){_0x5a8f84[_0xba20('0x55')]=[{'all':!![]}];}return db['Disposition'][_0xba20('0x56')](_0x5a8f84);})[_0xba20('0x37')](function(_0x199b31){_0x5e35ac[_0xba20('0x57')]=_0x199b31;return _0x5e35ac;});}})[_0xba20('0x37')](respondWithFilteredResult(_0x431387,_0x5a8f84))[_0xba20('0x25')](handleError(_0x431387,null));};exports[_0xba20('0x67')]=function(_0x3be8ed,_0x26a7e2,_0x29769b){return db[_0xba20('0x54')][_0xba20('0x5c')]({'where':{'id':_0x3be8ed['params']['id']}})[_0xba20('0x37')](handleEntityNotFound(_0x26a7e2,null))['then'](function(_0x31c677){if(_0x31c677){return _0x31c677['removeDispositions'](_0x3be8ed[_0xba20('0x45')][_0xba20('0x68')]);}})['then'](respondWithStatusCode(_0x26a7e2,null))[_0xba20('0x25')](handleError(_0x26a7e2,null));};exports[_0xba20('0x69')]=function(_0x2b2f7a,_0x482054,_0x3e5026){if(_0x2b2f7a[_0xba20('0x5d')]['id']){delete _0x2b2f7a[_0xba20('0x5d')]['id'];}return db['MailAccount'][_0xba20('0x5c')]({'where':{'id':_0x2b2f7a[_0xba20('0x5e')]['id']}})['then'](handleEntityNotFound(_0x482054,null))[_0xba20('0x37')](function(_0x1caad8){if(_0x1caad8){_0x2b2f7a[_0xba20('0x5d')][_0xba20('0x61')]=_0x1caad8['id'];return db[_0xba20('0x6a')]['create'](_0x2b2f7a['body']);}})[_0xba20('0x37')](respondWithResult(_0x482054,null))['catch'](handleError(_0x482054,null));};exports[_0xba20('0x6b')]=function(_0x125e9,_0xfc08c7,_0x581889){var _0xdc678b={'raw':![],'where':{}};var _0x4997d9={};var _0x3e2411={'count':0x0,'rows':[]};return db[_0xba20('0x54')][_0xba20('0x64')]({'where':{'id':_0x125e9[_0xba20('0x5e')]['id']}})[_0xba20('0x37')](handleEntityNotFound(_0xfc08c7,null))[_0xba20('0x37')](function(_0x209b75){if(_0x209b75){_0x4997d9['model']=_[_0xba20('0x44')](db[_0xba20('0x6a')]['rawAttributes']);_0x4997d9[_0xba20('0x45')]=_[_0xba20('0x44')](_0x125e9[_0xba20('0x45')]);_0x4997d9[_0xba20('0x4f')]=_[_0xba20('0x46')](_0x4997d9['model'],_0x4997d9[_0xba20('0x45')]);_0xdc678b[_0xba20('0x47')]=_[_0xba20('0x46')](_0x4997d9[_0xba20('0x4a')],qs[_0xba20('0x48')](_0x125e9[_0xba20('0x45')][_0xba20('0x48')]));_0xdc678b[_0xba20('0x47')]=_0xdc678b['attributes'][_0xba20('0x49')]?_0xdc678b[_0xba20('0x47')]:_0x4997d9[_0xba20('0x4a')];if(!_0x125e9[_0xba20('0x45')]['hasOwnProperty']('nolimit')){_0xdc678b[_0xba20('0x2a')]=qs[_0xba20('0x2a')](_0x125e9[_0xba20('0x45')][_0xba20('0x2a')]);_0xdc678b['offset']=qs[_0xba20('0x2c')](_0x125e9['query'][_0xba20('0x2c')]);}_0xdc678b[_0xba20('0x4d')]=qs[_0xba20('0x65')](_0x125e9[_0xba20('0x45')][_0xba20('0x65')]);_0xdc678b[_0xba20('0x4e')]=qs[_0xba20('0x4f')](_[_0xba20('0x66')](_0x125e9[_0xba20('0x45')],_0x4997d9[_0xba20('0x4f')]));_0xdc678b[_0xba20('0x4e')][_0xba20('0x61')]=_0x209b75['id'];if(_0x125e9[_0xba20('0x45')][_0xba20('0x50')]){_0xdc678b['where']=_['merge'](_0xdc678b['where'],{'$or':_[_0xba20('0x43')](_0xdc678b[_0xba20('0x47')],function(_0x4857d6){var _0x25b2ed={};_0x25b2ed[_0x4857d6]={'$like':'%'+_0x125e9[_0xba20('0x45')][_0xba20('0x50')]+'%'};return _0x25b2ed;})});}_0xdc678b=_['merge']({},_0xdc678b,_0x125e9['options']);return db[_0xba20('0x6a')][_0xba20('0x2b')]({'where':_0xdc678b[_0xba20('0x4e')]})['then'](function(_0x4756d6){_0x3e2411['count']=_0x4756d6;if(_0x125e9[_0xba20('0x45')][_0xba20('0x5b')]){_0xdc678b[_0xba20('0x55')]=[{'all':!![]}];}return db[_0xba20('0x6a')][_0xba20('0x56')](_0xdc678b);})[_0xba20('0x37')](function(_0x20da95){_0x3e2411[_0xba20('0x57')]=_0x20da95;return _0x3e2411;});}})[_0xba20('0x37')](respondWithFilteredResult(_0xfc08c7,_0xdc678b))[_0xba20('0x25')](handleError(_0xfc08c7,null));};exports[_0xba20('0x6c')]=function(_0x12cbdb,_0x19fc00,_0x4fd979){return db[_0xba20('0x54')][_0xba20('0x5c')]({'where':{'id':_0x12cbdb[_0xba20('0x5e')]['id']}})['then'](handleEntityNotFound(_0x19fc00,null))[_0xba20('0x37')](function(_0x44d1e8){if(_0x44d1e8){return _0x44d1e8[_0xba20('0x6c')](_0x12cbdb[_0xba20('0x45')][_0xba20('0x68')]);}})[_0xba20('0x37')](respondWithStatusCode(_0x19fc00,null))[_0xba20('0x25')](handleError(_0x19fc00,null));};exports[_0xba20('0x63')]=function(_0x1da2f2,_0x20e534){var _0x22d5c2={'name':_0x1da2f2['body'][_0xba20('0x3a')],'key':_0x1da2f2[_0xba20('0x5d')][_0xba20('0x42')],'email':_0x1da2f2[_0xba20('0x5d')]['email'],'ListId':_0x1da2f2[_0xba20('0x5d')][_0xba20('0x6d')],'active':!_[_0xba20('0x6e')](_0x1da2f2[_0xba20('0x5d')][_0xba20('0x6f')])?_0x1da2f2[_0xba20('0x5d')][_0xba20('0x6f')]:!![],'description':_0x1da2f2[_0xba20('0x5d')]['description']||null,'Imap':{},'Smtp':{}};if(_[_0xba20('0x6e')](_0x1da2f2[_0xba20('0x5d')]['cservice'])){if(_0x1da2f2['body'][_0xba20('0x70')]){_0x22d5c2[_0xba20('0x3e')]['user']=_0x22d5c2[_0xba20('0x3f')][_0xba20('0x71')]=_0x1da2f2[_0xba20('0x5d')][_0xba20('0x72')];_0x22d5c2[_0xba20('0x3e')][_0xba20('0x73')]=_0x22d5c2[_0xba20('0x3f')]['pass']=_0x1da2f2['body'][_0xba20('0x74')];}else{_0x22d5c2[_0xba20('0x3e')][_0xba20('0x75')]=_0x22d5c2[_0xba20('0x3f')][_0xba20('0x75')]=![];}_0x22d5c2[_0xba20('0x3e')][_0xba20('0x76')]=_0x1da2f2[_0xba20('0x5d')][_0xba20('0x3e')]['host'];_0x22d5c2[_0xba20('0x3e')][_0xba20('0x77')]=_0x1da2f2[_0xba20('0x5d')][_0xba20('0x3e')]['port'];_0x22d5c2[_0xba20('0x3f')][_0xba20('0x76')]=_0x1da2f2[_0xba20('0x5d')]['Smtp'][_0xba20('0x76')];_0x22d5c2[_0xba20('0x3f')][_0xba20('0x77')]=_0x1da2f2[_0xba20('0x5d')][_0xba20('0x3f')][_0xba20('0x77')];}else{_0x22d5c2[_0xba20('0x3e')][_0xba20('0x78')]=_0x22d5c2[_0xba20('0x3f')][_0xba20('0x78')]=_0x1da2f2['body']['cservice'];_0x22d5c2[_0xba20('0x3e')]['user']=_0x22d5c2[_0xba20('0x3f')][_0xba20('0x71')]=_0x1da2f2[_0xba20('0x5d')][_0xba20('0x72')];_0x22d5c2[_0xba20('0x3e')]['password']=_0x22d5c2[_0xba20('0x3f')][_0xba20('0x79')]=_0x1da2f2[_0xba20('0x5d')]['cpassword'];}return db[_0xba20('0x54')][_0xba20('0x63')](_0x22d5c2,{'include':[{'model':db[_0xba20('0x59')],'as':_0xba20('0x3f')},{'model':db[_0xba20('0x3d')],'as':'Imap'}]})[_0xba20('0x37')](function(_0xfe1529){var _0x1a24ec=_0x1da2f2[_0xba20('0x71')][_0xba20('0x34')]({'plain':!![]});if(!_0x1a24ec)throw new Error(_0xba20('0x7a'));if(_0x1a24ec['role']===_0xba20('0x71')){var _0x40b5da=_0xfe1529[_0xba20('0x34')]({'plain':!![]});return db[_0xba20('0x7b')][_0xba20('0x5c')]({'where':{'name':_0xba20('0x35'),'userProfileId':_0x1a24ec[_0xba20('0x7c')]},'raw':!![]})[_0xba20('0x37')](function(_0x1a054a){if(_0x1a054a&&_0x1a054a['autoAssociation']===0x0){return db['UserProfileResource'][_0xba20('0x63')]({'name':_0x40b5da[_0xba20('0x3a')],'resourceId':_0x40b5da['id'],'type':_0x1a054a[_0xba20('0x3a')],'sectionId':_0x1a054a['id']},{})['then'](function(){return _0xfe1529;});}else{return _0xfe1529;}})[_0xba20('0x25')](function(_0x51544a){logger[_0xba20('0x22')](_0xba20('0x7d'),_0x51544a);throw _0x51544a;});}return _0xfe1529;})[_0xba20('0x37')](respondWithResult(_0x20e534,0xc9))[_0xba20('0x25')](handleError(_0x20e534,null));};exports[_0xba20('0x7e')]=function(_0x3b6850,_0x1fe392,_0x19d1bb){return db[_0xba20('0x54')][_0xba20('0x64')]({'where':{'id':_0x3b6850[_0xba20('0x5e')]['id']}})[_0xba20('0x37')](handleEntityNotFound(_0x1fe392,null))[_0xba20('0x37')](function(_0x3b8659){if(_0x3b8659){return _0x3b8659[_0xba20('0x7e')]();}return null;})['then'](respondWithResult(_0x1fe392,null))['catch'](handleError(_0x1fe392,null));};exports[_0xba20('0x7f')]=function(_0x107953,_0x5106c3,_0xde0ebf){if(_0x107953[_0xba20('0x5d')]['id']){delete _0x107953[_0xba20('0x5d')]['id'];}return db['MailAccount'][_0xba20('0x5c')]({'where':{'id':_0x107953[_0xba20('0x5e')]['id']}})[_0xba20('0x37')](handleEntityNotFound(_0x5106c3,null))[_0xba20('0x37')](function(_0x259587){if(_0x259587){_0x107953['body'][_0xba20('0x61')]=_0x259587['id'];return db[_0xba20('0x3d')][_0xba20('0x63')](_0x107953[_0xba20('0x5d')]);}})[_0xba20('0x37')](respondWithResult(_0x5106c3,null))[_0xba20('0x25')](handleError(_0x5106c3,null));};exports['removeImap']=function(_0x262f5e,_0x947b52,_0x24c471){return db['MailAccount'][_0xba20('0x64')]({'where':{'id':_0x262f5e[_0xba20('0x5e')]['id']}})[_0xba20('0x37')](handleEntityNotFound(_0x947b52,null))['then'](function(_0x3c5191){if(_0x3c5191){return _0x3c5191[_0xba20('0x80')](null);}return null;})[_0xba20('0x37')](respondWithStatusCode(_0x947b52,null))[_0xba20('0x25')](handleError(_0x947b52,null));};exports[_0xba20('0x81')]=function(_0x285d9c,_0x5ec3f7,_0x1fa62a){return db['MailAccount']['findOne']({'where':{'id':_0x285d9c[_0xba20('0x5e')]['id']}})[_0xba20('0x37')](handleEntityNotFound(_0x5ec3f7,null))['then'](function(_0x514149){if(_0x514149){return _0x514149[_0xba20('0x81')]();}return null;})[_0xba20('0x37')](respondWithResult(_0x5ec3f7,null))[_0xba20('0x25')](handleError(_0x5ec3f7,null));};exports['addSmtp']=function(_0x556e4a,_0x4adc51,_0x8f33ab){if(_0x556e4a[_0xba20('0x5d')]['id']){delete _0x556e4a['body']['id'];}return db[_0xba20('0x54')][_0xba20('0x5c')]({'where':{'id':_0x556e4a[_0xba20('0x5e')]['id']}})[_0xba20('0x37')](handleEntityNotFound(_0x4adc51,null))[_0xba20('0x37')](function(_0x431cac){if(_0x431cac){_0x556e4a[_0xba20('0x5d')][_0xba20('0x61')]=_0x431cac['id'];return db[_0xba20('0x59')][_0xba20('0x63')](_0x556e4a[_0xba20('0x5d')]);}})[_0xba20('0x37')](respondWithResult(_0x4adc51,null))[_0xba20('0x25')](handleError(_0x4adc51,null));};exports[_0xba20('0x82')]=function(_0x26bb8a,_0x30c6e8,_0x509c6a){return db[_0xba20('0x54')][_0xba20('0x64')]({'where':{'id':_0x26bb8a[_0xba20('0x5e')]['id']}})[_0xba20('0x37')](handleEntityNotFound(_0x30c6e8,null))['then'](function(_0x4ccb9a){if(_0x4ccb9a){return _0x4ccb9a[_0xba20('0x83')](null);}return null;})['then'](respondWithStatusCode(_0x30c6e8,null))[_0xba20('0x25')](handleError(_0x30c6e8,null));};exports['addInteraction']=function(_0x3cbbb3,_0xa15f83,_0x5c3d9f){return db[_0xba20('0x84')]['find']({'where':{'id':_0x3cbbb3[_0xba20('0x5e')]['id']}})[_0xba20('0x37')](handleEntityNotFound(_0xa15f83,null))[_0xba20('0x37')](function(_0x6ec5af){if(_0x6ec5af){return _0x6ec5af[_0xba20('0x85')](_0x3cbbb3[_0xba20('0x5d')]['ids'],_[_0xba20('0x86')](_0x3cbbb3['body'],['ids','id'])||{});}})['then'](respondWithResult(_0xa15f83,null))[_0xba20('0x25')](handleError(_0xa15f83,null));};exports[_0xba20('0x87')]=function(_0x16547a,_0x3f182e,_0x43e878){var _0x4f32da={'raw':![],'where':{}};var _0x13eb3e={};var _0x3d2703={'count':0x0,'rows':[]};return db[_0xba20('0x54')][_0xba20('0x64')]({'where':{'id':_0x16547a[_0xba20('0x5e')]['id']}})[_0xba20('0x37')](handleEntityNotFound(_0x3f182e,null))[_0xba20('0x37')](function(_0xc4cfa7){if(_0xc4cfa7){_0x13eb3e[_0xba20('0x4a')]=_['keys'](db['MailInteraction'][_0xba20('0x88')]);_0x13eb3e[_0xba20('0x45')]=_[_0xba20('0x44')](_0x16547a[_0xba20('0x45')]);_0x13eb3e[_0xba20('0x4f')]=_[_0xba20('0x46')](_0x13eb3e[_0xba20('0x4a')],_0x13eb3e['query']);_0x4f32da[_0xba20('0x47')]=_[_0xba20('0x46')](_0x13eb3e[_0xba20('0x4a')],qs['fields'](_0x16547a[_0xba20('0x45')][_0xba20('0x48')]));_0x4f32da[_0xba20('0x47')]=_0x4f32da[_0xba20('0x47')][_0xba20('0x49')]?_0x4f32da[_0xba20('0x47')]:_0x13eb3e[_0xba20('0x4a')];if(!_0x16547a['query']['hasOwnProperty']('nolimit')){_0x4f32da[_0xba20('0x2a')]=qs[_0xba20('0x2a')](_0x16547a[_0xba20('0x45')][_0xba20('0x2a')]);_0x4f32da['offset']=qs[_0xba20('0x2c')](_0x16547a[_0xba20('0x45')][_0xba20('0x2c')]);}_0x4f32da['order']=qs[_0xba20('0x65')](_0x16547a[_0xba20('0x45')]['sort']);_0x4f32da[_0xba20('0x4e')]=qs['filters'](_[_0xba20('0x66')](_0x16547a[_0xba20('0x45')],_0x13eb3e[_0xba20('0x4f')]));_0x4f32da[_0xba20('0x4e')][_0xba20('0x61')]=_0xc4cfa7['id'];if(_0x16547a[_0xba20('0x45')][_0xba20('0x50')]){_0x4f32da[_0xba20('0x4e')]=_[_0xba20('0x51')](_0x4f32da[_0xba20('0x4e')],{'$or':_['map'](_0x4f32da[_0xba20('0x47')],function(_0x26cb2c){var _0x46ea9f={};_0x46ea9f[_0x26cb2c]={'$like':'%'+_0x16547a['query'][_0xba20('0x50')]+'%'};return _0x46ea9f;})});}_0x4f32da=_[_0xba20('0x51')]({},_0x4f32da,_0x16547a['options']);return db[_0xba20('0x84')][_0xba20('0x2b')]({'where':_0x4f32da[_0xba20('0x4e')]})['then'](function(_0x5c4c14){_0x3d2703[_0xba20('0x2b')]=_0x5c4c14;if(_0x16547a[_0xba20('0x45')][_0xba20('0x5b')]){_0x4f32da[_0xba20('0x55')]=[{'model':db[_0xba20('0x89')],'as':_0xba20('0x8a'),'required':![]},{'model':db['User'],'as':_0xba20('0x8b'),'attributes':[_0xba20('0x3a'),_0xba20('0x8c'),'internal'],'required':![]},{'model':db[_0xba20('0x8d')],'as':_0xba20('0x8e'),'attributes':['id',_0xba20('0x3a'),'color'],'where':_0x16547a[_0xba20('0x45')][_0xba20('0x8f')]?{'id':_0x16547a[_0xba20('0x45')]['tag']}:undefined,'required':_0x16547a[_0xba20('0x45')][_0xba20('0x8f')]?!![]:![]}];}return db[_0xba20('0x84')][_0xba20('0x56')](_0x4f32da);})[_0xba20('0x37')](function(_0x1b5cd9){_0x3d2703[_0xba20('0x57')]=_0x1b5cd9;return _0x3d2703;});}})[_0xba20('0x37')](respondWithFilteredResult(_0x3f182e,_0x4f32da))['catch'](handleError(_0x3f182e,null));};exports['addApplications']=function addApplications(_0x1776bd,_0x34d509){var _0x47f5b1=_0x1776bd[_0xba20('0x5e')]['id'];var _0x15277f=_0x1776bd[_0xba20('0x5d')];var _0x42ce93=0xc8;var _0x54285c=null;return db[_0xba20('0x90')][_0xba20('0x91')]({'isolationLevel':db['sequelize']['Transaction'][_0xba20('0x92')]['READ_COMMITTED']},function(_0x197560){return db[_0xba20('0x54')][_0xba20('0x64')]({'where':{'id':_0x47f5b1},'transaction':_0x197560})[_0xba20('0x37')](function(_0x4654be){if(_0x4654be){return db[_0xba20('0x93')][_0xba20('0x33')]({'where':{'MailAccountId':_0x47f5b1},'transaction':_0x197560})[_0xba20('0x37')](function(){var _0x5e86a8=_[_0xba20('0x43')](_0x15277f,function(_0x1d089a){_0x1d089a[_0xba20('0x61')]=_0x47f5b1;return _0x1d089a;});return db[_0xba20('0x93')]['bulkCreate'](_0x5e86a8,{'transaction':_0x197560});});}else{_0x42ce93=0x194;_0x54285c=[];}});})[_0xba20('0x37')](function(){if(_0x42ce93!==0x194){return db['MailApplication']['findAndCountAll']({'where':{'MailAccountId':_0x47f5b1},'order':'priority'})[_0xba20('0x37')](function(_0x357c97){_0x54285c=_0x357c97;});}})[_0xba20('0x25')](function(_0x1e6afd){_0x42ce93=0x1f4;logger[_0xba20('0x22')](_0x1e6afd[_0xba20('0x39')]);if(_0x1e6afd[_0xba20('0x3a')]){delete _0x1e6afd['name'];}_0x54285c=_0x1e6afd;})[_0xba20('0x94')](function(){if(_0x54285c===null){_0x34d509[_0xba20('0x38')](_0x42ce93);}else{if(_0x42ce93===0x1f4){_0x34d509[_0xba20('0x27')](_0x42ce93)[_0xba20('0x3b')](_0x54285c);}else{_0x34d509[_0xba20('0x27')](_0x42ce93)[_0xba20('0x2e')](_0x54285c);}}});};exports[_0xba20('0x95')]=function(_0x4b7f71,_0x440684,_0x370dc2){var _0x4dbe4c={};var _0x4a0773={};var _0x53c648;var _0x50e69b;return db[_0xba20('0x54')]['findOne']({'where':{'id':_0x4b7f71[_0xba20('0x5e')]['id']}})['then'](handleEntityNotFound(_0x440684,null))[_0xba20('0x37')](function(_0x4f17f7){if(_0x4f17f7){_0x53c648=_0x4f17f7;_0x4a0773['model']=_['keys'](db[_0xba20('0x93')]['rawAttributes']);_0x4a0773['query']=_[_0xba20('0x44')](_0x4b7f71[_0xba20('0x45')]);_0x4a0773[_0xba20('0x4f')]=_[_0xba20('0x46')](_0x4a0773['model'],_0x4a0773[_0xba20('0x45')]);_0x4dbe4c[_0xba20('0x47')]=_[_0xba20('0x46')](_0x4a0773['model'],qs[_0xba20('0x48')](_0x4b7f71['query'][_0xba20('0x48')]));_0x4dbe4c[_0xba20('0x47')]=_0x4dbe4c[_0xba20('0x47')]['length']?_0x4dbe4c[_0xba20('0x47')]:_0x4a0773[_0xba20('0x4a')];_0x4dbe4c[_0xba20('0x4d')]=qs['sort'](_0x4b7f71[_0xba20('0x45')][_0xba20('0x65')]);_0x4dbe4c[_0xba20('0x4e')]=qs[_0xba20('0x4f')](_['pick'](_0x4b7f71[_0xba20('0x45')],_0x4a0773[_0xba20('0x4f')]));if(_0x4b7f71['query'][_0xba20('0x50')]){_0x4dbe4c['where']=_[_0xba20('0x51')](_0x4dbe4c[_0xba20('0x4e')],{'$or':_[_0xba20('0x43')](_0x4dbe4c[_0xba20('0x47')],function(_0x363696){var _0x52a929={};_0x52a929[_0x363696]={'$like':'%'+_0x4b7f71['query'][_0xba20('0x50')]+'%'};return _0x52a929;})});}_0x4dbe4c=_['merge']({},_0x4dbe4c,_0x4b7f71[_0xba20('0x53')]);return _0x53c648['getApplications'](_0x4dbe4c);}})[_0xba20('0x37')](function(_0x13e35b){if(_0x13e35b){_0x50e69b=_0x13e35b['length'];if(!_0x4b7f71[_0xba20('0x45')][_0xba20('0x4b')](_0xba20('0x4c'))){_0x4dbe4c[_0xba20('0x2a')]=qs[_0xba20('0x2a')](_0x4b7f71[_0xba20('0x45')]['limit']);_0x4dbe4c[_0xba20('0x2c')]=qs[_0xba20('0x2c')](_0x4b7f71[_0xba20('0x45')][_0xba20('0x2c')]);}return _0x53c648['getApplications'](_0x4dbe4c);}})[_0xba20('0x37')](function(_0x19d5e1){if(_0x19d5e1){return _0x19d5e1?{'count':_0x50e69b,'rows':_0x19d5e1}:null;}})['then'](respondWithResult(_0x440684,null))['catch'](handleError(_0x440684,null));};exports[_0xba20('0x96')]=function(_0x549311,_0x16794e,_0x4a5117){var _0x37bd0c={'raw':!![],'where':{}};var _0x5e3442={};var _0x2071c7={'count':0x0,'rows':[]};return db[_0xba20('0x54')][_0xba20('0x64')]({'where':{'id':_0x549311[_0xba20('0x5e')]['id']}})[_0xba20('0x37')](handleEntityNotFound(_0x16794e,null))['then'](function(_0x34e470){if(_0x34e470){_0x5e3442[_0xba20('0x4a')]=_['keys'](db[_0xba20('0x97')][_0xba20('0x88')]);_0x5e3442[_0xba20('0x45')]=_[_0xba20('0x44')](_0x549311[_0xba20('0x45')]);_0x5e3442[_0xba20('0x4f')]=_[_0xba20('0x46')](_0x5e3442[_0xba20('0x4a')],_0x5e3442['query']);_0x37bd0c[_0xba20('0x47')]=_[_0xba20('0x46')](_0x5e3442[_0xba20('0x4a')],qs[_0xba20('0x48')](_0x549311[_0xba20('0x45')][_0xba20('0x48')]));_0x37bd0c['attributes']=_0x37bd0c[_0xba20('0x47')][_0xba20('0x49')]?_0x37bd0c[_0xba20('0x47')]:_0x5e3442[_0xba20('0x4a')];if(!_0x549311['query'][_0xba20('0x4b')](_0xba20('0x4c'))){_0x37bd0c[_0xba20('0x2a')]=qs['limit'](_0x549311[_0xba20('0x45')][_0xba20('0x2a')]);_0x37bd0c[_0xba20('0x2c')]=qs[_0xba20('0x2c')](_0x549311[_0xba20('0x45')]['offset']);}_0x37bd0c[_0xba20('0x4d')]=qs['sort'](_0x549311['query'][_0xba20('0x65')]);_0x37bd0c[_0xba20('0x4e')]=qs[_0xba20('0x4f')](_['pick'](_0x549311[_0xba20('0x45')],_0x5e3442[_0xba20('0x4f')]));_0x37bd0c[_0xba20('0x4e')][_0xba20('0x61')]=_0x34e470['id'];if(_0x549311[_0xba20('0x45')][_0xba20('0x50')]){_0x37bd0c['where']=_[_0xba20('0x51')](_0x37bd0c['where'],{'$or':_['map'](_0x37bd0c['attributes'],function(_0x22b346){var _0x44bcf3={};_0x44bcf3[_0x22b346]={'$like':'%'+_0x549311[_0xba20('0x45')][_0xba20('0x50')]+'%'};return _0x44bcf3;})});}if(_0x549311[_0xba20('0x45')]['$gte']){var _0x120c29=_0x549311['query'][_0xba20('0x98')][_0xba20('0x99')](',');var _0x50be4b={};_0x50be4b[_0x120c29[0x0]]={'$gte':moment(_0x120c29[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x37bd0c[_0xba20('0x4e')]=_[_0xba20('0x51')](_0x37bd0c[_0xba20('0x4e')],_0x50be4b);}_0x37bd0c=_[_0xba20('0x51')]({},_0x37bd0c,_0x549311['options']);return db[_0xba20('0x97')][_0xba20('0x2b')]({'where':_0x37bd0c[_0xba20('0x4e')]})[_0xba20('0x37')](function(_0x58a7a9){_0x2071c7[_0xba20('0x2b')]=_0x58a7a9;if(_0x549311[_0xba20('0x45')][_0xba20('0x5b')]){_0x37bd0c['include']=[{'all':!![]}];}return db['MailMessage'][_0xba20('0x56')](_0x37bd0c);})['then'](function(_0x128842){if(_0x549311[_0xba20('0x45')][_0xba20('0x9a')]===_0xba20('0x9b')){for(var _0x31d2b8=0x0;_0x31d2b8<_0x128842[_0xba20('0x49')];_0x31d2b8++){_0x128842[_0x31d2b8][_0xba20('0x5d')]=juice(_0x128842[_0x31d2b8]['body']);}}_0x2071c7[_0xba20('0x57')]=_0x128842;return _0x2071c7;});}})[_0xba20('0x37')](respondWithFilteredResult(_0x16794e,_0x37bd0c))[_0xba20('0x25')](handleError(_0x16794e,null));};exports[_0xba20('0x3b')]=function(_0x4164f0,_0x3b227a,_0x25b567){var _0x245d8e,_0x15c8bf={},_0x48081f;if(_0x4164f0[_0xba20('0x5d')]['to']){_0x48081f=_0x4164f0[_0xba20('0x5d')]['to'][_0xba20('0x99')](',')[0x0];}return db[_0xba20('0x54')][_0xba20('0x5c')]({'where':{'id':_0x4164f0[_0xba20('0x5e')]['id']},'include':[{'model':db['CmList'],'as':_0xba20('0x9c'),'include':[{'model':db[_0xba20('0x89')],'as':_0xba20('0x9d'),'where':{'email':_0x48081f},'limit':0x1,'order':[[_0xba20('0x9e'),'DESC']]}]},{'model':db['MailServerOut'],'as':_0xba20('0x3f'),'raw':!![]}]})[_0xba20('0x37')](handleEntityNotFound(_0x3b227a,null))[_0xba20('0x37')](function(_0x17cc43){if(_0x17cc43){_0x245d8e=_0x17cc43;if(_0x17cc43['Smtp']){if(_[_0xba20('0x6e')](_0x4164f0['body'][_0xba20('0x9f')])){_0x4164f0[_0xba20('0x5d')][_0xba20('0x9f')]=util[_0xba20('0xa0')](_0xba20('0xa1'),_0x17cc43['name'],_0x17cc43[_0xba20('0xa2')]||_0x17cc43['Smtp'][_0xba20('0x71')]);}if(_0x4164f0[_0xba20('0x5d')][_0xba20('0xa3')]&&_0x4164f0[_0xba20('0x5d')][_0xba20('0xa3')][_0xba20('0x49')]){for(var _0x598c91=0x0;_0x598c91<_0x4164f0['body'][_0xba20('0xa3')][_0xba20('0x49')];_0x598c91+=0x1){_0x4164f0[_0xba20('0x5d')][_0xba20('0xa3')][_0x598c91]={'filename':_0x4164f0[_0xba20('0x5d')][_0xba20('0xa3')][_0x598c91]['name'],'path':path[_0xba20('0xa4')](config[_0xba20('0xa5')],_0xba20('0xa6'),_0x4164f0[_0xba20('0x5d')][_0xba20('0xa3')][_0x598c91][_0xba20('0xa7')])};}}var _0x53144a={'tls':{'rejectUnauthorized':![]}};if(_[_0xba20('0x6e')](_0x17cc43[_0xba20('0x3f')][_0xba20('0x78')])){if(_0x17cc43['Smtp']['authentication']){_0x53144a[_0xba20('0xa8')]={'user':_0x17cc43['Smtp']['user'],'pass':_0x17cc43[_0xba20('0x3f')][_0xba20('0x79')]};}_0x53144a[_0xba20('0x76')]=_0x17cc43['Smtp']['host'];_0x53144a[_0xba20('0x77')]=_0x17cc43[_0xba20('0x3f')][_0xba20('0x77')];_0x53144a[_0xba20('0xa9')]=_0x17cc43[_0xba20('0x3f')][_0xba20('0xa9')];}else{_0x53144a[_0xba20('0x78')]=_0x17cc43['Smtp']['service'];_0x53144a[_0xba20('0xa8')]={'user':_0x17cc43[_0xba20('0x3f')][_0xba20('0x71')],'pass':_0x17cc43[_0xba20('0x3f')][_0xba20('0x79')]};}return respondWithRpcPromise(_0xba20('0xaa'),_0xba20('0xab'),{'account':_0x53144a,'message':_0x4164f0[_0xba20('0x5d')]});}else{throw new Error(_0xba20('0xac'));}}})['then'](function(_0xce8b2b){if(_0xce8b2b){_0x15c8bf=_0xce8b2b;if(_0x245d8e[_0xba20('0x9c')]){if(_0x245d8e[_0xba20('0x9c')][_0xba20('0x9d')][_0xba20('0x49')]){return _0x245d8e[_0xba20('0x9c')][_0xba20('0x9d')][0x0];}else{return db[_0xba20('0x89')]['create'](_[_0xba20('0xad')](_0x4164f0[_0xba20('0x5d')],{'firstName':_0x4164f0['body']['to'],'email':_0x4164f0[_0xba20('0x5d')]['to'],'phone':_0x4164f0[_0xba20('0x5d')]['to'],'ListId':_0x245d8e['ListId']}));}}else{throw new Error(_0xba20('0xac'));}}})['then'](function(_0x33f31e){if(_0x33f31e){var _0x102a67={'UserId':_0x4164f0[_0xba20('0x71')]['id'],'ContactId':_0x33f31e['id'],'MailAccountId':_0x245d8e['id'],'inReplyTo':_0x15c8bf['messageId'],'to':_0x4164f0[_0xba20('0x5d')][_0xba20('0x9f')],'cc':_0x4164f0[_0xba20('0x5d')]['cc'],'subject':_0x4164f0[_0xba20('0x5d')][_0xba20('0xae')],'attach':_0x4164f0[_0xba20('0x5d')][_0xba20('0xaf')],'firstMsgDirection':_0xba20('0xb0'),'lastMsgAt':moment()[_0xba20('0xa0')](_0xba20('0xb1')),'lastMsgDirection':'out','Messages':[_[_0xba20('0x51')](_0x4164f0['body'],{'messageId':_0x15c8bf[_0xba20('0xb2')],'sentAt':moment()['format'](_0xba20('0xb1')),'read':!![],'MailAccountId':_0x245d8e['id'],'UserId':_0x4164f0[_0xba20('0x71')]['id'],'ContactId':_0x33f31e['id']})]};if(_0x4164f0['body'][_0xba20('0xb3')]){_0x102a67=_[_0xba20('0x51')](_0x102a67,_0x4164f0['body'][_0xba20('0xb3')]);}return db[_0xba20('0x84')][_0xba20('0x63')](_0x102a67,{'include':[{'model':db['MailMessage'],'as':_0xba20('0xb4')}]});}})[_0xba20('0x37')](respondWithResult(_0x3b227a,null))[_0xba20('0x25')](handleError(_0x3b227a,null));};exports[_0xba20('0xb5')]=function(_0x1e23d3,_0x3cf045,_0x3cca5c){return db[_0xba20('0x54')][_0xba20('0x5c')]({'where':{'id':_0x1e23d3[_0xba20('0x5e')]['id']},'include':[{'model':db['MailServerOut'],'as':'Smtp','raw':!![]}]})[_0xba20('0x37')](handleEntityNotFound(_0x3cf045,null))[_0xba20('0x37')](function(_0x53d5e0){if(_0x53d5e0&&_0x53d5e0[_0xba20('0x3f')]){var _0x428e89={'id':_0x53d5e0['id'],'tls':{'rejectUnauthorized':![]}};if(_0x53d5e0[_0xba20('0x3f')][_0xba20('0x78')]){_0x428e89[_0xba20('0x78')]=_0x53d5e0[_0xba20('0x3f')]['service'];}else{_0x428e89[_0xba20('0x76')]=_0x53d5e0[_0xba20('0x3f')][_0xba20('0x76')];_0x428e89[_0xba20('0x77')]=_0x53d5e0['Smtp'][_0xba20('0x77')];_0x428e89[_0xba20('0xa9')]=_0x53d5e0['Smtp'][_0xba20('0xa9')];}if(_0x53d5e0[_0xba20('0x3f')][_0xba20('0x75')]){_0x428e89[_0xba20('0xa8')]={'user':_0x53d5e0[_0xba20('0x3f')][_0xba20('0x71')],'pass':_0x53d5e0[_0xba20('0x3f')][_0xba20('0x79')]};}return respondWithRpcPromise(_0xba20('0xb6'),_0xba20('0xb5'),{'account':_0x428e89});}})[_0xba20('0x37')](respondWithResult(_0x3cf045,null))[_0xba20('0x25')](handleError(_0x3cf045,null));};exports[_0xba20('0x33')]=function(_0x1ba09f,_0x560f79){return db[_0xba20('0x54')]['find']({'where':{'id':_0x1ba09f[_0xba20('0x5e')]['id']}})[_0xba20('0x37')](handleEntityNotFound(_0x560f79,null))[_0xba20('0x37')](function(_0x413620){if(_0x413620&&_0x413620[_0xba20('0x78')]){throw new db[(_0xba20('0xb7'))]['ValidationError'](_0xba20('0xb8'));}return _0x413620;})['then'](removeEntity(_0x560f79,null))[_0xba20('0x25')](handleError(_0x560f79,null));};exports[_0xba20('0xb9')]=function(_0x3526d4,_0x3981f7,_0x4d238f){return db['MailAccount'][_0xba20('0x5c')]({'where':{'id':_0x3526d4['params']['id']}})[_0xba20('0x37')](handleEntityNotFound(_0x3981f7,null))[_0xba20('0x37')](function(_0x3fdf44){if(_0x3fdf44){return _0x3fdf44[_0xba20('0xb9')](_0x3526d4[_0xba20('0x5d')]['ids'],_[_0xba20('0x86')](_0x3526d4['body'],[_0xba20('0x68'),'id'])||{})[_0xba20('0xba')](function(_0x57e4d5){for(var _0x25833e=0x0;_0x25833e<_0x3526d4[_0xba20('0x5d')][_0xba20('0x68')][_0xba20('0x49')];_0x25833e+=0x1){socket[_0xba20('0xbb')](_0xba20('0xbc'),{'UserId':Number(_0x3526d4[_0xba20('0x5d')]['ids'][_0x25833e]),'MailAccountId':Number(_0x3526d4[_0xba20('0x5e')]['id'])});}return _0x57e4d5;});}})[_0xba20('0x37')](respondWithResult(_0x3981f7,null))[_0xba20('0x25')](handleError(_0x3981f7,null));};exports[_0xba20('0xbd')]=function(_0x4cb2ec,_0x2bdc2f,_0x21d7d3){return db[_0xba20('0x54')][_0xba20('0x5c')]({'where':{'id':_0x4cb2ec['params']['id']}})[_0xba20('0x37')](handleEntityNotFound(_0x2bdc2f,null))['then'](function(_0x2d633a){if(_0x2d633a){return _0x2d633a[_0xba20('0xbd')](_0x4cb2ec[_0xba20('0x45')][_0xba20('0x68')])[_0xba20('0x37')](function(){if(_[_0xba20('0xbe')](_0x4cb2ec[_0xba20('0x45')][_0xba20('0x68')])){for(var _0x2c0a7d=0x0;_0x2c0a7d<_0x4cb2ec[_0xba20('0x45')][_0xba20('0x68')][_0xba20('0x49')];_0x2c0a7d+=0x1){socket[_0xba20('0xbb')](_0xba20('0xbf'),{'UserId':Number(_0x4cb2ec['query']['ids'][_0x2c0a7d]),'MailAccountId':Number(_0x4cb2ec[_0xba20('0x5e')]['id'])});}}else{socket[_0xba20('0xbb')]('userMailAccount:remove',{'UserId':Number(_0x4cb2ec[_0xba20('0x45')]['ids']),'MailAccountId':Number(_0x4cb2ec[_0xba20('0x5e')]['id'])});}});}})['then'](respondWithStatusCode(_0x2bdc2f,null))[_0xba20('0x25')](handleError(_0x2bdc2f,null));};exports[_0xba20('0xc0')]=function(_0x394e96,_0x411ecf,_0x37a926){var _0x5034c4={};var _0x77ee77={};var _0x574125;var _0xa2e5ce;return db[_0xba20('0x54')][_0xba20('0x64')]({'where':{'id':_0x394e96[_0xba20('0x5e')]['id']}})['then'](handleEntityNotFound(_0x411ecf,null))[_0xba20('0x37')](function(_0x4347b8){if(_0x4347b8){_0x574125=_0x4347b8;_0x77ee77[_0xba20('0x4a')]=_['keys'](db['User'][_0xba20('0x88')]);_0x77ee77['query']=_[_0xba20('0x44')](_0x394e96['query']);_0x77ee77[_0xba20('0x4f')]=_[_0xba20('0x46')](_0x77ee77[_0xba20('0x4a')],_0x77ee77[_0xba20('0x45')]);_0x5034c4[_0xba20('0x47')]=_[_0xba20('0x46')](_0x77ee77[_0xba20('0x4a')],qs[_0xba20('0x48')](_0x394e96[_0xba20('0x45')]['fields']));_0x5034c4[_0xba20('0x47')]=_0x5034c4['attributes']['length']?_0x5034c4[_0xba20('0x47')]:_0x77ee77['model'];_0x5034c4[_0xba20('0x4d')]=qs[_0xba20('0x65')](_0x394e96[_0xba20('0x45')][_0xba20('0x65')]);_0x5034c4[_0xba20('0x4e')]=qs[_0xba20('0x4f')](_['pick'](_0x394e96[_0xba20('0x45')],_0x77ee77['filters']));if(_0x394e96[_0xba20('0x45')][_0xba20('0x50')]){_0x5034c4[_0xba20('0x4e')]=_[_0xba20('0x51')](_0x5034c4['where'],{'$or':_[_0xba20('0x43')](_0x5034c4['attributes'],function(_0x22a160){var _0x4a9033={};_0x4a9033[_0x22a160]={'$like':'%'+_0x394e96['query'][_0xba20('0x50')]+'%'};return _0x4a9033;})});}_0x5034c4=_[_0xba20('0x51')]({},_0x5034c4,_0x394e96[_0xba20('0x53')]);return _0x574125[_0xba20('0xc0')](_0x5034c4);}})[_0xba20('0x37')](function(_0x1b9537){if(_0x1b9537){_0xa2e5ce=_0x1b9537[_0xba20('0x49')];if(!_0x394e96[_0xba20('0x45')]['hasOwnProperty'](_0xba20('0x4c'))){_0x5034c4[_0xba20('0x2a')]=qs['limit'](_0x394e96[_0xba20('0x45')][_0xba20('0x2a')]);_0x5034c4[_0xba20('0x2c')]=qs[_0xba20('0x2c')](_0x394e96[_0xba20('0x45')][_0xba20('0x2c')]);}return _0x574125[_0xba20('0xc0')](_0x5034c4);}})[_0xba20('0x37')](function(_0x5a8560){if(_0x5a8560){return _0x5a8560?{'count':_0xa2e5ce,'rows':_0x5a8560}:null;}})[_0xba20('0x37')](respondWithResult(_0x411ecf,null))[_0xba20('0x25')](handleError(_0x411ecf,null));};
\ No newline at end of file
+var _0x0dc1=['desk.js','to-csv','html-to-text','juice','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','socket.io-emitter','redis','./mailAccount.socket','register','jayson/promise','request','then','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','MailAccount,\x20%s,\x20%s','message','info','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','save','destroy','get','MailAccounts','UserProfileResource','stack','name','index','MailServerIn','MailServerOut','Smtp','Pause','mandatoryDispositionPause','map','MailAccount','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','rows','Imap','keys','filters','include','find','update','body','describe','addDisposition','Disposition','create','getDispositions','params','findAll','removeDispositions','ids','addAnswer','MailAccountId','CannedAnswer','nolimit','removeAnswers','ListId','active','isNil','cservice','cauthentication','cuser','password','cpassword','authentication','host','port','service','user','pass','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','getImap','findOne','addImap','removeImap','setImap','getSmtp','addSmtp','addInteraction','MailInteraction','omit','getInteractions','CmContact','Contact','Owner','internal','Tags','color','tag','addApplications','sequelize','MailApplication','bulkCreate','findAndCountAll','priority','finally','send','getApplications','getMessages','$gte','format','MailMessage','inlineCss','CmList','Contacts','updatedAt','DESC','from','%s\x20<%s>','email','attachments','join','root','server/files/attachments','secure','List\x20not\x20found','List','messageId','subject','attach','YYYY-MM-DD\x20HH:mm:ss','out','Interaction','Messages','verifySmtp','auth','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','ejs','fs-extra','crypto','jsforce'];(function(_0x5d44e9,_0x4bc46b){var _0x38d196=function(_0x33a769){while(--_0x33a769){_0x5d44e9['push'](_0x5d44e9['shift']());}};_0x38d196(++_0x4bc46b);}(_0x0dc1,0xb6));var _0x10dc=function(_0x56b0e0,_0x33d3a7){_0x56b0e0=_0x56b0e0-0x0;var _0x203de0=_0x0dc1[_0x56b0e0];return _0x203de0;};'use strict';var emlformat=require(_0x10dc('0x0'));var rimraf=require(_0x10dc('0x1'));var zipdir=require(_0x10dc('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x10dc('0x3'));var BPromise=require(_0x10dc('0x4'));var Mustache=require(_0x10dc('0x5'));var util=require(_0x10dc('0x6'));var path=require(_0x10dc('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x10dc('0x8'));var fs=require('fs');var fs_extra=require(_0x10dc('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x10dc('0xa'));var jsforce=require(_0x10dc('0xb'));var deskjs=require(_0x10dc('0xc'));var toCsv=require(_0x10dc('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var htmlToText=require(_0x10dc('0xe'));var juice=require(_0x10dc('0xf'));var Redis=require(_0x10dc('0x10'));var authService=require(_0x10dc('0x11'));var qs=require(_0x10dc('0x12'));var as=require(_0x10dc('0x13'));var hardwareService=require(_0x10dc('0x14'));var logger=require(_0x10dc('0x15'))(_0x10dc('0x16'));var utils=require(_0x10dc('0x17'));var config=require(_0x10dc('0x18'));var licenseUtil=require(_0x10dc('0x19'));var db=require(_0x10dc('0x1a'))['db'];config['redis']=_[_0x10dc('0x1b')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x10dc('0x1c'))(new Redis(config[_0x10dc('0x1d')]));require(_0x10dc('0x1e'))[_0x10dc('0x1f')](socket);var jayson=require(_0x10dc('0x20'));var client=jayson['client']['http']({'port':0x232b});function respondWithRpcPromise(_0xf6be83,_0x1c46fb,_0x4d8af4,_0x465374){return new BPromise(function(_0x97659,_0xc435e9){var _0x19e892=_0x465374||client;return _0x19e892[_0x10dc('0x21')](_0xf6be83,_0x4d8af4)[_0x10dc('0x22')](function(_0x1cba20){logger['info']('MailAccount,\x20%s,\x20%s',_0x1c46fb,'request\x20sent');logger[_0x10dc('0x23')](_0x10dc('0x24'),_0x1c46fb,_0x10dc('0x25'),JSON[_0x10dc('0x26')](_0x1cba20));if(_0x1cba20[_0x10dc('0x27')]){if(_0x1cba20['error'][_0x10dc('0x28')]===0x1f4){logger[_0x10dc('0x27')](_0x10dc('0x29'),_0x1c46fb,_0x1cba20[_0x10dc('0x27')][_0x10dc('0x2a')]);return _0xc435e9(_0x1cba20['error'][_0x10dc('0x2a')]);}logger[_0x10dc('0x27')](_0x10dc('0x29'),_0x1c46fb,_0x1cba20['error'][_0x10dc('0x2a')]);return _0x97659(_0x1cba20[_0x10dc('0x27')][_0x10dc('0x2a')]);}else{logger[_0x10dc('0x2b')](_0x10dc('0x29'),_0x1c46fb,_0x10dc('0x25'));_0x97659(_0x1cba20[_0x10dc('0x2c')][_0x10dc('0x2a')]);}})[_0x10dc('0x2d')](function(_0x555c5d){logger[_0x10dc('0x27')](_0x10dc('0x29'),_0x1c46fb,_0x555c5d);_0xc435e9(_0x555c5d);});});}function respondWithStatusCode(_0x4ad87e,_0x1dd543){_0x1dd543=_0x1dd543||0xcc;return function(_0x580b9d){if(_0x580b9d){return _0x4ad87e[_0x10dc('0x2e')](_0x1dd543);}return _0x4ad87e[_0x10dc('0x2f')](_0x1dd543)[_0x10dc('0x30')]();};}function respondWithResult(_0x2dfa5b,_0x53d095){_0x53d095=_0x53d095||0xc8;return function(_0x3283fc){if(_0x3283fc){return _0x2dfa5b[_0x10dc('0x2f')](_0x53d095)[_0x10dc('0x31')](_0x3283fc);}};}function respondWithFilteredResult(_0xeaf1e3,_0x16741d){return function(_0x227dee){if(_0x227dee){var _0x446067=typeof _0x16741d[_0x10dc('0x32')]===_0x10dc('0x33')&&typeof _0x16741d['limit']===_0x10dc('0x33');var _0x497b42=_0x227dee['count'];var _0x169233=_0x446067?0x0:_0x16741d[_0x10dc('0x32')];var _0x1ef4e0=_0x446067?_0x227dee[_0x10dc('0x34')]:_0x16741d[_0x10dc('0x32')]+_0x16741d[_0x10dc('0x35')];var _0x5a96c4;if(_0x1ef4e0>=_0x497b42){_0x1ef4e0=_0x497b42;_0x5a96c4=0xc8;}else{_0x5a96c4=0xce;}_0xeaf1e3[_0x10dc('0x2f')](_0x5a96c4);return _0xeaf1e3[_0x10dc('0x36')]('Content-Range',_0x169233+'-'+_0x1ef4e0+'/'+_0x497b42)[_0x10dc('0x31')](_0x227dee);}return null;};}function patchUpdates(_0x351e2b){return function(_0x296e62){try{jsonpatch['apply'](_0x296e62,_0x351e2b,!![]);}catch(_0x160918){return BPromise['reject'](_0x160918);}return _0x296e62[_0x10dc('0x37')]();};}function saveUpdates(_0x57311e,_0x2375a8){return function(_0x279612){if(_0x279612){return _0x279612['update'](_0x57311e)['then'](function(_0x3280e3){return _0x3280e3;});}return null;};}function removeEntity(_0x3f4675,_0x1cfdeb){return function(_0x4f0437){if(_0x4f0437){return _0x4f0437[_0x10dc('0x38')]()[_0x10dc('0x22')](function(){var _0x57538a=_0x4f0437[_0x10dc('0x39')]({'plain':!![]});var _0x51c07b=_0x10dc('0x3a');return db[_0x10dc('0x3b')][_0x10dc('0x38')]({'where':{'type':_0x51c07b,'resourceId':_0x57538a['id']}})[_0x10dc('0x22')](function(){return _0x4f0437;});})[_0x10dc('0x22')](function(){_0x3f4675[_0x10dc('0x2f')](0xcc)[_0x10dc('0x30')]();});}};}function handleEntityNotFound(_0x336660,_0x2f7f0b){return function(_0x4ee840){if(!_0x4ee840){_0x336660['sendStatus'](0x194);}return _0x4ee840;};}function handleError(_0x17d44e,_0x1864da){_0x1864da=_0x1864da||0x1f4;return function(_0x1174c1){logger[_0x10dc('0x27')](_0x1174c1[_0x10dc('0x3c')]);if(_0x1174c1[_0x10dc('0x3d')]){delete _0x1174c1[_0x10dc('0x3d')];}_0x17d44e[_0x10dc('0x2f')](_0x1864da)['send'](_0x1174c1);};}exports[_0x10dc('0x3e')]=function(_0x361c85,_0x3f41b4){var _0x1469c3={'include':[{'model':db[_0x10dc('0x3f')],'as':'Imap'},{'model':db[_0x10dc('0x40')],'as':_0x10dc('0x41')},{'model':db[_0x10dc('0x42')],'as':_0x10dc('0x43')}]},_0x12b141={},_0x1a091b={'count':0x0,'rows':[]};var _0xd949f5=_[_0x10dc('0x44')](db[_0x10dc('0x45')][_0x10dc('0x46')],function(_0x701fc5){return{'name':_0x701fc5[_0x10dc('0x47')],'type':_0x701fc5[_0x10dc('0x48')][_0x10dc('0x49')]};});_0x12b141[_0x10dc('0x4a')]=_['map'](_0xd949f5,_0x10dc('0x3d'));_0x12b141[_0x10dc('0x4b')]=_['keys'](_0x361c85[_0x10dc('0x4b')]);_0x12b141['filters']=_[_0x10dc('0x4c')](_0x12b141[_0x10dc('0x4a')],_0x12b141[_0x10dc('0x4b')]);_0x1469c3[_0x10dc('0x4d')]=_[_0x10dc('0x4c')](_0x12b141[_0x10dc('0x4a')],qs[_0x10dc('0x4e')](_0x361c85[_0x10dc('0x4b')][_0x10dc('0x4e')]));_0x1469c3[_0x10dc('0x4d')]=_0x1469c3[_0x10dc('0x4d')][_0x10dc('0x4f')]?_0x1469c3[_0x10dc('0x4d')]:_0x12b141[_0x10dc('0x4a')];if(!_0x361c85['query'][_0x10dc('0x50')]('nolimit')){_0x1469c3['limit']=qs[_0x10dc('0x35')](_0x361c85[_0x10dc('0x4b')][_0x10dc('0x35')]);_0x1469c3['offset']=qs['offset'](_0x361c85['query'][_0x10dc('0x32')]);}_0x1469c3[_0x10dc('0x51')]=qs[_0x10dc('0x52')](_0x361c85[_0x10dc('0x4b')][_0x10dc('0x52')]);_0x1469c3[_0x10dc('0x53')]=qs['filters'](_[_0x10dc('0x54')](_0x361c85[_0x10dc('0x4b')],_0x12b141['filters']),_0xd949f5);if(_0x361c85[_0x10dc('0x4b')]['filter']){_0x1469c3[_0x10dc('0x53')]=_['merge'](_0x1469c3['where'],{'$or':_[_0x10dc('0x44')](_0xd949f5,function(_0x8c0d52){if(_0x8c0d52[_0x10dc('0x48')]!=='VIRTUAL'){var _0x5e8b42={};_0x5e8b42[_0x8c0d52[_0x10dc('0x3d')]]={'$like':'%'+_0x361c85['query'][_0x10dc('0x55')]+'%'};return _0x5e8b42;}})});}_0x1469c3=_[_0x10dc('0x56')]({},_0x1469c3,_0x361c85[_0x10dc('0x57')]);var _0x6ff692={'where':_0x1469c3['where']};return db[_0x10dc('0x45')][_0x10dc('0x34')](_0x6ff692)['then'](function(_0x3a81e7){_0x1a091b['count']=_0x3a81e7;if(_0x361c85[_0x10dc('0x4b')][_0x10dc('0x58')]){_0x1469c3['include']=[{'all':!![]}];}return db[_0x10dc('0x45')]['findAll'](_0x1469c3);})[_0x10dc('0x22')](function(_0x5f2b06){_0x1a091b[_0x10dc('0x59')]=_0x5f2b06;return _0x1a091b;})[_0x10dc('0x22')](respondWithFilteredResult(_0x3f41b4,_0x1469c3))['catch'](handleError(_0x3f41b4,null));};exports['show']=function(_0x18afcd,_0x4029a1){var _0x325cb9={'raw':![],'where':{'id':_0x18afcd['params']['id']},'include':[{'model':db[_0x10dc('0x3f')],'as':_0x10dc('0x5a')},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x114d34={};_0x114d34[_0x10dc('0x4a')]=_['keys'](db['MailAccount'][_0x10dc('0x46')]);_0x114d34[_0x10dc('0x4b')]=_[_0x10dc('0x5b')](_0x18afcd[_0x10dc('0x4b')]);_0x114d34[_0x10dc('0x5c')]=_[_0x10dc('0x4c')](_0x114d34[_0x10dc('0x4a')],_0x114d34[_0x10dc('0x4b')]);_0x325cb9['attributes']=_[_0x10dc('0x4c')](_0x114d34[_0x10dc('0x4a')],qs[_0x10dc('0x4e')](_0x18afcd[_0x10dc('0x4b')][_0x10dc('0x4e')]));_0x325cb9['attributes']=_0x325cb9[_0x10dc('0x4d')][_0x10dc('0x4f')]?_0x325cb9[_0x10dc('0x4d')]:_0x114d34[_0x10dc('0x4a')];if(_0x18afcd[_0x10dc('0x4b')][_0x10dc('0x58')]){_0x325cb9[_0x10dc('0x5d')]=[{'all':!![]}];}_0x325cb9=_[_0x10dc('0x56')]({},_0x325cb9,_0x18afcd[_0x10dc('0x57')]);return db[_0x10dc('0x45')][_0x10dc('0x5e')](_0x325cb9)[_0x10dc('0x22')](handleEntityNotFound(_0x4029a1,null))[_0x10dc('0x22')](respondWithResult(_0x4029a1,null))['catch'](handleError(_0x4029a1,null));};exports[_0x10dc('0x5f')]=function(_0x4e842e,_0x5bab8a){if(_0x4e842e[_0x10dc('0x60')]['id']){delete _0x4e842e[_0x10dc('0x60')]['id'];}return db[_0x10dc('0x45')][_0x10dc('0x5e')]({'where':{'id':_0x4e842e['params']['id']},'include':[{'model':db[_0x10dc('0x3f')],'as':_0x10dc('0x5a')},{'model':db['MailServerOut'],'as':_0x10dc('0x41')},{'model':db[_0x10dc('0x42')],'as':'mandatoryDispositionPause'}]})[_0x10dc('0x22')](handleEntityNotFound(_0x5bab8a,null))[_0x10dc('0x22')](saveUpdates(_0x4e842e['body'],null))[_0x10dc('0x22')](function(_0x3ebee9){if(_0x3ebee9&&_0x4e842e[_0x10dc('0x60')]['Imap']){return db[_0x10dc('0x3f')][_0x10dc('0x5f')](_0x4e842e[_0x10dc('0x60')][_0x10dc('0x5a')],{'where':{'MailAccountId':_0x3ebee9['id']}})[_0x10dc('0x22')](function(){return _0x3ebee9;});}return _0x3ebee9;})[_0x10dc('0x22')](function(_0x5d0966){if(_0x5d0966&&_0x4e842e[_0x10dc('0x60')][_0x10dc('0x41')]){return db[_0x10dc('0x40')][_0x10dc('0x5f')](_0x4e842e[_0x10dc('0x60')][_0x10dc('0x41')],{'where':{'MailAccountId':_0x5d0966['id']}})[_0x10dc('0x22')](function(){return _0x5d0966;});}return _0x5d0966;})[_0x10dc('0x22')](respondWithResult(_0x5bab8a,null))[_0x10dc('0x2d')](handleError(_0x5bab8a,null));};exports[_0x10dc('0x61')]=function(_0x367b51,_0x2c6abd){return db['MailAccount'][_0x10dc('0x61')]()['then'](respondWithResult(_0x2c6abd,null))[_0x10dc('0x2d')](handleError(_0x2c6abd,null));};exports[_0x10dc('0x62')]=function(_0x315638,_0x1b203a,_0x42b1c2){if(_0x315638[_0x10dc('0x60')]['id']){delete _0x315638['body']['id'];}return db[_0x10dc('0x45')][_0x10dc('0x5e')]({'where':{'id':_0x315638['params']['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x1b203a,null))[_0x10dc('0x22')](function(_0x3373e5){if(_0x3373e5){_0x315638['body']['MailAccountId']=_0x3373e5['id'];return db[_0x10dc('0x63')][_0x10dc('0x64')](_0x315638[_0x10dc('0x60')]);}})[_0x10dc('0x22')](respondWithResult(_0x1b203a,null))[_0x10dc('0x2d')](handleError(_0x1b203a,null));};exports[_0x10dc('0x65')]=function(_0x348c1d,_0x1bd88b,_0x5a047d){var _0x5019c9={'raw':![],'where':{}};var _0x211a5f={};var _0x3c6bf9={'count':0x0,'rows':[]};return db[_0x10dc('0x45')]['findOne']({'where':{'id':_0x348c1d[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x1bd88b,null))[_0x10dc('0x22')](function(_0x5de4a4){if(_0x5de4a4){_0x211a5f['model']=_['keys'](db[_0x10dc('0x63')][_0x10dc('0x46')]);_0x211a5f['query']=_['keys'](_0x348c1d['query']);_0x211a5f[_0x10dc('0x5c')]=_[_0x10dc('0x4c')](_0x211a5f[_0x10dc('0x4a')],_0x211a5f[_0x10dc('0x4b')]);_0x5019c9[_0x10dc('0x4d')]=_[_0x10dc('0x4c')](_0x211a5f[_0x10dc('0x4a')],qs['fields'](_0x348c1d[_0x10dc('0x4b')][_0x10dc('0x4e')]));_0x5019c9[_0x10dc('0x4d')]=_0x5019c9[_0x10dc('0x4d')][_0x10dc('0x4f')]?_0x5019c9[_0x10dc('0x4d')]:_0x211a5f[_0x10dc('0x4a')];if(!_0x348c1d[_0x10dc('0x4b')][_0x10dc('0x50')]('nolimit')){_0x5019c9[_0x10dc('0x35')]=qs[_0x10dc('0x35')](_0x348c1d[_0x10dc('0x4b')][_0x10dc('0x35')]);_0x5019c9['offset']=qs[_0x10dc('0x32')](_0x348c1d[_0x10dc('0x4b')]['offset']);}_0x5019c9['order']=qs[_0x10dc('0x52')](_0x348c1d[_0x10dc('0x4b')][_0x10dc('0x52')]);_0x5019c9['where']=qs[_0x10dc('0x5c')](_[_0x10dc('0x54')](_0x348c1d['query'],_0x211a5f['filters']));_0x5019c9['where']['MailAccountId']=_0x5de4a4['id'];if(_0x348c1d[_0x10dc('0x4b')][_0x10dc('0x55')]){_0x5019c9[_0x10dc('0x53')]=_[_0x10dc('0x56')](_0x5019c9[_0x10dc('0x53')],{'$or':_[_0x10dc('0x44')](_0x5019c9['attributes'],function(_0x288dd4){var _0x129394={};_0x129394[_0x288dd4]={'$like':'%'+_0x348c1d[_0x10dc('0x4b')][_0x10dc('0x55')]+'%'};return _0x129394;})});}_0x5019c9=_[_0x10dc('0x56')]({},_0x5019c9,_0x348c1d[_0x10dc('0x57')]);return db['Disposition'][_0x10dc('0x34')]({'where':_0x5019c9[_0x10dc('0x53')]})['then'](function(_0x5c1fbc){_0x3c6bf9[_0x10dc('0x34')]=_0x5c1fbc;if(_0x348c1d[_0x10dc('0x4b')]['includeAll']){_0x5019c9['include']=[{'all':!![]}];}return db['Disposition'][_0x10dc('0x67')](_0x5019c9);})[_0x10dc('0x22')](function(_0x12420c){_0x3c6bf9[_0x10dc('0x59')]=_0x12420c;return _0x3c6bf9;});}})[_0x10dc('0x22')](respondWithFilteredResult(_0x1bd88b,_0x5019c9))['catch'](handleError(_0x1bd88b,null));};exports['removeDispositions']=function(_0x24d230,_0x3383f9,_0x428601){return db[_0x10dc('0x45')]['find']({'where':{'id':_0x24d230[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x3383f9,null))[_0x10dc('0x22')](function(_0x562e5c){if(_0x562e5c){return _0x562e5c[_0x10dc('0x68')](_0x24d230[_0x10dc('0x4b')][_0x10dc('0x69')]);}})[_0x10dc('0x22')](respondWithStatusCode(_0x3383f9,null))[_0x10dc('0x2d')](handleError(_0x3383f9,null));};exports[_0x10dc('0x6a')]=function(_0x2108b0,_0x1cd38f,_0x56dcd4){if(_0x2108b0[_0x10dc('0x60')]['id']){delete _0x2108b0[_0x10dc('0x60')]['id'];}return db[_0x10dc('0x45')]['find']({'where':{'id':_0x2108b0[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x1cd38f,null))[_0x10dc('0x22')](function(_0x42fad7){if(_0x42fad7){_0x2108b0['body'][_0x10dc('0x6b')]=_0x42fad7['id'];return db[_0x10dc('0x6c')][_0x10dc('0x64')](_0x2108b0['body']);}})[_0x10dc('0x22')](respondWithResult(_0x1cd38f,null))['catch'](handleError(_0x1cd38f,null));};exports['getAnswers']=function(_0x5801cd,_0x2d15bc,_0x69adab){var _0x59eeab={'raw':![],'where':{}};var _0x37215f={};var _0x238532={'count':0x0,'rows':[]};return db[_0x10dc('0x45')]['findOne']({'where':{'id':_0x5801cd['params']['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x2d15bc,null))['then'](function(_0x197011){if(_0x197011){_0x37215f[_0x10dc('0x4a')]=_[_0x10dc('0x5b')](db[_0x10dc('0x6c')]['rawAttributes']);_0x37215f[_0x10dc('0x4b')]=_[_0x10dc('0x5b')](_0x5801cd[_0x10dc('0x4b')]);_0x37215f['filters']=_[_0x10dc('0x4c')](_0x37215f[_0x10dc('0x4a')],_0x37215f['query']);_0x59eeab[_0x10dc('0x4d')]=_['intersection'](_0x37215f[_0x10dc('0x4a')],qs[_0x10dc('0x4e')](_0x5801cd[_0x10dc('0x4b')][_0x10dc('0x4e')]));_0x59eeab[_0x10dc('0x4d')]=_0x59eeab[_0x10dc('0x4d')]['length']?_0x59eeab['attributes']:_0x37215f['model'];if(!_0x5801cd[_0x10dc('0x4b')][_0x10dc('0x50')](_0x10dc('0x6d'))){_0x59eeab[_0x10dc('0x35')]=qs[_0x10dc('0x35')](_0x5801cd[_0x10dc('0x4b')][_0x10dc('0x35')]);_0x59eeab[_0x10dc('0x32')]=qs[_0x10dc('0x32')](_0x5801cd[_0x10dc('0x4b')]['offset']);}_0x59eeab[_0x10dc('0x51')]=qs[_0x10dc('0x52')](_0x5801cd[_0x10dc('0x4b')][_0x10dc('0x52')]);_0x59eeab[_0x10dc('0x53')]=qs[_0x10dc('0x5c')](_[_0x10dc('0x54')](_0x5801cd[_0x10dc('0x4b')],_0x37215f[_0x10dc('0x5c')]));_0x59eeab[_0x10dc('0x53')][_0x10dc('0x6b')]=_0x197011['id'];if(_0x5801cd['query']['filter']){_0x59eeab['where']=_[_0x10dc('0x56')](_0x59eeab['where'],{'$or':_[_0x10dc('0x44')](_0x59eeab[_0x10dc('0x4d')],function(_0x32ad37){var _0x286b2e={};_0x286b2e[_0x32ad37]={'$like':'%'+_0x5801cd[_0x10dc('0x4b')][_0x10dc('0x55')]+'%'};return _0x286b2e;})});}_0x59eeab=_['merge']({},_0x59eeab,_0x5801cd[_0x10dc('0x57')]);return db[_0x10dc('0x6c')][_0x10dc('0x34')]({'where':_0x59eeab['where']})[_0x10dc('0x22')](function(_0x4cd60a){_0x238532['count']=_0x4cd60a;if(_0x5801cd[_0x10dc('0x4b')][_0x10dc('0x58')]){_0x59eeab[_0x10dc('0x5d')]=[{'all':!![]}];}return db[_0x10dc('0x6c')]['findAll'](_0x59eeab);})[_0x10dc('0x22')](function(_0x48d4bb){_0x238532['rows']=_0x48d4bb;return _0x238532;});}})[_0x10dc('0x22')](respondWithFilteredResult(_0x2d15bc,_0x59eeab))[_0x10dc('0x2d')](handleError(_0x2d15bc,null));};exports[_0x10dc('0x6e')]=function(_0x37bfbf,_0x526be3,_0x1a04a4){return db[_0x10dc('0x45')][_0x10dc('0x5e')]({'where':{'id':_0x37bfbf[_0x10dc('0x66')]['id']}})['then'](handleEntityNotFound(_0x526be3,null))[_0x10dc('0x22')](function(_0x550f93){if(_0x550f93){return _0x550f93['removeAnswers'](_0x37bfbf[_0x10dc('0x4b')][_0x10dc('0x69')]);}})[_0x10dc('0x22')](respondWithStatusCode(_0x526be3,null))[_0x10dc('0x2d')](handleError(_0x526be3,null));};exports[_0x10dc('0x64')]=function(_0x4100be,_0xbdcd3f){var _0x3cf31a={'name':_0x4100be[_0x10dc('0x60')]['name'],'key':_0x4100be[_0x10dc('0x60')][_0x10dc('0x49')],'email':_0x4100be['body']['email'],'ListId':_0x4100be['body'][_0x10dc('0x6f')],'active':!_['isNil'](_0x4100be[_0x10dc('0x60')][_0x10dc('0x70')])?_0x4100be[_0x10dc('0x60')][_0x10dc('0x70')]:!![],'description':_0x4100be[_0x10dc('0x60')]['description']||null,'Imap':{},'Smtp':{}};if(_[_0x10dc('0x71')](_0x4100be[_0x10dc('0x60')][_0x10dc('0x72')])){if(_0x4100be[_0x10dc('0x60')][_0x10dc('0x73')]){_0x3cf31a[_0x10dc('0x5a')]['user']=_0x3cf31a[_0x10dc('0x41')]['user']=_0x4100be[_0x10dc('0x60')][_0x10dc('0x74')];_0x3cf31a[_0x10dc('0x5a')][_0x10dc('0x75')]=_0x3cf31a[_0x10dc('0x41')]['pass']=_0x4100be['body'][_0x10dc('0x76')];}else{_0x3cf31a['Imap'][_0x10dc('0x77')]=_0x3cf31a[_0x10dc('0x41')][_0x10dc('0x77')]=![];}_0x3cf31a[_0x10dc('0x5a')][_0x10dc('0x78')]=_0x4100be[_0x10dc('0x60')][_0x10dc('0x5a')][_0x10dc('0x78')];_0x3cf31a[_0x10dc('0x5a')]['port']=_0x4100be[_0x10dc('0x60')]['Imap'][_0x10dc('0x79')];_0x3cf31a[_0x10dc('0x41')][_0x10dc('0x78')]=_0x4100be['body'][_0x10dc('0x41')][_0x10dc('0x78')];_0x3cf31a[_0x10dc('0x41')][_0x10dc('0x79')]=_0x4100be[_0x10dc('0x60')][_0x10dc('0x41')][_0x10dc('0x79')];}else{_0x3cf31a[_0x10dc('0x5a')]['service']=_0x3cf31a[_0x10dc('0x41')][_0x10dc('0x7a')]=_0x4100be['body']['cservice'];_0x3cf31a[_0x10dc('0x5a')]['user']=_0x3cf31a['Smtp'][_0x10dc('0x7b')]=_0x4100be[_0x10dc('0x60')][_0x10dc('0x74')];_0x3cf31a[_0x10dc('0x5a')][_0x10dc('0x75')]=_0x3cf31a[_0x10dc('0x41')][_0x10dc('0x7c')]=_0x4100be[_0x10dc('0x60')][_0x10dc('0x76')];}return db[_0x10dc('0x45')][_0x10dc('0x64')](_0x3cf31a,{'include':[{'model':db[_0x10dc('0x40')],'as':'Smtp'},{'model':db['MailServerIn'],'as':_0x10dc('0x5a')}]})['then'](function(_0xcc706e){var _0x1bb508=_0x4100be[_0x10dc('0x7b')][_0x10dc('0x39')]({'plain':!![]});if(!_0x1bb508)throw new Error(_0x10dc('0x7d'));if(_0x1bb508[_0x10dc('0x7e')]===_0x10dc('0x7b')){var _0x53a936=_0xcc706e[_0x10dc('0x39')]({'plain':!![]});return db['UserProfileSection'][_0x10dc('0x5e')]({'where':{'name':_0x10dc('0x3a'),'userProfileId':_0x1bb508['userProfileId']},'raw':!![]})[_0x10dc('0x22')](function(_0x4b3bc8){if(_0x4b3bc8&&_0x4b3bc8['autoAssociation']===0x0){return db[_0x10dc('0x3b')][_0x10dc('0x64')]({'name':_0x53a936['name'],'resourceId':_0x53a936['id'],'type':_0x4b3bc8['name'],'sectionId':_0x4b3bc8['id']},{})['then'](function(){return _0xcc706e;});}else{return _0xcc706e;}})[_0x10dc('0x2d')](function(_0x5ef1c3){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5ef1c3);throw _0x5ef1c3;});}return _0xcc706e;})[_0x10dc('0x22')](respondWithResult(_0xbdcd3f,0xc9))[_0x10dc('0x2d')](handleError(_0xbdcd3f,null));};exports[_0x10dc('0x7f')]=function(_0x38fd8f,_0x7aea80,_0x2779d1){return db[_0x10dc('0x45')][_0x10dc('0x80')]({'where':{'id':_0x38fd8f[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x7aea80,null))['then'](function(_0x5c63bb){if(_0x5c63bb){return _0x5c63bb[_0x10dc('0x7f')]();}return null;})['then'](respondWithResult(_0x7aea80,null))[_0x10dc('0x2d')](handleError(_0x7aea80,null));};exports[_0x10dc('0x81')]=function(_0x1b1016,_0x10c575,_0x2cc989){if(_0x1b1016['body']['id']){delete _0x1b1016[_0x10dc('0x60')]['id'];}return db[_0x10dc('0x45')][_0x10dc('0x5e')]({'where':{'id':_0x1b1016[_0x10dc('0x66')]['id']}})['then'](handleEntityNotFound(_0x10c575,null))[_0x10dc('0x22')](function(_0x1e8119){if(_0x1e8119){_0x1b1016[_0x10dc('0x60')][_0x10dc('0x6b')]=_0x1e8119['id'];return db[_0x10dc('0x3f')][_0x10dc('0x64')](_0x1b1016[_0x10dc('0x60')]);}})['then'](respondWithResult(_0x10c575,null))[_0x10dc('0x2d')](handleError(_0x10c575,null));};exports[_0x10dc('0x82')]=function(_0x5b4747,_0x468994,_0x1217df){return db[_0x10dc('0x45')][_0x10dc('0x80')]({'where':{'id':_0x5b4747['params']['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x468994,null))[_0x10dc('0x22')](function(_0x492858){if(_0x492858){return _0x492858[_0x10dc('0x83')](null);}return null;})[_0x10dc('0x22')](respondWithStatusCode(_0x468994,null))[_0x10dc('0x2d')](handleError(_0x468994,null));};exports[_0x10dc('0x84')]=function(_0x288aa1,_0x733c53,_0x4dbe40){return db[_0x10dc('0x45')][_0x10dc('0x80')]({'where':{'id':_0x288aa1['params']['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x733c53,null))[_0x10dc('0x22')](function(_0xc7eba7){if(_0xc7eba7){return _0xc7eba7['getSmtp']();}return null;})[_0x10dc('0x22')](respondWithResult(_0x733c53,null))[_0x10dc('0x2d')](handleError(_0x733c53,null));};exports[_0x10dc('0x85')]=function(_0x380164,_0x281a85,_0x73745f){if(_0x380164[_0x10dc('0x60')]['id']){delete _0x380164['body']['id'];}return db[_0x10dc('0x45')]['find']({'where':{'id':_0x380164[_0x10dc('0x66')]['id']}})['then'](handleEntityNotFound(_0x281a85,null))['then'](function(_0x33423f){if(_0x33423f){_0x380164[_0x10dc('0x60')]['MailAccountId']=_0x33423f['id'];return db[_0x10dc('0x40')]['create'](_0x380164['body']);}})[_0x10dc('0x22')](respondWithResult(_0x281a85,null))[_0x10dc('0x2d')](handleError(_0x281a85,null));};exports['removeSmtp']=function(_0xb34d64,_0x3aa30f,_0xf2a0c3){return db[_0x10dc('0x45')][_0x10dc('0x80')]({'where':{'id':_0xb34d64[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x3aa30f,null))['then'](function(_0x2cb3c2){if(_0x2cb3c2){return _0x2cb3c2['setSmtp'](null);}return null;})[_0x10dc('0x22')](respondWithStatusCode(_0x3aa30f,null))['catch'](handleError(_0x3aa30f,null));};exports[_0x10dc('0x86')]=function(_0x28f8d7,_0x12a5ac,_0x4ed4fc){return db[_0x10dc('0x87')][_0x10dc('0x5e')]({'where':{'id':_0x28f8d7['params']['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x12a5ac,null))[_0x10dc('0x22')](function(_0x21fb05){if(_0x21fb05){return _0x21fb05[_0x10dc('0x86')](_0x28f8d7['body']['ids'],_[_0x10dc('0x88')](_0x28f8d7[_0x10dc('0x60')],[_0x10dc('0x69'),'id'])||{});}})['then'](respondWithResult(_0x12a5ac,null))[_0x10dc('0x2d')](handleError(_0x12a5ac,null));};exports[_0x10dc('0x89')]=function(_0x913237,_0x61dcc0,_0x200979){var _0x53213e={'raw':![],'where':{}};var _0x425378={};var _0x5381de={'count':0x0,'rows':[]};return db['MailAccount'][_0x10dc('0x80')]({'where':{'id':_0x913237[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x61dcc0,null))[_0x10dc('0x22')](function(_0x89fbb0){if(_0x89fbb0){_0x425378[_0x10dc('0x4a')]=_[_0x10dc('0x5b')](db[_0x10dc('0x87')][_0x10dc('0x46')]);_0x425378[_0x10dc('0x4b')]=_[_0x10dc('0x5b')](_0x913237['query']);_0x425378[_0x10dc('0x5c')]=_[_0x10dc('0x4c')](_0x425378[_0x10dc('0x4a')],_0x425378[_0x10dc('0x4b')]);_0x53213e[_0x10dc('0x4d')]=_[_0x10dc('0x4c')](_0x425378['model'],qs['fields'](_0x913237[_0x10dc('0x4b')]['fields']));_0x53213e[_0x10dc('0x4d')]=_0x53213e[_0x10dc('0x4d')][_0x10dc('0x4f')]?_0x53213e[_0x10dc('0x4d')]:_0x425378[_0x10dc('0x4a')];if(!_0x913237[_0x10dc('0x4b')]['hasOwnProperty']('nolimit')){_0x53213e[_0x10dc('0x35')]=qs[_0x10dc('0x35')](_0x913237[_0x10dc('0x4b')][_0x10dc('0x35')]);_0x53213e['offset']=qs['offset'](_0x913237[_0x10dc('0x4b')][_0x10dc('0x32')]);}_0x53213e[_0x10dc('0x51')]=qs[_0x10dc('0x52')](_0x913237['query'][_0x10dc('0x52')]);_0x53213e['where']=qs[_0x10dc('0x5c')](_[_0x10dc('0x54')](_0x913237[_0x10dc('0x4b')],_0x425378['filters']));_0x53213e[_0x10dc('0x53')]['MailAccountId']=_0x89fbb0['id'];if(_0x913237[_0x10dc('0x4b')][_0x10dc('0x55')]){_0x53213e[_0x10dc('0x53')]=_[_0x10dc('0x56')](_0x53213e['where'],{'$or':_[_0x10dc('0x44')](_0x53213e['attributes'],function(_0x133ada){var _0x183272={};_0x183272[_0x133ada]={'$like':'%'+_0x913237[_0x10dc('0x4b')][_0x10dc('0x55')]+'%'};return _0x183272;})});}_0x53213e=_['merge']({},_0x53213e,_0x913237[_0x10dc('0x57')]);return db['MailInteraction'][_0x10dc('0x34')]({'where':_0x53213e[_0x10dc('0x53')]})[_0x10dc('0x22')](function(_0x57dba9){_0x5381de['count']=_0x57dba9;if(_0x913237[_0x10dc('0x4b')][_0x10dc('0x58')]){_0x53213e['include']=[{'model':db[_0x10dc('0x8a')],'as':_0x10dc('0x8b'),'required':![]},{'model':db['User'],'as':_0x10dc('0x8c'),'attributes':[_0x10dc('0x3d'),'fullname',_0x10dc('0x8d')],'required':![]},{'model':db['Tag'],'as':_0x10dc('0x8e'),'attributes':['id',_0x10dc('0x3d'),_0x10dc('0x8f')],'where':_0x913237[_0x10dc('0x4b')][_0x10dc('0x90')]?{'id':_0x913237[_0x10dc('0x4b')][_0x10dc('0x90')]}:undefined,'required':_0x913237[_0x10dc('0x4b')][_0x10dc('0x90')]?!![]:![]}];}return db[_0x10dc('0x87')][_0x10dc('0x67')](_0x53213e);})[_0x10dc('0x22')](function(_0x42d4ad){_0x5381de['rows']=_0x42d4ad;return _0x5381de;});}})['then'](respondWithFilteredResult(_0x61dcc0,_0x53213e))[_0x10dc('0x2d')](handleError(_0x61dcc0,null));};exports[_0x10dc('0x91')]=function addApplications(_0x16965e,_0x38aac7){var _0x456589=_0x16965e[_0x10dc('0x66')]['id'];var _0x554584=_0x16965e['body'];var _0x452a4d=0xc8;var _0x52f91a=null;return db[_0x10dc('0x92')]['transaction']({'isolationLevel':db[_0x10dc('0x92')]['Transaction']['ISOLATION_LEVELS']['READ_COMMITTED']},function(_0x4771e4){return db[_0x10dc('0x45')][_0x10dc('0x80')]({'where':{'id':_0x456589},'transaction':_0x4771e4})['then'](function(_0x1a039c){if(_0x1a039c){return db[_0x10dc('0x93')][_0x10dc('0x38')]({'where':{'MailAccountId':_0x456589},'transaction':_0x4771e4})[_0x10dc('0x22')](function(){var _0x1477b1=_[_0x10dc('0x44')](_0x554584,function(_0x6795a3){_0x6795a3[_0x10dc('0x6b')]=_0x456589;return _0x6795a3;});return db[_0x10dc('0x93')][_0x10dc('0x94')](_0x1477b1,{'transaction':_0x4771e4});});}else{_0x452a4d=0x194;_0x52f91a=[];}});})[_0x10dc('0x22')](function(){if(_0x452a4d!==0x194){return db[_0x10dc('0x93')][_0x10dc('0x95')]({'where':{'MailAccountId':_0x456589},'order':_0x10dc('0x96')})[_0x10dc('0x22')](function(_0x30d9b9){_0x52f91a=_0x30d9b9;});}})[_0x10dc('0x2d')](function(_0x28e7bb){_0x452a4d=0x1f4;logger['error'](_0x28e7bb[_0x10dc('0x3c')]);if(_0x28e7bb[_0x10dc('0x3d')]){delete _0x28e7bb[_0x10dc('0x3d')];}_0x52f91a=_0x28e7bb;})[_0x10dc('0x97')](function(){if(_0x52f91a===null){_0x38aac7['sendStatus'](_0x452a4d);}else{if(_0x452a4d===0x1f4){_0x38aac7[_0x10dc('0x2f')](_0x452a4d)[_0x10dc('0x98')](_0x52f91a);}else{_0x38aac7[_0x10dc('0x2f')](_0x452a4d)[_0x10dc('0x31')](_0x52f91a);}}});};exports[_0x10dc('0x99')]=function(_0x3aad62,_0x58044,_0x28ad11){var _0x213f80={};var _0x5d1d6c={};var _0x6b34c5;var _0xc8bc1f;return db['MailAccount']['findOne']({'where':{'id':_0x3aad62[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x58044,null))[_0x10dc('0x22')](function(_0x170b38){if(_0x170b38){_0x6b34c5=_0x170b38;_0x5d1d6c[_0x10dc('0x4a')]=_[_0x10dc('0x5b')](db[_0x10dc('0x93')]['rawAttributes']);_0x5d1d6c[_0x10dc('0x4b')]=_[_0x10dc('0x5b')](_0x3aad62[_0x10dc('0x4b')]);_0x5d1d6c['filters']=_[_0x10dc('0x4c')](_0x5d1d6c[_0x10dc('0x4a')],_0x5d1d6c[_0x10dc('0x4b')]);_0x213f80[_0x10dc('0x4d')]=_[_0x10dc('0x4c')](_0x5d1d6c['model'],qs[_0x10dc('0x4e')](_0x3aad62[_0x10dc('0x4b')]['fields']));_0x213f80['attributes']=_0x213f80[_0x10dc('0x4d')][_0x10dc('0x4f')]?_0x213f80[_0x10dc('0x4d')]:_0x5d1d6c[_0x10dc('0x4a')];_0x213f80['order']=qs['sort'](_0x3aad62['query'][_0x10dc('0x52')]);_0x213f80[_0x10dc('0x53')]=qs[_0x10dc('0x5c')](_[_0x10dc('0x54')](_0x3aad62[_0x10dc('0x4b')],_0x5d1d6c['filters']));if(_0x3aad62[_0x10dc('0x4b')][_0x10dc('0x55')]){_0x213f80[_0x10dc('0x53')]=_[_0x10dc('0x56')](_0x213f80[_0x10dc('0x53')],{'$or':_[_0x10dc('0x44')](_0x213f80[_0x10dc('0x4d')],function(_0x1f2857){var _0x3abce2={};_0x3abce2[_0x1f2857]={'$like':'%'+_0x3aad62['query'][_0x10dc('0x55')]+'%'};return _0x3abce2;})});}_0x213f80=_[_0x10dc('0x56')]({},_0x213f80,_0x3aad62[_0x10dc('0x57')]);return _0x6b34c5[_0x10dc('0x99')](_0x213f80);}})['then'](function(_0x1a1a71){if(_0x1a1a71){_0xc8bc1f=_0x1a1a71[_0x10dc('0x4f')];if(!_0x3aad62[_0x10dc('0x4b')][_0x10dc('0x50')](_0x10dc('0x6d'))){_0x213f80[_0x10dc('0x35')]=qs[_0x10dc('0x35')](_0x3aad62[_0x10dc('0x4b')][_0x10dc('0x35')]);_0x213f80[_0x10dc('0x32')]=qs['offset'](_0x3aad62['query'][_0x10dc('0x32')]);}return _0x6b34c5[_0x10dc('0x99')](_0x213f80);}})[_0x10dc('0x22')](function(_0x1a017d){if(_0x1a017d){return _0x1a017d?{'count':_0xc8bc1f,'rows':_0x1a017d}:null;}})[_0x10dc('0x22')](respondWithResult(_0x58044,null))['catch'](handleError(_0x58044,null));};exports[_0x10dc('0x9a')]=function(_0x507f45,_0x47c205,_0x5a302e){var _0x497e7a={'raw':!![],'where':{}};var _0x4e69a3={};var _0x134115={'count':0x0,'rows':[]};return db[_0x10dc('0x45')][_0x10dc('0x80')]({'where':{'id':_0x507f45[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x47c205,null))[_0x10dc('0x22')](function(_0x2f8d69){if(_0x2f8d69){_0x4e69a3[_0x10dc('0x4a')]=_[_0x10dc('0x5b')](db['MailMessage'][_0x10dc('0x46')]);_0x4e69a3['query']=_[_0x10dc('0x5b')](_0x507f45['query']);_0x4e69a3[_0x10dc('0x5c')]=_[_0x10dc('0x4c')](_0x4e69a3[_0x10dc('0x4a')],_0x4e69a3[_0x10dc('0x4b')]);_0x497e7a[_0x10dc('0x4d')]=_[_0x10dc('0x4c')](_0x4e69a3[_0x10dc('0x4a')],qs[_0x10dc('0x4e')](_0x507f45[_0x10dc('0x4b')][_0x10dc('0x4e')]));_0x497e7a[_0x10dc('0x4d')]=_0x497e7a[_0x10dc('0x4d')][_0x10dc('0x4f')]?_0x497e7a['attributes']:_0x4e69a3[_0x10dc('0x4a')];if(!_0x507f45[_0x10dc('0x4b')][_0x10dc('0x50')]('nolimit')){_0x497e7a['limit']=qs[_0x10dc('0x35')](_0x507f45[_0x10dc('0x4b')][_0x10dc('0x35')]);_0x497e7a['offset']=qs['offset'](_0x507f45['query'][_0x10dc('0x32')]);}_0x497e7a['order']=qs[_0x10dc('0x52')](_0x507f45[_0x10dc('0x4b')][_0x10dc('0x52')]);_0x497e7a[_0x10dc('0x53')]=qs['filters'](_[_0x10dc('0x54')](_0x507f45[_0x10dc('0x4b')],_0x4e69a3[_0x10dc('0x5c')]));_0x497e7a[_0x10dc('0x53')]['MailAccountId']=_0x2f8d69['id'];if(_0x507f45[_0x10dc('0x4b')][_0x10dc('0x55')]){_0x497e7a['where']=_[_0x10dc('0x56')](_0x497e7a[_0x10dc('0x53')],{'$or':_[_0x10dc('0x44')](_0x497e7a[_0x10dc('0x4d')],function(_0x8fc8d1){var _0x55b4db={};_0x55b4db[_0x8fc8d1]={'$like':'%'+_0x507f45['query']['filter']+'%'};return _0x55b4db;})});}if(_0x507f45[_0x10dc('0x4b')][_0x10dc('0x9b')]){var _0x517542=_0x507f45['query'][_0x10dc('0x9b')]['split'](',');var _0x5423a5={};_0x5423a5[_0x517542[0x0]]={'$gte':moment(_0x517542[0x1])[_0x10dc('0x9c')]('YYYY-MM-DD\x20HH:mm:ss')};_0x497e7a[_0x10dc('0x53')]=_[_0x10dc('0x56')](_0x497e7a[_0x10dc('0x53')],_0x5423a5);}_0x497e7a=_[_0x10dc('0x56')]({},_0x497e7a,_0x507f45[_0x10dc('0x57')]);return db[_0x10dc('0x9d')][_0x10dc('0x34')]({'where':_0x497e7a[_0x10dc('0x53')]})[_0x10dc('0x22')](function(_0x52a892){_0x134115[_0x10dc('0x34')]=_0x52a892;if(_0x507f45['query'][_0x10dc('0x58')]){_0x497e7a[_0x10dc('0x5d')]=[{'all':!![]}];}return db[_0x10dc('0x9d')][_0x10dc('0x67')](_0x497e7a);})['then'](function(_0x494578){if(_0x507f45[_0x10dc('0x4b')][_0x10dc('0x9e')]==='true'){for(var _0x4b4e1f=0x0;_0x4b4e1f<_0x494578[_0x10dc('0x4f')];_0x4b4e1f++){_0x494578[_0x4b4e1f][_0x10dc('0x60')]=juice(_0x494578[_0x4b4e1f]['body']);}}_0x134115[_0x10dc('0x59')]=_0x494578;return _0x134115;});}})[_0x10dc('0x22')](respondWithFilteredResult(_0x47c205,_0x497e7a))['catch'](handleError(_0x47c205,null));};exports['send']=function(_0x162ec8,_0x5db45c,_0x38c80c){var _0x48fed5,_0x535535={},_0x2fe29b;if(_0x162ec8[_0x10dc('0x60')]['to']){_0x2fe29b=_0x162ec8[_0x10dc('0x60')]['to']['split'](',')[0x0];}return db[_0x10dc('0x45')]['find']({'where':{'id':_0x162ec8[_0x10dc('0x66')]['id']},'include':[{'model':db[_0x10dc('0x9f')],'as':'List','include':[{'model':db[_0x10dc('0x8a')],'as':_0x10dc('0xa0'),'where':{'email':_0x2fe29b},'limit':0x1,'order':[[_0x10dc('0xa1'),_0x10dc('0xa2')]]}]},{'model':db[_0x10dc('0x40')],'as':'Smtp','raw':!![]}]})[_0x10dc('0x22')](handleEntityNotFound(_0x5db45c,null))[_0x10dc('0x22')](function(_0x3daecb){if(_0x3daecb){_0x48fed5=_0x3daecb;if(_0x3daecb[_0x10dc('0x41')]){if(_['isNil'](_0x162ec8[_0x10dc('0x60')]['from'])){_0x162ec8[_0x10dc('0x60')][_0x10dc('0xa3')]=util[_0x10dc('0x9c')](_0x10dc('0xa4'),_0x3daecb[_0x10dc('0x3d')],_0x3daecb[_0x10dc('0xa5')]||_0x3daecb[_0x10dc('0x41')][_0x10dc('0x7b')]);}if(_0x162ec8[_0x10dc('0x60')]['attachments']&&_0x162ec8['body'][_0x10dc('0xa6')][_0x10dc('0x4f')]){for(var _0x363365=0x0;_0x363365<_0x162ec8[_0x10dc('0x60')][_0x10dc('0xa6')][_0x10dc('0x4f')];_0x363365+=0x1){_0x162ec8['body'][_0x10dc('0xa6')][_0x363365]={'filename':_0x162ec8[_0x10dc('0x60')][_0x10dc('0xa6')][_0x363365][_0x10dc('0x3d')],'path':path[_0x10dc('0xa7')](config[_0x10dc('0xa8')],_0x10dc('0xa9'),_0x162ec8[_0x10dc('0x60')][_0x10dc('0xa6')][_0x363365]['basename'])};}}var _0x2e1680={'tls':{'rejectUnauthorized':![]}};if(_[_0x10dc('0x71')](_0x3daecb[_0x10dc('0x41')][_0x10dc('0x7a')])){if(_0x3daecb[_0x10dc('0x41')][_0x10dc('0x77')]){_0x2e1680['auth']={'user':_0x3daecb['Smtp'][_0x10dc('0x7b')],'pass':_0x3daecb[_0x10dc('0x41')][_0x10dc('0x7c')]};}_0x2e1680['host']=_0x3daecb['Smtp']['host'];_0x2e1680[_0x10dc('0x79')]=_0x3daecb['Smtp'][_0x10dc('0x79')];_0x2e1680['secure']=_0x3daecb[_0x10dc('0x41')][_0x10dc('0xaa')];}else{_0x2e1680[_0x10dc('0x7a')]=_0x3daecb[_0x10dc('0x41')][_0x10dc('0x7a')];_0x2e1680['auth']={'user':_0x3daecb[_0x10dc('0x41')]['user'],'pass':_0x3daecb[_0x10dc('0x41')][_0x10dc('0x7c')]};}return respondWithRpcPromise('SendMail','sendMail',{'account':_0x2e1680,'message':_0x162ec8[_0x10dc('0x60')]});}else{throw new Error(_0x10dc('0xab'));}}})[_0x10dc('0x22')](function(_0x4ffe01){if(_0x4ffe01){_0x535535=_0x4ffe01;if(_0x48fed5[_0x10dc('0xac')]){if(_0x48fed5[_0x10dc('0xac')][_0x10dc('0xa0')]['length']){return _0x48fed5[_0x10dc('0xac')][_0x10dc('0xa0')][0x0];}else{return db[_0x10dc('0x8a')][_0x10dc('0x64')](_['defaults'](_0x162ec8['body'],{'firstName':_0x162ec8[_0x10dc('0x60')]['to'],'email':_0x162ec8[_0x10dc('0x60')]['to'],'phone':_0x162ec8[_0x10dc('0x60')]['to'],'ListId':_0x48fed5[_0x10dc('0x6f')]}));}}else{throw new Error(_0x10dc('0xab'));}}})[_0x10dc('0x22')](function(_0x4ac31e){if(_0x4ac31e){var _0x3f8534={'UserId':_0x162ec8[_0x10dc('0x7b')]['id'],'ContactId':_0x4ac31e['id'],'MailAccountId':_0x48fed5['id'],'inReplyTo':_0x535535[_0x10dc('0xad')],'to':_0x162ec8[_0x10dc('0x60')][_0x10dc('0xa3')],'cc':_0x162ec8['body']['cc'],'subject':_0x162ec8[_0x10dc('0x60')][_0x10dc('0xae')],'attach':_0x162ec8['body'][_0x10dc('0xaf')],'firstMsgDirection':'out','lastMsgAt':moment()[_0x10dc('0x9c')](_0x10dc('0xb0')),'lastMsgDirection':_0x10dc('0xb1'),'Messages':[_['merge'](_0x162ec8[_0x10dc('0x60')],{'messageId':_0x535535['messageId'],'sentAt':moment()[_0x10dc('0x9c')]('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x48fed5['id'],'UserId':_0x162ec8[_0x10dc('0x7b')]['id'],'ContactId':_0x4ac31e['id']})]};if(_0x162ec8[_0x10dc('0x60')][_0x10dc('0xb2')]){_0x3f8534=_['merge'](_0x3f8534,_0x162ec8['body'][_0x10dc('0xb2')]);}return db[_0x10dc('0x87')][_0x10dc('0x64')](_0x3f8534,{'include':[{'model':db[_0x10dc('0x9d')],'as':_0x10dc('0xb3')}]});}})['then'](respondWithResult(_0x5db45c,null))[_0x10dc('0x2d')](handleError(_0x5db45c,null));};exports[_0x10dc('0xb4')]=function(_0x4a0b06,_0x20a8f4,_0x377509){return db[_0x10dc('0x45')]['find']({'where':{'id':_0x4a0b06['params']['id']},'include':[{'model':db[_0x10dc('0x40')],'as':_0x10dc('0x41'),'raw':!![]}]})[_0x10dc('0x22')](handleEntityNotFound(_0x20a8f4,null))[_0x10dc('0x22')](function(_0x26a6f6){if(_0x26a6f6&&_0x26a6f6[_0x10dc('0x41')]){var _0x27a28a={'id':_0x26a6f6['id'],'tls':{'rejectUnauthorized':![]}};if(_0x26a6f6[_0x10dc('0x41')]['service']){_0x27a28a[_0x10dc('0x7a')]=_0x26a6f6['Smtp'][_0x10dc('0x7a')];}else{_0x27a28a[_0x10dc('0x78')]=_0x26a6f6['Smtp'][_0x10dc('0x78')];_0x27a28a[_0x10dc('0x79')]=_0x26a6f6['Smtp'][_0x10dc('0x79')];_0x27a28a[_0x10dc('0xaa')]=_0x26a6f6[_0x10dc('0x41')]['secure'];}if(_0x26a6f6[_0x10dc('0x41')][_0x10dc('0x77')]){_0x27a28a[_0x10dc('0xb5')]={'user':_0x26a6f6[_0x10dc('0x41')][_0x10dc('0x7b')],'pass':_0x26a6f6[_0x10dc('0x41')][_0x10dc('0x7c')]};}return respondWithRpcPromise(_0x10dc('0xb6'),_0x10dc('0xb4'),{'account':_0x27a28a});}})['then'](respondWithResult(_0x20a8f4,null))['catch'](handleError(_0x20a8f4,null));};exports[_0x10dc('0x38')]=function(_0x41c504,_0x44b65d){return db['MailAccount'][_0x10dc('0x5e')]({'where':{'id':_0x41c504[_0x10dc('0x66')]['id']}})['then'](handleEntityNotFound(_0x44b65d,null))['then'](function(_0x16e382){if(_0x16e382&&_0x16e382[_0x10dc('0x7a')]){throw new db[(_0x10dc('0xb7'))][(_0x10dc('0xb8'))](_0x10dc('0xb9'));}return _0x16e382;})[_0x10dc('0x22')](removeEntity(_0x44b65d,null))['catch'](handleError(_0x44b65d,null));};exports[_0x10dc('0xba')]=function(_0x1aa908,_0x244f0d,_0x28f739){return db['MailAccount'][_0x10dc('0x5e')]({'where':{'id':_0x1aa908[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x244f0d,null))[_0x10dc('0x22')](function(_0x19ea1f){if(_0x19ea1f){return _0x19ea1f['addAgents'](_0x1aa908[_0x10dc('0x60')]['ids'],_['omit'](_0x1aa908[_0x10dc('0x60')],[_0x10dc('0x69'),'id'])||{})[_0x10dc('0xbb')](function(_0x510936){for(var _0x1ce4bc=0x0;_0x1ce4bc<_0x1aa908[_0x10dc('0x60')]['ids']['length'];_0x1ce4bc+=0x1){socket[_0x10dc('0xbc')](_0x10dc('0xbd'),{'UserId':Number(_0x1aa908['body'][_0x10dc('0x69')][_0x1ce4bc]),'MailAccountId':Number(_0x1aa908[_0x10dc('0x66')]['id'])});}return _0x510936;});}})['then'](respondWithResult(_0x244f0d,null))['catch'](handleError(_0x244f0d,null));};exports[_0x10dc('0xbe')]=function(_0x3c1201,_0x135086,_0x51a9d4){return db[_0x10dc('0x45')][_0x10dc('0x5e')]({'where':{'id':_0x3c1201['params']['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x135086,null))[_0x10dc('0x22')](function(_0x303b68){if(_0x303b68){return _0x303b68[_0x10dc('0xbe')](_0x3c1201[_0x10dc('0x4b')][_0x10dc('0x69')])[_0x10dc('0x22')](function(){if(_[_0x10dc('0xbf')](_0x3c1201['query'][_0x10dc('0x69')])){for(var _0x2646dc=0x0;_0x2646dc<_0x3c1201[_0x10dc('0x4b')]['ids']['length'];_0x2646dc+=0x1){socket['emit'](_0x10dc('0xc0'),{'UserId':Number(_0x3c1201[_0x10dc('0x4b')][_0x10dc('0x69')][_0x2646dc]),'MailAccountId':Number(_0x3c1201[_0x10dc('0x66')]['id'])});}}else{socket['emit'](_0x10dc('0xc0'),{'UserId':Number(_0x3c1201[_0x10dc('0x4b')]['ids']),'MailAccountId':Number(_0x3c1201[_0x10dc('0x66')]['id'])});}});}})['then'](respondWithStatusCode(_0x135086,null))[_0x10dc('0x2d')](handleError(_0x135086,null));};exports[_0x10dc('0xc1')]=function(_0x1677e5,_0x482b13,_0x2d8039){var _0x3e21f8={};var _0x51f6e2={};var _0x564292;var _0x1b9aed;return db[_0x10dc('0x45')][_0x10dc('0x80')]({'where':{'id':_0x1677e5[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x482b13,null))[_0x10dc('0x22')](function(_0x44ea87){if(_0x44ea87){_0x564292=_0x44ea87;_0x51f6e2[_0x10dc('0x4a')]=_['keys'](db['User'][_0x10dc('0x46')]);_0x51f6e2[_0x10dc('0x4b')]=_[_0x10dc('0x5b')](_0x1677e5[_0x10dc('0x4b')]);_0x51f6e2[_0x10dc('0x5c')]=_[_0x10dc('0x4c')](_0x51f6e2[_0x10dc('0x4a')],_0x51f6e2[_0x10dc('0x4b')]);_0x3e21f8[_0x10dc('0x4d')]=_['intersection'](_0x51f6e2['model'],qs['fields'](_0x1677e5[_0x10dc('0x4b')][_0x10dc('0x4e')]));_0x3e21f8[_0x10dc('0x4d')]=_0x3e21f8['attributes'][_0x10dc('0x4f')]?_0x3e21f8[_0x10dc('0x4d')]:_0x51f6e2[_0x10dc('0x4a')];_0x3e21f8[_0x10dc('0x51')]=qs[_0x10dc('0x52')](_0x1677e5[_0x10dc('0x4b')][_0x10dc('0x52')]);_0x3e21f8[_0x10dc('0x53')]=qs['filters'](_[_0x10dc('0x54')](_0x1677e5['query'],_0x51f6e2[_0x10dc('0x5c')]));if(_0x1677e5[_0x10dc('0x4b')]['filter']){_0x3e21f8['where']=_[_0x10dc('0x56')](_0x3e21f8[_0x10dc('0x53')],{'$or':_[_0x10dc('0x44')](_0x3e21f8['attributes'],function(_0x3e353e){var _0x5cdcd3={};_0x5cdcd3[_0x3e353e]={'$like':'%'+_0x1677e5[_0x10dc('0x4b')][_0x10dc('0x55')]+'%'};return _0x5cdcd3;})});}_0x3e21f8=_['merge']({},_0x3e21f8,_0x1677e5[_0x10dc('0x57')]);return _0x564292['getAgents'](_0x3e21f8);}})[_0x10dc('0x22')](function(_0x3a8655){if(_0x3a8655){_0x1b9aed=_0x3a8655[_0x10dc('0x4f')];if(!_0x1677e5[_0x10dc('0x4b')][_0x10dc('0x50')]('nolimit')){_0x3e21f8['limit']=qs[_0x10dc('0x35')](_0x1677e5['query'][_0x10dc('0x35')]);_0x3e21f8[_0x10dc('0x32')]=qs[_0x10dc('0x32')](_0x1677e5['query'][_0x10dc('0x32')]);}return _0x564292['getAgents'](_0x3e21f8);}})['then'](function(_0x2bd1b6){if(_0x2bd1b6){return _0x2bd1b6?{'count':_0x1b9aed,'rows':_0x2bd1b6}:null;}})[_0x10dc('0x22')](respondWithResult(_0x482b13,null))['catch'](handleError(_0x482b13,null));};
\ No newline at end of file
index a293500..f9ad293 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49fe=['remove','emit','hasOwnProperty','hook','exports','events','save','update'];(function(_0x5e6f73,_0x3f27d8){var _0x432614=function(_0x56e42d){while(--_0x56e42d){_0x5e6f73['push'](_0x5e6f73['shift']());}};_0x432614(++_0x3f27d8);}(_0x49fe,0x75));var _0xe49f=function(_0x3f1bea,_0x4a53f4){_0x3f1bea=_0x3f1bea-0x0;var _0x552865=_0x49fe[_0x3f1bea];return _0x552865;};'use strict';var EventEmitter=require(_0xe49f('0x0'));var MailAccount=require('../../mysqldb')['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe49f('0x1'),'afterUpdate':_0xe49f('0x2'),'afterDestroy':_0xe49f('0x3')};function emitEvent(_0xb99c7){return function(_0x1cac40,_0x2db0ec,_0x1235f4){MailAccountEvents[_0xe49f('0x4')](_0xb99c7+':'+_0x1cac40['id'],_0x1cac40);MailAccountEvents[_0xe49f('0x4')](_0xb99c7,_0x1cac40);_0x1235f4(null);};}for(var e in events){if(events[_0xe49f('0x5')](e)){var event=events[e];MailAccount[_0xe49f('0x6')](e,emitEvent(event));}}module[_0xe49f('0x7')]=MailAccountEvents;
\ No newline at end of file
+var _0x463e=['remove','hasOwnProperty','hook','exports','events','setMaxListeners','update'];(function(_0x4a4e06,_0x4687d1){var _0x1b7519=function(_0x4e2a1a){while(--_0x4e2a1a){_0x4a4e06['push'](_0x4a4e06['shift']());}};_0x1b7519(++_0x4687d1);}(_0x463e,0x13f));var _0xe463=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x463e[_0x1facfa];return _0x9ec701;};'use strict';var EventEmitter=require(_0xe463('0x0'));var MailAccount=require('../../mysqldb')['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xe463('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xe463('0x2'),'afterDestroy':_0xe463('0x3')};function emitEvent(_0x515de7){return function(_0xac7375,_0x2a01b6,_0x1e971b){MailAccountEvents['emit'](_0x515de7+':'+_0xac7375['id'],_0xac7375);MailAccountEvents['emit'](_0x515de7,_0xac7375);_0x1e971b(null);};}for(var e in events){if(events[_0xe463('0x4')](e)){var event=events[e];MailAccount[_0xe463('0x5')](e,emitEvent(event));}}module[_0xe463('0x6')]=MailAccountEvents;
\ No newline at end of file
index 8945981..727424d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6675=['lodash','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./mailAccount.attributes','exports','mail_accounts'];(function(_0x144b30,_0x77072d){var _0x1bb7bc=function(_0x1082cc){while(--_0x1082cc){_0x144b30['push'](_0x144b30['shift']());}};_0x1bb7bc(++_0x77072d);}(_0x6675,0x1e0));var _0x5667=function(_0x3da77a,_0x21a70f){_0x3da77a=_0x3da77a-0x0;var _0x46cf5b=_0x6675[_0x3da77a];return _0x46cf5b;};'use strict';var _=require(_0x5667('0x0'));var util=require('util');var logger=require(_0x5667('0x1'))(_0x5667('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5667('0x3'));var fs=require('fs');var path=require(_0x5667('0x4'));var rimraf=require(_0x5667('0x5'));var config=require(_0x5667('0x6'));var attributes=require(_0x5667('0x7'));module[_0x5667('0x8')]=function(_0x1145c1,_0x494c5c){return _0x1145c1['define']('MailAccount',attributes,{'tableName':_0x5667('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1485=['moment','bluebird','request-promise','rimraf','define','MailAccount','mail_accounts','util','../../config/logger','api'];(function(_0x4fc4a2,_0x4e05f4){var _0x26d034=function(_0x293d0a){while(--_0x293d0a){_0x4fc4a2['push'](_0x4fc4a2['shift']());}};_0x26d034(++_0x4e05f4);}(_0x1485,0x10b));var _0x5148=function(_0x52522f,_0x15c862){_0x52522f=_0x52522f-0x0;var _0x14555c=_0x1485[_0x52522f];return _0x14555c;};'use strict';var _=require('lodash');var util=require(_0x5148('0x0'));var logger=require(_0x5148('0x1'))(_0x5148('0x2'));var moment=require(_0x5148('0x3'));var BPromise=require(_0x5148('0x4'));var rp=require(_0x5148('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5148('0x6'));var config=require('../../config/environment');var attributes=require('./mailAccount.attributes');module['exports']=function(_0x4a4cc8,_0x249db9){return _0x4a4cc8[_0x5148('0x7')](_0x5148('0x8'),attributes,{'tableName':_0x5148('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f7ca140..840badb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95f0=['from','ListId','create','List\x20not\x20found','contact','messageId','generate','attach','format','MailMessage','Messages','inReplyTo','MailInteraction','Contact\x20not\x20found','spread','update','subject','YYYY-MM-DD\x20HH:mm:ss','interaction','created','attachments','originCc','bcc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','Attachments','name','UserId','unshift','waitForTheAssignedAgent','startRouting','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','./mailAccount.socket','register','request','then','info','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetMailAccount','MailAccount','findAll','options','attributes','limit','include','map','model','ShowMailAccount','find','raw','where','NotifyMailAccount','body','mail','difference','keys','CmContact','rawAttributes','createdAt','updatedAt','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','Contacts','DESC','MailApplication','Applications','Smtp','List','get','omit','applications','orderBy','priority','asc','autoclose','push','close','*,*,*,*','defaults'];(function(_0x5b5dbc,_0x303b33){var _0x45ac8e=function(_0x2980f9){while(--_0x2980f9){_0x5b5dbc['push'](_0x5b5dbc['shift']());}};_0x45ac8e(++_0x303b33);}(_0x95f0,0xf8));var _0x095f=function(_0x426c24,_0x1e4806){_0x426c24=_0x426c24-0x0;var _0x50fd45=_0x95f0[_0x426c24];return _0x50fd45;};'use strict';var _=require(_0x095f('0x0'));var util=require('util');var moment=require(_0x095f('0x1'));var BPromise=require('bluebird');var rs=require(_0x095f('0x2'));var fs=require('fs');var Redis=require(_0x095f('0x3'));var db=require(_0x095f('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x095f('0x5'))(_0x095f('0x6'));var config=require(_0x095f('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x095f('0x8')][_0x095f('0x9')]({'port':0x232c});config[_0x095f('0xa')]=_['defaults'](config[_0x095f('0xa')],{'host':_0x095f('0xb'),'port':0x18eb});var socket=require(_0x095f('0xc'))(new Redis(config['redis']));require(_0x095f('0xd'))[_0x095f('0xe')](socket);function respondWithRpcPromise(_0x4f8ad5,_0xe0bfd4,_0x3e9d1a){return new BPromise(function(_0x9458ef,_0x5e9887){return client[_0x095f('0xf')](_0x4f8ad5,_0x3e9d1a)[_0x095f('0x10')](function(_0x1e8c7f){logger[_0x095f('0x11')](_0x095f('0x12'),_0xe0bfd4,'request\x20sent');logger[_0x095f('0x13')](_0x095f('0x14'),_0xe0bfd4,_0x095f('0x15'),JSON[_0x095f('0x16')](_0x1e8c7f));if(_0x1e8c7f[_0x095f('0x17')]){if(_0x1e8c7f[_0x095f('0x17')][_0x095f('0x18')]===0x1f4){logger[_0x095f('0x17')](_0x095f('0x12'),_0xe0bfd4,_0x1e8c7f[_0x095f('0x17')][_0x095f('0x19')]);return _0x5e9887(_0x1e8c7f[_0x095f('0x17')][_0x095f('0x19')]);}logger[_0x095f('0x17')](_0x095f('0x12'),_0xe0bfd4,_0x1e8c7f[_0x095f('0x17')]['message']);return _0x9458ef(_0x1e8c7f['error'][_0x095f('0x19')]);}else{logger[_0x095f('0x11')](_0x095f('0x12'),_0xe0bfd4,_0x095f('0x15'));_0x9458ef(_0x1e8c7f['result'][_0x095f('0x19')]);}})[_0x095f('0x1a')](function(_0x46d0f7){logger[_0x095f('0x17')](_0x095f('0x12'),_0xe0bfd4,_0x46d0f7);_0x5e9887(_0x46d0f7);});});}exports[_0x095f('0x1b')]=function(_0x26b652){var _0x198004=this;return new Promise(function(_0x2898d8,_0x4d3e04){return db[_0x095f('0x1c')][_0x095f('0x1d')]({'raw':_0x26b652[_0x095f('0x1e')]?_0x26b652[_0x095f('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x26b652['options']?_0x26b652[_0x095f('0x1e')]['where']||null:null,'attributes':_0x26b652[_0x095f('0x1e')]?_0x26b652[_0x095f('0x1e')][_0x095f('0x1f')]||null:null,'limit':_0x26b652['options']?_0x26b652[_0x095f('0x1e')][_0x095f('0x20')]||null:null,'include':_0x26b652[_0x095f('0x1e')]?_0x26b652['options'][_0x095f('0x21')]?_[_0x095f('0x22')](_0x26b652['options']['include'],function(_0x8fdbcf){return{'model':db[_0x8fdbcf[_0x095f('0x23')]],'as':_0x8fdbcf['as'],'attributes':_0x8fdbcf[_0x095f('0x1f')],'include':_0x8fdbcf['include']?_[_0x095f('0x22')](_0x8fdbcf[_0x095f('0x21')],function(_0x27d1b8){return{'model':db[_0x27d1b8[_0x095f('0x23')]],'as':_0x27d1b8['as'],'attributes':_0x27d1b8['attributes'],'include':_0x27d1b8['include']?_['map'](_0x27d1b8[_0x095f('0x21')],function(_0x56880b){return{'model':db[_0x56880b[_0x095f('0x23')]],'as':_0x56880b['as'],'attributes':_0x56880b['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x226d6e){logger[_0x095f('0x11')]('GetMailAccount',_0x26b652);logger[_0x095f('0x13')](_0x095f('0x1b'),_0x26b652,JSON[_0x095f('0x16')](_0x226d6e));_0x2898d8(_0x226d6e);})[_0x095f('0x1a')](function(_0x2c40ed){logger['error'](_0x095f('0x1b'),_0x2c40ed[_0x095f('0x19')],_0x26b652);_0x4d3e04(_0x198004[_0x095f('0x17')](0x1f4,_0x2c40ed['message']));});});};exports[_0x095f('0x24')]=function(_0x1ae1b3){var _0x3b63db=this;return new Promise(function(_0x27ff2c,_0x2f0c74){return db[_0x095f('0x1c')][_0x095f('0x25')]({'raw':_0x1ae1b3[_0x095f('0x1e')]?_0x1ae1b3[_0x095f('0x1e')][_0x095f('0x26')]===undefined?!![]:![]:!![],'where':_0x1ae1b3[_0x095f('0x1e')]?_0x1ae1b3[_0x095f('0x1e')][_0x095f('0x27')]||null:null,'attributes':_0x1ae1b3[_0x095f('0x1e')]?_0x1ae1b3[_0x095f('0x1e')][_0x095f('0x1f')]||null:null,'include':_0x1ae1b3[_0x095f('0x1e')]?_0x1ae1b3['options'][_0x095f('0x21')]?_[_0x095f('0x22')](_0x1ae1b3['options'][_0x095f('0x21')],function(_0x56133e){return{'model':db[_0x56133e[_0x095f('0x23')]],'as':_0x56133e['as'],'attributes':_0x56133e['attributes'],'include':_0x56133e[_0x095f('0x21')]?_['map'](_0x56133e['include'],function(_0x49fb84){return{'model':db[_0x49fb84[_0x095f('0x23')]],'as':_0x49fb84['as'],'attributes':_0x49fb84[_0x095f('0x1f')],'include':_0x49fb84[_0x095f('0x21')]?_[_0x095f('0x22')](_0x49fb84[_0x095f('0x21')],function(_0x5c55c3){return{'model':db[_0x5c55c3[_0x095f('0x23')]],'as':_0x5c55c3['as'],'attributes':_0x5c55c3[_0x095f('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x095f('0x10')](function(_0x56de3e){logger[_0x095f('0x11')](_0x095f('0x24'),_0x1ae1b3);logger[_0x095f('0x13')](_0x095f('0x24'),_0x1ae1b3,JSON[_0x095f('0x16')](_0x56de3e));_0x27ff2c(_0x56de3e);})[_0x095f('0x1a')](function(_0x2715cd){logger[_0x095f('0x17')](_0x095f('0x24'),_0x2715cd['message'],_0x1ae1b3);_0x2f0c74(_0x3b63db['error'](0x1f4,_0x2715cd['message']));});});};exports[_0x095f('0x28')]=function(_0x2d9cf9){var _0x327ce0=this;return new Promise(function(_0x590ce6,_0x36f66d){var _0xff203c={'body':_0x2d9cf9[_0x095f('0x29')],'channel':_0x095f('0x2a')};var _0x337add=_[_0x095f('0x2b')](_[_0x095f('0x2c')](db[_0x095f('0x2d')][_0x095f('0x2e')]),[_0x095f('0x2f'),_0x095f('0x30'),'CompanyId','ListId']);var _0x1b3521=![];if(_0x2d9cf9['body']['id']){delete _0x2d9cf9[_0x095f('0x29')]['id'];}if(_[_0x095f('0x31')](_0x2d9cf9[_0x095f('0x29')]['from'])){return _0x36f66d(_0x327ce0[_0x095f('0x17')](0x1f4,_0x095f('0x32')));}if(_[_0x095f('0x31')](_0x2d9cf9[_0x095f('0x29')][_0x095f('0x29')])||_0x2d9cf9[_0x095f('0x29')]['body']===''){return _0x36f66d(_0x327ce0[_0x095f('0x17')](0x1f4,_0x095f('0x33')));}if(_[_0x095f('0x31')](_0x2d9cf9[_0x095f('0x29')][_0x095f('0x34')])){return _0x36f66d(_0x327ce0[_0x095f('0x17')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x337add));}if(!_['includes'](_0x337add,_0x2d9cf9[_0x095f('0x29')][_0x095f('0x34')])){return _0x36f66d(_0x327ce0[_0x095f('0x17')](0x1f4,_0x095f('0x35')+_0x337add));}var _0x8c7aa0={};_0x8c7aa0[_0x2d9cf9[_0x095f('0x29')][_0x095f('0x34')]]=_0x2d9cf9[_0x095f('0x29')]['from'];return db[_0x095f('0x1c')][_0x095f('0x25')]({'where':{'id':_0x2d9cf9[_0x095f('0x36')]['id']},'include':[{'model':db[_0x095f('0x37')],'as':'List','include':[{'model':db[_0x095f('0x2d')],'as':_0x095f('0x38'),'where':_0x8c7aa0,'limit':0x1,'order':[[_0x095f('0x30'),_0x095f('0x39')]]}]},{'model':db[_0x095f('0x3a')],'as':_0x095f('0x3b')},{'model':db['MailServerOut'],'as':_0x095f('0x3c')}]})['then'](function(_0x8214f0){if(_0x8214f0&&_0x8214f0[_0x095f('0x3d')]){var _0x3ab9a3=_0x8214f0[_0x095f('0x3e')]({'plain':!![]});_0xff203c[_0x095f('0x36')]=_[_0x095f('0x3f')](_0x3ab9a3,[_0x095f('0x3b'),_0x095f('0x3d')]);_0xff203c[_0x095f('0x40')]=_0x3ab9a3[_0x095f('0x3b')];_0xff203c['list']=_0x3ab9a3['List'];_0xff203c[_0x095f('0x40')]=_[_0x095f('0x41')](_0xff203c[_0x095f('0x40')],[_0x095f('0x42')],[_0x095f('0x43')]);if(_0xff203c[_0x095f('0x36')]&&_0xff203c['account'][_0x095f('0x44')]){_0xff203c['applications'][_0x095f('0x45')]({'id':0x0,'priority':_0xff203c[_0x095f('0x40')]['length']+0x1,'app':_0x095f('0x46'),'appdata':'autoclose','interval':_0x095f('0x47')});}if(_0xff203c[_0x095f('0x36')]['Applications']){delete _0xff203c[_0x095f('0x36')][_0x095f('0x3b')];}if(_0xff203c[_0x095f('0x36')]['List']){delete _0xff203c[_0x095f('0x36')]['List'];}if(_0x3ab9a3[_0x095f('0x3d')][_0x095f('0x38')]['length']){return _0x3ab9a3[_0x095f('0x3d')][_0x095f('0x38')][0x0];}var _0x3055f7=_[_0x095f('0x48')](_0x2d9cf9[_0x095f('0x29')],{'firstName':_0x2d9cf9['body'][_0x095f('0x49')],'ListId':_0x3ab9a3[_0x095f('0x4a')]});_0x3055f7[_0x2d9cf9[_0x095f('0x29')][_0x095f('0x34')]]=_0x2d9cf9[_0x095f('0x29')][_0x095f('0x49')];return db[_0x095f('0x2d')][_0x095f('0x4b')](_0x3055f7);}else{throw new Error(_0x095f('0x4c'));}})[_0x095f('0x10')](function(_0x58ba02){_0xff203c[_0x095f('0x4d')]=_0x58ba02;if(_0x58ba02){if(!_0x2d9cf9['body'][_0x095f('0x19')][_0x095f('0x4e')]){_0x2d9cf9[_0x095f('0x29')][_0x095f('0x19')][_0x095f('0x4e')]=rs[_0x095f('0x4f')]()+'\x20'+_0x2d9cf9[_0x095f('0x29')][_0x095f('0x19')][_0x095f('0x49')];}var _0x3295af={'ContactId':_0x58ba02['id'],'MailAccountId':_0x2d9cf9[_0x095f('0x36')]['id'],'inReplyTo':_0x2d9cf9['body'][_0x095f('0x19')][_0x095f('0x4e')],'to':_0x2d9cf9[_0x095f('0x29')][_0x095f('0x19')][_0x095f('0x49')],'cc':_0x2d9cf9[_0x095f('0x29')][_0x095f('0x19')]['cc'],'subject':_0x2d9cf9['body'][_0x095f('0x19')]['subject'],'attach':_0x2d9cf9[_0x095f('0x29')][_0x095f('0x19')][_0x095f('0x50')],'lastMsgAt':moment()[_0x095f('0x51')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db['MailInteraction'][_0x095f('0x25')]({'where':{'closed':![],'MailAccountId':_0x2d9cf9[_0x095f('0x36')]['id']},'include':[{'model':db[_0x095f('0x52')],'as':_0x095f('0x53'),'attributes':['messageId'],'where':{'messageId':_0x2d9cf9['body'][_0x095f('0x19')][_0x095f('0x54')]}}]})[_0x095f('0x10')](function(_0x21c506){if(_0x21c506){return[_0x21c506,![]];}return db[_0x095f('0x55')][_0x095f('0x4b')](_0x3295af)[_0x095f('0x10')](function(_0x4ce298){return[_0x4ce298,!![]];});});}else{throw new Error(_0x095f('0x56'));}})[_0x095f('0x57')](function(_0xefc06b,_0x5c4090){if(_0xefc06b){_0x1b3521=_0x5c4090;if(!_0x5c4090){return _0xefc06b[_0x095f('0x58')]({'inReplyTo':_0x2d9cf9['body'][_0x095f('0x19')][_0x095f('0x4e')],'to':_0x2d9cf9[_0x095f('0x29')][_0x095f('0x19')][_0x095f('0x49')],'cc':_0x2d9cf9[_0x095f('0x29')]['message']['cc'],'subject':_0x2d9cf9[_0x095f('0x29')]['message'][_0x095f('0x59')],'attach':_0xefc06b[_0x095f('0x50')]?_0xefc06b['attach']:_0x2d9cf9[_0x095f('0x29')][_0x095f('0x19')][_0x095f('0x50')],'substatus':null,'substatusAt':moment()[_0x095f('0x51')](_0x095f('0x5a')),'lastMsgAt':moment()[_0x095f('0x51')](_0x095f('0x5a')),'lastMsgDirection':'in'});}else{return _0xefc06b;}}})[_0x095f('0x10')](function(_0x3aa28c){_0xff203c[_0x095f('0x5b')]=_0x3aa28c['get']({'plain':!![]});_0xff203c[_0x095f('0x5b')][_0x095f('0x5c')]=_0x1b3521;return db[_0x095f('0x52')][_0x095f('0x4b')]({'body':_0x2d9cf9[_0x095f('0x29')][_0x095f('0x29')],'MailAccountId':_0x2d9cf9['account']['id'],'MailInteractionId':_0x3aa28c['id'],'direction':'in','ContactId':_0xff203c[_0x095f('0x4d')]['id'],'messageId':_0x2d9cf9[_0x095f('0x29')]['message'][_0x095f('0x4e')],'from':_0x2d9cf9[_0x095f('0x29')][_0x095f('0x19')][_0x095f('0x49')],'to':_0x2d9cf9['body'][_0x095f('0x19')]['to'],'cc':_0x2d9cf9['body'][_0x095f('0x19')]['cc'],'subject':_0x2d9cf9[_0x095f('0x29')]['message'][_0x095f('0x59')],'attach':_0x2d9cf9['body'][_0x095f('0x19')]['attach'],'Attachments':_0x2d9cf9[_0x095f('0x29')][_0x095f('0x19')][_0x095f('0x5d')],'originTo':_0x2d9cf9[_0x095f('0x29')][_0x095f('0x19')]['originTo'],'originCc':_0x2d9cf9['body'][_0x095f('0x19')][_0x095f('0x5e')],'bcc':_0x2d9cf9[_0x095f('0x29')][_0x095f('0x19')][_0x095f('0x5f')],'ChatWebsiteId':_0x2d9cf9[_0x095f('0x29')]['message'][_0x095f('0x60')]||null,'originChannel':_0x2d9cf9['body'][_0x095f('0x19')][_0x095f('0x61')]||_0x095f('0x62'),'ChatOfflineMessageId':_0x2d9cf9['body']['message'][_0x095f('0x63')]||null},{'include':[{'model':db[_0x095f('0x64')],'as':_0x095f('0x65')}]});})[_0x095f('0x10')](function(_0x1bf678){_0xff203c[_0x095f('0x19')]=_0x1bf678;if(_0xff203c[_0x095f('0x5b')]['UserId']){return db['User'][_0x095f('0x25')]({'attributes':['id',_0x095f('0x66')],'where':{'id':_0xff203c['interaction'][_0x095f('0x67')]}})[_0x095f('0x10')](function(_0x5f1413){if(_0x5f1413){_0xff203c['applications'][_0x095f('0x68')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x5f1413['name']+','+(_0xff203c[_0x095f('0x36')][_0x095f('0x69')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise('Start',_0x095f('0x6a'),_0xff203c);});}return respondWithRpcPromise('Start',_0x095f('0x6a'),_0xff203c);})[_0x095f('0x10')](function(_0x195a81){_0x590ce6(_0x195a81);})[_0x095f('0x1a')](function(_0x3cb651){_0x36f66d(_0x327ce0[_0x095f('0x17')](0x1f4,_0x3cb651[_0x095f('0x19')]));});});};
\ No newline at end of file
+var _0x5c7f=['bcc','ChatWebsiteId','originChannel','Email','Attachment','Attachments','UserId','User','name','unshift','agent','Start','startRouting','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','request','info','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetMailAccount','findAll','options','raw','where','limit','include','map','attributes','model','then','ShowMailAccount','MailAccount','find','body','keys','CmContact','rawAttributes','createdAt','updatedAt','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','account','CmList','List','DESC','MailServerOut','Smtp','get','Applications','applications','orderBy','asc','push','length','close','autoclose','*,*,*,*','Contacts','defaults','create','List\x20not\x20found','contact','messageId','generate','subject','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','Contact\x20not\x20found','spread','update','attach','interaction','created','attachments'];(function(_0x1d4a8c,_0x939a0){var _0x552e4d=function(_0x243a8e){while(--_0x243a8e){_0x1d4a8c['push'](_0x1d4a8c['shift']());}};_0x552e4d(++_0x939a0);}(_0x5c7f,0xd5));var _0xf5c7=function(_0x819464,_0x46fc91){_0x819464=_0x819464-0x0;var _0x49dcc0=_0x5c7f[_0x819464];return _0x49dcc0;};'use strict';var _=require(_0xf5c7('0x0'));var util=require('util');var moment=require(_0xf5c7('0x1'));var BPromise=require(_0xf5c7('0x2'));var rs=require(_0xf5c7('0x3'));var fs=require('fs');var Redis=require(_0xf5c7('0x4'));var db=require(_0xf5c7('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf5c7('0x6'))(_0xf5c7('0x7'));var config=require('../../config/environment');var jayson=require(_0xf5c7('0x8'));var client=jayson[_0xf5c7('0x9')][_0xf5c7('0xa')]({'port':0x232c});config[_0xf5c7('0xb')]=_['defaults'](config['redis'],{'host':_0xf5c7('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./mailAccount.socket')['register'](socket);function respondWithRpcPromise(_0x427fdb,_0x31bf68,_0xd7abe2){return new BPromise(function(_0x2e7f15,_0x4cadf1){return client[_0xf5c7('0xd')](_0x427fdb,_0xd7abe2)['then'](function(_0x1ecfa2){logger[_0xf5c7('0xe')](_0xf5c7('0xf'),_0x31bf68,'request\x20sent');logger[_0xf5c7('0x10')](_0xf5c7('0x11'),_0x31bf68,_0xf5c7('0x12'),JSON[_0xf5c7('0x13')](_0x1ecfa2));if(_0x1ecfa2['error']){if(_0x1ecfa2[_0xf5c7('0x14')]['code']===0x1f4){logger[_0xf5c7('0x14')](_0xf5c7('0xf'),_0x31bf68,_0x1ecfa2[_0xf5c7('0x14')][_0xf5c7('0x15')]);return _0x4cadf1(_0x1ecfa2[_0xf5c7('0x14')]['message']);}logger[_0xf5c7('0x14')](_0xf5c7('0xf'),_0x31bf68,_0x1ecfa2['error'][_0xf5c7('0x15')]);return _0x2e7f15(_0x1ecfa2[_0xf5c7('0x14')][_0xf5c7('0x15')]);}else{logger[_0xf5c7('0xe')](_0xf5c7('0xf'),_0x31bf68,_0xf5c7('0x12'));_0x2e7f15(_0x1ecfa2[_0xf5c7('0x16')]['message']);}})[_0xf5c7('0x17')](function(_0x5a89d3){logger[_0xf5c7('0x14')](_0xf5c7('0xf'),_0x31bf68,_0x5a89d3);_0x4cadf1(_0x5a89d3);});});}exports[_0xf5c7('0x18')]=function(_0x2bde46){var _0xf67456=this;return new Promise(function(_0xe460a2,_0x12a19d){return db['MailAccount'][_0xf5c7('0x19')]({'raw':_0x2bde46[_0xf5c7('0x1a')]?_0x2bde46[_0xf5c7('0x1a')][_0xf5c7('0x1b')]===undefined?!![]:![]:!![],'where':_0x2bde46[_0xf5c7('0x1a')]?_0x2bde46['options'][_0xf5c7('0x1c')]||null:null,'attributes':_0x2bde46[_0xf5c7('0x1a')]?_0x2bde46['options']['attributes']||null:null,'limit':_0x2bde46[_0xf5c7('0x1a')]?_0x2bde46[_0xf5c7('0x1a')][_0xf5c7('0x1d')]||null:null,'include':_0x2bde46['options']?_0x2bde46[_0xf5c7('0x1a')][_0xf5c7('0x1e')]?_[_0xf5c7('0x1f')](_0x2bde46['options'][_0xf5c7('0x1e')],function(_0x57ab22){return{'model':db[_0x57ab22['model']],'as':_0x57ab22['as'],'attributes':_0x57ab22[_0xf5c7('0x20')],'include':_0x57ab22['include']?_['map'](_0x57ab22[_0xf5c7('0x1e')],function(_0x4a9502){return{'model':db[_0x4a9502[_0xf5c7('0x21')]],'as':_0x4a9502['as'],'attributes':_0x4a9502['attributes'],'include':_0x4a9502['include']?_[_0xf5c7('0x1f')](_0x4a9502[_0xf5c7('0x1e')],function(_0xce058){return{'model':db[_0xce058[_0xf5c7('0x21')]],'as':_0xce058['as'],'attributes':_0xce058['attributes']};}):[]};}):[]};}):[]:[]})[_0xf5c7('0x22')](function(_0x3eafa2){logger[_0xf5c7('0xe')](_0xf5c7('0x18'),_0x2bde46);logger[_0xf5c7('0x10')](_0xf5c7('0x18'),_0x2bde46,JSON[_0xf5c7('0x13')](_0x3eafa2));_0xe460a2(_0x3eafa2);})[_0xf5c7('0x17')](function(_0x25ca6b){logger[_0xf5c7('0x14')](_0xf5c7('0x18'),_0x25ca6b[_0xf5c7('0x15')],_0x2bde46);_0x12a19d(_0xf67456['error'](0x1f4,_0x25ca6b[_0xf5c7('0x15')]));});});};exports[_0xf5c7('0x23')]=function(_0x5cf7b5){var _0x1f0673=this;return new Promise(function(_0x24597c,_0x4440cb){return db[_0xf5c7('0x24')][_0xf5c7('0x25')]({'raw':_0x5cf7b5[_0xf5c7('0x1a')]?_0x5cf7b5['options'][_0xf5c7('0x1b')]===undefined?!![]:![]:!![],'where':_0x5cf7b5[_0xf5c7('0x1a')]?_0x5cf7b5[_0xf5c7('0x1a')][_0xf5c7('0x1c')]||null:null,'attributes':_0x5cf7b5[_0xf5c7('0x1a')]?_0x5cf7b5[_0xf5c7('0x1a')]['attributes']||null:null,'include':_0x5cf7b5['options']?_0x5cf7b5[_0xf5c7('0x1a')][_0xf5c7('0x1e')]?_[_0xf5c7('0x1f')](_0x5cf7b5[_0xf5c7('0x1a')][_0xf5c7('0x1e')],function(_0x3cd9fc){return{'model':db[_0x3cd9fc['model']],'as':_0x3cd9fc['as'],'attributes':_0x3cd9fc[_0xf5c7('0x20')],'include':_0x3cd9fc['include']?_[_0xf5c7('0x1f')](_0x3cd9fc[_0xf5c7('0x1e')],function(_0x1ad9ed){return{'model':db[_0x1ad9ed[_0xf5c7('0x21')]],'as':_0x1ad9ed['as'],'attributes':_0x1ad9ed[_0xf5c7('0x20')],'include':_0x1ad9ed[_0xf5c7('0x1e')]?_[_0xf5c7('0x1f')](_0x1ad9ed[_0xf5c7('0x1e')],function(_0x38b6b0){return{'model':db[_0x38b6b0[_0xf5c7('0x21')]],'as':_0x38b6b0['as'],'attributes':_0x38b6b0[_0xf5c7('0x20')]};}):[]};}):[]};}):[]:[]})[_0xf5c7('0x22')](function(_0x4d15fc){logger[_0xf5c7('0xe')](_0xf5c7('0x23'),_0x5cf7b5);logger[_0xf5c7('0x10')]('ShowMailAccount',_0x5cf7b5,JSON[_0xf5c7('0x13')](_0x4d15fc));_0x24597c(_0x4d15fc);})[_0xf5c7('0x17')](function(_0x13a08a){logger[_0xf5c7('0x14')](_0xf5c7('0x23'),_0x13a08a[_0xf5c7('0x15')],_0x5cf7b5);_0x4440cb(_0x1f0673['error'](0x1f4,_0x13a08a[_0xf5c7('0x15')]));});});};exports['NotifyMailAccount']=function(_0x282044){var _0x151baa=this;return new Promise(function(_0x13d4b2,_0x115b28){var _0x2af328={'body':_0x282044[_0xf5c7('0x26')],'channel':'mail'};var _0x1a6549=_['difference'](_[_0xf5c7('0x27')](db[_0xf5c7('0x28')][_0xf5c7('0x29')]),[_0xf5c7('0x2a'),_0xf5c7('0x2b'),'CompanyId','ListId']);var _0x19b3dd=![];if(_0x282044['body']['id']){delete _0x282044[_0xf5c7('0x26')]['id'];}if(_[_0xf5c7('0x2c')](_0x282044[_0xf5c7('0x26')]['from'])){return _0x115b28(_0x151baa['error'](0x1f4,_0xf5c7('0x2d')));}if(_['isNil'](_0x282044[_0xf5c7('0x26')][_0xf5c7('0x26')])||_0x282044[_0xf5c7('0x26')]['body']===''){return _0x115b28(_0x151baa[_0xf5c7('0x14')](0x1f4,_0xf5c7('0x2e')));}if(_[_0xf5c7('0x2c')](_0x282044['body'][_0xf5c7('0x2f')])){return _0x115b28(_0x151baa[_0xf5c7('0x14')](0x1f4,_0xf5c7('0x30')+_0x1a6549));}if(!_['includes'](_0x1a6549,_0x282044['body'][_0xf5c7('0x2f')])){return _0x115b28(_0x151baa[_0xf5c7('0x14')](0x1f4,_0xf5c7('0x31')+_0x1a6549));}var _0x36a9b2={};_0x36a9b2[_0x282044[_0xf5c7('0x26')]['mapKey']]=_0x282044[_0xf5c7('0x26')][_0xf5c7('0x32')];return db[_0xf5c7('0x24')][_0xf5c7('0x25')]({'where':{'id':_0x282044[_0xf5c7('0x33')]['id']},'include':[{'model':db[_0xf5c7('0x34')],'as':_0xf5c7('0x35'),'include':[{'model':db[_0xf5c7('0x28')],'as':'Contacts','where':_0x36a9b2,'limit':0x1,'order':[[_0xf5c7('0x2b'),_0xf5c7('0x36')]]}]},{'model':db['MailApplication'],'as':'Applications'},{'model':db[_0xf5c7('0x37')],'as':_0xf5c7('0x38')}]})[_0xf5c7('0x22')](function(_0x4ea1e5){if(_0x4ea1e5&&_0x4ea1e5['List']){var _0x49ed1f=_0x4ea1e5[_0xf5c7('0x39')]({'plain':!![]});_0x2af328[_0xf5c7('0x33')]=_['omit'](_0x49ed1f,['Applications',_0xf5c7('0x35')]);_0x2af328['applications']=_0x49ed1f[_0xf5c7('0x3a')];_0x2af328['list']=_0x49ed1f[_0xf5c7('0x35')];_0x2af328[_0xf5c7('0x3b')]=_[_0xf5c7('0x3c')](_0x2af328[_0xf5c7('0x3b')],['priority'],[_0xf5c7('0x3d')]);if(_0x2af328[_0xf5c7('0x33')]&&_0x2af328[_0xf5c7('0x33')]['autoclose']){_0x2af328['applications'][_0xf5c7('0x3e')]({'id':0x0,'priority':_0x2af328[_0xf5c7('0x3b')][_0xf5c7('0x3f')]+0x1,'app':_0xf5c7('0x40'),'appdata':_0xf5c7('0x41'),'interval':_0xf5c7('0x42')});}if(_0x2af328[_0xf5c7('0x33')][_0xf5c7('0x3a')]){delete _0x2af328[_0xf5c7('0x33')][_0xf5c7('0x3a')];}if(_0x2af328[_0xf5c7('0x33')]['List']){delete _0x2af328[_0xf5c7('0x33')][_0xf5c7('0x35')];}if(_0x49ed1f[_0xf5c7('0x35')][_0xf5c7('0x43')][_0xf5c7('0x3f')]){return _0x49ed1f[_0xf5c7('0x35')][_0xf5c7('0x43')][0x0];}var _0x12b727=_[_0xf5c7('0x44')](_0x282044[_0xf5c7('0x26')],{'firstName':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x32')],'ListId':_0x49ed1f['ListId']});_0x12b727[_0x282044[_0xf5c7('0x26')][_0xf5c7('0x2f')]]=_0x282044[_0xf5c7('0x26')][_0xf5c7('0x32')];return db[_0xf5c7('0x28')][_0xf5c7('0x45')](_0x12b727);}else{throw new Error(_0xf5c7('0x46'));}})['then'](function(_0x23d65b){_0x2af328[_0xf5c7('0x47')]=_0x23d65b;if(_0x23d65b){if(!_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x48')]){_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x48')]=rs[_0xf5c7('0x49')]()+'\x20'+_0x282044['body']['message'][_0xf5c7('0x32')];}var _0x204a54={'ContactId':_0x23d65b['id'],'MailAccountId':_0x282044[_0xf5c7('0x33')]['id'],'inReplyTo':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x48')],'to':_0x282044[_0xf5c7('0x26')]['message'][_0xf5c7('0x32')],'cc':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')]['cc'],'subject':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x4a')],'attach':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')]['attach'],'lastMsgAt':moment()[_0xf5c7('0x4b')](_0xf5c7('0x4c')),'lastMsgDirection':'in'};return db[_0xf5c7('0x4d')][_0xf5c7('0x25')]({'where':{'closed':![],'MailAccountId':_0x282044[_0xf5c7('0x33')]['id']},'include':[{'model':db[_0xf5c7('0x4e')],'as':_0xf5c7('0x4f'),'attributes':['messageId'],'where':{'messageId':_0x282044['body'][_0xf5c7('0x15')]['inReplyTo']}}]})[_0xf5c7('0x22')](function(_0x31c409){if(_0x31c409){return[_0x31c409,![]];}return db['MailInteraction'][_0xf5c7('0x45')](_0x204a54)[_0xf5c7('0x22')](function(_0x31dcd9){return[_0x31dcd9,!![]];});});}else{throw new Error(_0xf5c7('0x50'));}})[_0xf5c7('0x51')](function(_0x527fed,_0xd5d063){if(_0x527fed){_0x19b3dd=_0xd5d063;if(!_0xd5d063){return _0x527fed[_0xf5c7('0x52')]({'inReplyTo':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x48')],'to':_0x282044['body'][_0xf5c7('0x15')][_0xf5c7('0x32')],'cc':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')]['cc'],'subject':_0x282044[_0xf5c7('0x26')]['message']['subject'],'attach':_0x527fed[_0xf5c7('0x53')]?_0x527fed[_0xf5c7('0x53')]:_0x282044['body'][_0xf5c7('0x15')][_0xf5c7('0x53')],'substatus':null,'substatusAt':moment()['format'](_0xf5c7('0x4c')),'lastMsgAt':moment()[_0xf5c7('0x4b')](_0xf5c7('0x4c')),'lastMsgDirection':'in'});}else{return _0x527fed;}}})[_0xf5c7('0x22')](function(_0x27bd2e){_0x2af328[_0xf5c7('0x54')]=_0x27bd2e[_0xf5c7('0x39')]({'plain':!![]});_0x2af328[_0xf5c7('0x54')][_0xf5c7('0x55')]=_0x19b3dd;return db[_0xf5c7('0x4e')][_0xf5c7('0x45')]({'body':_0x282044['body'][_0xf5c7('0x26')],'MailAccountId':_0x282044[_0xf5c7('0x33')]['id'],'MailInteractionId':_0x27bd2e['id'],'direction':'in','ContactId':_0x2af328[_0xf5c7('0x47')]['id'],'messageId':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x48')],'from':_0x282044[_0xf5c7('0x26')]['message'][_0xf5c7('0x32')],'to':_0x282044['body'][_0xf5c7('0x15')]['to'],'cc':_0x282044[_0xf5c7('0x26')]['message']['cc'],'subject':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x4a')],'attach':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')]['attach'],'Attachments':_0x282044[_0xf5c7('0x26')]['message'][_0xf5c7('0x56')],'originTo':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')]['originTo'],'originCc':_0x282044[_0xf5c7('0x26')]['message']['originCc'],'bcc':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x57')],'ChatWebsiteId':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x58')]||null,'originChannel':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x59')]||_0xf5c7('0x5a'),'ChatOfflineMessageId':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')]['ChatOfflineMessageId']||null},{'include':[{'model':db[_0xf5c7('0x5b')],'as':_0xf5c7('0x5c')}]});})[_0xf5c7('0x22')](function(_0x3097d8){_0x2af328[_0xf5c7('0x15')]=_0x3097d8;if(_0x2af328[_0xf5c7('0x54')][_0xf5c7('0x5d')]){return db[_0xf5c7('0x5e')][_0xf5c7('0x25')]({'attributes':['id',_0xf5c7('0x5f')],'where':{'id':_0x2af328['interaction'][_0xf5c7('0x5d')]}})[_0xf5c7('0x22')](function(_0x2719ac){if(_0x2719ac){_0x2af328[_0xf5c7('0x3b')][_0xf5c7('0x60')]({'id':0x0,'priority':0x0,'app':_0xf5c7('0x61'),'appdata':_0x2719ac['name']+','+(_0x2af328['account']['waitForTheAssignedAgent']||0xa),'interval':_0xf5c7('0x42')});}return respondWithRpcPromise(_0xf5c7('0x62'),_0xf5c7('0x63'),_0x2af328);});}return respondWithRpcPromise(_0xf5c7('0x62'),_0xf5c7('0x63'),_0x2af328);})['then'](function(_0x3b5603){_0x13d4b2(_0x3b5603);})[_0xf5c7('0x17')](function(_0x404a7c){_0x115b28(_0x151baa[_0xf5c7('0x14')](0x1f4,_0x404a7c['message']));});});};
\ No newline at end of file
index 362984d..78b43f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1373=['mailAccount:','./mailAccount.events','update','emit','removeListener','length'];(function(_0x45ec1a,_0x2d4378){var _0x22cf41=function(_0x2de762){while(--_0x2de762){_0x45ec1a['push'](_0x45ec1a['shift']());}};_0x22cf41(++_0x2d4378);}(_0x1373,0x1e1));var _0x3137=function(_0x486a3c,_0x1f8eaf){_0x486a3c=_0x486a3c-0x0;var _0x3ce3ce=_0x1373[_0x486a3c];return _0x3ce3ce;};'use strict';var MailAccountEvents=require(_0x3137('0x0'));var events=['save','remove',_0x3137('0x1')];function createListener(_0x1040b2,_0x4df522){return function(_0x466357){_0x4df522[_0x3137('0x2')](_0x1040b2,_0x466357);};}function removeListener(_0x2e6900,_0x527c82){return function(){MailAccountEvents[_0x3137('0x3')](_0x2e6900,_0x527c82);};}exports['register']=function(_0x265af1){for(var _0x172999=0x0,_0x55e3ea=events[_0x3137('0x4')];_0x172999<_0x55e3ea;_0x172999++){var _0x513e02=events[_0x172999];var _0x2140ef=createListener(_0x3137('0x5')+_0x513e02,_0x265af1);MailAccountEvents['on'](_0x513e02,_0x2140ef);}};
\ No newline at end of file
+var _0x756e=['mailAccount:','save','update','removeListener','register','length'];(function(_0x41d4d7,_0x295f96){var _0x41298f=function(_0x4e48ef){while(--_0x4e48ef){_0x41d4d7['push'](_0x41d4d7['shift']());}};_0x41298f(++_0x295f96);}(_0x756e,0x18d));var _0xe756=function(_0x126a76,_0x3111fb){_0x126a76=_0x126a76-0x0;var _0x2216d8=_0x756e[_0x126a76];return _0x2216d8;};'use strict';var MailAccountEvents=require('./mailAccount.events');var events=[_0xe756('0x0'),'remove',_0xe756('0x1')];function createListener(_0x44f21e,_0x14b229){return function(_0x259180){_0x14b229['emit'](_0x44f21e,_0x259180);};}function removeListener(_0xcecb10,_0x2b98fe){return function(){MailAccountEvents[_0xe756('0x2')](_0xcecb10,_0x2b98fe);};}exports[_0xe756('0x3')]=function(_0x21b39c){for(var _0xcf6f01=0x0,_0x2ee1e6=events[_0xe756('0x4')];_0xcf6f01<_0x2ee1e6;_0xcf6f01++){var _0x1f0738=events[_0xcf6f01];var _0x134ba7=createListener(_0xe756('0x5')+_0x1f0738,_0x21b39c);MailAccountEvents['on'](_0x1f0738,_0x134ba7);}};
\ No newline at end of file
index c047093..26d5997 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13eb=['destroy','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','/:id','isAuthenticated','show','put','update','delete'];(function(_0x4cdecc,_0x321d1a){var _0x3948a9=function(_0x2a247d){while(--_0x2a247d){_0x4cdecc['push'](_0x4cdecc['shift']());}};_0x3948a9(++_0x321d1a);}(_0x13eb,0x81));var _0xb13e=function(_0x2c74e2,_0x78daf1){_0x2c74e2=_0x2c74e2-0x0;var _0x14e004=_0x13eb[_0x2c74e2];return _0x14e004;};'use strict';var multer=require('multer');var util=require(_0xb13e('0x0'));var path=require(_0xb13e('0x1'));var timeout=require('connect-timeout');var express=require(_0xb13e('0x2'));var router=express[_0xb13e('0x3')]();var fs_extra=require(_0xb13e('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xb13e('0x5'));var config=require(_0xb13e('0x6'));var controller=require(_0xb13e('0x7'));router[_0xb13e('0x8')](_0xb13e('0x9'),auth[_0xb13e('0xa')](),controller[_0xb13e('0xb')]);router[_0xb13e('0xc')](_0xb13e('0x9'),auth['isAuthenticated'](),controller[_0xb13e('0xd')]);router[_0xb13e('0xe')](_0xb13e('0x9'),auth['isAuthenticated'](),controller[_0xb13e('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x543a=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./mailApplication.controller','get','isAuthenticated','show','delete','/:id','destroy','multer'];(function(_0x12a554,_0x3d7ef8){var _0x244ba0=function(_0x5eb5ff){while(--_0x5eb5ff){_0x12a554['push'](_0x12a554['shift']());}};_0x244ba0(++_0x3d7ef8);}(_0x543a,0xd1));var _0xa543=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x543a[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xa543('0x0'));var util=require(_0xa543('0x1'));var path=require(_0xa543('0x2'));var timeout=require(_0xa543('0x3'));var express=require('express');var router=express[_0xa543('0x4')]();var fs_extra=require(_0xa543('0x5'));var auth=require(_0xa543('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xa543('0x7'));var controller=require(_0xa543('0x8'));router[_0xa543('0x9')]('/:id',auth[_0xa543('0xa')](),controller[_0xa543('0xb')]);router['put']('/:id',auth[_0xa543('0xa')](),controller['update']);router[_0xa543('0xc')](_0xa543('0xd'),auth['isAuthenticated'](),controller[_0xa543('0xe')]);module['exports']=router;
\ No newline at end of file
index ef4349c..17a22a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7df=['STRING','noop','sequelize','INTEGER'];(function(_0x3a9d0c,_0x1da7c4){var _0x250738=function(_0x4fdbd6){while(--_0x4fdbd6){_0x3a9d0c['push'](_0x3a9d0c['shift']());}};_0x250738(++_0x1da7c4);}(_0xa7df,0x1d2));var _0xfa7d=function(_0x1fad20,_0x220164){_0x1fad20=_0x1fad20-0x0;var _0x5b70ec=_0xa7df[_0x1fad20];return _0x5b70ec;};'use strict';var Sequelize=require(_0xfa7d('0x0'));module['exports']={'priority':{'type':Sequelize[_0xfa7d('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xfa7d('0x2')],'allowNull':![],'defaultValue':_0xfa7d('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xfa7d('0x2')]},'interval':{'type':Sequelize[_0xfa7d('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x77f0=['INTEGER','STRING','noop','TEXT','*,*,*,*','sequelize'];(function(_0x21acea,_0x32d99e){var _0x480568=function(_0x2882bf){while(--_0x2882bf){_0x21acea['push'](_0x21acea['shift']());}};_0x480568(++_0x32d99e);}(_0x77f0,0xa7));var _0x077f=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0x77f0[_0x1f9f37];return _0x21c080;};'use strict';var Sequelize=require(_0x077f('0x0'));module['exports']={'priority':{'type':Sequelize[_0x077f('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x077f('0x2')],'allowNull':![],'defaultValue':_0x077f('0x3')},'appdata':{'type':Sequelize[_0x077f('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x077f('0x2')],'defaultValue':_0x077f('0x5')}};
\ No newline at end of file
index 655cdba..7a9e267 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['util','sox','ejs','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','count','limit','set','apply','save','update','then','error','stack','name','send','show','model','keys','MailApplication','query','filters','attributes','intersection','length','includeAll','include','find','catch','body','params','eml-format','rimraf','zip-dir','moment','bluebird','mustache'];(function(_0x368abc,_0x8bbc6f){var _0x2fd9f0=function(_0x129756){while(--_0x129756){_0x368abc['push'](_0x368abc['shift']());}};_0x2fd9f0(++_0x8bbc6f);}(_0x70e0,0x17b));var _0x070e=function(_0x4fe5e,_0x128463){_0x4fe5e=_0x4fe5e-0x0;var _0x24e364=_0x70e0[_0x4fe5e];return _0x24e364;};'use strict';var emlformat=require(_0x070e('0x0'));var rimraf=require(_0x070e('0x1'));var zipdir=require(_0x070e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x070e('0x3'));var BPromise=require(_0x070e('0x4'));var Mustache=require(_0x070e('0x5'));var util=require(_0x070e('0x6'));var path=require('path');var sox=require(_0x070e('0x7'));var csv=require('to-csv');var ejs=require(_0x070e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x070e('0x9'));var jsforce=require(_0x070e('0xa'));var deskjs=require(_0x070e('0xb'));var toCsv=require(_0x070e('0xc'));var querystring=require(_0x070e('0xd'));var Papa=require(_0x070e('0xe'));var Redis=require(_0x070e('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x070e('0x10'));var hardwareService=require(_0x070e('0x11'));var logger=require(_0x070e('0x12'))(_0x070e('0x13'));var utils=require(_0x070e('0x14'));var config=require(_0x070e('0x15'));var licenseUtil=require(_0x070e('0x16'));var db=require(_0x070e('0x17'))['db'];function respondWithStatusCode(_0x39d2b9,_0x5bf079){_0x5bf079=_0x5bf079||0xcc;return function(_0x2930b8){if(_0x2930b8){return _0x39d2b9['sendStatus'](_0x5bf079);}return _0x39d2b9['status'](_0x5bf079)[_0x070e('0x18')]();};}function respondWithResult(_0x56c7ba,_0x4a33d2){_0x4a33d2=_0x4a33d2||0xc8;return function(_0x5bae0f){if(_0x5bae0f){return _0x56c7ba[_0x070e('0x19')](_0x4a33d2)[_0x070e('0x1a')](_0x5bae0f);}};}function respondWithFilteredResult(_0x51d14d,_0x5d3a38){return function(_0x373d86){if(_0x373d86){var _0xeae1a5=typeof _0x5d3a38[_0x070e('0x1b')]===_0x070e('0x1c')&&typeof _0x5d3a38['limit']==='undefined';var _0x17e2e4=_0x373d86[_0x070e('0x1d')];var _0x38f6e6=_0xeae1a5?0x0:_0x5d3a38[_0x070e('0x1b')];var _0x364b3f=_0xeae1a5?_0x373d86['count']:_0x5d3a38[_0x070e('0x1b')]+_0x5d3a38[_0x070e('0x1e')];var _0x1ad3de;if(_0x364b3f>=_0x17e2e4){_0x364b3f=_0x17e2e4;_0x1ad3de=0xc8;}else{_0x1ad3de=0xce;}_0x51d14d[_0x070e('0x19')](_0x1ad3de);return _0x51d14d[_0x070e('0x1f')]('Content-Range',_0x38f6e6+'-'+_0x364b3f+'/'+_0x17e2e4)['json'](_0x373d86);}return null;};}function patchUpdates(_0x4e958f){return function(_0x9907cf){try{jsonpatch[_0x070e('0x20')](_0x9907cf,_0x4e958f,!![]);}catch(_0x20dc60){return BPromise['reject'](_0x20dc60);}return _0x9907cf[_0x070e('0x21')]();};}function saveUpdates(_0x5dc5d2,_0xf8dd5d){return function(_0x3f6985){if(_0x3f6985){return _0x3f6985[_0x070e('0x22')](_0x5dc5d2)[_0x070e('0x23')](function(_0x28a1c3){return _0x28a1c3;});}return null;};}function removeEntity(_0xa86797,_0xe405e){return function(_0x164cdf){if(_0x164cdf){return _0x164cdf['destroy']()[_0x070e('0x23')](function(){_0xa86797[_0x070e('0x19')](0xcc)[_0x070e('0x18')]();});}};}function handleEntityNotFound(_0x503f4d,_0xf17c56){return function(_0x5f3e9d){if(!_0x5f3e9d){_0x503f4d['sendStatus'](0x194);}return _0x5f3e9d;};}function handleError(_0x2ccbd7,_0x25f6e){_0x25f6e=_0x25f6e||0x1f4;return function(_0x41deb1){logger[_0x070e('0x24')](_0x41deb1[_0x070e('0x25')]);if(_0x41deb1['name']){delete _0x41deb1[_0x070e('0x26')];}_0x2ccbd7[_0x070e('0x19')](_0x25f6e)[_0x070e('0x27')](_0x41deb1);};}exports[_0x070e('0x28')]=function(_0x43dd96,_0x28d7f2){var _0x1a1892={'raw':!![],'where':{'id':_0x43dd96['params']['id']}},_0x26373b={};_0x26373b[_0x070e('0x29')]=_[_0x070e('0x2a')](db[_0x070e('0x2b')]['rawAttributes']);_0x26373b['query']=_[_0x070e('0x2a')](_0x43dd96[_0x070e('0x2c')]);_0x26373b[_0x070e('0x2d')]=_['intersection'](_0x26373b[_0x070e('0x29')],_0x26373b[_0x070e('0x2c')]);_0x1a1892[_0x070e('0x2e')]=_[_0x070e('0x2f')](_0x26373b['model'],qs['fields'](_0x43dd96['query']['fields']));_0x1a1892[_0x070e('0x2e')]=_0x1a1892['attributes'][_0x070e('0x30')]?_0x1a1892[_0x070e('0x2e')]:_0x26373b['model'];if(_0x43dd96['query'][_0x070e('0x31')]){_0x1a1892[_0x070e('0x32')]=[{'all':!![]}];}_0x1a1892=_['merge']({},_0x1a1892,_0x43dd96['options']);return db[_0x070e('0x2b')][_0x070e('0x33')](_0x1a1892)[_0x070e('0x23')](handleEntityNotFound(_0x28d7f2,null))[_0x070e('0x23')](respondWithResult(_0x28d7f2,null))[_0x070e('0x34')](handleError(_0x28d7f2,null));};exports['update']=function(_0x482cc2,_0x24d17d){if(_0x482cc2[_0x070e('0x35')]['id']){delete _0x482cc2[_0x070e('0x35')]['id'];}return db[_0x070e('0x2b')][_0x070e('0x33')]({'where':{'id':_0x482cc2['params']['id']}})[_0x070e('0x23')](handleEntityNotFound(_0x24d17d,null))[_0x070e('0x23')](saveUpdates(_0x482cc2['body'],null))[_0x070e('0x23')](respondWithResult(_0x24d17d,null))[_0x070e('0x34')](handleError(_0x24d17d,null));};exports['destroy']=function(_0x4d4ee8,_0x5ddbe9){return db[_0x070e('0x2b')][_0x070e('0x33')]({'where':{'id':_0x4d4ee8[_0x070e('0x36')]['id']}})[_0x070e('0x23')](handleEntityNotFound(_0x5ddbe9,null))[_0x070e('0x23')](removeEntity(_0x5ddbe9,null))['catch'](handleError(_0x5ddbe9,null));};
\ No newline at end of file
+var _0x70e0=['util','sox','ejs','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','count','limit','set','apply','save','update','then','error','stack','name','send','show','model','keys','MailApplication','query','filters','attributes','intersection','length','includeAll','include','find','catch','body','params','eml-format','rimraf','zip-dir','moment','bluebird','mustache'];(function(_0x558dad,_0x1a9b5a){var _0x1921ea=function(_0x2d44d6){while(--_0x2d44d6){_0x558dad['push'](_0x558dad['shift']());}};_0x1921ea(++_0x1a9b5a);}(_0x70e0,0x17b));var _0x070e=function(_0x26c13f,_0x1a9f5f){_0x26c13f=_0x26c13f-0x0;var _0x4174b1=_0x70e0[_0x26c13f];return _0x4174b1;};'use strict';var emlformat=require(_0x070e('0x0'));var rimraf=require(_0x070e('0x1'));var zipdir=require(_0x070e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x070e('0x3'));var BPromise=require(_0x070e('0x4'));var Mustache=require(_0x070e('0x5'));var util=require(_0x070e('0x6'));var path=require('path');var sox=require(_0x070e('0x7'));var csv=require('to-csv');var ejs=require(_0x070e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x070e('0x9'));var jsforce=require(_0x070e('0xa'));var deskjs=require(_0x070e('0xb'));var toCsv=require(_0x070e('0xc'));var querystring=require(_0x070e('0xd'));var Papa=require(_0x070e('0xe'));var Redis=require(_0x070e('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x070e('0x10'));var hardwareService=require(_0x070e('0x11'));var logger=require(_0x070e('0x12'))(_0x070e('0x13'));var utils=require(_0x070e('0x14'));var config=require(_0x070e('0x15'));var licenseUtil=require(_0x070e('0x16'));var db=require(_0x070e('0x17'))['db'];function respondWithStatusCode(_0x39d2b9,_0x5bf079){_0x5bf079=_0x5bf079||0xcc;return function(_0x2930b8){if(_0x2930b8){return _0x39d2b9['sendStatus'](_0x5bf079);}return _0x39d2b9['status'](_0x5bf079)[_0x070e('0x18')]();};}function respondWithResult(_0x56c7ba,_0x4a33d2){_0x4a33d2=_0x4a33d2||0xc8;return function(_0x5bae0f){if(_0x5bae0f){return _0x56c7ba[_0x070e('0x19')](_0x4a33d2)[_0x070e('0x1a')](_0x5bae0f);}};}function respondWithFilteredResult(_0x51d14d,_0x5d3a38){return function(_0x373d86){if(_0x373d86){var _0xeae1a5=typeof _0x5d3a38[_0x070e('0x1b')]===_0x070e('0x1c')&&typeof _0x5d3a38['limit']==='undefined';var _0x17e2e4=_0x373d86[_0x070e('0x1d')];var _0x38f6e6=_0xeae1a5?0x0:_0x5d3a38[_0x070e('0x1b')];var _0x364b3f=_0xeae1a5?_0x373d86['count']:_0x5d3a38[_0x070e('0x1b')]+_0x5d3a38[_0x070e('0x1e')];var _0x1ad3de;if(_0x364b3f>=_0x17e2e4){_0x364b3f=_0x17e2e4;_0x1ad3de=0xc8;}else{_0x1ad3de=0xce;}_0x51d14d[_0x070e('0x19')](_0x1ad3de);return _0x51d14d[_0x070e('0x1f')]('Content-Range',_0x38f6e6+'-'+_0x364b3f+'/'+_0x17e2e4)['json'](_0x373d86);}return null;};}function patchUpdates(_0x4e958f){return function(_0x9907cf){try{jsonpatch[_0x070e('0x20')](_0x9907cf,_0x4e958f,!![]);}catch(_0x20dc60){return BPromise['reject'](_0x20dc60);}return _0x9907cf[_0x070e('0x21')]();};}function saveUpdates(_0x5dc5d2,_0xf8dd5d){return function(_0x3f6985){if(_0x3f6985){return _0x3f6985[_0x070e('0x22')](_0x5dc5d2)[_0x070e('0x23')](function(_0x28a1c3){return _0x28a1c3;});}return null;};}function removeEntity(_0xa86797,_0xe405e){return function(_0x164cdf){if(_0x164cdf){return _0x164cdf['destroy']()[_0x070e('0x23')](function(){_0xa86797[_0x070e('0x19')](0xcc)[_0x070e('0x18')]();});}};}function handleEntityNotFound(_0x503f4d,_0xf17c56){return function(_0x5f3e9d){if(!_0x5f3e9d){_0x503f4d['sendStatus'](0x194);}return _0x5f3e9d;};}function handleError(_0x2ccbd7,_0x25f6e){_0x25f6e=_0x25f6e||0x1f4;return function(_0x41deb1){logger[_0x070e('0x24')](_0x41deb1[_0x070e('0x25')]);if(_0x41deb1['name']){delete _0x41deb1[_0x070e('0x26')];}_0x2ccbd7[_0x070e('0x19')](_0x25f6e)[_0x070e('0x27')](_0x41deb1);};}exports[_0x070e('0x28')]=function(_0x43dd96,_0x28d7f2){var _0x1a1892={'raw':!![],'where':{'id':_0x43dd96['params']['id']}},_0x26373b={};_0x26373b[_0x070e('0x29')]=_[_0x070e('0x2a')](db[_0x070e('0x2b')]['rawAttributes']);_0x26373b['query']=_[_0x070e('0x2a')](_0x43dd96[_0x070e('0x2c')]);_0x26373b[_0x070e('0x2d')]=_['intersection'](_0x26373b[_0x070e('0x29')],_0x26373b[_0x070e('0x2c')]);_0x1a1892[_0x070e('0x2e')]=_[_0x070e('0x2f')](_0x26373b['model'],qs['fields'](_0x43dd96['query']['fields']));_0x1a1892[_0x070e('0x2e')]=_0x1a1892['attributes'][_0x070e('0x30')]?_0x1a1892[_0x070e('0x2e')]:_0x26373b['model'];if(_0x43dd96['query'][_0x070e('0x31')]){_0x1a1892[_0x070e('0x32')]=[{'all':!![]}];}_0x1a1892=_['merge']({},_0x1a1892,_0x43dd96['options']);return db[_0x070e('0x2b')][_0x070e('0x33')](_0x1a1892)[_0x070e('0x23')](handleEntityNotFound(_0x28d7f2,null))[_0x070e('0x23')](respondWithResult(_0x28d7f2,null))[_0x070e('0x34')](handleError(_0x28d7f2,null));};exports['update']=function(_0x482cc2,_0x24d17d){if(_0x482cc2[_0x070e('0x35')]['id']){delete _0x482cc2[_0x070e('0x35')]['id'];}return db[_0x070e('0x2b')][_0x070e('0x33')]({'where':{'id':_0x482cc2['params']['id']}})[_0x070e('0x23')](handleEntityNotFound(_0x24d17d,null))[_0x070e('0x23')](saveUpdates(_0x482cc2['body'],null))[_0x070e('0x23')](respondWithResult(_0x24d17d,null))[_0x070e('0x34')](handleError(_0x24d17d,null));};exports['destroy']=function(_0x4d4ee8,_0x5ddbe9){return db[_0x070e('0x2b')][_0x070e('0x33')]({'where':{'id':_0x4d4ee8[_0x070e('0x36')]['id']}})[_0x070e('0x23')](handleEntityNotFound(_0x5ddbe9,null))[_0x070e('0x23')](removeEntity(_0x5ddbe9,null))['catch'](handleError(_0x5ddbe9,null));};
\ No newline at end of file
index 9d21d5a..d6527c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b74=['./mailApplication.attributes','MailApplication','utf8mb4','utf8mb4_unicode_ci','lodash','util','moment','path','rimraf','../../config/environment'];(function(_0x31dd8a,_0x43ce3d){var _0x29b775=function(_0x3a9745){while(--_0x3a9745){_0x31dd8a['push'](_0x31dd8a['shift']());}};_0x29b775(++_0x43ce3d);}(_0x3b74,0xe0));var _0x43b7=function(_0x26e89e,_0xacad9){_0x26e89e=_0x26e89e-0x0;var _0x5bf1d3=_0x3b74[_0x26e89e];return _0x5bf1d3;};'use strict';var _=require(_0x43b7('0x0'));var util=require(_0x43b7('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x43b7('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x43b7('0x3'));var rimraf=require(_0x43b7('0x4'));var config=require(_0x43b7('0x5'));var attributes=require(_0x43b7('0x6'));module['exports']=function(_0x83acd4,_0x435f10){return _0x83acd4['define'](_0x43b7('0x7'),attributes,{'tableName':'mail_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x43b7('0x8'),'collate':_0x43b7('0x9')});};
\ No newline at end of file
+var _0x442c=['MailApplication','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./mailApplication.attributes','exports','define'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x442c,0x128));var _0xc442=function(_0x54d01a,_0x3d4487){_0x54d01a=_0x54d01a-0x0;var _0x1b6149=_0x442c[_0x54d01a];return _0x1b6149;};'use strict';var _=require(_0xc442('0x0'));var util=require(_0xc442('0x1'));var logger=require(_0xc442('0x2'))(_0xc442('0x3'));var moment=require(_0xc442('0x4'));var BPromise=require(_0xc442('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc442('0x6'));var rimraf=require(_0xc442('0x7'));var config=require(_0xc442('0x8'));var attributes=require(_0xc442('0x9'));module[_0xc442('0xa')]=function(_0x4fa0ee,_0x12cd13){return _0x4fa0ee[_0xc442('0xb')](_0xc442('0xc'),attributes,{'tableName':'mail_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc442('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 19ccc8f..7f74877 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6799=['request\x20sent','result','catch','UpdateMailApplication','update','body','options','raw','where','stringify','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','request','then','info','MailApplication,\x20%s,\x20%s','MailApplication,\x20%s,\x20%s,\x20%s','code','error','message'];(function(_0x264f48,_0x2c82d8){var _0xb99167=function(_0x4a6be7){while(--_0x4a6be7){_0x264f48['push'](_0x264f48['shift']());}};_0xb99167(++_0x2c82d8);}(_0x6799,0x91));var _0x9679=function(_0x211836,_0x31c1dc){_0x211836=_0x211836-0x0;var _0x369d34=_0x6799[_0x211836];return _0x369d34;};'use strict';var _=require(_0x9679('0x0'));var util=require(_0x9679('0x1'));var moment=require('moment');var BPromise=require(_0x9679('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9679('0x3'));var db=require(_0x9679('0x4'))['db'];var utils=require(_0x9679('0x5'));var logger=require(_0x9679('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x9679('0x7'));var client=jayson[_0x9679('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x29d0c1,_0x41bc1c,_0x4b7f48){return new BPromise(function(_0xc12caf,_0x25d823){return client[_0x9679('0x9')](_0x29d0c1,_0x4b7f48)[_0x9679('0xa')](function(_0x5a63a2){logger[_0x9679('0xb')](_0x9679('0xc'),_0x41bc1c,'request\x20sent');logger['debug'](_0x9679('0xd'),_0x41bc1c,'request\x20sent',JSON['stringify'](_0x5a63a2));if(_0x5a63a2['error']){if(_0x5a63a2['error'][_0x9679('0xe')]===0x1f4){logger[_0x9679('0xf')](_0x9679('0xc'),_0x41bc1c,_0x5a63a2[_0x9679('0xf')]['message']);return _0x25d823(_0x5a63a2['error'][_0x9679('0x10')]);}logger[_0x9679('0xf')]('MailApplication,\x20%s,\x20%s',_0x41bc1c,_0x5a63a2[_0x9679('0xf')]['message']);return _0xc12caf(_0x5a63a2['error']['message']);}else{logger[_0x9679('0xb')](_0x9679('0xc'),_0x41bc1c,_0x9679('0x11'));_0xc12caf(_0x5a63a2[_0x9679('0x12')]['message']);}})[_0x9679('0x13')](function(_0x293599){logger[_0x9679('0xf')](_0x9679('0xc'),_0x41bc1c,_0x293599);_0x25d823(_0x293599);});});}exports[_0x9679('0x14')]=function(_0x285098){var _0x462236=this;return new Promise(function(_0x371b46,_0x1bbdb1){return db['MailApplication'][_0x9679('0x15')](_0x285098[_0x9679('0x16')],{'raw':_0x285098[_0x9679('0x17')]?_0x285098[_0x9679('0x17')][_0x9679('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x285098[_0x9679('0x17')]?_0x285098[_0x9679('0x17')][_0x9679('0x19')]||null:null,'attributes':_0x285098[_0x9679('0x17')]?_0x285098['options']['attributes']||null:null,'limit':_0x285098[_0x9679('0x17')]?_0x285098[_0x9679('0x17')]['limit']||null:null})[_0x9679('0xa')](function(_0x345c99){logger[_0x9679('0xb')](_0x9679('0x14'),_0x285098);logger['debug'](_0x9679('0x14'),_0x285098,JSON[_0x9679('0x1a')](_0x345c99));_0x371b46(_0x345c99);})['catch'](function(_0x2b9a0e){logger['error'](_0x9679('0x14'),_0x2b9a0e['message'],_0x285098);_0x1bbdb1(_0x462236[_0x9679('0xf')](0x1f4,_0x2b9a0e[_0x9679('0x10')]));});});};
\ No newline at end of file
+var _0x42d5=['update','body','raw','options','where','attributes','limit','UpdateMailApplication','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','MailApplication,\x20%s,\x20%s','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','MailApplication'];(function(_0x5c8215,_0x4af75b){var _0x57f150=function(_0x10c48b){while(--_0x10c48b){_0x5c8215['push'](_0x5c8215['shift']());}};_0x57f150(++_0x4af75b);}(_0x42d5,0xc9));var _0x542d=function(_0x339bd0,_0x318812){_0x339bd0=_0x339bd0-0x0;var _0x258898=_0x42d5[_0x339bd0];return _0x258898;};'use strict';var _=require(_0x542d('0x0'));var util=require(_0x542d('0x1'));var moment=require(_0x542d('0x2'));var BPromise=require(_0x542d('0x3'));var rs=require(_0x542d('0x4'));var fs=require('fs');var Redis=require(_0x542d('0x5'));var db=require(_0x542d('0x6'))['db'];var utils=require(_0x542d('0x7'));var logger=require(_0x542d('0x8'))(_0x542d('0x9'));var config=require(_0x542d('0xa'));var jayson=require(_0x542d('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x22d24f,_0x3b99af,_0x21ec94){return new BPromise(function(_0x49a8a4,_0x37bc55){return client['request'](_0x22d24f,_0x21ec94)[_0x542d('0xc')](function(_0x324067){logger['info'](_0x542d('0xd'),_0x3b99af,_0x542d('0xe'));logger[_0x542d('0xf')](_0x542d('0x10'),_0x3b99af,_0x542d('0xe'),JSON['stringify'](_0x324067));if(_0x324067['error']){if(_0x324067[_0x542d('0x11')][_0x542d('0x12')]===0x1f4){logger[_0x542d('0x11')]('MailApplication,\x20%s,\x20%s',_0x3b99af,_0x324067['error']['message']);return _0x37bc55(_0x324067[_0x542d('0x11')][_0x542d('0x13')]);}logger[_0x542d('0x11')](_0x542d('0xd'),_0x3b99af,_0x324067[_0x542d('0x11')][_0x542d('0x13')]);return _0x49a8a4(_0x324067[_0x542d('0x11')]['message']);}else{logger[_0x542d('0x14')](_0x542d('0xd'),_0x3b99af,'request\x20sent');_0x49a8a4(_0x324067['result']['message']);}})[_0x542d('0x15')](function(_0x47e0ca){logger[_0x542d('0x11')]('MailApplication,\x20%s,\x20%s',_0x3b99af,_0x47e0ca);_0x37bc55(_0x47e0ca);});});}exports['UpdateMailApplication']=function(_0x371a66){var _0x353cb6=this;return new Promise(function(_0x48b34f,_0x65796){return db[_0x542d('0x16')][_0x542d('0x17')](_0x371a66[_0x542d('0x18')],{'raw':_0x371a66['options']?_0x371a66['options'][_0x542d('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x371a66[_0x542d('0x1a')]?_0x371a66[_0x542d('0x1a')][_0x542d('0x1b')]||null:null,'attributes':_0x371a66[_0x542d('0x1a')]?_0x371a66[_0x542d('0x1a')][_0x542d('0x1c')]||null:null,'limit':_0x371a66['options']?_0x371a66['options'][_0x542d('0x1d')]||null:null})['then'](function(_0xf212d){logger['info'](_0x542d('0x1e'),_0x371a66);logger[_0x542d('0xf')](_0x542d('0x1e'),_0x371a66,JSON[_0x542d('0x1f')](_0xf212d));_0x48b34f(_0xf212d);})[_0x542d('0x15')](function(_0x51080b){logger['error'](_0x542d('0x1e'),_0x51080b[_0x542d('0x13')],_0x371a66);_0x65796(_0x353cb6['error'](0x1f4,_0x51080b[_0x542d('0x13')]));});});};
\ No newline at end of file
index 929a7c8..95aa3ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6648=['download','post','create','addMessage','/:id/tags','tracked','mail','mailinteraction:addtags','addTags','put','mailinteraction:update','update','delete','mailinteraction:destroy','destroy','removeTags','exports','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/describe','describe','/:id','/:id/messages'];(function(_0x45357e,_0x5cb790){var _0x580576=function(_0x3e4267){while(--_0x3e4267){_0x45357e['push'](_0x45357e['shift']());}};_0x580576(++_0x5cb790);}(_0x6648,0x13a));var _0x8664=function(_0x27d94f,_0x18ae26){_0x27d94f=_0x27d94f-0x0;var _0x3a0f7b=_0x6648[_0x27d94f];return _0x3a0f7b;};'use strict';var express=require(_0x8664('0x0'));var router=express[_0x8664('0x1')]();var auth=require(_0x8664('0x2'));var interaction=require(_0x8664('0x3'));var controller=require('./mailInteraction.controller');router[_0x8664('0x4')]('/',auth[_0x8664('0x5')](),controller['index']);router[_0x8664('0x4')](_0x8664('0x6'),auth[_0x8664('0x5')](),controller[_0x8664('0x7')]);router['get'](_0x8664('0x8'),auth[_0x8664('0x5')](),controller['show']);router[_0x8664('0x4')](_0x8664('0x9'),auth[_0x8664('0x5')](),controller['getMessages']);router[_0x8664('0x4')]('/:id/download',auth[_0x8664('0x5')](),controller[_0x8664('0xa')]);router[_0x8664('0xb')]('/',auth[_0x8664('0x5')](),controller[_0x8664('0xc')]);router['post'](_0x8664('0x9'),auth[_0x8664('0x5')](),controller[_0x8664('0xd')]);router['post'](_0x8664('0xe'),auth[_0x8664('0x5')](),interaction[_0x8664('0xf')](_0x8664('0x10'),_0x8664('0x11')),controller[_0x8664('0x12')]);router[_0x8664('0x13')]('/:id',auth[_0x8664('0x5')](),interaction[_0x8664('0xf')](_0x8664('0x10'),_0x8664('0x14')),controller[_0x8664('0x15')]);router[_0x8664('0x16')]('/:id',auth['isAuthenticated'](),interaction[_0x8664('0xf')](_0x8664('0x10'),_0x8664('0x17')),controller[_0x8664('0x18')]);router[_0x8664('0x16')](_0x8664('0xe'),auth[_0x8664('0x5')](),controller[_0x8664('0x19')]);module[_0x8664('0x1a')]=router;
\ No newline at end of file
+var _0x825a=['/:id','show','/:id/messages','getMessages','/:id/download','download','post','addMessage','/:id/tags','tracked','mail','mailinteraction:addtags','addTags','put','mailinteraction:update','update','delete','mailinteraction:destroy','destroy','removeTags','exports','express','Router','../../components/auth/service','./mailInteraction.controller','isAuthenticated','index','get','/describe','describe'];(function(_0x1f32cb,_0x10774e){var _0xff2722=function(_0x370c71){while(--_0x370c71){_0x1f32cb['push'](_0x1f32cb['shift']());}};_0xff2722(++_0x10774e);}(_0x825a,0x6f));var _0xa825=function(_0x3de4f8,_0x336c7d){_0x3de4f8=_0x3de4f8-0x0;var _0x3d81fc=_0x825a[_0x3de4f8];return _0x3d81fc;};'use strict';var express=require(_0xa825('0x0'));var router=express[_0xa825('0x1')]();var auth=require(_0xa825('0x2'));var interaction=require('../../components/interaction/service');var controller=require(_0xa825('0x3'));router['get']('/',auth[_0xa825('0x4')](),controller[_0xa825('0x5')]);router[_0xa825('0x6')](_0xa825('0x7'),auth['isAuthenticated'](),controller[_0xa825('0x8')]);router['get'](_0xa825('0x9'),auth['isAuthenticated'](),controller[_0xa825('0xa')]);router['get'](_0xa825('0xb'),auth[_0xa825('0x4')](),controller[_0xa825('0xc')]);router[_0xa825('0x6')](_0xa825('0xd'),auth['isAuthenticated'](),controller[_0xa825('0xe')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xa825('0xf')](_0xa825('0xb'),auth[_0xa825('0x4')](),controller[_0xa825('0x10')]);router[_0xa825('0xf')](_0xa825('0x11'),auth[_0xa825('0x4')](),interaction[_0xa825('0x12')](_0xa825('0x13'),_0xa825('0x14')),controller[_0xa825('0x15')]);router[_0xa825('0x16')](_0xa825('0x9'),auth[_0xa825('0x4')](),interaction['tracked']('mail',_0xa825('0x17')),controller[_0xa825('0x18')]);router[_0xa825('0x19')]('/:id',auth[_0xa825('0x4')](),interaction['tracked'](_0xa825('0x13'),_0xa825('0x1a')),controller[_0xa825('0x1b')]);router[_0xa825('0x19')]('/:id/tags',auth[_0xa825('0x4')](),controller[_0xa825('0x1c')]);module[_0xa825('0x1d')]=router;
\ No newline at end of file
index 978ce95..fe5dd47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09e3=['ENUM','out','sequelize','iconv','exports','BOOLEAN','DATE','STRING','TEXT'];(function(_0x4fdc46,_0x2a3759){var _0x2c178a=function(_0x59ead9){while(--_0x59ead9){_0x4fdc46['push'](_0x4fdc46['shift']());}};_0x2c178a(++_0x2a3759);}(_0x09e3,0x134));var _0x309e=function(_0x5d693e,_0x58c947){_0x5d693e=_0x5d693e-0x0;var _0x533229=_0x09e3[_0x5d693e];return _0x533229;};'use strict';var Sequelize=require(_0x309e('0x0'));var iconv=require(_0x309e('0x1'));module[_0x309e('0x2')]={'closed':{'type':Sequelize[_0x309e('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x309e('0x4')]},'disposition':{'type':Sequelize[_0x309e('0x5')]},'secondDisposition':{'type':Sequelize[_0x309e('0x5')]},'thirdDisposition':{'type':Sequelize[_0x309e('0x5')]},'note':{'type':Sequelize[_0x309e('0x5')]},'inReplyTo':{'type':Sequelize[_0x309e('0x5')](0x1fe)},'to':{'type':Sequelize[_0x309e('0x5')]},'cc':{'type':Sequelize[_0x309e('0x6')]('long')},'subject':{'type':Sequelize[_0x309e('0x6')]()},'attach':{'type':Sequelize[_0x309e('0x3')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x309e('0x4')]},'substatus':{'type':Sequelize[_0x309e('0x5')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x309e('0x7')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x309e('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x309e('0x7')]('in',_0x309e('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x309e('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xe889=['DATE','STRING','TEXT','out','sequelize','iconv','BOOLEAN'];(function(_0x10dc69,_0x23c4f9){var _0x5c7dc0=function(_0x1f9ead){while(--_0x1f9ead){_0x10dc69['push'](_0x10dc69['shift']());}};_0x5c7dc0(++_0x23c4f9);}(_0xe889,0xd6));var _0x9e88=function(_0xfcadfe,_0x4ccf1a){_0xfcadfe=_0xfcadfe-0x0;var _0x1e0c7a=_0xe889[_0xfcadfe];return _0x1e0c7a;};'use strict';var Sequelize=require(_0x9e88('0x0'));var iconv=require(_0x9e88('0x1'));module['exports']={'closed':{'type':Sequelize[_0x9e88('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x9e88('0x3')]},'disposition':{'type':Sequelize[_0x9e88('0x4')]},'secondDisposition':{'type':Sequelize[_0x9e88('0x4')]},'thirdDisposition':{'type':Sequelize[_0x9e88('0x4')]},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize['STRING'](0x1fe)},'to':{'type':Sequelize[_0x9e88('0x4')]},'cc':{'type':Sequelize['TEXT']('long')},'subject':{'type':Sequelize[_0x9e88('0x5')]()},'attach':{'type':Sequelize[_0x9e88('0x2')],'defaultValue':![]},'read1stAt':{'type':Sequelize['DATE']},'substatus':{'type':Sequelize[_0x9e88('0x4')](0x3c)},'substatusAt':{'type':Sequelize[_0x9e88('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x9e88('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x9e88('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x9e88('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x9e88('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 978b4ef..e68b799 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b29=['server','attachments','transcript-%d-%s.zip','Attachment','Attachments','Messages','bcc','subject','get','mkdirSync','each','format','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','existsSync','readFileSync','writeFileSync','message%d.eml','unlinkSync','sendStatus','eml-format','rimraf','zip-dir','bluebird','util','path','lodash','squel','juice','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./mailInteraction.socket','register','status','end','json','offset','limit','undefined','count','set','Content-Range','destroy','then','error','stack','name','send','map','fullname','TagIds','Tags','MailMessage','findOne','out','plainBody','lastMsgText','trimStart','catch','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','select','field','color','from','tools_tags','u.id','u.fullname','ui.MailInteractionId','left_join','users','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','mail_accounts','a.id\x20=\x20i.MailAccountId','me.MailInteractionId\x20=\x20i.id','mail_interaction_has_tags','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','ContactId','text','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','start','some','compact','isEmpty','MailAccountId','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','tag','filter','replace','i.id\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','getFullTextValue','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','t.id\x20IN\x20?','resolve','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','agent','toString','keyBy','merge','MailInteraction','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.id','i.createdAt','i.updatedAt','i.attach','i.lastMsgAt','i.lastMsgDirection','i.disposition','i.thirdDisposition','i.substatus','i.MailAccountId','i.UserId','c.firstName','c.lastName','Contact.lastName','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','sequelize','ui.MailInteractionId\x20IN\x20?','groupBy','Setting','enableEmailPreview','push','all','rows','show','keys','rawAttributes','include','options','create','body','update','params','describe','addMessage','ids','omit','getMessages','hasOwnProperty','pick','MailInteractionId','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','inlineCss','addTags','setTags','spread','emit','removeTags','download','unix','join','root','tmp'];(function(_0x41a60b,_0xc398d){var _0x10c95a=function(_0x2b8bd9){while(--_0x2b8bd9){_0x41a60b['push'](_0x41a60b['shift']());}};_0x10c95a(++_0xc398d);}(_0x1b29,0x1ea));var _0x91b2=function(_0x296427,_0x120868){_0x296427=_0x296427-0x0;var _0x12ef4d=_0x1b29[_0x296427];return _0x12ef4d;};'use strict';var emlformat=require(_0x91b2('0x0'));var rimraf=require(_0x91b2('0x1'));var zipdir=require(_0x91b2('0x2'));var moment=require('moment');var BPromise=require(_0x91b2('0x3'));var util=require(_0x91b2('0x4'));var path=require(_0x91b2('0x5'));var fs=require('fs');var _=require(_0x91b2('0x6'));var squel=require(_0x91b2('0x7'));var juice=require(_0x91b2('0x8'));var Redis=require(_0x91b2('0x9'));var qs=require(_0x91b2('0xa'));var as=require(_0x91b2('0xb'));var logger=require(_0x91b2('0xc'))(_0x91b2('0xd'));var config=require(_0x91b2('0xe'));var db=require(_0x91b2('0xf'))['db'];var htmlEntities=require('html-entities');config[_0x91b2('0x10')]=_[_0x91b2('0x11')](config[_0x91b2('0x10')],{'host':_0x91b2('0x12'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x91b2('0x10')]));require(_0x91b2('0x13'))[_0x91b2('0x14')](socket);function respondWithStatusCode(_0x55d4de,_0x1cd323){_0x1cd323=_0x1cd323||0xcc;return function(_0x5b9ad){if(_0x5b9ad){return _0x55d4de['sendStatus'](_0x1cd323);}return _0x55d4de[_0x91b2('0x15')](_0x1cd323)[_0x91b2('0x16')]();};}function respondWithResult(_0x1cae17,_0x38d365){_0x38d365=_0x38d365||0xc8;return function(_0x10d026){if(_0x10d026){return _0x1cae17[_0x91b2('0x15')](_0x38d365)[_0x91b2('0x17')](_0x10d026);}};}function respondWithFilteredResult(_0x341e9c,_0x896026){return function(_0x330532){if(_0x330532){var _0x51e717=typeof _0x896026[_0x91b2('0x18')]==='undefined'&&typeof _0x896026[_0x91b2('0x19')]===_0x91b2('0x1a');var _0x4a46ce=_0x330532[_0x91b2('0x1b')];var _0x579684=_0x51e717?0x0:_0x896026[_0x91b2('0x18')];var _0x591975=_0x51e717?_0x330532[_0x91b2('0x1b')]:_0x896026[_0x91b2('0x18')]+_0x896026[_0x91b2('0x19')];var _0x108def;if(_0x591975>=_0x4a46ce){_0x591975=_0x4a46ce;_0x108def=0xc8;}else{_0x108def=0xce;}_0x341e9c[_0x91b2('0x15')](_0x108def);return _0x341e9c[_0x91b2('0x1c')](_0x91b2('0x1d'),_0x579684+'-'+_0x591975+'/'+_0x4a46ce)['json'](_0x330532);}return null;};}function saveUpdates(_0x572869){return function(_0x5799bd){if(_0x5799bd){return _0x5799bd['update'](_0x572869)['then'](function(_0x206c9d){return _0x206c9d;});}return null;};}function removeEntity(_0x402d33){return function(_0x1579e7){if(_0x1579e7){return _0x1579e7[_0x91b2('0x1e')]()[_0x91b2('0x1f')](function(){_0x402d33['status'](0xcc)[_0x91b2('0x16')]();});}};}function handleEntityNotFound(_0x2cb82a){return function(_0x4d3d06){if(!_0x4d3d06){_0x2cb82a['sendStatus'](0x194);}return _0x4d3d06;};}function handleError(_0x217bb6,_0x2f6aa6){_0x2f6aa6=_0x2f6aa6||0x1f4;return function(_0x1f88ec){logger[_0x91b2('0x20')](_0x1f88ec[_0x91b2('0x21')]);if(_0x1f88ec[_0x91b2('0x22')]){delete _0x1f88ec[_0x91b2('0x22')];}_0x217bb6['status'](_0x2f6aa6)[_0x91b2('0x23')](_0x1f88ec);};}function getInteractionUsers(_0xbd3bbe,_0x2e08ea){return new BPromise(function(_0x1808d3,_0x482aa7){try{if(_0x2e08ea[_0xbd3bbe['id']]){_0xbd3bbe['Users']=_[_0x91b2('0x24')](_0x2e08ea[_0xbd3bbe['id']],function(_0x3fb095){return{'id':_0x3fb095['id'],'fullname':_0x3fb095[_0x91b2('0x25')]};});}}catch(_0x1e734b){_0x482aa7(_0x1e734b);}_0x1808d3(_0xbd3bbe);});}function getInteractionTags(_0x47d4e3,_0x2f3fd1){return new BPromise(function(_0x2ae972,_0x3f3414){try{if(_0x47d4e3[_0x91b2('0x26')]){_0x47d4e3[_0x91b2('0x27')]=[];_0x47d4e3[_0x91b2('0x26')]['split'](',')['forEach'](function(_0x285652){_0x47d4e3[_0x91b2('0x27')]['push'](_0x2f3fd1[_0x285652]);});}delete _0x47d4e3['TagIds'];}catch(_0x54ab58){_0x3f3414(_0x54ab58);}_0x2ae972(_0x47d4e3);});}function getLastMessageText(_0x3b332f){return new BPromise(function(_0x3c1913,_0x3eba2f){return db[_0x91b2('0x28')][_0x91b2('0x29')]({'where':{'$and':[{'MailInteractionId':_0x3b332f['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x91b2('0x2a')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x91b2('0x2b')],'order':'-id','raw':!![]})[_0x91b2('0x1f')](function(_0x40b86e){if(_0x40b86e&&_0x40b86e['plainBody']){_0x3b332f[_0x91b2('0x2c')]=_[_0x91b2('0x2d')](_0x40b86e[_0x91b2('0x2b')]);}_0x3c1913(_0x3b332f);})['catch'](function(_0x4d570a){_0x3eba2f(_0x4d570a);});});}function updateMailInteraction(_0xd42ec6,_0x53808f,_0x5e845e,_0x3f6efe){return new BPromise(function(_0x2c5805,_0x14d677){return getInteractionUsers(_0xd42ec6,_0x5e845e)[_0x91b2('0x1f')](function(_0x392e84){return getInteractionTags(_0x392e84,_0x53808f);})[_0x91b2('0x1f')](function(_0xf4eb0b){if(_0x3f6efe){_0x2c5805(getLastMessageText(_0xf4eb0b));}else{_0x2c5805(_0xf4eb0b);}})[_0x91b2('0x2e')](function(_0x41105b){_0x14d677(_0x41105b);});});}exports['index']=function(_0x1a5376,_0x189089){var _0x5e4982={},_0x2a1b9d={},_0x4c8c77={'count':0x0,'rows':[]};var _0x1f8255=_[_0x91b2('0x24')](db['MailInteraction']['rawAttributes'],function(_0x10f470){return{'name':_0x10f470['fieldName'],'type':_0x10f470[_0x91b2('0x2f')][_0x91b2('0x30')]};});_0x2a1b9d[_0x91b2('0x31')]=_[_0x91b2('0x24')](_0x1f8255,'name');_0x2a1b9d[_0x91b2('0x32')]=_['keys'](_0x1a5376[_0x91b2('0x32')]);_0x2a1b9d[_0x91b2('0x33')]=_[_0x91b2('0x34')](_0x2a1b9d[_0x91b2('0x31')],_0x2a1b9d[_0x91b2('0x32')]);_0x5e4982[_0x91b2('0x35')]=_['intersection'](_0x2a1b9d['model'],qs[_0x91b2('0x36')](_0x1a5376['query'][_0x91b2('0x36')]));_0x5e4982[_0x91b2('0x35')]=_0x5e4982['attributes'][_0x91b2('0x37')]?_0x5e4982[_0x91b2('0x35')]:_0x2a1b9d[_0x91b2('0x31')];if(!_0x1a5376['query']['hasOwnProperty'](_0x91b2('0x38'))){_0x5e4982[_0x91b2('0x19')]=qs[_0x91b2('0x19')](_0x1a5376[_0x91b2('0x32')]['limit']);_0x5e4982[_0x91b2('0x18')]=qs['offset'](_0x1a5376[_0x91b2('0x32')][_0x91b2('0x18')]);}_0x5e4982[_0x91b2('0x39')]=qs['sort'](_0x1a5376[_0x91b2('0x32')][_0x91b2('0x3a')]);_0x5e4982[_0x91b2('0x3b')]=qs[_0x91b2('0x33')](_['pick'](_0x1a5376[_0x91b2('0x32')],_0x2a1b9d[_0x91b2('0x33')]),_0x1f8255);var _0x56e56f=[];var _0x2e4158=squel[_0x91b2('0x3c')]()['field']('id')['field'](_0x91b2('0x22'))[_0x91b2('0x3d')](_0x91b2('0x3e'))[_0x91b2('0x3f')](_0x91b2('0x40'));var _0x36534a=squel[_0x91b2('0x3c')]()[_0x91b2('0x3d')](_0x91b2('0x41'))[_0x91b2('0x3d')](_0x91b2('0x42'))[_0x91b2('0x3d')](_0x91b2('0x43'))[_0x91b2('0x3f')]('user_has_mail_interactions','ui')[_0x91b2('0x44')](_0x91b2('0x45'),'u','u.id\x20=\x20ui.UserId');var _0x485bec=squel[_0x91b2('0x3c')]()[_0x91b2('0x3f')]('mail_interactions','i')['left_join']('cm_contacts','c',_0x91b2('0x46'))[_0x91b2('0x44')](_0x91b2('0x45'),'o',_0x91b2('0x47'))[_0x91b2('0x44')](_0x91b2('0x48'),'a',_0x91b2('0x49'))[_0x91b2('0x44')]('mail_messages','me',_0x91b2('0x4a'))['left_join'](_0x91b2('0x4b'),'it',_0x91b2('0x4c'))['left_join'](_0x91b2('0x40'),'t',_0x91b2('0x4d'));var _0x58a9cf=squel[_0x91b2('0x4e')]();var _0x3563a4=[];var _0x5c974c=squel['expr']();var _0x1a8bb8;if(_0x1a5376[_0x91b2('0x32')][_0x91b2('0x4f')]){_0x1a8bb8=as[_0x91b2('0x50')](_0x1a5376[_0x91b2('0x32')][_0x91b2('0x4f')]);var _0x116c64=_0x1a8bb8[_0x91b2('0x51')];for(var _0x29dca7=0x0;_0x29dca7<_0x1a8bb8[_0x91b2('0x52')]['length'];_0x29dca7++){var _0x18f54d=_0x1a8bb8['conditions'][_0x29dca7];var _0x2ad068='i';var _0x252fe6=_[_0x91b2('0x53')](_0x1f8255,['name',_0x18f54d[_0x91b2('0x3d')]]);if(!_0x252fe6){switch(_0x18f54d[_0x91b2('0x3d')]){case'unreadMessages':if(_0x18f54d[_0x91b2('0x54')]==0x1){_0x485bec[_0x91b2('0x55')]('`'+_0x18f54d[_0x91b2('0x3d')]+_0x91b2('0x56'));}else{_0x485bec['having']('`'+_0x18f54d[_0x91b2('0x3d')]+_0x91b2('0x57'));}break;case _0x91b2('0x58'):if(_0x18f54d[_0x91b2('0x59')]===_0x91b2('0x5a')){if(_0x18f54d[_0x91b2('0x54')][_0x91b2('0x5b')]('\x20')[_0x91b2('0x37')]>0x1){_0x58a9cf[_0x116c64](_0x91b2('0x5c'),qs['getFullTextValue'](_0x18f54d[_0x91b2('0x54')]),null);}else{var _0x3f1967='%'+_0x18f54d['value']+'%';_0x58a9cf[_0x116c64]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x3f1967,_0x3f1967,_0x3f1967);}}else{_0x252fe6=_['find'](_0x1f8255,[_0x91b2('0x22'),_0x91b2('0x5d')]);_0x18f54d['field']='ContactId';_0x54c202=as['buildExpression'](_0x2ad068,_0x252fe6[_0x91b2('0x2f')],_0x18f54d);_0x58a9cf[_0x116c64](_0x54c202[_0x91b2('0x5e')],_0x54c202['value']['start'],_0x54c202['value']['end']);}break;case _0x91b2('0x5f'):var _0x3d6a9c=_0x18f54d[_0x91b2('0x54')]['split'](',')[_0x91b2('0x24')](function(_0x297ca2){return Number(_0x297ca2);});_0x3d6a9c[_0x91b2('0x60')](function(_0x4b699b){_0x5c974c['or'](_0x91b2('0x61'),'%,'+_0x4b699b+',%');});_0x3563a4=_['union'](_0x3563a4,_0x3d6a9c);break;case _0x91b2('0x62'):if(_0x18f54d['operator']===_0x91b2('0x5a')){_0x58a9cf[_0x116c64](_0x91b2('0x63'),'%'+_0x18f54d[_0x91b2('0x54')]+'%',null);}else{_0x252fe6=_[_0x91b2('0x53')](_0x1f8255,[_0x91b2('0x22'),'UserId']);_0x18f54d[_0x91b2('0x3d')]=_0x91b2('0x64');_0x54c202=as[_0x91b2('0x65')](_0x2ad068,_0x252fe6[_0x91b2('0x2f')],_0x18f54d);_0x58a9cf[_0x116c64](_0x54c202[_0x91b2('0x5e')],_0x54c202[_0x91b2('0x54')][_0x91b2('0x66')],_0x54c202[_0x91b2('0x54')][_0x91b2('0x16')]);}break;case _0x91b2('0x2b'):_0x54c202=as['buildExpression']('me',null,_0x18f54d);_0x58a9cf[_0x116c64](_0x54c202['text'],_0x54c202[_0x91b2('0x54')][_0x91b2('0x66')],_0x54c202[_0x91b2('0x54')][_0x91b2('0x16')]);break;}}else{var _0x54c202=as[_0x91b2('0x65')](_0x2ad068,_0x252fe6[_0x91b2('0x2f')],_0x18f54d);_0x58a9cf[_0x116c64](_0x54c202[_0x91b2('0x5e')],_0x54c202[_0x91b2('0x54')][_0x91b2('0x66')],_0x54c202[_0x91b2('0x54')][_0x91b2('0x16')]);}}}else{var _0x2bf461=_(_0x1a5376[_0x91b2('0x32')])['keys']()[_0x91b2('0x24')](function(_0x3e759e){return _[_0x91b2('0x67')](_0x1f8255,[_0x91b2('0x22'),_0x3e759e])?_0x3e759e:undefined;})[_0x91b2('0x68')]()[_0x91b2('0x54')]();if(!_[_0x91b2('0x69')](_0x2bf461)){_0x2bf461[_0x91b2('0x60')](function(_0x50f2b6){if(_0x50f2b6===_0x91b2('0x6a')){_0x485bec[_0x91b2('0x3b')](_0x91b2('0x6b'),[][_0x91b2('0x6c')](_0x1a5376[_0x91b2('0x32')][_0x50f2b6]));}else if(_0x50f2b6===_0x91b2('0x6d')){var _0x203dce=JSON[_0x91b2('0x6e')](_0x1a5376['query'][_0x50f2b6])[_0x91b2('0x6f')];var _0x3728ee=JSON['parse'](_0x1a5376[_0x91b2('0x32')][_0x50f2b6])[_0x91b2('0x70')];_0x485bec[_0x91b2('0x3b')](_0x91b2('0x71'),_0x203dce,_0x3728ee);}else{if(_0x1a5376[_0x91b2('0x32')][_0x50f2b6]===_0x91b2('0x72')){_0x485bec['where']('i.'+_0x50f2b6+_0x91b2('0x73'));}else{_0x485bec[_0x91b2('0x3b')]('i.'+_0x50f2b6+_0x91b2('0x74'),_0x1a5376[_0x91b2('0x32')][_0x50f2b6]);}}});}if(_0x1a5376[_0x91b2('0x32')][_0x91b2('0x75')]){if(_0x1a5376[_0x91b2('0x32')][_0x91b2('0x75')]==0x1){_0x485bec[_0x91b2('0x55')]('`unreadMessages`\x20=\x200');}else{_0x485bec[_0x91b2('0x55')]('`unreadMessages`\x20>\x200');}}if(_0x1a5376['query']['tag']){_0x3563a4=_['isArray'](_0x1a5376[_0x91b2('0x32')][_0x91b2('0x76')])?_0x1a5376['query'][_0x91b2('0x76')]:new Array(_0x1a5376[_0x91b2('0x32')][_0x91b2('0x76')]);_0x3563a4[_0x91b2('0x60')](function(_0x4f9ca8){_0x5c974c['or'](_0x91b2('0x61'),'%,'+_0x4f9ca8+',%');});}if(_0x1a5376[_0x91b2('0x32')][_0x91b2('0x77')]){var _0x5cf48c=_0x1a5376[_0x91b2('0x32')][_0x91b2('0x77')][_0x91b2('0x78')]('\x5c','\x5c\x5c')[_0x91b2('0x78')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x5cf48c)){_0x58a9cf['or'](_0x91b2('0x79'),_0x5cf48c+'%');}else if(qs[_0x91b2('0x7a')](_0x5cf48c)){_0x58a9cf['or'](_0x91b2('0x7b'),_0x5cf48c+'%');}else{_0x58a9cf['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x91b2('0x7c')](_0x5cf48c))['or'](_0x91b2('0x7d'),qs[_0x91b2('0x7c')](_0x5cf48c));}}}_0x485bec[_0x91b2('0x3b')](_0x58a9cf);_0x485bec[_0x91b2('0x7e')]('i.id');var _0x8c1233={'type':db['Sequelize'][_0x91b2('0x7f')][_0x91b2('0x80')],'raw':!![]};var _0x2b0588=_0x485bec[_0x91b2('0x81')]();_0x2b0588[_0x91b2('0x3d')]('i.id');_0x2b0588['field'](_0x91b2('0x82'),_0x91b2('0x83'));if(_0x5e4982['order']){_0x5e4982['order']['forEach'](function(_0x277c03){var _0x269246=_0x277c03[0x0]===_0x91b2('0x84')?_0x277c03[0x0]:'i.'+_0x277c03[0x0];_0x485bec[_0x91b2('0x39')](_0x269246,_0x277c03[0x1]===_0x91b2('0x85')?![]:!![]);});}if(!_[_0x91b2('0x69')](_0x3563a4)){_0x485bec[_0x91b2('0x55')](_0x5c974c);_0x2b0588[_0x91b2('0x3b')](_0x91b2('0x86'),_0x3563a4);}BPromise[_0x91b2('0x87')]()['then'](function(){if(!_0x1a8bb8){if(_0x1a5376['query'][_0x91b2('0x6a')])return;_0x2b0588['where'](_0x91b2('0x88'));_0x485bec[_0x91b2('0x3b')]('i.MailAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x1a5376[_0x91b2('0x89')][_0x91b2('0x8a')]!=='agent')return;return _0x1a5376[_0x91b2('0x89')]['getMailAccounts']({'attributes':['id'],'raw':!![]})[_0x91b2('0x1f')](function(_0x5000c0){if(_[_0x91b2('0x69')](_0x5000c0)){_0x2b0588[_0x91b2('0x3b')]('i.MailAccountId\x20IS\x20NULL');_0x485bec[_0x91b2('0x3b')]('i.MailAccountId\x20IS\x20NULL');}else{_0x2b0588[_0x91b2('0x3b')]('i.MailAccountId\x20IN\x20?',_['map'](_0x5000c0,'id'));_0x485bec[_0x91b2('0x3b')](_0x91b2('0x6b'),_[_0x91b2('0x24')](_0x5000c0,'id'));}});})[_0x91b2('0x1f')](function(){if(_0x1a5376['user'][_0x91b2('0x8a')]===_0x91b2('0x8b')&&!_0x1a8bb8&&!_0x1a5376[_0x91b2('0x32')][_0x91b2('0x6a')])return[];return db['sequelize']['query'](_0x2b0588[_0x91b2('0x8c')](),_0x8c1233);})['then'](function(_0x52abe7){_0x4c8c77[_0x91b2('0x1b')]=_0x52abe7[_0x91b2('0x37')];if(_0x4c8c77[_0x91b2('0x1b')]===0x0)return[];return db['sequelize']['query'](_0x2e4158[_0x91b2('0x8c')](),_0x8c1233)[_0x91b2('0x1f')](function(_0x141ac9){_0x56e56f=_[_0x91b2('0x8d')](_0x141ac9,'id');_0x8c1233=_[_0x91b2('0x8e')](_0x8c1233,{'model':db[_0x91b2('0x8f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1a5376[_0x91b2('0x32')][_0x91b2('0x36')]){_0x5e4982[_0x91b2('0x35')][_0x91b2('0x60')](function(_0x565d13){_0x485bec[_0x91b2('0x3d')]('i.'+_0x565d13);});}else{_0x485bec[_0x91b2('0x3d')](_0x91b2('0x82'),_0x91b2('0x83'));_0x485bec[_0x91b2('0x3d')]('a.key',_0x91b2('0x90'));_0x485bec[_0x91b2('0x3d')]('a.mandatoryDisposition',_0x91b2('0x91'));_0x485bec[_0x91b2('0x3d')](_0x91b2('0x92'),_0x91b2('0x84'));_0x485bec[_0x91b2('0x3d')](_0x91b2('0x93'));_0x485bec[_0x91b2('0x3d')](_0x91b2('0x94'));_0x485bec[_0x91b2('0x3d')](_0x91b2('0x95'));_0x485bec[_0x91b2('0x3d')]('i.closed');_0x485bec[_0x91b2('0x3d')]('i.closedAt');_0x485bec['field'](_0x91b2('0x96'));_0x485bec[_0x91b2('0x3d')](_0x91b2('0x97'));_0x485bec[_0x91b2('0x3d')](_0x91b2('0x98'));_0x485bec[_0x91b2('0x3d')]('i.subject');_0x485bec[_0x91b2('0x3d')](_0x91b2('0x99'));_0x485bec[_0x91b2('0x3d')]('i.secondDisposition');_0x485bec[_0x91b2('0x3d')](_0x91b2('0x9a'));_0x485bec['field'](_0x91b2('0x9b'));_0x485bec[_0x91b2('0x3d')]('i.to');_0x485bec['field']('i.ContactId');_0x485bec[_0x91b2('0x3d')](_0x91b2('0x9c'));_0x485bec[_0x91b2('0x3d')](_0x91b2('0x9d'));_0x485bec['field'](_0x91b2('0x9e'),'Contact.firstName');_0x485bec[_0x91b2('0x3d')](_0x91b2('0x9f'),_0x91b2('0xa0'));_0x485bec[_0x91b2('0x3d')]('c.email',_0x91b2('0xa1'));_0x485bec[_0x91b2('0x3d')](_0x91b2('0xa2'),_0x91b2('0xa3'));_0x485bec[_0x91b2('0x3d')](_0x91b2('0xa4'),_0x91b2('0xa5'));_0x485bec[_0x91b2('0x3d')](_0x91b2('0xa6'),_0x91b2('0xa7'));_0x485bec[_0x91b2('0x3d')](_0x91b2('0xa8'),_0x91b2('0xa9'));_0x485bec[_0x91b2('0x3d')](_0x91b2('0xaa'),_0x91b2('0xab'));_0x485bec['field'](_0x91b2('0xac'),'TagIds');}if(_0x5e4982[_0x91b2('0x19')])_0x485bec[_0x91b2('0x19')](_0x5e4982[_0x91b2('0x19')]);if(_0x5e4982[_0x91b2('0x18')])_0x485bec[_0x91b2('0x18')](_0x5e4982[_0x91b2('0x18')]);return db[_0x91b2('0xad')][_0x91b2('0x32')](_0x485bec[_0x91b2('0x8c')](),_0x8c1233);})[_0x91b2('0x1f')](function(_0x820685){if(_0x820685[_0x91b2('0x37')]>0x0)_0x36534a[_0x91b2('0x3b')](_0x91b2('0xae'),_['map'](_0x820685,'id'));return db[_0x91b2('0xad')]['query'](_0x36534a[_0x91b2('0x8c')](),_0x8c1233)[_0x91b2('0x1f')](function(_0x158283){var _0xb99a23=_[_0x91b2('0xaf')](_0x158283,'MailInteractionId');var _0x15a0c8=[];return db[_0x91b2('0xb0')][_0x91b2('0x29')]({'attributes':[_0x91b2('0xb1')],'raw':!![]})['then'](function(_0x447f13){var _0x3668fd=_0x447f13[_0x91b2('0xb1')];_0x820685['forEach'](function(_0x52e13a){_0x15a0c8[_0x91b2('0xb2')](updateMailInteraction(_0x52e13a,_0x56e56f,_0xb99a23,_0x3668fd));});return BPromise[_0x91b2('0xb3')](_0x15a0c8);});});});})[_0x91b2('0x1f')](function(_0x4fe6c8){_0x4c8c77[_0x91b2('0xb4')]=_0x4fe6c8;return _0x4c8c77;})[_0x91b2('0x1f')](respondWithFilteredResult(_0x189089,_0x5e4982))['catch'](handleError(_0x189089,null));};exports[_0x91b2('0xb5')]=function(_0x641a40,_0x1e3d8c){var _0xf69c0f={'raw':![],'where':{'id':_0x641a40['params']['id']}},_0x229098={};_0x229098[_0x91b2('0x31')]=_[_0x91b2('0xb6')](db[_0x91b2('0x8f')][_0x91b2('0xb7')]);_0x229098[_0x91b2('0x32')]=_[_0x91b2('0xb6')](_0x641a40[_0x91b2('0x32')]);_0x229098[_0x91b2('0x33')]=_[_0x91b2('0x34')](_0x229098[_0x91b2('0x31')],_0x229098[_0x91b2('0x32')]);_0xf69c0f[_0x91b2('0x35')]=_[_0x91b2('0x34')](_0x229098[_0x91b2('0x31')],qs['fields'](_0x641a40[_0x91b2('0x32')]['fields']));_0xf69c0f[_0x91b2('0x35')]=_0xf69c0f[_0x91b2('0x35')][_0x91b2('0x37')]?_0xf69c0f[_0x91b2('0x35')]:_0x229098[_0x91b2('0x31')];if(_0x641a40[_0x91b2('0x32')]['includeAll']){_0xf69c0f[_0x91b2('0xb8')]=[{'all':!![]}];}_0xf69c0f=_[_0x91b2('0x8e')]({},_0xf69c0f,_0x641a40[_0x91b2('0xb9')]);return db['MailInteraction']['find'](_0xf69c0f)['then'](handleEntityNotFound(_0x1e3d8c,null))[_0x91b2('0x1f')](respondWithResult(_0x1e3d8c,null))[_0x91b2('0x2e')](handleError(_0x1e3d8c,null));};exports['create']=function(_0x1decc0,_0x25bfe3){return db[_0x91b2('0x8f')][_0x91b2('0xba')](_0x1decc0[_0x91b2('0xbb')],{})['then'](respondWithResult(_0x25bfe3,0xc9))[_0x91b2('0x2e')](handleError(_0x25bfe3,null));};exports[_0x91b2('0xbc')]=function(_0x26d17a,_0x73aa1c){if(_0x26d17a[_0x91b2('0xbb')]['id']){delete _0x26d17a[_0x91b2('0xbb')]['id'];}return db[_0x91b2('0x8f')][_0x91b2('0x53')]({'where':{'id':_0x26d17a['params']['id']}})[_0x91b2('0x1f')](handleEntityNotFound(_0x73aa1c,null))[_0x91b2('0x1f')](saveUpdates(_0x26d17a[_0x91b2('0xbb')],null))[_0x91b2('0x1f')](respondWithResult(_0x73aa1c,null))[_0x91b2('0x2e')](handleError(_0x73aa1c,null));};exports[_0x91b2('0x1e')]=function(_0x487b9b,_0x5e12ed){return db[_0x91b2('0x8f')][_0x91b2('0x53')]({'where':{'id':_0x487b9b[_0x91b2('0xbd')]['id']}})[_0x91b2('0x1f')](handleEntityNotFound(_0x5e12ed,null))[_0x91b2('0x1f')](removeEntity(_0x5e12ed,null))[_0x91b2('0x2e')](handleError(_0x5e12ed,null));};exports['describe']=function(_0x5cc52c,_0x4f6c75){return db[_0x91b2('0x8f')][_0x91b2('0xbe')]()[_0x91b2('0x1f')](respondWithResult(_0x4f6c75,null))[_0x91b2('0x2e')](handleError(_0x4f6c75,null));};exports[_0x91b2('0xbf')]=function(_0x159021,_0x313ed0){return db[_0x91b2('0x28')][_0x91b2('0x53')]({'where':{'id':_0x159021[_0x91b2('0xbd')]['id']}})[_0x91b2('0x1f')](handleEntityNotFound(_0x313ed0,null))[_0x91b2('0x1f')](function(_0x531020){if(_0x531020){return _0x531020[_0x91b2('0xbf')](_0x159021[_0x91b2('0xbb')][_0x91b2('0xc0')],_[_0x91b2('0xc1')](_0x159021[_0x91b2('0xbb')],[_0x91b2('0xc0'),'id'])||{});}})[_0x91b2('0x1f')](respondWithResult(_0x313ed0,null))['catch'](handleError(_0x313ed0,null));};exports[_0x91b2('0xc2')]=function(_0x4417af,_0xe26cb8){var _0x399c16={'raw':![],'where':{}};var _0x2059c1={};var _0x4c7716={'count':0x0,'rows':[]};return db['MailInteraction'][_0x91b2('0x29')]({'where':{'id':_0x4417af[_0x91b2('0xbd')]['id']}})[_0x91b2('0x1f')](handleEntityNotFound(_0xe26cb8,null))[_0x91b2('0x1f')](function(_0x2b6fc1){if(_0x2b6fc1){_0x2059c1['model']=_[_0x91b2('0xb6')](db['MailMessage'][_0x91b2('0xb7')]);_0x2059c1[_0x91b2('0x32')]=_[_0x91b2('0xb6')](_0x4417af['query']);_0x2059c1[_0x91b2('0x33')]=_[_0x91b2('0x34')](_0x2059c1[_0x91b2('0x31')],_0x2059c1['query']);_0x399c16[_0x91b2('0x35')]=_[_0x91b2('0x34')](_0x2059c1[_0x91b2('0x31')],qs[_0x91b2('0x36')](_0x4417af[_0x91b2('0x32')][_0x91b2('0x36')]));_0x399c16[_0x91b2('0x35')]=_0x399c16[_0x91b2('0x35')][_0x91b2('0x37')]?_0x399c16[_0x91b2('0x35')]:_0x2059c1[_0x91b2('0x31')];if(!_0x4417af[_0x91b2('0x32')][_0x91b2('0xc3')](_0x91b2('0x38'))){_0x399c16['limit']=qs[_0x91b2('0x19')](_0x4417af['query'][_0x91b2('0x19')]);_0x399c16[_0x91b2('0x18')]=qs[_0x91b2('0x18')](_0x4417af[_0x91b2('0x32')][_0x91b2('0x18')]);}_0x399c16[_0x91b2('0x39')]=qs['sort'](_0x4417af[_0x91b2('0x32')][_0x91b2('0x3a')]);_0x399c16['where']=qs[_0x91b2('0x33')](_[_0x91b2('0xc4')](_0x4417af[_0x91b2('0x32')],_0x2059c1[_0x91b2('0x33')]));_0x399c16[_0x91b2('0x3b')][_0x91b2('0xc5')]=_0x2b6fc1['id'];if(_0x4417af['query'][_0x91b2('0x77')]){_0x399c16[_0x91b2('0x3b')]=_[_0x91b2('0x8e')](_0x399c16['where'],{'$or':_[_0x91b2('0x24')](_0x399c16['attributes'],function(_0x234659){var _0x2d0ea7={};_0x2d0ea7[_0x234659]={'$like':'%'+_0x4417af['query'][_0x91b2('0x77')]+'%'};return _0x2d0ea7;})});}if(_0x4417af['query'][_0x91b2('0x6f')]){var _0x5189ec=_0x4417af['query'][_0x91b2('0x6f')][_0x91b2('0x5b')](',');var _0x1de9da={};_0x1de9da[_0x5189ec[0x0]]={'$gte':moment(_0x5189ec[0x1])['format'](_0x91b2('0xc6'))};_0x399c16['where']=_[_0x91b2('0x8e')](_0x399c16['where'],_0x1de9da);}_0x399c16=_[_0x91b2('0x8e')]({},_0x399c16,_0x4417af['options']);return db['MailMessage'][_0x91b2('0x1b')]({'where':_0x399c16[_0x91b2('0x3b')]})[_0x91b2('0x1f')](function(_0x4d89f0){_0x4c7716[_0x91b2('0x1b')]=_0x4d89f0;if(_0x4417af['query'][_0x91b2('0xc7')]){_0x399c16[_0x91b2('0xb8')]=[{'all':!![]}];}return db[_0x91b2('0x28')][_0x91b2('0xc8')](_0x399c16);})[_0x91b2('0x1f')](function(_0x48ecbe){if(_0x4417af['query'][_0x91b2('0xc9')]==='true'){for(var _0x20d74d=0x0;_0x20d74d<_0x48ecbe[_0x91b2('0x37')];_0x20d74d++){_0x48ecbe[_0x20d74d]['body']=juice(_0x48ecbe[_0x20d74d][_0x91b2('0xbb')]);}}_0x4c7716[_0x91b2('0xb4')]=_0x48ecbe;return _0x4c7716;});}})[_0x91b2('0x1f')](respondWithFilteredResult(_0xe26cb8,_0x399c16))[_0x91b2('0x2e')](handleError(_0xe26cb8,null));};exports[_0x91b2('0xca')]=function(_0x2f7b1b,_0x453fce){return db[_0x91b2('0x8f')][_0x91b2('0x53')]({'where':{'id':_0x2f7b1b[_0x91b2('0xbd')]['id']}})[_0x91b2('0x1f')](handleEntityNotFound(_0x453fce,null))['then'](function(_0xd37ca8){if(_0xd37ca8){return _0xd37ca8[_0x91b2('0xcb')](_0x2f7b1b[_0x91b2('0xbb')]['ids'],_[_0x91b2('0xc1')](_0x2f7b1b['body'],['ids','id'])||{})[_0x91b2('0xcc')](function(){return db['Tag'][_0x91b2('0xc8')]({'attributes':['id',_0x91b2('0x22'),_0x91b2('0x3e')],'where':{'id':_0x2f7b1b[_0x91b2('0xbb')]['ids']}});})[_0x91b2('0x1f')](function(_0x3f969f){socket[_0x91b2('0xcd')]('mailInteractionTags:save',{'id':Number(_0x2f7b1b[_0x91b2('0xbd')]['id']),'tags':_0x3f969f||[]});return{'id':Number(_0x2f7b1b[_0x91b2('0xbd')]['id']),'tags':_0x3f969f||[]};});}})[_0x91b2('0x1f')](respondWithResult(_0x453fce,null))[_0x91b2('0x2e')](handleError(_0x453fce,null));};exports[_0x91b2('0xce')]=function(_0x5ee097,_0x36a8a7){return db[_0x91b2('0x8f')][_0x91b2('0x53')]({'where':{'id':_0x5ee097['params']['id']}})[_0x91b2('0x1f')](handleEntityNotFound(_0x36a8a7,null))[_0x91b2('0x1f')](function(_0x555855){if(_0x555855){return _0x555855['removeTags'](_0x5ee097[_0x91b2('0x32')][_0x91b2('0xc0')]);}})[_0x91b2('0x1f')](respondWithStatusCode(_0x36a8a7,null))[_0x91b2('0x2e')](handleError(_0x36a8a7,null));};exports[_0x91b2('0xcf')]=function(_0x245efb,_0x505bf4){var _0x4df354=moment()[_0x91b2('0xd0')]()[_0x91b2('0x8c')]();var _0x590b5e=path[_0x91b2('0xd1')](config[_0x91b2('0xd2')],'server','files',_0x91b2('0xd3'));var _0x4edb20=path['join'](config[_0x91b2('0xd2')],_0x91b2('0xd4'),'files',_0x91b2('0xd5'));var _0x834d1a=path[_0x91b2('0xd1')](_0x590b5e,_0x4df354);var _0x2f056c=util['format'](_0x91b2('0xd6'),_0x245efb[_0x91b2('0xbd')]['id'],_0x4df354);var _0xe22741=path[_0x91b2('0xd1')](_0x590b5e,_0x2f056c);var _0x13668f=[];if(_0x245efb['query'][_0x91b2('0xd5')]){_0x13668f[_0x91b2('0xb2')]({'model':db[_0x91b2('0xd7')],'as':_0x91b2('0xd8'),'raw':!![]});}var _0x252d70=[{'model':db['MailMessage'],'as':_0x91b2('0xd9'),'attributes':['id',_0x91b2('0xbb'),'from','to','cc',_0x91b2('0xda'),_0x91b2('0xdb'),_0x91b2('0x6d')],'where':{'secret':![]},'order':qs[_0x91b2('0x3a')]('id'),'include':_0x13668f}];return db[_0x91b2('0x8f')]['find']({'where':{'id':_0x245efb['params']['id']},'include':_0x252d70})[_0x91b2('0x1f')](handleEntityNotFound(_0x505bf4,null))[_0x91b2('0x1f')](function(_0x300214){if(_0x300214&&_0x300214[_0x91b2('0xd9')]){var _0xf80c94=_0x300214[_0x91b2('0xdc')]({'plain':!![]});fs[_0x91b2('0xdd')](_0x834d1a);return BPromise[_0x91b2('0xde')](_0xf80c94[_0x91b2('0xd9')],function(_0x529771,_0x500b49){var _0x424e3a={'from':_0x529771[_0x91b2('0x3f')],'to':_0x529771['to'],'subject':_0x529771[_0x91b2('0xdb')],'html':htmlEntities['decode'](_0x529771['body']),'headers':{'Date':moment(_0x529771['createdAt'])[_0x91b2('0xdf')](_0x91b2('0xe0'))},'attachments':[]};if(_0x529771['cc']){_0x424e3a['headers']['Cc']=_0x529771['cc'];}if(_0x529771[_0x91b2('0xda')]){_0x424e3a[_0x91b2('0xe1')][_0x91b2('0xe2')]=_0x529771[_0x91b2('0xda')];}return new BPromise(function(_0x4d2058,_0x43fb8e){if(_0x529771['Attachments']){for(var _0x50d1d3=0x0;_0x50d1d3<_0x529771[_0x91b2('0xd8')]['length'];_0x50d1d3++){var _0x4a03b5=_0x529771[_0x91b2('0xd8')][_0x50d1d3];var _0x4844f5=path[_0x91b2('0xd1')](_0x4edb20,_0x4a03b5[_0x91b2('0xe3')]);if(fs[_0x91b2('0xe4')](_0x4844f5)){_0x424e3a[_0x91b2('0xd5')][_0x91b2('0xb2')]({'name':_0x4a03b5['name'],'contentType':_0x4a03b5[_0x91b2('0x2f')],'data':fs[_0x91b2('0xe5')](_0x4844f5)});}}}emlformat['build'](_0x424e3a,function(_0x577502,_0xd7972b){if(_0x577502)return _0x43fb8e(_0x577502);fs[_0x91b2('0xe6')](path[_0x91b2('0xd1')](_0x834d1a,util[_0x91b2('0xdf')](_0x91b2('0xe7'),_0x500b49)),_0xd7972b);return _0x4d2058(_0xd7972b);});});})[_0x91b2('0x1f')](function(){return new BPromise(function(_0x43bb1f,_0x235d40){zipdir(_0x834d1a,{'saveTo':_0xe22741},function(_0x1d1ad8,_0x177cf6){if(_0x1d1ad8)return _0x235d40(_0x1d1ad8);return _0x43bb1f(_0x177cf6);});})[_0x91b2('0x1f')](function(){return new BPromise(function(_0x19e06a,_0x51802c){rimraf(_0x834d1a,function(_0x1e6475){if(_0x1e6475)_0x51802c(_0x1e6475);return _0x19e06a();});});})[_0x91b2('0x1f')](function(){return _0x505bf4[_0x91b2('0xcf')](_0xe22741,_0x2f056c,function(_0x41157e){if(!_0x41157e)fs[_0x91b2('0xe8')](_0xe22741);});});});}else{return _0x505bf4[_0x91b2('0xe9')](0xc8);}})[_0x91b2('0x2e')](handleError(_0x505bf4,null));};
\ No newline at end of file
+var _0x487b=['fullname','TagIds','Tags','forEach','push','MailMessage','findOne','out','plainBody','-id','lastMsgText','trimStart','catch','index','MailInteraction','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','tools_tags','u.id','from','user_has_mail_interactions','users','mail_interactions','left_join','cm_contacts','o.id\x20=\x20i.UserId','mail_accounts','a.id\x20=\x20i.MailAccountId','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','operator','$substring','split','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','some','compact','MailAccountId','i.MailAccountId\x20IN\x20?','createdAt','parse','$gte','$lte','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','filter','replace','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','group','i.id','Sequelize','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','isEmpty','t.id\x20IN\x20?','resolve','user','getMailAccounts','i.MailAccountId\x20IS\x20NULL','role','agent','sequelize','toString','keyBy','merge','a.key','Account.key','Account.mandatoryDisposition','i.createdAt','i.updatedAt','i.closed','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.substatus','i.ContactId','i.MailAccountId','i.UserId','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','MailInteractionId','enableEmailPreview','rows','show','params','includeAll','include','options','create','body','describe','addMessage','ids','omit','getMessages','filters','YYYY-MM-DD\x20HH:mm:ss','true','addTags','spread','findAll','emit','removeTags','download','join','root','server','files','tmp','transcript-%d-%s.zip','Attachment','Attachments','bcc','subject','Messages','get','mkdirSync','each','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','attachments','readFileSync','build','writeFileSync','format','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','util','path','lodash','squel','ioredis','../../components/parsers/qs','api','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','update','destroy','then','error','stack','name','send','map'];(function(_0x4dcf2c,_0x17f167){var _0x35c675=function(_0x24a093){while(--_0x24a093){_0x4dcf2c['push'](_0x4dcf2c['shift']());}};_0x35c675(++_0x17f167);}(_0x487b,0xc3));var _0xb487=function(_0x3dcc80,_0x1a20af){_0x3dcc80=_0x3dcc80-0x0;var _0x401c6f=_0x487b[_0x3dcc80];return _0x401c6f;};'use strict';var emlformat=require(_0xb487('0x0'));var rimraf=require(_0xb487('0x1'));var zipdir=require(_0xb487('0x2'));var moment=require('moment');var BPromise=require('bluebird');var util=require(_0xb487('0x3'));var path=require(_0xb487('0x4'));var fs=require('fs');var _=require(_0xb487('0x5'));var squel=require(_0xb487('0x6'));var juice=require('juice');var Redis=require(_0xb487('0x7'));var qs=require(_0xb487('0x8'));var as=require('../../components/parsers/advancedSearch');var logger=require('../../config/logger')(_0xb487('0x9'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var htmlEntities=require('html-entities');config[_0xb487('0xa')]=_[_0xb487('0xb')](config['redis'],{'host':_0xb487('0xc'),'port':0x18eb});var socket=require(_0xb487('0xd'))(new Redis(config[_0xb487('0xa')]));require(_0xb487('0xe'))['register'](socket);function respondWithStatusCode(_0x41eee8,_0x4947fb){_0x4947fb=_0x4947fb||0xcc;return function(_0x25d0cc){if(_0x25d0cc){return _0x41eee8[_0xb487('0xf')](_0x4947fb);}return _0x41eee8[_0xb487('0x10')](_0x4947fb)[_0xb487('0x11')]();};}function respondWithResult(_0x40e49c,_0xe731f0){_0xe731f0=_0xe731f0||0xc8;return function(_0x57dd8e){if(_0x57dd8e){return _0x40e49c[_0xb487('0x10')](_0xe731f0)[_0xb487('0x12')](_0x57dd8e);}};}function respondWithFilteredResult(_0x10daf2,_0x44918f){return function(_0x4fb3b7){if(_0x4fb3b7){var _0x44f59c=typeof _0x44918f[_0xb487('0x13')]==='undefined'&&typeof _0x44918f[_0xb487('0x14')]===_0xb487('0x15');var _0x1c4f4a=_0x4fb3b7[_0xb487('0x16')];var _0x99c8c8=_0x44f59c?0x0:_0x44918f['offset'];var _0x26e598=_0x44f59c?_0x4fb3b7[_0xb487('0x16')]:_0x44918f[_0xb487('0x13')]+_0x44918f['limit'];var _0x20ac7f;if(_0x26e598>=_0x1c4f4a){_0x26e598=_0x1c4f4a;_0x20ac7f=0xc8;}else{_0x20ac7f=0xce;}_0x10daf2[_0xb487('0x10')](_0x20ac7f);return _0x10daf2[_0xb487('0x17')](_0xb487('0x18'),_0x99c8c8+'-'+_0x26e598+'/'+_0x1c4f4a)[_0xb487('0x12')](_0x4fb3b7);}return null;};}function saveUpdates(_0x2c2911){return function(_0x101420){if(_0x101420){return _0x101420[_0xb487('0x19')](_0x2c2911)['then'](function(_0x2f1bcb){return _0x2f1bcb;});}return null;};}function removeEntity(_0x2af03f){return function(_0x2c7387){if(_0x2c7387){return _0x2c7387[_0xb487('0x1a')]()[_0xb487('0x1b')](function(){_0x2af03f[_0xb487('0x10')](0xcc)['end']();});}};}function handleEntityNotFound(_0x45a639){return function(_0x47604e){if(!_0x47604e){_0x45a639['sendStatus'](0x194);}return _0x47604e;};}function handleError(_0x3fed5a,_0x502759){_0x502759=_0x502759||0x1f4;return function(_0x5d049c){logger[_0xb487('0x1c')](_0x5d049c[_0xb487('0x1d')]);if(_0x5d049c[_0xb487('0x1e')]){delete _0x5d049c['name'];}_0x3fed5a['status'](_0x502759)[_0xb487('0x1f')](_0x5d049c);};}function getInteractionUsers(_0x1076a3,_0x4250bc){return new BPromise(function(_0x49d7b6,_0x4a4284){try{if(_0x4250bc[_0x1076a3['id']]){_0x1076a3['Users']=_[_0xb487('0x20')](_0x4250bc[_0x1076a3['id']],function(_0x1576de){return{'id':_0x1576de['id'],'fullname':_0x1576de[_0xb487('0x21')]};});}}catch(_0x1b46b5){_0x4a4284(_0x1b46b5);}_0x49d7b6(_0x1076a3);});}function getInteractionTags(_0x27d5be,_0x3db3c6){return new BPromise(function(_0x1b77bc,_0x1fffe0){try{if(_0x27d5be[_0xb487('0x22')]){_0x27d5be[_0xb487('0x23')]=[];_0x27d5be[_0xb487('0x22')]['split'](',')[_0xb487('0x24')](function(_0x453c95){_0x27d5be['Tags'][_0xb487('0x25')](_0x3db3c6[_0x453c95]);});}delete _0x27d5be[_0xb487('0x22')];}catch(_0x21110a){_0x1fffe0(_0x21110a);}_0x1b77bc(_0x27d5be);});}function getLastMessageText(_0x32a7b7){return new BPromise(function(_0x5b078e,_0x2e0987){return db[_0xb487('0x26')][_0xb487('0x27')]({'where':{'$and':[{'MailInteractionId':_0x32a7b7['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xb487('0x28')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0xb487('0x29')],'order':_0xb487('0x2a'),'raw':!![]})[_0xb487('0x1b')](function(_0x20dc9d){if(_0x20dc9d&&_0x20dc9d['plainBody']){_0x32a7b7[_0xb487('0x2b')]=_[_0xb487('0x2c')](_0x20dc9d[_0xb487('0x29')]);}_0x5b078e(_0x32a7b7);})[_0xb487('0x2d')](function(_0x110b20){_0x2e0987(_0x110b20);});});}function updateMailInteraction(_0x2e9b07,_0x8c3cb5,_0x13e2a8,_0x208e13){return new BPromise(function(_0x2201b9,_0x4adfa2){return getInteractionUsers(_0x2e9b07,_0x13e2a8)[_0xb487('0x1b')](function(_0x4a5c00){return getInteractionTags(_0x4a5c00,_0x8c3cb5);})[_0xb487('0x1b')](function(_0xd6f178){if(_0x208e13){_0x2201b9(getLastMessageText(_0xd6f178));}else{_0x2201b9(_0xd6f178);}})['catch'](function(_0xa8ff84){_0x4adfa2(_0xa8ff84);});});}exports[_0xb487('0x2e')]=function(_0x1e5dc9,_0x1583c6){var _0x54a9ee={},_0x4dd3d4={},_0x19622a={'count':0x0,'rows':[]};var _0x2a9d81=_[_0xb487('0x20')](db[_0xb487('0x2f')][_0xb487('0x30')],function(_0xb63152){return{'name':_0xb63152[_0xb487('0x31')],'type':_0xb63152[_0xb487('0x32')][_0xb487('0x33')]};});_0x4dd3d4[_0xb487('0x34')]=_['map'](_0x2a9d81,_0xb487('0x1e'));_0x4dd3d4['query']=_[_0xb487('0x35')](_0x1e5dc9[_0xb487('0x36')]);_0x4dd3d4['filters']=_[_0xb487('0x37')](_0x4dd3d4[_0xb487('0x34')],_0x4dd3d4[_0xb487('0x36')]);_0x54a9ee[_0xb487('0x38')]=_[_0xb487('0x37')](_0x4dd3d4[_0xb487('0x34')],qs[_0xb487('0x39')](_0x1e5dc9[_0xb487('0x36')][_0xb487('0x39')]));_0x54a9ee[_0xb487('0x38')]=_0x54a9ee[_0xb487('0x38')][_0xb487('0x3a')]?_0x54a9ee[_0xb487('0x38')]:_0x4dd3d4[_0xb487('0x34')];if(!_0x1e5dc9[_0xb487('0x36')][_0xb487('0x3b')](_0xb487('0x3c'))){_0x54a9ee[_0xb487('0x14')]=qs[_0xb487('0x14')](_0x1e5dc9[_0xb487('0x36')][_0xb487('0x14')]);_0x54a9ee[_0xb487('0x13')]=qs[_0xb487('0x13')](_0x1e5dc9[_0xb487('0x36')][_0xb487('0x13')]);}_0x54a9ee[_0xb487('0x3d')]=qs[_0xb487('0x3e')](_0x1e5dc9[_0xb487('0x36')]['sort']);_0x54a9ee[_0xb487('0x3f')]=qs['filters'](_[_0xb487('0x40')](_0x1e5dc9[_0xb487('0x36')],_0x4dd3d4['filters']),_0x2a9d81);var _0x57912d=[];var _0x1d1d81=squel[_0xb487('0x41')]()[_0xb487('0x42')]('id')['field']('name')[_0xb487('0x42')](_0xb487('0x43'))['from'](_0xb487('0x44'));var _0x533d21=squel[_0xb487('0x41')]()[_0xb487('0x42')](_0xb487('0x45'))[_0xb487('0x42')]('u.fullname')['field']('ui.MailInteractionId')[_0xb487('0x46')](_0xb487('0x47'),'ui')['left_join'](_0xb487('0x48'),'u','u.id\x20=\x20ui.UserId');var _0x1a5fbd=squel[_0xb487('0x41')]()[_0xb487('0x46')](_0xb487('0x49'),'i')[_0xb487('0x4a')](_0xb487('0x4b'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xb487('0x4a')](_0xb487('0x48'),'o',_0xb487('0x4c'))['left_join'](_0xb487('0x4d'),'a',_0xb487('0x4e'))[_0xb487('0x4a')]('mail_messages','me','me.MailInteractionId\x20=\x20i.id')[_0xb487('0x4a')]('mail_interaction_has_tags','it',_0xb487('0x4f'))[_0xb487('0x4a')]('tools_tags','t',_0xb487('0x50'));var _0xa14a70=squel['expr']();var _0x3d2396=[];var _0x213c63=squel[_0xb487('0x51')]();var _0x228d1f;if(_0x1e5dc9[_0xb487('0x36')]['search']){_0x228d1f=as[_0xb487('0x52')](_0x1e5dc9[_0xb487('0x36')]['search']);var _0xc872e7=_0x228d1f[_0xb487('0x53')];for(var _0x146154=0x0;_0x146154<_0x228d1f[_0xb487('0x54')][_0xb487('0x3a')];_0x146154++){var _0x2eb201=_0x228d1f[_0xb487('0x54')][_0x146154];var _0x598eec='i';var _0x5c4b49=_[_0xb487('0x55')](_0x2a9d81,[_0xb487('0x1e'),_0x2eb201[_0xb487('0x42')]]);if(!_0x5c4b49){switch(_0x2eb201[_0xb487('0x42')]){case _0xb487('0x56'):if(_0x2eb201[_0xb487('0x57')]==0x1){_0x1a5fbd[_0xb487('0x58')]('`'+_0x2eb201[_0xb487('0x42')]+_0xb487('0x59'));}else{_0x1a5fbd['having']('`'+_0x2eb201[_0xb487('0x42')]+_0xb487('0x5a'));}break;case'Contact':if(_0x2eb201[_0xb487('0x5b')]===_0xb487('0x5c')){if(_0x2eb201[_0xb487('0x57')][_0xb487('0x5d')]('\x20')[_0xb487('0x3a')]>0x1){_0xa14a70[_0xc872e7]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x2eb201['value']),null);}else{var _0x583d2e='%'+_0x2eb201['value']+'%';_0xa14a70[_0xc872e7](_0xb487('0x5e'),_0x583d2e,_0x583d2e,_0x583d2e);}}else{_0x5c4b49=_[_0xb487('0x55')](_0x2a9d81,[_0xb487('0x1e'),'ContactId']);_0x2eb201[_0xb487('0x42')]=_0xb487('0x5f');_0x4d234c=as[_0xb487('0x60')](_0x598eec,_0x5c4b49['type'],_0x2eb201);_0xa14a70[_0xc872e7](_0x4d234c[_0xb487('0x61')],_0x4d234c[_0xb487('0x57')][_0xb487('0x62')],_0x4d234c['value'][_0xb487('0x11')]);}break;case _0xb487('0x63'):var _0x56e57d=_0x2eb201[_0xb487('0x57')][_0xb487('0x5d')](',')[_0xb487('0x20')](function(_0x119320){return Number(_0x119320);});_0x56e57d['forEach'](function(_0xe677ac){_0x213c63['or'](_0xb487('0x64'),'%,'+_0xe677ac+',%');});_0x3d2396=_[_0xb487('0x65')](_0x3d2396,_0x56e57d);break;case _0xb487('0x66'):if(_0x2eb201['operator']===_0xb487('0x5c')){_0xa14a70[_0xc872e7](_0xb487('0x67'),'%'+_0x2eb201[_0xb487('0x57')]+'%',null);}else{_0x5c4b49=_[_0xb487('0x55')](_0x2a9d81,['name',_0xb487('0x68')]);_0x2eb201[_0xb487('0x42')]='UserId';_0x4d234c=as['buildExpression'](_0x598eec,_0x5c4b49[_0xb487('0x32')],_0x2eb201);_0xa14a70[_0xc872e7](_0x4d234c[_0xb487('0x61')],_0x4d234c['value'][_0xb487('0x62')],_0x4d234c[_0xb487('0x57')][_0xb487('0x11')]);}break;case'plainBody':_0x4d234c=as[_0xb487('0x60')]('me',null,_0x2eb201);_0xa14a70[_0xc872e7](_0x4d234c['text'],_0x4d234c['value'][_0xb487('0x62')],_0x4d234c['value']['end']);break;}}else{var _0x4d234c=as[_0xb487('0x60')](_0x598eec,_0x5c4b49[_0xb487('0x32')],_0x2eb201);_0xa14a70[_0xc872e7](_0x4d234c[_0xb487('0x61')],_0x4d234c[_0xb487('0x57')][_0xb487('0x62')],_0x4d234c['value'][_0xb487('0x11')]);}}}else{var _0x2ffb32=_(_0x1e5dc9['query'])[_0xb487('0x35')]()[_0xb487('0x20')](function(_0x5aaa6d){return _[_0xb487('0x69')](_0x2a9d81,[_0xb487('0x1e'),_0x5aaa6d])?_0x5aaa6d:undefined;})[_0xb487('0x6a')]()['value']();if(!_['isEmpty'](_0x2ffb32)){_0x2ffb32[_0xb487('0x24')](function(_0x219758){if(_0x219758===_0xb487('0x6b')){_0x1a5fbd[_0xb487('0x3f')](_0xb487('0x6c'),[]['concat'](_0x1e5dc9[_0xb487('0x36')][_0x219758]));}else if(_0x219758===_0xb487('0x6d')){var _0x1450bf=JSON[_0xb487('0x6e')](_0x1e5dc9['query'][_0x219758])[_0xb487('0x6f')];var _0x5dc5ed=JSON[_0xb487('0x6e')](_0x1e5dc9['query'][_0x219758])[_0xb487('0x70')];_0x1a5fbd['where']('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x1450bf,_0x5dc5ed);}else{if(_0x1e5dc9[_0xb487('0x36')][_0x219758]===_0xb487('0x71')){_0x1a5fbd[_0xb487('0x3f')]('i.'+_0x219758+_0xb487('0x72'));}else{_0x1a5fbd[_0xb487('0x3f')]('i.'+_0x219758+_0xb487('0x73'),_0x1e5dc9['query'][_0x219758]);}}});}if(_0x1e5dc9['query'][_0xb487('0x74')]){if(_0x1e5dc9[_0xb487('0x36')]['read']==0x1){_0x1a5fbd[_0xb487('0x58')]('`unreadMessages`\x20=\x200');}else{_0x1a5fbd['having'](_0xb487('0x75'));}}if(_0x1e5dc9['query'][_0xb487('0x76')]){_0x3d2396=_['isArray'](_0x1e5dc9['query'][_0xb487('0x76')])?_0x1e5dc9['query']['tag']:new Array(_0x1e5dc9[_0xb487('0x36')][_0xb487('0x76')]);_0x3d2396['forEach'](function(_0x5d4aea){_0x213c63['or'](_0xb487('0x64'),'%,'+_0x5d4aea+',%');});}if(_0x1e5dc9[_0xb487('0x36')][_0xb487('0x77')]){var _0x327846=_0x1e5dc9['query']['filter'][_0xb487('0x78')]('\x5c','\x5c\x5c')[_0xb487('0x78')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x327846)){_0xa14a70['or']('i.id\x20LIKE\x20?',_0x327846+'%');}else if(qs[_0xb487('0x79')](_0x327846)){_0xa14a70['or'](_0xb487('0x7a'),_0x327846+'%');}else{_0xa14a70['or'](_0xb487('0x7b'),qs[_0xb487('0x7c')](_0x327846))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xb487('0x7c')](_0x327846));}}}_0x1a5fbd[_0xb487('0x3f')](_0xa14a70);_0x1a5fbd[_0xb487('0x7d')](_0xb487('0x7e'));var _0x1b01a1={'type':db[_0xb487('0x7f')][_0xb487('0x80')]['SELECT'],'raw':!![]};var _0x3204ba=_0x1a5fbd[_0xb487('0x81')]();_0x3204ba[_0xb487('0x42')](_0xb487('0x7e'));_0x3204ba[_0xb487('0x42')](_0xb487('0x82'),'unreadMessages');if(_0x54a9ee[_0xb487('0x3d')]){_0x54a9ee[_0xb487('0x3d')]['forEach'](function(_0x1b12e8){var _0x2bc304=_0x1b12e8[0x0]===_0xb487('0x83')?_0x1b12e8[0x0]:'i.'+_0x1b12e8[0x0];_0x1a5fbd[_0xb487('0x3d')](_0x2bc304,_0x1b12e8[0x1]===_0xb487('0x84')?![]:!![]);});}if(!_[_0xb487('0x85')](_0x3d2396)){_0x1a5fbd[_0xb487('0x58')](_0x213c63);_0x3204ba['where'](_0xb487('0x86'),_0x3d2396);}BPromise[_0xb487('0x87')]()['then'](function(){if(!_0x228d1f){if(_0x1e5dc9[_0xb487('0x36')][_0xb487('0x6b')])return;_0x3204ba[_0xb487('0x3f')]('i.MailAccountId\x20IS\x20NOT\x20NULL');_0x1a5fbd[_0xb487('0x3f')]('i.MailAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x1e5dc9[_0xb487('0x88')]['role']!=='agent')return;return _0x1e5dc9[_0xb487('0x88')][_0xb487('0x89')]({'attributes':['id'],'raw':!![]})[_0xb487('0x1b')](function(_0x596875){if(_[_0xb487('0x85')](_0x596875)){_0x3204ba[_0xb487('0x3f')]('i.MailAccountId\x20IS\x20NULL');_0x1a5fbd[_0xb487('0x3f')](_0xb487('0x8a'));}else{_0x3204ba['where'](_0xb487('0x6c'),_[_0xb487('0x20')](_0x596875,'id'));_0x1a5fbd[_0xb487('0x3f')](_0xb487('0x6c'),_[_0xb487('0x20')](_0x596875,'id'));}});})[_0xb487('0x1b')](function(){if(_0x1e5dc9[_0xb487('0x88')][_0xb487('0x8b')]===_0xb487('0x8c')&&!_0x228d1f&&!_0x1e5dc9[_0xb487('0x36')][_0xb487('0x6b')])return[];return db[_0xb487('0x8d')][_0xb487('0x36')](_0x3204ba[_0xb487('0x8e')](),_0x1b01a1);})['then'](function(_0x3f95c9){_0x19622a[_0xb487('0x16')]=_0x3f95c9[_0xb487('0x3a')];if(_0x19622a[_0xb487('0x16')]===0x0)return[];return db['sequelize'][_0xb487('0x36')](_0x1d1d81[_0xb487('0x8e')](),_0x1b01a1)['then'](function(_0x1432dc){_0x57912d=_[_0xb487('0x8f')](_0x1432dc,'id');_0x1b01a1=_[_0xb487('0x90')](_0x1b01a1,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1e5dc9[_0xb487('0x36')][_0xb487('0x39')]){_0x54a9ee[_0xb487('0x38')][_0xb487('0x24')](function(_0x30c566){_0x1a5fbd[_0xb487('0x42')]('i.'+_0x30c566);});}else{_0x1a5fbd['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xb487('0x56'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0x91'),_0xb487('0x92'));_0x1a5fbd[_0xb487('0x42')]('a.mandatoryDisposition',_0xb487('0x93'));_0x1a5fbd[_0xb487('0x42')]('CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName');_0x1a5fbd[_0xb487('0x42')]('i.id');_0x1a5fbd[_0xb487('0x42')](_0xb487('0x94'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0x95'));_0x1a5fbd['field'](_0xb487('0x96'));_0x1a5fbd[_0xb487('0x42')]('i.closedAt');_0x1a5fbd[_0xb487('0x42')](_0xb487('0x97'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0x98'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0x99'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0x9a'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0x9b'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0x9c'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0x9d'));_0x1a5fbd['field'](_0xb487('0x9e'));_0x1a5fbd[_0xb487('0x42')]('i.to');_0x1a5fbd[_0xb487('0x42')](_0xb487('0x9f'));_0x1a5fbd['field'](_0xb487('0xa0'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0xa1'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0xa2'),_0xb487('0xa3'));_0x1a5fbd['field'](_0xb487('0xa4'),_0xb487('0xa5'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0xa6'),_0xb487('0xa7'));_0x1a5fbd[_0xb487('0x42')]('c.phone',_0xb487('0xa8'));_0x1a5fbd['field'](_0xb487('0xa9'),_0xb487('0xaa'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0xab'),_0xb487('0xac'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0xad'),_0xb487('0xae'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0xaf'),_0xb487('0xb0'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0xb1'),_0xb487('0x22'));}if(_0x54a9ee['limit'])_0x1a5fbd[_0xb487('0x14')](_0x54a9ee['limit']);if(_0x54a9ee['offset'])_0x1a5fbd[_0xb487('0x13')](_0x54a9ee['offset']);return db[_0xb487('0x8d')][_0xb487('0x36')](_0x1a5fbd[_0xb487('0x8e')](),_0x1b01a1);})[_0xb487('0x1b')](function(_0x1d6bd5){if(_0x1d6bd5[_0xb487('0x3a')]>0x0)_0x533d21[_0xb487('0x3f')]('ui.MailInteractionId\x20IN\x20?',_[_0xb487('0x20')](_0x1d6bd5,'id'));return db['sequelize'][_0xb487('0x36')](_0x533d21[_0xb487('0x8e')](),_0x1b01a1)['then'](function(_0x570ea2){var _0xeede64=_[_0xb487('0xb2')](_0x570ea2,_0xb487('0xb3'));var _0x364fd9=[];return db['Setting'][_0xb487('0x27')]({'attributes':['enableEmailPreview'],'raw':!![]})['then'](function(_0x1a4c31){var _0x5036b0=_0x1a4c31[_0xb487('0xb4')];_0x1d6bd5['forEach'](function(_0x5dfdde){_0x364fd9[_0xb487('0x25')](updateMailInteraction(_0x5dfdde,_0x57912d,_0xeede64,_0x5036b0));});return BPromise['all'](_0x364fd9);});});});})[_0xb487('0x1b')](function(_0x678ec7){_0x19622a[_0xb487('0xb5')]=_0x678ec7;return _0x19622a;})['then'](respondWithFilteredResult(_0x1583c6,_0x54a9ee))[_0xb487('0x2d')](handleError(_0x1583c6,null));};exports[_0xb487('0xb6')]=function(_0x30902c,_0x1a571d){var _0x169280={'raw':![],'where':{'id':_0x30902c[_0xb487('0xb7')]['id']}},_0x12114f={};_0x12114f[_0xb487('0x34')]=_['keys'](db[_0xb487('0x2f')][_0xb487('0x30')]);_0x12114f[_0xb487('0x36')]=_[_0xb487('0x35')](_0x30902c['query']);_0x12114f['filters']=_[_0xb487('0x37')](_0x12114f[_0xb487('0x34')],_0x12114f['query']);_0x169280[_0xb487('0x38')]=_[_0xb487('0x37')](_0x12114f[_0xb487('0x34')],qs[_0xb487('0x39')](_0x30902c[_0xb487('0x36')]['fields']));_0x169280[_0xb487('0x38')]=_0x169280[_0xb487('0x38')][_0xb487('0x3a')]?_0x169280[_0xb487('0x38')]:_0x12114f['model'];if(_0x30902c[_0xb487('0x36')][_0xb487('0xb8')]){_0x169280[_0xb487('0xb9')]=[{'all':!![]}];}_0x169280=_[_0xb487('0x90')]({},_0x169280,_0x30902c[_0xb487('0xba')]);return db[_0xb487('0x2f')][_0xb487('0x55')](_0x169280)[_0xb487('0x1b')](handleEntityNotFound(_0x1a571d,null))[_0xb487('0x1b')](respondWithResult(_0x1a571d,null))['catch'](handleError(_0x1a571d,null));};exports[_0xb487('0xbb')]=function(_0x1d4d01,_0x26a6fe){return db[_0xb487('0x2f')][_0xb487('0xbb')](_0x1d4d01[_0xb487('0xbc')],{})[_0xb487('0x1b')](respondWithResult(_0x26a6fe,0xc9))[_0xb487('0x2d')](handleError(_0x26a6fe,null));};exports[_0xb487('0x19')]=function(_0x3eb280,_0xef42bd){if(_0x3eb280[_0xb487('0xbc')]['id']){delete _0x3eb280[_0xb487('0xbc')]['id'];}return db[_0xb487('0x2f')][_0xb487('0x55')]({'where':{'id':_0x3eb280[_0xb487('0xb7')]['id']}})[_0xb487('0x1b')](handleEntityNotFound(_0xef42bd,null))[_0xb487('0x1b')](saveUpdates(_0x3eb280[_0xb487('0xbc')],null))[_0xb487('0x1b')](respondWithResult(_0xef42bd,null))[_0xb487('0x2d')](handleError(_0xef42bd,null));};exports[_0xb487('0x1a')]=function(_0x1c4fe8,_0x22d993){return db[_0xb487('0x2f')][_0xb487('0x55')]({'where':{'id':_0x1c4fe8[_0xb487('0xb7')]['id']}})[_0xb487('0x1b')](handleEntityNotFound(_0x22d993,null))[_0xb487('0x1b')](removeEntity(_0x22d993,null))[_0xb487('0x2d')](handleError(_0x22d993,null));};exports[_0xb487('0xbd')]=function(_0x594b60,_0x333b17){return db[_0xb487('0x2f')]['describe']()['then'](respondWithResult(_0x333b17,null))[_0xb487('0x2d')](handleError(_0x333b17,null));};exports[_0xb487('0xbe')]=function(_0xeda434,_0x4fd229){return db[_0xb487('0x26')]['find']({'where':{'id':_0xeda434[_0xb487('0xb7')]['id']}})[_0xb487('0x1b')](handleEntityNotFound(_0x4fd229,null))['then'](function(_0x4c54a4){if(_0x4c54a4){return _0x4c54a4[_0xb487('0xbe')](_0xeda434['body'][_0xb487('0xbf')],_[_0xb487('0xc0')](_0xeda434[_0xb487('0xbc')],['ids','id'])||{});}})[_0xb487('0x1b')](respondWithResult(_0x4fd229,null))[_0xb487('0x2d')](handleError(_0x4fd229,null));};exports[_0xb487('0xc1')]=function(_0x296b2f,_0x4f2833){var _0x268e76={'raw':![],'where':{}};var _0x653a5d={};var _0x143918={'count':0x0,'rows':[]};return db['MailInteraction'][_0xb487('0x27')]({'where':{'id':_0x296b2f[_0xb487('0xb7')]['id']}})['then'](handleEntityNotFound(_0x4f2833,null))[_0xb487('0x1b')](function(_0x4da7bb){if(_0x4da7bb){_0x653a5d['model']=_['keys'](db['MailMessage']['rawAttributes']);_0x653a5d['query']=_['keys'](_0x296b2f['query']);_0x653a5d[_0xb487('0xc2')]=_[_0xb487('0x37')](_0x653a5d[_0xb487('0x34')],_0x653a5d['query']);_0x268e76[_0xb487('0x38')]=_[_0xb487('0x37')](_0x653a5d['model'],qs['fields'](_0x296b2f[_0xb487('0x36')][_0xb487('0x39')]));_0x268e76['attributes']=_0x268e76['attributes'][_0xb487('0x3a')]?_0x268e76[_0xb487('0x38')]:_0x653a5d[_0xb487('0x34')];if(!_0x296b2f[_0xb487('0x36')][_0xb487('0x3b')]('nolimit')){_0x268e76[_0xb487('0x14')]=qs[_0xb487('0x14')](_0x296b2f['query'][_0xb487('0x14')]);_0x268e76[_0xb487('0x13')]=qs['offset'](_0x296b2f['query'][_0xb487('0x13')]);}_0x268e76[_0xb487('0x3d')]=qs[_0xb487('0x3e')](_0x296b2f['query'][_0xb487('0x3e')]);_0x268e76[_0xb487('0x3f')]=qs[_0xb487('0xc2')](_['pick'](_0x296b2f[_0xb487('0x36')],_0x653a5d[_0xb487('0xc2')]));_0x268e76[_0xb487('0x3f')][_0xb487('0xb3')]=_0x4da7bb['id'];if(_0x296b2f[_0xb487('0x36')][_0xb487('0x77')]){_0x268e76[_0xb487('0x3f')]=_['merge'](_0x268e76[_0xb487('0x3f')],{'$or':_[_0xb487('0x20')](_0x268e76[_0xb487('0x38')],function(_0x965c49){var _0x3689ab={};_0x3689ab[_0x965c49]={'$like':'%'+_0x296b2f['query'][_0xb487('0x77')]+'%'};return _0x3689ab;})});}if(_0x296b2f['query']['$gte']){var _0x54478f=_0x296b2f[_0xb487('0x36')][_0xb487('0x6f')][_0xb487('0x5d')](',');var _0x4883ab={};_0x4883ab[_0x54478f[0x0]]={'$gte':moment(_0x54478f[0x1])['format'](_0xb487('0xc3'))};_0x268e76['where']=_[_0xb487('0x90')](_0x268e76[_0xb487('0x3f')],_0x4883ab);}_0x268e76=_['merge']({},_0x268e76,_0x296b2f[_0xb487('0xba')]);return db[_0xb487('0x26')]['count']({'where':_0x268e76[_0xb487('0x3f')]})[_0xb487('0x1b')](function(_0x261649){_0x143918['count']=_0x261649;if(_0x296b2f['query']['includeAll']){_0x268e76['include']=[{'all':!![]}];}return db[_0xb487('0x26')]['findAll'](_0x268e76);})[_0xb487('0x1b')](function(_0x4f59b9){if(_0x296b2f[_0xb487('0x36')]['inlineCss']===_0xb487('0xc4')){for(var _0xc2f23e=0x0;_0xc2f23e<_0x4f59b9[_0xb487('0x3a')];_0xc2f23e++){_0x4f59b9[_0xc2f23e][_0xb487('0xbc')]=juice(_0x4f59b9[_0xc2f23e][_0xb487('0xbc')]);}}_0x143918[_0xb487('0xb5')]=_0x4f59b9;return _0x143918;});}})[_0xb487('0x1b')](respondWithFilteredResult(_0x4f2833,_0x268e76))['catch'](handleError(_0x4f2833,null));};exports[_0xb487('0xc5')]=function(_0x39af78,_0x47f18a){return db['MailInteraction'][_0xb487('0x55')]({'where':{'id':_0x39af78[_0xb487('0xb7')]['id']}})[_0xb487('0x1b')](handleEntityNotFound(_0x47f18a,null))['then'](function(_0x211698){if(_0x211698){return _0x211698['setTags'](_0x39af78[_0xb487('0xbc')][_0xb487('0xbf')],_[_0xb487('0xc0')](_0x39af78['body'],['ids','id'])||{})[_0xb487('0xc6')](function(){return db[_0xb487('0x63')][_0xb487('0xc7')]({'attributes':['id','name',_0xb487('0x43')],'where':{'id':_0x39af78[_0xb487('0xbc')][_0xb487('0xbf')]}});})['then'](function(_0x157351){socket[_0xb487('0xc8')]('mailInteractionTags:save',{'id':Number(_0x39af78['params']['id']),'tags':_0x157351||[]});return{'id':Number(_0x39af78['params']['id']),'tags':_0x157351||[]};});}})[_0xb487('0x1b')](respondWithResult(_0x47f18a,null))[_0xb487('0x2d')](handleError(_0x47f18a,null));};exports['removeTags']=function(_0x1b4bc9,_0x56b216){return db[_0xb487('0x2f')][_0xb487('0x55')]({'where':{'id':_0x1b4bc9[_0xb487('0xb7')]['id']}})['then'](handleEntityNotFound(_0x56b216,null))[_0xb487('0x1b')](function(_0x686145){if(_0x686145){return _0x686145[_0xb487('0xc9')](_0x1b4bc9['query'][_0xb487('0xbf')]);}})[_0xb487('0x1b')](respondWithStatusCode(_0x56b216,null))['catch'](handleError(_0x56b216,null));};exports[_0xb487('0xca')]=function(_0x3410db,_0x167906){var _0x4ee7e6=moment()['unix']()[_0xb487('0x8e')]();var _0x2e18b0=path[_0xb487('0xcb')](config[_0xb487('0xcc')],_0xb487('0xcd'),_0xb487('0xce'),_0xb487('0xcf'));var _0x427de6=path[_0xb487('0xcb')](config['root'],_0xb487('0xcd'),'files','attachments');var _0x3c101a=path[_0xb487('0xcb')](_0x2e18b0,_0x4ee7e6);var _0x1f79c8=util['format'](_0xb487('0xd0'),_0x3410db['params']['id'],_0x4ee7e6);var _0xe8caca=path[_0xb487('0xcb')](_0x2e18b0,_0x1f79c8);var _0x49ee71=[];if(_0x3410db[_0xb487('0x36')]['attachments']){_0x49ee71[_0xb487('0x25')]({'model':db[_0xb487('0xd1')],'as':_0xb487('0xd2'),'raw':!![]});}var _0x41be14=[{'model':db[_0xb487('0x26')],'as':'Messages','attributes':['id','body',_0xb487('0x46'),'to','cc',_0xb487('0xd3'),_0xb487('0xd4'),_0xb487('0x6d')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x49ee71}];return db['MailInteraction'][_0xb487('0x55')]({'where':{'id':_0x3410db[_0xb487('0xb7')]['id']},'include':_0x41be14})['then'](handleEntityNotFound(_0x167906,null))[_0xb487('0x1b')](function(_0x226651){if(_0x226651&&_0x226651[_0xb487('0xd5')]){var _0x462777=_0x226651[_0xb487('0xd6')]({'plain':!![]});fs[_0xb487('0xd7')](_0x3c101a);return BPromise[_0xb487('0xd8')](_0x462777[_0xb487('0xd5')],function(_0x4c8098,_0x214c17){var _0x5d286b={'from':_0x4c8098[_0xb487('0x46')],'to':_0x4c8098['to'],'subject':_0x4c8098[_0xb487('0xd4')],'html':htmlEntities['decode'](_0x4c8098[_0xb487('0xbc')]),'headers':{'Date':moment(_0x4c8098[_0xb487('0x6d')])['format'](_0xb487('0xd9'))},'attachments':[]};if(_0x4c8098['cc']){_0x5d286b[_0xb487('0xda')]['Cc']=_0x4c8098['cc'];}if(_0x4c8098[_0xb487('0xd3')]){_0x5d286b[_0xb487('0xda')][_0xb487('0xdb')]=_0x4c8098['bcc'];}return new BPromise(function(_0x33ceda,_0x5c1147){if(_0x4c8098[_0xb487('0xd2')]){for(var _0x1d6465=0x0;_0x1d6465<_0x4c8098[_0xb487('0xd2')][_0xb487('0x3a')];_0x1d6465++){var _0x2bbb59=_0x4c8098[_0xb487('0xd2')][_0x1d6465];var _0x39774e=path[_0xb487('0xcb')](_0x427de6,_0x2bbb59[_0xb487('0xdc')]);if(fs['existsSync'](_0x39774e)){_0x5d286b[_0xb487('0xdd')][_0xb487('0x25')]({'name':_0x2bbb59[_0xb487('0x1e')],'contentType':_0x2bbb59[_0xb487('0x32')],'data':fs[_0xb487('0xde')](_0x39774e)});}}}emlformat[_0xb487('0xdf')](_0x5d286b,function(_0x3fc128,_0xf4d7d5){if(_0x3fc128)return _0x5c1147(_0x3fc128);fs[_0xb487('0xe0')](path['join'](_0x3c101a,util[_0xb487('0xe1')](_0xb487('0xe2'),_0x214c17)),_0xf4d7d5);return _0x33ceda(_0xf4d7d5);});});})[_0xb487('0x1b')](function(){return new BPromise(function(_0x2e16f0,_0x58bbfc){zipdir(_0x3c101a,{'saveTo':_0xe8caca},function(_0x252376,_0x531516){if(_0x252376)return _0x58bbfc(_0x252376);return _0x2e16f0(_0x531516);});})[_0xb487('0x1b')](function(){return new BPromise(function(_0x232506,_0x4d5235){rimraf(_0x3c101a,function(_0x5d3bea){if(_0x5d3bea)_0x4d5235(_0x5d3bea);return _0x232506();});});})[_0xb487('0x1b')](function(){return _0x167906['download'](_0xe8caca,_0x1f79c8,function(_0x32af15){if(!_0x32af15)fs[_0xb487('0xe3')](_0xe8caca);});});});}else{return _0x167906[_0xb487('0xf')](0xc8);}})[_0xb487('0x2d')](handleError(_0x167906,null));};
\ No newline at end of file
index bf6d481..46b3ef8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4487=['Users','map','findAll','then','length','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','MailInteraction','MailMessage','setMaxListeners','save','update','setDataValue'];(function(_0x491a7f,_0x28bb80){var _0x3d8f44=function(_0xdaa716){while(--_0xdaa716){_0x491a7f['push'](_0x491a7f['shift']());}};_0x3d8f44(++_0x28bb80);}(_0x4487,0x191));var _0x7448=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0x4487[_0x599f41];return _0x2e4d58;};'use strict';var EventEmitter=require('events');var MailInteraction=require(_0x7448('0x0'))['db'][_0x7448('0x1')];var MailMessage=require(_0x7448('0x0'))['db'][_0x7448('0x2')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x7448('0x3')](0x0);var events={'afterCreate':_0x7448('0x4'),'afterUpdate':_0x7448('0x5'),'afterDestroy':'remove'};function emitEvent(_0x4d10de){return function(_0x3c557e,_0x2c68bd,_0x22b2cb){_0x3c557e['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x1ac59c){_0x3c557e[_0x7448('0x6')](_0x7448('0x7'),_0x1ac59c[_0x7448('0x8')](function(_0x40b4f1){return{'id':_0x40b4f1['id']};}));return MailMessage[_0x7448('0x9')]({'where':{'MailInteractionId':_0x3c557e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x7448('0xa')](function(_0x24a936){_0x3c557e[_0x7448('0x6')]('unreadMessages',_0x24a936[_0x7448('0xb')]);MailInteractionEvents[_0x7448('0xc')](_0x4d10de+':'+_0x3c557e['id'],_0x3c557e);MailInteractionEvents[_0x7448('0xc')](_0x4d10de,_0x3c557e);_0x22b2cb(null);})[_0x7448('0xd')](_0x22b2cb(null));};}for(var e in events){if(events[_0x7448('0xe')](e)){var event=events[e];MailInteraction[_0x7448('0xf')](e,emitEvent(event));}}module[_0x7448('0x10')]=MailInteractionEvents;
\ No newline at end of file
+var _0x50b6=['length','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','MailMessage','save','update','getUsers','then','unreadMessages'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x50b6,0xaf));var _0x650b=function(_0x20f8af,_0x1e7547){_0x20f8af=_0x20f8af-0x0;var _0xbaff30=_0x50b6[_0x20f8af];return _0xbaff30;};'use strict';var EventEmitter=require('events');var MailInteraction=require('../../mysqldb')['db']['MailInteraction'];var MailMessage=require(_0x650b('0x0'))['db'][_0x650b('0x1')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x650b('0x2'),'afterUpdate':_0x650b('0x3'),'afterDestroy':'remove'};function emitEvent(_0x15fbd4){return function(_0x28841d,_0xdb5f4c,_0x327f2f){_0x28841d[_0x650b('0x4')]({'attributes':['id'],'raw':!![]})['then'](function(_0x21d8bf){_0x28841d['setDataValue']('Users',_0x21d8bf['map'](function(_0x221691){return{'id':_0x221691['id']};}));return MailMessage['findAll']({'where':{'MailInteractionId':_0x28841d['id'],'direction':'in','read':![]},'raw':!![]});})[_0x650b('0x5')](function(_0x1a9e15){_0x28841d['setDataValue'](_0x650b('0x6'),_0x1a9e15[_0x650b('0x7')]);MailInteractionEvents[_0x650b('0x8')](_0x15fbd4+':'+_0x28841d['id'],_0x28841d);MailInteractionEvents[_0x650b('0x8')](_0x15fbd4,_0x28841d);_0x327f2f(null);})[_0x650b('0x9')](_0x327f2f(null));};}for(var e in events){if(events[_0x650b('0xa')](e)){var event=events[e];MailInteraction[_0x650b('0xb')](e,emitEvent(event));}}module[_0x650b('0xc')]=MailInteractionEvents;
\ No newline at end of file
index 9e29bbd..1745ed9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1889=['MailMessage','update','then','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./mailInteraction.attributes','exports','define','MailInteraction','mail_interactions','fti_mail_interactions','subject','substatusAt','YYYY-MM-DD\x20HH:mm:ss','format','substatus','changed','closedAt','models'];(function(_0x145b93,_0x4cf77a){var _0x596ac2=function(_0x2c418d){while(--_0x2c418d){_0x145b93['push'](_0x145b93['shift']());}};_0x596ac2(++_0x4cf77a);}(_0x1889,0x17f));var _0x9188=function(_0x2aa5ea,_0x43c4bf){_0x2aa5ea=_0x2aa5ea-0x0;var _0x296d88=_0x1889[_0x2aa5ea];return _0x296d88;};'use strict';var _=require(_0x9188('0x0'));var util=require(_0x9188('0x1'));var logger=require(_0x9188('0x2'))('api');var moment=require('moment');var BPromise=require(_0x9188('0x3'));var rp=require(_0x9188('0x4'));var fs=require('fs');var path=require(_0x9188('0x5'));var rimraf=require(_0x9188('0x6'));var config=require(_0x9188('0x7'));var attributes=require(_0x9188('0x8'));module[_0x9188('0x9')]=function(_0x2d5a79,_0x21ee2b){return _0x2d5a79[_0x9188('0xa')](_0x9188('0xb'),attributes,{'tableName':_0x9188('0xc'),'paranoid':![],'indexes':[{'name':_0x9188('0xd'),'fields':[_0x9188('0xe'),'to'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2c935b,_0xa75441,_0x5c8803){if(_0x2c935b['substatus']){_0x2c935b[_0x9188('0xf')]=moment()['format'](_0x9188('0x10'));}if(_0x2c935b['closed']){_0x2c935b['closedAt']=moment()[_0x9188('0x11')](_0x9188('0x10'));}_0x5c8803(null,_0xa75441);},'beforeUpdate':function(_0x3209f0,_0x3f61c6,_0x3aa94c){if(_0x3209f0['changed'](_0x9188('0x12'))){_0x3209f0[_0x9188('0xf')]=_0x3209f0[_0x9188('0x12')]?moment()[_0x9188('0x11')](_0x9188('0x10')):null;}if(_0x3209f0[_0x9188('0x13')]('closed')){_0x3209f0[_0x9188('0x14')]=moment()[_0x9188('0x11')](_0x9188('0x10'));_0x3209f0[_0x9188('0x12')]=null;_0x3209f0[_0x9188('0xf')]=null;}_0x3aa94c(null,_0x3209f0);},'afterUpdate':function(_0x6d3d85,_0x224fed,_0x27b0e6){var _0x77dd20=_0x2d5a79[_0x9188('0x15')];var _0x206acc=_0x6d3d85['get']({'plain':!![]});if(_0x206acc['closed']){return _0x77dd20[_0x9188('0x16')][_0x9188('0x17')]({'read':!![]},{'where':{'MailInteractionId':_0x206acc['id']}})[_0x9188('0x18')](function(){_0x27b0e6();})['catch'](function(_0x118837){_0x27b0e6(_0x118837);});}else{_0x27b0e6();}}},'charset':_0x9188('0x19'),'collate':_0x9188('0x1a')});};
\ No newline at end of file
+var _0xa8e2=['../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','exports','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','format','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','changed','models','get','MailMessage','update','then','catch','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x20f556,_0x198fb3){var _0x963317=function(_0x3d663c){while(--_0x3d663c){_0x20f556['push'](_0x20f556['shift']());}};_0x963317(++_0x198fb3);}(_0xa8e2,0x81));var _0x2a8e=function(_0x420f39,_0x67e5fd){_0x420f39=_0x420f39-0x0;var _0xa4296a=_0xa8e2[_0x420f39];return _0xa4296a;};'use strict';var _=require(_0x2a8e('0x0'));var util=require('util');var logger=require(_0x2a8e('0x1'))('api');var moment=require(_0x2a8e('0x2'));var BPromise=require(_0x2a8e('0x3'));var rp=require(_0x2a8e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2a8e('0x5'));var config=require(_0x2a8e('0x6'));var attributes=require('./mailInteraction.attributes');module[_0x2a8e('0x7')]=function(_0x52077a,_0x134435){return _0x52077a['define']('MailInteraction',attributes,{'tableName':'mail_interactions','paranoid':![],'indexes':[{'name':_0x2a8e('0x8'),'fields':[_0x2a8e('0x9'),'to'],'type':_0x2a8e('0xa')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x42c1cb,_0x5f3150,_0x10964c){if(_0x42c1cb[_0x2a8e('0xb')]){_0x42c1cb[_0x2a8e('0xc')]=moment()[_0x2a8e('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x42c1cb[_0x2a8e('0xe')]){_0x42c1cb[_0x2a8e('0xf')]=moment()[_0x2a8e('0xd')](_0x2a8e('0x10'));}_0x10964c(null,_0x5f3150);},'beforeUpdate':function(_0x1ab889,_0x37cba7,_0x5208e3){if(_0x1ab889[_0x2a8e('0x11')](_0x2a8e('0xb'))){_0x1ab889[_0x2a8e('0xc')]=_0x1ab889[_0x2a8e('0xb')]?moment()['format'](_0x2a8e('0x10')):null;}if(_0x1ab889[_0x2a8e('0x11')](_0x2a8e('0xe'))){_0x1ab889[_0x2a8e('0xf')]=moment()[_0x2a8e('0xd')](_0x2a8e('0x10'));_0x1ab889[_0x2a8e('0xb')]=null;_0x1ab889[_0x2a8e('0xc')]=null;}_0x5208e3(null,_0x1ab889);},'afterUpdate':function(_0x3382ee,_0x883697,_0xf1a8f0){var _0x301619=_0x52077a[_0x2a8e('0x12')];var _0x3aa722=_0x3382ee[_0x2a8e('0x13')]({'plain':!![]});if(_0x3aa722[_0x2a8e('0xe')]){return _0x301619[_0x2a8e('0x14')][_0x2a8e('0x15')]({'read':!![]},{'where':{'MailInteractionId':_0x3aa722['id']}})[_0x2a8e('0x16')](function(){_0xf1a8f0();})[_0x2a8e('0x17')](function(_0x2c940b){_0xf1a8f0(_0x2c940b);});}else{_0xf1a8f0();}}},'charset':_0x2a8e('0x18'),'collate':_0x2a8e('0x19')});};
\ No newline at end of file
index a7f7453..d46c9a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa54c=['spread','AddTags','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','register','request','then','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','update','body','options','where','attributes','limit','UpdateMailInteraction','catch','AddTagsToMailInteraction','MailInteraction','find','addTags','ids'];(function(_0x4ac424,_0x554b5d){var _0xe1b890=function(_0x5e85c4){while(--_0x5e85c4){_0x4ac424['push'](_0x4ac424['shift']());}};_0xe1b890(++_0x554b5d);}(_0xa54c,0xcf));var _0xca54=function(_0x4953da,_0x5adaca){_0x4953da=_0x4953da-0x0;var _0x2d3780=_0xa54c[_0x4953da];return _0x2d3780;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xca54('0x0'));var BPromise=require(_0xca54('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xca54('0x2'));var db=require(_0xca54('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xca54('0x4'))(_0xca54('0x5'));var config=require(_0xca54('0x6'));var jayson=require(_0xca54('0x7'));var client=jayson[_0xca54('0x8')][_0xca54('0x9')]({'port':0x232a});config['redis']=_[_0xca54('0xa')](config[_0xca54('0xb')],{'host':_0xca54('0xc'),'port':0x18eb});var socket=require(_0xca54('0xd'))(new Redis(config[_0xca54('0xb')]));require('./mailInteraction.socket')[_0xca54('0xe')](socket);function respondWithRpcPromise(_0x5a781b,_0x78a356,_0x6a14b0){return new BPromise(function(_0x4b4a16,_0x775fb3){return client[_0xca54('0xf')](_0x5a781b,_0x6a14b0)[_0xca54('0x10')](function(_0x1a2591){logger['info'](_0xca54('0x11'),_0x78a356,_0xca54('0x12'));logger[_0xca54('0x13')](_0xca54('0x14'),_0x78a356,_0xca54('0x12'),JSON[_0xca54('0x15')](_0x1a2591));if(_0x1a2591[_0xca54('0x16')]){if(_0x1a2591[_0xca54('0x16')]['code']===0x1f4){logger['error'](_0xca54('0x11'),_0x78a356,_0x1a2591[_0xca54('0x16')][_0xca54('0x17')]);return _0x775fb3(_0x1a2591[_0xca54('0x16')][_0xca54('0x17')]);}logger[_0xca54('0x16')]('MailInteraction,\x20%s,\x20%s',_0x78a356,_0x1a2591[_0xca54('0x16')][_0xca54('0x17')]);return _0x4b4a16(_0x1a2591[_0xca54('0x16')][_0xca54('0x17')]);}else{logger[_0xca54('0x18')](_0xca54('0x11'),_0x78a356,_0xca54('0x12'));_0x4b4a16(_0x1a2591[_0xca54('0x19')][_0xca54('0x17')]);}})['catch'](function(_0x5726ec){logger['error'](_0xca54('0x11'),_0x78a356,_0x5726ec);_0x775fb3(_0x5726ec);});});}exports['UpdateMailInteraction']=function(_0x662d60){var _0x2d5078=this;return new Promise(function(_0x11ef8b,_0x544019){return db['MailInteraction'][_0xca54('0x1a')](_0x662d60[_0xca54('0x1b')],{'raw':_0x662d60['options']?_0x662d60[_0xca54('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x662d60['options']?_0x662d60[_0xca54('0x1c')][_0xca54('0x1d')]||null:null,'attributes':_0x662d60[_0xca54('0x1c')]?_0x662d60[_0xca54('0x1c')][_0xca54('0x1e')]||null:null,'limit':_0x662d60[_0xca54('0x1c')]?_0x662d60[_0xca54('0x1c')][_0xca54('0x1f')]||null:null})['then'](function(_0x10cd7e){logger['info'](_0xca54('0x20'),_0x662d60);logger['debug'](_0xca54('0x20'),_0x662d60,JSON[_0xca54('0x15')](_0x10cd7e));_0x11ef8b(_0x10cd7e);})[_0xca54('0x21')](function(_0x46e0d0){logger[_0xca54('0x16')](_0xca54('0x20'),_0x46e0d0[_0xca54('0x17')],_0x662d60);_0x544019(_0x2d5078['error'](0x1f4,_0x46e0d0['message']));});});};exports[_0xca54('0x22')]=function(_0x267681){return new Promise(function(_0x41377b,_0x5ccf80){return db[_0xca54('0x23')][_0xca54('0x24')]({'where':_0x267681['options']?_0x267681[_0xca54('0x1c')][_0xca54('0x1d')]||null:null})[_0xca54('0x10')](function(_0x2967d6){if(_0x2967d6){return _0x2967d6[_0xca54('0x25')](_0x267681[_0xca54('0x1b')][_0xca54('0x26')],_['omit'](_0x267681['body'],[_0xca54('0x26'),'id'])||{});}})[_0xca54('0x27')](function(_0x96ab4e){logger['info'](_0xca54('0x28'),_0x267681);logger[_0xca54('0x13')](_0xca54('0x28'),_0x267681,JSON[_0xca54('0x15')](_0x96ab4e));_0x41377b(_0x96ab4e);})[_0xca54('0x21')](function(_0x21aaae){logger['error'](_0xca54('0x28'),_0x21aaae[_0xca54('0x17')],_0x267681);_0x5ccf80(_this[_0xca54('0x16')](0x1f4,_0x21aaae[_0xca54('0x17')]));});});};
\ No newline at end of file
+var _0xe581=['ids','omit','spread','AddTags','debug','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','redis','defaults','socket.io-emitter','./mailInteraction.socket','request','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UpdateMailInteraction','MailInteraction','update','body','options','raw','attributes','limit','catch','AddTagsToMailInteraction','find','where','addTags'];(function(_0x2973b0,_0x2f1b53){var _0x1bc421=function(_0x3fcf51){while(--_0x3fcf51){_0x2973b0['push'](_0x2973b0['shift']());}};_0x1bc421(++_0x2f1b53);}(_0xe581,0x80));var _0x1e58=function(_0x51787e,_0x4176bf){_0x51787e=_0x51787e-0x0;var _0x2f19d0=_0xe581[_0x51787e];return _0x2f19d0;};'use strict';var _=require(_0x1e58('0x0'));var util=require(_0x1e58('0x1'));var moment=require('moment');var BPromise=require(_0x1e58('0x2'));var rs=require(_0x1e58('0x3'));var fs=require('fs');var Redis=require(_0x1e58('0x4'));var db=require(_0x1e58('0x5'))['db'];var utils=require(_0x1e58('0x6'));var logger=require(_0x1e58('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0x1e58('0x8')]=_[_0x1e58('0x9')](config[_0x1e58('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x1e58('0xa'))(new Redis(config[_0x1e58('0x8')]));require(_0x1e58('0xb'))['register'](socket);function respondWithRpcPromise(_0x1e90e5,_0x26d943,_0x16fda3){return new BPromise(function(_0x3ac4a1,_0x5f1815){return client[_0x1e58('0xc')](_0x1e90e5,_0x16fda3)[_0x1e58('0xd')](function(_0x31a320){logger[_0x1e58('0xe')](_0x1e58('0xf'),_0x26d943,_0x1e58('0x10'));logger['debug'](_0x1e58('0x11'),_0x26d943,_0x1e58('0x10'),JSON[_0x1e58('0x12')](_0x31a320));if(_0x31a320[_0x1e58('0x13')]){if(_0x31a320[_0x1e58('0x13')][_0x1e58('0x14')]===0x1f4){logger['error']('MailInteraction,\x20%s,\x20%s',_0x26d943,_0x31a320['error'][_0x1e58('0x15')]);return _0x5f1815(_0x31a320[_0x1e58('0x13')]['message']);}logger['error'](_0x1e58('0xf'),_0x26d943,_0x31a320['error'][_0x1e58('0x15')]);return _0x3ac4a1(_0x31a320[_0x1e58('0x13')]['message']);}else{logger[_0x1e58('0xe')](_0x1e58('0xf'),_0x26d943,_0x1e58('0x10'));_0x3ac4a1(_0x31a320[_0x1e58('0x16')][_0x1e58('0x15')]);}})['catch'](function(_0x248f51){logger[_0x1e58('0x13')](_0x1e58('0xf'),_0x26d943,_0x248f51);_0x5f1815(_0x248f51);});});}exports[_0x1e58('0x17')]=function(_0x155479){var _0x1260e4=this;return new Promise(function(_0x4fb3dd,_0x22ca8c){return db[_0x1e58('0x18')][_0x1e58('0x19')](_0x155479[_0x1e58('0x1a')],{'raw':_0x155479[_0x1e58('0x1b')]?_0x155479[_0x1e58('0x1b')][_0x1e58('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x155479[_0x1e58('0x1b')]?_0x155479[_0x1e58('0x1b')]['where']||null:null,'attributes':_0x155479[_0x1e58('0x1b')]?_0x155479[_0x1e58('0x1b')][_0x1e58('0x1d')]||null:null,'limit':_0x155479['options']?_0x155479[_0x1e58('0x1b')][_0x1e58('0x1e')]||null:null})[_0x1e58('0xd')](function(_0x4912e2){logger[_0x1e58('0xe')](_0x1e58('0x17'),_0x155479);logger['debug']('UpdateMailInteraction',_0x155479,JSON[_0x1e58('0x12')](_0x4912e2));_0x4fb3dd(_0x4912e2);})[_0x1e58('0x1f')](function(_0x662abe){logger[_0x1e58('0x13')](_0x1e58('0x17'),_0x662abe[_0x1e58('0x15')],_0x155479);_0x22ca8c(_0x1260e4['error'](0x1f4,_0x662abe[_0x1e58('0x15')]));});});};exports[_0x1e58('0x20')]=function(_0x1594e4){return new Promise(function(_0x442a36,_0x4cb076){return db[_0x1e58('0x18')][_0x1e58('0x21')]({'where':_0x1594e4[_0x1e58('0x1b')]?_0x1594e4[_0x1e58('0x1b')][_0x1e58('0x22')]||null:null})[_0x1e58('0xd')](function(_0x585750){if(_0x585750){return _0x585750[_0x1e58('0x23')](_0x1594e4[_0x1e58('0x1a')][_0x1e58('0x24')],_[_0x1e58('0x25')](_0x1594e4[_0x1e58('0x1a')],[_0x1e58('0x24'),'id'])||{});}})[_0x1e58('0x26')](function(_0x53a6a1){logger[_0x1e58('0xe')](_0x1e58('0x27'),_0x1594e4);logger[_0x1e58('0x28')](_0x1e58('0x27'),_0x1594e4,JSON['stringify'](_0x53a6a1));_0x442a36(_0x53a6a1);})[_0x1e58('0x1f')](function(_0x407eb3){logger['error']('AddTags',_0x407eb3[_0x1e58('0x15')],_0x1594e4);_0x4cb076(_this['error'](0x1f4,_0x407eb3[_0x1e58('0x15')]));});});};
\ No newline at end of file
index d62dd68..192c4ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x932e=['removeListener','length','mailInteraction:','save','update','emit'];(function(_0x41f727,_0x187f5c){var _0x36c8f9=function(_0x5e835b){while(--_0x5e835b){_0x41f727['push'](_0x41f727['shift']());}};_0x36c8f9(++_0x187f5c);}(_0x932e,0x1ad));var _0xe932=function(_0x26ccf9,_0x7274d6){_0x26ccf9=_0x26ccf9-0x0;var _0x294752=_0x932e[_0x26ccf9];return _0x294752;};'use strict';var MailInteractionEvents=require('./mailInteraction.events');var events=[_0xe932('0x0'),'remove',_0xe932('0x1')];function createListener(_0x55e51a,_0x5c0ae5){return function(_0x3d939a){_0x5c0ae5[_0xe932('0x2')](_0x55e51a,_0x3d939a);};}function removeListener(_0x167387,_0x533da3){return function(){MailInteractionEvents[_0xe932('0x3')](_0x167387,_0x533da3);};}exports['register']=function(_0x4fb6c5){for(var _0x51d449=0x0,_0x3e22d8=events[_0xe932('0x4')];_0x51d449<_0x3e22d8;_0x51d449++){var _0x10d5cc=events[_0x51d449];var _0x3393f1=createListener(_0xe932('0x5')+_0x10d5cc,_0x4fb6c5);MailInteractionEvents['on'](_0x10d5cc,_0x3393f1);}};
\ No newline at end of file
+var _0x76db=['emit','removeListener','register','length','mailInteraction:','./mailInteraction.events','save','remove','update'];(function(_0x51d7d6,_0x3aab41){var _0x1634f6=function(_0x4d4356){while(--_0x4d4356){_0x51d7d6['push'](_0x51d7d6['shift']());}};_0x1634f6(++_0x3aab41);}(_0x76db,0x16d));var _0xb76d=function(_0x3135c6,_0xcd49c8){_0x3135c6=_0x3135c6-0x0;var _0x46a85b=_0x76db[_0x3135c6];return _0x46a85b;};'use strict';var MailInteractionEvents=require(_0xb76d('0x0'));var events=[_0xb76d('0x1'),_0xb76d('0x2'),_0xb76d('0x3')];function createListener(_0x3352fe,_0x267fc0){return function(_0x40dbb0){_0x267fc0[_0xb76d('0x4')](_0x3352fe,_0x40dbb0);};}function removeListener(_0x50c5f0,_0xe437a2){return function(){MailInteractionEvents[_0xb76d('0x5')](_0x50c5f0,_0xe437a2);};}exports[_0xb76d('0x6')]=function(_0x4eee6f){for(var _0x349b64=0x0,_0x92e0b5=events[_0xb76d('0x7')];_0x349b64<_0x92e0b5;_0x349b64++){var _0x140400=events[_0x349b64];var _0x23a6af=createListener(_0xb76d('0x8')+_0x140400,_0x4eee6f);MailInteractionEvents['on'](_0x140400,_0x23a6af);}};
\ No newline at end of file
index 06e8238..9c98a07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a86=['tracked','mail','mailmessage:create','/:id','update','put','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','isAuthenticated','index','/describe','describe','show','/:id/download'];(function(_0x39e84d,_0x11931d){var _0x1991bc=function(_0xc81e32){while(--_0xc81e32){_0x39e84d['push'](_0x39e84d['shift']());}};_0x1991bc(++_0x11931d);}(_0x9a86,0x1ed));var _0x69a8=function(_0x35e92e,_0x21581b){_0x35e92e=_0x35e92e-0x0;var _0x1205a8=_0x9a86[_0x35e92e];return _0x1205a8;};'use strict';var multer=require(_0x69a8('0x0'));var util=require(_0x69a8('0x1'));var path=require('path');var timeout=require(_0x69a8('0x2'));var express=require(_0x69a8('0x3'));var router=express[_0x69a8('0x4')]();var fs_extra=require(_0x69a8('0x5'));var auth=require(_0x69a8('0x6'));var interaction=require(_0x69a8('0x7'));var config=require(_0x69a8('0x8'));var controller=require(_0x69a8('0x9'));router[_0x69a8('0xa')]('/',auth[_0x69a8('0xb')](),controller[_0x69a8('0xc')]);router[_0x69a8('0xa')](_0x69a8('0xd'),auth[_0x69a8('0xb')](),controller[_0x69a8('0xe')]);router[_0x69a8('0xa')]('/:id',auth[_0x69a8('0xb')](),controller[_0x69a8('0xf')]);router['get'](_0x69a8('0x10'),auth[_0x69a8('0xb')](),controller['download']);router['post']('/',auth[_0x69a8('0xb')](),interaction[_0x69a8('0x11')](_0x69a8('0x12'),_0x69a8('0x13')),controller['create']);router['put'](_0x69a8('0x14'),auth['isAuthenticated'](),controller[_0x69a8('0x15')]);router[_0x69a8('0x16')](_0x69a8('0x17'),auth[_0x69a8('0xb')](),controller[_0x69a8('0x18')]);router['put'](_0x69a8('0x19'),auth['isAuthenticated'](),controller[_0x69a8('0x1a')]);router[_0x69a8('0x1b')]('/:id',auth[_0x69a8('0xb')](),controller[_0x69a8('0x1c')]);module[_0x69a8('0x1d')]=router;
\ No newline at end of file
+var _0x39c4=['create','put','update','/:id/accept','/:id/reject','reject','delete','destroy','util','express','Router','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','download','post','tracked','mail','mailmessage:create'];(function(_0x1cb18a,_0x33167a){var _0x22442e=function(_0x46c611){while(--_0x46c611){_0x1cb18a['push'](_0x1cb18a['shift']());}};_0x22442e(++_0x33167a);}(_0x39c4,0x174));var _0x439c=function(_0x4337fd,_0xbe4964){_0x4337fd=_0x4337fd-0x0;var _0x2d7247=_0x39c4[_0x4337fd];return _0x2d7247;};'use strict';var multer=require('multer');var util=require(_0x439c('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x439c('0x1'));var router=express[_0x439c('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x439c('0x3'));var config=require(_0x439c('0x4'));var controller=require(_0x439c('0x5'));router[_0x439c('0x6')]('/',auth[_0x439c('0x7')](),controller[_0x439c('0x8')]);router[_0x439c('0x6')](_0x439c('0x9'),auth[_0x439c('0x7')](),controller[_0x439c('0xa')]);router[_0x439c('0x6')](_0x439c('0xb'),auth[_0x439c('0x7')](),controller[_0x439c('0xc')]);router[_0x439c('0x6')]('/:id/download',auth[_0x439c('0x7')](),controller[_0x439c('0xd')]);router[_0x439c('0xe')]('/',auth[_0x439c('0x7')](),interaction[_0x439c('0xf')](_0x439c('0x10'),_0x439c('0x11')),controller[_0x439c('0x12')]);router[_0x439c('0x13')](_0x439c('0xb'),auth[_0x439c('0x7')](),controller[_0x439c('0x14')]);router['put'](_0x439c('0x15'),auth['isAuthenticated'](),controller['accept']);router[_0x439c('0x13')](_0x439c('0x16'),auth[_0x439c('0x7')](),controller[_0x439c('0x17')]);router[_0x439c('0x18')]('/:id',auth['isAuthenticated'](),controller[_0x439c('0x19')]);module['exports']=router;
\ No newline at end of file
index 4c01944..774715c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf80a=['Email','Chat','sequelize','lodash','exports','TEXT','medium','BOOLEAN','ENUM','out','STRING','long','DATE'];(function(_0x8a7e38,_0x473a5d){var _0x228609=function(_0x5dcb5c){while(--_0x5dcb5c){_0x8a7e38['push'](_0x8a7e38['shift']());}};_0x228609(++_0x473a5d);}(_0xf80a,0x13a));var _0xaf80=function(_0x23eaa0,_0x410651){_0x23eaa0=_0x23eaa0-0x0;var _0x17f7db=_0xf80a[_0x23eaa0];return _0x17f7db;};'use strict';var Sequelize=require(_0xaf80('0x0'));var _=require(_0xaf80('0x1'));module[_0xaf80('0x2')]={'body':{'type':Sequelize['TEXT']('long'),'allowNull':![]},'plainBody':{'type':Sequelize[_0xaf80('0x3')](_0xaf80('0x4'))},'read':{'type':Sequelize[_0xaf80('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0xaf80('0x6')]('in','out'),'defaultValue':_0xaf80('0x7'),'allowNull':![]},'messageId':{'type':Sequelize[_0xaf80('0x8')](0x1fe)},'from':{'type':Sequelize[_0xaf80('0x8')]},'to':{'type':Sequelize['TEXT']('long')},'cc':{'type':Sequelize['TEXT']('long')},'bcc':{'type':Sequelize['TEXT'](_0xaf80('0x9'))},'subject':{'type':Sequelize[_0xaf80('0x3')]},'sentAt':{'type':Sequelize[_0xaf80('0xa')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0xaf80('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize[_0xaf80('0xa')]},'originTo':{'type':Sequelize[_0xaf80('0x3')]('long')},'originCc':{'type':Sequelize['TEXT'](_0xaf80('0x9'))},'originChannel':{'type':Sequelize[_0xaf80('0x6')](_0xaf80('0xb'),_0xaf80('0xc')),'defaultValue':_0xaf80('0xb'),'allowNull':![]}};
\ No newline at end of file
+var _0x5dd2=['BOOLEAN','ENUM','out','STRING','DATE','INTEGER','Email','Chat','sequelize','lodash','exports','TEXT','long'];(function(_0xc1589d,_0x4d7a38){var _0x23ad9a=function(_0x1e0992){while(--_0x1e0992){_0xc1589d['push'](_0xc1589d['shift']());}};_0x23ad9a(++_0x4d7a38);}(_0x5dd2,0x1b5));var _0x25dd=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0x5dd2[_0x255d5b];return _0x3e141a;};'use strict';var Sequelize=require(_0x25dd('0x0'));var _=require(_0x25dd('0x1'));module[_0x25dd('0x2')]={'body':{'type':Sequelize[_0x25dd('0x3')](_0x25dd('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x25dd('0x3')]('medium')},'read':{'type':Sequelize[_0x25dd('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0x25dd('0x6')]('in',_0x25dd('0x7')),'defaultValue':_0x25dd('0x7'),'allowNull':![]},'messageId':{'type':Sequelize[_0x25dd('0x8')](0x1fe)},'from':{'type':Sequelize[_0x25dd('0x8')]},'to':{'type':Sequelize[_0x25dd('0x3')](_0x25dd('0x4'))},'cc':{'type':Sequelize[_0x25dd('0x3')](_0x25dd('0x4'))},'bcc':{'type':Sequelize[_0x25dd('0x3')](_0x25dd('0x4'))},'subject':{'type':Sequelize[_0x25dd('0x3')]},'sentAt':{'type':Sequelize[_0x25dd('0x9')]},'attach':{'type':Sequelize[_0x25dd('0xa')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x25dd('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize['TEXT']('long')},'originCc':{'type':Sequelize[_0x25dd('0x3')](_0x25dd('0x4'))},'originChannel':{'type':Sequelize['ENUM'](_0x25dd('0xb'),_0x25dd('0xc')),'defaultValue':_0x25dd('0xb'),'allowNull':![]}};
\ No newline at end of file
index d875d5c..acccc55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ad3=['null','AcceptMessage','acceptMessage','ContactId','sequelize','Sequelize','QueryTypes','contact','email','internal','manual','SIP/%s','channel','motionChannel','event','fromString','EventManager','acceptmessage','reject','mail','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT','fullname','interface','rejectmessage','download','unix','server','files','tmp','message-%s.eml','from','bcc','createdAt','Attachment','Attachments','subject','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','existsSync','build','unlinkSync','eml-format','bluebird','util','lodash','ioredis','html-to-text','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','redis','html-entities','register','jayson/promise','client','http','request','debug','request\x20sent','stringify','error','code','MailMessage,\x20%s,\x20%s','message','info','result','catch','status','undefined','limit','count','offset','set','Content-Range','update','then','destroy','sendStatus','name','send','map','MailMessage','type','key','query','keys','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','body','describe','create','direction','out','secret','split','MailAccount','findOne','CmList','CmContact','updatedAt','DESC','Smtp','isNil','service','host','secure','auth','user','pass','attachments','join','root','basename','List','Contacts','ListId','List\x20not\x20found','SendMail','messageId','YYYY-MM-DD\x20HH:mm:ss','accept','read','readAt','format','UserId','agent','get','MailInteraction','MailInteractionId','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role'];(function(_0x503325,_0x24a407){var _0x452fff=function(_0x42bf26){while(--_0x42bf26){_0x503325['push'](_0x503325['shift']());}};_0x452fff(++_0x24a407);}(_0x5ad3,0xd0));var _0x35ad=function(_0x52085a,_0x3717ca){_0x52085a=_0x52085a-0x0;var _0x5afc1a=_0x5ad3[_0x52085a];return _0x5afc1a;};'use strict';var emlformat=require(_0x35ad('0x0'));var moment=require('moment');var BPromise=require(_0x35ad('0x1'));var util=require(_0x35ad('0x2'));var path=require('path');var fs=require('fs');var _=require(_0x35ad('0x3'));var Redis=require(_0x35ad('0x4'));var htmlToText=require(_0x35ad('0x5'));var qs=require('../../components/parsers/qs');var logger=require(_0x35ad('0x6'))(_0x35ad('0x7'));var interaction_log=require('../../config/logger')(_0x35ad('0x8'));var config=require(_0x35ad('0x9'));var db=require(_0x35ad('0xa'))['db'];config['redis']=_[_0x35ad('0xb')](config['redis'],{'host':_0x35ad('0xc'),'port':0x18eb});var socket=require(_0x35ad('0xd'))(new Redis(config[_0x35ad('0xe')]));var htmlEntities=require(_0x35ad('0xf'));require('./mailMessage.socket')[_0x35ad('0x10')](socket);var jayson=require(_0x35ad('0x11'));var client=jayson[_0x35ad('0x12')][_0x35ad('0x13')]({'port':0x232c});var client9003=jayson[_0x35ad('0x12')]['http']({'port':0x232b});var client9002=jayson[_0x35ad('0x12')][_0x35ad('0x13')]({'port':0x232a});function respondWithRpcPromise(_0x86f8ad,_0x2571b9,_0x1f2bc9,_0x4f2d0d){return new BPromise(function(_0x2946e0,_0x9d2892){var _0x41ce5b=_0x4f2d0d||client;return _0x41ce5b[_0x35ad('0x14')](_0x86f8ad,_0x1f2bc9)['then'](function(_0x18739f){logger['info']('MailMessage,\x20%s,\x20%s',_0x2571b9,'request\x20sent');logger[_0x35ad('0x15')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x2571b9,_0x35ad('0x16'),JSON[_0x35ad('0x17')](_0x18739f));if(_0x18739f[_0x35ad('0x18')]){if(_0x18739f['error'][_0x35ad('0x19')]===0x1f4){logger[_0x35ad('0x18')](_0x35ad('0x1a'),_0x2571b9,_0x18739f[_0x35ad('0x18')][_0x35ad('0x1b')]);return _0x9d2892(_0x18739f[_0x35ad('0x18')][_0x35ad('0x1b')]);}logger['error'](_0x35ad('0x1a'),_0x2571b9,_0x18739f[_0x35ad('0x18')]['message']);return _0x2946e0(_0x18739f[_0x35ad('0x18')]['message']);}else{logger[_0x35ad('0x1c')](_0x35ad('0x1a'),_0x2571b9,_0x35ad('0x16'));_0x2946e0(_0x18739f[_0x35ad('0x1d')][_0x35ad('0x1b')]);}})[_0x35ad('0x1e')](function(_0x144a2c){logger[_0x35ad('0x18')](_0x35ad('0x1a'),_0x2571b9,_0x144a2c);_0x9d2892(_0x144a2c);});});}function respondWithResult(_0x7c27e2,_0x27a964){_0x27a964=_0x27a964||0xc8;return function(_0x146439){if(_0x146439){return _0x7c27e2[_0x35ad('0x1f')](_0x27a964)['json'](_0x146439);}};}function respondWithFilteredResult(_0x56cc84,_0x414401){return function(_0x267ca7){if(_0x267ca7){var _0x46da4a=typeof _0x414401['offset']===_0x35ad('0x20')&&typeof _0x414401[_0x35ad('0x21')]==='undefined';var _0x44e041=_0x267ca7[_0x35ad('0x22')];var _0x184576=_0x46da4a?0x0:_0x414401[_0x35ad('0x23')];var _0x8636b9=_0x46da4a?_0x267ca7[_0x35ad('0x22')]:_0x414401[_0x35ad('0x23')]+_0x414401[_0x35ad('0x21')];var _0x734901;if(_0x8636b9>=_0x44e041){_0x8636b9=_0x44e041;_0x734901=0xc8;}else{_0x734901=0xce;}_0x56cc84['status'](_0x734901);return _0x56cc84[_0x35ad('0x24')](_0x35ad('0x25'),_0x184576+'-'+_0x8636b9+'/'+_0x44e041)['json'](_0x267ca7);}return null;};}function saveUpdates(_0x328de3){return function(_0x147d07){if(_0x147d07){return _0x147d07[_0x35ad('0x26')](_0x328de3)[_0x35ad('0x27')](function(_0x499765){return _0x499765;});}return null;};}function removeEntity(_0x250a0c){return function(_0x5f0be8){if(_0x5f0be8){return _0x5f0be8[_0x35ad('0x28')]()[_0x35ad('0x27')](function(){_0x250a0c[_0x35ad('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41a1f3){return function(_0xfc1e35){if(!_0xfc1e35){_0x41a1f3[_0x35ad('0x29')](0x194);}return _0xfc1e35;};}function handleError(_0x55afc2,_0x5cddfa){_0x5cddfa=_0x5cddfa||0x1f4;return function(_0x25f58d){logger['error'](_0x25f58d['stack']);if(_0x25f58d['name']){delete _0x25f58d[_0x35ad('0x2a')];}_0x55afc2[_0x35ad('0x1f')](_0x5cddfa)[_0x35ad('0x2b')](_0x25f58d);};}exports['index']=function(_0x2667ad,_0x2adb1a){var _0x594853={},_0x117270={},_0x2a48f9={'count':0x0,'rows':[]};var _0x291d66=_[_0x35ad('0x2c')](db[_0x35ad('0x2d')]['rawAttributes'],function(_0x4c498b){return{'name':_0x4c498b['fieldName'],'type':_0x4c498b[_0x35ad('0x2e')][_0x35ad('0x2f')]};});_0x117270['model']=_['map'](_0x291d66,_0x35ad('0x2a'));_0x117270[_0x35ad('0x30')]=_[_0x35ad('0x31')](_0x2667ad[_0x35ad('0x30')]);_0x117270[_0x35ad('0x32')]=_[_0x35ad('0x33')](_0x117270[_0x35ad('0x34')],_0x117270[_0x35ad('0x30')]);_0x594853['attributes']=_[_0x35ad('0x33')](_0x117270[_0x35ad('0x34')],qs[_0x35ad('0x35')](_0x2667ad[_0x35ad('0x30')][_0x35ad('0x35')]));_0x594853[_0x35ad('0x36')]=_0x594853[_0x35ad('0x36')][_0x35ad('0x37')]?_0x594853[_0x35ad('0x36')]:_0x117270[_0x35ad('0x34')];if(!_0x2667ad[_0x35ad('0x30')]['hasOwnProperty'](_0x35ad('0x38'))){_0x594853[_0x35ad('0x21')]=qs['limit'](_0x2667ad[_0x35ad('0x30')][_0x35ad('0x21')]);_0x594853[_0x35ad('0x23')]=qs['offset'](_0x2667ad['query'][_0x35ad('0x23')]);}_0x594853[_0x35ad('0x39')]=qs['sort'](_0x2667ad[_0x35ad('0x30')][_0x35ad('0x3a')]);_0x594853['where']=qs['filters'](_['pick'](_0x2667ad[_0x35ad('0x30')],_0x117270[_0x35ad('0x32')]),_0x291d66);if(_0x2667ad[_0x35ad('0x30')]['filter']){_0x594853[_0x35ad('0x3b')]=_[_0x35ad('0x3c')](_0x594853[_0x35ad('0x3b')],{'$or':_['map'](_0x291d66,function(_0x40e1aa){if(_0x40e1aa[_0x35ad('0x2e')]!==_0x35ad('0x3d')){var _0x294b8a={};_0x294b8a[_0x40e1aa['name']]={'$like':'%'+_0x2667ad['query'][_0x35ad('0x3e')]+'%'};return _0x294b8a;}})});}_0x594853=_[_0x35ad('0x3c')]({},_0x594853,_0x2667ad[_0x35ad('0x3f')]);var _0x3ca48b={'where':_0x594853[_0x35ad('0x3b')]};return db[_0x35ad('0x2d')][_0x35ad('0x22')](_0x3ca48b)[_0x35ad('0x27')](function(_0x39d060){_0x2a48f9['count']=_0x39d060;if(_0x2667ad[_0x35ad('0x30')][_0x35ad('0x40')]){_0x594853[_0x35ad('0x41')]=[{'all':!![]}];}return db[_0x35ad('0x2d')][_0x35ad('0x42')](_0x594853);})[_0x35ad('0x27')](function(_0x1c592d){_0x2a48f9[_0x35ad('0x43')]=_0x1c592d;return _0x2a48f9;})['then'](respondWithFilteredResult(_0x2adb1a,_0x594853))['catch'](handleError(_0x2adb1a,null));};exports[_0x35ad('0x44')]=function(_0x325376,_0x500342){var _0x248faa={'raw':!![],'where':{'id':_0x325376[_0x35ad('0x45')]['id']}},_0x469bd8={};_0x469bd8[_0x35ad('0x34')]=_[_0x35ad('0x31')](db[_0x35ad('0x2d')]['rawAttributes']);_0x469bd8['query']=_[_0x35ad('0x31')](_0x325376['query']);_0x469bd8['filters']=_[_0x35ad('0x33')](_0x469bd8[_0x35ad('0x34')],_0x469bd8[_0x35ad('0x30')]);_0x248faa[_0x35ad('0x36')]=_['intersection'](_0x469bd8[_0x35ad('0x34')],qs[_0x35ad('0x35')](_0x325376[_0x35ad('0x30')][_0x35ad('0x35')]));_0x248faa[_0x35ad('0x36')]=_0x248faa[_0x35ad('0x36')][_0x35ad('0x37')]?_0x248faa[_0x35ad('0x36')]:_0x469bd8[_0x35ad('0x34')];if(_0x325376[_0x35ad('0x30')]['includeAll']){_0x248faa[_0x35ad('0x41')]=[{'all':!![]}];}_0x248faa=_[_0x35ad('0x3c')]({},_0x248faa,_0x325376[_0x35ad('0x3f')]);return db[_0x35ad('0x2d')][_0x35ad('0x46')](_0x248faa)['then'](handleEntityNotFound(_0x500342,null))['then'](respondWithResult(_0x500342,null))[_0x35ad('0x1e')](handleError(_0x500342,null));};exports['update']=function(_0x5e6bad,_0x2a2e00){if(_0x5e6bad[_0x35ad('0x47')]['id']){delete _0x5e6bad[_0x35ad('0x47')]['id'];}return db[_0x35ad('0x2d')][_0x35ad('0x46')]({'where':{'id':_0x5e6bad['params']['id']}})[_0x35ad('0x27')](handleEntityNotFound(_0x2a2e00,null))['then'](saveUpdates(_0x5e6bad[_0x35ad('0x47')],null))[_0x35ad('0x27')](respondWithResult(_0x2a2e00,null))['catch'](handleError(_0x2a2e00,null));};exports[_0x35ad('0x28')]=function(_0x17c343,_0x429daa){return db['MailMessage'][_0x35ad('0x46')]({'where':{'id':_0x17c343[_0x35ad('0x45')]['id']}})[_0x35ad('0x27')](handleEntityNotFound(_0x429daa,null))['then'](removeEntity(_0x429daa,null))[_0x35ad('0x1e')](handleError(_0x429daa,null));};exports[_0x35ad('0x48')]=function(_0x3929d7,_0x1c7e58){return db[_0x35ad('0x2d')][_0x35ad('0x48')]()[_0x35ad('0x27')](respondWithResult(_0x1c7e58,null))[_0x35ad('0x1e')](handleError(_0x1c7e58,null));};exports[_0x35ad('0x49')]=function(_0x45e77e,_0x2ef53c){return db[_0x35ad('0x2d')][_0x35ad('0x49')](_0x45e77e[_0x35ad('0x47')])[_0x35ad('0x27')](function(_0x2723e9){if(_0x2723e9){if(_0x2723e9[_0x35ad('0x4a')]===_0x35ad('0x4b')&&!_0x2723e9[_0x35ad('0x4c')]){var _0x5de785,_0x549c02,_0x137f94;if(_0x45e77e[_0x35ad('0x47')]['to']){_0x549c02=_0x45e77e[_0x35ad('0x47')]['to'][_0x35ad('0x4d')](',')[0x0];}return db[_0x35ad('0x4e')][_0x35ad('0x4f')]({'where':{'id':_0x2723e9['MailAccountId']},'include':[{'model':db[_0x35ad('0x50')],'as':'List','include':[{'model':db[_0x35ad('0x51')],'as':'Contacts','where':{'email':_0x549c02},'limit':0x1,'order':[[_0x35ad('0x52'),_0x35ad('0x53')]]}]},{'model':db['MailServerOut'],'as':_0x35ad('0x54'),'raw':!![]}]})[_0x35ad('0x27')](function(_0x291353){_0x5de785=_0x291353;if(_0x5de785&&_0x5de785[_0x35ad('0x54')]){var _0xe4c3a1={'tls':{'rejectUnauthorized':![]}};if(_[_0x35ad('0x55')](_0x5de785['Smtp'][_0x35ad('0x56')])){_0xe4c3a1[_0x35ad('0x57')]=_0x5de785['Smtp'][_0x35ad('0x57')];_0xe4c3a1['port']=_0x5de785[_0x35ad('0x54')]['port'];_0xe4c3a1[_0x35ad('0x58')]=_0x5de785[_0x35ad('0x54')]['secure'];if(_0x5de785['Smtp']['authentication']){_0xe4c3a1[_0x35ad('0x59')]={'user':_0x5de785[_0x35ad('0x54')][_0x35ad('0x5a')],'pass':_0x5de785[_0x35ad('0x54')][_0x35ad('0x5b')]};}}else{_0xe4c3a1[_0x35ad('0x56')]=_0x5de785[_0x35ad('0x54')]['service'];_0xe4c3a1[_0x35ad('0x59')]={'user':_0x5de785[_0x35ad('0x54')][_0x35ad('0x5a')],'pass':_0x5de785[_0x35ad('0x54')]['pass']};_0xe4c3a1[_0x35ad('0x58')]=_0x5de785[_0x35ad('0x54')]['secure'];}if(_0x45e77e[_0x35ad('0x47')][_0x35ad('0x5c')]&&_0x45e77e['body'][_0x35ad('0x5c')]['length']){for(var _0x5be753=0x0;_0x5be753<_0x45e77e[_0x35ad('0x47')][_0x35ad('0x5c')][_0x35ad('0x37')];_0x5be753+=0x1){_0x45e77e[_0x35ad('0x47')][_0x35ad('0x5c')][_0x5be753]={'filename':_0x45e77e[_0x35ad('0x47')][_0x35ad('0x5c')][_0x5be753][_0x35ad('0x2a')],'path':path[_0x35ad('0x5d')](config[_0x35ad('0x5e')],'server/files/attachments',_0x45e77e[_0x35ad('0x47')][_0x35ad('0x5c')][_0x5be753][_0x35ad('0x5f')])};}}_0x137f94={'account':_0xe4c3a1,'message':_0x45e77e[_0x35ad('0x47')]};return;}})[_0x35ad('0x27')](function(){if(_0x5de785[_0x35ad('0x60')]){if(_0x5de785[_0x35ad('0x60')][_0x35ad('0x61')][_0x35ad('0x37')]){return _0x5de785['List'][_0x35ad('0x61')][0x0];}else{return db[_0x35ad('0x51')][_0x35ad('0x49')](_[_0x35ad('0xb')](_0x45e77e['body'],{'firstName':_0x45e77e[_0x35ad('0x47')]['to'],'email':_0x45e77e[_0x35ad('0x47')]['to'],'phone':_0x45e77e[_0x35ad('0x47')]['to'],'ListId':_0x5de785[_0x35ad('0x62')]}));}}else{throw new Error(_0x35ad('0x63'));}})[_0x35ad('0x27')](function(){if(_0x137f94){return respondWithRpcPromise(_0x35ad('0x64'),'sendMail',_0x137f94,client9003)[_0x35ad('0x27')](function(_0xd4e697){return _0x2723e9[_0x35ad('0x26')]({'read':!![],'messageId':_0xd4e697[_0x35ad('0x65')],'sentAt':moment()['format'](_0x35ad('0x66'))});})[_0x35ad('0x1e')](function(_0x58c417){logger[_0x35ad('0x18')]('%s',JSON[_0x35ad('0x17')](_0x58c417));return _0x2723e9;});}return _0x2723e9;});}return _0x2723e9;}})['then'](respondWithResult(_0x2ef53c,0xc9))[_0x35ad('0x1e')](handleError(_0x2ef53c,null));};exports[_0x35ad('0x67')]=function(_0x233b2e,_0x3ba51e){var _0x57b860={'agent':{},'channel':'mail'};if(_0x233b2e[_0x35ad('0x47')]['id']){delete _0x233b2e['body']['id'];}_0x233b2e[_0x35ad('0x47')][_0x35ad('0x68')]=!![];_0x233b2e[_0x35ad('0x47')][_0x35ad('0x69')]=moment()[_0x35ad('0x6a')](_0x35ad('0x66'));_0x233b2e[_0x35ad('0x47')][_0x35ad('0x6b')]=_0x233b2e['body'][_0x35ad('0x6b')]||_0x233b2e['user']['id'];_0x57b860[_0x35ad('0x6c')]['id']=_0x233b2e[_0x35ad('0x47')][_0x35ad('0x6b')];return db['MailMessage'][_0x35ad('0x46')]({'where':{'id':_0x233b2e['params']['id'],'UserId':null}})[_0x35ad('0x27')](handleEntityNotFound(_0x3ba51e,null))[_0x35ad('0x27')](saveUpdates(_0x233b2e[_0x35ad('0x47')],null))[_0x35ad('0x27')](function(_0x3c62bc){if(_0x3c62bc){_0x57b860[_0x35ad('0x1b')]=_0x3c62bc[_0x35ad('0x6d')]({'plain':!![]});return db[_0x35ad('0x6e')][_0x35ad('0x46')]({'where':{'id':_0x3c62bc[_0x35ad('0x6f')]}});}return null;})[_0x35ad('0x27')](handleEntityNotFound(_0x3ba51e,null))['then'](function(_0x2cab88){if(_0x2cab88){return _0x2cab88[_0x35ad('0x26')]({'UserId':_0x233b2e['body'][_0x35ad('0x6b')],'read1stAt':_[_0x35ad('0x55')](_0x2cab88[_0x35ad('0x70')])?moment()[_0x35ad('0x6a')](_0x35ad('0x66')):undefined});}return null;})[_0x35ad('0x27')](function(_0x2483a8){if(_0x2483a8){_0x57b860[_0x35ad('0x71')]=_0x2483a8[_0x35ad('0x6d')]({'plain':!![]});interaction_log[_0x35ad('0x1c')](_0x35ad('0x72'),_0x233b2e[_0x35ad('0x5a')]['id'],_0x233b2e[_0x35ad('0x5a')][_0x35ad('0x2a')],_0x233b2e['user'][_0x35ad('0x73')],_0x57b860['interaction']['id'],_0x233b2e['body']?JSON[_0x35ad('0x17')](_0x233b2e['body']):_0x35ad('0x74'));return respondWithRpcPromise(_0x35ad('0x75'),_0x35ad('0x76'),_0x57b860);}return null;})['then'](function(_0x233773){var _0x10e286='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x233773[_0x35ad('0x1b')][_0x35ad('0x77')];return db[_0x35ad('0x78')][_0x35ad('0x30')](_0x10e286,{'type':db[_0x35ad('0x79')][_0x35ad('0x7a')]['SELECT'],'raw':!![]})[_0x35ad('0x27')](function(_0x238822){return _0x238822;});})[_0x35ad('0x27')](function(_0x257c1d){if(_0x257c1d){_0x57b860[_0x35ad('0x1b')][_0x35ad('0x7b')]=_0x257c1d[0x0];if(!_0x233b2e[_0x35ad('0x47')][_0x35ad('0x6b')])return;return db['User'][_0x35ad('0x46')]({'where':{'id':_0x233b2e[_0x35ad('0x47')][_0x35ad('0x6b')],'role':'agent'},'attributes':['id','name','fullname',_0x35ad('0x7c'),_0x35ad('0x7d')],'raw':!![]});}return null;})['then'](function(_0x3b6996){if(!_0x3b6996)return null;_0x57b860[_0x35ad('0x1b')][_0x35ad('0x6c')]=_0x3b6996;return _0x57b860;})['then'](function(_0x1673e8){if(_0x1673e8){if(_0x233b2e[_0x35ad('0x47')][_0x35ad('0x7e')]){_0x57b860[_0x35ad('0x1b')]['interface']=util[_0x35ad('0x6a')](_0x35ad('0x7f'),_0x233b2e[_0x35ad('0x5a')][_0x35ad('0x2a')]);_0x57b860[_0x35ad('0x1b')]['channel']=_0x57b860[_0x35ad('0x80')];_0x57b860[_0x35ad('0x1b')][_0x35ad('0x81')]=_0x57b860[_0x35ad('0x80')];_0x57b860[_0x35ad('0x1b')][_0x35ad('0x82')]=_0x35ad('0x67');_0x57b860[_0x35ad('0x1b')][_0x35ad('0x47')]=htmlToText[_0x35ad('0x83')](_0x57b860['message']['body']);return respondWithRpcPromise(_0x35ad('0x84'),_0x35ad('0x84'),{'event':_0x35ad('0x85'),'message':_0x57b860[_0x35ad('0x1b')]},client9002)[_0x35ad('0x27')](function(){return _0x57b860;});}return _0x57b860;}return null;})[_0x35ad('0x27')](respondWithResult(_0x3ba51e,null))['catch'](handleError(_0x3ba51e,null));};exports[_0x35ad('0x86')]=function(_0xec7822,_0xb5aef2){var _0x15ae41={'agent':{},'channel':_0x35ad('0x87')};if(_0xec7822[_0x35ad('0x47')]['id']){delete _0xec7822[_0x35ad('0x47')]['id'];}_0xec7822['body'][_0x35ad('0x6b')]=_0xec7822['body'][_0x35ad('0x6b')]||_0xec7822['user']['id'];_0x15ae41[_0x35ad('0x6c')]['id']=_0xec7822[_0x35ad('0x47')][_0x35ad('0x6b')];return db[_0x35ad('0x2d')]['find']({'where':{'id':_0xec7822[_0x35ad('0x45')]['id'],'UserId':null}})[_0x35ad('0x27')](handleEntityNotFound(_0xb5aef2,null))[_0x35ad('0x27')](function(_0x4707cb){if(_0x4707cb){_0x15ae41[_0x35ad('0x1b')]=_0x4707cb['get']({'plain':!![]});return db[_0x35ad('0x6e')]['find']({'where':{'id':_0x4707cb[_0x35ad('0x6f')]}});}return null;})[_0x35ad('0x27')](handleEntityNotFound(_0xb5aef2,null))[_0x35ad('0x27')](function(_0x4583fc){if(_0x4583fc){_0x15ae41[_0x35ad('0x71')]=_0x4583fc[_0x35ad('0x6d')]({'plain':!![]});interaction_log[_0x35ad('0x1c')](_0x35ad('0x88'),_0xec7822['user']['id'],_0xec7822[_0x35ad('0x5a')][_0x35ad('0x2a')],_0xec7822[_0x35ad('0x5a')][_0x35ad('0x73')],_0x15ae41[_0x35ad('0x71')]['id'],_0xec7822[_0x35ad('0x47')]?JSON[_0x35ad('0x17')](_0xec7822[_0x35ad('0x47')]):'null');return respondWithRpcPromise(_0x35ad('0x89'),_0x35ad('0x8a'),_0x15ae41);}return null;})['then'](function(_0x4fd929){var _0x550f10='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4fd929[_0x35ad('0x1b')][_0x35ad('0x77')];return db[_0x35ad('0x78')]['query'](_0x550f10,{'type':db['Sequelize'][_0x35ad('0x7a')][_0x35ad('0x8b')],'raw':!![]})[_0x35ad('0x27')](function(_0x644ede){return _0x644ede;});})['then'](function(_0x4487c5){if(_0x4487c5){_0x15ae41['message'][_0x35ad('0x7b')]=_0x4487c5[0x0];if(!_0xec7822['body'][_0x35ad('0x6b')])return;return db['User'][_0x35ad('0x46')]({'where':{'id':_0xec7822[_0x35ad('0x47')]['UserId'],'role':_0x35ad('0x6c')},'attributes':['id','name',_0x35ad('0x8c'),_0x35ad('0x7c'),_0x35ad('0x7d')],'raw':!![]});}return null;})[_0x35ad('0x27')](function(_0x207e3a){if(!_0x207e3a)return null;_0x15ae41[_0x35ad('0x1b')]['agent']=_0x207e3a;return _0x15ae41;})['then'](function(_0x15786f){if(_0x15786f){_0x15786f[_0x35ad('0x1b')][_0x35ad('0x8d')]=util['format'](_0x35ad('0x7f'),_0xec7822['user']['name']);_0x15786f[_0x35ad('0x1b')][_0x35ad('0x80')]=_0x15ae41[_0x35ad('0x80')];_0x15786f[_0x35ad('0x1b')][_0x35ad('0x81')]=_0x15ae41[_0x35ad('0x80')];_0x15786f[_0x35ad('0x1b')][_0x35ad('0x82')]=_0x35ad('0x86');_0x15786f['message'][_0x35ad('0x47')]=htmlToText[_0x35ad('0x83')](_0x15ae41['message']['body']);respondWithRpcPromise(_0x35ad('0x84'),_0x35ad('0x84'),{'event':_0x35ad('0x8e'),'message':_0x15786f['message']},client9002);return _0x15ae41;}return null;})[_0x35ad('0x27')](respondWithResult(_0xb5aef2,null))[_0x35ad('0x1e')](handleError(_0xb5aef2,null));};exports[_0x35ad('0x8f')]=function(_0x17a934,_0x497433){var _0x5298b5=moment()[_0x35ad('0x90')]()['toString']();var _0x400b48=path[_0x35ad('0x5d')](config[_0x35ad('0x5e')],_0x35ad('0x91'),_0x35ad('0x92'),_0x35ad('0x93'));var _0x34cdda=path[_0x35ad('0x5d')](config[_0x35ad('0x5e')],'server','files',_0x35ad('0x5c'));var _0x182974=util[_0x35ad('0x6a')](_0x35ad('0x94'),_0x5298b5);return db[_0x35ad('0x2d')][_0x35ad('0x46')]({'where':{'id':_0x17a934[_0x35ad('0x45')]['id']},'attributes':['id',_0x35ad('0x47'),_0x35ad('0x95'),'to','cc',_0x35ad('0x96'),'subject',_0x35ad('0x97')],'include':_0x17a934[_0x35ad('0x30')][_0x35ad('0x5c')]?[{'model':db[_0x35ad('0x98')],'as':_0x35ad('0x99')}]:undefined})[_0x35ad('0x27')](handleEntityNotFound(_0x497433,null))[_0x35ad('0x27')](function(_0x27ba72){if(_0x27ba72){var _0x1e885f=_0x27ba72;var _0x144533={'from':_0x1e885f[_0x35ad('0x95')],'to':_0x1e885f['to'],'subject':_0x1e885f[_0x35ad('0x9a')],'html':htmlEntities[_0x35ad('0x9b')](_0x1e885f[_0x35ad('0x47')]),'headers':{'Date':moment(_0x1e885f[_0x35ad('0x97')])[_0x35ad('0x6a')](_0x35ad('0x9c'))},'attachments':[]};if(_0x27ba72['cc']){_0x144533[_0x35ad('0x9d')]['Cc']=_0x27ba72['cc'];}if(_0x27ba72[_0x35ad('0x96')]){_0x144533[_0x35ad('0x9d')][_0x35ad('0x9e')]=_0x27ba72['bcc'];}return new BPromise(function(_0x5bff62,_0x594d76){if(_0x27ba72[_0x35ad('0x99')]){for(var _0x2b500b=0x0;_0x2b500b<_0x27ba72[_0x35ad('0x99')][_0x35ad('0x37')];_0x2b500b++){var _0x5f04a6=_0x27ba72['Attachments'][_0x2b500b];var _0x5c9f15=path['join'](_0x34cdda,_0x5f04a6[_0x35ad('0x5f')]);if(fs[_0x35ad('0x9f')](_0x5c9f15)){_0x144533[_0x35ad('0x5c')]['push']({'name':_0x5f04a6[_0x35ad('0x2a')],'contentType':_0x5f04a6[_0x35ad('0x2e')],'data':fs['readFileSync'](_0x5c9f15)});}}}emlformat[_0x35ad('0xa0')](_0x144533,function(_0x318792,_0x335ccb){if(_0x318792)return _0x594d76(_0x318792);fs['writeFileSync'](path['join'](_0x400b48,_0x182974),_0x335ccb);return _0x5bff62(_0x335ccb);});});}})[_0x35ad('0x27')](function(_0x384d8e){if(_0x384d8e){return _0x497433[_0x35ad('0x8f')](path['join'](_0x400b48,_0x182974),_0x182974,function(_0x1795b4){if(!_0x1795b4)fs[_0x35ad('0xa1')](path[_0x35ad('0x5d')](_0x400b48,_0x182974));});}})[_0x35ad('0x1e')](handleError(_0x497433,null));};
\ No newline at end of file
+var _0x77a1=['hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params','body','find','describe','create','direction','out','secret','split','MailAccount','MailAccountId','CmList','List','CmContact','Contacts','DESC','MailServerOut','Smtp','isNil','service','host','secure','authentication','user','pass','auth','attachments','join','root','server/files/attachments','basename','ListId','List\x20not\x20found','sendMail','format','YYYY-MM-DD\x20HH:mm:ss','accept','mail','read','readAt','UserId','agent','get','MailInteraction','MailInteractionId','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','SIP/%s','channel','event','fromString','EventManager','acceptmessage','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','motionChannel','reject','download','unix','toString','server','tmp','files','message-%s.eml','from','bcc','subject','createdAt','Attachments','decode','headers','existsSync','push','readFileSync','eml-format','bluebird','util','path','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','html-entities','./mailMessage.socket','register','jayson/promise','client','http','request','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','code','MailMessage,\x20%s,\x20%s','error','message','info','result','catch','status','json','offset','undefined','limit','count','Content-Range','update','then','destroy','end','sendStatus','name','index','map','MailMessage','rawAttributes','key','model','query','keys','filters','attributes','intersection','fields','length'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x77a1,0x1b3));var _0x177a=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x77a1[_0x21a9d9];return _0x46adce;};'use strict';var emlformat=require(_0x177a('0x0'));var moment=require('moment');var BPromise=require(_0x177a('0x1'));var util=require(_0x177a('0x2'));var path=require(_0x177a('0x3'));var fs=require('fs');var _=require(_0x177a('0x4'));var Redis=require(_0x177a('0x5'));var htmlToText=require(_0x177a('0x6'));var qs=require(_0x177a('0x7'));var logger=require(_0x177a('0x8'))(_0x177a('0x9'));var interaction_log=require(_0x177a('0x8'))(_0x177a('0xa'));var config=require(_0x177a('0xb'));var db=require(_0x177a('0xc'))['db'];config['redis']=_[_0x177a('0xd')](config[_0x177a('0xe')],{'host':_0x177a('0xf'),'port':0x18eb});var socket=require(_0x177a('0x10'))(new Redis(config[_0x177a('0xe')]));var htmlEntities=require(_0x177a('0x11'));require(_0x177a('0x12'))[_0x177a('0x13')](socket);var jayson=require(_0x177a('0x14'));var client=jayson[_0x177a('0x15')]['http']({'port':0x232c});var client9003=jayson['client']['http']({'port':0x232b});var client9002=jayson[_0x177a('0x15')][_0x177a('0x16')]({'port':0x232a});function respondWithRpcPromise(_0x1b88bc,_0x298c20,_0x3acec6,_0x1c60f9){return new BPromise(function(_0x50e92a,_0x2d5dcf){var _0x527208=_0x1c60f9||client;return _0x527208[_0x177a('0x17')](_0x1b88bc,_0x3acec6)['then'](function(_0xd9cd83){logger['info']('MailMessage,\x20%s,\x20%s',_0x298c20,_0x177a('0x18'));logger[_0x177a('0x19')](_0x177a('0x1a'),_0x298c20,_0x177a('0x18'),JSON['stringify'](_0xd9cd83));if(_0xd9cd83['error']){if(_0xd9cd83['error'][_0x177a('0x1b')]===0x1f4){logger['error'](_0x177a('0x1c'),_0x298c20,_0xd9cd83[_0x177a('0x1d')][_0x177a('0x1e')]);return _0x2d5dcf(_0xd9cd83[_0x177a('0x1d')]['message']);}logger[_0x177a('0x1d')](_0x177a('0x1c'),_0x298c20,_0xd9cd83[_0x177a('0x1d')][_0x177a('0x1e')]);return _0x50e92a(_0xd9cd83[_0x177a('0x1d')]['message']);}else{logger[_0x177a('0x1f')](_0x177a('0x1c'),_0x298c20,_0x177a('0x18'));_0x50e92a(_0xd9cd83[_0x177a('0x20')][_0x177a('0x1e')]);}})[_0x177a('0x21')](function(_0x3063b2){logger[_0x177a('0x1d')](_0x177a('0x1c'),_0x298c20,_0x3063b2);_0x2d5dcf(_0x3063b2);});});}function respondWithResult(_0x50d3f1,_0x35b2dc){_0x35b2dc=_0x35b2dc||0xc8;return function(_0x4d3df6){if(_0x4d3df6){return _0x50d3f1[_0x177a('0x22')](_0x35b2dc)[_0x177a('0x23')](_0x4d3df6);}};}function respondWithFilteredResult(_0x517f1d,_0x3fe527){return function(_0x3a3af8){if(_0x3a3af8){var _0x2a60d1=typeof _0x3fe527[_0x177a('0x24')]===_0x177a('0x25')&&typeof _0x3fe527[_0x177a('0x26')]===_0x177a('0x25');var _0x29a50d=_0x3a3af8['count'];var _0xf63c51=_0x2a60d1?0x0:_0x3fe527[_0x177a('0x24')];var _0x506489=_0x2a60d1?_0x3a3af8[_0x177a('0x27')]:_0x3fe527[_0x177a('0x24')]+_0x3fe527['limit'];var _0x239aea;if(_0x506489>=_0x29a50d){_0x506489=_0x29a50d;_0x239aea=0xc8;}else{_0x239aea=0xce;}_0x517f1d[_0x177a('0x22')](_0x239aea);return _0x517f1d['set'](_0x177a('0x28'),_0xf63c51+'-'+_0x506489+'/'+_0x29a50d)[_0x177a('0x23')](_0x3a3af8);}return null;};}function saveUpdates(_0x35b5f0){return function(_0x2ad264){if(_0x2ad264){return _0x2ad264[_0x177a('0x29')](_0x35b5f0)[_0x177a('0x2a')](function(_0x2ab1aa){return _0x2ab1aa;});}return null;};}function removeEntity(_0x48db8c){return function(_0x510d76){if(_0x510d76){return _0x510d76[_0x177a('0x2b')]()[_0x177a('0x2a')](function(){_0x48db8c['status'](0xcc)[_0x177a('0x2c')]();});}};}function handleEntityNotFound(_0x333c1e){return function(_0x4f1517){if(!_0x4f1517){_0x333c1e[_0x177a('0x2d')](0x194);}return _0x4f1517;};}function handleError(_0x5963a2,_0x4f888a){_0x4f888a=_0x4f888a||0x1f4;return function(_0x454ccb){logger['error'](_0x454ccb['stack']);if(_0x454ccb[_0x177a('0x2e')]){delete _0x454ccb['name'];}_0x5963a2[_0x177a('0x22')](_0x4f888a)['send'](_0x454ccb);};}exports[_0x177a('0x2f')]=function(_0x1ddc43,_0x192fa7){var _0x205582={},_0x319125={},_0x40dec1={'count':0x0,'rows':[]};var _0x2ace2e=_[_0x177a('0x30')](db[_0x177a('0x31')][_0x177a('0x32')],function(_0x307cf6){return{'name':_0x307cf6['fieldName'],'type':_0x307cf6['type'][_0x177a('0x33')]};});_0x319125[_0x177a('0x34')]=_[_0x177a('0x30')](_0x2ace2e,'name');_0x319125[_0x177a('0x35')]=_[_0x177a('0x36')](_0x1ddc43[_0x177a('0x35')]);_0x319125[_0x177a('0x37')]=_['intersection'](_0x319125['model'],_0x319125[_0x177a('0x35')]);_0x205582[_0x177a('0x38')]=_[_0x177a('0x39')](_0x319125[_0x177a('0x34')],qs[_0x177a('0x3a')](_0x1ddc43['query'][_0x177a('0x3a')]));_0x205582[_0x177a('0x38')]=_0x205582[_0x177a('0x38')][_0x177a('0x3b')]?_0x205582['attributes']:_0x319125[_0x177a('0x34')];if(!_0x1ddc43['query'][_0x177a('0x3c')](_0x177a('0x3d'))){_0x205582[_0x177a('0x26')]=qs[_0x177a('0x26')](_0x1ddc43[_0x177a('0x35')][_0x177a('0x26')]);_0x205582['offset']=qs[_0x177a('0x24')](_0x1ddc43['query'][_0x177a('0x24')]);}_0x205582['order']=qs[_0x177a('0x3e')](_0x1ddc43[_0x177a('0x35')][_0x177a('0x3e')]);_0x205582[_0x177a('0x3f')]=qs[_0x177a('0x37')](_[_0x177a('0x40')](_0x1ddc43[_0x177a('0x35')],_0x319125[_0x177a('0x37')]),_0x2ace2e);if(_0x1ddc43['query'][_0x177a('0x41')]){_0x205582[_0x177a('0x3f')]=_[_0x177a('0x42')](_0x205582[_0x177a('0x3f')],{'$or':_[_0x177a('0x30')](_0x2ace2e,function(_0x13fee7){if(_0x13fee7[_0x177a('0x43')]!==_0x177a('0x44')){var _0x2c9471={};_0x2c9471[_0x13fee7[_0x177a('0x2e')]]={'$like':'%'+_0x1ddc43[_0x177a('0x35')][_0x177a('0x41')]+'%'};return _0x2c9471;}})});}_0x205582=_[_0x177a('0x42')]({},_0x205582,_0x1ddc43[_0x177a('0x45')]);var _0x2e766c={'where':_0x205582['where']};return db[_0x177a('0x31')]['count'](_0x2e766c)[_0x177a('0x2a')](function(_0x50bf94){_0x40dec1[_0x177a('0x27')]=_0x50bf94;if(_0x1ddc43[_0x177a('0x35')][_0x177a('0x46')]){_0x205582[_0x177a('0x47')]=[{'all':!![]}];}return db[_0x177a('0x31')][_0x177a('0x48')](_0x205582);})[_0x177a('0x2a')](function(_0x4d1f29){_0x40dec1[_0x177a('0x49')]=_0x4d1f29;return _0x40dec1;})[_0x177a('0x2a')](respondWithFilteredResult(_0x192fa7,_0x205582))[_0x177a('0x21')](handleError(_0x192fa7,null));};exports[_0x177a('0x4a')]=function(_0x1586c5,_0xd9dc34){var _0x2bb008={'raw':!![],'where':{'id':_0x1586c5[_0x177a('0x4b')]['id']}},_0x9cc33f={};_0x9cc33f[_0x177a('0x34')]=_['keys'](db[_0x177a('0x31')]['rawAttributes']);_0x9cc33f[_0x177a('0x35')]=_['keys'](_0x1586c5[_0x177a('0x35')]);_0x9cc33f[_0x177a('0x37')]=_[_0x177a('0x39')](_0x9cc33f[_0x177a('0x34')],_0x9cc33f[_0x177a('0x35')]);_0x2bb008['attributes']=_['intersection'](_0x9cc33f[_0x177a('0x34')],qs[_0x177a('0x3a')](_0x1586c5[_0x177a('0x35')][_0x177a('0x3a')]));_0x2bb008[_0x177a('0x38')]=_0x2bb008[_0x177a('0x38')][_0x177a('0x3b')]?_0x2bb008[_0x177a('0x38')]:_0x9cc33f[_0x177a('0x34')];if(_0x1586c5[_0x177a('0x35')][_0x177a('0x46')]){_0x2bb008['include']=[{'all':!![]}];}_0x2bb008=_['merge']({},_0x2bb008,_0x1586c5[_0x177a('0x45')]);return db[_0x177a('0x31')]['find'](_0x2bb008)[_0x177a('0x2a')](handleEntityNotFound(_0xd9dc34,null))[_0x177a('0x2a')](respondWithResult(_0xd9dc34,null))[_0x177a('0x21')](handleError(_0xd9dc34,null));};exports[_0x177a('0x29')]=function(_0x4e627e,_0x5395a1){if(_0x4e627e['body']['id']){delete _0x4e627e[_0x177a('0x4c')]['id'];}return db[_0x177a('0x31')][_0x177a('0x4d')]({'where':{'id':_0x4e627e['params']['id']}})[_0x177a('0x2a')](handleEntityNotFound(_0x5395a1,null))[_0x177a('0x2a')](saveUpdates(_0x4e627e[_0x177a('0x4c')],null))[_0x177a('0x2a')](respondWithResult(_0x5395a1,null))['catch'](handleError(_0x5395a1,null));};exports[_0x177a('0x2b')]=function(_0x4a9630,_0x353efd){return db[_0x177a('0x31')][_0x177a('0x4d')]({'where':{'id':_0x4a9630[_0x177a('0x4b')]['id']}})['then'](handleEntityNotFound(_0x353efd,null))[_0x177a('0x2a')](removeEntity(_0x353efd,null))['catch'](handleError(_0x353efd,null));};exports[_0x177a('0x4e')]=function(_0x1e85cf,_0x558298){return db[_0x177a('0x31')][_0x177a('0x4e')]()[_0x177a('0x2a')](respondWithResult(_0x558298,null))[_0x177a('0x21')](handleError(_0x558298,null));};exports[_0x177a('0x4f')]=function(_0x218944,_0x175f5f){return db[_0x177a('0x31')]['create'](_0x218944['body'])['then'](function(_0x6d0da1){if(_0x6d0da1){if(_0x6d0da1[_0x177a('0x50')]===_0x177a('0x51')&&!_0x6d0da1[_0x177a('0x52')]){var _0x560152,_0x46ef3f,_0x3c806a;if(_0x218944[_0x177a('0x4c')]['to']){_0x46ef3f=_0x218944[_0x177a('0x4c')]['to'][_0x177a('0x53')](',')[0x0];}return db[_0x177a('0x54')]['findOne']({'where':{'id':_0x6d0da1[_0x177a('0x55')]},'include':[{'model':db[_0x177a('0x56')],'as':_0x177a('0x57'),'include':[{'model':db[_0x177a('0x58')],'as':_0x177a('0x59'),'where':{'email':_0x46ef3f},'limit':0x1,'order':[['updatedAt',_0x177a('0x5a')]]}]},{'model':db[_0x177a('0x5b')],'as':_0x177a('0x5c'),'raw':!![]}]})[_0x177a('0x2a')](function(_0x589df8){_0x560152=_0x589df8;if(_0x560152&&_0x560152[_0x177a('0x5c')]){var _0x33afbc={'tls':{'rejectUnauthorized':![]}};if(_[_0x177a('0x5d')](_0x560152[_0x177a('0x5c')][_0x177a('0x5e')])){_0x33afbc['host']=_0x560152[_0x177a('0x5c')][_0x177a('0x5f')];_0x33afbc['port']=_0x560152[_0x177a('0x5c')]['port'];_0x33afbc[_0x177a('0x60')]=_0x560152[_0x177a('0x5c')]['secure'];if(_0x560152[_0x177a('0x5c')][_0x177a('0x61')]){_0x33afbc['auth']={'user':_0x560152['Smtp'][_0x177a('0x62')],'pass':_0x560152['Smtp'][_0x177a('0x63')]};}}else{_0x33afbc[_0x177a('0x5e')]=_0x560152[_0x177a('0x5c')][_0x177a('0x5e')];_0x33afbc[_0x177a('0x64')]={'user':_0x560152[_0x177a('0x5c')][_0x177a('0x62')],'pass':_0x560152['Smtp'][_0x177a('0x63')]};_0x33afbc[_0x177a('0x60')]=_0x560152['Smtp']['secure'];}if(_0x218944[_0x177a('0x4c')][_0x177a('0x65')]&&_0x218944[_0x177a('0x4c')][_0x177a('0x65')][_0x177a('0x3b')]){for(var _0x5ee4fc=0x0;_0x5ee4fc<_0x218944[_0x177a('0x4c')]['attachments'][_0x177a('0x3b')];_0x5ee4fc+=0x1){_0x218944[_0x177a('0x4c')][_0x177a('0x65')][_0x5ee4fc]={'filename':_0x218944[_0x177a('0x4c')]['attachments'][_0x5ee4fc]['name'],'path':path[_0x177a('0x66')](config[_0x177a('0x67')],_0x177a('0x68'),_0x218944[_0x177a('0x4c')][_0x177a('0x65')][_0x5ee4fc][_0x177a('0x69')])};}}_0x3c806a={'account':_0x33afbc,'message':_0x218944[_0x177a('0x4c')]};return;}})[_0x177a('0x2a')](function(){if(_0x560152[_0x177a('0x57')]){if(_0x560152['List'][_0x177a('0x59')][_0x177a('0x3b')]){return _0x560152['List'][_0x177a('0x59')][0x0];}else{return db[_0x177a('0x58')][_0x177a('0x4f')](_[_0x177a('0xd')](_0x218944[_0x177a('0x4c')],{'firstName':_0x218944[_0x177a('0x4c')]['to'],'email':_0x218944[_0x177a('0x4c')]['to'],'phone':_0x218944[_0x177a('0x4c')]['to'],'ListId':_0x560152[_0x177a('0x6a')]}));}}else{throw new Error(_0x177a('0x6b'));}})[_0x177a('0x2a')](function(){if(_0x3c806a){return respondWithRpcPromise('SendMail',_0x177a('0x6c'),_0x3c806a,client9003)['then'](function(_0x4ee109){return _0x6d0da1[_0x177a('0x29')]({'read':!![],'messageId':_0x4ee109['messageId'],'sentAt':moment()[_0x177a('0x6d')](_0x177a('0x6e'))});})[_0x177a('0x21')](function(_0xb4e518){logger['error']('%s',JSON['stringify'](_0xb4e518));return _0x6d0da1;});}return _0x6d0da1;});}return _0x6d0da1;}})[_0x177a('0x2a')](respondWithResult(_0x175f5f,0xc9))[_0x177a('0x21')](handleError(_0x175f5f,null));};exports[_0x177a('0x6f')]=function(_0x2e8ccd,_0xa59270){var _0x186d40={'agent':{},'channel':_0x177a('0x70')};if(_0x2e8ccd[_0x177a('0x4c')]['id']){delete _0x2e8ccd['body']['id'];}_0x2e8ccd[_0x177a('0x4c')][_0x177a('0x71')]=!![];_0x2e8ccd[_0x177a('0x4c')][_0x177a('0x72')]=moment()['format'](_0x177a('0x6e'));_0x2e8ccd[_0x177a('0x4c')][_0x177a('0x73')]=_0x2e8ccd[_0x177a('0x4c')]['UserId']||_0x2e8ccd[_0x177a('0x62')]['id'];_0x186d40[_0x177a('0x74')]['id']=_0x2e8ccd['body']['UserId'];return db[_0x177a('0x31')][_0x177a('0x4d')]({'where':{'id':_0x2e8ccd['params']['id'],'UserId':null}})[_0x177a('0x2a')](handleEntityNotFound(_0xa59270,null))[_0x177a('0x2a')](saveUpdates(_0x2e8ccd[_0x177a('0x4c')],null))[_0x177a('0x2a')](function(_0x450be7){if(_0x450be7){_0x186d40[_0x177a('0x1e')]=_0x450be7[_0x177a('0x75')]({'plain':!![]});return db[_0x177a('0x76')][_0x177a('0x4d')]({'where':{'id':_0x450be7[_0x177a('0x77')]}});}return null;})[_0x177a('0x2a')](handleEntityNotFound(_0xa59270,null))[_0x177a('0x2a')](function(_0x6fb022){if(_0x6fb022){return _0x6fb022[_0x177a('0x29')]({'UserId':_0x2e8ccd[_0x177a('0x4c')]['UserId'],'read1stAt':_[_0x177a('0x5d')](_0x6fb022[_0x177a('0x78')])?moment()['format'](_0x177a('0x6e')):undefined});}return null;})[_0x177a('0x2a')](function(_0x151636){if(_0x151636){_0x186d40[_0x177a('0x79')]=_0x151636[_0x177a('0x75')]({'plain':!![]});interaction_log[_0x177a('0x1f')](_0x177a('0x7a'),_0x2e8ccd[_0x177a('0x62')]['id'],_0x2e8ccd['user']['name'],_0x2e8ccd['user'][_0x177a('0x7b')],_0x186d40['interaction']['id'],_0x2e8ccd['body']?JSON[_0x177a('0x7c')](_0x2e8ccd[_0x177a('0x4c')]):_0x177a('0x7d'));return respondWithRpcPromise('AcceptMessage',_0x177a('0x7e'),_0x186d40);}return null;})[_0x177a('0x2a')](function(_0x3f2e7a){var _0x1c3f2c=_0x177a('0x7f')+_0x3f2e7a[_0x177a('0x1e')][_0x177a('0x80')];return db['sequelize'][_0x177a('0x35')](_0x1c3f2c,{'type':db[_0x177a('0x81')][_0x177a('0x82')][_0x177a('0x83')],'raw':!![]})[_0x177a('0x2a')](function(_0x4632c2){return _0x4632c2;});})[_0x177a('0x2a')](function(_0x24ffca){if(_0x24ffca){_0x186d40[_0x177a('0x1e')][_0x177a('0x84')]=_0x24ffca[0x0];if(!_0x2e8ccd[_0x177a('0x4c')][_0x177a('0x73')])return;return db[_0x177a('0x85')]['find']({'where':{'id':_0x2e8ccd[_0x177a('0x4c')]['UserId'],'role':_0x177a('0x74')},'attributes':['id','name',_0x177a('0x86'),_0x177a('0x87'),_0x177a('0x88')],'raw':!![]});}return null;})[_0x177a('0x2a')](function(_0x12e0ae){if(!_0x12e0ae)return null;_0x186d40[_0x177a('0x1e')][_0x177a('0x74')]=_0x12e0ae;return _0x186d40;})[_0x177a('0x2a')](function(_0x380204){if(_0x380204){if(_0x2e8ccd[_0x177a('0x4c')][_0x177a('0x89')]){_0x186d40['message']['interface']=util[_0x177a('0x6d')](_0x177a('0x8a'),_0x2e8ccd[_0x177a('0x62')]['name']);_0x186d40[_0x177a('0x1e')]['channel']=_0x186d40[_0x177a('0x8b')];_0x186d40[_0x177a('0x1e')]['motionChannel']=_0x186d40['channel'];_0x186d40[_0x177a('0x1e')][_0x177a('0x8c')]='accept';_0x186d40[_0x177a('0x1e')][_0x177a('0x4c')]=htmlToText[_0x177a('0x8d')](_0x186d40['message'][_0x177a('0x4c')]);return respondWithRpcPromise(_0x177a('0x8e'),_0x177a('0x8e'),{'event':_0x177a('0x8f'),'message':_0x186d40[_0x177a('0x1e')]},client9002)[_0x177a('0x2a')](function(){return _0x186d40;});}return _0x186d40;}return null;})[_0x177a('0x2a')](respondWithResult(_0xa59270,null))[_0x177a('0x21')](handleError(_0xa59270,null));};exports['reject']=function(_0x1f68c5,_0x4cacd0){var _0x4d9869={'agent':{},'channel':_0x177a('0x70')};if(_0x1f68c5[_0x177a('0x4c')]['id']){delete _0x1f68c5[_0x177a('0x4c')]['id'];}_0x1f68c5[_0x177a('0x4c')][_0x177a('0x73')]=_0x1f68c5[_0x177a('0x4c')][_0x177a('0x73')]||_0x1f68c5[_0x177a('0x62')]['id'];_0x4d9869[_0x177a('0x74')]['id']=_0x1f68c5[_0x177a('0x4c')][_0x177a('0x73')];return db['MailMessage']['find']({'where':{'id':_0x1f68c5['params']['id'],'UserId':null}})[_0x177a('0x2a')](handleEntityNotFound(_0x4cacd0,null))[_0x177a('0x2a')](function(_0x396976){if(_0x396976){_0x4d9869[_0x177a('0x1e')]=_0x396976[_0x177a('0x75')]({'plain':!![]});return db[_0x177a('0x76')]['find']({'where':{'id':_0x396976[_0x177a('0x77')]}});}return null;})[_0x177a('0x2a')](handleEntityNotFound(_0x4cacd0,null))[_0x177a('0x2a')](function(_0x2fdf66){if(_0x2fdf66){_0x4d9869[_0x177a('0x79')]=_0x2fdf66[_0x177a('0x75')]({'plain':!![]});interaction_log['info'](_0x177a('0x90'),_0x1f68c5[_0x177a('0x62')]['id'],_0x1f68c5['user'][_0x177a('0x2e')],_0x1f68c5['user'][_0x177a('0x7b')],_0x4d9869[_0x177a('0x79')]['id'],_0x1f68c5['body']?JSON[_0x177a('0x7c')](_0x1f68c5[_0x177a('0x4c')]):_0x177a('0x7d'));return respondWithRpcPromise(_0x177a('0x91'),'rejectMessage',_0x4d9869);}return null;})['then'](function(_0x29a855){var _0xcb4ded=_0x177a('0x7f')+_0x29a855[_0x177a('0x1e')][_0x177a('0x80')];return db['sequelize'][_0x177a('0x35')](_0xcb4ded,{'type':db[_0x177a('0x81')][_0x177a('0x82')][_0x177a('0x83')],'raw':!![]})[_0x177a('0x2a')](function(_0x329f27){return _0x329f27;});})[_0x177a('0x2a')](function(_0x32b295){if(_0x32b295){_0x4d9869['message']['contact']=_0x32b295[0x0];if(!_0x1f68c5[_0x177a('0x4c')][_0x177a('0x73')])return;return db['User'][_0x177a('0x4d')]({'where':{'id':_0x1f68c5[_0x177a('0x4c')][_0x177a('0x73')],'role':_0x177a('0x74')},'attributes':['id',_0x177a('0x2e'),_0x177a('0x86'),_0x177a('0x87'),_0x177a('0x88')],'raw':!![]});}return null;})[_0x177a('0x2a')](function(_0x516812){if(!_0x516812)return null;_0x4d9869[_0x177a('0x1e')][_0x177a('0x74')]=_0x516812;return _0x4d9869;})['then'](function(_0x2f11f4){if(_0x2f11f4){_0x2f11f4[_0x177a('0x1e')]['interface']=util[_0x177a('0x6d')](_0x177a('0x8a'),_0x1f68c5[_0x177a('0x62')]['name']);_0x2f11f4[_0x177a('0x1e')][_0x177a('0x8b')]=_0x4d9869[_0x177a('0x8b')];_0x2f11f4['message'][_0x177a('0x92')]=_0x4d9869['channel'];_0x2f11f4[_0x177a('0x1e')][_0x177a('0x8c')]=_0x177a('0x93');_0x2f11f4['message'][_0x177a('0x4c')]=htmlToText[_0x177a('0x8d')](_0x4d9869[_0x177a('0x1e')][_0x177a('0x4c')]);respondWithRpcPromise('EventManager',_0x177a('0x8e'),{'event':'rejectmessage','message':_0x2f11f4[_0x177a('0x1e')]},client9002);return _0x4d9869;}return null;})[_0x177a('0x2a')](respondWithResult(_0x4cacd0,null))['catch'](handleError(_0x4cacd0,null));};exports[_0x177a('0x94')]=function(_0x3ed5e5,_0x4df205){var _0xe1e0c2=moment()[_0x177a('0x95')]()[_0x177a('0x96')]();var _0x427e6d=path['join'](config[_0x177a('0x67')],_0x177a('0x97'),'files',_0x177a('0x98'));var _0x2017b5=path[_0x177a('0x66')](config['root'],_0x177a('0x97'),_0x177a('0x99'),_0x177a('0x65'));var _0x455188=util[_0x177a('0x6d')](_0x177a('0x9a'),_0xe1e0c2);return db['MailMessage'][_0x177a('0x4d')]({'where':{'id':_0x3ed5e5[_0x177a('0x4b')]['id']},'attributes':['id',_0x177a('0x4c'),_0x177a('0x9b'),'to','cc',_0x177a('0x9c'),_0x177a('0x9d'),_0x177a('0x9e')],'include':_0x3ed5e5[_0x177a('0x35')][_0x177a('0x65')]?[{'model':db['Attachment'],'as':_0x177a('0x9f')}]:undefined})[_0x177a('0x2a')](handleEntityNotFound(_0x4df205,null))[_0x177a('0x2a')](function(_0x15cdd0){if(_0x15cdd0){var _0x379e1c=_0x15cdd0;var _0x107ecf={'from':_0x379e1c[_0x177a('0x9b')],'to':_0x379e1c['to'],'subject':_0x379e1c[_0x177a('0x9d')],'html':htmlEntities[_0x177a('0xa0')](_0x379e1c[_0x177a('0x4c')]),'headers':{'Date':moment(_0x379e1c[_0x177a('0x9e')])[_0x177a('0x6d')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x15cdd0['cc']){_0x107ecf['headers']['Cc']=_0x15cdd0['cc'];}if(_0x15cdd0['bcc']){_0x107ecf[_0x177a('0xa1')]['Bcc']=_0x15cdd0[_0x177a('0x9c')];}return new BPromise(function(_0x571bac,_0x2a06d1){if(_0x15cdd0[_0x177a('0x9f')]){for(var _0x17d6c0=0x0;_0x17d6c0<_0x15cdd0[_0x177a('0x9f')][_0x177a('0x3b')];_0x17d6c0++){var _0x4d8925=_0x15cdd0[_0x177a('0x9f')][_0x17d6c0];var _0x1514ab=path[_0x177a('0x66')](_0x2017b5,_0x4d8925['basename']);if(fs[_0x177a('0xa2')](_0x1514ab)){_0x107ecf['attachments'][_0x177a('0xa3')]({'name':_0x4d8925['name'],'contentType':_0x4d8925[_0x177a('0x43')],'data':fs[_0x177a('0xa4')](_0x1514ab)});}}}emlformat['build'](_0x107ecf,function(_0x1adcd2,_0x54d59b){if(_0x1adcd2)return _0x2a06d1(_0x1adcd2);fs['writeFileSync'](path['join'](_0x427e6d,_0x455188),_0x54d59b);return _0x571bac(_0x54d59b);});});}})['then'](function(_0xc305d7){if(_0xc305d7){return _0x4df205['download'](path[_0x177a('0x66')](_0x427e6d,_0x455188),_0x455188,function(_0x4f32d4){if(!_0x4f32d4)fs['unlinkSync'](path[_0x177a('0x66')](_0x427e6d,_0x455188));});}})[_0x177a('0x21')](handleError(_0x4df205,null));};
\ No newline at end of file
index 876b9b0..0d4efa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1ac=['update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','MailMessage','setMaxListeners','save'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xb1ac,0x109));var _0xcb1a=function(_0x1c0d18,_0x5bba54){_0x1c0d18=_0x1c0d18-0x0;var _0x2b6c1c=_0xb1ac[_0x1c0d18];return _0x2b6c1c;};'use strict';var EventEmitter=require(_0xcb1a('0x0'));var MailMessage=require(_0xcb1a('0x1'))['db'][_0xcb1a('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0xcb1a('0x3')](0x0);var events={'afterCreate':_0xcb1a('0x4'),'afterUpdate':_0xcb1a('0x5'),'afterDestroy':_0xcb1a('0x6')};function emitEvent(_0x1dc2d3){return function(_0x506919,_0x216067,_0x291820){MailMessageEvents[_0xcb1a('0x7')](_0x1dc2d3+':'+_0x506919['id'],_0x506919);MailMessageEvents['emit'](_0x1dc2d3,_0x506919);_0x291820(null);};}for(var e in events){if(events[_0xcb1a('0x8')](e)){var event=events[e];MailMessage[_0xcb1a('0x9')](e,emitEvent(event));}}module['exports']=MailMessageEvents;
\ No newline at end of file
+var _0x6613=['exports','events','../../mysqldb','MailMessage','remove','emit','hasOwnProperty','hook'];(function(_0x4ff1fb,_0x4184d4){var _0x30e1fb=function(_0x2d6a70){while(--_0x2d6a70){_0x4ff1fb['push'](_0x4ff1fb['shift']());}};_0x30e1fb(++_0x4184d4);}(_0x6613,0xe9));var _0x3661=function(_0x5dcac3,_0x1def87){_0x5dcac3=_0x5dcac3-0x0;var _0x237b76=_0x6613[_0x5dcac3];return _0x237b76;};'use strict';var EventEmitter=require(_0x3661('0x0'));var MailMessage=require(_0x3661('0x1'))['db'][_0x3661('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x3661('0x3')};function emitEvent(_0x22390f){return function(_0x20d1a7,_0xaaa0f2,_0x172938){MailMessageEvents[_0x3661('0x4')](_0x22390f+':'+_0x20d1a7['id'],_0x20d1a7);MailMessageEvents['emit'](_0x22390f,_0x20d1a7);_0x172938(null);};}for(var e in events){if(events[_0x3661('0x5')](e)){var event=events[e];MailMessage[_0x3661('0x6')](e,emitEvent(event));}}module[_0x3661('0x7')]=MailMessageEvents;
\ No newline at end of file
index f2014a1..2a1f6a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bd4=['UserId','MailInteraction','findOne','MailInteractionId','then','direction','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./mailMessage.attributes','exports','define','mail_messages','messageId','plainBody','subject','FULLTEXT','fromString','body','models','get','toLowerCase','out','isNil'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x2bd4,0x1e6));var _0x42bd=function(_0x1ddaf3,_0x5be217){_0x1ddaf3=_0x1ddaf3-0x0;var _0xd2c1e1=_0x2bd4[_0x1ddaf3];return _0xd2c1e1;};'use strict';var _=require(_0x42bd('0x0'));var util=require(_0x42bd('0x1'));var logger=require(_0x42bd('0x2'))(_0x42bd('0x3'));var moment=require(_0x42bd('0x4'));var BPromise=require(_0x42bd('0x5'));var rp=require(_0x42bd('0x6'));var htmlToText=require('html-to-text');var fs=require('fs');var path=require(_0x42bd('0x7'));var rimraf=require('rimraf');var config=require(_0x42bd('0x8'));var attributes=require(_0x42bd('0x9'));module[_0x42bd('0xa')]=function(_0x22bd9e,_0x124d24){return _0x22bd9e[_0x42bd('0xb')]('MailMessage',attributes,{'tableName':_0x42bd('0xc'),'paranoid':![],'indexes':[{'name':_0x42bd('0xd'),'fields':[_0x42bd('0xd')]},{'name':'fti_mail_messages','fields':[_0x42bd('0xe'),_0x42bd('0xf')],'type':_0x42bd('0x10')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x41a6cc,_0x345ad7,_0xa090cc){if(_0x41a6cc['body']){_0x41a6cc[_0x42bd('0xe')]=htmlToText[_0x42bd('0x11')](_0x41a6cc[_0x42bd('0x12')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0xa090cc(null,_0x345ad7);},'afterCreate':function(_0x2689e8,_0x3ca9c9,_0x313758){var _0x292295=_0x22bd9e[_0x42bd('0x13')];var _0x3cbba8=_0x2689e8[_0x42bd('0x14')]({'plain':!![]});if(_0x3cbba8['direction'][_0x42bd('0x15')]()==='in'||_0x3cbba8['direction']['toLowerCase']()===_0x42bd('0x16')&&!_0x3cbba8['secret']&&!_[_0x42bd('0x17')](_0x3cbba8[_0x42bd('0x18')])){_0x292295[_0x42bd('0x19')][_0x42bd('0x1a')]({'where':{'id':_0x3cbba8[_0x42bd('0x1b')]}})[_0x42bd('0x1c')](function(_0x4cb2f4){if(_0x4cb2f4){_0x4cb2f4['update']({'lastMsgAt':_0x3cbba8['createdAt'],'lastMsgDirection':_0x3cbba8[_0x42bd('0x1d')][_0x42bd('0x15')]()});}})[_0x42bd('0x1e')](function(_0x19ef2c){console[_0x42bd('0x1f')](_0x19ef2c);});}_0x313758();}},'charset':_0x42bd('0x20'),'collate':_0x42bd('0x21')});};
\ No newline at end of file
+var _0xf7b5=['lodash','util','api','moment','bluebird','html-to-text','path','rimraf','../../config/environment','./mailMessage.attributes','exports','MailMessage','messageId','fti_mail_messages','plainBody','subject','FULLTEXT','body','fromString','models','get','direction','toLowerCase','out','secret','MailInteractionId','update','createdAt','catch','error','utf8mb4_unicode_ci'];(function(_0x26deb2,_0x49b936){var _0x2df537=function(_0x7bbe83){while(--_0x7bbe83){_0x26deb2['push'](_0x26deb2['shift']());}};_0x2df537(++_0x49b936);}(_0xf7b5,0xd9));var _0x5f7b=function(_0x67f95e,_0x3ca797){_0x67f95e=_0x67f95e-0x0;var _0x538f5a=_0xf7b5[_0x67f95e];return _0x538f5a;};'use strict';var _=require(_0x5f7b('0x0'));var util=require(_0x5f7b('0x1'));var logger=require('../../config/logger')(_0x5f7b('0x2'));var moment=require(_0x5f7b('0x3'));var BPromise=require(_0x5f7b('0x4'));var rp=require('request-promise');var htmlToText=require(_0x5f7b('0x5'));var fs=require('fs');var path=require(_0x5f7b('0x6'));var rimraf=require(_0x5f7b('0x7'));var config=require(_0x5f7b('0x8'));var attributes=require(_0x5f7b('0x9'));module[_0x5f7b('0xa')]=function(_0x364302,_0x4cba7a){return _0x364302['define'](_0x5f7b('0xb'),attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':_0x5f7b('0xc'),'fields':[_0x5f7b('0xc')]},{'name':_0x5f7b('0xd'),'fields':[_0x5f7b('0xe'),_0x5f7b('0xf')],'type':_0x5f7b('0x10')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5aa403,_0x4bd941,_0x3e6f30){if(_0x5aa403[_0x5f7b('0x11')]){_0x5aa403[_0x5f7b('0xe')]=htmlToText[_0x5f7b('0x12')](_0x5aa403[_0x5f7b('0x11')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x3e6f30(null,_0x4bd941);},'afterCreate':function(_0x5c4f42,_0x22670c,_0x205e20){var _0xf776d5=_0x364302[_0x5f7b('0x13')];var _0x163ff8=_0x5c4f42[_0x5f7b('0x14')]({'plain':!![]});if(_0x163ff8[_0x5f7b('0x15')]['toLowerCase']()==='in'||_0x163ff8[_0x5f7b('0x15')][_0x5f7b('0x16')]()===_0x5f7b('0x17')&&!_0x163ff8[_0x5f7b('0x18')]&&!_['isNil'](_0x163ff8['UserId'])){_0xf776d5['MailInteraction']['findOne']({'where':{'id':_0x163ff8[_0x5f7b('0x19')]}})['then'](function(_0x1201f6){if(_0x1201f6){_0x1201f6[_0x5f7b('0x1a')]({'lastMsgAt':_0x163ff8[_0x5f7b('0x1b')],'lastMsgDirection':_0x163ff8[_0x5f7b('0x15')][_0x5f7b('0x16')]()});}})[_0x5f7b('0x1c')](function(_0x396e6f){console[_0x5f7b('0x1d')](_0x396e6f);});}_0x205e20();}},'charset':'utf8mb4','collate':_0x5f7b('0x1e')});};
\ No newline at end of file
index 65f2273..1c5f98c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9582=['client','http','redis','defaults','register','request','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateMailMessage','MailMessage','options','raw','info','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x8bfc82,_0x2e3023){var _0x3d5a6d=function(_0x560611){while(--_0x560611){_0x8bfc82['push'](_0x8bfc82['shift']());}};_0x3d5a6d(++_0x2e3023);}(_0x9582,0x95));var _0x2958=function(_0x58f6a8,_0x1d068b){_0x58f6a8=_0x58f6a8-0x0;var _0x1a8daa=_0x9582[_0x58f6a8];return _0x1a8daa;};'use strict';var _=require(_0x2958('0x0'));var util=require(_0x2958('0x1'));var moment=require(_0x2958('0x2'));var BPromise=require(_0x2958('0x3'));var rs=require(_0x2958('0x4'));var fs=require('fs');var Redis=require(_0x2958('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2958('0x6'));var logger=require(_0x2958('0x7'))(_0x2958('0x8'));var config=require(_0x2958('0x9'));var jayson=require(_0x2958('0xa'));var client=jayson[_0x2958('0xb')][_0x2958('0xc')]({'port':0x232a});config[_0x2958('0xd')]=_[_0x2958('0xe')](config[_0x2958('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2958('0xd')]));require('./mailMessage.socket')[_0x2958('0xf')](socket);function respondWithRpcPromise(_0x51e460,_0x44cccc,_0x5ef23c){return new BPromise(function(_0x3aacfa,_0x29776c){return client[_0x2958('0x10')](_0x51e460,_0x5ef23c)[_0x2958('0x11')](function(_0x11ec8d){logger['info'](_0x2958('0x12'),_0x44cccc,_0x2958('0x13'));logger[_0x2958('0x14')](_0x2958('0x15'),_0x44cccc,_0x2958('0x13'),JSON[_0x2958('0x16')](_0x11ec8d));if(_0x11ec8d[_0x2958('0x17')]){if(_0x11ec8d[_0x2958('0x17')]['code']===0x1f4){logger[_0x2958('0x17')](_0x2958('0x12'),_0x44cccc,_0x11ec8d['error']['message']);return _0x29776c(_0x11ec8d[_0x2958('0x17')][_0x2958('0x18')]);}logger['error'](_0x2958('0x12'),_0x44cccc,_0x11ec8d['error']['message']);return _0x3aacfa(_0x11ec8d[_0x2958('0x17')][_0x2958('0x18')]);}else{logger['info']('MailMessage,\x20%s,\x20%s',_0x44cccc,_0x2958('0x13'));_0x3aacfa(_0x11ec8d[_0x2958('0x19')][_0x2958('0x18')]);}})[_0x2958('0x1a')](function(_0x27599c){logger['error'](_0x2958('0x12'),_0x44cccc,_0x27599c);_0x29776c(_0x27599c);});});}exports[_0x2958('0x1b')]=function(_0x1a12fa){var _0x57b6c5=this;return new Promise(function(_0x1e77eb,_0x53b100){return db[_0x2958('0x1c')]['create'](_0x1a12fa['body'],{'raw':_0x1a12fa[_0x2958('0x1d')]?_0x1a12fa[_0x2958('0x1d')][_0x2958('0x1e')]===undefined?!![]:![]:!![]})[_0x2958('0x11')](function(_0x2202f8){logger[_0x2958('0x1f')](_0x2958('0x1b'),_0x1a12fa);logger[_0x2958('0x14')](_0x2958('0x1b'),_0x1a12fa,JSON[_0x2958('0x16')](_0x2202f8));_0x1e77eb(_0x2202f8);})[_0x2958('0x1a')](function(_0xd58ae1){logger[_0x2958('0x17')](_0x2958('0x1b'),_0xd58ae1[_0x2958('0x18')],_0x1a12fa);_0x53b100(_0x57b6c5['error'](0x1f4,_0xd58ae1['message']));});});};
\ No newline at end of file
+var _0x9f0e=['MailMessage,\x20%s,\x20%s','message','result','catch','CreateMailMessage','MailMessage','create','raw','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','socket.io-emitter','./mailMessage.socket','register','then','info','request\x20sent','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3b10e5,_0x3a4cd3){var _0x263c3f=function(_0x55a7a8){while(--_0x55a7a8){_0x3b10e5['push'](_0x3b10e5['shift']());}};_0x263c3f(++_0x3a4cd3);}(_0x9f0e,0x116));var _0xe9f0=function(_0xf5fe55,_0x1828d5){_0xf5fe55=_0xf5fe55-0x0;var _0x11dcc8=_0x9f0e[_0xf5fe55];return _0x11dcc8;};'use strict';var _=require(_0xe9f0('0x0'));var util=require(_0xe9f0('0x1'));var moment=require(_0xe9f0('0x2'));var BPromise=require(_0xe9f0('0x3'));var rs=require(_0xe9f0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe9f0('0x5'));var logger=require(_0xe9f0('0x6'))(_0xe9f0('0x7'));var config=require(_0xe9f0('0x8'));var jayson=require(_0xe9f0('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0xe9f0('0xa')]=_[_0xe9f0('0xb')](config[_0xe9f0('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xe9f0('0xc'))(new Redis(config[_0xe9f0('0xa')]));require(_0xe9f0('0xd'))[_0xe9f0('0xe')](socket);function respondWithRpcPromise(_0xa523c0,_0x240932,_0x807322){return new BPromise(function(_0x3724f4,_0x6acfb){return client['request'](_0xa523c0,_0x807322)[_0xe9f0('0xf')](function(_0x329ecd){logger[_0xe9f0('0x10')]('MailMessage,\x20%s,\x20%s',_0x240932,_0xe9f0('0x11'));logger['debug'](_0xe9f0('0x12'),_0x240932,_0xe9f0('0x11'),JSON[_0xe9f0('0x13')](_0x329ecd));if(_0x329ecd[_0xe9f0('0x14')]){if(_0x329ecd['error'][_0xe9f0('0x15')]===0x1f4){logger['error'](_0xe9f0('0x16'),_0x240932,_0x329ecd[_0xe9f0('0x14')][_0xe9f0('0x17')]);return _0x6acfb(_0x329ecd['error'][_0xe9f0('0x17')]);}logger[_0xe9f0('0x14')](_0xe9f0('0x16'),_0x240932,_0x329ecd['error'][_0xe9f0('0x17')]);return _0x3724f4(_0x329ecd[_0xe9f0('0x14')][_0xe9f0('0x17')]);}else{logger[_0xe9f0('0x10')](_0xe9f0('0x16'),_0x240932,_0xe9f0('0x11'));_0x3724f4(_0x329ecd[_0xe9f0('0x18')]['message']);}})[_0xe9f0('0x19')](function(_0x19e090){logger[_0xe9f0('0x14')]('MailMessage,\x20%s,\x20%s',_0x240932,_0x19e090);_0x6acfb(_0x19e090);});});}exports[_0xe9f0('0x1a')]=function(_0x30b8c7){var _0x1698cf=this;return new Promise(function(_0x43f399,_0x5ba788){return db[_0xe9f0('0x1b')][_0xe9f0('0x1c')](_0x30b8c7['body'],{'raw':_0x30b8c7['options']?_0x30b8c7['options'][_0xe9f0('0x1d')]===undefined?!![]:![]:!![]})[_0xe9f0('0xf')](function(_0x1211ae){logger[_0xe9f0('0x10')](_0xe9f0('0x1a'),_0x30b8c7);logger['debug'](_0xe9f0('0x1a'),_0x30b8c7,JSON[_0xe9f0('0x13')](_0x1211ae));_0x43f399(_0x1211ae);})[_0xe9f0('0x19')](function(_0x10801b){logger[_0xe9f0('0x14')](_0xe9f0('0x1a'),_0x10801b[_0xe9f0('0x17')],_0x30b8c7);_0x5ba788(_0x1698cf[_0xe9f0('0x14')](0x1f4,_0x10801b[_0xe9f0('0x17')]));});});};
\ No newline at end of file
index 6fd74e3..0b8083b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaced=['update','emit','register','length','./mailMessage.events','save','remove'];(function(_0x5a28a2,_0x4c7230){var _0x1dddff=function(_0x5eef98){while(--_0x5eef98){_0x5a28a2['push'](_0x5a28a2['shift']());}};_0x1dddff(++_0x4c7230);}(_0xaced,0x18c));var _0xdace=function(_0xa22998,_0x2c30ff){_0xa22998=_0xa22998-0x0;var _0x1d2bd0=_0xaced[_0xa22998];return _0x1d2bd0;};'use strict';var MailMessageEvents=require(_0xdace('0x0'));var events=[_0xdace('0x1'),_0xdace('0x2'),_0xdace('0x3')];function createListener(_0x44b792,_0x58f547){return function(_0x36bfd5){_0x58f547[_0xdace('0x4')](_0x44b792,_0x36bfd5);};}function removeListener(_0x1ba367,_0x46522e){return function(){MailMessageEvents['removeListener'](_0x1ba367,_0x46522e);};}exports[_0xdace('0x5')]=function(_0x4d7f80){for(var _0x5f5d92=0x0,_0x198ca1=events[_0xdace('0x6')];_0x5f5d92<_0x198ca1;_0x5f5d92++){var _0x3521d8=events[_0x5f5d92];var _0x199697=createListener('mailMessage:'+_0x3521d8,_0x4d7f80);MailMessageEvents['on'](_0x3521d8,_0x199697);}};
\ No newline at end of file
+var _0xb846=['remove','update','emit','length','./mailMessage.events','save'];(function(_0xa20971,_0x1bf32c){var _0x4f4271=function(_0x299c14){while(--_0x299c14){_0xa20971['push'](_0xa20971['shift']());}};_0x4f4271(++_0x1bf32c);}(_0xb846,0x15a));var _0x6b84=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xb846[_0xf50820];return _0x2a9b10;};'use strict';var MailMessageEvents=require(_0x6b84('0x0'));var events=[_0x6b84('0x1'),_0x6b84('0x2'),_0x6b84('0x3')];function createListener(_0x25bfda,_0x18f0f4){return function(_0x1d873f){_0x18f0f4[_0x6b84('0x4')](_0x25bfda,_0x1d873f);};}function removeListener(_0x272787,_0x1d8aeb){return function(){MailMessageEvents['removeListener'](_0x272787,_0x1d8aeb);};}exports['register']=function(_0x5f57b8){for(var _0x486bf9=0x0,_0x5b9149=events[_0x6b84('0x5')];_0x486bf9<_0x5b9149;_0x486bf9++){var _0x540d81=events[_0x486bf9];var _0xdfb541=createListener('mailMessage:'+_0x540d81,_0x5f57b8);MailMessageEvents['on'](_0x540d81,_0xdfb541);}};
\ No newline at end of file
index 3e20e12..ab097cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1aac=['/:id/users','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','describe','/:id','isAuthenticated','show','getMembers','/:id/teams','getTeams','post'];(function(_0x117d08,_0x10678d){var _0x1332c1=function(_0x4e7bd9){while(--_0x4e7bd9){_0x117d08['push'](_0x117d08['shift']());}};_0x1332c1(++_0x10678d);}(_0x1aac,0x90));var _0xc1aa=function(_0x4f0bb4,_0x2f0161){_0x4f0bb4=_0x4f0bb4-0x0;var _0x1cbad8=_0x1aac[_0x4f0bb4];return _0x1cbad8;};'use strict';var multer=require(_0xc1aa('0x0'));var util=require(_0xc1aa('0x1'));var path=require('path');var timeout=require(_0xc1aa('0x2'));var express=require(_0xc1aa('0x3'));var router=express[_0xc1aa('0x4')]();var fs_extra=require(_0xc1aa('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xc1aa('0x6'));var config=require(_0xc1aa('0x7'));var controller=require(_0xc1aa('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xc1aa('0x9')]('/describe',auth['isAuthenticated'](),controller[_0xc1aa('0xa')]);router[_0xc1aa('0x9')](_0xc1aa('0xb'),auth[_0xc1aa('0xc')](),controller[_0xc1aa('0xd')]);router[_0xc1aa('0x9')]('/:id/members',auth['isAuthenticated'](),controller[_0xc1aa('0xe')]);router[_0xc1aa('0x9')](_0xc1aa('0xf'),auth[_0xc1aa('0xc')](),controller[_0xc1aa('0x10')]);router[_0xc1aa('0x9')]('/:id/users',auth[_0xc1aa('0xc')](),controller['getAgents']);router[_0xc1aa('0x11')]('/',auth[_0xc1aa('0xc')](),controller['create']);router[_0xc1aa('0x11')](_0xc1aa('0xf'),auth['isAuthenticated'](),controller['addTeams']);router['post'](_0xc1aa('0x12'),auth[_0xc1aa('0xc')](),controller[_0xc1aa('0x13')]);router[_0xc1aa('0x14')]('/:id',auth['isAuthenticated'](),controller[_0xc1aa('0x15')]);router[_0xc1aa('0x16')]('/:id',auth[_0xc1aa('0xc')](),controller[_0xc1aa('0x17')]);router['delete'](_0xc1aa('0xf'),auth[_0xc1aa('0xc')](),controller[_0xc1aa('0x18')]);router['delete']('/:id/users',auth[_0xc1aa('0xc')](),controller[_0xc1aa('0x19')]);module[_0xc1aa('0x1a')]=router;
\ No newline at end of file
+var _0xe10c=['getMembers','/:id/teams','getTeams','getAgents','post','create','addTeams','/:id/users','addAgents','put','update','delete','removeTeams','removeAgents','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./mailQueue.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/members'];(function(_0x5b1698,_0x4624a8){var _0x1b416e=function(_0xa8db71){while(--_0xa8db71){_0x5b1698['push'](_0x5b1698['shift']());}};_0x1b416e(++_0x4624a8);}(_0xe10c,0x176));var _0xce10=function(_0x460433,_0x43e59a){_0x460433=_0x460433-0x0;var _0x4dc4c2=_0xe10c[_0x460433];return _0x4dc4c2;};'use strict';var multer=require(_0xce10('0x0'));var util=require(_0xce10('0x1'));var path=require(_0xce10('0x2'));var timeout=require(_0xce10('0x3'));var express=require(_0xce10('0x4'));var router=express[_0xce10('0x5')]();var fs_extra=require(_0xce10('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xce10('0x7'));var controller=require(_0xce10('0x8'));router[_0xce10('0x9')]('/',auth[_0xce10('0xa')](),controller['index']);router['get'](_0xce10('0xb'),auth[_0xce10('0xa')](),controller[_0xce10('0xc')]);router[_0xce10('0x9')](_0xce10('0xd'),auth[_0xce10('0xa')](),controller[_0xce10('0xe')]);router['get'](_0xce10('0xf'),auth['isAuthenticated'](),controller[_0xce10('0x10')]);router[_0xce10('0x9')](_0xce10('0x11'),auth[_0xce10('0xa')](),controller[_0xce10('0x12')]);router[_0xce10('0x9')]('/:id/users',auth['isAuthenticated'](),controller[_0xce10('0x13')]);router[_0xce10('0x14')]('/',auth[_0xce10('0xa')](),controller[_0xce10('0x15')]);router[_0xce10('0x14')]('/:id/teams',auth['isAuthenticated'](),controller[_0xce10('0x16')]);router['post'](_0xce10('0x17'),auth['isAuthenticated'](),controller[_0xce10('0x18')]);router[_0xce10('0x19')](_0xce10('0xd'),auth[_0xce10('0xa')](),controller[_0xce10('0x1a')]);router[_0xce10('0x1b')](_0xce10('0xd'),auth[_0xce10('0xa')](),controller['destroy']);router[_0xce10('0x1b')](_0xce10('0x11'),auth[_0xce10('0xa')](),controller[_0xce10('0x1c')]);router[_0xce10('0x1b')](_0xce10('0x17'),auth[_0xce10('0xa')](),controller[_0xce10('0x1d')]);module['exports']=router;
\ No newline at end of file
index 159024b..5fc028f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad08=['exports','STRING','ENUM','rrmemory','beepall','roundrobin','sequelize'];(function(_0x5491e5,_0x37a869){var _0x214eb5=function(_0x13a469){while(--_0x13a469){_0x5491e5['push'](_0x5491e5['shift']());}};_0x214eb5(++_0x37a869);}(_0xad08,0x84));var _0x8ad0=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xad08[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require(_0x8ad0('0x0'));module[_0x8ad0('0x1')]={'name':{'type':Sequelize[_0x8ad0('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x8ad0('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x8ad0('0x3')](_0x8ad0('0x4'),_0x8ad0('0x5'),_0x8ad0('0x6'))}};
\ No newline at end of file
+var _0x869b=['ENUM','rrmemory','sequelize','exports','STRING','name'];(function(_0x51c592,_0x12485a){var _0x24848d=function(_0xb0c98){while(--_0xb0c98){_0x51c592['push'](_0x51c592['shift']());}};_0x24848d(++_0x12485a);}(_0x869b,0xb6));var _0xb869=function(_0x438dd2,_0x27cdb5){_0x438dd2=_0x438dd2-0x0;var _0x2812c1=_0x869b[_0x438dd2];return _0x2812c1;};'use strict';var Sequelize=require(_0xb869('0x0'));module[_0xb869('0x1')]={'name':{'type':Sequelize[_0xb869('0x2')],'unique':_0xb869('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xb869('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xb869('0x4')](_0xb869('0x5'),'beepall','roundrobin')}};
\ No newline at end of file
index b702381..a23ad98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c4a=['forEach','emit','userMailQueue:save','removeTeams','User','select','field','tq.TeamId','from','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','SELECT','every','TeamId','all','union','compact','value','isEmpty','removeAgents','addAgents','omit','spread','isArray','userMailQueue:remove','getAgents','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','save','update','then','destroy','get','stack','name','index','map','MailQueue','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','type','VIRTUAL','filter','merge','options','includeAll','findAll','rows','catch','show','length','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','MailQueues','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','getMembers','findOne','UserMailQueue','pick','MailQueueId','findAndCountAll','UserId','agent','mailPause','updatedAt','format','SIP','createdAt','getTeams','Team','addTeams','ids','online','voicePause','interface','flatMap','Agents','findOrCreate'];(function(_0x459847,_0x81d5ce){var _0x424130=function(_0x1328a7){while(--_0x1328a7){_0x459847['push'](_0x459847['shift']());}};_0x424130(++_0x81d5ce);}(_0x8c4a,0xb0));var _0xa8c4=function(_0x46c948,_0x1bafa1){_0x46c948=_0x46c948-0x0;var _0x2522ea=_0x8c4a[_0x46c948];return _0x2522ea;};'use strict';var emlformat=require(_0xa8c4('0x0'));var rimraf=require(_0xa8c4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa8c4('0x2'));var rp=require('request-promise');var moment=require(_0xa8c4('0x3'));var BPromise=require(_0xa8c4('0x4'));var Mustache=require(_0xa8c4('0x5'));var util=require(_0xa8c4('0x6'));var path=require(_0xa8c4('0x7'));var sox=require(_0xa8c4('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa8c4('0x9'));var _=require(_0xa8c4('0xa'));var squel=require(_0xa8c4('0xb'));var crypto=require(_0xa8c4('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xa8c4('0xd'));var toCsv=require('to-csv');var querystring=require(_0xa8c4('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa8c4('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xa8c4('0x10'));var hardwareService=require(_0xa8c4('0x11'));var logger=require(_0xa8c4('0x12'))(_0xa8c4('0x13'));var utils=require(_0xa8c4('0x14'));var config=require(_0xa8c4('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xa8c4('0x16'))['db'];config['redis']=_['defaults'](config[_0xa8c4('0x17')],{'host':_0xa8c4('0x18'),'port':0x18eb});var socket=require(_0xa8c4('0x19'))(new Redis(config[_0xa8c4('0x17')]));require(_0xa8c4('0x1a'))[_0xa8c4('0x1b')](socket);function respondWithStatusCode(_0x3a9f54,_0x1fb118){_0x1fb118=_0x1fb118||0xcc;return function(_0x1e764c){if(_0x1e764c){return _0x3a9f54[_0xa8c4('0x1c')](_0x1fb118);}return _0x3a9f54[_0xa8c4('0x1d')](_0x1fb118)[_0xa8c4('0x1e')]();};}function respondWithResult(_0x2e7c0b,_0x32d379){_0x32d379=_0x32d379||0xc8;return function(_0x256412){if(_0x256412){return _0x2e7c0b['status'](_0x32d379)[_0xa8c4('0x1f')](_0x256412);}};}function respondWithFilteredResult(_0x27543a,_0x3c09e1){return function(_0x1ee1bb){if(_0x1ee1bb){var _0x3557ae=typeof _0x3c09e1[_0xa8c4('0x20')]==='undefined'&&typeof _0x3c09e1[_0xa8c4('0x21')]===_0xa8c4('0x22');var _0x57dd85=_0x1ee1bb['count'];var _0x1c7aaa=_0x3557ae?0x0:_0x3c09e1[_0xa8c4('0x20')];var _0x2a4f14=_0x3557ae?_0x1ee1bb[_0xa8c4('0x23')]:_0x3c09e1[_0xa8c4('0x20')]+_0x3c09e1[_0xa8c4('0x21')];var _0x42609e;if(_0x2a4f14>=_0x57dd85){_0x2a4f14=_0x57dd85;_0x42609e=0xc8;}else{_0x42609e=0xce;}_0x27543a[_0xa8c4('0x1d')](_0x42609e);return _0x27543a[_0xa8c4('0x24')](_0xa8c4('0x25'),_0x1c7aaa+'-'+_0x2a4f14+'/'+_0x57dd85)[_0xa8c4('0x1f')](_0x1ee1bb);}return null;};}function patchUpdates(_0x32161d){return function(_0xf204dc){try{jsonpatch['apply'](_0xf204dc,_0x32161d,!![]);}catch(_0x313eda){return BPromise['reject'](_0x313eda);}return _0xf204dc[_0xa8c4('0x26')]();};}function saveUpdates(_0x1125e5,_0x2dceaa){return function(_0x2dcc2f){if(_0x2dcc2f){return _0x2dcc2f[_0xa8c4('0x27')](_0x1125e5)[_0xa8c4('0x28')](function(_0x288d79){return _0x288d79;});}return null;};}function removeEntity(_0x9522bd,_0x12779c){return function(_0xc02d90){if(_0xc02d90){return _0xc02d90[_0xa8c4('0x29')]()[_0xa8c4('0x28')](function(){var _0x530c6b=_0xc02d90[_0xa8c4('0x2a')]({'plain':!![]});var _0x113c03='MailQueues';return db['UserProfileResource'][_0xa8c4('0x29')]({'where':{'type':_0x113c03,'resourceId':_0x530c6b['id']}})[_0xa8c4('0x28')](function(){return _0xc02d90;});})[_0xa8c4('0x28')](function(){_0x9522bd[_0xa8c4('0x1d')](0xcc)[_0xa8c4('0x1e')]();});}};}function handleEntityNotFound(_0x755c52,_0xd2b2f){return function(_0x34da82){if(!_0x34da82){_0x755c52[_0xa8c4('0x1c')](0x194);}return _0x34da82;};}function handleError(_0x41e67d,_0x3726c7){_0x3726c7=_0x3726c7||0x1f4;return function(_0x5ba4fb){logger['error'](_0x5ba4fb[_0xa8c4('0x2b')]);if(_0x5ba4fb[_0xa8c4('0x2c')]){delete _0x5ba4fb['name'];}_0x41e67d[_0xa8c4('0x1d')](_0x3726c7)['send'](_0x5ba4fb);};}exports[_0xa8c4('0x2d')]=function(_0x10b16f,_0x5048ef){var _0x46dfea={},_0x14cda8={},_0x594bca={'count':0x0,'rows':[]};var _0x212fe1=_[_0xa8c4('0x2e')](db[_0xa8c4('0x2f')][_0xa8c4('0x30')],function(_0x30761a){return{'name':_0x30761a['fieldName'],'type':_0x30761a['type'][_0xa8c4('0x31')]};});_0x14cda8[_0xa8c4('0x32')]=_[_0xa8c4('0x2e')](_0x212fe1,_0xa8c4('0x2c'));_0x14cda8[_0xa8c4('0x33')]=_[_0xa8c4('0x34')](_0x10b16f[_0xa8c4('0x33')]);_0x14cda8[_0xa8c4('0x35')]=_[_0xa8c4('0x36')](_0x14cda8[_0xa8c4('0x32')],_0x14cda8[_0xa8c4('0x33')]);_0x46dfea['attributes']=_[_0xa8c4('0x36')](_0x14cda8[_0xa8c4('0x32')],qs[_0xa8c4('0x37')](_0x10b16f[_0xa8c4('0x33')][_0xa8c4('0x37')]));_0x46dfea[_0xa8c4('0x38')]=_0x46dfea[_0xa8c4('0x38')]['length']?_0x46dfea[_0xa8c4('0x38')]:_0x14cda8['model'];if(!_0x10b16f['query'][_0xa8c4('0x39')](_0xa8c4('0x3a'))){_0x46dfea[_0xa8c4('0x21')]=qs[_0xa8c4('0x21')](_0x10b16f['query'][_0xa8c4('0x21')]);_0x46dfea[_0xa8c4('0x20')]=qs['offset'](_0x10b16f[_0xa8c4('0x33')][_0xa8c4('0x20')]);}_0x46dfea[_0xa8c4('0x3b')]=qs[_0xa8c4('0x3c')](_0x10b16f[_0xa8c4('0x33')]['sort']);_0x46dfea['where']=qs['filters'](_['pick'](_0x10b16f['query'],_0x14cda8['filters']),_0x212fe1);if(_0x10b16f[_0xa8c4('0x33')]['filter']){_0x46dfea[_0xa8c4('0x3d')]=_['merge'](_0x46dfea[_0xa8c4('0x3d')],{'$or':_[_0xa8c4('0x2e')](_0x212fe1,function(_0x2ac2b3){if(_0x2ac2b3[_0xa8c4('0x3e')]!==_0xa8c4('0x3f')){var _0x38f0e7={};_0x38f0e7[_0x2ac2b3[_0xa8c4('0x2c')]]={'$like':'%'+_0x10b16f[_0xa8c4('0x33')][_0xa8c4('0x40')]+'%'};return _0x38f0e7;}})});}_0x46dfea=_[_0xa8c4('0x41')]({},_0x46dfea,_0x10b16f[_0xa8c4('0x42')]);var _0xb901f2={'where':_0x46dfea[_0xa8c4('0x3d')]};return db[_0xa8c4('0x2f')][_0xa8c4('0x23')](_0xb901f2)['then'](function(_0x3f79e0){_0x594bca['count']=_0x3f79e0;if(_0x10b16f['query'][_0xa8c4('0x43')]){_0x46dfea['include']=[{'all':!![]}];}return db[_0xa8c4('0x2f')][_0xa8c4('0x44')](_0x46dfea);})['then'](function(_0x5d6c94){_0x594bca[_0xa8c4('0x45')]=_0x5d6c94;return _0x594bca;})[_0xa8c4('0x28')](respondWithFilteredResult(_0x5048ef,_0x46dfea))[_0xa8c4('0x46')](handleError(_0x5048ef,null));};exports[_0xa8c4('0x47')]=function(_0x4bbff1,_0x5ec9a6){var _0x301a58={'raw':!![],'where':{'id':_0x4bbff1['params']['id']}},_0x45ed56={};_0x45ed56[_0xa8c4('0x32')]=_[_0xa8c4('0x34')](db[_0xa8c4('0x2f')][_0xa8c4('0x30')]);_0x45ed56['query']=_['keys'](_0x4bbff1[_0xa8c4('0x33')]);_0x45ed56[_0xa8c4('0x35')]=_[_0xa8c4('0x36')](_0x45ed56['model'],_0x45ed56[_0xa8c4('0x33')]);_0x301a58[_0xa8c4('0x38')]=_['intersection'](_0x45ed56[_0xa8c4('0x32')],qs[_0xa8c4('0x37')](_0x4bbff1[_0xa8c4('0x33')][_0xa8c4('0x37')]));_0x301a58[_0xa8c4('0x38')]=_0x301a58[_0xa8c4('0x38')][_0xa8c4('0x48')]?_0x301a58['attributes']:_0x45ed56[_0xa8c4('0x32')];if(_0x4bbff1[_0xa8c4('0x33')]['includeAll']){_0x301a58[_0xa8c4('0x49')]=[{'all':!![]}];}_0x301a58=_[_0xa8c4('0x41')]({},_0x301a58,_0x4bbff1['options']);return db['MailQueue'][_0xa8c4('0x4a')](_0x301a58)[_0xa8c4('0x28')](handleEntityNotFound(_0x5ec9a6,null))[_0xa8c4('0x28')](respondWithResult(_0x5ec9a6,null))['catch'](handleError(_0x5ec9a6,null));};exports[_0xa8c4('0x4b')]=function(_0x13b598,_0x4d1048){return db[_0xa8c4('0x2f')][_0xa8c4('0x4b')](_0x13b598['body'],{})[_0xa8c4('0x28')](function(_0x3eeec7){var _0x4e7523=_0x13b598[_0xa8c4('0x4c')][_0xa8c4('0x2a')]({'plain':!![]});if(!_0x4e7523)throw new Error(_0xa8c4('0x4d'));if(_0x4e7523[_0xa8c4('0x4e')]==='user'){var _0x47b4e5=_0x3eeec7['get']({'plain':!![]});var _0x206330=_0xa8c4('0x4f');return db[_0xa8c4('0x50')][_0xa8c4('0x4a')]({'where':{'name':_0x206330,'userProfileId':_0x4e7523[_0xa8c4('0x51')]},'raw':!![]})[_0xa8c4('0x28')](function(_0x15cf63){if(_0x15cf63&&_0x15cf63[_0xa8c4('0x52')]===0x0){return db[_0xa8c4('0x53')][_0xa8c4('0x4b')]({'name':_0x47b4e5[_0xa8c4('0x2c')],'resourceId':_0x47b4e5['id'],'type':_0x15cf63[_0xa8c4('0x2c')],'sectionId':_0x15cf63['id']},{})[_0xa8c4('0x28')](function(){return _0x3eeec7;});}else{return _0x3eeec7;}})[_0xa8c4('0x46')](function(_0x45454f){logger[_0xa8c4('0x54')](_0xa8c4('0x55'),_0x45454f);throw _0x45454f;});}return _0x3eeec7;})[_0xa8c4('0x28')](respondWithResult(_0x4d1048,0xc9))[_0xa8c4('0x46')](handleError(_0x4d1048,null));};exports['update']=function(_0x318a62,_0x559cfa){if(_0x318a62[_0xa8c4('0x56')]['id']){delete _0x318a62[_0xa8c4('0x56')]['id'];}return db[_0xa8c4('0x2f')][_0xa8c4('0x4a')]({'where':{'id':_0x318a62[_0xa8c4('0x57')]['id']}})['then'](handleEntityNotFound(_0x559cfa,null))[_0xa8c4('0x28')](saveUpdates(_0x318a62[_0xa8c4('0x56')],null))[_0xa8c4('0x28')](respondWithResult(_0x559cfa,null))[_0xa8c4('0x46')](handleError(_0x559cfa,null));};exports[_0xa8c4('0x29')]=function(_0x14944d,_0x437645){return db[_0xa8c4('0x2f')][_0xa8c4('0x4a')]({'where':{'id':_0x14944d[_0xa8c4('0x57')]['id']}})[_0xa8c4('0x28')](handleEntityNotFound(_0x437645,null))[_0xa8c4('0x28')](removeEntity(_0x437645,null))[_0xa8c4('0x46')](handleError(_0x437645,null));};exports[_0xa8c4('0x58')]=function(_0x12868c,_0x2df253){return db[_0xa8c4('0x2f')][_0xa8c4('0x58')]()[_0xa8c4('0x28')](respondWithResult(_0x2df253,null))['catch'](handleError(_0x2df253,null));};exports[_0xa8c4('0x59')]=function(_0x26a281,_0x58a6a1,_0xe9e0ca){var _0x22c8e4={'raw':!![],'where':{}},_0x5186a8={},_0x847279;return db[_0xa8c4('0x2f')][_0xa8c4('0x5a')]({'where':{'id':_0x26a281[_0xa8c4('0x57')]['id']}})[_0xa8c4('0x28')](handleEntityNotFound(_0x58a6a1,null))[_0xa8c4('0x28')](function(_0x526f28){if(_0x526f28){_0x847279=_0x526f28[_0xa8c4('0x2a')]({'plain':!![]});_0x5186a8[_0xa8c4('0x32')]=_[_0xa8c4('0x34')](db[_0xa8c4('0x5b')][_0xa8c4('0x30')]);_0x5186a8[_0xa8c4('0x33')]=_[_0xa8c4('0x34')](_0x26a281[_0xa8c4('0x33')]);_0x5186a8['filters']=_[_0xa8c4('0x36')](_0x5186a8[_0xa8c4('0x32')],_0x5186a8[_0xa8c4('0x33')]);_0x22c8e4['attributes']=_[_0xa8c4('0x36')](_0x5186a8['model'],qs['fields'](_0x26a281[_0xa8c4('0x33')]['fields']));_0x22c8e4['attributes']=_0x22c8e4[_0xa8c4('0x38')]['length']?_0x22c8e4[_0xa8c4('0x38')]:_0x5186a8[_0xa8c4('0x32')];if(!_0x26a281['query']['hasOwnProperty'](_0xa8c4('0x3a'))){_0x22c8e4[_0xa8c4('0x21')]=qs[_0xa8c4('0x21')](_0x26a281['query']['limit']);_0x22c8e4['offset']=qs[_0xa8c4('0x20')](_0x26a281[_0xa8c4('0x33')]['offset']);}_0x22c8e4[_0xa8c4('0x3b')]=qs[_0xa8c4('0x3c')](_0x26a281[_0xa8c4('0x33')][_0xa8c4('0x3c')]);_0x22c8e4[_0xa8c4('0x3d')]=qs[_0xa8c4('0x35')](_[_0xa8c4('0x5c')](_0x26a281[_0xa8c4('0x33')],_0x5186a8['filters']));_0x22c8e4[_0xa8c4('0x3d')][_0xa8c4('0x5d')]=_0x526f28['id'];if(_0x26a281[_0xa8c4('0x33')]['filter']){_0x22c8e4[_0xa8c4('0x3d')]=_[_0xa8c4('0x41')](_0x22c8e4[_0xa8c4('0x3d')],{'$or':_[_0xa8c4('0x2e')](_0x22c8e4[_0xa8c4('0x38')],function(_0x4028ac){var _0x28053b={};_0x28053b[_0x4028ac]={'$like':'%'+_0x26a281['query'][_0xa8c4('0x40')]+'%'};return _0x28053b;})});}_0x22c8e4=_[_0xa8c4('0x41')]({},_0x22c8e4,_0x26a281[_0xa8c4('0x42')]);return db[_0xa8c4('0x5b')][_0xa8c4('0x44')](_0x22c8e4);}})[_0xa8c4('0x28')](function(_0x2ca7fa){if(_0x2ca7fa){return db['User'][_0xa8c4('0x5e')]({'where':{'id':_['map'](_0x2ca7fa,_0xa8c4('0x5f')),'role':_0xa8c4('0x60')},'attributes':['id',_0xa8c4('0x2c'),_0xa8c4('0x61'),_0xa8c4('0x62'),'createdAt']});}})[_0xa8c4('0x28')](function(_0x45f543){if(_0x45f543){return{'count':_0x45f543[_0xa8c4('0x23')],'rows':_[_0xa8c4('0x2e')](_0x45f543[_0xa8c4('0x45')],function(_0x344e55){return{'membername':_0x344e55[_0xa8c4('0x2c')],'UserId':_0x344e55['id'],'queue_name':_0x847279[_0xa8c4('0x2c')],'MailQueueId':_0x847279['id'],'interface':util[_0xa8c4('0x63')]('%s/%s',_0xa8c4('0x64'),_0x344e55[_0xa8c4('0x2c')]),'penalty':0x0,'paused':_0x344e55['mailPause'],'createdAt':_0x344e55[_0xa8c4('0x65')],'updatedAt':_0x344e55['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xa8c4('0x28')](respondWithFilteredResult(_0x58a6a1,_0x22c8e4))['catch'](handleError(_0x58a6a1,null));};exports[_0xa8c4('0x66')]=function(_0xa3c653,_0xc3ac17,_0x2d522e){var _0x453d3f={};var _0x203440={};var _0x29d2dd;var _0x4d28cc;return db['MailQueue'][_0xa8c4('0x5a')]({'where':{'id':_0xa3c653[_0xa8c4('0x57')]['id']}})['then'](handleEntityNotFound(_0xc3ac17,null))[_0xa8c4('0x28')](function(_0x41706d){if(_0x41706d){_0x29d2dd=_0x41706d;_0x203440[_0xa8c4('0x32')]=_['keys'](db[_0xa8c4('0x67')][_0xa8c4('0x30')]);_0x203440['query']=_[_0xa8c4('0x34')](_0xa3c653[_0xa8c4('0x33')]);_0x203440[_0xa8c4('0x35')]=_[_0xa8c4('0x36')](_0x203440[_0xa8c4('0x32')],_0x203440[_0xa8c4('0x33')]);_0x453d3f[_0xa8c4('0x38')]=_['intersection'](_0x203440[_0xa8c4('0x32')],qs[_0xa8c4('0x37')](_0xa3c653[_0xa8c4('0x33')][_0xa8c4('0x37')]));_0x453d3f[_0xa8c4('0x38')]=_0x453d3f['attributes'][_0xa8c4('0x48')]?_0x453d3f['attributes']:_0x203440[_0xa8c4('0x32')];_0x453d3f['order']=qs[_0xa8c4('0x3c')](_0xa3c653[_0xa8c4('0x33')][_0xa8c4('0x3c')]);_0x453d3f[_0xa8c4('0x3d')]=qs[_0xa8c4('0x35')](_[_0xa8c4('0x5c')](_0xa3c653[_0xa8c4('0x33')],_0x203440[_0xa8c4('0x35')]));if(_0xa3c653[_0xa8c4('0x33')][_0xa8c4('0x40')]){_0x453d3f[_0xa8c4('0x3d')]=_[_0xa8c4('0x41')](_0x453d3f[_0xa8c4('0x3d')],{'$or':_['map'](_0x453d3f['attributes'],function(_0x13f4b5){var _0x5eb538={};_0x5eb538[_0x13f4b5]={'$like':'%'+_0xa3c653[_0xa8c4('0x33')]['filter']+'%'};return _0x5eb538;})});}_0x453d3f=_[_0xa8c4('0x41')]({},_0x453d3f,_0xa3c653[_0xa8c4('0x42')]);return _0x29d2dd['getTeams'](_0x453d3f);}})[_0xa8c4('0x28')](function(_0x5da079){if(_0x5da079){_0x4d28cc=_0x5da079[_0xa8c4('0x48')];if(!_0xa3c653[_0xa8c4('0x33')][_0xa8c4('0x39')](_0xa8c4('0x3a'))){_0x453d3f[_0xa8c4('0x21')]=qs['limit'](_0xa3c653[_0xa8c4('0x33')][_0xa8c4('0x21')]);_0x453d3f[_0xa8c4('0x20')]=qs['offset'](_0xa3c653[_0xa8c4('0x33')][_0xa8c4('0x20')]);}return _0x29d2dd['getTeams'](_0x453d3f);}})[_0xa8c4('0x28')](function(_0xdc8640){if(_0xdc8640){return _0xdc8640?{'count':_0x4d28cc,'rows':_0xdc8640}:null;}})[_0xa8c4('0x28')](respondWithResult(_0xc3ac17,null))[_0xa8c4('0x46')](handleError(_0xc3ac17,null));};exports[_0xa8c4('0x68')]=function(_0x299f12,_0x4ecca,_0x5fb4d1){var _0x3698af=_0x299f12[_0xa8c4('0x56')][_0xa8c4('0x69')];return db[_0xa8c4('0x67')][_0xa8c4('0x44')]({'where':{'id':_0x3698af},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0xa8c4('0x2c'),_0xa8c4('0x6a'),_0xa8c4('0x6b'),_0xa8c4('0x6c')],'raw':!![]}]})[_0xa8c4('0x28')](function(_0x2d9bb8){if(_0x2d9bb8){var _0x20556c=_[_0xa8c4('0x6d')](_0x2d9bb8,function(_0x596414){var _0x155680=_0x596414['get']({'plain':!![]});return _0x155680[_0xa8c4('0x6e')];});return db[_0xa8c4('0x2f')]['find']({'where':{'id':_0x299f12[_0xa8c4('0x57')]['id']}})[_0xa8c4('0x28')](function(_0x3178e7){return db['sequelize']['transaction'](function(_0x14dae2){return _0x3178e7[_0xa8c4('0x68')](_0x3698af,{'transaction':_0x14dae2})[_0xa8c4('0x28')](function(){return BPromise['each'](_0x20556c,function(_0x179894){return db['UserMailQueue'][_0xa8c4('0x6f')]({'where':{'UserId':_0x179894['id'],'MailQueueId':_0x299f12['params']['id']},'transaction':_0x14dae2});});})[_0xa8c4('0x28')](function(){_0x20556c[_0xa8c4('0x70')](function(_0xea79ca){socket[_0xa8c4('0x71')](_0xa8c4('0x72'),{'UserId':_0xea79ca['id'],'MailQueueId':_0x3178e7['id']});});});});});}})['then'](respondWithStatusCode(_0x4ecca,null))['catch'](handleError(_0x4ecca,null));};exports[_0xa8c4('0x73')]=function(_0xb7e8ab,_0x236af8,_0x238edd){return db['Team']['findAll']({'where':{'id':_0xb7e8ab['query']['ids']},'attributes':['id'],'include':[{'model':db[_0xa8c4('0x74')],'as':_0xa8c4('0x6e'),'attributes':['id'],'raw':!![]}]})[_0xa8c4('0x28')](handleEntityNotFound(_0x236af8,null))[_0xa8c4('0x28')](function(_0xadca40){var _0x297980=_[_0xa8c4('0x2e')](_0xadca40,'id');var _0x41e3d5=[];var _0x1c0824=[];var _0x3ce190=squel[_0xa8c4('0x75')]();_0x3ce190[_0xa8c4('0x76')](_0xa8c4('0x77'))[_0xa8c4('0x78')]('team_has_mail_queues','tq')['join'](_0xa8c4('0x79'),'ut',_0xa8c4('0x7a'))[_0xa8c4('0x3d')](_0xa8c4('0x7b'),_0xb7e8ab[_0xa8c4('0x57')]['id']);for(var _0x48a2c8=0x0;_0x48a2c8<_0xadca40[_0xa8c4('0x48')];_0x48a2c8+=0x1){let _0x12eb0a=_0xadca40[_0x48a2c8];for(var _0x9734=0x0;_0x9734<_0x12eb0a['Agents']['length'];_0x9734+=0x1){let _0x57fe50=_0x12eb0a[_0xa8c4('0x6e')][_0x9734];var _0x5c0ded=_0x3ce190[_0xa8c4('0x7c')]();_0x5c0ded[_0xa8c4('0x3d')](_0xa8c4('0x7d'),_0x57fe50['id']);_0x1c0824[_0xa8c4('0x7e')](db[_0xa8c4('0x7f')][_0xa8c4('0x33')](_0x5c0ded[_0xa8c4('0x80')](),{'type':db[_0xa8c4('0x7f')]['QueryTypes'][_0xa8c4('0x81')]})[_0xa8c4('0x28')](function(_0x3a4120){if(_0x3a4120['length']===0x1){return _0x57fe50['id'];}else{var _0x2acc0c=_[_0xa8c4('0x82')](_[_0xa8c4('0x2e')](_0x3a4120,_0xa8c4('0x83')),function(_0x77770f){return _['includes'](_0x297980,_0x77770f);});if(_0x2acc0c){return _0x57fe50['id'];}}}));}}return BPromise[_0xa8c4('0x84')](_0x1c0824)[_0xa8c4('0x28')](function(_0x5b80c5){_0x41e3d5=_(_0x41e3d5)[_0xa8c4('0x85')](_0x5b80c5)[_0xa8c4('0x86')]()[_0xa8c4('0x87')]();return db['MailQueue'][_0xa8c4('0x4a')]({'where':{'id':_0xb7e8ab[_0xa8c4('0x57')]['id']}})[_0xa8c4('0x28')](function(_0x5c126c){return db[_0xa8c4('0x7f')]['transaction'](function(_0x4171c3){return _0x5c126c['removeTeams'](_0xb7e8ab[_0xa8c4('0x33')][_0xa8c4('0x69')],{'transaction':_0x4171c3})[_0xa8c4('0x28')](function(){if(!_[_0xa8c4('0x88')](_0x41e3d5)){return _0x5c126c[_0xa8c4('0x89')](_0x41e3d5,{'transaction':_0x4171c3});}})[_0xa8c4('0x28')](function(){_0x41e3d5[_0xa8c4('0x70')](function(_0x30a210){socket[_0xa8c4('0x71')]('userMailQueue:remove',{'UserId':_0x30a210,'MailQueueId':_0x5c126c['id']});});});});});});})[_0xa8c4('0x28')](respondWithStatusCode(_0x236af8,null))[_0xa8c4('0x46')](handleError(_0x236af8,null));};exports[_0xa8c4('0x8a')]=function(_0xfebcae,_0x1249d4,_0x4c6422){return db[_0xa8c4('0x2f')][_0xa8c4('0x4a')]({'where':{'id':_0xfebcae[_0xa8c4('0x57')]['id']}})[_0xa8c4('0x28')](handleEntityNotFound(_0x1249d4,null))[_0xa8c4('0x28')](function(_0xe310ff){if(_0xe310ff){return _0xe310ff[_0xa8c4('0x8a')](_0xfebcae['body']['ids'],_[_0xa8c4('0x8b')](_0xfebcae[_0xa8c4('0x56')],[_0xa8c4('0x69'),'id'])||{})[_0xa8c4('0x8c')](function(_0x2efb24){for(var _0x2a4c24=0x0;_0x2a4c24<_0xfebcae[_0xa8c4('0x56')]['ids'][_0xa8c4('0x48')];_0x2a4c24+=0x1){socket[_0xa8c4('0x71')](_0xa8c4('0x72'),{'UserId':Number(_0xfebcae[_0xa8c4('0x56')][_0xa8c4('0x69')][_0x2a4c24]),'MailQueueId':Number(_0xfebcae['params']['id'])});}return _0x2efb24;});}})[_0xa8c4('0x28')](respondWithResult(_0x1249d4,null))[_0xa8c4('0x46')](handleError(_0x1249d4,null));};exports[_0xa8c4('0x89')]=function(_0x284481,_0x4d7a6d,_0x5d1a53){return db['MailQueue'][_0xa8c4('0x4a')]({'where':{'id':_0x284481['params']['id']}})[_0xa8c4('0x28')](handleEntityNotFound(_0x4d7a6d,null))[_0xa8c4('0x28')](function(_0x22d3f6){if(_0x22d3f6){return _0x22d3f6[_0xa8c4('0x89')](_0x284481[_0xa8c4('0x33')][_0xa8c4('0x69')])[_0xa8c4('0x28')](function(){if(_[_0xa8c4('0x8d')](_0x284481[_0xa8c4('0x33')][_0xa8c4('0x69')])){for(var _0x1c2927=0x0;_0x1c2927<_0x284481['query']['ids'][_0xa8c4('0x48')];_0x1c2927+=0x1){socket[_0xa8c4('0x71')](_0xa8c4('0x8e'),{'UserId':Number(_0x284481[_0xa8c4('0x33')]['ids'][_0x1c2927]),'MailQueueId':Number(_0x284481[_0xa8c4('0x57')]['id'])});}}else{socket[_0xa8c4('0x71')](_0xa8c4('0x8e'),{'UserId':Number(_0x284481[_0xa8c4('0x33')][_0xa8c4('0x69')]),'MailQueueId':Number(_0x284481['params']['id'])});}});}})[_0xa8c4('0x28')](respondWithStatusCode(_0x4d7a6d,null))['catch'](handleError(_0x4d7a6d,null));};exports[_0xa8c4('0x8f')]=function(_0x37e7b4,_0x5bda5a,_0x53bb22){var _0x1596f8={};var _0x34b80d={};var _0x8278b2;var _0x2f7aa8;return db[_0xa8c4('0x2f')][_0xa8c4('0x5a')]({'where':{'id':_0x37e7b4['params']['id']}})['then'](handleEntityNotFound(_0x5bda5a,null))[_0xa8c4('0x28')](function(_0x54e479){if(_0x54e479){_0x8278b2=_0x54e479;_0x34b80d[_0xa8c4('0x32')]=_['keys'](db[_0xa8c4('0x74')][_0xa8c4('0x30')]);_0x34b80d[_0xa8c4('0x33')]=_['keys'](_0x37e7b4[_0xa8c4('0x33')]);_0x34b80d[_0xa8c4('0x35')]=_[_0xa8c4('0x36')](_0x34b80d[_0xa8c4('0x32')],_0x34b80d[_0xa8c4('0x33')]);_0x1596f8['attributes']=_['intersection'](_0x34b80d[_0xa8c4('0x32')],qs[_0xa8c4('0x37')](_0x37e7b4['query'][_0xa8c4('0x37')]));_0x1596f8[_0xa8c4('0x38')]=_0x1596f8[_0xa8c4('0x38')][_0xa8c4('0x48')]?_0x1596f8[_0xa8c4('0x38')]:_0x34b80d['model'];_0x1596f8[_0xa8c4('0x3b')]=qs[_0xa8c4('0x3c')](_0x37e7b4[_0xa8c4('0x33')][_0xa8c4('0x3c')]);_0x1596f8[_0xa8c4('0x3d')]=qs[_0xa8c4('0x35')](_['pick'](_0x37e7b4[_0xa8c4('0x33')],_0x34b80d[_0xa8c4('0x35')]));if(_0x37e7b4[_0xa8c4('0x33')][_0xa8c4('0x40')]){_0x1596f8[_0xa8c4('0x3d')]=_[_0xa8c4('0x41')](_0x1596f8[_0xa8c4('0x3d')],{'$or':_[_0xa8c4('0x2e')](_0x1596f8[_0xa8c4('0x38')],function(_0x3660db){var _0x2e4ae7={};_0x2e4ae7[_0x3660db]={'$like':'%'+_0x37e7b4[_0xa8c4('0x33')][_0xa8c4('0x40')]+'%'};return _0x2e4ae7;})});}_0x1596f8=_[_0xa8c4('0x41')]({},_0x1596f8,_0x37e7b4[_0xa8c4('0x42')]);return _0x8278b2[_0xa8c4('0x8f')](_0x1596f8);}})['then'](function(_0x30902a){if(_0x30902a){_0x2f7aa8=_0x30902a[_0xa8c4('0x48')];if(!_0x37e7b4[_0xa8c4('0x33')][_0xa8c4('0x39')](_0xa8c4('0x3a'))){_0x1596f8['limit']=qs[_0xa8c4('0x21')](_0x37e7b4[_0xa8c4('0x33')][_0xa8c4('0x21')]);_0x1596f8[_0xa8c4('0x20')]=qs['offset'](_0x37e7b4[_0xa8c4('0x33')][_0xa8c4('0x20')]);}return _0x8278b2[_0xa8c4('0x8f')](_0x1596f8);}})['then'](function(_0x5688d6){if(_0x5688d6){return _0x5688d6?{'count':_0x2f7aa8,'rows':_0x5688d6}:null;}})[_0xa8c4('0x28')](respondWithResult(_0x5bda5a,null))[_0xa8c4('0x46')](handleError(_0x5bda5a,null));};
\ No newline at end of file
+var _0xbea3=['select','field','tq.TeamId','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','includes','union','value','isEmpty','removeAgents','userMailQueue:remove','addAgents','omit','spread','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./mailQueue.socket','register','sendStatus','end','json','undefined','offset','limit','status','set','Content-Range','reject','save','then','destroy','UserProfileResource','error','stack','index','map','MailQueue','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','where','merge','name','filter','includeAll','include','findAll','rows','catch','show','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','MailQueues','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','describe','getMembers','findOne','UserMailQueue','pick','MailQueueId','findAndCountAll','UserId','agent','mailPause','updatedAt','count','%s/%s','SIP','addTeams','ids','Team','User','Agents','online','voicePause','flatMap','sequelize','transaction','each','forEach','emit','userMailQueue:save'];(function(_0x515283,_0x813dea){var _0x38f836=function(_0x40c8f4){while(--_0x40c8f4){_0x515283['push'](_0x515283['shift']());}};_0x38f836(++_0x813dea);}(_0xbea3,0x137));var _0x3bea=function(_0x51369a,_0x2a69c1){_0x51369a=_0x51369a-0x0;var _0x283245=_0xbea3[_0x51369a];return _0x283245;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3bea('0x0'));var zipdir=require(_0x3bea('0x1'));var jsonpatch=require(_0x3bea('0x2'));var rp=require(_0x3bea('0x3'));var moment=require(_0x3bea('0x4'));var BPromise=require(_0x3bea('0x5'));var Mustache=require(_0x3bea('0x6'));var util=require(_0x3bea('0x7'));var path=require(_0x3bea('0x8'));var sox=require(_0x3bea('0x9'));var csv=require('to-csv');var ejs=require(_0x3bea('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3bea('0xb'));var squel=require(_0x3bea('0xc'));var crypto=require(_0x3bea('0xd'));var jsforce=require(_0x3bea('0xe'));var deskjs=require(_0x3bea('0xf'));var toCsv=require(_0x3bea('0x10'));var querystring=require(_0x3bea('0x11'));var Papa=require('papaparse');var Redis=require(_0x3bea('0x12'));var authService=require(_0x3bea('0x13'));var qs=require(_0x3bea('0x14'));var as=require(_0x3bea('0x15'));var hardwareService=require(_0x3bea('0x16'));var logger=require(_0x3bea('0x17'))(_0x3bea('0x18'));var utils=require(_0x3bea('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x3bea('0x1a'));var db=require(_0x3bea('0x1b'))['db'];config['redis']=_['defaults'](config[_0x3bea('0x1c')],{'host':_0x3bea('0x1d'),'port':0x18eb});var socket=require(_0x3bea('0x1e'))(new Redis(config[_0x3bea('0x1c')]));require(_0x3bea('0x1f'))[_0x3bea('0x20')](socket);function respondWithStatusCode(_0x4896c0,_0x26cebd){_0x26cebd=_0x26cebd||0xcc;return function(_0x487fe4){if(_0x487fe4){return _0x4896c0[_0x3bea('0x21')](_0x26cebd);}return _0x4896c0['status'](_0x26cebd)[_0x3bea('0x22')]();};}function respondWithResult(_0x5e72e2,_0x36a92b){_0x36a92b=_0x36a92b||0xc8;return function(_0x174012){if(_0x174012){return _0x5e72e2['status'](_0x36a92b)[_0x3bea('0x23')](_0x174012);}};}function respondWithFilteredResult(_0x37afff,_0x1d3bd3){return function(_0x5a3d84){if(_0x5a3d84){var _0x49a465=typeof _0x1d3bd3['offset']===_0x3bea('0x24')&&typeof _0x1d3bd3['limit']===_0x3bea('0x24');var _0x3e78b9=_0x5a3d84['count'];var _0x295d01=_0x49a465?0x0:_0x1d3bd3[_0x3bea('0x25')];var _0x41a71b=_0x49a465?_0x5a3d84['count']:_0x1d3bd3[_0x3bea('0x25')]+_0x1d3bd3[_0x3bea('0x26')];var _0x464bdb;if(_0x41a71b>=_0x3e78b9){_0x41a71b=_0x3e78b9;_0x464bdb=0xc8;}else{_0x464bdb=0xce;}_0x37afff[_0x3bea('0x27')](_0x464bdb);return _0x37afff[_0x3bea('0x28')](_0x3bea('0x29'),_0x295d01+'-'+_0x41a71b+'/'+_0x3e78b9)['json'](_0x5a3d84);}return null;};}function patchUpdates(_0x5c6e34){return function(_0x4ae0f5){try{jsonpatch['apply'](_0x4ae0f5,_0x5c6e34,!![]);}catch(_0xfcd882){return BPromise[_0x3bea('0x2a')](_0xfcd882);}return _0x4ae0f5[_0x3bea('0x2b')]();};}function saveUpdates(_0x1c9096,_0x1e8bbe){return function(_0xa8d9a6){if(_0xa8d9a6){return _0xa8d9a6['update'](_0x1c9096)[_0x3bea('0x2c')](function(_0x1fb741){return _0x1fb741;});}return null;};}function removeEntity(_0x125779,_0x5d176a){return function(_0x2d5cc7){if(_0x2d5cc7){return _0x2d5cc7[_0x3bea('0x2d')]()['then'](function(){var _0x861e0b=_0x2d5cc7['get']({'plain':!![]});var _0x48e0b5='MailQueues';return db[_0x3bea('0x2e')][_0x3bea('0x2d')]({'where':{'type':_0x48e0b5,'resourceId':_0x861e0b['id']}})['then'](function(){return _0x2d5cc7;});})[_0x3bea('0x2c')](function(){_0x125779['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x582eeb,_0x411ac8){return function(_0xe7cb30){if(!_0xe7cb30){_0x582eeb['sendStatus'](0x194);}return _0xe7cb30;};}function handleError(_0x37e2b4,_0x5b64c9){_0x5b64c9=_0x5b64c9||0x1f4;return function(_0x2faed2){logger[_0x3bea('0x2f')](_0x2faed2[_0x3bea('0x30')]);if(_0x2faed2['name']){delete _0x2faed2['name'];}_0x37e2b4[_0x3bea('0x27')](_0x5b64c9)['send'](_0x2faed2);};}exports[_0x3bea('0x31')]=function(_0x737868,_0x156328){var _0x9b4f6c={},_0x5dbbc2={},_0x58aa92={'count':0x0,'rows':[]};var _0x38724c=_[_0x3bea('0x32')](db[_0x3bea('0x33')][_0x3bea('0x34')],function(_0x1f5740){return{'name':_0x1f5740[_0x3bea('0x35')],'type':_0x1f5740[_0x3bea('0x36')]['key']};});_0x5dbbc2[_0x3bea('0x37')]=_[_0x3bea('0x32')](_0x38724c,'name');_0x5dbbc2[_0x3bea('0x38')]=_[_0x3bea('0x39')](_0x737868['query']);_0x5dbbc2['filters']=_[_0x3bea('0x3a')](_0x5dbbc2[_0x3bea('0x37')],_0x5dbbc2[_0x3bea('0x38')]);_0x9b4f6c[_0x3bea('0x3b')]=_[_0x3bea('0x3a')](_0x5dbbc2[_0x3bea('0x37')],qs[_0x3bea('0x3c')](_0x737868[_0x3bea('0x38')]['fields']));_0x9b4f6c[_0x3bea('0x3b')]=_0x9b4f6c[_0x3bea('0x3b')][_0x3bea('0x3d')]?_0x9b4f6c[_0x3bea('0x3b')]:_0x5dbbc2['model'];if(!_0x737868[_0x3bea('0x38')][_0x3bea('0x3e')](_0x3bea('0x3f'))){_0x9b4f6c['limit']=qs['limit'](_0x737868[_0x3bea('0x38')]['limit']);_0x9b4f6c[_0x3bea('0x25')]=qs['offset'](_0x737868[_0x3bea('0x38')]['offset']);}_0x9b4f6c[_0x3bea('0x40')]=qs[_0x3bea('0x41')](_0x737868['query']['sort']);_0x9b4f6c['where']=qs[_0x3bea('0x42')](_['pick'](_0x737868[_0x3bea('0x38')],_0x5dbbc2['filters']),_0x38724c);if(_0x737868['query']['filter']){_0x9b4f6c[_0x3bea('0x43')]=_[_0x3bea('0x44')](_0x9b4f6c[_0x3bea('0x43')],{'$or':_[_0x3bea('0x32')](_0x38724c,function(_0x126db2){if(_0x126db2[_0x3bea('0x36')]!=='VIRTUAL'){var _0x29e8eb={};_0x29e8eb[_0x126db2[_0x3bea('0x45')]]={'$like':'%'+_0x737868[_0x3bea('0x38')][_0x3bea('0x46')]+'%'};return _0x29e8eb;}})});}_0x9b4f6c=_['merge']({},_0x9b4f6c,_0x737868['options']);var _0x2f8297={'where':_0x9b4f6c[_0x3bea('0x43')]};return db[_0x3bea('0x33')]['count'](_0x2f8297)[_0x3bea('0x2c')](function(_0xbcd84b){_0x58aa92['count']=_0xbcd84b;if(_0x737868[_0x3bea('0x38')][_0x3bea('0x47')]){_0x9b4f6c[_0x3bea('0x48')]=[{'all':!![]}];}return db[_0x3bea('0x33')][_0x3bea('0x49')](_0x9b4f6c);})[_0x3bea('0x2c')](function(_0x4c5780){_0x58aa92[_0x3bea('0x4a')]=_0x4c5780;return _0x58aa92;})['then'](respondWithFilteredResult(_0x156328,_0x9b4f6c))[_0x3bea('0x4b')](handleError(_0x156328,null));};exports[_0x3bea('0x4c')]=function(_0x2d1c0f,_0x37626c){var _0x433425={'raw':!![],'where':{'id':_0x2d1c0f['params']['id']}},_0x323571={};_0x323571[_0x3bea('0x37')]=_[_0x3bea('0x39')](db[_0x3bea('0x33')][_0x3bea('0x34')]);_0x323571['query']=_['keys'](_0x2d1c0f[_0x3bea('0x38')]);_0x323571[_0x3bea('0x42')]=_[_0x3bea('0x3a')](_0x323571['model'],_0x323571[_0x3bea('0x38')]);_0x433425[_0x3bea('0x3b')]=_['intersection'](_0x323571[_0x3bea('0x37')],qs['fields'](_0x2d1c0f[_0x3bea('0x38')]['fields']));_0x433425['attributes']=_0x433425['attributes'][_0x3bea('0x3d')]?_0x433425['attributes']:_0x323571['model'];if(_0x2d1c0f['query']['includeAll']){_0x433425[_0x3bea('0x48')]=[{'all':!![]}];}_0x433425=_[_0x3bea('0x44')]({},_0x433425,_0x2d1c0f[_0x3bea('0x4d')]);return db[_0x3bea('0x33')][_0x3bea('0x4e')](_0x433425)[_0x3bea('0x2c')](handleEntityNotFound(_0x37626c,null))['then'](respondWithResult(_0x37626c,null))['catch'](handleError(_0x37626c,null));};exports[_0x3bea('0x4f')]=function(_0x1afe41,_0x538e12){return db[_0x3bea('0x33')][_0x3bea('0x4f')](_0x1afe41[_0x3bea('0x50')],{})['then'](function(_0x510f5d){var _0x1da334=_0x1afe41[_0x3bea('0x51')]['get']({'plain':!![]});if(!_0x1da334)throw new Error(_0x3bea('0x52'));if(_0x1da334['role']===_0x3bea('0x51')){var _0x3c399c=_0x510f5d[_0x3bea('0x53')]({'plain':!![]});var _0x3bfd70=_0x3bea('0x54');return db[_0x3bea('0x55')][_0x3bea('0x4e')]({'where':{'name':_0x3bfd70,'userProfileId':_0x1da334[_0x3bea('0x56')]},'raw':!![]})[_0x3bea('0x2c')](function(_0x1aa5c2){if(_0x1aa5c2&&_0x1aa5c2['autoAssociation']===0x0){return db[_0x3bea('0x2e')][_0x3bea('0x4f')]({'name':_0x3c399c[_0x3bea('0x45')],'resourceId':_0x3c399c['id'],'type':_0x1aa5c2[_0x3bea('0x45')],'sectionId':_0x1aa5c2['id']},{})[_0x3bea('0x2c')](function(){return _0x510f5d;});}else{return _0x510f5d;}})['catch'](function(_0x3e11ea){logger[_0x3bea('0x2f')](_0x3bea('0x57'),_0x3e11ea);throw _0x3e11ea;});}return _0x510f5d;})['then'](respondWithResult(_0x538e12,0xc9))[_0x3bea('0x4b')](handleError(_0x538e12,null));};exports[_0x3bea('0x58')]=function(_0x3dfc3c,_0x39de76){if(_0x3dfc3c['body']['id']){delete _0x3dfc3c['body']['id'];}return db['MailQueue'][_0x3bea('0x4e')]({'where':{'id':_0x3dfc3c[_0x3bea('0x59')]['id']}})['then'](handleEntityNotFound(_0x39de76,null))['then'](saveUpdates(_0x3dfc3c[_0x3bea('0x50')],null))[_0x3bea('0x2c')](respondWithResult(_0x39de76,null))['catch'](handleError(_0x39de76,null));};exports[_0x3bea('0x2d')]=function(_0x40051d,_0x5633e1){return db[_0x3bea('0x33')]['find']({'where':{'id':_0x40051d[_0x3bea('0x59')]['id']}})[_0x3bea('0x2c')](handleEntityNotFound(_0x5633e1,null))[_0x3bea('0x2c')](removeEntity(_0x5633e1,null))[_0x3bea('0x4b')](handleError(_0x5633e1,null));};exports[_0x3bea('0x5a')]=function(_0x1a1ac1,_0x84f0b2){return db[_0x3bea('0x33')][_0x3bea('0x5a')]()[_0x3bea('0x2c')](respondWithResult(_0x84f0b2,null))[_0x3bea('0x4b')](handleError(_0x84f0b2,null));};exports[_0x3bea('0x5b')]=function(_0x23fc01,_0x447d44,_0x15849a){var _0x23ceed={'raw':!![],'where':{}},_0x3c6c99={},_0x4c126a;return db[_0x3bea('0x33')][_0x3bea('0x5c')]({'where':{'id':_0x23fc01['params']['id']}})['then'](handleEntityNotFound(_0x447d44,null))[_0x3bea('0x2c')](function(_0x39ee9c){if(_0x39ee9c){_0x4c126a=_0x39ee9c[_0x3bea('0x53')]({'plain':!![]});_0x3c6c99['model']=_[_0x3bea('0x39')](db[_0x3bea('0x5d')][_0x3bea('0x34')]);_0x3c6c99['query']=_['keys'](_0x23fc01['query']);_0x3c6c99[_0x3bea('0x42')]=_[_0x3bea('0x3a')](_0x3c6c99[_0x3bea('0x37')],_0x3c6c99[_0x3bea('0x38')]);_0x23ceed['attributes']=_[_0x3bea('0x3a')](_0x3c6c99[_0x3bea('0x37')],qs[_0x3bea('0x3c')](_0x23fc01[_0x3bea('0x38')][_0x3bea('0x3c')]));_0x23ceed['attributes']=_0x23ceed[_0x3bea('0x3b')][_0x3bea('0x3d')]?_0x23ceed[_0x3bea('0x3b')]:_0x3c6c99[_0x3bea('0x37')];if(!_0x23fc01[_0x3bea('0x38')][_0x3bea('0x3e')](_0x3bea('0x3f'))){_0x23ceed['limit']=qs['limit'](_0x23fc01[_0x3bea('0x38')][_0x3bea('0x26')]);_0x23ceed[_0x3bea('0x25')]=qs[_0x3bea('0x25')](_0x23fc01['query'][_0x3bea('0x25')]);}_0x23ceed[_0x3bea('0x40')]=qs[_0x3bea('0x41')](_0x23fc01[_0x3bea('0x38')][_0x3bea('0x41')]);_0x23ceed[_0x3bea('0x43')]=qs[_0x3bea('0x42')](_[_0x3bea('0x5e')](_0x23fc01[_0x3bea('0x38')],_0x3c6c99[_0x3bea('0x42')]));_0x23ceed[_0x3bea('0x43')][_0x3bea('0x5f')]=_0x39ee9c['id'];if(_0x23fc01[_0x3bea('0x38')][_0x3bea('0x46')]){_0x23ceed[_0x3bea('0x43')]=_[_0x3bea('0x44')](_0x23ceed[_0x3bea('0x43')],{'$or':_[_0x3bea('0x32')](_0x23ceed[_0x3bea('0x3b')],function(_0x2ff7ca){var _0x5ea80e={};_0x5ea80e[_0x2ff7ca]={'$like':'%'+_0x23fc01['query'][_0x3bea('0x46')]+'%'};return _0x5ea80e;})});}_0x23ceed=_['merge']({},_0x23ceed,_0x23fc01['options']);return db['UserMailQueue'][_0x3bea('0x49')](_0x23ceed);}})[_0x3bea('0x2c')](function(_0x5d4d7d){if(_0x5d4d7d){return db['User'][_0x3bea('0x60')]({'where':{'id':_[_0x3bea('0x32')](_0x5d4d7d,_0x3bea('0x61')),'role':_0x3bea('0x62')},'attributes':['id',_0x3bea('0x45'),_0x3bea('0x63'),_0x3bea('0x64'),'createdAt']});}})[_0x3bea('0x2c')](function(_0x1969b2){if(_0x1969b2){return{'count':_0x1969b2[_0x3bea('0x65')],'rows':_[_0x3bea('0x32')](_0x1969b2[_0x3bea('0x4a')],function(_0x393b88){return{'membername':_0x393b88[_0x3bea('0x45')],'UserId':_0x393b88['id'],'queue_name':_0x4c126a[_0x3bea('0x45')],'MailQueueId':_0x4c126a['id'],'interface':util['format'](_0x3bea('0x66'),_0x3bea('0x67'),_0x393b88[_0x3bea('0x45')]),'penalty':0x0,'paused':_0x393b88[_0x3bea('0x63')],'createdAt':_0x393b88['createdAt'],'updatedAt':_0x393b88['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x447d44,_0x23ceed))[_0x3bea('0x4b')](handleError(_0x447d44,null));};exports['getTeams']=function(_0x28001c,_0x56d630,_0x5a3fc4){var _0x4451e4={};var _0x248384={};var _0x1584af;var _0x3f0ed3;return db[_0x3bea('0x33')][_0x3bea('0x5c')]({'where':{'id':_0x28001c[_0x3bea('0x59')]['id']}})[_0x3bea('0x2c')](handleEntityNotFound(_0x56d630,null))[_0x3bea('0x2c')](function(_0x2a0f3b){if(_0x2a0f3b){_0x1584af=_0x2a0f3b;_0x248384[_0x3bea('0x37')]=_[_0x3bea('0x39')](db['Team'][_0x3bea('0x34')]);_0x248384[_0x3bea('0x38')]=_[_0x3bea('0x39')](_0x28001c[_0x3bea('0x38')]);_0x248384[_0x3bea('0x42')]=_[_0x3bea('0x3a')](_0x248384['model'],_0x248384[_0x3bea('0x38')]);_0x4451e4[_0x3bea('0x3b')]=_[_0x3bea('0x3a')](_0x248384['model'],qs[_0x3bea('0x3c')](_0x28001c[_0x3bea('0x38')][_0x3bea('0x3c')]));_0x4451e4[_0x3bea('0x3b')]=_0x4451e4[_0x3bea('0x3b')]['length']?_0x4451e4[_0x3bea('0x3b')]:_0x248384[_0x3bea('0x37')];_0x4451e4[_0x3bea('0x40')]=qs['sort'](_0x28001c[_0x3bea('0x38')][_0x3bea('0x41')]);_0x4451e4['where']=qs[_0x3bea('0x42')](_[_0x3bea('0x5e')](_0x28001c[_0x3bea('0x38')],_0x248384['filters']));if(_0x28001c[_0x3bea('0x38')][_0x3bea('0x46')]){_0x4451e4[_0x3bea('0x43')]=_[_0x3bea('0x44')](_0x4451e4['where'],{'$or':_[_0x3bea('0x32')](_0x4451e4['attributes'],function(_0x426d62){var _0x22ec12={};_0x22ec12[_0x426d62]={'$like':'%'+_0x28001c[_0x3bea('0x38')]['filter']+'%'};return _0x22ec12;})});}_0x4451e4=_[_0x3bea('0x44')]({},_0x4451e4,_0x28001c[_0x3bea('0x4d')]);return _0x1584af['getTeams'](_0x4451e4);}})[_0x3bea('0x2c')](function(_0x66efdf){if(_0x66efdf){_0x3f0ed3=_0x66efdf[_0x3bea('0x3d')];if(!_0x28001c[_0x3bea('0x38')][_0x3bea('0x3e')](_0x3bea('0x3f'))){_0x4451e4[_0x3bea('0x26')]=qs[_0x3bea('0x26')](_0x28001c[_0x3bea('0x38')]['limit']);_0x4451e4[_0x3bea('0x25')]=qs[_0x3bea('0x25')](_0x28001c['query'][_0x3bea('0x25')]);}return _0x1584af['getTeams'](_0x4451e4);}})[_0x3bea('0x2c')](function(_0x57095b){if(_0x57095b){return _0x57095b?{'count':_0x3f0ed3,'rows':_0x57095b}:null;}})[_0x3bea('0x2c')](respondWithResult(_0x56d630,null))[_0x3bea('0x4b')](handleError(_0x56d630,null));};exports[_0x3bea('0x68')]=function(_0xeae23,_0x1a5364,_0x40fc86){var _0x83a85=_0xeae23['body'][_0x3bea('0x69')];return db[_0x3bea('0x6a')]['findAll']({'where':{'id':_0x83a85},'attributes':['id'],'include':[{'model':db[_0x3bea('0x6b')],'as':_0x3bea('0x6c'),'attributes':['id',_0x3bea('0x45'),_0x3bea('0x6d'),_0x3bea('0x6e'),'interface'],'raw':!![]}]})[_0x3bea('0x2c')](function(_0x21853f){if(_0x21853f){var _0x336f7a=_[_0x3bea('0x6f')](_0x21853f,function(_0x1e6c61){var _0x5023ac=_0x1e6c61['get']({'plain':!![]});return _0x5023ac[_0x3bea('0x6c')];});return db[_0x3bea('0x33')][_0x3bea('0x4e')]({'where':{'id':_0xeae23[_0x3bea('0x59')]['id']}})[_0x3bea('0x2c')](function(_0x3450ad){return db[_0x3bea('0x70')][_0x3bea('0x71')](function(_0x176070){return _0x3450ad[_0x3bea('0x68')](_0x83a85,{'transaction':_0x176070})[_0x3bea('0x2c')](function(){return BPromise[_0x3bea('0x72')](_0x336f7a,function(_0x1a4b0d){return db['UserMailQueue']['findOrCreate']({'where':{'UserId':_0x1a4b0d['id'],'MailQueueId':_0xeae23[_0x3bea('0x59')]['id']},'transaction':_0x176070});});})[_0x3bea('0x2c')](function(){_0x336f7a[_0x3bea('0x73')](function(_0x56f409){socket[_0x3bea('0x74')](_0x3bea('0x75'),{'UserId':_0x56f409['id'],'MailQueueId':_0x3450ad['id']});});});});});}})[_0x3bea('0x2c')](respondWithStatusCode(_0x1a5364,null))['catch'](handleError(_0x1a5364,null));};exports['removeTeams']=function(_0x44e3b6,_0x5a2efa,_0x8fe192){return db['Team'][_0x3bea('0x49')]({'where':{'id':_0x44e3b6['query'][_0x3bea('0x69')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x3bea('0x6c'),'attributes':['id'],'raw':!![]}]})[_0x3bea('0x2c')](handleEntityNotFound(_0x5a2efa,null))[_0x3bea('0x2c')](function(_0x31bdc8){var _0xe10cb6=_[_0x3bea('0x32')](_0x31bdc8,'id');var _0x2446d5=[];var _0x521395=[];var _0xdd2f25=squel[_0x3bea('0x76')]();_0xdd2f25[_0x3bea('0x77')](_0x3bea('0x78'))['from']('team_has_mail_queues','tq')[_0x3bea('0x79')](_0x3bea('0x7a'),'ut',_0x3bea('0x7b'))[_0x3bea('0x43')](_0x3bea('0x7c'),_0x44e3b6['params']['id']);for(var _0x4007c1=0x0;_0x4007c1<_0x31bdc8[_0x3bea('0x3d')];_0x4007c1+=0x1){let _0x17e294=_0x31bdc8[_0x4007c1];for(var _0x1f748e=0x0;_0x1f748e<_0x17e294[_0x3bea('0x6c')]['length'];_0x1f748e+=0x1){let _0x51ae92=_0x17e294[_0x3bea('0x6c')][_0x1f748e];var _0xd632ce=_0xdd2f25[_0x3bea('0x7d')]();_0xd632ce[_0x3bea('0x43')](_0x3bea('0x7e'),_0x51ae92['id']);_0x521395[_0x3bea('0x7f')](db['sequelize'][_0x3bea('0x38')](_0xd632ce['toString'](),{'type':db[_0x3bea('0x70')][_0x3bea('0x80')][_0x3bea('0x81')]})[_0x3bea('0x2c')](function(_0x2a8621){if(_0x2a8621[_0x3bea('0x3d')]===0x1){return _0x51ae92['id'];}else{var _0x1f5900=_[_0x3bea('0x82')](_[_0x3bea('0x32')](_0x2a8621,_0x3bea('0x83')),function(_0xf154e4){return _[_0x3bea('0x84')](_0xe10cb6,_0xf154e4);});if(_0x1f5900){return _0x51ae92['id'];}}}));}}return BPromise['all'](_0x521395)[_0x3bea('0x2c')](function(_0x54006b){_0x2446d5=_(_0x2446d5)[_0x3bea('0x85')](_0x54006b)['compact']()[_0x3bea('0x86')]();return db['MailQueue'][_0x3bea('0x4e')]({'where':{'id':_0x44e3b6[_0x3bea('0x59')]['id']}})[_0x3bea('0x2c')](function(_0x1cc500){return db[_0x3bea('0x70')][_0x3bea('0x71')](function(_0x32abd6){return _0x1cc500['removeTeams'](_0x44e3b6[_0x3bea('0x38')][_0x3bea('0x69')],{'transaction':_0x32abd6})[_0x3bea('0x2c')](function(){if(!_[_0x3bea('0x87')](_0x2446d5)){return _0x1cc500[_0x3bea('0x88')](_0x2446d5,{'transaction':_0x32abd6});}})[_0x3bea('0x2c')](function(){_0x2446d5[_0x3bea('0x73')](function(_0x5e6e5f){socket[_0x3bea('0x74')](_0x3bea('0x89'),{'UserId':_0x5e6e5f,'MailQueueId':_0x1cc500['id']});});});});});});})['then'](respondWithStatusCode(_0x5a2efa,null))[_0x3bea('0x4b')](handleError(_0x5a2efa,null));};exports[_0x3bea('0x8a')]=function(_0x3fc980,_0x304292,_0xce7bac){return db[_0x3bea('0x33')]['find']({'where':{'id':_0x3fc980[_0x3bea('0x59')]['id']}})[_0x3bea('0x2c')](handleEntityNotFound(_0x304292,null))[_0x3bea('0x2c')](function(_0x3bd360){if(_0x3bd360){return _0x3bd360[_0x3bea('0x8a')](_0x3fc980[_0x3bea('0x50')][_0x3bea('0x69')],_[_0x3bea('0x8b')](_0x3fc980['body'],[_0x3bea('0x69'),'id'])||{})[_0x3bea('0x8c')](function(_0x57a881){for(var _0x43da20=0x0;_0x43da20<_0x3fc980[_0x3bea('0x50')][_0x3bea('0x69')][_0x3bea('0x3d')];_0x43da20+=0x1){socket[_0x3bea('0x74')](_0x3bea('0x75'),{'UserId':Number(_0x3fc980[_0x3bea('0x50')]['ids'][_0x43da20]),'MailQueueId':Number(_0x3fc980[_0x3bea('0x59')]['id'])});}return _0x57a881;});}})[_0x3bea('0x2c')](respondWithResult(_0x304292,null))[_0x3bea('0x4b')](handleError(_0x304292,null));};exports['removeAgents']=function(_0x3f8189,_0x52800b,_0x47c341){return db['MailQueue']['find']({'where':{'id':_0x3f8189[_0x3bea('0x59')]['id']}})[_0x3bea('0x2c')](handleEntityNotFound(_0x52800b,null))[_0x3bea('0x2c')](function(_0x4eaee2){if(_0x4eaee2){return _0x4eaee2[_0x3bea('0x88')](_0x3f8189['query'][_0x3bea('0x69')])[_0x3bea('0x2c')](function(){if(_[_0x3bea('0x8d')](_0x3f8189[_0x3bea('0x38')][_0x3bea('0x69')])){for(var _0x582bcb=0x0;_0x582bcb<_0x3f8189[_0x3bea('0x38')][_0x3bea('0x69')][_0x3bea('0x3d')];_0x582bcb+=0x1){socket[_0x3bea('0x74')](_0x3bea('0x89'),{'UserId':Number(_0x3f8189[_0x3bea('0x38')][_0x3bea('0x69')][_0x582bcb]),'MailQueueId':Number(_0x3f8189[_0x3bea('0x59')]['id'])});}}else{socket['emit'](_0x3bea('0x89'),{'UserId':Number(_0x3f8189[_0x3bea('0x38')][_0x3bea('0x69')]),'MailQueueId':Number(_0x3f8189['params']['id'])});}});}})['then'](respondWithStatusCode(_0x52800b,null))[_0x3bea('0x4b')](handleError(_0x52800b,null));};exports[_0x3bea('0x8e')]=function(_0x2cc380,_0x4c83e6,_0x3e06ce){var _0x2bdd99={};var _0x2afba0={};var _0x457bda;var _0x53e09f;return db[_0x3bea('0x33')][_0x3bea('0x5c')]({'where':{'id':_0x2cc380[_0x3bea('0x59')]['id']}})['then'](handleEntityNotFound(_0x4c83e6,null))[_0x3bea('0x2c')](function(_0x1c8e38){if(_0x1c8e38){_0x457bda=_0x1c8e38;_0x2afba0['model']=_[_0x3bea('0x39')](db[_0x3bea('0x6b')]['rawAttributes']);_0x2afba0[_0x3bea('0x38')]=_[_0x3bea('0x39')](_0x2cc380['query']);_0x2afba0[_0x3bea('0x42')]=_[_0x3bea('0x3a')](_0x2afba0[_0x3bea('0x37')],_0x2afba0[_0x3bea('0x38')]);_0x2bdd99[_0x3bea('0x3b')]=_[_0x3bea('0x3a')](_0x2afba0[_0x3bea('0x37')],qs[_0x3bea('0x3c')](_0x2cc380[_0x3bea('0x38')][_0x3bea('0x3c')]));_0x2bdd99[_0x3bea('0x3b')]=_0x2bdd99[_0x3bea('0x3b')]['length']?_0x2bdd99['attributes']:_0x2afba0[_0x3bea('0x37')];_0x2bdd99['order']=qs[_0x3bea('0x41')](_0x2cc380[_0x3bea('0x38')][_0x3bea('0x41')]);_0x2bdd99['where']=qs['filters'](_[_0x3bea('0x5e')](_0x2cc380[_0x3bea('0x38')],_0x2afba0['filters']));if(_0x2cc380[_0x3bea('0x38')]['filter']){_0x2bdd99[_0x3bea('0x43')]=_[_0x3bea('0x44')](_0x2bdd99[_0x3bea('0x43')],{'$or':_['map'](_0x2bdd99[_0x3bea('0x3b')],function(_0x11d2e0){var _0x20d0fe={};_0x20d0fe[_0x11d2e0]={'$like':'%'+_0x2cc380[_0x3bea('0x38')][_0x3bea('0x46')]+'%'};return _0x20d0fe;})});}_0x2bdd99=_['merge']({},_0x2bdd99,_0x2cc380[_0x3bea('0x4d')]);return _0x457bda[_0x3bea('0x8e')](_0x2bdd99);}})[_0x3bea('0x2c')](function(_0x16abab){if(_0x16abab){_0x53e09f=_0x16abab[_0x3bea('0x3d')];if(!_0x2cc380[_0x3bea('0x38')][_0x3bea('0x3e')](_0x3bea('0x3f'))){_0x2bdd99['limit']=qs['limit'](_0x2cc380[_0x3bea('0x38')][_0x3bea('0x26')]);_0x2bdd99['offset']=qs['offset'](_0x2cc380[_0x3bea('0x38')][_0x3bea('0x25')]);}return _0x457bda[_0x3bea('0x8e')](_0x2bdd99);}})['then'](function(_0x70de59){if(_0x70de59){return _0x70de59?{'count':_0x53e09f,'rows':_0x70de59}:null;}})[_0x3bea('0x2c')](respondWithResult(_0x4c83e6,null))['catch'](handleError(_0x4c83e6,null));};
\ No newline at end of file
index e2f98ff..a969ed2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x303f=['save','remove','emit','hasOwnProperty','exports','../../mysqldb','MailQueue'];(function(_0x4f8cfc,_0x397ae3){var _0x4dedc0=function(_0x4c6be5){while(--_0x4c6be5){_0x4f8cfc['push'](_0x4f8cfc['shift']());}};_0x4dedc0(++_0x397ae3);}(_0x303f,0xc9));var _0xf303=function(_0x4e7afb,_0x5260b2){_0x4e7afb=_0x4e7afb-0x0;var _0x311c57=_0x303f[_0x4e7afb];return _0x311c57;};'use strict';var EventEmitter=require('events');var MailQueue=require(_0xf303('0x0'))['db'][_0xf303('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf303('0x2'),'afterUpdate':'update','afterDestroy':_0xf303('0x3')};function emitEvent(_0x2a5c9a){return function(_0xcb8f39,_0x366dc6,_0x574e26){MailQueueEvents['emit'](_0x2a5c9a+':'+_0xcb8f39['id'],_0xcb8f39);MailQueueEvents[_0xf303('0x4')](_0x2a5c9a,_0xcb8f39);_0x574e26(null);};}for(var e in events){if(events[_0xf303('0x5')](e)){var event=events[e];MailQueue['hook'](e,emitEvent(event));}}module[_0xf303('0x6')]=MailQueueEvents;
\ No newline at end of file
+var _0x5b29=['exports','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x5bd35e,_0x436e1d){var _0x213520=function(_0x285710){while(--_0x285710){_0x5bd35e['push'](_0x5bd35e['shift']());}};_0x213520(++_0x436e1d);}(_0x5b29,0xfd));var _0x95b2=function(_0x46bd41,_0x322faa){_0x46bd41=_0x46bd41-0x0;var _0x3be010=_0x5b29[_0x46bd41];return _0x3be010;};'use strict';var EventEmitter=require('events');var MailQueue=require(_0x95b2('0x0'))['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x95b2('0x1')](0x0);var events={'afterCreate':_0x95b2('0x2'),'afterUpdate':_0x95b2('0x3'),'afterDestroy':_0x95b2('0x4')};function emitEvent(_0x136ae7){return function(_0x52f075,_0x25cb85,_0x25eb29){MailQueueEvents[_0x95b2('0x5')](_0x136ae7+':'+_0x52f075['id'],_0x52f075);MailQueueEvents[_0x95b2('0x5')](_0x136ae7,_0x52f075);_0x25eb29(null);};}for(var e in events){if(events[_0x95b2('0x6')](e)){var event=events[e];MailQueue[_0x95b2('0x7')](e,emitEvent(event));}}module[_0x95b2('0x8')]=MailQueueEvents;
\ No newline at end of file
index 7ac608c..74b06ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7068=['path','rimraf','../../config/environment','./mailQueue.attributes','exports','mail_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0xbe4c61,_0x24e06a){var _0x35076d=function(_0x126a03){while(--_0x126a03){_0xbe4c61['push'](_0xbe4c61['shift']());}};_0x35076d(++_0x24e06a);}(_0x7068,0x165));var _0x8706=function(_0x616290,_0x280b7f){_0x616290=_0x616290-0x0;var _0x453879=_0x7068[_0x616290];return _0x453879;};'use strict';var _=require(_0x8706('0x0'));var util=require(_0x8706('0x1'));var logger=require(_0x8706('0x2'))(_0x8706('0x3'));var moment=require(_0x8706('0x4'));var BPromise=require(_0x8706('0x5'));var rp=require(_0x8706('0x6'));var fs=require('fs');var path=require(_0x8706('0x7'));var rimraf=require(_0x8706('0x8'));var config=require(_0x8706('0x9'));var attributes=require(_0x8706('0xa'));module[_0x8706('0xb')]=function(_0x58f667,_0x3a3062){return _0x58f667['define']('MailQueue',attributes,{'tableName':_0x8706('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7631=['exports','define','MailQueue','mail_queues','lodash','util','api','moment','bluebird','path','../../config/environment','./mailQueue.attributes'];(function(_0xee46b6,_0x291491){var _0x1d01d2=function(_0x3b5066){while(--_0x3b5066){_0xee46b6['push'](_0xee46b6['shift']());}};_0x1d01d2(++_0x291491);}(_0x7631,0xf4));var _0x1763=function(_0x26fea8,_0x325f6b){_0x26fea8=_0x26fea8-0x0;var _0x3e5e6d=_0x7631[_0x26fea8];return _0x3e5e6d;};'use strict';var _=require(_0x1763('0x0'));var util=require(_0x1763('0x1'));var logger=require('../../config/logger')(_0x1763('0x2'));var moment=require(_0x1763('0x3'));var BPromise=require(_0x1763('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1763('0x5'));var rimraf=require('rimraf');var config=require(_0x1763('0x6'));var attributes=require(_0x1763('0x7'));module[_0x1763('0x8')]=function(_0x2cc0ad,_0x36ebb4){return _0x2cc0ad[_0x1763('0x9')](_0x1763('0xa'),attributes,{'tableName':_0x1763('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ec93c0e..ec605a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d6e=['raw','where','attributes','limit','include','map','model','GetMailQueue','ShowMailQueue','find','moment','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','redis','defaults','socket.io-emitter','./mailQueue.socket','register','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','MailQueue','findAll','options'];(function(_0x5eaa6a,_0x41d4f9){var _0x332a98=function(_0x27e532){while(--_0x27e532){_0x5eaa6a['push'](_0x5eaa6a['shift']());}};_0x332a98(++_0x41d4f9);}(_0x7d6e,0x76));var _0xe7d6=function(_0x334fea,_0x1f1e18){_0x334fea=_0x334fea-0x0;var _0x3c5829=_0x7d6e[_0x334fea];return _0x3c5829;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe7d6('0x0'));var BPromise=require('bluebird');var rs=require(_0xe7d6('0x1'));var fs=require('fs');var Redis=require(_0xe7d6('0x2'));var db=require(_0xe7d6('0x3'))['db'];var utils=require(_0xe7d6('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xe7d6('0x5'));var client=jayson[_0xe7d6('0x6')]['http']({'port':0x232a});config[_0xe7d6('0x7')]=_[_0xe7d6('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xe7d6('0x9'))(new Redis(config[_0xe7d6('0x7')]));require(_0xe7d6('0xa'))[_0xe7d6('0xb')](socket);function respondWithRpcPromise(_0x45db75,_0x4c8b09,_0x5d9083){return new BPromise(function(_0x4456cc,_0x4621f5){return client['request'](_0x45db75,_0x5d9083)[_0xe7d6('0xc')](function(_0xb5857e){logger[_0xe7d6('0xd')](_0xe7d6('0xe'),_0x4c8b09,_0xe7d6('0xf'));logger[_0xe7d6('0x10')](_0xe7d6('0x11'),_0x4c8b09,_0xe7d6('0xf'),JSON[_0xe7d6('0x12')](_0xb5857e));if(_0xb5857e[_0xe7d6('0x13')]){if(_0xb5857e[_0xe7d6('0x13')][_0xe7d6('0x14')]===0x1f4){logger[_0xe7d6('0x13')](_0xe7d6('0xe'),_0x4c8b09,_0xb5857e[_0xe7d6('0x13')][_0xe7d6('0x15')]);return _0x4621f5(_0xb5857e['error'][_0xe7d6('0x15')]);}logger[_0xe7d6('0x13')]('MailQueue,\x20%s,\x20%s',_0x4c8b09,_0xb5857e[_0xe7d6('0x13')][_0xe7d6('0x15')]);return _0x4456cc(_0xb5857e[_0xe7d6('0x13')]['message']);}else{logger[_0xe7d6('0xd')](_0xe7d6('0xe'),_0x4c8b09,_0xe7d6('0xf'));_0x4456cc(_0xb5857e['result'][_0xe7d6('0x15')]);}})[_0xe7d6('0x16')](function(_0x11ca78){logger[_0xe7d6('0x13')](_0xe7d6('0xe'),_0x4c8b09,_0x11ca78);_0x4621f5(_0x11ca78);});});}exports['GetMailQueue']=function(_0x5c222e){var _0xbab47b=this;return new Promise(function(_0x2a0a95,_0x1052d8){return db[_0xe7d6('0x17')][_0xe7d6('0x18')]({'raw':_0x5c222e[_0xe7d6('0x19')]?_0x5c222e[_0xe7d6('0x19')][_0xe7d6('0x1a')]===undefined?!![]:![]:!![],'where':_0x5c222e[_0xe7d6('0x19')]?_0x5c222e[_0xe7d6('0x19')][_0xe7d6('0x1b')]||null:null,'attributes':_0x5c222e[_0xe7d6('0x19')]?_0x5c222e[_0xe7d6('0x19')][_0xe7d6('0x1c')]||null:null,'limit':_0x5c222e[_0xe7d6('0x19')]?_0x5c222e['options'][_0xe7d6('0x1d')]||null:null,'include':_0x5c222e[_0xe7d6('0x19')]?_0x5c222e[_0xe7d6('0x19')][_0xe7d6('0x1e')]?_[_0xe7d6('0x1f')](_0x5c222e[_0xe7d6('0x19')][_0xe7d6('0x1e')],function(_0x2d13c0){return{'model':db[_0x2d13c0[_0xe7d6('0x20')]],'as':_0x2d13c0['as'],'attributes':_0x2d13c0['attributes'],'include':_0x2d13c0['include']?_[_0xe7d6('0x1f')](_0x2d13c0[_0xe7d6('0x1e')],function(_0xac70e){return{'model':db[_0xac70e[_0xe7d6('0x20')]],'as':_0xac70e['as'],'attributes':_0xac70e[_0xe7d6('0x1c')],'include':_0xac70e[_0xe7d6('0x1e')]?_[_0xe7d6('0x1f')](_0xac70e[_0xe7d6('0x1e')],function(_0x24e60c){return{'model':db[_0x24e60c[_0xe7d6('0x20')]],'as':_0x24e60c['as'],'attributes':_0x24e60c[_0xe7d6('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xe7d6('0xc')](function(_0x5804f0){logger[_0xe7d6('0xd')](_0xe7d6('0x21'),_0x5c222e);logger[_0xe7d6('0x10')](_0xe7d6('0x21'),_0x5c222e,JSON[_0xe7d6('0x12')](_0x5804f0));_0x2a0a95(_0x5804f0);})[_0xe7d6('0x16')](function(_0x4d4d78){logger['error'](_0xe7d6('0x21'),_0x4d4d78[_0xe7d6('0x15')],_0x5c222e);_0x1052d8(_0xbab47b[_0xe7d6('0x13')](0x1f4,_0x4d4d78[_0xe7d6('0x15')]));});});};exports[_0xe7d6('0x22')]=function(_0x32c06d){var _0x1ee9ea=this;return new Promise(function(_0xeef2ee,_0x53e698){return db[_0xe7d6('0x17')][_0xe7d6('0x23')]({'raw':_0x32c06d[_0xe7d6('0x19')]?_0x32c06d[_0xe7d6('0x19')][_0xe7d6('0x1a')]===undefined?!![]:![]:!![],'where':_0x32c06d[_0xe7d6('0x19')]?_0x32c06d['options']['where']||null:null,'attributes':_0x32c06d[_0xe7d6('0x19')]?_0x32c06d[_0xe7d6('0x19')]['attributes']||null:null,'include':_0x32c06d[_0xe7d6('0x19')]?_0x32c06d[_0xe7d6('0x19')][_0xe7d6('0x1e')]?_[_0xe7d6('0x1f')](_0x32c06d[_0xe7d6('0x19')][_0xe7d6('0x1e')],function(_0x55f6a1){return{'model':db[_0x55f6a1[_0xe7d6('0x20')]],'as':_0x55f6a1['as'],'attributes':_0x55f6a1[_0xe7d6('0x1c')],'include':_0x55f6a1['include']?_[_0xe7d6('0x1f')](_0x55f6a1[_0xe7d6('0x1e')],function(_0x3326e0){return{'model':db[_0x3326e0[_0xe7d6('0x20')]],'as':_0x3326e0['as'],'attributes':_0x3326e0[_0xe7d6('0x1c')],'include':_0x3326e0[_0xe7d6('0x1e')]?_[_0xe7d6('0x1f')](_0x3326e0[_0xe7d6('0x1e')],function(_0x220724){return{'model':db[_0x220724['model']],'as':_0x220724['as'],'attributes':_0x220724[_0xe7d6('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x33e831){logger[_0xe7d6('0xd')](_0xe7d6('0x22'),_0x32c06d);logger[_0xe7d6('0x10')](_0xe7d6('0x22'),_0x32c06d,JSON[_0xe7d6('0x12')](_0x33e831));_0xeef2ee(_0x33e831);})[_0xe7d6('0x16')](function(_0x42a2a8){logger['error'](_0xe7d6('0x22'),_0x42a2a8['message'],_0x32c06d);_0x53e698(_0x1ee9ea[_0xe7d6('0x13')](0x1f4,_0x42a2a8[_0xe7d6('0x15')]));});});};
\ No newline at end of file
+var _0x98f3=['moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','request','info','debug','MailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','MailQueue,\x20%s,\x20%s','message','result','catch','GetMailQueue','MailQueue','findAll','options','raw','where','limit','include','map','model','ShowMailQueue','find','attributes','stringify','lodash'];(function(_0x138e8d,_0x53c4d9){var _0x462132=function(_0x9d41){while(--_0x9d41){_0x138e8d['push'](_0x138e8d['shift']());}};_0x462132(++_0x53c4d9);}(_0x98f3,0x1a1));var _0x398f=function(_0xeb94a4,_0x166c7b){_0xeb94a4=_0xeb94a4-0x0;var _0x5a9285=_0x98f3[_0xeb94a4];return _0x5a9285;};'use strict';var _=require(_0x398f('0x0'));var util=require('util');var moment=require(_0x398f('0x1'));var BPromise=require(_0x398f('0x2'));var rs=require(_0x398f('0x3'));var fs=require('fs');var Redis=require(_0x398f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x398f('0x5'));var logger=require('../../config/logger')(_0x398f('0x6'));var config=require(_0x398f('0x7'));var jayson=require(_0x398f('0x8'));var client=jayson[_0x398f('0x9')]['http']({'port':0x232a});config[_0x398f('0xa')]=_[_0x398f('0xb')](config[_0x398f('0xa')],{'host':_0x398f('0xc'),'port':0x18eb});var socket=require(_0x398f('0xd'))(new Redis(config[_0x398f('0xa')]));require('./mailQueue.socket')['register'](socket);function respondWithRpcPromise(_0x11c76b,_0x289aa3,_0x3f4687){return new BPromise(function(_0x427f55,_0x25d32a){return client[_0x398f('0xe')](_0x11c76b,_0x3f4687)['then'](function(_0x433cd1){logger[_0x398f('0xf')]('MailQueue,\x20%s,\x20%s',_0x289aa3,'request\x20sent');logger[_0x398f('0x10')](_0x398f('0x11'),_0x289aa3,_0x398f('0x12'),JSON['stringify'](_0x433cd1));if(_0x433cd1[_0x398f('0x13')]){if(_0x433cd1['error']['code']===0x1f4){logger['error'](_0x398f('0x14'),_0x289aa3,_0x433cd1['error'][_0x398f('0x15')]);return _0x25d32a(_0x433cd1[_0x398f('0x13')][_0x398f('0x15')]);}logger[_0x398f('0x13')](_0x398f('0x14'),_0x289aa3,_0x433cd1[_0x398f('0x13')][_0x398f('0x15')]);return _0x427f55(_0x433cd1['error'][_0x398f('0x15')]);}else{logger['info']('MailQueue,\x20%s,\x20%s',_0x289aa3,_0x398f('0x12'));_0x427f55(_0x433cd1[_0x398f('0x16')][_0x398f('0x15')]);}})[_0x398f('0x17')](function(_0x247d5f){logger[_0x398f('0x13')](_0x398f('0x14'),_0x289aa3,_0x247d5f);_0x25d32a(_0x247d5f);});});}exports[_0x398f('0x18')]=function(_0x4b09fa){var _0x19f607=this;return new Promise(function(_0x5bbcfa,_0x2a7ccd){return db[_0x398f('0x19')][_0x398f('0x1a')]({'raw':_0x4b09fa[_0x398f('0x1b')]?_0x4b09fa[_0x398f('0x1b')][_0x398f('0x1c')]===undefined?!![]:![]:!![],'where':_0x4b09fa['options']?_0x4b09fa[_0x398f('0x1b')][_0x398f('0x1d')]||null:null,'attributes':_0x4b09fa[_0x398f('0x1b')]?_0x4b09fa['options']['attributes']||null:null,'limit':_0x4b09fa[_0x398f('0x1b')]?_0x4b09fa[_0x398f('0x1b')][_0x398f('0x1e')]||null:null,'include':_0x4b09fa[_0x398f('0x1b')]?_0x4b09fa[_0x398f('0x1b')][_0x398f('0x1f')]?_[_0x398f('0x20')](_0x4b09fa[_0x398f('0x1b')][_0x398f('0x1f')],function(_0x58ad98){return{'model':db[_0x58ad98['model']],'as':_0x58ad98['as'],'attributes':_0x58ad98['attributes'],'include':_0x58ad98[_0x398f('0x1f')]?_[_0x398f('0x20')](_0x58ad98[_0x398f('0x1f')],function(_0x41ab3c){return{'model':db[_0x41ab3c['model']],'as':_0x41ab3c['as'],'attributes':_0x41ab3c['attributes'],'include':_0x41ab3c[_0x398f('0x1f')]?_[_0x398f('0x20')](_0x41ab3c[_0x398f('0x1f')],function(_0x98bf4e){return{'model':db[_0x98bf4e[_0x398f('0x21')]],'as':_0x98bf4e['as'],'attributes':_0x98bf4e['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1387f6){logger[_0x398f('0xf')]('GetMailQueue',_0x4b09fa);logger[_0x398f('0x10')]('GetMailQueue',_0x4b09fa,JSON['stringify'](_0x1387f6));_0x5bbcfa(_0x1387f6);})[_0x398f('0x17')](function(_0x2d2947){logger[_0x398f('0x13')](_0x398f('0x18'),_0x2d2947[_0x398f('0x15')],_0x4b09fa);_0x2a7ccd(_0x19f607['error'](0x1f4,_0x2d2947[_0x398f('0x15')]));});});};exports[_0x398f('0x22')]=function(_0x2a8e4b){var _0x47e913=this;return new Promise(function(_0x1d1397,_0x4e5601){return db[_0x398f('0x19')][_0x398f('0x23')]({'raw':_0x2a8e4b['options']?_0x2a8e4b[_0x398f('0x1b')][_0x398f('0x1c')]===undefined?!![]:![]:!![],'where':_0x2a8e4b[_0x398f('0x1b')]?_0x2a8e4b[_0x398f('0x1b')][_0x398f('0x1d')]||null:null,'attributes':_0x2a8e4b[_0x398f('0x1b')]?_0x2a8e4b['options'][_0x398f('0x24')]||null:null,'include':_0x2a8e4b[_0x398f('0x1b')]?_0x2a8e4b['options'][_0x398f('0x1f')]?_[_0x398f('0x20')](_0x2a8e4b[_0x398f('0x1b')][_0x398f('0x1f')],function(_0x2bf733){return{'model':db[_0x2bf733[_0x398f('0x21')]],'as':_0x2bf733['as'],'attributes':_0x2bf733[_0x398f('0x24')],'include':_0x2bf733[_0x398f('0x1f')]?_[_0x398f('0x20')](_0x2bf733[_0x398f('0x1f')],function(_0x38e121){return{'model':db[_0x38e121[_0x398f('0x21')]],'as':_0x38e121['as'],'attributes':_0x38e121[_0x398f('0x24')],'include':_0x38e121[_0x398f('0x1f')]?_[_0x398f('0x20')](_0x38e121[_0x398f('0x1f')],function(_0x580442){return{'model':db[_0x580442['model']],'as':_0x580442['as'],'attributes':_0x580442[_0x398f('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1028e8){logger[_0x398f('0xf')](_0x398f('0x22'),_0x2a8e4b);logger['debug']('ShowMailQueue',_0x2a8e4b,JSON[_0x398f('0x25')](_0x1028e8));_0x1d1397(_0x1028e8);})[_0x398f('0x17')](function(_0x33a8b1){logger[_0x398f('0x13')](_0x398f('0x22'),_0x33a8b1[_0x398f('0x15')],_0x2a8e4b);_0x4e5601(_0x47e913[_0x398f('0x13')](0x1f4,_0x33a8b1[_0x398f('0x15')]));});});};
\ No newline at end of file
index 5f04852..8d726c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf97=['register','length','./mailQueue.events','remove','emit','removeListener'];(function(_0x315cfc,_0x2b0345){var _0x601801=function(_0x49dff4){while(--_0x49dff4){_0x315cfc['push'](_0x315cfc['shift']());}};_0x601801(++_0x2b0345);}(_0xbf97,0x9e));var _0x7bf9=function(_0x145fd5,_0x505f89){_0x145fd5=_0x145fd5-0x0;var _0x5b90ff=_0xbf97[_0x145fd5];return _0x5b90ff;};'use strict';var MailQueueEvents=require(_0x7bf9('0x0'));var events=['save',_0x7bf9('0x1'),'update'];function createListener(_0x4d7f37,_0x4174ec){return function(_0x1f577f){_0x4174ec[_0x7bf9('0x2')](_0x4d7f37,_0x1f577f);};}function removeListener(_0x11d63a,_0x159709){return function(){MailQueueEvents[_0x7bf9('0x3')](_0x11d63a,_0x159709);};}exports[_0x7bf9('0x4')]=function(_0x18cfee){for(var _0x18e631=0x0,_0x36ceb8=events[_0x7bf9('0x5')];_0x18e631<_0x36ceb8;_0x18e631++){var _0x4fe585=events[_0x18e631];var _0xc0787f=createListener('mailQueue:'+_0x4fe585,_0x18cfee);MailQueueEvents['on'](_0x4fe585,_0xc0787f);}};
\ No newline at end of file
+var _0x44f4=['emit','removeListener','register','length','mailQueue:','./mailQueue.events','update'];(function(_0x1617e5,_0x459242){var _0x5cc645=function(_0x2dbc2f){while(--_0x2dbc2f){_0x1617e5['push'](_0x1617e5['shift']());}};_0x5cc645(++_0x459242);}(_0x44f4,0x140));var _0x444f=function(_0x246574,_0x569055){_0x246574=_0x246574-0x0;var _0x9ed48f=_0x44f4[_0x246574];return _0x9ed48f;};'use strict';var MailQueueEvents=require(_0x444f('0x0'));var events=['save','remove',_0x444f('0x1')];function createListener(_0x1deb48,_0x330ee2){return function(_0x56fae7){_0x330ee2[_0x444f('0x2')](_0x1deb48,_0x56fae7);};}function removeListener(_0x4dd98d,_0xdb1585){return function(){MailQueueEvents[_0x444f('0x3')](_0x4dd98d,_0xdb1585);};}exports[_0x444f('0x4')]=function(_0x46dac6){for(var _0x2588d9=0x0,_0x1bb0cf=events[_0x444f('0x5')];_0x2588d9<_0x1bb0cf;_0x2588d9++){var _0x5631f4=events[_0x2588d9];var _0x35d321=createListener(_0x444f('0x6')+_0x5631f4,_0x46dac6);MailQueueEvents['on'](_0x5631f4,_0x35d321);}};
\ No newline at end of file
index 9be90ad..18c0997 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd298=['get','/describe','describe','/:id','show','post','create','put','update','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index'];(function(_0x44c14b,_0x29b7e4){var _0xcf6b96=function(_0x5eef5b){while(--_0x5eef5b){_0x44c14b['push'](_0x44c14b['shift']());}};_0xcf6b96(++_0x29b7e4);}(_0xd298,0xed));var _0x8d29=function(_0x1b01da,_0x248657){_0x1b01da=_0x1b01da-0x0;var _0x4db391=_0xd298[_0x1b01da];return _0x4db391;};'use strict';var multer=require(_0x8d29('0x0'));var util=require(_0x8d29('0x1'));var path=require(_0x8d29('0x2'));var timeout=require('connect-timeout');var express=require(_0x8d29('0x3'));var router=express[_0x8d29('0x4')]();var fs_extra=require(_0x8d29('0x5'));var auth=require(_0x8d29('0x6'));var interaction=require(_0x8d29('0x7'));var config=require('../../config/environment');var controller=require('./mailQueueReport.controller');router['get']('/',auth[_0x8d29('0x8')](),controller[_0x8d29('0x9')]);router[_0x8d29('0xa')](_0x8d29('0xb'),auth['isAuthenticated'](),controller[_0x8d29('0xc')]);router[_0x8d29('0xa')](_0x8d29('0xd'),auth[_0x8d29('0x8')](),controller[_0x8d29('0xe')]);router[_0x8d29('0xf')]('/',auth['isAuthenticated'](),controller[_0x8d29('0x10')]);router[_0x8d29('0x11')](_0x8d29('0xd'),auth[_0x8d29('0x8')](),controller[_0x8d29('0x12')]);router['delete'](_0x8d29('0xd'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x1137=['get','index','/describe','describe','isAuthenticated','show','post','create','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','./mailQueueReport.controller'];(function(_0x37b2f5,_0x1608d1){var _0x9a466a=function(_0x5d204c){while(--_0x5d204c){_0x37b2f5['push'](_0x37b2f5['shift']());}};_0x9a466a(++_0x1608d1);}(_0x1137,0x142));var _0x7113=function(_0x4d05a0,_0x53aa7e){_0x4d05a0=_0x4d05a0-0x0;var _0x4c999c=_0x1137[_0x4d05a0];return _0x4c999c;};'use strict';var multer=require(_0x7113('0x0'));var util=require(_0x7113('0x1'));var path=require('path');var timeout=require(_0x7113('0x2'));var express=require(_0x7113('0x3'));var router=express[_0x7113('0x4')]();var fs_extra=require(_0x7113('0x5'));var auth=require(_0x7113('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x7113('0x7'));router[_0x7113('0x8')]('/',auth['isAuthenticated'](),controller[_0x7113('0x9')]);router[_0x7113('0x8')](_0x7113('0xa'),auth['isAuthenticated'](),controller[_0x7113('0xb')]);router[_0x7113('0x8')]('/:id',auth[_0x7113('0xc')](),controller[_0x7113('0xd')]);router[_0x7113('0xe')]('/',auth[_0x7113('0xc')](),controller[_0x7113('0xf')]);router[_0x7113('0x10')](_0x7113('0x11'),auth['isAuthenticated'](),controller[_0x7113('0x12')]);router[_0x7113('0x13')](_0x7113('0x11'),auth[_0x7113('0xc')](),controller[_0x7113('0x14')]);module[_0x7113('0x15')]=router;
\ No newline at end of file
index efe9135..725a166 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf37f=['sequelize','STRING','DATE'];(function(_0x1c2421,_0x1c152c){var _0x5867b2=function(_0x16e49c){while(--_0x16e49c){_0x1c2421['push'](_0x1c2421['shift']());}};_0x5867b2(++_0x1c152c);}(_0xf37f,0x11a));var _0xff37=function(_0x1ae31c,_0x8dcd2d){_0x1ae31c=_0x1ae31c-0x0;var _0x19519d=_0xf37f[_0x1ae31c];return _0x19519d;};'use strict';var moment=require('moment');var Sequelize=require(_0xff37('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xff37('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0xff37('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xff37('0x2')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0xff37('0x2')]},'reason':{'type':Sequelize[_0xff37('0x1')]}};
\ No newline at end of file
+var _0x0bf1=['exports','STRING','DATE','moment'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x0bf1,0xc7));var _0x10bf=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x0bf1[_0x3bf83f];return _0x22c4a9;};'use strict';var moment=require(_0x10bf('0x0'));var Sequelize=require('sequelize');module[_0x10bf('0x1')]={'uniqueid':{'type':Sequelize[_0x10bf('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x10bf('0x2')]},'joinAt':{'type':Sequelize[_0x10bf('0x3')]},'leaveAt':{'type':Sequelize[_0x10bf('0x3')]},'acceptAt':{'type':Sequelize[_0x10bf('0x3')]},'exitAt':{'type':Sequelize[_0x10bf('0x3')]},'reason':{'type':Sequelize[_0x10bf('0x2')]}};
\ No newline at end of file
index 85d46b2..ac6e8e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25e7=['params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','MailQueueReport','findAll','rows','catch','show','fields','create','body','update','find'];(function(_0x1107d8,_0x114c00){var _0x38984b=function(_0x48d956){while(--_0x48d956){_0x1107d8['push'](_0x1107d8['shift']());}};_0x38984b(++_0x114c00);}(_0x25e7,0x1d6));var _0x725e=function(_0x1118da,_0x2fde4c){_0x1118da=_0x1118da-0x0;var _0x7374da=_0x25e7[_0x1118da];return _0x7374da;};'use strict';var emlformat=require(_0x725e('0x0'));var rimraf=require(_0x725e('0x1'));var zipdir=require(_0x725e('0x2'));var jsonpatch=require(_0x725e('0x3'));var rp=require(_0x725e('0x4'));var moment=require(_0x725e('0x5'));var BPromise=require(_0x725e('0x6'));var Mustache=require(_0x725e('0x7'));var util=require(_0x725e('0x8'));var path=require(_0x725e('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x725e('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x725e('0xb'));var crypto=require(_0x725e('0xc'));var jsforce=require(_0x725e('0xd'));var deskjs=require(_0x725e('0xe'));var toCsv=require(_0x725e('0xf'));var querystring=require(_0x725e('0x10'));var Papa=require(_0x725e('0x11'));var Redis=require(_0x725e('0x12'));var authService=require(_0x725e('0x13'));var qs=require(_0x725e('0x14'));var as=require(_0x725e('0x15'));var hardwareService=require(_0x725e('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x725e('0x17'));var config=require(_0x725e('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x11916d,_0x14218e){_0x14218e=_0x14218e||0xcc;return function(_0x5c5e44){if(_0x5c5e44){return _0x11916d[_0x725e('0x19')](_0x14218e);}return _0x11916d[_0x725e('0x1a')](_0x14218e)[_0x725e('0x1b')]();};}function respondWithResult(_0x4e0515,_0x3f8052){_0x3f8052=_0x3f8052||0xc8;return function(_0x221e02){if(_0x221e02){return _0x4e0515[_0x725e('0x1a')](_0x3f8052)[_0x725e('0x1c')](_0x221e02);}};}function respondWithFilteredResult(_0x24c3c1,_0x13fbfe){return function(_0x523422){if(_0x523422){var _0x156b99=typeof _0x13fbfe[_0x725e('0x1d')]===_0x725e('0x1e')&&typeof _0x13fbfe['limit']===_0x725e('0x1e');var _0x125fef=_0x523422[_0x725e('0x1f')];var _0x397e33=_0x156b99?0x0:_0x13fbfe[_0x725e('0x1d')];var _0x2811e7=_0x156b99?_0x523422['count']:_0x13fbfe[_0x725e('0x1d')]+_0x13fbfe[_0x725e('0x20')];var _0x1b8879;if(_0x2811e7>=_0x125fef){_0x2811e7=_0x125fef;_0x1b8879=0xc8;}else{_0x1b8879=0xce;}_0x24c3c1[_0x725e('0x1a')](_0x1b8879);return _0x24c3c1[_0x725e('0x21')](_0x725e('0x22'),_0x397e33+'-'+_0x2811e7+'/'+_0x125fef)['json'](_0x523422);}return null;};}function patchUpdates(_0x2fc416){return function(_0xd30de9){try{jsonpatch[_0x725e('0x23')](_0xd30de9,_0x2fc416,!![]);}catch(_0x40c21b){return BPromise[_0x725e('0x24')](_0x40c21b);}return _0xd30de9[_0x725e('0x25')]();};}function saveUpdates(_0x127c99,_0x262b01){return function(_0x7d0792){if(_0x7d0792){return _0x7d0792['update'](_0x127c99)[_0x725e('0x26')](function(_0x36cbab){return _0x36cbab;});}return null;};}function removeEntity(_0x389668,_0x3facae){return function(_0x5a8191){if(_0x5a8191){return _0x5a8191[_0x725e('0x27')]()['then'](function(){_0x389668['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2aad7b,_0x1cbaae){return function(_0x2d3c55){if(!_0x2d3c55){_0x2aad7b['sendStatus'](0x194);}return _0x2d3c55;};}function handleError(_0xab6cfd,_0x8a138f){_0x8a138f=_0x8a138f||0x1f4;return function(_0x5a5bef){logger[_0x725e('0x28')](_0x5a5bef[_0x725e('0x29')]);if(_0x5a5bef['name']){delete _0x5a5bef[_0x725e('0x2a')];}_0xab6cfd['status'](_0x8a138f)['send'](_0x5a5bef);};}exports[_0x725e('0x2b')]=function(_0x5b8dec,_0x3b42bd){var _0x4cc4ad={},_0x4de2e0={},_0x9b5b7f={'count':0x0,'rows':[]};var _0x31a8ff=_[_0x725e('0x2c')](db['MailQueueReport'][_0x725e('0x2d')],function(_0x5b03d9){return{'name':_0x5b03d9[_0x725e('0x2e')],'type':_0x5b03d9[_0x725e('0x2f')][_0x725e('0x30')]};});_0x4de2e0[_0x725e('0x31')]=_[_0x725e('0x2c')](_0x31a8ff,_0x725e('0x2a'));_0x4de2e0[_0x725e('0x32')]=_[_0x725e('0x33')](_0x5b8dec[_0x725e('0x32')]);_0x4de2e0[_0x725e('0x34')]=_[_0x725e('0x35')](_0x4de2e0['model'],_0x4de2e0[_0x725e('0x32')]);_0x4cc4ad[_0x725e('0x36')]=_['intersection'](_0x4de2e0[_0x725e('0x31')],qs['fields'](_0x5b8dec[_0x725e('0x32')]['fields']));_0x4cc4ad[_0x725e('0x36')]=_0x4cc4ad[_0x725e('0x36')][_0x725e('0x37')]?_0x4cc4ad[_0x725e('0x36')]:_0x4de2e0[_0x725e('0x31')];if(!_0x5b8dec[_0x725e('0x32')]['hasOwnProperty']('nolimit')){_0x4cc4ad[_0x725e('0x20')]=qs[_0x725e('0x20')](_0x5b8dec[_0x725e('0x32')]['limit']);_0x4cc4ad[_0x725e('0x1d')]=qs['offset'](_0x5b8dec[_0x725e('0x32')][_0x725e('0x1d')]);}_0x4cc4ad[_0x725e('0x38')]=qs[_0x725e('0x39')](_0x5b8dec['query']['sort']);_0x4cc4ad[_0x725e('0x3a')]=qs[_0x725e('0x34')](_[_0x725e('0x3b')](_0x5b8dec['query'],_0x4de2e0[_0x725e('0x34')]),_0x31a8ff);if(_0x5b8dec[_0x725e('0x32')][_0x725e('0x3c')]){_0x4cc4ad['where']=_[_0x725e('0x3d')](_0x4cc4ad['where'],{'$or':_[_0x725e('0x2c')](_0x31a8ff,function(_0x462dac){if(_0x462dac[_0x725e('0x2f')]!==_0x725e('0x3e')){var _0x46eaa0={};_0x46eaa0[_0x462dac['name']]={'$like':'%'+_0x5b8dec['query'][_0x725e('0x3c')]+'%'};return _0x46eaa0;}})});}_0x4cc4ad=_[_0x725e('0x3d')]({},_0x4cc4ad,_0x5b8dec[_0x725e('0x3f')]);var _0x5dd1d1={'where':_0x4cc4ad[_0x725e('0x3a')]};return db['MailQueueReport'][_0x725e('0x1f')](_0x5dd1d1)[_0x725e('0x26')](function(_0x337e53){_0x9b5b7f[_0x725e('0x1f')]=_0x337e53;if(_0x5b8dec['query'][_0x725e('0x40')]){_0x4cc4ad[_0x725e('0x41')]=[{'all':!![]}];}return db[_0x725e('0x42')][_0x725e('0x43')](_0x4cc4ad);})[_0x725e('0x26')](function(_0x19ed0a){_0x9b5b7f[_0x725e('0x44')]=_0x19ed0a;return _0x9b5b7f;})['then'](respondWithFilteredResult(_0x3b42bd,_0x4cc4ad))[_0x725e('0x45')](handleError(_0x3b42bd,null));};exports[_0x725e('0x46')]=function(_0x58ebe3,_0x2200ad){var _0x3b7a87={'raw':!![],'where':{'id':_0x58ebe3['params']['id']}},_0x5e719e={};_0x5e719e['model']=_['keys'](db[_0x725e('0x42')][_0x725e('0x2d')]);_0x5e719e[_0x725e('0x32')]=_['keys'](_0x58ebe3[_0x725e('0x32')]);_0x5e719e['filters']=_['intersection'](_0x5e719e[_0x725e('0x31')],_0x5e719e[_0x725e('0x32')]);_0x3b7a87[_0x725e('0x36')]=_[_0x725e('0x35')](_0x5e719e[_0x725e('0x31')],qs[_0x725e('0x47')](_0x58ebe3['query'][_0x725e('0x47')]));_0x3b7a87['attributes']=_0x3b7a87[_0x725e('0x36')][_0x725e('0x37')]?_0x3b7a87['attributes']:_0x5e719e[_0x725e('0x31')];if(_0x58ebe3['query'][_0x725e('0x40')]){_0x3b7a87[_0x725e('0x41')]=[{'all':!![]}];}_0x3b7a87=_['merge']({},_0x3b7a87,_0x58ebe3['options']);return db[_0x725e('0x42')]['find'](_0x3b7a87)[_0x725e('0x26')](handleEntityNotFound(_0x2200ad,null))['then'](respondWithResult(_0x2200ad,null))['catch'](handleError(_0x2200ad,null));};exports['create']=function(_0x118ef5,_0x38a81f){return db['MailQueueReport'][_0x725e('0x48')](_0x118ef5[_0x725e('0x49')],{})['then'](respondWithResult(_0x38a81f,0xc9))[_0x725e('0x45')](handleError(_0x38a81f,null));};exports[_0x725e('0x4a')]=function(_0x4d5415,_0x19f524){if(_0x4d5415[_0x725e('0x49')]['id']){delete _0x4d5415[_0x725e('0x49')]['id'];}return db[_0x725e('0x42')][_0x725e('0x4b')]({'where':{'id':_0x4d5415[_0x725e('0x4c')]['id']}})[_0x725e('0x26')](handleEntityNotFound(_0x19f524,null))[_0x725e('0x26')](saveUpdates(_0x4d5415[_0x725e('0x49')],null))[_0x725e('0x26')](respondWithResult(_0x19f524,null))['catch'](handleError(_0x19f524,null));};exports[_0x725e('0x27')]=function(_0x5e3678,_0x11e2f7){return db[_0x725e('0x42')][_0x725e('0x4b')]({'where':{'id':_0x5e3678[_0x725e('0x4c')]['id']}})[_0x725e('0x26')](handleEntityNotFound(_0x11e2f7,null))[_0x725e('0x26')](removeEntity(_0x11e2f7,null))[_0x725e('0x45')](handleError(_0x11e2f7,null));};exports[_0x725e('0x4d')]=function(_0x1f3097,_0xd366b9){return db[_0x725e('0x42')][_0x725e('0x4d')]()[_0x725e('0x26')](respondWithResult(_0xd366b9,null))[_0x725e('0x45')](handleError(_0xd366b9,null));};
\ No newline at end of file
+var _0xeb3b=['destroy','error','stack','name','send','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','MailQueueReport','rawAttributes','include','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','Content-Range','reject','save','then'];(function(_0x485190,_0x8d9c32){var _0x5d382b=function(_0x25bb5d){while(--_0x25bb5d){_0x485190['push'](_0x485190['shift']());}};_0x5d382b(++_0x8d9c32);}(_0xeb3b,0x19e));var _0xbeb3=function(_0xfcdda0,_0x32479b){_0xfcdda0=_0xfcdda0-0x0;var _0x17ebe3=_0xeb3b[_0xfcdda0];return _0x17ebe3;};'use strict';var emlformat=require(_0xbeb3('0x0'));var rimraf=require(_0xbeb3('0x1'));var zipdir=require(_0xbeb3('0x2'));var jsonpatch=require(_0xbeb3('0x3'));var rp=require(_0xbeb3('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xbeb3('0x5'));var util=require('util');var path=require(_0xbeb3('0x6'));var sox=require('sox');var csv=require(_0xbeb3('0x7'));var ejs=require(_0xbeb3('0x8'));var fs=require('fs');var fs_extra=require(_0xbeb3('0x9'));var _=require(_0xbeb3('0xa'));var squel=require(_0xbeb3('0xb'));var crypto=require(_0xbeb3('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xbeb3('0xd'));var toCsv=require(_0xbeb3('0x7'));var querystring=require(_0xbeb3('0xe'));var Papa=require(_0xbeb3('0xf'));var Redis=require(_0xbeb3('0x10'));var authService=require(_0xbeb3('0x11'));var qs=require(_0xbeb3('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbeb3('0x13'));var logger=require(_0xbeb3('0x14'))('api');var utils=require(_0xbeb3('0x15'));var config=require(_0xbeb3('0x16'));var licenseUtil=require(_0xbeb3('0x17'));var db=require(_0xbeb3('0x18'))['db'];function respondWithStatusCode(_0x19868e,_0x313296){_0x313296=_0x313296||0xcc;return function(_0x5b9ace){if(_0x5b9ace){return _0x19868e['sendStatus'](_0x313296);}return _0x19868e[_0xbeb3('0x19')](_0x313296)[_0xbeb3('0x1a')]();};}function respondWithResult(_0x5f521b,_0x4dfb28){_0x4dfb28=_0x4dfb28||0xc8;return function(_0xed9879){if(_0xed9879){return _0x5f521b[_0xbeb3('0x19')](_0x4dfb28)[_0xbeb3('0x1b')](_0xed9879);}};}function respondWithFilteredResult(_0x43d58a,_0x26daf2){return function(_0x535836){if(_0x535836){var _0x1aeaee=typeof _0x26daf2['offset']===_0xbeb3('0x1c')&&typeof _0x26daf2['limit']==='undefined';var _0x4f8481=_0x535836[_0xbeb3('0x1d')];var _0x44a4bb=_0x1aeaee?0x0:_0x26daf2[_0xbeb3('0x1e')];var _0x10b15d=_0x1aeaee?_0x535836['count']:_0x26daf2[_0xbeb3('0x1e')]+_0x26daf2[_0xbeb3('0x1f')];var _0xe2cc47;if(_0x10b15d>=_0x4f8481){_0x10b15d=_0x4f8481;_0xe2cc47=0xc8;}else{_0xe2cc47=0xce;}_0x43d58a['status'](_0xe2cc47);return _0x43d58a['set'](_0xbeb3('0x20'),_0x44a4bb+'-'+_0x10b15d+'/'+_0x4f8481)['json'](_0x535836);}return null;};}function patchUpdates(_0x1d917b){return function(_0x50b005){try{jsonpatch['apply'](_0x50b005,_0x1d917b,!![]);}catch(_0xfa2736){return BPromise[_0xbeb3('0x21')](_0xfa2736);}return _0x50b005[_0xbeb3('0x22')]();};}function saveUpdates(_0x4bd89e,_0x301899){return function(_0x18ea0f){if(_0x18ea0f){return _0x18ea0f['update'](_0x4bd89e)[_0xbeb3('0x23')](function(_0x366bdb){return _0x366bdb;});}return null;};}function removeEntity(_0x55a59d,_0xfc384a){return function(_0x278fe4){if(_0x278fe4){return _0x278fe4[_0xbeb3('0x24')]()[_0xbeb3('0x23')](function(){_0x55a59d[_0xbeb3('0x19')](0xcc)[_0xbeb3('0x1a')]();});}};}function handleEntityNotFound(_0x84921a,_0x340581){return function(_0x46fe17){if(!_0x46fe17){_0x84921a['sendStatus'](0x194);}return _0x46fe17;};}function handleError(_0x4e695e,_0x1f36b9){_0x1f36b9=_0x1f36b9||0x1f4;return function(_0x520116){logger[_0xbeb3('0x25')](_0x520116[_0xbeb3('0x26')]);if(_0x520116[_0xbeb3('0x27')]){delete _0x520116[_0xbeb3('0x27')];}_0x4e695e['status'](_0x1f36b9)[_0xbeb3('0x28')](_0x520116);};}exports['index']=function(_0x26cd8f,_0xab301c){var _0x5bd93d={},_0x483198={},_0x9b8f13={'count':0x0,'rows':[]};var _0x585c6f=_['map'](db['MailQueueReport']['rawAttributes'],function(_0xf5dbaf){return{'name':_0xf5dbaf['fieldName'],'type':_0xf5dbaf[_0xbeb3('0x29')][_0xbeb3('0x2a')]};});_0x483198[_0xbeb3('0x2b')]=_[_0xbeb3('0x2c')](_0x585c6f,_0xbeb3('0x27'));_0x483198[_0xbeb3('0x2d')]=_[_0xbeb3('0x2e')](_0x26cd8f[_0xbeb3('0x2d')]);_0x483198[_0xbeb3('0x2f')]=_[_0xbeb3('0x30')](_0x483198['model'],_0x483198[_0xbeb3('0x2d')]);_0x5bd93d[_0xbeb3('0x31')]=_['intersection'](_0x483198[_0xbeb3('0x2b')],qs[_0xbeb3('0x32')](_0x26cd8f[_0xbeb3('0x2d')][_0xbeb3('0x32')]));_0x5bd93d['attributes']=_0x5bd93d[_0xbeb3('0x31')][_0xbeb3('0x33')]?_0x5bd93d[_0xbeb3('0x31')]:_0x483198[_0xbeb3('0x2b')];if(!_0x26cd8f[_0xbeb3('0x2d')][_0xbeb3('0x34')](_0xbeb3('0x35'))){_0x5bd93d[_0xbeb3('0x1f')]=qs[_0xbeb3('0x1f')](_0x26cd8f['query'][_0xbeb3('0x1f')]);_0x5bd93d['offset']=qs[_0xbeb3('0x1e')](_0x26cd8f[_0xbeb3('0x2d')][_0xbeb3('0x1e')]);}_0x5bd93d[_0xbeb3('0x36')]=qs[_0xbeb3('0x37')](_0x26cd8f[_0xbeb3('0x2d')][_0xbeb3('0x37')]);_0x5bd93d[_0xbeb3('0x38')]=qs['filters'](_[_0xbeb3('0x39')](_0x26cd8f['query'],_0x483198['filters']),_0x585c6f);if(_0x26cd8f['query'][_0xbeb3('0x3a')]){_0x5bd93d[_0xbeb3('0x38')]=_[_0xbeb3('0x3b')](_0x5bd93d[_0xbeb3('0x38')],{'$or':_[_0xbeb3('0x2c')](_0x585c6f,function(_0x40f166){if(_0x40f166['type']!==_0xbeb3('0x3c')){var _0x40de8d={};_0x40de8d[_0x40f166[_0xbeb3('0x27')]]={'$like':'%'+_0x26cd8f['query']['filter']+'%'};return _0x40de8d;}})});}_0x5bd93d=_['merge']({},_0x5bd93d,_0x26cd8f[_0xbeb3('0x3d')]);var _0x2a8860={'where':_0x5bd93d[_0xbeb3('0x38')]};return db['MailQueueReport'][_0xbeb3('0x1d')](_0x2a8860)['then'](function(_0x1b6700){_0x9b8f13[_0xbeb3('0x1d')]=_0x1b6700;if(_0x26cd8f[_0xbeb3('0x2d')][_0xbeb3('0x3e')]){_0x5bd93d['include']=[{'all':!![]}];}return db['MailQueueReport'][_0xbeb3('0x3f')](_0x5bd93d);})[_0xbeb3('0x23')](function(_0x3d4262){_0x9b8f13[_0xbeb3('0x40')]=_0x3d4262;return _0x9b8f13;})[_0xbeb3('0x23')](respondWithFilteredResult(_0xab301c,_0x5bd93d))[_0xbeb3('0x41')](handleError(_0xab301c,null));};exports[_0xbeb3('0x42')]=function(_0x4606a6,_0x5758c6){var _0xfcb57f={'raw':!![],'where':{'id':_0x4606a6[_0xbeb3('0x43')]['id']}},_0x39f2d2={};_0x39f2d2[_0xbeb3('0x2b')]=_[_0xbeb3('0x2e')](db[_0xbeb3('0x44')][_0xbeb3('0x45')]);_0x39f2d2['query']=_[_0xbeb3('0x2e')](_0x4606a6[_0xbeb3('0x2d')]);_0x39f2d2[_0xbeb3('0x2f')]=_[_0xbeb3('0x30')](_0x39f2d2[_0xbeb3('0x2b')],_0x39f2d2[_0xbeb3('0x2d')]);_0xfcb57f[_0xbeb3('0x31')]=_[_0xbeb3('0x30')](_0x39f2d2[_0xbeb3('0x2b')],qs[_0xbeb3('0x32')](_0x4606a6[_0xbeb3('0x2d')][_0xbeb3('0x32')]));_0xfcb57f[_0xbeb3('0x31')]=_0xfcb57f['attributes'][_0xbeb3('0x33')]?_0xfcb57f[_0xbeb3('0x31')]:_0x39f2d2[_0xbeb3('0x2b')];if(_0x4606a6['query']['includeAll']){_0xfcb57f[_0xbeb3('0x46')]=[{'all':!![]}];}_0xfcb57f=_[_0xbeb3('0x3b')]({},_0xfcb57f,_0x4606a6[_0xbeb3('0x3d')]);return db[_0xbeb3('0x44')]['find'](_0xfcb57f)[_0xbeb3('0x23')](handleEntityNotFound(_0x5758c6,null))['then'](respondWithResult(_0x5758c6,null))['catch'](handleError(_0x5758c6,null));};exports[_0xbeb3('0x47')]=function(_0x393e60,_0x1ff297){return db[_0xbeb3('0x44')]['create'](_0x393e60[_0xbeb3('0x48')],{})[_0xbeb3('0x23')](respondWithResult(_0x1ff297,0xc9))[_0xbeb3('0x41')](handleError(_0x1ff297,null));};exports['update']=function(_0x3f93ab,_0x58c49f){if(_0x3f93ab['body']['id']){delete _0x3f93ab[_0xbeb3('0x48')]['id'];}return db[_0xbeb3('0x44')][_0xbeb3('0x49')]({'where':{'id':_0x3f93ab['params']['id']}})[_0xbeb3('0x23')](handleEntityNotFound(_0x58c49f,null))[_0xbeb3('0x23')](saveUpdates(_0x3f93ab[_0xbeb3('0x48')],null))['then'](respondWithResult(_0x58c49f,null))[_0xbeb3('0x41')](handleError(_0x58c49f,null));};exports['destroy']=function(_0x39605b,_0x4d8e21){return db[_0xbeb3('0x44')][_0xbeb3('0x49')]({'where':{'id':_0x39605b[_0xbeb3('0x43')]['id']}})[_0xbeb3('0x23')](handleEntityNotFound(_0x4d8e21,null))[_0xbeb3('0x23')](removeEntity(_0x4d8e21,null))[_0xbeb3('0x41')](handleError(_0x4d8e21,null));};exports[_0xbeb3('0x4a')]=function(_0x168434,_0x49fded){return db[_0xbeb3('0x44')][_0xbeb3('0x4a')]()[_0xbeb3('0x23')](respondWithResult(_0x49fded,null))[_0xbeb3('0x41')](handleError(_0x49fded,null));};
\ No newline at end of file
index b57ac58..193db77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff67=['path','rimraf','../../config/environment','exports','MailQueueReport','report_mail_queue','uniqueid','lodash','../../config/logger','api','moment','bluebird'];(function(_0x3804da,_0x4b1678){var _0x1038e3=function(_0x46dbaf){while(--_0x46dbaf){_0x3804da['push'](_0x3804da['shift']());}};_0x1038e3(++_0x4b1678);}(_0xff67,0x1b7));var _0x7ff6=function(_0x23281f,_0x1d8dc1){_0x23281f=_0x23281f-0x0;var _0x5ad381=_0xff67[_0x23281f];return _0x5ad381;};'use strict';var _=require(_0x7ff6('0x0'));var util=require('util');var logger=require(_0x7ff6('0x1'))(_0x7ff6('0x2'));var moment=require(_0x7ff6('0x3'));var BPromise=require(_0x7ff6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7ff6('0x5'));var rimraf=require(_0x7ff6('0x6'));var config=require(_0x7ff6('0x7'));var attributes=require('./mailQueueReport.attributes');module[_0x7ff6('0x8')]=function(_0x3342d7,_0x4cc1dd){return _0x3342d7['define'](_0x7ff6('0x9'),attributes,{'tableName':_0x7ff6('0xa'),'paranoid':![],'indexes':[{'name':_0x7ff6('0xb'),'fields':[_0x7ff6('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0e34=['../../config/environment','./mailQueueReport.attributes','exports','MailQueueReport','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x375922,_0x2b1237){var _0x24e8e0=function(_0x3affeb){while(--_0x3affeb){_0x375922['push'](_0x375922['shift']());}};_0x24e8e0(++_0x2b1237);}(_0x0e34,0x13d));var _0x40e3=function(_0x5d87c9,_0x283dad){_0x5d87c9=_0x5d87c9-0x0;var _0xa7ab62=_0x0e34[_0x5d87c9];return _0xa7ab62;};'use strict';var _=require(_0x40e3('0x0'));var util=require('util');var logger=require(_0x40e3('0x1'))(_0x40e3('0x2'));var moment=require(_0x40e3('0x3'));var BPromise=require(_0x40e3('0x4'));var rp=require(_0x40e3('0x5'));var fs=require('fs');var path=require(_0x40e3('0x6'));var rimraf=require('rimraf');var config=require(_0x40e3('0x7'));var attributes=require(_0x40e3('0x8'));module[_0x40e3('0x9')]=function(_0x3b6724,_0x422995){return _0x3b6724['define'](_0x40e3('0xa'),attributes,{'tableName':'report_mail_queue','paranoid':![],'indexes':[{'name':_0x40e3('0xb'),'fields':[_0x40e3('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 0c2bfec..ee3fe0b 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(_0x2e730b,_0x438b8a){var _0x5b1c22=function(_0x49dbdd){while(--_0x49dbdd){_0x2e730b['push'](_0x2e730b['shift']());}};_0x5b1c22(++_0x438b8a);}(_0x326f,0xd1));var _0xf326=function(_0x46c9b1,_0x516577){_0x46c9b1=_0x46c9b1-0x0;var _0x3ebffe=_0x326f[_0x46c9b1];return _0x3ebffe;};'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 _0x7a54=['moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','MailQueueReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','MailQueueReport','create','body','options','raw','CreateMailQueueReport','UpdateMailQueueReport','update','where','attributes','limit','then','lodash','util'];(function(_0x4f00e9,_0x169f61){var _0x2a0cc0=function(_0x553cc8){while(--_0x553cc8){_0x4f00e9['push'](_0x4f00e9['shift']());}};_0x2a0cc0(++_0x169f61);}(_0x7a54,0x106));var _0x47a5=function(_0x2d40d9,_0x4eb51a){_0x2d40d9=_0x2d40d9-0x0;var _0x1b4cec=_0x7a54[_0x2d40d9];return _0x1b4cec;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateMailQueueReport']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateMailQueueReport',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};exports[_0x47a5('0x1b')]=function(_0x513981){var _0x28747d=this;return new Promise(function(_0xc4cd63,_0x4437f1){return db[_0x47a5('0x15')][_0x47a5('0x1c')](_0x513981['body'],{'raw':_0x513981['options']?_0x513981[_0x47a5('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x513981[_0x47a5('0x18')]?_0x513981['options'][_0x47a5('0x1d')]||null:null,'attributes':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1e')]||null:null,'limit':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1f')]||null:null})[_0x47a5('0x20')](function(_0x16631f){logger[_0x47a5('0xb')](_0x47a5('0x1b'),_0x513981);logger[_0x47a5('0xd')](_0x47a5('0x1b'),_0x513981,JSON['stringify'](_0x16631f));_0xc4cd63(_0x16631f);})[_0x47a5('0x14')](function(_0x51833b){logger[_0x47a5('0xf')](_0x47a5('0x1b'),_0x51833b[_0x47a5('0x11')],_0x513981);_0x4437f1(_0x28747d['error'](0x1f4,_0x51833b[_0x47a5('0x11')]));});});};
\ No newline at end of file
index 75d6df5..3bb92a2 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(_0x1720f6,_0x5e9128){var _0x46e9fd=function(_0x4e3c53){while(--_0x4e3c53){_0x1720f6['push'](_0x1720f6['shift']());}};_0x46e9fd(++_0x5e9128);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x58bbeb,_0x19caf1){var _0x5d9f3e=function(_0x27e100){while(--_0x27e100){_0x58bbeb['push'](_0x58bbeb['shift']());}};_0x5d9f3e(++_0x19caf1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index d41701b..3039c17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x049e=['INTEGER','BOOLEAN','sequelize','exports','STRING'];(function(_0x5b474c,_0x426d87){var _0x273b2c=function(_0x2a3fcf){while(--_0x2a3fcf){_0x5b474c['push'](_0x5b474c['shift']());}};_0x273b2c(++_0x426d87);}(_0x049e,0x16a));var _0xe049=function(_0x310504,_0x26ad95){_0x310504=_0x310504-0x0;var _0x5b36d0=_0x049e[_0x310504];return _0x5b36d0;};'use strict';var Sequelize=require(_0xe049('0x0'));module[_0xe049('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xe049('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize[_0xe049('0x2')]},'password':{'type':Sequelize[_0xe049('0x2')]},'port':{'type':Sequelize[_0xe049('0x3')]},'tls':{'type':Sequelize[_0xe049('0x4')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xe049('0x2')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize[_0xe049('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xe049('0x3')],'defaultValue':0x5},'service':{'type':Sequelize[_0xe049('0x2')]}};
\ No newline at end of file
+var _0xcb91=['INBOX','STRING','BOOLEAN','INTEGER'];(function(_0x1cb73d,_0x3db9be){var _0x1e7bd8=function(_0x3ab56e){while(--_0x3ab56e){_0x1cb73d['push'](_0x1cb73d['shift']());}};_0x1e7bd8(++_0x3db9be);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1bf809,_0x536f55){_0x1bf809=_0x1bf809-0x0;var _0x1caa4e=_0xcb91[_0x1bf809];return _0x1caa4e;};'use strict';var Sequelize=require('sequelize');module['exports']={'description':{'type':Sequelize[_0x1cb9('0x0')]},'host':{'type':Sequelize[_0x1cb9('0x0')]},'authentication':{'type':Sequelize[_0x1cb9('0x1')],'defaultValue':!![]},'user':{'type':Sequelize[_0x1cb9('0x0')]},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x1cb9('0x2')]},'tls':{'type':Sequelize[_0x1cb9('0x1')],'defaultValue':!![]},'mailbox':{'type':Sequelize['STRING'],'defaultValue':_0x1cb9('0x3')},'connTimeout':{'type':Sequelize[_0x1cb9('0x2')],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize[_0x1cb9('0x0')]}};
\ No newline at end of file
index 773004a..e4b75ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x649e=['mail_servers_in','util','api','moment','bluebird','rimraf','../../config/environment','./mailServerIn.attributes','exports','define','MailServerIn'];(function(_0x1a9204,_0x1c9e00){var _0x17ca68=function(_0x1f4399){while(--_0x1f4399){_0x1a9204['push'](_0x1a9204['shift']());}};_0x17ca68(++_0x1c9e00);}(_0x649e,0x1f0));var _0xe649=function(_0x2df8e3,_0x5f0382){_0x2df8e3=_0x2df8e3-0x0;var _0x111523=_0x649e[_0x2df8e3];return _0x111523;};'use strict';var _=require('lodash');var util=require(_0xe649('0x0'));var logger=require('../../config/logger')(_0xe649('0x1'));var moment=require(_0xe649('0x2'));var BPromise=require(_0xe649('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xe649('0x4'));var config=require(_0xe649('0x5'));var attributes=require(_0xe649('0x6'));module[_0xe649('0x7')]=function(_0x4a9c54,_0x64890c){return _0x4a9c54[_0xe649('0x8')](_0xe649('0x9'),attributes,{'tableName':_0xe649('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1a23=['path','../../config/environment','exports','define','MailServerIn','mail_servers_in','lodash','util','moment','bluebird','request-promise'];(function(_0x2c94dc,_0x520b78){var _0x30b935=function(_0x502337){while(--_0x502337){_0x2c94dc['push'](_0x2c94dc['shift']());}};_0x30b935(++_0x520b78);}(_0x1a23,0x7f));var _0x31a2=function(_0x337ab2,_0x380494){_0x337ab2=_0x337ab2-0x0;var _0x4c4ea7=_0x1a23[_0x337ab2];return _0x4c4ea7;};'use strict';var _=require(_0x31a2('0x0'));var util=require(_0x31a2('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x31a2('0x2'));var BPromise=require(_0x31a2('0x3'));var rp=require(_0x31a2('0x4'));var fs=require('fs');var path=require(_0x31a2('0x5'));var rimraf=require('rimraf');var config=require(_0x31a2('0x6'));var attributes=require('./mailServerIn.attributes');module[_0x31a2('0x7')]=function(_0x51da82,_0x5589ae){return _0x51da82[_0x31a2('0x8')](_0x31a2('0x9'),attributes,{'tableName':_0x31a2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4c84e7a..3216e4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4de5=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMailServerIn','MailServerIn','findAll','options','attributes','map','include','model','util','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x4b7cc1,_0x9a7fc0){var _0x33b3d9=function(_0x4b1d6c){while(--_0x4b1d6c){_0x4b7cc1['push'](_0x4b7cc1['shift']());}};_0x33b3d9(++_0x9a7fc0);}(_0x4de5,0xbb));var _0x54de=function(_0x5c7930,_0x47d72b){_0x5c7930=_0x5c7930-0x0;var _0x235c8f=_0x4de5[_0x5c7930];return _0x235c8f;};'use strict';var _=require('lodash');var util=require(_0x54de('0x0'));var moment=require('moment');var BPromise=require(_0x54de('0x1'));var rs=require(_0x54de('0x2'));var fs=require('fs');var Redis=require(_0x54de('0x3'));var db=require(_0x54de('0x4'))['db'];var utils=require(_0x54de('0x5'));var logger=require(_0x54de('0x6'))(_0x54de('0x7'));var config=require(_0x54de('0x8'));var jayson=require(_0x54de('0x9'));var client=jayson['client'][_0x54de('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x47a982,_0x1e5d4d,_0x423a72){return new BPromise(function(_0x2e03e7,_0x21718){return client[_0x54de('0xb')](_0x47a982,_0x423a72)[_0x54de('0xc')](function(_0x30dc76){logger[_0x54de('0xd')](_0x54de('0xe'),_0x1e5d4d,_0x54de('0xf'));logger[_0x54de('0x10')](_0x54de('0x11'),_0x1e5d4d,'request\x20sent',JSON[_0x54de('0x12')](_0x30dc76));if(_0x30dc76[_0x54de('0x13')]){if(_0x30dc76[_0x54de('0x13')][_0x54de('0x14')]===0x1f4){logger['error']('MailServerIn,\x20%s,\x20%s',_0x1e5d4d,_0x30dc76['error'][_0x54de('0x15')]);return _0x21718(_0x30dc76[_0x54de('0x13')][_0x54de('0x15')]);}logger[_0x54de('0x13')](_0x54de('0xe'),_0x1e5d4d,_0x30dc76['error'][_0x54de('0x15')]);return _0x2e03e7(_0x30dc76[_0x54de('0x13')][_0x54de('0x15')]);}else{logger[_0x54de('0xd')]('MailServerIn,\x20%s,\x20%s',_0x1e5d4d,'request\x20sent');_0x2e03e7(_0x30dc76[_0x54de('0x16')]['message']);}})[_0x54de('0x17')](function(_0x4f7c7d){logger[_0x54de('0x13')](_0x54de('0xe'),_0x1e5d4d,_0x4f7c7d);_0x21718(_0x4f7c7d);});});}exports[_0x54de('0x18')]=function(_0x2a684d){var _0x4b8d2e=this;return new Promise(function(_0x1d6a57,_0x91a3ee){return db[_0x54de('0x19')][_0x54de('0x1a')]({'raw':_0x2a684d[_0x54de('0x1b')]?_0x2a684d[_0x54de('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x2a684d[_0x54de('0x1b')]?_0x2a684d['options']['where']||null:null,'attributes':_0x2a684d[_0x54de('0x1b')]?_0x2a684d[_0x54de('0x1b')][_0x54de('0x1c')]||null:null,'limit':_0x2a684d['options']?_0x2a684d['options']['limit']||null:null,'include':_0x2a684d[_0x54de('0x1b')]?_0x2a684d[_0x54de('0x1b')]['include']?_[_0x54de('0x1d')](_0x2a684d[_0x54de('0x1b')][_0x54de('0x1e')],function(_0x35209b){return{'model':db[_0x35209b['model']],'as':_0x35209b['as'],'attributes':_0x35209b[_0x54de('0x1c')],'include':_0x35209b['include']?_[_0x54de('0x1d')](_0x35209b[_0x54de('0x1e')],function(_0x1bfeb8){return{'model':db[_0x1bfeb8[_0x54de('0x1f')]],'as':_0x1bfeb8['as'],'attributes':_0x1bfeb8[_0x54de('0x1c')],'include':_0x1bfeb8['include']?_['map'](_0x1bfeb8[_0x54de('0x1e')],function(_0x369a10){return{'model':db[_0x369a10[_0x54de('0x1f')]],'as':_0x369a10['as'],'attributes':_0x369a10['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x42ee28){logger[_0x54de('0xd')](_0x54de('0x18'),_0x2a684d);logger[_0x54de('0x10')](_0x54de('0x18'),_0x2a684d,JSON[_0x54de('0x12')](_0x42ee28));_0x1d6a57(_0x42ee28);})['catch'](function(_0x3ceabe){logger['error'](_0x54de('0x18'),_0x3ceabe[_0x54de('0x15')],_0x2a684d);_0x91a3ee(_0x4b8d2e[_0x54de('0x13')](0x1f4,_0x3ceabe[_0x54de('0x15')]));});});};
\ No newline at end of file
+var _0x5d6b=['ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','request','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMailServerIn','findAll','options','where','attributes','limit','include','map','model','lodash','util','moment','bluebird','randomstring'];(function(_0x3cbb0e,_0x16130b){var _0x429c75=function(_0x4b415e){while(--_0x4b415e){_0x3cbb0e['push'](_0x3cbb0e['shift']());}};_0x429c75(++_0x16130b);}(_0x5d6b,0xc1));var _0xb5d6=function(_0x2eb88f,_0x37fe90){_0x2eb88f=_0x2eb88f-0x0;var _0x52e1ed=_0x5d6b[_0x2eb88f];return _0x52e1ed;};'use strict';var _=require(_0xb5d6('0x0'));var util=require(_0xb5d6('0x1'));var moment=require(_0xb5d6('0x2'));var BPromise=require(_0xb5d6('0x3'));var rs=require(_0xb5d6('0x4'));var fs=require('fs');var Redis=require(_0xb5d6('0x5'));var db=require(_0xb5d6('0x6'))['db'];var utils=require(_0xb5d6('0x7'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xb5d6('0x8'));var client=jayson[_0xb5d6('0x9')][_0xb5d6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x21d135,_0x235828,_0x42ceb5){return new BPromise(function(_0x5307b3,_0x5e2dd3){return client[_0xb5d6('0xb')](_0x21d135,_0x42ceb5)[_0xb5d6('0xc')](function(_0x3e5910){logger[_0xb5d6('0xd')](_0xb5d6('0xe'),_0x235828,_0xb5d6('0xf'));logger[_0xb5d6('0x10')](_0xb5d6('0x11'),_0x235828,_0xb5d6('0xf'),JSON[_0xb5d6('0x12')](_0x3e5910));if(_0x3e5910['error']){if(_0x3e5910[_0xb5d6('0x13')][_0xb5d6('0x14')]===0x1f4){logger[_0xb5d6('0x13')](_0xb5d6('0xe'),_0x235828,_0x3e5910[_0xb5d6('0x13')][_0xb5d6('0x15')]);return _0x5e2dd3(_0x3e5910[_0xb5d6('0x13')][_0xb5d6('0x15')]);}logger[_0xb5d6('0x13')](_0xb5d6('0xe'),_0x235828,_0x3e5910[_0xb5d6('0x13')][_0xb5d6('0x15')]);return _0x5307b3(_0x3e5910['error'][_0xb5d6('0x15')]);}else{logger[_0xb5d6('0xd')](_0xb5d6('0xe'),_0x235828,_0xb5d6('0xf'));_0x5307b3(_0x3e5910[_0xb5d6('0x16')][_0xb5d6('0x15')]);}})[_0xb5d6('0x17')](function(_0x4b7b5d){logger['error'](_0xb5d6('0xe'),_0x235828,_0x4b7b5d);_0x5e2dd3(_0x4b7b5d);});});}exports[_0xb5d6('0x18')]=function(_0x269113){var _0x100ee0=this;return new Promise(function(_0x16ba96,_0x3b695b){return db['MailServerIn'][_0xb5d6('0x19')]({'raw':_0x269113[_0xb5d6('0x1a')]?_0x269113[_0xb5d6('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x269113['options']?_0x269113[_0xb5d6('0x1a')][_0xb5d6('0x1b')]||null:null,'attributes':_0x269113[_0xb5d6('0x1a')]?_0x269113[_0xb5d6('0x1a')][_0xb5d6('0x1c')]||null:null,'limit':_0x269113['options']?_0x269113[_0xb5d6('0x1a')][_0xb5d6('0x1d')]||null:null,'include':_0x269113[_0xb5d6('0x1a')]?_0x269113[_0xb5d6('0x1a')][_0xb5d6('0x1e')]?_[_0xb5d6('0x1f')](_0x269113['options']['include'],function(_0x1a5701){return{'model':db[_0x1a5701[_0xb5d6('0x20')]],'as':_0x1a5701['as'],'attributes':_0x1a5701[_0xb5d6('0x1c')],'include':_0x1a5701[_0xb5d6('0x1e')]?_[_0xb5d6('0x1f')](_0x1a5701[_0xb5d6('0x1e')],function(_0x5ff09b){return{'model':db[_0x5ff09b[_0xb5d6('0x20')]],'as':_0x5ff09b['as'],'attributes':_0x5ff09b['attributes'],'include':_0x5ff09b['include']?_['map'](_0x5ff09b['include'],function(_0xa620f9){return{'model':db[_0xa620f9[_0xb5d6('0x20')]],'as':_0xa620f9['as'],'attributes':_0xa620f9[_0xb5d6('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xb5d6('0xc')](function(_0x379132){logger[_0xb5d6('0xd')](_0xb5d6('0x18'),_0x269113);logger['debug'](_0xb5d6('0x18'),_0x269113,JSON[_0xb5d6('0x12')](_0x379132));_0x16ba96(_0x379132);})['catch'](function(_0x37b609){logger['error']('GetMailServerIn',_0x37b609['message'],_0x269113);_0x3b695b(_0x100ee0[_0xb5d6('0x13')](0x1f4,_0x37b609[_0xb5d6('0x15')]));});});};
\ No newline at end of file
index 5d7758b..c20a99f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['index','/:id','isAuthenticated','post','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailServerOut.controller','get'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x7a54,0x106));var _0x47a5=function(_0x1a1069,_0x5b63af){_0x1a1069=_0x1a1069-0x0;var _0x17073b=_0x7a54[_0x1a1069];return _0x17073b;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
+var _0x7a54=['index','/:id','isAuthenticated','post','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailServerOut.controller','get'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0x7a54,0x106));var _0x47a5=function(_0x4e37e2,_0xa465de){_0x4e37e2=_0x4e37e2-0x0;var _0x386104=_0x7a54[_0x4e37e2];return _0x386104;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
index d541268..791facd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4ba=['STRING','BOOLEAN','sequelize'];(function(_0x2e0426,_0x344f4d){var _0x3a98e5=function(_0x70fac3){while(--_0x70fac3){_0x2e0426['push'](_0x2e0426['shift']());}};_0x3a98e5(++_0x344f4d);}(_0xd4ba,0x131));var _0xad4b=function(_0x29f9cb,_0x58c553){_0x29f9cb=_0x29f9cb-0x0;var _0x46eb4b=_0xd4ba[_0x29f9cb];return _0x46eb4b;};'use strict';var Sequelize=require(_0xad4b('0x0'));module['exports']={'description':{'type':Sequelize[_0xad4b('0x1')]},'host':{'type':Sequelize[_0xad4b('0x1')]},'user':{'type':Sequelize[_0xad4b('0x1')]},'pass':{'type':Sequelize[_0xad4b('0x1')]},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize[_0xad4b('0x2')],'defaultValue':![]},'service':{'type':Sequelize[_0xad4b('0x1')]},'authentication':{'type':Sequelize[_0xad4b('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x52ea=['sequelize','exports','STRING','INTEGER','BOOLEAN'];(function(_0x59ac78,_0x4da0a2){var _0x854012=function(_0x1f4235){while(--_0x1f4235){_0x59ac78['push'](_0x59ac78['shift']());}};_0x854012(++_0x4da0a2);}(_0x52ea,0x136));var _0xa52e=function(_0x470f63,_0x48d80b){_0x470f63=_0x470f63-0x0;var _0x4f09e2=_0x52ea[_0x470f63];return _0x4f09e2;};'use strict';var Sequelize=require(_0xa52e('0x0'));module[_0xa52e('0x1')]={'description':{'type':Sequelize[_0xa52e('0x2')]},'host':{'type':Sequelize[_0xa52e('0x2')]},'user':{'type':Sequelize[_0xa52e('0x2')]},'pass':{'type':Sequelize[_0xa52e('0x2')]},'port':{'type':Sequelize[_0xa52e('0x3')]},'secure':{'type':Sequelize[_0xa52e('0x4')],'defaultValue':![]},'service':{'type':Sequelize[_0xa52e('0x2')]},'authentication':{'type':Sequelize[_0xa52e('0x4')],'defaultValue':!![]}};
\ No newline at end of file
index 794e117..6218352 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d69=['querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','send','index','map','MailServerOut','fieldName','key','model','name','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','find','create','body','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv'];(function(_0x4f320f,_0x56c1f6){var _0x341c69=function(_0x1241d8){while(--_0x1241d8){_0x4f320f['push'](_0x4f320f['shift']());}};_0x341c69(++_0x56c1f6);}(_0x7d69,0xdb));var _0x97d6=function(_0x3328ec,_0x3d2e05){_0x3328ec=_0x3328ec-0x0;var _0x25472f=_0x7d69[_0x3328ec];return _0x25472f;};'use strict';var emlformat=require(_0x97d6('0x0'));var rimraf=require(_0x97d6('0x1'));var zipdir=require(_0x97d6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x97d6('0x3'));var moment=require('moment');var BPromise=require(_0x97d6('0x4'));var Mustache=require(_0x97d6('0x5'));var util=require(_0x97d6('0x6'));var path=require(_0x97d6('0x7'));var sox=require(_0x97d6('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x97d6('0x9'));var _=require(_0x97d6('0xa'));var squel=require('squel');var crypto=require(_0x97d6('0xb'));var jsforce=require(_0x97d6('0xc'));var deskjs=require(_0x97d6('0xd'));var toCsv=require(_0x97d6('0xe'));var querystring=require(_0x97d6('0xf'));var Papa=require('papaparse');var Redis=require(_0x97d6('0x10'));var authService=require(_0x97d6('0x11'));var qs=require(_0x97d6('0x12'));var as=require(_0x97d6('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x97d6('0x14'))(_0x97d6('0x15'));var utils=require(_0x97d6('0x16'));var config=require(_0x97d6('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x97d6('0x18'))['db'];function respondWithStatusCode(_0x3d3490,_0x507546){_0x507546=_0x507546||0xcc;return function(_0x115ce7){if(_0x115ce7){return _0x3d3490[_0x97d6('0x19')](_0x507546);}return _0x3d3490[_0x97d6('0x1a')](_0x507546)['end']();};}function respondWithResult(_0xc99146,_0x392565){_0x392565=_0x392565||0xc8;return function(_0x1fea98){if(_0x1fea98){return _0xc99146[_0x97d6('0x1a')](_0x392565)[_0x97d6('0x1b')](_0x1fea98);}};}function respondWithFilteredResult(_0x24df28,_0x3e7801){return function(_0x2c5f5e){if(_0x2c5f5e){var _0x30a184=typeof _0x3e7801[_0x97d6('0x1c')]===_0x97d6('0x1d')&&typeof _0x3e7801[_0x97d6('0x1e')]===_0x97d6('0x1d');var _0x4e38af=_0x2c5f5e['count'];var _0x5abebd=_0x30a184?0x0:_0x3e7801[_0x97d6('0x1c')];var _0x33cca4=_0x30a184?_0x2c5f5e[_0x97d6('0x1f')]:_0x3e7801[_0x97d6('0x1c')]+_0x3e7801[_0x97d6('0x1e')];var _0x3cde40;if(_0x33cca4>=_0x4e38af){_0x33cca4=_0x4e38af;_0x3cde40=0xc8;}else{_0x3cde40=0xce;}_0x24df28[_0x97d6('0x1a')](_0x3cde40);return _0x24df28[_0x97d6('0x20')](_0x97d6('0x21'),_0x5abebd+'-'+_0x33cca4+'/'+_0x4e38af)['json'](_0x2c5f5e);}return null;};}function patchUpdates(_0x1c22bf){return function(_0x2dcdcc){try{jsonpatch[_0x97d6('0x22')](_0x2dcdcc,_0x1c22bf,!![]);}catch(_0x433346){return BPromise[_0x97d6('0x23')](_0x433346);}return _0x2dcdcc[_0x97d6('0x24')]();};}function saveUpdates(_0x2e9a04,_0x5d31c0){return function(_0x31125f){if(_0x31125f){return _0x31125f[_0x97d6('0x25')](_0x2e9a04)[_0x97d6('0x26')](function(_0x5b85ee){return _0x5b85ee;});}return null;};}function removeEntity(_0x2f9582,_0x155522){return function(_0x1aae71){if(_0x1aae71){return _0x1aae71[_0x97d6('0x27')]()[_0x97d6('0x26')](function(){_0x2f9582[_0x97d6('0x1a')](0xcc)[_0x97d6('0x28')]();});}};}function handleEntityNotFound(_0x160f94,_0x1c97e2){return function(_0x10399c){if(!_0x10399c){_0x160f94[_0x97d6('0x19')](0x194);}return _0x10399c;};}function handleError(_0x10664e,_0x3f8b57){_0x3f8b57=_0x3f8b57||0x1f4;return function(_0x1254e9){logger[_0x97d6('0x29')](_0x1254e9[_0x97d6('0x2a')]);if(_0x1254e9['name']){delete _0x1254e9['name'];}_0x10664e[_0x97d6('0x1a')](_0x3f8b57)[_0x97d6('0x2b')](_0x1254e9);};}exports[_0x97d6('0x2c')]=function(_0x34db7e,_0x104b76){var _0x5ebe9f={},_0x5d429c={},_0x4bee16={'count':0x0,'rows':[]};var _0x105f4f=_[_0x97d6('0x2d')](db[_0x97d6('0x2e')]['rawAttributes'],function(_0x437029){return{'name':_0x437029[_0x97d6('0x2f')],'type':_0x437029['type'][_0x97d6('0x30')]};});_0x5d429c[_0x97d6('0x31')]=_[_0x97d6('0x2d')](_0x105f4f,_0x97d6('0x32'));_0x5d429c[_0x97d6('0x33')]=_['keys'](_0x34db7e['query']);_0x5d429c[_0x97d6('0x34')]=_[_0x97d6('0x35')](_0x5d429c[_0x97d6('0x31')],_0x5d429c[_0x97d6('0x33')]);_0x5ebe9f[_0x97d6('0x36')]=_[_0x97d6('0x35')](_0x5d429c[_0x97d6('0x31')],qs[_0x97d6('0x37')](_0x34db7e[_0x97d6('0x33')][_0x97d6('0x37')]));_0x5ebe9f[_0x97d6('0x36')]=_0x5ebe9f['attributes'][_0x97d6('0x38')]?_0x5ebe9f['attributes']:_0x5d429c[_0x97d6('0x31')];if(!_0x34db7e[_0x97d6('0x33')][_0x97d6('0x39')](_0x97d6('0x3a'))){_0x5ebe9f[_0x97d6('0x1e')]=qs['limit'](_0x34db7e['query']['limit']);_0x5ebe9f[_0x97d6('0x1c')]=qs['offset'](_0x34db7e[_0x97d6('0x33')][_0x97d6('0x1c')]);}_0x5ebe9f['order']=qs[_0x97d6('0x3b')](_0x34db7e[_0x97d6('0x33')][_0x97d6('0x3b')]);_0x5ebe9f[_0x97d6('0x3c')]=qs[_0x97d6('0x34')](_['pick'](_0x34db7e['query'],_0x5d429c[_0x97d6('0x34')]),_0x105f4f);if(_0x34db7e[_0x97d6('0x33')]['filter']){_0x5ebe9f[_0x97d6('0x3c')]=_['merge'](_0x5ebe9f[_0x97d6('0x3c')],{'$or':_[_0x97d6('0x2d')](_0x105f4f,function(_0x4c18f2){if(_0x4c18f2[_0x97d6('0x3d')]!==_0x97d6('0x3e')){var _0x464fae={};_0x464fae[_0x4c18f2[_0x97d6('0x32')]]={'$like':'%'+_0x34db7e[_0x97d6('0x33')][_0x97d6('0x3f')]+'%'};return _0x464fae;}})});}_0x5ebe9f=_[_0x97d6('0x40')]({},_0x5ebe9f,_0x34db7e[_0x97d6('0x41')]);var _0x103f0c={'where':_0x5ebe9f[_0x97d6('0x3c')]};return db[_0x97d6('0x2e')][_0x97d6('0x1f')](_0x103f0c)['then'](function(_0x4d2745){_0x4bee16[_0x97d6('0x1f')]=_0x4d2745;if(_0x34db7e[_0x97d6('0x33')][_0x97d6('0x42')]){_0x5ebe9f[_0x97d6('0x43')]=[{'all':!![]}];}return db[_0x97d6('0x2e')][_0x97d6('0x44')](_0x5ebe9f);})['then'](function(_0x7d3590){_0x4bee16[_0x97d6('0x45')]=_0x7d3590;return _0x4bee16;})[_0x97d6('0x26')](respondWithFilteredResult(_0x104b76,_0x5ebe9f))[_0x97d6('0x46')](handleError(_0x104b76,null));};exports[_0x97d6('0x47')]=function(_0x26a694,_0x5f149f){var _0x29ab28={'raw':!![],'where':{'id':_0x26a694[_0x97d6('0x48')]['id']}},_0x48ce03={};_0x48ce03[_0x97d6('0x31')]=_[_0x97d6('0x49')](db[_0x97d6('0x2e')][_0x97d6('0x4a')]);_0x48ce03['query']=_['keys'](_0x26a694[_0x97d6('0x33')]);_0x48ce03[_0x97d6('0x34')]=_['intersection'](_0x48ce03['model'],_0x48ce03[_0x97d6('0x33')]);_0x29ab28['attributes']=_[_0x97d6('0x35')](_0x48ce03[_0x97d6('0x31')],qs[_0x97d6('0x37')](_0x26a694[_0x97d6('0x33')][_0x97d6('0x37')]));_0x29ab28[_0x97d6('0x36')]=_0x29ab28['attributes'][_0x97d6('0x38')]?_0x29ab28[_0x97d6('0x36')]:_0x48ce03[_0x97d6('0x31')];if(_0x26a694[_0x97d6('0x33')]['includeAll']){_0x29ab28[_0x97d6('0x43')]=[{'all':!![]}];}_0x29ab28=_[_0x97d6('0x40')]({},_0x29ab28,_0x26a694[_0x97d6('0x41')]);return db['MailServerOut'][_0x97d6('0x4b')](_0x29ab28)[_0x97d6('0x26')](handleEntityNotFound(_0x5f149f,null))['then'](respondWithResult(_0x5f149f,null))[_0x97d6('0x46')](handleError(_0x5f149f,null));};exports[_0x97d6('0x4c')]=function(_0x40bf99,_0x708498){return db[_0x97d6('0x2e')]['create'](_0x40bf99['body'],{})[_0x97d6('0x26')](respondWithResult(_0x708498,0xc9))[_0x97d6('0x46')](handleError(_0x708498,null));};exports[_0x97d6('0x25')]=function(_0x142ead,_0x441c9d){if(_0x142ead['body']['id']){delete _0x142ead[_0x97d6('0x4d')]['id'];}return db[_0x97d6('0x2e')]['find']({'where':{'id':_0x142ead[_0x97d6('0x48')]['id']}})[_0x97d6('0x26')](handleEntityNotFound(_0x441c9d,null))[_0x97d6('0x26')](saveUpdates(_0x142ead[_0x97d6('0x4d')],null))[_0x97d6('0x26')](respondWithResult(_0x441c9d,null))['catch'](handleError(_0x441c9d,null));};exports[_0x97d6('0x27')]=function(_0x1b8ed7,_0x1094dc){return db['MailServerOut'][_0x97d6('0x4b')]({'where':{'id':_0x1b8ed7[_0x97d6('0x48')]['id']}})[_0x97d6('0x26')](handleEntityNotFound(_0x1094dc,null))[_0x97d6('0x26')](removeEntity(_0x1094dc,null))['catch'](handleError(_0x1094dc,null));};
\ No newline at end of file
+var _0xf0dc=['jsforce','desk.js','papaparse','ioredis','../../components/auth/service','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','offset','count','set','apply','update','then','destroy','stack','name','send','map','MailServerOut','fieldName','type','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','rows','catch','keys','rawAttributes','find','create','body','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x596f6e,_0x3f8857){var _0x1e0803=function(_0x31f91f){while(--_0x31f91f){_0x596f6e['push'](_0x596f6e['shift']());}};_0x1e0803(++_0x3f8857);}(_0xf0dc,0x1da));var _0xcf0d=function(_0x352787,_0x37b149){_0x352787=_0x352787-0x0;var _0x255514=_0xf0dc[_0x352787];return _0x255514;};'use strict';var emlformat=require(_0xcf0d('0x0'));var rimraf=require(_0xcf0d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcf0d('0x2'));var rp=require(_0xcf0d('0x3'));var moment=require(_0xcf0d('0x4'));var BPromise=require(_0xcf0d('0x5'));var Mustache=require(_0xcf0d('0x6'));var util=require(_0xcf0d('0x7'));var path=require(_0xcf0d('0x8'));var sox=require(_0xcf0d('0x9'));var csv=require(_0xcf0d('0xa'));var ejs=require(_0xcf0d('0xb'));var fs=require('fs');var fs_extra=require(_0xcf0d('0xc'));var _=require(_0xcf0d('0xd'));var squel=require(_0xcf0d('0xe'));var crypto=require(_0xcf0d('0xf'));var jsforce=require(_0xcf0d('0x10'));var deskjs=require(_0xcf0d('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xcf0d('0x12'));var Redis=require(_0xcf0d('0x13'));var authService=require(_0xcf0d('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xcf0d('0x15'));var utils=require(_0xcf0d('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xcf0d('0x17'));var db=require(_0xcf0d('0x18'))['db'];function respondWithStatusCode(_0x4f2e59,_0x5d9878){_0x5d9878=_0x5d9878||0xcc;return function(_0x3a0791){if(_0x3a0791){return _0x4f2e59[_0xcf0d('0x19')](_0x5d9878);}return _0x4f2e59['status'](_0x5d9878)[_0xcf0d('0x1a')]();};}function respondWithResult(_0x52c054,_0x2710b6){_0x2710b6=_0x2710b6||0xc8;return function(_0x9e6be8){if(_0x9e6be8){return _0x52c054[_0xcf0d('0x1b')](_0x2710b6)[_0xcf0d('0x1c')](_0x9e6be8);}};}function respondWithFilteredResult(_0x3d711c,_0x50fd51){return function(_0x5ec7c0){if(_0x5ec7c0){var _0x4e928b=typeof _0x50fd51['offset']===_0xcf0d('0x1d')&&typeof _0x50fd51[_0xcf0d('0x1e')]===_0xcf0d('0x1d');var _0x2eada=_0x5ec7c0['count'];var _0xecd491=_0x4e928b?0x0:_0x50fd51[_0xcf0d('0x1f')];var _0x2f566e=_0x4e928b?_0x5ec7c0[_0xcf0d('0x20')]:_0x50fd51['offset']+_0x50fd51[_0xcf0d('0x1e')];var _0x409a92;if(_0x2f566e>=_0x2eada){_0x2f566e=_0x2eada;_0x409a92=0xc8;}else{_0x409a92=0xce;}_0x3d711c['status'](_0x409a92);return _0x3d711c[_0xcf0d('0x21')]('Content-Range',_0xecd491+'-'+_0x2f566e+'/'+_0x2eada)['json'](_0x5ec7c0);}return null;};}function patchUpdates(_0x3a3bf8){return function(_0x2844d5){try{jsonpatch[_0xcf0d('0x22')](_0x2844d5,_0x3a3bf8,!![]);}catch(_0x2361d9){return BPromise['reject'](_0x2361d9);}return _0x2844d5['save']();};}function saveUpdates(_0x453503,_0x32ade5){return function(_0xee58cd){if(_0xee58cd){return _0xee58cd[_0xcf0d('0x23')](_0x453503)[_0xcf0d('0x24')](function(_0xf2f8ee){return _0xf2f8ee;});}return null;};}function removeEntity(_0x253644,_0x4ff17b){return function(_0x4ec652){if(_0x4ec652){return _0x4ec652[_0xcf0d('0x25')]()['then'](function(){_0x253644[_0xcf0d('0x1b')](0xcc)[_0xcf0d('0x1a')]();});}};}function handleEntityNotFound(_0x31cc40,_0x3f6248){return function(_0x352733){if(!_0x352733){_0x31cc40[_0xcf0d('0x19')](0x194);}return _0x352733;};}function handleError(_0x31ae3a,_0x1576ad){_0x1576ad=_0x1576ad||0x1f4;return function(_0x4a6b5f){logger['error'](_0x4a6b5f[_0xcf0d('0x26')]);if(_0x4a6b5f['name']){delete _0x4a6b5f[_0xcf0d('0x27')];}_0x31ae3a['status'](_0x1576ad)[_0xcf0d('0x28')](_0x4a6b5f);};}exports['index']=function(_0x266005,_0x46fe99){var _0x57212b={},_0x54a0a1={},_0x415982={'count':0x0,'rows':[]};var _0x2034d1=_[_0xcf0d('0x29')](db[_0xcf0d('0x2a')]['rawAttributes'],function(_0x5e6080){return{'name':_0x5e6080[_0xcf0d('0x2b')],'type':_0x5e6080[_0xcf0d('0x2c')]['key']};});_0x54a0a1[_0xcf0d('0x2d')]=_[_0xcf0d('0x29')](_0x2034d1,_0xcf0d('0x27'));_0x54a0a1[_0xcf0d('0x2e')]=_['keys'](_0x266005[_0xcf0d('0x2e')]);_0x54a0a1[_0xcf0d('0x2f')]=_[_0xcf0d('0x30')](_0x54a0a1[_0xcf0d('0x2d')],_0x54a0a1[_0xcf0d('0x2e')]);_0x57212b[_0xcf0d('0x31')]=_[_0xcf0d('0x30')](_0x54a0a1['model'],qs[_0xcf0d('0x32')](_0x266005[_0xcf0d('0x2e')][_0xcf0d('0x32')]));_0x57212b[_0xcf0d('0x31')]=_0x57212b[_0xcf0d('0x31')]['length']?_0x57212b[_0xcf0d('0x31')]:_0x54a0a1[_0xcf0d('0x2d')];if(!_0x266005[_0xcf0d('0x2e')][_0xcf0d('0x33')](_0xcf0d('0x34'))){_0x57212b[_0xcf0d('0x1e')]=qs[_0xcf0d('0x1e')](_0x266005['query'][_0xcf0d('0x1e')]);_0x57212b[_0xcf0d('0x1f')]=qs[_0xcf0d('0x1f')](_0x266005[_0xcf0d('0x2e')]['offset']);}_0x57212b[_0xcf0d('0x35')]=qs[_0xcf0d('0x36')](_0x266005[_0xcf0d('0x2e')][_0xcf0d('0x36')]);_0x57212b[_0xcf0d('0x37')]=qs[_0xcf0d('0x2f')](_[_0xcf0d('0x38')](_0x266005[_0xcf0d('0x2e')],_0x54a0a1[_0xcf0d('0x2f')]),_0x2034d1);if(_0x266005[_0xcf0d('0x2e')][_0xcf0d('0x39')]){_0x57212b[_0xcf0d('0x37')]=_['merge'](_0x57212b['where'],{'$or':_['map'](_0x2034d1,function(_0x12244d){if(_0x12244d[_0xcf0d('0x2c')]!==_0xcf0d('0x3a')){var _0x40e5cc={};_0x40e5cc[_0x12244d[_0xcf0d('0x27')]]={'$like':'%'+_0x266005[_0xcf0d('0x2e')][_0xcf0d('0x39')]+'%'};return _0x40e5cc;}})});}_0x57212b=_[_0xcf0d('0x3b')]({},_0x57212b,_0x266005[_0xcf0d('0x3c')]);var _0x28a9f4={'where':_0x57212b[_0xcf0d('0x37')]};return db[_0xcf0d('0x2a')]['count'](_0x28a9f4)[_0xcf0d('0x24')](function(_0x16a53c){_0x415982['count']=_0x16a53c;if(_0x266005[_0xcf0d('0x2e')]['includeAll']){_0x57212b[_0xcf0d('0x3d')]=[{'all':!![]}];}return db[_0xcf0d('0x2a')]['findAll'](_0x57212b);})[_0xcf0d('0x24')](function(_0x3e3b3e){_0x415982[_0xcf0d('0x3e')]=_0x3e3b3e;return _0x415982;})[_0xcf0d('0x24')](respondWithFilteredResult(_0x46fe99,_0x57212b))[_0xcf0d('0x3f')](handleError(_0x46fe99,null));};exports['show']=function(_0x4c6487,_0x435f29){var _0x58566b={'raw':!![],'where':{'id':_0x4c6487['params']['id']}},_0x3e0cdf={};_0x3e0cdf[_0xcf0d('0x2d')]=_[_0xcf0d('0x40')](db[_0xcf0d('0x2a')][_0xcf0d('0x41')]);_0x3e0cdf[_0xcf0d('0x2e')]=_[_0xcf0d('0x40')](_0x4c6487[_0xcf0d('0x2e')]);_0x3e0cdf[_0xcf0d('0x2f')]=_['intersection'](_0x3e0cdf[_0xcf0d('0x2d')],_0x3e0cdf[_0xcf0d('0x2e')]);_0x58566b[_0xcf0d('0x31')]=_[_0xcf0d('0x30')](_0x3e0cdf['model'],qs[_0xcf0d('0x32')](_0x4c6487['query'][_0xcf0d('0x32')]));_0x58566b[_0xcf0d('0x31')]=_0x58566b[_0xcf0d('0x31')]['length']?_0x58566b['attributes']:_0x3e0cdf[_0xcf0d('0x2d')];if(_0x4c6487['query']['includeAll']){_0x58566b[_0xcf0d('0x3d')]=[{'all':!![]}];}_0x58566b=_[_0xcf0d('0x3b')]({},_0x58566b,_0x4c6487['options']);return db['MailServerOut'][_0xcf0d('0x42')](_0x58566b)[_0xcf0d('0x24')](handleEntityNotFound(_0x435f29,null))[_0xcf0d('0x24')](respondWithResult(_0x435f29,null))['catch'](handleError(_0x435f29,null));};exports[_0xcf0d('0x43')]=function(_0x28d5d5,_0x1f16cc){return db['MailServerOut'][_0xcf0d('0x43')](_0x28d5d5[_0xcf0d('0x44')],{})[_0xcf0d('0x24')](respondWithResult(_0x1f16cc,0xc9))[_0xcf0d('0x3f')](handleError(_0x1f16cc,null));};exports[_0xcf0d('0x23')]=function(_0x1bd44c,_0x2c5e8d){if(_0x1bd44c[_0xcf0d('0x44')]['id']){delete _0x1bd44c[_0xcf0d('0x44')]['id'];}return db[_0xcf0d('0x2a')][_0xcf0d('0x42')]({'where':{'id':_0x1bd44c[_0xcf0d('0x45')]['id']}})[_0xcf0d('0x24')](handleEntityNotFound(_0x2c5e8d,null))['then'](saveUpdates(_0x1bd44c[_0xcf0d('0x44')],null))[_0xcf0d('0x24')](respondWithResult(_0x2c5e8d,null))[_0xcf0d('0x3f')](handleError(_0x2c5e8d,null));};exports[_0xcf0d('0x25')]=function(_0x1aa49a,_0x2eb33a){return db[_0xcf0d('0x2a')][_0xcf0d('0x42')]({'where':{'id':_0x1aa49a[_0xcf0d('0x45')]['id']}})[_0xcf0d('0x24')](handleEntityNotFound(_0x2eb33a,null))['then'](removeEntity(_0x2eb33a,null))[_0xcf0d('0x3f')](handleError(_0x2eb33a,null));};
\ No newline at end of file
index 4daee4d..dfc0ab2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49a6=['request-promise','path','rimraf','./mailServerOut.attributes','exports','define','MailServerOut','lodash','api','moment','bluebird'];(function(_0x50f9ab,_0x5009b4){var _0x58dda4=function(_0x5f1ff5){while(--_0x5f1ff5){_0x50f9ab['push'](_0x50f9ab['shift']());}};_0x58dda4(++_0x5009b4);}(_0x49a6,0xcd));var _0x649a=function(_0x3ab4c8,_0x1e05a4){_0x3ab4c8=_0x3ab4c8-0x0;var _0x59f1e2=_0x49a6[_0x3ab4c8];return _0x59f1e2;};'use strict';var _=require(_0x649a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x649a('0x1'));var moment=require(_0x649a('0x2'));var BPromise=require(_0x649a('0x3'));var rp=require(_0x649a('0x4'));var fs=require('fs');var path=require(_0x649a('0x5'));var rimraf=require(_0x649a('0x6'));var config=require('../../config/environment');var attributes=require(_0x649a('0x7'));module[_0x649a('0x8')]=function(_0x330e24,_0x1b5917){return _0x330e24[_0x649a('0x9')](_0x649a('0xa'),attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x21f7=['exports','define','MailServerOut','mail_servers_out','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailServerOut.attributes'];(function(_0x1e74a8,_0x29527d){var _0x6fed93=function(_0x37756e){while(--_0x37756e){_0x1e74a8['push'](_0x1e74a8['shift']());}};_0x6fed93(++_0x29527d);}(_0x21f7,0x100));var _0x721f=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x21f7[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require('lodash');var util=require(_0x721f('0x0'));var logger=require(_0x721f('0x1'))(_0x721f('0x2'));var moment=require(_0x721f('0x3'));var BPromise=require(_0x721f('0x4'));var rp=require(_0x721f('0x5'));var fs=require('fs');var path=require(_0x721f('0x6'));var rimraf=require(_0x721f('0x7'));var config=require(_0x721f('0x8'));var attributes=require(_0x721f('0x9'));module[_0x721f('0xa')]=function(_0x3d1f54,_0x4df8b2){return _0x3d1f54[_0x721f('0xb')](_0x721f('0xc'),attributes,{'tableName':_0x721f('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 415fcf9..f20c64c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','MailServerOut,\x20%s,\x20%s,\x20%s','stringify','code','message','error','info','catch','util','bluebird','randomstring','ioredis'];(function(_0x171d54,_0xf0262e){var _0x4da1f0=function(_0x45bda6){while(--_0x45bda6){_0x171d54['push'](_0x171d54['shift']());}};_0x4da1f0(++_0xf0262e);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x5f66[_0x4243a3];return _0x1b2a33;};'use strict';var _=require('lodash');var util=require(_0x65f6('0x0'));var moment=require('moment');var BPromise=require(_0x65f6('0x1'));var rs=require(_0x65f6('0x2'));var fs=require('fs');var Redis=require(_0x65f6('0x3'));var db=require(_0x65f6('0x4'))['db'];var utils=require(_0x65f6('0x5'));var logger=require('../../config/logger')(_0x65f6('0x6'));var config=require('../../config/environment');var jayson=require(_0x65f6('0x7'));var client=jayson[_0x65f6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ed98f,_0x1c0e12,_0x2c6571){return new BPromise(function(_0x112079,_0x8f6451){return client[_0x65f6('0x9')](_0x4ed98f,_0x2c6571)[_0x65f6('0xa')](function(_0x48d85c){logger['info'](_0x65f6('0xb'),_0x1c0e12,_0x65f6('0xc'));logger[_0x65f6('0xd')](_0x65f6('0xe'),_0x1c0e12,'request\x20sent',JSON[_0x65f6('0xf')](_0x48d85c));if(_0x48d85c['error']){if(_0x48d85c['error'][_0x65f6('0x10')]===0x1f4){logger['error'](_0x65f6('0xb'),_0x1c0e12,_0x48d85c['error'][_0x65f6('0x11')]);return _0x8f6451(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);return _0x112079(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}else{logger[_0x65f6('0x13')]('MailServerOut,\x20%s,\x20%s',_0x1c0e12,_0x65f6('0xc'));_0x112079(_0x48d85c['result']['message']);}})[_0x65f6('0x14')](function(_0x5c69f8){logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x5c69f8);_0x8f6451(_0x5c69f8);});});}
\ No newline at end of file
+var _0x5f66=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','MailServerOut,\x20%s,\x20%s,\x20%s','stringify','code','message','error','info','catch','util','bluebird','randomstring','ioredis'];(function(_0x2105d6,_0x1d3bba){var _0xbadf76=function(_0x539e78){while(--_0x539e78){_0x2105d6['push'](_0x2105d6['shift']());}};_0xbadf76(++_0x1d3bba);}(_0x5f66,0x1a0));var _0x65f6=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x5f66[_0x31e29a];return _0x32d892;};'use strict';var _=require('lodash');var util=require(_0x65f6('0x0'));var moment=require('moment');var BPromise=require(_0x65f6('0x1'));var rs=require(_0x65f6('0x2'));var fs=require('fs');var Redis=require(_0x65f6('0x3'));var db=require(_0x65f6('0x4'))['db'];var utils=require(_0x65f6('0x5'));var logger=require('../../config/logger')(_0x65f6('0x6'));var config=require('../../config/environment');var jayson=require(_0x65f6('0x7'));var client=jayson[_0x65f6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ed98f,_0x1c0e12,_0x2c6571){return new BPromise(function(_0x112079,_0x8f6451){return client[_0x65f6('0x9')](_0x4ed98f,_0x2c6571)[_0x65f6('0xa')](function(_0x48d85c){logger['info'](_0x65f6('0xb'),_0x1c0e12,_0x65f6('0xc'));logger[_0x65f6('0xd')](_0x65f6('0xe'),_0x1c0e12,'request\x20sent',JSON[_0x65f6('0xf')](_0x48d85c));if(_0x48d85c['error']){if(_0x48d85c['error'][_0x65f6('0x10')]===0x1f4){logger['error'](_0x65f6('0xb'),_0x1c0e12,_0x48d85c['error'][_0x65f6('0x11')]);return _0x8f6451(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);return _0x112079(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}else{logger[_0x65f6('0x13')]('MailServerOut,\x20%s,\x20%s',_0x1c0e12,_0x65f6('0xc'));_0x112079(_0x48d85c['result']['message']);}})[_0x65f6('0x14')](function(_0x5c69f8){logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x5c69f8);_0x8f6451(_0x5c69f8);});});}
\ No newline at end of file
index 5b1de67..41cf4cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x618c=['/describe','/:id','post','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x7b7e39,_0x5a5a05){var _0x87fa3f=function(_0x1c686d){while(--_0x1c686d){_0x7b7e39['push'](_0x7b7e39['shift']());}};_0x87fa3f(++_0x5a5a05);}(_0x618c,0x8d));var _0xc618=function(_0x3d0c34,_0x425d37){_0x3d0c34=_0x3d0c34-0x0;var _0x25a376=_0x618c[_0x3d0c34];return _0x25a376;};'use strict';var multer=require('multer');var util=require(_0xc618('0x0'));var path=require(_0xc618('0x1'));var timeout=require(_0xc618('0x2'));var express=require(_0xc618('0x3'));var router=express[_0xc618('0x4')]();var fs_extra=require(_0xc618('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xc618('0x6'));var config=require(_0xc618('0x7'));var controller=require('./mailSubstatus.controller');router[_0xc618('0x8')]('/',auth[_0xc618('0x9')](),controller[_0xc618('0xa')]);router[_0xc618('0x8')](_0xc618('0xb'),auth[_0xc618('0x9')](),controller['describe']);router[_0xc618('0x8')](_0xc618('0xc'),auth[_0xc618('0x9')](),controller['show']);router[_0xc618('0xd')]('/',auth[_0xc618('0x9')](),controller['create']);router[_0xc618('0xe')](_0xc618('0xc'),auth[_0xc618('0x9')](),controller[_0xc618('0xf')]);router[_0xc618('0x10')](_0xc618('0xc'),auth['isAuthenticated'](),controller[_0xc618('0x11')]);module[_0xc618('0x12')]=router;
\ No newline at end of file
+var _0x2891=['create','put','update','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','describe','/:id','show','post'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x2891,0xc2));var _0x1289=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0x2891[_0x43d11d];return _0x38cd08;};'use strict';var multer=require(_0x1289('0x0'));var util=require('util');var path=require(_0x1289('0x1'));var timeout=require('connect-timeout');var express=require(_0x1289('0x2'));var router=express[_0x1289('0x3')]();var fs_extra=require(_0x1289('0x4'));var auth=require(_0x1289('0x5'));var interaction=require(_0x1289('0x6'));var config=require(_0x1289('0x7'));var controller=require('./mailSubstatus.controller');router[_0x1289('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x1289('0x9'),auth[_0x1289('0xa')](),controller[_0x1289('0xb')]);router[_0x1289('0x8')](_0x1289('0xc'),auth[_0x1289('0xa')](),controller[_0x1289('0xd')]);router[_0x1289('0xe')]('/',auth[_0x1289('0xa')](),controller[_0x1289('0xf')]);router[_0x1289('0x10')](_0x1289('0xc'),auth['isAuthenticated'](),controller[_0x1289('0x11')]);router['delete'](_0x1289('0xc'),auth[_0x1289('0xa')](),controller['destroy']);module[_0x1289('0x12')]=router;
\ No newline at end of file
index 0cecc25..a3cbf63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafc4=['STRING','sequelize'];(function(_0x5b4133,_0xfd40a8){var _0x23ab9f=function(_0xdb8807){while(--_0xdb8807){_0x5b4133['push'](_0x5b4133['shift']());}};_0x23ab9f(++_0xfd40a8);}(_0xafc4,0x69));var _0x4afc=function(_0x25fd71,_0x493b52){_0x25fd71=_0x25fd71-0x0;var _0x15917d=_0xafc4[_0x25fd71];return _0x15917d;};'use strict';var Sequelize=require(_0x4afc('0x0'));module['exports']={'name':{'type':Sequelize[_0x4afc('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x4afc('0x1')]}};
\ No newline at end of file
+var _0x71ab=['exports','name'];(function(_0x38eb02,_0x2b216d){var _0x5e504e=function(_0x47c361){while(--_0x47c361){_0x38eb02['push'](_0x38eb02['shift']());}};_0x5e504e(++_0x2b216d);}(_0x71ab,0x64));var _0xb71a=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x71ab[_0x2b4411];return _0x8e41ef;};'use strict';var Sequelize=require('sequelize');module[_0xb71a('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0xb71a('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 611ef06..1a99ce5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13ca=['then','destroy','end','error','stack','name','send','index','map','MailSubstatus','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','update','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','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/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject'];(function(_0x202013,_0x28c1d0){var _0x1a5275=function(_0x372a58){while(--_0x372a58){_0x202013['push'](_0x202013['shift']());}};_0x1a5275(++_0x28c1d0);}(_0x13ca,0x162));var _0xa13c=function(_0x31d51e,_0x36b9aa){_0x31d51e=_0x31d51e-0x0;var _0x1b8702=_0x13ca[_0x31d51e];return _0x1b8702;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa13c('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa13c('0x1'));var rp=require(_0xa13c('0x2'));var moment=require(_0xa13c('0x3'));var BPromise=require(_0xa13c('0x4'));var Mustache=require(_0xa13c('0x5'));var util=require('util');var path=require(_0xa13c('0x6'));var sox=require(_0xa13c('0x7'));var csv=require('to-csv');var ejs=require(_0xa13c('0x8'));var fs=require('fs');var fs_extra=require(_0xa13c('0x9'));var _=require(_0xa13c('0xa'));var squel=require(_0xa13c('0xb'));var crypto=require(_0xa13c('0xc'));var jsforce=require(_0xa13c('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xa13c('0xe'));var querystring=require(_0xa13c('0xf'));var Papa=require(_0xa13c('0x10'));var Redis=require(_0xa13c('0x11'));var authService=require(_0xa13c('0x12'));var qs=require(_0xa13c('0x13'));var as=require(_0xa13c('0x14'));var hardwareService=require(_0xa13c('0x15'));var logger=require(_0xa13c('0x16'))(_0xa13c('0x17'));var utils=require(_0xa13c('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xa13c('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x418560,_0x4edf72){_0x4edf72=_0x4edf72||0xcc;return function(_0x3f932e){if(_0x3f932e){return _0x418560[_0xa13c('0x1a')](_0x4edf72);}return _0x418560['status'](_0x4edf72)['end']();};}function respondWithResult(_0x353b31,_0x3b7c41){_0x3b7c41=_0x3b7c41||0xc8;return function(_0x15228e){if(_0x15228e){return _0x353b31[_0xa13c('0x1b')](_0x3b7c41)[_0xa13c('0x1c')](_0x15228e);}};}function respondWithFilteredResult(_0x340a23,_0x1aed57){return function(_0x39dec2){if(_0x39dec2){var _0x34ecc1=typeof _0x1aed57[_0xa13c('0x1d')]===_0xa13c('0x1e')&&typeof _0x1aed57[_0xa13c('0x1f')]==='undefined';var _0x32824f=_0x39dec2[_0xa13c('0x20')];var _0x158250=_0x34ecc1?0x0:_0x1aed57[_0xa13c('0x1d')];var _0x2c89b2=_0x34ecc1?_0x39dec2[_0xa13c('0x20')]:_0x1aed57[_0xa13c('0x1d')]+_0x1aed57[_0xa13c('0x1f')];var _0x1e6fe5;if(_0x2c89b2>=_0x32824f){_0x2c89b2=_0x32824f;_0x1e6fe5=0xc8;}else{_0x1e6fe5=0xce;}_0x340a23['status'](_0x1e6fe5);return _0x340a23['set'](_0xa13c('0x21'),_0x158250+'-'+_0x2c89b2+'/'+_0x32824f)[_0xa13c('0x1c')](_0x39dec2);}return null;};}function patchUpdates(_0x52f283){return function(_0x3876eb){try{jsonpatch[_0xa13c('0x22')](_0x3876eb,_0x52f283,!![]);}catch(_0x9b1d45){return BPromise[_0xa13c('0x23')](_0x9b1d45);}return _0x3876eb['save']();};}function saveUpdates(_0x209aec,_0x27e4b9){return function(_0x25a252){if(_0x25a252){return _0x25a252['update'](_0x209aec)[_0xa13c('0x24')](function(_0x438aac){return _0x438aac;});}return null;};}function removeEntity(_0x31e5fc,_0x301b85){return function(_0x383f0b){if(_0x383f0b){return _0x383f0b[_0xa13c('0x25')]()[_0xa13c('0x24')](function(){_0x31e5fc[_0xa13c('0x1b')](0xcc)[_0xa13c('0x26')]();});}};}function handleEntityNotFound(_0x18ce5d,_0x530332){return function(_0x4feec6){if(!_0x4feec6){_0x18ce5d[_0xa13c('0x1a')](0x194);}return _0x4feec6;};}function handleError(_0x1f58ec,_0x4cf3b5){_0x4cf3b5=_0x4cf3b5||0x1f4;return function(_0x5affa7){logger[_0xa13c('0x27')](_0x5affa7[_0xa13c('0x28')]);if(_0x5affa7[_0xa13c('0x29')]){delete _0x5affa7[_0xa13c('0x29')];}_0x1f58ec[_0xa13c('0x1b')](_0x4cf3b5)[_0xa13c('0x2a')](_0x5affa7);};}exports[_0xa13c('0x2b')]=function(_0x3f3f9c,_0x377de3){var _0x532ccf={},_0xf9dfaa={},_0x1069fd={'count':0x0,'rows':[]};var _0x19b4e6=_[_0xa13c('0x2c')](db[_0xa13c('0x2d')][_0xa13c('0x2e')],function(_0x10c123){return{'name':_0x10c123['fieldName'],'type':_0x10c123[_0xa13c('0x2f')][_0xa13c('0x30')]};});_0xf9dfaa[_0xa13c('0x31')]=_['map'](_0x19b4e6,'name');_0xf9dfaa[_0xa13c('0x32')]=_[_0xa13c('0x33')](_0x3f3f9c[_0xa13c('0x32')]);_0xf9dfaa[_0xa13c('0x34')]=_[_0xa13c('0x35')](_0xf9dfaa[_0xa13c('0x31')],_0xf9dfaa[_0xa13c('0x32')]);_0x532ccf[_0xa13c('0x36')]=_[_0xa13c('0x35')](_0xf9dfaa[_0xa13c('0x31')],qs[_0xa13c('0x37')](_0x3f3f9c[_0xa13c('0x32')][_0xa13c('0x37')]));_0x532ccf[_0xa13c('0x36')]=_0x532ccf['attributes'][_0xa13c('0x38')]?_0x532ccf['attributes']:_0xf9dfaa[_0xa13c('0x31')];if(!_0x3f3f9c[_0xa13c('0x32')][_0xa13c('0x39')]('nolimit')){_0x532ccf[_0xa13c('0x1f')]=qs[_0xa13c('0x1f')](_0x3f3f9c[_0xa13c('0x32')][_0xa13c('0x1f')]);_0x532ccf[_0xa13c('0x1d')]=qs[_0xa13c('0x1d')](_0x3f3f9c[_0xa13c('0x32')][_0xa13c('0x1d')]);}_0x532ccf[_0xa13c('0x3a')]=qs['sort'](_0x3f3f9c[_0xa13c('0x32')][_0xa13c('0x3b')]);_0x532ccf[_0xa13c('0x3c')]=qs[_0xa13c('0x34')](_[_0xa13c('0x3d')](_0x3f3f9c[_0xa13c('0x32')],_0xf9dfaa['filters']),_0x19b4e6);if(_0x3f3f9c[_0xa13c('0x32')][_0xa13c('0x3e')]){_0x532ccf[_0xa13c('0x3c')]=_['merge'](_0x532ccf[_0xa13c('0x3c')],{'$or':_[_0xa13c('0x2c')](_0x19b4e6,function(_0x4ec8f6){if(_0x4ec8f6[_0xa13c('0x2f')]!==_0xa13c('0x3f')){var _0x585cc4={};_0x585cc4[_0x4ec8f6[_0xa13c('0x29')]]={'$like':'%'+_0x3f3f9c['query'][_0xa13c('0x3e')]+'%'};return _0x585cc4;}})});}_0x532ccf=_[_0xa13c('0x40')]({},_0x532ccf,_0x3f3f9c[_0xa13c('0x41')]);var _0x482ac2={'where':_0x532ccf[_0xa13c('0x3c')]};return db[_0xa13c('0x2d')]['count'](_0x482ac2)[_0xa13c('0x24')](function(_0x49d984){_0x1069fd[_0xa13c('0x20')]=_0x49d984;if(_0x3f3f9c[_0xa13c('0x32')][_0xa13c('0x42')]){_0x532ccf[_0xa13c('0x43')]=[{'all':!![]}];}return db[_0xa13c('0x2d')][_0xa13c('0x44')](_0x532ccf);})[_0xa13c('0x24')](function(_0x5be1bd){_0x1069fd[_0xa13c('0x45')]=_0x5be1bd;return _0x1069fd;})[_0xa13c('0x24')](respondWithFilteredResult(_0x377de3,_0x532ccf))[_0xa13c('0x46')](handleError(_0x377de3,null));};exports[_0xa13c('0x47')]=function(_0x3c3800,_0x140164){var _0x572658={'raw':!![],'where':{'id':_0x3c3800[_0xa13c('0x48')]['id']}},_0x392433={};_0x392433[_0xa13c('0x31')]=_[_0xa13c('0x33')](db[_0xa13c('0x2d')][_0xa13c('0x2e')]);_0x392433[_0xa13c('0x32')]=_['keys'](_0x3c3800['query']);_0x392433[_0xa13c('0x34')]=_[_0xa13c('0x35')](_0x392433[_0xa13c('0x31')],_0x392433['query']);_0x572658[_0xa13c('0x36')]=_[_0xa13c('0x35')](_0x392433['model'],qs[_0xa13c('0x37')](_0x3c3800['query'][_0xa13c('0x37')]));_0x572658[_0xa13c('0x36')]=_0x572658[_0xa13c('0x36')][_0xa13c('0x38')]?_0x572658[_0xa13c('0x36')]:_0x392433[_0xa13c('0x31')];if(_0x3c3800['query']['includeAll']){_0x572658[_0xa13c('0x43')]=[{'all':!![]}];}_0x572658=_[_0xa13c('0x40')]({},_0x572658,_0x3c3800['options']);return db[_0xa13c('0x2d')][_0xa13c('0x49')](_0x572658)['then'](handleEntityNotFound(_0x140164,null))[_0xa13c('0x24')](respondWithResult(_0x140164,null))[_0xa13c('0x46')](handleError(_0x140164,null));};exports[_0xa13c('0x4a')]=function(_0x1e46a0,_0x557dd8){return db['MailSubstatus'][_0xa13c('0x4a')](_0x1e46a0[_0xa13c('0x4b')],{})['then'](respondWithResult(_0x557dd8,0xc9))[_0xa13c('0x46')](handleError(_0x557dd8,null));};exports[_0xa13c('0x4c')]=function(_0x4fe1ec,_0x4741a2){if(_0x4fe1ec[_0xa13c('0x4b')]['id']){delete _0x4fe1ec[_0xa13c('0x4b')]['id'];}return db['MailSubstatus'][_0xa13c('0x49')]({'where':{'id':_0x4fe1ec[_0xa13c('0x48')]['id']}})[_0xa13c('0x24')](handleEntityNotFound(_0x4741a2,null))[_0xa13c('0x24')](saveUpdates(_0x4fe1ec[_0xa13c('0x4b')],null))[_0xa13c('0x24')](respondWithResult(_0x4741a2,null))['catch'](handleError(_0x4741a2,null));};exports[_0xa13c('0x25')]=function(_0x165c93,_0x40c85a){return db['MailSubstatus'][_0xa13c('0x49')]({'where':{'id':_0x165c93['params']['id']}})[_0xa13c('0x24')](handleEntityNotFound(_0x40c85a,null))[_0xa13c('0x24')](removeEntity(_0x40c85a,null))[_0xa13c('0x46')](handleError(_0x40c85a,null));};exports['describe']=function(_0x334006,_0x54c11f){return db[_0xa13c('0x2d')][_0xa13c('0x4d')]()['then'](respondWithResult(_0x54c11f,null))[_0xa13c('0x46')](handleError(_0x54c11f,null));};
\ No newline at end of file
+var _0x2ee1=['send','index','map','MailSubstatus','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','findAll','params','rawAttributes','include','find','catch','create','body','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','name'];(function(_0x524b6e,_0x11baa8){var _0xee1476=function(_0x266210){while(--_0x266210){_0x524b6e['push'](_0x524b6e['shift']());}};_0xee1476(++_0x11baa8);}(_0x2ee1,0xb5));var _0x12ee=function(_0x528e8b,_0x4cb954){_0x528e8b=_0x528e8b-0x0;var _0x487ea5=_0x2ee1[_0x528e8b];return _0x487ea5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x12ee('0x0'));var zipdir=require(_0x12ee('0x1'));var jsonpatch=require(_0x12ee('0x2'));var rp=require('request-promise');var moment=require(_0x12ee('0x3'));var BPromise=require(_0x12ee('0x4'));var Mustache=require(_0x12ee('0x5'));var util=require('util');var path=require(_0x12ee('0x6'));var sox=require(_0x12ee('0x7'));var csv=require(_0x12ee('0x8'));var ejs=require(_0x12ee('0x9'));var fs=require('fs');var fs_extra=require(_0x12ee('0xa'));var _=require(_0x12ee('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x12ee('0xc'));var deskjs=require(_0x12ee('0xd'));var toCsv=require(_0x12ee('0x8'));var querystring=require(_0x12ee('0xe'));var Papa=require(_0x12ee('0xf'));var Redis=require(_0x12ee('0x10'));var authService=require(_0x12ee('0x11'));var qs=require(_0x12ee('0x12'));var as=require(_0x12ee('0x13'));var hardwareService=require(_0x12ee('0x14'));var logger=require(_0x12ee('0x15'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x12ee('0x16'));var db=require(_0x12ee('0x17'))['db'];function respondWithStatusCode(_0x2943bb,_0x5cfb5a){_0x5cfb5a=_0x5cfb5a||0xcc;return function(_0x41a3e9){if(_0x41a3e9){return _0x2943bb['sendStatus'](_0x5cfb5a);}return _0x2943bb[_0x12ee('0x18')](_0x5cfb5a)[_0x12ee('0x19')]();};}function respondWithResult(_0xde71b3,_0x9ee0f6){_0x9ee0f6=_0x9ee0f6||0xc8;return function(_0x5c50be){if(_0x5c50be){return _0xde71b3[_0x12ee('0x18')](_0x9ee0f6)['json'](_0x5c50be);}};}function respondWithFilteredResult(_0x37e480,_0x23c21d){return function(_0x483e8e){if(_0x483e8e){var _0x218d6a=typeof _0x23c21d[_0x12ee('0x1a')]===_0x12ee('0x1b')&&typeof _0x23c21d[_0x12ee('0x1c')]===_0x12ee('0x1b');var _0x4214ed=_0x483e8e[_0x12ee('0x1d')];var _0x451eb6=_0x218d6a?0x0:_0x23c21d[_0x12ee('0x1a')];var _0x1e14c2=_0x218d6a?_0x483e8e[_0x12ee('0x1d')]:_0x23c21d[_0x12ee('0x1a')]+_0x23c21d['limit'];var _0x442901;if(_0x1e14c2>=_0x4214ed){_0x1e14c2=_0x4214ed;_0x442901=0xc8;}else{_0x442901=0xce;}_0x37e480['status'](_0x442901);return _0x37e480[_0x12ee('0x1e')](_0x12ee('0x1f'),_0x451eb6+'-'+_0x1e14c2+'/'+_0x4214ed)['json'](_0x483e8e);}return null;};}function patchUpdates(_0x57e713){return function(_0x48e72d){try{jsonpatch[_0x12ee('0x20')](_0x48e72d,_0x57e713,!![]);}catch(_0x12656b){return BPromise[_0x12ee('0x21')](_0x12656b);}return _0x48e72d[_0x12ee('0x22')]();};}function saveUpdates(_0x6ad9b,_0x5c85fd){return function(_0x133318){if(_0x133318){return _0x133318[_0x12ee('0x23')](_0x6ad9b)[_0x12ee('0x24')](function(_0x55deac){return _0x55deac;});}return null;};}function removeEntity(_0xda0f5e,_0x51ac44){return function(_0xd03d09){if(_0xd03d09){return _0xd03d09[_0x12ee('0x25')]()[_0x12ee('0x24')](function(){_0xda0f5e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e1911,_0x1d7e3b){return function(_0x3b32ae){if(!_0x3b32ae){_0x5e1911[_0x12ee('0x26')](0x194);}return _0x3b32ae;};}function handleError(_0x5c8b02,_0x13c1a4){_0x13c1a4=_0x13c1a4||0x1f4;return function(_0x119b7f){logger['error'](_0x119b7f[_0x12ee('0x27')]);if(_0x119b7f['name']){delete _0x119b7f[_0x12ee('0x28')];}_0x5c8b02[_0x12ee('0x18')](_0x13c1a4)[_0x12ee('0x29')](_0x119b7f);};}exports[_0x12ee('0x2a')]=function(_0x209f1f,_0x4e4536){var _0x4f03c5={},_0x4610fb={},_0x2d1391={'count':0x0,'rows':[]};var _0x2a9c8d=_[_0x12ee('0x2b')](db[_0x12ee('0x2c')]['rawAttributes'],function(_0x2a2c02){return{'name':_0x2a2c02[_0x12ee('0x2d')],'type':_0x2a2c02[_0x12ee('0x2e')][_0x12ee('0x2f')]};});_0x4610fb[_0x12ee('0x30')]=_[_0x12ee('0x2b')](_0x2a9c8d,_0x12ee('0x28'));_0x4610fb[_0x12ee('0x31')]=_[_0x12ee('0x32')](_0x209f1f[_0x12ee('0x31')]);_0x4610fb[_0x12ee('0x33')]=_[_0x12ee('0x34')](_0x4610fb['model'],_0x4610fb['query']);_0x4f03c5[_0x12ee('0x35')]=_[_0x12ee('0x34')](_0x4610fb[_0x12ee('0x30')],qs[_0x12ee('0x36')](_0x209f1f[_0x12ee('0x31')][_0x12ee('0x36')]));_0x4f03c5[_0x12ee('0x35')]=_0x4f03c5[_0x12ee('0x35')][_0x12ee('0x37')]?_0x4f03c5[_0x12ee('0x35')]:_0x4610fb[_0x12ee('0x30')];if(!_0x209f1f[_0x12ee('0x31')][_0x12ee('0x38')](_0x12ee('0x39'))){_0x4f03c5['limit']=qs[_0x12ee('0x1c')](_0x209f1f[_0x12ee('0x31')][_0x12ee('0x1c')]);_0x4f03c5[_0x12ee('0x1a')]=qs[_0x12ee('0x1a')](_0x209f1f[_0x12ee('0x31')]['offset']);}_0x4f03c5[_0x12ee('0x3a')]=qs[_0x12ee('0x3b')](_0x209f1f[_0x12ee('0x31')][_0x12ee('0x3b')]);_0x4f03c5[_0x12ee('0x3c')]=qs[_0x12ee('0x33')](_['pick'](_0x209f1f[_0x12ee('0x31')],_0x4610fb['filters']),_0x2a9c8d);if(_0x209f1f[_0x12ee('0x31')][_0x12ee('0x3d')]){_0x4f03c5[_0x12ee('0x3c')]=_[_0x12ee('0x3e')](_0x4f03c5[_0x12ee('0x3c')],{'$or':_[_0x12ee('0x2b')](_0x2a9c8d,function(_0x5bb411){if(_0x5bb411['type']!==_0x12ee('0x3f')){var _0x2d9981={};_0x2d9981[_0x5bb411[_0x12ee('0x28')]]={'$like':'%'+_0x209f1f[_0x12ee('0x31')][_0x12ee('0x3d')]+'%'};return _0x2d9981;}})});}_0x4f03c5=_[_0x12ee('0x3e')]({},_0x4f03c5,_0x209f1f[_0x12ee('0x40')]);var _0x217d92={'where':_0x4f03c5['where']};return db[_0x12ee('0x2c')][_0x12ee('0x1d')](_0x217d92)[_0x12ee('0x24')](function(_0x4dec83){_0x2d1391[_0x12ee('0x1d')]=_0x4dec83;if(_0x209f1f[_0x12ee('0x31')]['includeAll']){_0x4f03c5['include']=[{'all':!![]}];}return db[_0x12ee('0x2c')][_0x12ee('0x41')](_0x4f03c5);})[_0x12ee('0x24')](function(_0x5097e8){_0x2d1391['rows']=_0x5097e8;return _0x2d1391;})[_0x12ee('0x24')](respondWithFilteredResult(_0x4e4536,_0x4f03c5))['catch'](handleError(_0x4e4536,null));};exports['show']=function(_0x22e0ef,_0x17fae3){var _0x3bcf46={'raw':!![],'where':{'id':_0x22e0ef[_0x12ee('0x42')]['id']}},_0x465a2e={};_0x465a2e[_0x12ee('0x30')]=_[_0x12ee('0x32')](db['MailSubstatus'][_0x12ee('0x43')]);_0x465a2e[_0x12ee('0x31')]=_['keys'](_0x22e0ef[_0x12ee('0x31')]);_0x465a2e[_0x12ee('0x33')]=_[_0x12ee('0x34')](_0x465a2e[_0x12ee('0x30')],_0x465a2e[_0x12ee('0x31')]);_0x3bcf46[_0x12ee('0x35')]=_[_0x12ee('0x34')](_0x465a2e[_0x12ee('0x30')],qs['fields'](_0x22e0ef[_0x12ee('0x31')][_0x12ee('0x36')]));_0x3bcf46[_0x12ee('0x35')]=_0x3bcf46[_0x12ee('0x35')][_0x12ee('0x37')]?_0x3bcf46[_0x12ee('0x35')]:_0x465a2e['model'];if(_0x22e0ef['query']['includeAll']){_0x3bcf46[_0x12ee('0x44')]=[{'all':!![]}];}_0x3bcf46=_[_0x12ee('0x3e')]({},_0x3bcf46,_0x22e0ef[_0x12ee('0x40')]);return db[_0x12ee('0x2c')][_0x12ee('0x45')](_0x3bcf46)['then'](handleEntityNotFound(_0x17fae3,null))[_0x12ee('0x24')](respondWithResult(_0x17fae3,null))[_0x12ee('0x46')](handleError(_0x17fae3,null));};exports['create']=function(_0x448473,_0x2a43b3){return db[_0x12ee('0x2c')][_0x12ee('0x47')](_0x448473[_0x12ee('0x48')],{})[_0x12ee('0x24')](respondWithResult(_0x2a43b3,0xc9))[_0x12ee('0x46')](handleError(_0x2a43b3,null));};exports[_0x12ee('0x23')]=function(_0x200277,_0x544573){if(_0x200277[_0x12ee('0x48')]['id']){delete _0x200277[_0x12ee('0x48')]['id'];}return db[_0x12ee('0x2c')][_0x12ee('0x45')]({'where':{'id':_0x200277[_0x12ee('0x42')]['id']}})[_0x12ee('0x24')](handleEntityNotFound(_0x544573,null))[_0x12ee('0x24')](saveUpdates(_0x200277[_0x12ee('0x48')],null))[_0x12ee('0x24')](respondWithResult(_0x544573,null))['catch'](handleError(_0x544573,null));};exports[_0x12ee('0x25')]=function(_0x2778c8,_0x34dd59){return db[_0x12ee('0x2c')][_0x12ee('0x45')]({'where':{'id':_0x2778c8[_0x12ee('0x42')]['id']}})[_0x12ee('0x24')](handleEntityNotFound(_0x34dd59,null))[_0x12ee('0x24')](removeEntity(_0x34dd59,null))[_0x12ee('0x46')](handleError(_0x34dd59,null));};exports[_0x12ee('0x49')]=function(_0x1d3cc1,_0x225233){return db[_0x12ee('0x2c')][_0x12ee('0x49')]()['then'](respondWithResult(_0x225233,null))['catch'](handleError(_0x225233,null));};
\ No newline at end of file
index 48d459a..a03a39d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19c9=['hook','exports','events','../../mysqldb','MailSubstatus','setMaxListeners','update','emit','hasOwnProperty'];(function(_0x40b241,_0x2ce6cc){var _0x22b4b1=function(_0x83fc40){while(--_0x83fc40){_0x40b241['push'](_0x40b241['shift']());}};_0x22b4b1(++_0x2ce6cc);}(_0x19c9,0x17c));var _0x919c=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0x19c9[_0x36dfbd];return _0x4ecad9;};'use strict';var EventEmitter=require(_0x919c('0x0'));var MailSubstatus=require(_0x919c('0x1'))['db'][_0x919c('0x2')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x919c('0x3')](0x0);var events={'afterUpdate':_0x919c('0x4')};function emitEvent(_0x43bbf7){return function(_0x20a7c6,_0x432ac8,_0x28f602){MailSubstatusEvents['emit'](_0x43bbf7+':'+_0x20a7c6['id'],_0x20a7c6);MailSubstatusEvents[_0x919c('0x5')](_0x43bbf7,_0x20a7c6);_0x28f602(null);};}for(var e in events){if(events[_0x919c('0x6')](e)){var event=events[e];MailSubstatus[_0x919c('0x7')](e,emitEvent(event));}}module[_0x919c('0x8')]=MailSubstatusEvents;
\ No newline at end of file
+var _0x599a=['exports','MailSubstatus','setMaxListeners','emit','hasOwnProperty','hook'];(function(_0x2d4c86,_0x4d5e70){var _0x280c5b=function(_0x257309){while(--_0x257309){_0x2d4c86['push'](_0x2d4c86['shift']());}};_0x280c5b(++_0x4d5e70);}(_0x599a,0x1c3));var _0xa599=function(_0x266618,_0x18f637){_0x266618=_0x266618-0x0;var _0x54dbf5=_0x599a[_0x266618];return _0x54dbf5;};'use strict';var EventEmitter=require('events');var MailSubstatus=require('../../mysqldb')['db'][_0xa599('0x0')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0xa599('0x1')](0x0);var events={'afterUpdate':'update'};function emitEvent(_0x351fbf){return function(_0x106ec7,_0x2b9e66,_0x3bf59f){MailSubstatusEvents[_0xa599('0x2')](_0x351fbf+':'+_0x106ec7['id'],_0x106ec7);MailSubstatusEvents[_0xa599('0x2')](_0x351fbf,_0x106ec7);_0x3bf59f(null);};}for(var e in events){if(events[_0xa599('0x3')](e)){var event=events[e];MailSubstatus[_0xa599('0x4')](e,emitEvent(event));}}module[_0xa599('0x5')]=MailSubstatusEvents;
\ No newline at end of file
index 9f4e878..130e414 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc815=['_previousDataValues','catch','./mailSubstatus.attributes','exports','models','define','MailSubstatus','mail_substatuses','Condition','update','name','mailSubstatus'];(function(_0x3f3848,_0x3cdd50){var _0x113b97=function(_0x3ee6e8){while(--_0x3ee6e8){_0x3f3848['push'](_0x3f3848['shift']());}};_0x113b97(++_0x3cdd50);}(_0xc815,0xaa));var _0x5c81=function(_0x4a747d,_0x3b747f){_0x4a747d=_0x4a747d-0x0;var _0x3a5b5c=_0xc815[_0x4a747d];return _0x3a5b5c;};'use strict';var attributes=require(_0x5c81('0x0'));module[_0x5c81('0x1')]=function(_0x124473){var _0x122cb7=_0x124473[_0x5c81('0x2')];return _0x124473[_0x5c81('0x3')](_0x5c81('0x4'),attributes,{'tableName':_0x5c81('0x5'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0xd6d8c1,_0xdb8f53,_0x16089e){return _0x122cb7[_0x5c81('0x6')][_0x5c81('0x7')]({'value':_0xd6d8c1[_0x5c81('0x8')]},{'where':{'field':_0x5c81('0x9'),'value':_0xd6d8c1[_0x5c81('0xa')]['name']}})['then'](function(){_0x16089e();})[_0x5c81('0xb')](function(_0x107da4){_0x16089e(_0x107da4);});}}});};
\ No newline at end of file
+var _0xa079=['define','MailSubstatus','mail_substatuses','Condition','name','mailSubstatus','_previousDataValues','then','exports','models'];(function(_0x56b5d1,_0x59be02){var _0x5bfe4a=function(_0x9ed053){while(--_0x9ed053){_0x56b5d1['push'](_0x56b5d1['shift']());}};_0x5bfe4a(++_0x59be02);}(_0xa079,0x10c));var _0x9a07=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa079[_0x3dd15e];return _0x231fd0;};'use strict';var attributes=require('./mailSubstatus.attributes');module[_0x9a07('0x0')]=function(_0x5612f0){var _0xfc98a6=_0x5612f0[_0x9a07('0x1')];return _0x5612f0[_0x9a07('0x2')](_0x9a07('0x3'),attributes,{'tableName':_0x9a07('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x3a55fc,_0x217638,_0x1d774a){return _0xfc98a6[_0x9a07('0x5')]['update']({'value':_0x3a55fc[_0x9a07('0x6')]},{'where':{'field':_0x9a07('0x7'),'value':_0x3a55fc[_0x9a07('0x8')][_0x9a07('0x6')]}})[_0x9a07('0x9')](function(){_0x1d774a();})['catch'](function(_0x21f572){_0x1d774a(_0x21f572);});}}});};
\ No newline at end of file
index 83d5287..ee81cd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa10d=['jayson/promise','client','http','then','info','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','randomstring','../../config/logger','rpc','../../config/environment'];(function(_0x3cef5d,_0x26d5f1){var _0x2bc228=function(_0x52f4b6){while(--_0x52f4b6){_0x3cef5d['push'](_0x3cef5d['shift']());}};_0x2bc228(++_0x26d5f1);}(_0xa10d,0x1dc));var _0xda10=function(_0x1b6186,_0x1ec7f2){_0x1b6186=_0x1b6186-0x0;var _0x186121=_0xa10d[_0x1b6186];return _0x186121;};'use strict';var _=require(_0xda10('0x0'));var util=require(_0xda10('0x1'));var moment=require(_0xda10('0x2'));var BPromise=require('bluebird');var rs=require(_0xda10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xda10('0x4'))(_0xda10('0x5'));var config=require(_0xda10('0x6'));var jayson=require(_0xda10('0x7'));var client=jayson[_0xda10('0x8')][_0xda10('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x480cf3,_0xc912fa,_0x3fe396){return new BPromise(function(_0x3601e8,_0x46e4e3){return client['request'](_0x480cf3,_0x3fe396)[_0xda10('0xa')](function(_0x1c8908){logger[_0xda10('0xb')](_0xda10('0xc'),_0xc912fa,_0xda10('0xd'));logger[_0xda10('0xe')](_0xda10('0xf'),_0xc912fa,'request\x20sent',JSON[_0xda10('0x10')](_0x1c8908));if(_0x1c8908[_0xda10('0x11')]){if(_0x1c8908[_0xda10('0x11')]['code']===0x1f4){logger[_0xda10('0x11')](_0xda10('0xc'),_0xc912fa,_0x1c8908[_0xda10('0x11')]['message']);return _0x46e4e3(_0x1c8908[_0xda10('0x11')]['message']);}logger[_0xda10('0x11')]('MailSubstatus,\x20%s,\x20%s',_0xc912fa,_0x1c8908[_0xda10('0x11')]['message']);return _0x3601e8(_0x1c8908[_0xda10('0x11')][_0xda10('0x12')]);}else{logger[_0xda10('0xb')]('MailSubstatus,\x20%s,\x20%s',_0xc912fa,_0xda10('0xd'));_0x3601e8(_0x1c8908[_0xda10('0x13')][_0xda10('0x12')]);}})[_0xda10('0x14')](function(_0x55ec74){logger[_0xda10('0x11')](_0xda10('0xc'),_0xc912fa,_0x55ec74);_0x46e4e3(_0x55ec74);});});}
\ No newline at end of file
+var _0xebf4=['MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','lodash','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','http','request','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x3ec0dd,_0x3a5e67){var _0x2818c7=function(_0x1f8166){while(--_0x1f8166){_0x3ec0dd['push'](_0x3ec0dd['shift']());}};_0x2818c7(++_0x3a5e67);}(_0xebf4,0xe3));var _0x4ebf=function(_0x571353,_0x1d3d63){_0x571353=_0x571353-0x0;var _0x1638b6=_0xebf4[_0x571353];return _0x1638b6;};'use strict';var _=require(_0x4ebf('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x4ebf('0x1'));var fs=require('fs');var Redis=require(_0x4ebf('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x4ebf('0x3'));var logger=require(_0x4ebf('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0x4ebf('0x5'));var client=jayson['client'][_0x4ebf('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x4d2f74,_0x4ce322,_0x5b6a14){return new BPromise(function(_0x4ac8e2,_0x45c96f){return client[_0x4ebf('0x7')](_0x4d2f74,_0x5b6a14)['then'](function(_0x2eaacb){logger['info'](_0x4ebf('0x8'),_0x4ce322,_0x4ebf('0x9'));logger[_0x4ebf('0xa')](_0x4ebf('0xb'),_0x4ce322,_0x4ebf('0x9'),JSON[_0x4ebf('0xc')](_0x2eaacb));if(_0x2eaacb[_0x4ebf('0xd')]){if(_0x2eaacb['error']['code']===0x1f4){logger['error'](_0x4ebf('0x8'),_0x4ce322,_0x2eaacb[_0x4ebf('0xd')][_0x4ebf('0xe')]);return _0x45c96f(_0x2eaacb[_0x4ebf('0xd')][_0x4ebf('0xe')]);}logger[_0x4ebf('0xd')]('MailSubstatus,\x20%s,\x20%s',_0x4ce322,_0x2eaacb[_0x4ebf('0xd')][_0x4ebf('0xe')]);return _0x4ac8e2(_0x2eaacb['error'][_0x4ebf('0xe')]);}else{logger[_0x4ebf('0xf')](_0x4ebf('0x8'),_0x4ce322,'request\x20sent');_0x4ac8e2(_0x2eaacb['result'][_0x4ebf('0xe')]);}})[_0x4ebf('0x10')](function(_0x23f660){logger['error'](_0x4ebf('0x8'),_0x4ce322,_0x23f660);_0x45c96f(_0x23f660);});});}
\ No newline at end of file
index 15a2903..807a8d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c30=['index','/describe','describe','/:id','show','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailTransferReport.controller','get','isAuthenticated'];(function(_0x96093f,_0x21ff01){var _0x9cdcb4=function(_0x3f7cbd){while(--_0x3f7cbd){_0x96093f['push'](_0x96093f['shift']());}};_0x9cdcb4(++_0x21ff01);}(_0x5c30,0x199));var _0x05c3=function(_0x2ec42b,_0x293f68){_0x2ec42b=_0x2ec42b-0x0;var _0x2efa28=_0x5c30[_0x2ec42b];return _0x2efa28;};'use strict';var multer=require(_0x05c3('0x0'));var util=require(_0x05c3('0x1'));var path=require(_0x05c3('0x2'));var timeout=require(_0x05c3('0x3'));var express=require('express');var router=express[_0x05c3('0x4')]();var fs_extra=require(_0x05c3('0x5'));var auth=require(_0x05c3('0x6'));var interaction=require(_0x05c3('0x7'));var config=require('../../config/environment');var controller=require(_0x05c3('0x8'));router[_0x05c3('0x9')]('/',auth[_0x05c3('0xa')](),controller[_0x05c3('0xb')]);router[_0x05c3('0x9')](_0x05c3('0xc'),auth[_0x05c3('0xa')](),controller[_0x05c3('0xd')]);router[_0x05c3('0x9')](_0x05c3('0xe'),auth[_0x05c3('0xa')](),controller[_0x05c3('0xf')]);router['post']('/',auth[_0x05c3('0xa')](),controller['create']);router[_0x05c3('0x10')](_0x05c3('0xe'),auth[_0x05c3('0xa')](),controller[_0x05c3('0x11')]);router[_0x05c3('0x12')](_0x05c3('0xe'),auth[_0x05c3('0xa')](),controller[_0x05c3('0x13')]);module[_0x05c3('0x14')]=router;
\ No newline at end of file
+var _0x5467=['post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','/describe','isAuthenticated','describe','/:id'];(function(_0x4d5e52,_0x341522){var _0xae3ddb=function(_0x111c7f){while(--_0x111c7f){_0x4d5e52['push'](_0x4d5e52['shift']());}};_0xae3ddb(++_0x341522);}(_0x5467,0x12c));var _0x7546=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0x5467[_0x3e112d];return _0x531c31;};'use strict';var multer=require(_0x7546('0x0'));var util=require(_0x7546('0x1'));var path=require(_0x7546('0x2'));var timeout=require(_0x7546('0x3'));var express=require(_0x7546('0x4'));var router=express['Router']();var fs_extra=require(_0x7546('0x5'));var auth=require(_0x7546('0x6'));var interaction=require(_0x7546('0x7'));var config=require(_0x7546('0x8'));var controller=require(_0x7546('0x9'));router[_0x7546('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x7546('0xa')](_0x7546('0xb'),auth[_0x7546('0xc')](),controller[_0x7546('0xd')]);router['get'](_0x7546('0xe'),auth[_0x7546('0xc')](),controller['show']);router[_0x7546('0xf')]('/',auth[_0x7546('0xc')](),controller[_0x7546('0x10')]);router[_0x7546('0x11')]('/:id',auth[_0x7546('0xc')](),controller[_0x7546('0x12')]);router['delete'](_0x7546('0xe'),auth[_0x7546('0xc')](),controller[_0x7546('0x13')]);module[_0x7546('0x14')]=router;
\ No newline at end of file
index f3d2245..6003c87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x776417,_0x35ae0c){var _0x5a214b=function(_0x331088){while(--_0x331088){_0x776417['push'](_0x776417['shift']());}};_0x5a214b(++_0x35ae0c);}(_0xaa88,0x137));var _0x8aa8=function(_0x4c0622,_0x5dacaf){_0x4c0622=_0x4c0622-0x0;var _0x1799d8=_0xaa88[_0x4c0622];return _0x1799d8;};'use strict';var moment=require(_0x8aa8('0x0'));var Sequelize=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'uniqueid':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8aa8('0x4'),_0x8aa8('0x5'),_0x8aa8('0x6')),'allowNull':![],'defaultValue':_0x8aa8('0x6')},'transferredAt':{'type':Sequelize[_0x8aa8('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x8aa8('0x8')]}};
\ No newline at end of file
+var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x230e39,_0x5341){var _0xa804e=function(_0xe14796){while(--_0xe14796){_0x230e39['push'](_0x230e39['shift']());}};_0xa804e(++_0x5341);}(_0xb43b,0x1b2));var _0xbb43=function(_0x247087,_0x313d5a){_0x247087=_0x247087-0x0;var _0x193dc7=_0xb43b[_0x247087];return _0x193dc7;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
index 1c20a3e..be9cce1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7ca=['keys','filters','intersection','attributes','model','fields','length','nolimit','limit','where','pick','merge','VIRTUAL','filter','options','include','rows','catch','params','includeAll','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','end','offset','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','index','map','MailTransferReport','type','key','query'];(function(_0x5337c4,_0x471ab6){var _0x1f25af=function(_0x57088b){while(--_0x57088b){_0x5337c4['push'](_0x5337c4['shift']());}};_0x1f25af(++_0x471ab6);}(_0xf7ca,0x1b6));var _0xaf7c=function(_0x36f748,_0x3d45d8){_0x36f748=_0x36f748-0x0;var _0x292bf0=_0xf7ca[_0x36f748];return _0x292bf0;};'use strict';var emlformat=require(_0xaf7c('0x0'));var rimraf=require(_0xaf7c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaf7c('0x2'));var rp=require(_0xaf7c('0x3'));var moment=require('moment');var BPromise=require(_0xaf7c('0x4'));var Mustache=require(_0xaf7c('0x5'));var util=require(_0xaf7c('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xaf7c('0x7'));var ejs=require(_0xaf7c('0x8'));var fs=require('fs');var fs_extra=require(_0xaf7c('0x9'));var _=require('lodash');var squel=require(_0xaf7c('0xa'));var crypto=require(_0xaf7c('0xb'));var jsforce=require(_0xaf7c('0xc'));var deskjs=require(_0xaf7c('0xd'));var toCsv=require(_0xaf7c('0x7'));var querystring=require(_0xaf7c('0xe'));var Papa=require(_0xaf7c('0xf'));var Redis=require(_0xaf7c('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xaf7c('0x11'));var hardwareService=require(_0xaf7c('0x12'));var logger=require(_0xaf7c('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xaf7c('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xaf7c('0x15'))['db'];function respondWithStatusCode(_0xf2387f,_0x334a41){_0x334a41=_0x334a41||0xcc;return function(_0x48ed8f){if(_0x48ed8f){return _0xf2387f[_0xaf7c('0x16')](_0x334a41);}return _0xf2387f['status'](_0x334a41)[_0xaf7c('0x17')]();};}function respondWithResult(_0x7ab12d,_0x236411){_0x236411=_0x236411||0xc8;return function(_0x1d5e44){if(_0x1d5e44){return _0x7ab12d['status'](_0x236411)['json'](_0x1d5e44);}};}function respondWithFilteredResult(_0x5c1c2f,_0xe555bd){return function(_0xd69f03){if(_0xd69f03){var _0x5e29a1=typeof _0xe555bd[_0xaf7c('0x18')]===_0xaf7c('0x19')&&typeof _0xe555bd['limit']==='undefined';var _0x452098=_0xd69f03['count'];var _0x4cae33=_0x5e29a1?0x0:_0xe555bd[_0xaf7c('0x18')];var _0x5218bb=_0x5e29a1?_0xd69f03[_0xaf7c('0x1a')]:_0xe555bd['offset']+_0xe555bd['limit'];var _0x10fc87;if(_0x5218bb>=_0x452098){_0x5218bb=_0x452098;_0x10fc87=0xc8;}else{_0x10fc87=0xce;}_0x5c1c2f['status'](_0x10fc87);return _0x5c1c2f[_0xaf7c('0x1b')](_0xaf7c('0x1c'),_0x4cae33+'-'+_0x5218bb+'/'+_0x452098)[_0xaf7c('0x1d')](_0xd69f03);}return null;};}function patchUpdates(_0x253f46){return function(_0x5d1f34){try{jsonpatch[_0xaf7c('0x1e')](_0x5d1f34,_0x253f46,!![]);}catch(_0x549c0b){return BPromise[_0xaf7c('0x1f')](_0x549c0b);}return _0x5d1f34[_0xaf7c('0x20')]();};}function saveUpdates(_0x1d12ab,_0x14013){return function(_0x48c1d7){if(_0x48c1d7){return _0x48c1d7[_0xaf7c('0x21')](_0x1d12ab)[_0xaf7c('0x22')](function(_0xfaf171){return _0xfaf171;});}return null;};}function removeEntity(_0x491d7c,_0x2125df){return function(_0x368c47){if(_0x368c47){return _0x368c47[_0xaf7c('0x23')]()[_0xaf7c('0x22')](function(){_0x491d7c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x567dc0,_0x20d01b){return function(_0x1e9bce){if(!_0x1e9bce){_0x567dc0['sendStatus'](0x194);}return _0x1e9bce;};}function handleError(_0x1f10a8,_0x5806d4){_0x5806d4=_0x5806d4||0x1f4;return function(_0x241de0){logger[_0xaf7c('0x24')](_0x241de0[_0xaf7c('0x25')]);if(_0x241de0[_0xaf7c('0x26')]){delete _0x241de0['name'];}_0x1f10a8['status'](_0x5806d4)['send'](_0x241de0);};}exports[_0xaf7c('0x27')]=function(_0x1c08e1,_0x531333){var _0x171447={},_0xe4c494={},_0x480051={'count':0x0,'rows':[]};var _0x525fd3=_[_0xaf7c('0x28')](db[_0xaf7c('0x29')]['rawAttributes'],function(_0x800e65){return{'name':_0x800e65['fieldName'],'type':_0x800e65[_0xaf7c('0x2a')][_0xaf7c('0x2b')]};});_0xe4c494['model']=_[_0xaf7c('0x28')](_0x525fd3,_0xaf7c('0x26'));_0xe4c494[_0xaf7c('0x2c')]=_[_0xaf7c('0x2d')](_0x1c08e1[_0xaf7c('0x2c')]);_0xe4c494[_0xaf7c('0x2e')]=_[_0xaf7c('0x2f')](_0xe4c494['model'],_0xe4c494['query']);_0x171447[_0xaf7c('0x30')]=_[_0xaf7c('0x2f')](_0xe4c494[_0xaf7c('0x31')],qs[_0xaf7c('0x32')](_0x1c08e1[_0xaf7c('0x2c')][_0xaf7c('0x32')]));_0x171447['attributes']=_0x171447['attributes'][_0xaf7c('0x33')]?_0x171447[_0xaf7c('0x30')]:_0xe4c494[_0xaf7c('0x31')];if(!_0x1c08e1[_0xaf7c('0x2c')]['hasOwnProperty'](_0xaf7c('0x34'))){_0x171447[_0xaf7c('0x35')]=qs[_0xaf7c('0x35')](_0x1c08e1[_0xaf7c('0x2c')]['limit']);_0x171447['offset']=qs[_0xaf7c('0x18')](_0x1c08e1[_0xaf7c('0x2c')][_0xaf7c('0x18')]);}_0x171447['order']=qs['sort'](_0x1c08e1[_0xaf7c('0x2c')]['sort']);_0x171447[_0xaf7c('0x36')]=qs[_0xaf7c('0x2e')](_[_0xaf7c('0x37')](_0x1c08e1[_0xaf7c('0x2c')],_0xe4c494['filters']),_0x525fd3);if(_0x1c08e1[_0xaf7c('0x2c')]['filter']){_0x171447[_0xaf7c('0x36')]=_[_0xaf7c('0x38')](_0x171447[_0xaf7c('0x36')],{'$or':_[_0xaf7c('0x28')](_0x525fd3,function(_0x2fea69){if(_0x2fea69[_0xaf7c('0x2a')]!==_0xaf7c('0x39')){var _0x5c9a28={};_0x5c9a28[_0x2fea69[_0xaf7c('0x26')]]={'$like':'%'+_0x1c08e1['query'][_0xaf7c('0x3a')]+'%'};return _0x5c9a28;}})});}_0x171447=_[_0xaf7c('0x38')]({},_0x171447,_0x1c08e1[_0xaf7c('0x3b')]);var _0x3ecbd0={'where':_0x171447['where']};return db[_0xaf7c('0x29')][_0xaf7c('0x1a')](_0x3ecbd0)[_0xaf7c('0x22')](function(_0x34604a){_0x480051[_0xaf7c('0x1a')]=_0x34604a;if(_0x1c08e1['query']['includeAll']){_0x171447[_0xaf7c('0x3c')]=[{'all':!![]}];}return db[_0xaf7c('0x29')]['findAll'](_0x171447);})[_0xaf7c('0x22')](function(_0x186dea){_0x480051[_0xaf7c('0x3d')]=_0x186dea;return _0x480051;})[_0xaf7c('0x22')](respondWithFilteredResult(_0x531333,_0x171447))[_0xaf7c('0x3e')](handleError(_0x531333,null));};exports['show']=function(_0x4c4e15,_0x1b88b3){var _0x356a4e={'raw':!![],'where':{'id':_0x4c4e15[_0xaf7c('0x3f')]['id']}},_0x465d6a={};_0x465d6a[_0xaf7c('0x31')]=_[_0xaf7c('0x2d')](db['MailTransferReport']['rawAttributes']);_0x465d6a[_0xaf7c('0x2c')]=_['keys'](_0x4c4e15[_0xaf7c('0x2c')]);_0x465d6a[_0xaf7c('0x2e')]=_['intersection'](_0x465d6a[_0xaf7c('0x31')],_0x465d6a[_0xaf7c('0x2c')]);_0x356a4e[_0xaf7c('0x30')]=_['intersection'](_0x465d6a['model'],qs[_0xaf7c('0x32')](_0x4c4e15[_0xaf7c('0x2c')]['fields']));_0x356a4e[_0xaf7c('0x30')]=_0x356a4e[_0xaf7c('0x30')][_0xaf7c('0x33')]?_0x356a4e[_0xaf7c('0x30')]:_0x465d6a[_0xaf7c('0x31')];if(_0x4c4e15[_0xaf7c('0x2c')][_0xaf7c('0x40')]){_0x356a4e[_0xaf7c('0x3c')]=[{'all':!![]}];}_0x356a4e=_[_0xaf7c('0x38')]({},_0x356a4e,_0x4c4e15[_0xaf7c('0x3b')]);return db['MailTransferReport'][_0xaf7c('0x41')](_0x356a4e)['then'](handleEntityNotFound(_0x1b88b3,null))[_0xaf7c('0x22')](respondWithResult(_0x1b88b3,null))[_0xaf7c('0x3e')](handleError(_0x1b88b3,null));};exports[_0xaf7c('0x42')]=function(_0x3988e1,_0x3b3a2c){return db[_0xaf7c('0x29')]['create'](_0x3988e1[_0xaf7c('0x43')],{})[_0xaf7c('0x22')](respondWithResult(_0x3b3a2c,0xc9))[_0xaf7c('0x3e')](handleError(_0x3b3a2c,null));};exports[_0xaf7c('0x21')]=function(_0x2ac20c,_0x4cab68){if(_0x2ac20c[_0xaf7c('0x43')]['id']){delete _0x2ac20c[_0xaf7c('0x43')]['id'];}return db[_0xaf7c('0x29')][_0xaf7c('0x41')]({'where':{'id':_0x2ac20c[_0xaf7c('0x3f')]['id']}})[_0xaf7c('0x22')](handleEntityNotFound(_0x4cab68,null))['then'](saveUpdates(_0x2ac20c[_0xaf7c('0x43')],null))[_0xaf7c('0x22')](respondWithResult(_0x4cab68,null))['catch'](handleError(_0x4cab68,null));};exports['destroy']=function(_0x294c74,_0x2c8249){return db[_0xaf7c('0x29')][_0xaf7c('0x41')]({'where':{'id':_0x294c74[_0xaf7c('0x3f')]['id']}})[_0xaf7c('0x22')](handleEntityNotFound(_0x2c8249,null))['then'](removeEntity(_0x2c8249,null))['catch'](handleError(_0x2c8249,null));};exports[_0xaf7c('0x44')]=function(_0x3c0476,_0x45e0b7){return db[_0xaf7c('0x29')][_0xaf7c('0x44')]()['then'](respondWithResult(_0x45e0b7,null))[_0xaf7c('0x3e')](handleError(_0x45e0b7,null));};
\ No newline at end of file
+var _0x853e=['order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','params','fields','include','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','stack','name','index','MailTransferReport','fieldName','type','model','map','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit'];(function(_0x2c7dc6,_0x3c4ce0){var _0x10002b=function(_0x26f390){while(--_0x26f390){_0x2c7dc6['push'](_0x2c7dc6['shift']());}};_0x10002b(++_0x3c4ce0);}(_0x853e,0x18f));var _0xe853=function(_0x30d5af,_0x35e3cd){_0x30d5af=_0x30d5af-0x0;var _0xe3689d=_0x853e[_0x30d5af];return _0xe3689d;};'use strict';var emlformat=require(_0xe853('0x0'));var rimraf=require(_0xe853('0x1'));var zipdir=require(_0xe853('0x2'));var jsonpatch=require(_0xe853('0x3'));var rp=require(_0xe853('0x4'));var moment=require(_0xe853('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xe853('0x6'));var util=require(_0xe853('0x7'));var path=require(_0xe853('0x8'));var sox=require(_0xe853('0x9'));var csv=require(_0xe853('0xa'));var ejs=require(_0xe853('0xb'));var fs=require('fs');var fs_extra=require(_0xe853('0xc'));var _=require(_0xe853('0xd'));var squel=require(_0xe853('0xe'));var crypto=require('crypto');var jsforce=require(_0xe853('0xf'));var deskjs=require(_0xe853('0x10'));var toCsv=require(_0xe853('0xa'));var querystring=require(_0xe853('0x11'));var Papa=require(_0xe853('0x12'));var Redis=require(_0xe853('0x13'));var authService=require(_0xe853('0x14'));var qs=require(_0xe853('0x15'));var as=require(_0xe853('0x16'));var hardwareService=require(_0xe853('0x17'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe853('0x18'));var db=require(_0xe853('0x19'))['db'];function respondWithStatusCode(_0x40ada4,_0x45d597){_0x45d597=_0x45d597||0xcc;return function(_0x280b30){if(_0x280b30){return _0x40ada4[_0xe853('0x1a')](_0x45d597);}return _0x40ada4[_0xe853('0x1b')](_0x45d597)[_0xe853('0x1c')]();};}function respondWithResult(_0x1e2766,_0x59f0c5){_0x59f0c5=_0x59f0c5||0xc8;return function(_0x2d849d){if(_0x2d849d){return _0x1e2766[_0xe853('0x1b')](_0x59f0c5)[_0xe853('0x1d')](_0x2d849d);}};}function respondWithFilteredResult(_0xdbd856,_0x1e55ca){return function(_0x476e47){if(_0x476e47){var _0x21d527=typeof _0x1e55ca[_0xe853('0x1e')]===_0xe853('0x1f')&&typeof _0x1e55ca['limit']==='undefined';var _0x3e1003=_0x476e47[_0xe853('0x20')];var _0x5f0392=_0x21d527?0x0:_0x1e55ca['offset'];var _0x40a9c0=_0x21d527?_0x476e47[_0xe853('0x20')]:_0x1e55ca[_0xe853('0x1e')]+_0x1e55ca[_0xe853('0x21')];var _0x1d65b8;if(_0x40a9c0>=_0x3e1003){_0x40a9c0=_0x3e1003;_0x1d65b8=0xc8;}else{_0x1d65b8=0xce;}_0xdbd856[_0xe853('0x1b')](_0x1d65b8);return _0xdbd856[_0xe853('0x22')](_0xe853('0x23'),_0x5f0392+'-'+_0x40a9c0+'/'+_0x3e1003)[_0xe853('0x1d')](_0x476e47);}return null;};}function patchUpdates(_0x485d85){return function(_0x538fbf){try{jsonpatch[_0xe853('0x24')](_0x538fbf,_0x485d85,!![]);}catch(_0x4699d1){return BPromise[_0xe853('0x25')](_0x4699d1);}return _0x538fbf[_0xe853('0x26')]();};}function saveUpdates(_0x22a69a,_0x3a13f9){return function(_0x25e6cb){if(_0x25e6cb){return _0x25e6cb['update'](_0x22a69a)[_0xe853('0x27')](function(_0x1337a8){return _0x1337a8;});}return null;};}function removeEntity(_0x308017,_0x2a2b45){return function(_0x1de3ee){if(_0x1de3ee){return _0x1de3ee[_0xe853('0x28')]()['then'](function(){_0x308017[_0xe853('0x1b')](0xcc)[_0xe853('0x1c')]();});}};}function handleEntityNotFound(_0x11a512,_0x2ea412){return function(_0x2d162b){if(!_0x2d162b){_0x11a512[_0xe853('0x1a')](0x194);}return _0x2d162b;};}function handleError(_0xd1ea3b,_0xc74ad7){_0xc74ad7=_0xc74ad7||0x1f4;return function(_0x32fb08){logger['error'](_0x32fb08[_0xe853('0x29')]);if(_0x32fb08[_0xe853('0x2a')]){delete _0x32fb08[_0xe853('0x2a')];}_0xd1ea3b[_0xe853('0x1b')](_0xc74ad7)['send'](_0x32fb08);};}exports[_0xe853('0x2b')]=function(_0x3826bf,_0x10e103){var _0x165969={},_0x17ef7b={},_0x445e67={'count':0x0,'rows':[]};var _0x2b6b8c=_['map'](db[_0xe853('0x2c')]['rawAttributes'],function(_0x47446e){return{'name':_0x47446e[_0xe853('0x2d')],'type':_0x47446e[_0xe853('0x2e')]['key']};});_0x17ef7b[_0xe853('0x2f')]=_[_0xe853('0x30')](_0x2b6b8c,_0xe853('0x2a'));_0x17ef7b[_0xe853('0x31')]=_[_0xe853('0x32')](_0x3826bf[_0xe853('0x31')]);_0x17ef7b[_0xe853('0x33')]=_[_0xe853('0x34')](_0x17ef7b[_0xe853('0x2f')],_0x17ef7b[_0xe853('0x31')]);_0x165969[_0xe853('0x35')]=_[_0xe853('0x34')](_0x17ef7b[_0xe853('0x2f')],qs['fields'](_0x3826bf[_0xe853('0x31')]['fields']));_0x165969[_0xe853('0x35')]=_0x165969[_0xe853('0x35')][_0xe853('0x36')]?_0x165969[_0xe853('0x35')]:_0x17ef7b[_0xe853('0x2f')];if(!_0x3826bf['query'][_0xe853('0x37')](_0xe853('0x38'))){_0x165969[_0xe853('0x21')]=qs[_0xe853('0x21')](_0x3826bf[_0xe853('0x31')][_0xe853('0x21')]);_0x165969['offset']=qs[_0xe853('0x1e')](_0x3826bf[_0xe853('0x31')][_0xe853('0x1e')]);}_0x165969[_0xe853('0x39')]=qs[_0xe853('0x3a')](_0x3826bf[_0xe853('0x31')]['sort']);_0x165969[_0xe853('0x3b')]=qs['filters'](_[_0xe853('0x3c')](_0x3826bf['query'],_0x17ef7b[_0xe853('0x33')]),_0x2b6b8c);if(_0x3826bf[_0xe853('0x31')][_0xe853('0x3d')]){_0x165969[_0xe853('0x3b')]=_[_0xe853('0x3e')](_0x165969[_0xe853('0x3b')],{'$or':_[_0xe853('0x30')](_0x2b6b8c,function(_0x20a0d6){if(_0x20a0d6[_0xe853('0x2e')]!==_0xe853('0x3f')){var _0x4e30d8={};_0x4e30d8[_0x20a0d6[_0xe853('0x2a')]]={'$like':'%'+_0x3826bf[_0xe853('0x31')][_0xe853('0x3d')]+'%'};return _0x4e30d8;}})});}_0x165969=_[_0xe853('0x3e')]({},_0x165969,_0x3826bf[_0xe853('0x40')]);var _0x4577f2={'where':_0x165969[_0xe853('0x3b')]};return db[_0xe853('0x2c')]['count'](_0x4577f2)[_0xe853('0x27')](function(_0xb6f99f){_0x445e67['count']=_0xb6f99f;if(_0x3826bf[_0xe853('0x31')][_0xe853('0x41')]){_0x165969['include']=[{'all':!![]}];}return db[_0xe853('0x2c')]['findAll'](_0x165969);})[_0xe853('0x27')](function(_0x52439a){_0x445e67[_0xe853('0x42')]=_0x52439a;return _0x445e67;})[_0xe853('0x27')](respondWithFilteredResult(_0x10e103,_0x165969))[_0xe853('0x43')](handleError(_0x10e103,null));};exports[_0xe853('0x44')]=function(_0x364b30,_0x32ccfc){var _0x4f4f37={'raw':!![],'where':{'id':_0x364b30[_0xe853('0x45')]['id']}},_0x5f2870={};_0x5f2870[_0xe853('0x2f')]=_[_0xe853('0x32')](db[_0xe853('0x2c')]['rawAttributes']);_0x5f2870[_0xe853('0x31')]=_[_0xe853('0x32')](_0x364b30[_0xe853('0x31')]);_0x5f2870['filters']=_[_0xe853('0x34')](_0x5f2870[_0xe853('0x2f')],_0x5f2870['query']);_0x4f4f37[_0xe853('0x35')]=_[_0xe853('0x34')](_0x5f2870[_0xe853('0x2f')],qs[_0xe853('0x46')](_0x364b30[_0xe853('0x31')][_0xe853('0x46')]));_0x4f4f37['attributes']=_0x4f4f37[_0xe853('0x35')][_0xe853('0x36')]?_0x4f4f37['attributes']:_0x5f2870['model'];if(_0x364b30[_0xe853('0x31')][_0xe853('0x41')]){_0x4f4f37[_0xe853('0x47')]=[{'all':!![]}];}_0x4f4f37=_[_0xe853('0x3e')]({},_0x4f4f37,_0x364b30[_0xe853('0x40')]);return db['MailTransferReport']['find'](_0x4f4f37)[_0xe853('0x27')](handleEntityNotFound(_0x32ccfc,null))['then'](respondWithResult(_0x32ccfc,null))[_0xe853('0x43')](handleError(_0x32ccfc,null));};exports[_0xe853('0x48')]=function(_0x11b02a,_0x5d689a){return db['MailTransferReport'][_0xe853('0x48')](_0x11b02a[_0xe853('0x49')],{})[_0xe853('0x27')](respondWithResult(_0x5d689a,0xc9))[_0xe853('0x43')](handleError(_0x5d689a,null));};exports['update']=function(_0x1e6408,_0x5afaff){if(_0x1e6408[_0xe853('0x49')]['id']){delete _0x1e6408[_0xe853('0x49')]['id'];}return db['MailTransferReport'][_0xe853('0x4a')]({'where':{'id':_0x1e6408[_0xe853('0x45')]['id']}})['then'](handleEntityNotFound(_0x5afaff,null))[_0xe853('0x27')](saveUpdates(_0x1e6408['body'],null))[_0xe853('0x27')](respondWithResult(_0x5afaff,null))[_0xe853('0x43')](handleError(_0x5afaff,null));};exports['destroy']=function(_0x44ad94,_0x119880){return db['MailTransferReport'][_0xe853('0x4a')]({'where':{'id':_0x44ad94[_0xe853('0x45')]['id']}})[_0xe853('0x27')](handleEntityNotFound(_0x119880,null))[_0xe853('0x27')](removeEntity(_0x119880,null))[_0xe853('0x43')](handleError(_0x119880,null));};exports[_0xe853('0x4b')]=function(_0xa1b381,_0x424a48){return db[_0xe853('0x2c')]['describe']()[_0xe853('0x27')](respondWithResult(_0x424a48,null))[_0xe853('0x43')](handleError(_0x424a48,null));};
\ No newline at end of file
index e0f1f94..67b42d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b75=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','./mailTransferReport.attributes','exports','report_mail_transfer','uniqueid'];(function(_0x1ff575,_0xdba21f){var _0x48fc9e=function(_0x51cf97){while(--_0x51cf97){_0x1ff575['push'](_0x1ff575['shift']());}};_0x48fc9e(++_0xdba21f);}(_0x3b75,0x144));var _0x53b7=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0x3b75[_0xa148b7];return _0x51efd3;};'use strict';var _=require(_0x53b7('0x0'));var util=require(_0x53b7('0x1'));var logger=require(_0x53b7('0x2'))(_0x53b7('0x3'));var moment=require(_0x53b7('0x4'));var BPromise=require(_0x53b7('0x5'));var rp=require(_0x53b7('0x6'));var fs=require('fs');var path=require(_0x53b7('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x53b7('0x8'));module[_0x53b7('0x9')]=function(_0x3bfde3,_0x46f651){return _0x3bfde3['define']('MailTransferReport',attributes,{'tableName':_0x53b7('0xa'),'paranoid':![],'indexes':[{'name':_0x53b7('0xb'),'fields':[_0x53b7('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x684d=['api','bluebird','path','rimraf','../../config/environment','exports','MailTransferReport','report_mail_transfer','uniqueid','util','../../config/logger'];(function(_0x45ce08,_0x59dcc7){var _0x23dff2=function(_0x1ad0e5){while(--_0x1ad0e5){_0x45ce08['push'](_0x45ce08['shift']());}};_0x23dff2(++_0x59dcc7);}(_0x684d,0x174));var _0xd684=function(_0x4a1e94,_0x21765e){_0x4a1e94=_0x4a1e94-0x0;var _0x3d67dc=_0x684d[_0x4a1e94];return _0x3d67dc;};'use strict';var _=require('lodash');var util=require(_0xd684('0x0'));var logger=require(_0xd684('0x1'))(_0xd684('0x2'));var moment=require('moment');var BPromise=require(_0xd684('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd684('0x4'));var rimraf=require(_0xd684('0x5'));var config=require(_0xd684('0x6'));var attributes=require('./mailTransferReport.attributes');module[_0xd684('0x7')]=function(_0x5f50ac,_0x3bf907){return _0x5f50ac['define'](_0xd684('0x8'),attributes,{'tableName':_0xd684('0x9'),'paranoid':![],'indexes':[{'name':_0xd684('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index b918bd7..66f8c8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d26=['../../config/logger','../../config/environment','jayson/promise','client','http','request','then','MailTransferReport,\x20%s,\x20%s','MailTransferReport,\x20%s,\x20%s,\x20%s','error','message','info','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x3b2395,_0x1cf2c1){var _0x2e6751=function(_0x4ea274){while(--_0x4ea274){_0x3b2395['push'](_0x3b2395['shift']());}};_0x2e6751(++_0x1cf2c1);}(_0x3d26,0x7d));var _0x63d2=function(_0x576df0,_0x3cf751){_0x576df0=_0x576df0-0x0;var _0x2ff311=_0x3d26[_0x576df0];return _0x2ff311;};'use strict';var _=require(_0x63d2('0x0'));var util=require(_0x63d2('0x1'));var moment=require(_0x63d2('0x2'));var BPromise=require(_0x63d2('0x3'));var rs=require(_0x63d2('0x4'));var fs=require('fs');var Redis=require(_0x63d2('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x63d2('0x6'));var logger=require(_0x63d2('0x7'))('rpc');var config=require(_0x63d2('0x8'));var jayson=require(_0x63d2('0x9'));var client=jayson[_0x63d2('0xa')][_0x63d2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4f32fa,_0x42fa06,_0x2c5ba6){return new BPromise(function(_0x22db03,_0x52210d){return client[_0x63d2('0xc')](_0x4f32fa,_0x2c5ba6)[_0x63d2('0xd')](function(_0x227ccd){logger['info'](_0x63d2('0xe'),_0x42fa06,'request\x20sent');logger['debug'](_0x63d2('0xf'),_0x42fa06,'request\x20sent',JSON['stringify'](_0x227ccd));if(_0x227ccd[_0x63d2('0x10')]){if(_0x227ccd['error']['code']===0x1f4){logger[_0x63d2('0x10')](_0x63d2('0xe'),_0x42fa06,_0x227ccd[_0x63d2('0x10')][_0x63d2('0x11')]);return _0x52210d(_0x227ccd['error'][_0x63d2('0x11')]);}logger[_0x63d2('0x10')](_0x63d2('0xe'),_0x42fa06,_0x227ccd['error'][_0x63d2('0x11')]);return _0x22db03(_0x227ccd['error'][_0x63d2('0x11')]);}else{logger[_0x63d2('0x12')](_0x63d2('0xe'),_0x42fa06,_0x63d2('0x13'));_0x22db03(_0x227ccd[_0x63d2('0x14')][_0x63d2('0x11')]);}})[_0x63d2('0x15')](function(_0x4e0df8){logger[_0x63d2('0x10')]('MailTransferReport,\x20%s,\x20%s',_0x42fa06,_0x4e0df8);_0x52210d(_0x4e0df8);});});}
\ No newline at end of file
+var _0x0cc2=['lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','client','http','request','then','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0xf55e73,_0x3fecc5){var _0x116b99=function(_0x314e0c){while(--_0x314e0c){_0xf55e73['push'](_0xf55e73['shift']());}};_0x116b99(++_0x3fecc5);}(_0x0cc2,0x140));var _0x20cc=function(_0x232e6b,_0xe3900c){_0x232e6b=_0x232e6b-0x0;var _0x566433=_0x0cc2[_0x232e6b];return _0x566433;};'use strict';var _=require(_0x20cc('0x0'));var util=require(_0x20cc('0x1'));var moment=require('moment');var BPromise=require(_0x20cc('0x2'));var rs=require(_0x20cc('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x20cc('0x4'))['db'];var utils=require(_0x20cc('0x5'));var logger=require(_0x20cc('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x20cc('0x7')][_0x20cc('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2a8629,_0x330f7b,_0x30a6c){return new BPromise(function(_0x4e7db0,_0x164df6){return client[_0x20cc('0x9')](_0x2a8629,_0x30a6c)[_0x20cc('0xa')](function(_0x1af606){logger[_0x20cc('0xb')](_0x20cc('0xc'),_0x330f7b,_0x20cc('0xd'));logger['debug'](_0x20cc('0xe'),_0x330f7b,_0x20cc('0xd'),JSON[_0x20cc('0xf')](_0x1af606));if(_0x1af606[_0x20cc('0x10')]){if(_0x1af606[_0x20cc('0x10')][_0x20cc('0x11')]===0x1f4){logger[_0x20cc('0x10')](_0x20cc('0xc'),_0x330f7b,_0x1af606[_0x20cc('0x10')][_0x20cc('0x12')]);return _0x164df6(_0x1af606[_0x20cc('0x10')][_0x20cc('0x12')]);}logger[_0x20cc('0x10')](_0x20cc('0xc'),_0x330f7b,_0x1af606[_0x20cc('0x10')][_0x20cc('0x12')]);return _0x4e7db0(_0x1af606['error'][_0x20cc('0x12')]);}else{logger[_0x20cc('0xb')](_0x20cc('0xc'),_0x330f7b,'request\x20sent');_0x4e7db0(_0x1af606[_0x20cc('0x13')][_0x20cc('0x12')]);}})['catch'](function(_0x5bc32b){logger[_0x20cc('0x10')]('MailTransferReport,\x20%s,\x20%s',_0x330f7b,_0x5bc32b);_0x164df6(_0x5bc32b);});});}
\ No newline at end of file
index f701d58..6341d97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2cd=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','put','delete','destroy','multer','util','path','connect-timeout','express'];(function(_0x22fef9,_0x1ac5e2){var _0x175fd8=function(_0x577e99){while(--_0x577e99){_0x22fef9['push'](_0x22fef9['shift']());}};_0x175fd8(++_0x1ac5e2);}(_0xb2cd,0xab));var _0xdb2c=function(_0x500419,_0x549162){_0x500419=_0x500419-0x0;var _0x241c1a=_0xb2cd[_0x500419];return _0x241c1a;};'use strict';var multer=require(_0xdb2c('0x0'));var util=require(_0xdb2c('0x1'));var path=require(_0xdb2c('0x2'));var timeout=require(_0xdb2c('0x3'));var express=require(_0xdb2c('0x4'));var router=express[_0xdb2c('0x5')]();var fs_extra=require(_0xdb2c('0x6'));var auth=require(_0xdb2c('0x7'));var interaction=require(_0xdb2c('0x8'));var config=require(_0xdb2c('0x9'));var controller=require(_0xdb2c('0xa'));router[_0xdb2c('0xb')]('/',auth[_0xdb2c('0xc')](),controller[_0xdb2c('0xd')]);router['get'](_0xdb2c('0xe'),auth['isAuthenticated'](),controller[_0xdb2c('0xf')]);router[_0xdb2c('0xb')](_0xdb2c('0x10'),auth[_0xdb2c('0xc')](),controller['show']);router[_0xdb2c('0x11')]('/',auth['isAuthenticated'](),controller[_0xdb2c('0x12')]);router[_0xdb2c('0x13')](_0xdb2c('0x10'),auth[_0xdb2c('0xc')](),controller['update']);router[_0xdb2c('0x14')](_0xdb2c('0x10'),auth[_0xdb2c('0xc')](),controller[_0xdb2c('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xbf00=['describe','/:id','show','post','put','update','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','isAuthenticated','index','/describe'];(function(_0x2586a9,_0x372110){var _0x4ad2d7=function(_0x4db970){while(--_0x4db970){_0x2586a9['push'](_0x2586a9['shift']());}};_0x4ad2d7(++_0x372110);}(_0xbf00,0x104));var _0x0bf0=function(_0x86c0d5,_0x39c768){_0x86c0d5=_0x86c0d5-0x0;var _0x2a7ed0=_0xbf00[_0x86c0d5];return _0x2a7ed0;};'use strict';var multer=require(_0x0bf0('0x0'));var util=require(_0x0bf0('0x1'));var path=require(_0x0bf0('0x2'));var timeout=require(_0x0bf0('0x3'));var express=require(_0x0bf0('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0bf0('0x5'));var interaction=require(_0x0bf0('0x6'));var config=require(_0x0bf0('0x7'));var controller=require(_0x0bf0('0x8'));router[_0x0bf0('0x9')]('/',auth[_0x0bf0('0xa')](),controller[_0x0bf0('0xb')]);router[_0x0bf0('0x9')](_0x0bf0('0xc'),auth['isAuthenticated'](),controller[_0x0bf0('0xd')]);router['get'](_0x0bf0('0xe'),auth[_0x0bf0('0xa')](),controller[_0x0bf0('0xf')]);router[_0x0bf0('0x10')]('/',auth[_0x0bf0('0xa')](),controller['create']);router[_0x0bf0('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x0bf0('0x12')]);router['delete'](_0x0bf0('0xe'),auth['isAuthenticated'](),controller[_0x0bf0('0x13')]);module[_0x0bf0('0x14')]=router;
\ No newline at end of file
index 28b94ea..4c2253b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60f1=['exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[destination]','talk:[dial\x20string]','sequelize','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','getDataValue','enterAt','diff','seconds','setDataValue'];(function(_0x2c6e5d,_0x22cca6){var _0x39e3eb=function(_0x9e329b){while(--_0x9e329b){_0x2c6e5d['push'](_0x2c6e5d['shift']());}};_0x39e3eb(++_0x22cca6);}(_0x60f1,0x1bf));var _0x160f=function(_0x1f9744,_0x54a947){_0x1f9744=_0x1f9744-0x0;var _0x5aba67=_0x60f1[_0x1f9744];return _0x5aba67;};'use strict';var Sequelize=require(_0x160f('0x0'));var moment=require('moment');module[_0x160f('0x1')]={'channel':{'type':Sequelize[_0x160f('0x2')]},'membername':{'type':Sequelize[_0x160f('0x2')]},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x160f('0x2')],'defaultValue':_0x160f('0x3'),'comment':_0x160f('0x4')},'duration':{'type':Sequelize[_0x160f('0x5')]},'enterAt':{'type':Sequelize[_0x160f('0x6')]},'exitAt':{'type':Sequelize[_0x160f('0x6')],'set':function(_0x5dff06){var _0x49fc0b=moment(_0x5dff06);var _0x2ce396=moment(this[_0x160f('0x7')](_0x160f('0x8')));var _0x55d01b=_0x49fc0b[_0x160f('0x9')](_0x2ce396,_0x160f('0xa'));this[_0x160f('0xb')](_0x160f('0xc'),_0x5dff06);this[_0x160f('0xb')](_0x160f('0xd'),_0x55d01b>=0x0?_0x55d01b:null);}},'data1':{'type':Sequelize[_0x160f('0x2')],'comment':_0x160f('0xe')},'data2':{'type':Sequelize['STRING'],'comment':'talk:[start]'},'data3':{'type':Sequelize[_0x160f('0x2')],'comment':_0x160f('0xf')},'data4':{'type':Sequelize['STRING'],'comment':_0x160f('0x10')},'data5':{'type':Sequelize[_0x160f('0x2')],'comment':'talk:[queue]'},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize[_0x160f('0x5')]},'uniqueid':{'type':Sequelize[_0x160f('0x2')]}};
\ No newline at end of file
+var _0xf31e=['talk:[start]','talk:[dial\x20string]','talk:[queue]','INTEGER','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','DATE','enterAt','diff','seconds','setDataValue','exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]'];(function(_0xb5ab4b,_0x552ed3){var _0x5677e6=function(_0x41e214){while(--_0x41e214){_0xb5ab4b['push'](_0xb5ab4b['shift']());}};_0x5677e6(++_0x552ed3);}(_0xf31e,0x17a));var _0xef31=function(_0x5b60d8,_0x57b407){_0x5b60d8=_0x5b60d8-0x0;var _0x243439=_0xf31e[_0x5b60d8];return _0x243439;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xef31('0x0'));module[_0xef31('0x1')]={'channel':{'type':Sequelize[_0xef31('0x2')]},'membername':{'type':Sequelize[_0xef31('0x2')]},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xef31('0x2')],'defaultValue':_0xef31('0x3'),'comment':_0xef31('0x4')},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize[_0xef31('0x5')]},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x4cf70b){var _0x17832c=moment(_0x4cf70b);var _0x10b640=moment(this['getDataValue'](_0xef31('0x6')));var _0x2294c3=_0x17832c[_0xef31('0x7')](_0x10b640,_0xef31('0x8'));this[_0xef31('0x9')](_0xef31('0xa'),_0x4cf70b);this[_0xef31('0x9')](_0xef31('0xb'),_0x2294c3>=0x0?_0x2294c3:null);}},'data1':{'type':Sequelize[_0xef31('0x2')],'comment':_0xef31('0xc')},'data2':{'type':Sequelize[_0xef31('0x2')],'comment':_0xef31('0xd')},'data3':{'type':Sequelize[_0xef31('0x2')],'comment':'talk:[destination]'},'data4':{'type':Sequelize[_0xef31('0x2')],'comment':_0xef31('0xe')},'data5':{'type':Sequelize[_0xef31('0x2')],'comment':_0xef31('0xf')},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize[_0xef31('0x10')]},'uniqueid':{'type':Sequelize[_0xef31('0x2')]}};
\ No newline at end of file
index e3c0a30..0398000 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['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','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','MemberReport','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache'];(function(_0x2a6490,_0x1adf0f){var _0x1b31df=function(_0x51eeb7){while(--_0x51eeb7){_0x2a6490['push'](_0x2a6490['shift']());}};_0x1b31df(++_0x1adf0f);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'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['MemberReport']['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['MemberReport'][_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['MemberReport'][_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('0x40')][_0x7995('0x47')]({'where':{'id':_0x4ffc8a['params']['id']}})['then'](handleEntityNotFound(_0x19da63,null))['then'](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x4c')]=function(_0x4cf5db,_0x1cd85){return db[_0x7995('0x40')][_0x7995('0x4c')]()[_0x7995('0x26')](respondWithResult(_0x1cd85,null))[_0x7995('0x49')](handleError(_0x1cd85,null));};
\ No newline at end of file
+var _0xedd9=['keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','find','create','body','update','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','then','end','error','stack','send','index','map','MemberReport','rawAttributes','fieldName','type','key','model','name','query'];(function(_0x47e7cb,_0x4c1b8d){var _0x2a8874=function(_0x36498f){while(--_0x36498f){_0x47e7cb['push'](_0x47e7cb['shift']());}};_0x2a8874(++_0x4c1b8d);}(_0xedd9,0xfc));var _0x9edd=function(_0xfa90d9,_0xbfc095){_0xfa90d9=_0xfa90d9-0x0;var _0x5cbcc9=_0xedd9[_0xfa90d9];return _0x5cbcc9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9edd('0x0'));var zipdir=require(_0x9edd('0x1'));var jsonpatch=require(_0x9edd('0x2'));var rp=require(_0x9edd('0x3'));var moment=require(_0x9edd('0x4'));var BPromise=require(_0x9edd('0x5'));var Mustache=require(_0x9edd('0x6'));var util=require(_0x9edd('0x7'));var path=require('path');var sox=require(_0x9edd('0x8'));var csv=require(_0x9edd('0x9'));var ejs=require(_0x9edd('0xa'));var fs=require('fs');var fs_extra=require(_0x9edd('0xb'));var _=require('lodash');var squel=require(_0x9edd('0xc'));var crypto=require('crypto');var jsforce=require(_0x9edd('0xd'));var deskjs=require(_0x9edd('0xe'));var toCsv=require(_0x9edd('0x9'));var querystring=require(_0x9edd('0xf'));var Papa=require('papaparse');var Redis=require(_0x9edd('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9edd('0x11'));var as=require(_0x9edd('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9edd('0x13'))(_0x9edd('0x14'));var utils=require('../../config/utils');var config=require(_0x9edd('0x15'));var licenseUtil=require(_0x9edd('0x16'));var db=require(_0x9edd('0x17'))['db'];function respondWithStatusCode(_0xfd544a,_0x287ddd){_0x287ddd=_0x287ddd||0xcc;return function(_0x3a7b84){if(_0x3a7b84){return _0xfd544a[_0x9edd('0x18')](_0x287ddd);}return _0xfd544a[_0x9edd('0x19')](_0x287ddd)['end']();};}function respondWithResult(_0x176bfa,_0x44fc7c){_0x44fc7c=_0x44fc7c||0xc8;return function(_0x891832){if(_0x891832){return _0x176bfa[_0x9edd('0x19')](_0x44fc7c)[_0x9edd('0x1a')](_0x891832);}};}function respondWithFilteredResult(_0x338f3c,_0x1042aa){return function(_0x75a4ab){if(_0x75a4ab){var _0x4ea60f=typeof _0x1042aa[_0x9edd('0x1b')]===_0x9edd('0x1c')&&typeof _0x1042aa[_0x9edd('0x1d')]==='undefined';var _0x1b54c0=_0x75a4ab[_0x9edd('0x1e')];var _0x40ba32=_0x4ea60f?0x0:_0x1042aa['offset'];var _0x43dc70=_0x4ea60f?_0x75a4ab['count']:_0x1042aa[_0x9edd('0x1b')]+_0x1042aa[_0x9edd('0x1d')];var _0x4bdb88;if(_0x43dc70>=_0x1b54c0){_0x43dc70=_0x1b54c0;_0x4bdb88=0xc8;}else{_0x4bdb88=0xce;}_0x338f3c['status'](_0x4bdb88);return _0x338f3c[_0x9edd('0x1f')]('Content-Range',_0x40ba32+'-'+_0x43dc70+'/'+_0x1b54c0)[_0x9edd('0x1a')](_0x75a4ab);}return null;};}function patchUpdates(_0x54a03f){return function(_0x535f37){try{jsonpatch[_0x9edd('0x20')](_0x535f37,_0x54a03f,!![]);}catch(_0x1c46a8){return BPromise['reject'](_0x1c46a8);}return _0x535f37['save']();};}function saveUpdates(_0x341d67,_0x186186){return function(_0x477878){if(_0x477878){return _0x477878['update'](_0x341d67)[_0x9edd('0x21')](function(_0x1dca43){return _0x1dca43;});}return null;};}function removeEntity(_0x44a6c1,_0x2ca65f){return function(_0x339a0d){if(_0x339a0d){return _0x339a0d['destroy']()[_0x9edd('0x21')](function(){_0x44a6c1[_0x9edd('0x19')](0xcc)[_0x9edd('0x22')]();});}};}function handleEntityNotFound(_0x2f9f86,_0x310a4d){return function(_0x4d507f){if(!_0x4d507f){_0x2f9f86['sendStatus'](0x194);}return _0x4d507f;};}function handleError(_0x3276ee,_0xfeca7b){_0xfeca7b=_0xfeca7b||0x1f4;return function(_0x8d67aa){logger[_0x9edd('0x23')](_0x8d67aa[_0x9edd('0x24')]);if(_0x8d67aa['name']){delete _0x8d67aa['name'];}_0x3276ee[_0x9edd('0x19')](_0xfeca7b)[_0x9edd('0x25')](_0x8d67aa);};}exports[_0x9edd('0x26')]=function(_0x52746a,_0x238b22){var _0x28cfae={},_0x2ae8dd={},_0x41af53={'count':0x0,'rows':[]};var _0x5eccfb=_[_0x9edd('0x27')](db[_0x9edd('0x28')][_0x9edd('0x29')],function(_0x12c1bc){return{'name':_0x12c1bc[_0x9edd('0x2a')],'type':_0x12c1bc[_0x9edd('0x2b')][_0x9edd('0x2c')]};});_0x2ae8dd[_0x9edd('0x2d')]=_[_0x9edd('0x27')](_0x5eccfb,_0x9edd('0x2e'));_0x2ae8dd[_0x9edd('0x2f')]=_[_0x9edd('0x30')](_0x52746a[_0x9edd('0x2f')]);_0x2ae8dd[_0x9edd('0x31')]=_[_0x9edd('0x32')](_0x2ae8dd['model'],_0x2ae8dd[_0x9edd('0x2f')]);_0x28cfae[_0x9edd('0x33')]=_[_0x9edd('0x32')](_0x2ae8dd['model'],qs[_0x9edd('0x34')](_0x52746a[_0x9edd('0x2f')][_0x9edd('0x34')]));_0x28cfae[_0x9edd('0x33')]=_0x28cfae[_0x9edd('0x33')][_0x9edd('0x35')]?_0x28cfae[_0x9edd('0x33')]:_0x2ae8dd[_0x9edd('0x2d')];if(!_0x52746a[_0x9edd('0x2f')][_0x9edd('0x36')](_0x9edd('0x37'))){_0x28cfae[_0x9edd('0x1d')]=qs[_0x9edd('0x1d')](_0x52746a[_0x9edd('0x2f')]['limit']);_0x28cfae[_0x9edd('0x1b')]=qs['offset'](_0x52746a[_0x9edd('0x2f')][_0x9edd('0x1b')]);}_0x28cfae[_0x9edd('0x38')]=qs[_0x9edd('0x39')](_0x52746a[_0x9edd('0x2f')]['sort']);_0x28cfae[_0x9edd('0x3a')]=qs[_0x9edd('0x31')](_[_0x9edd('0x3b')](_0x52746a[_0x9edd('0x2f')],_0x2ae8dd[_0x9edd('0x31')]),_0x5eccfb);if(_0x52746a[_0x9edd('0x2f')][_0x9edd('0x3c')]){_0x28cfae[_0x9edd('0x3a')]=_[_0x9edd('0x3d')](_0x28cfae[_0x9edd('0x3a')],{'$or':_['map'](_0x5eccfb,function(_0x231604){if(_0x231604['type']!==_0x9edd('0x3e')){var _0x5658d6={};_0x5658d6[_0x231604[_0x9edd('0x2e')]]={'$like':'%'+_0x52746a[_0x9edd('0x2f')][_0x9edd('0x3c')]+'%'};return _0x5658d6;}})});}_0x28cfae=_['merge']({},_0x28cfae,_0x52746a[_0x9edd('0x3f')]);var _0xcbd0ef={'where':_0x28cfae[_0x9edd('0x3a')]};return db['MemberReport'][_0x9edd('0x1e')](_0xcbd0ef)['then'](function(_0x1fc4fb){_0x41af53[_0x9edd('0x1e')]=_0x1fc4fb;if(_0x52746a['query'][_0x9edd('0x40')]){_0x28cfae[_0x9edd('0x41')]=[{'all':!![]}];}return db[_0x9edd('0x28')][_0x9edd('0x42')](_0x28cfae);})['then'](function(_0x449f01){_0x41af53['rows']=_0x449f01;return _0x41af53;})[_0x9edd('0x21')](respondWithFilteredResult(_0x238b22,_0x28cfae))[_0x9edd('0x43')](handleError(_0x238b22,null));};exports['show']=function(_0x318757,_0x49a128){var _0x548299={'raw':!![],'where':{'id':_0x318757[_0x9edd('0x44')]['id']}},_0x369b69={};_0x369b69[_0x9edd('0x2d')]=_[_0x9edd('0x30')](db[_0x9edd('0x28')][_0x9edd('0x29')]);_0x369b69[_0x9edd('0x2f')]=_[_0x9edd('0x30')](_0x318757[_0x9edd('0x2f')]);_0x369b69[_0x9edd('0x31')]=_[_0x9edd('0x32')](_0x369b69[_0x9edd('0x2d')],_0x369b69[_0x9edd('0x2f')]);_0x548299[_0x9edd('0x33')]=_[_0x9edd('0x32')](_0x369b69['model'],qs[_0x9edd('0x34')](_0x318757[_0x9edd('0x2f')][_0x9edd('0x34')]));_0x548299[_0x9edd('0x33')]=_0x548299[_0x9edd('0x33')][_0x9edd('0x35')]?_0x548299[_0x9edd('0x33')]:_0x369b69['model'];if(_0x318757['query']['includeAll']){_0x548299[_0x9edd('0x41')]=[{'all':!![]}];}_0x548299=_['merge']({},_0x548299,_0x318757[_0x9edd('0x3f')]);return db[_0x9edd('0x28')][_0x9edd('0x45')](_0x548299)[_0x9edd('0x21')](handleEntityNotFound(_0x49a128,null))[_0x9edd('0x21')](respondWithResult(_0x49a128,null))['catch'](handleError(_0x49a128,null));};exports[_0x9edd('0x46')]=function(_0x35e63c,_0x40e33d){return db['MemberReport'][_0x9edd('0x46')](_0x35e63c[_0x9edd('0x47')],{})[_0x9edd('0x21')](respondWithResult(_0x40e33d,0xc9))[_0x9edd('0x43')](handleError(_0x40e33d,null));};exports[_0x9edd('0x48')]=function(_0x35bdec,_0x4d4f33){if(_0x35bdec[_0x9edd('0x47')]['id']){delete _0x35bdec[_0x9edd('0x47')]['id'];}return db['MemberReport'][_0x9edd('0x45')]({'where':{'id':_0x35bdec[_0x9edd('0x44')]['id']}})['then'](handleEntityNotFound(_0x4d4f33,null))[_0x9edd('0x21')](saveUpdates(_0x35bdec[_0x9edd('0x47')],null))[_0x9edd('0x21')](respondWithResult(_0x4d4f33,null))['catch'](handleError(_0x4d4f33,null));};exports[_0x9edd('0x49')]=function(_0x151157,_0x317a60){return db[_0x9edd('0x28')]['find']({'where':{'id':_0x151157[_0x9edd('0x44')]['id']}})[_0x9edd('0x21')](handleEntityNotFound(_0x317a60,null))[_0x9edd('0x21')](removeEntity(_0x317a60,null))['catch'](handleError(_0x317a60,null));};exports[_0x9edd('0x4a')]=function(_0x21f6ce,_0x57db43){return db[_0x9edd('0x28')]['describe']()[_0x9edd('0x21')](respondWithResult(_0x57db43,null))[_0x9edd('0x43')](handleError(_0x57db43,null));};
\ No newline at end of file
index eae09da..09e296e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bf3=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./memberReport.attributes','define','MemberReport','report_member','membername_interface','membername','interface','lodash'];(function(_0xef2b60,_0x357604){var _0x525559=function(_0x21a069){while(--_0x21a069){_0xef2b60['push'](_0xef2b60['shift']());}};_0x525559(++_0x357604);}(_0x1bf3,0x16f));var _0x31bf=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x1bf3[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x31bf('0x0'));var util=require(_0x31bf('0x1'));var logger=require('../../config/logger')(_0x31bf('0x2'));var moment=require(_0x31bf('0x3'));var BPromise=require(_0x31bf('0x4'));var rp=require(_0x31bf('0x5'));var fs=require('fs');var path=require(_0x31bf('0x6'));var rimraf=require(_0x31bf('0x7'));var config=require(_0x31bf('0x8'));var attributes=require(_0x31bf('0x9'));module['exports']=function(_0x557d5c,_0x24b931){return _0x557d5c[_0x31bf('0xa')](_0x31bf('0xb'),attributes,{'tableName':_0x31bf('0xc'),'paranoid':![],'indexes':[{'name':_0x31bf('0xd'),'fields':[_0x31bf('0xe'),_0x31bf('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xced7=['bluebird','request-promise','path','rimraf','./memberReport.attributes','exports','define','MemberReport','report_member','membername_interface','membername','interface','lodash','util','../../config/logger','api','moment'];(function(_0x286bfb,_0x46ac3c){var _0x52b683=function(_0x3e7fb1){while(--_0x3e7fb1){_0x286bfb['push'](_0x286bfb['shift']());}};_0x52b683(++_0x46ac3c);}(_0xced7,0xc7));var _0x7ced=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xced7[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7ced('0x0'));var util=require(_0x7ced('0x1'));var logger=require(_0x7ced('0x2'))(_0x7ced('0x3'));var moment=require(_0x7ced('0x4'));var BPromise=require(_0x7ced('0x5'));var rp=require(_0x7ced('0x6'));var fs=require('fs');var path=require(_0x7ced('0x7'));var rimraf=require(_0x7ced('0x8'));var config=require('../../config/environment');var attributes=require(_0x7ced('0x9'));module[_0x7ced('0xa')]=function(_0xc9acda,_0x835f4){return _0xc9acda[_0x7ced('0xb')](_0x7ced('0xc'),attributes,{'tableName':_0x7ced('0xd'),'paranoid':![],'indexes':[{'name':_0x7ced('0xe'),'fields':[_0x7ced('0xf'),_0x7ced('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
index f5e5eb2..60a4194 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f74=['map','model','attributes','stringify','CreateMemberReport','create','body','UpdateMemberReport','update','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','request','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetMemberReport','MemberReport','findAll','options','raw','limit','include'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x2f74,0x7b));var _0x42f7=function(_0x4607e1,_0x596f78){_0x4607e1=_0x4607e1-0x0;var _0x22f1b2=_0x2f74[_0x4607e1];return _0x22f1b2;};'use strict';var _=require(_0x42f7('0x0'));var util=require('util');var moment=require(_0x42f7('0x1'));var BPromise=require(_0x42f7('0x2'));var rs=require(_0x42f7('0x3'));var fs=require('fs');var Redis=require(_0x42f7('0x4'));var db=require(_0x42f7('0x5'))['db'];var utils=require(_0x42f7('0x6'));var logger=require(_0x42f7('0x7'))(_0x42f7('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x42f7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1cb6e0,_0x20ff46,_0x36b55e){return new BPromise(function(_0x2c64b2,_0x28fc83){return client[_0x42f7('0xa')](_0x1cb6e0,_0x36b55e)[_0x42f7('0xb')](function(_0x5772a8){logger[_0x42f7('0xc')](_0x42f7('0xd'),_0x20ff46,_0x42f7('0xe'));logger[_0x42f7('0xf')](_0x42f7('0x10'),_0x20ff46,_0x42f7('0xe'),JSON['stringify'](_0x5772a8));if(_0x5772a8[_0x42f7('0x11')]){if(_0x5772a8[_0x42f7('0x11')][_0x42f7('0x12')]===0x1f4){logger[_0x42f7('0x11')](_0x42f7('0xd'),_0x20ff46,_0x5772a8[_0x42f7('0x11')][_0x42f7('0x13')]);return _0x28fc83(_0x5772a8[_0x42f7('0x11')]['message']);}logger['error'](_0x42f7('0xd'),_0x20ff46,_0x5772a8[_0x42f7('0x11')][_0x42f7('0x13')]);return _0x2c64b2(_0x5772a8[_0x42f7('0x11')][_0x42f7('0x13')]);}else{logger['info'](_0x42f7('0xd'),_0x20ff46,'request\x20sent');_0x2c64b2(_0x5772a8[_0x42f7('0x14')][_0x42f7('0x13')]);}})[_0x42f7('0x15')](function(_0x19eff3){logger[_0x42f7('0x11')](_0x42f7('0xd'),_0x20ff46,_0x19eff3);_0x28fc83(_0x19eff3);});});}exports[_0x42f7('0x16')]=function(_0x47aa1d){var _0x3fc38d=this;return new Promise(function(_0x29f472,_0x43ef57){return db[_0x42f7('0x17')][_0x42f7('0x18')]({'raw':_0x47aa1d[_0x42f7('0x19')]?_0x47aa1d['options'][_0x42f7('0x1a')]===undefined?!![]:![]:!![],'where':_0x47aa1d['options']?_0x47aa1d[_0x42f7('0x19')]['where']||null:null,'attributes':_0x47aa1d[_0x42f7('0x19')]?_0x47aa1d['options']['attributes']||null:null,'limit':_0x47aa1d['options']?_0x47aa1d[_0x42f7('0x19')][_0x42f7('0x1b')]||null:null,'include':_0x47aa1d[_0x42f7('0x19')]?_0x47aa1d[_0x42f7('0x19')][_0x42f7('0x1c')]?_[_0x42f7('0x1d')](_0x47aa1d[_0x42f7('0x19')][_0x42f7('0x1c')],function(_0x1d45a0){return{'model':db[_0x1d45a0[_0x42f7('0x1e')]],'as':_0x1d45a0['as'],'attributes':_0x1d45a0[_0x42f7('0x1f')],'include':_0x1d45a0[_0x42f7('0x1c')]?_[_0x42f7('0x1d')](_0x1d45a0[_0x42f7('0x1c')],function(_0x553531){return{'model':db[_0x553531['model']],'as':_0x553531['as'],'attributes':_0x553531[_0x42f7('0x1f')],'include':_0x553531[_0x42f7('0x1c')]?_[_0x42f7('0x1d')](_0x553531[_0x42f7('0x1c')],function(_0x1e31de){return{'model':db[_0x1e31de[_0x42f7('0x1e')]],'as':_0x1e31de['as'],'attributes':_0x1e31de[_0x42f7('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x42f7('0xb')](function(_0xe53027){logger[_0x42f7('0xc')]('GetMemberReport',_0x47aa1d);logger['debug'](_0x42f7('0x16'),_0x47aa1d,JSON[_0x42f7('0x20')](_0xe53027));_0x29f472(_0xe53027);})[_0x42f7('0x15')](function(_0x4d7137){logger[_0x42f7('0x11')](_0x42f7('0x16'),_0x4d7137['message'],_0x47aa1d);_0x43ef57(_0x3fc38d['error'](0x1f4,_0x4d7137[_0x42f7('0x13')]));});});};exports[_0x42f7('0x21')]=function(_0x210054){var _0xf6664c=this;return new Promise(function(_0x1e245c,_0x3a07b8){return db[_0x42f7('0x17')][_0x42f7('0x22')](_0x210054[_0x42f7('0x23')],{'raw':_0x210054['options']?_0x210054[_0x42f7('0x19')][_0x42f7('0x1a')]===undefined?!![]:![]:!![]})[_0x42f7('0xb')](function(_0xd26ccf){logger[_0x42f7('0xc')]('CreateMemberReport',_0x210054);logger[_0x42f7('0xf')](_0x42f7('0x21'),_0x210054,JSON[_0x42f7('0x20')](_0xd26ccf));_0x1e245c(_0xd26ccf);})[_0x42f7('0x15')](function(_0x505310){logger[_0x42f7('0x11')]('CreateMemberReport',_0x505310[_0x42f7('0x13')],_0x210054);_0x3a07b8(_0xf6664c[_0x42f7('0x11')](0x1f4,_0x505310[_0x42f7('0x13')]));});});};exports[_0x42f7('0x24')]=function(_0x14cae3){var _0x22a45b=this;return new Promise(function(_0x372a20,_0x4e506f){return db['MemberReport'][_0x42f7('0x25')](_0x14cae3[_0x42f7('0x23')],{'raw':_0x14cae3['options']?_0x14cae3[_0x42f7('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x14cae3[_0x42f7('0x19')]?_0x14cae3[_0x42f7('0x19')]['where']||null:null,'attributes':_0x14cae3['options']?_0x14cae3['options'][_0x42f7('0x1f')]||null:null,'limit':_0x14cae3['options']?_0x14cae3[_0x42f7('0x19')][_0x42f7('0x1b')]||null:null})[_0x42f7('0xb')](function(_0x12f787){logger[_0x42f7('0xc')]('UpdateMemberReport',_0x14cae3);logger[_0x42f7('0xf')](_0x42f7('0x24'),_0x14cae3,JSON['stringify'](_0x12f787));_0x372a20(_0x12f787);})['catch'](function(_0x151c80){logger[_0x42f7('0x11')](_0x42f7('0x24'),_0x151c80[_0x42f7('0x13')],_0x14cae3);_0x4e506f(_0x22a45b[_0x42f7('0x11')](0x1f4,_0x151c80[_0x42f7('0x13')]));});});};
\ No newline at end of file
+var _0xfcf0=['model','then','MemberReport','create','CreateMemberReport','catch','UpdateMemberReport','update','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','MemberReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','GetMemberReport','findAll','options','raw','where','attributes','limit','include','map'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0xfcf0,0x138));var _0x0fcf=function(_0x193ddf,_0x6f30bb){_0x193ddf=_0x193ddf-0x0;var _0x5bc6df=_0xfcf0[_0x193ddf];return _0x5bc6df;};'use strict';var _=require(_0x0fcf('0x0'));var util=require(_0x0fcf('0x1'));var moment=require('moment');var BPromise=require(_0x0fcf('0x2'));var rs=require(_0x0fcf('0x3'));var fs=require('fs');var Redis=require(_0x0fcf('0x4'));var db=require(_0x0fcf('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0fcf('0x6'))(_0x0fcf('0x7'));var config=require(_0x0fcf('0x8'));var jayson=require(_0x0fcf('0x9'));var client=jayson[_0x0fcf('0xa')][_0x0fcf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x61bbb9,_0x2dfdf8,_0x50c575){return new BPromise(function(_0x1388d1,_0x6ced94){return client[_0x0fcf('0xc')](_0x61bbb9,_0x50c575)['then'](function(_0x69a840){logger[_0x0fcf('0xd')](_0x0fcf('0xe'),_0x2dfdf8,'request\x20sent');logger[_0x0fcf('0xf')]('MemberReport,\x20%s,\x20%s,\x20%s',_0x2dfdf8,_0x0fcf('0x10'),JSON[_0x0fcf('0x11')](_0x69a840));if(_0x69a840[_0x0fcf('0x12')]){if(_0x69a840['error']['code']===0x1f4){logger[_0x0fcf('0x12')](_0x0fcf('0xe'),_0x2dfdf8,_0x69a840['error'][_0x0fcf('0x13')]);return _0x6ced94(_0x69a840[_0x0fcf('0x12')][_0x0fcf('0x13')]);}logger[_0x0fcf('0x12')](_0x0fcf('0xe'),_0x2dfdf8,_0x69a840['error'][_0x0fcf('0x13')]);return _0x1388d1(_0x69a840[_0x0fcf('0x12')][_0x0fcf('0x13')]);}else{logger['info'](_0x0fcf('0xe'),_0x2dfdf8,_0x0fcf('0x10'));_0x1388d1(_0x69a840[_0x0fcf('0x14')][_0x0fcf('0x13')]);}})['catch'](function(_0x3e78d0){logger[_0x0fcf('0x12')](_0x0fcf('0xe'),_0x2dfdf8,_0x3e78d0);_0x6ced94(_0x3e78d0);});});}exports[_0x0fcf('0x15')]=function(_0x19cfbd){var _0x567320=this;return new Promise(function(_0x18ea32,_0x1a8f58){return db['MemberReport'][_0x0fcf('0x16')]({'raw':_0x19cfbd[_0x0fcf('0x17')]?_0x19cfbd['options'][_0x0fcf('0x18')]===undefined?!![]:![]:!![],'where':_0x19cfbd['options']?_0x19cfbd[_0x0fcf('0x17')][_0x0fcf('0x19')]||null:null,'attributes':_0x19cfbd['options']?_0x19cfbd[_0x0fcf('0x17')][_0x0fcf('0x1a')]||null:null,'limit':_0x19cfbd[_0x0fcf('0x17')]?_0x19cfbd['options'][_0x0fcf('0x1b')]||null:null,'include':_0x19cfbd[_0x0fcf('0x17')]?_0x19cfbd[_0x0fcf('0x17')][_0x0fcf('0x1c')]?_[_0x0fcf('0x1d')](_0x19cfbd[_0x0fcf('0x17')]['include'],function(_0x2eef74){return{'model':db[_0x2eef74[_0x0fcf('0x1e')]],'as':_0x2eef74['as'],'attributes':_0x2eef74[_0x0fcf('0x1a')],'include':_0x2eef74[_0x0fcf('0x1c')]?_[_0x0fcf('0x1d')](_0x2eef74[_0x0fcf('0x1c')],function(_0x2ce990){return{'model':db[_0x2ce990[_0x0fcf('0x1e')]],'as':_0x2ce990['as'],'attributes':_0x2ce990[_0x0fcf('0x1a')],'include':_0x2ce990['include']?_[_0x0fcf('0x1d')](_0x2ce990[_0x0fcf('0x1c')],function(_0x41b7a2){return{'model':db[_0x41b7a2[_0x0fcf('0x1e')]],'as':_0x41b7a2['as'],'attributes':_0x41b7a2[_0x0fcf('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x0fcf('0x1f')](function(_0x2730b0){logger['info'](_0x0fcf('0x15'),_0x19cfbd);logger[_0x0fcf('0xf')](_0x0fcf('0x15'),_0x19cfbd,JSON[_0x0fcf('0x11')](_0x2730b0));_0x18ea32(_0x2730b0);})['catch'](function(_0x5d9bcd){logger['error'](_0x0fcf('0x15'),_0x5d9bcd['message'],_0x19cfbd);_0x1a8f58(_0x567320[_0x0fcf('0x12')](0x1f4,_0x5d9bcd[_0x0fcf('0x13')]));});});};exports['CreateMemberReport']=function(_0xdfd3ec){var _0x117041=this;return new Promise(function(_0xa52f52,_0x161496){return db[_0x0fcf('0x20')][_0x0fcf('0x21')](_0xdfd3ec['body'],{'raw':_0xdfd3ec[_0x0fcf('0x17')]?_0xdfd3ec[_0x0fcf('0x17')][_0x0fcf('0x18')]===undefined?!![]:![]:!![]})[_0x0fcf('0x1f')](function(_0x19488a){logger[_0x0fcf('0xd')]('CreateMemberReport',_0xdfd3ec);logger[_0x0fcf('0xf')](_0x0fcf('0x22'),_0xdfd3ec,JSON[_0x0fcf('0x11')](_0x19488a));_0xa52f52(_0x19488a);})[_0x0fcf('0x23')](function(_0x1656c8){logger[_0x0fcf('0x12')](_0x0fcf('0x22'),_0x1656c8[_0x0fcf('0x13')],_0xdfd3ec);_0x161496(_0x117041[_0x0fcf('0x12')](0x1f4,_0x1656c8[_0x0fcf('0x13')]));});});};exports[_0x0fcf('0x24')]=function(_0x38826c){var _0x2aeef8=this;return new Promise(function(_0x17346e,_0x59a7aa){return db['MemberReport'][_0x0fcf('0x25')](_0x38826c['body'],{'raw':_0x38826c['options']?_0x38826c[_0x0fcf('0x17')][_0x0fcf('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x38826c[_0x0fcf('0x17')]?_0x38826c['options']['where']||null:null,'attributes':_0x38826c[_0x0fcf('0x17')]?_0x38826c[_0x0fcf('0x17')][_0x0fcf('0x1a')]||null:null,'limit':_0x38826c['options']?_0x38826c[_0x0fcf('0x17')][_0x0fcf('0x1b')]||null:null})[_0x0fcf('0x1f')](function(_0x4e139d){logger['info']('UpdateMemberReport',_0x38826c);logger[_0x0fcf('0xf')](_0x0fcf('0x24'),_0x38826c,JSON[_0x0fcf('0x11')](_0x4e139d));_0x17346e(_0x4e139d);})[_0x0fcf('0x23')](function(_0x370699){logger['error'](_0x0fcf('0x24'),_0x370699[_0x0fcf('0x13')],_0x38826c);_0x59a7aa(_0x2aeef8[_0x0fcf('0x12')](0x1f4,_0x370699['message']));});});};
\ No newline at end of file
index 03644c9..67e4f7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc49f=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./migration.controller','get','index','exports','multer','connect-timeout'];(function(_0x47fd36,_0x41535d){var _0x21a0fc=function(_0x44c07c){while(--_0x44c07c){_0x47fd36['push'](_0x47fd36['shift']());}};_0x21a0fc(++_0x41535d);}(_0xc49f,0x1c0));var _0xfc49=function(_0x1c596b,_0x2b6c08){_0x1c596b=_0x1c596b-0x0;var _0x1aceb5=_0xc49f[_0x1c596b];return _0x1aceb5;};'use strict';var multer=require(_0xfc49('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xfc49('0x1'));var express=require('express');var router=express[_0xfc49('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xfc49('0x3'));var interaction=require(_0xfc49('0x4'));var config=require(_0xfc49('0x5'));var controller=require(_0xfc49('0x6'));router[_0xfc49('0x7')]('/',controller[_0xfc49('0x8')]);module[_0xfc49('0x9')]=router;
\ No newline at end of file
+var _0x3be6=['get','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./migration.controller'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0x3be6,0x6d));var _0x63be=function(_0x4ed4d2,_0x47acf7){_0x4ed4d2=_0x4ed4d2-0x0;var _0x15ae2e=_0x3be6[_0x4ed4d2];return _0x15ae2e;};'use strict';var multer=require(_0x63be('0x0'));var util=require(_0x63be('0x1'));var path=require(_0x63be('0x2'));var timeout=require(_0x63be('0x3'));var express=require(_0x63be('0x4'));var router=express[_0x63be('0x5')]();var fs_extra=require(_0x63be('0x6'));var auth=require(_0x63be('0x7'));var interaction=require(_0x63be('0x8'));var config=require(_0x63be('0x9'));var controller=require(_0x63be('0xa'));router[_0x63be('0xb')]('/',controller['index']);module['exports']=router;
\ No newline at end of file
index 385c1fd..d4c9f1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x351c=['version','sequelize','STRING'];(function(_0x901f29,_0x180fa9){var _0x4406b9=function(_0x2468d5){while(--_0x2468d5){_0x901f29['push'](_0x901f29['shift']());}};_0x4406b9(++_0x180fa9);}(_0x351c,0xe5));var _0xc351=function(_0x23470a,_0x215ead){_0x23470a=_0x23470a-0x0;var _0x1c9ed1=_0x351c[_0x23470a];return _0x1c9ed1;};'use strict';var Sequelize=require(_0xc351('0x0'));module['exports']={'version':{'type':Sequelize[_0xc351('0x1')],'unique':_0xc351('0x2')}};
\ No newline at end of file
+var _0x9bb7=['STRING','version','sequelize','exports'];(function(_0x16c2ae,_0x3fad3f){var _0x4d2208=function(_0x2237f7){while(--_0x2237f7){_0x16c2ae['push'](_0x16c2ae['shift']());}};_0x4d2208(++_0x3fad3f);}(_0x9bb7,0x1ae));var _0x79bb=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0x9bb7[_0x376b45];return _0x2341b3;};'use strict';var Sequelize=require(_0x79bb('0x0'));module[_0x79bb('0x1')]={'version':{'type':Sequelize[_0x79bb('0x2')],'unique':_0x79bb('0x3')}};
\ No newline at end of file
index 3256ca3..3e9bc9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf854=['set','reject','save','update','then','destroy','stack','name','send','index','map','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','filter','where','merge','VIRTUAL','options','Migration','include','findAll','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit'];(function(_0x4566db,_0x5da9a1){var _0x3167e6=function(_0x154ed8){while(--_0x154ed8){_0x4566db['push'](_0x4566db['shift']());}};_0x3167e6(++_0x5da9a1);}(_0xf854,0xa0));var _0x4f85=function(_0x300719,_0x530cd8){_0x300719=_0x300719-0x0;var _0x248402=_0xf854[_0x300719];return _0x248402;};'use strict';var emlformat=require(_0x4f85('0x0'));var rimraf=require(_0x4f85('0x1'));var zipdir=require(_0x4f85('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4f85('0x3'));var BPromise=require(_0x4f85('0x4'));var Mustache=require(_0x4f85('0x5'));var util=require(_0x4f85('0x6'));var path=require(_0x4f85('0x7'));var sox=require(_0x4f85('0x8'));var csv=require(_0x4f85('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4f85('0xa'));var _=require(_0x4f85('0xb'));var squel=require(_0x4f85('0xc'));var crypto=require(_0x4f85('0xd'));var jsforce=require(_0x4f85('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x4f85('0x9'));var querystring=require('querystring');var Papa=require(_0x4f85('0xf'));var Redis=require(_0x4f85('0x10'));var authService=require(_0x4f85('0x11'));var qs=require(_0x4f85('0x12'));var as=require(_0x4f85('0x13'));var hardwareService=require(_0x4f85('0x14'));var logger=require(_0x4f85('0x15'))(_0x4f85('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x4f85('0x17'))['db'];function respondWithStatusCode(_0x291438,_0x168bb4){_0x168bb4=_0x168bb4||0xcc;return function(_0x354375){if(_0x354375){return _0x291438[_0x4f85('0x18')](_0x168bb4);}return _0x291438[_0x4f85('0x19')](_0x168bb4)[_0x4f85('0x1a')]();};}function respondWithResult(_0x262424,_0x1a3551){_0x1a3551=_0x1a3551||0xc8;return function(_0x97c524){if(_0x97c524){return _0x262424[_0x4f85('0x19')](_0x1a3551)[_0x4f85('0x1b')](_0x97c524);}};}function respondWithFilteredResult(_0x34b2d0,_0x364da7){return function(_0x5a4458){if(_0x5a4458){var _0x23acea=typeof _0x364da7[_0x4f85('0x1c')]===_0x4f85('0x1d')&&typeof _0x364da7['limit']===_0x4f85('0x1d');var _0x66a31b=_0x5a4458[_0x4f85('0x1e')];var _0x53121f=_0x23acea?0x0:_0x364da7[_0x4f85('0x1c')];var _0x1f9e7c=_0x23acea?_0x5a4458['count']:_0x364da7[_0x4f85('0x1c')]+_0x364da7[_0x4f85('0x1f')];var _0x5dcfe1;if(_0x1f9e7c>=_0x66a31b){_0x1f9e7c=_0x66a31b;_0x5dcfe1=0xc8;}else{_0x5dcfe1=0xce;}_0x34b2d0[_0x4f85('0x19')](_0x5dcfe1);return _0x34b2d0[_0x4f85('0x20')]('Content-Range',_0x53121f+'-'+_0x1f9e7c+'/'+_0x66a31b)[_0x4f85('0x1b')](_0x5a4458);}return null;};}function patchUpdates(_0x2db05c){return function(_0x8cf4c4){try{jsonpatch['apply'](_0x8cf4c4,_0x2db05c,!![]);}catch(_0x4c37f2){return BPromise[_0x4f85('0x21')](_0x4c37f2);}return _0x8cf4c4[_0x4f85('0x22')]();};}function saveUpdates(_0x1d7def,_0x4850a6){return function(_0x545349){if(_0x545349){return _0x545349[_0x4f85('0x23')](_0x1d7def)[_0x4f85('0x24')](function(_0x2e1e0f){return _0x2e1e0f;});}return null;};}function removeEntity(_0x5d0d09,_0x474f0a){return function(_0x3eca1d){if(_0x3eca1d){return _0x3eca1d[_0x4f85('0x25')]()[_0x4f85('0x24')](function(){_0x5d0d09[_0x4f85('0x19')](0xcc)[_0x4f85('0x1a')]();});}};}function handleEntityNotFound(_0x41fb5b,_0x57cb94){return function(_0x3a7c30){if(!_0x3a7c30){_0x41fb5b[_0x4f85('0x18')](0x194);}return _0x3a7c30;};}function handleError(_0x30f7dc,_0x4b4a9e){_0x4b4a9e=_0x4b4a9e||0x1f4;return function(_0x450a01){logger['error'](_0x450a01[_0x4f85('0x26')]);if(_0x450a01[_0x4f85('0x27')]){delete _0x450a01[_0x4f85('0x27')];}_0x30f7dc[_0x4f85('0x19')](_0x4b4a9e)[_0x4f85('0x28')](_0x450a01);};}exports[_0x4f85('0x29')]=function(_0x1ca62d,_0x4dd56b){var _0x97a918={},_0x6c1bf1={},_0x5ed90e={'count':0x0,'rows':[]};var _0x18b8aa=_[_0x4f85('0x2a')](db['Migration']['rawAttributes'],function(_0x262f27){return{'name':_0x262f27[_0x4f85('0x2b')],'type':_0x262f27['type'][_0x4f85('0x2c')]};});_0x6c1bf1[_0x4f85('0x2d')]=_[_0x4f85('0x2a')](_0x18b8aa,_0x4f85('0x27'));_0x6c1bf1['query']=_[_0x4f85('0x2e')](_0x1ca62d[_0x4f85('0x2f')]);_0x6c1bf1[_0x4f85('0x30')]=_[_0x4f85('0x31')](_0x6c1bf1[_0x4f85('0x2d')],_0x6c1bf1['query']);_0x97a918[_0x4f85('0x32')]=_[_0x4f85('0x31')](_0x6c1bf1['model'],qs[_0x4f85('0x33')](_0x1ca62d[_0x4f85('0x2f')]['fields']));_0x97a918[_0x4f85('0x32')]=_0x97a918[_0x4f85('0x32')][_0x4f85('0x34')]?_0x97a918[_0x4f85('0x32')]:_0x6c1bf1[_0x4f85('0x2d')];if(!_0x1ca62d[_0x4f85('0x2f')]['hasOwnProperty'](_0x4f85('0x35'))){_0x97a918[_0x4f85('0x1f')]=qs['limit'](_0x1ca62d[_0x4f85('0x2f')]['limit']);_0x97a918[_0x4f85('0x1c')]=qs[_0x4f85('0x1c')](_0x1ca62d[_0x4f85('0x2f')]['offset']);}_0x97a918[_0x4f85('0x36')]=qs[_0x4f85('0x37')](_0x1ca62d[_0x4f85('0x2f')][_0x4f85('0x37')]);_0x97a918['where']=qs[_0x4f85('0x30')](_['pick'](_0x1ca62d['query'],_0x6c1bf1['filters']),_0x18b8aa);if(_0x1ca62d[_0x4f85('0x2f')][_0x4f85('0x38')]){_0x97a918[_0x4f85('0x39')]=_[_0x4f85('0x3a')](_0x97a918[_0x4f85('0x39')],{'$or':_[_0x4f85('0x2a')](_0x18b8aa,function(_0x1cc9c6){if(_0x1cc9c6['type']!==_0x4f85('0x3b')){var _0x54ca35={};_0x54ca35[_0x1cc9c6[_0x4f85('0x27')]]={'$like':'%'+_0x1ca62d[_0x4f85('0x2f')][_0x4f85('0x38')]+'%'};return _0x54ca35;}})});}_0x97a918=_['merge']({},_0x97a918,_0x1ca62d[_0x4f85('0x3c')]);var _0x7843f9={'where':_0x97a918[_0x4f85('0x39')]};return db[_0x4f85('0x3d')][_0x4f85('0x1e')](_0x7843f9)[_0x4f85('0x24')](function(_0x5d28a6){_0x5ed90e[_0x4f85('0x1e')]=_0x5d28a6;if(_0x1ca62d[_0x4f85('0x2f')]['includeAll']){_0x97a918[_0x4f85('0x3e')]=[{'all':!![]}];}return db[_0x4f85('0x3d')][_0x4f85('0x3f')](_0x97a918);})[_0x4f85('0x24')](function(_0x34d785){_0x5ed90e['rows']=_0x34d785;return _0x5ed90e;})[_0x4f85('0x24')](respondWithFilteredResult(_0x4dd56b,_0x97a918))['catch'](handleError(_0x4dd56b,null));};
\ No newline at end of file
+var _0x3ef0=['to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','destroy','then','stack','name','send','index','Migration','rawAttributes','fieldName','type','key','map','query','filters','model','intersection','fields','attributes','hasOwnProperty','nolimit','order','pick','filter','where','VIRTUAL','merge','includeAll','include','findAll','catch','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox'];(function(_0x22365a,_0x5a09ec){var _0x315e8e=function(_0x122407){while(--_0x122407){_0x22365a['push'](_0x22365a['shift']());}};_0x315e8e(++_0x5a09ec);}(_0x3ef0,0x1da));var _0x03ef=function(_0x189765,_0x286e3b){_0x189765=_0x189765-0x0;var _0x4bb40f=_0x3ef0[_0x189765];return _0x4bb40f;};'use strict';var emlformat=require(_0x03ef('0x0'));var rimraf=require(_0x03ef('0x1'));var zipdir=require(_0x03ef('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x03ef('0x3'));var moment=require(_0x03ef('0x4'));var BPromise=require(_0x03ef('0x5'));var Mustache=require(_0x03ef('0x6'));var util=require('util');var path=require(_0x03ef('0x7'));var sox=require(_0x03ef('0x8'));var csv=require(_0x03ef('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x03ef('0xa'));var _=require(_0x03ef('0xb'));var squel=require(_0x03ef('0xc'));var crypto=require(_0x03ef('0xd'));var jsforce=require(_0x03ef('0xe'));var deskjs=require(_0x03ef('0xf'));var toCsv=require('to-csv');var querystring=require(_0x03ef('0x10'));var Papa=require(_0x03ef('0x11'));var Redis=require('ioredis');var authService=require(_0x03ef('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x03ef('0x13'));var hardwareService=require(_0x03ef('0x14'));var logger=require(_0x03ef('0x15'))(_0x03ef('0x16'));var utils=require(_0x03ef('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x03ef('0x18'));var db=require(_0x03ef('0x19'))['db'];function respondWithStatusCode(_0x511659,_0xf8b1bf){_0xf8b1bf=_0xf8b1bf||0xcc;return function(_0x227976){if(_0x227976){return _0x511659[_0x03ef('0x1a')](_0xf8b1bf);}return _0x511659[_0x03ef('0x1b')](_0xf8b1bf)[_0x03ef('0x1c')]();};}function respondWithResult(_0x50b0d6,_0x49eb9b){_0x49eb9b=_0x49eb9b||0xc8;return function(_0x273b55){if(_0x273b55){return _0x50b0d6[_0x03ef('0x1b')](_0x49eb9b)[_0x03ef('0x1d')](_0x273b55);}};}function respondWithFilteredResult(_0x468fa5,_0x414bb1){return function(_0x5f1855){if(_0x5f1855){var _0x114f4b=typeof _0x414bb1[_0x03ef('0x1e')]===_0x03ef('0x1f')&&typeof _0x414bb1['limit']===_0x03ef('0x1f');var _0x540ce1=_0x5f1855[_0x03ef('0x20')];var _0x16f30c=_0x114f4b?0x0:_0x414bb1['offset'];var _0x45197a=_0x114f4b?_0x5f1855[_0x03ef('0x20')]:_0x414bb1['offset']+_0x414bb1[_0x03ef('0x21')];var _0x50ba57;if(_0x45197a>=_0x540ce1){_0x45197a=_0x540ce1;_0x50ba57=0xc8;}else{_0x50ba57=0xce;}_0x468fa5[_0x03ef('0x1b')](_0x50ba57);return _0x468fa5[_0x03ef('0x22')](_0x03ef('0x23'),_0x16f30c+'-'+_0x45197a+'/'+_0x540ce1)[_0x03ef('0x1d')](_0x5f1855);}return null;};}function patchUpdates(_0x9b6a16){return function(_0x1bcd92){try{jsonpatch[_0x03ef('0x24')](_0x1bcd92,_0x9b6a16,!![]);}catch(_0x13ed6a){return BPromise[_0x03ef('0x25')](_0x13ed6a);}return _0x1bcd92[_0x03ef('0x26')]();};}function saveUpdates(_0x3c8a9b,_0x544a26){return function(_0x3ff887){if(_0x3ff887){return _0x3ff887['update'](_0x3c8a9b)['then'](function(_0x244be8){return _0x244be8;});}return null;};}function removeEntity(_0x41269c,_0x3c3784){return function(_0x3ba3a7){if(_0x3ba3a7){return _0x3ba3a7[_0x03ef('0x27')]()[_0x03ef('0x28')](function(){_0x41269c[_0x03ef('0x1b')](0xcc)[_0x03ef('0x1c')]();});}};}function handleEntityNotFound(_0x450047,_0xf624cf){return function(_0x3115c7){if(!_0x3115c7){_0x450047[_0x03ef('0x1a')](0x194);}return _0x3115c7;};}function handleError(_0x436d69,_0x140c22){_0x140c22=_0x140c22||0x1f4;return function(_0xf84c3a){logger['error'](_0xf84c3a[_0x03ef('0x29')]);if(_0xf84c3a[_0x03ef('0x2a')]){delete _0xf84c3a[_0x03ef('0x2a')];}_0x436d69[_0x03ef('0x1b')](_0x140c22)[_0x03ef('0x2b')](_0xf84c3a);};}exports[_0x03ef('0x2c')]=function(_0x1c3c08,_0x106bd9){var _0x14fd0c={},_0x1df067={},_0x448ef8={'count':0x0,'rows':[]};var _0x4f12eb=_['map'](db[_0x03ef('0x2d')][_0x03ef('0x2e')],function(_0x44bd40){return{'name':_0x44bd40[_0x03ef('0x2f')],'type':_0x44bd40[_0x03ef('0x30')][_0x03ef('0x31')]};});_0x1df067['model']=_[_0x03ef('0x32')](_0x4f12eb,_0x03ef('0x2a'));_0x1df067[_0x03ef('0x33')]=_['keys'](_0x1c3c08[_0x03ef('0x33')]);_0x1df067[_0x03ef('0x34')]=_['intersection'](_0x1df067[_0x03ef('0x35')],_0x1df067[_0x03ef('0x33')]);_0x14fd0c['attributes']=_[_0x03ef('0x36')](_0x1df067[_0x03ef('0x35')],qs[_0x03ef('0x37')](_0x1c3c08[_0x03ef('0x33')][_0x03ef('0x37')]));_0x14fd0c['attributes']=_0x14fd0c[_0x03ef('0x38')]['length']?_0x14fd0c['attributes']:_0x1df067[_0x03ef('0x35')];if(!_0x1c3c08[_0x03ef('0x33')][_0x03ef('0x39')](_0x03ef('0x3a'))){_0x14fd0c['limit']=qs['limit'](_0x1c3c08[_0x03ef('0x33')][_0x03ef('0x21')]);_0x14fd0c['offset']=qs[_0x03ef('0x1e')](_0x1c3c08[_0x03ef('0x33')][_0x03ef('0x1e')]);}_0x14fd0c[_0x03ef('0x3b')]=qs['sort'](_0x1c3c08[_0x03ef('0x33')]['sort']);_0x14fd0c['where']=qs[_0x03ef('0x34')](_[_0x03ef('0x3c')](_0x1c3c08[_0x03ef('0x33')],_0x1df067['filters']),_0x4f12eb);if(_0x1c3c08[_0x03ef('0x33')][_0x03ef('0x3d')]){_0x14fd0c[_0x03ef('0x3e')]=_['merge'](_0x14fd0c['where'],{'$or':_[_0x03ef('0x32')](_0x4f12eb,function(_0x3efb00){if(_0x3efb00['type']!==_0x03ef('0x3f')){var _0xd798a7={};_0xd798a7[_0x3efb00[_0x03ef('0x2a')]]={'$like':'%'+_0x1c3c08['query']['filter']+'%'};return _0xd798a7;}})});}_0x14fd0c=_[_0x03ef('0x40')]({},_0x14fd0c,_0x1c3c08['options']);var _0x37e027={'where':_0x14fd0c[_0x03ef('0x3e')]};return db[_0x03ef('0x2d')][_0x03ef('0x20')](_0x37e027)['then'](function(_0x47c977){_0x448ef8['count']=_0x47c977;if(_0x1c3c08[_0x03ef('0x33')][_0x03ef('0x41')]){_0x14fd0c[_0x03ef('0x42')]=[{'all':!![]}];}return db['Migration'][_0x03ef('0x43')](_0x14fd0c);})[_0x03ef('0x28')](function(_0x10f1f9){_0x448ef8['rows']=_0x10f1f9;return _0x448ef8;})[_0x03ef('0x28')](respondWithFilteredResult(_0x106bd9,_0x14fd0c))[_0x03ef('0x44')](handleError(_0x106bd9,null));};
\ No newline at end of file
index a6debb3..1d3d46f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fda=['Migration','migrations','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./migration.attributes','define'];(function(_0x52f73a,_0x4418dd){var _0x4b5d40=function(_0x3aea52){while(--_0x3aea52){_0x52f73a['push'](_0x52f73a['shift']());}};_0x4b5d40(++_0x4418dd);}(_0x7fda,0xa7));var _0xa7fd=function(_0x5cc8cb,_0x3dbe39){_0x5cc8cb=_0x5cc8cb-0x0;var _0x2d7a7d=_0x7fda[_0x5cc8cb];return _0x2d7a7d;};'use strict';var _=require('lodash');var util=require(_0xa7fd('0x0'));var logger=require(_0xa7fd('0x1'))(_0xa7fd('0x2'));var moment=require(_0xa7fd('0x3'));var BPromise=require('bluebird');var rp=require(_0xa7fd('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa7fd('0x5'));var config=require(_0xa7fd('0x6'));var attributes=require(_0xa7fd('0x7'));module['exports']=function(_0x4e9292,_0x2ce515){return _0x4e9292[_0xa7fd('0x8')](_0xa7fd('0x9'),attributes,{'tableName':_0xa7fd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x218d=['lodash','util','moment','request-promise','path','rimraf','../../config/environment','./migration.attributes','exports','define','Migration','migrations'];(function(_0x1385dc,_0x2c7fd7){var _0x2f6469=function(_0x47ed8a){while(--_0x47ed8a){_0x1385dc['push'](_0x1385dc['shift']());}};_0x2f6469(++_0x2c7fd7);}(_0x218d,0x108));var _0xd218=function(_0x2a57b7,_0x3c0a55){_0x2a57b7=_0x2a57b7-0x0;var _0x259174=_0x218d[_0x2a57b7];return _0x259174;};'use strict';var _=require(_0xd218('0x0'));var util=require(_0xd218('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xd218('0x2'));var BPromise=require('bluebird');var rp=require(_0xd218('0x3'));var fs=require('fs');var path=require(_0xd218('0x4'));var rimraf=require(_0xd218('0x5'));var config=require(_0xd218('0x6'));var attributes=require(_0xd218('0x7'));module[_0xd218('0x8')]=function(_0x7d4df8,_0x4fef7c){return _0x7d4df8[_0xd218('0x9')](_0xd218('0xa'),attributes,{'tableName':_0xd218('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1a6f7b5..4a705e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x049e=['then','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','error','code','Migration,\x20%s,\x20%s','message','info','result','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request'];(function(_0x1e9e56,_0x34a74a){var _0x5d5e2e=function(_0x4bfcc2){while(--_0x4bfcc2){_0x1e9e56['push'](_0x1e9e56['shift']());}};_0x5d5e2e(++_0x34a74a);}(_0x049e,0x16a));var _0xe049=function(_0x58eec7,_0x2353db){_0x58eec7=_0x58eec7-0x0;var _0x25c5d3=_0x049e[_0x58eec7];return _0x25c5d3;};'use strict';var _=require(_0xe049('0x0'));var util=require(_0xe049('0x1'));var moment=require('moment');var BPromise=require(_0xe049('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe049('0x3'));var db=require(_0xe049('0x4'))['db'];var utils=require(_0xe049('0x5'));var logger=require(_0xe049('0x6'))(_0xe049('0x7'));var config=require('../../config/environment');var jayson=require(_0xe049('0x8'));var client=jayson[_0xe049('0x9')][_0xe049('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x221a5f,_0x1d4fc6,_0x17945b){return new BPromise(function(_0x22abb2,_0x515823){return client[_0xe049('0xb')](_0x221a5f,_0x17945b)[_0xe049('0xc')](function(_0x6d04ed){logger['info']('Migration,\x20%s,\x20%s',_0x1d4fc6,_0xe049('0xd'));logger[_0xe049('0xe')](_0xe049('0xf'),_0x1d4fc6,'request\x20sent',JSON['stringify'](_0x6d04ed));if(_0x6d04ed['error']){if(_0x6d04ed[_0xe049('0x10')][_0xe049('0x11')]===0x1f4){logger[_0xe049('0x10')](_0xe049('0x12'),_0x1d4fc6,_0x6d04ed[_0xe049('0x10')][_0xe049('0x13')]);return _0x515823(_0x6d04ed[_0xe049('0x10')][_0xe049('0x13')]);}logger['error'](_0xe049('0x12'),_0x1d4fc6,_0x6d04ed[_0xe049('0x10')][_0xe049('0x13')]);return _0x22abb2(_0x6d04ed[_0xe049('0x10')]['message']);}else{logger[_0xe049('0x14')](_0xe049('0x12'),_0x1d4fc6,'request\x20sent');_0x22abb2(_0x6d04ed[_0xe049('0x15')][_0xe049('0x13')]);}})['catch'](function(_0x8b9bfe){logger[_0xe049('0x10')]('Migration,\x20%s,\x20%s',_0x1d4fc6,_0x8b9bfe);_0x515823(_0x8b9bfe);});});}
\ No newline at end of file
+var _0x8b29=['then','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','lodash','moment','bluebird','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request'];(function(_0x391696,_0x2ad389){var _0x192415=function(_0x4133a6){while(--_0x4133a6){_0x391696['push'](_0x391696['shift']());}};_0x192415(++_0x2ad389);}(_0x8b29,0xbe));var _0x98b2=function(_0x1a9755,_0x426160){_0x1a9755=_0x1a9755-0x0;var _0x1054fd=_0x8b29[_0x1a9755];return _0x1054fd;};'use strict';var _=require(_0x98b2('0x0'));var util=require('util');var moment=require(_0x98b2('0x1'));var BPromise=require(_0x98b2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x98b2('0x3'))['db'];var utils=require(_0x98b2('0x4'));var logger=require('../../config/logger')(_0x98b2('0x5'));var config=require('../../config/environment');var jayson=require(_0x98b2('0x6'));var client=jayson[_0x98b2('0x7')][_0x98b2('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3e7ef5,_0x221cee,_0x2cd0cb){return new BPromise(function(_0x417ca6,_0x388827){return client[_0x98b2('0x9')](_0x3e7ef5,_0x2cd0cb)[_0x98b2('0xa')](function(_0x501b51){logger['info'](_0x98b2('0xb'),_0x221cee,_0x98b2('0xc'));logger[_0x98b2('0xd')](_0x98b2('0xe'),_0x221cee,_0x98b2('0xc'),JSON[_0x98b2('0xf')](_0x501b51));if(_0x501b51['error']){if(_0x501b51[_0x98b2('0x10')][_0x98b2('0x11')]===0x1f4){logger['error'](_0x98b2('0xb'),_0x221cee,_0x501b51[_0x98b2('0x10')][_0x98b2('0x12')]);return _0x388827(_0x501b51['error']['message']);}logger[_0x98b2('0x10')]('Migration,\x20%s,\x20%s',_0x221cee,_0x501b51[_0x98b2('0x10')]['message']);return _0x417ca6(_0x501b51['error']['message']);}else{logger[_0x98b2('0x13')](_0x98b2('0xb'),_0x221cee,_0x98b2('0xc'));_0x417ca6(_0x501b51['result']['message']);}})['catch'](function(_0x389d22){logger[_0x98b2('0x10')](_0x98b2('0xb'),_0x221cee,_0x389d22);_0x388827(_0x389d22);});});}
\ No newline at end of file
index e2be2b2..2459c1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7ac=['./network.controller','get','isAuthenticated','/:id','show','create','update','delete','exports','multer','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x2e0378,_0x28c31e){var _0x1822c2=function(_0x240c79){while(--_0x240c79){_0x2e0378['push'](_0x2e0378['shift']());}};_0x1822c2(++_0x28c31e);}(_0xd7ac,0x167));var _0xcd7a=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0xd7ac[_0x4e676e];return _0x336a3c;};'use strict';var multer=require(_0xcd7a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xcd7a('0x1'));var express=require(_0xcd7a('0x2'));var router=express['Router']();var fs_extra=require(_0xcd7a('0x3'));var auth=require(_0xcd7a('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xcd7a('0x5'));router[_0xcd7a('0x6')]('/',auth[_0xcd7a('0x7')](),controller['index']);router[_0xcd7a('0x6')](_0xcd7a('0x8'),auth[_0xcd7a('0x7')](),controller[_0xcd7a('0x9')]);router['post']('/',auth[_0xcd7a('0x7')](),controller[_0xcd7a('0xa')]);router['put'](_0xcd7a('0x8'),auth[_0xcd7a('0x7')](),controller[_0xcd7a('0xb')]);router[_0xcd7a('0xc')](_0xcd7a('0x8'),auth[_0xcd7a('0x7')](),controller['destroy']);module[_0xcd7a('0xd')]=router;
\ No newline at end of file
+var _0xa2c8=['update','delete','destroy','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','get','isAuthenticated','/:id','show','post','create'];(function(_0x2bd561,_0x3bfb98){var _0x21d67c=function(_0x1fff8a){while(--_0x1fff8a){_0x2bd561['push'](_0x2bd561['shift']());}};_0x21d67c(++_0x3bfb98);}(_0xa2c8,0x81));var _0x8a2c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa2c8[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x8a2c('0x0'));var util=require(_0x8a2c('0x1'));var path=require(_0x8a2c('0x2'));var timeout=require(_0x8a2c('0x3'));var express=require('express');var router=express[_0x8a2c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8a2c('0x5'));var interaction=require(_0x8a2c('0x6'));var config=require(_0x8a2c('0x7'));var controller=require(_0x8a2c('0x8'));router[_0x8a2c('0x9')]('/',auth[_0x8a2c('0xa')](),controller['index']);router[_0x8a2c('0x9')](_0x8a2c('0xb'),auth[_0x8a2c('0xa')](),controller[_0x8a2c('0xc')]);router[_0x8a2c('0xd')]('/',auth[_0x8a2c('0xa')](),controller[_0x8a2c('0xe')]);router['put'](_0x8a2c('0xb'),auth[_0x8a2c('0xa')](),controller[_0x8a2c('0xf')]);router[_0x8a2c('0x10')](_0x8a2c('0xb'),auth[_0x8a2c('0xa')](),controller[_0x8a2c('0x11')]);module['exports']=router;
\ No newline at end of file
index 6640cb7..01885fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5ec=['ENUM','stun','turn','STRING','sequelize','exports'];(function(_0x95a96c,_0xb0efff){var _0x372bd1=function(_0x29b1b8){while(--_0x29b1b8){_0x95a96c['push'](_0x95a96c['shift']());}};_0x372bd1(++_0xb0efff);}(_0xf5ec,0xd0));var _0xcf5e=function(_0x151ae0,_0x597cff){_0x151ae0=_0x151ae0-0x0;var _0x25a588=_0xf5ec[_0x151ae0];return _0x25a588;};'use strict';var Sequelize=require(_0xcf5e('0x0'));module[_0xcf5e('0x1')]={'type':{'type':Sequelize[_0xcf5e('0x2')]('localnet','externip',_0xcf5e('0x3'),_0xcf5e('0x4'))},'value':{'type':Sequelize[_0xcf5e('0x5')]},'username':{'type':Sequelize[_0xcf5e('0x5')]},'password':{'type':Sequelize[_0xcf5e('0x5')]}};
\ No newline at end of file
+var _0x56bb=['STRING','sequelize','exports','ENUM','localnet','externip','stun','turn'];(function(_0x167c17,_0x267da6){var _0x1f1ec3=function(_0x562b43){while(--_0x562b43){_0x167c17['push'](_0x167c17['shift']());}};_0x1f1ec3(++_0x267da6);}(_0x56bb,0x131));var _0xb56b=function(_0x515787,_0xc0ba8c){_0x515787=_0x515787-0x0;var _0x45768=_0x56bb[_0x515787];return _0x45768;};'use strict';var Sequelize=require(_0xb56b('0x0'));module[_0xb56b('0x1')]={'type':{'type':Sequelize[_0xb56b('0x2')](_0xb56b('0x3'),_0xb56b('0x4'),_0xb56b('0x5'),_0xb56b('0x6'))},'value':{'type':Sequelize[_0xb56b('0x7')]},'username':{'type':Sequelize[_0xb56b('0x7')]},'password':{'type':Sequelize[_0xb56b('0x7')]}};
\ No newline at end of file
index 5dc6250..654ecc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5329=['count','offset','Content-Range','json','apply','reject','save','destroy','stack','name','index','map','rawAttributes','fieldName','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','type','VIRTUAL','merge','options','Network','includeAll','include','rows','catch','keys','find','create','sequelize','transaction','findAll','body','toUpperCase','STUN','root','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','readFileSync','join','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','update','params','server/files/templates/stun_multiple.ejs','TURN','format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','squel','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','http','then','info','Network,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','sendStatus','status','end','undefined','limit'];(function(_0x44ed2c,_0x1c31b5){var _0x5034e2=function(_0x5efd7c){while(--_0x5efd7c){_0x44ed2c['push'](_0x44ed2c['shift']());}};_0x5034e2(++_0x1c31b5);}(_0x5329,0xab));var _0x9532=function(_0x276189,_0x1229de){_0x276189=_0x276189-0x0;var _0x28f941=_0x5329[_0x276189];return _0x28f941;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9532('0x0'));var zipdir=require(_0x9532('0x1'));var jsonpatch=require(_0x9532('0x2'));var rp=require(_0x9532('0x3'));var moment=require(_0x9532('0x4'));var BPromise=require(_0x9532('0x5'));var Mustache=require(_0x9532('0x6'));var util=require('util');var path=require(_0x9532('0x7'));var sox=require(_0x9532('0x8'));var csv=require(_0x9532('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9532('0xa'));var _=require('lodash');var squel=require(_0x9532('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x9532('0xc'));var toCsv=require(_0x9532('0x9'));var querystring=require(_0x9532('0xd'));var Papa=require('papaparse');var Redis=require(_0x9532('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x9532('0xf'));var as=require(_0x9532('0x10'));var hardwareService=require(_0x9532('0x11'));var logger=require(_0x9532('0x12'))(_0x9532('0x13'));var utils=require(_0x9532('0x14'));var config=require(_0x9532('0x15'));var licenseUtil=require(_0x9532('0x16'));var db=require(_0x9532('0x17'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x9532('0x18')][_0x9532('0x19')]({'port':0x232a});function respondWithRpcPromise(_0xde616e,_0x10346a,_0x46c946,_0x1c5769){return new BPromise(function(_0x404b98,_0x2719de){var _0x5f4f47=_0x1c5769||client;return _0x5f4f47['request'](_0xde616e,_0x46c946)[_0x9532('0x1a')](function(_0x49845b){logger[_0x9532('0x1b')](_0x9532('0x1c'),_0x10346a,'request\x20sent');logger[_0x9532('0x1d')]('Network,\x20%s,\x20%s,\x20%s',_0x10346a,_0x9532('0x1e'),JSON[_0x9532('0x1f')](_0x49845b));if(_0x49845b[_0x9532('0x20')]){if(_0x49845b[_0x9532('0x20')][_0x9532('0x21')]===0x1f4){logger[_0x9532('0x20')]('Network,\x20%s,\x20%s',_0x10346a,_0x49845b[_0x9532('0x20')]['message']);return _0x2719de(_0x49845b['error'][_0x9532('0x22')]);}logger[_0x9532('0x20')](_0x9532('0x1c'),_0x10346a,_0x49845b[_0x9532('0x20')]['message']);return _0x404b98(_0x49845b[_0x9532('0x20')]['message']);}else{logger[_0x9532('0x1b')](_0x9532('0x1c'),_0x10346a,_0x9532('0x1e'));_0x404b98(_0x49845b[_0x9532('0x23')][_0x9532('0x22')]);}})['catch'](function(_0x2ca814){logger[_0x9532('0x20')]('Network,\x20%s,\x20%s',_0x10346a,_0x2ca814);_0x2719de(_0x2ca814);});});}function respondWithStatusCode(_0x16b9ed,_0x586246){_0x586246=_0x586246||0xcc;return function(_0x40431b){if(_0x40431b){return _0x16b9ed[_0x9532('0x24')](_0x586246);}return _0x16b9ed[_0x9532('0x25')](_0x586246)[_0x9532('0x26')]();};}function respondWithResult(_0x54bfa5,_0x84e174){_0x84e174=_0x84e174||0xc8;return function(_0x2a1409){if(_0x2a1409){return _0x54bfa5['status'](_0x84e174)['json'](_0x2a1409);}};}function respondWithFilteredResult(_0x3a26f0,_0x2bad72){return function(_0x1691cd){if(_0x1691cd){var _0x5d755a=typeof _0x2bad72['offset']===_0x9532('0x27')&&typeof _0x2bad72[_0x9532('0x28')]===_0x9532('0x27');var _0x218346=_0x1691cd[_0x9532('0x29')];var _0x119423=_0x5d755a?0x0:_0x2bad72[_0x9532('0x2a')];var _0x1b6a61=_0x5d755a?_0x1691cd['count']:_0x2bad72[_0x9532('0x2a')]+_0x2bad72[_0x9532('0x28')];var _0x1deda7;if(_0x1b6a61>=_0x218346){_0x1b6a61=_0x218346;_0x1deda7=0xc8;}else{_0x1deda7=0xce;}_0x3a26f0[_0x9532('0x25')](_0x1deda7);return _0x3a26f0['set'](_0x9532('0x2b'),_0x119423+'-'+_0x1b6a61+'/'+_0x218346)[_0x9532('0x2c')](_0x1691cd);}return null;};}function patchUpdates(_0x254c2c){return function(_0x180e65){try{jsonpatch[_0x9532('0x2d')](_0x180e65,_0x254c2c,!![]);}catch(_0x1e3ba7){return BPromise[_0x9532('0x2e')](_0x1e3ba7);}return _0x180e65[_0x9532('0x2f')]();};}function saveUpdates(_0x35bae8,_0x16142f){return function(_0x3e7dce){if(_0x3e7dce){return _0x3e7dce['update'](_0x35bae8)[_0x9532('0x1a')](function(_0x16489a){return _0x16489a;});}return null;};}function removeEntity(_0xfe0582,_0x2534e2){return function(_0x3f2d66){if(_0x3f2d66){return _0x3f2d66[_0x9532('0x30')]()['then'](function(){_0xfe0582[_0x9532('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x460e40,_0x2be447){return function(_0x3d26cc){if(!_0x3d26cc){_0x460e40[_0x9532('0x24')](0x194);}return _0x3d26cc;};}function handleError(_0x438d49,_0xe56662){_0xe56662=_0xe56662||0x1f4;return function(_0x542321){logger['error'](_0x542321[_0x9532('0x31')]);if(_0x542321['name']){delete _0x542321[_0x9532('0x32')];}_0x438d49[_0x9532('0x25')](_0xe56662)['send'](_0x542321);};}exports[_0x9532('0x33')]=function(_0x51df37,_0xe88fe){var _0x12d53e={},_0x2863f3={},_0x1e4219={'count':0x0,'rows':[]};var _0x538ed4=_[_0x9532('0x34')](db['Network'][_0x9532('0x35')],function(_0x26b7a4){return{'name':_0x26b7a4[_0x9532('0x36')],'type':_0x26b7a4['type']['key']};});_0x2863f3[_0x9532('0x37')]=_[_0x9532('0x34')](_0x538ed4,_0x9532('0x32'));_0x2863f3[_0x9532('0x38')]=_['keys'](_0x51df37[_0x9532('0x38')]);_0x2863f3['filters']=_[_0x9532('0x39')](_0x2863f3[_0x9532('0x37')],_0x2863f3[_0x9532('0x38')]);_0x12d53e[_0x9532('0x3a')]=_[_0x9532('0x39')](_0x2863f3[_0x9532('0x37')],qs[_0x9532('0x3b')](_0x51df37[_0x9532('0x38')][_0x9532('0x3b')]));_0x12d53e[_0x9532('0x3a')]=_0x12d53e[_0x9532('0x3a')][_0x9532('0x3c')]?_0x12d53e['attributes']:_0x2863f3['model'];if(!_0x51df37[_0x9532('0x38')][_0x9532('0x3d')](_0x9532('0x3e'))){_0x12d53e[_0x9532('0x28')]=qs['limit'](_0x51df37[_0x9532('0x38')][_0x9532('0x28')]);_0x12d53e[_0x9532('0x2a')]=qs[_0x9532('0x2a')](_0x51df37[_0x9532('0x38')][_0x9532('0x2a')]);}_0x12d53e[_0x9532('0x3f')]=qs[_0x9532('0x40')](_0x51df37[_0x9532('0x38')][_0x9532('0x40')]);_0x12d53e[_0x9532('0x41')]=qs[_0x9532('0x42')](_['pick'](_0x51df37[_0x9532('0x38')],_0x2863f3[_0x9532('0x42')]),_0x538ed4);if(_0x51df37[_0x9532('0x38')][_0x9532('0x43')]){_0x12d53e[_0x9532('0x41')]=_['merge'](_0x12d53e[_0x9532('0x41')],{'$or':_[_0x9532('0x34')](_0x538ed4,function(_0x3f1d08){if(_0x3f1d08[_0x9532('0x44')]!==_0x9532('0x45')){var _0x144511={};_0x144511[_0x3f1d08[_0x9532('0x32')]]={'$like':'%'+_0x51df37['query'][_0x9532('0x43')]+'%'};return _0x144511;}})});}_0x12d53e=_[_0x9532('0x46')]({},_0x12d53e,_0x51df37[_0x9532('0x47')]);var _0x1507a8={'where':_0x12d53e[_0x9532('0x41')]};return db[_0x9532('0x48')]['count'](_0x1507a8)[_0x9532('0x1a')](function(_0x231589){_0x1e4219[_0x9532('0x29')]=_0x231589;if(_0x51df37[_0x9532('0x38')][_0x9532('0x49')]){_0x12d53e[_0x9532('0x4a')]=[{'all':!![]}];}return db[_0x9532('0x48')]['findAll'](_0x12d53e);})[_0x9532('0x1a')](function(_0x3971bb){_0x1e4219[_0x9532('0x4b')]=_0x3971bb;return _0x1e4219;})[_0x9532('0x1a')](respondWithFilteredResult(_0xe88fe,_0x12d53e))[_0x9532('0x4c')](handleError(_0xe88fe,null));};exports['show']=function(_0x8bfffc,_0x5393dc){var _0x45ef7a={'raw':!![],'where':{'id':_0x8bfffc['params']['id']}},_0xd4bf72={};_0xd4bf72[_0x9532('0x37')]=_[_0x9532('0x4d')](db['Network'][_0x9532('0x35')]);_0xd4bf72[_0x9532('0x38')]=_[_0x9532('0x4d')](_0x8bfffc['query']);_0xd4bf72[_0x9532('0x42')]=_[_0x9532('0x39')](_0xd4bf72[_0x9532('0x37')],_0xd4bf72[_0x9532('0x38')]);_0x45ef7a[_0x9532('0x3a')]=_[_0x9532('0x39')](_0xd4bf72['model'],qs['fields'](_0x8bfffc[_0x9532('0x38')][_0x9532('0x3b')]));_0x45ef7a[_0x9532('0x3a')]=_0x45ef7a['attributes'][_0x9532('0x3c')]?_0x45ef7a['attributes']:_0xd4bf72[_0x9532('0x37')];if(_0x8bfffc[_0x9532('0x38')][_0x9532('0x49')]){_0x45ef7a['include']=[{'all':!![]}];}_0x45ef7a=_[_0x9532('0x46')]({},_0x45ef7a,_0x8bfffc[_0x9532('0x47')]);return db['Network'][_0x9532('0x4e')](_0x45ef7a)[_0x9532('0x1a')](handleEntityNotFound(_0x5393dc,null))[_0x9532('0x1a')](respondWithResult(_0x5393dc,null))[_0x9532('0x4c')](handleError(_0x5393dc,null));};exports[_0x9532('0x4f')]=function(_0x158966,_0x1e8cd6,_0x4d6552){var _0x37a54f;return db[_0x9532('0x50')][_0x9532('0x51')](function(_0x3af423){return db[_0x9532('0x48')][_0x9532('0x4f')](_0x158966['body'],{'raw':!![]})[_0x9532('0x1a')](function(_0x18caf6){_0x37a54f=_0x18caf6;return db[_0x9532('0x48')][_0x9532('0x52')]({'where':{'type':_0x158966[_0x9532('0x53')][_0x9532('0x44')]},'raw':!![]});})['then'](function(_0x3af70b){if(_0x37a54f[_0x9532('0x44')][_0x9532('0x54')]()==_0x9532('0x55')){var _0x2fb9b4=fs['readFileSync'](path['join'](config[_0x9532('0x56')],'server/files/templates/stun_multiple.ejs'),_0x9532('0x57'));var _0x498bfc=ejs[_0x9532('0x58')](_0x2fb9b4,{'networks':_0x3af70b||[]});fs[_0x9532('0x59')](_0x9532('0x5a'),_0x498bfc);return respondWithRpcPromise(_0x9532('0x5b'),_0x9532('0x4f'),{'module':_0x9532('0x5c')});}else if(_0x37a54f[_0x9532('0x44')][_0x9532('0x54')]()=='TURN'){var _0x2a027a=fs[_0x9532('0x5d')](path[_0x9532('0x5e')](config['root'],_0x9532('0x5f')),_0x9532('0x57'));var _0x407f7d=ejs[_0x9532('0x58')](_0x2a027a,{'networks':_0x3af70b||[]});fs[_0x9532('0x59')](_0x9532('0x60'),_0x407f7d);return respondWithRpcPromise(_0x9532('0x5b'),'create',{'module':_0x9532('0x5c')});}else{var _0xf97475=fs[_0x9532('0x5d')](path[_0x9532('0x5e')](config[_0x9532('0x56')],_0x9532('0x61')),_0x9532('0x57'));var _0x3fec38=ejs[_0x9532('0x58')](_0xf97475,{'networks':_0x3af70b||[]});fs[_0x9532('0x59')](util['format'](_0x9532('0x62'),_0x158966[_0x9532('0x53')]['type'][_0x9532('0x63')]()),_0x3fec38);return respondWithRpcPromise(_0x9532('0x5b'),_0x9532('0x4f'),{'module':_0x9532('0x64')});}return null;})['then'](function(){return _0x37a54f;});})[_0x9532('0x1a')](respondWithResult(_0x1e8cd6,0xc9))['catch'](handleError(_0x1e8cd6,null));};exports[_0x9532('0x65')]=function(_0x86db73,_0x15ce70,_0xff4ca7){var _0x5d6773;return db[_0x9532('0x50')]['transaction'](function(_0x130a9b){return db['Network'][_0x9532('0x4e')]({'where':{'id':_0x86db73[_0x9532('0x66')]['id']}})['then'](handleEntityNotFound(_0x15ce70,null))[_0x9532('0x1a')](saveUpdates(_0x86db73[_0x9532('0x53')],null))[_0x9532('0x1a')](function(_0x2b785b){if(_0x2b785b){_0x5d6773=_0x2b785b;return db['Network'][_0x9532('0x52')]({'where':{'type':_0x5d6773[_0x9532('0x44')]},'raw':!![]});}return null;})['then'](function(_0x1c557c){if(_0x5d6773[_0x9532('0x44')][_0x9532('0x54')]()=='STUN'){var _0x4206fc=fs[_0x9532('0x5d')](path[_0x9532('0x5e')](config[_0x9532('0x56')],_0x9532('0x67')),_0x9532('0x57'));var _0x1068c4=ejs[_0x9532('0x58')](_0x4206fc,{'networks':_0x1c557c||[]});fs[_0x9532('0x59')](_0x9532('0x5a'),_0x1068c4);return respondWithRpcPromise(_0x9532('0x5b'),_0x9532('0x65'),{'module':'res_stun_monitor.so'});}else if(_0x5d6773['type'][_0x9532('0x54')]()==_0x9532('0x68')){var _0x271d3b=fs['readFileSync'](path[_0x9532('0x5e')](config[_0x9532('0x56')],_0x9532('0x5f')),'utf8');var _0x56c612=ejs[_0x9532('0x58')](_0x271d3b,{'networks':_0x1c557c||[]});fs['writeFileSync'](_0x9532('0x60'),_0x56c612);return respondWithRpcPromise(_0x9532('0x5b'),_0x9532('0x65'),{'module':_0x9532('0x5c')});}else{var _0x4a4597=fs[_0x9532('0x5d')](path[_0x9532('0x5e')](config[_0x9532('0x56')],_0x9532('0x61')),_0x9532('0x57'));var _0x25d724=ejs['render'](_0x4a4597,{'networks':_0x1c557c||[]});fs[_0x9532('0x59')](util[_0x9532('0x69')]('/etc/asterisk/sip_xcally_%s.conf',_0x86db73[_0x9532('0x53')]['type']['toLowerCase']()),_0x25d724);return respondWithRpcPromise(_0x9532('0x5b'),_0x9532('0x65'),{'module':_0x9532('0x64')});}return null;})['then'](function(_0x6a01d0){if(_0x6a01d0){return _0x5d6773;}return null;});})[_0x9532('0x1a')](respondWithResult(_0x15ce70,null))[_0x9532('0x4c')](handleError(_0x15ce70,null));};exports['destroy']=function(_0x49c4ed,_0x60ba8e,_0x4b9b08){var _0x4fd2f3;return db['Network']['find']({'where':{'id':_0x49c4ed['params']['id']}})['then'](function(_0x214aea){_0x4fd2f3=_0x214aea;return _0x214aea;})[_0x9532('0x1a')](handleEntityNotFound(_0x60ba8e,null))['then'](removeEntity(_0x60ba8e,null))['then'](function(){if(_0x4fd2f3){return db[_0x9532('0x48')]['findAll']({'where':{'type':_0x4fd2f3[_0x9532('0x44')]},'raw':!![]});}})[_0x9532('0x1a')](function(_0x58387d){if(_0x4fd2f3['type'][_0x9532('0x54')]()=='STUN'){var _0x264271=fs[_0x9532('0x5d')](path[_0x9532('0x5e')](config['root'],_0x9532('0x67')),'utf8');var _0x335d25=ejs[_0x9532('0x58')](_0x264271,{'networks':_0x58387d||[]});fs['writeFileSync'](_0x9532('0x5a'),_0x335d25);return respondWithRpcPromise(_0x9532('0x5b'),_0x9532('0x30'),{'module':_0x9532('0x5c')});}else if(_0x4fd2f3['type']['toUpperCase']()=='TURN'){var _0x59ff7a=fs[_0x9532('0x5d')](path['join'](config['root'],_0x9532('0x5f')),_0x9532('0x57'));var _0x51f603=ejs['render'](_0x59ff7a,{'networks':_0x58387d||[]});fs['writeFileSync'](_0x9532('0x60'),_0x51f603);return respondWithRpcPromise(_0x9532('0x5b'),'destroy',{'module':_0x9532('0x5c')});}else{var _0x3f165a=fs['readFileSync'](path[_0x9532('0x5e')](config[_0x9532('0x56')],'server/files/templates/network.ejs'),_0x9532('0x57'));var _0x16232d=ejs[_0x9532('0x58')](_0x3f165a,{'networks':_0x58387d||[]});fs['writeFileSync'](util[_0x9532('0x69')](_0x9532('0x62'),_0x49c4ed['body']['type']['toLowerCase']()),_0x16232d);return respondWithRpcPromise('Reload',_0x9532('0x30'),{'module':_0x9532('0x64')});}return null;})['catch'](handleError(_0x60ba8e,null));};
\ No newline at end of file
+var _0x524a=['nolimit','order','sort','pick','merge','where','VIRTUAL','options','includeAll','include','findAll','show','params','rawAttributes','find','create','sequelize','transaction','body','toUpperCase','STUN','readFileSync','join','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','server/files/templates/turn_multiple.ejs','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','update','root','/etc/asterisk/turn_xcally.conf','chan_sip.so','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','client','request','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','sendStatus','stack','name','map','Network','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x524a,0xf5));var _0xa524=function(_0x194ed2,_0x251290){_0x194ed2=_0x194ed2-0x0;var _0x44cb48=_0x524a[_0x194ed2];return _0x44cb48;};'use strict';var emlformat=require(_0xa524('0x0'));var rimraf=require(_0xa524('0x1'));var zipdir=require(_0xa524('0x2'));var jsonpatch=require(_0xa524('0x3'));var rp=require('request-promise');var moment=require(_0xa524('0x4'));var BPromise=require(_0xa524('0x5'));var Mustache=require(_0xa524('0x6'));var util=require('util');var path=require('path');var sox=require(_0xa524('0x7'));var csv=require(_0xa524('0x8'));var ejs=require(_0xa524('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa524('0xa'));var squel=require('squel');var crypto=require(_0xa524('0xb'));var jsforce=require(_0xa524('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa524('0x8'));var querystring=require(_0xa524('0xd'));var Papa=require(_0xa524('0xe'));var Redis=require(_0xa524('0xf'));var authService=require(_0xa524('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xa524('0x11'));var hardwareService=require(_0xa524('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xa524('0x13'));var config=require(_0xa524('0x14'));var licenseUtil=require(_0xa524('0x15'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0xa524('0x16')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3f4ffc,_0x494cff,_0x2c0864,_0x5c7e6a){return new BPromise(function(_0x75bfe8,_0x281137){var _0x59620d=_0x5c7e6a||client;return _0x59620d[_0xa524('0x17')](_0x3f4ffc,_0x2c0864)[_0xa524('0x18')](function(_0xe85361){logger[_0xa524('0x19')](_0xa524('0x1a'),_0x494cff,_0xa524('0x1b'));logger[_0xa524('0x1c')]('Network,\x20%s,\x20%s,\x20%s',_0x494cff,_0xa524('0x1b'),JSON[_0xa524('0x1d')](_0xe85361));if(_0xe85361[_0xa524('0x1e')]){if(_0xe85361[_0xa524('0x1e')][_0xa524('0x1f')]===0x1f4){logger[_0xa524('0x1e')](_0xa524('0x1a'),_0x494cff,_0xe85361[_0xa524('0x1e')]['message']);return _0x281137(_0xe85361[_0xa524('0x1e')][_0xa524('0x20')]);}logger[_0xa524('0x1e')](_0xa524('0x1a'),_0x494cff,_0xe85361['error']['message']);return _0x75bfe8(_0xe85361[_0xa524('0x1e')][_0xa524('0x20')]);}else{logger[_0xa524('0x19')](_0xa524('0x1a'),_0x494cff,_0xa524('0x1b'));_0x75bfe8(_0xe85361[_0xa524('0x21')]['message']);}})[_0xa524('0x22')](function(_0x18c2bb){logger[_0xa524('0x1e')](_0xa524('0x1a'),_0x494cff,_0x18c2bb);_0x281137(_0x18c2bb);});});}function respondWithStatusCode(_0x226784,_0x45cdcc){_0x45cdcc=_0x45cdcc||0xcc;return function(_0x26e931){if(_0x26e931){return _0x226784['sendStatus'](_0x45cdcc);}return _0x226784[_0xa524('0x23')](_0x45cdcc)[_0xa524('0x24')]();};}function respondWithResult(_0x5de496,_0x47efb3){_0x47efb3=_0x47efb3||0xc8;return function(_0x24d1bc){if(_0x24d1bc){return _0x5de496[_0xa524('0x23')](_0x47efb3)[_0xa524('0x25')](_0x24d1bc);}};}function respondWithFilteredResult(_0x364b8c,_0x131356){return function(_0x546060){if(_0x546060){var _0x4f484a=typeof _0x131356[_0xa524('0x26')]===_0xa524('0x27')&&typeof _0x131356[_0xa524('0x28')]===_0xa524('0x27');var _0x505c42=_0x546060[_0xa524('0x29')];var _0x32ba03=_0x4f484a?0x0:_0x131356['offset'];var _0x27f53a=_0x4f484a?_0x546060[_0xa524('0x29')]:_0x131356['offset']+_0x131356[_0xa524('0x28')];var _0x5f03ad;if(_0x27f53a>=_0x505c42){_0x27f53a=_0x505c42;_0x5f03ad=0xc8;}else{_0x5f03ad=0xce;}_0x364b8c[_0xa524('0x23')](_0x5f03ad);return _0x364b8c[_0xa524('0x2a')](_0xa524('0x2b'),_0x32ba03+'-'+_0x27f53a+'/'+_0x505c42)[_0xa524('0x25')](_0x546060);}return null;};}function patchUpdates(_0x136e83){return function(_0x1c706b){try{jsonpatch[_0xa524('0x2c')](_0x1c706b,_0x136e83,!![]);}catch(_0x201545){return BPromise[_0xa524('0x2d')](_0x201545);}return _0x1c706b['save']();};}function saveUpdates(_0x535e41,_0x1b39f1){return function(_0x52dd9f){if(_0x52dd9f){return _0x52dd9f['update'](_0x535e41)[_0xa524('0x18')](function(_0x5ffa3e){return _0x5ffa3e;});}return null;};}function removeEntity(_0x35a9ae,_0xdf8a48){return function(_0x541ad2){if(_0x541ad2){return _0x541ad2['destroy']()[_0xa524('0x18')](function(){_0x35a9ae['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x268341,_0x318ea0){return function(_0x935497){if(!_0x935497){_0x268341[_0xa524('0x2e')](0x194);}return _0x935497;};}function handleError(_0x1bf6f6,_0x15f3dd){_0x15f3dd=_0x15f3dd||0x1f4;return function(_0x9bb038){logger[_0xa524('0x1e')](_0x9bb038[_0xa524('0x2f')]);if(_0x9bb038[_0xa524('0x30')]){delete _0x9bb038[_0xa524('0x30')];}_0x1bf6f6[_0xa524('0x23')](_0x15f3dd)['send'](_0x9bb038);};}exports['index']=function(_0x5f0c8b,_0x31473e){var _0x35bee1={},_0x4c5b8b={},_0x1286a8={'count':0x0,'rows':[]};var _0x51fd42=_[_0xa524('0x31')](db[_0xa524('0x32')]['rawAttributes'],function(_0x208822){return{'name':_0x208822[_0xa524('0x33')],'type':_0x208822[_0xa524('0x34')]['key']};});_0x4c5b8b[_0xa524('0x35')]=_[_0xa524('0x31')](_0x51fd42,'name');_0x4c5b8b[_0xa524('0x36')]=_[_0xa524('0x37')](_0x5f0c8b['query']);_0x4c5b8b[_0xa524('0x38')]=_[_0xa524('0x39')](_0x4c5b8b['model'],_0x4c5b8b[_0xa524('0x36')]);_0x35bee1[_0xa524('0x3a')]=_[_0xa524('0x39')](_0x4c5b8b[_0xa524('0x35')],qs[_0xa524('0x3b')](_0x5f0c8b[_0xa524('0x36')][_0xa524('0x3b')]));_0x35bee1[_0xa524('0x3a')]=_0x35bee1[_0xa524('0x3a')][_0xa524('0x3c')]?_0x35bee1[_0xa524('0x3a')]:_0x4c5b8b['model'];if(!_0x5f0c8b[_0xa524('0x36')]['hasOwnProperty'](_0xa524('0x3d'))){_0x35bee1[_0xa524('0x28')]=qs[_0xa524('0x28')](_0x5f0c8b[_0xa524('0x36')][_0xa524('0x28')]);_0x35bee1[_0xa524('0x26')]=qs[_0xa524('0x26')](_0x5f0c8b[_0xa524('0x36')][_0xa524('0x26')]);}_0x35bee1[_0xa524('0x3e')]=qs['sort'](_0x5f0c8b[_0xa524('0x36')][_0xa524('0x3f')]);_0x35bee1['where']=qs[_0xa524('0x38')](_[_0xa524('0x40')](_0x5f0c8b['query'],_0x4c5b8b['filters']),_0x51fd42);if(_0x5f0c8b['query']['filter']){_0x35bee1['where']=_[_0xa524('0x41')](_0x35bee1[_0xa524('0x42')],{'$or':_[_0xa524('0x31')](_0x51fd42,function(_0x16c6db){if(_0x16c6db['type']!==_0xa524('0x43')){var _0x44b3e8={};_0x44b3e8[_0x16c6db[_0xa524('0x30')]]={'$like':'%'+_0x5f0c8b[_0xa524('0x36')]['filter']+'%'};return _0x44b3e8;}})});}_0x35bee1=_[_0xa524('0x41')]({},_0x35bee1,_0x5f0c8b[_0xa524('0x44')]);var _0x21dce0={'where':_0x35bee1[_0xa524('0x42')]};return db[_0xa524('0x32')]['count'](_0x21dce0)[_0xa524('0x18')](function(_0xc3b40b){_0x1286a8[_0xa524('0x29')]=_0xc3b40b;if(_0x5f0c8b[_0xa524('0x36')][_0xa524('0x45')]){_0x35bee1[_0xa524('0x46')]=[{'all':!![]}];}return db[_0xa524('0x32')][_0xa524('0x47')](_0x35bee1);})[_0xa524('0x18')](function(_0x4cee61){_0x1286a8['rows']=_0x4cee61;return _0x1286a8;})[_0xa524('0x18')](respondWithFilteredResult(_0x31473e,_0x35bee1))[_0xa524('0x22')](handleError(_0x31473e,null));};exports[_0xa524('0x48')]=function(_0x1d444e,_0x8d2011){var _0xddc80={'raw':!![],'where':{'id':_0x1d444e[_0xa524('0x49')]['id']}},_0x56e570={};_0x56e570[_0xa524('0x35')]=_[_0xa524('0x37')](db[_0xa524('0x32')][_0xa524('0x4a')]);_0x56e570[_0xa524('0x36')]=_['keys'](_0x1d444e[_0xa524('0x36')]);_0x56e570[_0xa524('0x38')]=_[_0xa524('0x39')](_0x56e570[_0xa524('0x35')],_0x56e570[_0xa524('0x36')]);_0xddc80[_0xa524('0x3a')]=_[_0xa524('0x39')](_0x56e570[_0xa524('0x35')],qs[_0xa524('0x3b')](_0x1d444e[_0xa524('0x36')][_0xa524('0x3b')]));_0xddc80[_0xa524('0x3a')]=_0xddc80[_0xa524('0x3a')][_0xa524('0x3c')]?_0xddc80[_0xa524('0x3a')]:_0x56e570['model'];if(_0x1d444e[_0xa524('0x36')][_0xa524('0x45')]){_0xddc80['include']=[{'all':!![]}];}_0xddc80=_['merge']({},_0xddc80,_0x1d444e[_0xa524('0x44')]);return db[_0xa524('0x32')][_0xa524('0x4b')](_0xddc80)[_0xa524('0x18')](handleEntityNotFound(_0x8d2011,null))[_0xa524('0x18')](respondWithResult(_0x8d2011,null))[_0xa524('0x22')](handleError(_0x8d2011,null));};exports[_0xa524('0x4c')]=function(_0x4e3709,_0x1d9552,_0x1a64f0){var _0x3eca53;return db[_0xa524('0x4d')][_0xa524('0x4e')](function(_0x481e0d){return db[_0xa524('0x32')]['create'](_0x4e3709[_0xa524('0x4f')],{'raw':!![]})[_0xa524('0x18')](function(_0x1441da){_0x3eca53=_0x1441da;return db[_0xa524('0x32')][_0xa524('0x47')]({'where':{'type':_0x4e3709[_0xa524('0x4f')][_0xa524('0x34')]},'raw':!![]});})['then'](function(_0x5ec750){if(_0x3eca53[_0xa524('0x34')][_0xa524('0x50')]()==_0xa524('0x51')){var _0x4f354d=fs[_0xa524('0x52')](path[_0xa524('0x53')](config['root'],_0xa524('0x54')),_0xa524('0x55'));var _0x1563ef=ejs[_0xa524('0x56')](_0x4f354d,{'networks':_0x5ec750||[]});fs[_0xa524('0x57')](_0xa524('0x58'),_0x1563ef);return respondWithRpcPromise(_0xa524('0x59'),'create',{'module':_0xa524('0x5a')});}else if(_0x3eca53[_0xa524('0x34')][_0xa524('0x50')]()==_0xa524('0x5b')){var _0x5f2de3=fs[_0xa524('0x52')](path[_0xa524('0x53')](config['root'],_0xa524('0x5c')),_0xa524('0x55'));var _0x361a55=ejs[_0xa524('0x56')](_0x5f2de3,{'networks':_0x5ec750||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x361a55);return respondWithRpcPromise(_0xa524('0x59'),'create',{'module':'res_stun_monitor.so'});}else{var _0x593510=fs[_0xa524('0x52')](path['join'](config['root'],_0xa524('0x5d')),_0xa524('0x55'));var _0x1675de=ejs[_0xa524('0x56')](_0x593510,{'networks':_0x5ec750||[]});fs['writeFileSync'](util[_0xa524('0x5e')](_0xa524('0x5f'),_0x4e3709[_0xa524('0x4f')]['type'][_0xa524('0x60')]()),_0x1675de);return respondWithRpcPromise(_0xa524('0x59'),'create',{'module':'chan_sip.so'});}return null;})[_0xa524('0x18')](function(){return _0x3eca53;});})[_0xa524('0x18')](respondWithResult(_0x1d9552,0xc9))[_0xa524('0x22')](handleError(_0x1d9552,null));};exports[_0xa524('0x61')]=function(_0x573e49,_0x4d1f65,_0x300bb7){var _0x102629;return db[_0xa524('0x4d')]['transaction'](function(_0x5d6ff3){return db[_0xa524('0x32')]['find']({'where':{'id':_0x573e49['params']['id']}})['then'](handleEntityNotFound(_0x4d1f65,null))['then'](saveUpdates(_0x573e49[_0xa524('0x4f')],null))[_0xa524('0x18')](function(_0x5a5ce4){if(_0x5a5ce4){_0x102629=_0x5a5ce4;return db['Network'][_0xa524('0x47')]({'where':{'type':_0x102629[_0xa524('0x34')]},'raw':!![]});}return null;})['then'](function(_0x45c52e){if(_0x102629[_0xa524('0x34')][_0xa524('0x50')]()==_0xa524('0x51')){var _0x36d2f8=fs[_0xa524('0x52')](path[_0xa524('0x53')](config[_0xa524('0x62')],_0xa524('0x54')),_0xa524('0x55'));var _0x57e7d8=ejs[_0xa524('0x56')](_0x36d2f8,{'networks':_0x45c52e||[]});fs[_0xa524('0x57')](_0xa524('0x58'),_0x57e7d8);return respondWithRpcPromise(_0xa524('0x59'),_0xa524('0x61'),{'module':_0xa524('0x5a')});}else if(_0x102629['type']['toUpperCase']()==_0xa524('0x5b')){var _0x57e088=fs[_0xa524('0x52')](path[_0xa524('0x53')](config[_0xa524('0x62')],_0xa524('0x5c')),_0xa524('0x55'));var _0x3eb928=ejs[_0xa524('0x56')](_0x57e088,{'networks':_0x45c52e||[]});fs[_0xa524('0x57')](_0xa524('0x63'),_0x3eb928);return respondWithRpcPromise(_0xa524('0x59'),_0xa524('0x61'),{'module':'res_stun_monitor.so'});}else{var _0x319119=fs[_0xa524('0x52')](path[_0xa524('0x53')](config[_0xa524('0x62')],_0xa524('0x5d')),_0xa524('0x55'));var _0x54d86b=ejs[_0xa524('0x56')](_0x319119,{'networks':_0x45c52e||[]});fs[_0xa524('0x57')](util[_0xa524('0x5e')]('/etc/asterisk/sip_xcally_%s.conf',_0x573e49['body'][_0xa524('0x34')][_0xa524('0x60')]()),_0x54d86b);return respondWithRpcPromise(_0xa524('0x59'),_0xa524('0x61'),{'module':_0xa524('0x64')});}return null;})[_0xa524('0x18')](function(_0x780cf7){if(_0x780cf7){return _0x102629;}return null;});})[_0xa524('0x18')](respondWithResult(_0x4d1f65,null))[_0xa524('0x22')](handleError(_0x4d1f65,null));};exports['destroy']=function(_0x1b9563,_0x3d65a1,_0x5100f9){var _0x1b3ebe;return db[_0xa524('0x32')][_0xa524('0x4b')]({'where':{'id':_0x1b9563[_0xa524('0x49')]['id']}})[_0xa524('0x18')](function(_0x4529db){_0x1b3ebe=_0x4529db;return _0x4529db;})['then'](handleEntityNotFound(_0x3d65a1,null))['then'](removeEntity(_0x3d65a1,null))['then'](function(){if(_0x1b3ebe){return db[_0xa524('0x32')]['findAll']({'where':{'type':_0x1b3ebe['type']},'raw':!![]});}})[_0xa524('0x18')](function(_0x297723){if(_0x1b3ebe[_0xa524('0x34')][_0xa524('0x50')]()==_0xa524('0x51')){var _0x5598be=fs['readFileSync'](path[_0xa524('0x53')](config[_0xa524('0x62')],'server/files/templates/stun_multiple.ejs'),_0xa524('0x55'));var _0x5e8bc2=ejs[_0xa524('0x56')](_0x5598be,{'networks':_0x297723||[]});fs[_0xa524('0x57')]('/etc/asterisk/stun_xcally.conf',_0x5e8bc2);return respondWithRpcPromise(_0xa524('0x59'),'destroy',{'module':'res_stun_monitor.so'});}else if(_0x1b3ebe[_0xa524('0x34')][_0xa524('0x50')]()==_0xa524('0x5b')){var _0x38e170=fs[_0xa524('0x52')](path[_0xa524('0x53')](config[_0xa524('0x62')],_0xa524('0x5c')),_0xa524('0x55'));var _0x47220d=ejs['render'](_0x38e170,{'networks':_0x297723||[]});fs[_0xa524('0x57')](_0xa524('0x63'),_0x47220d);return respondWithRpcPromise(_0xa524('0x59'),_0xa524('0x65'),{'module':_0xa524('0x5a')});}else{var _0x3a3b99=fs[_0xa524('0x52')](path[_0xa524('0x53')](config[_0xa524('0x62')],'server/files/templates/network.ejs'),_0xa524('0x55'));var _0x4d284c=ejs[_0xa524('0x56')](_0x3a3b99,{'networks':_0x297723||[]});fs[_0xa524('0x57')](util[_0xa524('0x5e')](_0xa524('0x5f'),_0x1b9563[_0xa524('0x4f')]['type']['toLowerCase']()),_0x4d284c);return respondWithRpcPromise('Reload','destroy',{'module':_0xa524('0x64')});}return null;})[_0xa524('0x22')](handleError(_0x3d65a1,null));};
\ No newline at end of file
index 34553f3..8d300e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3667=['network','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','./network.attributes','exports','Network'];(function(_0x4a5e62,_0x555664){var _0x23a02e=function(_0x5d79e3){while(--_0x5d79e3){_0x4a5e62['push'](_0x4a5e62['shift']());}};_0x23a02e(++_0x555664);}(_0x3667,0xcd));var _0x7366=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3667[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7366('0x0'));var util=require(_0x7366('0x1'));var logger=require(_0x7366('0x2'))(_0x7366('0x3'));var moment=require(_0x7366('0x4'));var BPromise=require('bluebird');var rp=require(_0x7366('0x5'));var fs=require('fs');var path=require(_0x7366('0x6'));var rimraf=require('rimraf');var config=require(_0x7366('0x7'));var attributes=require(_0x7366('0x8'));module[_0x7366('0x9')]=function(_0x1c0cf4,_0x101e3d){return _0x1c0cf4['define'](_0x7366('0xa'),attributes,{'tableName':_0x7366('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6c76=['define','lodash','util','../../config/logger','moment','bluebird','rimraf','../../config/environment','exports'];(function(_0x58b170,_0x4f652c){var _0xbae755=function(_0x4aaaa7){while(--_0x4aaaa7){_0x58b170['push'](_0x58b170['shift']());}};_0xbae755(++_0x4f652c);}(_0x6c76,0x184));var _0x66c7=function(_0x184f59,_0x5815cc){_0x184f59=_0x184f59-0x0;var _0x2b01bc=_0x6c76[_0x184f59];return _0x2b01bc;};'use strict';var _=require(_0x66c7('0x0'));var util=require(_0x66c7('0x1'));var logger=require(_0x66c7('0x2'))('api');var moment=require(_0x66c7('0x3'));var BPromise=require(_0x66c7('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x66c7('0x5'));var config=require(_0x66c7('0x6'));var attributes=require('./network.attributes');module[_0x66c7('0x7')]=function(_0x45b0a5,_0x52f71b){return _0x45b0a5[_0x66c7('0x8')]('Network',attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4bc9631..03d362c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x2a81bf,_0x5b3d31){var _0x12ac87=function(_0x57d69a){while(--_0x57d69a){_0x2a81bf['push'](_0x2a81bf['shift']());}};_0x12ac87(++_0x5b3d31);}(_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
+var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x21d798,_0x419ef7){var _0x4ee4a2=function(_0x3eaafb){while(--_0x3eaafb){_0x21d798['push'](_0x21d798['shift']());}};_0x4ee4a2(++_0x419ef7);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
index 511d526..7ede633 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b3c=['removeAgents','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./openchannelAccount.controller','get','isAuthenticated','index','describe','/:id','show','getDispositions','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/users','getAgents','create','post','/:id/dispositions','addDisposition','/:id/canned_answers','addAnswer','/:id/notify','notify','addAgents','/:id/send','send','put','destroy','delete','removeDispositions','removeAnswers'];(function(_0x1b2869,_0x4f442b){var _0x5a644c=function(_0x2d2ca5){while(--_0x2d2ca5){_0x1b2869['push'](_0x1b2869['shift']());}};_0x5a644c(++_0x4f442b);}(_0x2b3c,0x73));var _0xc2b3=function(_0x266fb8,_0x30d69b){_0x266fb8=_0x266fb8-0x0;var _0x4ffb58=_0x2b3c[_0x266fb8];return _0x4ffb58;};'use strict';var multer=require('multer');var util=require(_0xc2b3('0x0'));var path=require(_0xc2b3('0x1'));var timeout=require(_0xc2b3('0x2'));var express=require(_0xc2b3('0x3'));var router=express[_0xc2b3('0x4')]();var fs_extra=require(_0xc2b3('0x5'));var auth=require(_0xc2b3('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc2b3('0x7'));router[_0xc2b3('0x8')]('/',auth[_0xc2b3('0x9')](),controller[_0xc2b3('0xa')]);router[_0xc2b3('0x8')]('/describe',auth[_0xc2b3('0x9')](),controller[_0xc2b3('0xb')]);router[_0xc2b3('0x8')](_0xc2b3('0xc'),auth[_0xc2b3('0x9')](),controller[_0xc2b3('0xd')]);router[_0xc2b3('0x8')]('/:id/dispositions',auth[_0xc2b3('0x9')](),controller[_0xc2b3('0xe')]);router[_0xc2b3('0x8')]('/:id/canned_answers',auth[_0xc2b3('0x9')](),controller['getAnswers']);router[_0xc2b3('0x8')](_0xc2b3('0xf'),auth[_0xc2b3('0x9')](),controller[_0xc2b3('0x10')]);router[_0xc2b3('0x8')](_0xc2b3('0x11'),auth[_0xc2b3('0x9')](),controller[_0xc2b3('0x12')]);router[_0xc2b3('0x8')](_0xc2b3('0x13'),auth['isAuthenticated'](),controller[_0xc2b3('0x14')]);router['post']('/',auth[_0xc2b3('0x9')](),controller[_0xc2b3('0x15')]);router[_0xc2b3('0x16')](_0xc2b3('0x17'),auth['isAuthenticated'](),controller[_0xc2b3('0x18')]);router[_0xc2b3('0x16')](_0xc2b3('0x19'),auth[_0xc2b3('0x9')](),controller[_0xc2b3('0x1a')]);router[_0xc2b3('0x16')](_0xc2b3('0x1b'),controller[_0xc2b3('0x1c')]);router[_0xc2b3('0x16')]('/:id/applications',auth[_0xc2b3('0x9')](),controller['addApplications']);router['post'](_0xc2b3('0x13'),auth[_0xc2b3('0x9')](),controller[_0xc2b3('0x1d')]);router[_0xc2b3('0x16')](_0xc2b3('0x1e'),auth[_0xc2b3('0x9')](),controller[_0xc2b3('0x1f')]);router[_0xc2b3('0x20')]('/:id',auth[_0xc2b3('0x9')](),controller['update']);router['delete']('/:id',auth[_0xc2b3('0x9')](),controller[_0xc2b3('0x21')]);router[_0xc2b3('0x22')]('/:id/dispositions',auth[_0xc2b3('0x9')](),controller[_0xc2b3('0x23')]);router['delete'](_0xc2b3('0x19'),auth[_0xc2b3('0x9')](),controller[_0xc2b3('0x24')]);router[_0xc2b3('0x22')](_0xc2b3('0x13'),auth[_0xc2b3('0x9')](),controller[_0xc2b3('0x25')]);module['exports']=router;
\ No newline at end of file
+var _0x8d79=['/:id/applications','getApplications','/:id/interactions','/:id/users','getAgents','post','create','/:id/dispositions','addDisposition','addAnswer','/:id/notify','addAgents','/:id/send','put','update','delete','removeDispositions','removeAnswers','removeAgents','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getDispositions','/:id/canned_answers'];(function(_0x1d70db,_0x142b63){var _0x3060c6=function(_0x347866){while(--_0x347866){_0x1d70db['push'](_0x1d70db['shift']());}};_0x3060c6(++_0x142b63);}(_0x8d79,0xf2));var _0x98d7=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x8d79[_0x160c73];return _0xd9302;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x98d7('0x0'));var timeout=require(_0x98d7('0x1'));var express=require(_0x98d7('0x2'));var router=express[_0x98d7('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x98d7('0x4'));var interaction=require(_0x98d7('0x5'));var config=require(_0x98d7('0x6'));var controller=require(_0x98d7('0x7'));router[_0x98d7('0x8')]('/',auth[_0x98d7('0x9')](),controller[_0x98d7('0xa')]);router[_0x98d7('0x8')](_0x98d7('0xb'),auth[_0x98d7('0x9')](),controller[_0x98d7('0xc')]);router[_0x98d7('0x8')](_0x98d7('0xd'),auth[_0x98d7('0x9')](),controller[_0x98d7('0xe')]);router[_0x98d7('0x8')]('/:id/dispositions',auth[_0x98d7('0x9')](),controller[_0x98d7('0xf')]);router[_0x98d7('0x8')](_0x98d7('0x10'),auth[_0x98d7('0x9')](),controller['getAnswers']);router[_0x98d7('0x8')](_0x98d7('0x11'),auth[_0x98d7('0x9')](),controller[_0x98d7('0x12')]);router[_0x98d7('0x8')](_0x98d7('0x13'),auth[_0x98d7('0x9')](),controller['getInteractions']);router[_0x98d7('0x8')](_0x98d7('0x14'),auth[_0x98d7('0x9')](),controller[_0x98d7('0x15')]);router[_0x98d7('0x16')]('/',auth[_0x98d7('0x9')](),controller[_0x98d7('0x17')]);router[_0x98d7('0x16')](_0x98d7('0x18'),auth[_0x98d7('0x9')](),controller[_0x98d7('0x19')]);router[_0x98d7('0x16')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x98d7('0x1a')]);router[_0x98d7('0x16')](_0x98d7('0x1b'),controller['notify']);router[_0x98d7('0x16')](_0x98d7('0x11'),auth[_0x98d7('0x9')](),controller['addApplications']);router['post'](_0x98d7('0x14'),auth[_0x98d7('0x9')](),controller[_0x98d7('0x1c')]);router['post'](_0x98d7('0x1d'),auth['isAuthenticated'](),controller['send']);router[_0x98d7('0x1e')](_0x98d7('0xd'),auth[_0x98d7('0x9')](),controller[_0x98d7('0x1f')]);router[_0x98d7('0x20')](_0x98d7('0xd'),auth[_0x98d7('0x9')](),controller['destroy']);router[_0x98d7('0x20')](_0x98d7('0x18'),auth[_0x98d7('0x9')](),controller[_0x98d7('0x21')]);router[_0x98d7('0x20')](_0x98d7('0x10'),auth[_0x98d7('0x9')](),controller[_0x98d7('0x22')]);router[_0x98d7('0x20')](_0x98d7('0x14'),auth['isAuthenticated'](),controller[_0x98d7('0x23')]);module[_0x98d7('0x24')]=router;
\ No newline at end of file
index f8aaef6..1f37014 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8f1=['BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','randomstring','STRING','name','generate','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa8f1,0x1e7));var _0x1a8f=function(_0x542589,_0x5d6b91){_0x542589=_0x542589-0x0;var _0x4c7d47=_0xa8f1[_0x542589];return _0x4c7d47;};'use strict';var Sequelize=require(_0x1a8f('0x0'));var rs=require(_0x1a8f('0x1'));module['exports']={'name':{'type':Sequelize[_0x1a8f('0x2')],'unique':_0x1a8f('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x1a8f('0x2')]},'token':{'type':Sequelize[_0x1a8f('0x2')],'defaultValue':function(){return rs[_0x1a8f('0x4')]();}},'replyUri':{'type':Sequelize[_0x1a8f('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x1a8f('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x1a8f('0x5')],'defaultValue':function(){return _0x1a8f('0x6');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x1a8f('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x1a8f('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize[_0x1a8f('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x1a8f('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x1a8f('0x8')],'allowNull':!![],'defaultValue':null,'comment':_0x1a8f('0x9')},'mandatoryDisposition':{'type':Sequelize[_0x1a8f('0x7')],'defaultValue':![],'comment':_0x1a8f('0xa'),'set':function(_0xae4369){if(!_0xae4369)this[_0x1a8f('0xb')]('mandatoryDispositionPauseId',null);this[_0x1a8f('0xb')](_0x1a8f('0xc'),_0xae4369);}}};
\ No newline at end of file
+var _0xc86e=['BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','STRING','name','generate','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0x2e9782,_0xe29fa2){var _0x174ed2=function(_0x4a7610){while(--_0x4a7610){_0x2e9782['push'](_0x2e9782['shift']());}};_0x174ed2(++_0xe29fa2);}(_0xc86e,0x1da));var _0xec86=function(_0x125c7a,_0x5285b8){_0x125c7a=_0x125c7a-0x0;var _0x47f5d7=_0xc86e[_0x125c7a];return _0x47f5d7;};'use strict';var Sequelize=require(_0xec86('0x0'));var rs=require(_0xec86('0x1'));module['exports']={'name':{'type':Sequelize[_0xec86('0x2')],'unique':_0xec86('0x3'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0xec86('0x2')],'defaultValue':function(){return rs[_0xec86('0x4')]();}},'replyUri':{'type':Sequelize[_0xec86('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xec86('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xec86('0x5')],'defaultValue':function(){return _0xec86('0x6');}},'notificationSound':{'type':Sequelize[_0xec86('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xec86('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xec86('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize[_0xec86('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xec86('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xec86('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xec86('0x8')],'allowNull':!![],'defaultValue':null,'comment':_0xec86('0x9')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x4d6c5f){if(!_0x4d6c5f)this[_0xec86('0xa')](_0xec86('0xb'),null);this[_0xec86('0xa')](_0xec86('0xc'),_0x4d6c5f);}}};
\ No newline at end of file
index c7fcce9..53fbaf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa548=['stringify','error','code','message','result','catch','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','update','then','get','OpenchannelAccounts','UserProfileResource','destroy','stack','name','index','Pause','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','params','length','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','addDisposition','Disposition','getDispositions','OpenchannelAccountId','removeDispositions','addAnswer','getAnswers','findOne','CannedAnswer','removeAnswers','ids','notify','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','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','List','OpenchannelApplication','Applications','account','applications','orderBy','priority','asc','Contacts','firstName','threadId','externalUrl','OpenchannelInteraction','ContactId','spread','contact','messageId','interaction','created','autoclose','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','startRouting','Start','EventManager','addApplications','transaction','sequelize','Transaction','READ_COMMITTED','bulkCreate','findAndCountAll','finally','send','getApplications','getInteractions','Owner','fullname','Tag','Tags','color','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','getAgents','CmList','DESC','Messages','dataValues','push','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelAccount.socket','register','client','http','request','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xa548,0x9a));var _0x8a54=function(_0x384a1e,_0x164935){_0x384a1e=_0x384a1e-0x0;var _0x5308fa=_0xa548[_0x384a1e];return _0x5308fa;};'use strict';var emlformat=require(_0x8a54('0x0'));var rimraf=require(_0x8a54('0x1'));var zipdir=require(_0x8a54('0x2'));var jsonpatch=require(_0x8a54('0x3'));var rp=require(_0x8a54('0x4'));var moment=require(_0x8a54('0x5'));var BPromise=require(_0x8a54('0x6'));var Mustache=require(_0x8a54('0x7'));var util=require(_0x8a54('0x8'));var path=require(_0x8a54('0x9'));var sox=require('sox');var csv=require(_0x8a54('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8a54('0xb'));var _=require(_0x8a54('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8a54('0xa'));var querystring=require(_0x8a54('0xd'));var Papa=require(_0x8a54('0xe'));var Redis=require('ioredis');var authService=require(_0x8a54('0xf'));var qs=require(_0x8a54('0x10'));var as=require(_0x8a54('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8a54('0x12'));var utils=require('../../config/utils');var config=require(_0x8a54('0x13'));var licenseUtil=require(_0x8a54('0x14'));var db=require(_0x8a54('0x15'))['db'];config[_0x8a54('0x16')]=_[_0x8a54('0x17')](config[_0x8a54('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0x8a54('0x18'))(new Redis(config[_0x8a54('0x16')]));require(_0x8a54('0x19'))[_0x8a54('0x1a')](socket);var jayson=require('jayson/promise');var client=jayson[_0x8a54('0x1b')][_0x8a54('0x1c')]({'port':0x232c});var client9002=jayson[_0x8a54('0x1b')][_0x8a54('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x5759d1,_0x244a1e,_0x509734,_0x2e3d54){return new BPromise(function(_0x17777c,_0x4fb432){var _0x43bc66=_0x2e3d54||client;return _0x43bc66[_0x8a54('0x1d')](_0x5759d1,_0x509734)['then'](function(_0x225197){logger[_0x8a54('0x1e')](_0x8a54('0x1f'),_0x244a1e,_0x8a54('0x20'));logger[_0x8a54('0x21')](_0x8a54('0x22'),_0x244a1e,_0x8a54('0x20'),JSON[_0x8a54('0x23')](_0x225197));if(_0x225197[_0x8a54('0x24')]){if(_0x225197[_0x8a54('0x24')][_0x8a54('0x25')]===0x1f4){logger[_0x8a54('0x24')]('OpenchannelAccount,\x20%s,\x20%s',_0x244a1e,_0x225197[_0x8a54('0x24')][_0x8a54('0x26')]);return _0x4fb432(_0x225197[_0x8a54('0x24')][_0x8a54('0x26')]);}logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x244a1e,_0x225197[_0x8a54('0x24')]['message']);return _0x17777c(_0x225197[_0x8a54('0x24')]['message']);}else{logger[_0x8a54('0x1e')]('OpenchannelAccount,\x20%s,\x20%s',_0x244a1e,_0x8a54('0x20'));_0x17777c(_0x225197[_0x8a54('0x27')]['message']);}})[_0x8a54('0x28')](function(_0x3c0b08){logger['error'](_0x8a54('0x1f'),_0x244a1e,_0x3c0b08);_0x4fb432(_0x3c0b08);});});}function respondWithStatusCode(_0x113f0b,_0xcc0eae){_0xcc0eae=_0xcc0eae||0xcc;return function(_0x4897c6){if(_0x4897c6){return _0x113f0b[_0x8a54('0x29')](_0xcc0eae);}return _0x113f0b['status'](_0xcc0eae)[_0x8a54('0x2a')]();};}function respondWithResult(_0x588852,_0x5349b3){_0x5349b3=_0x5349b3||0xc8;return function(_0x5bd02e){if(_0x5bd02e){return _0x588852['status'](_0x5349b3)[_0x8a54('0x2b')](_0x5bd02e);}};}function respondWithFilteredResult(_0x2ee74d,_0xbf4630){return function(_0x57f2e2){if(_0x57f2e2){var _0x465edc=typeof _0xbf4630[_0x8a54('0x2c')]===_0x8a54('0x2d')&&typeof _0xbf4630[_0x8a54('0x2e')]===_0x8a54('0x2d');var _0x16f8f7=_0x57f2e2[_0x8a54('0x2f')];var _0x1f6834=_0x465edc?0x0:_0xbf4630[_0x8a54('0x2c')];var _0x201265=_0x465edc?_0x57f2e2[_0x8a54('0x2f')]:_0xbf4630['offset']+_0xbf4630[_0x8a54('0x2e')];var _0x2e0d9b;if(_0x201265>=_0x16f8f7){_0x201265=_0x16f8f7;_0x2e0d9b=0xc8;}else{_0x2e0d9b=0xce;}_0x2ee74d[_0x8a54('0x30')](_0x2e0d9b);return _0x2ee74d[_0x8a54('0x31')](_0x8a54('0x32'),_0x1f6834+'-'+_0x201265+'/'+_0x16f8f7)[_0x8a54('0x2b')](_0x57f2e2);}return null;};}function patchUpdates(_0x49d01b){return function(_0x3f42ba){try{jsonpatch[_0x8a54('0x33')](_0x3f42ba,_0x49d01b,!![]);}catch(_0x3a0e16){return BPromise['reject'](_0x3a0e16);}return _0x3f42ba['save']();};}function saveUpdates(_0x3e75c8,_0x131f34){return function(_0x2f04a8){if(_0x2f04a8){return _0x2f04a8[_0x8a54('0x34')](_0x3e75c8)['then'](function(_0xdcbd17){return _0xdcbd17;});}return null;};}function removeEntity(_0x3fe922,_0x61df9e){return function(_0x46844a){if(_0x46844a){return _0x46844a['destroy']()[_0x8a54('0x35')](function(){var _0x9117e9=_0x46844a[_0x8a54('0x36')]({'plain':!![]});var _0x3fb427=_0x8a54('0x37');return db[_0x8a54('0x38')][_0x8a54('0x39')]({'where':{'type':_0x3fb427,'resourceId':_0x9117e9['id']}})[_0x8a54('0x35')](function(){return _0x46844a;});})['then'](function(){_0x3fe922[_0x8a54('0x30')](0xcc)['end']();});}};}function handleEntityNotFound(_0x118dd3,_0x43cef6){return function(_0x28b046){if(!_0x28b046){_0x118dd3[_0x8a54('0x29')](0x194);}return _0x28b046;};}function handleError(_0x5b61b1,_0x5491c6){_0x5491c6=_0x5491c6||0x1f4;return function(_0x554ca8){logger[_0x8a54('0x24')](_0x554ca8[_0x8a54('0x3a')]);if(_0x554ca8[_0x8a54('0x3b')]){delete _0x554ca8[_0x8a54('0x3b')];}_0x5b61b1[_0x8a54('0x30')](_0x5491c6)['send'](_0x554ca8);};}exports[_0x8a54('0x3c')]=function(_0xddc5c6,_0x2a9fc5){var _0x2c9683={'include':[{'model':db[_0x8a54('0x3d')],'as':_0x8a54('0x3e')}]},_0x345594={},_0x216262={'count':0x0,'rows':[]};var _0xafd49=_[_0x8a54('0x3f')](db[_0x8a54('0x40')][_0x8a54('0x41')],function(_0x2c97d8){return{'name':_0x2c97d8['fieldName'],'type':_0x2c97d8['type'][_0x8a54('0x42')]};});_0x345594[_0x8a54('0x43')]=_[_0x8a54('0x3f')](_0xafd49,'name');_0x345594['query']=_[_0x8a54('0x44')](_0xddc5c6[_0x8a54('0x45')]);_0x345594[_0x8a54('0x46')]=_[_0x8a54('0x47')](_0x345594['model'],_0x345594['query']);_0x2c9683[_0x8a54('0x48')]=_[_0x8a54('0x47')](_0x345594[_0x8a54('0x43')],qs[_0x8a54('0x49')](_0xddc5c6[_0x8a54('0x45')]['fields']));_0x2c9683[_0x8a54('0x48')]=_0x2c9683[_0x8a54('0x48')]['length']?_0x2c9683[_0x8a54('0x48')]:_0x345594['model'];if(!_0xddc5c6[_0x8a54('0x45')][_0x8a54('0x4a')](_0x8a54('0x4b'))){_0x2c9683[_0x8a54('0x2e')]=qs['limit'](_0xddc5c6[_0x8a54('0x45')]['limit']);_0x2c9683[_0x8a54('0x2c')]=qs[_0x8a54('0x2c')](_0xddc5c6['query'][_0x8a54('0x2c')]);}_0x2c9683[_0x8a54('0x4c')]=qs['sort'](_0xddc5c6['query'][_0x8a54('0x4d')]);_0x2c9683['where']=qs['filters'](_[_0x8a54('0x4e')](_0xddc5c6['query'],_0x345594[_0x8a54('0x46')]),_0xafd49);if(_0xddc5c6[_0x8a54('0x45')][_0x8a54('0x4f')]){_0x2c9683[_0x8a54('0x50')]=_[_0x8a54('0x51')](_0x2c9683[_0x8a54('0x50')],{'$or':_[_0x8a54('0x3f')](_0xafd49,function(_0x376341){if(_0x376341[_0x8a54('0x52')]!==_0x8a54('0x53')){var _0x5c22df={};_0x5c22df[_0x376341[_0x8a54('0x3b')]]={'$like':'%'+_0xddc5c6[_0x8a54('0x45')]['filter']+'%'};return _0x5c22df;}})});}_0x2c9683=_['merge']({},_0x2c9683,_0xddc5c6[_0x8a54('0x54')]);var _0x369131={'where':_0x2c9683[_0x8a54('0x50')]};return db[_0x8a54('0x40')]['count'](_0x369131)['then'](function(_0x844ed1){_0x216262['count']=_0x844ed1;if(_0xddc5c6[_0x8a54('0x45')][_0x8a54('0x55')]){_0x2c9683[_0x8a54('0x56')]=[{'all':!![]}];}return db['OpenchannelAccount'][_0x8a54('0x57')](_0x2c9683);})[_0x8a54('0x35')](function(_0x54284e){_0x216262[_0x8a54('0x58')]=_0x54284e;return _0x216262;})[_0x8a54('0x35')](respondWithFilteredResult(_0x2a9fc5,_0x2c9683))[_0x8a54('0x28')](handleError(_0x2a9fc5,null));};exports['show']=function(_0x687383,_0x5d4c99){var _0x4136c6={'raw':![],'where':{'id':_0x687383[_0x8a54('0x59')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x6608c4={};_0x6608c4[_0x8a54('0x43')]=_[_0x8a54('0x44')](db[_0x8a54('0x40')][_0x8a54('0x41')]);_0x6608c4[_0x8a54('0x45')]=_['keys'](_0x687383[_0x8a54('0x45')]);_0x6608c4[_0x8a54('0x46')]=_[_0x8a54('0x47')](_0x6608c4[_0x8a54('0x43')],_0x6608c4['query']);_0x4136c6['attributes']=_[_0x8a54('0x47')](_0x6608c4['model'],qs[_0x8a54('0x49')](_0x687383[_0x8a54('0x45')]['fields']));_0x4136c6[_0x8a54('0x48')]=_0x4136c6['attributes'][_0x8a54('0x5a')]?_0x4136c6['attributes']:_0x6608c4[_0x8a54('0x43')];if(_0x687383['query'][_0x8a54('0x55')]){_0x4136c6[_0x8a54('0x56')]=[{'all':!![]}];}_0x4136c6=_[_0x8a54('0x51')]({},_0x4136c6,_0x687383[_0x8a54('0x54')]);return db[_0x8a54('0x40')][_0x8a54('0x5b')](_0x4136c6)[_0x8a54('0x35')](handleEntityNotFound(_0x5d4c99,null))[_0x8a54('0x35')](respondWithResult(_0x5d4c99,null))[_0x8a54('0x28')](handleError(_0x5d4c99,null));};exports[_0x8a54('0x5c')]=function(_0x2738c1,_0x35a2c7){return db[_0x8a54('0x40')][_0x8a54('0x5c')](_0x2738c1['body'],{})[_0x8a54('0x35')](function(_0x126360){var _0x157d2c=_0x2738c1[_0x8a54('0x5d')][_0x8a54('0x36')]({'plain':!![]});if(!_0x157d2c)throw new Error(_0x8a54('0x5e'));if(_0x157d2c[_0x8a54('0x5f')]==='user'){var _0x3ea902=_0x126360[_0x8a54('0x36')]({'plain':!![]});var _0x2dcd67=_0x8a54('0x37');return db[_0x8a54('0x60')]['find']({'where':{'name':_0x2dcd67,'userProfileId':_0x157d2c[_0x8a54('0x61')]},'raw':!![]})[_0x8a54('0x35')](function(_0x205b09){if(_0x205b09&&_0x205b09['autoAssociation']===0x0){return db[_0x8a54('0x38')]['create']({'name':_0x3ea902[_0x8a54('0x3b')],'resourceId':_0x3ea902['id'],'type':_0x205b09[_0x8a54('0x3b')],'sectionId':_0x205b09['id']},{})['then'](function(){return _0x126360;});}else{return _0x126360;}})[_0x8a54('0x28')](function(_0x194002){logger[_0x8a54('0x24')](_0x8a54('0x62'),_0x194002);throw _0x194002;});}return _0x126360;})[_0x8a54('0x35')](respondWithResult(_0x35a2c7,0xc9))[_0x8a54('0x28')](handleError(_0x35a2c7,null));};exports[_0x8a54('0x34')]=function(_0x561641,_0x2a1816){if(_0x561641[_0x8a54('0x63')]['id']){delete _0x561641[_0x8a54('0x63')]['id'];}return db[_0x8a54('0x40')][_0x8a54('0x5b')]({'where':{'id':_0x561641[_0x8a54('0x59')]['id']},'include':[{'model':db[_0x8a54('0x3d')],'as':_0x8a54('0x3e')}]})[_0x8a54('0x35')](handleEntityNotFound(_0x2a1816,null))[_0x8a54('0x35')](saveUpdates(_0x561641[_0x8a54('0x63')],null))[_0x8a54('0x35')](respondWithResult(_0x2a1816,null))[_0x8a54('0x28')](handleError(_0x2a1816,null));};exports[_0x8a54('0x39')]=function(_0x556188,_0x4df1cf){return db[_0x8a54('0x40')]['find']({'where':{'id':_0x556188[_0x8a54('0x59')]['id']}})['then'](handleEntityNotFound(_0x4df1cf,null))['then'](removeEntity(_0x4df1cf,null))[_0x8a54('0x28')](handleError(_0x4df1cf,null));};exports[_0x8a54('0x64')]=function(_0x49ef8e,_0xb1532f){return db['OpenchannelAccount']['describe']()['then'](respondWithResult(_0xb1532f,null))[_0x8a54('0x28')](handleError(_0xb1532f,null));};exports[_0x8a54('0x65')]=function(_0x10d695,_0x2e012d,_0x5e667c){if(_0x10d695['body']['id']){delete _0x10d695[_0x8a54('0x63')]['id'];}return db[_0x8a54('0x40')][_0x8a54('0x5b')]({'where':{'id':_0x10d695[_0x8a54('0x59')]['id']}})[_0x8a54('0x35')](handleEntityNotFound(_0x2e012d,null))['then'](function(_0x203d7f){if(_0x203d7f){_0x10d695[_0x8a54('0x63')]['OpenchannelAccountId']=_0x203d7f['id'];return db[_0x8a54('0x66')][_0x8a54('0x5c')](_0x10d695[_0x8a54('0x63')]);}})[_0x8a54('0x35')](respondWithResult(_0x2e012d,null))[_0x8a54('0x28')](handleError(_0x2e012d,null));};exports[_0x8a54('0x67')]=function(_0x28445a,_0x2c3c97,_0x5d0376){var _0x3e0ed0={'raw':![],'where':{}};var _0x31debe={};var _0x88945={'count':0x0,'rows':[]};return db[_0x8a54('0x40')]['findOne']({'where':{'id':_0x28445a['params']['id']}})['then'](handleEntityNotFound(_0x2c3c97,null))[_0x8a54('0x35')](function(_0x79f49a){if(_0x79f49a){_0x31debe[_0x8a54('0x43')]=_[_0x8a54('0x44')](db[_0x8a54('0x66')]['rawAttributes']);_0x31debe[_0x8a54('0x45')]=_['keys'](_0x28445a['query']);_0x31debe[_0x8a54('0x46')]=_[_0x8a54('0x47')](_0x31debe[_0x8a54('0x43')],_0x31debe[_0x8a54('0x45')]);_0x3e0ed0[_0x8a54('0x48')]=_[_0x8a54('0x47')](_0x31debe['model'],qs[_0x8a54('0x49')](_0x28445a[_0x8a54('0x45')]['fields']));_0x3e0ed0[_0x8a54('0x48')]=_0x3e0ed0[_0x8a54('0x48')][_0x8a54('0x5a')]?_0x3e0ed0['attributes']:_0x31debe[_0x8a54('0x43')];if(!_0x28445a[_0x8a54('0x45')][_0x8a54('0x4a')](_0x8a54('0x4b'))){_0x3e0ed0['limit']=qs['limit'](_0x28445a[_0x8a54('0x45')][_0x8a54('0x2e')]);_0x3e0ed0['offset']=qs[_0x8a54('0x2c')](_0x28445a[_0x8a54('0x45')][_0x8a54('0x2c')]);}_0x3e0ed0[_0x8a54('0x4c')]=qs['sort'](_0x28445a[_0x8a54('0x45')][_0x8a54('0x4d')]);_0x3e0ed0[_0x8a54('0x50')]=qs[_0x8a54('0x46')](_[_0x8a54('0x4e')](_0x28445a[_0x8a54('0x45')],_0x31debe['filters']));_0x3e0ed0[_0x8a54('0x50')][_0x8a54('0x68')]=_0x79f49a['id'];if(_0x28445a['query'][_0x8a54('0x4f')]){_0x3e0ed0[_0x8a54('0x50')]=_[_0x8a54('0x51')](_0x3e0ed0[_0x8a54('0x50')],{'$or':_[_0x8a54('0x3f')](_0x3e0ed0['attributes'],function(_0x9a74aa){var _0x5c39fd={};_0x5c39fd[_0x9a74aa]={'$like':'%'+_0x28445a[_0x8a54('0x45')]['filter']+'%'};return _0x5c39fd;})});}_0x3e0ed0=_[_0x8a54('0x51')]({},_0x3e0ed0,_0x28445a[_0x8a54('0x54')]);return db[_0x8a54('0x66')][_0x8a54('0x2f')]({'where':_0x3e0ed0[_0x8a54('0x50')]})[_0x8a54('0x35')](function(_0x24ea5b){_0x88945[_0x8a54('0x2f')]=_0x24ea5b;if(_0x28445a[_0x8a54('0x45')][_0x8a54('0x55')]){_0x3e0ed0['include']=[{'all':!![]}];}return db[_0x8a54('0x66')][_0x8a54('0x57')](_0x3e0ed0);})[_0x8a54('0x35')](function(_0x5c3bcf){_0x88945[_0x8a54('0x58')]=_0x5c3bcf;return _0x88945;});}})[_0x8a54('0x35')](respondWithFilteredResult(_0x2c3c97,_0x3e0ed0))[_0x8a54('0x28')](handleError(_0x2c3c97,null));};exports[_0x8a54('0x69')]=function(_0x286afb,_0xb2f76a,_0x2154d0){return db['OpenchannelAccount'][_0x8a54('0x5b')]({'where':{'id':_0x286afb[_0x8a54('0x59')]['id']}})[_0x8a54('0x35')](handleEntityNotFound(_0xb2f76a,null))[_0x8a54('0x35')](function(_0xdfd263){if(_0xdfd263){return _0xdfd263[_0x8a54('0x69')](_0x286afb[_0x8a54('0x45')]['ids']);}})[_0x8a54('0x35')](respondWithStatusCode(_0xb2f76a,null))[_0x8a54('0x28')](handleError(_0xb2f76a,null));};exports[_0x8a54('0x6a')]=function(_0x2b4b3d,_0x1a9cca,_0x31c5ea){if(_0x2b4b3d[_0x8a54('0x63')]['id']){delete _0x2b4b3d[_0x8a54('0x63')]['id'];}return db['OpenchannelAccount']['find']({'where':{'id':_0x2b4b3d[_0x8a54('0x59')]['id']}})[_0x8a54('0x35')](handleEntityNotFound(_0x1a9cca,null))[_0x8a54('0x35')](function(_0x470811){if(_0x470811){_0x2b4b3d['body']['OpenchannelAccountId']=_0x470811['id'];return db['CannedAnswer'][_0x8a54('0x5c')](_0x2b4b3d[_0x8a54('0x63')]);}})[_0x8a54('0x35')](respondWithResult(_0x1a9cca,null))['catch'](handleError(_0x1a9cca,null));};exports[_0x8a54('0x6b')]=function(_0x31f011,_0x4a32b7,_0x2d0587){var _0x5dcea5={'raw':![],'where':{}};var _0x30cf76={};var _0x18459f={'count':0x0,'rows':[]};return db[_0x8a54('0x40')][_0x8a54('0x6c')]({'where':{'id':_0x31f011[_0x8a54('0x59')]['id']}})[_0x8a54('0x35')](handleEntityNotFound(_0x4a32b7,null))[_0x8a54('0x35')](function(_0xd6cb10){if(_0xd6cb10){_0x30cf76[_0x8a54('0x43')]=_['keys'](db['CannedAnswer']['rawAttributes']);_0x30cf76[_0x8a54('0x45')]=_[_0x8a54('0x44')](_0x31f011['query']);_0x30cf76['filters']=_[_0x8a54('0x47')](_0x30cf76[_0x8a54('0x43')],_0x30cf76[_0x8a54('0x45')]);_0x5dcea5[_0x8a54('0x48')]=_[_0x8a54('0x47')](_0x30cf76['model'],qs[_0x8a54('0x49')](_0x31f011[_0x8a54('0x45')]['fields']));_0x5dcea5[_0x8a54('0x48')]=_0x5dcea5[_0x8a54('0x48')]['length']?_0x5dcea5[_0x8a54('0x48')]:_0x30cf76[_0x8a54('0x43')];if(!_0x31f011[_0x8a54('0x45')][_0x8a54('0x4a')](_0x8a54('0x4b'))){_0x5dcea5[_0x8a54('0x2e')]=qs[_0x8a54('0x2e')](_0x31f011[_0x8a54('0x45')][_0x8a54('0x2e')]);_0x5dcea5[_0x8a54('0x2c')]=qs[_0x8a54('0x2c')](_0x31f011['query']['offset']);}_0x5dcea5[_0x8a54('0x4c')]=qs[_0x8a54('0x4d')](_0x31f011[_0x8a54('0x45')]['sort']);_0x5dcea5[_0x8a54('0x50')]=qs['filters'](_[_0x8a54('0x4e')](_0x31f011[_0x8a54('0x45')],_0x30cf76['filters']));_0x5dcea5[_0x8a54('0x50')]['OpenchannelAccountId']=_0xd6cb10['id'];if(_0x31f011[_0x8a54('0x45')][_0x8a54('0x4f')]){_0x5dcea5[_0x8a54('0x50')]=_['merge'](_0x5dcea5[_0x8a54('0x50')],{'$or':_[_0x8a54('0x3f')](_0x5dcea5[_0x8a54('0x48')],function(_0x79e0d4){var _0x2a75ad={};_0x2a75ad[_0x79e0d4]={'$like':'%'+_0x31f011[_0x8a54('0x45')][_0x8a54('0x4f')]+'%'};return _0x2a75ad;})});}_0x5dcea5=_[_0x8a54('0x51')]({},_0x5dcea5,_0x31f011[_0x8a54('0x54')]);return db['CannedAnswer'][_0x8a54('0x2f')]({'where':_0x5dcea5[_0x8a54('0x50')]})[_0x8a54('0x35')](function(_0x250e8f){_0x18459f[_0x8a54('0x2f')]=_0x250e8f;if(_0x31f011[_0x8a54('0x45')][_0x8a54('0x55')]){_0x5dcea5[_0x8a54('0x56')]=[{'all':!![]}];}return db[_0x8a54('0x6d')][_0x8a54('0x57')](_0x5dcea5);})[_0x8a54('0x35')](function(_0x276f0a){_0x18459f[_0x8a54('0x58')]=_0x276f0a;return _0x18459f;});}})[_0x8a54('0x35')](respondWithFilteredResult(_0x4a32b7,_0x5dcea5))[_0x8a54('0x28')](handleError(_0x4a32b7,null));};exports[_0x8a54('0x6e')]=function(_0x5713ae,_0x2b09c2,_0x1b2cb5){return db['OpenchannelAccount'][_0x8a54('0x5b')]({'where':{'id':_0x5713ae['params']['id']}})[_0x8a54('0x35')](handleEntityNotFound(_0x2b09c2,null))[_0x8a54('0x35')](function(_0x164d3c){if(_0x164d3c){return _0x164d3c[_0x8a54('0x6e')](_0x5713ae[_0x8a54('0x45')][_0x8a54('0x6f')]);}})['then'](respondWithStatusCode(_0x2b09c2,null))['catch'](handleError(_0x2b09c2,null));};exports[_0x8a54('0x70')]=function(_0x1541ae,_0xb11fda,_0xe10824){var _0x1e405d={'body':_0x1541ae[_0x8a54('0x63')],'channel':'openchannel'};var _0x104105=[];var _0x588a7e=[];var _0x3198ab={};var _0x2f81b6=![];return db[_0x8a54('0x71')][_0x8a54('0x64')]()['then'](function(_0x29c02e){if(!_0x29c02e){throw new db[(_0x8a54('0x72'))][(_0x8a54('0x73'))](_0x8a54('0x74'));}_0x104105=_[_0x8a54('0x75')](_[_0x8a54('0x44')](_0x29c02e),[_0x8a54('0x76'),'updatedAt']);_0x588a7e=_[_0x8a54('0x75')](_['keys'](_0x29c02e),[_0x8a54('0x76'),_0x8a54('0x77'),'CompanyId',_0x8a54('0x78')]);if(_0x1541ae[_0x8a54('0x63')]['id']){delete _0x1541ae[_0x8a54('0x63')]['id'];}if(_['isNil'](_0x1541ae['body'][_0x8a54('0x79')])){throw new db[(_0x8a54('0x72'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0x8a54('0x7a')](_0x1541ae[_0x8a54('0x63')][_0x8a54('0x63')])||_0x1541ae[_0x8a54('0x63')][_0x8a54('0x63')]===''){throw new db[(_0x8a54('0x72'))][(_0x8a54('0x73'))](_0x8a54('0x7b'));}if(_[_0x8a54('0x7a')](_0x1541ae[_0x8a54('0x63')][_0x8a54('0x7c')])){throw new db[(_0x8a54('0x72'))][(_0x8a54('0x73'))](_0x8a54('0x7d')+_0x588a7e);}if(!_[_0x8a54('0x7e')](_0x588a7e,_0x1541ae['body'][_0x8a54('0x7c')])){throw new db[(_0x8a54('0x72'))][(_0x8a54('0x73'))](_0x8a54('0x7f')+_0x588a7e);}_0x3198ab[_0x1541ae[_0x8a54('0x63')][_0x8a54('0x7c')]]=_0x1541ae[_0x8a54('0x63')]['from'];})[_0x8a54('0x35')](function(){return db[_0x8a54('0x40')][_0x8a54('0x5b')]({'where':{'id':_0x1541ae[_0x8a54('0x59')]['id']},'include':[{'model':db['CmList'],'as':_0x8a54('0x80'),'include':[{'model':db[_0x8a54('0x71')],'as':'Contacts','where':_0x3198ab,'limit':0x1,'order':[[_0x8a54('0x77'),'DESC']]}]},{'model':db[_0x8a54('0x81')],'as':_0x8a54('0x82')}]});})[_0x8a54('0x35')](handleEntityNotFound(_0xb11fda,null))[_0x8a54('0x35')](function(_0x1d1fe7){if(_0x1d1fe7&&_0x1d1fe7['List']){_0x1e405d[_0x8a54('0x83')]=_0x1d1fe7;_0x1e405d['applications']=_0x1d1fe7['Applications'];_0x1e405d['list']=_0x1d1fe7[_0x8a54('0x80')];_0x1e405d[_0x8a54('0x84')]=_[_0x8a54('0x85')](_0x1e405d['applications'],[_0x8a54('0x86')],[_0x8a54('0x87')]);if(_0x1e405d['account'][_0x8a54('0x82')]){delete _0x1e405d[_0x8a54('0x83')]['Applications'];}if(_0x1e405d[_0x8a54('0x83')]['List']&&_0x1e405d[_0x8a54('0x83')][_0x8a54('0x80')][_0x8a54('0x88')][_0x8a54('0x5a')]){return _0x1e405d['account'][_0x8a54('0x80')][_0x8a54('0x88')][0x0];}var _0x340b33=_[_0x8a54('0x17')](_0x1541ae[_0x8a54('0x63')],{'firstName':_0x1541ae[_0x8a54('0x63')][_0x8a54('0x79')],'ListId':_0x1d1fe7[_0x8a54('0x78')]});_0x340b33[_0x1541ae[_0x8a54('0x63')]['mapKey']]=_0x1541ae[_0x8a54('0x63')]['from'];return db[_0x8a54('0x71')][_0x8a54('0x5c')](_0x340b33,{'fields':_0x104105,'raw':!![]});}})[_0x8a54('0x35')](handleEntityNotFound(_0xb11fda,null))[_0x8a54('0x35')](function(_0x5a8a81){_0x1e405d['contact']=_0x5a8a81;if(_0x5a8a81){var _0x5dce84={'ContactId':_0x5a8a81['id'],'OpenchannelAccountId':_0x1541ae[_0x8a54('0x59')]['id'],'from':(_0x5a8a81[_0x8a54('0x89')]||'')+'\x20'+(_0x5a8a81['lastName']||'')};var _0x240bfc={'OpenchannelAccountId':_0x1541ae[_0x8a54('0x59')]['id'],'closed':![]};if(_0x1541ae[_0x8a54('0x63')][_0x8a54('0x8a')]){_0x240bfc['threadId']=_0x1541ae['body'][_0x8a54('0x8a')];return db['OpenchannelInteraction']['find']({'where':_0x240bfc})[_0x8a54('0x35')](function(_0x4a9f73){if(_0x4a9f73){return[_0x4a9f73,![]];}_0x5dce84[_0x8a54('0x8a')]=_0x1541ae['body'][_0x8a54('0x8a')];_0x5dce84[_0x8a54('0x8b')]=_0x1541ae[_0x8a54('0x63')][_0x8a54('0x8b')];return db[_0x8a54('0x8c')][_0x8a54('0x5c')](_0x5dce84)[_0x8a54('0x35')](function(_0x226d95){return[_0x226d95,!![]];});});}else{_0x240bfc[_0x8a54('0x8a')]=null;}_0x240bfc[_0x8a54('0x8d')]=_0x5a8a81['id'];return db[_0x8a54('0x8c')]['find']({'where':_0x240bfc})[_0x8a54('0x35')](function(_0x5896f4){if(_0x5896f4){return[_0x5896f4,![]];}return db[_0x8a54('0x8c')][_0x8a54('0x5c')](_0x5dce84)['then'](function(_0x2ea5b5){return[_0x2ea5b5,!![]];});});}})[_0x8a54('0x8e')](function(_0x561820,_0x1d9775){if(_0x561820){_0x2f81b6=_0x1d9775;if(!_0x1d9775){var _0x119cd7={'from':(_0x1e405d[_0x8a54('0x8f')][_0x8a54('0x89')]||'')+'\x20'+(_0x1e405d['contact']['lastName']||'')};if(_0x1541ae['body'][_0x8a54('0x8a')]&&_0x1541ae[_0x8a54('0x63')][_0x8a54('0x90')]&&_0x1541ae[_0x8a54('0x63')][_0x8a54('0x8a')]!=_0x1541ae[_0x8a54('0x63')][_0x8a54('0x90')]){_0x119cd7[_0x8a54('0x8a')]=_0x1541ae['body']['messageId'];}return _0x561820['update'](_0x119cd7);}else{return _0x561820;}}})[_0x8a54('0x35')](function(_0x39992c){_0x1e405d['interaction']=_0x39992c[_0x8a54('0x36')]({'plain':!![]});_0x1e405d['interaction']['created']=_0x2f81b6;if(_0x1e405d[_0x8a54('0x91')][_0x8a54('0x92')]){if(_0x1e405d[_0x8a54('0x83')][_0x8a54('0x93')]){_0x1e405d[_0x8a54('0x84')]['push']({'id':0x0,'priority':_0x1e405d[_0x8a54('0x84')][_0x8a54('0x5a')]+0x1,'app':_0x8a54('0x94'),'appdata':_0x8a54('0x95'),'interval':_0x8a54('0x96')});}}return db[_0x8a54('0x97')][_0x8a54('0x5c')]({'body':_0x1541ae[_0x8a54('0x63')][_0x8a54('0x63')],'OpenchannelAccountId':_0x1541ae[_0x8a54('0x59')]['id'],'OpenchannelInteractionId':_0x39992c['id'],'direction':'in','ContactId':_0x1e405d[_0x8a54('0x8f')]['id'],'AttachmentId':_0x1541ae['body'][_0x8a54('0x98')]});})[_0x8a54('0x35')](function(_0x23c7b4){_0x1e405d[_0x8a54('0x26')]=_0x23c7b4;if(_0x1e405d[_0x8a54('0x91')][_0x8a54('0x99')]){return db[_0x8a54('0x9a')][_0x8a54('0x5b')]({'attributes':['id','name'],'where':{'id':_0x1e405d[_0x8a54('0x91')][_0x8a54('0x99')]}})[_0x8a54('0x35')](function(_0x3a1d79){if(_0x3a1d79){_0x1e405d[_0x8a54('0x84')][_0x8a54('0x9b')]({'id':0x0,'priority':0x0,'app':_0x8a54('0x9c'),'appdata':_0x3a1d79['name']+','+(_0x1e405d[_0x8a54('0x83')][_0x8a54('0x9d')]||0xa),'interval':_0x8a54('0x96')});_0x1e405d[_0x8a54('0x9e')]=![];}return respondWithRpcPromise('Start',_0x8a54('0x9f'),_0x1e405d);});}return respondWithRpcPromise(_0x8a54('0xa0'),_0x8a54('0x9f'),_0x1e405d);})[_0x8a54('0x35')](function(_0x59e53a){respondWithRpcPromise(_0x8a54('0xa1'),'EventManager',{'event':_0x8a54('0x70'),'message':_0x59e53a},client9002);return _0x59e53a;})['then'](respondWithResult(_0xb11fda,null))[_0x8a54('0x28')](handleError(_0xb11fda,null));};exports[_0x8a54('0xa2')]=function(_0x4a85f6,_0x5adc72){var _0xa000c7=_0x4a85f6[_0x8a54('0x59')]['id'];var _0x1a2ac0=_0x4a85f6[_0x8a54('0x63')];var _0x1f9e57=0xc8;var _0xc2876f=null;return db['sequelize'][_0x8a54('0xa3')]({'isolationLevel':db[_0x8a54('0xa4')][_0x8a54('0xa5')]['ISOLATION_LEVELS'][_0x8a54('0xa6')]},function(_0x36059c){return db[_0x8a54('0x40')][_0x8a54('0x6c')]({'where':{'id':_0xa000c7},'transaction':_0x36059c})[_0x8a54('0x35')](function(_0x41e68f){if(_0x41e68f){return db[_0x8a54('0x81')][_0x8a54('0x39')]({'where':{'OpenchannelAccountId':_0xa000c7},'transaction':_0x36059c})[_0x8a54('0x35')](function(){var _0x2d3d19=_[_0x8a54('0x3f')](_0x1a2ac0,function(_0x24f760){_0x24f760[_0x8a54('0x68')]=_0xa000c7;return _0x24f760;});return db['OpenchannelApplication'][_0x8a54('0xa7')](_0x2d3d19,{'transaction':_0x36059c});});}else{_0x1f9e57=0x194;_0xc2876f=[];}});})[_0x8a54('0x35')](function(){if(_0x1f9e57!==0x194){return db[_0x8a54('0x81')][_0x8a54('0xa8')]({'where':{'OpenchannelAccountId':_0xa000c7},'order':_0x8a54('0x86')})[_0x8a54('0x35')](function(_0x2a1419){_0xc2876f=_0x2a1419;});}})[_0x8a54('0x28')](function(_0x344a90){_0x1f9e57=0x1f4;logger['error'](_0x344a90[_0x8a54('0x3a')]);if(_0x344a90[_0x8a54('0x3b')]){delete _0x344a90[_0x8a54('0x3b')];}_0xc2876f=_0x344a90;})[_0x8a54('0xa9')](function(){if(_0xc2876f===null){_0x5adc72[_0x8a54('0x29')](_0x1f9e57);}else{if(_0x1f9e57===0x1f4){_0x5adc72[_0x8a54('0x30')](_0x1f9e57)[_0x8a54('0xaa')](_0xc2876f);}else{_0x5adc72[_0x8a54('0x30')](_0x1f9e57)[_0x8a54('0x2b')](_0xc2876f);}}});};exports[_0x8a54('0xab')]=function(_0x22b90e,_0x26f49e,_0x332993){var _0x4a2c91={};var _0x50d196={};var _0x173dab;var _0x5f0600;return db[_0x8a54('0x40')][_0x8a54('0x6c')]({'where':{'id':_0x22b90e[_0x8a54('0x59')]['id']}})[_0x8a54('0x35')](handleEntityNotFound(_0x26f49e,null))['then'](function(_0x27feb5){if(_0x27feb5){_0x173dab=_0x27feb5;_0x50d196[_0x8a54('0x43')]=_['keys'](db['OpenchannelApplication'][_0x8a54('0x41')]);_0x50d196[_0x8a54('0x45')]=_['keys'](_0x22b90e['query']);_0x50d196[_0x8a54('0x46')]=_[_0x8a54('0x47')](_0x50d196[_0x8a54('0x43')],_0x50d196['query']);_0x4a2c91['attributes']=_[_0x8a54('0x47')](_0x50d196[_0x8a54('0x43')],qs[_0x8a54('0x49')](_0x22b90e[_0x8a54('0x45')][_0x8a54('0x49')]));_0x4a2c91[_0x8a54('0x48')]=_0x4a2c91['attributes'][_0x8a54('0x5a')]?_0x4a2c91[_0x8a54('0x48')]:_0x50d196[_0x8a54('0x43')];_0x4a2c91['order']=qs[_0x8a54('0x4d')](_0x22b90e[_0x8a54('0x45')][_0x8a54('0x4d')]);_0x4a2c91['where']=qs[_0x8a54('0x46')](_['pick'](_0x22b90e['query'],_0x50d196['filters']));if(_0x22b90e[_0x8a54('0x45')][_0x8a54('0x4f')]){_0x4a2c91['where']=_[_0x8a54('0x51')](_0x4a2c91[_0x8a54('0x50')],{'$or':_[_0x8a54('0x3f')](_0x4a2c91['attributes'],function(_0x1348ef){var _0x450050={};_0x450050[_0x1348ef]={'$like':'%'+_0x22b90e[_0x8a54('0x45')][_0x8a54('0x4f')]+'%'};return _0x450050;})});}_0x4a2c91=_['merge']({},_0x4a2c91,_0x22b90e[_0x8a54('0x54')]);return _0x173dab['getApplications'](_0x4a2c91);}})['then'](function(_0x35359e){if(_0x35359e){_0x5f0600=_0x35359e[_0x8a54('0x5a')];if(!_0x22b90e['query']['hasOwnProperty'](_0x8a54('0x4b'))){_0x4a2c91[_0x8a54('0x2e')]=qs['limit'](_0x22b90e[_0x8a54('0x45')][_0x8a54('0x2e')]);_0x4a2c91[_0x8a54('0x2c')]=qs[_0x8a54('0x2c')](_0x22b90e[_0x8a54('0x45')][_0x8a54('0x2c')]);}return _0x173dab[_0x8a54('0xab')](_0x4a2c91);}})[_0x8a54('0x35')](function(_0x230ec9){if(_0x230ec9){return _0x230ec9?{'count':_0x5f0600,'rows':_0x230ec9}:null;}})[_0x8a54('0x35')](respondWithResult(_0x26f49e,null))[_0x8a54('0x28')](handleError(_0x26f49e,null));};exports[_0x8a54('0xac')]=function(_0x7cab88,_0x21996e,_0x33a248){var _0x5bddb3={'raw':![],'where':{}};var _0x119ea7={};var _0x526917={'count':0x0,'rows':[]};return db[_0x8a54('0x40')][_0x8a54('0x6c')]({'where':{'id':_0x7cab88[_0x8a54('0x59')]['id']}})[_0x8a54('0x35')](handleEntityNotFound(_0x21996e,null))[_0x8a54('0x35')](function(_0x127b7c){if(_0x127b7c){_0x119ea7[_0x8a54('0x43')]=_[_0x8a54('0x44')](db[_0x8a54('0x8c')][_0x8a54('0x41')]);_0x119ea7[_0x8a54('0x45')]=_[_0x8a54('0x44')](_0x7cab88[_0x8a54('0x45')]);_0x119ea7['filters']=_[_0x8a54('0x47')](_0x119ea7[_0x8a54('0x43')],_0x119ea7['query']);_0x5bddb3[_0x8a54('0x48')]=_[_0x8a54('0x47')](_0x119ea7[_0x8a54('0x43')],qs['fields'](_0x7cab88[_0x8a54('0x45')][_0x8a54('0x49')]));_0x5bddb3[_0x8a54('0x48')]=_0x5bddb3[_0x8a54('0x48')]['length']?_0x5bddb3[_0x8a54('0x48')]:_0x119ea7[_0x8a54('0x43')];if(!_0x7cab88['query'][_0x8a54('0x4a')]('nolimit')){_0x5bddb3[_0x8a54('0x2e')]=qs[_0x8a54('0x2e')](_0x7cab88[_0x8a54('0x45')]['limit']);_0x5bddb3[_0x8a54('0x2c')]=qs[_0x8a54('0x2c')](_0x7cab88[_0x8a54('0x45')][_0x8a54('0x2c')]);}_0x5bddb3[_0x8a54('0x4c')]=qs['sort'](_0x7cab88[_0x8a54('0x45')][_0x8a54('0x4d')]);_0x5bddb3[_0x8a54('0x50')]=qs[_0x8a54('0x46')](_['pick'](_0x7cab88['query'],_0x119ea7[_0x8a54('0x46')]));_0x5bddb3[_0x8a54('0x50')]['OpenchannelAccountId']=_0x127b7c['id'];if(_0x7cab88[_0x8a54('0x45')][_0x8a54('0x4f')]){_0x5bddb3['where']=_['merge'](_0x5bddb3[_0x8a54('0x50')],{'$or':_[_0x8a54('0x3f')](_0x5bddb3[_0x8a54('0x48')],function(_0x32861c){var _0x3bb9b6={};_0x3bb9b6[_0x32861c]={'$like':'%'+_0x7cab88[_0x8a54('0x45')][_0x8a54('0x4f')]+'%'};return _0x3bb9b6;})});}_0x5bddb3=_[_0x8a54('0x51')]({},_0x5bddb3,_0x7cab88['options']);return db[_0x8a54('0x8c')][_0x8a54('0x2f')]({'where':_0x5bddb3[_0x8a54('0x50')]})[_0x8a54('0x35')](function(_0x12803b){_0x526917[_0x8a54('0x2f')]=_0x12803b;if(_0x7cab88[_0x8a54('0x45')][_0x8a54('0x55')]){_0x5bddb3[_0x8a54('0x56')]=[{'model':db[_0x8a54('0x71')],'as':'Contact','required':![]},{'model':db[_0x8a54('0x9a')],'as':_0x8a54('0xad'),'attributes':[_0x8a54('0x3b'),_0x8a54('0xae'),'internal'],'required':![]},{'model':db[_0x8a54('0xaf')],'as':_0x8a54('0xb0'),'attributes':['id',_0x8a54('0x3b'),_0x8a54('0xb1')],'where':_0x7cab88['query']['tag']?{'id':_0x7cab88[_0x8a54('0x45')]['tag']}:undefined,'required':_0x7cab88['query']['tag']?!![]:![]}];}return db[_0x8a54('0x8c')]['findAll'](_0x5bddb3);})[_0x8a54('0x35')](function(_0x86de40){_0x526917['rows']=_0x86de40;return _0x526917;});}})[_0x8a54('0x35')](respondWithFilteredResult(_0x21996e,_0x5bddb3))[_0x8a54('0x28')](handleError(_0x21996e,null));};exports[_0x8a54('0xb2')]=function(_0x1ec9e0,_0x4ff42a,_0x105e8f){return db['OpenchannelAccount'][_0x8a54('0x5b')]({'where':{'id':_0x1ec9e0[_0x8a54('0x59')]['id']}})[_0x8a54('0x35')](handleEntityNotFound(_0x4ff42a,null))[_0x8a54('0x35')](function(_0x5dbc25){if(_0x5dbc25){return _0x5dbc25['addAgents'](_0x1ec9e0[_0x8a54('0x63')][_0x8a54('0x6f')],_[_0x8a54('0xb3')](_0x1ec9e0[_0x8a54('0x63')],['ids','id'])||{})[_0x8a54('0x8e')](function(_0x538ccd){for(var _0x3fe3d3=0x0;_0x3fe3d3<_0x1ec9e0[_0x8a54('0x63')]['ids']['length'];_0x3fe3d3+=0x1){socket[_0x8a54('0xb4')](_0x8a54('0xb5'),{'UserId':Number(_0x1ec9e0[_0x8a54('0x63')]['ids'][_0x3fe3d3]),'OpenchannelAccountId':Number(_0x1ec9e0[_0x8a54('0x59')]['id'])});}return _0x538ccd;});}})[_0x8a54('0x35')](respondWithResult(_0x4ff42a,null))['catch'](handleError(_0x4ff42a,null));};exports[_0x8a54('0xb6')]=function(_0x58b584,_0x251bb4,_0x36d5fb){return db['OpenchannelAccount'][_0x8a54('0x5b')]({'where':{'id':_0x58b584[_0x8a54('0x59')]['id']}})['then'](handleEntityNotFound(_0x251bb4,null))[_0x8a54('0x35')](function(_0x14f370){if(_0x14f370){return _0x14f370[_0x8a54('0xb6')](_0x58b584[_0x8a54('0x45')]['ids'])[_0x8a54('0x35')](function(){if(_['isArray'](_0x58b584[_0x8a54('0x45')][_0x8a54('0x6f')])){for(var _0x45c19c=0x0;_0x45c19c<_0x58b584['query'][_0x8a54('0x6f')]['length'];_0x45c19c+=0x1){socket['emit']('userOpenchannelAccount:remove',{'UserId':Number(_0x58b584[_0x8a54('0x45')][_0x8a54('0x6f')][_0x45c19c]),'OpenchannelAccountId':Number(_0x58b584['params']['id'])});}}else{socket[_0x8a54('0xb4')]('userOpenchannelAccount:remove',{'UserId':Number(_0x58b584[_0x8a54('0x45')][_0x8a54('0x6f')]),'OpenchannelAccountId':Number(_0x58b584[_0x8a54('0x59')]['id'])});}});}})[_0x8a54('0x35')](respondWithStatusCode(_0x251bb4,null))[_0x8a54('0x28')](handleError(_0x251bb4,null));};exports[_0x8a54('0xb7')]=function(_0x3bdb53,_0x5f4326,_0x5a7790){var _0x2827b4={};var _0x3f1be6={};var _0x16df2f;var _0x4b1837;return db[_0x8a54('0x40')][_0x8a54('0x6c')]({'where':{'id':_0x3bdb53[_0x8a54('0x59')]['id']}})[_0x8a54('0x35')](handleEntityNotFound(_0x5f4326,null))['then'](function(_0x1f244c){if(_0x1f244c){_0x16df2f=_0x1f244c;_0x3f1be6['model']=_[_0x8a54('0x44')](db[_0x8a54('0x9a')][_0x8a54('0x41')]);_0x3f1be6[_0x8a54('0x45')]=_['keys'](_0x3bdb53['query']);_0x3f1be6[_0x8a54('0x46')]=_[_0x8a54('0x47')](_0x3f1be6[_0x8a54('0x43')],_0x3f1be6[_0x8a54('0x45')]);_0x2827b4[_0x8a54('0x48')]=_[_0x8a54('0x47')](_0x3f1be6['model'],qs[_0x8a54('0x49')](_0x3bdb53[_0x8a54('0x45')][_0x8a54('0x49')]));_0x2827b4[_0x8a54('0x48')]=_0x2827b4[_0x8a54('0x48')][_0x8a54('0x5a')]?_0x2827b4[_0x8a54('0x48')]:_0x3f1be6[_0x8a54('0x43')];_0x2827b4['order']=qs['sort'](_0x3bdb53[_0x8a54('0x45')][_0x8a54('0x4d')]);_0x2827b4['where']=qs['filters'](_[_0x8a54('0x4e')](_0x3bdb53['query'],_0x3f1be6[_0x8a54('0x46')]));if(_0x3bdb53['query'][_0x8a54('0x4f')]){_0x2827b4[_0x8a54('0x50')]=_[_0x8a54('0x51')](_0x2827b4[_0x8a54('0x50')],{'$or':_['map'](_0x2827b4[_0x8a54('0x48')],function(_0x29cd57){var _0x4e22c4={};_0x4e22c4[_0x29cd57]={'$like':'%'+_0x3bdb53[_0x8a54('0x45')][_0x8a54('0x4f')]+'%'};return _0x4e22c4;})});}_0x2827b4=_['merge']({},_0x2827b4,_0x3bdb53[_0x8a54('0x54')]);return _0x16df2f[_0x8a54('0xb7')](_0x2827b4);}})[_0x8a54('0x35')](function(_0x42e775){if(_0x42e775){_0x4b1837=_0x42e775['length'];if(!_0x3bdb53[_0x8a54('0x45')][_0x8a54('0x4a')](_0x8a54('0x4b'))){_0x2827b4[_0x8a54('0x2e')]=qs[_0x8a54('0x2e')](_0x3bdb53['query'][_0x8a54('0x2e')]);_0x2827b4['offset']=qs[_0x8a54('0x2c')](_0x3bdb53[_0x8a54('0x45')][_0x8a54('0x2c')]);}return _0x16df2f[_0x8a54('0xb7')](_0x2827b4);}})[_0x8a54('0x35')](function(_0x6569bd){if(_0x6569bd){return _0x6569bd?{'count':_0x4b1837,'rows':_0x6569bd}:null;}})[_0x8a54('0x35')](respondWithResult(_0x5f4326,null))[_0x8a54('0x28')](handleError(_0x5f4326,null));};exports[_0x8a54('0xaa')]=function(_0x12a3a2,_0xef35b0,_0xd457f8){var _0x1618d5,_0x49efd,_0x5a527c;if(_[_0x8a54('0x7a')](_0x12a3a2[_0x8a54('0x63')]['body'])||_0x12a3a2[_0x8a54('0x63')][_0x8a54('0x63')]===''){throw new db[(_0x8a54('0x72'))][(_0x8a54('0x73'))](_0x8a54('0x7b'));}if(_['isNil'](_0x12a3a2[_0x8a54('0x63')]['to'])){}_0x1618d5=_0x12a3a2[_0x8a54('0x63')]['to'];return db[_0x8a54('0x40')][_0x8a54('0x6c')]({'where':{'id':_0x12a3a2[_0x8a54('0x59')]['id']}})[_0x8a54('0x35')](handleEntityNotFound(_0xef35b0,null))[_0x8a54('0x35')](function(_0x15a1d8){if(_0x15a1d8){return db[_0x8a54('0x40')][_0x8a54('0x5b')]({'where':{'id':_0x15a1d8['id']},'include':[{'model':db[_0x8a54('0xb8')],'as':_0x8a54('0x80'),'include':[{'model':db[_0x8a54('0x71')],'as':_0x8a54('0x88'),'where':{[_0x15a1d8[_0x8a54('0x7c')]]:_0x1618d5},'limit':0x1,'order':[[_0x8a54('0x77'),_0x8a54('0xb9')]]}]}]})['then'](handleEntityNotFound(_0xef35b0,null))[_0x8a54('0x35')](function(_0xa29d7c){if(_0xa29d7c&&_0xa29d7c[_0x8a54('0x80')]){_0x49efd=_0xa29d7c['get']({'plain':!![]});if(_0x49efd['List']&&_0x49efd[_0x8a54('0x80')][_0x8a54('0x88')][_0x8a54('0x5a')]){return _0x49efd[_0x8a54('0x80')]['Contacts'][0x0];}return db['CmContact'][_0x8a54('0x5c')](_['defaults'](_0x12a3a2[_0x8a54('0x63')],{'firstName':_0x1618d5,[_0xa29d7c[_0x8a54('0x7c')]]:_0x1618d5,'phone':_0x1618d5,'ListId':_0x49efd['ListId']}));}})[_0x8a54('0x35')](handleEntityNotFound(_0xef35b0,null))['then'](function(_0x474405){if(_0x474405){_0x5a527c=_0x474405;return db[_0x8a54('0x8c')]['find']({'where':{'ContactId':_0x5a527c['id'],'closed':![],'OpenchannelAccountId':_0x49efd['id']}})[_0x8a54('0x35')](function(_0x2ab580){if(_0x2ab580){return[_0x2ab580,![]];}return db[_0x8a54('0x8c')]['create']({'UserId':_0x12a3a2[_0x8a54('0x5d')]['id'],'ContactId':_0x5a527c['id'],'OpenchannelAccountId':_0x49efd['id'],'lastMsgDirection':'out','Messages':[_[_0x8a54('0x51')](_0x12a3a2[_0x8a54('0x63')],{'read':![],'body':_0x12a3a2[_0x8a54('0x63')][_0x8a54('0x63')],'OpenchannelAccountId':_0x49efd['id'],'UserId':_0x12a3a2[_0x8a54('0x5d')]['id'],'ContactId':_0x5a527c['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':_0x8a54('0xba')}]})[_0x8a54('0x35')](function(_0x5461db){return[_0x5461db,!![]];});});}})[_0x8a54('0x8e')](function(_0x5997d6,_0x522b8a){if(_0x522b8a){return _0x5997d6;}return db[_0x8a54('0x97')][_0x8a54('0x5c')](_[_0x8a54('0x51')](_0x12a3a2[_0x8a54('0x63')],{'read':![],'body':_0x12a3a2[_0x8a54('0x63')][_0x8a54('0x63')],'OpenchannelAccountId':_0x49efd['id'],'OpenchannelInteractionId':_0x5997d6['id'],'UserId':_0x12a3a2[_0x8a54('0x5d')]['id'],'ContactId':_0x5a527c['id']}))[_0x8a54('0x35')](function(_0x2f20ac){_0x5997d6[_0x8a54('0xbb')][_0x8a54('0xba')]=[];_0x5997d6['dataValues'][_0x8a54('0xba')][_0x8a54('0xbc')](_0x2f20ac['dataValues']);return _0x5997d6;});});}})[_0x8a54('0x35')](respondWithResult(_0xef35b0,null))[_0x8a54('0x28')](handleError(_0xef35b0,null));};
\ No newline at end of file
+var _0xe8f5=['unmanaged','OpenchannelMessage','AttachmentId','UserId','User','unshift','agent','*,*,*,*','forcedOwnership','startRouting','Start','EventManager','addApplications','sequelize','bulkCreate','getApplications','internal','Tag','Tags','color','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','out','dataValues','Messages','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','jayson/promise','http','client','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','message','catch','sendStatus','status','end','json','offset','limit','count','set','apply','save','update','get','OpenchannelAccounts','UserProfileResource','destroy','name','send','index','Pause','map','OpenchannelAccount','rawAttributes','fieldName','type','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','show','params','mandatoryDispositionPause','include','find','create','user','role','UserProfileSection','autoAssociation','body','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','addAnswer','CannedAnswer','ids','notify','openchannel','CmContact','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','isNil','Sequelize','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','List','DESC','OpenchannelApplication','Applications','list','applications','orderBy','priority','asc','account','Contacts','ListId','contact','firstName','threadId','OpenchannelInteraction','externalUrl','spread','lastName','messageId','interaction','created','push'];(function(_0x16d727,_0x5c7f3d){var _0x5d5566=function(_0x1fcaa0){while(--_0x1fcaa0){_0x16d727['push'](_0x16d727['shift']());}};_0x5d5566(++_0x5c7f3d);}(_0xe8f5,0x18e));var _0x5e8f=function(_0x970a57,_0x469d3c){_0x970a57=_0x970a57-0x0;var _0x42be6a=_0xe8f5[_0x970a57];return _0x42be6a;};'use strict';var emlformat=require(_0x5e8f('0x0'));var rimraf=require(_0x5e8f('0x1'));var zipdir=require(_0x5e8f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5e8f('0x3'));var moment=require('moment');var BPromise=require(_0x5e8f('0x4'));var Mustache=require(_0x5e8f('0x5'));var util=require(_0x5e8f('0x6'));var path=require(_0x5e8f('0x7'));var sox=require('sox');var csv=require(_0x5e8f('0x8'));var ejs=require(_0x5e8f('0x9'));var fs=require('fs');var fs_extra=require(_0x5e8f('0xa'));var _=require(_0x5e8f('0xb'));var squel=require(_0x5e8f('0xc'));var crypto=require(_0x5e8f('0xd'));var jsforce=require(_0x5e8f('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x5e8f('0xf'));var Papa=require(_0x5e8f('0x10'));var Redis=require(_0x5e8f('0x11'));var authService=require(_0x5e8f('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x5e8f('0x13'));var hardwareService=require(_0x5e8f('0x14'));var logger=require(_0x5e8f('0x15'))(_0x5e8f('0x16'));var utils=require(_0x5e8f('0x17'));var config=require(_0x5e8f('0x18'));var licenseUtil=require(_0x5e8f('0x19'));var db=require('../../mysqldb')['db'];config[_0x5e8f('0x1a')]=_[_0x5e8f('0x1b')](config[_0x5e8f('0x1a')],{'host':_0x5e8f('0x1c'),'port':0x18eb});var socket=require(_0x5e8f('0x1d'))(new Redis(config[_0x5e8f('0x1a')]));require(_0x5e8f('0x1e'))[_0x5e8f('0x1f')](socket);var jayson=require(_0x5e8f('0x20'));var client=jayson['client'][_0x5e8f('0x21')]({'port':0x232c});var client9002=jayson[_0x5e8f('0x22')]['http']({'port':0x232a});function respondWithRpcPromise(_0xa2a935,_0xd7af05,_0x1a25e8,_0x41b443){return new BPromise(function(_0x118475,_0x2410c4){var _0x135ce5=_0x41b443||client;return _0x135ce5[_0x5e8f('0x23')](_0xa2a935,_0x1a25e8)[_0x5e8f('0x24')](function(_0x456748){logger[_0x5e8f('0x25')](_0x5e8f('0x26'),_0xd7af05,_0x5e8f('0x27'));logger[_0x5e8f('0x28')](_0x5e8f('0x29'),_0xd7af05,_0x5e8f('0x27'),JSON['stringify'](_0x456748));if(_0x456748['error']){if(_0x456748[_0x5e8f('0x2a')]['code']===0x1f4){logger[_0x5e8f('0x2a')](_0x5e8f('0x26'),_0xd7af05,_0x456748['error'][_0x5e8f('0x2b')]);return _0x2410c4(_0x456748['error'][_0x5e8f('0x2b')]);}logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0xd7af05,_0x456748[_0x5e8f('0x2a')][_0x5e8f('0x2b')]);return _0x118475(_0x456748['error']['message']);}else{logger[_0x5e8f('0x25')](_0x5e8f('0x26'),_0xd7af05,_0x5e8f('0x27'));_0x118475(_0x456748['result'][_0x5e8f('0x2b')]);}})[_0x5e8f('0x2c')](function(_0x24db17){logger[_0x5e8f('0x2a')](_0x5e8f('0x26'),_0xd7af05,_0x24db17);_0x2410c4(_0x24db17);});});}function respondWithStatusCode(_0x157321,_0x47ee33){_0x47ee33=_0x47ee33||0xcc;return function(_0x191d3d){if(_0x191d3d){return _0x157321[_0x5e8f('0x2d')](_0x47ee33);}return _0x157321[_0x5e8f('0x2e')](_0x47ee33)[_0x5e8f('0x2f')]();};}function respondWithResult(_0x257487,_0xff4094){_0xff4094=_0xff4094||0xc8;return function(_0x545efc){if(_0x545efc){return _0x257487[_0x5e8f('0x2e')](_0xff4094)[_0x5e8f('0x30')](_0x545efc);}};}function respondWithFilteredResult(_0x5198ff,_0x53ddcd){return function(_0x596964){if(_0x596964){var _0x3c0c33=typeof _0x53ddcd[_0x5e8f('0x31')]==='undefined'&&typeof _0x53ddcd[_0x5e8f('0x32')]==='undefined';var _0x4b0a67=_0x596964[_0x5e8f('0x33')];var _0x3a01b4=_0x3c0c33?0x0:_0x53ddcd['offset'];var _0xf61bc6=_0x3c0c33?_0x596964[_0x5e8f('0x33')]:_0x53ddcd[_0x5e8f('0x31')]+_0x53ddcd[_0x5e8f('0x32')];var _0x306b24;if(_0xf61bc6>=_0x4b0a67){_0xf61bc6=_0x4b0a67;_0x306b24=0xc8;}else{_0x306b24=0xce;}_0x5198ff[_0x5e8f('0x2e')](_0x306b24);return _0x5198ff[_0x5e8f('0x34')]('Content-Range',_0x3a01b4+'-'+_0xf61bc6+'/'+_0x4b0a67)[_0x5e8f('0x30')](_0x596964);}return null;};}function patchUpdates(_0x42da58){return function(_0x38a70f){try{jsonpatch[_0x5e8f('0x35')](_0x38a70f,_0x42da58,!![]);}catch(_0x1c69b1){return BPromise['reject'](_0x1c69b1);}return _0x38a70f[_0x5e8f('0x36')]();};}function saveUpdates(_0x2d0368,_0x4faa47){return function(_0x1b1ed7){if(_0x1b1ed7){return _0x1b1ed7[_0x5e8f('0x37')](_0x2d0368)[_0x5e8f('0x24')](function(_0x21f288){return _0x21f288;});}return null;};}function removeEntity(_0x39c43a,_0x3e9bfd){return function(_0x3b3b81){if(_0x3b3b81){return _0x3b3b81['destroy']()[_0x5e8f('0x24')](function(){var _0x363583=_0x3b3b81[_0x5e8f('0x38')]({'plain':!![]});var _0x1d234a=_0x5e8f('0x39');return db[_0x5e8f('0x3a')][_0x5e8f('0x3b')]({'where':{'type':_0x1d234a,'resourceId':_0x363583['id']}})['then'](function(){return _0x3b3b81;});})[_0x5e8f('0x24')](function(){_0x39c43a[_0x5e8f('0x2e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ac8d0,_0x2d1fe9){return function(_0x10471a){if(!_0x10471a){_0x1ac8d0[_0x5e8f('0x2d')](0x194);}return _0x10471a;};}function handleError(_0x278932,_0x5c7856){_0x5c7856=_0x5c7856||0x1f4;return function(_0x4049be){logger['error'](_0x4049be['stack']);if(_0x4049be[_0x5e8f('0x3c')]){delete _0x4049be[_0x5e8f('0x3c')];}_0x278932[_0x5e8f('0x2e')](_0x5c7856)[_0x5e8f('0x3d')](_0x4049be);};}exports[_0x5e8f('0x3e')]=function(_0x4faa3d,_0xbbadb1){var _0x46dca8={'include':[{'model':db[_0x5e8f('0x3f')],'as':'mandatoryDispositionPause'}]},_0x262e0e={},_0x395d49={'count':0x0,'rows':[]};var _0x38ac0f=_[_0x5e8f('0x40')](db[_0x5e8f('0x41')][_0x5e8f('0x42')],function(_0x26b36d){return{'name':_0x26b36d[_0x5e8f('0x43')],'type':_0x26b36d[_0x5e8f('0x44')]['key']};});_0x262e0e['model']=_[_0x5e8f('0x40')](_0x38ac0f,_0x5e8f('0x3c'));_0x262e0e[_0x5e8f('0x45')]=_[_0x5e8f('0x46')](_0x4faa3d[_0x5e8f('0x45')]);_0x262e0e[_0x5e8f('0x47')]=_['intersection'](_0x262e0e[_0x5e8f('0x48')],_0x262e0e[_0x5e8f('0x45')]);_0x46dca8[_0x5e8f('0x49')]=_[_0x5e8f('0x4a')](_0x262e0e[_0x5e8f('0x48')],qs[_0x5e8f('0x4b')](_0x4faa3d[_0x5e8f('0x45')][_0x5e8f('0x4b')]));_0x46dca8[_0x5e8f('0x49')]=_0x46dca8[_0x5e8f('0x49')][_0x5e8f('0x4c')]?_0x46dca8[_0x5e8f('0x49')]:_0x262e0e[_0x5e8f('0x48')];if(!_0x4faa3d[_0x5e8f('0x45')][_0x5e8f('0x4d')](_0x5e8f('0x4e'))){_0x46dca8['limit']=qs[_0x5e8f('0x32')](_0x4faa3d[_0x5e8f('0x45')][_0x5e8f('0x32')]);_0x46dca8[_0x5e8f('0x31')]=qs[_0x5e8f('0x31')](_0x4faa3d[_0x5e8f('0x45')][_0x5e8f('0x31')]);}_0x46dca8[_0x5e8f('0x4f')]=qs[_0x5e8f('0x50')](_0x4faa3d[_0x5e8f('0x45')][_0x5e8f('0x50')]);_0x46dca8[_0x5e8f('0x51')]=qs['filters'](_[_0x5e8f('0x52')](_0x4faa3d[_0x5e8f('0x45')],_0x262e0e[_0x5e8f('0x47')]),_0x38ac0f);if(_0x4faa3d[_0x5e8f('0x45')][_0x5e8f('0x53')]){_0x46dca8[_0x5e8f('0x51')]=_[_0x5e8f('0x54')](_0x46dca8[_0x5e8f('0x51')],{'$or':_[_0x5e8f('0x40')](_0x38ac0f,function(_0x3103d7){if(_0x3103d7[_0x5e8f('0x44')]!=='VIRTUAL'){var _0x2bc29e={};_0x2bc29e[_0x3103d7['name']]={'$like':'%'+_0x4faa3d['query']['filter']+'%'};return _0x2bc29e;}})});}_0x46dca8=_[_0x5e8f('0x54')]({},_0x46dca8,_0x4faa3d[_0x5e8f('0x55')]);var _0x4575da={'where':_0x46dca8[_0x5e8f('0x51')]};return db[_0x5e8f('0x41')][_0x5e8f('0x33')](_0x4575da)[_0x5e8f('0x24')](function(_0xb38dcf){_0x395d49[_0x5e8f('0x33')]=_0xb38dcf;if(_0x4faa3d[_0x5e8f('0x45')][_0x5e8f('0x56')]){_0x46dca8['include']=[{'all':!![]}];}return db[_0x5e8f('0x41')][_0x5e8f('0x57')](_0x46dca8);})[_0x5e8f('0x24')](function(_0x494c4b){_0x395d49[_0x5e8f('0x58')]=_0x494c4b;return _0x395d49;})[_0x5e8f('0x24')](respondWithFilteredResult(_0xbbadb1,_0x46dca8))[_0x5e8f('0x2c')](handleError(_0xbbadb1,null));};exports[_0x5e8f('0x59')]=function(_0x2195f5,_0x4e6ef2){var _0x169559={'raw':![],'where':{'id':_0x2195f5[_0x5e8f('0x5a')]['id']},'include':[{'model':db[_0x5e8f('0x3f')],'as':_0x5e8f('0x5b')}]},_0x40af7a={};_0x40af7a['model']=_['keys'](db[_0x5e8f('0x41')][_0x5e8f('0x42')]);_0x40af7a[_0x5e8f('0x45')]=_[_0x5e8f('0x46')](_0x2195f5[_0x5e8f('0x45')]);_0x40af7a[_0x5e8f('0x47')]=_[_0x5e8f('0x4a')](_0x40af7a[_0x5e8f('0x48')],_0x40af7a['query']);_0x169559['attributes']=_['intersection'](_0x40af7a['model'],qs[_0x5e8f('0x4b')](_0x2195f5[_0x5e8f('0x45')]['fields']));_0x169559['attributes']=_0x169559[_0x5e8f('0x49')]['length']?_0x169559[_0x5e8f('0x49')]:_0x40af7a['model'];if(_0x2195f5['query']['includeAll']){_0x169559[_0x5e8f('0x5c')]=[{'all':!![]}];}_0x169559=_[_0x5e8f('0x54')]({},_0x169559,_0x2195f5[_0x5e8f('0x55')]);return db[_0x5e8f('0x41')][_0x5e8f('0x5d')](_0x169559)[_0x5e8f('0x24')](handleEntityNotFound(_0x4e6ef2,null))[_0x5e8f('0x24')](respondWithResult(_0x4e6ef2,null))[_0x5e8f('0x2c')](handleError(_0x4e6ef2,null));};exports['create']=function(_0x2de3d1,_0x414f3d){return db[_0x5e8f('0x41')][_0x5e8f('0x5e')](_0x2de3d1['body'],{})[_0x5e8f('0x24')](function(_0x509d6d){var _0x522295=_0x2de3d1[_0x5e8f('0x5f')][_0x5e8f('0x38')]({'plain':!![]});if(!_0x522295)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x522295[_0x5e8f('0x60')]===_0x5e8f('0x5f')){var _0x1a4359=_0x509d6d[_0x5e8f('0x38')]({'plain':!![]});var _0x4b88fb=_0x5e8f('0x39');return db[_0x5e8f('0x61')][_0x5e8f('0x5d')]({'where':{'name':_0x4b88fb,'userProfileId':_0x522295['userProfileId']},'raw':!![]})[_0x5e8f('0x24')](function(_0x460d2f){if(_0x460d2f&&_0x460d2f[_0x5e8f('0x62')]===0x0){return db[_0x5e8f('0x3a')][_0x5e8f('0x5e')]({'name':_0x1a4359[_0x5e8f('0x3c')],'resourceId':_0x1a4359['id'],'type':_0x460d2f['name'],'sectionId':_0x460d2f['id']},{})[_0x5e8f('0x24')](function(){return _0x509d6d;});}else{return _0x509d6d;}})[_0x5e8f('0x2c')](function(_0x2d0c92){logger[_0x5e8f('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2d0c92);throw _0x2d0c92;});}return _0x509d6d;})['then'](respondWithResult(_0x414f3d,0xc9))[_0x5e8f('0x2c')](handleError(_0x414f3d,null));};exports[_0x5e8f('0x37')]=function(_0x3b6c73,_0x5b23ce){if(_0x3b6c73[_0x5e8f('0x63')]['id']){delete _0x3b6c73['body']['id'];}return db['OpenchannelAccount']['find']({'where':{'id':_0x3b6c73[_0x5e8f('0x5a')]['id']},'include':[{'model':db[_0x5e8f('0x3f')],'as':_0x5e8f('0x5b')}]})['then'](handleEntityNotFound(_0x5b23ce,null))[_0x5e8f('0x24')](saveUpdates(_0x3b6c73[_0x5e8f('0x63')],null))[_0x5e8f('0x24')](respondWithResult(_0x5b23ce,null))[_0x5e8f('0x2c')](handleError(_0x5b23ce,null));};exports['destroy']=function(_0x3eb502,_0x4f7f8d){return db[_0x5e8f('0x41')][_0x5e8f('0x5d')]({'where':{'id':_0x3eb502[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0x4f7f8d,null))['then'](removeEntity(_0x4f7f8d,null))[_0x5e8f('0x2c')](handleError(_0x4f7f8d,null));};exports['describe']=function(_0x1b8f62,_0x30ebab){return db['OpenchannelAccount'][_0x5e8f('0x64')]()[_0x5e8f('0x24')](respondWithResult(_0x30ebab,null))[_0x5e8f('0x2c')](handleError(_0x30ebab,null));};exports[_0x5e8f('0x65')]=function(_0xd2cf83,_0x4e8d14,_0x3cc65e){if(_0xd2cf83[_0x5e8f('0x63')]['id']){delete _0xd2cf83['body']['id'];}return db[_0x5e8f('0x41')]['find']({'where':{'id':_0xd2cf83[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0x4e8d14,null))[_0x5e8f('0x24')](function(_0x1db972){if(_0x1db972){_0xd2cf83['body'][_0x5e8f('0x66')]=_0x1db972['id'];return db[_0x5e8f('0x67')][_0x5e8f('0x5e')](_0xd2cf83['body']);}})[_0x5e8f('0x24')](respondWithResult(_0x4e8d14,null))[_0x5e8f('0x2c')](handleError(_0x4e8d14,null));};exports[_0x5e8f('0x68')]=function(_0x5908ad,_0xc6bb07,_0x138eae){var _0x19f02a={'raw':![],'where':{}};var _0x780cb={};var _0x351128={'count':0x0,'rows':[]};return db[_0x5e8f('0x41')][_0x5e8f('0x69')]({'where':{'id':_0x5908ad[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0xc6bb07,null))['then'](function(_0x573e3f){if(_0x573e3f){_0x780cb['model']=_['keys'](db[_0x5e8f('0x67')][_0x5e8f('0x42')]);_0x780cb[_0x5e8f('0x45')]=_['keys'](_0x5908ad[_0x5e8f('0x45')]);_0x780cb['filters']=_[_0x5e8f('0x4a')](_0x780cb['model'],_0x780cb[_0x5e8f('0x45')]);_0x19f02a['attributes']=_[_0x5e8f('0x4a')](_0x780cb[_0x5e8f('0x48')],qs[_0x5e8f('0x4b')](_0x5908ad[_0x5e8f('0x45')][_0x5e8f('0x4b')]));_0x19f02a[_0x5e8f('0x49')]=_0x19f02a[_0x5e8f('0x49')][_0x5e8f('0x4c')]?_0x19f02a[_0x5e8f('0x49')]:_0x780cb[_0x5e8f('0x48')];if(!_0x5908ad['query'][_0x5e8f('0x4d')](_0x5e8f('0x4e'))){_0x19f02a[_0x5e8f('0x32')]=qs['limit'](_0x5908ad[_0x5e8f('0x45')]['limit']);_0x19f02a[_0x5e8f('0x31')]=qs[_0x5e8f('0x31')](_0x5908ad['query'][_0x5e8f('0x31')]);}_0x19f02a[_0x5e8f('0x4f')]=qs[_0x5e8f('0x50')](_0x5908ad[_0x5e8f('0x45')]['sort']);_0x19f02a[_0x5e8f('0x51')]=qs[_0x5e8f('0x47')](_[_0x5e8f('0x52')](_0x5908ad['query'],_0x780cb['filters']));_0x19f02a[_0x5e8f('0x51')]['OpenchannelAccountId']=_0x573e3f['id'];if(_0x5908ad[_0x5e8f('0x45')][_0x5e8f('0x53')]){_0x19f02a['where']=_[_0x5e8f('0x54')](_0x19f02a[_0x5e8f('0x51')],{'$or':_[_0x5e8f('0x40')](_0x19f02a[_0x5e8f('0x49')],function(_0x1c9e94){var _0x2fe06a={};_0x2fe06a[_0x1c9e94]={'$like':'%'+_0x5908ad[_0x5e8f('0x45')][_0x5e8f('0x53')]+'%'};return _0x2fe06a;})});}_0x19f02a=_[_0x5e8f('0x54')]({},_0x19f02a,_0x5908ad['options']);return db['Disposition']['count']({'where':_0x19f02a[_0x5e8f('0x51')]})[_0x5e8f('0x24')](function(_0x3f7ac0){_0x351128['count']=_0x3f7ac0;if(_0x5908ad[_0x5e8f('0x45')][_0x5e8f('0x56')]){_0x19f02a[_0x5e8f('0x5c')]=[{'all':!![]}];}return db[_0x5e8f('0x67')][_0x5e8f('0x57')](_0x19f02a);})['then'](function(_0x21821c){_0x351128[_0x5e8f('0x58')]=_0x21821c;return _0x351128;});}})[_0x5e8f('0x24')](respondWithFilteredResult(_0xc6bb07,_0x19f02a))[_0x5e8f('0x2c')](handleError(_0xc6bb07,null));};exports['removeDispositions']=function(_0x25811c,_0x9c5f9a,_0xe81ce2){return db[_0x5e8f('0x41')][_0x5e8f('0x5d')]({'where':{'id':_0x25811c[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0x9c5f9a,null))['then'](function(_0x2c7820){if(_0x2c7820){return _0x2c7820['removeDispositions'](_0x25811c[_0x5e8f('0x45')]['ids']);}})[_0x5e8f('0x24')](respondWithStatusCode(_0x9c5f9a,null))['catch'](handleError(_0x9c5f9a,null));};exports[_0x5e8f('0x6a')]=function(_0x2ce00f,_0x2dc6f6,_0xd82ed4){if(_0x2ce00f[_0x5e8f('0x63')]['id']){delete _0x2ce00f[_0x5e8f('0x63')]['id'];}return db['OpenchannelAccount'][_0x5e8f('0x5d')]({'where':{'id':_0x2ce00f[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0x2dc6f6,null))[_0x5e8f('0x24')](function(_0x3754bb){if(_0x3754bb){_0x2ce00f[_0x5e8f('0x63')][_0x5e8f('0x66')]=_0x3754bb['id'];return db[_0x5e8f('0x6b')][_0x5e8f('0x5e')](_0x2ce00f[_0x5e8f('0x63')]);}})[_0x5e8f('0x24')](respondWithResult(_0x2dc6f6,null))[_0x5e8f('0x2c')](handleError(_0x2dc6f6,null));};exports['getAnswers']=function(_0x979c96,_0x37c5b0,_0x41f820){var _0x285edb={'raw':![],'where':{}};var _0x2db204={};var _0x32b24a={'count':0x0,'rows':[]};return db[_0x5e8f('0x41')][_0x5e8f('0x69')]({'where':{'id':_0x979c96['params']['id']}})['then'](handleEntityNotFound(_0x37c5b0,null))['then'](function(_0x488a5a){if(_0x488a5a){_0x2db204[_0x5e8f('0x48')]=_[_0x5e8f('0x46')](db[_0x5e8f('0x6b')]['rawAttributes']);_0x2db204[_0x5e8f('0x45')]=_[_0x5e8f('0x46')](_0x979c96['query']);_0x2db204['filters']=_[_0x5e8f('0x4a')](_0x2db204[_0x5e8f('0x48')],_0x2db204[_0x5e8f('0x45')]);_0x285edb[_0x5e8f('0x49')]=_['intersection'](_0x2db204[_0x5e8f('0x48')],qs[_0x5e8f('0x4b')](_0x979c96['query']['fields']));_0x285edb[_0x5e8f('0x49')]=_0x285edb[_0x5e8f('0x49')][_0x5e8f('0x4c')]?_0x285edb[_0x5e8f('0x49')]:_0x2db204[_0x5e8f('0x48')];if(!_0x979c96[_0x5e8f('0x45')][_0x5e8f('0x4d')](_0x5e8f('0x4e'))){_0x285edb[_0x5e8f('0x32')]=qs[_0x5e8f('0x32')](_0x979c96['query'][_0x5e8f('0x32')]);_0x285edb[_0x5e8f('0x31')]=qs[_0x5e8f('0x31')](_0x979c96['query']['offset']);}_0x285edb['order']=qs['sort'](_0x979c96[_0x5e8f('0x45')][_0x5e8f('0x50')]);_0x285edb[_0x5e8f('0x51')]=qs[_0x5e8f('0x47')](_[_0x5e8f('0x52')](_0x979c96[_0x5e8f('0x45')],_0x2db204[_0x5e8f('0x47')]));_0x285edb[_0x5e8f('0x51')][_0x5e8f('0x66')]=_0x488a5a['id'];if(_0x979c96[_0x5e8f('0x45')][_0x5e8f('0x53')]){_0x285edb[_0x5e8f('0x51')]=_['merge'](_0x285edb[_0x5e8f('0x51')],{'$or':_[_0x5e8f('0x40')](_0x285edb['attributes'],function(_0xa400a2){var _0x47a512={};_0x47a512[_0xa400a2]={'$like':'%'+_0x979c96['query']['filter']+'%'};return _0x47a512;})});}_0x285edb=_[_0x5e8f('0x54')]({},_0x285edb,_0x979c96[_0x5e8f('0x55')]);return db['CannedAnswer'][_0x5e8f('0x33')]({'where':_0x285edb[_0x5e8f('0x51')]})[_0x5e8f('0x24')](function(_0x18174c){_0x32b24a[_0x5e8f('0x33')]=_0x18174c;if(_0x979c96[_0x5e8f('0x45')][_0x5e8f('0x56')]){_0x285edb[_0x5e8f('0x5c')]=[{'all':!![]}];}return db[_0x5e8f('0x6b')]['findAll'](_0x285edb);})[_0x5e8f('0x24')](function(_0x546628){_0x32b24a[_0x5e8f('0x58')]=_0x546628;return _0x32b24a;});}})[_0x5e8f('0x24')](respondWithFilteredResult(_0x37c5b0,_0x285edb))['catch'](handleError(_0x37c5b0,null));};exports['removeAnswers']=function(_0x5a2f92,_0x1d0c60,_0x53cd0e){return db[_0x5e8f('0x41')][_0x5e8f('0x5d')]({'where':{'id':_0x5a2f92[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0x1d0c60,null))[_0x5e8f('0x24')](function(_0x1dab69){if(_0x1dab69){return _0x1dab69['removeAnswers'](_0x5a2f92['query'][_0x5e8f('0x6c')]);}})[_0x5e8f('0x24')](respondWithStatusCode(_0x1d0c60,null))[_0x5e8f('0x2c')](handleError(_0x1d0c60,null));};exports[_0x5e8f('0x6d')]=function(_0x4c2a7a,_0x3e0540,_0x2a2e5b){var _0x323c7f={'body':_0x4c2a7a[_0x5e8f('0x63')],'channel':_0x5e8f('0x6e')};var _0x50cf89=[];var _0x2c7270=[];var _0x232466={};var _0x5503b6=![];return db[_0x5e8f('0x6f')][_0x5e8f('0x64')]()[_0x5e8f('0x24')](function(_0x295102){if(!_0x295102){throw new db['Sequelize']['ValidationError'](_0x5e8f('0x70'));}_0x50cf89=_['difference'](_[_0x5e8f('0x46')](_0x295102),[_0x5e8f('0x71'),_0x5e8f('0x72')]);_0x2c7270=_[_0x5e8f('0x73')](_['keys'](_0x295102),[_0x5e8f('0x71'),'updatedAt',_0x5e8f('0x74'),'ListId']);if(_0x4c2a7a[_0x5e8f('0x63')]['id']){delete _0x4c2a7a[_0x5e8f('0x63')]['id'];}if(_[_0x5e8f('0x75')](_0x4c2a7a[_0x5e8f('0x63')]['from'])){throw new db[(_0x5e8f('0x76'))][(_0x5e8f('0x77'))](_0x5e8f('0x78'));}if(_[_0x5e8f('0x75')](_0x4c2a7a['body'][_0x5e8f('0x63')])||_0x4c2a7a['body'][_0x5e8f('0x63')]===''){throw new db[(_0x5e8f('0x76'))][(_0x5e8f('0x77'))](_0x5e8f('0x79'));}if(_[_0x5e8f('0x75')](_0x4c2a7a['body']['mapKey'])){throw new db[(_0x5e8f('0x76'))][(_0x5e8f('0x77'))](_0x5e8f('0x7a')+_0x2c7270);}if(!_[_0x5e8f('0x7b')](_0x2c7270,_0x4c2a7a[_0x5e8f('0x63')][_0x5e8f('0x7c')])){throw new db[(_0x5e8f('0x76'))]['ValidationError'](_0x5e8f('0x7d')+_0x2c7270);}_0x232466[_0x4c2a7a['body'][_0x5e8f('0x7c')]]=_0x4c2a7a[_0x5e8f('0x63')][_0x5e8f('0x7e')];})[_0x5e8f('0x24')](function(){return db[_0x5e8f('0x41')][_0x5e8f('0x5d')]({'where':{'id':_0x4c2a7a[_0x5e8f('0x5a')]['id']},'include':[{'model':db[_0x5e8f('0x7f')],'as':_0x5e8f('0x80'),'include':[{'model':db[_0x5e8f('0x6f')],'as':'Contacts','where':_0x232466,'limit':0x1,'order':[[_0x5e8f('0x72'),_0x5e8f('0x81')]]}]},{'model':db[_0x5e8f('0x82')],'as':_0x5e8f('0x83')}]});})['then'](handleEntityNotFound(_0x3e0540,null))[_0x5e8f('0x24')](function(_0x28b02d){if(_0x28b02d&&_0x28b02d['List']){_0x323c7f['account']=_0x28b02d;_0x323c7f['applications']=_0x28b02d[_0x5e8f('0x83')];_0x323c7f[_0x5e8f('0x84')]=_0x28b02d[_0x5e8f('0x80')];_0x323c7f[_0x5e8f('0x85')]=_[_0x5e8f('0x86')](_0x323c7f[_0x5e8f('0x85')],[_0x5e8f('0x87')],[_0x5e8f('0x88')]);if(_0x323c7f[_0x5e8f('0x89')][_0x5e8f('0x83')]){delete _0x323c7f['account']['Applications'];}if(_0x323c7f[_0x5e8f('0x89')][_0x5e8f('0x80')]&&_0x323c7f['account'][_0x5e8f('0x80')][_0x5e8f('0x8a')][_0x5e8f('0x4c')]){return _0x323c7f[_0x5e8f('0x89')][_0x5e8f('0x80')][_0x5e8f('0x8a')][0x0];}var _0x30b0ea=_[_0x5e8f('0x1b')](_0x4c2a7a[_0x5e8f('0x63')],{'firstName':_0x4c2a7a['body']['from'],'ListId':_0x28b02d[_0x5e8f('0x8b')]});_0x30b0ea[_0x4c2a7a[_0x5e8f('0x63')][_0x5e8f('0x7c')]]=_0x4c2a7a[_0x5e8f('0x63')][_0x5e8f('0x7e')];return db[_0x5e8f('0x6f')][_0x5e8f('0x5e')](_0x30b0ea,{'fields':_0x50cf89,'raw':!![]});}})['then'](handleEntityNotFound(_0x3e0540,null))[_0x5e8f('0x24')](function(_0x3ef491){_0x323c7f[_0x5e8f('0x8c')]=_0x3ef491;if(_0x3ef491){var _0x382ec4={'ContactId':_0x3ef491['id'],'OpenchannelAccountId':_0x4c2a7a[_0x5e8f('0x5a')]['id'],'from':(_0x3ef491[_0x5e8f('0x8d')]||'')+'\x20'+(_0x3ef491['lastName']||'')};var _0x52e44b={'OpenchannelAccountId':_0x4c2a7a['params']['id'],'closed':![]};if(_0x4c2a7a[_0x5e8f('0x63')][_0x5e8f('0x8e')]){_0x52e44b['threadId']=_0x4c2a7a[_0x5e8f('0x63')][_0x5e8f('0x8e')];return db[_0x5e8f('0x8f')][_0x5e8f('0x5d')]({'where':_0x52e44b})['then'](function(_0x32c68c){if(_0x32c68c){return[_0x32c68c,![]];}_0x382ec4['threadId']=_0x4c2a7a['body'][_0x5e8f('0x8e')];_0x382ec4[_0x5e8f('0x90')]=_0x4c2a7a['body'][_0x5e8f('0x90')];return db[_0x5e8f('0x8f')]['create'](_0x382ec4)[_0x5e8f('0x24')](function(_0x49edd7){return[_0x49edd7,!![]];});});}else{_0x52e44b[_0x5e8f('0x8e')]=null;}_0x52e44b['ContactId']=_0x3ef491['id'];return db[_0x5e8f('0x8f')][_0x5e8f('0x5d')]({'where':_0x52e44b})[_0x5e8f('0x24')](function(_0x11ab15){if(_0x11ab15){return[_0x11ab15,![]];}return db[_0x5e8f('0x8f')][_0x5e8f('0x5e')](_0x382ec4)[_0x5e8f('0x24')](function(_0x3a065b){return[_0x3a065b,!![]];});});}})[_0x5e8f('0x91')](function(_0x3d358d,_0x5c3d53){if(_0x3d358d){_0x5503b6=_0x5c3d53;if(!_0x5c3d53){var _0x414832={'from':(_0x323c7f['contact'][_0x5e8f('0x8d')]||'')+'\x20'+(_0x323c7f[_0x5e8f('0x8c')][_0x5e8f('0x92')]||'')};if(_0x4c2a7a[_0x5e8f('0x63')]['threadId']&&_0x4c2a7a[_0x5e8f('0x63')][_0x5e8f('0x93')]&&_0x4c2a7a[_0x5e8f('0x63')]['threadId']!=_0x4c2a7a[_0x5e8f('0x63')][_0x5e8f('0x93')]){_0x414832['threadId']=_0x4c2a7a[_0x5e8f('0x63')][_0x5e8f('0x93')];}return _0x3d358d[_0x5e8f('0x37')](_0x414832);}else{return _0x3d358d;}}})[_0x5e8f('0x24')](function(_0x41520c){_0x323c7f['interaction']=_0x41520c[_0x5e8f('0x38')]({'plain':!![]});_0x323c7f[_0x5e8f('0x94')][_0x5e8f('0x95')]=_0x5503b6;if(_0x323c7f['interaction']['created']){if(_0x323c7f[_0x5e8f('0x89')]['autoclose']){_0x323c7f[_0x5e8f('0x85')][_0x5e8f('0x96')]({'id':0x0,'priority':_0x323c7f['applications'][_0x5e8f('0x4c')]+0x1,'app':'close','appdata':_0x5e8f('0x97'),'interval':'*,*,*,*'});}}return db[_0x5e8f('0x98')]['create']({'body':_0x4c2a7a[_0x5e8f('0x63')]['body'],'OpenchannelAccountId':_0x4c2a7a[_0x5e8f('0x5a')]['id'],'OpenchannelInteractionId':_0x41520c['id'],'direction':'in','ContactId':_0x323c7f[_0x5e8f('0x8c')]['id'],'AttachmentId':_0x4c2a7a['body'][_0x5e8f('0x99')]});})[_0x5e8f('0x24')](function(_0x26eaf5){_0x323c7f[_0x5e8f('0x2b')]=_0x26eaf5;if(_0x323c7f[_0x5e8f('0x94')][_0x5e8f('0x9a')]){return db[_0x5e8f('0x9b')][_0x5e8f('0x5d')]({'attributes':['id',_0x5e8f('0x3c')],'where':{'id':_0x323c7f[_0x5e8f('0x94')][_0x5e8f('0x9a')]}})[_0x5e8f('0x24')](function(_0x44a131){if(_0x44a131){_0x323c7f[_0x5e8f('0x85')][_0x5e8f('0x9c')]({'id':0x0,'priority':0x0,'app':_0x5e8f('0x9d'),'appdata':_0x44a131['name']+','+(_0x323c7f[_0x5e8f('0x89')]['waitForTheAssignedAgent']||0xa),'interval':_0x5e8f('0x9e')});_0x323c7f[_0x5e8f('0x9f')]=![];}return respondWithRpcPromise('Start',_0x5e8f('0xa0'),_0x323c7f);});}return respondWithRpcPromise(_0x5e8f('0xa1'),_0x5e8f('0xa0'),_0x323c7f);})[_0x5e8f('0x24')](function(_0x560f5b){respondWithRpcPromise(_0x5e8f('0xa2'),_0x5e8f('0xa2'),{'event':_0x5e8f('0x6d'),'message':_0x560f5b},client9002);return _0x560f5b;})['then'](respondWithResult(_0x3e0540,null))['catch'](handleError(_0x3e0540,null));};exports[_0x5e8f('0xa3')]=function(_0x125753,_0x2e042a,_0x46819a){return db[_0x5e8f('0x41')]['findOne']({'where':{'id':_0x125753[_0x5e8f('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2e042a,null))[_0x5e8f('0x24')](function(_0x3cde88){if(_0x3cde88){return db[_0x5e8f('0xa4')]['transaction'](function(_0x26fdc0){return db['OpenchannelApplication']['destroy']({'where':{'OpenchannelAccountId':_0x125753['params']['id']},'transaction':_0x26fdc0})[_0x5e8f('0x24')](function(_0x51c4d2){var _0x36a6b2=_[_0x5e8f('0x40')](_0x125753[_0x5e8f('0x63')],function(_0xdc2f39){_0xdc2f39[_0x5e8f('0x66')]=_0x125753[_0x5e8f('0x5a')]['id'];return _0xdc2f39;});return db['OpenchannelApplication'][_0x5e8f('0xa5')](_0x36a6b2,{'transaction':_0x26fdc0});});})['then'](function(){return db[_0x5e8f('0x82')]['findAndCountAll']({'where':{'OpenchannelAccountId':_0x125753[_0x5e8f('0x5a')]['id']},'order':'priority'});});}})[_0x5e8f('0x24')](respondWithResult(_0x2e042a,null))[_0x5e8f('0x2c')](handleError(_0x2e042a,null));};exports['getApplications']=function(_0x2fc9f6,_0x275d39,_0xf126fe){var _0x5dc579={};var _0x53e6fd={};var _0x1fd2f2;var _0x54ee9e;return db[_0x5e8f('0x41')][_0x5e8f('0x69')]({'where':{'id':_0x2fc9f6[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0x275d39,null))[_0x5e8f('0x24')](function(_0x258610){if(_0x258610){_0x1fd2f2=_0x258610;_0x53e6fd[_0x5e8f('0x48')]=_[_0x5e8f('0x46')](db[_0x5e8f('0x82')][_0x5e8f('0x42')]);_0x53e6fd[_0x5e8f('0x45')]=_[_0x5e8f('0x46')](_0x2fc9f6[_0x5e8f('0x45')]);_0x53e6fd['filters']=_[_0x5e8f('0x4a')](_0x53e6fd[_0x5e8f('0x48')],_0x53e6fd[_0x5e8f('0x45')]);_0x5dc579[_0x5e8f('0x49')]=_['intersection'](_0x53e6fd[_0x5e8f('0x48')],qs['fields'](_0x2fc9f6[_0x5e8f('0x45')]['fields']));_0x5dc579[_0x5e8f('0x49')]=_0x5dc579[_0x5e8f('0x49')][_0x5e8f('0x4c')]?_0x5dc579['attributes']:_0x53e6fd[_0x5e8f('0x48')];_0x5dc579[_0x5e8f('0x4f')]=qs[_0x5e8f('0x50')](_0x2fc9f6[_0x5e8f('0x45')][_0x5e8f('0x50')]);_0x5dc579[_0x5e8f('0x51')]=qs[_0x5e8f('0x47')](_['pick'](_0x2fc9f6[_0x5e8f('0x45')],_0x53e6fd['filters']));if(_0x2fc9f6[_0x5e8f('0x45')]['filter']){_0x5dc579[_0x5e8f('0x51')]=_[_0x5e8f('0x54')](_0x5dc579[_0x5e8f('0x51')],{'$or':_[_0x5e8f('0x40')](_0x5dc579['attributes'],function(_0x58ce2c){var _0xb3627a={};_0xb3627a[_0x58ce2c]={'$like':'%'+_0x2fc9f6['query']['filter']+'%'};return _0xb3627a;})});}_0x5dc579=_['merge']({},_0x5dc579,_0x2fc9f6['options']);return _0x1fd2f2[_0x5e8f('0xa6')](_0x5dc579);}})[_0x5e8f('0x24')](function(_0x3a621c){if(_0x3a621c){_0x54ee9e=_0x3a621c[_0x5e8f('0x4c')];if(!_0x2fc9f6[_0x5e8f('0x45')][_0x5e8f('0x4d')](_0x5e8f('0x4e'))){_0x5dc579['limit']=qs[_0x5e8f('0x32')](_0x2fc9f6[_0x5e8f('0x45')][_0x5e8f('0x32')]);_0x5dc579[_0x5e8f('0x31')]=qs[_0x5e8f('0x31')](_0x2fc9f6[_0x5e8f('0x45')][_0x5e8f('0x31')]);}return _0x1fd2f2['getApplications'](_0x5dc579);}})[_0x5e8f('0x24')](function(_0x413bfa){if(_0x413bfa){return _0x413bfa?{'count':_0x54ee9e,'rows':_0x413bfa}:null;}})['then'](respondWithResult(_0x275d39,null))[_0x5e8f('0x2c')](handleError(_0x275d39,null));};exports['getInteractions']=function(_0x1315cd,_0x428322,_0x1963fe){var _0x13e07b={'raw':![],'where':{}};var _0x5cd851={};var _0x392eb7={'count':0x0,'rows':[]};return db[_0x5e8f('0x41')]['findOne']({'where':{'id':_0x1315cd[_0x5e8f('0x5a')]['id']}})['then'](handleEntityNotFound(_0x428322,null))[_0x5e8f('0x24')](function(_0x2a3337){if(_0x2a3337){_0x5cd851[_0x5e8f('0x48')]=_[_0x5e8f('0x46')](db[_0x5e8f('0x8f')][_0x5e8f('0x42')]);_0x5cd851['query']=_[_0x5e8f('0x46')](_0x1315cd['query']);_0x5cd851['filters']=_[_0x5e8f('0x4a')](_0x5cd851[_0x5e8f('0x48')],_0x5cd851[_0x5e8f('0x45')]);_0x13e07b[_0x5e8f('0x49')]=_[_0x5e8f('0x4a')](_0x5cd851[_0x5e8f('0x48')],qs[_0x5e8f('0x4b')](_0x1315cd[_0x5e8f('0x45')][_0x5e8f('0x4b')]));_0x13e07b['attributes']=_0x13e07b[_0x5e8f('0x49')][_0x5e8f('0x4c')]?_0x13e07b[_0x5e8f('0x49')]:_0x5cd851[_0x5e8f('0x48')];if(!_0x1315cd['query'][_0x5e8f('0x4d')](_0x5e8f('0x4e'))){_0x13e07b[_0x5e8f('0x32')]=qs[_0x5e8f('0x32')](_0x1315cd['query']['limit']);_0x13e07b[_0x5e8f('0x31')]=qs[_0x5e8f('0x31')](_0x1315cd[_0x5e8f('0x45')][_0x5e8f('0x31')]);}_0x13e07b[_0x5e8f('0x4f')]=qs['sort'](_0x1315cd[_0x5e8f('0x45')][_0x5e8f('0x50')]);_0x13e07b[_0x5e8f('0x51')]=qs[_0x5e8f('0x47')](_[_0x5e8f('0x52')](_0x1315cd[_0x5e8f('0x45')],_0x5cd851[_0x5e8f('0x47')]));_0x13e07b['where'][_0x5e8f('0x66')]=_0x2a3337['id'];if(_0x1315cd['query'][_0x5e8f('0x53')]){_0x13e07b[_0x5e8f('0x51')]=_[_0x5e8f('0x54')](_0x13e07b[_0x5e8f('0x51')],{'$or':_[_0x5e8f('0x40')](_0x13e07b['attributes'],function(_0x111178){var _0xfc9eec={};_0xfc9eec[_0x111178]={'$like':'%'+_0x1315cd[_0x5e8f('0x45')][_0x5e8f('0x53')]+'%'};return _0xfc9eec;})});}_0x13e07b=_[_0x5e8f('0x54')]({},_0x13e07b,_0x1315cd[_0x5e8f('0x55')]);return db[_0x5e8f('0x8f')][_0x5e8f('0x33')]({'where':_0x13e07b[_0x5e8f('0x51')]})[_0x5e8f('0x24')](function(_0x3dd728){_0x392eb7[_0x5e8f('0x33')]=_0x3dd728;if(_0x1315cd['query']['includeAll']){_0x13e07b['include']=[{'model':db[_0x5e8f('0x6f')],'as':'Contact','required':![]},{'model':db[_0x5e8f('0x9b')],'as':'Owner','attributes':[_0x5e8f('0x3c'),'fullname',_0x5e8f('0xa7')],'required':![]},{'model':db[_0x5e8f('0xa8')],'as':_0x5e8f('0xa9'),'attributes':['id',_0x5e8f('0x3c'),_0x5e8f('0xaa')],'where':_0x1315cd['query'][_0x5e8f('0xab')]?{'id':_0x1315cd[_0x5e8f('0x45')][_0x5e8f('0xab')]}:undefined,'required':_0x1315cd[_0x5e8f('0x45')][_0x5e8f('0xab')]?!![]:![]}];}return db[_0x5e8f('0x8f')][_0x5e8f('0x57')](_0x13e07b);})[_0x5e8f('0x24')](function(_0x548bbe){_0x392eb7[_0x5e8f('0x58')]=_0x548bbe;return _0x392eb7;});}})[_0x5e8f('0x24')](respondWithFilteredResult(_0x428322,_0x13e07b))['catch'](handleError(_0x428322,null));};exports['addAgents']=function(_0x10f9f1,_0x41ead5,_0x3d567e){return db[_0x5e8f('0x41')][_0x5e8f('0x5d')]({'where':{'id':_0x10f9f1[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0x41ead5,null))[_0x5e8f('0x24')](function(_0x1851e1){if(_0x1851e1){return _0x1851e1[_0x5e8f('0xac')](_0x10f9f1[_0x5e8f('0x63')][_0x5e8f('0x6c')],_[_0x5e8f('0xad')](_0x10f9f1[_0x5e8f('0x63')],[_0x5e8f('0x6c'),'id'])||{})[_0x5e8f('0x91')](function(_0x23ff2b){for(var _0x3f750b=0x0;_0x3f750b<_0x10f9f1[_0x5e8f('0x63')][_0x5e8f('0x6c')][_0x5e8f('0x4c')];_0x3f750b+=0x1){socket[_0x5e8f('0xae')](_0x5e8f('0xaf'),{'UserId':Number(_0x10f9f1[_0x5e8f('0x63')][_0x5e8f('0x6c')][_0x3f750b]),'OpenchannelAccountId':Number(_0x10f9f1['params']['id'])});}return _0x23ff2b;});}})[_0x5e8f('0x24')](respondWithResult(_0x41ead5,null))['catch'](handleError(_0x41ead5,null));};exports[_0x5e8f('0xb0')]=function(_0x3ee764,_0x48ec00,_0xd32b92){return db[_0x5e8f('0x41')]['find']({'where':{'id':_0x3ee764[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0x48ec00,null))[_0x5e8f('0x24')](function(_0x12af2c){if(_0x12af2c){return _0x12af2c['removeAgents'](_0x3ee764[_0x5e8f('0x45')]['ids'])['then'](function(){if(_[_0x5e8f('0xb1')](_0x3ee764[_0x5e8f('0x45')][_0x5e8f('0x6c')])){for(var _0x527355=0x0;_0x527355<_0x3ee764[_0x5e8f('0x45')][_0x5e8f('0x6c')][_0x5e8f('0x4c')];_0x527355+=0x1){socket[_0x5e8f('0xae')](_0x5e8f('0xb2'),{'UserId':Number(_0x3ee764[_0x5e8f('0x45')][_0x5e8f('0x6c')][_0x527355]),'OpenchannelAccountId':Number(_0x3ee764['params']['id'])});}}else{socket[_0x5e8f('0xae')](_0x5e8f('0xb2'),{'UserId':Number(_0x3ee764[_0x5e8f('0x45')][_0x5e8f('0x6c')]),'OpenchannelAccountId':Number(_0x3ee764['params']['id'])});}});}})[_0x5e8f('0x24')](respondWithStatusCode(_0x48ec00,null))[_0x5e8f('0x2c')](handleError(_0x48ec00,null));};exports['getAgents']=function(_0x429bf5,_0x42e2bb,_0x59bf76){var _0x1bdbb5={};var _0x53f108={};var _0x5ebdca;var _0x538984;return db[_0x5e8f('0x41')][_0x5e8f('0x69')]({'where':{'id':_0x429bf5['params']['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0x42e2bb,null))[_0x5e8f('0x24')](function(_0x1e2da4){if(_0x1e2da4){_0x5ebdca=_0x1e2da4;_0x53f108[_0x5e8f('0x48')]=_[_0x5e8f('0x46')](db[_0x5e8f('0x9b')][_0x5e8f('0x42')]);_0x53f108[_0x5e8f('0x45')]=_['keys'](_0x429bf5[_0x5e8f('0x45')]);_0x53f108[_0x5e8f('0x47')]=_[_0x5e8f('0x4a')](_0x53f108[_0x5e8f('0x48')],_0x53f108[_0x5e8f('0x45')]);_0x1bdbb5[_0x5e8f('0x49')]=_['intersection'](_0x53f108['model'],qs[_0x5e8f('0x4b')](_0x429bf5[_0x5e8f('0x45')]['fields']));_0x1bdbb5['attributes']=_0x1bdbb5[_0x5e8f('0x49')]['length']?_0x1bdbb5['attributes']:_0x53f108[_0x5e8f('0x48')];_0x1bdbb5[_0x5e8f('0x4f')]=qs[_0x5e8f('0x50')](_0x429bf5['query'][_0x5e8f('0x50')]);_0x1bdbb5[_0x5e8f('0x51')]=qs['filters'](_[_0x5e8f('0x52')](_0x429bf5[_0x5e8f('0x45')],_0x53f108[_0x5e8f('0x47')]));if(_0x429bf5[_0x5e8f('0x45')][_0x5e8f('0x53')]){_0x1bdbb5[_0x5e8f('0x51')]=_[_0x5e8f('0x54')](_0x1bdbb5[_0x5e8f('0x51')],{'$or':_[_0x5e8f('0x40')](_0x1bdbb5['attributes'],function(_0x4dd0ec){var _0x23cc8b={};_0x23cc8b[_0x4dd0ec]={'$like':'%'+_0x429bf5[_0x5e8f('0x45')][_0x5e8f('0x53')]+'%'};return _0x23cc8b;})});}_0x1bdbb5=_[_0x5e8f('0x54')]({},_0x1bdbb5,_0x429bf5[_0x5e8f('0x55')]);return _0x5ebdca[_0x5e8f('0xb3')](_0x1bdbb5);}})['then'](function(_0x34c542){if(_0x34c542){_0x538984=_0x34c542['length'];if(!_0x429bf5[_0x5e8f('0x45')]['hasOwnProperty'](_0x5e8f('0x4e'))){_0x1bdbb5[_0x5e8f('0x32')]=qs['limit'](_0x429bf5[_0x5e8f('0x45')][_0x5e8f('0x32')]);_0x1bdbb5[_0x5e8f('0x31')]=qs[_0x5e8f('0x31')](_0x429bf5[_0x5e8f('0x45')]['offset']);}return _0x5ebdca[_0x5e8f('0xb3')](_0x1bdbb5);}})[_0x5e8f('0x24')](function(_0x5704ce){if(_0x5704ce){return _0x5704ce?{'count':_0x538984,'rows':_0x5704ce}:null;}})[_0x5e8f('0x24')](respondWithResult(_0x42e2bb,null))[_0x5e8f('0x2c')](handleError(_0x42e2bb,null));};exports[_0x5e8f('0x3d')]=function(_0x59129f,_0xe6159b,_0x564e6c){var _0xac40cf,_0x2822cf,_0x1ae6ab;if(_[_0x5e8f('0x75')](_0x59129f[_0x5e8f('0x63')][_0x5e8f('0x63')])||_0x59129f[_0x5e8f('0x63')]['body']===''){throw new db[(_0x5e8f('0x76'))]['ValidationError'](_0x5e8f('0x79'));}if(_[_0x5e8f('0x75')](_0x59129f[_0x5e8f('0x63')]['to'])){}_0xac40cf=_0x59129f['body']['to'];return db['OpenchannelAccount'][_0x5e8f('0x69')]({'where':{'id':_0x59129f[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0xe6159b,null))[_0x5e8f('0x24')](function(_0x5f04bf){if(_0x5f04bf){return db[_0x5e8f('0x41')][_0x5e8f('0x5d')]({'where':{'id':_0x5f04bf['id']},'include':[{'model':db[_0x5e8f('0x7f')],'as':_0x5e8f('0x80'),'include':[{'model':db[_0x5e8f('0x6f')],'as':_0x5e8f('0x8a'),'where':{[_0x5f04bf['mapKey']]:_0xac40cf},'limit':0x1,'order':[[_0x5e8f('0x72'),_0x5e8f('0x81')]]}]}]})[_0x5e8f('0x24')](handleEntityNotFound(_0xe6159b,null))[_0x5e8f('0x24')](function(_0x51d052){if(_0x51d052&&_0x51d052[_0x5e8f('0x80')]){_0x2822cf=_0x51d052[_0x5e8f('0x38')]({'plain':!![]});if(_0x2822cf['List']&&_0x2822cf[_0x5e8f('0x80')][_0x5e8f('0x8a')][_0x5e8f('0x4c')]){return _0x2822cf[_0x5e8f('0x80')]['Contacts'][0x0];}return db['CmContact'][_0x5e8f('0x5e')](_[_0x5e8f('0x1b')](_0x59129f[_0x5e8f('0x63')],{'firstName':_0xac40cf,[_0x51d052[_0x5e8f('0x7c')]]:_0xac40cf,'phone':_0xac40cf,'ListId':_0x2822cf[_0x5e8f('0x8b')]}));}})[_0x5e8f('0x24')](handleEntityNotFound(_0xe6159b,null))[_0x5e8f('0x24')](function(_0x2d6c67){if(_0x2d6c67){_0x1ae6ab=_0x2d6c67;return db['OpenchannelInteraction']['find']({'where':{'ContactId':_0x1ae6ab['id'],'closed':![],'OpenchannelAccountId':_0x2822cf['id']}})[_0x5e8f('0x24')](function(_0x333d5e){if(_0x333d5e){return[_0x333d5e,![]];}return db['OpenchannelInteraction'][_0x5e8f('0x5e')]({'UserId':_0x59129f['user']['id'],'ContactId':_0x1ae6ab['id'],'OpenchannelAccountId':_0x2822cf['id'],'lastMsgDirection':_0x5e8f('0xb4'),'Messages':[_[_0x5e8f('0x54')](_0x59129f[_0x5e8f('0x63')],{'read':![],'body':_0x59129f[_0x5e8f('0x63')][_0x5e8f('0x63')],'OpenchannelAccountId':_0x2822cf['id'],'UserId':_0x59129f[_0x5e8f('0x5f')]['id'],'ContactId':_0x1ae6ab['id']})]},{'include':[{'model':db[_0x5e8f('0x98')],'as':'Messages'}]})['then'](function(_0x5677f4){return[_0x5677f4,!![]];});});}})['spread'](function(_0x31f5fa,_0xb362cf){if(_0xb362cf){return _0x31f5fa;}return db[_0x5e8f('0x98')][_0x5e8f('0x5e')](_[_0x5e8f('0x54')](_0x59129f[_0x5e8f('0x63')],{'read':![],'body':_0x59129f[_0x5e8f('0x63')]['body'],'OpenchannelAccountId':_0x2822cf['id'],'OpenchannelInteractionId':_0x31f5fa['id'],'UserId':_0x59129f[_0x5e8f('0x5f')]['id'],'ContactId':_0x1ae6ab['id']}))[_0x5e8f('0x24')](function(_0x219fc0){_0x31f5fa[_0x5e8f('0xb5')][_0x5e8f('0xb6')]=[];_0x31f5fa[_0x5e8f('0xb5')][_0x5e8f('0xb6')][_0x5e8f('0x96')](_0x219fc0[_0x5e8f('0xb5')]);return _0x31f5fa;});});}})['then'](respondWithResult(_0xe6159b,null))[_0x5e8f('0x2c')](handleError(_0xe6159b,null));};
\ No newline at end of file
index 90636a8..e54b1aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb688=['../../mysqldb','OpenchannelAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x3b5226,_0x496a84){var _0x3a13d1=function(_0x22a1f8){while(--_0x22a1f8){_0x3b5226['push'](_0x3b5226['shift']());}};_0x3a13d1(++_0x496a84);}(_0xb688,0xcf));var _0x8b68=function(_0x11a0a1,_0x3596e9){_0x11a0a1=_0x11a0a1-0x0;var _0x4a6e2f=_0xb688[_0x11a0a1];return _0x4a6e2f;};'use strict';var EventEmitter=require('events');var OpenchannelAccount=require(_0x8b68('0x0'))['db'][_0x8b68('0x1')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x8b68('0x2')](0x0);var events={'afterCreate':_0x8b68('0x3'),'afterUpdate':_0x8b68('0x4'),'afterDestroy':_0x8b68('0x5')};function emitEvent(_0x4e281c){return function(_0x41030e,_0x27925d,_0x30f33d){OpenchannelAccountEvents[_0x8b68('0x6')](_0x4e281c+':'+_0x41030e['id'],_0x41030e);OpenchannelAccountEvents['emit'](_0x4e281c,_0x41030e);_0x30f33d(null);};}for(var e in events){if(events[_0x8b68('0x7')](e)){var event=events[e];OpenchannelAccount['hook'](e,emitEvent(event));}}module[_0x8b68('0x8')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0x55e0=['remove','emit','hook','events','../../mysqldb','OpenchannelAccount','setMaxListeners'];(function(_0x5df35c,_0x2ab072){var _0x5233be=function(_0x52649a){while(--_0x52649a){_0x5df35c['push'](_0x5df35c['shift']());}};_0x5233be(++_0x2ab072);}(_0x55e0,0xdc));var _0x055e=function(_0x4fdb3d,_0x43d139){_0x4fdb3d=_0x4fdb3d-0x0;var _0x57f4a3=_0x55e0[_0x4fdb3d];return _0x57f4a3;};'use strict';var EventEmitter=require(_0x055e('0x0'));var OpenchannelAccount=require(_0x055e('0x1'))['db'][_0x055e('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x055e('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x055e('0x4')};function emitEvent(_0x2d9bd5){return function(_0x33cd7b,_0x2773e4,_0x157473){OpenchannelAccountEvents[_0x055e('0x5')](_0x2d9bd5+':'+_0x33cd7b['id'],_0x33cd7b);OpenchannelAccountEvents['emit'](_0x2d9bd5,_0x33cd7b);_0x157473(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelAccount[_0x055e('0x6')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
index 2bb0a56..26d3938 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(_0x42e5ea,_0x2a85be){var _0x34f510=function(_0x339688){while(--_0x339688){_0x42e5ea['push'](_0x42e5ea['shift']());}};_0x34f510(++_0x2a85be);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'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(_0x7909a9,_0x52e14e){var _0x2b3e59=function(_0x1c0d0c){while(--_0x1c0d0c){_0x7909a9['push'](_0x7909a9['shift']());}};_0x2b3e59(++_0x52e14e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xa9e0[_0x4e1d03];return _0x362d4b;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 184e6d2..b6d9fe8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9be=['../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./openchannelAccount.socket','register','then','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x1d211b,_0x475f3b){var _0x47c88b=function(_0x3126f5){while(--_0x3126f5){_0x1d211b['push'](_0x1d211b['shift']());}};_0x47c88b(++_0x475f3b);}(_0xb9be,0xc5));var _0xeb9b=function(_0xa79977,_0x4f7f12){_0xa79977=_0xa79977-0x0;var _0x109f10=_0xb9be[_0xa79977];return _0x109f10;};'use strict';var _=require(_0xeb9b('0x0'));var util=require(_0xeb9b('0x1'));var moment=require(_0xeb9b('0x2'));var BPromise=require(_0xeb9b('0x3'));var rs=require(_0xeb9b('0x4'));var fs=require('fs');var Redis=require(_0xeb9b('0x5'));var db=require(_0xeb9b('0x6'))['db'];var utils=require(_0xeb9b('0x7'));var logger=require(_0xeb9b('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0xeb9b('0x9'));var client=jayson[_0xeb9b('0xa')][_0xeb9b('0xb')]({'port':0x232a});config['redis']=_[_0xeb9b('0xc')](config[_0xeb9b('0xd')],{'host':_0xeb9b('0xe'),'port':0x18eb});var socket=require(_0xeb9b('0xf'))(new Redis(config[_0xeb9b('0xd')]));require(_0xeb9b('0x10'))[_0xeb9b('0x11')](socket);function respondWithRpcPromise(_0x16761a,_0x32f0c4,_0x4f4952){return new BPromise(function(_0x20c855,_0x58d6a4){return client['request'](_0x16761a,_0x4f4952)[_0xeb9b('0x12')](function(_0x4236c0){logger['info'](_0xeb9b('0x13'),_0x32f0c4,_0xeb9b('0x14'));logger[_0xeb9b('0x15')](_0xeb9b('0x16'),_0x32f0c4,'request\x20sent',JSON['stringify'](_0x4236c0));if(_0x4236c0['error']){if(_0x4236c0[_0xeb9b('0x17')][_0xeb9b('0x18')]===0x1f4){logger[_0xeb9b('0x17')]('OpenchannelAccount,\x20%s,\x20%s',_0x32f0c4,_0x4236c0['error']['message']);return _0x58d6a4(_0x4236c0[_0xeb9b('0x17')][_0xeb9b('0x19')]);}logger[_0xeb9b('0x17')](_0xeb9b('0x13'),_0x32f0c4,_0x4236c0[_0xeb9b('0x17')][_0xeb9b('0x19')]);return _0x20c855(_0x4236c0[_0xeb9b('0x17')]['message']);}else{logger[_0xeb9b('0x1a')](_0xeb9b('0x13'),_0x32f0c4,_0xeb9b('0x14'));_0x20c855(_0x4236c0[_0xeb9b('0x1b')][_0xeb9b('0x19')]);}})[_0xeb9b('0x1c')](function(_0x21010e){logger[_0xeb9b('0x17')](_0xeb9b('0x13'),_0x32f0c4,_0x21010e);_0x58d6a4(_0x21010e);});});}
\ No newline at end of file
+var _0x263f=['../../config/utils','../../config/logger','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./openchannelAccount.socket','register','then','info','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','OpenchannelAccount,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x263f,0x182));var _0xf263=function(_0x24f8fb,_0xf33de2){_0x24f8fb=_0x24f8fb-0x0;var _0x40c7fe=_0x263f[_0x24f8fb];return _0x40c7fe;};'use strict';var _=require(_0xf263('0x0'));var util=require(_0xf263('0x1'));var moment=require(_0xf263('0x2'));var BPromise=require(_0xf263('0x3'));var rs=require(_0xf263('0x4'));var fs=require('fs');var Redis=require(_0xf263('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf263('0x6'));var logger=require(_0xf263('0x7'))(_0xf263('0x8'));var config=require('../../config/environment');var jayson=require(_0xf263('0x9'));var client=jayson[_0xf263('0xa')]['http']({'port':0x232a});config['redis']=_[_0xf263('0xb')](config[_0xf263('0xc')],{'host':_0xf263('0xd'),'port':0x18eb});var socket=require(_0xf263('0xe'))(new Redis(config['redis']));require(_0xf263('0xf'))[_0xf263('0x10')](socket);function respondWithRpcPromise(_0x3d8092,_0x34c634,_0xb9fb31){return new BPromise(function(_0x4fc090,_0x1e9057){return client['request'](_0x3d8092,_0xb9fb31)[_0xf263('0x11')](function(_0x48e586){logger[_0xf263('0x12')]('OpenchannelAccount,\x20%s,\x20%s',_0x34c634,'request\x20sent');logger[_0xf263('0x13')](_0xf263('0x14'),_0x34c634,_0xf263('0x15'),JSON[_0xf263('0x16')](_0x48e586));if(_0x48e586[_0xf263('0x17')]){if(_0x48e586[_0xf263('0x17')][_0xf263('0x18')]===0x1f4){logger['error'](_0xf263('0x19'),_0x34c634,_0x48e586['error'][_0xf263('0x1a')]);return _0x1e9057(_0x48e586[_0xf263('0x17')][_0xf263('0x1a')]);}logger[_0xf263('0x17')](_0xf263('0x19'),_0x34c634,_0x48e586[_0xf263('0x17')][_0xf263('0x1a')]);return _0x4fc090(_0x48e586['error']['message']);}else{logger[_0xf263('0x12')](_0xf263('0x19'),_0x34c634,_0xf263('0x15'));_0x4fc090(_0x48e586[_0xf263('0x1b')][_0xf263('0x1a')]);}})['catch'](function(_0x1adb66){logger['error'](_0xf263('0x19'),_0x34c634,_0x1adb66);_0x1e9057(_0x1adb66);});});}
\ No newline at end of file
index 276704c..5720cd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc36d=['update','emit','removeListener','register','openchannelAccount:','./openchannelAccount.events','save','remove'];(function(_0xecf9e4,_0x1331bf){var _0x15e498=function(_0x9b9026){while(--_0x9b9026){_0xecf9e4['push'](_0xecf9e4['shift']());}};_0x15e498(++_0x1331bf);}(_0xc36d,0x7d));var _0xdc36=function(_0xc0f3d0,_0x4cfe98){_0xc0f3d0=_0xc0f3d0-0x0;var _0x1798ba=_0xc36d[_0xc0f3d0];return _0x1798ba;};'use strict';var OpenchannelAccountEvents=require(_0xdc36('0x0'));var events=[_0xdc36('0x1'),_0xdc36('0x2'),_0xdc36('0x3')];function createListener(_0x471240,_0x2d5df5){return function(_0x4c42dd){_0x2d5df5[_0xdc36('0x4')](_0x471240,_0x4c42dd);};}function removeListener(_0x3431f9,_0x53ac17){return function(){OpenchannelAccountEvents[_0xdc36('0x5')](_0x3431f9,_0x53ac17);};}exports[_0xdc36('0x6')]=function(_0x186c58){for(var _0x11ad3b=0x0,_0x6e4753=events['length'];_0x11ad3b<_0x6e4753;_0x11ad3b++){var _0x20ba02=events[_0x11ad3b];var _0x456897=createListener(_0xdc36('0x7')+_0x20ba02,_0x186c58);OpenchannelAccountEvents['on'](_0x20ba02,_0x456897);}};
\ No newline at end of file
+var _0xc577=['./openchannelAccount.events','update','emit','register','length'];(function(_0x3d77e1,_0x356dfc){var _0x5a20be=function(_0x43e8ca){while(--_0x43e8ca){_0x3d77e1['push'](_0x3d77e1['shift']());}};_0x5a20be(++_0x356dfc);}(_0xc577,0x172));var _0x7c57=function(_0x3e7bb8,_0x11f26c){_0x3e7bb8=_0x3e7bb8-0x0;var _0x160bf4=_0xc577[_0x3e7bb8];return _0x160bf4;};'use strict';var OpenchannelAccountEvents=require(_0x7c57('0x0'));var events=['save','remove',_0x7c57('0x1')];function createListener(_0x35af09,_0xe9a500){return function(_0x2a2415){_0xe9a500[_0x7c57('0x2')](_0x35af09,_0x2a2415);};}function removeListener(_0x304922,_0x2ea08b){return function(){OpenchannelAccountEvents['removeListener'](_0x304922,_0x2ea08b);};}exports[_0x7c57('0x3')]=function(_0x1339b3){for(var _0xf50a9f=0x0,_0x2bc454=events[_0x7c57('0x4')];_0xf50a9f<_0x2bc454;_0xf50a9f++){var _0x4bb81b=events[_0xf50a9f];var _0x4e5cb2=createListener('openchannelAccount:'+_0x4bb81b,_0x1339b3);OpenchannelAccountEvents['on'](_0x4bb81b,_0x4e5cb2);}};
\ No newline at end of file
index a3082c9..b117167 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x795c=['path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','post','delete','exports','util'];(function(_0x308944,_0x1c462e){var _0x2bf805=function(_0x1e6564){while(--_0x1e6564){_0x308944['push'](_0x308944['shift']());}};_0x2bf805(++_0x1c462e);}(_0x795c,0x149));var _0xc795=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0x795c[_0x433a86];return _0x23000c;};'use strict';var multer=require('multer');var util=require(_0xc795('0x0'));var path=require(_0xc795('0x1'));var timeout=require(_0xc795('0x2'));var express=require(_0xc795('0x3'));var router=express[_0xc795('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc795('0x5'));var interaction=require(_0xc795('0x6'));var config=require(_0xc795('0x7'));var controller=require('./openchannelApplication.controller');router[_0xc795('0x8')]('/',auth[_0xc795('0x9')](),controller['index']);router[_0xc795('0x8')](_0xc795('0xa'),auth[_0xc795('0x9')](),controller[_0xc795('0xb')]);router[_0xc795('0xc')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xc795('0xa'),auth[_0xc795('0x9')](),controller['update']);router[_0xc795('0xd')](_0xc795('0xa'),auth[_0xc795('0x9')](),controller['destroy']);module[_0xc795('0xe')]=router;
\ No newline at end of file
+var _0x8ae8=['multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get','isAuthenticated','index','show','post','create','/:id','update','exports'];(function(_0x1a014b,_0x48acae){var _0x462258=function(_0x1473be){while(--_0x1473be){_0x1a014b['push'](_0x1a014b['shift']());}};_0x462258(++_0x48acae);}(_0x8ae8,0x130));var _0x88ae=function(_0x2f4b73,_0x18c42b){_0x2f4b73=_0x2f4b73-0x0;var _0x5bb898=_0x8ae8[_0x2f4b73];return _0x5bb898;};'use strict';var multer=require(_0x88ae('0x0'));var util=require(_0x88ae('0x1'));var path=require(_0x88ae('0x2'));var timeout=require(_0x88ae('0x3'));var express=require(_0x88ae('0x4'));var router=express['Router']();var fs_extra=require(_0x88ae('0x5'));var auth=require(_0x88ae('0x6'));var interaction=require(_0x88ae('0x7'));var config=require(_0x88ae('0x8'));var controller=require(_0x88ae('0x9'));router[_0x88ae('0xa')]('/',auth[_0x88ae('0xb')](),controller[_0x88ae('0xc')]);router[_0x88ae('0xa')]('/:id',auth[_0x88ae('0xb')](),controller[_0x88ae('0xd')]);router[_0x88ae('0xe')]('/',auth['isAuthenticated'](),controller[_0x88ae('0xf')]);router['put'](_0x88ae('0x10'),auth['isAuthenticated'](),controller[_0x88ae('0x11')]);router['delete']('/:id',auth[_0x88ae('0xb')](),controller['destroy']);module[_0x88ae('0x12')]=router;
\ No newline at end of file
index 8324ea7..18bb772 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf126=['STRING','TEXT','sequelize','exports','INTEGER'];(function(_0x906291,_0x505ff1){var _0x86c053=function(_0x1e50b2){while(--_0x1e50b2){_0x906291['push'](_0x906291['shift']());}};_0x86c053(++_0x505ff1);}(_0xf126,0xe3));var _0x6f12=function(_0x1191da,_0x1f49b7){_0x1191da=_0x1191da-0x0;var _0x288acf=_0xf126[_0x1191da];return _0x288acf;};'use strict';var Sequelize=require(_0x6f12('0x0'));module[_0x6f12('0x1')]={'priority':{'type':Sequelize[_0x6f12('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x6f12('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x6f12('0x4')]()},'description':{'type':Sequelize[_0x6f12('0x3')]},'interval':{'type':Sequelize[_0x6f12('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x4573=['sequelize','STRING','noop','*,*,*,*'];(function(_0x2c87a8,_0x50af87){var _0x45b027=function(_0x43e2fe){while(--_0x43e2fe){_0x2c87a8['push'](_0x2c87a8['shift']());}};_0x45b027(++_0x50af87);}(_0x4573,0x19c));var _0x3457=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4573[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x3457('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x3457('0x1')],'allowNull':![],'defaultValue':_0x3457('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x3457('0x1')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x3457('0x3')}};
\ No newline at end of file
index 885d5bc..e0318f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81f2=['count','set','Content-Range','json','apply','reject','save','update','then','stack','name','index','map','OpenchannelApplication','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','catch','show','params','include','find','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','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/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','limit'];(function(_0x42c383,_0x5b92b6){var _0x4aba3b=function(_0x2bfba3){while(--_0x2bfba3){_0x42c383['push'](_0x42c383['shift']());}};_0x4aba3b(++_0x5b92b6);}(_0x81f2,0x74));var _0x281f=function(_0x11de69,_0x46c7c6){_0x11de69=_0x11de69-0x0;var _0x211379=_0x81f2[_0x11de69];return _0x211379;};'use strict';var emlformat=require(_0x281f('0x0'));var rimraf=require(_0x281f('0x1'));var zipdir=require(_0x281f('0x2'));var jsonpatch=require(_0x281f('0x3'));var rp=require('request-promise');var moment=require(_0x281f('0x4'));var BPromise=require(_0x281f('0x5'));var Mustache=require(_0x281f('0x6'));var util=require(_0x281f('0x7'));var path=require(_0x281f('0x8'));var sox=require(_0x281f('0x9'));var csv=require(_0x281f('0xa'));var ejs=require(_0x281f('0xb'));var fs=require('fs');var fs_extra=require(_0x281f('0xc'));var _=require(_0x281f('0xd'));var squel=require(_0x281f('0xe'));var crypto=require(_0x281f('0xf'));var jsforce=require(_0x281f('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x281f('0xa'));var querystring=require(_0x281f('0x11'));var Papa=require(_0x281f('0x12'));var Redis=require(_0x281f('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x281f('0x14'));var as=require(_0x281f('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x281f('0x16'))(_0x281f('0x17'));var utils=require(_0x281f('0x18'));var config=require(_0x281f('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x281f('0x1a'))['db'];function respondWithStatusCode(_0x2c4b0a,_0x54716b){_0x54716b=_0x54716b||0xcc;return function(_0x533b7b){if(_0x533b7b){return _0x2c4b0a[_0x281f('0x1b')](_0x54716b);}return _0x2c4b0a[_0x281f('0x1c')](_0x54716b)['end']();};}function respondWithResult(_0x177e86,_0x58fe94){_0x58fe94=_0x58fe94||0xc8;return function(_0x344c66){if(_0x344c66){return _0x177e86['status'](_0x58fe94)['json'](_0x344c66);}};}function respondWithFilteredResult(_0x22f7c5,_0xaf1661){return function(_0x4c1e21){if(_0x4c1e21){var _0x2d3dfe=typeof _0xaf1661[_0x281f('0x1d')]===_0x281f('0x1e')&&typeof _0xaf1661[_0x281f('0x1f')]===_0x281f('0x1e');var _0x50fbc8=_0x4c1e21[_0x281f('0x20')];var _0x8511b0=_0x2d3dfe?0x0:_0xaf1661[_0x281f('0x1d')];var _0x17ffa0=_0x2d3dfe?_0x4c1e21[_0x281f('0x20')]:_0xaf1661[_0x281f('0x1d')]+_0xaf1661[_0x281f('0x1f')];var _0x1aab0e;if(_0x17ffa0>=_0x50fbc8){_0x17ffa0=_0x50fbc8;_0x1aab0e=0xc8;}else{_0x1aab0e=0xce;}_0x22f7c5['status'](_0x1aab0e);return _0x22f7c5[_0x281f('0x21')](_0x281f('0x22'),_0x8511b0+'-'+_0x17ffa0+'/'+_0x50fbc8)[_0x281f('0x23')](_0x4c1e21);}return null;};}function patchUpdates(_0x3b65e9){return function(_0x781182){try{jsonpatch[_0x281f('0x24')](_0x781182,_0x3b65e9,!![]);}catch(_0x3a2532){return BPromise[_0x281f('0x25')](_0x3a2532);}return _0x781182[_0x281f('0x26')]();};}function saveUpdates(_0x4d1b4d,_0x48879f){return function(_0x440ba1){if(_0x440ba1){return _0x440ba1[_0x281f('0x27')](_0x4d1b4d)[_0x281f('0x28')](function(_0x9f235a){return _0x9f235a;});}return null;};}function removeEntity(_0x1b9410,_0xadb44a){return function(_0x32224b){if(_0x32224b){return _0x32224b['destroy']()[_0x281f('0x28')](function(){_0x1b9410['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xc90d37,_0x19a426){return function(_0xb004f4){if(!_0xb004f4){_0xc90d37[_0x281f('0x1b')](0x194);}return _0xb004f4;};}function handleError(_0x1f02a4,_0x52863b){_0x52863b=_0x52863b||0x1f4;return function(_0x4967af){logger['error'](_0x4967af[_0x281f('0x29')]);if(_0x4967af[_0x281f('0x2a')]){delete _0x4967af['name'];}_0x1f02a4[_0x281f('0x1c')](_0x52863b)['send'](_0x4967af);};}exports[_0x281f('0x2b')]=function(_0x490d84,_0x7af41){var _0x27dbf6={},_0x393e9c={},_0x8839af={'count':0x0,'rows':[]};var _0x3c035f=_[_0x281f('0x2c')](db[_0x281f('0x2d')][_0x281f('0x2e')],function(_0x43bfef){return{'name':_0x43bfef[_0x281f('0x2f')],'type':_0x43bfef[_0x281f('0x30')]['key']};});_0x393e9c[_0x281f('0x31')]=_['map'](_0x3c035f,_0x281f('0x2a'));_0x393e9c['query']=_[_0x281f('0x32')](_0x490d84[_0x281f('0x33')]);_0x393e9c[_0x281f('0x34')]=_[_0x281f('0x35')](_0x393e9c[_0x281f('0x31')],_0x393e9c[_0x281f('0x33')]);_0x27dbf6[_0x281f('0x36')]=_[_0x281f('0x35')](_0x393e9c[_0x281f('0x31')],qs[_0x281f('0x37')](_0x490d84[_0x281f('0x33')]['fields']));_0x27dbf6[_0x281f('0x36')]=_0x27dbf6[_0x281f('0x36')][_0x281f('0x38')]?_0x27dbf6[_0x281f('0x36')]:_0x393e9c[_0x281f('0x31')];if(!_0x490d84['query'][_0x281f('0x39')]('nolimit')){_0x27dbf6[_0x281f('0x1f')]=qs['limit'](_0x490d84['query']['limit']);_0x27dbf6[_0x281f('0x1d')]=qs[_0x281f('0x1d')](_0x490d84[_0x281f('0x33')][_0x281f('0x1d')]);}_0x27dbf6['order']=qs['sort'](_0x490d84['query'][_0x281f('0x3a')]);_0x27dbf6[_0x281f('0x3b')]=qs[_0x281f('0x34')](_[_0x281f('0x3c')](_0x490d84[_0x281f('0x33')],_0x393e9c[_0x281f('0x34')]),_0x3c035f);if(_0x490d84[_0x281f('0x33')][_0x281f('0x3d')]){_0x27dbf6[_0x281f('0x3b')]=_[_0x281f('0x3e')](_0x27dbf6[_0x281f('0x3b')],{'$or':_[_0x281f('0x2c')](_0x3c035f,function(_0x2b6047){if(_0x2b6047[_0x281f('0x30')]!==_0x281f('0x3f')){var _0x4693d0={};_0x4693d0[_0x2b6047['name']]={'$like':'%'+_0x490d84['query'][_0x281f('0x3d')]+'%'};return _0x4693d0;}})});}_0x27dbf6=_['merge']({},_0x27dbf6,_0x490d84[_0x281f('0x40')]);var _0x3e3f7e={'where':_0x27dbf6[_0x281f('0x3b')]};return db['OpenchannelApplication'][_0x281f('0x20')](_0x3e3f7e)[_0x281f('0x28')](function(_0xcb8ccc){_0x8839af[_0x281f('0x20')]=_0xcb8ccc;if(_0x490d84[_0x281f('0x33')][_0x281f('0x41')]){_0x27dbf6['include']=[{'all':!![]}];}return db['OpenchannelApplication'][_0x281f('0x42')](_0x27dbf6);})['then'](function(_0x22d0b6){_0x8839af['rows']=_0x22d0b6;return _0x8839af;})[_0x281f('0x28')](respondWithFilteredResult(_0x7af41,_0x27dbf6))[_0x281f('0x43')](handleError(_0x7af41,null));};exports[_0x281f('0x44')]=function(_0x29d935,_0x1a1158){var _0x5ab695={'raw':!![],'where':{'id':_0x29d935[_0x281f('0x45')]['id']}},_0x4cc6ce={};_0x4cc6ce['model']=_[_0x281f('0x32')](db[_0x281f('0x2d')][_0x281f('0x2e')]);_0x4cc6ce[_0x281f('0x33')]=_[_0x281f('0x32')](_0x29d935['query']);_0x4cc6ce[_0x281f('0x34')]=_[_0x281f('0x35')](_0x4cc6ce[_0x281f('0x31')],_0x4cc6ce['query']);_0x5ab695['attributes']=_[_0x281f('0x35')](_0x4cc6ce[_0x281f('0x31')],qs[_0x281f('0x37')](_0x29d935[_0x281f('0x33')][_0x281f('0x37')]));_0x5ab695[_0x281f('0x36')]=_0x5ab695[_0x281f('0x36')]['length']?_0x5ab695[_0x281f('0x36')]:_0x4cc6ce[_0x281f('0x31')];if(_0x29d935[_0x281f('0x33')][_0x281f('0x41')]){_0x5ab695[_0x281f('0x46')]=[{'all':!![]}];}_0x5ab695=_[_0x281f('0x3e')]({},_0x5ab695,_0x29d935['options']);return db[_0x281f('0x2d')][_0x281f('0x47')](_0x5ab695)[_0x281f('0x28')](handleEntityNotFound(_0x1a1158,null))[_0x281f('0x28')](respondWithResult(_0x1a1158,null))[_0x281f('0x43')](handleError(_0x1a1158,null));};exports['create']=function(_0x5f12d,_0x10c134){return db[_0x281f('0x2d')]['create'](_0x5f12d[_0x281f('0x48')],{})['then'](respondWithResult(_0x10c134,0xc9))[_0x281f('0x43')](handleError(_0x10c134,null));};exports[_0x281f('0x27')]=function(_0x26cb34,_0x24687a){if(_0x26cb34[_0x281f('0x48')]['id']){delete _0x26cb34[_0x281f('0x48')]['id'];}return db['OpenchannelApplication']['find']({'where':{'id':_0x26cb34[_0x281f('0x45')]['id']}})[_0x281f('0x28')](handleEntityNotFound(_0x24687a,null))[_0x281f('0x28')](saveUpdates(_0x26cb34[_0x281f('0x48')],null))[_0x281f('0x28')](respondWithResult(_0x24687a,null))[_0x281f('0x43')](handleError(_0x24687a,null));};exports[_0x281f('0x49')]=function(_0x3bef8a,_0x1e41ef){return db['OpenchannelApplication']['find']({'where':{'id':_0x3bef8a[_0x281f('0x45')]['id']}})['then'](handleEntityNotFound(_0x1e41ef,null))['then'](removeEntity(_0x1e41ef,null))[_0x281f('0x43')](handleError(_0x1e41ef,null));};
\ No newline at end of file
+var _0xbdcf=['catch','find','create','body','params','destroy','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','update','then','error','stack','name','map','OpenchannelApplication','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','options','includeAll','include','findAll','rows'];(function(_0x18a702,_0x26aebd){var _0xa901db=function(_0x1c14c5){while(--_0x1c14c5){_0x18a702['push'](_0x18a702['shift']());}};_0xa901db(++_0x26aebd);}(_0xbdcf,0x9a));var _0xfbdc=function(_0x120e98,_0x3d320e){_0x120e98=_0x120e98-0x0;var _0x3eaf7f=_0xbdcf[_0x120e98];return _0x3eaf7f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfbdc('0x0'));var zipdir=require(_0xfbdc('0x1'));var jsonpatch=require(_0xfbdc('0x2'));var rp=require(_0xfbdc('0x3'));var moment=require(_0xfbdc('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xfbdc('0x5'));var util=require(_0xfbdc('0x6'));var path=require(_0xfbdc('0x7'));var sox=require('sox');var csv=require(_0xfbdc('0x8'));var ejs=require(_0xfbdc('0x9'));var fs=require('fs');var fs_extra=require(_0xfbdc('0xa'));var _=require(_0xfbdc('0xb'));var squel=require(_0xfbdc('0xc'));var crypto=require(_0xfbdc('0xd'));var jsforce=require(_0xfbdc('0xe'));var deskjs=require(_0xfbdc('0xf'));var toCsv=require('to-csv');var querystring=require(_0xfbdc('0x10'));var Papa=require('papaparse');var Redis=require(_0xfbdc('0x11'));var authService=require(_0xfbdc('0x12'));var qs=require(_0xfbdc('0x13'));var as=require(_0xfbdc('0x14'));var hardwareService=require(_0xfbdc('0x15'));var logger=require(_0xfbdc('0x16'))(_0xfbdc('0x17'));var utils=require(_0xfbdc('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xfbdc('0x19'))['db'];function respondWithStatusCode(_0x3b7b36,_0x163e50){_0x163e50=_0x163e50||0xcc;return function(_0x4e57ad){if(_0x4e57ad){return _0x3b7b36[_0xfbdc('0x1a')](_0x163e50);}return _0x3b7b36[_0xfbdc('0x1b')](_0x163e50)[_0xfbdc('0x1c')]();};}function respondWithResult(_0x5b356d,_0x16f1c9){_0x16f1c9=_0x16f1c9||0xc8;return function(_0xabc0cb){if(_0xabc0cb){return _0x5b356d['status'](_0x16f1c9)[_0xfbdc('0x1d')](_0xabc0cb);}};}function respondWithFilteredResult(_0x1c73cb,_0x1942b4){return function(_0x1ee07a){if(_0x1ee07a){var _0x184249=typeof _0x1942b4[_0xfbdc('0x1e')]==='undefined'&&typeof _0x1942b4[_0xfbdc('0x1f')]===_0xfbdc('0x20');var _0x52ccc8=_0x1ee07a[_0xfbdc('0x21')];var _0x15a2c2=_0x184249?0x0:_0x1942b4['offset'];var _0x155029=_0x184249?_0x1ee07a[_0xfbdc('0x21')]:_0x1942b4['offset']+_0x1942b4[_0xfbdc('0x1f')];var _0x15ad0f;if(_0x155029>=_0x52ccc8){_0x155029=_0x52ccc8;_0x15ad0f=0xc8;}else{_0x15ad0f=0xce;}_0x1c73cb['status'](_0x15ad0f);return _0x1c73cb[_0xfbdc('0x22')]('Content-Range',_0x15a2c2+'-'+_0x155029+'/'+_0x52ccc8)[_0xfbdc('0x1d')](_0x1ee07a);}return null;};}function patchUpdates(_0x26db65){return function(_0x2bd441){try{jsonpatch[_0xfbdc('0x23')](_0x2bd441,_0x26db65,!![]);}catch(_0x5d7109){return BPromise[_0xfbdc('0x24')](_0x5d7109);}return _0x2bd441['save']();};}function saveUpdates(_0x2523ca,_0x45a160){return function(_0x33b7f8){if(_0x33b7f8){return _0x33b7f8[_0xfbdc('0x25')](_0x2523ca)[_0xfbdc('0x26')](function(_0x29a59e){return _0x29a59e;});}return null;};}function removeEntity(_0x311aab,_0x31671b){return function(_0x54b8f4){if(_0x54b8f4){return _0x54b8f4['destroy']()['then'](function(){_0x311aab['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b66e2,_0x91e9c5){return function(_0x2e8c6b){if(!_0x2e8c6b){_0x4b66e2[_0xfbdc('0x1a')](0x194);}return _0x2e8c6b;};}function handleError(_0x2db290,_0x2c6938){_0x2c6938=_0x2c6938||0x1f4;return function(_0x2d8c3d){logger[_0xfbdc('0x27')](_0x2d8c3d[_0xfbdc('0x28')]);if(_0x2d8c3d[_0xfbdc('0x29')]){delete _0x2d8c3d[_0xfbdc('0x29')];}_0x2db290['status'](_0x2c6938)['send'](_0x2d8c3d);};}exports['index']=function(_0x1856a5,_0x52a888){var _0x36e608={},_0x45b535={},_0x85595a={'count':0x0,'rows':[]};var _0x3ee355=_[_0xfbdc('0x2a')](db[_0xfbdc('0x2b')][_0xfbdc('0x2c')],function(_0x1cba4f){return{'name':_0x1cba4f[_0xfbdc('0x2d')],'type':_0x1cba4f['type'][_0xfbdc('0x2e')]};});_0x45b535[_0xfbdc('0x2f')]=_[_0xfbdc('0x2a')](_0x3ee355,_0xfbdc('0x29'));_0x45b535['query']=_[_0xfbdc('0x30')](_0x1856a5[_0xfbdc('0x31')]);_0x45b535[_0xfbdc('0x32')]=_[_0xfbdc('0x33')](_0x45b535[_0xfbdc('0x2f')],_0x45b535[_0xfbdc('0x31')]);_0x36e608[_0xfbdc('0x34')]=_[_0xfbdc('0x33')](_0x45b535[_0xfbdc('0x2f')],qs[_0xfbdc('0x35')](_0x1856a5[_0xfbdc('0x31')][_0xfbdc('0x35')]));_0x36e608[_0xfbdc('0x34')]=_0x36e608[_0xfbdc('0x34')][_0xfbdc('0x36')]?_0x36e608[_0xfbdc('0x34')]:_0x45b535['model'];if(!_0x1856a5['query'][_0xfbdc('0x37')](_0xfbdc('0x38'))){_0x36e608['limit']=qs['limit'](_0x1856a5[_0xfbdc('0x31')][_0xfbdc('0x1f')]);_0x36e608[_0xfbdc('0x1e')]=qs[_0xfbdc('0x1e')](_0x1856a5[_0xfbdc('0x31')][_0xfbdc('0x1e')]);}_0x36e608[_0xfbdc('0x39')]=qs['sort'](_0x1856a5[_0xfbdc('0x31')][_0xfbdc('0x3a')]);_0x36e608[_0xfbdc('0x3b')]=qs[_0xfbdc('0x32')](_['pick'](_0x1856a5[_0xfbdc('0x31')],_0x45b535['filters']),_0x3ee355);if(_0x1856a5[_0xfbdc('0x31')][_0xfbdc('0x3c')]){_0x36e608['where']=_[_0xfbdc('0x3d')](_0x36e608[_0xfbdc('0x3b')],{'$or':_[_0xfbdc('0x2a')](_0x3ee355,function(_0x1654dd){if(_0x1654dd[_0xfbdc('0x3e')]!=='VIRTUAL'){var _0x588fd8={};_0x588fd8[_0x1654dd[_0xfbdc('0x29')]]={'$like':'%'+_0x1856a5[_0xfbdc('0x31')][_0xfbdc('0x3c')]+'%'};return _0x588fd8;}})});}_0x36e608=_[_0xfbdc('0x3d')]({},_0x36e608,_0x1856a5[_0xfbdc('0x3f')]);var _0x320105={'where':_0x36e608[_0xfbdc('0x3b')]};return db[_0xfbdc('0x2b')][_0xfbdc('0x21')](_0x320105)[_0xfbdc('0x26')](function(_0x14d7f7){_0x85595a[_0xfbdc('0x21')]=_0x14d7f7;if(_0x1856a5[_0xfbdc('0x31')][_0xfbdc('0x40')]){_0x36e608[_0xfbdc('0x41')]=[{'all':!![]}];}return db[_0xfbdc('0x2b')][_0xfbdc('0x42')](_0x36e608);})[_0xfbdc('0x26')](function(_0x47aa47){_0x85595a[_0xfbdc('0x43')]=_0x47aa47;return _0x85595a;})[_0xfbdc('0x26')](respondWithFilteredResult(_0x52a888,_0x36e608))[_0xfbdc('0x44')](handleError(_0x52a888,null));};exports['show']=function(_0xa3f488,_0x30d0a5){var _0x5cc8e7={'raw':!![],'where':{'id':_0xa3f488['params']['id']}},_0xa7746={};_0xa7746[_0xfbdc('0x2f')]=_[_0xfbdc('0x30')](db[_0xfbdc('0x2b')][_0xfbdc('0x2c')]);_0xa7746['query']=_[_0xfbdc('0x30')](_0xa3f488['query']);_0xa7746[_0xfbdc('0x32')]=_[_0xfbdc('0x33')](_0xa7746['model'],_0xa7746[_0xfbdc('0x31')]);_0x5cc8e7[_0xfbdc('0x34')]=_['intersection'](_0xa7746[_0xfbdc('0x2f')],qs['fields'](_0xa3f488[_0xfbdc('0x31')]['fields']));_0x5cc8e7[_0xfbdc('0x34')]=_0x5cc8e7[_0xfbdc('0x34')][_0xfbdc('0x36')]?_0x5cc8e7['attributes']:_0xa7746[_0xfbdc('0x2f')];if(_0xa3f488['query'][_0xfbdc('0x40')]){_0x5cc8e7[_0xfbdc('0x41')]=[{'all':!![]}];}_0x5cc8e7=_[_0xfbdc('0x3d')]({},_0x5cc8e7,_0xa3f488['options']);return db[_0xfbdc('0x2b')][_0xfbdc('0x45')](_0x5cc8e7)[_0xfbdc('0x26')](handleEntityNotFound(_0x30d0a5,null))[_0xfbdc('0x26')](respondWithResult(_0x30d0a5,null))[_0xfbdc('0x44')](handleError(_0x30d0a5,null));};exports[_0xfbdc('0x46')]=function(_0x5d156f,_0x31e14d){return db[_0xfbdc('0x2b')]['create'](_0x5d156f[_0xfbdc('0x47')],{})[_0xfbdc('0x26')](respondWithResult(_0x31e14d,0xc9))['catch'](handleError(_0x31e14d,null));};exports['update']=function(_0x8db46f,_0x50dce7){if(_0x8db46f['body']['id']){delete _0x8db46f[_0xfbdc('0x47')]['id'];}return db[_0xfbdc('0x2b')][_0xfbdc('0x45')]({'where':{'id':_0x8db46f[_0xfbdc('0x48')]['id']}})[_0xfbdc('0x26')](handleEntityNotFound(_0x50dce7,null))[_0xfbdc('0x26')](saveUpdates(_0x8db46f[_0xfbdc('0x47')],null))['then'](respondWithResult(_0x50dce7,null))['catch'](handleError(_0x50dce7,null));};exports[_0xfbdc('0x49')]=function(_0x578c76,_0xd058a4){return db[_0xfbdc('0x2b')]['find']({'where':{'id':_0x578c76['params']['id']}})[_0xfbdc('0x26')](handleEntityNotFound(_0xd058a4,null))[_0xfbdc('0x26')](removeEntity(_0xd058a4,null))['catch'](handleError(_0xd058a4,null));};
\ No newline at end of file
index eb58b5c..113a638 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x710f=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','openchannel_applications','utf8mb4_unicode_ci'];(function(_0x33c637,_0x597c26){var _0x14aa20=function(_0x32a8b5){while(--_0x32a8b5){_0x33c637['push'](_0x33c637['shift']());}};_0x14aa20(++_0x597c26);}(_0x710f,0xb6));var _0xf710=function(_0x107e20,_0x4ce097){_0x107e20=_0x107e20-0x0;var _0x527f30=_0x710f[_0x107e20];return _0x527f30;};'use strict';var _=require(_0xf710('0x0'));var util=require(_0xf710('0x1'));var logger=require(_0xf710('0x2'))(_0xf710('0x3'));var moment=require(_0xf710('0x4'));var BPromise=require(_0xf710('0x5'));var rp=require(_0xf710('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf710('0x7'));var config=require(_0xf710('0x8'));var attributes=require('./openchannelApplication.attributes');module[_0xf710('0x9')]=function(_0x30213c,_0x82c179){return _0x30213c[_0xf710('0xa')]('OpenchannelApplication',attributes,{'tableName':_0xf710('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xf710('0xc')});};
\ No newline at end of file
+var _0x3757=['exports','define','openchannel_applications','utf8mb4_unicode_ci','api','moment','bluebird','request-promise','rimraf','../../config/environment','./openchannelApplication.attributes'];(function(_0x5e8c7c,_0x3429c6){var _0x48f7bd=function(_0x2b8a0f){while(--_0x2b8a0f){_0x5e8c7c['push'](_0x5e8c7c['shift']());}};_0x48f7bd(++_0x3429c6);}(_0x3757,0xeb));var _0x7375=function(_0x422f9d,_0x3d0b32){_0x422f9d=_0x422f9d-0x0;var _0x31d7b3=_0x3757[_0x422f9d];return _0x31d7b3;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x7375('0x0'));var moment=require(_0x7375('0x1'));var BPromise=require(_0x7375('0x2'));var rp=require(_0x7375('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7375('0x4'));var config=require(_0x7375('0x5'));var attributes=require(_0x7375('0x6'));module[_0x7375('0x7')]=function(_0x1d0337,_0x263030){return _0x1d0337[_0x7375('0x8')]('OpenchannelApplication',attributes,{'tableName':_0x7375('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x7375('0xa')});};
\ No newline at end of file
index bd04b20..1320885 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf425=['body','options','raw','where','attributes','limit','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','OpenchannelApplication,\x20%s,\x20%s','message','catch','UpdateOpenchannelApplication','update'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xf425,0x13c));var _0x5f42=function(_0x14a516,_0x5dee29){_0x14a516=_0x14a516-0x0;var _0x51a308=_0xf425[_0x14a516];return _0x51a308;};'use strict';var _=require(_0x5f42('0x0'));var util=require(_0x5f42('0x1'));var moment=require('moment');var BPromise=require(_0x5f42('0x2'));var rs=require(_0x5f42('0x3'));var fs=require('fs');var Redis=require(_0x5f42('0x4'));var db=require(_0x5f42('0x5'))['db'];var utils=require(_0x5f42('0x6'));var logger=require(_0x5f42('0x7'))('rpc');var config=require(_0x5f42('0x8'));var jayson=require(_0x5f42('0x9'));var client=jayson[_0x5f42('0xa')][_0x5f42('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x10e844,_0x3e3355,_0x2182a9){return new BPromise(function(_0x1fda95,_0x511bab){return client[_0x5f42('0xc')](_0x10e844,_0x2182a9)[_0x5f42('0xd')](function(_0x56e965){logger[_0x5f42('0xe')]('OpenchannelApplication,\x20%s,\x20%s',_0x3e3355,'request\x20sent');logger[_0x5f42('0xf')](_0x5f42('0x10'),_0x3e3355,_0x5f42('0x11'),JSON[_0x5f42('0x12')](_0x56e965));if(_0x56e965[_0x5f42('0x13')]){if(_0x56e965[_0x5f42('0x13')]['code']===0x1f4){logger[_0x5f42('0x13')](_0x5f42('0x14'),_0x3e3355,_0x56e965[_0x5f42('0x13')][_0x5f42('0x15')]);return _0x511bab(_0x56e965[_0x5f42('0x13')][_0x5f42('0x15')]);}logger[_0x5f42('0x13')](_0x5f42('0x14'),_0x3e3355,_0x56e965[_0x5f42('0x13')][_0x5f42('0x15')]);return _0x1fda95(_0x56e965['error'][_0x5f42('0x15')]);}else{logger[_0x5f42('0xe')](_0x5f42('0x14'),_0x3e3355,'request\x20sent');_0x1fda95(_0x56e965['result']['message']);}})[_0x5f42('0x16')](function(_0xec3264){logger[_0x5f42('0x13')](_0x5f42('0x14'),_0x3e3355,_0xec3264);_0x511bab(_0xec3264);});});}exports[_0x5f42('0x17')]=function(_0x2d6001){var _0x45823f=this;return new Promise(function(_0x24b229,_0x399f12){return db['OpenchannelApplication'][_0x5f42('0x18')](_0x2d6001[_0x5f42('0x19')],{'raw':_0x2d6001[_0x5f42('0x1a')]?_0x2d6001[_0x5f42('0x1a')][_0x5f42('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2d6001[_0x5f42('0x1a')]?_0x2d6001[_0x5f42('0x1a')][_0x5f42('0x1c')]||null:null,'attributes':_0x2d6001[_0x5f42('0x1a')]?_0x2d6001[_0x5f42('0x1a')][_0x5f42('0x1d')]||null:null,'limit':_0x2d6001['options']?_0x2d6001[_0x5f42('0x1a')][_0x5f42('0x1e')]||null:null})[_0x5f42('0xd')](function(_0x221038){logger[_0x5f42('0xe')](_0x5f42('0x17'),_0x2d6001);logger[_0x5f42('0xf')](_0x5f42('0x17'),_0x2d6001,JSON['stringify'](_0x221038));_0x24b229(_0x221038);})[_0x5f42('0x16')](function(_0x26a3d7){logger[_0x5f42('0x13')](_0x5f42('0x17'),_0x26a3d7[_0x5f42('0x15')],_0x2d6001);_0x399f12(_0x45823f['error'](0x1f4,_0x26a3d7['message']));});});};
\ No newline at end of file
+var _0xd89d=['UpdateOpenchannelApplication','OpenchannelApplication','update','body','options','raw','where','attributes','then','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','OpenchannelApplication,\x20%s,\x20%s','catch'];(function(_0x175886,_0x48dfe5){var _0x48a7e2=function(_0x208e59){while(--_0x208e59){_0x175886['push'](_0x175886['shift']());}};_0x48a7e2(++_0x48dfe5);}(_0xd89d,0xc9));var _0xdd89=function(_0x116b36,_0x2343a6){_0x116b36=_0x116b36-0x0;var _0x4a07c9=_0xd89d[_0x116b36];return _0x4a07c9;};'use strict';var _=require(_0xdd89('0x0'));var util=require('util');var moment=require(_0xdd89('0x1'));var BPromise=require(_0xdd89('0x2'));var rs=require(_0xdd89('0x3'));var fs=require('fs');var Redis=require(_0xdd89('0x4'));var db=require(_0xdd89('0x5'))['db'];var utils=require(_0xdd89('0x6'));var logger=require(_0xdd89('0x7'))('rpc');var config=require(_0xdd89('0x8'));var jayson=require(_0xdd89('0x9'));var client=jayson[_0xdd89('0xa')][_0xdd89('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x53ca9b,_0x3cecfa,_0x4158c1){return new BPromise(function(_0x1dbd61,_0x2a8c0d){return client[_0xdd89('0xc')](_0x53ca9b,_0x4158c1)['then'](function(_0x3c3f96){logger[_0xdd89('0xd')]('OpenchannelApplication,\x20%s,\x20%s',_0x3cecfa,_0xdd89('0xe'));logger[_0xdd89('0xf')](_0xdd89('0x10'),_0x3cecfa,_0xdd89('0xe'),JSON[_0xdd89('0x11')](_0x3c3f96));if(_0x3c3f96['error']){if(_0x3c3f96[_0xdd89('0x12')][_0xdd89('0x13')]===0x1f4){logger[_0xdd89('0x12')]('OpenchannelApplication,\x20%s,\x20%s',_0x3cecfa,_0x3c3f96[_0xdd89('0x12')]['message']);return _0x2a8c0d(_0x3c3f96['error'][_0xdd89('0x14')]);}logger[_0xdd89('0x12')](_0xdd89('0x15'),_0x3cecfa,_0x3c3f96[_0xdd89('0x12')][_0xdd89('0x14')]);return _0x1dbd61(_0x3c3f96[_0xdd89('0x12')][_0xdd89('0x14')]);}else{logger['info']('OpenchannelApplication,\x20%s,\x20%s',_0x3cecfa,_0xdd89('0xe'));_0x1dbd61(_0x3c3f96['result'][_0xdd89('0x14')]);}})[_0xdd89('0x16')](function(_0x39f803){logger[_0xdd89('0x12')](_0xdd89('0x15'),_0x3cecfa,_0x39f803);_0x2a8c0d(_0x39f803);});});}exports[_0xdd89('0x17')]=function(_0x36b15f){var _0x568f94=this;return new Promise(function(_0x488c49,_0x11a80d){return db[_0xdd89('0x18')][_0xdd89('0x19')](_0x36b15f[_0xdd89('0x1a')],{'raw':_0x36b15f[_0xdd89('0x1b')]?_0x36b15f[_0xdd89('0x1b')][_0xdd89('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x36b15f[_0xdd89('0x1b')]?_0x36b15f['options'][_0xdd89('0x1d')]||null:null,'attributes':_0x36b15f['options']?_0x36b15f[_0xdd89('0x1b')][_0xdd89('0x1e')]||null:null,'limit':_0x36b15f[_0xdd89('0x1b')]?_0x36b15f[_0xdd89('0x1b')]['limit']||null:null})[_0xdd89('0x1f')](function(_0x4311ed){logger[_0xdd89('0xd')](_0xdd89('0x17'),_0x36b15f);logger[_0xdd89('0xf')](_0xdd89('0x17'),_0x36b15f,JSON[_0xdd89('0x11')](_0x4311ed));_0x488c49(_0x4311ed);})[_0xdd89('0x16')](function(_0xdf38af){logger[_0xdd89('0x12')](_0xdd89('0x17'),_0xdf38af[_0xdd89('0x14')],_0x36b15f);_0x11a80d(_0x568f94['error'](0x1f4,_0xdf38af[_0xdd89('0x14')]));});});};
\ No newline at end of file
index aa19799..921737b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6afb=['openchannelinteraction:addtags','addTags','put','update','delete','openchannelinteraction:destroy','removeTags','exports','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./openchannelInteraction.controller','get','isAuthenticated','/describe','/:id','show','/:id/messages','/:id/download','create','post','addMessage','/:id/tags','tracked','openchannel'];(function(_0x39bfa5,_0x255e1e){var _0x1ebe18=function(_0x23e50a){while(--_0x23e50a){_0x39bfa5['push'](_0x39bfa5['shift']());}};_0x1ebe18(++_0x255e1e);}(_0x6afb,0x174));var _0xb6af=function(_0x358df5,_0x2d31af){_0x358df5=_0x358df5-0x0;var _0x3727b2=_0x6afb[_0x358df5];return _0x3727b2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xb6af('0x0'));var timeout=require(_0xb6af('0x1'));var express=require(_0xb6af('0x2'));var router=express[_0xb6af('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xb6af('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xb6af('0x5'));var controller=require(_0xb6af('0x6'));router[_0xb6af('0x7')]('/',auth[_0xb6af('0x8')](),controller['index']);router[_0xb6af('0x7')](_0xb6af('0x9'),auth[_0xb6af('0x8')](),controller['describe']);router['get'](_0xb6af('0xa'),auth[_0xb6af('0x8')](),controller[_0xb6af('0xb')]);router[_0xb6af('0x7')](_0xb6af('0xc'),auth[_0xb6af('0x8')](),controller['getMessages']);router[_0xb6af('0x7')](_0xb6af('0xd'),auth[_0xb6af('0x8')](),controller['download']);router['post']('/',auth[_0xb6af('0x8')](),controller[_0xb6af('0xe')]);router[_0xb6af('0xf')](_0xb6af('0xc'),auth[_0xb6af('0x8')](),controller[_0xb6af('0x10')]);router[_0xb6af('0xf')](_0xb6af('0x11'),auth[_0xb6af('0x8')](),interaction[_0xb6af('0x12')](_0xb6af('0x13'),_0xb6af('0x14')),controller[_0xb6af('0x15')]);router[_0xb6af('0x16')](_0xb6af('0xa'),auth[_0xb6af('0x8')](),interaction[_0xb6af('0x12')](_0xb6af('0x13'),'openchannelinteraction:update'),controller[_0xb6af('0x17')]);router[_0xb6af('0x18')](_0xb6af('0xa'),auth[_0xb6af('0x8')](),interaction[_0xb6af('0x12')](_0xb6af('0x13'),_0xb6af('0x19')),controller['destroy']);router['delete'](_0xb6af('0x11'),auth[_0xb6af('0x8')](),controller[_0xb6af('0x1a')]);module[_0xb6af('0x1b')]=router;
\ No newline at end of file
+var _0x0ba0=['addMessage','post','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','put','update','delete','/:id','openchannelinteraction:destroy','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/describe','show','getMessages','/:id/download','download','/:id/messages'];(function(_0xe887db,_0x5dec29){var _0x3f4889=function(_0x2a2929){while(--_0x2a2929){_0xe887db['push'](_0xe887db['shift']());}};_0x3f4889(++_0x5dec29);}(_0x0ba0,0x130));var _0x00ba=function(_0x556927,_0x34b53f){_0x556927=_0x556927-0x0;var _0x5f1235=_0x0ba0[_0x556927];return _0x5f1235;};'use strict';var multer=require(_0x00ba('0x0'));var util=require(_0x00ba('0x1'));var path=require(_0x00ba('0x2'));var timeout=require(_0x00ba('0x3'));var express=require(_0x00ba('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x00ba('0x5'));var interaction=require(_0x00ba('0x6'));var config=require('../../config/environment');var controller=require('./openchannelInteraction.controller');router[_0x00ba('0x7')]('/',auth[_0x00ba('0x8')](),controller['index']);router[_0x00ba('0x7')](_0x00ba('0x9'),auth[_0x00ba('0x8')](),controller['describe']);router[_0x00ba('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x00ba('0xa')]);router[_0x00ba('0x7')]('/:id/messages',auth[_0x00ba('0x8')](),controller[_0x00ba('0xb')]);router['get'](_0x00ba('0xc'),auth['isAuthenticated'](),controller[_0x00ba('0xd')]);router['post']('/',auth[_0x00ba('0x8')](),controller['create']);router['post'](_0x00ba('0xe'),auth[_0x00ba('0x8')](),controller[_0x00ba('0xf')]);router[_0x00ba('0x10')](_0x00ba('0x11'),auth['isAuthenticated'](),interaction[_0x00ba('0x12')](_0x00ba('0x13'),_0x00ba('0x14')),controller[_0x00ba('0x15')]);router[_0x00ba('0x16')]('/:id',auth[_0x00ba('0x8')](),interaction[_0x00ba('0x12')](_0x00ba('0x13'),'openchannelinteraction:update'),controller[_0x00ba('0x17')]);router[_0x00ba('0x18')](_0x00ba('0x19'),auth['isAuthenticated'](),interaction[_0x00ba('0x12')](_0x00ba('0x13'),_0x00ba('0x1a')),controller[_0x00ba('0x1b')]);router['delete'](_0x00ba('0x11'),auth[_0x00ba('0x8')](),controller['removeTags']);module[_0x00ba('0x1c')]=router;
\ No newline at end of file
index 744a6db..77b5767 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3561=['DATE','STRING','ENUM','out','sequelize','BOOLEAN'];(function(_0x23f80d,_0x318cb9){var _0x4d7787=function(_0x4baf43){while(--_0x4baf43){_0x23f80d['push'](_0x23f80d['shift']());}};_0x4d7787(++_0x318cb9);}(_0x3561,0x94));var _0x1356=function(_0x15655e,_0x251dae){_0x15655e=_0x15655e-0x0;var _0x614358=_0x3561[_0x15655e];return _0x614358;};'use strict';var Sequelize=require(_0x1356('0x0'));module['exports']={'closed':{'type':Sequelize[_0x1356('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x1356('0x2')]},'disposition':{'type':Sequelize[_0x1356('0x3')]},'secondDisposition':{'type':Sequelize[_0x1356('0x3')]},'thirdDisposition':{'type':Sequelize[_0x1356('0x3')]},'note':{'type':Sequelize[_0x1356('0x3')]},'read1stAt':{'type':Sequelize[_0x1356('0x2')]},'threadId':{'type':Sequelize[_0x1356('0x3')]},'externalUrl':{'type':Sequelize[_0x1356('0x3')]},'lastMsgAt':{'type':Sequelize[_0x1356('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x1356('0x4')]('in',_0x1356('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x1356('0x3')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x3f47=['sequelize','exports','DATE','STRING','out','BOOLEAN'];(function(_0x5d2a40,_0x16450b){var _0x2c9ef2=function(_0x16006b){while(--_0x16006b){_0x5d2a40['push'](_0x5d2a40['shift']());}};_0x2c9ef2(++_0x16450b);}(_0x3f47,0x10e));var _0x73f4=function(_0x18deca,_0x194a99){_0x18deca=_0x18deca-0x0;var _0x2a5b26=_0x3f47[_0x18deca];return _0x2a5b26;};'use strict';var Sequelize=require(_0x73f4('0x0'));module[_0x73f4('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x73f4('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x73f4('0x3')]},'thirdDisposition':{'type':Sequelize[_0x73f4('0x3')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x73f4('0x2')]},'threadId':{'type':Sequelize[_0x73f4('0x3')]},'externalUrl':{'type':Sequelize[_0x73f4('0x3')]},'lastMsgAt':{'type':Sequelize[_0x73f4('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x73f4('0x4')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x73f4('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0x73f4('0x5')],'defaultValue':![]}};
\ No newline at end of file
index e977975..203e862 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa18=['../../mysqldb','localhost','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','Users','fullname','TagIds','Tags','split','forEach','push','catch','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','from','u.id','u.fullname','ui.OpenchannelInteractionId','user_has_openchannel_interactions','left_join','users','u.id\x20=\x20ui.UserId','openchannel_interactions','cm_contacts','a.id\x20=\x20i.OpenchannelAccountId','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','conditions','find','unreadMessages','value','`\x20=\x200','having','`\x20>\x200','Contact','operator','$substring','getFullTextValue','ContactId','text','start','end','Tag','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','buildExpression','i.OpenchannelAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.from\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getOpenchannelAccounts','isEmpty','i.OpenchannelAccountId\x20IS\x20NULL','OpenchannelAccountId','sequelize','toString','keyBy','merge','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','Owner.fullname','o.internal','Owner.internal','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','OpenchannelInteractionId','rows','show','params','includeAll','include','options','OpenchannelInteraction','create','describe','addMessage','OpenchannelMessage','omit','getMessages','findOne','format','YYYY-MM-DD\x20HH:mm:ss','setTags','ids','spread','findAll','emit','openchannelInteractionTags:save','removeTags','download','unix','join','root','server','tmp','transcript-%d-%s.zip','firstName','lastName','attachments','Messages','direction','secret','OpenchannelAccount','Account','get','Owner','closed','disposition','Public','Private','basename','existsSync','createReadStream','createWriteStream','Attachment','out','System','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x33ff15,_0x2cbb0e){var _0x2866ff=function(_0x1c5ed1){while(--_0x1c5ed1){_0x33ff15['push'](_0x33ff15['shift']());}};_0x2866ff(++_0x2cbb0e);}(_0xfa18,0xd5));var _0x8fa1=function(_0x1a80a8,_0x38fd21){_0x1a80a8=_0x1a80a8-0x0;var _0x37fd38=_0xfa18[_0x1a80a8];return _0x37fd38;};'use strict';var emlformat=require(_0x8fa1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8fa1('0x1'));var jsonpatch=require(_0x8fa1('0x2'));var rp=require(_0x8fa1('0x3'));var moment=require(_0x8fa1('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x8fa1('0x5'));var util=require('util');var path=require(_0x8fa1('0x6'));var sox=require(_0x8fa1('0x7'));var csv=require(_0x8fa1('0x8'));var ejs=require(_0x8fa1('0x9'));var fs=require('fs');var fs_extra=require(_0x8fa1('0xa'));var _=require(_0x8fa1('0xb'));var squel=require('squel');var crypto=require(_0x8fa1('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x8fa1('0xd'));var toCsv=require(_0x8fa1('0x8'));var querystring=require(_0x8fa1('0xe'));var Papa=require(_0x8fa1('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x8fa1('0x10'));var as=require(_0x8fa1('0x11'));var pdf=require(_0x8fa1('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8fa1('0x13'));var utils=require(_0x8fa1('0x14'));var config=require(_0x8fa1('0x15'));var licenseUtil=require(_0x8fa1('0x16'));var db=require(_0x8fa1('0x17'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x8fa1('0x18'),'port':0x18eb});var socket=require(_0x8fa1('0x19'))(new Redis(config['redis']));require(_0x8fa1('0x1a'))[_0x8fa1('0x1b')](socket);function respondWithStatusCode(_0x1dc6a2,_0x1e7af0){_0x1e7af0=_0x1e7af0||0xcc;return function(_0x567d04){if(_0x567d04){return _0x1dc6a2[_0x8fa1('0x1c')](_0x1e7af0);}return _0x1dc6a2[_0x8fa1('0x1d')](_0x1e7af0)['end']();};}function respondWithResult(_0x4d87b0,_0x188230){_0x188230=_0x188230||0xc8;return function(_0x48aee5){if(_0x48aee5){return _0x4d87b0[_0x8fa1('0x1d')](_0x188230)[_0x8fa1('0x1e')](_0x48aee5);}};}function respondWithFilteredResult(_0x1a7c84,_0x2be760){return function(_0x53e5b9){if(_0x53e5b9){var _0x2fd9c=typeof _0x2be760[_0x8fa1('0x1f')]===_0x8fa1('0x20')&&typeof _0x2be760['limit']==='undefined';var _0x2a9669=_0x53e5b9[_0x8fa1('0x21')];var _0x1c7a60=_0x2fd9c?0x0:_0x2be760[_0x8fa1('0x1f')];var _0x24efd4=_0x2fd9c?_0x53e5b9[_0x8fa1('0x21')]:_0x2be760[_0x8fa1('0x1f')]+_0x2be760[_0x8fa1('0x22')];var _0x44cc09;if(_0x24efd4>=_0x2a9669){_0x24efd4=_0x2a9669;_0x44cc09=0xc8;}else{_0x44cc09=0xce;}_0x1a7c84[_0x8fa1('0x1d')](_0x44cc09);return _0x1a7c84[_0x8fa1('0x23')](_0x8fa1('0x24'),_0x1c7a60+'-'+_0x24efd4+'/'+_0x2a9669)[_0x8fa1('0x1e')](_0x53e5b9);}return null;};}function patchUpdates(_0x141784){return function(_0x300776){try{jsonpatch[_0x8fa1('0x25')](_0x300776,_0x141784,!![]);}catch(_0x2943f9){return BPromise[_0x8fa1('0x26')](_0x2943f9);}return _0x300776[_0x8fa1('0x27')]();};}function saveUpdates(_0x53874e,_0x4375e2){return function(_0x2e986d){if(_0x2e986d){return _0x2e986d[_0x8fa1('0x28')](_0x53874e)[_0x8fa1('0x29')](function(_0x404d32){return _0x404d32;});}return null;};}function removeEntity(_0x2c3b91,_0x245b78){return function(_0x3ab472){if(_0x3ab472){return _0x3ab472[_0x8fa1('0x2a')]()[_0x8fa1('0x29')](function(){_0x2c3b91[_0x8fa1('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x416bc3,_0x3c980b){return function(_0x5488e1){if(!_0x5488e1){_0x416bc3[_0x8fa1('0x1c')](0x194);}return _0x5488e1;};}function handleError(_0x559f2e,_0x330bdd){_0x330bdd=_0x330bdd||0x1f4;return function(_0x4e7646){logger['error'](_0x4e7646[_0x8fa1('0x2b')]);if(_0x4e7646[_0x8fa1('0x2c')]){delete _0x4e7646[_0x8fa1('0x2c')];}_0x559f2e['status'](_0x330bdd)['send'](_0x4e7646);};}function getInteractionUsers(_0x1499d4,_0x27a0ae){return new BPromise(function(_0x2a56dd,_0x96a9b4){try{if(_0x27a0ae[_0x1499d4['id']]){_0x1499d4[_0x8fa1('0x2d')]=_['map'](_0x27a0ae[_0x1499d4['id']],function(_0x1e3815){return{'id':_0x1e3815['id'],'fullname':_0x1e3815[_0x8fa1('0x2e')]};});}}catch(_0x256b0c){_0x96a9b4(_0x256b0c);}_0x2a56dd(_0x1499d4);});}function getInteractionTags(_0x5690bd,_0x21771c){return new BPromise(function(_0x5cc679,_0x5a2b06){try{if(_0x5690bd[_0x8fa1('0x2f')]){_0x5690bd[_0x8fa1('0x30')]=[];_0x5690bd[_0x8fa1('0x2f')][_0x8fa1('0x31')](',')[_0x8fa1('0x32')](function(_0xa33a79){_0x5690bd[_0x8fa1('0x30')][_0x8fa1('0x33')](_0x21771c[_0xa33a79]);});}delete _0x5690bd[_0x8fa1('0x2f')];}catch(_0x533a6d){_0x5a2b06(_0x533a6d);}_0x5cc679(_0x5690bd);});}function updateOpenchannelInteraction(_0x47cd86,_0x1bc6cf,_0x525cd3){return new BPromise(function(_0x12424b,_0xd1e1a9){return getInteractionUsers(_0x47cd86,_0x525cd3)['then'](function(_0x267f17){return getInteractionTags(_0x267f17,_0x1bc6cf);})[_0x8fa1('0x29')](function(_0x4f476b){_0x12424b(_0x4f476b);})[_0x8fa1('0x34')](function(_0x2e96d8){_0xd1e1a9(_0x2e96d8);});});}exports['index']=function(_0x3a6c87,_0x49daea){var _0xecd72b={},_0x360172={},_0xf5d319={'count':0x0,'rows':[]};var _0x123b09=_[_0x8fa1('0x35')](db['OpenchannelInteraction'][_0x8fa1('0x36')],function(_0x5ca8fb){return{'name':_0x5ca8fb[_0x8fa1('0x37')],'type':_0x5ca8fb[_0x8fa1('0x38')][_0x8fa1('0x39')]};});_0x360172[_0x8fa1('0x3a')]=_[_0x8fa1('0x35')](_0x123b09,_0x8fa1('0x2c'));_0x360172[_0x8fa1('0x3b')]=_[_0x8fa1('0x3c')](_0x3a6c87[_0x8fa1('0x3b')]);_0x360172[_0x8fa1('0x3d')]=_[_0x8fa1('0x3e')](_0x360172[_0x8fa1('0x3a')],_0x360172[_0x8fa1('0x3b')]);_0xecd72b[_0x8fa1('0x3f')]=_[_0x8fa1('0x3e')](_0x360172[_0x8fa1('0x3a')],qs[_0x8fa1('0x40')](_0x3a6c87[_0x8fa1('0x3b')][_0x8fa1('0x40')]));_0xecd72b['attributes']=_0xecd72b[_0x8fa1('0x3f')][_0x8fa1('0x41')]?_0xecd72b[_0x8fa1('0x3f')]:_0x360172[_0x8fa1('0x3a')];if(!_0x3a6c87[_0x8fa1('0x3b')][_0x8fa1('0x42')](_0x8fa1('0x43'))){_0xecd72b['limit']=qs[_0x8fa1('0x22')](_0x3a6c87[_0x8fa1('0x3b')][_0x8fa1('0x22')]);_0xecd72b[_0x8fa1('0x1f')]=qs[_0x8fa1('0x1f')](_0x3a6c87[_0x8fa1('0x3b')][_0x8fa1('0x1f')]);}_0xecd72b[_0x8fa1('0x44')]=qs[_0x8fa1('0x45')](_0x3a6c87[_0x8fa1('0x3b')][_0x8fa1('0x45')]);_0xecd72b[_0x8fa1('0x46')]=qs[_0x8fa1('0x3d')](_[_0x8fa1('0x47')](_0x3a6c87[_0x8fa1('0x3b')],_0x360172[_0x8fa1('0x3d')]),_0x123b09);var _0x4405b5=[];var _0x8f7742=squel[_0x8fa1('0x48')]()['field']('id')[_0x8fa1('0x49')](_0x8fa1('0x2c'))['field'](_0x8fa1('0x4a'))[_0x8fa1('0x4b')]('tools_tags');var _0x35128e=squel[_0x8fa1('0x48')]()[_0x8fa1('0x49')](_0x8fa1('0x4c'))[_0x8fa1('0x49')](_0x8fa1('0x4d'))[_0x8fa1('0x49')](_0x8fa1('0x4e'))['from'](_0x8fa1('0x4f'),'ui')[_0x8fa1('0x50')](_0x8fa1('0x51'),'u',_0x8fa1('0x52'));var _0x573f0b=squel[_0x8fa1('0x48')]()['from'](_0x8fa1('0x53'),'i')[_0x8fa1('0x50')](_0x8fa1('0x54'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x8fa1('0x50')]('users','o','o.id\x20=\x20i.UserId')['left_join']('openchannel_accounts','a',_0x8fa1('0x55'))[_0x8fa1('0x50')]('openchannel_messages','me','me.OpenchannelInteractionId\x20=\x20i.id')[_0x8fa1('0x50')](_0x8fa1('0x56'),'it',_0x8fa1('0x57'))[_0x8fa1('0x50')]('tools_tags','t',_0x8fa1('0x58'));var _0x8713ac=squel[_0x8fa1('0x59')]();var _0x332c41=[];var _0x578a50=squel['expr']();var _0x3d7dad;if(_0x3a6c87[_0x8fa1('0x3b')]['search']){_0x3d7dad=as[_0x8fa1('0x5a')](_0x3a6c87[_0x8fa1('0x3b')][_0x8fa1('0x5b')]);var _0x17e071=_0x3d7dad[_0x8fa1('0x5c')];for(var _0x231722=0x0;_0x231722<_0x3d7dad[_0x8fa1('0x5d')][_0x8fa1('0x41')];_0x231722++){var _0x4341f3=_0x3d7dad[_0x8fa1('0x5d')][_0x231722];var _0x3ef34c='i';var _0x1ca97e=_[_0x8fa1('0x5e')](_0x123b09,[_0x8fa1('0x2c'),_0x4341f3[_0x8fa1('0x49')]]);if(!_0x1ca97e){switch(_0x4341f3[_0x8fa1('0x49')]){case _0x8fa1('0x5f'):if(_0x4341f3[_0x8fa1('0x60')]==0x1){_0x573f0b['having']('`'+_0x4341f3[_0x8fa1('0x49')]+_0x8fa1('0x61'));}else{_0x573f0b[_0x8fa1('0x62')]('`'+_0x4341f3[_0x8fa1('0x49')]+_0x8fa1('0x63'));}break;case _0x8fa1('0x64'):if(_0x4341f3[_0x8fa1('0x65')]===_0x8fa1('0x66')){if(_0x4341f3[_0x8fa1('0x60')][_0x8fa1('0x31')]('\x20')[_0x8fa1('0x41')]>0x1){_0x8713ac[_0x17e071]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x8fa1('0x67')](_0x4341f3[_0x8fa1('0x60')]),null);}else{var _0x3295ab='%'+_0x4341f3[_0x8fa1('0x60')]+'%';_0x8713ac[_0x17e071]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x3295ab,_0x3295ab,_0x3295ab);}}else{_0x1ca97e=_[_0x8fa1('0x5e')](_0x123b09,[_0x8fa1('0x2c'),_0x8fa1('0x68')]);_0x4341f3[_0x8fa1('0x49')]=_0x8fa1('0x68');_0x135cfc=as['buildExpression'](_0x3ef34c,_0x1ca97e['type'],_0x4341f3);_0x8713ac[_0x17e071](_0x135cfc[_0x8fa1('0x69')],_0x135cfc[_0x8fa1('0x60')][_0x8fa1('0x6a')],_0x135cfc[_0x8fa1('0x60')][_0x8fa1('0x6b')]);}break;case _0x8fa1('0x6c'):var _0x7e6ea6=_0x4341f3[_0x8fa1('0x60')]['split'](',')[_0x8fa1('0x35')](function(_0x305953){return Number(_0x305953);});_0x7e6ea6[_0x8fa1('0x32')](function(_0x258235){_0x578a50['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x258235+',%');});_0x332c41=_[_0x8fa1('0x6d')](_0x332c41,_0x7e6ea6);break;case _0x8fa1('0x6e'):if(_0x4341f3[_0x8fa1('0x65')]===_0x8fa1('0x66')){_0x8713ac[_0x17e071](_0x8fa1('0x6f'),'%'+_0x4341f3[_0x8fa1('0x60')]+'%',null);}else{_0x1ca97e=_['find'](_0x123b09,[_0x8fa1('0x2c'),'UserId']);_0x4341f3['field']=_0x8fa1('0x70');_0x135cfc=as['buildExpression'](_0x3ef34c,_0x1ca97e[_0x8fa1('0x38')],_0x4341f3);_0x8713ac[_0x17e071](_0x135cfc[_0x8fa1('0x69')],_0x135cfc[_0x8fa1('0x60')]['start'],_0x135cfc[_0x8fa1('0x60')][_0x8fa1('0x6b')]);}break;case _0x8fa1('0x71'):_0x135cfc=as[_0x8fa1('0x72')]('me',null,_0x4341f3);_0x8713ac[_0x17e071](_0x135cfc[_0x8fa1('0x69')],_0x135cfc[_0x8fa1('0x60')]['start'],_0x135cfc[_0x8fa1('0x60')][_0x8fa1('0x6b')]);break;}}else{var _0x135cfc=as['buildExpression'](_0x3ef34c,_0x1ca97e[_0x8fa1('0x38')],_0x4341f3);_0x8713ac[_0x17e071](_0x135cfc[_0x8fa1('0x69')],_0x135cfc['value'][_0x8fa1('0x6a')],_0x135cfc[_0x8fa1('0x60')]['end']);}}}else{var _0x3e2244=_(_0x3a6c87[_0x8fa1('0x3b')])[_0x8fa1('0x3c')]()[_0x8fa1('0x35')](function(_0x26f369){return _['some'](_0x123b09,[_0x8fa1('0x2c'),_0x26f369])?_0x26f369:undefined;})['compact']()['value']();if(!_['isEmpty'](_0x3e2244)){_0x3e2244['forEach'](function(_0x78030b){if(_0x78030b==='OpenchannelAccountId'){_0x573f0b[_0x8fa1('0x46')](_0x8fa1('0x73'),[][_0x8fa1('0x74')](_0x3a6c87[_0x8fa1('0x3b')][_0x78030b]));}else if(_0x78030b===_0x8fa1('0x75')){var _0x37903d=JSON[_0x8fa1('0x76')](_0x3a6c87[_0x8fa1('0x3b')][_0x78030b])[_0x8fa1('0x77')];var _0x46d1b3=JSON['parse'](_0x3a6c87[_0x8fa1('0x3b')][_0x78030b])[_0x8fa1('0x78')];_0x573f0b[_0x8fa1('0x46')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x37903d,_0x46d1b3);}else{if(_0x3a6c87[_0x8fa1('0x3b')][_0x78030b]===_0x8fa1('0x79')){_0x573f0b[_0x8fa1('0x46')]('i.'+_0x78030b+_0x8fa1('0x7a'));}else{_0x573f0b['where']('i.'+_0x78030b+_0x8fa1('0x7b'),_0x3a6c87[_0x8fa1('0x3b')][_0x78030b]);}}});}if(_0x3a6c87[_0x8fa1('0x3b')][_0x8fa1('0x7c')]){if(_0x3a6c87['query'][_0x8fa1('0x7c')]==0x1){_0x573f0b[_0x8fa1('0x62')]('`unreadMessages`\x20=\x200');}else{_0x573f0b[_0x8fa1('0x62')](_0x8fa1('0x7d'));}}if(_0x3a6c87[_0x8fa1('0x3b')][_0x8fa1('0x7e')]){_0x332c41=_[_0x8fa1('0x7f')](_0x3a6c87['query']['tag'])?_0x3a6c87[_0x8fa1('0x3b')]['tag']:new Array(_0x3a6c87[_0x8fa1('0x3b')][_0x8fa1('0x7e')]);_0x332c41['forEach'](function(_0x2aad08){_0x578a50['or'](_0x8fa1('0x80'),'%,'+_0x2aad08+',%');});}if(_0x3a6c87[_0x8fa1('0x3b')]['filter']){var _0x2cdf15=_0x3a6c87[_0x8fa1('0x3b')][_0x8fa1('0x81')]['replace']('\x5c','\x5c\x5c')[_0x8fa1('0x82')](/'/g,'\x27\x27');if(qs[_0x8fa1('0x83')](_0x2cdf15)){_0x8713ac['or'](_0x8fa1('0x84'),_0x2cdf15+'%');}else{_0x8713ac['or'](_0x8fa1('0x85'),qs[_0x8fa1('0x67')](_0x2cdf15))['or'](_0x8fa1('0x86'),_0x2cdf15+'%')['or'](_0x8fa1('0x87'),_0x2cdf15+'%');}}}_0x573f0b['where'](_0x8713ac);_0x573f0b[_0x8fa1('0x88')](_0x8fa1('0x89'));var _0x403b07={'type':db[_0x8fa1('0x8a')]['QueryTypes'][_0x8fa1('0x8b')],'raw':!![]};var _0x59e669=_0x573f0b['clone']();_0x59e669[_0x8fa1('0x49')](_0x8fa1('0x89'));_0x59e669[_0x8fa1('0x49')](_0x8fa1('0x8c'),_0x8fa1('0x5f'));if(_0xecd72b['order']){_0xecd72b[_0x8fa1('0x44')][_0x8fa1('0x32')](function(_0x24c5fd){var _0x4f36da=_0x24c5fd[0x0]===_0x8fa1('0x8d')?_0x24c5fd[0x0]:'i.'+_0x24c5fd[0x0];_0x573f0b['order'](_0x4f36da,_0x24c5fd[0x1]===_0x8fa1('0x8e')?![]:!![]);});}if(!_['isEmpty'](_0x332c41)){_0x573f0b[_0x8fa1('0x62')](_0x578a50);_0x59e669[_0x8fa1('0x46')](_0x8fa1('0x8f'),_0x332c41);}BPromise[_0x8fa1('0x90')]()[_0x8fa1('0x29')](function(){if(!_0x3d7dad){if(_0x3a6c87[_0x8fa1('0x3b')]['OpenchannelAccountId'])return;_0x59e669[_0x8fa1('0x46')](_0x8fa1('0x91'));_0x573f0b[_0x8fa1('0x46')]('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x3a6c87[_0x8fa1('0x92')][_0x8fa1('0x93')]!==_0x8fa1('0x94'))return;return _0x3a6c87['user'][_0x8fa1('0x95')]({'attributes':['id'],'raw':!![]})['then'](function(_0xa5c268){if(_[_0x8fa1('0x96')](_0xa5c268)){_0x59e669[_0x8fa1('0x46')](_0x8fa1('0x97'));_0x573f0b[_0x8fa1('0x46')]('i.OpenchannelAccountId\x20IS\x20NULL');}else{_0x59e669[_0x8fa1('0x46')](_0x8fa1('0x73'),_[_0x8fa1('0x35')](_0xa5c268,'id'));_0x573f0b['where']('i.OpenchannelAccountId\x20IN\x20?',_[_0x8fa1('0x35')](_0xa5c268,'id'));}});})['then'](function(){if(_0x3a6c87['user']['role']===_0x8fa1('0x94')&&!_0x3d7dad&&!_0x3a6c87[_0x8fa1('0x3b')][_0x8fa1('0x98')])return[];return db[_0x8fa1('0x99')][_0x8fa1('0x3b')](_0x59e669[_0x8fa1('0x9a')](),_0x403b07);})['then'](function(_0x5b44bd){_0xf5d319[_0x8fa1('0x21')]=_0x5b44bd[_0x8fa1('0x41')];if(_0xf5d319['count']===0x0)return[];return db[_0x8fa1('0x99')][_0x8fa1('0x3b')](_0x8f7742[_0x8fa1('0x9a')](),_0x403b07)['then'](function(_0x5f489d){_0x4405b5=_[_0x8fa1('0x9b')](_0x5f489d,'id');_0x403b07=_[_0x8fa1('0x9c')](_0x403b07,{'model':db['OpenchannelInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3a6c87[_0x8fa1('0x3b')]['fields']){_0xecd72b[_0x8fa1('0x3f')][_0x8fa1('0x32')](function(_0x1d8628){_0x573f0b[_0x8fa1('0x49')]('i.'+_0x1d8628);});}else{_0x573f0b[_0x8fa1('0x49')](_0x8fa1('0x8c'),_0x8fa1('0x5f'));_0x573f0b[_0x8fa1('0x49')]('a.key',_0x8fa1('0x9d'));_0x573f0b['field'](_0x8fa1('0x9e'),_0x8fa1('0x9f'));_0x573f0b[_0x8fa1('0x49')]('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',_0x8fa1('0x8d'));_0x573f0b[_0x8fa1('0x49')]('i.*');_0x573f0b[_0x8fa1('0x49')]('c.firstName','Contact.firstName');_0x573f0b[_0x8fa1('0x49')](_0x8fa1('0xa0'),_0x8fa1('0xa1'));_0x573f0b[_0x8fa1('0x49')](_0x8fa1('0xa2'),_0x8fa1('0xa3'));_0x573f0b[_0x8fa1('0x49')](_0x8fa1('0xa4'),_0x8fa1('0xa5'));_0x573f0b['field'](_0x8fa1('0xa6'),_0x8fa1('0xa7'));_0x573f0b[_0x8fa1('0x49')](_0x8fa1('0xa8'),_0x8fa1('0xa9'));_0x573f0b[_0x8fa1('0x49')]('o.fullname',_0x8fa1('0xaa'));_0x573f0b[_0x8fa1('0x49')](_0x8fa1('0xab'),_0x8fa1('0xac'));_0x573f0b[_0x8fa1('0x49')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0xecd72b['limit'])_0x573f0b[_0x8fa1('0x22')](_0xecd72b['limit']);if(_0xecd72b[_0x8fa1('0x1f')])_0x573f0b[_0x8fa1('0x1f')](_0xecd72b[_0x8fa1('0x1f')]);return db[_0x8fa1('0x99')][_0x8fa1('0x3b')](_0x573f0b[_0x8fa1('0x9a')](),_0x403b07);})[_0x8fa1('0x29')](function(_0x84ed5b){if(_0x84ed5b['length']>0x0)_0x35128e['where'](_0x8fa1('0xad'),_[_0x8fa1('0x35')](_0x84ed5b,'id'));return db[_0x8fa1('0x99')][_0x8fa1('0x3b')](_0x35128e[_0x8fa1('0x9a')](),_0x403b07)['then'](function(_0xa2c3bf){var _0x3b6776=_[_0x8fa1('0xae')](_0xa2c3bf,_0x8fa1('0xaf'));var _0x1d5dfd=[];_0x84ed5b['forEach'](function(_0x181917){_0x1d5dfd['push'](updateOpenchannelInteraction(_0x181917,_0x4405b5,_0x3b6776));});return BPromise['all'](_0x1d5dfd);});});})[_0x8fa1('0x29')](function(_0x3f5ded){_0xf5d319[_0x8fa1('0xb0')]=_0x3f5ded;return _0xf5d319;})['then'](respondWithFilteredResult(_0x49daea,_0xecd72b))[_0x8fa1('0x34')](handleError(_0x49daea,null));};exports[_0x8fa1('0xb1')]=function(_0x285e66,_0x353736){var _0x2dba34={};if(_0x285e66[_0x8fa1('0x3b')][_0x8fa1('0x38')]&&_0x285e66[_0x8fa1('0x3b')]['type']===_0x8fa1('0x4b')){_0x2dba34[_0x8fa1('0x4b')]=_0x285e66[_0x8fa1('0xb2')]['id'];}else{_0x2dba34['id']=_0x285e66[_0x8fa1('0xb2')]['id'];}var _0x154081={'raw':![],'where':_0x2dba34},_0x2631f2={};_0x2631f2[_0x8fa1('0x3a')]=_[_0x8fa1('0x3c')](db['OpenchannelInteraction'][_0x8fa1('0x36')]);_0x2631f2[_0x8fa1('0x3b')]=_[_0x8fa1('0x3c')](_0x285e66['query']);_0x2631f2[_0x8fa1('0x3d')]=_[_0x8fa1('0x3e')](_0x2631f2[_0x8fa1('0x3a')],_0x2631f2[_0x8fa1('0x3b')]);_0x154081[_0x8fa1('0x3f')]=_[_0x8fa1('0x3e')](_0x2631f2[_0x8fa1('0x3a')],qs['fields'](_0x285e66['query'][_0x8fa1('0x40')]));_0x154081[_0x8fa1('0x3f')]=_0x154081['attributes'][_0x8fa1('0x41')]?_0x154081[_0x8fa1('0x3f')]:_0x2631f2['model'];if(_0x285e66['query'][_0x8fa1('0xb3')]){_0x154081[_0x8fa1('0xb4')]=[{'all':!![]}];}_0x154081=_['merge']({},_0x154081,_0x285e66[_0x8fa1('0xb5')]);return db[_0x8fa1('0xb6')][_0x8fa1('0x5e')](_0x154081)[_0x8fa1('0x29')](handleEntityNotFound(_0x353736,null))[_0x8fa1('0x29')](respondWithResult(_0x353736,null))[_0x8fa1('0x34')](handleError(_0x353736,null));};exports[_0x8fa1('0xb7')]=function(_0xaebbfd,_0x5089a5){return db[_0x8fa1('0xb6')][_0x8fa1('0xb7')](_0xaebbfd['body'],{})[_0x8fa1('0x29')](respondWithResult(_0x5089a5,0xc9))[_0x8fa1('0x34')](handleError(_0x5089a5,null));};exports[_0x8fa1('0x28')]=function(_0x28fa76,_0x465aa5){if(_0x28fa76[_0x8fa1('0x71')]['id']){delete _0x28fa76[_0x8fa1('0x71')]['id'];}return db[_0x8fa1('0xb6')][_0x8fa1('0x5e')]({'where':{'id':_0x28fa76[_0x8fa1('0xb2')]['id']}})[_0x8fa1('0x29')](handleEntityNotFound(_0x465aa5,null))[_0x8fa1('0x29')](saveUpdates(_0x28fa76['body'],null))['then'](respondWithResult(_0x465aa5,null))['catch'](handleError(_0x465aa5,null));};exports['destroy']=function(_0x20f12f,_0x179800){return db[_0x8fa1('0xb6')][_0x8fa1('0x5e')]({'where':{'id':_0x20f12f[_0x8fa1('0xb2')]['id']}})[_0x8fa1('0x29')](handleEntityNotFound(_0x179800,null))[_0x8fa1('0x29')](removeEntity(_0x179800,null))[_0x8fa1('0x34')](handleError(_0x179800,null));};exports['describe']=function(_0x92cbb1,_0x25b90e){return db[_0x8fa1('0xb6')][_0x8fa1('0xb8')]()[_0x8fa1('0x29')](respondWithResult(_0x25b90e,null))[_0x8fa1('0x34')](handleError(_0x25b90e,null));};exports[_0x8fa1('0xb9')]=function(_0xdb565d,_0x45bd6e,_0x48171c){return db[_0x8fa1('0xba')][_0x8fa1('0x5e')]({'where':{'id':_0xdb565d[_0x8fa1('0xb2')]['id']}})['then'](handleEntityNotFound(_0x45bd6e,null))[_0x8fa1('0x29')](function(_0x51ce76){if(_0x51ce76){return _0x51ce76[_0x8fa1('0xb9')](_0xdb565d[_0x8fa1('0x71')]['ids'],_[_0x8fa1('0xbb')](_0xdb565d['body'],['ids','id'])||{});}})[_0x8fa1('0x29')](respondWithResult(_0x45bd6e,null))[_0x8fa1('0x34')](handleError(_0x45bd6e,null));};exports[_0x8fa1('0xbc')]=function(_0x55219d,_0x35821f,_0x4bb5fd){var _0x42efd6={'raw':![],'where':{}};var _0xdd0af8={};var _0x4476eb={'count':0x0,'rows':[]};return db['OpenchannelInteraction'][_0x8fa1('0xbd')]({'where':{'id':_0x55219d['params']['id']}})['then'](handleEntityNotFound(_0x35821f,null))[_0x8fa1('0x29')](function(_0x35740d){if(_0x35740d){_0xdd0af8[_0x8fa1('0x3a')]=_['keys'](db[_0x8fa1('0xba')][_0x8fa1('0x36')]);_0xdd0af8[_0x8fa1('0x3b')]=_[_0x8fa1('0x3c')](_0x55219d[_0x8fa1('0x3b')]);_0xdd0af8['filters']=_['intersection'](_0xdd0af8[_0x8fa1('0x3a')],_0xdd0af8[_0x8fa1('0x3b')]);_0x42efd6[_0x8fa1('0x3f')]=_[_0x8fa1('0x3e')](_0xdd0af8['model'],qs[_0x8fa1('0x40')](_0x55219d[_0x8fa1('0x3b')][_0x8fa1('0x40')]));_0x42efd6[_0x8fa1('0x3f')]=_0x42efd6[_0x8fa1('0x3f')][_0x8fa1('0x41')]?_0x42efd6[_0x8fa1('0x3f')]:_0xdd0af8[_0x8fa1('0x3a')];if(!_0x55219d[_0x8fa1('0x3b')][_0x8fa1('0x42')]('nolimit')){_0x42efd6[_0x8fa1('0x22')]=qs[_0x8fa1('0x22')](_0x55219d[_0x8fa1('0x3b')]['limit']);_0x42efd6[_0x8fa1('0x1f')]=qs['offset'](_0x55219d['query'][_0x8fa1('0x1f')]);}_0x42efd6['order']=qs[_0x8fa1('0x45')](_0x55219d[_0x8fa1('0x3b')][_0x8fa1('0x45')]);_0x42efd6[_0x8fa1('0x46')]=qs[_0x8fa1('0x3d')](_['pick'](_0x55219d['query'],_0xdd0af8[_0x8fa1('0x3d')]));_0x42efd6[_0x8fa1('0x46')]['OpenchannelInteractionId']=_0x35740d['id'];if(_0x55219d[_0x8fa1('0x3b')]['filter']){_0x42efd6[_0x8fa1('0x46')]=_[_0x8fa1('0x9c')](_0x42efd6[_0x8fa1('0x46')],{'$or':_[_0x8fa1('0x35')](_0x42efd6['attributes'],function(_0x3dc2b7){var _0x41ee90={};_0x41ee90[_0x3dc2b7]={'$like':'%'+_0x55219d[_0x8fa1('0x3b')][_0x8fa1('0x81')]+'%'};return _0x41ee90;})});}if(_0x55219d['query'][_0x8fa1('0x77')]){var _0x5f3468=_0x55219d['query'][_0x8fa1('0x77')][_0x8fa1('0x31')](',');var _0xbff9c9={};_0xbff9c9[_0x5f3468[0x0]]={'$gte':moment(_0x5f3468[0x1])[_0x8fa1('0xbe')](_0x8fa1('0xbf'))};_0x42efd6[_0x8fa1('0x46')]=_[_0x8fa1('0x9c')](_0x42efd6[_0x8fa1('0x46')],_0xbff9c9);}_0x42efd6=_['merge']({},_0x42efd6,_0x55219d[_0x8fa1('0xb5')]);return db[_0x8fa1('0xba')][_0x8fa1('0x21')]({'where':_0x42efd6['where']})[_0x8fa1('0x29')](function(_0x22947a){_0x4476eb[_0x8fa1('0x21')]=_0x22947a;if(_0x55219d['query'][_0x8fa1('0xb3')]){_0x42efd6[_0x8fa1('0xb4')]=[{'all':!![]}];}return db[_0x8fa1('0xba')]['findAll'](_0x42efd6);})[_0x8fa1('0x29')](function(_0x3257fc){_0x4476eb[_0x8fa1('0xb0')]=_0x3257fc;return _0x4476eb;});}})[_0x8fa1('0x29')](respondWithFilteredResult(_0x35821f,_0x42efd6))['catch'](handleError(_0x35821f,null));};exports['addTags']=function(_0x3e046d,_0x314adf,_0x3eff2f){return db[_0x8fa1('0xb6')]['find']({'where':{'id':_0x3e046d[_0x8fa1('0xb2')]['id']}})[_0x8fa1('0x29')](handleEntityNotFound(_0x314adf,null))['then'](function(_0x19c638){if(_0x19c638){return _0x19c638[_0x8fa1('0xc0')](_0x3e046d[_0x8fa1('0x71')][_0x8fa1('0xc1')],_['omit'](_0x3e046d['body'],[_0x8fa1('0xc1'),'id'])||{})[_0x8fa1('0xc2')](function(){return db['Tag'][_0x8fa1('0xc3')]({'attributes':['id',_0x8fa1('0x2c'),_0x8fa1('0x4a')],'where':{'id':_0x3e046d[_0x8fa1('0x71')][_0x8fa1('0xc1')]}});})[_0x8fa1('0x29')](function(_0x3ebf23){socket[_0x8fa1('0xc4')](_0x8fa1('0xc5'),{'id':Number(_0x3e046d[_0x8fa1('0xb2')]['id']),'tags':_0x3ebf23||[]});return{'id':Number(_0x3e046d[_0x8fa1('0xb2')]['id']),'tags':_0x3ebf23||[]};});}})[_0x8fa1('0x29')](respondWithResult(_0x314adf,null))[_0x8fa1('0x34')](handleError(_0x314adf,null));};exports[_0x8fa1('0xc6')]=function(_0x1a714b,_0x10c8f5,_0x46400c){return db[_0x8fa1('0xb6')][_0x8fa1('0x5e')]({'where':{'id':_0x1a714b['params']['id']}})[_0x8fa1('0x29')](handleEntityNotFound(_0x10c8f5,null))['then'](function(_0x45b564){if(_0x45b564){return _0x45b564[_0x8fa1('0xc6')](_0x1a714b[_0x8fa1('0x3b')][_0x8fa1('0xc1')]);}})['then'](respondWithStatusCode(_0x10c8f5,null))[_0x8fa1('0x34')](handleError(_0x10c8f5,null));};exports[_0x8fa1('0xc7')]=function(_0x3b2964,_0x568533){var _0x4f949b=moment()[_0x8fa1('0xc8')]()[_0x8fa1('0x9a')]();var _0x153210=path[_0x8fa1('0xc9')](config[_0x8fa1('0xca')],_0x8fa1('0xcb'),'files',_0x8fa1('0xcc'));var _0x527f26=path[_0x8fa1('0xc9')](config['root'],_0x8fa1('0xcb'),'files','attachments');var _0x21897e=path[_0x8fa1('0xc9')](_0x153210,_0x4f949b);var _0x197103=util[_0x8fa1('0xbe')](_0x8fa1('0xcd'),_0x3b2964['params']['id'],_0x4f949b);var _0x141ebb=path['join'](_0x153210,_0x197103);var _0x58c042=[];_0x58c042[_0x8fa1('0x33')]({'model':db[_0x8fa1('0x6e')],'as':'User','attributes':['id',_0x8fa1('0x2e')],'raw':!![]});_0x58c042[_0x8fa1('0x33')]({'model':db['CmContact'],'as':_0x8fa1('0x64'),'attributes':['id',_0x8fa1('0xce'),_0x8fa1('0xcf')],'raw':!![]});if(_0x3b2964[_0x8fa1('0x3b')][_0x8fa1('0xd0')]){_0x58c042[_0x8fa1('0x33')]({'model':db['Attachment'],'as':'Attachment','raw':!![]});}var _0x18e51a=[{'model':db[_0x8fa1('0xba')],'as':_0x8fa1('0xd1'),'attributes':['id',_0x8fa1('0x71'),_0x8fa1('0x75'),_0x8fa1('0xd2'),_0x8fa1('0xd3'),_0x8fa1('0x7c')],'include':_0x58c042}];_0x18e51a[_0x8fa1('0x33')]({'model':db[_0x8fa1('0xd4')],'as':_0x8fa1('0xd5'),'attributes':['id',_0x8fa1('0x2c')]});_0x18e51a[_0x8fa1('0x33')]({'model':db[_0x8fa1('0x6e')],'as':'Owner','attributes':['id','fullname']});return db[_0x8fa1('0xb6')][_0x8fa1('0x5e')]({'where':{'id':_0x3b2964['params']['id']},'include':_0x18e51a})[_0x8fa1('0x29')](handleEntityNotFound(_0x568533,null))['then'](function(_0x88815c){if(_0x88815c){var _0x683cbd=_0x88815c[_0x8fa1('0xd6')]({'plain':!![]});fs['mkdirSync'](_0x21897e);var _0x33ba6c={'channel':'Openchannel','account':_0x683cbd[_0x8fa1('0xd5')]['name'],'agent':_0x683cbd[_0x8fa1('0xd7')]?_0x683cbd[_0x8fa1('0xd7')][_0x8fa1('0x2e')]:'N.A.','createdAt':moment(_0x683cbd[_0x8fa1('0x75')])[_0x8fa1('0xbe')](_0x8fa1('0xbf'))['toString'](),'closedAt':_0x683cbd[_0x8fa1('0xd8')]?moment(_0x683cbd['closedAt'])['format'](_0x8fa1('0xbf'))[_0x8fa1('0x9a')]():'','disposition':_0x683cbd[_0x8fa1('0xd9')],'visibility':_0x683cbd['threadId']?_0x8fa1('0xda'):_0x8fa1('0xdb'),'messages':_(_0x683cbd[_0x8fa1('0xd1')])[_0x8fa1('0x81')]({'secret':![]})['map'](function(_0x36c31a){if(_0x36c31a['Attachment']){var _0x4f5674=path['join'](_0x527f26,_0x36c31a['Attachment'][_0x8fa1('0xdc')]);if(fs[_0x8fa1('0xdd')](_0x4f5674)){fs[_0x8fa1('0xde')](_0x4f5674)['pipe'](fs[_0x8fa1('0xdf')](path[_0x8fa1('0xc9')](_0x21897e,_0x36c31a[_0x8fa1('0xe0')][_0x8fa1('0xdc')])));}}return{'date':moment(_0x36c31a[_0x8fa1('0x75')])['format'](_0x8fa1('0xbf'))[_0x8fa1('0x9a')](),'sender':_0x36c31a[_0x8fa1('0xd2')]===_0x8fa1('0xe1')?_0x36c31a[_0x8fa1('0x6e')]?_0x36c31a[_0x8fa1('0x6e')][_0x8fa1('0x2e')]:_0x8fa1('0xe2'):_0x36c31a[_0x8fa1('0x64')][_0x8fa1('0xce')]+(_0x36c31a[_0x8fa1('0x64')][_0x8fa1('0xcf')]?'\x20'+_0x36c31a[_0x8fa1('0x64')][_0x8fa1('0xcf')]:''),'body':_0x36c31a[_0x8fa1('0xe0')]?_0x36c31a['Attachment'][_0x8fa1('0xdc')]:_0x36c31a[_0x8fa1('0x71')],'direction':_0x36c31a[_0x8fa1('0xd2')]==='out'?'A':'C','secret':_0x36c31a['secret'],'read':_0x36c31a[_0x8fa1('0x7c')],'attachment':_0x36c31a[_0x8fa1('0xe0')]};})[_0x8fa1('0x60')]()};return ejs[_0x8fa1('0xe3')](path[_0x8fa1('0xc9')](config[_0x8fa1('0xca')],_0x8fa1('0xcb'),_0x8fa1('0xe4'),_0x8fa1('0xe5')),{'interaction':_0x33ba6c})[_0x8fa1('0x29')](function(_0x1c2626){var _0x21951c=path['join'](_0x21897e,_0x8fa1('0xe6')+_0x683cbd['id']+'-'+_0x4f949b+_0x8fa1('0xe7'));var _0x503fb1={'path':_0x21951c,'channel':'Openchannel','interactionId':_0x683cbd['id']};return pdf[_0x8fa1('0xe8')](_0x1c2626,_0x503fb1);})[_0x8fa1('0x29')](function(){return new BPromise(function(_0xc4df8,_0x595545){zipdir(_0x21897e,{'saveTo':_0x141ebb},function(_0x4f9c41,_0x2fc097){if(_0x4f9c41)return _0x595545(_0x4f9c41);return _0xc4df8(_0x2fc097);});})['then'](function(){return new BPromise(function(_0x1acb6c,_0x48f2cf){rimraf(_0x21897e,function(_0x9fa104){if(_0x9fa104)_0x48f2cf(_0x9fa104);return _0x1acb6c();});});})[_0x8fa1('0x29')](function(){return _0x568533['download'](_0x141ebb,_0x197103,function(_0x14703a){if(_0x14703a){console[_0x8fa1('0xe9')](_0x8fa1('0xea'),_0x14703a);}else{fs[_0x8fa1('0xeb')](_0x141ebb);}});});});}else{return _0x568533['sendStatus'](0xc8);}})['catch'](handleError(_0x568533,null));};
\ No newline at end of file
+var _0xb40b=['UserId','body','keys','isEmpty','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','t.id\x20IN\x20?','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','toString','sequelize','keyBy','merge','a.key','Account.mandatoryDisposition','i.*','c.firstName','Contact.firstName','c.lastName','c.email','Contact.email','c.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','OpenchannelInteractionId','all','rows','catch','params','includeAll','options','create','destroy','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','findOne','nolimit','format','YYYY-MM-DD\x20HH:mm:ss','include','findAll','addTags','setTags','spread','Tag','emit','openchannelInteractionTags:save','removeTags','download','unix','root','server','files','tmp','attachments','join','transcript-%d-%s.zip','User','CmContact','firstName','Attachment','Messages','direction','secret','Account','Owner','get','mkdirSync','fullname','N.A.','closed','disposition','threadId','Public','existsSync','createReadStream','pipe','createWriteStream','basename','System','lastName','out','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','Openchannel','createPdfFromHTML','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','register','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','sendStatus','name','send','Users','Tags','TagIds','split','forEach','push','map','OpenchannelInteraction','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','select','field','color','tools_tags','u.id','ui.OpenchannelInteractionId','from','user_has_openchannel_interactions','left_join','users','u.id\x20=\x20ui.UserId','openchannel_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','value','having','`\x20=\x200','`\x20>\x200','Contact','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','operator','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?'];(function(_0xcb28a4,_0x34fb88){var _0x55f5eb=function(_0x5d8769){while(--_0x5d8769){_0xcb28a4['push'](_0xcb28a4['shift']());}};_0x55f5eb(++_0x34fb88);}(_0xb40b,0x86));var _0xbb40=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0xb40b[_0x2064e5];return _0x21a233;};'use strict';var emlformat=require(_0xbb40('0x0'));var rimraf=require(_0xbb40('0x1'));var zipdir=require(_0xbb40('0x2'));var jsonpatch=require(_0xbb40('0x3'));var rp=require(_0xbb40('0x4'));var moment=require(_0xbb40('0x5'));var BPromise=require(_0xbb40('0x6'));var Mustache=require(_0xbb40('0x7'));var util=require(_0xbb40('0x8'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xbb40('0x9'));var fs=require('fs');var fs_extra=require(_0xbb40('0xa'));var _=require(_0xbb40('0xb'));var squel=require(_0xbb40('0xc'));var crypto=require(_0xbb40('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xbb40('0xe'));var toCsv=require('to-csv');var querystring=require(_0xbb40('0xf'));var Papa=require(_0xbb40('0x10'));var Redis=require(_0xbb40('0x11'));var authService=require(_0xbb40('0x12'));var qs=require(_0xbb40('0x13'));var as=require(_0xbb40('0x14'));var pdf=require(_0xbb40('0x15'));var hardwareService=require(_0xbb40('0x16'));var logger=require(_0xbb40('0x17'))(_0xbb40('0x18'));var utils=require(_0xbb40('0x19'));var config=require(_0xbb40('0x1a'));var licenseUtil=require(_0xbb40('0x1b'));var db=require(_0xbb40('0x1c'))['db'];config['redis']=_[_0xbb40('0x1d')](config['redis'],{'host':_0xbb40('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./openchannelInteraction.socket')[_0xbb40('0x1f')](socket);function respondWithStatusCode(_0x193d75,_0x374abd){_0x374abd=_0x374abd||0xcc;return function(_0x97293d){if(_0x97293d){return _0x193d75['sendStatus'](_0x374abd);}return _0x193d75['status'](_0x374abd)[_0xbb40('0x20')]();};}function respondWithResult(_0x439845,_0x4a388e){_0x4a388e=_0x4a388e||0xc8;return function(_0x25abe8){if(_0x25abe8){return _0x439845[_0xbb40('0x21')](_0x4a388e)[_0xbb40('0x22')](_0x25abe8);}};}function respondWithFilteredResult(_0x4c7246,_0x4e2eaf){return function(_0x18b0be){if(_0x18b0be){var _0x476c8c=typeof _0x4e2eaf[_0xbb40('0x23')]===_0xbb40('0x24')&&typeof _0x4e2eaf[_0xbb40('0x25')]===_0xbb40('0x24');var _0xa8ef0d=_0x18b0be['count'];var _0x13f599=_0x476c8c?0x0:_0x4e2eaf[_0xbb40('0x23')];var _0x121d07=_0x476c8c?_0x18b0be[_0xbb40('0x26')]:_0x4e2eaf['offset']+_0x4e2eaf[_0xbb40('0x25')];var _0x38f539;if(_0x121d07>=_0xa8ef0d){_0x121d07=_0xa8ef0d;_0x38f539=0xc8;}else{_0x38f539=0xce;}_0x4c7246[_0xbb40('0x21')](_0x38f539);return _0x4c7246[_0xbb40('0x27')](_0xbb40('0x28'),_0x13f599+'-'+_0x121d07+'/'+_0xa8ef0d)[_0xbb40('0x22')](_0x18b0be);}return null;};}function patchUpdates(_0x5edff5){return function(_0x1793cb){try{jsonpatch[_0xbb40('0x29')](_0x1793cb,_0x5edff5,!![]);}catch(_0x96ddea){return BPromise['reject'](_0x96ddea);}return _0x1793cb['save']();};}function saveUpdates(_0x3a64b1,_0x525871){return function(_0xa04927){if(_0xa04927){return _0xa04927[_0xbb40('0x2a')](_0x3a64b1)[_0xbb40('0x2b')](function(_0x21bdcc){return _0x21bdcc;});}return null;};}function removeEntity(_0x19caf9,_0x5d412d){return function(_0x2d968e){if(_0x2d968e){return _0x2d968e['destroy']()[_0xbb40('0x2b')](function(){_0x19caf9[_0xbb40('0x21')](0xcc)[_0xbb40('0x20')]();});}};}function handleEntityNotFound(_0xaba426,_0x289ca4){return function(_0x5c5714){if(!_0x5c5714){_0xaba426[_0xbb40('0x2c')](0x194);}return _0x5c5714;};}function handleError(_0x8c07d7,_0x2c23ca){_0x2c23ca=_0x2c23ca||0x1f4;return function(_0x25f71f){logger['error'](_0x25f71f['stack']);if(_0x25f71f[_0xbb40('0x2d')]){delete _0x25f71f[_0xbb40('0x2d')];}_0x8c07d7[_0xbb40('0x21')](_0x2c23ca)[_0xbb40('0x2e')](_0x25f71f);};}function getInteractionUsers(_0x51173a,_0x2d627f){return new BPromise(function(_0x455bc5,_0x10d9a4){try{if(_0x2d627f[_0x51173a['id']]){_0x51173a[_0xbb40('0x2f')]=_['map'](_0x2d627f[_0x51173a['id']],function(_0x15c06f){return{'id':_0x15c06f['id'],'fullname':_0x15c06f['fullname']};});}}catch(_0x2ef391){_0x10d9a4(_0x2ef391);}_0x455bc5(_0x51173a);});}function getInteractionTags(_0x55f5c5,_0x30daeb){return new BPromise(function(_0x165818,_0xaf1217){try{if(_0x55f5c5['TagIds']){_0x55f5c5[_0xbb40('0x30')]=[];_0x55f5c5[_0xbb40('0x31')][_0xbb40('0x32')](',')[_0xbb40('0x33')](function(_0x14aa60){_0x55f5c5['Tags'][_0xbb40('0x34')](_0x30daeb[_0x14aa60]);});}delete _0x55f5c5['TagIds'];}catch(_0x249545){_0xaf1217(_0x249545);}_0x165818(_0x55f5c5);});}function updateOpenchannelInteraction(_0x553329,_0x484e60,_0x328c4f){return new BPromise(function(_0x2725ad,_0x4638dc){return getInteractionUsers(_0x553329,_0x328c4f)['then'](function(_0x36fa1f){return getInteractionTags(_0x36fa1f,_0x484e60);})[_0xbb40('0x2b')](function(_0x3e6a3e){_0x2725ad(_0x3e6a3e);})['catch'](function(_0x347d7b){_0x4638dc(_0x347d7b);});});}exports['index']=function(_0x151a51,_0x19d997){var _0x2e9446={},_0x3c426b={},_0x5d07c0={'count':0x0,'rows':[]};var _0xd9c42e=_[_0xbb40('0x35')](db[_0xbb40('0x36')][_0xbb40('0x37')],function(_0x11ad95){return{'name':_0x11ad95[_0xbb40('0x38')],'type':_0x11ad95[_0xbb40('0x39')]['key']};});_0x3c426b[_0xbb40('0x3a')]=_['map'](_0xd9c42e,_0xbb40('0x2d'));_0x3c426b[_0xbb40('0x3b')]=_['keys'](_0x151a51[_0xbb40('0x3b')]);_0x3c426b[_0xbb40('0x3c')]=_[_0xbb40('0x3d')](_0x3c426b[_0xbb40('0x3a')],_0x3c426b[_0xbb40('0x3b')]);_0x2e9446[_0xbb40('0x3e')]=_['intersection'](_0x3c426b[_0xbb40('0x3a')],qs[_0xbb40('0x3f')](_0x151a51[_0xbb40('0x3b')]['fields']));_0x2e9446[_0xbb40('0x3e')]=_0x2e9446[_0xbb40('0x3e')][_0xbb40('0x40')]?_0x2e9446[_0xbb40('0x3e')]:_0x3c426b[_0xbb40('0x3a')];if(!_0x151a51[_0xbb40('0x3b')][_0xbb40('0x41')]('nolimit')){_0x2e9446['limit']=qs[_0xbb40('0x25')](_0x151a51[_0xbb40('0x3b')][_0xbb40('0x25')]);_0x2e9446[_0xbb40('0x23')]=qs[_0xbb40('0x23')](_0x151a51[_0xbb40('0x3b')][_0xbb40('0x23')]);}_0x2e9446[_0xbb40('0x42')]=qs['sort'](_0x151a51[_0xbb40('0x3b')][_0xbb40('0x43')]);_0x2e9446[_0xbb40('0x44')]=qs[_0xbb40('0x3c')](_[_0xbb40('0x45')](_0x151a51[_0xbb40('0x3b')],_0x3c426b[_0xbb40('0x3c')]),_0xd9c42e);var _0x4cfd94=[];var _0x171bf5=squel[_0xbb40('0x46')]()[_0xbb40('0x47')]('id')[_0xbb40('0x47')](_0xbb40('0x2d'))[_0xbb40('0x47')](_0xbb40('0x48'))['from'](_0xbb40('0x49'));var _0x55caaa=squel[_0xbb40('0x46')]()[_0xbb40('0x47')](_0xbb40('0x4a'))[_0xbb40('0x47')]('u.fullname')['field'](_0xbb40('0x4b'))[_0xbb40('0x4c')](_0xbb40('0x4d'),'ui')[_0xbb40('0x4e')](_0xbb40('0x4f'),'u',_0xbb40('0x50'));var _0x2f5911=squel[_0xbb40('0x46')]()[_0xbb40('0x4c')](_0xbb40('0x51'),'i')[_0xbb40('0x4e')]('cm_contacts','c',_0xbb40('0x52'))[_0xbb40('0x4e')](_0xbb40('0x4f'),'o',_0xbb40('0x53'))['left_join'](_0xbb40('0x54'),'a',_0xbb40('0x55'))['left_join'](_0xbb40('0x56'),'me','me.OpenchannelInteractionId\x20=\x20i.id')[_0xbb40('0x4e')]('openchannel_interaction_has_tags','it',_0xbb40('0x57'))[_0xbb40('0x4e')](_0xbb40('0x49'),'t',_0xbb40('0x58'));var _0x476bc3=squel[_0xbb40('0x59')]();var _0x54e058=[];var _0x7f39c0=squel[_0xbb40('0x59')]();var _0x2e4bf6;if(_0x151a51[_0xbb40('0x3b')][_0xbb40('0x5a')]){_0x2e4bf6=as[_0xbb40('0x5b')](_0x151a51['query'][_0xbb40('0x5a')]);var _0x417b29=_0x2e4bf6[_0xbb40('0x5c')];for(var _0x39685b=0x0;_0x39685b<_0x2e4bf6[_0xbb40('0x5d')][_0xbb40('0x40')];_0x39685b++){var _0x12cd27=_0x2e4bf6[_0xbb40('0x5d')][_0x39685b];var _0x5890c1='i';var _0x4c4ed4=_[_0xbb40('0x5e')](_0xd9c42e,['name',_0x12cd27['field']]);if(!_0x4c4ed4){switch(_0x12cd27['field']){case'unreadMessages':if(_0x12cd27[_0xbb40('0x5f')]==0x1){_0x2f5911[_0xbb40('0x60')]('`'+_0x12cd27['field']+_0xbb40('0x61'));}else{_0x2f5911[_0xbb40('0x60')]('`'+_0x12cd27[_0xbb40('0x47')]+_0xbb40('0x62'));}break;case _0xbb40('0x63'):if(_0x12cd27['operator']==='$substring'){if(_0x12cd27[_0xbb40('0x5f')][_0xbb40('0x32')]('\x20')['length']>0x1){_0x476bc3[_0x417b29](_0xbb40('0x64'),qs[_0xbb40('0x65')](_0x12cd27[_0xbb40('0x5f')]),null);}else{var _0x504ef7='%'+_0x12cd27[_0xbb40('0x5f')]+'%';_0x476bc3[_0x417b29](_0xbb40('0x66'),_0x504ef7,_0x504ef7,_0x504ef7);}}else{_0x4c4ed4=_[_0xbb40('0x5e')](_0xd9c42e,['name',_0xbb40('0x67')]);_0x12cd27[_0xbb40('0x47')]=_0xbb40('0x67');_0x2b2333=as[_0xbb40('0x68')](_0x5890c1,_0x4c4ed4['type'],_0x12cd27);_0x476bc3[_0x417b29](_0x2b2333[_0xbb40('0x69')],_0x2b2333[_0xbb40('0x5f')][_0xbb40('0x6a')],_0x2b2333[_0xbb40('0x5f')][_0xbb40('0x20')]);}break;case'Tag':var _0x2a2975=_0x12cd27[_0xbb40('0x5f')][_0xbb40('0x32')](',')[_0xbb40('0x35')](function(_0x39dc86){return Number(_0x39dc86);});_0x2a2975[_0xbb40('0x33')](function(_0x157ff7){_0x7f39c0['or'](_0xbb40('0x6b'),'%,'+_0x157ff7+',%');});_0x54e058=_[_0xbb40('0x6c')](_0x54e058,_0x2a2975);break;case'User':if(_0x12cd27[_0xbb40('0x6d')]===_0xbb40('0x6e')){_0x476bc3[_0x417b29](_0xbb40('0x6f'),'%'+_0x12cd27[_0xbb40('0x5f')]+'%',null);}else{_0x4c4ed4=_[_0xbb40('0x5e')](_0xd9c42e,[_0xbb40('0x2d'),_0xbb40('0x70')]);_0x12cd27[_0xbb40('0x47')]='UserId';_0x2b2333=as[_0xbb40('0x68')](_0x5890c1,_0x4c4ed4[_0xbb40('0x39')],_0x12cd27);_0x476bc3[_0x417b29](_0x2b2333[_0xbb40('0x69')],_0x2b2333[_0xbb40('0x5f')][_0xbb40('0x6a')],_0x2b2333[_0xbb40('0x5f')]['end']);}break;case _0xbb40('0x71'):_0x2b2333=as[_0xbb40('0x68')]('me',null,_0x12cd27);_0x476bc3[_0x417b29](_0x2b2333[_0xbb40('0x69')],_0x2b2333[_0xbb40('0x5f')][_0xbb40('0x6a')],_0x2b2333[_0xbb40('0x5f')][_0xbb40('0x20')]);break;}}else{var _0x2b2333=as[_0xbb40('0x68')](_0x5890c1,_0x4c4ed4[_0xbb40('0x39')],_0x12cd27);_0x476bc3[_0x417b29](_0x2b2333[_0xbb40('0x69')],_0x2b2333[_0xbb40('0x5f')]['start'],_0x2b2333['value'][_0xbb40('0x20')]);}}}else{var _0x5ae3a6=_(_0x151a51[_0xbb40('0x3b')])[_0xbb40('0x72')]()[_0xbb40('0x35')](function(_0x1592ba){return _['some'](_0xd9c42e,[_0xbb40('0x2d'),_0x1592ba])?_0x1592ba:undefined;})['compact']()[_0xbb40('0x5f')]();if(!_[_0xbb40('0x73')](_0x5ae3a6)){_0x5ae3a6[_0xbb40('0x33')](function(_0x24213c){if(_0x24213c===_0xbb40('0x74')){_0x2f5911['where'](_0xbb40('0x75'),[]['concat'](_0x151a51[_0xbb40('0x3b')][_0x24213c]));}else if(_0x24213c===_0xbb40('0x76')){var _0x2a155e=JSON[_0xbb40('0x77')](_0x151a51[_0xbb40('0x3b')][_0x24213c])[_0xbb40('0x78')];var _0x5736c7=JSON[_0xbb40('0x77')](_0x151a51[_0xbb40('0x3b')][_0x24213c])['$lte'];_0x2f5911[_0xbb40('0x44')](_0xbb40('0x79'),_0x2a155e,_0x5736c7);}else{if(_0x151a51[_0xbb40('0x3b')][_0x24213c]===_0xbb40('0x7a')){_0x2f5911[_0xbb40('0x44')]('i.'+_0x24213c+'\x20IS\x20NULL');}else{_0x2f5911[_0xbb40('0x44')]('i.'+_0x24213c+_0xbb40('0x7b'),_0x151a51[_0xbb40('0x3b')][_0x24213c]);}}});}if(_0x151a51[_0xbb40('0x3b')][_0xbb40('0x7c')]){if(_0x151a51[_0xbb40('0x3b')][_0xbb40('0x7c')]==0x1){_0x2f5911['having'](_0xbb40('0x7d'));}else{_0x2f5911['having'](_0xbb40('0x7e'));}}if(_0x151a51[_0xbb40('0x3b')][_0xbb40('0x7f')]){_0x54e058=_[_0xbb40('0x80')](_0x151a51[_0xbb40('0x3b')][_0xbb40('0x7f')])?_0x151a51[_0xbb40('0x3b')][_0xbb40('0x7f')]:new Array(_0x151a51[_0xbb40('0x3b')]['tag']);_0x54e058[_0xbb40('0x33')](function(_0x23f9a8){_0x7f39c0['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x23f9a8+',%');});}if(_0x151a51[_0xbb40('0x3b')][_0xbb40('0x81')]){var _0x51fdab=_0x151a51[_0xbb40('0x3b')][_0xbb40('0x81')][_0xbb40('0x82')]('\x5c','\x5c\x5c')[_0xbb40('0x82')](/'/g,'\x27\x27');if(qs[_0xbb40('0x83')](_0x51fdab)){_0x476bc3['or'](_0xbb40('0x84'),_0x51fdab+'%');}else{_0x476bc3['or'](_0xbb40('0x85'),qs['getFullTextValue'](_0x51fdab))['or']('i.from\x20LIKE\x20?',_0x51fdab+'%')['or'](_0xbb40('0x86'),_0x51fdab+'%');}}}_0x2f5911[_0xbb40('0x44')](_0x476bc3);_0x2f5911[_0xbb40('0x87')](_0xbb40('0x88'));var _0x5a3a19={'type':db[_0xbb40('0x89')][_0xbb40('0x8a')]['SELECT'],'raw':!![]};var _0x2c3d6a=_0x2f5911[_0xbb40('0x8b')]();_0x2c3d6a[_0xbb40('0x47')](_0xbb40('0x88'));_0x2c3d6a['field'](_0xbb40('0x8c'),_0xbb40('0x8d'));if(_0x2e9446[_0xbb40('0x42')]){_0x2e9446[_0xbb40('0x42')][_0xbb40('0x33')](function(_0x5b6dcc){var _0x3883f5=_0x5b6dcc[0x0]===_0xbb40('0x8e')?_0x5b6dcc[0x0]:'i.'+_0x5b6dcc[0x0];_0x2f5911['order'](_0x3883f5,_0x5b6dcc[0x1]===_0xbb40('0x8f')?![]:!![]);});}if(!_[_0xbb40('0x73')](_0x54e058)){_0x2f5911[_0xbb40('0x60')](_0x7f39c0);_0x2c3d6a['where'](_0xbb40('0x90'),_0x54e058);}BPromise[_0xbb40('0x91')]()['then'](function(){if(!_0x2e4bf6){if(_0x151a51['query'][_0xbb40('0x74')])return;_0x2c3d6a[_0xbb40('0x44')](_0xbb40('0x92'));_0x2f5911['where'](_0xbb40('0x92'));return;}if(_0x151a51[_0xbb40('0x93')][_0xbb40('0x94')]!==_0xbb40('0x95'))return;return _0x151a51[_0xbb40('0x93')][_0xbb40('0x96')]({'attributes':['id'],'raw':!![]})[_0xbb40('0x2b')](function(_0x18fdb4){if(_[_0xbb40('0x73')](_0x18fdb4)){_0x2c3d6a[_0xbb40('0x44')](_0xbb40('0x97'));_0x2f5911[_0xbb40('0x44')](_0xbb40('0x97'));}else{_0x2c3d6a[_0xbb40('0x44')]('i.OpenchannelAccountId\x20IN\x20?',_[_0xbb40('0x35')](_0x18fdb4,'id'));_0x2f5911['where'](_0xbb40('0x75'),_[_0xbb40('0x35')](_0x18fdb4,'id'));}});})['then'](function(){if(_0x151a51['user']['role']===_0xbb40('0x95')&&!_0x2e4bf6&&!_0x151a51[_0xbb40('0x3b')][_0xbb40('0x74')])return[];return db['sequelize']['query'](_0x2c3d6a[_0xbb40('0x98')](),_0x5a3a19);})['then'](function(_0x4566c9){_0x5d07c0[_0xbb40('0x26')]=_0x4566c9[_0xbb40('0x40')];if(_0x5d07c0[_0xbb40('0x26')]===0x0)return[];return db[_0xbb40('0x99')][_0xbb40('0x3b')](_0x171bf5[_0xbb40('0x98')](),_0x5a3a19)[_0xbb40('0x2b')](function(_0x4dd78c){_0x4cfd94=_[_0xbb40('0x9a')](_0x4dd78c,'id');_0x5a3a19=_[_0xbb40('0x9b')](_0x5a3a19,{'model':db[_0xbb40('0x36')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x151a51[_0xbb40('0x3b')][_0xbb40('0x3f')]){_0x2e9446[_0xbb40('0x3e')]['forEach'](function(_0x4e381a){_0x2f5911[_0xbb40('0x47')]('i.'+_0x4e381a);});}else{_0x2f5911['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xbb40('0x8d'));_0x2f5911[_0xbb40('0x47')](_0xbb40('0x9c'),'Account.key');_0x2f5911['field']('a.mandatoryDisposition',_0xbb40('0x9d'));_0x2f5911[_0xbb40('0x47')]('CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0xbb40('0x8e'));_0x2f5911[_0xbb40('0x47')](_0xbb40('0x9e'));_0x2f5911[_0xbb40('0x47')](_0xbb40('0x9f'),_0xbb40('0xa0'));_0x2f5911[_0xbb40('0x47')](_0xbb40('0xa1'),'Contact.lastName');_0x2f5911[_0xbb40('0x47')](_0xbb40('0xa2'),_0xbb40('0xa3'));_0x2f5911[_0xbb40('0x47')](_0xbb40('0xa4'),'Contact.phone');_0x2f5911[_0xbb40('0x47')](_0xbb40('0xa5'),_0xbb40('0xa6'));_0x2f5911[_0xbb40('0x47')](_0xbb40('0xa7'),_0xbb40('0xa8'));_0x2f5911[_0xbb40('0x47')](_0xbb40('0xa9'),_0xbb40('0xaa'));_0x2f5911[_0xbb40('0x47')](_0xbb40('0xab'),'Owner.internal');_0x2f5911[_0xbb40('0x47')](_0xbb40('0xac'),_0xbb40('0x31'));}if(_0x2e9446[_0xbb40('0x25')])_0x2f5911['limit'](_0x2e9446['limit']);if(_0x2e9446[_0xbb40('0x23')])_0x2f5911[_0xbb40('0x23')](_0x2e9446['offset']);return db['sequelize'][_0xbb40('0x3b')](_0x2f5911[_0xbb40('0x98')](),_0x5a3a19);})[_0xbb40('0x2b')](function(_0x11da29){if(_0x11da29[_0xbb40('0x40')]>0x0)_0x55caaa[_0xbb40('0x44')]('ui.OpenchannelInteractionId\x20IN\x20?',_[_0xbb40('0x35')](_0x11da29,'id'));return db[_0xbb40('0x99')]['query'](_0x55caaa[_0xbb40('0x98')](),_0x5a3a19)[_0xbb40('0x2b')](function(_0x13c192){var _0x36db57=_[_0xbb40('0xad')](_0x13c192,_0xbb40('0xae'));var _0x206001=[];_0x11da29['forEach'](function(_0x21b888){_0x206001[_0xbb40('0x34')](updateOpenchannelInteraction(_0x21b888,_0x4cfd94,_0x36db57));});return BPromise[_0xbb40('0xaf')](_0x206001);});});})['then'](function(_0x5436a5){_0x5d07c0[_0xbb40('0xb0')]=_0x5436a5;return _0x5d07c0;})[_0xbb40('0x2b')](respondWithFilteredResult(_0x19d997,_0x2e9446))[_0xbb40('0xb1')](handleError(_0x19d997,null));};exports['show']=function(_0x43e30e,_0x39b889){var _0x2da5d3={};if(_0x43e30e[_0xbb40('0x3b')][_0xbb40('0x39')]&&_0x43e30e[_0xbb40('0x3b')][_0xbb40('0x39')]===_0xbb40('0x4c')){_0x2da5d3[_0xbb40('0x4c')]=_0x43e30e[_0xbb40('0xb2')]['id'];}else{_0x2da5d3['id']=_0x43e30e[_0xbb40('0xb2')]['id'];}var _0x39a9b0={'raw':![],'where':_0x2da5d3},_0x3365f5={};_0x3365f5[_0xbb40('0x3a')]=_['keys'](db[_0xbb40('0x36')][_0xbb40('0x37')]);_0x3365f5['query']=_['keys'](_0x43e30e[_0xbb40('0x3b')]);_0x3365f5['filters']=_[_0xbb40('0x3d')](_0x3365f5[_0xbb40('0x3a')],_0x3365f5[_0xbb40('0x3b')]);_0x39a9b0[_0xbb40('0x3e')]=_[_0xbb40('0x3d')](_0x3365f5[_0xbb40('0x3a')],qs[_0xbb40('0x3f')](_0x43e30e['query'][_0xbb40('0x3f')]));_0x39a9b0[_0xbb40('0x3e')]=_0x39a9b0[_0xbb40('0x3e')]['length']?_0x39a9b0['attributes']:_0x3365f5['model'];if(_0x43e30e[_0xbb40('0x3b')][_0xbb40('0xb3')]){_0x39a9b0['include']=[{'all':!![]}];}_0x39a9b0=_[_0xbb40('0x9b')]({},_0x39a9b0,_0x43e30e[_0xbb40('0xb4')]);return db[_0xbb40('0x36')][_0xbb40('0x5e')](_0x39a9b0)[_0xbb40('0x2b')](handleEntityNotFound(_0x39b889,null))[_0xbb40('0x2b')](respondWithResult(_0x39b889,null))[_0xbb40('0xb1')](handleError(_0x39b889,null));};exports[_0xbb40('0xb5')]=function(_0x3962b2,_0x4d1e26){return db[_0xbb40('0x36')]['create'](_0x3962b2[_0xbb40('0x71')],{})['then'](respondWithResult(_0x4d1e26,0xc9))[_0xbb40('0xb1')](handleError(_0x4d1e26,null));};exports[_0xbb40('0x2a')]=function(_0x81fad,_0x59da8d){if(_0x81fad[_0xbb40('0x71')]['id']){delete _0x81fad['body']['id'];}return db[_0xbb40('0x36')][_0xbb40('0x5e')]({'where':{'id':_0x81fad[_0xbb40('0xb2')]['id']}})[_0xbb40('0x2b')](handleEntityNotFound(_0x59da8d,null))[_0xbb40('0x2b')](saveUpdates(_0x81fad['body'],null))[_0xbb40('0x2b')](respondWithResult(_0x59da8d,null))[_0xbb40('0xb1')](handleError(_0x59da8d,null));};exports[_0xbb40('0xb6')]=function(_0xdcfdb3,_0x4b96ef){return db[_0xbb40('0x36')]['find']({'where':{'id':_0xdcfdb3[_0xbb40('0xb2')]['id']}})[_0xbb40('0x2b')](handleEntityNotFound(_0x4b96ef,null))[_0xbb40('0x2b')](removeEntity(_0x4b96ef,null))[_0xbb40('0xb1')](handleError(_0x4b96ef,null));};exports[_0xbb40('0xb7')]=function(_0x2ab9ed,_0x19d3e2){return db['OpenchannelInteraction'][_0xbb40('0xb7')]()[_0xbb40('0x2b')](respondWithResult(_0x19d3e2,null))[_0xbb40('0xb1')](handleError(_0x19d3e2,null));};exports[_0xbb40('0xb8')]=function(_0x41c23d,_0x5d8b5d,_0x4788a6){return db[_0xbb40('0xb9')][_0xbb40('0x5e')]({'where':{'id':_0x41c23d[_0xbb40('0xb2')]['id']}})[_0xbb40('0x2b')](handleEntityNotFound(_0x5d8b5d,null))[_0xbb40('0x2b')](function(_0x191a82){if(_0x191a82){return _0x191a82[_0xbb40('0xb8')](_0x41c23d[_0xbb40('0x71')][_0xbb40('0xba')],_[_0xbb40('0xbb')](_0x41c23d[_0xbb40('0x71')],[_0xbb40('0xba'),'id'])||{});}})[_0xbb40('0x2b')](respondWithResult(_0x5d8b5d,null))['catch'](handleError(_0x5d8b5d,null));};exports[_0xbb40('0xbc')]=function(_0x1a8b7,_0x4c3b82,_0x4b7633){var _0x312764={'raw':![],'where':{}};var _0x293b99={};var _0x544052={'count':0x0,'rows':[]};return db[_0xbb40('0x36')][_0xbb40('0xbd')]({'where':{'id':_0x1a8b7['params']['id']}})[_0xbb40('0x2b')](handleEntityNotFound(_0x4c3b82,null))[_0xbb40('0x2b')](function(_0x5e3df5){if(_0x5e3df5){_0x293b99[_0xbb40('0x3a')]=_[_0xbb40('0x72')](db[_0xbb40('0xb9')][_0xbb40('0x37')]);_0x293b99[_0xbb40('0x3b')]=_[_0xbb40('0x72')](_0x1a8b7[_0xbb40('0x3b')]);_0x293b99[_0xbb40('0x3c')]=_['intersection'](_0x293b99[_0xbb40('0x3a')],_0x293b99[_0xbb40('0x3b')]);_0x312764[_0xbb40('0x3e')]=_[_0xbb40('0x3d')](_0x293b99[_0xbb40('0x3a')],qs['fields'](_0x1a8b7['query']['fields']));_0x312764[_0xbb40('0x3e')]=_0x312764[_0xbb40('0x3e')][_0xbb40('0x40')]?_0x312764[_0xbb40('0x3e')]:_0x293b99['model'];if(!_0x1a8b7[_0xbb40('0x3b')][_0xbb40('0x41')](_0xbb40('0xbe'))){_0x312764[_0xbb40('0x25')]=qs[_0xbb40('0x25')](_0x1a8b7[_0xbb40('0x3b')][_0xbb40('0x25')]);_0x312764[_0xbb40('0x23')]=qs['offset'](_0x1a8b7[_0xbb40('0x3b')]['offset']);}_0x312764['order']=qs['sort'](_0x1a8b7[_0xbb40('0x3b')][_0xbb40('0x43')]);_0x312764[_0xbb40('0x44')]=qs[_0xbb40('0x3c')](_[_0xbb40('0x45')](_0x1a8b7[_0xbb40('0x3b')],_0x293b99[_0xbb40('0x3c')]));_0x312764['where']['OpenchannelInteractionId']=_0x5e3df5['id'];if(_0x1a8b7[_0xbb40('0x3b')]['filter']){_0x312764[_0xbb40('0x44')]=_[_0xbb40('0x9b')](_0x312764[_0xbb40('0x44')],{'$or':_[_0xbb40('0x35')](_0x312764['attributes'],function(_0x2fcacc){var _0x112b31={};_0x112b31[_0x2fcacc]={'$like':'%'+_0x1a8b7[_0xbb40('0x3b')][_0xbb40('0x81')]+'%'};return _0x112b31;})});}if(_0x1a8b7[_0xbb40('0x3b')]['$gte']){var _0x359f85=_0x1a8b7[_0xbb40('0x3b')][_0xbb40('0x78')][_0xbb40('0x32')](',');var _0x245f12={};_0x245f12[_0x359f85[0x0]]={'$gte':moment(_0x359f85[0x1])[_0xbb40('0xbf')](_0xbb40('0xc0'))};_0x312764[_0xbb40('0x44')]=_[_0xbb40('0x9b')](_0x312764[_0xbb40('0x44')],_0x245f12);}_0x312764=_[_0xbb40('0x9b')]({},_0x312764,_0x1a8b7[_0xbb40('0xb4')]);return db[_0xbb40('0xb9')]['count']({'where':_0x312764['where']})['then'](function(_0x381c31){_0x544052['count']=_0x381c31;if(_0x1a8b7[_0xbb40('0x3b')][_0xbb40('0xb3')]){_0x312764[_0xbb40('0xc1')]=[{'all':!![]}];}return db[_0xbb40('0xb9')][_0xbb40('0xc2')](_0x312764);})[_0xbb40('0x2b')](function(_0x13c510){_0x544052['rows']=_0x13c510;return _0x544052;});}})['then'](respondWithFilteredResult(_0x4c3b82,_0x312764))[_0xbb40('0xb1')](handleError(_0x4c3b82,null));};exports[_0xbb40('0xc3')]=function(_0xbd488,_0x373476,_0x5a38ac){return db[_0xbb40('0x36')][_0xbb40('0x5e')]({'where':{'id':_0xbd488[_0xbb40('0xb2')]['id']}})[_0xbb40('0x2b')](handleEntityNotFound(_0x373476,null))['then'](function(_0x258871){if(_0x258871){return _0x258871[_0xbb40('0xc4')](_0xbd488[_0xbb40('0x71')][_0xbb40('0xba')],_[_0xbb40('0xbb')](_0xbd488[_0xbb40('0x71')],['ids','id'])||{})[_0xbb40('0xc5')](function(){return db[_0xbb40('0xc6')]['findAll']({'attributes':['id',_0xbb40('0x2d'),_0xbb40('0x48')],'where':{'id':_0xbd488[_0xbb40('0x71')]['ids']}});})[_0xbb40('0x2b')](function(_0x6b95bf){socket[_0xbb40('0xc7')](_0xbb40('0xc8'),{'id':Number(_0xbd488['params']['id']),'tags':_0x6b95bf||[]});return{'id':Number(_0xbd488[_0xbb40('0xb2')]['id']),'tags':_0x6b95bf||[]};});}})[_0xbb40('0x2b')](respondWithResult(_0x373476,null))['catch'](handleError(_0x373476,null));};exports['removeTags']=function(_0xb9fdf5,_0x2bede6,_0x5307be){return db['OpenchannelInteraction']['find']({'where':{'id':_0xb9fdf5[_0xbb40('0xb2')]['id']}})[_0xbb40('0x2b')](handleEntityNotFound(_0x2bede6,null))[_0xbb40('0x2b')](function(_0x4fae0d){if(_0x4fae0d){return _0x4fae0d[_0xbb40('0xc9')](_0xb9fdf5[_0xbb40('0x3b')][_0xbb40('0xba')]);}})[_0xbb40('0x2b')](respondWithStatusCode(_0x2bede6,null))['catch'](handleError(_0x2bede6,null));};exports[_0xbb40('0xca')]=function(_0x3176ac,_0x1168dd){var _0x2c065d=moment()[_0xbb40('0xcb')]()['toString']();var _0x37c81d=path['join'](config[_0xbb40('0xcc')],_0xbb40('0xcd'),_0xbb40('0xce'),_0xbb40('0xcf'));var _0xd64669=path['join'](config[_0xbb40('0xcc')],'server',_0xbb40('0xce'),_0xbb40('0xd0'));var _0x35be7f=path[_0xbb40('0xd1')](_0x37c81d,_0x2c065d);var _0x1d4172=util['format'](_0xbb40('0xd2'),_0x3176ac['params']['id'],_0x2c065d);var _0xedc742=path[_0xbb40('0xd1')](_0x37c81d,_0x1d4172);var _0x47ac89=[];_0x47ac89[_0xbb40('0x34')]({'model':db['User'],'as':_0xbb40('0xd3'),'attributes':['id','fullname'],'raw':!![]});_0x47ac89['push']({'model':db[_0xbb40('0xd4')],'as':_0xbb40('0x63'),'attributes':['id',_0xbb40('0xd5'),'lastName'],'raw':!![]});if(_0x3176ac[_0xbb40('0x3b')][_0xbb40('0xd0')]){_0x47ac89[_0xbb40('0x34')]({'model':db[_0xbb40('0xd6')],'as':_0xbb40('0xd6'),'raw':!![]});}var _0x10f8b8=[{'model':db[_0xbb40('0xb9')],'as':_0xbb40('0xd7'),'attributes':['id',_0xbb40('0x71'),_0xbb40('0x76'),_0xbb40('0xd8'),_0xbb40('0xd9'),'read'],'include':_0x47ac89}];_0x10f8b8[_0xbb40('0x34')]({'model':db['OpenchannelAccount'],'as':_0xbb40('0xda'),'attributes':['id','name']});_0x10f8b8[_0xbb40('0x34')]({'model':db['User'],'as':_0xbb40('0xdb'),'attributes':['id','fullname']});return db['OpenchannelInteraction'][_0xbb40('0x5e')]({'where':{'id':_0x3176ac[_0xbb40('0xb2')]['id']},'include':_0x10f8b8})['then'](handleEntityNotFound(_0x1168dd,null))[_0xbb40('0x2b')](function(_0x29e2d0){if(_0x29e2d0){var _0x429462=_0x29e2d0[_0xbb40('0xdc')]({'plain':!![]});fs[_0xbb40('0xdd')](_0x35be7f);var _0x57d8a7={'channel':'Openchannel','account':_0x429462[_0xbb40('0xda')][_0xbb40('0x2d')],'agent':_0x429462[_0xbb40('0xdb')]?_0x429462[_0xbb40('0xdb')][_0xbb40('0xde')]:_0xbb40('0xdf'),'createdAt':moment(_0x429462[_0xbb40('0x76')])[_0xbb40('0xbf')](_0xbb40('0xc0'))[_0xbb40('0x98')](),'closedAt':_0x429462[_0xbb40('0xe0')]?moment(_0x429462['closedAt'])[_0xbb40('0xbf')](_0xbb40('0xc0'))[_0xbb40('0x98')]():'','disposition':_0x429462[_0xbb40('0xe1')],'visibility':_0x429462[_0xbb40('0xe2')]?_0xbb40('0xe3'):'Private','messages':_(_0x429462[_0xbb40('0xd7')])[_0xbb40('0x81')]({'secret':![]})[_0xbb40('0x35')](function(_0x43c875){if(_0x43c875[_0xbb40('0xd6')]){var _0x2b6840=path[_0xbb40('0xd1')](_0xd64669,_0x43c875['Attachment']['basename']);if(fs[_0xbb40('0xe4')](_0x2b6840)){fs[_0xbb40('0xe5')](_0x2b6840)[_0xbb40('0xe6')](fs[_0xbb40('0xe7')](path[_0xbb40('0xd1')](_0x35be7f,_0x43c875[_0xbb40('0xd6')][_0xbb40('0xe8')])));}}return{'date':moment(_0x43c875['createdAt'])[_0xbb40('0xbf')](_0xbb40('0xc0'))[_0xbb40('0x98')](),'sender':_0x43c875[_0xbb40('0xd8')]==='out'?_0x43c875[_0xbb40('0xd3')]?_0x43c875[_0xbb40('0xd3')][_0xbb40('0xde')]:_0xbb40('0xe9'):_0x43c875[_0xbb40('0x63')][_0xbb40('0xd5')]+(_0x43c875[_0xbb40('0x63')][_0xbb40('0xea')]?'\x20'+_0x43c875[_0xbb40('0x63')]['lastName']:''),'body':_0x43c875[_0xbb40('0xd6')]?_0x43c875[_0xbb40('0xd6')][_0xbb40('0xe8')]:_0x43c875['body'],'direction':_0x43c875[_0xbb40('0xd8')]===_0xbb40('0xeb')?'A':'C','secret':_0x43c875[_0xbb40('0xd9')],'read':_0x43c875[_0xbb40('0x7c')],'attachment':_0x43c875['Attachment']};})[_0xbb40('0x5f')]()};return ejs[_0xbb40('0xec')](path[_0xbb40('0xd1')](config['root'],_0xbb40('0xcd'),_0xbb40('0xed'),_0xbb40('0xee')),{'interaction':_0x57d8a7})['then'](function(_0x54b644){var _0x45c828=path['join'](_0x35be7f,_0xbb40('0xef')+_0x429462['id']+'-'+_0x2c065d+_0xbb40('0xf0'));var _0x2038bf={'path':_0x45c828,'channel':_0xbb40('0xf1'),'interactionId':_0x429462['id']};return pdf[_0xbb40('0xf2')](_0x54b644,_0x2038bf);})[_0xbb40('0x2b')](function(){return new BPromise(function(_0x553582,_0x4717b5){zipdir(_0x35be7f,{'saveTo':_0xedc742},function(_0xddc657,_0x4a1475){if(_0xddc657)return _0x4717b5(_0xddc657);return _0x553582(_0x4a1475);});})['then'](function(){return new BPromise(function(_0x47e381,_0x325a30){rimraf(_0x35be7f,function(_0x27649a){if(_0x27649a)_0x325a30(_0x27649a);return _0x47e381();});});})[_0xbb40('0x2b')](function(){return _0x1168dd[_0xbb40('0xca')](_0xedc742,_0x1d4172,function(_0xd5d2c9){if(_0xd5d2c9){console[_0xbb40('0xf3')](_0xbb40('0xf4'),_0xd5d2c9);}else{fs[_0xbb40('0xf5')](_0xedc742);}});});});}else{return _0x1168dd['sendStatus'](0xc8);}})[_0xbb40('0xb1')](handleError(_0x1168dd,null));};
\ No newline at end of file
index f06e180..e7c97fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x519e=['save','update','getUsers','then','setDataValue','Users','map','unreadMessages','length','emit','hasOwnProperty','hook','events','../../mysqldb','OpenchannelInteraction','OpenchannelMessage'];(function(_0x11ee59,_0x11f8c1){var _0x35bc14=function(_0x278b2a){while(--_0x278b2a){_0x11ee59['push'](_0x11ee59['shift']());}};_0x35bc14(++_0x11f8c1);}(_0x519e,0x10c));var _0xe519=function(_0x124a89,_0x2e9c87){_0x124a89=_0x124a89-0x0;var _0x2a7ebb=_0x519e[_0x124a89];return _0x2a7ebb;};'use strict';var EventEmitter=require(_0xe519('0x0'));var OpenchannelInteraction=require(_0xe519('0x1'))['db'][_0xe519('0x2')];var OpenchannelMessage=require(_0xe519('0x1'))['db'][_0xe519('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe519('0x4'),'afterUpdate':_0xe519('0x5'),'afterDestroy':'remove'};function emitEvent(_0x204f2d){return function(_0x413a4f,_0x22259a,_0x7134f9){_0x413a4f[_0xe519('0x6')]({'attributes':['id'],'raw':!![]})[_0xe519('0x7')](function(_0x4ac0f4){_0x413a4f[_0xe519('0x8')](_0xe519('0x9'),_0x4ac0f4[_0xe519('0xa')](function(_0xc07ae0){return{'id':_0xc07ae0['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x413a4f['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe519('0x7')](function(_0x1b002b){_0x413a4f[_0xe519('0x8')](_0xe519('0xb'),_0x1b002b[_0xe519('0xc')]);OpenchannelInteractionEvents[_0xe519('0xd')](_0x204f2d+':'+_0x413a4f['id'],_0x413a4f);OpenchannelInteractionEvents['emit'](_0x204f2d,_0x413a4f);_0x7134f9(null);})['catch'](_0x7134f9(null));};}for(var e in events){if(events[_0xe519('0xe')](e)){var event=events[e];OpenchannelInteraction[_0xe519('0xf')](e,emitEvent(event));}}module['exports']=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x45bd=['update','setDataValue','Users','map','then','unreadMessages','emit','hasOwnProperty','events','../../mysqldb','OpenchannelInteraction','OpenchannelMessage','setMaxListeners'];(function(_0x3830e6,_0x46c265){var _0x4ab09f=function(_0x16da51){while(--_0x16da51){_0x3830e6['push'](_0x3830e6['shift']());}};_0x4ab09f(++_0x46c265);}(_0x45bd,0x1b5));var _0xd45b=function(_0x17ffff,_0x2f39a3){_0x17ffff=_0x17ffff-0x0;var _0x242227=_0x45bd[_0x17ffff];return _0x242227;};'use strict';var EventEmitter=require(_0xd45b('0x0'));var OpenchannelInteraction=require(_0xd45b('0x1'))['db'][_0xd45b('0x2')];var OpenchannelMessage=require(_0xd45b('0x1'))['db'][_0xd45b('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xd45b('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd45b('0x5'),'afterDestroy':'remove'};function emitEvent(_0x5c14a9){return function(_0x196dd5,_0x5c5bf5,_0x5f5905){_0x196dd5['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x87347b){_0x196dd5[_0xd45b('0x6')](_0xd45b('0x7'),_0x87347b[_0xd45b('0x8')](function(_0x47ac6c){return{'id':_0x47ac6c['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x196dd5['id'],'direction':'in','read':![]},'raw':!![]});})[_0xd45b('0x9')](function(_0x5c90bd){_0x196dd5[_0xd45b('0x6')](_0xd45b('0xa'),_0x5c90bd['length']);OpenchannelInteractionEvents[_0xd45b('0xb')](_0x5c14a9+':'+_0x196dd5['id'],_0x196dd5);OpenchannelInteractionEvents['emit'](_0x5c14a9,_0x196dd5);_0x5f5905(null);})['catch'](_0x5f5905(null));};}for(var e in events){if(events[_0xd45b('0xc')](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module['exports']=OpenchannelInteractionEvents;
\ No newline at end of file
index d02a9cb..df1305f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d91=['moment','bluebird','request-promise','path','../../config/environment','exports','OpenchannelInteraction','openchannel_interactions','utf8mb4_unicode_ci','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api'];(function(_0x5e0e90,_0x1c8363){var _0x33cfe3=function(_0x44f842){while(--_0x44f842){_0x5e0e90['push'](_0x5e0e90['shift']());}};_0x33cfe3(++_0x1c8363);}(_0x3d91,0x1d9));var _0x13d9=function(_0x5b2433,_0x55e16e){_0x5b2433=_0x5b2433-0x0;var _0x43dfe0=_0x3d91[_0x5b2433];return _0x43dfe0;};'use strict';var _=require(_0x13d9('0x0'));var util=require('util');var logger=require(_0x13d9('0x1'))(_0x13d9('0x2'));var moment=require(_0x13d9('0x3'));var BPromise=require(_0x13d9('0x4'));var rp=require(_0x13d9('0x5'));var fs=require('fs');var path=require(_0x13d9('0x6'));var rimraf=require('rimraf');var config=require(_0x13d9('0x7'));var attributes=require('./openchannelInteraction.attributes');module[_0x13d9('0x8')]=function(_0x43c570,_0x13b1b4){return _0x43c570['define'](_0x13d9('0x9'),attributes,{'tableName':_0x13d9('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x13d9('0xb'),'hooks':{'beforeUpdate':function(_0x5afaed,_0x177b66,_0x1f68e2){if(_0x5afaed[_0x13d9('0xc')](_0x13d9('0xd'))){_0x5afaed[_0x13d9('0xe')]=moment()[_0x13d9('0xf')](_0x13d9('0x10'));}_0x1f68e2(null,_0x5afaed);}}});};
\ No newline at end of file
+var _0x8d1e=['../../config/environment','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','changed','closedAt','format','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x4c73ac,_0x46b73c){var _0x9839ee=function(_0x2076fb){while(--_0x2076fb){_0x4c73ac['push'](_0x4c73ac['shift']());}};_0x9839ee(++_0x46b73c);}(_0x8d1e,0x107));var _0xe8d1=function(_0x3340c8,_0x3d67d7){_0x3340c8=_0x3340c8-0x0;var _0x30ca8a=_0x8d1e[_0x3340c8];return _0x30ca8a;};'use strict';var _=require(_0xe8d1('0x0'));var util=require(_0xe8d1('0x1'));var logger=require(_0xe8d1('0x2'))(_0xe8d1('0x3'));var moment=require(_0xe8d1('0x4'));var BPromise=require(_0xe8d1('0x5'));var rp=require(_0xe8d1('0x6'));var fs=require('fs');var path=require(_0xe8d1('0x7'));var rimraf=require(_0xe8d1('0x8'));var config=require(_0xe8d1('0x9'));var attributes=require(_0xe8d1('0xa'));module[_0xe8d1('0xb')]=function(_0x2f75ec,_0x27e604){return _0x2f75ec[_0xe8d1('0xc')](_0xe8d1('0xd'),attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x20fd04,_0x3989e2,_0x5d4f30){if(_0x20fd04[_0xe8d1('0xe')]('closed')){_0x20fd04[_0xe8d1('0xf')]=moment()[_0xe8d1('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x5d4f30(null,_0x20fd04);}}});};
\ No newline at end of file
index a711f39..8b8677d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1c0=['AddTagsToOpenchannelInteraction','addTags','ids','omit','spread','AddTags','stringify','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','register','request','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','error','code','message','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','where','attributes','limit','then'];(function(_0x3b7079,_0x31dba5){var _0x4de396=function(_0x3bec56){while(--_0x3bec56){_0x3b7079['push'](_0x3b7079['shift']());}};_0x4de396(++_0x31dba5);}(_0xb1c0,0xfd));var _0x0b1c=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0xb1c0[_0x5f309e];return _0x487b5e;};'use strict';var _=require('lodash');var util=require(_0x0b1c('0x0'));var moment=require(_0x0b1c('0x1'));var BPromise=require('bluebird');var rs=require(_0x0b1c('0x2'));var fs=require('fs');var Redis=require(_0x0b1c('0x3'));var db=require(_0x0b1c('0x4'))['db'];var utils=require(_0x0b1c('0x5'));var logger=require('../../config/logger')(_0x0b1c('0x6'));var config=require(_0x0b1c('0x7'));var jayson=require(_0x0b1c('0x8'));var client=jayson[_0x0b1c('0x9')]['http']({'port':0x232a});config[_0x0b1c('0xa')]=_['defaults'](config[_0x0b1c('0xa')],{'host':_0x0b1c('0xb'),'port':0x18eb});var socket=require(_0x0b1c('0xc'))(new Redis(config[_0x0b1c('0xa')]));require('./openchannelInteraction.socket')[_0x0b1c('0xd')](socket);function respondWithRpcPromise(_0x2a2f2b,_0x589e44,_0x6deed8){return new BPromise(function(_0x351abb,_0x1a7f3d){return client[_0x0b1c('0xe')](_0x2a2f2b,_0x6deed8)['then'](function(_0x4da4c5){logger[_0x0b1c('0xf')](_0x0b1c('0x10'),_0x589e44,_0x0b1c('0x11'));logger[_0x0b1c('0x12')](_0x0b1c('0x13'),_0x589e44,_0x0b1c('0x11'),JSON['stringify'](_0x4da4c5));if(_0x4da4c5[_0x0b1c('0x14')]){if(_0x4da4c5[_0x0b1c('0x14')][_0x0b1c('0x15')]===0x1f4){logger[_0x0b1c('0x14')](_0x0b1c('0x10'),_0x589e44,_0x4da4c5[_0x0b1c('0x14')][_0x0b1c('0x16')]);return _0x1a7f3d(_0x4da4c5[_0x0b1c('0x14')][_0x0b1c('0x16')]);}logger[_0x0b1c('0x14')]('OpenchannelInteraction,\x20%s,\x20%s',_0x589e44,_0x4da4c5[_0x0b1c('0x14')][_0x0b1c('0x16')]);return _0x351abb(_0x4da4c5[_0x0b1c('0x14')][_0x0b1c('0x16')]);}else{logger[_0x0b1c('0xf')](_0x0b1c('0x10'),_0x589e44,_0x0b1c('0x11'));_0x351abb(_0x4da4c5['result'][_0x0b1c('0x16')]);}})[_0x0b1c('0x17')](function(_0x390925){logger['error'](_0x0b1c('0x10'),_0x589e44,_0x390925);_0x1a7f3d(_0x390925);});});}exports[_0x0b1c('0x18')]=function(_0x20fb53){var _0x28251e=this;return new Promise(function(_0x35561d,_0xaff0c6){return db[_0x0b1c('0x19')][_0x0b1c('0x1a')](_0x20fb53[_0x0b1c('0x1b')],{'raw':_0x20fb53['options']?_0x20fb53[_0x0b1c('0x1c')][_0x0b1c('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x20fb53['options']?_0x20fb53[_0x0b1c('0x1c')][_0x0b1c('0x1e')]||null:null,'attributes':_0x20fb53[_0x0b1c('0x1c')]?_0x20fb53['options'][_0x0b1c('0x1f')]||null:null,'limit':_0x20fb53[_0x0b1c('0x1c')]?_0x20fb53[_0x0b1c('0x1c')][_0x0b1c('0x20')]||null:null})[_0x0b1c('0x21')](function(_0x31a51f){logger[_0x0b1c('0xf')](_0x0b1c('0x18'),_0x20fb53);logger[_0x0b1c('0x12')](_0x0b1c('0x18'),_0x20fb53,JSON['stringify'](_0x31a51f));_0x35561d(_0x31a51f);})[_0x0b1c('0x17')](function(_0x335c01){logger[_0x0b1c('0x14')]('UpdateOpenchannelInteraction',_0x335c01['message'],_0x20fb53);_0xaff0c6(_0x28251e[_0x0b1c('0x14')](0x1f4,_0x335c01[_0x0b1c('0x16')]));});});};exports[_0x0b1c('0x22')]=function(_0x177315){return new Promise(function(_0x465020,_0x84053){return db['OpenchannelInteraction']['find']({'where':_0x177315[_0x0b1c('0x1c')]?_0x177315['options']['where']||null:null})['then'](function(_0x3c7899){if(_0x3c7899){return _0x3c7899[_0x0b1c('0x23')](_0x177315['body'][_0x0b1c('0x24')],_[_0x0b1c('0x25')](_0x177315[_0x0b1c('0x1b')],[_0x0b1c('0x24'),'id'])||{});}})[_0x0b1c('0x26')](function(_0x522a32){logger['info']('AddTags',_0x177315);logger[_0x0b1c('0x12')](_0x0b1c('0x27'),_0x177315,JSON[_0x0b1c('0x28')](_0x522a32));_0x465020(_0x522a32);})[_0x0b1c('0x17')](function(_0x20baa1){logger['error'](_0x0b1c('0x27'),_0x20baa1['message'],_0x177315);_0x84053(_this['error'](0x1f4,_0x20baa1[_0x0b1c('0x16')]));});});};
\ No newline at end of file
+var _0xdcf4=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./openchannelInteraction.socket','register','then','info','OpenchannelInteraction,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','attributes','limit','find','where','addTags','ids','omit','spread','AddTags','catch','lodash','util','moment','bluebird'];(function(_0x5ce8b9,_0x5cded8){var _0xe34be0=function(_0xe3d4e5){while(--_0xe3d4e5){_0x5ce8b9['push'](_0x5ce8b9['shift']());}};_0xe34be0(++_0x5cded8);}(_0xdcf4,0x104));var _0x4dcf=function(_0x5221b7,_0x5d00ac){_0x5221b7=_0x5221b7-0x0;var _0x361221=_0xdcf4[_0x5221b7];return _0x361221;};'use strict';var _=require(_0x4dcf('0x0'));var util=require(_0x4dcf('0x1'));var moment=require(_0x4dcf('0x2'));var BPromise=require(_0x4dcf('0x3'));var rs=require(_0x4dcf('0x4'));var fs=require('fs');var Redis=require(_0x4dcf('0x5'));var db=require(_0x4dcf('0x6'))['db'];var utils=require(_0x4dcf('0x7'));var logger=require(_0x4dcf('0x8'))(_0x4dcf('0x9'));var config=require(_0x4dcf('0xa'));var jayson=require(_0x4dcf('0xb'));var client=jayson[_0x4dcf('0xc')][_0x4dcf('0xd')]({'port':0x232a});config[_0x4dcf('0xe')]=_[_0x4dcf('0xf')](config[_0x4dcf('0xe')],{'host':_0x4dcf('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4dcf('0xe')]));require(_0x4dcf('0x11'))[_0x4dcf('0x12')](socket);function respondWithRpcPromise(_0x4082dd,_0x1c8640,_0xe51a25){return new BPromise(function(_0x1c52a6,_0x5130c5){return client['request'](_0x4082dd,_0xe51a25)[_0x4dcf('0x13')](function(_0x327c27){logger[_0x4dcf('0x14')](_0x4dcf('0x15'),_0x1c8640,'request\x20sent');logger[_0x4dcf('0x16')]('OpenchannelInteraction,\x20%s,\x20%s,\x20%s',_0x1c8640,_0x4dcf('0x17'),JSON[_0x4dcf('0x18')](_0x327c27));if(_0x327c27[_0x4dcf('0x19')]){if(_0x327c27[_0x4dcf('0x19')][_0x4dcf('0x1a')]===0x1f4){logger[_0x4dcf('0x19')](_0x4dcf('0x15'),_0x1c8640,_0x327c27[_0x4dcf('0x19')]['message']);return _0x5130c5(_0x327c27[_0x4dcf('0x19')][_0x4dcf('0x1b')]);}logger['error'](_0x4dcf('0x15'),_0x1c8640,_0x327c27['error'][_0x4dcf('0x1b')]);return _0x1c52a6(_0x327c27[_0x4dcf('0x19')][_0x4dcf('0x1b')]);}else{logger[_0x4dcf('0x14')](_0x4dcf('0x15'),_0x1c8640,_0x4dcf('0x17'));_0x1c52a6(_0x327c27[_0x4dcf('0x1c')][_0x4dcf('0x1b')]);}})['catch'](function(_0x4f0cb5){logger[_0x4dcf('0x19')](_0x4dcf('0x15'),_0x1c8640,_0x4f0cb5);_0x5130c5(_0x4f0cb5);});});}exports[_0x4dcf('0x1d')]=function(_0x4e379d){var _0x5a9cd7=this;return new Promise(function(_0x326dd3,_0x29fc1b){return db[_0x4dcf('0x1e')][_0x4dcf('0x1f')](_0x4e379d[_0x4dcf('0x20')],{'raw':_0x4e379d[_0x4dcf('0x21')]?_0x4e379d['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4e379d[_0x4dcf('0x21')]?_0x4e379d['options']['where']||null:null,'attributes':_0x4e379d[_0x4dcf('0x21')]?_0x4e379d['options'][_0x4dcf('0x22')]||null:null,'limit':_0x4e379d[_0x4dcf('0x21')]?_0x4e379d[_0x4dcf('0x21')][_0x4dcf('0x23')]||null:null})[_0x4dcf('0x13')](function(_0x19d494){logger['info']('UpdateOpenchannelInteraction',_0x4e379d);logger[_0x4dcf('0x16')](_0x4dcf('0x1d'),_0x4e379d,JSON[_0x4dcf('0x18')](_0x19d494));_0x326dd3(_0x19d494);})['catch'](function(_0x2f38fc){logger[_0x4dcf('0x19')](_0x4dcf('0x1d'),_0x2f38fc[_0x4dcf('0x1b')],_0x4e379d);_0x29fc1b(_0x5a9cd7[_0x4dcf('0x19')](0x1f4,_0x2f38fc[_0x4dcf('0x1b')]));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x67a659){return new Promise(function(_0x1aa81c,_0x359096){return db[_0x4dcf('0x1e')][_0x4dcf('0x24')]({'where':_0x67a659[_0x4dcf('0x21')]?_0x67a659['options'][_0x4dcf('0x25')]||null:null})[_0x4dcf('0x13')](function(_0x57e28e){if(_0x57e28e){return _0x57e28e[_0x4dcf('0x26')](_0x67a659[_0x4dcf('0x20')][_0x4dcf('0x27')],_[_0x4dcf('0x28')](_0x67a659[_0x4dcf('0x20')],[_0x4dcf('0x27'),'id'])||{});}})[_0x4dcf('0x29')](function(_0x63c908){logger[_0x4dcf('0x14')](_0x4dcf('0x2a'),_0x67a659);logger[_0x4dcf('0x16')](_0x4dcf('0x2a'),_0x67a659,JSON[_0x4dcf('0x18')](_0x63c908));_0x1aa81c(_0x63c908);})[_0x4dcf('0x2b')](function(_0x313ac6){logger[_0x4dcf('0x19')]('AddTags',_0x313ac6[_0x4dcf('0x1b')],_0x67a659);_0x359096(_this['error'](0x1f4,_0x313ac6[_0x4dcf('0x1b')]));});});};
\ No newline at end of file
index 30ab1c2..16f3d9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c8f=['remove','update','emit','removeListener','register','length','openchannelInteraction:','save'];(function(_0x10a820,_0x3bdcef){var _0x5ae72d=function(_0x7d9822){while(--_0x7d9822){_0x10a820['push'](_0x10a820['shift']());}};_0x5ae72d(++_0x3bdcef);}(_0x2c8f,0x147));var _0xf2c8=function(_0x1cca12,_0x49cbaa){_0x1cca12=_0x1cca12-0x0;var _0x34c97d=_0x2c8f[_0x1cca12];return _0x34c97d;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=[_0xf2c8('0x0'),_0xf2c8('0x1'),_0xf2c8('0x2')];function createListener(_0xf933e1,_0xa9d20b){return function(_0x23abff){_0xa9d20b[_0xf2c8('0x3')](_0xf933e1,_0x23abff);};}function removeListener(_0x5b3031,_0x1ee25d){return function(){OpenchannelInteractionEvents[_0xf2c8('0x4')](_0x5b3031,_0x1ee25d);};}exports[_0xf2c8('0x5')]=function(_0x4f2cb1){for(var _0x2451f6=0x0,_0xb7aa72=events[_0xf2c8('0x6')];_0x2451f6<_0xb7aa72;_0x2451f6++){var _0x1f0347=events[_0x2451f6];var _0xcdf892=createListener(_0xf2c8('0x7')+_0x1f0347,_0x4f2cb1);OpenchannelInteractionEvents['on'](_0x1f0347,_0xcdf892);}};
\ No newline at end of file
+var _0x8b28=['save','update','removeListener','register','length','openchannelInteraction:'];(function(_0x2084c3,_0x405f8d){var _0x484ce1=function(_0x97a5f8){while(--_0x97a5f8){_0x2084c3['push'](_0x2084c3['shift']());}};_0x484ce1(++_0x405f8d);}(_0x8b28,0x1aa));var _0x88b2=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8b28[_0x20a584];return _0x4b41a8;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=[_0x88b2('0x0'),'remove',_0x88b2('0x1')];function createListener(_0x29f5b8,_0x4e0579){return function(_0x54adec){_0x4e0579['emit'](_0x29f5b8,_0x54adec);};}function removeListener(_0x3de9d3,_0x4cdc58){return function(){OpenchannelInteractionEvents[_0x88b2('0x2')](_0x3de9d3,_0x4cdc58);};}exports[_0x88b2('0x3')]=function(_0xf4fc57){for(var _0x3ec8d8=0x0,_0x3ee18c=events[_0x88b2('0x4')];_0x3ec8d8<_0x3ee18c;_0x3ec8d8++){var _0x3f5cd1=events[_0x3ec8d8];var _0x5c72c5=createListener(_0x88b2('0x5')+_0x3f5cd1,_0xf4fc57);OpenchannelInteractionEvents['on'](_0x3f5cd1,_0x5c72c5);}};
\ No newline at end of file
index 166ad80..a7374af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['index','get','/describe','/:id','show','tracked','openchannel','create','put','update','accept','/:id/reject','reject','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./openchannelMessage.controller','isAuthenticated'];(function(_0x319877,_0x53a027){var _0x24056d=function(_0x370cb5){while(--_0x370cb5){_0x319877['push'](_0x319877['shift']());}};_0x24056d(++_0x53a027);}(_0x9c44,0x178));var _0x49c4=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x9c44[_0x45d55e];return _0x29812a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x49c4('0x6'));router['get']('/',auth[_0x49c4('0x7')](),controller[_0x49c4('0x8')]);router[_0x49c4('0x9')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller['describe']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['post']('/',auth['isAuthenticated'](),interaction[_0x49c4('0xd')](_0x49c4('0xe'),'openchannelmessage:create'),controller[_0x49c4('0xf')]);router[_0x49c4('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x49c4('0x11')]);router[_0x49c4('0x10')]('/:id/accept',auth[_0x49c4('0x7')](),controller[_0x49c4('0x12')]);router['put'](_0x49c4('0x13'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x14')]);router[_0x49c4('0x15')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x16')]);module[_0x49c4('0x17')]=router;
\ No newline at end of file
+var _0xa9e0=['index','/describe','show','post','isAuthenticated','tracked','openchannel','openchannelmessage:create','update','put','/:id/accept','accept','reject','delete','/:id','destroy','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelMessage.controller','get'];(function(_0x4f602f,_0x43cacb){var _0x231c46=function(_0x4e0703){while(--_0x4e0703){_0x4f602f['push'](_0x4f602f['shift']());}};_0x231c46(++_0x43cacb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa9e0[_0x19e35c];return _0x3e1fe8;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),interaction[_0x0a9e('0xe')](_0x0a9e('0xf'),_0x0a9e('0x10')),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0x11')]);router[_0x0a9e('0x12')](_0x0a9e('0x13'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);router[_0x0a9e('0x12')]('/:id/reject',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x15')]);router[_0x0a9e('0x16')](_0x0a9e('0x17'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x18')]);module['exports']=router;
\ No newline at end of file
index b240ba4..cabac41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x087b=['STRING','TEXT','sequelize','exports','BOOLEAN','ENUM','out','DATE'];(function(_0x2d8e23,_0x137866){var _0x1eb51a=function(_0x25165d){while(--_0x25165d){_0x2d8e23['push'](_0x2d8e23['shift']());}};_0x1eb51a(++_0x137866);}(_0x087b,0x11a));var _0xb087=function(_0x580647,_0x43d2c3){_0x580647=_0x580647-0x0;var _0x5f0792=_0x087b[_0x580647];return _0x5f0792;};'use strict';var Sequelize=require(_0xb087('0x0'));module[_0xb087('0x1')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xb087('0x2')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xb087('0x3')]('in',_0xb087('0x4')),'defaultValue':_0xb087('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0xb087('0x5')]},'providerName':{'type':Sequelize[_0xb087('0x6')]},'providerResponse':{'type':Sequelize[_0xb087('0x7')]}};
\ No newline at end of file
+var _0xb574=['medium','BOOLEAN','ENUM','out','DATE','STRING','sequelize','exports'];(function(_0x10474e,_0x1314f){var _0x45302f=function(_0x3899ad){while(--_0x3899ad){_0x10474e['push'](_0x10474e['shift']());}};_0x45302f(++_0x1314f);}(_0xb574,0x106));var _0x4b57=function(_0x2993c8,_0x355ef6){_0x2993c8=_0x2993c8-0x0;var _0x5e547b=_0xb574[_0x2993c8];return _0x5e547b;};'use strict';var Sequelize=require(_0x4b57('0x0'));module[_0x4b57('0x1')]={'body':{'type':Sequelize['TEXT'](_0x4b57('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x4b57('0x3')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x4b57('0x4')]('in',_0x4b57('0x5')),'defaultValue':_0x4b57('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0x4b57('0x6')]},'providerName':{'type':Sequelize[_0x4b57('0x7')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index dc64bef..f6e12be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6215=['readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','OpenchannelInteraction','isNil','read1stAt','interaction','get','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','User','manual','interface','channel','motionChannel','EventManager','acceptmessage','openchannel-interactions','OpenchannelInteractionId','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT','fullname','email','internal','SIP/%s','event','rejectmessage','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./openchannelMessage.socket','register','http','client','request','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','findAll','rows','show','params','OpenchannelMessage','include','create','body','find','describe','accept','openchannel','read'];(function(_0x1b0a36,_0x360514){var _0x3dff4f=function(_0x44ac66){while(--_0x44ac66){_0x1b0a36['push'](_0x1b0a36['shift']());}};_0x3dff4f(++_0x360514);}(_0x6215,0x13f));var _0x5621=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6215[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x5621('0x0'));var rimraf=require(_0x5621('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5621('0x2'));var rp=require(_0x5621('0x3'));var moment=require(_0x5621('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x5621('0x5'));var util=require(_0x5621('0x6'));var path=require(_0x5621('0x7'));var sox=require(_0x5621('0x8'));var csv=require(_0x5621('0x9'));var ejs=require(_0x5621('0xa'));var fs=require('fs');var fs_extra=require(_0x5621('0xb'));var _=require(_0x5621('0xc'));var squel=require(_0x5621('0xd'));var crypto=require(_0x5621('0xe'));var jsforce=require(_0x5621('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x5621('0x9'));var querystring=require('querystring');var Papa=require(_0x5621('0x10'));var Redis=require(_0x5621('0x11'));var authService=require(_0x5621('0x12'));var qs=require(_0x5621('0x13'));var as=require(_0x5621('0x14'));var hardwareService=require(_0x5621('0x15'));var logger=require(_0x5621('0x16'))(_0x5621('0x17'));var utils=require(_0x5621('0x18'));var config=require(_0x5621('0x19'));var licenseUtil=require(_0x5621('0x1a'));var db=require(_0x5621('0x1b'))['db'];config[_0x5621('0x1c')]=_['defaults'](config['redis'],{'host':_0x5621('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5621('0x1c')]));require(_0x5621('0x1e'))[_0x5621('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x5621('0x20')]({'port':0x232c});var client9002=jayson[_0x5621('0x21')][_0x5621('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x36b782,_0x4e9c13,_0x12c25e,_0x226395){return new BPromise(function(_0x24f702,_0x793e87){var _0x480b8f=_0x226395||client;return _0x480b8f[_0x5621('0x22')](_0x36b782,_0x12c25e)[_0x5621('0x23')](function(_0x15f428){logger[_0x5621('0x24')](_0x5621('0x25'),_0x4e9c13,_0x5621('0x26'));logger[_0x5621('0x27')](_0x5621('0x28'),_0x4e9c13,_0x5621('0x26'),JSON[_0x5621('0x29')](_0x15f428));if(_0x15f428[_0x5621('0x2a')]){if(_0x15f428['error'][_0x5621('0x2b')]===0x1f4){logger['error'](_0x5621('0x25'),_0x4e9c13,_0x15f428['error'][_0x5621('0x2c')]);return _0x793e87(_0x15f428[_0x5621('0x2a')][_0x5621('0x2c')]);}logger[_0x5621('0x2a')](_0x5621('0x25'),_0x4e9c13,_0x15f428[_0x5621('0x2a')][_0x5621('0x2c')]);return _0x24f702(_0x15f428['error'][_0x5621('0x2c')]);}else{logger[_0x5621('0x24')](_0x5621('0x25'),_0x4e9c13,_0x5621('0x26'));_0x24f702(_0x15f428[_0x5621('0x2d')][_0x5621('0x2c')]);}})[_0x5621('0x2e')](function(_0x545f9a){logger[_0x5621('0x2a')](_0x5621('0x25'),_0x4e9c13,_0x545f9a);_0x793e87(_0x545f9a);});});}function respondWithStatusCode(_0x5e0e16,_0x3511b2){_0x3511b2=_0x3511b2||0xcc;return function(_0x1ba34c){if(_0x1ba34c){return _0x5e0e16[_0x5621('0x2f')](_0x3511b2);}return _0x5e0e16[_0x5621('0x30')](_0x3511b2)[_0x5621('0x31')]();};}function respondWithResult(_0x54bece,_0x4cf437){_0x4cf437=_0x4cf437||0xc8;return function(_0x2545b5){if(_0x2545b5){return _0x54bece[_0x5621('0x30')](_0x4cf437)[_0x5621('0x32')](_0x2545b5);}};}function respondWithFilteredResult(_0x3c9b5a,_0x32ac0c){return function(_0x4eda80){if(_0x4eda80){var _0x238e93=typeof _0x32ac0c[_0x5621('0x33')]===_0x5621('0x34')&&typeof _0x32ac0c[_0x5621('0x35')]===_0x5621('0x34');var _0x359419=_0x4eda80[_0x5621('0x36')];var _0x518e64=_0x238e93?0x0:_0x32ac0c[_0x5621('0x33')];var _0x140e3f=_0x238e93?_0x4eda80[_0x5621('0x36')]:_0x32ac0c[_0x5621('0x33')]+_0x32ac0c['limit'];var _0x5b2aab;if(_0x140e3f>=_0x359419){_0x140e3f=_0x359419;_0x5b2aab=0xc8;}else{_0x5b2aab=0xce;}_0x3c9b5a[_0x5621('0x30')](_0x5b2aab);return _0x3c9b5a[_0x5621('0x37')](_0x5621('0x38'),_0x518e64+'-'+_0x140e3f+'/'+_0x359419)[_0x5621('0x32')](_0x4eda80);}return null;};}function patchUpdates(_0x14666e){return function(_0x203295){try{jsonpatch[_0x5621('0x39')](_0x203295,_0x14666e,!![]);}catch(_0x6e946c){return BPromise['reject'](_0x6e946c);}return _0x203295['save']();};}function saveUpdates(_0x59512c,_0x918df0){return function(_0x12fbe8){if(_0x12fbe8){return _0x12fbe8[_0x5621('0x3a')](_0x59512c)[_0x5621('0x23')](function(_0x626910){return _0x626910;});}return null;};}function removeEntity(_0x213177,_0x2fcbd4){return function(_0x434fbc){if(_0x434fbc){return _0x434fbc[_0x5621('0x3b')]()[_0x5621('0x23')](function(){_0x213177[_0x5621('0x30')](0xcc)[_0x5621('0x31')]();});}};}function handleEntityNotFound(_0x36dc71,_0x5e03b8){return function(_0x51bee8){if(!_0x51bee8){_0x36dc71['sendStatus'](0x194);}return _0x51bee8;};}function handleError(_0x17717d,_0x2b4035){_0x2b4035=_0x2b4035||0x1f4;return function(_0x4552a5){logger[_0x5621('0x2a')](_0x4552a5[_0x5621('0x3c')]);if(_0x4552a5[_0x5621('0x3d')]){delete _0x4552a5[_0x5621('0x3d')];}_0x17717d[_0x5621('0x30')](_0x2b4035)[_0x5621('0x3e')](_0x4552a5);};}exports[_0x5621('0x3f')]=function(_0x3e5135,_0x651fb){var _0x52c5bd={},_0x437e46={},_0x60c9c3={'count':0x0,'rows':[]};var _0xee7f0d=_[_0x5621('0x40')](db['OpenchannelMessage'][_0x5621('0x41')],function(_0x106410){return{'name':_0x106410[_0x5621('0x42')],'type':_0x106410[_0x5621('0x43')][_0x5621('0x44')]};});_0x437e46[_0x5621('0x45')]=_[_0x5621('0x40')](_0xee7f0d,_0x5621('0x3d'));_0x437e46[_0x5621('0x46')]=_[_0x5621('0x47')](_0x3e5135[_0x5621('0x46')]);_0x437e46[_0x5621('0x48')]=_[_0x5621('0x49')](_0x437e46[_0x5621('0x45')],_0x437e46[_0x5621('0x46')]);_0x52c5bd[_0x5621('0x4a')]=_[_0x5621('0x49')](_0x437e46[_0x5621('0x45')],qs[_0x5621('0x4b')](_0x3e5135[_0x5621('0x46')][_0x5621('0x4b')]));_0x52c5bd[_0x5621('0x4a')]=_0x52c5bd[_0x5621('0x4a')][_0x5621('0x4c')]?_0x52c5bd['attributes']:_0x437e46[_0x5621('0x45')];if(!_0x3e5135['query'][_0x5621('0x4d')](_0x5621('0x4e'))){_0x52c5bd[_0x5621('0x35')]=qs[_0x5621('0x35')](_0x3e5135[_0x5621('0x46')][_0x5621('0x35')]);_0x52c5bd[_0x5621('0x33')]=qs[_0x5621('0x33')](_0x3e5135[_0x5621('0x46')][_0x5621('0x33')]);}_0x52c5bd[_0x5621('0x4f')]=qs[_0x5621('0x50')](_0x3e5135['query'][_0x5621('0x50')]);_0x52c5bd['where']=qs[_0x5621('0x48')](_[_0x5621('0x51')](_0x3e5135[_0x5621('0x46')],_0x437e46[_0x5621('0x48')]),_0xee7f0d);if(_0x3e5135[_0x5621('0x46')][_0x5621('0x52')]){_0x52c5bd[_0x5621('0x53')]=_['merge'](_0x52c5bd['where'],{'$or':_['map'](_0xee7f0d,function(_0x12b704){if(_0x12b704[_0x5621('0x43')]!==_0x5621('0x54')){var _0x1effc1={};_0x1effc1[_0x12b704[_0x5621('0x3d')]]={'$like':'%'+_0x3e5135[_0x5621('0x46')][_0x5621('0x52')]+'%'};return _0x1effc1;}})});}_0x52c5bd=_[_0x5621('0x55')]({},_0x52c5bd,_0x3e5135[_0x5621('0x56')]);var _0x3b3280={'where':_0x52c5bd[_0x5621('0x53')]};return db['OpenchannelMessage'][_0x5621('0x36')](_0x3b3280)[_0x5621('0x23')](function(_0x4ef082){_0x60c9c3['count']=_0x4ef082;if(_0x3e5135[_0x5621('0x46')][_0x5621('0x57')]){_0x52c5bd['include']=[{'all':!![]}];}return db['OpenchannelMessage'][_0x5621('0x58')](_0x52c5bd);})[_0x5621('0x23')](function(_0x1f5feb){_0x60c9c3[_0x5621('0x59')]=_0x1f5feb;return _0x60c9c3;})[_0x5621('0x23')](respondWithFilteredResult(_0x651fb,_0x52c5bd))[_0x5621('0x2e')](handleError(_0x651fb,null));};exports[_0x5621('0x5a')]=function(_0x49ea48,_0x4357fa){var _0x3a689e={'raw':!![],'where':{'id':_0x49ea48[_0x5621('0x5b')]['id']}},_0x12ef0e={};_0x12ef0e[_0x5621('0x45')]=_[_0x5621('0x47')](db[_0x5621('0x5c')][_0x5621('0x41')]);_0x12ef0e[_0x5621('0x46')]=_[_0x5621('0x47')](_0x49ea48[_0x5621('0x46')]);_0x12ef0e[_0x5621('0x48')]=_[_0x5621('0x49')](_0x12ef0e[_0x5621('0x45')],_0x12ef0e[_0x5621('0x46')]);_0x3a689e[_0x5621('0x4a')]=_['intersection'](_0x12ef0e['model'],qs[_0x5621('0x4b')](_0x49ea48[_0x5621('0x46')][_0x5621('0x4b')]));_0x3a689e[_0x5621('0x4a')]=_0x3a689e[_0x5621('0x4a')][_0x5621('0x4c')]?_0x3a689e[_0x5621('0x4a')]:_0x12ef0e[_0x5621('0x45')];if(_0x49ea48[_0x5621('0x46')][_0x5621('0x57')]){_0x3a689e[_0x5621('0x5d')]=[{'all':!![]}];}_0x3a689e=_[_0x5621('0x55')]({},_0x3a689e,_0x49ea48['options']);return db['OpenchannelMessage']['find'](_0x3a689e)[_0x5621('0x23')](handleEntityNotFound(_0x4357fa,null))[_0x5621('0x23')](respondWithResult(_0x4357fa,null))[_0x5621('0x2e')](handleError(_0x4357fa,null));};exports[_0x5621('0x5e')]=function(_0x209841,_0x98b7ce){return db[_0x5621('0x5c')]['create'](_0x209841[_0x5621('0x5f')],{})[_0x5621('0x23')](respondWithResult(_0x98b7ce,0xc9))[_0x5621('0x2e')](handleError(_0x98b7ce,null));};exports['update']=function(_0x89a83b,_0x43c516){if(_0x89a83b[_0x5621('0x5f')]['id']){delete _0x89a83b[_0x5621('0x5f')]['id'];}return db[_0x5621('0x5c')][_0x5621('0x60')]({'where':{'id':_0x89a83b[_0x5621('0x5b')]['id']}})[_0x5621('0x23')](handleEntityNotFound(_0x43c516,null))['then'](saveUpdates(_0x89a83b[_0x5621('0x5f')],null))[_0x5621('0x23')](respondWithResult(_0x43c516,null))['catch'](handleError(_0x43c516,null));};exports[_0x5621('0x3b')]=function(_0x394e50,_0x98d9c0){return db[_0x5621('0x5c')][_0x5621('0x60')]({'where':{'id':_0x394e50['params']['id']}})[_0x5621('0x23')](handleEntityNotFound(_0x98d9c0,null))[_0x5621('0x23')](removeEntity(_0x98d9c0,null))[_0x5621('0x2e')](handleError(_0x98d9c0,null));};exports['describe']=function(_0x58cce0,_0x165c8d){return db[_0x5621('0x5c')][_0x5621('0x61')]()[_0x5621('0x23')](respondWithResult(_0x165c8d,null))[_0x5621('0x2e')](handleError(_0x165c8d,null));};var interaction_log=require(_0x5621('0x16'))('openchannel-interactions');exports[_0x5621('0x62')]=function(_0x25971e,_0xd0fa82,_0x3d0a3d){var _0x415ee7={'agent':{},'channel':_0x5621('0x63')};if(_0x25971e[_0x5621('0x5f')]['id']){delete _0x25971e[_0x5621('0x5f')]['id'];}_0x25971e['body'][_0x5621('0x64')]=!![];_0x25971e[_0x5621('0x5f')][_0x5621('0x65')]=moment()[_0x5621('0x66')](_0x5621('0x67'));_0x25971e[_0x5621('0x5f')][_0x5621('0x68')]=_0x25971e['body'][_0x5621('0x68')]||_0x25971e[_0x5621('0x69')]['id'];_0x415ee7[_0x5621('0x6a')]['id']=_0x25971e[_0x5621('0x5f')][_0x5621('0x68')];return db[_0x5621('0x5c')][_0x5621('0x60')]({'where':{'id':_0x25971e[_0x5621('0x5b')]['id'],'UserId':null}})[_0x5621('0x23')](handleEntityNotFound(_0xd0fa82,null))[_0x5621('0x23')](saveUpdates(_0x25971e[_0x5621('0x5f')],null))['then'](function(_0x4c62ec){if(_0x4c62ec){_0x415ee7['message']=_0x4c62ec['get']({'plain':!![]});return db[_0x5621('0x6b')][_0x5621('0x60')]({'where':{'id':_0x4c62ec['OpenchannelInteractionId']}});}return null;})[_0x5621('0x23')](handleEntityNotFound(_0xd0fa82,null))['then'](function(_0x28ae09){if(_0x28ae09){return _0x28ae09['update']({'UserId':_0x25971e[_0x5621('0x5f')][_0x5621('0x68')],'read1stAt':_[_0x5621('0x6c')](_0x28ae09[_0x5621('0x6d')])?moment()[_0x5621('0x66')](_0x5621('0x67')):undefined});}return null;})[_0x5621('0x23')](function(_0x2973cc){if(_0x2973cc){_0x415ee7[_0x5621('0x6e')]=_0x2973cc[_0x5621('0x6f')]({'plain':!![]});interaction_log[_0x5621('0x24')](_0x5621('0x70'),_0x25971e['user']['id'],_0x25971e[_0x5621('0x69')]['name'],_0x25971e[_0x5621('0x69')][_0x5621('0x71')],_0x415ee7[_0x5621('0x6e')]['id'],_0x25971e[_0x5621('0x5f')]?JSON['stringify'](_0x25971e[_0x5621('0x5f')]):_0x5621('0x72'));return respondWithRpcPromise(_0x5621('0x73'),'acceptMessage',_0x415ee7);}return null;})[_0x5621('0x23')](function(_0x45a73e){var _0x182e87=_0x5621('0x74')+_0x45a73e[_0x5621('0x2c')][_0x5621('0x75')];return db[_0x5621('0x76')][_0x5621('0x46')](_0x182e87,{'type':db[_0x5621('0x77')][_0x5621('0x78')]['SELECT'],'raw':!![]})['then'](function(_0x19682a){return _0x19682a;});})[_0x5621('0x23')](function(_0x694cc4){if(_0x694cc4){_0x415ee7[_0x5621('0x2c')]['contact']=_0x694cc4[0x0];if(!_0x25971e[_0x5621('0x5f')][_0x5621('0x68')])return;return db[_0x5621('0x79')][_0x5621('0x60')]({'where':{'id':_0x25971e[_0x5621('0x5f')]['UserId'],'role':_0x5621('0x6a')},'attributes':['id','name','fullname','email','internal'],'raw':!![]});}return null;})['then'](function(_0x24bb3d){if(!_0x24bb3d)return null;_0x415ee7[_0x5621('0x2c')]['agent']=_0x24bb3d;return _0x415ee7;})[_0x5621('0x23')](function(_0x529c71){if(_0x529c71){if(_0x25971e[_0x5621('0x5f')][_0x5621('0x7a')]){_0x415ee7['message'][_0x5621('0x7b')]=util[_0x5621('0x66')]('SIP/%s',_0x25971e[_0x5621('0x69')][_0x5621('0x3d')]);_0x415ee7['message'][_0x5621('0x7c')]=_0x415ee7[_0x5621('0x7c')];_0x415ee7[_0x5621('0x2c')][_0x5621('0x7d')]=_0x415ee7[_0x5621('0x7c')];_0x415ee7['message']['event']='accept';return respondWithRpcPromise(_0x5621('0x7e'),_0x5621('0x7e'),{'event':_0x5621('0x7f'),'message':_0x415ee7[_0x5621('0x2c')]},client9002)[_0x5621('0x23')](function(){return _0x415ee7;});}return _0x415ee7;}return null;})[_0x5621('0x23')](respondWithResult(_0xd0fa82,null))['catch'](handleError(_0xd0fa82,null));};var interaction_log=require('../../config/logger')(_0x5621('0x80'));exports['reject']=function(_0x5cbbbc,_0x868839,_0x217a06){var _0x46624d={'agent':{},'channel':_0x5621('0x63')};if(_0x5cbbbc[_0x5621('0x5f')]['id']){delete _0x5cbbbc[_0x5621('0x5f')]['id'];}_0x5cbbbc[_0x5621('0x5f')]['UserId']=_0x5cbbbc[_0x5621('0x5f')][_0x5621('0x68')]||_0x5cbbbc[_0x5621('0x69')]['id'];_0x46624d['agent']['id']=_0x5cbbbc['body']['UserId'];return db[_0x5621('0x5c')][_0x5621('0x60')]({'where':{'id':_0x5cbbbc['params']['id'],'UserId':null}})[_0x5621('0x23')](handleEntityNotFound(_0x868839,null))[_0x5621('0x23')](function(_0x5b5ec1){if(_0x5b5ec1){_0x46624d[_0x5621('0x2c')]=_0x5b5ec1['get']({'plain':!![]});return db[_0x5621('0x6b')][_0x5621('0x60')]({'where':{'id':_0x5b5ec1[_0x5621('0x81')]}});}return null;})[_0x5621('0x23')](handleEntityNotFound(_0x868839,null))['then'](function(_0x2c60af){if(_0x2c60af){_0x46624d[_0x5621('0x6e')]=_0x2c60af[_0x5621('0x6f')]({'plain':!![]});interaction_log[_0x5621('0x24')](_0x5621('0x82'),_0x5cbbbc[_0x5621('0x69')]['id'],_0x5cbbbc[_0x5621('0x69')][_0x5621('0x3d')],_0x5cbbbc[_0x5621('0x69')][_0x5621('0x71')],_0x46624d[_0x5621('0x6e')]['id'],_0x5cbbbc[_0x5621('0x5f')]?JSON[_0x5621('0x29')](_0x5cbbbc[_0x5621('0x5f')]):_0x5621('0x72'));return respondWithRpcPromise(_0x5621('0x83'),_0x5621('0x84'),_0x46624d);}return null;})[_0x5621('0x23')](function(_0x584346){var _0x3d758f=_0x5621('0x74')+_0x584346[_0x5621('0x2c')][_0x5621('0x75')];return db['sequelize']['query'](_0x3d758f,{'type':db[_0x5621('0x77')]['QueryTypes'][_0x5621('0x85')],'raw':!![]})[_0x5621('0x23')](function(_0x1a5041){return _0x1a5041;});})[_0x5621('0x23')](function(_0x2cd36c){if(_0x2cd36c){_0x46624d[_0x5621('0x2c')]['contact']=_0x2cd36c[0x0];if(!_0x5cbbbc['body'][_0x5621('0x68')])return;return db[_0x5621('0x79')][_0x5621('0x60')]({'where':{'id':_0x5cbbbc['body'][_0x5621('0x68')],'role':_0x5621('0x6a')},'attributes':['id',_0x5621('0x3d'),_0x5621('0x86'),_0x5621('0x87'),_0x5621('0x88')],'raw':!![]});}return null;})[_0x5621('0x23')](function(_0x2af999){if(!_0x2af999)return null;_0x46624d['message']['agent']=_0x2af999;return _0x46624d;})[_0x5621('0x23')](function(_0x290d3d){if(_0x290d3d){_0x290d3d['message'][_0x5621('0x7b')]=util['format'](_0x5621('0x89'),_0x5cbbbc[_0x5621('0x69')][_0x5621('0x3d')]);_0x290d3d[_0x5621('0x2c')][_0x5621('0x7c')]=_0x46624d[_0x5621('0x7c')];_0x290d3d[_0x5621('0x2c')][_0x5621('0x7d')]=_0x46624d['channel'];_0x290d3d[_0x5621('0x2c')][_0x5621('0x8a')]='reject';respondWithRpcPromise(_0x5621('0x7e'),_0x5621('0x7e'),{'event':_0x5621('0x8b'),'message':_0x290d3d['message']},client9002);return _0x46624d;}return null;})[_0x5621('0x23')](respondWithResult(_0x868839,null))[_0x5621('0x2e')](handleError(_0x868839,null));};
\ No newline at end of file
+var _0xbeba=['defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','client','http','request','then','info','OpenchannelMessage,\x20%s,\x20%s','OpenchannelMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','stack','name','index','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','filters','pick','filter','where','merge','type','includeAll','OpenchannelMessage','findAll','rows','show','params','length','options','find','body','update','describe','openchannel-interactions','openchannel','readAt','format','YYYY-MM-DD\x20HH:mm:ss','user','UserId','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','interaction','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','User','agent','fullname','email','internal','channel','motionChannel','event','accept','EventManager','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','ContactId','contact','interface','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis'];(function(_0x19183b,_0x850ca3){var _0x875f79=function(_0x5c950d){while(--_0x5c950d){_0x19183b['push'](_0x19183b['shift']());}};_0x875f79(++_0x850ca3);}(_0xbeba,0x64));var _0xabeb=function(_0x4cc3d6,_0xb5d507){_0x4cc3d6=_0x4cc3d6-0x0;var _0x5f2612=_0xbeba[_0x4cc3d6];return _0x5f2612;};'use strict';var emlformat=require(_0xabeb('0x0'));var rimraf=require(_0xabeb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xabeb('0x2'));var rp=require(_0xabeb('0x3'));var moment=require(_0xabeb('0x4'));var BPromise=require(_0xabeb('0x5'));var Mustache=require(_0xabeb('0x6'));var util=require('util');var path=require(_0xabeb('0x7'));var sox=require(_0xabeb('0x8'));var csv=require(_0xabeb('0x9'));var ejs=require(_0xabeb('0xa'));var fs=require('fs');var fs_extra=require(_0xabeb('0xb'));var _=require(_0xabeb('0xc'));var squel=require(_0xabeb('0xd'));var crypto=require(_0xabeb('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xabeb('0x9'));var querystring=require(_0xabeb('0xf'));var Papa=require('papaparse');var Redis=require(_0xabeb('0x10'));var authService=require(_0xabeb('0x11'));var qs=require(_0xabeb('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xabeb('0x13'));var logger=require(_0xabeb('0x14'))('api');var utils=require(_0xabeb('0x15'));var config=require(_0xabeb('0x16'));var licenseUtil=require(_0xabeb('0x17'));var db=require(_0xabeb('0x18'))['db'];config[_0xabeb('0x19')]=_[_0xabeb('0x1a')](config[_0xabeb('0x19')],{'host':_0xabeb('0x1b'),'port':0x18eb});var socket=require(_0xabeb('0x1c'))(new Redis(config[_0xabeb('0x19')]));require(_0xabeb('0x1d'))[_0xabeb('0x1e')](socket);var jayson=require('jayson/promise');var client=jayson[_0xabeb('0x1f')][_0xabeb('0x20')]({'port':0x232c});var client9002=jayson[_0xabeb('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x88209b,_0x244d89,_0x187519,_0xfee67c){return new BPromise(function(_0x1e7724,_0x2384ba){var _0x1b79c7=_0xfee67c||client;return _0x1b79c7[_0xabeb('0x21')](_0x88209b,_0x187519)[_0xabeb('0x22')](function(_0x3984ff){logger[_0xabeb('0x23')](_0xabeb('0x24'),_0x244d89,'request\x20sent');logger['debug'](_0xabeb('0x25'),_0x244d89,_0xabeb('0x26'),JSON[_0xabeb('0x27')](_0x3984ff));if(_0x3984ff[_0xabeb('0x28')]){if(_0x3984ff['error']['code']===0x1f4){logger[_0xabeb('0x28')](_0xabeb('0x24'),_0x244d89,_0x3984ff['error'][_0xabeb('0x29')]);return _0x2384ba(_0x3984ff[_0xabeb('0x28')]['message']);}logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x244d89,_0x3984ff[_0xabeb('0x28')][_0xabeb('0x29')]);return _0x1e7724(_0x3984ff[_0xabeb('0x28')][_0xabeb('0x29')]);}else{logger['info'](_0xabeb('0x24'),_0x244d89,_0xabeb('0x26'));_0x1e7724(_0x3984ff[_0xabeb('0x2a')]['message']);}})[_0xabeb('0x2b')](function(_0x4526a2){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x244d89,_0x4526a2);_0x2384ba(_0x4526a2);});});}function respondWithStatusCode(_0x4497d5,_0x291df9){_0x291df9=_0x291df9||0xcc;return function(_0x2384f6){if(_0x2384f6){return _0x4497d5[_0xabeb('0x2c')](_0x291df9);}return _0x4497d5[_0xabeb('0x2d')](_0x291df9)[_0xabeb('0x2e')]();};}function respondWithResult(_0x48530c,_0x280b72){_0x280b72=_0x280b72||0xc8;return function(_0x546ed2){if(_0x546ed2){return _0x48530c['status'](_0x280b72)[_0xabeb('0x2f')](_0x546ed2);}};}function respondWithFilteredResult(_0x54e8a2,_0x2e957b){return function(_0xd2ca4f){if(_0xd2ca4f){var _0x35b691=typeof _0x2e957b[_0xabeb('0x30')]===_0xabeb('0x31')&&typeof _0x2e957b[_0xabeb('0x32')]===_0xabeb('0x31');var _0x565576=_0xd2ca4f[_0xabeb('0x33')];var _0x58a82d=_0x35b691?0x0:_0x2e957b[_0xabeb('0x30')];var _0x38744d=_0x35b691?_0xd2ca4f[_0xabeb('0x33')]:_0x2e957b[_0xabeb('0x30')]+_0x2e957b[_0xabeb('0x32')];var _0x29095b;if(_0x38744d>=_0x565576){_0x38744d=_0x565576;_0x29095b=0xc8;}else{_0x29095b=0xce;}_0x54e8a2[_0xabeb('0x2d')](_0x29095b);return _0x54e8a2[_0xabeb('0x34')](_0xabeb('0x35'),_0x58a82d+'-'+_0x38744d+'/'+_0x565576)[_0xabeb('0x2f')](_0xd2ca4f);}return null;};}function patchUpdates(_0x4fa648){return function(_0x2521c5){try{jsonpatch[_0xabeb('0x36')](_0x2521c5,_0x4fa648,!![]);}catch(_0x1decf5){return BPromise[_0xabeb('0x37')](_0x1decf5);}return _0x2521c5[_0xabeb('0x38')]();};}function saveUpdates(_0x364f31,_0x18b6a8){return function(_0x2b7d11){if(_0x2b7d11){return _0x2b7d11['update'](_0x364f31)['then'](function(_0x14bf29){return _0x14bf29;});}return null;};}function removeEntity(_0x2a7601,_0x2dac1d){return function(_0x54129f){if(_0x54129f){return _0x54129f[_0xabeb('0x39')]()['then'](function(){_0x2a7601['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x426944,_0x33fab3){return function(_0x49a8ef){if(!_0x49a8ef){_0x426944[_0xabeb('0x2c')](0x194);}return _0x49a8ef;};}function handleError(_0x5814ae,_0x4a25eb){_0x4a25eb=_0x4a25eb||0x1f4;return function(_0x1638e3){logger[_0xabeb('0x28')](_0x1638e3[_0xabeb('0x3a')]);if(_0x1638e3[_0xabeb('0x3b')]){delete _0x1638e3[_0xabeb('0x3b')];}_0x5814ae[_0xabeb('0x2d')](_0x4a25eb)['send'](_0x1638e3);};}exports[_0xabeb('0x3c')]=function(_0x467595,_0x53b150){var _0x3e140c={},_0x485b82={},_0x107733={'count':0x0,'rows':[]};var _0x2730bc=_[_0xabeb('0x3d')](db['OpenchannelMessage'][_0xabeb('0x3e')],function(_0x3c133b){return{'name':_0x3c133b[_0xabeb('0x3f')],'type':_0x3c133b['type'][_0xabeb('0x40')]};});_0x485b82[_0xabeb('0x41')]=_[_0xabeb('0x3d')](_0x2730bc,_0xabeb('0x3b'));_0x485b82[_0xabeb('0x42')]=_[_0xabeb('0x43')](_0x467595['query']);_0x485b82['filters']=_[_0xabeb('0x44')](_0x485b82[_0xabeb('0x41')],_0x485b82[_0xabeb('0x42')]);_0x3e140c[_0xabeb('0x45')]=_[_0xabeb('0x44')](_0x485b82[_0xabeb('0x41')],qs['fields'](_0x467595[_0xabeb('0x42')][_0xabeb('0x46')]));_0x3e140c[_0xabeb('0x45')]=_0x3e140c[_0xabeb('0x45')]['length']?_0x3e140c['attributes']:_0x485b82[_0xabeb('0x41')];if(!_0x467595['query'][_0xabeb('0x47')]('nolimit')){_0x3e140c[_0xabeb('0x32')]=qs[_0xabeb('0x32')](_0x467595['query'][_0xabeb('0x32')]);_0x3e140c[_0xabeb('0x30')]=qs[_0xabeb('0x30')](_0x467595[_0xabeb('0x42')][_0xabeb('0x30')]);}_0x3e140c[_0xabeb('0x48')]=qs[_0xabeb('0x49')](_0x467595[_0xabeb('0x42')]['sort']);_0x3e140c['where']=qs[_0xabeb('0x4a')](_[_0xabeb('0x4b')](_0x467595[_0xabeb('0x42')],_0x485b82['filters']),_0x2730bc);if(_0x467595['query'][_0xabeb('0x4c')]){_0x3e140c[_0xabeb('0x4d')]=_[_0xabeb('0x4e')](_0x3e140c[_0xabeb('0x4d')],{'$or':_[_0xabeb('0x3d')](_0x2730bc,function(_0x3f2250){if(_0x3f2250[_0xabeb('0x4f')]!=='VIRTUAL'){var _0x488d15={};_0x488d15[_0x3f2250['name']]={'$like':'%'+_0x467595['query'][_0xabeb('0x4c')]+'%'};return _0x488d15;}})});}_0x3e140c=_[_0xabeb('0x4e')]({},_0x3e140c,_0x467595['options']);var _0xba8e0c={'where':_0x3e140c[_0xabeb('0x4d')]};return db['OpenchannelMessage'][_0xabeb('0x33')](_0xba8e0c)[_0xabeb('0x22')](function(_0x54164d){_0x107733[_0xabeb('0x33')]=_0x54164d;if(_0x467595['query'][_0xabeb('0x50')]){_0x3e140c['include']=[{'all':!![]}];}return db[_0xabeb('0x51')][_0xabeb('0x52')](_0x3e140c);})[_0xabeb('0x22')](function(_0x2437f8){_0x107733[_0xabeb('0x53')]=_0x2437f8;return _0x107733;})[_0xabeb('0x22')](respondWithFilteredResult(_0x53b150,_0x3e140c))[_0xabeb('0x2b')](handleError(_0x53b150,null));};exports[_0xabeb('0x54')]=function(_0x48eeb4,_0x45545b){var _0x153fd1={'raw':!![],'where':{'id':_0x48eeb4[_0xabeb('0x55')]['id']}},_0x4325d5={};_0x4325d5['model']=_[_0xabeb('0x43')](db[_0xabeb('0x51')][_0xabeb('0x3e')]);_0x4325d5[_0xabeb('0x42')]=_[_0xabeb('0x43')](_0x48eeb4['query']);_0x4325d5['filters']=_[_0xabeb('0x44')](_0x4325d5[_0xabeb('0x41')],_0x4325d5[_0xabeb('0x42')]);_0x153fd1[_0xabeb('0x45')]=_[_0xabeb('0x44')](_0x4325d5[_0xabeb('0x41')],qs[_0xabeb('0x46')](_0x48eeb4['query'][_0xabeb('0x46')]));_0x153fd1[_0xabeb('0x45')]=_0x153fd1[_0xabeb('0x45')][_0xabeb('0x56')]?_0x153fd1[_0xabeb('0x45')]:_0x4325d5[_0xabeb('0x41')];if(_0x48eeb4[_0xabeb('0x42')][_0xabeb('0x50')]){_0x153fd1['include']=[{'all':!![]}];}_0x153fd1=_[_0xabeb('0x4e')]({},_0x153fd1,_0x48eeb4[_0xabeb('0x57')]);return db[_0xabeb('0x51')][_0xabeb('0x58')](_0x153fd1)[_0xabeb('0x22')](handleEntityNotFound(_0x45545b,null))[_0xabeb('0x22')](respondWithResult(_0x45545b,null))[_0xabeb('0x2b')](handleError(_0x45545b,null));};exports['create']=function(_0x1aa37d,_0x31ed19){return db[_0xabeb('0x51')]['create'](_0x1aa37d[_0xabeb('0x59')],{})[_0xabeb('0x22')](respondWithResult(_0x31ed19,0xc9))[_0xabeb('0x2b')](handleError(_0x31ed19,null));};exports[_0xabeb('0x5a')]=function(_0x4f9df2,_0x2b8b25){if(_0x4f9df2['body']['id']){delete _0x4f9df2[_0xabeb('0x59')]['id'];}return db[_0xabeb('0x51')][_0xabeb('0x58')]({'where':{'id':_0x4f9df2[_0xabeb('0x55')]['id']}})[_0xabeb('0x22')](handleEntityNotFound(_0x2b8b25,null))['then'](saveUpdates(_0x4f9df2[_0xabeb('0x59')],null))['then'](respondWithResult(_0x2b8b25,null))[_0xabeb('0x2b')](handleError(_0x2b8b25,null));};exports['destroy']=function(_0x10b267,_0x31dd06){return db[_0xabeb('0x51')][_0xabeb('0x58')]({'where':{'id':_0x10b267['params']['id']}})[_0xabeb('0x22')](handleEntityNotFound(_0x31dd06,null))[_0xabeb('0x22')](removeEntity(_0x31dd06,null))['catch'](handleError(_0x31dd06,null));};exports[_0xabeb('0x5b')]=function(_0x34e619,_0x39b6a4){return db['OpenchannelMessage']['describe']()['then'](respondWithResult(_0x39b6a4,null))['catch'](handleError(_0x39b6a4,null));};var interaction_log=require(_0xabeb('0x14'))(_0xabeb('0x5c'));exports['accept']=function(_0x57c51a,_0x474b61,_0x15849c){var _0xbef503={'agent':{},'channel':_0xabeb('0x5d')};if(_0x57c51a[_0xabeb('0x59')]['id']){delete _0x57c51a[_0xabeb('0x59')]['id'];}_0x57c51a['body']['read']=!![];_0x57c51a[_0xabeb('0x59')][_0xabeb('0x5e')]=moment()[_0xabeb('0x5f')](_0xabeb('0x60'));_0x57c51a[_0xabeb('0x59')]['UserId']=_0x57c51a[_0xabeb('0x59')]['UserId']||_0x57c51a[_0xabeb('0x61')]['id'];_0xbef503['agent']['id']=_0x57c51a['body'][_0xabeb('0x62')];return db['OpenchannelMessage'][_0xabeb('0x58')]({'where':{'id':_0x57c51a[_0xabeb('0x55')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x474b61,null))[_0xabeb('0x22')](saveUpdates(_0x57c51a['body'],null))['then'](function(_0x109741){if(_0x109741){_0xbef503['message']=_0x109741[_0xabeb('0x63')]({'plain':!![]});return db[_0xabeb('0x64')]['find']({'where':{'id':_0x109741[_0xabeb('0x65')]}});}return null;})[_0xabeb('0x22')](handleEntityNotFound(_0x474b61,null))[_0xabeb('0x22')](function(_0x493106){if(_0x493106){return _0x493106['update']({'UserId':_0x57c51a[_0xabeb('0x59')][_0xabeb('0x62')],'read1stAt':_[_0xabeb('0x66')](_0x493106['read1stAt'])?moment()['format'](_0xabeb('0x60')):undefined});}return null;})[_0xabeb('0x22')](function(_0x2cecff){if(_0x2cecff){_0xbef503[_0xabeb('0x67')]=_0x2cecff['get']({'plain':!![]});interaction_log[_0xabeb('0x23')]('[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x57c51a[_0xabeb('0x61')]['id'],_0x57c51a[_0xabeb('0x61')][_0xabeb('0x3b')],_0x57c51a[_0xabeb('0x61')][_0xabeb('0x68')],_0xbef503[_0xabeb('0x67')]['id'],_0x57c51a['body']?JSON[_0xabeb('0x27')](_0x57c51a[_0xabeb('0x59')]):_0xabeb('0x69'));return respondWithRpcPromise('AcceptMessage',_0xabeb('0x6a'),_0xbef503);}return null;})[_0xabeb('0x22')](function(_0x15dd4c){var _0x13ec8f=_0xabeb('0x6b')+_0x15dd4c['message']['ContactId'];return db[_0xabeb('0x6c')][_0xabeb('0x42')](_0x13ec8f,{'type':db[_0xabeb('0x6d')][_0xabeb('0x6e')][_0xabeb('0x6f')],'raw':!![]})[_0xabeb('0x22')](function(_0x2b9254){return _0x2b9254;});})[_0xabeb('0x22')](function(_0x47bb6a){if(_0x47bb6a){_0xbef503[_0xabeb('0x29')]['contact']=_0x47bb6a[0x0];if(!_0x57c51a[_0xabeb('0x59')][_0xabeb('0x62')])return;return db[_0xabeb('0x70')]['find']({'where':{'id':_0x57c51a[_0xabeb('0x59')]['UserId'],'role':_0xabeb('0x71')},'attributes':['id',_0xabeb('0x3b'),_0xabeb('0x72'),_0xabeb('0x73'),_0xabeb('0x74')],'raw':!![]});}return null;})[_0xabeb('0x22')](function(_0x68d8d0){if(!_0x68d8d0)return null;_0xbef503[_0xabeb('0x29')][_0xabeb('0x71')]=_0x68d8d0;return _0xbef503;})[_0xabeb('0x22')](function(_0x32451f){if(_0x32451f){if(_0x57c51a[_0xabeb('0x59')]['manual']){_0xbef503['message']['interface']=util[_0xabeb('0x5f')]('SIP/%s',_0x57c51a[_0xabeb('0x61')]['name']);_0xbef503['message'][_0xabeb('0x75')]=_0xbef503[_0xabeb('0x75')];_0xbef503[_0xabeb('0x29')][_0xabeb('0x76')]=_0xbef503[_0xabeb('0x75')];_0xbef503['message'][_0xabeb('0x77')]=_0xabeb('0x78');return respondWithRpcPromise(_0xabeb('0x79'),_0xabeb('0x79'),{'event':'acceptmessage','message':_0xbef503[_0xabeb('0x29')]},client9002)[_0xabeb('0x22')](function(){return _0xbef503;});}return _0xbef503;}return null;})[_0xabeb('0x22')](respondWithResult(_0x474b61,null))[_0xabeb('0x2b')](handleError(_0x474b61,null));};var interaction_log=require(_0xabeb('0x14'))(_0xabeb('0x5c'));exports['reject']=function(_0x3fddcc,_0x492295,_0x526b0a){var _0x3b403a={'agent':{},'channel':'openchannel'};if(_0x3fddcc[_0xabeb('0x59')]['id']){delete _0x3fddcc[_0xabeb('0x59')]['id'];}_0x3fddcc[_0xabeb('0x59')]['UserId']=_0x3fddcc[_0xabeb('0x59')][_0xabeb('0x62')]||_0x3fddcc[_0xabeb('0x61')]['id'];_0x3b403a[_0xabeb('0x71')]['id']=_0x3fddcc[_0xabeb('0x59')][_0xabeb('0x62')];return db[_0xabeb('0x51')][_0xabeb('0x58')]({'where':{'id':_0x3fddcc[_0xabeb('0x55')]['id'],'UserId':null}})[_0xabeb('0x22')](handleEntityNotFound(_0x492295,null))[_0xabeb('0x22')](function(_0x452dfd){if(_0x452dfd){_0x3b403a['message']=_0x452dfd[_0xabeb('0x63')]({'plain':!![]});return db[_0xabeb('0x64')][_0xabeb('0x58')]({'where':{'id':_0x452dfd[_0xabeb('0x65')]}});}return null;})[_0xabeb('0x22')](handleEntityNotFound(_0x492295,null))['then'](function(_0x2c5db3){if(_0x2c5db3){_0x3b403a[_0xabeb('0x67')]=_0x2c5db3['get']({'plain':!![]});interaction_log[_0xabeb('0x23')](_0xabeb('0x7a'),_0x3fddcc[_0xabeb('0x61')]['id'],_0x3fddcc[_0xabeb('0x61')][_0xabeb('0x3b')],_0x3fddcc[_0xabeb('0x61')]['role'],_0x3b403a[_0xabeb('0x67')]['id'],_0x3fddcc[_0xabeb('0x59')]?JSON[_0xabeb('0x27')](_0x3fddcc[_0xabeb('0x59')]):_0xabeb('0x69'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0x3b403a);}return null;})[_0xabeb('0x22')](function(_0x5839a5){var _0x26d3ba=_0xabeb('0x6b')+_0x5839a5[_0xabeb('0x29')][_0xabeb('0x7b')];return db[_0xabeb('0x6c')][_0xabeb('0x42')](_0x26d3ba,{'type':db[_0xabeb('0x6d')]['QueryTypes'][_0xabeb('0x6f')],'raw':!![]})[_0xabeb('0x22')](function(_0x3bc629){return _0x3bc629;});})[_0xabeb('0x22')](function(_0x58e820){if(_0x58e820){_0x3b403a[_0xabeb('0x29')][_0xabeb('0x7c')]=_0x58e820[0x0];if(!_0x3fddcc[_0xabeb('0x59')][_0xabeb('0x62')])return;return db[_0xabeb('0x70')][_0xabeb('0x58')]({'where':{'id':_0x3fddcc['body'][_0xabeb('0x62')],'role':_0xabeb('0x71')},'attributes':['id','name','fullname',_0xabeb('0x73'),_0xabeb('0x74')],'raw':!![]});}return null;})[_0xabeb('0x22')](function(_0x838731){if(!_0x838731)return null;_0x3b403a[_0xabeb('0x29')][_0xabeb('0x71')]=_0x838731;return _0x3b403a;})[_0xabeb('0x22')](function(_0x3caf56){if(_0x3caf56){_0x3caf56[_0xabeb('0x29')][_0xabeb('0x7d')]=util[_0xabeb('0x5f')]('SIP/%s',_0x3fddcc[_0xabeb('0x61')][_0xabeb('0x3b')]);_0x3caf56[_0xabeb('0x29')][_0xabeb('0x75')]=_0x3b403a[_0xabeb('0x75')];_0x3caf56[_0xabeb('0x29')][_0xabeb('0x76')]=_0x3b403a[_0xabeb('0x75')];_0x3caf56[_0xabeb('0x29')][_0xabeb('0x77')]=_0xabeb('0x37');respondWithRpcPromise(_0xabeb('0x79'),'EventManager',{'event':'rejectmessage','message':_0x3caf56[_0xabeb('0x29')]},client9002);return _0x3b403a;}return null;})[_0xabeb('0x22')](respondWithResult(_0x492295,null))[_0xabeb('0x2b')](handleError(_0x492295,null));};
\ No newline at end of file
index b572570..0cdcd3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2f0=['remove','emit','exports','events','OpenchannelMessage','setMaxListeners','update'];(function(_0x476bf4,_0x2a3755){var _0x788ffe=function(_0x13fa11){while(--_0x13fa11){_0x476bf4['push'](_0x476bf4['shift']());}};_0x788ffe(++_0x2a3755);}(_0xe2f0,0x96));var _0x0e2f=function(_0x149f32,_0x4273f7){_0x149f32=_0x149f32-0x0;var _0x11f475=_0xe2f0[_0x149f32];return _0x11f475;};'use strict';var EventEmitter=require(_0x0e2f('0x0'));var OpenchannelMessage=require('../../mysqldb')['db'][_0x0e2f('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x0e2f('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0e2f('0x3'),'afterDestroy':_0x0e2f('0x4')};function emitEvent(_0x2044c8){return function(_0x131ced,_0x634cfd,_0x40740f){OpenchannelMessageEvents[_0x0e2f('0x5')](_0x2044c8+':'+_0x131ced['id'],_0x131ced);OpenchannelMessageEvents['emit'](_0x2044c8,_0x131ced);_0x40740f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module[_0x0e2f('0x6')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x60f6=['save','remove','emit','hook','exports','events','../../mysqldb','OpenchannelMessage','setMaxListeners'];(function(_0x12e73e,_0xab1552){var _0x3d4182=function(_0x2320df){while(--_0x2320df){_0x12e73e['push'](_0x12e73e['shift']());}};_0x3d4182(++_0xab1552);}(_0x60f6,0x149));var _0x660f=function(_0xa7fe70,_0x29962f){_0xa7fe70=_0xa7fe70-0x0;var _0x2b03ac=_0x60f6[_0xa7fe70];return _0x2b03ac;};'use strict';var EventEmitter=require(_0x660f('0x0'));var OpenchannelMessage=require(_0x660f('0x1'))['db'][_0x660f('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x660f('0x3')](0x0);var events={'afterCreate':_0x660f('0x4'),'afterUpdate':'update','afterDestroy':_0x660f('0x5')};function emitEvent(_0x2ca0f7){return function(_0x430038,_0xc4ffc8,_0x23e585){OpenchannelMessageEvents[_0x660f('0x6')](_0x2ca0f7+':'+_0x430038['id'],_0x430038);OpenchannelMessageEvents[_0x660f('0x6')](_0x2ca0f7,_0x430038);_0x23e585(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage[_0x660f('0x7')](e,emitEvent(event));}}module[_0x660f('0x8')]=OpenchannelMessageEvents;
\ No newline at end of file
index d6cc0f3..b3ac61b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa571=['afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','replyUri','length','Interaction','omit','Contact','POST','method','GET','OpenchannelMessage,\x20%s,\x20%s','Message\x20%d\x20forwarded\x20to\x20%s','threadId','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','../../config/environment','exports','define','OpenchannelMessage','openchannel_messages','body','FULLTEXT','models','get','direction','toLowerCase','secret','isNil','UserId','findOne','OpenchannelInteractionId','createdAt','catch','error','CmContact','then','OpenchannelAccount','OpenchannelAccountId','OpenchannelInteraction','Interactions'];(function(_0x1a7a47,_0x81ca90){var _0x193dd9=function(_0x4f9d66){while(--_0x4f9d66){_0x1a7a47['push'](_0x1a7a47['shift']());}};_0x193dd9(++_0x81ca90);}(_0xa571,0x107));var _0x1a57=function(_0x3c5a56,_0x53341e){_0x3c5a56=_0x3c5a56-0x0;var _0x2ea67e=_0xa571[_0x3c5a56];return _0x2ea67e;};'use strict';var _=require(_0x1a57('0x0'));var util=require(_0x1a57('0x1'));var logger=require(_0x1a57('0x2'))(_0x1a57('0x3'));var moment=require('moment');var BPromise=require(_0x1a57('0x4'));var rp=require(_0x1a57('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1a57('0x6'));var attributes=require('./openchannelMessage.attributes');module[_0x1a57('0x7')]=function(_0xd97a33,_0x22ca20){return _0xd97a33[_0x1a57('0x8')](_0x1a57('0x9'),attributes,{'tableName':_0x1a57('0xa'),'paranoid':![],'indexes':[{'name':'fti_openchannel_messages','fields':[_0x1a57('0xb')],'type':_0x1a57('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3631d6,_0x58e266,_0x3c8182){var _0x1f7086=_0xd97a33[_0x1a57('0xd')];var _0x289dc0=_0x3631d6[_0x1a57('0xe')]({'plain':!![]});if(_0x289dc0[_0x1a57('0xf')][_0x1a57('0x10')]()==='in'||_0x289dc0[_0x1a57('0xf')]['toLowerCase']()==='out'&&!_0x289dc0[_0x1a57('0x11')]&&!_[_0x1a57('0x12')](_0x289dc0[_0x1a57('0x13')])){_0x1f7086['OpenchannelInteraction'][_0x1a57('0x14')]({'where':{'id':_0x289dc0[_0x1a57('0x15')]}})['then'](function(_0x503278){if(_0x503278){_0x503278['update']({'lastMsgAt':_0x289dc0[_0x1a57('0x16')],'lastMsgDirection':_0x289dc0[_0x1a57('0xf')][_0x1a57('0x10')]()});}})[_0x1a57('0x17')](function(_0x5802d6){console[_0x1a57('0x18')](_0x5802d6);});}if(_0x289dc0['direction']==='out'&&!_0x289dc0[_0x1a57('0x11')]){var _0x1c537f;_0x1f7086[_0x1a57('0x19')]['describe']()[_0x1a57('0x1a')](function(_0x1662a3){return _0x1f7086[_0x1a57('0x1b')]['find']({'where':{'id':_0x289dc0[_0x1a57('0x1c')]},'include':[{'model':_0x1f7086[_0x1a57('0x1d')],'as':_0x1a57('0x1e'),'where':{'id':_0x289dc0[_0x1a57('0x15')]},'limit':0x1,'include':[{'model':_0x1f7086[_0x1a57('0x19')],'as':'Contact','attributes':_['keys'](_0x1662a3)}]}]});})[_0x1a57('0x1a')](function(_0x21e811){_0x1c537f=_0x21e811[_0x1a57('0xe')]({'plain':!![]});if(_0x1c537f&&_0x1c537f['replyUri']){logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0x1a57('0x1f'),util[_0x1a57('0x20')](_0x1a57('0x21'),_0x289dc0['id'],_0x1c537f[_0x1a57('0x22')]));if(_0x1c537f[_0x1a57('0x1e')]&&_0x1c537f[_0x1a57('0x1e')][_0x1a57('0x23')]){_0x289dc0[_0x1a57('0x24')]=_[_0x1a57('0x25')](_0x1c537f[_0x1a57('0x1e')][0x0],_0x1a57('0x26'));_0x289dc0[_0x1a57('0x26')]=_0x1c537f[_0x1a57('0x1e')][0x0][_0x1a57('0x26')];}var _0x58e266={'method':_0x1a57('0x27'),'uri':encodeURI(_0x1c537f[_0x1a57('0x22')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x58e266[_0x1a57('0x28')]){case _0x1a57('0x29'):_0x58e266['qs']=_0x289dc0;break;case _0x1a57('0x27'):_0x58e266[_0x1a57('0xb')]=_0x289dc0;break;}return rp(_0x58e266)[_0x1a57('0x1a')](function(_0x5a53c8){logger['info'](_0x1a57('0x2a'),_0x1a57('0x1f'),util['format'](_0x1a57('0x2b'),_0x289dc0['id'],_0x1c537f['replyUri']));if(_0x5a53c8[_0x1a57('0xb')][_0x1a57('0x2c')]&&_0x5a53c8['body'][_0x1a57('0x2c')]!=_0x289dc0[_0x1a57('0x24')][_0x1a57('0x2c')]){return _0x1f7086[_0x1a57('0x1d')]['update']({'threadId':_0x5a53c8[_0x1a57('0xb')][_0x1a57('0x2c')]},{'logging':!![],'where':{'id':_0x289dc0[_0x1a57('0x24')]['id']}});}else{return;}})[_0x1a57('0x1a')](function(){return _0x3631d6['update']({'read':!![]});})[_0x1a57('0x17')](function(_0x251a54){logger[_0x1a57('0x18')](_0x1a57('0x2a'),_0x1a57('0x1f'),util[_0x1a57('0x2d')](_0x251a54,{'showHidden':![],'depth':null}));_0x3c8182();});}else{_0x3c8182();}})[_0x1a57('0x2e')](function(){_0x3c8182();});}else{_0x3c8182();}}},'charset':_0x1a57('0x2f'),'collate':_0x1a57('0x30')});};
\ No newline at end of file
+var _0x4213=['describe','OpenchannelAccount','find','OpenchannelAccountId','Interactions','CmContact','Contact','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','replyUri','length','Interaction','GET','threadId','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./openchannelMessage.attributes','exports','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','catch'];(function(_0x32e28d,_0x385a93){var _0x4459f1=function(_0x5603ea){while(--_0x5603ea){_0x32e28d['push'](_0x32e28d['shift']());}};_0x4459f1(++_0x385a93);}(_0x4213,0x77));var _0x3421=function(_0x4ecca7,_0xf6a49a){_0x4ecca7=_0x4ecca7-0x0;var _0x287f47=_0x4213[_0x4ecca7];return _0x287f47;};'use strict';var _=require(_0x3421('0x0'));var util=require(_0x3421('0x1'));var logger=require(_0x3421('0x2'))(_0x3421('0x3'));var moment=require(_0x3421('0x4'));var BPromise=require(_0x3421('0x5'));var rp=require(_0x3421('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3421('0x7'));var config=require('../../config/environment');var attributes=require(_0x3421('0x8'));module[_0x3421('0x9')]=function(_0x2155f8,_0x2a04e0){return _0x2155f8['define'](_0x3421('0xa'),attributes,{'tableName':_0x3421('0xb'),'paranoid':![],'indexes':[{'name':_0x3421('0xc'),'fields':[_0x3421('0xd')],'type':_0x3421('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4ddfce,_0x1f20cf,_0x58d511){var _0x4ff986=_0x2155f8[_0x3421('0xf')];var _0x4b9d24=_0x4ddfce[_0x3421('0x10')]({'plain':!![]});if(_0x4b9d24[_0x3421('0x11')][_0x3421('0x12')]()==='in'||_0x4b9d24[_0x3421('0x11')][_0x3421('0x12')]()===_0x3421('0x13')&&!_0x4b9d24[_0x3421('0x14')]&&!_['isNil'](_0x4b9d24[_0x3421('0x15')])){_0x4ff986[_0x3421('0x16')][_0x3421('0x17')]({'where':{'id':_0x4b9d24[_0x3421('0x18')]}})[_0x3421('0x19')](function(_0x3f4672){if(_0x3f4672){_0x3f4672[_0x3421('0x1a')]({'lastMsgAt':_0x4b9d24['createdAt'],'lastMsgDirection':_0x4b9d24[_0x3421('0x11')]['toLowerCase']()});}})[_0x3421('0x1b')](function(_0x5257ad){console['error'](_0x5257ad);});}if(_0x4b9d24[_0x3421('0x11')]==='out'&&!_0x4b9d24[_0x3421('0x14')]){var _0x23694b;_0x4ff986['CmContact'][_0x3421('0x1c')]()[_0x3421('0x19')](function(_0x130d3c){return _0x4ff986[_0x3421('0x1d')][_0x3421('0x1e')]({'where':{'id':_0x4b9d24[_0x3421('0x1f')]},'include':[{'model':_0x4ff986[_0x3421('0x16')],'as':_0x3421('0x20'),'where':{'id':_0x4b9d24[_0x3421('0x18')]},'limit':0x1,'include':[{'model':_0x4ff986[_0x3421('0x21')],'as':_0x3421('0x22'),'attributes':_['keys'](_0x130d3c)}]}]});})[_0x3421('0x19')](function(_0x4b59a5){_0x23694b=_0x4b59a5['get']({'plain':!![]});if(_0x23694b&&_0x23694b['replyUri']){logger[_0x3421('0x23')](_0x3421('0x24'),_0x3421('0x25'),util[_0x3421('0x26')](_0x3421('0x27'),_0x4b9d24['id'],_0x23694b[_0x3421('0x28')]));if(_0x23694b[_0x3421('0x20')]&&_0x23694b[_0x3421('0x20')][_0x3421('0x29')]){_0x4b9d24[_0x3421('0x2a')]=_['omit'](_0x23694b['Interactions'][0x0],'Contact');_0x4b9d24[_0x3421('0x22')]=_0x23694b[_0x3421('0x20')][0x0][_0x3421('0x22')];}var _0x1f20cf={'method':'POST','uri':encodeURI(_0x23694b[_0x3421('0x28')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x1f20cf['method']){case _0x3421('0x2b'):_0x1f20cf['qs']=_0x4b9d24;break;case'POST':_0x1f20cf[_0x3421('0xd')]=_0x4b9d24;break;}return rp(_0x1f20cf)[_0x3421('0x19')](function(_0x36d75f){logger[_0x3421('0x23')](_0x3421('0x24'),'afterCreate',util[_0x3421('0x26')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x4b9d24['id'],_0x23694b['replyUri']));if(_0x36d75f[_0x3421('0xd')]['threadId']&&_0x36d75f['body'][_0x3421('0x2c')]!=_0x4b9d24['Interaction'][_0x3421('0x2c')]){return _0x4ff986['OpenchannelInteraction'][_0x3421('0x1a')]({'threadId':_0x36d75f[_0x3421('0xd')]['threadId']},{'logging':!![],'where':{'id':_0x4b9d24[_0x3421('0x2a')]['id']}});}else{return;}})[_0x3421('0x19')](function(){return _0x4ddfce[_0x3421('0x1a')]({'read':!![]});})['catch'](function(_0x3a89b6){logger['error'](_0x3421('0x24'),_0x3421('0x25'),util[_0x3421('0x2d')](_0x3a89b6,{'showHidden':![],'depth':null}));_0x58d511();});}else{_0x58d511();}})[_0x3421('0x2e')](function(){_0x58d511();});}else{_0x58d511();}}},'charset':_0x3421('0x2f'),'collate':_0x3421('0x30')});};
\ No newline at end of file
index c3a4a32..48c3ae4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['stringify','error','code','message','info','result','OpenchannelMessage','create','body','options','raw','CreateOpenchannelMessage','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./openchannelMessage.socket','then','OpenchannelMessage,\x20%s,\x20%s','debug','request\x20sent'];(function(_0x1ba328,_0x30bd4b){var _0x4bbb11=function(_0x23abd5){while(--_0x23abd5){_0x1ba328['push'](_0x1ba328['shift']());}};_0x4bbb11(++_0x30bd4b);}(_0x5f66,0x1a0));var _0x65f6=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x5f66[_0x432682];return _0x463d05;};'use strict';var _=require('lodash');var util=require(_0x65f6('0x0'));var moment=require('moment');var BPromise=require(_0x65f6('0x1'));var rs=require(_0x65f6('0x2'));var fs=require('fs');var Redis=require(_0x65f6('0x3'));var db=require(_0x65f6('0x4'))['db'];var utils=require(_0x65f6('0x5'));var logger=require('../../config/logger')(_0x65f6('0x6'));var config=require('../../config/environment');var jayson=require(_0x65f6('0x7'));var client=jayson[_0x65f6('0x8')]['http']({'port':0x232a});config['redis']=_[_0x65f6('0x9')](config[_0x65f6('0xa')],{'host':_0x65f6('0xb'),'port':0x18eb});var socket=require(_0x65f6('0xc'))(new Redis(config[_0x65f6('0xa')]));require(_0x65f6('0xd'))['register'](socket);function respondWithRpcPromise(_0x5123ee,_0x18fea1,_0x2f6d5b){return new BPromise(function(_0x264647,_0x25c416){return client['request'](_0x5123ee,_0x2f6d5b)[_0x65f6('0xe')](function(_0x571436){logger['info'](_0x65f6('0xf'),_0x18fea1,'request\x20sent');logger[_0x65f6('0x10')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x18fea1,_0x65f6('0x11'),JSON[_0x65f6('0x12')](_0x571436));if(_0x571436[_0x65f6('0x13')]){if(_0x571436[_0x65f6('0x13')][_0x65f6('0x14')]===0x1f4){logger[_0x65f6('0x13')](_0x65f6('0xf'),_0x18fea1,_0x571436[_0x65f6('0x13')][_0x65f6('0x15')]);return _0x25c416(_0x571436[_0x65f6('0x13')]['message']);}logger[_0x65f6('0x13')]('OpenchannelMessage,\x20%s,\x20%s',_0x18fea1,_0x571436['error'][_0x65f6('0x15')]);return _0x264647(_0x571436[_0x65f6('0x13')][_0x65f6('0x15')]);}else{logger[_0x65f6('0x16')](_0x65f6('0xf'),_0x18fea1,_0x65f6('0x11'));_0x264647(_0x571436[_0x65f6('0x17')][_0x65f6('0x15')]);}})['catch'](function(_0x4d79a1){logger[_0x65f6('0x13')]('OpenchannelMessage,\x20%s,\x20%s',_0x18fea1,_0x4d79a1);_0x25c416(_0x4d79a1);});});}exports['CreateOpenchannelMessage']=function(_0x5c5b91){var _0x365159=this;return new Promise(function(_0x21ea88,_0x5114a4){return db[_0x65f6('0x18')][_0x65f6('0x19')](_0x5c5b91[_0x65f6('0x1a')],{'raw':_0x5c5b91[_0x65f6('0x1b')]?_0x5c5b91[_0x65f6('0x1b')][_0x65f6('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x197a49){logger['info']('CreateOpenchannelMessage',_0x5c5b91);logger[_0x65f6('0x10')](_0x65f6('0x1d'),_0x5c5b91,JSON['stringify'](_0x197a49));_0x21ea88(_0x197a49);})[_0x65f6('0x1e')](function(_0x471a33){logger[_0x65f6('0x13')](_0x65f6('0x1d'),_0x471a33['message'],_0x5c5b91);_0x5114a4(_0x365159[_0x65f6('0x13')](0x1f4,_0x471a33[_0x65f6('0x15')]));});});};
\ No newline at end of file
+var _0x1261=['../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','localhost','socket.io-emitter','./openchannelMessage.socket','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','OpenchannelMessage','options','raw','then','CreateOpenchannelMessage','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x40fc97,_0x4aab72){var _0x5dfab7=function(_0xccae00){while(--_0xccae00){_0x40fc97['push'](_0x40fc97['shift']());}};_0x5dfab7(++_0x4aab72);}(_0x1261,0x144));var _0x1126=function(_0x2ab76b,_0x176579){_0x2ab76b=_0x2ab76b-0x0;var _0x201126=_0x1261[_0x2ab76b];return _0x201126;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});config[_0x1126('0xb')]=_['defaults'](config[_0x1126('0xb')],{'host':_0x1126('0xc'),'port':0x18eb});var socket=require(_0x1126('0xd'))(new Redis(config[_0x1126('0xb')]));require(_0x1126('0xe'))['register'](socket);function respondWithRpcPromise(_0x3f09ac,_0x18dbe6,_0x167ef1){return new BPromise(function(_0x5e72e2,_0x34571c){return client['request'](_0x3f09ac,_0x167ef1)['then'](function(_0x15c071){logger['info'](_0x1126('0xf'),_0x18dbe6,_0x1126('0x10'));logger[_0x1126('0x11')](_0x1126('0x12'),_0x18dbe6,_0x1126('0x10'),JSON[_0x1126('0x13')](_0x15c071));if(_0x15c071[_0x1126('0x14')]){if(_0x15c071[_0x1126('0x14')][_0x1126('0x15')]===0x1f4){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x18dbe6,_0x15c071[_0x1126('0x14')][_0x1126('0x16')]);return _0x34571c(_0x15c071[_0x1126('0x14')]['message']);}logger[_0x1126('0x14')]('OpenchannelMessage,\x20%s,\x20%s',_0x18dbe6,_0x15c071[_0x1126('0x14')][_0x1126('0x16')]);return _0x5e72e2(_0x15c071[_0x1126('0x14')]['message']);}else{logger[_0x1126('0x17')](_0x1126('0xf'),_0x18dbe6,'request\x20sent');_0x5e72e2(_0x15c071['result'][_0x1126('0x16')]);}})[_0x1126('0x18')](function(_0x58d11a){logger['error'](_0x1126('0xf'),_0x18dbe6,_0x58d11a);_0x34571c(_0x58d11a);});});}exports['CreateOpenchannelMessage']=function(_0x22ed37){var _0x1d6d19=this;return new Promise(function(_0x2f70ac,_0x54400a){return db[_0x1126('0x19')]['create'](_0x22ed37['body'],{'raw':_0x22ed37[_0x1126('0x1a')]?_0x22ed37[_0x1126('0x1a')][_0x1126('0x1b')]===undefined?!![]:![]:!![]})[_0x1126('0x1c')](function(_0x526ca1){logger[_0x1126('0x17')](_0x1126('0x1d'),_0x22ed37);logger['debug'](_0x1126('0x1d'),_0x22ed37,JSON['stringify'](_0x526ca1));_0x2f70ac(_0x526ca1);})['catch'](function(_0x4b57ab){logger[_0x1126('0x14')](_0x1126('0x1d'),_0x4b57ab[_0x1126('0x16')],_0x22ed37);_0x54400a(_0x1d6d19[_0x1126('0x14')](0x1f4,_0x4b57ab[_0x1126('0x16')]));});});};
\ No newline at end of file
index 1d0f577..3b12a6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ba=['save','remove','update','emit','removeListener','register','length','openchannelMessage:','./openchannelMessage.events'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x54ba,0x170));var _0xa54b=function(_0x3d626c,_0x30deb1){_0x3d626c=_0x3d626c-0x0;var _0x18c9da=_0x54ba[_0x3d626c];return _0x18c9da;};'use strict';var OpenchannelMessageEvents=require(_0xa54b('0x0'));var events=[_0xa54b('0x1'),_0xa54b('0x2'),_0xa54b('0x3')];function createListener(_0x19e323,_0xea7291){return function(_0x53e1f3){_0xea7291[_0xa54b('0x4')](_0x19e323,_0x53e1f3);};}function removeListener(_0x4af786,_0x3e1157){return function(){OpenchannelMessageEvents[_0xa54b('0x5')](_0x4af786,_0x3e1157);};}exports[_0xa54b('0x6')]=function(_0x3ca5d5){for(var _0x574edb=0x0,_0x4e3dc1=events[_0xa54b('0x7')];_0x574edb<_0x4e3dc1;_0x574edb++){var _0xbd9471=events[_0x574edb];var _0x471566=createListener(_0xa54b('0x8')+_0xbd9471,_0x3ca5d5);OpenchannelMessageEvents['on'](_0xbd9471,_0x471566);}};
\ No newline at end of file
+var _0xa992=['openchannelMessage:','./openchannelMessage.events','emit','register','length'];(function(_0x2ae482,_0x688dcc){var _0x16b0bf=function(_0x1cdf28){while(--_0x1cdf28){_0x2ae482['push'](_0x2ae482['shift']());}};_0x16b0bf(++_0x688dcc);}(_0xa992,0xc4));var _0x2a99=function(_0x21b89e,_0x35feba){_0x21b89e=_0x21b89e-0x0;var _0x50909e=_0xa992[_0x21b89e];return _0x50909e;};'use strict';var OpenchannelMessageEvents=require(_0x2a99('0x0'));var events=['save','remove','update'];function createListener(_0x2d6d8f,_0x12fb59){return function(_0x4e8b6e){_0x12fb59[_0x2a99('0x1')](_0x2d6d8f,_0x4e8b6e);};}function removeListener(_0x4cb7d7,_0x89f03d){return function(){OpenchannelMessageEvents['removeListener'](_0x4cb7d7,_0x89f03d);};}exports[_0x2a99('0x2')]=function(_0x47fb49){for(var _0x44f7a1=0x0,_0x123002=events[_0x2a99('0x3')];_0x44f7a1<_0x123002;_0x44f7a1++){var _0x217687=events[_0x44f7a1];var _0x32cac7=createListener(_0x2a99('0x4')+_0x217687,_0x47fb49);OpenchannelMessageEvents['on'](_0x217687,_0x32cac7);}};
\ No newline at end of file
index 4256b26..610629a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cd3=['post','create','addTeams','addAgents','update','/:id','delete','removeTeams','/:id/users','removeAgents','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','index','/describe','isAuthenticated','getMembers','/:id/teams'];(function(_0x7bdc44,_0x3805d7){var _0x1a4f95=function(_0x2aadb6){while(--_0x2aadb6){_0x7bdc44['push'](_0x7bdc44['shift']());}};_0x1a4f95(++_0x3805d7);}(_0x1cd3,0x143));var _0x31cd=function(_0x10d750,_0x4042cc){_0x10d750=_0x10d750-0x0;var _0x4aacc6=_0x1cd3[_0x10d750];return _0x4aacc6;};'use strict';var multer=require('multer');var util=require(_0x31cd('0x0'));var path=require(_0x31cd('0x1'));var timeout=require(_0x31cd('0x2'));var express=require(_0x31cd('0x3'));var router=express[_0x31cd('0x4')]();var fs_extra=require(_0x31cd('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x31cd('0x6'));var config=require(_0x31cd('0x7'));var controller=require(_0x31cd('0x8'));router[_0x31cd('0x9')]('/',auth['isAuthenticated'](),controller[_0x31cd('0xa')]);router['get'](_0x31cd('0xb'),auth['isAuthenticated'](),controller['describe']);router['get']('/:id',auth[_0x31cd('0xc')](),controller['show']);router[_0x31cd('0x9')]('/:id/members',auth[_0x31cd('0xc')](),controller[_0x31cd('0xd')]);router[_0x31cd('0x9')](_0x31cd('0xe'),auth[_0x31cd('0xc')](),controller['getTeams']);router[_0x31cd('0x9')]('/:id/users',auth[_0x31cd('0xc')](),controller['getAgents']);router[_0x31cd('0xf')]('/',auth[_0x31cd('0xc')](),controller[_0x31cd('0x10')]);router['post'](_0x31cd('0xe'),auth[_0x31cd('0xc')](),controller[_0x31cd('0x11')]);router[_0x31cd('0xf')]('/:id/users',auth[_0x31cd('0xc')](),controller[_0x31cd('0x12')]);router['put']('/:id',auth[_0x31cd('0xc')](),controller[_0x31cd('0x13')]);router['delete'](_0x31cd('0x14'),auth[_0x31cd('0xc')](),controller['destroy']);router[_0x31cd('0x15')](_0x31cd('0xe'),auth[_0x31cd('0xc')](),controller[_0x31cd('0x16')]);router['delete'](_0x31cd('0x17'),auth[_0x31cd('0xc')](),controller[_0x31cd('0x18')]);module[_0x31cd('0x19')]=router;
\ No newline at end of file
+var _0xef10=['post','/:id/users','addAgents','put','update','destroy','delete','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','/:id/members','getMembers','/:id/teams','getTeams','getAgents','create'];(function(_0x2dadb9,_0x42cfe6){var _0x2f0097=function(_0x21163f){while(--_0x21163f){_0x2dadb9['push'](_0x2dadb9['shift']());}};_0x2f0097(++_0x42cfe6);}(_0xef10,0x10c));var _0x0ef1=function(_0x50e6db,_0x28f088){_0x50e6db=_0x50e6db-0x0;var _0x5d7938=_0xef10[_0x50e6db];return _0x5d7938;};'use strict';var multer=require(_0x0ef1('0x0'));var util=require(_0x0ef1('0x1'));var path=require('path');var timeout=require(_0x0ef1('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x0ef1('0x3'));var auth=require(_0x0ef1('0x4'));var interaction=require(_0x0ef1('0x5'));var config=require(_0x0ef1('0x6'));var controller=require('./openchannelQueue.controller');router[_0x0ef1('0x7')]('/',auth['isAuthenticated'](),controller[_0x0ef1('0x8')]);router[_0x0ef1('0x7')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x0ef1('0x7')](_0x0ef1('0x9'),auth[_0x0ef1('0xa')](),controller[_0x0ef1('0xb')]);router['get'](_0x0ef1('0xc'),auth[_0x0ef1('0xa')](),controller[_0x0ef1('0xd')]);router['get'](_0x0ef1('0xe'),auth[_0x0ef1('0xa')](),controller[_0x0ef1('0xf')]);router[_0x0ef1('0x7')]('/:id/users',auth[_0x0ef1('0xa')](),controller[_0x0ef1('0x10')]);router['post']('/',auth[_0x0ef1('0xa')](),controller[_0x0ef1('0x11')]);router[_0x0ef1('0x12')]('/:id/teams',auth['isAuthenticated'](),controller['addTeams']);router[_0x0ef1('0x12')](_0x0ef1('0x13'),auth[_0x0ef1('0xa')](),controller[_0x0ef1('0x14')]);router[_0x0ef1('0x15')]('/:id',auth[_0x0ef1('0xa')](),controller[_0x0ef1('0x16')]);router['delete']('/:id',auth[_0x0ef1('0xa')](),controller[_0x0ef1('0x17')]);router[_0x0ef1('0x18')](_0x0ef1('0xe'),auth[_0x0ef1('0xa')](),controller['removeTeams']);router['delete'](_0x0ef1('0x13'),auth[_0x0ef1('0xa')](),controller['removeAgents']);module[_0x0ef1('0x19')]=router;
\ No newline at end of file
index 5a16132..9f95118 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b8b=['ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING','INTEGER'];(function(_0x2625be,_0x5a9690){var _0x2d4dd1=function(_0x2fefbf){while(--_0x2fefbf){_0x2625be['push'](_0x2625be['shift']());}};_0x2d4dd1(++_0x5a9690);}(_0x0b8b,0x1cc));var _0xb0b8=function(_0x2d5818,_0xc9aa8b){_0x2d5818=_0x2d5818-0x0;var _0x1d1e9d=_0x0b8b[_0x2d5818];return _0x1d1e9d;};'use strict';var Sequelize=require(_0xb0b8('0x0'));module[_0xb0b8('0x1')]={'name':{'type':Sequelize[_0xb0b8('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xb0b8('0x2')]},'timeout':{'type':Sequelize[_0xb0b8('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xb0b8('0x4')](_0xb0b8('0x5'),_0xb0b8('0x6'),_0xb0b8('0x7'))}};
\ No newline at end of file
+var _0xb5d6=['rrmemory','beepall','roundrobin','exports','STRING','name','INTEGER'];(function(_0x5dbf63,_0x31b518){var _0x40122e=function(_0x2163ec){while(--_0x2163ec){_0x5dbf63['push'](_0x5dbf63['shift']());}};_0x40122e(++_0x31b518);}(_0xb5d6,0x1b5));var _0x6b5d=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xb5d6[_0x2c91e9];return _0x13f0ff;};'use strict';var Sequelize=require('sequelize');module[_0x6b5d('0x0')]={'name':{'type':Sequelize[_0x6b5d('0x1')],'unique':_0x6b5d('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x6b5d('0x1')]},'timeout':{'type':Sequelize[_0x6b5d('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x6b5d('0x4'),_0x6b5d('0x5'),_0x6b5d('0x6'))}};
\ No newline at end of file
index aa66a30..91a02a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4ea=['tq.TeamId','from','team_has_openchannel_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','push','sequelize','QueryTypes','SELECT','every','includes','all','union','compact','removeTeams','isEmpty','removeAgents','userOpenchannelQueue:remove','addAgents','omit','spread','emit','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','fs-extra','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','socket.io-emitter','./openchannelQueue.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','UserProfileResource','end','sendStatus','error','stack','name','map','OpenchannelQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows','show','options','find','create','body','role','user','UserProfileSection','userProfileId','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','findOne','UserOpenchannelQueue','nolimit','OpenchannelQueueId','User','UserId','agent','openchannelPause','updatedAt','createdAt','SIP','getTeams','Team','addTeams','ids','voicePause','flatMap','Agents','transaction','each','findOrCreate','forEach','userOpenchannelQueue:save','select','field'];(function(_0x523fd9,_0x1a9bee){var _0x3c17c5=function(_0x2fd2b6){while(--_0x2fd2b6){_0x523fd9['push'](_0x523fd9['shift']());}};_0x3c17c5(++_0x1a9bee);}(_0xc4ea,0x12b));var _0xac4e=function(_0xad4036,_0x5b842b){_0xad4036=_0xad4036-0x0;var _0x702979=_0xc4ea[_0xad4036];return _0x702979;};'use strict';var emlformat=require(_0xac4e('0x0'));var rimraf=require(_0xac4e('0x1'));var zipdir=require(_0xac4e('0x2'));var jsonpatch=require(_0xac4e('0x3'));var rp=require('request-promise');var moment=require(_0xac4e('0x4'));var BPromise=require(_0xac4e('0x5'));var Mustache=require(_0xac4e('0x6'));var util=require(_0xac4e('0x7'));var path=require(_0xac4e('0x8'));var sox=require('sox');var csv=require(_0xac4e('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xac4e('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xac4e('0xb'));var jsforce=require(_0xac4e('0xc'));var deskjs=require(_0xac4e('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xac4e('0xe'));var Redis=require(_0xac4e('0xf'));var authService=require(_0xac4e('0x10'));var qs=require(_0xac4e('0x11'));var as=require(_0xac4e('0x12'));var hardwareService=require(_0xac4e('0x13'));var logger=require(_0xac4e('0x14'))('api');var utils=require(_0xac4e('0x15'));var config=require(_0xac4e('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xac4e('0x17'))['db'];config[_0xac4e('0x18')]=_['defaults'](config[_0xac4e('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0xac4e('0x19'))(new Redis(config[_0xac4e('0x18')]));require(_0xac4e('0x1a'))[_0xac4e('0x1b')](socket);function respondWithStatusCode(_0x204d96,_0xa287c9){_0xa287c9=_0xa287c9||0xcc;return function(_0x215703){if(_0x215703){return _0x204d96['sendStatus'](_0xa287c9);}return _0x204d96[_0xac4e('0x1c')](_0xa287c9)['end']();};}function respondWithResult(_0x11c4cb,_0x1cee5d){_0x1cee5d=_0x1cee5d||0xc8;return function(_0x20316f){if(_0x20316f){return _0x11c4cb[_0xac4e('0x1c')](_0x1cee5d)[_0xac4e('0x1d')](_0x20316f);}};}function respondWithFilteredResult(_0x7a7f6f,_0x4b03a0){return function(_0xbce05e){if(_0xbce05e){var _0x2572d6=typeof _0x4b03a0[_0xac4e('0x1e')]===_0xac4e('0x1f')&&typeof _0x4b03a0[_0xac4e('0x20')]===_0xac4e('0x1f');var _0x231641=_0xbce05e['count'];var _0x1df76d=_0x2572d6?0x0:_0x4b03a0['offset'];var _0x4720f1=_0x2572d6?_0xbce05e[_0xac4e('0x21')]:_0x4b03a0[_0xac4e('0x1e')]+_0x4b03a0[_0xac4e('0x20')];var _0x5a6a63;if(_0x4720f1>=_0x231641){_0x4720f1=_0x231641;_0x5a6a63=0xc8;}else{_0x5a6a63=0xce;}_0x7a7f6f[_0xac4e('0x1c')](_0x5a6a63);return _0x7a7f6f[_0xac4e('0x22')](_0xac4e('0x23'),_0x1df76d+'-'+_0x4720f1+'/'+_0x231641)[_0xac4e('0x1d')](_0xbce05e);}return null;};}function patchUpdates(_0x564e09){return function(_0x18b9c9){try{jsonpatch[_0xac4e('0x24')](_0x18b9c9,_0x564e09,!![]);}catch(_0x52173d){return BPromise[_0xac4e('0x25')](_0x52173d);}return _0x18b9c9['save']();};}function saveUpdates(_0x1ff5ab,_0x5c5f0c){return function(_0x519b9c){if(_0x519b9c){return _0x519b9c[_0xac4e('0x26')](_0x1ff5ab)[_0xac4e('0x27')](function(_0x5648b1){return _0x5648b1;});}return null;};}function removeEntity(_0x2c3678,_0x2fc90b){return function(_0x3ff9c9){if(_0x3ff9c9){return _0x3ff9c9[_0xac4e('0x28')]()[_0xac4e('0x27')](function(){var _0x1b003=_0x3ff9c9[_0xac4e('0x29')]({'plain':!![]});var _0x8e0d4e='OpenchannelQueues';return db[_0xac4e('0x2a')][_0xac4e('0x28')]({'where':{'type':_0x8e0d4e,'resourceId':_0x1b003['id']}})[_0xac4e('0x27')](function(){return _0x3ff9c9;});})[_0xac4e('0x27')](function(){_0x2c3678[_0xac4e('0x1c')](0xcc)[_0xac4e('0x2b')]();});}};}function handleEntityNotFound(_0x10c2a5,_0x1eeafb){return function(_0x9882d0){if(!_0x9882d0){_0x10c2a5[_0xac4e('0x2c')](0x194);}return _0x9882d0;};}function handleError(_0x947a08,_0x4696a0){_0x4696a0=_0x4696a0||0x1f4;return function(_0x87ec38){logger[_0xac4e('0x2d')](_0x87ec38[_0xac4e('0x2e')]);if(_0x87ec38[_0xac4e('0x2f')]){delete _0x87ec38[_0xac4e('0x2f')];}_0x947a08[_0xac4e('0x1c')](_0x4696a0)['send'](_0x87ec38);};}exports['index']=function(_0x33d0a4,_0x13b6d0){var _0x2f4361={},_0x529d96={},_0x6c5971={'count':0x0,'rows':[]};var _0x51fc1d=_[_0xac4e('0x30')](db[_0xac4e('0x31')][_0xac4e('0x32')],function(_0x385a32){return{'name':_0x385a32[_0xac4e('0x33')],'type':_0x385a32[_0xac4e('0x34')][_0xac4e('0x35')]};});_0x529d96[_0xac4e('0x36')]=_['map'](_0x51fc1d,_0xac4e('0x2f'));_0x529d96[_0xac4e('0x37')]=_[_0xac4e('0x38')](_0x33d0a4[_0xac4e('0x37')]);_0x529d96[_0xac4e('0x39')]=_[_0xac4e('0x3a')](_0x529d96[_0xac4e('0x36')],_0x529d96[_0xac4e('0x37')]);_0x2f4361[_0xac4e('0x3b')]=_['intersection'](_0x529d96[_0xac4e('0x36')],qs[_0xac4e('0x3c')](_0x33d0a4[_0xac4e('0x37')][_0xac4e('0x3c')]));_0x2f4361['attributes']=_0x2f4361[_0xac4e('0x3b')][_0xac4e('0x3d')]?_0x2f4361[_0xac4e('0x3b')]:_0x529d96[_0xac4e('0x36')];if(!_0x33d0a4[_0xac4e('0x37')][_0xac4e('0x3e')]('nolimit')){_0x2f4361[_0xac4e('0x20')]=qs['limit'](_0x33d0a4[_0xac4e('0x37')][_0xac4e('0x20')]);_0x2f4361['offset']=qs[_0xac4e('0x1e')](_0x33d0a4[_0xac4e('0x37')][_0xac4e('0x1e')]);}_0x2f4361[_0xac4e('0x3f')]=qs[_0xac4e('0x40')](_0x33d0a4[_0xac4e('0x37')][_0xac4e('0x40')]);_0x2f4361[_0xac4e('0x41')]=qs[_0xac4e('0x39')](_[_0xac4e('0x42')](_0x33d0a4[_0xac4e('0x37')],_0x529d96[_0xac4e('0x39')]),_0x51fc1d);if(_0x33d0a4[_0xac4e('0x37')][_0xac4e('0x43')]){_0x2f4361[_0xac4e('0x41')]=_[_0xac4e('0x44')](_0x2f4361['where'],{'$or':_['map'](_0x51fc1d,function(_0x48c83a){if(_0x48c83a[_0xac4e('0x34')]!=='VIRTUAL'){var _0x5d536b={};_0x5d536b[_0x48c83a[_0xac4e('0x2f')]]={'$like':'%'+_0x33d0a4[_0xac4e('0x37')]['filter']+'%'};return _0x5d536b;}})});}_0x2f4361=_[_0xac4e('0x44')]({},_0x2f4361,_0x33d0a4['options']);var _0x4ddbca={'where':_0x2f4361['where']};return db[_0xac4e('0x31')][_0xac4e('0x21')](_0x4ddbca)[_0xac4e('0x27')](function(_0x38a0cf){_0x6c5971[_0xac4e('0x21')]=_0x38a0cf;if(_0x33d0a4['query'][_0xac4e('0x45')]){_0x2f4361[_0xac4e('0x46')]=[{'all':!![]}];}return db[_0xac4e('0x31')][_0xac4e('0x47')](_0x2f4361);})[_0xac4e('0x27')](function(_0x32d6bd){_0x6c5971[_0xac4e('0x48')]=_0x32d6bd;return _0x6c5971;})[_0xac4e('0x27')](respondWithFilteredResult(_0x13b6d0,_0x2f4361))['catch'](handleError(_0x13b6d0,null));};exports[_0xac4e('0x49')]=function(_0x29fd75,_0x4cf4be){var _0x281346={'raw':!![],'where':{'id':_0x29fd75['params']['id']}},_0x129e44={};_0x129e44['model']=_[_0xac4e('0x38')](db[_0xac4e('0x31')][_0xac4e('0x32')]);_0x129e44[_0xac4e('0x37')]=_['keys'](_0x29fd75[_0xac4e('0x37')]);_0x129e44[_0xac4e('0x39')]=_[_0xac4e('0x3a')](_0x129e44[_0xac4e('0x36')],_0x129e44[_0xac4e('0x37')]);_0x281346[_0xac4e('0x3b')]=_['intersection'](_0x129e44['model'],qs['fields'](_0x29fd75[_0xac4e('0x37')][_0xac4e('0x3c')]));_0x281346['attributes']=_0x281346['attributes'][_0xac4e('0x3d')]?_0x281346[_0xac4e('0x3b')]:_0x129e44[_0xac4e('0x36')];if(_0x29fd75[_0xac4e('0x37')][_0xac4e('0x45')]){_0x281346[_0xac4e('0x46')]=[{'all':!![]}];}_0x281346=_[_0xac4e('0x44')]({},_0x281346,_0x29fd75[_0xac4e('0x4a')]);return db[_0xac4e('0x31')][_0xac4e('0x4b')](_0x281346)[_0xac4e('0x27')](handleEntityNotFound(_0x4cf4be,null))[_0xac4e('0x27')](respondWithResult(_0x4cf4be,null))['catch'](handleError(_0x4cf4be,null));};exports[_0xac4e('0x4c')]=function(_0x405d04,_0x358589){return db[_0xac4e('0x31')][_0xac4e('0x4c')](_0x405d04[_0xac4e('0x4d')],{})[_0xac4e('0x27')](function(_0x400039){var _0x23bc34=_0x405d04['user']['get']({'plain':!![]});if(!_0x23bc34)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x23bc34[_0xac4e('0x4e')]===_0xac4e('0x4f')){var _0x111db3=_0x400039[_0xac4e('0x29')]({'plain':!![]});var _0x1f235b='OpenchannelQueues';return db[_0xac4e('0x50')][_0xac4e('0x4b')]({'where':{'name':_0x1f235b,'userProfileId':_0x23bc34[_0xac4e('0x51')]},'raw':!![]})[_0xac4e('0x27')](function(_0x45007e){if(_0x45007e&&_0x45007e['autoAssociation']===0x0){return db[_0xac4e('0x2a')]['create']({'name':_0x111db3[_0xac4e('0x2f')],'resourceId':_0x111db3['id'],'type':_0x45007e[_0xac4e('0x2f')],'sectionId':_0x45007e['id']},{})[_0xac4e('0x27')](function(){return _0x400039;});}else{return _0x400039;}})[_0xac4e('0x52')](function(_0x5acd27){logger[_0xac4e('0x2d')](_0xac4e('0x53'),_0x5acd27);throw _0x5acd27;});}return _0x400039;})[_0xac4e('0x27')](respondWithResult(_0x358589,0xc9))[_0xac4e('0x52')](handleError(_0x358589,null));};exports[_0xac4e('0x26')]=function(_0x33bf54,_0xf2b1ce){if(_0x33bf54['body']['id']){delete _0x33bf54['body']['id'];}return db[_0xac4e('0x31')][_0xac4e('0x4b')]({'where':{'id':_0x33bf54[_0xac4e('0x54')]['id']}})[_0xac4e('0x27')](handleEntityNotFound(_0xf2b1ce,null))['then'](saveUpdates(_0x33bf54[_0xac4e('0x4d')],null))['then'](respondWithResult(_0xf2b1ce,null))[_0xac4e('0x52')](handleError(_0xf2b1ce,null));};exports[_0xac4e('0x28')]=function(_0x4dd892,_0x55dc79){return db[_0xac4e('0x31')]['find']({'where':{'id':_0x4dd892[_0xac4e('0x54')]['id']}})[_0xac4e('0x27')](handleEntityNotFound(_0x55dc79,null))[_0xac4e('0x27')](removeEntity(_0x55dc79,null))[_0xac4e('0x52')](handleError(_0x55dc79,null));};exports['describe']=function(_0x4d52e0,_0x3f8104){return db[_0xac4e('0x31')][_0xac4e('0x55')]()['then'](respondWithResult(_0x3f8104,null))['catch'](handleError(_0x3f8104,null));};exports[_0xac4e('0x56')]=function(_0x37333f,_0x163297,_0x584d17){var _0x24173c={'raw':!![],'where':{}},_0x46bf79={},_0x5662b6;return db['OpenchannelQueue'][_0xac4e('0x57')]({'where':{'id':_0x37333f['params']['id']}})['then'](handleEntityNotFound(_0x163297,null))['then'](function(_0x354d5c){if(_0x354d5c){_0x5662b6=_0x354d5c[_0xac4e('0x29')]({'plain':!![]});_0x46bf79[_0xac4e('0x36')]=_[_0xac4e('0x38')](db[_0xac4e('0x58')][_0xac4e('0x32')]);_0x46bf79[_0xac4e('0x37')]=_[_0xac4e('0x38')](_0x37333f[_0xac4e('0x37')]);_0x46bf79[_0xac4e('0x39')]=_[_0xac4e('0x3a')](_0x46bf79[_0xac4e('0x36')],_0x46bf79['query']);_0x24173c[_0xac4e('0x3b')]=_[_0xac4e('0x3a')](_0x46bf79[_0xac4e('0x36')],qs['fields'](_0x37333f[_0xac4e('0x37')][_0xac4e('0x3c')]));_0x24173c[_0xac4e('0x3b')]=_0x24173c['attributes']['length']?_0x24173c[_0xac4e('0x3b')]:_0x46bf79[_0xac4e('0x36')];if(!_0x37333f[_0xac4e('0x37')][_0xac4e('0x3e')](_0xac4e('0x59'))){_0x24173c['limit']=qs[_0xac4e('0x20')](_0x37333f[_0xac4e('0x37')][_0xac4e('0x20')]);_0x24173c[_0xac4e('0x1e')]=qs[_0xac4e('0x1e')](_0x37333f[_0xac4e('0x37')][_0xac4e('0x1e')]);}_0x24173c['order']=qs[_0xac4e('0x40')](_0x37333f[_0xac4e('0x37')][_0xac4e('0x40')]);_0x24173c[_0xac4e('0x41')]=qs[_0xac4e('0x39')](_[_0xac4e('0x42')](_0x37333f['query'],_0x46bf79[_0xac4e('0x39')]));_0x24173c[_0xac4e('0x41')][_0xac4e('0x5a')]=_0x354d5c['id'];if(_0x37333f[_0xac4e('0x37')]['filter']){_0x24173c[_0xac4e('0x41')]=_[_0xac4e('0x44')](_0x24173c[_0xac4e('0x41')],{'$or':_['map'](_0x24173c['attributes'],function(_0xe4196b){var _0x527028={};_0x527028[_0xe4196b]={'$like':'%'+_0x37333f[_0xac4e('0x37')][_0xac4e('0x43')]+'%'};return _0x527028;})});}_0x24173c=_[_0xac4e('0x44')]({},_0x24173c,_0x37333f[_0xac4e('0x4a')]);return db[_0xac4e('0x58')][_0xac4e('0x47')](_0x24173c);}})['then'](function(_0x2d631f){if(_0x2d631f){return db[_0xac4e('0x5b')]['findAndCountAll']({'where':{'id':_[_0xac4e('0x30')](_0x2d631f,_0xac4e('0x5c')),'role':_0xac4e('0x5d')},'attributes':['id','name',_0xac4e('0x5e'),_0xac4e('0x5f'),_0xac4e('0x60')]});}})[_0xac4e('0x27')](function(_0x3860f4){if(_0x3860f4){return{'count':_0x3860f4[_0xac4e('0x21')],'rows':_['map'](_0x3860f4[_0xac4e('0x48')],function(_0x426775){return{'membername':_0x426775[_0xac4e('0x2f')],'UserId':_0x426775['id'],'queue_name':_0x5662b6['name'],'OpenchannelQueueId':_0x5662b6['id'],'interface':util['format']('%s/%s',_0xac4e('0x61'),_0x426775[_0xac4e('0x2f')]),'penalty':0x0,'paused':_0x426775[_0xac4e('0x5e')],'createdAt':_0x426775[_0xac4e('0x60')],'updatedAt':_0x426775[_0xac4e('0x5f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xac4e('0x27')](respondWithFilteredResult(_0x163297,_0x24173c))[_0xac4e('0x52')](handleError(_0x163297,null));};exports[_0xac4e('0x62')]=function(_0x4ed56d,_0x1c81ba,_0x4599a0){var _0x5597e0={};var _0x587d89={};var _0x384c69;var _0x412845;return db[_0xac4e('0x31')][_0xac4e('0x57')]({'where':{'id':_0x4ed56d[_0xac4e('0x54')]['id']}})['then'](handleEntityNotFound(_0x1c81ba,null))[_0xac4e('0x27')](function(_0x3634be){if(_0x3634be){_0x384c69=_0x3634be;_0x587d89[_0xac4e('0x36')]=_[_0xac4e('0x38')](db[_0xac4e('0x63')][_0xac4e('0x32')]);_0x587d89[_0xac4e('0x37')]=_['keys'](_0x4ed56d[_0xac4e('0x37')]);_0x587d89[_0xac4e('0x39')]=_['intersection'](_0x587d89[_0xac4e('0x36')],_0x587d89[_0xac4e('0x37')]);_0x5597e0['attributes']=_[_0xac4e('0x3a')](_0x587d89[_0xac4e('0x36')],qs['fields'](_0x4ed56d[_0xac4e('0x37')][_0xac4e('0x3c')]));_0x5597e0['attributes']=_0x5597e0[_0xac4e('0x3b')][_0xac4e('0x3d')]?_0x5597e0[_0xac4e('0x3b')]:_0x587d89['model'];_0x5597e0[_0xac4e('0x3f')]=qs[_0xac4e('0x40')](_0x4ed56d[_0xac4e('0x37')][_0xac4e('0x40')]);_0x5597e0[_0xac4e('0x41')]=qs[_0xac4e('0x39')](_[_0xac4e('0x42')](_0x4ed56d[_0xac4e('0x37')],_0x587d89[_0xac4e('0x39')]));if(_0x4ed56d['query'][_0xac4e('0x43')]){_0x5597e0['where']=_[_0xac4e('0x44')](_0x5597e0[_0xac4e('0x41')],{'$or':_['map'](_0x5597e0['attributes'],function(_0x39d2f4){var _0x4b5923={};_0x4b5923[_0x39d2f4]={'$like':'%'+_0x4ed56d[_0xac4e('0x37')][_0xac4e('0x43')]+'%'};return _0x4b5923;})});}_0x5597e0=_['merge']({},_0x5597e0,_0x4ed56d[_0xac4e('0x4a')]);return _0x384c69['getTeams'](_0x5597e0);}})['then'](function(_0x1d9d21){if(_0x1d9d21){_0x412845=_0x1d9d21[_0xac4e('0x3d')];if(!_0x4ed56d['query'][_0xac4e('0x3e')](_0xac4e('0x59'))){_0x5597e0[_0xac4e('0x20')]=qs[_0xac4e('0x20')](_0x4ed56d[_0xac4e('0x37')][_0xac4e('0x20')]);_0x5597e0[_0xac4e('0x1e')]=qs[_0xac4e('0x1e')](_0x4ed56d[_0xac4e('0x37')][_0xac4e('0x1e')]);}return _0x384c69[_0xac4e('0x62')](_0x5597e0);}})[_0xac4e('0x27')](function(_0x4876f7){if(_0x4876f7){return _0x4876f7?{'count':_0x412845,'rows':_0x4876f7}:null;}})[_0xac4e('0x27')](respondWithResult(_0x1c81ba,null))['catch'](handleError(_0x1c81ba,null));};exports[_0xac4e('0x64')]=function(_0x223e07,_0x10aaad,_0x359eba){var _0x476474=_0x223e07[_0xac4e('0x4d')][_0xac4e('0x65')];return db[_0xac4e('0x63')][_0xac4e('0x47')]({'where':{'id':_0x476474},'attributes':['id'],'include':[{'model':db[_0xac4e('0x5b')],'as':'Agents','attributes':['id',_0xac4e('0x2f'),'online',_0xac4e('0x66'),'interface'],'raw':!![]}]})['then'](function(_0x31f224){if(_0x31f224){var _0x45eb16=_[_0xac4e('0x67')](_0x31f224,function(_0x334568){var _0x13a286=_0x334568['get']({'plain':!![]});return _0x13a286[_0xac4e('0x68')];});return db['OpenchannelQueue'][_0xac4e('0x4b')]({'where':{'id':_0x223e07[_0xac4e('0x54')]['id']}})[_0xac4e('0x27')](function(_0x28c17b){return db['sequelize'][_0xac4e('0x69')](function(_0x3ced9c){return _0x28c17b[_0xac4e('0x64')](_0x476474,{'transaction':_0x3ced9c})[_0xac4e('0x27')](function(){return BPromise[_0xac4e('0x6a')](_0x45eb16,function(_0x2f662d){return db['UserOpenchannelQueue'][_0xac4e('0x6b')]({'where':{'UserId':_0x2f662d['id'],'OpenchannelQueueId':_0x223e07['params']['id']},'transaction':_0x3ced9c});});})['then'](function(){_0x45eb16[_0xac4e('0x6c')](function(_0xc18ef2){socket['emit'](_0xac4e('0x6d'),{'UserId':_0xc18ef2['id'],'OpenchannelQueueId':_0x28c17b['id']});});});});});}})['then'](respondWithStatusCode(_0x10aaad,null))[_0xac4e('0x52')](handleError(_0x10aaad,null));};exports['removeTeams']=function(_0x45eb5e,_0x55d9b5,_0x544edd){return db[_0xac4e('0x63')][_0xac4e('0x47')]({'where':{'id':_0x45eb5e['query'][_0xac4e('0x65')]},'attributes':['id'],'include':[{'model':db[_0xac4e('0x5b')],'as':_0xac4e('0x68'),'attributes':['id'],'raw':!![]}]})[_0xac4e('0x27')](handleEntityNotFound(_0x55d9b5,null))['then'](function(_0x4bc2cd){var _0x503cfd=_[_0xac4e('0x30')](_0x4bc2cd,'id');var _0x2fcae2=[];var _0x5f4185=[];var _0x3f5d36=squel[_0xac4e('0x6e')]();_0x3f5d36[_0xac4e('0x6f')](_0xac4e('0x70'))[_0xac4e('0x71')](_0xac4e('0x72'),'tq')['join'](_0xac4e('0x73'),'ut',_0xac4e('0x74'))[_0xac4e('0x41')](_0xac4e('0x75'),_0x45eb5e[_0xac4e('0x54')]['id']);for(var _0x1ea500=0x0;_0x1ea500<_0x4bc2cd[_0xac4e('0x3d')];_0x1ea500+=0x1){let _0x1ff319=_0x4bc2cd[_0x1ea500];for(var _0x398b1e=0x0;_0x398b1e<_0x1ff319['Agents'][_0xac4e('0x3d')];_0x398b1e+=0x1){let _0x58e45c=_0x1ff319['Agents'][_0x398b1e];var _0x3214d9=_0x3f5d36[_0xac4e('0x76')]();_0x3214d9['where']('ut.UserId\x20=\x20?',_0x58e45c['id']);_0x5f4185[_0xac4e('0x77')](db[_0xac4e('0x78')][_0xac4e('0x37')](_0x3214d9['toString'](),{'type':db[_0xac4e('0x78')][_0xac4e('0x79')][_0xac4e('0x7a')]})['then'](function(_0x1bd804){if(_0x1bd804[_0xac4e('0x3d')]===0x1){return _0x58e45c['id'];}else{var _0xbed229=_[_0xac4e('0x7b')](_[_0xac4e('0x30')](_0x1bd804,'TeamId'),function(_0x55e8af){return _[_0xac4e('0x7c')](_0x503cfd,_0x55e8af);});if(_0xbed229){return _0x58e45c['id'];}}}));}}return BPromise[_0xac4e('0x7d')](_0x5f4185)[_0xac4e('0x27')](function(_0x2e988f){_0x2fcae2=_(_0x2fcae2)[_0xac4e('0x7e')](_0x2e988f)[_0xac4e('0x7f')]()['value']();return db['OpenchannelQueue'][_0xac4e('0x4b')]({'where':{'id':_0x45eb5e[_0xac4e('0x54')]['id']}})[_0xac4e('0x27')](function(_0x30c643){return db[_0xac4e('0x78')][_0xac4e('0x69')](function(_0x2b4ac1){return _0x30c643[_0xac4e('0x80')](_0x45eb5e[_0xac4e('0x37')][_0xac4e('0x65')],{'transaction':_0x2b4ac1})[_0xac4e('0x27')](function(){if(!_[_0xac4e('0x81')](_0x2fcae2)){return _0x30c643[_0xac4e('0x82')](_0x2fcae2,{'transaction':_0x2b4ac1});}})[_0xac4e('0x27')](function(){_0x2fcae2['forEach'](function(_0x2dab05){socket['emit'](_0xac4e('0x83'),{'UserId':_0x2dab05,'OpenchannelQueueId':_0x30c643['id']});});});});});});})[_0xac4e('0x27')](respondWithStatusCode(_0x55d9b5,null))[_0xac4e('0x52')](handleError(_0x55d9b5,null));};exports['addAgents']=function(_0x4b6f75,_0x160f84,_0x132c8e){return db[_0xac4e('0x31')][_0xac4e('0x4b')]({'where':{'id':_0x4b6f75[_0xac4e('0x54')]['id']}})[_0xac4e('0x27')](handleEntityNotFound(_0x160f84,null))[_0xac4e('0x27')](function(_0x48a450){if(_0x48a450){return _0x48a450[_0xac4e('0x84')](_0x4b6f75[_0xac4e('0x4d')][_0xac4e('0x65')],_[_0xac4e('0x85')](_0x4b6f75[_0xac4e('0x4d')],['ids','id'])||{})[_0xac4e('0x86')](function(_0x16f037){for(var _0x48dcd8=0x0;_0x48dcd8<_0x4b6f75[_0xac4e('0x4d')][_0xac4e('0x65')][_0xac4e('0x3d')];_0x48dcd8+=0x1){socket[_0xac4e('0x87')]('userOpenchannelQueue:save',{'UserId':Number(_0x4b6f75[_0xac4e('0x4d')][_0xac4e('0x65')][_0x48dcd8]),'OpenchannelQueueId':Number(_0x4b6f75[_0xac4e('0x54')]['id'])});}return _0x16f037;});}})[_0xac4e('0x27')](respondWithResult(_0x160f84,null))[_0xac4e('0x52')](handleError(_0x160f84,null));};exports[_0xac4e('0x82')]=function(_0x45169d,_0x4df8be,_0x44576b){return db[_0xac4e('0x31')][_0xac4e('0x4b')]({'where':{'id':_0x45169d['params']['id']}})[_0xac4e('0x27')](handleEntityNotFound(_0x4df8be,null))[_0xac4e('0x27')](function(_0x4908df){if(_0x4908df){return _0x4908df['removeAgents'](_0x45169d['query'][_0xac4e('0x65')])['then'](function(){if(_['isArray'](_0x45169d['query'][_0xac4e('0x65')])){for(var _0x36bfea=0x0;_0x36bfea<_0x45169d[_0xac4e('0x37')][_0xac4e('0x65')][_0xac4e('0x3d')];_0x36bfea+=0x1){socket['emit'](_0xac4e('0x83'),{'UserId':Number(_0x45169d[_0xac4e('0x37')][_0xac4e('0x65')][_0x36bfea]),'OpenchannelQueueId':Number(_0x45169d[_0xac4e('0x54')]['id'])});}}else{socket[_0xac4e('0x87')](_0xac4e('0x83'),{'UserId':Number(_0x45169d[_0xac4e('0x37')][_0xac4e('0x65')]),'OpenchannelQueueId':Number(_0x45169d['params']['id'])});}});}})[_0xac4e('0x27')](respondWithStatusCode(_0x4df8be,null))[_0xac4e('0x52')](handleError(_0x4df8be,null));};exports[_0xac4e('0x88')]=function(_0x168dff,_0x3639e6,_0x10ac22){var _0x4c74a0={};var _0x11a13f={};var _0x4105af;var _0x317eca;return db[_0xac4e('0x31')]['findOne']({'where':{'id':_0x168dff[_0xac4e('0x54')]['id']}})['then'](handleEntityNotFound(_0x3639e6,null))[_0xac4e('0x27')](function(_0x2099a0){if(_0x2099a0){_0x4105af=_0x2099a0;_0x11a13f[_0xac4e('0x36')]=_[_0xac4e('0x38')](db[_0xac4e('0x5b')][_0xac4e('0x32')]);_0x11a13f['query']=_[_0xac4e('0x38')](_0x168dff['query']);_0x11a13f[_0xac4e('0x39')]=_[_0xac4e('0x3a')](_0x11a13f[_0xac4e('0x36')],_0x11a13f['query']);_0x4c74a0[_0xac4e('0x3b')]=_[_0xac4e('0x3a')](_0x11a13f[_0xac4e('0x36')],qs['fields'](_0x168dff[_0xac4e('0x37')][_0xac4e('0x3c')]));_0x4c74a0['attributes']=_0x4c74a0[_0xac4e('0x3b')][_0xac4e('0x3d')]?_0x4c74a0[_0xac4e('0x3b')]:_0x11a13f[_0xac4e('0x36')];_0x4c74a0['order']=qs[_0xac4e('0x40')](_0x168dff[_0xac4e('0x37')][_0xac4e('0x40')]);_0x4c74a0['where']=qs[_0xac4e('0x39')](_[_0xac4e('0x42')](_0x168dff[_0xac4e('0x37')],_0x11a13f[_0xac4e('0x39')]));if(_0x168dff[_0xac4e('0x37')][_0xac4e('0x43')]){_0x4c74a0[_0xac4e('0x41')]=_[_0xac4e('0x44')](_0x4c74a0[_0xac4e('0x41')],{'$or':_[_0xac4e('0x30')](_0x4c74a0[_0xac4e('0x3b')],function(_0x1ba38b){var _0xb357a8={};_0xb357a8[_0x1ba38b]={'$like':'%'+_0x168dff[_0xac4e('0x37')][_0xac4e('0x43')]+'%'};return _0xb357a8;})});}_0x4c74a0=_['merge']({},_0x4c74a0,_0x168dff['options']);return _0x4105af[_0xac4e('0x88')](_0x4c74a0);}})[_0xac4e('0x27')](function(_0x263208){if(_0x263208){_0x317eca=_0x263208[_0xac4e('0x3d')];if(!_0x168dff[_0xac4e('0x37')][_0xac4e('0x3e')](_0xac4e('0x59'))){_0x4c74a0['limit']=qs['limit'](_0x168dff[_0xac4e('0x37')][_0xac4e('0x20')]);_0x4c74a0[_0xac4e('0x1e')]=qs[_0xac4e('0x1e')](_0x168dff[_0xac4e('0x37')]['offset']);}return _0x4105af[_0xac4e('0x88')](_0x4c74a0);}})[_0xac4e('0x27')](function(_0x6f2555){if(_0x6f2555){return _0x6f2555?{'count':_0x317eca,'rows':_0x6f2555}:null;}})[_0xac4e('0x27')](respondWithResult(_0x3639e6,null))['catch'](handleError(_0x3639e6,null));};
\ No newline at end of file
+var _0xb0f1=['OpenchannelQueueId\x20=\x20?','clone','push','toString','QueryTypes','SELECT','every','TeamId','all','compact','value','isEmpty','removeAgents','userOpenchannelQueue:remove','addAgents','omit','spread','emit','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','./openchannelQueue.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','get','OpenchannelQueues','UserProfileResource','stack','name','send','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','OpenchannelQueue','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','describe','length','OpenchannelQueueId','UserOpenchannelQueue','User','UserId','agent','openchannelPause','updatedAt','createdAt','format','SIP','findOne','Team','getTeams','ids','Agents','voicePause','interface','flatMap','sequelize','transaction','addTeams','each','findOrCreate','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_openchannel_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId'];(function(_0x1d2e8d,_0x37b997){var _0x468e8b=function(_0x4a0a30){while(--_0x4a0a30){_0x1d2e8d['push'](_0x1d2e8d['shift']());}};_0x468e8b(++_0x37b997);}(_0xb0f1,0x1be));var _0x1b0f=function(_0x51ac09,_0x383098){_0x51ac09=_0x51ac09-0x0;var _0x3f827d=_0xb0f1[_0x51ac09];return _0x3f827d;};'use strict';var emlformat=require(_0x1b0f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1b0f('0x1'));var jsonpatch=require(_0x1b0f('0x2'));var rp=require(_0x1b0f('0x3'));var moment=require(_0x1b0f('0x4'));var BPromise=require(_0x1b0f('0x5'));var Mustache=require(_0x1b0f('0x6'));var util=require(_0x1b0f('0x7'));var path=require(_0x1b0f('0x8'));var sox=require(_0x1b0f('0x9'));var csv=require(_0x1b0f('0xa'));var ejs=require(_0x1b0f('0xb'));var fs=require('fs');var fs_extra=require(_0x1b0f('0xc'));var _=require('lodash');var squel=require(_0x1b0f('0xd'));var crypto=require(_0x1b0f('0xe'));var jsforce=require(_0x1b0f('0xf'));var deskjs=require(_0x1b0f('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1b0f('0x11'));var Redis=require(_0x1b0f('0x12'));var authService=require(_0x1b0f('0x13'));var qs=require(_0x1b0f('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x1b0f('0x15'))('api');var utils=require(_0x1b0f('0x16'));var config=require(_0x1b0f('0x17'));var licenseUtil=require(_0x1b0f('0x18'));var db=require(_0x1b0f('0x19'))['db'];config['redis']=_['defaults'](config[_0x1b0f('0x1a')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1b0f('0x1a')]));require(_0x1b0f('0x1b'))['register'](socket);function respondWithStatusCode(_0x5218af,_0x5afc88){_0x5afc88=_0x5afc88||0xcc;return function(_0x58fea7){if(_0x58fea7){return _0x5218af[_0x1b0f('0x1c')](_0x5afc88);}return _0x5218af[_0x1b0f('0x1d')](_0x5afc88)[_0x1b0f('0x1e')]();};}function respondWithResult(_0xdd697a,_0x24e2bf){_0x24e2bf=_0x24e2bf||0xc8;return function(_0x28c160){if(_0x28c160){return _0xdd697a[_0x1b0f('0x1d')](_0x24e2bf)[_0x1b0f('0x1f')](_0x28c160);}};}function respondWithFilteredResult(_0x385625,_0x54f674){return function(_0x4c1073){if(_0x4c1073){var _0x3177e6=typeof _0x54f674[_0x1b0f('0x20')]===_0x1b0f('0x21')&&typeof _0x54f674[_0x1b0f('0x22')]===_0x1b0f('0x21');var _0x5503b4=_0x4c1073[_0x1b0f('0x23')];var _0x2c273f=_0x3177e6?0x0:_0x54f674[_0x1b0f('0x20')];var _0x3d3310=_0x3177e6?_0x4c1073[_0x1b0f('0x23')]:_0x54f674[_0x1b0f('0x20')]+_0x54f674[_0x1b0f('0x22')];var _0x465e7d;if(_0x3d3310>=_0x5503b4){_0x3d3310=_0x5503b4;_0x465e7d=0xc8;}else{_0x465e7d=0xce;}_0x385625[_0x1b0f('0x1d')](_0x465e7d);return _0x385625[_0x1b0f('0x24')]('Content-Range',_0x2c273f+'-'+_0x3d3310+'/'+_0x5503b4)[_0x1b0f('0x1f')](_0x4c1073);}return null;};}function patchUpdates(_0x1a4fb8){return function(_0x40bd44){try{jsonpatch[_0x1b0f('0x25')](_0x40bd44,_0x1a4fb8,!![]);}catch(_0x20ccfd){return BPromise[_0x1b0f('0x26')](_0x20ccfd);}return _0x40bd44[_0x1b0f('0x27')]();};}function saveUpdates(_0x525eae,_0x3770b7){return function(_0x3d51dd){if(_0x3d51dd){return _0x3d51dd[_0x1b0f('0x28')](_0x525eae)[_0x1b0f('0x29')](function(_0x1b61ed){return _0x1b61ed;});}return null;};}function removeEntity(_0x2f7cea,_0x3d50eb){return function(_0x2aa0d3){if(_0x2aa0d3){return _0x2aa0d3['destroy']()[_0x1b0f('0x29')](function(){var _0x44e81f=_0x2aa0d3[_0x1b0f('0x2a')]({'plain':!![]});var _0x3be3a8=_0x1b0f('0x2b');return db[_0x1b0f('0x2c')]['destroy']({'where':{'type':_0x3be3a8,'resourceId':_0x44e81f['id']}})[_0x1b0f('0x29')](function(){return _0x2aa0d3;});})[_0x1b0f('0x29')](function(){_0x2f7cea[_0x1b0f('0x1d')](0xcc)[_0x1b0f('0x1e')]();});}};}function handleEntityNotFound(_0x24584b,_0x25da34){return function(_0x41ec84){if(!_0x41ec84){_0x24584b[_0x1b0f('0x1c')](0x194);}return _0x41ec84;};}function handleError(_0xdf1b4,_0xc05529){_0xc05529=_0xc05529||0x1f4;return function(_0x1062f4){logger['error'](_0x1062f4[_0x1b0f('0x2d')]);if(_0x1062f4['name']){delete _0x1062f4[_0x1b0f('0x2e')];}_0xdf1b4[_0x1b0f('0x1d')](_0xc05529)[_0x1b0f('0x2f')](_0x1062f4);};}exports['index']=function(_0x354428,_0x1868b8){var _0x1d04fc={},_0x2d229e={},_0x394ee8={'count':0x0,'rows':[]};var _0x48fece=_[_0x1b0f('0x30')](db['OpenchannelQueue'][_0x1b0f('0x31')],function(_0xd642cd){return{'name':_0xd642cd['fieldName'],'type':_0xd642cd[_0x1b0f('0x32')][_0x1b0f('0x33')]};});_0x2d229e[_0x1b0f('0x34')]=_[_0x1b0f('0x30')](_0x48fece,'name');_0x2d229e[_0x1b0f('0x35')]=_[_0x1b0f('0x36')](_0x354428[_0x1b0f('0x35')]);_0x2d229e[_0x1b0f('0x37')]=_[_0x1b0f('0x38')](_0x2d229e[_0x1b0f('0x34')],_0x2d229e[_0x1b0f('0x35')]);_0x1d04fc[_0x1b0f('0x39')]=_[_0x1b0f('0x38')](_0x2d229e[_0x1b0f('0x34')],qs[_0x1b0f('0x3a')](_0x354428['query'][_0x1b0f('0x3a')]));_0x1d04fc['attributes']=_0x1d04fc[_0x1b0f('0x39')]['length']?_0x1d04fc['attributes']:_0x2d229e[_0x1b0f('0x34')];if(!_0x354428['query'][_0x1b0f('0x3b')](_0x1b0f('0x3c'))){_0x1d04fc[_0x1b0f('0x22')]=qs[_0x1b0f('0x22')](_0x354428['query']['limit']);_0x1d04fc[_0x1b0f('0x20')]=qs[_0x1b0f('0x20')](_0x354428[_0x1b0f('0x35')][_0x1b0f('0x20')]);}_0x1d04fc[_0x1b0f('0x3d')]=qs['sort'](_0x354428[_0x1b0f('0x35')][_0x1b0f('0x3e')]);_0x1d04fc[_0x1b0f('0x3f')]=qs[_0x1b0f('0x37')](_[_0x1b0f('0x40')](_0x354428[_0x1b0f('0x35')],_0x2d229e['filters']),_0x48fece);if(_0x354428[_0x1b0f('0x35')][_0x1b0f('0x41')]){_0x1d04fc[_0x1b0f('0x3f')]=_[_0x1b0f('0x42')](_0x1d04fc[_0x1b0f('0x3f')],{'$or':_[_0x1b0f('0x30')](_0x48fece,function(_0x14ff1a){if(_0x14ff1a['type']!==_0x1b0f('0x43')){var _0x1c8dde={};_0x1c8dde[_0x14ff1a[_0x1b0f('0x2e')]]={'$like':'%'+_0x354428[_0x1b0f('0x35')]['filter']+'%'};return _0x1c8dde;}})});}_0x1d04fc=_[_0x1b0f('0x42')]({},_0x1d04fc,_0x354428[_0x1b0f('0x44')]);var _0x28e3c4={'where':_0x1d04fc[_0x1b0f('0x3f')]};return db[_0x1b0f('0x45')][_0x1b0f('0x23')](_0x28e3c4)[_0x1b0f('0x29')](function(_0x1da925){_0x394ee8[_0x1b0f('0x23')]=_0x1da925;if(_0x354428[_0x1b0f('0x35')][_0x1b0f('0x46')]){_0x1d04fc[_0x1b0f('0x47')]=[{'all':!![]}];}return db['OpenchannelQueue'][_0x1b0f('0x48')](_0x1d04fc);})[_0x1b0f('0x29')](function(_0x573288){_0x394ee8[_0x1b0f('0x49')]=_0x573288;return _0x394ee8;})[_0x1b0f('0x29')](respondWithFilteredResult(_0x1868b8,_0x1d04fc))[_0x1b0f('0x4a')](handleError(_0x1868b8,null));};exports[_0x1b0f('0x4b')]=function(_0xd1fe49,_0x1d169c){var _0x5e2d3b={'raw':!![],'where':{'id':_0xd1fe49[_0x1b0f('0x4c')]['id']}},_0x4aeda={};_0x4aeda['model']=_[_0x1b0f('0x36')](db[_0x1b0f('0x45')][_0x1b0f('0x31')]);_0x4aeda[_0x1b0f('0x35')]=_[_0x1b0f('0x36')](_0xd1fe49[_0x1b0f('0x35')]);_0x4aeda['filters']=_[_0x1b0f('0x38')](_0x4aeda[_0x1b0f('0x34')],_0x4aeda[_0x1b0f('0x35')]);_0x5e2d3b[_0x1b0f('0x39')]=_[_0x1b0f('0x38')](_0x4aeda['model'],qs['fields'](_0xd1fe49[_0x1b0f('0x35')]['fields']));_0x5e2d3b[_0x1b0f('0x39')]=_0x5e2d3b['attributes']['length']?_0x5e2d3b[_0x1b0f('0x39')]:_0x4aeda[_0x1b0f('0x34')];if(_0xd1fe49[_0x1b0f('0x35')][_0x1b0f('0x46')]){_0x5e2d3b[_0x1b0f('0x47')]=[{'all':!![]}];}_0x5e2d3b=_[_0x1b0f('0x42')]({},_0x5e2d3b,_0xd1fe49['options']);return db[_0x1b0f('0x45')][_0x1b0f('0x4d')](_0x5e2d3b)[_0x1b0f('0x29')](handleEntityNotFound(_0x1d169c,null))[_0x1b0f('0x29')](respondWithResult(_0x1d169c,null))['catch'](handleError(_0x1d169c,null));};exports[_0x1b0f('0x4e')]=function(_0x37ac40,_0x577030){return db[_0x1b0f('0x45')][_0x1b0f('0x4e')](_0x37ac40[_0x1b0f('0x4f')],{})[_0x1b0f('0x29')](function(_0x432492){var _0x49f6b9=_0x37ac40[_0x1b0f('0x50')]['get']({'plain':!![]});if(!_0x49f6b9)throw new Error(_0x1b0f('0x51'));if(_0x49f6b9[_0x1b0f('0x52')]===_0x1b0f('0x50')){var _0x88cc0c=_0x432492['get']({'plain':!![]});var _0x264d59='OpenchannelQueues';return db[_0x1b0f('0x53')][_0x1b0f('0x4d')]({'where':{'name':_0x264d59,'userProfileId':_0x49f6b9[_0x1b0f('0x54')]},'raw':!![]})[_0x1b0f('0x29')](function(_0x12da16){if(_0x12da16&&_0x12da16['autoAssociation']===0x0){return db[_0x1b0f('0x2c')][_0x1b0f('0x4e')]({'name':_0x88cc0c[_0x1b0f('0x2e')],'resourceId':_0x88cc0c['id'],'type':_0x12da16['name'],'sectionId':_0x12da16['id']},{})[_0x1b0f('0x29')](function(){return _0x432492;});}else{return _0x432492;}})[_0x1b0f('0x4a')](function(_0x4bc81a){logger[_0x1b0f('0x55')](_0x1b0f('0x56'),_0x4bc81a);throw _0x4bc81a;});}return _0x432492;})[_0x1b0f('0x29')](respondWithResult(_0x577030,0xc9))[_0x1b0f('0x4a')](handleError(_0x577030,null));};exports[_0x1b0f('0x28')]=function(_0x38df47,_0x3c3887){if(_0x38df47[_0x1b0f('0x4f')]['id']){delete _0x38df47[_0x1b0f('0x4f')]['id'];}return db[_0x1b0f('0x45')][_0x1b0f('0x4d')]({'where':{'id':_0x38df47[_0x1b0f('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3c3887,null))[_0x1b0f('0x29')](saveUpdates(_0x38df47['body'],null))[_0x1b0f('0x29')](respondWithResult(_0x3c3887,null))[_0x1b0f('0x4a')](handleError(_0x3c3887,null));};exports[_0x1b0f('0x57')]=function(_0x1e9cb6,_0x248aa0){return db['OpenchannelQueue'][_0x1b0f('0x4d')]({'where':{'id':_0x1e9cb6['params']['id']}})['then'](handleEntityNotFound(_0x248aa0,null))[_0x1b0f('0x29')](removeEntity(_0x248aa0,null))[_0x1b0f('0x4a')](handleError(_0x248aa0,null));};exports[_0x1b0f('0x58')]=function(_0x3b577c,_0x437655){return db[_0x1b0f('0x45')][_0x1b0f('0x58')]()['then'](respondWithResult(_0x437655,null))[_0x1b0f('0x4a')](handleError(_0x437655,null));};exports['getMembers']=function(_0x4c6225,_0x122ac6,_0x331d6d){var _0x48e445={'raw':!![],'where':{}},_0x13453e={},_0x2d62df;return db[_0x1b0f('0x45')]['findOne']({'where':{'id':_0x4c6225[_0x1b0f('0x4c')]['id']}})[_0x1b0f('0x29')](handleEntityNotFound(_0x122ac6,null))[_0x1b0f('0x29')](function(_0x404f33){if(_0x404f33){_0x2d62df=_0x404f33['get']({'plain':!![]});_0x13453e['model']=_['keys'](db['UserOpenchannelQueue'][_0x1b0f('0x31')]);_0x13453e[_0x1b0f('0x35')]=_[_0x1b0f('0x36')](_0x4c6225[_0x1b0f('0x35')]);_0x13453e[_0x1b0f('0x37')]=_[_0x1b0f('0x38')](_0x13453e['model'],_0x13453e[_0x1b0f('0x35')]);_0x48e445[_0x1b0f('0x39')]=_[_0x1b0f('0x38')](_0x13453e[_0x1b0f('0x34')],qs[_0x1b0f('0x3a')](_0x4c6225[_0x1b0f('0x35')][_0x1b0f('0x3a')]));_0x48e445[_0x1b0f('0x39')]=_0x48e445[_0x1b0f('0x39')][_0x1b0f('0x59')]?_0x48e445[_0x1b0f('0x39')]:_0x13453e[_0x1b0f('0x34')];if(!_0x4c6225[_0x1b0f('0x35')][_0x1b0f('0x3b')](_0x1b0f('0x3c'))){_0x48e445[_0x1b0f('0x22')]=qs[_0x1b0f('0x22')](_0x4c6225[_0x1b0f('0x35')]['limit']);_0x48e445['offset']=qs[_0x1b0f('0x20')](_0x4c6225[_0x1b0f('0x35')][_0x1b0f('0x20')]);}_0x48e445['order']=qs[_0x1b0f('0x3e')](_0x4c6225[_0x1b0f('0x35')][_0x1b0f('0x3e')]);_0x48e445[_0x1b0f('0x3f')]=qs['filters'](_[_0x1b0f('0x40')](_0x4c6225[_0x1b0f('0x35')],_0x13453e['filters']));_0x48e445[_0x1b0f('0x3f')][_0x1b0f('0x5a')]=_0x404f33['id'];if(_0x4c6225[_0x1b0f('0x35')][_0x1b0f('0x41')]){_0x48e445[_0x1b0f('0x3f')]=_['merge'](_0x48e445['where'],{'$or':_[_0x1b0f('0x30')](_0x48e445['attributes'],function(_0x3d004a){var _0x2c26b4={};_0x2c26b4[_0x3d004a]={'$like':'%'+_0x4c6225[_0x1b0f('0x35')][_0x1b0f('0x41')]+'%'};return _0x2c26b4;})});}_0x48e445=_[_0x1b0f('0x42')]({},_0x48e445,_0x4c6225['options']);return db[_0x1b0f('0x5b')][_0x1b0f('0x48')](_0x48e445);}})[_0x1b0f('0x29')](function(_0x108ae9){if(_0x108ae9){return db[_0x1b0f('0x5c')]['findAndCountAll']({'where':{'id':_[_0x1b0f('0x30')](_0x108ae9,_0x1b0f('0x5d')),'role':_0x1b0f('0x5e')},'attributes':['id',_0x1b0f('0x2e'),_0x1b0f('0x5f'),_0x1b0f('0x60'),_0x1b0f('0x61')]});}})[_0x1b0f('0x29')](function(_0x59db24){if(_0x59db24){return{'count':_0x59db24[_0x1b0f('0x23')],'rows':_[_0x1b0f('0x30')](_0x59db24[_0x1b0f('0x49')],function(_0x632682){return{'membername':_0x632682['name'],'UserId':_0x632682['id'],'queue_name':_0x2d62df[_0x1b0f('0x2e')],'OpenchannelQueueId':_0x2d62df['id'],'interface':util[_0x1b0f('0x62')]('%s/%s',_0x1b0f('0x63'),_0x632682['name']),'penalty':0x0,'paused':_0x632682[_0x1b0f('0x5f')],'createdAt':_0x632682[_0x1b0f('0x61')],'updatedAt':_0x632682[_0x1b0f('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x1b0f('0x29')](respondWithFilteredResult(_0x122ac6,_0x48e445))[_0x1b0f('0x4a')](handleError(_0x122ac6,null));};exports['getTeams']=function(_0x105e60,_0x174039,_0xba7e59){var _0x392b53={};var _0x4c1fbc={};var _0x491c02;var _0x4b3f09;return db[_0x1b0f('0x45')][_0x1b0f('0x64')]({'where':{'id':_0x105e60[_0x1b0f('0x4c')]['id']}})[_0x1b0f('0x29')](handleEntityNotFound(_0x174039,null))[_0x1b0f('0x29')](function(_0x1584ee){if(_0x1584ee){_0x491c02=_0x1584ee;_0x4c1fbc['model']=_[_0x1b0f('0x36')](db[_0x1b0f('0x65')][_0x1b0f('0x31')]);_0x4c1fbc[_0x1b0f('0x35')]=_[_0x1b0f('0x36')](_0x105e60['query']);_0x4c1fbc['filters']=_[_0x1b0f('0x38')](_0x4c1fbc[_0x1b0f('0x34')],_0x4c1fbc[_0x1b0f('0x35')]);_0x392b53[_0x1b0f('0x39')]=_['intersection'](_0x4c1fbc[_0x1b0f('0x34')],qs['fields'](_0x105e60[_0x1b0f('0x35')][_0x1b0f('0x3a')]));_0x392b53[_0x1b0f('0x39')]=_0x392b53[_0x1b0f('0x39')][_0x1b0f('0x59')]?_0x392b53[_0x1b0f('0x39')]:_0x4c1fbc[_0x1b0f('0x34')];_0x392b53[_0x1b0f('0x3d')]=qs['sort'](_0x105e60[_0x1b0f('0x35')][_0x1b0f('0x3e')]);_0x392b53['where']=qs[_0x1b0f('0x37')](_['pick'](_0x105e60[_0x1b0f('0x35')],_0x4c1fbc[_0x1b0f('0x37')]));if(_0x105e60[_0x1b0f('0x35')][_0x1b0f('0x41')]){_0x392b53[_0x1b0f('0x3f')]=_['merge'](_0x392b53[_0x1b0f('0x3f')],{'$or':_[_0x1b0f('0x30')](_0x392b53[_0x1b0f('0x39')],function(_0x517aef){var _0x4bb697={};_0x4bb697[_0x517aef]={'$like':'%'+_0x105e60[_0x1b0f('0x35')][_0x1b0f('0x41')]+'%'};return _0x4bb697;})});}_0x392b53=_[_0x1b0f('0x42')]({},_0x392b53,_0x105e60['options']);return _0x491c02[_0x1b0f('0x66')](_0x392b53);}})[_0x1b0f('0x29')](function(_0x4ef9bb){if(_0x4ef9bb){_0x4b3f09=_0x4ef9bb[_0x1b0f('0x59')];if(!_0x105e60[_0x1b0f('0x35')][_0x1b0f('0x3b')](_0x1b0f('0x3c'))){_0x392b53[_0x1b0f('0x22')]=qs[_0x1b0f('0x22')](_0x105e60[_0x1b0f('0x35')]['limit']);_0x392b53[_0x1b0f('0x20')]=qs[_0x1b0f('0x20')](_0x105e60[_0x1b0f('0x35')][_0x1b0f('0x20')]);}return _0x491c02[_0x1b0f('0x66')](_0x392b53);}})[_0x1b0f('0x29')](function(_0x52914b){if(_0x52914b){return _0x52914b?{'count':_0x4b3f09,'rows':_0x52914b}:null;}})[_0x1b0f('0x29')](respondWithResult(_0x174039,null))[_0x1b0f('0x4a')](handleError(_0x174039,null));};exports['addTeams']=function(_0x10fdee,_0xc6752d,_0x379a38){var _0xa2503b=_0x10fdee[_0x1b0f('0x4f')][_0x1b0f('0x67')];return db['Team'][_0x1b0f('0x48')]({'where':{'id':_0xa2503b},'attributes':['id'],'include':[{'model':db[_0x1b0f('0x5c')],'as':_0x1b0f('0x68'),'attributes':['id',_0x1b0f('0x2e'),'online',_0x1b0f('0x69'),_0x1b0f('0x6a')],'raw':!![]}]})[_0x1b0f('0x29')](function(_0xd72d54){if(_0xd72d54){var _0x1cb421=_[_0x1b0f('0x6b')](_0xd72d54,function(_0x349c19){var _0x8f549e=_0x349c19['get']({'plain':!![]});return _0x8f549e[_0x1b0f('0x68')];});return db[_0x1b0f('0x45')][_0x1b0f('0x4d')]({'where':{'id':_0x10fdee[_0x1b0f('0x4c')]['id']}})[_0x1b0f('0x29')](function(_0x4e60b8){return db[_0x1b0f('0x6c')][_0x1b0f('0x6d')](function(_0x447246){return _0x4e60b8[_0x1b0f('0x6e')](_0xa2503b,{'transaction':_0x447246})[_0x1b0f('0x29')](function(){return BPromise[_0x1b0f('0x6f')](_0x1cb421,function(_0x2e1c63){return db['UserOpenchannelQueue'][_0x1b0f('0x70')]({'where':{'UserId':_0x2e1c63['id'],'OpenchannelQueueId':_0x10fdee[_0x1b0f('0x4c')]['id']},'transaction':_0x447246});});})[_0x1b0f('0x29')](function(){_0x1cb421['forEach'](function(_0x1dc0be){socket['emit'](_0x1b0f('0x71'),{'UserId':_0x1dc0be['id'],'OpenchannelQueueId':_0x4e60b8['id']});});});});});}})[_0x1b0f('0x29')](respondWithStatusCode(_0xc6752d,null))[_0x1b0f('0x4a')](handleError(_0xc6752d,null));};exports[_0x1b0f('0x72')]=function(_0x3157bc,_0x35d1d8,_0x57bad2){return db['Team'][_0x1b0f('0x48')]({'where':{'id':_0x3157bc[_0x1b0f('0x35')][_0x1b0f('0x67')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x35d1d8,null))[_0x1b0f('0x29')](function(_0x402ae4){var _0x5434dc=_[_0x1b0f('0x30')](_0x402ae4,'id');var _0x1fa90d=[];var _0x3868dc=[];var _0xcb25a1=squel[_0x1b0f('0x73')]();_0xcb25a1[_0x1b0f('0x74')](_0x1b0f('0x75'))[_0x1b0f('0x76')](_0x1b0f('0x77'),'tq')['join'](_0x1b0f('0x78'),'ut',_0x1b0f('0x79'))[_0x1b0f('0x3f')](_0x1b0f('0x7a'),_0x3157bc[_0x1b0f('0x4c')]['id']);for(var _0x12600d=0x0;_0x12600d<_0x402ae4['length'];_0x12600d+=0x1){let _0x24d0e2=_0x402ae4[_0x12600d];for(var _0x4e8253=0x0;_0x4e8253<_0x24d0e2[_0x1b0f('0x68')][_0x1b0f('0x59')];_0x4e8253+=0x1){let _0x55b518=_0x24d0e2['Agents'][_0x4e8253];var _0x58f3e5=_0xcb25a1[_0x1b0f('0x7b')]();_0x58f3e5[_0x1b0f('0x3f')]('ut.UserId\x20=\x20?',_0x55b518['id']);_0x3868dc[_0x1b0f('0x7c')](db[_0x1b0f('0x6c')]['query'](_0x58f3e5[_0x1b0f('0x7d')](),{'type':db[_0x1b0f('0x6c')][_0x1b0f('0x7e')][_0x1b0f('0x7f')]})[_0x1b0f('0x29')](function(_0x47fd58){if(_0x47fd58[_0x1b0f('0x59')]===0x1){return _0x55b518['id'];}else{var _0x43a1cd=_[_0x1b0f('0x80')](_[_0x1b0f('0x30')](_0x47fd58,_0x1b0f('0x81')),function(_0x303821){return _['includes'](_0x5434dc,_0x303821);});if(_0x43a1cd){return _0x55b518['id'];}}}));}}return BPromise[_0x1b0f('0x82')](_0x3868dc)[_0x1b0f('0x29')](function(_0x5b949b){_0x1fa90d=_(_0x1fa90d)['union'](_0x5b949b)[_0x1b0f('0x83')]()[_0x1b0f('0x84')]();return db['OpenchannelQueue'][_0x1b0f('0x4d')]({'where':{'id':_0x3157bc[_0x1b0f('0x4c')]['id']}})[_0x1b0f('0x29')](function(_0x399a9f){return db[_0x1b0f('0x6c')][_0x1b0f('0x6d')](function(_0xb87d35){return _0x399a9f[_0x1b0f('0x72')](_0x3157bc[_0x1b0f('0x35')][_0x1b0f('0x67')],{'transaction':_0xb87d35})['then'](function(){if(!_[_0x1b0f('0x85')](_0x1fa90d)){return _0x399a9f[_0x1b0f('0x86')](_0x1fa90d,{'transaction':_0xb87d35});}})[_0x1b0f('0x29')](function(){_0x1fa90d['forEach'](function(_0x33c8ce){socket['emit'](_0x1b0f('0x87'),{'UserId':_0x33c8ce,'OpenchannelQueueId':_0x399a9f['id']});});});});});});})[_0x1b0f('0x29')](respondWithStatusCode(_0x35d1d8,null))[_0x1b0f('0x4a')](handleError(_0x35d1d8,null));};exports['addAgents']=function(_0xdeaddb,_0x4351d0,_0x384bd9){return db[_0x1b0f('0x45')][_0x1b0f('0x4d')]({'where':{'id':_0xdeaddb[_0x1b0f('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4351d0,null))[_0x1b0f('0x29')](function(_0x2edbe7){if(_0x2edbe7){return _0x2edbe7[_0x1b0f('0x88')](_0xdeaddb[_0x1b0f('0x4f')][_0x1b0f('0x67')],_[_0x1b0f('0x89')](_0xdeaddb[_0x1b0f('0x4f')],[_0x1b0f('0x67'),'id'])||{})[_0x1b0f('0x8a')](function(_0xff4152){for(var _0x3312ac=0x0;_0x3312ac<_0xdeaddb[_0x1b0f('0x4f')][_0x1b0f('0x67')][_0x1b0f('0x59')];_0x3312ac+=0x1){socket[_0x1b0f('0x8b')](_0x1b0f('0x71'),{'UserId':Number(_0xdeaddb[_0x1b0f('0x4f')]['ids'][_0x3312ac]),'OpenchannelQueueId':Number(_0xdeaddb[_0x1b0f('0x4c')]['id'])});}return _0xff4152;});}})[_0x1b0f('0x29')](respondWithResult(_0x4351d0,null))['catch'](handleError(_0x4351d0,null));};exports[_0x1b0f('0x86')]=function(_0x4f143b,_0xed3e73,_0x1e8cf7){return db[_0x1b0f('0x45')]['find']({'where':{'id':_0x4f143b[_0x1b0f('0x4c')]['id']}})['then'](handleEntityNotFound(_0xed3e73,null))[_0x1b0f('0x29')](function(_0x162cec){if(_0x162cec){return _0x162cec[_0x1b0f('0x86')](_0x4f143b[_0x1b0f('0x35')][_0x1b0f('0x67')])[_0x1b0f('0x29')](function(){if(_[_0x1b0f('0x8c')](_0x4f143b[_0x1b0f('0x35')][_0x1b0f('0x67')])){for(var _0x13f508=0x0;_0x13f508<_0x4f143b['query'][_0x1b0f('0x67')]['length'];_0x13f508+=0x1){socket['emit'](_0x1b0f('0x87'),{'UserId':Number(_0x4f143b[_0x1b0f('0x35')][_0x1b0f('0x67')][_0x13f508]),'OpenchannelQueueId':Number(_0x4f143b[_0x1b0f('0x4c')]['id'])});}}else{socket[_0x1b0f('0x8b')]('userOpenchannelQueue:remove',{'UserId':Number(_0x4f143b['query']['ids']),'OpenchannelQueueId':Number(_0x4f143b[_0x1b0f('0x4c')]['id'])});}});}})['then'](respondWithStatusCode(_0xed3e73,null))['catch'](handleError(_0xed3e73,null));};exports['getAgents']=function(_0x4c42ba,_0x1d9873,_0x3b862c){var _0x113d5a={};var _0x5be28e={};var _0x32b597;var _0x528552;return db[_0x1b0f('0x45')][_0x1b0f('0x64')]({'where':{'id':_0x4c42ba['params']['id']}})[_0x1b0f('0x29')](handleEntityNotFound(_0x1d9873,null))[_0x1b0f('0x29')](function(_0x4a2d45){if(_0x4a2d45){_0x32b597=_0x4a2d45;_0x5be28e[_0x1b0f('0x34')]=_[_0x1b0f('0x36')](db[_0x1b0f('0x5c')][_0x1b0f('0x31')]);_0x5be28e['query']=_[_0x1b0f('0x36')](_0x4c42ba[_0x1b0f('0x35')]);_0x5be28e[_0x1b0f('0x37')]=_[_0x1b0f('0x38')](_0x5be28e[_0x1b0f('0x34')],_0x5be28e[_0x1b0f('0x35')]);_0x113d5a[_0x1b0f('0x39')]=_['intersection'](_0x5be28e[_0x1b0f('0x34')],qs['fields'](_0x4c42ba[_0x1b0f('0x35')][_0x1b0f('0x3a')]));_0x113d5a['attributes']=_0x113d5a['attributes'][_0x1b0f('0x59')]?_0x113d5a[_0x1b0f('0x39')]:_0x5be28e[_0x1b0f('0x34')];_0x113d5a[_0x1b0f('0x3d')]=qs[_0x1b0f('0x3e')](_0x4c42ba[_0x1b0f('0x35')][_0x1b0f('0x3e')]);_0x113d5a['where']=qs[_0x1b0f('0x37')](_[_0x1b0f('0x40')](_0x4c42ba[_0x1b0f('0x35')],_0x5be28e[_0x1b0f('0x37')]));if(_0x4c42ba[_0x1b0f('0x35')]['filter']){_0x113d5a[_0x1b0f('0x3f')]=_[_0x1b0f('0x42')](_0x113d5a[_0x1b0f('0x3f')],{'$or':_['map'](_0x113d5a[_0x1b0f('0x39')],function(_0x59bbce){var _0x48997f={};_0x48997f[_0x59bbce]={'$like':'%'+_0x4c42ba[_0x1b0f('0x35')]['filter']+'%'};return _0x48997f;})});}_0x113d5a=_[_0x1b0f('0x42')]({},_0x113d5a,_0x4c42ba[_0x1b0f('0x44')]);return _0x32b597[_0x1b0f('0x8d')](_0x113d5a);}})[_0x1b0f('0x29')](function(_0x2b2bf0){if(_0x2b2bf0){_0x528552=_0x2b2bf0[_0x1b0f('0x59')];if(!_0x4c42ba[_0x1b0f('0x35')][_0x1b0f('0x3b')](_0x1b0f('0x3c'))){_0x113d5a[_0x1b0f('0x22')]=qs['limit'](_0x4c42ba[_0x1b0f('0x35')][_0x1b0f('0x22')]);_0x113d5a[_0x1b0f('0x20')]=qs['offset'](_0x4c42ba[_0x1b0f('0x35')][_0x1b0f('0x20')]);}return _0x32b597['getAgents'](_0x113d5a);}})[_0x1b0f('0x29')](function(_0x251f96){if(_0x251f96){return _0x251f96?{'count':_0x528552,'rows':_0x251f96}:null;}})[_0x1b0f('0x29')](respondWithResult(_0x1d9873,null))[_0x1b0f('0x4a')](handleError(_0x1d9873,null));};
\ No newline at end of file
index 76b10f8..5369c2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce24=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelQueue'];(function(_0x2216fe,_0x53a04e){var _0x35510b=function(_0x29c1cc){while(--_0x29c1cc){_0x2216fe['push'](_0x2216fe['shift']());}};_0x35510b(++_0x53a04e);}(_0xce24,0xbb));var _0x4ce2=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xce24[_0x5447fd];return _0x15b28a;};'use strict';var EventEmitter=require(_0x4ce2('0x0'));var OpenchannelQueue=require(_0x4ce2('0x1'))['db'][_0x4ce2('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4ce2('0x3'),'afterUpdate':_0x4ce2('0x4'),'afterDestroy':_0x4ce2('0x5')};function emitEvent(_0x3e643a){return function(_0x5bc410,_0x2f8e43,_0x231364){OpenchannelQueueEvents[_0x4ce2('0x6')](_0x3e643a+':'+_0x5bc410['id'],_0x5bc410);OpenchannelQueueEvents[_0x4ce2('0x6')](_0x3e643a,_0x5bc410);_0x231364(null);};}for(var e in events){if(events[_0x4ce2('0x7')](e)){var event=events[e];OpenchannelQueue[_0x4ce2('0x8')](e,emitEvent(event));}}module[_0x4ce2('0x9')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0xf163=['events','../../mysqldb','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x2d34d6,_0x397ff9){var _0x1d3d12=function(_0x558800){while(--_0x558800){_0x2d34d6['push'](_0x2d34d6['shift']());}};_0x1d3d12(++_0x397ff9);}(_0xf163,0x1f1));var _0x3f16=function(_0x39fd11,_0x5d7883){_0x39fd11=_0x39fd11-0x0;var _0x302799=_0xf163[_0x39fd11];return _0x302799;};'use strict';var EventEmitter=require(_0x3f16('0x0'));var OpenchannelQueue=require(_0x3f16('0x1'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x3f16('0x2')](0x0);var events={'afterCreate':_0x3f16('0x3'),'afterUpdate':'update','afterDestroy':_0x3f16('0x4')};function emitEvent(_0x2696dc){return function(_0x33a062,_0x225749,_0xd85dca){OpenchannelQueueEvents[_0x3f16('0x5')](_0x2696dc+':'+_0x33a062['id'],_0x33a062);OpenchannelQueueEvents[_0x3f16('0x5')](_0x2696dc,_0x33a062);_0xd85dca(null);};}for(var e in events){if(events[_0x3f16('0x6')](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module['exports']=OpenchannelQueueEvents;
\ No newline at end of file
index ef929db..eeefa3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ba1=['exports','OpenchannelQueue','openchannel_queues','lodash','util','../../config/logger','api','moment','request-promise','rimraf','./openchannelQueue.attributes'];(function(_0x591e16,_0x5aefc1){var _0x543b35=function(_0x81e3be){while(--_0x81e3be){_0x591e16['push'](_0x591e16['shift']());}};_0x543b35(++_0x5aefc1);}(_0x3ba1,0x19a));var _0x13ba=function(_0x531bc7,_0x113e06){_0x531bc7=_0x531bc7-0x0;var _0x26547c=_0x3ba1[_0x531bc7];return _0x26547c;};'use strict';var _=require(_0x13ba('0x0'));var util=require(_0x13ba('0x1'));var logger=require(_0x13ba('0x2'))(_0x13ba('0x3'));var moment=require(_0x13ba('0x4'));var BPromise=require('bluebird');var rp=require(_0x13ba('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x13ba('0x6'));var config=require('../../config/environment');var attributes=require(_0x13ba('0x7'));module[_0x13ba('0x8')]=function(_0x5e4518,_0x26210b){return _0x5e4518['define'](_0x13ba('0x9'),attributes,{'tableName':_0x13ba('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x51fb=['path','exports','define','OpenchannelQueue','openchannel_queues','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x5f8f06,_0x3ea7f6){var _0x3a1074=function(_0x3883d9){while(--_0x3883d9){_0x5f8f06['push'](_0x5f8f06['shift']());}};_0x3a1074(++_0x3ea7f6);}(_0x51fb,0x123));var _0xb51f=function(_0x4d78b4,_0x57d6db){_0x4d78b4=_0x4d78b4-0x0;var _0x159126=_0x51fb[_0x4d78b4];return _0x159126;};'use strict';var _=require(_0xb51f('0x0'));var util=require('util');var logger=require(_0xb51f('0x1'))(_0xb51f('0x2'));var moment=require(_0xb51f('0x3'));var BPromise=require(_0xb51f('0x4'));var rp=require(_0xb51f('0x5'));var fs=require('fs');var path=require(_0xb51f('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./openchannelQueue.attributes');module[_0xb51f('0x7')]=function(_0x580565,_0x24f04a){return _0x580565[_0xb51f('0x8')](_0xb51f('0x9'),attributes,{'tableName':_0xb51f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d118cf2..804f62a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x631b=['http','defaults','redis','socket.io-emitter','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','OpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','where','attributes','limit','include','map','model','debug','stringify','catch','ShowOpenchannelQueue','find','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x183d5a,_0x2452d1){var _0x455fe8=function(_0x41fcc2){while(--_0x41fcc2){_0x183d5a['push'](_0x183d5a['shift']());}};_0x455fe8(++_0x2452d1);}(_0x631b,0xfb));var _0xb631=function(_0x5d9867,_0x5e9030){_0x5d9867=_0x5d9867-0x0;var _0x7d2118=_0x631b[_0x5d9867];return _0x7d2118;};'use strict';var _=require(_0xb631('0x0'));var util=require(_0xb631('0x1'));var moment=require('moment');var BPromise=require(_0xb631('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb631('0x3'));var db=require(_0xb631('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xb631('0x5'))(_0xb631('0x6'));var config=require(_0xb631('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xb631('0x8')]({'port':0x232a});config['redis']=_[_0xb631('0x9')](config[_0xb631('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xb631('0xb'))(new Redis(config[_0xb631('0xa')]));require('./openchannelQueue.socket')['register'](socket);function respondWithRpcPromise(_0x27b88b,_0x329f14,_0x47c10f){return new BPromise(function(_0x5256e0,_0x5ab00b){return client['request'](_0x27b88b,_0x47c10f)[_0xb631('0xc')](function(_0x34a85d){logger[_0xb631('0xd')](_0xb631('0xe'),_0x329f14,_0xb631('0xf'));logger['debug'](_0xb631('0x10'),_0x329f14,_0xb631('0xf'),JSON['stringify'](_0x34a85d));if(_0x34a85d['error']){if(_0x34a85d[_0xb631('0x11')][_0xb631('0x12')]===0x1f4){logger[_0xb631('0x11')]('OpenchannelQueue,\x20%s,\x20%s',_0x329f14,_0x34a85d[_0xb631('0x11')][_0xb631('0x13')]);return _0x5ab00b(_0x34a85d[_0xb631('0x11')][_0xb631('0x13')]);}logger[_0xb631('0x11')](_0xb631('0xe'),_0x329f14,_0x34a85d[_0xb631('0x11')][_0xb631('0x13')]);return _0x5256e0(_0x34a85d['error'][_0xb631('0x13')]);}else{logger[_0xb631('0xd')](_0xb631('0xe'),_0x329f14,_0xb631('0xf'));_0x5256e0(_0x34a85d[_0xb631('0x14')][_0xb631('0x13')]);}})['catch'](function(_0x1f7821){logger[_0xb631('0x11')](_0xb631('0xe'),_0x329f14,_0x1f7821);_0x5ab00b(_0x1f7821);});});}exports[_0xb631('0x15')]=function(_0x48002e){var _0x1eb32f=this;return new Promise(function(_0x4a4cd2,_0x2bdfd2){return db[_0xb631('0x16')][_0xb631('0x17')]({'raw':_0x48002e['options']?_0x48002e[_0xb631('0x18')][_0xb631('0x19')]===undefined?!![]:![]:!![],'where':_0x48002e[_0xb631('0x18')]?_0x48002e['options'][_0xb631('0x1a')]||null:null,'attributes':_0x48002e['options']?_0x48002e[_0xb631('0x18')][_0xb631('0x1b')]||null:null,'limit':_0x48002e[_0xb631('0x18')]?_0x48002e[_0xb631('0x18')][_0xb631('0x1c')]||null:null,'include':_0x48002e['options']?_0x48002e[_0xb631('0x18')][_0xb631('0x1d')]?_[_0xb631('0x1e')](_0x48002e[_0xb631('0x18')][_0xb631('0x1d')],function(_0x23c604){return{'model':db[_0x23c604[_0xb631('0x1f')]],'as':_0x23c604['as'],'attributes':_0x23c604[_0xb631('0x1b')],'include':_0x23c604[_0xb631('0x1d')]?_['map'](_0x23c604['include'],function(_0x2105ca){return{'model':db[_0x2105ca[_0xb631('0x1f')]],'as':_0x2105ca['as'],'attributes':_0x2105ca[_0xb631('0x1b')],'include':_0x2105ca['include']?_[_0xb631('0x1e')](_0x2105ca[_0xb631('0x1d')],function(_0x4610d6){return{'model':db[_0x4610d6[_0xb631('0x1f')]],'as':_0x4610d6['as'],'attributes':_0x4610d6[_0xb631('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2308fc){logger['info'](_0xb631('0x15'),_0x48002e);logger[_0xb631('0x20')](_0xb631('0x15'),_0x48002e,JSON[_0xb631('0x21')](_0x2308fc));_0x4a4cd2(_0x2308fc);})[_0xb631('0x22')](function(_0x226412){logger['error']('GetOpenchannelQueue',_0x226412[_0xb631('0x13')],_0x48002e);_0x2bdfd2(_0x1eb32f['error'](0x1f4,_0x226412[_0xb631('0x13')]));});});};exports[_0xb631('0x23')]=function(_0x126911){var _0x4341b8=this;return new Promise(function(_0x458b1c,_0x3f3992){return db['OpenchannelQueue'][_0xb631('0x24')]({'raw':_0x126911[_0xb631('0x18')]?_0x126911[_0xb631('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x126911[_0xb631('0x18')]?_0x126911[_0xb631('0x18')][_0xb631('0x1a')]||null:null,'attributes':_0x126911[_0xb631('0x18')]?_0x126911[_0xb631('0x18')][_0xb631('0x1b')]||null:null,'include':_0x126911[_0xb631('0x18')]?_0x126911[_0xb631('0x18')][_0xb631('0x1d')]?_['map'](_0x126911[_0xb631('0x18')][_0xb631('0x1d')],function(_0x2019e7){return{'model':db[_0x2019e7[_0xb631('0x1f')]],'as':_0x2019e7['as'],'attributes':_0x2019e7[_0xb631('0x1b')],'include':_0x2019e7[_0xb631('0x1d')]?_['map'](_0x2019e7['include'],function(_0x1c3fdb){return{'model':db[_0x1c3fdb['model']],'as':_0x1c3fdb['as'],'attributes':_0x1c3fdb[_0xb631('0x1b')],'include':_0x1c3fdb[_0xb631('0x1d')]?_[_0xb631('0x1e')](_0x1c3fdb[_0xb631('0x1d')],function(_0x45501b){return{'model':db[_0x45501b['model']],'as':_0x45501b['as'],'attributes':_0x45501b[_0xb631('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xb631('0xc')](function(_0xde3bc3){logger[_0xb631('0xd')](_0xb631('0x23'),_0x126911);logger[_0xb631('0x20')](_0xb631('0x23'),_0x126911,JSON[_0xb631('0x21')](_0xde3bc3));_0x458b1c(_0xde3bc3);})[_0xb631('0x22')](function(_0x39bf6b){logger[_0xb631('0x11')](_0xb631('0x23'),_0x39bf6b['message'],_0x126911);_0x3f3992(_0x4341b8['error'](0x1f4,_0x39bf6b[_0xb631('0x13')]));});});};
\ No newline at end of file
+var _0xcd73=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','register','request','info','request\x20sent','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelQueue,\x20%s,\x20%s','message','result','catch','GetOpenchannelQueue','OpenchannelQueue','options','raw','where','include','map','model','attributes','debug','ShowOpenchannelQueue','then','lodash','util','bluebird','randomstring','ioredis'];(function(_0x11179b,_0x3fb372){var _0xfb8bfb=function(_0x4bb411){while(--_0x4bb411){_0x11179b['push'](_0x11179b['shift']());}};_0xfb8bfb(++_0x3fb372);}(_0xcd73,0x177));var _0x3cd7=function(_0x1b353f,_0x17d47c){_0x1b353f=_0x1b353f-0x0;var _0x415c39=_0xcd73[_0x1b353f];return _0x415c39;};'use strict';var _=require(_0x3cd7('0x0'));var util=require(_0x3cd7('0x1'));var moment=require('moment');var BPromise=require(_0x3cd7('0x2'));var rs=require(_0x3cd7('0x3'));var fs=require('fs');var Redis=require(_0x3cd7('0x4'));var db=require(_0x3cd7('0x5'))['db'];var utils=require(_0x3cd7('0x6'));var logger=require(_0x3cd7('0x7'))('rpc');var config=require(_0x3cd7('0x8'));var jayson=require(_0x3cd7('0x9'));var client=jayson[_0x3cd7('0xa')][_0x3cd7('0xb')]({'port':0x232a});config[_0x3cd7('0xc')]=_[_0x3cd7('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./openchannelQueue.socket')[_0x3cd7('0xe')](socket);function respondWithRpcPromise(_0x25f0ba,_0x5645c8,_0x4e5a15){return new BPromise(function(_0x51e8f7,_0x583e7c){return client[_0x3cd7('0xf')](_0x25f0ba,_0x4e5a15)['then'](function(_0x3124d8){logger[_0x3cd7('0x10')]('OpenchannelQueue,\x20%s,\x20%s',_0x5645c8,_0x3cd7('0x11'));logger['debug'](_0x3cd7('0x12'),_0x5645c8,_0x3cd7('0x11'),JSON[_0x3cd7('0x13')](_0x3124d8));if(_0x3124d8[_0x3cd7('0x14')]){if(_0x3124d8[_0x3cd7('0x14')][_0x3cd7('0x15')]===0x1f4){logger[_0x3cd7('0x14')](_0x3cd7('0x16'),_0x5645c8,_0x3124d8[_0x3cd7('0x14')]['message']);return _0x583e7c(_0x3124d8[_0x3cd7('0x14')][_0x3cd7('0x17')]);}logger['error'](_0x3cd7('0x16'),_0x5645c8,_0x3124d8[_0x3cd7('0x14')][_0x3cd7('0x17')]);return _0x51e8f7(_0x3124d8['error'][_0x3cd7('0x17')]);}else{logger[_0x3cd7('0x10')](_0x3cd7('0x16'),_0x5645c8,_0x3cd7('0x11'));_0x51e8f7(_0x3124d8[_0x3cd7('0x18')][_0x3cd7('0x17')]);}})[_0x3cd7('0x19')](function(_0x46a52c){logger[_0x3cd7('0x14')]('OpenchannelQueue,\x20%s,\x20%s',_0x5645c8,_0x46a52c);_0x583e7c(_0x46a52c);});});}exports[_0x3cd7('0x1a')]=function(_0x45e19a){var _0x22d06b=this;return new Promise(function(_0x1688d7,_0x3b9ba1){return db[_0x3cd7('0x1b')]['findAll']({'raw':_0x45e19a[_0x3cd7('0x1c')]?_0x45e19a[_0x3cd7('0x1c')][_0x3cd7('0x1d')]===undefined?!![]:![]:!![],'where':_0x45e19a['options']?_0x45e19a[_0x3cd7('0x1c')][_0x3cd7('0x1e')]||null:null,'attributes':_0x45e19a[_0x3cd7('0x1c')]?_0x45e19a[_0x3cd7('0x1c')]['attributes']||null:null,'limit':_0x45e19a['options']?_0x45e19a[_0x3cd7('0x1c')]['limit']||null:null,'include':_0x45e19a[_0x3cd7('0x1c')]?_0x45e19a['options'][_0x3cd7('0x1f')]?_[_0x3cd7('0x20')](_0x45e19a[_0x3cd7('0x1c')][_0x3cd7('0x1f')],function(_0x3ba7a7){return{'model':db[_0x3ba7a7[_0x3cd7('0x21')]],'as':_0x3ba7a7['as'],'attributes':_0x3ba7a7['attributes'],'include':_0x3ba7a7[_0x3cd7('0x1f')]?_[_0x3cd7('0x20')](_0x3ba7a7['include'],function(_0x197a05){return{'model':db[_0x197a05[_0x3cd7('0x21')]],'as':_0x197a05['as'],'attributes':_0x197a05[_0x3cd7('0x22')],'include':_0x197a05[_0x3cd7('0x1f')]?_[_0x3cd7('0x20')](_0x197a05[_0x3cd7('0x1f')],function(_0x4e97e7){return{'model':db[_0x4e97e7[_0x3cd7('0x21')]],'as':_0x4e97e7['as'],'attributes':_0x4e97e7[_0x3cd7('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xf27394){logger['info']('GetOpenchannelQueue',_0x45e19a);logger[_0x3cd7('0x23')](_0x3cd7('0x1a'),_0x45e19a,JSON[_0x3cd7('0x13')](_0xf27394));_0x1688d7(_0xf27394);})[_0x3cd7('0x19')](function(_0x38ab2c){logger[_0x3cd7('0x14')](_0x3cd7('0x1a'),_0x38ab2c[_0x3cd7('0x17')],_0x45e19a);_0x3b9ba1(_0x22d06b[_0x3cd7('0x14')](0x1f4,_0x38ab2c[_0x3cd7('0x17')]));});});};exports[_0x3cd7('0x24')]=function(_0x585f55){var _0x59ce39=this;return new Promise(function(_0x15f664,_0x26fa53){return db['OpenchannelQueue']['find']({'raw':_0x585f55['options']?_0x585f55[_0x3cd7('0x1c')][_0x3cd7('0x1d')]===undefined?!![]:![]:!![],'where':_0x585f55[_0x3cd7('0x1c')]?_0x585f55['options'][_0x3cd7('0x1e')]||null:null,'attributes':_0x585f55[_0x3cd7('0x1c')]?_0x585f55[_0x3cd7('0x1c')][_0x3cd7('0x22')]||null:null,'include':_0x585f55[_0x3cd7('0x1c')]?_0x585f55[_0x3cd7('0x1c')][_0x3cd7('0x1f')]?_[_0x3cd7('0x20')](_0x585f55[_0x3cd7('0x1c')]['include'],function(_0x133bf2){return{'model':db[_0x133bf2[_0x3cd7('0x21')]],'as':_0x133bf2['as'],'attributes':_0x133bf2[_0x3cd7('0x22')],'include':_0x133bf2['include']?_[_0x3cd7('0x20')](_0x133bf2[_0x3cd7('0x1f')],function(_0x46f85d){return{'model':db[_0x46f85d['model']],'as':_0x46f85d['as'],'attributes':_0x46f85d[_0x3cd7('0x22')],'include':_0x46f85d[_0x3cd7('0x1f')]?_[_0x3cd7('0x20')](_0x46f85d[_0x3cd7('0x1f')],function(_0x43718c){return{'model':db[_0x43718c['model']],'as':_0x43718c['as'],'attributes':_0x43718c['attributes']};}):[]};}):[]};}):[]:[]})[_0x3cd7('0x25')](function(_0x2d80bf){logger['info']('ShowOpenchannelQueue',_0x585f55);logger[_0x3cd7('0x23')](_0x3cd7('0x24'),_0x585f55,JSON[_0x3cd7('0x13')](_0x2d80bf));_0x15f664(_0x2d80bf);})[_0x3cd7('0x19')](function(_0x55fd40){logger[_0x3cd7('0x14')](_0x3cd7('0x24'),_0x55fd40[_0x3cd7('0x17')],_0x585f55);_0x26fa53(_0x59ce39['error'](0x1f4,_0x55fd40[_0x3cd7('0x17')]));});});};
\ No newline at end of file
index 3f117ba..4d7dbcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x713c=['emit','length','openchannelQueue:','./openchannelQueue.events','save','remove'];(function(_0x4ee70f,_0x3bfa86){var _0x11a56c=function(_0x16ef0c){while(--_0x16ef0c){_0x4ee70f['push'](_0x4ee70f['shift']());}};_0x11a56c(++_0x3bfa86);}(_0x713c,0x195));var _0xc713=function(_0x5afbca,_0x136662){_0x5afbca=_0x5afbca-0x0;var _0x2bddce=_0x713c[_0x5afbca];return _0x2bddce;};'use strict';var OpenchannelQueueEvents=require(_0xc713('0x0'));var events=[_0xc713('0x1'),_0xc713('0x2'),'update'];function createListener(_0x3884da,_0xc8d616){return function(_0x30eb15){_0xc8d616[_0xc713('0x3')](_0x3884da,_0x30eb15);};}function removeListener(_0x462908,_0x3cac36){return function(){OpenchannelQueueEvents['removeListener'](_0x462908,_0x3cac36);};}exports['register']=function(_0x4470bb){for(var _0x20310b=0x0,_0x2f4c80=events[_0xc713('0x4')];_0x20310b<_0x2f4c80;_0x20310b++){var _0x387b37=events[_0x20310b];var _0x2dd06d=createListener(_0xc713('0x5')+_0x387b37,_0x4470bb);OpenchannelQueueEvents['on'](_0x387b37,_0x2dd06d);}};
\ No newline at end of file
+var _0x1646=['./openchannelQueue.events','save','remove','removeListener','register','length','openchannelQueue:'];(function(_0xe896bf,_0x4f8e5e){var _0x4c7a8a=function(_0x410ff2){while(--_0x410ff2){_0xe896bf['push'](_0xe896bf['shift']());}};_0x4c7a8a(++_0x4f8e5e);}(_0x1646,0xd9));var _0x6164=function(_0x5a92ad,_0x2219a6){_0x5a92ad=_0x5a92ad-0x0;var _0x2466f8=_0x1646[_0x5a92ad];return _0x2466f8;};'use strict';var OpenchannelQueueEvents=require(_0x6164('0x0'));var events=[_0x6164('0x1'),_0x6164('0x2'),'update'];function createListener(_0x43724d,_0x3d0136){return function(_0x55f50e){_0x3d0136['emit'](_0x43724d,_0x55f50e);};}function removeListener(_0x17e055,_0xadee0f){return function(){OpenchannelQueueEvents[_0x6164('0x3')](_0x17e055,_0xadee0f);};}exports[_0x6164('0x4')]=function(_0x4346a8){for(var _0x46f958=0x0,_0x24507d=events[_0x6164('0x5')];_0x46f958<_0x24507d;_0x46f958++){var _0x4e8d90=events[_0x46f958];var _0x9922ab=createListener(_0x6164('0x6')+_0x4e8d90,_0x4346a8);OpenchannelQueueEvents['on'](_0x4e8d90,_0x9922ab);}};
\ No newline at end of file
index 90b4da0..8eeb9ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24d5=['isAuthenticated','/describe','describe','/:id','show','update','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x569ede,_0x24c203){var _0x2d39c9=function(_0x5491e5){while(--_0x5491e5){_0x569ede['push'](_0x569ede['shift']());}};_0x2d39c9(++_0x24c203);}(_0x24d5,0xbc));var _0x524d=function(_0x512889,_0x4b242e){_0x512889=_0x512889-0x0;var _0x34789e=_0x24d5[_0x512889];return _0x34789e;};'use strict';var multer=require(_0x524d('0x0'));var util=require(_0x524d('0x1'));var path=require(_0x524d('0x2'));var timeout=require('connect-timeout');var express=require(_0x524d('0x3'));var router=express[_0x524d('0x4')]();var fs_extra=require(_0x524d('0x5'));var auth=require(_0x524d('0x6'));var interaction=require(_0x524d('0x7'));var config=require(_0x524d('0x8'));var controller=require('./openchannelQueueReport.controller');router[_0x524d('0x9')]('/',auth[_0x524d('0xa')](),controller['index']);router[_0x524d('0x9')](_0x524d('0xb'),auth[_0x524d('0xa')](),controller[_0x524d('0xc')]);router['get'](_0x524d('0xd'),auth[_0x524d('0xa')](),controller[_0x524d('0xe')]);router['post']('/',auth[_0x524d('0xa')](),controller['create']);router['put'](_0x524d('0xd'),auth['isAuthenticated'](),controller[_0x524d('0xf')]);router[_0x524d('0x10')](_0x524d('0xd'),auth[_0x524d('0xa')](),controller['destroy']);module[_0x524d('0x11')]=router;
\ No newline at end of file
+var _0x43d6=['../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','post','create','update','delete','exports','multer','util','path','express'];(function(_0x7be428,_0x59c7f3){var _0x323950=function(_0x37ca40){while(--_0x37ca40){_0x7be428['push'](_0x7be428['shift']());}};_0x323950(++_0x59c7f3);}(_0x43d6,0x1d8));var _0x643d=function(_0x2c354c,_0x21c9e0){_0x2c354c=_0x2c354c-0x0;var _0x691cad=_0x43d6[_0x2c354c];return _0x691cad;};'use strict';var multer=require(_0x643d('0x0'));var util=require(_0x643d('0x1'));var path=require(_0x643d('0x2'));var timeout=require('connect-timeout');var express=require(_0x643d('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x643d('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x643d('0x5'));var controller=require('./openchannelQueueReport.controller');router[_0x643d('0x6')]('/',auth[_0x643d('0x7')](),controller[_0x643d('0x8')]);router['get'](_0x643d('0x9'),auth[_0x643d('0x7')](),controller[_0x643d('0xa')]);router[_0x643d('0x6')](_0x643d('0xb'),auth[_0x643d('0x7')](),controller['show']);router[_0x643d('0xc')]('/',auth[_0x643d('0x7')](),controller[_0x643d('0xd')]);router['put'](_0x643d('0xb'),auth[_0x643d('0x7')](),controller[_0x643d('0xe')]);router[_0x643d('0xf')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x643d('0x10')]=router;
\ No newline at end of file
index 747827f..b51932b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb51c=['exports','STRING','DATE','moment','sequelize'];(function(_0x1679cf,_0xa72ba3){var _0x8cf151=function(_0x114eb5){while(--_0x114eb5){_0x1679cf['push'](_0x1679cf['shift']());}};_0x8cf151(++_0xa72ba3);}(_0xb51c,0x1c5));var _0xcb51=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0xb51c[_0x1035c1];return _0x308d67;};'use strict';var moment=require(_0xcb51('0x0'));var Sequelize=require(_0xcb51('0x1'));module[_0xcb51('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xcb51('0x3')]},'joinAt':{'type':Sequelize[_0xcb51('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0xcb51('0x4')]},'reason':{'type':Sequelize[_0xcb51('0x3')]}};
\ No newline at end of file
+var _0x2c79=['moment','exports','STRING','DATE'];(function(_0x333fc8,_0x2b292c){var _0x432439=function(_0x5501b6){while(--_0x5501b6){_0x333fc8['push'](_0x333fc8['shift']());}};_0x432439(++_0x2b292c);}(_0x2c79,0x164));var _0x92c7=function(_0x4cfce7,_0x46da){_0x4cfce7=_0x4cfce7-0x0;var _0x53cdbd=_0x2c79[_0x4cfce7];return _0x53cdbd;};'use strict';var moment=require(_0x92c7('0x0'));var Sequelize=require('sequelize');module[_0x92c7('0x1')]={'uniqueid':{'type':Sequelize[_0x92c7('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x92c7('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x92c7('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x92c7('0x2')]}};
\ No newline at end of file
index 9ba8478..cfc0cd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e82=['sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','json','reject','save','update','then','destroy','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','OpenchannelQueueReport','findAll','rows','catch','show','params','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util'];(function(_0x447fee,_0x3d5d93){var _0x3baa77=function(_0x415708){while(--_0x415708){_0x447fee['push'](_0x447fee['shift']());}};_0x3baa77(++_0x3d5d93);}(_0x0e82,0x198));var _0x20e8=function(_0x455ac0,_0x1d5f16){_0x455ac0=_0x455ac0-0x0;var _0xfb9257=_0x0e82[_0x455ac0];return _0xfb9257;};'use strict';var emlformat=require(_0x20e8('0x0'));var rimraf=require(_0x20e8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x20e8('0x2'));var rp=require(_0x20e8('0x3'));var moment=require('moment');var BPromise=require(_0x20e8('0x4'));var Mustache=require('mustache');var util=require(_0x20e8('0x5'));var path=require('path');var sox=require(_0x20e8('0x6'));var csv=require(_0x20e8('0x7'));var ejs=require(_0x20e8('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x20e8('0x9'));var squel=require(_0x20e8('0xa'));var crypto=require(_0x20e8('0xb'));var jsforce=require(_0x20e8('0xc'));var deskjs=require(_0x20e8('0xd'));var toCsv=require(_0x20e8('0x7'));var querystring=require('querystring');var Papa=require(_0x20e8('0xe'));var Redis=require(_0x20e8('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x20e8('0x10'));var as=require(_0x20e8('0x11'));var hardwareService=require(_0x20e8('0x12'));var logger=require(_0x20e8('0x13'))(_0x20e8('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x20e8('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x533279,_0x1175e2){_0x1175e2=_0x1175e2||0xcc;return function(_0x4cad8c){if(_0x4cad8c){return _0x533279[_0x20e8('0x16')](_0x1175e2);}return _0x533279[_0x20e8('0x17')](_0x1175e2)[_0x20e8('0x18')]();};}function respondWithResult(_0x225f7a,_0x3bc521){_0x3bc521=_0x3bc521||0xc8;return function(_0x597156){if(_0x597156){return _0x225f7a[_0x20e8('0x17')](_0x3bc521)['json'](_0x597156);}};}function respondWithFilteredResult(_0x3cfbd2,_0x3107a1){return function(_0x3a346f){if(_0x3a346f){var _0x32c924=typeof _0x3107a1[_0x20e8('0x19')]===_0x20e8('0x1a')&&typeof _0x3107a1[_0x20e8('0x1b')]===_0x20e8('0x1a');var _0x4adf64=_0x3a346f[_0x20e8('0x1c')];var _0x339bbd=_0x32c924?0x0:_0x3107a1[_0x20e8('0x19')];var _0xa16b99=_0x32c924?_0x3a346f[_0x20e8('0x1c')]:_0x3107a1[_0x20e8('0x19')]+_0x3107a1[_0x20e8('0x1b')];var _0x1c0ef8;if(_0xa16b99>=_0x4adf64){_0xa16b99=_0x4adf64;_0x1c0ef8=0xc8;}else{_0x1c0ef8=0xce;}_0x3cfbd2['status'](_0x1c0ef8);return _0x3cfbd2['set']('Content-Range',_0x339bbd+'-'+_0xa16b99+'/'+_0x4adf64)[_0x20e8('0x1d')](_0x3a346f);}return null;};}function patchUpdates(_0x4b35eb){return function(_0x1ddc51){try{jsonpatch['apply'](_0x1ddc51,_0x4b35eb,!![]);}catch(_0x4d6281){return BPromise[_0x20e8('0x1e')](_0x4d6281);}return _0x1ddc51[_0x20e8('0x1f')]();};}function saveUpdates(_0x5002aa,_0x55ad22){return function(_0x1ad2e6){if(_0x1ad2e6){return _0x1ad2e6[_0x20e8('0x20')](_0x5002aa)[_0x20e8('0x21')](function(_0x230279){return _0x230279;});}return null;};}function removeEntity(_0x4d00e2,_0x4cb999){return function(_0x2a9730){if(_0x2a9730){return _0x2a9730[_0x20e8('0x22')]()['then'](function(){_0x4d00e2['status'](0xcc)[_0x20e8('0x18')]();});}};}function handleEntityNotFound(_0x1d50e3,_0x590e1b){return function(_0x1feba9){if(!_0x1feba9){_0x1d50e3[_0x20e8('0x16')](0x194);}return _0x1feba9;};}function handleError(_0x5b5497,_0x2f6fe4){_0x2f6fe4=_0x2f6fe4||0x1f4;return function(_0x11aa39){logger['error'](_0x11aa39[_0x20e8('0x23')]);if(_0x11aa39[_0x20e8('0x24')]){delete _0x11aa39[_0x20e8('0x24')];}_0x5b5497['status'](_0x2f6fe4)['send'](_0x11aa39);};}exports[_0x20e8('0x25')]=function(_0x241309,_0x4f70d4){var _0x28dd2b={},_0x3444bf={},_0x16193e={'count':0x0,'rows':[]};var _0x30e870=_[_0x20e8('0x26')](db['OpenchannelQueueReport'][_0x20e8('0x27')],function(_0x4f5590){return{'name':_0x4f5590[_0x20e8('0x28')],'type':_0x4f5590[_0x20e8('0x29')][_0x20e8('0x2a')]};});_0x3444bf[_0x20e8('0x2b')]=_[_0x20e8('0x26')](_0x30e870,'name');_0x3444bf[_0x20e8('0x2c')]=_[_0x20e8('0x2d')](_0x241309[_0x20e8('0x2c')]);_0x3444bf[_0x20e8('0x2e')]=_[_0x20e8('0x2f')](_0x3444bf[_0x20e8('0x2b')],_0x3444bf['query']);_0x28dd2b[_0x20e8('0x30')]=_['intersection'](_0x3444bf['model'],qs[_0x20e8('0x31')](_0x241309[_0x20e8('0x2c')]['fields']));_0x28dd2b['attributes']=_0x28dd2b[_0x20e8('0x30')]['length']?_0x28dd2b[_0x20e8('0x30')]:_0x3444bf[_0x20e8('0x2b')];if(!_0x241309[_0x20e8('0x2c')]['hasOwnProperty'](_0x20e8('0x32'))){_0x28dd2b['limit']=qs['limit'](_0x241309['query'][_0x20e8('0x1b')]);_0x28dd2b[_0x20e8('0x19')]=qs[_0x20e8('0x19')](_0x241309[_0x20e8('0x2c')]['offset']);}_0x28dd2b['order']=qs['sort'](_0x241309[_0x20e8('0x2c')][_0x20e8('0x33')]);_0x28dd2b['where']=qs[_0x20e8('0x2e')](_[_0x20e8('0x34')](_0x241309[_0x20e8('0x2c')],_0x3444bf[_0x20e8('0x2e')]),_0x30e870);if(_0x241309[_0x20e8('0x2c')][_0x20e8('0x35')]){_0x28dd2b[_0x20e8('0x36')]=_[_0x20e8('0x37')](_0x28dd2b['where'],{'$or':_[_0x20e8('0x26')](_0x30e870,function(_0x28d1f7){if(_0x28d1f7[_0x20e8('0x29')]!==_0x20e8('0x38')){var _0x266edd={};_0x266edd[_0x28d1f7[_0x20e8('0x24')]]={'$like':'%'+_0x241309[_0x20e8('0x2c')][_0x20e8('0x35')]+'%'};return _0x266edd;}})});}_0x28dd2b=_[_0x20e8('0x37')]({},_0x28dd2b,_0x241309[_0x20e8('0x39')]);var _0x45ec2a={'where':_0x28dd2b[_0x20e8('0x36')]};return db['OpenchannelQueueReport'][_0x20e8('0x1c')](_0x45ec2a)['then'](function(_0x1e0f27){_0x16193e[_0x20e8('0x1c')]=_0x1e0f27;if(_0x241309['query'][_0x20e8('0x3a')]){_0x28dd2b[_0x20e8('0x3b')]=[{'all':!![]}];}return db[_0x20e8('0x3c')][_0x20e8('0x3d')](_0x28dd2b);})[_0x20e8('0x21')](function(_0x1ede94){_0x16193e[_0x20e8('0x3e')]=_0x1ede94;return _0x16193e;})[_0x20e8('0x21')](respondWithFilteredResult(_0x4f70d4,_0x28dd2b))[_0x20e8('0x3f')](handleError(_0x4f70d4,null));};exports[_0x20e8('0x40')]=function(_0xa02a5a,_0x515fec){var _0x1062c2={'raw':!![],'where':{'id':_0xa02a5a[_0x20e8('0x41')]['id']}},_0x46eef9={};_0x46eef9[_0x20e8('0x2b')]=_[_0x20e8('0x2d')](db[_0x20e8('0x3c')]['rawAttributes']);_0x46eef9[_0x20e8('0x2c')]=_[_0x20e8('0x2d')](_0xa02a5a[_0x20e8('0x2c')]);_0x46eef9[_0x20e8('0x2e')]=_['intersection'](_0x46eef9['model'],_0x46eef9[_0x20e8('0x2c')]);_0x1062c2[_0x20e8('0x30')]=_[_0x20e8('0x2f')](_0x46eef9['model'],qs['fields'](_0xa02a5a['query'][_0x20e8('0x31')]));_0x1062c2['attributes']=_0x1062c2[_0x20e8('0x30')]['length']?_0x1062c2['attributes']:_0x46eef9['model'];if(_0xa02a5a['query'][_0x20e8('0x3a')]){_0x1062c2['include']=[{'all':!![]}];}_0x1062c2=_[_0x20e8('0x37')]({},_0x1062c2,_0xa02a5a[_0x20e8('0x39')]);return db[_0x20e8('0x3c')][_0x20e8('0x42')](_0x1062c2)[_0x20e8('0x21')](handleEntityNotFound(_0x515fec,null))[_0x20e8('0x21')](respondWithResult(_0x515fec,null))[_0x20e8('0x3f')](handleError(_0x515fec,null));};exports[_0x20e8('0x43')]=function(_0x5b987b,_0x1ec673){return db[_0x20e8('0x3c')][_0x20e8('0x43')](_0x5b987b[_0x20e8('0x44')],{})[_0x20e8('0x21')](respondWithResult(_0x1ec673,0xc9))[_0x20e8('0x3f')](handleError(_0x1ec673,null));};exports['update']=function(_0x2d8eb8,_0xc4bca6){if(_0x2d8eb8[_0x20e8('0x44')]['id']){delete _0x2d8eb8[_0x20e8('0x44')]['id'];}return db[_0x20e8('0x3c')][_0x20e8('0x42')]({'where':{'id':_0x2d8eb8[_0x20e8('0x41')]['id']}})[_0x20e8('0x21')](handleEntityNotFound(_0xc4bca6,null))[_0x20e8('0x21')](saveUpdates(_0x2d8eb8[_0x20e8('0x44')],null))[_0x20e8('0x21')](respondWithResult(_0xc4bca6,null))[_0x20e8('0x3f')](handleError(_0xc4bca6,null));};exports[_0x20e8('0x22')]=function(_0xa69a5,_0xdc24c3){return db[_0x20e8('0x3c')][_0x20e8('0x42')]({'where':{'id':_0xa69a5[_0x20e8('0x41')]['id']}})['then'](handleEntityNotFound(_0xdc24c3,null))[_0x20e8('0x21')](removeEntity(_0xdc24c3,null))[_0x20e8('0x3f')](handleError(_0xdc24c3,null));};exports['describe']=function(_0x24e5f0,_0x1be616){return db[_0x20e8('0x3c')]['describe']()[_0x20e8('0x21')](respondWithResult(_0x1be616,null))['catch'](handleError(_0x1be616,null));};
\ No newline at end of file
+var _0xc942=['include','find','create','body','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','count','Content-Range','reject','save','update','then','destroy','stack','name','send','index','map','OpenchannelQueueReport','rawAttributes','type','model','query','filters','intersection','fields','attributes','length','order','sort','filter','where','VIRTUAL','merge','options','findAll','catch','show','params','keys','includeAll'];(function(_0x42c56b,_0x58ae76){var _0x13f59d=function(_0x247dfe){while(--_0x247dfe){_0x42c56b['push'](_0x42c56b['shift']());}};_0x13f59d(++_0x58ae76);}(_0xc942,0x168));var _0x2c94=function(_0x3814df,_0x591819){_0x3814df=_0x3814df-0x0;var _0x4e2c6c=_0xc942[_0x3814df];return _0x4e2c6c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2c94('0x0'));var zipdir=require(_0x2c94('0x1'));var jsonpatch=require(_0x2c94('0x2'));var rp=require('request-promise');var moment=require(_0x2c94('0x3'));var BPromise=require(_0x2c94('0x4'));var Mustache=require(_0x2c94('0x5'));var util=require('util');var path=require(_0x2c94('0x6'));var sox=require(_0x2c94('0x7'));var csv=require(_0x2c94('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2c94('0x9'));var _=require(_0x2c94('0xa'));var squel=require(_0x2c94('0xb'));var crypto=require('crypto');var jsforce=require(_0x2c94('0xc'));var deskjs=require(_0x2c94('0xd'));var toCsv=require('to-csv');var querystring=require(_0x2c94('0xe'));var Papa=require('papaparse');var Redis=require(_0x2c94('0xf'));var authService=require(_0x2c94('0x10'));var qs=require(_0x2c94('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2c94('0x12'));var logger=require(_0x2c94('0x13'))(_0x2c94('0x14'));var utils=require(_0x2c94('0x15'));var config=require(_0x2c94('0x16'));var licenseUtil=require(_0x2c94('0x17'));var db=require(_0x2c94('0x18'))['db'];function respondWithStatusCode(_0x173da0,_0x2f5b06){_0x2f5b06=_0x2f5b06||0xcc;return function(_0x570335){if(_0x570335){return _0x173da0[_0x2c94('0x19')](_0x2f5b06);}return _0x173da0['status'](_0x2f5b06)[_0x2c94('0x1a')]();};}function respondWithResult(_0x110a38,_0x10e060){_0x10e060=_0x10e060||0xc8;return function(_0x1ef372){if(_0x1ef372){return _0x110a38[_0x2c94('0x1b')](_0x10e060)[_0x2c94('0x1c')](_0x1ef372);}};}function respondWithFilteredResult(_0x4ce1c8,_0x538126){return function(_0x5fd6c3){if(_0x5fd6c3){var _0xaab2a=typeof _0x538126[_0x2c94('0x1d')]==='undefined'&&typeof _0x538126[_0x2c94('0x1e')]==='undefined';var _0x42634f=_0x5fd6c3['count'];var _0x1be73b=_0xaab2a?0x0:_0x538126['offset'];var _0x32465b=_0xaab2a?_0x5fd6c3[_0x2c94('0x1f')]:_0x538126['offset']+_0x538126[_0x2c94('0x1e')];var _0xdb7d77;if(_0x32465b>=_0x42634f){_0x32465b=_0x42634f;_0xdb7d77=0xc8;}else{_0xdb7d77=0xce;}_0x4ce1c8[_0x2c94('0x1b')](_0xdb7d77);return _0x4ce1c8['set'](_0x2c94('0x20'),_0x1be73b+'-'+_0x32465b+'/'+_0x42634f)[_0x2c94('0x1c')](_0x5fd6c3);}return null;};}function patchUpdates(_0x6eee52){return function(_0x4a9765){try{jsonpatch['apply'](_0x4a9765,_0x6eee52,!![]);}catch(_0x39f2ad){return BPromise[_0x2c94('0x21')](_0x39f2ad);}return _0x4a9765[_0x2c94('0x22')]();};}function saveUpdates(_0x159470,_0x4bdc93){return function(_0x53050c){if(_0x53050c){return _0x53050c[_0x2c94('0x23')](_0x159470)[_0x2c94('0x24')](function(_0x128e33){return _0x128e33;});}return null;};}function removeEntity(_0x4d07ab,_0x2b3ca3){return function(_0x455db5){if(_0x455db5){return _0x455db5[_0x2c94('0x25')]()[_0x2c94('0x24')](function(){_0x4d07ab[_0x2c94('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x364f4e,_0xc3ca80){return function(_0xd88431){if(!_0xd88431){_0x364f4e[_0x2c94('0x19')](0x194);}return _0xd88431;};}function handleError(_0x17f6ce,_0x57ad41){_0x57ad41=_0x57ad41||0x1f4;return function(_0x2b7e41){logger['error'](_0x2b7e41[_0x2c94('0x26')]);if(_0x2b7e41[_0x2c94('0x27')]){delete _0x2b7e41['name'];}_0x17f6ce[_0x2c94('0x1b')](_0x57ad41)[_0x2c94('0x28')](_0x2b7e41);};}exports[_0x2c94('0x29')]=function(_0x3728eb,_0x1f9319){var _0x4e5a28={},_0x37587c={},_0x4e5179={'count':0x0,'rows':[]};var _0x21c1a6=_[_0x2c94('0x2a')](db[_0x2c94('0x2b')][_0x2c94('0x2c')],function(_0x1291ff){return{'name':_0x1291ff['fieldName'],'type':_0x1291ff[_0x2c94('0x2d')]['key']};});_0x37587c[_0x2c94('0x2e')]=_[_0x2c94('0x2a')](_0x21c1a6,_0x2c94('0x27'));_0x37587c[_0x2c94('0x2f')]=_['keys'](_0x3728eb[_0x2c94('0x2f')]);_0x37587c[_0x2c94('0x30')]=_['intersection'](_0x37587c['model'],_0x37587c[_0x2c94('0x2f')]);_0x4e5a28['attributes']=_[_0x2c94('0x31')](_0x37587c['model'],qs[_0x2c94('0x32')](_0x3728eb[_0x2c94('0x2f')]['fields']));_0x4e5a28[_0x2c94('0x33')]=_0x4e5a28[_0x2c94('0x33')][_0x2c94('0x34')]?_0x4e5a28['attributes']:_0x37587c[_0x2c94('0x2e')];if(!_0x3728eb[_0x2c94('0x2f')]['hasOwnProperty']('nolimit')){_0x4e5a28['limit']=qs[_0x2c94('0x1e')](_0x3728eb[_0x2c94('0x2f')][_0x2c94('0x1e')]);_0x4e5a28[_0x2c94('0x1d')]=qs[_0x2c94('0x1d')](_0x3728eb[_0x2c94('0x2f')][_0x2c94('0x1d')]);}_0x4e5a28[_0x2c94('0x35')]=qs[_0x2c94('0x36')](_0x3728eb[_0x2c94('0x2f')]['sort']);_0x4e5a28['where']=qs['filters'](_['pick'](_0x3728eb[_0x2c94('0x2f')],_0x37587c[_0x2c94('0x30')]),_0x21c1a6);if(_0x3728eb['query'][_0x2c94('0x37')]){_0x4e5a28[_0x2c94('0x38')]=_['merge'](_0x4e5a28[_0x2c94('0x38')],{'$or':_[_0x2c94('0x2a')](_0x21c1a6,function(_0xc00ad6){if(_0xc00ad6[_0x2c94('0x2d')]!==_0x2c94('0x39')){var _0x2b45cd={};_0x2b45cd[_0xc00ad6[_0x2c94('0x27')]]={'$like':'%'+_0x3728eb[_0x2c94('0x2f')][_0x2c94('0x37')]+'%'};return _0x2b45cd;}})});}_0x4e5a28=_[_0x2c94('0x3a')]({},_0x4e5a28,_0x3728eb[_0x2c94('0x3b')]);var _0x1ddeba={'where':_0x4e5a28[_0x2c94('0x38')]};return db[_0x2c94('0x2b')][_0x2c94('0x1f')](_0x1ddeba)[_0x2c94('0x24')](function(_0x885b79){_0x4e5179['count']=_0x885b79;if(_0x3728eb[_0x2c94('0x2f')]['includeAll']){_0x4e5a28['include']=[{'all':!![]}];}return db[_0x2c94('0x2b')][_0x2c94('0x3c')](_0x4e5a28);})[_0x2c94('0x24')](function(_0x43a798){_0x4e5179['rows']=_0x43a798;return _0x4e5179;})[_0x2c94('0x24')](respondWithFilteredResult(_0x1f9319,_0x4e5a28))[_0x2c94('0x3d')](handleError(_0x1f9319,null));};exports[_0x2c94('0x3e')]=function(_0x15fedb,_0x37f199){var _0x3a2455={'raw':!![],'where':{'id':_0x15fedb[_0x2c94('0x3f')]['id']}},_0x434b19={};_0x434b19[_0x2c94('0x2e')]=_[_0x2c94('0x40')](db['OpenchannelQueueReport']['rawAttributes']);_0x434b19['query']=_['keys'](_0x15fedb[_0x2c94('0x2f')]);_0x434b19[_0x2c94('0x30')]=_[_0x2c94('0x31')](_0x434b19[_0x2c94('0x2e')],_0x434b19['query']);_0x3a2455[_0x2c94('0x33')]=_[_0x2c94('0x31')](_0x434b19[_0x2c94('0x2e')],qs[_0x2c94('0x32')](_0x15fedb['query'][_0x2c94('0x32')]));_0x3a2455['attributes']=_0x3a2455[_0x2c94('0x33')][_0x2c94('0x34')]?_0x3a2455[_0x2c94('0x33')]:_0x434b19[_0x2c94('0x2e')];if(_0x15fedb[_0x2c94('0x2f')][_0x2c94('0x41')]){_0x3a2455[_0x2c94('0x42')]=[{'all':!![]}];}_0x3a2455=_[_0x2c94('0x3a')]({},_0x3a2455,_0x15fedb['options']);return db['OpenchannelQueueReport'][_0x2c94('0x43')](_0x3a2455)[_0x2c94('0x24')](handleEntityNotFound(_0x37f199,null))[_0x2c94('0x24')](respondWithResult(_0x37f199,null))[_0x2c94('0x3d')](handleError(_0x37f199,null));};exports[_0x2c94('0x44')]=function(_0x22a179,_0x263165){return db[_0x2c94('0x2b')][_0x2c94('0x44')](_0x22a179[_0x2c94('0x45')],{})[_0x2c94('0x24')](respondWithResult(_0x263165,0xc9))[_0x2c94('0x3d')](handleError(_0x263165,null));};exports['update']=function(_0x4c3f12,_0x58dd6e){if(_0x4c3f12[_0x2c94('0x45')]['id']){delete _0x4c3f12['body']['id'];}return db[_0x2c94('0x2b')][_0x2c94('0x43')]({'where':{'id':_0x4c3f12['params']['id']}})['then'](handleEntityNotFound(_0x58dd6e,null))['then'](saveUpdates(_0x4c3f12[_0x2c94('0x45')],null))[_0x2c94('0x24')](respondWithResult(_0x58dd6e,null))[_0x2c94('0x3d')](handleError(_0x58dd6e,null));};exports[_0x2c94('0x25')]=function(_0x48920e,_0x3834d8){return db[_0x2c94('0x2b')][_0x2c94('0x43')]({'where':{'id':_0x48920e[_0x2c94('0x3f')]['id']}})[_0x2c94('0x24')](handleEntityNotFound(_0x3834d8,null))['then'](removeEntity(_0x3834d8,null))[_0x2c94('0x3d')](handleError(_0x3834d8,null));};exports[_0x2c94('0x46')]=function(_0x2991d4,_0x2b35f4){return db[_0x2c94('0x2b')][_0x2c94('0x46')]()[_0x2c94('0x24')](respondWithResult(_0x2b35f4,null))[_0x2c94('0x3d')](handleError(_0x2b35f4,null));};
\ No newline at end of file
index b9feb14..1bf3f4d 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(_0x4b7b62,_0x4920a9){var _0x2280df=function(_0x21e1f8){while(--_0x21e1f8){_0x4b7b62['push'](_0x4b7b62['shift']());}};_0x2280df(++_0x4920a9);}(_0x814b,0x1a2));var _0xb814=function(_0x14090e,_0x30c2f7){_0x14090e=_0x14090e-0x0;var _0x554da7=_0x814b[_0x14090e];return _0x554da7;};'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 _0x1261=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','define','report_openchannel_queue','uniqueid','util'];(function(_0x2fdea5,_0x439310){var _0x431023=function(_0x53a145){while(--_0x53a145){_0x2fdea5['push'](_0x2fdea5['shift']());}};_0x431023(++_0x439310);}(_0x1261,0x144));var _0x1126=function(_0x1417c6,_0x194309){_0x1417c6=_0x1417c6-0x0;var _0x44db97=_0x1261[_0x1417c6];return _0x44db97;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var logger=require(_0x1126('0x1'))(_0x1126('0x2'));var moment=require(_0x1126('0x3'));var BPromise=require(_0x1126('0x4'));var rp=require(_0x1126('0x5'));var fs=require('fs');var path=require(_0x1126('0x6'));var rimraf=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var attributes=require(_0x1126('0x9'));module['exports']=function(_0x5c68c8,_0x40ba58){return _0x5c68c8[_0x1126('0xa')]('OpenchannelQueueReport',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 6248265..d01cb24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06ef=['rpc','jayson/promise','client','request','then','info','request\x20sent','debug','stringify','error','code','message','result','catch','OpenchannelQueueReport,\x20%s,\x20%s','body','options','CreateOpenchannelQueueReport','UpdateOpenchannelQueueReport','OpenchannelQueueReport','update','raw','where','attributes','limit','moment','../../config/utils','../../config/logger'];(function(_0x3de8a4,_0x289a5c){var _0x4635cf=function(_0x2bddb8){while(--_0x2bddb8){_0x3de8a4['push'](_0x3de8a4['shift']());}};_0x4635cf(++_0x289a5c);}(_0x06ef,0x185));var _0xf06e=function(_0x32cada,_0x3374f0){_0x32cada=_0x32cada-0x0;var _0x1319d6=_0x06ef[_0x32cada];return _0x1319d6;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf06e('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xf06e('0x1'));var logger=require(_0xf06e('0x2'))(_0xf06e('0x3'));var config=require('../../config/environment');var jayson=require(_0xf06e('0x4'));var client=jayson[_0xf06e('0x5')]['http']({'port':0x232a});function respondWithRpcPromise(_0x59b74b,_0x4e05dc,_0x5cddf1){return new BPromise(function(_0x4ccbee,_0x25b56e){return client[_0xf06e('0x6')](_0x59b74b,_0x5cddf1)[_0xf06e('0x7')](function(_0x2bb08c){logger[_0xf06e('0x8')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x4e05dc,_0xf06e('0x9'));logger[_0xf06e('0xa')]('OpenchannelQueueReport,\x20%s,\x20%s,\x20%s',_0x4e05dc,_0xf06e('0x9'),JSON[_0xf06e('0xb')](_0x2bb08c));if(_0x2bb08c[_0xf06e('0xc')]){if(_0x2bb08c[_0xf06e('0xc')][_0xf06e('0xd')]===0x1f4){logger[_0xf06e('0xc')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x4e05dc,_0x2bb08c[_0xf06e('0xc')][_0xf06e('0xe')]);return _0x25b56e(_0x2bb08c['error'][_0xf06e('0xe')]);}logger[_0xf06e('0xc')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x4e05dc,_0x2bb08c['error']['message']);return _0x4ccbee(_0x2bb08c[_0xf06e('0xc')][_0xf06e('0xe')]);}else{logger[_0xf06e('0x8')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x4e05dc,_0xf06e('0x9'));_0x4ccbee(_0x2bb08c[_0xf06e('0xf')][_0xf06e('0xe')]);}})[_0xf06e('0x10')](function(_0x44157a){logger[_0xf06e('0xc')](_0xf06e('0x11'),_0x4e05dc,_0x44157a);_0x25b56e(_0x44157a);});});}exports['CreateOpenchannelQueueReport']=function(_0x380c07){var _0x55dabf=this;return new Promise(function(_0x251c9f,_0x7a9f4b){return db['OpenchannelQueueReport']['create'](_0x380c07[_0xf06e('0x12')],{'raw':_0x380c07[_0xf06e('0x13')]?_0x380c07['options']['raw']===undefined?!![]:![]:!![]})[_0xf06e('0x7')](function(_0x211590){logger[_0xf06e('0x8')]('CreateOpenchannelQueueReport',_0x380c07);logger[_0xf06e('0xa')](_0xf06e('0x14'),_0x380c07,JSON['stringify'](_0x211590));_0x251c9f(_0x211590);})[_0xf06e('0x10')](function(_0x1ba130){logger[_0xf06e('0xc')]('CreateOpenchannelQueueReport',_0x1ba130[_0xf06e('0xe')],_0x380c07);_0x7a9f4b(_0x55dabf[_0xf06e('0xc')](0x1f4,_0x1ba130[_0xf06e('0xe')]));});});};exports[_0xf06e('0x15')]=function(_0x3b410e){var _0x4c2d01=this;return new Promise(function(_0x3a969c,_0x4923d3){return db[_0xf06e('0x16')][_0xf06e('0x17')](_0x3b410e[_0xf06e('0x12')],{'raw':_0x3b410e[_0xf06e('0x13')]?_0x3b410e[_0xf06e('0x13')][_0xf06e('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3b410e['options']?_0x3b410e[_0xf06e('0x13')][_0xf06e('0x19')]||null:null,'attributes':_0x3b410e[_0xf06e('0x13')]?_0x3b410e[_0xf06e('0x13')][_0xf06e('0x1a')]||null:null,'limit':_0x3b410e['options']?_0x3b410e[_0xf06e('0x13')][_0xf06e('0x1b')]||null:null})[_0xf06e('0x7')](function(_0x89a74f){logger[_0xf06e('0x8')](_0xf06e('0x15'),_0x3b410e);logger['debug'](_0xf06e('0x15'),_0x3b410e,JSON[_0xf06e('0xb')](_0x89a74f));_0x3a969c(_0x89a74f);})[_0xf06e('0x10')](function(_0x5d21f7){logger[_0xf06e('0xc')](_0xf06e('0x15'),_0x5d21f7[_0xf06e('0xe')],_0x3b410e);_0x4923d3(_0x4c2d01[_0xf06e('0xc')](0x1f4,_0x5d21f7[_0xf06e('0xe')]));});});};
\ No newline at end of file
+var _0x8caf=['OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','options','raw','then','UpdateOpenchannelQueueReport','update','body','where','attributes','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x3b9007,_0x482404){var _0xfe01e7=function(_0x199ebf){while(--_0x199ebf){_0x3b9007['push'](_0x3b9007['shift']());}};_0xfe01e7(++_0x482404);}(_0x8caf,0x1ab));var _0xf8ca=function(_0x25ede0,_0x29dc39){_0x25ede0=_0x25ede0-0x0;var _0x16fc37=_0x8caf[_0x25ede0];return _0x16fc37;};'use strict';var _=require('lodash');var util=require(_0xf8ca('0x0'));var moment=require(_0xf8ca('0x1'));var BPromise=require(_0xf8ca('0x2'));var rs=require(_0xf8ca('0x3'));var fs=require('fs');var Redis=require(_0xf8ca('0x4'));var db=require(_0xf8ca('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf8ca('0x6'))(_0xf8ca('0x7'));var config=require(_0xf8ca('0x8'));var jayson=require(_0xf8ca('0x9'));var client=jayson[_0xf8ca('0xa')][_0xf8ca('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x562eea,_0x773b9f,_0x3abd58){return new BPromise(function(_0x3a91d3,_0x31300c){return client['request'](_0x562eea,_0x3abd58)['then'](function(_0x3a9674){logger['info'](_0xf8ca('0xc'),_0x773b9f,_0xf8ca('0xd'));logger[_0xf8ca('0xe')](_0xf8ca('0xf'),_0x773b9f,'request\x20sent',JSON[_0xf8ca('0x10')](_0x3a9674));if(_0x3a9674[_0xf8ca('0x11')]){if(_0x3a9674[_0xf8ca('0x11')][_0xf8ca('0x12')]===0x1f4){logger['error'](_0xf8ca('0xc'),_0x773b9f,_0x3a9674[_0xf8ca('0x11')]['message']);return _0x31300c(_0x3a9674[_0xf8ca('0x11')][_0xf8ca('0x13')]);}logger[_0xf8ca('0x11')](_0xf8ca('0xc'),_0x773b9f,_0x3a9674[_0xf8ca('0x11')][_0xf8ca('0x13')]);return _0x3a91d3(_0x3a9674[_0xf8ca('0x11')][_0xf8ca('0x13')]);}else{logger[_0xf8ca('0x14')](_0xf8ca('0xc'),_0x773b9f,'request\x20sent');_0x3a91d3(_0x3a9674[_0xf8ca('0x15')][_0xf8ca('0x13')]);}})[_0xf8ca('0x16')](function(_0x12e8f0){logger[_0xf8ca('0x11')](_0xf8ca('0xc'),_0x773b9f,_0x12e8f0);_0x31300c(_0x12e8f0);});});}exports[_0xf8ca('0x17')]=function(_0x127119){var _0x50e805=this;return new Promise(function(_0x237f44,_0x3b5400){return db[_0xf8ca('0x18')][_0xf8ca('0x19')](_0x127119['body'],{'raw':_0x127119[_0xf8ca('0x1a')]?_0x127119[_0xf8ca('0x1a')][_0xf8ca('0x1b')]===undefined?!![]:![]:!![]})[_0xf8ca('0x1c')](function(_0x18e8da){logger[_0xf8ca('0x14')]('CreateOpenchannelQueueReport',_0x127119);logger[_0xf8ca('0xe')]('CreateOpenchannelQueueReport',_0x127119,JSON[_0xf8ca('0x10')](_0x18e8da));_0x237f44(_0x18e8da);})[_0xf8ca('0x16')](function(_0x179a48){logger[_0xf8ca('0x11')](_0xf8ca('0x17'),_0x179a48[_0xf8ca('0x13')],_0x127119);_0x3b5400(_0x50e805['error'](0x1f4,_0x179a48['message']));});});};exports[_0xf8ca('0x1d')]=function(_0x1d746a){var _0x4962a5=this;return new Promise(function(_0x55b944,_0x4357a2){return db[_0xf8ca('0x18')][_0xf8ca('0x1e')](_0x1d746a[_0xf8ca('0x1f')],{'raw':_0x1d746a[_0xf8ca('0x1a')]?_0x1d746a[_0xf8ca('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1d746a[_0xf8ca('0x1a')]?_0x1d746a[_0xf8ca('0x1a')][_0xf8ca('0x20')]||null:null,'attributes':_0x1d746a[_0xf8ca('0x1a')]?_0x1d746a[_0xf8ca('0x1a')][_0xf8ca('0x21')]||null:null,'limit':_0x1d746a[_0xf8ca('0x1a')]?_0x1d746a['options']['limit']||null:null})[_0xf8ca('0x1c')](function(_0x873e43){logger[_0xf8ca('0x14')]('UpdateOpenchannelQueueReport',_0x1d746a);logger[_0xf8ca('0xe')]('UpdateOpenchannelQueueReport',_0x1d746a,JSON['stringify'](_0x873e43));_0x55b944(_0x873e43);})[_0xf8ca('0x16')](function(_0x22b4a9){logger[_0xf8ca('0x11')]('UpdateOpenchannelQueueReport',_0x22b4a9[_0xf8ca('0x13')],_0x1d746a);_0x4357a2(_0x4962a5[_0xf8ca('0x11')](0x1f4,_0x22b4a9['message']));});});};
\ No newline at end of file
index b73fd38..6844d5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7c5=['/:id','show','post','put','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./openchannelTransferReport.controller','isAuthenticated','index','/describe','get'];(function(_0xf46af5,_0x3c7713){var _0x3caa8e=function(_0x763a71){while(--_0x763a71){_0xf46af5['push'](_0xf46af5['shift']());}};_0x3caa8e(++_0x3c7713);}(_0xc7c5,0x1c8));var _0x5c7c=function(_0x16d163,_0x193f3b){_0x16d163=_0x16d163-0x0;var _0x440a6d=_0xc7c5[_0x16d163];return _0x440a6d;};'use strict';var multer=require(_0x5c7c('0x0'));var util=require(_0x5c7c('0x1'));var path=require('path');var timeout=require(_0x5c7c('0x2'));var express=require(_0x5c7c('0x3'));var router=express[_0x5c7c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x5c7c('0x5'));var interaction=require(_0x5c7c('0x6'));var config=require('../../config/environment');var controller=require(_0x5c7c('0x7'));router['get']('/',auth[_0x5c7c('0x8')](),controller[_0x5c7c('0x9')]);router['get'](_0x5c7c('0xa'),auth[_0x5c7c('0x8')](),controller['describe']);router[_0x5c7c('0xb')](_0x5c7c('0xc'),auth[_0x5c7c('0x8')](),controller[_0x5c7c('0xd')]);router[_0x5c7c('0xe')]('/',auth[_0x5c7c('0x8')](),controller['create']);router[_0x5c7c('0xf')]('/:id',auth[_0x5c7c('0x8')](),controller['update']);router['delete'](_0x5c7c('0xc'),auth['isAuthenticated'](),controller[_0x5c7c('0x10')]);module[_0x5c7c('0x11')]=router;
\ No newline at end of file
+var _0xbadd=['put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','index','/describe','describe','show','post'];(function(_0x6e31dd,_0x3469ba){var _0x75a134=function(_0x4c1b2b){while(--_0x4c1b2b){_0x6e31dd['push'](_0x6e31dd['shift']());}};_0x75a134(++_0x3469ba);}(_0xbadd,0x124));var _0xdbad=function(_0x395bfe,_0x4db521){_0x395bfe=_0x395bfe-0x0;var _0x35c81c=_0xbadd[_0x395bfe];return _0x35c81c;};'use strict';var multer=require(_0xdbad('0x0'));var util=require(_0xdbad('0x1'));var path=require('path');var timeout=require(_0xdbad('0x2'));var express=require('express');var router=express[_0xdbad('0x3')]();var fs_extra=require(_0xdbad('0x4'));var auth=require(_0xdbad('0x5'));var interaction=require(_0xdbad('0x6'));var config=require(_0xdbad('0x7'));var controller=require(_0xdbad('0x8'));router[_0xdbad('0x9')]('/',auth[_0xdbad('0xa')](),controller[_0xdbad('0xb')]);router[_0xdbad('0x9')](_0xdbad('0xc'),auth[_0xdbad('0xa')](),controller[_0xdbad('0xd')]);router[_0xdbad('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xdbad('0xe')]);router[_0xdbad('0xf')]('/',auth[_0xdbad('0xa')](),controller['create']);router[_0xdbad('0x10')](_0xdbad('0x11'),auth[_0xdbad('0xa')](),controller[_0xdbad('0x12')]);router[_0xdbad('0x13')](_0xdbad('0x11'),auth[_0xdbad('0xa')](),controller[_0xdbad('0x14')]);module[_0xdbad('0x15')]=router;
\ No newline at end of file
index 06bed0b..aad3d13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['moment','sequelize','ENUM','queue','DATE'];(function(_0x25e6d1,_0xdaa915){var _0x486c24=function(_0x3bb3ea){while(--_0x3bb3ea){_0x25e6d1['push'](_0x25e6d1['shift']());}};_0x486c24(++_0xdaa915);}(_0x4b84,0x1cc));var _0x44b8=function(_0x2ddfd9,_0x5877d0){_0x2ddfd9=_0x2ddfd9-0x0;var _0x2668f0=_0x4b84[_0x2ddfd9];return _0x2668f0;};'use strict';var moment=require(_0x44b8('0x0'));var Sequelize=require(_0x44b8('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x44b8('0x2')]('account','agent',_0x44b8('0x3')),'allowNull':![],'defaultValue':_0x44b8('0x3')},'transferredAt':{'type':Sequelize[_0x44b8('0x4')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x25f797,_0x449916){var _0x157fdd=function(_0x329fe1){while(--_0x329fe1){_0x25f797['push'](_0x25f797['shift']());}};_0x157fdd(++_0x449916);}(_0x9c44,0x178));var _0x49c4=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0x9c44[_0x4f9b18];return _0x29f20c;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x49c4('0x0')]={'uniqueid':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x49c4('0x2')](_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x49c4('0x6')]}};
\ No newline at end of file
index e8eb7a0..7d2098c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5cd=['../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','Content-Range','json','apply','save','update','then','error','stack','name','send','map','OpenchannelTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','catch','show','params','options','find','create','body','destroy','describe','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','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util'];(function(_0x4a2ad0,_0x5c6748){var _0xa448b=function(_0x5cc882){while(--_0x5cc882){_0x4a2ad0['push'](_0x4a2ad0['shift']());}};_0xa448b(++_0x5c6748);}(_0xf5cd,0x1bf));var _0xdf5c=function(_0x32c054,_0x4da5c0){_0x32c054=_0x32c054-0x0;var _0x2227e0=_0xf5cd[_0x32c054];return _0x2227e0;};'use strict';var emlformat=require(_0xdf5c('0x0'));var rimraf=require(_0xdf5c('0x1'));var zipdir=require(_0xdf5c('0x2'));var jsonpatch=require(_0xdf5c('0x3'));var rp=require(_0xdf5c('0x4'));var moment=require(_0xdf5c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xdf5c('0x6'));var util=require(_0xdf5c('0x7'));var path=require(_0xdf5c('0x8'));var sox=require(_0xdf5c('0x9'));var csv=require(_0xdf5c('0xa'));var ejs=require(_0xdf5c('0xb'));var fs=require('fs');var fs_extra=require(_0xdf5c('0xc'));var _=require(_0xdf5c('0xd'));var squel=require(_0xdf5c('0xe'));var crypto=require(_0xdf5c('0xf'));var jsforce=require(_0xdf5c('0x10'));var deskjs=require(_0xdf5c('0x11'));var toCsv=require(_0xdf5c('0xa'));var querystring=require(_0xdf5c('0x12'));var Papa=require(_0xdf5c('0x13'));var Redis=require('ioredis');var authService=require(_0xdf5c('0x14'));var qs=require(_0xdf5c('0x15'));var as=require(_0xdf5c('0x16'));var hardwareService=require(_0xdf5c('0x17'));var logger=require(_0xdf5c('0x18'))(_0xdf5c('0x19'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xdf5c('0x1a'));var db=require(_0xdf5c('0x1b'))['db'];function respondWithStatusCode(_0x5809a5,_0x285569){_0x285569=_0x285569||0xcc;return function(_0x3f3c5f){if(_0x3f3c5f){return _0x5809a5[_0xdf5c('0x1c')](_0x285569);}return _0x5809a5[_0xdf5c('0x1d')](_0x285569)[_0xdf5c('0x1e')]();};}function respondWithResult(_0x460647,_0x32e112){_0x32e112=_0x32e112||0xc8;return function(_0x3c9728){if(_0x3c9728){return _0x460647[_0xdf5c('0x1d')](_0x32e112)['json'](_0x3c9728);}};}function respondWithFilteredResult(_0x436b88,_0x12a546){return function(_0x3d6ebc){if(_0x3d6ebc){var _0xc0889f=typeof _0x12a546['offset']===_0xdf5c('0x1f')&&typeof _0x12a546[_0xdf5c('0x20')]===_0xdf5c('0x1f');var _0x392aea=_0x3d6ebc[_0xdf5c('0x21')];var _0x41b922=_0xc0889f?0x0:_0x12a546[_0xdf5c('0x22')];var _0x5b2981=_0xc0889f?_0x3d6ebc['count']:_0x12a546[_0xdf5c('0x22')]+_0x12a546[_0xdf5c('0x20')];var _0x32e211;if(_0x5b2981>=_0x392aea){_0x5b2981=_0x392aea;_0x32e211=0xc8;}else{_0x32e211=0xce;}_0x436b88[_0xdf5c('0x1d')](_0x32e211);return _0x436b88['set'](_0xdf5c('0x23'),_0x41b922+'-'+_0x5b2981+'/'+_0x392aea)[_0xdf5c('0x24')](_0x3d6ebc);}return null;};}function patchUpdates(_0x1bcbc9){return function(_0x88ae31){try{jsonpatch[_0xdf5c('0x25')](_0x88ae31,_0x1bcbc9,!![]);}catch(_0x4c7b94){return BPromise['reject'](_0x4c7b94);}return _0x88ae31[_0xdf5c('0x26')]();};}function saveUpdates(_0x547fae,_0x297cd2){return function(_0x18e8d9){if(_0x18e8d9){return _0x18e8d9[_0xdf5c('0x27')](_0x547fae)[_0xdf5c('0x28')](function(_0x1e8c1d){return _0x1e8c1d;});}return null;};}function removeEntity(_0x390a3c,_0x937403){return function(_0x2af965){if(_0x2af965){return _0x2af965['destroy']()[_0xdf5c('0x28')](function(){_0x390a3c[_0xdf5c('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9cc31,_0x32f8b3){return function(_0x52deb9){if(!_0x52deb9){_0x9cc31[_0xdf5c('0x1c')](0x194);}return _0x52deb9;};}function handleError(_0x1035ed,_0x18fe30){_0x18fe30=_0x18fe30||0x1f4;return function(_0x43e432){logger[_0xdf5c('0x29')](_0x43e432[_0xdf5c('0x2a')]);if(_0x43e432['name']){delete _0x43e432[_0xdf5c('0x2b')];}_0x1035ed['status'](_0x18fe30)[_0xdf5c('0x2c')](_0x43e432);};}exports['index']=function(_0x7ebb52,_0x18b627){var _0x48ec5d={},_0xf07b12={},_0x1c448d={'count':0x0,'rows':[]};var _0x28dd38=_[_0xdf5c('0x2d')](db[_0xdf5c('0x2e')][_0xdf5c('0x2f')],function(_0x23c64a){return{'name':_0x23c64a[_0xdf5c('0x30')],'type':_0x23c64a[_0xdf5c('0x31')][_0xdf5c('0x32')]};});_0xf07b12[_0xdf5c('0x33')]=_[_0xdf5c('0x2d')](_0x28dd38,'name');_0xf07b12[_0xdf5c('0x34')]=_[_0xdf5c('0x35')](_0x7ebb52[_0xdf5c('0x34')]);_0xf07b12[_0xdf5c('0x36')]=_[_0xdf5c('0x37')](_0xf07b12[_0xdf5c('0x33')],_0xf07b12[_0xdf5c('0x34')]);_0x48ec5d['attributes']=_[_0xdf5c('0x37')](_0xf07b12['model'],qs[_0xdf5c('0x38')](_0x7ebb52[_0xdf5c('0x34')][_0xdf5c('0x38')]));_0x48ec5d[_0xdf5c('0x39')]=_0x48ec5d[_0xdf5c('0x39')][_0xdf5c('0x3a')]?_0x48ec5d[_0xdf5c('0x39')]:_0xf07b12[_0xdf5c('0x33')];if(!_0x7ebb52[_0xdf5c('0x34')][_0xdf5c('0x3b')](_0xdf5c('0x3c'))){_0x48ec5d['limit']=qs[_0xdf5c('0x20')](_0x7ebb52[_0xdf5c('0x34')]['limit']);_0x48ec5d['offset']=qs[_0xdf5c('0x22')](_0x7ebb52['query'][_0xdf5c('0x22')]);}_0x48ec5d['order']=qs[_0xdf5c('0x3d')](_0x7ebb52[_0xdf5c('0x34')]['sort']);_0x48ec5d[_0xdf5c('0x3e')]=qs['filters'](_[_0xdf5c('0x3f')](_0x7ebb52[_0xdf5c('0x34')],_0xf07b12[_0xdf5c('0x36')]),_0x28dd38);if(_0x7ebb52[_0xdf5c('0x34')]['filter']){_0x48ec5d[_0xdf5c('0x3e')]=_[_0xdf5c('0x40')](_0x48ec5d[_0xdf5c('0x3e')],{'$or':_['map'](_0x28dd38,function(_0x4adcfc){if(_0x4adcfc[_0xdf5c('0x31')]!==_0xdf5c('0x41')){var _0x516d35={};_0x516d35[_0x4adcfc[_0xdf5c('0x2b')]]={'$like':'%'+_0x7ebb52[_0xdf5c('0x34')][_0xdf5c('0x42')]+'%'};return _0x516d35;}})});}_0x48ec5d=_[_0xdf5c('0x40')]({},_0x48ec5d,_0x7ebb52['options']);var _0x38cca9={'where':_0x48ec5d[_0xdf5c('0x3e')]};return db['OpenchannelTransferReport'][_0xdf5c('0x21')](_0x38cca9)[_0xdf5c('0x28')](function(_0x524401){_0x1c448d['count']=_0x524401;if(_0x7ebb52[_0xdf5c('0x34')][_0xdf5c('0x43')]){_0x48ec5d[_0xdf5c('0x44')]=[{'all':!![]}];}return db['OpenchannelTransferReport'][_0xdf5c('0x45')](_0x48ec5d);})[_0xdf5c('0x28')](function(_0x2db53f){_0x1c448d['rows']=_0x2db53f;return _0x1c448d;})['then'](respondWithFilteredResult(_0x18b627,_0x48ec5d))[_0xdf5c('0x46')](handleError(_0x18b627,null));};exports[_0xdf5c('0x47')]=function(_0x5a7aa3,_0x3c8696){var _0x5a7224={'raw':!![],'where':{'id':_0x5a7aa3[_0xdf5c('0x48')]['id']}},_0x25fbbd={};_0x25fbbd[_0xdf5c('0x33')]=_[_0xdf5c('0x35')](db[_0xdf5c('0x2e')][_0xdf5c('0x2f')]);_0x25fbbd['query']=_[_0xdf5c('0x35')](_0x5a7aa3['query']);_0x25fbbd[_0xdf5c('0x36')]=_[_0xdf5c('0x37')](_0x25fbbd[_0xdf5c('0x33')],_0x25fbbd[_0xdf5c('0x34')]);_0x5a7224[_0xdf5c('0x39')]=_[_0xdf5c('0x37')](_0x25fbbd[_0xdf5c('0x33')],qs[_0xdf5c('0x38')](_0x5a7aa3['query'][_0xdf5c('0x38')]));_0x5a7224[_0xdf5c('0x39')]=_0x5a7224['attributes'][_0xdf5c('0x3a')]?_0x5a7224[_0xdf5c('0x39')]:_0x25fbbd['model'];if(_0x5a7aa3[_0xdf5c('0x34')][_0xdf5c('0x43')]){_0x5a7224[_0xdf5c('0x44')]=[{'all':!![]}];}_0x5a7224=_['merge']({},_0x5a7224,_0x5a7aa3[_0xdf5c('0x49')]);return db[_0xdf5c('0x2e')][_0xdf5c('0x4a')](_0x5a7224)[_0xdf5c('0x28')](handleEntityNotFound(_0x3c8696,null))['then'](respondWithResult(_0x3c8696,null))[_0xdf5c('0x46')](handleError(_0x3c8696,null));};exports[_0xdf5c('0x4b')]=function(_0x1c6831,_0x15b02d){return db[_0xdf5c('0x2e')][_0xdf5c('0x4b')](_0x1c6831['body'],{})[_0xdf5c('0x28')](respondWithResult(_0x15b02d,0xc9))[_0xdf5c('0x46')](handleError(_0x15b02d,null));};exports[_0xdf5c('0x27')]=function(_0x574ae7,_0x6c50e7){if(_0x574ae7[_0xdf5c('0x4c')]['id']){delete _0x574ae7[_0xdf5c('0x4c')]['id'];}return db['OpenchannelTransferReport'][_0xdf5c('0x4a')]({'where':{'id':_0x574ae7['params']['id']}})['then'](handleEntityNotFound(_0x6c50e7,null))[_0xdf5c('0x28')](saveUpdates(_0x574ae7[_0xdf5c('0x4c')],null))[_0xdf5c('0x28')](respondWithResult(_0x6c50e7,null))[_0xdf5c('0x46')](handleError(_0x6c50e7,null));};exports[_0xdf5c('0x4d')]=function(_0x5ced23,_0x2eda44){return db[_0xdf5c('0x2e')]['find']({'where':{'id':_0x5ced23[_0xdf5c('0x48')]['id']}})['then'](handleEntityNotFound(_0x2eda44,null))[_0xdf5c('0x28')](removeEntity(_0x2eda44,null))['catch'](handleError(_0x2eda44,null));};exports[_0xdf5c('0x4e')]=function(_0x4a4c96,_0x227a8a){return db['OpenchannelTransferReport'][_0xdf5c('0x4e')]()[_0xdf5c('0x28')](respondWithResult(_0x227a8a,null))[_0xdf5c('0x46')](handleError(_0x227a8a,null));};
\ No newline at end of file
+var _0xc99b=['error','stack','name','index','map','OpenchannelTransferReport','fieldName','model','query','keys','filters','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','includeAll','include','findAll','show','params','intersection','options','find','catch','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','apply','reject','save','update','destroy','then','end','sendStatus'];(function(_0xfeb767,_0x33ecb3){var _0x1ccd16=function(_0x52e57e){while(--_0x52e57e){_0xfeb767['push'](_0xfeb767['shift']());}};_0x1ccd16(++_0x33ecb3);}(_0xc99b,0x19b));var _0xbc99=function(_0x36e963,_0x61d1f9){_0x36e963=_0x36e963-0x0;var _0x5e4971=_0xc99b[_0x36e963];return _0x5e4971;};'use strict';var emlformat=require(_0xbc99('0x0'));var rimraf=require(_0xbc99('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbc99('0x2'));var rp=require(_0xbc99('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbc99('0x4'));var path=require(_0xbc99('0x5'));var sox=require(_0xbc99('0x6'));var csv=require(_0xbc99('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbc99('0x8'));var _=require(_0xbc99('0x9'));var squel=require(_0xbc99('0xa'));var crypto=require(_0xbc99('0xb'));var jsforce=require(_0xbc99('0xc'));var deskjs=require(_0xbc99('0xd'));var toCsv=require(_0xbc99('0x7'));var querystring=require(_0xbc99('0xe'));var Papa=require(_0xbc99('0xf'));var Redis=require(_0xbc99('0x10'));var authService=require(_0xbc99('0x11'));var qs=require(_0xbc99('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbc99('0x13'));var logger=require(_0xbc99('0x14'))(_0xbc99('0x15'));var utils=require(_0xbc99('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xbc99('0x17'));var db=require(_0xbc99('0x18'))['db'];function respondWithStatusCode(_0x2e2e1a,_0x2dfd1b){_0x2dfd1b=_0x2dfd1b||0xcc;return function(_0x12f083){if(_0x12f083){return _0x2e2e1a['sendStatus'](_0x2dfd1b);}return _0x2e2e1a[_0xbc99('0x19')](_0x2dfd1b)['end']();};}function respondWithResult(_0x57c152,_0x3e1589){_0x3e1589=_0x3e1589||0xc8;return function(_0x7f4b6d){if(_0x7f4b6d){return _0x57c152[_0xbc99('0x19')](_0x3e1589)[_0xbc99('0x1a')](_0x7f4b6d);}};}function respondWithFilteredResult(_0x5b1921,_0x1dc15a){return function(_0x3d1c19){if(_0x3d1c19){var _0x3c682b=typeof _0x1dc15a[_0xbc99('0x1b')]===_0xbc99('0x1c')&&typeof _0x1dc15a[_0xbc99('0x1d')]===_0xbc99('0x1c');var _0x527daa=_0x3d1c19[_0xbc99('0x1e')];var _0x244807=_0x3c682b?0x0:_0x1dc15a[_0xbc99('0x1b')];var _0x19fcf3=_0x3c682b?_0x3d1c19[_0xbc99('0x1e')]:_0x1dc15a['offset']+_0x1dc15a[_0xbc99('0x1d')];var _0x31e9e0;if(_0x19fcf3>=_0x527daa){_0x19fcf3=_0x527daa;_0x31e9e0=0xc8;}else{_0x31e9e0=0xce;}_0x5b1921[_0xbc99('0x19')](_0x31e9e0);return _0x5b1921['set']('Content-Range',_0x244807+'-'+_0x19fcf3+'/'+_0x527daa)[_0xbc99('0x1a')](_0x3d1c19);}return null;};}function patchUpdates(_0x3f2323){return function(_0x39c41f){try{jsonpatch[_0xbc99('0x1f')](_0x39c41f,_0x3f2323,!![]);}catch(_0x46a610){return BPromise[_0xbc99('0x20')](_0x46a610);}return _0x39c41f[_0xbc99('0x21')]();};}function saveUpdates(_0x4873b4,_0x217741){return function(_0x1c5213){if(_0x1c5213){return _0x1c5213[_0xbc99('0x22')](_0x4873b4)['then'](function(_0x3facfd){return _0x3facfd;});}return null;};}function removeEntity(_0x24e383,_0x299e09){return function(_0x8dca5c){if(_0x8dca5c){return _0x8dca5c[_0xbc99('0x23')]()[_0xbc99('0x24')](function(){_0x24e383[_0xbc99('0x19')](0xcc)[_0xbc99('0x25')]();});}};}function handleEntityNotFound(_0x1dfe37,_0x15e9c3){return function(_0x54d0d6){if(!_0x54d0d6){_0x1dfe37[_0xbc99('0x26')](0x194);}return _0x54d0d6;};}function handleError(_0x19c91b,_0x135ece){_0x135ece=_0x135ece||0x1f4;return function(_0x411a37){logger[_0xbc99('0x27')](_0x411a37[_0xbc99('0x28')]);if(_0x411a37[_0xbc99('0x29')]){delete _0x411a37[_0xbc99('0x29')];}_0x19c91b['status'](_0x135ece)['send'](_0x411a37);};}exports[_0xbc99('0x2a')]=function(_0x9c58d3,_0x148457){var _0x37dea3={},_0x503e04={},_0x24e125={'count':0x0,'rows':[]};var _0x5ef9d9=_[_0xbc99('0x2b')](db[_0xbc99('0x2c')]['rawAttributes'],function(_0x40376d){return{'name':_0x40376d[_0xbc99('0x2d')],'type':_0x40376d['type']['key']};});_0x503e04[_0xbc99('0x2e')]=_['map'](_0x5ef9d9,'name');_0x503e04[_0xbc99('0x2f')]=_[_0xbc99('0x30')](_0x9c58d3[_0xbc99('0x2f')]);_0x503e04[_0xbc99('0x31')]=_['intersection'](_0x503e04[_0xbc99('0x2e')],_0x503e04[_0xbc99('0x2f')]);_0x37dea3['attributes']=_['intersection'](_0x503e04[_0xbc99('0x2e')],qs[_0xbc99('0x32')](_0x9c58d3['query'][_0xbc99('0x32')]));_0x37dea3['attributes']=_0x37dea3[_0xbc99('0x33')][_0xbc99('0x34')]?_0x37dea3[_0xbc99('0x33')]:_0x503e04[_0xbc99('0x2e')];if(!_0x9c58d3[_0xbc99('0x2f')][_0xbc99('0x35')](_0xbc99('0x36'))){_0x37dea3[_0xbc99('0x1d')]=qs[_0xbc99('0x1d')](_0x9c58d3[_0xbc99('0x2f')][_0xbc99('0x1d')]);_0x37dea3['offset']=qs[_0xbc99('0x1b')](_0x9c58d3['query'][_0xbc99('0x1b')]);}_0x37dea3[_0xbc99('0x37')]=qs['sort'](_0x9c58d3[_0xbc99('0x2f')][_0xbc99('0x38')]);_0x37dea3[_0xbc99('0x39')]=qs['filters'](_[_0xbc99('0x3a')](_0x9c58d3[_0xbc99('0x2f')],_0x503e04['filters']),_0x5ef9d9);if(_0x9c58d3[_0xbc99('0x2f')][_0xbc99('0x3b')]){_0x37dea3[_0xbc99('0x39')]=_['merge'](_0x37dea3[_0xbc99('0x39')],{'$or':_['map'](_0x5ef9d9,function(_0x41a430){if(_0x41a430[_0xbc99('0x3c')]!==_0xbc99('0x3d')){var _0x3fff19={};_0x3fff19[_0x41a430[_0xbc99('0x29')]]={'$like':'%'+_0x9c58d3[_0xbc99('0x2f')][_0xbc99('0x3b')]+'%'};return _0x3fff19;}})});}_0x37dea3=_[_0xbc99('0x3e')]({},_0x37dea3,_0x9c58d3['options']);var _0x33a56b={'where':_0x37dea3[_0xbc99('0x39')]};return db[_0xbc99('0x2c')]['count'](_0x33a56b)[_0xbc99('0x24')](function(_0x4ccf44){_0x24e125[_0xbc99('0x1e')]=_0x4ccf44;if(_0x9c58d3[_0xbc99('0x2f')][_0xbc99('0x3f')]){_0x37dea3[_0xbc99('0x40')]=[{'all':!![]}];}return db['OpenchannelTransferReport'][_0xbc99('0x41')](_0x37dea3);})[_0xbc99('0x24')](function(_0x4f94f8){_0x24e125['rows']=_0x4f94f8;return _0x24e125;})['then'](respondWithFilteredResult(_0x148457,_0x37dea3))['catch'](handleError(_0x148457,null));};exports[_0xbc99('0x42')]=function(_0x2aaf20,_0x4b6579){var _0x1fe6bf={'raw':!![],'where':{'id':_0x2aaf20[_0xbc99('0x43')]['id']}},_0x412c96={};_0x412c96[_0xbc99('0x2e')]=_[_0xbc99('0x30')](db[_0xbc99('0x2c')]['rawAttributes']);_0x412c96[_0xbc99('0x2f')]=_[_0xbc99('0x30')](_0x2aaf20['query']);_0x412c96['filters']=_[_0xbc99('0x44')](_0x412c96[_0xbc99('0x2e')],_0x412c96['query']);_0x1fe6bf[_0xbc99('0x33')]=_[_0xbc99('0x44')](_0x412c96['model'],qs[_0xbc99('0x32')](_0x2aaf20[_0xbc99('0x2f')][_0xbc99('0x32')]));_0x1fe6bf[_0xbc99('0x33')]=_0x1fe6bf[_0xbc99('0x33')]['length']?_0x1fe6bf[_0xbc99('0x33')]:_0x412c96[_0xbc99('0x2e')];if(_0x2aaf20[_0xbc99('0x2f')]['includeAll']){_0x1fe6bf[_0xbc99('0x40')]=[{'all':!![]}];}_0x1fe6bf=_['merge']({},_0x1fe6bf,_0x2aaf20[_0xbc99('0x45')]);return db['OpenchannelTransferReport'][_0xbc99('0x46')](_0x1fe6bf)[_0xbc99('0x24')](handleEntityNotFound(_0x4b6579,null))[_0xbc99('0x24')](respondWithResult(_0x4b6579,null))[_0xbc99('0x47')](handleError(_0x4b6579,null));};exports['create']=function(_0x347dc0,_0x52c316){return db[_0xbc99('0x2c')][_0xbc99('0x48')](_0x347dc0[_0xbc99('0x49')],{})[_0xbc99('0x24')](respondWithResult(_0x52c316,0xc9))[_0xbc99('0x47')](handleError(_0x52c316,null));};exports[_0xbc99('0x22')]=function(_0x2de71d,_0x197fcc){if(_0x2de71d[_0xbc99('0x49')]['id']){delete _0x2de71d[_0xbc99('0x49')]['id'];}return db['OpenchannelTransferReport'][_0xbc99('0x46')]({'where':{'id':_0x2de71d['params']['id']}})[_0xbc99('0x24')](handleEntityNotFound(_0x197fcc,null))[_0xbc99('0x24')](saveUpdates(_0x2de71d['body'],null))[_0xbc99('0x24')](respondWithResult(_0x197fcc,null))['catch'](handleError(_0x197fcc,null));};exports[_0xbc99('0x23')]=function(_0x3d785a,_0x5a2d72){return db[_0xbc99('0x2c')][_0xbc99('0x46')]({'where':{'id':_0x3d785a[_0xbc99('0x43')]['id']}})[_0xbc99('0x24')](handleEntityNotFound(_0x5a2d72,null))[_0xbc99('0x24')](removeEntity(_0x5a2d72,null))[_0xbc99('0x47')](handleError(_0x5a2d72,null));};exports[_0xbc99('0x4a')]=function(_0x5a0416,_0x5d6458){return db[_0xbc99('0x2c')][_0xbc99('0x4a')]()[_0xbc99('0x24')](respondWithResult(_0x5d6458,null))[_0xbc99('0x47')](handleError(_0x5d6458,null));};
\ No newline at end of file
index d862d68..be9a04e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe031=['request-promise','path','../../config/environment','exports','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0xeaade7,_0x178f56){var _0x23d6db=function(_0x15d0cf){while(--_0x15d0cf){_0xeaade7['push'](_0xeaade7['shift']());}};_0x23d6db(++_0x178f56);}(_0xe031,0x159));var _0x1e03=function(_0x3dfecc,_0x535500){_0x3dfecc=_0x3dfecc-0x0;var _0x5ca86b=_0xe031[_0x3dfecc];return _0x5ca86b;};'use strict';var _=require(_0x1e03('0x0'));var util=require(_0x1e03('0x1'));var logger=require(_0x1e03('0x2'))(_0x1e03('0x3'));var moment=require(_0x1e03('0x4'));var BPromise=require(_0x1e03('0x5'));var rp=require(_0x1e03('0x6'));var fs=require('fs');var path=require(_0x1e03('0x7'));var rimraf=require('rimraf');var config=require(_0x1e03('0x8'));var attributes=require('./openchannelTransferReport.attributes');module[_0x1e03('0x9')]=function(_0xca0e4d,_0x2e3d4e){return _0xca0e4d['define'](_0x1e03('0xa'),attributes,{'tableName':_0x1e03('0xb'),'paranoid':![],'indexes':[{'name':_0x1e03('0xc'),'fields':[_0x1e03('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c6f=['./openchannelTransferReport.attributes','exports','define','OpenchannelTransferReport','uniqueid','lodash','util','moment','request-promise','path'];(function(_0x2df7c7,_0x5ec3eb){var _0x42995b=function(_0x294b44){while(--_0x294b44){_0x2df7c7['push'](_0x2df7c7['shift']());}};_0x42995b(++_0x5ec3eb);}(_0x1c6f,0x145));var _0xf1c6=function(_0x3e2e66,_0x40cfd3){_0x3e2e66=_0x3e2e66-0x0;var _0x2c484f=_0x1c6f[_0x3e2e66];return _0x2c484f;};'use strict';var _=require(_0xf1c6('0x0'));var util=require(_0xf1c6('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf1c6('0x2'));var BPromise=require('bluebird');var rp=require(_0xf1c6('0x3'));var fs=require('fs');var path=require(_0xf1c6('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf1c6('0x5'));module[_0xf1c6('0x6')]=function(_0x3ecb9d,_0x16cf37){return _0x3ecb9d[_0xf1c6('0x7')](_0xf1c6('0x8'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0xf1c6('0x9'),'fields':[_0xf1c6('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 35784bd..72de2f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x448b=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelTransferReport,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x448b,0x125));var _0xb448=function(_0x3209f9,_0x1b3845){_0x3209f9=_0x3209f9-0x0;var _0x508a5a=_0x448b[_0x3209f9];return _0x508a5a;};'use strict';var _=require(_0xb448('0x0'));var util=require(_0xb448('0x1'));var moment=require(_0xb448('0x2'));var BPromise=require(_0xb448('0x3'));var rs=require(_0xb448('0x4'));var fs=require('fs');var Redis=require(_0xb448('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb448('0x6'));var logger=require(_0xb448('0x7'))(_0xb448('0x8'));var config=require(_0xb448('0x9'));var jayson=require(_0xb448('0xa'));var client=jayson[_0xb448('0xb')][_0xb448('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5993ad,_0x2de6e5,_0x2f6f82){return new BPromise(function(_0x2c2bdd,_0x180c18){return client[_0xb448('0xd')](_0x5993ad,_0x2f6f82)[_0xb448('0xe')](function(_0x1e6e2f){logger[_0xb448('0xf')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x2de6e5,_0xb448('0x10'));logger[_0xb448('0x11')](_0xb448('0x12'),_0x2de6e5,_0xb448('0x10'),JSON[_0xb448('0x13')](_0x1e6e2f));if(_0x1e6e2f[_0xb448('0x14')]){if(_0x1e6e2f['error'][_0xb448('0x15')]===0x1f4){logger['error'](_0xb448('0x16'),_0x2de6e5,_0x1e6e2f[_0xb448('0x14')][_0xb448('0x17')]);return _0x180c18(_0x1e6e2f[_0xb448('0x14')][_0xb448('0x17')]);}logger[_0xb448('0x14')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x2de6e5,_0x1e6e2f[_0xb448('0x14')][_0xb448('0x17')]);return _0x2c2bdd(_0x1e6e2f[_0xb448('0x14')][_0xb448('0x17')]);}else{logger[_0xb448('0xf')](_0xb448('0x16'),_0x2de6e5,_0xb448('0x10'));_0x2c2bdd(_0x1e6e2f[_0xb448('0x18')][_0xb448('0x17')]);}})['catch'](function(_0x4a5fe5){logger[_0xb448('0x14')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x2de6e5,_0x4a5fe5);_0x180c18(_0x4a5fe5);});});}
\ No newline at end of file
+var _0x19da=['error','message','info','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','code'];(function(_0x4d07cc,_0x587613){var _0x42de3b=function(_0x201f78){while(--_0x201f78){_0x4d07cc['push'](_0x4d07cc['shift']());}};_0x42de3b(++_0x587613);}(_0x19da,0x9f));var _0xa19d=function(_0x2e50a2,_0x27f31e){_0x2e50a2=_0x2e50a2-0x0;var _0x47e5de=_0x19da[_0x2e50a2];return _0x47e5de;};'use strict';var _=require('lodash');var util=require(_0xa19d('0x0'));var moment=require('moment');var BPromise=require(_0xa19d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa19d('0x2'));var db=require(_0xa19d('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa19d('0x4'))(_0xa19d('0x5'));var config=require('../../config/environment');var jayson=require(_0xa19d('0x6'));var client=jayson[_0xa19d('0x7')][_0xa19d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x14dc68,_0x32da37,_0x4b4627){return new BPromise(function(_0x197c4e,_0x4e6638){return client[_0xa19d('0x9')](_0x14dc68,_0x4b4627)[_0xa19d('0xa')](function(_0x538dea){logger['info'](_0xa19d('0xb'),_0x32da37,_0xa19d('0xc'));logger[_0xa19d('0xd')](_0xa19d('0xe'),_0x32da37,_0xa19d('0xc'),JSON[_0xa19d('0xf')](_0x538dea));if(_0x538dea['error']){if(_0x538dea['error'][_0xa19d('0x10')]===0x1f4){logger[_0xa19d('0x11')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x32da37,_0x538dea['error'][_0xa19d('0x12')]);return _0x4e6638(_0x538dea[_0xa19d('0x11')]['message']);}logger[_0xa19d('0x11')](_0xa19d('0xb'),_0x32da37,_0x538dea[_0xa19d('0x11')]['message']);return _0x197c4e(_0x538dea[_0xa19d('0x11')]['message']);}else{logger[_0xa19d('0x13')](_0xa19d('0xb'),_0x32da37,_0xa19d('0xc'));_0x197c4e(_0x538dea[_0xa19d('0x14')][_0xa19d('0x12')]);}})[_0xa19d('0x15')](function(_0x2f2774){logger[_0xa19d('0x11')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x32da37,_0x2f2774);_0x4e6638(_0x2f2774);});});}
\ No newline at end of file
index 004638f..bc58637 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d7a=['isAuthenticated','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./pause.controller','get','index','/:id','post','create','put','update','delete'];(function(_0x26eaf0,_0x130e57){var _0x17fef3=function(_0x46ff91){while(--_0x46ff91){_0x26eaf0['push'](_0x26eaf0['shift']());}};_0x17fef3(++_0x130e57);}(_0x3d7a,0xa4));var _0xa3d7=function(_0x53f402,_0x326920){_0x53f402=_0x53f402-0x0;var _0x45a76d=_0x3d7a[_0x53f402];return _0x45a76d;};'use strict';var multer=require(_0xa3d7('0x0'));var util=require(_0xa3d7('0x1'));var path=require(_0xa3d7('0x2'));var timeout=require(_0xa3d7('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xa3d7('0x4'));var auth=require(_0xa3d7('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa3d7('0x6'));var controller=require(_0xa3d7('0x7'));router[_0xa3d7('0x8')]('/',auth['isAuthenticated'](),controller[_0xa3d7('0x9')]);router[_0xa3d7('0x8')](_0xa3d7('0xa'),auth['isAuthenticated'](),controller['show']);router[_0xa3d7('0xb')]('/',auth['isAuthenticated'](),controller[_0xa3d7('0xc')]);router[_0xa3d7('0xd')](_0xa3d7('0xa'),auth['isAuthenticated'](),controller[_0xa3d7('0xe')]);router[_0xa3d7('0xf')](_0xa3d7('0xa'),auth[_0xa3d7('0x10')](),controller['destroy']);module[_0xa3d7('0x11')]=router;
\ No newline at end of file
+var _0x755e=['delete','destroy','exports','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','index','/:id','show','post','create','put','update'];(function(_0xcc1317,_0x1cb075){var _0x37b34e=function(_0x2a4675){while(--_0x2a4675){_0xcc1317['push'](_0xcc1317['shift']());}};_0x37b34e(++_0x1cb075);}(_0x755e,0x1a1));var _0xe755=function(_0x53b3ee,_0x12feb7){_0x53b3ee=_0x53b3ee-0x0;var _0x50fae3=_0x755e[_0x53b3ee];return _0x50fae3;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe755('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xe755('0x1')]();var fs_extra=require(_0xe755('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xe755('0x3'));var config=require(_0xe755('0x4'));var controller=require(_0xe755('0x5'));router[_0xe755('0x6')]('/',auth[_0xe755('0x7')](),controller[_0xe755('0x8')]);router['get'](_0xe755('0x9'),auth[_0xe755('0x7')](),controller[_0xe755('0xa')]);router[_0xe755('0xb')]('/',auth[_0xe755('0x7')](),controller[_0xe755('0xc')]);router[_0xe755('0xd')]('/:id',auth[_0xe755('0x7')](),controller[_0xe755('0xe')]);router[_0xe755('0xf')](_0xe755('0x9'),auth[_0xe755('0x7')](),controller[_0xe755('0x10')]);module[_0xe755('0x11')]=router;
\ No newline at end of file
index 09149e8..c11caf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdffd=['name','sequelize','STRING'];(function(_0x427ba8,_0x4eae12){var _0x10675e=function(_0x2fbbb2){while(--_0x2fbbb2){_0x427ba8['push'](_0x427ba8['shift']());}};_0x10675e(++_0x4eae12);}(_0xdffd,0x7c));var _0xddff=function(_0x2a0f4b,_0x276975){_0x2a0f4b=_0x2a0f4b-0x0;var _0x54562b=_0xdffd[_0x2a0f4b];return _0x54562b;};'use strict';var Sequelize=require(_0xddff('0x0'));module['exports']={'name':{'type':Sequelize[_0xddff('0x1')],'unique':_0xddff('0x2'),'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xcb8a=['STRING','sequelize'];(function(_0x26458f,_0x47ec3d){var _0x2023ee=function(_0x258324){while(--_0x258324){_0x26458f['push'](_0x26458f['shift']());}};_0x2023ee(++_0x47ec3d);}(_0xcb8a,0xdf));var _0xacb8=function(_0x3057d7,_0x2ed098){_0x3057d7=_0x3057d7-0x0;var _0x419ca7=_0xcb8a[_0x3057d7];return _0x419ca7;};'use strict';var Sequelize=require(_0xacb8('0x0'));module['exports']={'name':{'type':Sequelize[_0xacb8('0x1')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0xacb8('0x1')]}};
\ No newline at end of file
index cfef3cd..38f2176 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a1e=['send','index','map','Pause','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','catch','show','params','length','include','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','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','sendStatus','status','offset','undefined','limit','count','set','json','apply','reject','save','update','then','destroy','get','Pauses','end','error','stack','name'];(function(_0x4d6a9a,_0x60c3d2){var _0x203823=function(_0x5dc131){while(--_0x5dc131){_0x4d6a9a['push'](_0x4d6a9a['shift']());}};_0x203823(++_0x60c3d2);}(_0x3a1e,0x11c));var _0xe3a1=function(_0x503ffd,_0x8ecde){_0x503ffd=_0x503ffd-0x0;var _0x160437=_0x3a1e[_0x503ffd];return _0x160437;};'use strict';var emlformat=require(_0xe3a1('0x0'));var rimraf=require(_0xe3a1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe3a1('0x2'));var rp=require(_0xe3a1('0x3'));var moment=require('moment');var BPromise=require(_0xe3a1('0x4'));var Mustache=require(_0xe3a1('0x5'));var util=require(_0xe3a1('0x6'));var path=require('path');var sox=require(_0xe3a1('0x7'));var csv=require(_0xe3a1('0x8'));var ejs=require(_0xe3a1('0x9'));var fs=require('fs');var fs_extra=require(_0xe3a1('0xa'));var _=require(_0xe3a1('0xb'));var squel=require(_0xe3a1('0xc'));var crypto=require(_0xe3a1('0xd'));var jsforce=require(_0xe3a1('0xe'));var deskjs=require(_0xe3a1('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xe3a1('0x10'));var Redis=require('ioredis');var authService=require(_0xe3a1('0x11'));var qs=require(_0xe3a1('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe3a1('0x13'))(_0xe3a1('0x14'));var utils=require(_0xe3a1('0x15'));var config=require(_0xe3a1('0x16'));var licenseUtil=require(_0xe3a1('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3f8c38,_0x40aa82){_0x40aa82=_0x40aa82||0xcc;return function(_0x4697a4){if(_0x4697a4){return _0x3f8c38[_0xe3a1('0x18')](_0x40aa82);}return _0x3f8c38['status'](_0x40aa82)['end']();};}function respondWithResult(_0x350f4c,_0x5bea52){_0x5bea52=_0x5bea52||0xc8;return function(_0x34f952){if(_0x34f952){return _0x350f4c[_0xe3a1('0x19')](_0x5bea52)['json'](_0x34f952);}};}function respondWithFilteredResult(_0x1a9f95,_0x85c1cf){return function(_0x3d6216){if(_0x3d6216){var _0x31144c=typeof _0x85c1cf[_0xe3a1('0x1a')]===_0xe3a1('0x1b')&&typeof _0x85c1cf[_0xe3a1('0x1c')]===_0xe3a1('0x1b');var _0x398387=_0x3d6216['count'];var _0x18d5f4=_0x31144c?0x0:_0x85c1cf[_0xe3a1('0x1a')];var _0x5179ce=_0x31144c?_0x3d6216[_0xe3a1('0x1d')]:_0x85c1cf[_0xe3a1('0x1a')]+_0x85c1cf['limit'];var _0x14dc54;if(_0x5179ce>=_0x398387){_0x5179ce=_0x398387;_0x14dc54=0xc8;}else{_0x14dc54=0xce;}_0x1a9f95[_0xe3a1('0x19')](_0x14dc54);return _0x1a9f95[_0xe3a1('0x1e')]('Content-Range',_0x18d5f4+'-'+_0x5179ce+'/'+_0x398387)[_0xe3a1('0x1f')](_0x3d6216);}return null;};}function patchUpdates(_0x129b2a){return function(_0x200e48){try{jsonpatch[_0xe3a1('0x20')](_0x200e48,_0x129b2a,!![]);}catch(_0x3d628b){return BPromise[_0xe3a1('0x21')](_0x3d628b);}return _0x200e48[_0xe3a1('0x22')]();};}function saveUpdates(_0x52f4a1,_0x142c23){return function(_0x1ca7fa){if(_0x1ca7fa){return _0x1ca7fa[_0xe3a1('0x23')](_0x52f4a1)[_0xe3a1('0x24')](function(_0x2eac3d){return _0x2eac3d;});}return null;};}function removeEntity(_0x49eb7a,_0x4664b1){return function(_0x298ec0){if(_0x298ec0){return _0x298ec0[_0xe3a1('0x25')]()[_0xe3a1('0x24')](function(){var _0x2fc01f=_0x298ec0[_0xe3a1('0x26')]({'plain':!![]});var _0x2a7b5f=_0xe3a1('0x27');return db['UserProfileResource'][_0xe3a1('0x25')]({'where':{'type':_0x2a7b5f,'resourceId':_0x2fc01f['id']}})['then'](function(){return _0x298ec0;});})[_0xe3a1('0x24')](function(){_0x49eb7a['status'](0xcc)[_0xe3a1('0x28')]();});}};}function handleEntityNotFound(_0x2437a8,_0x3bda89){return function(_0x2241ae){if(!_0x2241ae){_0x2437a8['sendStatus'](0x194);}return _0x2241ae;};}function handleError(_0xba91a5,_0x561b2e){_0x561b2e=_0x561b2e||0x1f4;return function(_0x5288f6){logger[_0xe3a1('0x29')](_0x5288f6[_0xe3a1('0x2a')]);if(_0x5288f6[_0xe3a1('0x2b')]){delete _0x5288f6[_0xe3a1('0x2b')];}_0xba91a5[_0xe3a1('0x19')](_0x561b2e)[_0xe3a1('0x2c')](_0x5288f6);};}exports[_0xe3a1('0x2d')]=function(_0x240139,_0x16f5da){var _0x17ce85={},_0x5ea7bc={},_0x5a42ba={'count':0x0,'rows':[]};var _0x16000f=_[_0xe3a1('0x2e')](db[_0xe3a1('0x2f')]['rawAttributes'],function(_0x45fe3c){return{'name':_0x45fe3c[_0xe3a1('0x30')],'type':_0x45fe3c[_0xe3a1('0x31')][_0xe3a1('0x32')]};});_0x5ea7bc[_0xe3a1('0x33')]=_[_0xe3a1('0x2e')](_0x16000f,'name');_0x5ea7bc[_0xe3a1('0x34')]=_[_0xe3a1('0x35')](_0x240139[_0xe3a1('0x34')]);_0x5ea7bc[_0xe3a1('0x36')]=_[_0xe3a1('0x37')](_0x5ea7bc[_0xe3a1('0x33')],_0x5ea7bc[_0xe3a1('0x34')]);_0x17ce85[_0xe3a1('0x38')]=_[_0xe3a1('0x37')](_0x5ea7bc[_0xe3a1('0x33')],qs[_0xe3a1('0x39')](_0x240139[_0xe3a1('0x34')][_0xe3a1('0x39')]));_0x17ce85[_0xe3a1('0x38')]=_0x17ce85['attributes']['length']?_0x17ce85[_0xe3a1('0x38')]:_0x5ea7bc['model'];if(!_0x240139['query'][_0xe3a1('0x3a')]('nolimit')){_0x17ce85[_0xe3a1('0x1c')]=qs[_0xe3a1('0x1c')](_0x240139[_0xe3a1('0x34')][_0xe3a1('0x1c')]);_0x17ce85[_0xe3a1('0x1a')]=qs['offset'](_0x240139[_0xe3a1('0x34')][_0xe3a1('0x1a')]);}_0x17ce85[_0xe3a1('0x3b')]=qs[_0xe3a1('0x3c')](_0x240139['query'][_0xe3a1('0x3c')]);_0x17ce85[_0xe3a1('0x3d')]=qs[_0xe3a1('0x36')](_[_0xe3a1('0x3e')](_0x240139[_0xe3a1('0x34')],_0x5ea7bc[_0xe3a1('0x36')]),_0x16000f);if(_0x240139[_0xe3a1('0x34')][_0xe3a1('0x3f')]){_0x17ce85[_0xe3a1('0x3d')]=_[_0xe3a1('0x40')](_0x17ce85[_0xe3a1('0x3d')],{'$or':_[_0xe3a1('0x2e')](_0x16000f,function(_0x2c9e2f){if(_0x2c9e2f[_0xe3a1('0x31')]!==_0xe3a1('0x41')){var _0x68b9b3={};_0x68b9b3[_0x2c9e2f[_0xe3a1('0x2b')]]={'$like':'%'+_0x240139[_0xe3a1('0x34')][_0xe3a1('0x3f')]+'%'};return _0x68b9b3;}})});}_0x17ce85=_['merge']({},_0x17ce85,_0x240139['options']);var _0x8705f1={'where':_0x17ce85[_0xe3a1('0x3d')]};return db[_0xe3a1('0x2f')][_0xe3a1('0x1d')](_0x8705f1)[_0xe3a1('0x24')](function(_0x2274f3){_0x5a42ba['count']=_0x2274f3;if(_0x240139[_0xe3a1('0x34')][_0xe3a1('0x42')]){_0x17ce85['include']=[{'all':!![]}];}return db['Pause']['findAll'](_0x17ce85);})[_0xe3a1('0x24')](function(_0x51c9c0){_0x5a42ba['rows']=_0x51c9c0;return _0x5a42ba;})[_0xe3a1('0x24')](respondWithFilteredResult(_0x16f5da,_0x17ce85))[_0xe3a1('0x43')](handleError(_0x16f5da,null));};exports[_0xe3a1('0x44')]=function(_0x2b193b,_0x237513){var _0x6e698d={'raw':!![],'where':{'id':_0x2b193b[_0xe3a1('0x45')]['id']}},_0x5a7b6c={};_0x5a7b6c[_0xe3a1('0x33')]=_[_0xe3a1('0x35')](db[_0xe3a1('0x2f')]['rawAttributes']);_0x5a7b6c[_0xe3a1('0x34')]=_[_0xe3a1('0x35')](_0x2b193b['query']);_0x5a7b6c[_0xe3a1('0x36')]=_[_0xe3a1('0x37')](_0x5a7b6c[_0xe3a1('0x33')],_0x5a7b6c[_0xe3a1('0x34')]);_0x6e698d['attributes']=_[_0xe3a1('0x37')](_0x5a7b6c['model'],qs[_0xe3a1('0x39')](_0x2b193b[_0xe3a1('0x34')][_0xe3a1('0x39')]));_0x6e698d['attributes']=_0x6e698d[_0xe3a1('0x38')][_0xe3a1('0x46')]?_0x6e698d[_0xe3a1('0x38')]:_0x5a7b6c[_0xe3a1('0x33')];if(_0x2b193b[_0xe3a1('0x34')][_0xe3a1('0x42')]){_0x6e698d[_0xe3a1('0x47')]=[{'all':!![]}];}_0x6e698d=_[_0xe3a1('0x40')]({},_0x6e698d,_0x2b193b[_0xe3a1('0x48')]);return db[_0xe3a1('0x2f')][_0xe3a1('0x49')](_0x6e698d)['then'](handleEntityNotFound(_0x237513,null))['then'](respondWithResult(_0x237513,null))[_0xe3a1('0x43')](handleError(_0x237513,null));};exports[_0xe3a1('0x4a')]=function(_0x367311,_0x341dbd){return db[_0xe3a1('0x2f')]['create'](_0x367311['body'],{})['then'](function(_0x36b6b8){var _0x478156=_0x367311[_0xe3a1('0x4b')][_0xe3a1('0x26')]({'plain':!![]});if(!_0x478156)throw new Error(_0xe3a1('0x4c'));if(_0x478156[_0xe3a1('0x4d')]===_0xe3a1('0x4b')){var _0xc7243=_0x36b6b8[_0xe3a1('0x26')]({'plain':!![]});var _0x420c34=_0xe3a1('0x27');return db[_0xe3a1('0x4e')]['find']({'where':{'name':_0x420c34,'userProfileId':_0x478156[_0xe3a1('0x4f')]},'raw':!![]})[_0xe3a1('0x24')](function(_0x2c9487){if(_0x2c9487&&_0x2c9487['autoAssociation']===0x0){return db['UserProfileResource'][_0xe3a1('0x4a')]({'name':_0xc7243[_0xe3a1('0x2b')],'resourceId':_0xc7243['id'],'type':_0x2c9487[_0xe3a1('0x2b')],'sectionId':_0x2c9487['id']},{})[_0xe3a1('0x24')](function(){return _0x36b6b8;});}else{return _0x36b6b8;}})[_0xe3a1('0x43')](function(_0x1b65b7){logger['error'](_0xe3a1('0x50'),_0x1b65b7);throw _0x1b65b7;});}return _0x36b6b8;})['then'](respondWithResult(_0x341dbd,0xc9))[_0xe3a1('0x43')](handleError(_0x341dbd,null));};exports[_0xe3a1('0x23')]=function(_0x15d65c,_0x8aaccc){if(_0x15d65c[_0xe3a1('0x51')]['id']){delete _0x15d65c[_0xe3a1('0x51')]['id'];}return db[_0xe3a1('0x2f')][_0xe3a1('0x49')]({'where':{'id':_0x15d65c[_0xe3a1('0x45')]['id']}})['then'](handleEntityNotFound(_0x8aaccc,null))[_0xe3a1('0x24')](saveUpdates(_0x15d65c[_0xe3a1('0x51')],null))[_0xe3a1('0x24')](respondWithResult(_0x8aaccc,null))[_0xe3a1('0x43')](handleError(_0x8aaccc,null));};exports[_0xe3a1('0x25')]=function(_0x43de3f,_0x45cf6d){return db[_0xe3a1('0x2f')][_0xe3a1('0x49')]({'where':{'id':_0x43de3f['params']['id']}})[_0xe3a1('0x24')](handleEntityNotFound(_0x45cf6d,null))['then'](removeEntity(_0x45cf6d,null))['catch'](handleError(_0x45cf6d,null));};
\ No newline at end of file
+var _0x2e38=['crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','get','UserProfileResource','stack','name','send','map','Pause','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','catch','params','keys','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Pauses','UserProfileSection','error','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x3aba94,_0x50a3af){var _0x4fe677=function(_0x21701f){while(--_0x21701f){_0x3aba94['push'](_0x3aba94['shift']());}};_0x4fe677(++_0x50a3af);}(_0x2e38,0xee));var _0x82e3=function(_0x21a4ca,_0x3a2cc3){_0x21a4ca=_0x21a4ca-0x0;var _0x58f30c=_0x2e38[_0x21a4ca];return _0x58f30c;};'use strict';var emlformat=require(_0x82e3('0x0'));var rimraf=require(_0x82e3('0x1'));var zipdir=require(_0x82e3('0x2'));var jsonpatch=require(_0x82e3('0x3'));var rp=require(_0x82e3('0x4'));var moment=require(_0x82e3('0x5'));var BPromise=require(_0x82e3('0x6'));var Mustache=require(_0x82e3('0x7'));var util=require(_0x82e3('0x8'));var path=require('path');var sox=require(_0x82e3('0x9'));var csv=require(_0x82e3('0xa'));var ejs=require(_0x82e3('0xb'));var fs=require('fs');var fs_extra=require(_0x82e3('0xc'));var _=require(_0x82e3('0xd'));var squel=require('squel');var crypto=require(_0x82e3('0xe'));var jsforce=require(_0x82e3('0xf'));var deskjs=require(_0x82e3('0x10'));var toCsv=require(_0x82e3('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x82e3('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x82e3('0x12'));var hardwareService=require(_0x82e3('0x13'));var logger=require(_0x82e3('0x14'))(_0x82e3('0x15'));var utils=require(_0x82e3('0x16'));var config=require(_0x82e3('0x17'));var licenseUtil=require(_0x82e3('0x18'));var db=require(_0x82e3('0x19'))['db'];function respondWithStatusCode(_0x1725c9,_0x539805){_0x539805=_0x539805||0xcc;return function(_0x282315){if(_0x282315){return _0x1725c9[_0x82e3('0x1a')](_0x539805);}return _0x1725c9['status'](_0x539805)[_0x82e3('0x1b')]();};}function respondWithResult(_0x226ef8,_0x27dbae){_0x27dbae=_0x27dbae||0xc8;return function(_0x4fa158){if(_0x4fa158){return _0x226ef8[_0x82e3('0x1c')](_0x27dbae)['json'](_0x4fa158);}};}function respondWithFilteredResult(_0x3f2c8d,_0x3cec4e){return function(_0x4f5e2d){if(_0x4f5e2d){var _0x3f82c1=typeof _0x3cec4e[_0x82e3('0x1d')]===_0x82e3('0x1e')&&typeof _0x3cec4e['limit']===_0x82e3('0x1e');var _0x2c05e6=_0x4f5e2d[_0x82e3('0x1f')];var _0x3b3c36=_0x3f82c1?0x0:_0x3cec4e[_0x82e3('0x1d')];var _0x3d1737=_0x3f82c1?_0x4f5e2d['count']:_0x3cec4e[_0x82e3('0x1d')]+_0x3cec4e[_0x82e3('0x20')];var _0x12eb80;if(_0x3d1737>=_0x2c05e6){_0x3d1737=_0x2c05e6;_0x12eb80=0xc8;}else{_0x12eb80=0xce;}_0x3f2c8d['status'](_0x12eb80);return _0x3f2c8d[_0x82e3('0x21')](_0x82e3('0x22'),_0x3b3c36+'-'+_0x3d1737+'/'+_0x2c05e6)[_0x82e3('0x23')](_0x4f5e2d);}return null;};}function patchUpdates(_0x2ecedf){return function(_0x5587b3){try{jsonpatch[_0x82e3('0x24')](_0x5587b3,_0x2ecedf,!![]);}catch(_0x9c642e){return BPromise[_0x82e3('0x25')](_0x9c642e);}return _0x5587b3[_0x82e3('0x26')]();};}function saveUpdates(_0x507b80,_0x15a1e3){return function(_0x563cca){if(_0x563cca){return _0x563cca[_0x82e3('0x27')](_0x507b80)[_0x82e3('0x28')](function(_0x563096){return _0x563096;});}return null;};}function removeEntity(_0x3f835f,_0x3cfeac){return function(_0x250b29){if(_0x250b29){return _0x250b29[_0x82e3('0x29')]()['then'](function(){var _0x2acbbb=_0x250b29[_0x82e3('0x2a')]({'plain':!![]});var _0x4c0f9b='Pauses';return db[_0x82e3('0x2b')][_0x82e3('0x29')]({'where':{'type':_0x4c0f9b,'resourceId':_0x2acbbb['id']}})[_0x82e3('0x28')](function(){return _0x250b29;});})[_0x82e3('0x28')](function(){_0x3f835f[_0x82e3('0x1c')](0xcc)[_0x82e3('0x1b')]();});}};}function handleEntityNotFound(_0xadf6f5,_0x9cd1cd){return function(_0x495693){if(!_0x495693){_0xadf6f5[_0x82e3('0x1a')](0x194);}return _0x495693;};}function handleError(_0x366b05,_0x3c04d3){_0x3c04d3=_0x3c04d3||0x1f4;return function(_0x3959d9){logger['error'](_0x3959d9[_0x82e3('0x2c')]);if(_0x3959d9[_0x82e3('0x2d')]){delete _0x3959d9[_0x82e3('0x2d')];}_0x366b05[_0x82e3('0x1c')](_0x3c04d3)[_0x82e3('0x2e')](_0x3959d9);};}exports['index']=function(_0x47df9a,_0x283124){var _0x3852fe={},_0x5ce42a={},_0x3351dc={'count':0x0,'rows':[]};var _0x3dc4f0=_[_0x82e3('0x2f')](db[_0x82e3('0x30')][_0x82e3('0x31')],function(_0x43e101){return{'name':_0x43e101[_0x82e3('0x32')],'type':_0x43e101[_0x82e3('0x33')][_0x82e3('0x34')]};});_0x5ce42a[_0x82e3('0x35')]=_['map'](_0x3dc4f0,'name');_0x5ce42a[_0x82e3('0x36')]=_['keys'](_0x47df9a[_0x82e3('0x36')]);_0x5ce42a[_0x82e3('0x37')]=_[_0x82e3('0x38')](_0x5ce42a['model'],_0x5ce42a[_0x82e3('0x36')]);_0x3852fe[_0x82e3('0x39')]=_[_0x82e3('0x38')](_0x5ce42a[_0x82e3('0x35')],qs[_0x82e3('0x3a')](_0x47df9a['query'][_0x82e3('0x3a')]));_0x3852fe[_0x82e3('0x39')]=_0x3852fe[_0x82e3('0x39')][_0x82e3('0x3b')]?_0x3852fe['attributes']:_0x5ce42a[_0x82e3('0x35')];if(!_0x47df9a[_0x82e3('0x36')][_0x82e3('0x3c')](_0x82e3('0x3d'))){_0x3852fe[_0x82e3('0x20')]=qs[_0x82e3('0x20')](_0x47df9a[_0x82e3('0x36')]['limit']);_0x3852fe[_0x82e3('0x1d')]=qs[_0x82e3('0x1d')](_0x47df9a[_0x82e3('0x36')][_0x82e3('0x1d')]);}_0x3852fe[_0x82e3('0x3e')]=qs[_0x82e3('0x3f')](_0x47df9a[_0x82e3('0x36')][_0x82e3('0x3f')]);_0x3852fe[_0x82e3('0x40')]=qs[_0x82e3('0x37')](_[_0x82e3('0x41')](_0x47df9a[_0x82e3('0x36')],_0x5ce42a[_0x82e3('0x37')]),_0x3dc4f0);if(_0x47df9a[_0x82e3('0x36')]['filter']){_0x3852fe['where']=_[_0x82e3('0x42')](_0x3852fe[_0x82e3('0x40')],{'$or':_[_0x82e3('0x2f')](_0x3dc4f0,function(_0x5dc84f){if(_0x5dc84f[_0x82e3('0x33')]!==_0x82e3('0x43')){var _0x5b4c85={};_0x5b4c85[_0x5dc84f[_0x82e3('0x2d')]]={'$like':'%'+_0x47df9a[_0x82e3('0x36')][_0x82e3('0x44')]+'%'};return _0x5b4c85;}})});}_0x3852fe=_[_0x82e3('0x42')]({},_0x3852fe,_0x47df9a['options']);var _0x19a4d3={'where':_0x3852fe[_0x82e3('0x40')]};return db['Pause'][_0x82e3('0x1f')](_0x19a4d3)['then'](function(_0x4b3d3b){_0x3351dc[_0x82e3('0x1f')]=_0x4b3d3b;if(_0x47df9a['query'][_0x82e3('0x45')]){_0x3852fe[_0x82e3('0x46')]=[{'all':!![]}];}return db[_0x82e3('0x30')][_0x82e3('0x47')](_0x3852fe);})[_0x82e3('0x28')](function(_0x5780ca){_0x3351dc['rows']=_0x5780ca;return _0x3351dc;})[_0x82e3('0x28')](respondWithFilteredResult(_0x283124,_0x3852fe))[_0x82e3('0x48')](handleError(_0x283124,null));};exports['show']=function(_0x670494,_0x153462){var _0x1a7118={'raw':!![],'where':{'id':_0x670494[_0x82e3('0x49')]['id']}},_0x15b2c3={};_0x15b2c3['model']=_[_0x82e3('0x4a')](db[_0x82e3('0x30')][_0x82e3('0x31')]);_0x15b2c3['query']=_['keys'](_0x670494[_0x82e3('0x36')]);_0x15b2c3[_0x82e3('0x37')]=_[_0x82e3('0x38')](_0x15b2c3[_0x82e3('0x35')],_0x15b2c3['query']);_0x1a7118[_0x82e3('0x39')]=_[_0x82e3('0x38')](_0x15b2c3[_0x82e3('0x35')],qs[_0x82e3('0x3a')](_0x670494['query'][_0x82e3('0x3a')]));_0x1a7118[_0x82e3('0x39')]=_0x1a7118[_0x82e3('0x39')]['length']?_0x1a7118[_0x82e3('0x39')]:_0x15b2c3[_0x82e3('0x35')];if(_0x670494[_0x82e3('0x36')][_0x82e3('0x45')]){_0x1a7118['include']=[{'all':!![]}];}_0x1a7118=_[_0x82e3('0x42')]({},_0x1a7118,_0x670494[_0x82e3('0x4b')]);return db['Pause'][_0x82e3('0x4c')](_0x1a7118)['then'](handleEntityNotFound(_0x153462,null))[_0x82e3('0x28')](respondWithResult(_0x153462,null))[_0x82e3('0x48')](handleError(_0x153462,null));};exports[_0x82e3('0x4d')]=function(_0x5a91ac,_0x44e1f2){return db[_0x82e3('0x30')][_0x82e3('0x4d')](_0x5a91ac['body'],{})[_0x82e3('0x28')](function(_0x93df8f){var _0x4bac35=_0x5a91ac[_0x82e3('0x4e')][_0x82e3('0x2a')]({'plain':!![]});if(!_0x4bac35)throw new Error(_0x82e3('0x4f'));if(_0x4bac35['role']===_0x82e3('0x4e')){var _0x4322a5=_0x93df8f[_0x82e3('0x2a')]({'plain':!![]});var _0x55716b=_0x82e3('0x50');return db[_0x82e3('0x51')][_0x82e3('0x4c')]({'where':{'name':_0x55716b,'userProfileId':_0x4bac35['userProfileId']},'raw':!![]})[_0x82e3('0x28')](function(_0x565880){if(_0x565880&&_0x565880['autoAssociation']===0x0){return db[_0x82e3('0x2b')]['create']({'name':_0x4322a5[_0x82e3('0x2d')],'resourceId':_0x4322a5['id'],'type':_0x565880[_0x82e3('0x2d')],'sectionId':_0x565880['id']},{})[_0x82e3('0x28')](function(){return _0x93df8f;});}else{return _0x93df8f;}})[_0x82e3('0x48')](function(_0x2c059c){logger[_0x82e3('0x52')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2c059c);throw _0x2c059c;});}return _0x93df8f;})['then'](respondWithResult(_0x44e1f2,0xc9))[_0x82e3('0x48')](handleError(_0x44e1f2,null));};exports[_0x82e3('0x27')]=function(_0x3fa1cc,_0xbc5848){if(_0x3fa1cc[_0x82e3('0x53')]['id']){delete _0x3fa1cc[_0x82e3('0x53')]['id'];}return db[_0x82e3('0x30')]['find']({'where':{'id':_0x3fa1cc[_0x82e3('0x49')]['id']}})[_0x82e3('0x28')](handleEntityNotFound(_0xbc5848,null))[_0x82e3('0x28')](saveUpdates(_0x3fa1cc['body'],null))[_0x82e3('0x28')](respondWithResult(_0xbc5848,null))['catch'](handleError(_0xbc5848,null));};exports[_0x82e3('0x29')]=function(_0x2be31e,_0xcc6210){return db[_0x82e3('0x30')]['find']({'where':{'id':_0x2be31e[_0x82e3('0x49')]['id']}})[_0x82e3('0x28')](handleEntityNotFound(_0xcc6210,null))[_0x82e3('0x28')](removeEntity(_0xcc6210,null))['catch'](handleError(_0xcc6210,null));};
\ No newline at end of file
index 5fdae17..77e758f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['exports','define','Pause','tools_pauses','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./pause.attributes'];(function(_0x5b1bbc,_0x98e6c3){var _0x424fb4=function(_0x45ba56){while(--_0x45ba56){_0x5b1bbc['push'](_0x5b1bbc['shift']());}};_0x424fb4(++_0x98e6c3);}(_0x8ef6,0xf2));var _0x68ef=function(_0x4a9eda,_0x4b4f95){_0x4a9eda=_0x4a9eda-0x0;var _0x5ad93e=_0x8ef6[_0x4a9eda];return _0x5ad93e;};'use strict';var _=require(_0x68ef('0x0'));var util=require(_0x68ef('0x1'));var logger=require(_0x68ef('0x2'))(_0x68ef('0x3'));var moment=require(_0x68ef('0x4'));var BPromise=require(_0x68ef('0x5'));var rp=require(_0x68ef('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x68ef('0x7'));var config=require(_0x68ef('0x8'));var attributes=require(_0x68ef('0x9'));module[_0x68ef('0xa')]=function(_0x4d26e3,_0x4f77f3){return _0x4d26e3[_0x68ef('0xb')](_0x68ef('0xc'),attributes,{'tableName':_0x68ef('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xabce=['util','../../config/logger','api','moment','path','rimraf','../../config/environment','define','tools_pauses','lodash'];(function(_0x4405c2,_0x2624af){var _0x52709f=function(_0x190535){while(--_0x190535){_0x4405c2['push'](_0x4405c2['shift']());}};_0x52709f(++_0x2624af);}(_0xabce,0x103));var _0xeabc=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xabce[_0x4709c0];return _0x13348b;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var logger=require(_0xeabc('0x2'))(_0xeabc('0x3'));var moment=require(_0xeabc('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xeabc('0x5'));var rimraf=require(_0xeabc('0x6'));var config=require(_0xeabc('0x7'));var attributes=require('./pause.attributes');module['exports']=function(_0x1b07a8,_0x52a4d7){return _0x1b07a8[_0xeabc('0x8')]('Pause',attributes,{'tableName':_0xeabc('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 70e3ce9..7618605 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x3cbd29,_0xb3701b){var _0x8320f4=function(_0x50ef52){while(--_0x50ef52){_0x3cbd29['push'](_0x3cbd29['shift']());}};_0x8320f4(++_0xb3701b);}(_0x7a54,0x106));var _0x47a5=function(_0x32880d,_0x34cf11){_0x32880d=_0x32880d-0x0;var _0x5013f8=_0x7a54[_0x32880d];return _0x5013f8;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Pause,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x2fcc5f,_0x1e4124){var _0x566844=function(_0x1c53c1){while(--_0x1c53c1){_0x2fcc5f['push'](_0x2fcc5f['shift']());}};_0x566844(++_0x1e4124);}(_0x7a54,0x106));var _0x47a5=function(_0x5d30e9,_0x68034e){_0x5d30e9=_0x5d30e9-0x0;var _0xe8da44=_0x7a54[_0x5d30e9];return _0xe8da44;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Pause,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ No newline at end of file
index 8f88501..f714772 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf021=['server/files/plugins','originalname','basename','extname','now','post','file','put','delete','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','get','/webhook','webhookGet','/:id','show','download','diskStorage','root'];(function(_0x4516e3,_0x32c352){var _0x28441a=function(_0x499bfb){while(--_0x499bfb){_0x4516e3['push'](_0x4516e3['shift']());}};_0x28441a(++_0x32c352);}(_0xf021,0x18f));var _0x1f02=function(_0x4c56b6,_0x239082){_0x4c56b6=_0x4c56b6-0x0;var _0x1ee73a=_0xf021[_0x4c56b6];return _0x1ee73a;};'use strict';var multer=require(_0x1f02('0x0'));var util=require(_0x1f02('0x1'));var path=require(_0x1f02('0x2'));var timeout=require(_0x1f02('0x3'));var express=require(_0x1f02('0x4'));var router=express['Router']();var fs_extra=require(_0x1f02('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x1f02('0x6'));var config=require(_0x1f02('0x7'));var controller=require('./plugin.controller');router['get']('/',auth[_0x1f02('0x8')](),controller['index']);router[_0x1f02('0x9')](_0x1f02('0xa'),controller[_0x1f02('0xb')]);router[_0x1f02('0x9')](_0x1f02('0xc'),auth['isAuthenticated'](),controller[_0x1f02('0xd')]);router['get']('/:id/download',auth['isAuthenticated'](),controller[_0x1f02('0xe')]);var upload=multer({'storage':multer[_0x1f02('0xf')]({'destination':function(_0x1a93ec,_0x19ee35,_0x3c2b15){_0x3c2b15(null,path['join'](config[_0x1f02('0x10')],_0x1f02('0x11')));},'filename':function(_0x204e17,_0x56a2c2,_0x24e9b8){_0x56a2c2[_0x1f02('0x12')]=_0x56a2c2[_0x1f02('0x12')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x24e9b8(null,util['format']('%s-%s%s',path[_0x1f02('0x13')](_0x56a2c2[_0x1f02('0x12')],path[_0x1f02('0x14')](_0x56a2c2[_0x1f02('0x12')])),Date[_0x1f02('0x15')](),path[_0x1f02('0x14')](_0x56a2c2[_0x1f02('0x12')])));}})});router[_0x1f02('0x16')]('/',upload['single'](_0x1f02('0x17')),controller['upload']);router['post']('/webhook',controller['webhookPost']);router[_0x1f02('0x18')](_0x1f02('0xc'),auth[_0x1f02('0x8')](),controller['update']);router[_0x1f02('0x19')](_0x1f02('0xc'),auth[_0x1f02('0x8')](),controller[_0x1f02('0x19')]);module['exports']=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(_0x258ea7,_0x28ccf6){var _0x38840a=function(_0x50f139){while(--_0x50f139){_0x258ea7['push'](_0x258ea7['shift']());}};_0x38840a(++_0x28ccf6);}(_0x0e85,0x7c));var _0x50e8=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x0e85[_0x36ed48];return _0x51c63a;};'use strict';var multer=require(_0x50e8('0x0'));var util=require(_0x50e8('0x1'));var path=require('path');var timeout=require(_0x50e8('0x2'));var express=require(_0x50e8('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x50e8('0x4'));var config=require('../../config/environment');var controller=require(_0x50e8('0x5'));router[_0x50e8('0x6')]('/',auth[_0x50e8('0x7')](),controller[_0x50e8('0x8')]);router['get'](_0x50e8('0x9'),controller[_0x50e8('0xa')]);router[_0x50e8('0x6')](_0x50e8('0xb'),auth[_0x50e8('0x7')](),controller[_0x50e8('0xc')]);router['get'](_0x50e8('0xd'),auth[_0x50e8('0x7')](),controller[_0x50e8('0xe')]);var upload=multer({'storage':multer[_0x50e8('0xf')]({'destination':function(_0x154b9e,_0x194a89,_0x45dc6f){_0x45dc6f(null,path[_0x50e8('0x10')](config['root'],'server/files/plugins'));},'filename':function(_0xfc6bb9,_0x24d381,_0x508377){_0x24d381['originalname']=_0x24d381[_0x50e8('0x11')][_0x50e8('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x508377(null,util[_0x50e8('0x13')](_0x50e8('0x14'),path['basename'](_0x24d381[_0x50e8('0x11')],path[_0x50e8('0x15')](_0x24d381[_0x50e8('0x11')])),Date['now'](),path['extname'](_0x24d381[_0x50e8('0x11')])));}})});router[_0x50e8('0x16')]('/',upload[_0x50e8('0x17')](_0x50e8('0x18')),controller[_0x50e8('0x19')]);router[_0x50e8('0x16')]('/webhook',controller['webhookPost']);router[_0x50e8('0x1a')](_0x50e8('0xb'),auth[_0x50e8('0x7')](),controller[_0x50e8('0x1b')]);router[_0x50e8('0x1c')](_0x50e8('0xb'),auth[_0x50e8('0x7')](),controller['delete']);module[_0x50e8('0x1d')]=router;
\ No newline at end of file
index 175e4f1..f146a93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8257=['Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING','ENUM','html','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','agentOnly','always','never'];(function(_0x351453,_0x34718d){var _0x37be69=function(_0x585cb9){while(--_0x585cb9){_0x351453['push'](_0x351453['shift']());}};_0x37be69(++_0x34718d);}(_0x8257,0x153));var _0x7825=function(_0x590b63,_0x14debb){_0x590b63=_0x590b63-0x0;var _0x3c9380=_0x8257[_0x590b63];return _0x3c9380;};'use strict';var Sequelize=require(_0x7825('0x0'));module[_0x7825('0x1')]={'name':{'type':Sequelize[_0x7825('0x2')]},'type':{'type':Sequelize[_0x7825('0x3')](_0x7825('0x4'),'script')},'description':{'type':Sequelize['TEXT']},'version':{'type':Sequelize[_0x7825('0x5')]},'path':{'type':Sequelize['STRING'],'comment':_0x7825('0x6')},'active':{'type':Sequelize[_0x7825('0x7')],'defaultValue':0x0,'comment':_0x7825('0x8')},'sidebar':{'type':Sequelize[_0x7825('0x3')]('adminOnly',_0x7825('0x9'),_0x7825('0xa'),_0x7825('0xb')),'defaultValue':_0x7825('0xa'),'comment':_0x7825('0xc')},'icon':{'type':Sequelize['STRING']},'adminUrl':{'type':Sequelize[_0x7825('0x2')]},'agentUrl':{'type':Sequelize[_0x7825('0x2')]},'scriptName':{'type':Sequelize[_0x7825('0x2')]},'scriptPath':{'type':Sequelize[_0x7825('0x2')]}};
\ No newline at end of file
+var _0x87d5=['The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','STRING','ENUM','html','TEXT'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0x87d5,0xd7));var _0x587d=function(_0x2e9707,_0x4600a6){_0x2e9707=_0x2e9707-0x0;var _0x276606=_0x87d5[_0x2e9707];return _0x276606;};'use strict';var Sequelize=require(_0x587d('0x0'));module['exports']={'name':{'type':Sequelize[_0x587d('0x1')]},'type':{'type':Sequelize[_0x587d('0x2')](_0x587d('0x3'),'script')},'description':{'type':Sequelize[_0x587d('0x4')]},'version':{'type':Sequelize[_0x587d('0x4')]},'path':{'type':Sequelize[_0x587d('0x1')],'comment':_0x587d('0x5')},'active':{'type':Sequelize[_0x587d('0x6')],'defaultValue':0x0,'comment':'Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'},'sidebar':{'type':Sequelize['ENUM']('adminOnly','agentOnly',_0x587d('0x7'),_0x587d('0x8')),'defaultValue':_0x587d('0x7'),'comment':_0x587d('0x9')},'icon':{'type':Sequelize[_0x587d('0x1')]},'adminUrl':{'type':Sequelize[_0x587d('0x1')]},'agentUrl':{'type':Sequelize['STRING']},'scriptName':{'type':Sequelize['STRING']},'scriptPath':{'type':Sequelize[_0x587d('0x1')]}};
\ No newline at end of file
index 09a85b4..c4a8524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7893=['../../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','./plugin.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','UserProfileResource','destroy','stack','name','send','index','map','Plugin','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','length','download','find','join','root','server/files/plugins','%s.zip','basename','code','error','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','dirname','node_modules/**/*','finalize','close','Plugin\x20not\x20found','format','Error\x20while\x20downloading\x20the\x20plugin','info','Temporary\x20file\x20removed','file','filename','extname','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','manifest.json','Plugin\x20manifest\x20missing','readFileSync','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','Invalid\x20manifest:\x20views\x20missing','agent','script','scriptName','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','description','sidebar','always','icon','icon-apps','version','admin','test','plugins','Warning:\x20agent\x20view\x20not\x20specified','create','body','role','userProfileId','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','unlinkSync','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','encoding','method','%s%s','headers','content-length','content-type','statusCode','webhookPost','http://localhost:','eml-format','rimraf','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','extract-zip','archiver'];(function(_0x51f08e,_0x4e3a97){var _0x5a2674=function(_0x58f759){while(--_0x58f759){_0x51f08e['push'](_0x51f08e['shift']());}};_0x5a2674(++_0x4e3a97);}(_0x7893,0x1e5));var _0x3789=function(_0x1be848,_0x435fe2){_0x1be848=_0x1be848-0x0;var _0x4bf257=_0x7893[_0x1be848];return _0x4bf257;};'use strict';var emlformat=require(_0x3789('0x0'));var rimraf=require(_0x3789('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3789('0x2'));var rp=require('request-promise');var moment=require(_0x3789('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x3789('0x4'));var util=require('util');var path=require(_0x3789('0x5'));var sox=require(_0x3789('0x6'));var csv=require(_0x3789('0x7'));var ejs=require(_0x3789('0x8'));var fs=require('fs');var fs_extra=require(_0x3789('0x9'));var _=require(_0x3789('0xa'));var squel=require('squel');var crypto=require(_0x3789('0xb'));var jsforce=require(_0x3789('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x3789('0x7'));var querystring=require('querystring');var Papa=require(_0x3789('0xd'));var extract=require(_0x3789('0xe'));var rimraf=require(_0x3789('0x1'));var archiver=require(_0x3789('0xf'));var Redis=require('ioredis');var authService=require(_0x3789('0x10'));var qs=require(_0x3789('0x11'));var as=require(_0x3789('0x12'));var hardwareService=require(_0x3789('0x13'));var logger=require(_0x3789('0x14'))(_0x3789('0x15'));var utils=require(_0x3789('0x16'));var config=require(_0x3789('0x17'));var licenseUtil=require(_0x3789('0x18'));var db=require(_0x3789('0x19'))['db'];config[_0x3789('0x1a')]=_[_0x3789('0x1b')](config[_0x3789('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x3789('0x1c'))(new Redis(config[_0x3789('0x1a')]));require(_0x3789('0x1d'))['register'](socket);function respondWithStatusCode(_0x306cdb,_0xbdf6b6){_0xbdf6b6=_0xbdf6b6||0xcc;return function(_0x1a046c){if(_0x1a046c){return _0x306cdb[_0x3789('0x1e')](_0xbdf6b6);}return _0x306cdb[_0x3789('0x1f')](_0xbdf6b6)[_0x3789('0x20')]();};}function respondWithResult(_0x4013f3,_0x1f70f5){_0x1f70f5=_0x1f70f5||0xc8;return function(_0x319262){if(_0x319262){return _0x4013f3[_0x3789('0x1f')](_0x1f70f5)[_0x3789('0x21')](_0x319262);}};}function respondWithFilteredResult(_0x58266f,_0xe498f5){return function(_0x38ff53){if(_0x38ff53){var _0x96694f=typeof _0xe498f5[_0x3789('0x22')]===_0x3789('0x23')&&typeof _0xe498f5[_0x3789('0x24')]===_0x3789('0x23');var _0x4ee8b3=_0x38ff53[_0x3789('0x25')];var _0x5dd31f=_0x96694f?0x0:_0xe498f5[_0x3789('0x22')];var _0x359cc=_0x96694f?_0x38ff53[_0x3789('0x25')]:_0xe498f5['offset']+_0xe498f5[_0x3789('0x24')];var _0x16ea0b;if(_0x359cc>=_0x4ee8b3){_0x359cc=_0x4ee8b3;_0x16ea0b=0xc8;}else{_0x16ea0b=0xce;}_0x58266f['status'](_0x16ea0b);return _0x58266f[_0x3789('0x26')](_0x3789('0x27'),_0x5dd31f+'-'+_0x359cc+'/'+_0x4ee8b3)[_0x3789('0x21')](_0x38ff53);}return null;};}function patchUpdates(_0x305e7c){return function(_0x2485b1){try{jsonpatch[_0x3789('0x28')](_0x2485b1,_0x305e7c,!![]);}catch(_0x354985){return BPromise[_0x3789('0x29')](_0x354985);}return _0x2485b1[_0x3789('0x2a')]();};}function saveUpdates(_0x5d09f5,_0x520838){return function(_0x564ce8){if(_0x564ce8){return _0x564ce8[_0x3789('0x2b')](_0x5d09f5)['then'](function(_0x34baad){return _0x34baad;});}return null;};}function removeEntity(_0x20a786,_0x3f2d2b){return function(_0x162137){if(_0x162137){return _0x162137['destroy']()[_0x3789('0x2c')](function(){var _0xd9ccbe=_0x162137[_0x3789('0x2d')]({'plain':!![]});var _0x4cb11f='Plugins';return db[_0x3789('0x2e')][_0x3789('0x2f')]({'where':{'type':_0x4cb11f,'resourceId':_0xd9ccbe['id']}})[_0x3789('0x2c')](function(){return _0x162137;});})[_0x3789('0x2c')](function(){_0x20a786[_0x3789('0x1f')](0xcc)[_0x3789('0x20')]();});}};}function handleEntityNotFound(_0x11bac9,_0x159c59){return function(_0x4cf865){if(!_0x4cf865){_0x11bac9[_0x3789('0x1e')](0x194);}return _0x4cf865;};}function handleError(_0x4bcbd7,_0x16929d){_0x16929d=_0x16929d||0x1f4;return function(_0x3c9853){logger['error'](_0x3c9853[_0x3789('0x30')]);if(_0x3c9853[_0x3789('0x31')]){delete _0x3c9853[_0x3789('0x31')];}_0x4bcbd7['status'](_0x16929d)[_0x3789('0x32')](_0x3c9853);};}exports[_0x3789('0x33')]=function(_0x4e408b,_0x13b79f){var _0x30c797={},_0x1d4fbe={},_0x5b5d3a={'count':0x0,'rows':[]};var _0x4f5d6c=_[_0x3789('0x34')](db[_0x3789('0x35')][_0x3789('0x36')],function(_0x1fe8db){return{'name':_0x1fe8db['fieldName'],'type':_0x1fe8db[_0x3789('0x37')][_0x3789('0x38')]};});_0x1d4fbe[_0x3789('0x39')]=_[_0x3789('0x34')](_0x4f5d6c,_0x3789('0x31'));_0x1d4fbe[_0x3789('0x3a')]=_[_0x3789('0x3b')](_0x4e408b[_0x3789('0x3a')]);_0x1d4fbe[_0x3789('0x3c')]=_[_0x3789('0x3d')](_0x1d4fbe[_0x3789('0x39')],_0x1d4fbe[_0x3789('0x3a')]);_0x30c797['attributes']=_[_0x3789('0x3d')](_0x1d4fbe['model'],qs[_0x3789('0x3e')](_0x4e408b[_0x3789('0x3a')][_0x3789('0x3e')]));_0x30c797[_0x3789('0x3f')]=_0x30c797['attributes']['length']?_0x30c797[_0x3789('0x3f')]:_0x1d4fbe[_0x3789('0x39')];if(!_0x4e408b[_0x3789('0x3a')][_0x3789('0x40')](_0x3789('0x41'))){_0x30c797['limit']=qs[_0x3789('0x24')](_0x4e408b[_0x3789('0x3a')][_0x3789('0x24')]);_0x30c797[_0x3789('0x22')]=qs['offset'](_0x4e408b[_0x3789('0x3a')][_0x3789('0x22')]);}_0x30c797['order']=qs[_0x3789('0x42')](_0x4e408b[_0x3789('0x3a')][_0x3789('0x42')]);_0x30c797[_0x3789('0x43')]=qs['filters'](_[_0x3789('0x44')](_0x4e408b[_0x3789('0x3a')],_0x1d4fbe[_0x3789('0x3c')]),_0x4f5d6c);if(_0x4e408b[_0x3789('0x3a')][_0x3789('0x45')]){_0x30c797[_0x3789('0x43')]=_[_0x3789('0x46')](_0x30c797[_0x3789('0x43')],{'$or':_[_0x3789('0x34')](_0x4f5d6c,function(_0x2a7981){if(_0x2a7981[_0x3789('0x37')]!==_0x3789('0x47')){var _0x13d76c={};_0x13d76c[_0x2a7981[_0x3789('0x31')]]={'$like':'%'+_0x4e408b['query']['filter']+'%'};return _0x13d76c;}})});}_0x30c797=_[_0x3789('0x46')]({},_0x30c797,_0x4e408b[_0x3789('0x48')]);var _0x22ec8a={'where':_0x30c797[_0x3789('0x43')]};return db['Plugin'][_0x3789('0x25')](_0x22ec8a)[_0x3789('0x2c')](function(_0x2816bd){_0x5b5d3a['count']=_0x2816bd;if(_0x4e408b[_0x3789('0x3a')][_0x3789('0x49')]){_0x30c797[_0x3789('0x4a')]=[{'all':!![]}];}return db[_0x3789('0x35')]['findAll'](_0x30c797);})[_0x3789('0x2c')](function(_0x196ee6){_0x5b5d3a[_0x3789('0x4b')]=_0x196ee6;return _0x5b5d3a;})[_0x3789('0x2c')](respondWithFilteredResult(_0x13b79f,_0x30c797))[_0x3789('0x4c')](handleError(_0x13b79f,null));};exports[_0x3789('0x4d')]=function(_0x22daad,_0xdf414f){var _0x5cbdd5={'raw':!![],'where':{'id':_0x22daad[_0x3789('0x4e')]['id']}},_0x22a00d={};_0x22a00d[_0x3789('0x39')]=_['keys'](db[_0x3789('0x35')][_0x3789('0x36')]);_0x22a00d[_0x3789('0x3a')]=_[_0x3789('0x3b')](_0x22daad[_0x3789('0x3a')]);_0x22a00d['filters']=_[_0x3789('0x3d')](_0x22a00d['model'],_0x22a00d[_0x3789('0x3a')]);_0x5cbdd5[_0x3789('0x3f')]=_[_0x3789('0x3d')](_0x22a00d[_0x3789('0x39')],qs[_0x3789('0x3e')](_0x22daad[_0x3789('0x3a')]['fields']));_0x5cbdd5[_0x3789('0x3f')]=_0x5cbdd5['attributes'][_0x3789('0x4f')]?_0x5cbdd5[_0x3789('0x3f')]:_0x22a00d[_0x3789('0x39')];if(_0x22daad['query'][_0x3789('0x49')]){_0x5cbdd5['include']=[{'all':!![]}];}_0x5cbdd5=_[_0x3789('0x46')]({},_0x5cbdd5,_0x22daad[_0x3789('0x48')]);return db['Plugin']['find'](_0x5cbdd5)[_0x3789('0x2c')](handleEntityNotFound(_0xdf414f,null))[_0x3789('0x2c')](respondWithResult(_0xdf414f,null))['catch'](handleError(_0xdf414f,null));};exports[_0x3789('0x50')]=function(_0x1cca1e,_0x4e7e10,_0x283452){return db[_0x3789('0x35')][_0x3789('0x51')]({'where':{'id':_0x1cca1e['params']['id']},'attributes':[_0x3789('0x31'),_0x3789('0x5')],'raw':!![]})[_0x3789('0x2c')](handleEntityNotFound(_0x4e7e10,null))[_0x3789('0x2c')](function(_0x2f36dd){if(_0x2f36dd){var _0x1352df=path[_0x3789('0x52')](config[_0x3789('0x53')],_0x3789('0x54'),util['format'](_0x3789('0x55'),path[_0x3789('0x56')](_0x2f36dd[_0x3789('0x5')])));var _0xa48ae9=fs['createWriteStream'](_0x1352df);var _0x2caab4=archiver('zip',{'zlib':{'level':0x9}});_0x2caab4['on']('warning',function(_0x47d46d){if(_0x47d46d[_0x3789('0x57')]==='ENOENT'){logger[_0x3789('0x58')](_0x47d46d);}else{throw new db[(_0x3789('0x59'))][(_0x3789('0x5a'))](_0x3789('0x5b'));}});_0x2caab4['on'](_0x3789('0x58'),function(_0x36466e){throw new db[(_0x3789('0x59'))][(_0x3789('0x5a'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');});_0x2caab4[_0x3789('0x5c')](_0xa48ae9);_0x2caab4[_0x3789('0x5d')]('**/*',{'cwd':path[_0x3789('0x52')](config[_0x3789('0x53')],_0x3789('0x54'),path[_0x3789('0x5e')](_0x2f36dd['path'])),'ignore':[path[_0x3789('0x52')](path['basename'](_0x2f36dd[_0x3789('0x5')]),_0x3789('0x5f')),path['join'](path[_0x3789('0x56')](_0x2f36dd[_0x3789('0x5')]),'attachments/**/*')],'nodir':!![]})[_0x3789('0x60')]();_0xa48ae9['on'](_0x3789('0x61'),function(){if(!fs['existsSync'](_0x1352df)){throw new db[(_0x3789('0x59'))]['Error'](_0x3789('0x62'));}return _0x4e7e10[_0x3789('0x50')](_0x1352df,util[_0x3789('0x63')](_0x3789('0x55'),path[_0x3789('0x56')](_0x2f36dd['path'])),function(_0x255369){if(_0x255369){throw new db[(_0x3789('0x59'))][(_0x3789('0x5a'))](_0x3789('0x64'));}fs['unlinkSync'](_0x1352df);logger[_0x3789('0x65')]('Download\x20completed');logger[_0x3789('0x65')](_0x3789('0x66'));});});}return null;})[_0x3789('0x4c')](handleError(_0x4e7e10,null));};exports['upload']=function(_0x2dc118,_0x4b1116,_0x3cc71b){var _0x2b3464=path[_0x3789('0x56')](_0x2dc118[_0x3789('0x67')][_0x3789('0x68')],path[_0x3789('0x69')](_0x2dc118[_0x3789('0x67')][_0x3789('0x68')]));var _0xed411f=path[_0x3789('0x52')](config['root'],_0x3789('0x54'),_0x2dc118[_0x3789('0x67')]['filename']);var _0x45d13f=path[_0x3789('0x52')](config[_0x3789('0x53')],_0x3789('0x54'),_0x2b3464);logger['info'](_0x3789('0x6a'),_0xed411f);logger[_0x3789('0x65')](_0x3789('0x6b'),_0x45d13f);try{fs[_0x3789('0x6c')](_0xed411f,parseInt(_0x3789('0x6d'),0x8));extract(_0xed411f,{'dir':_0x45d13f},function(_0x271e6c){if(_0x271e6c){logger[_0x3789('0x58')](_0x271e6c);handleError(_0x271e6c,!![]);};var _0x26eeb3=fs[_0x3789('0x6e')](_0x45d13f);if(_0x26eeb3[_0x3789('0x4f')]>0x1){removeReferences(_0xed411f,_0x45d13f);logger[_0x3789('0x58')](_0x3789('0x6f'));return _0x3cc71b(new Error(_0x3789('0x6f')));}var _0x51361d=fs[_0x3789('0x70')](path['join'](_0x45d13f,_0x26eeb3[0x0]));if(_0x51361d[_0x3789('0x71')]()){removeReferences(_0xed411f,_0x45d13f);logger['error'](_0x3789('0x6f'));return _0x3cc71b(new Error(_0x3789('0x6f')));}if(_0x51361d[_0x3789('0x72')]()){var _0x44e070=fs[_0x3789('0x6e')](path[_0x3789('0x52')](_0x45d13f,_0x26eeb3[0x0]));if(_0x44e070[_0x3789('0x4f')]===0x0){removeReferences(_0xed411f,_0x45d13f);logger[_0x3789('0x58')](_0x3789('0x6f'));return _0x3cc71b(new Error('Invalid\x20plugin\x20structure'));}var _0x53385f=_0x44e070['some'](function(_0xaad834){return _0xaad834===_0x3789('0x73');});if(!_0x53385f){return _0x3cc71b(new Error(_0x3789('0x74')));}var _0x127dfd=fs[_0x3789('0x75')](path[_0x3789('0x52')](_0x45d13f,_0x26eeb3[0x0],_0x3789('0x73')));var _0x5795c8=JSON['parse'](_0x127dfd);if(_0x3789('0x23')==typeof _0x5795c8[_0x3789('0x31')]){return _0x3cc71b(new Error(_0x3789('0x76')));}if(_0x3789('0x23')==typeof _0x5795c8[_0x3789('0x37')]){return _0x3cc71b(new Error(_0x3789('0x77')));}if(_0x3789('0x23')==typeof _0x5795c8['version']){return _0x3cc71b(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if(_0x3789('0x23')==typeof _0x5795c8[_0x3789('0x78')]){return _0x3cc71b(new Error(_0x3789('0x79')));}if(_0x5795c8['type']===_0x3789('0x7a')){if('undefined'==typeof _0x5795c8[_0x3789('0x78')][_0x3789('0x7b')]){return _0x3cc71b(new Error(_0x3789('0x7c')));}if(_0x3789('0x23')==typeof _0x5795c8[_0x3789('0x78')]['views']['admin']&&_0x3789('0x23')==typeof _0x5795c8[_0x3789('0x78')]['views'][_0x3789('0x7d')]){return _0x3cc71b(new Error('Invalid\x20manifest:\x20no\x20view\x20specified'));}}else if(_0x5795c8[_0x3789('0x37')]===_0x3789('0x7e')){if('undefined'==typeof _0x5795c8[_0x3789('0x78')][_0x3789('0x7f')]){return _0x3cc71b(new Error('Invalid\x20manifest:\x20script\x20name\x20missing'));}if('undefined'==typeof _0x5795c8[_0x3789('0x78')][_0x3789('0x80')]){return _0x3cc71b(new Error(_0x3789('0x81')));}}else{return _0x3cc71b(new Error('Invalid\x20manifest:\x20invalid\x20type'));}var _0xa95e08=_0x5795c8[_0x3789('0x31')];var _0x132528=_0x5795c8[_0x3789('0x82')];var _0x2dfb93=_0x5795c8['type'];var _0x17948b=_0x5795c8[_0x3789('0x83')]?_0x5795c8[_0x3789('0x83')]:_0x3789('0x84');var _0xb6f9bd=_0x5795c8[_0x3789('0x85')]?_0x5795c8[_0x3789('0x85')]:_0x3789('0x86');var _0x333dce='';var _0x545f71='';var _0x4a5c93='';var _0x4c9740='';var _0x41ada1=_0x5795c8[_0x3789('0x87')];if(_0x2dfb93===_0x3789('0x7a')){if(_0x3789('0x23')!=typeof _0x5795c8['parameters'][_0x3789('0x7b')][_0x3789('0x88')]){var _0x14b4ef=_0x5795c8['parameters']['views'][_0x3789('0x88')];if(!/^(f|ht)tps?:\/\//i[_0x3789('0x89')](_0x14b4ef)){_0x333dce=path[_0x3789('0x52')](_0x3789('0x8a'),_0x2b3464,_0x26eeb3[0x0],_0x14b4ef);}else{_0x333dce=_0x14b4ef;}}else{logger[_0x3789('0x65')]('Warning:\x20admin\x20view\x20not\x20specified');}if(_0x3789('0x23')!=typeof _0x5795c8[_0x3789('0x78')][_0x3789('0x7b')]['agent']){var _0x3d6812=_0x5795c8[_0x3789('0x78')][_0x3789('0x7b')][_0x3789('0x7d')];if(!/^(f|ht)tps?:\/\//i[_0x3789('0x89')](_0x3d6812)){_0x545f71=path[_0x3789('0x52')](_0x3789('0x8a'),_0x2b3464,_0x26eeb3[0x0],_0x3d6812);}else{_0x545f71=_0x3d6812;}}else{logger[_0x3789('0x65')](_0x3789('0x8b'));}}else if(_0x2dfb93==='script'){_0x4a5c93=_0x5795c8[_0x3789('0x78')][_0x3789('0x7f')];_0x4c9740=_0x5795c8[_0x3789('0x78')]['scriptPath'];if(_0x3789('0x23')!=typeof _0x5795c8[_0x3789('0x78')][_0x3789('0x7b')]){if(_0x3789('0x23')!=typeof _0x5795c8[_0x3789('0x78')][_0x3789('0x7b')][_0x3789('0x88')]){var _0x14b4ef=_0x5795c8['parameters']['views'][_0x3789('0x88')];if(!/^(f|ht)tps?:\/\//i[_0x3789('0x89')](_0x14b4ef)){_0x333dce=path[_0x3789('0x52')](_0x3789('0x8a'),_0x2b3464,_0x26eeb3[0x0],_0x14b4ef);}else{_0x333dce=_0x14b4ef;}}if(_0x3789('0x23')!=typeof _0x5795c8[_0x3789('0x78')][_0x3789('0x7b')]['agent']){var _0x3d6812=_0x5795c8['parameters'][_0x3789('0x7b')]['agent'];if(!/^(f|ht)tps?:\/\//i['test'](_0x3d6812)){_0x545f71=path[_0x3789('0x52')](_0x3789('0x8a'),_0x2b3464,_0x26eeb3[0x0],_0x3d6812);}else{_0x545f71=_0x3d6812;}}}}var _0x2f0be6={'name':_0xa95e08,'description':_0x132528,'path':path[_0x3789('0x52')](_0x2b3464,_0x26eeb3[0x0]),'type':_0x2dfb93,'sidebar':_0x17948b,'icon':_0xb6f9bd,'adminUrl':_0x333dce,'agentUrl':_0x545f71,'scriptName':_0x4a5c93,'scriptPath':_0x4c9740,'version':_0x41ada1};removeReferences(_0xed411f,null);return db[_0x3789('0x35')][_0x3789('0x8c')](_0x2f0be6)[_0x3789('0x2c')](function(_0x17850c){var _0x37f4bd={'role':_0x2dc118[_0x3789('0x8d')][_0x3789('0x8e')],'userProfileId':_0x2dc118[_0x3789('0x8d')][_0x3789('0x8f')]};if(!_0x37f4bd)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x37f4bd['role']===_0x3789('0x90')){var _0x12e83b=_0x17850c['get']({'plain':!![]});return db[_0x3789('0x91')][_0x3789('0x51')]({'where':{'name':'Plugins','userProfileId':_0x37f4bd[_0x3789('0x8f')]},'raw':!![]})[_0x3789('0x2c')](function(_0xcebdbf){if(_0xcebdbf&&_0xcebdbf[_0x3789('0x92')]===0x0){return db[_0x3789('0x2e')][_0x3789('0x8c')]({'name':_0x12e83b[_0x3789('0x31')],'resourceId':_0x12e83b['id'],'type':_0xcebdbf[_0x3789('0x31')],'sectionId':_0xcebdbf['id']},{})[_0x3789('0x2c')](function(){return _0x17850c;});}else{return _0x17850c;}})[_0x3789('0x4c')](function(_0x331c49){logger[_0x3789('0x58')](_0x3789('0x93'),_0x331c49);throw _0x331c49;});}return _0x17850c;})[_0x3789('0x2c')](respondWithResult(_0x4b1116,null))[_0x3789('0x4c')](handleError(_0x4b1116,null));}});}catch(_0x41c05d){_0x4b1116[_0x3789('0x1f')](0x1f4)[_0x3789('0x32')](_0x41c05d);}};function removeReferences(_0x38d4d1,_0x43be9f){try{if(_0x38d4d1){fs[_0x3789('0x94')](_0x38d4d1);logger['info'](_0x3789('0x95'));}if(_0x43be9f){rimraf(_0x43be9f,function(){});logger[_0x3789('0x65')](_0x3789('0x96'));}}catch(_0x218f3a){logger[_0x3789('0x58')](_0x218f3a);}}exports['update']=function(_0x3cafab,_0x5ad59c,_0x44a676){return db[_0x3789('0x35')][_0x3789('0x51')]({'where':{'id':_0x3cafab[_0x3789('0x4e')]['id']}})[_0x3789('0x2c')](handleEntityNotFound(_0x5ad59c,null))[_0x3789('0x2c')](saveUpdates(_0x3cafab[_0x3789('0x8d')],null))[_0x3789('0x2c')](respondWithResult(_0x5ad59c,null))[_0x3789('0x4c')](handleError(_0x5ad59c,null));};exports[_0x3789('0x97')]=function(_0x47cac6,_0x4de427,_0xa95f53){return db[_0x3789('0x35')][_0x3789('0x51')]({'where':{'id':_0x47cac6['params']['id']}})[_0x3789('0x2c')](function(_0x194734){if(_0x194734){return _0x194734[_0x3789('0x2f')]();}})[_0x3789('0x2c')](function(_0x44d503){rimraf(path[_0x3789('0x52')](config[_0x3789('0x53')],'server/files/plugins',path[_0x3789('0x5e')](_0x44d503['path'])),function(){});return _0x44d503;})[_0x3789('0x2c')](handleEntityNotFound(_0x4de427,null))[_0x3789('0x2c')](respondWithStatusCode(_0x4de427,null))[_0x3789('0x4c')](handleError(_0x4de427,null));};exports[_0x3789('0x98')]=function(_0x2d8f09,_0x50aae1,_0x4a7061){return BPromise[_0x3789('0x99')]()[_0x3789('0x2c')](function(){if(!_0x2d8f09[_0x3789('0x3a')][_0x3789('0x5')]){throw new Error(_0x3789('0x9a'));}if(!_0x2d8f09[_0x3789('0x3a')][_0x3789('0x9b')]){throw new Error(_0x3789('0x9c'));}var _0x5c8b4=_0x2d8f09[_0x3789('0x3a')][_0x3789('0x9d')]?_0x2d8f09['query']['hostname']+':'+_0x2d8f09['query'][_0x3789('0x9b')]:'http://localhost:'+_0x2d8f09[_0x3789('0x3a')][_0x3789('0x9b')];var _0x31d2f7=_0x2d8f09[_0x3789('0x3a')]['json']?_0x2d8f09[_0x3789('0x3a')][_0x3789('0x21')]:!![];var _0x3f831f=_0x2d8f09[_0x3789('0x3a')]['encoding']?_0x2d8f09[_0x3789('0x3a')][_0x3789('0x9e')]:null;var _0x35c01b={'method':_0x2d8f09[_0x3789('0x9f')],'uri':util['format'](_0x3789('0xa0'),_0x5c8b4,_0x2d8f09['query']['path']),'json':_0x31d2f7,'resolveWithFullResponse':!![],'encoding':_0x3f831f,'qs':_0x2d8f09[_0x3789('0x3a')]};if(_0x2d8f09[_0x3789('0xa1')]){_0x35c01b[_0x3789('0xa1')]=_0x2d8f09[_0x3789('0xa1')];if(_0x35c01b['headers'][_0x3789('0xa2')]){delete _0x35c01b[_0x3789('0xa1')][_0x3789('0xa2')];}}if(_0x35c01b[_0x3789('0xa1')][_0x3789('0xa3')]){delete _0x35c01b[_0x3789('0xa1')][_0x3789('0xa3')];}return rp(_0x35c01b);})[_0x3789('0x2c')](function(_0x1be535){if(_0x1be535){_0x50aae1[_0x3789('0x26')](_0x1be535[_0x3789('0xa1')]);logger[_0x3789('0x65')](_0x1be535['body']);if(_['endsWith'](_0x2d8f09[_0x3789('0x3a')][_0x3789('0x5')],_0x3789('0x50'))&&_0x1be535['statusCode']==0x1f4){return _0x50aae1['sendStatus'](_0x1be535[_0x3789('0xa4')]);}else{return _0x50aae1[_0x3789('0x1f')](_0x1be535[_0x3789('0xa4')])[_0x3789('0x32')](_0x1be535['body']);}}else{return _0x50aae1[_0x3789('0x1e')](0xc8);}})[_0x3789('0x4c')](handleError(_0x50aae1,null));};exports[_0x3789('0xa5')]=function(_0x3ac351,_0x444bb0,_0x4b3d8c){return BPromise[_0x3789('0x99')]()[_0x3789('0x2c')](function(){if(!_0x3ac351[_0x3789('0x3a')][_0x3789('0x5')]){throw new Error(_0x3789('0x9a'));}if(!_0x3ac351['query']['port']){throw new Error(_0x3789('0x9c'));}var _0x191402=_0x3ac351[_0x3789('0x3a')][_0x3789('0x9d')]?_0x3ac351[_0x3789('0x3a')][_0x3789('0x9d')]+':'+_0x3ac351[_0x3789('0x3a')][_0x3789('0x9b')]:_0x3789('0xa6')+_0x3ac351[_0x3789('0x3a')][_0x3789('0x9b')];var _0x3529ff=_0x3ac351[_0x3789('0x3a')]['json']?_0x3ac351[_0x3789('0x3a')][_0x3789('0x21')]:!![];var _0x3bd47e=_0x3ac351[_0x3789('0x3a')]['encoding']?_0x3ac351[_0x3789('0x3a')][_0x3789('0x9e')]:null;var _0x2cefe4={'method':_0x3ac351[_0x3789('0x9f')],'uri':util[_0x3789('0x63')](_0x3789('0xa0'),_0x191402,_0x3ac351['query']['path']),'json':_0x3529ff,'resolveWithFullResponse':!![],'encoding':_0x3bd47e,'body':_0x3ac351[_0x3789('0x8d')]};if(_0x3ac351[_0x3789('0xa1')]){_0x2cefe4[_0x3789('0xa1')]=_0x3ac351[_0x3789('0xa1')];if(_0x2cefe4[_0x3789('0xa1')][_0x3789('0xa2')]){delete _0x2cefe4[_0x3789('0xa1')][_0x3789('0xa2')];}}if(_0x2cefe4[_0x3789('0xa1')][_0x3789('0xa3')]){delete _0x2cefe4[_0x3789('0xa1')][_0x3789('0xa3')];}return rp(_0x2cefe4);})[_0x3789('0x2c')](function(_0x51bfce){if(_0x51bfce){_0x444bb0[_0x3789('0x26')](_0x51bfce[_0x3789('0xa1')]);logger['info'](_0x51bfce['body']);return _0x444bb0[_0x3789('0x1f')](_0x51bfce['statusCode'])[_0x3789('0x32')](_0x51bfce[_0x3789('0x8d')]);}else{return _0x444bb0[_0x3789('0x1e')](0xc8);}})[_0x3789('0x4c')](handleError(_0x444bb0,null));};
\ No newline at end of file
+var _0x2617=['dirname','attachments/**/*','close','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','file','filename','extname','Plugin\x20upload\x20destination:\x20%s','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','Invalid\x20manifest:\x20name\x20missing','type','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20parameters\x20missing','html','views','Invalid\x20manifest:\x20views\x20missing','parameters','admin','agent','script','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','plugins','test','Warning:\x20agent\x20view\x20not\x20specified','scriptName','create','role','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','%s%s','headers','content-length','content-type','endsWith','statusCode','webhookPost','method','eml-format','zip-dir','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','archiver','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','status','end','json','offset','limit','undefined','count','set','Content-Range','update','then','destroy','get','Plugins','sendStatus','error','stack','name','send','Plugin','rawAttributes','fieldName','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','show','params','catch','download','find','join','root','server/files/plugins','format','%s.zip','basename','zip','warning','code','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','Sequelize','pipe','glob','**/*'];(function(_0x5645ba,_0x5a49e1){var _0x1a2dab=function(_0xe391f7){while(--_0xe391f7){_0x5645ba['push'](_0x5645ba['shift']());}};_0x1a2dab(++_0x5a49e1);}(_0x2617,0xed));var _0x7261=function(_0x17763e,_0x1091fa){_0x17763e=_0x17763e-0x0;var _0x35c5d4=_0x2617[_0x17763e];return _0x35c5d4;};'use strict';var emlformat=require(_0x7261('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7261('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7261('0x2'));var moment=require(_0x7261('0x3'));var BPromise=require(_0x7261('0x4'));var Mustache=require('mustache');var util=require(_0x7261('0x5'));var path=require(_0x7261('0x6'));var sox=require('sox');var csv=require(_0x7261('0x7'));var ejs=require(_0x7261('0x8'));var fs=require('fs');var fs_extra=require(_0x7261('0x9'));var _=require(_0x7261('0xa'));var squel=require(_0x7261('0xb'));var crypto=require(_0x7261('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x7261('0xd'));var Papa=require(_0x7261('0xe'));var extract=require('extract-zip');var rimraf=require('rimraf');var archiver=require(_0x7261('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x7261('0x10'));var as=require(_0x7261('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7261('0x12'))('api');var utils=require(_0x7261('0x13'));var config=require(_0x7261('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x7261('0x15'))['db'];config[_0x7261('0x16')]=_[_0x7261('0x17')](config[_0x7261('0x16')],{'host':_0x7261('0x18'),'port':0x18eb});var socket=require(_0x7261('0x19'))(new Redis(config[_0x7261('0x16')]));require(_0x7261('0x1a'))[_0x7261('0x1b')](socket);function respondWithStatusCode(_0x5941e5,_0x5cf756){_0x5cf756=_0x5cf756||0xcc;return function(_0x2b525c){if(_0x2b525c){return _0x5941e5['sendStatus'](_0x5cf756);}return _0x5941e5[_0x7261('0x1c')](_0x5cf756)[_0x7261('0x1d')]();};}function respondWithResult(_0x179e64,_0xea069c){_0xea069c=_0xea069c||0xc8;return function(_0x2dcec1){if(_0x2dcec1){return _0x179e64[_0x7261('0x1c')](_0xea069c)[_0x7261('0x1e')](_0x2dcec1);}};}function respondWithFilteredResult(_0x3fa626,_0x57a471){return function(_0x25b67a){if(_0x25b67a){var _0x48f1cf=typeof _0x57a471[_0x7261('0x1f')]==='undefined'&&typeof _0x57a471[_0x7261('0x20')]===_0x7261('0x21');var _0x5e15ee=_0x25b67a[_0x7261('0x22')];var _0x534d29=_0x48f1cf?0x0:_0x57a471['offset'];var _0x1c5239=_0x48f1cf?_0x25b67a[_0x7261('0x22')]:_0x57a471[_0x7261('0x1f')]+_0x57a471[_0x7261('0x20')];var _0x56a793;if(_0x1c5239>=_0x5e15ee){_0x1c5239=_0x5e15ee;_0x56a793=0xc8;}else{_0x56a793=0xce;}_0x3fa626[_0x7261('0x1c')](_0x56a793);return _0x3fa626[_0x7261('0x23')](_0x7261('0x24'),_0x534d29+'-'+_0x1c5239+'/'+_0x5e15ee)[_0x7261('0x1e')](_0x25b67a);}return null;};}function patchUpdates(_0x1caf17){return function(_0x5af995){try{jsonpatch['apply'](_0x5af995,_0x1caf17,!![]);}catch(_0x2da391){return BPromise['reject'](_0x2da391);}return _0x5af995['save']();};}function saveUpdates(_0x2f492c,_0x2026c3){return function(_0x297bdd){if(_0x297bdd){return _0x297bdd[_0x7261('0x25')](_0x2f492c)[_0x7261('0x26')](function(_0x5e4f9f){return _0x5e4f9f;});}return null;};}function removeEntity(_0x39028d,_0x362fb3){return function(_0x42db99){if(_0x42db99){return _0x42db99[_0x7261('0x27')]()[_0x7261('0x26')](function(){var _0x21b0dd=_0x42db99[_0x7261('0x28')]({'plain':!![]});var _0x165321=_0x7261('0x29');return db['UserProfileResource'][_0x7261('0x27')]({'where':{'type':_0x165321,'resourceId':_0x21b0dd['id']}})[_0x7261('0x26')](function(){return _0x42db99;});})[_0x7261('0x26')](function(){_0x39028d[_0x7261('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x378a64,_0x165974){return function(_0x45e0f8){if(!_0x45e0f8){_0x378a64[_0x7261('0x2a')](0x194);}return _0x45e0f8;};}function handleError(_0x251d10,_0x2c8192){_0x2c8192=_0x2c8192||0x1f4;return function(_0x294697){logger[_0x7261('0x2b')](_0x294697[_0x7261('0x2c')]);if(_0x294697[_0x7261('0x2d')]){delete _0x294697[_0x7261('0x2d')];}_0x251d10[_0x7261('0x1c')](_0x2c8192)[_0x7261('0x2e')](_0x294697);};}exports['index']=function(_0x4da8c2,_0x18e89b){var _0x5bc81f={},_0x2bc080={},_0x506674={'count':0x0,'rows':[]};var _0x424f3e=_['map'](db[_0x7261('0x2f')][_0x7261('0x30')],function(_0x132736){return{'name':_0x132736[_0x7261('0x31')],'type':_0x132736['type']['key']};});_0x2bc080[_0x7261('0x32')]=_[_0x7261('0x33')](_0x424f3e,_0x7261('0x2d'));_0x2bc080[_0x7261('0x34')]=_[_0x7261('0x35')](_0x4da8c2[_0x7261('0x34')]);_0x2bc080[_0x7261('0x36')]=_[_0x7261('0x37')](_0x2bc080[_0x7261('0x32')],_0x2bc080['query']);_0x5bc81f[_0x7261('0x38')]=_[_0x7261('0x37')](_0x2bc080['model'],qs[_0x7261('0x39')](_0x4da8c2['query'][_0x7261('0x39')]));_0x5bc81f[_0x7261('0x38')]=_0x5bc81f[_0x7261('0x38')][_0x7261('0x3a')]?_0x5bc81f[_0x7261('0x38')]:_0x2bc080['model'];if(!_0x4da8c2['query'][_0x7261('0x3b')](_0x7261('0x3c'))){_0x5bc81f[_0x7261('0x20')]=qs['limit'](_0x4da8c2[_0x7261('0x34')][_0x7261('0x20')]);_0x5bc81f['offset']=qs[_0x7261('0x1f')](_0x4da8c2['query']['offset']);}_0x5bc81f['order']=qs['sort'](_0x4da8c2[_0x7261('0x34')][_0x7261('0x3d')]);_0x5bc81f[_0x7261('0x3e')]=qs[_0x7261('0x36')](_['pick'](_0x4da8c2['query'],_0x2bc080[_0x7261('0x36')]),_0x424f3e);if(_0x4da8c2[_0x7261('0x34')]['filter']){_0x5bc81f[_0x7261('0x3e')]=_['merge'](_0x5bc81f[_0x7261('0x3e')],{'$or':_[_0x7261('0x33')](_0x424f3e,function(_0x441f1c){if(_0x441f1c['type']!==_0x7261('0x3f')){var _0x26d3de={};_0x26d3de[_0x441f1c[_0x7261('0x2d')]]={'$like':'%'+_0x4da8c2['query'][_0x7261('0x40')]+'%'};return _0x26d3de;}})});}_0x5bc81f=_[_0x7261('0x41')]({},_0x5bc81f,_0x4da8c2[_0x7261('0x42')]);var _0x599441={'where':_0x5bc81f[_0x7261('0x3e')]};return db['Plugin'][_0x7261('0x22')](_0x599441)[_0x7261('0x26')](function(_0xb0bf41){_0x506674[_0x7261('0x22')]=_0xb0bf41;if(_0x4da8c2[_0x7261('0x34')][_0x7261('0x43')]){_0x5bc81f[_0x7261('0x44')]=[{'all':!![]}];}return db[_0x7261('0x2f')][_0x7261('0x45')](_0x5bc81f);})[_0x7261('0x26')](function(_0x42ff42){_0x506674[_0x7261('0x46')]=_0x42ff42;return _0x506674;})[_0x7261('0x26')](respondWithFilteredResult(_0x18e89b,_0x5bc81f))['catch'](handleError(_0x18e89b,null));};exports[_0x7261('0x47')]=function(_0x5c2fcd,_0x40e7c9){var _0x4f8c04={'raw':!![],'where':{'id':_0x5c2fcd[_0x7261('0x48')]['id']}},_0x15efab={};_0x15efab[_0x7261('0x32')]=_[_0x7261('0x35')](db[_0x7261('0x2f')][_0x7261('0x30')]);_0x15efab[_0x7261('0x34')]=_[_0x7261('0x35')](_0x5c2fcd[_0x7261('0x34')]);_0x15efab[_0x7261('0x36')]=_[_0x7261('0x37')](_0x15efab[_0x7261('0x32')],_0x15efab['query']);_0x4f8c04[_0x7261('0x38')]=_[_0x7261('0x37')](_0x15efab[_0x7261('0x32')],qs[_0x7261('0x39')](_0x5c2fcd['query'][_0x7261('0x39')]));_0x4f8c04[_0x7261('0x38')]=_0x4f8c04[_0x7261('0x38')][_0x7261('0x3a')]?_0x4f8c04['attributes']:_0x15efab[_0x7261('0x32')];if(_0x5c2fcd[_0x7261('0x34')][_0x7261('0x43')]){_0x4f8c04[_0x7261('0x44')]=[{'all':!![]}];}_0x4f8c04=_['merge']({},_0x4f8c04,_0x5c2fcd[_0x7261('0x42')]);return db['Plugin']['find'](_0x4f8c04)[_0x7261('0x26')](handleEntityNotFound(_0x40e7c9,null))['then'](respondWithResult(_0x40e7c9,null))[_0x7261('0x49')](handleError(_0x40e7c9,null));};exports[_0x7261('0x4a')]=function(_0x219b17,_0x165cf1,_0x1155af){return db['Plugin'][_0x7261('0x4b')]({'where':{'id':_0x219b17[_0x7261('0x48')]['id']},'attributes':[_0x7261('0x2d'),_0x7261('0x6')],'raw':!![]})[_0x7261('0x26')](handleEntityNotFound(_0x165cf1,null))[_0x7261('0x26')](function(_0x23e21e){if(_0x23e21e){var _0x52d1d9=path[_0x7261('0x4c')](config[_0x7261('0x4d')],_0x7261('0x4e'),util[_0x7261('0x4f')](_0x7261('0x50'),path[_0x7261('0x51')](_0x23e21e['path'])));var _0x18d6d5=fs['createWriteStream'](_0x52d1d9);var _0x42021a=archiver(_0x7261('0x52'),{'zlib':{'level':0x9}});_0x42021a['on'](_0x7261('0x53'),function(_0x28d684){if(_0x28d684[_0x7261('0x54')]==='ENOENT'){logger[_0x7261('0x2b')](_0x28d684);}else{throw new db['Sequelize'][(_0x7261('0x55'))](_0x7261('0x56'));}});_0x42021a['on'](_0x7261('0x2b'),function(_0x36d4a7){throw new db[(_0x7261('0x57'))][(_0x7261('0x55'))](_0x7261('0x56'));});_0x42021a[_0x7261('0x58')](_0x18d6d5);_0x42021a[_0x7261('0x59')](_0x7261('0x5a'),{'cwd':path[_0x7261('0x4c')](config[_0x7261('0x4d')],_0x7261('0x4e'),path[_0x7261('0x5b')](_0x23e21e[_0x7261('0x6')])),'ignore':[path[_0x7261('0x4c')](path['basename'](_0x23e21e[_0x7261('0x6')]),'node_modules/**/*'),path['join'](path[_0x7261('0x51')](_0x23e21e[_0x7261('0x6')]),_0x7261('0x5c'))],'nodir':!![]})['finalize']();_0x18d6d5['on'](_0x7261('0x5d'),function(){if(!fs['existsSync'](_0x52d1d9)){throw new db[(_0x7261('0x57'))][(_0x7261('0x55'))]('Plugin\x20not\x20found');}return _0x165cf1[_0x7261('0x4a')](_0x52d1d9,util[_0x7261('0x4f')](_0x7261('0x50'),path[_0x7261('0x51')](_0x23e21e[_0x7261('0x6')])),function(_0x1a94cb){if(_0x1a94cb){throw new db[(_0x7261('0x57'))]['Error'](_0x7261('0x5e'));}fs[_0x7261('0x5f')](_0x52d1d9);logger[_0x7261('0x60')](_0x7261('0x61'));logger['info'](_0x7261('0x62'));});});}return null;})[_0x7261('0x49')](handleError(_0x165cf1,null));};exports[_0x7261('0x63')]=function(_0x3000a0,_0x854ecc,_0x4bccd6){var _0x1bcee5=path[_0x7261('0x51')](_0x3000a0[_0x7261('0x64')][_0x7261('0x65')],path[_0x7261('0x66')](_0x3000a0[_0x7261('0x64')]['filename']));var _0x2e179e=path[_0x7261('0x4c')](config[_0x7261('0x4d')],_0x7261('0x4e'),_0x3000a0[_0x7261('0x64')][_0x7261('0x65')]);var _0x368035=path[_0x7261('0x4c')](config[_0x7261('0x4d')],_0x7261('0x4e'),_0x1bcee5);logger[_0x7261('0x60')]('Plugin\x20upload\x20filepath:\x20%s',_0x2e179e);logger['info'](_0x7261('0x67'),_0x368035);try{fs['chmodSync'](_0x2e179e,parseInt('0777',0x8));extract(_0x2e179e,{'dir':_0x368035},function(_0x1ff631){if(_0x1ff631){logger['error'](_0x1ff631);handleError(_0x1ff631,!![]);};var _0x19ef91=fs[_0x7261('0x68')](_0x368035);if(_0x19ef91[_0x7261('0x3a')]>0x1){removeReferences(_0x2e179e,_0x368035);logger['error'](_0x7261('0x69'));return _0x4bccd6(new Error('Invalid\x20plugin\x20structure'));}var _0x550261=fs[_0x7261('0x6a')](path[_0x7261('0x4c')](_0x368035,_0x19ef91[0x0]));if(_0x550261[_0x7261('0x6b')]()){removeReferences(_0x2e179e,_0x368035);logger[_0x7261('0x2b')](_0x7261('0x69'));return _0x4bccd6(new Error('Invalid\x20plugin\x20structure'));}if(_0x550261[_0x7261('0x6c')]()){var _0xe4a7d4=fs['readdirSync'](path[_0x7261('0x4c')](_0x368035,_0x19ef91[0x0]));if(_0xe4a7d4[_0x7261('0x3a')]===0x0){removeReferences(_0x2e179e,_0x368035);logger[_0x7261('0x2b')](_0x7261('0x69'));return _0x4bccd6(new Error(_0x7261('0x69')));}var _0x28c781=_0xe4a7d4[_0x7261('0x6d')](function(_0x279548){return _0x279548===_0x7261('0x6e');});if(!_0x28c781){return _0x4bccd6(new Error(_0x7261('0x6f')));}var _0x273f1e=fs[_0x7261('0x70')](path[_0x7261('0x4c')](_0x368035,_0x19ef91[0x0],_0x7261('0x6e')));var _0x307cdc=JSON['parse'](_0x273f1e);if('undefined'==typeof _0x307cdc[_0x7261('0x2d')]){return _0x4bccd6(new Error(_0x7261('0x71')));}if(_0x7261('0x21')==typeof _0x307cdc[_0x7261('0x72')]){return _0x4bccd6(new Error(_0x7261('0x73')));}if('undefined'==typeof _0x307cdc[_0x7261('0x74')]){return _0x4bccd6(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if(_0x7261('0x21')==typeof _0x307cdc['parameters']){return _0x4bccd6(new Error(_0x7261('0x75')));}if(_0x307cdc[_0x7261('0x72')]===_0x7261('0x76')){if('undefined'==typeof _0x307cdc['parameters'][_0x7261('0x77')]){return _0x4bccd6(new Error(_0x7261('0x78')));}if(_0x7261('0x21')==typeof _0x307cdc[_0x7261('0x79')]['views'][_0x7261('0x7a')]&&_0x7261('0x21')==typeof _0x307cdc['parameters']['views'][_0x7261('0x7b')]){return _0x4bccd6(new Error('Invalid\x20manifest:\x20no\x20view\x20specified'));}}else if(_0x307cdc[_0x7261('0x72')]===_0x7261('0x7c')){if(_0x7261('0x21')==typeof _0x307cdc[_0x7261('0x79')]['scriptName']){return _0x4bccd6(new Error(_0x7261('0x7d')));}if(_0x7261('0x21')==typeof _0x307cdc[_0x7261('0x79')][_0x7261('0x7e')]){return _0x4bccd6(new Error('Invalid\x20manifest:\x20script\x20path\x20missing'));}}else{return _0x4bccd6(new Error(_0x7261('0x7f')));}var _0x4ebc0b=_0x307cdc['name'];var _0x2ff662=_0x307cdc[_0x7261('0x80')];var _0x549b0e=_0x307cdc[_0x7261('0x72')];var _0x30b467=_0x307cdc[_0x7261('0x81')]?_0x307cdc[_0x7261('0x81')]:_0x7261('0x82');var _0x5c909c=_0x307cdc[_0x7261('0x83')]?_0x307cdc['icon']:_0x7261('0x84');var _0x22ffc4='';var _0x500bac='';var _0x356092='';var _0x3e2cea='';var _0x3902e0=_0x307cdc['version'];if(_0x549b0e==='html'){if('undefined'!=typeof _0x307cdc[_0x7261('0x79')]['views'][_0x7261('0x7a')]){var _0x587307=_0x307cdc[_0x7261('0x79')][_0x7261('0x77')][_0x7261('0x7a')];if(!/^(f|ht)tps?:\/\//i['test'](_0x587307)){_0x22ffc4=path[_0x7261('0x4c')](_0x7261('0x85'),_0x1bcee5,_0x19ef91[0x0],_0x587307);}else{_0x22ffc4=_0x587307;}}else{logger[_0x7261('0x60')]('Warning:\x20admin\x20view\x20not\x20specified');}if(_0x7261('0x21')!=typeof _0x307cdc[_0x7261('0x79')][_0x7261('0x77')][_0x7261('0x7b')]){var _0x53b720=_0x307cdc['parameters'][_0x7261('0x77')][_0x7261('0x7b')];if(!/^(f|ht)tps?:\/\//i[_0x7261('0x86')](_0x53b720)){_0x500bac=path[_0x7261('0x4c')](_0x7261('0x85'),_0x1bcee5,_0x19ef91[0x0],_0x53b720);}else{_0x500bac=_0x53b720;}}else{logger[_0x7261('0x60')](_0x7261('0x87'));}}else if(_0x549b0e==='script'){_0x356092=_0x307cdc[_0x7261('0x79')][_0x7261('0x88')];_0x3e2cea=_0x307cdc[_0x7261('0x79')][_0x7261('0x7e')];if('undefined'!=typeof _0x307cdc[_0x7261('0x79')]['views']){if(_0x7261('0x21')!=typeof _0x307cdc[_0x7261('0x79')][_0x7261('0x77')][_0x7261('0x7a')]){var _0x587307=_0x307cdc['parameters'][_0x7261('0x77')][_0x7261('0x7a')];if(!/^(f|ht)tps?:\/\//i[_0x7261('0x86')](_0x587307)){_0x22ffc4=path['join']('plugins',_0x1bcee5,_0x19ef91[0x0],_0x587307);}else{_0x22ffc4=_0x587307;}}if(_0x7261('0x21')!=typeof _0x307cdc[_0x7261('0x79')][_0x7261('0x77')][_0x7261('0x7b')]){var _0x53b720=_0x307cdc[_0x7261('0x79')][_0x7261('0x77')][_0x7261('0x7b')];if(!/^(f|ht)tps?:\/\//i['test'](_0x53b720)){_0x500bac=path[_0x7261('0x4c')]('plugins',_0x1bcee5,_0x19ef91[0x0],_0x53b720);}else{_0x500bac=_0x53b720;}}}}var _0x4bfd20={'name':_0x4ebc0b,'description':_0x2ff662,'path':path[_0x7261('0x4c')](_0x1bcee5,_0x19ef91[0x0]),'type':_0x549b0e,'sidebar':_0x30b467,'icon':_0x5c909c,'adminUrl':_0x22ffc4,'agentUrl':_0x500bac,'scriptName':_0x356092,'scriptPath':_0x3e2cea,'version':_0x3902e0};removeReferences(_0x2e179e,null);return db[_0x7261('0x2f')][_0x7261('0x89')](_0x4bfd20)[_0x7261('0x26')](function(_0x33fb5a){var _0x476f5e={'role':_0x3000a0['body'][_0x7261('0x8a')],'userProfileId':_0x3000a0[_0x7261('0x8b')][_0x7261('0x8c')]};if(!_0x476f5e)throw new Error(_0x7261('0x8d'));if(_0x476f5e[_0x7261('0x8a')]==='user'){var _0x288519=_0x33fb5a[_0x7261('0x28')]({'plain':!![]});return db[_0x7261('0x8e')]['find']({'where':{'name':_0x7261('0x29'),'userProfileId':_0x476f5e[_0x7261('0x8c')]},'raw':!![]})[_0x7261('0x26')](function(_0x10eb41){if(_0x10eb41&&_0x10eb41[_0x7261('0x8f')]===0x0){return db['UserProfileResource'][_0x7261('0x89')]({'name':_0x288519[_0x7261('0x2d')],'resourceId':_0x288519['id'],'type':_0x10eb41[_0x7261('0x2d')],'sectionId':_0x10eb41['id']},{})[_0x7261('0x26')](function(){return _0x33fb5a;});}else{return _0x33fb5a;}})['catch'](function(_0x1b985a){logger[_0x7261('0x2b')](_0x7261('0x90'),_0x1b985a);throw _0x1b985a;});}return _0x33fb5a;})[_0x7261('0x26')](respondWithResult(_0x854ecc,null))[_0x7261('0x49')](handleError(_0x854ecc,null));}});}catch(_0xce442f){_0x854ecc[_0x7261('0x1c')](0x1f4)[_0x7261('0x2e')](_0xce442f);}};function removeReferences(_0x174ae4,_0x395b55){try{if(_0x174ae4){fs[_0x7261('0x5f')](_0x174ae4);logger[_0x7261('0x60')](_0x7261('0x91'));}if(_0x395b55){rimraf(_0x395b55,function(){});logger['info'](_0x7261('0x92'));}}catch(_0xa5df5){logger[_0x7261('0x2b')](_0xa5df5);}}exports[_0x7261('0x25')]=function(_0x3fe926,_0x407f35,_0x836357){return db[_0x7261('0x2f')][_0x7261('0x4b')]({'where':{'id':_0x3fe926[_0x7261('0x48')]['id']}})[_0x7261('0x26')](handleEntityNotFound(_0x407f35,null))['then'](saveUpdates(_0x3fe926['body'],null))[_0x7261('0x26')](respondWithResult(_0x407f35,null))[_0x7261('0x49')](handleError(_0x407f35,null));};exports[_0x7261('0x93')]=function(_0x44015a,_0x2ff1fe,_0x3ad992){return db[_0x7261('0x2f')][_0x7261('0x4b')]({'where':{'id':_0x44015a['params']['id']}})[_0x7261('0x26')](function(_0xcc153b){if(_0xcc153b){return _0xcc153b[_0x7261('0x27')]();}})[_0x7261('0x26')](function(_0x5ab166){rimraf(path[_0x7261('0x4c')](config[_0x7261('0x4d')],_0x7261('0x4e'),path[_0x7261('0x5b')](_0x5ab166['path'])),function(){});return _0x5ab166;})[_0x7261('0x26')](handleEntityNotFound(_0x2ff1fe,null))['then'](respondWithStatusCode(_0x2ff1fe,null))[_0x7261('0x49')](handleError(_0x2ff1fe,null));};exports[_0x7261('0x94')]=function(_0x375def,_0x304f56,_0x5702a4){return BPromise[_0x7261('0x95')]()['then'](function(){if(!_0x375def[_0x7261('0x34')][_0x7261('0x6')]){throw new Error(_0x7261('0x96'));}if(!_0x375def['query'][_0x7261('0x97')]){throw new Error(_0x7261('0x98'));}var _0x259069=_0x375def[_0x7261('0x34')][_0x7261('0x99')]?_0x375def[_0x7261('0x34')][_0x7261('0x99')]+':'+_0x375def['query'][_0x7261('0x97')]:_0x7261('0x9a')+_0x375def['query'][_0x7261('0x97')];var _0x3d73bc=_0x375def['query'][_0x7261('0x1e')]?_0x375def['query'][_0x7261('0x1e')]:!![];var _0x5a3d2e=_0x375def[_0x7261('0x34')]['encoding']?_0x375def['query'][_0x7261('0x9b')]:null;var _0x451b63={'method':_0x375def['method'],'uri':util['format'](_0x7261('0x9c'),_0x259069,_0x375def['query'][_0x7261('0x6')]),'json':_0x3d73bc,'resolveWithFullResponse':!![],'encoding':_0x5a3d2e,'qs':_0x375def[_0x7261('0x34')]};if(_0x375def[_0x7261('0x9d')]){_0x451b63[_0x7261('0x9d')]=_0x375def[_0x7261('0x9d')];if(_0x451b63[_0x7261('0x9d')][_0x7261('0x9e')]){delete _0x451b63['headers'][_0x7261('0x9e')];}}if(_0x451b63[_0x7261('0x9d')][_0x7261('0x9f')]){delete _0x451b63['headers'][_0x7261('0x9f')];}return rp(_0x451b63);})[_0x7261('0x26')](function(_0x186bee){if(_0x186bee){_0x304f56[_0x7261('0x23')](_0x186bee[_0x7261('0x9d')]);logger[_0x7261('0x60')](_0x186bee[_0x7261('0x8b')]);if(_[_0x7261('0xa0')](_0x375def[_0x7261('0x34')][_0x7261('0x6')],_0x7261('0x4a'))&&_0x186bee['statusCode']==0x1f4){return _0x304f56[_0x7261('0x2a')](_0x186bee[_0x7261('0xa1')]);}else{return _0x304f56['status'](_0x186bee[_0x7261('0xa1')])['send'](_0x186bee['body']);}}else{return _0x304f56['sendStatus'](0xc8);}})[_0x7261('0x49')](handleError(_0x304f56,null));};exports[_0x7261('0xa2')]=function(_0x474bab,_0x2101b8,_0xd1a41f){return BPromise[_0x7261('0x95')]()[_0x7261('0x26')](function(){if(!_0x474bab['query']['path']){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x474bab[_0x7261('0x34')]['port']){throw new Error(_0x7261('0x98'));}var _0x4b0c6e=_0x474bab[_0x7261('0x34')][_0x7261('0x99')]?_0x474bab[_0x7261('0x34')][_0x7261('0x99')]+':'+_0x474bab['query'][_0x7261('0x97')]:_0x7261('0x9a')+_0x474bab[_0x7261('0x34')][_0x7261('0x97')];var _0x2455fd=_0x474bab['query'][_0x7261('0x1e')]?_0x474bab[_0x7261('0x34')][_0x7261('0x1e')]:!![];var _0x23c530=_0x474bab[_0x7261('0x34')]['encoding']?_0x474bab['query']['encoding']:null;var _0x8f1d1b={'method':_0x474bab[_0x7261('0xa3')],'uri':util[_0x7261('0x4f')]('%s%s',_0x4b0c6e,_0x474bab[_0x7261('0x34')][_0x7261('0x6')]),'json':_0x2455fd,'resolveWithFullResponse':!![],'encoding':_0x23c530,'body':_0x474bab[_0x7261('0x8b')]};if(_0x474bab[_0x7261('0x9d')]){_0x8f1d1b[_0x7261('0x9d')]=_0x474bab[_0x7261('0x9d')];if(_0x8f1d1b[_0x7261('0x9d')][_0x7261('0x9e')]){delete _0x8f1d1b[_0x7261('0x9d')][_0x7261('0x9e')];}}if(_0x8f1d1b[_0x7261('0x9d')][_0x7261('0x9f')]){delete _0x8f1d1b[_0x7261('0x9d')][_0x7261('0x9f')];}return rp(_0x8f1d1b);})[_0x7261('0x26')](function(_0x14f6f2){if(_0x14f6f2){_0x2101b8[_0x7261('0x23')](_0x14f6f2[_0x7261('0x9d')]);logger[_0x7261('0x60')](_0x14f6f2['body']);return _0x2101b8[_0x7261('0x1c')](_0x14f6f2[_0x7261('0xa1')])[_0x7261('0x2e')](_0x14f6f2[_0x7261('0x8b')]);}else{return _0x2101b8[_0x7261('0x2a')](0xc8);}})[_0x7261('0x49')](handleError(_0x2101b8,null));};
\ No newline at end of file
index e7d7b6a..1ac9204 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5075=['Plugin','setMaxListeners','save','update','remove','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5075,0x73));var _0x5507=function(_0x4efd3d,_0x2b9694){_0x4efd3d=_0x4efd3d-0x0;var _0x1293f2=_0x5075[_0x4efd3d];return _0x1293f2;};'use strict';var EventEmitter=require(_0x5507('0x0'));var Plugin=require(_0x5507('0x1'))['db'][_0x5507('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x5507('0x3')](0x0);var events={'afterCreate':_0x5507('0x4'),'afterUpdate':_0x5507('0x5'),'afterDestroy':_0x5507('0x6')};function emitEvent(_0x518ca7){return function(_0x3e96ee,_0x19a7ab,_0x8fb8a3){PluginEvents['emit'](_0x518ca7+':'+_0x3e96ee['id'],_0x3e96ee);PluginEvents['emit'](_0x518ca7,_0x3e96ee);_0x8fb8a3(null);};}for(var e in events){if(events[_0x5507('0x7')](e)){var event=events[e];Plugin[_0x5507('0x8')](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
+var _0xb2f1=['events','../../mysqldb','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x1f9e63,_0x4f3522){var _0x3c6d20=function(_0x6f2d39){while(--_0x6f2d39){_0x1f9e63['push'](_0x1f9e63['shift']());}};_0x3c6d20(++_0x4f3522);}(_0xb2f1,0xee));var _0x1b2f=function(_0x41ba7c,_0x21b2bb){_0x41ba7c=_0x41ba7c-0x0;var _0xb1bf6a=_0xb2f1[_0x41ba7c];return _0xb1bf6a;};'use strict';var EventEmitter=require(_0x1b2f('0x0'));var Plugin=require(_0x1b2f('0x1'))['db']['Plugin'];var PluginEvents=new EventEmitter();PluginEvents[_0x1b2f('0x2')](0x0);var events={'afterCreate':_0x1b2f('0x3'),'afterUpdate':'update','afterDestroy':_0x1b2f('0x4')};function emitEvent(_0x35494f){return function(_0x501165,_0x47a72f,_0x11f7f2){PluginEvents[_0x1b2f('0x5')](_0x35494f+':'+_0x501165['id'],_0x501165);PluginEvents[_0x1b2f('0x5')](_0x35494f,_0x501165);_0x11f7f2(null);};}for(var e in events){if(events[_0x1b2f('0x6')](e)){var event=events[e];Plugin['hook'](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
index 14bb40f..0308763 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2f1=['rimraf','../../config/environment','Plugin','lodash','util','api','moment','bluebird','request-promise'];(function(_0x3b176c,_0x9ce908){var _0x1a2600=function(_0x1de6de){while(--_0x1de6de){_0x3b176c['push'](_0x3b176c['shift']());}};_0x1a2600(++_0x9ce908);}(_0xf2f1,0xed));var _0x1f2f=function(_0x237398,_0xc0ef22){_0x237398=_0x237398-0x0;var _0x5598de=_0xf2f1[_0x237398];return _0x5598de;};'use strict';var _=require(_0x1f2f('0x0'));var util=require(_0x1f2f('0x1'));var logger=require('../../config/logger')(_0x1f2f('0x2'));var moment=require(_0x1f2f('0x3'));var BPromise=require(_0x1f2f('0x4'));var rp=require(_0x1f2f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1f2f('0x6'));var config=require(_0x1f2f('0x7'));var attributes=require('./plugin.attributes');module['exports']=function(_0x36117a,_0x2ec747){return _0x36117a['define'](_0x1f2f('0x8'),attributes,{'tableName':'plugins','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbb05=['../../config/logger','moment','bluebird','request-promise','../../config/environment','./plugin.attributes','define','Plugin','plugins','lodash','util'];(function(_0x40662e,_0x27f841){var _0x1a0710=function(_0xef1fec){while(--_0xef1fec){_0x40662e['push'](_0x40662e['shift']());}};_0x1a0710(++_0x27f841);}(_0xbb05,0x1b6));var _0x5bb0=function(_0x1c4b00,_0x424123){_0x1c4b00=_0x1c4b00-0x0;var _0x5f0295=_0xbb05[_0x1c4b00];return _0x5f0295;};'use strict';var _=require(_0x5bb0('0x0'));var util=require(_0x5bb0('0x1'));var logger=require(_0x5bb0('0x2'))('api');var moment=require(_0x5bb0('0x3'));var BPromise=require(_0x5bb0('0x4'));var rp=require(_0x5bb0('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5bb0('0x6'));var attributes=require(_0x5bb0('0x7'));module['exports']=function(_0x5854e0,_0x2f63f7){return _0x5854e0[_0x5bb0('0x8')](_0x5bb0('0x9'),attributes,{'tableName':_0x5bb0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e22fbb3..5553d29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7257=['register','request','then','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreatePlugin','Plugin','create','options','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x5b685e,_0x3e69ad){var _0x9a0173=function(_0x5cc6ad){while(--_0x5cc6ad){_0x5b685e['push'](_0x5b685e['shift']());}};_0x9a0173(++_0x3e69ad);}(_0x7257,0x7b));var _0x7725=function(_0x288f5e,_0x205edd){_0x288f5e=_0x288f5e-0x0;var _0x476cc9=_0x7257[_0x288f5e];return _0x476cc9;};'use strict';var _=require(_0x7725('0x0'));var util=require(_0x7725('0x1'));var moment=require(_0x7725('0x2'));var BPromise=require(_0x7725('0x3'));var rs=require(_0x7725('0x4'));var fs=require('fs');var Redis=require(_0x7725('0x5'));var db=require(_0x7725('0x6'))['db'];var utils=require(_0x7725('0x7'));var logger=require(_0x7725('0x8'))(_0x7725('0x9'));var config=require('../../config/environment');var jayson=require(_0x7725('0xa'));var client=jayson[_0x7725('0xb')][_0x7725('0xc')]({'port':0x232a});config[_0x7725('0xd')]=_[_0x7725('0xe')](config[_0x7725('0xd')],{'host':_0x7725('0xf'),'port':0x18eb});var socket=require(_0x7725('0x10'))(new Redis(config[_0x7725('0xd')]));require('./plugin.socket')[_0x7725('0x11')](socket);function respondWithRpcPromise(_0x51c442,_0x4bf908,_0x5cb527){return new BPromise(function(_0x3df626,_0x51a67f){return client[_0x7725('0x12')](_0x51c442,_0x5cb527)[_0x7725('0x13')](function(_0x500f87){logger[_0x7725('0x14')](_0x7725('0x15'),_0x4bf908,_0x7725('0x16'));logger[_0x7725('0x17')]('Plugin,\x20%s,\x20%s,\x20%s',_0x4bf908,_0x7725('0x16'),JSON[_0x7725('0x18')](_0x500f87));if(_0x500f87[_0x7725('0x19')]){if(_0x500f87[_0x7725('0x19')][_0x7725('0x1a')]===0x1f4){logger['error']('Plugin,\x20%s,\x20%s',_0x4bf908,_0x500f87[_0x7725('0x19')]['message']);return _0x51a67f(_0x500f87[_0x7725('0x19')][_0x7725('0x1b')]);}logger[_0x7725('0x19')](_0x7725('0x15'),_0x4bf908,_0x500f87[_0x7725('0x19')][_0x7725('0x1b')]);return _0x3df626(_0x500f87[_0x7725('0x19')][_0x7725('0x1b')]);}else{logger[_0x7725('0x14')](_0x7725('0x15'),_0x4bf908,_0x7725('0x16'));_0x3df626(_0x500f87[_0x7725('0x1c')][_0x7725('0x1b')]);}})[_0x7725('0x1d')](function(_0x256f66){logger[_0x7725('0x19')](_0x7725('0x15'),_0x4bf908,_0x256f66);_0x51a67f(_0x256f66);});});}exports[_0x7725('0x1e')]=function(_0x3626c4){var _0xb9054=this;return new Promise(function(_0x2ba414,_0xb5d955){return db[_0x7725('0x1f')][_0x7725('0x20')](_0x3626c4['body'],{'raw':_0x3626c4[_0x7725('0x21')]?_0x3626c4[_0x7725('0x21')][_0x7725('0x22')]===undefined?!![]:![]:!![]})[_0x7725('0x13')](function(_0x50d9b9){logger[_0x7725('0x14')](_0x7725('0x1e'),_0x3626c4);logger[_0x7725('0x17')](_0x7725('0x1e'),_0x3626c4,JSON[_0x7725('0x18')](_0x50d9b9));_0x2ba414(_0x50d9b9);})[_0x7725('0x1d')](function(_0x3c70c3){logger[_0x7725('0x19')](_0x7725('0x1e'),_0x3c70c3[_0x7725('0x1b')],_0x3626c4);_0xb5d955(_0xb9054['error'](0x1f4,_0x3c70c3[_0x7725('0x1b')]));});});};
\ No newline at end of file
+var _0xc2ff=['moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','request\x20sent','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','Plugin','create','body','options','raw','CreatePlugin','debug','lodash','util'];(function(_0xa4ed28,_0x31e209){var _0x3dd21c=function(_0x3d1456){while(--_0x3d1456){_0xa4ed28['push'](_0xa4ed28['shift']());}};_0x3dd21c(++_0x31e209);}(_0xc2ff,0x195));var _0xfc2f=function(_0x24e027,_0x1f16f2){_0x24e027=_0x24e027-0x0;var _0xf6ec3c=_0xc2ff[_0x24e027];return _0xf6ec3c;};'use strict';var _=require(_0xfc2f('0x0'));var util=require(_0xfc2f('0x1'));var moment=require(_0xfc2f('0x2'));var BPromise=require('bluebird');var rs=require(_0xfc2f('0x3'));var fs=require('fs');var Redis=require(_0xfc2f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xfc2f('0x5'));var logger=require(_0xfc2f('0x6'))(_0xfc2f('0x7'));var config=require(_0xfc2f('0x8'));var jayson=require(_0xfc2f('0x9'));var client=jayson[_0xfc2f('0xa')][_0xfc2f('0xb')]({'port':0x232a});config[_0xfc2f('0xc')]=_[_0xfc2f('0xd')](config['redis'],{'host':_0xfc2f('0xe'),'port':0x18eb});var socket=require(_0xfc2f('0xf'))(new Redis(config[_0xfc2f('0xc')]));require(_0xfc2f('0x10'))[_0xfc2f('0x11')](socket);function respondWithRpcPromise(_0x320aa0,_0x2f917d,_0x193fd8){return new BPromise(function(_0x36ffcb,_0xaa32eb){return client[_0xfc2f('0x12')](_0x320aa0,_0x193fd8)[_0xfc2f('0x13')](function(_0x24e1d8){logger[_0xfc2f('0x14')](_0xfc2f('0x15'),_0x2f917d,_0xfc2f('0x16'));logger['debug'](_0xfc2f('0x17'),_0x2f917d,'request\x20sent',JSON[_0xfc2f('0x18')](_0x24e1d8));if(_0x24e1d8[_0xfc2f('0x19')]){if(_0x24e1d8[_0xfc2f('0x19')][_0xfc2f('0x1a')]===0x1f4){logger['error'](_0xfc2f('0x15'),_0x2f917d,_0x24e1d8['error'][_0xfc2f('0x1b')]);return _0xaa32eb(_0x24e1d8[_0xfc2f('0x19')][_0xfc2f('0x1b')]);}logger[_0xfc2f('0x19')]('Plugin,\x20%s,\x20%s',_0x2f917d,_0x24e1d8[_0xfc2f('0x19')][_0xfc2f('0x1b')]);return _0x36ffcb(_0x24e1d8[_0xfc2f('0x19')]['message']);}else{logger[_0xfc2f('0x14')]('Plugin,\x20%s,\x20%s',_0x2f917d,_0xfc2f('0x16'));_0x36ffcb(_0x24e1d8[_0xfc2f('0x1c')]['message']);}})[_0xfc2f('0x1d')](function(_0x6cc11e){logger[_0xfc2f('0x19')]('Plugin,\x20%s,\x20%s',_0x2f917d,_0x6cc11e);_0xaa32eb(_0x6cc11e);});});}exports['CreatePlugin']=function(_0xb9a450){var _0x36f483=this;return new Promise(function(_0x44b85f,_0x42dd09){return db[_0xfc2f('0x1e')][_0xfc2f('0x1f')](_0xb9a450[_0xfc2f('0x20')],{'raw':_0xb9a450[_0xfc2f('0x21')]?_0xb9a450[_0xfc2f('0x21')][_0xfc2f('0x22')]===undefined?!![]:![]:!![]})[_0xfc2f('0x13')](function(_0x3cb43f){logger[_0xfc2f('0x14')](_0xfc2f('0x23'),_0xb9a450);logger[_0xfc2f('0x24')]('CreatePlugin',_0xb9a450,JSON[_0xfc2f('0x18')](_0x3cb43f));_0x44b85f(_0x3cb43f);})['catch'](function(_0x55c375){logger[_0xfc2f('0x19')]('CreatePlugin',_0x55c375[_0xfc2f('0x1b')],_0xb9a450);_0x42dd09(_0x36f483['error'](0x1f4,_0x55c375[_0xfc2f('0x1b')]));});});};
\ No newline at end of file
index a1c8fc1..ca3ec30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe790=['register','length','./plugin.events','update','emit','removeListener'];(function(_0x34e19c,_0x4a3b2){var _0x30b3bf=function(_0x2767d1){while(--_0x2767d1){_0x34e19c['push'](_0x34e19c['shift']());}};_0x30b3bf(++_0x4a3b2);}(_0xe790,0x15e));var _0x0e79=function(_0x1fedc0,_0x12c33d){_0x1fedc0=_0x1fedc0-0x0;var _0x5a69b4=_0xe790[_0x1fedc0];return _0x5a69b4;};'use strict';var PluginEvents=require(_0x0e79('0x0'));var events=['save','remove',_0x0e79('0x1')];function createListener(_0x16d05a,_0x193b37){return function(_0x2343e3){_0x193b37[_0x0e79('0x2')](_0x16d05a,_0x2343e3);};}function removeListener(_0x5373eb,_0x53a271){return function(){PluginEvents[_0x0e79('0x3')](_0x5373eb,_0x53a271);};}exports[_0x0e79('0x4')]=function(_0x765a7f){for(var _0x51e374=0x0,_0x1f4dfc=events[_0x0e79('0x5')];_0x51e374<_0x1f4dfc;_0x51e374++){var _0x283587=events[_0x51e374];var _0x2c1d32=createListener('plugin:'+_0x283587,_0x765a7f);PluginEvents['on'](_0x283587,_0x2c1d32);}};
\ No newline at end of file
+var _0x9357=['remove','update','emit','removeListener','register','length','plugin:','./plugin.events','save'];(function(_0x420fa8,_0x4545cd){var _0x3e7246=function(_0x306304){while(--_0x306304){_0x420fa8['push'](_0x420fa8['shift']());}};_0x3e7246(++_0x4545cd);}(_0x9357,0x97));var _0x7935=function(_0x2ba6ce,_0x7120cb){_0x2ba6ce=_0x2ba6ce-0x0;var _0x226201=_0x9357[_0x2ba6ce];return _0x226201;};'use strict';var PluginEvents=require(_0x7935('0x0'));var events=[_0x7935('0x1'),_0x7935('0x2'),_0x7935('0x3')];function createListener(_0x8ffebf,_0x19d977){return function(_0x49beae){_0x19d977[_0x7935('0x4')](_0x8ffebf,_0x49beae);};}function removeListener(_0x5d0f92,_0x19cc82){return function(){PluginEvents[_0x7935('0x5')](_0x5d0f92,_0x19cc82);};}exports[_0x7935('0x6')]=function(_0x1cc9f6){for(var _0x114492=0x0,_0x6788fd=events[_0x7935('0x7')];_0x114492<_0x6788fd;_0x114492++){var _0x4d2892=events[_0x114492];var _0xd3a938=createListener(_0x7935('0x8')+_0x4d2892,_0x1cc9f6);PluginEvents['on'](_0x4d2892,_0xd3a938);}};
\ No newline at end of file
index 637505a..53a3095 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(_0x1c5c32,_0x3e6148){var _0x4abe42=function(_0x5b7723){while(--_0x5b7723){_0x1c5c32['push'](_0x1c5c32['shift']());}};_0x4abe42(++_0x3e6148);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'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(_0x5edd83,_0x55b699){var _0x5d062f=function(_0x484fc5){while(--_0x484fc5){_0x5edd83['push'](_0x5edd83['shift']());}};_0x5d062f(++_0x55b699);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xa9e0[_0x5b644e];return _0x49c6bf;};'use strict';var express=require(_0x0a9e('0x0'));var router=express[_0x0a9e('0x1')]();var auth=require(_0x0a9e('0x2'));var controller=require('./pm2.controller');router['get']('/',auth[_0x0a9e('0x3')](),controller['index']);router[_0x0a9e('0x4')](_0x0a9e('0x5'),auth[_0x0a9e('0x3')](),controller[_0x0a9e('0x6')]);router[_0x0a9e('0x7')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x8')]);router[_0x0a9e('0x9')](_0x0a9e('0x5'),auth['isAuthenticated'](),controller['update']);router[_0x0a9e('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);module[_0x0a9e('0xc')]=router;
\ No newline at end of file
index f04a7db..a36742e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb58b=['Unknown\x20status','destroy','params','delete','Unknown\x20id','../../config/pm2','../../config/logger','api','child_process','exec','sendStatus','status','json','error','stack','name','npm\x20install','info','list','then','reject','motion2','length','describe','catch','create','body','join','../../files/plugins','script','cwd','chdir','dirname','start','dump','send','Missing\x20name\x20and/or\x20path','update','restart','stop','hasOwnProperty'];(function(_0x390bbd,_0x43fd18){var _0x360d20=function(_0x38af28){while(--_0x38af28){_0x390bbd['push'](_0x390bbd['shift']());}};_0x360d20(++_0x43fd18);}(_0xb58b,0x1f1));var _0xbb58=function(_0x18145c,_0x23c102){_0x18145c=_0x18145c-0x0;var _0x52dd35=_0xb58b[_0x18145c];return _0x52dd35;};'use strict';var _=require('lodash');var pm2=require(_0xbb58('0x0'));var logger=require(_0xbb58('0x1'))(_0xbb58('0x2'));var path=require('path');var exec=require(_0xbb58('0x3'))[_0xbb58('0x4')];var BPromise=require('bluebird');function handleEntityNotFound(_0x226363,_0x546510){return function(_0x2edb10){if(!_0x2edb10){_0x226363[_0xbb58('0x5')](0x194);;}return _0x2edb10;};}function respondWithResult(_0x33fe85,_0x5cf8b1){_0x5cf8b1=_0x5cf8b1||0xc8;return function(_0x27cbda){if(_0x27cbda){return _0x33fe85[_0xbb58('0x6')](_0x5cf8b1)[_0xbb58('0x7')](_0x27cbda);}return null;};}function handleError(_0x5d7fe8,_0xd94f1){_0xd94f1=_0xd94f1||0x1f4;return function(_0x3e3144){logger[_0xbb58('0x8')](_0x3e3144[_0xbb58('0x9')]);if(_0x3e3144[_0xbb58('0xa')]){delete _0x3e3144[_0xbb58('0xa')];}_0x5d7fe8[_0xbb58('0x6')](_0xd94f1)['send'](_0x3e3144);};}function execChildProcess(){return new BPromise(function(_0x80ab3a,_0x5c3bf7){exec(_0xbb58('0xb'),function(_0x440392,_0x26d8e6,_0x19d185){logger['info'](_0x26d8e6);logger[_0xbb58('0xc')](_0x19d185);if(_0x440392){logger[_0xbb58('0x8')](_0x440392);return _0x5c3bf7(_0x440392);}return _0x80ab3a(_0x26d8e6);});});}exports['index']=function(_0x132511,_0xdc68b9){return pm2[_0xbb58('0xd')]()[_0xbb58('0xe')](function(_0x19ceda){if(_0x19ceda){var _0x58245f=_[_0xbb58('0xf')](_0x19ceda,function(_0x23fd15){return _0x23fd15['name']==='express'||_0x23fd15[_0xbb58('0xa')]===_0xbb58('0x10');});return{'rows':_0x58245f,'count':_0x58245f[_0xbb58('0x11')]};}return null;})['then'](respondWithResult(_0xdc68b9,null))['catch'](handleError(_0xdc68b9,null));};exports['show']=function(_0x55156e,_0x28637b){return pm2[_0xbb58('0x12')](_0x55156e['params']['id'])[_0xbb58('0xe')](respondWithResult(_0x28637b,null))['then'](handleEntityNotFound(_0x28637b,null))[_0xbb58('0x13')](handleError(_0x28637b,null));};exports[_0xbb58('0x14')]=function(_0x3c33d9,_0xb8f982){if(_0x3c33d9[_0xbb58('0x15')][_0xbb58('0xa')]&&_0x3c33d9[_0xbb58('0x15')]['script']){var _0x84f34=path[_0xbb58('0x16')](__dirname,_0xbb58('0x17'),_0x3c33d9[_0xbb58('0x15')][_0xbb58('0x18')]);var _0x5d4a91=process[_0xbb58('0x19')]();process[_0xbb58('0x1a')](path[_0xbb58('0x1b')](_0x84f34));return execChildProcess()['then'](function(_0x27806d){process['chdir'](_0x5d4a91);return pm2[_0xbb58('0x1c')]({'name':_0x3c33d9[_0xbb58('0x15')][_0xbb58('0xa')],'script':_0x84f34});})[_0xbb58('0xe')](function(_0x2d111c){pm2[_0xbb58('0x1d')]();return _0x2d111c[0x0];})[_0xbb58('0xe')](respondWithResult(_0xb8f982,0xc9))[_0xbb58('0x13')](handleError(_0xb8f982,null));}else{return _0xb8f982['status'](0x1f4)[_0xbb58('0x1e')]({'message':_0xbb58('0x1f')});}};exports[_0xbb58('0x20')]=function(_0x129094,_0x8e9ed9){if(_0x129094[_0xbb58('0x15')]['id']){delete _0x129094[_0xbb58('0x15')]['id'];}var _0x2ce7c3={'online':_0xbb58('0x21'),'stopped':_0xbb58('0x22')};if(_0x2ce7c3[_0xbb58('0x23')](_0x129094[_0xbb58('0x15')][_0xbb58('0x6')])){return pm2[_0x2ce7c3[_0x129094[_0xbb58('0x15')][_0xbb58('0x6')]]](_0x129094['params']['id'])[_0xbb58('0xe')](respondWithResult(_0x8e9ed9,0xc8))[_0xbb58('0x13')](handleError(_0x8e9ed9,null));}else{return _0x8e9ed9[_0xbb58('0x6')](0x1f4)[_0xbb58('0x1e')]({'message':_0xbb58('0x24')});}};exports[_0xbb58('0x25')]=function(_0x1ba526,_0x643e0e){if(_0x1ba526[_0xbb58('0x15')]['id']){delete _0x1ba526['body']['id'];}if(_0x1ba526[_0xbb58('0x26')]['id']){return pm2[_0xbb58('0x27')](_0x1ba526[_0xbb58('0x26')]['id'])[_0xbb58('0xe')](function(_0xdbbe7b){pm2[_0xbb58('0x1d')]();return _0xdbbe7b[0x0];})[_0xbb58('0xe')](respondWithResult(_0x643e0e,null))[_0xbb58('0x13')](handleError(_0x643e0e,null));}else{return _0x643e0e[_0xbb58('0x6')](0x1f4)[_0xbb58('0x1e')]({'message':_0xbb58('0x28')});}};
\ No newline at end of file
+var _0xee5b=['exec','bluebird','sendStatus','error','stack','name','send','npm\x20install','info','index','list','then','reject','motion2','length','catch','show','describe','params','create','body','script','join','cwd','chdir','dirname','start','status','Missing\x20name\x20and/or\x20path','update','restart','stop','hasOwnProperty','Unknown\x20status','destroy','delete','dump','Unknown\x20id','lodash','../../config/logger','api','child_process'];(function(_0x4749bc,_0xd777b9){var _0x4b5918=function(_0x3f5cf4){while(--_0x3f5cf4){_0x4749bc['push'](_0x4749bc['shift']());}};_0x4b5918(++_0xd777b9);}(_0xee5b,0x1f4));var _0xbee5=function(_0x4d34a1,_0x49ca49){_0x4d34a1=_0x4d34a1-0x0;var _0x31419f=_0xee5b[_0x4d34a1];return _0x31419f;};'use strict';var _=require(_0xbee5('0x0'));var pm2=require('../../config/pm2');var logger=require(_0xbee5('0x1'))(_0xbee5('0x2'));var path=require('path');var exec=require(_0xbee5('0x3'))[_0xbee5('0x4')];var BPromise=require(_0xbee5('0x5'));function handleEntityNotFound(_0x210159,_0x4bd202){return function(_0x5200b1){if(!_0x5200b1){_0x210159[_0xbee5('0x6')](0x194);;}return _0x5200b1;};}function respondWithResult(_0x2c0bde,_0xab6e4d){_0xab6e4d=_0xab6e4d||0xc8;return function(_0x804ab8){if(_0x804ab8){return _0x2c0bde['status'](_0xab6e4d)['json'](_0x804ab8);}return null;};}function handleError(_0x53d5b9,_0x5baf5c){_0x5baf5c=_0x5baf5c||0x1f4;return function(_0x5536bd){logger[_0xbee5('0x7')](_0x5536bd[_0xbee5('0x8')]);if(_0x5536bd[_0xbee5('0x9')]){delete _0x5536bd[_0xbee5('0x9')];}_0x53d5b9['status'](_0x5baf5c)[_0xbee5('0xa')](_0x5536bd);};}function execChildProcess(){return new BPromise(function(_0x305921,_0x9b3d3b){exec(_0xbee5('0xb'),function(_0x16377d,_0x1509c7,_0x105e16){logger[_0xbee5('0xc')](_0x1509c7);logger[_0xbee5('0xc')](_0x105e16);if(_0x16377d){logger['error'](_0x16377d);return _0x9b3d3b(_0x16377d);}return _0x305921(_0x1509c7);});});}exports[_0xbee5('0xd')]=function(_0x532a78,_0x183877){return pm2[_0xbee5('0xe')]()[_0xbee5('0xf')](function(_0x593ecb){if(_0x593ecb){var _0x5092f2=_[_0xbee5('0x10')](_0x593ecb,function(_0x4cf5a8){return _0x4cf5a8[_0xbee5('0x9')]==='express'||_0x4cf5a8[_0xbee5('0x9')]===_0xbee5('0x11');});return{'rows':_0x5092f2,'count':_0x5092f2[_0xbee5('0x12')]};}return null;})['then'](respondWithResult(_0x183877,null))[_0xbee5('0x13')](handleError(_0x183877,null));};exports[_0xbee5('0x14')]=function(_0x5a0ae5,_0x254dd3){return pm2[_0xbee5('0x15')](_0x5a0ae5[_0xbee5('0x16')]['id'])[_0xbee5('0xf')](respondWithResult(_0x254dd3,null))[_0xbee5('0xf')](handleEntityNotFound(_0x254dd3,null))[_0xbee5('0x13')](handleError(_0x254dd3,null));};exports[_0xbee5('0x17')]=function(_0xa50ec9,_0x20cf52){if(_0xa50ec9[_0xbee5('0x18')][_0xbee5('0x9')]&&_0xa50ec9[_0xbee5('0x18')][_0xbee5('0x19')]){var _0x40a06=path[_0xbee5('0x1a')](__dirname,'../../files/plugins',_0xa50ec9['body'][_0xbee5('0x19')]);var _0x48bfb5=process[_0xbee5('0x1b')]();process[_0xbee5('0x1c')](path[_0xbee5('0x1d')](_0x40a06));return execChildProcess()[_0xbee5('0xf')](function(_0x3f23c5){process[_0xbee5('0x1c')](_0x48bfb5);return pm2[_0xbee5('0x1e')]({'name':_0xa50ec9[_0xbee5('0x18')][_0xbee5('0x9')],'script':_0x40a06});})['then'](function(_0x5b43b3){pm2['dump']();return _0x5b43b3[0x0];})['then'](respondWithResult(_0x20cf52,0xc9))['catch'](handleError(_0x20cf52,null));}else{return _0x20cf52[_0xbee5('0x1f')](0x1f4)[_0xbee5('0xa')]({'message':_0xbee5('0x20')});}};exports[_0xbee5('0x21')]=function(_0x169042,_0x20e7e8){if(_0x169042[_0xbee5('0x18')]['id']){delete _0x169042['body']['id'];}var _0x36b50f={'online':_0xbee5('0x22'),'stopped':_0xbee5('0x23')};if(_0x36b50f[_0xbee5('0x24')](_0x169042[_0xbee5('0x18')]['status'])){return pm2[_0x36b50f[_0x169042[_0xbee5('0x18')][_0xbee5('0x1f')]]](_0x169042[_0xbee5('0x16')]['id'])[_0xbee5('0xf')](respondWithResult(_0x20e7e8,0xc8))[_0xbee5('0x13')](handleError(_0x20e7e8,null));}else{return _0x20e7e8[_0xbee5('0x1f')](0x1f4)[_0xbee5('0xa')]({'message':_0xbee5('0x25')});}};exports[_0xbee5('0x26')]=function(_0x59c2e4,_0x22df5f){if(_0x59c2e4['body']['id']){delete _0x59c2e4[_0xbee5('0x18')]['id'];}if(_0x59c2e4['params']['id']){return pm2[_0xbee5('0x27')](_0x59c2e4['params']['id'])[_0xbee5('0xf')](function(_0x5c1109){pm2[_0xbee5('0x28')]();return _0x5c1109[0x0];})[_0xbee5('0xf')](respondWithResult(_0x22df5f,null))[_0xbee5('0x13')](handleError(_0x22df5f,null));}else{return _0x22df5f[_0xbee5('0x1f')](0x1f4)['send']({'message':_0xbee5('0x29')});}};
\ No newline at end of file
index 9d5cd11..0b93e22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2655=['../../components/auth/service','./realtime.controller','get','/agents','isAuthenticated','getAgents','/queues','getQueues','exports','Router'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x2655,0x8b));var _0x5265=function(_0x25930c,_0x51deff){_0x25930c=_0x25930c-0x0;var _0x18bc7b=_0x2655[_0x25930c];return _0x18bc7b;};'use strict';var express=require('express');var router=express[_0x5265('0x0')]();var auth=require(_0x5265('0x1'));var controller=require(_0x5265('0x2'));router[_0x5265('0x3')](_0x5265('0x4'),auth[_0x5265('0x5')](),controller[_0x5265('0x6')]);router[_0x5265('0x3')](_0x5265('0x7'),auth['isAuthenticated'](),controller[_0x5265('0x8')]);module[_0x5265('0x9')]=router;
\ No newline at end of file
+var _0x68ae=['getAgents','/queues','exports','express','Router','./realtime.controller','get','/agents','isAuthenticated'];(function(_0x5de532,_0x2941c4){var _0x4e9192=function(_0x548a81){while(--_0x548a81){_0x5de532['push'](_0x5de532['shift']());}};_0x4e9192(++_0x2941c4);}(_0x68ae,0x1bc));var _0xe68a=function(_0x52c4f2,_0x3dc765){_0x52c4f2=_0x52c4f2-0x0;var _0x2c0f0e=_0x68ae[_0x52c4f2];return _0x2c0f0e;};'use strict';var express=require(_0xe68a('0x0'));var router=express[_0xe68a('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0xe68a('0x2'));router[_0xe68a('0x3')](_0xe68a('0x4'),auth[_0xe68a('0x5')](),controller[_0xe68a('0x6')]);router[_0xe68a('0x3')](_0xe68a('0x7'),auth['isAuthenticated'](),controller['getQueues']);module[_0xe68a('0x8')]=router;
\ No newline at end of file
index 490180b..be2f2e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fda=['name','request','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Agents','merge','catch','startCase','Queues','VoiceQueuesChannels','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','available','paused','voice','outbound','push','message','dialMethod','startProgressive','erlangCalls','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','get','loggedInDb','loggedIn','waiting','talking','find','pick','queue','length','busy','connectedlinenum','internal','toString','getMembers','UserId','accountcode','voiceStatus','online','agents','User','Queue','findAll','QueueId','unknown','unavailable','ringing','isNil','chatPause','mailPause','voicePause','whatsappPause','filter','idle','pause','chatStatus','faxStatus','openchannelStatus','smsStatus','whatsappStatus','*pause','userpic','pauseType','address','faxPause','openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','faxCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','mailStatus','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','routealias','smsPause','resolve','map','rawAttributes','fieldName','query','role','agent','raw','user','userProfileId','nolimit','sort','UserProfile','getResources','findAndCountAll','rows','omit','globalStatusFilter','globalStatus','pauseTypeFilter','getQueues','mail','chat','sms','fax','channel','includes','toLowerCase','Invalid\x20channel','type','key','getOptions','util','../../components/parsers/qs','../../config/logger','api','../../mysqldb','client','http','offset','undefined','count','limit','status','set','Content-Range','json'];(function(_0x252eb3,_0x5c4ff5){var _0x3d5e34=function(_0x519e1e){while(--_0x519e1e){_0x252eb3['push'](_0x252eb3['shift']());}};_0x3d5e34(++_0x5c4ff5);}(_0x1fda,0x19b));var _0xa1fd=function(_0x579a16,_0x27986b){_0x579a16=_0x579a16-0x0;var _0x489de6=_0x1fda[_0x579a16];return _0x489de6;};'use strict';var util=require(_0xa1fd('0x0'));var _=require('lodash');var jayson=require('jayson/promise');var qs=require(_0xa1fd('0x1'));var logger=require(_0xa1fd('0x2'))(_0xa1fd('0x3'));var db=require(_0xa1fd('0x4'))['db'];var amiClient=jayson[_0xa1fd('0x5')][_0xa1fd('0x6')]({'port':0x232a});var routingClient=jayson[_0xa1fd('0x5')][_0xa1fd('0x6')]({'port':0x232c});function respondWithFilteredResult(_0x48f3ee,_0x151253){return function(_0x3e4df7){if(_0x3e4df7){var _0x22e1b5=typeof _0x151253[_0xa1fd('0x7')]===_0xa1fd('0x8')&&typeof _0x151253['limit']==='undefined';var _0x8c3ef7=_0x3e4df7[_0xa1fd('0x9')];var _0x48037d=_0x22e1b5?0x0:_0x151253[_0xa1fd('0x7')];var _0x1efb03=_0x22e1b5?_0x3e4df7['count']:_0x151253[_0xa1fd('0x7')]+_0x151253[_0xa1fd('0xa')];var _0x58b5a6;if(_0x1efb03>=_0x8c3ef7){_0x1efb03=_0x8c3ef7;_0x58b5a6=0xc8;}else{_0x58b5a6=0xce;}_0x48f3ee[_0xa1fd('0xb')](_0x58b5a6);return _0x48f3ee[_0xa1fd('0xc')](_0xa1fd('0xd'),_0x48037d+'-'+_0x1efb03+'/'+_0x8c3ef7)[_0xa1fd('0xe')](_0x3e4df7);}return null;};}function handleError(_0x59f895,_0x31db78){_0x31db78=_0x31db78||0x1f4;return function(_0x49ad8f){logger['error'](_0x49ad8f['stack']);if(_0x49ad8f[_0xa1fd('0xf')]){delete _0x49ad8f[_0xa1fd('0xf')];}_0x59f895[_0xa1fd('0xb')](_0x31db78)['send'](_0x49ad8f);};}function getRealtimeAgents(){return new Promise(function(_0x431b37,_0x8dc106){return amiClient[_0xa1fd('0x10')]('Agents',{})[_0xa1fd('0x11')](function(_0x22caf0){if(_0x22caf0[_0xa1fd('0x12')])throw new Error(_0xa1fd('0x13'));var _0x32c000=_0x22caf0[_0xa1fd('0x14')];return routingClient['request'](_0xa1fd('0x15'),{})[_0xa1fd('0x11')](function(_0x13a9e6){if(_0x13a9e6[_0xa1fd('0x12')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x28b66a=_0x13a9e6[_0xa1fd('0x14')];return _0x431b37(_[_0xa1fd('0x16')]({},_0x32c000,_0x28b66a));});})[_0xa1fd('0x17')](function(_0x3d8175){_0x8dc106(_0x3d8175);});});}function getRealtimeQueues(_0x36d994,_0x274483){return new Promise(function(_0x4857a3,_0x5e1c9f){var _0x1e9d0d=_0x274483==='voice'?amiClient:routingClient;return _0x1e9d0d[_0xa1fd('0x10')](_[_0xa1fd('0x18')](_0x274483)+_0xa1fd('0x19'),_0x36d994)[_0xa1fd('0x11')](function(_0x35069f){if(_0x35069f['error'])throw new Error(util['format']('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x274483));return _0x4857a3(_0x35069f[_0xa1fd('0x14')]);})[_0xa1fd('0x17')](function(_0x547127){_0x5e1c9f(_0x547127);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x3e8b34,_0xd25ce){return amiClient[_0xa1fd('0x10')](_0xa1fd('0x1a'),{})[_0xa1fd('0x11')](function(_0x40bdcf){if(_0x40bdcf[_0xa1fd('0x12')])throw new Error(_0xa1fd('0x1b'));return _0x3e8b34(_0x40bdcf[_0xa1fd('0x14')]);})[_0xa1fd('0x17')](function(_0x483e0f){_0xd25ce(_0x483e0f);});});}function initializeQueues(_0x1a5068,_0x15e563,_0x429b66,_0x11e820){var _0x3057ca=['loggedIn',_0xa1fd('0x1c'),'waiting','talking',_0xa1fd('0x1d')];if(_0x429b66===_0xa1fd('0x1e')&&_0x11e820===_0xa1fd('0x1f')){_0x3057ca[_0xa1fd('0x20')]('pTalking','originated',_0xa1fd('0x21'),'dialActive',_0xa1fd('0x22'),'Trunk','startPredictive',_0xa1fd('0x23'),_0xa1fd('0x24'),'erlangCallToSecond','erlangAbandonmentRate',_0xa1fd('0x25'),_0xa1fd('0x26'),_0xa1fd('0x27'),_0xa1fd('0x28'),_0xa1fd('0x29'),_0xa1fd('0x2a'),_0xa1fd('0x2b'),'predictiveIntervalDroppedCallsTimeout',_0xa1fd('0x2c'),_0xa1fd('0x2d'),'predictiveIntervalAvgTalktime');}return _0x1a5068['map'](function(_0x5aca0b){var _0x312ecc=_0x5aca0b[_0xa1fd('0x2e')]({'plain':!![]});_0x312ecc['agents']=[];_0x312ecc['paused']=0x0;_0x312ecc[_0xa1fd('0x2f')]=0x0;_0x312ecc[_0xa1fd('0x30')]=0x0;_0x312ecc[_0xa1fd('0x1c')]=0x0;_0x312ecc[_0xa1fd('0x31')]=0x0;if(_0x429b66==='voice'){_0x312ecc[_0xa1fd('0x32')]=0x0;_0x312ecc['busy']=0x0;if(_0x11e820===_0xa1fd('0x1f')){_0x312ecc['pTalking']=0x0;_0x312ecc['originated']=0x0;}}var _0x530d04=_[_0xa1fd('0x33')](_0x15e563,['id',_0x312ecc['id']]);if(_0x530d04)_[_0xa1fd('0x16')](_0x312ecc,_[_0xa1fd('0x34')](_0x530d04,_0x3057ca));return _0x312ecc;});}function updateAgentVoiceStatus(_0x348929,_0x208a16,_0x23035f){var _0x1d940c=_['filter'](_0x23035f,[_0xa1fd('0x35'),_0x208a16[_0xa1fd('0xf')]]);if(_0x1d940c[_0xa1fd('0x36')]===0x0)return _0x348929[_0xa1fd('0x37')]=!![];if(_['some'](_0x1d940c,[_0xa1fd('0x38'),_0x348929[_0xa1fd('0x39')][_0xa1fd('0x3a')]()]))return _0x348929[_0xa1fd('0x32')]=!![];if(!_0x348929['talking'])return _0x348929[_0xa1fd('0x37')]=!![];}function getVoiceQueueAgents(_0x7351a8,_0x56e890,_0x4b4030,_0x416ba9){var _0x2d88ff=_['find'](_0x56e890,['id',_0x7351a8['id']]);if(!_0x2d88ff)return _0x7351a8;return _0x2d88ff[_0xa1fd('0x3b')]({'raw':!![]})[_0xa1fd('0x11')](function(_0x260e12){for(var _0xc9e065=0x0;_0xc9e065<_0x260e12[_0xa1fd('0x36')];_0xc9e065++){var _0x53af97=_[_0xa1fd('0x33')](_0x4b4030,['id',_0x260e12[_0xc9e065][_0xa1fd('0x3c')]]);if(!_0x53af97){_0x53af97={'id':_0x260e12[_0xc9e065][_0xa1fd('0x3c')],'name':_0x260e12[_0xc9e065]['UserId'],'accountcode':'','online':![]};}var _0xfd2c00={'id':_0x53af97['id'],'name':_0x53af97['name'],'internal':_0x53af97[_0xa1fd('0x3d')],'online':Boolean(_0x53af97['online']),'paused':Boolean(_0x260e12[_0xc9e065][_0xa1fd('0x1d')])};if(_0x53af97[_0xa1fd('0x3e')]==='talking')updateAgentVoiceStatus(_0xfd2c00,_0x7351a8,_0x416ba9);if(_0xfd2c00[_0xa1fd('0x3f')])_0x7351a8[_0xa1fd('0x2f')]++;if(_0xfd2c00[_0xa1fd('0x37')])_0x7351a8[_0xa1fd('0x37')]++;if(_0xfd2c00[_0xa1fd('0x1d')]&&!_0xfd2c00[_0xa1fd('0x37')]&&!_0xfd2c00[_0xa1fd('0x32')])_0x7351a8[_0xa1fd('0x1d')]++;_0x7351a8[_0xa1fd('0x40')][_0xa1fd('0x20')](_0xfd2c00);}return _0x7351a8;});}function getQueueAgents(_0x361348,_0x2529d2,_0x2c944c){var _0x5e4a57=_0xa1fd('0x41')+_[_0xa1fd('0x18')](_0x2c944c)+_0xa1fd('0x42');var _0x4d2ad5=_0x2c944c+'Pause';return db[_0x5e4a57][_0xa1fd('0x43')]({'where':{[_[_0xa1fd('0x18')](_0x2c944c)+_0xa1fd('0x44')]:_0x361348['id']},'raw':!![]})[_0xa1fd('0x11')](function(_0x54fa7f){for(var _0x47e7dc=0x0;_0x47e7dc<_0x54fa7f[_0xa1fd('0x36')];_0x47e7dc++){var _0x46bfff=_[_0xa1fd('0x33')](_0x2529d2,['id',_0x54fa7f[_0x47e7dc][_0xa1fd('0x3c')]]);if(!_0x46bfff){_0x46bfff={'id':_0x54fa7f[_0x47e7dc][_0xa1fd('0x3c')],'name':_0x54fa7f[_0x47e7dc][_0xa1fd('0x3c')],'online':![],['pauseField']:![]};}var _0x5bdd2a={'id':_0x46bfff['id'],'name':_0x46bfff[_0xa1fd('0xf')],'online':Boolean(_0x46bfff[_0xa1fd('0x3f')]),'paused':Boolean(_0x46bfff[_0x4d2ad5])};if(_0x5bdd2a['online'])_0x361348[_0xa1fd('0x2f')]++;_0x361348[_0xa1fd('0x40')][_0xa1fd('0x20')](_0x5bdd2a);}return _0x361348;});}function isIdle(_0x3abd52){return _0x3abd52==='idle'||_0x3abd52===_0xa1fd('0x45')||_0x3abd52===_0xa1fd('0x46')||_0x3abd52===_0xa1fd('0x47')||_[_0xa1fd('0x48')](_0x3abd52);}function isAgentPaused(_0x1e2ce0,_0xf97313){var _0x3bfb5c=[_0x1e2ce0[_0xa1fd('0x49')],_0x1e2ce0['faxPause'],_0x1e2ce0[_0xa1fd('0x4a')],_0x1e2ce0['openchannelPause'],_0x1e2ce0['smsPause'],_0x1e2ce0[_0xa1fd('0x4b')],_0x1e2ce0[_0xa1fd('0x4c')]];if(!_0xf97313)return _['every'](_0x3bfb5c);var _0x45d860=_[_0xa1fd('0x4d')](_0x3bfb5c);return _0x45d860[_0xa1fd('0x36')]>0x0&&_0x45d860[_0xa1fd('0x36')]<_0x3bfb5c[_0xa1fd('0x36')]?!![]:![];}function isAgentIdle(_0x3203b2){if(_0x3203b2[_0xa1fd('0x3e')]!==_0xa1fd('0x4e')&&_0x3203b2[_0xa1fd('0x4b')]){_0x3203b2['voiceStatus']=_0xa1fd('0x4f');return![];}return _['every']([_0x3203b2[_0xa1fd('0x50')],_0x3203b2[_0xa1fd('0x51')],_0x3203b2['mailStatus'],_0x3203b2[_0xa1fd('0x52')],_0x3203b2[_0xa1fd('0x53')],_0x3203b2[_0xa1fd('0x3e')],_0x3203b2[_0xa1fd('0x54')]],isIdle);}function getAgentStatus(_0x4871a9){var _0x4c480a=_0xa1fd('0x45');if(isAgentPaused(_0x4871a9))_0x4c480a=_0xa1fd('0x4f');else if(isAgentPaused(_0x4871a9,!![]))_0x4c480a=_0xa1fd('0x55');else if(isAgentIdle(_0x4871a9))_0x4c480a='idle';else _0x4c480a='busy';return _0x4c480a;}exports['getAgents']=function(_0x2f39ae,_0x1da954){var _0x327442={'count':0x0,'rows':[]},_0x2076bc={},_0x4b3066,_0x5f368f,_0x15ae5a=[_0xa1fd('0x56'),'online','lastLoginAt','lastPauseAt',_0xa1fd('0x57'),'lastPauseAt',_0xa1fd('0x39'),_0xa1fd('0x58'),_0xa1fd('0x49'),'openchannelPause',_0xa1fd('0x4a'),'smsPause',_0xa1fd('0x4c'),_0xa1fd('0x59'),_0xa1fd('0x4b'),'chatCapacity',_0xa1fd('0x5a'),_0xa1fd('0x5b'),_0xa1fd('0x5c'),_0xa1fd('0x5d'),_0xa1fd('0x5e'),'chatCurrentCapacity','openchannelCurrentCapacity',_0xa1fd('0x5f'),_0xa1fd('0x60'),_0xa1fd('0x61'),_0xa1fd('0x62'),'chatStatus','openchannelStatus',_0xa1fd('0x63'),_0xa1fd('0x53'),_0xa1fd('0x54'),_0xa1fd('0x51'),'voiceStatus','chatStatusTime','openchannelStatusTime',_0xa1fd('0x64'),_0xa1fd('0x65'),_0xa1fd('0x66'),_0xa1fd('0x67'),_0xa1fd('0x68'),_0xa1fd('0x35'),_0xa1fd('0x69'),_0xa1fd('0x6a'),_0xa1fd('0x6b'),'phoneBarEnableAutomaticScreenRecording',_0xa1fd('0x6c')],_0x4fd474=[_0xa1fd('0x49'),'openchannelPause',_0xa1fd('0x4a'),_0xa1fd('0x6d'),'whatsappPause',_0xa1fd('0x59'),_0xa1fd('0x4b'),_0xa1fd('0x3f')];Promise[_0xa1fd('0x6e')]()[_0xa1fd('0x11')](function(){var _0x4ade79=_[_0xa1fd('0x6f')](db[_0xa1fd('0x41')][_0xa1fd('0x70')],function(_0xf06193){return{'name':_0xf06193[_0xa1fd('0x71')],'type':_0xf06193['type']['key']};});_0x2f39ae[_0xa1fd('0x72')][_0xa1fd('0x73')]=_0xa1fd('0x74');_0x2f39ae['query']['online']=!![];_0x2076bc=qs['getOptions'](_0x4ade79,_0x2f39ae);_0x2076bc[_0xa1fd('0x75')]=!![];if(_0x2f39ae[_0xa1fd('0x76')][_0xa1fd('0x73')]==='user'){var _0x255866={'params':{'id':_0x2f39ae[_0xa1fd('0x76')][_0xa1fd('0x77')]},'query':{'section':'Agents','role':_0xa1fd('0x74'),'online':!![],'nolimit':_0x2f39ae[_0xa1fd('0x72')][_0xa1fd('0x78')],'sort':_0x2f39ae[_0xa1fd('0x72')][_0xa1fd('0x79')],'filter':_0x2f39ae[_0xa1fd('0x72')][_0xa1fd('0x4d')]},'raw':!![]};return db[_0xa1fd('0x7a')][_0xa1fd('0x7b')](_0x255866);}return db[_0xa1fd('0x41')][_0xa1fd('0x7c')](_0x2076bc);})[_0xa1fd('0x11')](function(_0x4d7f8a){_0x327442[_0xa1fd('0x9')]=_0x4d7f8a[_0xa1fd('0x9')];_0x4b3066=_0x4d7f8a[_0xa1fd('0x7d')];return getRealtimeAgents();})[_0xa1fd('0x11')](function(_0x1ba4ec){_0x5f368f=_0x1ba4ec[_0xa1fd('0x7d')];return _0x4b3066[_0xa1fd('0x6f')](function(_0x2069f7){var _0xa5f062=_[_0xa1fd('0x33')](_0x5f368f,['id',_0x2069f7['id']]);if(_0xa5f062)_[_0xa1fd('0x16')](_0x2069f7,_[_0xa1fd('0x34')](_[_0xa1fd('0x7e')](_0xa5f062,_0x4fd474),_0x15ae5a));_0x2069f7['globalStatus']=getAgentStatus(_0x2069f7);return _0x2069f7;});})['then'](function(_0x3bdd11){if(_0x2f39ae[_0xa1fd('0x72')][_0xa1fd('0x7f')]){var _0x23e520=_['filter'](_0x3bdd11,[_0xa1fd('0x80'),_0x2f39ae[_0xa1fd('0x72')][_0xa1fd('0x7f')]]);if(_0x2f39ae['query']['pauseTypeFilter']){_0x23e520=_['filter'](_0x23e520,['pauseType',_0x2f39ae[_0xa1fd('0x72')][_0xa1fd('0x81')]]);}}_0x327442['rows']=_0x23e520||_0x3bdd11;return _0x327442;})[_0xa1fd('0x11')](respondWithFilteredResult(_0x1da954,_0x2076bc))[_0xa1fd('0x17')](handleError(_0x1da954,null));};exports[_0xa1fd('0x82')]=function(_0x4fd461,_0x1e44ae){var _0xd9f347=[_0xa1fd('0x83'),_0xa1fd('0x84'),_0xa1fd('0x85'),'openchannel',_0xa1fd('0x86'),'whatsapp','voice'];var _0x35c135={'count':0x0,'rows':[]},_0x29adf2={},_0x5a3fb9,_0x5738fe,_0x3d2dc8,_0x3834d5,_0x44fc13;Promise['resolve']()['then'](function(){if(_0x4fd461[_0xa1fd('0x72')][_0xa1fd('0x87')]){if(!_[_0xa1fd('0x88')](_0xd9f347,_0x4fd461[_0xa1fd('0x72')][_0xa1fd('0x87')][_0xa1fd('0x89')]()))throw new Error(_0xa1fd('0x8a'));_0x5a3fb9=_0x4fd461[_0xa1fd('0x72')][_0xa1fd('0x87')]['toLowerCase']();}var _0x5895ec=_[_0xa1fd('0x18')](_0x5a3fb9)+_0xa1fd('0x42');var _0x26d715=_[_0xa1fd('0x6f')](db[_0x5895ec][_0xa1fd('0x70')],function(_0x30aa20){return{'name':_0x30aa20[_0xa1fd('0x71')],'type':_0x30aa20[_0xa1fd('0x8b')][_0xa1fd('0x8c')]};});_0x29adf2=qs[_0xa1fd('0x8d')](_0x26d715,_0x4fd461);if(_0x4fd461[_0xa1fd('0x76')][_0xa1fd('0x73')]==='user'){var _0x2268f0={'params':{'id':_0x4fd461[_0xa1fd('0x76')][_0xa1fd('0x77')]},'query':{'section':_0x5a3fb9===_0xa1fd('0x1e')&&_0x4fd461[_0xa1fd('0x72')][_0xa1fd('0x8b')]===_0xa1fd('0x1f')?'QueueCampaigns':_[_0xa1fd('0x18')](_0x5a3fb9)+_0xa1fd('0x19'),'type':_0x4fd461['query']['type'],'nolimit':!![],'sort':_0xa1fd('0xf'),'filter':_0x4fd461[_0xa1fd('0x72')][_0xa1fd('0x4d')]}};return db['UserProfile'][_0xa1fd('0x7b')](_0x2268f0);}return db[_0x5895ec][_0xa1fd('0x7c')](_0x29adf2);})[_0xa1fd('0x11')](function(_0x3838ab){_0x35c135[_0xa1fd('0x9')]=_0x3838ab['count'];_0x5738fe=_0x3838ab[_0xa1fd('0x7d')];return getRealtimeQueues(_0x4fd461,_0x5a3fb9);})[_0xa1fd('0x11')](function(_0x5db66a){_0x3834d5=_0x5db66a['rows'];return getRealtimeAgents();})[_0xa1fd('0x11')](function(_0x4ba6e8){_0x3d2dc8=_0x4ba6e8[_0xa1fd('0x7d')];if(_0x5a3fb9!=_0xa1fd('0x1e'))return;return getRealtimeVoiceQueueChannels();})[_0xa1fd('0x11')](function(_0x251f15){_0x44fc13=_0x251f15?_0x251f15[_0xa1fd('0x7d')]:[];return initializeQueues(_0x5738fe,_0x3834d5,_0x5a3fb9,_0x4fd461['query'][_0xa1fd('0x8b')]);})['then'](function(_0x522ce0){var _0x523759=_0x522ce0[_0xa1fd('0x6f')](function(_0xc0df8b){if(_0x5a3fb9===_0xa1fd('0x1e'))return getVoiceQueueAgents(_0xc0df8b,_0x5738fe,_0x3d2dc8,_0x44fc13);else return getQueueAgents(_0xc0df8b,_0x3d2dc8,_0x5a3fb9);});return Promise['all'](_0x523759);})[_0xa1fd('0x11')](function(_0x534aa4){_0x35c135[_0xa1fd('0x7d')]=_0x534aa4;return _0x35c135;})[_0xa1fd('0x11')](respondWithFilteredResult(_0x1e44ae,_0x29adf2))[_0xa1fd('0x17')](handleError(_0x1e44ae,null));};
\ No newline at end of file
+var _0x527c=['filter','queue','length','some','internal','toString','busy','getMembers','UserId','online','voiceStatus','User','Queue','Pause','findAll','QueueId','unknown','ringing','isNil','chatPause','faxPause','mailPause','openchannelPause','smsPause','voicePause','whatsappPause','idle','every','chatStatus','faxStatus','mailStatus','openchannelStatus','whatsappStatus','userpic','lastPauseAt','pauseType','address','chatCapacity','openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','smsStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','destconnectedlinenum','screenrecording','routealias','map','rawAttributes','fieldName','type','key','role','agent','query','user','userProfileId','nolimit','sort','UserProfile','getResources','rows','globalStatus','globalStatusFilter','pauseTypeFilter','getQueues','mail','sms','openchannel','fax','whatsapp','resolve','channel','includes','toLowerCase','Invalid\x20channel','getOptions','QueueCampaigns','Queues','findAndCountAll','all','util','jayson/promise','../../components/parsers/qs','../../config/logger','api','client','http','undefined','limit','count','offset','status','set','Content-Range','json','error','stack','name','send','request','Agents','then','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','voice','startCase','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','VoiceQueuesChannels','loggedIn','available','waiting','talking','paused','outbound','push','pTalking','message','dialActive','dialMethod','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','get','agents','loggedInDb','originated','find','pick'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x527c,0x194));var _0xc527=function(_0x127316,_0x2774a8){_0x127316=_0x127316-0x0;var _0x34d919=_0x527c[_0x127316];return _0x34d919;};'use strict';var util=require(_0xc527('0x0'));var _=require('lodash');var jayson=require(_0xc527('0x1'));var qs=require(_0xc527('0x2'));var logger=require(_0xc527('0x3'))(_0xc527('0x4'));var db=require('../../mysqldb')['db'];var amiClient=jayson[_0xc527('0x5')][_0xc527('0x6')]({'port':0x232a});var routingClient=jayson[_0xc527('0x5')][_0xc527('0x6')]({'port':0x232c});function respondWithFilteredResult(_0x36b226,_0x3becea){return function(_0xbae80){if(_0xbae80){var _0x335728=typeof _0x3becea['offset']===_0xc527('0x7')&&typeof _0x3becea[_0xc527('0x8')]===_0xc527('0x7');var _0x973562=_0xbae80[_0xc527('0x9')];var _0x5695d2=_0x335728?0x0:_0x3becea[_0xc527('0xa')];var _0x5cf073=_0x335728?_0xbae80[_0xc527('0x9')]:_0x3becea[_0xc527('0xa')]+_0x3becea[_0xc527('0x8')];var _0x3a2489;if(_0x5cf073>=_0x973562){_0x5cf073=_0x973562;_0x3a2489=0xc8;}else{_0x3a2489=0xce;}_0x36b226[_0xc527('0xb')](_0x3a2489);return _0x36b226[_0xc527('0xc')](_0xc527('0xd'),_0x5695d2+'-'+_0x5cf073+'/'+_0x973562)[_0xc527('0xe')](_0xbae80);}return null;};}function handleError(_0x5c5db6,_0x588f43){_0x588f43=_0x588f43||0x1f4;return function(_0x4631d8){logger[_0xc527('0xf')](_0x4631d8[_0xc527('0x10')]);if(_0x4631d8[_0xc527('0x11')]){delete _0x4631d8[_0xc527('0x11')];}_0x5c5db6['status'](_0x588f43)[_0xc527('0x12')](_0x4631d8);};}function getRealtimeAgents(){return new Promise(function(_0x179f58,_0xb3b143){return amiClient[_0xc527('0x13')](_0xc527('0x14'),{})[_0xc527('0x15')](function(_0x442601){if(_0x442601['error'])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x58208c=_0x442601[_0xc527('0x16')];return routingClient[_0xc527('0x13')](_0xc527('0x14'),{})[_0xc527('0x15')](function(_0x5615fa){if(_0x5615fa[_0xc527('0xf')])throw new Error(_0xc527('0x17'));var _0x2591bf=_0x5615fa[_0xc527('0x16')];return _0x179f58(_[_0xc527('0x18')]({},_0x58208c,_0x2591bf));});})[_0xc527('0x19')](function(_0x5e834c){_0xb3b143(_0x5e834c);});});}function getRealtimeQueues(_0x21adaf,_0x32cc2b){return new Promise(function(_0x57bd2c,_0x1c6016){var _0x429583=_0x32cc2b===_0xc527('0x1a')?amiClient:routingClient;return _0x429583[_0xc527('0x13')](_[_0xc527('0x1b')](_0x32cc2b)+'Queues',_0x21adaf)[_0xc527('0x15')](function(_0xb29ffc){if(_0xb29ffc[_0xc527('0xf')])throw new Error(util[_0xc527('0x1c')](_0xc527('0x1d'),_0x32cc2b));return _0x57bd2c(_0xb29ffc[_0xc527('0x16')]);})[_0xc527('0x19')](function(_0x25f010){_0x1c6016(_0x25f010);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x7914cb,_0x435088){return amiClient['request'](_0xc527('0x1e'),{})[_0xc527('0x15')](function(_0x3745a9){if(_0x3745a9['error'])throw new Error('Unable\x20to\x20retrieve\x20voice\x20queues\x20channels');return _0x7914cb(_0x3745a9['result']);})['catch'](function(_0x516f40){_0x435088(_0x516f40);});});}function initializeQueues(_0x424994,_0x11e7da,_0x4ea998,_0x333f84){var _0x4c5f4e=[_0xc527('0x1f'),_0xc527('0x20'),_0xc527('0x21'),_0xc527('0x22'),_0xc527('0x23')];if(_0x4ea998===_0xc527('0x1a')&&_0x333f84===_0xc527('0x24')){_0x4c5f4e[_0xc527('0x25')](_0xc527('0x26'),'originated',_0xc527('0x27'),_0xc527('0x28'),_0xc527('0x29'),'Trunk','startPredictive','startProgressive',_0xc527('0x2a'),'erlangCallToSecond',_0xc527('0x2b'),_0xc527('0x2c'),_0xc527('0x2d'),_0xc527('0x2e'),_0xc527('0x2f'),_0xc527('0x30'),_0xc527('0x31'),_0xc527('0x32'),_0xc527('0x33'),_0xc527('0x34'),_0xc527('0x35'),_0xc527('0x36'));}return _0x424994['map'](function(_0x22b4a8){var _0x2768ee=_0x22b4a8[_0xc527('0x37')]({'plain':!![]});_0x2768ee[_0xc527('0x38')]=[];_0x2768ee[_0xc527('0x23')]=0x0;_0x2768ee[_0xc527('0x39')]=0x0;_0x2768ee['loggedIn']=0x0;_0x2768ee[_0xc527('0x20')]=0x0;_0x2768ee['waiting']=0x0;if(_0x4ea998===_0xc527('0x1a')){_0x2768ee[_0xc527('0x22')]=0x0;_0x2768ee['busy']=0x0;if(_0x333f84===_0xc527('0x24')){_0x2768ee[_0xc527('0x26')]=0x0;_0x2768ee[_0xc527('0x3a')]=0x0;}}var _0x2a1cf4=_[_0xc527('0x3b')](_0x11e7da,['id',_0x2768ee['id']]);if(_0x2a1cf4)_[_0xc527('0x18')](_0x2768ee,_[_0xc527('0x3c')](_0x2a1cf4,_0x4c5f4e));return _0x2768ee;});}function updateAgentVoiceStatus(_0x22d4bb,_0x2eda8b,_0x5a18d9){var _0x2fc314=_[_0xc527('0x3d')](_0x5a18d9,[_0xc527('0x3e'),_0x2eda8b['name']]);if(_0x2fc314[_0xc527('0x3f')]===0x0)return _0x22d4bb['busy']=!![];if(_[_0xc527('0x40')](_0x2fc314,['connectedlinenum',_0x22d4bb[_0xc527('0x41')][_0xc527('0x42')]()]))return _0x22d4bb[_0xc527('0x22')]=!![];if(!_0x22d4bb[_0xc527('0x22')])return _0x22d4bb[_0xc527('0x43')]=!![];}function getVoiceQueueAgents(_0x289003,_0xd0013e,_0x275146,_0x4e9eee){var _0x5acc8=_[_0xc527('0x3b')](_0xd0013e,['id',_0x289003['id']]);if(!_0x5acc8)return _0x289003;return _0x5acc8[_0xc527('0x44')]({'raw':!![]})[_0xc527('0x15')](function(_0x67b419){for(var _0x1d153c=0x0;_0x1d153c<_0x67b419[_0xc527('0x3f')];_0x1d153c++){var _0x1524da=_[_0xc527('0x3b')](_0x275146,['id',_0x67b419[_0x1d153c][_0xc527('0x45')]]);if(!_0x1524da){_0x1524da={'id':_0x67b419[_0x1d153c][_0xc527('0x45')],'name':_0x67b419[_0x1d153c][_0xc527('0x45')],'accountcode':'','online':![]};}var _0x25ea26={'id':_0x1524da['id'],'name':_0x1524da[_0xc527('0x11')],'internal':_0x1524da['accountcode'],'online':Boolean(_0x1524da[_0xc527('0x46')]),'paused':Boolean(_0x67b419[_0x1d153c][_0xc527('0x23')])};if(_0x1524da[_0xc527('0x47')]===_0xc527('0x22'))updateAgentVoiceStatus(_0x25ea26,_0x289003,_0x4e9eee);if(_0x25ea26['online'])_0x289003[_0xc527('0x39')]++;if(_0x25ea26[_0xc527('0x43')])_0x289003[_0xc527('0x43')]++;if(_0x25ea26[_0xc527('0x23')]&&!_0x25ea26[_0xc527('0x43')]&&!_0x25ea26[_0xc527('0x22')])_0x289003[_0xc527('0x23')]++;_0x289003[_0xc527('0x38')][_0xc527('0x25')](_0x25ea26);}return _0x289003;});}function getQueueAgents(_0xe3b839,_0x4266c2,_0x2b709c){var _0x43db87=_0xc527('0x48')+_[_0xc527('0x1b')](_0x2b709c)+_0xc527('0x49');var _0x5a6779=_0x2b709c+_0xc527('0x4a');return db[_0x43db87][_0xc527('0x4b')]({'where':{[_[_0xc527('0x1b')](_0x2b709c)+_0xc527('0x4c')]:_0xe3b839['id']},'raw':!![]})[_0xc527('0x15')](function(_0x1f086e){for(var _0x3d4d18=0x0;_0x3d4d18<_0x1f086e['length'];_0x3d4d18++){var _0x34b725=_[_0xc527('0x3b')](_0x4266c2,['id',_0x1f086e[_0x3d4d18][_0xc527('0x45')]]);if(!_0x34b725){_0x34b725={'id':_0x1f086e[_0x3d4d18]['UserId'],'name':_0x1f086e[_0x3d4d18][_0xc527('0x45')],'online':![],['pauseField']:![]};}var _0x419d56={'id':_0x34b725['id'],'name':_0x34b725[_0xc527('0x11')],'online':Boolean(_0x34b725[_0xc527('0x46')]),'paused':Boolean(_0x34b725[_0x5a6779])};if(_0x419d56[_0xc527('0x46')])_0xe3b839[_0xc527('0x39')]++;_0xe3b839['agents'][_0xc527('0x25')](_0x419d56);}return _0xe3b839;});}function isIdle(_0x252eae){return _0x252eae==='idle'||_0x252eae===_0xc527('0x4d')||_0x252eae==='unavailable'||_0x252eae===_0xc527('0x4e')||_[_0xc527('0x4f')](_0x252eae);}function isAgentPaused(_0x14d53f,_0x244186){var _0x1e077f=[_0x14d53f[_0xc527('0x50')],_0x14d53f[_0xc527('0x51')],_0x14d53f[_0xc527('0x52')],_0x14d53f[_0xc527('0x53')],_0x14d53f[_0xc527('0x54')],_0x14d53f[_0xc527('0x55')],_0x14d53f[_0xc527('0x56')]];if(!_0x244186)return _['every'](_0x1e077f);var _0x2a6dc6=_[_0xc527('0x3d')](_0x1e077f);return _0x2a6dc6['length']>0x0&&_0x2a6dc6['length']<_0x1e077f['length']?!![]:![];}function isAgentIdle(_0x1e9721){if(_0x1e9721[_0xc527('0x47')]!==_0xc527('0x57')&&_0x1e9721[_0xc527('0x55')]){_0x1e9721[_0xc527('0x47')]='pause';return![];}return _[_0xc527('0x58')]([_0x1e9721[_0xc527('0x59')],_0x1e9721[_0xc527('0x5a')],_0x1e9721[_0xc527('0x5b')],_0x1e9721[_0xc527('0x5c')],_0x1e9721['smsStatus'],_0x1e9721[_0xc527('0x47')],_0x1e9721[_0xc527('0x5d')]],isIdle);}function getAgentStatus(_0x29cfdd){var _0x2fb917=_0xc527('0x4d');if(isAgentPaused(_0x29cfdd))_0x2fb917='pause';else if(isAgentPaused(_0x29cfdd,!![]))_0x2fb917='*pause';else if(isAgentIdle(_0x29cfdd))_0x2fb917=_0xc527('0x57');else _0x2fb917=_0xc527('0x43');return _0x2fb917;}exports['getAgents']=function(_0x4ca4d7,_0x2a8cc3){var _0x35d7a1={'count':0x0,'rows':[]},_0x16937b={},_0x12321d,_0x327411,_0x5e9d8f=[_0xc527('0x5e'),_0xc527('0x46'),'lastLoginAt',_0xc527('0x5f'),_0xc527('0x60'),_0xc527('0x5f'),'internal',_0xc527('0x61'),_0xc527('0x50'),_0xc527('0x53'),_0xc527('0x52'),_0xc527('0x54'),_0xc527('0x56'),_0xc527('0x51'),'voicePause',_0xc527('0x62'),_0xc527('0x63'),_0xc527('0x64'),_0xc527('0x65'),_0xc527('0x66'),_0xc527('0x67'),_0xc527('0x68'),_0xc527('0x69'),_0xc527('0x6a'),_0xc527('0x6b'),_0xc527('0x6c'),_0xc527('0x6d'),_0xc527('0x59'),'openchannelStatus','mailStatus',_0xc527('0x6e'),_0xc527('0x5d'),_0xc527('0x5a'),'voiceStatus',_0xc527('0x6f'),_0xc527('0x70'),_0xc527('0x71'),_0xc527('0x72'),_0xc527('0x73'),_0xc527('0x74'),_0xc527('0x75'),_0xc527('0x3e'),_0xc527('0x76'),_0xc527('0x77'),'phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording',_0xc527('0x78')],_0x1b5a69=[_0xc527('0x50'),_0xc527('0x53'),_0xc527('0x52'),_0xc527('0x54'),_0xc527('0x56'),_0xc527('0x51'),_0xc527('0x55'),_0xc527('0x46')];Promise['resolve']()[_0xc527('0x15')](function(){var _0x2bfeda=_[_0xc527('0x79')](db['User'][_0xc527('0x7a')],function(_0x3d216a){return{'name':_0x3d216a[_0xc527('0x7b')],'type':_0x3d216a[_0xc527('0x7c')][_0xc527('0x7d')]};});_0x4ca4d7['query'][_0xc527('0x7e')]=_0xc527('0x7f');_0x4ca4d7[_0xc527('0x80')][_0xc527('0x46')]=!![];_0x16937b=qs['getOptions'](_0x2bfeda,_0x4ca4d7);_0x16937b['raw']=!![];if(_0x4ca4d7[_0xc527('0x81')][_0xc527('0x7e')]===_0xc527('0x81')){var _0x31197e={'params':{'id':_0x4ca4d7['user'][_0xc527('0x82')]},'query':{'section':_0xc527('0x14'),'role':'agent','online':!![],'nolimit':_0x4ca4d7['query'][_0xc527('0x83')],'sort':_0x4ca4d7[_0xc527('0x80')][_0xc527('0x84')],'filter':_0x4ca4d7[_0xc527('0x80')][_0xc527('0x3d')]},'raw':!![]};return db[_0xc527('0x85')][_0xc527('0x86')](_0x31197e);}return db[_0xc527('0x48')]['findAndCountAll'](_0x16937b);})['then'](function(_0x46e336){_0x35d7a1[_0xc527('0x9')]=_0x46e336['count'];_0x12321d=_0x46e336[_0xc527('0x87')];return getRealtimeAgents();})['then'](function(_0x3c63de){_0x327411=_0x3c63de['rows'];return _0x12321d['map'](function(_0x32ddb8){var _0x246427=_['find'](_0x327411,['id',_0x32ddb8['id']]);if(_0x246427)_[_0xc527('0x18')](_0x32ddb8,_['pick'](_['omit'](_0x246427,_0x1b5a69),_0x5e9d8f));_0x32ddb8[_0xc527('0x88')]=getAgentStatus(_0x32ddb8);return _0x32ddb8;});})[_0xc527('0x15')](function(_0x153451){if(_0x4ca4d7[_0xc527('0x80')][_0xc527('0x89')]){var _0x588ea4=_[_0xc527('0x3d')](_0x153451,[_0xc527('0x88'),_0x4ca4d7['query'][_0xc527('0x89')]]);if(_0x4ca4d7[_0xc527('0x80')][_0xc527('0x8a')]){_0x588ea4=_[_0xc527('0x3d')](_0x588ea4,[_0xc527('0x60'),_0x4ca4d7[_0xc527('0x80')]['pauseTypeFilter']]);}}_0x35d7a1[_0xc527('0x87')]=_0x588ea4||_0x153451;return _0x35d7a1;})[_0xc527('0x15')](respondWithFilteredResult(_0x2a8cc3,_0x16937b))[_0xc527('0x19')](handleError(_0x2a8cc3,null));};exports[_0xc527('0x8b')]=function(_0x1cb6f3,_0x555c97){var _0x2b0a35=[_0xc527('0x8c'),'chat',_0xc527('0x8d'),_0xc527('0x8e'),_0xc527('0x8f'),_0xc527('0x90'),_0xc527('0x1a')];var _0x27f3fe={'count':0x0,'rows':[]},_0x130800={},_0xaa25ae,_0x7420cf,_0x246fbe,_0x129f2c,_0x4100d8;Promise[_0xc527('0x91')]()[_0xc527('0x15')](function(){if(_0x1cb6f3[_0xc527('0x80')][_0xc527('0x92')]){if(!_[_0xc527('0x93')](_0x2b0a35,_0x1cb6f3[_0xc527('0x80')][_0xc527('0x92')][_0xc527('0x94')]()))throw new Error(_0xc527('0x95'));_0xaa25ae=_0x1cb6f3[_0xc527('0x80')]['channel'][_0xc527('0x94')]();}var _0xce99d=_[_0xc527('0x1b')](_0xaa25ae)+'Queue';var _0x2d5ab7=_[_0xc527('0x79')](db[_0xce99d][_0xc527('0x7a')],function(_0x2c31c9){return{'name':_0x2c31c9['fieldName'],'type':_0x2c31c9[_0xc527('0x7c')][_0xc527('0x7d')]};});_0x130800=qs[_0xc527('0x96')](_0x2d5ab7,_0x1cb6f3);if(_0x1cb6f3[_0xc527('0x81')]['role']==='user'){var _0x57f9b0={'params':{'id':_0x1cb6f3[_0xc527('0x81')][_0xc527('0x82')]},'query':{'section':_0xaa25ae===_0xc527('0x1a')&&_0x1cb6f3[_0xc527('0x80')]['type']===_0xc527('0x24')?_0xc527('0x97'):_[_0xc527('0x1b')](_0xaa25ae)+_0xc527('0x98'),'type':_0x1cb6f3[_0xc527('0x80')][_0xc527('0x7c')],'nolimit':!![],'sort':'name','filter':_0x1cb6f3[_0xc527('0x80')][_0xc527('0x3d')]}};return db['UserProfile'][_0xc527('0x86')](_0x57f9b0);}return db[_0xce99d][_0xc527('0x99')](_0x130800);})[_0xc527('0x15')](function(_0x2d48aa){_0x27f3fe[_0xc527('0x9')]=_0x2d48aa[_0xc527('0x9')];_0x7420cf=_0x2d48aa[_0xc527('0x87')];return getRealtimeQueues(_0x1cb6f3,_0xaa25ae);})['then'](function(_0x5d5fae){_0x129f2c=_0x5d5fae[_0xc527('0x87')];return getRealtimeAgents();})['then'](function(_0x1cec35){_0x246fbe=_0x1cec35[_0xc527('0x87')];if(_0xaa25ae!=_0xc527('0x1a'))return;return getRealtimeVoiceQueueChannels();})['then'](function(_0x2e2b04){_0x4100d8=_0x2e2b04?_0x2e2b04[_0xc527('0x87')]:[];return initializeQueues(_0x7420cf,_0x129f2c,_0xaa25ae,_0x1cb6f3[_0xc527('0x80')]['type']);})[_0xc527('0x15')](function(_0x13f689){var _0x20cc11=_0x13f689['map'](function(_0x5e44bf){if(_0xaa25ae===_0xc527('0x1a'))return getVoiceQueueAgents(_0x5e44bf,_0x7420cf,_0x246fbe,_0x4100d8);else return getQueueAgents(_0x5e44bf,_0x246fbe,_0xaa25ae);});return Promise[_0xc527('0x9a')](_0x20cc11);})[_0xc527('0x15')](function(_0x3f364c){_0x27f3fe[_0xc527('0x87')]=_0x3f364c;return _0x27f3fe;})[_0xc527('0x15')](respondWithFilteredResult(_0x555c97,_0x130800))[_0xc527('0x19')](handleError(_0x555c97,null));};
\ No newline at end of file
index e2bcfb9..ab0a240 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x1ee2c0,_0x553cfe){var _0x172947=function(_0x12a362){while(--_0x12a362){_0x1ee2c0['push'](_0x1ee2c0['shift']());}};_0x172947(++_0x553cfe);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x5c0966,_0xb6392b){var _0x1ff52b=function(_0x798f0a){while(--_0x798f0a){_0x5c0966['push'](_0x5c0966['shift']());}};_0x1ff52b(++_0xb6392b);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x13c70c,_0x546b34){_0x13c70c=_0x13c70c-0x0;var _0x50f0f2=_0xcb91[_0x13c70c];return _0x50f0f2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
index 99415b6..a58a6b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0650=['DATE','sequelize','INTEGER','STRING'];(function(_0x4da49e,_0x22afee){var _0x171102=function(_0x47ca17){while(--_0x47ca17){_0x4da49e['push'](_0x4da49e['shift']());}};_0x171102(++_0x22afee);}(_0x0650,0xed));var _0x0065=function(_0x36a560,_0x57378b){_0x36a560=_0x36a560-0x0;var _0x10923a=_0x0650[_0x36a560];return _0x10923a;};'use strict';var Sequelize=require(_0x0065('0x0'));module['exports']={'state':{'type':Sequelize[_0x0065('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x0065('0x2')]},'scheduledat':{'type':Sequelize['DATE']},'uniqueid':{'type':Sequelize[_0x0065('0x2')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x0065('0x3')]},'ringtime':{'type':Sequelize[_0x0065('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x0065('0x2')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x0065('0x2')]}};
\ No newline at end of file
+var _0x5a5a=['DATE','exports','INTEGER','STRING'];(function(_0x2bf7b7,_0x59c8e6){var _0x40c78d=function(_0x3ac631){while(--_0x3ac631){_0x2bf7b7['push'](_0x2bf7b7['shift']());}};_0x40c78d(++_0x59c8e6);}(_0x5a5a,0x1d1));var _0xa5a5=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x5a5a[_0x173441];return _0x2423a8;};'use strict';var Sequelize=require('sequelize');module[_0xa5a5('0x0')]={'state':{'type':Sequelize[_0xa5a5('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xa5a5('0x2')]},'scheduledat':{'type':Sequelize[_0xa5a5('0x3')]},'uniqueid':{'type':Sequelize[_0xa5a5('0x2')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0xa5a5('0x3')]},'ringtime':{'type':Sequelize[_0xa5a5('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0xa5a5('0x2')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 7eb6ab2..d7c2d5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a3e=['report_agent_preview','lodash','util','../../config/logger','moment','bluebird','rimraf','../../config/environment','define','ReportAgentPreview'];(function(_0x339c1f,_0x4d1161){var _0x2c0fb8=function(_0x430e3f){while(--_0x430e3f){_0x339c1f['push'](_0x339c1f['shift']());}};_0x2c0fb8(++_0x4d1161);}(_0x5a3e,0x169));var _0xe5a3=function(_0x36c05c,_0x263754){_0x36c05c=_0x36c05c-0x0;var _0x2d892f=_0x5a3e[_0x36c05c];return _0x2d892f;};'use strict';var _=require(_0xe5a3('0x0'));var util=require(_0xe5a3('0x1'));var logger=require(_0xe5a3('0x2'))('api');var moment=require(_0xe5a3('0x3'));var BPromise=require(_0xe5a3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xe5a3('0x5'));var config=require(_0xe5a3('0x6'));var attributes=require('./reportAgentPreview.attributes');module['exports']=function(_0x2a141e,_0x83f699){return _0x2a141e[_0xe5a3('0x7')](_0xe5a3('0x8'),attributes,{'tableName':_0xe5a3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x31cc=['util','../../config/logger','api','request-promise','../../config/environment','exports','define','ReportAgentPreview','report_agent_preview','lodash'];(function(_0x4693b8,_0xff4dcc){var _0x117328=function(_0x847a02){while(--_0x847a02){_0x4693b8['push'](_0x4693b8['shift']());}};_0x117328(++_0xff4dcc);}(_0x31cc,0x1c1));var _0xc31c=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0x31cc[_0x3c2a69];return _0x596bc8;};'use strict';var _=require(_0xc31c('0x0'));var util=require(_0xc31c('0x1'));var logger=require(_0xc31c('0x2'))(_0xc31c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc31c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xc31c('0x5'));var attributes=require('./reportAgentPreview.attributes');module[_0xc31c('0x6')]=function(_0x2caf1c,_0x45d9d1){return _0x2caf1c[_0xc31c('0x7')](_0xc31c('0x8'),attributes,{'tableName':_0xc31c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5e62056..e51bc05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c16=['stringify','error','message','result','catch','ReportAgentPreview','create','options','raw','CreateReportAgentPreview','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x49ed67,_0x290989){var _0x1523d5=function(_0x34a179){while(--_0x34a179){_0x49ed67['push'](_0x49ed67['shift']());}};_0x1523d5(++_0x290989);}(_0x9c16,0x190));var _0x69c1=function(_0x378159,_0x3e2f8c){_0x378159=_0x378159-0x0;var _0x4ec2e2=_0x9c16[_0x378159];return _0x4ec2e2;};'use strict';var _=require(_0x69c1('0x0'));var util=require(_0x69c1('0x1'));var moment=require(_0x69c1('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x69c1('0x3'));var db=require(_0x69c1('0x4'))['db'];var utils=require(_0x69c1('0x5'));var logger=require(_0x69c1('0x6'))(_0x69c1('0x7'));var config=require('../../config/environment');var jayson=require(_0x69c1('0x8'));var client=jayson[_0x69c1('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xa1abf5,_0x15cfcc,_0x314bef){return new BPromise(function(_0x583b8d,_0x4b7263){return client[_0x69c1('0xa')](_0xa1abf5,_0x314bef)[_0x69c1('0xb')](function(_0x65fb37){logger[_0x69c1('0xc')](_0x69c1('0xd'),_0x15cfcc,_0x69c1('0xe'));logger[_0x69c1('0xf')]('ReportAgentPreview,\x20%s,\x20%s,\x20%s',_0x15cfcc,'request\x20sent',JSON[_0x69c1('0x10')](_0x65fb37));if(_0x65fb37[_0x69c1('0x11')]){if(_0x65fb37[_0x69c1('0x11')]['code']===0x1f4){logger['error'](_0x69c1('0xd'),_0x15cfcc,_0x65fb37['error'][_0x69c1('0x12')]);return _0x4b7263(_0x65fb37['error'][_0x69c1('0x12')]);}logger[_0x69c1('0x11')](_0x69c1('0xd'),_0x15cfcc,_0x65fb37[_0x69c1('0x11')][_0x69c1('0x12')]);return _0x583b8d(_0x65fb37['error']['message']);}else{logger['info'](_0x69c1('0xd'),_0x15cfcc,_0x69c1('0xe'));_0x583b8d(_0x65fb37[_0x69c1('0x13')][_0x69c1('0x12')]);}})[_0x69c1('0x14')](function(_0x35d72e){logger[_0x69c1('0x11')]('ReportAgentPreview,\x20%s,\x20%s',_0x15cfcc,_0x35d72e);_0x4b7263(_0x35d72e);});});}exports['CreateReportAgentPreview']=function(_0x6a8f4f){var _0x163c48=this;return new Promise(function(_0x5e6502,_0x1e0711){return db[_0x69c1('0x15')][_0x69c1('0x16')](_0x6a8f4f['body'],{'raw':_0x6a8f4f[_0x69c1('0x17')]?_0x6a8f4f['options'][_0x69c1('0x18')]===undefined?!![]:![]:!![]})[_0x69c1('0xb')](function(_0x97ec2a){logger['info'](_0x69c1('0x19'),_0x6a8f4f);logger[_0x69c1('0xf')](_0x69c1('0x19'),_0x6a8f4f,JSON['stringify'](_0x97ec2a));_0x5e6502(_0x97ec2a);})[_0x69c1('0x14')](function(_0x44950b){logger[_0x69c1('0x11')]('CreateReportAgentPreview',_0x44950b[_0x69c1('0x12')],_0x6a8f4f);_0x1e0711(_0x163c48[_0x69c1('0x11')](0x1f4,_0x44950b[_0x69c1('0x12')]));});});};
\ No newline at end of file
+var _0x7506=['options','raw','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateReportAgentPreview','ReportAgentPreview','body'];(function(_0x414ff1,_0xf0462b){var _0x29c53f=function(_0x1dab72){while(--_0x1dab72){_0x414ff1['push'](_0x414ff1['shift']());}};_0x29c53f(++_0xf0462b);}(_0x7506,0x1e8));var _0x6750=function(_0x4b2436,_0x452299){_0x4b2436=_0x4b2436-0x0;var _0x4f5ab2=_0x7506[_0x4b2436];return _0x4f5ab2;};'use strict';var _=require('lodash');var util=require(_0x6750('0x0'));var moment=require(_0x6750('0x1'));var BPromise=require(_0x6750('0x2'));var rs=require(_0x6750('0x3'));var fs=require('fs');var Redis=require(_0x6750('0x4'));var db=require(_0x6750('0x5'))['db'];var utils=require(_0x6750('0x6'));var logger=require(_0x6750('0x7'))(_0x6750('0x8'));var config=require(_0x6750('0x9'));var jayson=require(_0x6750('0xa'));var client=jayson[_0x6750('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3a0451,_0x2bfbd0,_0x1b2ba6){return new BPromise(function(_0x1ac58f,_0x3e2424){return client['request'](_0x3a0451,_0x1b2ba6)['then'](function(_0x10352a){logger[_0x6750('0xc')](_0x6750('0xd'),_0x2bfbd0,_0x6750('0xe'));logger[_0x6750('0xf')](_0x6750('0x10'),_0x2bfbd0,_0x6750('0xe'),JSON[_0x6750('0x11')](_0x10352a));if(_0x10352a[_0x6750('0x12')]){if(_0x10352a['error']['code']===0x1f4){logger[_0x6750('0x12')]('ReportAgentPreview,\x20%s,\x20%s',_0x2bfbd0,_0x10352a[_0x6750('0x12')][_0x6750('0x13')]);return _0x3e2424(_0x10352a[_0x6750('0x12')]['message']);}logger[_0x6750('0x12')](_0x6750('0xd'),_0x2bfbd0,_0x10352a[_0x6750('0x12')][_0x6750('0x13')]);return _0x1ac58f(_0x10352a[_0x6750('0x12')]['message']);}else{logger['info'](_0x6750('0xd'),_0x2bfbd0,_0x6750('0xe'));_0x1ac58f(_0x10352a[_0x6750('0x14')][_0x6750('0x13')]);}})[_0x6750('0x15')](function(_0x57ff7b){logger[_0x6750('0x12')](_0x6750('0xd'),_0x2bfbd0,_0x57ff7b);_0x3e2424(_0x57ff7b);});});}exports[_0x6750('0x16')]=function(_0x517f0d){var _0x13430f=this;return new Promise(function(_0x5ed744,_0x2c1f50){return db[_0x6750('0x17')]['create'](_0x517f0d[_0x6750('0x18')],{'raw':_0x517f0d[_0x6750('0x19')]?_0x517f0d[_0x6750('0x19')][_0x6750('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x2aba76){logger['info'](_0x6750('0x16'),_0x517f0d);logger[_0x6750('0xf')](_0x6750('0x16'),_0x517f0d,JSON['stringify'](_0x2aba76));_0x5ed744(_0x2aba76);})[_0x6750('0x15')](function(_0x1dc23c){logger[_0x6750('0x12')](_0x6750('0x16'),_0x1dc23c[_0x6750('0x13')],_0x517f0d);_0x2c1f50(_0x13430f[_0x6750('0x12')](0x1f4,_0x1dc23c[_0x6750('0x13')]));});});};
\ No newline at end of file
index 4aacd70..4ccd6f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd20=['openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','showVoiceQueues','put','/voice/queues/:id','/outbound','outbound','/outbound/channels','/agents','agents','/agents/:id/capacity','agentCapacity','/telephones','telephones','trunks','campaigns','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','mail','/mail/queues/:id','queueNotify','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','showFaxQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','/whatsapp/queues/:id','showWhatsappQueues','agentNotify','exports','multer','path','express','Router','./rpc.controller','get','isAuthenticated','voiceChannels','/voice/channels/:uniqueid/mixmonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','chatQueues','/mail/queues','mailQueues','/mail/accounts','/openchannel/queues'];(function(_0xb66224,_0x3a3f2f){var _0x346365=function(_0x51de16){while(--_0x51de16){_0xb66224['push'](_0xb66224['shift']());}};_0x346365(++_0x3a3f2f);}(_0xdd20,0x12a));var _0x0dd2=function(_0x2f9413,_0x721160){_0x2f9413=_0x2f9413-0x0;var _0x3abc04=_0xdd20[_0x2f9413];return _0x3abc04;};'use strict';var multer=require(_0x0dd2('0x0'));var util=require('util');var path=require(_0x0dd2('0x1'));var express=require(_0x0dd2('0x2'));var router=express[_0x0dd2('0x3')]();var auth=require('../../components/auth/service');var controller=require(_0x0dd2('0x4'));router[_0x0dd2('0x5')]('/voice/channels',auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x7')]);router[_0x0dd2('0x5')](_0x0dd2('0x8'),auth[_0x0dd2('0x6')](),controller['voiceChannelMixMonitor']);router[_0x0dd2('0x5')](_0x0dd2('0x9'),auth['isAuthenticated'](),controller[_0x0dd2('0xa')]);router['get'](_0x0dd2('0xb'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0xc')]);router[_0x0dd2('0x5')]('/chat/queues',auth['isAuthenticated'](),controller[_0x0dd2('0xd')]);router[_0x0dd2('0x5')](_0x0dd2('0xe'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0xf')]);router[_0x0dd2('0x5')](_0x0dd2('0x10'),auth[_0x0dd2('0x6')](),controller['mailAccounts']);router[_0x0dd2('0x5')](_0x0dd2('0x11'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x12')]);router[_0x0dd2('0x5')](_0x0dd2('0x13'),auth['isAuthenticated'](),controller[_0x0dd2('0x14')]);router[_0x0dd2('0x5')](_0x0dd2('0x15'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x16')]);router['get'](_0x0dd2('0x17'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x18')]);router[_0x0dd2('0x5')](_0x0dd2('0x19'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x1a')]);router[_0x0dd2('0x5')]('/voice/queues/channels',auth['isAuthenticated'](),controller[_0x0dd2('0x1b')]);router[_0x0dd2('0x5')](_0x0dd2('0x1c'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x1d')]);router['get'](_0x0dd2('0x1e'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x1f')]);router[_0x0dd2('0x5')](_0x0dd2('0x20'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x21')]);router[_0x0dd2('0x5')]('/voice/queues/:id',auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x22')]);router[_0x0dd2('0x23')](_0x0dd2('0x24'),auth[_0x0dd2('0x6')](),controller['updateVoiceQueue']);router[_0x0dd2('0x5')](_0x0dd2('0x25'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x26')]);router[_0x0dd2('0x5')](_0x0dd2('0x27'),auth[_0x0dd2('0x6')](),controller['outboundChannels']);router[_0x0dd2('0x5')](_0x0dd2('0x28'),auth['isAuthenticated'](),controller[_0x0dd2('0x29')]);router[_0x0dd2('0x23')](_0x0dd2('0x2a'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x2b')]);router['get'](_0x0dd2('0x2c'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x2d')]);router[_0x0dd2('0x5')]('/trunks',auth['isAuthenticated'](),controller[_0x0dd2('0x2e')]);router[_0x0dd2('0x5')]('/campaigns',auth['isAuthenticated'](),controller[_0x0dd2('0x2f')]);router[_0x0dd2('0x5')]('/fax/accounts',auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x30')]);router[_0x0dd2('0x5')](_0x0dd2('0x31'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x32')]);router[_0x0dd2('0x5')](_0x0dd2('0x33'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x34')]);router['get'](_0x0dd2('0x35'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x36')]);router[_0x0dd2('0x5')](_0x0dd2('0x37'),auth[_0x0dd2('0x6')](),controller['openchannelQueuesIdWaitingInteractions']);router[_0x0dd2('0x5')](_0x0dd2('0x38'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x39')]);router[_0x0dd2('0x5')]('/whatsapp/queues/waitinginteractions',auth['isAuthenticated'](),controller['whatsappQueuesWaitingInteractions']);router[_0x0dd2('0x5')](_0x0dd2('0x3a'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x3b')]);router[_0x0dd2('0x3c')](_0x0dd2('0x3d'),auth['isAuthenticated'](),controller['queueNotify'](_0x0dd2('0x3e')));router[_0x0dd2('0x5')](_0x0dd2('0x3f'),auth['isAuthenticated'](),controller['showMailQueues']);router['post']('/chat/queues/:id/notify',auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x40')](_0x0dd2('0x41')));router[_0x0dd2('0x5')](_0x0dd2('0x42'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x43')]);router[_0x0dd2('0x3c')](_0x0dd2('0x44'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x40')]('fax'));router[_0x0dd2('0x5')]('/fax/queues/:id',auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x45')]);router[_0x0dd2('0x3c')]('/openchannel/queues/:id/notify',auth[_0x0dd2('0x6')](),controller['queueNotify']('openchannel'));router[_0x0dd2('0x5')]('/openchannel/queues/:id',auth['isAuthenticated'](),controller['showOpenchannelQueues']);router[_0x0dd2('0x3c')](_0x0dd2('0x46'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x40')](_0x0dd2('0x47')));router[_0x0dd2('0x3c')](_0x0dd2('0x48'),auth[_0x0dd2('0x6')](),controller[_0x0dd2('0x40')](_0x0dd2('0x49')));router['get'](_0x0dd2('0x4a'),auth['isAuthenticated'](),controller['showSmsQueues']);router[_0x0dd2('0x5')](_0x0dd2('0x4b'),auth['isAuthenticated'](),controller[_0x0dd2('0x4c')]);router['post']('/agents/:id/notify',auth['isAuthenticated'](),controller[_0x0dd2('0x4d')]);module[_0x0dd2('0x4e')]=router;
\ No newline at end of file
+var _0xdc09=['smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','/mail/queues/:id','showMailQueues','queueNotify','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','exports','util','path','express','Router','get','/voice/channels','voiceChannels','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','isAuthenticated','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','/voice/queues/preview/:id','/voice/queues/channels','voiceQueuesChannels','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','showVoiceQueues','put','/voice/queues/:id','updateVoiceQueue','/outbound','/outbound/channels','outboundChannels','agentCapacity','/telephones','telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions'];(function(_0x18cb0a,_0x172892){var _0x4c7286=function(_0xf07105){while(--_0xf07105){_0x18cb0a['push'](_0x18cb0a['shift']());}};_0x4c7286(++_0x172892);}(_0xdc09,0xc2));var _0x9dc0=function(_0x50f392,_0x1d8441){_0x50f392=_0x50f392-0x0;var _0x5926f2=_0xdc09[_0x50f392];return _0x5926f2;};'use strict';var multer=require('multer');var util=require(_0x9dc0('0x0'));var path=require(_0x9dc0('0x1'));var express=require(_0x9dc0('0x2'));var router=express[_0x9dc0('0x3')]();var auth=require('../../components/auth/service');var controller=require('./rpc.controller');router[_0x9dc0('0x4')](_0x9dc0('0x5'),auth['isAuthenticated'](),controller[_0x9dc0('0x6')]);router[_0x9dc0('0x4')]('/voice/channels/:uniqueid/mixmonitor',auth['isAuthenticated'](),controller[_0x9dc0('0x7')]);router[_0x9dc0('0x4')](_0x9dc0('0x8'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0xa')]);router[_0x9dc0('0x4')](_0x9dc0('0xb'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0xc')]);router[_0x9dc0('0x4')](_0x9dc0('0xd'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0xe')]);router['get'](_0x9dc0('0xf'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x10')]);router['get'](_0x9dc0('0x11'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x12')]);router[_0x9dc0('0x4')](_0x9dc0('0x13'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x14')]);router[_0x9dc0('0x4')](_0x9dc0('0x15'),auth['isAuthenticated'](),controller[_0x9dc0('0x16')]);router['get'](_0x9dc0('0x17'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x18')]);router[_0x9dc0('0x4')](_0x9dc0('0x19'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x1a')]);router['get'](_0x9dc0('0x1b'),auth[_0x9dc0('0x9')](),controller['voiceQueuesPreview']);router[_0x9dc0('0x4')](_0x9dc0('0x1c'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x1d')]);router[_0x9dc0('0x4')]('/voice/queues/channels/:uniqueid',auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x1e')]);router[_0x9dc0('0x4')](_0x9dc0('0x1f'),auth[_0x9dc0('0x9')](),controller['voiceQueuesChannelHangup']);router[_0x9dc0('0x4')](_0x9dc0('0x20'),auth['isAuthenticated'](),controller[_0x9dc0('0x21')]);router[_0x9dc0('0x4')]('/voice/queues/:id',auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x22')]);router[_0x9dc0('0x23')](_0x9dc0('0x24'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x25')]);router['get'](_0x9dc0('0x26'),auth['isAuthenticated'](),controller['outbound']);router[_0x9dc0('0x4')](_0x9dc0('0x27'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x28')]);router['get']('/agents',auth[_0x9dc0('0x9')](),controller['agents']);router[_0x9dc0('0x23')]('/agents/:id/capacity',auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x29')]);router[_0x9dc0('0x4')](_0x9dc0('0x2a'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x2b')]);router['get'](_0x9dc0('0x2c'),auth['isAuthenticated'](),controller[_0x9dc0('0x2d')]);router[_0x9dc0('0x4')](_0x9dc0('0x2e'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x2f')]);router[_0x9dc0('0x4')](_0x9dc0('0x30'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x31')]);router[_0x9dc0('0x4')](_0x9dc0('0x32'),auth['isAuthenticated'](),controller[_0x9dc0('0x33')]);router[_0x9dc0('0x4')](_0x9dc0('0x34'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x35')]);router[_0x9dc0('0x4')]('/openchannel/queues/waitinginteractions',auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x36')]);router[_0x9dc0('0x4')](_0x9dc0('0x37'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x38')]);router[_0x9dc0('0x4')](_0x9dc0('0x39'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x3a')]);router[_0x9dc0('0x4')](_0x9dc0('0x3b'),auth[_0x9dc0('0x9')](),controller['whatsappQueuesWaitingInteractions']);router[_0x9dc0('0x4')](_0x9dc0('0x3c'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x3d')]);router[_0x9dc0('0x3e')](_0x9dc0('0x3f'),auth[_0x9dc0('0x9')](),controller['queueNotify']('mail'));router[_0x9dc0('0x4')](_0x9dc0('0x40'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x41')]);router[_0x9dc0('0x3e')]('/chat/queues/:id/notify',auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x42')](_0x9dc0('0x43')));router['get'](_0x9dc0('0x44'),auth['isAuthenticated'](),controller[_0x9dc0('0x45')]);router[_0x9dc0('0x3e')]('/fax/queues/:id/notify',auth[_0x9dc0('0x9')](),controller['queueNotify']('fax'));router[_0x9dc0('0x4')](_0x9dc0('0x46'),auth['isAuthenticated'](),controller[_0x9dc0('0x47')]);router[_0x9dc0('0x3e')](_0x9dc0('0x48'),auth['isAuthenticated'](),controller['queueNotify'](_0x9dc0('0x49')));router[_0x9dc0('0x4')](_0x9dc0('0x4a'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x4b')]);router[_0x9dc0('0x3e')](_0x9dc0('0x4c'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x42')](_0x9dc0('0x4d')));router[_0x9dc0('0x3e')](_0x9dc0('0x4e'),auth[_0x9dc0('0x9')](),controller['queueNotify'](_0x9dc0('0x4f')));router['get'](_0x9dc0('0x50'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x51')]);router[_0x9dc0('0x4')](_0x9dc0('0x52'),auth['isAuthenticated'](),controller['showWhatsappQueues']);router[_0x9dc0('0x3e')]('/agents/:id/notify',auth[_0x9dc0('0x9')](),controller['agentNotify']);module[_0x9dc0('0x53')]=router;
\ No newline at end of file
index cc93e30..2e4e98c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d6=['capacity','Telephones','Trunks','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','OpenchannelQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','FaxQueues','showFaxQueues','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','indexOf','SmsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','chat','Website','Account','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','\x20Message\x20not\x20found','queue','MessageId','InteractionId','From','QueueId','create','Start','*,*,*,*','agentNotify','channel','capitalize','User','Agent\x20not\x20found','TransferReport','agentTransferTimeout','bluebird','moment','lodash','util','../../config/logger','api','jayson/promise','client','http','error','code','message','status','json','sendStatus','stack','name','send','isNil','find','rows','voiceChannels','VoiceChannels','then','catch','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','query','params','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','Outbound','OutboundChannels','agents','Agents','agentCapacity','interaction','user','hasOwnProperty','MemberReport','findAll','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','findOrCreate','INTERACTION','interface','agent','internal'];(function(_0x254076,_0x5e7b8d){var _0x21a93e=function(_0x26aa78){while(--_0x26aa78){_0x254076['push'](_0x254076['shift']());}};_0x21a93e(++_0x5e7b8d);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x5ed528,_0x5b1571){_0x5ed528=_0x5ed528-0x0;var _0xd3fb8f=_0xd6d6[_0x5ed528];return _0xd3fb8f;};'use strict';var BPromise=require(_0x6d6d('0x0'));var moment=require(_0x6d6d('0x1'));var _=require(_0x6d6d('0x2'));var util=require(_0x6d6d('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0x6d6d('0x4'))(_0x6d6d('0x5'));var jayson=require(_0x6d6d('0x6'));var amiClient=jayson[_0x6d6d('0x7')][_0x6d6d('0x8')]({'port':0x232a});var mailClient=jayson[_0x6d6d('0x7')][_0x6d6d('0x8')]({'port':0x232b});var routingClient=jayson['client'][_0x6d6d('0x8')]({'port':0x232c});function respondWithRpcPromise(_0x1bf731,_0x44f83d,_0x18f824){return new BPromise(function(_0xd49f57,_0x408f88){var _0x3e69a4=_0x18f824?_0x18f824:amiClient;return _0x3e69a4['request'](_0x1bf731,_0x44f83d)['then'](function(_0x404c88){if(_0x404c88[_0x6d6d('0x9')]){if(_0x404c88[_0x6d6d('0x9')][_0x6d6d('0xa')]===0x1f4){return _0x408f88(_0x404c88[_0x6d6d('0x9')]['message']);}return _0xd49f57(_0x404c88[_0x6d6d('0x9')][_0x6d6d('0xb')]);}else{_0xd49f57(_0x404c88['result']);}})['catch'](function(_0x176618){_0x408f88(_0x176618);});});}function respondWithResult(_0x32146d,_0xe61c36){_0xe61c36=_0xe61c36||0xc8;return function(_0x3f8542){if(_0x3f8542){return _0x32146d[_0x6d6d('0xc')](_0xe61c36)[_0x6d6d('0xd')](_0x3f8542);}return _0x32146d[_0x6d6d('0xe')](0x194);};}function handleError(_0x2cb2dd,_0x5f4154){_0x5f4154=_0x5f4154||0x1f4;return function(_0xd09ea7){logger[_0x6d6d('0x9')](_0xd09ea7[_0x6d6d('0xf')]);if(_0xd09ea7[_0x6d6d('0x10')]){delete _0xd09ea7[_0x6d6d('0x10')];}_0x2cb2dd['status'](_0x5f4154)[_0x6d6d('0x11')](_0xd09ea7);};}function findById(_0x587338){return function(_0x27830d){if(!_[_0x6d6d('0x12')](_0x587338)&&!_[_0x6d6d('0x12')](_0x27830d)&&!_['isNil'](_0x27830d['rows'])){return _[_0x6d6d('0x13')](_0x27830d[_0x6d6d('0x14')],function(_0x2b59d4){return _0x2b59d4['id']==_0x587338;});}return null;};}exports[_0x6d6d('0x15')]=function(_0x51fff6,_0x554392){return respondWithRpcPromise(_0x6d6d('0x16'),_0x51fff6['query'])[_0x6d6d('0x17')](respondWithResult(_0x554392,null))[_0x6d6d('0x18')](handleError(_0x554392,null));};exports[_0x6d6d('0x19')]=function(_0x450352,_0x40d35b){return respondWithRpcPromise(_0x6d6d('0x1a'),_[_0x6d6d('0x1b')](_0x450352[_0x6d6d('0x1c')],_0x450352[_0x6d6d('0x1d')]))[_0x6d6d('0x17')](respondWithResult(_0x40d35b,null))[_0x6d6d('0x18')](handleError(_0x40d35b,null));};exports[_0x6d6d('0x1e')]=function(_0x466a29,_0x21b95d){return respondWithRpcPromise(_0x6d6d('0x1f'),_[_0x6d6d('0x1b')](_0x466a29[_0x6d6d('0x1c')],_0x466a29['params']))[_0x6d6d('0x17')](respondWithResult(_0x21b95d,null))[_0x6d6d('0x18')](handleError(_0x21b95d,null));};exports[_0x6d6d('0x20')]=function(_0x97ec9e,_0xf0df7f){return respondWithRpcPromise(_0x6d6d('0x21'),_0x97ec9e['query'])[_0x6d6d('0x17')](respondWithResult(_0xf0df7f,null))[_0x6d6d('0x18')](handleError(_0xf0df7f,null));};exports[_0x6d6d('0x22')]=function(_0x126ac8,_0x25c121){return respondWithRpcPromise(_0x6d6d('0x21'),_0x126ac8[_0x6d6d('0x1c')])['then'](findById(_0x126ac8[_0x6d6d('0x1d')]['id']))[_0x6d6d('0x17')](respondWithResult(_0x25c121,null))['catch'](handleError(_0x25c121,null));};exports['updateVoiceQueue']=function(_0x3edcce,_0x5273cd){return respondWithRpcPromise(_0x6d6d('0x23'),_['merge'](_0x3edcce[_0x6d6d('0x24')],_0x3edcce[_0x6d6d('0x1d')]))[_0x6d6d('0x17')](respondWithResult(_0x5273cd,null))[_0x6d6d('0x18')](handleError(_0x5273cd,null));};exports[_0x6d6d('0x25')]=function(_0x428c17,_0xdda3f2){return respondWithRpcPromise(_0x6d6d('0x26'),_[_0x6d6d('0x1b')](_0x428c17[_0x6d6d('0x1c')],_0x428c17['params']))[_0x6d6d('0x17')](respondWithResult(_0xdda3f2,null))['catch'](handleError(_0xdda3f2,null));};exports[_0x6d6d('0x27')]=function(_0x1ea9b2,_0xf527da){return respondWithRpcPromise(_0x6d6d('0x28'),_0x1ea9b2['query'])[_0x6d6d('0x17')](respondWithResult(_0xf527da,null))['catch'](handleError(_0xf527da,null));};exports[_0x6d6d('0x29')]=function(_0x219fd4,_0x5be8da){return respondWithRpcPromise(_0x6d6d('0x2a'),_[_0x6d6d('0x1b')](_0x219fd4[_0x6d6d('0x1c')],_0x219fd4[_0x6d6d('0x1d')]))[_0x6d6d('0x17')](respondWithResult(_0x5be8da,null))[_0x6d6d('0x18')](handleError(_0x5be8da,null));};exports[_0x6d6d('0x2b')]=function(_0x2d524d,_0x243555){return respondWithRpcPromise(_0x6d6d('0x2c'),_[_0x6d6d('0x1b')](_0x2d524d[_0x6d6d('0x1c')],_0x2d524d[_0x6d6d('0x1d')]))[_0x6d6d('0x17')](respondWithResult(_0x243555,null))['catch'](handleError(_0x243555,null));};exports[_0x6d6d('0x2d')]=function(_0xf98bfa,_0x3e2415){return respondWithRpcPromise(_0x6d6d('0x2e'),_['merge'](_0xf98bfa['query'],_0xf98bfa[_0x6d6d('0x1d')]))[_0x6d6d('0x17')](respondWithResult(_0x3e2415,null))[_0x6d6d('0x18')](handleError(_0x3e2415,null));};exports['outbound']=function(_0x2a3f67,_0x2607c1){return respondWithRpcPromise(_0x6d6d('0x2f'),_0x2a3f67[_0x6d6d('0x1c')])['then'](respondWithResult(_0x2607c1,null))['catch'](handleError(_0x2607c1,null));};exports['outboundChannels']=function(_0x62620d,_0x4196f0){return respondWithRpcPromise(_0x6d6d('0x30'),_0x62620d[_0x6d6d('0x1c')])['then'](respondWithResult(_0x4196f0,null))[_0x6d6d('0x18')](handleError(_0x4196f0,null));};exports[_0x6d6d('0x31')]=function(_0x344f6f,_0x3c6d23){var _0x3d632c;return respondWithRpcPromise(_0x6d6d('0x32'),_0x344f6f['query'])[_0x6d6d('0x17')](function(_0x3c7292){_0x3d632c=_0x3c7292;return respondWithRpcPromise(_0x6d6d('0x32'),_0x344f6f[_0x6d6d('0x1c')],routingClient);})[_0x6d6d('0x17')](function(_0x3e27b7){return _[_0x6d6d('0x1b')]({},_0x3e27b7,_0x3d632c);})['then'](respondWithResult(_0x3c6d23,null))[_0x6d6d('0x18')](handleError(_0x3c6d23,null));};exports[_0x6d6d('0x33')]=function(_0x16e177,_0x2107e0){if(_0x16e177[_0x6d6d('0x24')]&&_0x16e177['body'][_0x6d6d('0x34')]&&_0x16e177[_0x6d6d('0x35')]&&_0x16e177['user'][_0x6d6d('0x10')]){for(var _0x50dc17 in _0x16e177[_0x6d6d('0x24')][_0x6d6d('0x34')]){if(_0x16e177['body'][_0x6d6d('0x34')][_0x6d6d('0x36')](_0x50dc17)){db[_0x6d6d('0x37')][_0x6d6d('0x38')]({'where':{'channel':_0x50dc17,'membername':_0x16e177[_0x6d6d('0x35')]['name'],'type':'INTERACTION','exitAt':null,'uniqueid':_0x16e177[_0x6d6d('0x24')]['interaction'][_0x50dc17]&&_0x16e177['body'][_0x6d6d('0x34')][_0x50dc17][_0x6d6d('0x39')]?{'$notIn':_0x16e177[_0x6d6d('0x24')]['interaction'][_0x50dc17]}:{'$ne':null}}})[_0x6d6d('0x17')](function(_0x4cff80){var _0x1a2d4c=moment()[_0x6d6d('0x3a')](_0x6d6d('0x3b'));for(var _0x4606eb=0x0,_0x75f298=_0x4cff80[_0x6d6d('0x39')];_0x4606eb<_0x75f298;_0x4606eb+=0x1){_0x4cff80[_0x4606eb][_0x6d6d('0x3c')]({'exitAt':_0x1a2d4c});}});for(var _0x5c0495=0x0;_0x5c0495<_0x16e177[_0x6d6d('0x24')][_0x6d6d('0x34')][_0x50dc17][_0x6d6d('0x39')];_0x5c0495+=0x1){db[_0x6d6d('0x37')][_0x6d6d('0x3d')]({'where':{'channel':_0x50dc17,'membername':_0x16e177[_0x6d6d('0x35')][_0x6d6d('0x10')],'type':_0x6d6d('0x3e'),'uniqueid':_0x16e177[_0x6d6d('0x24')]['interaction'][_0x50dc17][_0x5c0495],'exitAt':null},'defaults':{'channel':_0x50dc17,'membername':_0x16e177['user'][_0x6d6d('0x10')],'interface':_[_0x6d6d('0x12')](_0x16e177[_0x6d6d('0x35')][_0x6d6d('0x3f')])?util[_0x6d6d('0x3a')]('SIP/%s',_0x16e177[_0x6d6d('0x35')][_0x6d6d('0x10')]):_0x16e177[_0x6d6d('0x35')][_0x6d6d('0x3f')],'type':_0x6d6d('0x3e'),'enterAt':moment()[_0x6d6d('0x3a')](_0x6d6d('0x3b')),'role':_0x6d6d('0x40'),'internal':_0x16e177[_0x6d6d('0x35')][_0x6d6d('0x41')],'uniqueid':_0x16e177[_0x6d6d('0x24')][_0x6d6d('0x34')][_0x50dc17][_0x5c0495]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0x16e177[_0x6d6d('0x1d')]['id'],'capacity':_0x16e177[_0x6d6d('0x24')][_0x6d6d('0x42')]},routingClient)[_0x6d6d('0x17')](respondWithResult(_0x2107e0,null))[_0x6d6d('0x18')](handleError(_0x2107e0,null));};exports['telephones']=function(_0x38c307,_0x36bc5a){return respondWithRpcPromise(_0x6d6d('0x43'),_0x38c307['query'])['then'](respondWithResult(_0x36bc5a,null))[_0x6d6d('0x18')](handleError(_0x36bc5a,null));};exports['trunks']=function(_0x3ea57e,_0x995fe2){return respondWithRpcPromise(_0x6d6d('0x44'),_0x3ea57e[_0x6d6d('0x1c')])[_0x6d6d('0x17')](respondWithResult(_0x995fe2,null))[_0x6d6d('0x18')](handleError(_0x995fe2,null));};exports[_0x6d6d('0x45')]=function(_0x26c23a,_0x1a8f33){return respondWithRpcPromise(_0x6d6d('0x46'),_0x26c23a['query'])[_0x6d6d('0x17')](respondWithResult(_0x1a8f33,null))[_0x6d6d('0x18')](handleError(_0x1a8f33,null));};exports[_0x6d6d('0x47')]=function(_0x8000b6,_0x1f98d4){return respondWithRpcPromise(_0x6d6d('0x48'),_0x8000b6[_0x6d6d('0x1c')],routingClient)['then'](respondWithResult(_0x1f98d4,null))['catch'](handleError(_0x1f98d4,null));};exports[_0x6d6d('0x49')]=function(_0x122865,_0x5cc644){return respondWithRpcPromise(_0x6d6d('0x48'),_0x122865[_0x6d6d('0x1c')],routingClient)[_0x6d6d('0x17')](findById(_0x122865[_0x6d6d('0x1d')]['id']))[_0x6d6d('0x17')](respondWithResult(_0x5cc644,null))[_0x6d6d('0x18')](handleError(_0x5cc644,null));};exports[_0x6d6d('0x4a')]=function(_0x1ef7fb,_0x2abd8c){return respondWithRpcPromise(_0x6d6d('0x4b'),_0x1ef7fb[_0x6d6d('0x1c')],routingClient)[_0x6d6d('0x17')](respondWithResult(_0x2abd8c,null))[_0x6d6d('0x18')](handleError(_0x2abd8c,null));};exports[_0x6d6d('0x4c')]=function(_0x3065ea,_0x50d8dd){return respondWithRpcPromise(_0x6d6d('0x4b'),_0x3065ea[_0x6d6d('0x1c')],routingClient)['then'](findById(_0x3065ea[_0x6d6d('0x1d')]['id']))[_0x6d6d('0x17')](respondWithResult(_0x50d8dd,null))[_0x6d6d('0x18')](handleError(_0x50d8dd,null));};exports[_0x6d6d('0x4d')]=function(_0x2d61cc,_0xd0a573){return respondWithRpcPromise(_0x6d6d('0x4e'),_0x2d61cc[_0x6d6d('0x1c')],mailClient)[_0x6d6d('0x17')](respondWithResult(_0xd0a573,null))['catch'](handleError(_0xd0a573,null));};exports['openchannelQueues']=function(_0x22c3a1,_0x325fe2){return respondWithRpcPromise(_0x6d6d('0x4f'),_0x22c3a1['query'],routingClient)['then'](respondWithResult(_0x325fe2,null))[_0x6d6d('0x18')](handleError(_0x325fe2,null));};exports['showOpenchannelQueues']=function(_0x30badc,_0x5b6f58){return respondWithRpcPromise(_0x6d6d('0x4f'),_0x30badc[_0x6d6d('0x1c')],routingClient)[_0x6d6d('0x17')](findById(_0x30badc[_0x6d6d('0x1d')]['id']))[_0x6d6d('0x17')](respondWithResult(_0x5b6f58,null))[_0x6d6d('0x18')](handleError(_0x5b6f58,null));};exports['smsQueues']=function(_0x41e576,_0x5eb78f){return respondWithRpcPromise(_0x6d6d('0x50'),_0x41e576['query'],routingClient)[_0x6d6d('0x17')](respondWithResult(_0x5eb78f,null))[_0x6d6d('0x18')](handleError(_0x5eb78f,null));};exports[_0x6d6d('0x51')]=function(_0xa71db1,_0x29b68b){return respondWithRpcPromise(_0x6d6d('0x50'),_0xa71db1[_0x6d6d('0x1c')],routingClient)['then'](findById(_0xa71db1['params']['id']))[_0x6d6d('0x17')](respondWithResult(_0x29b68b,null))['catch'](handleError(_0x29b68b,null));};exports[_0x6d6d('0x52')]=function(_0x53b77a,_0xe19d23){return respondWithRpcPromise(_0x6d6d('0x53'),_0x53b77a[_0x6d6d('0x1c')],routingClient)[_0x6d6d('0x17')](respondWithResult(_0xe19d23,null))[_0x6d6d('0x18')](handleError(_0xe19d23,null));};exports[_0x6d6d('0x54')]=function(_0x5dd3b0,_0x3cedc0){return respondWithRpcPromise(_0x6d6d('0x53'),_0x5dd3b0[_0x6d6d('0x1c')],routingClient)[_0x6d6d('0x17')](findById(_0x5dd3b0[_0x6d6d('0x1d')]['id']))[_0x6d6d('0x17')](respondWithResult(_0x3cedc0,null))[_0x6d6d('0x18')](handleError(_0x3cedc0,null));};exports['faxQueues']=function(_0x3fa820,_0x4ec43e){return respondWithRpcPromise(_0x6d6d('0x55'),_0x3fa820[_0x6d6d('0x1c')],routingClient)[_0x6d6d('0x17')](respondWithResult(_0x4ec43e,null))[_0x6d6d('0x18')](handleError(_0x4ec43e,null));};exports[_0x6d6d('0x56')]=function(_0x1d1d1d,_0x56feda){return respondWithRpcPromise(_0x6d6d('0x55'),_0x1d1d1d[_0x6d6d('0x1c')],routingClient)['then'](findById(_0x1d1d1d['params']['id']))[_0x6d6d('0x17')](respondWithResult(_0x56feda,null))['catch'](handleError(_0x56feda,null));};exports['faxAccounts']=function(_0x5b6ca7,_0x1e3b17){return respondWithRpcPromise(_0x6d6d('0x57'),_0x5b6ca7[_0x6d6d('0x1c')])[_0x6d6d('0x17')](respondWithResult(_0x1e3b17,null))[_0x6d6d('0x18')](handleError(_0x1e3b17,null));};exports[_0x6d6d('0x58')]=function(_0x4d4083,_0x48472d){return respondWithRpcPromise(_0x6d6d('0x59'),_0x4d4083['query'],routingClient)['then'](respondWithResult(_0x48472d,null))['catch'](handleError(_0x48472d,null));};exports[_0x6d6d('0x5a')]=function(_0x5cd494,_0x45a374){return respondWithRpcPromise('MailQueuesWaitingInteractions',_0x5cd494[_0x6d6d('0x1c')],routingClient)[_0x6d6d('0x17')](respondWithResult(_0x45a374,null))['catch'](handleError(_0x45a374,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x167d0c,_0x202bf6){return respondWithRpcPromise(_0x6d6d('0x5b'),_0x167d0c[_0x6d6d('0x1c')],routingClient)['then'](respondWithResult(_0x202bf6,null))[_0x6d6d('0x18')](handleError(_0x202bf6,null));};exports[_0x6d6d('0x5c')]=function(_0x1fb21d,_0x2b53eb){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x1fb21d[_0x6d6d('0x1c')],routingClient)['then'](function(_0x4b6594){if(_0x1fb21d['query'][_0x6d6d('0x5d')]!==undefined){var _0x5bcfbd=_(_0x4b6594[_0x6d6d('0x14')])[_0x6d6d('0x5e')]([_0x1fb21d[_0x6d6d('0x1c')]['type'],_0x1fb21d['params']['id']])[_0x6d6d('0x5f')](_0x6d6d('0x60'))['uniq']()['value']();return _0x4b6594[_0x6d6d('0x14')][_0x6d6d('0x5e')](function(_0x14feba){return _0x5bcfbd[_0x6d6d('0x61')](_0x14feba[_0x6d6d('0x60')])>-0x1;});}else{return _0x4b6594[_0x6d6d('0x14')][_0x6d6d('0x5e')](function(_0x52f758){return _0x52f758['queue_id']===parseInt(_0x1fb21d['params']['id']);});}})['then'](respondWithResult(_0x2b53eb,null))['catch'](handleError(_0x2b53eb,null));};exports['smsQueuesWaitingInteractions']=function(_0x87dd34,_0x21e5a8){return respondWithRpcPromise(_0x6d6d('0x62'),_0x87dd34[_0x6d6d('0x1c')],routingClient)['then'](respondWithResult(_0x21e5a8,null))['catch'](handleError(_0x21e5a8,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x39b34e,_0xfbad7a){return respondWithRpcPromise(_0x6d6d('0x63'),_0x39b34e[_0x6d6d('0x1c')],routingClient)['then'](respondWithResult(_0xfbad7a,null))['catch'](handleError(_0xfbad7a,null));};exports[_0x6d6d('0x64')]=function(_0x1e1c4e,_0x478ed4){return respondWithRpcPromise(_0x6d6d('0x65'),_0x1e1c4e[_0x6d6d('0x1c')],routingClient)[_0x6d6d('0x17')](respondWithResult(_0x478ed4,null))[_0x6d6d('0x18')](handleError(_0x478ed4,null));};exports[_0x6d6d('0x66')]=function(_0x581027){return function(_0xf5586f,_0x50eea6){var _0x39f986,_0x5885c5;var _0x108108=_['capitalize'](_0x581027);var _0x445196=_0x581027===_0x6d6d('0x67')?_0x6d6d('0x68'):_0x6d6d('0x69');return db[_0x108108+_0x6d6d('0x6a')][_0x6d6d('0x6b')]({'raw':!![],'where':{'id':_0xf5586f[_0x6d6d('0x1d')]['id']}})[_0x6d6d('0x17')](function(_0x139a7){if(_[_0x6d6d('0x12')](_0x139a7)){throw new Error(_0x108108+_0x6d6d('0x6c'));}_0x39f986=_0x139a7;return db[_0x108108+_0x6d6d('0x6d')][_0x6d6d('0x6b')]({'where':{'id':_0xf5586f[_0x6d6d('0x24')][_0x6d6d('0x6e')]},'include':[{'model':db[_0x108108+_0x6d6d('0x6f')],'as':'Interaction'},{'model':db[_0x108108+_0x445196],'as':'Account'}]});})[_0x6d6d('0x17')](function(_0x5a7b23){if(_[_0x6d6d('0x12')](_0x5a7b23)){throw new Error(_0x108108+_0x6d6d('0x70'));}_0x5885c5=_0x5a7b23;return _0x5a7b23['update']({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x1d2668={'uniqueid':_0x581027+'.'+_0x5885c5['id']+'.'+_0x5885c5['Interaction']['id'],'FromUserId':_0xf5586f[_0x6d6d('0x35')]['id'],'type':_0x6d6d('0x71')};_0x1d2668[_0x108108+_0x6d6d('0x72')]=_0x5885c5['id'];_0x1d2668[_0x108108+_0x6d6d('0x73')]=_0x5885c5[_0x6d6d('0x6f')]['id'];_0x1d2668[_0x6d6d('0x74')+_0x108108+_0x445196+'Id']=_0x5885c5[_0x6d6d('0x69')]['id'];_0x1d2668['To'+_0x108108+_0x6d6d('0x75')]=_0x39f986['id'];return db[_0x108108+'TransferReport'][_0x6d6d('0x76')](_0x1d2668);})[_0x6d6d('0x17')](function(){return respondWithRpcPromise(_0x6d6d('0x77'),{'channel':_0x581027,'interaction':_0x5885c5['Interaction'],'message':_0x5885c5,'account':_0x5885c5['Account'],'applications':[{'id':0x0,'priority':0x1,'app':_0x6d6d('0x71'),'appdata':_0x39f986[_0x6d6d('0x10')]+','+(_0x5885c5[_0x6d6d('0x69')]['queueTransferTimeout']||0x12c),'interval':_0x6d6d('0x78')}]},routingClient);})[_0x6d6d('0x17')](respondWithResult(_0x50eea6,null))['catch'](handleError(_0x50eea6,null));};};exports[_0x6d6d('0x79')]=function(_0x721d98,_0xa8ec98){var _0x155edb,_0x21057d;if(_['isNil'](_0x721d98[_0x6d6d('0x24')][_0x6d6d('0x7a')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x56825d=_0x721d98[_0x6d6d('0x24')][_0x6d6d('0x7a')];var _0xe80727=_[_0x6d6d('0x7b')](_0x56825d);var _0x5a8974=_0x56825d===_0x6d6d('0x67')?'Website':_0x6d6d('0x69');return db[_0x6d6d('0x7c')][_0x6d6d('0x6b')]({'raw':!![],'where':{'id':_0x721d98[_0x6d6d('0x1d')]['id'],'role':_0x6d6d('0x40')}})[_0x6d6d('0x17')](function(_0x39c1a5){if(_[_0x6d6d('0x12')](_0x39c1a5)){throw new Error(_0x6d6d('0x7d'));}_0x155edb=_0x39c1a5;return db[_0xe80727+_0x6d6d('0x6d')][_0x6d6d('0x6b')]({'where':{'id':_0x721d98[_0x6d6d('0x24')][_0x6d6d('0x6e')]},'include':[{'model':db[_0xe80727+_0x6d6d('0x6f')],'as':_0x6d6d('0x6f')},{'model':db[_0xe80727+_0x5a8974],'as':_0x6d6d('0x69')}]});})[_0x6d6d('0x17')](function(_0xccbc07){if(_[_0x6d6d('0x12')](_0xccbc07)){throw new Error(_0xe80727+_0x6d6d('0x70'));}_0x21057d=_0xccbc07;return _0xccbc07['update']({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x3445f5={'uniqueid':_0x56825d+'.'+_0x21057d['id']+'.'+_0x21057d[_0x6d6d('0x6f')]['id'],'FromUserId':_0x721d98[_0x6d6d('0x35')]['id'],'type':_0x6d6d('0x71'),'ToUserId':_0x155edb['id']};_0x3445f5[_0xe80727+_0x6d6d('0x72')]=_0x21057d['id'];_0x3445f5[_0xe80727+_0x6d6d('0x73')]=_0x21057d[_0x6d6d('0x6f')]['id'];_0x3445f5[_0x6d6d('0x74')+_0xe80727+_0x5a8974+'Id']=_0x21057d[_0x6d6d('0x69')]['id'];return db[_0xe80727+_0x6d6d('0x7e')][_0x6d6d('0x76')](_0x3445f5);})[_0x6d6d('0x17')](function(){return respondWithRpcPromise(_0x6d6d('0x77'),{'channel':_0x56825d,'interaction':_0x21057d[_0x6d6d('0x6f')],'message':_0x21057d,'account':_0x21057d[_0x6d6d('0x69')],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x155edb[_0x6d6d('0x10')]+','+(_0x21057d[_0x6d6d('0x69')][_0x6d6d('0x7f')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})['then'](respondWithResult(_0xa8ec98,null))['catch'](handleError(_0xa8ec98,null));};
\ No newline at end of file
+var _0xa630=['user','interaction','hasOwnProperty','MemberReport','findAll','INTERACTION','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','findOrCreate','agent','AgentCapacity','capacity','telephones','Telephones','trunks','Trunks','campaigns','Campaigns','ChatQueues','MailQueues','showMailQueues','openchannelQueues','OpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','map','queue_id','uniq','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','queueNotify','capitalize','Website','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','\x20Message\x20not\x20found','queue','MessageId','InteractionId','From','Account','QueueId','TransferReport','create','Start','queueTransferTimeout','*,*,*,*','channel','Channel\x20field\x20is\x20mandatory','update','agentTransferTimeout','bluebird','moment','../../mysqldb','api','client','http','then','error','code','message','result','json','stack','name','status','isNil','rows','find','voiceChannels','VoiceChannels','catch','VoiceChannelMixMonitor','merge','query','params','VoiceChannelStopMixMonitor','showVoiceQueues','VoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','voiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','outboundChannels','OutboundChannels','agents','agentCapacity'];(function(_0x1de2bd,_0x953fb){var _0x595960=function(_0xea260b){while(--_0xea260b){_0x1de2bd['push'](_0x1de2bd['shift']());}};_0x595960(++_0x953fb);}(_0xa630,0xbe));var _0x0a63=function(_0x5991c7,_0x51e074){_0x5991c7=_0x5991c7-0x0;var _0x1cd4eb=_0xa630[_0x5991c7];return _0x1cd4eb;};'use strict';var BPromise=require(_0x0a63('0x0'));var moment=require(_0x0a63('0x1'));var _=require('lodash');var util=require('util');var db=require(_0x0a63('0x2'))['db'];var logger=require('../../config/logger')(_0x0a63('0x3'));var jayson=require('jayson/promise');var amiClient=jayson[_0x0a63('0x4')][_0x0a63('0x5')]({'port':0x232a});var mailClient=jayson[_0x0a63('0x4')][_0x0a63('0x5')]({'port':0x232b});var routingClient=jayson[_0x0a63('0x4')]['http']({'port':0x232c});function respondWithRpcPromise(_0x2760b0,_0x3d5f0b,_0xc2dcd7){return new BPromise(function(_0x41d21d,_0x12a7df){var _0x2a1bd7=_0xc2dcd7?_0xc2dcd7:amiClient;return _0x2a1bd7['request'](_0x2760b0,_0x3d5f0b)[_0x0a63('0x6')](function(_0xb714c7){if(_0xb714c7[_0x0a63('0x7')]){if(_0xb714c7[_0x0a63('0x7')][_0x0a63('0x8')]===0x1f4){return _0x12a7df(_0xb714c7[_0x0a63('0x7')][_0x0a63('0x9')]);}return _0x41d21d(_0xb714c7[_0x0a63('0x7')][_0x0a63('0x9')]);}else{_0x41d21d(_0xb714c7[_0x0a63('0xa')]);}})['catch'](function(_0x345f56){_0x12a7df(_0x345f56);});});}function respondWithResult(_0x420043,_0x2fce86){_0x2fce86=_0x2fce86||0xc8;return function(_0x3d6323){if(_0x3d6323){return _0x420043['status'](_0x2fce86)[_0x0a63('0xb')](_0x3d6323);}return _0x420043['sendStatus'](0x194);};}function handleError(_0x331e99,_0x19e922){_0x19e922=_0x19e922||0x1f4;return function(_0x26b2bc){logger[_0x0a63('0x7')](_0x26b2bc[_0x0a63('0xc')]);if(_0x26b2bc[_0x0a63('0xd')]){delete _0x26b2bc[_0x0a63('0xd')];}_0x331e99[_0x0a63('0xe')](_0x19e922)['send'](_0x26b2bc);};}function findById(_0x47788e){return function(_0x56b314){if(!_[_0x0a63('0xf')](_0x47788e)&&!_[_0x0a63('0xf')](_0x56b314)&&!_[_0x0a63('0xf')](_0x56b314[_0x0a63('0x10')])){return _[_0x0a63('0x11')](_0x56b314[_0x0a63('0x10')],function(_0x30f292){return _0x30f292['id']==_0x47788e;});}return null;};}exports[_0x0a63('0x12')]=function(_0x2fd06c,_0x3cc74d){return respondWithRpcPromise(_0x0a63('0x13'),_0x2fd06c['query'])['then'](respondWithResult(_0x3cc74d,null))[_0x0a63('0x14')](handleError(_0x3cc74d,null));};exports['voiceChannelMixMonitor']=function(_0x2fc87c,_0x5937df){return respondWithRpcPromise(_0x0a63('0x15'),_[_0x0a63('0x16')](_0x2fc87c[_0x0a63('0x17')],_0x2fc87c[_0x0a63('0x18')]))['then'](respondWithResult(_0x5937df,null))[_0x0a63('0x14')](handleError(_0x5937df,null));};exports['voiceChannelStopMixMonitor']=function(_0x3a7f9d,_0x11fe64){return respondWithRpcPromise(_0x0a63('0x19'),_[_0x0a63('0x16')](_0x3a7f9d[_0x0a63('0x17')],_0x3a7f9d[_0x0a63('0x18')]))[_0x0a63('0x6')](respondWithResult(_0x11fe64,null))[_0x0a63('0x14')](handleError(_0x11fe64,null));};exports['voiceQueues']=function(_0x5e5987,_0x55fb70){return respondWithRpcPromise('VoiceQueues',_0x5e5987[_0x0a63('0x17')])['then'](respondWithResult(_0x55fb70,null))['catch'](handleError(_0x55fb70,null));};exports[_0x0a63('0x1a')]=function(_0x1d5448,_0x362d6a){return respondWithRpcPromise(_0x0a63('0x1b'),_0x1d5448['query'])[_0x0a63('0x6')](findById(_0x1d5448[_0x0a63('0x18')]['id']))[_0x0a63('0x6')](respondWithResult(_0x362d6a,null))['catch'](handleError(_0x362d6a,null));};exports[_0x0a63('0x1c')]=function(_0xcf409,_0x1b7bdb){return respondWithRpcPromise(_0x0a63('0x1d'),_[_0x0a63('0x16')](_0xcf409[_0x0a63('0x1e')],_0xcf409[_0x0a63('0x18')]))[_0x0a63('0x6')](respondWithResult(_0x1b7bdb,null))['catch'](handleError(_0x1b7bdb,null));};exports[_0x0a63('0x1f')]=function(_0x574c06,_0x151cb6){return respondWithRpcPromise(_0x0a63('0x20'),_[_0x0a63('0x16')](_0x574c06[_0x0a63('0x17')],_0x574c06[_0x0a63('0x18')]))['then'](respondWithResult(_0x151cb6,null))[_0x0a63('0x14')](handleError(_0x151cb6,null));};exports[_0x0a63('0x21')]=function(_0x33a717,_0x46fb40){return respondWithRpcPromise('VoiceQueuesChannels',_0x33a717[_0x0a63('0x17')])[_0x0a63('0x6')](respondWithResult(_0x46fb40,null))['catch'](handleError(_0x46fb40,null));};exports['voiceQueuesChannel']=function(_0x34a170,_0x51d959){return respondWithRpcPromise('VoiceQueuesChannel',_[_0x0a63('0x16')](_0x34a170[_0x0a63('0x17')],_0x34a170['params']))[_0x0a63('0x6')](respondWithResult(_0x51d959,null))[_0x0a63('0x14')](handleError(_0x51d959,null));};exports[_0x0a63('0x22')]=function(_0x333130,_0x395cce){return respondWithRpcPromise('VoiceQueuesChannelHangup',_['merge'](_0x333130[_0x0a63('0x17')],_0x333130[_0x0a63('0x18')]))[_0x0a63('0x6')](respondWithResult(_0x395cce,null))[_0x0a63('0x14')](handleError(_0x395cce,null));};exports[_0x0a63('0x23')]=function(_0x273bcf,_0x59912d){return respondWithRpcPromise(_0x0a63('0x24'),_[_0x0a63('0x16')](_0x273bcf['query'],_0x273bcf[_0x0a63('0x18')]))['then'](respondWithResult(_0x59912d,null))['catch'](handleError(_0x59912d,null));};exports[_0x0a63('0x25')]=function(_0x232388,_0xdc602c){return respondWithRpcPromise('Outbound',_0x232388[_0x0a63('0x17')])[_0x0a63('0x6')](respondWithResult(_0xdc602c,null))[_0x0a63('0x14')](handleError(_0xdc602c,null));};exports[_0x0a63('0x26')]=function(_0x3f88a1,_0x876bc6){return respondWithRpcPromise(_0x0a63('0x27'),_0x3f88a1['query'])[_0x0a63('0x6')](respondWithResult(_0x876bc6,null))[_0x0a63('0x14')](handleError(_0x876bc6,null));};exports[_0x0a63('0x28')]=function(_0x53d034,_0x5d9952){var _0x28f904;return respondWithRpcPromise('Agents',_0x53d034[_0x0a63('0x17')])[_0x0a63('0x6')](function(_0x128e9e){_0x28f904=_0x128e9e;return respondWithRpcPromise('Agents',_0x53d034[_0x0a63('0x17')],routingClient);})[_0x0a63('0x6')](function(_0x46b6ee){return _[_0x0a63('0x16')]({},_0x46b6ee,_0x28f904);})['then'](respondWithResult(_0x5d9952,null))[_0x0a63('0x14')](handleError(_0x5d9952,null));};exports[_0x0a63('0x29')]=function(_0x4234cd,_0x2ccd99){if(_0x4234cd[_0x0a63('0x1e')]&&_0x4234cd[_0x0a63('0x1e')]['interaction']&&_0x4234cd[_0x0a63('0x2a')]&&_0x4234cd[_0x0a63('0x2a')][_0x0a63('0xd')]){for(var _0x793502 in _0x4234cd[_0x0a63('0x1e')][_0x0a63('0x2b')]){if(_0x4234cd[_0x0a63('0x1e')][_0x0a63('0x2b')][_0x0a63('0x2c')](_0x793502)){db[_0x0a63('0x2d')][_0x0a63('0x2e')]({'where':{'channel':_0x793502,'membername':_0x4234cd[_0x0a63('0x2a')][_0x0a63('0xd')],'type':_0x0a63('0x2f'),'exitAt':null,'uniqueid':_0x4234cd[_0x0a63('0x1e')][_0x0a63('0x2b')][_0x793502]&&_0x4234cd[_0x0a63('0x1e')][_0x0a63('0x2b')][_0x793502]['length']?{'$notIn':_0x4234cd[_0x0a63('0x1e')]['interaction'][_0x793502]}:{'$ne':null}}})['then'](function(_0xd9eddc){var _0x223ecf=moment()[_0x0a63('0x30')](_0x0a63('0x31'));for(var _0xd9149d=0x0,_0x9c89ed=_0xd9eddc[_0x0a63('0x32')];_0xd9149d<_0x9c89ed;_0xd9149d+=0x1){_0xd9eddc[_0xd9149d][_0x0a63('0x33')]({'exitAt':_0x223ecf});}});for(var _0x3d0667=0x0;_0x3d0667<_0x4234cd[_0x0a63('0x1e')][_0x0a63('0x2b')][_0x793502][_0x0a63('0x32')];_0x3d0667+=0x1){db[_0x0a63('0x2d')][_0x0a63('0x34')]({'where':{'channel':_0x793502,'membername':_0x4234cd[_0x0a63('0x2a')][_0x0a63('0xd')],'type':_0x0a63('0x2f'),'uniqueid':_0x4234cd[_0x0a63('0x1e')][_0x0a63('0x2b')][_0x793502][_0x3d0667],'exitAt':null},'defaults':{'channel':_0x793502,'membername':_0x4234cd[_0x0a63('0x2a')]['name'],'interface':_[_0x0a63('0xf')](_0x4234cd[_0x0a63('0x2a')]['interface'])?util['format']('SIP/%s',_0x4234cd['user'][_0x0a63('0xd')]):_0x4234cd[_0x0a63('0x2a')]['interface'],'type':_0x0a63('0x2f'),'enterAt':moment()['format'](_0x0a63('0x31')),'role':_0x0a63('0x35'),'internal':_0x4234cd['user']['internal'],'uniqueid':_0x4234cd['body'][_0x0a63('0x2b')][_0x793502][_0x3d0667]}});}}}}return respondWithRpcPromise(_0x0a63('0x36'),{'id':_0x4234cd[_0x0a63('0x18')]['id'],'capacity':_0x4234cd[_0x0a63('0x1e')][_0x0a63('0x37')]},routingClient)['then'](respondWithResult(_0x2ccd99,null))[_0x0a63('0x14')](handleError(_0x2ccd99,null));};exports[_0x0a63('0x38')]=function(_0x22b3ea,_0x10adf1){return respondWithRpcPromise(_0x0a63('0x39'),_0x22b3ea['query'])[_0x0a63('0x6')](respondWithResult(_0x10adf1,null))[_0x0a63('0x14')](handleError(_0x10adf1,null));};exports[_0x0a63('0x3a')]=function(_0x1fbd2b,_0x4f3414){return respondWithRpcPromise(_0x0a63('0x3b'),_0x1fbd2b[_0x0a63('0x17')])[_0x0a63('0x6')](respondWithResult(_0x4f3414,null))[_0x0a63('0x14')](handleError(_0x4f3414,null));};exports[_0x0a63('0x3c')]=function(_0x258ed3,_0x4d4e20){return respondWithRpcPromise(_0x0a63('0x3d'),_0x258ed3[_0x0a63('0x17')])[_0x0a63('0x6')](respondWithResult(_0x4d4e20,null))[_0x0a63('0x14')](handleError(_0x4d4e20,null));};exports['chatQueues']=function(_0x4c1e34,_0x2ac98b){return respondWithRpcPromise(_0x0a63('0x3e'),_0x4c1e34[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](respondWithResult(_0x2ac98b,null))[_0x0a63('0x14')](handleError(_0x2ac98b,null));};exports['showChatQueues']=function(_0x5e6aae,_0x58b3a8){return respondWithRpcPromise(_0x0a63('0x3e'),_0x5e6aae['query'],routingClient)[_0x0a63('0x6')](findById(_0x5e6aae[_0x0a63('0x18')]['id']))[_0x0a63('0x6')](respondWithResult(_0x58b3a8,null))['catch'](handleError(_0x58b3a8,null));};exports['mailQueues']=function(_0x2d63c6,_0x226279){return respondWithRpcPromise(_0x0a63('0x3f'),_0x2d63c6[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](respondWithResult(_0x226279,null))[_0x0a63('0x14')](handleError(_0x226279,null));};exports[_0x0a63('0x40')]=function(_0xc3415c,_0xe454ef){return respondWithRpcPromise(_0x0a63('0x3f'),_0xc3415c[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](findById(_0xc3415c[_0x0a63('0x18')]['id']))[_0x0a63('0x6')](respondWithResult(_0xe454ef,null))['catch'](handleError(_0xe454ef,null));};exports['mailAccounts']=function(_0x1adea6,_0x24c9e0){return respondWithRpcPromise('MailAccounts',_0x1adea6[_0x0a63('0x17')],mailClient)[_0x0a63('0x6')](respondWithResult(_0x24c9e0,null))['catch'](handleError(_0x24c9e0,null));};exports[_0x0a63('0x41')]=function(_0x3053e4,_0x5e5495){return respondWithRpcPromise('OpenchannelQueues',_0x3053e4[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](respondWithResult(_0x5e5495,null))[_0x0a63('0x14')](handleError(_0x5e5495,null));};exports['showOpenchannelQueues']=function(_0x116e05,_0x375acd){return respondWithRpcPromise(_0x0a63('0x42'),_0x116e05[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](findById(_0x116e05['params']['id']))[_0x0a63('0x6')](respondWithResult(_0x375acd,null))[_0x0a63('0x14')](handleError(_0x375acd,null));};exports[_0x0a63('0x43')]=function(_0x1fa9cd,_0x295c06){return respondWithRpcPromise(_0x0a63('0x44'),_0x1fa9cd[_0x0a63('0x17')],routingClient)['then'](respondWithResult(_0x295c06,null))[_0x0a63('0x14')](handleError(_0x295c06,null));};exports[_0x0a63('0x45')]=function(_0x252f70,_0x1155f1){return respondWithRpcPromise(_0x0a63('0x44'),_0x252f70[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](findById(_0x252f70[_0x0a63('0x18')]['id']))['then'](respondWithResult(_0x1155f1,null))['catch'](handleError(_0x1155f1,null));};exports[_0x0a63('0x46')]=function(_0x30e5f0,_0x4137bc){return respondWithRpcPromise(_0x0a63('0x47'),_0x30e5f0[_0x0a63('0x17')],routingClient)['then'](respondWithResult(_0x4137bc,null))[_0x0a63('0x14')](handleError(_0x4137bc,null));};exports[_0x0a63('0x48')]=function(_0x1aefc4,_0x2a2f1b){return respondWithRpcPromise(_0x0a63('0x47'),_0x1aefc4[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](findById(_0x1aefc4[_0x0a63('0x18')]['id']))[_0x0a63('0x6')](respondWithResult(_0x2a2f1b,null))[_0x0a63('0x14')](handleError(_0x2a2f1b,null));};exports[_0x0a63('0x49')]=function(_0x485969,_0x25276f){return respondWithRpcPromise('FaxQueues',_0x485969[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](respondWithResult(_0x25276f,null))['catch'](handleError(_0x25276f,null));};exports['showFaxQueues']=function(_0x480acb,_0x31481f){return respondWithRpcPromise(_0x0a63('0x4a'),_0x480acb[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](findById(_0x480acb[_0x0a63('0x18')]['id']))[_0x0a63('0x6')](respondWithResult(_0x31481f,null))['catch'](handleError(_0x31481f,null));};exports['faxAccounts']=function(_0x5cb325,_0x1213a5){return respondWithRpcPromise(_0x0a63('0x4b'),_0x5cb325[_0x0a63('0x17')])[_0x0a63('0x6')](respondWithResult(_0x1213a5,null))['catch'](handleError(_0x1213a5,null));};exports[_0x0a63('0x4c')]=function(_0x5ed2db,_0x5de3de){return respondWithRpcPromise(_0x0a63('0x4d'),_0x5ed2db['query'],routingClient)[_0x0a63('0x6')](respondWithResult(_0x5de3de,null))[_0x0a63('0x14')](handleError(_0x5de3de,null));};exports['mailQueuesWaitingInteractions']=function(_0x267583,_0x4d1e35){return respondWithRpcPromise(_0x0a63('0x4e'),_0x267583['query'],routingClient)[_0x0a63('0x6')](respondWithResult(_0x4d1e35,null))[_0x0a63('0x14')](handleError(_0x4d1e35,null));};exports[_0x0a63('0x4f')]=function(_0x4fba49,_0x3b8442){return respondWithRpcPromise(_0x0a63('0x50'),_0x4fba49[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](respondWithResult(_0x3b8442,null))[_0x0a63('0x14')](handleError(_0x3b8442,null));};exports['openchannelQueuesIdWaitingInteractions']=function(_0x55174c,_0x550dbb){return respondWithRpcPromise(_0x0a63('0x50'),_0x55174c['query'],routingClient)[_0x0a63('0x6')](function(_0xa27da4){if(_0x55174c[_0x0a63('0x17')][_0x0a63('0x51')]!==undefined){var _0x5540c6=_(_0xa27da4[_0x0a63('0x10')])[_0x0a63('0x52')]([_0x55174c['query'][_0x0a63('0x51')],_0x55174c[_0x0a63('0x18')]['id']])[_0x0a63('0x53')](_0x0a63('0x54'))[_0x0a63('0x55')]()['value']();return _0xa27da4[_0x0a63('0x10')][_0x0a63('0x52')](function(_0x3941f6){return _0x5540c6['indexOf'](_0x3941f6['queue_id'])>-0x1;});}else{return _0xa27da4['rows'][_0x0a63('0x52')](function(_0x3b94ae){return _0x3b94ae[_0x0a63('0x54')]===parseInt(_0x55174c[_0x0a63('0x18')]['id']);});}})[_0x0a63('0x6')](respondWithResult(_0x550dbb,null))[_0x0a63('0x14')](handleError(_0x550dbb,null));};exports[_0x0a63('0x56')]=function(_0x37255d,_0x1dc593){return respondWithRpcPromise(_0x0a63('0x57'),_0x37255d['query'],routingClient)[_0x0a63('0x6')](respondWithResult(_0x1dc593,null))[_0x0a63('0x14')](handleError(_0x1dc593,null));};exports[_0x0a63('0x58')]=function(_0x229954,_0x3d62ca){return respondWithRpcPromise(_0x0a63('0x59'),_0x229954['query'],routingClient)['then'](respondWithResult(_0x3d62ca,null))[_0x0a63('0x14')](handleError(_0x3d62ca,null));};exports[_0x0a63('0x5a')]=function(_0x425c8c,_0x3caea6){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x425c8c[_0x0a63('0x17')],routingClient)['then'](respondWithResult(_0x3caea6,null))[_0x0a63('0x14')](handleError(_0x3caea6,null));};exports[_0x0a63('0x5b')]=function(_0x1e256e){return function(_0xee586,_0x486ffc){var _0x3710fa,_0x2173ee;var _0x430065=_[_0x0a63('0x5c')](_0x1e256e);var _0x540953=_0x1e256e==='chat'?_0x0a63('0x5d'):'Account';return db[_0x430065+_0x0a63('0x5e')][_0x0a63('0x5f')]({'raw':!![],'where':{'id':_0xee586[_0x0a63('0x18')]['id']}})[_0x0a63('0x6')](function(_0x65a390){if(_['isNil'](_0x65a390)){throw new Error(_0x430065+_0x0a63('0x60'));}_0x3710fa=_0x65a390;return db[_0x430065+_0x0a63('0x61')][_0x0a63('0x5f')]({'where':{'id':_0xee586[_0x0a63('0x1e')][_0x0a63('0x62')]},'include':[{'model':db[_0x430065+_0x0a63('0x63')],'as':_0x0a63('0x63')},{'model':db[_0x430065+_0x540953],'as':'Account'}]});})[_0x0a63('0x6')](function(_0x1a329c){if(_[_0x0a63('0xf')](_0x1a329c)){throw new Error(_0x430065+_0x0a63('0x64'));}_0x2173ee=_0x1a329c;return _0x1a329c['update']({'read':0x0,'readAt':null,'UserId':null});})[_0x0a63('0x6')](function(){var _0x148bbd={'uniqueid':_0x1e256e+'.'+_0x2173ee['id']+'.'+_0x2173ee[_0x0a63('0x63')]['id'],'FromUserId':_0xee586['user']['id'],'type':_0x0a63('0x65')};_0x148bbd[_0x430065+_0x0a63('0x66')]=_0x2173ee['id'];_0x148bbd[_0x430065+_0x0a63('0x67')]=_0x2173ee['Interaction']['id'];_0x148bbd[_0x0a63('0x68')+_0x430065+_0x540953+'Id']=_0x2173ee[_0x0a63('0x69')]['id'];_0x148bbd['To'+_0x430065+_0x0a63('0x6a')]=_0x3710fa['id'];return db[_0x430065+_0x0a63('0x6b')][_0x0a63('0x6c')](_0x148bbd);})[_0x0a63('0x6')](function(){return respondWithRpcPromise(_0x0a63('0x6d'),{'channel':_0x1e256e,'interaction':_0x2173ee[_0x0a63('0x63')],'message':_0x2173ee,'account':_0x2173ee[_0x0a63('0x69')],'applications':[{'id':0x0,'priority':0x1,'app':_0x0a63('0x65'),'appdata':_0x3710fa[_0x0a63('0xd')]+','+(_0x2173ee[_0x0a63('0x69')][_0x0a63('0x6e')]||0x12c),'interval':_0x0a63('0x6f')}]},routingClient);})[_0x0a63('0x6')](respondWithResult(_0x486ffc,null))[_0x0a63('0x14')](handleError(_0x486ffc,null));};};exports['agentNotify']=function(_0x3ddf5e,_0x5f0510){var _0x19a46f,_0x36fd48;if(_['isNil'](_0x3ddf5e[_0x0a63('0x1e')][_0x0a63('0x70')])){throw new Error(_0x0a63('0x71'));}var _0x2e1dc6=_0x3ddf5e[_0x0a63('0x1e')][_0x0a63('0x70')];var _0x1030f7=_[_0x0a63('0x5c')](_0x2e1dc6);var _0x393399=_0x2e1dc6==='chat'?_0x0a63('0x5d'):'Account';return db['User'][_0x0a63('0x5f')]({'raw':!![],'where':{'id':_0x3ddf5e[_0x0a63('0x18')]['id'],'role':_0x0a63('0x35')}})[_0x0a63('0x6')](function(_0x5e1f76){if(_[_0x0a63('0xf')](_0x5e1f76)){throw new Error('Agent\x20not\x20found');}_0x19a46f=_0x5e1f76;return db[_0x1030f7+'Message'][_0x0a63('0x5f')]({'where':{'id':_0x3ddf5e['body']['messageId']},'include':[{'model':db[_0x1030f7+_0x0a63('0x63')],'as':_0x0a63('0x63')},{'model':db[_0x1030f7+_0x393399],'as':_0x0a63('0x69')}]});})[_0x0a63('0x6')](function(_0x52488a){if(_[_0x0a63('0xf')](_0x52488a)){throw new Error(_0x1030f7+'\x20Message\x20not\x20found');}_0x36fd48=_0x52488a;return _0x52488a[_0x0a63('0x72')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x11dd21={'uniqueid':_0x2e1dc6+'.'+_0x36fd48['id']+'.'+_0x36fd48['Interaction']['id'],'FromUserId':_0x3ddf5e[_0x0a63('0x2a')]['id'],'type':_0x0a63('0x65'),'ToUserId':_0x19a46f['id']};_0x11dd21[_0x1030f7+_0x0a63('0x66')]=_0x36fd48['id'];_0x11dd21[_0x1030f7+_0x0a63('0x67')]=_0x36fd48[_0x0a63('0x63')]['id'];_0x11dd21[_0x0a63('0x68')+_0x1030f7+_0x393399+'Id']=_0x36fd48[_0x0a63('0x69')]['id'];return db[_0x1030f7+_0x0a63('0x6b')][_0x0a63('0x6c')](_0x11dd21);})['then'](function(){return respondWithRpcPromise(_0x0a63('0x6d'),{'channel':_0x2e1dc6,'interaction':_0x36fd48['Interaction'],'message':_0x36fd48,'account':_0x36fd48[_0x0a63('0x69')],'applications':[{'id':0x0,'priority':0x1,'app':_0x0a63('0x35'),'appdata':_0x19a46f[_0x0a63('0xd')]+','+(_0x36fd48[_0x0a63('0x69')][_0x0a63('0x73')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0x0a63('0x6')](respondWithResult(_0x5f0510,null))[_0x0a63('0x14')](handleError(_0x5f0510,null));};
\ No newline at end of file
index 4dd69ab..b7f07fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe75=['path','express','./schedule.controller','get','isAuthenticated','index','/:id','show','/:id/run','post','create','put','exports','multer','util'];(function(_0x510c9a,_0x4dc1f){var _0x3f5070=function(_0x702a83){while(--_0x702a83){_0x510c9a['push'](_0x510c9a['shift']());}};_0x3f5070(++_0x4dc1f);}(_0xbe75,0x1cf));var _0x5be7=function(_0x57325e,_0x4d98de){_0x57325e=_0x57325e-0x0;var _0x1d12e9=_0xbe75[_0x57325e];return _0x1d12e9;};'use strict';var multer=require(_0x5be7('0x0'));var util=require(_0x5be7('0x1'));var path=require(_0x5be7('0x2'));var timeout=require('connect-timeout');var express=require(_0x5be7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x5be7('0x4'));router[_0x5be7('0x5')]('/',auth[_0x5be7('0x6')](),controller[_0x5be7('0x7')]);router['get'](_0x5be7('0x8'),auth[_0x5be7('0x6')](),controller[_0x5be7('0x9')]);router['get'](_0x5be7('0xa'),auth[_0x5be7('0x6')](),controller['run']);router[_0x5be7('0xb')]('/',auth[_0x5be7('0x6')](),controller[_0x5be7('0xc')]);router[_0x5be7('0xd')](_0x5be7('0x8'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x5be7('0x6')](),controller['destroy']);module[_0x5be7('0xe')]=router;
\ No newline at end of file
+var _0x07dd=['../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','index','/:id','show','get','/:id/run','isAuthenticated','run','post','delete','multer','path','connect-timeout','express','fs-extra'];(function(_0x3b03ad,_0x3be75a){var _0x1f238a=function(_0xe0e612){while(--_0xe0e612){_0x3b03ad['push'](_0x3b03ad['shift']());}};_0x1f238a(++_0x3be75a);}(_0x07dd,0xc1));var _0xd07d=function(_0x3eb969,_0x11c187){_0x3eb969=_0x3eb969-0x0;var _0x5e62e0=_0x07dd[_0x3eb969];return _0x5e62e0;};'use strict';var multer=require(_0xd07d('0x0'));var util=require('util');var path=require(_0xd07d('0x1'));var timeout=require(_0xd07d('0x2'));var express=require(_0xd07d('0x3'));var router=express['Router']();var fs_extra=require(_0xd07d('0x4'));var auth=require(_0xd07d('0x5'));var interaction=require(_0xd07d('0x6'));var config=require(_0xd07d('0x7'));var controller=require(_0xd07d('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xd07d('0x9')]);router['get'](_0xd07d('0xa'),auth['isAuthenticated'](),controller[_0xd07d('0xb')]);router[_0xd07d('0xc')](_0xd07d('0xd'),auth[_0xd07d('0xe')](),controller[_0xd07d('0xf')]);router[_0xd07d('0x10')]('/',auth[_0xd07d('0xe')](),controller['create']);router['put'](_0xd07d('0xa'),auth[_0xd07d('0xe')](),controller['update']);router[_0xd07d('0x11')](_0xd07d('0xa'),auth[_0xd07d('0xe')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 8ec0828..bcf9d64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69d1=['minutes','csv','pdf','xlsx','default','custom','TEXT','BOOLEAN','STRING','DATE','INTEGER','ENUM','quarters','months','weeks','days','hours'];(function(_0x30c649,_0x2ebbac){var _0x3edfb9=function(_0xab82f5){while(--_0xab82f5){_0x30c649['push'](_0x30c649['shift']());}};_0x3edfb9(++_0x2ebbac);}(_0x69d1,0x7f));var _0x169d=function(_0x3f3514,_0x4dbfea){_0x3f3514=_0x3f3514-0x0;var _0x1203de=_0x69d1[_0x3f3514];return _0x1203de;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x169d('0x0')],'allowNull':![]},'description':{'type':Sequelize[_0x169d('0x0')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x169d('0x0')],'allowNull':![],'defaultValue':'0\x200\x20*\x20*\x20*'},'startAt':{'type':Sequelize[_0x169d('0x1')],'allowNull':![]},'endAt':{'type':Sequelize[_0x169d('0x1')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x169d('0x2')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x169d('0x3')]('years',_0x169d('0x4'),_0x169d('0x5'),_0x169d('0x6'),_0x169d('0x7'),_0x169d('0x8'),_0x169d('0x9')),'allowNull':![],'defaultValue':_0x169d('0x7')},'output':{'type':Sequelize[_0x169d('0x3')](_0x169d('0xa'),_0x169d('0xb'),_0x169d('0xc')),'allowNull':![],'defaultValue':'csv'},'type':{'type':Sequelize[_0x169d('0x3')]('custom',_0x169d('0xd')),'allowNull':![],'defaultValue':_0x169d('0xe')},'sendMail':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x169d('0xf')]},'bcc':{'type':Sequelize[_0x169d('0xf')]},'sendIfEmpty':{'type':Sequelize[_0x169d('0x10')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x76e5=['quarters','months','weeks','days','hours','minutes','pdf','csv','ENUM','custom','TEXT','sequelize','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','years'];(function(_0x2e3292,_0x42b13c){var _0x526777=function(_0x4ab43e){while(--_0x4ab43e){_0x2e3292['push'](_0x2e3292['shift']());}};_0x526777(++_0x42b13c);}(_0x76e5,0x161));var _0x576e=function(_0x30aaec,_0x30fb8b){_0x30aaec=_0x30aaec-0x0;var _0x3362cb=_0x76e5[_0x30aaec];return _0x3362cb;};'use strict';var Sequelize=require(_0x576e('0x0'));module[_0x576e('0x1')]={'name':{'type':Sequelize[_0x576e('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x576e('0x2')]},'active':{'type':Sequelize[_0x576e('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x576e('0x2')],'allowNull':![],'defaultValue':_0x576e('0x4')},'startAt':{'type':Sequelize[_0x576e('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0x576e('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x576e('0x6')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0x576e('0x7'),_0x576e('0x8'),_0x576e('0x9'),_0x576e('0xa'),_0x576e('0xb'),_0x576e('0xc'),_0x576e('0xd')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize['ENUM']('csv',_0x576e('0xe'),'xlsx'),'allowNull':![],'defaultValue':_0x576e('0xf')},'type':{'type':Sequelize[_0x576e('0x10')](_0x576e('0x11'),'default'),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize[_0x576e('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x576e('0x2')]},'cc':{'type':Sequelize['TEXT']},'bcc':{'type':Sequelize[_0x576e('0x12')]},'sendIfEmpty':{'type':Sequelize[_0x576e('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 0aed2cf..01e5f85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cb8=['undefined','count','set','reject','update','destroy','then','get','Scheduler','error','stack','name','index','map','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','pick','filters','filter','merge','VIRTUAL','include','Schedule','findAll','catch','params','length','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','../../config/schedule','run','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit'];(function(_0x3779bb,_0x2f14ac){var _0x1d1578=function(_0x53a250){while(--_0x53a250){_0x3779bb['push'](_0x3779bb['shift']());}};_0x1d1578(++_0x2f14ac);}(_0x9cb8,0x1be));var _0x89cb=function(_0x3c5151,_0xfbf2b4){_0x3c5151=_0x3c5151-0x0;var _0x39fac2=_0x9cb8[_0x3c5151];return _0x39fac2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x89cb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x89cb('0x1'));var rp=require('request-promise');var moment=require(_0x89cb('0x2'));var BPromise=require(_0x89cb('0x3'));var Mustache=require(_0x89cb('0x4'));var util=require(_0x89cb('0x5'));var path=require(_0x89cb('0x6'));var sox=require(_0x89cb('0x7'));var csv=require(_0x89cb('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x89cb('0x9'));var _=require('lodash');var squel=require(_0x89cb('0xa'));var crypto=require(_0x89cb('0xb'));var jsforce=require(_0x89cb('0xc'));var deskjs=require(_0x89cb('0xd'));var toCsv=require(_0x89cb('0x8'));var querystring=require(_0x89cb('0xe'));var Papa=require(_0x89cb('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x89cb('0x10'));var as=require(_0x89cb('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x89cb('0x12'))(_0x89cb('0x13'));var utils=require('../../config/utils');var config=require(_0x89cb('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x89cb('0x15'))['db'];function respondWithStatusCode(_0x4679ef,_0x277f06){_0x277f06=_0x277f06||0xcc;return function(_0x97fdd6){if(_0x97fdd6){return _0x4679ef[_0x89cb('0x16')](_0x277f06);}return _0x4679ef[_0x89cb('0x17')](_0x277f06)[_0x89cb('0x18')]();};}function respondWithResult(_0xdc6329,_0x57d7ab){_0x57d7ab=_0x57d7ab||0xc8;return function(_0x2b7b57){if(_0x2b7b57){return _0xdc6329['status'](_0x57d7ab)[_0x89cb('0x19')](_0x2b7b57);}};}function respondWithFilteredResult(_0x577c5c,_0x4e1913){return function(_0x5cc663){if(_0x5cc663){var _0xa49f79=typeof _0x4e1913[_0x89cb('0x1a')]==='undefined'&&typeof _0x4e1913[_0x89cb('0x1b')]===_0x89cb('0x1c');var _0x5db6e2=_0x5cc663[_0x89cb('0x1d')];var _0x42d453=_0xa49f79?0x0:_0x4e1913[_0x89cb('0x1a')];var _0x136a58=_0xa49f79?_0x5cc663['count']:_0x4e1913[_0x89cb('0x1a')]+_0x4e1913[_0x89cb('0x1b')];var _0x2ccc3c;if(_0x136a58>=_0x5db6e2){_0x136a58=_0x5db6e2;_0x2ccc3c=0xc8;}else{_0x2ccc3c=0xce;}_0x577c5c['status'](_0x2ccc3c);return _0x577c5c[_0x89cb('0x1e')]('Content-Range',_0x42d453+'-'+_0x136a58+'/'+_0x5db6e2)[_0x89cb('0x19')](_0x5cc663);}return null;};}function patchUpdates(_0x5a0670){return function(_0x23ded3){try{jsonpatch['apply'](_0x23ded3,_0x5a0670,!![]);}catch(_0x2a1108){return BPromise[_0x89cb('0x1f')](_0x2a1108);}return _0x23ded3['save']();};}function saveUpdates(_0xe0d41e,_0x6831ca){return function(_0x5290c8){if(_0x5290c8){return _0x5290c8[_0x89cb('0x20')](_0xe0d41e)['then'](function(_0x310a6b){return _0x310a6b;});}return null;};}function removeEntity(_0x16a444,_0x26ea72){return function(_0x30176b){if(_0x30176b){return _0x30176b[_0x89cb('0x21')]()[_0x89cb('0x22')](function(){var _0x9503c4=_0x30176b[_0x89cb('0x23')]({'plain':!![]});var _0x368b1a=_0x89cb('0x24');return db['UserProfileResource'][_0x89cb('0x21')]({'where':{'type':_0x368b1a,'resourceId':_0x9503c4['id']}})['then'](function(){return _0x30176b;});})['then'](function(){_0x16a444[_0x89cb('0x17')](0xcc)[_0x89cb('0x18')]();});}};}function handleEntityNotFound(_0x1ddc0c,_0x3778b6){return function(_0x36c221){if(!_0x36c221){_0x1ddc0c['sendStatus'](0x194);}return _0x36c221;};}function handleError(_0x2a5f4e,_0x61049e){_0x61049e=_0x61049e||0x1f4;return function(_0x38065f){logger[_0x89cb('0x25')](_0x38065f[_0x89cb('0x26')]);if(_0x38065f['name']){delete _0x38065f[_0x89cb('0x27')];}_0x2a5f4e[_0x89cb('0x17')](_0x61049e)['send'](_0x38065f);};}exports[_0x89cb('0x28')]=function(_0x18382d,_0x37fee4){var _0x52b25a={},_0x1a0c37={},_0x1d020e={'count':0x0,'rows':[]};var _0xa4244b=_[_0x89cb('0x29')](db['Schedule'][_0x89cb('0x2a')],function(_0x49cd68){return{'name':_0x49cd68[_0x89cb('0x2b')],'type':_0x49cd68[_0x89cb('0x2c')][_0x89cb('0x2d')]};});_0x1a0c37['model']=_['map'](_0xa4244b,_0x89cb('0x27'));_0x1a0c37[_0x89cb('0x2e')]=_[_0x89cb('0x2f')](_0x18382d['query']);_0x1a0c37['filters']=_[_0x89cb('0x30')](_0x1a0c37[_0x89cb('0x31')],_0x1a0c37[_0x89cb('0x2e')]);_0x52b25a[_0x89cb('0x32')]=_[_0x89cb('0x30')](_0x1a0c37[_0x89cb('0x31')],qs[_0x89cb('0x33')](_0x18382d['query'][_0x89cb('0x33')]));_0x52b25a[_0x89cb('0x32')]=_0x52b25a[_0x89cb('0x32')]['length']?_0x52b25a[_0x89cb('0x32')]:_0x1a0c37[_0x89cb('0x31')];if(!_0x18382d[_0x89cb('0x2e')][_0x89cb('0x34')]('nolimit')){_0x52b25a[_0x89cb('0x1b')]=qs[_0x89cb('0x1b')](_0x18382d[_0x89cb('0x2e')][_0x89cb('0x1b')]);_0x52b25a[_0x89cb('0x1a')]=qs[_0x89cb('0x1a')](_0x18382d['query'][_0x89cb('0x1a')]);}_0x52b25a[_0x89cb('0x35')]=qs[_0x89cb('0x36')](_0x18382d[_0x89cb('0x2e')][_0x89cb('0x36')]);_0x52b25a[_0x89cb('0x37')]=qs['filters'](_[_0x89cb('0x38')](_0x18382d[_0x89cb('0x2e')],_0x1a0c37[_0x89cb('0x39')]),_0xa4244b);if(_0x18382d[_0x89cb('0x2e')][_0x89cb('0x3a')]){_0x52b25a['where']=_[_0x89cb('0x3b')](_0x52b25a[_0x89cb('0x37')],{'$or':_[_0x89cb('0x29')](_0xa4244b,function(_0x439123){if(_0x439123[_0x89cb('0x2c')]!==_0x89cb('0x3c')){var _0x54c784={};_0x54c784[_0x439123['name']]={'$like':'%'+_0x18382d[_0x89cb('0x2e')]['filter']+'%'};return _0x54c784;}})});}_0x52b25a=_[_0x89cb('0x3b')]({},_0x52b25a,_0x18382d['options']);var _0x44851d={'where':_0x52b25a['where']};return db['Schedule']['count'](_0x44851d)['then'](function(_0x443bda){_0x1d020e[_0x89cb('0x1d')]=_0x443bda;if(_0x18382d[_0x89cb('0x2e')]['includeAll']){_0x52b25a[_0x89cb('0x3d')]=[{'all':!![]}];}return db[_0x89cb('0x3e')][_0x89cb('0x3f')](_0x52b25a);})[_0x89cb('0x22')](function(_0x6c7b4b){_0x1d020e['rows']=_0x6c7b4b;return _0x1d020e;})['then'](respondWithFilteredResult(_0x37fee4,_0x52b25a))[_0x89cb('0x40')](handleError(_0x37fee4,null));};exports['show']=function(_0x50a0de,_0x816cea){var _0x168361={'raw':![],'where':{'id':_0x50a0de[_0x89cb('0x41')]['id']}},_0x5cbfdf={};_0x5cbfdf[_0x89cb('0x31')]=_[_0x89cb('0x2f')](db['Schedule'][_0x89cb('0x2a')]);_0x5cbfdf['query']=_[_0x89cb('0x2f')](_0x50a0de['query']);_0x5cbfdf['filters']=_[_0x89cb('0x30')](_0x5cbfdf[_0x89cb('0x31')],_0x5cbfdf[_0x89cb('0x2e')]);_0x168361[_0x89cb('0x32')]=_[_0x89cb('0x30')](_0x5cbfdf[_0x89cb('0x31')],qs['fields'](_0x50a0de[_0x89cb('0x2e')]['fields']));_0x168361[_0x89cb('0x32')]=_0x168361[_0x89cb('0x32')][_0x89cb('0x42')]?_0x168361[_0x89cb('0x32')]:_0x5cbfdf[_0x89cb('0x31')];if(_0x50a0de[_0x89cb('0x2e')]['includeAll']){_0x168361[_0x89cb('0x3d')]=[{'all':!![]}];}_0x168361=_[_0x89cb('0x3b')]({},_0x168361,_0x50a0de[_0x89cb('0x43')]);return db[_0x89cb('0x3e')][_0x89cb('0x44')](_0x168361)[_0x89cb('0x22')](handleEntityNotFound(_0x816cea,null))['then'](respondWithResult(_0x816cea,null))['catch'](handleError(_0x816cea,null));};exports['create']=function(_0x342a9a,_0x186b54){return db['Schedule'][_0x89cb('0x45')](_0x342a9a[_0x89cb('0x46')],{})['then'](function(_0x320f85){var _0x5abaf6=_0x342a9a[_0x89cb('0x47')][_0x89cb('0x23')]({'plain':!![]});if(!_0x5abaf6)throw new Error(_0x89cb('0x48'));if(_0x5abaf6[_0x89cb('0x49')]===_0x89cb('0x47')){var _0x5c7d37=_0x320f85['get']({'plain':!![]});var _0x225a8a=_0x89cb('0x24');return db['UserProfileSection']['find']({'where':{'name':_0x225a8a,'userProfileId':_0x5abaf6[_0x89cb('0x4a')]},'raw':!![]})['then'](function(_0x124314){if(_0x124314&&_0x124314['autoAssociation']===0x0){return db[_0x89cb('0x4b')][_0x89cb('0x45')]({'name':_0x5c7d37[_0x89cb('0x27')],'resourceId':_0x5c7d37['id'],'type':_0x124314[_0x89cb('0x27')],'sectionId':_0x124314['id']},{})[_0x89cb('0x22')](function(){return _0x320f85;});}else{return _0x320f85;}})[_0x89cb('0x40')](function(_0x3ffd8a){logger[_0x89cb('0x25')](_0x89cb('0x4c'),_0x3ffd8a);throw _0x3ffd8a;});}return _0x320f85;})[_0x89cb('0x22')](respondWithResult(_0x186b54,0xc9))['catch'](handleError(_0x186b54,null));};exports[_0x89cb('0x20')]=function(_0x314f6f,_0xf959c2){if(_0x314f6f['body']['id']){delete _0x314f6f[_0x89cb('0x46')]['id'];}return db[_0x89cb('0x3e')]['find']({'where':{'id':_0x314f6f[_0x89cb('0x41')]['id']}})['then'](handleEntityNotFound(_0xf959c2,null))['then'](saveUpdates(_0x314f6f[_0x89cb('0x46')],null))[_0x89cb('0x22')](respondWithResult(_0xf959c2,null))['catch'](handleError(_0xf959c2,null));};exports[_0x89cb('0x21')]=function(_0x326b1b,_0x443e7b){return db[_0x89cb('0x3e')][_0x89cb('0x44')]({'where':{'id':_0x326b1b['params']['id']}})[_0x89cb('0x22')](handleEntityNotFound(_0x443e7b,null))[_0x89cb('0x22')](removeEntity(_0x443e7b,null))[_0x89cb('0x40')](handleError(_0x443e7b,null));};exports['run']=function(_0x374ea7,_0x22dbba,_0xfe08d9){var _0x52fbb5=require(_0x89cb('0x4d'));return db[_0x89cb('0x3e')]['find']({'where':{'id':_0x374ea7['params']['id']},'raw':!![]})['then'](handleEntityNotFound(_0x22dbba,null))[_0x89cb('0x22')](function(){_0x52fbb5[_0x89cb('0x4e')](_0x374ea7[_0x89cb('0x41')]['id']);})[_0x89cb('0x22')](respondWithStatusCode(_0x22dbba,null))['catch'](handleError(_0x22dbba,null));};
\ No newline at end of file
+var _0xebb0=['intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','run','../../config/schedule','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','Scheduler','end','sendStatus','stack','name','send','Schedule','rawAttributes','fieldName','type','key','map','query','keys','filters'];(function(_0x577077,_0x52f056){var _0x370769=function(_0x34d109){while(--_0x34d109){_0x577077['push'](_0x577077['shift']());}};_0x370769(++_0x52f056);}(_0xebb0,0x7f));var _0x0ebb=function(_0x5e9913,_0x4552cc){_0x5e9913=_0x5e9913-0x0;var _0x4ac3f2=_0xebb0[_0x5e9913];return _0x4ac3f2;};'use strict';var emlformat=require(_0x0ebb('0x0'));var rimraf=require(_0x0ebb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0ebb('0x2'));var rp=require(_0x0ebb('0x3'));var moment=require(_0x0ebb('0x4'));var BPromise=require(_0x0ebb('0x5'));var Mustache=require(_0x0ebb('0x6'));var util=require(_0x0ebb('0x7'));var path=require(_0x0ebb('0x8'));var sox=require(_0x0ebb('0x9'));var csv=require(_0x0ebb('0xa'));var ejs=require(_0x0ebb('0xb'));var fs=require('fs');var fs_extra=require(_0x0ebb('0xc'));var _=require(_0x0ebb('0xd'));var squel=require(_0x0ebb('0xe'));var crypto=require(_0x0ebb('0xf'));var jsforce=require(_0x0ebb('0x10'));var deskjs=require(_0x0ebb('0x11'));var toCsv=require(_0x0ebb('0xa'));var querystring=require('querystring');var Papa=require(_0x0ebb('0x12'));var Redis=require(_0x0ebb('0x13'));var authService=require(_0x0ebb('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x0ebb('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0ebb('0x16'))(_0x0ebb('0x17'));var utils=require(_0x0ebb('0x18'));var config=require(_0x0ebb('0x19'));var licenseUtil=require(_0x0ebb('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x29ac2a,_0x5c98c2){_0x5c98c2=_0x5c98c2||0xcc;return function(_0x539324){if(_0x539324){return _0x29ac2a['sendStatus'](_0x5c98c2);}return _0x29ac2a[_0x0ebb('0x1b')](_0x5c98c2)['end']();};}function respondWithResult(_0x599bf1,_0x13c487){_0x13c487=_0x13c487||0xc8;return function(_0x3b3b8d){if(_0x3b3b8d){return _0x599bf1['status'](_0x13c487)[_0x0ebb('0x1c')](_0x3b3b8d);}};}function respondWithFilteredResult(_0xc12e35,_0x10dc74){return function(_0x53d8ed){if(_0x53d8ed){var _0x4edda6=typeof _0x10dc74[_0x0ebb('0x1d')]===_0x0ebb('0x1e')&&typeof _0x10dc74[_0x0ebb('0x1f')]===_0x0ebb('0x1e');var _0x150655=_0x53d8ed[_0x0ebb('0x20')];var _0x464dad=_0x4edda6?0x0:_0x10dc74[_0x0ebb('0x1d')];var _0x1cd6fd=_0x4edda6?_0x53d8ed[_0x0ebb('0x20')]:_0x10dc74[_0x0ebb('0x1d')]+_0x10dc74[_0x0ebb('0x1f')];var _0x356dbf;if(_0x1cd6fd>=_0x150655){_0x1cd6fd=_0x150655;_0x356dbf=0xc8;}else{_0x356dbf=0xce;}_0xc12e35[_0x0ebb('0x1b')](_0x356dbf);return _0xc12e35[_0x0ebb('0x21')](_0x0ebb('0x22'),_0x464dad+'-'+_0x1cd6fd+'/'+_0x150655)[_0x0ebb('0x1c')](_0x53d8ed);}return null;};}function patchUpdates(_0x413b61){return function(_0x3ac36e){try{jsonpatch[_0x0ebb('0x23')](_0x3ac36e,_0x413b61,!![]);}catch(_0x2a5d51){return BPromise[_0x0ebb('0x24')](_0x2a5d51);}return _0x3ac36e[_0x0ebb('0x25')]();};}function saveUpdates(_0x4f2aee,_0x4cc5ba){return function(_0x5cfb3f){if(_0x5cfb3f){return _0x5cfb3f['update'](_0x4f2aee)[_0x0ebb('0x26')](function(_0x519412){return _0x519412;});}return null;};}function removeEntity(_0x5c026c,_0x48976){return function(_0x5d7bd0){if(_0x5d7bd0){return _0x5d7bd0[_0x0ebb('0x27')]()[_0x0ebb('0x26')](function(){var _0x23b184=_0x5d7bd0['get']({'plain':!![]});var _0x328ad7=_0x0ebb('0x28');return db['UserProfileResource']['destroy']({'where':{'type':_0x328ad7,'resourceId':_0x23b184['id']}})[_0x0ebb('0x26')](function(){return _0x5d7bd0;});})['then'](function(){_0x5c026c['status'](0xcc)[_0x0ebb('0x29')]();});}};}function handleEntityNotFound(_0x2424b3,_0x32db4e){return function(_0x4c2d17){if(!_0x4c2d17){_0x2424b3[_0x0ebb('0x2a')](0x194);}return _0x4c2d17;};}function handleError(_0x800e2,_0xb1764a){_0xb1764a=_0xb1764a||0x1f4;return function(_0x1bd415){logger['error'](_0x1bd415[_0x0ebb('0x2b')]);if(_0x1bd415['name']){delete _0x1bd415[_0x0ebb('0x2c')];}_0x800e2[_0x0ebb('0x1b')](_0xb1764a)[_0x0ebb('0x2d')](_0x1bd415);};}exports['index']=function(_0x2f93c5,_0x3564f7){var _0xeafe48={},_0x5719c5={},_0x1aaa0f={'count':0x0,'rows':[]};var _0x4f3126=_['map'](db[_0x0ebb('0x2e')][_0x0ebb('0x2f')],function(_0x54adf9){return{'name':_0x54adf9[_0x0ebb('0x30')],'type':_0x54adf9[_0x0ebb('0x31')][_0x0ebb('0x32')]};});_0x5719c5['model']=_[_0x0ebb('0x33')](_0x4f3126,_0x0ebb('0x2c'));_0x5719c5[_0x0ebb('0x34')]=_[_0x0ebb('0x35')](_0x2f93c5[_0x0ebb('0x34')]);_0x5719c5[_0x0ebb('0x36')]=_[_0x0ebb('0x37')](_0x5719c5['model'],_0x5719c5[_0x0ebb('0x34')]);_0xeafe48[_0x0ebb('0x38')]=_[_0x0ebb('0x37')](_0x5719c5[_0x0ebb('0x39')],qs[_0x0ebb('0x3a')](_0x2f93c5[_0x0ebb('0x34')][_0x0ebb('0x3a')]));_0xeafe48[_0x0ebb('0x38')]=_0xeafe48['attributes'][_0x0ebb('0x3b')]?_0xeafe48[_0x0ebb('0x38')]:_0x5719c5['model'];if(!_0x2f93c5[_0x0ebb('0x34')][_0x0ebb('0x3c')](_0x0ebb('0x3d'))){_0xeafe48[_0x0ebb('0x1f')]=qs[_0x0ebb('0x1f')](_0x2f93c5[_0x0ebb('0x34')][_0x0ebb('0x1f')]);_0xeafe48[_0x0ebb('0x1d')]=qs[_0x0ebb('0x1d')](_0x2f93c5['query'][_0x0ebb('0x1d')]);}_0xeafe48[_0x0ebb('0x3e')]=qs[_0x0ebb('0x3f')](_0x2f93c5[_0x0ebb('0x34')][_0x0ebb('0x3f')]);_0xeafe48[_0x0ebb('0x40')]=qs[_0x0ebb('0x36')](_[_0x0ebb('0x41')](_0x2f93c5[_0x0ebb('0x34')],_0x5719c5['filters']),_0x4f3126);if(_0x2f93c5[_0x0ebb('0x34')][_0x0ebb('0x42')]){_0xeafe48[_0x0ebb('0x40')]=_[_0x0ebb('0x43')](_0xeafe48[_0x0ebb('0x40')],{'$or':_['map'](_0x4f3126,function(_0x375a10){if(_0x375a10[_0x0ebb('0x31')]!==_0x0ebb('0x44')){var _0x3457f6={};_0x3457f6[_0x375a10['name']]={'$like':'%'+_0x2f93c5[_0x0ebb('0x34')]['filter']+'%'};return _0x3457f6;}})});}_0xeafe48=_['merge']({},_0xeafe48,_0x2f93c5[_0x0ebb('0x45')]);var _0x57946c={'where':_0xeafe48[_0x0ebb('0x40')]};return db[_0x0ebb('0x2e')][_0x0ebb('0x20')](_0x57946c)[_0x0ebb('0x26')](function(_0x7d04a7){_0x1aaa0f[_0x0ebb('0x20')]=_0x7d04a7;if(_0x2f93c5['query'][_0x0ebb('0x46')]){_0xeafe48[_0x0ebb('0x47')]=[{'all':!![]}];}return db[_0x0ebb('0x2e')][_0x0ebb('0x48')](_0xeafe48);})[_0x0ebb('0x26')](function(_0x446c17){_0x1aaa0f[_0x0ebb('0x49')]=_0x446c17;return _0x1aaa0f;})['then'](respondWithFilteredResult(_0x3564f7,_0xeafe48))[_0x0ebb('0x4a')](handleError(_0x3564f7,null));};exports[_0x0ebb('0x4b')]=function(_0x1b0003,_0x5ea4cd){var _0x31b9b8={'raw':![],'where':{'id':_0x1b0003['params']['id']}},_0x3034ee={};_0x3034ee[_0x0ebb('0x39')]=_['keys'](db['Schedule'][_0x0ebb('0x2f')]);_0x3034ee[_0x0ebb('0x34')]=_[_0x0ebb('0x35')](_0x1b0003[_0x0ebb('0x34')]);_0x3034ee[_0x0ebb('0x36')]=_[_0x0ebb('0x37')](_0x3034ee[_0x0ebb('0x39')],_0x3034ee[_0x0ebb('0x34')]);_0x31b9b8['attributes']=_[_0x0ebb('0x37')](_0x3034ee[_0x0ebb('0x39')],qs[_0x0ebb('0x3a')](_0x1b0003['query'][_0x0ebb('0x3a')]));_0x31b9b8[_0x0ebb('0x38')]=_0x31b9b8['attributes']['length']?_0x31b9b8['attributes']:_0x3034ee['model'];if(_0x1b0003[_0x0ebb('0x34')][_0x0ebb('0x46')]){_0x31b9b8['include']=[{'all':!![]}];}_0x31b9b8=_[_0x0ebb('0x43')]({},_0x31b9b8,_0x1b0003['options']);return db['Schedule'][_0x0ebb('0x4c')](_0x31b9b8)[_0x0ebb('0x26')](handleEntityNotFound(_0x5ea4cd,null))['then'](respondWithResult(_0x5ea4cd,null))['catch'](handleError(_0x5ea4cd,null));};exports[_0x0ebb('0x4d')]=function(_0x2f85d1,_0x505ad3){return db[_0x0ebb('0x2e')]['create'](_0x2f85d1[_0x0ebb('0x4e')],{})[_0x0ebb('0x26')](function(_0xb374c6){var _0x385019=_0x2f85d1['user'][_0x0ebb('0x4f')]({'plain':!![]});if(!_0x385019)throw new Error(_0x0ebb('0x50'));if(_0x385019[_0x0ebb('0x51')]==='user'){var _0x1d1977=_0xb374c6[_0x0ebb('0x4f')]({'plain':!![]});var _0xc19ecb=_0x0ebb('0x28');return db[_0x0ebb('0x52')][_0x0ebb('0x4c')]({'where':{'name':_0xc19ecb,'userProfileId':_0x385019[_0x0ebb('0x53')]},'raw':!![]})[_0x0ebb('0x26')](function(_0x5965c4){if(_0x5965c4&&_0x5965c4[_0x0ebb('0x54')]===0x0){return db[_0x0ebb('0x55')][_0x0ebb('0x4d')]({'name':_0x1d1977[_0x0ebb('0x2c')],'resourceId':_0x1d1977['id'],'type':_0x5965c4[_0x0ebb('0x2c')],'sectionId':_0x5965c4['id']},{})['then'](function(){return _0xb374c6;});}else{return _0xb374c6;}})['catch'](function(_0x17dea8){logger[_0x0ebb('0x56')](_0x0ebb('0x57'),_0x17dea8);throw _0x17dea8;});}return _0xb374c6;})[_0x0ebb('0x26')](respondWithResult(_0x505ad3,0xc9))[_0x0ebb('0x4a')](handleError(_0x505ad3,null));};exports['update']=function(_0x2ad41b,_0x5acdba){if(_0x2ad41b[_0x0ebb('0x4e')]['id']){delete _0x2ad41b[_0x0ebb('0x4e')]['id'];}return db[_0x0ebb('0x2e')][_0x0ebb('0x4c')]({'where':{'id':_0x2ad41b[_0x0ebb('0x58')]['id']}})[_0x0ebb('0x26')](handleEntityNotFound(_0x5acdba,null))['then'](saveUpdates(_0x2ad41b[_0x0ebb('0x4e')],null))[_0x0ebb('0x26')](respondWithResult(_0x5acdba,null))[_0x0ebb('0x4a')](handleError(_0x5acdba,null));};exports['destroy']=function(_0x1b0064,_0x3af380){return db[_0x0ebb('0x2e')][_0x0ebb('0x4c')]({'where':{'id':_0x1b0064[_0x0ebb('0x58')]['id']}})[_0x0ebb('0x26')](handleEntityNotFound(_0x3af380,null))['then'](removeEntity(_0x3af380,null))[_0x0ebb('0x4a')](handleError(_0x3af380,null));};exports[_0x0ebb('0x59')]=function(_0x10793e,_0x5e1120,_0x4ee839){var _0x3e0d9c=require(_0x0ebb('0x5a'));return db[_0x0ebb('0x2e')]['find']({'where':{'id':_0x10793e['params']['id']},'raw':!![]})[_0x0ebb('0x26')](handleEntityNotFound(_0x5e1120,null))['then'](function(){_0x3e0d9c[_0x0ebb('0x59')](_0x10793e['params']['id']);})[_0x0ebb('0x26')](respondWithStatusCode(_0x5e1120,null))[_0x0ebb('0x4a')](handleError(_0x5e1120,null));};
\ No newline at end of file
index 385e3d6..dc664ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6434=['bluebird','request-promise','path','rimraf','./schedule.attributes','exports','define','Schedule','tools_schedules','util','../../config/logger','api','moment'];(function(_0x13db30,_0x536d8c){var _0x2980c7=function(_0x3704c3){while(--_0x3704c3){_0x13db30['push'](_0x13db30['shift']());}};_0x2980c7(++_0x536d8c);}(_0x6434,0x1ea));var _0x4643=function(_0x4f0383,_0x5b0a32){_0x4f0383=_0x4f0383-0x0;var _0x1972b5=_0x6434[_0x4f0383];return _0x1972b5;};'use strict';var _=require('lodash');var util=require(_0x4643('0x0'));var logger=require(_0x4643('0x1'))(_0x4643('0x2'));var moment=require(_0x4643('0x3'));var BPromise=require(_0x4643('0x4'));var rp=require(_0x4643('0x5'));var fs=require('fs');var path=require(_0x4643('0x6'));var rimraf=require(_0x4643('0x7'));var config=require('../../config/environment');var attributes=require(_0x4643('0x8'));module[_0x4643('0x9')]=function(_0x3fcdf8,_0x443d54){return _0x3fcdf8[_0x4643('0xa')](_0x4643('0xb'),attributes,{'tableName':_0x4643('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1f9c=['api','bluebird','request-promise','path','../../config/environment','exports','define','tools_schedules','lodash','util','../../config/logger'];(function(_0x379c82,_0x52a43e){var _0x155b34=function(_0x482f5){while(--_0x482f5){_0x379c82['push'](_0x379c82['shift']());}};_0x155b34(++_0x52a43e);}(_0x1f9c,0x17e));var _0xc1f9=function(_0x2fb852,_0x2b4873){_0x2fb852=_0x2fb852-0x0;var _0x5117d7=_0x1f9c[_0x2fb852];return _0x5117d7;};'use strict';var _=require(_0xc1f9('0x0'));var util=require(_0xc1f9('0x1'));var logger=require(_0xc1f9('0x2'))(_0xc1f9('0x3'));var moment=require('moment');var BPromise=require(_0xc1f9('0x4'));var rp=require(_0xc1f9('0x5'));var fs=require('fs');var path=require(_0xc1f9('0x6'));var rimraf=require('rimraf');var config=require(_0xc1f9('0x7'));var attributes=require('./schedule.attributes');module[_0xc1f9('0x8')]=function(_0x1d4b1b,_0x3fb91b){return _0x1d4b1b[_0xc1f9('0x9')]('Schedule',attributes,{'tableName':_0xc1f9('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 22476a7..abfdfec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1abe=['code','Schedule,\x20%s,\x20%s','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','then','info','request\x20sent','debug','error'];(function(_0x45b034,_0x3a57dd){var _0x509cb0=function(_0x3a89d5){while(--_0x3a89d5){_0x45b034['push'](_0x45b034['shift']());}};_0x509cb0(++_0x3a57dd);}(_0x1abe,0x1f3));var _0xe1ab=function(_0x769fd3,_0x4e56b1){_0x769fd3=_0x769fd3-0x0;var _0x13a008=_0x1abe[_0x769fd3];return _0x13a008;};'use strict';var _=require(_0xe1ab('0x0'));var util=require('util');var moment=require(_0xe1ab('0x1'));var BPromise=require('bluebird');var rs=require(_0xe1ab('0x2'));var fs=require('fs');var Redis=require(_0xe1ab('0x3'));var db=require(_0xe1ab('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xe1ab('0x5'))(_0xe1ab('0x6'));var config=require('../../config/environment');var jayson=require(_0xe1ab('0x7'));var client=jayson[_0xe1ab('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x459c57,_0x326b46,_0x795c0c){return new BPromise(function(_0x30b0de,_0x384e04){return client['request'](_0x459c57,_0x795c0c)[_0xe1ab('0x9')](function(_0x51ab9b){logger[_0xe1ab('0xa')]('Schedule,\x20%s,\x20%s',_0x326b46,_0xe1ab('0xb'));logger[_0xe1ab('0xc')]('Schedule,\x20%s,\x20%s,\x20%s',_0x326b46,'request\x20sent',JSON['stringify'](_0x51ab9b));if(_0x51ab9b[_0xe1ab('0xd')]){if(_0x51ab9b[_0xe1ab('0xd')][_0xe1ab('0xe')]===0x1f4){logger[_0xe1ab('0xd')](_0xe1ab('0xf'),_0x326b46,_0x51ab9b['error'][_0xe1ab('0x10')]);return _0x384e04(_0x51ab9b[_0xe1ab('0xd')]['message']);}logger['error'](_0xe1ab('0xf'),_0x326b46,_0x51ab9b[_0xe1ab('0xd')][_0xe1ab('0x10')]);return _0x30b0de(_0x51ab9b[_0xe1ab('0xd')][_0xe1ab('0x10')]);}else{logger[_0xe1ab('0xa')](_0xe1ab('0xf'),_0x326b46,_0xe1ab('0xb'));_0x30b0de(_0x51ab9b[_0xe1ab('0x11')][_0xe1ab('0x10')]);}})[_0xe1ab('0x12')](function(_0xa766e){logger['error'](_0xe1ab('0xf'),_0x326b46,_0xa766e);_0x384e04(_0xa766e);});});}
\ No newline at end of file
+var _0xdf83=['then','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0xdf83,0xd2));var _0x3df8=function(_0xcd3d34,_0x5a5acc){_0xcd3d34=_0xcd3d34-0x0;var _0x490679=_0xdf83[_0xcd3d34];return _0x490679;};'use strict';var _=require('lodash');var util=require(_0x3df8('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x3df8('0x1'));var fs=require('fs');var Redis=require(_0x3df8('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x3df8('0x3'));var logger=require(_0x3df8('0x4'))(_0x3df8('0x5'));var config=require(_0x3df8('0x6'));var jayson=require(_0x3df8('0x7'));var client=jayson[_0x3df8('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x34b43c,_0x35b8d6,_0x2e9b74){return new BPromise(function(_0xea2f02,_0x252ae3){return client[_0x3df8('0x9')](_0x34b43c,_0x2e9b74)[_0x3df8('0xa')](function(_0x3c6751){logger[_0x3df8('0xb')](_0x3df8('0xc'),_0x35b8d6,_0x3df8('0xd'));logger[_0x3df8('0xe')](_0x3df8('0xf'),_0x35b8d6,_0x3df8('0xd'),JSON[_0x3df8('0x10')](_0x3c6751));if(_0x3c6751['error']){if(_0x3c6751[_0x3df8('0x11')][_0x3df8('0x12')]===0x1f4){logger[_0x3df8('0x11')](_0x3df8('0xc'),_0x35b8d6,_0x3c6751[_0x3df8('0x11')][_0x3df8('0x13')]);return _0x252ae3(_0x3c6751[_0x3df8('0x11')][_0x3df8('0x13')]);}logger[_0x3df8('0x11')](_0x3df8('0xc'),_0x35b8d6,_0x3c6751['error'][_0x3df8('0x13')]);return _0xea2f02(_0x3c6751[_0x3df8('0x11')][_0x3df8('0x13')]);}else{logger[_0x3df8('0xb')](_0x3df8('0xc'),_0x35b8d6,_0x3df8('0xd'));_0xea2f02(_0x3c6751[_0x3df8('0x14')][_0x3df8('0x13')]);}})[_0x3df8('0x15')](function(_0x532b9c){logger[_0x3df8('0x11')]('Schedule,\x20%s,\x20%s',_0x35b8d6,_0x532b9c);_0x252ae3(_0x532b9c);});});}
\ No newline at end of file
index 140f098..c0f7e14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6adf=['put','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','./screenRecording.controller','get','index','/describe','describe','/:id','isAuthenticated','/:id/download','download','post','create'];(function(_0x137972,_0x36f5ba){var _0x12447d=function(_0x26392a){while(--_0x26392a){_0x137972['push'](_0x137972['shift']());}};_0x12447d(++_0x36f5ba);}(_0x6adf,0xb6));var _0xf6ad=function(_0x37450b,_0x208ad2){_0x37450b=_0x37450b-0x0;var _0x5b14f6=_0x6adf[_0x37450b];return _0x5b14f6;};'use strict';var multer=require(_0xf6ad('0x0'));var util=require(_0xf6ad('0x1'));var path=require(_0xf6ad('0x2'));var timeout=require('connect-timeout');var express=require(_0xf6ad('0x3'));var router=express['Router']();var fs_extra=require(_0xf6ad('0x4'));var auth=require(_0xf6ad('0x5'));var interaction=require(_0xf6ad('0x6'));var config=require('../../config/environment');var controller=require(_0xf6ad('0x7'));router[_0xf6ad('0x8')]('/',auth['isAuthenticated'](),controller[_0xf6ad('0x9')]);router[_0xf6ad('0x8')](_0xf6ad('0xa'),auth['isAuthenticated'](),controller[_0xf6ad('0xb')]);router[_0xf6ad('0x8')](_0xf6ad('0xc'),auth[_0xf6ad('0xd')](),controller['show']);router[_0xf6ad('0x8')](_0xf6ad('0xe'),auth[_0xf6ad('0xd')](),controller[_0xf6ad('0xf')]);router[_0xf6ad('0x10')]('/',auth[_0xf6ad('0xd')](),controller[_0xf6ad('0x11')]);router[_0xf6ad('0x12')]('/:id',auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0xf6ad('0xd')](),controller['destroy']);module[_0xf6ad('0x13')]=router;
\ No newline at end of file
+var _0x180e=['isAuthenticated','get','/describe','describe','/:id','show','/:id/download','download','post','create','put','update','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller'];(function(_0x50f6ee,_0x153b5c){var _0x36fb6c=function(_0x5c89fb){while(--_0x5c89fb){_0x50f6ee['push'](_0x50f6ee['shift']());}};_0x36fb6c(++_0x153b5c);}(_0x180e,0x1be));var _0xe180=function(_0x239b31,_0x44a64d){_0x239b31=_0x239b31-0x0;var _0x41c8be=_0x180e[_0x239b31];return _0x41c8be;};'use strict';var multer=require(_0xe180('0x0'));var util=require(_0xe180('0x1'));var path=require(_0xe180('0x2'));var timeout=require('connect-timeout');var express=require(_0xe180('0x3'));var router=express[_0xe180('0x4')]();var fs_extra=require(_0xe180('0x5'));var auth=require(_0xe180('0x6'));var interaction=require(_0xe180('0x7'));var config=require(_0xe180('0x8'));var controller=require(_0xe180('0x9'));router['get']('/',auth[_0xe180('0xa')](),controller['index']);router[_0xe180('0xb')](_0xe180('0xc'),auth['isAuthenticated'](),controller[_0xe180('0xd')]);router[_0xe180('0xb')](_0xe180('0xe'),auth[_0xe180('0xa')](),controller[_0xe180('0xf')]);router[_0xe180('0xb')](_0xe180('0x10'),auth[_0xe180('0xa')](),controller[_0xe180('0x11')]);router[_0xe180('0x12')]('/',auth[_0xe180('0xa')](),controller[_0xe180('0x13')]);router[_0xe180('0x14')](_0xe180('0xe'),auth[_0xe180('0xa')](),controller[_0xe180('0x15')]);router[_0xe180('0x16')](_0xe180('0xe'),auth[_0xe180('0xa')](),controller['destroy']);module[_0xe180('0x17')]=router;
\ No newline at end of file
index 0d9482b..0fd331e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5430=['duration','DATE','getDataValue','startedAt','format','MM-DD-YYYY\x20HH:mm','toString','closedAt','sequelize','moment','path','../../config/environment','exports','VIRTUAL','extname','STRING','setDataValue','value','INTEGER','subtract'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x5430,0x10c));var _0x0543=function(_0x29e5da,_0x1f9075){_0x29e5da=_0x29e5da-0x0;var _0x5089ea=_0x5430[_0x29e5da];return _0x5089ea;};'use strict';var Sequelize=require(_0x0543('0x0'));var moment=require(_0x0543('0x1'));var path=require(_0x0543('0x2'));var config=require(_0x0543('0x3'));module[_0x0543('0x4')]={'format':{'type':Sequelize[_0x0543('0x5')],'get':function(){return this['getDataValue']('value')?path[_0x0543('0x6')](this['getDataValue']('value')):undefined;}},'interactionid':{'type':Sequelize[_0x0543('0x7')]},'channel':{'type':Sequelize[_0x0543('0x7')]},'value':{'type':Sequelize[_0x0543('0x7')],'set':function(_0x319568){var _0x46bca7=_0x319568['replace'](/\\/g,'/');this[_0x0543('0x8')](_0x0543('0x9'),_0x46bca7);}},'rating':{'type':Sequelize[_0x0543('0xa')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x0543('0xa')],'set':function(_0x2fb723){this[_0x0543('0x8')]('startedAt',moment()[_0x0543('0xb')](_0x2fb723,'ms'));this[_0x0543('0x8')]('closedAt',moment());this[_0x0543('0x8')](_0x0543('0xc'),_0x2fb723);}},'startedAt':{'type':Sequelize[_0x0543('0xd')],'get':function(){return moment(this[_0x0543('0xe')](_0x0543('0xf')))[_0x0543('0x10')](_0x0543('0x11'))[_0x0543('0x12')]();}},'closedAt':{'type':Sequelize[_0x0543('0xd')],'get':function(){return moment(this[_0x0543('0xe')](_0x0543('0x13')))[_0x0543('0x10')]('MM-DD-YYYY\x20HH:mm')[_0x0543('0x12')]();}},'createdAt':{'type':Sequelize[_0x0543('0xd')],'get':function(){return moment(this['getDataValue']('createdAt'))[_0x0543('0x10')](_0x0543('0x11'))[_0x0543('0x12')]();}},'updatedAt':{'type':Sequelize[_0x0543('0xd')],'get':function(){return moment(this[_0x0543('0xe')]('updatedAt'))[_0x0543('0x10')](_0x0543('0x11'))[_0x0543('0x12')]();}}};
\ No newline at end of file
+var _0xe77c=['value','extname','STRING','replace','setDataValue','INTEGER','startedAt','duration','DATE','format','MM-DD-YYYY\x20HH:mm','toString','createdAt','updatedAt','sequelize','moment','path','exports','VIRTUAL','getDataValue'];(function(_0x3d2f04,_0x2af699){var _0x453593=function(_0x2d7a9c){while(--_0x2d7a9c){_0x3d2f04['push'](_0x3d2f04['shift']());}};_0x453593(++_0x2af699);}(_0xe77c,0x176));var _0xce77=function(_0x4d5c14,_0x1d4351){_0x4d5c14=_0x4d5c14-0x0;var _0xb568f=_0xe77c[_0x4d5c14];return _0xb568f;};'use strict';var Sequelize=require(_0xce77('0x0'));var moment=require(_0xce77('0x1'));var path=require(_0xce77('0x2'));var config=require('../../config/environment');module[_0xce77('0x3')]={'format':{'type':Sequelize[_0xce77('0x4')],'get':function(){return this[_0xce77('0x5')](_0xce77('0x6'))?path[_0xce77('0x7')](this[_0xce77('0x5')](_0xce77('0x6'))):undefined;}},'interactionid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0xce77('0x8')],'set':function(_0x51fe6b){var _0x3a9d5d=_0x51fe6b[_0xce77('0x9')](/\\/g,'/');this[_0xce77('0xa')]('value',_0x3a9d5d);}},'rating':{'type':Sequelize[_0xce77('0xb')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0xce77('0xb')],'set':function(_0x82cc7e){this[_0xce77('0xa')](_0xce77('0xc'),moment()['subtract'](_0x82cc7e,'ms'));this[_0xce77('0xa')]('closedAt',moment());this[_0xce77('0xa')](_0xce77('0xd'),_0x82cc7e);}},'startedAt':{'type':Sequelize[_0xce77('0xe')],'get':function(){return moment(this['getDataValue'](_0xce77('0xc')))['format']('MM-DD-YYYY\x20HH:mm')['toString']();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xce77('0x5')]('closedAt'))[_0xce77('0xf')](_0xce77('0x10'))[_0xce77('0x11')]();}},'createdAt':{'type':Sequelize[_0xce77('0xe')],'get':function(){return moment(this[_0xce77('0x5')](_0xce77('0x12')))['format'](_0xce77('0x10'))['toString']();}},'updatedAt':{'type':Sequelize[_0xce77('0xe')],'get':function(){return moment(this[_0xce77('0x5')](_0xce77('0x13')))['format'](_0xce77('0x10'))[_0xce77('0x11')]();}}};
\ No newline at end of file
index 8fc4a20..16ea2a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98a8=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','end','status','json','undefined','count','offset','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','ScreenRecording','rawAttributes','fieldName','type','key','model','differenceBy','format','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','limit','order','sort','pick','filter','where','options','includeAll','include','findAll','rows','catch','show','params','merge','find','create','body','duration','createdAt','closedAt','describe','download','../../components/encryptor','join','server/files/screen_recordings','value','%s.cypher','existsSync','decryptFile','secrets','recording','root','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','Entity\x20not\x20found','info','isNil','File:\x20\x22','unlinkSync','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis'];(function(_0x404a98,_0x1fb37d){var _0x3c299d=function(_0x27cd3d){while(--_0x27cd3d){_0x404a98['push'](_0x404a98['shift']());}};_0x3c299d(++_0x1fb37d);}(_0x98a8,0x12c));var _0x898a=function(_0x302d6f,_0x3a5ef9){_0x302d6f=_0x302d6f-0x0;var _0x5a62df=_0x98a8[_0x302d6f];return _0x5a62df;};'use strict';var emlformat=require(_0x898a('0x0'));var rimraf=require(_0x898a('0x1'));var zipdir=require(_0x898a('0x2'));var jsonpatch=require(_0x898a('0x3'));var rp=require(_0x898a('0x4'));var moment=require(_0x898a('0x5'));var BPromise=require(_0x898a('0x6'));var Mustache=require('mustache');var util=require(_0x898a('0x7'));var path=require(_0x898a('0x8'));var sox=require(_0x898a('0x9'));var csv=require(_0x898a('0xa'));var ejs=require(_0x898a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x898a('0xc'));var squel=require('squel');var crypto=require(_0x898a('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x898a('0xe'));var toCsv=require(_0x898a('0xa'));var querystring=require(_0x898a('0xf'));var Papa=require(_0x898a('0x10'));var Redis=require(_0x898a('0x11'));var authService=require(_0x898a('0x12'));var qs=require(_0x898a('0x13'));var as=require(_0x898a('0x14'));var hardwareService=require(_0x898a('0x15'));var logger=require('../../config/logger')(_0x898a('0x16'));var utils=require('../../config/utils');var config=require(_0x898a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x898a('0x18'))['db'];function respondWithStatusCode(_0x2c76b7,_0x364a23){_0x364a23=_0x364a23||0xcc;return function(_0x5f5e06){if(_0x5f5e06){return _0x2c76b7['sendStatus'](_0x364a23);}return _0x2c76b7['status'](_0x364a23)[_0x898a('0x19')]();};}function respondWithResult(_0x1f5be4,_0xb24335){_0xb24335=_0xb24335||0xc8;return function(_0x116fbe){if(_0x116fbe){return _0x1f5be4[_0x898a('0x1a')](_0xb24335)[_0x898a('0x1b')](_0x116fbe);}};}function respondWithFilteredResult(_0x506023,_0x47033c){return function(_0x53a4b8){if(_0x53a4b8){var _0x3fec7a=typeof _0x47033c['offset']===_0x898a('0x1c')&&typeof _0x47033c['limit']===_0x898a('0x1c');var _0x56f8f9=_0x53a4b8[_0x898a('0x1d')];var _0x3197f7=_0x3fec7a?0x0:_0x47033c[_0x898a('0x1e')];var _0x4ddd4d=_0x3fec7a?_0x53a4b8[_0x898a('0x1d')]:_0x47033c['offset']+_0x47033c['limit'];var _0x3f8af4;if(_0x4ddd4d>=_0x56f8f9){_0x4ddd4d=_0x56f8f9;_0x3f8af4=0xc8;}else{_0x3f8af4=0xce;}_0x506023[_0x898a('0x1a')](_0x3f8af4);return _0x506023['set']('Content-Range',_0x3197f7+'-'+_0x4ddd4d+'/'+_0x56f8f9)[_0x898a('0x1b')](_0x53a4b8);}return null;};}function patchUpdates(_0x26449a){return function(_0x38a8f0){try{jsonpatch[_0x898a('0x1f')](_0x38a8f0,_0x26449a,!![]);}catch(_0x2da52d){return BPromise[_0x898a('0x20')](_0x2da52d);}return _0x38a8f0[_0x898a('0x21')]();};}function saveUpdates(_0x483212,_0x247cfc){return function(_0x50718e){if(_0x50718e){return _0x50718e[_0x898a('0x22')](_0x483212)[_0x898a('0x23')](function(_0x30495a){return _0x30495a;});}return null;};}function removeEntity(_0x310bfa,_0x4e254d){return function(_0x274cdf){if(_0x274cdf){return _0x274cdf[_0x898a('0x24')]()[_0x898a('0x23')](function(){_0x310bfa[_0x898a('0x1a')](0xcc)[_0x898a('0x19')]();});}};}function handleEntityNotFound(_0x1426e3,_0x5b7719){return function(_0x20bde0){if(!_0x20bde0){_0x1426e3['sendStatus'](0x194);}return _0x20bde0;};}function handleError(_0x513c6b,_0x53ddb2){_0x53ddb2=_0x53ddb2||0x1f4;return function(_0x3678be){logger[_0x898a('0x25')](_0x3678be[_0x898a('0x26')]);if(_0x3678be[_0x898a('0x27')]){delete _0x3678be[_0x898a('0x27')];}_0x513c6b[_0x898a('0x1a')](_0x53ddb2)[_0x898a('0x28')](_0x3678be);};}exports[_0x898a('0x29')]=function(_0xd31922,_0x58149d){var _0x4b3e68={},_0x47f1ed={},_0xe9c33d={'count':0x0,'rows':[]};var _0x62fe93=_[_0x898a('0x2a')](db[_0x898a('0x2b')][_0x898a('0x2c')],function(_0x560000){return{'name':_0x560000[_0x898a('0x2d')],'type':_0x560000[_0x898a('0x2e')][_0x898a('0x2f')]};});_0x47f1ed[_0x898a('0x30')]=_[_0x898a('0x31')](_[_0x898a('0x2a')](_0x62fe93,'name'),[_0x898a('0x32')]);_0x47f1ed[_0x898a('0x33')]=_[_0x898a('0x34')](_0xd31922[_0x898a('0x33')]);_0x47f1ed[_0x898a('0x35')]=_['intersection'](_0x47f1ed['model'],_0x47f1ed[_0x898a('0x33')]);_0x4b3e68[_0x898a('0x36')]=_[_0x898a('0x37')](_0x47f1ed['model'],qs[_0x898a('0x38')](_0xd31922[_0x898a('0x33')][_0x898a('0x38')]));_0x4b3e68[_0x898a('0x36')]=_0x4b3e68[_0x898a('0x36')][_0x898a('0x39')]?_0x4b3e68[_0x898a('0x36')]:_0x47f1ed[_0x898a('0x30')];if(!_0xd31922['query'][_0x898a('0x3a')]('nolimit')){_0x4b3e68['limit']=qs[_0x898a('0x3b')](_0xd31922['query'][_0x898a('0x3b')]);_0x4b3e68['offset']=qs[_0x898a('0x1e')](_0xd31922['query'][_0x898a('0x1e')]);}_0x4b3e68[_0x898a('0x3c')]=qs[_0x898a('0x3d')](_0xd31922['query']['sort']);_0x4b3e68['where']=qs[_0x898a('0x35')](_[_0x898a('0x3e')](_0xd31922['query'],_0x47f1ed[_0x898a('0x35')]),_0x62fe93);if(_0xd31922[_0x898a('0x33')][_0x898a('0x3f')]){_0x4b3e68[_0x898a('0x40')]=_['merge'](_0x4b3e68['where'],{'$or':_[_0x898a('0x2a')](_0x62fe93,function(_0x454c8c){if(_0x454c8c['type']!=='VIRTUAL'){var _0x168f92={};_0x168f92[_0x454c8c[_0x898a('0x27')]]={'$like':'%'+_0xd31922[_0x898a('0x33')][_0x898a('0x3f')]+'%'};return _0x168f92;}})});}_0x4b3e68=_['merge']({},_0x4b3e68,_0xd31922[_0x898a('0x41')]);var _0x369c02={'where':_0x4b3e68['where']};return db['ScreenRecording']['count'](_0x369c02)[_0x898a('0x23')](function(_0x477a9d){_0xe9c33d[_0x898a('0x1d')]=_0x477a9d;if(_0xd31922[_0x898a('0x33')][_0x898a('0x42')]){_0x4b3e68[_0x898a('0x43')]=[{'all':!![]}];}return db[_0x898a('0x2b')][_0x898a('0x44')](_0x4b3e68);})[_0x898a('0x23')](function(_0x235fcf){_0xe9c33d[_0x898a('0x45')]=_0x235fcf;return _0xe9c33d;})[_0x898a('0x23')](respondWithFilteredResult(_0x58149d,_0x4b3e68))[_0x898a('0x46')](handleError(_0x58149d,null));};exports[_0x898a('0x47')]=function(_0x21f307,_0x4c8628){var _0x26ad34={'raw':![],'where':{'id':_0x21f307[_0x898a('0x48')]['id']}},_0x11c437={};_0x11c437['model']=_[_0x898a('0x34')](db[_0x898a('0x2b')][_0x898a('0x2c')]);_0x11c437[_0x898a('0x33')]=_[_0x898a('0x34')](_0x21f307[_0x898a('0x33')]);_0x11c437[_0x898a('0x35')]=_[_0x898a('0x37')](_0x11c437['model'],_0x11c437[_0x898a('0x33')]);_0x26ad34[_0x898a('0x36')]=_[_0x898a('0x37')](_0x11c437[_0x898a('0x30')],qs['fields'](_0x21f307[_0x898a('0x33')][_0x898a('0x38')]));_0x26ad34['attributes']=_0x26ad34[_0x898a('0x36')]['length']?_0x26ad34[_0x898a('0x36')]:_0x11c437['model'];if(_0x21f307['query'][_0x898a('0x42')]){_0x26ad34['include']=[{'all':!![]}];}_0x26ad34=_[_0x898a('0x49')]({},_0x26ad34,_0x21f307[_0x898a('0x41')]);return db['ScreenRecording'][_0x898a('0x4a')](_0x26ad34)[_0x898a('0x23')](handleEntityNotFound(_0x4c8628,null))['then'](respondWithResult(_0x4c8628,null))[_0x898a('0x46')](handleError(_0x4c8628,null));};exports[_0x898a('0x4b')]=function(_0x11a0a3,_0x118240){return db['ScreenRecording'][_0x898a('0x4b')](_0x11a0a3[_0x898a('0x4c')],{})['then'](respondWithResult(_0x118240,0xc9))[_0x898a('0x46')](handleError(_0x118240,null));};exports[_0x898a('0x22')]=function(_0x4ab441,_0x28525b){if(_0x4ab441['body']['id']){delete _0x4ab441[_0x898a('0x4c')]['id'];}delete _0x4ab441[_0x898a('0x4c')][_0x898a('0x4d')];delete _0x4ab441['body'][_0x898a('0x4e')];delete _0x4ab441[_0x898a('0x4c')][_0x898a('0x4f')];delete _0x4ab441[_0x898a('0x4c')]['value'];return db[_0x898a('0x2b')]['find']({'where':{'id':_0x4ab441[_0x898a('0x48')]['id']}})[_0x898a('0x23')](handleEntityNotFound(_0x28525b,null))[_0x898a('0x23')](saveUpdates(_0x4ab441['body'],null))[_0x898a('0x23')](respondWithResult(_0x28525b,null))[_0x898a('0x46')](handleError(_0x28525b,null));};exports[_0x898a('0x50')]=function(_0x5d325a,_0x52f8c6){return db[_0x898a('0x2b')][_0x898a('0x50')]()[_0x898a('0x23')](respondWithResult(_0x52f8c6,null))[_0x898a('0x46')](handleError(_0x52f8c6,null));};exports[_0x898a('0x51')]=function(_0x36b63a,_0x369f33,_0x6c0f07){var _0x289167=require(_0x898a('0x52'));var _0x2382a9=![];var _0x5e9329={};if(_0x36b63a[_0x898a('0x33')][_0x898a('0x2e')]&&_0x36b63a['query'][_0x898a('0x2e')]==='uniqueid'){_0x5e9329['uniqueid']=_0x36b63a[_0x898a('0x48')]['id'];}else{_0x5e9329['id']=_0x36b63a[_0x898a('0x48')]['id'];}return db[_0x898a('0x2b')]['find']({'where':_0x5e9329,'attributes':['id','value'],'raw':!![]})[_0x898a('0x23')](handleEntityNotFound(_0x369f33,null))[_0x898a('0x23')](function(_0x515725){if(_0x515725){var _0xaa96f7=path[_0x898a('0x53')](config['root'],_0x898a('0x54'),_0x515725[_0x898a('0x55')]);var _0x3122cc=util['format'](_0x898a('0x56'),_0xaa96f7);if(fs[_0x898a('0x57')](_0x3122cc)){_0x2382a9=!![];return _0x289167[_0x898a('0x58')](_0x3122cc,_0xaa96f7,config[_0x898a('0x59')][_0x898a('0x5a')])[_0x898a('0x23')](function(){return _0x515725;});}return _0x515725;}})['then'](function(_0x22a08a){if(_0x22a08a){var _0x4df5f0=path[_0x898a('0x53')](config[_0x898a('0x5b')],_0x898a('0x54'),_0x22a08a[_0x898a('0x55')]);if(!fs[_0x898a('0x57')](_0x4df5f0)){throw new db[(_0x898a('0x5c'))][(_0x898a('0x5d'))](_0x898a('0x5e'));}if(_0x22a08a[_0x898a('0x5f')]){return _0x369f33['download'](_0x4df5f0,_0x22a08a[_0x898a('0x5f')]+path[_0x898a('0x60')](_0x4df5f0),function(){if(_0x2382a9){fs[_0x898a('0x61')](_0x4df5f0);}});}else{return _0x369f33[_0x898a('0x51')](_0x4df5f0,function(_0x219976){if(_0x2382a9){fs[_0x898a('0x61')](_0x4df5f0);}});}}})[_0x898a('0x46')](function(_0x68fd81){if(_0x68fd81[_0x898a('0x62')]===_0x898a('0x5e')){_0x369f33[_0x898a('0x1a')](0x194)[_0x898a('0x28')](_0x898a('0x63'));}else{return handleError(_0x369f33,null);}});};exports[_0x898a('0x24')]=function(_0x22f9ba,_0x5f42ae){return db[_0x898a('0x2b')][_0x898a('0x4a')]({'where':{'id':_0x22f9ba['params']['id']}})[_0x898a('0x23')](function(_0x4583a1){if(_['isNil'](_0x4583a1)){throw new ReferenceError(_0x898a('0x64'));}return _0x4583a1;})[_0x898a('0x23')](function(_0x21f0f8){var _0x1f3f5b=path['join'](config[_0x898a('0x5b')],_0x898a('0x54'),_0x21f0f8[_0x898a('0x55')]);logger[_0x898a('0x65')]('cancellazione\x20fisica\x20documento\x20%s',_0x1f3f5b);if(!_[_0x898a('0x66')](_0x21f0f8[_0x898a('0x55')])&&fs['existsSync'](_0x1f3f5b)){logger[_0x898a('0x65')](_0x898a('0x67')+_0x1f3f5b+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x898a('0x68')](_0x1f3f5b);}_0x1f3f5b=_0x1f3f5b+'.cypher';if(!_[_0x898a('0x66')](_0x21f0f8['value'])&&fs['existsSync'](_0x1f3f5b)){logger['info'](_0x898a('0x67')+_0x1f3f5b+_0x898a('0x69'));fs[_0x898a('0x68')](_0x1f3f5b);}return _0x21f0f8;})[_0x898a('0x23')](function(_0x5e0535){if(!_0x5e0535)throw new InternalError();return _0x5e0535['destroy']();})[_0x898a('0x23')](function(){_0x5f42ae[_0x898a('0x1a')](0xcc)[_0x898a('0x19')]();})[_0x898a('0x46')](handleError(_0x5f42ae,null));};
\ No newline at end of file
+var _0xa41a=['unlink','message','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','json','undefined','limit','count','offset','set','save','update','destroy','then','error','stack','name','index','map','rawAttributes','type','key','differenceBy','keys','query','filters','intersection','attributes','fields','length','model','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','ScreenRecording','includeAll','findAll','rows','params','include','find','catch','create','body','createdAt','value','describe','download','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','%s.cypher','secrets','existsSync','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname'];(function(_0x3bd5eb,_0x47e563){var _0x3efe38=function(_0x138b2e){while(--_0x138b2e){_0x3bd5eb['push'](_0x3bd5eb['shift']());}};_0x3efe38(++_0x47e563);}(_0xa41a,0x6b));var _0xaa41=function(_0x1ce126,_0x1f6258){_0x1ce126=_0x1ce126-0x0;var _0x5efec4=_0xa41a[_0x1ce126];return _0x5efec4;};'use strict';var emlformat=require(_0xaa41('0x0'));var rimraf=require(_0xaa41('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaa41('0x2'));var rp=require(_0xaa41('0x3'));var moment=require(_0xaa41('0x4'));var BPromise=require(_0xaa41('0x5'));var Mustache=require(_0xaa41('0x6'));var util=require(_0xaa41('0x7'));var path=require(_0xaa41('0x8'));var sox=require(_0xaa41('0x9'));var csv=require('to-csv');var ejs=require(_0xaa41('0xa'));var fs=require('fs');var fs_extra=require(_0xaa41('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xaa41('0xc'));var jsforce=require(_0xaa41('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xaa41('0xe'));var querystring=require(_0xaa41('0xf'));var Papa=require(_0xaa41('0x10'));var Redis=require(_0xaa41('0x11'));var authService=require(_0xaa41('0x12'));var qs=require(_0xaa41('0x13'));var as=require(_0xaa41('0x14'));var hardwareService=require(_0xaa41('0x15'));var logger=require(_0xaa41('0x16'))('api');var utils=require(_0xaa41('0x17'));var config=require(_0xaa41('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1d0a54,_0x518b5b){_0x518b5b=_0x518b5b||0xcc;return function(_0x19bd69){if(_0x19bd69){return _0x1d0a54[_0xaa41('0x19')](_0x518b5b);}return _0x1d0a54[_0xaa41('0x1a')](_0x518b5b)[_0xaa41('0x1b')]();};}function respondWithResult(_0x6f9ade,_0x4eaf81){_0x4eaf81=_0x4eaf81||0xc8;return function(_0x1e9d7f){if(_0x1e9d7f){return _0x6f9ade[_0xaa41('0x1a')](_0x4eaf81)[_0xaa41('0x1c')](_0x1e9d7f);}};}function respondWithFilteredResult(_0x1ef7d9,_0x2a6988){return function(_0x2005ae){if(_0x2005ae){var _0x1e1e02=typeof _0x2a6988['offset']===_0xaa41('0x1d')&&typeof _0x2a6988[_0xaa41('0x1e')]===_0xaa41('0x1d');var _0x391b01=_0x2005ae[_0xaa41('0x1f')];var _0xd20ddf=_0x1e1e02?0x0:_0x2a6988[_0xaa41('0x20')];var _0x46e6d3=_0x1e1e02?_0x2005ae[_0xaa41('0x1f')]:_0x2a6988['offset']+_0x2a6988['limit'];var _0x1f502a;if(_0x46e6d3>=_0x391b01){_0x46e6d3=_0x391b01;_0x1f502a=0xc8;}else{_0x1f502a=0xce;}_0x1ef7d9[_0xaa41('0x1a')](_0x1f502a);return _0x1ef7d9[_0xaa41('0x21')]('Content-Range',_0xd20ddf+'-'+_0x46e6d3+'/'+_0x391b01)[_0xaa41('0x1c')](_0x2005ae);}return null;};}function patchUpdates(_0x1f692b){return function(_0x4e768e){try{jsonpatch['apply'](_0x4e768e,_0x1f692b,!![]);}catch(_0x1b1910){return BPromise['reject'](_0x1b1910);}return _0x4e768e[_0xaa41('0x22')]();};}function saveUpdates(_0x209c83,_0x3e2175){return function(_0x1f27f3){if(_0x1f27f3){return _0x1f27f3[_0xaa41('0x23')](_0x209c83)['then'](function(_0x43c430){return _0x43c430;});}return null;};}function removeEntity(_0x43a85c,_0x448a21){return function(_0x21f596){if(_0x21f596){return _0x21f596[_0xaa41('0x24')]()[_0xaa41('0x25')](function(){_0x43a85c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x16aec5,_0x527cac){return function(_0x493a10){if(!_0x493a10){_0x16aec5[_0xaa41('0x19')](0x194);}return _0x493a10;};}function handleError(_0x59707f,_0x536bed){_0x536bed=_0x536bed||0x1f4;return function(_0x2d0ac0){logger[_0xaa41('0x26')](_0x2d0ac0[_0xaa41('0x27')]);if(_0x2d0ac0[_0xaa41('0x28')]){delete _0x2d0ac0[_0xaa41('0x28')];}_0x59707f[_0xaa41('0x1a')](_0x536bed)['send'](_0x2d0ac0);};}exports[_0xaa41('0x29')]=function(_0x1f0275,_0x63c18c){var _0x9a16e3={},_0x1d8c2b={},_0x4466a3={'count':0x0,'rows':[]};var _0x30f88e=_[_0xaa41('0x2a')](db['ScreenRecording'][_0xaa41('0x2b')],function(_0x48b48b){return{'name':_0x48b48b['fieldName'],'type':_0x48b48b[_0xaa41('0x2c')][_0xaa41('0x2d')]};});_0x1d8c2b['model']=_[_0xaa41('0x2e')](_[_0xaa41('0x2a')](_0x30f88e,'name'),['format']);_0x1d8c2b['query']=_[_0xaa41('0x2f')](_0x1f0275[_0xaa41('0x30')]);_0x1d8c2b[_0xaa41('0x31')]=_[_0xaa41('0x32')](_0x1d8c2b['model'],_0x1d8c2b[_0xaa41('0x30')]);_0x9a16e3[_0xaa41('0x33')]=_[_0xaa41('0x32')](_0x1d8c2b['model'],qs[_0xaa41('0x34')](_0x1f0275[_0xaa41('0x30')][_0xaa41('0x34')]));_0x9a16e3['attributes']=_0x9a16e3[_0xaa41('0x33')][_0xaa41('0x35')]?_0x9a16e3['attributes']:_0x1d8c2b[_0xaa41('0x36')];if(!_0x1f0275[_0xaa41('0x30')][_0xaa41('0x37')]('nolimit')){_0x9a16e3[_0xaa41('0x1e')]=qs['limit'](_0x1f0275[_0xaa41('0x30')][_0xaa41('0x1e')]);_0x9a16e3[_0xaa41('0x20')]=qs['offset'](_0x1f0275['query']['offset']);}_0x9a16e3[_0xaa41('0x38')]=qs[_0xaa41('0x39')](_0x1f0275[_0xaa41('0x30')][_0xaa41('0x39')]);_0x9a16e3['where']=qs['filters'](_[_0xaa41('0x3a')](_0x1f0275[_0xaa41('0x30')],_0x1d8c2b[_0xaa41('0x31')]),_0x30f88e);if(_0x1f0275[_0xaa41('0x30')][_0xaa41('0x3b')]){_0x9a16e3[_0xaa41('0x3c')]=_[_0xaa41('0x3d')](_0x9a16e3['where'],{'$or':_[_0xaa41('0x2a')](_0x30f88e,function(_0x5cf689){if(_0x5cf689[_0xaa41('0x2c')]!==_0xaa41('0x3e')){var _0x57f1bf={};_0x57f1bf[_0x5cf689['name']]={'$like':'%'+_0x1f0275[_0xaa41('0x30')][_0xaa41('0x3b')]+'%'};return _0x57f1bf;}})});}_0x9a16e3=_['merge']({},_0x9a16e3,_0x1f0275[_0xaa41('0x3f')]);var _0x563687={'where':_0x9a16e3[_0xaa41('0x3c')]};return db[_0xaa41('0x40')][_0xaa41('0x1f')](_0x563687)[_0xaa41('0x25')](function(_0x3e6cac){_0x4466a3[_0xaa41('0x1f')]=_0x3e6cac;if(_0x1f0275[_0xaa41('0x30')][_0xaa41('0x41')]){_0x9a16e3['include']=[{'all':!![]}];}return db[_0xaa41('0x40')][_0xaa41('0x42')](_0x9a16e3);})[_0xaa41('0x25')](function(_0x398c35){_0x4466a3[_0xaa41('0x43')]=_0x398c35;return _0x4466a3;})[_0xaa41('0x25')](respondWithFilteredResult(_0x63c18c,_0x9a16e3))['catch'](handleError(_0x63c18c,null));};exports['show']=function(_0x87e2f4,_0x4f9086){var _0x1ed366={'raw':![],'where':{'id':_0x87e2f4[_0xaa41('0x44')]['id']}},_0x215896={};_0x215896[_0xaa41('0x36')]=_[_0xaa41('0x2f')](db[_0xaa41('0x40')][_0xaa41('0x2b')]);_0x215896['query']=_[_0xaa41('0x2f')](_0x87e2f4['query']);_0x215896['filters']=_[_0xaa41('0x32')](_0x215896['model'],_0x215896['query']);_0x1ed366['attributes']=_[_0xaa41('0x32')](_0x215896['model'],qs[_0xaa41('0x34')](_0x87e2f4[_0xaa41('0x30')]['fields']));_0x1ed366['attributes']=_0x1ed366[_0xaa41('0x33')][_0xaa41('0x35')]?_0x1ed366[_0xaa41('0x33')]:_0x215896[_0xaa41('0x36')];if(_0x87e2f4[_0xaa41('0x30')][_0xaa41('0x41')]){_0x1ed366[_0xaa41('0x45')]=[{'all':!![]}];}_0x1ed366=_[_0xaa41('0x3d')]({},_0x1ed366,_0x87e2f4[_0xaa41('0x3f')]);return db['ScreenRecording'][_0xaa41('0x46')](_0x1ed366)[_0xaa41('0x25')](handleEntityNotFound(_0x4f9086,null))[_0xaa41('0x25')](respondWithResult(_0x4f9086,null))[_0xaa41('0x47')](handleError(_0x4f9086,null));};exports[_0xaa41('0x48')]=function(_0x1d6112,_0x538b12){return db[_0xaa41('0x40')][_0xaa41('0x48')](_0x1d6112[_0xaa41('0x49')],{})[_0xaa41('0x25')](respondWithResult(_0x538b12,0xc9))['catch'](handleError(_0x538b12,null));};exports[_0xaa41('0x23')]=function(_0x5787f3,_0x49fedd){if(_0x5787f3[_0xaa41('0x49')]['id']){delete _0x5787f3[_0xaa41('0x49')]['id'];}delete _0x5787f3[_0xaa41('0x49')]['duration'];delete _0x5787f3[_0xaa41('0x49')][_0xaa41('0x4a')];delete _0x5787f3[_0xaa41('0x49')]['closedAt'];delete _0x5787f3[_0xaa41('0x49')][_0xaa41('0x4b')];return db[_0xaa41('0x40')][_0xaa41('0x46')]({'where':{'id':_0x5787f3[_0xaa41('0x44')]['id']}})[_0xaa41('0x25')](handleEntityNotFound(_0x49fedd,null))[_0xaa41('0x25')](saveUpdates(_0x5787f3[_0xaa41('0x49')],null))['then'](respondWithResult(_0x49fedd,null))[_0xaa41('0x47')](handleError(_0x49fedd,null));};exports['describe']=function(_0x5ae65e,_0x1bdcd6){return db[_0xaa41('0x40')][_0xaa41('0x4c')]()[_0xaa41('0x25')](respondWithResult(_0x1bdcd6,null))[_0xaa41('0x47')](handleError(_0x1bdcd6,null));};exports[_0xaa41('0x4d')]=function(_0x48c4c7,_0x3c5082,_0x519e39){var _0xecb54=require(_0xaa41('0x4e'));var _0x1d518f=![];var _0x4f9e92={};if(_0x48c4c7[_0xaa41('0x30')][_0xaa41('0x2c')]&&_0x48c4c7['query'][_0xaa41('0x2c')]===_0xaa41('0x4f')){_0x4f9e92[_0xaa41('0x4f')]=_0x48c4c7['params']['id'];}else{_0x4f9e92['id']=_0x48c4c7[_0xaa41('0x44')]['id'];}return db[_0xaa41('0x40')]['find']({'where':_0x4f9e92,'attributes':['id','value'],'raw':!![]})[_0xaa41('0x25')](handleEntityNotFound(_0x3c5082,null))[_0xaa41('0x25')](function(_0x3a29d2){if(_0x3a29d2){var _0x4d20c6=path[_0xaa41('0x50')](config[_0xaa41('0x51')],_0xaa41('0x52'),_0x3a29d2[_0xaa41('0x4b')]);var _0x2abb78=util['format'](_0xaa41('0x53'),_0x4d20c6);if(fs['existsSync'](_0x2abb78)){_0x1d518f=!![];return _0xecb54['decryptFile'](_0x2abb78,_0x4d20c6,config[_0xaa41('0x54')]['recording'])[_0xaa41('0x25')](function(){return _0x3a29d2;});}return _0x3a29d2;}})[_0xaa41('0x25')](function(_0x169ddf){if(_0x169ddf){var _0x5e83e1=path[_0xaa41('0x50')](config[_0xaa41('0x51')],_0xaa41('0x52'),_0x169ddf[_0xaa41('0x4b')]);if(!fs[_0xaa41('0x55')](_0x5e83e1)){throw new db[(_0xaa41('0x56'))][(_0xaa41('0x57'))](_0xaa41('0x58'));}if(_0x169ddf[_0xaa41('0x59')]){return _0x3c5082['download'](_0x5e83e1,_0x169ddf[_0xaa41('0x59')]+path[_0xaa41('0x5a')](_0x5e83e1),function(){if(_0x1d518f){fs[_0xaa41('0x5b')](_0x5e83e1);}});}else{return _0x3c5082['download'](_0x5e83e1,function(_0x3fe47a){if(_0x1d518f){fs[_0xaa41('0x5b')](_0x5e83e1);}});}}})[_0xaa41('0x47')](function(_0x134579){if(_0x134579[_0xaa41('0x5c')]===_0xaa41('0x58')){_0x3c5082[_0xaa41('0x1a')](0x194)['send']('Not\x20found');}else{return handleError(_0x3c5082,null);}});};exports['destroy']=function(_0x540325,_0x4ec357){return db['ScreenRecording'][_0xaa41('0x46')]({'where':{'id':_0x540325['params']['id']}})['then'](function(_0x24c6f3){if(_[_0xaa41('0x5d')](_0x24c6f3)){throw new ReferenceError(_0xaa41('0x5e'));}return _0x24c6f3;})[_0xaa41('0x25')](function(_0x5cabc4){var _0x244d41=path[_0xaa41('0x50')](config[_0xaa41('0x51')],_0xaa41('0x52'),_0x5cabc4[_0xaa41('0x4b')]);logger[_0xaa41('0x5f')](_0xaa41('0x60'),_0x244d41);if(!_[_0xaa41('0x5d')](_0x5cabc4[_0xaa41('0x4b')])&&fs['existsSync'](_0x244d41)){logger[_0xaa41('0x5f')](_0xaa41('0x61')+_0x244d41+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x244d41);}_0x244d41=_0x244d41+'.cypher';if(!_[_0xaa41('0x5d')](_0x5cabc4['value'])&&fs[_0xaa41('0x55')](_0x244d41)){logger['info'](_0xaa41('0x61')+_0x244d41+_0xaa41('0x62'));fs['unlinkSync'](_0x244d41);}return _0x5cabc4;})[_0xaa41('0x25')](function(_0x33efc5){if(!_0x33efc5)throw new InternalError();return _0x33efc5[_0xaa41('0x24')]();})[_0xaa41('0x25')](function(){_0x4ec357['status'](0xcc)['end']();})[_0xaa41('0x47')](handleError(_0x4ec357,null));};
\ No newline at end of file
index 4a16baa..dd062e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7ed=['./screenRecording.attributes','exports','ScreenRecording','screen_recordings','interactionid','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x2bd443,_0x3b60d8){var _0x45159a=function(_0x1ddbec){while(--_0x1ddbec){_0x2bd443['push'](_0x2bd443['shift']());}};_0x45159a(++_0x3b60d8);}(_0xb7ed,0x164));var _0xdb7e=function(_0x152ea8,_0x3fb53f){_0x152ea8=_0x152ea8-0x0;var _0x4c0ebe=_0xb7ed[_0x152ea8];return _0x4c0ebe;};'use strict';var _=require(_0xdb7e('0x0'));var util=require(_0xdb7e('0x1'));var logger=require(_0xdb7e('0x2'))('api');var moment=require(_0xdb7e('0x3'));var BPromise=require(_0xdb7e('0x4'));var rp=require(_0xdb7e('0x5'));var fs=require('fs');var path=require(_0xdb7e('0x6'));var rimraf=require(_0xdb7e('0x7'));var config=require('../../config/environment');var attributes=require(_0xdb7e('0x8'));module[_0xdb7e('0x9')]=function(_0x16995e,_0x472854){return _0x16995e['define'](_0xdb7e('0xa'),attributes,{'tableName':_0xdb7e('0xb'),'paranoid':![],'indexes':[{'name':_0xdb7e('0xc'),'fields':[_0xdb7e('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb9d6=['define','interactionid','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x26ed29,_0x2288f1){var _0x26182c=function(_0x23dc71){while(--_0x23dc71){_0x26ed29['push'](_0x26ed29['shift']());}};_0x26182c(++_0x2288f1);}(_0xb9d6,0x183));var _0x6b9d=function(_0xfbceb4,_0x392f3b){_0xfbceb4=_0xfbceb4-0x0;var _0x563dbe=_0xb9d6[_0xfbceb4];return _0x563dbe;};'use strict';var _=require(_0x6b9d('0x0'));var util=require('util');var logger=require(_0x6b9d('0x1'))(_0x6b9d('0x2'));var moment=require(_0x6b9d('0x3'));var BPromise=require(_0x6b9d('0x4'));var rp=require(_0x6b9d('0x5'));var fs=require('fs');var path=require(_0x6b9d('0x6'));var rimraf=require(_0x6b9d('0x7'));var config=require(_0x6b9d('0x8'));var attributes=require('./screenRecording.attributes');module['exports']=function(_0x2c488c,_0x4b2a0c){return _0x2c488c[_0x6b9d('0x9')]('ScreenRecording',attributes,{'tableName':'screen_recordings','paranoid':![],'indexes':[{'name':'interactionid','fields':[_0x6b9d('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 624765f..6ef5702 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x593d=['ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x593d,0xce));var _0xd593=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x593d[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var util=require(_0xd593('0x0'));var moment=require(_0xd593('0x1'));var BPromise=require(_0xd593('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd593('0x3'));var db=require(_0xd593('0x4'))['db'];var utils=require(_0xd593('0x5'));var logger=require('../../config/logger')(_0xd593('0x6'));var config=require(_0xd593('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xd593('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x185da7,_0x40e446,_0x45e56e){return new BPromise(function(_0x17f5e1,_0x50182d){return client['request'](_0x185da7,_0x45e56e)['then'](function(_0x138326){logger[_0xd593('0x9')](_0xd593('0xa'),_0x40e446,_0xd593('0xb'));logger[_0xd593('0xc')](_0xd593('0xd'),_0x40e446,'request\x20sent',JSON[_0xd593('0xe')](_0x138326));if(_0x138326[_0xd593('0xf')]){if(_0x138326['error'][_0xd593('0x10')]===0x1f4){logger[_0xd593('0xf')](_0xd593('0xa'),_0x40e446,_0x138326[_0xd593('0xf')][_0xd593('0x11')]);return _0x50182d(_0x138326['error']['message']);}logger['error']('ScreenRecording,\x20%s,\x20%s',_0x40e446,_0x138326[_0xd593('0xf')][_0xd593('0x11')]);return _0x17f5e1(_0x138326[_0xd593('0xf')][_0xd593('0x11')]);}else{logger[_0xd593('0x9')]('ScreenRecording,\x20%s,\x20%s',_0x40e446,_0xd593('0xb'));_0x17f5e1(_0x138326['result'][_0xd593('0x11')]);}})[_0xd593('0x12')](function(_0x3747aa){logger[_0xd593('0xf')]('ScreenRecording,\x20%s,\x20%s',_0x40e446,_0x3747aa);_0x50182d(_0x3747aa);});});}
\ No newline at end of file
+var _0xe625=['info','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','ScreenRecording,\x20%s,\x20%s','message','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xe625,0x136));var _0x5e62=function(_0x44eb2f,_0x519693){_0x44eb2f=_0x44eb2f-0x0;var _0x44aaaa=_0xe625[_0x44eb2f];return _0x44aaaa;};'use strict';var _=require(_0x5e62('0x0'));var util=require(_0x5e62('0x1'));var moment=require('moment');var BPromise=require(_0x5e62('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5e62('0x3'));var db=require(_0x5e62('0x4'))['db'];var utils=require(_0x5e62('0x5'));var logger=require(_0x5e62('0x6'))(_0x5e62('0x7'));var config=require(_0x5e62('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x5e62('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xfc1462,_0x50b92f,_0x33f63c){return new BPromise(function(_0x5a64d2,_0x5f0c11){return client['request'](_0xfc1462,_0x33f63c)['then'](function(_0x27ba33){logger[_0x5e62('0xa')]('ScreenRecording,\x20%s,\x20%s',_0x50b92f,_0x5e62('0xb'));logger[_0x5e62('0xc')](_0x5e62('0xd'),_0x50b92f,_0x5e62('0xb'),JSON[_0x5e62('0xe')](_0x27ba33));if(_0x27ba33[_0x5e62('0xf')]){if(_0x27ba33[_0x5e62('0xf')][_0x5e62('0x10')]===0x1f4){logger[_0x5e62('0xf')](_0x5e62('0x11'),_0x50b92f,_0x27ba33[_0x5e62('0xf')]['message']);return _0x5f0c11(_0x27ba33['error']['message']);}logger[_0x5e62('0xf')](_0x5e62('0x11'),_0x50b92f,_0x27ba33[_0x5e62('0xf')][_0x5e62('0x12')]);return _0x5a64d2(_0x27ba33['error'][_0x5e62('0x12')]);}else{logger[_0x5e62('0xa')](_0x5e62('0x11'),_0x50b92f,_0x5e62('0xb'));_0x5a64d2(_0x27ba33['result']['message']);}})[_0x5e62('0x13')](function(_0x37cd96){logger[_0x5e62('0xf')](_0x5e62('0x11'),_0x50b92f,_0x37cd96);_0x5f0c11(_0x37cd96);});});}
\ No newline at end of file
index 736e457..626dbb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x566a=['preferred','addPreferred','favicon','addFavicon','put','isAuthenticated','update','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get','/now','getDate','show','/:id/logo','/:id/logo_login','gdpr','/:id/preferred','/:id/favicon','getFavicon','join','root','server/files/images/logos/','format','%s%s','extname','originalname','post','single','file','addLogo','diskStorage','logologin','addLogoLogin'];(function(_0x35b18a,_0x6b2fbe){var _0x4db1bd=function(_0x389e62){while(--_0x389e62){_0x35b18a['push'](_0x35b18a['shift']());}};_0x4db1bd(++_0x6b2fbe);}(_0x566a,0xd0));var _0xa566=function(_0xb99732,_0x23c363){_0xb99732=_0xb99732-0x0;var _0x5ce2d5=_0x566a[_0xb99732];return _0x5ce2d5;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xa566('0x0'));var timeout=require(_0xa566('0x1'));var express=require(_0xa566('0x2'));var router=express[_0xa566('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xa566('0x4'));var interaction=require(_0xa566('0x5'));var config=require(_0xa566('0x6'));var controller=require(_0xa566('0x7'));router[_0xa566('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xa566('0x9'),controller[_0xa566('0xa')]);router[_0xa566('0x8')]('/:id',controller[_0xa566('0xb')]);router[_0xa566('0x8')](_0xa566('0xc'),controller['getLogo']);router[_0xa566('0x8')](_0xa566('0xd'),controller['getLogoLogin']);router[_0xa566('0x8')]('/:id/gdpr',controller[_0xa566('0xe')]);router[_0xa566('0x8')](_0xa566('0xf'),controller['getPreferred']);router[_0xa566('0x8')](_0xa566('0x10'),controller[_0xa566('0x11')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x529f86,_0x203ccc,_0x11e738){_0x11e738(null,path[_0xa566('0x12')](config[_0xa566('0x13')],_0xa566('0x14')));},'filename':function(_0x396582,_0x2e38e1,_0x5cc63c){_0x5cc63c(null,util[_0xa566('0x15')](_0xa566('0x16'),'logo',path[_0xa566('0x17')](_0x2e38e1[_0xa566('0x18')])));}})});router[_0xa566('0x19')](_0xa566('0xc'),upload[_0xa566('0x1a')](_0xa566('0x1b')),controller[_0xa566('0x1c')]);var upload=multer({'storage':multer[_0xa566('0x1d')]({'destination':function(_0x3bf140,_0x589fa9,_0x5eb737){_0x5eb737(null,path[_0xa566('0x12')](config[_0xa566('0x13')],_0xa566('0x14')));},'filename':function(_0x34e776,_0x53dd6a,_0x467ded){_0x467ded(null,util[_0xa566('0x15')](_0xa566('0x16'),_0xa566('0x1e'),path['extname'](_0x53dd6a['originalname'])));}})});router['post']('/:id/logo_login',upload[_0xa566('0x1a')]('file'),controller[_0xa566('0x1f')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x15c5d7,_0x420036,_0xe9f6b7){_0xe9f6b7(null,path[_0xa566('0x12')](config[_0xa566('0x13')],'server/files/images/logos/'));},'filename':function(_0x30d495,_0x802b58,_0x365677){_0x365677(null,util[_0xa566('0x15')](_0xa566('0x16'),_0xa566('0x20'),path[_0xa566('0x17')](_0x802b58[_0xa566('0x18')])));}})});router[_0xa566('0x19')](_0xa566('0xf'),upload[_0xa566('0x1a')](_0xa566('0x1b')),controller[_0xa566('0x21')]);var upload=multer({'storage':multer[_0xa566('0x1d')]({'destination':function(_0x4285b3,_0x48107d,_0x191147){_0x191147(null,path[_0xa566('0x12')](config[_0xa566('0x13')],_0xa566('0x14')));},'filename':function(_0x43e035,_0x1bb765,_0x30fbdb){_0x30fbdb(null,util[_0xa566('0x15')](_0xa566('0x16'),_0xa566('0x22'),path[_0xa566('0x17')](_0x1bb765[_0xa566('0x18')])));}})});router[_0xa566('0x19')]('/:id/favicon',upload['single']('file'),controller[_0xa566('0x23')]);router[_0xa566('0x24')]('/:id',auth[_0xa566('0x25')](),controller[_0xa566('0x26')]);module[_0xa566('0x27')]=router;
\ No newline at end of file
+var _0xbb8b=['%s%s','logo','extname','originalname','post','single','addLogo','diskStorage','join','root','server/files/images/logos/','logologin','addLogoLogin','file','addPreferred','/:id','update','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/now','getDate','show','/:id/logo','/:id/logo_login','/:id/gdpr','gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','format'];(function(_0x146c0d,_0x59e930){var _0x2dab12=function(_0x3539ab){while(--_0x3539ab){_0x146c0d['push'](_0x146c0d['shift']());}};_0x2dab12(++_0x59e930);}(_0xbb8b,0x101));var _0xbbb8=function(_0x52883c,_0x274494){_0x52883c=_0x52883c-0x0;var _0x1e6ab1=_0xbb8b[_0x52883c];return _0x1e6ab1;};'use strict';var multer=require(_0xbbb8('0x0'));var util=require(_0xbbb8('0x1'));var path=require(_0xbbb8('0x2'));var timeout=require(_0xbbb8('0x3'));var express=require('express');var router=express[_0xbbb8('0x4')]();var fs_extra=require(_0xbbb8('0x5'));var auth=require(_0xbbb8('0x6'));var interaction=require(_0xbbb8('0x7'));var config=require(_0xbbb8('0x8'));var controller=require('./setting.controller');router[_0xbbb8('0x9')]('/',auth[_0xbbb8('0xa')](),controller['index']);router[_0xbbb8('0x9')](_0xbbb8('0xb'),controller[_0xbbb8('0xc')]);router[_0xbbb8('0x9')]('/:id',controller[_0xbbb8('0xd')]);router['get'](_0xbbb8('0xe'),controller['getLogo']);router[_0xbbb8('0x9')](_0xbbb8('0xf'),controller['getLogoLogin']);router[_0xbbb8('0x9')](_0xbbb8('0x10'),controller[_0xbbb8('0x11')]);router[_0xbbb8('0x9')](_0xbbb8('0x12'),controller[_0xbbb8('0x13')]);router[_0xbbb8('0x9')](_0xbbb8('0x14'),controller[_0xbbb8('0x15')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x2cf666,_0x576af2,_0x52a22e){_0x52a22e(null,path['join'](config['root'],'server/files/images/logos/'));},'filename':function(_0x1d07e8,_0x3d3a43,_0x1103c6){_0x1103c6(null,util[_0xbbb8('0x16')](_0xbbb8('0x17'),_0xbbb8('0x18'),path[_0xbbb8('0x19')](_0x3d3a43[_0xbbb8('0x1a')])));}})});router[_0xbbb8('0x1b')]('/:id/logo',upload[_0xbbb8('0x1c')]('file'),controller[_0xbbb8('0x1d')]);var upload=multer({'storage':multer[_0xbbb8('0x1e')]({'destination':function(_0x2a5d1d,_0x18eabf,_0x1811e1){_0x1811e1(null,path[_0xbbb8('0x1f')](config[_0xbbb8('0x20')],_0xbbb8('0x21')));},'filename':function(_0x104965,_0x780214,_0xc76632){_0xc76632(null,util[_0xbbb8('0x16')](_0xbbb8('0x17'),_0xbbb8('0x22'),path['extname'](_0x780214[_0xbbb8('0x1a')])));}})});router['post'](_0xbbb8('0xf'),upload['single']('file'),controller[_0xbbb8('0x23')]);var upload=multer({'storage':multer[_0xbbb8('0x1e')]({'destination':function(_0x3ef008,_0x5d2015,_0x1abdde){_0x1abdde(null,path[_0xbbb8('0x1f')](config[_0xbbb8('0x20')],_0xbbb8('0x21')));},'filename':function(_0x11e277,_0x468157,_0x4801a5){_0x4801a5(null,util[_0xbbb8('0x16')]('%s%s','preferred',path[_0xbbb8('0x19')](_0x468157[_0xbbb8('0x1a')])));}})});router['post'](_0xbbb8('0x12'),upload[_0xbbb8('0x1c')](_0xbbb8('0x24')),controller[_0xbbb8('0x25')]);var upload=multer({'storage':multer[_0xbbb8('0x1e')]({'destination':function(_0x4b10e0,_0x4db7d3,_0xf13bc7){_0xf13bc7(null,path['join'](config[_0xbbb8('0x20')],_0xbbb8('0x21')));},'filename':function(_0x16ca21,_0x37a0ad,_0x49cb4a){_0x49cb4a(null,util[_0xbbb8('0x16')](_0xbbb8('0x17'),'favicon',path[_0xbbb8('0x19')](_0x37a0ad['originalname'])));}})});router['post'](_0xbbb8('0x14'),upload[_0xbbb8('0x1c')](_0xbbb8('0x24')),controller['addFavicon']);router['put'](_0xbbb8('0x26'),auth[_0xbbb8('0xa')](),controller[_0xbbb8('0x27')]);module['exports']=router;
\ No newline at end of file
index 715b974..2002bc0 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(_0x578062,_0x2858e9){var _0x2ba7f5=function(_0x238e56){while(--_0x238e56){_0x578062['push'](_0x578062['shift']());}};_0x2ba7f5(++_0x2858e9);}(_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')]={'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':!![]}};
\ No newline at end of file
+var _0xfa12=['STRING','BOOLEAN','https://www.xcally.com/bar/phonebar/autoupdater.xml','alternate','UNSIGNED','sequelize','exports','min_internal','INTEGER','min_mailbox','/var/opt/motion2/server/files/sounds/converted'];(function(_0x12590d,_0x34ebf4){var _0x391759=function(_0x3e41d9){while(--_0x3e41d9){_0x12590d['push'](_0x12590d['shift']());}};_0x391759(++_0x34ebf4);}(_0xfa12,0x1b2));var _0x2fa1=function(_0x4c8a29,_0x3602a3){_0x4c8a29=_0x4c8a29-0x0;var _0x5c1cd8=_0xfa12[_0x4c8a29];return _0x5c1cd8;};'use strict';var Sequelize=require(_0x2fa1('0x0'));module[_0x2fa1('0x1')]={'min_internal':{'type':Sequelize['INTEGER'](0xb),'unique':_0x2fa1('0x2'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x2fa1('0x3')](0xb),'unique':_0x2fa1('0x4'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x2fa1('0x3')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize['STRING'],'defaultValue':_0x2fa1('0x5')},'logo':{'type':Sequelize[_0x2fa1('0x6')]},'defaultLogo':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x2fa1('0x6')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x2fa1('0x6')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'securePassword':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x2fa1('0x6')]},'turnaddr':{'type':Sequelize[_0x2fa1('0x6')]},'turnusername':{'type':Sequelize[_0x2fa1('0x6')]},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0x2fa1('0x6')]},'defaultPageTitle':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x2fa1('0x3')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x2fa1('0x6')],'defaultValue':_0x2fa1('0x8')},'enableEmailPreview':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':![]},'split':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x2fa1('0x6')],'defaultValue':_0x2fa1('0x9')},'chatTimeout':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x2fa1('0x6')]},'defaultPreferred':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x2fa1('0x6')]},'allowedLoginAttempts':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x2fa1('0x6')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x2fa1('0x3')]},'transcribeRegion':{'type':Sequelize[_0x2fa1('0x6')]},'sentiment':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x2fa1('0x3')]},'sentimentRegion':{'type':Sequelize[_0x2fa1('0x6')]},'language':{'type':Sequelize[_0x2fa1('0x6')]},'bucket':{'type':Sequelize[_0x2fa1('0x6')]},'googleSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x2fa1('0x3')](0x2)[_0x2fa1('0xa')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x2fa1('0x3')](0x2)[_0x2fa1('0xa')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x2fa1('0x3')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]}};
\ No newline at end of file
index 53f143b..9787134 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30ff=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','json','offset','undefined','count','limit','set','Content-Range','save','end','sendStatus','stack','name','index','map','Setting','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','params','rawAttributes','find','update','body','addLogo','file','filename','logo','addLogoLogin','loginLogo','../../config/license/util','getLogo','server/files/images/logos','preferred','defaultLogo','defaultLoginLogo','defaultPreferred','join','root','toLower','default','upperFirst','custom','default_logo.svg','existsSync','Sequelize','ValidationError','\x20not\x20found','getLogoLogin','getLicense','defaultFavicon','default_loginLogo.svg','download','gdpr','getPreferred','favicon','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','getDate','utcOffset','now','YYYY-MM-DD\x20HH:mm:ss:SSS','send','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis'];(function(_0xfeb5d4,_0x211945){var _0x167b53=function(_0x10f15d){while(--_0x10f15d){_0xfeb5d4['push'](_0xfeb5d4['shift']());}};_0x167b53(++_0x211945);}(_0x30ff,0x6a));var _0xf30f=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x30ff[_0x432682];return _0x463d05;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf30f('0x0'));var zipdir=require(_0xf30f('0x1'));var jsonpatch=require(_0xf30f('0x2'));var rp=require(_0xf30f('0x3'));var moment=require(_0xf30f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xf30f('0x5'));var util=require(_0xf30f('0x6'));var path=require('path');var sox=require(_0xf30f('0x7'));var csv=require(_0xf30f('0x8'));var ejs=require(_0xf30f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf30f('0xa'));var squel=require(_0xf30f('0xb'));var crypto=require(_0xf30f('0xc'));var jsforce=require(_0xf30f('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf30f('0x8'));var querystring=require(_0xf30f('0xe'));var Papa=require(_0xf30f('0xf'));var Redis=require(_0xf30f('0x10'));var authService=require(_0xf30f('0x11'));var qs=require(_0xf30f('0x12'));var as=require(_0xf30f('0x13'));var hardwareService=require(_0xf30f('0x14'));var logger=require(_0xf30f('0x15'))(_0xf30f('0x16'));var utils=require(_0xf30f('0x17'));var config=require(_0xf30f('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xf30f('0x19'))['db'];var jayson=require(_0xf30f('0x1a'));var client=jayson[_0xf30f('0x1b')]['http']({'port':0x232a});function respondWithRpcPromise(_0xb6e956,_0xb0d05c,_0x19ba46,_0x511955){return new BPromise(function(_0x71e1fb,_0x44e339){var _0x15abb2=_0x511955||client;return _0x15abb2[_0xf30f('0x1c')](_0xb6e956,_0x19ba46)[_0xf30f('0x1d')](function(_0x776a21){logger[_0xf30f('0x1e')](_0xf30f('0x1f'),_0xb0d05c,_0xf30f('0x20'));logger['debug'](_0xf30f('0x21'),_0xb0d05c,_0xf30f('0x20'),JSON[_0xf30f('0x22')](_0x776a21));if(_0x776a21[_0xf30f('0x23')]){if(_0x776a21[_0xf30f('0x23')][_0xf30f('0x24')]===0x1f4){logger['error'](_0xf30f('0x1f'),_0xb0d05c,_0x776a21[_0xf30f('0x23')][_0xf30f('0x25')]);return _0x44e339(_0x776a21[_0xf30f('0x23')]['message']);}logger[_0xf30f('0x23')](_0xf30f('0x1f'),_0xb0d05c,_0x776a21[_0xf30f('0x23')]['message']);return _0x71e1fb(_0x776a21['error'][_0xf30f('0x25')]);}else{logger[_0xf30f('0x1e')](_0xf30f('0x1f'),_0xb0d05c,'request\x20sent');_0x71e1fb(_0x776a21[_0xf30f('0x26')][_0xf30f('0x25')]);}})[_0xf30f('0x27')](function(_0x97d9ba){logger[_0xf30f('0x23')]('Setting,\x20%s,\x20%s',_0xb0d05c,_0x97d9ba);_0x44e339(_0x97d9ba);});});}function respondWithStatusCode(_0x91bd22,_0x3f445e){_0x3f445e=_0x3f445e||0xcc;return function(_0x1419c8){if(_0x1419c8){return _0x91bd22['sendStatus'](_0x3f445e);}return _0x91bd22[_0xf30f('0x28')](_0x3f445e)['end']();};}function respondWithResult(_0x2412df,_0x317a36){_0x317a36=_0x317a36||0xc8;return function(_0x55bb5e){if(_0x55bb5e){return _0x2412df[_0xf30f('0x28')](_0x317a36)[_0xf30f('0x29')](_0x55bb5e);}};}function respondWithFilteredResult(_0x1e6835,_0x5ec460){return function(_0x758f63){if(_0x758f63){var _0x54bbb4=typeof _0x5ec460[_0xf30f('0x2a')]==='undefined'&&typeof _0x5ec460['limit']===_0xf30f('0x2b');var _0x3eb30e=_0x758f63[_0xf30f('0x2c')];var _0x6ef41d=_0x54bbb4?0x0:_0x5ec460[_0xf30f('0x2a')];var _0x62a109=_0x54bbb4?_0x758f63['count']:_0x5ec460[_0xf30f('0x2a')]+_0x5ec460[_0xf30f('0x2d')];var _0x4adcb9;if(_0x62a109>=_0x3eb30e){_0x62a109=_0x3eb30e;_0x4adcb9=0xc8;}else{_0x4adcb9=0xce;}_0x1e6835[_0xf30f('0x28')](_0x4adcb9);return _0x1e6835[_0xf30f('0x2e')](_0xf30f('0x2f'),_0x6ef41d+'-'+_0x62a109+'/'+_0x3eb30e)[_0xf30f('0x29')](_0x758f63);}return null;};}function patchUpdates(_0x1d70a8){return function(_0x328b1b){try{jsonpatch['apply'](_0x328b1b,_0x1d70a8,!![]);}catch(_0x30be36){return BPromise['reject'](_0x30be36);}return _0x328b1b[_0xf30f('0x30')]();};}function saveUpdates(_0x578947,_0x1e1489){return function(_0x58b605){if(_0x58b605){return _0x58b605['update'](_0x578947)[_0xf30f('0x1d')](function(_0x35ca84){return _0x35ca84;});}return null;};}function removeEntity(_0x346fef,_0x360c15){return function(_0x2ea306){if(_0x2ea306){return _0x2ea306['destroy']()[_0xf30f('0x1d')](function(){_0x346fef['status'](0xcc)[_0xf30f('0x31')]();});}};}function handleEntityNotFound(_0x2d7a2f,_0x424b75){return function(_0x1a8db1){if(!_0x1a8db1){_0x2d7a2f[_0xf30f('0x32')](0x194);}return _0x1a8db1;};}function handleError(_0x2d63d4,_0x1238b5){_0x1238b5=_0x1238b5||0x1f4;return function(_0x3580aa){logger[_0xf30f('0x23')](_0x3580aa[_0xf30f('0x33')]);if(_0x3580aa[_0xf30f('0x34')]){delete _0x3580aa[_0xf30f('0x34')];}_0x2d63d4[_0xf30f('0x28')](_0x1238b5)['send'](_0x3580aa);};}exports[_0xf30f('0x35')]=function(_0x315c45,_0x261e58){var _0x426ace={},_0x4c6b71={},_0xf62da2={'count':0x0,'rows':[]};var _0x398cc5=_[_0xf30f('0x36')](db[_0xf30f('0x37')]['rawAttributes'],function(_0x33e765){return{'name':_0x33e765[_0xf30f('0x38')],'type':_0x33e765[_0xf30f('0x39')][_0xf30f('0x3a')]};});_0x4c6b71['model']=_[_0xf30f('0x36')](_0x398cc5,_0xf30f('0x34'));_0x4c6b71[_0xf30f('0x3b')]=_[_0xf30f('0x3c')](_0x315c45[_0xf30f('0x3b')]);_0x4c6b71['filters']=_[_0xf30f('0x3d')](_0x4c6b71[_0xf30f('0x3e')],_0x4c6b71[_0xf30f('0x3b')]);_0x426ace[_0xf30f('0x3f')]=_[_0xf30f('0x3d')](_0x4c6b71[_0xf30f('0x3e')],qs[_0xf30f('0x40')](_0x315c45[_0xf30f('0x3b')]['fields']));_0x426ace[_0xf30f('0x3f')]=_0x426ace[_0xf30f('0x3f')][_0xf30f('0x41')]?_0x426ace[_0xf30f('0x3f')]:_0x4c6b71[_0xf30f('0x3e')];if(!_0x315c45[_0xf30f('0x3b')]['hasOwnProperty'](_0xf30f('0x42'))){_0x426ace['limit']=qs[_0xf30f('0x2d')](_0x315c45[_0xf30f('0x3b')][_0xf30f('0x2d')]);_0x426ace[_0xf30f('0x2a')]=qs[_0xf30f('0x2a')](_0x315c45['query'][_0xf30f('0x2a')]);}_0x426ace['order']=qs['sort'](_0x315c45['query'][_0xf30f('0x43')]);_0x426ace[_0xf30f('0x44')]=qs['filters'](_[_0xf30f('0x45')](_0x315c45[_0xf30f('0x3b')],_0x4c6b71['filters']),_0x398cc5);if(_0x315c45[_0xf30f('0x3b')][_0xf30f('0x46')]){_0x426ace['where']=_[_0xf30f('0x47')](_0x426ace['where'],{'$or':_['map'](_0x398cc5,function(_0x249dab){if(_0x249dab['type']!==_0xf30f('0x48')){var _0x4d70b8={};_0x4d70b8[_0x249dab[_0xf30f('0x34')]]={'$like':'%'+_0x315c45[_0xf30f('0x3b')]['filter']+'%'};return _0x4d70b8;}})});}_0x426ace=_[_0xf30f('0x47')]({},_0x426ace,_0x315c45[_0xf30f('0x49')]);var _0x26c76b={'where':_0x426ace[_0xf30f('0x44')]};return db[_0xf30f('0x37')][_0xf30f('0x2c')](_0x26c76b)[_0xf30f('0x1d')](function(_0x4c7e12){_0xf62da2[_0xf30f('0x2c')]=_0x4c7e12;if(_0x315c45[_0xf30f('0x3b')]['includeAll']){_0x426ace[_0xf30f('0x4a')]=[{'all':!![]}];}return db[_0xf30f('0x37')][_0xf30f('0x4b')](_0x426ace);})[_0xf30f('0x1d')](function(_0x142172){_0xf62da2[_0xf30f('0x4c')]=_0x142172;return _0xf62da2;})['then'](respondWithFilteredResult(_0x261e58,_0x426ace))[_0xf30f('0x27')](handleError(_0x261e58,null));};exports['show']=function(_0x1bfffd,_0x5a2d88){var _0x5e7306={'raw':![],'where':{'id':_0x1bfffd[_0xf30f('0x4d')]['id']}},_0x5d4da5={};_0x5d4da5[_0xf30f('0x3e')]=_['keys'](db['Setting'][_0xf30f('0x4e')]);_0x5d4da5[_0xf30f('0x3b')]=_[_0xf30f('0x3c')](_0x1bfffd[_0xf30f('0x3b')]);_0x5d4da5['filters']=_['intersection'](_0x5d4da5[_0xf30f('0x3e')],_0x5d4da5['query']);_0x5e7306[_0xf30f('0x3f')]=_[_0xf30f('0x3d')](_0x5d4da5[_0xf30f('0x3e')],qs[_0xf30f('0x40')](_0x1bfffd[_0xf30f('0x3b')]['fields']));_0x5e7306['attributes']=_0x5e7306[_0xf30f('0x3f')]['length']?_0x5e7306['attributes']:_0x5d4da5[_0xf30f('0x3e')];if(_0x1bfffd[_0xf30f('0x3b')]['includeAll']){_0x5e7306[_0xf30f('0x4a')]=[{'all':!![]}];}_0x5e7306=_[_0xf30f('0x47')]({},_0x5e7306,_0x1bfffd[_0xf30f('0x49')]);return db['Setting'][_0xf30f('0x4f')](_0x5e7306)[_0xf30f('0x1d')](handleEntityNotFound(_0x5a2d88,null))[_0xf30f('0x1d')](respondWithResult(_0x5a2d88,null))[_0xf30f('0x27')](handleError(_0x5a2d88,null));};exports[_0xf30f('0x50')]=function(_0x65899e,_0x3113db){if(_0x65899e[_0xf30f('0x51')]['id']){delete _0x65899e[_0xf30f('0x51')]['id'];}return db[_0xf30f('0x37')][_0xf30f('0x4f')]({'where':{'id':_0x65899e[_0xf30f('0x4d')]['id']}})[_0xf30f('0x1d')](handleEntityNotFound(_0x3113db,null))[_0xf30f('0x1d')](saveUpdates(_0x65899e[_0xf30f('0x51')],null))[_0xf30f('0x1d')](respondWithResult(_0x3113db,null))[_0xf30f('0x27')](handleError(_0x3113db,null));};exports[_0xf30f('0x52')]=function(_0x374d84,_0x20fc4e,_0x198dd3){if(_0x374d84['file']&&_0x374d84[_0xf30f('0x53')][_0xf30f('0x54')]){_0x374d84[_0xf30f('0x51')][_0xf30f('0x55')]=_0x374d84[_0xf30f('0x53')][_0xf30f('0x54')];}return db[_0xf30f('0x37')]['find']({'where':{'id':_0x374d84['params']['id']}})[_0xf30f('0x1d')](handleEntityNotFound(_0x20fc4e,null))[_0xf30f('0x1d')](saveUpdates(_0x374d84[_0xf30f('0x51')],null))['then'](respondWithResult(_0x20fc4e,null))[_0xf30f('0x27')](handleError(_0x20fc4e,null));};exports[_0xf30f('0x56')]=function(_0xa9390e,_0x9acc21,_0x5e803f){if(_0xa9390e[_0xf30f('0x53')]&&_0xa9390e[_0xf30f('0x53')][_0xf30f('0x54')]){_0xa9390e[_0xf30f('0x51')][_0xf30f('0x57')]=_0xa9390e[_0xf30f('0x53')]['filename'];}return db['Setting'][_0xf30f('0x4f')]({'where':{'id':_0xa9390e[_0xf30f('0x4d')]['id']}})['then'](handleEntityNotFound(_0x9acc21,null))['then'](saveUpdates(_0xa9390e[_0xf30f('0x51')],null))[_0xf30f('0x1d')](respondWithResult(_0x9acc21,null))['catch'](handleError(_0x9acc21,null));};var utilLicense=require(_0xf30f('0x58'));exports[_0xf30f('0x59')]=function(_0x2cd786,_0x371ed0,_0x1c5c4e){var _0x39e67c=_0xf30f('0x5a');var _0xa56436={'custom':![]};return utilLicense['getLicense']()[_0xf30f('0x1d')](function(_0x399cc5){if(_0x399cc5){_0xa56436=_0x399cc5;}return db[_0xf30f('0x37')][_0xf30f('0x4f')]({'where':{'id':_0x2cd786[_0xf30f('0x4d')]['id']},'attributes':[_0xf30f('0x55'),'loginLogo',_0xf30f('0x5b'),'favicon',_0xf30f('0x5c'),_0xf30f('0x5d'),_0xf30f('0x5e'),'defaultFavicon'],'raw':!![]});})[_0xf30f('0x1d')](handleEntityNotFound(_0x371ed0,null))[_0xf30f('0x1d')](function(_0x28a638){if(_0x28a638){var _0x293d1a=_0x28a638[_0xf30f('0x55')]&&fs['existsSync'](path[_0xf30f('0x5f')](config[_0xf30f('0x60')],_0x39e67c,_[_0xf30f('0x61')](_0x28a638['logo'])))?path[_0xf30f('0x5f')](config[_0xf30f('0x60')],_0x39e67c,_[_0xf30f('0x61')](_0x28a638[_0xf30f('0x55')])):path[_0xf30f('0x5f')](config[_0xf30f('0x60')],_0x39e67c,_['toLower']('default_logo.svg'));var _0x3c90ca=_0xf30f('0x62')+_[_0xf30f('0x63')](_0xf30f('0x55'));if(_0x28a638[_0x3c90ca]||!_0xa56436[_0xf30f('0x64')]){_0x293d1a=path['join'](config[_0xf30f('0x60')],_0x39e67c,_[_0xf30f('0x61')](_0xf30f('0x65')));}if(!fs[_0xf30f('0x66')](_0x293d1a)){throw new db[(_0xf30f('0x67'))][(_0xf30f('0x68'))](_[_0xf30f('0x63')](_0xf30f('0x55'))+_0xf30f('0x69'));}return _0x371ed0['download'](_0x293d1a);}})['catch'](handleError(_0x371ed0,null));};var utilLicense=require('../../config/license/util');exports[_0xf30f('0x6a')]=function(_0x211fb7,_0x5a99e6,_0x3943e4){var _0x40cb70=_0xf30f('0x5a');var _0x284e63={'custom':![]};return utilLicense[_0xf30f('0x6b')]()[_0xf30f('0x1d')](function(_0x191b36){if(_0x191b36){_0x284e63=_0x191b36;}return db[_0xf30f('0x37')]['find']({'where':{'id':_0x211fb7[_0xf30f('0x4d')]['id']},'attributes':[_0xf30f('0x55'),_0xf30f('0x57'),'preferred','favicon',_0xf30f('0x5c'),'defaultLoginLogo',_0xf30f('0x5e'),_0xf30f('0x6c')],'raw':!![]});})[_0xf30f('0x1d')](handleEntityNotFound(_0x5a99e6,null))['then'](function(_0x24ab61){if(_0x24ab61){var _0x38648d=_0x24ab61[_0xf30f('0x57')]&&fs[_0xf30f('0x66')](path[_0xf30f('0x5f')](config['root'],_0x40cb70,_['toLower'](_0x24ab61[_0xf30f('0x57')])))?path[_0xf30f('0x5f')](config[_0xf30f('0x60')],_0x40cb70,_[_0xf30f('0x61')](_0x24ab61[_0xf30f('0x57')])):path['join'](config[_0xf30f('0x60')],_0x40cb70,_[_0xf30f('0x61')](_0xf30f('0x6d')));var _0x576ea7=_0xf30f('0x62')+_[_0xf30f('0x63')](_0xf30f('0x57'));if(_0x24ab61[_0x576ea7]||!_0x284e63[_0xf30f('0x64')]){_0x38648d=path[_0xf30f('0x5f')](config[_0xf30f('0x60')],_0x40cb70,_[_0xf30f('0x61')](_0xf30f('0x6d')));}if(!fs['existsSync'](_0x38648d)){throw new db[(_0xf30f('0x67'))][(_0xf30f('0x68'))](_[_0xf30f('0x63')]('loginLogo')+_0xf30f('0x69'));}return _0x5a99e6[_0xf30f('0x6e')](_0x38648d);}})[_0xf30f('0x27')](handleError(_0x5a99e6,null));};exports[_0xf30f('0x6f')]=function(_0x54ca0d,_0x2dba45){return db[_0xf30f('0x37')][_0xf30f('0x4f')]({'where':{'id':_0x54ca0d['params']['id']},'attributes':['securePassword']})[_0xf30f('0x1d')](respondWithResult(_0x2dba45,null))[_0xf30f('0x27')](handleError(_0x2dba45,null));};exports['addPreferred']=function(_0x3cf658,_0x1603ee,_0x243620){if(_0x3cf658['file']&&_0x3cf658[_0xf30f('0x53')][_0xf30f('0x54')]){_0x3cf658[_0xf30f('0x51')][_0xf30f('0x5b')]=_0x3cf658[_0xf30f('0x53')][_0xf30f('0x54')];}return db[_0xf30f('0x37')]['find']({'where':{'id':_0x3cf658[_0xf30f('0x4d')]['id']}})[_0xf30f('0x1d')](handleEntityNotFound(_0x1603ee,null))[_0xf30f('0x1d')](saveUpdates(_0x3cf658['body'],null))[_0xf30f('0x1d')](respondWithResult(_0x1603ee,null))['catch'](handleError(_0x1603ee,null));};var utilLicense=require(_0xf30f('0x58'));exports[_0xf30f('0x70')]=function(_0x3c2a9d,_0x1bc549,_0x2fb05){var _0x3fa16e=_0xf30f('0x5a');var _0xe3801f={'custom':![]};return utilLicense['getLicense']()[_0xf30f('0x1d')](function(_0x27b45f){if(_0x27b45f){_0xe3801f=_0x27b45f;}return db[_0xf30f('0x37')][_0xf30f('0x4f')]({'where':{'id':_0x3c2a9d[_0xf30f('0x4d')]['id']},'attributes':['logo',_0xf30f('0x57'),'preferred',_0xf30f('0x71'),_0xf30f('0x5c'),'defaultLoginLogo','defaultPreferred',_0xf30f('0x6c')],'raw':!![]});})[_0xf30f('0x1d')](handleEntityNotFound(_0x1bc549,null))['then'](function(_0x2ae95c){if(_0x2ae95c){var _0x52e726=_0x2ae95c[_0xf30f('0x5b')]&&fs['existsSync'](path[_0xf30f('0x5f')](config['root'],_0x3fa16e,_['toLower'](_0x2ae95c[_0xf30f('0x5b')])))?path[_0xf30f('0x5f')](config['root'],_0x3fa16e,_[_0xf30f('0x61')](_0x2ae95c[_0xf30f('0x5b')])):path[_0xf30f('0x5f')](config['root'],_0x3fa16e,_['toLower'](_0xf30f('0x72')));var _0x14830d=_0xf30f('0x62')+_[_0xf30f('0x63')](_0xf30f('0x5b'));if(_0x2ae95c[_0x14830d]||!_0xe3801f[_0xf30f('0x64')]||!_0xe3801f[_0xf30f('0x5b')]){_0x52e726=path[_0xf30f('0x5f')](config[_0xf30f('0x60')],_0x3fa16e,_[_0xf30f('0x61')](_0xf30f('0x72')));}if(!fs[_0xf30f('0x66')](_0x52e726)){throw new db[(_0xf30f('0x67'))]['ValidationError'](_[_0xf30f('0x63')](_0xf30f('0x5b'))+_0xf30f('0x69'));}return _0x1bc549['download'](_0x52e726);}})[_0xf30f('0x27')](handleError(_0x1bc549,null));};exports[_0xf30f('0x73')]=function(_0x51f5dd,_0x4c75d3,_0x3303ac){if(_0x51f5dd[_0xf30f('0x53')]&&_0x51f5dd[_0xf30f('0x53')][_0xf30f('0x54')]){_0x51f5dd['body'][_0xf30f('0x71')]=_0x51f5dd[_0xf30f('0x53')][_0xf30f('0x54')];}return db[_0xf30f('0x37')][_0xf30f('0x4f')]({'where':{'id':_0x51f5dd['params']['id']}})[_0xf30f('0x1d')](handleEntityNotFound(_0x4c75d3,null))[_0xf30f('0x1d')](saveUpdates(_0x51f5dd[_0xf30f('0x51')],null))[_0xf30f('0x1d')](respondWithResult(_0x4c75d3,null))[_0xf30f('0x27')](handleError(_0x4c75d3,null));};var utilLicense=require(_0xf30f('0x58'));exports[_0xf30f('0x74')]=function(_0x1b9937,_0x2f32c0,_0x3d69e9){var _0x4dfb89=_0xf30f('0x5a');var _0x106d0b={'custom':![]};return utilLicense[_0xf30f('0x6b')]()['then'](function(_0x3c5a3f){if(_0x3c5a3f){_0x106d0b=_0x3c5a3f;}return db[_0xf30f('0x37')]['find']({'where':{'id':_0x1b9937[_0xf30f('0x4d')]['id']},'attributes':['logo',_0xf30f('0x57'),'preferred',_0xf30f('0x71'),'defaultLogo',_0xf30f('0x5d'),_0xf30f('0x5e'),_0xf30f('0x6c')],'raw':!![]});})[_0xf30f('0x1d')](handleEntityNotFound(_0x2f32c0,null))[_0xf30f('0x1d')](function(_0xa191c2){if(_0xa191c2){var _0x380a28=_0xa191c2['favicon']&&fs[_0xf30f('0x66')](path['join'](config[_0xf30f('0x60')],_0x4dfb89,_[_0xf30f('0x61')](_0xa191c2['favicon'])))?path['join'](config[_0xf30f('0x60')],_0x4dfb89,_['toLower'](_0xa191c2['favicon'])):path[_0xf30f('0x5f')](config[_0xf30f('0x60')],_0x4dfb89,_['toLower'](_0xf30f('0x75')));var _0x53a19a=_0xf30f('0x62')+_[_0xf30f('0x63')](_0xf30f('0x71'));if(_0xa191c2[_0x53a19a]||!_0x106d0b[_0xf30f('0x64')]){_0x380a28=path[_0xf30f('0x5f')](config['root'],_0x4dfb89,_[_0xf30f('0x61')](_0xf30f('0x75')));}if(!fs[_0xf30f('0x66')](_0x380a28)){throw new db[(_0xf30f('0x67'))][(_0xf30f('0x68'))](_['upperFirst']('favicon')+_0xf30f('0x69'));}return _0x2f32c0[_0xf30f('0x6e')](_0x380a28);}})[_0xf30f('0x27')](handleError(_0x2f32c0,null));};exports[_0xf30f('0x76')]=function(_0x5473a3,_0x1f0f33){var _0xb7135f={'offset':moment()[_0xf30f('0x77')]()};_0xb7135f[_0xf30f('0x78')]=moment()[_0xf30f('0x77')](_0xb7135f[_0xf30f('0x2a')])['format'](_0xf30f('0x79'));return _0x1f0f33['status'](0xc8)[_0xf30f('0x7a')](_0xb7135f);};
\ No newline at end of file
+var _0xf6c1=['logo','server/files/images/logos','getLicense','preferred','defaultLogo','defaultLoginLogo','defaultFavicon','join','root','toLower','default_logo.svg','upperFirst','custom','existsSync','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','loginLogo','favicon','default','default_loginLogo.svg','gdpr','getPreferred','defaultPreferred','default_preferred.png','getFavicon','default_favicon.ico','getDate','now','utcOffset','format','YYYY-MM-DD\x20HH:mm:ss:SSS','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','stringify','error','message','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','sort','where','pick','filter','options','Setting','findAll','rows','catch','show','params','length','include','merge','body','find','addLogo','file','filename'];(function(_0x2ebd2d,_0x1d0ffe){var _0x51757e=function(_0x23d19e){while(--_0x23d19e){_0x2ebd2d['push'](_0x2ebd2d['shift']());}};_0x51757e(++_0x1d0ffe);}(_0xf6c1,0x99));var _0x1f6c=function(_0x1e053a,_0x308c65){_0x1e053a=_0x1e053a-0x0;var _0x1a79f3=_0xf6c1[_0x1e053a];return _0x1a79f3;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1f6c('0x0'));var jsonpatch=require(_0x1f6c('0x1'));var rp=require(_0x1f6c('0x2'));var moment=require('moment');var BPromise=require(_0x1f6c('0x3'));var Mustache=require('mustache');var util=require(_0x1f6c('0x4'));var path=require(_0x1f6c('0x5'));var sox=require(_0x1f6c('0x6'));var csv=require(_0x1f6c('0x7'));var ejs=require(_0x1f6c('0x8'));var fs=require('fs');var fs_extra=require(_0x1f6c('0x9'));var _=require('lodash');var squel=require(_0x1f6c('0xa'));var crypto=require(_0x1f6c('0xb'));var jsforce=require(_0x1f6c('0xc'));var deskjs=require(_0x1f6c('0xd'));var toCsv=require(_0x1f6c('0x7'));var querystring=require(_0x1f6c('0xe'));var Papa=require(_0x1f6c('0xf'));var Redis=require(_0x1f6c('0x10'));var authService=require(_0x1f6c('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x1f6c('0x12'))(_0x1f6c('0x13'));var utils=require(_0x1f6c('0x14'));var config=require(_0x1f6c('0x15'));var licenseUtil=require(_0x1f6c('0x16'));var db=require(_0x1f6c('0x17'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x1f6c('0x18')][_0x1f6c('0x19')]({'port':0x232a});function respondWithRpcPromise(_0xafed6f,_0x3e461f,_0x103f5d,_0x1315b7){return new BPromise(function(_0x31fc67,_0x147c01){var _0x4ac9f5=_0x1315b7||client;return _0x4ac9f5[_0x1f6c('0x1a')](_0xafed6f,_0x103f5d)[_0x1f6c('0x1b')](function(_0x26652b){logger[_0x1f6c('0x1c')](_0x1f6c('0x1d'),_0x3e461f,_0x1f6c('0x1e'));logger['debug']('Setting,\x20%s,\x20%s,\x20%s',_0x3e461f,_0x1f6c('0x1e'),JSON[_0x1f6c('0x1f')](_0x26652b));if(_0x26652b['error']){if(_0x26652b[_0x1f6c('0x20')]['code']===0x1f4){logger[_0x1f6c('0x20')](_0x1f6c('0x1d'),_0x3e461f,_0x26652b[_0x1f6c('0x20')][_0x1f6c('0x21')]);return _0x147c01(_0x26652b[_0x1f6c('0x20')][_0x1f6c('0x21')]);}logger[_0x1f6c('0x20')](_0x1f6c('0x1d'),_0x3e461f,_0x26652b[_0x1f6c('0x20')][_0x1f6c('0x21')]);return _0x31fc67(_0x26652b[_0x1f6c('0x20')][_0x1f6c('0x21')]);}else{logger[_0x1f6c('0x1c')](_0x1f6c('0x1d'),_0x3e461f,_0x1f6c('0x1e'));_0x31fc67(_0x26652b['result'][_0x1f6c('0x21')]);}})['catch'](function(_0xd066b){logger[_0x1f6c('0x20')]('Setting,\x20%s,\x20%s',_0x3e461f,_0xd066b);_0x147c01(_0xd066b);});});}function respondWithStatusCode(_0x1aa1f6,_0x4ef92a){_0x4ef92a=_0x4ef92a||0xcc;return function(_0x32a812){if(_0x32a812){return _0x1aa1f6[_0x1f6c('0x22')](_0x4ef92a);}return _0x1aa1f6[_0x1f6c('0x23')](_0x4ef92a)[_0x1f6c('0x24')]();};}function respondWithResult(_0xc6b047,_0x386016){_0x386016=_0x386016||0xc8;return function(_0x8b998c){if(_0x8b998c){return _0xc6b047[_0x1f6c('0x23')](_0x386016)[_0x1f6c('0x25')](_0x8b998c);}};}function respondWithFilteredResult(_0x147385,_0x4ffb66){return function(_0xa16408){if(_0xa16408){var _0x3acae0=typeof _0x4ffb66[_0x1f6c('0x26')]==='undefined'&&typeof _0x4ffb66[_0x1f6c('0x27')]===_0x1f6c('0x28');var _0x2ce9df=_0xa16408[_0x1f6c('0x29')];var _0xeaeccd=_0x3acae0?0x0:_0x4ffb66[_0x1f6c('0x26')];var _0x51a230=_0x3acae0?_0xa16408[_0x1f6c('0x29')]:_0x4ffb66['offset']+_0x4ffb66[_0x1f6c('0x27')];var _0xcac8c0;if(_0x51a230>=_0x2ce9df){_0x51a230=_0x2ce9df;_0xcac8c0=0xc8;}else{_0xcac8c0=0xce;}_0x147385[_0x1f6c('0x23')](_0xcac8c0);return _0x147385[_0x1f6c('0x2a')](_0x1f6c('0x2b'),_0xeaeccd+'-'+_0x51a230+'/'+_0x2ce9df)['json'](_0xa16408);}return null;};}function patchUpdates(_0x7a927a){return function(_0x47db8b){try{jsonpatch['apply'](_0x47db8b,_0x7a927a,!![]);}catch(_0x1636bb){return BPromise[_0x1f6c('0x2c')](_0x1636bb);}return _0x47db8b[_0x1f6c('0x2d')]();};}function saveUpdates(_0x29ad8d,_0x4b6fb4){return function(_0x1dfb8a){if(_0x1dfb8a){return _0x1dfb8a[_0x1f6c('0x2e')](_0x29ad8d)[_0x1f6c('0x1b')](function(_0x19ee99){return _0x19ee99;});}return null;};}function removeEntity(_0x4322a6,_0x4d42e8){return function(_0x4edaa2){if(_0x4edaa2){return _0x4edaa2[_0x1f6c('0x2f')]()[_0x1f6c('0x1b')](function(){_0x4322a6[_0x1f6c('0x23')](0xcc)[_0x1f6c('0x24')]();});}};}function handleEntityNotFound(_0x59a66f,_0x475894){return function(_0x481112){if(!_0x481112){_0x59a66f['sendStatus'](0x194);}return _0x481112;};}function handleError(_0x17c112,_0x7548ea){_0x7548ea=_0x7548ea||0x1f4;return function(_0x12784d){logger[_0x1f6c('0x20')](_0x12784d[_0x1f6c('0x30')]);if(_0x12784d[_0x1f6c('0x31')]){delete _0x12784d[_0x1f6c('0x31')];}_0x17c112[_0x1f6c('0x23')](_0x7548ea)[_0x1f6c('0x32')](_0x12784d);};}exports[_0x1f6c('0x33')]=function(_0x421869,_0x16a526){var _0x16e207={},_0x2fc1c6={},_0x30b8f9={'count':0x0,'rows':[]};var _0x345c48=_[_0x1f6c('0x34')](db['Setting'][_0x1f6c('0x35')],function(_0x4803f2){return{'name':_0x4803f2[_0x1f6c('0x36')],'type':_0x4803f2[_0x1f6c('0x37')][_0x1f6c('0x38')]};});_0x2fc1c6['model']=_['map'](_0x345c48,_0x1f6c('0x31'));_0x2fc1c6[_0x1f6c('0x39')]=_[_0x1f6c('0x3a')](_0x421869[_0x1f6c('0x39')]);_0x2fc1c6[_0x1f6c('0x3b')]=_[_0x1f6c('0x3c')](_0x2fc1c6['model'],_0x2fc1c6[_0x1f6c('0x39')]);_0x16e207[_0x1f6c('0x3d')]=_[_0x1f6c('0x3c')](_0x2fc1c6[_0x1f6c('0x3e')],qs[_0x1f6c('0x3f')](_0x421869[_0x1f6c('0x39')][_0x1f6c('0x3f')]));_0x16e207[_0x1f6c('0x3d')]=_0x16e207['attributes']['length']?_0x16e207[_0x1f6c('0x3d')]:_0x2fc1c6['model'];if(!_0x421869['query'][_0x1f6c('0x40')](_0x1f6c('0x41'))){_0x16e207[_0x1f6c('0x27')]=qs[_0x1f6c('0x27')](_0x421869[_0x1f6c('0x39')][_0x1f6c('0x27')]);_0x16e207[_0x1f6c('0x26')]=qs[_0x1f6c('0x26')](_0x421869['query'][_0x1f6c('0x26')]);}_0x16e207['order']=qs['sort'](_0x421869[_0x1f6c('0x39')][_0x1f6c('0x42')]);_0x16e207[_0x1f6c('0x43')]=qs['filters'](_[_0x1f6c('0x44')](_0x421869[_0x1f6c('0x39')],_0x2fc1c6[_0x1f6c('0x3b')]),_0x345c48);if(_0x421869[_0x1f6c('0x39')]['filter']){_0x16e207[_0x1f6c('0x43')]=_['merge'](_0x16e207[_0x1f6c('0x43')],{'$or':_[_0x1f6c('0x34')](_0x345c48,function(_0x494ab3){if(_0x494ab3[_0x1f6c('0x37')]!=='VIRTUAL'){var _0x533f21={};_0x533f21[_0x494ab3[_0x1f6c('0x31')]]={'$like':'%'+_0x421869['query'][_0x1f6c('0x45')]+'%'};return _0x533f21;}})});}_0x16e207=_['merge']({},_0x16e207,_0x421869[_0x1f6c('0x46')]);var _0x432876={'where':_0x16e207[_0x1f6c('0x43')]};return db['Setting'][_0x1f6c('0x29')](_0x432876)[_0x1f6c('0x1b')](function(_0x74b7a5){_0x30b8f9['count']=_0x74b7a5;if(_0x421869['query']['includeAll']){_0x16e207['include']=[{'all':!![]}];}return db[_0x1f6c('0x47')][_0x1f6c('0x48')](_0x16e207);})['then'](function(_0x4e0538){_0x30b8f9[_0x1f6c('0x49')]=_0x4e0538;return _0x30b8f9;})[_0x1f6c('0x1b')](respondWithFilteredResult(_0x16a526,_0x16e207))[_0x1f6c('0x4a')](handleError(_0x16a526,null));};exports[_0x1f6c('0x4b')]=function(_0x2a6f3,_0x4153c8){var _0x508fdb={'raw':![],'where':{'id':_0x2a6f3[_0x1f6c('0x4c')]['id']}},_0x303c50={};_0x303c50['model']=_[_0x1f6c('0x3a')](db[_0x1f6c('0x47')]['rawAttributes']);_0x303c50[_0x1f6c('0x39')]=_['keys'](_0x2a6f3[_0x1f6c('0x39')]);_0x303c50[_0x1f6c('0x3b')]=_[_0x1f6c('0x3c')](_0x303c50['model'],_0x303c50[_0x1f6c('0x39')]);_0x508fdb[_0x1f6c('0x3d')]=_['intersection'](_0x303c50[_0x1f6c('0x3e')],qs['fields'](_0x2a6f3[_0x1f6c('0x39')][_0x1f6c('0x3f')]));_0x508fdb[_0x1f6c('0x3d')]=_0x508fdb['attributes'][_0x1f6c('0x4d')]?_0x508fdb[_0x1f6c('0x3d')]:_0x303c50['model'];if(_0x2a6f3[_0x1f6c('0x39')]['includeAll']){_0x508fdb[_0x1f6c('0x4e')]=[{'all':!![]}];}_0x508fdb=_[_0x1f6c('0x4f')]({},_0x508fdb,_0x2a6f3[_0x1f6c('0x46')]);return db[_0x1f6c('0x47')]['find'](_0x508fdb)['then'](handleEntityNotFound(_0x4153c8,null))['then'](respondWithResult(_0x4153c8,null))[_0x1f6c('0x4a')](handleError(_0x4153c8,null));};exports[_0x1f6c('0x2e')]=function(_0x335974,_0x1c9f84){if(_0x335974[_0x1f6c('0x50')]['id']){delete _0x335974[_0x1f6c('0x50')]['id'];}return db[_0x1f6c('0x47')][_0x1f6c('0x51')]({'where':{'id':_0x335974[_0x1f6c('0x4c')]['id']}})[_0x1f6c('0x1b')](handleEntityNotFound(_0x1c9f84,null))[_0x1f6c('0x1b')](saveUpdates(_0x335974[_0x1f6c('0x50')],null))[_0x1f6c('0x1b')](respondWithResult(_0x1c9f84,null))[_0x1f6c('0x4a')](handleError(_0x1c9f84,null));};exports[_0x1f6c('0x52')]=function(_0x38a288,_0x26c7ed,_0xdc959a){if(_0x38a288[_0x1f6c('0x53')]&&_0x38a288['file'][_0x1f6c('0x54')]){_0x38a288['body'][_0x1f6c('0x55')]=_0x38a288[_0x1f6c('0x53')]['filename'];}return db[_0x1f6c('0x47')][_0x1f6c('0x51')]({'where':{'id':_0x38a288[_0x1f6c('0x4c')]['id']}})['then'](handleEntityNotFound(_0x26c7ed,null))[_0x1f6c('0x1b')](saveUpdates(_0x38a288[_0x1f6c('0x50')],null))['then'](respondWithResult(_0x26c7ed,null))['catch'](handleError(_0x26c7ed,null));};exports['addLogoLogin']=function(_0x9955de,_0x53a8b2,_0x3d980d){if(_0x9955de[_0x1f6c('0x53')]&&_0x9955de[_0x1f6c('0x53')][_0x1f6c('0x54')]){_0x9955de[_0x1f6c('0x50')]['loginLogo']=_0x9955de[_0x1f6c('0x53')][_0x1f6c('0x54')];}return db[_0x1f6c('0x47')][_0x1f6c('0x51')]({'where':{'id':_0x9955de[_0x1f6c('0x4c')]['id']}})[_0x1f6c('0x1b')](handleEntityNotFound(_0x53a8b2,null))[_0x1f6c('0x1b')](saveUpdates(_0x9955de[_0x1f6c('0x50')],null))[_0x1f6c('0x1b')](respondWithResult(_0x53a8b2,null))[_0x1f6c('0x4a')](handleError(_0x53a8b2,null));};var utilLicense=require(_0x1f6c('0x16'));exports['getLogo']=function(_0x1129bf,_0x5138cf,_0x249360){var _0x85a301=_0x1f6c('0x56');var _0x78ab61={'custom':![]};return utilLicense[_0x1f6c('0x57')]()['then'](function(_0x2e49d3){if(_0x2e49d3){_0x78ab61=_0x2e49d3;}return db[_0x1f6c('0x47')][_0x1f6c('0x51')]({'where':{'id':_0x1129bf[_0x1f6c('0x4c')]['id']},'attributes':['logo','loginLogo',_0x1f6c('0x58'),'favicon',_0x1f6c('0x59'),_0x1f6c('0x5a'),'defaultPreferred',_0x1f6c('0x5b')],'raw':!![]});})['then'](handleEntityNotFound(_0x5138cf,null))['then'](function(_0x35df89){if(_0x35df89){var _0x416674=_0x35df89['logo']&&fs['existsSync'](path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x85a301,_[_0x1f6c('0x5e')](_0x35df89['logo'])))?path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x85a301,_[_0x1f6c('0x5e')](_0x35df89[_0x1f6c('0x55')])):path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x85a301,_[_0x1f6c('0x5e')](_0x1f6c('0x5f')));var _0x115bee='default'+_[_0x1f6c('0x60')](_0x1f6c('0x55'));if(_0x35df89[_0x115bee]||!_0x78ab61[_0x1f6c('0x61')]){_0x416674=path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x85a301,_[_0x1f6c('0x5e')]('default_logo.svg'));}if(!fs[_0x1f6c('0x62')](_0x416674)){throw new db[(_0x1f6c('0x63'))][(_0x1f6c('0x64'))](_[_0x1f6c('0x60')](_0x1f6c('0x55'))+_0x1f6c('0x65'));}return _0x5138cf[_0x1f6c('0x66')](_0x416674);}})[_0x1f6c('0x4a')](handleError(_0x5138cf,null));};var utilLicense=require(_0x1f6c('0x16'));exports[_0x1f6c('0x67')]=function(_0x4247e9,_0x5a378b,_0x403014){var _0x3e2eb9='server/files/images/logos';var _0x4cc1f1={'custom':![]};return utilLicense[_0x1f6c('0x57')]()[_0x1f6c('0x1b')](function(_0x2f5556){if(_0x2f5556){_0x4cc1f1=_0x2f5556;}return db[_0x1f6c('0x47')]['find']({'where':{'id':_0x4247e9[_0x1f6c('0x4c')]['id']},'attributes':['logo',_0x1f6c('0x68'),_0x1f6c('0x58'),_0x1f6c('0x69'),_0x1f6c('0x59'),_0x1f6c('0x5a'),'defaultPreferred','defaultFavicon'],'raw':!![]});})[_0x1f6c('0x1b')](handleEntityNotFound(_0x5a378b,null))[_0x1f6c('0x1b')](function(_0x508e26){if(_0x508e26){var _0x3ba729=_0x508e26[_0x1f6c('0x68')]&&fs['existsSync'](path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x3e2eb9,_[_0x1f6c('0x5e')](_0x508e26[_0x1f6c('0x68')])))?path[_0x1f6c('0x5c')](config['root'],_0x3e2eb9,_[_0x1f6c('0x5e')](_0x508e26[_0x1f6c('0x68')])):path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x3e2eb9,_[_0x1f6c('0x5e')]('default_loginLogo.svg'));var _0x45216a=_0x1f6c('0x6a')+_[_0x1f6c('0x60')]('loginLogo');if(_0x508e26[_0x45216a]||!_0x4cc1f1[_0x1f6c('0x61')]){_0x3ba729=path['join'](config[_0x1f6c('0x5d')],_0x3e2eb9,_[_0x1f6c('0x5e')](_0x1f6c('0x6b')));}if(!fs['existsSync'](_0x3ba729)){throw new db[(_0x1f6c('0x63'))][(_0x1f6c('0x64'))](_[_0x1f6c('0x60')](_0x1f6c('0x68'))+_0x1f6c('0x65'));}return _0x5a378b[_0x1f6c('0x66')](_0x3ba729);}})[_0x1f6c('0x4a')](handleError(_0x5a378b,null));};exports[_0x1f6c('0x6c')]=function(_0x5beb7a,_0x326dc1){return db[_0x1f6c('0x47')][_0x1f6c('0x51')]({'where':{'id':_0x5beb7a[_0x1f6c('0x4c')]['id']},'attributes':['securePassword']})['then'](respondWithResult(_0x326dc1,null))[_0x1f6c('0x4a')](handleError(_0x326dc1,null));};exports['addPreferred']=function(_0x43799e,_0x3baaa1,_0x205108){if(_0x43799e[_0x1f6c('0x53')]&&_0x43799e[_0x1f6c('0x53')][_0x1f6c('0x54')]){_0x43799e['body']['preferred']=_0x43799e[_0x1f6c('0x53')][_0x1f6c('0x54')];}return db[_0x1f6c('0x47')][_0x1f6c('0x51')]({'where':{'id':_0x43799e['params']['id']}})['then'](handleEntityNotFound(_0x3baaa1,null))['then'](saveUpdates(_0x43799e[_0x1f6c('0x50')],null))[_0x1f6c('0x1b')](respondWithResult(_0x3baaa1,null))[_0x1f6c('0x4a')](handleError(_0x3baaa1,null));};var utilLicense=require('../../config/license/util');exports[_0x1f6c('0x6d')]=function(_0x504505,_0x16fccc,_0x12490f){var _0x5736fe=_0x1f6c('0x56');var _0x383857={'custom':![]};return utilLicense['getLicense']()[_0x1f6c('0x1b')](function(_0x758d74){if(_0x758d74){_0x383857=_0x758d74;}return db[_0x1f6c('0x47')][_0x1f6c('0x51')]({'where':{'id':_0x504505[_0x1f6c('0x4c')]['id']},'attributes':[_0x1f6c('0x55'),'loginLogo',_0x1f6c('0x58'),_0x1f6c('0x69'),_0x1f6c('0x59'),'defaultLoginLogo',_0x1f6c('0x6e'),'defaultFavicon'],'raw':!![]});})[_0x1f6c('0x1b')](handleEntityNotFound(_0x16fccc,null))[_0x1f6c('0x1b')](function(_0x4b1ee2){if(_0x4b1ee2){var _0x30eb35=_0x4b1ee2[_0x1f6c('0x58')]&&fs[_0x1f6c('0x62')](path['join'](config[_0x1f6c('0x5d')],_0x5736fe,_[_0x1f6c('0x5e')](_0x4b1ee2[_0x1f6c('0x58')])))?path[_0x1f6c('0x5c')](config['root'],_0x5736fe,_[_0x1f6c('0x5e')](_0x4b1ee2['preferred'])):path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x5736fe,_[_0x1f6c('0x5e')](_0x1f6c('0x6f')));var _0x5c0c40=_0x1f6c('0x6a')+_['upperFirst'](_0x1f6c('0x58'));if(_0x4b1ee2[_0x5c0c40]||!_0x383857['custom']||!_0x383857['preferred']){_0x30eb35=path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x5736fe,_[_0x1f6c('0x5e')](_0x1f6c('0x6f')));}if(!fs[_0x1f6c('0x62')](_0x30eb35)){throw new db[(_0x1f6c('0x63'))][(_0x1f6c('0x64'))](_[_0x1f6c('0x60')](_0x1f6c('0x58'))+_0x1f6c('0x65'));}return _0x16fccc[_0x1f6c('0x66')](_0x30eb35);}})['catch'](handleError(_0x16fccc,null));};exports['addFavicon']=function(_0x354ed7,_0x85c8a7,_0x53283b){if(_0x354ed7[_0x1f6c('0x53')]&&_0x354ed7[_0x1f6c('0x53')]['filename']){_0x354ed7['body'][_0x1f6c('0x69')]=_0x354ed7[_0x1f6c('0x53')][_0x1f6c('0x54')];}return db[_0x1f6c('0x47')][_0x1f6c('0x51')]({'where':{'id':_0x354ed7[_0x1f6c('0x4c')]['id']}})[_0x1f6c('0x1b')](handleEntityNotFound(_0x85c8a7,null))[_0x1f6c('0x1b')](saveUpdates(_0x354ed7[_0x1f6c('0x50')],null))[_0x1f6c('0x1b')](respondWithResult(_0x85c8a7,null))['catch'](handleError(_0x85c8a7,null));};var utilLicense=require(_0x1f6c('0x16'));exports[_0x1f6c('0x70')]=function(_0x480305,_0xf8974a,_0x3148f5){var _0x152276=_0x1f6c('0x56');var _0x58396c={'custom':![]};return utilLicense[_0x1f6c('0x57')]()[_0x1f6c('0x1b')](function(_0x340dbe){if(_0x340dbe){_0x58396c=_0x340dbe;}return db[_0x1f6c('0x47')][_0x1f6c('0x51')]({'where':{'id':_0x480305[_0x1f6c('0x4c')]['id']},'attributes':['logo',_0x1f6c('0x68'),_0x1f6c('0x58'),'favicon',_0x1f6c('0x59'),'defaultLoginLogo','defaultPreferred','defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0xf8974a,null))[_0x1f6c('0x1b')](function(_0x328549){if(_0x328549){var _0x5096cd=_0x328549[_0x1f6c('0x69')]&&fs['existsSync'](path['join'](config['root'],_0x152276,_['toLower'](_0x328549[_0x1f6c('0x69')])))?path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x152276,_[_0x1f6c('0x5e')](_0x328549['favicon'])):path[_0x1f6c('0x5c')](config['root'],_0x152276,_[_0x1f6c('0x5e')](_0x1f6c('0x71')));var _0x542000=_0x1f6c('0x6a')+_[_0x1f6c('0x60')]('favicon');if(_0x328549[_0x542000]||!_0x58396c[_0x1f6c('0x61')]){_0x5096cd=path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x152276,_[_0x1f6c('0x5e')](_0x1f6c('0x71')));}if(!fs[_0x1f6c('0x62')](_0x5096cd)){throw new db[(_0x1f6c('0x63'))][(_0x1f6c('0x64'))](_[_0x1f6c('0x60')]('favicon')+_0x1f6c('0x65'));}return _0xf8974a[_0x1f6c('0x66')](_0x5096cd);}})[_0x1f6c('0x4a')](handleError(_0xf8974a,null));};exports[_0x1f6c('0x72')]=function(_0x1d551c,_0x5d77a8){var _0x494149={'offset':moment()['utcOffset']()};_0x494149[_0x1f6c('0x73')]=moment()[_0x1f6c('0x74')](_0x494149['offset'])[_0x1f6c('0x75')](_0x1f6c('0x76'));return _0x5d77a8[_0x1f6c('0x23')](0xc8)[_0x1f6c('0x32')](_0x494149);};
\ No newline at end of file
index 54f6144..797529b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['./setting.attributes','exports','define','settings','lodash','util','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x492221,_0x9e2521){var _0x398bf9=function(_0x303c5b){while(--_0x303c5b){_0x492221['push'](_0x492221['shift']());}};_0x398bf9(++_0x9e2521);}(_0x55ca,0x126));var _0xa55c=function(_0x4b6792,_0x1098bb){_0x4b6792=_0x4b6792-0x0;var _0x406802=_0x55ca[_0x4b6792];return _0x406802;};'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
+var _0x3e74=['exports','Setting','settings','lodash','../../config/logger','api','moment','path','../../config/environment','./setting.attributes'];(function(_0x4d9bb2,_0x3db50d){var _0x3179fe=function(_0x5272f3){while(--_0x5272f3){_0x4d9bb2['push'](_0x4d9bb2['shift']());}};_0x3179fe(++_0x3db50d);}(_0x3e74,0x175));var _0x43e7=function(_0x5d4c44,_0x25ea6b){_0x5d4c44=_0x5d4c44-0x0;var _0x2460e9=_0x3e74[_0x5d4c44];return _0x2460e9;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var logger=require(_0x43e7('0x1'))(_0x43e7('0x2'));var moment=require(_0x43e7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x43e7('0x4'));var rimraf=require('rimraf');var config=require(_0x43e7('0x5'));var attributes=require(_0x43e7('0x6'));module[_0x43e7('0x7')]=function(_0x1c503b,_0xc98b9c){return _0x1c503b['define'](_0x43e7('0x8'),attributes,{'tableName':_0x43e7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a85b87c..38c88ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92ef=['lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSetting','Setting','raw','options','where','attributes','include','map','model'];(function(_0x4bc984,_0xd65bdd){var _0x500594=function(_0x16783b){while(--_0x16783b){_0x4bc984['push'](_0x4bc984['shift']());}};_0x500594(++_0xd65bdd);}(_0x92ef,0x129));var _0xf92e=function(_0x4f3e2e,_0x281237){_0x4f3e2e=_0x4f3e2e-0x0;var _0x121faf=_0x92ef[_0x4f3e2e];return _0x121faf;};'use strict';var _=require(_0xf92e('0x0'));var util=require(_0xf92e('0x1'));var moment=require(_0xf92e('0x2'));var BPromise=require('bluebird');var rs=require(_0xf92e('0x3'));var fs=require('fs');var Redis=require(_0xf92e('0x4'));var db=require(_0xf92e('0x5'))['db'];var utils=require(_0xf92e('0x6'));var logger=require(_0xf92e('0x7'))(_0xf92e('0x8'));var config=require(_0xf92e('0x9'));var jayson=require(_0xf92e('0xa'));var client=jayson['client'][_0xf92e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x298f50,_0x3a0937,_0x482fdc){return new BPromise(function(_0x3772d1,_0x55a9a4){return client[_0xf92e('0xc')](_0x298f50,_0x482fdc)[_0xf92e('0xd')](function(_0x275e81){logger[_0xf92e('0xe')](_0xf92e('0xf'),_0x3a0937,_0xf92e('0x10'));logger['debug'](_0xf92e('0x11'),_0x3a0937,_0xf92e('0x10'),JSON[_0xf92e('0x12')](_0x275e81));if(_0x275e81[_0xf92e('0x13')]){if(_0x275e81[_0xf92e('0x13')][_0xf92e('0x14')]===0x1f4){logger['error'](_0xf92e('0xf'),_0x3a0937,_0x275e81[_0xf92e('0x13')][_0xf92e('0x15')]);return _0x55a9a4(_0x275e81[_0xf92e('0x13')][_0xf92e('0x15')]);}logger[_0xf92e('0x13')](_0xf92e('0xf'),_0x3a0937,_0x275e81[_0xf92e('0x13')][_0xf92e('0x15')]);return _0x3772d1(_0x275e81[_0xf92e('0x13')][_0xf92e('0x15')]);}else{logger['info']('Setting,\x20%s,\x20%s',_0x3a0937,_0xf92e('0x10'));_0x3772d1(_0x275e81[_0xf92e('0x16')][_0xf92e('0x15')]);}})[_0xf92e('0x17')](function(_0x50c9df){logger['error']('Setting,\x20%s,\x20%s',_0x3a0937,_0x50c9df);_0x55a9a4(_0x50c9df);});});}exports[_0xf92e('0x18')]=function(_0x15fe46){var _0x3235d4=this;return new Promise(function(_0x453fd9,_0x30f177){return db[_0xf92e('0x19')]['find']({'raw':_0x15fe46['options']?_0x15fe46['options'][_0xf92e('0x1a')]===undefined?!![]:![]:!![],'where':_0x15fe46[_0xf92e('0x1b')]?_0x15fe46[_0xf92e('0x1b')][_0xf92e('0x1c')]||null:null,'attributes':_0x15fe46['options']?_0x15fe46[_0xf92e('0x1b')][_0xf92e('0x1d')]||null:null,'include':_0x15fe46[_0xf92e('0x1b')]?_0x15fe46['options'][_0xf92e('0x1e')]?_[_0xf92e('0x1f')](_0x15fe46[_0xf92e('0x1b')][_0xf92e('0x1e')],function(_0x20acfb){return{'model':db[_0x20acfb[_0xf92e('0x20')]],'as':_0x20acfb['as'],'attributes':_0x20acfb['attributes'],'include':_0x20acfb[_0xf92e('0x1e')]?_[_0xf92e('0x1f')](_0x20acfb[_0xf92e('0x1e')],function(_0x17f7fe){return{'model':db[_0x17f7fe[_0xf92e('0x20')]],'as':_0x17f7fe['as'],'attributes':_0x17f7fe[_0xf92e('0x1d')],'include':_0x17f7fe[_0xf92e('0x1e')]?_[_0xf92e('0x1f')](_0x17f7fe[_0xf92e('0x1e')],function(_0x1f0772){return{'model':db[_0x1f0772['model']],'as':_0x1f0772['as'],'attributes':_0x1f0772['attributes']};}):[]};}):[]};}):[]:[]})[_0xf92e('0xd')](function(_0xf244a3){logger[_0xf92e('0xe')](_0xf92e('0x18'),_0x15fe46);logger['debug'](_0xf92e('0x18'),_0x15fe46,JSON[_0xf92e('0x12')](_0xf244a3));_0x453fd9(_0xf244a3);})[_0xf92e('0x17')](function(_0x3e7392){logger[_0xf92e('0x13')](_0xf92e('0x18'),_0x3e7392['message'],_0x15fe46);_0x30f177(_0x3235d4['error'](0x1f4,_0x3e7392[_0xf92e('0x15')]));});});};
\ No newline at end of file
+var _0xb532=['client','http','request','then','info','debug','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Setting,\x20%s,\x20%s','message','result','catch','ShowSetting','Setting','find','options','attributes','include','map','model','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise'];(function(_0x2e671f,_0x2fd91e){var _0x16bfe8=function(_0x1e7a88){while(--_0x1e7a88){_0x2e671f['push'](_0x2e671f['shift']());}};_0x16bfe8(++_0x2fd91e);}(_0xb532,0xe9));var _0x2b53=function(_0x559a98,_0x28c39b){_0x559a98=_0x559a98-0x0;var _0x22810a=_0xb532[_0x559a98];return _0x22810a;};'use strict';var _=require(_0x2b53('0x0'));var util=require('util');var moment=require(_0x2b53('0x1'));var BPromise=require('bluebird');var rs=require(_0x2b53('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2b53('0x3'))['db'];var utils=require(_0x2b53('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x2b53('0x5'));var jayson=require(_0x2b53('0x6'));var client=jayson[_0x2b53('0x7')][_0x2b53('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4ba412,_0x1b5006,_0x9ca228){return new BPromise(function(_0x206706,_0x31f33b){return client[_0x2b53('0x9')](_0x4ba412,_0x9ca228)[_0x2b53('0xa')](function(_0x119ae2){logger[_0x2b53('0xb')]('Setting,\x20%s,\x20%s',_0x1b5006,'request\x20sent');logger[_0x2b53('0xc')](_0x2b53('0xd'),_0x1b5006,_0x2b53('0xe'),JSON[_0x2b53('0xf')](_0x119ae2));if(_0x119ae2[_0x2b53('0x10')]){if(_0x119ae2[_0x2b53('0x10')][_0x2b53('0x11')]===0x1f4){logger[_0x2b53('0x10')](_0x2b53('0x12'),_0x1b5006,_0x119ae2[_0x2b53('0x10')][_0x2b53('0x13')]);return _0x31f33b(_0x119ae2[_0x2b53('0x10')][_0x2b53('0x13')]);}logger['error']('Setting,\x20%s,\x20%s',_0x1b5006,_0x119ae2[_0x2b53('0x10')]['message']);return _0x206706(_0x119ae2[_0x2b53('0x10')][_0x2b53('0x13')]);}else{logger['info']('Setting,\x20%s,\x20%s',_0x1b5006,_0x2b53('0xe'));_0x206706(_0x119ae2[_0x2b53('0x14')][_0x2b53('0x13')]);}})[_0x2b53('0x15')](function(_0x3efe00){logger['error'](_0x2b53('0x12'),_0x1b5006,_0x3efe00);_0x31f33b(_0x3efe00);});});}exports[_0x2b53('0x16')]=function(_0x2aff68){var _0x39be52=this;return new Promise(function(_0xb00bcc,_0x2c2906){return db[_0x2b53('0x17')][_0x2b53('0x18')]({'raw':_0x2aff68[_0x2b53('0x19')]?_0x2aff68[_0x2b53('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x2aff68[_0x2b53('0x19')]?_0x2aff68[_0x2b53('0x19')]['where']||null:null,'attributes':_0x2aff68[_0x2b53('0x19')]?_0x2aff68[_0x2b53('0x19')][_0x2b53('0x1a')]||null:null,'include':_0x2aff68[_0x2b53('0x19')]?_0x2aff68['options'][_0x2b53('0x1b')]?_[_0x2b53('0x1c')](_0x2aff68[_0x2b53('0x19')][_0x2b53('0x1b')],function(_0x14340e){return{'model':db[_0x14340e[_0x2b53('0x1d')]],'as':_0x14340e['as'],'attributes':_0x14340e['attributes'],'include':_0x14340e[_0x2b53('0x1b')]?_[_0x2b53('0x1c')](_0x14340e[_0x2b53('0x1b')],function(_0x5eb68d){return{'model':db[_0x5eb68d[_0x2b53('0x1d')]],'as':_0x5eb68d['as'],'attributes':_0x5eb68d['attributes'],'include':_0x5eb68d['include']?_[_0x2b53('0x1c')](_0x5eb68d[_0x2b53('0x1b')],function(_0x14e201){return{'model':db[_0x14e201[_0x2b53('0x1d')]],'as':_0x14e201['as'],'attributes':_0x14e201[_0x2b53('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x2b53('0xa')](function(_0xddd4c0){logger[_0x2b53('0xb')]('ShowSetting',_0x2aff68);logger['debug']('ShowSetting',_0x2aff68,JSON[_0x2b53('0xf')](_0xddd4c0));_0xb00bcc(_0xddd4c0);})[_0x2b53('0x15')](function(_0x213fb4){logger['error']('ShowSetting',_0x213fb4[_0x2b53('0x13')],_0x2aff68);_0x2c2906(_0x39be52[_0x2b53('0x10')](0x1f4,_0x213fb4[_0x2b53('0x13')]));});});};
\ No newline at end of file
index bdf0637..a7f88b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['/:id','show','getDispositions','/:id/canned_answers','/:id/applications','getInteractions','/:id/status','statusGet','post','create','/:id/dispositions','addAnswer','/:id/notify','/:id/send','send','status','/:id/users','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./smsAccount.controller','get','isAuthenticated','describe'];(function(_0x5ee6c7,_0x2f5593){var _0x224d69=function(_0x4a0669){while(--_0x4a0669){_0x5ee6c7['push'](_0x5ee6c7['shift']());}};_0x224d69(++_0x2f5593);}(_0x5fc3,0xa8));var _0x35fc=function(_0x5a7112,_0x1f9492){_0x5a7112=_0x5a7112-0x0;var _0x3147f7=_0x5fc3[_0x5a7112];return _0x3147f7;};'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/dispositions',auth[_0x35fc('0xa')](),controller[_0x35fc('0xe')]);router['get'](_0x35fc('0xf'),auth[_0x35fc('0xa')](),controller['getAnswers']);router[_0x35fc('0x9')](_0x35fc('0x10'),auth['isAuthenticated'](),controller['getApplications']);router[_0x35fc('0x9')]('/:id/interactions',auth[_0x35fc('0xa')](),controller[_0x35fc('0x11')]);router[_0x35fc('0x9')](_0x35fc('0x12'),controller[_0x35fc('0x13')]);router['get']('/:id/users',auth['isAuthenticated'](),controller['getAgents']);router[_0x35fc('0x14')]('/',auth[_0x35fc('0xa')](),controller[_0x35fc('0x15')]);router[_0x35fc('0x14')](_0x35fc('0x16'),auth[_0x35fc('0xa')](),controller['addDisposition']);router[_0x35fc('0x14')](_0x35fc('0xf'),auth['isAuthenticated'](),controller[_0x35fc('0x17')]);router[_0x35fc('0x14')](_0x35fc('0x18'),controller['notify']);router[_0x35fc('0x14')](_0x35fc('0x10'),auth[_0x35fc('0xa')](),controller['addApplications']);router[_0x35fc('0x14')](_0x35fc('0x19'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x1a')]);router[_0x35fc('0x14')](_0x35fc('0x12'),controller[_0x35fc('0x1b')]);router[_0x35fc('0x14')](_0x35fc('0x1c'),auth[_0x35fc('0xa')](),controller['addAgents']);router[_0x35fc('0x1d')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x1e')]);router[_0x35fc('0x1f')]('/:id',auth[_0x35fc('0xa')](),controller[_0x35fc('0x20')]);router['delete'](_0x35fc('0x16'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x21')]);router['delete'](_0x35fc('0xf'),auth['isAuthenticated'](),controller[_0x35fc('0x22')]);router[_0x35fc('0x1f')]('/:id/users',auth['isAuthenticated'](),controller[_0x35fc('0x23')]);module['exports']=router;
\ No newline at end of file
+var _0x53ec=['send','status','update','delete','removeDispositions','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./smsAccount.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/applications','getApplications','getInteractions','/:id/status','statusGet','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addApplications','/:id/send'];(function(_0x498875,_0x988c69){var _0x3afb36=function(_0x558777){while(--_0x558777){_0x498875['push'](_0x498875['shift']());}};_0x3afb36(++_0x988c69);}(_0x53ec,0x192));var _0xc53e=function(_0x427d3a,_0x23724c){_0x427d3a=_0x427d3a-0x0;var _0xe5c521=_0x53ec[_0x427d3a];return _0xe5c521;};'use strict';var multer=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var path=require(_0xc53e('0x2'));var timeout=require(_0xc53e('0x3'));var express=require(_0xc53e('0x4'));var router=express[_0xc53e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc53e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc53e('0x7'));var controller=require(_0xc53e('0x8'));router['get']('/',auth[_0xc53e('0x9')](),controller['index']);router[_0xc53e('0xa')](_0xc53e('0xb'),auth['isAuthenticated'](),controller[_0xc53e('0xc')]);router[_0xc53e('0xa')](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0xe')]);router[_0xc53e('0xa')](_0xc53e('0xf'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x10')]);router['get']('/:id/canned_answers',auth[_0xc53e('0x9')](),controller['getAnswers']);router['get'](_0xc53e('0x11'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x12')]);router[_0xc53e('0xa')]('/:id/interactions',auth['isAuthenticated'](),controller[_0xc53e('0x13')]);router[_0xc53e('0xa')](_0xc53e('0x14'),controller[_0xc53e('0x15')]);router[_0xc53e('0xa')](_0xc53e('0x16'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x17')]);router[_0xc53e('0x18')]('/',auth[_0xc53e('0x9')](),controller['create']);router[_0xc53e('0x18')](_0xc53e('0xf'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x19')]);router[_0xc53e('0x18')](_0xc53e('0x1a'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1b')]);router[_0xc53e('0x18')]('/:id/notify',controller['notify']);router[_0xc53e('0x18')](_0xc53e('0x11'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1c')]);router[_0xc53e('0x18')](_0xc53e('0x1d'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1e')]);router[_0xc53e('0x18')](_0xc53e('0x14'),controller[_0xc53e('0x1f')]);router[_0xc53e('0x18')](_0xc53e('0x16'),auth['isAuthenticated'](),controller['addAgents']);router['put'](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x20')]);router[_0xc53e('0x21')](_0xc53e('0xd'),auth['isAuthenticated'](),controller['destroy']);router[_0xc53e('0x21')]('/:id/dispositions',auth[_0xc53e('0x9')](),controller[_0xc53e('0x22')]);router[_0xc53e('0x21')](_0xc53e('0x1a'),auth[_0xc53e('0x9')](),controller['removeAnswers']);router[_0xc53e('0x21')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0xc53e('0x23')]=router;
\ No newline at end of file
index 7d423f8..b60e8ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc273=['Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','randomstring','STRING','name','generate','ENUM','twilio','skebby','connectel','clickatell','bandwidth','infobip','intelepeer','BOOLEAN','TEXT'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc273,0x1aa));var _0x3c27=function(_0x43de22,_0x1eced6){_0x43de22=_0x43de22-0x0;var _0x4b15ee=_0xc273[_0x43de22];return _0x4b15ee;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x3c27('0x0'));module['exports']={'name':{'type':Sequelize[_0x3c27('0x1')],'unique':_0x3c27('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0x3c27('0x1')],'allowNull':![]},'remote':{'type':Sequelize[_0x3c27('0x1')],'allowNull':![]},'token':{'type':Sequelize[_0x3c27('0x1')],'defaultValue':function(){return rs[_0x3c27('0x3')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x3c27('0x4')](_0x3c27('0x5'),_0x3c27('0x6'),_0x3c27('0x7'),'clicksend','plivo',_0x3c27('0x8'),_0x3c27('0x9'),'csc',_0x3c27('0xa'),_0x3c27('0xb'))},'accountSid':{'type':Sequelize[_0x3c27('0x1')]},'authId':{'type':Sequelize[_0x3c27('0x1')]},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0x3c27('0x4')]('SI','TI','GP')},'username':{'type':Sequelize[_0x3c27('0x1')]},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize[_0x3c27('0x1')]},'applicationId':{'type':Sequelize[_0x3c27('0x1')]},'accountId':{'type':Sequelize[_0x3c27('0x1')]},'senderString':{'type':Sequelize[_0x3c27('0x1')]},'deliveryReport':{'type':Sequelize[_0x3c27('0xc')],'defaultValue':![]},'description':{'type':Sequelize[_0x3c27('0x1')]},'notificationTemplate':{'type':Sequelize[_0x3c27('0xd')],'defaultValue':function(){return _0x3c27('0xe');}},'notificationSound':{'type':Sequelize[_0x3c27('0xc')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x3c27('0xc')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x3c27('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x3c27('0xc')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x3c27('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x3c27('0x1')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x3c27('0xc')],'defaultValue':![],'comment':_0x3c27('0x10'),'set':function(_0x31093a){if(!_0x31093a)this[_0x3c27('0x11')](_0x3c27('0x12'),null);this['setDataValue'](_0x3c27('0x13'),_0x31093a);}}};
\ No newline at end of file
+var _0x7bad=['intelepeer','ENUM','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','randomstring','exports','STRING','generate','twilio','skebby','connectel','clicksend','clickatell','bandwidth','csc'];(function(_0x24cc36,_0x385f02){var _0x49233a=function(_0x3fbc5a){while(--_0x3fbc5a){_0x24cc36['push'](_0x24cc36['shift']());}};_0x49233a(++_0x385f02);}(_0x7bad,0xe6));var _0xd7ba=function(_0xeefaee,_0x4c8038){_0xeefaee=_0xeefaee-0x0;var _0x225a0e=_0x7bad[_0xeefaee];return _0x225a0e;};'use strict';var Sequelize=require(_0xd7ba('0x0'));var rs=require(_0xd7ba('0x1'));module[_0xd7ba('0x2')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0xd7ba('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0xd7ba('0x3')],'defaultValue':function(){return rs[_0xd7ba('0x4')]();}},'phone':{'type':Sequelize[_0xd7ba('0x3')]},'type':{'type':Sequelize['ENUM'](_0xd7ba('0x5'),_0xd7ba('0x6'),_0xd7ba('0x7'),_0xd7ba('0x8'),'plivo',_0xd7ba('0x9'),_0xd7ba('0xa'),_0xd7ba('0xb'),'infobip',_0xd7ba('0xc'))},'accountSid':{'type':Sequelize[_0xd7ba('0x3')]},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0xd7ba('0xd')]('SI','TI','GP')},'username':{'type':Sequelize[_0xd7ba('0x3')]},'password':{'type':Sequelize[_0xd7ba('0x3')]},'apiKey':{'type':Sequelize[_0xd7ba('0x3')]},'applicationId':{'type':Sequelize[_0xd7ba('0x3')]},'accountId':{'type':Sequelize[_0xd7ba('0x3')]},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0xd7ba('0x3')]},'notificationTemplate':{'type':Sequelize[_0xd7ba('0xe')],'defaultValue':function(){return _0xd7ba('0xf');}},'notificationSound':{'type':Sequelize[_0xd7ba('0x10')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xd7ba('0x10')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xd7ba('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xd7ba('0x10')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xd7ba('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xd7ba('0x10')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xd7ba('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xd7ba('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xd7ba('0x11')],'comment':_0xd7ba('0x12')},'mandatoryDisposition':{'type':Sequelize[_0xd7ba('0x10')],'defaultValue':![],'comment':_0xd7ba('0x13'),'set':function(_0x23b538){if(!_0x23b538)this[_0xd7ba('0x14')](_0xd7ba('0x15'),null);this[_0xd7ba('0x14')]('mandatoryDisposition',_0x23b538);}}};
\ No newline at end of file
index 6d34d11..4af4059 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe170=['internal','Tags','tag','to\x20is\x20mandatory','CmList','List','out','SmsMessage','dataValues','Messages','inspect','skebby_dispatch_id','requestid','status_code','DELIVERED','groupName','redif','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','ACCEPTD','statusGet','received\x20delivery\x20report\x20from','message-id','state','addAgents','emit','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','http','request','then','request\x20sent','stringify','error','code','SmsAccount,\x20%s,\x20%s','message','info','result','sendStatus','end','undefined','limit','count','offset','status','set','Content-Range','json','apply','update','destroy','get','UserProfileResource','stack','name','index','Pause','mandatoryDispositionPause','SmsAccount','rawAttributes','type','key','query','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','filters','pick','filter','merge','where','map','VIRTUAL','include','findAll','rows','catch','show','params','keys','length','includeAll','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','SmsAccounts','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','SmsAccountId','Disposition','getDispositions','findOne','order','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','sms','SmsApplication','Applications','account','applications','orderBy','priority','asc','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','mobile','twilio','from','Body','messageId','skebby','sender','text','connectel','clicksend','message_id','plivo','From','Text','infobip','results','csc','originatingAddress','clickatell','fromNumber','bandwidth','intelepeer','refid','ValidationError','from\x20is\x20mandatory','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','ListId','CmContact','Contacts','DESC','list','omit','contact','SmsInteraction','spread','interaction','autoclose','push','unmanaged','*,*,*,*','created','ContactId','AttachmentId','UserId','unshift','agent','Start','startRouting','SmsAccount,\x20%s,\x20%s,\x20%s','debug','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','send','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','finally','getApplications','getInteractions','Contact','User','Owner','fullname'];(function(_0x363759,_0x37f7da){var _0x3fd8df=function(_0x4ea8b9){while(--_0x4ea8b9){_0x363759['push'](_0x363759['shift']());}};_0x3fd8df(++_0x37f7da);}(_0xe170,0x1f2));var _0x0e17=function(_0x3d7365,_0x13ccfb){_0x3d7365=_0x3d7365-0x0;var _0x3d96ac=_0xe170[_0x3d7365];return _0x3d96ac;};'use strict';var emlformat=require(_0x0e17('0x0'));var rimraf=require(_0x0e17('0x1'));var zipdir=require(_0x0e17('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0e17('0x3'));var BPromise=require(_0x0e17('0x4'));var Mustache=require(_0x0e17('0x5'));var util=require(_0x0e17('0x6'));var path=require(_0x0e17('0x7'));var sox=require(_0x0e17('0x8'));var csv=require(_0x0e17('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0e17('0xa'));var squel=require(_0x0e17('0xb'));var crypto=require(_0x0e17('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x0e17('0xd'));var toCsv=require(_0x0e17('0x9'));var querystring=require(_0x0e17('0xe'));var Papa=require('papaparse');var Redis=require(_0x0e17('0xf'));var authService=require(_0x0e17('0x10'));var qs=require(_0x0e17('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x0e17('0x12'))('api');var utils=require(_0x0e17('0x13'));var config=require(_0x0e17('0x14'));var licenseUtil=require(_0x0e17('0x15'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x0e17('0x16')](config[_0x0e17('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x0e17('0x18'))(new Redis(config[_0x0e17('0x17')]));require(_0x0e17('0x19'))[_0x0e17('0x1a')](socket);var jayson=require(_0x0e17('0x1b'));var client=jayson[_0x0e17('0x1c')][_0x0e17('0x1d')]({'port':0x232c});function respondWithRpcPromise(_0x23c350,_0xdc7404,_0x30dce2,_0x442a9b){return new BPromise(function(_0x572ee5,_0x41188b){var _0x4fd3c9=_0x442a9b||client;return _0x4fd3c9[_0x0e17('0x1e')](_0x23c350,_0x30dce2)[_0x0e17('0x1f')](function(_0x1d6d3d){logger['info']('SmsAccount,\x20%s,\x20%s',_0xdc7404,'request\x20sent');logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xdc7404,_0x0e17('0x20'),JSON[_0x0e17('0x21')](_0x1d6d3d));if(_0x1d6d3d[_0x0e17('0x22')]){if(_0x1d6d3d[_0x0e17('0x22')][_0x0e17('0x23')]===0x1f4){logger[_0x0e17('0x22')](_0x0e17('0x24'),_0xdc7404,_0x1d6d3d[_0x0e17('0x22')][_0x0e17('0x25')]);return _0x41188b(_0x1d6d3d[_0x0e17('0x22')]['message']);}logger['error'](_0x0e17('0x24'),_0xdc7404,_0x1d6d3d[_0x0e17('0x22')][_0x0e17('0x25')]);return _0x572ee5(_0x1d6d3d['error']['message']);}else{logger[_0x0e17('0x26')](_0x0e17('0x24'),_0xdc7404,_0x0e17('0x20'));_0x572ee5(_0x1d6d3d[_0x0e17('0x27')][_0x0e17('0x25')]);}})['catch'](function(_0x7d81f7){logger[_0x0e17('0x22')]('SmsAccount,\x20%s,\x20%s',_0xdc7404,_0x7d81f7);_0x41188b(_0x7d81f7);});});}function respondWithStatusCode(_0x177c98,_0x3a3a2b){_0x3a3a2b=_0x3a3a2b||0xcc;return function(_0x1d84e1){if(_0x1d84e1){return _0x177c98[_0x0e17('0x28')](_0x3a3a2b);}return _0x177c98['status'](_0x3a3a2b)[_0x0e17('0x29')]();};}function respondWithResult(_0x3e7726,_0x5ae0ee){_0x5ae0ee=_0x5ae0ee||0xc8;return function(_0x3ef666){if(_0x3ef666){return _0x3e7726['status'](_0x5ae0ee)['json'](_0x3ef666);}};}function respondWithFilteredResult(_0x5558db,_0x35099e){return function(_0x261c13){if(_0x261c13){var _0x276f13=typeof _0x35099e['offset']===_0x0e17('0x2a')&&typeof _0x35099e[_0x0e17('0x2b')]===_0x0e17('0x2a');var _0x4df9d0=_0x261c13[_0x0e17('0x2c')];var _0x376dd0=_0x276f13?0x0:_0x35099e[_0x0e17('0x2d')];var _0x2f1552=_0x276f13?_0x261c13[_0x0e17('0x2c')]:_0x35099e[_0x0e17('0x2d')]+_0x35099e['limit'];var _0x5848b2;if(_0x2f1552>=_0x4df9d0){_0x2f1552=_0x4df9d0;_0x5848b2=0xc8;}else{_0x5848b2=0xce;}_0x5558db[_0x0e17('0x2e')](_0x5848b2);return _0x5558db[_0x0e17('0x2f')](_0x0e17('0x30'),_0x376dd0+'-'+_0x2f1552+'/'+_0x4df9d0)[_0x0e17('0x31')](_0x261c13);}return null;};}function patchUpdates(_0x2418d0){return function(_0xbe44f2){try{jsonpatch[_0x0e17('0x32')](_0xbe44f2,_0x2418d0,!![]);}catch(_0xbb9f66){return BPromise['reject'](_0xbb9f66);}return _0xbe44f2['save']();};}function saveUpdates(_0x5d9adb,_0x1fc22d){return function(_0x3c8a3e){if(_0x3c8a3e){return _0x3c8a3e[_0x0e17('0x33')](_0x5d9adb)['then'](function(_0x58ccfc){return _0x58ccfc;});}return null;};}function removeEntity(_0x1eb4f4,_0x524c2a){return function(_0x36833b){if(_0x36833b){return _0x36833b[_0x0e17('0x34')]()[_0x0e17('0x1f')](function(){var _0x585208=_0x36833b[_0x0e17('0x35')]({'plain':!![]});var _0x204a2e='SmsAccounts';return db[_0x0e17('0x36')][_0x0e17('0x34')]({'where':{'type':_0x204a2e,'resourceId':_0x585208['id']}})[_0x0e17('0x1f')](function(){return _0x36833b;});})[_0x0e17('0x1f')](function(){_0x1eb4f4[_0x0e17('0x2e')](0xcc)[_0x0e17('0x29')]();});}};}function handleEntityNotFound(_0x3ad92c,_0x1fb794){return function(_0x4148ea){if(!_0x4148ea){_0x3ad92c[_0x0e17('0x28')](0x194);}return _0x4148ea;};}function handleError(_0x97e12f,_0x4b15b4){_0x4b15b4=_0x4b15b4||0x1f4;return function(_0x4a7f9b){logger[_0x0e17('0x22')](_0x4a7f9b[_0x0e17('0x37')]);if(_0x4a7f9b[_0x0e17('0x38')]){delete _0x4a7f9b[_0x0e17('0x38')];}_0x97e12f[_0x0e17('0x2e')](_0x4b15b4)['send'](_0x4a7f9b);};}exports[_0x0e17('0x39')]=function(_0x1f3a4e,_0x481c3a){var _0x1f42b4={'include':[{'model':db[_0x0e17('0x3a')],'as':_0x0e17('0x3b')}]},_0x1aee63={},_0x4f887e={'count':0x0,'rows':[]};var _0x4bde5a=_['map'](db[_0x0e17('0x3c')][_0x0e17('0x3d')],function(_0x4a1750){return{'name':_0x4a1750['fieldName'],'type':_0x4a1750[_0x0e17('0x3e')][_0x0e17('0x3f')]};});_0x1aee63['model']=_['map'](_0x4bde5a,_0x0e17('0x38'));_0x1aee63[_0x0e17('0x40')]=_['keys'](_0x1f3a4e[_0x0e17('0x40')]);_0x1aee63['filters']=_[_0x0e17('0x41')](_0x1aee63[_0x0e17('0x42')],_0x1aee63[_0x0e17('0x40')]);_0x1f42b4[_0x0e17('0x43')]=_[_0x0e17('0x41')](_0x1aee63[_0x0e17('0x42')],qs[_0x0e17('0x44')](_0x1f3a4e[_0x0e17('0x40')][_0x0e17('0x44')]));_0x1f42b4[_0x0e17('0x43')]=_0x1f42b4['attributes']['length']?_0x1f42b4[_0x0e17('0x43')]:_0x1aee63[_0x0e17('0x42')];if(!_0x1f3a4e[_0x0e17('0x40')][_0x0e17('0x45')](_0x0e17('0x46'))){_0x1f42b4[_0x0e17('0x2b')]=qs[_0x0e17('0x2b')](_0x1f3a4e[_0x0e17('0x40')][_0x0e17('0x2b')]);_0x1f42b4[_0x0e17('0x2d')]=qs['offset'](_0x1f3a4e[_0x0e17('0x40')][_0x0e17('0x2d')]);}_0x1f42b4['order']=qs[_0x0e17('0x47')](_0x1f3a4e['query'][_0x0e17('0x47')]);_0x1f42b4['where']=qs[_0x0e17('0x48')](_[_0x0e17('0x49')](_0x1f3a4e[_0x0e17('0x40')],_0x1aee63[_0x0e17('0x48')]),_0x4bde5a);if(_0x1f3a4e['query'][_0x0e17('0x4a')]){_0x1f42b4['where']=_[_0x0e17('0x4b')](_0x1f42b4[_0x0e17('0x4c')],{'$or':_[_0x0e17('0x4d')](_0x4bde5a,function(_0x1b5387){if(_0x1b5387[_0x0e17('0x3e')]!==_0x0e17('0x4e')){var _0x4ee775={};_0x4ee775[_0x1b5387[_0x0e17('0x38')]]={'$like':'%'+_0x1f3a4e[_0x0e17('0x40')][_0x0e17('0x4a')]+'%'};return _0x4ee775;}})});}_0x1f42b4=_[_0x0e17('0x4b')]({},_0x1f42b4,_0x1f3a4e['options']);var _0x38183f={'where':_0x1f42b4[_0x0e17('0x4c')]};return db[_0x0e17('0x3c')][_0x0e17('0x2c')](_0x38183f)['then'](function(_0x25a76d){_0x4f887e['count']=_0x25a76d;if(_0x1f3a4e[_0x0e17('0x40')]['includeAll']){_0x1f42b4[_0x0e17('0x4f')]=[{'all':!![]}];}return db[_0x0e17('0x3c')][_0x0e17('0x50')](_0x1f42b4);})[_0x0e17('0x1f')](function(_0xed01a1){_0x4f887e[_0x0e17('0x51')]=_0xed01a1;return _0x4f887e;})[_0x0e17('0x1f')](respondWithFilteredResult(_0x481c3a,_0x1f42b4))[_0x0e17('0x52')](handleError(_0x481c3a,null));};exports[_0x0e17('0x53')]=function(_0x5e0df5,_0x163e42){var _0x3c0db0={'raw':![],'where':{'id':_0x5e0df5[_0x0e17('0x54')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x24f649={};_0x24f649[_0x0e17('0x42')]=_[_0x0e17('0x55')](db[_0x0e17('0x3c')]['rawAttributes']);_0x24f649['query']=_[_0x0e17('0x55')](_0x5e0df5[_0x0e17('0x40')]);_0x24f649[_0x0e17('0x48')]=_[_0x0e17('0x41')](_0x24f649[_0x0e17('0x42')],_0x24f649[_0x0e17('0x40')]);_0x3c0db0[_0x0e17('0x43')]=_[_0x0e17('0x41')](_0x24f649[_0x0e17('0x42')],qs['fields'](_0x5e0df5[_0x0e17('0x40')][_0x0e17('0x44')]));_0x3c0db0[_0x0e17('0x43')]=_0x3c0db0[_0x0e17('0x43')][_0x0e17('0x56')]?_0x3c0db0[_0x0e17('0x43')]:_0x24f649[_0x0e17('0x42')];if(_0x5e0df5[_0x0e17('0x40')][_0x0e17('0x57')]){_0x3c0db0[_0x0e17('0x4f')]=[{'all':!![]}];}_0x3c0db0=_[_0x0e17('0x4b')]({},_0x3c0db0,_0x5e0df5[_0x0e17('0x58')]);return db[_0x0e17('0x3c')][_0x0e17('0x59')](_0x3c0db0)[_0x0e17('0x1f')](handleEntityNotFound(_0x163e42,null))[_0x0e17('0x1f')](respondWithResult(_0x163e42,null))['catch'](handleError(_0x163e42,null));};exports[_0x0e17('0x5a')]=function(_0x1754c8,_0x16e074){return db[_0x0e17('0x3c')][_0x0e17('0x5a')](_0x1754c8['body'],{})[_0x0e17('0x1f')](function(_0x439052){var _0x195982=_0x1754c8[_0x0e17('0x5b')][_0x0e17('0x35')]({'plain':!![]});if(!_0x195982)throw new Error(_0x0e17('0x5c'));if(_0x195982[_0x0e17('0x5d')]==='user'){var _0x510e2b=_0x439052[_0x0e17('0x35')]({'plain':!![]});var _0x31940b=_0x0e17('0x5e');return db[_0x0e17('0x5f')][_0x0e17('0x59')]({'where':{'name':_0x31940b,'userProfileId':_0x195982[_0x0e17('0x60')]},'raw':!![]})[_0x0e17('0x1f')](function(_0x7e2a83){if(_0x7e2a83&&_0x7e2a83[_0x0e17('0x61')]===0x0){return db['UserProfileResource'][_0x0e17('0x5a')]({'name':_0x510e2b[_0x0e17('0x38')],'resourceId':_0x510e2b['id'],'type':_0x7e2a83[_0x0e17('0x38')],'sectionId':_0x7e2a83['id']},{})[_0x0e17('0x1f')](function(){return _0x439052;});}else{return _0x439052;}})['catch'](function(_0x54c7f8){logger['error'](_0x0e17('0x62'),_0x54c7f8);throw _0x54c7f8;});}return _0x439052;})[_0x0e17('0x1f')](respondWithResult(_0x16e074,0xc9))[_0x0e17('0x52')](handleError(_0x16e074,null));};exports[_0x0e17('0x33')]=function(_0x19445c,_0x2feb85){if(_0x19445c['body']['id']){delete _0x19445c[_0x0e17('0x63')]['id'];}return db[_0x0e17('0x3c')][_0x0e17('0x59')]({'where':{'id':_0x19445c[_0x0e17('0x54')]['id']},'include':[{'model':db[_0x0e17('0x3a')],'as':_0x0e17('0x3b')}]})['then'](handleEntityNotFound(_0x2feb85,null))[_0x0e17('0x1f')](saveUpdates(_0x19445c['body'],null))[_0x0e17('0x1f')](respondWithResult(_0x2feb85,null))[_0x0e17('0x52')](handleError(_0x2feb85,null));};exports['destroy']=function(_0x5c0882,_0x14ce4a){return db['SmsAccount'][_0x0e17('0x59')]({'where':{'id':_0x5c0882[_0x0e17('0x54')]['id']}})[_0x0e17('0x1f')](handleEntityNotFound(_0x14ce4a,null))[_0x0e17('0x1f')](removeEntity(_0x14ce4a,null))[_0x0e17('0x52')](handleError(_0x14ce4a,null));};exports['describe']=function(_0x43c7d3,_0x507dba){return db[_0x0e17('0x3c')][_0x0e17('0x64')]()[_0x0e17('0x1f')](respondWithResult(_0x507dba,null))[_0x0e17('0x52')](handleError(_0x507dba,null));};exports[_0x0e17('0x65')]=function(_0x26ad35,_0x453933,_0x17c3c1){if(_0x26ad35[_0x0e17('0x63')]['id']){delete _0x26ad35[_0x0e17('0x63')]['id'];}return db[_0x0e17('0x3c')][_0x0e17('0x59')]({'where':{'id':_0x26ad35[_0x0e17('0x54')]['id']}})['then'](handleEntityNotFound(_0x453933,null))[_0x0e17('0x1f')](function(_0x12a799){if(_0x12a799){_0x26ad35[_0x0e17('0x63')][_0x0e17('0x66')]=_0x12a799['id'];return db[_0x0e17('0x67')][_0x0e17('0x5a')](_0x26ad35[_0x0e17('0x63')]);}})[_0x0e17('0x1f')](respondWithResult(_0x453933,null))[_0x0e17('0x52')](handleError(_0x453933,null));};exports[_0x0e17('0x68')]=function(_0x366e42,_0xdcbdda,_0x535594){var _0x5171f3={'raw':![],'where':{}};var _0xc27117={};var _0x42a26d={'count':0x0,'rows':[]};return db[_0x0e17('0x3c')][_0x0e17('0x69')]({'where':{'id':_0x366e42[_0x0e17('0x54')]['id']}})[_0x0e17('0x1f')](handleEntityNotFound(_0xdcbdda,null))[_0x0e17('0x1f')](function(_0x430ec5){if(_0x430ec5){_0xc27117['model']=_[_0x0e17('0x55')](db[_0x0e17('0x67')][_0x0e17('0x3d')]);_0xc27117[_0x0e17('0x40')]=_[_0x0e17('0x55')](_0x366e42[_0x0e17('0x40')]);_0xc27117[_0x0e17('0x48')]=_[_0x0e17('0x41')](_0xc27117[_0x0e17('0x42')],_0xc27117[_0x0e17('0x40')]);_0x5171f3[_0x0e17('0x43')]=_[_0x0e17('0x41')](_0xc27117[_0x0e17('0x42')],qs[_0x0e17('0x44')](_0x366e42['query'][_0x0e17('0x44')]));_0x5171f3[_0x0e17('0x43')]=_0x5171f3[_0x0e17('0x43')]['length']?_0x5171f3[_0x0e17('0x43')]:_0xc27117['model'];if(!_0x366e42[_0x0e17('0x40')][_0x0e17('0x45')](_0x0e17('0x46'))){_0x5171f3['limit']=qs[_0x0e17('0x2b')](_0x366e42[_0x0e17('0x40')][_0x0e17('0x2b')]);_0x5171f3[_0x0e17('0x2d')]=qs[_0x0e17('0x2d')](_0x366e42['query'][_0x0e17('0x2d')]);}_0x5171f3[_0x0e17('0x6a')]=qs[_0x0e17('0x47')](_0x366e42['query'][_0x0e17('0x47')]);_0x5171f3[_0x0e17('0x4c')]=qs[_0x0e17('0x48')](_[_0x0e17('0x49')](_0x366e42[_0x0e17('0x40')],_0xc27117['filters']));_0x5171f3[_0x0e17('0x4c')][_0x0e17('0x66')]=_0x430ec5['id'];if(_0x366e42['query']['filter']){_0x5171f3[_0x0e17('0x4c')]=_[_0x0e17('0x4b')](_0x5171f3[_0x0e17('0x4c')],{'$or':_[_0x0e17('0x4d')](_0x5171f3[_0x0e17('0x43')],function(_0x2ff7b0){var _0x14125f={};_0x14125f[_0x2ff7b0]={'$like':'%'+_0x366e42[_0x0e17('0x40')][_0x0e17('0x4a')]+'%'};return _0x14125f;})});}_0x5171f3=_[_0x0e17('0x4b')]({},_0x5171f3,_0x366e42[_0x0e17('0x58')]);return db[_0x0e17('0x67')][_0x0e17('0x2c')]({'where':_0x5171f3['where']})[_0x0e17('0x1f')](function(_0x4e5c9c){_0x42a26d['count']=_0x4e5c9c;if(_0x366e42['query']['includeAll']){_0x5171f3[_0x0e17('0x4f')]=[{'all':!![]}];}return db[_0x0e17('0x67')][_0x0e17('0x50')](_0x5171f3);})[_0x0e17('0x1f')](function(_0x3ac68a){_0x42a26d[_0x0e17('0x51')]=_0x3ac68a;return _0x42a26d;});}})[_0x0e17('0x1f')](respondWithFilteredResult(_0xdcbdda,_0x5171f3))['catch'](handleError(_0xdcbdda,null));};exports[_0x0e17('0x6b')]=function(_0x5b4a4e,_0x32a294,_0x1934aa){return db[_0x0e17('0x3c')][_0x0e17('0x59')]({'where':{'id':_0x5b4a4e[_0x0e17('0x54')]['id']}})['then'](handleEntityNotFound(_0x32a294,null))[_0x0e17('0x1f')](function(_0x4a0b10){if(_0x4a0b10){return _0x4a0b10['removeDispositions'](_0x5b4a4e[_0x0e17('0x40')][_0x0e17('0x6c')]);}})['then'](respondWithStatusCode(_0x32a294,null))['catch'](handleError(_0x32a294,null));};exports[_0x0e17('0x6d')]=function(_0x69b672,_0x25f47d,_0x2715a3){if(_0x69b672['body']['id']){delete _0x69b672['body']['id'];}return db[_0x0e17('0x3c')][_0x0e17('0x59')]({'where':{'id':_0x69b672['params']['id']}})[_0x0e17('0x1f')](handleEntityNotFound(_0x25f47d,null))['then'](function(_0x525c86){if(_0x525c86){_0x69b672[_0x0e17('0x63')][_0x0e17('0x66')]=_0x525c86['id'];return db[_0x0e17('0x6e')]['create'](_0x69b672[_0x0e17('0x63')]);}})['then'](respondWithResult(_0x25f47d,null))[_0x0e17('0x52')](handleError(_0x25f47d,null));};exports[_0x0e17('0x6f')]=function(_0x40a49f,_0x38bb14,_0x2f379a){var _0x586d40={'raw':![],'where':{}};var _0x4bde4d={};var _0x355a39={'count':0x0,'rows':[]};return db['SmsAccount'][_0x0e17('0x69')]({'where':{'id':_0x40a49f[_0x0e17('0x54')]['id']}})[_0x0e17('0x1f')](handleEntityNotFound(_0x38bb14,null))[_0x0e17('0x1f')](function(_0x11ff95){if(_0x11ff95){_0x4bde4d[_0x0e17('0x42')]=_[_0x0e17('0x55')](db[_0x0e17('0x6e')][_0x0e17('0x3d')]);_0x4bde4d[_0x0e17('0x40')]=_[_0x0e17('0x55')](_0x40a49f[_0x0e17('0x40')]);_0x4bde4d[_0x0e17('0x48')]=_[_0x0e17('0x41')](_0x4bde4d[_0x0e17('0x42')],_0x4bde4d['query']);_0x586d40['attributes']=_[_0x0e17('0x41')](_0x4bde4d[_0x0e17('0x42')],qs[_0x0e17('0x44')](_0x40a49f[_0x0e17('0x40')]['fields']));_0x586d40[_0x0e17('0x43')]=_0x586d40[_0x0e17('0x43')]['length']?_0x586d40[_0x0e17('0x43')]:_0x4bde4d['model'];if(!_0x40a49f[_0x0e17('0x40')][_0x0e17('0x45')](_0x0e17('0x46'))){_0x586d40[_0x0e17('0x2b')]=qs[_0x0e17('0x2b')](_0x40a49f[_0x0e17('0x40')][_0x0e17('0x2b')]);_0x586d40[_0x0e17('0x2d')]=qs[_0x0e17('0x2d')](_0x40a49f[_0x0e17('0x40')][_0x0e17('0x2d')]);}_0x586d40[_0x0e17('0x6a')]=qs[_0x0e17('0x47')](_0x40a49f[_0x0e17('0x40')][_0x0e17('0x47')]);_0x586d40['where']=qs[_0x0e17('0x48')](_[_0x0e17('0x49')](_0x40a49f[_0x0e17('0x40')],_0x4bde4d['filters']));_0x586d40[_0x0e17('0x4c')][_0x0e17('0x66')]=_0x11ff95['id'];if(_0x40a49f[_0x0e17('0x40')][_0x0e17('0x4a')]){_0x586d40[_0x0e17('0x4c')]=_[_0x0e17('0x4b')](_0x586d40[_0x0e17('0x4c')],{'$or':_['map'](_0x586d40[_0x0e17('0x43')],function(_0x402354){var _0x9c416e={};_0x9c416e[_0x402354]={'$like':'%'+_0x40a49f[_0x0e17('0x40')][_0x0e17('0x4a')]+'%'};return _0x9c416e;})});}_0x586d40=_['merge']({},_0x586d40,_0x40a49f[_0x0e17('0x58')]);return db['CannedAnswer']['count']({'where':_0x586d40[_0x0e17('0x4c')]})['then'](function(_0x2eaeec){_0x355a39[_0x0e17('0x2c')]=_0x2eaeec;if(_0x40a49f[_0x0e17('0x40')]['includeAll']){_0x586d40[_0x0e17('0x4f')]=[{'all':!![]}];}return db[_0x0e17('0x6e')][_0x0e17('0x50')](_0x586d40);})[_0x0e17('0x1f')](function(_0x383c58){_0x355a39[_0x0e17('0x51')]=_0x383c58;return _0x355a39;});}})[_0x0e17('0x1f')](respondWithFilteredResult(_0x38bb14,_0x586d40))['catch'](handleError(_0x38bb14,null));};exports[_0x0e17('0x70')]=function(_0x24f463,_0x57d556,_0x20d760){return db[_0x0e17('0x3c')][_0x0e17('0x59')]({'where':{'id':_0x24f463[_0x0e17('0x54')]['id']}})[_0x0e17('0x1f')](handleEntityNotFound(_0x57d556,null))[_0x0e17('0x1f')](function(_0x1f599d){if(_0x1f599d){return _0x1f599d['removeAnswers'](_0x24f463[_0x0e17('0x40')][_0x0e17('0x6c')]);}})[_0x0e17('0x1f')](respondWithStatusCode(_0x57d556,null))[_0x0e17('0x52')](handleError(_0x57d556,null));};exports[_0x0e17('0x71')]=function(_0x18a485,_0x507410,_0x13c518){var _0x7c2bf5={'channel':_0x0e17('0x72')};var _0x532acd=[];var _0x195831=[];var _0x1228af={};return db[_0x0e17('0x3c')][_0x0e17('0x59')]({'where':{'id':_0x18a485[_0x0e17('0x54')]['id']},'include':[{'model':db[_0x0e17('0x73')],'as':_0x0e17('0x74')}]})[_0x0e17('0x1f')](handleEntityNotFound(_0x507410,null))[_0x0e17('0x1f')](function(_0x2199b8){_0x7c2bf5[_0x0e17('0x75')]=_0x2199b8;_0x7c2bf5[_0x0e17('0x76')]=_[_0x0e17('0x77')](_0x2199b8['Applications'],[_0x0e17('0x78')],[_0x0e17('0x79')]);if(_0x7c2bf5[_0x0e17('0x75')][_0x0e17('0x74')]){delete _0x7c2bf5[_0x0e17('0x75')][_0x0e17('0x74')];}return db['CmContact'][_0x0e17('0x64')]();})[_0x0e17('0x1f')](function(_0x3d03cb){if(!_0x3d03cb){throw new db[(_0x0e17('0x7a'))]['ValidationError'](_0x0e17('0x7b'));}_0x532acd=_[_0x0e17('0x7c')](_['keys'](_0x3d03cb),[_0x0e17('0x7d'),'updatedAt']);_0x195831=_[_0x0e17('0x7c')](_[_0x0e17('0x55')](_0x3d03cb),[_0x0e17('0x7d'),_0x0e17('0x7e'),_0x0e17('0x7f'),'ListId']);_0x7c2bf5['body']={'mapKey':_0x0e17('0x80')};if(_0x7c2bf5[_0x0e17('0x75')][_0x0e17('0x3e')]){switch(_0x7c2bf5['account'][_0x0e17('0x3e')]){case _0x0e17('0x81'):_0x7c2bf5[_0x0e17('0x63')][_0x0e17('0x82')]=_0x18a485[_0x0e17('0x63')]['From'];_0x7c2bf5['body'][_0x0e17('0x63')]=_0x18a485[_0x0e17('0x63')][_0x0e17('0x83')];_0x7c2bf5['body'][_0x0e17('0x84')]=_0x18a485['body']['MessageSid'];break;case _0x0e17('0x85'):_0x7c2bf5['body']['from']='+'+_0x18a485[_0x0e17('0x63')][_0x0e17('0x86')];_0x7c2bf5['body'][_0x0e17('0x63')]=_0x18a485[_0x0e17('0x63')][_0x0e17('0x87')];break;case _0x0e17('0x88'):_0x7c2bf5[_0x0e17('0x63')][_0x0e17('0x82')]=_0x18a485['body'][_0x0e17('0x82')];_0x7c2bf5[_0x0e17('0x63')]['body']=_0x18a485['body']['message'];break;case _0x0e17('0x89'):_0x7c2bf5[_0x0e17('0x63')]['from']=_0x18a485[_0x0e17('0x63')][_0x0e17('0x82')];_0x7c2bf5[_0x0e17('0x63')][_0x0e17('0x63')]=_0x18a485[_0x0e17('0x63')][_0x0e17('0x63')];_0x7c2bf5[_0x0e17('0x63')]['messageId']=_0x18a485[_0x0e17('0x63')][_0x0e17('0x8a')];break;case _0x0e17('0x8b'):_0x7c2bf5[_0x0e17('0x63')][_0x0e17('0x82')]=_0x18a485[_0x0e17('0x63')][_0x0e17('0x8c')];_0x7c2bf5[_0x0e17('0x63')][_0x0e17('0x63')]=_0x18a485[_0x0e17('0x63')][_0x0e17('0x8d')];_0x7c2bf5[_0x0e17('0x63')][_0x0e17('0x84')]=_0x18a485['body']['MessageUUID'];break;case _0x0e17('0x8e'):_0x7c2bf5['body']['from']='+'+_0x18a485[_0x0e17('0x63')][_0x0e17('0x8f')][0x0][_0x0e17('0x82')];_0x7c2bf5[_0x0e17('0x63')][_0x0e17('0x63')]=_0x18a485[_0x0e17('0x63')][_0x0e17('0x8f')][0x0][_0x0e17('0x87')];_0x7c2bf5[_0x0e17('0x63')][_0x0e17('0x84')]=_0x18a485[_0x0e17('0x63')][_0x0e17('0x8f')][0x0][_0x0e17('0x84')];break;case _0x0e17('0x90'):_0x7c2bf5[_0x0e17('0x63')]['from']=_0x18a485[_0x0e17('0x63')][_0x0e17('0x91')];_0x7c2bf5[_0x0e17('0x63')][_0x0e17('0x63')]=_0x18a485[_0x0e17('0x63')]['segmentedMessage']['message'];break;case _0x0e17('0x92'):_0x7c2bf5[_0x0e17('0x63')]['from']=_0x18a485[_0x0e17('0x63')][_0x0e17('0x93')];_0x7c2bf5[_0x0e17('0x63')][_0x0e17('0x63')]=_0x18a485[_0x0e17('0x63')][_0x0e17('0x87')];_0x7c2bf5['body'][_0x0e17('0x84')]=_0x18a485['body']['replyMessageId'];break;case _0x0e17('0x94'):_0x7c2bf5[_0x0e17('0x63')]['messageId']=_0x18a485[_0x0e17('0x63')][0x0][_0x0e17('0x25')]['id'];_0x7c2bf5[_0x0e17('0x63')][_0x0e17('0x82')]=_0x18a485['body'][0x0]['message'][_0x0e17('0x82')];_0x7c2bf5[_0x0e17('0x63')][_0x0e17('0x63')]=_0x18a485['body'][0x0][_0x0e17('0x25')][_0x0e17('0x87')];break;case _0x0e17('0x95'):_0x7c2bf5[_0x0e17('0x63')][_0x0e17('0x82')]=_0x18a485[_0x0e17('0x63')][_0x0e17('0x82')];_0x7c2bf5[_0x0e17('0x63')]['body']=_0x18a485[_0x0e17('0x63')][_0x0e17('0x25')];_0x7c2bf5[_0x0e17('0x63')]['messageId']=_0x18a485[_0x0e17('0x63')][_0x0e17('0x96')];break;}}if(_0x7c2bf5[_0x0e17('0x63')]['id']){delete _0x7c2bf5[_0x0e17('0x63')]['id'];}if(_['isNil'](_0x7c2bf5['body']['from'])){throw new db[(_0x0e17('0x7a'))][(_0x0e17('0x97'))](_0x0e17('0x98'));}if(_[_0x0e17('0x99')](_0x7c2bf5[_0x0e17('0x63')]['body'])||_0x7c2bf5[_0x0e17('0x63')]['body']===''){throw new db[(_0x0e17('0x7a'))][(_0x0e17('0x97'))](_0x0e17('0x9a'));}if(_[_0x0e17('0x99')](_0x7c2bf5['body'][_0x0e17('0x9b')])){throw new db[(_0x0e17('0x7a'))][(_0x0e17('0x97'))](_0x0e17('0x9c')+_0x195831);}if(!_[_0x0e17('0x9d')](_0x195831,_0x7c2bf5['body'][_0x0e17('0x9b')])){throw new db['Sequelize'][(_0x0e17('0x97'))](_0x0e17('0x9e')+_0x195831);}_0x1228af[_0x7c2bf5['body'][_0x0e17('0x9b')]]=_0x7c2bf5[_0x0e17('0x63')]['from'];return db['CmList'][_0x0e17('0x59')]({'where':{'id':_0x7c2bf5[_0x0e17('0x75')][_0x0e17('0x9f')]},'include':[{'model':db[_0x0e17('0xa0')],'as':_0x0e17('0xa1'),'where':_0x1228af,'limit':0x1,'order':[['updatedAt',_0x0e17('0xa2')]]}]});})[_0x0e17('0x1f')](handleEntityNotFound(_0x507410,null))[_0x0e17('0x1f')](function(_0x1cbf33){if(_0x1cbf33){_0x7c2bf5[_0x0e17('0xa3')]=_[_0x0e17('0xa4')](_0x1cbf33,[_0x0e17('0xa1')]);if(_0x1cbf33['Contacts']['length']){return _0x1cbf33[_0x0e17('0xa1')][0x0];}var _0x330429=_[_0x0e17('0x16')](_0x7c2bf5[_0x0e17('0x63')],{'firstName':_0x7c2bf5[_0x0e17('0x63')]['from'],'ListId':_0x1cbf33['id']});_0x330429[_0x7c2bf5['body'][_0x0e17('0x9b')]]=_0x7c2bf5[_0x0e17('0x63')][_0x0e17('0x82')];return db['CmContact'][_0x0e17('0x5a')](_0x330429,{'fields':_0x532acd,'raw':!![]});}})['then'](handleEntityNotFound(_0x507410,null))[_0x0e17('0x1f')](function(_0x4a722f){if(_0x4a722f){_0x7c2bf5[_0x0e17('0xa5')]=_0x4a722f;var _0x397989={'ContactId':_0x4a722f['id'],'phone':_0x7c2bf5[_0x0e17('0x63')][_0x0e17('0x82')],'SmsAccountId':_0x18a485[_0x0e17('0x54')]['id']};var _0x25960d={'ContactId':_0x4a722f['id'],'SmsAccountId':_0x18a485['params']['id'],'closed':![]};return db[_0x0e17('0xa6')][_0x0e17('0x59')]({'where':_0x25960d})['then'](function(_0x403fa0){if(_0x403fa0){return[_0x403fa0,![]];}return db[_0x0e17('0xa6')][_0x0e17('0x5a')](_0x397989)[_0x0e17('0x1f')](function(_0x1b0252){return[_0x1b0252,!![]];});});}})[_0x0e17('0xa7')](function(_0x5da057,_0x303495){_0x7c2bf5['interaction']=_0x5da057['get']({'plain':!![]});_0x7c2bf5[_0x0e17('0xa8')]['created']=![];if(_0x303495){if(_0x7c2bf5[_0x0e17('0x75')][_0x0e17('0xa9')]){_0x7c2bf5['applications'][_0x0e17('0xaa')]({'id':0x0,'priority':_0x7c2bf5[_0x0e17('0x76')]['length']+0x1,'app':'close','appdata':_0x0e17('0xab'),'interval':_0x0e17('0xac')});}_0x7c2bf5[_0x0e17('0xa8')][_0x0e17('0xad')]=!![];}return db['SmsMessage'][_0x0e17('0x5a')]({'phone':_0x7c2bf5['body']['from'],'messageId':_0x7c2bf5[_0x0e17('0x63')]['messageId'],'body':_0x7c2bf5['body'][_0x0e17('0x63')],'SmsAccountId':_0x18a485[_0x0e17('0x54')]['id'],'SmsInteractionId':_0x5da057['id'],'direction':'in','ContactId':_0x5da057[_0x0e17('0xae')],'AttachmentId':_0x7c2bf5[_0x0e17('0x63')][_0x0e17('0xaf')]});})[_0x0e17('0x1f')](function(_0x279432){_0x7c2bf5[_0x0e17('0x25')]=_0x279432;if(_0x7c2bf5[_0x0e17('0xa8')][_0x0e17('0xb0')]){return db['User'][_0x0e17('0x59')]({'attributes':['id',_0x0e17('0x38')],'where':{'id':_0x7c2bf5['interaction'][_0x0e17('0xb0')]}})['then'](function(_0x546ad8){if(_0x546ad8){_0x7c2bf5[_0x0e17('0x76')][_0x0e17('0xb1')]({'id':0x0,'priority':0x0,'app':_0x0e17('0xb2'),'appdata':_0x546ad8[_0x0e17('0x38')]+','+(_0x7c2bf5['account']['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x0e17('0xb3'),_0x0e17('0xb4'),_0x7c2bf5);});}return respondWithRpcPromise('Start',_0x0e17('0xb4'),_0x7c2bf5);})[_0x0e17('0x1f')](function(_0x2e1cac){if(_0x2e1cac){var _0x4e9854=0xc8;var _0x2a1763='receiveMessage';logger[_0x0e17('0x26')](_0x0e17('0xb5'),_0x2a1763,_0x4e9854,'entity\x20found');logger[_0x0e17('0xb6')](_0x0e17('0xb7'),_0x2a1763,_0x4e9854,'entity\x20found',JSON['stringify'](_0x2e1cac));if(_0x7c2bf5[_0x0e17('0x75')]['type']==='twilio'){return _0x507410[_0x0e17('0x2e')](_0x4e9854)[_0x0e17('0x2f')](_0x0e17('0xb8'),_0x0e17('0xb9'))[_0x0e17('0xba')](_0x0e17('0xbb'));}else{return _0x507410[_0x0e17('0x2e')](_0x4e9854)[_0x0e17('0x31')](_0x2e1cac);}}})[_0x0e17('0x52')](handleError(_0x507410,null));};exports['addApplications']=function(_0x29dfd1,_0x5e4bec){var _0x4a2678=_0x29dfd1[_0x0e17('0x54')]['id'];var _0x4eda35=_0x29dfd1[_0x0e17('0x63')];var _0x4c0482=0xc8;var _0x233ec9=null;return db[_0x0e17('0xbc')]['transaction']({'isolationLevel':db[_0x0e17('0xbc')][_0x0e17('0xbd')][_0x0e17('0xbe')][_0x0e17('0xbf')]},function(_0x5edd3f){return db['SmsAccount'][_0x0e17('0x69')]({'where':{'id':_0x4a2678},'transaction':_0x5edd3f})[_0x0e17('0x1f')](function(_0x325879){if(_0x325879){return db[_0x0e17('0x73')][_0x0e17('0x34')]({'where':{'SmsAccountId':_0x4a2678},'transaction':_0x5edd3f})['then'](function(){var _0x53389b=_[_0x0e17('0x4d')](_0x4eda35,function(_0x19ddf1){_0x19ddf1['SmsAccountId']=_0x4a2678;return _0x19ddf1;});return db[_0x0e17('0x73')][_0x0e17('0xc0')](_0x53389b,{'transaction':_0x5edd3f});});}else{_0x4c0482=0x194;_0x233ec9=[];}});})['then'](function(){if(_0x4c0482!==0x194){return db['SmsApplication'][_0x0e17('0xc1')]({'where':{'SmsAccountId':_0x4a2678},'order':_0x0e17('0x78')})['then'](function(_0x1b1724){_0x233ec9=_0x1b1724;});}})['catch'](function(_0x48d0f3){_0x4c0482=0x1f4;logger[_0x0e17('0x22')](_0x48d0f3[_0x0e17('0x37')]);if(_0x48d0f3[_0x0e17('0x38')]){delete _0x48d0f3['name'];}_0x233ec9=_0x48d0f3;})[_0x0e17('0xc2')](function(){if(_0x233ec9===null){_0x5e4bec[_0x0e17('0x28')](_0x4c0482);}else{if(_0x4c0482===0x1f4){_0x5e4bec[_0x0e17('0x2e')](_0x4c0482)[_0x0e17('0xba')](_0x233ec9);}else{_0x5e4bec[_0x0e17('0x2e')](_0x4c0482)[_0x0e17('0x31')](_0x233ec9);}}});};exports['getApplications']=function(_0x4af19c,_0xe2391a,_0x2b1b62){var _0x446ac9={};var _0x1e420b={};var _0x28f434;var _0x47e73c;return db[_0x0e17('0x3c')][_0x0e17('0x69')]({'where':{'id':_0x4af19c[_0x0e17('0x54')]['id']}})[_0x0e17('0x1f')](handleEntityNotFound(_0xe2391a,null))['then'](function(_0x3484e3){if(_0x3484e3){_0x28f434=_0x3484e3;_0x1e420b['model']=_['keys'](db[_0x0e17('0x73')][_0x0e17('0x3d')]);_0x1e420b[_0x0e17('0x40')]=_[_0x0e17('0x55')](_0x4af19c[_0x0e17('0x40')]);_0x1e420b[_0x0e17('0x48')]=_[_0x0e17('0x41')](_0x1e420b[_0x0e17('0x42')],_0x1e420b[_0x0e17('0x40')]);_0x446ac9[_0x0e17('0x43')]=_['intersection'](_0x1e420b[_0x0e17('0x42')],qs[_0x0e17('0x44')](_0x4af19c[_0x0e17('0x40')]['fields']));_0x446ac9[_0x0e17('0x43')]=_0x446ac9[_0x0e17('0x43')][_0x0e17('0x56')]?_0x446ac9['attributes']:_0x1e420b['model'];_0x446ac9[_0x0e17('0x6a')]=qs[_0x0e17('0x47')](_0x4af19c[_0x0e17('0x40')][_0x0e17('0x47')]);_0x446ac9[_0x0e17('0x4c')]=qs[_0x0e17('0x48')](_[_0x0e17('0x49')](_0x4af19c['query'],_0x1e420b[_0x0e17('0x48')]));if(_0x4af19c['query'][_0x0e17('0x4a')]){_0x446ac9[_0x0e17('0x4c')]=_[_0x0e17('0x4b')](_0x446ac9[_0x0e17('0x4c')],{'$or':_[_0x0e17('0x4d')](_0x446ac9['attributes'],function(_0x1b0ec4){var _0x55843a={};_0x55843a[_0x1b0ec4]={'$like':'%'+_0x4af19c[_0x0e17('0x40')][_0x0e17('0x4a')]+'%'};return _0x55843a;})});}_0x446ac9=_['merge']({},_0x446ac9,_0x4af19c[_0x0e17('0x58')]);return _0x28f434[_0x0e17('0xc3')](_0x446ac9);}})['then'](function(_0x4a509d){if(_0x4a509d){_0x47e73c=_0x4a509d[_0x0e17('0x56')];if(!_0x4af19c[_0x0e17('0x40')][_0x0e17('0x45')](_0x0e17('0x46'))){_0x446ac9[_0x0e17('0x2b')]=qs[_0x0e17('0x2b')](_0x4af19c['query']['limit']);_0x446ac9[_0x0e17('0x2d')]=qs[_0x0e17('0x2d')](_0x4af19c[_0x0e17('0x40')][_0x0e17('0x2d')]);}return _0x28f434['getApplications'](_0x446ac9);}})[_0x0e17('0x1f')](function(_0x436ad0){if(_0x436ad0){return _0x436ad0?{'count':_0x47e73c,'rows':_0x436ad0}:null;}})[_0x0e17('0x1f')](respondWithResult(_0xe2391a,null))['catch'](handleError(_0xe2391a,null));};exports[_0x0e17('0xc4')]=function(_0xd27029,_0x47ab70,_0xedc091){var _0x4c853c={'raw':![],'where':{}};var _0x49d94a={};var _0x242157={'count':0x0,'rows':[]};return db['SmsAccount']['findOne']({'where':{'id':_0xd27029[_0x0e17('0x54')]['id']}})['then'](handleEntityNotFound(_0x47ab70,null))['then'](function(_0x55ccb2){if(_0x55ccb2){_0x49d94a['model']=_[_0x0e17('0x55')](db['SmsInteraction']['rawAttributes']);_0x49d94a['query']=_[_0x0e17('0x55')](_0xd27029[_0x0e17('0x40')]);_0x49d94a[_0x0e17('0x48')]=_['intersection'](_0x49d94a['model'],_0x49d94a[_0x0e17('0x40')]);_0x4c853c['attributes']=_[_0x0e17('0x41')](_0x49d94a['model'],qs[_0x0e17('0x44')](_0xd27029[_0x0e17('0x40')][_0x0e17('0x44')]));_0x4c853c[_0x0e17('0x43')]=_0x4c853c[_0x0e17('0x43')]['length']?_0x4c853c[_0x0e17('0x43')]:_0x49d94a[_0x0e17('0x42')];if(!_0xd27029[_0x0e17('0x40')][_0x0e17('0x45')](_0x0e17('0x46'))){_0x4c853c[_0x0e17('0x2b')]=qs[_0x0e17('0x2b')](_0xd27029[_0x0e17('0x40')][_0x0e17('0x2b')]);_0x4c853c['offset']=qs[_0x0e17('0x2d')](_0xd27029[_0x0e17('0x40')][_0x0e17('0x2d')]);}_0x4c853c[_0x0e17('0x6a')]=qs['sort'](_0xd27029['query']['sort']);_0x4c853c[_0x0e17('0x4c')]=qs['filters'](_[_0x0e17('0x49')](_0xd27029['query'],_0x49d94a[_0x0e17('0x48')]));_0x4c853c['where'][_0x0e17('0x66')]=_0x55ccb2['id'];if(_0xd27029[_0x0e17('0x40')]['filter']){_0x4c853c[_0x0e17('0x4c')]=_[_0x0e17('0x4b')](_0x4c853c[_0x0e17('0x4c')],{'$or':_[_0x0e17('0x4d')](_0x4c853c[_0x0e17('0x43')],function(_0x5cdc7e){var _0x265124={};_0x265124[_0x5cdc7e]={'$like':'%'+_0xd27029[_0x0e17('0x40')]['filter']+'%'};return _0x265124;})});}_0x4c853c=_[_0x0e17('0x4b')]({},_0x4c853c,_0xd27029[_0x0e17('0x58')]);return db['SmsInteraction']['count']({'where':_0x4c853c['where']})[_0x0e17('0x1f')](function(_0x590dbc){_0x242157[_0x0e17('0x2c')]=_0x590dbc;if(_0xd27029['query'][_0x0e17('0x57')]){_0x4c853c[_0x0e17('0x4f')]=[{'model':db[_0x0e17('0xa0')],'as':_0x0e17('0xc5'),'required':![]},{'model':db[_0x0e17('0xc6')],'as':_0x0e17('0xc7'),'attributes':[_0x0e17('0x38'),_0x0e17('0xc8'),_0x0e17('0xc9')],'required':![]},{'model':db['Tag'],'as':_0x0e17('0xca'),'attributes':['id',_0x0e17('0x38'),'color'],'where':_0xd27029['query'][_0x0e17('0xcb')]?{'id':_0xd27029['query'][_0x0e17('0xcb')]}:undefined,'required':_0xd27029[_0x0e17('0x40')][_0x0e17('0xcb')]?!![]:![]}];}return db[_0x0e17('0xa6')][_0x0e17('0x50')](_0x4c853c);})[_0x0e17('0x1f')](function(_0xca6cdd){_0x242157[_0x0e17('0x51')]=_0xca6cdd;return _0x242157;});}})[_0x0e17('0x1f')](respondWithFilteredResult(_0x47ab70,_0x4c853c))[_0x0e17('0x52')](handleError(_0x47ab70,null));};exports[_0x0e17('0xba')]=function(_0xd08514,_0x371a40,_0x3e8042){var _0x369148,_0x557169,_0x354d75;if(_[_0x0e17('0x99')](_0xd08514[_0x0e17('0x63')][_0x0e17('0x63')])||_0xd08514[_0x0e17('0x63')][_0x0e17('0x63')]===''){throw new db['Sequelize'][(_0x0e17('0x97'))](_0x0e17('0x9a'));}if(_[_0x0e17('0x99')](_0xd08514[_0x0e17('0x63')]['to'])){throw new db[(_0x0e17('0x7a'))][(_0x0e17('0x97'))](_0x0e17('0xcc'));}_0x369148=_0xd08514['body']['to'];return db[_0x0e17('0x3c')][_0x0e17('0x59')]({'where':{'id':_0xd08514[_0x0e17('0x54')]['id']},'include':[{'model':db[_0x0e17('0xcd')],'as':_0x0e17('0xce'),'include':[{'model':db[_0x0e17('0xa0')],'as':_0x0e17('0xa1'),'where':{'mobile':_0x369148},'limit':0x1,'order':[[_0x0e17('0x7e'),_0x0e17('0xa2')]]}]}]})['then'](handleEntityNotFound(_0x371a40,null))[_0x0e17('0x1f')](function(_0x5923ab){if(_0x5923ab&&_0x5923ab[_0x0e17('0xce')]){_0x557169=_0x5923ab['get']({'plain':!![]});if(_0x557169[_0x0e17('0xce')]&&_0x557169[_0x0e17('0xce')][_0x0e17('0xa1')][_0x0e17('0x56')]){return _0x557169[_0x0e17('0xce')][_0x0e17('0xa1')][0x0];}return db[_0x0e17('0xa0')]['create'](_['defaults'](_0xd08514[_0x0e17('0x63')],{'firstName':_0x369148,'mobile':_0x369148,'phone':_0x369148,'ListId':_0x557169[_0x0e17('0x9f')]}));}})[_0x0e17('0x1f')](handleEntityNotFound(_0x371a40,null))[_0x0e17('0x1f')](function(_0x25931d){if(_0x25931d){_0x354d75=_0x25931d;return db[_0x0e17('0xa6')][_0x0e17('0x59')]({'where':{'ContactId':_0x354d75['id'],'closed':![],'SmsAccountId':_0x557169['id']}})[_0x0e17('0x1f')](function(_0x4267e1){if(_0x4267e1){return[_0x4267e1,![]];}return db[_0x0e17('0xa6')][_0x0e17('0x5a')]({'UserId':_0xd08514[_0x0e17('0x5b')]['id'],'ContactId':_0x354d75['id'],'SmsAccountId':_0x557169['id'],'phone':_0x369148,'firstMsgDirection':_0x0e17('0xcf'),'Messages':[_['merge'](_0xd08514[_0x0e17('0x63')],{'read':![],'body':_0xd08514[_0x0e17('0x63')]['body'],'phone':_0x369148,'SmsAccountId':_0x557169['id'],'UserId':_0xd08514[_0x0e17('0x5b')]['id'],'ContactId':_0x354d75['id']})]},{'include':[{'model':db[_0x0e17('0xd0')],'as':'Messages'}]})['then'](function(_0x373c70){return[_0x373c70,!![]];});});}})[_0x0e17('0xa7')](function(_0x4df1b3,_0x5830bb){if(_0x5830bb){return _0x4df1b3;}return db['SmsMessage'][_0x0e17('0x5a')](_['merge'](_0xd08514[_0x0e17('0x63')],{'read':![],'body':_0xd08514[_0x0e17('0x63')][_0x0e17('0x63')],'phone':_0x369148,'SmsAccountId':_0x557169['id'],'SmsInteractionId':_0x4df1b3['id'],'UserId':_0xd08514['user']['id'],'ContactId':_0x354d75['id']}))['then'](function(_0x44b5b6){_0x4df1b3[_0x0e17('0xd1')][_0x0e17('0xd2')]=[];_0x4df1b3['dataValues'][_0x0e17('0xd2')][_0x0e17('0xaa')](_0x44b5b6[_0x0e17('0xd1')]);return _0x4df1b3;});})[_0x0e17('0x1f')](respondWithResult(_0x371a40,null))[_0x0e17('0x52')](handleError(_0x371a40,null));};exports[_0x0e17('0x2e')]=function(_0x46c70f,_0x2f1bfd,_0xccd726){if(_0x46c70f[_0x0e17('0x63')]['id']){delete _0x46c70f['body']['id'];}var _0x283144,_0x53ecc3,_0x4dd74d;return db[_0x0e17('0x3c')][_0x0e17('0x59')]({'where':{'id':_0x46c70f[_0x0e17('0x54')]['id']}})[_0x0e17('0x1f')](handleEntityNotFound(_0x2f1bfd,null))[_0x0e17('0x1f')](function(_0x4744a9){if(_0x4744a9){_0x4dd74d=_0x4744a9;logger[_0x0e17('0xb6')](_0x0e17('0xb5'),_0x0e17('0x2e'),'received\x20delivery\x20report\x20from',_0x4744a9[_0x0e17('0x3e')],util[_0x0e17('0xd3')](_0x46c70f['body'],{'showHidden':![],'depth':null}));switch(_0x4744a9[_0x0e17('0x3e')]){case _0x0e17('0x85'):if(_0x46c70f['body'][_0x0e17('0xd4')]&&_0x46c70f[_0x0e17('0x63')][_0x0e17('0x2e')]){_0x53ecc3=_0x46c70f[_0x0e17('0x63')][_0x0e17('0x2e')];return db[_0x0e17('0xd0')]['find']({'where':{'messageId':_0x46c70f[_0x0e17('0x63')][_0x0e17('0xd4')]}});}break;case'connectel':if(_0x46c70f[_0x0e17('0x63')][_0x0e17('0xd5')]&&_0x46c70f[_0x0e17('0x63')]['statusInt']){_0x53ecc3=_0x46c70f[_0x0e17('0x63')]['statusInt'];return db[_0x0e17('0xd0')][_0x0e17('0x59')]({'where':{'messageId':_0x46c70f[_0x0e17('0x63')][_0x0e17('0xd5')]}});}break;case'clicksend':if(_0x46c70f[_0x0e17('0x63')][_0x0e17('0x8a')]&&_0x46c70f[_0x0e17('0x63')][_0x0e17('0xd6')]){_0x53ecc3=_0x46c70f[_0x0e17('0x63')][_0x0e17('0xd6')];return db[_0x0e17('0xd0')][_0x0e17('0x59')]({'where':{'messageId':_0x46c70f[_0x0e17('0x63')][_0x0e17('0x8a')]}});}break;case _0x0e17('0x8e'):var _0x2485f5=_0x46c70f[_0x0e17('0x63')][_0x0e17('0x8f')][0x0];if(_0x2485f5['messageId']&&_0x2485f5[_0x0e17('0x2e')]['groupName']===_0x0e17('0xd7')){_0x53ecc3=_0x2485f5['status'][_0x0e17('0xd8')];return db[_0x0e17('0xd0')][_0x0e17('0x59')]({'where':{'messageId':_0x2485f5[_0x0e17('0x84')]}});}break;case'clickatell':if(_0x46c70f[_0x0e17('0x63')][_0x0e17('0x84')]&&_0x46c70f[_0x0e17('0x63')][_0x0e17('0x2e')]){_0x53ecc3=_0x46c70f['body'][_0x0e17('0x2e')];return db[_0x0e17('0xd0')][_0x0e17('0x59')]({'where':{'messageId':_0x46c70f[_0x0e17('0x63')][_0x0e17('0x84')]}});}break;case _0x0e17('0x94'):if(_0x46c70f[_0x0e17('0x63')][0x0][_0x0e17('0x25')]['id']){_0x53ecc3=_0x46c70f[_0x0e17('0x63')][0x0][_0x0e17('0x3e')];return db[_0x0e17('0xd0')][_0x0e17('0x59')]({'where':{'messageId':_0x46c70f['body'][0x0][_0x0e17('0x25')]['id']}});}break;case _0x0e17('0x95'):if(_0x46c70f['body'][_0x0e17('0xd9')]&&_0x46c70f['body'][_0x0e17('0x2e')]){_0x53ecc3=_0x46c70f[_0x0e17('0x63')]['status'];return db[_0x0e17('0xd0')][_0x0e17('0x59')]({'where':{'messageId':_0x46c70f['body'][_0x0e17('0xd9')]}});}break;}}})['then'](handleEntityNotFound(_0x2f1bfd,null))['then'](function(_0xb77598){if(_0xb77598){_0x283144=_0xb77598;switch(_0x4dd74d[_0x0e17('0x3e')]){case'skebby':if(_0x53ecc3===_0x0e17('0xd7')){return _0x283144[_0x0e17('0x33')]({'read':!![]});}else{logger[_0x0e17('0x22')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x0e17('0x2e'),'skebby',util[_0x0e17('0xd3')](_0x46c70f['body'],{'showHidden':![],'depth':null}));}break;case _0x0e17('0x88'):if(_0x53ecc3==='1'){return _0x283144[_0x0e17('0x33')]({'read':!![]});}else{logger[_0x0e17('0x22')](_0x0e17('0xb5'),'status',_0x0e17('0x85'),util[_0x0e17('0xd3')](_0x46c70f['body'],{'showHidden':![],'depth':null}));}break;case'clicksend':if(!_0x46c70f[_0x0e17('0x63')][_0x0e17('0xda')]&&_0x53ecc3>=0xc8&&_0x53ecc3<=0xce){return _0x283144[_0x0e17('0x33')]({'read':!![]});}else{logger[_0x0e17('0x22')](_0x0e17('0xb5'),'status',_0x0e17('0x89'),util[_0x0e17('0xd3')](_0x46c70f[_0x0e17('0x63')],{'showHidden':![],'depth':null}));}break;case _0x0e17('0x8e'):var _0xe4a286=_0x46c70f['body'][_0x0e17('0x8f')][0x0];if(_0xe4a286['status']['groupName']===_0x0e17('0xd7')){return _0x283144['update']({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x0e17('0x2e'),'infobip',util[_0x0e17('0xd3')](_0x46c70f[_0x0e17('0x63')],{'showHidden':![],'depth':null}));}break;case _0x0e17('0x92'):if(_0x53ecc3==_0x0e17('0xdb')||_0x53ecc3==_0x0e17('0xdc')){return _0x283144['update']({'read':!![]});}else{logger['error'](_0x0e17('0xb5'),'status',_0x0e17('0x92'),util['inspect'](_0x46c70f[_0x0e17('0x63')],{'showHidden':![],'depth':null}));}break;case _0x0e17('0x94'):if(_0x53ecc3==_0x0e17('0xdd')){return _0x283144['update']({'read':!![]});}else{logger[_0x0e17('0x22')](_0x0e17('0xb5'),'status',_0x0e17('0x94'),util[_0x0e17('0xd3')](_0x46c70f[_0x0e17('0x63')],{'showHidden':![],'depth':null}));}break;case _0x0e17('0x95'):if(_0x53ecc3==='DELIVRD'||_0x53ecc3===_0x0e17('0xde')){return _0x283144[_0x0e17('0x33')]({'read':!![]});}else{logger[_0x0e17('0x22')](_0x0e17('0xb5'),_0x0e17('0x2e'),_0x0e17('0x95'),util[_0x0e17('0xd3')](_0x46c70f[_0x0e17('0x63')],{'showHidden':![],'depth':null}));}break;}return _0x283144;}})[_0x0e17('0x1f')](respondWithResult(_0x2f1bfd,null))['catch'](handleError(_0x2f1bfd,null));};exports[_0x0e17('0xdf')]=function(_0x3e019e,_0x44119e,_0x413961){var _0x295729,_0x18c6aa,_0x45d8b9;return db[_0x0e17('0x3c')]['find']({'where':{'id':_0x3e019e[_0x0e17('0x54')]['id']}})[_0x0e17('0x1f')](handleEntityNotFound(_0x44119e,null))[_0x0e17('0x1f')](function(_0x31c2b5){if(_0x31c2b5){_0x45d8b9=_0x31c2b5;logger[_0x0e17('0xb6')](_0x0e17('0xb5'),_0x0e17('0x2e'),_0x0e17('0xe0'),_0x31c2b5[_0x0e17('0x3e')],util['inspect'](_0x3e019e[_0x0e17('0x40')],{'showHidden':![],'depth':null}));switch(_0x31c2b5[_0x0e17('0x3e')]){case _0x0e17('0x90'):if(_0x3e019e[_0x0e17('0x40')][_0x0e17('0xe1')]&&_0x3e019e[_0x0e17('0x40')][_0x0e17('0xe2')]){_0x18c6aa=_0x3e019e['query'][_0x0e17('0xe2')];return db[_0x0e17('0xd0')]['find']({'where':{'messageId':_0x3e019e['query']['message-id']}});}break;}}})['then'](handleEntityNotFound(_0x44119e,null))[_0x0e17('0x1f')](function(_0x2b09ab){if(_0x2b09ab){_0x295729=_0x2b09ab;switch(_0x45d8b9[_0x0e17('0x3e')]){case'csc':if(_0x18c6aa==='2'||_0x18c6aa==='6'){return _0x295729['update']({'read':!![]});}else{logger[_0x0e17('0x22')](_0x0e17('0xb5'),_0x0e17('0x2e'),_0x0e17('0x90'),util[_0x0e17('0xd3')](_0x3e019e[_0x0e17('0x40')],{'showHidden':![],'depth':null}));};break;}return _0x295729;}})[_0x0e17('0x1f')](respondWithResult(_0x44119e,null))['catch'](handleError(_0x44119e,null));};exports[_0x0e17('0xe3')]=function(_0xb53e66,_0x1cf530,_0x594a57){return db[_0x0e17('0x3c')][_0x0e17('0x59')]({'where':{'id':_0xb53e66[_0x0e17('0x54')]['id']}})['then'](handleEntityNotFound(_0x1cf530,null))[_0x0e17('0x1f')](function(_0x46f323){if(_0x46f323){return _0x46f323[_0x0e17('0xe3')](_0xb53e66[_0x0e17('0x63')][_0x0e17('0x6c')],_[_0x0e17('0xa4')](_0xb53e66[_0x0e17('0x63')],[_0x0e17('0x6c'),'id'])||{})['spread'](function(_0x2d1bdf){for(var _0x4aaf04=0x0;_0x4aaf04<_0xb53e66[_0x0e17('0x63')][_0x0e17('0x6c')][_0x0e17('0x56')];_0x4aaf04+=0x1){socket[_0x0e17('0xe4')]('userSmsAccount:save',{'UserId':Number(_0xb53e66[_0x0e17('0x63')][_0x0e17('0x6c')][_0x4aaf04]),'SmsAccountId':Number(_0xb53e66[_0x0e17('0x54')]['id'])});}return _0x2d1bdf;});}})[_0x0e17('0x1f')](respondWithResult(_0x1cf530,null))[_0x0e17('0x52')](handleError(_0x1cf530,null));};exports['removeAgents']=function(_0x169dc4,_0x7938c3,_0x86e67c){return db[_0x0e17('0x3c')][_0x0e17('0x59')]({'where':{'id':_0x169dc4[_0x0e17('0x54')]['id']}})[_0x0e17('0x1f')](handleEntityNotFound(_0x7938c3,null))[_0x0e17('0x1f')](function(_0x4c5020){if(_0x4c5020){return _0x4c5020[_0x0e17('0xe5')](_0x169dc4[_0x0e17('0x40')][_0x0e17('0x6c')])[_0x0e17('0x1f')](function(){if(_[_0x0e17('0xe6')](_0x169dc4['query'][_0x0e17('0x6c')])){for(var _0x55c08e=0x0;_0x55c08e<_0x169dc4[_0x0e17('0x40')][_0x0e17('0x6c')][_0x0e17('0x56')];_0x55c08e+=0x1){socket[_0x0e17('0xe4')](_0x0e17('0xe7'),{'UserId':Number(_0x169dc4['query']['ids'][_0x55c08e]),'SmsAccountId':Number(_0x169dc4['params']['id'])});}}else{socket[_0x0e17('0xe4')](_0x0e17('0xe7'),{'UserId':Number(_0x169dc4[_0x0e17('0x40')]['ids']),'SmsAccountId':Number(_0x169dc4[_0x0e17('0x54')]['id'])});}});}})['then'](respondWithStatusCode(_0x7938c3,null))[_0x0e17('0x52')](handleError(_0x7938c3,null));};exports[_0x0e17('0xe8')]=function(_0x2cdbd2,_0x33c532,_0x4b5d9c){var _0x57a78e={};var _0x26bb1e={};var _0x25433c;var _0x563e88;return db[_0x0e17('0x3c')]['findOne']({'where':{'id':_0x2cdbd2['params']['id']}})[_0x0e17('0x1f')](handleEntityNotFound(_0x33c532,null))['then'](function(_0x43eff2){if(_0x43eff2){_0x25433c=_0x43eff2;_0x26bb1e['model']=_[_0x0e17('0x55')](db[_0x0e17('0xc6')][_0x0e17('0x3d')]);_0x26bb1e[_0x0e17('0x40')]=_[_0x0e17('0x55')](_0x2cdbd2[_0x0e17('0x40')]);_0x26bb1e[_0x0e17('0x48')]=_[_0x0e17('0x41')](_0x26bb1e[_0x0e17('0x42')],_0x26bb1e['query']);_0x57a78e[_0x0e17('0x43')]=_[_0x0e17('0x41')](_0x26bb1e[_0x0e17('0x42')],qs['fields'](_0x2cdbd2[_0x0e17('0x40')]['fields']));_0x57a78e[_0x0e17('0x43')]=_0x57a78e['attributes'][_0x0e17('0x56')]?_0x57a78e['attributes']:_0x26bb1e[_0x0e17('0x42')];_0x57a78e[_0x0e17('0x6a')]=qs[_0x0e17('0x47')](_0x2cdbd2[_0x0e17('0x40')][_0x0e17('0x47')]);_0x57a78e['where']=qs['filters'](_[_0x0e17('0x49')](_0x2cdbd2[_0x0e17('0x40')],_0x26bb1e[_0x0e17('0x48')]));if(_0x2cdbd2[_0x0e17('0x40')]['filter']){_0x57a78e[_0x0e17('0x4c')]=_[_0x0e17('0x4b')](_0x57a78e[_0x0e17('0x4c')],{'$or':_['map'](_0x57a78e[_0x0e17('0x43')],function(_0x5f291e){var _0x528c4d={};_0x528c4d[_0x5f291e]={'$like':'%'+_0x2cdbd2[_0x0e17('0x40')]['filter']+'%'};return _0x528c4d;})});}_0x57a78e=_['merge']({},_0x57a78e,_0x2cdbd2[_0x0e17('0x58')]);return _0x25433c['getAgents'](_0x57a78e);}})[_0x0e17('0x1f')](function(_0x13116e){if(_0x13116e){_0x563e88=_0x13116e['length'];if(!_0x2cdbd2[_0x0e17('0x40')][_0x0e17('0x45')](_0x0e17('0x46'))){_0x57a78e['limit']=qs[_0x0e17('0x2b')](_0x2cdbd2[_0x0e17('0x40')][_0x0e17('0x2b')]);_0x57a78e['offset']=qs[_0x0e17('0x2d')](_0x2cdbd2[_0x0e17('0x40')][_0x0e17('0x2d')]);}return _0x25433c['getAgents'](_0x57a78e);}})[_0x0e17('0x1f')](function(_0x2155d4){if(_0x2155d4){return _0x2155d4?{'count':_0x563e88,'rows':_0x2155d4}:null;}})[_0x0e17('0x1f')](respondWithResult(_0x33c532,null))[_0x0e17('0x52')](handleError(_0x33c532,null));};
\ No newline at end of file
+var _0xd9da=['CannedAnswer','removeAnswers','ids','notify','sms','SmsApplication','Applications','account','applications','priority','asc','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','from','From','MessageSid','skebby','connectel','clicksend','messageId','message_id','plivo','Text','MessageUUID','infobip','results','text','originatingAddress','segmentedMessage','clickatell','fromNumber','bandwidth','intelepeer','refid','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','CmContact','DESC','list','omit','Contacts','SmsInteraction','spread','interaction','autoclose','push','close','unmanaged','*,*,*,*','SmsMessage','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','bulkCreate','findAndCountAll','getApplications','Contact','User','Owner','internal','Tag','color','tag','to\x20is\x20mandatory','List','dataValues','Messages','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','statusInt','requestid','status_code','DELIVERED','groupName','redif','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','statusGet','csc','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','redis','./smsAccount.socket','register','jayson/promise','client','http','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','count','set','apply','reject','destroy','get','SmsAccounts','UserProfileResource','end','name','send','index','mandatoryDispositionPause','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','limit','sort','where','pick','filter','merge','VIRTUAL','options','SmsAccount','include','findAll','rows','show','params','Pause','includeAll','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','SmsAccountId','getDispositions','Disposition','hasOwnProperty','order','removeDispositions','getAnswers','findOne'];(function(_0x5ae352,_0x30208c){var _0x46fe24=function(_0xe8d4ce){while(--_0xe8d4ce){_0x5ae352['push'](_0x5ae352['shift']());}};_0x46fe24(++_0x30208c);}(_0xd9da,0x156));var _0xad9d=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0xd9da[_0x199572];return _0x13cfa3;};'use strict';var emlformat=require(_0xad9d('0x0'));var rimraf=require(_0xad9d('0x1'));var zipdir=require(_0xad9d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xad9d('0x3'));var moment=require(_0xad9d('0x4'));var BPromise=require(_0xad9d('0x5'));var Mustache=require(_0xad9d('0x6'));var util=require(_0xad9d('0x7'));var path=require(_0xad9d('0x8'));var sox=require(_0xad9d('0x9'));var csv=require(_0xad9d('0xa'));var ejs=require(_0xad9d('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xad9d('0xc'));var crypto=require(_0xad9d('0xd'));var jsforce=require(_0xad9d('0xe'));var deskjs=require(_0xad9d('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xad9d('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xad9d('0x11'));var as=require(_0xad9d('0x12'));var hardwareService=require(_0xad9d('0x13'));var logger=require(_0xad9d('0x14'))(_0xad9d('0x15'));var utils=require(_0xad9d('0x16'));var config=require(_0xad9d('0x17'));var licenseUtil=require(_0xad9d('0x18'));var db=require(_0xad9d('0x19'))['db'];config['redis']=_[_0xad9d('0x1a')](config['redis'],{'host':_0xad9d('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xad9d('0x1c')]));require(_0xad9d('0x1d'))[_0xad9d('0x1e')](socket);var jayson=require(_0xad9d('0x1f'));var client=jayson[_0xad9d('0x20')][_0xad9d('0x21')]({'port':0x232c});function respondWithRpcPromise(_0x46a7f1,_0x458a6e,_0x9eaab4,_0x4d14d6){return new BPromise(function(_0x518bc4,_0x960790){var _0x121eb8=_0x4d14d6||client;return _0x121eb8['request'](_0x46a7f1,_0x9eaab4)[_0xad9d('0x22')](function(_0x39d304){logger[_0xad9d('0x23')](_0xad9d('0x24'),_0x458a6e,_0xad9d('0x25'));logger[_0xad9d('0x26')](_0xad9d('0x27'),_0x458a6e,_0xad9d('0x25'),JSON[_0xad9d('0x28')](_0x39d304));if(_0x39d304[_0xad9d('0x29')]){if(_0x39d304[_0xad9d('0x29')][_0xad9d('0x2a')]===0x1f4){logger[_0xad9d('0x29')](_0xad9d('0x24'),_0x458a6e,_0x39d304[_0xad9d('0x29')]['message']);return _0x960790(_0x39d304[_0xad9d('0x29')][_0xad9d('0x2b')]);}logger[_0xad9d('0x29')](_0xad9d('0x24'),_0x458a6e,_0x39d304['error'][_0xad9d('0x2b')]);return _0x518bc4(_0x39d304[_0xad9d('0x29')][_0xad9d('0x2b')]);}else{logger['info'](_0xad9d('0x24'),_0x458a6e,'request\x20sent');_0x518bc4(_0x39d304[_0xad9d('0x2c')][_0xad9d('0x2b')]);}})[_0xad9d('0x2d')](function(_0x58bbe6){logger['error'](_0xad9d('0x24'),_0x458a6e,_0x58bbe6);_0x960790(_0x58bbe6);});});}function respondWithStatusCode(_0x166ec1,_0x54b5cc){_0x54b5cc=_0x54b5cc||0xcc;return function(_0x1f88f6){if(_0x1f88f6){return _0x166ec1[_0xad9d('0x2e')](_0x54b5cc);}return _0x166ec1[_0xad9d('0x2f')](_0x54b5cc)['end']();};}function respondWithResult(_0x47400c,_0x5533fe){_0x5533fe=_0x5533fe||0xc8;return function(_0x4997ec){if(_0x4997ec){return _0x47400c['status'](_0x5533fe)[_0xad9d('0x30')](_0x4997ec);}};}function respondWithFilteredResult(_0x16757f,_0x178c1b){return function(_0x2681c9){if(_0x2681c9){var _0x4502f0=typeof _0x178c1b[_0xad9d('0x31')]==='undefined'&&typeof _0x178c1b['limit']===_0xad9d('0x32');var _0x4a016a=_0x2681c9[_0xad9d('0x33')];var _0x13ac7c=_0x4502f0?0x0:_0x178c1b[_0xad9d('0x31')];var _0x56e3f5=_0x4502f0?_0x2681c9['count']:_0x178c1b[_0xad9d('0x31')]+_0x178c1b['limit'];var _0x2ec310;if(_0x56e3f5>=_0x4a016a){_0x56e3f5=_0x4a016a;_0x2ec310=0xc8;}else{_0x2ec310=0xce;}_0x16757f[_0xad9d('0x2f')](_0x2ec310);return _0x16757f[_0xad9d('0x34')]('Content-Range',_0x13ac7c+'-'+_0x56e3f5+'/'+_0x4a016a)[_0xad9d('0x30')](_0x2681c9);}return null;};}function patchUpdates(_0x428732){return function(_0x41f5f3){try{jsonpatch[_0xad9d('0x35')](_0x41f5f3,_0x428732,!![]);}catch(_0x525773){return BPromise[_0xad9d('0x36')](_0x525773);}return _0x41f5f3['save']();};}function saveUpdates(_0x35aa72,_0xe11e98){return function(_0x31adbe){if(_0x31adbe){return _0x31adbe['update'](_0x35aa72)[_0xad9d('0x22')](function(_0x3450b4){return _0x3450b4;});}return null;};}function removeEntity(_0x2b6712,_0x352198){return function(_0x414330){if(_0x414330){return _0x414330[_0xad9d('0x37')]()['then'](function(){var _0x10104e=_0x414330[_0xad9d('0x38')]({'plain':!![]});var _0x116e9f=_0xad9d('0x39');return db[_0xad9d('0x3a')][_0xad9d('0x37')]({'where':{'type':_0x116e9f,'resourceId':_0x10104e['id']}})['then'](function(){return _0x414330;});})[_0xad9d('0x22')](function(){_0x2b6712[_0xad9d('0x2f')](0xcc)[_0xad9d('0x3b')]();});}};}function handleEntityNotFound(_0x567d6e,_0x35586e){return function(_0x467f18){if(!_0x467f18){_0x567d6e[_0xad9d('0x2e')](0x194);}return _0x467f18;};}function handleError(_0x5a6f9f,_0x3eb721){_0x3eb721=_0x3eb721||0x1f4;return function(_0xdca4cc){logger[_0xad9d('0x29')](_0xdca4cc['stack']);if(_0xdca4cc[_0xad9d('0x3c')]){delete _0xdca4cc[_0xad9d('0x3c')];}_0x5a6f9f['status'](_0x3eb721)[_0xad9d('0x3d')](_0xdca4cc);};}exports[_0xad9d('0x3e')]=function(_0x6a9da4,_0x5931c0){var _0x2aa327={'include':[{'model':db['Pause'],'as':_0xad9d('0x3f')}]},_0x3748bc={},_0xd10674={'count':0x0,'rows':[]};var _0x41281c=_[_0xad9d('0x40')](db['SmsAccount'][_0xad9d('0x41')],function(_0x3245d6){return{'name':_0x3245d6['fieldName'],'type':_0x3245d6[_0xad9d('0x42')][_0xad9d('0x43')]};});_0x3748bc[_0xad9d('0x44')]=_[_0xad9d('0x40')](_0x41281c,_0xad9d('0x3c'));_0x3748bc[_0xad9d('0x45')]=_[_0xad9d('0x46')](_0x6a9da4['query']);_0x3748bc[_0xad9d('0x47')]=_[_0xad9d('0x48')](_0x3748bc[_0xad9d('0x44')],_0x3748bc[_0xad9d('0x45')]);_0x2aa327[_0xad9d('0x49')]=_[_0xad9d('0x48')](_0x3748bc['model'],qs[_0xad9d('0x4a')](_0x6a9da4[_0xad9d('0x45')][_0xad9d('0x4a')]));_0x2aa327['attributes']=_0x2aa327[_0xad9d('0x49')][_0xad9d('0x4b')]?_0x2aa327[_0xad9d('0x49')]:_0x3748bc['model'];if(!_0x6a9da4[_0xad9d('0x45')]['hasOwnProperty'](_0xad9d('0x4c'))){_0x2aa327[_0xad9d('0x4d')]=qs[_0xad9d('0x4d')](_0x6a9da4['query'][_0xad9d('0x4d')]);_0x2aa327['offset']=qs[_0xad9d('0x31')](_0x6a9da4['query'][_0xad9d('0x31')]);}_0x2aa327['order']=qs[_0xad9d('0x4e')](_0x6a9da4[_0xad9d('0x45')]['sort']);_0x2aa327[_0xad9d('0x4f')]=qs[_0xad9d('0x47')](_[_0xad9d('0x50')](_0x6a9da4['query'],_0x3748bc[_0xad9d('0x47')]),_0x41281c);if(_0x6a9da4[_0xad9d('0x45')][_0xad9d('0x51')]){_0x2aa327[_0xad9d('0x4f')]=_[_0xad9d('0x52')](_0x2aa327['where'],{'$or':_['map'](_0x41281c,function(_0x4981a8){if(_0x4981a8[_0xad9d('0x42')]!==_0xad9d('0x53')){var _0x17acd9={};_0x17acd9[_0x4981a8['name']]={'$like':'%'+_0x6a9da4['query'][_0xad9d('0x51')]+'%'};return _0x17acd9;}})});}_0x2aa327=_['merge']({},_0x2aa327,_0x6a9da4[_0xad9d('0x54')]);var _0x504273={'where':_0x2aa327[_0xad9d('0x4f')]};return db[_0xad9d('0x55')]['count'](_0x504273)[_0xad9d('0x22')](function(_0x3eac34){_0xd10674[_0xad9d('0x33')]=_0x3eac34;if(_0x6a9da4[_0xad9d('0x45')]['includeAll']){_0x2aa327[_0xad9d('0x56')]=[{'all':!![]}];}return db[_0xad9d('0x55')][_0xad9d('0x57')](_0x2aa327);})[_0xad9d('0x22')](function(_0x1e1d8a){_0xd10674[_0xad9d('0x58')]=_0x1e1d8a;return _0xd10674;})[_0xad9d('0x22')](respondWithFilteredResult(_0x5931c0,_0x2aa327))['catch'](handleError(_0x5931c0,null));};exports[_0xad9d('0x59')]=function(_0x10a8f0,_0x3dbb12){var _0xbb8b3c={'raw':![],'where':{'id':_0x10a8f0[_0xad9d('0x5a')]['id']},'include':[{'model':db[_0xad9d('0x5b')],'as':_0xad9d('0x3f')}]},_0x20699a={};_0x20699a[_0xad9d('0x44')]=_[_0xad9d('0x46')](db['SmsAccount']['rawAttributes']);_0x20699a[_0xad9d('0x45')]=_[_0xad9d('0x46')](_0x10a8f0['query']);_0x20699a[_0xad9d('0x47')]=_[_0xad9d('0x48')](_0x20699a[_0xad9d('0x44')],_0x20699a[_0xad9d('0x45')]);_0xbb8b3c['attributes']=_[_0xad9d('0x48')](_0x20699a['model'],qs['fields'](_0x10a8f0[_0xad9d('0x45')][_0xad9d('0x4a')]));_0xbb8b3c[_0xad9d('0x49')]=_0xbb8b3c[_0xad9d('0x49')]['length']?_0xbb8b3c[_0xad9d('0x49')]:_0x20699a[_0xad9d('0x44')];if(_0x10a8f0['query'][_0xad9d('0x5c')]){_0xbb8b3c['include']=[{'all':!![]}];}_0xbb8b3c=_[_0xad9d('0x52')]({},_0xbb8b3c,_0x10a8f0[_0xad9d('0x54')]);return db[_0xad9d('0x55')]['find'](_0xbb8b3c)[_0xad9d('0x22')](handleEntityNotFound(_0x3dbb12,null))['then'](respondWithResult(_0x3dbb12,null))['catch'](handleError(_0x3dbb12,null));};exports[_0xad9d('0x5d')]=function(_0x4af7ab,_0x9b361c){return db[_0xad9d('0x55')][_0xad9d('0x5d')](_0x4af7ab[_0xad9d('0x5e')],{})[_0xad9d('0x22')](function(_0x20bc13){var _0xe53469=_0x4af7ab['user'][_0xad9d('0x38')]({'plain':!![]});if(!_0xe53469)throw new Error(_0xad9d('0x5f'));if(_0xe53469[_0xad9d('0x60')]===_0xad9d('0x61')){var _0x18a1b1=_0x20bc13[_0xad9d('0x38')]({'plain':!![]});var _0x25b016='SmsAccounts';return db[_0xad9d('0x62')][_0xad9d('0x63')]({'where':{'name':_0x25b016,'userProfileId':_0xe53469[_0xad9d('0x64')]},'raw':!![]})[_0xad9d('0x22')](function(_0x399dcb){if(_0x399dcb&&_0x399dcb[_0xad9d('0x65')]===0x0){return db[_0xad9d('0x3a')][_0xad9d('0x5d')]({'name':_0x18a1b1['name'],'resourceId':_0x18a1b1['id'],'type':_0x399dcb['name'],'sectionId':_0x399dcb['id']},{})[_0xad9d('0x22')](function(){return _0x20bc13;});}else{return _0x20bc13;}})[_0xad9d('0x2d')](function(_0x42c5cb){logger[_0xad9d('0x29')](_0xad9d('0x66'),_0x42c5cb);throw _0x42c5cb;});}return _0x20bc13;})[_0xad9d('0x22')](respondWithResult(_0x9b361c,0xc9))[_0xad9d('0x2d')](handleError(_0x9b361c,null));};exports[_0xad9d('0x67')]=function(_0x3d8a5d,_0xdb687e){if(_0x3d8a5d[_0xad9d('0x5e')]['id']){delete _0x3d8a5d[_0xad9d('0x5e')]['id'];}return db[_0xad9d('0x55')]['find']({'where':{'id':_0x3d8a5d[_0xad9d('0x5a')]['id']},'include':[{'model':db['Pause'],'as':_0xad9d('0x3f')}]})['then'](handleEntityNotFound(_0xdb687e,null))[_0xad9d('0x22')](saveUpdates(_0x3d8a5d[_0xad9d('0x5e')],null))['then'](respondWithResult(_0xdb687e,null))[_0xad9d('0x2d')](handleError(_0xdb687e,null));};exports[_0xad9d('0x37')]=function(_0xdd57a7,_0x353425){return db[_0xad9d('0x55')][_0xad9d('0x63')]({'where':{'id':_0xdd57a7[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x353425,null))['then'](removeEntity(_0x353425,null))['catch'](handleError(_0x353425,null));};exports[_0xad9d('0x68')]=function(_0xeb65b6,_0x1f1f99){return db[_0xad9d('0x55')][_0xad9d('0x68')]()['then'](respondWithResult(_0x1f1f99,null))[_0xad9d('0x2d')](handleError(_0x1f1f99,null));};exports[_0xad9d('0x69')]=function(_0x3a0c3b,_0x2066f8,_0x47eca0){if(_0x3a0c3b[_0xad9d('0x5e')]['id']){delete _0x3a0c3b[_0xad9d('0x5e')]['id'];}return db[_0xad9d('0x55')][_0xad9d('0x63')]({'where':{'id':_0x3a0c3b[_0xad9d('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2066f8,null))[_0xad9d('0x22')](function(_0x302a09){if(_0x302a09){_0x3a0c3b['body'][_0xad9d('0x6a')]=_0x302a09['id'];return db['Disposition'][_0xad9d('0x5d')](_0x3a0c3b[_0xad9d('0x5e')]);}})[_0xad9d('0x22')](respondWithResult(_0x2066f8,null))[_0xad9d('0x2d')](handleError(_0x2066f8,null));};exports[_0xad9d('0x6b')]=function(_0x5947b8,_0x4c2b7e,_0x56a31b){var _0x37d29d={'raw':![],'where':{}};var _0x3ae1b4={};var _0x114dfc={'count':0x0,'rows':[]};return db[_0xad9d('0x55')]['findOne']({'where':{'id':_0x5947b8[_0xad9d('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4c2b7e,null))[_0xad9d('0x22')](function(_0x358f47){if(_0x358f47){_0x3ae1b4[_0xad9d('0x44')]=_[_0xad9d('0x46')](db[_0xad9d('0x6c')][_0xad9d('0x41')]);_0x3ae1b4[_0xad9d('0x45')]=_[_0xad9d('0x46')](_0x5947b8[_0xad9d('0x45')]);_0x3ae1b4['filters']=_[_0xad9d('0x48')](_0x3ae1b4[_0xad9d('0x44')],_0x3ae1b4[_0xad9d('0x45')]);_0x37d29d[_0xad9d('0x49')]=_['intersection'](_0x3ae1b4[_0xad9d('0x44')],qs['fields'](_0x5947b8[_0xad9d('0x45')]['fields']));_0x37d29d[_0xad9d('0x49')]=_0x37d29d[_0xad9d('0x49')]['length']?_0x37d29d[_0xad9d('0x49')]:_0x3ae1b4[_0xad9d('0x44')];if(!_0x5947b8[_0xad9d('0x45')][_0xad9d('0x6d')]('nolimit')){_0x37d29d[_0xad9d('0x4d')]=qs[_0xad9d('0x4d')](_0x5947b8[_0xad9d('0x45')][_0xad9d('0x4d')]);_0x37d29d['offset']=qs[_0xad9d('0x31')](_0x5947b8[_0xad9d('0x45')][_0xad9d('0x31')]);}_0x37d29d[_0xad9d('0x6e')]=qs[_0xad9d('0x4e')](_0x5947b8['query'][_0xad9d('0x4e')]);_0x37d29d[_0xad9d('0x4f')]=qs[_0xad9d('0x47')](_[_0xad9d('0x50')](_0x5947b8['query'],_0x3ae1b4[_0xad9d('0x47')]));_0x37d29d[_0xad9d('0x4f')][_0xad9d('0x6a')]=_0x358f47['id'];if(_0x5947b8[_0xad9d('0x45')][_0xad9d('0x51')]){_0x37d29d[_0xad9d('0x4f')]=_['merge'](_0x37d29d[_0xad9d('0x4f')],{'$or':_[_0xad9d('0x40')](_0x37d29d[_0xad9d('0x49')],function(_0x4e4cd5){var _0x53f899={};_0x53f899[_0x4e4cd5]={'$like':'%'+_0x5947b8[_0xad9d('0x45')][_0xad9d('0x51')]+'%'};return _0x53f899;})});}_0x37d29d=_[_0xad9d('0x52')]({},_0x37d29d,_0x5947b8[_0xad9d('0x54')]);return db['Disposition'][_0xad9d('0x33')]({'where':_0x37d29d[_0xad9d('0x4f')]})['then'](function(_0x39dfbc){_0x114dfc['count']=_0x39dfbc;if(_0x5947b8['query'][_0xad9d('0x5c')]){_0x37d29d['include']=[{'all':!![]}];}return db[_0xad9d('0x6c')][_0xad9d('0x57')](_0x37d29d);})[_0xad9d('0x22')](function(_0x5a903b){_0x114dfc[_0xad9d('0x58')]=_0x5a903b;return _0x114dfc;});}})[_0xad9d('0x22')](respondWithFilteredResult(_0x4c2b7e,_0x37d29d))['catch'](handleError(_0x4c2b7e,null));};exports[_0xad9d('0x6f')]=function(_0x2ef5f3,_0x1628e7,_0x5bb419){return db[_0xad9d('0x55')]['find']({'where':{'id':_0x2ef5f3[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x1628e7,null))[_0xad9d('0x22')](function(_0x6671b9){if(_0x6671b9){return _0x6671b9[_0xad9d('0x6f')](_0x2ef5f3[_0xad9d('0x45')]['ids']);}})[_0xad9d('0x22')](respondWithStatusCode(_0x1628e7,null))['catch'](handleError(_0x1628e7,null));};exports['addAnswer']=function(_0x203513,_0x3d0901,_0x4b3bb3){if(_0x203513[_0xad9d('0x5e')]['id']){delete _0x203513[_0xad9d('0x5e')]['id'];}return db['SmsAccount'][_0xad9d('0x63')]({'where':{'id':_0x203513[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x3d0901,null))[_0xad9d('0x22')](function(_0x277ffd){if(_0x277ffd){_0x203513[_0xad9d('0x5e')][_0xad9d('0x6a')]=_0x277ffd['id'];return db['CannedAnswer'][_0xad9d('0x5d')](_0x203513[_0xad9d('0x5e')]);}})[_0xad9d('0x22')](respondWithResult(_0x3d0901,null))['catch'](handleError(_0x3d0901,null));};exports[_0xad9d('0x70')]=function(_0x1cb7f7,_0x5512b6,_0x5aa923){var _0xf0a819={'raw':![],'where':{}};var _0x215c78={};var _0x3d49f5={'count':0x0,'rows':[]};return db['SmsAccount'][_0xad9d('0x71')]({'where':{'id':_0x1cb7f7[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x5512b6,null))[_0xad9d('0x22')](function(_0x5ddc2c){if(_0x5ddc2c){_0x215c78['model']=_[_0xad9d('0x46')](db[_0xad9d('0x72')][_0xad9d('0x41')]);_0x215c78[_0xad9d('0x45')]=_[_0xad9d('0x46')](_0x1cb7f7[_0xad9d('0x45')]);_0x215c78[_0xad9d('0x47')]=_[_0xad9d('0x48')](_0x215c78['model'],_0x215c78[_0xad9d('0x45')]);_0xf0a819[_0xad9d('0x49')]=_[_0xad9d('0x48')](_0x215c78[_0xad9d('0x44')],qs[_0xad9d('0x4a')](_0x1cb7f7[_0xad9d('0x45')]['fields']));_0xf0a819['attributes']=_0xf0a819[_0xad9d('0x49')][_0xad9d('0x4b')]?_0xf0a819[_0xad9d('0x49')]:_0x215c78[_0xad9d('0x44')];if(!_0x1cb7f7[_0xad9d('0x45')]['hasOwnProperty'](_0xad9d('0x4c'))){_0xf0a819[_0xad9d('0x4d')]=qs[_0xad9d('0x4d')](_0x1cb7f7['query'][_0xad9d('0x4d')]);_0xf0a819['offset']=qs[_0xad9d('0x31')](_0x1cb7f7[_0xad9d('0x45')][_0xad9d('0x31')]);}_0xf0a819[_0xad9d('0x6e')]=qs[_0xad9d('0x4e')](_0x1cb7f7[_0xad9d('0x45')][_0xad9d('0x4e')]);_0xf0a819['where']=qs[_0xad9d('0x47')](_['pick'](_0x1cb7f7[_0xad9d('0x45')],_0x215c78[_0xad9d('0x47')]));_0xf0a819['where'][_0xad9d('0x6a')]=_0x5ddc2c['id'];if(_0x1cb7f7[_0xad9d('0x45')]['filter']){_0xf0a819['where']=_[_0xad9d('0x52')](_0xf0a819[_0xad9d('0x4f')],{'$or':_[_0xad9d('0x40')](_0xf0a819[_0xad9d('0x49')],function(_0x19e5ae){var _0x17af4d={};_0x17af4d[_0x19e5ae]={'$like':'%'+_0x1cb7f7['query'][_0xad9d('0x51')]+'%'};return _0x17af4d;})});}_0xf0a819=_[_0xad9d('0x52')]({},_0xf0a819,_0x1cb7f7[_0xad9d('0x54')]);return db['CannedAnswer'][_0xad9d('0x33')]({'where':_0xf0a819[_0xad9d('0x4f')]})[_0xad9d('0x22')](function(_0x2a3fb9){_0x3d49f5[_0xad9d('0x33')]=_0x2a3fb9;if(_0x1cb7f7[_0xad9d('0x45')]['includeAll']){_0xf0a819[_0xad9d('0x56')]=[{'all':!![]}];}return db['CannedAnswer'][_0xad9d('0x57')](_0xf0a819);})['then'](function(_0x4ae09f){_0x3d49f5['rows']=_0x4ae09f;return _0x3d49f5;});}})['then'](respondWithFilteredResult(_0x5512b6,_0xf0a819))[_0xad9d('0x2d')](handleError(_0x5512b6,null));};exports['removeAnswers']=function(_0x35dd4c,_0x2471d1,_0x3856c9){return db[_0xad9d('0x55')][_0xad9d('0x63')]({'where':{'id':_0x35dd4c[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x2471d1,null))[_0xad9d('0x22')](function(_0x3b715a){if(_0x3b715a){return _0x3b715a[_0xad9d('0x73')](_0x35dd4c[_0xad9d('0x45')][_0xad9d('0x74')]);}})[_0xad9d('0x22')](respondWithStatusCode(_0x2471d1,null))[_0xad9d('0x2d')](handleError(_0x2471d1,null));};exports[_0xad9d('0x75')]=function(_0x4e3b56,_0x39c319,_0x5f44da){var _0x5dc600={'channel':_0xad9d('0x76')};var _0x1f7e68=[];var _0x438963=[];var _0x3e4321={};return db['SmsAccount'][_0xad9d('0x63')]({'where':{'id':_0x4e3b56[_0xad9d('0x5a')]['id']},'include':[{'model':db[_0xad9d('0x77')],'as':_0xad9d('0x78')}]})[_0xad9d('0x22')](handleEntityNotFound(_0x39c319,null))['then'](function(_0x58dc2c){_0x5dc600[_0xad9d('0x79')]=_0x58dc2c;_0x5dc600[_0xad9d('0x7a')]=_['orderBy'](_0x58dc2c[_0xad9d('0x78')],[_0xad9d('0x7b')],[_0xad9d('0x7c')]);if(_0x5dc600[_0xad9d('0x79')][_0xad9d('0x78')]){delete _0x5dc600['account'][_0xad9d('0x78')];}return db['CmContact'][_0xad9d('0x68')]();})['then'](function(_0x18b346){if(!_0x18b346){throw new db[(_0xad9d('0x7d'))][(_0xad9d('0x7e'))](_0xad9d('0x7f'));}_0x1f7e68=_[_0xad9d('0x80')](_[_0xad9d('0x46')](_0x18b346),[_0xad9d('0x81'),'updatedAt']);_0x438963=_['difference'](_[_0xad9d('0x46')](_0x18b346),[_0xad9d('0x81'),_0xad9d('0x82'),_0xad9d('0x83'),_0xad9d('0x84')]);_0x5dc600[_0xad9d('0x5e')]={'mapKey':'mobile'};if(_0x5dc600[_0xad9d('0x79')][_0xad9d('0x42')]){switch(_0x5dc600['account'][_0xad9d('0x42')]){case'twilio':_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x85')]=_0x4e3b56['body'][_0xad9d('0x86')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x5e')]=_0x4e3b56[_0xad9d('0x5e')]['Body'];_0x5dc600[_0xad9d('0x5e')]['messageId']=_0x4e3b56['body'][_0xad9d('0x87')];break;case _0xad9d('0x88'):_0x5dc600[_0xad9d('0x5e')]['from']='+'+_0x4e3b56[_0xad9d('0x5e')]['sender'];_0x5dc600[_0xad9d('0x5e')]['body']=_0x4e3b56['body']['text'];break;case _0xad9d('0x89'):_0x5dc600['body']['from']=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x85')];_0x5dc600[_0xad9d('0x5e')]['body']=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x2b')];break;case _0xad9d('0x8a'):_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x85')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x85')];_0x5dc600['body'][_0xad9d('0x5e')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x5e')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x8b')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x8c')];break;case _0xad9d('0x8d'):_0x5dc600['body'][_0xad9d('0x85')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x86')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x5e')]=_0x4e3b56['body'][_0xad9d('0x8e')];_0x5dc600['body'][_0xad9d('0x8b')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x8f')];break;case _0xad9d('0x90'):_0x5dc600[_0xad9d('0x5e')]['from']='+'+_0x4e3b56[_0xad9d('0x5e')]['results'][0x0][_0xad9d('0x85')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x5e')]=_0x4e3b56['body'][_0xad9d('0x91')][0x0][_0xad9d('0x92')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x8b')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x91')][0x0][_0xad9d('0x8b')];break;case'csc':_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x85')]=_0x4e3b56['body'][_0xad9d('0x93')];_0x5dc600['body'][_0xad9d('0x5e')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x94')][_0xad9d('0x2b')];break;case _0xad9d('0x95'):_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x85')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x96')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x5e')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x92')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x8b')]=_0x4e3b56[_0xad9d('0x5e')]['replyMessageId'];break;case _0xad9d('0x97'):_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x8b')]=_0x4e3b56['body'][0x0][_0xad9d('0x2b')]['id'];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x85')]=_0x4e3b56[_0xad9d('0x5e')][0x0][_0xad9d('0x2b')][_0xad9d('0x85')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x5e')]=_0x4e3b56[_0xad9d('0x5e')][0x0][_0xad9d('0x2b')]['text'];break;case _0xad9d('0x98'):_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x85')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x85')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x5e')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x2b')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x8b')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x99')];break;}}if(_0x5dc600['body']['id']){delete _0x5dc600[_0xad9d('0x5e')]['id'];}if(_[_0xad9d('0x9a')](_0x5dc600['body'][_0xad9d('0x85')])){throw new db[(_0xad9d('0x7d'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0xad9d('0x9a')](_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x5e')])||_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x5e')]===''){throw new db[(_0xad9d('0x7d'))]['ValidationError'](_0xad9d('0x9b'));}if(_[_0xad9d('0x9a')](_0x5dc600['body'][_0xad9d('0x9c')])){throw new db[(_0xad9d('0x7d'))][(_0xad9d('0x7e'))](_0xad9d('0x9d')+_0x438963);}if(!_[_0xad9d('0x9e')](_0x438963,_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x9c')])){throw new db[(_0xad9d('0x7d'))][(_0xad9d('0x7e'))](_0xad9d('0x9f')+_0x438963);}_0x3e4321[_0x5dc600[_0xad9d('0x5e')]['mapKey']]=_0x5dc600[_0xad9d('0x5e')]['from'];return db[_0xad9d('0xa0')][_0xad9d('0x63')]({'where':{'id':_0x5dc600[_0xad9d('0x79')]['ListId']},'include':[{'model':db[_0xad9d('0xa1')],'as':'Contacts','where':_0x3e4321,'limit':0x1,'order':[[_0xad9d('0x82'),_0xad9d('0xa2')]]}]});})[_0xad9d('0x22')](handleEntityNotFound(_0x39c319,null))[_0xad9d('0x22')](function(_0x2815e7){if(_0x2815e7){_0x5dc600[_0xad9d('0xa3')]=_[_0xad9d('0xa4')](_0x2815e7,['Contacts']);if(_0x2815e7[_0xad9d('0xa5')][_0xad9d('0x4b')]){return _0x2815e7[_0xad9d('0xa5')][0x0];}var _0xb71303=_['defaults'](_0x5dc600[_0xad9d('0x5e')],{'firstName':_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x85')],'ListId':_0x2815e7['id']});_0xb71303[_0x5dc600[_0xad9d('0x5e')]['mapKey']]=_0x5dc600['body']['from'];return db[_0xad9d('0xa1')]['create'](_0xb71303,{'fields':_0x1f7e68,'raw':!![]});}})[_0xad9d('0x22')](handleEntityNotFound(_0x39c319,null))[_0xad9d('0x22')](function(_0x4757c4){if(_0x4757c4){_0x5dc600['contact']=_0x4757c4;var _0x1ab138={'ContactId':_0x4757c4['id'],'phone':_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x85')],'SmsAccountId':_0x4e3b56[_0xad9d('0x5a')]['id']};var _0x46ed2b={'ContactId':_0x4757c4['id'],'SmsAccountId':_0x4e3b56[_0xad9d('0x5a')]['id'],'closed':![]};return db['SmsInteraction'][_0xad9d('0x63')]({'where':_0x46ed2b})[_0xad9d('0x22')](function(_0x30cea4){if(_0x30cea4){return[_0x30cea4,![]];}return db[_0xad9d('0xa6')]['create'](_0x1ab138)[_0xad9d('0x22')](function(_0x3150b2){return[_0x3150b2,!![]];});});}})[_0xad9d('0xa7')](function(_0x1f9383,_0x2173e9){_0x5dc600['interaction']=_0x1f9383['get']({'plain':!![]});_0x5dc600[_0xad9d('0xa8')]['created']=![];if(_0x2173e9){if(_0x5dc600[_0xad9d('0x79')][_0xad9d('0xa9')]){_0x5dc600['applications'][_0xad9d('0xaa')]({'id':0x0,'priority':_0x5dc600['applications']['length']+0x1,'app':_0xad9d('0xab'),'appdata':_0xad9d('0xac'),'interval':_0xad9d('0xad')});}_0x5dc600['interaction']['created']=!![];}return db[_0xad9d('0xae')][_0xad9d('0x5d')]({'phone':_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x85')],'messageId':_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x8b')],'body':_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x5e')],'SmsAccountId':_0x4e3b56[_0xad9d('0x5a')]['id'],'SmsInteractionId':_0x1f9383['id'],'direction':'in','ContactId':_0x1f9383[_0xad9d('0xaf')],'AttachmentId':_0x5dc600['body'][_0xad9d('0xb0')]});})[_0xad9d('0x22')](function(_0x175626){_0x5dc600[_0xad9d('0x2b')]=_0x175626;if(_0x5dc600[_0xad9d('0xa8')][_0xad9d('0xb1')]){return db['User'][_0xad9d('0x63')]({'attributes':['id',_0xad9d('0x3c')],'where':{'id':_0x5dc600[_0xad9d('0xa8')][_0xad9d('0xb1')]}})[_0xad9d('0x22')](function(_0x4f5cf2){if(_0x4f5cf2){_0x5dc600[_0xad9d('0x7a')][_0xad9d('0xb2')]({'id':0x0,'priority':0x0,'app':_0xad9d('0xb3'),'appdata':_0x4f5cf2[_0xad9d('0x3c')]+','+(_0x5dc600[_0xad9d('0x79')][_0xad9d('0xb4')]||0xa),'interval':_0xad9d('0xad')});}return respondWithRpcPromise(_0xad9d('0xb5'),_0xad9d('0xb6'),_0x5dc600);});}return respondWithRpcPromise(_0xad9d('0xb5'),_0xad9d('0xb6'),_0x5dc600);})[_0xad9d('0x22')](function(_0x501472){if(_0x501472){var _0x1590e9=0xc8;var _0x475b08=_0xad9d('0xb7');logger[_0xad9d('0x23')](_0xad9d('0x27'),_0x475b08,_0x1590e9,_0xad9d('0xb8'));logger['debug'](_0xad9d('0xb9'),_0x475b08,_0x1590e9,'entity\x20found',JSON[_0xad9d('0x28')](_0x501472));if(_0x5dc600[_0xad9d('0x79')][_0xad9d('0x42')]==='twilio'){return _0x39c319['status'](_0x1590e9)['set']('Content-Type','text/xml')[_0xad9d('0x3d')](_0xad9d('0xba'));}else{return _0x39c319[_0xad9d('0x2f')](_0x1590e9)['json'](_0x501472);}}})[_0xad9d('0x2d')](handleError(_0x39c319,null));};exports[_0xad9d('0xbb')]=function(_0x90ca2e,_0x5a52f7,_0x2e5f5f){return db[_0xad9d('0x55')][_0xad9d('0x71')]({'where':{'id':_0x90ca2e[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x5a52f7,null))[_0xad9d('0x22')](function(_0x1126f4){if(_0x1126f4){return db[_0xad9d('0xbc')][_0xad9d('0xbd')](function(_0x147a3c){return db['SmsApplication'][_0xad9d('0x37')]({'where':{'SmsAccountId':_0x90ca2e[_0xad9d('0x5a')]['id']},'transaction':_0x147a3c})['then'](function(_0xeb6bd4){var _0x3d9af2=_[_0xad9d('0x40')](_0x90ca2e[_0xad9d('0x5e')],function(_0x48a066){_0x48a066['SmsAccountId']=_0x90ca2e[_0xad9d('0x5a')]['id'];return _0x48a066;});return db[_0xad9d('0x77')][_0xad9d('0xbe')](_0x3d9af2,{'transaction':_0x147a3c});});})[_0xad9d('0x22')](function(){return db[_0xad9d('0x77')][_0xad9d('0xbf')]({'where':{'SmsAccountId':_0x90ca2e[_0xad9d('0x5a')]['id']},'order':'priority'});});}})[_0xad9d('0x22')](respondWithResult(_0x5a52f7,null))[_0xad9d('0x2d')](handleError(_0x5a52f7,null));};exports[_0xad9d('0xc0')]=function(_0x48114b,_0x276720,_0x46220c){var _0x4b0698={};var _0x3ab167={};var _0xa3e439;var _0x279516;return db[_0xad9d('0x55')]['findOne']({'where':{'id':_0x48114b['params']['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x276720,null))[_0xad9d('0x22')](function(_0x14d7e3){if(_0x14d7e3){_0xa3e439=_0x14d7e3;_0x3ab167[_0xad9d('0x44')]=_[_0xad9d('0x46')](db[_0xad9d('0x77')][_0xad9d('0x41')]);_0x3ab167[_0xad9d('0x45')]=_[_0xad9d('0x46')](_0x48114b[_0xad9d('0x45')]);_0x3ab167[_0xad9d('0x47')]=_[_0xad9d('0x48')](_0x3ab167[_0xad9d('0x44')],_0x3ab167[_0xad9d('0x45')]);_0x4b0698[_0xad9d('0x49')]=_[_0xad9d('0x48')](_0x3ab167[_0xad9d('0x44')],qs[_0xad9d('0x4a')](_0x48114b[_0xad9d('0x45')][_0xad9d('0x4a')]));_0x4b0698['attributes']=_0x4b0698[_0xad9d('0x49')][_0xad9d('0x4b')]?_0x4b0698[_0xad9d('0x49')]:_0x3ab167[_0xad9d('0x44')];_0x4b0698[_0xad9d('0x6e')]=qs['sort'](_0x48114b[_0xad9d('0x45')]['sort']);_0x4b0698['where']=qs[_0xad9d('0x47')](_['pick'](_0x48114b[_0xad9d('0x45')],_0x3ab167[_0xad9d('0x47')]));if(_0x48114b[_0xad9d('0x45')][_0xad9d('0x51')]){_0x4b0698[_0xad9d('0x4f')]=_[_0xad9d('0x52')](_0x4b0698[_0xad9d('0x4f')],{'$or':_[_0xad9d('0x40')](_0x4b0698[_0xad9d('0x49')],function(_0xe5f73){var _0x5c29ad={};_0x5c29ad[_0xe5f73]={'$like':'%'+_0x48114b[_0xad9d('0x45')][_0xad9d('0x51')]+'%'};return _0x5c29ad;})});}_0x4b0698=_[_0xad9d('0x52')]({},_0x4b0698,_0x48114b[_0xad9d('0x54')]);return _0xa3e439['getApplications'](_0x4b0698);}})[_0xad9d('0x22')](function(_0x27c395){if(_0x27c395){_0x279516=_0x27c395[_0xad9d('0x4b')];if(!_0x48114b['query'][_0xad9d('0x6d')](_0xad9d('0x4c'))){_0x4b0698[_0xad9d('0x4d')]=qs['limit'](_0x48114b[_0xad9d('0x45')][_0xad9d('0x4d')]);_0x4b0698[_0xad9d('0x31')]=qs[_0xad9d('0x31')](_0x48114b[_0xad9d('0x45')][_0xad9d('0x31')]);}return _0xa3e439[_0xad9d('0xc0')](_0x4b0698);}})[_0xad9d('0x22')](function(_0x5c89e0){if(_0x5c89e0){return _0x5c89e0?{'count':_0x279516,'rows':_0x5c89e0}:null;}})['then'](respondWithResult(_0x276720,null))[_0xad9d('0x2d')](handleError(_0x276720,null));};exports['getInteractions']=function(_0x1243d4,_0x1e177a,_0xa91d7f){var _0x104248={'raw':![],'where':{}};var _0x525b8a={};var _0xbfbcdd={'count':0x0,'rows':[]};return db[_0xad9d('0x55')][_0xad9d('0x71')]({'where':{'id':_0x1243d4[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x1e177a,null))[_0xad9d('0x22')](function(_0x196084){if(_0x196084){_0x525b8a[_0xad9d('0x44')]=_['keys'](db[_0xad9d('0xa6')]['rawAttributes']);_0x525b8a[_0xad9d('0x45')]=_['keys'](_0x1243d4[_0xad9d('0x45')]);_0x525b8a['filters']=_[_0xad9d('0x48')](_0x525b8a['model'],_0x525b8a[_0xad9d('0x45')]);_0x104248[_0xad9d('0x49')]=_[_0xad9d('0x48')](_0x525b8a['model'],qs['fields'](_0x1243d4[_0xad9d('0x45')][_0xad9d('0x4a')]));_0x104248[_0xad9d('0x49')]=_0x104248[_0xad9d('0x49')][_0xad9d('0x4b')]?_0x104248[_0xad9d('0x49')]:_0x525b8a['model'];if(!_0x1243d4[_0xad9d('0x45')]['hasOwnProperty'](_0xad9d('0x4c'))){_0x104248[_0xad9d('0x4d')]=qs[_0xad9d('0x4d')](_0x1243d4[_0xad9d('0x45')][_0xad9d('0x4d')]);_0x104248['offset']=qs[_0xad9d('0x31')](_0x1243d4[_0xad9d('0x45')][_0xad9d('0x31')]);}_0x104248[_0xad9d('0x6e')]=qs[_0xad9d('0x4e')](_0x1243d4[_0xad9d('0x45')][_0xad9d('0x4e')]);_0x104248['where']=qs[_0xad9d('0x47')](_[_0xad9d('0x50')](_0x1243d4[_0xad9d('0x45')],_0x525b8a[_0xad9d('0x47')]));_0x104248[_0xad9d('0x4f')][_0xad9d('0x6a')]=_0x196084['id'];if(_0x1243d4['query']['filter']){_0x104248[_0xad9d('0x4f')]=_[_0xad9d('0x52')](_0x104248[_0xad9d('0x4f')],{'$or':_[_0xad9d('0x40')](_0x104248[_0xad9d('0x49')],function(_0x5cbf53){var _0x4aa61c={};_0x4aa61c[_0x5cbf53]={'$like':'%'+_0x1243d4[_0xad9d('0x45')][_0xad9d('0x51')]+'%'};return _0x4aa61c;})});}_0x104248=_[_0xad9d('0x52')]({},_0x104248,_0x1243d4[_0xad9d('0x54')]);return db[_0xad9d('0xa6')]['count']({'where':_0x104248[_0xad9d('0x4f')]})[_0xad9d('0x22')](function(_0x33b7ab){_0xbfbcdd[_0xad9d('0x33')]=_0x33b7ab;if(_0x1243d4[_0xad9d('0x45')][_0xad9d('0x5c')]){_0x104248[_0xad9d('0x56')]=[{'model':db['CmContact'],'as':_0xad9d('0xc1'),'required':![]},{'model':db[_0xad9d('0xc2')],'as':_0xad9d('0xc3'),'attributes':[_0xad9d('0x3c'),'fullname',_0xad9d('0xc4')],'required':![]},{'model':db[_0xad9d('0xc5')],'as':'Tags','attributes':['id',_0xad9d('0x3c'),_0xad9d('0xc6')],'where':_0x1243d4[_0xad9d('0x45')]['tag']?{'id':_0x1243d4[_0xad9d('0x45')][_0xad9d('0xc7')]}:undefined,'required':_0x1243d4[_0xad9d('0x45')][_0xad9d('0xc7')]?!![]:![]}];}return db[_0xad9d('0xa6')]['findAll'](_0x104248);})[_0xad9d('0x22')](function(_0x57ba54){_0xbfbcdd[_0xad9d('0x58')]=_0x57ba54;return _0xbfbcdd;});}})[_0xad9d('0x22')](respondWithFilteredResult(_0x1e177a,_0x104248))[_0xad9d('0x2d')](handleError(_0x1e177a,null));};exports[_0xad9d('0x3d')]=function(_0x20eac0,_0x1c6cb0,_0x4228fd){var _0x2da21f,_0x5e6717,_0x5ac749;if(_[_0xad9d('0x9a')](_0x20eac0[_0xad9d('0x5e')][_0xad9d('0x5e')])||_0x20eac0[_0xad9d('0x5e')][_0xad9d('0x5e')]===''){throw new db['Sequelize'][(_0xad9d('0x7e'))](_0xad9d('0x9b'));}if(_[_0xad9d('0x9a')](_0x20eac0['body']['to'])){throw new db['Sequelize']['ValidationError'](_0xad9d('0xc8'));}_0x2da21f=_0x20eac0[_0xad9d('0x5e')]['to'];return db['SmsAccount']['find']({'where':{'id':_0x20eac0[_0xad9d('0x5a')]['id']},'include':[{'model':db[_0xad9d('0xa0')],'as':_0xad9d('0xc9'),'include':[{'model':db[_0xad9d('0xa1')],'as':'Contacts','where':{'mobile':_0x2da21f},'limit':0x1,'order':[[_0xad9d('0x82'),_0xad9d('0xa2')]]}]}]})[_0xad9d('0x22')](handleEntityNotFound(_0x1c6cb0,null))[_0xad9d('0x22')](function(_0x1797be){if(_0x1797be&&_0x1797be[_0xad9d('0xc9')]){_0x5e6717=_0x1797be[_0xad9d('0x38')]({'plain':!![]});if(_0x5e6717['List']&&_0x5e6717[_0xad9d('0xc9')]['Contacts'][_0xad9d('0x4b')]){return _0x5e6717[_0xad9d('0xc9')][_0xad9d('0xa5')][0x0];}return db['CmContact'][_0xad9d('0x5d')](_['defaults'](_0x20eac0['body'],{'firstName':_0x2da21f,'mobile':_0x2da21f,'phone':_0x2da21f,'ListId':_0x5e6717[_0xad9d('0x84')]}));}})[_0xad9d('0x22')](handleEntityNotFound(_0x1c6cb0,null))[_0xad9d('0x22')](function(_0x51e7d8){if(_0x51e7d8){_0x5ac749=_0x51e7d8;return db[_0xad9d('0xa6')][_0xad9d('0x63')]({'where':{'ContactId':_0x5ac749['id'],'closed':![],'SmsAccountId':_0x5e6717['id']}})[_0xad9d('0x22')](function(_0x7bcbeb){if(_0x7bcbeb){return[_0x7bcbeb,![]];}return db[_0xad9d('0xa6')]['create']({'UserId':_0x20eac0[_0xad9d('0x61')]['id'],'ContactId':_0x5ac749['id'],'SmsAccountId':_0x5e6717['id'],'phone':_0x2da21f,'firstMsgDirection':'out','Messages':[_[_0xad9d('0x52')](_0x20eac0['body'],{'read':![],'body':_0x20eac0[_0xad9d('0x5e')][_0xad9d('0x5e')],'phone':_0x2da21f,'SmsAccountId':_0x5e6717['id'],'UserId':_0x20eac0[_0xad9d('0x61')]['id'],'ContactId':_0x5ac749['id']})]},{'include':[{'model':db[_0xad9d('0xae')],'as':'Messages'}]})['then'](function(_0x2eb26c){return[_0x2eb26c,!![]];});});}})['spread'](function(_0x326285,_0x409c81){if(_0x409c81){return _0x326285;}return db[_0xad9d('0xae')][_0xad9d('0x5d')](_[_0xad9d('0x52')](_0x20eac0['body'],{'read':![],'body':_0x20eac0[_0xad9d('0x5e')][_0xad9d('0x5e')],'phone':_0x2da21f,'SmsAccountId':_0x5e6717['id'],'SmsInteractionId':_0x326285['id'],'UserId':_0x20eac0['user']['id'],'ContactId':_0x5ac749['id']}))[_0xad9d('0x22')](function(_0x5e282d){_0x326285[_0xad9d('0xca')][_0xad9d('0xcb')]=[];_0x326285['dataValues']['Messages'][_0xad9d('0xaa')](_0x5e282d[_0xad9d('0xca')]);return _0x326285;});})[_0xad9d('0x22')](respondWithResult(_0x1c6cb0,null))[_0xad9d('0x2d')](handleError(_0x1c6cb0,null));};exports[_0xad9d('0x2f')]=function(_0x36bada,_0x11a671,_0x2b0169){if(_0x36bada[_0xad9d('0x5e')]['id']){delete _0x36bada[_0xad9d('0x5e')]['id'];}var _0x4e660d,_0x2a8e14,_0x27d230;return db[_0xad9d('0x55')]['find']({'where':{'id':_0x36bada['params']['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x11a671,null))[_0xad9d('0x22')](function(_0x2e0a61){if(_0x2e0a61){_0x27d230=_0x2e0a61;logger[_0xad9d('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xad9d('0x2f'),_0xad9d('0xcc'),_0x2e0a61[_0xad9d('0x42')],util[_0xad9d('0xcd')](_0x36bada[_0xad9d('0x5e')],{'showHidden':![],'depth':null}));switch(_0x2e0a61['type']){case'skebby':if(_0x36bada[_0xad9d('0x5e')]['skebby_dispatch_id']&&_0x36bada[_0xad9d('0x5e')][_0xad9d('0x2f')]){_0x2a8e14=_0x36bada[_0xad9d('0x5e')][_0xad9d('0x2f')];return db[_0xad9d('0xae')][_0xad9d('0x63')]({'where':{'messageId':_0x36bada[_0xad9d('0x5e')][_0xad9d('0xce')]}});}break;case _0xad9d('0x89'):if(_0x36bada['body']['requestid']&&_0x36bada['body'][_0xad9d('0xcf')]){_0x2a8e14=_0x36bada[_0xad9d('0x5e')]['statusInt'];return db[_0xad9d('0xae')][_0xad9d('0x63')]({'where':{'messageId':_0x36bada['body'][_0xad9d('0xd0')]}});}break;case _0xad9d('0x8a'):if(_0x36bada['body'][_0xad9d('0x8c')]&&_0x36bada[_0xad9d('0x5e')][_0xad9d('0xd1')]){_0x2a8e14=_0x36bada[_0xad9d('0x5e')][_0xad9d('0xd1')];return db['SmsMessage'][_0xad9d('0x63')]({'where':{'messageId':_0x36bada[_0xad9d('0x5e')][_0xad9d('0x8c')]}});}break;case _0xad9d('0x90'):var _0x1c6fa8=_0x36bada[_0xad9d('0x5e')]['results'][0x0];if(_0x1c6fa8[_0xad9d('0x8b')]&&_0x1c6fa8[_0xad9d('0x2f')]['groupName']===_0xad9d('0xd2')){_0x2a8e14=_0x1c6fa8['status'][_0xad9d('0xd3')];return db[_0xad9d('0xae')][_0xad9d('0x63')]({'where':{'messageId':_0x1c6fa8[_0xad9d('0x8b')]}});}break;case _0xad9d('0x95'):if(_0x36bada[_0xad9d('0x5e')]['messageId']&&_0x36bada['body'][_0xad9d('0x2f')]){_0x2a8e14=_0x36bada[_0xad9d('0x5e')]['status'];return db['SmsMessage'][_0xad9d('0x63')]({'where':{'messageId':_0x36bada[_0xad9d('0x5e')][_0xad9d('0x8b')]}});}break;case _0xad9d('0x97'):if(_0x36bada[_0xad9d('0x5e')][0x0][_0xad9d('0x2b')]['id']){_0x2a8e14=_0x36bada[_0xad9d('0x5e')][0x0][_0xad9d('0x42')];return db['SmsMessage'][_0xad9d('0x63')]({'where':{'messageId':_0x36bada[_0xad9d('0x5e')][0x0]['message']['id']}});}break;case _0xad9d('0x98'):if(_0x36bada[_0xad9d('0x5e')][_0xad9d('0xd4')]&&_0x36bada[_0xad9d('0x5e')]['status']){_0x2a8e14=_0x36bada['body'][_0xad9d('0x2f')];return db[_0xad9d('0xae')][_0xad9d('0x63')]({'where':{'messageId':_0x36bada[_0xad9d('0x5e')]['redif']}});}break;}}})[_0xad9d('0x22')](handleEntityNotFound(_0x11a671,null))['then'](function(_0x1e789a){if(_0x1e789a){_0x4e660d=_0x1e789a;switch(_0x27d230['type']){case _0xad9d('0x88'):if(_0x2a8e14===_0xad9d('0xd2')){return _0x4e660d[_0xad9d('0x67')]({'read':!![]});}else{logger['error'](_0xad9d('0x27'),_0xad9d('0x2f'),_0xad9d('0x88'),util[_0xad9d('0xcd')](_0x36bada[_0xad9d('0x5e')],{'showHidden':![],'depth':null}));}break;case _0xad9d('0x89'):if(_0x2a8e14==='1'){return _0x4e660d[_0xad9d('0x67')]({'read':!![]});}else{logger[_0xad9d('0x29')](_0xad9d('0x27'),_0xad9d('0x2f'),_0xad9d('0x88'),util[_0xad9d('0xcd')](_0x36bada['body'],{'showHidden':![],'depth':null}));}break;case _0xad9d('0x8a'):if(!_0x36bada[_0xad9d('0x5e')][_0xad9d('0xd5')]&&_0x2a8e14>=0xc8&&_0x2a8e14<=0xce){return _0x4e660d[_0xad9d('0x67')]({'read':!![]});}else{logger[_0xad9d('0x29')](_0xad9d('0x27'),_0xad9d('0x2f'),_0xad9d('0x8a'),util[_0xad9d('0xcd')](_0x36bada[_0xad9d('0x5e')],{'showHidden':![],'depth':null}));}break;case _0xad9d('0x90'):var _0x1d28b8=_0x36bada[_0xad9d('0x5e')][_0xad9d('0x91')][0x0];if(_0x1d28b8[_0xad9d('0x2f')][_0xad9d('0xd3')]==='DELIVERED'){return _0x4e660d[_0xad9d('0x67')]({'read':!![]});}else{logger[_0xad9d('0x29')](_0xad9d('0x27'),'status',_0xad9d('0x90'),util[_0xad9d('0xcd')](_0x36bada['body'],{'showHidden':![],'depth':null}));}break;case _0xad9d('0x95'):if(_0x2a8e14==_0xad9d('0xd6')||_0x2a8e14==_0xad9d('0xd7')){return _0x4e660d[_0xad9d('0x67')]({'read':!![]});}else{logger[_0xad9d('0x29')](_0xad9d('0x27'),_0xad9d('0x2f'),'clickatell',util[_0xad9d('0xcd')](_0x36bada[_0xad9d('0x5e')],{'showHidden':![],'depth':null}));}break;case _0xad9d('0x97'):if(_0x2a8e14==_0xad9d('0xd8')){return _0x4e660d['update']({'read':!![]});}else{logger['error'](_0xad9d('0x27'),_0xad9d('0x2f'),_0xad9d('0x97'),util[_0xad9d('0xcd')](_0x36bada[_0xad9d('0x5e')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x2a8e14===_0xad9d('0xd9')||_0x2a8e14==='ACCEPTD'){return _0x4e660d[_0xad9d('0x67')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xad9d('0x2f'),_0xad9d('0x98'),util['inspect'](_0x36bada[_0xad9d('0x5e')],{'showHidden':![],'depth':null}));}break;}return _0x4e660d;}})[_0xad9d('0x22')](respondWithResult(_0x11a671,null))[_0xad9d('0x2d')](handleError(_0x11a671,null));};exports[_0xad9d('0xda')]=function(_0x52bed5,_0x2c28f7,_0x1900ae){var _0x39a704,_0x50aa22,_0x2f7feb;return db['SmsAccount']['find']({'where':{'id':_0x52bed5[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x2c28f7,null))[_0xad9d('0x22')](function(_0x11a97c){if(_0x11a97c){_0x2f7feb=_0x11a97c;logger[_0xad9d('0x26')](_0xad9d('0x27'),_0xad9d('0x2f'),_0xad9d('0xcc'),_0x11a97c[_0xad9d('0x42')],util[_0xad9d('0xcd')](_0x52bed5['query'],{'showHidden':![],'depth':null}));switch(_0x11a97c[_0xad9d('0x42')]){case _0xad9d('0xdb'):if(_0x52bed5[_0xad9d('0x45')][_0xad9d('0xdc')]&&_0x52bed5[_0xad9d('0x45')][_0xad9d('0xdd')]){_0x50aa22=_0x52bed5[_0xad9d('0x45')][_0xad9d('0xdd')];return db[_0xad9d('0xae')]['find']({'where':{'messageId':_0x52bed5[_0xad9d('0x45')][_0xad9d('0xdc')]}});}break;}}})[_0xad9d('0x22')](handleEntityNotFound(_0x2c28f7,null))['then'](function(_0x262810){if(_0x262810){_0x39a704=_0x262810;switch(_0x2f7feb[_0xad9d('0x42')]){case _0xad9d('0xdb'):if(_0x50aa22==='2'||_0x50aa22==='6'){return _0x39a704[_0xad9d('0x67')]({'read':!![]});}else{logger['error'](_0xad9d('0x27'),_0xad9d('0x2f'),_0xad9d('0xdb'),util[_0xad9d('0xcd')](_0x52bed5[_0xad9d('0x45')],{'showHidden':![],'depth':null}));};break;}return _0x39a704;}})[_0xad9d('0x22')](respondWithResult(_0x2c28f7,null))[_0xad9d('0x2d')](handleError(_0x2c28f7,null));};exports[_0xad9d('0xde')]=function(_0xea9a1f,_0x2e7b1a,_0x1e057c){return db['SmsAccount'][_0xad9d('0x63')]({'where':{'id':_0xea9a1f[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x2e7b1a,null))[_0xad9d('0x22')](function(_0x3704a7){if(_0x3704a7){return _0x3704a7[_0xad9d('0xde')](_0xea9a1f[_0xad9d('0x5e')][_0xad9d('0x74')],_[_0xad9d('0xa4')](_0xea9a1f[_0xad9d('0x5e')],[_0xad9d('0x74'),'id'])||{})[_0xad9d('0xa7')](function(_0x2a0620){for(var _0x8921ae=0x0;_0x8921ae<_0xea9a1f[_0xad9d('0x5e')][_0xad9d('0x74')][_0xad9d('0x4b')];_0x8921ae+=0x1){socket[_0xad9d('0xdf')](_0xad9d('0xe0'),{'UserId':Number(_0xea9a1f[_0xad9d('0x5e')][_0xad9d('0x74')][_0x8921ae]),'SmsAccountId':Number(_0xea9a1f[_0xad9d('0x5a')]['id'])});}return _0x2a0620;});}})['then'](respondWithResult(_0x2e7b1a,null))[_0xad9d('0x2d')](handleError(_0x2e7b1a,null));};exports['removeAgents']=function(_0x20f702,_0x3ef6b7,_0x5b3415){return db[_0xad9d('0x55')][_0xad9d('0x63')]({'where':{'id':_0x20f702[_0xad9d('0x5a')]['id']}})['then'](handleEntityNotFound(_0x3ef6b7,null))[_0xad9d('0x22')](function(_0x4de444){if(_0x4de444){return _0x4de444[_0xad9d('0xe1')](_0x20f702[_0xad9d('0x45')]['ids'])[_0xad9d('0x22')](function(){if(_[_0xad9d('0xe2')](_0x20f702[_0xad9d('0x45')][_0xad9d('0x74')])){for(var _0x27baa7=0x0;_0x27baa7<_0x20f702[_0xad9d('0x45')]['ids'][_0xad9d('0x4b')];_0x27baa7+=0x1){socket[_0xad9d('0xdf')]('userSmsAccount:remove',{'UserId':Number(_0x20f702[_0xad9d('0x45')][_0xad9d('0x74')][_0x27baa7]),'SmsAccountId':Number(_0x20f702[_0xad9d('0x5a')]['id'])});}}else{socket['emit']('userSmsAccount:remove',{'UserId':Number(_0x20f702['query'][_0xad9d('0x74')]),'SmsAccountId':Number(_0x20f702[_0xad9d('0x5a')]['id'])});}});}})[_0xad9d('0x22')](respondWithStatusCode(_0x3ef6b7,null))[_0xad9d('0x2d')](handleError(_0x3ef6b7,null));};exports[_0xad9d('0xe3')]=function(_0x1f1bf6,_0x59d65c,_0x2bbf00){var _0x133cf5={};var _0x4aa39f={};var _0x217760;var _0x3b954f;return db[_0xad9d('0x55')][_0xad9d('0x71')]({'where':{'id':_0x1f1bf6[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x59d65c,null))[_0xad9d('0x22')](function(_0x1d7556){if(_0x1d7556){_0x217760=_0x1d7556;_0x4aa39f[_0xad9d('0x44')]=_[_0xad9d('0x46')](db['User'][_0xad9d('0x41')]);_0x4aa39f[_0xad9d('0x45')]=_[_0xad9d('0x46')](_0x1f1bf6['query']);_0x4aa39f[_0xad9d('0x47')]=_[_0xad9d('0x48')](_0x4aa39f[_0xad9d('0x44')],_0x4aa39f[_0xad9d('0x45')]);_0x133cf5['attributes']=_[_0xad9d('0x48')](_0x4aa39f[_0xad9d('0x44')],qs[_0xad9d('0x4a')](_0x1f1bf6[_0xad9d('0x45')][_0xad9d('0x4a')]));_0x133cf5[_0xad9d('0x49')]=_0x133cf5[_0xad9d('0x49')][_0xad9d('0x4b')]?_0x133cf5[_0xad9d('0x49')]:_0x4aa39f[_0xad9d('0x44')];_0x133cf5['order']=qs[_0xad9d('0x4e')](_0x1f1bf6['query']['sort']);_0x133cf5['where']=qs[_0xad9d('0x47')](_[_0xad9d('0x50')](_0x1f1bf6['query'],_0x4aa39f[_0xad9d('0x47')]));if(_0x1f1bf6['query'][_0xad9d('0x51')]){_0x133cf5[_0xad9d('0x4f')]=_['merge'](_0x133cf5[_0xad9d('0x4f')],{'$or':_[_0xad9d('0x40')](_0x133cf5['attributes'],function(_0x5a205d){var _0x4776ba={};_0x4776ba[_0x5a205d]={'$like':'%'+_0x1f1bf6[_0xad9d('0x45')][_0xad9d('0x51')]+'%'};return _0x4776ba;})});}_0x133cf5=_[_0xad9d('0x52')]({},_0x133cf5,_0x1f1bf6[_0xad9d('0x54')]);return _0x217760['getAgents'](_0x133cf5);}})[_0xad9d('0x22')](function(_0x5e2808){if(_0x5e2808){_0x3b954f=_0x5e2808['length'];if(!_0x1f1bf6[_0xad9d('0x45')][_0xad9d('0x6d')](_0xad9d('0x4c'))){_0x133cf5['limit']=qs[_0xad9d('0x4d')](_0x1f1bf6['query'][_0xad9d('0x4d')]);_0x133cf5[_0xad9d('0x31')]=qs['offset'](_0x1f1bf6[_0xad9d('0x45')][_0xad9d('0x31')]);}return _0x217760['getAgents'](_0x133cf5);}})[_0xad9d('0x22')](function(_0x1f9836){if(_0x1f9836){return _0x1f9836?{'count':_0x3b954f,'rows':_0x1f9836}:null;}})['then'](respondWithResult(_0x59d65c,null))[_0xad9d('0x2d')](handleError(_0x59d65c,null));};
\ No newline at end of file
index 857124c..a9822f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x297a=['update','emit','hasOwnProperty','hook','exports','../../mysqldb','SmsAccount','setMaxListeners','save'];(function(_0x210d7f,_0x2abe4f){var _0x42d687=function(_0x46b2ae){while(--_0x46b2ae){_0x210d7f['push'](_0x210d7f['shift']());}};_0x42d687(++_0x2abe4f);}(_0x297a,0x1a3));var _0xa297=function(_0x451657,_0x512c79){_0x451657=_0x451657-0x0;var _0x2e7b7a=_0x297a[_0x451657];return _0x2e7b7a;};'use strict';var EventEmitter=require('events');var SmsAccount=require(_0xa297('0x0'))['db'][_0xa297('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xa297('0x2')](0x0);var events={'afterCreate':_0xa297('0x3'),'afterUpdate':_0xa297('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2cc2a2){return function(_0x5c1d60,_0x1e107f,_0xf7e114){SmsAccountEvents['emit'](_0x2cc2a2+':'+_0x5c1d60['id'],_0x5c1d60);SmsAccountEvents[_0xa297('0x5')](_0x2cc2a2,_0x5c1d60);_0xf7e114(null);};}for(var e in events){if(events[_0xa297('0x6')](e)){var event=events[e];SmsAccount[_0xa297('0x7')](e,emitEvent(event));}}module[_0xa297('0x8')]=SmsAccountEvents;
\ No newline at end of file
+var _0x111f=['../../mysqldb','SmsAccount','setMaxListeners','remove','hasOwnProperty','exports','events'];(function(_0xc1dfa3,_0x5efa32){var _0xff5c55=function(_0x1c45da){while(--_0x1c45da){_0xc1dfa3['push'](_0xc1dfa3['shift']());}};_0xff5c55(++_0x5efa32);}(_0x111f,0x1c6));var _0xf111=function(_0x3c395d,_0x510fe4){_0x3c395d=_0x3c395d-0x0;var _0x3cd0fb=_0x111f[_0x3c395d];return _0x3cd0fb;};'use strict';var EventEmitter=require(_0xf111('0x0'));var SmsAccount=require(_0xf111('0x1'))['db'][_0xf111('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xf111('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xf111('0x4')};function emitEvent(_0x2c9191){return function(_0x5776e5,_0x488c34,_0x68806e){SmsAccountEvents['emit'](_0x2c9191+':'+_0x5776e5['id'],_0x5776e5);SmsAccountEvents['emit'](_0x2c9191,_0x5776e5);_0x68806e(null);};}for(var e in events){if(events[_0xf111('0x5')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0xf111('0x6')]=SmsAccountEvents;
\ No newline at end of file
index 5388ff6..93901fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5bd=['../../config/environment','define','SmsAccount','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xb5bd,0x12c));var _0xdb5b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb5bd[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xdb5b('0x0'));var util=require('util');var logger=require(_0xdb5b('0x1'))(_0xdb5b('0x2'));var moment=require(_0xdb5b('0x3'));var BPromise=require(_0xdb5b('0x4'));var rp=require(_0xdb5b('0x5'));var fs=require('fs');var path=require(_0xdb5b('0x6'));var rimraf=require(_0xdb5b('0x7'));var config=require(_0xdb5b('0x8'));var attributes=require('./smsAccount.attributes');module['exports']=function(_0x1102ba,_0x4e9b27){return _0x1102ba[_0xdb5b('0x9')](_0xdb5b('0xa'),attributes,{'tableName':'sms_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1488=['bluebird','rimraf','../../config/environment','exports','define','sms_accounts','lodash','util','../../config/logger','moment'];(function(_0x461130,_0x1de0aa){var _0x2e225e=function(_0x170816){while(--_0x170816){_0x461130['push'](_0x461130['shift']());}};_0x2e225e(++_0x1de0aa);}(_0x1488,0x13c));var _0x8148=function(_0x481af3,_0x483fac){_0x481af3=_0x481af3-0x0;var _0x3354ea=_0x1488[_0x481af3];return _0x3354ea;};'use strict';var _=require(_0x8148('0x0'));var util=require(_0x8148('0x1'));var logger=require(_0x8148('0x2'))('api');var moment=require(_0x8148('0x3'));var BPromise=require(_0x8148('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x8148('0x5'));var config=require(_0x8148('0x6'));var attributes=require('./smsAccount.attributes');module[_0x8148('0x7')]=function(_0x2dcdd1,_0xad9fb8){return _0x2dcdd1[_0x8148('0x8')]('SmsAccount',attributes,{'tableName':_0x8148('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7fc16ee..c6ffdd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe612=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','socket.io-emitter','./smsAccount.socket','register','request','then','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','ShowSmsAccount','SmsAccount','find','options','raw','where','attributes','map','include','model','stringify','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x4bcb3c,_0x192122){var _0xfe09bb=function(_0xcd8ad2){while(--_0xcd8ad2){_0x4bcb3c['push'](_0x4bcb3c['shift']());}};_0xfe09bb(++_0x192122);}(_0xe612,0x192));var _0x2e61=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0xe612[_0x2d7f0e];return _0x110b07;};'use strict';var _=require(_0x2e61('0x0'));var util=require(_0x2e61('0x1'));var moment=require(_0x2e61('0x2'));var BPromise=require(_0x2e61('0x3'));var rs=require(_0x2e61('0x4'));var fs=require('fs');var Redis=require(_0x2e61('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2e61('0x6'));var logger=require(_0x2e61('0x7'))(_0x2e61('0x8'));var config=require(_0x2e61('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x2e61('0xa')]({'port':0x232a});config[_0x2e61('0xb')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x2e61('0xc'))(new Redis(config[_0x2e61('0xb')]));require(_0x2e61('0xd'))[_0x2e61('0xe')](socket);function respondWithRpcPromise(_0x13cb3d,_0x3d3e9f,_0x584a64){return new BPromise(function(_0x3ac877,_0x177e3e){return client[_0x2e61('0xf')](_0x13cb3d,_0x584a64)[_0x2e61('0x10')](function(_0x12646c){logger['info'](_0x2e61('0x11'),_0x3d3e9f,_0x2e61('0x12'));logger[_0x2e61('0x13')](_0x2e61('0x14'),_0x3d3e9f,_0x2e61('0x12'),JSON['stringify'](_0x12646c));if(_0x12646c[_0x2e61('0x15')]){if(_0x12646c['error'][_0x2e61('0x16')]===0x1f4){logger[_0x2e61('0x15')](_0x2e61('0x11'),_0x3d3e9f,_0x12646c[_0x2e61('0x15')][_0x2e61('0x17')]);return _0x177e3e(_0x12646c[_0x2e61('0x15')][_0x2e61('0x17')]);}logger[_0x2e61('0x15')](_0x2e61('0x11'),_0x3d3e9f,_0x12646c['error'][_0x2e61('0x17')]);return _0x3ac877(_0x12646c[_0x2e61('0x15')][_0x2e61('0x17')]);}else{logger[_0x2e61('0x18')]('SmsAccount,\x20%s,\x20%s',_0x3d3e9f,'request\x20sent');_0x3ac877(_0x12646c['result'][_0x2e61('0x17')]);}})['catch'](function(_0x5ec422){logger[_0x2e61('0x15')](_0x2e61('0x11'),_0x3d3e9f,_0x5ec422);_0x177e3e(_0x5ec422);});});}exports[_0x2e61('0x19')]=function(_0x3197eb){var _0x2fdcc3=this;return new Promise(function(_0x229ba2,_0x14e0c2){return db[_0x2e61('0x1a')][_0x2e61('0x1b')]({'raw':_0x3197eb[_0x2e61('0x1c')]?_0x3197eb[_0x2e61('0x1c')][_0x2e61('0x1d')]===undefined?!![]:![]:!![],'where':_0x3197eb[_0x2e61('0x1c')]?_0x3197eb[_0x2e61('0x1c')][_0x2e61('0x1e')]||null:null,'attributes':_0x3197eb[_0x2e61('0x1c')]?_0x3197eb[_0x2e61('0x1c')][_0x2e61('0x1f')]||null:null,'include':_0x3197eb[_0x2e61('0x1c')]?_0x3197eb[_0x2e61('0x1c')]['include']?_[_0x2e61('0x20')](_0x3197eb['options'][_0x2e61('0x21')],function(_0x35ea01){return{'model':db[_0x35ea01[_0x2e61('0x22')]],'as':_0x35ea01['as'],'attributes':_0x35ea01[_0x2e61('0x1f')],'include':_0x35ea01[_0x2e61('0x21')]?_['map'](_0x35ea01[_0x2e61('0x21')],function(_0xf9f086){return{'model':db[_0xf9f086[_0x2e61('0x22')]],'as':_0xf9f086['as'],'attributes':_0xf9f086['attributes'],'include':_0xf9f086[_0x2e61('0x21')]?_['map'](_0xf9f086['include'],function(_0x5dbbba){return{'model':db[_0x5dbbba['model']],'as':_0x5dbbba['as'],'attributes':_0x5dbbba[_0x2e61('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x2e61('0x10')](function(_0x165695){logger['info'](_0x2e61('0x19'),_0x3197eb);logger[_0x2e61('0x13')](_0x2e61('0x19'),_0x3197eb,JSON[_0x2e61('0x23')](_0x165695));_0x229ba2(_0x165695);})[_0x2e61('0x24')](function(_0xe7822){logger['error'](_0x2e61('0x19'),_0xe7822[_0x2e61('0x17')],_0x3197eb);_0x14e0c2(_0x2fdcc3[_0x2e61('0x15')](0x1f4,_0xe7822['message']));});});};
\ No newline at end of file
+var _0x36e4=['redis','localhost','socket.io-emitter','request','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSmsAccount','find','options','where','attributes','include','map','model','then','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults'];(function(_0x291c61,_0x27d265){var _0x35f9ad=function(_0xae30f8){while(--_0xae30f8){_0x291c61['push'](_0x291c61['shift']());}};_0x35f9ad(++_0x27d265);}(_0x36e4,0x15c));var _0x436e=function(_0x4fa5be,_0x2d5edf){_0x4fa5be=_0x4fa5be-0x0;var _0x109e5f=_0x36e4[_0x4fa5be];return _0x109e5f;};'use strict';var _=require('lodash');var util=require(_0x436e('0x0'));var moment=require(_0x436e('0x1'));var BPromise=require('bluebird');var rs=require(_0x436e('0x2'));var fs=require('fs');var Redis=require(_0x436e('0x3'));var db=require(_0x436e('0x4'))['db'];var utils=require(_0x436e('0x5'));var logger=require('../../config/logger')(_0x436e('0x6'));var config=require(_0x436e('0x7'));var jayson=require(_0x436e('0x8'));var client=jayson[_0x436e('0x9')][_0x436e('0xa')]({'port':0x232a});config['redis']=_[_0x436e('0xb')](config[_0x436e('0xc')],{'host':_0x436e('0xd'),'port':0x18eb});var socket=require(_0x436e('0xe'))(new Redis(config['redis']));require('./smsAccount.socket')['register'](socket);function respondWithRpcPromise(_0x494490,_0x56dec1,_0x44397d){return new BPromise(function(_0x4ac115,_0x5cc43d){return client[_0x436e('0xf')](_0x494490,_0x44397d)['then'](function(_0x29dbd5){logger[_0x436e('0x10')](_0x436e('0x11'),_0x56dec1,_0x436e('0x12'));logger[_0x436e('0x13')](_0x436e('0x14'),_0x56dec1,'request\x20sent',JSON[_0x436e('0x15')](_0x29dbd5));if(_0x29dbd5[_0x436e('0x16')]){if(_0x29dbd5[_0x436e('0x16')][_0x436e('0x17')]===0x1f4){logger['error'](_0x436e('0x11'),_0x56dec1,_0x29dbd5[_0x436e('0x16')][_0x436e('0x18')]);return _0x5cc43d(_0x29dbd5[_0x436e('0x16')][_0x436e('0x18')]);}logger[_0x436e('0x16')](_0x436e('0x11'),_0x56dec1,_0x29dbd5[_0x436e('0x16')][_0x436e('0x18')]);return _0x4ac115(_0x29dbd5[_0x436e('0x16')][_0x436e('0x18')]);}else{logger[_0x436e('0x10')](_0x436e('0x11'),_0x56dec1,_0x436e('0x12'));_0x4ac115(_0x29dbd5[_0x436e('0x19')][_0x436e('0x18')]);}})[_0x436e('0x1a')](function(_0x594b60){logger[_0x436e('0x16')](_0x436e('0x11'),_0x56dec1,_0x594b60);_0x5cc43d(_0x594b60);});});}exports[_0x436e('0x1b')]=function(_0x40c3a7){var _0x53da36=this;return new Promise(function(_0x22b4b0,_0x4dfa5){return db['SmsAccount'][_0x436e('0x1c')]({'raw':_0x40c3a7['options']?_0x40c3a7[_0x436e('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x40c3a7[_0x436e('0x1d')]?_0x40c3a7[_0x436e('0x1d')][_0x436e('0x1e')]||null:null,'attributes':_0x40c3a7[_0x436e('0x1d')]?_0x40c3a7[_0x436e('0x1d')][_0x436e('0x1f')]||null:null,'include':_0x40c3a7[_0x436e('0x1d')]?_0x40c3a7[_0x436e('0x1d')][_0x436e('0x20')]?_[_0x436e('0x21')](_0x40c3a7[_0x436e('0x1d')][_0x436e('0x20')],function(_0x7c8aee){return{'model':db[_0x7c8aee[_0x436e('0x22')]],'as':_0x7c8aee['as'],'attributes':_0x7c8aee[_0x436e('0x1f')],'include':_0x7c8aee['include']?_['map'](_0x7c8aee[_0x436e('0x20')],function(_0x540a0b){return{'model':db[_0x540a0b[_0x436e('0x22')]],'as':_0x540a0b['as'],'attributes':_0x540a0b[_0x436e('0x1f')],'include':_0x540a0b[_0x436e('0x20')]?_[_0x436e('0x21')](_0x540a0b[_0x436e('0x20')],function(_0x27365d){return{'model':db[_0x27365d[_0x436e('0x22')]],'as':_0x27365d['as'],'attributes':_0x27365d[_0x436e('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x436e('0x23')](function(_0x234375){logger['info'](_0x436e('0x1b'),_0x40c3a7);logger[_0x436e('0x13')](_0x436e('0x1b'),_0x40c3a7,JSON[_0x436e('0x15')](_0x234375));_0x22b4b0(_0x234375);})['catch'](function(_0x18aef7){logger[_0x436e('0x16')](_0x436e('0x1b'),_0x18aef7['message'],_0x40c3a7);_0x4dfa5(_0x53da36['error'](0x1f4,_0x18aef7['message']));});});};
\ No newline at end of file
index 6203b98..44a1668 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xa9e0[_0x5b561d];return _0x431060;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xa9e0[_0x4dbaad];return _0x226c72;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
index d97c484..28f5347 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['path','connect-timeout','express','../../components/auth/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','exports','multer'];(function(_0x98b7de,_0x19e558){var _0x5127a1=function(_0x3de529){while(--_0x3de529){_0x98b7de['push'](_0x98b7de['shift']());}};_0x5127a1(++_0x19e558);}(_0x3e74,0x175));var _0x43e7=function(_0xe6a2f7,_0x5126b8){_0xe6a2f7=_0xe6a2f7-0x0;var _0x4e1469=_0x3e74[_0xe6a2f7];return _0x4e1469;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),auth[_0x43e7('0x8')](),controller[_0x43e7('0xb')]);router[_0x43e7('0xc')]('/',auth[_0x43e7('0x8')](),controller['create']);router[_0x43e7('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x43e7('0xe')]);router[_0x43e7('0xf')]('/:id',auth[_0x43e7('0x8')](),controller['destroy']);module[_0x43e7('0x10')]=router;
\ No newline at end of file
+var _0x7217=['Router','fs-extra','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x2ede20,_0x15ead9){var _0x1743a8=function(_0x134606){while(--_0x134606){_0x2ede20['push'](_0x2ede20['shift']());}};_0x1743a8(++_0x15ead9);}(_0x7217,0x19e));var _0x7721=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0x7217[_0x40ac5e];return _0x2839d6;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0xd')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0xf')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller['update']);router[_0x7721('0x10')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0x11')]);module[_0x7721('0x12')]=router;
\ No newline at end of file
index e00b7d2..5fe7c9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x964c=['noop','*,*,*,*','sequelize','INTEGER','STRING'];(function(_0x4ffc12,_0x5efbac){var _0x1d6153=function(_0x4e53ea){while(--_0x4e53ea){_0x4ffc12['push'](_0x4ffc12['shift']());}};_0x1d6153(++_0x5efbac);}(_0x964c,0x1d3));var _0xc964=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x964c[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0xc964('0x0'));module['exports']={'priority':{'type':Sequelize[_0xc964('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xc964('0x2')],'allowNull':![],'defaultValue':_0xc964('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xc964('0x4')}};
\ No newline at end of file
+var _0x6d9f=['TEXT','*,*,*,*','INTEGER','STRING','noop'];(function(_0x15aa30,_0x3e3f7a){var _0x9d15ef=function(_0x2c3c9a){while(--_0x2c3c9a){_0x15aa30['push'](_0x15aa30['shift']());}};_0x9d15ef(++_0x3e3f7a);}(_0x6d9f,0x93));var _0xf6d9=function(_0x12d425,_0x4bc9c7){_0x12d425=_0x12d425-0x0;var _0x51a0c3=_0x6d9f[_0x12d425];return _0x51a0c3;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize[_0xf6d9('0x0')],'allowNull':![]},'app':{'type':Sequelize[_0xf6d9('0x1')],'allowNull':![],'defaultValue':_0xf6d9('0x2')},'appdata':{'type':Sequelize[_0xf6d9('0x3')]()},'description':{'type':Sequelize[_0xf6d9('0x1')]},'interval':{'type':Sequelize[_0xf6d9('0x1')],'defaultValue':_0xf6d9('0x4')}};
\ No newline at end of file
index 36fc867..4cc9b09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6ab=['crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','apply','reject','save','then','destroy','error','name','send','map','SmsApplication','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','merge','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','squel'];(function(_0x548200,_0x3241b8){var _0x1a6d74=function(_0x412f84){while(--_0x412f84){_0x548200['push'](_0x548200['shift']());}};_0x1a6d74(++_0x3241b8);}(_0xa6ab,0xd6));var _0xba6a=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xa6ab[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0xba6a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xba6a('0x1'));var jsonpatch=require(_0xba6a('0x2'));var rp=require(_0xba6a('0x3'));var moment=require('moment');var BPromise=require(_0xba6a('0x4'));var Mustache=require('mustache');var util=require(_0xba6a('0x5'));var path=require(_0xba6a('0x6'));var sox=require(_0xba6a('0x7'));var csv=require(_0xba6a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xba6a('0x9'));var _=require('lodash');var squel=require(_0xba6a('0xa'));var crypto=require(_0xba6a('0xb'));var jsforce=require(_0xba6a('0xc'));var deskjs=require(_0xba6a('0xd'));var toCsv=require(_0xba6a('0x8'));var querystring=require(_0xba6a('0xe'));var Papa=require(_0xba6a('0xf'));var Redis=require(_0xba6a('0x10'));var authService=require(_0xba6a('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xba6a('0x12'));var logger=require(_0xba6a('0x13'))(_0xba6a('0x14'));var utils=require(_0xba6a('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xba6a('0x16'));var db=require(_0xba6a('0x17'))['db'];function respondWithStatusCode(_0x2ac7bc,_0x416601){_0x416601=_0x416601||0xcc;return function(_0x3db4ba){if(_0x3db4ba){return _0x2ac7bc[_0xba6a('0x18')](_0x416601);}return _0x2ac7bc[_0xba6a('0x19')](_0x416601)[_0xba6a('0x1a')]();};}function respondWithResult(_0x43f21f,_0x1d37ba){_0x1d37ba=_0x1d37ba||0xc8;return function(_0x264df9){if(_0x264df9){return _0x43f21f['status'](_0x1d37ba)[_0xba6a('0x1b')](_0x264df9);}};}function respondWithFilteredResult(_0x19dea4,_0x46e34c){return function(_0x50dc2f){if(_0x50dc2f){var _0x3d1329=typeof _0x46e34c['offset']===_0xba6a('0x1c')&&typeof _0x46e34c['limit']===_0xba6a('0x1c');var _0x6c5083=_0x50dc2f[_0xba6a('0x1d')];var _0xfdd8d1=_0x3d1329?0x0:_0x46e34c[_0xba6a('0x1e')];var _0x4269ad=_0x3d1329?_0x50dc2f['count']:_0x46e34c['offset']+_0x46e34c[_0xba6a('0x1f')];var _0x37f8f2;if(_0x4269ad>=_0x6c5083){_0x4269ad=_0x6c5083;_0x37f8f2=0xc8;}else{_0x37f8f2=0xce;}_0x19dea4[_0xba6a('0x19')](_0x37f8f2);return _0x19dea4[_0xba6a('0x20')]('Content-Range',_0xfdd8d1+'-'+_0x4269ad+'/'+_0x6c5083)[_0xba6a('0x1b')](_0x50dc2f);}return null;};}function patchUpdates(_0xd2aa10){return function(_0x2508be){try{jsonpatch[_0xba6a('0x21')](_0x2508be,_0xd2aa10,!![]);}catch(_0x58e1b4){return BPromise[_0xba6a('0x22')](_0x58e1b4);}return _0x2508be[_0xba6a('0x23')]();};}function saveUpdates(_0x242331,_0x29af95){return function(_0x162116){if(_0x162116){return _0x162116['update'](_0x242331)[_0xba6a('0x24')](function(_0x2b134a){return _0x2b134a;});}return null;};}function removeEntity(_0x16c34b,_0xc2d0f8){return function(_0x3b923e){if(_0x3b923e){return _0x3b923e[_0xba6a('0x25')]()[_0xba6a('0x24')](function(){_0x16c34b[_0xba6a('0x19')](0xcc)[_0xba6a('0x1a')]();});}};}function handleEntityNotFound(_0x3483b8,_0x175222){return function(_0x32e449){if(!_0x32e449){_0x3483b8['sendStatus'](0x194);}return _0x32e449;};}function handleError(_0x486149,_0x16b3ab){_0x16b3ab=_0x16b3ab||0x1f4;return function(_0x5d1bca){logger[_0xba6a('0x26')](_0x5d1bca['stack']);if(_0x5d1bca['name']){delete _0x5d1bca[_0xba6a('0x27')];}_0x486149['status'](_0x16b3ab)[_0xba6a('0x28')](_0x5d1bca);};}exports['index']=function(_0x2d265d,_0x34edac){var _0x56411d={},_0x115ebf={},_0x352731={'count':0x0,'rows':[]};var _0x33d280=_[_0xba6a('0x29')](db[_0xba6a('0x2a')][_0xba6a('0x2b')],function(_0x5623fc){return{'name':_0x5623fc[_0xba6a('0x2c')],'type':_0x5623fc[_0xba6a('0x2d')][_0xba6a('0x2e')]};});_0x115ebf[_0xba6a('0x2f')]=_['map'](_0x33d280,'name');_0x115ebf['query']=_[_0xba6a('0x30')](_0x2d265d[_0xba6a('0x31')]);_0x115ebf[_0xba6a('0x32')]=_['intersection'](_0x115ebf[_0xba6a('0x2f')],_0x115ebf[_0xba6a('0x31')]);_0x56411d[_0xba6a('0x33')]=_[_0xba6a('0x34')](_0x115ebf['model'],qs[_0xba6a('0x35')](_0x2d265d[_0xba6a('0x31')][_0xba6a('0x35')]));_0x56411d[_0xba6a('0x33')]=_0x56411d[_0xba6a('0x33')][_0xba6a('0x36')]?_0x56411d[_0xba6a('0x33')]:_0x115ebf['model'];if(!_0x2d265d['query'][_0xba6a('0x37')](_0xba6a('0x38'))){_0x56411d[_0xba6a('0x1f')]=qs['limit'](_0x2d265d[_0xba6a('0x31')][_0xba6a('0x1f')]);_0x56411d[_0xba6a('0x1e')]=qs[_0xba6a('0x1e')](_0x2d265d['query'][_0xba6a('0x1e')]);}_0x56411d[_0xba6a('0x39')]=qs[_0xba6a('0x3a')](_0x2d265d[_0xba6a('0x31')]['sort']);_0x56411d[_0xba6a('0x3b')]=qs['filters'](_[_0xba6a('0x3c')](_0x2d265d['query'],_0x115ebf['filters']),_0x33d280);if(_0x2d265d[_0xba6a('0x31')][_0xba6a('0x3d')]){_0x56411d[_0xba6a('0x3b')]=_['merge'](_0x56411d[_0xba6a('0x3b')],{'$or':_[_0xba6a('0x29')](_0x33d280,function(_0x27a06d){if(_0x27a06d['type']!==_0xba6a('0x3e')){var _0x20534c={};_0x20534c[_0x27a06d['name']]={'$like':'%'+_0x2d265d[_0xba6a('0x31')][_0xba6a('0x3d')]+'%'};return _0x20534c;}})});}_0x56411d=_['merge']({},_0x56411d,_0x2d265d[_0xba6a('0x3f')]);var _0x3cfe15={'where':_0x56411d[_0xba6a('0x3b')]};return db[_0xba6a('0x2a')]['count'](_0x3cfe15)[_0xba6a('0x24')](function(_0x2036c3){_0x352731['count']=_0x2036c3;if(_0x2d265d[_0xba6a('0x31')][_0xba6a('0x40')]){_0x56411d['include']=[{'all':!![]}];}return db[_0xba6a('0x2a')][_0xba6a('0x41')](_0x56411d);})[_0xba6a('0x24')](function(_0x3435b0){_0x352731[_0xba6a('0x42')]=_0x3435b0;return _0x352731;})[_0xba6a('0x24')](respondWithFilteredResult(_0x34edac,_0x56411d))[_0xba6a('0x43')](handleError(_0x34edac,null));};exports[_0xba6a('0x44')]=function(_0x1eafc8,_0x5d90dd){var _0x5dfa79={'raw':!![],'where':{'id':_0x1eafc8[_0xba6a('0x45')]['id']}},_0x3f3065={};_0x3f3065['model']=_[_0xba6a('0x30')](db[_0xba6a('0x2a')][_0xba6a('0x2b')]);_0x3f3065[_0xba6a('0x31')]=_[_0xba6a('0x30')](_0x1eafc8[_0xba6a('0x31')]);_0x3f3065[_0xba6a('0x32')]=_[_0xba6a('0x34')](_0x3f3065['model'],_0x3f3065[_0xba6a('0x31')]);_0x5dfa79['attributes']=_[_0xba6a('0x34')](_0x3f3065[_0xba6a('0x2f')],qs['fields'](_0x1eafc8[_0xba6a('0x31')]['fields']));_0x5dfa79[_0xba6a('0x33')]=_0x5dfa79['attributes']['length']?_0x5dfa79[_0xba6a('0x33')]:_0x3f3065['model'];if(_0x1eafc8[_0xba6a('0x31')][_0xba6a('0x40')]){_0x5dfa79[_0xba6a('0x46')]=[{'all':!![]}];}_0x5dfa79=_[_0xba6a('0x47')]({},_0x5dfa79,_0x1eafc8[_0xba6a('0x3f')]);return db[_0xba6a('0x2a')][_0xba6a('0x48')](_0x5dfa79)[_0xba6a('0x24')](handleEntityNotFound(_0x5d90dd,null))['then'](respondWithResult(_0x5d90dd,null))[_0xba6a('0x43')](handleError(_0x5d90dd,null));};exports['create']=function(_0x58f434,_0x27bfe4){return db[_0xba6a('0x2a')][_0xba6a('0x49')](_0x58f434[_0xba6a('0x4a')],{})['then'](respondWithResult(_0x27bfe4,0xc9))[_0xba6a('0x43')](handleError(_0x27bfe4,null));};exports['update']=function(_0x100adf,_0x5b44d0){if(_0x100adf[_0xba6a('0x4a')]['id']){delete _0x100adf[_0xba6a('0x4a')]['id'];}return db[_0xba6a('0x2a')]['find']({'where':{'id':_0x100adf['params']['id']}})[_0xba6a('0x24')](handleEntityNotFound(_0x5b44d0,null))['then'](saveUpdates(_0x100adf[_0xba6a('0x4a')],null))[_0xba6a('0x24')](respondWithResult(_0x5b44d0,null))[_0xba6a('0x43')](handleError(_0x5b44d0,null));};exports[_0xba6a('0x25')]=function(_0x3e5ef2,_0x3e2157){return db[_0xba6a('0x2a')][_0xba6a('0x48')]({'where':{'id':_0x3e5ef2[_0xba6a('0x45')]['id']}})[_0xba6a('0x24')](handleEntityNotFound(_0x3e2157,null))[_0xba6a('0x24')](removeEntity(_0x3e2157,null))[_0xba6a('0x43')](handleError(_0x3e2157,null));};
\ No newline at end of file
+var _0x99ff=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','end','error','name','send','index','SmsApplication','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','length','find','create','body','params','eml-format','zip-dir','fast-json-patch','request-promise','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js'];(function(_0x5129bd,_0x26e419){var _0x414769=function(_0x2c1fcc){while(--_0x2c1fcc){_0x5129bd['push'](_0x5129bd['shift']());}};_0x414769(++_0x26e419);}(_0x99ff,0x1b4));var _0xf99f=function(_0x30bd01,_0x557a2c){_0x30bd01=_0x30bd01-0x0;var _0x44cdc3=_0x99ff[_0x30bd01];return _0x44cdc3;};'use strict';var emlformat=require(_0xf99f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf99f('0x1'));var jsonpatch=require(_0xf99f('0x2'));var rp=require(_0xf99f('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xf99f('0x4'));var sox=require(_0xf99f('0x5'));var csv=require(_0xf99f('0x6'));var ejs=require(_0xf99f('0x7'));var fs=require('fs');var fs_extra=require(_0xf99f('0x8'));var _=require(_0xf99f('0x9'));var squel=require(_0xf99f('0xa'));var crypto=require(_0xf99f('0xb'));var jsforce=require(_0xf99f('0xc'));var deskjs=require(_0xf99f('0xd'));var toCsv=require(_0xf99f('0x6'));var querystring=require('querystring');var Papa=require(_0xf99f('0xe'));var Redis=require(_0xf99f('0xf'));var authService=require(_0xf99f('0x10'));var qs=require(_0xf99f('0x11'));var as=require(_0xf99f('0x12'));var hardwareService=require(_0xf99f('0x13'));var logger=require(_0xf99f('0x14'))(_0xf99f('0x15'));var utils=require(_0xf99f('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xf99f('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xa7711d,_0x25d74f){_0x25d74f=_0x25d74f||0xcc;return function(_0x342909){if(_0x342909){return _0xa7711d[_0xf99f('0x18')](_0x25d74f);}return _0xa7711d['status'](_0x25d74f)['end']();};}function respondWithResult(_0x147936,_0x351ec5){_0x351ec5=_0x351ec5||0xc8;return function(_0x297402){if(_0x297402){return _0x147936[_0xf99f('0x19')](_0x351ec5)[_0xf99f('0x1a')](_0x297402);}};}function respondWithFilteredResult(_0x494172,_0xdc8f20){return function(_0x97f54e){if(_0x97f54e){var _0x67edc2=typeof _0xdc8f20[_0xf99f('0x1b')]===_0xf99f('0x1c')&&typeof _0xdc8f20[_0xf99f('0x1d')]===_0xf99f('0x1c');var _0x398f80=_0x97f54e[_0xf99f('0x1e')];var _0xb3496c=_0x67edc2?0x0:_0xdc8f20['offset'];var _0x4ca26c=_0x67edc2?_0x97f54e[_0xf99f('0x1e')]:_0xdc8f20[_0xf99f('0x1b')]+_0xdc8f20['limit'];var _0x100669;if(_0x4ca26c>=_0x398f80){_0x4ca26c=_0x398f80;_0x100669=0xc8;}else{_0x100669=0xce;}_0x494172[_0xf99f('0x19')](_0x100669);return _0x494172['set'](_0xf99f('0x1f'),_0xb3496c+'-'+_0x4ca26c+'/'+_0x398f80)['json'](_0x97f54e);}return null;};}function patchUpdates(_0x232f56){return function(_0x1663ca){try{jsonpatch[_0xf99f('0x20')](_0x1663ca,_0x232f56,!![]);}catch(_0x2d38aa){return BPromise[_0xf99f('0x21')](_0x2d38aa);}return _0x1663ca[_0xf99f('0x22')]();};}function saveUpdates(_0x2fb823,_0x5176b4){return function(_0x4c0597){if(_0x4c0597){return _0x4c0597[_0xf99f('0x23')](_0x2fb823)[_0xf99f('0x24')](function(_0x36a9b0){return _0x36a9b0;});}return null;};}function removeEntity(_0x38a55e,_0x40b2e8){return function(_0x38894f){if(_0x38894f){return _0x38894f[_0xf99f('0x25')]()['then'](function(){_0x38a55e[_0xf99f('0x19')](0xcc)[_0xf99f('0x26')]();});}};}function handleEntityNotFound(_0x1fa763,_0x186540){return function(_0x32b05a){if(!_0x32b05a){_0x1fa763[_0xf99f('0x18')](0x194);}return _0x32b05a;};}function handleError(_0x2c38cb,_0xa5aad4){_0xa5aad4=_0xa5aad4||0x1f4;return function(_0x5be3ad){logger[_0xf99f('0x27')](_0x5be3ad['stack']);if(_0x5be3ad['name']){delete _0x5be3ad[_0xf99f('0x28')];}_0x2c38cb[_0xf99f('0x19')](_0xa5aad4)[_0xf99f('0x29')](_0x5be3ad);};}exports[_0xf99f('0x2a')]=function(_0x5b54c4,_0x214069){var _0x34cf75={},_0x21bb22={},_0x40a299={'count':0x0,'rows':[]};var _0x801a53=_['map'](db[_0xf99f('0x2b')][_0xf99f('0x2c')],function(_0x390388){return{'name':_0x390388[_0xf99f('0x2d')],'type':_0x390388[_0xf99f('0x2e')][_0xf99f('0x2f')]};});_0x21bb22[_0xf99f('0x30')]=_[_0xf99f('0x31')](_0x801a53,_0xf99f('0x28'));_0x21bb22[_0xf99f('0x32')]=_[_0xf99f('0x33')](_0x5b54c4[_0xf99f('0x32')]);_0x21bb22[_0xf99f('0x34')]=_[_0xf99f('0x35')](_0x21bb22[_0xf99f('0x30')],_0x21bb22[_0xf99f('0x32')]);_0x34cf75[_0xf99f('0x36')]=_[_0xf99f('0x35')](_0x21bb22[_0xf99f('0x30')],qs[_0xf99f('0x37')](_0x5b54c4['query'][_0xf99f('0x37')]));_0x34cf75['attributes']=_0x34cf75[_0xf99f('0x36')]['length']?_0x34cf75['attributes']:_0x21bb22['model'];if(!_0x5b54c4[_0xf99f('0x32')]['hasOwnProperty'](_0xf99f('0x38'))){_0x34cf75['limit']=qs[_0xf99f('0x1d')](_0x5b54c4[_0xf99f('0x32')][_0xf99f('0x1d')]);_0x34cf75[_0xf99f('0x1b')]=qs[_0xf99f('0x1b')](_0x5b54c4['query'][_0xf99f('0x1b')]);}_0x34cf75[_0xf99f('0x39')]=qs[_0xf99f('0x3a')](_0x5b54c4[_0xf99f('0x32')][_0xf99f('0x3a')]);_0x34cf75[_0xf99f('0x3b')]=qs[_0xf99f('0x34')](_['pick'](_0x5b54c4[_0xf99f('0x32')],_0x21bb22[_0xf99f('0x34')]),_0x801a53);if(_0x5b54c4[_0xf99f('0x32')][_0xf99f('0x3c')]){_0x34cf75['where']=_[_0xf99f('0x3d')](_0x34cf75[_0xf99f('0x3b')],{'$or':_[_0xf99f('0x31')](_0x801a53,function(_0x297548){if(_0x297548[_0xf99f('0x2e')]!==_0xf99f('0x3e')){var _0x2a8dba={};_0x2a8dba[_0x297548[_0xf99f('0x28')]]={'$like':'%'+_0x5b54c4[_0xf99f('0x32')][_0xf99f('0x3c')]+'%'};return _0x2a8dba;}})});}_0x34cf75=_[_0xf99f('0x3d')]({},_0x34cf75,_0x5b54c4[_0xf99f('0x3f')]);var _0x52e784={'where':_0x34cf75['where']};return db[_0xf99f('0x2b')]['count'](_0x52e784)['then'](function(_0x4fe2b4){_0x40a299[_0xf99f('0x1e')]=_0x4fe2b4;if(_0x5b54c4[_0xf99f('0x32')][_0xf99f('0x40')]){_0x34cf75[_0xf99f('0x41')]=[{'all':!![]}];}return db[_0xf99f('0x2b')][_0xf99f('0x42')](_0x34cf75);})['then'](function(_0x53d47f){_0x40a299[_0xf99f('0x43')]=_0x53d47f;return _0x40a299;})[_0xf99f('0x24')](respondWithFilteredResult(_0x214069,_0x34cf75))[_0xf99f('0x44')](handleError(_0x214069,null));};exports[_0xf99f('0x45')]=function(_0x2546ea,_0x19be19){var _0x1abdbd={'raw':!![],'where':{'id':_0x2546ea['params']['id']}},_0x42468f={};_0x42468f[_0xf99f('0x30')]=_[_0xf99f('0x33')](db['SmsApplication'][_0xf99f('0x2c')]);_0x42468f[_0xf99f('0x32')]=_[_0xf99f('0x33')](_0x2546ea[_0xf99f('0x32')]);_0x42468f['filters']=_['intersection'](_0x42468f['model'],_0x42468f['query']);_0x1abdbd['attributes']=_[_0xf99f('0x35')](_0x42468f['model'],qs[_0xf99f('0x37')](_0x2546ea[_0xf99f('0x32')]['fields']));_0x1abdbd[_0xf99f('0x36')]=_0x1abdbd[_0xf99f('0x36')][_0xf99f('0x46')]?_0x1abdbd[_0xf99f('0x36')]:_0x42468f[_0xf99f('0x30')];if(_0x2546ea['query'][_0xf99f('0x40')]){_0x1abdbd[_0xf99f('0x41')]=[{'all':!![]}];}_0x1abdbd=_[_0xf99f('0x3d')]({},_0x1abdbd,_0x2546ea[_0xf99f('0x3f')]);return db[_0xf99f('0x2b')][_0xf99f('0x47')](_0x1abdbd)[_0xf99f('0x24')](handleEntityNotFound(_0x19be19,null))[_0xf99f('0x24')](respondWithResult(_0x19be19,null))['catch'](handleError(_0x19be19,null));};exports[_0xf99f('0x48')]=function(_0x311e92,_0x2fedc6){return db[_0xf99f('0x2b')][_0xf99f('0x48')](_0x311e92[_0xf99f('0x49')],{})[_0xf99f('0x24')](respondWithResult(_0x2fedc6,0xc9))['catch'](handleError(_0x2fedc6,null));};exports[_0xf99f('0x23')]=function(_0x509ce8,_0x2c5cdc){if(_0x509ce8[_0xf99f('0x49')]['id']){delete _0x509ce8[_0xf99f('0x49')]['id'];}return db[_0xf99f('0x2b')][_0xf99f('0x47')]({'where':{'id':_0x509ce8[_0xf99f('0x4a')]['id']}})[_0xf99f('0x24')](handleEntityNotFound(_0x2c5cdc,null))[_0xf99f('0x24')](saveUpdates(_0x509ce8[_0xf99f('0x49')],null))[_0xf99f('0x24')](respondWithResult(_0x2c5cdc,null))[_0xf99f('0x44')](handleError(_0x2c5cdc,null));};exports[_0xf99f('0x25')]=function(_0x1c5d57,_0x4fe850){return db[_0xf99f('0x2b')][_0xf99f('0x47')]({'where':{'id':_0x1c5d57['params']['id']}})[_0xf99f('0x24')](handleEntityNotFound(_0x4fe850,null))['then'](removeEntity(_0x4fe850,null))[_0xf99f('0x44')](handleError(_0x4fe850,null));};
\ No newline at end of file
index 5e20937..a482f3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c5a=['sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./smsApplication.attributes','exports','SmsApplication'];(function(_0x336030,_0x4086ea){var _0x2b203b=function(_0x10b0ad){while(--_0x10b0ad){_0x336030['push'](_0x336030['shift']());}};_0x2b203b(++_0x4086ea);}(_0x8c5a,0x1b6));var _0xa8c5=function(_0x4bdfa9,_0x301dcd){_0x4bdfa9=_0x4bdfa9-0x0;var _0x40de34=_0x8c5a[_0x4bdfa9];return _0x40de34;};'use strict';var _=require(_0xa8c5('0x0'));var util=require(_0xa8c5('0x1'));var logger=require(_0xa8c5('0x2'))(_0xa8c5('0x3'));var moment=require(_0xa8c5('0x4'));var BPromise=require(_0xa8c5('0x5'));var rp=require(_0xa8c5('0x6'));var fs=require('fs');var path=require(_0xa8c5('0x7'));var rimraf=require('rimraf');var config=require(_0xa8c5('0x8'));var attributes=require(_0xa8c5('0x9'));module[_0xa8c5('0xa')]=function(_0x1ffc0d,_0x132476){return _0x1ffc0d['define'](_0xa8c5('0xb'),attributes,{'tableName':_0xa8c5('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xa8c5('0xd'),'collate':_0xa8c5('0xe')});};
\ No newline at end of file
+var _0xf6ca=['../../config/logger','moment','../../config/environment','./smsApplication.attributes','exports','define','SmsApplication','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util'];(function(_0x29e34e,_0x103882){var _0x1f6ed8=function(_0x14855d){while(--_0x14855d){_0x29e34e['push'](_0x29e34e['shift']());}};_0x1f6ed8(++_0x103882);}(_0xf6ca,0x15a));var _0xaf6c=function(_0x3bbf08,_0x484ae7){_0x3bbf08=_0x3bbf08-0x0;var _0x1f308d=_0xf6ca[_0x3bbf08];return _0x1f308d;};'use strict';var _=require(_0xaf6c('0x0'));var util=require(_0xaf6c('0x1'));var logger=require(_0xaf6c('0x2'))('api');var moment=require(_0xaf6c('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xaf6c('0x4'));var attributes=require(_0xaf6c('0x5'));module[_0xaf6c('0x6')]=function(_0x4014b1,_0x5cda4b){return _0x4014b1[_0xaf6c('0x7')](_0xaf6c('0x8'),attributes,{'tableName':_0xaf6c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xaf6c('0xa'),'collate':_0xaf6c('0xb')});};
\ No newline at end of file
index 2fc2bef..c9cf1d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1fa=['code','error','message','catch','moment','randomstring','../../config/environment','request','info','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x423e4b,_0x1bb75b){var _0x626fd4=function(_0x1e731e){while(--_0x1e731e){_0x423e4b['push'](_0x423e4b['shift']());}};_0x626fd4(++_0x1bb75b);}(_0xb1fa,0x9e));var _0xab1f=function(_0x25fe88,_0x3307d7){_0x25fe88=_0x25fe88-0x0;var _0x14d5c6=_0xb1fa[_0x25fe88];return _0x14d5c6;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xab1f('0x0'));var BPromise=require('bluebird');var rs=require(_0xab1f('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xab1f('0x2'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x463442,_0x54c5b0,_0x17e178){return new BPromise(function(_0x2fbc7e,_0x5213a4){return client[_0xab1f('0x3')](_0x463442,_0x17e178)['then'](function(_0x578cf7){logger[_0xab1f('0x4')](_0xab1f('0x5'),_0x54c5b0,_0xab1f('0x6'));logger[_0xab1f('0x7')](_0xab1f('0x8'),_0x54c5b0,'request\x20sent',JSON[_0xab1f('0x9')](_0x578cf7));if(_0x578cf7['error']){if(_0x578cf7['error'][_0xab1f('0xa')]===0x1f4){logger[_0xab1f('0xb')]('SmsApplication,\x20%s,\x20%s',_0x54c5b0,_0x578cf7['error'][_0xab1f('0xc')]);return _0x5213a4(_0x578cf7['error'][_0xab1f('0xc')]);}logger[_0xab1f('0xb')](_0xab1f('0x5'),_0x54c5b0,_0x578cf7['error'][_0xab1f('0xc')]);return _0x2fbc7e(_0x578cf7[_0xab1f('0xb')][_0xab1f('0xc')]);}else{logger[_0xab1f('0x4')]('SmsApplication,\x20%s,\x20%s',_0x54c5b0,_0xab1f('0x6'));_0x2fbc7e(_0x578cf7['result'][_0xab1f('0xc')]);}})[_0xab1f('0xd')](function(_0xcdba98){logger['error'](_0xab1f('0x5'),_0x54c5b0,_0xcdba98);_0x5213a4(_0xcdba98);});});}
\ No newline at end of file
+var _0x1775=['stringify','error','code','SmsApplication,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','SmsApplication,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x2519d7,_0x13c5ef){var _0x579eda=function(_0x14a8b2){while(--_0x14a8b2){_0x2519d7['push'](_0x2519d7['shift']());}};_0x579eda(++_0x13c5ef);}(_0x1775,0x1db));var _0x5177=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x1775[_0x3947c9];return _0x2e7871;};'use strict';var _=require('lodash');var util=require(_0x5177('0x0'));var moment=require(_0x5177('0x1'));var BPromise=require(_0x5177('0x2'));var rs=require(_0x5177('0x3'));var fs=require('fs');var Redis=require(_0x5177('0x4'));var db=require(_0x5177('0x5'))['db'];var utils=require(_0x5177('0x6'));var logger=require(_0x5177('0x7'))(_0x5177('0x8'));var config=require(_0x5177('0x9'));var jayson=require(_0x5177('0xa'));var client=jayson[_0x5177('0xb')][_0x5177('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2ac1c6,_0x300b43,_0x245c12){return new BPromise(function(_0x363611,_0x3ce288){return client[_0x5177('0xd')](_0x2ac1c6,_0x245c12)[_0x5177('0xe')](function(_0x2c23d8){logger[_0x5177('0xf')]('SmsApplication,\x20%s,\x20%s',_0x300b43,'request\x20sent');logger[_0x5177('0x10')](_0x5177('0x11'),_0x300b43,_0x5177('0x12'),JSON[_0x5177('0x13')](_0x2c23d8));if(_0x2c23d8[_0x5177('0x14')]){if(_0x2c23d8['error'][_0x5177('0x15')]===0x1f4){logger[_0x5177('0x14')](_0x5177('0x16'),_0x300b43,_0x2c23d8[_0x5177('0x14')][_0x5177('0x17')]);return _0x3ce288(_0x2c23d8[_0x5177('0x14')][_0x5177('0x17')]);}logger[_0x5177('0x14')](_0x5177('0x16'),_0x300b43,_0x2c23d8[_0x5177('0x14')][_0x5177('0x17')]);return _0x363611(_0x2c23d8[_0x5177('0x14')][_0x5177('0x17')]);}else{logger[_0x5177('0xf')](_0x5177('0x16'),_0x300b43,_0x5177('0x12'));_0x363611(_0x2c23d8[_0x5177('0x18')][_0x5177('0x17')]);}})[_0x5177('0x19')](function(_0x50ce2c){logger[_0x5177('0x14')](_0x5177('0x16'),_0x300b43,_0x50ce2c);_0x3ce288(_0x50ce2c);});});}
\ No newline at end of file
index 6ad4240..3d34af8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4213=['download','post','create','/:id/messages','addMessage','/:id/tags','tracked','smsinteraction:addtags','put','smsinteraction:update','update','sms','smsinteraction:destroy','destroy','delete','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./smsInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download'];(function(_0x36c5b0,_0x5001da){var _0xf19333=function(_0x1e880a){while(--_0x1e880a){_0x36c5b0['push'](_0x36c5b0['shift']());}};_0xf19333(++_0x5001da);}(_0x4213,0x77));var _0x3421=function(_0xb4f705,_0x39327b){_0xb4f705=_0xb4f705-0x0;var _0x48e5b6=_0x4213[_0xb4f705];return _0x48e5b6;};'use strict';var multer=require(_0x3421('0x0'));var util=require(_0x3421('0x1'));var path=require(_0x3421('0x2'));var timeout=require(_0x3421('0x3'));var express=require(_0x3421('0x4'));var router=express[_0x3421('0x5')]();var fs_extra=require(_0x3421('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x3421('0x7'));var config=require('../../config/environment');var controller=require(_0x3421('0x8'));router[_0x3421('0x9')]('/',auth[_0x3421('0xa')](),controller[_0x3421('0xb')]);router['get'](_0x3421('0xc'),auth[_0x3421('0xa')](),controller[_0x3421('0xd')]);router[_0x3421('0x9')](_0x3421('0xe'),auth['isAuthenticated'](),controller[_0x3421('0xf')]);router['get']('/:id/messages',auth[_0x3421('0xa')](),controller['getMessages']);router[_0x3421('0x9')](_0x3421('0x10'),auth[_0x3421('0xa')](),controller[_0x3421('0x11')]);router[_0x3421('0x12')]('/',auth[_0x3421('0xa')](),controller[_0x3421('0x13')]);router['post'](_0x3421('0x14'),auth[_0x3421('0xa')](),controller[_0x3421('0x15')]);router[_0x3421('0x12')](_0x3421('0x16'),auth[_0x3421('0xa')](),interaction[_0x3421('0x17')]('sms',_0x3421('0x18')),controller['addTags']);router[_0x3421('0x19')](_0x3421('0xe'),auth['isAuthenticated'](),interaction[_0x3421('0x17')]('sms',_0x3421('0x1a')),controller[_0x3421('0x1b')]);router['delete'](_0x3421('0xe'),auth[_0x3421('0xa')](),interaction[_0x3421('0x17')](_0x3421('0x1c'),_0x3421('0x1d')),controller[_0x3421('0x1e')]);router[_0x3421('0x1f')](_0x3421('0x16'),auth[_0x3421('0xa')](),controller[_0x3421('0x20')]);module[_0x3421('0x21')]=router;
\ No newline at end of file
+var _0x4cf8=['/:id','/:id/messages','getMessages','/:id/download','create','post','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','put','smsinteraction:update','delete','smsinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','describe'];(function(_0x3debfe,_0x2d8837){var _0x128ebd=function(_0x2be5bf){while(--_0x2be5bf){_0x3debfe['push'](_0x3debfe['shift']());}};_0x128ebd(++_0x2d8837);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x1af8d3,_0x544d86){_0x1af8d3=_0x1af8d3-0x0;var _0x3a50c5=_0x4cf8[_0x1af8d3];return _0x3a50c5;};'use strict';var multer=require(_0x84cf('0x0'));var util=require(_0x84cf('0x1'));var path=require(_0x84cf('0x2'));var timeout=require(_0x84cf('0x3'));var express=require(_0x84cf('0x4'));var router=express[_0x84cf('0x5')]();var fs_extra=require(_0x84cf('0x6'));var auth=require(_0x84cf('0x7'));var interaction=require(_0x84cf('0x8'));var config=require(_0x84cf('0x9'));var controller=require(_0x84cf('0xa'));router[_0x84cf('0xb')]('/',auth['isAuthenticated'](),controller['index']);router[_0x84cf('0xb')]('/describe',auth[_0x84cf('0xc')](),controller[_0x84cf('0xd')]);router['get'](_0x84cf('0xe'),auth[_0x84cf('0xc')](),controller['show']);router[_0x84cf('0xb')](_0x84cf('0xf'),auth[_0x84cf('0xc')](),controller[_0x84cf('0x10')]);router['get'](_0x84cf('0x11'),auth[_0x84cf('0xc')](),controller['download']);router['post']('/',auth[_0x84cf('0xc')](),controller[_0x84cf('0x12')]);router[_0x84cf('0x13')](_0x84cf('0xf'),auth[_0x84cf('0xc')](),controller[_0x84cf('0x14')]);router[_0x84cf('0x13')](_0x84cf('0x15'),auth[_0x84cf('0xc')](),interaction[_0x84cf('0x16')](_0x84cf('0x17'),_0x84cf('0x18')),controller[_0x84cf('0x19')]);router[_0x84cf('0x1a')](_0x84cf('0xe'),auth[_0x84cf('0xc')](),interaction[_0x84cf('0x16')](_0x84cf('0x17'),_0x84cf('0x1b')),controller['update']);router[_0x84cf('0x1c')](_0x84cf('0xe'),auth[_0x84cf('0xc')](),interaction[_0x84cf('0x16')](_0x84cf('0x17'),_0x84cf('0x1d')),controller[_0x84cf('0x1e')]);router['delete']('/:id/tags',auth[_0x84cf('0xc')](),controller[_0x84cf('0x1f')]);module[_0x84cf('0x20')]=router;
\ No newline at end of file
index 7cf78aa..c09fe3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a08=['moment','DATE','STRING','ENUM','out','BOOLEAN','sequelize'];(function(_0x3bb45b,_0x2dcc0b){var _0x513162=function(_0x46f44b){while(--_0x46f44b){_0x3bb45b['push'](_0x3bb45b['shift']());}};_0x513162(++_0x2dcc0b);}(_0x7a08,0x11e));var _0x87a0=function(_0xbd1f60,_0x470e77){_0xbd1f60=_0xbd1f60-0x0;var _0x25802f=_0x7a08[_0xbd1f60];return _0x25802f;};'use strict';var Sequelize=require(_0x87a0('0x0'));var moment=require(_0x87a0('0x1'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x87a0('0x2')]},'disposition':{'type':Sequelize[_0x87a0('0x3')]},'secondDisposition':{'type':Sequelize[_0x87a0('0x3')]},'thirdDisposition':{'type':Sequelize[_0x87a0('0x3')]},'note':{'type':Sequelize[_0x87a0('0x3')]},'phone':{'type':Sequelize[_0x87a0('0x3')]},'read1stAt':{'type':Sequelize[_0x87a0('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x87a0('0x4')]('in',_0x87a0('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x87a0('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x87a0('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x87a0('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x9b69=['DATE','out','BOOLEAN','sequelize','moment','exports','STRING','ENUM'];(function(_0x27bb9e,_0x18abd8){var _0x4c6663=function(_0x45ca15){while(--_0x45ca15){_0x27bb9e['push'](_0x27bb9e['shift']());}};_0x4c6663(++_0x18abd8);}(_0x9b69,0xa3));var _0x99b6=function(_0x2fcd34,_0x3d237a){_0x2fcd34=_0x2fcd34-0x0;var _0x4f51c8=_0x9b69[_0x2fcd34];return _0x4f51c8;};'use strict';var Sequelize=require(_0x99b6('0x0'));var moment=require(_0x99b6('0x1'));module[_0x99b6('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x99b6('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x99b6('0x3')]},'note':{'type':Sequelize[_0x99b6('0x3')]},'phone':{'type':Sequelize[_0x99b6('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x99b6('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x99b6('0x5')]},'lastMsgDirection':{'type':Sequelize[_0x99b6('0x4')]('in',_0x99b6('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x99b6('0x7')],'defaultValue':![]}};
\ No newline at end of file
index f42a985..84aefbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22fb=['filters','pick','select','field','color','tools_tags','u.id','u.fullname','ui.SmsInteractionId','from','left_join','users','u.id\x20=\x20ui.UserId','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','sms_accounts','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','unreadMessages','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','value','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','body','text','keys','some','compact','isEmpty','SmsAccountId','i.SmsAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','filter','replace','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','role','agent','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','user','sequelize','toString','keyBy','merge','a.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','c.phone','Contact.phone','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','groupBy','SmsInteractionId','all','rows','show','includeAll','include','options','create','params','destroy','describe','addMessage','SmsMessage','omit','ids','findOne','hasOwnProperty','format','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','findAll','emit','removeTags','download','unix','join','root','server','files','transcript-%d-%s.zip','CmContact','lastName','Messages','direction','secret','Owner','get','Account','N.A.','closed','disposition','out','System','firstName','renderFile','views','downloadInteraction.ejs','Sms','createPdfFromHTML','log','err','unlinkSync','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./smsInteraction.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','name','send','Users','map','fullname','TagIds','Tags','split','forEach','push','catch','index','SmsInteraction','rawAttributes','fieldName','type','key','query','intersection','attributes','model','fields','length','nolimit','order','sort','where'];(function(_0x447393,_0xbae442){var _0x495ee0=function(_0x55375e){while(--_0x55375e){_0x447393['push'](_0x447393['shift']());}};_0x495ee0(++_0xbae442);}(_0x22fb,0x18f));var _0xb22f=function(_0xffa62a,_0x677ff2){_0xffa62a=_0xffa62a-0x0;var _0x18c706=_0x22fb[_0xffa62a];return _0x18c706;};'use strict';var emlformat=require(_0xb22f('0x0'));var rimraf=require(_0xb22f('0x1'));var zipdir=require(_0xb22f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb22f('0x3'));var moment=require(_0xb22f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb22f('0x5'));var util=require(_0xb22f('0x6'));var path=require(_0xb22f('0x7'));var sox=require(_0xb22f('0x8'));var csv=require(_0xb22f('0x9'));var ejs=require(_0xb22f('0xa'));var fs=require('fs');var fs_extra=require(_0xb22f('0xb'));var _=require('lodash');var squel=require(_0xb22f('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xb22f('0xd'));var toCsv=require(_0xb22f('0x9'));var querystring=require('querystring');var Papa=require(_0xb22f('0xe'));var Redis=require(_0xb22f('0xf'));var authService=require(_0xb22f('0x10'));var qs=require(_0xb22f('0x11'));var as=require(_0xb22f('0x12'));var pdf=require(_0xb22f('0x13'));var hardwareService=require(_0xb22f('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xb22f('0x15'));var licenseUtil=require(_0xb22f('0x16'));var db=require(_0xb22f('0x17'))['db'];config[_0xb22f('0x18')]=_['defaults'](config['redis'],{'host':_0xb22f('0x19'),'port':0x18eb});var socket=require(_0xb22f('0x1a'))(new Redis(config[_0xb22f('0x18')]));require(_0xb22f('0x1b'))[_0xb22f('0x1c')](socket);function respondWithStatusCode(_0x4795dc,_0x3e3642){_0x3e3642=_0x3e3642||0xcc;return function(_0x4da342){if(_0x4da342){return _0x4795dc[_0xb22f('0x1d')](_0x3e3642);}return _0x4795dc[_0xb22f('0x1e')](_0x3e3642)[_0xb22f('0x1f')]();};}function respondWithResult(_0x1a64e1,_0x41f259){_0x41f259=_0x41f259||0xc8;return function(_0x432b51){if(_0x432b51){return _0x1a64e1[_0xb22f('0x1e')](_0x41f259)['json'](_0x432b51);}};}function respondWithFilteredResult(_0x14ecc1,_0x4e23fb){return function(_0x9b9ad8){if(_0x9b9ad8){var _0x2472a8=typeof _0x4e23fb[_0xb22f('0x20')]===_0xb22f('0x21')&&typeof _0x4e23fb[_0xb22f('0x22')]===_0xb22f('0x21');var _0x499413=_0x9b9ad8['count'];var _0xf23afe=_0x2472a8?0x0:_0x4e23fb[_0xb22f('0x20')];var _0xf126f2=_0x2472a8?_0x9b9ad8[_0xb22f('0x23')]:_0x4e23fb[_0xb22f('0x20')]+_0x4e23fb[_0xb22f('0x22')];var _0x161ae2;if(_0xf126f2>=_0x499413){_0xf126f2=_0x499413;_0x161ae2=0xc8;}else{_0x161ae2=0xce;}_0x14ecc1[_0xb22f('0x1e')](_0x161ae2);return _0x14ecc1[_0xb22f('0x24')](_0xb22f('0x25'),_0xf23afe+'-'+_0xf126f2+'/'+_0x499413)[_0xb22f('0x26')](_0x9b9ad8);}return null;};}function patchUpdates(_0x20d938){return function(_0x345e22){try{jsonpatch[_0xb22f('0x27')](_0x345e22,_0x20d938,!![]);}catch(_0x190a0a){return BPromise[_0xb22f('0x28')](_0x190a0a);}return _0x345e22[_0xb22f('0x29')]();};}function saveUpdates(_0x343e7e,_0x238fd0){return function(_0x2efda9){if(_0x2efda9){return _0x2efda9[_0xb22f('0x2a')](_0x343e7e)[_0xb22f('0x2b')](function(_0x22befe){return _0x22befe;});}return null;};}function removeEntity(_0x2084e3,_0x437ea5){return function(_0x47d3f1){if(_0x47d3f1){return _0x47d3f1['destroy']()['then'](function(){_0x2084e3['status'](0xcc)[_0xb22f('0x1f')]();});}};}function handleEntityNotFound(_0x50fd7f,_0x20f3ad){return function(_0x381f0a){if(!_0x381f0a){_0x50fd7f[_0xb22f('0x1d')](0x194);}return _0x381f0a;};}function handleError(_0x15bffe,_0x143f56){_0x143f56=_0x143f56||0x1f4;return function(_0x5a5951){logger['error'](_0x5a5951['stack']);if(_0x5a5951[_0xb22f('0x2c')]){delete _0x5a5951[_0xb22f('0x2c')];}_0x15bffe[_0xb22f('0x1e')](_0x143f56)[_0xb22f('0x2d')](_0x5a5951);};}function getInteractionUsers(_0x2e7956,_0x37cde7){return new BPromise(function(_0x220421,_0x3de171){try{if(_0x37cde7[_0x2e7956['id']]){_0x2e7956[_0xb22f('0x2e')]=_[_0xb22f('0x2f')](_0x37cde7[_0x2e7956['id']],function(_0x77bdd5){return{'id':_0x77bdd5['id'],'fullname':_0x77bdd5[_0xb22f('0x30')]};});}}catch(_0x1d80dd){_0x3de171(_0x1d80dd);}_0x220421(_0x2e7956);});}function getInteractionTags(_0x13bc6d,_0x1e15a8){return new BPromise(function(_0xf0aee1,_0x2a393b){try{if(_0x13bc6d[_0xb22f('0x31')]){_0x13bc6d[_0xb22f('0x32')]=[];_0x13bc6d[_0xb22f('0x31')][_0xb22f('0x33')](',')[_0xb22f('0x34')](function(_0x52484e){_0x13bc6d[_0xb22f('0x32')][_0xb22f('0x35')](_0x1e15a8[_0x52484e]);});}delete _0x13bc6d[_0xb22f('0x31')];}catch(_0x1c8694){_0x2a393b(_0x1c8694);}_0xf0aee1(_0x13bc6d);});}function updateSmsInteraction(_0x3d5538,_0x48c82b,_0xb2fa9a){return new BPromise(function(_0x201244,_0x3c12d6){return getInteractionUsers(_0x3d5538,_0xb2fa9a)[_0xb22f('0x2b')](function(_0x2a1657){return getInteractionTags(_0x2a1657,_0x48c82b);})[_0xb22f('0x2b')](function(_0x325ace){_0x201244(_0x325ace);})[_0xb22f('0x36')](function(_0x451e81){_0x3c12d6(_0x451e81);});});}exports[_0xb22f('0x37')]=function(_0x40919a,_0x470aae){var _0x28c514={},_0x2f8468={},_0x4b506a={'count':0x0,'rows':[]};var _0x493178=_[_0xb22f('0x2f')](db[_0xb22f('0x38')][_0xb22f('0x39')],function(_0x2c5b74){return{'name':_0x2c5b74[_0xb22f('0x3a')],'type':_0x2c5b74[_0xb22f('0x3b')][_0xb22f('0x3c')]};});_0x2f8468['model']=_['map'](_0x493178,_0xb22f('0x2c'));_0x2f8468[_0xb22f('0x3d')]=_['keys'](_0x40919a[_0xb22f('0x3d')]);_0x2f8468['filters']=_[_0xb22f('0x3e')](_0x2f8468['model'],_0x2f8468[_0xb22f('0x3d')]);_0x28c514[_0xb22f('0x3f')]=_[_0xb22f('0x3e')](_0x2f8468[_0xb22f('0x40')],qs[_0xb22f('0x41')](_0x40919a[_0xb22f('0x3d')][_0xb22f('0x41')]));_0x28c514[_0xb22f('0x3f')]=_0x28c514['attributes'][_0xb22f('0x42')]?_0x28c514[_0xb22f('0x3f')]:_0x2f8468[_0xb22f('0x40')];if(!_0x40919a[_0xb22f('0x3d')]['hasOwnProperty'](_0xb22f('0x43'))){_0x28c514['limit']=qs[_0xb22f('0x22')](_0x40919a[_0xb22f('0x3d')]['limit']);_0x28c514[_0xb22f('0x20')]=qs[_0xb22f('0x20')](_0x40919a[_0xb22f('0x3d')]['offset']);}_0x28c514[_0xb22f('0x44')]=qs[_0xb22f('0x45')](_0x40919a['query'][_0xb22f('0x45')]);_0x28c514[_0xb22f('0x46')]=qs[_0xb22f('0x47')](_[_0xb22f('0x48')](_0x40919a[_0xb22f('0x3d')],_0x2f8468[_0xb22f('0x47')]),_0x493178);var _0x1ecba1=[];var _0x228054=squel[_0xb22f('0x49')]()[_0xb22f('0x4a')]('id')['field'](_0xb22f('0x2c'))[_0xb22f('0x4a')](_0xb22f('0x4b'))['from'](_0xb22f('0x4c'));var _0x365667=squel[_0xb22f('0x49')]()[_0xb22f('0x4a')](_0xb22f('0x4d'))['field'](_0xb22f('0x4e'))[_0xb22f('0x4a')](_0xb22f('0x4f'))[_0xb22f('0x50')]('user_has_sms_interactions','ui')[_0xb22f('0x51')](_0xb22f('0x52'),'u',_0xb22f('0x53'));var _0x2afbd2=squel[_0xb22f('0x49')]()[_0xb22f('0x50')]('sms_interactions','i')[_0xb22f('0x51')]('cm_contacts','c',_0xb22f('0x54'))['left_join']('users','o',_0xb22f('0x55'))[_0xb22f('0x51')](_0xb22f('0x56'),'a','a.id\x20=\x20i.SmsAccountId')[_0xb22f('0x51')]('sms_messages','me',_0xb22f('0x57'))['left_join'](_0xb22f('0x58'),'it',_0xb22f('0x59'))['left_join'](_0xb22f('0x4c'),'t',_0xb22f('0x5a'));var _0x1a0866=squel['expr']();var _0x409535=[];var _0x3a19e4=squel[_0xb22f('0x5b')]();var _0x3c6e6a;if(_0x40919a['query'][_0xb22f('0x5c')]){_0x3c6e6a=as[_0xb22f('0x5d')](_0x40919a[_0xb22f('0x3d')]['search']);var _0x5ce689=_0x3c6e6a[_0xb22f('0x5e')];for(var _0x4bbeb6=0x0;_0x4bbeb6<_0x3c6e6a[_0xb22f('0x5f')]['length'];_0x4bbeb6++){var _0x13a205=_0x3c6e6a[_0xb22f('0x5f')][_0x4bbeb6];var _0x19b4c2='i';var _0x403c8a=_['find'](_0x493178,[_0xb22f('0x2c'),_0x13a205['field']]);if(!_0x403c8a){switch(_0x13a205[_0xb22f('0x4a')]){case _0xb22f('0x60'):if(_0x13a205['value']==0x1){_0x2afbd2[_0xb22f('0x61')]('`'+_0x13a205[_0xb22f('0x4a')]+_0xb22f('0x62'));}else{_0x2afbd2[_0xb22f('0x61')]('`'+_0x13a205[_0xb22f('0x4a')]+_0xb22f('0x63'));}break;case _0xb22f('0x64'):if(_0x13a205[_0xb22f('0x65')]===_0xb22f('0x66')){if(_0x13a205[_0xb22f('0x67')]['split']('\x20')[_0xb22f('0x42')]>0x1){_0x1a0866[_0x5ce689](_0xb22f('0x68'),qs['getFullTextValue'](_0x13a205[_0xb22f('0x67')]),null);}else{var _0x198592='%'+_0x13a205['value']+'%';_0x1a0866[_0x5ce689](_0xb22f('0x69'),_0x198592,_0x198592,_0x198592);}}else{_0x403c8a=_[_0xb22f('0x6a')](_0x493178,[_0xb22f('0x2c'),_0xb22f('0x6b')]);_0x13a205['field']='ContactId';_0x94f047=as['buildExpression'](_0x19b4c2,_0x403c8a[_0xb22f('0x3b')],_0x13a205);_0x1a0866[_0x5ce689](_0x94f047['text'],_0x94f047[_0xb22f('0x67')][_0xb22f('0x6c')],_0x94f047[_0xb22f('0x67')][_0xb22f('0x1f')]);}break;case _0xb22f('0x6d'):var _0x38bfbc=_0x13a205[_0xb22f('0x67')]['split'](',')[_0xb22f('0x2f')](function(_0x5c7fbc){return Number(_0x5c7fbc);});_0x38bfbc[_0xb22f('0x34')](function(_0x568277){_0x3a19e4['or'](_0xb22f('0x6e'),'%,'+_0x568277+',%');});_0x409535=_[_0xb22f('0x6f')](_0x409535,_0x38bfbc);break;case _0xb22f('0x70'):if(_0x13a205[_0xb22f('0x65')]==='$substring'){_0x1a0866[_0x5ce689](_0xb22f('0x71'),'%'+_0x13a205[_0xb22f('0x67')]+'%',null);}else{_0x403c8a=_[_0xb22f('0x6a')](_0x493178,['name',_0xb22f('0x72')]);_0x13a205[_0xb22f('0x4a')]=_0xb22f('0x72');_0x94f047=as[_0xb22f('0x73')](_0x19b4c2,_0x403c8a[_0xb22f('0x3b')],_0x13a205);_0x1a0866[_0x5ce689](_0x94f047['text'],_0x94f047['value'][_0xb22f('0x6c')],_0x94f047[_0xb22f('0x67')][_0xb22f('0x1f')]);}break;case _0xb22f('0x74'):_0x94f047=as[_0xb22f('0x73')]('me',null,_0x13a205);_0x1a0866[_0x5ce689](_0x94f047['text'],_0x94f047[_0xb22f('0x67')][_0xb22f('0x6c')],_0x94f047[_0xb22f('0x67')]['end']);break;}}else{var _0x94f047=as['buildExpression'](_0x19b4c2,_0x403c8a['type'],_0x13a205);_0x1a0866[_0x5ce689](_0x94f047[_0xb22f('0x75')],_0x94f047['value'][_0xb22f('0x6c')],_0x94f047[_0xb22f('0x67')][_0xb22f('0x1f')]);}}}else{var _0x22da66=_(_0x40919a[_0xb22f('0x3d')])[_0xb22f('0x76')]()[_0xb22f('0x2f')](function(_0x4abc08){return _[_0xb22f('0x77')](_0x493178,[_0xb22f('0x2c'),_0x4abc08])?_0x4abc08:undefined;})[_0xb22f('0x78')]()['value']();if(!_[_0xb22f('0x79')](_0x22da66)){_0x22da66['forEach'](function(_0x3fa4aa){if(_0x3fa4aa===_0xb22f('0x7a')){_0x2afbd2['where'](_0xb22f('0x7b'),[][_0xb22f('0x7c')](_0x40919a['query'][_0x3fa4aa]));}else if(_0x3fa4aa===_0xb22f('0x7d')){var _0xb5a48e=JSON[_0xb22f('0x7e')](_0x40919a[_0xb22f('0x3d')][_0x3fa4aa])[_0xb22f('0x7f')];var _0x50d46b=JSON[_0xb22f('0x7e')](_0x40919a[_0xb22f('0x3d')][_0x3fa4aa])[_0xb22f('0x80')];_0x2afbd2[_0xb22f('0x46')](_0xb22f('0x81'),_0xb5a48e,_0x50d46b);}else{if(_0x40919a[_0xb22f('0x3d')][_0x3fa4aa]===_0xb22f('0x82')){_0x2afbd2['where']('i.'+_0x3fa4aa+_0xb22f('0x83'));}else{_0x2afbd2[_0xb22f('0x46')]('i.'+_0x3fa4aa+_0xb22f('0x84'),_0x40919a[_0xb22f('0x3d')][_0x3fa4aa]);}}});}if(_0x40919a[_0xb22f('0x3d')]['read']){if(_0x40919a[_0xb22f('0x3d')][_0xb22f('0x85')]==0x1){_0x2afbd2[_0xb22f('0x61')]('`unreadMessages`\x20=\x200');}else{_0x2afbd2['having'](_0xb22f('0x86'));}}if(_0x40919a['query'][_0xb22f('0x87')]){_0x409535=_['isArray'](_0x40919a[_0xb22f('0x3d')][_0xb22f('0x87')])?_0x40919a[_0xb22f('0x3d')][_0xb22f('0x87')]:new Array(_0x40919a[_0xb22f('0x3d')]['tag']);_0x409535[_0xb22f('0x34')](function(_0x24842d){_0x3a19e4['or'](_0xb22f('0x6e'),'%,'+_0x24842d+',%');});}if(_0x40919a[_0xb22f('0x3d')]['filter']){var _0x4d7edc=_0x40919a['query'][_0xb22f('0x88')][_0xb22f('0x89')]('\x5c','\x5c\x5c')[_0xb22f('0x89')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x4d7edc)){_0x1a0866['or']('i.id\x20LIKE\x20?',_0x4d7edc+'%')['or'](_0xb22f('0x8a'),_0x4d7edc+'%');}else{_0x1a0866['or'](_0xb22f('0x8b'),qs[_0xb22f('0x8c')](_0x4d7edc))['or'](_0xb22f('0x8d'),_0x4d7edc+'%');}}}_0x2afbd2[_0xb22f('0x46')](_0x1a0866);_0x2afbd2[_0xb22f('0x8e')]('i.id');var _0x2d0b9e={'type':db[_0xb22f('0x8f')][_0xb22f('0x90')][_0xb22f('0x91')],'raw':!![]};var _0x5824ca=_0x2afbd2[_0xb22f('0x92')]();_0x5824ca[_0xb22f('0x4a')](_0xb22f('0x93'));_0x5824ca[_0xb22f('0x4a')](_0xb22f('0x94'),_0xb22f('0x60'));if(_0x28c514['order']){_0x28c514['order']['forEach'](function(_0x5c79ba){var _0xc69898=_0x5c79ba[0x0]===_0xb22f('0x95')?_0x5c79ba[0x0]:'i.'+_0x5c79ba[0x0];_0x2afbd2['order'](_0xc69898,_0x5c79ba[0x1]===_0xb22f('0x96')?![]:!![]);});}if(!_['isEmpty'](_0x409535)){_0x2afbd2['having'](_0x3a19e4);_0x5824ca['where'](_0xb22f('0x97'),_0x409535);}BPromise[_0xb22f('0x98')]()['then'](function(){if(!_0x3c6e6a){if(_0x40919a[_0xb22f('0x3d')][_0xb22f('0x7a')])return;_0x5824ca[_0xb22f('0x46')]('i.SmsAccountId\x20IS\x20NOT\x20NULL');_0x2afbd2[_0xb22f('0x46')](_0xb22f('0x99'));return;}if(_0x40919a['user'][_0xb22f('0x9a')]!==_0xb22f('0x9b'))return;return _0x40919a['user'][_0xb22f('0x9c')]({'attributes':['id'],'raw':!![]})[_0xb22f('0x2b')](function(_0x4203f9){if(_[_0xb22f('0x79')](_0x4203f9)){_0x5824ca[_0xb22f('0x46')](_0xb22f('0x9d'));_0x2afbd2[_0xb22f('0x46')](_0xb22f('0x9d'));}else{_0x5824ca[_0xb22f('0x46')](_0xb22f('0x7b'),_[_0xb22f('0x2f')](_0x4203f9,'id'));_0x2afbd2[_0xb22f('0x46')](_0xb22f('0x7b'),_[_0xb22f('0x2f')](_0x4203f9,'id'));}});})[_0xb22f('0x2b')](function(){if(_0x40919a[_0xb22f('0x9e')][_0xb22f('0x9a')]==='agent'&&!_0x3c6e6a&&!_0x40919a[_0xb22f('0x3d')][_0xb22f('0x7a')])return[];return db[_0xb22f('0x9f')][_0xb22f('0x3d')](_0x5824ca['toString'](),_0x2d0b9e);})[_0xb22f('0x2b')](function(_0x51e4c5){_0x4b506a[_0xb22f('0x23')]=_0x51e4c5[_0xb22f('0x42')];if(_0x4b506a[_0xb22f('0x23')]===0x0)return[];return db[_0xb22f('0x9f')][_0xb22f('0x3d')](_0x228054[_0xb22f('0xa0')](),_0x2d0b9e)[_0xb22f('0x2b')](function(_0x18bfc0){_0x1ecba1=_[_0xb22f('0xa1')](_0x18bfc0,'id');_0x2d0b9e=_[_0xb22f('0xa2')](_0x2d0b9e,{'model':db[_0xb22f('0x38')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x40919a[_0xb22f('0x3d')][_0xb22f('0x41')]){_0x28c514['attributes'][_0xb22f('0x34')](function(_0x5749ec){_0x2afbd2[_0xb22f('0x4a')]('i.'+_0x5749ec);});}else{_0x2afbd2[_0xb22f('0x4a')](_0xb22f('0x94'),_0xb22f('0x60'));_0x2afbd2[_0xb22f('0x4a')](_0xb22f('0xa3'),'Account.key');_0x2afbd2[_0xb22f('0x4a')](_0xb22f('0xa4'),_0xb22f('0xa5'));_0x2afbd2[_0xb22f('0x4a')](_0xb22f('0xa6'),'contactName');_0x2afbd2[_0xb22f('0x4a')]('i.*');_0x2afbd2['field'](_0xb22f('0xa7'),_0xb22f('0xa8'));_0x2afbd2[_0xb22f('0x4a')](_0xb22f('0xa9'),_0xb22f('0xaa'));_0x2afbd2['field'](_0xb22f('0xab'),'Contact.email');_0x2afbd2[_0xb22f('0x4a')](_0xb22f('0xac'),_0xb22f('0xad'));_0x2afbd2[_0xb22f('0x4a')]('c.mobile',_0xb22f('0xae'));_0x2afbd2[_0xb22f('0x4a')]('c.fax',_0xb22f('0xaf'));_0x2afbd2[_0xb22f('0x4a')](_0xb22f('0xb0'),_0xb22f('0xb1'));_0x2afbd2[_0xb22f('0x4a')](_0xb22f('0xb2'),'Owner.internal');_0x2afbd2['field'](_0xb22f('0xb3'),_0xb22f('0x31'));}if(_0x28c514['limit'])_0x2afbd2['limit'](_0x28c514['limit']);if(_0x28c514[_0xb22f('0x20')])_0x2afbd2[_0xb22f('0x20')](_0x28c514[_0xb22f('0x20')]);return db['sequelize']['query'](_0x2afbd2[_0xb22f('0xa0')](),_0x2d0b9e);})[_0xb22f('0x2b')](function(_0x15306a){if(_0x15306a['length']>0x0)_0x365667['where'](_0xb22f('0xb4'),_[_0xb22f('0x2f')](_0x15306a,'id'));return db['sequelize']['query'](_0x365667[_0xb22f('0xa0')](),_0x2d0b9e)[_0xb22f('0x2b')](function(_0x1c3d47){var _0x17980e=_[_0xb22f('0xb5')](_0x1c3d47,_0xb22f('0xb6'));var _0x12ed5b=[];_0x15306a[_0xb22f('0x34')](function(_0x1b54f9){_0x12ed5b[_0xb22f('0x35')](updateSmsInteraction(_0x1b54f9,_0x1ecba1,_0x17980e));});return BPromise[_0xb22f('0xb7')](_0x12ed5b);});});})[_0xb22f('0x2b')](function(_0x20b9be){_0x4b506a[_0xb22f('0xb8')]=_0x20b9be;return _0x4b506a;})[_0xb22f('0x2b')](respondWithFilteredResult(_0x470aae,_0x28c514))[_0xb22f('0x36')](handleError(_0x470aae,null));};exports[_0xb22f('0xb9')]=function(_0x7dc431,_0x28f27f){var _0x174b65={'raw':![],'where':{'id':_0x7dc431['params']['id']}},_0xebafba={};_0xebafba[_0xb22f('0x40')]=_[_0xb22f('0x76')](db[_0xb22f('0x38')][_0xb22f('0x39')]);_0xebafba[_0xb22f('0x3d')]=_['keys'](_0x7dc431[_0xb22f('0x3d')]);_0xebafba[_0xb22f('0x47')]=_[_0xb22f('0x3e')](_0xebafba[_0xb22f('0x40')],_0xebafba['query']);_0x174b65[_0xb22f('0x3f')]=_[_0xb22f('0x3e')](_0xebafba[_0xb22f('0x40')],qs[_0xb22f('0x41')](_0x7dc431[_0xb22f('0x3d')][_0xb22f('0x41')]));_0x174b65['attributes']=_0x174b65['attributes'][_0xb22f('0x42')]?_0x174b65[_0xb22f('0x3f')]:_0xebafba[_0xb22f('0x40')];if(_0x7dc431[_0xb22f('0x3d')][_0xb22f('0xba')]){_0x174b65[_0xb22f('0xbb')]=[{'all':!![]}];}_0x174b65=_[_0xb22f('0xa2')]({},_0x174b65,_0x7dc431[_0xb22f('0xbc')]);return db[_0xb22f('0x38')][_0xb22f('0x6a')](_0x174b65)['then'](handleEntityNotFound(_0x28f27f,null))[_0xb22f('0x2b')](respondWithResult(_0x28f27f,null))[_0xb22f('0x36')](handleError(_0x28f27f,null));};exports[_0xb22f('0xbd')]=function(_0x29b78d,_0x45dc9d){return db['SmsInteraction'][_0xb22f('0xbd')](_0x29b78d[_0xb22f('0x74')],{})[_0xb22f('0x2b')](respondWithResult(_0x45dc9d,0xc9))[_0xb22f('0x36')](handleError(_0x45dc9d,null));};exports[_0xb22f('0x2a')]=function(_0x14962a,_0x2d97a3){if(_0x14962a[_0xb22f('0x74')]['id']){delete _0x14962a[_0xb22f('0x74')]['id'];}return db[_0xb22f('0x38')][_0xb22f('0x6a')]({'where':{'id':_0x14962a[_0xb22f('0xbe')]['id']}})[_0xb22f('0x2b')](handleEntityNotFound(_0x2d97a3,null))[_0xb22f('0x2b')](saveUpdates(_0x14962a['body'],null))[_0xb22f('0x2b')](respondWithResult(_0x2d97a3,null))[_0xb22f('0x36')](handleError(_0x2d97a3,null));};exports[_0xb22f('0xbf')]=function(_0x43d67b,_0x2fa9c6){return db['SmsInteraction'][_0xb22f('0x6a')]({'where':{'id':_0x43d67b['params']['id']}})[_0xb22f('0x2b')](handleEntityNotFound(_0x2fa9c6,null))[_0xb22f('0x2b')](removeEntity(_0x2fa9c6,null))[_0xb22f('0x36')](handleError(_0x2fa9c6,null));};exports[_0xb22f('0xc0')]=function(_0x44a9ef,_0x2a099a){return db[_0xb22f('0x38')]['describe']()[_0xb22f('0x2b')](respondWithResult(_0x2a099a,null))[_0xb22f('0x36')](handleError(_0x2a099a,null));};exports[_0xb22f('0xc1')]=function(_0x2f490c,_0x130c30,_0x464c0a){return db[_0xb22f('0xc2')][_0xb22f('0x6a')]({'where':{'id':_0x2f490c[_0xb22f('0xbe')]['id']}})['then'](handleEntityNotFound(_0x130c30,null))['then'](function(_0x3f05bb){if(_0x3f05bb){return _0x3f05bb[_0xb22f('0xc1')](_0x2f490c[_0xb22f('0x74')]['ids'],_[_0xb22f('0xc3')](_0x2f490c[_0xb22f('0x74')],[_0xb22f('0xc4'),'id'])||{});}})[_0xb22f('0x2b')](respondWithResult(_0x130c30,null))[_0xb22f('0x36')](handleError(_0x130c30,null));};exports['getMessages']=function(_0x91b516,_0x183b77,_0x115404){var _0xf9707a={'raw':![],'where':{}};var _0x93ead5={};var _0x45df98={'count':0x0,'rows':[]};return db[_0xb22f('0x38')][_0xb22f('0xc5')]({'where':{'id':_0x91b516[_0xb22f('0xbe')]['id']}})[_0xb22f('0x2b')](handleEntityNotFound(_0x183b77,null))[_0xb22f('0x2b')](function(_0x40feec){if(_0x40feec){_0x93ead5[_0xb22f('0x40')]=_[_0xb22f('0x76')](db[_0xb22f('0xc2')]['rawAttributes']);_0x93ead5[_0xb22f('0x3d')]=_[_0xb22f('0x76')](_0x91b516[_0xb22f('0x3d')]);_0x93ead5[_0xb22f('0x47')]=_[_0xb22f('0x3e')](_0x93ead5['model'],_0x93ead5[_0xb22f('0x3d')]);_0xf9707a['attributes']=_[_0xb22f('0x3e')](_0x93ead5[_0xb22f('0x40')],qs[_0xb22f('0x41')](_0x91b516[_0xb22f('0x3d')][_0xb22f('0x41')]));_0xf9707a[_0xb22f('0x3f')]=_0xf9707a[_0xb22f('0x3f')]['length']?_0xf9707a[_0xb22f('0x3f')]:_0x93ead5[_0xb22f('0x40')];if(!_0x91b516[_0xb22f('0x3d')][_0xb22f('0xc6')](_0xb22f('0x43'))){_0xf9707a[_0xb22f('0x22')]=qs[_0xb22f('0x22')](_0x91b516['query'][_0xb22f('0x22')]);_0xf9707a[_0xb22f('0x20')]=qs['offset'](_0x91b516[_0xb22f('0x3d')][_0xb22f('0x20')]);}_0xf9707a['order']=qs[_0xb22f('0x45')](_0x91b516['query'][_0xb22f('0x45')]);_0xf9707a[_0xb22f('0x46')]=qs[_0xb22f('0x47')](_[_0xb22f('0x48')](_0x91b516[_0xb22f('0x3d')],_0x93ead5[_0xb22f('0x47')]));_0xf9707a[_0xb22f('0x46')]['SmsInteractionId']=_0x40feec['id'];if(_0x91b516[_0xb22f('0x3d')][_0xb22f('0x88')]){_0xf9707a['where']=_['merge'](_0xf9707a['where'],{'$or':_[_0xb22f('0x2f')](_0xf9707a[_0xb22f('0x3f')],function(_0x2de350){var _0x2470d1={};_0x2470d1[_0x2de350]={'$like':'%'+_0x91b516[_0xb22f('0x3d')][_0xb22f('0x88')]+'%'};return _0x2470d1;})});}if(_0x91b516['query'][_0xb22f('0x7f')]){var _0x1ad440=_0x91b516['query']['$gte'][_0xb22f('0x33')](',');var _0x5c4b23={};_0x5c4b23[_0x1ad440[0x0]]={'$gte':moment(_0x1ad440[0x1])[_0xb22f('0xc7')](_0xb22f('0xc8'))};_0xf9707a[_0xb22f('0x46')]=_[_0xb22f('0xa2')](_0xf9707a[_0xb22f('0x46')],_0x5c4b23);}_0xf9707a=_['merge']({},_0xf9707a,_0x91b516[_0xb22f('0xbc')]);return db[_0xb22f('0xc2')][_0xb22f('0x23')]({'where':_0xf9707a[_0xb22f('0x46')]})[_0xb22f('0x2b')](function(_0x4e6b43){_0x45df98['count']=_0x4e6b43;if(_0x91b516['query'][_0xb22f('0xba')]){_0xf9707a[_0xb22f('0xbb')]=[{'all':!![]}];}return db[_0xb22f('0xc2')]['findAll'](_0xf9707a);})[_0xb22f('0x2b')](function(_0x1a817a){_0x45df98['rows']=_0x1a817a;return _0x45df98;});}})[_0xb22f('0x2b')](respondWithFilteredResult(_0x183b77,_0xf9707a))[_0xb22f('0x36')](handleError(_0x183b77,null));};exports[_0xb22f('0xc9')]=function(_0x1f3f44,_0xf34eb4,_0x23c362){return db['SmsInteraction'][_0xb22f('0x6a')]({'where':{'id':_0x1f3f44[_0xb22f('0xbe')]['id']}})['then'](handleEntityNotFound(_0xf34eb4,null))[_0xb22f('0x2b')](function(_0xc4995){if(_0xc4995){return _0xc4995[_0xb22f('0xca')](_0x1f3f44['body'][_0xb22f('0xc4')],_[_0xb22f('0xc3')](_0x1f3f44[_0xb22f('0x74')],[_0xb22f('0xc4'),'id'])||{})['spread'](function(){return db['Tag'][_0xb22f('0xcb')]({'attributes':['id','name',_0xb22f('0x4b')],'where':{'id':_0x1f3f44[_0xb22f('0x74')]['ids']}});})['then'](function(_0x324ca6){socket[_0xb22f('0xcc')]('smsInteractionTags:save',{'id':Number(_0x1f3f44[_0xb22f('0xbe')]['id']),'tags':_0x324ca6||[]});return{'id':Number(_0x1f3f44['params']['id']),'tags':_0x324ca6||[]};});}})[_0xb22f('0x2b')](respondWithResult(_0xf34eb4,null))[_0xb22f('0x36')](handleError(_0xf34eb4,null));};exports['removeTags']=function(_0x2966e3,_0x22c59c,_0x17b204){return db[_0xb22f('0x38')][_0xb22f('0x6a')]({'where':{'id':_0x2966e3['params']['id']}})[_0xb22f('0x2b')](handleEntityNotFound(_0x22c59c,null))[_0xb22f('0x2b')](function(_0x369f99){if(_0x369f99){return _0x369f99[_0xb22f('0xcd')](_0x2966e3[_0xb22f('0x3d')][_0xb22f('0xc4')]);}})[_0xb22f('0x2b')](respondWithStatusCode(_0x22c59c,null))[_0xb22f('0x36')](handleError(_0x22c59c,null));};exports[_0xb22f('0xce')]=function(_0x10067b,_0x370fee){var _0x440671=moment()[_0xb22f('0xcf')]()[_0xb22f('0xa0')]();var _0x510b11=path[_0xb22f('0xd0')](config[_0xb22f('0xd1')],_0xb22f('0xd2'),_0xb22f('0xd3'),'tmp');var _0x523cd8=path[_0xb22f('0xd0')](config[_0xb22f('0xd1')],_0xb22f('0xd2'),_0xb22f('0xd3'),'attachments');var _0x41195e=path[_0xb22f('0xd0')](_0x510b11,_0x440671);var _0x572a85=util['format'](_0xb22f('0xd4'),_0x10067b[_0xb22f('0xbe')]['id'],_0x440671);var _0x1bf5c2=path['join'](_0x510b11,_0x572a85);var _0x5467b0=[];_0x5467b0[_0xb22f('0x35')]({'model':db[_0xb22f('0x70')],'as':_0xb22f('0x70'),'attributes':['id',_0xb22f('0x30')],'raw':!![]});_0x5467b0['push']({'model':db[_0xb22f('0xd5')],'as':_0xb22f('0x64'),'attributes':['id','firstName',_0xb22f('0xd6')],'raw':!![]});var _0x5999c5=[{'model':db[_0xb22f('0xc2')],'as':_0xb22f('0xd7'),'attributes':['id',_0xb22f('0x74'),_0xb22f('0x7d'),_0xb22f('0xd8'),_0xb22f('0xd9'),'read'],'include':_0x5467b0}];_0x5999c5[_0xb22f('0x35')]({'model':db['SmsAccount'],'as':'Account','attributes':['id','name']});_0x5999c5[_0xb22f('0x35')]({'model':db[_0xb22f('0x70')],'as':_0xb22f('0xda'),'attributes':['id',_0xb22f('0x30')]});return db[_0xb22f('0x38')]['find']({'where':{'id':_0x10067b[_0xb22f('0xbe')]['id']},'include':_0x5999c5})['then'](handleEntityNotFound(_0x370fee,null))[_0xb22f('0x2b')](function(_0x392a02){if(_0x392a02){var _0x1add4c=_0x392a02[_0xb22f('0xdb')]({'plain':!![]});fs['mkdirSync'](_0x41195e);var _0x262d64={'channel':'Sms','account':_0x1add4c[_0xb22f('0xdc')][_0xb22f('0x2c')],'agent':_0x1add4c[_0xb22f('0xda')]?_0x1add4c['Owner']['fullname']:_0xb22f('0xdd'),'createdAt':moment(_0x1add4c[_0xb22f('0x7d')])[_0xb22f('0xc7')](_0xb22f('0xc8'))[_0xb22f('0xa0')](),'closedAt':_0x1add4c[_0xb22f('0xde')]?moment(_0x1add4c['closedAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x1add4c[_0xb22f('0xdf')],'messages':_(_0x1add4c[_0xb22f('0xd7')])[_0xb22f('0x88')]({'secret':![]})['map'](function(_0xdf0344){return{'date':moment(_0xdf0344[_0xb22f('0x7d')])[_0xb22f('0xc7')](_0xb22f('0xc8'))[_0xb22f('0xa0')](),'sender':_0xdf0344['direction']===_0xb22f('0xe0')?_0xdf0344[_0xb22f('0x70')]?_0xdf0344['User'][_0xb22f('0x30')]:_0xb22f('0xe1'):_0xdf0344[_0xb22f('0x64')][_0xb22f('0xe2')]+(_0xdf0344[_0xb22f('0x64')][_0xb22f('0xd6')]?'\x20'+_0xdf0344[_0xb22f('0x64')][_0xb22f('0xd6')]:''),'body':_0xdf0344[_0xb22f('0x74')],'direction':_0xdf0344['direction']===_0xb22f('0xe0')?'A':'C','secret':_0xdf0344['secret'],'read':_0xdf0344[_0xb22f('0x85')]};})[_0xb22f('0x67')]()};return ejs[_0xb22f('0xe3')](path[_0xb22f('0xd0')](config[_0xb22f('0xd1')],_0xb22f('0xd2'),_0xb22f('0xe4'),_0xb22f('0xe5')),{'interaction':_0x262d64})['then'](function(_0x1e0326){var _0x45ec79=path[_0xb22f('0xd0')](_0x41195e,'transcript-'+_0x1add4c['id']+'-'+_0x440671+'.pdf');var _0x2b697a={'path':_0x45ec79,'channel':_0xb22f('0xe6'),'interactionId':_0x1add4c['id']};return pdf[_0xb22f('0xe7')](_0x1e0326,_0x2b697a);})[_0xb22f('0x2b')](function(){return new BPromise(function(_0x275752,_0x3a7401){zipdir(_0x41195e,{'saveTo':_0x1bf5c2},function(_0x1077a3,_0x5b8fc2){if(_0x1077a3)return _0x3a7401(_0x1077a3);return _0x275752(_0x5b8fc2);});})[_0xb22f('0x2b')](function(){return new BPromise(function(_0x168faa,_0x34f3eb){rimraf(_0x41195e,function(_0x7830c5){if(_0x7830c5)_0x34f3eb(_0x7830c5);return _0x168faa();});});})[_0xb22f('0x2b')](function(){return _0x370fee[_0xb22f('0xce')](_0x1bf5c2,_0x572a85,function(_0x4d490b){if(_0x4d490b){console[_0xb22f('0xe8')](_0xb22f('0xe9'),_0x4d490b);}else{fs[_0xb22f('0xea')](_0x1bf5c2);}});});});}else{return _0x370fee[_0xb22f('0x1d')](0xc8);}})['catch'](handleError(_0x370fee,null));};
\ No newline at end of file
+var _0xe672=['fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','sendStatus','error','stack','name','send','Users','map','fullname','TagIds','Tags','split','push','index','SmsInteraction','rawAttributes','fieldName','type','key','query','keys','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','pick','select','field','color','tools_tags','u.id','u.fullname','ui.SmsInteractionId','from','user_has_sms_interactions','users','u.id\x20=\x20ui.UserId','sms_interactions','left_join','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','sms_accounts','a.id\x20=\x20i.SmsAccountId','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','conditions','find','unreadMessages','value','having','`\x20>\x200','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','Tag','union','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','body','some','compact','isEmpty','forEach','SmsAccountId','concat','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','group','i.id','QueryTypes','SELECT','clone','order','contactName','DESC','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','i.SmsAccountId\x20IN\x20?','toString','sequelize','keyBy','merge','a.key','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','groupBy','SmsInteractionId','all','rows','catch','show','filters','includeAll','include','options','create','params','describe','addMessage','SmsMessage','ids','omit','getMessages','findOne','findAll','addTags','emit','smsInteractionTags:save','removeTags','download','join','root','server','files','tmp','attachments','format','User','CmContact','Contact','firstName','lastName','createdAt','secret','SmsAccount','Account','Owner','get','mkdirSync','Sms','N.A.','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','disposition','Messages','direction','out','System','renderFile','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','log','unlinkSync','eml-format','zip-dir'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0xe672,0x1e4));var _0x2e67=function(_0x36cead,_0x26324c){_0x36cead=_0x36cead-0x0;var _0xa42c6=_0xe672[_0x36cead];return _0xa42c6;};'use strict';var emlformat=require(_0x2e67('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2e67('0x1'));var jsonpatch=require(_0x2e67('0x2'));var rp=require(_0x2e67('0x3'));var moment=require(_0x2e67('0x4'));var BPromise=require(_0x2e67('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x2e67('0x6'));var sox=require(_0x2e67('0x7'));var csv=require(_0x2e67('0x8'));var ejs=require(_0x2e67('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x2e67('0xa'));var crypto=require(_0x2e67('0xb'));var jsforce=require(_0x2e67('0xc'));var deskjs=require(_0x2e67('0xd'));var toCsv=require('to-csv');var querystring=require(_0x2e67('0xe'));var Papa=require(_0x2e67('0xf'));var Redis=require(_0x2e67('0x10'));var authService=require(_0x2e67('0x11'));var qs=require(_0x2e67('0x12'));var as=require(_0x2e67('0x13'));var pdf=require(_0x2e67('0x14'));var hardwareService=require(_0x2e67('0x15'));var logger=require(_0x2e67('0x16'))(_0x2e67('0x17'));var utils=require(_0x2e67('0x18'));var config=require(_0x2e67('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x2e67('0x1a')]=_[_0x2e67('0x1b')](config[_0x2e67('0x1a')],{'host':_0x2e67('0x1c'),'port':0x18eb});var socket=require(_0x2e67('0x1d'))(new Redis(config[_0x2e67('0x1a')]));require(_0x2e67('0x1e'))[_0x2e67('0x1f')](socket);function respondWithStatusCode(_0x49bc52,_0x511b61){_0x511b61=_0x511b61||0xcc;return function(_0x31e75e){if(_0x31e75e){return _0x49bc52['sendStatus'](_0x511b61);}return _0x49bc52[_0x2e67('0x20')](_0x511b61)['end']();};}function respondWithResult(_0x56284d,_0x380851){_0x380851=_0x380851||0xc8;return function(_0x32c7fc){if(_0x32c7fc){return _0x56284d[_0x2e67('0x20')](_0x380851)[_0x2e67('0x21')](_0x32c7fc);}};}function respondWithFilteredResult(_0x56c1aa,_0x22f740){return function(_0x54c825){if(_0x54c825){var _0x575ecf=typeof _0x22f740[_0x2e67('0x22')]===_0x2e67('0x23')&&typeof _0x22f740[_0x2e67('0x24')]==='undefined';var _0x4a2235=_0x54c825['count'];var _0x142994=_0x575ecf?0x0:_0x22f740['offset'];var _0x2ddc50=_0x575ecf?_0x54c825[_0x2e67('0x25')]:_0x22f740[_0x2e67('0x22')]+_0x22f740[_0x2e67('0x24')];var _0x3c21a6;if(_0x2ddc50>=_0x4a2235){_0x2ddc50=_0x4a2235;_0x3c21a6=0xc8;}else{_0x3c21a6=0xce;}_0x56c1aa[_0x2e67('0x20')](_0x3c21a6);return _0x56c1aa[_0x2e67('0x26')](_0x2e67('0x27'),_0x142994+'-'+_0x2ddc50+'/'+_0x4a2235)[_0x2e67('0x21')](_0x54c825);}return null;};}function patchUpdates(_0x2475ad){return function(_0x152b8c){try{jsonpatch[_0x2e67('0x28')](_0x152b8c,_0x2475ad,!![]);}catch(_0x2d38da){return BPromise[_0x2e67('0x29')](_0x2d38da);}return _0x152b8c[_0x2e67('0x2a')]();};}function saveUpdates(_0x4a5702,_0x141b32){return function(_0x2aaff8){if(_0x2aaff8){return _0x2aaff8['update'](_0x4a5702)[_0x2e67('0x2b')](function(_0x280134){return _0x280134;});}return null;};}function removeEntity(_0x4df379,_0x3ab670){return function(_0x2e172e){if(_0x2e172e){return _0x2e172e[_0x2e67('0x2c')]()['then'](function(){_0x4df379[_0x2e67('0x20')](0xcc)[_0x2e67('0x2d')]();});}};}function handleEntityNotFound(_0x59db6c,_0x301d66){return function(_0x53c299){if(!_0x53c299){_0x59db6c[_0x2e67('0x2e')](0x194);}return _0x53c299;};}function handleError(_0x24ee63,_0x3c70ab){_0x3c70ab=_0x3c70ab||0x1f4;return function(_0x40a5d0){logger[_0x2e67('0x2f')](_0x40a5d0[_0x2e67('0x30')]);if(_0x40a5d0[_0x2e67('0x31')]){delete _0x40a5d0[_0x2e67('0x31')];}_0x24ee63[_0x2e67('0x20')](_0x3c70ab)[_0x2e67('0x32')](_0x40a5d0);};}function getInteractionUsers(_0x476779,_0x26cdd5){return new BPromise(function(_0x129d5a,_0x3ed52d){try{if(_0x26cdd5[_0x476779['id']]){_0x476779[_0x2e67('0x33')]=_[_0x2e67('0x34')](_0x26cdd5[_0x476779['id']],function(_0x1d6699){return{'id':_0x1d6699['id'],'fullname':_0x1d6699[_0x2e67('0x35')]};});}}catch(_0x4749cc){_0x3ed52d(_0x4749cc);}_0x129d5a(_0x476779);});}function getInteractionTags(_0x73aefe,_0x40cad6){return new BPromise(function(_0x24c4b9,_0x4435fb){try{if(_0x73aefe[_0x2e67('0x36')]){_0x73aefe[_0x2e67('0x37')]=[];_0x73aefe[_0x2e67('0x36')][_0x2e67('0x38')](',')['forEach'](function(_0x152ae7){_0x73aefe[_0x2e67('0x37')][_0x2e67('0x39')](_0x40cad6[_0x152ae7]);});}delete _0x73aefe[_0x2e67('0x36')];}catch(_0x147413){_0x4435fb(_0x147413);}_0x24c4b9(_0x73aefe);});}function updateSmsInteraction(_0x149d9f,_0x12b73b,_0x3dbf15){return new BPromise(function(_0x3c7a21,_0x16634e){return getInteractionUsers(_0x149d9f,_0x3dbf15)['then'](function(_0x33eddf){return getInteractionTags(_0x33eddf,_0x12b73b);})[_0x2e67('0x2b')](function(_0x1b1083){_0x3c7a21(_0x1b1083);})['catch'](function(_0x20093f){_0x16634e(_0x20093f);});});}exports[_0x2e67('0x3a')]=function(_0x5d109a,_0x1e873f){var _0x513991={},_0x5e177d={},_0x491958={'count':0x0,'rows':[]};var _0x2fa004=_[_0x2e67('0x34')](db[_0x2e67('0x3b')][_0x2e67('0x3c')],function(_0x305f4c){return{'name':_0x305f4c[_0x2e67('0x3d')],'type':_0x305f4c[_0x2e67('0x3e')][_0x2e67('0x3f')]};});_0x5e177d['model']=_[_0x2e67('0x34')](_0x2fa004,_0x2e67('0x31'));_0x5e177d[_0x2e67('0x40')]=_[_0x2e67('0x41')](_0x5d109a[_0x2e67('0x40')]);_0x5e177d['filters']=_[_0x2e67('0x42')](_0x5e177d['model'],_0x5e177d[_0x2e67('0x40')]);_0x513991[_0x2e67('0x43')]=_[_0x2e67('0x42')](_0x5e177d[_0x2e67('0x44')],qs[_0x2e67('0x45')](_0x5d109a[_0x2e67('0x40')]['fields']));_0x513991[_0x2e67('0x43')]=_0x513991['attributes'][_0x2e67('0x46')]?_0x513991['attributes']:_0x5e177d[_0x2e67('0x44')];if(!_0x5d109a['query'][_0x2e67('0x47')](_0x2e67('0x48'))){_0x513991[_0x2e67('0x24')]=qs[_0x2e67('0x24')](_0x5d109a['query'][_0x2e67('0x24')]);_0x513991[_0x2e67('0x22')]=qs[_0x2e67('0x22')](_0x5d109a[_0x2e67('0x40')]['offset']);}_0x513991['order']=qs[_0x2e67('0x49')](_0x5d109a[_0x2e67('0x40')]['sort']);_0x513991[_0x2e67('0x4a')]=qs['filters'](_[_0x2e67('0x4b')](_0x5d109a['query'],_0x5e177d['filters']),_0x2fa004);var _0x14604a=[];var _0x115216=squel[_0x2e67('0x4c')]()[_0x2e67('0x4d')]('id')['field']('name')[_0x2e67('0x4d')](_0x2e67('0x4e'))['from'](_0x2e67('0x4f'));var _0x2d2ad6=squel[_0x2e67('0x4c')]()[_0x2e67('0x4d')](_0x2e67('0x50'))[_0x2e67('0x4d')](_0x2e67('0x51'))[_0x2e67('0x4d')](_0x2e67('0x52'))[_0x2e67('0x53')](_0x2e67('0x54'),'ui')['left_join'](_0x2e67('0x55'),'u',_0x2e67('0x56'));var _0x6c08fe=squel['select']()[_0x2e67('0x53')](_0x2e67('0x57'),'i')[_0x2e67('0x58')]('cm_contacts','c',_0x2e67('0x59'))['left_join']('users','o','o.id\x20=\x20i.UserId')[_0x2e67('0x58')](_0x2e67('0x5a'),'a',_0x2e67('0x5b'))[_0x2e67('0x58')]('sms_messages','me',_0x2e67('0x5c'))[_0x2e67('0x58')](_0x2e67('0x5d'),'it',_0x2e67('0x5e'))['left_join'](_0x2e67('0x4f'),'t',_0x2e67('0x5f'));var _0x3fc199=squel[_0x2e67('0x60')]();var _0x34e3f0=[];var _0x154150=squel['expr']();var _0x3d50ed;if(_0x5d109a['query']['search']){_0x3d50ed=as[_0x2e67('0x61')](_0x5d109a[_0x2e67('0x40')][_0x2e67('0x62')]);var _0x50046a=_0x3d50ed[_0x2e67('0x63')];for(var _0x3d58c6=0x0;_0x3d58c6<_0x3d50ed[_0x2e67('0x64')][_0x2e67('0x46')];_0x3d58c6++){var _0x430555=_0x3d50ed[_0x2e67('0x64')][_0x3d58c6];var _0x5b95f6='i';var _0x504db4=_[_0x2e67('0x65')](_0x2fa004,['name',_0x430555[_0x2e67('0x4d')]]);if(!_0x504db4){switch(_0x430555[_0x2e67('0x4d')]){case _0x2e67('0x66'):if(_0x430555[_0x2e67('0x67')]==0x1){_0x6c08fe[_0x2e67('0x68')]('`'+_0x430555[_0x2e67('0x4d')]+'`\x20=\x200');}else{_0x6c08fe[_0x2e67('0x68')]('`'+_0x430555[_0x2e67('0x4d')]+_0x2e67('0x69'));}break;case'Contact':if(_0x430555['operator']==='$substring'){if(_0x430555[_0x2e67('0x67')][_0x2e67('0x38')]('\x20')[_0x2e67('0x46')]>0x1){_0x3fc199[_0x50046a](_0x2e67('0x6a'),qs[_0x2e67('0x6b')](_0x430555[_0x2e67('0x67')]),null);}else{var _0x125ffb='%'+_0x430555[_0x2e67('0x67')]+'%';_0x3fc199[_0x50046a](_0x2e67('0x6c'),_0x125ffb,_0x125ffb,_0x125ffb);}}else{_0x504db4=_[_0x2e67('0x65')](_0x2fa004,[_0x2e67('0x31'),'ContactId']);_0x430555[_0x2e67('0x4d')]=_0x2e67('0x6d');_0x5f1338=as[_0x2e67('0x6e')](_0x5b95f6,_0x504db4['type'],_0x430555);_0x3fc199[_0x50046a](_0x5f1338[_0x2e67('0x6f')],_0x5f1338['value']['start'],_0x5f1338['value'][_0x2e67('0x2d')]);}break;case _0x2e67('0x70'):var _0x52a2ec=_0x430555['value']['split'](',')[_0x2e67('0x34')](function(_0x5c8494){return Number(_0x5c8494);});_0x52a2ec['forEach'](function(_0x8a3206){_0x154150['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x8a3206+',%');});_0x34e3f0=_[_0x2e67('0x71')](_0x34e3f0,_0x52a2ec);break;case'User':if(_0x430555['operator']===_0x2e67('0x72')){_0x3fc199[_0x50046a](_0x2e67('0x73'),'%'+_0x430555['value']+'%',null);}else{_0x504db4=_[_0x2e67('0x65')](_0x2fa004,[_0x2e67('0x31'),_0x2e67('0x74')]);_0x430555[_0x2e67('0x4d')]=_0x2e67('0x74');_0x5f1338=as['buildExpression'](_0x5b95f6,_0x504db4['type'],_0x430555);_0x3fc199[_0x50046a](_0x5f1338[_0x2e67('0x6f')],_0x5f1338[_0x2e67('0x67')][_0x2e67('0x75')],_0x5f1338['value'][_0x2e67('0x2d')]);}break;case _0x2e67('0x76'):_0x5f1338=as['buildExpression']('me',null,_0x430555);_0x3fc199[_0x50046a](_0x5f1338[_0x2e67('0x6f')],_0x5f1338[_0x2e67('0x67')][_0x2e67('0x75')],_0x5f1338['value']['end']);break;}}else{var _0x5f1338=as[_0x2e67('0x6e')](_0x5b95f6,_0x504db4[_0x2e67('0x3e')],_0x430555);_0x3fc199[_0x50046a](_0x5f1338[_0x2e67('0x6f')],_0x5f1338[_0x2e67('0x67')][_0x2e67('0x75')],_0x5f1338[_0x2e67('0x67')][_0x2e67('0x2d')]);}}}else{var _0x4be654=_(_0x5d109a[_0x2e67('0x40')])[_0x2e67('0x41')]()[_0x2e67('0x34')](function(_0x58d8a4){return _[_0x2e67('0x77')](_0x2fa004,[_0x2e67('0x31'),_0x58d8a4])?_0x58d8a4:undefined;})[_0x2e67('0x78')]()[_0x2e67('0x67')]();if(!_[_0x2e67('0x79')](_0x4be654)){_0x4be654[_0x2e67('0x7a')](function(_0x456e65){if(_0x456e65===_0x2e67('0x7b')){_0x6c08fe['where']('i.SmsAccountId\x20IN\x20?',[][_0x2e67('0x7c')](_0x5d109a['query'][_0x456e65]));}else if(_0x456e65==='createdAt'){var _0x1ac909=JSON[_0x2e67('0x7d')](_0x5d109a[_0x2e67('0x40')][_0x456e65])[_0x2e67('0x7e')];var _0x2b785d=JSON['parse'](_0x5d109a[_0x2e67('0x40')][_0x456e65])[_0x2e67('0x7f')];_0x6c08fe[_0x2e67('0x4a')](_0x2e67('0x80'),_0x1ac909,_0x2b785d);}else{if(_0x5d109a[_0x2e67('0x40')][_0x456e65]===_0x2e67('0x81')){_0x6c08fe[_0x2e67('0x4a')]('i.'+_0x456e65+_0x2e67('0x82'));}else{_0x6c08fe['where']('i.'+_0x456e65+_0x2e67('0x83'),_0x5d109a[_0x2e67('0x40')][_0x456e65]);}}});}if(_0x5d109a['query']['read']){if(_0x5d109a[_0x2e67('0x40')][_0x2e67('0x84')]==0x1){_0x6c08fe['having'](_0x2e67('0x85'));}else{_0x6c08fe[_0x2e67('0x68')](_0x2e67('0x86'));}}if(_0x5d109a[_0x2e67('0x40')]['tag']){_0x34e3f0=_[_0x2e67('0x87')](_0x5d109a[_0x2e67('0x40')]['tag'])?_0x5d109a['query'][_0x2e67('0x88')]:new Array(_0x5d109a[_0x2e67('0x40')][_0x2e67('0x88')]);_0x34e3f0[_0x2e67('0x7a')](function(_0x3c2206){_0x154150['or'](_0x2e67('0x89'),'%,'+_0x3c2206+',%');});}if(_0x5d109a[_0x2e67('0x40')][_0x2e67('0x8a')]){var _0x581259=_0x5d109a[_0x2e67('0x40')]['filter'][_0x2e67('0x8b')]('\x5c','\x5c\x5c')[_0x2e67('0x8b')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x581259)){_0x3fc199['or'](_0x2e67('0x8c'),_0x581259+'%')['or'](_0x2e67('0x8d'),_0x581259+'%');}else{_0x3fc199['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x2e67('0x6b')](_0x581259))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x581259+'%');}}}_0x6c08fe['where'](_0x3fc199);_0x6c08fe[_0x2e67('0x8e')](_0x2e67('0x8f'));var _0x5529e9={'type':db['Sequelize'][_0x2e67('0x90')][_0x2e67('0x91')],'raw':!![]};var _0x272cf1=_0x6c08fe[_0x2e67('0x92')]();_0x272cf1[_0x2e67('0x4d')](_0x2e67('0x8f'));_0x272cf1[_0x2e67('0x4d')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x2e67('0x66'));if(_0x513991[_0x2e67('0x93')]){_0x513991[_0x2e67('0x93')][_0x2e67('0x7a')](function(_0x4e8557){var _0x33111=_0x4e8557[0x0]===_0x2e67('0x94')?_0x4e8557[0x0]:'i.'+_0x4e8557[0x0];_0x6c08fe[_0x2e67('0x93')](_0x33111,_0x4e8557[0x1]===_0x2e67('0x95')?![]:!![]);});}if(!_[_0x2e67('0x79')](_0x34e3f0)){_0x6c08fe[_0x2e67('0x68')](_0x154150);_0x272cf1['where'](_0x2e67('0x96'),_0x34e3f0);}BPromise[_0x2e67('0x97')]()['then'](function(){if(!_0x3d50ed){if(_0x5d109a[_0x2e67('0x40')]['SmsAccountId'])return;_0x272cf1[_0x2e67('0x4a')](_0x2e67('0x98'));_0x6c08fe['where'](_0x2e67('0x98'));return;}if(_0x5d109a[_0x2e67('0x99')][_0x2e67('0x9a')]!=='agent')return;return _0x5d109a[_0x2e67('0x99')][_0x2e67('0x9b')]({'attributes':['id'],'raw':!![]})[_0x2e67('0x2b')](function(_0x611625){if(_[_0x2e67('0x79')](_0x611625)){_0x272cf1['where']('i.SmsAccountId\x20IS\x20NULL');_0x6c08fe[_0x2e67('0x4a')](_0x2e67('0x9c'));}else{_0x272cf1[_0x2e67('0x4a')](_0x2e67('0x9d'),_[_0x2e67('0x34')](_0x611625,'id'));_0x6c08fe[_0x2e67('0x4a')](_0x2e67('0x9d'),_['map'](_0x611625,'id'));}});})['then'](function(){if(_0x5d109a[_0x2e67('0x99')][_0x2e67('0x9a')]==='agent'&&!_0x3d50ed&&!_0x5d109a[_0x2e67('0x40')]['SmsAccountId'])return[];return db['sequelize']['query'](_0x272cf1[_0x2e67('0x9e')](),_0x5529e9);})[_0x2e67('0x2b')](function(_0x2e76ca){_0x491958[_0x2e67('0x25')]=_0x2e76ca[_0x2e67('0x46')];if(_0x491958[_0x2e67('0x25')]===0x0)return[];return db[_0x2e67('0x9f')][_0x2e67('0x40')](_0x115216['toString'](),_0x5529e9)[_0x2e67('0x2b')](function(_0x30b290){_0x14604a=_[_0x2e67('0xa0')](_0x30b290,'id');_0x5529e9=_[_0x2e67('0xa1')](_0x5529e9,{'model':db[_0x2e67('0x3b')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5d109a[_0x2e67('0x40')][_0x2e67('0x45')]){_0x513991[_0x2e67('0x43')][_0x2e67('0x7a')](function(_0x461ea9){_0x6c08fe[_0x2e67('0x4d')]('i.'+_0x461ea9);});}else{_0x6c08fe[_0x2e67('0x4d')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x2e67('0x66'));_0x6c08fe[_0x2e67('0x4d')](_0x2e67('0xa2'),_0x2e67('0xa3'));_0x6c08fe['field']('a.mandatoryDisposition',_0x2e67('0xa4'));_0x6c08fe['field'](_0x2e67('0xa5'),_0x2e67('0x94'));_0x6c08fe[_0x2e67('0x4d')](_0x2e67('0xa6'));_0x6c08fe[_0x2e67('0x4d')]('c.firstName',_0x2e67('0xa7'));_0x6c08fe[_0x2e67('0x4d')](_0x2e67('0xa8'),_0x2e67('0xa9'));_0x6c08fe[_0x2e67('0x4d')](_0x2e67('0xaa'),_0x2e67('0xab'));_0x6c08fe['field'](_0x2e67('0xac'),_0x2e67('0xad'));_0x6c08fe[_0x2e67('0x4d')]('c.mobile',_0x2e67('0xae'));_0x6c08fe['field'](_0x2e67('0xaf'),_0x2e67('0xb0'));_0x6c08fe[_0x2e67('0x4d')](_0x2e67('0xb1'),'Owner.fullname');_0x6c08fe['field'](_0x2e67('0xb2'),_0x2e67('0xb3'));_0x6c08fe[_0x2e67('0x4d')](_0x2e67('0xb4'),_0x2e67('0x36'));}if(_0x513991['limit'])_0x6c08fe[_0x2e67('0x24')](_0x513991[_0x2e67('0x24')]);if(_0x513991[_0x2e67('0x22')])_0x6c08fe[_0x2e67('0x22')](_0x513991[_0x2e67('0x22')]);return db[_0x2e67('0x9f')][_0x2e67('0x40')](_0x6c08fe[_0x2e67('0x9e')](),_0x5529e9);})['then'](function(_0x58ac87){if(_0x58ac87[_0x2e67('0x46')]>0x0)_0x2d2ad6[_0x2e67('0x4a')](_0x2e67('0xb5'),_[_0x2e67('0x34')](_0x58ac87,'id'));return db[_0x2e67('0x9f')]['query'](_0x2d2ad6[_0x2e67('0x9e')](),_0x5529e9)['then'](function(_0x4863b8){var _0x3711b8=_[_0x2e67('0xb6')](_0x4863b8,_0x2e67('0xb7'));var _0x410fbf=[];_0x58ac87[_0x2e67('0x7a')](function(_0x2369d8){_0x410fbf['push'](updateSmsInteraction(_0x2369d8,_0x14604a,_0x3711b8));});return BPromise[_0x2e67('0xb8')](_0x410fbf);});});})[_0x2e67('0x2b')](function(_0x241214){_0x491958[_0x2e67('0xb9')]=_0x241214;return _0x491958;})[_0x2e67('0x2b')](respondWithFilteredResult(_0x1e873f,_0x513991))[_0x2e67('0xba')](handleError(_0x1e873f,null));};exports[_0x2e67('0xbb')]=function(_0x4b8abf,_0x53f503){var _0x3ca0ba={'raw':![],'where':{'id':_0x4b8abf['params']['id']}},_0x6ca66d={};_0x6ca66d[_0x2e67('0x44')]=_[_0x2e67('0x41')](db['SmsInteraction'][_0x2e67('0x3c')]);_0x6ca66d['query']=_['keys'](_0x4b8abf[_0x2e67('0x40')]);_0x6ca66d[_0x2e67('0xbc')]=_[_0x2e67('0x42')](_0x6ca66d[_0x2e67('0x44')],_0x6ca66d[_0x2e67('0x40')]);_0x3ca0ba[_0x2e67('0x43')]=_[_0x2e67('0x42')](_0x6ca66d[_0x2e67('0x44')],qs[_0x2e67('0x45')](_0x4b8abf[_0x2e67('0x40')][_0x2e67('0x45')]));_0x3ca0ba['attributes']=_0x3ca0ba['attributes'][_0x2e67('0x46')]?_0x3ca0ba[_0x2e67('0x43')]:_0x6ca66d[_0x2e67('0x44')];if(_0x4b8abf[_0x2e67('0x40')][_0x2e67('0xbd')]){_0x3ca0ba[_0x2e67('0xbe')]=[{'all':!![]}];}_0x3ca0ba=_[_0x2e67('0xa1')]({},_0x3ca0ba,_0x4b8abf[_0x2e67('0xbf')]);return db[_0x2e67('0x3b')][_0x2e67('0x65')](_0x3ca0ba)[_0x2e67('0x2b')](handleEntityNotFound(_0x53f503,null))['then'](respondWithResult(_0x53f503,null))[_0x2e67('0xba')](handleError(_0x53f503,null));};exports[_0x2e67('0xc0')]=function(_0x5e1676,_0x14376b){return db[_0x2e67('0x3b')][_0x2e67('0xc0')](_0x5e1676['body'],{})[_0x2e67('0x2b')](respondWithResult(_0x14376b,0xc9))[_0x2e67('0xba')](handleError(_0x14376b,null));};exports['update']=function(_0x5c8ff7,_0x4dda2a){if(_0x5c8ff7[_0x2e67('0x76')]['id']){delete _0x5c8ff7[_0x2e67('0x76')]['id'];}return db[_0x2e67('0x3b')][_0x2e67('0x65')]({'where':{'id':_0x5c8ff7['params']['id']}})[_0x2e67('0x2b')](handleEntityNotFound(_0x4dda2a,null))[_0x2e67('0x2b')](saveUpdates(_0x5c8ff7[_0x2e67('0x76')],null))['then'](respondWithResult(_0x4dda2a,null))['catch'](handleError(_0x4dda2a,null));};exports[_0x2e67('0x2c')]=function(_0x1a54cd,_0x55ddf5){return db[_0x2e67('0x3b')][_0x2e67('0x65')]({'where':{'id':_0x1a54cd[_0x2e67('0xc1')]['id']}})[_0x2e67('0x2b')](handleEntityNotFound(_0x55ddf5,null))[_0x2e67('0x2b')](removeEntity(_0x55ddf5,null))['catch'](handleError(_0x55ddf5,null));};exports[_0x2e67('0xc2')]=function(_0x233aef,_0x2e13d9){return db[_0x2e67('0x3b')][_0x2e67('0xc2')]()[_0x2e67('0x2b')](respondWithResult(_0x2e13d9,null))[_0x2e67('0xba')](handleError(_0x2e13d9,null));};exports[_0x2e67('0xc3')]=function(_0x21b6a3,_0x430460,_0x29aa7f){return db[_0x2e67('0xc4')]['find']({'where':{'id':_0x21b6a3[_0x2e67('0xc1')]['id']}})['then'](handleEntityNotFound(_0x430460,null))['then'](function(_0x2d4517){if(_0x2d4517){return _0x2d4517[_0x2e67('0xc3')](_0x21b6a3[_0x2e67('0x76')][_0x2e67('0xc5')],_[_0x2e67('0xc6')](_0x21b6a3[_0x2e67('0x76')],['ids','id'])||{});}})[_0x2e67('0x2b')](respondWithResult(_0x430460,null))[_0x2e67('0xba')](handleError(_0x430460,null));};exports[_0x2e67('0xc7')]=function(_0x14938a,_0x1798ca,_0x4fd8a1){var _0x593986={'raw':![],'where':{}};var _0x1d30b7={};var _0x46d00b={'count':0x0,'rows':[]};return db[_0x2e67('0x3b')][_0x2e67('0xc8')]({'where':{'id':_0x14938a['params']['id']}})[_0x2e67('0x2b')](handleEntityNotFound(_0x1798ca,null))[_0x2e67('0x2b')](function(_0x5c9dae){if(_0x5c9dae){_0x1d30b7[_0x2e67('0x44')]=_[_0x2e67('0x41')](db[_0x2e67('0xc4')][_0x2e67('0x3c')]);_0x1d30b7[_0x2e67('0x40')]=_['keys'](_0x14938a[_0x2e67('0x40')]);_0x1d30b7[_0x2e67('0xbc')]=_[_0x2e67('0x42')](_0x1d30b7[_0x2e67('0x44')],_0x1d30b7['query']);_0x593986[_0x2e67('0x43')]=_[_0x2e67('0x42')](_0x1d30b7[_0x2e67('0x44')],qs['fields'](_0x14938a[_0x2e67('0x40')]['fields']));_0x593986['attributes']=_0x593986['attributes'][_0x2e67('0x46')]?_0x593986[_0x2e67('0x43')]:_0x1d30b7[_0x2e67('0x44')];if(!_0x14938a['query'][_0x2e67('0x47')](_0x2e67('0x48'))){_0x593986[_0x2e67('0x24')]=qs[_0x2e67('0x24')](_0x14938a['query'][_0x2e67('0x24')]);_0x593986[_0x2e67('0x22')]=qs[_0x2e67('0x22')](_0x14938a[_0x2e67('0x40')][_0x2e67('0x22')]);}_0x593986[_0x2e67('0x93')]=qs[_0x2e67('0x49')](_0x14938a[_0x2e67('0x40')][_0x2e67('0x49')]);_0x593986[_0x2e67('0x4a')]=qs['filters'](_[_0x2e67('0x4b')](_0x14938a[_0x2e67('0x40')],_0x1d30b7['filters']));_0x593986['where'][_0x2e67('0xb7')]=_0x5c9dae['id'];if(_0x14938a[_0x2e67('0x40')][_0x2e67('0x8a')]){_0x593986[_0x2e67('0x4a')]=_[_0x2e67('0xa1')](_0x593986[_0x2e67('0x4a')],{'$or':_[_0x2e67('0x34')](_0x593986[_0x2e67('0x43')],function(_0x52629e){var _0x3a2b90={};_0x3a2b90[_0x52629e]={'$like':'%'+_0x14938a[_0x2e67('0x40')][_0x2e67('0x8a')]+'%'};return _0x3a2b90;})});}if(_0x14938a['query'][_0x2e67('0x7e')]){var _0x9caab3=_0x14938a['query'][_0x2e67('0x7e')][_0x2e67('0x38')](',');var _0x35660b={};_0x35660b[_0x9caab3[0x0]]={'$gte':moment(_0x9caab3[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x593986['where']=_[_0x2e67('0xa1')](_0x593986[_0x2e67('0x4a')],_0x35660b);}_0x593986=_[_0x2e67('0xa1')]({},_0x593986,_0x14938a[_0x2e67('0xbf')]);return db[_0x2e67('0xc4')][_0x2e67('0x25')]({'where':_0x593986['where']})[_0x2e67('0x2b')](function(_0x450906){_0x46d00b[_0x2e67('0x25')]=_0x450906;if(_0x14938a[_0x2e67('0x40')][_0x2e67('0xbd')]){_0x593986[_0x2e67('0xbe')]=[{'all':!![]}];}return db[_0x2e67('0xc4')][_0x2e67('0xc9')](_0x593986);})[_0x2e67('0x2b')](function(_0x27ae09){_0x46d00b[_0x2e67('0xb9')]=_0x27ae09;return _0x46d00b;});}})[_0x2e67('0x2b')](respondWithFilteredResult(_0x1798ca,_0x593986))['catch'](handleError(_0x1798ca,null));};exports[_0x2e67('0xca')]=function(_0x445535,_0x20277e,_0x16efed){return db[_0x2e67('0x3b')][_0x2e67('0x65')]({'where':{'id':_0x445535[_0x2e67('0xc1')]['id']}})[_0x2e67('0x2b')](handleEntityNotFound(_0x20277e,null))[_0x2e67('0x2b')](function(_0x34ebb1){if(_0x34ebb1){return _0x34ebb1['setTags'](_0x445535['body']['ids'],_[_0x2e67('0xc6')](_0x445535['body'],[_0x2e67('0xc5'),'id'])||{})['spread'](function(){return db[_0x2e67('0x70')]['findAll']({'attributes':['id','name',_0x2e67('0x4e')],'where':{'id':_0x445535[_0x2e67('0x76')]['ids']}});})[_0x2e67('0x2b')](function(_0x103ea0){socket[_0x2e67('0xcb')](_0x2e67('0xcc'),{'id':Number(_0x445535[_0x2e67('0xc1')]['id']),'tags':_0x103ea0||[]});return{'id':Number(_0x445535['params']['id']),'tags':_0x103ea0||[]};});}})[_0x2e67('0x2b')](respondWithResult(_0x20277e,null))['catch'](handleError(_0x20277e,null));};exports[_0x2e67('0xcd')]=function(_0x36acfe,_0x2177b7,_0xe02ba1){return db[_0x2e67('0x3b')][_0x2e67('0x65')]({'where':{'id':_0x36acfe[_0x2e67('0xc1')]['id']}})[_0x2e67('0x2b')](handleEntityNotFound(_0x2177b7,null))[_0x2e67('0x2b')](function(_0x25d371){if(_0x25d371){return _0x25d371['removeTags'](_0x36acfe[_0x2e67('0x40')][_0x2e67('0xc5')]);}})[_0x2e67('0x2b')](respondWithStatusCode(_0x2177b7,null))[_0x2e67('0xba')](handleError(_0x2177b7,null));};exports[_0x2e67('0xce')]=function(_0x183454,_0x3b149d){var _0x34b501=moment()['unix']()['toString']();var _0x4ce386=path[_0x2e67('0xcf')](config[_0x2e67('0xd0')],_0x2e67('0xd1'),_0x2e67('0xd2'),_0x2e67('0xd3'));var _0xde9a70=path[_0x2e67('0xcf')](config[_0x2e67('0xd0')],'server',_0x2e67('0xd2'),_0x2e67('0xd4'));var _0x29bea5=path[_0x2e67('0xcf')](_0x4ce386,_0x34b501);var _0xf01955=util[_0x2e67('0xd5')]('transcript-%d-%s.zip',_0x183454[_0x2e67('0xc1')]['id'],_0x34b501);var _0x1453b8=path[_0x2e67('0xcf')](_0x4ce386,_0xf01955);var _0x353c4f=[];_0x353c4f['push']({'model':db[_0x2e67('0xd6')],'as':_0x2e67('0xd6'),'attributes':['id','fullname'],'raw':!![]});_0x353c4f['push']({'model':db[_0x2e67('0xd7')],'as':_0x2e67('0xd8'),'attributes':['id',_0x2e67('0xd9'),_0x2e67('0xda')],'raw':!![]});var _0x44419a=[{'model':db['SmsMessage'],'as':'Messages','attributes':['id',_0x2e67('0x76'),_0x2e67('0xdb'),'direction',_0x2e67('0xdc'),_0x2e67('0x84')],'include':_0x353c4f}];_0x44419a[_0x2e67('0x39')]({'model':db[_0x2e67('0xdd')],'as':_0x2e67('0xde'),'attributes':['id',_0x2e67('0x31')]});_0x44419a[_0x2e67('0x39')]({'model':db[_0x2e67('0xd6')],'as':_0x2e67('0xdf'),'attributes':['id',_0x2e67('0x35')]});return db[_0x2e67('0x3b')][_0x2e67('0x65')]({'where':{'id':_0x183454[_0x2e67('0xc1')]['id']},'include':_0x44419a})[_0x2e67('0x2b')](handleEntityNotFound(_0x3b149d,null))[_0x2e67('0x2b')](function(_0x1d5c95){if(_0x1d5c95){var _0x1745b7=_0x1d5c95[_0x2e67('0xe0')]({'plain':!![]});fs[_0x2e67('0xe1')](_0x29bea5);var _0x5071a0={'channel':_0x2e67('0xe2'),'account':_0x1745b7['Account'][_0x2e67('0x31')],'agent':_0x1745b7['Owner']?_0x1745b7[_0x2e67('0xdf')][_0x2e67('0x35')]:_0x2e67('0xe3'),'createdAt':moment(_0x1745b7[_0x2e67('0xdb')])[_0x2e67('0xd5')](_0x2e67('0xe4'))[_0x2e67('0x9e')](),'closedAt':_0x1745b7[_0x2e67('0xe5')]?moment(_0x1745b7[_0x2e67('0xe6')])[_0x2e67('0xd5')](_0x2e67('0xe4'))['toString']():'','disposition':_0x1745b7[_0x2e67('0xe7')],'messages':_(_0x1745b7[_0x2e67('0xe8')])[_0x2e67('0x8a')]({'secret':![]})[_0x2e67('0x34')](function(_0x1ff4b6){return{'date':moment(_0x1ff4b6[_0x2e67('0xdb')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x2e67('0x9e')](),'sender':_0x1ff4b6[_0x2e67('0xe9')]===_0x2e67('0xea')?_0x1ff4b6[_0x2e67('0xd6')]?_0x1ff4b6[_0x2e67('0xd6')]['fullname']:_0x2e67('0xeb'):_0x1ff4b6[_0x2e67('0xd8')][_0x2e67('0xd9')]+(_0x1ff4b6['Contact'][_0x2e67('0xda')]?'\x20'+_0x1ff4b6[_0x2e67('0xd8')][_0x2e67('0xda')]:''),'body':_0x1ff4b6['body'],'direction':_0x1ff4b6[_0x2e67('0xe9')]===_0x2e67('0xea')?'A':'C','secret':_0x1ff4b6[_0x2e67('0xdc')],'read':_0x1ff4b6['read']};})[_0x2e67('0x67')]()};return ejs[_0x2e67('0xec')](path[_0x2e67('0xcf')](config[_0x2e67('0xd0')],_0x2e67('0xd1'),_0x2e67('0xed'),_0x2e67('0xee')),{'interaction':_0x5071a0})[_0x2e67('0x2b')](function(_0x25424d){var _0x1aa2b1=path[_0x2e67('0xcf')](_0x29bea5,_0x2e67('0xef')+_0x1745b7['id']+'-'+_0x34b501+'.pdf');var _0xab013e={'path':_0x1aa2b1,'channel':_0x2e67('0xe2'),'interactionId':_0x1745b7['id']};return pdf[_0x2e67('0xf0')](_0x25424d,_0xab013e);})[_0x2e67('0x2b')](function(){return new BPromise(function(_0x68bc25,_0xd810cb){zipdir(_0x29bea5,{'saveTo':_0x1453b8},function(_0x1227b9,_0x57adb4){if(_0x1227b9)return _0xd810cb(_0x1227b9);return _0x68bc25(_0x57adb4);});})[_0x2e67('0x2b')](function(){return new BPromise(function(_0x1f9067,_0x4e02b0){rimraf(_0x29bea5,function(_0x188e19){if(_0x188e19)_0x4e02b0(_0x188e19);return _0x1f9067();});});})[_0x2e67('0x2b')](function(){return _0x3b149d[_0x2e67('0xce')](_0x1453b8,_0xf01955,function(_0x511404){if(_0x511404){console[_0x2e67('0xf1')]('err',_0x511404);}else{fs[_0x2e67('0xf2')](_0x1453b8);}});});});}else{return _0x3b149d[_0x2e67('0x2e')](0xc8);}})[_0x2e67('0xba')](handleError(_0x3b149d,null));};
\ No newline at end of file
index 7f65bc6..e1aed30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2cf=['update','remove','then','map','findAll','setDataValue','unreadMessages','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','save'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xe2cf,0x1a1));var _0xfe2c=function(_0x315b6c,_0x2ac37f){_0x315b6c=_0x315b6c-0x0;var _0x94dc8=_0xe2cf[_0x315b6c];return _0x94dc8;};'use strict';var EventEmitter=require('events');var SmsInteraction=require(_0xfe2c('0x0'))['db']['SmsInteraction'];var SmsMessage=require(_0xfe2c('0x0'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0xfe2c('0x1')](0x0);var events={'afterCreate':_0xfe2c('0x2'),'afterUpdate':_0xfe2c('0x3'),'afterDestroy':_0xfe2c('0x4')};function emitEvent(_0x494978){return function(_0xd40c31,_0x14674d,_0x55bb12){_0xd40c31['getUsers']({'attributes':['id'],'raw':!![]})[_0xfe2c('0x5')](function(_0x417bc4){_0xd40c31['setDataValue']('Users',_0x417bc4[_0xfe2c('0x6')](function(_0x2e2933){return{'id':_0x2e2933['id']};}));return SmsMessage[_0xfe2c('0x7')]({'where':{'SmsInteractionId':_0xd40c31['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x5b616c){_0xd40c31[_0xfe2c('0x8')](_0xfe2c('0x9'),_0x5b616c['length']);SmsInteractionEvents[_0xfe2c('0xa')](_0x494978+':'+_0xd40c31['id'],_0xd40c31);SmsInteractionEvents[_0xfe2c('0xa')](_0x494978,_0xd40c31);_0x55bb12(null);})[_0xfe2c('0xb')](_0x55bb12(null));};}for(var e in events){if(events[_0xfe2c('0xc')](e)){var event=events[e];SmsInteraction[_0xfe2c('0xd')](e,emitEvent(event));}}module[_0xfe2c('0xe')]=SmsInteractionEvents;
\ No newline at end of file
+var _0x958a=['findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','SmsMessage','setMaxListeners','save','update','getUsers','then','setDataValue','Users'];(function(_0x5d2708,_0x19e363){var _0x28830a=function(_0x6d65e2){while(--_0x6d65e2){_0x5d2708['push'](_0x5d2708['shift']());}};_0x28830a(++_0x19e363);}(_0x958a,0x128));var _0xa958=function(_0x53c437,_0xe0ac16){_0x53c437=_0x53c437-0x0;var _0x18b7ab=_0x958a[_0x53c437];return _0x18b7ab;};'use strict';var EventEmitter=require(_0xa958('0x0'));var SmsInteraction=require(_0xa958('0x1'))['db']['SmsInteraction'];var SmsMessage=require(_0xa958('0x1'))['db'][_0xa958('0x2')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0xa958('0x3')](0x0);var events={'afterCreate':_0xa958('0x4'),'afterUpdate':_0xa958('0x5'),'afterDestroy':'remove'};function emitEvent(_0x3424b0){return function(_0x578481,_0x2024b8,_0x9b7d9e){_0x578481[_0xa958('0x6')]({'attributes':['id'],'raw':!![]})[_0xa958('0x7')](function(_0x3ca01f){_0x578481[_0xa958('0x8')](_0xa958('0x9'),_0x3ca01f['map'](function(_0x514b4f){return{'id':_0x514b4f['id']};}));return SmsMessage[_0xa958('0xa')]({'where':{'SmsInteractionId':_0x578481['id'],'direction':'in','read':![]},'raw':!![]});})[_0xa958('0x7')](function(_0x11f090){_0x578481[_0xa958('0x8')](_0xa958('0xb'),_0x11f090[_0xa958('0xc')]);SmsInteractionEvents[_0xa958('0xd')](_0x3424b0+':'+_0x578481['id'],_0x578481);SmsInteractionEvents[_0xa958('0xd')](_0x3424b0,_0x578481);_0x9b7d9e(null);})[_0xa958('0xe')](_0x9b7d9e(null));};}for(var e in events){if(events[_0xa958('0xf')](e)){var event=events[e];SmsInteraction[_0xa958('0x10')](e,emitEvent(event));}}module[_0xa958('0x11')]=SmsInteractionEvents;
\ No newline at end of file
index af9873e..e7ce3c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ee=['sms_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./smsInteraction.attributes','SmsInteraction'];(function(_0xf06163,_0x80c74b){var _0x29df4d=function(_0x57eea0){while(--_0x57eea0){_0xf06163['push'](_0xf06163['shift']());}};_0x29df4d(++_0x80c74b);}(_0x54ee,0x19a));var _0xe54e=function(_0x5608a3,_0x5b33c5){_0x5608a3=_0x5608a3-0x0;var _0x1ed50a=_0x54ee[_0x5608a3];return _0x1ed50a;};'use strict';var _=require(_0xe54e('0x0'));var util=require(_0xe54e('0x1'));var logger=require(_0xe54e('0x2'))(_0xe54e('0x3'));var moment=require(_0xe54e('0x4'));var BPromise=require('bluebird');var rp=require(_0xe54e('0x5'));var fs=require('fs');var path=require(_0xe54e('0x6'));var rimraf=require(_0xe54e('0x7'));var config=require('../../config/environment');var attributes=require(_0xe54e('0x8'));module['exports']=function(_0x3ec678,_0x52ed00){return _0x3ec678['define'](_0xe54e('0x9'),attributes,{'tableName':_0xe54e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x24efb1,_0x3556c5,_0x3ae401){if(_0x24efb1[_0xe54e('0xb')](_0xe54e('0xc'))){_0x24efb1[_0xe54e('0xd')]=moment()['format'](_0xe54e('0xe'));}_0x3ae401(null,_0x24efb1);}}});};
\ No newline at end of file
+var _0xd46e=['SmsInteraction','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','moment','bluebird','request-promise','rimraf','../../config/environment','./smsInteraction.attributes','exports','define'];(function(_0x98b288,_0x1e9204){var _0x588bbb=function(_0x27b3ec){while(--_0x27b3ec){_0x98b288['push'](_0x98b288['shift']());}};_0x588bbb(++_0x1e9204);}(_0xd46e,0x19c));var _0xed46=function(_0xd0b415,_0x149675){_0xd0b415=_0xd0b415-0x0;var _0x2bdf2c=_0xd46e[_0xd0b415];return _0x2bdf2c;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xed46('0x0'));var BPromise=require(_0xed46('0x1'));var rp=require(_0xed46('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xed46('0x3'));var config=require(_0xed46('0x4'));var attributes=require(_0xed46('0x5'));module[_0xed46('0x6')]=function(_0x5e5a19,_0x337259){return _0x5e5a19[_0xed46('0x7')](_0xed46('0x8'),attributes,{'tableName':'sms_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x46ff9a,_0x3bc972,_0x17e804){if(_0x46ff9a[_0xed46('0x9')](_0xed46('0xa'))){_0x46ff9a[_0xed46('0xb')]=moment()[_0xed46('0xc')](_0xed46('0xd'));}_0x17e804(null,_0x46ff9a);}}});};
\ No newline at end of file
index a498440..f592d0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb775=['redis','localhost','./smsInteraction.socket','register','request','then','info','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SmsInteraction,\x20%s,\x20%s','result','catch','UpdateSmsInteraction','SmsInteraction','options','raw','where','limit','AddTagsToSmsInteraction','find','body','ids','omit','spread','AddTags','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x11fc81,_0x55fbb1){var _0x3110c6=function(_0x53add4){while(--_0x53add4){_0x11fc81['push'](_0x11fc81['shift']());}};_0x3110c6(++_0x55fbb1);}(_0xb775,0x1ae));var _0x5b77=function(_0x327558,_0x35723e){_0x327558=_0x327558-0x0;var _0x10c217=_0xb775[_0x327558];return _0x10c217;};'use strict';var _=require(_0x5b77('0x0'));var util=require('util');var moment=require(_0x5b77('0x1'));var BPromise=require('bluebird');var rs=require(_0x5b77('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5b77('0x3'))['db'];var utils=require(_0x5b77('0x4'));var logger=require(_0x5b77('0x5'))(_0x5b77('0x6'));var config=require(_0x5b77('0x7'));var jayson=require(_0x5b77('0x8'));var client=jayson[_0x5b77('0x9')]['http']({'port':0x232a});config[_0x5b77('0xa')]=_['defaults'](config[_0x5b77('0xa')],{'host':_0x5b77('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5b77('0xa')]));require(_0x5b77('0xc'))[_0x5b77('0xd')](socket);function respondWithRpcPromise(_0x1a82f9,_0x139892,_0x2339da){return new BPromise(function(_0x5b250e,_0x354250){return client[_0x5b77('0xe')](_0x1a82f9,_0x2339da)[_0x5b77('0xf')](function(_0x3d03c0){logger[_0x5b77('0x10')]('SmsInteraction,\x20%s,\x20%s',_0x139892,_0x5b77('0x11'));logger[_0x5b77('0x12')](_0x5b77('0x13'),_0x139892,_0x5b77('0x11'),JSON[_0x5b77('0x14')](_0x3d03c0));if(_0x3d03c0['error']){if(_0x3d03c0[_0x5b77('0x15')][_0x5b77('0x16')]===0x1f4){logger['error']('SmsInteraction,\x20%s,\x20%s',_0x139892,_0x3d03c0[_0x5b77('0x15')][_0x5b77('0x17')]);return _0x354250(_0x3d03c0[_0x5b77('0x15')][_0x5b77('0x17')]);}logger[_0x5b77('0x15')](_0x5b77('0x18'),_0x139892,_0x3d03c0[_0x5b77('0x15')][_0x5b77('0x17')]);return _0x5b250e(_0x3d03c0[_0x5b77('0x15')][_0x5b77('0x17')]);}else{logger[_0x5b77('0x10')](_0x5b77('0x18'),_0x139892,_0x5b77('0x11'));_0x5b250e(_0x3d03c0[_0x5b77('0x19')][_0x5b77('0x17')]);}})[_0x5b77('0x1a')](function(_0x1cfaeb){logger[_0x5b77('0x15')](_0x5b77('0x18'),_0x139892,_0x1cfaeb);_0x354250(_0x1cfaeb);});});}exports[_0x5b77('0x1b')]=function(_0x4c0d07){var _0x52cd75=this;return new Promise(function(_0x495adf,_0x40ff8f){return db[_0x5b77('0x1c')]['update'](_0x4c0d07['body'],{'raw':_0x4c0d07[_0x5b77('0x1d')]?_0x4c0d07[_0x5b77('0x1d')][_0x5b77('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4c0d07[_0x5b77('0x1d')]?_0x4c0d07[_0x5b77('0x1d')][_0x5b77('0x1f')]||null:null,'attributes':_0x4c0d07['options']?_0x4c0d07[_0x5b77('0x1d')]['attributes']||null:null,'limit':_0x4c0d07[_0x5b77('0x1d')]?_0x4c0d07[_0x5b77('0x1d')][_0x5b77('0x20')]||null:null})[_0x5b77('0xf')](function(_0x4d84ed){logger[_0x5b77('0x10')]('UpdateSmsInteraction',_0x4c0d07);logger[_0x5b77('0x12')](_0x5b77('0x1b'),_0x4c0d07,JSON[_0x5b77('0x14')](_0x4d84ed));_0x495adf(_0x4d84ed);})[_0x5b77('0x1a')](function(_0x2a929f){logger['error'](_0x5b77('0x1b'),_0x2a929f[_0x5b77('0x17')],_0x4c0d07);_0x40ff8f(_0x52cd75[_0x5b77('0x15')](0x1f4,_0x2a929f[_0x5b77('0x17')]));});});};exports[_0x5b77('0x21')]=function(_0x17abcb){return new Promise(function(_0x4ee563,_0x164062){return db['SmsInteraction'][_0x5b77('0x22')]({'where':_0x17abcb[_0x5b77('0x1d')]?_0x17abcb[_0x5b77('0x1d')][_0x5b77('0x1f')]||null:null})['then'](function(_0xe1c42b){if(_0xe1c42b){return _0xe1c42b['addTags'](_0x17abcb[_0x5b77('0x23')][_0x5b77('0x24')],_[_0x5b77('0x25')](_0x17abcb[_0x5b77('0x23')],[_0x5b77('0x24'),'id'])||{});}})[_0x5b77('0x26')](function(_0x54ec7f){logger[_0x5b77('0x10')](_0x5b77('0x27'),_0x17abcb);logger[_0x5b77('0x12')]('AddTags',_0x17abcb,JSON['stringify'](_0x54ec7f));_0x4ee563(_0x54ec7f);})[_0x5b77('0x1a')](function(_0xa178f6){logger[_0x5b77('0x15')]('AddTags',_0xa178f6['message'],_0x17abcb);_0x164062(_this[_0x5b77('0x15')](0x1f4,_0xa178f6[_0x5b77('0x17')]));});});};
\ No newline at end of file
+var _0x4745=['ioredis','../../mysqldb','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','info','debug','request\x20sent','error','SmsInteraction,\x20%s,\x20%s','message','result','UpdateSmsInteraction','SmsInteraction','body','raw','options','stringify','AddTagsToSmsInteraction','find','addTags','ids','omit','spread','AddTags','catch','lodash','bluebird','randomstring'];(function(_0x8f283a,_0x3ffd17){var _0x4e5505=function(_0x1b0b42){while(--_0x1b0b42){_0x8f283a['push'](_0x8f283a['shift']());}};_0x4e5505(++_0x3ffd17);}(_0x4745,0x179));var _0x5474=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0x4745[_0x45e98e];return _0x374dba;};'use strict';var _=require(_0x5474('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5474('0x1'));var rs=require(_0x5474('0x2'));var fs=require('fs');var Redis=require(_0x5474('0x3'));var db=require(_0x5474('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5474('0x5'));var config=require('../../config/environment');var jayson=require(_0x5474('0x6'));var client=jayson[_0x5474('0x7')][_0x5474('0x8')]({'port':0x232a});config[_0x5474('0x9')]=_[_0x5474('0xa')](config[_0x5474('0x9')],{'host':_0x5474('0xb'),'port':0x18eb});var socket=require(_0x5474('0xc'))(new Redis(config[_0x5474('0x9')]));require(_0x5474('0xd'))[_0x5474('0xe')](socket);function respondWithRpcPromise(_0x484fdd,_0x204c1d,_0x4054c1){return new BPromise(function(_0x97b9cc,_0x148bc0){return client[_0x5474('0xf')](_0x484fdd,_0x4054c1)[_0x5474('0x10')](function(_0x38f7d6){logger[_0x5474('0x11')]('SmsInteraction,\x20%s,\x20%s',_0x204c1d,'request\x20sent');logger[_0x5474('0x12')]('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x204c1d,_0x5474('0x13'),JSON['stringify'](_0x38f7d6));if(_0x38f7d6[_0x5474('0x14')]){if(_0x38f7d6[_0x5474('0x14')]['code']===0x1f4){logger[_0x5474('0x14')](_0x5474('0x15'),_0x204c1d,_0x38f7d6[_0x5474('0x14')][_0x5474('0x16')]);return _0x148bc0(_0x38f7d6[_0x5474('0x14')]['message']);}logger[_0x5474('0x14')]('SmsInteraction,\x20%s,\x20%s',_0x204c1d,_0x38f7d6[_0x5474('0x14')][_0x5474('0x16')]);return _0x97b9cc(_0x38f7d6[_0x5474('0x14')][_0x5474('0x16')]);}else{logger['info'](_0x5474('0x15'),_0x204c1d,_0x5474('0x13'));_0x97b9cc(_0x38f7d6[_0x5474('0x17')][_0x5474('0x16')]);}})['catch'](function(_0x585efe){logger[_0x5474('0x14')](_0x5474('0x15'),_0x204c1d,_0x585efe);_0x148bc0(_0x585efe);});});}exports[_0x5474('0x18')]=function(_0x17eaa2){var _0x2192b8=this;return new Promise(function(_0x10ba58,_0x17b764){return db[_0x5474('0x19')]['update'](_0x17eaa2[_0x5474('0x1a')],{'raw':_0x17eaa2['options']?_0x17eaa2['options'][_0x5474('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x17eaa2['options']?_0x17eaa2[_0x5474('0x1c')]['where']||null:null,'attributes':_0x17eaa2['options']?_0x17eaa2[_0x5474('0x1c')]['attributes']||null:null,'limit':_0x17eaa2[_0x5474('0x1c')]?_0x17eaa2['options']['limit']||null:null})[_0x5474('0x10')](function(_0x57d5a1){logger[_0x5474('0x11')](_0x5474('0x18'),_0x17eaa2);logger['debug'](_0x5474('0x18'),_0x17eaa2,JSON[_0x5474('0x1d')](_0x57d5a1));_0x10ba58(_0x57d5a1);})['catch'](function(_0x16c8ce){logger[_0x5474('0x14')](_0x5474('0x18'),_0x16c8ce[_0x5474('0x16')],_0x17eaa2);_0x17b764(_0x2192b8[_0x5474('0x14')](0x1f4,_0x16c8ce[_0x5474('0x16')]));});});};exports[_0x5474('0x1e')]=function(_0x36e3be){return new Promise(function(_0x17143d,_0x11f170){return db[_0x5474('0x19')][_0x5474('0x1f')]({'where':_0x36e3be[_0x5474('0x1c')]?_0x36e3be['options']['where']||null:null})[_0x5474('0x10')](function(_0xdd9945){if(_0xdd9945){return _0xdd9945[_0x5474('0x20')](_0x36e3be['body'][_0x5474('0x21')],_[_0x5474('0x22')](_0x36e3be[_0x5474('0x1a')],[_0x5474('0x21'),'id'])||{});}})[_0x5474('0x23')](function(_0x53e0b8){logger[_0x5474('0x11')]('AddTags',_0x36e3be);logger[_0x5474('0x12')](_0x5474('0x24'),_0x36e3be,JSON['stringify'](_0x53e0b8));_0x17143d(_0x53e0b8);})[_0x5474('0x25')](function(_0xc01e54){logger['error'](_0x5474('0x24'),_0xc01e54[_0x5474('0x16')],_0x36e3be);_0x11f170(_this[_0x5474('0x14')](0x1f4,_0xc01e54[_0x5474('0x16')]));});});};
\ No newline at end of file
index 840d15a..a2f45f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb0b=['length','smsInteraction:','save','remove','update','emit','register'];(function(_0x39872b,_0x343e6b){var _0x55fa18=function(_0x217c7f){while(--_0x217c7f){_0x39872b['push'](_0x39872b['shift']());}};_0x55fa18(++_0x343e6b);}(_0xdb0b,0xaa));var _0xbdb0=function(_0x3c3d5b,_0x410836){_0x3c3d5b=_0x3c3d5b-0x0;var _0x1f2740=_0xdb0b[_0x3c3d5b];return _0x1f2740;};'use strict';var SmsInteractionEvents=require('./smsInteraction.events');var events=[_0xbdb0('0x0'),_0xbdb0('0x1'),_0xbdb0('0x2')];function createListener(_0x43b97b,_0x2455b4){return function(_0x58e9d0){_0x2455b4[_0xbdb0('0x3')](_0x43b97b,_0x58e9d0);};}function removeListener(_0x49e21f,_0x8d2f83){return function(){SmsInteractionEvents['removeListener'](_0x49e21f,_0x8d2f83);};}exports[_0xbdb0('0x4')]=function(_0x153221){for(var _0x47396d=0x0,_0x2a5dbf=events[_0xbdb0('0x5')];_0x47396d<_0x2a5dbf;_0x47396d++){var _0x2b874d=events[_0x47396d];var _0x37bf45=createListener(_0xbdb0('0x6')+_0x2b874d,_0x153221);SmsInteractionEvents['on'](_0x2b874d,_0x37bf45);}};
\ No newline at end of file
+var _0xd2b6=['smsInteraction:','./smsInteraction.events','save','remove','update','removeListener','register'];(function(_0x262c6d,_0x422ff9){var _0x4c5d85=function(_0x5de3ad){while(--_0x5de3ad){_0x262c6d['push'](_0x262c6d['shift']());}};_0x4c5d85(++_0x422ff9);}(_0xd2b6,0x190));var _0x6d2b=function(_0x2be260,_0x5e3fb6){_0x2be260=_0x2be260-0x0;var _0x42c437=_0xd2b6[_0x2be260];return _0x42c437;};'use strict';var SmsInteractionEvents=require(_0x6d2b('0x0'));var events=[_0x6d2b('0x1'),_0x6d2b('0x2'),_0x6d2b('0x3')];function createListener(_0x33799a,_0x3bddec){return function(_0x4b9178){_0x3bddec['emit'](_0x33799a,_0x4b9178);};}function removeListener(_0x440b40,_0x5ada86){return function(){SmsInteractionEvents[_0x6d2b('0x4')](_0x440b40,_0x5ada86);};}exports[_0x6d2b('0x5')]=function(_0x52646a){for(var _0x4673e1=0x0,_0x368ffd=events['length'];_0x4673e1<_0x368ffd;_0x4673e1++){var _0x4d9475=events[_0x4673e1];var _0x10a185=createListener(_0x6d2b('0x6')+_0x4d9475,_0x52646a);SmsInteractionEvents['on'](_0x4d9475,_0x10a185);}};
\ No newline at end of file
index 93f8130..48cb2db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d8f=['create','/:id/status','status','put','update','/:id/accept','/:id/reject','reject','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','describe','/:id','show','post','sms','smsmessage:create'];(function(_0x1ba815,_0x3cdd34){var _0x110c82=function(_0x30afcc){while(--_0x30afcc){_0x1ba815['push'](_0x1ba815['shift']());}};_0x110c82(++_0x3cdd34);}(_0x8d8f,0x13d));var _0xf8d8=function(_0x30f09f,_0x1c2bec){_0x30f09f=_0x30f09f-0x0;var _0xcb62ff=_0x8d8f[_0x30f09f];return _0xcb62ff;};'use strict';var multer=require(_0xf8d8('0x0'));var util=require(_0xf8d8('0x1'));var path=require(_0xf8d8('0x2'));var timeout=require(_0xf8d8('0x3'));var express=require(_0xf8d8('0x4'));var router=express[_0xf8d8('0x5')]();var fs_extra=require(_0xf8d8('0x6'));var auth=require(_0xf8d8('0x7'));var interaction=require(_0xf8d8('0x8'));var config=require(_0xf8d8('0x9'));var controller=require(_0xf8d8('0xa'));router[_0xf8d8('0xb')]('/',auth['isAuthenticated'](),controller['index']);router[_0xf8d8('0xb')]('/describe',auth[_0xf8d8('0xc')](),controller[_0xf8d8('0xd')]);router[_0xf8d8('0xb')](_0xf8d8('0xe'),auth[_0xf8d8('0xc')](),controller[_0xf8d8('0xf')]);router[_0xf8d8('0x10')]('/',auth[_0xf8d8('0xc')](),interaction['tracked'](_0xf8d8('0x11'),_0xf8d8('0x12')),controller[_0xf8d8('0x13')]);router['post'](_0xf8d8('0x14'),controller[_0xf8d8('0x15')]);router[_0xf8d8('0x16')](_0xf8d8('0xe'),auth[_0xf8d8('0xc')](),controller[_0xf8d8('0x17')]);router[_0xf8d8('0x16')](_0xf8d8('0x18'),auth[_0xf8d8('0xc')](),controller['accept']);router[_0xf8d8('0x16')](_0xf8d8('0x19'),auth[_0xf8d8('0xc')](),controller[_0xf8d8('0x1a')]);router['delete'](_0xf8d8('0xe'),auth[_0xf8d8('0xc')](),controller['destroy']);module[_0xf8d8('0x1b')]=router;
\ No newline at end of file
+var _0xecb9=['isAuthenticated','index','/describe','describe','show','post','tracked','sms','smsmessage:create','create','/:id/status','status','/:id','update','put','/:id/reject','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','get'];(function(_0x325abd,_0x47d385){var _0x2c097a=function(_0x767bc8){while(--_0x767bc8){_0x325abd['push'](_0x325abd['shift']());}};_0x2c097a(++_0x47d385);}(_0xecb9,0x90));var _0x9ecb=function(_0x24f04d,_0x198dc7){_0x24f04d=_0x24f04d-0x0;var _0x2930f0=_0xecb9[_0x24f04d];return _0x2930f0;};'use strict';var multer=require(_0x9ecb('0x0'));var util=require(_0x9ecb('0x1'));var path=require(_0x9ecb('0x2'));var timeout=require(_0x9ecb('0x3'));var express=require(_0x9ecb('0x4'));var router=express[_0x9ecb('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x9ecb('0x6'));var interaction=require(_0x9ecb('0x7'));var config=require(_0x9ecb('0x8'));var controller=require(_0x9ecb('0x9'));router[_0x9ecb('0xa')]('/',auth[_0x9ecb('0xb')](),controller[_0x9ecb('0xc')]);router[_0x9ecb('0xa')](_0x9ecb('0xd'),auth[_0x9ecb('0xb')](),controller[_0x9ecb('0xe')]);router[_0x9ecb('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x9ecb('0xf')]);router[_0x9ecb('0x10')]('/',auth['isAuthenticated'](),interaction[_0x9ecb('0x11')](_0x9ecb('0x12'),_0x9ecb('0x13')),controller[_0x9ecb('0x14')]);router['post'](_0x9ecb('0x15'),controller[_0x9ecb('0x16')]);router['put'](_0x9ecb('0x17'),auth[_0x9ecb('0xb')](),controller[_0x9ecb('0x18')]);router[_0x9ecb('0x19')]('/:id/accept',auth[_0x9ecb('0xb')](),controller['accept']);router[_0x9ecb('0x19')](_0x9ecb('0x1a'),auth[_0x9ecb('0xb')](),controller[_0x9ecb('0x1b')]);router[_0x9ecb('0x1c')](_0x9ecb('0x17'),auth['isAuthenticated'](),controller[_0x9ecb('0x1d')]);module[_0x9ecb('0x1e')]=router;
\ No newline at end of file
index b135ae6..e663714 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x428b=['ENUM','out','STRING','DATE','BOOLEAN','exports','TEXT','medium'];(function(_0x12f11e,_0x45a399){var _0x25ecf1=function(_0x12907b){while(--_0x12907b){_0x12f11e['push'](_0x12f11e['shift']());}};_0x25ecf1(++_0x45a399);}(_0x428b,0xc5));var _0xb428=function(_0xaa1b3e,_0x47d976){_0xaa1b3e=_0xaa1b3e-0x0;var _0x454d7d=_0x428b[_0xaa1b3e];return _0x454d7d;};'use strict';var Sequelize=require('sequelize');module[_0xb428('0x0')]={'body':{'type':Sequelize[_0xb428('0x1')](_0xb428('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xb428('0x3')]('in',_0xb428('0x4')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0xb428('0x5')]},'readAt':{'type':Sequelize[_0xb428('0x6')]},'secret':{'type':Sequelize[_0xb428('0x7')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xb428('0x1')]}};
\ No newline at end of file
+var _0xf958=['medium','BOOLEAN','ENUM','out','STRING','DATE','TEXT'];(function(_0x8512af,_0x898ac9){var _0x1319bb=function(_0x4badb5){while(--_0x4badb5){_0x8512af['push'](_0x8512af['shift']());}};_0x1319bb(++_0x898ac9);}(_0xf958,0x1c0));var _0x8f95=function(_0x36b05f,_0x32fa34){_0x36b05f=_0x36b05f-0x0;var _0x18fefd=_0xf958[_0x36b05f];return _0x18fefd;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize['TEXT'](_0x8f95('0x0')),'allowNull':![]},'read':{'type':Sequelize[_0x8f95('0x1')],'defaultValue':![]},'direction':{'type':Sequelize[_0x8f95('0x2')]('in',_0x8f95('0x3')),'defaultValue':_0x8f95('0x3'),'allowNull':![]},'messageId':{'type':Sequelize[_0x8f95('0x4')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0x8f95('0x5')]},'secret':{'type':Sequelize[_0x8f95('0x1')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x8f95('0x4')]},'providerResponse':{'type':Sequelize[_0x8f95('0x6')]}};
\ No newline at end of file
index 6af5b5e..da18a3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17bb=['../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./smsMessage.socket','register','http','request','SmsMessage,\x20%s,\x20%s','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','send','index','SmsMessage','rawAttributes','fieldName','type','key','model','map','name','query','keys','filters','intersection','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','include','findAll','rows','catch','show','fields','includeAll','options','create','body','params','describe','accept','sms','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','find','SmsInteractionId','isNil','read1stAt','format','get','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','QueryTypes','contact','agent','fullname','internal','manual','interface','channel','motionChannel','event','EventManager','acceptmessage','sms-interactions','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','SELECT','User','email','SIP/%s','rejectmessage','SmsAccountId','debug','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','indexOf','delivered','Status','plivio','groupName','DELIVERED','infobip','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch'];(function(_0x1b0051,_0x4725e6){var _0x5a9c59=function(_0x40ee81){while(--_0x40ee81){_0x1b0051['push'](_0x1b0051['shift']());}};_0x5a9c59(++_0x4725e6);}(_0x17bb,0x80));var _0xb17b=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x17bb[_0x2641f9];return _0x585741;};'use strict';var emlformat=require(_0xb17b('0x0'));var rimraf=require(_0xb17b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb17b('0x2'));var rp=require(_0xb17b('0x3'));var moment=require(_0xb17b('0x4'));var BPromise=require(_0xb17b('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xb17b('0x6'));var sox=require(_0xb17b('0x7'));var csv=require(_0xb17b('0x8'));var ejs=require(_0xb17b('0x9'));var fs=require('fs');var fs_extra=require(_0xb17b('0xa'));var _=require(_0xb17b('0xb'));var squel=require(_0xb17b('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xb17b('0xd'));var toCsv=require('to-csv');var querystring=require(_0xb17b('0xe'));var Papa=require(_0xb17b('0xf'));var Redis=require(_0xb17b('0x10'));var authService=require(_0xb17b('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xb17b('0x12'));var hardwareService=require(_0xb17b('0x13'));var logger=require(_0xb17b('0x14'))('api');var utils=require(_0xb17b('0x15'));var config=require(_0xb17b('0x16'));var licenseUtil=require(_0xb17b('0x17'));var db=require(_0xb17b('0x18'))['db'];config[_0xb17b('0x19')]=_[_0xb17b('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xb17b('0x1b'))[_0xb17b('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0xb17b('0x1d')]({'port':0x232c});var client9002=jayson['client'][_0xb17b('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x5276b8,_0x5b3af5,_0x4f9d5f,_0x1e0fe2){return new BPromise(function(_0x4f02a0,_0xf44cfe){var _0x543b8b=_0x1e0fe2||client;return _0x543b8b[_0xb17b('0x1e')](_0x5276b8,_0x4f9d5f)['then'](function(_0x3c7209){logger['info'](_0xb17b('0x1f'),_0x5b3af5,_0xb17b('0x20'));logger['debug'](_0xb17b('0x21'),_0x5b3af5,_0xb17b('0x20'),JSON[_0xb17b('0x22')](_0x3c7209));if(_0x3c7209['error']){if(_0x3c7209[_0xb17b('0x23')][_0xb17b('0x24')]===0x1f4){logger['error'](_0xb17b('0x1f'),_0x5b3af5,_0x3c7209[_0xb17b('0x23')][_0xb17b('0x25')]);return _0xf44cfe(_0x3c7209['error']['message']);}logger[_0xb17b('0x23')]('SmsMessage,\x20%s,\x20%s',_0x5b3af5,_0x3c7209[_0xb17b('0x23')][_0xb17b('0x25')]);return _0x4f02a0(_0x3c7209[_0xb17b('0x23')][_0xb17b('0x25')]);}else{logger[_0xb17b('0x26')](_0xb17b('0x1f'),_0x5b3af5,_0xb17b('0x20'));_0x4f02a0(_0x3c7209[_0xb17b('0x27')][_0xb17b('0x25')]);}})['catch'](function(_0x313f8a){logger[_0xb17b('0x23')](_0xb17b('0x1f'),_0x5b3af5,_0x313f8a);_0xf44cfe(_0x313f8a);});});}function respondWithStatusCode(_0x31d86c,_0x58154b){_0x58154b=_0x58154b||0xcc;return function(_0x14d6f1){if(_0x14d6f1){return _0x31d86c[_0xb17b('0x28')](_0x58154b);}return _0x31d86c[_0xb17b('0x29')](_0x58154b)[_0xb17b('0x2a')]();};}function respondWithResult(_0x674fc7,_0x40be8e){_0x40be8e=_0x40be8e||0xc8;return function(_0x379f53){if(_0x379f53){return _0x674fc7[_0xb17b('0x29')](_0x40be8e)['json'](_0x379f53);}};}function respondWithFilteredResult(_0x2400e0,_0x32f918){return function(_0xf4cc35){if(_0xf4cc35){var _0x1ce6c0=typeof _0x32f918[_0xb17b('0x2b')]===_0xb17b('0x2c')&&typeof _0x32f918[_0xb17b('0x2d')]==='undefined';var _0x130699=_0xf4cc35[_0xb17b('0x2e')];var _0x497353=_0x1ce6c0?0x0:_0x32f918[_0xb17b('0x2b')];var _0x45855e=_0x1ce6c0?_0xf4cc35[_0xb17b('0x2e')]:_0x32f918[_0xb17b('0x2b')]+_0x32f918['limit'];var _0x5da2b3;if(_0x45855e>=_0x130699){_0x45855e=_0x130699;_0x5da2b3=0xc8;}else{_0x5da2b3=0xce;}_0x2400e0['status'](_0x5da2b3);return _0x2400e0[_0xb17b('0x2f')](_0xb17b('0x30'),_0x497353+'-'+_0x45855e+'/'+_0x130699)['json'](_0xf4cc35);}return null;};}function patchUpdates(_0x42d0fa){return function(_0x2096e0){try{jsonpatch['apply'](_0x2096e0,_0x42d0fa,!![]);}catch(_0x369a63){return BPromise[_0xb17b('0x31')](_0x369a63);}return _0x2096e0[_0xb17b('0x32')]();};}function saveUpdates(_0x570b55,_0x2867a7){return function(_0x509da1){if(_0x509da1){return _0x509da1[_0xb17b('0x33')](_0x570b55)[_0xb17b('0x34')](function(_0x39fd31){return _0x39fd31;});}return null;};}function removeEntity(_0x110442,_0x3a7343){return function(_0x9a0c9b){if(_0x9a0c9b){return _0x9a0c9b[_0xb17b('0x35')]()[_0xb17b('0x34')](function(){_0x110442['status'](0xcc)[_0xb17b('0x2a')]();});}};}function handleEntityNotFound(_0xdb6693,_0x4adb93){return function(_0x1aa543){if(!_0x1aa543){_0xdb6693['sendStatus'](0x194);}return _0x1aa543;};}function handleError(_0x2511f6,_0x309696){_0x309696=_0x309696||0x1f4;return function(_0x3c6f2e){logger[_0xb17b('0x23')](_0x3c6f2e['stack']);if(_0x3c6f2e['name']){delete _0x3c6f2e['name'];}_0x2511f6[_0xb17b('0x29')](_0x309696)[_0xb17b('0x36')](_0x3c6f2e);};}exports[_0xb17b('0x37')]=function(_0x3b2771,_0x50ef09){var _0x3d50e9={},_0x246c7a={},_0x3e4d09={'count':0x0,'rows':[]};var _0x30b321=_['map'](db[_0xb17b('0x38')][_0xb17b('0x39')],function(_0x16ab79){return{'name':_0x16ab79[_0xb17b('0x3a')],'type':_0x16ab79[_0xb17b('0x3b')][_0xb17b('0x3c')]};});_0x246c7a[_0xb17b('0x3d')]=_[_0xb17b('0x3e')](_0x30b321,_0xb17b('0x3f'));_0x246c7a[_0xb17b('0x40')]=_[_0xb17b('0x41')](_0x3b2771['query']);_0x246c7a[_0xb17b('0x42')]=_[_0xb17b('0x43')](_0x246c7a[_0xb17b('0x3d')],_0x246c7a['query']);_0x3d50e9[_0xb17b('0x44')]=_[_0xb17b('0x43')](_0x246c7a[_0xb17b('0x3d')],qs['fields'](_0x3b2771[_0xb17b('0x40')]['fields']));_0x3d50e9[_0xb17b('0x44')]=_0x3d50e9[_0xb17b('0x44')]['length']?_0x3d50e9[_0xb17b('0x44')]:_0x246c7a[_0xb17b('0x3d')];if(!_0x3b2771[_0xb17b('0x40')][_0xb17b('0x45')](_0xb17b('0x46'))){_0x3d50e9['limit']=qs[_0xb17b('0x2d')](_0x3b2771[_0xb17b('0x40')]['limit']);_0x3d50e9[_0xb17b('0x2b')]=qs['offset'](_0x3b2771[_0xb17b('0x40')][_0xb17b('0x2b')]);}_0x3d50e9[_0xb17b('0x47')]=qs[_0xb17b('0x48')](_0x3b2771[_0xb17b('0x40')]['sort']);_0x3d50e9[_0xb17b('0x49')]=qs[_0xb17b('0x42')](_[_0xb17b('0x4a')](_0x3b2771[_0xb17b('0x40')],_0x246c7a['filters']),_0x30b321);if(_0x3b2771[_0xb17b('0x40')][_0xb17b('0x4b')]){_0x3d50e9[_0xb17b('0x49')]=_[_0xb17b('0x4c')](_0x3d50e9[_0xb17b('0x49')],{'$or':_[_0xb17b('0x3e')](_0x30b321,function(_0x43f07a){if(_0x43f07a[_0xb17b('0x3b')]!=='VIRTUAL'){var _0x5f197f={};_0x5f197f[_0x43f07a['name']]={'$like':'%'+_0x3b2771[_0xb17b('0x40')][_0xb17b('0x4b')]+'%'};return _0x5f197f;}})});}_0x3d50e9=_['merge']({},_0x3d50e9,_0x3b2771['options']);var _0x249ff8={'where':_0x3d50e9[_0xb17b('0x49')]};return db[_0xb17b('0x38')][_0xb17b('0x2e')](_0x249ff8)[_0xb17b('0x34')](function(_0x30acae){_0x3e4d09['count']=_0x30acae;if(_0x3b2771[_0xb17b('0x40')]['includeAll']){_0x3d50e9[_0xb17b('0x4d')]=[{'all':!![]}];}return db[_0xb17b('0x38')][_0xb17b('0x4e')](_0x3d50e9);})['then'](function(_0x14e853){_0x3e4d09[_0xb17b('0x4f')]=_0x14e853;return _0x3e4d09;})['then'](respondWithFilteredResult(_0x50ef09,_0x3d50e9))[_0xb17b('0x50')](handleError(_0x50ef09,null));};exports[_0xb17b('0x51')]=function(_0x3a12a3,_0x4e3871){var _0x3d1027={'raw':!![],'where':{'id':_0x3a12a3['params']['id']}},_0x4a96e5={};_0x4a96e5[_0xb17b('0x3d')]=_[_0xb17b('0x41')](db[_0xb17b('0x38')][_0xb17b('0x39')]);_0x4a96e5[_0xb17b('0x40')]=_['keys'](_0x3a12a3[_0xb17b('0x40')]);_0x4a96e5['filters']=_[_0xb17b('0x43')](_0x4a96e5['model'],_0x4a96e5[_0xb17b('0x40')]);_0x3d1027[_0xb17b('0x44')]=_[_0xb17b('0x43')](_0x4a96e5[_0xb17b('0x3d')],qs['fields'](_0x3a12a3['query'][_0xb17b('0x52')]));_0x3d1027[_0xb17b('0x44')]=_0x3d1027[_0xb17b('0x44')]['length']?_0x3d1027[_0xb17b('0x44')]:_0x4a96e5['model'];if(_0x3a12a3[_0xb17b('0x40')][_0xb17b('0x53')]){_0x3d1027['include']=[{'all':!![]}];}_0x3d1027=_['merge']({},_0x3d1027,_0x3a12a3[_0xb17b('0x54')]);return db['SmsMessage']['find'](_0x3d1027)[_0xb17b('0x34')](handleEntityNotFound(_0x4e3871,null))['then'](respondWithResult(_0x4e3871,null))[_0xb17b('0x50')](handleError(_0x4e3871,null));};exports[_0xb17b('0x55')]=function(_0x46a73b,_0x36bc6e){return db[_0xb17b('0x38')][_0xb17b('0x55')](_0x46a73b[_0xb17b('0x56')],{})[_0xb17b('0x34')](respondWithResult(_0x36bc6e,0xc9))[_0xb17b('0x50')](handleError(_0x36bc6e,null));};exports['update']=function(_0x524400,_0x2968a7){if(_0x524400['body']['id']){delete _0x524400[_0xb17b('0x56')]['id'];}return db[_0xb17b('0x38')]['find']({'where':{'id':_0x524400[_0xb17b('0x57')]['id']}})[_0xb17b('0x34')](handleEntityNotFound(_0x2968a7,null))[_0xb17b('0x34')](saveUpdates(_0x524400[_0xb17b('0x56')],null))['then'](respondWithResult(_0x2968a7,null))[_0xb17b('0x50')](handleError(_0x2968a7,null));};exports['destroy']=function(_0x64995d,_0x28f77a){return db[_0xb17b('0x38')]['find']({'where':{'id':_0x64995d['params']['id']}})[_0xb17b('0x34')](handleEntityNotFound(_0x28f77a,null))['then'](removeEntity(_0x28f77a,null))[_0xb17b('0x50')](handleError(_0x28f77a,null));};exports[_0xb17b('0x58')]=function(_0x277f99,_0x216caa){return db['SmsMessage'][_0xb17b('0x58')]()[_0xb17b('0x34')](respondWithResult(_0x216caa,null))[_0xb17b('0x50')](handleError(_0x216caa,null));};var interaction_log=require(_0xb17b('0x14'))('sms-interactions');exports[_0xb17b('0x59')]=function(_0x3f6778,_0x2401d0,_0xd0850c){var _0x43a9f5={'agent':{},'channel':_0xb17b('0x5a')};if(_0x3f6778[_0xb17b('0x56')]['id']){delete _0x3f6778[_0xb17b('0x56')]['id'];}_0x3f6778[_0xb17b('0x56')][_0xb17b('0x5b')]=!![];_0x3f6778['body'][_0xb17b('0x5c')]=moment()['format'](_0xb17b('0x5d'));_0x3f6778[_0xb17b('0x56')]['UserId']=_0x3f6778[_0xb17b('0x56')][_0xb17b('0x5e')]||_0x3f6778[_0xb17b('0x5f')]['id'];_0x43a9f5['agent']['id']=_0x3f6778['body'][_0xb17b('0x5e')];return db['SmsMessage'][_0xb17b('0x60')]({'where':{'id':_0x3f6778[_0xb17b('0x57')]['id'],'UserId':null}})[_0xb17b('0x34')](handleEntityNotFound(_0x2401d0,null))[_0xb17b('0x34')](saveUpdates(_0x3f6778['body'],null))['then'](function(_0x1dbdc5){if(_0x1dbdc5){_0x43a9f5['message']=_0x1dbdc5['get']({'plain':!![]});return db['SmsInteraction'][_0xb17b('0x60')]({'where':{'id':_0x1dbdc5[_0xb17b('0x61')]}});}return null;})[_0xb17b('0x34')](handleEntityNotFound(_0x2401d0,null))['then'](function(_0x4f3388){if(_0x4f3388){return _0x4f3388['update']({'UserId':_0x3f6778[_0xb17b('0x56')][_0xb17b('0x5e')],'read1stAt':_[_0xb17b('0x62')](_0x4f3388[_0xb17b('0x63')])?moment()[_0xb17b('0x64')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xb17b('0x34')](function(_0x2243c4){if(_0x2243c4){_0x43a9f5['interaction']=_0x2243c4[_0xb17b('0x65')]({'plain':!![]});interaction_log[_0xb17b('0x26')](_0xb17b('0x66'),_0x3f6778[_0xb17b('0x5f')]['id'],_0x3f6778['user'][_0xb17b('0x3f')],_0x3f6778[_0xb17b('0x5f')][_0xb17b('0x67')],_0x43a9f5[_0xb17b('0x68')]['id'],_0x3f6778['body']?JSON[_0xb17b('0x22')](_0x3f6778[_0xb17b('0x56')]):_0xb17b('0x69'));return respondWithRpcPromise(_0xb17b('0x6a'),'acceptMessage',_0x43a9f5);}return null;})[_0xb17b('0x34')](function(_0x12224c){var _0x50fb88=_0xb17b('0x6b')+_0x12224c['message']['ContactId'];return db[_0xb17b('0x6c')]['query'](_0x50fb88,{'type':db['Sequelize'][_0xb17b('0x6d')]['SELECT'],'raw':!![]})['then'](function(_0x5b0b5c){return _0x5b0b5c;});})['then'](function(_0x4e037a){if(_0x4e037a){_0x43a9f5[_0xb17b('0x25')][_0xb17b('0x6e')]=_0x4e037a[0x0];if(!_0x3f6778['body'][_0xb17b('0x5e')])return;return db['User'][_0xb17b('0x60')]({'where':{'id':_0x3f6778[_0xb17b('0x56')]['UserId'],'role':_0xb17b('0x6f')},'attributes':['id',_0xb17b('0x3f'),_0xb17b('0x70'),'email',_0xb17b('0x71')],'raw':!![]});}return null;})[_0xb17b('0x34')](function(_0x51d5ce){if(!_0x51d5ce)return null;_0x43a9f5[_0xb17b('0x25')][_0xb17b('0x6f')]=_0x51d5ce;return _0x43a9f5;})[_0xb17b('0x34')](function(_0x516f66){if(_0x516f66){if(_0x3f6778[_0xb17b('0x56')][_0xb17b('0x72')]){_0x43a9f5[_0xb17b('0x25')][_0xb17b('0x73')]=util[_0xb17b('0x64')]('SIP/%s',_0x3f6778['user'][_0xb17b('0x3f')]);_0x43a9f5[_0xb17b('0x25')][_0xb17b('0x74')]=_0x43a9f5[_0xb17b('0x74')];_0x43a9f5[_0xb17b('0x25')][_0xb17b('0x75')]=_0x43a9f5[_0xb17b('0x74')];_0x43a9f5['message'][_0xb17b('0x76')]=_0xb17b('0x59');return respondWithRpcPromise('EventManager',_0xb17b('0x77'),{'event':_0xb17b('0x78'),'message':_0x43a9f5[_0xb17b('0x25')]},client9002)[_0xb17b('0x34')](function(){return _0x43a9f5;});}return _0x43a9f5;}return null;})[_0xb17b('0x34')](respondWithResult(_0x2401d0,null))[_0xb17b('0x50')](handleError(_0x2401d0,null));};var interaction_log=require(_0xb17b('0x14'))(_0xb17b('0x79'));exports[_0xb17b('0x31')]=function(_0x71900c,_0x2df624,_0x235cde){var _0x406d43={'agent':{},'channel':_0xb17b('0x5a')};if(_0x71900c['body']['id']){delete _0x71900c[_0xb17b('0x56')]['id'];}_0x71900c['body'][_0xb17b('0x5e')]=_0x71900c[_0xb17b('0x56')][_0xb17b('0x5e')]||_0x71900c['user']['id'];_0x406d43[_0xb17b('0x6f')]['id']=_0x71900c['body'][_0xb17b('0x5e')];return db['SmsMessage'][_0xb17b('0x60')]({'where':{'id':_0x71900c['params']['id'],'UserId':null}})[_0xb17b('0x34')](handleEntityNotFound(_0x2df624,null))[_0xb17b('0x34')](function(_0x29ba01){if(_0x29ba01){_0x406d43[_0xb17b('0x25')]=_0x29ba01[_0xb17b('0x65')]({'plain':!![]});return db['SmsInteraction'][_0xb17b('0x60')]({'where':{'id':_0x29ba01[_0xb17b('0x61')]}});}return null;})[_0xb17b('0x34')](handleEntityNotFound(_0x2df624,null))[_0xb17b('0x34')](function(_0x51142a){if(_0x51142a){_0x406d43[_0xb17b('0x68')]=_0x51142a[_0xb17b('0x65')]({'plain':!![]});interaction_log[_0xb17b('0x26')](_0xb17b('0x7a'),_0x71900c['user']['id'],_0x71900c[_0xb17b('0x5f')][_0xb17b('0x3f')],_0x71900c['user'][_0xb17b('0x67')],_0x406d43[_0xb17b('0x68')]['id'],_0x71900c['body']?JSON['stringify'](_0x71900c[_0xb17b('0x56')]):_0xb17b('0x69'));return respondWithRpcPromise(_0xb17b('0x7b'),_0xb17b('0x7c'),_0x406d43);}return null;})['then'](function(_0x1502d1){var _0x150679='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1502d1[_0xb17b('0x25')]['ContactId'];return db[_0xb17b('0x6c')][_0xb17b('0x40')](_0x150679,{'type':db[_0xb17b('0x7d')]['QueryTypes'][_0xb17b('0x7e')],'raw':!![]})[_0xb17b('0x34')](function(_0x39d61d){return _0x39d61d;});})[_0xb17b('0x34')](function(_0x1d1edc){if(_0x1d1edc){_0x406d43[_0xb17b('0x25')][_0xb17b('0x6e')]=_0x1d1edc[0x0];if(!_0x71900c[_0xb17b('0x56')][_0xb17b('0x5e')])return;return db[_0xb17b('0x7f')]['find']({'where':{'id':_0x71900c['body'][_0xb17b('0x5e')],'role':_0xb17b('0x6f')},'attributes':['id',_0xb17b('0x3f'),_0xb17b('0x70'),_0xb17b('0x80'),_0xb17b('0x71')],'raw':!![]});}return null;})[_0xb17b('0x34')](function(_0x2e8b00){if(!_0x2e8b00)return null;_0x406d43[_0xb17b('0x25')]['agent']=_0x2e8b00;return _0x406d43;})[_0xb17b('0x34')](function(_0x12bc3d){if(_0x12bc3d){_0x12bc3d[_0xb17b('0x25')][_0xb17b('0x73')]=util[_0xb17b('0x64')](_0xb17b('0x81'),_0x71900c[_0xb17b('0x5f')][_0xb17b('0x3f')]);_0x12bc3d[_0xb17b('0x25')]['channel']=_0x406d43['channel'];_0x12bc3d[_0xb17b('0x25')][_0xb17b('0x75')]=_0x406d43[_0xb17b('0x74')];_0x12bc3d[_0xb17b('0x25')][_0xb17b('0x76')]=_0xb17b('0x31');respondWithRpcPromise(_0xb17b('0x77'),_0xb17b('0x77'),{'event':_0xb17b('0x82'),'message':_0x12bc3d['message']},client9002);return _0x406d43;}return null;})[_0xb17b('0x34')](respondWithResult(_0x2df624,null))[_0xb17b('0x50')](handleError(_0x2df624,null));};exports[_0xb17b('0x29')]=function(_0xdc0c67,_0x5cbe2b,_0x55e00e){if(_0xdc0c67[_0xb17b('0x56')]['id']){delete _0xdc0c67[_0xb17b('0x56')]['id'];}var _0x2e0d2d;return db[_0xb17b('0x38')][_0xb17b('0x60')]({'where':{'id':_0xdc0c67[_0xb17b('0x57')]['id']}})[_0xb17b('0x34')](handleEntityNotFound(_0x5cbe2b,null))[_0xb17b('0x34')](function(_0x20f08c){if(_0x20f08c){_0x2e0d2d=_0x20f08c;return db['SmsAccount'][_0xb17b('0x60')]({'where':{'id':_0x20f08c[_0xb17b('0x83')]}});}})[_0xb17b('0x34')](handleEntityNotFound(_0x5cbe2b,null))['then'](function(_0x30a9d7){if(_0x30a9d7){logger[_0xb17b('0x84')](_0xb17b('0x21'),_0xb17b('0x29'),'received\x20delivery\x20report\x20from',_0x30a9d7[_0xb17b('0x3b')],util[_0xb17b('0x85')](_0xdc0c67[_0xb17b('0x56')],{'showHidden':![],'depth':null}));switch(_0x30a9d7[_0xb17b('0x3b')]){case _0xb17b('0x86'):if(_0xdc0c67['body'][_0xb17b('0x87')]&&_0xdc0c67[_0xb17b('0x56')][_0xb17b('0x87')]===_0x2e0d2d[_0xb17b('0x88')]){return _0x2e0d2d[_0xb17b('0x33')]({'read':!![]});}else{logger[_0xb17b('0x23')](_0xb17b('0x89'),_0xb17b('0x29'),_0xb17b('0x86'),util['inspect'](_0xdc0c67[_0xb17b('0x56')],{'showHidden':![],'depth':null}));}break;case _0xb17b('0x8a'):if(_0xdc0c67['body'][_0xb17b('0x8b')]&&_0xdc0c67['body'][_0xb17b('0x8b')]===_0x2e0d2d['messageId']&&_[_0xb17b('0x8c')](['sent',_0xb17b('0x8d')],_0xdc0c67[_0xb17b('0x56')][_0xb17b('0x8e')])>=0x0){return _0x2e0d2d[_0xb17b('0x33')]({'read':!![]});}else{logger[_0xb17b('0x23')](_0xb17b('0x89'),'status',_0xb17b('0x8f'),util[_0xb17b('0x85')](_0xdc0c67[_0xb17b('0x56')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0xb66527=_0xdc0c67[_0xb17b('0x56')]['results'][0x0];if(_0xb66527[_0xb17b('0x29')][_0xb17b('0x90')]===_0xb17b('0x91')){return _0x2e0d2d[_0xb17b('0x33')]({'read':!![]});}else{logger[_0xb17b('0x23')](_0xb17b('0x89'),_0xb17b('0x29'),_0xb17b('0x92'),util[_0xb17b('0x85')](_0xdc0c67['body'],{'showHidden':![],'depth':null}));}break;}return _0x2e0d2d;}})[_0xb17b('0x34')](respondWithResult(_0x5cbe2b,null))[_0xb17b('0x50')](handleError(_0x5cbe2b,null));};
\ No newline at end of file
+var _0x90d0=['../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','./smsMessage.socket','register','jayson/promise','client','http','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','reject','save','destroy','name','SmsMessage','rawAttributes','fieldName','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','show','params','find','create','body','update','describe','sms-interactions','accept','sms','read','readAt','UserId','user','get','SmsInteraction','isNil','format','YYYY-MM-DD\x20HH:mm:ss','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','stringify','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','agent','fullname','email','internal','manual','interface','channel','EventManager','acceptmessage','SmsInteractionId','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','RejectMessage','rejectMessage','sequelize','SIP/%s','motionChannel','event','rejectmessage','SmsAccount','SmsAccountId','debug','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','plivo','MessageUUID','indexOf','Status','results','groupName','SmsAccount,\x20%s,\x20%s,\x20%s','infobip','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/parsers/qs'];(function(_0x4d390c,_0x4e1226){var _0x3e6786=function(_0x5a8ab8){while(--_0x5a8ab8){_0x4d390c['push'](_0x4d390c['shift']());}};_0x3e6786(++_0x4e1226);}(_0x90d0,0x10f));var _0x090d=function(_0x3c7ae2,_0x5504e3){_0x3c7ae2=_0x3c7ae2-0x0;var _0x39f0d7=_0x90d0[_0x3c7ae2];return _0x39f0d7;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x090d('0x0'));var jsonpatch=require(_0x090d('0x1'));var rp=require('request-promise');var moment=require(_0x090d('0x2'));var BPromise=require(_0x090d('0x3'));var Mustache=require(_0x090d('0x4'));var util=require(_0x090d('0x5'));var path=require(_0x090d('0x6'));var sox=require(_0x090d('0x7'));var csv=require(_0x090d('0x8'));var ejs=require(_0x090d('0x9'));var fs=require('fs');var fs_extra=require(_0x090d('0xa'));var _=require(_0x090d('0xb'));var squel=require(_0x090d('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x090d('0xd'));var toCsv=require(_0x090d('0x8'));var querystring=require(_0x090d('0xe'));var Papa=require(_0x090d('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x090d('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x090d('0x11'))(_0x090d('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x090d('0x13'));var db=require(_0x090d('0x14'))['db'];config[_0x090d('0x15')]=_[_0x090d('0x16')](config[_0x090d('0x15')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x090d('0x15')]));require(_0x090d('0x17'))[_0x090d('0x18')](socket);var jayson=require(_0x090d('0x19'));var client=jayson[_0x090d('0x1a')][_0x090d('0x1b')]({'port':0x232c});var client9002=jayson[_0x090d('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x149a21,_0x375772,_0x48eb74,_0x2a6b07){return new BPromise(function(_0x3e75bf,_0x23ed2f){var _0x462e84=_0x2a6b07||client;return _0x462e84[_0x090d('0x1c')](_0x149a21,_0x48eb74)[_0x090d('0x1d')](function(_0x3e5f40){logger[_0x090d('0x1e')](_0x090d('0x1f'),_0x375772,_0x090d('0x20'));logger['debug'](_0x090d('0x21'),_0x375772,_0x090d('0x20'),JSON['stringify'](_0x3e5f40));if(_0x3e5f40[_0x090d('0x22')]){if(_0x3e5f40[_0x090d('0x22')][_0x090d('0x23')]===0x1f4){logger[_0x090d('0x22')]('SmsMessage,\x20%s,\x20%s',_0x375772,_0x3e5f40[_0x090d('0x22')][_0x090d('0x24')]);return _0x23ed2f(_0x3e5f40[_0x090d('0x22')][_0x090d('0x24')]);}logger[_0x090d('0x22')](_0x090d('0x1f'),_0x375772,_0x3e5f40['error']['message']);return _0x3e75bf(_0x3e5f40[_0x090d('0x22')]['message']);}else{logger['info'](_0x090d('0x1f'),_0x375772,_0x090d('0x20'));_0x3e75bf(_0x3e5f40[_0x090d('0x25')][_0x090d('0x24')]);}})[_0x090d('0x26')](function(_0x4f65c9){logger['error'](_0x090d('0x1f'),_0x375772,_0x4f65c9);_0x23ed2f(_0x4f65c9);});});}function respondWithStatusCode(_0x2ee5cb,_0x41adc6){_0x41adc6=_0x41adc6||0xcc;return function(_0x4fc4ea){if(_0x4fc4ea){return _0x2ee5cb[_0x090d('0x27')](_0x41adc6);}return _0x2ee5cb[_0x090d('0x28')](_0x41adc6)[_0x090d('0x29')]();};}function respondWithResult(_0x5c652f,_0x1f0a94){_0x1f0a94=_0x1f0a94||0xc8;return function(_0x1daf97){if(_0x1daf97){return _0x5c652f[_0x090d('0x28')](_0x1f0a94)['json'](_0x1daf97);}};}function respondWithFilteredResult(_0x3d0811,_0x48f858){return function(_0x476292){if(_0x476292){var _0x3b2527=typeof _0x48f858['offset']==='undefined'&&typeof _0x48f858['limit']===_0x090d('0x2a');var _0x4895fa=_0x476292[_0x090d('0x2b')];var _0x3c37e1=_0x3b2527?0x0:_0x48f858[_0x090d('0x2c')];var _0xd017c4=_0x3b2527?_0x476292[_0x090d('0x2b')]:_0x48f858['offset']+_0x48f858[_0x090d('0x2d')];var _0x38a8c6;if(_0xd017c4>=_0x4895fa){_0xd017c4=_0x4895fa;_0x38a8c6=0xc8;}else{_0x38a8c6=0xce;}_0x3d0811[_0x090d('0x28')](_0x38a8c6);return _0x3d0811[_0x090d('0x2e')](_0x090d('0x2f'),_0x3c37e1+'-'+_0xd017c4+'/'+_0x4895fa)[_0x090d('0x30')](_0x476292);}return null;};}function patchUpdates(_0x5645e1){return function(_0x2a2c23){try{jsonpatch['apply'](_0x2a2c23,_0x5645e1,!![]);}catch(_0xe42ef8){return BPromise[_0x090d('0x31')](_0xe42ef8);}return _0x2a2c23[_0x090d('0x32')]();};}function saveUpdates(_0x4df65a,_0x51b5e4){return function(_0x4406f7){if(_0x4406f7){return _0x4406f7['update'](_0x4df65a)['then'](function(_0x10cefe){return _0x10cefe;});}return null;};}function removeEntity(_0x205834,_0x3aac79){return function(_0x51ae72){if(_0x51ae72){return _0x51ae72[_0x090d('0x33')]()[_0x090d('0x1d')](function(){_0x205834[_0x090d('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0x55d18d,_0x4eee88){return function(_0x5094e8){if(!_0x5094e8){_0x55d18d[_0x090d('0x27')](0x194);}return _0x5094e8;};}function handleError(_0x24b7f6,_0x8cb62b){_0x8cb62b=_0x8cb62b||0x1f4;return function(_0x4c14b9){logger[_0x090d('0x22')](_0x4c14b9['stack']);if(_0x4c14b9[_0x090d('0x34')]){delete _0x4c14b9[_0x090d('0x34')];}_0x24b7f6['status'](_0x8cb62b)['send'](_0x4c14b9);};}exports['index']=function(_0x7d4175,_0x10e097){var _0x34034a={},_0x4daa37={},_0x57ad25={'count':0x0,'rows':[]};var _0x4bde5a=_['map'](db[_0x090d('0x35')][_0x090d('0x36')],function(_0x1df91f){return{'name':_0x1df91f[_0x090d('0x37')],'type':_0x1df91f['type']['key']};});_0x4daa37[_0x090d('0x38')]=_[_0x090d('0x39')](_0x4bde5a,_0x090d('0x34'));_0x4daa37[_0x090d('0x3a')]=_[_0x090d('0x3b')](_0x7d4175['query']);_0x4daa37[_0x090d('0x3c')]=_[_0x090d('0x3d')](_0x4daa37[_0x090d('0x38')],_0x4daa37[_0x090d('0x3a')]);_0x34034a[_0x090d('0x3e')]=_[_0x090d('0x3d')](_0x4daa37['model'],qs[_0x090d('0x3f')](_0x7d4175['query'][_0x090d('0x3f')]));_0x34034a[_0x090d('0x3e')]=_0x34034a[_0x090d('0x3e')][_0x090d('0x40')]?_0x34034a[_0x090d('0x3e')]:_0x4daa37[_0x090d('0x38')];if(!_0x7d4175['query'][_0x090d('0x41')](_0x090d('0x42'))){_0x34034a[_0x090d('0x2d')]=qs['limit'](_0x7d4175[_0x090d('0x3a')][_0x090d('0x2d')]);_0x34034a[_0x090d('0x2c')]=qs[_0x090d('0x2c')](_0x7d4175[_0x090d('0x3a')][_0x090d('0x2c')]);}_0x34034a[_0x090d('0x43')]=qs[_0x090d('0x44')](_0x7d4175[_0x090d('0x3a')]['sort']);_0x34034a[_0x090d('0x45')]=qs[_0x090d('0x3c')](_[_0x090d('0x46')](_0x7d4175[_0x090d('0x3a')],_0x4daa37['filters']),_0x4bde5a);if(_0x7d4175[_0x090d('0x3a')][_0x090d('0x47')]){_0x34034a[_0x090d('0x45')]=_[_0x090d('0x48')](_0x34034a[_0x090d('0x45')],{'$or':_[_0x090d('0x39')](_0x4bde5a,function(_0x594808){if(_0x594808[_0x090d('0x49')]!==_0x090d('0x4a')){var _0x306159={};_0x306159[_0x594808[_0x090d('0x34')]]={'$like':'%'+_0x7d4175[_0x090d('0x3a')][_0x090d('0x47')]+'%'};return _0x306159;}})});}_0x34034a=_[_0x090d('0x48')]({},_0x34034a,_0x7d4175[_0x090d('0x4b')]);var _0x476734={'where':_0x34034a[_0x090d('0x45')]};return db['SmsMessage'][_0x090d('0x2b')](_0x476734)[_0x090d('0x1d')](function(_0x53d44c){_0x57ad25[_0x090d('0x2b')]=_0x53d44c;if(_0x7d4175[_0x090d('0x3a')][_0x090d('0x4c')]){_0x34034a[_0x090d('0x4d')]=[{'all':!![]}];}return db[_0x090d('0x35')][_0x090d('0x4e')](_0x34034a);})[_0x090d('0x1d')](function(_0x591c8e){_0x57ad25['rows']=_0x591c8e;return _0x57ad25;})['then'](respondWithFilteredResult(_0x10e097,_0x34034a))[_0x090d('0x26')](handleError(_0x10e097,null));};exports[_0x090d('0x4f')]=function(_0x395127,_0x44be34){var _0x3b5c37={'raw':!![],'where':{'id':_0x395127[_0x090d('0x50')]['id']}},_0x13071c={};_0x13071c[_0x090d('0x38')]=_['keys'](db['SmsMessage'][_0x090d('0x36')]);_0x13071c[_0x090d('0x3a')]=_['keys'](_0x395127[_0x090d('0x3a')]);_0x13071c[_0x090d('0x3c')]=_[_0x090d('0x3d')](_0x13071c[_0x090d('0x38')],_0x13071c[_0x090d('0x3a')]);_0x3b5c37['attributes']=_[_0x090d('0x3d')](_0x13071c[_0x090d('0x38')],qs[_0x090d('0x3f')](_0x395127[_0x090d('0x3a')][_0x090d('0x3f')]));_0x3b5c37['attributes']=_0x3b5c37[_0x090d('0x3e')][_0x090d('0x40')]?_0x3b5c37['attributes']:_0x13071c[_0x090d('0x38')];if(_0x395127[_0x090d('0x3a')][_0x090d('0x4c')]){_0x3b5c37[_0x090d('0x4d')]=[{'all':!![]}];}_0x3b5c37=_[_0x090d('0x48')]({},_0x3b5c37,_0x395127[_0x090d('0x4b')]);return db[_0x090d('0x35')][_0x090d('0x51')](_0x3b5c37)['then'](handleEntityNotFound(_0x44be34,null))['then'](respondWithResult(_0x44be34,null))['catch'](handleError(_0x44be34,null));};exports[_0x090d('0x52')]=function(_0x36a6a7,_0x23b855){return db[_0x090d('0x35')][_0x090d('0x52')](_0x36a6a7[_0x090d('0x53')],{})['then'](respondWithResult(_0x23b855,0xc9))['catch'](handleError(_0x23b855,null));};exports[_0x090d('0x54')]=function(_0x10080f,_0x4e985f){if(_0x10080f[_0x090d('0x53')]['id']){delete _0x10080f[_0x090d('0x53')]['id'];}return db[_0x090d('0x35')][_0x090d('0x51')]({'where':{'id':_0x10080f[_0x090d('0x50')]['id']}})[_0x090d('0x1d')](handleEntityNotFound(_0x4e985f,null))[_0x090d('0x1d')](saveUpdates(_0x10080f[_0x090d('0x53')],null))[_0x090d('0x1d')](respondWithResult(_0x4e985f,null))[_0x090d('0x26')](handleError(_0x4e985f,null));};exports['destroy']=function(_0x2e05cf,_0x242261){return db[_0x090d('0x35')][_0x090d('0x51')]({'where':{'id':_0x2e05cf['params']['id']}})[_0x090d('0x1d')](handleEntityNotFound(_0x242261,null))[_0x090d('0x1d')](removeEntity(_0x242261,null))[_0x090d('0x26')](handleError(_0x242261,null));};exports[_0x090d('0x55')]=function(_0xf6bf50,_0x56131e){return db[_0x090d('0x35')]['describe']()['then'](respondWithResult(_0x56131e,null))[_0x090d('0x26')](handleError(_0x56131e,null));};var interaction_log=require(_0x090d('0x11'))(_0x090d('0x56'));exports[_0x090d('0x57')]=function(_0x3db9ff,_0x4e960a,_0x5bc860){var _0x29afcd={'agent':{},'channel':_0x090d('0x58')};if(_0x3db9ff[_0x090d('0x53')]['id']){delete _0x3db9ff[_0x090d('0x53')]['id'];}_0x3db9ff[_0x090d('0x53')][_0x090d('0x59')]=!![];_0x3db9ff[_0x090d('0x53')][_0x090d('0x5a')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x3db9ff[_0x090d('0x53')]['UserId']=_0x3db9ff[_0x090d('0x53')][_0x090d('0x5b')]||_0x3db9ff[_0x090d('0x5c')]['id'];_0x29afcd['agent']['id']=_0x3db9ff['body'][_0x090d('0x5b')];return db['SmsMessage'][_0x090d('0x51')]({'where':{'id':_0x3db9ff[_0x090d('0x50')]['id'],'UserId':null}})[_0x090d('0x1d')](handleEntityNotFound(_0x4e960a,null))[_0x090d('0x1d')](saveUpdates(_0x3db9ff['body'],null))['then'](function(_0x203b76){if(_0x203b76){_0x29afcd['message']=_0x203b76[_0x090d('0x5d')]({'plain':!![]});return db[_0x090d('0x5e')][_0x090d('0x51')]({'where':{'id':_0x203b76['SmsInteractionId']}});}return null;})[_0x090d('0x1d')](handleEntityNotFound(_0x4e960a,null))[_0x090d('0x1d')](function(_0x25d779){if(_0x25d779){return _0x25d779[_0x090d('0x54')]({'UserId':_0x3db9ff[_0x090d('0x53')][_0x090d('0x5b')],'read1stAt':_[_0x090d('0x5f')](_0x25d779['read1stAt'])?moment()[_0x090d('0x60')](_0x090d('0x61')):undefined});}return null;})['then'](function(_0x2f1d7a){if(_0x2f1d7a){_0x29afcd[_0x090d('0x62')]=_0x2f1d7a['get']({'plain':!![]});interaction_log[_0x090d('0x1e')](_0x090d('0x63'),_0x3db9ff[_0x090d('0x5c')]['id'],_0x3db9ff[_0x090d('0x5c')][_0x090d('0x34')],_0x3db9ff[_0x090d('0x5c')]['role'],_0x29afcd[_0x090d('0x62')]['id'],_0x3db9ff[_0x090d('0x53')]?JSON[_0x090d('0x64')](_0x3db9ff['body']):'null');return respondWithRpcPromise(_0x090d('0x65'),'acceptMessage',_0x29afcd);}return null;})[_0x090d('0x1d')](function(_0x254dc2){var _0x2ddffa=_0x090d('0x66')+_0x254dc2['message'][_0x090d('0x67')];return db['sequelize']['query'](_0x2ddffa,{'type':db[_0x090d('0x68')][_0x090d('0x69')][_0x090d('0x6a')],'raw':!![]})['then'](function(_0x42d965){return _0x42d965;});})[_0x090d('0x1d')](function(_0x1a03ea){if(_0x1a03ea){_0x29afcd[_0x090d('0x24')][_0x090d('0x6b')]=_0x1a03ea[0x0];if(!_0x3db9ff[_0x090d('0x53')]['UserId'])return;return db['User'][_0x090d('0x51')]({'where':{'id':_0x3db9ff['body'][_0x090d('0x5b')],'role':_0x090d('0x6c')},'attributes':['id',_0x090d('0x34'),_0x090d('0x6d'),_0x090d('0x6e'),_0x090d('0x6f')],'raw':!![]});}return null;})[_0x090d('0x1d')](function(_0x560432){if(!_0x560432)return null;_0x29afcd['message'][_0x090d('0x6c')]=_0x560432;return _0x29afcd;})[_0x090d('0x1d')](function(_0x2f15e8){if(_0x2f15e8){if(_0x3db9ff[_0x090d('0x53')][_0x090d('0x70')]){_0x29afcd['message'][_0x090d('0x71')]=util[_0x090d('0x60')]('SIP/%s',_0x3db9ff[_0x090d('0x5c')]['name']);_0x29afcd['message'][_0x090d('0x72')]=_0x29afcd[_0x090d('0x72')];_0x29afcd['message']['motionChannel']=_0x29afcd['channel'];_0x29afcd[_0x090d('0x24')]['event']='accept';return respondWithRpcPromise(_0x090d('0x73'),_0x090d('0x73'),{'event':_0x090d('0x74'),'message':_0x29afcd[_0x090d('0x24')]},client9002)[_0x090d('0x1d')](function(){return _0x29afcd;});}return _0x29afcd;}return null;})['then'](respondWithResult(_0x4e960a,null))[_0x090d('0x26')](handleError(_0x4e960a,null));};var interaction_log=require(_0x090d('0x11'))('sms-interactions');exports[_0x090d('0x31')]=function(_0x3f8b86,_0xb81878,_0x20cba0){var _0x316aa9={'agent':{},'channel':_0x090d('0x58')};if(_0x3f8b86[_0x090d('0x53')]['id']){delete _0x3f8b86[_0x090d('0x53')]['id'];}_0x3f8b86[_0x090d('0x53')]['UserId']=_0x3f8b86['body'][_0x090d('0x5b')]||_0x3f8b86[_0x090d('0x5c')]['id'];_0x316aa9[_0x090d('0x6c')]['id']=_0x3f8b86['body'][_0x090d('0x5b')];return db[_0x090d('0x35')][_0x090d('0x51')]({'where':{'id':_0x3f8b86[_0x090d('0x50')]['id'],'UserId':null}})[_0x090d('0x1d')](handleEntityNotFound(_0xb81878,null))[_0x090d('0x1d')](function(_0x44e365){if(_0x44e365){_0x316aa9['message']=_0x44e365[_0x090d('0x5d')]({'plain':!![]});return db[_0x090d('0x5e')][_0x090d('0x51')]({'where':{'id':_0x44e365[_0x090d('0x75')]}});}return null;})['then'](handleEntityNotFound(_0xb81878,null))[_0x090d('0x1d')](function(_0x17038b){if(_0x17038b){_0x316aa9[_0x090d('0x62')]=_0x17038b[_0x090d('0x5d')]({'plain':!![]});interaction_log[_0x090d('0x1e')](_0x090d('0x76'),_0x3f8b86[_0x090d('0x5c')]['id'],_0x3f8b86['user'][_0x090d('0x34')],_0x3f8b86['user'][_0x090d('0x77')],_0x316aa9['interaction']['id'],_0x3f8b86[_0x090d('0x53')]?JSON[_0x090d('0x64')](_0x3f8b86['body']):_0x090d('0x78'));return respondWithRpcPromise(_0x090d('0x79'),_0x090d('0x7a'),_0x316aa9);}return null;})[_0x090d('0x1d')](function(_0x57e7b4){var _0x217af8=_0x090d('0x66')+_0x57e7b4[_0x090d('0x24')][_0x090d('0x67')];return db[_0x090d('0x7b')][_0x090d('0x3a')](_0x217af8,{'type':db[_0x090d('0x68')][_0x090d('0x69')][_0x090d('0x6a')],'raw':!![]})[_0x090d('0x1d')](function(_0x4631c8){return _0x4631c8;});})[_0x090d('0x1d')](function(_0x19cc0f){if(_0x19cc0f){_0x316aa9['message'][_0x090d('0x6b')]=_0x19cc0f[0x0];if(!_0x3f8b86[_0x090d('0x53')][_0x090d('0x5b')])return;return db['User'][_0x090d('0x51')]({'where':{'id':_0x3f8b86[_0x090d('0x53')][_0x090d('0x5b')],'role':_0x090d('0x6c')},'attributes':['id',_0x090d('0x34'),_0x090d('0x6d'),_0x090d('0x6e'),'internal'],'raw':!![]});}return null;})[_0x090d('0x1d')](function(_0x10fc56){if(!_0x10fc56)return null;_0x316aa9[_0x090d('0x24')][_0x090d('0x6c')]=_0x10fc56;return _0x316aa9;})['then'](function(_0x426438){if(_0x426438){_0x426438['message'][_0x090d('0x71')]=util[_0x090d('0x60')](_0x090d('0x7c'),_0x3f8b86['user']['name']);_0x426438[_0x090d('0x24')]['channel']=_0x316aa9['channel'];_0x426438[_0x090d('0x24')][_0x090d('0x7d')]=_0x316aa9[_0x090d('0x72')];_0x426438['message'][_0x090d('0x7e')]='reject';respondWithRpcPromise(_0x090d('0x73'),_0x090d('0x73'),{'event':_0x090d('0x7f'),'message':_0x426438['message']},client9002);return _0x316aa9;}return null;})['then'](respondWithResult(_0xb81878,null))[_0x090d('0x26')](handleError(_0xb81878,null));};exports[_0x090d('0x28')]=function(_0x1d6dcc,_0x3161eb,_0x126210){if(_0x1d6dcc[_0x090d('0x53')]['id']){delete _0x1d6dcc[_0x090d('0x53')]['id'];}var _0x33700b;return db[_0x090d('0x35')][_0x090d('0x51')]({'where':{'id':_0x1d6dcc[_0x090d('0x50')]['id']}})[_0x090d('0x1d')](handleEntityNotFound(_0x3161eb,null))[_0x090d('0x1d')](function(_0xaa4293){if(_0xaa4293){_0x33700b=_0xaa4293;return db[_0x090d('0x80')][_0x090d('0x51')]({'where':{'id':_0xaa4293[_0x090d('0x81')]}});}})[_0x090d('0x1d')](handleEntityNotFound(_0x3161eb,null))[_0x090d('0x1d')](function(_0x40d25a){if(_0x40d25a){logger[_0x090d('0x82')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x090d('0x28'),_0x090d('0x83'),_0x40d25a[_0x090d('0x49')],util[_0x090d('0x84')](_0x1d6dcc[_0x090d('0x53')],{'showHidden':![],'depth':null}));switch(_0x40d25a[_0x090d('0x49')]){case _0x090d('0x85'):if(_0x1d6dcc[_0x090d('0x53')][_0x090d('0x86')]&&_0x1d6dcc[_0x090d('0x53')][_0x090d('0x86')]===_0x33700b[_0x090d('0x87')]){return _0x33700b[_0x090d('0x54')]({'read':!![]});}else{logger[_0x090d('0x22')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x090d('0x28'),_0x090d('0x85'),util[_0x090d('0x84')](_0x1d6dcc[_0x090d('0x53')],{'showHidden':![],'depth':null}));}break;case _0x090d('0x88'):if(_0x1d6dcc[_0x090d('0x53')][_0x090d('0x89')]&&_0x1d6dcc[_0x090d('0x53')][_0x090d('0x89')]===_0x33700b[_0x090d('0x87')]&&_[_0x090d('0x8a')](['sent','delivered'],_0x1d6dcc[_0x090d('0x53')][_0x090d('0x8b')])>=0x0){return _0x33700b['update']({'read':!![]});}else{logger[_0x090d('0x22')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x090d('0x28'),'plivio',util[_0x090d('0x84')](_0x1d6dcc['body'],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x4253cc=_0x1d6dcc[_0x090d('0x53')][_0x090d('0x8c')][0x0];if(_0x4253cc['status'][_0x090d('0x8d')]==='DELIVERED'){return _0x33700b[_0x090d('0x54')]({'read':!![]});}else{logger['error'](_0x090d('0x8e'),_0x090d('0x28'),_0x090d('0x8f'),util[_0x090d('0x84')](_0x1d6dcc[_0x090d('0x53')],{'showHidden':![],'depth':null}));}break;}return _0x33700b;}})[_0x090d('0x1d')](respondWithResult(_0x3161eb,null))['catch'](handleError(_0x3161eb,null));};
\ No newline at end of file
index 4e02f80..d812f4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb983=['hook','exports','../../mysqldb','setMaxListeners','save','update','remove','hasOwnProperty'];(function(_0x1c4c24,_0x154c79){var _0x1c033d=function(_0x155415){while(--_0x155415){_0x1c4c24['push'](_0x1c4c24['shift']());}};_0x1c033d(++_0x154c79);}(_0xb983,0x15a));var _0x3b98=function(_0x439d59,_0x11ccdf){_0x439d59=_0x439d59-0x0;var _0x3670c7=_0xb983[_0x439d59];return _0x3670c7;};'use strict';var EventEmitter=require('events');var SmsMessage=require(_0x3b98('0x0'))['db']['SmsMessage'];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x3b98('0x1')](0x0);var events={'afterCreate':_0x3b98('0x2'),'afterUpdate':_0x3b98('0x3'),'afterDestroy':_0x3b98('0x4')};function emitEvent(_0x458c86){return function(_0x297067,_0x13ed54,_0x4471a1){SmsMessageEvents['emit'](_0x458c86+':'+_0x297067['id'],_0x297067);SmsMessageEvents['emit'](_0x458c86,_0x297067);_0x4471a1(null);};}for(var e in events){if(events[_0x3b98('0x5')](e)){var event=events[e];SmsMessage[_0x3b98('0x6')](e,emitEvent(event));}}module[_0x3b98('0x7')]=SmsMessageEvents;
\ No newline at end of file
+var _0x86d4=['SmsMessage','update','remove','emit','hook','exports','events','../../mysqldb'];(function(_0x2bdf00,_0x494ed2){var _0x39752e=function(_0x5404eb){while(--_0x5404eb){_0x2bdf00['push'](_0x2bdf00['shift']());}};_0x39752e(++_0x494ed2);}(_0x86d4,0x1c6));var _0x486d=function(_0x133b42,_0x730192){_0x133b42=_0x133b42-0x0;var _0xe67c95=_0x86d4[_0x133b42];return _0xe67c95;};'use strict';var EventEmitter=require(_0x486d('0x0'));var SmsMessage=require(_0x486d('0x1'))['db'][_0x486d('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x486d('0x3'),'afterDestroy':_0x486d('0x4')};function emitEvent(_0x5dc5eb){return function(_0x55f975,_0x2b54ba,_0x343c2){SmsMessageEvents['emit'](_0x5dc5eb+':'+_0x55f975['id'],_0x55f975);SmsMessageEvents[_0x486d('0x5')](_0x5dc5eb,_0x55f975);_0x343c2(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsMessage[_0x486d('0x6')](e,emitEvent(event));}}module[_0x486d('0x7')]=SmsMessageEvents;
\ No newline at end of file
index c14fa47..9d9cef7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f51=['/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','Missing\x20parameters:\x20base_url','apiKey','text','keys','sort','createHash','md5','digest','hex','signature=','id_sms','csc','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','status','message','Token\x20not\x20received','finally','utf8mb4','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','./smsMessage.attributes','exports','define','SmsMessage','sms_messages','messageId','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','SmsInteractionId','SmsInteraction','findOne','then','update','createdAt','error','SmsAccount','find','SmsAccountId','type','twilio','authToken','accountSid','messages','create','phone','remote','/api/sms/messages/','token','sid','catch','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=','split','POST','session_key','total_sent','read','Missing\x20parameters:\x20username,\x20password','https://smsapi.connectel.se/api/v2/send/','requestid','deliveryReport','connectel','Missing\x20parameters:\x20authToken','clicksend','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','queued_count','head','message_id','clickSend','/status?token=','authId','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','plivo','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl'];(function(_0x3dd112,_0x5b87e9){var _0x281bd9=function(_0x8214f7){while(--_0x8214f7){_0x3dd112['push'](_0x3dd112['shift']());}};_0x281bd9(++_0x5b87e9);}(_0x8f51,0x120));var _0x18f5=function(_0x4914e2,_0x48be8f){_0x4914e2=_0x4914e2-0x0;var _0x2dcd07=_0x8f51[_0x4914e2];return _0x2dcd07;};'use strict';var _=require(_0x18f5('0x0'));var util=require(_0x18f5('0x1'));var logger=require(_0x18f5('0x2'))(_0x18f5('0x3'));var moment=require(_0x18f5('0x4'));var BPromise=require('bluebird');var rp=require(_0x18f5('0x5'));var fs=require('fs');var path=require(_0x18f5('0x6'));var rimraf=require('rimraf');var config=require(_0x18f5('0x7'));var attributes=require(_0x18f5('0x8'));module[_0x18f5('0x9')]=function(_0x2794c0,_0x2b7085){return _0x2794c0[_0x18f5('0xa')](_0x18f5('0xb'),attributes,{'tableName':_0x18f5('0xc'),'paranoid':![],'indexes':[{'name':_0x18f5('0xd'),'fields':[_0x18f5('0xd')]},{'name':'fti_sms_messages','fields':[_0x18f5('0xe')],'type':_0x18f5('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x44e42b,_0x351adf,_0x2fbcc5){var _0x5dc2a5=_0x2794c0[_0x18f5('0x10')];var _0x808953=_0x44e42b[_0x18f5('0x11')]({'plain':!![]});if(_0x808953[_0x18f5('0x12')][_0x18f5('0x13')]()==='in'||_0x808953['direction'][_0x18f5('0x13')]()===_0x18f5('0x14')&&!_0x808953[_0x18f5('0x15')]&&!_[_0x18f5('0x16')](_0x808953[_0x18f5('0x17')])&&!_[_0x18f5('0x16')](_0x808953[_0x18f5('0x18')])){_0x5dc2a5[_0x18f5('0x19')][_0x18f5('0x1a')]({'where':{'id':_0x808953[_0x18f5('0x18')]}})[_0x18f5('0x1b')](function(_0x4b4046){if(_0x4b4046){_0x4b4046[_0x18f5('0x1c')]({'lastMsgAt':_0x808953[_0x18f5('0x1d')],'lastMsgDirection':_0x808953[_0x18f5('0x12')]['toLowerCase']()});}})['catch'](function(_0x1b3019){console[_0x18f5('0x1e')](_0x1b3019);});}if(_0x808953[_0x18f5('0x12')]===_0x18f5('0x14')&&!_0x808953['secret']){var _0xa812aa;_0x5dc2a5[_0x18f5('0x1f')][_0x18f5('0x20')]({'where':{'id':_0x808953[_0x18f5('0x21')]},'raw':!![]})[_0x18f5('0x1b')](function(_0x31e011){_0xa812aa=_0x31e011;if(_0xa812aa&&_0xa812aa['type']){switch(_0xa812aa[_0x18f5('0x22')]){case'twilio':var _0x2f3a76=require(_0x18f5('0x23'));if(_0xa812aa['accountSid']&&_0xa812aa[_0x18f5('0x24')]&&_0xa812aa['phone']){var _0x1d0b5d=new _0x2f3a76(_0xa812aa[_0x18f5('0x25')],_0xa812aa[_0x18f5('0x24')]);_0x1d0b5d[_0x18f5('0x26')][_0x18f5('0x27')]({'body':_0x808953['body'],'to':_0x808953['phone'],'from':_0xa812aa[_0x18f5('0x28')],'statusCallback':_0xa812aa[_0x18f5('0x29')]+_0x18f5('0x2a')+_0x808953['id']+'/status?token='+_0xa812aa[_0x18f5('0x2b')]})['then'](function(_0x466f85){if(_0x466f85[_0x18f5('0x2c')]){return _0x44e42b[_0x18f5('0x1c')]({'messageId':_0x466f85[_0x18f5('0x2c')]});}})[_0x18f5('0x2d')](function(_0x4cd82f){logger[_0x18f5('0x1e')](_0x18f5('0x2e'),_0x18f5('0x2f'),_0x18f5('0x23'),util[_0x18f5('0x30')](_0x4cd82f,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x18f5('0x2e'),_0x18f5('0x2f'),_0x18f5('0x23'),_0x18f5('0x31'));}break;case _0x18f5('0x32'):var _0x7a4181=_0x18f5('0x33');if(_0xa812aa[_0x18f5('0x34')]&&_0xa812aa[_0x18f5('0x35')]){var _0x196dbd={'recipient':[_0x808953[_0x18f5('0x28')]],'message':_0x808953[_0x18f5('0xe')],'message_type':_0xa812aa[_0x18f5('0x36')]};if(_0xa812aa['smsMethod']&&_0xa812aa['smsMethod']!=='SI'){_0x196dbd[_0x18f5('0x37')]=_0xa812aa[_0x18f5('0x28')];}var _0x5d29fb={'url':_0x7a4181+_0x18f5('0x38')+_0xa812aa[_0x18f5('0x34')]+_0x18f5('0x39')+_0xa812aa[_0x18f5('0x35')],'method':'GET'};rp(_0x5d29fb)[_0x18f5('0x1b')](function(_0x5dfbc6){var _0x202dd7=_0x5dfbc6[_0x18f5('0x3a')](';');var _0x317b53={'user_key':_0x202dd7[0x0],'session_key':_0x202dd7[0x1]};_0x5d29fb={'url':_0x7a4181+'sms','method':_0x18f5('0x3b'),'headers':{'user_key':_0x317b53['user_key'],'Session_key':_0x317b53[_0x18f5('0x3c')]},'json':!![],'body':_0x196dbd};return rp(_0x5d29fb);})[_0x18f5('0x1b')](function(_0x4c3098){if(_0x4c3098[_0x18f5('0x3d')]>=0x1){var _0x3627aa={'messageId':_0x4c3098['internal_order_id']};if(_0xa812aa['smsMethod']!=='GP'||!_0xa812aa['deliveryReport']){_0x3627aa[_0x18f5('0x3e')]=!![];}return _0x44e42b['update'](_0x3627aa);}else{return logger[_0x18f5('0x1e')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x18f5('0x2f'),_0x18f5('0x32'),util[_0x18f5('0x30')](_0x4c3098,{'showHidden':![],'depth':null}));}})['catch'](function(_0xcc7fc4){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x18f5('0x2f'),_0x18f5('0x32'),util[_0x18f5('0x30')](_0xcc7fc4,{'showHidden':![],'depth':null}));});}else{logger[_0x18f5('0x1e')](_0x18f5('0x2e'),_0x18f5('0x2f'),'skebby',_0x18f5('0x3f'));}break;case'connectel':if(_0xa812aa['authToken']){var _0x499fc6={'recipient':_0x808953[_0x18f5('0x28')],'message':_0x808953[_0x18f5('0xe')],'sender':_0xa812aa['senderString']||_0xa812aa['phone'],'authorization':_0xa812aa[_0x18f5('0x24')]};var _0x351adf={'method':'POST','uri':_0x18f5('0x40'),'body':_0x499fc6,'json':!![]};rp(_0x351adf)['then'](function(_0x567960){var _0x3cd56a={'messageId':_0x567960[_0x18f5('0x41')]};if(!_0xa812aa[_0x18f5('0x42')]){_0x3cd56a[_0x18f5('0x3e')]=!![];}return _0x44e42b[_0x18f5('0x1c')](_0x3cd56a);})[_0x18f5('0x2d')](function(_0xe2c3c0){logger[_0x18f5('0x1e')](_0x18f5('0x2e'),_0x18f5('0x2f'),_0x18f5('0x43'),util[_0x18f5('0x30')](_0xe2c3c0,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x18f5('0x2f'),'connectel',_0x18f5('0x44'));}break;case _0x18f5('0x45'):if(_0xa812aa['username']&&_0xa812aa[_0x18f5('0x35')]){var _0x499fc6={'messages':[{'source':'xCALLY\x20Motion','to':_0x808953['phone'],'body':_0x808953['body'],'from':_0xa812aa['senderString']||_0xa812aa['phone']}]};var _0x27df28=util[_0x18f5('0x46')](_0x18f5('0x47'),_0xa812aa[_0x18f5('0x34')],_0xa812aa[_0x18f5('0x35')]);var _0x351adf={'method':_0x18f5('0x3b'),'uri':_0x18f5('0x48'),'body':_0x499fc6,'headers':{'Authorization':util[_0x18f5('0x46')](_0x18f5('0x49'),new Buffer(_0x27df28)[_0x18f5('0x4a')](_0x18f5('0x4b')))},'json':!![]};rp(_0x351adf)[_0x18f5('0x1b')](function(_0x3ee60e){if(_0x3ee60e[_0x18f5('0x4c')]>=0xc8&&_0x3ee60e[_0x18f5('0x4c')]<=0xce){if(_0x3ee60e[_0x18f5('0x4d')]&&_0x3ee60e[_0x18f5('0x4d')][_0x18f5('0x4e')]>0x0){var _0x4b6027=_[_0x18f5('0x4f')](_0x3ee60e[_0x18f5('0x4d')][_0x18f5('0x26')]);var _0x29ad39={'messageId':_0x4b6027[_0x18f5('0x50')]};if(!_0xa812aa['deliveryReport']){_0x29ad39['read']=!![];}return _0x44e42b['update'](_0x29ad39);}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x18f5('0x51'),util[_0x18f5('0x30')](_0x3ee60e,{'showHidden':![],'depth':null}));}}else{logger['error'](_0x18f5('0x2e'),'afterCreate',_0x18f5('0x51'),util[_0x18f5('0x30')](_0x3ee60e,{'showHidden':![],'depth':null}));}})[_0x18f5('0x2d')](function(_0x1f3550){logger[_0x18f5('0x1e')](_0x18f5('0x2e'),_0x18f5('0x2f'),_0x18f5('0x51'),util[_0x18f5('0x30')](_0x1f3550,{'showHidden':![],'depth':null}));});}else{logger[_0x18f5('0x1e')](_0x18f5('0x2e'),_0x18f5('0x2f'),'clickSend',_0x18f5('0x3f'));}break;case'plivo':if(_0xa812aa['authId']&&_0xa812aa[_0x18f5('0x24')]){var _0x499fc6={'dst':_0x808953[_0x18f5('0x28')],'text':_0x808953['body'],'src':_0xa812aa['senderString']||_0xa812aa[_0x18f5('0x28')],'url':_0xa812aa['remote']+_0x18f5('0x2a')+_0x808953['id']+_0x18f5('0x52')+_0xa812aa[_0x18f5('0x2b')]};var _0x27df28=util['format'](_0x18f5('0x47'),_0xa812aa[_0x18f5('0x53')],_0xa812aa['authToken']);var _0x351adf={'method':'POST','uri':util['format'](_0x18f5('0x54'),_0xa812aa[_0x18f5('0x53')]),'body':_0x499fc6,'headers':{'Authorization':util[_0x18f5('0x46')]('Basic\x20%s',new Buffer(_0x27df28)[_0x18f5('0x4a')](_0x18f5('0x4b')))},'json':!![]};rp(_0x351adf)[_0x18f5('0x1b')](function(_0x226c24){var _0x1dea68={'messageId':_0x226c24[_0x18f5('0x55')][0x0]};return _0x44e42b[_0x18f5('0x1c')](_0x1dea68);})[_0x18f5('0x2d')](function(_0x14baba){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x18f5('0x2f'),_0x18f5('0x56'),util[_0x18f5('0x30')](_0x14baba,{'showHidden':![],'depth':null}));});}else{logger[_0x18f5('0x1e')](_0x18f5('0x2e'),_0x18f5('0x2f'),_0x18f5('0x56'),_0x18f5('0x57'));}break;case _0x18f5('0x58'):if(_0xa812aa[_0x18f5('0x34')]&&_0xa812aa[_0x18f5('0x35')]){if(_0xa812aa['baseUrl']){var _0x3e92a6={'method':_0x18f5('0x3b'),'uri':_0xa812aa[_0x18f5('0x59')]+_0x18f5('0x5a'),'body':{'username':_0xa812aa[_0x18f5('0x34')],'password':_0xa812aa[_0x18f5('0x35')]},'json':!![]};return rp(_0x3e92a6)[_0x18f5('0x1b')](function(_0x1d3cd2){var _0x27d378={'method':'POST','uri':_0xa812aa['baseUrl']+_0x18f5('0x5b'),'body':{'messages':[{'from':_0xa812aa[_0x18f5('0x28')],'destinations':[{'to':_0x808953[_0x18f5('0x28')]}],'text':_0x808953['body'],'notifyUrl':_0xa812aa['remote']+'/api/sms/messages/'+_0x808953['id']+_0x18f5('0x52')+_0xa812aa['token'],'notifyContentType':_0x18f5('0x5c'),'callbackData':_0xa812aa[_0x18f5('0x28')]+';'+_0x808953[_0x18f5('0xe')]}]},'headers':{'Authorization':_0x18f5('0x5d')+_0x1d3cd2[_0x18f5('0x2b')]},'json':!![]};return rp(_0x27d378)[_0x18f5('0x1b')](function(_0x330927){if(_0x330927['messages']){var _0x30eda0={'messageId':_0x330927[_0x18f5('0x26')][0x0][_0x18f5('0xd')]};if(!_0xa812aa[_0x18f5('0x42')]){_0x30eda0[_0x18f5('0x3e')]=!![];}return _0x44e42b[_0x18f5('0x1c')](_0x30eda0);}else{return logger[_0x18f5('0x1e')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x18f5('0x2f'),_0x18f5('0x58'),util['inspect'](_0x330927,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x50a911){return logger['error'](_0x18f5('0x2e'),_0x18f5('0x2f'),_0x18f5('0x58'),util[_0x18f5('0x30')](_0x50a911,{'showHidden':![],'depth':null}));});}else{logger[_0x18f5('0x1e')](_0x18f5('0x2e'),_0x18f5('0x2f'),_0x18f5('0x58'),_0x18f5('0x5e'));}}else{logger[_0x18f5('0x1e')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x18f5('0x2f'),'infobip',_0x18f5('0x3f'));}break;case'csc':var _0x131d6c=require('crypto');if(_0xa812aa[_0x18f5('0x5f')]){var _0x378ad8={};_0x378ad8['login']=_0xa812aa[_0x18f5('0x34')];_0x378ad8[_0x18f5('0x28')]=_0x808953[_0x18f5('0x28')];_0x378ad8[_0x18f5('0x37')]=_0xa812aa[_0x18f5('0x28')];_0x378ad8[_0x18f5('0x60')]=_0x808953['body'];_0x378ad8['timestamp']=+new Date();var _0xc799d8='';var _0xe2c3f0='';var _0x47c7c9=Object[_0x18f5('0x61')](_0x378ad8);_0x47c7c9[_0x18f5('0x62')]();for(var _0x5c4e5c=0x0;_0x5c4e5c<_0x47c7c9['length'];_0x5c4e5c++){if(_0xc799d8!=''){_0xc799d8+='&';}_0xc799d8+=_0x47c7c9[_0x5c4e5c]+'='+encodeURIComponent(_0x378ad8[_0x47c7c9[_0x5c4e5c]]);_0xe2c3f0+=_0x378ad8[_0x47c7c9[_0x5c4e5c]];}_0xe2c3f0+=_0xa812aa[_0x18f5('0x5f')];_0xe2c3f0=_0x131d6c[_0x18f5('0x63')](_0x18f5('0x64'))[_0x18f5('0x1c')](_0xe2c3f0)[_0x18f5('0x65')](_0x18f5('0x66'));if(_0xc799d8!==''){_0xc799d8+='&';}_0xc799d8+=_0x18f5('0x67')+_0xe2c3f0;var _0x5d29fb={'method':'GET','uri':_0xa812aa['baseUrl']+'/external/get/send.php?'+_0xc799d8,'json':!![]};return rp(_0x5d29fb)[_0x18f5('0x1b')](function(_0x55fde5){var _0x534511=Object[_0x18f5('0x61')](_0x55fde5);if(_0x55fde5[_0x534511[0x0]][_0x18f5('0x1e')]&&parseInt(_0x55fde5[_0x534511[0x0]][_0x18f5('0x1e')])===0x0){var _0x1fdd7d={'messageId':_0x55fde5[_0x534511[0x0]][_0x18f5('0x68')]};if(!_0xa812aa[_0x18f5('0x42')]){_0x1fdd7d['read']=!![];}return _0x44e42b[_0x18f5('0x1c')](_0x1fdd7d);}else{return logger[_0x18f5('0x1e')](_0x18f5('0x2e'),_0x18f5('0x2f'),_0x18f5('0x69'),util[_0x18f5('0x30')](_0x55fde5['error'],{'showHidden':![],'depth':null}));}})[_0x18f5('0x2d')](function(_0x5679e6){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','csc',util[_0x18f5('0x30')](_0x5679e6,{'showHidden':![],'depth':null}));});}else{logger[_0x18f5('0x1e')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x18f5('0x2f'),_0x18f5('0x69'),_0x18f5('0x6a'));}break;case _0x18f5('0x6b'):if(_0xa812aa[_0x18f5('0x5f')]){var _0xe6b777={'method':_0x18f5('0x3b'),'uri':_0x18f5('0x6c'),'headers':{'Authorization':_0xa812aa[_0x18f5('0x5f')]},'body':{'content':_0x808953[_0x18f5('0xe')],'to':[_0x808953[_0x18f5('0x28')]],'from':_0xa812aa[_0x18f5('0x28')],'binary':![],'clientMessageId':_0x18f5('0x6d'),'charset':_0x18f5('0x6e')},'json':!![]};rp(_0xe6b777)['then'](function(_0x17dd7){if(!_0x17dd7['error']){var _0x4dbcba={'messageId':_0x17dd7[_0x18f5('0x26')][0x0][_0x18f5('0x6f')]};if(!_0xa812aa[_0x18f5('0x42')]){_0x4dbcba[_0x18f5('0x3e')]=!![];}return _0x44e42b['update'](_0x4dbcba);}else{return logger[_0x18f5('0x1e')](_0x18f5('0x2e'),_0x18f5('0x2f'),_0x18f5('0x6b'),util['inspect'](_0x17dd7[_0x18f5('0x1e')],{'showHidden':![],'depth':null}));}})[_0x18f5('0x2d')](function(_0x4fe45d){return logger[_0x18f5('0x1e')](_0x18f5('0x2e'),_0x18f5('0x2f'),'clickatell',util[_0x18f5('0x30')](_0x4fe45d,{'showHidden':![],'depth':null}));});}else{logger[_0x18f5('0x1e')](_0x18f5('0x2e'),_0x18f5('0x2f'),_0x18f5('0x6b'),_0x18f5('0x6a'));}break;case _0x18f5('0x70'):if(_0xa812aa[_0x18f5('0x34')]&&_0xa812aa[_0x18f5('0x35')]){var _0x27df28=util[_0x18f5('0x46')](_0x18f5('0x47'),_0xa812aa['username'],_0xa812aa['password']);var _0x351adf={'method':_0x18f5('0x3b'),'uri':_0x18f5('0x71')+_0xa812aa[_0x18f5('0x72')]+'/messages','body':{'to':[_0x808953[_0x18f5('0x28')]],'text':_0x808953[_0x18f5('0xe')],'from':_0xa812aa[_0x18f5('0x28')],'applicationId':_0xa812aa['applicationId']},'headers':{'Authorization':util[_0x18f5('0x46')](_0x18f5('0x49'),new Buffer(_0x27df28)[_0x18f5('0x4a')]('base64'))},'json':!![]};rp(_0x351adf)[_0x18f5('0x1b')](function(_0x295072){if(_0x295072['id']){var _0x4099fa={'messageId':_0x295072['id']};return _0x44e42b[_0x18f5('0x1c')](_0x4099fa);}else{logger['error'](_0x18f5('0x2e'),'afterCreate',_0x18f5('0x70'),util[_0x18f5('0x30')](_0x295072,{'showHidden':![],'depth':null}));}})[_0x18f5('0x2d')](function(_0x53fcf6){logger[_0x18f5('0x1e')](_0x18f5('0x2e'),_0x18f5('0x2f'),_0x18f5('0x70'),util[_0x18f5('0x30')](_0x53fcf6,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x18f5('0x2e'),_0x18f5('0x2f'),'bandwidth',_0x18f5('0x3f'));}break;case _0x18f5('0x73'):if(_0xa812aa[_0x18f5('0x5f')]){var _0x41b738={};var _0x5d29fb={'method':'POST','uri':_0x18f5('0x74'),'headers':{'Authorization':_0x18f5('0x75')+_0xa812aa['apiKey'],'Content-Type':_0x18f5('0x5c')},'body':{'from':_0xa812aa[_0x18f5('0x28')],'to':_0x808953[_0x18f5('0x28')],'text':_0x808953[_0x18f5('0xe')]},'json':!![]};return rp(_0x5d29fb)[_0x18f5('0x1b')](function(_0x5651bc){if(_0x5651bc[_0x18f5('0x76')]==0xca){_0x41b738['message']=_0x5651bc;var _0x43688a={'method':_0x18f5('0x3b'),'uri':_0x18f5('0x77'),'headers':{'Authorization':_0x18f5('0x75')+_0xa812aa[_0x18f5('0x5f')],'Content-Type':_0x18f5('0x5c')},'body':{'refid':_0x41b738['message'][_0x18f5('0x78')]},'json':!![]};return rp(_0x43688a)[_0x18f5('0x1b')](function(_0x412e81){_0x41b738[_0x18f5('0x79')]=_0x412e81;var _0x971430={'messageId':_0x41b738[_0x18f5('0x7a')]['refid'],'read':!![]};return _0x44e42b['update'](_0x971430);});}else{return logger[_0x18f5('0x1e')](_0x18f5('0x2e'),_0x18f5('0x2f'),_0x18f5('0x73'),util['inspect'](_0x5651bc,{'showHidden':![],'depth':null}));}})[_0x18f5('0x2d')](function(_0x346734){return logger[_0x18f5('0x1e')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','intelepeer',util['inspect'](_0x346734,{'showHidden':![],'depth':null}));});}else{return logger[_0x18f5('0x1e')](_0x18f5('0x2e'),_0x18f5('0x2f'),'intelepeer',_0x18f5('0x7b'));}break;}}})[_0x18f5('0x7c')](function(){_0x2fbcc5();});}else{_0x2fbcc5();}}},'charset':_0x18f5('0x7d'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xece6=['accountSid','authToken','phone','messages','create','/status?token=','token','sid','afterCreate','inspect','SmsMessage,\x20%s,\x20%s,\x20%s','https://api.skebby.it/API/v1.0/REST/','password','smsMethod','login?username=','username','&password=','GET','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','skebby','Missing\x20parameters:\x20username,\x20password','connectel','senderString','requestid','read','Missing\x20parameters:\x20authToken','xCALLY\x20Motion','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','queued_count','message_id','clickSend','authId','remote','/api/sms/messages/','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','plivo','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','Missing\x20parameters:\x20base_url','csc','crypto','login','sender','text','timestamp','sort','length','apiKey','createHash','signature=','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','application/json','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','Token\x20not\x20received','finally','utf8mb4_unicode_ci','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','exports','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','get','direction','toLowerCase','secret','isNil','UserId','SmsInteractionId','SmsInteraction','findOne','update','catch','error','out','SmsAccount','SmsAccountId','then','type','twilio'];(function(_0x19c286,_0x1b81d5){var _0x469597=function(_0x3af140){while(--_0x3af140){_0x19c286['push'](_0x19c286['shift']());}};_0x469597(++_0x1b81d5);}(_0xece6,0xd4));var _0x6ece=function(_0x12e898,_0x1ef073){_0x12e898=_0x12e898-0x0;var _0x190631=_0xece6[_0x12e898];return _0x190631;};'use strict';var _=require('lodash');var util=require(_0x6ece('0x0'));var logger=require(_0x6ece('0x1'))(_0x6ece('0x2'));var moment=require('moment');var BPromise=require(_0x6ece('0x3'));var rp=require(_0x6ece('0x4'));var fs=require('fs');var path=require(_0x6ece('0x5'));var rimraf=require(_0x6ece('0x6'));var config=require(_0x6ece('0x7'));var attributes=require(_0x6ece('0x8'));module[_0x6ece('0x9')]=function(_0x3770e3,_0xb1f17d){return _0x3770e3['define'](_0x6ece('0xa'),attributes,{'tableName':_0x6ece('0xb'),'paranoid':![],'indexes':[{'name':_0x6ece('0xc'),'fields':[_0x6ece('0xc')]},{'name':_0x6ece('0xd'),'fields':[_0x6ece('0xe')],'type':_0x6ece('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x395a66,_0x39b04f,_0x489830){var _0x282bdb=_0x3770e3['models'];var _0x10330b=_0x395a66[_0x6ece('0x10')]({'plain':!![]});if(_0x10330b[_0x6ece('0x11')]['toLowerCase']()==='in'||_0x10330b[_0x6ece('0x11')][_0x6ece('0x12')]()==='out'&&!_0x10330b[_0x6ece('0x13')]&&!_[_0x6ece('0x14')](_0x10330b[_0x6ece('0x15')])&&!_[_0x6ece('0x14')](_0x10330b[_0x6ece('0x16')])){_0x282bdb[_0x6ece('0x17')][_0x6ece('0x18')]({'where':{'id':_0x10330b[_0x6ece('0x16')]}})['then'](function(_0x32a1aa){if(_0x32a1aa){_0x32a1aa[_0x6ece('0x19')]({'lastMsgAt':_0x10330b['createdAt'],'lastMsgDirection':_0x10330b['direction']['toLowerCase']()});}})[_0x6ece('0x1a')](function(_0x5f4ae7){console[_0x6ece('0x1b')](_0x5f4ae7);});}if(_0x10330b[_0x6ece('0x11')]===_0x6ece('0x1c')&&!_0x10330b['secret']){var _0x47f159;_0x282bdb[_0x6ece('0x1d')]['find']({'where':{'id':_0x10330b[_0x6ece('0x1e')]},'raw':!![]})[_0x6ece('0x1f')](function(_0xc3c160){_0x47f159=_0xc3c160;if(_0x47f159&&_0x47f159[_0x6ece('0x20')]){switch(_0x47f159['type']){case _0x6ece('0x21'):var _0x3f95f8=require(_0x6ece('0x21'));if(_0x47f159[_0x6ece('0x22')]&&_0x47f159[_0x6ece('0x23')]&&_0x47f159[_0x6ece('0x24')]){var _0x3ab725=new _0x3f95f8(_0x47f159[_0x6ece('0x22')],_0x47f159[_0x6ece('0x23')]);_0x3ab725[_0x6ece('0x25')][_0x6ece('0x26')]({'body':_0x10330b[_0x6ece('0xe')],'to':_0x10330b[_0x6ece('0x24')],'from':_0x47f159[_0x6ece('0x24')],'statusCallback':_0x47f159['remote']+'/api/sms/messages/'+_0x10330b['id']+_0x6ece('0x27')+_0x47f159[_0x6ece('0x28')]})[_0x6ece('0x1f')](function(_0x4ca61b){if(_0x4ca61b['sid']){return _0x395a66['update']({'messageId':_0x4ca61b[_0x6ece('0x29')]});}})[_0x6ece('0x1a')](function(_0x18d716){logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),'twilio',util[_0x6ece('0x2b')](_0x18d716,{'showHidden':![],'depth':null}));});}else{logger[_0x6ece('0x1b')](_0x6ece('0x2c'),'afterCreate',_0x6ece('0x21'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case'skebby':var _0x27fa08=_0x6ece('0x2d');if(_0x47f159['username']&&_0x47f159[_0x6ece('0x2e')]){var _0x45147e={'recipient':[_0x10330b[_0x6ece('0x24')]],'message':_0x10330b[_0x6ece('0xe')],'message_type':_0x47f159[_0x6ece('0x2f')]};if(_0x47f159[_0x6ece('0x2f')]&&_0x47f159['smsMethod']!=='SI'){_0x45147e['sender']=_0x47f159[_0x6ece('0x24')];}var _0x301b43={'url':_0x27fa08+_0x6ece('0x30')+_0x47f159[_0x6ece('0x31')]+_0x6ece('0x32')+_0x47f159[_0x6ece('0x2e')],'method':_0x6ece('0x33')};rp(_0x301b43)[_0x6ece('0x1f')](function(_0x1de89b){var _0x5758dd=_0x1de89b['split'](';');var _0x43d425={'user_key':_0x5758dd[0x0],'session_key':_0x5758dd[0x1]};_0x301b43={'url':_0x27fa08+'sms','method':_0x6ece('0x34'),'headers':{'user_key':_0x43d425[_0x6ece('0x35')],'Session_key':_0x43d425[_0x6ece('0x36')]},'json':!![],'body':_0x45147e};return rp(_0x301b43);})[_0x6ece('0x1f')](function(_0xfa9b7b){if(_0xfa9b7b[_0x6ece('0x37')]>=0x1){var _0x853ba9={'messageId':_0xfa9b7b[_0x6ece('0x38')]};if(_0x47f159['smsMethod']!=='GP'||!_0x47f159[_0x6ece('0x39')]){_0x853ba9['read']=!![];}return _0x395a66[_0x6ece('0x19')](_0x853ba9);}else{return logger[_0x6ece('0x1b')](_0x6ece('0x2c'),_0x6ece('0x2a'),_0x6ece('0x3a'),util[_0x6ece('0x2b')](_0xfa9b7b,{'showHidden':![],'depth':null}));}})['catch'](function(_0x51968d){return logger[_0x6ece('0x1b')](_0x6ece('0x2c'),_0x6ece('0x2a'),_0x6ece('0x3a'),util[_0x6ece('0x2b')](_0x51968d,{'showHidden':![],'depth':null}));});}else{logger[_0x6ece('0x1b')](_0x6ece('0x2c'),_0x6ece('0x2a'),_0x6ece('0x3a'),_0x6ece('0x3b'));}break;case _0x6ece('0x3c'):if(_0x47f159['authToken']){var _0x14e430={'recipient':_0x10330b[_0x6ece('0x24')],'message':_0x10330b[_0x6ece('0xe')],'sender':_0x47f159[_0x6ece('0x3d')]||_0x47f159[_0x6ece('0x24')],'authorization':_0x47f159['authToken']};var _0x39b04f={'method':_0x6ece('0x34'),'uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x14e430,'json':!![]};rp(_0x39b04f)['then'](function(_0x169a95){var _0x2e2864={'messageId':_0x169a95[_0x6ece('0x3e')]};if(!_0x47f159[_0x6ece('0x39')]){_0x2e2864[_0x6ece('0x3f')]=!![];}return _0x395a66['update'](_0x2e2864);})[_0x6ece('0x1a')](function(_0x425757){logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),'connectel',util[_0x6ece('0x2b')](_0x425757,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x6ece('0x2c'),_0x6ece('0x2a'),'connectel',_0x6ece('0x40'));}break;case'clicksend':if(_0x47f159['username']&&_0x47f159[_0x6ece('0x2e')]){var _0x14e430={'messages':[{'source':_0x6ece('0x41'),'to':_0x10330b[_0x6ece('0x24')],'body':_0x10330b[_0x6ece('0xe')],'from':_0x47f159[_0x6ece('0x3d')]||_0x47f159[_0x6ece('0x24')]}]};var _0x56f22c=util[_0x6ece('0x42')](_0x6ece('0x43'),_0x47f159[_0x6ece('0x31')],_0x47f159[_0x6ece('0x2e')]);var _0x39b04f={'method':_0x6ece('0x34'),'uri':_0x6ece('0x44'),'body':_0x14e430,'headers':{'Authorization':util[_0x6ece('0x42')](_0x6ece('0x45'),new Buffer(_0x56f22c)[_0x6ece('0x46')](_0x6ece('0x47')))},'json':!![]};rp(_0x39b04f)[_0x6ece('0x1f')](function(_0x131bde){if(_0x131bde[_0x6ece('0x48')]>=0xc8&&_0x131bde[_0x6ece('0x48')]<=0xce){if(_0x131bde[_0x6ece('0x49')]&&_0x131bde[_0x6ece('0x49')][_0x6ece('0x4a')]>0x0){var _0x22475f=_['head'](_0x131bde[_0x6ece('0x49')][_0x6ece('0x25')]);var _0x40062e={'messageId':_0x22475f[_0x6ece('0x4b')]};if(!_0x47f159['deliveryReport']){_0x40062e[_0x6ece('0x3f')]=!![];}return _0x395a66[_0x6ece('0x19')](_0x40062e);}else{logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x6ece('0x4c'),util['inspect'](_0x131bde,{'showHidden':![],'depth':null}));}}else{logger[_0x6ece('0x1b')](_0x6ece('0x2c'),_0x6ece('0x2a'),_0x6ece('0x4c'),util['inspect'](_0x131bde,{'showHidden':![],'depth':null}));}})[_0x6ece('0x1a')](function(_0x2cf95a){logger[_0x6ece('0x1b')](_0x6ece('0x2c'),'afterCreate','clickSend',util[_0x6ece('0x2b')](_0x2cf95a,{'showHidden':![],'depth':null}));});}else{logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),_0x6ece('0x4c'),_0x6ece('0x3b'));}break;case'plivo':if(_0x47f159[_0x6ece('0x4d')]&&_0x47f159[_0x6ece('0x23')]){var _0x14e430={'dst':_0x10330b[_0x6ece('0x24')],'text':_0x10330b[_0x6ece('0xe')],'src':_0x47f159[_0x6ece('0x3d')]||_0x47f159[_0x6ece('0x24')],'url':_0x47f159[_0x6ece('0x4e')]+_0x6ece('0x4f')+_0x10330b['id']+_0x6ece('0x27')+_0x47f159[_0x6ece('0x28')]};var _0x56f22c=util[_0x6ece('0x42')]('%s:%s',_0x47f159[_0x6ece('0x4d')],_0x47f159[_0x6ece('0x23')]);var _0x39b04f={'method':_0x6ece('0x34'),'uri':util['format'](_0x6ece('0x50'),_0x47f159['authId']),'body':_0x14e430,'headers':{'Authorization':util[_0x6ece('0x42')]('Basic\x20%s',new Buffer(_0x56f22c)[_0x6ece('0x46')](_0x6ece('0x47')))},'json':!![]};rp(_0x39b04f)[_0x6ece('0x1f')](function(_0x415ba6){var _0x534cb7={'messageId':_0x415ba6[_0x6ece('0x51')][0x0]};return _0x395a66['update'](_0x534cb7);})[_0x6ece('0x1a')](function(_0x2d8875){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),'plivo',util[_0x6ece('0x2b')](_0x2d8875,{'showHidden':![],'depth':null}));});}else{logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),_0x6ece('0x52'),_0x6ece('0x53'));}break;case _0x6ece('0x54'):if(_0x47f159[_0x6ece('0x31')]&&_0x47f159[_0x6ece('0x2e')]){if(_0x47f159[_0x6ece('0x55')]){var _0x460d91={'method':_0x6ece('0x34'),'uri':_0x47f159['baseUrl']+_0x6ece('0x56'),'body':{'username':_0x47f159[_0x6ece('0x31')],'password':_0x47f159[_0x6ece('0x2e')]},'json':!![]};return rp(_0x460d91)['then'](function(_0x524eae){var _0x506f7e={'method':_0x6ece('0x34'),'uri':_0x47f159[_0x6ece('0x55')]+_0x6ece('0x57'),'body':{'messages':[{'from':_0x47f159[_0x6ece('0x24')],'destinations':[{'to':_0x10330b['phone']}],'text':_0x10330b[_0x6ece('0xe')],'notifyUrl':_0x47f159[_0x6ece('0x4e')]+_0x6ece('0x4f')+_0x10330b['id']+_0x6ece('0x27')+_0x47f159[_0x6ece('0x28')],'notifyContentType':'application/json','callbackData':_0x47f159[_0x6ece('0x24')]+';'+_0x10330b['body']}]},'headers':{'Authorization':'IBSSO\x20'+_0x524eae[_0x6ece('0x28')]},'json':!![]};return rp(_0x506f7e)[_0x6ece('0x1f')](function(_0x5ad66a){if(_0x5ad66a[_0x6ece('0x25')]){var _0x46d5ac={'messageId':_0x5ad66a[_0x6ece('0x25')][0x0][_0x6ece('0xc')]};if(!_0x47f159[_0x6ece('0x39')]){_0x46d5ac['read']=!![];}return _0x395a66[_0x6ece('0x19')](_0x46d5ac);}else{return logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),_0x6ece('0x54'),util['inspect'](_0x5ad66a,{'showHidden':![],'depth':null}));}});})[_0x6ece('0x1a')](function(_0x4d5645){return logger['error'](_0x6ece('0x2c'),_0x6ece('0x2a'),'infobip',util['inspect'](_0x4d5645,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x6ece('0x2c'),_0x6ece('0x2a'),'infobip',_0x6ece('0x58'));}}else{logger[_0x6ece('0x1b')](_0x6ece('0x2c'),_0x6ece('0x2a'),_0x6ece('0x54'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x6ece('0x59'):var _0x33546b=require(_0x6ece('0x5a'));if(_0x47f159['apiKey']){var _0xf271f4={};_0xf271f4[_0x6ece('0x5b')]=_0x47f159[_0x6ece('0x31')];_0xf271f4[_0x6ece('0x24')]=_0x10330b[_0x6ece('0x24')];_0xf271f4[_0x6ece('0x5c')]=_0x47f159['phone'];_0xf271f4[_0x6ece('0x5d')]=_0x10330b[_0x6ece('0xe')];_0xf271f4[_0x6ece('0x5e')]=+new Date();var _0x3da0dc='';var _0x3d94b5='';var _0x5546b5=Object['keys'](_0xf271f4);_0x5546b5[_0x6ece('0x5f')]();for(var _0x2888a1=0x0;_0x2888a1<_0x5546b5[_0x6ece('0x60')];_0x2888a1++){if(_0x3da0dc!=''){_0x3da0dc+='&';}_0x3da0dc+=_0x5546b5[_0x2888a1]+'='+encodeURIComponent(_0xf271f4[_0x5546b5[_0x2888a1]]);_0x3d94b5+=_0xf271f4[_0x5546b5[_0x2888a1]];}_0x3d94b5+=_0x47f159[_0x6ece('0x61')];_0x3d94b5=_0x33546b[_0x6ece('0x62')]('md5')[_0x6ece('0x19')](_0x3d94b5)['digest']('hex');if(_0x3da0dc!==''){_0x3da0dc+='&';}_0x3da0dc+=_0x6ece('0x63')+_0x3d94b5;var _0x301b43={'method':_0x6ece('0x33'),'uri':_0x47f159[_0x6ece('0x55')]+_0x6ece('0x64')+_0x3da0dc,'json':!![]};return rp(_0x301b43)[_0x6ece('0x1f')](function(_0x33688c){var _0x331bca=Object['keys'](_0x33688c);if(_0x33688c[_0x331bca[0x0]][_0x6ece('0x1b')]&&parseInt(_0x33688c[_0x331bca[0x0]][_0x6ece('0x1b')])===0x0){var _0x509426={'messageId':_0x33688c[_0x331bca[0x0]][_0x6ece('0x65')]};if(!_0x47f159[_0x6ece('0x39')]){_0x509426[_0x6ece('0x3f')]=!![];}return _0x395a66[_0x6ece('0x19')](_0x509426);}else{return logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x6ece('0x59'),util['inspect'](_0x33688c['error'],{'showHidden':![],'depth':null}));}})[_0x6ece('0x1a')](function(_0x4051e4){return logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),_0x6ece('0x59'),util[_0x6ece('0x2b')](_0x4051e4,{'showHidden':![],'depth':null}));});}else{logger[_0x6ece('0x1b')](_0x6ece('0x2c'),'afterCreate',_0x6ece('0x59'),_0x6ece('0x66'));}break;case _0x6ece('0x67'):if(_0x47f159[_0x6ece('0x61')]){var _0x592567={'method':_0x6ece('0x34'),'uri':_0x6ece('0x68'),'headers':{'Authorization':_0x47f159['apiKey']},'body':{'content':_0x10330b[_0x6ece('0xe')],'to':[_0x10330b['phone']],'from':_0x47f159[_0x6ece('0x24')],'binary':![],'clientMessageId':_0x6ece('0x69'),'charset':_0x6ece('0x6a')},'json':!![]};rp(_0x592567)[_0x6ece('0x1f')](function(_0x4a1b3d){if(!_0x4a1b3d[_0x6ece('0x1b')]){var _0x485a78={'messageId':_0x4a1b3d[_0x6ece('0x25')][0x0][_0x6ece('0x6b')]};if(!_0x47f159[_0x6ece('0x39')]){_0x485a78[_0x6ece('0x3f')]=!![];}return _0x395a66[_0x6ece('0x19')](_0x485a78);}else{return logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),'clickatell',util[_0x6ece('0x2b')](_0x4a1b3d['error'],{'showHidden':![],'depth':null}));}})[_0x6ece('0x1a')](function(_0x1e4a04){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),'clickatell',util['inspect'](_0x1e4a04,{'showHidden':![],'depth':null}));});}else{logger[_0x6ece('0x1b')](_0x6ece('0x2c'),_0x6ece('0x2a'),_0x6ece('0x67'),_0x6ece('0x66'));}break;case _0x6ece('0x6c'):if(_0x47f159[_0x6ece('0x31')]&&_0x47f159[_0x6ece('0x2e')]){var _0x56f22c=util[_0x6ece('0x42')](_0x6ece('0x43'),_0x47f159['username'],_0x47f159[_0x6ece('0x2e')]);var _0x39b04f={'method':_0x6ece('0x34'),'uri':_0x6ece('0x6d')+_0x47f159[_0x6ece('0x6e')]+_0x6ece('0x6f'),'body':{'to':[_0x10330b[_0x6ece('0x24')]],'text':_0x10330b['body'],'from':_0x47f159[_0x6ece('0x24')],'applicationId':_0x47f159[_0x6ece('0x70')]},'headers':{'Authorization':util['format']('Basic\x20%s',new Buffer(_0x56f22c)[_0x6ece('0x46')]('base64'))},'json':!![]};rp(_0x39b04f)[_0x6ece('0x1f')](function(_0x1d488e){if(_0x1d488e['id']){var _0xde696={'messageId':_0x1d488e['id']};return _0x395a66['update'](_0xde696);}else{logger[_0x6ece('0x1b')](_0x6ece('0x2c'),'afterCreate',_0x6ece('0x6c'),util[_0x6ece('0x2b')](_0x1d488e,{'showHidden':![],'depth':null}));}})[_0x6ece('0x1a')](function(_0x2598dc){logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),_0x6ece('0x6c'),util[_0x6ece('0x2b')](_0x2598dc,{'showHidden':![],'depth':null}));});}else{logger[_0x6ece('0x1b')](_0x6ece('0x2c'),_0x6ece('0x2a'),_0x6ece('0x6c'),_0x6ece('0x3b'));}break;case _0x6ece('0x71'):if(_0x47f159[_0x6ece('0x61')]){var _0x487874={};var _0x301b43={'method':_0x6ece('0x34'),'uri':_0x6ece('0x72'),'headers':{'Authorization':_0x6ece('0x73')+_0x47f159[_0x6ece('0x61')],'Content-Type':_0x6ece('0x74')},'body':{'from':_0x47f159[_0x6ece('0x24')],'to':_0x10330b['phone'],'text':_0x10330b[_0x6ece('0xe')]},'json':!![]};return rp(_0x301b43)['then'](function(_0x221a49){if(_0x221a49['code']==0xca){_0x487874[_0x6ece('0x75')]=_0x221a49;var _0x41f336={'method':_0x6ece('0x34'),'uri':_0x6ece('0x76'),'headers':{'Authorization':_0x6ece('0x73')+_0x47f159[_0x6ece('0x61')],'Content-Type':_0x6ece('0x74')},'body':{'refid':_0x487874[_0x6ece('0x75')][_0x6ece('0x77')]},'json':!![]};return rp(_0x41f336)[_0x6ece('0x1f')](function(_0x2c3bf1){_0x487874['status']=_0x2c3bf1;var _0x3dbc19={'messageId':_0x487874[_0x6ece('0x75')][_0x6ece('0x77')],'read':!![]};return _0x395a66[_0x6ece('0x19')](_0x3dbc19);});}else{return logger[_0x6ece('0x1b')](_0x6ece('0x2c'),_0x6ece('0x2a'),_0x6ece('0x71'),util[_0x6ece('0x2b')](_0x221a49,{'showHidden':![],'depth':null}));}})[_0x6ece('0x1a')](function(_0x16447b){return logger['error'](_0x6ece('0x2c'),'afterCreate',_0x6ece('0x71'),util[_0x6ece('0x2b')](_0x16447b,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0x6ece('0x2c'),'afterCreate',_0x6ece('0x71'),_0x6ece('0x78'));}break;}}})[_0x6ece('0x79')](function(){_0x489830();});}else{_0x489830();}}},'charset':'utf8mb4','collate':_0x6ece('0x7a')});};
\ No newline at end of file
index f2f3d6a..bf39feb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9c3=['CreateSmsMessage','SmsMessage','create','body','options','raw','then','debug','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','request','info','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','error','SmsMessage,\x20%s,\x20%s','message','result','catch'];(function(_0x56a8c8,_0x1cb851){var _0x51740c=function(_0x525f6d){while(--_0x525f6d){_0x56a8c8['push'](_0x56a8c8['shift']());}};_0x51740c(++_0x1cb851);}(_0xf9c3,0xd5));var _0x3f9c=function(_0x4c978c,_0xbd7d69){_0x4c978c=_0x4c978c-0x0;var _0x48db9c=_0xf9c3[_0x4c978c];return _0x48db9c;};'use strict';var _=require(_0x3f9c('0x0'));var util=require(_0x3f9c('0x1'));var moment=require(_0x3f9c('0x2'));var BPromise=require(_0x3f9c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3f9c('0x4'));var db=require(_0x3f9c('0x5'))['db'];var utils=require(_0x3f9c('0x6'));var logger=require(_0x3f9c('0x7'))('rpc');var config=require(_0x3f9c('0x8'));var jayson=require(_0x3f9c('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x3f9c('0xa')]=_[_0x3f9c('0xb')](config[_0x3f9c('0xa')],{'host':_0x3f9c('0xc'),'port':0x18eb});var socket=require(_0x3f9c('0xd'))(new Redis(config['redis']));require(_0x3f9c('0xe'))[_0x3f9c('0xf')](socket);function respondWithRpcPromise(_0x4239d3,_0xc97907,_0x38e42){return new BPromise(function(_0x325dad,_0xfa8b6f){return client[_0x3f9c('0x10')](_0x4239d3,_0x38e42)['then'](function(_0x2f1009){logger[_0x3f9c('0x11')]('SmsMessage,\x20%s,\x20%s',_0xc97907,_0x3f9c('0x12'));logger['debug'](_0x3f9c('0x13'),_0xc97907,_0x3f9c('0x12'),JSON['stringify'](_0x2f1009));if(_0x2f1009[_0x3f9c('0x14')]){if(_0x2f1009[_0x3f9c('0x14')]['code']===0x1f4){logger[_0x3f9c('0x14')](_0x3f9c('0x15'),_0xc97907,_0x2f1009['error'][_0x3f9c('0x16')]);return _0xfa8b6f(_0x2f1009[_0x3f9c('0x14')][_0x3f9c('0x16')]);}logger[_0x3f9c('0x14')]('SmsMessage,\x20%s,\x20%s',_0xc97907,_0x2f1009[_0x3f9c('0x14')][_0x3f9c('0x16')]);return _0x325dad(_0x2f1009['error']['message']);}else{logger[_0x3f9c('0x11')]('SmsMessage,\x20%s,\x20%s',_0xc97907,'request\x20sent');_0x325dad(_0x2f1009[_0x3f9c('0x17')][_0x3f9c('0x16')]);}})[_0x3f9c('0x18')](function(_0x500de1){logger['error']('SmsMessage,\x20%s,\x20%s',_0xc97907,_0x500de1);_0xfa8b6f(_0x500de1);});});}exports[_0x3f9c('0x19')]=function(_0x7385fd){var _0x20f298=this;return new Promise(function(_0x557110,_0x49d438){return db[_0x3f9c('0x1a')][_0x3f9c('0x1b')](_0x7385fd[_0x3f9c('0x1c')],{'raw':_0x7385fd[_0x3f9c('0x1d')]?_0x7385fd['options'][_0x3f9c('0x1e')]===undefined?!![]:![]:!![]})[_0x3f9c('0x1f')](function(_0x32b1be){logger[_0x3f9c('0x11')](_0x3f9c('0x19'),_0x7385fd);logger[_0x3f9c('0x20')](_0x3f9c('0x19'),_0x7385fd,JSON[_0x3f9c('0x21')](_0x32b1be));_0x557110(_0x32b1be);})[_0x3f9c('0x18')](function(_0x14c6ec){logger[_0x3f9c('0x14')](_0x3f9c('0x19'),_0x14c6ec[_0x3f9c('0x16')],_0x7385fd);_0x49d438(_0x20f298[_0x3f9c('0x14')](0x1f4,_0x14c6ec[_0x3f9c('0x16')]));});});};
\ No newline at end of file
+var _0xbc29=['http','redis','localhost','./smsMessage.socket','register','request','then','info','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SmsMessage,\x20%s,\x20%s','result','catch','CreateSmsMessage','SmsMessage','create','options','raw','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client'];(function(_0x22571d,_0x1459a6){var _0x502d64=function(_0x272fb2){while(--_0x272fb2){_0x22571d['push'](_0x22571d['shift']());}};_0x502d64(++_0x1459a6);}(_0xbc29,0x196));var _0x9bc2=function(_0x48e136,_0x528678){_0x48e136=_0x48e136-0x0;var _0x2e944d=_0xbc29[_0x48e136];return _0x2e944d;};'use strict';var _=require(_0x9bc2('0x0'));var util=require(_0x9bc2('0x1'));var moment=require(_0x9bc2('0x2'));var BPromise=require(_0x9bc2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9bc2('0x4'));var db=require(_0x9bc2('0x5'))['db'];var utils=require(_0x9bc2('0x6'));var logger=require('../../config/logger')(_0x9bc2('0x7'));var config=require('../../config/environment');var jayson=require(_0x9bc2('0x8'));var client=jayson[_0x9bc2('0x9')][_0x9bc2('0xa')]({'port':0x232a});config[_0x9bc2('0xb')]=_['defaults'](config['redis'],{'host':_0x9bc2('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9bc2('0xb')]));require(_0x9bc2('0xd'))[_0x9bc2('0xe')](socket);function respondWithRpcPromise(_0xad4853,_0x43dfd5,_0x56dede){return new BPromise(function(_0x2e379b,_0x34bed4){return client[_0x9bc2('0xf')](_0xad4853,_0x56dede)[_0x9bc2('0x10')](function(_0x85e262){logger[_0x9bc2('0x11')]('SmsMessage,\x20%s,\x20%s',_0x43dfd5,_0x9bc2('0x12'));logger['debug'](_0x9bc2('0x13'),_0x43dfd5,_0x9bc2('0x12'),JSON[_0x9bc2('0x14')](_0x85e262));if(_0x85e262[_0x9bc2('0x15')]){if(_0x85e262[_0x9bc2('0x15')][_0x9bc2('0x16')]===0x1f4){logger[_0x9bc2('0x15')]('SmsMessage,\x20%s,\x20%s',_0x43dfd5,_0x85e262['error'][_0x9bc2('0x17')]);return _0x34bed4(_0x85e262['error'][_0x9bc2('0x17')]);}logger['error'](_0x9bc2('0x18'),_0x43dfd5,_0x85e262[_0x9bc2('0x15')][_0x9bc2('0x17')]);return _0x2e379b(_0x85e262[_0x9bc2('0x15')][_0x9bc2('0x17')]);}else{logger[_0x9bc2('0x11')](_0x9bc2('0x18'),_0x43dfd5,_0x9bc2('0x12'));_0x2e379b(_0x85e262[_0x9bc2('0x19')][_0x9bc2('0x17')]);}})[_0x9bc2('0x1a')](function(_0x43ebd0){logger[_0x9bc2('0x15')](_0x9bc2('0x18'),_0x43dfd5,_0x43ebd0);_0x34bed4(_0x43ebd0);});});}exports[_0x9bc2('0x1b')]=function(_0x43a241){var _0x322f78=this;return new Promise(function(_0x1c3438,_0x2ce58c){return db[_0x9bc2('0x1c')][_0x9bc2('0x1d')](_0x43a241['body'],{'raw':_0x43a241[_0x9bc2('0x1e')]?_0x43a241[_0x9bc2('0x1e')][_0x9bc2('0x1f')]===undefined?!![]:![]:!![]})[_0x9bc2('0x10')](function(_0x4e7e6c){logger['info'](_0x9bc2('0x1b'),_0x43a241);logger['debug'](_0x9bc2('0x1b'),_0x43a241,JSON['stringify'](_0x4e7e6c));_0x1c3438(_0x4e7e6c);})[_0x9bc2('0x1a')](function(_0x617640){logger['error'](_0x9bc2('0x1b'),_0x617640[_0x9bc2('0x17')],_0x43a241);_0x2ce58c(_0x322f78[_0x9bc2('0x15')](0x1f4,_0x617640[_0x9bc2('0x17')]));});});};
\ No newline at end of file
index 6e69b0c..e140b14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6474=['save','remove','update','emit','removeListener','register','smsMessage:'];(function(_0x150c3c,_0x1f160c){var _0xf30f16=function(_0x51768f){while(--_0x51768f){_0x150c3c['push'](_0x150c3c['shift']());}};_0xf30f16(++_0x1f160c);}(_0x6474,0x1c0));var _0x4647=function(_0x456963,_0xe70b42){_0x456963=_0x456963-0x0;var _0x492073=_0x6474[_0x456963];return _0x492073;};'use strict';var SmsMessageEvents=require('./smsMessage.events');var events=[_0x4647('0x0'),_0x4647('0x1'),_0x4647('0x2')];function createListener(_0x1f4e2b,_0x4e9e50){return function(_0x5bf8f2){_0x4e9e50[_0x4647('0x3')](_0x1f4e2b,_0x5bf8f2);};}function removeListener(_0x3a6a5e,_0xeda970){return function(){SmsMessageEvents[_0x4647('0x4')](_0x3a6a5e,_0xeda970);};}exports[_0x4647('0x5')]=function(_0x562a73){for(var _0x36d2b8=0x0,_0x17ff47=events['length'];_0x36d2b8<_0x17ff47;_0x36d2b8++){var _0x3a95ce=events[_0x36d2b8];var _0x3a597f=createListener(_0x4647('0x6')+_0x3a95ce,_0x562a73);SmsMessageEvents['on'](_0x3a95ce,_0x3a597f);}};
\ No newline at end of file
+var _0xa1ce=['length','smsMessage:','save','update','emit','register'];(function(_0x295a3d,_0x56d487){var _0x23a732=function(_0x15cfc2){while(--_0x15cfc2){_0x295a3d['push'](_0x295a3d['shift']());}};_0x23a732(++_0x56d487);}(_0xa1ce,0xfe));var _0xea1c=function(_0x3b033c,_0x1a8656){_0x3b033c=_0x3b033c-0x0;var _0xa50790=_0xa1ce[_0x3b033c];return _0xa50790;};'use strict';var SmsMessageEvents=require('./smsMessage.events');var events=[_0xea1c('0x0'),'remove',_0xea1c('0x1')];function createListener(_0x1234ca,_0x24ae30){return function(_0x4926a5){_0x24ae30[_0xea1c('0x2')](_0x1234ca,_0x4926a5);};}function removeListener(_0x330b5b,_0x28b749){return function(){SmsMessageEvents['removeListener'](_0x330b5b,_0x28b749);};}exports[_0xea1c('0x3')]=function(_0x3a695d){for(var _0x3c01d9=0x0,_0x49025c=events[_0xea1c('0x4')];_0x3c01d9<_0x49025c;_0x3c01d9++){var _0x3a8b20=events[_0x3c01d9];var _0x1c585d=createListener(_0xea1c('0x5')+_0x3a8b20,_0x3a695d);SmsMessageEvents['on'](_0x3a8b20,_0x1c585d);}};
\ No newline at end of file
index f263fe3..f2df5c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0984=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','show','/:id/teams','getAgents','post','create','addTeams','addAgents','put','/:id','destroy','delete','removeTeams','/:id/users','exports','util','path','connect-timeout','express','Router'];(function(_0x31a5fb,_0x169885){var _0x56d4fa=function(_0x3fea13){while(--_0x3fea13){_0x31a5fb['push'](_0x31a5fb['shift']());}};_0x56d4fa(++_0x169885);}(_0x0984,0x1e9));var _0x4098=function(_0x1ad188,_0x12744d){_0x1ad188=_0x1ad188-0x0;var _0x5ab6e5=_0x0984[_0x1ad188];return _0x5ab6e5;};'use strict';var multer=require('multer');var util=require(_0x4098('0x0'));var path=require(_0x4098('0x1'));var timeout=require(_0x4098('0x2'));var express=require(_0x4098('0x3'));var router=express[_0x4098('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x4098('0x5'));var config=require(_0x4098('0x6'));var controller=require('./smsQueue.controller');router[_0x4098('0x7')]('/',auth[_0x4098('0x8')](),controller[_0x4098('0x9')]);router[_0x4098('0x7')](_0x4098('0xa'),auth[_0x4098('0x8')](),controller[_0x4098('0xb')]);router[_0x4098('0x7')]('/:id',auth[_0x4098('0x8')](),controller[_0x4098('0xc')]);router[_0x4098('0x7')]('/:id/members',auth['isAuthenticated'](),controller['getMembers']);router['get'](_0x4098('0xd'),auth[_0x4098('0x8')](),controller['getTeams']);router['get']('/:id/users',auth['isAuthenticated'](),controller[_0x4098('0xe')]);router[_0x4098('0xf')]('/',auth[_0x4098('0x8')](),controller[_0x4098('0x10')]);router['post'](_0x4098('0xd'),auth['isAuthenticated'](),controller[_0x4098('0x11')]);router['post']('/:id/users',auth['isAuthenticated'](),controller[_0x4098('0x12')]);router[_0x4098('0x13')](_0x4098('0x14'),auth[_0x4098('0x8')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x4098('0x15')]);router[_0x4098('0x16')](_0x4098('0xd'),auth['isAuthenticated'](),controller[_0x4098('0x17')]);router['delete'](_0x4098('0x18'),auth[_0x4098('0x8')](),controller['removeAgents']);module[_0x4098('0x19')]=router;
\ No newline at end of file
+var _0x3b6b=['../../components/interaction/service','../../config/environment','./smsQueue.controller','isAuthenticated','index','get','describe','/:id','show','/:id/members','/:id/teams','getAgents','post','addAgents','update','delete','removeTeams','/:id/users','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0x3b6b,0xf4));var _0xb3b6=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3b6b[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0xb3b6('0x0'));var util=require(_0xb3b6('0x1'));var path=require(_0xb3b6('0x2'));var timeout=require(_0xb3b6('0x3'));var express=require(_0xb3b6('0x4'));var router=express[_0xb3b6('0x5')]();var fs_extra=require(_0xb3b6('0x6'));var auth=require(_0xb3b6('0x7'));var interaction=require(_0xb3b6('0x8'));var config=require(_0xb3b6('0x9'));var controller=require(_0xb3b6('0xa'));router['get']('/',auth[_0xb3b6('0xb')](),controller[_0xb3b6('0xc')]);router[_0xb3b6('0xd')]('/describe',auth[_0xb3b6('0xb')](),controller[_0xb3b6('0xe')]);router[_0xb3b6('0xd')](_0xb3b6('0xf'),auth[_0xb3b6('0xb')](),controller[_0xb3b6('0x10')]);router['get'](_0xb3b6('0x11'),auth['isAuthenticated'](),controller['getMembers']);router[_0xb3b6('0xd')](_0xb3b6('0x12'),auth['isAuthenticated'](),controller['getTeams']);router[_0xb3b6('0xd')]('/:id/users',auth[_0xb3b6('0xb')](),controller[_0xb3b6('0x13')]);router[_0xb3b6('0x14')]('/',auth[_0xb3b6('0xb')](),controller['create']);router['post'](_0xb3b6('0x12'),auth[_0xb3b6('0xb')](),controller['addTeams']);router[_0xb3b6('0x14')]('/:id/users',auth[_0xb3b6('0xb')](),controller[_0xb3b6('0x15')]);router['put']('/:id',auth[_0xb3b6('0xb')](),controller[_0xb3b6('0x16')]);router['delete'](_0xb3b6('0xf'),auth['isAuthenticated'](),controller['destroy']);router[_0xb3b6('0x17')]('/:id/teams',auth[_0xb3b6('0xb')](),controller[_0xb3b6('0x18')]);router[_0xb3b6('0x17')](_0xb3b6('0x19'),auth[_0xb3b6('0xb')](),controller[_0xb3b6('0x1a')]);module[_0xb3b6('0x1b')]=router;
\ No newline at end of file
index db8a643..14bb74f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb81=['rrmemory','exports','STRING','name','ENUM'];(function(_0x2bc6ab,_0x5205ac){var _0x324704=function(_0x912fd8){while(--_0x912fd8){_0x2bc6ab['push'](_0x2bc6ab['shift']());}};_0x324704(++_0x5205ac);}(_0xeb81,0x1c3));var _0x1eb8=function(_0x2459fd,_0x575d9b){_0x2459fd=_0x2459fd-0x0;var _0x364cd2=_0xeb81[_0x2459fd];return _0x364cd2;};'use strict';var Sequelize=require('sequelize');module[_0x1eb8('0x0')]={'name':{'type':Sequelize[_0x1eb8('0x1')],'unique':_0x1eb8('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x1eb8('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x1eb8('0x3')](_0x1eb8('0x4'),'beepall','roundrobin')}};
\ No newline at end of file
+var _0x4843=['roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM','rrmemory','beepall'];(function(_0x211055,_0x336fe2){var _0x24b9c9=function(_0x2ea175){while(--_0x2ea175){_0x211055['push'](_0x211055['shift']());}};_0x24b9c9(++_0x336fe2);}(_0x4843,0x1e7));var _0x3484=function(_0x35e26c,_0x569962){_0x35e26c=_0x35e26c-0x0;var _0x4a6ebc=_0x4843[_0x35e26c];return _0x4a6ebc;};'use strict';var Sequelize=require(_0x3484('0x0'));module[_0x3484('0x1')]={'name':{'type':Sequelize[_0x3484('0x2')],'unique':_0x3484('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x3484('0x2')]},'timeout':{'type':Sequelize[_0x3484('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x3484('0x5')](_0x3484('0x6'),_0x3484('0x7'),_0x3484('0x8'))}};
\ No newline at end of file
index ce5d37d..d26d63b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd4e=['includes','union','value','transaction','removeAgents','addAgents','isArray','userSmsQueue:remove','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./smsQueue.socket','sendStatus','end','status','json','offset','undefined','limit','Content-Range','reject','save','update','then','destroy','get','SmsQueues','UserProfileResource','error','stack','name','send','map','SmsQueue','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','order','sort','where','pick','merge','VIRTUAL','filter','options','count','includeAll','findAll','rows','show','params','length','include','find','catch','create','body','user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','SmsQueueId','UserSmsQueue','User','findAndCountAll','UserId','agent','smsPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','findOne','Team','hasOwnProperty','nolimit','addTeams','Agents','voicePause','interface','flatMap','sequelize','each','findOrCreate','forEach','emit','userSmsQueue:save','removeTeams','ids','field','tq.TeamId','team_has_sms_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','push','toString','SELECT','every','TeamId'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xfd4e,0x1b0));var _0xefd4=function(_0x8cdf49,_0x1550a2){_0x8cdf49=_0x8cdf49-0x0;var _0x5ae23f=_0xfd4e[_0x8cdf49];return _0x5ae23f;};'use strict';var emlformat=require(_0xefd4('0x0'));var rimraf=require(_0xefd4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xefd4('0x2'));var rp=require(_0xefd4('0x3'));var moment=require(_0xefd4('0x4'));var BPromise=require(_0xefd4('0x5'));var Mustache=require(_0xefd4('0x6'));var util=require(_0xefd4('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xefd4('0x8'));var ejs=require(_0xefd4('0x9'));var fs=require('fs');var fs_extra=require(_0xefd4('0xa'));var _=require(_0xefd4('0xb'));var squel=require(_0xefd4('0xc'));var crypto=require(_0xefd4('0xd'));var jsforce=require(_0xefd4('0xe'));var deskjs=require(_0xefd4('0xf'));var toCsv=require('to-csv');var querystring=require(_0xefd4('0x10'));var Papa=require(_0xefd4('0x11'));var Redis=require('ioredis');var authService=require(_0xefd4('0x12'));var qs=require(_0xefd4('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xefd4('0x14'))(_0xefd4('0x15'));var utils=require(_0xefd4('0x16'));var config=require(_0xefd4('0x17'));var licenseUtil=require(_0xefd4('0x18'));var db=require(_0xefd4('0x19'))['db'];config[_0xefd4('0x1a')]=_[_0xefd4('0x1b')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xefd4('0x1c'))(new Redis(config[_0xefd4('0x1a')]));require(_0xefd4('0x1d'))['register'](socket);function respondWithStatusCode(_0x1801e8,_0x3d5487){_0x3d5487=_0x3d5487||0xcc;return function(_0x704e3b){if(_0x704e3b){return _0x1801e8[_0xefd4('0x1e')](_0x3d5487);}return _0x1801e8['status'](_0x3d5487)[_0xefd4('0x1f')]();};}function respondWithResult(_0x594717,_0x2045ce){_0x2045ce=_0x2045ce||0xc8;return function(_0xf6300){if(_0xf6300){return _0x594717[_0xefd4('0x20')](_0x2045ce)[_0xefd4('0x21')](_0xf6300);}};}function respondWithFilteredResult(_0x1a7732,_0x4db021){return function(_0x2cb0df){if(_0x2cb0df){var _0x3057c0=typeof _0x4db021[_0xefd4('0x22')]===_0xefd4('0x23')&&typeof _0x4db021[_0xefd4('0x24')]==='undefined';var _0x4c97e6=_0x2cb0df['count'];var _0x4fb269=_0x3057c0?0x0:_0x4db021[_0xefd4('0x22')];var _0x58f56a=_0x3057c0?_0x2cb0df['count']:_0x4db021[_0xefd4('0x22')]+_0x4db021[_0xefd4('0x24')];var _0x5054ed;if(_0x58f56a>=_0x4c97e6){_0x58f56a=_0x4c97e6;_0x5054ed=0xc8;}else{_0x5054ed=0xce;}_0x1a7732[_0xefd4('0x20')](_0x5054ed);return _0x1a7732['set'](_0xefd4('0x25'),_0x4fb269+'-'+_0x58f56a+'/'+_0x4c97e6)[_0xefd4('0x21')](_0x2cb0df);}return null;};}function patchUpdates(_0x2687f5){return function(_0x13956c){try{jsonpatch['apply'](_0x13956c,_0x2687f5,!![]);}catch(_0x12689a){return BPromise[_0xefd4('0x26')](_0x12689a);}return _0x13956c[_0xefd4('0x27')]();};}function saveUpdates(_0x30a1bd,_0x6abbd2){return function(_0x1c4105){if(_0x1c4105){return _0x1c4105[_0xefd4('0x28')](_0x30a1bd)[_0xefd4('0x29')](function(_0x39c28f){return _0x39c28f;});}return null;};}function removeEntity(_0x1a59d9,_0x50303f){return function(_0x696d04){if(_0x696d04){return _0x696d04[_0xefd4('0x2a')]()['then'](function(){var _0x5bf83c=_0x696d04[_0xefd4('0x2b')]({'plain':!![]});var _0x477eb6=_0xefd4('0x2c');return db[_0xefd4('0x2d')][_0xefd4('0x2a')]({'where':{'type':_0x477eb6,'resourceId':_0x5bf83c['id']}})[_0xefd4('0x29')](function(){return _0x696d04;});})[_0xefd4('0x29')](function(){_0x1a59d9['status'](0xcc)[_0xefd4('0x1f')]();});}};}function handleEntityNotFound(_0x4eb8de,_0xe8ff2e){return function(_0x241dbe){if(!_0x241dbe){_0x4eb8de[_0xefd4('0x1e')](0x194);}return _0x241dbe;};}function handleError(_0x31c482,_0x2bae91){_0x2bae91=_0x2bae91||0x1f4;return function(_0x2c0a40){logger[_0xefd4('0x2e')](_0x2c0a40[_0xefd4('0x2f')]);if(_0x2c0a40[_0xefd4('0x30')]){delete _0x2c0a40[_0xefd4('0x30')];}_0x31c482[_0xefd4('0x20')](_0x2bae91)[_0xefd4('0x31')](_0x2c0a40);};}exports['index']=function(_0x4fbf72,_0x3f89cc){var _0x6aab7e={},_0x2cd58d={},_0x5c0b5b={'count':0x0,'rows':[]};var _0x412ede=_[_0xefd4('0x32')](db[_0xefd4('0x33')][_0xefd4('0x34')],function(_0x4716e0){return{'name':_0x4716e0[_0xefd4('0x35')],'type':_0x4716e0[_0xefd4('0x36')][_0xefd4('0x37')]};});_0x2cd58d[_0xefd4('0x38')]=_[_0xefd4('0x32')](_0x412ede,_0xefd4('0x30'));_0x2cd58d['query']=_[_0xefd4('0x39')](_0x4fbf72[_0xefd4('0x3a')]);_0x2cd58d[_0xefd4('0x3b')]=_[_0xefd4('0x3c')](_0x2cd58d[_0xefd4('0x38')],_0x2cd58d[_0xefd4('0x3a')]);_0x6aab7e[_0xefd4('0x3d')]=_[_0xefd4('0x3c')](_0x2cd58d[_0xefd4('0x38')],qs[_0xefd4('0x3e')](_0x4fbf72[_0xefd4('0x3a')][_0xefd4('0x3e')]));_0x6aab7e[_0xefd4('0x3d')]=_0x6aab7e[_0xefd4('0x3d')]['length']?_0x6aab7e['attributes']:_0x2cd58d[_0xefd4('0x38')];if(!_0x4fbf72[_0xefd4('0x3a')]['hasOwnProperty']('nolimit')){_0x6aab7e['limit']=qs[_0xefd4('0x24')](_0x4fbf72[_0xefd4('0x3a')][_0xefd4('0x24')]);_0x6aab7e[_0xefd4('0x22')]=qs['offset'](_0x4fbf72[_0xefd4('0x3a')][_0xefd4('0x22')]);}_0x6aab7e[_0xefd4('0x3f')]=qs[_0xefd4('0x40')](_0x4fbf72[_0xefd4('0x3a')][_0xefd4('0x40')]);_0x6aab7e[_0xefd4('0x41')]=qs[_0xefd4('0x3b')](_[_0xefd4('0x42')](_0x4fbf72[_0xefd4('0x3a')],_0x2cd58d[_0xefd4('0x3b')]),_0x412ede);if(_0x4fbf72[_0xefd4('0x3a')]['filter']){_0x6aab7e[_0xefd4('0x41')]=_[_0xefd4('0x43')](_0x6aab7e[_0xefd4('0x41')],{'$or':_[_0xefd4('0x32')](_0x412ede,function(_0x3ca83c){if(_0x3ca83c[_0xefd4('0x36')]!==_0xefd4('0x44')){var _0x1a9cde={};_0x1a9cde[_0x3ca83c['name']]={'$like':'%'+_0x4fbf72[_0xefd4('0x3a')][_0xefd4('0x45')]+'%'};return _0x1a9cde;}})});}_0x6aab7e=_[_0xefd4('0x43')]({},_0x6aab7e,_0x4fbf72[_0xefd4('0x46')]);var _0x22a3e4={'where':_0x6aab7e[_0xefd4('0x41')]};return db['SmsQueue'][_0xefd4('0x47')](_0x22a3e4)[_0xefd4('0x29')](function(_0x352f8d){_0x5c0b5b[_0xefd4('0x47')]=_0x352f8d;if(_0x4fbf72[_0xefd4('0x3a')][_0xefd4('0x48')]){_0x6aab7e['include']=[{'all':!![]}];}return db['SmsQueue'][_0xefd4('0x49')](_0x6aab7e);})['then'](function(_0x2c9592){_0x5c0b5b[_0xefd4('0x4a')]=_0x2c9592;return _0x5c0b5b;})[_0xefd4('0x29')](respondWithFilteredResult(_0x3f89cc,_0x6aab7e))['catch'](handleError(_0x3f89cc,null));};exports[_0xefd4('0x4b')]=function(_0x5896e5,_0x27930c){var _0x4e28e0={'raw':!![],'where':{'id':_0x5896e5[_0xefd4('0x4c')]['id']}},_0x3101e6={};_0x3101e6[_0xefd4('0x38')]=_[_0xefd4('0x39')](db[_0xefd4('0x33')][_0xefd4('0x34')]);_0x3101e6[_0xefd4('0x3a')]=_['keys'](_0x5896e5[_0xefd4('0x3a')]);_0x3101e6[_0xefd4('0x3b')]=_[_0xefd4('0x3c')](_0x3101e6[_0xefd4('0x38')],_0x3101e6['query']);_0x4e28e0[_0xefd4('0x3d')]=_['intersection'](_0x3101e6['model'],qs[_0xefd4('0x3e')](_0x5896e5[_0xefd4('0x3a')][_0xefd4('0x3e')]));_0x4e28e0[_0xefd4('0x3d')]=_0x4e28e0[_0xefd4('0x3d')][_0xefd4('0x4d')]?_0x4e28e0[_0xefd4('0x3d')]:_0x3101e6[_0xefd4('0x38')];if(_0x5896e5[_0xefd4('0x3a')][_0xefd4('0x48')]){_0x4e28e0[_0xefd4('0x4e')]=[{'all':!![]}];}_0x4e28e0=_['merge']({},_0x4e28e0,_0x5896e5[_0xefd4('0x46')]);return db[_0xefd4('0x33')][_0xefd4('0x4f')](_0x4e28e0)['then'](handleEntityNotFound(_0x27930c,null))[_0xefd4('0x29')](respondWithResult(_0x27930c,null))[_0xefd4('0x50')](handleError(_0x27930c,null));};exports[_0xefd4('0x51')]=function(_0x2074a8,_0x4fc878){return db[_0xefd4('0x33')][_0xefd4('0x51')](_0x2074a8[_0xefd4('0x52')],{})[_0xefd4('0x29')](function(_0x2297f4){var _0x3b1423=_0x2074a8[_0xefd4('0x53')][_0xefd4('0x2b')]({'plain':!![]});if(!_0x3b1423)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3b1423[_0xefd4('0x54')]===_0xefd4('0x53')){var _0x19fb03=_0x2297f4[_0xefd4('0x2b')]({'plain':!![]});var _0x2c5051=_0xefd4('0x2c');return db[_0xefd4('0x55')][_0xefd4('0x4f')]({'where':{'name':_0x2c5051,'userProfileId':_0x3b1423['userProfileId']},'raw':!![]})[_0xefd4('0x29')](function(_0x1f34a0){if(_0x1f34a0&&_0x1f34a0[_0xefd4('0x56')]===0x0){return db[_0xefd4('0x2d')][_0xefd4('0x51')]({'name':_0x19fb03['name'],'resourceId':_0x19fb03['id'],'type':_0x1f34a0['name'],'sectionId':_0x1f34a0['id']},{})['then'](function(){return _0x2297f4;});}else{return _0x2297f4;}})['catch'](function(_0x11b7c9){logger[_0xefd4('0x2e')](_0xefd4('0x57'),_0x11b7c9);throw _0x11b7c9;});}return _0x2297f4;})[_0xefd4('0x29')](respondWithResult(_0x4fc878,0xc9))[_0xefd4('0x50')](handleError(_0x4fc878,null));};exports['update']=function(_0x3d1fe5,_0x5defda){if(_0x3d1fe5[_0xefd4('0x52')]['id']){delete _0x3d1fe5['body']['id'];}return db[_0xefd4('0x33')][_0xefd4('0x4f')]({'where':{'id':_0x3d1fe5[_0xefd4('0x4c')]['id']}})[_0xefd4('0x29')](handleEntityNotFound(_0x5defda,null))[_0xefd4('0x29')](saveUpdates(_0x3d1fe5[_0xefd4('0x52')],null))['then'](respondWithResult(_0x5defda,null))[_0xefd4('0x50')](handleError(_0x5defda,null));};exports[_0xefd4('0x2a')]=function(_0x3334a3,_0x285f0d){return db[_0xefd4('0x33')]['find']({'where':{'id':_0x3334a3['params']['id']}})[_0xefd4('0x29')](handleEntityNotFound(_0x285f0d,null))[_0xefd4('0x29')](removeEntity(_0x285f0d,null))[_0xefd4('0x50')](handleError(_0x285f0d,null));};exports['describe']=function(_0x575026,_0x46fa3a){return db[_0xefd4('0x33')][_0xefd4('0x58')]()['then'](respondWithResult(_0x46fa3a,null))[_0xefd4('0x50')](handleError(_0x46fa3a,null));};exports[_0xefd4('0x59')]=function(_0x21cb5e,_0x523b8c,_0x3e0e66){var _0x58cccb={'raw':!![],'where':{}},_0x62cae4={},_0x11d68b;return db[_0xefd4('0x33')]['findOne']({'where':{'id':_0x21cb5e[_0xefd4('0x4c')]['id']}})[_0xefd4('0x29')](handleEntityNotFound(_0x523b8c,null))[_0xefd4('0x29')](function(_0x14e31d){if(_0x14e31d){_0x11d68b=_0x14e31d[_0xefd4('0x2b')]({'plain':!![]});_0x62cae4['model']=_[_0xefd4('0x39')](db['UserSmsQueue'][_0xefd4('0x34')]);_0x62cae4[_0xefd4('0x3a')]=_[_0xefd4('0x39')](_0x21cb5e[_0xefd4('0x3a')]);_0x62cae4[_0xefd4('0x3b')]=_['intersection'](_0x62cae4[_0xefd4('0x38')],_0x62cae4['query']);_0x58cccb[_0xefd4('0x3d')]=_[_0xefd4('0x3c')](_0x62cae4[_0xefd4('0x38')],qs[_0xefd4('0x3e')](_0x21cb5e[_0xefd4('0x3a')]['fields']));_0x58cccb[_0xefd4('0x3d')]=_0x58cccb[_0xefd4('0x3d')][_0xefd4('0x4d')]?_0x58cccb[_0xefd4('0x3d')]:_0x62cae4[_0xefd4('0x38')];if(!_0x21cb5e[_0xefd4('0x3a')]['hasOwnProperty']('nolimit')){_0x58cccb['limit']=qs['limit'](_0x21cb5e['query'][_0xefd4('0x24')]);_0x58cccb['offset']=qs['offset'](_0x21cb5e[_0xefd4('0x3a')][_0xefd4('0x22')]);}_0x58cccb['order']=qs[_0xefd4('0x40')](_0x21cb5e[_0xefd4('0x3a')]['sort']);_0x58cccb[_0xefd4('0x41')]=qs[_0xefd4('0x3b')](_[_0xefd4('0x42')](_0x21cb5e[_0xefd4('0x3a')],_0x62cae4['filters']));_0x58cccb[_0xefd4('0x41')][_0xefd4('0x5a')]=_0x14e31d['id'];if(_0x21cb5e[_0xefd4('0x3a')][_0xefd4('0x45')]){_0x58cccb['where']=_[_0xefd4('0x43')](_0x58cccb[_0xefd4('0x41')],{'$or':_['map'](_0x58cccb[_0xefd4('0x3d')],function(_0x2254ec){var _0x5ec7a2={};_0x5ec7a2[_0x2254ec]={'$like':'%'+_0x21cb5e[_0xefd4('0x3a')]['filter']+'%'};return _0x5ec7a2;})});}_0x58cccb=_[_0xefd4('0x43')]({},_0x58cccb,_0x21cb5e[_0xefd4('0x46')]);return db[_0xefd4('0x5b')]['findAll'](_0x58cccb);}})[_0xefd4('0x29')](function(_0x2fbbb9){if(_0x2fbbb9){return db[_0xefd4('0x5c')][_0xefd4('0x5d')]({'where':{'id':_[_0xefd4('0x32')](_0x2fbbb9,_0xefd4('0x5e')),'role':_0xefd4('0x5f')},'attributes':['id',_0xefd4('0x30'),_0xefd4('0x60'),_0xefd4('0x61'),_0xefd4('0x62')]});}})['then'](function(_0x558428){if(_0x558428){return{'count':_0x558428[_0xefd4('0x47')],'rows':_['map'](_0x558428['rows'],function(_0x557245){return{'membername':_0x557245[_0xefd4('0x30')],'UserId':_0x557245['id'],'queue_name':_0x11d68b[_0xefd4('0x30')],'SmsQueueId':_0x11d68b['id'],'interface':util[_0xefd4('0x63')](_0xefd4('0x64'),_0xefd4('0x65'),_0x557245['name']),'penalty':0x0,'paused':_0x557245[_0xefd4('0x60')],'createdAt':_0x557245[_0xefd4('0x62')],'updatedAt':_0x557245[_0xefd4('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xefd4('0x29')](respondWithFilteredResult(_0x523b8c,_0x58cccb))['catch'](handleError(_0x523b8c,null));};exports[_0xefd4('0x66')]=function(_0x46b7fc,_0x224002,_0x2ab70d){var _0x597ec5={};var _0x232e4c={};var _0x1f6ea6;var _0x2454bf;return db[_0xefd4('0x33')][_0xefd4('0x67')]({'where':{'id':_0x46b7fc[_0xefd4('0x4c')]['id']}})[_0xefd4('0x29')](handleEntityNotFound(_0x224002,null))[_0xefd4('0x29')](function(_0x251580){if(_0x251580){_0x1f6ea6=_0x251580;_0x232e4c[_0xefd4('0x38')]=_[_0xefd4('0x39')](db[_0xefd4('0x68')][_0xefd4('0x34')]);_0x232e4c['query']=_[_0xefd4('0x39')](_0x46b7fc['query']);_0x232e4c[_0xefd4('0x3b')]=_[_0xefd4('0x3c')](_0x232e4c['model'],_0x232e4c[_0xefd4('0x3a')]);_0x597ec5[_0xefd4('0x3d')]=_[_0xefd4('0x3c')](_0x232e4c['model'],qs['fields'](_0x46b7fc[_0xefd4('0x3a')]['fields']));_0x597ec5[_0xefd4('0x3d')]=_0x597ec5[_0xefd4('0x3d')][_0xefd4('0x4d')]?_0x597ec5[_0xefd4('0x3d')]:_0x232e4c[_0xefd4('0x38')];_0x597ec5[_0xefd4('0x3f')]=qs[_0xefd4('0x40')](_0x46b7fc[_0xefd4('0x3a')][_0xefd4('0x40')]);_0x597ec5[_0xefd4('0x41')]=qs[_0xefd4('0x3b')](_['pick'](_0x46b7fc[_0xefd4('0x3a')],_0x232e4c[_0xefd4('0x3b')]));if(_0x46b7fc[_0xefd4('0x3a')]['filter']){_0x597ec5[_0xefd4('0x41')]=_[_0xefd4('0x43')](_0x597ec5['where'],{'$or':_[_0xefd4('0x32')](_0x597ec5['attributes'],function(_0x24a7fc){var _0x3dd874={};_0x3dd874[_0x24a7fc]={'$like':'%'+_0x46b7fc[_0xefd4('0x3a')][_0xefd4('0x45')]+'%'};return _0x3dd874;})});}_0x597ec5=_[_0xefd4('0x43')]({},_0x597ec5,_0x46b7fc['options']);return _0x1f6ea6[_0xefd4('0x66')](_0x597ec5);}})[_0xefd4('0x29')](function(_0x85a478){if(_0x85a478){_0x2454bf=_0x85a478[_0xefd4('0x4d')];if(!_0x46b7fc[_0xefd4('0x3a')][_0xefd4('0x69')](_0xefd4('0x6a'))){_0x597ec5[_0xefd4('0x24')]=qs[_0xefd4('0x24')](_0x46b7fc['query']['limit']);_0x597ec5[_0xefd4('0x22')]=qs[_0xefd4('0x22')](_0x46b7fc['query']['offset']);}return _0x1f6ea6[_0xefd4('0x66')](_0x597ec5);}})['then'](function(_0x2a1037){if(_0x2a1037){return _0x2a1037?{'count':_0x2454bf,'rows':_0x2a1037}:null;}})['then'](respondWithResult(_0x224002,null))[_0xefd4('0x50')](handleError(_0x224002,null));};exports[_0xefd4('0x6b')]=function(_0x27b24a,_0x20ccee,_0x31188c){var _0x3cbc3a=_0x27b24a[_0xefd4('0x52')]['ids'];return db['Team']['findAll']({'where':{'id':_0x3cbc3a},'attributes':['id'],'include':[{'model':db[_0xefd4('0x5c')],'as':_0xefd4('0x6c'),'attributes':['id',_0xefd4('0x30'),'online',_0xefd4('0x6d'),_0xefd4('0x6e')],'raw':!![]}]})[_0xefd4('0x29')](function(_0x1da97a){if(_0x1da97a){var _0x119ba0=_[_0xefd4('0x6f')](_0x1da97a,function(_0x229e0f){var _0x1fb1d6=_0x229e0f[_0xefd4('0x2b')]({'plain':!![]});return _0x1fb1d6['Agents'];});return db[_0xefd4('0x33')][_0xefd4('0x4f')]({'where':{'id':_0x27b24a['params']['id']}})['then'](function(_0x46ad80){return db[_0xefd4('0x70')]['transaction'](function(_0x5a518b){return _0x46ad80['addTeams'](_0x3cbc3a,{'transaction':_0x5a518b})[_0xefd4('0x29')](function(){return BPromise[_0xefd4('0x71')](_0x119ba0,function(_0x58646b){return db[_0xefd4('0x5b')][_0xefd4('0x72')]({'where':{'UserId':_0x58646b['id'],'SmsQueueId':_0x27b24a[_0xefd4('0x4c')]['id']},'transaction':_0x5a518b});});})[_0xefd4('0x29')](function(){_0x119ba0[_0xefd4('0x73')](function(_0x4e83f5){socket[_0xefd4('0x74')](_0xefd4('0x75'),{'UserId':_0x4e83f5['id'],'SmsQueueId':_0x46ad80['id']});});});});});}})[_0xefd4('0x29')](respondWithStatusCode(_0x20ccee,null))[_0xefd4('0x50')](handleError(_0x20ccee,null));};exports[_0xefd4('0x76')]=function(_0x3c506c,_0x532f87,_0x5042aa){return db['Team']['findAll']({'where':{'id':_0x3c506c[_0xefd4('0x3a')][_0xefd4('0x77')]},'attributes':['id'],'include':[{'model':db[_0xefd4('0x5c')],'as':_0xefd4('0x6c'),'attributes':['id'],'raw':!![]}]})[_0xefd4('0x29')](handleEntityNotFound(_0x532f87,null))[_0xefd4('0x29')](function(_0x9cd732){var _0x52f2f8=_[_0xefd4('0x32')](_0x9cd732,'id');var _0x587d22=[];var _0x47f1cb=[];var _0x4e19e7=squel['select']();_0x4e19e7[_0xefd4('0x78')](_0xefd4('0x79'))['from'](_0xefd4('0x7a'),'tq')['join'](_0xefd4('0x7b'),'ut',_0xefd4('0x7c'))[_0xefd4('0x41')](_0xefd4('0x7d'),_0x3c506c[_0xefd4('0x4c')]['id']);for(var _0x395ddb=0x0;_0x395ddb<_0x9cd732[_0xefd4('0x4d')];_0x395ddb+=0x1){let _0x51ce31=_0x9cd732[_0x395ddb];for(var _0x47be11=0x0;_0x47be11<_0x51ce31[_0xefd4('0x6c')][_0xefd4('0x4d')];_0x47be11+=0x1){let _0x16b304=_0x51ce31[_0xefd4('0x6c')][_0x47be11];var _0x338b9b=_0x4e19e7[_0xefd4('0x7e')]();_0x338b9b['where']('ut.UserId\x20=\x20?',_0x16b304['id']);_0x47f1cb[_0xefd4('0x7f')](db[_0xefd4('0x70')][_0xefd4('0x3a')](_0x338b9b[_0xefd4('0x80')](),{'type':db[_0xefd4('0x70')]['QueryTypes'][_0xefd4('0x81')]})[_0xefd4('0x29')](function(_0x112583){if(_0x112583[_0xefd4('0x4d')]===0x1){return _0x16b304['id'];}else{var _0x170352=_[_0xefd4('0x82')](_[_0xefd4('0x32')](_0x112583,_0xefd4('0x83')),function(_0x39bc23){return _[_0xefd4('0x84')](_0x52f2f8,_0x39bc23);});if(_0x170352){return _0x16b304['id'];}}}));}}return BPromise['all'](_0x47f1cb)[_0xefd4('0x29')](function(_0x42ddba){_0x587d22=_(_0x587d22)[_0xefd4('0x85')](_0x42ddba)['compact']()[_0xefd4('0x86')]();return db[_0xefd4('0x33')][_0xefd4('0x4f')]({'where':{'id':_0x3c506c[_0xefd4('0x4c')]['id']}})[_0xefd4('0x29')](function(_0xa90c6a){return db[_0xefd4('0x70')][_0xefd4('0x87')](function(_0x499b63){return _0xa90c6a[_0xefd4('0x76')](_0x3c506c[_0xefd4('0x3a')][_0xefd4('0x77')],{'transaction':_0x499b63})[_0xefd4('0x29')](function(){if(!_['isEmpty'](_0x587d22)){return _0xa90c6a[_0xefd4('0x88')](_0x587d22,{'transaction':_0x499b63});}})[_0xefd4('0x29')](function(){_0x587d22[_0xefd4('0x73')](function(_0x4c499b){socket[_0xefd4('0x74')]('userSmsQueue:remove',{'UserId':_0x4c499b,'SmsQueueId':_0xa90c6a['id']});});});});});});})['then'](respondWithStatusCode(_0x532f87,null))[_0xefd4('0x50')](handleError(_0x532f87,null));};exports[_0xefd4('0x89')]=function(_0x449d47,_0x488a4f,_0x2a7472){return db[_0xefd4('0x33')][_0xefd4('0x4f')]({'where':{'id':_0x449d47[_0xefd4('0x4c')]['id']}})['then'](handleEntityNotFound(_0x488a4f,null))[_0xefd4('0x29')](function(_0x497c62){if(_0x497c62){return _0x497c62[_0xefd4('0x89')](_0x449d47[_0xefd4('0x52')]['ids'],_['omit'](_0x449d47[_0xefd4('0x52')],['ids','id'])||{})['spread'](function(_0x265cb9){for(var _0x20ca39=0x0;_0x20ca39<_0x449d47[_0xefd4('0x52')]['ids'][_0xefd4('0x4d')];_0x20ca39+=0x1){socket[_0xefd4('0x74')](_0xefd4('0x75'),{'UserId':Number(_0x449d47[_0xefd4('0x52')]['ids'][_0x20ca39]),'SmsQueueId':Number(_0x449d47[_0xefd4('0x4c')]['id'])});}return _0x265cb9;});}})['then'](respondWithResult(_0x488a4f,null))[_0xefd4('0x50')](handleError(_0x488a4f,null));};exports[_0xefd4('0x88')]=function(_0x3635e6,_0x44bd03,_0x33fe89){return db[_0xefd4('0x33')][_0xefd4('0x4f')]({'where':{'id':_0x3635e6[_0xefd4('0x4c')]['id']}})[_0xefd4('0x29')](handleEntityNotFound(_0x44bd03,null))[_0xefd4('0x29')](function(_0x3ac2d7){if(_0x3ac2d7){return _0x3ac2d7[_0xefd4('0x88')](_0x3635e6[_0xefd4('0x3a')]['ids'])['then'](function(){if(_[_0xefd4('0x8a')](_0x3635e6[_0xefd4('0x3a')][_0xefd4('0x77')])){for(var _0x79b783=0x0;_0x79b783<_0x3635e6[_0xefd4('0x3a')][_0xefd4('0x77')][_0xefd4('0x4d')];_0x79b783+=0x1){socket[_0xefd4('0x74')](_0xefd4('0x8b'),{'UserId':Number(_0x3635e6[_0xefd4('0x3a')]['ids'][_0x79b783]),'SmsQueueId':Number(_0x3635e6[_0xefd4('0x4c')]['id'])});}}else{socket[_0xefd4('0x74')](_0xefd4('0x8b'),{'UserId':Number(_0x3635e6[_0xefd4('0x3a')]['ids']),'SmsQueueId':Number(_0x3635e6['params']['id'])});}});}})[_0xefd4('0x29')](respondWithStatusCode(_0x44bd03,null))['catch'](handleError(_0x44bd03,null));};exports['getAgents']=function(_0x50dc7d,_0x4beb87,_0x3ec9b0){var _0x2b987b={};var _0x2ba570={};var _0xce247c;var _0x342e3c;return db[_0xefd4('0x33')][_0xefd4('0x67')]({'where':{'id':_0x50dc7d['params']['id']}})[_0xefd4('0x29')](handleEntityNotFound(_0x4beb87,null))['then'](function(_0x5de817){if(_0x5de817){_0xce247c=_0x5de817;_0x2ba570[_0xefd4('0x38')]=_[_0xefd4('0x39')](db['User'][_0xefd4('0x34')]);_0x2ba570[_0xefd4('0x3a')]=_[_0xefd4('0x39')](_0x50dc7d[_0xefd4('0x3a')]);_0x2ba570[_0xefd4('0x3b')]=_[_0xefd4('0x3c')](_0x2ba570[_0xefd4('0x38')],_0x2ba570[_0xefd4('0x3a')]);_0x2b987b[_0xefd4('0x3d')]=_['intersection'](_0x2ba570['model'],qs[_0xefd4('0x3e')](_0x50dc7d[_0xefd4('0x3a')][_0xefd4('0x3e')]));_0x2b987b['attributes']=_0x2b987b['attributes'][_0xefd4('0x4d')]?_0x2b987b[_0xefd4('0x3d')]:_0x2ba570[_0xefd4('0x38')];_0x2b987b[_0xefd4('0x3f')]=qs['sort'](_0x50dc7d[_0xefd4('0x3a')][_0xefd4('0x40')]);_0x2b987b[_0xefd4('0x41')]=qs[_0xefd4('0x3b')](_['pick'](_0x50dc7d['query'],_0x2ba570['filters']));if(_0x50dc7d[_0xefd4('0x3a')]['filter']){_0x2b987b[_0xefd4('0x41')]=_[_0xefd4('0x43')](_0x2b987b[_0xefd4('0x41')],{'$or':_[_0xefd4('0x32')](_0x2b987b[_0xefd4('0x3d')],function(_0x2b8512){var _0xd0e97={};_0xd0e97[_0x2b8512]={'$like':'%'+_0x50dc7d[_0xefd4('0x3a')]['filter']+'%'};return _0xd0e97;})});}_0x2b987b=_[_0xefd4('0x43')]({},_0x2b987b,_0x50dc7d[_0xefd4('0x46')]);return _0xce247c[_0xefd4('0x8c')](_0x2b987b);}})['then'](function(_0x39663c){if(_0x39663c){_0x342e3c=_0x39663c['length'];if(!_0x50dc7d['query'][_0xefd4('0x69')](_0xefd4('0x6a'))){_0x2b987b['limit']=qs[_0xefd4('0x24')](_0x50dc7d['query'][_0xefd4('0x24')]);_0x2b987b[_0xefd4('0x22')]=qs[_0xefd4('0x22')](_0x50dc7d[_0xefd4('0x3a')][_0xefd4('0x22')]);}return _0xce247c[_0xefd4('0x8c')](_0x2b987b);}})[_0xefd4('0x29')](function(_0x228d63){if(_0x228d63){return _0x228d63?{'count':_0x342e3c,'rows':_0x228d63}:null;}})[_0xefd4('0x29')](respondWithResult(_0x4beb87,null))[_0xefd4('0x50')](handleError(_0x4beb87,null));};
\ No newline at end of file
+var _0xfd48=['fields','attributes','hasOwnProperty','nolimit','order','sort','pick','where','filter','merge','options','includeAll','include','findAll','rows','catch','show','keys','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','getMembers','findOne','SmsQueueId','UserId','agent','updatedAt','createdAt','format','%s/%s','SIP','smsPause','getTeams','Team','addTeams','ids','voicePause','interface','flatMap','Agents','transaction','each','UserSmsQueue','forEach','emit','userSmsQueue:save','removeTeams','User','select','field','from','team_has_sms_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','SELECT','every','includes','all','union','compact','value','isEmpty','userSmsQueue:remove','addAgents','omit','removeAgents','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./smsQueue.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','SmsQueues','UserProfileResource','error','stack','name','send','SmsQueue','rawAttributes','fieldName','type','key','model','map','query','filters','intersection'];(function(_0x3c4f8d,_0x10e640){var _0x580018=function(_0x1bf85b){while(--_0x1bf85b){_0x3c4f8d['push'](_0x3c4f8d['shift']());}};_0x580018(++_0x10e640);}(_0xfd48,0xe7));var _0x8fd4=function(_0x3901e7,_0xd21064){_0x3901e7=_0x3901e7-0x0;var _0x2f71a0=_0xfd48[_0x3901e7];return _0x2f71a0;};'use strict';var emlformat=require(_0x8fd4('0x0'));var rimraf=require(_0x8fd4('0x1'));var zipdir=require(_0x8fd4('0x2'));var jsonpatch=require(_0x8fd4('0x3'));var rp=require(_0x8fd4('0x4'));var moment=require('moment');var BPromise=require(_0x8fd4('0x5'));var Mustache=require(_0x8fd4('0x6'));var util=require('util');var path=require(_0x8fd4('0x7'));var sox=require('sox');var csv=require(_0x8fd4('0x8'));var ejs=require(_0x8fd4('0x9'));var fs=require('fs');var fs_extra=require(_0x8fd4('0xa'));var _=require(_0x8fd4('0xb'));var squel=require(_0x8fd4('0xc'));var crypto=require(_0x8fd4('0xd'));var jsforce=require(_0x8fd4('0xe'));var deskjs=require(_0x8fd4('0xf'));var toCsv=require(_0x8fd4('0x8'));var querystring=require(_0x8fd4('0x10'));var Papa=require('papaparse');var Redis=require(_0x8fd4('0x11'));var authService=require(_0x8fd4('0x12'));var qs=require(_0x8fd4('0x13'));var as=require(_0x8fd4('0x14'));var hardwareService=require(_0x8fd4('0x15'));var logger=require(_0x8fd4('0x16'))('api');var utils=require(_0x8fd4('0x17'));var config=require(_0x8fd4('0x18'));var licenseUtil=require(_0x8fd4('0x19'));var db=require(_0x8fd4('0x1a'))['db'];config['redis']=_['defaults'](config[_0x8fd4('0x1b')],{'host':_0x8fd4('0x1c'),'port':0x18eb});var socket=require(_0x8fd4('0x1d'))(new Redis(config['redis']));require(_0x8fd4('0x1e'))[_0x8fd4('0x1f')](socket);function respondWithStatusCode(_0x5867d4,_0x303295){_0x303295=_0x303295||0xcc;return function(_0xf957be){if(_0xf957be){return _0x5867d4[_0x8fd4('0x20')](_0x303295);}return _0x5867d4['status'](_0x303295)[_0x8fd4('0x21')]();};}function respondWithResult(_0x4ea012,_0x30af05){_0x30af05=_0x30af05||0xc8;return function(_0x449430){if(_0x449430){return _0x4ea012[_0x8fd4('0x22')](_0x30af05)[_0x8fd4('0x23')](_0x449430);}};}function respondWithFilteredResult(_0x275a9f,_0x3a04d5){return function(_0x5dd897){if(_0x5dd897){var _0x2feded=typeof _0x3a04d5[_0x8fd4('0x24')]===_0x8fd4('0x25')&&typeof _0x3a04d5[_0x8fd4('0x26')]===_0x8fd4('0x25');var _0x55f13d=_0x5dd897[_0x8fd4('0x27')];var _0x2b0056=_0x2feded?0x0:_0x3a04d5['offset'];var _0x4728d5=_0x2feded?_0x5dd897['count']:_0x3a04d5[_0x8fd4('0x24')]+_0x3a04d5[_0x8fd4('0x26')];var _0x12bd62;if(_0x4728d5>=_0x55f13d){_0x4728d5=_0x55f13d;_0x12bd62=0xc8;}else{_0x12bd62=0xce;}_0x275a9f['status'](_0x12bd62);return _0x275a9f[_0x8fd4('0x28')](_0x8fd4('0x29'),_0x2b0056+'-'+_0x4728d5+'/'+_0x55f13d)[_0x8fd4('0x23')](_0x5dd897);}return null;};}function patchUpdates(_0xbe615e){return function(_0x22b885){try{jsonpatch[_0x8fd4('0x2a')](_0x22b885,_0xbe615e,!![]);}catch(_0x4e46f5){return BPromise[_0x8fd4('0x2b')](_0x4e46f5);}return _0x22b885[_0x8fd4('0x2c')]();};}function saveUpdates(_0xd6a0f3,_0x1c846f){return function(_0xa64fbd){if(_0xa64fbd){return _0xa64fbd[_0x8fd4('0x2d')](_0xd6a0f3)[_0x8fd4('0x2e')](function(_0x5b512d){return _0x5b512d;});}return null;};}function removeEntity(_0x3269a1,_0x4aa7d1){return function(_0x5dcd80){if(_0x5dcd80){return _0x5dcd80[_0x8fd4('0x2f')]()['then'](function(){var _0x44c923=_0x5dcd80[_0x8fd4('0x30')]({'plain':!![]});var _0x24a9be=_0x8fd4('0x31');return db[_0x8fd4('0x32')][_0x8fd4('0x2f')]({'where':{'type':_0x24a9be,'resourceId':_0x44c923['id']}})['then'](function(){return _0x5dcd80;});})[_0x8fd4('0x2e')](function(){_0x3269a1[_0x8fd4('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x193b34,_0x628458){return function(_0x475552){if(!_0x475552){_0x193b34[_0x8fd4('0x20')](0x194);}return _0x475552;};}function handleError(_0x35110b,_0x36ce82){_0x36ce82=_0x36ce82||0x1f4;return function(_0x5661a5){logger[_0x8fd4('0x33')](_0x5661a5[_0x8fd4('0x34')]);if(_0x5661a5[_0x8fd4('0x35')]){delete _0x5661a5[_0x8fd4('0x35')];}_0x35110b[_0x8fd4('0x22')](_0x36ce82)[_0x8fd4('0x36')](_0x5661a5);};}exports['index']=function(_0x17ae3c,_0x44d444){var _0x370455={},_0x14ca67={},_0x54c154={'count':0x0,'rows':[]};var _0x4511e8=_['map'](db[_0x8fd4('0x37')][_0x8fd4('0x38')],function(_0x3b5f8f){return{'name':_0x3b5f8f[_0x8fd4('0x39')],'type':_0x3b5f8f[_0x8fd4('0x3a')][_0x8fd4('0x3b')]};});_0x14ca67[_0x8fd4('0x3c')]=_[_0x8fd4('0x3d')](_0x4511e8,'name');_0x14ca67[_0x8fd4('0x3e')]=_['keys'](_0x17ae3c[_0x8fd4('0x3e')]);_0x14ca67[_0x8fd4('0x3f')]=_[_0x8fd4('0x40')](_0x14ca67[_0x8fd4('0x3c')],_0x14ca67[_0x8fd4('0x3e')]);_0x370455['attributes']=_[_0x8fd4('0x40')](_0x14ca67['model'],qs['fields'](_0x17ae3c[_0x8fd4('0x3e')][_0x8fd4('0x41')]));_0x370455['attributes']=_0x370455['attributes']['length']?_0x370455[_0x8fd4('0x42')]:_0x14ca67[_0x8fd4('0x3c')];if(!_0x17ae3c[_0x8fd4('0x3e')][_0x8fd4('0x43')](_0x8fd4('0x44'))){_0x370455[_0x8fd4('0x26')]=qs[_0x8fd4('0x26')](_0x17ae3c[_0x8fd4('0x3e')][_0x8fd4('0x26')]);_0x370455[_0x8fd4('0x24')]=qs[_0x8fd4('0x24')](_0x17ae3c[_0x8fd4('0x3e')][_0x8fd4('0x24')]);}_0x370455[_0x8fd4('0x45')]=qs[_0x8fd4('0x46')](_0x17ae3c[_0x8fd4('0x3e')][_0x8fd4('0x46')]);_0x370455['where']=qs[_0x8fd4('0x3f')](_[_0x8fd4('0x47')](_0x17ae3c['query'],_0x14ca67[_0x8fd4('0x3f')]),_0x4511e8);if(_0x17ae3c[_0x8fd4('0x3e')]['filter']){_0x370455[_0x8fd4('0x48')]=_['merge'](_0x370455[_0x8fd4('0x48')],{'$or':_['map'](_0x4511e8,function(_0x291de8){if(_0x291de8[_0x8fd4('0x3a')]!=='VIRTUAL'){var _0x33b53f={};_0x33b53f[_0x291de8['name']]={'$like':'%'+_0x17ae3c[_0x8fd4('0x3e')][_0x8fd4('0x49')]+'%'};return _0x33b53f;}})});}_0x370455=_[_0x8fd4('0x4a')]({},_0x370455,_0x17ae3c[_0x8fd4('0x4b')]);var _0x2af2bd={'where':_0x370455[_0x8fd4('0x48')]};return db[_0x8fd4('0x37')][_0x8fd4('0x27')](_0x2af2bd)['then'](function(_0x56f8f8){_0x54c154[_0x8fd4('0x27')]=_0x56f8f8;if(_0x17ae3c['query'][_0x8fd4('0x4c')]){_0x370455[_0x8fd4('0x4d')]=[{'all':!![]}];}return db[_0x8fd4('0x37')][_0x8fd4('0x4e')](_0x370455);})[_0x8fd4('0x2e')](function(_0x4ded1d){_0x54c154[_0x8fd4('0x4f')]=_0x4ded1d;return _0x54c154;})['then'](respondWithFilteredResult(_0x44d444,_0x370455))[_0x8fd4('0x50')](handleError(_0x44d444,null));};exports[_0x8fd4('0x51')]=function(_0x179d0f,_0x1c5f30){var _0x3eb83a={'raw':!![],'where':{'id':_0x179d0f['params']['id']}},_0xcc8230={};_0xcc8230['model']=_[_0x8fd4('0x52')](db[_0x8fd4('0x37')][_0x8fd4('0x38')]);_0xcc8230[_0x8fd4('0x3e')]=_[_0x8fd4('0x52')](_0x179d0f[_0x8fd4('0x3e')]);_0xcc8230[_0x8fd4('0x3f')]=_[_0x8fd4('0x40')](_0xcc8230[_0x8fd4('0x3c')],_0xcc8230[_0x8fd4('0x3e')]);_0x3eb83a[_0x8fd4('0x42')]=_[_0x8fd4('0x40')](_0xcc8230[_0x8fd4('0x3c')],qs[_0x8fd4('0x41')](_0x179d0f['query'][_0x8fd4('0x41')]));_0x3eb83a[_0x8fd4('0x42')]=_0x3eb83a[_0x8fd4('0x42')][_0x8fd4('0x53')]?_0x3eb83a[_0x8fd4('0x42')]:_0xcc8230[_0x8fd4('0x3c')];if(_0x179d0f['query']['includeAll']){_0x3eb83a[_0x8fd4('0x4d')]=[{'all':!![]}];}_0x3eb83a=_[_0x8fd4('0x4a')]({},_0x3eb83a,_0x179d0f[_0x8fd4('0x4b')]);return db[_0x8fd4('0x37')][_0x8fd4('0x54')](_0x3eb83a)['then'](handleEntityNotFound(_0x1c5f30,null))[_0x8fd4('0x2e')](respondWithResult(_0x1c5f30,null))[_0x8fd4('0x50')](handleError(_0x1c5f30,null));};exports[_0x8fd4('0x55')]=function(_0x523525,_0x44a003){return db[_0x8fd4('0x37')][_0x8fd4('0x55')](_0x523525['body'],{})[_0x8fd4('0x2e')](function(_0x505250){var _0x5bb0be=_0x523525[_0x8fd4('0x56')][_0x8fd4('0x30')]({'plain':!![]});if(!_0x5bb0be)throw new Error(_0x8fd4('0x57'));if(_0x5bb0be[_0x8fd4('0x58')]==='user'){var _0x389c14=_0x505250[_0x8fd4('0x30')]({'plain':!![]});var _0x1d2ca2=_0x8fd4('0x31');return db[_0x8fd4('0x59')][_0x8fd4('0x54')]({'where':{'name':_0x1d2ca2,'userProfileId':_0x5bb0be['userProfileId']},'raw':!![]})['then'](function(_0x3cf6aa){if(_0x3cf6aa&&_0x3cf6aa[_0x8fd4('0x5a')]===0x0){return db[_0x8fd4('0x32')]['create']({'name':_0x389c14[_0x8fd4('0x35')],'resourceId':_0x389c14['id'],'type':_0x3cf6aa['name'],'sectionId':_0x3cf6aa['id']},{})[_0x8fd4('0x2e')](function(){return _0x505250;});}else{return _0x505250;}})['catch'](function(_0x2812d2){logger[_0x8fd4('0x33')](_0x8fd4('0x5b'),_0x2812d2);throw _0x2812d2;});}return _0x505250;})[_0x8fd4('0x2e')](respondWithResult(_0x44a003,0xc9))[_0x8fd4('0x50')](handleError(_0x44a003,null));};exports[_0x8fd4('0x2d')]=function(_0x49e867,_0x1b57a7){if(_0x49e867[_0x8fd4('0x5c')]['id']){delete _0x49e867[_0x8fd4('0x5c')]['id'];}return db[_0x8fd4('0x37')][_0x8fd4('0x54')]({'where':{'id':_0x49e867[_0x8fd4('0x5d')]['id']}})['then'](handleEntityNotFound(_0x1b57a7,null))['then'](saveUpdates(_0x49e867['body'],null))[_0x8fd4('0x2e')](respondWithResult(_0x1b57a7,null))[_0x8fd4('0x50')](handleError(_0x1b57a7,null));};exports[_0x8fd4('0x2f')]=function(_0x59de80,_0x4f2f83){return db['SmsQueue'][_0x8fd4('0x54')]({'where':{'id':_0x59de80['params']['id']}})[_0x8fd4('0x2e')](handleEntityNotFound(_0x4f2f83,null))[_0x8fd4('0x2e')](removeEntity(_0x4f2f83,null))[_0x8fd4('0x50')](handleError(_0x4f2f83,null));};exports[_0x8fd4('0x5e')]=function(_0x2ac49e,_0x12343b){return db[_0x8fd4('0x37')][_0x8fd4('0x5e')]()[_0x8fd4('0x2e')](respondWithResult(_0x12343b,null))[_0x8fd4('0x50')](handleError(_0x12343b,null));};exports[_0x8fd4('0x5f')]=function(_0x363128,_0x4e900b,_0x22c36c){var _0x509377={'raw':!![],'where':{}},_0x142e6a={},_0x381ec5;return db[_0x8fd4('0x37')][_0x8fd4('0x60')]({'where':{'id':_0x363128[_0x8fd4('0x5d')]['id']}})[_0x8fd4('0x2e')](handleEntityNotFound(_0x4e900b,null))['then'](function(_0x2e7f26){if(_0x2e7f26){_0x381ec5=_0x2e7f26[_0x8fd4('0x30')]({'plain':!![]});_0x142e6a[_0x8fd4('0x3c')]=_['keys'](db['UserSmsQueue']['rawAttributes']);_0x142e6a['query']=_[_0x8fd4('0x52')](_0x363128['query']);_0x142e6a['filters']=_[_0x8fd4('0x40')](_0x142e6a[_0x8fd4('0x3c')],_0x142e6a[_0x8fd4('0x3e')]);_0x509377['attributes']=_['intersection'](_0x142e6a[_0x8fd4('0x3c')],qs[_0x8fd4('0x41')](_0x363128[_0x8fd4('0x3e')][_0x8fd4('0x41')]));_0x509377['attributes']=_0x509377[_0x8fd4('0x42')]['length']?_0x509377['attributes']:_0x142e6a[_0x8fd4('0x3c')];if(!_0x363128['query'][_0x8fd4('0x43')](_0x8fd4('0x44'))){_0x509377['limit']=qs[_0x8fd4('0x26')](_0x363128[_0x8fd4('0x3e')][_0x8fd4('0x26')]);_0x509377['offset']=qs[_0x8fd4('0x24')](_0x363128[_0x8fd4('0x3e')][_0x8fd4('0x24')]);}_0x509377['order']=qs[_0x8fd4('0x46')](_0x363128['query'][_0x8fd4('0x46')]);_0x509377[_0x8fd4('0x48')]=qs[_0x8fd4('0x3f')](_[_0x8fd4('0x47')](_0x363128[_0x8fd4('0x3e')],_0x142e6a[_0x8fd4('0x3f')]));_0x509377[_0x8fd4('0x48')][_0x8fd4('0x61')]=_0x2e7f26['id'];if(_0x363128['query']['filter']){_0x509377[_0x8fd4('0x48')]=_[_0x8fd4('0x4a')](_0x509377[_0x8fd4('0x48')],{'$or':_[_0x8fd4('0x3d')](_0x509377['attributes'],function(_0x154d43){var _0x59384f={};_0x59384f[_0x154d43]={'$like':'%'+_0x363128[_0x8fd4('0x3e')][_0x8fd4('0x49')]+'%'};return _0x59384f;})});}_0x509377=_[_0x8fd4('0x4a')]({},_0x509377,_0x363128['options']);return db['UserSmsQueue'][_0x8fd4('0x4e')](_0x509377);}})[_0x8fd4('0x2e')](function(_0x55d1e2){if(_0x55d1e2){return db['User']['findAndCountAll']({'where':{'id':_[_0x8fd4('0x3d')](_0x55d1e2,_0x8fd4('0x62')),'role':_0x8fd4('0x63')},'attributes':['id','name','smsPause',_0x8fd4('0x64'),_0x8fd4('0x65')]});}})[_0x8fd4('0x2e')](function(_0x55fd7b){if(_0x55fd7b){return{'count':_0x55fd7b['count'],'rows':_[_0x8fd4('0x3d')](_0x55fd7b['rows'],function(_0x463d94){return{'membername':_0x463d94[_0x8fd4('0x35')],'UserId':_0x463d94['id'],'queue_name':_0x381ec5[_0x8fd4('0x35')],'SmsQueueId':_0x381ec5['id'],'interface':util[_0x8fd4('0x66')](_0x8fd4('0x67'),_0x8fd4('0x68'),_0x463d94[_0x8fd4('0x35')]),'penalty':0x0,'paused':_0x463d94[_0x8fd4('0x69')],'createdAt':_0x463d94[_0x8fd4('0x65')],'updatedAt':_0x463d94['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4e900b,_0x509377))[_0x8fd4('0x50')](handleError(_0x4e900b,null));};exports[_0x8fd4('0x6a')]=function(_0x12e953,_0x3892aa,_0x526ff6){var _0x5cb3f8={};var _0x3f2e21={};var _0x102e3e;var _0x2190ff;return db[_0x8fd4('0x37')][_0x8fd4('0x60')]({'where':{'id':_0x12e953['params']['id']}})[_0x8fd4('0x2e')](handleEntityNotFound(_0x3892aa,null))[_0x8fd4('0x2e')](function(_0x231f18){if(_0x231f18){_0x102e3e=_0x231f18;_0x3f2e21[_0x8fd4('0x3c')]=_['keys'](db[_0x8fd4('0x6b')][_0x8fd4('0x38')]);_0x3f2e21[_0x8fd4('0x3e')]=_['keys'](_0x12e953[_0x8fd4('0x3e')]);_0x3f2e21['filters']=_[_0x8fd4('0x40')](_0x3f2e21['model'],_0x3f2e21[_0x8fd4('0x3e')]);_0x5cb3f8[_0x8fd4('0x42')]=_[_0x8fd4('0x40')](_0x3f2e21[_0x8fd4('0x3c')],qs['fields'](_0x12e953['query'][_0x8fd4('0x41')]));_0x5cb3f8[_0x8fd4('0x42')]=_0x5cb3f8[_0x8fd4('0x42')][_0x8fd4('0x53')]?_0x5cb3f8[_0x8fd4('0x42')]:_0x3f2e21[_0x8fd4('0x3c')];_0x5cb3f8[_0x8fd4('0x45')]=qs[_0x8fd4('0x46')](_0x12e953['query']['sort']);_0x5cb3f8[_0x8fd4('0x48')]=qs[_0x8fd4('0x3f')](_[_0x8fd4('0x47')](_0x12e953[_0x8fd4('0x3e')],_0x3f2e21[_0x8fd4('0x3f')]));if(_0x12e953[_0x8fd4('0x3e')][_0x8fd4('0x49')]){_0x5cb3f8[_0x8fd4('0x48')]=_[_0x8fd4('0x4a')](_0x5cb3f8[_0x8fd4('0x48')],{'$or':_['map'](_0x5cb3f8['attributes'],function(_0x1a089e){var _0x17ca89={};_0x17ca89[_0x1a089e]={'$like':'%'+_0x12e953[_0x8fd4('0x3e')][_0x8fd4('0x49')]+'%'};return _0x17ca89;})});}_0x5cb3f8=_[_0x8fd4('0x4a')]({},_0x5cb3f8,_0x12e953['options']);return _0x102e3e[_0x8fd4('0x6a')](_0x5cb3f8);}})[_0x8fd4('0x2e')](function(_0x134b77){if(_0x134b77){_0x2190ff=_0x134b77['length'];if(!_0x12e953['query'][_0x8fd4('0x43')](_0x8fd4('0x44'))){_0x5cb3f8['limit']=qs[_0x8fd4('0x26')](_0x12e953[_0x8fd4('0x3e')]['limit']);_0x5cb3f8[_0x8fd4('0x24')]=qs[_0x8fd4('0x24')](_0x12e953['query'][_0x8fd4('0x24')]);}return _0x102e3e[_0x8fd4('0x6a')](_0x5cb3f8);}})['then'](function(_0x382f75){if(_0x382f75){return _0x382f75?{'count':_0x2190ff,'rows':_0x382f75}:null;}})['then'](respondWithResult(_0x3892aa,null))[_0x8fd4('0x50')](handleError(_0x3892aa,null));};exports[_0x8fd4('0x6c')]=function(_0x4714d9,_0x999e09,_0x4b5ba6){var _0x37983a=_0x4714d9[_0x8fd4('0x5c')][_0x8fd4('0x6d')];return db['Team']['findAll']({'where':{'id':_0x37983a},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0x8fd4('0x35'),'online',_0x8fd4('0x6e'),_0x8fd4('0x6f')],'raw':!![]}]})[_0x8fd4('0x2e')](function(_0x482cc5){if(_0x482cc5){var _0x240894=_[_0x8fd4('0x70')](_0x482cc5,function(_0x3953fd){var _0x31fb83=_0x3953fd[_0x8fd4('0x30')]({'plain':!![]});return _0x31fb83[_0x8fd4('0x71')];});return db[_0x8fd4('0x37')][_0x8fd4('0x54')]({'where':{'id':_0x4714d9['params']['id']}})[_0x8fd4('0x2e')](function(_0x536d3d){return db['sequelize'][_0x8fd4('0x72')](function(_0x38e436){return _0x536d3d[_0x8fd4('0x6c')](_0x37983a,{'transaction':_0x38e436})[_0x8fd4('0x2e')](function(){return BPromise[_0x8fd4('0x73')](_0x240894,function(_0x354201){return db[_0x8fd4('0x74')]['findOrCreate']({'where':{'UserId':_0x354201['id'],'SmsQueueId':_0x4714d9[_0x8fd4('0x5d')]['id']},'transaction':_0x38e436});});})[_0x8fd4('0x2e')](function(){_0x240894[_0x8fd4('0x75')](function(_0x2ca3fe){socket[_0x8fd4('0x76')](_0x8fd4('0x77'),{'UserId':_0x2ca3fe['id'],'SmsQueueId':_0x536d3d['id']});});});});});}})['then'](respondWithStatusCode(_0x999e09,null))[_0x8fd4('0x50')](handleError(_0x999e09,null));};exports[_0x8fd4('0x78')]=function(_0x5b29fc,_0x477efa,_0x429999){return db['Team'][_0x8fd4('0x4e')]({'where':{'id':_0x5b29fc[_0x8fd4('0x3e')][_0x8fd4('0x6d')]},'attributes':['id'],'include':[{'model':db[_0x8fd4('0x79')],'as':_0x8fd4('0x71'),'attributes':['id'],'raw':!![]}]})[_0x8fd4('0x2e')](handleEntityNotFound(_0x477efa,null))[_0x8fd4('0x2e')](function(_0x143630){var _0x4b7cfc=_[_0x8fd4('0x3d')](_0x143630,'id');var _0x5b0da3=[];var _0x31ae23=[];var _0x3275ea=squel[_0x8fd4('0x7a')]();_0x3275ea[_0x8fd4('0x7b')]('tq.TeamId')[_0x8fd4('0x7c')](_0x8fd4('0x7d'),'tq')[_0x8fd4('0x7e')](_0x8fd4('0x7f'),'ut',_0x8fd4('0x80'))[_0x8fd4('0x48')](_0x8fd4('0x81'),_0x5b29fc['params']['id']);for(var _0x1a59ca=0x0;_0x1a59ca<_0x143630[_0x8fd4('0x53')];_0x1a59ca+=0x1){let _0xddd442=_0x143630[_0x1a59ca];for(var _0x2e098b=0x0;_0x2e098b<_0xddd442[_0x8fd4('0x71')][_0x8fd4('0x53')];_0x2e098b+=0x1){let _0x23c074=_0xddd442['Agents'][_0x2e098b];var _0x12d307=_0x3275ea[_0x8fd4('0x82')]();_0x12d307[_0x8fd4('0x48')](_0x8fd4('0x83'),_0x23c074['id']);_0x31ae23[_0x8fd4('0x84')](db[_0x8fd4('0x85')]['query'](_0x12d307[_0x8fd4('0x86')](),{'type':db[_0x8fd4('0x85')]['QueryTypes'][_0x8fd4('0x87')]})['then'](function(_0xc4ef36){if(_0xc4ef36[_0x8fd4('0x53')]===0x1){return _0x23c074['id'];}else{var _0xc35134=_[_0x8fd4('0x88')](_[_0x8fd4('0x3d')](_0xc4ef36,'TeamId'),function(_0x2bcb4d){return _[_0x8fd4('0x89')](_0x4b7cfc,_0x2bcb4d);});if(_0xc35134){return _0x23c074['id'];}}}));}}return BPromise[_0x8fd4('0x8a')](_0x31ae23)['then'](function(_0xe2b5e0){_0x5b0da3=_(_0x5b0da3)[_0x8fd4('0x8b')](_0xe2b5e0)[_0x8fd4('0x8c')]()[_0x8fd4('0x8d')]();return db[_0x8fd4('0x37')][_0x8fd4('0x54')]({'where':{'id':_0x5b29fc[_0x8fd4('0x5d')]['id']}})[_0x8fd4('0x2e')](function(_0x26c9d1){return db[_0x8fd4('0x85')]['transaction'](function(_0x1d2b10){return _0x26c9d1[_0x8fd4('0x78')](_0x5b29fc[_0x8fd4('0x3e')][_0x8fd4('0x6d')],{'transaction':_0x1d2b10})[_0x8fd4('0x2e')](function(){if(!_[_0x8fd4('0x8e')](_0x5b0da3)){return _0x26c9d1['removeAgents'](_0x5b0da3,{'transaction':_0x1d2b10});}})[_0x8fd4('0x2e')](function(){_0x5b0da3[_0x8fd4('0x75')](function(_0x9b7654){socket[_0x8fd4('0x76')](_0x8fd4('0x8f'),{'UserId':_0x9b7654,'SmsQueueId':_0x26c9d1['id']});});});});});});})['then'](respondWithStatusCode(_0x477efa,null))['catch'](handleError(_0x477efa,null));};exports[_0x8fd4('0x90')]=function(_0x5f501a,_0xa49eb5,_0x2e9d81){return db[_0x8fd4('0x37')][_0x8fd4('0x54')]({'where':{'id':_0x5f501a['params']['id']}})[_0x8fd4('0x2e')](handleEntityNotFound(_0xa49eb5,null))['then'](function(_0x2f0cff){if(_0x2f0cff){return _0x2f0cff[_0x8fd4('0x90')](_0x5f501a['body'][_0x8fd4('0x6d')],_[_0x8fd4('0x91')](_0x5f501a[_0x8fd4('0x5c')],['ids','id'])||{})['spread'](function(_0x273ce0){for(var _0x2092c9=0x0;_0x2092c9<_0x5f501a[_0x8fd4('0x5c')][_0x8fd4('0x6d')][_0x8fd4('0x53')];_0x2092c9+=0x1){socket[_0x8fd4('0x76')](_0x8fd4('0x77'),{'UserId':Number(_0x5f501a[_0x8fd4('0x5c')][_0x8fd4('0x6d')][_0x2092c9]),'SmsQueueId':Number(_0x5f501a[_0x8fd4('0x5d')]['id'])});}return _0x273ce0;});}})['then'](respondWithResult(_0xa49eb5,null))['catch'](handleError(_0xa49eb5,null));};exports['removeAgents']=function(_0x22d3c3,_0x2cf682,_0x1d6ed7){return db[_0x8fd4('0x37')]['find']({'where':{'id':_0x22d3c3[_0x8fd4('0x5d')]['id']}})[_0x8fd4('0x2e')](handleEntityNotFound(_0x2cf682,null))[_0x8fd4('0x2e')](function(_0x5a9529){if(_0x5a9529){return _0x5a9529[_0x8fd4('0x92')](_0x22d3c3['query']['ids'])['then'](function(){if(_['isArray'](_0x22d3c3[_0x8fd4('0x3e')][_0x8fd4('0x6d')])){for(var _0x497fed=0x0;_0x497fed<_0x22d3c3[_0x8fd4('0x3e')][_0x8fd4('0x6d')][_0x8fd4('0x53')];_0x497fed+=0x1){socket['emit'](_0x8fd4('0x8f'),{'UserId':Number(_0x22d3c3[_0x8fd4('0x3e')][_0x8fd4('0x6d')][_0x497fed]),'SmsQueueId':Number(_0x22d3c3[_0x8fd4('0x5d')]['id'])});}}else{socket[_0x8fd4('0x76')]('userSmsQueue:remove',{'UserId':Number(_0x22d3c3['query'][_0x8fd4('0x6d')]),'SmsQueueId':Number(_0x22d3c3[_0x8fd4('0x5d')]['id'])});}});}})[_0x8fd4('0x2e')](respondWithStatusCode(_0x2cf682,null))[_0x8fd4('0x50')](handleError(_0x2cf682,null));};exports[_0x8fd4('0x93')]=function(_0x514ff5,_0xee39f0,_0x501656){var _0x2acc56={};var _0x388c7a={};var _0x42b61e;var _0x47dce5;return db['SmsQueue'][_0x8fd4('0x60')]({'where':{'id':_0x514ff5[_0x8fd4('0x5d')]['id']}})[_0x8fd4('0x2e')](handleEntityNotFound(_0xee39f0,null))['then'](function(_0x15a555){if(_0x15a555){_0x42b61e=_0x15a555;_0x388c7a[_0x8fd4('0x3c')]=_[_0x8fd4('0x52')](db[_0x8fd4('0x79')]['rawAttributes']);_0x388c7a[_0x8fd4('0x3e')]=_[_0x8fd4('0x52')](_0x514ff5[_0x8fd4('0x3e')]);_0x388c7a[_0x8fd4('0x3f')]=_[_0x8fd4('0x40')](_0x388c7a['model'],_0x388c7a[_0x8fd4('0x3e')]);_0x2acc56[_0x8fd4('0x42')]=_[_0x8fd4('0x40')](_0x388c7a['model'],qs['fields'](_0x514ff5[_0x8fd4('0x3e')][_0x8fd4('0x41')]));_0x2acc56['attributes']=_0x2acc56[_0x8fd4('0x42')]['length']?_0x2acc56['attributes']:_0x388c7a['model'];_0x2acc56['order']=qs[_0x8fd4('0x46')](_0x514ff5[_0x8fd4('0x3e')][_0x8fd4('0x46')]);_0x2acc56[_0x8fd4('0x48')]=qs['filters'](_[_0x8fd4('0x47')](_0x514ff5[_0x8fd4('0x3e')],_0x388c7a['filters']));if(_0x514ff5[_0x8fd4('0x3e')]['filter']){_0x2acc56[_0x8fd4('0x48')]=_[_0x8fd4('0x4a')](_0x2acc56[_0x8fd4('0x48')],{'$or':_[_0x8fd4('0x3d')](_0x2acc56[_0x8fd4('0x42')],function(_0x30b507){var _0x52bc78={};_0x52bc78[_0x30b507]={'$like':'%'+_0x514ff5['query'][_0x8fd4('0x49')]+'%'};return _0x52bc78;})});}_0x2acc56=_['merge']({},_0x2acc56,_0x514ff5[_0x8fd4('0x4b')]);return _0x42b61e['getAgents'](_0x2acc56);}})[_0x8fd4('0x2e')](function(_0x4589b0){if(_0x4589b0){_0x47dce5=_0x4589b0[_0x8fd4('0x53')];if(!_0x514ff5[_0x8fd4('0x3e')][_0x8fd4('0x43')](_0x8fd4('0x44'))){_0x2acc56[_0x8fd4('0x26')]=qs[_0x8fd4('0x26')](_0x514ff5[_0x8fd4('0x3e')][_0x8fd4('0x26')]);_0x2acc56[_0x8fd4('0x24')]=qs[_0x8fd4('0x24')](_0x514ff5[_0x8fd4('0x3e')][_0x8fd4('0x24')]);}return _0x42b61e[_0x8fd4('0x93')](_0x2acc56);}})[_0x8fd4('0x2e')](function(_0x14da31){if(_0x14da31){return _0x14da31?{'count':_0x47dce5,'rows':_0x14da31}:null;}})['then'](respondWithResult(_0xee39f0,null))[_0x8fd4('0x50')](handleError(_0xee39f0,null));};
\ No newline at end of file
index 7c997f8..169218e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4db=['exports','events','../../mysqldb','SmsQueue','update','remove','emit','hook'];(function(_0x118162,_0xbf72be){var _0x58cefc=function(_0x2ec570){while(--_0x2ec570){_0x118162['push'](_0x118162['shift']());}};_0x58cefc(++_0xbf72be);}(_0xd4db,0x149));var _0xbd4d=function(_0x19461e,_0x4c961e){_0x19461e=_0x19461e-0x0;var _0x577907=_0xd4db[_0x19461e];return _0x577907;};'use strict';var EventEmitter=require(_0xbd4d('0x0'));var SmsQueue=require(_0xbd4d('0x1'))['db'][_0xbd4d('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xbd4d('0x3'),'afterDestroy':_0xbd4d('0x4')};function emitEvent(_0x89b6e8){return function(_0x2c94da,_0x2c4182,_0x4ce7a2){SmsQueueEvents['emit'](_0x89b6e8+':'+_0x2c94da['id'],_0x2c94da);SmsQueueEvents[_0xbd4d('0x5')](_0x89b6e8,_0x2c94da);_0x4ce7a2(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue[_0xbd4d('0x6')](e,emitEvent(event));}}module[_0xbd4d('0x7')]=SmsQueueEvents;
\ No newline at end of file
+var _0x2b30=['update','emit','../../mysqldb','SmsQueue','setMaxListeners'];(function(_0x443b1e,_0xf7ffe9){var _0x3beb6f=function(_0x1cd133){while(--_0x1cd133){_0x443b1e['push'](_0x443b1e['shift']());}};_0x3beb6f(++_0xf7ffe9);}(_0x2b30,0x10b));var _0x02b3=function(_0x23c949,_0x1c73b5){_0x23c949=_0x23c949-0x0;var _0x26562c=_0x2b30[_0x23c949];return _0x26562c;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0x02b3('0x0'))['db'][_0x02b3('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x02b3('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x02b3('0x3'),'afterDestroy':'remove'};function emitEvent(_0x311a69){return function(_0x384eff,_0x1f33e4,_0x58ff03){SmsQueueEvents[_0x02b3('0x4')](_0x311a69+':'+_0x384eff['id'],_0x384eff);SmsQueueEvents[_0x02b3('0x4')](_0x311a69,_0x384eff);_0x58ff03(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
index 984c4d5..5c041ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a0c=['exports','define','sms_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsQueue.attributes'];(function(_0x55e3c0,_0x338418){var _0x119300=function(_0x215af2){while(--_0x215af2){_0x55e3c0['push'](_0x55e3c0['shift']());}};_0x119300(++_0x338418);}(_0x7a0c,0x1df));var _0xc7a0=function(_0x2f9780,_0x4a4f1b){_0x2f9780=_0x2f9780-0x0;var _0x51d13a=_0x7a0c[_0x2f9780];return _0x51d13a;};'use strict';var _=require(_0xc7a0('0x0'));var util=require(_0xc7a0('0x1'));var logger=require(_0xc7a0('0x2'))(_0xc7a0('0x3'));var moment=require(_0xc7a0('0x4'));var BPromise=require(_0xc7a0('0x5'));var rp=require(_0xc7a0('0x6'));var fs=require('fs');var path=require(_0xc7a0('0x7'));var rimraf=require(_0xc7a0('0x8'));var config=require(_0xc7a0('0x9'));var attributes=require(_0xc7a0('0xa'));module[_0xc7a0('0xb')]=function(_0x4303e2,_0xba80de){return _0x4303e2[_0xc7a0('0xc')]('SmsQueue',attributes,{'tableName':_0xc7a0('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6e46=['sms_queues','lodash','util','../../config/logger','api','moment','bluebird','./smsQueue.attributes','define'];(function(_0x1c21cc,_0x322a71){var _0x7af1cb=function(_0x192183){while(--_0x192183){_0x1c21cc['push'](_0x1c21cc['shift']());}};_0x7af1cb(++_0x322a71);}(_0x6e46,0xbe));var _0x66e4=function(_0x196e2e,_0x522e03){_0x196e2e=_0x196e2e-0x0;var _0x59eee3=_0x6e46[_0x196e2e];return _0x59eee3;};'use strict';var _=require(_0x66e4('0x0'));var util=require(_0x66e4('0x1'));var logger=require(_0x66e4('0x2'))(_0x66e4('0x3'));var moment=require(_0x66e4('0x4'));var BPromise=require(_0x66e4('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x66e4('0x6'));module['exports']=function(_0x43f4ce,_0x5f8906){return _0x43f4ce[_0x66e4('0x7')]('SmsQueue',attributes,{'tableName':_0x66e4('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7d0e647..d541aec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6443=['socket.io-emitter','register','request','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','SmsQueue','findAll','options','where','attributes','limit','map','include','model','GetSmsQueue','raw','ShowSmsQueue','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost'];(function(_0x35493d,_0x17eabe){var _0x254db6=function(_0x22d1ca){while(--_0x22d1ca){_0x35493d['push'](_0x35493d['shift']());}};_0x254db6(++_0x17eabe);}(_0x6443,0x163));var _0x3644=function(_0x18b191,_0x4e0684){_0x18b191=_0x18b191-0x0;var _0x43e146=_0x6443[_0x18b191];return _0x43e146;};'use strict';var _=require(_0x3644('0x0'));var util=require(_0x3644('0x1'));var moment=require(_0x3644('0x2'));var BPromise=require('bluebird');var rs=require(_0x3644('0x3'));var fs=require('fs');var Redis=require(_0x3644('0x4'));var db=require(_0x3644('0x5'))['db'];var utils=require(_0x3644('0x6'));var logger=require(_0x3644('0x7'))(_0x3644('0x8'));var config=require('../../config/environment');var jayson=require(_0x3644('0x9'));var client=jayson[_0x3644('0xa')]['http']({'port':0x232a});config[_0x3644('0xb')]=_[_0x3644('0xc')](config[_0x3644('0xb')],{'host':_0x3644('0xd'),'port':0x18eb});var socket=require(_0x3644('0xe'))(new Redis(config['redis']));require('./smsQueue.socket')[_0x3644('0xf')](socket);function respondWithRpcPromise(_0x316934,_0x21df7d,_0x5e12db){return new BPromise(function(_0x1d0666,_0x2bc19b){return client[_0x3644('0x10')](_0x316934,_0x5e12db)[_0x3644('0x11')](function(_0x130901){logger[_0x3644('0x12')](_0x3644('0x13'),_0x21df7d,_0x3644('0x14'));logger[_0x3644('0x15')](_0x3644('0x16'),_0x21df7d,'request\x20sent',JSON[_0x3644('0x17')](_0x130901));if(_0x130901[_0x3644('0x18')]){if(_0x130901['error'][_0x3644('0x19')]===0x1f4){logger[_0x3644('0x18')](_0x3644('0x13'),_0x21df7d,_0x130901['error'][_0x3644('0x1a')]);return _0x2bc19b(_0x130901['error'][_0x3644('0x1a')]);}logger[_0x3644('0x18')]('SmsQueue,\x20%s,\x20%s',_0x21df7d,_0x130901[_0x3644('0x18')][_0x3644('0x1a')]);return _0x1d0666(_0x130901[_0x3644('0x18')]['message']);}else{logger['info'](_0x3644('0x13'),_0x21df7d,_0x3644('0x14'));_0x1d0666(_0x130901[_0x3644('0x1b')]['message']);}})[_0x3644('0x1c')](function(_0x5c5fb4){logger['error'](_0x3644('0x13'),_0x21df7d,_0x5c5fb4);_0x2bc19b(_0x5c5fb4);});});}exports['GetSmsQueue']=function(_0x2a9ffb){var _0x2181e2=this;return new Promise(function(_0x19b2f4,_0x41e988){return db[_0x3644('0x1d')][_0x3644('0x1e')]({'raw':_0x2a9ffb['options']?_0x2a9ffb['options']['raw']===undefined?!![]:![]:!![],'where':_0x2a9ffb[_0x3644('0x1f')]?_0x2a9ffb[_0x3644('0x1f')][_0x3644('0x20')]||null:null,'attributes':_0x2a9ffb[_0x3644('0x1f')]?_0x2a9ffb[_0x3644('0x1f')][_0x3644('0x21')]||null:null,'limit':_0x2a9ffb[_0x3644('0x1f')]?_0x2a9ffb[_0x3644('0x1f')][_0x3644('0x22')]||null:null,'include':_0x2a9ffb[_0x3644('0x1f')]?_0x2a9ffb['options']['include']?_[_0x3644('0x23')](_0x2a9ffb['options'][_0x3644('0x24')],function(_0x7ce11){return{'model':db[_0x7ce11[_0x3644('0x25')]],'as':_0x7ce11['as'],'attributes':_0x7ce11[_0x3644('0x21')],'include':_0x7ce11[_0x3644('0x24')]?_[_0x3644('0x23')](_0x7ce11[_0x3644('0x24')],function(_0x4652b9){return{'model':db[_0x4652b9[_0x3644('0x25')]],'as':_0x4652b9['as'],'attributes':_0x4652b9[_0x3644('0x21')],'include':_0x4652b9[_0x3644('0x24')]?_[_0x3644('0x23')](_0x4652b9[_0x3644('0x24')],function(_0x368a2c){return{'model':db[_0x368a2c[_0x3644('0x25')]],'as':_0x368a2c['as'],'attributes':_0x368a2c[_0x3644('0x21')]};}):[]};}):[]};}):[]:[]})[_0x3644('0x11')](function(_0x4b3e32){logger[_0x3644('0x12')](_0x3644('0x26'),_0x2a9ffb);logger[_0x3644('0x15')]('GetSmsQueue',_0x2a9ffb,JSON[_0x3644('0x17')](_0x4b3e32));_0x19b2f4(_0x4b3e32);})[_0x3644('0x1c')](function(_0x4c1925){logger['error']('GetSmsQueue',_0x4c1925[_0x3644('0x1a')],_0x2a9ffb);_0x41e988(_0x2181e2[_0x3644('0x18')](0x1f4,_0x4c1925['message']));});});};exports['ShowSmsQueue']=function(_0x5b9c90){var _0x1a85fc=this;return new Promise(function(_0x579c3f,_0x5088f9){return db[_0x3644('0x1d')]['find']({'raw':_0x5b9c90[_0x3644('0x1f')]?_0x5b9c90[_0x3644('0x1f')][_0x3644('0x27')]===undefined?!![]:![]:!![],'where':_0x5b9c90[_0x3644('0x1f')]?_0x5b9c90['options'][_0x3644('0x20')]||null:null,'attributes':_0x5b9c90[_0x3644('0x1f')]?_0x5b9c90[_0x3644('0x1f')][_0x3644('0x21')]||null:null,'include':_0x5b9c90[_0x3644('0x1f')]?_0x5b9c90[_0x3644('0x1f')][_0x3644('0x24')]?_['map'](_0x5b9c90[_0x3644('0x1f')][_0x3644('0x24')],function(_0x936ccf){return{'model':db[_0x936ccf['model']],'as':_0x936ccf['as'],'attributes':_0x936ccf['attributes'],'include':_0x936ccf[_0x3644('0x24')]?_[_0x3644('0x23')](_0x936ccf[_0x3644('0x24')],function(_0x4fac4c){return{'model':db[_0x4fac4c[_0x3644('0x25')]],'as':_0x4fac4c['as'],'attributes':_0x4fac4c['attributes'],'include':_0x4fac4c[_0x3644('0x24')]?_['map'](_0x4fac4c['include'],function(_0x4f57e3){return{'model':db[_0x4f57e3[_0x3644('0x25')]],'as':_0x4f57e3['as'],'attributes':_0x4f57e3[_0x3644('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x9fb8b4){logger[_0x3644('0x12')](_0x3644('0x28'),_0x5b9c90);logger[_0x3644('0x15')](_0x3644('0x28'),_0x5b9c90,JSON[_0x3644('0x17')](_0x9fb8b4));_0x579c3f(_0x9fb8b4);})[_0x3644('0x1c')](function(_0x3f366a){logger[_0x3644('0x18')](_0x3644('0x28'),_0x3f366a[_0x3644('0x1a')],_0x5b9c90);_0x5088f9(_0x1a85fc['error'](0x1f4,_0x3f366a[_0x3644('0x1a')]));});});};
\ No newline at end of file
+var _0x544b=['SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','findAll','options','raw','where','attributes','limit','map','include','model','info','GetSmsQueue','ShowSmsQueue','SmsQueue','find','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','request','then'];(function(_0x254f73,_0x532104){var _0x472f28=function(_0xb7065){while(--_0xb7065){_0x254f73['push'](_0x254f73['shift']());}};_0x472f28(++_0x532104);}(_0x544b,0x1c5));var _0xb544=function(_0x1150ae,_0x2c3f00){_0x1150ae=_0x1150ae-0x0;var _0x40af23=_0x544b[_0x1150ae];return _0x40af23;};'use strict';var _=require(_0xb544('0x0'));var util=require(_0xb544('0x1'));var moment=require(_0xb544('0x2'));var BPromise=require(_0xb544('0x3'));var rs=require(_0xb544('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb544('0x5'))['db'];var utils=require(_0xb544('0x6'));var logger=require(_0xb544('0x7'))(_0xb544('0x8'));var config=require(_0xb544('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xb544('0xa')][_0xb544('0xb')]({'port':0x232a});config[_0xb544('0xc')]=_[_0xb544('0xd')](config[_0xb544('0xc')],{'host':_0xb544('0xe'),'port':0x18eb});var socket=require(_0xb544('0xf'))(new Redis(config[_0xb544('0xc')]));require(_0xb544('0x10'))[_0xb544('0x11')](socket);function respondWithRpcPromise(_0x2da605,_0x4c84ac,_0x16aa77){return new BPromise(function(_0x12f37d,_0x596cc7){return client[_0xb544('0x12')](_0x2da605,_0x16aa77)[_0xb544('0x13')](function(_0x4b174c){logger['info'](_0xb544('0x14'),_0x4c84ac,_0xb544('0x15'));logger[_0xb544('0x16')](_0xb544('0x17'),_0x4c84ac,_0xb544('0x15'),JSON[_0xb544('0x18')](_0x4b174c));if(_0x4b174c[_0xb544('0x19')]){if(_0x4b174c['error'][_0xb544('0x1a')]===0x1f4){logger[_0xb544('0x19')](_0xb544('0x14'),_0x4c84ac,_0x4b174c[_0xb544('0x19')]['message']);return _0x596cc7(_0x4b174c[_0xb544('0x19')][_0xb544('0x1b')]);}logger[_0xb544('0x19')](_0xb544('0x14'),_0x4c84ac,_0x4b174c[_0xb544('0x19')]['message']);return _0x12f37d(_0x4b174c['error'][_0xb544('0x1b')]);}else{logger['info'](_0xb544('0x14'),_0x4c84ac,'request\x20sent');_0x12f37d(_0x4b174c['result']['message']);}})[_0xb544('0x1c')](function(_0x4ba730){logger[_0xb544('0x19')](_0xb544('0x14'),_0x4c84ac,_0x4ba730);_0x596cc7(_0x4ba730);});});}exports['GetSmsQueue']=function(_0xc50bd){var _0x32bea5=this;return new Promise(function(_0x1ecc7d,_0x4b024e){return db['SmsQueue'][_0xb544('0x1d')]({'raw':_0xc50bd[_0xb544('0x1e')]?_0xc50bd['options'][_0xb544('0x1f')]===undefined?!![]:![]:!![],'where':_0xc50bd[_0xb544('0x1e')]?_0xc50bd[_0xb544('0x1e')][_0xb544('0x20')]||null:null,'attributes':_0xc50bd[_0xb544('0x1e')]?_0xc50bd[_0xb544('0x1e')][_0xb544('0x21')]||null:null,'limit':_0xc50bd[_0xb544('0x1e')]?_0xc50bd[_0xb544('0x1e')][_0xb544('0x22')]||null:null,'include':_0xc50bd[_0xb544('0x1e')]?_0xc50bd[_0xb544('0x1e')]['include']?_[_0xb544('0x23')](_0xc50bd[_0xb544('0x1e')][_0xb544('0x24')],function(_0x17afbb){return{'model':db[_0x17afbb['model']],'as':_0x17afbb['as'],'attributes':_0x17afbb[_0xb544('0x21')],'include':_0x17afbb[_0xb544('0x24')]?_[_0xb544('0x23')](_0x17afbb[_0xb544('0x24')],function(_0x469b54){return{'model':db[_0x469b54[_0xb544('0x25')]],'as':_0x469b54['as'],'attributes':_0x469b54['attributes'],'include':_0x469b54[_0xb544('0x24')]?_[_0xb544('0x23')](_0x469b54[_0xb544('0x24')],function(_0x1d8959){return{'model':db[_0x1d8959[_0xb544('0x25')]],'as':_0x1d8959['as'],'attributes':_0x1d8959[_0xb544('0x21')]};}):[]};}):[]};}):[]:[]})[_0xb544('0x13')](function(_0x4dc33e){logger[_0xb544('0x26')](_0xb544('0x27'),_0xc50bd);logger[_0xb544('0x16')](_0xb544('0x27'),_0xc50bd,JSON[_0xb544('0x18')](_0x4dc33e));_0x1ecc7d(_0x4dc33e);})[_0xb544('0x1c')](function(_0x4b9545){logger['error'](_0xb544('0x27'),_0x4b9545[_0xb544('0x1b')],_0xc50bd);_0x4b024e(_0x32bea5[_0xb544('0x19')](0x1f4,_0x4b9545[_0xb544('0x1b')]));});});};exports[_0xb544('0x28')]=function(_0x15c140){var _0x1c735a=this;return new Promise(function(_0x159017,_0x15664e){return db[_0xb544('0x29')][_0xb544('0x2a')]({'raw':_0x15c140[_0xb544('0x1e')]?_0x15c140[_0xb544('0x1e')][_0xb544('0x1f')]===undefined?!![]:![]:!![],'where':_0x15c140[_0xb544('0x1e')]?_0x15c140['options'][_0xb544('0x20')]||null:null,'attributes':_0x15c140[_0xb544('0x1e')]?_0x15c140[_0xb544('0x1e')][_0xb544('0x21')]||null:null,'include':_0x15c140[_0xb544('0x1e')]?_0x15c140[_0xb544('0x1e')][_0xb544('0x24')]?_[_0xb544('0x23')](_0x15c140[_0xb544('0x1e')][_0xb544('0x24')],function(_0x775ae7){return{'model':db[_0x775ae7['model']],'as':_0x775ae7['as'],'attributes':_0x775ae7[_0xb544('0x21')],'include':_0x775ae7['include']?_['map'](_0x775ae7[_0xb544('0x24')],function(_0x36388d){return{'model':db[_0x36388d[_0xb544('0x25')]],'as':_0x36388d['as'],'attributes':_0x36388d[_0xb544('0x21')],'include':_0x36388d['include']?_[_0xb544('0x23')](_0x36388d[_0xb544('0x24')],function(_0x3feb7d){return{'model':db[_0x3feb7d['model']],'as':_0x3feb7d['as'],'attributes':_0x3feb7d['attributes']};}):[]};}):[]};}):[]:[]})[_0xb544('0x13')](function(_0x311537){logger[_0xb544('0x26')](_0xb544('0x28'),_0x15c140);logger[_0xb544('0x16')]('ShowSmsQueue',_0x15c140,JSON[_0xb544('0x18')](_0x311537));_0x159017(_0x311537);})['catch'](function(_0x132d24){logger[_0xb544('0x19')](_0xb544('0x28'),_0x132d24[_0xb544('0x1b')],_0x15c140);_0x15664e(_0x1c735a[_0xb544('0x19')](0x1f4,_0x132d24[_0xb544('0x1b')]));});});};
\ No newline at end of file
index 211cade..a4c976c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5637=['remove','emit','removeListener','register','length','smsQueue:','save'];(function(_0x5acbef,_0x36b414){var _0x5e9742=function(_0x1fac54){while(--_0x1fac54){_0x5acbef['push'](_0x5acbef['shift']());}};_0x5e9742(++_0x36b414);}(_0x5637,0x141));var _0x7563=function(_0x8d4f4,_0x5189c8){_0x8d4f4=_0x8d4f4-0x0;var _0x1b435c=_0x5637[_0x8d4f4];return _0x1b435c;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=[_0x7563('0x0'),_0x7563('0x1'),'update'];function createListener(_0x1798a4,_0x147034){return function(_0x18ac52){_0x147034[_0x7563('0x2')](_0x1798a4,_0x18ac52);};}function removeListener(_0x42e288,_0x2e44b5){return function(){SmsQueueEvents[_0x7563('0x3')](_0x42e288,_0x2e44b5);};}exports[_0x7563('0x4')]=function(_0x3d3785){for(var _0x319a2b=0x0,_0x49b599=events[_0x7563('0x5')];_0x319a2b<_0x49b599;_0x319a2b++){var _0x226892=events[_0x319a2b];var _0x4cebf1=createListener(_0x7563('0x6')+_0x226892,_0x3d3785);SmsQueueEvents['on'](_0x226892,_0x4cebf1);}};
\ No newline at end of file
+var _0x00cc=['smsQueue:','./smsQueue.events','save','remove','emit','removeListener','register'];(function(_0x482c98,_0x518037){var _0xd63bbc=function(_0x60489a){while(--_0x60489a){_0x482c98['push'](_0x482c98['shift']());}};_0xd63bbc(++_0x518037);}(_0x00cc,0x174));var _0xc00c=function(_0x4ae76f,_0x49e2b9){_0x4ae76f=_0x4ae76f-0x0;var _0x1ee6f1=_0x00cc[_0x4ae76f];return _0x1ee6f1;};'use strict';var SmsQueueEvents=require(_0xc00c('0x0'));var events=[_0xc00c('0x1'),_0xc00c('0x2'),'update'];function createListener(_0x40fc2c,_0x4bdb0e){return function(_0x40b6ec){_0x4bdb0e[_0xc00c('0x3')](_0x40fc2c,_0x40b6ec);};}function removeListener(_0x25a8ad,_0x4f4ff7){return function(){SmsQueueEvents[_0xc00c('0x4')](_0x25a8ad,_0x4f4ff7);};}exports[_0xc00c('0x5')]=function(_0x2d9803){for(var _0x473b6d=0x0,_0x5bca1b=events['length'];_0x473b6d<_0x5bca1b;_0x473b6d++){var _0x5b4dd3=events[_0x473b6d];var _0x26e8db=createListener(_0xc00c('0x6')+_0x5b4dd3,_0x2d9803);SmsQueueEvents['on'](_0x5b4dd3,_0x26e8db);}};
\ No newline at end of file
index 222f912..0afa581 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc180=['/describe','describe','/:id','post','create','update','delete','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','isAuthenticated','index','get'];(function(_0x3ba2a0,_0x5453a5){var _0x575d6c=function(_0x122450){while(--_0x122450){_0x3ba2a0['push'](_0x3ba2a0['shift']());}};_0x575d6c(++_0x5453a5);}(_0xc180,0x185));var _0x0c18=function(_0x3c514b,_0x325bbc){_0x3c514b=_0x3c514b-0x0;var _0x32149c=_0xc180[_0x3c514b];return _0x32149c;};'use strict';var multer=require(_0x0c18('0x0'));var util=require(_0x0c18('0x1'));var path=require(_0x0c18('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0c18('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0c18('0x4'));var interaction=require(_0x0c18('0x5'));var config=require(_0x0c18('0x6'));var controller=require(_0x0c18('0x7'));router['get']('/',auth[_0x0c18('0x8')](),controller[_0x0c18('0x9')]);router[_0x0c18('0xa')](_0x0c18('0xb'),auth[_0x0c18('0x8')](),controller[_0x0c18('0xc')]);router[_0x0c18('0xa')](_0x0c18('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x0c18('0xe')]('/',auth[_0x0c18('0x8')](),controller[_0x0c18('0xf')]);router['put'](_0x0c18('0xd'),auth[_0x0c18('0x8')](),controller[_0x0c18('0x10')]);router[_0x0c18('0x11')](_0x0c18('0xd'),auth[_0x0c18('0x8')](),controller[_0x0c18('0x12')]);module[_0x0c18('0x13')]=router;
\ No newline at end of file
+var _0x342d=['util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','isAuthenticated','describe','get','create','put','/:id','update','destroy','exports','multer'];(function(_0x219fa0,_0x18b239){var _0xc603fb=function(_0x3371ad){while(--_0x3371ad){_0x219fa0['push'](_0x219fa0['shift']());}};_0xc603fb(++_0x18b239);}(_0x342d,0x197));var _0xd342=function(_0x3f9bab,_0xd4c399){_0x3f9bab=_0x3f9bab-0x0;var _0x3eb492=_0x342d[_0x3f9bab];return _0x3eb492;};'use strict';var multer=require(_0xd342('0x0'));var util=require(_0xd342('0x1'));var path=require('path');var timeout=require(_0xd342('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xd342('0x3'));var auth=require(_0xd342('0x4'));var interaction=require(_0xd342('0x5'));var config=require(_0xd342('0x6'));var controller=require(_0xd342('0x7'));router['get']('/',auth[_0xd342('0x8')](),controller['index']);router['get']('/describe',auth[_0xd342('0x8')](),controller[_0xd342('0x9')]);router[_0xd342('0xa')]('/:id',auth[_0xd342('0x8')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xd342('0xb')]);router[_0xd342('0xc')](_0xd342('0xd'),auth[_0xd342('0x8')](),controller[_0xd342('0xe')]);router['delete'](_0xd342('0xd'),auth['isAuthenticated'](),controller[_0xd342('0xf')]);module[_0xd342('0x10')]=router;
\ No newline at end of file
index 9dd8961..8d8a3c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4098=['sequelize','exports','STRING','DATE'];(function(_0x5c9397,_0xe6bc88){var _0x194baf=function(_0x50d093){while(--_0x50d093){_0x5c9397['push'](_0x5c9397['shift']());}};_0x194baf(++_0xe6bc88);}(_0x4098,0x120));var _0x8409=function(_0xba5feb,_0x35e770){_0xba5feb=_0xba5feb-0x0;var _0x1c23b3=_0x4098[_0xba5feb];return _0x1c23b3;};'use strict';var moment=require('moment');var Sequelize=require(_0x8409('0x0'));module[_0x8409('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x8409('0x2')]},'joinAt':{'type':Sequelize[_0x8409('0x3')]},'leaveAt':{'type':Sequelize[_0x8409('0x3')]},'acceptAt':{'type':Sequelize[_0x8409('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x93f9=['moment','STRING','DATE'];(function(_0x2fed42,_0x4ed0d3){var _0x107d53=function(_0x43fd40){while(--_0x43fd40){_0x2fed42['push'](_0x2fed42['shift']());}};_0x107d53(++_0x4ed0d3);}(_0x93f9,0x1b6));var _0x993f=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x93f9[_0x6131cd];return _0x47e916;};'use strict';var moment=require(_0x993f('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x993f('0x1')]},'joinAt':{'type':Sequelize[_0x993f('0x2')]},'leaveAt':{'type':Sequelize[_0x993f('0x2')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x993f('0x2')]},'reason':{'type':Sequelize[_0x993f('0x1')]}};
\ No newline at end of file
index 14ae476..94fa334 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0198=['status','end','json','offset','count','limit','set','reject','save','update','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','SmsQueueReport','findAll','rows','show','params','keys','include','options','find','create','body','catch','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus'];(function(_0x5af516,_0x1511f2){var _0x25fe26=function(_0x2f6b5a){while(--_0x2f6b5a){_0x5af516['push'](_0x5af516['shift']());}};_0x25fe26(++_0x1511f2);}(_0x0198,0x117));var _0x8019=function(_0x2fd69d,_0xeb1037){_0x2fd69d=_0x2fd69d-0x0;var _0x5d5ef3=_0x0198[_0x2fd69d];return _0x5d5ef3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8019('0x0'));var zipdir=require(_0x8019('0x1'));var jsonpatch=require(_0x8019('0x2'));var rp=require(_0x8019('0x3'));var moment=require(_0x8019('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x8019('0x5'));var util=require(_0x8019('0x6'));var path=require('path');var sox=require(_0x8019('0x7'));var csv=require(_0x8019('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8019('0x9'));var squel=require('squel');var crypto=require(_0x8019('0xa'));var jsforce=require(_0x8019('0xb'));var deskjs=require(_0x8019('0xc'));var toCsv=require(_0x8019('0x8'));var querystring=require(_0x8019('0xd'));var Papa=require(_0x8019('0xe'));var Redis=require(_0x8019('0xf'));var authService=require(_0x8019('0x10'));var qs=require(_0x8019('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8019('0x12'));var logger=require(_0x8019('0x13'))(_0x8019('0x14'));var utils=require(_0x8019('0x15'));var config=require(_0x8019('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x8019('0x17'))['db'];function respondWithStatusCode(_0x521721,_0x2eacb4){_0x2eacb4=_0x2eacb4||0xcc;return function(_0x2259a7){if(_0x2259a7){return _0x521721[_0x8019('0x18')](_0x2eacb4);}return _0x521721[_0x8019('0x19')](_0x2eacb4)[_0x8019('0x1a')]();};}function respondWithResult(_0x3d6052,_0x32b073){_0x32b073=_0x32b073||0xc8;return function(_0x39a032){if(_0x39a032){return _0x3d6052['status'](_0x32b073)[_0x8019('0x1b')](_0x39a032);}};}function respondWithFilteredResult(_0x39ee46,_0x4abea0){return function(_0x5a7f00){if(_0x5a7f00){var _0x37ae50=typeof _0x4abea0[_0x8019('0x1c')]==='undefined'&&typeof _0x4abea0['limit']==='undefined';var _0x19d2e9=_0x5a7f00['count'];var _0x48c735=_0x37ae50?0x0:_0x4abea0[_0x8019('0x1c')];var _0x2cf7a8=_0x37ae50?_0x5a7f00[_0x8019('0x1d')]:_0x4abea0[_0x8019('0x1c')]+_0x4abea0[_0x8019('0x1e')];var _0x26ff2b;if(_0x2cf7a8>=_0x19d2e9){_0x2cf7a8=_0x19d2e9;_0x26ff2b=0xc8;}else{_0x26ff2b=0xce;}_0x39ee46['status'](_0x26ff2b);return _0x39ee46[_0x8019('0x1f')]('Content-Range',_0x48c735+'-'+_0x2cf7a8+'/'+_0x19d2e9)['json'](_0x5a7f00);}return null;};}function patchUpdates(_0x12a29e){return function(_0x4686a7){try{jsonpatch['apply'](_0x4686a7,_0x12a29e,!![]);}catch(_0x85974d){return BPromise[_0x8019('0x20')](_0x85974d);}return _0x4686a7[_0x8019('0x21')]();};}function saveUpdates(_0xa38090,_0x17fe14){return function(_0x58e21a){if(_0x58e21a){return _0x58e21a[_0x8019('0x22')](_0xa38090)[_0x8019('0x23')](function(_0x1af573){return _0x1af573;});}return null;};}function removeEntity(_0x4152d5,_0x54bbeb){return function(_0x5b1df8){if(_0x5b1df8){return _0x5b1df8[_0x8019('0x24')]()[_0x8019('0x23')](function(){_0x4152d5[_0x8019('0x19')](0xcc)[_0x8019('0x1a')]();});}};}function handleEntityNotFound(_0x9edb74,_0x54c9c6){return function(_0x5a4a6b){if(!_0x5a4a6b){_0x9edb74[_0x8019('0x18')](0x194);}return _0x5a4a6b;};}function handleError(_0x25816c,_0x3a3df2){_0x3a3df2=_0x3a3df2||0x1f4;return function(_0x25b341){logger[_0x8019('0x25')](_0x25b341[_0x8019('0x26')]);if(_0x25b341['name']){delete _0x25b341[_0x8019('0x27')];}_0x25816c['status'](_0x3a3df2)[_0x8019('0x28')](_0x25b341);};}exports['index']=function(_0x7c4cd4,_0x1a3179){var _0x48441a={},_0x411b66={},_0x4045b9={'count':0x0,'rows':[]};var _0x3c6712=_[_0x8019('0x29')](db['SmsQueueReport'][_0x8019('0x2a')],function(_0x5c1413){return{'name':_0x5c1413[_0x8019('0x2b')],'type':_0x5c1413[_0x8019('0x2c')][_0x8019('0x2d')]};});_0x411b66['model']=_['map'](_0x3c6712,_0x8019('0x27'));_0x411b66['query']=_['keys'](_0x7c4cd4[_0x8019('0x2e')]);_0x411b66[_0x8019('0x2f')]=_[_0x8019('0x30')](_0x411b66[_0x8019('0x31')],_0x411b66[_0x8019('0x2e')]);_0x48441a[_0x8019('0x32')]=_[_0x8019('0x30')](_0x411b66['model'],qs[_0x8019('0x33')](_0x7c4cd4['query']['fields']));_0x48441a['attributes']=_0x48441a['attributes'][_0x8019('0x34')]?_0x48441a[_0x8019('0x32')]:_0x411b66[_0x8019('0x31')];if(!_0x7c4cd4[_0x8019('0x2e')][_0x8019('0x35')](_0x8019('0x36'))){_0x48441a[_0x8019('0x1e')]=qs[_0x8019('0x1e')](_0x7c4cd4['query']['limit']);_0x48441a['offset']=qs[_0x8019('0x1c')](_0x7c4cd4[_0x8019('0x2e')]['offset']);}_0x48441a[_0x8019('0x37')]=qs[_0x8019('0x38')](_0x7c4cd4[_0x8019('0x2e')][_0x8019('0x38')]);_0x48441a[_0x8019('0x39')]=qs[_0x8019('0x2f')](_[_0x8019('0x3a')](_0x7c4cd4[_0x8019('0x2e')],_0x411b66['filters']),_0x3c6712);if(_0x7c4cd4[_0x8019('0x2e')][_0x8019('0x3b')]){_0x48441a['where']=_['merge'](_0x48441a[_0x8019('0x39')],{'$or':_[_0x8019('0x29')](_0x3c6712,function(_0x1ab0c3){if(_0x1ab0c3['type']!==_0x8019('0x3c')){var _0x116f66={};_0x116f66[_0x1ab0c3['name']]={'$like':'%'+_0x7c4cd4[_0x8019('0x2e')][_0x8019('0x3b')]+'%'};return _0x116f66;}})});}_0x48441a=_[_0x8019('0x3d')]({},_0x48441a,_0x7c4cd4['options']);var _0x4456bb={'where':_0x48441a[_0x8019('0x39')]};return db['SmsQueueReport'][_0x8019('0x1d')](_0x4456bb)[_0x8019('0x23')](function(_0x189dbc){_0x4045b9[_0x8019('0x1d')]=_0x189dbc;if(_0x7c4cd4[_0x8019('0x2e')][_0x8019('0x3e')]){_0x48441a['include']=[{'all':!![]}];}return db[_0x8019('0x3f')][_0x8019('0x40')](_0x48441a);})[_0x8019('0x23')](function(_0x319218){_0x4045b9[_0x8019('0x41')]=_0x319218;return _0x4045b9;})[_0x8019('0x23')](respondWithFilteredResult(_0x1a3179,_0x48441a))['catch'](handleError(_0x1a3179,null));};exports[_0x8019('0x42')]=function(_0x2aa455,_0x38d71c){var _0xd03dea={'raw':!![],'where':{'id':_0x2aa455[_0x8019('0x43')]['id']}},_0x2556f9={};_0x2556f9[_0x8019('0x31')]=_['keys'](db[_0x8019('0x3f')][_0x8019('0x2a')]);_0x2556f9['query']=_[_0x8019('0x44')](_0x2aa455['query']);_0x2556f9[_0x8019('0x2f')]=_[_0x8019('0x30')](_0x2556f9['model'],_0x2556f9[_0x8019('0x2e')]);_0xd03dea[_0x8019('0x32')]=_[_0x8019('0x30')](_0x2556f9['model'],qs[_0x8019('0x33')](_0x2aa455[_0x8019('0x2e')][_0x8019('0x33')]));_0xd03dea[_0x8019('0x32')]=_0xd03dea[_0x8019('0x32')]['length']?_0xd03dea[_0x8019('0x32')]:_0x2556f9[_0x8019('0x31')];if(_0x2aa455['query'][_0x8019('0x3e')]){_0xd03dea[_0x8019('0x45')]=[{'all':!![]}];}_0xd03dea=_[_0x8019('0x3d')]({},_0xd03dea,_0x2aa455[_0x8019('0x46')]);return db['SmsQueueReport'][_0x8019('0x47')](_0xd03dea)[_0x8019('0x23')](handleEntityNotFound(_0x38d71c,null))[_0x8019('0x23')](respondWithResult(_0x38d71c,null))['catch'](handleError(_0x38d71c,null));};exports[_0x8019('0x48')]=function(_0x1e2b56,_0x4d3ab6){return db[_0x8019('0x3f')][_0x8019('0x48')](_0x1e2b56[_0x8019('0x49')],{})['then'](respondWithResult(_0x4d3ab6,0xc9))['catch'](handleError(_0x4d3ab6,null));};exports[_0x8019('0x22')]=function(_0x307c2b,_0x1a6d55){if(_0x307c2b[_0x8019('0x49')]['id']){delete _0x307c2b[_0x8019('0x49')]['id'];}return db['SmsQueueReport']['find']({'where':{'id':_0x307c2b[_0x8019('0x43')]['id']}})[_0x8019('0x23')](handleEntityNotFound(_0x1a6d55,null))[_0x8019('0x23')](saveUpdates(_0x307c2b['body'],null))[_0x8019('0x23')](respondWithResult(_0x1a6d55,null))[_0x8019('0x4a')](handleError(_0x1a6d55,null));};exports[_0x8019('0x24')]=function(_0x56d6fe,_0x1a90f3){return db[_0x8019('0x3f')]['find']({'where':{'id':_0x56d6fe[_0x8019('0x43')]['id']}})['then'](handleEntityNotFound(_0x1a90f3,null))[_0x8019('0x23')](removeEntity(_0x1a90f3,null))[_0x8019('0x4a')](handleError(_0x1a90f3,null));};exports[_0x8019('0x4b')]=function(_0x29d7fa,_0x26b631){return db[_0x8019('0x3f')][_0x8019('0x4b')]()[_0x8019('0x23')](respondWithResult(_0x26b631,null))['catch'](handleError(_0x26b631,null));};
\ No newline at end of file
+var _0xe882=['order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','SmsQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty'];(function(_0x4490f4,_0x150e06){var _0x3e2a76=function(_0x19c0c5){while(--_0x19c0c5){_0x4490f4['push'](_0x4490f4['shift']());}};_0x3e2a76(++_0x150e06);}(_0xe882,0x19d));var _0x2e88=function(_0xa1daca,_0x380795){_0xa1daca=_0xa1daca-0x0;var _0x19ef33=_0xe882[_0xa1daca];return _0x19ef33;};'use strict';var emlformat=require(_0x2e88('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2e88('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2e88('0x2'));var moment=require(_0x2e88('0x3'));var BPromise=require(_0x2e88('0x4'));var Mustache=require(_0x2e88('0x5'));var util=require(_0x2e88('0x6'));var path=require(_0x2e88('0x7'));var sox=require(_0x2e88('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2e88('0x9'));var _=require(_0x2e88('0xa'));var squel=require(_0x2e88('0xb'));var crypto=require(_0x2e88('0xc'));var jsforce=require(_0x2e88('0xd'));var deskjs=require(_0x2e88('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2e88('0xf'));var Papa=require(_0x2e88('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2e88('0x11'));var as=require(_0x2e88('0x12'));var hardwareService=require(_0x2e88('0x13'));var logger=require(_0x2e88('0x14'))(_0x2e88('0x15'));var utils=require(_0x2e88('0x16'));var config=require(_0x2e88('0x17'));var licenseUtil=require(_0x2e88('0x18'));var db=require(_0x2e88('0x19'))['db'];function respondWithStatusCode(_0x162d87,_0x38da56){_0x38da56=_0x38da56||0xcc;return function(_0x22e13c){if(_0x22e13c){return _0x162d87['sendStatus'](_0x38da56);}return _0x162d87[_0x2e88('0x1a')](_0x38da56)[_0x2e88('0x1b')]();};}function respondWithResult(_0x22eca5,_0x344e04){_0x344e04=_0x344e04||0xc8;return function(_0x47440d){if(_0x47440d){return _0x22eca5[_0x2e88('0x1a')](_0x344e04)[_0x2e88('0x1c')](_0x47440d);}};}function respondWithFilteredResult(_0x1e9af3,_0xf6b9ee){return function(_0x58a848){if(_0x58a848){var _0x27ae31=typeof _0xf6b9ee[_0x2e88('0x1d')]===_0x2e88('0x1e')&&typeof _0xf6b9ee[_0x2e88('0x1f')]===_0x2e88('0x1e');var _0x502696=_0x58a848[_0x2e88('0x20')];var _0x381a8b=_0x27ae31?0x0:_0xf6b9ee['offset'];var _0x372cef=_0x27ae31?_0x58a848[_0x2e88('0x20')]:_0xf6b9ee[_0x2e88('0x1d')]+_0xf6b9ee['limit'];var _0x31771a;if(_0x372cef>=_0x502696){_0x372cef=_0x502696;_0x31771a=0xc8;}else{_0x31771a=0xce;}_0x1e9af3['status'](_0x31771a);return _0x1e9af3['set'](_0x2e88('0x21'),_0x381a8b+'-'+_0x372cef+'/'+_0x502696)[_0x2e88('0x1c')](_0x58a848);}return null;};}function patchUpdates(_0x496a83){return function(_0x4aed39){try{jsonpatch[_0x2e88('0x22')](_0x4aed39,_0x496a83,!![]);}catch(_0x1787c7){return BPromise[_0x2e88('0x23')](_0x1787c7);}return _0x4aed39[_0x2e88('0x24')]();};}function saveUpdates(_0x59a8f6,_0xb93485){return function(_0x588f8e){if(_0x588f8e){return _0x588f8e[_0x2e88('0x25')](_0x59a8f6)[_0x2e88('0x26')](function(_0x4c78bb){return _0x4c78bb;});}return null;};}function removeEntity(_0x1e503d,_0x5da2b9){return function(_0x2e35dc){if(_0x2e35dc){return _0x2e35dc[_0x2e88('0x27')]()['then'](function(){_0x1e503d[_0x2e88('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x462235,_0x59283e){return function(_0x297970){if(!_0x297970){_0x462235[_0x2e88('0x28')](0x194);}return _0x297970;};}function handleError(_0x4f0639,_0x4ada3c){_0x4ada3c=_0x4ada3c||0x1f4;return function(_0xd4adff){logger[_0x2e88('0x29')](_0xd4adff[_0x2e88('0x2a')]);if(_0xd4adff[_0x2e88('0x2b')]){delete _0xd4adff[_0x2e88('0x2b')];}_0x4f0639[_0x2e88('0x1a')](_0x4ada3c)[_0x2e88('0x2c')](_0xd4adff);};}exports[_0x2e88('0x2d')]=function(_0x27dd58,_0x3cbf4c){var _0xadc590={},_0x55d06d={},_0x29f63e={'count':0x0,'rows':[]};var _0x50d95d=_[_0x2e88('0x2e')](db[_0x2e88('0x2f')][_0x2e88('0x30')],function(_0x491963){return{'name':_0x491963[_0x2e88('0x31')],'type':_0x491963[_0x2e88('0x32')][_0x2e88('0x33')]};});_0x55d06d[_0x2e88('0x34')]=_[_0x2e88('0x2e')](_0x50d95d,_0x2e88('0x2b'));_0x55d06d[_0x2e88('0x35')]=_[_0x2e88('0x36')](_0x27dd58[_0x2e88('0x35')]);_0x55d06d[_0x2e88('0x37')]=_[_0x2e88('0x38')](_0x55d06d[_0x2e88('0x34')],_0x55d06d['query']);_0xadc590['attributes']=_[_0x2e88('0x38')](_0x55d06d[_0x2e88('0x34')],qs[_0x2e88('0x39')](_0x27dd58[_0x2e88('0x35')]['fields']));_0xadc590[_0x2e88('0x3a')]=_0xadc590['attributes'][_0x2e88('0x3b')]?_0xadc590[_0x2e88('0x3a')]:_0x55d06d[_0x2e88('0x34')];if(!_0x27dd58[_0x2e88('0x35')][_0x2e88('0x3c')]('nolimit')){_0xadc590[_0x2e88('0x1f')]=qs[_0x2e88('0x1f')](_0x27dd58[_0x2e88('0x35')][_0x2e88('0x1f')]);_0xadc590[_0x2e88('0x1d')]=qs['offset'](_0x27dd58[_0x2e88('0x35')][_0x2e88('0x1d')]);}_0xadc590[_0x2e88('0x3d')]=qs['sort'](_0x27dd58['query']['sort']);_0xadc590[_0x2e88('0x3e')]=qs[_0x2e88('0x37')](_[_0x2e88('0x3f')](_0x27dd58[_0x2e88('0x35')],_0x55d06d[_0x2e88('0x37')]),_0x50d95d);if(_0x27dd58['query'][_0x2e88('0x40')]){_0xadc590[_0x2e88('0x3e')]=_[_0x2e88('0x41')](_0xadc590['where'],{'$or':_[_0x2e88('0x2e')](_0x50d95d,function(_0x4ef341){if(_0x4ef341[_0x2e88('0x32')]!==_0x2e88('0x42')){var _0x49422a={};_0x49422a[_0x4ef341[_0x2e88('0x2b')]]={'$like':'%'+_0x27dd58['query'][_0x2e88('0x40')]+'%'};return _0x49422a;}})});}_0xadc590=_[_0x2e88('0x41')]({},_0xadc590,_0x27dd58[_0x2e88('0x43')]);var _0x5a22de={'where':_0xadc590[_0x2e88('0x3e')]};return db[_0x2e88('0x2f')][_0x2e88('0x20')](_0x5a22de)[_0x2e88('0x26')](function(_0x20c7ad){_0x29f63e[_0x2e88('0x20')]=_0x20c7ad;if(_0x27dd58['query'][_0x2e88('0x44')]){_0xadc590[_0x2e88('0x45')]=[{'all':!![]}];}return db[_0x2e88('0x2f')][_0x2e88('0x46')](_0xadc590);})['then'](function(_0x5ebb18){_0x29f63e[_0x2e88('0x47')]=_0x5ebb18;return _0x29f63e;})[_0x2e88('0x26')](respondWithFilteredResult(_0x3cbf4c,_0xadc590))[_0x2e88('0x48')](handleError(_0x3cbf4c,null));};exports[_0x2e88('0x49')]=function(_0x564f5f,_0x1e0b31){var _0x55059e={'raw':!![],'where':{'id':_0x564f5f[_0x2e88('0x4a')]['id']}},_0x4f272d={};_0x4f272d['model']=_[_0x2e88('0x36')](db[_0x2e88('0x2f')][_0x2e88('0x30')]);_0x4f272d['query']=_[_0x2e88('0x36')](_0x564f5f[_0x2e88('0x35')]);_0x4f272d[_0x2e88('0x37')]=_[_0x2e88('0x38')](_0x4f272d[_0x2e88('0x34')],_0x4f272d[_0x2e88('0x35')]);_0x55059e['attributes']=_[_0x2e88('0x38')](_0x4f272d['model'],qs[_0x2e88('0x39')](_0x564f5f[_0x2e88('0x35')][_0x2e88('0x39')]));_0x55059e[_0x2e88('0x3a')]=_0x55059e[_0x2e88('0x3a')][_0x2e88('0x3b')]?_0x55059e['attributes']:_0x4f272d[_0x2e88('0x34')];if(_0x564f5f[_0x2e88('0x35')]['includeAll']){_0x55059e[_0x2e88('0x45')]=[{'all':!![]}];}_0x55059e=_['merge']({},_0x55059e,_0x564f5f['options']);return db[_0x2e88('0x2f')][_0x2e88('0x4b')](_0x55059e)[_0x2e88('0x26')](handleEntityNotFound(_0x1e0b31,null))[_0x2e88('0x26')](respondWithResult(_0x1e0b31,null))['catch'](handleError(_0x1e0b31,null));};exports[_0x2e88('0x4c')]=function(_0x41395f,_0x47e473){return db['SmsQueueReport'][_0x2e88('0x4c')](_0x41395f['body'],{})[_0x2e88('0x26')](respondWithResult(_0x47e473,0xc9))['catch'](handleError(_0x47e473,null));};exports[_0x2e88('0x25')]=function(_0x500d55,_0x193c60){if(_0x500d55[_0x2e88('0x4d')]['id']){delete _0x500d55[_0x2e88('0x4d')]['id'];}return db[_0x2e88('0x2f')]['find']({'where':{'id':_0x500d55[_0x2e88('0x4a')]['id']}})['then'](handleEntityNotFound(_0x193c60,null))[_0x2e88('0x26')](saveUpdates(_0x500d55[_0x2e88('0x4d')],null))['then'](respondWithResult(_0x193c60,null))[_0x2e88('0x48')](handleError(_0x193c60,null));};exports['destroy']=function(_0x2a912e,_0x48c43d){return db[_0x2e88('0x2f')][_0x2e88('0x4b')]({'where':{'id':_0x2a912e['params']['id']}})[_0x2e88('0x26')](handleEntityNotFound(_0x48c43d,null))[_0x2e88('0x26')](removeEntity(_0x48c43d,null))['catch'](handleError(_0x48c43d,null));};exports[_0x2e88('0x4e')]=function(_0xbcd85,_0x21e2a9){return db[_0x2e88('0x2f')][_0x2e88('0x4e')]()[_0x2e88('0x26')](respondWithResult(_0x21e2a9,null))[_0x2e88('0x48')](handleError(_0x21e2a9,null));};
\ No newline at end of file
index becf1e4..d833631 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','define','SmsQueueReport','uniqueid','lodash'];(function(_0x580b65,_0x39234f){var _0x6e3000=function(_0x1ad986){while(--_0x1ad986){_0x580b65['push'](_0x580b65['shift']());}};_0x6e3000(++_0x39234f);}(_0xb7e7,0x121));var _0x7b7e=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0xb7e7[_0xaa0309];return _0x5de7ce;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));module['exports']=function(_0x53ed64,_0x333fa4){return _0x53ed64[_0x7b7e('0x7')](_0x7b7e('0x8'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':_0x7b7e('0x9'),'fields':[_0x7b7e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['define','SmsQueueReport','uniqueid','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xa9e0[_0x4dbaad];return _0x226c72;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0a9e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index d2877d3..ef35d70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87a7=['request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SmsQueueReport,\x20%s,\x20%s','result','catch','CreateSmsQueueReport','SmsQueueReport','create','options','UpdateSmsQueueReport','update','body','raw','where','limit','lodash','util','ioredis','../../mysqldb','rpc','../../config/environment','client','then','info'];(function(_0x293b78,_0x3c6625){var _0x6e7249=function(_0x41dac8){while(--_0x41dac8){_0x293b78['push'](_0x293b78['shift']());}};_0x6e7249(++_0x3c6625);}(_0x87a7,0xdf));var _0x787a=function(_0x4e2a53,_0x4100ea){_0x4e2a53=_0x4e2a53-0x0;var _0x4a2fd9=_0x87a7[_0x4e2a53];return _0x4a2fd9;};'use strict';var _=require(_0x787a('0x0'));var util=require(_0x787a('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x787a('0x2'));var db=require(_0x787a('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x787a('0x4'));var config=require(_0x787a('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x787a('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x192e47,_0x638d3b,_0x1a0539){return new BPromise(function(_0x4543cf,_0x322ccf){return client['request'](_0x192e47,_0x1a0539)[_0x787a('0x7')](function(_0x565c69){logger[_0x787a('0x8')]('SmsQueueReport,\x20%s,\x20%s',_0x638d3b,_0x787a('0x9'));logger[_0x787a('0xa')](_0x787a('0xb'),_0x638d3b,_0x787a('0x9'),JSON[_0x787a('0xc')](_0x565c69));if(_0x565c69[_0x787a('0xd')]){if(_0x565c69[_0x787a('0xd')][_0x787a('0xe')]===0x1f4){logger[_0x787a('0xd')]('SmsQueueReport,\x20%s,\x20%s',_0x638d3b,_0x565c69[_0x787a('0xd')][_0x787a('0xf')]);return _0x322ccf(_0x565c69[_0x787a('0xd')]['message']);}logger['error'](_0x787a('0x10'),_0x638d3b,_0x565c69[_0x787a('0xd')][_0x787a('0xf')]);return _0x4543cf(_0x565c69[_0x787a('0xd')][_0x787a('0xf')]);}else{logger[_0x787a('0x8')]('SmsQueueReport,\x20%s,\x20%s',_0x638d3b,_0x787a('0x9'));_0x4543cf(_0x565c69[_0x787a('0x11')][_0x787a('0xf')]);}})[_0x787a('0x12')](function(_0x231f10){logger[_0x787a('0xd')](_0x787a('0x10'),_0x638d3b,_0x231f10);_0x322ccf(_0x231f10);});});}exports[_0x787a('0x13')]=function(_0x455dc4){var _0x5ae13a=this;return new Promise(function(_0x7a2b03,_0x1593a2){return db[_0x787a('0x14')][_0x787a('0x15')](_0x455dc4['body'],{'raw':_0x455dc4[_0x787a('0x16')]?_0x455dc4['options']['raw']===undefined?!![]:![]:!![]})[_0x787a('0x7')](function(_0x34fd7b){logger[_0x787a('0x8')]('CreateSmsQueueReport',_0x455dc4);logger[_0x787a('0xa')]('CreateSmsQueueReport',_0x455dc4,JSON[_0x787a('0xc')](_0x34fd7b));_0x7a2b03(_0x34fd7b);})[_0x787a('0x12')](function(_0x5bb4c7){logger['error'](_0x787a('0x13'),_0x5bb4c7[_0x787a('0xf')],_0x455dc4);_0x1593a2(_0x5ae13a[_0x787a('0xd')](0x1f4,_0x5bb4c7[_0x787a('0xf')]));});});};exports[_0x787a('0x17')]=function(_0x3d47e0){var _0x432f84=this;return new Promise(function(_0x1e671d,_0x4513c2){return db['SmsQueueReport'][_0x787a('0x18')](_0x3d47e0[_0x787a('0x19')],{'raw':_0x3d47e0[_0x787a('0x16')]?_0x3d47e0[_0x787a('0x16')][_0x787a('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3d47e0['options']?_0x3d47e0[_0x787a('0x16')][_0x787a('0x1b')]||null:null,'attributes':_0x3d47e0['options']?_0x3d47e0[_0x787a('0x16')]['attributes']||null:null,'limit':_0x3d47e0[_0x787a('0x16')]?_0x3d47e0[_0x787a('0x16')][_0x787a('0x1c')]||null:null})['then'](function(_0x242b23){logger['info']('UpdateSmsQueueReport',_0x3d47e0);logger['debug'](_0x787a('0x17'),_0x3d47e0,JSON['stringify'](_0x242b23));_0x1e671d(_0x242b23);})[_0x787a('0x12')](function(_0x36acb5){logger[_0x787a('0xd')](_0x787a('0x17'),_0x36acb5[_0x787a('0xf')],_0x3d47e0);_0x4513c2(_0x432f84[_0x787a('0xd')](0x1f4,_0x36acb5[_0x787a('0xf')]));});});};
\ No newline at end of file
+var _0xf31b=['create','options','raw','stringify','UpdateSmsQueueReport','update','where','attributes','limit','lodash','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','http','then','info','SmsQueueReport,\x20%s,\x20%s','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','CreateSmsQueueReport','SmsQueueReport'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xf31b,0x120));var _0xbf31=function(_0x555500,_0x5459a3){_0x555500=_0x555500-0x0;var _0x2b8df9=_0xf31b[_0x555500];return _0x2b8df9;};'use strict';var _=require(_0xbf31('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xbf31('0x1'));var rs=require(_0xbf31('0x2'));var fs=require('fs');var Redis=require(_0xbf31('0x3'));var db=require(_0xbf31('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xbf31('0x5'));var config=require('../../config/environment');var jayson=require(_0xbf31('0x6'));var client=jayson[_0xbf31('0x7')][_0xbf31('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x217c37,_0xddbee3,_0xcc7ab5){return new BPromise(function(_0x2e8b39,_0x486fd3){return client['request'](_0x217c37,_0xcc7ab5)[_0xbf31('0x9')](function(_0x5c7950){logger[_0xbf31('0xa')](_0xbf31('0xb'),_0xddbee3,'request\x20sent');logger[_0xbf31('0xc')](_0xbf31('0xd'),_0xddbee3,_0xbf31('0xe'),JSON['stringify'](_0x5c7950));if(_0x5c7950[_0xbf31('0xf')]){if(_0x5c7950['error'][_0xbf31('0x10')]===0x1f4){logger[_0xbf31('0xf')](_0xbf31('0xb'),_0xddbee3,_0x5c7950[_0xbf31('0xf')][_0xbf31('0x11')]);return _0x486fd3(_0x5c7950[_0xbf31('0xf')][_0xbf31('0x11')]);}logger[_0xbf31('0xf')](_0xbf31('0xb'),_0xddbee3,_0x5c7950[_0xbf31('0xf')]['message']);return _0x2e8b39(_0x5c7950[_0xbf31('0xf')][_0xbf31('0x11')]);}else{logger[_0xbf31('0xa')](_0xbf31('0xb'),_0xddbee3,_0xbf31('0xe'));_0x2e8b39(_0x5c7950[_0xbf31('0x12')][_0xbf31('0x11')]);}})[_0xbf31('0x13')](function(_0xcf305f){logger['error'](_0xbf31('0xb'),_0xddbee3,_0xcf305f);_0x486fd3(_0xcf305f);});});}exports[_0xbf31('0x14')]=function(_0x7799f1){var _0x2f5123=this;return new Promise(function(_0x3c552b,_0x12b858){return db[_0xbf31('0x15')][_0xbf31('0x16')](_0x7799f1['body'],{'raw':_0x7799f1[_0xbf31('0x17')]?_0x7799f1[_0xbf31('0x17')][_0xbf31('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x3dd15a){logger[_0xbf31('0xa')](_0xbf31('0x14'),_0x7799f1);logger[_0xbf31('0xc')]('CreateSmsQueueReport',_0x7799f1,JSON[_0xbf31('0x19')](_0x3dd15a));_0x3c552b(_0x3dd15a);})['catch'](function(_0x1f60dc){logger[_0xbf31('0xf')](_0xbf31('0x14'),_0x1f60dc[_0xbf31('0x11')],_0x7799f1);_0x12b858(_0x2f5123[_0xbf31('0xf')](0x1f4,_0x1f60dc[_0xbf31('0x11')]));});});};exports[_0xbf31('0x1a')]=function(_0xfa3f5f){var _0x15b5b0=this;return new Promise(function(_0x18b25a,_0x46cf89){return db[_0xbf31('0x15')][_0xbf31('0x1b')](_0xfa3f5f['body'],{'raw':_0xfa3f5f[_0xbf31('0x17')]?_0xfa3f5f[_0xbf31('0x17')][_0xbf31('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xfa3f5f[_0xbf31('0x17')]?_0xfa3f5f[_0xbf31('0x17')][_0xbf31('0x1c')]||null:null,'attributes':_0xfa3f5f[_0xbf31('0x17')]?_0xfa3f5f['options'][_0xbf31('0x1d')]||null:null,'limit':_0xfa3f5f[_0xbf31('0x17')]?_0xfa3f5f[_0xbf31('0x17')][_0xbf31('0x1e')]||null:null})[_0xbf31('0x9')](function(_0x3edadb){logger[_0xbf31('0xa')]('UpdateSmsQueueReport',_0xfa3f5f);logger[_0xbf31('0xc')](_0xbf31('0x1a'),_0xfa3f5f,JSON['stringify'](_0x3edadb));_0x18b25a(_0x3edadb);})[_0xbf31('0x13')](function(_0x137261){logger[_0xbf31('0xf')](_0xbf31('0x1a'),_0x137261[_0xbf31('0x11')],_0xfa3f5f);_0x46cf89(_0x15b5b0[_0xbf31('0xf')](0x1f4,_0x137261[_0xbf31('0x11')]));});});};
\ No newline at end of file
index 3eaa894..ce8b76a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04de=['describe','get','/:id','show','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','/describe','isAuthenticated'];(function(_0xf1bff5,_0x22cb14){var _0x1efca6=function(_0x4d7616){while(--_0x4d7616){_0xf1bff5['push'](_0xf1bff5['shift']());}};_0x1efca6(++_0x22cb14);}(_0x04de,0x107));var _0xe04d=function(_0x496d67,_0x29bc5e){_0x496d67=_0x496d67-0x0;var _0x16fb91=_0x04de[_0x496d67];return _0x16fb91;};'use strict';var multer=require(_0xe04d('0x0'));var util=require(_0xe04d('0x1'));var path=require(_0xe04d('0x2'));var timeout=require(_0xe04d('0x3'));var express=require(_0xe04d('0x4'));var router=express[_0xe04d('0x5')]();var fs_extra=require(_0xe04d('0x6'));var auth=require(_0xe04d('0x7'));var interaction=require(_0xe04d('0x8'));var config=require(_0xe04d('0x9'));var controller=require(_0xe04d('0xa'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xe04d('0xb'),auth[_0xe04d('0xc')](),controller[_0xe04d('0xd')]);router[_0xe04d('0xe')](_0xe04d('0xf'),auth[_0xe04d('0xc')](),controller[_0xe04d('0x10')]);router[_0xe04d('0x11')]('/',auth['isAuthenticated'](),controller[_0xe04d('0x12')]);router[_0xe04d('0x13')](_0xe04d('0xf'),auth[_0xe04d('0xc')](),controller[_0xe04d('0x14')]);router[_0xe04d('0x15')](_0xe04d('0xf'),auth[_0xe04d('0xc')](),controller[_0xe04d('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x207c=['/:id','show','post','isAuthenticated','create','put','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','index','get','/describe','describe'];(function(_0x4d2c26,_0x2701f9){var _0x5bf9b4=function(_0x52edc6){while(--_0x52edc6){_0x4d2c26['push'](_0x4d2c26['shift']());}};_0x5bf9b4(++_0x2701f9);}(_0x207c,0x1e8));var _0xc207=function(_0x19bf5f,_0x1ca6b9){_0x19bf5f=_0x19bf5f-0x0;var _0x237efa=_0x207c[_0x19bf5f];return _0x237efa;};'use strict';var multer=require('multer');var util=require(_0xc207('0x0'));var path=require(_0xc207('0x1'));var timeout=require(_0xc207('0x2'));var express=require(_0xc207('0x3'));var router=express[_0xc207('0x4')]();var fs_extra=require(_0xc207('0x5'));var auth=require(_0xc207('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc207('0x7'));var controller=require('./smsTransferReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xc207('0x8')]);router[_0xc207('0x9')](_0xc207('0xa'),auth['isAuthenticated'](),controller[_0xc207('0xb')]);router[_0xc207('0x9')](_0xc207('0xc'),auth['isAuthenticated'](),controller[_0xc207('0xd')]);router[_0xc207('0xe')]('/',auth[_0xc207('0xf')](),controller[_0xc207('0x10')]);router[_0xc207('0x11')](_0xc207('0xc'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xc207('0xc'),auth['isAuthenticated'](),controller[_0xc207('0x12')]);module[_0xc207('0x13')]=router;
\ No newline at end of file
index 59937a4..89956e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x35b87c,_0x166a8c){var _0x24795b=function(_0x2cb112){while(--_0x2cb112){_0x35b87c['push'](_0x35b87c['shift']());}};_0x24795b(++_0x166a8c);}(_0xf4eb,0xec));var _0xbf4e=function(_0x25eab7,_0x2ce211){_0x25eab7=_0x25eab7-0x0;var _0x19ceab=_0xf4eb[_0x25eab7];return _0x19ceab;};'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 _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0x4e124d,_0x376516){var _0x32bd92=function(_0x340b1d){while(--_0x340b1d){_0x4e124d['push'](_0x4e124d['shift']());}};_0x32bd92(++_0x376516);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x2e6dee,_0x1a61b0){_0x2e6dee=_0x2e6dee-0x0;var _0x47706=_0xf3cd[_0x2e6dee];return _0x47706;};'use strict';var moment=require(_0xdf3c('0x0'));var Sequelize=require(_0xdf3c('0x1'));module[_0xdf3c('0x2')]={'uniqueid':{'type':Sequelize[_0xdf3c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xdf3c('0x4')](_0xdf3c('0x5'),'agent',_0xdf3c('0x6')),'allowNull':![],'defaultValue':_0xdf3c('0x6')},'transferredAt':{'type':Sequelize[_0xdf3c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index 5c636f4..cbbc81c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f7d=['attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','json','reject','save','update','then','stack','name','index','map','SmsTransferReport','rawAttributes','type','key','model','query','filters','intersection'];(function(_0x14e43e,_0x30ceec){var _0x56215b=function(_0x1f737c){while(--_0x1f737c){_0x14e43e['push'](_0x14e43e['shift']());}};_0x56215b(++_0x30ceec);}(_0x2f7d,0x1e2));var _0xd2f7=function(_0x4fea7b,_0x344493){_0x4fea7b=_0x4fea7b-0x0;var _0x4ceee0=_0x2f7d[_0x4fea7b];return _0x4ceee0;};'use strict';var emlformat=require(_0xd2f7('0x0'));var rimraf=require(_0xd2f7('0x1'));var zipdir=require(_0xd2f7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd2f7('0x3'));var moment=require('moment');var BPromise=require(_0xd2f7('0x4'));var Mustache=require('mustache');var util=require(_0xd2f7('0x5'));var path=require('path');var sox=require(_0xd2f7('0x6'));var csv=require('to-csv');var ejs=require(_0xd2f7('0x7'));var fs=require('fs');var fs_extra=require(_0xd2f7('0x8'));var _=require(_0xd2f7('0x9'));var squel=require(_0xd2f7('0xa'));var crypto=require(_0xd2f7('0xb'));var jsforce=require(_0xd2f7('0xc'));var deskjs=require(_0xd2f7('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd2f7('0xe'));var Redis=require(_0xd2f7('0xf'));var authService=require(_0xd2f7('0x10'));var qs=require(_0xd2f7('0x11'));var as=require(_0xd2f7('0x12'));var hardwareService=require(_0xd2f7('0x13'));var logger=require(_0xd2f7('0x14'))(_0xd2f7('0x15'));var utils=require(_0xd2f7('0x16'));var config=require(_0xd2f7('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xd2f7('0x18'))['db'];function respondWithStatusCode(_0x59cf0a,_0x46353b){_0x46353b=_0x46353b||0xcc;return function(_0x2532b3){if(_0x2532b3){return _0x59cf0a[_0xd2f7('0x19')](_0x46353b);}return _0x59cf0a[_0xd2f7('0x1a')](_0x46353b)[_0xd2f7('0x1b')]();};}function respondWithResult(_0x505319,_0x41bc26){_0x41bc26=_0x41bc26||0xc8;return function(_0x58c7d8){if(_0x58c7d8){return _0x505319['status'](_0x41bc26)['json'](_0x58c7d8);}};}function respondWithFilteredResult(_0x5339c3,_0xeffbb5){return function(_0x1c65c8){if(_0x1c65c8){var _0x369573=typeof _0xeffbb5[_0xd2f7('0x1c')]===_0xd2f7('0x1d')&&typeof _0xeffbb5['limit']==='undefined';var _0x3061ac=_0x1c65c8[_0xd2f7('0x1e')];var _0x361202=_0x369573?0x0:_0xeffbb5['offset'];var _0x54e7ef=_0x369573?_0x1c65c8['count']:_0xeffbb5[_0xd2f7('0x1c')]+_0xeffbb5[_0xd2f7('0x1f')];var _0x425fd9;if(_0x54e7ef>=_0x3061ac){_0x54e7ef=_0x3061ac;_0x425fd9=0xc8;}else{_0x425fd9=0xce;}_0x5339c3[_0xd2f7('0x1a')](_0x425fd9);return _0x5339c3[_0xd2f7('0x20')]('Content-Range',_0x361202+'-'+_0x54e7ef+'/'+_0x3061ac)[_0xd2f7('0x21')](_0x1c65c8);}return null;};}function patchUpdates(_0x207fbb){return function(_0x30c4c1){try{jsonpatch['apply'](_0x30c4c1,_0x207fbb,!![]);}catch(_0x2736cb){return BPromise[_0xd2f7('0x22')](_0x2736cb);}return _0x30c4c1[_0xd2f7('0x23')]();};}function saveUpdates(_0x2566c8,_0x43d96a){return function(_0x24a478){if(_0x24a478){return _0x24a478[_0xd2f7('0x24')](_0x2566c8)[_0xd2f7('0x25')](function(_0x31df59){return _0x31df59;});}return null;};}function removeEntity(_0x1e9b0a,_0x1c433e){return function(_0x54faae){if(_0x54faae){return _0x54faae['destroy']()['then'](function(){_0x1e9b0a['status'](0xcc)[_0xd2f7('0x1b')]();});}};}function handleEntityNotFound(_0x103453,_0x3de4a9){return function(_0x32da0d){if(!_0x32da0d){_0x103453[_0xd2f7('0x19')](0x194);}return _0x32da0d;};}function handleError(_0x30bdc6,_0x16165a){_0x16165a=_0x16165a||0x1f4;return function(_0x2a1a7d){logger['error'](_0x2a1a7d[_0xd2f7('0x26')]);if(_0x2a1a7d[_0xd2f7('0x27')]){delete _0x2a1a7d['name'];}_0x30bdc6['status'](_0x16165a)['send'](_0x2a1a7d);};}exports[_0xd2f7('0x28')]=function(_0x9f5ad0,_0x267b5f){var _0x1b08f4={},_0x54ca98={},_0x5daa78={'count':0x0,'rows':[]};var _0x59c35d=_[_0xd2f7('0x29')](db[_0xd2f7('0x2a')][_0xd2f7('0x2b')],function(_0xb55717){return{'name':_0xb55717['fieldName'],'type':_0xb55717[_0xd2f7('0x2c')][_0xd2f7('0x2d')]};});_0x54ca98[_0xd2f7('0x2e')]=_[_0xd2f7('0x29')](_0x59c35d,'name');_0x54ca98[_0xd2f7('0x2f')]=_['keys'](_0x9f5ad0[_0xd2f7('0x2f')]);_0x54ca98[_0xd2f7('0x30')]=_[_0xd2f7('0x31')](_0x54ca98['model'],_0x54ca98[_0xd2f7('0x2f')]);_0x1b08f4[_0xd2f7('0x32')]=_[_0xd2f7('0x31')](_0x54ca98[_0xd2f7('0x2e')],qs[_0xd2f7('0x33')](_0x9f5ad0[_0xd2f7('0x2f')][_0xd2f7('0x33')]));_0x1b08f4[_0xd2f7('0x32')]=_0x1b08f4['attributes'][_0xd2f7('0x34')]?_0x1b08f4[_0xd2f7('0x32')]:_0x54ca98['model'];if(!_0x9f5ad0[_0xd2f7('0x2f')][_0xd2f7('0x35')](_0xd2f7('0x36'))){_0x1b08f4[_0xd2f7('0x1f')]=qs['limit'](_0x9f5ad0['query'][_0xd2f7('0x1f')]);_0x1b08f4['offset']=qs[_0xd2f7('0x1c')](_0x9f5ad0[_0xd2f7('0x2f')][_0xd2f7('0x1c')]);}_0x1b08f4[_0xd2f7('0x37')]=qs[_0xd2f7('0x38')](_0x9f5ad0[_0xd2f7('0x2f')][_0xd2f7('0x38')]);_0x1b08f4[_0xd2f7('0x39')]=qs[_0xd2f7('0x30')](_[_0xd2f7('0x3a')](_0x9f5ad0[_0xd2f7('0x2f')],_0x54ca98[_0xd2f7('0x30')]),_0x59c35d);if(_0x9f5ad0['query'][_0xd2f7('0x3b')]){_0x1b08f4[_0xd2f7('0x39')]=_['merge'](_0x1b08f4[_0xd2f7('0x39')],{'$or':_[_0xd2f7('0x29')](_0x59c35d,function(_0x2cc931){if(_0x2cc931[_0xd2f7('0x2c')]!==_0xd2f7('0x3c')){var _0x160401={};_0x160401[_0x2cc931[_0xd2f7('0x27')]]={'$like':'%'+_0x9f5ad0[_0xd2f7('0x2f')]['filter']+'%'};return _0x160401;}})});}_0x1b08f4=_[_0xd2f7('0x3d')]({},_0x1b08f4,_0x9f5ad0[_0xd2f7('0x3e')]);var _0x4a6750={'where':_0x1b08f4[_0xd2f7('0x39')]};return db[_0xd2f7('0x2a')][_0xd2f7('0x1e')](_0x4a6750)['then'](function(_0x466530){_0x5daa78[_0xd2f7('0x1e')]=_0x466530;if(_0x9f5ad0['query'][_0xd2f7('0x3f')]){_0x1b08f4[_0xd2f7('0x40')]=[{'all':!![]}];}return db['SmsTransferReport'][_0xd2f7('0x41')](_0x1b08f4);})[_0xd2f7('0x25')](function(_0x27b25a){_0x5daa78[_0xd2f7('0x42')]=_0x27b25a;return _0x5daa78;})[_0xd2f7('0x25')](respondWithFilteredResult(_0x267b5f,_0x1b08f4))[_0xd2f7('0x43')](handleError(_0x267b5f,null));};exports[_0xd2f7('0x44')]=function(_0x3663d3,_0x571fe9){var _0x5a9d82={'raw':!![],'where':{'id':_0x3663d3[_0xd2f7('0x45')]['id']}},_0x52900d={};_0x52900d[_0xd2f7('0x2e')]=_[_0xd2f7('0x46')](db['SmsTransferReport'][_0xd2f7('0x2b')]);_0x52900d[_0xd2f7('0x2f')]=_[_0xd2f7('0x46')](_0x3663d3[_0xd2f7('0x2f')]);_0x52900d[_0xd2f7('0x30')]=_[_0xd2f7('0x31')](_0x52900d[_0xd2f7('0x2e')],_0x52900d['query']);_0x5a9d82[_0xd2f7('0x32')]=_['intersection'](_0x52900d['model'],qs[_0xd2f7('0x33')](_0x3663d3['query']['fields']));_0x5a9d82[_0xd2f7('0x32')]=_0x5a9d82[_0xd2f7('0x32')][_0xd2f7('0x34')]?_0x5a9d82[_0xd2f7('0x32')]:_0x52900d[_0xd2f7('0x2e')];if(_0x3663d3[_0xd2f7('0x2f')]['includeAll']){_0x5a9d82['include']=[{'all':!![]}];}_0x5a9d82=_['merge']({},_0x5a9d82,_0x3663d3['options']);return db[_0xd2f7('0x2a')][_0xd2f7('0x47')](_0x5a9d82)[_0xd2f7('0x25')](handleEntityNotFound(_0x571fe9,null))['then'](respondWithResult(_0x571fe9,null))[_0xd2f7('0x43')](handleError(_0x571fe9,null));};exports[_0xd2f7('0x48')]=function(_0xacd659,_0x4d78da){return db[_0xd2f7('0x2a')]['create'](_0xacd659[_0xd2f7('0x49')],{})[_0xd2f7('0x25')](respondWithResult(_0x4d78da,0xc9))[_0xd2f7('0x43')](handleError(_0x4d78da,null));};exports['update']=function(_0x2122de,_0x565ea6){if(_0x2122de['body']['id']){delete _0x2122de[_0xd2f7('0x49')]['id'];}return db[_0xd2f7('0x2a')][_0xd2f7('0x47')]({'where':{'id':_0x2122de[_0xd2f7('0x45')]['id']}})[_0xd2f7('0x25')](handleEntityNotFound(_0x565ea6,null))[_0xd2f7('0x25')](saveUpdates(_0x2122de[_0xd2f7('0x49')],null))[_0xd2f7('0x25')](respondWithResult(_0x565ea6,null))[_0xd2f7('0x43')](handleError(_0x565ea6,null));};exports[_0xd2f7('0x4a')]=function(_0x587622,_0x1560fb){return db[_0xd2f7('0x2a')]['find']({'where':{'id':_0x587622['params']['id']}})[_0xd2f7('0x25')](handleEntityNotFound(_0x1560fb,null))['then'](removeEntity(_0x1560fb,null))[_0xd2f7('0x43')](handleError(_0x1560fb,null));};exports['describe']=function(_0x3c54ef,_0x4f6a72){return db[_0xd2f7('0x2a')][_0xd2f7('0x4b')]()['then'](respondWithResult(_0x4f6a72,null))[_0xd2f7('0x43')](handleError(_0x4f6a72,null));};
\ No newline at end of file
+var _0xc06d=['mustache','path','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','map','SmsTransferReport','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','includeAll','include','show','params','rawAttributes','options','find','catch','create','body','describe','rimraf','fast-json-patch','moment','bluebird'];(function(_0x556bb1,_0x34830d){var _0x45455f=function(_0x13c6ba){while(--_0x13c6ba){_0x556bb1['push'](_0x556bb1['shift']());}};_0x45455f(++_0x34830d);}(_0xc06d,0xd1));var _0xdc06=function(_0x2e656c,_0xee66ce){_0x2e656c=_0x2e656c-0x0;var _0x139ec=_0xc06d[_0x2e656c];return _0x139ec;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdc06('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdc06('0x1'));var rp=require('request-promise');var moment=require(_0xdc06('0x2'));var BPromise=require(_0xdc06('0x3'));var Mustache=require(_0xdc06('0x4'));var util=require('util');var path=require(_0xdc06('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xdc06('0x6'));var fs=require('fs');var fs_extra=require(_0xdc06('0x7'));var _=require(_0xdc06('0x8'));var squel=require(_0xdc06('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xdc06('0xa'));var toCsv=require(_0xdc06('0xb'));var querystring=require(_0xdc06('0xc'));var Papa=require(_0xdc06('0xd'));var Redis=require(_0xdc06('0xe'));var authService=require(_0xdc06('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xdc06('0x10'));var hardwareService=require(_0xdc06('0x11'));var logger=require(_0xdc06('0x12'))('api');var utils=require(_0xdc06('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x364da6,_0x226934){_0x226934=_0x226934||0xcc;return function(_0x3d516b){if(_0x3d516b){return _0x364da6[_0xdc06('0x14')](_0x226934);}return _0x364da6[_0xdc06('0x15')](_0x226934)[_0xdc06('0x16')]();};}function respondWithResult(_0x2a5b02,_0x4b82b3){_0x4b82b3=_0x4b82b3||0xc8;return function(_0xd281c3){if(_0xd281c3){return _0x2a5b02[_0xdc06('0x15')](_0x4b82b3)[_0xdc06('0x17')](_0xd281c3);}};}function respondWithFilteredResult(_0xd55424,_0x283918){return function(_0x52807c){if(_0x52807c){var _0x999cb=typeof _0x283918['offset']===_0xdc06('0x18')&&typeof _0x283918[_0xdc06('0x19')]===_0xdc06('0x18');var _0x2c933c=_0x52807c['count'];var _0x5ad503=_0x999cb?0x0:_0x283918[_0xdc06('0x1a')];var _0x2c81c0=_0x999cb?_0x52807c[_0xdc06('0x1b')]:_0x283918[_0xdc06('0x1a')]+_0x283918[_0xdc06('0x19')];var _0xf67004;if(_0x2c81c0>=_0x2c933c){_0x2c81c0=_0x2c933c;_0xf67004=0xc8;}else{_0xf67004=0xce;}_0xd55424[_0xdc06('0x15')](_0xf67004);return _0xd55424[_0xdc06('0x1c')](_0xdc06('0x1d'),_0x5ad503+'-'+_0x2c81c0+'/'+_0x2c933c)[_0xdc06('0x17')](_0x52807c);}return null;};}function patchUpdates(_0x24299f){return function(_0x3e1c7a){try{jsonpatch['apply'](_0x3e1c7a,_0x24299f,!![]);}catch(_0x24154c){return BPromise[_0xdc06('0x1e')](_0x24154c);}return _0x3e1c7a[_0xdc06('0x1f')]();};}function saveUpdates(_0x14b29b,_0x4866a7){return function(_0x5c65f8){if(_0x5c65f8){return _0x5c65f8[_0xdc06('0x20')](_0x14b29b)[_0xdc06('0x21')](function(_0x4fa4a3){return _0x4fa4a3;});}return null;};}function removeEntity(_0xa7212c,_0x320cf8){return function(_0x1c4127){if(_0x1c4127){return _0x1c4127[_0xdc06('0x22')]()[_0xdc06('0x21')](function(){_0xa7212c[_0xdc06('0x15')](0xcc)[_0xdc06('0x16')]();});}};}function handleEntityNotFound(_0x81a9ac,_0x4c55dd){return function(_0x276328){if(!_0x276328){_0x81a9ac[_0xdc06('0x14')](0x194);}return _0x276328;};}function handleError(_0x3c75a7,_0x10d85f){_0x10d85f=_0x10d85f||0x1f4;return function(_0x4e943c){logger[_0xdc06('0x23')](_0x4e943c[_0xdc06('0x24')]);if(_0x4e943c[_0xdc06('0x25')]){delete _0x4e943c['name'];}_0x3c75a7[_0xdc06('0x15')](_0x10d85f)['send'](_0x4e943c);};}exports['index']=function(_0xb1f5ce,_0xeed22d){var _0x5dcaaf={},_0x1e9397={},_0x22b638={'count':0x0,'rows':[]};var _0x24f542=_[_0xdc06('0x26')](db[_0xdc06('0x27')]['rawAttributes'],function(_0x371568){return{'name':_0x371568[_0xdc06('0x28')],'type':_0x371568[_0xdc06('0x29')][_0xdc06('0x2a')]};});_0x1e9397['model']=_[_0xdc06('0x26')](_0x24f542,'name');_0x1e9397[_0xdc06('0x2b')]=_[_0xdc06('0x2c')](_0xb1f5ce[_0xdc06('0x2b')]);_0x1e9397['filters']=_[_0xdc06('0x2d')](_0x1e9397[_0xdc06('0x2e')],_0x1e9397['query']);_0x5dcaaf[_0xdc06('0x2f')]=_[_0xdc06('0x2d')](_0x1e9397[_0xdc06('0x2e')],qs['fields'](_0xb1f5ce[_0xdc06('0x2b')][_0xdc06('0x30')]));_0x5dcaaf[_0xdc06('0x2f')]=_0x5dcaaf[_0xdc06('0x2f')][_0xdc06('0x31')]?_0x5dcaaf['attributes']:_0x1e9397[_0xdc06('0x2e')];if(!_0xb1f5ce[_0xdc06('0x2b')][_0xdc06('0x32')](_0xdc06('0x33'))){_0x5dcaaf[_0xdc06('0x19')]=qs[_0xdc06('0x19')](_0xb1f5ce[_0xdc06('0x2b')][_0xdc06('0x19')]);_0x5dcaaf['offset']=qs[_0xdc06('0x1a')](_0xb1f5ce[_0xdc06('0x2b')]['offset']);}_0x5dcaaf[_0xdc06('0x34')]=qs[_0xdc06('0x35')](_0xb1f5ce['query'][_0xdc06('0x35')]);_0x5dcaaf[_0xdc06('0x36')]=qs['filters'](_[_0xdc06('0x37')](_0xb1f5ce[_0xdc06('0x2b')],_0x1e9397[_0xdc06('0x38')]),_0x24f542);if(_0xb1f5ce['query'][_0xdc06('0x39')]){_0x5dcaaf[_0xdc06('0x36')]=_[_0xdc06('0x3a')](_0x5dcaaf[_0xdc06('0x36')],{'$or':_[_0xdc06('0x26')](_0x24f542,function(_0x2d9889){if(_0x2d9889['type']!==_0xdc06('0x3b')){var _0x523a2e={};_0x523a2e[_0x2d9889[_0xdc06('0x25')]]={'$like':'%'+_0xb1f5ce[_0xdc06('0x2b')][_0xdc06('0x39')]+'%'};return _0x523a2e;}})});}_0x5dcaaf=_[_0xdc06('0x3a')]({},_0x5dcaaf,_0xb1f5ce['options']);var _0x5f5ad7={'where':_0x5dcaaf[_0xdc06('0x36')]};return db[_0xdc06('0x27')]['count'](_0x5f5ad7)[_0xdc06('0x21')](function(_0x5cd335){_0x22b638[_0xdc06('0x1b')]=_0x5cd335;if(_0xb1f5ce[_0xdc06('0x2b')][_0xdc06('0x3c')]){_0x5dcaaf[_0xdc06('0x3d')]=[{'all':!![]}];}return db[_0xdc06('0x27')]['findAll'](_0x5dcaaf);})['then'](function(_0x38aae4){_0x22b638['rows']=_0x38aae4;return _0x22b638;})[_0xdc06('0x21')](respondWithFilteredResult(_0xeed22d,_0x5dcaaf))['catch'](handleError(_0xeed22d,null));};exports[_0xdc06('0x3e')]=function(_0x2cdb6d,_0x3644e7){var _0x30e82e={'raw':!![],'where':{'id':_0x2cdb6d[_0xdc06('0x3f')]['id']}},_0x51a22d={};_0x51a22d['model']=_[_0xdc06('0x2c')](db[_0xdc06('0x27')][_0xdc06('0x40')]);_0x51a22d[_0xdc06('0x2b')]=_[_0xdc06('0x2c')](_0x2cdb6d['query']);_0x51a22d[_0xdc06('0x38')]=_[_0xdc06('0x2d')](_0x51a22d[_0xdc06('0x2e')],_0x51a22d[_0xdc06('0x2b')]);_0x30e82e[_0xdc06('0x2f')]=_[_0xdc06('0x2d')](_0x51a22d['model'],qs[_0xdc06('0x30')](_0x2cdb6d[_0xdc06('0x2b')]['fields']));_0x30e82e[_0xdc06('0x2f')]=_0x30e82e[_0xdc06('0x2f')][_0xdc06('0x31')]?_0x30e82e[_0xdc06('0x2f')]:_0x51a22d[_0xdc06('0x2e')];if(_0x2cdb6d[_0xdc06('0x2b')]['includeAll']){_0x30e82e[_0xdc06('0x3d')]=[{'all':!![]}];}_0x30e82e=_[_0xdc06('0x3a')]({},_0x30e82e,_0x2cdb6d[_0xdc06('0x41')]);return db[_0xdc06('0x27')][_0xdc06('0x42')](_0x30e82e)[_0xdc06('0x21')](handleEntityNotFound(_0x3644e7,null))[_0xdc06('0x21')](respondWithResult(_0x3644e7,null))[_0xdc06('0x43')](handleError(_0x3644e7,null));};exports['create']=function(_0xfddcc5,_0x56e63e){return db[_0xdc06('0x27')][_0xdc06('0x44')](_0xfddcc5[_0xdc06('0x45')],{})[_0xdc06('0x21')](respondWithResult(_0x56e63e,0xc9))[_0xdc06('0x43')](handleError(_0x56e63e,null));};exports[_0xdc06('0x20')]=function(_0x908c80,_0x51023b){if(_0x908c80[_0xdc06('0x45')]['id']){delete _0x908c80[_0xdc06('0x45')]['id'];}return db[_0xdc06('0x27')][_0xdc06('0x42')]({'where':{'id':_0x908c80[_0xdc06('0x3f')]['id']}})[_0xdc06('0x21')](handleEntityNotFound(_0x51023b,null))['then'](saveUpdates(_0x908c80['body'],null))[_0xdc06('0x21')](respondWithResult(_0x51023b,null))[_0xdc06('0x43')](handleError(_0x51023b,null));};exports[_0xdc06('0x22')]=function(_0x26489a,_0x4f34ef){return db['SmsTransferReport'][_0xdc06('0x42')]({'where':{'id':_0x26489a[_0xdc06('0x3f')]['id']}})[_0xdc06('0x21')](handleEntityNotFound(_0x4f34ef,null))[_0xdc06('0x21')](removeEntity(_0x4f34ef,null))[_0xdc06('0x43')](handleError(_0x4f34ef,null));};exports[_0xdc06('0x46')]=function(_0x464fce,_0xa6b9cd){return db[_0xdc06('0x27')][_0xdc06('0x46')]()[_0xdc06('0x21')](respondWithResult(_0xa6b9cd,null))[_0xdc06('0x43')](handleError(_0xa6b9cd,null));};
\ No newline at end of file
index d649477..6e87cbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d64=['report_sms_transfer','uniqueid','lodash','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./smsTransferReport.attributes','exports','define','SmsTransferReport'];(function(_0x867b0a,_0x587ccf){var _0x137438=function(_0xbeafa6){while(--_0xbeafa6){_0x867b0a['push'](_0x867b0a['shift']());}};_0x137438(++_0x587ccf);}(_0x0d64,0x77));var _0x40d6=function(_0xb0975b,_0x93b0d6){_0xb0975b=_0xb0975b-0x0;var _0x320d30=_0x0d64[_0xb0975b];return _0x320d30;};'use strict';var _=require(_0x40d6('0x0'));var util=require('util');var logger=require(_0x40d6('0x1'))(_0x40d6('0x2'));var moment=require('moment');var BPromise=require(_0x40d6('0x3'));var rp=require(_0x40d6('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x40d6('0x5'));var config=require(_0x40d6('0x6'));var attributes=require(_0x40d6('0x7'));module[_0x40d6('0x8')]=function(_0x1aace9,_0x2b8aae){return _0x1aace9[_0x40d6('0x9')](_0x40d6('0xa'),attributes,{'tableName':_0x40d6('0xb'),'paranoid':![],'indexes':[{'name':_0x40d6('0xc'),'fields':[_0x40d6('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x97f7=['bluebird','request-promise','path','rimraf','../../config/environment','./smsTransferReport.attributes','exports','define','SmsTransferReport','report_sms_transfer','uniqueid','lodash','util'];(function(_0x547842,_0x1c61e8){var _0x540258=function(_0x5da6ae){while(--_0x5da6ae){_0x547842['push'](_0x547842['shift']());}};_0x540258(++_0x1c61e8);}(_0x97f7,0x10f));var _0x797f=function(_0x342baa,_0x4a110f){_0x342baa=_0x342baa-0x0;var _0x1208f3=_0x97f7[_0x342baa];return _0x1208f3;};'use strict';var _=require(_0x797f('0x0'));var util=require(_0x797f('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x797f('0x2'));var rp=require(_0x797f('0x3'));var fs=require('fs');var path=require(_0x797f('0x4'));var rimraf=require(_0x797f('0x5'));var config=require(_0x797f('0x6'));var attributes=require(_0x797f('0x7'));module[_0x797f('0x8')]=function(_0x1a7887,_0x32ab51){return _0x1a7887[_0x797f('0x9')](_0x797f('0xa'),attributes,{'tableName':_0x797f('0xb'),'paranoid':![],'indexes':[{'name':_0x797f('0xc'),'fields':[_0x797f('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index a576fb8..08802aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4d9=['../../config/environment','client','http','then','info','SmsTransferReport,\x20%s,\x20%s','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x1dfa63,_0x362bd4){var _0x26f2a9=function(_0x31cc52){while(--_0x31cc52){_0x1dfa63['push'](_0x1dfa63['shift']());}};_0x26f2a9(++_0x362bd4);}(_0xf4d9,0x7c));var _0x9f4d=function(_0x40c200,_0x1eeb4e){_0x40c200=_0x40c200-0x0;var _0x4a5c47=_0xf4d9[_0x40c200];return _0x4a5c47;};'use strict';var _=require(_0x9f4d('0x0'));var util=require('util');var moment=require(_0x9f4d('0x1'));var BPromise=require(_0x9f4d('0x2'));var rs=require(_0x9f4d('0x3'));var fs=require('fs');var Redis=require(_0x9f4d('0x4'));var db=require(_0x9f4d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x9f4d('0x6'))(_0x9f4d('0x7'));var config=require(_0x9f4d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9f4d('0x9')][_0x9f4d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2d7228,_0x4ee67d,_0x415499){return new BPromise(function(_0x55865b,_0x34fe3f){return client['request'](_0x2d7228,_0x415499)[_0x9f4d('0xb')](function(_0x451c00){logger[_0x9f4d('0xc')](_0x9f4d('0xd'),_0x4ee67d,'request\x20sent');logger[_0x9f4d('0xe')](_0x9f4d('0xf'),_0x4ee67d,_0x9f4d('0x10'),JSON[_0x9f4d('0x11')](_0x451c00));if(_0x451c00[_0x9f4d('0x12')]){if(_0x451c00[_0x9f4d('0x12')][_0x9f4d('0x13')]===0x1f4){logger[_0x9f4d('0x12')](_0x9f4d('0xd'),_0x4ee67d,_0x451c00[_0x9f4d('0x12')][_0x9f4d('0x14')]);return _0x34fe3f(_0x451c00['error'][_0x9f4d('0x14')]);}logger[_0x9f4d('0x12')](_0x9f4d('0xd'),_0x4ee67d,_0x451c00['error'][_0x9f4d('0x14')]);return _0x55865b(_0x451c00[_0x9f4d('0x12')][_0x9f4d('0x14')]);}else{logger[_0x9f4d('0xc')]('SmsTransferReport,\x20%s,\x20%s',_0x4ee67d,'request\x20sent');_0x55865b(_0x451c00['result'][_0x9f4d('0x14')]);}})[_0x9f4d('0x15')](function(_0x4526f0){logger[_0x9f4d('0x12')](_0x9f4d('0xd'),_0x4ee67d,_0x4526f0);_0x34fe3f(_0x4526f0);});});}
\ No newline at end of file
+var _0xe3c5=['error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x56103c,_0x1f7a8b){var _0x439fc2=function(_0x4f8cd2){while(--_0x4f8cd2){_0x56103c['push'](_0x56103c['shift']());}};_0x439fc2(++_0x1f7a8b);}(_0xe3c5,0x17d));var _0x5e3c=function(_0x55821d,_0x27a22e){_0x55821d=_0x55821d-0x0;var _0x58ea8a=_0xe3c5[_0x55821d];return _0x58ea8a;};'use strict';var _=require(_0x5e3c('0x0'));var util=require(_0x5e3c('0x1'));var moment=require(_0x5e3c('0x2'));var BPromise=require(_0x5e3c('0x3'));var rs=require(_0x5e3c('0x4'));var fs=require('fs');var Redis=require(_0x5e3c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x5e3c('0x6'));var logger=require(_0x5e3c('0x7'))(_0x5e3c('0x8'));var config=require(_0x5e3c('0x9'));var jayson=require(_0x5e3c('0xa'));var client=jayson[_0x5e3c('0xb')][_0x5e3c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2d6b68,_0xc8c788,_0x17076a){return new BPromise(function(_0x3139da,_0x3068c6){return client['request'](_0x2d6b68,_0x17076a)['then'](function(_0x32942e){logger[_0x5e3c('0xd')](_0x5e3c('0xe'),_0xc8c788,_0x5e3c('0xf'));logger[_0x5e3c('0x10')]('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0xc8c788,_0x5e3c('0xf'),JSON[_0x5e3c('0x11')](_0x32942e));if(_0x32942e['error']){if(_0x32942e[_0x5e3c('0x12')]['code']===0x1f4){logger['error'](_0x5e3c('0xe'),_0xc8c788,_0x32942e[_0x5e3c('0x12')][_0x5e3c('0x13')]);return _0x3068c6(_0x32942e[_0x5e3c('0x12')][_0x5e3c('0x13')]);}logger[_0x5e3c('0x12')](_0x5e3c('0xe'),_0xc8c788,_0x32942e[_0x5e3c('0x12')]['message']);return _0x3139da(_0x32942e['error'][_0x5e3c('0x13')]);}else{logger[_0x5e3c('0xd')](_0x5e3c('0xe'),_0xc8c788,'request\x20sent');_0x3139da(_0x32942e['result'][_0x5e3c('0x13')]);}})[_0x5e3c('0x14')](function(_0x321487){logger[_0x5e3c('0x12')]('SmsTransferReport,\x20%s,\x20%s',_0xc8c788,_0x321487);_0x3068c6(_0x321487);});});}
\ No newline at end of file
index 9cf7aa1..04b53d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14c6=['single','file','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/download','download','join','root','server/files/sounds/original/','originalname','replace','%s-%s%s','extname','now','post'];(function(_0x4eb2b5,_0x10d25c){var _0x305096=function(_0x4bde5f){while(--_0x4bde5f){_0x4eb2b5['push'](_0x4eb2b5['shift']());}};_0x305096(++_0x10d25c);}(_0x14c6,0x86));var _0x614c=function(_0x3a422c,_0x1c0e5d){_0x3a422c=_0x3a422c-0x0;var _0xbdde40=_0x14c6[_0x3a422c];return _0xbdde40;};'use strict';var multer=require(_0x614c('0x0'));var util=require(_0x614c('0x1'));var path=require(_0x614c('0x2'));var timeout=require(_0x614c('0x3'));var express=require(_0x614c('0x4'));var router=express[_0x614c('0x5')]();var fs_extra=require(_0x614c('0x6'));var auth=require(_0x614c('0x7'));var interaction=require(_0x614c('0x8'));var config=require(_0x614c('0x9'));var controller=require('./sound.controller');router['get']('/',auth[_0x614c('0xa')](),controller[_0x614c('0xb')]);router[_0x614c('0xc')](_0x614c('0xd'),auth[_0x614c('0xa')](),controller[_0x614c('0xe')]);router[_0x614c('0xc')](_0x614c('0xf'),auth['isAuthenticated'](),controller[_0x614c('0x10')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x2e58e1,_0x1a4a14,_0x56de3f){_0x56de3f(null,path[_0x614c('0x11')](config[_0x614c('0x12')],_0x614c('0x13')));},'filename':function(_0x5386e6,_0x3c3f3e,_0x522777){_0x3c3f3e[_0x614c('0x14')]=_0x3c3f3e[_0x614c('0x14')][_0x614c('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x522777(null,util['format'](_0x614c('0x16'),path['basename'](_0x3c3f3e[_0x614c('0x14')],path[_0x614c('0x17')](_0x3c3f3e[_0x614c('0x14')])),Date[_0x614c('0x18')](),path[_0x614c('0x17')](_0x3c3f3e[_0x614c('0x14')])));}})});router[_0x614c('0x19')]('/',upload[_0x614c('0x1a')](_0x614c('0x1b')),controller['create']);router[_0x614c('0x1c')](_0x614c('0xd'),auth[_0x614c('0xa')](),controller[_0x614c('0x1d')]);router[_0x614c('0x1e')](_0x614c('0xd'),auth[_0x614c('0xa')](),controller['delete']);module[_0x614c('0x1f')]=router;
\ No newline at end of file
+var _0x9cd3=['root','originalname','replace','format','basename','extname','post','single','file','create','put','/:id','update','delete','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./sound.controller','get','isAuthenticated','index','/:id/download','diskStorage','join'];(function(_0x17e696,_0xad1c39){var _0x1a9e33=function(_0x28d22a){while(--_0x28d22a){_0x17e696['push'](_0x17e696['shift']());}};_0x1a9e33(++_0xad1c39);}(_0x9cd3,0xa0));var _0x39cd=function(_0x118afa,_0x4bf0c1){_0x118afa=_0x118afa-0x0;var _0x167d76=_0x9cd3[_0x118afa];return _0x167d76;};'use strict';var multer=require('multer');var util=require(_0x39cd('0x0'));var path=require(_0x39cd('0x1'));var timeout=require(_0x39cd('0x2'));var express=require('express');var router=express[_0x39cd('0x3')]();var fs_extra=require(_0x39cd('0x4'));var auth=require(_0x39cd('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x39cd('0x6'));var controller=require(_0x39cd('0x7'));router[_0x39cd('0x8')]('/',auth[_0x39cd('0x9')](),controller[_0x39cd('0xa')]);router[_0x39cd('0x8')]('/:id',auth[_0x39cd('0x9')](),controller['show']);router[_0x39cd('0x8')](_0x39cd('0xb'),auth[_0x39cd('0x9')](),controller['download']);var upload=multer({'storage':multer[_0x39cd('0xc')]({'destination':function(_0x48ed8b,_0x3bd8d1,_0xa4f48f){_0xa4f48f(null,path[_0x39cd('0xd')](config[_0x39cd('0xe')],'server/files/sounds/original/'));},'filename':function(_0x58f3b0,_0x48a928,_0xa5f77b){_0x48a928['originalname']=_0x48a928[_0x39cd('0xf')][_0x39cd('0x10')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0xa5f77b(null,util[_0x39cd('0x11')]('%s-%s%s',path[_0x39cd('0x12')](_0x48a928[_0x39cd('0xf')],path[_0x39cd('0x13')](_0x48a928[_0x39cd('0xf')])),Date['now'](),path[_0x39cd('0x13')](_0x48a928['originalname'])));}})});router[_0x39cd('0x14')]('/',upload[_0x39cd('0x15')](_0x39cd('0x16')),controller[_0x39cd('0x17')]);router[_0x39cd('0x18')](_0x39cd('0x19'),auth[_0x39cd('0x9')](),controller[_0x39cd('0x1a')]);router[_0x39cd('0x1b')](_0x39cd('0x19'),auth[_0x39cd('0x9')](),controller[_0x39cd('0x1b')]);module[_0x39cd('0x1c')]=router;
\ No newline at end of file
index 2a9f1ee..70131b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52d9=['exports','STRING','name','FLOAT','INTEGER','BIGINT','sequelize'];(function(_0x15e024,_0x552471){var _0x5747d5=function(_0x596a5d){while(--_0x596a5d){_0x15e024['push'](_0x15e024['shift']());}};_0x5747d5(++_0x552471);}(_0x52d9,0x68));var _0x952d=function(_0x4d8dc3,_0x585fd1){_0x4d8dc3=_0x4d8dc3-0x0;var _0x9b03d9=_0x52d9[_0x4d8dc3];return _0x9b03d9;};'use strict';var Sequelize=require(_0x952d('0x0'));module[_0x952d('0x1')]={'name':{'type':Sequelize[_0x952d('0x2')],'unique':_0x952d('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0x952d('0x2')]},'display_name':{'type':Sequelize[_0x952d('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0x952d('0x2')]},'original_format':{'type':Sequelize[_0x952d('0x2')]},'original_duration':{'type':Sequelize[_0x952d('0x4')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize[_0x952d('0x5')]},'original_bitRate':{'type':Sequelize[_0x952d('0x6')]},'original_sampleRate':{'type':Sequelize[_0x952d('0x5')]},'converted_format':{'type':Sequelize[_0x952d('0x2')]},'converted_duration':{'type':Sequelize[_0x952d('0x4')]},'converted_sampleCount':{'type':Sequelize[_0x952d('0x6')]},'converted_channelCount':{'type':Sequelize[_0x952d('0x5')]},'converted_bitRate':{'type':Sequelize['BIGINT']},'converted_sampleRate':{'type':Sequelize[_0x952d('0x5')]}};
\ No newline at end of file
+var _0xace5=['STRING','FLOAT','INTEGER','BIGINT','exports'];(function(_0x13342f,_0x3d6303){var _0x2fc1fc=function(_0x2d991f){while(--_0x2d991f){_0x13342f['push'](_0x13342f['shift']());}};_0x2fc1fc(++_0x3d6303);}(_0xace5,0x1df));var _0x5ace=function(_0x5ef990,_0x1c8b5d){_0x5ef990=_0x5ef990-0x0;var _0x1d67b3=_0xace5[_0x5ef990];return _0x1d67b3;};'use strict';var Sequelize=require('sequelize');module[_0x5ace('0x0')]={'name':{'type':Sequelize[_0x5ace('0x1')],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize[_0x5ace('0x1')]},'original_format':{'type':Sequelize['STRING']},'original_duration':{'type':Sequelize[_0x5ace('0x2')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize[_0x5ace('0x3')]},'original_bitRate':{'type':Sequelize[_0x5ace('0x4')]},'original_sampleRate':{'type':Sequelize[_0x5ace('0x3')]},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize[_0x5ace('0x2')]},'converted_sampleCount':{'type':Sequelize[_0x5ace('0x4')]},'converted_channelCount':{'type':Sequelize[_0x5ace('0x3')]},'converted_bitRate':{'type':Sequelize['BIGINT']},'converted_sampleRate':{'type':Sequelize[_0x5ace('0x3')]}};
\ No newline at end of file
index ae48e84..81fae2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3fa=['VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','params','download','save_name','converted_format','existsSync','join','root','server/files/sounds/converted','format','%s.%s','basename','extname','file','filename','originalname','server/files/sounds/original','info','transcode','wav','unlinkSync','original_duration','duration','original_sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','sampleCount','converted_bitRate','converted_sampleRate','end','0777','create','body','role','userProfileId','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Sounds','UserProfileResource','sendStatus','error','stack','name','send','index','map','Sound','rawAttributes','fieldName','type','query','keys','model','attributes','intersection','fields','length','hasOwnProperty','sort','filters','pick','where','merge'];(function(_0x55fa9f,_0x22a9cd){var _0x185006=function(_0x2b6e63){while(--_0x2b6e63){_0x55fa9f['push'](_0x55fa9f['shift']());}};_0x185006(++_0x22a9cd);}(_0xf3fa,0x124));var _0xaf3f=function(_0x44c974,_0x1bcfde){_0x44c974=_0x44c974-0x0;var _0x5214c6=_0xf3fa[_0x44c974];return _0x5214c6;};'use strict';var emlformat=require(_0xaf3f('0x0'));var rimraf=require(_0xaf3f('0x1'));var zipdir=require(_0xaf3f('0x2'));var jsonpatch=require(_0xaf3f('0x3'));var rp=require(_0xaf3f('0x4'));var moment=require(_0xaf3f('0x5'));var BPromise=require(_0xaf3f('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0xaf3f('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xaf3f('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xaf3f('0x9'));var crypto=require(_0xaf3f('0xa'));var jsforce=require(_0xaf3f('0xb'));var deskjs=require(_0xaf3f('0xc'));var toCsv=require('to-csv');var querystring=require(_0xaf3f('0xd'));var Papa=require(_0xaf3f('0xe'));var Redis=require(_0xaf3f('0xf'));var authService=require(_0xaf3f('0x10'));var qs=require(_0xaf3f('0x11'));var as=require(_0xaf3f('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xaf3f('0x13'));var utils=require(_0xaf3f('0x14'));var config=require(_0xaf3f('0x15'));var licenseUtil=require(_0xaf3f('0x16'));var db=require(_0xaf3f('0x17'))['db'];function respondWithStatusCode(_0x3ea8f3,_0x5977c7){_0x5977c7=_0x5977c7||0xcc;return function(_0x147723){if(_0x147723){return _0x3ea8f3['sendStatus'](_0x5977c7);}return _0x3ea8f3[_0xaf3f('0x18')](_0x5977c7)['end']();};}function respondWithResult(_0xe6c85,_0x54275f){_0x54275f=_0x54275f||0xc8;return function(_0x3af852){if(_0x3af852){return _0xe6c85[_0xaf3f('0x18')](_0x54275f)[_0xaf3f('0x19')](_0x3af852);}};}function respondWithFilteredResult(_0x3d7009,_0x717229){return function(_0x2d5160){if(_0x2d5160){var _0x594aa5=typeof _0x717229[_0xaf3f('0x1a')]===_0xaf3f('0x1b')&&typeof _0x717229[_0xaf3f('0x1c')]===_0xaf3f('0x1b');var _0x2c6201=_0x2d5160[_0xaf3f('0x1d')];var _0x2327f6=_0x594aa5?0x0:_0x717229[_0xaf3f('0x1a')];var _0x1f0ad2=_0x594aa5?_0x2d5160[_0xaf3f('0x1d')]:_0x717229['offset']+_0x717229['limit'];var _0x3ada9f;if(_0x1f0ad2>=_0x2c6201){_0x1f0ad2=_0x2c6201;_0x3ada9f=0xc8;}else{_0x3ada9f=0xce;}_0x3d7009[_0xaf3f('0x18')](_0x3ada9f);return _0x3d7009[_0xaf3f('0x1e')](_0xaf3f('0x1f'),_0x2327f6+'-'+_0x1f0ad2+'/'+_0x2c6201)[_0xaf3f('0x19')](_0x2d5160);}return null;};}function patchUpdates(_0x37cd4d){return function(_0x5170f3){try{jsonpatch[_0xaf3f('0x20')](_0x5170f3,_0x37cd4d,!![]);}catch(_0x31c48b){return BPromise[_0xaf3f('0x21')](_0x31c48b);}return _0x5170f3[_0xaf3f('0x22')]();};}function saveUpdates(_0x5c8217,_0x535baf){return function(_0x466281){if(_0x466281){return _0x466281[_0xaf3f('0x23')](_0x5c8217)[_0xaf3f('0x24')](function(_0x17c677){return _0x17c677;});}return null;};}function removeEntity(_0x10efda,_0x10f713){return function(_0x3ac4a7){if(_0x3ac4a7){return _0x3ac4a7[_0xaf3f('0x25')]()[_0xaf3f('0x24')](function(){var _0x13a404=_0x3ac4a7[_0xaf3f('0x26')]({'plain':!![]});var _0x5127ee=_0xaf3f('0x27');return db[_0xaf3f('0x28')][_0xaf3f('0x25')]({'where':{'type':_0x5127ee,'resourceId':_0x13a404['id']}})[_0xaf3f('0x24')](function(){return _0x3ac4a7;});})[_0xaf3f('0x24')](function(){_0x10efda['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x8d1954,_0x4470e9){return function(_0x485996){if(!_0x485996){_0x8d1954[_0xaf3f('0x29')](0x194);}return _0x485996;};}function handleError(_0xcbde6e,_0x276f16){_0x276f16=_0x276f16||0x1f4;return function(_0x25663b){logger[_0xaf3f('0x2a')](_0x25663b[_0xaf3f('0x2b')]);if(_0x25663b[_0xaf3f('0x2c')]){delete _0x25663b[_0xaf3f('0x2c')];}_0xcbde6e[_0xaf3f('0x18')](_0x276f16)[_0xaf3f('0x2d')](_0x25663b);};}exports[_0xaf3f('0x2e')]=function(_0x47b35d,_0x26768d){var _0x4cf6d5={},_0x117e3a={},_0x153ae1={'count':0x0,'rows':[]};var _0x4e2048=_[_0xaf3f('0x2f')](db[_0xaf3f('0x30')][_0xaf3f('0x31')],function(_0x2af8af){return{'name':_0x2af8af[_0xaf3f('0x32')],'type':_0x2af8af[_0xaf3f('0x33')]['key']};});_0x117e3a['model']=_['map'](_0x4e2048,_0xaf3f('0x2c'));_0x117e3a[_0xaf3f('0x34')]=_[_0xaf3f('0x35')](_0x47b35d[_0xaf3f('0x34')]);_0x117e3a['filters']=_['intersection'](_0x117e3a[_0xaf3f('0x36')],_0x117e3a[_0xaf3f('0x34')]);_0x4cf6d5[_0xaf3f('0x37')]=_[_0xaf3f('0x38')](_0x117e3a['model'],qs[_0xaf3f('0x39')](_0x47b35d[_0xaf3f('0x34')]['fields']));_0x4cf6d5[_0xaf3f('0x37')]=_0x4cf6d5['attributes'][_0xaf3f('0x3a')]?_0x4cf6d5['attributes']:_0x117e3a['model'];if(!_0x47b35d['query'][_0xaf3f('0x3b')]('nolimit')){_0x4cf6d5['limit']=qs[_0xaf3f('0x1c')](_0x47b35d[_0xaf3f('0x34')]['limit']);_0x4cf6d5['offset']=qs['offset'](_0x47b35d['query'][_0xaf3f('0x1a')]);}_0x4cf6d5['order']=qs[_0xaf3f('0x3c')](_0x47b35d[_0xaf3f('0x34')][_0xaf3f('0x3c')]);_0x4cf6d5['where']=qs[_0xaf3f('0x3d')](_[_0xaf3f('0x3e')](_0x47b35d[_0xaf3f('0x34')],_0x117e3a[_0xaf3f('0x3d')]),_0x4e2048);if(_0x47b35d[_0xaf3f('0x34')]['filter']){_0x4cf6d5[_0xaf3f('0x3f')]=_[_0xaf3f('0x40')](_0x4cf6d5['where'],{'$or':_['map'](_0x4e2048,function(_0x37d6b4){if(_0x37d6b4[_0xaf3f('0x33')]!==_0xaf3f('0x41')){var _0x583671={};_0x583671[_0x37d6b4['name']]={'$like':'%'+_0x47b35d['query'][_0xaf3f('0x42')]+'%'};return _0x583671;}})});}_0x4cf6d5=_['merge']({},_0x4cf6d5,_0x47b35d[_0xaf3f('0x43')]);var _0x15ad54={'where':_0x4cf6d5['where']};return db[_0xaf3f('0x30')][_0xaf3f('0x1d')](_0x15ad54)[_0xaf3f('0x24')](function(_0x353ca8){_0x153ae1[_0xaf3f('0x1d')]=_0x353ca8;if(_0x47b35d[_0xaf3f('0x34')][_0xaf3f('0x44')]){_0x4cf6d5[_0xaf3f('0x45')]=[{'all':!![]}];}return db[_0xaf3f('0x30')][_0xaf3f('0x46')](_0x4cf6d5);})[_0xaf3f('0x24')](function(_0xe911bf){_0x153ae1[_0xaf3f('0x47')]=_0xe911bf;return _0x153ae1;})['then'](respondWithFilteredResult(_0x26768d,_0x4cf6d5))[_0xaf3f('0x48')](handleError(_0x26768d,null));};exports['show']=function(_0x100c62,_0x2970cb){var _0x4fb393={'raw':!![],'where':{'id':_0x100c62[_0xaf3f('0x49')]['id']}},_0x2e6808={};_0x2e6808['model']=_['keys'](db[_0xaf3f('0x30')][_0xaf3f('0x31')]);_0x2e6808[_0xaf3f('0x34')]=_[_0xaf3f('0x35')](_0x100c62[_0xaf3f('0x34')]);_0x2e6808[_0xaf3f('0x3d')]=_[_0xaf3f('0x38')](_0x2e6808[_0xaf3f('0x36')],_0x2e6808['query']);_0x4fb393[_0xaf3f('0x37')]=_[_0xaf3f('0x38')](_0x2e6808['model'],qs['fields'](_0x100c62[_0xaf3f('0x34')]['fields']));_0x4fb393[_0xaf3f('0x37')]=_0x4fb393[_0xaf3f('0x37')][_0xaf3f('0x3a')]?_0x4fb393[_0xaf3f('0x37')]:_0x2e6808[_0xaf3f('0x36')];if(_0x100c62[_0xaf3f('0x34')]['includeAll']){_0x4fb393[_0xaf3f('0x45')]=[{'all':!![]}];}_0x4fb393=_[_0xaf3f('0x40')]({},_0x4fb393,_0x100c62[_0xaf3f('0x43')]);return db[_0xaf3f('0x30')]['find'](_0x4fb393)[_0xaf3f('0x24')](handleEntityNotFound(_0x2970cb,null))['then'](respondWithResult(_0x2970cb,null))[_0xaf3f('0x48')](handleError(_0x2970cb,null));};exports[_0xaf3f('0x4a')]=function(_0x2ce68f,_0x5c356a,_0x35b817){return db['Sound']['find']({'where':{'id':_0x2ce68f['params']['id']},'attributes':['name',_0xaf3f('0x4b'),_0xaf3f('0x4c')],'raw':!![]})['then'](handleEntityNotFound(_0x5c356a,null))[_0xaf3f('0x24')](function(_0x4d594e){if(_0x4d594e){if(!fs[_0xaf3f('0x4d')](path[_0xaf3f('0x4e')](config[_0xaf3f('0x4f')],_0xaf3f('0x50'),_0x4d594e[_0xaf3f('0x4b')]+'.'+_0x4d594e[_0xaf3f('0x4c')]))){throw new db['Sequelize']['ValidationError']('Sound\x20not\x20found');}return _0x5c356a[_0xaf3f('0x4a')](path['join'](config[_0xaf3f('0x4f')],_0xaf3f('0x50'),util[_0xaf3f('0x51')](_0xaf3f('0x52'),_0x4d594e['save_name'],_0x4d594e['converted_format'])),util['format']('%s.%s',_0x4d594e['name'],_0x4d594e[_0xaf3f('0x4c')]));}return null;})[_0xaf3f('0x48')](handleError(_0x5c356a,null));};exports['create']=function(_0x2cdae8,_0x50f852,_0x46337e){var _0x1309b4={'name':path[_0xaf3f('0x53')](_0x2cdae8['file']['originalname'],path[_0xaf3f('0x54')](_0x2cdae8[_0xaf3f('0x55')]['originalname'])),'save_name':path[_0xaf3f('0x53')](_0x2cdae8[_0xaf3f('0x55')][_0xaf3f('0x56')],path[_0xaf3f('0x54')](_0x2cdae8[_0xaf3f('0x55')][_0xaf3f('0x56')])),'original_format':path[_0xaf3f('0x54')](_0x2cdae8[_0xaf3f('0x55')][_0xaf3f('0x57')])['substring'](0x1),'converted_format':'wav'};var _0x24bf5d=path[_0xaf3f('0x4e')](config['root'],_0xaf3f('0x58'),_0x2cdae8[_0xaf3f('0x55')][_0xaf3f('0x56')]);var _0x156c6f=path[_0xaf3f('0x4e')](config[_0xaf3f('0x4f')],_0xaf3f('0x50'),util['format']('%s.%s',path['basename'](_0x2cdae8['file'][_0xaf3f('0x56')],path[_0xaf3f('0x54')](_0x2cdae8[_0xaf3f('0x55')][_0xaf3f('0x56')])),_0x1309b4[_0xaf3f('0x4c')]));logger[_0xaf3f('0x59')]('Sound\x20upload\x20filepath:\x20%s',_0x24bf5d);logger[_0xaf3f('0x59')]('Sound\x20upload\x20destination:\x20%s',_0x156c6f);try{fs['chmodSync'](_0x24bf5d,parseInt('0777',0x8));var _0x55ffa8=sox[_0xaf3f('0x5a')](_0x24bf5d,_0x156c6f,{'sampleRate':0x1f40,'format':_0xaf3f('0x5b'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x55ffa8['on']('error',function(_0x65c0ed){fs[_0xaf3f('0x5c')](_0x24bf5d);_0x50f852[_0xaf3f('0x18')](0x1f4)[_0xaf3f('0x2d')](_0x65c0ed);});_0x55ffa8['on']('src',function(_0x1e7323){_0x1309b4[_0xaf3f('0x5d')]=isNaN(_0x1e7323['duration'])?null:_0x1e7323[_0xaf3f('0x5e')]*0x3e8;_0x1309b4[_0xaf3f('0x5f')]=isNaN(_0x1e7323['sampleCount'])?null:_0x1e7323['sampleCount'];_0x1309b4[_0xaf3f('0x60')]=isNaN(_0x1e7323[_0xaf3f('0x61')])?null:_0x1e7323[_0xaf3f('0x61')];_0x1309b4[_0xaf3f('0x62')]=isNaN(_0x1e7323[_0xaf3f('0x63')])?null:_0x1e7323[_0xaf3f('0x63')];_0x1309b4[_0xaf3f('0x64')]=isNaN(_0x1e7323[_0xaf3f('0x65')])?null:_0x1e7323[_0xaf3f('0x65')];});_0x55ffa8['on'](_0xaf3f('0x66'),function(_0x2daf52){_0x1309b4[_0xaf3f('0x67')]=isNaN(_0x2daf52[_0xaf3f('0x5e')])?null:_0x2daf52[_0xaf3f('0x5e')]*0x3e8;_0x1309b4[_0xaf3f('0x68')]=isNaN(_0x2daf52[_0xaf3f('0x69')])?null:_0x2daf52[_0xaf3f('0x69')];_0x1309b4['converted_channelCount']=isNaN(_0x2daf52[_0xaf3f('0x61')])?null:_0x2daf52[_0xaf3f('0x61')];_0x1309b4[_0xaf3f('0x6a')]=isNaN(_0x2daf52[_0xaf3f('0x63')])?null:_0x2daf52[_0xaf3f('0x63')];_0x1309b4[_0xaf3f('0x6b')]=isNaN(_0x2daf52[_0xaf3f('0x65')])?null:_0x2daf52['sampleRate'];});_0x55ffa8['on'](_0xaf3f('0x6c'),function(){fs['chmodSync'](_0x156c6f,parseInt(_0xaf3f('0x6d'),0x8));return db['Sound'][_0xaf3f('0x6e')](_0x1309b4)[_0xaf3f('0x24')](function(_0x305621){var _0x2502f4={'role':_0x2cdae8[_0xaf3f('0x6f')][_0xaf3f('0x70')],'userProfileId':_0x2cdae8['body'][_0xaf3f('0x71')]};if(!_0x2502f4)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2502f4[_0xaf3f('0x70')]==='user'){var _0xed87ac=_0x305621[_0xaf3f('0x26')]({'plain':!![]});return db['UserProfileSection'][_0xaf3f('0x72')]({'where':{'name':_0xaf3f('0x27'),'userProfileId':_0x2502f4[_0xaf3f('0x71')]},'raw':!![]})[_0xaf3f('0x24')](function(_0x383526){if(_0x383526&&_0x383526[_0xaf3f('0x73')]===0x0){return db[_0xaf3f('0x28')][_0xaf3f('0x6e')]({'name':_0xed87ac[_0xaf3f('0x2c')],'resourceId':_0xed87ac['id'],'type':_0x383526['name'],'sectionId':_0x383526['id']},{})['then'](function(){return _0x305621;});}else{return _0x305621;}})[_0xaf3f('0x48')](function(_0x44d4aa){logger['error'](_0xaf3f('0x74'),_0x44d4aa);throw _0x44d4aa;});}return _0x305621;})[_0xaf3f('0x24')](respondWithResult(_0x50f852,null))[_0xaf3f('0x48')](handleError(_0x50f852,null));});_0x55ffa8[_0xaf3f('0x75')]();}catch(_0x2e62ed){_0x50f852['status'](0x1f4)[_0xaf3f('0x2d')](_0x2e62ed);}};exports[_0xaf3f('0x23')]=function(_0x566a79,_0x2493d5,_0x1f88e2){return db[_0xaf3f('0x30')][_0xaf3f('0x72')]({'where':{'id':_0x566a79[_0xaf3f('0x49')]['id']}})['then'](handleEntityNotFound(_0x2493d5,null))['then'](saveUpdates(_['pick'](_0x566a79[_0xaf3f('0x6f')],[_0xaf3f('0x2c'),_0xaf3f('0x76')]),null))[_0xaf3f('0x24')](respondWithResult(_0x2493d5,null))['catch'](handleError(_0x2493d5,null));};exports['delete']=function(_0x23c98c,_0x46d3b3,_0x3aac9c){return db['Sound'][_0xaf3f('0x72')]({'where':{'id':_0x23c98c[_0xaf3f('0x49')]['id']}})['then'](function(_0x29e47f){if(_0x29e47f){return _0x29e47f[_0xaf3f('0x25')]();}})[_0xaf3f('0x24')](function(_0x1424a9){var _0x2a3a3d=path[_0xaf3f('0x4e')](config[_0xaf3f('0x4f')],'server/files/sounds/original',util['format']('%s.%s',_0x1424a9[_0xaf3f('0x4b')],_0x1424a9['original_format']));var _0x45fe57=path[_0xaf3f('0x4e')](config[_0xaf3f('0x4f')],_0xaf3f('0x50'),util[_0xaf3f('0x51')](_0xaf3f('0x52'),_0x1424a9['save_name'],_0x1424a9['converted_format']));fs[_0xaf3f('0x5c')](_0x2a3a3d);fs[_0xaf3f('0x5c')](_0x45fe57);return _0x1424a9;})[_0xaf3f('0x24')](function(_0x281238){if(_0x281238){return _0x46d3b3[_0xaf3f('0x18')](0xcc)[_0xaf3f('0x6c')]();}})[_0xaf3f('0x24')](handleEntityNotFound(_0x46d3b3,null))['catch'](handleError(_0x46d3b3,null));};
\ No newline at end of file
+var _0xc603=['reject','update','then','destroy','get','UserProfileResource','error','stack','name','index','map','Sound','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','pick','filter','where','VIRTUAL','merge','options','findAll','show','includeAll','include','find','catch','download','params','save_name','converted_format','existsSync','join','root','server/files/sounds/converted','format','file','originalname','extname','filename','substring','wav','%s.%s','basename','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','transcode','unlinkSync','src','duration','original_sampleCount','sampleCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','converted_duration','converted_sampleCount','converted_bitRate','converted_sampleRate','create','body','role','userProfileId','user','UserProfileSection','Sounds','autoAssociation','start','send','description','delete','server/files/sounds/original','original_format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','offset','undefined','count','set','Content-Range','json','apply'];(function(_0x23eb26,_0x474628){var _0x4969e2=function(_0x3095db){while(--_0x3095db){_0x23eb26['push'](_0x23eb26['shift']());}};_0x4969e2(++_0x474628);}(_0xc603,0x1d5));var _0x3c60=function(_0x19c121,_0x4a8a18){_0x19c121=_0x19c121-0x0;var _0x1ccb31=_0xc603[_0x19c121];return _0x1ccb31;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3c60('0x0'));var zipdir=require(_0x3c60('0x1'));var jsonpatch=require(_0x3c60('0x2'));var rp=require(_0x3c60('0x3'));var moment=require(_0x3c60('0x4'));var BPromise=require(_0x3c60('0x5'));var Mustache=require(_0x3c60('0x6'));var util=require(_0x3c60('0x7'));var path=require('path');var sox=require(_0x3c60('0x8'));var csv=require(_0x3c60('0x9'));var ejs=require(_0x3c60('0xa'));var fs=require('fs');var fs_extra=require(_0x3c60('0xb'));var _=require(_0x3c60('0xc'));var squel=require(_0x3c60('0xd'));var crypto=require(_0x3c60('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x3c60('0xf'));var toCsv=require(_0x3c60('0x9'));var querystring=require('querystring');var Papa=require(_0x3c60('0x10'));var Redis=require('ioredis');var authService=require(_0x3c60('0x11'));var qs=require(_0x3c60('0x12'));var as=require(_0x3c60('0x13'));var hardwareService=require(_0x3c60('0x14'));var logger=require(_0x3c60('0x15'))(_0x3c60('0x16'));var utils=require(_0x3c60('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x3c60('0x18'))['db'];function respondWithStatusCode(_0x3a35ec,_0x12805d){_0x12805d=_0x12805d||0xcc;return function(_0x4befb7){if(_0x4befb7){return _0x3a35ec[_0x3c60('0x19')](_0x12805d);}return _0x3a35ec[_0x3c60('0x1a')](_0x12805d)[_0x3c60('0x1b')]();};}function respondWithResult(_0x550f2d,_0x5785ce){_0x5785ce=_0x5785ce||0xc8;return function(_0x2e330b){if(_0x2e330b){return _0x550f2d[_0x3c60('0x1a')](_0x5785ce)['json'](_0x2e330b);}};}function respondWithFilteredResult(_0x4f0925,_0x2c3511){return function(_0x38e740){if(_0x38e740){var _0xf451ac=typeof _0x2c3511[_0x3c60('0x1c')]==='undefined'&&typeof _0x2c3511['limit']===_0x3c60('0x1d');var _0x27fee3=_0x38e740[_0x3c60('0x1e')];var _0x494f5e=_0xf451ac?0x0:_0x2c3511['offset'];var _0x221557=_0xf451ac?_0x38e740[_0x3c60('0x1e')]:_0x2c3511['offset']+_0x2c3511['limit'];var _0x1f6a19;if(_0x221557>=_0x27fee3){_0x221557=_0x27fee3;_0x1f6a19=0xc8;}else{_0x1f6a19=0xce;}_0x4f0925[_0x3c60('0x1a')](_0x1f6a19);return _0x4f0925[_0x3c60('0x1f')](_0x3c60('0x20'),_0x494f5e+'-'+_0x221557+'/'+_0x27fee3)[_0x3c60('0x21')](_0x38e740);}return null;};}function patchUpdates(_0x2cfb73){return function(_0x3568fb){try{jsonpatch[_0x3c60('0x22')](_0x3568fb,_0x2cfb73,!![]);}catch(_0x4ae905){return BPromise[_0x3c60('0x23')](_0x4ae905);}return _0x3568fb['save']();};}function saveUpdates(_0x249d25,_0x4a6881){return function(_0x138fa9){if(_0x138fa9){return _0x138fa9[_0x3c60('0x24')](_0x249d25)[_0x3c60('0x25')](function(_0x304a5c){return _0x304a5c;});}return null;};}function removeEntity(_0x4d4ebc,_0x532851){return function(_0x96e7d0){if(_0x96e7d0){return _0x96e7d0[_0x3c60('0x26')]()[_0x3c60('0x25')](function(){var _0x14633a=_0x96e7d0[_0x3c60('0x27')]({'plain':!![]});var _0x46cedd='Sounds';return db[_0x3c60('0x28')][_0x3c60('0x26')]({'where':{'type':_0x46cedd,'resourceId':_0x14633a['id']}})[_0x3c60('0x25')](function(){return _0x96e7d0;});})[_0x3c60('0x25')](function(){_0x4d4ebc[_0x3c60('0x1a')](0xcc)[_0x3c60('0x1b')]();});}};}function handleEntityNotFound(_0x2e8921,_0x1a56ff){return function(_0x68cbd7){if(!_0x68cbd7){_0x2e8921[_0x3c60('0x19')](0x194);}return _0x68cbd7;};}function handleError(_0x5bb8dd,_0x222fcc){_0x222fcc=_0x222fcc||0x1f4;return function(_0x229691){logger[_0x3c60('0x29')](_0x229691[_0x3c60('0x2a')]);if(_0x229691[_0x3c60('0x2b')]){delete _0x229691[_0x3c60('0x2b')];}_0x5bb8dd['status'](_0x222fcc)['send'](_0x229691);};}exports[_0x3c60('0x2c')]=function(_0x136a3b,_0x3edb82){var _0x2e9bd6={},_0x39603b={},_0x27c6e8={'count':0x0,'rows':[]};var _0x6b622a=_[_0x3c60('0x2d')](db[_0x3c60('0x2e')][_0x3c60('0x2f')],function(_0x49e855){return{'name':_0x49e855[_0x3c60('0x30')],'type':_0x49e855[_0x3c60('0x31')][_0x3c60('0x32')]};});_0x39603b[_0x3c60('0x33')]=_[_0x3c60('0x2d')](_0x6b622a,_0x3c60('0x2b'));_0x39603b[_0x3c60('0x34')]=_[_0x3c60('0x35')](_0x136a3b[_0x3c60('0x34')]);_0x39603b[_0x3c60('0x36')]=_[_0x3c60('0x37')](_0x39603b['model'],_0x39603b[_0x3c60('0x34')]);_0x2e9bd6[_0x3c60('0x38')]=_[_0x3c60('0x37')](_0x39603b[_0x3c60('0x33')],qs[_0x3c60('0x39')](_0x136a3b[_0x3c60('0x34')][_0x3c60('0x39')]));_0x2e9bd6[_0x3c60('0x38')]=_0x2e9bd6['attributes'][_0x3c60('0x3a')]?_0x2e9bd6[_0x3c60('0x38')]:_0x39603b[_0x3c60('0x33')];if(!_0x136a3b[_0x3c60('0x34')]['hasOwnProperty'](_0x3c60('0x3b'))){_0x2e9bd6[_0x3c60('0x3c')]=qs[_0x3c60('0x3c')](_0x136a3b[_0x3c60('0x34')][_0x3c60('0x3c')]);_0x2e9bd6[_0x3c60('0x1c')]=qs[_0x3c60('0x1c')](_0x136a3b[_0x3c60('0x34')][_0x3c60('0x1c')]);}_0x2e9bd6[_0x3c60('0x3d')]=qs[_0x3c60('0x3e')](_0x136a3b[_0x3c60('0x34')]['sort']);_0x2e9bd6['where']=qs[_0x3c60('0x36')](_[_0x3c60('0x3f')](_0x136a3b[_0x3c60('0x34')],_0x39603b[_0x3c60('0x36')]),_0x6b622a);if(_0x136a3b['query'][_0x3c60('0x40')]){_0x2e9bd6[_0x3c60('0x41')]=_['merge'](_0x2e9bd6[_0x3c60('0x41')],{'$or':_[_0x3c60('0x2d')](_0x6b622a,function(_0x5589b0){if(_0x5589b0[_0x3c60('0x31')]!==_0x3c60('0x42')){var _0x5592b4={};_0x5592b4[_0x5589b0['name']]={'$like':'%'+_0x136a3b[_0x3c60('0x34')][_0x3c60('0x40')]+'%'};return _0x5592b4;}})});}_0x2e9bd6=_[_0x3c60('0x43')]({},_0x2e9bd6,_0x136a3b[_0x3c60('0x44')]);var _0x589c4d={'where':_0x2e9bd6[_0x3c60('0x41')]};return db[_0x3c60('0x2e')][_0x3c60('0x1e')](_0x589c4d)[_0x3c60('0x25')](function(_0x41f277){_0x27c6e8[_0x3c60('0x1e')]=_0x41f277;if(_0x136a3b[_0x3c60('0x34')]['includeAll']){_0x2e9bd6['include']=[{'all':!![]}];}return db[_0x3c60('0x2e')][_0x3c60('0x45')](_0x2e9bd6);})['then'](function(_0xe43412){_0x27c6e8['rows']=_0xe43412;return _0x27c6e8;})[_0x3c60('0x25')](respondWithFilteredResult(_0x3edb82,_0x2e9bd6))['catch'](handleError(_0x3edb82,null));};exports[_0x3c60('0x46')]=function(_0x14abee,_0x38f545){var _0x3e49a9={'raw':!![],'where':{'id':_0x14abee['params']['id']}},_0x5c07f4={};_0x5c07f4['model']=_[_0x3c60('0x35')](db[_0x3c60('0x2e')][_0x3c60('0x2f')]);_0x5c07f4[_0x3c60('0x34')]=_[_0x3c60('0x35')](_0x14abee[_0x3c60('0x34')]);_0x5c07f4['filters']=_['intersection'](_0x5c07f4['model'],_0x5c07f4['query']);_0x3e49a9[_0x3c60('0x38')]=_['intersection'](_0x5c07f4[_0x3c60('0x33')],qs[_0x3c60('0x39')](_0x14abee[_0x3c60('0x34')][_0x3c60('0x39')]));_0x3e49a9[_0x3c60('0x38')]=_0x3e49a9['attributes'][_0x3c60('0x3a')]?_0x3e49a9[_0x3c60('0x38')]:_0x5c07f4[_0x3c60('0x33')];if(_0x14abee[_0x3c60('0x34')][_0x3c60('0x47')]){_0x3e49a9[_0x3c60('0x48')]=[{'all':!![]}];}_0x3e49a9=_[_0x3c60('0x43')]({},_0x3e49a9,_0x14abee[_0x3c60('0x44')]);return db['Sound'][_0x3c60('0x49')](_0x3e49a9)[_0x3c60('0x25')](handleEntityNotFound(_0x38f545,null))[_0x3c60('0x25')](respondWithResult(_0x38f545,null))[_0x3c60('0x4a')](handleError(_0x38f545,null));};exports[_0x3c60('0x4b')]=function(_0x26c420,_0x4c66ef,_0x1676a7){return db[_0x3c60('0x2e')][_0x3c60('0x49')]({'where':{'id':_0x26c420[_0x3c60('0x4c')]['id']},'attributes':[_0x3c60('0x2b'),_0x3c60('0x4d'),_0x3c60('0x4e')],'raw':!![]})['then'](handleEntityNotFound(_0x4c66ef,null))[_0x3c60('0x25')](function(_0x4bd89a){if(_0x4bd89a){if(!fs[_0x3c60('0x4f')](path[_0x3c60('0x50')](config[_0x3c60('0x51')],_0x3c60('0x52'),_0x4bd89a[_0x3c60('0x4d')]+'.'+_0x4bd89a[_0x3c60('0x4e')]))){throw new db['Sequelize']['ValidationError']('Sound\x20not\x20found');}return _0x4c66ef['download'](path[_0x3c60('0x50')](config[_0x3c60('0x51')],'server/files/sounds/converted',util[_0x3c60('0x53')]('%s.%s',_0x4bd89a[_0x3c60('0x4d')],_0x4bd89a[_0x3c60('0x4e')])),util['format']('%s.%s',_0x4bd89a['name'],_0x4bd89a['converted_format']));}return null;})[_0x3c60('0x4a')](handleError(_0x4c66ef,null));};exports['create']=function(_0x31010e,_0x398576,_0x27de9d){var _0x2346bd={'name':path['basename'](_0x31010e[_0x3c60('0x54')][_0x3c60('0x55')],path[_0x3c60('0x56')](_0x31010e['file'][_0x3c60('0x55')])),'save_name':path['basename'](_0x31010e[_0x3c60('0x54')][_0x3c60('0x57')],path['extname'](_0x31010e[_0x3c60('0x54')][_0x3c60('0x57')])),'original_format':path['extname'](_0x31010e[_0x3c60('0x54')][_0x3c60('0x55')])[_0x3c60('0x58')](0x1),'converted_format':_0x3c60('0x59')};var _0x544efc=path[_0x3c60('0x50')](config[_0x3c60('0x51')],'server/files/sounds/original',_0x31010e[_0x3c60('0x54')][_0x3c60('0x57')]);var _0x1bd875=path['join'](config[_0x3c60('0x51')],_0x3c60('0x52'),util[_0x3c60('0x53')](_0x3c60('0x5a'),path[_0x3c60('0x5b')](_0x31010e[_0x3c60('0x54')][_0x3c60('0x57')],path[_0x3c60('0x56')](_0x31010e[_0x3c60('0x54')][_0x3c60('0x57')])),_0x2346bd[_0x3c60('0x4e')]));logger[_0x3c60('0x5c')](_0x3c60('0x5d'),_0x544efc);logger[_0x3c60('0x5c')](_0x3c60('0x5e'),_0x1bd875);try{fs[_0x3c60('0x5f')](_0x544efc,parseInt(_0x3c60('0x60'),0x8));var _0x1c0999=sox[_0x3c60('0x61')](_0x544efc,_0x1bd875,{'sampleRate':0x1f40,'format':_0x3c60('0x59'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1c0999['on'](_0x3c60('0x29'),function(_0x3ae44e){fs[_0x3c60('0x62')](_0x544efc);_0x398576[_0x3c60('0x1a')](0x1f4)['send'](_0x3ae44e);});_0x1c0999['on'](_0x3c60('0x63'),function(_0x493571){_0x2346bd['original_duration']=isNaN(_0x493571[_0x3c60('0x64')])?null:_0x493571[_0x3c60('0x64')]*0x3e8;_0x2346bd[_0x3c60('0x65')]=isNaN(_0x493571['sampleCount'])?null:_0x493571[_0x3c60('0x66')];_0x2346bd['original_channelCount']=isNaN(_0x493571[_0x3c60('0x67')])?null:_0x493571[_0x3c60('0x67')];_0x2346bd[_0x3c60('0x68')]=isNaN(_0x493571['bitRate'])?null:_0x493571[_0x3c60('0x69')];_0x2346bd[_0x3c60('0x6a')]=isNaN(_0x493571[_0x3c60('0x6b')])?null:_0x493571[_0x3c60('0x6b')];});_0x1c0999['on']('dest',function(_0x40b26b){_0x2346bd[_0x3c60('0x6c')]=isNaN(_0x40b26b[_0x3c60('0x64')])?null:_0x40b26b[_0x3c60('0x64')]*0x3e8;_0x2346bd[_0x3c60('0x6d')]=isNaN(_0x40b26b[_0x3c60('0x66')])?null:_0x40b26b[_0x3c60('0x66')];_0x2346bd['converted_channelCount']=isNaN(_0x40b26b['channelCount'])?null:_0x40b26b[_0x3c60('0x67')];_0x2346bd[_0x3c60('0x6e')]=isNaN(_0x40b26b[_0x3c60('0x69')])?null:_0x40b26b[_0x3c60('0x69')];_0x2346bd[_0x3c60('0x6f')]=isNaN(_0x40b26b['sampleRate'])?null:_0x40b26b[_0x3c60('0x6b')];});_0x1c0999['on'](_0x3c60('0x1b'),function(){fs['chmodSync'](_0x1bd875,parseInt(_0x3c60('0x60'),0x8));return db[_0x3c60('0x2e')][_0x3c60('0x70')](_0x2346bd)[_0x3c60('0x25')](function(_0x578faf){var _0x1c1513={'role':_0x31010e[_0x3c60('0x71')][_0x3c60('0x72')],'userProfileId':_0x31010e[_0x3c60('0x71')][_0x3c60('0x73')]};if(!_0x1c1513)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1c1513['role']===_0x3c60('0x74')){var _0x31e988=_0x578faf[_0x3c60('0x27')]({'plain':!![]});return db[_0x3c60('0x75')][_0x3c60('0x49')]({'where':{'name':_0x3c60('0x76'),'userProfileId':_0x1c1513[_0x3c60('0x73')]},'raw':!![]})[_0x3c60('0x25')](function(_0x357325){if(_0x357325&&_0x357325[_0x3c60('0x77')]===0x0){return db[_0x3c60('0x28')][_0x3c60('0x70')]({'name':_0x31e988[_0x3c60('0x2b')],'resourceId':_0x31e988['id'],'type':_0x357325['name'],'sectionId':_0x357325['id']},{})['then'](function(){return _0x578faf;});}else{return _0x578faf;}})[_0x3c60('0x4a')](function(_0x4d06e1){logger[_0x3c60('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4d06e1);throw _0x4d06e1;});}return _0x578faf;})[_0x3c60('0x25')](respondWithResult(_0x398576,null))['catch'](handleError(_0x398576,null));});_0x1c0999[_0x3c60('0x78')]();}catch(_0x4a44a2){_0x398576['status'](0x1f4)[_0x3c60('0x79')](_0x4a44a2);}};exports[_0x3c60('0x24')]=function(_0x5b7ffa,_0x4d2194,_0x40ad90){return db['Sound'][_0x3c60('0x49')]({'where':{'id':_0x5b7ffa['params']['id']}})[_0x3c60('0x25')](handleEntityNotFound(_0x4d2194,null))[_0x3c60('0x25')](saveUpdates(_[_0x3c60('0x3f')](_0x5b7ffa[_0x3c60('0x71')],[_0x3c60('0x2b'),_0x3c60('0x7a')]),null))[_0x3c60('0x25')](respondWithResult(_0x4d2194,null))[_0x3c60('0x4a')](handleError(_0x4d2194,null));};exports[_0x3c60('0x7b')]=function(_0x1b5eed,_0x591183,_0x1ea196){return db[_0x3c60('0x2e')]['find']({'where':{'id':_0x1b5eed[_0x3c60('0x4c')]['id']}})[_0x3c60('0x25')](function(_0x3be78a){if(_0x3be78a){return _0x3be78a['destroy']();}})[_0x3c60('0x25')](function(_0xd91cc7){var _0x482b8a=path[_0x3c60('0x50')](config[_0x3c60('0x51')],_0x3c60('0x7c'),util[_0x3c60('0x53')](_0x3c60('0x5a'),_0xd91cc7[_0x3c60('0x4d')],_0xd91cc7[_0x3c60('0x7d')]));var _0x3039b4=path[_0x3c60('0x50')](config['root'],_0x3c60('0x52'),util[_0x3c60('0x53')](_0x3c60('0x5a'),_0xd91cc7[_0x3c60('0x4d')],_0xd91cc7[_0x3c60('0x4e')]));fs[_0x3c60('0x62')](_0x482b8a);fs[_0x3c60('0x62')](_0x3039b4);return _0xd91cc7;})[_0x3c60('0x25')](function(_0x439c91){if(_0x439c91){return _0x591183[_0x3c60('0x1a')](0xcc)[_0x3c60('0x1b')]();}})[_0x3c60('0x25')](handleEntityNotFound(_0x591183,null))[_0x3c60('0x4a')](handleError(_0x591183,null));};
\ No newline at end of file
index a1aaaaa..b3da6d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2994=['rimraf','../../config/environment','./sound.attributes','Sound','tools_sounds','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0xecf3e8,_0x3be976){var _0x41d60c=function(_0x4ae923){while(--_0x4ae923){_0xecf3e8['push'](_0xecf3e8['shift']());}};_0x41d60c(++_0x3be976);}(_0x2994,0x164));var _0x4299=function(_0x5317b5,_0x4dfd6e){_0x5317b5=_0x5317b5-0x0;var _0x3b7ce2=_0x2994[_0x5317b5];return _0x3b7ce2;};'use strict';var _=require(_0x4299('0x0'));var util=require(_0x4299('0x1'));var logger=require(_0x4299('0x2'))(_0x4299('0x3'));var moment=require(_0x4299('0x4'));var BPromise=require(_0x4299('0x5'));var rp=require(_0x4299('0x6'));var fs=require('fs');var path=require(_0x4299('0x7'));var rimraf=require(_0x4299('0x8'));var config=require(_0x4299('0x9'));var attributes=require(_0x4299('0xa'));module['exports']=function(_0x233b87,_0x28c301){return _0x233b87['define'](_0x4299('0xb'),attributes,{'tableName':_0x4299('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x73b6=['../../config/logger','bluebird','path','rimraf','./sound.attributes','exports','define','tools_sounds','lodash'];(function(_0x2ea823,_0x35dbe8){var _0x4aa3e7=function(_0x331a22){while(--_0x331a22){_0x2ea823['push'](_0x2ea823['shift']());}};_0x4aa3e7(++_0x35dbe8);}(_0x73b6,0x167));var _0x673b=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x73b6[_0x126558];return _0x1f6d14;};'use strict';var _=require(_0x673b('0x0'));var util=require('util');var logger=require(_0x673b('0x1'))('api');var moment=require('moment');var BPromise=require(_0x673b('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x673b('0x3'));var rimraf=require(_0x673b('0x4'));var config=require('../../config/environment');var attributes=require(_0x673b('0x5'));module[_0x673b('0x6')]=function(_0x140735,_0xcf95f5){return _0x140735[_0x673b('0x7')]('Sound',attributes,{'tableName':_0x673b('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b3aa709..94d5dcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cc2=['util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','client','info','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','Sound,\x20%s,\x20%s','message','request\x20sent','catch','Sound','options','raw','attributes','include','model','map','then','ShowSound'];(function(_0x28407a,_0x2a7269){var _0x8bd6ef=function(_0x3c886f){while(--_0x3c886f){_0x28407a['push'](_0x28407a['shift']());}};_0x8bd6ef(++_0x2a7269);}(_0x7cc2,0x1cb));var _0x27cc=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0x7cc2[_0x1928c9];return _0x51b5fb;};'use strict';var _=require('lodash');var util=require(_0x27cc('0x0'));var moment=require(_0x27cc('0x1'));var BPromise=require(_0x27cc('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x27cc('0x3'));var db=require(_0x27cc('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x27cc('0x5'))(_0x27cc('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x27cc('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3edd8d,_0x553572,_0x186cfa){return new BPromise(function(_0x1d6f27,_0x4fa353){return client['request'](_0x3edd8d,_0x186cfa)['then'](function(_0x5af9e4){logger[_0x27cc('0x8')]('Sound,\x20%s,\x20%s',_0x553572,'request\x20sent');logger[_0x27cc('0x9')](_0x27cc('0xa'),_0x553572,'request\x20sent',JSON[_0x27cc('0xb')](_0x5af9e4));if(_0x5af9e4[_0x27cc('0xc')]){if(_0x5af9e4[_0x27cc('0xc')][_0x27cc('0xd')]===0x1f4){logger[_0x27cc('0xc')](_0x27cc('0xe'),_0x553572,_0x5af9e4[_0x27cc('0xc')]['message']);return _0x4fa353(_0x5af9e4[_0x27cc('0xc')][_0x27cc('0xf')]);}logger['error'](_0x27cc('0xe'),_0x553572,_0x5af9e4[_0x27cc('0xc')][_0x27cc('0xf')]);return _0x1d6f27(_0x5af9e4[_0x27cc('0xc')][_0x27cc('0xf')]);}else{logger[_0x27cc('0x8')]('Sound,\x20%s,\x20%s',_0x553572,_0x27cc('0x10'));_0x1d6f27(_0x5af9e4['result'][_0x27cc('0xf')]);}})[_0x27cc('0x11')](function(_0x2b2bde){logger[_0x27cc('0xc')](_0x27cc('0xe'),_0x553572,_0x2b2bde);_0x4fa353(_0x2b2bde);});});}exports['ShowSound']=function(_0x249abb){var _0x21ffc2=this;return new Promise(function(_0xaeb0e9,_0x21897c){return db[_0x27cc('0x12')]['find']({'raw':_0x249abb[_0x27cc('0x13')]?_0x249abb[_0x27cc('0x13')][_0x27cc('0x14')]===undefined?!![]:![]:!![],'where':_0x249abb['options']?_0x249abb[_0x27cc('0x13')]['where']||null:null,'attributes':_0x249abb[_0x27cc('0x13')]?_0x249abb[_0x27cc('0x13')][_0x27cc('0x15')]||null:null,'include':_0x249abb[_0x27cc('0x13')]?_0x249abb[_0x27cc('0x13')][_0x27cc('0x16')]?_['map'](_0x249abb['options']['include'],function(_0x1b1c79){return{'model':db[_0x1b1c79[_0x27cc('0x17')]],'as':_0x1b1c79['as'],'attributes':_0x1b1c79[_0x27cc('0x15')],'include':_0x1b1c79[_0x27cc('0x16')]?_[_0x27cc('0x18')](_0x1b1c79['include'],function(_0x438954){return{'model':db[_0x438954[_0x27cc('0x17')]],'as':_0x438954['as'],'attributes':_0x438954[_0x27cc('0x15')],'include':_0x438954[_0x27cc('0x16')]?_['map'](_0x438954[_0x27cc('0x16')],function(_0x16385f){return{'model':db[_0x16385f[_0x27cc('0x17')]],'as':_0x16385f['as'],'attributes':_0x16385f[_0x27cc('0x15')]};}):[]};}):[]};}):[]:[]})[_0x27cc('0x19')](function(_0x2af1a8){logger[_0x27cc('0x8')](_0x27cc('0x1a'),_0x249abb);logger[_0x27cc('0x9')](_0x27cc('0x1a'),_0x249abb,JSON[_0x27cc('0xb')](_0x2af1a8));_0xaeb0e9(_0x2af1a8);})[_0x27cc('0x11')](function(_0x546343){logger[_0x27cc('0xc')](_0x27cc('0x1a'),_0x546343[_0x27cc('0xf')],_0x249abb);_0x21897c(_0x21ffc2[_0x27cc('0xc')](0x1f4,_0x546343[_0x27cc('0xf')]));});});};
\ No newline at end of file
+var _0xeebb=['../../config/environment','jayson/promise','client','http','request','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSound','Sound','find','options','raw','where','attributes','include','map','model','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x560143,_0x3e53ce){var _0x46feea=function(_0x46e824){while(--_0x46e824){_0x560143['push'](_0x560143['shift']());}};_0x46feea(++_0x3e53ce);}(_0xeebb,0x1c7));var _0xbeeb=function(_0x52c63f,_0x566c73){_0x52c63f=_0x52c63f-0x0;var _0x1a8329=_0xeebb[_0x52c63f];return _0x1a8329;};'use strict';var _=require('lodash');var util=require(_0xbeeb('0x0'));var moment=require(_0xbeeb('0x1'));var BPromise=require('bluebird');var rs=require(_0xbeeb('0x2'));var fs=require('fs');var Redis=require(_0xbeeb('0x3'));var db=require(_0xbeeb('0x4'))['db'];var utils=require(_0xbeeb('0x5'));var logger=require(_0xbeeb('0x6'))('rpc');var config=require(_0xbeeb('0x7'));var jayson=require(_0xbeeb('0x8'));var client=jayson[_0xbeeb('0x9')][_0xbeeb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x31bd00,_0x34087f,_0x581293){return new BPromise(function(_0xf11bc9,_0x2a7f34){return client[_0xbeeb('0xb')](_0x31bd00,_0x581293)['then'](function(_0x35dfaa){logger[_0xbeeb('0xc')](_0xbeeb('0xd'),_0x34087f,_0xbeeb('0xe'));logger[_0xbeeb('0xf')](_0xbeeb('0x10'),_0x34087f,'request\x20sent',JSON[_0xbeeb('0x11')](_0x35dfaa));if(_0x35dfaa[_0xbeeb('0x12')]){if(_0x35dfaa[_0xbeeb('0x12')][_0xbeeb('0x13')]===0x1f4){logger[_0xbeeb('0x12')](_0xbeeb('0xd'),_0x34087f,_0x35dfaa[_0xbeeb('0x12')][_0xbeeb('0x14')]);return _0x2a7f34(_0x35dfaa[_0xbeeb('0x12')]['message']);}logger['error'](_0xbeeb('0xd'),_0x34087f,_0x35dfaa[_0xbeeb('0x12')][_0xbeeb('0x14')]);return _0xf11bc9(_0x35dfaa[_0xbeeb('0x12')][_0xbeeb('0x14')]);}else{logger[_0xbeeb('0xc')](_0xbeeb('0xd'),_0x34087f,_0xbeeb('0xe'));_0xf11bc9(_0x35dfaa[_0xbeeb('0x15')][_0xbeeb('0x14')]);}})[_0xbeeb('0x16')](function(_0xbfa52f){logger[_0xbeeb('0x12')](_0xbeeb('0xd'),_0x34087f,_0xbfa52f);_0x2a7f34(_0xbfa52f);});});}exports[_0xbeeb('0x17')]=function(_0x5d8f75){var _0xfee954=this;return new Promise(function(_0xb86573,_0x374640){return db[_0xbeeb('0x18')][_0xbeeb('0x19')]({'raw':_0x5d8f75[_0xbeeb('0x1a')]?_0x5d8f75[_0xbeeb('0x1a')][_0xbeeb('0x1b')]===undefined?!![]:![]:!![],'where':_0x5d8f75[_0xbeeb('0x1a')]?_0x5d8f75[_0xbeeb('0x1a')][_0xbeeb('0x1c')]||null:null,'attributes':_0x5d8f75[_0xbeeb('0x1a')]?_0x5d8f75['options'][_0xbeeb('0x1d')]||null:null,'include':_0x5d8f75[_0xbeeb('0x1a')]?_0x5d8f75[_0xbeeb('0x1a')][_0xbeeb('0x1e')]?_[_0xbeeb('0x1f')](_0x5d8f75[_0xbeeb('0x1a')][_0xbeeb('0x1e')],function(_0x15b16c){return{'model':db[_0x15b16c['model']],'as':_0x15b16c['as'],'attributes':_0x15b16c['attributes'],'include':_0x15b16c[_0xbeeb('0x1e')]?_['map'](_0x15b16c[_0xbeeb('0x1e')],function(_0x447be8){return{'model':db[_0x447be8[_0xbeeb('0x20')]],'as':_0x447be8['as'],'attributes':_0x447be8[_0xbeeb('0x1d')],'include':_0x447be8[_0xbeeb('0x1e')]?_['map'](_0x447be8['include'],function(_0x5cc1e6){return{'model':db[_0x5cc1e6[_0xbeeb('0x20')]],'as':_0x5cc1e6['as'],'attributes':_0x5cc1e6['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x29651e){logger[_0xbeeb('0xc')](_0xbeeb('0x17'),_0x5d8f75);logger[_0xbeeb('0xf')](_0xbeeb('0x17'),_0x5d8f75,JSON[_0xbeeb('0x11')](_0x29651e));_0xb86573(_0x29651e);})[_0xbeeb('0x16')](function(_0xc838d6){logger[_0xbeeb('0x12')]('ShowSound',_0xc838d6[_0xbeeb('0x14')],_0x5d8f75);_0x374640(_0xfee954[_0xbeeb('0x12')](0x1f4,_0xc838d6[_0xbeeb('0x14')]));});});};
\ No newline at end of file
index 1e1601c..fa5393d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eb8=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','isAuthenticated','index','/:id','show','put','update','delete','exports','path','connect-timeout','express','Router'];(function(_0x2486a2,_0x206896){var _0x2248fa=function(_0x4b4bcb){while(--_0x4b4bcb){_0x2486a2['push'](_0x2486a2['shift']());}};_0x2248fa(++_0x206896);}(_0x5eb8,0xb0));var _0x85eb=function(_0x1fd9e7,_0x24cdbe){_0x1fd9e7=_0x1fd9e7-0x0;var _0x1781f2=_0x5eb8[_0x1fd9e7];return _0x1781f2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x85eb('0x0'));var timeout=require(_0x85eb('0x1'));var express=require(_0x85eb('0x2'));var router=express[_0x85eb('0x3')]();var fs_extra=require(_0x85eb('0x4'));var auth=require(_0x85eb('0x5'));var interaction=require(_0x85eb('0x6'));var config=require(_0x85eb('0x7'));var controller=require(_0x85eb('0x8'));router[_0x85eb('0x9')]('/',auth[_0x85eb('0xa')](),controller[_0x85eb('0xb')]);router['get'](_0x85eb('0xc'),auth[_0x85eb('0xa')](),controller[_0x85eb('0xd')]);router['post']('/',auth[_0x85eb('0xa')](),controller['create']);router[_0x85eb('0xe')](_0x85eb('0xc'),auth[_0x85eb('0xa')](),controller[_0x85eb('0xf')]);router[_0x85eb('0x10')](_0x85eb('0xc'),auth[_0x85eb('0xa')](),controller['destroy']);module[_0x85eb('0x11')]=router;
\ No newline at end of file
+var _0x2032=['exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete'];(function(_0x24dfb7,_0x2bf1bf){var _0x525851=function(_0xa8a946){while(--_0xa8a946){_0x24dfb7['push'](_0x24dfb7['shift']());}};_0x525851(++_0x2bf1bf);}(_0x2032,0xd9));var _0x2203=function(_0x5a44fc,_0x3b2d92){_0x5a44fc=_0x5a44fc-0x0;var _0x2ec2ac=_0x2032[_0x5a44fc];return _0x2ec2ac;};'use strict';var multer=require('multer');var util=require(_0x2203('0x0'));var path=require(_0x2203('0x1'));var timeout=require(_0x2203('0x2'));var express=require('express');var router=express[_0x2203('0x3')]();var fs_extra=require(_0x2203('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var controller=require(_0x2203('0x7'));router[_0x2203('0x8')]('/',auth[_0x2203('0x9')](),controller[_0x2203('0xa')]);router[_0x2203('0x8')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0xc')]);router[_0x2203('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2203('0xe')]('/:id',auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);router[_0x2203('0x10')]('/:id',auth[_0x2203('0x9')](),controller['destroy']);module[_0x2203('0x11')]=router;
\ No newline at end of file
index c188913..154c7b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ef6=['exports','STRING','TEXT','medium','ENUM','out','sequelize'];(function(_0x3d736f,_0x102c06){var _0x5338b8=function(_0x4cfb5a){while(--_0x4cfb5a){_0x3d736f['push'](_0x3d736f['shift']());}};_0x5338b8(++_0x102c06);}(_0x1ef6,0x1d4));var _0x61ef=function(_0x3ea192,_0x4997c3){_0x3ea192=_0x3ea192-0x0;var _0x4b255c=_0x1ef6[_0x3ea192];return _0x4b255c;};'use strict';var Sequelize=require(_0x61ef('0x0'));module[_0x61ef('0x1')]={'uniqueid':{'type':Sequelize[_0x61ef('0x2')]},'body':{'type':Sequelize[_0x61ef('0x3')](_0x61ef('0x4')),'allowNull':![]},'direction':{'type':Sequelize[_0x61ef('0x5')]('in',_0x61ef('0x6')),'defaultValue':_0x61ef('0x6'),'allowNull':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x61ef('0x3')]}};
\ No newline at end of file
+var _0xf8d6=['sequelize','STRING','TEXT','ENUM','out'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0xf8d6,0x1d1));var _0x6f8d=function(_0x5a3cf0,_0x160a68){_0x5a3cf0=_0x5a3cf0-0x0;var _0x5a64ee=_0xf8d6[_0x5a3cf0];return _0x5a64ee;};'use strict';var Sequelize=require(_0x6f8d('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x6f8d('0x1')]},'body':{'type':Sequelize[_0x6f8d('0x2')]('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0x6f8d('0x3')]('in',_0x6f8d('0x4')),'defaultValue':_0x6f8d('0x4'),'allowNull':![]},'providerName':{'type':Sequelize[_0x6f8d('0x1')]},'providerResponse':{'type':Sequelize[_0x6f8d('0x2')]}};
\ No newline at end of file
index 6bca752..6af4289 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc113=['fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','set','update','then','sendStatus','error','stack','name','send','index','map','SquareMessage','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','include','findAll','catch','show','params','length','includeAll','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc113,0x1ab));var _0x3c11=function(_0x3fc4b4,_0x11e339){_0x3fc4b4=_0x3fc4b4-0x0;var _0x14ec03=_0xc113[_0x3fc4b4];return _0x14ec03;};'use strict';var emlformat=require(_0x3c11('0x0'));var rimraf=require(_0x3c11('0x1'));var zipdir=require(_0x3c11('0x2'));var jsonpatch=require(_0x3c11('0x3'));var rp=require(_0x3c11('0x4'));var moment=require(_0x3c11('0x5'));var BPromise=require(_0x3c11('0x6'));var Mustache=require(_0x3c11('0x7'));var util=require(_0x3c11('0x8'));var path=require('path');var sox=require(_0x3c11('0x9'));var csv=require(_0x3c11('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3c11('0xb'));var _=require(_0x3c11('0xc'));var squel=require(_0x3c11('0xd'));var crypto=require('crypto');var jsforce=require(_0x3c11('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x3c11('0xf'));var Redis=require(_0x3c11('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x3c11('0x11'));var as=require(_0x3c11('0x12'));var hardwareService=require(_0x3c11('0x13'));var logger=require('../../config/logger')(_0x3c11('0x14'));var utils=require(_0x3c11('0x15'));var config=require(_0x3c11('0x16'));var licenseUtil=require(_0x3c11('0x17'));var db=require(_0x3c11('0x18'))['db'];function respondWithStatusCode(_0x58c7c8,_0x28daef){_0x28daef=_0x28daef||0xcc;return function(_0x2d997c){if(_0x2d997c){return _0x58c7c8['sendStatus'](_0x28daef);}return _0x58c7c8[_0x3c11('0x19')](_0x28daef)[_0x3c11('0x1a')]();};}function respondWithResult(_0x1c0b32,_0x822ef3){_0x822ef3=_0x822ef3||0xc8;return function(_0x30b11b){if(_0x30b11b){return _0x1c0b32['status'](_0x822ef3)[_0x3c11('0x1b')](_0x30b11b);}};}function respondWithFilteredResult(_0x2ba437,_0x2259f7){return function(_0x14c05d){if(_0x14c05d){var _0x1d05f2=typeof _0x2259f7['offset']==='undefined'&&typeof _0x2259f7['limit']===_0x3c11('0x1c');var _0x3a0626=_0x14c05d[_0x3c11('0x1d')];var _0x42db8d=_0x1d05f2?0x0:_0x2259f7[_0x3c11('0x1e')];var _0x35d32f=_0x1d05f2?_0x14c05d[_0x3c11('0x1d')]:_0x2259f7[_0x3c11('0x1e')]+_0x2259f7[_0x3c11('0x1f')];var _0x539ee1;if(_0x35d32f>=_0x3a0626){_0x35d32f=_0x3a0626;_0x539ee1=0xc8;}else{_0x539ee1=0xce;}_0x2ba437['status'](_0x539ee1);return _0x2ba437[_0x3c11('0x20')]('Content-Range',_0x42db8d+'-'+_0x35d32f+'/'+_0x3a0626)[_0x3c11('0x1b')](_0x14c05d);}return null;};}function patchUpdates(_0x5540b7){return function(_0x3ab7af){try{jsonpatch['apply'](_0x3ab7af,_0x5540b7,!![]);}catch(_0xe243c){return BPromise['reject'](_0xe243c);}return _0x3ab7af['save']();};}function saveUpdates(_0x160831,_0x49b827){return function(_0x189ba9){if(_0x189ba9){return _0x189ba9[_0x3c11('0x21')](_0x160831)[_0x3c11('0x22')](function(_0x2a7687){return _0x2a7687;});}return null;};}function removeEntity(_0x1a8fd4,_0x4e456a){return function(_0x36bb91){if(_0x36bb91){return _0x36bb91['destroy']()[_0x3c11('0x22')](function(){_0x1a8fd4[_0x3c11('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x29f3cd,_0x20ec9b){return function(_0x2ff8bc){if(!_0x2ff8bc){_0x29f3cd[_0x3c11('0x23')](0x194);}return _0x2ff8bc;};}function handleError(_0xd42228,_0x243659){_0x243659=_0x243659||0x1f4;return function(_0x1af1fb){logger[_0x3c11('0x24')](_0x1af1fb[_0x3c11('0x25')]);if(_0x1af1fb[_0x3c11('0x26')]){delete _0x1af1fb['name'];}_0xd42228[_0x3c11('0x19')](_0x243659)[_0x3c11('0x27')](_0x1af1fb);};}exports[_0x3c11('0x28')]=function(_0x9cc373,_0x50aec6){var _0x25b25d={},_0x21401c={},_0x5151b0={'count':0x0,'rows':[]};var _0x1078b8=_[_0x3c11('0x29')](db[_0x3c11('0x2a')][_0x3c11('0x2b')],function(_0x36a5b4){return{'name':_0x36a5b4[_0x3c11('0x2c')],'type':_0x36a5b4[_0x3c11('0x2d')][_0x3c11('0x2e')]};});_0x21401c['model']=_[_0x3c11('0x29')](_0x1078b8,_0x3c11('0x26'));_0x21401c[_0x3c11('0x2f')]=_[_0x3c11('0x30')](_0x9cc373[_0x3c11('0x2f')]);_0x21401c[_0x3c11('0x31')]=_[_0x3c11('0x32')](_0x21401c['model'],_0x21401c[_0x3c11('0x2f')]);_0x25b25d[_0x3c11('0x33')]=_[_0x3c11('0x32')](_0x21401c[_0x3c11('0x34')],qs[_0x3c11('0x35')](_0x9cc373[_0x3c11('0x2f')]['fields']));_0x25b25d[_0x3c11('0x33')]=_0x25b25d['attributes']['length']?_0x25b25d[_0x3c11('0x33')]:_0x21401c[_0x3c11('0x34')];if(!_0x9cc373['query'][_0x3c11('0x36')](_0x3c11('0x37'))){_0x25b25d[_0x3c11('0x1f')]=qs['limit'](_0x9cc373[_0x3c11('0x2f')][_0x3c11('0x1f')]);_0x25b25d[_0x3c11('0x1e')]=qs[_0x3c11('0x1e')](_0x9cc373['query'][_0x3c11('0x1e')]);}_0x25b25d[_0x3c11('0x38')]=qs['sort'](_0x9cc373[_0x3c11('0x2f')][_0x3c11('0x39')]);_0x25b25d[_0x3c11('0x3a')]=qs['filters'](_[_0x3c11('0x3b')](_0x9cc373['query'],_0x21401c[_0x3c11('0x31')]),_0x1078b8);if(_0x9cc373['query']['filter']){_0x25b25d[_0x3c11('0x3a')]=_['merge'](_0x25b25d[_0x3c11('0x3a')],{'$or':_['map'](_0x1078b8,function(_0x32766e){if(_0x32766e[_0x3c11('0x2d')]!=='VIRTUAL'){var _0x20bf47={};_0x20bf47[_0x32766e['name']]={'$like':'%'+_0x9cc373[_0x3c11('0x2f')][_0x3c11('0x3c')]+'%'};return _0x20bf47;}})});}_0x25b25d=_[_0x3c11('0x3d')]({},_0x25b25d,_0x9cc373['options']);var _0x3e1ec3={'where':_0x25b25d[_0x3c11('0x3a')]};return db[_0x3c11('0x2a')][_0x3c11('0x1d')](_0x3e1ec3)[_0x3c11('0x22')](function(_0x2ccc27){_0x5151b0[_0x3c11('0x1d')]=_0x2ccc27;if(_0x9cc373[_0x3c11('0x2f')]['includeAll']){_0x25b25d[_0x3c11('0x3e')]=[{'all':!![]}];}return db[_0x3c11('0x2a')][_0x3c11('0x3f')](_0x25b25d);})['then'](function(_0x4ed063){_0x5151b0['rows']=_0x4ed063;return _0x5151b0;})[_0x3c11('0x22')](respondWithFilteredResult(_0x50aec6,_0x25b25d))[_0x3c11('0x40')](handleError(_0x50aec6,null));};exports[_0x3c11('0x41')]=function(_0x5eef87,_0x533cb8){var _0x3eea03={'raw':!![],'where':{'id':_0x5eef87[_0x3c11('0x42')]['id']}},_0x39b0ed={};_0x39b0ed[_0x3c11('0x34')]=_[_0x3c11('0x30')](db[_0x3c11('0x2a')][_0x3c11('0x2b')]);_0x39b0ed[_0x3c11('0x2f')]=_[_0x3c11('0x30')](_0x5eef87['query']);_0x39b0ed[_0x3c11('0x31')]=_[_0x3c11('0x32')](_0x39b0ed[_0x3c11('0x34')],_0x39b0ed[_0x3c11('0x2f')]);_0x3eea03[_0x3c11('0x33')]=_[_0x3c11('0x32')](_0x39b0ed[_0x3c11('0x34')],qs[_0x3c11('0x35')](_0x5eef87[_0x3c11('0x2f')][_0x3c11('0x35')]));_0x3eea03['attributes']=_0x3eea03[_0x3c11('0x33')][_0x3c11('0x43')]?_0x3eea03[_0x3c11('0x33')]:_0x39b0ed['model'];if(_0x5eef87[_0x3c11('0x2f')][_0x3c11('0x44')]){_0x3eea03[_0x3c11('0x3e')]=[{'all':!![]}];}_0x3eea03=_[_0x3c11('0x3d')]({},_0x3eea03,_0x5eef87['options']);return db['SquareMessage'][_0x3c11('0x45')](_0x3eea03)[_0x3c11('0x22')](handleEntityNotFound(_0x533cb8,null))['then'](respondWithResult(_0x533cb8,null))[_0x3c11('0x40')](handleError(_0x533cb8,null));};exports[_0x3c11('0x46')]=function(_0x2e2398,_0x2b3224){return db['SquareMessage']['create'](_0x2e2398[_0x3c11('0x47')],{})[_0x3c11('0x22')](respondWithResult(_0x2b3224,0xc9))[_0x3c11('0x40')](handleError(_0x2b3224,null));};exports[_0x3c11('0x21')]=function(_0x4da7b4,_0x1846b2){if(_0x4da7b4[_0x3c11('0x47')]['id']){delete _0x4da7b4[_0x3c11('0x47')]['id'];}return db[_0x3c11('0x2a')][_0x3c11('0x45')]({'where':{'id':_0x4da7b4[_0x3c11('0x42')]['id']}})['then'](handleEntityNotFound(_0x1846b2,null))['then'](saveUpdates(_0x4da7b4['body'],null))['then'](respondWithResult(_0x1846b2,null))['catch'](handleError(_0x1846b2,null));};exports[_0x3c11('0x48')]=function(_0x559f54,_0x5a7efe){return db[_0x3c11('0x2a')][_0x3c11('0x45')]({'where':{'id':_0x559f54['params']['id']}})[_0x3c11('0x22')](handleEntityNotFound(_0x5a7efe,null))['then'](removeEntity(_0x5a7efe,null))[_0x3c11('0x40')](handleError(_0x5a7efe,null));};
\ No newline at end of file
+var _0xa9fc=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','limit','count','set','Content-Range','json','reject','save','then','error','stack','name','rawAttributes','fieldName','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','SquareMessage','rows','catch','show','params','includeAll','options','find','create','body','update','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9fc,0x19f));var _0xca9f=function(_0x16bb4b,_0x5fe431){_0x16bb4b=_0x16bb4b-0x0;var _0x8aeb84=_0xa9fc[_0x16bb4b];return _0x8aeb84;};'use strict';var emlformat=require(_0xca9f('0x0'));var rimraf=require(_0xca9f('0x1'));var zipdir=require(_0xca9f('0x2'));var jsonpatch=require(_0xca9f('0x3'));var rp=require(_0xca9f('0x4'));var moment=require('moment');var BPromise=require(_0xca9f('0x5'));var Mustache=require('mustache');var util=require(_0xca9f('0x6'));var path=require(_0xca9f('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xca9f('0x8'));var _=require('lodash');var squel=require(_0xca9f('0x9'));var crypto=require(_0xca9f('0xa'));var jsforce=require(_0xca9f('0xb'));var deskjs=require(_0xca9f('0xc'));var toCsv=require(_0xca9f('0xd'));var querystring=require(_0xca9f('0xe'));var Papa=require(_0xca9f('0xf'));var Redis=require(_0xca9f('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xca9f('0x11'));var as=require(_0xca9f('0x12'));var hardwareService=require(_0xca9f('0x13'));var logger=require(_0xca9f('0x14'))('api');var utils=require(_0xca9f('0x15'));var config=require(_0xca9f('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xca9f('0x17'))['db'];function respondWithStatusCode(_0x49d36a,_0x2017c6){_0x2017c6=_0x2017c6||0xcc;return function(_0x2aefea){if(_0x2aefea){return _0x49d36a[_0xca9f('0x18')](_0x2017c6);}return _0x49d36a[_0xca9f('0x19')](_0x2017c6)[_0xca9f('0x1a')]();};}function respondWithResult(_0x2cb6f4,_0x33f8c7){_0x33f8c7=_0x33f8c7||0xc8;return function(_0x864d21){if(_0x864d21){return _0x2cb6f4['status'](_0x33f8c7)['json'](_0x864d21);}};}function respondWithFilteredResult(_0x300c62,_0x5ec217){return function(_0x510022){if(_0x510022){var _0xda6255=typeof _0x5ec217[_0xca9f('0x1b')]==='undefined'&&typeof _0x5ec217[_0xca9f('0x1c')]==='undefined';var _0x22cdda=_0x510022['count'];var _0x22c161=_0xda6255?0x0:_0x5ec217[_0xca9f('0x1b')];var _0x1543aa=_0xda6255?_0x510022[_0xca9f('0x1d')]:_0x5ec217[_0xca9f('0x1b')]+_0x5ec217['limit'];var _0x982806;if(_0x1543aa>=_0x22cdda){_0x1543aa=_0x22cdda;_0x982806=0xc8;}else{_0x982806=0xce;}_0x300c62['status'](_0x982806);return _0x300c62[_0xca9f('0x1e')](_0xca9f('0x1f'),_0x22c161+'-'+_0x1543aa+'/'+_0x22cdda)[_0xca9f('0x20')](_0x510022);}return null;};}function patchUpdates(_0x2799e8){return function(_0x132663){try{jsonpatch['apply'](_0x132663,_0x2799e8,!![]);}catch(_0x7246c7){return BPromise[_0xca9f('0x21')](_0x7246c7);}return _0x132663[_0xca9f('0x22')]();};}function saveUpdates(_0x1927b7,_0x239b30){return function(_0x4f9e9c){if(_0x4f9e9c){return _0x4f9e9c['update'](_0x1927b7)[_0xca9f('0x23')](function(_0x96b3ec){return _0x96b3ec;});}return null;};}function removeEntity(_0x162328,_0x1066bc){return function(_0x319b3b){if(_0x319b3b){return _0x319b3b['destroy']()[_0xca9f('0x23')](function(){_0x162328[_0xca9f('0x19')](0xcc)[_0xca9f('0x1a')]();});}};}function handleEntityNotFound(_0x4d64eb,_0x390333){return function(_0x235044){if(!_0x235044){_0x4d64eb[_0xca9f('0x18')](0x194);}return _0x235044;};}function handleError(_0x133222,_0x88025b){_0x88025b=_0x88025b||0x1f4;return function(_0x4c4558){logger[_0xca9f('0x24')](_0x4c4558[_0xca9f('0x25')]);if(_0x4c4558[_0xca9f('0x26')]){delete _0x4c4558[_0xca9f('0x26')];}_0x133222[_0xca9f('0x19')](_0x88025b)['send'](_0x4c4558);};}exports['index']=function(_0x3bcbed,_0x5dfa6f){var _0x33edd5={},_0x16b189={},_0x17d202={'count':0x0,'rows':[]};var _0x1360d1=_['map'](db['SquareMessage'][_0xca9f('0x27')],function(_0x4d903c){return{'name':_0x4d903c[_0xca9f('0x28')],'type':_0x4d903c['type'][_0xca9f('0x29')]};});_0x16b189[_0xca9f('0x2a')]=_[_0xca9f('0x2b')](_0x1360d1,_0xca9f('0x26'));_0x16b189[_0xca9f('0x2c')]=_[_0xca9f('0x2d')](_0x3bcbed['query']);_0x16b189['filters']=_[_0xca9f('0x2e')](_0x16b189['model'],_0x16b189[_0xca9f('0x2c')]);_0x33edd5[_0xca9f('0x2f')]=_[_0xca9f('0x2e')](_0x16b189['model'],qs['fields'](_0x3bcbed[_0xca9f('0x2c')][_0xca9f('0x30')]));_0x33edd5[_0xca9f('0x2f')]=_0x33edd5['attributes'][_0xca9f('0x31')]?_0x33edd5[_0xca9f('0x2f')]:_0x16b189['model'];if(!_0x3bcbed['query'][_0xca9f('0x32')](_0xca9f('0x33'))){_0x33edd5[_0xca9f('0x1c')]=qs[_0xca9f('0x1c')](_0x3bcbed[_0xca9f('0x2c')][_0xca9f('0x1c')]);_0x33edd5[_0xca9f('0x1b')]=qs[_0xca9f('0x1b')](_0x3bcbed[_0xca9f('0x2c')][_0xca9f('0x1b')]);}_0x33edd5[_0xca9f('0x34')]=qs[_0xca9f('0x35')](_0x3bcbed[_0xca9f('0x2c')]['sort']);_0x33edd5[_0xca9f('0x36')]=qs['filters'](_[_0xca9f('0x37')](_0x3bcbed[_0xca9f('0x2c')],_0x16b189['filters']),_0x1360d1);if(_0x3bcbed[_0xca9f('0x2c')][_0xca9f('0x38')]){_0x33edd5[_0xca9f('0x36')]=_[_0xca9f('0x39')](_0x33edd5[_0xca9f('0x36')],{'$or':_['map'](_0x1360d1,function(_0x4e8fda){if(_0x4e8fda['type']!==_0xca9f('0x3a')){var _0x93662f={};_0x93662f[_0x4e8fda[_0xca9f('0x26')]]={'$like':'%'+_0x3bcbed['query'][_0xca9f('0x38')]+'%'};return _0x93662f;}})});}_0x33edd5=_[_0xca9f('0x39')]({},_0x33edd5,_0x3bcbed['options']);var _0x36be30={'where':_0x33edd5[_0xca9f('0x36')]};return db['SquareMessage'][_0xca9f('0x1d')](_0x36be30)[_0xca9f('0x23')](function(_0x397d4a){_0x17d202[_0xca9f('0x1d')]=_0x397d4a;if(_0x3bcbed[_0xca9f('0x2c')]['includeAll']){_0x33edd5[_0xca9f('0x3b')]=[{'all':!![]}];}return db[_0xca9f('0x3c')]['findAll'](_0x33edd5);})[_0xca9f('0x23')](function(_0x15d8be){_0x17d202[_0xca9f('0x3d')]=_0x15d8be;return _0x17d202;})[_0xca9f('0x23')](respondWithFilteredResult(_0x5dfa6f,_0x33edd5))[_0xca9f('0x3e')](handleError(_0x5dfa6f,null));};exports[_0xca9f('0x3f')]=function(_0x199bb9,_0x6284a1){var _0x432734={'raw':!![],'where':{'id':_0x199bb9[_0xca9f('0x40')]['id']}},_0x409fb0={};_0x409fb0[_0xca9f('0x2a')]=_['keys'](db[_0xca9f('0x3c')][_0xca9f('0x27')]);_0x409fb0[_0xca9f('0x2c')]=_[_0xca9f('0x2d')](_0x199bb9[_0xca9f('0x2c')]);_0x409fb0['filters']=_['intersection'](_0x409fb0[_0xca9f('0x2a')],_0x409fb0['query']);_0x432734[_0xca9f('0x2f')]=_[_0xca9f('0x2e')](_0x409fb0[_0xca9f('0x2a')],qs[_0xca9f('0x30')](_0x199bb9[_0xca9f('0x2c')][_0xca9f('0x30')]));_0x432734['attributes']=_0x432734[_0xca9f('0x2f')][_0xca9f('0x31')]?_0x432734['attributes']:_0x409fb0[_0xca9f('0x2a')];if(_0x199bb9[_0xca9f('0x2c')][_0xca9f('0x41')]){_0x432734[_0xca9f('0x3b')]=[{'all':!![]}];}_0x432734=_['merge']({},_0x432734,_0x199bb9[_0xca9f('0x42')]);return db['SquareMessage'][_0xca9f('0x43')](_0x432734)[_0xca9f('0x23')](handleEntityNotFound(_0x6284a1,null))[_0xca9f('0x23')](respondWithResult(_0x6284a1,null))[_0xca9f('0x3e')](handleError(_0x6284a1,null));};exports['create']=function(_0x4ca490,_0x5e1c8d){return db[_0xca9f('0x3c')][_0xca9f('0x44')](_0x4ca490[_0xca9f('0x45')],{})[_0xca9f('0x23')](respondWithResult(_0x5e1c8d,0xc9))[_0xca9f('0x3e')](handleError(_0x5e1c8d,null));};exports[_0xca9f('0x46')]=function(_0x656430,_0x26b9f4){if(_0x656430[_0xca9f('0x45')]['id']){delete _0x656430[_0xca9f('0x45')]['id'];}return db['SquareMessage'][_0xca9f('0x43')]({'where':{'id':_0x656430['params']['id']}})[_0xca9f('0x23')](handleEntityNotFound(_0x26b9f4,null))[_0xca9f('0x23')](saveUpdates(_0x656430['body'],null))[_0xca9f('0x23')](respondWithResult(_0x26b9f4,null))[_0xca9f('0x3e')](handleError(_0x26b9f4,null));};exports[_0xca9f('0x47')]=function(_0x43b1c3,_0x1152a7){return db[_0xca9f('0x3c')][_0xca9f('0x43')]({'where':{'id':_0x43b1c3[_0xca9f('0x40')]['id']}})['then'](handleEntityNotFound(_0x1152a7,null))['then'](removeEntity(_0x1152a7,null))[_0xca9f('0x3e')](handleError(_0x1152a7,null));};
\ No newline at end of file
index cfc51a9..fc35b01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4ed=['define','SquareMessage','square_messages','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x15cbce,_0xda8402){var _0x257f29=function(_0x388132){while(--_0x388132){_0x15cbce['push'](_0x15cbce['shift']());}};_0x257f29(++_0xda8402);}(_0xe4ed,0xd5));var _0xde4e=function(_0x3c2b34,_0x288043){_0x3c2b34=_0x3c2b34-0x0;var _0x263f8c=_0xe4ed[_0x3c2b34];return _0x263f8c;};'use strict';var _=require(_0xde4e('0x0'));var util=require(_0xde4e('0x1'));var logger=require(_0xde4e('0x2'))(_0xde4e('0x3'));var moment=require(_0xde4e('0x4'));var BPromise=require(_0xde4e('0x5'));var rp=require(_0xde4e('0x6'));var fs=require('fs');var path=require(_0xde4e('0x7'));var rimraf=require(_0xde4e('0x8'));var config=require(_0xde4e('0x9'));var attributes=require('./squareMessage.attributes');module[_0xde4e('0xa')]=function(_0x2f301b,_0x112136){return _0x2f301b[_0xde4e('0xb')](_0xde4e('0xc'),attributes,{'tableName':_0xde4e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x37f0=['api','moment','bluebird','path','rimraf','./squareMessage.attributes','exports','define','SquareMessage','square_messages','lodash','util','../../config/logger'];(function(_0x1e4e45,_0x269ef9){var _0x577af1=function(_0x192467){while(--_0x192467){_0x1e4e45['push'](_0x1e4e45['shift']());}};_0x577af1(++_0x269ef9);}(_0x37f0,0xc0));var _0x037f=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x37f0[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x037f('0x0'));var util=require(_0x037f('0x1'));var logger=require(_0x037f('0x2'))(_0x037f('0x3'));var moment=require(_0x037f('0x4'));var BPromise=require(_0x037f('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x037f('0x6'));var rimraf=require(_0x037f('0x7'));var config=require('../../config/environment');var attributes=require(_0x037f('0x8'));module[_0x037f('0x9')]=function(_0x107378,_0x3b35a1){return _0x107378[_0x037f('0xa')](_0x037f('0xb'),attributes,{'tableName':_0x037f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 19d544f..1f73103 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f0d=['request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateSquareMessage','SquareMessage','body','options','raw','then','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','SquareMessage,\x20%s,\x20%s'];(function(_0x35b97b,_0x27b581){var _0x40c299=function(_0x5b6c85){while(--_0x5b6c85){_0x35b97b['push'](_0x35b97b['shift']());}};_0x40c299(++_0x27b581);}(_0x9f0d,0x65));var _0xd9f0=function(_0x1d4bb6,_0x45885e){_0x1d4bb6=_0x1d4bb6-0x0;var _0x5588a3=_0x9f0d[_0x1d4bb6];return _0x5588a3;};'use strict';var _=require(_0xd9f0('0x0'));var util=require(_0xd9f0('0x1'));var moment=require(_0xd9f0('0x2'));var BPromise=require(_0xd9f0('0x3'));var rs=require(_0xd9f0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd9f0('0x5'))['db'];var utils=require(_0xd9f0('0x6'));var logger=require('../../config/logger')(_0xd9f0('0x7'));var config=require(_0xd9f0('0x8'));var jayson=require(_0xd9f0('0x9'));var client=jayson[_0xd9f0('0xa')][_0xd9f0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x538690,_0x25f666,_0x5714ba){return new BPromise(function(_0x16eaec,_0x316ee9){return client[_0xd9f0('0xc')](_0x538690,_0x5714ba)['then'](function(_0x32fa9b){logger[_0xd9f0('0xd')](_0xd9f0('0xe'),_0x25f666,_0xd9f0('0xf'));logger[_0xd9f0('0x10')](_0xd9f0('0x11'),_0x25f666,_0xd9f0('0xf'),JSON['stringify'](_0x32fa9b));if(_0x32fa9b['error']){if(_0x32fa9b[_0xd9f0('0x12')][_0xd9f0('0x13')]===0x1f4){logger[_0xd9f0('0x12')](_0xd9f0('0xe'),_0x25f666,_0x32fa9b['error'][_0xd9f0('0x14')]);return _0x316ee9(_0x32fa9b['error']['message']);}logger['error'](_0xd9f0('0xe'),_0x25f666,_0x32fa9b['error'][_0xd9f0('0x14')]);return _0x16eaec(_0x32fa9b[_0xd9f0('0x12')]['message']);}else{logger[_0xd9f0('0xd')](_0xd9f0('0xe'),_0x25f666,_0xd9f0('0xf'));_0x16eaec(_0x32fa9b[_0xd9f0('0x15')]['message']);}})[_0xd9f0('0x16')](function(_0x521706){logger['error'](_0xd9f0('0xe'),_0x25f666,_0x521706);_0x316ee9(_0x521706);});});}exports[_0xd9f0('0x17')]=function(_0x557b2c){var _0x1d2c74=this;return new Promise(function(_0x2d7b3c,_0x5d0ef7){return db[_0xd9f0('0x18')]['create'](_0x557b2c[_0xd9f0('0x19')],{'raw':_0x557b2c[_0xd9f0('0x1a')]?_0x557b2c[_0xd9f0('0x1a')][_0xd9f0('0x1b')]===undefined?!![]:![]:!![]})[_0xd9f0('0x1c')](function(_0x4c8d7b){logger[_0xd9f0('0xd')](_0xd9f0('0x17'),_0x557b2c);logger[_0xd9f0('0x10')](_0xd9f0('0x17'),_0x557b2c,JSON['stringify'](_0x4c8d7b));_0x2d7b3c(_0x4c8d7b);})[_0xd9f0('0x16')](function(_0x637696){logger['error'](_0xd9f0('0x17'),_0x637696['message'],_0x557b2c);_0x5d0ef7(_0x1d2c74[_0xd9f0('0x12')](0x1f4,_0x637696[_0xd9f0('0x14')]));});});};
\ No newline at end of file
+var _0x91c4=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','SquareMessage,\x20%s,\x20%s','debug','SquareMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','CreateSquareMessage','SquareMessage','body','options','raw','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x178690,_0x3095f6){var _0x422fb8=function(_0x41de87){while(--_0x41de87){_0x178690['push'](_0x178690['shift']());}};_0x422fb8(++_0x3095f6);}(_0x91c4,0x108));var _0x491c=function(_0x382217,_0x17fc58){_0x382217=_0x382217-0x0;var _0x56e4a9=_0x91c4[_0x382217];return _0x56e4a9;};'use strict';var _=require('lodash');var util=require(_0x491c('0x0'));var moment=require(_0x491c('0x1'));var BPromise=require(_0x491c('0x2'));var rs=require(_0x491c('0x3'));var fs=require('fs');var Redis=require(_0x491c('0x4'));var db=require(_0x491c('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x491c('0x6'))(_0x491c('0x7'));var config=require(_0x491c('0x8'));var jayson=require(_0x491c('0x9'));var client=jayson['client'][_0x491c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2c2945,_0x3b8099,_0x349049){return new BPromise(function(_0x622c22,_0x304834){return client[_0x491c('0xb')](_0x2c2945,_0x349049)[_0x491c('0xc')](function(_0x3ea26){logger[_0x491c('0xd')](_0x491c('0xe'),_0x3b8099,'request\x20sent');logger[_0x491c('0xf')](_0x491c('0x10'),_0x3b8099,_0x491c('0x11'),JSON[_0x491c('0x12')](_0x3ea26));if(_0x3ea26[_0x491c('0x13')]){if(_0x3ea26['error']['code']===0x1f4){logger[_0x491c('0x13')](_0x491c('0xe'),_0x3b8099,_0x3ea26[_0x491c('0x13')]['message']);return _0x304834(_0x3ea26[_0x491c('0x13')][_0x491c('0x14')]);}logger[_0x491c('0x13')](_0x491c('0xe'),_0x3b8099,_0x3ea26[_0x491c('0x13')]['message']);return _0x622c22(_0x3ea26[_0x491c('0x13')][_0x491c('0x14')]);}else{logger[_0x491c('0xd')](_0x491c('0xe'),_0x3b8099,'request\x20sent');_0x622c22(_0x3ea26['result'][_0x491c('0x14')]);}})[_0x491c('0x15')](function(_0x437b87){logger[_0x491c('0x13')](_0x491c('0xe'),_0x3b8099,_0x437b87);_0x304834(_0x437b87);});});}exports[_0x491c('0x16')]=function(_0x4d35cd){var _0x9d310d=this;return new Promise(function(_0x4c54b6,_0x12a836){return db[_0x491c('0x17')]['create'](_0x4d35cd[_0x491c('0x18')],{'raw':_0x4d35cd[_0x491c('0x19')]?_0x4d35cd[_0x491c('0x19')][_0x491c('0x1a')]===undefined?!![]:![]:!![]})[_0x491c('0xc')](function(_0x549a46){logger[_0x491c('0xd')](_0x491c('0x16'),_0x4d35cd);logger[_0x491c('0xf')](_0x491c('0x16'),_0x4d35cd,JSON[_0x491c('0x12')](_0x549a46));_0x4c54b6(_0x549a46);})[_0x491c('0x15')](function(_0x29dd41){logger[_0x491c('0x13')]('CreateSquareMessage',_0x29dd41['message'],_0x4d35cd);_0x12a836(_0x9d310d[_0x491c('0x13')](0x1f4,_0x29dd41[_0x491c('0x14')]));});});};
\ No newline at end of file
index 7d5e341..f9ca1b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bec=['../../components/auth/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated','/:id','15s','test','post','create','put','update','delete','destroy','exports','util','path','fs-extra'];(function(_0x1bef1f,_0x93ecb1){var _0x53af7c=function(_0xf1db5e){while(--_0xf1db5e){_0x1bef1f['push'](_0x1bef1f['shift']());}};_0x53af7c(++_0x93ecb1);}(_0x1bec,0xd5));var _0xc1be=function(_0x9f3e89,_0x39b12c){_0x9f3e89=_0x9f3e89-0x0;var _0x12d365=_0x1bec[_0x9f3e89];return _0x12d365;};'use strict';var multer=require('multer');var util=require(_0xc1be('0x0'));var path=require(_0xc1be('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xc1be('0x2'));var auth=require(_0xc1be('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xc1be('0x4'));var controller=require(_0xc1be('0x5'));router[_0xc1be('0x6')]('/',auth[_0xc1be('0x7')](),controller['index']);router['get'](_0xc1be('0x8'),auth['isAuthenticated'](),controller['show']);router[_0xc1be('0x6')]('/:id/test',auth[_0xc1be('0x7')](),timeout(_0xc1be('0x9')),controller[_0xc1be('0xa')]);router[_0xc1be('0xb')]('/',auth['isAuthenticated'](),controller[_0xc1be('0xc')]);router[_0xc1be('0xd')]('/:id',auth[_0xc1be('0x7')](),controller[_0xc1be('0xe')]);router[_0xc1be('0xf')](_0xc1be('0x8'),auth[_0xc1be('0x7')](),controller[_0xc1be('0x10')]);module[_0xc1be('0x11')]=router;
\ No newline at end of file
+var _0x58d3=['post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','/:id/test','15s'];(function(_0x43df39,_0x16f037){var _0x3e673d=function(_0x2dbb5c){while(--_0x2dbb5c){_0x43df39['push'](_0x43df39['shift']());}};_0x3e673d(++_0x16f037);}(_0x58d3,0xa1));var _0x358d=function(_0x1cf3f0,_0x41dce5){_0x1cf3f0=_0x1cf3f0-0x0;var _0x571f60=_0x58d3[_0x1cf3f0];return _0x571f60;};'use strict';var multer=require(_0x358d('0x0'));var util=require(_0x358d('0x1'));var path=require(_0x358d('0x2'));var timeout=require(_0x358d('0x3'));var express=require(_0x358d('0x4'));var router=express[_0x358d('0x5')]();var fs_extra=require(_0x358d('0x6'));var auth=require(_0x358d('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x358d('0x8'));var controller=require('./squareOdbc.controller');router[_0x358d('0x9')]('/',auth[_0x358d('0xa')](),controller[_0x358d('0xb')]);router[_0x358d('0x9')](_0x358d('0xc'),auth[_0x358d('0xa')](),controller['show']);router[_0x358d('0x9')](_0x358d('0xd'),auth[_0x358d('0xa')](),timeout(_0x358d('0xe')),controller['test']);router[_0x358d('0xf')]('/',auth[_0x358d('0xa')](),controller[_0x358d('0x10')]);router[_0x358d('0x11')](_0x358d('0xc'),auth[_0x358d('0xa')](),controller[_0x358d('0x12')]);router[_0x358d('0x13')](_0x358d('0xc'),auth['isAuthenticated'](),controller[_0x358d('0x14')]);module[_0x358d('0x15')]=router;
\ No newline at end of file
index ed936f1..f979ad5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x662f=['exports','STRING','name'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x662f,0x156));var _0xf662=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x662f[_0x2641f9];return _0x585741;};'use strict';var Sequelize=require('sequelize');module[_0xf662('0x0')]={'name':{'type':Sequelize[_0xf662('0x1')],'unique':_0xf662('0x2'),'allowNull':![]},'dsn':{'type':Sequelize[_0xf662('0x1')]},'description':{'type':Sequelize[_0xf662('0x1')]}};
\ No newline at end of file
+var _0x0eab=['STRING','name','sequelize','exports'];(function(_0x401944,_0x42680c){var _0x21a306=function(_0x3c0b35){while(--_0x3c0b35){_0x401944['push'](_0x401944['shift']());}};_0x21a306(++_0x42680c);}(_0x0eab,0xde));var _0xb0ea=function(_0x282669,_0x4b2c00){_0x282669=_0x282669-0x0;var _0x37783c=_0x0eab[_0x282669];return _0x37783c;};'use strict';var Sequelize=require(_0xb0ea('0x0'));module[_0xb0ea('0x1')]={'name':{'type':Sequelize[_0xb0ea('0x2')],'unique':_0xb0ea('0x3'),'allowNull':![]},'dsn':{'type':Sequelize[_0xb0ea('0x2')]},'description':{'type':Sequelize[_0xb0ea('0x2')]}};
\ No newline at end of file
index 72cceab..34639a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b46=['../../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','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','UserProfileResource','error','stack','name','SquareOdbc','rawAttributes','fieldName','type','key','model','map','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','merge','find','create','user','role','UserProfileSection','userProfileId','autoAssociation','body','destroy','test','dsn','odbc','closeSync','eml-format','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis'];(function(_0x54a198,_0x20e8c2){var _0x2f019c=function(_0x910766){while(--_0x910766){_0x54a198['push'](_0x54a198['shift']());}};_0x2f019c(++_0x20e8c2);}(_0x4b46,0x9e));var _0x64b4=function(_0x1ca5e9,_0xf14ec4){_0x1ca5e9=_0x1ca5e9-0x0;var _0x51b89d=_0x4b46[_0x1ca5e9];return _0x51b89d;};'use strict';var emlformat=require(_0x64b4('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x64b4('0x1'));var BPromise=require(_0x64b4('0x2'));var Mustache=require('mustache');var util=require(_0x64b4('0x3'));var path=require('path');var sox=require(_0x64b4('0x4'));var csv=require(_0x64b4('0x5'));var ejs=require(_0x64b4('0x6'));var fs=require('fs');var fs_extra=require(_0x64b4('0x7'));var _=require(_0x64b4('0x8'));var squel=require(_0x64b4('0x9'));var crypto=require('crypto');var jsforce=require(_0x64b4('0xa'));var deskjs=require(_0x64b4('0xb'));var toCsv=require(_0x64b4('0x5'));var querystring=require(_0x64b4('0xc'));var Papa=require('papaparse');var Redis=require(_0x64b4('0xd'));var authService=require(_0x64b4('0xe'));var qs=require(_0x64b4('0xf'));var as=require(_0x64b4('0x10'));var hardwareService=require(_0x64b4('0x11'));var logger=require(_0x64b4('0x12'))('api');var utils=require(_0x64b4('0x13'));var config=require(_0x64b4('0x14'));var licenseUtil=require(_0x64b4('0x15'));var db=require(_0x64b4('0x16'))['db'];function respondWithStatusCode(_0x1a322b,_0x54c826){_0x54c826=_0x54c826||0xcc;return function(_0x47c69c){if(_0x47c69c){return _0x1a322b[_0x64b4('0x17')](_0x54c826);}return _0x1a322b['status'](_0x54c826)[_0x64b4('0x18')]();};}function respondWithResult(_0x38a200,_0x280580){_0x280580=_0x280580||0xc8;return function(_0x3efd0d){if(_0x3efd0d){return _0x38a200[_0x64b4('0x19')](_0x280580)[_0x64b4('0x1a')](_0x3efd0d);}};}function respondWithFilteredResult(_0x5dc2b7,_0x33bb07){return function(_0x4cf6e7){if(_0x4cf6e7){var _0xded014=typeof _0x33bb07[_0x64b4('0x1b')]===_0x64b4('0x1c')&&typeof _0x33bb07[_0x64b4('0x1d')]===_0x64b4('0x1c');var _0x56e5b5=_0x4cf6e7[_0x64b4('0x1e')];var _0x109219=_0xded014?0x0:_0x33bb07[_0x64b4('0x1b')];var _0x51bdb2=_0xded014?_0x4cf6e7['count']:_0x33bb07[_0x64b4('0x1b')]+_0x33bb07[_0x64b4('0x1d')];var _0x250449;if(_0x51bdb2>=_0x56e5b5){_0x51bdb2=_0x56e5b5;_0x250449=0xc8;}else{_0x250449=0xce;}_0x5dc2b7['status'](_0x250449);return _0x5dc2b7[_0x64b4('0x1f')](_0x64b4('0x20'),_0x109219+'-'+_0x51bdb2+'/'+_0x56e5b5)[_0x64b4('0x1a')](_0x4cf6e7);}return null;};}function patchUpdates(_0x383788){return function(_0x47fc85){try{jsonpatch[_0x64b4('0x21')](_0x47fc85,_0x383788,!![]);}catch(_0x874f17){return BPromise[_0x64b4('0x22')](_0x874f17);}return _0x47fc85[_0x64b4('0x23')]();};}function saveUpdates(_0x2a15f7,_0x45f2ff){return function(_0x37674e){if(_0x37674e){return _0x37674e[_0x64b4('0x24')](_0x2a15f7)[_0x64b4('0x25')](function(_0x4daf19){return _0x4daf19;});}return null;};}function removeEntity(_0x3d6728,_0x57db91){return function(_0x52adf9){if(_0x52adf9){return _0x52adf9['destroy']()['then'](function(){var _0x473457=_0x52adf9[_0x64b4('0x26')]({'plain':!![]});var _0x38e9f4='ODBC';return db[_0x64b4('0x27')]['destroy']({'where':{'type':_0x38e9f4,'resourceId':_0x473457['id']}})[_0x64b4('0x25')](function(){return _0x52adf9;});})[_0x64b4('0x25')](function(){_0x3d6728['status'](0xcc)[_0x64b4('0x18')]();});}};}function handleEntityNotFound(_0x53a05f,_0x82789d){return function(_0x2db5fe){if(!_0x2db5fe){_0x53a05f['sendStatus'](0x194);}return _0x2db5fe;};}function handleError(_0x41e6a5,_0x45634d){_0x45634d=_0x45634d||0x1f4;return function(_0x674ef2){logger[_0x64b4('0x28')](_0x674ef2[_0x64b4('0x29')]);if(_0x674ef2[_0x64b4('0x2a')]){delete _0x674ef2[_0x64b4('0x2a')];}_0x41e6a5[_0x64b4('0x19')](_0x45634d)['send'](_0x674ef2);};}exports['index']=function(_0x2da86b,_0x2ba13b){var _0x15edc3={},_0x4a844a={},_0x29853b={'count':0x0,'rows':[]};var _0x299f8a=_['map'](db[_0x64b4('0x2b')][_0x64b4('0x2c')],function(_0x5027c5){return{'name':_0x5027c5[_0x64b4('0x2d')],'type':_0x5027c5[_0x64b4('0x2e')][_0x64b4('0x2f')]};});_0x4a844a[_0x64b4('0x30')]=_[_0x64b4('0x31')](_0x299f8a,_0x64b4('0x2a'));_0x4a844a[_0x64b4('0x32')]=_['keys'](_0x2da86b[_0x64b4('0x32')]);_0x4a844a['filters']=_[_0x64b4('0x33')](_0x4a844a[_0x64b4('0x30')],_0x4a844a[_0x64b4('0x32')]);_0x15edc3['attributes']=_['intersection'](_0x4a844a[_0x64b4('0x30')],qs['fields'](_0x2da86b[_0x64b4('0x32')][_0x64b4('0x34')]));_0x15edc3[_0x64b4('0x35')]=_0x15edc3['attributes'][_0x64b4('0x36')]?_0x15edc3[_0x64b4('0x35')]:_0x4a844a[_0x64b4('0x30')];if(!_0x2da86b['query'][_0x64b4('0x37')](_0x64b4('0x38'))){_0x15edc3[_0x64b4('0x1d')]=qs['limit'](_0x2da86b['query']['limit']);_0x15edc3[_0x64b4('0x1b')]=qs[_0x64b4('0x1b')](_0x2da86b[_0x64b4('0x32')][_0x64b4('0x1b')]);}_0x15edc3[_0x64b4('0x39')]=qs['sort'](_0x2da86b[_0x64b4('0x32')][_0x64b4('0x3a')]);_0x15edc3[_0x64b4('0x3b')]=qs[_0x64b4('0x3c')](_[_0x64b4('0x3d')](_0x2da86b[_0x64b4('0x32')],_0x4a844a[_0x64b4('0x3c')]),_0x299f8a);if(_0x2da86b[_0x64b4('0x32')][_0x64b4('0x3e')]){_0x15edc3[_0x64b4('0x3b')]=_['merge'](_0x15edc3['where'],{'$or':_[_0x64b4('0x31')](_0x299f8a,function(_0x245202){if(_0x245202[_0x64b4('0x2e')]!=='VIRTUAL'){var _0x5dcfac={};_0x5dcfac[_0x245202[_0x64b4('0x2a')]]={'$like':'%'+_0x2da86b[_0x64b4('0x32')][_0x64b4('0x3e')]+'%'};return _0x5dcfac;}})});}_0x15edc3=_['merge']({},_0x15edc3,_0x2da86b[_0x64b4('0x3f')]);var _0x38d457={'where':_0x15edc3[_0x64b4('0x3b')]};return db[_0x64b4('0x2b')]['count'](_0x38d457)[_0x64b4('0x25')](function(_0x524e24){_0x29853b[_0x64b4('0x1e')]=_0x524e24;if(_0x2da86b[_0x64b4('0x32')][_0x64b4('0x40')]){_0x15edc3[_0x64b4('0x41')]=[{'all':!![]}];}return db[_0x64b4('0x2b')][_0x64b4('0x42')](_0x15edc3);})[_0x64b4('0x25')](function(_0x4b5866){_0x29853b[_0x64b4('0x43')]=_0x4b5866;return _0x29853b;})[_0x64b4('0x25')](respondWithFilteredResult(_0x2ba13b,_0x15edc3))[_0x64b4('0x44')](handleError(_0x2ba13b,null));};exports[_0x64b4('0x45')]=function(_0x34aa15,_0x4e6c31){var _0x3129a6={'raw':!![],'where':{'id':_0x34aa15[_0x64b4('0x46')]['id']}},_0x554d79={};_0x554d79[_0x64b4('0x30')]=_[_0x64b4('0x47')](db[_0x64b4('0x2b')][_0x64b4('0x2c')]);_0x554d79['query']=_['keys'](_0x34aa15['query']);_0x554d79[_0x64b4('0x3c')]=_[_0x64b4('0x33')](_0x554d79[_0x64b4('0x30')],_0x554d79['query']);_0x3129a6[_0x64b4('0x35')]=_[_0x64b4('0x33')](_0x554d79[_0x64b4('0x30')],qs[_0x64b4('0x34')](_0x34aa15[_0x64b4('0x32')]['fields']));_0x3129a6[_0x64b4('0x35')]=_0x3129a6[_0x64b4('0x35')]['length']?_0x3129a6[_0x64b4('0x35')]:_0x554d79[_0x64b4('0x30')];if(_0x34aa15['query']['includeAll']){_0x3129a6['include']=[{'all':!![]}];}_0x3129a6=_[_0x64b4('0x48')]({},_0x3129a6,_0x34aa15[_0x64b4('0x3f')]);return db[_0x64b4('0x2b')][_0x64b4('0x49')](_0x3129a6)[_0x64b4('0x25')](handleEntityNotFound(_0x4e6c31,null))[_0x64b4('0x25')](respondWithResult(_0x4e6c31,null))[_0x64b4('0x44')](handleError(_0x4e6c31,null));};exports[_0x64b4('0x4a')]=function(_0x28f210,_0x5917e8){return db['SquareOdbc'][_0x64b4('0x4a')](_0x28f210['body'],{})['then'](function(_0x457a75){var _0x257c2a=_0x28f210[_0x64b4('0x4b')]['get']({'plain':!![]});if(!_0x257c2a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x257c2a[_0x64b4('0x4c')]===_0x64b4('0x4b')){var _0x532de9=_0x457a75[_0x64b4('0x26')]({'plain':!![]});var _0x4ae803='ODBC';return db[_0x64b4('0x4d')]['find']({'where':{'name':_0x4ae803,'userProfileId':_0x257c2a[_0x64b4('0x4e')]},'raw':!![]})[_0x64b4('0x25')](function(_0x184753){if(_0x184753&&_0x184753[_0x64b4('0x4f')]===0x0){return db[_0x64b4('0x27')][_0x64b4('0x4a')]({'name':_0x532de9[_0x64b4('0x2a')],'resourceId':_0x532de9['id'],'type':_0x184753[_0x64b4('0x2a')],'sectionId':_0x184753['id']},{})[_0x64b4('0x25')](function(){return _0x457a75;});}else{return _0x457a75;}})[_0x64b4('0x44')](function(_0x44f084){logger[_0x64b4('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x44f084);throw _0x44f084;});}return _0x457a75;})['then'](respondWithResult(_0x5917e8,0xc9))['catch'](handleError(_0x5917e8,null));};exports[_0x64b4('0x24')]=function(_0x4e0e83,_0x56b985){if(_0x4e0e83[_0x64b4('0x50')]['id']){delete _0x4e0e83[_0x64b4('0x50')]['id'];}return db[_0x64b4('0x2b')]['find']({'where':{'id':_0x4e0e83[_0x64b4('0x46')]['id']}})[_0x64b4('0x25')](handleEntityNotFound(_0x56b985,null))['then'](saveUpdates(_0x4e0e83[_0x64b4('0x50')],null))['then'](respondWithResult(_0x56b985,null))['catch'](handleError(_0x56b985,null));};exports[_0x64b4('0x51')]=function(_0x132196,_0x5a1994){return db[_0x64b4('0x2b')][_0x64b4('0x49')]({'where':{'id':_0x132196['params']['id']}})['then'](handleEntityNotFound(_0x5a1994,null))[_0x64b4('0x25')](removeEntity(_0x5a1994,null))[_0x64b4('0x44')](handleError(_0x5a1994,null));};exports[_0x64b4('0x52')]=function(_0x396b26,_0x13a7d5,_0x130b68){var _0xf2d44d;return db[_0x64b4('0x2b')][_0x64b4('0x49')]({'where':{'id':_0x396b26[_0x64b4('0x46')]['id']},'attributes':['id',_0x64b4('0x53')]})['then'](handleEntityNotFound(_0x13a7d5,null))[_0x64b4('0x25')](function(_0x3c9d42){if(_0x3c9d42){var _0x15741a=require(_0x64b4('0x54'))();_0x15741a['openSync'](_0x3c9d42[_0x64b4('0x53')]);_0x15741a[_0x64b4('0x55')]();return _0x3c9d42;}})[_0x64b4('0x25')](respondWithResult(_0x13a7d5,null))['catch'](handleError(_0x13a7d5,null));};
\ No newline at end of file
+var _0x30e6=['../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','save','update','destroy','get','ODBC','UserProfileResource','then','error','stack','name','send','index','map','SquareOdbc','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows','params','rawAttributes','include','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','dsn','odbc','openSync','closeSync','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api'];(function(_0x4fe4d2,_0x7995c4){var _0x56541d=function(_0x3542f5){while(--_0x3542f5){_0x4fe4d2['push'](_0x4fe4d2['shift']());}};_0x56541d(++_0x7995c4);}(_0x30e6,0xef));var _0x630e=function(_0x1e5005,_0x574bfa){_0x1e5005=_0x1e5005-0x0;var _0x1ff246=_0x30e6[_0x1e5005];return _0x1ff246;};'use strict';var emlformat=require(_0x630e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x630e('0x1'));var jsonpatch=require(_0x630e('0x2'));var rp=require(_0x630e('0x3'));var moment=require(_0x630e('0x4'));var BPromise=require(_0x630e('0x5'));var Mustache=require(_0x630e('0x6'));var util=require(_0x630e('0x7'));var path=require('path');var sox=require(_0x630e('0x8'));var csv=require(_0x630e('0x9'));var ejs=require(_0x630e('0xa'));var fs=require('fs');var fs_extra=require(_0x630e('0xb'));var _=require(_0x630e('0xc'));var squel=require(_0x630e('0xd'));var crypto=require(_0x630e('0xe'));var jsforce=require(_0x630e('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x630e('0x9'));var querystring=require(_0x630e('0x10'));var Papa=require(_0x630e('0x11'));var Redis=require('ioredis');var authService=require(_0x630e('0x12'));var qs=require(_0x630e('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x630e('0x14'));var logger=require('../../config/logger')(_0x630e('0x15'));var utils=require('../../config/utils');var config=require(_0x630e('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x630e('0x17'))['db'];function respondWithStatusCode(_0x3739bc,_0x2b31bc){_0x2b31bc=_0x2b31bc||0xcc;return function(_0x25be6e){if(_0x25be6e){return _0x3739bc[_0x630e('0x18')](_0x2b31bc);}return _0x3739bc[_0x630e('0x19')](_0x2b31bc)[_0x630e('0x1a')]();};}function respondWithResult(_0x5e155d,_0x433e13){_0x433e13=_0x433e13||0xc8;return function(_0x3dada7){if(_0x3dada7){return _0x5e155d['status'](_0x433e13)[_0x630e('0x1b')](_0x3dada7);}};}function respondWithFilteredResult(_0x52531f,_0x1b7dfa){return function(_0x4d7d4b){if(_0x4d7d4b){var _0x55a759=typeof _0x1b7dfa['offset']===_0x630e('0x1c')&&typeof _0x1b7dfa[_0x630e('0x1d')]===_0x630e('0x1c');var _0x1de56c=_0x4d7d4b[_0x630e('0x1e')];var _0x4e712d=_0x55a759?0x0:_0x1b7dfa[_0x630e('0x1f')];var _0x54e322=_0x55a759?_0x4d7d4b[_0x630e('0x1e')]:_0x1b7dfa[_0x630e('0x1f')]+_0x1b7dfa[_0x630e('0x1d')];var _0x24f5e0;if(_0x54e322>=_0x1de56c){_0x54e322=_0x1de56c;_0x24f5e0=0xc8;}else{_0x24f5e0=0xce;}_0x52531f[_0x630e('0x19')](_0x24f5e0);return _0x52531f[_0x630e('0x20')]('Content-Range',_0x4e712d+'-'+_0x54e322+'/'+_0x1de56c)['json'](_0x4d7d4b);}return null;};}function patchUpdates(_0x1efaf3){return function(_0x4005b9){try{jsonpatch[_0x630e('0x21')](_0x4005b9,_0x1efaf3,!![]);}catch(_0x45f4b9){return BPromise['reject'](_0x45f4b9);}return _0x4005b9[_0x630e('0x22')]();};}function saveUpdates(_0x174936,_0x22c245){return function(_0x5e5df4){if(_0x5e5df4){return _0x5e5df4[_0x630e('0x23')](_0x174936)['then'](function(_0x2e753a){return _0x2e753a;});}return null;};}function removeEntity(_0x44389e,_0x1beae8){return function(_0x2f2170){if(_0x2f2170){return _0x2f2170[_0x630e('0x24')]()['then'](function(){var _0x41acb5=_0x2f2170[_0x630e('0x25')]({'plain':!![]});var _0x41a59a=_0x630e('0x26');return db[_0x630e('0x27')][_0x630e('0x24')]({'where':{'type':_0x41a59a,'resourceId':_0x41acb5['id']}})['then'](function(){return _0x2f2170;});})[_0x630e('0x28')](function(){_0x44389e['status'](0xcc)[_0x630e('0x1a')]();});}};}function handleEntityNotFound(_0xf5ebbf,_0x4081da){return function(_0x201628){if(!_0x201628){_0xf5ebbf[_0x630e('0x18')](0x194);}return _0x201628;};}function handleError(_0x53bc2d,_0xd07ad3){_0xd07ad3=_0xd07ad3||0x1f4;return function(_0xc135fd){logger[_0x630e('0x29')](_0xc135fd[_0x630e('0x2a')]);if(_0xc135fd['name']){delete _0xc135fd[_0x630e('0x2b')];}_0x53bc2d[_0x630e('0x19')](_0xd07ad3)[_0x630e('0x2c')](_0xc135fd);};}exports[_0x630e('0x2d')]=function(_0xe77b25,_0x2bbbc1){var _0x20a897={},_0x14a8aa={},_0x50c2c6={'count':0x0,'rows':[]};var _0x59295e=_[_0x630e('0x2e')](db[_0x630e('0x2f')]['rawAttributes'],function(_0x25c764){return{'name':_0x25c764['fieldName'],'type':_0x25c764[_0x630e('0x30')]['key']};});_0x14a8aa[_0x630e('0x31')]=_['map'](_0x59295e,'name');_0x14a8aa['query']=_[_0x630e('0x32')](_0xe77b25[_0x630e('0x33')]);_0x14a8aa[_0x630e('0x34')]=_[_0x630e('0x35')](_0x14a8aa[_0x630e('0x31')],_0x14a8aa[_0x630e('0x33')]);_0x20a897[_0x630e('0x36')]=_[_0x630e('0x35')](_0x14a8aa['model'],qs[_0x630e('0x37')](_0xe77b25[_0x630e('0x33')][_0x630e('0x37')]));_0x20a897[_0x630e('0x36')]=_0x20a897['attributes'][_0x630e('0x38')]?_0x20a897[_0x630e('0x36')]:_0x14a8aa[_0x630e('0x31')];if(!_0xe77b25[_0x630e('0x33')][_0x630e('0x39')]('nolimit')){_0x20a897[_0x630e('0x1d')]=qs[_0x630e('0x1d')](_0xe77b25[_0x630e('0x33')]['limit']);_0x20a897['offset']=qs[_0x630e('0x1f')](_0xe77b25['query'][_0x630e('0x1f')]);}_0x20a897[_0x630e('0x3a')]=qs[_0x630e('0x3b')](_0xe77b25[_0x630e('0x33')]['sort']);_0x20a897[_0x630e('0x3c')]=qs[_0x630e('0x34')](_[_0x630e('0x3d')](_0xe77b25[_0x630e('0x33')],_0x14a8aa['filters']),_0x59295e);if(_0xe77b25[_0x630e('0x33')]['filter']){_0x20a897[_0x630e('0x3c')]=_[_0x630e('0x3e')](_0x20a897['where'],{'$or':_['map'](_0x59295e,function(_0x2b8f37){if(_0x2b8f37['type']!==_0x630e('0x3f')){var _0x181502={};_0x181502[_0x2b8f37[_0x630e('0x2b')]]={'$like':'%'+_0xe77b25[_0x630e('0x33')][_0x630e('0x40')]+'%'};return _0x181502;}})});}_0x20a897=_[_0x630e('0x3e')]({},_0x20a897,_0xe77b25[_0x630e('0x41')]);var _0x1ca320={'where':_0x20a897[_0x630e('0x3c')]};return db[_0x630e('0x2f')][_0x630e('0x1e')](_0x1ca320)[_0x630e('0x28')](function(_0x13c6b1){_0x50c2c6[_0x630e('0x1e')]=_0x13c6b1;if(_0xe77b25[_0x630e('0x33')][_0x630e('0x42')]){_0x20a897['include']=[{'all':!![]}];}return db[_0x630e('0x2f')][_0x630e('0x43')](_0x20a897);})[_0x630e('0x28')](function(_0x15f033){_0x50c2c6[_0x630e('0x44')]=_0x15f033;return _0x50c2c6;})[_0x630e('0x28')](respondWithFilteredResult(_0x2bbbc1,_0x20a897))['catch'](handleError(_0x2bbbc1,null));};exports['show']=function(_0x7aa2f2,_0x14ffe8){var _0x4791df={'raw':!![],'where':{'id':_0x7aa2f2[_0x630e('0x45')]['id']}},_0x496997={};_0x496997['model']=_['keys'](db[_0x630e('0x2f')][_0x630e('0x46')]);_0x496997[_0x630e('0x33')]=_[_0x630e('0x32')](_0x7aa2f2[_0x630e('0x33')]);_0x496997[_0x630e('0x34')]=_['intersection'](_0x496997['model'],_0x496997[_0x630e('0x33')]);_0x4791df[_0x630e('0x36')]=_[_0x630e('0x35')](_0x496997['model'],qs[_0x630e('0x37')](_0x7aa2f2[_0x630e('0x33')]['fields']));_0x4791df[_0x630e('0x36')]=_0x4791df['attributes'][_0x630e('0x38')]?_0x4791df[_0x630e('0x36')]:_0x496997[_0x630e('0x31')];if(_0x7aa2f2[_0x630e('0x33')]['includeAll']){_0x4791df[_0x630e('0x47')]=[{'all':!![]}];}_0x4791df=_[_0x630e('0x3e')]({},_0x4791df,_0x7aa2f2[_0x630e('0x41')]);return db[_0x630e('0x2f')][_0x630e('0x48')](_0x4791df)[_0x630e('0x28')](handleEntityNotFound(_0x14ffe8,null))[_0x630e('0x28')](respondWithResult(_0x14ffe8,null))[_0x630e('0x49')](handleError(_0x14ffe8,null));};exports['create']=function(_0x16917f,_0x3c2dae){return db[_0x630e('0x2f')][_0x630e('0x4a')](_0x16917f[_0x630e('0x4b')],{})[_0x630e('0x28')](function(_0x28672c){var _0x22353b=_0x16917f[_0x630e('0x4c')]['get']({'plain':!![]});if(!_0x22353b)throw new Error(_0x630e('0x4d'));if(_0x22353b[_0x630e('0x4e')]===_0x630e('0x4c')){var _0x432aee=_0x28672c[_0x630e('0x25')]({'plain':!![]});var _0x27cedb='ODBC';return db[_0x630e('0x4f')][_0x630e('0x48')]({'where':{'name':_0x27cedb,'userProfileId':_0x22353b[_0x630e('0x50')]},'raw':!![]})[_0x630e('0x28')](function(_0x1af2db){if(_0x1af2db&&_0x1af2db[_0x630e('0x51')]===0x0){return db['UserProfileResource']['create']({'name':_0x432aee[_0x630e('0x2b')],'resourceId':_0x432aee['id'],'type':_0x1af2db['name'],'sectionId':_0x1af2db['id']},{})[_0x630e('0x28')](function(){return _0x28672c;});}else{return _0x28672c;}})[_0x630e('0x49')](function(_0x3da614){logger[_0x630e('0x29')](_0x630e('0x52'),_0x3da614);throw _0x3da614;});}return _0x28672c;})[_0x630e('0x28')](respondWithResult(_0x3c2dae,0xc9))[_0x630e('0x49')](handleError(_0x3c2dae,null));};exports[_0x630e('0x23')]=function(_0x5b8e3a,_0x2fda8b){if(_0x5b8e3a[_0x630e('0x4b')]['id']){delete _0x5b8e3a[_0x630e('0x4b')]['id'];}return db[_0x630e('0x2f')][_0x630e('0x48')]({'where':{'id':_0x5b8e3a['params']['id']}})[_0x630e('0x28')](handleEntityNotFound(_0x2fda8b,null))['then'](saveUpdates(_0x5b8e3a[_0x630e('0x4b')],null))[_0x630e('0x28')](respondWithResult(_0x2fda8b,null))[_0x630e('0x49')](handleError(_0x2fda8b,null));};exports[_0x630e('0x24')]=function(_0x4fa8d1,_0x340ef1){return db[_0x630e('0x2f')][_0x630e('0x48')]({'where':{'id':_0x4fa8d1[_0x630e('0x45')]['id']}})['then'](handleEntityNotFound(_0x340ef1,null))[_0x630e('0x28')](removeEntity(_0x340ef1,null))[_0x630e('0x49')](handleError(_0x340ef1,null));};exports['test']=function(_0x15256e,_0x588cb0,_0x58cf44){var _0x76ca42;return db[_0x630e('0x2f')][_0x630e('0x48')]({'where':{'id':_0x15256e[_0x630e('0x45')]['id']},'attributes':['id',_0x630e('0x53')]})[_0x630e('0x28')](handleEntityNotFound(_0x588cb0,null))[_0x630e('0x28')](function(_0x5a4c95){if(_0x5a4c95){var _0x1fd281=require(_0x630e('0x54'))();_0x1fd281[_0x630e('0x55')](_0x5a4c95[_0x630e('0x53')]);_0x1fd281[_0x630e('0x56')]();return _0x5a4c95;}})[_0x630e('0x28')](respondWithResult(_0x588cb0,null))[_0x630e('0x49')](handleError(_0x588cb0,null));};
\ No newline at end of file
index 9c561d0..09cddb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a6f=['path','rimraf','../../config/environment','exports','SquareOdbc','square_odbc','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x227b06,_0x40c8fb){var _0x56efef=function(_0x344e51){while(--_0x344e51){_0x227b06['push'](_0x227b06['shift']());}};_0x56efef(++_0x40c8fb);}(_0x0a6f,0xea));var _0xf0a6=function(_0x2977e8,_0x257939){_0x2977e8=_0x2977e8-0x0;var _0x9da807=_0x0a6f[_0x2977e8];return _0x9da807;};'use strict';var _=require('lodash');var util=require(_0xf0a6('0x0'));var logger=require(_0xf0a6('0x1'))(_0xf0a6('0x2'));var moment=require(_0xf0a6('0x3'));var BPromise=require(_0xf0a6('0x4'));var rp=require(_0xf0a6('0x5'));var fs=require('fs');var path=require(_0xf0a6('0x6'));var rimraf=require(_0xf0a6('0x7'));var config=require(_0xf0a6('0x8'));var attributes=require('./squareOdbc.attributes');module[_0xf0a6('0x9')]=function(_0x22530b,_0x1703f2){return _0x22530b['define'](_0xf0a6('0xa'),attributes,{'tableName':_0xf0a6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x75bb=['SquareOdbc','square_odbc','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareOdbc.attributes','exports','define'];(function(_0x59d0cc,_0xa7c52b){var _0x2ae79f=function(_0x33042e){while(--_0x33042e){_0x59d0cc['push'](_0x59d0cc['shift']());}};_0x2ae79f(++_0xa7c52b);}(_0x75bb,0x106));var _0xb75b=function(_0x59956c,_0x4b5fbf){_0x59956c=_0x59956c-0x0;var _0x3b9ba8=_0x75bb[_0x59956c];return _0x3b9ba8;};'use strict';var _=require(_0xb75b('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xb75b('0x1'));var moment=require(_0xb75b('0x2'));var BPromise=require(_0xb75b('0x3'));var rp=require(_0xb75b('0x4'));var fs=require('fs');var path=require(_0xb75b('0x5'));var rimraf=require(_0xb75b('0x6'));var config=require(_0xb75b('0x7'));var attributes=require(_0xb75b('0x8'));module[_0xb75b('0x9')]=function(_0x4bca61,_0x477e5f){return _0x4bca61[_0xb75b('0xa')](_0xb75b('0xb'),attributes,{'tableName':_0xb75b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 00ae7bf..510e042 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5072=['../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','ShowSquareOdbc','SquareOdbc','find','options','raw','attributes','include','model','map','lodash','randomstring'];(function(_0x5a5505,_0x27fc49){var _0x383f4d=function(_0x3180ab){while(--_0x3180ab){_0x5a5505['push'](_0x5a5505['shift']());}};_0x383f4d(++_0x27fc49);}(_0x5072,0x103));var _0x2507=function(_0x2912b9,_0x55e6e1){_0x2912b9=_0x2912b9-0x0;var _0x154da8=_0x5072[_0x2912b9];return _0x154da8;};'use strict';var _=require(_0x2507('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2507('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2507('0x2'));var logger=require(_0x2507('0x3'))(_0x2507('0x4'));var config=require('../../config/environment');var jayson=require(_0x2507('0x5'));var client=jayson['client'][_0x2507('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x22196e,_0x57c5bc,_0x4c4324){return new BPromise(function(_0x1a6e5b,_0x1ae2a9){return client[_0x2507('0x7')](_0x22196e,_0x4c4324)[_0x2507('0x8')](function(_0x238b9e){logger['info'](_0x2507('0x9'),_0x57c5bc,_0x2507('0xa'));logger[_0x2507('0xb')](_0x2507('0xc'),_0x57c5bc,_0x2507('0xa'),JSON[_0x2507('0xd')](_0x238b9e));if(_0x238b9e[_0x2507('0xe')]){if(_0x238b9e['error'][_0x2507('0xf')]===0x1f4){logger['error'](_0x2507('0x9'),_0x57c5bc,_0x238b9e[_0x2507('0xe')][_0x2507('0x10')]);return _0x1ae2a9(_0x238b9e[_0x2507('0xe')][_0x2507('0x10')]);}logger[_0x2507('0xe')](_0x2507('0x9'),_0x57c5bc,_0x238b9e[_0x2507('0xe')][_0x2507('0x10')]);return _0x1a6e5b(_0x238b9e[_0x2507('0xe')][_0x2507('0x10')]);}else{logger[_0x2507('0x11')](_0x2507('0x9'),_0x57c5bc,_0x2507('0xa'));_0x1a6e5b(_0x238b9e[_0x2507('0x12')]['message']);}})[_0x2507('0x13')](function(_0xc53150){logger[_0x2507('0xe')](_0x2507('0x9'),_0x57c5bc,_0xc53150);_0x1ae2a9(_0xc53150);});});}exports[_0x2507('0x14')]=function(_0x2a64c8){var _0x1a451e=this;return new Promise(function(_0x488e8e,_0x53263d){return db[_0x2507('0x15')][_0x2507('0x16')]({'raw':_0x2a64c8['options']?_0x2a64c8[_0x2507('0x17')][_0x2507('0x18')]===undefined?!![]:![]:!![],'where':_0x2a64c8[_0x2507('0x17')]?_0x2a64c8['options']['where']||null:null,'attributes':_0x2a64c8['options']?_0x2a64c8[_0x2507('0x17')][_0x2507('0x19')]||null:null,'include':_0x2a64c8['options']?_0x2a64c8['options'][_0x2507('0x1a')]?_['map'](_0x2a64c8[_0x2507('0x17')][_0x2507('0x1a')],function(_0x3f95c6){return{'model':db[_0x3f95c6[_0x2507('0x1b')]],'as':_0x3f95c6['as'],'attributes':_0x3f95c6['attributes'],'include':_0x3f95c6['include']?_['map'](_0x3f95c6[_0x2507('0x1a')],function(_0x5bd445){return{'model':db[_0x5bd445[_0x2507('0x1b')]],'as':_0x5bd445['as'],'attributes':_0x5bd445[_0x2507('0x19')],'include':_0x5bd445[_0x2507('0x1a')]?_[_0x2507('0x1c')](_0x5bd445[_0x2507('0x1a')],function(_0xcc1108){return{'model':db[_0xcc1108[_0x2507('0x1b')]],'as':_0xcc1108['as'],'attributes':_0xcc1108[_0x2507('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4ac17d){logger[_0x2507('0x11')](_0x2507('0x14'),_0x2a64c8);logger['debug'](_0x2507('0x14'),_0x2a64c8,JSON[_0x2507('0xd')](_0x4ac17d));_0x488e8e(_0x4ac17d);})[_0x2507('0x13')](function(_0x3ef69){logger['error'](_0x2507('0x14'),_0x3ef69[_0x2507('0x10')],_0x2a64c8);_0x53263d(_0x1a451e[_0x2507('0xe')](0x1f4,_0x3ef69[_0x2507('0x10')]));});});};
\ No newline at end of file
+var _0xf46d=['../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareOdbc,\x20%s,\x20%s','message','result','ShowSquareOdbc','SquareOdbc','find','options','raw','where','attributes','include','map','model','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc'];(function(_0x484852,_0x5c931e){var _0x9d5fe4=function(_0x2c756f){while(--_0x2c756f){_0x484852['push'](_0x484852['shift']());}};_0x9d5fe4(++_0x5c931e);}(_0xf46d,0x191));var _0xdf46=function(_0x374ada,_0x27b3a5){_0x374ada=_0x374ada-0x0;var _0x449ed8=_0xf46d[_0x374ada];return _0x449ed8;};'use strict';var _=require(_0xdf46('0x0'));var util=require(_0xdf46('0x1'));var moment=require(_0xdf46('0x2'));var BPromise=require(_0xdf46('0x3'));var rs=require(_0xdf46('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdf46('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xdf46('0x6'));var config=require(_0xdf46('0x7'));var jayson=require(_0xdf46('0x8'));var client=jayson[_0xdf46('0x9')][_0xdf46('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x588bad,_0x6270b3,_0x234726){return new BPromise(function(_0x1f4c01,_0xea6332){return client[_0xdf46('0xb')](_0x588bad,_0x234726)[_0xdf46('0xc')](function(_0x44192b){logger[_0xdf46('0xd')]('SquareOdbc,\x20%s,\x20%s',_0x6270b3,_0xdf46('0xe'));logger[_0xdf46('0xf')](_0xdf46('0x10'),_0x6270b3,_0xdf46('0xe'),JSON[_0xdf46('0x11')](_0x44192b));if(_0x44192b['error']){if(_0x44192b[_0xdf46('0x12')][_0xdf46('0x13')]===0x1f4){logger[_0xdf46('0x12')](_0xdf46('0x14'),_0x6270b3,_0x44192b[_0xdf46('0x12')][_0xdf46('0x15')]);return _0xea6332(_0x44192b[_0xdf46('0x12')][_0xdf46('0x15')]);}logger['error']('SquareOdbc,\x20%s,\x20%s',_0x6270b3,_0x44192b[_0xdf46('0x12')]['message']);return _0x1f4c01(_0x44192b[_0xdf46('0x12')][_0xdf46('0x15')]);}else{logger['info']('SquareOdbc,\x20%s,\x20%s',_0x6270b3,_0xdf46('0xe'));_0x1f4c01(_0x44192b[_0xdf46('0x16')][_0xdf46('0x15')]);}})['catch'](function(_0x589ae5){logger[_0xdf46('0x12')]('SquareOdbc,\x20%s,\x20%s',_0x6270b3,_0x589ae5);_0xea6332(_0x589ae5);});});}exports[_0xdf46('0x17')]=function(_0xf45fb6){var _0x108f31=this;return new Promise(function(_0x3c266b,_0x5ed7e0){return db[_0xdf46('0x18')][_0xdf46('0x19')]({'raw':_0xf45fb6['options']?_0xf45fb6[_0xdf46('0x1a')][_0xdf46('0x1b')]===undefined?!![]:![]:!![],'where':_0xf45fb6[_0xdf46('0x1a')]?_0xf45fb6['options'][_0xdf46('0x1c')]||null:null,'attributes':_0xf45fb6[_0xdf46('0x1a')]?_0xf45fb6[_0xdf46('0x1a')][_0xdf46('0x1d')]||null:null,'include':_0xf45fb6[_0xdf46('0x1a')]?_0xf45fb6[_0xdf46('0x1a')][_0xdf46('0x1e')]?_[_0xdf46('0x1f')](_0xf45fb6[_0xdf46('0x1a')]['include'],function(_0x2abb71){return{'model':db[_0x2abb71[_0xdf46('0x20')]],'as':_0x2abb71['as'],'attributes':_0x2abb71[_0xdf46('0x1d')],'include':_0x2abb71[_0xdf46('0x1e')]?_[_0xdf46('0x1f')](_0x2abb71[_0xdf46('0x1e')],function(_0x5d015a){return{'model':db[_0x5d015a['model']],'as':_0x5d015a['as'],'attributes':_0x5d015a[_0xdf46('0x1d')],'include':_0x5d015a[_0xdf46('0x1e')]?_[_0xdf46('0x1f')](_0x5d015a[_0xdf46('0x1e')],function(_0x2c9019){return{'model':db[_0x2c9019[_0xdf46('0x20')]],'as':_0x2c9019['as'],'attributes':_0x2c9019['attributes']};}):[]};}):[]};}):[]:[]})[_0xdf46('0xc')](function(_0x4125cc){logger[_0xdf46('0xd')](_0xdf46('0x17'),_0xf45fb6);logger[_0xdf46('0xf')]('ShowSquareOdbc',_0xf45fb6,JSON['stringify'](_0x4125cc));_0x3c266b(_0x4125cc);})[_0xdf46('0x21')](function(_0x3931df){logger[_0xdf46('0x12')]('ShowSquareOdbc',_0x3931df[_0xdf46('0x15')],_0xf45fb6);_0x5ed7e0(_0x108f31['error'](0x1f4,_0x3931df[_0xdf46('0x15')]));});});};
\ No newline at end of file
index 585c805..bc87251 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4813=['multer','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated','index','show','/:id/users','getUsers','post','create','addUsers','put','/:id','update','destroy','delete','exports'];(function(_0x5cc7fb,_0x306aea){var _0x449f75=function(_0xb5b19f){while(--_0xb5b19f){_0x5cc7fb['push'](_0x5cc7fb['shift']());}};_0x449f75(++_0x306aea);}(_0x4813,0xdc));var _0x3481=function(_0x25e2c0,_0x556825){_0x25e2c0=_0x25e2c0-0x0;var _0x431dc2=_0x4813[_0x25e2c0];return _0x431dc2;};'use strict';var multer=require(_0x3481('0x0'));var util=require('util');var path=require(_0x3481('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x3481('0x2')]();var fs_extra=require(_0x3481('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x3481('0x4'));var config=require(_0x3481('0x5'));var controller=require(_0x3481('0x6'));router[_0x3481('0x7')]('/',auth[_0x3481('0x8')](),controller[_0x3481('0x9')]);router[_0x3481('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x3481('0xa')]);router['get'](_0x3481('0xb'),auth[_0x3481('0x8')](),controller[_0x3481('0xc')]);router[_0x3481('0xd')]('/',auth[_0x3481('0x8')](),controller[_0x3481('0xe')]);router[_0x3481('0xd')]('/:id/users',auth['isAuthenticated'](),controller[_0x3481('0xf')]);router[_0x3481('0x10')](_0x3481('0x11'),auth[_0x3481('0x8')](),controller[_0x3481('0x12')]);router['delete'](_0x3481('0x11'),auth[_0x3481('0x8')](),controller[_0x3481('0x13')]);router[_0x3481('0x14')](_0x3481('0xb'),auth['isAuthenticated'](),controller['removeUsers']);module[_0x3481('0x15')]=router;
\ No newline at end of file
+var _0x1fbb=['create','addUsers','put','/:id','update','delete','destroy','removeUsers','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','show','/:id/users','isAuthenticated','getUsers','post'];(function(_0x5b0f24,_0x3439ff){var _0x315d8c=function(_0x1651d8){while(--_0x1651d8){_0x5b0f24['push'](_0x5b0f24['shift']());}};_0x315d8c(++_0x3439ff);}(_0x1fbb,0x99));var _0xb1fb=function(_0x401be5,_0x30ff0d){_0x401be5=_0x401be5-0x0;var _0x563361=_0x1fbb[_0x401be5];return _0x563361;};'use strict';var multer=require(_0xb1fb('0x0'));var util=require(_0xb1fb('0x1'));var path=require(_0xb1fb('0x2'));var timeout=require(_0xb1fb('0x3'));var express=require('express');var router=express[_0xb1fb('0x4')]();var fs_extra=require(_0xb1fb('0x5'));var auth=require(_0xb1fb('0x6'));var interaction=require(_0xb1fb('0x7'));var config=require(_0xb1fb('0x8'));var controller=require('./squareProject.controller');router[_0xb1fb('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xb1fb('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xb1fb('0xa')]);router[_0xb1fb('0x9')](_0xb1fb('0xb'),auth[_0xb1fb('0xc')](),controller[_0xb1fb('0xd')]);router[_0xb1fb('0xe')]('/',auth[_0xb1fb('0xc')](),controller[_0xb1fb('0xf')]);router['post'](_0xb1fb('0xb'),auth['isAuthenticated'](),controller[_0xb1fb('0x10')]);router[_0xb1fb('0x11')](_0xb1fb('0x12'),auth['isAuthenticated'](),controller[_0xb1fb('0x13')]);router[_0xb1fb('0x14')](_0xb1fb('0x12'),auth[_0xb1fb('0xc')](),controller[_0xb1fb('0x15')]);router[_0xb1fb('0x14')](_0xb1fb('0xb'),auth['isAuthenticated'](),controller[_0xb1fb('0x16')]);module[_0xb1fb('0x17')]=router;
\ No newline at end of file
index ecd0b5c..925d410 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c9c=['long','preproduction','getDataValue','utf8','production','toString','DATE','sequelize','STRING','TEXT','BLOB'];(function(_0x4d8521,_0x369f71){var _0x2dd57d=function(_0x1ad7a0){while(--_0x1ad7a0){_0x4d8521['push'](_0x4d8521['shift']());}};_0x2dd57d(++_0x369f71);}(_0x8c9c,0xf9));var _0xc8c9=function(_0x313cc4,_0x5ab68f){_0x313cc4=_0x313cc4-0x0;var _0xd252dd=_0x8c9c[_0x313cc4];return _0xd252dd;};'use strict';var Sequelize=require(_0xc8c9('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0xc8c9('0x1')]},'notes':{'type':Sequelize[_0xc8c9('0x2')]},'preproduction':{'type':Sequelize[_0xc8c9('0x3')](_0xc8c9('0x4')),'get':function(){if(this['getDataValue'](_0xc8c9('0x5'))){return this[_0xc8c9('0x6')](_0xc8c9('0x5'))['toString'](_0xc8c9('0x7'));}}},'production':{'type':Sequelize[_0xc8c9('0x3')](_0xc8c9('0x4')),'get':function(){if(this['getDataValue'](_0xc8c9('0x8'))){return this[_0xc8c9('0x6')](_0xc8c9('0x8'))[_0xc8c9('0x9')](_0xc8c9('0x7'));}}},'savedAt':{'type':Sequelize[_0xc8c9('0xa')]},'publishedAt':{'type':Sequelize[_0xc8c9('0xa')]}};
\ No newline at end of file
+var _0x0760=['BLOB','long','getDataValue','preproduction','toString','utf8','DATE','sequelize','STRING'];(function(_0x562f3b,_0x4c65ae){var _0x1edd55=function(_0xe67e06){while(--_0xe67e06){_0x562f3b['push'](_0x562f3b['shift']());}};_0x1edd55(++_0x4c65ae);}(_0x0760,0xa9));var _0x0076=function(_0x2a7737,_0x5f289e){_0x2a7737=_0x2a7737-0x0;var _0x861978=_0x0760[_0x2a7737];return _0x861978;};'use strict';var Sequelize=require(_0x0076('0x0'));module['exports']={'name':{'type':Sequelize[_0x0076('0x1')],'unique':'name','allowNull':![]},'description':{'type':Sequelize['STRING']},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0x0076('0x2')](_0x0076('0x3')),'get':function(){if(this[_0x0076('0x4')](_0x0076('0x5'))){return this[_0x0076('0x4')]('preproduction')[_0x0076('0x6')](_0x0076('0x7'));}}},'production':{'type':Sequelize[_0x0076('0x2')](_0x0076('0x3')),'get':function(){if(this[_0x0076('0x4')]('production')){return this[_0x0076('0x4')]('production')[_0x0076('0x6')](_0x0076('0x7'));}}},'savedAt':{'type':Sequelize['DATE']},'publishedAt':{'type':Sequelize[_0x0076('0x8')]}};
\ No newline at end of file
index 446d81c..4c00aae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda08=['VIRTUAL','merge','options','includeAll','include','findAll','catch','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addUsers','removeUsers','ids','isArray','userSquareProject:remove','emit','findOne','User','getUsers','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','get','SquareProjects','UserProfileResource','sendStatus','error','stack','name','send','index','map','SquareProject','rawAttributes','fieldName','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','type'];(function(_0x3e4dcd,_0x2861ce){var _0x47a21a=function(_0x262172){while(--_0x262172){_0x3e4dcd['push'](_0x3e4dcd['shift']());}};_0x47a21a(++_0x2861ce);}(_0xda08,0x7d));var _0x8da0=function(_0x12f688,_0x585c25){_0x12f688=_0x12f688-0x0;var _0x59c3de=_0xda08[_0x12f688];return _0x59c3de;};'use strict';var emlformat=require(_0x8da0('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x8da0('0x1'));var rp=require(_0x8da0('0x2'));var moment=require(_0x8da0('0x3'));var BPromise=require(_0x8da0('0x4'));var Mustache=require(_0x8da0('0x5'));var util=require(_0x8da0('0x6'));var path=require(_0x8da0('0x7'));var sox=require('sox');var csv=require(_0x8da0('0x8'));var ejs=require(_0x8da0('0x9'));var fs=require('fs');var fs_extra=require(_0x8da0('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x8da0('0xb'));var jsforce=require(_0x8da0('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x8da0('0x8'));var querystring=require(_0x8da0('0xd'));var Papa=require(_0x8da0('0xe'));var Redis=require(_0x8da0('0xf'));var authService=require(_0x8da0('0x10'));var qs=require(_0x8da0('0x11'));var as=require(_0x8da0('0x12'));var hardwareService=require(_0x8da0('0x13'));var logger=require(_0x8da0('0x14'))('api');var utils=require(_0x8da0('0x15'));var config=require(_0x8da0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x8da0('0x17'))['db'];config[_0x8da0('0x18')]=_[_0x8da0('0x19')](config[_0x8da0('0x18')],{'host':_0x8da0('0x1a'),'port':0x18eb});var socket=require(_0x8da0('0x1b'))(new Redis(config[_0x8da0('0x18')]));require('./squareProject.socket')[_0x8da0('0x1c')](socket);function respondWithStatusCode(_0x15aeb6,_0x466b7f){_0x466b7f=_0x466b7f||0xcc;return function(_0x500bdc){if(_0x500bdc){return _0x15aeb6['sendStatus'](_0x466b7f);}return _0x15aeb6[_0x8da0('0x1d')](_0x466b7f)[_0x8da0('0x1e')]();};}function respondWithResult(_0x617efa,_0x142bed){_0x142bed=_0x142bed||0xc8;return function(_0x5a1b17){if(_0x5a1b17){return _0x617efa[_0x8da0('0x1d')](_0x142bed)[_0x8da0('0x1f')](_0x5a1b17);}};}function respondWithFilteredResult(_0x5a1013,_0x5b9b92){return function(_0x360b90){if(_0x360b90){var _0x12e785=typeof _0x5b9b92[_0x8da0('0x20')]===_0x8da0('0x21')&&typeof _0x5b9b92[_0x8da0('0x22')]===_0x8da0('0x21');var _0x2b8bc4=_0x360b90[_0x8da0('0x23')];var _0x42b643=_0x12e785?0x0:_0x5b9b92[_0x8da0('0x20')];var _0x37b1af=_0x12e785?_0x360b90['count']:_0x5b9b92[_0x8da0('0x20')]+_0x5b9b92[_0x8da0('0x22')];var _0x1a74c5;if(_0x37b1af>=_0x2b8bc4){_0x37b1af=_0x2b8bc4;_0x1a74c5=0xc8;}else{_0x1a74c5=0xce;}_0x5a1013[_0x8da0('0x1d')](_0x1a74c5);return _0x5a1013[_0x8da0('0x24')](_0x8da0('0x25'),_0x42b643+'-'+_0x37b1af+'/'+_0x2b8bc4)[_0x8da0('0x1f')](_0x360b90);}return null;};}function patchUpdates(_0x2659f0){return function(_0x3c4030){try{jsonpatch[_0x8da0('0x26')](_0x3c4030,_0x2659f0,!![]);}catch(_0x2a1641){return BPromise[_0x8da0('0x27')](_0x2a1641);}return _0x3c4030[_0x8da0('0x28')]();};}function saveUpdates(_0x37c584,_0x3ea13f){return function(_0x12d02c){if(_0x12d02c){return _0x12d02c[_0x8da0('0x29')](_0x37c584)['then'](function(_0x5c2a71){return _0x5c2a71;});}return null;};}function removeEntity(_0x3390f3,_0x5016c3){return function(_0x31369e){if(_0x31369e){return _0x31369e[_0x8da0('0x2a')]()[_0x8da0('0x2b')](function(){var _0x3d083c=_0x31369e[_0x8da0('0x2c')]({'plain':!![]});var _0x39c60f=_0x8da0('0x2d');return db[_0x8da0('0x2e')]['destroy']({'where':{'type':_0x39c60f,'resourceId':_0x3d083c['id']}})['then'](function(){return _0x31369e;});})[_0x8da0('0x2b')](function(){_0x3390f3[_0x8da0('0x1d')](0xcc)[_0x8da0('0x1e')]();});}};}function handleEntityNotFound(_0x155d64,_0x4f8269){return function(_0x3ace83){if(!_0x3ace83){_0x155d64[_0x8da0('0x2f')](0x194);}return _0x3ace83;};}function handleError(_0xed1d8c,_0x539276){_0x539276=_0x539276||0x1f4;return function(_0x5ec39d){logger[_0x8da0('0x30')](_0x5ec39d[_0x8da0('0x31')]);if(_0x5ec39d[_0x8da0('0x32')]){delete _0x5ec39d[_0x8da0('0x32')];}_0xed1d8c['status'](_0x539276)[_0x8da0('0x33')](_0x5ec39d);};}exports[_0x8da0('0x34')]=function(_0x25cbc7,_0x401a6d){var _0x449b14={},_0x95f52c={},_0x5aa538={'count':0x0,'rows':[]};var _0x50da7c=_[_0x8da0('0x35')](db[_0x8da0('0x36')][_0x8da0('0x37')],function(_0x41f60c){return{'name':_0x41f60c[_0x8da0('0x38')],'type':_0x41f60c['type']['key']};});_0x95f52c[_0x8da0('0x39')]=_[_0x8da0('0x35')](_0x50da7c,_0x8da0('0x32'));_0x95f52c[_0x8da0('0x3a')]=_[_0x8da0('0x3b')](_0x25cbc7[_0x8da0('0x3a')]);_0x95f52c['filters']=_[_0x8da0('0x3c')](_0x95f52c[_0x8da0('0x39')],_0x95f52c[_0x8da0('0x3a')]);_0x449b14[_0x8da0('0x3d')]=_['intersection'](_0x95f52c[_0x8da0('0x39')],qs[_0x8da0('0x3e')](_0x25cbc7[_0x8da0('0x3a')][_0x8da0('0x3e')]));_0x449b14[_0x8da0('0x3d')]=_0x449b14[_0x8da0('0x3d')][_0x8da0('0x3f')]?_0x449b14[_0x8da0('0x3d')]:_0x95f52c[_0x8da0('0x39')];if(!_0x25cbc7[_0x8da0('0x3a')][_0x8da0('0x40')](_0x8da0('0x41'))){_0x449b14[_0x8da0('0x22')]=qs[_0x8da0('0x22')](_0x25cbc7[_0x8da0('0x3a')][_0x8da0('0x22')]);_0x449b14['offset']=qs[_0x8da0('0x20')](_0x25cbc7[_0x8da0('0x3a')][_0x8da0('0x20')]);}_0x449b14[_0x8da0('0x42')]=qs['sort'](_0x25cbc7[_0x8da0('0x3a')][_0x8da0('0x43')]);_0x449b14[_0x8da0('0x44')]=qs['filters'](_[_0x8da0('0x45')](_0x25cbc7[_0x8da0('0x3a')],_0x95f52c[_0x8da0('0x46')]),_0x50da7c);if(_0x25cbc7[_0x8da0('0x3a')][_0x8da0('0x47')]){_0x449b14[_0x8da0('0x44')]=_['merge'](_0x449b14[_0x8da0('0x44')],{'$or':_['map'](_0x50da7c,function(_0x5d2582){if(_0x5d2582[_0x8da0('0x48')]!==_0x8da0('0x49')){var _0x407c81={};_0x407c81[_0x5d2582[_0x8da0('0x32')]]={'$like':'%'+_0x25cbc7[_0x8da0('0x3a')][_0x8da0('0x47')]+'%'};return _0x407c81;}})});}_0x449b14=_[_0x8da0('0x4a')]({},_0x449b14,_0x25cbc7[_0x8da0('0x4b')]);var _0x5656be={'where':_0x449b14[_0x8da0('0x44')]};return db[_0x8da0('0x36')]['count'](_0x5656be)['then'](function(_0x3131a4){_0x5aa538[_0x8da0('0x23')]=_0x3131a4;if(_0x25cbc7['query'][_0x8da0('0x4c')]){_0x449b14[_0x8da0('0x4d')]=[{'all':!![]}];}return db[_0x8da0('0x36')][_0x8da0('0x4e')](_0x449b14);})[_0x8da0('0x2b')](function(_0x791a6){_0x5aa538['rows']=_0x791a6;return _0x5aa538;})[_0x8da0('0x2b')](respondWithFilteredResult(_0x401a6d,_0x449b14))[_0x8da0('0x4f')](handleError(_0x401a6d,null));};exports['show']=function(_0x43c435,_0x4a57c3){var _0x1d22fd={'raw':![],'where':{'id':_0x43c435[_0x8da0('0x50')]['id']}},_0x3bddd4={};_0x3bddd4[_0x8da0('0x39')]=_['keys'](db[_0x8da0('0x36')]['rawAttributes']);_0x3bddd4[_0x8da0('0x3a')]=_[_0x8da0('0x3b')](_0x43c435[_0x8da0('0x3a')]);_0x3bddd4[_0x8da0('0x46')]=_[_0x8da0('0x3c')](_0x3bddd4['model'],_0x3bddd4['query']);_0x1d22fd[_0x8da0('0x3d')]=_[_0x8da0('0x3c')](_0x3bddd4['model'],qs['fields'](_0x43c435[_0x8da0('0x3a')][_0x8da0('0x3e')]));_0x1d22fd[_0x8da0('0x3d')]=_0x1d22fd[_0x8da0('0x3d')]['length']?_0x1d22fd[_0x8da0('0x3d')]:_0x3bddd4['model'];if(_0x43c435[_0x8da0('0x3a')][_0x8da0('0x4c')]){_0x1d22fd[_0x8da0('0x4d')]=[{'all':!![]}];}_0x1d22fd=_['merge']({},_0x1d22fd,_0x43c435[_0x8da0('0x4b')]);return db['SquareProject'][_0x8da0('0x51')](_0x1d22fd)[_0x8da0('0x2b')](handleEntityNotFound(_0x4a57c3,null))[_0x8da0('0x2b')](respondWithResult(_0x4a57c3,null))[_0x8da0('0x4f')](handleError(_0x4a57c3,null));};exports[_0x8da0('0x52')]=function(_0x5a9015,_0x3d0a0b){return db[_0x8da0('0x36')][_0x8da0('0x52')](_0x5a9015[_0x8da0('0x53')],{})[_0x8da0('0x2b')](function(_0x14df56){var _0x4f44a1=_0x5a9015[_0x8da0('0x54')][_0x8da0('0x2c')]({'plain':!![]});if(!_0x4f44a1)throw new Error(_0x8da0('0x55'));if(_0x4f44a1['role']===_0x8da0('0x54')){var _0x32d62d=_0x14df56[_0x8da0('0x2c')]({'plain':!![]});var _0x1adecd=_0x8da0('0x2d');return db[_0x8da0('0x56')]['find']({'where':{'name':_0x1adecd,'userProfileId':_0x4f44a1[_0x8da0('0x57')]},'raw':!![]})[_0x8da0('0x2b')](function(_0xfa03c7){if(_0xfa03c7&&_0xfa03c7[_0x8da0('0x58')]===0x0){return db[_0x8da0('0x2e')][_0x8da0('0x52')]({'name':_0x32d62d[_0x8da0('0x32')],'resourceId':_0x32d62d['id'],'type':_0xfa03c7[_0x8da0('0x32')],'sectionId':_0xfa03c7['id']},{})['then'](function(){return _0x14df56;});}else{return _0x14df56;}})['catch'](function(_0xbf8cb7){logger[_0x8da0('0x30')](_0x8da0('0x59'),_0xbf8cb7);throw _0xbf8cb7;});}return _0x14df56;})['then'](respondWithResult(_0x3d0a0b,0xc9))[_0x8da0('0x4f')](handleError(_0x3d0a0b,null));};exports['update']=function(_0x5aae55,_0x2a9406){if(_0x5aae55[_0x8da0('0x53')]['id']){delete _0x5aae55['body']['id'];}return db['SquareProject']['find']({'where':{'id':_0x5aae55[_0x8da0('0x50')]['id']}})[_0x8da0('0x2b')](handleEntityNotFound(_0x2a9406,null))[_0x8da0('0x2b')](saveUpdates(_0x5aae55['body'],null))[_0x8da0('0x2b')](respondWithResult(_0x2a9406,null))[_0x8da0('0x4f')](handleError(_0x2a9406,null));};exports[_0x8da0('0x2a')]=function(_0x1f176b,_0x561ac4){return db[_0x8da0('0x36')][_0x8da0('0x51')]({'where':{'id':_0x1f176b[_0x8da0('0x50')]['id']}})[_0x8da0('0x2b')](handleEntityNotFound(_0x561ac4,null))[_0x8da0('0x2b')](removeEntity(_0x561ac4,null))[_0x8da0('0x4f')](handleError(_0x561ac4,null));};exports[_0x8da0('0x5a')]=function(_0x4aa06a,_0x36c24f,_0x1ef699){return db[_0x8da0('0x36')][_0x8da0('0x51')]({'where':{'id':_0x4aa06a[_0x8da0('0x50')]['id']}})['then'](handleEntityNotFound(_0x36c24f,null))[_0x8da0('0x2b')](function(_0x4ab583){if(_0x4ab583){return _0x4ab583[_0x8da0('0x5a')](_0x4aa06a[_0x8da0('0x53')]['ids'],_['omit'](_0x4aa06a[_0x8da0('0x53')],['ids','id'])||{});}})[_0x8da0('0x2b')](respondWithResult(_0x36c24f,null))[_0x8da0('0x4f')](handleError(_0x36c24f,null));};exports[_0x8da0('0x5b')]=function(_0x5d5daa,_0x5d867b,_0x29dc99){return db['SquareProject'][_0x8da0('0x51')]({'where':{'id':_0x5d5daa[_0x8da0('0x50')]['id']}})[_0x8da0('0x2b')](handleEntityNotFound(_0x5d867b,null))['then'](function(_0x571019){if(_0x571019){return _0x571019[_0x8da0('0x5b')](_0x5d5daa['query'][_0x8da0('0x5c')])[_0x8da0('0x2b')](function(){if(_[_0x8da0('0x5d')](_0x5d5daa[_0x8da0('0x3a')][_0x8da0('0x5c')])){for(var _0xb247b1=0x0;_0xb247b1<_0x5d5daa[_0x8da0('0x3a')][_0x8da0('0x5c')][_0x8da0('0x3f')];_0xb247b1+=0x1){socket['emit'](_0x8da0('0x5e'),{'UserId':Number(_0x5d5daa[_0x8da0('0x3a')]['ids'][_0xb247b1]),'SquareProjectId':Number(_0x5d5daa['params']['id'])});}}else{socket[_0x8da0('0x5f')](_0x8da0('0x5e'),{'UserId':Number(_0x5d5daa[_0x8da0('0x3a')][_0x8da0('0x5c')]),'SquareProjectId':Number(_0x5d5daa['params']['id'])});}});}})[_0x8da0('0x2b')](respondWithStatusCode(_0x5d867b,null))[_0x8da0('0x4f')](handleError(_0x5d867b,null));};exports['getUsers']=function(_0x3673a8,_0x4a02b6,_0x2c2357){var _0x4fd882={};var _0x4d383a={};var _0x13a7f1;var _0x22a9b7;return db[_0x8da0('0x36')][_0x8da0('0x60')]({'where':{'id':_0x3673a8[_0x8da0('0x50')]['id']}})['then'](handleEntityNotFound(_0x4a02b6,null))['then'](function(_0x1ee1d1){if(_0x1ee1d1){_0x13a7f1=_0x1ee1d1;_0x4d383a[_0x8da0('0x39')]=_['keys'](db[_0x8da0('0x61')]['rawAttributes']);_0x4d383a[_0x8da0('0x3a')]=_[_0x8da0('0x3b')](_0x3673a8['query']);_0x4d383a[_0x8da0('0x46')]=_[_0x8da0('0x3c')](_0x4d383a[_0x8da0('0x39')],_0x4d383a[_0x8da0('0x3a')]);_0x4fd882['attributes']=_[_0x8da0('0x3c')](_0x4d383a[_0x8da0('0x39')],qs[_0x8da0('0x3e')](_0x3673a8['query'][_0x8da0('0x3e')]));_0x4fd882['attributes']=_0x4fd882['attributes'][_0x8da0('0x3f')]?_0x4fd882[_0x8da0('0x3d')]:_0x4d383a[_0x8da0('0x39')];_0x4fd882[_0x8da0('0x42')]=qs[_0x8da0('0x43')](_0x3673a8['query'][_0x8da0('0x43')]);_0x4fd882[_0x8da0('0x44')]=qs[_0x8da0('0x46')](_[_0x8da0('0x45')](_0x3673a8['query'],_0x4d383a['filters']));if(_0x3673a8['query'][_0x8da0('0x47')]){_0x4fd882[_0x8da0('0x44')]=_[_0x8da0('0x4a')](_0x4fd882['where'],{'$or':_[_0x8da0('0x35')](_0x4fd882[_0x8da0('0x3d')],function(_0x210122){var _0x47ff31={};_0x47ff31[_0x210122]={'$like':'%'+_0x3673a8['query']['filter']+'%'};return _0x47ff31;})});}_0x4fd882=_[_0x8da0('0x4a')]({},_0x4fd882,_0x3673a8[_0x8da0('0x4b')]);return _0x13a7f1['getUsers'](_0x4fd882);}})[_0x8da0('0x2b')](function(_0x2bbfb8){if(_0x2bbfb8){_0x22a9b7=_0x2bbfb8[_0x8da0('0x3f')];if(!_0x3673a8[_0x8da0('0x3a')][_0x8da0('0x40')](_0x8da0('0x41'))){_0x4fd882[_0x8da0('0x22')]=qs[_0x8da0('0x22')](_0x3673a8['query'][_0x8da0('0x22')]);_0x4fd882[_0x8da0('0x20')]=qs['offset'](_0x3673a8[_0x8da0('0x3a')][_0x8da0('0x20')]);}return _0x13a7f1[_0x8da0('0x62')](_0x4fd882);}})[_0x8da0('0x2b')](function(_0x8b5d50){if(_0x8b5d50){return _0x8b5d50?{'count':_0x22a9b7,'rows':_0x8b5d50}:null;}})[_0x8da0('0x2b')](respondWithResult(_0x4a02b6,null))[_0x8da0('0x4f')](handleError(_0x4a02b6,null));};
\ No newline at end of file
+var _0xf054=['omit','removeUsers','isArray','emit','userSquareProject:remove','getUsers','findOne','User','eml-format','rimraf','request-promise','moment','util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','localhost','redis','./squareProject.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','SquareProjects','UserProfileResource','error','name','send','SquareProject','fieldName','type','key','model','map','keys','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','merge','VIRTUAL','where','includeAll','include','findAll','rows','catch','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addUsers','ids'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf054,0x1e8));var _0x4f05=function(_0x581375,_0x45687d){_0x581375=_0x581375-0x0;var _0x25355c=_0xf054[_0x581375];return _0x25355c;};'use strict';var emlformat=require(_0x4f05('0x0'));var rimraf=require(_0x4f05('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4f05('0x2'));var moment=require(_0x4f05('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4f05('0x4'));var path=require('path');var sox=require(_0x4f05('0x5'));var csv=require(_0x4f05('0x6'));var ejs=require(_0x4f05('0x7'));var fs=require('fs');var fs_extra=require(_0x4f05('0x8'));var _=require('lodash');var squel=require(_0x4f05('0x9'));var crypto=require(_0x4f05('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x4f05('0xb'));var toCsv=require(_0x4f05('0x6'));var querystring=require(_0x4f05('0xc'));var Papa=require(_0x4f05('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x4f05('0xe'));var as=require(_0x4f05('0xf'));var hardwareService=require(_0x4f05('0x10'));var logger=require(_0x4f05('0x11'))(_0x4f05('0x12'));var utils=require('../../config/utils');var config=require(_0x4f05('0x13'));var licenseUtil=require(_0x4f05('0x14'));var db=require(_0x4f05('0x15'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x4f05('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4f05('0x17')]));require(_0x4f05('0x18'))[_0x4f05('0x19')](socket);function respondWithStatusCode(_0x5c2930,_0x1a5117){_0x1a5117=_0x1a5117||0xcc;return function(_0x4a123b){if(_0x4a123b){return _0x5c2930[_0x4f05('0x1a')](_0x1a5117);}return _0x5c2930[_0x4f05('0x1b')](_0x1a5117)[_0x4f05('0x1c')]();};}function respondWithResult(_0x24bd19,_0x3522e5){_0x3522e5=_0x3522e5||0xc8;return function(_0x3c3d29){if(_0x3c3d29){return _0x24bd19['status'](_0x3522e5)['json'](_0x3c3d29);}};}function respondWithFilteredResult(_0x68c3b1,_0x4dd267){return function(_0x4d2ed7){if(_0x4d2ed7){var _0x479795=typeof _0x4dd267[_0x4f05('0x1d')]===_0x4f05('0x1e')&&typeof _0x4dd267[_0x4f05('0x1f')]===_0x4f05('0x1e');var _0x5f2639=_0x4d2ed7[_0x4f05('0x20')];var _0x19507c=_0x479795?0x0:_0x4dd267['offset'];var _0x1e6580=_0x479795?_0x4d2ed7[_0x4f05('0x20')]:_0x4dd267[_0x4f05('0x1d')]+_0x4dd267[_0x4f05('0x1f')];var _0xc9c16f;if(_0x1e6580>=_0x5f2639){_0x1e6580=_0x5f2639;_0xc9c16f=0xc8;}else{_0xc9c16f=0xce;}_0x68c3b1[_0x4f05('0x1b')](_0xc9c16f);return _0x68c3b1[_0x4f05('0x21')](_0x4f05('0x22'),_0x19507c+'-'+_0x1e6580+'/'+_0x5f2639)[_0x4f05('0x23')](_0x4d2ed7);}return null;};}function patchUpdates(_0x3b663a){return function(_0x1a42c8){try{jsonpatch[_0x4f05('0x24')](_0x1a42c8,_0x3b663a,!![]);}catch(_0x2673c8){return BPromise[_0x4f05('0x25')](_0x2673c8);}return _0x1a42c8[_0x4f05('0x26')]();};}function saveUpdates(_0xf236be,_0x4cc873){return function(_0x316e62){if(_0x316e62){return _0x316e62[_0x4f05('0x27')](_0xf236be)[_0x4f05('0x28')](function(_0x399ea2){return _0x399ea2;});}return null;};}function removeEntity(_0x4bdae1,_0x8ca5e8){return function(_0x1690c7){if(_0x1690c7){return _0x1690c7[_0x4f05('0x29')]()[_0x4f05('0x28')](function(){var _0x56daf0=_0x1690c7[_0x4f05('0x2a')]({'plain':!![]});var _0xc9ae36=_0x4f05('0x2b');return db[_0x4f05('0x2c')][_0x4f05('0x29')]({'where':{'type':_0xc9ae36,'resourceId':_0x56daf0['id']}})[_0x4f05('0x28')](function(){return _0x1690c7;});})[_0x4f05('0x28')](function(){_0x4bdae1[_0x4f05('0x1b')](0xcc)[_0x4f05('0x1c')]();});}};}function handleEntityNotFound(_0x5b187b,_0x340525){return function(_0xb92e2e){if(!_0xb92e2e){_0x5b187b[_0x4f05('0x1a')](0x194);}return _0xb92e2e;};}function handleError(_0x574f8a,_0x553a3b){_0x553a3b=_0x553a3b||0x1f4;return function(_0x28fed3){logger[_0x4f05('0x2d')](_0x28fed3['stack']);if(_0x28fed3['name']){delete _0x28fed3[_0x4f05('0x2e')];}_0x574f8a['status'](_0x553a3b)[_0x4f05('0x2f')](_0x28fed3);};}exports['index']=function(_0x28f2b9,_0x2297da){var _0xad0f51={},_0xab770a={},_0xfe5538={'count':0x0,'rows':[]};var _0x3a5c39=_['map'](db[_0x4f05('0x30')]['rawAttributes'],function(_0x5cc780){return{'name':_0x5cc780[_0x4f05('0x31')],'type':_0x5cc780[_0x4f05('0x32')][_0x4f05('0x33')]};});_0xab770a[_0x4f05('0x34')]=_[_0x4f05('0x35')](_0x3a5c39,_0x4f05('0x2e'));_0xab770a['query']=_[_0x4f05('0x36')](_0x28f2b9[_0x4f05('0x37')]);_0xab770a['filters']=_[_0x4f05('0x38')](_0xab770a[_0x4f05('0x34')],_0xab770a[_0x4f05('0x37')]);_0xad0f51['attributes']=_[_0x4f05('0x38')](_0xab770a[_0x4f05('0x34')],qs[_0x4f05('0x39')](_0x28f2b9['query'][_0x4f05('0x39')]));_0xad0f51[_0x4f05('0x3a')]=_0xad0f51[_0x4f05('0x3a')][_0x4f05('0x3b')]?_0xad0f51[_0x4f05('0x3a')]:_0xab770a[_0x4f05('0x34')];if(!_0x28f2b9[_0x4f05('0x37')][_0x4f05('0x3c')](_0x4f05('0x3d'))){_0xad0f51['limit']=qs['limit'](_0x28f2b9[_0x4f05('0x37')][_0x4f05('0x1f')]);_0xad0f51[_0x4f05('0x1d')]=qs[_0x4f05('0x1d')](_0x28f2b9[_0x4f05('0x37')][_0x4f05('0x1d')]);}_0xad0f51[_0x4f05('0x3e')]=qs[_0x4f05('0x3f')](_0x28f2b9[_0x4f05('0x37')][_0x4f05('0x3f')]);_0xad0f51['where']=qs[_0x4f05('0x40')](_[_0x4f05('0x41')](_0x28f2b9[_0x4f05('0x37')],_0xab770a[_0x4f05('0x40')]),_0x3a5c39);if(_0x28f2b9[_0x4f05('0x37')][_0x4f05('0x42')]){_0xad0f51['where']=_[_0x4f05('0x43')](_0xad0f51['where'],{'$or':_[_0x4f05('0x35')](_0x3a5c39,function(_0x1f2f93){if(_0x1f2f93['type']!==_0x4f05('0x44')){var _0x5340e1={};_0x5340e1[_0x1f2f93[_0x4f05('0x2e')]]={'$like':'%'+_0x28f2b9[_0x4f05('0x37')][_0x4f05('0x42')]+'%'};return _0x5340e1;}})});}_0xad0f51=_['merge']({},_0xad0f51,_0x28f2b9['options']);var _0x341314={'where':_0xad0f51[_0x4f05('0x45')]};return db['SquareProject'][_0x4f05('0x20')](_0x341314)['then'](function(_0x42210c){_0xfe5538[_0x4f05('0x20')]=_0x42210c;if(_0x28f2b9[_0x4f05('0x37')][_0x4f05('0x46')]){_0xad0f51[_0x4f05('0x47')]=[{'all':!![]}];}return db['SquareProject'][_0x4f05('0x48')](_0xad0f51);})[_0x4f05('0x28')](function(_0x3a234e){_0xfe5538[_0x4f05('0x49')]=_0x3a234e;return _0xfe5538;})[_0x4f05('0x28')](respondWithFilteredResult(_0x2297da,_0xad0f51))[_0x4f05('0x4a')](handleError(_0x2297da,null));};exports['show']=function(_0x33e7a1,_0x34ea03){var _0x42724d={'raw':![],'where':{'id':_0x33e7a1['params']['id']}},_0xcc6276={};_0xcc6276['model']=_[_0x4f05('0x36')](db[_0x4f05('0x30')]['rawAttributes']);_0xcc6276[_0x4f05('0x37')]=_['keys'](_0x33e7a1[_0x4f05('0x37')]);_0xcc6276[_0x4f05('0x40')]=_[_0x4f05('0x38')](_0xcc6276[_0x4f05('0x34')],_0xcc6276['query']);_0x42724d[_0x4f05('0x3a')]=_[_0x4f05('0x38')](_0xcc6276['model'],qs[_0x4f05('0x39')](_0x33e7a1['query'][_0x4f05('0x39')]));_0x42724d[_0x4f05('0x3a')]=_0x42724d[_0x4f05('0x3a')][_0x4f05('0x3b')]?_0x42724d[_0x4f05('0x3a')]:_0xcc6276[_0x4f05('0x34')];if(_0x33e7a1[_0x4f05('0x37')]['includeAll']){_0x42724d[_0x4f05('0x47')]=[{'all':!![]}];}_0x42724d=_[_0x4f05('0x43')]({},_0x42724d,_0x33e7a1[_0x4f05('0x4b')]);return db[_0x4f05('0x30')][_0x4f05('0x4c')](_0x42724d)[_0x4f05('0x28')](handleEntityNotFound(_0x34ea03,null))['then'](respondWithResult(_0x34ea03,null))['catch'](handleError(_0x34ea03,null));};exports['create']=function(_0x2ccc03,_0x3c2868){return db[_0x4f05('0x30')][_0x4f05('0x4d')](_0x2ccc03[_0x4f05('0x4e')],{})[_0x4f05('0x28')](function(_0x4edaba){var _0x455dcb=_0x2ccc03[_0x4f05('0x4f')][_0x4f05('0x2a')]({'plain':!![]});if(!_0x455dcb)throw new Error(_0x4f05('0x50'));if(_0x455dcb[_0x4f05('0x51')]===_0x4f05('0x4f')){var _0x45d59f=_0x4edaba[_0x4f05('0x2a')]({'plain':!![]});var _0x4812e9='SquareProjects';return db[_0x4f05('0x52')][_0x4f05('0x4c')]({'where':{'name':_0x4812e9,'userProfileId':_0x455dcb['userProfileId']},'raw':!![]})['then'](function(_0x455b9e){if(_0x455b9e&&_0x455b9e[_0x4f05('0x53')]===0x0){return db[_0x4f05('0x2c')][_0x4f05('0x4d')]({'name':_0x45d59f[_0x4f05('0x2e')],'resourceId':_0x45d59f['id'],'type':_0x455b9e['name'],'sectionId':_0x455b9e['id']},{})[_0x4f05('0x28')](function(){return _0x4edaba;});}else{return _0x4edaba;}})[_0x4f05('0x4a')](function(_0x23033f){logger['error'](_0x4f05('0x54'),_0x23033f);throw _0x23033f;});}return _0x4edaba;})['then'](respondWithResult(_0x3c2868,0xc9))[_0x4f05('0x4a')](handleError(_0x3c2868,null));};exports[_0x4f05('0x27')]=function(_0x26c966,_0x672734){if(_0x26c966[_0x4f05('0x4e')]['id']){delete _0x26c966[_0x4f05('0x4e')]['id'];}return db[_0x4f05('0x30')][_0x4f05('0x4c')]({'where':{'id':_0x26c966['params']['id']}})['then'](handleEntityNotFound(_0x672734,null))['then'](saveUpdates(_0x26c966[_0x4f05('0x4e')],null))[_0x4f05('0x28')](respondWithResult(_0x672734,null))[_0x4f05('0x4a')](handleError(_0x672734,null));};exports[_0x4f05('0x29')]=function(_0x553ace,_0x35299d){return db[_0x4f05('0x30')][_0x4f05('0x4c')]({'where':{'id':_0x553ace[_0x4f05('0x55')]['id']}})[_0x4f05('0x28')](handleEntityNotFound(_0x35299d,null))[_0x4f05('0x28')](removeEntity(_0x35299d,null))[_0x4f05('0x4a')](handleError(_0x35299d,null));};exports[_0x4f05('0x56')]=function(_0x27ca30,_0x2b95b7,_0x5dec9f){return db[_0x4f05('0x30')][_0x4f05('0x4c')]({'where':{'id':_0x27ca30['params']['id']}})[_0x4f05('0x28')](handleEntityNotFound(_0x2b95b7,null))[_0x4f05('0x28')](function(_0x2430ea){if(_0x2430ea){return _0x2430ea[_0x4f05('0x56')](_0x27ca30['body'][_0x4f05('0x57')],_[_0x4f05('0x58')](_0x27ca30[_0x4f05('0x4e')],[_0x4f05('0x57'),'id'])||{});}})[_0x4f05('0x28')](respondWithResult(_0x2b95b7,null))[_0x4f05('0x4a')](handleError(_0x2b95b7,null));};exports[_0x4f05('0x59')]=function(_0x5e6cb9,_0x2312b7,_0x7e31e5){return db[_0x4f05('0x30')][_0x4f05('0x4c')]({'where':{'id':_0x5e6cb9['params']['id']}})[_0x4f05('0x28')](handleEntityNotFound(_0x2312b7,null))['then'](function(_0x414fd7){if(_0x414fd7){return _0x414fd7[_0x4f05('0x59')](_0x5e6cb9['query'][_0x4f05('0x57')])['then'](function(){if(_[_0x4f05('0x5a')](_0x5e6cb9['query'][_0x4f05('0x57')])){for(var _0x5bb2d9=0x0;_0x5bb2d9<_0x5e6cb9[_0x4f05('0x37')][_0x4f05('0x57')][_0x4f05('0x3b')];_0x5bb2d9+=0x1){socket[_0x4f05('0x5b')](_0x4f05('0x5c'),{'UserId':Number(_0x5e6cb9['query'][_0x4f05('0x57')][_0x5bb2d9]),'SquareProjectId':Number(_0x5e6cb9[_0x4f05('0x55')]['id'])});}}else{socket[_0x4f05('0x5b')](_0x4f05('0x5c'),{'UserId':Number(_0x5e6cb9[_0x4f05('0x37')]['ids']),'SquareProjectId':Number(_0x5e6cb9['params']['id'])});}});}})[_0x4f05('0x28')](respondWithStatusCode(_0x2312b7,null))['catch'](handleError(_0x2312b7,null));};exports[_0x4f05('0x5d')]=function(_0x2f5f4d,_0x3d0b27,_0x43accb){var _0x52a59d={};var _0x19729c={};var _0x181182;var _0x1c3d8e;return db['SquareProject'][_0x4f05('0x5e')]({'where':{'id':_0x2f5f4d[_0x4f05('0x55')]['id']}})['then'](handleEntityNotFound(_0x3d0b27,null))[_0x4f05('0x28')](function(_0x2fd950){if(_0x2fd950){_0x181182=_0x2fd950;_0x19729c[_0x4f05('0x34')]=_[_0x4f05('0x36')](db[_0x4f05('0x5f')]['rawAttributes']);_0x19729c[_0x4f05('0x37')]=_[_0x4f05('0x36')](_0x2f5f4d['query']);_0x19729c['filters']=_['intersection'](_0x19729c[_0x4f05('0x34')],_0x19729c[_0x4f05('0x37')]);_0x52a59d['attributes']=_[_0x4f05('0x38')](_0x19729c[_0x4f05('0x34')],qs['fields'](_0x2f5f4d[_0x4f05('0x37')]['fields']));_0x52a59d['attributes']=_0x52a59d[_0x4f05('0x3a')][_0x4f05('0x3b')]?_0x52a59d[_0x4f05('0x3a')]:_0x19729c[_0x4f05('0x34')];_0x52a59d[_0x4f05('0x3e')]=qs[_0x4f05('0x3f')](_0x2f5f4d[_0x4f05('0x37')]['sort']);_0x52a59d[_0x4f05('0x45')]=qs[_0x4f05('0x40')](_[_0x4f05('0x41')](_0x2f5f4d[_0x4f05('0x37')],_0x19729c[_0x4f05('0x40')]));if(_0x2f5f4d[_0x4f05('0x37')]['filter']){_0x52a59d[_0x4f05('0x45')]=_['merge'](_0x52a59d[_0x4f05('0x45')],{'$or':_['map'](_0x52a59d[_0x4f05('0x3a')],function(_0x3c7855){var _0x3250c5={};_0x3250c5[_0x3c7855]={'$like':'%'+_0x2f5f4d['query'][_0x4f05('0x42')]+'%'};return _0x3250c5;})});}_0x52a59d=_[_0x4f05('0x43')]({},_0x52a59d,_0x2f5f4d[_0x4f05('0x4b')]);return _0x181182[_0x4f05('0x5d')](_0x52a59d);}})['then'](function(_0x3921d3){if(_0x3921d3){_0x1c3d8e=_0x3921d3[_0x4f05('0x3b')];if(!_0x2f5f4d['query'][_0x4f05('0x3c')](_0x4f05('0x3d'))){_0x52a59d[_0x4f05('0x1f')]=qs[_0x4f05('0x1f')](_0x2f5f4d[_0x4f05('0x37')][_0x4f05('0x1f')]);_0x52a59d[_0x4f05('0x1d')]=qs[_0x4f05('0x1d')](_0x2f5f4d[_0x4f05('0x37')][_0x4f05('0x1d')]);}return _0x181182['getUsers'](_0x52a59d);}})['then'](function(_0x50c5d1){if(_0x50c5d1){return _0x50c5d1?{'count':_0x1c3d8e,'rows':_0x50c5d1}:null;}})[_0x4f05('0x28')](respondWithResult(_0x3d0b27,null))[_0x4f05('0x4a')](handleError(_0x3d0b27,null));};
\ No newline at end of file
index fa211a5..f8217c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b1a=['exports','events','../../mysqldb','SquareProject','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0x14ab3a,_0x49317f){var _0x325be7=function(_0x4f3335){while(--_0x4f3335){_0x14ab3a['push'](_0x14ab3a['shift']());}};_0x325be7(++_0x49317f);}(_0x7b1a,0x1c3));var _0xa7b1=function(_0x4ffd57,_0x2fe246){_0x4ffd57=_0x4ffd57-0x0;var _0x1e4100=_0x7b1a[_0x4ffd57];return _0x1e4100;};'use strict';var EventEmitter=require(_0xa7b1('0x0'));var SquareProject=require(_0xa7b1('0x1'))['db'][_0xa7b1('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xa7b1('0x3')](0x0);var events={'afterCreate':_0xa7b1('0x4'),'afterUpdate':_0xa7b1('0x5'),'afterDestroy':'remove'};function emitEvent(_0xcc51d2){return function(_0x25f68f,_0x22e739,_0x4c1034){SquareProjectEvents[_0xa7b1('0x6')](_0xcc51d2+':'+_0x25f68f['id'],_0x25f68f);SquareProjectEvents[_0xa7b1('0x6')](_0xcc51d2,_0x25f68f);_0x4c1034(null);};}for(var e in events){if(events[_0xa7b1('0x7')](e)){var event=events[e];SquareProject[_0xa7b1('0x8')](e,emitEvent(event));}}module[_0xa7b1('0x9')]=SquareProjectEvents;
\ No newline at end of file
+var _0x52b4=['update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','setMaxListeners','save'];(function(_0x45783c,_0x49c56d){var _0x1161da=function(_0x3c5d41){while(--_0x3c5d41){_0x45783c['push'](_0x45783c['shift']());}};_0x1161da(++_0x49c56d);}(_0x52b4,0xb0));var _0x452b=function(_0xe8e813,_0x3d3d1b){_0xe8e813=_0xe8e813-0x0;var _0x3ff87c=_0x52b4[_0xe8e813];return _0x3ff87c;};'use strict';var EventEmitter=require(_0x452b('0x0'));var SquareProject=require(_0x452b('0x1'))['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x452b('0x2')](0x0);var events={'afterCreate':_0x452b('0x3'),'afterUpdate':_0x452b('0x4'),'afterDestroy':_0x452b('0x5')};function emitEvent(_0x1f6e62){return function(_0x36b728,_0x406bc2,_0x417714){SquareProjectEvents[_0x452b('0x6')](_0x1f6e62+':'+_0x36b728['id'],_0x36b728);SquareProjectEvents[_0x452b('0x6')](_0x1f6e62,_0x36b728);_0x417714(null);};}for(var e in events){if(events[_0x452b('0x7')](e)){var event=events[e];SquareProject[_0x452b('0x8')](e,emitEvent(event));}}module['exports']=SquareProjectEvents;
\ No newline at end of file
index ed77a36..ad009be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5d3=['../../config/environment','./squareProject.attributes','define','SquareProject','square_projects','changed','preproduction','YYYY-MM-DD\x20HH:mm:ss','publishedAt','format','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x1b6246,_0x51cf7e){var _0x5d1725=function(_0x1e21c2){while(--_0x1e21c2){_0x1b6246['push'](_0x1b6246['shift']());}};_0x5d1725(++_0x51cf7e);}(_0xc5d3,0x9a));var _0x3c5d=function(_0x1344d6,_0x2181e6){_0x1344d6=_0x1344d6-0x0;var _0xf45b24=_0xc5d3[_0x1344d6];return _0xf45b24;};'use strict';var _=require(_0x3c5d('0x0'));var util=require(_0x3c5d('0x1'));var logger=require(_0x3c5d('0x2'))(_0x3c5d('0x3'));var moment=require(_0x3c5d('0x4'));var BPromise=require(_0x3c5d('0x5'));var rp=require(_0x3c5d('0x6'));var fs=require('fs');var path=require(_0x3c5d('0x7'));var rimraf=require('rimraf');var config=require(_0x3c5d('0x8'));var attributes=require(_0x3c5d('0x9'));module['exports']=function(_0x8a43,_0x148431){return _0x8a43[_0x3c5d('0xa')](_0x3c5d('0xb'),attributes,{'tableName':_0x3c5d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x29faa3,_0x4fcb41,_0x179ff6){if(_0x29faa3[_0x3c5d('0xd')](_0x3c5d('0xe'))){_0x29faa3['savedAt']=moment()['format'](_0x3c5d('0xf'));}if(_0x29faa3[_0x3c5d('0xd')]('production')){_0x29faa3[_0x3c5d('0x10')]=moment()[_0x3c5d('0x11')](_0x3c5d('0xf'));}_0x179ff6(null,_0x29faa3);}}});};
\ No newline at end of file
+var _0x0531=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareProject.attributes','define','square_projects','changed','savedAt','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','format'];(function(_0x56092e,_0x164609){var _0x2618b1=function(_0x13e5c1){while(--_0x13e5c1){_0x56092e['push'](_0x56092e['shift']());}};_0x2618b1(++_0x164609);}(_0x0531,0xea));var _0x1053=function(_0x12b8ec,_0x1655be){_0x12b8ec=_0x12b8ec-0x0;var _0x21af77=_0x0531[_0x12b8ec];return _0x21af77;};'use strict';var _=require('lodash');var util=require(_0x1053('0x0'));var logger=require(_0x1053('0x1'))(_0x1053('0x2'));var moment=require(_0x1053('0x3'));var BPromise=require(_0x1053('0x4'));var rp=require(_0x1053('0x5'));var fs=require('fs');var path=require(_0x1053('0x6'));var rimraf=require(_0x1053('0x7'));var config=require(_0x1053('0x8'));var attributes=require(_0x1053('0x9'));module['exports']=function(_0xcb48ab,_0xd335cb){return _0xcb48ab[_0x1053('0xa')]('SquareProject',attributes,{'tableName':_0x1053('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x108d2e,_0x2ec94b,_0xc12d75){if(_0x108d2e[_0x1053('0xc')]('preproduction')){_0x108d2e[_0x1053('0xd')]=moment()['format'](_0x1053('0xe'));}if(_0x108d2e[_0x1053('0xc')](_0x1053('0xf'))){_0x108d2e[_0x1053('0x10')]=moment()[_0x1053('0x11')]('YYYY-MM-DD\x20HH:mm:ss');}_0xc12d75(null,_0x108d2e);}}});};
\ No newline at end of file
index 6201a6d..7cc96d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0be=['catch','ShowSquareProject','SquareProject','find','options','raw','where','attributes','include','model','stringify','lodash','util','moment','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./squareProject.socket','register','then','info','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','error','message','result'];(function(_0x46f8a5,_0x4fc35a){var _0x51667b=function(_0x3b609d){while(--_0x3b609d){_0x46f8a5['push'](_0x46f8a5['shift']());}};_0x51667b(++_0x4fc35a);}(_0xf0be,0x9b));var _0xef0b=function(_0x379f9a,_0x2aed6d){_0x379f9a=_0x379f9a-0x0;var _0x5f62c5=_0xf0be[_0x379f9a];return _0x5f62c5;};'use strict';var _=require(_0xef0b('0x0'));var util=require(_0xef0b('0x1'));var moment=require(_0xef0b('0x2'));var BPromise=require('bluebird');var rs=require(_0xef0b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xef0b('0x4'));var logger=require(_0xef0b('0x5'))('rpc');var config=require(_0xef0b('0x6'));var jayson=require(_0xef0b('0x7'));var client=jayson[_0xef0b('0x8')][_0xef0b('0x9')]({'port':0x232a});config['redis']=_[_0xef0b('0xa')](config[_0xef0b('0xb')],{'host':_0xef0b('0xc'),'port':0x18eb});var socket=require(_0xef0b('0xd'))(new Redis(config[_0xef0b('0xb')]));require(_0xef0b('0xe'))[_0xef0b('0xf')](socket);function respondWithRpcPromise(_0xb88d8,_0x4a2a4e,_0x260129){return new BPromise(function(_0x57e9d2,_0x3fe820){return client['request'](_0xb88d8,_0x260129)[_0xef0b('0x10')](function(_0x24a549){logger[_0xef0b('0x11')](_0xef0b('0x12'),_0x4a2a4e,_0xef0b('0x13'));logger[_0xef0b('0x14')](_0xef0b('0x15'),_0x4a2a4e,_0xef0b('0x13'),JSON['stringify'](_0x24a549));if(_0x24a549['error']){if(_0x24a549['error']['code']===0x1f4){logger[_0xef0b('0x16')](_0xef0b('0x12'),_0x4a2a4e,_0x24a549[_0xef0b('0x16')][_0xef0b('0x17')]);return _0x3fe820(_0x24a549[_0xef0b('0x16')][_0xef0b('0x17')]);}logger[_0xef0b('0x16')](_0xef0b('0x12'),_0x4a2a4e,_0x24a549['error'][_0xef0b('0x17')]);return _0x57e9d2(_0x24a549[_0xef0b('0x16')][_0xef0b('0x17')]);}else{logger['info'](_0xef0b('0x12'),_0x4a2a4e,_0xef0b('0x13'));_0x57e9d2(_0x24a549[_0xef0b('0x18')]['message']);}})[_0xef0b('0x19')](function(_0x32b502){logger[_0xef0b('0x16')](_0xef0b('0x12'),_0x4a2a4e,_0x32b502);_0x3fe820(_0x32b502);});});}exports[_0xef0b('0x1a')]=function(_0x47c680){var _0x29fb21=this;return new Promise(function(_0x4fe273,_0x1b03ce){return db[_0xef0b('0x1b')][_0xef0b('0x1c')]({'raw':_0x47c680['options']?_0x47c680[_0xef0b('0x1d')][_0xef0b('0x1e')]===undefined?!![]:![]:!![],'where':_0x47c680[_0xef0b('0x1d')]?_0x47c680[_0xef0b('0x1d')][_0xef0b('0x1f')]||null:null,'attributes':_0x47c680[_0xef0b('0x1d')]?_0x47c680[_0xef0b('0x1d')][_0xef0b('0x20')]||null:null,'include':_0x47c680[_0xef0b('0x1d')]?_0x47c680['options'][_0xef0b('0x21')]?_['map'](_0x47c680[_0xef0b('0x1d')][_0xef0b('0x21')],function(_0x1e7e38){return{'model':db[_0x1e7e38[_0xef0b('0x22')]],'as':_0x1e7e38['as'],'attributes':_0x1e7e38[_0xef0b('0x20')],'include':_0x1e7e38['include']?_['map'](_0x1e7e38[_0xef0b('0x21')],function(_0x244164){return{'model':db[_0x244164[_0xef0b('0x22')]],'as':_0x244164['as'],'attributes':_0x244164['attributes'],'include':_0x244164[_0xef0b('0x21')]?_['map'](_0x244164[_0xef0b('0x21')],function(_0x3d9042){return{'model':db[_0x3d9042[_0xef0b('0x22')]],'as':_0x3d9042['as'],'attributes':_0x3d9042['attributes']};}):[]};}):[]};}):[]:[]})[_0xef0b('0x10')](function(_0x127a35){logger[_0xef0b('0x11')](_0xef0b('0x1a'),_0x47c680);logger[_0xef0b('0x14')](_0xef0b('0x1a'),_0x47c680,JSON[_0xef0b('0x23')](_0x127a35));_0x4fe273(_0x127a35);})[_0xef0b('0x19')](function(_0x127ece){logger['error'](_0xef0b('0x1a'),_0x127ece[_0xef0b('0x17')],_0x47c680);_0x1b03ce(_0x29fb21['error'](0x1f4,_0x127ece[_0xef0b('0x17')]));});});};
\ No newline at end of file
+var _0xd692=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','client','http','redis','defaults','localhost','./squareProject.socket','register','request','then','info','request\x20sent','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareProject,\x20%s,\x20%s','message','result','catch','SquareProject','find','options','where','attributes','include','model','map','ShowSquareProject','debug'];(function(_0x26880f,_0x130975){var _0x8c72e6=function(_0x2cbb04){while(--_0x2cbb04){_0x26880f['push'](_0x26880f['shift']());}};_0x8c72e6(++_0x130975);}(_0xd692,0x1bc));var _0x2d69=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xd692[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x2d69('0x0'));var util=require(_0x2d69('0x1'));var moment=require(_0x2d69('0x2'));var BPromise=require(_0x2d69('0x3'));var rs=require(_0x2d69('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2d69('0x5'))['db'];var utils=require(_0x2d69('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x2d69('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x2d69('0x8')][_0x2d69('0x9')]({'port':0x232a});config[_0x2d69('0xa')]=_[_0x2d69('0xb')](config[_0x2d69('0xa')],{'host':_0x2d69('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2d69('0xa')]));require(_0x2d69('0xd'))[_0x2d69('0xe')](socket);function respondWithRpcPromise(_0x521249,_0x27ecda,_0x500309){return new BPromise(function(_0x1e4426,_0x2c09d4){return client[_0x2d69('0xf')](_0x521249,_0x500309)[_0x2d69('0x10')](function(_0x4a04fd){logger[_0x2d69('0x11')]('SquareProject,\x20%s,\x20%s',_0x27ecda,_0x2d69('0x12'));logger['debug'](_0x2d69('0x13'),_0x27ecda,_0x2d69('0x12'),JSON[_0x2d69('0x14')](_0x4a04fd));if(_0x4a04fd[_0x2d69('0x15')]){if(_0x4a04fd[_0x2d69('0x15')][_0x2d69('0x16')]===0x1f4){logger['error'](_0x2d69('0x17'),_0x27ecda,_0x4a04fd['error'][_0x2d69('0x18')]);return _0x2c09d4(_0x4a04fd[_0x2d69('0x15')][_0x2d69('0x18')]);}logger[_0x2d69('0x15')](_0x2d69('0x17'),_0x27ecda,_0x4a04fd[_0x2d69('0x15')][_0x2d69('0x18')]);return _0x1e4426(_0x4a04fd['error'][_0x2d69('0x18')]);}else{logger['info'](_0x2d69('0x17'),_0x27ecda,_0x2d69('0x12'));_0x1e4426(_0x4a04fd[_0x2d69('0x19')][_0x2d69('0x18')]);}})[_0x2d69('0x1a')](function(_0x4620f5){logger[_0x2d69('0x15')](_0x2d69('0x17'),_0x27ecda,_0x4620f5);_0x2c09d4(_0x4620f5);});});}exports['ShowSquareProject']=function(_0xcbbd95){var _0x24746c=this;return new Promise(function(_0x5276a9,_0x320936){return db[_0x2d69('0x1b')][_0x2d69('0x1c')]({'raw':_0xcbbd95[_0x2d69('0x1d')]?_0xcbbd95[_0x2d69('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0xcbbd95[_0x2d69('0x1d')]?_0xcbbd95[_0x2d69('0x1d')][_0x2d69('0x1e')]||null:null,'attributes':_0xcbbd95['options']?_0xcbbd95[_0x2d69('0x1d')][_0x2d69('0x1f')]||null:null,'include':_0xcbbd95[_0x2d69('0x1d')]?_0xcbbd95[_0x2d69('0x1d')]['include']?_['map'](_0xcbbd95['options'][_0x2d69('0x20')],function(_0x41e884){return{'model':db[_0x41e884[_0x2d69('0x21')]],'as':_0x41e884['as'],'attributes':_0x41e884[_0x2d69('0x1f')],'include':_0x41e884['include']?_[_0x2d69('0x22')](_0x41e884['include'],function(_0x2a5a05){return{'model':db[_0x2a5a05[_0x2d69('0x21')]],'as':_0x2a5a05['as'],'attributes':_0x2a5a05['attributes'],'include':_0x2a5a05[_0x2d69('0x20')]?_[_0x2d69('0x22')](_0x2a5a05[_0x2d69('0x20')],function(_0x4fa121){return{'model':db[_0x4fa121[_0x2d69('0x21')]],'as':_0x4fa121['as'],'attributes':_0x4fa121['attributes']};}):[]};}):[]};}):[]:[]})[_0x2d69('0x10')](function(_0x3e3c82){logger[_0x2d69('0x11')](_0x2d69('0x23'),_0xcbbd95);logger[_0x2d69('0x24')](_0x2d69('0x23'),_0xcbbd95,JSON[_0x2d69('0x14')](_0x3e3c82));_0x5276a9(_0x3e3c82);})[_0x2d69('0x1a')](function(_0x3553c2){logger[_0x2d69('0x15')](_0x2d69('0x23'),_0x3553c2['message'],_0xcbbd95);_0x320936(_0x24746c[_0x2d69('0x15')](0x1f4,_0x3553c2[_0x2d69('0x18')]));});});};
\ No newline at end of file
index 71d41c1..ead664c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d13=['remove','update','register','squareProject:','./squareProject.events','save'];(function(_0x3aec88,_0x4440f4){var _0x841404=function(_0x16f205){while(--_0x16f205){_0x3aec88['push'](_0x3aec88['shift']());}};_0x841404(++_0x4440f4);}(_0x3d13,0x6a));var _0x33d1=function(_0x3e9659,_0x205a75){_0x3e9659=_0x3e9659-0x0;var _0x1a8209=_0x3d13[_0x3e9659];return _0x1a8209;};'use strict';var SquareProjectEvents=require(_0x33d1('0x0'));var events=[_0x33d1('0x1'),_0x33d1('0x2'),_0x33d1('0x3')];function createListener(_0x36764f,_0x124bbd){return function(_0x17ec33){_0x124bbd['emit'](_0x36764f,_0x17ec33);};}function removeListener(_0x464f92,_0x367607){return function(){SquareProjectEvents['removeListener'](_0x464f92,_0x367607);};}exports[_0x33d1('0x4')]=function(_0x35d162){for(var _0x2c2265=0x0,_0x61a506=events['length'];_0x2c2265<_0x61a506;_0x2c2265++){var _0x13c8ea=events[_0x2c2265];var _0x41e0a1=createListener(_0x33d1('0x5')+_0x13c8ea,_0x35d162);SquareProjectEvents['on'](_0x13c8ea,_0x41e0a1);}};
\ No newline at end of file
+var _0x5a27=['squareProject:','save','remove','removeListener'];(function(_0x37b529,_0x6724e7){var _0x116152=function(_0x36d367){while(--_0x36d367){_0x37b529['push'](_0x37b529['shift']());}};_0x116152(++_0x6724e7);}(_0x5a27,0x1b5));var _0x75a2=function(_0x54893c,_0x2b058d){_0x54893c=_0x54893c-0x0;var _0x4bf98f=_0x5a27[_0x54893c];return _0x4bf98f;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=[_0x75a2('0x0'),_0x75a2('0x1'),'update'];function createListener(_0x475cfa,_0x15f1e4){return function(_0x11accd){_0x15f1e4['emit'](_0x475cfa,_0x11accd);};}function removeListener(_0x3e147f,_0x361ea9){return function(){SquareProjectEvents[_0x75a2('0x2')](_0x3e147f,_0x361ea9);};}exports['register']=function(_0x1a717b){for(var _0x533742=0x0,_0x4ffce3=events['length'];_0x533742<_0x4ffce3;_0x533742++){var _0x5ce0e6=events[_0x533742];var _0x53e3f1=createListener(_0x75a2('0x3')+_0x5ce0e6,_0x1a717b);SquareProjectEvents['on'](_0x5ce0e6,_0x53e3f1);}};
\ No newline at end of file
index 0ea262a..2d3e611 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','index','/:id','isAuthenticated','show','/:id/download','download','post','create','put','update','destroy','exports','multer','path','connect-timeout','express'];(function(_0x23894d,_0x543b7f){var _0xa2f64c=function(_0x34e7d2){while(--_0x34e7d2){_0x23894d['push'](_0x23894d['shift']());}};_0xa2f64c(++_0x543b7f);}(_0x4975,0x86));var _0x5497=function(_0x4aa648,_0x28983a){_0x4aa648=_0x4aa648-0x0;var _0x2234e9=_0x4975[_0x4aa648];return _0x2234e9;};'use strict';var multer=require(_0x5497('0x0'));var util=require('util');var path=require(_0x5497('0x1'));var timeout=require(_0x5497('0x2'));var express=require(_0x5497('0x3'));var router=express[_0x5497('0x4')]();var fs_extra=require(_0x5497('0x5'));var auth=require(_0x5497('0x6'));var interaction=require(_0x5497('0x7'));var config=require(_0x5497('0x8'));var controller=require(_0x5497('0x9'));router[_0x5497('0xa')]('/',auth['isAuthenticated'](),controller[_0x5497('0xb')]);router['get'](_0x5497('0xc'),auth[_0x5497('0xd')](),controller[_0x5497('0xe')]);router['get'](_0x5497('0xf'),auth['isAuthenticated'](),controller[_0x5497('0x10')]);router[_0x5497('0x11')]('/',auth[_0x5497('0xd')](),controller[_0x5497('0x12')]);router[_0x5497('0x13')](_0x5497('0xc'),auth[_0x5497('0xd')](),controller[_0x5497('0x14')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x5497('0x15')]);module[_0x5497('0x16')]=router;
\ No newline at end of file
+var _0x7fbe=['/:id','show','/:id/download','create','put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','index'];(function(_0x3a507c,_0x13e8ee){var _0x1f34eb=function(_0x28645f){while(--_0x28645f){_0x3a507c['push'](_0x3a507c['shift']());}};_0x1f34eb(++_0x13e8ee);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x1c2e29,_0x3ad48a){_0x1c2e29=_0x1c2e29-0x0;var _0x39174d=_0x7fbe[_0x1c2e29];return _0x39174d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe7fb('0x0'));var timeout=require(_0xe7fb('0x1'));var express=require(_0xe7fb('0x2'));var router=express[_0xe7fb('0x3')]();var fs_extra=require(_0xe7fb('0x4'));var auth=require(_0xe7fb('0x5'));var interaction=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var controller=require(_0xe7fb('0x8'));router[_0xe7fb('0x9')]('/',auth[_0xe7fb('0xa')](),controller[_0xe7fb('0xb')]);router[_0xe7fb('0x9')](_0xe7fb('0xc'),auth['isAuthenticated'](),controller[_0xe7fb('0xd')]);router[_0xe7fb('0x9')](_0xe7fb('0xe'),auth[_0xe7fb('0xa')](),controller['download']);router['post']('/',auth[_0xe7fb('0xa')](),controller[_0xe7fb('0xf')]);router[_0xe7fb('0x10')](_0xe7fb('0xc'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x11')]);router[_0xe7fb('0x12')](_0xe7fb('0xc'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x13')]);module[_0xe7fb('0x14')]=router;
\ No newline at end of file
index 7b32545..45c5a9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31f0=['getDataValue','savePath','substring','sequelize','STRING','VIRTUAL'];(function(_0x5d61c0,_0x39e7cb){var _0x5d0d03=function(_0x523f11){while(--_0x523f11){_0x5d61c0['push'](_0x5d61c0['shift']());}};_0x5d0d03(++_0x39e7cb);}(_0x31f0,0xb7));var _0x031f=function(_0x2a2931,_0x6f3611){_0x2a2931=_0x2a2931-0x0;var _0x41f43d=_0x31f0[_0x2a2931];return _0x41f43d;};'use strict';var Sequelize=require(_0x031f('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x031f('0x1')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x031f('0x1')]},'context':{'type':Sequelize[_0x031f('0x1')]},'extension':{'type':Sequelize[_0x031f('0x1')]},'priority':{'type':Sequelize[_0x031f('0x1')]},'accountcode':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0x031f('0x1')]},'projectName':{'type':Sequelize[_0x031f('0x1')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x031f('0x2')],'get':function(){var _0x487e65='';var _0x365f59=this[_0x031f('0x3')](_0x031f('0x4'));if(_0x365f59){_0x487e65=_0x365f59[_0x031f('0x5')](_0x365f59['lastIndexOf']('.'));}return _0x487e65;}}};
\ No newline at end of file
+var _0xae24=['VIRTUAL','savePath','sequelize','STRING'];(function(_0x3c0450,_0x12c0d6){var _0x29ff01=function(_0xeba11e){while(--_0xeba11e){_0x3c0450['push'](_0x3c0450['shift']());}};_0x29ff01(++_0x12c0d6);}(_0xae24,0x182));var _0x4ae2=function(_0x313fa6,_0x31d3ad){_0x313fa6=_0x313fa6-0x0;var _0x4fee35=_0xae24[_0x313fa6];return _0x4fee35;};'use strict';var Sequelize=require(_0x4ae2('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x4ae2('0x1')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x4ae2('0x1')]},'context':{'type':Sequelize[_0x4ae2('0x1')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x4ae2('0x1')]},'dnid':{'type':Sequelize['STRING']},'projectName':{'type':Sequelize[_0x4ae2('0x1')]},'saveName':{'type':Sequelize[_0x4ae2('0x1')]},'filename':{'type':Sequelize[_0x4ae2('0x1')]},'savePath':{'type':Sequelize[_0x4ae2('0x1')]},'format':{'type':Sequelize[_0x4ae2('0x2')],'get':function(){var _0x307247='';var _0x4f2e84=this['getDataValue'](_0x4ae2('0x3'));if(_0x4f2e84){_0x307247=_0x4f2e84['substring'](_0x4f2e84['lastIndexOf']('.'));}return _0x307247;}}};
\ No newline at end of file
index 613f3b7..b96df97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcad5=['create','body','find','../../components/encryptor','uniqueid','savePath','filename','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','SquareRecording\x20not\x20found','download','extname','unlink','message','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','update','then','destroy','error','stack','name','send','SquareRecording','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','filter','where','merge','map','options','includeAll','include','rows','catch','show','params'];(function(_0x11df66,_0x9eabf){var _0xc2dca1=function(_0x2f8c9a){while(--_0x2f8c9a){_0x11df66['push'](_0x11df66['shift']());}};_0xc2dca1(++_0x9eabf);}(_0xcad5,0x1a3));var _0x5cad=function(_0x2b519d,_0x23b1a2){_0x2b519d=_0x2b519d-0x0;var _0x4eb64d=_0xcad5[_0x2b519d];return _0x4eb64d;};'use strict';var emlformat=require(_0x5cad('0x0'));var rimraf=require(_0x5cad('0x1'));var zipdir=require(_0x5cad('0x2'));var jsonpatch=require(_0x5cad('0x3'));var rp=require(_0x5cad('0x4'));var moment=require(_0x5cad('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x5cad('0x6'));var util=require(_0x5cad('0x7'));var path=require('path');var sox=require(_0x5cad('0x8'));var csv=require('to-csv');var ejs=require(_0x5cad('0x9'));var fs=require('fs');var fs_extra=require(_0x5cad('0xa'));var _=require(_0x5cad('0xb'));var squel=require(_0x5cad('0xc'));var crypto=require(_0x5cad('0xd'));var jsforce=require(_0x5cad('0xe'));var deskjs=require(_0x5cad('0xf'));var toCsv=require('to-csv');var querystring=require(_0x5cad('0x10'));var Papa=require(_0x5cad('0x11'));var Redis=require(_0x5cad('0x12'));var authService=require(_0x5cad('0x13'));var qs=require(_0x5cad('0x14'));var as=require(_0x5cad('0x15'));var hardwareService=require(_0x5cad('0x16'));var logger=require(_0x5cad('0x17'))('api');var utils=require(_0x5cad('0x18'));var config=require(_0x5cad('0x19'));var licenseUtil=require(_0x5cad('0x1a'));var db=require(_0x5cad('0x1b'))['db'];function respondWithStatusCode(_0x96c4ea,_0x23bf5a){_0x23bf5a=_0x23bf5a||0xcc;return function(_0x57224e){if(_0x57224e){return _0x96c4ea[_0x5cad('0x1c')](_0x23bf5a);}return _0x96c4ea[_0x5cad('0x1d')](_0x23bf5a)[_0x5cad('0x1e')]();};}function respondWithResult(_0x142f21,_0x40e7d6){_0x40e7d6=_0x40e7d6||0xc8;return function(_0x47fafe){if(_0x47fafe){return _0x142f21['status'](_0x40e7d6)['json'](_0x47fafe);}};}function respondWithFilteredResult(_0x1ba98f,_0x207e2b){return function(_0x72e54){if(_0x72e54){var _0x3aa594=typeof _0x207e2b[_0x5cad('0x1f')]===_0x5cad('0x20')&&typeof _0x207e2b[_0x5cad('0x21')]===_0x5cad('0x20');var _0x21c036=_0x72e54[_0x5cad('0x22')];var _0x245747=_0x3aa594?0x0:_0x207e2b[_0x5cad('0x1f')];var _0x27028e=_0x3aa594?_0x72e54[_0x5cad('0x22')]:_0x207e2b[_0x5cad('0x1f')]+_0x207e2b[_0x5cad('0x21')];var _0x27cfcf;if(_0x27028e>=_0x21c036){_0x27028e=_0x21c036;_0x27cfcf=0xc8;}else{_0x27cfcf=0xce;}_0x1ba98f['status'](_0x27cfcf);return _0x1ba98f[_0x5cad('0x23')](_0x5cad('0x24'),_0x245747+'-'+_0x27028e+'/'+_0x21c036)[_0x5cad('0x25')](_0x72e54);}return null;};}function patchUpdates(_0x139602){return function(_0x4c2fc0){try{jsonpatch['apply'](_0x4c2fc0,_0x139602,!![]);}catch(_0x5eb5d6){return BPromise['reject'](_0x5eb5d6);}return _0x4c2fc0['save']();};}function saveUpdates(_0x51b279,_0xc0ae4d){return function(_0xd1b9a6){if(_0xd1b9a6){return _0xd1b9a6[_0x5cad('0x26')](_0x51b279)[_0x5cad('0x27')](function(_0x34286e){return _0x34286e;});}return null;};}function removeEntity(_0x158dfa,_0x4d2e9c){return function(_0x49f6a6){if(_0x49f6a6){return _0x49f6a6[_0x5cad('0x28')]()[_0x5cad('0x27')](function(){_0x158dfa[_0x5cad('0x1d')](0xcc)[_0x5cad('0x1e')]();});}};}function handleEntityNotFound(_0xca4b86,_0x137fe0){return function(_0x54dbd3){if(!_0x54dbd3){_0xca4b86['sendStatus'](0x194);}return _0x54dbd3;};}function handleError(_0x2ac19f,_0x252d20){_0x252d20=_0x252d20||0x1f4;return function(_0x194604){logger[_0x5cad('0x29')](_0x194604[_0x5cad('0x2a')]);if(_0x194604[_0x5cad('0x2b')]){delete _0x194604[_0x5cad('0x2b')];}_0x2ac19f[_0x5cad('0x1d')](_0x252d20)[_0x5cad('0x2c')](_0x194604);};}exports['index']=function(_0x2ffbea,_0x44845d){var _0x197ffb={},_0x550913={},_0x35b4ec={'count':0x0,'rows':[]};var _0xac1cad=_['map'](db[_0x5cad('0x2d')][_0x5cad('0x2e')],function(_0x5789d2){return{'name':_0x5789d2[_0x5cad('0x2f')],'type':_0x5789d2[_0x5cad('0x30')][_0x5cad('0x31')]};});_0x550913[_0x5cad('0x32')]=_['map'](_0xac1cad,_0x5cad('0x2b'));_0x550913[_0x5cad('0x33')]=_[_0x5cad('0x34')](_0x2ffbea[_0x5cad('0x33')]);_0x550913[_0x5cad('0x35')]=_[_0x5cad('0x36')](_0x550913[_0x5cad('0x32')],_0x550913[_0x5cad('0x33')]);_0x197ffb[_0x5cad('0x37')]=_[_0x5cad('0x36')](_0x550913[_0x5cad('0x32')],qs[_0x5cad('0x38')](_0x2ffbea[_0x5cad('0x33')]['fields']));_0x197ffb['attributes']=_0x197ffb['attributes'][_0x5cad('0x39')]?_0x197ffb[_0x5cad('0x37')]:_0x550913[_0x5cad('0x32')];if(!_0x2ffbea[_0x5cad('0x33')]['hasOwnProperty'](_0x5cad('0x3a'))){_0x197ffb[_0x5cad('0x21')]=qs[_0x5cad('0x21')](_0x2ffbea[_0x5cad('0x33')][_0x5cad('0x21')]);_0x197ffb[_0x5cad('0x1f')]=qs[_0x5cad('0x1f')](_0x2ffbea[_0x5cad('0x33')]['offset']);}_0x197ffb['order']=qs[_0x5cad('0x3b')](_0x2ffbea['query'][_0x5cad('0x3b')]);_0x197ffb['where']=qs['filters'](_['pick'](_0x2ffbea[_0x5cad('0x33')],_0x550913[_0x5cad('0x35')]),_0xac1cad);if(_0x2ffbea[_0x5cad('0x33')][_0x5cad('0x3c')]){_0x197ffb[_0x5cad('0x3d')]=_[_0x5cad('0x3e')](_0x197ffb[_0x5cad('0x3d')],{'$or':_[_0x5cad('0x3f')](_0xac1cad,function(_0x20c48a){if(_0x20c48a[_0x5cad('0x30')]!=='VIRTUAL'){var _0xda4ac2={};_0xda4ac2[_0x20c48a[_0x5cad('0x2b')]]={'$like':'%'+_0x2ffbea[_0x5cad('0x33')][_0x5cad('0x3c')]+'%'};return _0xda4ac2;}})});}_0x197ffb=_[_0x5cad('0x3e')]({},_0x197ffb,_0x2ffbea[_0x5cad('0x40')]);var _0x455611={'where':_0x197ffb[_0x5cad('0x3d')]};return db[_0x5cad('0x2d')][_0x5cad('0x22')](_0x455611)[_0x5cad('0x27')](function(_0x465feb){_0x35b4ec[_0x5cad('0x22')]=_0x465feb;if(_0x2ffbea['query'][_0x5cad('0x41')]){_0x197ffb[_0x5cad('0x42')]=[{'all':!![]}];}return db[_0x5cad('0x2d')]['findAll'](_0x197ffb);})['then'](function(_0x3c9aec){_0x35b4ec[_0x5cad('0x43')]=_0x3c9aec;return _0x35b4ec;})[_0x5cad('0x27')](respondWithFilteredResult(_0x44845d,_0x197ffb))[_0x5cad('0x44')](handleError(_0x44845d,null));};exports[_0x5cad('0x45')]=function(_0x4eab8f,_0x28c424){var _0x5122c7={'raw':!![],'where':{'id':_0x4eab8f[_0x5cad('0x46')]['id']}},_0x3d4a80={};_0x3d4a80[_0x5cad('0x32')]=_[_0x5cad('0x34')](db[_0x5cad('0x2d')][_0x5cad('0x2e')]);_0x3d4a80[_0x5cad('0x33')]=_[_0x5cad('0x34')](_0x4eab8f['query']);_0x3d4a80[_0x5cad('0x35')]=_[_0x5cad('0x36')](_0x3d4a80['model'],_0x3d4a80[_0x5cad('0x33')]);_0x5122c7['attributes']=_[_0x5cad('0x36')](_0x3d4a80[_0x5cad('0x32')],qs[_0x5cad('0x38')](_0x4eab8f[_0x5cad('0x33')][_0x5cad('0x38')]));_0x5122c7[_0x5cad('0x37')]=_0x5122c7[_0x5cad('0x37')][_0x5cad('0x39')]?_0x5122c7[_0x5cad('0x37')]:_0x3d4a80[_0x5cad('0x32')];if(_0x4eab8f[_0x5cad('0x33')][_0x5cad('0x41')]){_0x5122c7['include']=[{'all':!![]}];}_0x5122c7=_[_0x5cad('0x3e')]({},_0x5122c7,_0x4eab8f[_0x5cad('0x40')]);return db[_0x5cad('0x2d')]['find'](_0x5122c7)[_0x5cad('0x27')](handleEntityNotFound(_0x28c424,null))['then'](respondWithResult(_0x28c424,null))['catch'](handleError(_0x28c424,null));};exports[_0x5cad('0x47')]=function(_0x21e2a6,_0x141982){return db[_0x5cad('0x2d')]['create'](_0x21e2a6['body'],{})[_0x5cad('0x27')](respondWithResult(_0x141982,0xc9))[_0x5cad('0x44')](handleError(_0x141982,null));};exports[_0x5cad('0x26')]=function(_0x247ca5,_0x5adbd7){if(_0x247ca5['body']['id']){delete _0x247ca5[_0x5cad('0x48')]['id'];}return db[_0x5cad('0x2d')][_0x5cad('0x49')]({'where':{'id':_0x247ca5[_0x5cad('0x46')]['id']}})[_0x5cad('0x27')](handleEntityNotFound(_0x5adbd7,null))[_0x5cad('0x27')](saveUpdates(_0x247ca5[_0x5cad('0x48')],null))[_0x5cad('0x27')](respondWithResult(_0x5adbd7,null))[_0x5cad('0x44')](handleError(_0x5adbd7,null));};exports['download']=function(_0x211f02,_0x4576e0,_0x425384){var _0x10db66=require(_0x5cad('0x4a'));var _0x25f32f=![];var _0x40d939={};if(_0x211f02[_0x5cad('0x33')][_0x5cad('0x30')]&&_0x211f02['query']['type']===_0x5cad('0x4b')){_0x40d939['uniqueid']=_0x211f02['params']['id'];}else{_0x40d939['id']=_0x211f02[_0x5cad('0x46')]['id'];}return db[_0x5cad('0x2d')]['find']({'where':_0x40d939,'attributes':['id',_0x5cad('0x4c'),_0x5cad('0x4d')],'raw':!![]})[_0x5cad('0x27')](handleEntityNotFound(_0x4576e0,null))['then'](function(_0x1870bb){if(_0x1870bb){var _0x180e6a=_0x1870bb['savePath'];var _0x19ab0c=util['format'](_0x5cad('0x4e'),_0x180e6a);if(fs[_0x5cad('0x4f')](_0x19ab0c)){_0x25f32f=!![];return _0x10db66[_0x5cad('0x50')](_0x19ab0c,_0x180e6a,config[_0x5cad('0x51')][_0x5cad('0x52')])[_0x5cad('0x27')](function(){return _0x1870bb;});}return _0x1870bb;}})[_0x5cad('0x27')](function(_0x580c12){if(_0x580c12){var _0x56d66a=_0x580c12[_0x5cad('0x4c')];if(!fs[_0x5cad('0x4f')](_0x56d66a)){throw new db[(_0x5cad('0x53'))]['ValidationError'](_0x5cad('0x54'));}if(_0x580c12['filename']){return _0x4576e0[_0x5cad('0x55')](_0x56d66a,_0x580c12['filename']+path[_0x5cad('0x56')](_0x56d66a),function(){if(_0x25f32f){fs[_0x5cad('0x57')](_0x56d66a);}});}else{return _0x4576e0[_0x5cad('0x55')](_0x56d66a,function(_0x2faa61){if(_0x25f32f){fs[_0x5cad('0x57')](_0x56d66a);}});}}})[_0x5cad('0x44')](function(_0x90fc4b){if(_0x90fc4b[_0x5cad('0x58')]==='SquareRecording\x20not\x20found'){_0x4576e0[_0x5cad('0x1d')](0x194)['send'](_0x5cad('0x59'));}else{return handleError(_0x4576e0,null);}});};exports[_0x5cad('0x28')]=function(_0xf59aa2,_0x564094){return db[_0x5cad('0x2d')][_0x5cad('0x49')]({'where':{'id':_0xf59aa2[_0x5cad('0x46')]['id']}})[_0x5cad('0x27')](function(_0x3a671f){if(_[_0x5cad('0x5a')](_0x3a671f)){throw new ReferenceError(_0x5cad('0x5b'));}return _0x3a671f;})[_0x5cad('0x27')](function(_0x325160){var _0x2b88f4=_0x325160[_0x5cad('0x4c')];logger[_0x5cad('0x5c')](_0x5cad('0x5d'),_0x2b88f4);if(!_[_0x5cad('0x5a')](_0x325160[_0x5cad('0x4c')])&&fs['existsSync'](_0x2b88f4)){logger[_0x5cad('0x5c')](_0x5cad('0x5e')+_0x2b88f4+_0x5cad('0x5f'));fs['unlinkSync'](_0x2b88f4);}_0x2b88f4=_0x2b88f4+_0x5cad('0x60');if(!_[_0x5cad('0x5a')](_0x325160[_0x5cad('0x4c')])&&fs[_0x5cad('0x4f')](_0x2b88f4)){logger[_0x5cad('0x5c')](_0x5cad('0x5e')+_0x2b88f4+_0x5cad('0x5f'));fs[_0x5cad('0x61')](_0x2b88f4);}return _0x325160;})[_0x5cad('0x27')](function(_0x3cc5c0){if(!_0x3cc5c0)throw new InternalError();return _0x3cc5c0[_0x5cad('0x28')]();})[_0x5cad('0x27')](function(){_0x564094[_0x5cad('0x1d')](0xcc)[_0x5cad('0x1e')]();})[_0x5cad('0x44')](handleError(_0x564094,null));};
\ No newline at end of file
+var _0xc1c6=['../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','sendStatus','error','name','send','index','map','SquareRecording','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','includeAll','include','findAll','rows','catch','show','params','keys','options','create','body','find','download','../../components/encryptor','uniqueid','savePath','filename','format','decryptFile','secrets','recording','Sequelize','SquareRecording\x20not\x20found','extname','unlink','message','Not\x20found','isNil','info','cancellazione\x20fisica\x20documento\x20%s','existsSync','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x5d9ca5,_0x41a09b){var _0x4174f3=function(_0xbfa406){while(--_0xbfa406){_0x5d9ca5['push'](_0x5d9ca5['shift']());}};_0x4174f3(++_0x41a09b);}(_0xc1c6,0x118));var _0x6c1c=function(_0x24e9b0,_0x5b8107){_0x24e9b0=_0x24e9b0-0x0;var _0x378c3a=_0xc1c6[_0x24e9b0];return _0x378c3a;};'use strict';var emlformat=require(_0x6c1c('0x0'));var rimraf=require(_0x6c1c('0x1'));var zipdir=require(_0x6c1c('0x2'));var jsonpatch=require(_0x6c1c('0x3'));var rp=require(_0x6c1c('0x4'));var moment=require(_0x6c1c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x6c1c('0x6'));var util=require(_0x6c1c('0x7'));var path=require(_0x6c1c('0x8'));var sox=require('sox');var csv=require(_0x6c1c('0x9'));var ejs=require(_0x6c1c('0xa'));var fs=require('fs');var fs_extra=require(_0x6c1c('0xb'));var _=require('lodash');var squel=require(_0x6c1c('0xc'));var crypto=require(_0x6c1c('0xd'));var jsforce=require(_0x6c1c('0xe'));var deskjs=require(_0x6c1c('0xf'));var toCsv=require('to-csv');var querystring=require(_0x6c1c('0x10'));var Papa=require(_0x6c1c('0x11'));var Redis=require(_0x6c1c('0x12'));var authService=require(_0x6c1c('0x13'));var qs=require(_0x6c1c('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6c1c('0x15'));var logger=require(_0x6c1c('0x16'))(_0x6c1c('0x17'));var utils=require('../../config/utils');var config=require(_0x6c1c('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x6c1c('0x19'))['db'];function respondWithStatusCode(_0x2e7953,_0x24e2ae){_0x24e2ae=_0x24e2ae||0xcc;return function(_0x1820c4){if(_0x1820c4){return _0x2e7953['sendStatus'](_0x24e2ae);}return _0x2e7953['status'](_0x24e2ae)[_0x6c1c('0x1a')]();};}function respondWithResult(_0xc0406f,_0x406cb5){_0x406cb5=_0x406cb5||0xc8;return function(_0x4eb822){if(_0x4eb822){return _0xc0406f[_0x6c1c('0x1b')](_0x406cb5)[_0x6c1c('0x1c')](_0x4eb822);}};}function respondWithFilteredResult(_0x56d76d,_0x1685c7){return function(_0x4c7d60){if(_0x4c7d60){var _0x53d211=typeof _0x1685c7[_0x6c1c('0x1d')]===_0x6c1c('0x1e')&&typeof _0x1685c7[_0x6c1c('0x1f')]===_0x6c1c('0x1e');var _0x2b98cd=_0x4c7d60[_0x6c1c('0x20')];var _0x16228a=_0x53d211?0x0:_0x1685c7[_0x6c1c('0x1d')];var _0x51c238=_0x53d211?_0x4c7d60[_0x6c1c('0x20')]:_0x1685c7['offset']+_0x1685c7[_0x6c1c('0x1f')];var _0x4d71ef;if(_0x51c238>=_0x2b98cd){_0x51c238=_0x2b98cd;_0x4d71ef=0xc8;}else{_0x4d71ef=0xce;}_0x56d76d[_0x6c1c('0x1b')](_0x4d71ef);return _0x56d76d[_0x6c1c('0x21')](_0x6c1c('0x22'),_0x16228a+'-'+_0x51c238+'/'+_0x2b98cd)[_0x6c1c('0x1c')](_0x4c7d60);}return null;};}function patchUpdates(_0x14bad6){return function(_0x3403af){try{jsonpatch[_0x6c1c('0x23')](_0x3403af,_0x14bad6,!![]);}catch(_0x3b5c4b){return BPromise[_0x6c1c('0x24')](_0x3b5c4b);}return _0x3403af[_0x6c1c('0x25')]();};}function saveUpdates(_0x16f7bc,_0x4e9c44){return function(_0x31a5f2){if(_0x31a5f2){return _0x31a5f2[_0x6c1c('0x26')](_0x16f7bc)['then'](function(_0x4ef0b6){return _0x4ef0b6;});}return null;};}function removeEntity(_0x494e7c,_0x6453b2){return function(_0x2833c0){if(_0x2833c0){return _0x2833c0[_0x6c1c('0x27')]()[_0x6c1c('0x28')](function(){_0x494e7c[_0x6c1c('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53bd63,_0x1dc4ff){return function(_0x5b2f9c){if(!_0x5b2f9c){_0x53bd63[_0x6c1c('0x29')](0x194);}return _0x5b2f9c;};}function handleError(_0x31e9b6,_0x2ccfbf){_0x2ccfbf=_0x2ccfbf||0x1f4;return function(_0x253836){logger[_0x6c1c('0x2a')](_0x253836['stack']);if(_0x253836[_0x6c1c('0x2b')]){delete _0x253836[_0x6c1c('0x2b')];}_0x31e9b6['status'](_0x2ccfbf)[_0x6c1c('0x2c')](_0x253836);};}exports[_0x6c1c('0x2d')]=function(_0x552611,_0x5bc62f){var _0x50976f={},_0x3a24cb={},_0x10970={'count':0x0,'rows':[]};var _0x1d41c5=_[_0x6c1c('0x2e')](db[_0x6c1c('0x2f')][_0x6c1c('0x30')],function(_0x57f7c2){return{'name':_0x57f7c2[_0x6c1c('0x31')],'type':_0x57f7c2[_0x6c1c('0x32')]['key']};});_0x3a24cb[_0x6c1c('0x33')]=_[_0x6c1c('0x2e')](_0x1d41c5,_0x6c1c('0x2b'));_0x3a24cb[_0x6c1c('0x34')]=_['keys'](_0x552611[_0x6c1c('0x34')]);_0x3a24cb[_0x6c1c('0x35')]=_[_0x6c1c('0x36')](_0x3a24cb[_0x6c1c('0x33')],_0x3a24cb[_0x6c1c('0x34')]);_0x50976f[_0x6c1c('0x37')]=_['intersection'](_0x3a24cb[_0x6c1c('0x33')],qs[_0x6c1c('0x38')](_0x552611[_0x6c1c('0x34')]['fields']));_0x50976f['attributes']=_0x50976f[_0x6c1c('0x37')][_0x6c1c('0x39')]?_0x50976f['attributes']:_0x3a24cb['model'];if(!_0x552611[_0x6c1c('0x34')][_0x6c1c('0x3a')](_0x6c1c('0x3b'))){_0x50976f['limit']=qs[_0x6c1c('0x1f')](_0x552611[_0x6c1c('0x34')][_0x6c1c('0x1f')]);_0x50976f[_0x6c1c('0x1d')]=qs[_0x6c1c('0x1d')](_0x552611[_0x6c1c('0x34')]['offset']);}_0x50976f[_0x6c1c('0x3c')]=qs[_0x6c1c('0x3d')](_0x552611[_0x6c1c('0x34')][_0x6c1c('0x3d')]);_0x50976f[_0x6c1c('0x3e')]=qs['filters'](_['pick'](_0x552611[_0x6c1c('0x34')],_0x3a24cb[_0x6c1c('0x35')]),_0x1d41c5);if(_0x552611[_0x6c1c('0x34')][_0x6c1c('0x3f')]){_0x50976f[_0x6c1c('0x3e')]=_['merge'](_0x50976f[_0x6c1c('0x3e')],{'$or':_[_0x6c1c('0x2e')](_0x1d41c5,function(_0x55f837){if(_0x55f837[_0x6c1c('0x32')]!=='VIRTUAL'){var _0x3c0f2d={};_0x3c0f2d[_0x55f837['name']]={'$like':'%'+_0x552611[_0x6c1c('0x34')][_0x6c1c('0x3f')]+'%'};return _0x3c0f2d;}})});}_0x50976f=_[_0x6c1c('0x40')]({},_0x50976f,_0x552611['options']);var _0x3ac507={'where':_0x50976f['where']};return db['SquareRecording'][_0x6c1c('0x20')](_0x3ac507)['then'](function(_0x358187){_0x10970['count']=_0x358187;if(_0x552611[_0x6c1c('0x34')][_0x6c1c('0x41')]){_0x50976f[_0x6c1c('0x42')]=[{'all':!![]}];}return db[_0x6c1c('0x2f')][_0x6c1c('0x43')](_0x50976f);})['then'](function(_0x3abe2f){_0x10970[_0x6c1c('0x44')]=_0x3abe2f;return _0x10970;})['then'](respondWithFilteredResult(_0x5bc62f,_0x50976f))[_0x6c1c('0x45')](handleError(_0x5bc62f,null));};exports[_0x6c1c('0x46')]=function(_0x667f28,_0x5283d1){var _0x274321={'raw':!![],'where':{'id':_0x667f28[_0x6c1c('0x47')]['id']}},_0x13c9d2={};_0x13c9d2['model']=_[_0x6c1c('0x48')](db[_0x6c1c('0x2f')]['rawAttributes']);_0x13c9d2[_0x6c1c('0x34')]=_[_0x6c1c('0x48')](_0x667f28[_0x6c1c('0x34')]);_0x13c9d2[_0x6c1c('0x35')]=_[_0x6c1c('0x36')](_0x13c9d2[_0x6c1c('0x33')],_0x13c9d2[_0x6c1c('0x34')]);_0x274321[_0x6c1c('0x37')]=_[_0x6c1c('0x36')](_0x13c9d2[_0x6c1c('0x33')],qs['fields'](_0x667f28['query'][_0x6c1c('0x38')]));_0x274321[_0x6c1c('0x37')]=_0x274321[_0x6c1c('0x37')][_0x6c1c('0x39')]?_0x274321[_0x6c1c('0x37')]:_0x13c9d2[_0x6c1c('0x33')];if(_0x667f28[_0x6c1c('0x34')][_0x6c1c('0x41')]){_0x274321[_0x6c1c('0x42')]=[{'all':!![]}];}_0x274321=_[_0x6c1c('0x40')]({},_0x274321,_0x667f28[_0x6c1c('0x49')]);return db['SquareRecording']['find'](_0x274321)['then'](handleEntityNotFound(_0x5283d1,null))[_0x6c1c('0x28')](respondWithResult(_0x5283d1,null))['catch'](handleError(_0x5283d1,null));};exports[_0x6c1c('0x4a')]=function(_0x3913ae,_0x3284ce){return db[_0x6c1c('0x2f')][_0x6c1c('0x4a')](_0x3913ae[_0x6c1c('0x4b')],{})['then'](respondWithResult(_0x3284ce,0xc9))[_0x6c1c('0x45')](handleError(_0x3284ce,null));};exports[_0x6c1c('0x26')]=function(_0x5b041e,_0x315ae8){if(_0x5b041e[_0x6c1c('0x4b')]['id']){delete _0x5b041e[_0x6c1c('0x4b')]['id'];}return db['SquareRecording'][_0x6c1c('0x4c')]({'where':{'id':_0x5b041e[_0x6c1c('0x47')]['id']}})['then'](handleEntityNotFound(_0x315ae8,null))[_0x6c1c('0x28')](saveUpdates(_0x5b041e[_0x6c1c('0x4b')],null))[_0x6c1c('0x28')](respondWithResult(_0x315ae8,null))[_0x6c1c('0x45')](handleError(_0x315ae8,null));};exports[_0x6c1c('0x4d')]=function(_0x4045d6,_0x587701,_0x35a5e8){var _0x588219=require(_0x6c1c('0x4e'));var _0x53fcb2=![];var _0x1d6a28={};if(_0x4045d6[_0x6c1c('0x34')][_0x6c1c('0x32')]&&_0x4045d6[_0x6c1c('0x34')]['type']===_0x6c1c('0x4f')){_0x1d6a28[_0x6c1c('0x4f')]=_0x4045d6[_0x6c1c('0x47')]['id'];}else{_0x1d6a28['id']=_0x4045d6['params']['id'];}return db[_0x6c1c('0x2f')][_0x6c1c('0x4c')]({'where':_0x1d6a28,'attributes':['id',_0x6c1c('0x50'),_0x6c1c('0x51')],'raw':!![]})[_0x6c1c('0x28')](handleEntityNotFound(_0x587701,null))[_0x6c1c('0x28')](function(_0x1f248b){if(_0x1f248b){var _0x19db2b=_0x1f248b[_0x6c1c('0x50')];var _0xdfc6a=util[_0x6c1c('0x52')]('%s.cypher',_0x19db2b);if(fs['existsSync'](_0xdfc6a)){_0x53fcb2=!![];return _0x588219[_0x6c1c('0x53')](_0xdfc6a,_0x19db2b,config[_0x6c1c('0x54')][_0x6c1c('0x55')])[_0x6c1c('0x28')](function(){return _0x1f248b;});}return _0x1f248b;}})[_0x6c1c('0x28')](function(_0x48e558){if(_0x48e558){var _0x397a5a=_0x48e558['savePath'];if(!fs['existsSync'](_0x397a5a)){throw new db[(_0x6c1c('0x56'))]['ValidationError'](_0x6c1c('0x57'));}if(_0x48e558['filename']){return _0x587701[_0x6c1c('0x4d')](_0x397a5a,_0x48e558['filename']+path[_0x6c1c('0x58')](_0x397a5a),function(){if(_0x53fcb2){fs[_0x6c1c('0x59')](_0x397a5a);}});}else{return _0x587701[_0x6c1c('0x4d')](_0x397a5a,function(_0x5bd46d){if(_0x53fcb2){fs[_0x6c1c('0x59')](_0x397a5a);}});}}})[_0x6c1c('0x45')](function(_0x2b2e68){if(_0x2b2e68[_0x6c1c('0x5a')]==='SquareRecording\x20not\x20found'){_0x587701['status'](0x194)['send'](_0x6c1c('0x5b'));}else{return handleError(_0x587701,null);}});};exports['destroy']=function(_0x19d9a3,_0x26dbb2){return db[_0x6c1c('0x2f')][_0x6c1c('0x4c')]({'where':{'id':_0x19d9a3['params']['id']}})[_0x6c1c('0x28')](function(_0x5a7354){if(_[_0x6c1c('0x5c')](_0x5a7354)){throw new ReferenceError('Entity\x20not\x20found');}return _0x5a7354;})[_0x6c1c('0x28')](function(_0x4efa24){var _0x52ce88=_0x4efa24[_0x6c1c('0x50')];logger[_0x6c1c('0x5d')](_0x6c1c('0x5e'),_0x52ce88);if(!_[_0x6c1c('0x5c')](_0x4efa24[_0x6c1c('0x50')])&&fs[_0x6c1c('0x5f')](_0x52ce88)){logger[_0x6c1c('0x5d')](_0x6c1c('0x60')+_0x52ce88+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x6c1c('0x61')](_0x52ce88);}_0x52ce88=_0x52ce88+_0x6c1c('0x62');if(!_['isNil'](_0x4efa24[_0x6c1c('0x50')])&&fs[_0x6c1c('0x5f')](_0x52ce88)){logger['info'](_0x6c1c('0x60')+_0x52ce88+_0x6c1c('0x63'));fs[_0x6c1c('0x61')](_0x52ce88);}return _0x4efa24;})['then'](function(_0x113bca){if(!_0x113bca)throw new InternalError();return _0x113bca['destroy']();})[_0x6c1c('0x28')](function(){_0x26dbb2['status'](0xcc)[_0x6c1c('0x1a')]();})[_0x6c1c('0x45')](handleError(_0x26dbb2,null));};
\ No newline at end of file
index 4ba052d..0557b07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39d2=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareRecording.attributes','exports','define','square_recordings','lodash','../../config/logger'];(function(_0x2fe600,_0x37185c){var _0x1be4c2=function(_0x438b0b){while(--_0x438b0b){_0x2fe600['push'](_0x2fe600['shift']());}};_0x1be4c2(++_0x37185c);}(_0x39d2,0xf5));var _0x239d=function(_0x186376,_0x5d988a){_0x186376=_0x186376-0x0;var _0x2dbdd9=_0x39d2[_0x186376];return _0x2dbdd9;};'use strict';var _=require(_0x239d('0x0'));var util=require('util');var logger=require(_0x239d('0x1'))(_0x239d('0x2'));var moment=require(_0x239d('0x3'));var BPromise=require(_0x239d('0x4'));var rp=require(_0x239d('0x5'));var fs=require('fs');var path=require(_0x239d('0x6'));var rimraf=require(_0x239d('0x7'));var config=require(_0x239d('0x8'));var attributes=require(_0x239d('0x9'));module[_0x239d('0xa')]=function(_0x12302d,_0x1504c1){return _0x12302d[_0x239d('0xb')]('SquareRecording',attributes,{'tableName':_0x239d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xda81=['request-promise','path','../../config/environment','./squareRecording.attributes','define','SquareRecording','square_recordings','lodash','util','../../config/logger','moment','bluebird'];(function(_0x1b734e,_0x456cd8){var _0x841eed=function(_0x15da60){while(--_0x15da60){_0x1b734e['push'](_0x1b734e['shift']());}};_0x841eed(++_0x456cd8);}(_0xda81,0x1c3));var _0x1da8=function(_0x3f69dd,_0x560dc0){_0x3f69dd=_0x3f69dd-0x0;var _0x4c657c=_0xda81[_0x3f69dd];return _0x4c657c;};'use strict';var _=require(_0x1da8('0x0'));var util=require(_0x1da8('0x1'));var logger=require(_0x1da8('0x2'))('api');var moment=require(_0x1da8('0x3'));var BPromise=require(_0x1da8('0x4'));var rp=require(_0x1da8('0x5'));var fs=require('fs');var path=require(_0x1da8('0x6'));var rimraf=require('rimraf');var config=require(_0x1da8('0x7'));var attributes=require(_0x1da8('0x8'));module['exports']=function(_0x1aef7a,_0x57e8f6){return _0x1aef7a[_0x1da8('0x9')](_0x1da8('0xa'),attributes,{'tableName':_0x1da8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 935e905..49d4a2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd572=['client','http','request','then','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','CreateSquareRecording','create','body','options','raw','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0xd572,0xc7));var _0x2d57=function(_0x2bb47b,_0x14df3){_0x2bb47b=_0x2bb47b-0x0;var _0x42edfa=_0xd572[_0x2bb47b];return _0x42edfa;};'use strict';var _=require('lodash');var util=require(_0x2d57('0x0'));var moment=require(_0x2d57('0x1'));var BPromise=require(_0x2d57('0x2'));var rs=require(_0x2d57('0x3'));var fs=require('fs');var Redis=require(_0x2d57('0x4'));var db=require(_0x2d57('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x2d57('0x6'))('rpc');var config=require(_0x2d57('0x7'));var jayson=require(_0x2d57('0x8'));var client=jayson[_0x2d57('0x9')][_0x2d57('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x54c7af,_0x36fedb,_0x3454a1){return new BPromise(function(_0x52db0e,_0x26e510){return client[_0x2d57('0xb')](_0x54c7af,_0x3454a1)[_0x2d57('0xc')](function(_0x381833){logger['info'](_0x2d57('0xd'),_0x36fedb,_0x2d57('0xe'));logger[_0x2d57('0xf')]('SquareRecording,\x20%s,\x20%s,\x20%s',_0x36fedb,'request\x20sent',JSON[_0x2d57('0x10')](_0x381833));if(_0x381833['error']){if(_0x381833[_0x2d57('0x11')][_0x2d57('0x12')]===0x1f4){logger['error']('SquareRecording,\x20%s,\x20%s',_0x36fedb,_0x381833[_0x2d57('0x11')][_0x2d57('0x13')]);return _0x26e510(_0x381833['error'][_0x2d57('0x13')]);}logger['error'](_0x2d57('0xd'),_0x36fedb,_0x381833[_0x2d57('0x11')][_0x2d57('0x13')]);return _0x52db0e(_0x381833['error'][_0x2d57('0x13')]);}else{logger[_0x2d57('0x14')](_0x2d57('0xd'),_0x36fedb,_0x2d57('0xe'));_0x52db0e(_0x381833['result']['message']);}})['catch'](function(_0x583a20){logger[_0x2d57('0x11')](_0x2d57('0xd'),_0x36fedb,_0x583a20);_0x26e510(_0x583a20);});});}exports[_0x2d57('0x15')]=function(_0x589704){var _0x5edd84=this;return new Promise(function(_0x12d516,_0x3515df){return db['SquareRecording'][_0x2d57('0x16')](_0x589704[_0x2d57('0x17')],{'raw':_0x589704[_0x2d57('0x18')]?_0x589704[_0x2d57('0x18')][_0x2d57('0x19')]===undefined?!![]:![]:!![]})[_0x2d57('0xc')](function(_0x13e5e2){logger[_0x2d57('0x14')](_0x2d57('0x15'),_0x589704);logger[_0x2d57('0xf')](_0x2d57('0x15'),_0x589704,JSON[_0x2d57('0x10')](_0x13e5e2));_0x12d516(_0x13e5e2);})['catch'](function(_0xcd73a4){logger[_0x2d57('0x11')](_0x2d57('0x15'),_0xcd73a4[_0x2d57('0x13')],_0x589704);_0x3515df(_0x5edd84[_0x2d57('0x11')](0x1f4,_0xcd73a4[_0x2d57('0x13')]));});});};
\ No newline at end of file
+var _0xae76=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','SquareRecording,\x20%s,\x20%s','debug','SquareRecording,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','info','result','catch','SquareRecording','create','body','options','raw','CreateSquareRecording','lodash','util'];(function(_0x516310,_0x346c3a){var _0x219e04=function(_0x596c53){while(--_0x596c53){_0x516310['push'](_0x516310['shift']());}};_0x219e04(++_0x346c3a);}(_0xae76,0x1be));var _0x6ae7=function(_0x18b978,_0x437fbd){_0x18b978=_0x18b978-0x0;var _0x30322c=_0xae76[_0x18b978];return _0x30322c;};'use strict';var _=require(_0x6ae7('0x0'));var util=require(_0x6ae7('0x1'));var moment=require(_0x6ae7('0x2'));var BPromise=require(_0x6ae7('0x3'));var rs=require(_0x6ae7('0x4'));var fs=require('fs');var Redis=require(_0x6ae7('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x6ae7('0x6'));var logger=require(_0x6ae7('0x7'))(_0x6ae7('0x8'));var config=require('../../config/environment');var jayson=require(_0x6ae7('0x9'));var client=jayson['client'][_0x6ae7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2fa684,_0xab5fb8,_0x569840){return new BPromise(function(_0x7cec8f,_0x3d54f0){return client[_0x6ae7('0xb')](_0x2fa684,_0x569840)[_0x6ae7('0xc')](function(_0x2ecdca){logger['info'](_0x6ae7('0xd'),_0xab5fb8,'request\x20sent');logger[_0x6ae7('0xe')](_0x6ae7('0xf'),_0xab5fb8,_0x6ae7('0x10'),JSON['stringify'](_0x2ecdca));if(_0x2ecdca[_0x6ae7('0x11')]){if(_0x2ecdca[_0x6ae7('0x11')]['code']===0x1f4){logger[_0x6ae7('0x11')]('SquareRecording,\x20%s,\x20%s',_0xab5fb8,_0x2ecdca[_0x6ae7('0x11')][_0x6ae7('0x12')]);return _0x3d54f0(_0x2ecdca[_0x6ae7('0x11')][_0x6ae7('0x12')]);}logger[_0x6ae7('0x11')](_0x6ae7('0xd'),_0xab5fb8,_0x2ecdca[_0x6ae7('0x11')][_0x6ae7('0x12')]);return _0x7cec8f(_0x2ecdca[_0x6ae7('0x11')][_0x6ae7('0x12')]);}else{logger[_0x6ae7('0x13')](_0x6ae7('0xd'),_0xab5fb8,'request\x20sent');_0x7cec8f(_0x2ecdca[_0x6ae7('0x14')]['message']);}})[_0x6ae7('0x15')](function(_0x256b4c){logger[_0x6ae7('0x11')]('SquareRecording,\x20%s,\x20%s',_0xab5fb8,_0x256b4c);_0x3d54f0(_0x256b4c);});});}exports['CreateSquareRecording']=function(_0x21df76){var _0x58c071=this;return new Promise(function(_0x39c644,_0x4816ab){return db[_0x6ae7('0x16')][_0x6ae7('0x17')](_0x21df76[_0x6ae7('0x18')],{'raw':_0x21df76[_0x6ae7('0x19')]?_0x21df76[_0x6ae7('0x19')][_0x6ae7('0x1a')]===undefined?!![]:![]:!![]})[_0x6ae7('0xc')](function(_0x1ef8ef){logger['info'](_0x6ae7('0x1b'),_0x21df76);logger[_0x6ae7('0xe')](_0x6ae7('0x1b'),_0x21df76,JSON['stringify'](_0x1ef8ef));_0x39c644(_0x1ef8ef);})[_0x6ae7('0x15')](function(_0x24434f){logger['error'](_0x6ae7('0x1b'),_0x24434f[_0x6ae7('0x12')],_0x21df76);_0x4816ab(_0x58c071['error'](0x1f4,_0x24434f[_0x6ae7('0x12')]));});});};
\ No newline at end of file
index 6dc04dc..4c214c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index'];(function(_0x155001,_0x42199c){var _0x3dad1e=function(_0x5a9461){while(--_0x5a9461){_0x155001['push'](_0x155001['shift']());}};_0x3dad1e(++_0x42199c);}(_0xe706,0xa3));var _0x6e70=function(_0x2d8d86,_0x16e75d){_0x2d8d86=_0x2d8d86-0x0;var _0x4d91a4=_0xe706[_0x2d8d86];return _0x4d91a4;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
+var _0xbaf0=['/:id','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index','/describe','show','post','create','put'];(function(_0x4fa4d1,_0x5b4c4e){var _0x6b8906=function(_0x411762){while(--_0x411762){_0x4fa4d1['push'](_0x4fa4d1['shift']());}};_0x6b8906(++_0x5b4c4e);}(_0xbaf0,0x12a));var _0x0baf=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xbaf0[_0x1facfa];return _0x9ec701;};'use strict';var multer=require('multer');var util=require(_0x0baf('0x0'));var path=require(_0x0baf('0x1'));var timeout=require(_0x0baf('0x2'));var express=require(_0x0baf('0x3'));var router=express[_0x0baf('0x4')]();var fs_extra=require(_0x0baf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var controller=require(_0x0baf('0x8'));router[_0x0baf('0x9')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xb')]);router[_0x0baf('0x9')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller['describe']);router[_0x0baf('0x9')]('/:id',auth[_0x0baf('0xa')](),controller[_0x0baf('0xd')]);router[_0x0baf('0xe')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xf')]);router[_0x0baf('0x10')](_0x0baf('0x11'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x12')]);router[_0x0baf('0x13')](_0x0baf('0x11'),auth['isAuthenticated'](),controller['destroy']);module[_0x0baf('0x14')]=router;
\ No newline at end of file
index da60e7c..186fbd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c91=['exports','STRING','BOOLEAN','sequelize'];(function(_0x1314d0,_0x5257a7){var _0x54bf7d=function(_0x5aeb9c){while(--_0x5aeb9c){_0x1314d0['push'](_0x1314d0['shift']());}};_0x54bf7d(++_0x5257a7);}(_0x3c91,0x1af));var _0x13c9=function(_0x3c627b,_0x5085bb){_0x3c627b=_0x3c627b-0x0;var _0x5dde2c=_0x3c91[_0x3c627b];return _0x5dde2c;};'use strict';var Sequelize=require(_0x13c9('0x0'));module[_0x13c9('0x1')]={'network':{'type':Sequelize[_0x13c9('0x2')]},'network_script':{'type':Sequelize['STRING']},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x13c9('0x2')]},'language':{'type':Sequelize[_0x13c9('0x2')]},'type':{'type':Sequelize[_0x13c9('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'version':{'type':Sequelize[_0x13c9('0x2')]},'callerid':{'type':Sequelize[_0x13c9('0x2')]},'calleridname':{'type':Sequelize[_0x13c9('0x2')]},'callingpres':{'type':Sequelize[_0x13c9('0x2')]},'callingani2':{'type':Sequelize[_0x13c9('0x2')]},'callington':{'type':Sequelize['STRING']},'callingtns':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0x13c9('0x2')]},'rdnis':{'type':Sequelize[_0x13c9('0x2')]},'context':{'type':Sequelize[_0x13c9('0x2')]},'extension':{'type':Sequelize[_0x13c9('0x2')]},'priority':{'type':Sequelize[_0x13c9('0x2')]},'enhanced':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'threadid':{'type':Sequelize[_0x13c9('0x2')]},'project_name':{'type':Sequelize[_0x13c9('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize[_0x13c9('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x3e47=['sequelize','exports','STRING','DATE','BOOLEAN'];(function(_0x220f3f,_0x11c540){var _0x1f170e=function(_0x2c0ec9){while(--_0x2c0ec9){_0x220f3f['push'](_0x220f3f['shift']());}};_0x1f170e(++_0x11c540);}(_0x3e47,0x1d6));var _0x73e4=function(_0x539ce2,_0x54efa0){_0x539ce2=_0x539ce2-0x0;var _0x1c85b0=_0x3e47[_0x539ce2];return _0x1c85b0;};'use strict';var Sequelize=require(_0x73e4('0x0'));module[_0x73e4('0x1')]={'network':{'type':Sequelize[_0x73e4('0x2')]},'network_script':{'type':Sequelize[_0x73e4('0x2')]},'request':{'type':Sequelize[_0x73e4('0x2')]},'channel':{'type':Sequelize[_0x73e4('0x2')]},'language':{'type':Sequelize[_0x73e4('0x2')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x73e4('0x2')]},'version':{'type':Sequelize[_0x73e4('0x2')]},'callerid':{'type':Sequelize[_0x73e4('0x2')]},'calleridname':{'type':Sequelize[_0x73e4('0x2')]},'callingpres':{'type':Sequelize[_0x73e4('0x2')]},'callingani2':{'type':Sequelize['STRING']},'callington':{'type':Sequelize[_0x73e4('0x2')]},'callingtns':{'type':Sequelize[_0x73e4('0x2')]},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x73e4('0x2')]},'priority':{'type':Sequelize[_0x73e4('0x2')]},'enhanced':{'type':Sequelize[_0x73e4('0x2')]},'accountcode':{'type':Sequelize[_0x73e4('0x2')]},'threadid':{'type':Sequelize['STRING']},'project_name':{'type':Sequelize[_0x73e4('0x2')]},'joinAt':{'type':Sequelize[_0x73e4('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize[_0x73e4('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 439efc0..b3129ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d29=['../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','limit','count','offset','set','Content-Range','json','save','then','destroy','end','error','stack','name','send','map','SquareReport','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api'];(function(_0x10803d,_0x12bd47){var _0x4de8e1=function(_0x4e1ae7){while(--_0x4e1ae7){_0x10803d['push'](_0x10803d['shift']());}};_0x4de8e1(++_0x12bd47);}(_0x3d29,0x158));var _0x93d2=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0x3d29[_0x5f0089];return _0x193892;};'use strict';var emlformat=require(_0x93d2('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x93d2('0x1'));var rp=require(_0x93d2('0x2'));var moment=require('moment');var BPromise=require(_0x93d2('0x3'));var Mustache=require(_0x93d2('0x4'));var util=require(_0x93d2('0x5'));var path=require(_0x93d2('0x6'));var sox=require(_0x93d2('0x7'));var csv=require('to-csv');var ejs=require(_0x93d2('0x8'));var fs=require('fs');var fs_extra=require(_0x93d2('0x9'));var _=require(_0x93d2('0xa'));var squel=require('squel');var crypto=require(_0x93d2('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x93d2('0xc'));var toCsv=require('to-csv');var querystring=require(_0x93d2('0xd'));var Papa=require(_0x93d2('0xe'));var Redis=require(_0x93d2('0xf'));var authService=require(_0x93d2('0x10'));var qs=require(_0x93d2('0x11'));var as=require(_0x93d2('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x93d2('0x13'))(_0x93d2('0x14'));var utils=require(_0x93d2('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x93d2('0x16'));var db=require(_0x93d2('0x17'))['db'];function respondWithStatusCode(_0xf0290d,_0x434c3){_0x434c3=_0x434c3||0xcc;return function(_0x4dd048){if(_0x4dd048){return _0xf0290d[_0x93d2('0x18')](_0x434c3);}return _0xf0290d[_0x93d2('0x19')](_0x434c3)['end']();};}function respondWithResult(_0x580f02,_0x2081b7){_0x2081b7=_0x2081b7||0xc8;return function(_0x56022e){if(_0x56022e){return _0x580f02[_0x93d2('0x19')](_0x2081b7)['json'](_0x56022e);}};}function respondWithFilteredResult(_0x40eef1,_0x533df8){return function(_0x413d03){if(_0x413d03){var _0x4b516f=typeof _0x533df8['offset']==='undefined'&&typeof _0x533df8[_0x93d2('0x1a')]==='undefined';var _0x1b98c6=_0x413d03[_0x93d2('0x1b')];var _0x5a9ff5=_0x4b516f?0x0:_0x533df8[_0x93d2('0x1c')];var _0x518e69=_0x4b516f?_0x413d03[_0x93d2('0x1b')]:_0x533df8['offset']+_0x533df8['limit'];var _0x3fd85c;if(_0x518e69>=_0x1b98c6){_0x518e69=_0x1b98c6;_0x3fd85c=0xc8;}else{_0x3fd85c=0xce;}_0x40eef1[_0x93d2('0x19')](_0x3fd85c);return _0x40eef1[_0x93d2('0x1d')](_0x93d2('0x1e'),_0x5a9ff5+'-'+_0x518e69+'/'+_0x1b98c6)[_0x93d2('0x1f')](_0x413d03);}return null;};}function patchUpdates(_0x49f5dc){return function(_0x2a1179){try{jsonpatch['apply'](_0x2a1179,_0x49f5dc,!![]);}catch(_0x445a92){return BPromise['reject'](_0x445a92);}return _0x2a1179[_0x93d2('0x20')]();};}function saveUpdates(_0x5c9ce8,_0x5ab8a9){return function(_0x231161){if(_0x231161){return _0x231161['update'](_0x5c9ce8)[_0x93d2('0x21')](function(_0x592926){return _0x592926;});}return null;};}function removeEntity(_0xbd336a,_0xf1db6e){return function(_0xce82a3){if(_0xce82a3){return _0xce82a3[_0x93d2('0x22')]()[_0x93d2('0x21')](function(){_0xbd336a[_0x93d2('0x19')](0xcc)[_0x93d2('0x23')]();});}};}function handleEntityNotFound(_0x44876d,_0x5cacee){return function(_0x138831){if(!_0x138831){_0x44876d[_0x93d2('0x18')](0x194);}return _0x138831;};}function handleError(_0x49123d,_0xb0a0d){_0xb0a0d=_0xb0a0d||0x1f4;return function(_0x30c76a){logger[_0x93d2('0x24')](_0x30c76a[_0x93d2('0x25')]);if(_0x30c76a[_0x93d2('0x26')]){delete _0x30c76a['name'];}_0x49123d['status'](_0xb0a0d)[_0x93d2('0x27')](_0x30c76a);};}exports['index']=function(_0x5d3b6a,_0x1ee843){var _0x74d6b7={},_0x136f5a={},_0x1ada81={'count':0x0,'rows':[]};var _0x59075b=_[_0x93d2('0x28')](db[_0x93d2('0x29')][_0x93d2('0x2a')],function(_0x157c01){return{'name':_0x157c01[_0x93d2('0x2b')],'type':_0x157c01['type']['key']};});_0x136f5a[_0x93d2('0x2c')]=_['map'](_0x59075b,_0x93d2('0x26'));_0x136f5a['query']=_[_0x93d2('0x2d')](_0x5d3b6a[_0x93d2('0x2e')]);_0x136f5a[_0x93d2('0x2f')]=_[_0x93d2('0x30')](_0x136f5a['model'],_0x136f5a[_0x93d2('0x2e')]);_0x74d6b7['attributes']=_[_0x93d2('0x30')](_0x136f5a[_0x93d2('0x2c')],qs[_0x93d2('0x31')](_0x5d3b6a[_0x93d2('0x2e')][_0x93d2('0x31')]));_0x74d6b7[_0x93d2('0x32')]=_0x74d6b7['attributes'][_0x93d2('0x33')]?_0x74d6b7['attributes']:_0x136f5a[_0x93d2('0x2c')];if(!_0x5d3b6a[_0x93d2('0x2e')][_0x93d2('0x34')](_0x93d2('0x35'))){_0x74d6b7['limit']=qs[_0x93d2('0x1a')](_0x5d3b6a[_0x93d2('0x2e')][_0x93d2('0x1a')]);_0x74d6b7[_0x93d2('0x1c')]=qs[_0x93d2('0x1c')](_0x5d3b6a['query'][_0x93d2('0x1c')]);}_0x74d6b7[_0x93d2('0x36')]=qs[_0x93d2('0x37')](_0x5d3b6a[_0x93d2('0x2e')][_0x93d2('0x37')]);_0x74d6b7[_0x93d2('0x38')]=qs['filters'](_[_0x93d2('0x39')](_0x5d3b6a[_0x93d2('0x2e')],_0x136f5a[_0x93d2('0x2f')]),_0x59075b);if(_0x5d3b6a[_0x93d2('0x2e')]['filter']){_0x74d6b7[_0x93d2('0x38')]=_[_0x93d2('0x3a')](_0x74d6b7[_0x93d2('0x38')],{'$or':_['map'](_0x59075b,function(_0x595c1c){if(_0x595c1c[_0x93d2('0x3b')]!==_0x93d2('0x3c')){var _0x289ecd={};_0x289ecd[_0x595c1c[_0x93d2('0x26')]]={'$like':'%'+_0x5d3b6a[_0x93d2('0x2e')][_0x93d2('0x3d')]+'%'};return _0x289ecd;}})});}_0x74d6b7=_[_0x93d2('0x3a')]({},_0x74d6b7,_0x5d3b6a[_0x93d2('0x3e')]);var _0x30a5df={'where':_0x74d6b7[_0x93d2('0x38')]};return db[_0x93d2('0x29')][_0x93d2('0x1b')](_0x30a5df)[_0x93d2('0x21')](function(_0x410c51){_0x1ada81[_0x93d2('0x1b')]=_0x410c51;if(_0x5d3b6a[_0x93d2('0x2e')][_0x93d2('0x3f')]){_0x74d6b7[_0x93d2('0x40')]=[{'all':!![]}];}return db[_0x93d2('0x29')][_0x93d2('0x41')](_0x74d6b7);})[_0x93d2('0x21')](function(_0x353dc0){_0x1ada81[_0x93d2('0x42')]=_0x353dc0;return _0x1ada81;})[_0x93d2('0x21')](respondWithFilteredResult(_0x1ee843,_0x74d6b7))['catch'](handleError(_0x1ee843,null));};exports[_0x93d2('0x43')]=function(_0x2c1db7,_0xda47eb){var _0xfb7361={'raw':!![],'where':{'id':_0x2c1db7[_0x93d2('0x44')]['id']}},_0x4bb367={};_0x4bb367[_0x93d2('0x2c')]=_['keys'](db[_0x93d2('0x29')]['rawAttributes']);_0x4bb367[_0x93d2('0x2e')]=_[_0x93d2('0x2d')](_0x2c1db7[_0x93d2('0x2e')]);_0x4bb367[_0x93d2('0x2f')]=_[_0x93d2('0x30')](_0x4bb367[_0x93d2('0x2c')],_0x4bb367[_0x93d2('0x2e')]);_0xfb7361[_0x93d2('0x32')]=_[_0x93d2('0x30')](_0x4bb367[_0x93d2('0x2c')],qs[_0x93d2('0x31')](_0x2c1db7[_0x93d2('0x2e')][_0x93d2('0x31')]));_0xfb7361['attributes']=_0xfb7361[_0x93d2('0x32')][_0x93d2('0x33')]?_0xfb7361['attributes']:_0x4bb367[_0x93d2('0x2c')];if(_0x2c1db7[_0x93d2('0x2e')][_0x93d2('0x3f')]){_0xfb7361[_0x93d2('0x40')]=[{'all':!![]}];}_0xfb7361=_[_0x93d2('0x3a')]({},_0xfb7361,_0x2c1db7[_0x93d2('0x3e')]);return db['SquareReport'][_0x93d2('0x45')](_0xfb7361)[_0x93d2('0x21')](handleEntityNotFound(_0xda47eb,null))[_0x93d2('0x21')](respondWithResult(_0xda47eb,null))[_0x93d2('0x46')](handleError(_0xda47eb,null));};exports[_0x93d2('0x47')]=function(_0x45aa67,_0x342799){return db[_0x93d2('0x29')][_0x93d2('0x47')](_0x45aa67['body'],{})['then'](respondWithResult(_0x342799,0xc9))['catch'](handleError(_0x342799,null));};exports['update']=function(_0x34bf38,_0x532467){if(_0x34bf38['body']['id']){delete _0x34bf38[_0x93d2('0x48')]['id'];}return db[_0x93d2('0x29')][_0x93d2('0x45')]({'where':{'id':_0x34bf38[_0x93d2('0x44')]['id']}})['then'](handleEntityNotFound(_0x532467,null))['then'](saveUpdates(_0x34bf38[_0x93d2('0x48')],null))[_0x93d2('0x21')](respondWithResult(_0x532467,null))[_0x93d2('0x46')](handleError(_0x532467,null));};exports[_0x93d2('0x22')]=function(_0x1f5e6b,_0x51dfc8){return db[_0x93d2('0x29')][_0x93d2('0x45')]({'where':{'id':_0x1f5e6b[_0x93d2('0x44')]['id']}})['then'](handleEntityNotFound(_0x51dfc8,null))[_0x93d2('0x21')](removeEntity(_0x51dfc8,null))['catch'](handleError(_0x51dfc8,null));};exports['describe']=function(_0x4b798b,_0x119eed){return db[_0x93d2('0x29')]['describe']()[_0x93d2('0x21')](respondWithResult(_0x119eed,null))['catch'](handleError(_0x119eed,null));};
\ No newline at end of file
+var _0xac72=['fast-json-patch','request-promise','moment','util','path','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','sendStatus','status','end','offset','limit','count','Content-Range','json','apply','update','then','destroy','stack','name','send','index','map','SquareReport','rawAttributes','fieldName','type','key','model','keys','query','attributes','intersection','fields','length','nolimit','sort','filters','pick','filter','where','VIRTUAL','merge','options','includeAll','findAll','rows','show','params','include','find','create','body','catch','describe','eml-format','rimraf','zip-dir'];(function(_0x305c8f,_0xc5f7fb){var _0x5ddc30=function(_0x1aed6f){while(--_0x1aed6f){_0x305c8f['push'](_0x305c8f['shift']());}};_0x5ddc30(++_0xc5f7fb);}(_0xac72,0x19b));var _0x2ac7=function(_0x594de0,_0x48d80d){_0x594de0=_0x594de0-0x0;var _0x4816f9=_0xac72[_0x594de0];return _0x4816f9;};'use strict';var emlformat=require(_0x2ac7('0x0'));var rimraf=require(_0x2ac7('0x1'));var zipdir=require(_0x2ac7('0x2'));var jsonpatch=require(_0x2ac7('0x3'));var rp=require(_0x2ac7('0x4'));var moment=require(_0x2ac7('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x2ac7('0x6'));var path=require(_0x2ac7('0x7'));var sox=require('sox');var csv=require(_0x2ac7('0x8'));var ejs=require(_0x2ac7('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2ac7('0xa'));var squel=require(_0x2ac7('0xb'));var crypto=require('crypto');var jsforce=require(_0x2ac7('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x2ac7('0x8'));var querystring=require(_0x2ac7('0xd'));var Papa=require(_0x2ac7('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2ac7('0xf'));var as=require(_0x2ac7('0x10'));var hardwareService=require(_0x2ac7('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0x2ac7('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x2ac7('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x10d7e7,_0x40c4ef){_0x40c4ef=_0x40c4ef||0xcc;return function(_0x4c59d5){if(_0x4c59d5){return _0x10d7e7[_0x2ac7('0x14')](_0x40c4ef);}return _0x10d7e7[_0x2ac7('0x15')](_0x40c4ef)[_0x2ac7('0x16')]();};}function respondWithResult(_0x14d13b,_0x299bdb){_0x299bdb=_0x299bdb||0xc8;return function(_0x1e6672){if(_0x1e6672){return _0x14d13b['status'](_0x299bdb)['json'](_0x1e6672);}};}function respondWithFilteredResult(_0x33cfc0,_0x1b4c16){return function(_0x32b025){if(_0x32b025){var _0xba02d1=typeof _0x1b4c16[_0x2ac7('0x17')]==='undefined'&&typeof _0x1b4c16[_0x2ac7('0x18')]==='undefined';var _0x19eda0=_0x32b025['count'];var _0x52879a=_0xba02d1?0x0:_0x1b4c16[_0x2ac7('0x17')];var _0x404b67=_0xba02d1?_0x32b025[_0x2ac7('0x19')]:_0x1b4c16['offset']+_0x1b4c16[_0x2ac7('0x18')];var _0x1aa45f;if(_0x404b67>=_0x19eda0){_0x404b67=_0x19eda0;_0x1aa45f=0xc8;}else{_0x1aa45f=0xce;}_0x33cfc0[_0x2ac7('0x15')](_0x1aa45f);return _0x33cfc0['set'](_0x2ac7('0x1a'),_0x52879a+'-'+_0x404b67+'/'+_0x19eda0)[_0x2ac7('0x1b')](_0x32b025);}return null;};}function patchUpdates(_0x5dbb40){return function(_0x176efc){try{jsonpatch[_0x2ac7('0x1c')](_0x176efc,_0x5dbb40,!![]);}catch(_0x49ca5f){return BPromise['reject'](_0x49ca5f);}return _0x176efc['save']();};}function saveUpdates(_0x27f3dc,_0x51bb8d){return function(_0x1096a6){if(_0x1096a6){return _0x1096a6[_0x2ac7('0x1d')](_0x27f3dc)[_0x2ac7('0x1e')](function(_0x542f08){return _0x542f08;});}return null;};}function removeEntity(_0xbfa920,_0x4bbd2e){return function(_0x5ad307){if(_0x5ad307){return _0x5ad307[_0x2ac7('0x1f')]()[_0x2ac7('0x1e')](function(){_0xbfa920[_0x2ac7('0x15')](0xcc)[_0x2ac7('0x16')]();});}};}function handleEntityNotFound(_0x3e53c8,_0x4a4f8e){return function(_0x38cf05){if(!_0x38cf05){_0x3e53c8[_0x2ac7('0x14')](0x194);}return _0x38cf05;};}function handleError(_0x2c5033,_0x3caa4c){_0x3caa4c=_0x3caa4c||0x1f4;return function(_0x3ef75c){logger['error'](_0x3ef75c[_0x2ac7('0x20')]);if(_0x3ef75c[_0x2ac7('0x21')]){delete _0x3ef75c[_0x2ac7('0x21')];}_0x2c5033[_0x2ac7('0x15')](_0x3caa4c)[_0x2ac7('0x22')](_0x3ef75c);};}exports[_0x2ac7('0x23')]=function(_0x22bb96,_0x24f229){var _0x3d57c6={},_0x19dd58={},_0x43f36f={'count':0x0,'rows':[]};var _0x19ae98=_[_0x2ac7('0x24')](db[_0x2ac7('0x25')][_0x2ac7('0x26')],function(_0x3d853d){return{'name':_0x3d853d[_0x2ac7('0x27')],'type':_0x3d853d[_0x2ac7('0x28')][_0x2ac7('0x29')]};});_0x19dd58[_0x2ac7('0x2a')]=_[_0x2ac7('0x24')](_0x19ae98,'name');_0x19dd58['query']=_[_0x2ac7('0x2b')](_0x22bb96[_0x2ac7('0x2c')]);_0x19dd58['filters']=_['intersection'](_0x19dd58[_0x2ac7('0x2a')],_0x19dd58[_0x2ac7('0x2c')]);_0x3d57c6[_0x2ac7('0x2d')]=_[_0x2ac7('0x2e')](_0x19dd58[_0x2ac7('0x2a')],qs[_0x2ac7('0x2f')](_0x22bb96['query'][_0x2ac7('0x2f')]));_0x3d57c6[_0x2ac7('0x2d')]=_0x3d57c6[_0x2ac7('0x2d')][_0x2ac7('0x30')]?_0x3d57c6[_0x2ac7('0x2d')]:_0x19dd58['model'];if(!_0x22bb96[_0x2ac7('0x2c')]['hasOwnProperty'](_0x2ac7('0x31'))){_0x3d57c6['limit']=qs[_0x2ac7('0x18')](_0x22bb96[_0x2ac7('0x2c')][_0x2ac7('0x18')]);_0x3d57c6[_0x2ac7('0x17')]=qs['offset'](_0x22bb96[_0x2ac7('0x2c')][_0x2ac7('0x17')]);}_0x3d57c6['order']=qs['sort'](_0x22bb96[_0x2ac7('0x2c')][_0x2ac7('0x32')]);_0x3d57c6['where']=qs[_0x2ac7('0x33')](_[_0x2ac7('0x34')](_0x22bb96[_0x2ac7('0x2c')],_0x19dd58['filters']),_0x19ae98);if(_0x22bb96[_0x2ac7('0x2c')][_0x2ac7('0x35')]){_0x3d57c6[_0x2ac7('0x36')]=_['merge'](_0x3d57c6['where'],{'$or':_[_0x2ac7('0x24')](_0x19ae98,function(_0x6388ed){if(_0x6388ed['type']!==_0x2ac7('0x37')){var _0x3a262f={};_0x3a262f[_0x6388ed['name']]={'$like':'%'+_0x22bb96[_0x2ac7('0x2c')][_0x2ac7('0x35')]+'%'};return _0x3a262f;}})});}_0x3d57c6=_[_0x2ac7('0x38')]({},_0x3d57c6,_0x22bb96[_0x2ac7('0x39')]);var _0xada1be={'where':_0x3d57c6[_0x2ac7('0x36')]};return db[_0x2ac7('0x25')][_0x2ac7('0x19')](_0xada1be)[_0x2ac7('0x1e')](function(_0x1d2d5b){_0x43f36f[_0x2ac7('0x19')]=_0x1d2d5b;if(_0x22bb96[_0x2ac7('0x2c')][_0x2ac7('0x3a')]){_0x3d57c6['include']=[{'all':!![]}];}return db['SquareReport'][_0x2ac7('0x3b')](_0x3d57c6);})['then'](function(_0x265488){_0x43f36f[_0x2ac7('0x3c')]=_0x265488;return _0x43f36f;})[_0x2ac7('0x1e')](respondWithFilteredResult(_0x24f229,_0x3d57c6))['catch'](handleError(_0x24f229,null));};exports[_0x2ac7('0x3d')]=function(_0x1d503d,_0x529e7b){var _0x45410d={'raw':!![],'where':{'id':_0x1d503d[_0x2ac7('0x3e')]['id']}},_0x2ccb98={};_0x2ccb98['model']=_['keys'](db[_0x2ac7('0x25')][_0x2ac7('0x26')]);_0x2ccb98[_0x2ac7('0x2c')]=_[_0x2ac7('0x2b')](_0x1d503d['query']);_0x2ccb98[_0x2ac7('0x33')]=_['intersection'](_0x2ccb98['model'],_0x2ccb98[_0x2ac7('0x2c')]);_0x45410d[_0x2ac7('0x2d')]=_[_0x2ac7('0x2e')](_0x2ccb98[_0x2ac7('0x2a')],qs[_0x2ac7('0x2f')](_0x1d503d[_0x2ac7('0x2c')]['fields']));_0x45410d[_0x2ac7('0x2d')]=_0x45410d['attributes'][_0x2ac7('0x30')]?_0x45410d[_0x2ac7('0x2d')]:_0x2ccb98[_0x2ac7('0x2a')];if(_0x1d503d[_0x2ac7('0x2c')][_0x2ac7('0x3a')]){_0x45410d[_0x2ac7('0x3f')]=[{'all':!![]}];}_0x45410d=_['merge']({},_0x45410d,_0x1d503d[_0x2ac7('0x39')]);return db['SquareReport'][_0x2ac7('0x40')](_0x45410d)[_0x2ac7('0x1e')](handleEntityNotFound(_0x529e7b,null))[_0x2ac7('0x1e')](respondWithResult(_0x529e7b,null))['catch'](handleError(_0x529e7b,null));};exports[_0x2ac7('0x41')]=function(_0x248d0b,_0x4603c8){return db[_0x2ac7('0x25')][_0x2ac7('0x41')](_0x248d0b[_0x2ac7('0x42')],{})[_0x2ac7('0x1e')](respondWithResult(_0x4603c8,0xc9))[_0x2ac7('0x43')](handleError(_0x4603c8,null));};exports[_0x2ac7('0x1d')]=function(_0x5493f0,_0x5bcb62){if(_0x5493f0[_0x2ac7('0x42')]['id']){delete _0x5493f0[_0x2ac7('0x42')]['id'];}return db[_0x2ac7('0x25')]['find']({'where':{'id':_0x5493f0[_0x2ac7('0x3e')]['id']}})['then'](handleEntityNotFound(_0x5bcb62,null))['then'](saveUpdates(_0x5493f0[_0x2ac7('0x42')],null))['then'](respondWithResult(_0x5bcb62,null))[_0x2ac7('0x43')](handleError(_0x5bcb62,null));};exports[_0x2ac7('0x1f')]=function(_0x44753b,_0x2e3630){return db['SquareReport']['find']({'where':{'id':_0x44753b[_0x2ac7('0x3e')]['id']}})[_0x2ac7('0x1e')](handleEntityNotFound(_0x2e3630,null))[_0x2ac7('0x1e')](removeEntity(_0x2e3630,null))[_0x2ac7('0x43')](handleError(_0x2e3630,null));};exports[_0x2ac7('0x44')]=function(_0x3df1d9,_0x479aa9){return db[_0x2ac7('0x25')]['describe']()[_0x2ac7('0x1e')](respondWithResult(_0x479aa9,null))[_0x2ac7('0x43')](handleError(_0x479aa9,null));};
\ No newline at end of file
index ef427d5..501a70c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f26=['project_name','leaveAt','lodash','util','../../config/logger','api','moment','request-promise','./squareReport.attributes','exports','define','uid_pname'];(function(_0xbd8d45,_0x4df553){var _0x5bebe5=function(_0x32fa80){while(--_0x32fa80){_0xbd8d45['push'](_0xbd8d45['shift']());}};_0x5bebe5(++_0x4df553);}(_0x4f26,0x1a6));var _0x64f2=function(_0x7f99f0,_0x75a662){_0x7f99f0=_0x7f99f0-0x0;var _0x37c254=_0x4f26[_0x7f99f0];return _0x37c254;};'use strict';var _=require(_0x64f2('0x0'));var util=require(_0x64f2('0x1'));var logger=require(_0x64f2('0x2'))(_0x64f2('0x3'));var moment=require(_0x64f2('0x4'));var BPromise=require('bluebird');var rp=require(_0x64f2('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x64f2('0x6'));module[_0x64f2('0x7')]=function(_0x5bc572,_0x55102d){return _0x5bc572[_0x64f2('0x8')]('SquareReport',attributes,{'tableName':'report_square','paranoid':![],'indexes':[{'name':_0x64f2('0x9'),'fields':['uniqueid',_0x64f2('0xa')]},{'name':_0x64f2('0xb'),'fields':[_0x64f2('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x92f9=['uniqueid','project_name','leaveAt','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./squareReport.attributes','exports','define','SquareReport','report_square'];(function(_0x46199d,_0x217376){var _0x138dee=function(_0x4f98bf){while(--_0x4f98bf){_0x46199d['push'](_0x46199d['shift']());}};_0x138dee(++_0x217376);}(_0x92f9,0xa3));var _0x992f=function(_0x3848b8,_0x2bb0b9){_0x3848b8=_0x3848b8-0x0;var _0x43bc25=_0x92f9[_0x3848b8];return _0x43bc25;};'use strict';var _=require(_0x992f('0x0'));var util=require(_0x992f('0x1'));var logger=require(_0x992f('0x2'))(_0x992f('0x3'));var moment=require('moment');var BPromise=require(_0x992f('0x4'));var rp=require(_0x992f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x992f('0x6'));var config=require(_0x992f('0x7'));var attributes=require(_0x992f('0x8'));module[_0x992f('0x9')]=function(_0x561387,_0x3b0173){return _0x561387[_0x992f('0xa')](_0x992f('0xb'),attributes,{'tableName':_0x992f('0xc'),'paranoid':![],'indexes':[{'name':'uid_pname','fields':[_0x992f('0xd'),_0x992f('0xe')]},{'name':_0x992f('0xf'),'fields':[_0x992f('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 539007c..c5223b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ebf=['stringify','UpdateSquareReport','update','where','limit','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','error','code','message','SquareReport,\x20%s,\x20%s','catch','CreateSquareReport','SquareReport','body','options','raw','then'];(function(_0x13cab0,_0x14d825){var _0x38804f=function(_0x1bffaf){while(--_0x1bffaf){_0x13cab0['push'](_0x13cab0['shift']());}};_0x38804f(++_0x14d825);}(_0x7ebf,0x14f));var _0xf7eb=function(_0x197747,_0x3a6520){_0x197747=_0x197747-0x0;var _0x37587e=_0x7ebf[_0x197747];return _0x37587e;};'use strict';var _=require('lodash');var util=require(_0xf7eb('0x0'));var moment=require(_0xf7eb('0x1'));var BPromise=require(_0xf7eb('0x2'));var rs=require(_0xf7eb('0x3'));var fs=require('fs');var Redis=require(_0xf7eb('0x4'));var db=require(_0xf7eb('0x5'))['db'];var utils=require(_0xf7eb('0x6'));var logger=require(_0xf7eb('0x7'))('rpc');var config=require(_0xf7eb('0x8'));var jayson=require(_0xf7eb('0x9'));var client=jayson[_0xf7eb('0xa')][_0xf7eb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2772e1,_0x1378be,_0x4c8d6c){return new BPromise(function(_0x464231,_0x34313f){return client[_0xf7eb('0xc')](_0x2772e1,_0x4c8d6c)['then'](function(_0x5754de){logger[_0xf7eb('0xd')]('SquareReport,\x20%s,\x20%s',_0x1378be,_0xf7eb('0xe'));logger[_0xf7eb('0xf')](_0xf7eb('0x10'),_0x1378be,_0xf7eb('0xe'),JSON['stringify'](_0x5754de));if(_0x5754de['error']){if(_0x5754de[_0xf7eb('0x11')][_0xf7eb('0x12')]===0x1f4){logger[_0xf7eb('0x11')]('SquareReport,\x20%s,\x20%s',_0x1378be,_0x5754de['error']['message']);return _0x34313f(_0x5754de[_0xf7eb('0x11')][_0xf7eb('0x13')]);}logger[_0xf7eb('0x11')]('SquareReport,\x20%s,\x20%s',_0x1378be,_0x5754de[_0xf7eb('0x11')][_0xf7eb('0x13')]);return _0x464231(_0x5754de[_0xf7eb('0x11')][_0xf7eb('0x13')]);}else{logger[_0xf7eb('0xd')](_0xf7eb('0x14'),_0x1378be,_0xf7eb('0xe'));_0x464231(_0x5754de['result'][_0xf7eb('0x13')]);}})[_0xf7eb('0x15')](function(_0x19e5a3){logger[_0xf7eb('0x11')]('SquareReport,\x20%s,\x20%s',_0x1378be,_0x19e5a3);_0x34313f(_0x19e5a3);});});}exports[_0xf7eb('0x16')]=function(_0x231e4b){var _0x3e308d=this;return new Promise(function(_0x1d9193,_0x17d70d){return db[_0xf7eb('0x17')]['create'](_0x231e4b[_0xf7eb('0x18')],{'raw':_0x231e4b[_0xf7eb('0x19')]?_0x231e4b[_0xf7eb('0x19')][_0xf7eb('0x1a')]===undefined?!![]:![]:!![]})[_0xf7eb('0x1b')](function(_0x3bb7d5){logger[_0xf7eb('0xd')](_0xf7eb('0x16'),_0x231e4b);logger[_0xf7eb('0xf')]('CreateSquareReport',_0x231e4b,JSON[_0xf7eb('0x1c')](_0x3bb7d5));_0x1d9193(_0x3bb7d5);})[_0xf7eb('0x15')](function(_0x3ee593){logger[_0xf7eb('0x11')](_0xf7eb('0x16'),_0x3ee593[_0xf7eb('0x13')],_0x231e4b);_0x17d70d(_0x3e308d[_0xf7eb('0x11')](0x1f4,_0x3ee593['message']));});});};exports[_0xf7eb('0x1d')]=function(_0x322366){var _0x32e45a=this;return new Promise(function(_0x3469c3,_0x4bd866){return db['SquareReport'][_0xf7eb('0x1e')](_0x322366[_0xf7eb('0x18')],{'raw':_0x322366[_0xf7eb('0x19')]?_0x322366['options'][_0xf7eb('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x322366[_0xf7eb('0x19')]?_0x322366[_0xf7eb('0x19')][_0xf7eb('0x1f')]||null:null,'attributes':_0x322366[_0xf7eb('0x19')]?_0x322366[_0xf7eb('0x19')]['attributes']||null:null,'limit':_0x322366[_0xf7eb('0x19')]?_0x322366['options'][_0xf7eb('0x20')]||null:null})[_0xf7eb('0x1b')](function(_0x3d5f61){logger[_0xf7eb('0xd')](_0xf7eb('0x1d'),_0x322366);logger[_0xf7eb('0xf')]('UpdateSquareReport',_0x322366,JSON[_0xf7eb('0x1c')](_0x3d5f61));_0x3469c3(_0x3d5f61);})[_0xf7eb('0x15')](function(_0x2d1690){logger[_0xf7eb('0x11')](_0xf7eb('0x1d'),_0x2d1690[_0xf7eb('0x13')],_0x322366);_0x4bd866(_0x32e45a[_0xf7eb('0x11')](0x1f4,_0x2d1690[_0xf7eb('0x13')]));});});};
\ No newline at end of file
+var _0x24e2=['../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateSquareReport','SquareReport','create','body','options','raw','update','where','attributes','limit','UpdateSquareReport','util','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x314a91,_0x1108eb){var _0x55e382=function(_0x46ea6c){while(--_0x46ea6c){_0x314a91['push'](_0x314a91['shift']());}};_0x55e382(++_0x1108eb);}(_0x24e2,0x166));var _0x224e=function(_0x475955,_0x4cafa6){_0x475955=_0x475955-0x0;var _0x1aeb55=_0x24e2[_0x475955];return _0x1aeb55;};'use strict';var _=require('lodash');var util=require(_0x224e('0x0'));var moment=require('moment');var BPromise=require(_0x224e('0x1'));var rs=require(_0x224e('0x2'));var fs=require('fs');var Redis=require(_0x224e('0x3'));var db=require(_0x224e('0x4'))['db'];var utils=require(_0x224e('0x5'));var logger=require(_0x224e('0x6'))(_0x224e('0x7'));var config=require(_0x224e('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x224e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4371a6,_0x46b3d9,_0x28c5b9){return new BPromise(function(_0x46eaf8,_0x49b1eb){return client[_0x224e('0xa')](_0x4371a6,_0x28c5b9)[_0x224e('0xb')](function(_0x65b6a7){logger[_0x224e('0xc')](_0x224e('0xd'),_0x46b3d9,_0x224e('0xe'));logger[_0x224e('0xf')]('SquareReport,\x20%s,\x20%s,\x20%s',_0x46b3d9,_0x224e('0xe'),JSON[_0x224e('0x10')](_0x65b6a7));if(_0x65b6a7[_0x224e('0x11')]){if(_0x65b6a7[_0x224e('0x11')][_0x224e('0x12')]===0x1f4){logger[_0x224e('0x11')](_0x224e('0xd'),_0x46b3d9,_0x65b6a7[_0x224e('0x11')][_0x224e('0x13')]);return _0x49b1eb(_0x65b6a7[_0x224e('0x11')][_0x224e('0x13')]);}logger['error'](_0x224e('0xd'),_0x46b3d9,_0x65b6a7['error'][_0x224e('0x13')]);return _0x46eaf8(_0x65b6a7[_0x224e('0x11')][_0x224e('0x13')]);}else{logger['info'](_0x224e('0xd'),_0x46b3d9,_0x224e('0xe'));_0x46eaf8(_0x65b6a7[_0x224e('0x14')][_0x224e('0x13')]);}})[_0x224e('0x15')](function(_0x39e121){logger[_0x224e('0x11')](_0x224e('0xd'),_0x46b3d9,_0x39e121);_0x49b1eb(_0x39e121);});});}exports[_0x224e('0x16')]=function(_0x2913c2){var _0x5c6662=this;return new Promise(function(_0x3f1a15,_0x129113){return db[_0x224e('0x17')][_0x224e('0x18')](_0x2913c2[_0x224e('0x19')],{'raw':_0x2913c2['options']?_0x2913c2[_0x224e('0x1a')][_0x224e('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x3de5d0){logger[_0x224e('0xc')](_0x224e('0x16'),_0x2913c2);logger['debug']('CreateSquareReport',_0x2913c2,JSON[_0x224e('0x10')](_0x3de5d0));_0x3f1a15(_0x3de5d0);})[_0x224e('0x15')](function(_0x3e8003){logger[_0x224e('0x11')](_0x224e('0x16'),_0x3e8003[_0x224e('0x13')],_0x2913c2);_0x129113(_0x5c6662[_0x224e('0x11')](0x1f4,_0x3e8003[_0x224e('0x13')]));});});};exports['UpdateSquareReport']=function(_0x567bf2){var _0x539707=this;return new Promise(function(_0x1fd601,_0xeef564){return db[_0x224e('0x17')][_0x224e('0x1c')](_0x567bf2['body'],{'raw':_0x567bf2['options']?_0x567bf2[_0x224e('0x1a')][_0x224e('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x567bf2[_0x224e('0x1a')]?_0x567bf2[_0x224e('0x1a')][_0x224e('0x1d')]||null:null,'attributes':_0x567bf2[_0x224e('0x1a')]?_0x567bf2['options'][_0x224e('0x1e')]||null:null,'limit':_0x567bf2[_0x224e('0x1a')]?_0x567bf2[_0x224e('0x1a')][_0x224e('0x1f')]||null:null})['then'](function(_0x319a65){logger[_0x224e('0xc')](_0x224e('0x20'),_0x567bf2);logger['debug']('UpdateSquareReport',_0x567bf2,JSON[_0x224e('0x10')](_0x319a65));_0x1fd601(_0x319a65);})[_0x224e('0x15')](function(_0x5a2072){logger['error'](_0x224e('0x20'),_0x5a2072[_0x224e('0x13')],_0x567bf2);_0xeef564(_0x539707[_0x224e('0x11')](0x1f4,_0x5a2072['message']));});});};
\ No newline at end of file
index 8b999c2..6d0bc69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5994=['destroy','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','/describe','isAuthenticated','describe','show','post','create','put','/:id','update','delete'];(function(_0x329dd0,_0x47e04f){var _0x4f5b90=function(_0x7d2728){while(--_0x7d2728){_0x329dd0['push'](_0x329dd0['shift']());}};_0x4f5b90(++_0x47e04f);}(_0x5994,0xfd));var _0x4599=function(_0xcf7ea7,_0x11524d){_0xcf7ea7=_0xcf7ea7-0x0;var _0x120e6b=_0x5994[_0xcf7ea7];return _0x120e6b;};'use strict';var multer=require('multer');var util=require(_0x4599('0x0'));var path=require('path');var timeout=require(_0x4599('0x1'));var express=require(_0x4599('0x2'));var router=express[_0x4599('0x3')]();var fs_extra=require(_0x4599('0x4'));var auth=require(_0x4599('0x5'));var interaction=require(_0x4599('0x6'));var config=require(_0x4599('0x7'));var controller=require(_0x4599('0x8'));router[_0x4599('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x4599('0x9')](_0x4599('0xa'),auth[_0x4599('0xb')](),controller[_0x4599('0xc')]);router[_0x4599('0x9')]('/:id',auth[_0x4599('0xb')](),controller[_0x4599('0xd')]);router[_0x4599('0xe')]('/',auth['isAuthenticated'](),controller[_0x4599('0xf')]);router[_0x4599('0x10')](_0x4599('0x11'),auth[_0x4599('0xb')](),controller[_0x4599('0x12')]);router[_0x4599('0x13')](_0x4599('0x11'),auth['isAuthenticated'](),controller[_0x4599('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x6972=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','index','/describe','describe','show','post','put','/:id','delete','destroy','exports','path','connect-timeout','express'];(function(_0x52bdfe,_0x5282ec){var _0x5c6df7=function(_0x2355bb){while(--_0x2355bb){_0x52bdfe['push'](_0x52bdfe['shift']());}};_0x5c6df7(++_0x5282ec);}(_0x6972,0x75));var _0x2697=function(_0x47e0ab,_0x5a32c5){_0x47e0ab=_0x47e0ab-0x0;var _0x3c3e14=_0x6972[_0x47e0ab];return _0x3c3e14;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2697('0x0'));var timeout=require(_0x2697('0x1'));var express=require(_0x2697('0x2'));var router=express[_0x2697('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x2697('0x4'));var interaction=require(_0x2697('0x5'));var config=require(_0x2697('0x6'));var controller=require(_0x2697('0x7'));router[_0x2697('0x8')]('/',auth[_0x2697('0x9')](),controller[_0x2697('0xa')]);router[_0x2697('0x8')](_0x2697('0xb'),auth[_0x2697('0x9')](),controller[_0x2697('0xc')]);router[_0x2697('0x8')]('/:id',auth[_0x2697('0x9')](),controller[_0x2697('0xd')]);router[_0x2697('0xe')]('/',auth[_0x2697('0x9')](),controller['create']);router[_0x2697('0xf')](_0x2697('0x10'),auth[_0x2697('0x9')](),controller['update']);router[_0x2697('0x11')](_0x2697('0x10'),auth[_0x2697('0x9')](),controller[_0x2697('0x12')]);module[_0x2697('0x13')]=router;
\ No newline at end of file
index c5bb630..0f097ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f20=['exports','STRING'];(function(_0x11946c,_0x12152c){var _0x383935=function(_0x61fce2){while(--_0x61fce2){_0x11946c['push'](_0x11946c['shift']());}};_0x383935(++_0x12152c);}(_0x4f20,0x86));var _0x04f2=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x4f20[_0x3b380d];return _0x54502b;};'use strict';var Sequelize=require('sequelize');module[_0x04f2('0x0')]={'uniqueid':{'type':Sequelize[_0x04f2('0x1')]},'node':{'type':Sequelize[_0x04f2('0x1')]},'application':{'type':Sequelize[_0x04f2('0x1')]},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize[_0x04f2('0x1')]},'callerid':{'type':Sequelize[_0x04f2('0x1')]}};
\ No newline at end of file
+var _0xc368=['STRING','TEXT','exports'];(function(_0x10c67b,_0x4282cf){var _0x5385d9=function(_0x105a37){while(--_0x105a37){_0x10c67b['push'](_0x10c67b['shift']());}};_0x5385d9(++_0x4282cf);}(_0xc368,0x104));var _0x8c36=function(_0x2b375b,_0x140f07){_0x2b375b=_0x2b375b-0x0;var _0x54d9d2=_0xc368[_0x2b375b];return _0x54d9d2;};'use strict';var Sequelize=require('sequelize');module[_0x8c36('0x0')]={'uniqueid':{'type':Sequelize[_0x8c36('0x1')]},'node':{'type':Sequelize[_0x8c36('0x1')]},'application':{'type':Sequelize[_0x8c36('0x1')]},'data':{'type':Sequelize[_0x8c36('0x2')]},'project_name':{'type':Sequelize[_0x8c36('0x1')]},'callerid':{'type':Sequelize[_0x8c36('0x1')]}};
\ No newline at end of file
index 6aaad81..7d85526 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe04=['end','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','SquareDetailsReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','include','rows','catch','show','includeAll','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','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','status'];(function(_0x52da78,_0x30a220){var _0x3c28d9=function(_0x56caf6){while(--_0x56caf6){_0x52da78['push'](_0x52da78['shift']());}};_0x3c28d9(++_0x30a220);}(_0xfe04,0x1a2));var _0x4fe0=function(_0x44a4ab,_0x580081){_0x44a4ab=_0x44a4ab-0x0;var _0x56d0e3=_0xfe04[_0x44a4ab];return _0x56d0e3;};'use strict';var emlformat=require(_0x4fe0('0x0'));var rimraf=require(_0x4fe0('0x1'));var zipdir=require(_0x4fe0('0x2'));var jsonpatch=require(_0x4fe0('0x3'));var rp=require(_0x4fe0('0x4'));var moment=require('moment');var BPromise=require(_0x4fe0('0x5'));var Mustache=require(_0x4fe0('0x6'));var util=require(_0x4fe0('0x7'));var path=require(_0x4fe0('0x8'));var sox=require(_0x4fe0('0x9'));var csv=require(_0x4fe0('0xa'));var ejs=require(_0x4fe0('0xb'));var fs=require('fs');var fs_extra=require(_0x4fe0('0xc'));var _=require(_0x4fe0('0xd'));var squel=require(_0x4fe0('0xe'));var crypto=require('crypto');var jsforce=require(_0x4fe0('0xf'));var deskjs=require(_0x4fe0('0x10'));var toCsv=require('to-csv');var querystring=require(_0x4fe0('0x11'));var Papa=require(_0x4fe0('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x4fe0('0x13'));var as=require(_0x4fe0('0x14'));var hardwareService=require(_0x4fe0('0x15'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x4fe0('0x16'));var licenseUtil=require(_0x4fe0('0x17'));var db=require(_0x4fe0('0x18'))['db'];function respondWithStatusCode(_0x3f9aba,_0x334037){_0x334037=_0x334037||0xcc;return function(_0x25c476){if(_0x25c476){return _0x3f9aba['sendStatus'](_0x334037);}return _0x3f9aba[_0x4fe0('0x19')](_0x334037)[_0x4fe0('0x1a')]();};}function respondWithResult(_0x3f1ca7,_0x551d71){_0x551d71=_0x551d71||0xc8;return function(_0x167839){if(_0x167839){return _0x3f1ca7[_0x4fe0('0x19')](_0x551d71)['json'](_0x167839);}};}function respondWithFilteredResult(_0x43c7fd,_0x1ff562){return function(_0x18ae03){if(_0x18ae03){var _0x37e9f3=typeof _0x1ff562[_0x4fe0('0x1b')]===_0x4fe0('0x1c')&&typeof _0x1ff562[_0x4fe0('0x1d')]===_0x4fe0('0x1c');var _0x5cf779=_0x18ae03[_0x4fe0('0x1e')];var _0x2237f8=_0x37e9f3?0x0:_0x1ff562[_0x4fe0('0x1b')];var _0x23a830=_0x37e9f3?_0x18ae03[_0x4fe0('0x1e')]:_0x1ff562[_0x4fe0('0x1b')]+_0x1ff562[_0x4fe0('0x1d')];var _0x2df6ec;if(_0x23a830>=_0x5cf779){_0x23a830=_0x5cf779;_0x2df6ec=0xc8;}else{_0x2df6ec=0xce;}_0x43c7fd[_0x4fe0('0x19')](_0x2df6ec);return _0x43c7fd['set'](_0x4fe0('0x1f'),_0x2237f8+'-'+_0x23a830+'/'+_0x5cf779)['json'](_0x18ae03);}return null;};}function patchUpdates(_0x38e443){return function(_0x13d44b){try{jsonpatch[_0x4fe0('0x20')](_0x13d44b,_0x38e443,!![]);}catch(_0x389718){return BPromise[_0x4fe0('0x21')](_0x389718);}return _0x13d44b[_0x4fe0('0x22')]();};}function saveUpdates(_0x2a65d1,_0x25a6f7){return function(_0x2926b9){if(_0x2926b9){return _0x2926b9[_0x4fe0('0x23')](_0x2a65d1)['then'](function(_0x2b5a0e){return _0x2b5a0e;});}return null;};}function removeEntity(_0x43d905,_0x2f1203){return function(_0x2b6bed){if(_0x2b6bed){return _0x2b6bed[_0x4fe0('0x24')]()[_0x4fe0('0x25')](function(){_0x43d905['status'](0xcc)[_0x4fe0('0x1a')]();});}};}function handleEntityNotFound(_0x7096ec,_0x46dff0){return function(_0x18a8df){if(!_0x18a8df){_0x7096ec['sendStatus'](0x194);}return _0x18a8df;};}function handleError(_0x133d27,_0x5d7ae6){_0x5d7ae6=_0x5d7ae6||0x1f4;return function(_0x42dd38){logger[_0x4fe0('0x26')](_0x42dd38[_0x4fe0('0x27')]);if(_0x42dd38[_0x4fe0('0x28')]){delete _0x42dd38[_0x4fe0('0x28')];}_0x133d27[_0x4fe0('0x19')](_0x5d7ae6)[_0x4fe0('0x29')](_0x42dd38);};}exports[_0x4fe0('0x2a')]=function(_0x40b0bb,_0x2b1357){var _0x5bff6d={},_0x1a49b5={},_0x437ec0={'count':0x0,'rows':[]};var _0x17e101=_[_0x4fe0('0x2b')](db[_0x4fe0('0x2c')][_0x4fe0('0x2d')],function(_0x2d3351){return{'name':_0x2d3351[_0x4fe0('0x2e')],'type':_0x2d3351['type'][_0x4fe0('0x2f')]};});_0x1a49b5[_0x4fe0('0x30')]=_[_0x4fe0('0x2b')](_0x17e101,_0x4fe0('0x28'));_0x1a49b5[_0x4fe0('0x31')]=_[_0x4fe0('0x32')](_0x40b0bb['query']);_0x1a49b5[_0x4fe0('0x33')]=_[_0x4fe0('0x34')](_0x1a49b5[_0x4fe0('0x30')],_0x1a49b5[_0x4fe0('0x31')]);_0x5bff6d[_0x4fe0('0x35')]=_[_0x4fe0('0x34')](_0x1a49b5[_0x4fe0('0x30')],qs[_0x4fe0('0x36')](_0x40b0bb[_0x4fe0('0x31')][_0x4fe0('0x36')]));_0x5bff6d[_0x4fe0('0x35')]=_0x5bff6d[_0x4fe0('0x35')][_0x4fe0('0x37')]?_0x5bff6d[_0x4fe0('0x35')]:_0x1a49b5['model'];if(!_0x40b0bb[_0x4fe0('0x31')][_0x4fe0('0x38')]('nolimit')){_0x5bff6d[_0x4fe0('0x1d')]=qs[_0x4fe0('0x1d')](_0x40b0bb[_0x4fe0('0x31')][_0x4fe0('0x1d')]);_0x5bff6d[_0x4fe0('0x1b')]=qs[_0x4fe0('0x1b')](_0x40b0bb[_0x4fe0('0x31')][_0x4fe0('0x1b')]);}_0x5bff6d[_0x4fe0('0x39')]=qs[_0x4fe0('0x3a')](_0x40b0bb['query']['sort']);_0x5bff6d[_0x4fe0('0x3b')]=qs[_0x4fe0('0x33')](_[_0x4fe0('0x3c')](_0x40b0bb[_0x4fe0('0x31')],_0x1a49b5['filters']),_0x17e101);if(_0x40b0bb['query'][_0x4fe0('0x3d')]){_0x5bff6d['where']=_[_0x4fe0('0x3e')](_0x5bff6d[_0x4fe0('0x3b')],{'$or':_[_0x4fe0('0x2b')](_0x17e101,function(_0x4b3424){if(_0x4b3424[_0x4fe0('0x3f')]!=='VIRTUAL'){var _0x2b0eac={};_0x2b0eac[_0x4b3424[_0x4fe0('0x28')]]={'$like':'%'+_0x40b0bb[_0x4fe0('0x31')][_0x4fe0('0x3d')]+'%'};return _0x2b0eac;}})});}_0x5bff6d=_[_0x4fe0('0x3e')]({},_0x5bff6d,_0x40b0bb['options']);var _0x540709={'where':_0x5bff6d['where']};return db['SquareDetailsReport'][_0x4fe0('0x1e')](_0x540709)[_0x4fe0('0x25')](function(_0x50a355){_0x437ec0[_0x4fe0('0x1e')]=_0x50a355;if(_0x40b0bb[_0x4fe0('0x31')]['includeAll']){_0x5bff6d[_0x4fe0('0x40')]=[{'all':!![]}];}return db['SquareDetailsReport']['findAll'](_0x5bff6d);})[_0x4fe0('0x25')](function(_0x45154c){_0x437ec0[_0x4fe0('0x41')]=_0x45154c;return _0x437ec0;})['then'](respondWithFilteredResult(_0x2b1357,_0x5bff6d))[_0x4fe0('0x42')](handleError(_0x2b1357,null));};exports[_0x4fe0('0x43')]=function(_0x435747,_0x30522d){var _0x5c6bb2={'raw':!![],'where':{'id':_0x435747['params']['id']}},_0x5caf58={};_0x5caf58[_0x4fe0('0x30')]=_[_0x4fe0('0x32')](db[_0x4fe0('0x2c')][_0x4fe0('0x2d')]);_0x5caf58[_0x4fe0('0x31')]=_[_0x4fe0('0x32')](_0x435747['query']);_0x5caf58[_0x4fe0('0x33')]=_['intersection'](_0x5caf58[_0x4fe0('0x30')],_0x5caf58['query']);_0x5c6bb2[_0x4fe0('0x35')]=_['intersection'](_0x5caf58[_0x4fe0('0x30')],qs['fields'](_0x435747[_0x4fe0('0x31')][_0x4fe0('0x36')]));_0x5c6bb2[_0x4fe0('0x35')]=_0x5c6bb2[_0x4fe0('0x35')][_0x4fe0('0x37')]?_0x5c6bb2[_0x4fe0('0x35')]:_0x5caf58[_0x4fe0('0x30')];if(_0x435747[_0x4fe0('0x31')][_0x4fe0('0x44')]){_0x5c6bb2[_0x4fe0('0x40')]=[{'all':!![]}];}_0x5c6bb2=_[_0x4fe0('0x3e')]({},_0x5c6bb2,_0x435747['options']);return db[_0x4fe0('0x2c')]['find'](_0x5c6bb2)['then'](handleEntityNotFound(_0x30522d,null))[_0x4fe0('0x25')](respondWithResult(_0x30522d,null))[_0x4fe0('0x42')](handleError(_0x30522d,null));};exports[_0x4fe0('0x45')]=function(_0x53f58e,_0xc11a2c){return db['SquareDetailsReport'][_0x4fe0('0x45')](_0x53f58e[_0x4fe0('0x46')],{})[_0x4fe0('0x25')](respondWithResult(_0xc11a2c,0xc9))['catch'](handleError(_0xc11a2c,null));};exports['update']=function(_0x2ec658,_0x4fdddf){if(_0x2ec658['body']['id']){delete _0x2ec658[_0x4fe0('0x46')]['id'];}return db[_0x4fe0('0x2c')][_0x4fe0('0x47')]({'where':{'id':_0x2ec658[_0x4fe0('0x48')]['id']}})[_0x4fe0('0x25')](handleEntityNotFound(_0x4fdddf,null))[_0x4fe0('0x25')](saveUpdates(_0x2ec658[_0x4fe0('0x46')],null))['then'](respondWithResult(_0x4fdddf,null))[_0x4fe0('0x42')](handleError(_0x4fdddf,null));};exports[_0x4fe0('0x24')]=function(_0xfa033b,_0x35bdf7){return db[_0x4fe0('0x2c')][_0x4fe0('0x47')]({'where':{'id':_0xfa033b[_0x4fe0('0x48')]['id']}})['then'](handleEntityNotFound(_0x35bdf7,null))['then'](removeEntity(_0x35bdf7,null))['catch'](handleError(_0x35bdf7,null));};exports[_0x4fe0('0x49')]=function(_0x5148c5,_0x3faa0c){return db[_0x4fe0('0x2c')][_0x4fe0('0x49')]()[_0x4fe0('0x25')](respondWithResult(_0x3faa0c,null))[_0x4fe0('0x42')](handleError(_0x3faa0c,null));};
\ No newline at end of file
+var _0x1241=['merge','VIRTUAL','options','include','findAll','params','length','includeAll','find','catch','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','end','stack','name','send','index','map','SquareDetailsReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter'];(function(_0x38a93d,_0x221b04){var _0x3e1013=function(_0x588089){while(--_0x588089){_0x38a93d['push'](_0x38a93d['shift']());}};_0x3e1013(++_0x221b04);}(_0x1241,0x1db));var _0x1124=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1241[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x1124('0x0'));var rimraf=require(_0x1124('0x1'));var zipdir=require(_0x1124('0x2'));var jsonpatch=require(_0x1124('0x3'));var rp=require(_0x1124('0x4'));var moment=require(_0x1124('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x1124('0x6'));var util=require(_0x1124('0x7'));var path=require(_0x1124('0x8'));var sox=require('sox');var csv=require(_0x1124('0x9'));var ejs=require(_0x1124('0xa'));var fs=require('fs');var fs_extra=require(_0x1124('0xb'));var _=require(_0x1124('0xc'));var squel=require(_0x1124('0xd'));var crypto=require(_0x1124('0xe'));var jsforce=require(_0x1124('0xf'));var deskjs=require(_0x1124('0x10'));var toCsv=require(_0x1124('0x9'));var querystring=require(_0x1124('0x11'));var Papa=require('papaparse');var Redis=require(_0x1124('0x12'));var authService=require(_0x1124('0x13'));var qs=require(_0x1124('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x1124('0x15'))(_0x1124('0x16'));var utils=require(_0x1124('0x17'));var config=require(_0x1124('0x18'));var licenseUtil=require(_0x1124('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x39893c,_0x61d52f){_0x61d52f=_0x61d52f||0xcc;return function(_0x383c34){if(_0x383c34){return _0x39893c[_0x1124('0x1a')](_0x61d52f);}return _0x39893c[_0x1124('0x1b')](_0x61d52f)['end']();};}function respondWithResult(_0x147997,_0xbe5a69){_0xbe5a69=_0xbe5a69||0xc8;return function(_0x512dd1){if(_0x512dd1){return _0x147997['status'](_0xbe5a69)[_0x1124('0x1c')](_0x512dd1);}};}function respondWithFilteredResult(_0x3252a9,_0x220210){return function(_0x1eaf24){if(_0x1eaf24){var _0x1a46c7=typeof _0x220210[_0x1124('0x1d')]===_0x1124('0x1e')&&typeof _0x220210[_0x1124('0x1f')]==='undefined';var _0x54168f=_0x1eaf24['count'];var _0x4f7487=_0x1a46c7?0x0:_0x220210[_0x1124('0x1d')];var _0x5800b6=_0x1a46c7?_0x1eaf24[_0x1124('0x20')]:_0x220210[_0x1124('0x1d')]+_0x220210[_0x1124('0x1f')];var _0x43949d;if(_0x5800b6>=_0x54168f){_0x5800b6=_0x54168f;_0x43949d=0xc8;}else{_0x43949d=0xce;}_0x3252a9[_0x1124('0x1b')](_0x43949d);return _0x3252a9[_0x1124('0x21')]('Content-Range',_0x4f7487+'-'+_0x5800b6+'/'+_0x54168f)['json'](_0x1eaf24);}return null;};}function patchUpdates(_0x5aae3c){return function(_0x4d59d2){try{jsonpatch[_0x1124('0x22')](_0x4d59d2,_0x5aae3c,!![]);}catch(_0x5c54b2){return BPromise[_0x1124('0x23')](_0x5c54b2);}return _0x4d59d2[_0x1124('0x24')]();};}function saveUpdates(_0x3f5749,_0x23ccaa){return function(_0x2fd74e){if(_0x2fd74e){return _0x2fd74e[_0x1124('0x25')](_0x3f5749)[_0x1124('0x26')](function(_0x4841f2){return _0x4841f2;});}return null;};}function removeEntity(_0x15655c,_0x2df41c){return function(_0x8f2867){if(_0x8f2867){return _0x8f2867['destroy']()['then'](function(){_0x15655c[_0x1124('0x1b')](0xcc)[_0x1124('0x27')]();});}};}function handleEntityNotFound(_0x2a979a,_0xe7be58){return function(_0x131514){if(!_0x131514){_0x2a979a[_0x1124('0x1a')](0x194);}return _0x131514;};}function handleError(_0x38aecd,_0x3dfef5){_0x3dfef5=_0x3dfef5||0x1f4;return function(_0x508581){logger['error'](_0x508581[_0x1124('0x28')]);if(_0x508581[_0x1124('0x29')]){delete _0x508581[_0x1124('0x29')];}_0x38aecd[_0x1124('0x1b')](_0x3dfef5)[_0x1124('0x2a')](_0x508581);};}exports[_0x1124('0x2b')]=function(_0x321c12,_0xdcfdd){var _0x3472aa={},_0x3ff9f5={},_0x452b6d={'count':0x0,'rows':[]};var _0x708385=_[_0x1124('0x2c')](db[_0x1124('0x2d')][_0x1124('0x2e')],function(_0x4bd08b){return{'name':_0x4bd08b[_0x1124('0x2f')],'type':_0x4bd08b[_0x1124('0x30')][_0x1124('0x31')]};});_0x3ff9f5[_0x1124('0x32')]=_[_0x1124('0x2c')](_0x708385,'name');_0x3ff9f5['query']=_[_0x1124('0x33')](_0x321c12[_0x1124('0x34')]);_0x3ff9f5[_0x1124('0x35')]=_[_0x1124('0x36')](_0x3ff9f5[_0x1124('0x32')],_0x3ff9f5['query']);_0x3472aa['attributes']=_[_0x1124('0x36')](_0x3ff9f5['model'],qs[_0x1124('0x37')](_0x321c12[_0x1124('0x34')][_0x1124('0x37')]));_0x3472aa[_0x1124('0x38')]=_0x3472aa['attributes']['length']?_0x3472aa[_0x1124('0x38')]:_0x3ff9f5[_0x1124('0x32')];if(!_0x321c12[_0x1124('0x34')][_0x1124('0x39')](_0x1124('0x3a'))){_0x3472aa['limit']=qs[_0x1124('0x1f')](_0x321c12[_0x1124('0x34')][_0x1124('0x1f')]);_0x3472aa[_0x1124('0x1d')]=qs[_0x1124('0x1d')](_0x321c12[_0x1124('0x34')][_0x1124('0x1d')]);}_0x3472aa[_0x1124('0x3b')]=qs[_0x1124('0x3c')](_0x321c12[_0x1124('0x34')][_0x1124('0x3c')]);_0x3472aa[_0x1124('0x3d')]=qs[_0x1124('0x35')](_[_0x1124('0x3e')](_0x321c12[_0x1124('0x34')],_0x3ff9f5[_0x1124('0x35')]),_0x708385);if(_0x321c12['query'][_0x1124('0x3f')]){_0x3472aa[_0x1124('0x3d')]=_[_0x1124('0x40')](_0x3472aa[_0x1124('0x3d')],{'$or':_['map'](_0x708385,function(_0x4d5f38){if(_0x4d5f38['type']!==_0x1124('0x41')){var _0x411604={};_0x411604[_0x4d5f38[_0x1124('0x29')]]={'$like':'%'+_0x321c12['query']['filter']+'%'};return _0x411604;}})});}_0x3472aa=_['merge']({},_0x3472aa,_0x321c12[_0x1124('0x42')]);var _0x780ef1={'where':_0x3472aa[_0x1124('0x3d')]};return db[_0x1124('0x2d')][_0x1124('0x20')](_0x780ef1)[_0x1124('0x26')](function(_0x3418f1){_0x452b6d[_0x1124('0x20')]=_0x3418f1;if(_0x321c12['query']['includeAll']){_0x3472aa[_0x1124('0x43')]=[{'all':!![]}];}return db['SquareDetailsReport'][_0x1124('0x44')](_0x3472aa);})['then'](function(_0x59f523){_0x452b6d['rows']=_0x59f523;return _0x452b6d;})[_0x1124('0x26')](respondWithFilteredResult(_0xdcfdd,_0x3472aa))['catch'](handleError(_0xdcfdd,null));};exports['show']=function(_0x24f272,_0x1c9549){var _0x3a7332={'raw':!![],'where':{'id':_0x24f272[_0x1124('0x45')]['id']}},_0x54528d={};_0x54528d['model']=_['keys'](db[_0x1124('0x2d')]['rawAttributes']);_0x54528d['query']=_['keys'](_0x24f272['query']);_0x54528d[_0x1124('0x35')]=_['intersection'](_0x54528d['model'],_0x54528d[_0x1124('0x34')]);_0x3a7332[_0x1124('0x38')]=_[_0x1124('0x36')](_0x54528d[_0x1124('0x32')],qs[_0x1124('0x37')](_0x24f272['query'][_0x1124('0x37')]));_0x3a7332[_0x1124('0x38')]=_0x3a7332['attributes'][_0x1124('0x46')]?_0x3a7332[_0x1124('0x38')]:_0x54528d['model'];if(_0x24f272['query'][_0x1124('0x47')]){_0x3a7332[_0x1124('0x43')]=[{'all':!![]}];}_0x3a7332=_[_0x1124('0x40')]({},_0x3a7332,_0x24f272[_0x1124('0x42')]);return db[_0x1124('0x2d')][_0x1124('0x48')](_0x3a7332)[_0x1124('0x26')](handleEntityNotFound(_0x1c9549,null))['then'](respondWithResult(_0x1c9549,null))[_0x1124('0x49')](handleError(_0x1c9549,null));};exports['create']=function(_0xa7b913,_0x4f6c44){return db[_0x1124('0x2d')][_0x1124('0x4a')](_0xa7b913['body'],{})['then'](respondWithResult(_0x4f6c44,0xc9))[_0x1124('0x49')](handleError(_0x4f6c44,null));};exports[_0x1124('0x25')]=function(_0x49b667,_0x2e85c8){if(_0x49b667[_0x1124('0x4b')]['id']){delete _0x49b667[_0x1124('0x4b')]['id'];}return db['SquareDetailsReport'][_0x1124('0x48')]({'where':{'id':_0x49b667[_0x1124('0x45')]['id']}})[_0x1124('0x26')](handleEntityNotFound(_0x2e85c8,null))[_0x1124('0x26')](saveUpdates(_0x49b667[_0x1124('0x4b')],null))[_0x1124('0x26')](respondWithResult(_0x2e85c8,null))[_0x1124('0x49')](handleError(_0x2e85c8,null));};exports[_0x1124('0x4c')]=function(_0x88ec29,_0x490df9){return db[_0x1124('0x2d')][_0x1124('0x48')]({'where':{'id':_0x88ec29[_0x1124('0x45')]['id']}})[_0x1124('0x26')](handleEntityNotFound(_0x490df9,null))[_0x1124('0x26')](removeEntity(_0x490df9,null))[_0x1124('0x49')](handleError(_0x490df9,null));};exports['describe']=function(_0x1c60ec,_0x5a3ad6){return db['SquareDetailsReport']['describe']()['then'](respondWithResult(_0x5a3ad6,null))['catch'](handleError(_0x5a3ad6,null));};
\ No newline at end of file
index e925d83..a1f6437 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a71=['request-promise','path','rimraf','../../config/environment','./squareReportDetail.attributes','define','SquareDetailsReport','report_square_details','lodash','../../config/logger','api','bluebird'];(function(_0x1ca037,_0x33e239){var _0x4f8516=function(_0x52affd){while(--_0x52affd){_0x1ca037['push'](_0x1ca037['shift']());}};_0x4f8516(++_0x33e239);}(_0x5a71,0x1dc));var _0x15a7=function(_0x458972,_0x2b24e7){_0x458972=_0x458972-0x0;var _0x1a6d55=_0x5a71[_0x458972];return _0x1a6d55;};'use strict';var _=require(_0x15a7('0x0'));var util=require('util');var logger=require(_0x15a7('0x1'))(_0x15a7('0x2'));var moment=require('moment');var BPromise=require(_0x15a7('0x3'));var rp=require(_0x15a7('0x4'));var fs=require('fs');var path=require(_0x15a7('0x5'));var rimraf=require(_0x15a7('0x6'));var config=require(_0x15a7('0x7'));var attributes=require(_0x15a7('0x8'));module['exports']=function(_0x2fa12c,_0x5afba0){return _0x2fa12c[_0x15a7('0x9')](_0x15a7('0xa'),attributes,{'tableName':_0x15a7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x672f=['report_square_details','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./squareReportDetail.attributes','exports','define'];(function(_0xdc187e,_0x59d441){var _0x5cd789=function(_0x3380a6){while(--_0x3380a6){_0xdc187e['push'](_0xdc187e['shift']());}};_0x5cd789(++_0x59d441);}(_0x672f,0x1e2));var _0xf672=function(_0x4a8b0b,_0x361344){_0x4a8b0b=_0x4a8b0b-0x0;var _0x5322e7=_0x672f[_0x4a8b0b];return _0x5322e7;};'use strict';var _=require(_0xf672('0x0'));var util=require(_0xf672('0x1'));var logger=require(_0xf672('0x2'))(_0xf672('0x3'));var moment=require(_0xf672('0x4'));var BPromise=require('bluebird');var rp=require(_0xf672('0x5'));var fs=require('fs');var path=require(_0xf672('0x6'));var rimraf=require(_0xf672('0x7'));var config=require(_0xf672('0x8'));var attributes=require(_0xf672('0x9'));module[_0xf672('0xa')]=function(_0x3b413b,_0x15a769){return _0x3b413b[_0xf672('0xb')]('SquareDetailsReport',attributes,{'tableName':_0xf672('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6a41ef5..dbf5335 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f4c=['SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','request','then','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x38bc4c,_0x42155a){var _0x3215ee=function(_0x1f5036){while(--_0x1f5036){_0x38bc4c['push'](_0x38bc4c['shift']());}};_0x3215ee(++_0x42155a);}(_0x8f4c,0x113));var _0xc8f4=function(_0x35d116,_0x529031){_0x35d116=_0x35d116-0x0;var _0x48e353=_0x8f4c[_0x35d116];return _0x48e353;};'use strict';var _=require(_0xc8f4('0x0'));var util=require(_0xc8f4('0x1'));var moment=require(_0xc8f4('0x2'));var BPromise=require(_0xc8f4('0x3'));var rs=require(_0xc8f4('0x4'));var fs=require('fs');var Redis=require(_0xc8f4('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc8f4('0x6'));var logger=require(_0xc8f4('0x7'))(_0xc8f4('0x8'));var config=require('../../config/environment');var jayson=require(_0xc8f4('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x520063,_0x373506,_0x48c39d){return new BPromise(function(_0x3ea9a2,_0x3a9ab1){return client[_0xc8f4('0xa')](_0x520063,_0x48c39d)[_0xc8f4('0xb')](function(_0x34f05f){logger['info'](_0xc8f4('0xc'),_0x373506,_0xc8f4('0xd'));logger[_0xc8f4('0xe')](_0xc8f4('0xf'),_0x373506,'request\x20sent',JSON[_0xc8f4('0x10')](_0x34f05f));if(_0x34f05f['error']){if(_0x34f05f[_0xc8f4('0x11')][_0xc8f4('0x12')]===0x1f4){logger[_0xc8f4('0x11')](_0xc8f4('0xc'),_0x373506,_0x34f05f[_0xc8f4('0x11')]['message']);return _0x3a9ab1(_0x34f05f[_0xc8f4('0x11')][_0xc8f4('0x13')]);}logger[_0xc8f4('0x11')](_0xc8f4('0xc'),_0x373506,_0x34f05f[_0xc8f4('0x11')][_0xc8f4('0x13')]);return _0x3ea9a2(_0x34f05f['error'][_0xc8f4('0x13')]);}else{logger[_0xc8f4('0x14')](_0xc8f4('0xc'),_0x373506,_0xc8f4('0xd'));_0x3ea9a2(_0x34f05f[_0xc8f4('0x15')]['message']);}})[_0xc8f4('0x16')](function(_0x4d2b77){logger['error'](_0xc8f4('0xc'),_0x373506,_0x4d2b77);_0x3a9ab1(_0x4d2b77);});});}exports[_0xc8f4('0x17')]=function(_0x108076){var _0x7bb973=this;return new Promise(function(_0x4763c1,_0x374761){return db[_0xc8f4('0x18')][_0xc8f4('0x19')](_0x108076[_0xc8f4('0x1a')],{'raw':_0x108076[_0xc8f4('0x1b')]?_0x108076[_0xc8f4('0x1b')][_0xc8f4('0x1c')]===undefined?!![]:![]:!![]})[_0xc8f4('0xb')](function(_0x5f3264){logger[_0xc8f4('0x14')](_0xc8f4('0x17'),_0x108076);logger[_0xc8f4('0xe')](_0xc8f4('0x17'),_0x108076,JSON[_0xc8f4('0x10')](_0x5f3264));_0x4763c1(_0x5f3264);})[_0xc8f4('0x16')](function(_0xaeee7d){logger[_0xc8f4('0x11')]('CreateSquareDetailsReport',_0xaeee7d[_0xc8f4('0x13')],_0x108076);_0x374761(_0x7bb973[_0xc8f4('0x11')](0x1f4,_0xaeee7d[_0xc8f4('0x13')]));});});};
\ No newline at end of file
+var _0x94d4=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','error','message','SquareDetailsReport,\x20%s,\x20%s','result','catch','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','then','stringify','lodash','util','bluebird'];(function(_0x282cd5,_0x527801){var _0x1abad4=function(_0x5e3770){while(--_0x5e3770){_0x282cd5['push'](_0x282cd5['shift']());}};_0x1abad4(++_0x527801);}(_0x94d4,0xa5));var _0x494d=function(_0x5ae811,_0x218e1f){_0x5ae811=_0x5ae811-0x0;var _0x41b4fb=_0x94d4[_0x5ae811];return _0x41b4fb;};'use strict';var _=require(_0x494d('0x0'));var util=require(_0x494d('0x1'));var moment=require('moment');var BPromise=require(_0x494d('0x2'));var rs=require(_0x494d('0x3'));var fs=require('fs');var Redis=require(_0x494d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x494d('0x5'));var logger=require(_0x494d('0x6'))(_0x494d('0x7'));var config=require(_0x494d('0x8'));var jayson=require(_0x494d('0x9'));var client=jayson[_0x494d('0xa')][_0x494d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4c53d7,_0x4f4576,_0x5269db){return new BPromise(function(_0x396280,_0x3f6b68){return client['request'](_0x4c53d7,_0x5269db)['then'](function(_0x456fe8){logger[_0x494d('0xc')]('SquareDetailsReport,\x20%s,\x20%s',_0x4f4576,_0x494d('0xd'));logger[_0x494d('0xe')](_0x494d('0xf'),_0x4f4576,_0x494d('0xd'),JSON['stringify'](_0x456fe8));if(_0x456fe8[_0x494d('0x10')]){if(_0x456fe8[_0x494d('0x10')]['code']===0x1f4){logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0x4f4576,_0x456fe8[_0x494d('0x10')][_0x494d('0x11')]);return _0x3f6b68(_0x456fe8[_0x494d('0x10')][_0x494d('0x11')]);}logger[_0x494d('0x10')](_0x494d('0x12'),_0x4f4576,_0x456fe8[_0x494d('0x10')][_0x494d('0x11')]);return _0x396280(_0x456fe8[_0x494d('0x10')][_0x494d('0x11')]);}else{logger[_0x494d('0xc')]('SquareDetailsReport,\x20%s,\x20%s',_0x4f4576,_0x494d('0xd'));_0x396280(_0x456fe8[_0x494d('0x13')][_0x494d('0x11')]);}})[_0x494d('0x14')](function(_0x120488){logger[_0x494d('0x10')](_0x494d('0x12'),_0x4f4576,_0x120488);_0x3f6b68(_0x120488);});});}exports[_0x494d('0x15')]=function(_0x4301fc){var _0x1552bb=this;return new Promise(function(_0x12a484,_0xd67ea4){return db[_0x494d('0x16')][_0x494d('0x17')](_0x4301fc[_0x494d('0x18')],{'raw':_0x4301fc[_0x494d('0x19')]?_0x4301fc[_0x494d('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x494d('0x1a')](function(_0x172763){logger[_0x494d('0xc')](_0x494d('0x15'),_0x4301fc);logger['debug']('CreateSquareDetailsReport',_0x4301fc,JSON[_0x494d('0x1b')](_0x172763));_0x12a484(_0x172763);})[_0x494d('0x14')](function(_0x56e992){logger['error'](_0x494d('0x15'),_0x56e992['message'],_0x4301fc);_0xd67ea4(_0x1552bb[_0x494d('0x10')](0x1f4,_0x56e992['message']));});});};
\ No newline at end of file
index a28809b..da9d521 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb971=['isAuthenticated','index','killProcess','express','Router','../../components/auth/service','./system.controller','get'];(function(_0x3de0c4,_0x1d0c7c){var _0x46288d=function(_0xb72284){while(--_0xb72284){_0x3de0c4['push'](_0x3de0c4['shift']());}};_0x46288d(++_0x1d0c7c);}(_0xb971,0x93));var _0x1b97=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb971[_0x3dd15e];return _0x231fd0;};'use strict';var express=require(_0x1b97('0x0'));var router=express[_0x1b97('0x1')]();var auth=require(_0x1b97('0x2'));var controller=require(_0x1b97('0x3'));router[_0x1b97('0x4')]('/',auth[_0x1b97('0x5')](),controller[_0x1b97('0x6')]);router[_0x1b97('0x4')]('/process/:pid/kill',auth['isAuthenticated'](),controller[_0x1b97('0x7')]);module['exports']=router;
\ No newline at end of file
+var _0x8e21=['./system.controller','get','isAuthenticated','index','/process/:pid/kill','killProcess','exports','express','Router','../../components/auth/service'];(function(_0x5984dc,_0x455b4a){var _0x5d15e2=function(_0xa702f4){while(--_0xa702f4){_0x5984dc['push'](_0x5984dc['shift']());}};_0x5d15e2(++_0x455b4a);}(_0x8e21,0x6b));var _0x18e2=function(_0x460666,_0x24bfa0){_0x460666=_0x460666-0x0;var _0x555cbf=_0x8e21[_0x460666];return _0x555cbf;};'use strict';var express=require(_0x18e2('0x0'));var router=express[_0x18e2('0x1')]();var auth=require(_0x18e2('0x2'));var controller=require(_0x18e2('0x3'));router[_0x18e2('0x4')]('/',auth[_0x18e2('0x5')](),controller[_0x18e2('0x6')]);router[_0x18e2('0x4')](_0x18e2('0x7'),auth[_0x18e2('0x5')](),controller[_0x18e2('0x8')]);module[_0x18e2('0x9')]=router;
\ No newline at end of file
index 51900b8..b9b04f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff2f=['../../config/logger','api','util','bluebird','error','inspect','name','status','send','index','getAllData','then','json','catch','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','split','length','Process\x20with\x20pid\x20%s\x20not\x20found!','pid','Process\x20with\x20pid\x20%s\x20killed\x20correctly','killProcess','child_process','exec'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0xff2f,0x1b8));var _0xfff2=function(_0x377cd8,_0x3aaabf){_0x377cd8=_0x377cd8-0x0;var _0x2685e1=_0xff2f[_0x377cd8];return _0x2685e1;};'use strict';var info=require('systeminformation');var exec=require(_0xfff2('0x0'))[_0xfff2('0x1')];var logger=require(_0xfff2('0x2'))(_0xfff2('0x3'));var util=require(_0xfff2('0x4'));var BPromise=require(_0xfff2('0x5'));var _=require('lodash');function handleError(_0x3b2462,_0xbc1d2b,_0x43f898){_0xbc1d2b=_0xbc1d2b||0x1f4;return function(_0x3e8549){logger[_0xfff2('0x6')]('<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s',_0x43f898,_0xbc1d2b,util[_0xfff2('0x7')](_0x3e8549,{'showHidden':![],'depth':null}));delete _0x3e8549[_0xfff2('0x8')];_0x3b2462[_0xfff2('0x9')](_0xbc1d2b)[_0xfff2('0xa')](_0x3e8549);};}exports[_0xfff2('0xb')]=function(_0x22fd80,_0x12d12b){return info[_0xfff2('0xc')]()[_0xfff2('0xd')](function(_0x330915){return _0x12d12b[_0xfff2('0x9')](0xc8)[_0xfff2('0xe')](_0x330915);})[_0xfff2('0xf')](function(_0x58207d){return _0x12d12b[_0xfff2('0x9')](0x1f4)[_0xfff2('0xe')](_0x58207d);});};exports['killProcess']=function(_0x1e8c5f,_0x28a30e){var _0x3cc054=[_0xfff2('0x10')];return new BPromise(function(_0x5f5c24,_0x5e4f0a){return exec(util[_0xfff2('0x11')](_0xfff2('0x12'),_0x1e8c5f[_0xfff2('0x13')]['pid']),function(_0x29b589,_0xd5b179,_0x4aaf14){if(_0x29b589){return _0x5e4f0a(_0x29b589);}return _0x5f5c24(_0xd5b179);});})[_0xfff2('0xd')](function(_0x4b3661){var _0x4963ff=![];var _0x4cd86a=_0x4b3661[_0xfff2('0x14')](/\n/);for(var _0x5966cf=0x0,_0x186f59=_0x3cc054[_0xfff2('0x15')];_0x5966cf<_0x186f59,_0x4963ff===![];_0x5966cf+=0x1){if(_0x4b3661['indexOf'](_0x3cc054[_0x5966cf])>=0x0){_0x4963ff=!![];}}if(!_0x4963ff){throw new Error(util[_0xfff2('0x11')](_0xfff2('0x16'),_0x1e8c5f[_0xfff2('0x13')][_0xfff2('0x17')]));}process['kill'](_0x1e8c5f[_0xfff2('0x13')][_0xfff2('0x17')],'SIGINT');return _0x28a30e[_0xfff2('0x9')](0xc8)['json']({'message':util['format'](_0xfff2('0x18'),_0x1e8c5f[_0xfff2('0x13')][_0xfff2('0x17')])});})['catch'](handleError(_0x28a30e,null,_0xfff2('0x19')));};
\ No newline at end of file
+var _0x8742=['length','kill','SIGINT','systeminformation','child_process','exec','api','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','name','status','index','getAllData','then','catch','json','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x8742,0xe9));var _0x2874=function(_0x2c6147,_0x30daee){_0x2c6147=_0x2c6147-0x0;var _0x4bdee8=_0x8742[_0x2c6147];return _0x4bdee8;};'use strict';var info=require(_0x2874('0x0'));var exec=require(_0x2874('0x1'))[_0x2874('0x2')];var logger=require('../../config/logger')(_0x2874('0x3'));var util=require('util');var BPromise=require('bluebird');var _=require(_0x2874('0x4'));function handleError(_0x1af021,_0x1812d6,_0x3aec7f){_0x1812d6=_0x1812d6||0x1f4;return function(_0x35b71b){logger[_0x2874('0x5')](_0x2874('0x6'),_0x3aec7f,_0x1812d6,util['inspect'](_0x35b71b,{'showHidden':![],'depth':null}));delete _0x35b71b[_0x2874('0x7')];_0x1af021[_0x2874('0x8')](_0x1812d6)['send'](_0x35b71b);};}exports[_0x2874('0x9')]=function(_0x23f55b,_0x1cbca2){return info[_0x2874('0xa')]()[_0x2874('0xb')](function(_0x173510){return _0x1cbca2[_0x2874('0x8')](0xc8)['json'](_0x173510);})[_0x2874('0xc')](function(_0x1a2bfd){return _0x1cbca2[_0x2874('0x8')](0x1f4)[_0x2874('0xd')](_0x1a2bfd);});};exports[_0x2874('0xe')]=function(_0x1ba3de,_0x322212){var _0x1042a8=[_0x2874('0xf')];return new BPromise(function(_0x1e5cd1,_0x15602a){return exec(util[_0x2874('0x10')](_0x2874('0x11'),_0x1ba3de[_0x2874('0x12')][_0x2874('0x13')]),function(_0x294249,_0x23ba93,_0x1304e9){if(_0x294249){return _0x15602a(_0x294249);}return _0x1e5cd1(_0x23ba93);});})[_0x2874('0xb')](function(_0x440d1c){var _0x59f353=![];var _0x3ae330=_0x440d1c['split'](/\n/);for(var _0x33cd69=0x0,_0x14f8dd=_0x1042a8[_0x2874('0x14')];_0x33cd69<_0x14f8dd,_0x59f353===![];_0x33cd69+=0x1){if(_0x440d1c['indexOf'](_0x1042a8[_0x33cd69])>=0x0){_0x59f353=!![];}}if(!_0x59f353){throw new Error(util[_0x2874('0x10')]('Process\x20with\x20pid\x20%s\x20not\x20found!',_0x1ba3de[_0x2874('0x12')]['pid']));}process[_0x2874('0x15')](_0x1ba3de[_0x2874('0x12')]['pid'],_0x2874('0x16'));return _0x322212['status'](0xc8)[_0x2874('0xd')]({'message':util[_0x2874('0x10')]('Process\x20with\x20pid\x20%s\x20killed\x20correctly',_0x1ba3de[_0x2874('0x12')][_0x2874('0x13')])});})['catch'](handleError(_0x322212,null,_0x2874('0xe')));};
\ No newline at end of file
index affd24b..2d2727d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1611=['isAuthenticated','create','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','show','post'];(function(_0x40d975,_0x231da7){var _0x357377=function(_0x4e57b8){while(--_0x4e57b8){_0x40d975['push'](_0x40d975['shift']());}};_0x357377(++_0x231da7);}(_0x1611,0xb9));var _0x1161=function(_0x3a6f18,_0x3a07b5){_0x3a6f18=_0x3a6f18-0x0;var _0xabf7e8=_0x1611[_0x3a6f18];return _0xabf7e8;};'use strict';var multer=require(_0x1161('0x0'));var util=require(_0x1161('0x1'));var path=require(_0x1161('0x2'));var timeout=require(_0x1161('0x3'));var express=require(_0x1161('0x4'));var router=express[_0x1161('0x5')]();var fs_extra=require(_0x1161('0x6'));var auth=require(_0x1161('0x7'));var interaction=require(_0x1161('0x8'));var config=require(_0x1161('0x9'));var controller=require('./tag.controller');router[_0x1161('0xa')]('/',auth['isAuthenticated'](),controller[_0x1161('0xb')]);router[_0x1161('0xa')](_0x1161('0xc'),auth['isAuthenticated'](),controller[_0x1161('0xd')]);router[_0x1161('0xe')]('/',auth[_0x1161('0xf')](),controller[_0x1161('0x10')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x1161('0x11')]);router[_0x1161('0x12')](_0x1161('0xc'),auth[_0x1161('0xf')](),controller['destroy']);module[_0x1161('0x13')]=router;
\ No newline at end of file
+var _0xed0b=['isAuthenticated','show','create','put','delete','exports','multer','path','connect-timeout','express','../../components/interaction/service','./tag.controller','index','get','/:id'];(function(_0x1b8e60,_0x21b885){var _0x363363=function(_0x5987c7){while(--_0x5987c7){_0x1b8e60['push'](_0x1b8e60['shift']());}};_0x363363(++_0x21b885);}(_0xed0b,0x15f));var _0xbed0=function(_0xd578cb,_0x2167a3){_0xd578cb=_0xd578cb-0x0;var _0x775533=_0xed0b[_0xd578cb];return _0x775533;};'use strict';var multer=require(_0xbed0('0x0'));var util=require('util');var path=require(_0xbed0('0x1'));var timeout=require(_0xbed0('0x2'));var express=require(_0xbed0('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xbed0('0x4'));var config=require('../../config/environment');var controller=require(_0xbed0('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0xbed0('0x6')]);router[_0xbed0('0x7')](_0xbed0('0x8'),auth[_0xbed0('0x9')](),controller[_0xbed0('0xa')]);router['post']('/',auth[_0xbed0('0x9')](),controller[_0xbed0('0xb')]);router[_0xbed0('0xc')](_0xbed0('0x8'),auth[_0xbed0('0x9')](),controller['update']);router[_0xbed0('0xd')](_0xbed0('0x8'),auth[_0xbed0('0x9')](),controller['destroy']);module[_0xbed0('0xe')]=router;
\ No newline at end of file
index ef531fe..9741e8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3da6=['STRING','name','#0091EA','sequelize','exports'];(function(_0x502af7,_0x52e97b){var _0x37166d=function(_0x166673){while(--_0x166673){_0x502af7['push'](_0x502af7['shift']());}};_0x37166d(++_0x52e97b);}(_0x3da6,0xc1));var _0x63da=function(_0x19da23,_0x56a072){_0x19da23=_0x19da23-0x0;var _0xf5e62b=_0x3da6[_0x19da23];return _0xf5e62b;};'use strict';var Sequelize=require(_0x63da('0x0'));module[_0x63da('0x1')]={'name':{'type':Sequelize[_0x63da('0x2')],'unique':_0x63da('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x63da('0x2')],'defaultValue':_0x63da('0x4')},'description':{'type':Sequelize[_0x63da('0x2')]}};
\ No newline at end of file
+var _0x18c9=['#0091EA','sequelize','exports','STRING','name'];(function(_0x593b6f,_0xecf558){var _0x16c8ae=function(_0x1c7e0d){while(--_0x1c7e0d){_0x593b6f['push'](_0x593b6f['shift']());}};_0x16c8ae(++_0xecf558);}(_0x18c9,0x13c));var _0x918c=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0x18c9[_0xefd519];return _0x4bb882;};'use strict';var Sequelize=require(_0x918c('0x0'));module[_0x918c('0x1')]={'name':{'type':Sequelize[_0x918c('0x2')],'unique':_0x918c('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x918c('0x2')],'defaultValue':_0x918c('0x4')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 6c515f5..b1af5ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf290=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','then','get','Tags','UserProfileResource','error','stack','name','send','map','key','keys','query','filters','intersection','model','attributes','fields','length','sort','where','filter','merge','type','VIRTUAL','options','Tag','includeAll','include','findAll','rows','show','params','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring'];(function(_0x42353c,_0x3dd194){var _0x149abc=function(_0x33b325){while(--_0x33b325){_0x42353c['push'](_0x42353c['shift']());}};_0x149abc(++_0x3dd194);}(_0xf290,0xde));var _0x0f29=function(_0x2132a3,_0x4639e9){_0x2132a3=_0x2132a3-0x0;var _0x21890c=_0xf290[_0x2132a3];return _0x21890c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0f29('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0f29('0x1'));var rp=require('request-promise');var moment=require(_0x0f29('0x2'));var BPromise=require(_0x0f29('0x3'));var Mustache=require(_0x0f29('0x4'));var util=require(_0x0f29('0x5'));var path=require(_0x0f29('0x6'));var sox=require('sox');var csv=require(_0x0f29('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0f29('0x8'));var _=require(_0x0f29('0x9'));var squel=require(_0x0f29('0xa'));var crypto=require(_0x0f29('0xb'));var jsforce=require(_0x0f29('0xc'));var deskjs=require(_0x0f29('0xd'));var toCsv=require(_0x0f29('0x7'));var querystring=require(_0x0f29('0xe'));var Papa=require(_0x0f29('0xf'));var Redis=require(_0x0f29('0x10'));var authService=require(_0x0f29('0x11'));var qs=require(_0x0f29('0x12'));var as=require(_0x0f29('0x13'));var hardwareService=require(_0x0f29('0x14'));var logger=require(_0x0f29('0x15'))('api');var utils=require(_0x0f29('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0f29('0x17'));var db=require(_0x0f29('0x18'))['db'];function respondWithStatusCode(_0x26bbec,_0x222c42){_0x222c42=_0x222c42||0xcc;return function(_0x195424){if(_0x195424){return _0x26bbec[_0x0f29('0x19')](_0x222c42);}return _0x26bbec['status'](_0x222c42)[_0x0f29('0x1a')]();};}function respondWithResult(_0x39961f,_0x2bb7b8){_0x2bb7b8=_0x2bb7b8||0xc8;return function(_0x368984){if(_0x368984){return _0x39961f[_0x0f29('0x1b')](_0x2bb7b8)[_0x0f29('0x1c')](_0x368984);}};}function respondWithFilteredResult(_0x1c518,_0x69df36){return function(_0x547404){if(_0x547404){var _0x4ac37d=typeof _0x69df36[_0x0f29('0x1d')]===_0x0f29('0x1e')&&typeof _0x69df36[_0x0f29('0x1f')]===_0x0f29('0x1e');var _0x4b3f0b=_0x547404[_0x0f29('0x20')];var _0x5d72a5=_0x4ac37d?0x0:_0x69df36[_0x0f29('0x1d')];var _0x4ca5e8=_0x4ac37d?_0x547404['count']:_0x69df36['offset']+_0x69df36[_0x0f29('0x1f')];var _0x8fc03f;if(_0x4ca5e8>=_0x4b3f0b){_0x4ca5e8=_0x4b3f0b;_0x8fc03f=0xc8;}else{_0x8fc03f=0xce;}_0x1c518[_0x0f29('0x1b')](_0x8fc03f);return _0x1c518[_0x0f29('0x21')](_0x0f29('0x22'),_0x5d72a5+'-'+_0x4ca5e8+'/'+_0x4b3f0b)[_0x0f29('0x1c')](_0x547404);}return null;};}function patchUpdates(_0x150271){return function(_0x4888b6){try{jsonpatch[_0x0f29('0x23')](_0x4888b6,_0x150271,!![]);}catch(_0x5a5a03){return BPromise['reject'](_0x5a5a03);}return _0x4888b6['save']();};}function saveUpdates(_0x5d94b9,_0x38a1ce){return function(_0x4a9dd8){if(_0x4a9dd8){return _0x4a9dd8['update'](_0x5d94b9)[_0x0f29('0x24')](function(_0x1840e0){return _0x1840e0;});}return null;};}function removeEntity(_0x346db8,_0x3402dc){return function(_0x29ca73){if(_0x29ca73){return _0x29ca73['destroy']()[_0x0f29('0x24')](function(){var _0x5a440f=_0x29ca73[_0x0f29('0x25')]({'plain':!![]});var _0x26f46f=_0x0f29('0x26');return db[_0x0f29('0x27')]['destroy']({'where':{'type':_0x26f46f,'resourceId':_0x5a440f['id']}})[_0x0f29('0x24')](function(){return _0x29ca73;});})['then'](function(){_0x346db8['status'](0xcc)[_0x0f29('0x1a')]();});}};}function handleEntityNotFound(_0x5c0202,_0x5bfcac){return function(_0x57dcc7){if(!_0x57dcc7){_0x5c0202['sendStatus'](0x194);}return _0x57dcc7;};}function handleError(_0x3c6ce9,_0x1f4ad2){_0x1f4ad2=_0x1f4ad2||0x1f4;return function(_0x4cc5a0){logger[_0x0f29('0x28')](_0x4cc5a0[_0x0f29('0x29')]);if(_0x4cc5a0[_0x0f29('0x2a')]){delete _0x4cc5a0['name'];}_0x3c6ce9['status'](_0x1f4ad2)[_0x0f29('0x2b')](_0x4cc5a0);};}exports['index']=function(_0x36b65c,_0x561c31){var _0x526364={},_0x7b10f={},_0x409b19={'count':0x0,'rows':[]};var _0xf59431=_[_0x0f29('0x2c')](db['Tag']['rawAttributes'],function(_0x3bb3c8){return{'name':_0x3bb3c8['fieldName'],'type':_0x3bb3c8['type'][_0x0f29('0x2d')]};});_0x7b10f['model']=_[_0x0f29('0x2c')](_0xf59431,'name');_0x7b10f['query']=_[_0x0f29('0x2e')](_0x36b65c[_0x0f29('0x2f')]);_0x7b10f[_0x0f29('0x30')]=_[_0x0f29('0x31')](_0x7b10f[_0x0f29('0x32')],_0x7b10f['query']);_0x526364[_0x0f29('0x33')]=_['intersection'](_0x7b10f[_0x0f29('0x32')],qs[_0x0f29('0x34')](_0x36b65c[_0x0f29('0x2f')][_0x0f29('0x34')]));_0x526364['attributes']=_0x526364[_0x0f29('0x33')][_0x0f29('0x35')]?_0x526364['attributes']:_0x7b10f[_0x0f29('0x32')];if(!_0x36b65c[_0x0f29('0x2f')]['hasOwnProperty']('nolimit')){_0x526364[_0x0f29('0x1f')]=qs[_0x0f29('0x1f')](_0x36b65c[_0x0f29('0x2f')][_0x0f29('0x1f')]);_0x526364[_0x0f29('0x1d')]=qs[_0x0f29('0x1d')](_0x36b65c['query'][_0x0f29('0x1d')]);}_0x526364['order']=qs[_0x0f29('0x36')](_0x36b65c['query'][_0x0f29('0x36')]);_0x526364[_0x0f29('0x37')]=qs[_0x0f29('0x30')](_['pick'](_0x36b65c['query'],_0x7b10f[_0x0f29('0x30')]),_0xf59431);if(_0x36b65c['query'][_0x0f29('0x38')]){_0x526364[_0x0f29('0x37')]=_[_0x0f29('0x39')](_0x526364[_0x0f29('0x37')],{'$or':_[_0x0f29('0x2c')](_0xf59431,function(_0x5afbb8){if(_0x5afbb8[_0x0f29('0x3a')]!==_0x0f29('0x3b')){var _0x42872b={};_0x42872b[_0x5afbb8[_0x0f29('0x2a')]]={'$like':'%'+_0x36b65c[_0x0f29('0x2f')][_0x0f29('0x38')]+'%'};return _0x42872b;}})});}_0x526364=_[_0x0f29('0x39')]({},_0x526364,_0x36b65c[_0x0f29('0x3c')]);var _0x250b20={'where':_0x526364['where']};return db[_0x0f29('0x3d')][_0x0f29('0x20')](_0x250b20)[_0x0f29('0x24')](function(_0x11b1dc){_0x409b19['count']=_0x11b1dc;if(_0x36b65c[_0x0f29('0x2f')][_0x0f29('0x3e')]){_0x526364[_0x0f29('0x3f')]=[{'all':!![]}];}return db[_0x0f29('0x3d')][_0x0f29('0x40')](_0x526364);})['then'](function(_0x410c59){_0x409b19[_0x0f29('0x41')]=_0x410c59;return _0x409b19;})[_0x0f29('0x24')](respondWithFilteredResult(_0x561c31,_0x526364))['catch'](handleError(_0x561c31,null));};exports[_0x0f29('0x42')]=function(_0x284279,_0x3a6479){var _0x338412={'raw':!![],'where':{'id':_0x284279[_0x0f29('0x43')]['id']}},_0x35f753={};_0x35f753[_0x0f29('0x32')]=_[_0x0f29('0x2e')](db['Tag']['rawAttributes']);_0x35f753['query']=_[_0x0f29('0x2e')](_0x284279[_0x0f29('0x2f')]);_0x35f753[_0x0f29('0x30')]=_[_0x0f29('0x31')](_0x35f753[_0x0f29('0x32')],_0x35f753[_0x0f29('0x2f')]);_0x338412['attributes']=_[_0x0f29('0x31')](_0x35f753['model'],qs[_0x0f29('0x34')](_0x284279['query'][_0x0f29('0x34')]));_0x338412[_0x0f29('0x33')]=_0x338412[_0x0f29('0x33')][_0x0f29('0x35')]?_0x338412[_0x0f29('0x33')]:_0x35f753['model'];if(_0x284279[_0x0f29('0x2f')][_0x0f29('0x3e')]){_0x338412[_0x0f29('0x3f')]=[{'all':!![]}];}_0x338412=_['merge']({},_0x338412,_0x284279[_0x0f29('0x3c')]);return db['Tag']['find'](_0x338412)[_0x0f29('0x24')](handleEntityNotFound(_0x3a6479,null))[_0x0f29('0x24')](respondWithResult(_0x3a6479,null))[_0x0f29('0x44')](handleError(_0x3a6479,null));};exports[_0x0f29('0x45')]=function(_0x20aa53,_0x335435){return db['Tag'][_0x0f29('0x45')](_0x20aa53[_0x0f29('0x46')],{})[_0x0f29('0x24')](function(_0x857564){var _0x2455d2=_0x20aa53[_0x0f29('0x47')][_0x0f29('0x25')]({'plain':!![]});if(!_0x2455d2)throw new Error(_0x0f29('0x48'));if(_0x2455d2[_0x0f29('0x49')]===_0x0f29('0x47')){var _0x5cd4a9=_0x857564['get']({'plain':!![]});var _0xa6231e=_0x0f29('0x26');return db[_0x0f29('0x4a')][_0x0f29('0x4b')]({'where':{'name':_0xa6231e,'userProfileId':_0x2455d2['userProfileId']},'raw':!![]})[_0x0f29('0x24')](function(_0xd624ad){if(_0xd624ad&&_0xd624ad[_0x0f29('0x4c')]===0x0){return db[_0x0f29('0x27')][_0x0f29('0x45')]({'name':_0x5cd4a9[_0x0f29('0x2a')],'resourceId':_0x5cd4a9['id'],'type':_0xd624ad[_0x0f29('0x2a')],'sectionId':_0xd624ad['id']},{})['then'](function(){return _0x857564;});}else{return _0x857564;}})[_0x0f29('0x44')](function(_0x6c1800){logger[_0x0f29('0x28')](_0x0f29('0x4d'),_0x6c1800);throw _0x6c1800;});}return _0x857564;})[_0x0f29('0x24')](respondWithResult(_0x335435,0xc9))[_0x0f29('0x44')](handleError(_0x335435,null));};exports['update']=function(_0x8c9780,_0x45d87c){if(_0x8c9780[_0x0f29('0x46')]['id']){delete _0x8c9780['body']['id'];}return db[_0x0f29('0x3d')]['find']({'where':{'id':_0x8c9780[_0x0f29('0x43')]['id']}})['then'](handleEntityNotFound(_0x45d87c,null))[_0x0f29('0x24')](saveUpdates(_0x8c9780[_0x0f29('0x46')],null))['then'](respondWithResult(_0x45d87c,null))[_0x0f29('0x44')](handleError(_0x45d87c,null));};exports[_0x0f29('0x4e')]=function(_0x4ae30,_0x4a2c08){return db[_0x0f29('0x3d')]['find']({'where':{'id':_0x4ae30[_0x0f29('0x43')]['id']}})[_0x0f29('0x24')](handleEntityNotFound(_0x4a2c08,null))['then'](removeEntity(_0x4a2c08,null))[_0x0f29('0x44')](handleError(_0x4a2c08,null));};
\ No newline at end of file
+var _0xb07f=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','Tags','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','count','include','Tag','findAll','rows','catch','show','params','keys','length','includeAll','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xb07f,0x109));var _0xfb07=function(_0x452d6a,_0x24c4b0){_0x452d6a=_0x452d6a-0x0;var _0x512067=_0xb07f[_0x452d6a];return _0x512067;};'use strict';var emlformat=require(_0xfb07('0x0'));var rimraf=require(_0xfb07('0x1'));var zipdir=require(_0xfb07('0x2'));var jsonpatch=require(_0xfb07('0x3'));var rp=require(_0xfb07('0x4'));var moment=require(_0xfb07('0x5'));var BPromise=require(_0xfb07('0x6'));var Mustache=require(_0xfb07('0x7'));var util=require(_0xfb07('0x8'));var path=require(_0xfb07('0x9'));var sox=require(_0xfb07('0xa'));var csv=require('to-csv');var ejs=require(_0xfb07('0xb'));var fs=require('fs');var fs_extra=require(_0xfb07('0xc'));var _=require(_0xfb07('0xd'));var squel=require(_0xfb07('0xe'));var crypto=require(_0xfb07('0xf'));var jsforce=require(_0xfb07('0x10'));var deskjs=require(_0xfb07('0x11'));var toCsv=require(_0xfb07('0x12'));var querystring=require(_0xfb07('0x13'));var Papa=require(_0xfb07('0x14'));var Redis=require(_0xfb07('0x15'));var authService=require(_0xfb07('0x16'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xfb07('0x17'))(_0xfb07('0x18'));var utils=require('../../config/utils');var config=require(_0xfb07('0x19'));var licenseUtil=require(_0xfb07('0x1a'));var db=require(_0xfb07('0x1b'))['db'];function respondWithStatusCode(_0x13275d,_0x2ad2cf){_0x2ad2cf=_0x2ad2cf||0xcc;return function(_0x35fd11){if(_0x35fd11){return _0x13275d[_0xfb07('0x1c')](_0x2ad2cf);}return _0x13275d['status'](_0x2ad2cf)[_0xfb07('0x1d')]();};}function respondWithResult(_0x40bf71,_0x3c69db){_0x3c69db=_0x3c69db||0xc8;return function(_0x2c35e4){if(_0x2c35e4){return _0x40bf71[_0xfb07('0x1e')](_0x3c69db)[_0xfb07('0x1f')](_0x2c35e4);}};}function respondWithFilteredResult(_0x29cbae,_0x228e2a){return function(_0x2363d6){if(_0x2363d6){var _0x6a14e0=typeof _0x228e2a[_0xfb07('0x20')]===_0xfb07('0x21')&&typeof _0x228e2a[_0xfb07('0x22')]===_0xfb07('0x21');var _0x4ebcc3=_0x2363d6['count'];var _0x3e747e=_0x6a14e0?0x0:_0x228e2a[_0xfb07('0x20')];var _0x197f12=_0x6a14e0?_0x2363d6['count']:_0x228e2a[_0xfb07('0x20')]+_0x228e2a[_0xfb07('0x22')];var _0x527c4e;if(_0x197f12>=_0x4ebcc3){_0x197f12=_0x4ebcc3;_0x527c4e=0xc8;}else{_0x527c4e=0xce;}_0x29cbae['status'](_0x527c4e);return _0x29cbae[_0xfb07('0x23')](_0xfb07('0x24'),_0x3e747e+'-'+_0x197f12+'/'+_0x4ebcc3)[_0xfb07('0x1f')](_0x2363d6);}return null;};}function patchUpdates(_0x2c6c44){return function(_0x388995){try{jsonpatch[_0xfb07('0x25')](_0x388995,_0x2c6c44,!![]);}catch(_0x15e153){return BPromise[_0xfb07('0x26')](_0x15e153);}return _0x388995[_0xfb07('0x27')]();};}function saveUpdates(_0x578bb2,_0x45806a){return function(_0x56d0c4){if(_0x56d0c4){return _0x56d0c4[_0xfb07('0x28')](_0x578bb2)[_0xfb07('0x29')](function(_0x428c85){return _0x428c85;});}return null;};}function removeEntity(_0x301c1a,_0xb2063a){return function(_0x508d3b){if(_0x508d3b){return _0x508d3b[_0xfb07('0x2a')]()[_0xfb07('0x29')](function(){var _0x10835a=_0x508d3b[_0xfb07('0x2b')]({'plain':!![]});var _0x3b14fa=_0xfb07('0x2c');return db['UserProfileResource'][_0xfb07('0x2a')]({'where':{'type':_0x3b14fa,'resourceId':_0x10835a['id']}})[_0xfb07('0x29')](function(){return _0x508d3b;});})['then'](function(){_0x301c1a[_0xfb07('0x1e')](0xcc)[_0xfb07('0x1d')]();});}};}function handleEntityNotFound(_0xe813a7,_0x149ac0){return function(_0x46927a){if(!_0x46927a){_0xe813a7[_0xfb07('0x1c')](0x194);}return _0x46927a;};}function handleError(_0x20f01a,_0x24ff99){_0x24ff99=_0x24ff99||0x1f4;return function(_0x95f1d){logger[_0xfb07('0x2d')](_0x95f1d[_0xfb07('0x2e')]);if(_0x95f1d['name']){delete _0x95f1d[_0xfb07('0x2f')];}_0x20f01a[_0xfb07('0x1e')](_0x24ff99)[_0xfb07('0x30')](_0x95f1d);};}exports[_0xfb07('0x31')]=function(_0x5dd4c9,_0x46d57e){var _0xd5290c={},_0x4ce9a4={},_0x36da2a={'count':0x0,'rows':[]};var _0x5dc353=_[_0xfb07('0x32')](db['Tag'][_0xfb07('0x33')],function(_0x4a8d4c){return{'name':_0x4a8d4c[_0xfb07('0x34')],'type':_0x4a8d4c[_0xfb07('0x35')][_0xfb07('0x36')]};});_0x4ce9a4[_0xfb07('0x37')]=_[_0xfb07('0x32')](_0x5dc353,_0xfb07('0x2f'));_0x4ce9a4['query']=_['keys'](_0x5dd4c9[_0xfb07('0x38')]);_0x4ce9a4[_0xfb07('0x39')]=_[_0xfb07('0x3a')](_0x4ce9a4[_0xfb07('0x37')],_0x4ce9a4['query']);_0xd5290c['attributes']=_[_0xfb07('0x3a')](_0x4ce9a4[_0xfb07('0x37')],qs[_0xfb07('0x3b')](_0x5dd4c9[_0xfb07('0x38')][_0xfb07('0x3b')]));_0xd5290c[_0xfb07('0x3c')]=_0xd5290c['attributes']['length']?_0xd5290c['attributes']:_0x4ce9a4[_0xfb07('0x37')];if(!_0x5dd4c9[_0xfb07('0x38')][_0xfb07('0x3d')](_0xfb07('0x3e'))){_0xd5290c['limit']=qs['limit'](_0x5dd4c9[_0xfb07('0x38')][_0xfb07('0x22')]);_0xd5290c['offset']=qs['offset'](_0x5dd4c9['query'][_0xfb07('0x20')]);}_0xd5290c[_0xfb07('0x3f')]=qs['sort'](_0x5dd4c9['query'][_0xfb07('0x40')]);_0xd5290c[_0xfb07('0x41')]=qs[_0xfb07('0x39')](_[_0xfb07('0x42')](_0x5dd4c9[_0xfb07('0x38')],_0x4ce9a4['filters']),_0x5dc353);if(_0x5dd4c9[_0xfb07('0x38')][_0xfb07('0x43')]){_0xd5290c[_0xfb07('0x41')]=_[_0xfb07('0x44')](_0xd5290c['where'],{'$or':_['map'](_0x5dc353,function(_0x2d40cb){if(_0x2d40cb[_0xfb07('0x35')]!==_0xfb07('0x45')){var _0xc5df59={};_0xc5df59[_0x2d40cb[_0xfb07('0x2f')]]={'$like':'%'+_0x5dd4c9[_0xfb07('0x38')][_0xfb07('0x43')]+'%'};return _0xc5df59;}})});}_0xd5290c=_['merge']({},_0xd5290c,_0x5dd4c9['options']);var _0x44dafb={'where':_0xd5290c[_0xfb07('0x41')]};return db['Tag']['count'](_0x44dafb)[_0xfb07('0x29')](function(_0x20d682){_0x36da2a[_0xfb07('0x46')]=_0x20d682;if(_0x5dd4c9['query']['includeAll']){_0xd5290c[_0xfb07('0x47')]=[{'all':!![]}];}return db[_0xfb07('0x48')][_0xfb07('0x49')](_0xd5290c);})[_0xfb07('0x29')](function(_0xb87b68){_0x36da2a[_0xfb07('0x4a')]=_0xb87b68;return _0x36da2a;})[_0xfb07('0x29')](respondWithFilteredResult(_0x46d57e,_0xd5290c))[_0xfb07('0x4b')](handleError(_0x46d57e,null));};exports[_0xfb07('0x4c')]=function(_0x492f1b,_0x41df3f){var _0x12c588={'raw':!![],'where':{'id':_0x492f1b[_0xfb07('0x4d')]['id']}},_0x3d6372={};_0x3d6372[_0xfb07('0x37')]=_[_0xfb07('0x4e')](db[_0xfb07('0x48')][_0xfb07('0x33')]);_0x3d6372[_0xfb07('0x38')]=_[_0xfb07('0x4e')](_0x492f1b['query']);_0x3d6372['filters']=_[_0xfb07('0x3a')](_0x3d6372[_0xfb07('0x37')],_0x3d6372['query']);_0x12c588[_0xfb07('0x3c')]=_[_0xfb07('0x3a')](_0x3d6372[_0xfb07('0x37')],qs[_0xfb07('0x3b')](_0x492f1b[_0xfb07('0x38')]['fields']));_0x12c588['attributes']=_0x12c588[_0xfb07('0x3c')][_0xfb07('0x4f')]?_0x12c588[_0xfb07('0x3c')]:_0x3d6372[_0xfb07('0x37')];if(_0x492f1b[_0xfb07('0x38')][_0xfb07('0x50')]){_0x12c588[_0xfb07('0x47')]=[{'all':!![]}];}_0x12c588=_[_0xfb07('0x44')]({},_0x12c588,_0x492f1b[_0xfb07('0x51')]);return db[_0xfb07('0x48')]['find'](_0x12c588)['then'](handleEntityNotFound(_0x41df3f,null))['then'](respondWithResult(_0x41df3f,null))[_0xfb07('0x4b')](handleError(_0x41df3f,null));};exports['create']=function(_0x2397f8,_0x31cca8){return db[_0xfb07('0x48')][_0xfb07('0x52')](_0x2397f8[_0xfb07('0x53')],{})[_0xfb07('0x29')](function(_0x4d464e){var _0x3b2cce=_0x2397f8[_0xfb07('0x54')][_0xfb07('0x2b')]({'plain':!![]});if(!_0x3b2cce)throw new Error(_0xfb07('0x55'));if(_0x3b2cce[_0xfb07('0x56')]==='user'){var _0x3cfb89=_0x4d464e[_0xfb07('0x2b')]({'plain':!![]});var _0x40fa4a=_0xfb07('0x2c');return db[_0xfb07('0x57')]['find']({'where':{'name':_0x40fa4a,'userProfileId':_0x3b2cce[_0xfb07('0x58')]},'raw':!![]})[_0xfb07('0x29')](function(_0x38b30e){if(_0x38b30e&&_0x38b30e[_0xfb07('0x59')]===0x0){return db[_0xfb07('0x5a')]['create']({'name':_0x3cfb89[_0xfb07('0x2f')],'resourceId':_0x3cfb89['id'],'type':_0x38b30e[_0xfb07('0x2f')],'sectionId':_0x38b30e['id']},{})[_0xfb07('0x29')](function(){return _0x4d464e;});}else{return _0x4d464e;}})[_0xfb07('0x4b')](function(_0x4e597d){logger[_0xfb07('0x2d')](_0xfb07('0x5b'),_0x4e597d);throw _0x4e597d;});}return _0x4d464e;})[_0xfb07('0x29')](respondWithResult(_0x31cca8,0xc9))[_0xfb07('0x4b')](handleError(_0x31cca8,null));};exports[_0xfb07('0x28')]=function(_0x165628,_0x353b33){if(_0x165628[_0xfb07('0x53')]['id']){delete _0x165628[_0xfb07('0x53')]['id'];}return db[_0xfb07('0x48')]['find']({'where':{'id':_0x165628[_0xfb07('0x4d')]['id']}})['then'](handleEntityNotFound(_0x353b33,null))[_0xfb07('0x29')](saveUpdates(_0x165628[_0xfb07('0x53')],null))[_0xfb07('0x29')](respondWithResult(_0x353b33,null))[_0xfb07('0x4b')](handleError(_0x353b33,null));};exports[_0xfb07('0x2a')]=function(_0x7746bb,_0x1c76af){return db['Tag']['find']({'where':{'id':_0x7746bb['params']['id']}})[_0xfb07('0x29')](handleEntityNotFound(_0x1c76af,null))[_0xfb07('0x29')](removeEntity(_0x1c76af,null))[_0xfb07('0x4b')](handleError(_0x1c76af,null));};
\ No newline at end of file
index b7c6207..7d36a56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb071=['path','rimraf','./tag.attributes','exports','Tag','tools_tags','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2f2f66,_0x36c616){var _0x43f3da=function(_0x57a85a){while(--_0x57a85a){_0x2f2f66['push'](_0x2f2f66['shift']());}};_0x43f3da(++_0x36c616);}(_0xb071,0x1da));var _0x1b07=function(_0x293de7,_0x5e3188){_0x293de7=_0x293de7-0x0;var _0x4d29de=_0xb071[_0x293de7];return _0x4d29de;};'use strict';var _=require(_0x1b07('0x0'));var util=require(_0x1b07('0x1'));var logger=require(_0x1b07('0x2'))(_0x1b07('0x3'));var moment=require(_0x1b07('0x4'));var BPromise=require(_0x1b07('0x5'));var rp=require(_0x1b07('0x6'));var fs=require('fs');var path=require(_0x1b07('0x7'));var rimraf=require(_0x1b07('0x8'));var config=require('../../config/environment');var attributes=require(_0x1b07('0x9'));module[_0x1b07('0xa')]=function(_0x3e5275,_0x5a4fec){return _0x3e5275['define'](_0x1b07('0xb'),attributes,{'tableName':_0x1b07('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8982=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./tag.attributes','exports','define','Tag','tools_tags','lodash'];(function(_0x1203f,_0x554bbc){var _0x365f0a=function(_0x3531d0){while(--_0x3531d0){_0x1203f['push'](_0x1203f['shift']());}};_0x365f0a(++_0x554bbc);}(_0x8982,0x178));var _0x2898=function(_0x33cf18,_0x2d7df3){_0x33cf18=_0x33cf18-0x0;var _0xe8afa2=_0x8982[_0x33cf18];return _0xe8afa2;};'use strict';var _=require(_0x2898('0x0'));var util=require('util');var logger=require(_0x2898('0x1'))(_0x2898('0x2'));var moment=require(_0x2898('0x3'));var BPromise=require(_0x2898('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2898('0x5'));var rimraf=require(_0x2898('0x6'));var config=require(_0x2898('0x7'));var attributes=require(_0x2898('0x8'));module[_0x2898('0x9')]=function(_0x40879b,_0x518942){return _0x40879b[_0x2898('0xa')](_0x2898('0xb'),attributes,{'tableName':_0x2898('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ed5a750..92f6a1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f17=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','then','info','request\x20sent','debug','stringify','error','code','Tag,\x20%s,\x20%s','message','result','catch','lodash','moment'];(function(_0x23f7c9,_0x1cefbe){var _0x196df6=function(_0x335598){while(--_0x335598){_0x23f7c9['push'](_0x23f7c9['shift']());}};_0x196df6(++_0x1cefbe);}(_0x4f17,0x9e));var _0x74f1=function(_0x4b4865,_0xb43449){_0x4b4865=_0x4b4865-0x0;var _0x190dc2=_0x4f17[_0x4b4865];return _0x190dc2;};'use strict';var _=require(_0x74f1('0x0'));var util=require('util');var moment=require(_0x74f1('0x1'));var BPromise=require(_0x74f1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x74f1('0x3'));var db=require(_0x74f1('0x4'))['db'];var utils=require(_0x74f1('0x5'));var logger=require(_0x74f1('0x6'))(_0x74f1('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x74f1('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0xe54c30,_0x51effb,_0x34ec03){return new BPromise(function(_0x339d55,_0x3b4914){return client['request'](_0xe54c30,_0x34ec03)[_0x74f1('0x9')](function(_0x4c4e41){logger[_0x74f1('0xa')]('Tag,\x20%s,\x20%s',_0x51effb,_0x74f1('0xb'));logger[_0x74f1('0xc')]('Tag,\x20%s,\x20%s,\x20%s',_0x51effb,'request\x20sent',JSON[_0x74f1('0xd')](_0x4c4e41));if(_0x4c4e41[_0x74f1('0xe')]){if(_0x4c4e41[_0x74f1('0xe')][_0x74f1('0xf')]===0x1f4){logger[_0x74f1('0xe')](_0x74f1('0x10'),_0x51effb,_0x4c4e41[_0x74f1('0xe')][_0x74f1('0x11')]);return _0x3b4914(_0x4c4e41[_0x74f1('0xe')][_0x74f1('0x11')]);}logger['error'](_0x74f1('0x10'),_0x51effb,_0x4c4e41['error'][_0x74f1('0x11')]);return _0x339d55(_0x4c4e41['error'][_0x74f1('0x11')]);}else{logger[_0x74f1('0xa')](_0x74f1('0x10'),_0x51effb,_0x74f1('0xb'));_0x339d55(_0x4c4e41[_0x74f1('0x12')]['message']);}})[_0x74f1('0x13')](function(_0x10a0b1){logger['error'](_0x74f1('0x10'),_0x51effb,_0x10a0b1);_0x3b4914(_0x10a0b1);});});}
\ No newline at end of file
+var _0x61a5=['info','request\x20sent','debug','error','code','Tag,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request'];(function(_0x260f28,_0x5c1b56){var _0xfc8de6=function(_0x3636b3){while(--_0x3636b3){_0x260f28['push'](_0x260f28['shift']());}};_0xfc8de6(++_0x5c1b56);}(_0x61a5,0xf0));var _0x561a=function(_0x371d15,_0xd98587){_0x371d15=_0x371d15-0x0;var _0x32afdf=_0x61a5[_0x371d15];return _0x32afdf;};'use strict';var _=require(_0x561a('0x0'));var util=require('util');var moment=require(_0x561a('0x1'));var BPromise=require(_0x561a('0x2'));var rs=require(_0x561a('0x3'));var fs=require('fs');var Redis=require(_0x561a('0x4'));var db=require(_0x561a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x561a('0x6'))(_0x561a('0x7'));var config=require('../../config/environment');var jayson=require(_0x561a('0x8'));var client=jayson[_0x561a('0x9')][_0x561a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2646bd,_0x3d55f8,_0xfe091){return new BPromise(function(_0x1d5814,_0x4db87f){return client[_0x561a('0xb')](_0x2646bd,_0xfe091)['then'](function(_0x3534bb){logger[_0x561a('0xc')]('Tag,\x20%s,\x20%s',_0x3d55f8,_0x561a('0xd'));logger[_0x561a('0xe')]('Tag,\x20%s,\x20%s,\x20%s',_0x3d55f8,_0x561a('0xd'),JSON['stringify'](_0x3534bb));if(_0x3534bb[_0x561a('0xf')]){if(_0x3534bb[_0x561a('0xf')][_0x561a('0x10')]===0x1f4){logger[_0x561a('0xf')](_0x561a('0x11'),_0x3d55f8,_0x3534bb[_0x561a('0xf')][_0x561a('0x12')]);return _0x4db87f(_0x3534bb[_0x561a('0xf')][_0x561a('0x12')]);}logger[_0x561a('0xf')](_0x561a('0x11'),_0x3d55f8,_0x3534bb[_0x561a('0xf')]['message']);return _0x1d5814(_0x3534bb[_0x561a('0xf')][_0x561a('0x12')]);}else{logger[_0x561a('0xc')](_0x561a('0x11'),_0x3d55f8,_0x561a('0xd'));_0x1d5814(_0x3534bb[_0x561a('0x13')][_0x561a('0x12')]);}})[_0x561a('0x14')](function(_0x2690d9){logger[_0x561a('0xf')](_0x561a('0x11'),_0x3d55f8,_0x2690d9);_0x4db87f(_0x2690d9);});});}
\ No newline at end of file
index ab9d0f8..fda46ca 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(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xa9e0[_0x2a6809];return _0x11c371;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/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(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
index 02362c7..95aebc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['STRING','name'];(function(_0x358b6b,_0x120a51){var _0x2237f4=function(_0x17184b){while(--_0x17184b){_0x358b6b['push'](_0x358b6b['shift']());}};_0x2237f4(++_0x120a51);}(_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 _0xb10b=['name','sequelize','STRING'];(function(_0x281607,_0x52d31c){var _0x5c2974=function(_0x2c33f7){while(--_0x2c33f7){_0x281607['push'](_0x281607['shift']());}};_0x5c2974(++_0x52d31c);}(_0xb10b,0x12a));var _0xbb10=function(_0x56edce,_0x3718d7){_0x56edce=_0x56edce-0x0;var _0x3ea2fe=_0xb10b[_0x56edce];return _0x3ea2fe;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':_0xbb10('0x2')},'description':{'type':Sequelize[_0xbb10('0x1')]}};
\ No newline at end of file
index 9407ef4..94e17fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6db9=['apply','save','update','name','send','index','map','Team','rawAttributes','fieldName','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','then','includeAll','findAll','show','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','Teams','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','catch','error','params','destroy','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','sequelize','Sequelize','SELECT','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','VoiceQueueId','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','QueryTypes','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','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','UserVoicePrefix','getQueues','findOne','channel','ValidationError','Queue','capitalize','toLowerCase','Queues','isValidChannel','Unknown\x20channel','add','remove','ids','addAgents','isArray','Voice','Chat','Mail','Sms','Fax','Openchannel','Whatsapp','through','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit','Queue:save','online','voicePause','interface','UserVoiceQueueRt','upsert','isNil','all','spread','removeAgents','transaction','Queue:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./team.socket','register','sendStatus','end','undefined','limit','offset','count','status','set','Content-Range','json'];(function(_0x399814,_0x5066c7){var _0x1e3449=function(_0x2b6e11){while(--_0x2b6e11){_0x399814['push'](_0x399814['shift']());}};_0x1e3449(++_0x5066c7);}(_0x6db9,0x1ac));var _0x96db=function(_0x2203af,_0xe2919){_0x2203af=_0x2203af-0x0;var _0x307157=_0x6db9[_0x2203af];return _0x307157;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x96db('0x0'));var zipdir=require(_0x96db('0x1'));var jsonpatch=require(_0x96db('0x2'));var rp=require(_0x96db('0x3'));var moment=require(_0x96db('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x96db('0x5'));var util=require(_0x96db('0x6'));var path=require(_0x96db('0x7'));var sox=require('sox');var csv=require(_0x96db('0x8'));var ejs=require(_0x96db('0x9'));var fs=require('fs');var fs_extra=require(_0x96db('0xa'));var _=require(_0x96db('0xb'));var squel=require(_0x96db('0xc'));var crypto=require(_0x96db('0xd'));var jsforce=require(_0x96db('0xe'));var deskjs=require(_0x96db('0xf'));var toCsv=require('to-csv');var querystring=require(_0x96db('0x10'));var Papa=require(_0x96db('0x11'));var Redis=require('ioredis');var authService=require(_0x96db('0x12'));var qs=require(_0x96db('0x13'));var as=require(_0x96db('0x14'));var hardwareService=require(_0x96db('0x15'));var logger=require(_0x96db('0x16'))(_0x96db('0x17'));var utils=require(_0x96db('0x18'));var config=require(_0x96db('0x19'));var licenseUtil=require(_0x96db('0x1a'));var db=require(_0x96db('0x1b'))['db'];config[_0x96db('0x1c')]=_['defaults'](config['redis'],{'host':_0x96db('0x1d'),'port':0x18eb});var socket=require(_0x96db('0x1e'))(new Redis(config['redis']));require(_0x96db('0x1f'))[_0x96db('0x20')](socket);function respondWithStatusCode(_0x43964e,_0xf4e292){_0xf4e292=_0xf4e292||0xcc;return function(_0x45fb4b){if(_0x45fb4b){return _0x43964e[_0x96db('0x21')](_0xf4e292);}return _0x43964e['status'](_0xf4e292)[_0x96db('0x22')]();};}function respondWithResult(_0x7294f0,_0x295059){_0x295059=_0x295059||0xc8;return function(_0x320b6e){if(_0x320b6e){return _0x7294f0['status'](_0x295059)['json'](_0x320b6e);}};}function respondWithFilteredResult(_0x62707,_0x3bcfca){return function(_0x43f108){if(_0x43f108){var _0x220cbc=typeof _0x3bcfca['offset']===_0x96db('0x23')&&typeof _0x3bcfca[_0x96db('0x24')]===_0x96db('0x23');var _0x359c2e=_0x43f108['count'];var _0xdae3ff=_0x220cbc?0x0:_0x3bcfca[_0x96db('0x25')];var _0x18f1eb=_0x220cbc?_0x43f108[_0x96db('0x26')]:_0x3bcfca[_0x96db('0x25')]+_0x3bcfca['limit'];var _0x50fb81;if(_0x18f1eb>=_0x359c2e){_0x18f1eb=_0x359c2e;_0x50fb81=0xc8;}else{_0x50fb81=0xce;}_0x62707[_0x96db('0x27')](_0x50fb81);return _0x62707[_0x96db('0x28')](_0x96db('0x29'),_0xdae3ff+'-'+_0x18f1eb+'/'+_0x359c2e)[_0x96db('0x2a')](_0x43f108);}return null;};}function patchUpdates(_0x25c98b){return function(_0x11da8e){try{jsonpatch[_0x96db('0x2b')](_0x11da8e,_0x25c98b,!![]);}catch(_0x381bc2){return BPromise['reject'](_0x381bc2);}return _0x11da8e[_0x96db('0x2c')]();};}function saveUpdates(_0x224562,_0x45a2b5){return function(_0x513aee){if(_0x513aee){return _0x513aee[_0x96db('0x2d')](_0x224562)['then'](function(_0x1fdaa8){return _0x1fdaa8;});}return null;};}function handleEntityNotFound(_0x1ac173,_0x3dce7f){return function(_0x4fbef1){if(!_0x4fbef1){_0x1ac173[_0x96db('0x21')](0x194);}return _0x4fbef1;};}function handleError(_0x12ed4c,_0x703caa){_0x703caa=_0x703caa||0x1f4;return function(_0x5939c9){logger['error'](_0x5939c9['stack']);if(_0x5939c9[_0x96db('0x2e')]){delete _0x5939c9[_0x96db('0x2e')];}_0x12ed4c[_0x96db('0x27')](_0x703caa)[_0x96db('0x2f')](_0x5939c9);};}exports[_0x96db('0x30')]=function(_0x47adbc,_0x354fcf){var _0x5accb2={},_0x436f2b={},_0x2e82a3={'count':0x0,'rows':[]};var _0x3e06c0=_[_0x96db('0x31')](db[_0x96db('0x32')][_0x96db('0x33')],function(_0x1a5b92){return{'name':_0x1a5b92[_0x96db('0x34')],'type':_0x1a5b92['type']['key']};});_0x436f2b['model']=_[_0x96db('0x31')](_0x3e06c0,_0x96db('0x2e'));_0x436f2b[_0x96db('0x35')]=_[_0x96db('0x36')](_0x47adbc[_0x96db('0x35')]);_0x436f2b['filters']=_[_0x96db('0x37')](_0x436f2b[_0x96db('0x38')],_0x436f2b['query']);_0x5accb2[_0x96db('0x39')]=_[_0x96db('0x37')](_0x436f2b[_0x96db('0x38')],qs['fields'](_0x47adbc[_0x96db('0x35')][_0x96db('0x3a')]));_0x5accb2[_0x96db('0x39')]=_0x5accb2['attributes'][_0x96db('0x3b')]?_0x5accb2[_0x96db('0x39')]:_0x436f2b[_0x96db('0x38')];if(!_0x47adbc[_0x96db('0x35')][_0x96db('0x3c')](_0x96db('0x3d'))){_0x5accb2[_0x96db('0x24')]=qs['limit'](_0x47adbc[_0x96db('0x35')][_0x96db('0x24')]);_0x5accb2[_0x96db('0x25')]=qs['offset'](_0x47adbc[_0x96db('0x35')][_0x96db('0x25')]);}_0x5accb2[_0x96db('0x3e')]=qs[_0x96db('0x3f')](_0x47adbc[_0x96db('0x35')][_0x96db('0x3f')]);_0x5accb2[_0x96db('0x40')]=qs[_0x96db('0x41')](_[_0x96db('0x42')](_0x47adbc['query'],_0x436f2b[_0x96db('0x41')]),_0x3e06c0);if(_0x47adbc[_0x96db('0x35')][_0x96db('0x43')]){_0x5accb2[_0x96db('0x40')]=_[_0x96db('0x44')](_0x5accb2['where'],{'$or':_['map'](_0x3e06c0,function(_0x46d530){if(_0x46d530['type']!==_0x96db('0x45')){var _0x3c0a83={};_0x3c0a83[_0x46d530[_0x96db('0x2e')]]={'$like':'%'+_0x47adbc[_0x96db('0x35')][_0x96db('0x43')]+'%'};return _0x3c0a83;}})});}_0x5accb2=_[_0x96db('0x44')]({},_0x5accb2,_0x47adbc[_0x96db('0x46')]);var _0x5a6f4a={'where':_0x5accb2['where']};return db[_0x96db('0x32')]['count'](_0x5a6f4a)[_0x96db('0x47')](function(_0x4f2113){_0x2e82a3[_0x96db('0x26')]=_0x4f2113;if(_0x47adbc[_0x96db('0x35')][_0x96db('0x48')]){_0x5accb2['include']=[{'all':!![]}];}return db[_0x96db('0x32')][_0x96db('0x49')](_0x5accb2);})[_0x96db('0x47')](function(_0x9aa76f){_0x2e82a3['rows']=_0x9aa76f;return _0x2e82a3;})[_0x96db('0x47')](respondWithFilteredResult(_0x354fcf,_0x5accb2))['catch'](handleError(_0x354fcf,null));};exports[_0x96db('0x4a')]=function(_0x51404a,_0x20b03e){var _0x1da62e={'raw':![],'where':{'id':_0x51404a['params']['id']}},_0x978a70={};_0x978a70[_0x96db('0x38')]=_[_0x96db('0x36')](db[_0x96db('0x32')][_0x96db('0x33')]);_0x978a70[_0x96db('0x35')]=_['keys'](_0x51404a[_0x96db('0x35')]);_0x978a70[_0x96db('0x41')]=_['intersection'](_0x978a70[_0x96db('0x38')],_0x978a70[_0x96db('0x35')]);_0x1da62e[_0x96db('0x39')]=_[_0x96db('0x37')](_0x978a70[_0x96db('0x38')],qs[_0x96db('0x3a')](_0x51404a[_0x96db('0x35')][_0x96db('0x3a')]));_0x1da62e['attributes']=_0x1da62e[_0x96db('0x39')]['length']?_0x1da62e[_0x96db('0x39')]:_0x978a70['model'];if(_0x51404a['query'][_0x96db('0x48')]){_0x1da62e[_0x96db('0x4b')]=[{'all':!![]}];}_0x1da62e=_['merge']({},_0x1da62e,_0x51404a['options']);return db[_0x96db('0x32')][_0x96db('0x4c')](_0x1da62e)['then'](handleEntityNotFound(_0x20b03e,null))[_0x96db('0x47')](respondWithResult(_0x20b03e,null))['catch'](handleError(_0x20b03e,null));};exports['create']=function(_0x1b089b,_0x2e1a44){return db['Team'][_0x96db('0x4d')](_0x1b089b[_0x96db('0x4e')],{})[_0x96db('0x47')](function(_0x40d9e0){var _0x57fdcb=_0x1b089b[_0x96db('0x4f')]['get']({'plain':!![]});if(!_0x57fdcb)throw new Error(_0x96db('0x50'));if(_0x57fdcb[_0x96db('0x51')]===_0x96db('0x4f')){var _0x44018c=_0x40d9e0[_0x96db('0x52')]({'plain':!![]});var _0x119a97=_0x96db('0x53');return db[_0x96db('0x54')]['find']({'where':{'name':_0x119a97,'userProfileId':_0x57fdcb[_0x96db('0x55')]},'raw':!![]})['then'](function(_0x132e64){if(_0x132e64&&_0x132e64[_0x96db('0x56')]===0x0){return db[_0x96db('0x57')][_0x96db('0x4d')]({'name':_0x44018c[_0x96db('0x2e')],'resourceId':_0x44018c['id'],'type':_0x132e64[_0x96db('0x2e')],'sectionId':_0x132e64['id']},{})['then'](function(){return _0x40d9e0;});}else{return _0x40d9e0;}})[_0x96db('0x58')](function(_0x98ebcc){logger[_0x96db('0x59')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x98ebcc);throw _0x98ebcc;});}return _0x40d9e0;})[_0x96db('0x47')](respondWithResult(_0x2e1a44,0xc9))[_0x96db('0x58')](handleError(_0x2e1a44,null));};exports[_0x96db('0x2d')]=function(_0x31eae7,_0x14e440){if(_0x31eae7[_0x96db('0x4e')]['id']){delete _0x31eae7[_0x96db('0x4e')]['id'];}return db[_0x96db('0x32')][_0x96db('0x4c')]({'where':{'id':_0x31eae7[_0x96db('0x5a')]['id']}})[_0x96db('0x47')](handleEntityNotFound(_0x14e440,null))['then'](saveUpdates(_0x31eae7['body'],null))['then'](respondWithResult(_0x14e440,null))[_0x96db('0x58')](handleError(_0x14e440,null));};exports[_0x96db('0x5b')]=function(_0x1391d4,_0x4b4470){var _0x217f8b=_0x1391d4[_0x96db('0x5a')]['id'];var _0x56c7ed=[];return db['sequelize']['transaction'](function(_0x4d82fa){var _0x58d411=_0x96db('0x5c')+_0x217f8b;return db[_0x96db('0x5d')][_0x96db('0x35')](_0x58d411,{'type':db[_0x96db('0x5e')]['QueryTypes'][_0x96db('0x5f')],'raw':!![],'transaction':_0x4d82fa})['then'](function(_0x20fd5e){_0x56c7ed=_[_0x96db('0x31')](_0x20fd5e,function(_0x4601b1){return Number(_0x4601b1[_0x96db('0x60')]);});})[_0x96db('0x47')](function(){var _0x1922cf=_0x96db('0x61')+_0x217f8b;return db[_0x96db('0x5d')]['query'](_0x1922cf,{'type':db[_0x96db('0x5e')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x4d82fa});})[_0x96db('0x47')](function(_0x12fb8b){var _0x1c9696=_['map'](_0x12fb8b,function(_0x27cf6f){return Number(_0x27cf6f[_0x96db('0x62')]);});return db['UserVoiceQueue']['destroy']({'where':{'UserId':{'$in':_0x56c7ed},'VoiceQueueId':{'$in':_0x1c9696}},'transaction':_0x4d82fa});})['then'](function(){var _0x2119dc=_0x96db('0x63')+_0x217f8b;return db[_0x96db('0x5d')][_0x96db('0x35')](_0x2119dc,{'type':db['Sequelize'][_0x96db('0x64')]['SELECT'],'raw':!![],'transaction':_0x4d82fa});})['then'](function(_0x33712b){var _0x3adc2e=_[_0x96db('0x31')](_0x33712b,function(_0x5c6986){return Number(_0x5c6986[_0x96db('0x65')]);});return db['UserMailQueue'][_0x96db('0x5b')]({'where':{'UserId':{'$in':_0x56c7ed},'MailQueueId':{'$in':_0x3adc2e}},'transaction':_0x4d82fa});})[_0x96db('0x47')](function(){var _0x530b7d=_0x96db('0x66')+_0x217f8b;return db[_0x96db('0x5d')][_0x96db('0x35')](_0x530b7d,{'type':db[_0x96db('0x5e')][_0x96db('0x64')]['SELECT'],'raw':!![],'transaction':_0x4d82fa});})[_0x96db('0x47')](function(_0x5ba761){var _0x14f94f=_[_0x96db('0x31')](_0x5ba761,function(_0x1154a2){return Number(_0x1154a2[_0x96db('0x67')]);});return db[_0x96db('0x68')]['destroy']({'where':{'UserId':{'$in':_0x56c7ed},'SmsQueueId':{'$in':_0x14f94f}},'transaction':_0x4d82fa});})[_0x96db('0x47')](function(){var _0x7681de=_0x96db('0x69')+_0x217f8b;return db[_0x96db('0x5d')]['query'](_0x7681de,{'type':db[_0x96db('0x5e')][_0x96db('0x64')]['SELECT'],'raw':!![],'transaction':_0x4d82fa});})['then'](function(_0x45c79a){var _0x302eba=_[_0x96db('0x31')](_0x45c79a,function(_0x2bfceb){return Number(_0x2bfceb['ChatQueueId']);});return db['UserChatQueue']['destroy']({'where':{'UserId':{'$in':_0x56c7ed},'ChatQueueId':{'$in':_0x302eba}},'transaction':_0x4d82fa});})[_0x96db('0x47')](function(){var _0x52a272=_0x96db('0x6a')+_0x217f8b;return db[_0x96db('0x5d')][_0x96db('0x35')](_0x52a272,{'type':db[_0x96db('0x5e')][_0x96db('0x64')][_0x96db('0x5f')],'raw':!![],'transaction':_0x4d82fa});})[_0x96db('0x47')](function(_0xc599ee){var _0x4da08d=_[_0x96db('0x31')](_0xc599ee,function(_0x1b4927){return Number(_0x1b4927[_0x96db('0x6b')]);});return db['UserFaxQueue'][_0x96db('0x5b')]({'where':{'UserId':{'$in':_0x56c7ed},'FaxQueueId':{'$in':_0x4da08d}},'transaction':_0x4d82fa});})[_0x96db('0x47')](function(){var _0x82e616='SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20'+_0x217f8b;return db[_0x96db('0x5d')][_0x96db('0x35')](_0x82e616,{'type':db[_0x96db('0x5e')]['QueryTypes'][_0x96db('0x5f')],'raw':!![],'transaction':_0x4d82fa});})[_0x96db('0x47')](function(_0x31355b){var _0x3daa47=_['map'](_0x31355b,function(_0x1bcff8){return Number(_0x1bcff8[_0x96db('0x6c')]);});return db[_0x96db('0x6d')]['destroy']({'where':{'UserId':{'$in':_0x56c7ed},'OpenchannelQueueId':{'$in':_0x3daa47}},'transaction':_0x4d82fa});})[_0x96db('0x47')](function(){var _0x5b36af=_0x96db('0x6e')+_0x217f8b;return db['sequelize'][_0x96db('0x35')](_0x5b36af,{'type':db['Sequelize'][_0x96db('0x64')][_0x96db('0x5f')],'raw':!![],'transaction':_0x4d82fa});})[_0x96db('0x47')](function(_0x604d67){var _0x304fb5=_['map'](_0x604d67,function(_0x50bbff){return Number(_0x50bbff[_0x96db('0x6f')]);});return db[_0x96db('0x70')][_0x96db('0x5b')]({'where':{'UserId':{'$in':_0x56c7ed},'WhatsappQueueId':{'$in':_0x304fb5}},'transaction':_0x4d82fa});})[_0x96db('0x47')](function(){return db[_0x96db('0x71')]['find']({'where':{'TeamId':_0x217f8b}});})[_0x96db('0x47')](function(_0x2bad1b){if(_0x2bad1b===null){return;}return db[_0x96db('0x72')]['destroy']({'where':{'UserId':{'$in':_0x56c7ed},'VoicePrefixId':_0x2bad1b['VoicePrefixId']},'transaction':_0x4d82fa});})['then'](function(){return db[_0x96db('0x32')][_0x96db('0x5b')]({'where':{'id':_0x217f8b},'cascade':!![],'transaction':_0x4d82fa});})['then'](function(_0x1704cf){if(_0x1704cf===0x0){_0x4b4470[_0x96db('0x21')](0x194);}else{return db[_0x96db('0x57')][_0x96db('0x5b')]({'where':{'type':_0x96db('0x53'),'resourceId':_0x217f8b},'cascade':!![],'transaction':_0x4d82fa})[_0x96db('0x47')](function(){_0x4b4470[_0x96db('0x27')](0xcc)[_0x96db('0x22')]();});}})[_0x96db('0x58')](function(_0x5e4d9b){_0x4b4470[_0x96db('0x27')](0x1f4)[_0x96db('0x2f')](_0x5e4d9b);});});};exports[_0x96db('0x73')]=function(_0x28fda5,_0x11185b,_0x2fc248){return db[_0x96db('0x32')][_0x96db('0x74')]({'where':{'id':_0x28fda5[_0x96db('0x5a')]['id']}})[_0x96db('0x47')](handleEntityNotFound(_0x11185b,null))[_0x96db('0x47')](function(_0x1a610d){if(!_0x28fda5[_0x96db('0x35')][_0x96db('0x75')]||!utils['isValidChannel'](_0x28fda5[_0x96db('0x35')][_0x96db('0x75')])){throw new db[(_0x96db('0x5e'))][(_0x96db('0x76'))]('Unknown\x20channel');}var _0x3ae943={};var _0x1b4cf4={};_0x1b4cf4[_0x96db('0x38')]=_['keys'](db[_['capitalize'](_0x28fda5[_0x96db('0x35')]['channel']['toLowerCase']())+_0x96db('0x77')][_0x96db('0x33')]);_0x1b4cf4[_0x96db('0x35')]=_['keys'](_0x28fda5[_0x96db('0x35')]);_0x1b4cf4[_0x96db('0x41')]=_[_0x96db('0x37')](_0x1b4cf4[_0x96db('0x38')],_0x1b4cf4['query']);_0x3ae943['attributes']=_['intersection'](_0x1b4cf4['model'],qs[_0x96db('0x3a')](_0x28fda5[_0x96db('0x35')][_0x96db('0x3a')]));_0x3ae943[_0x96db('0x39')]=_0x3ae943[_0x96db('0x39')]['length']?_0x3ae943[_0x96db('0x39')]:_0x1b4cf4['model'];_0x3ae943[_0x96db('0x24')]=qs[_0x96db('0x24')](_0x28fda5[_0x96db('0x35')]['limit']);_0x3ae943[_0x96db('0x25')]=qs['offset'](_0x28fda5[_0x96db('0x35')]['offset']);_0x3ae943['order']=qs[_0x96db('0x3f')](_0x28fda5[_0x96db('0x35')][_0x96db('0x3f')]);_0x3ae943['where']=qs[_0x96db('0x41')](_[_0x96db('0x42')](_0x28fda5[_0x96db('0x35')],_0x1b4cf4[_0x96db('0x41')]));_0x3ae943=_[_0x96db('0x44')]({},_0x3ae943,_0x28fda5[_0x96db('0x46')]);return _0x1a610d[_0x96db('0x52')+_[_0x96db('0x78')](_0x28fda5['query'][_0x96db('0x75')][_0x96db('0x79')]())+_0x96db('0x7a')](_0x3ae943);})[_0x96db('0x47')](respondWithResult(_0x11185b,null))[_0x96db('0x58')](handleError(_0x11185b,null));};exports['addQueues']=function(_0x24cff8,_0x8215f5,_0x5ec80a){return db[_0x96db('0x32')][_0x96db('0x74')]({'where':{'id':_0x24cff8['params']['id']}})[_0x96db('0x47')](function(_0x217fa7){if(_0x217fa7){if(!_0x24cff8[_0x96db('0x4e')][_0x96db('0x75')]||!utils[_0x96db('0x7b')](_0x24cff8[_0x96db('0x4e')][_0x96db('0x75')])){throw new db[(_0x96db('0x5e'))][(_0x96db('0x76'))](_0x96db('0x7c'));}return _0x217fa7[_0x96db('0x7d')+_[_0x96db('0x78')](_0x24cff8[_0x96db('0x4e')]['channel'][_0x96db('0x79')]())+'Queues'](_0x24cff8['body']['ids']);}return null;})[_0x96db('0x47')](handleEntityNotFound(_0x8215f5,null))[_0x96db('0x47')](respondWithStatusCode(_0x8215f5,null))[_0x96db('0x58')](handleError(_0x8215f5,null));};exports['removeQueues']=function(_0x1caa62,_0x2a8dcb,_0x47a244){return db[_0x96db('0x32')][_0x96db('0x74')]({'where':{'id':_0x1caa62[_0x96db('0x5a')]['id']}})['then'](function(_0x4355d0){if(_0x4355d0){if(!_0x1caa62['query']['channel']||!utils[_0x96db('0x7b')](_0x1caa62['query'][_0x96db('0x75')])){throw new db[(_0x96db('0x5e'))][(_0x96db('0x76'))](_0x96db('0x7c'));}return _0x4355d0[_0x96db('0x7e')+_[_0x96db('0x78')](_0x1caa62['query'][_0x96db('0x75')][_0x96db('0x79')]())+_0x96db('0x7a')](_0x1caa62[_0x96db('0x35')][_0x96db('0x7f')]);}return null;})['then'](handleEntityNotFound(_0x2a8dcb,null))[_0x96db('0x47')](respondWithStatusCode(_0x2a8dcb,null))['catch'](handleError(_0x2a8dcb,null));};exports[_0x96db('0x80')]=function(_0x1037c,_0x381202){var _0x1cacbf=_[_0x96db('0x81')](_0x1037c[_0x96db('0x4e')][_0x96db('0x7f')])?_0x1037c[_0x96db('0x4e')][_0x96db('0x7f')]:[_0x1037c['body'][_0x96db('0x7f')]];var _0x1143b6=_0x1037c[_0x96db('0x5a')]['id'];return db[_0x96db('0x32')][_0x96db('0x4c')]({'where':{'id':_0x1143b6}})[_0x96db('0x47')](handleEntityNotFound(_0x381202,null))['then'](function(_0xaf9375){if(_0xaf9375){var _0x3e6bcf=[_0x96db('0x82'),_0x96db('0x83'),_0x96db('0x84'),_0x96db('0x85'),_0x96db('0x86'),_0x96db('0x87'),_0x96db('0x88')];return db[_0x96db('0x5d')]['transaction'](function(_0x2cfc68){var _0x1300ab=_[_0x96db('0x31')](_0x3e6bcf,function(_0x2fd3cc){var _0x145602={'attributes':['id',_0x96db('0x2e')]};if(_0x2fd3cc==='Voice'){_0x145602[_0x96db('0x89')]={'attributes':[_0x96db('0x8a')]};}return _0xaf9375[_0x96db('0x52')+_0x2fd3cc+_0x96db('0x7a')](_0x145602)['then'](function(_0x59b481){var _0x2cc189=_[_0x96db('0x31')](_0x59b481,function(_0x5abd07){var _0x5387c5=_['map'](_0x1cacbf,function(_0x4efae9){var _0x949885={'where':{'UserId':_0x4efae9,[_0x2fd3cc+_0x96db('0x8b')]:_0x5abd07['id']},'transaction':_0x2cfc68};if(_0x2fd3cc===_0x96db('0x82')){_0x949885['defaults']={'penalty':_0x5abd07[_0x96db('0x8c')][_0x96db('0x8a')]};}return db[_0x96db('0x8d')+_0x2fd3cc+'Queue'][_0x96db('0x8e')](_0x949885)[_0x96db('0x47')](function(){socket[_0x96db('0x8f')](_0x96db('0x4f')+_0x2fd3cc+_0x96db('0x90'),{'UserId':_0x4efae9,[_0x2fd3cc+_0x96db('0x8b')]:_0x5abd07['id']});if(_0x2fd3cc!=='Voice'){return;}return db[_0x96db('0x8d')][_0x96db('0x49')]({'where':{'id':_0x1cacbf,'online':0x1},'attributes':['id','name',_0x96db('0x91'),_0x96db('0x92'),_0x96db('0x93')],'raw':!![]})[_0x96db('0x47')](function(_0x3c817d){var _0x22539c=_[_0x96db('0x31')](_0x3c817d,function(_0x2db8ed){return db[_0x96db('0x94')][_0x96db('0x95')]({'membername':_0x2db8ed['name'],'UserId':_0x2db8ed['id'],'queue_name':_0x5abd07[_0x96db('0x2e')],'VoiceQueueId':_0x5abd07['id'],'interface':_[_0x96db('0x96')](_0x2db8ed[_0x96db('0x93')])?util['format']('SIP/%s',_0x2db8ed[_0x96db('0x2e')]):_0x2db8ed[_0x96db('0x93')],'paused':_0x2db8ed[_0x96db('0x92')]||![],'penalty':_0x5abd07['TeamVoiceQueue'][_0x96db('0x8a')]},{'transaction':_0x2cfc68});});return Promise[_0x96db('0x97')](_0x22539c);});});});return Promise[_0x96db('0x97')](_0x5387c5);});return Promise[_0x96db('0x97')](_0x2cc189);})[_0x96db('0x47')](function(){return db[_0x96db('0x71')][_0x96db('0x74')]({'where':{'teamId':_0x1143b6}})['then'](function(_0x49c952){if(_0x49c952){var _0x4d4012=_[_0x96db('0x31')](_0x1cacbf,function(_0x1873d6){db[_0x96db('0x72')]['upsert']({'UserId':_0x1873d6,'VoicePrefixId':_0x49c952['VoicePrefixId']});});return Promise[_0x96db('0x97')](_0x4d4012);}});});});return Promise[_0x96db('0x97')](_0x1300ab)['then'](function(){return _0xaf9375[_0x96db('0x80')](_0x1cacbf,{'transaction':_0x2cfc68})[_0x96db('0x98')](function(_0x4f1ec0){return _0x4f1ec0;});});});}})[_0x96db('0x47')](respondWithResult(_0x381202,null))['catch'](handleError(_0x381202,null));};exports[_0x96db('0x99')]=function(_0x2ff188,_0x53cc06){var _0xb75f67=_[_0x96db('0x81')](_0x2ff188[_0x96db('0x35')][_0x96db('0x7f')])?_0x2ff188[_0x96db('0x35')]['ids']:[_0x2ff188[_0x96db('0x35')][_0x96db('0x7f')]];var _0x3c3901=_0x2ff188[_0x96db('0x5a')]['id'];return db[_0x96db('0x32')][_0x96db('0x4c')]({'where':{'id':_0x3c3901}})[_0x96db('0x47')](handleEntityNotFound(_0x53cc06,null))[_0x96db('0x47')](function(_0x576536){if(_0x576536){var _0x315fd8=['Voice',_0x96db('0x83'),'Mail','Sms',_0x96db('0x86'),_0x96db('0x87'),_0x96db('0x88')];return db[_0x96db('0x5d')][_0x96db('0x9a')](function(_0x59e65e){var _0x5e7a47=_[_0x96db('0x31')](_0x315fd8,function(_0xee8214){var _0x3f9c14={'attributes':['id',_0x96db('0x2e')]};return _0x576536['get'+_0xee8214+_0x96db('0x7a')](_0x3f9c14)[_0x96db('0x47')](function(_0x24fcfc){var _0x48a042=_[_0x96db('0x31')](_0x24fcfc,function(_0x595d88){return _0x595d88[_0x96db('0x99')](_0xb75f67,{'transaction':_0x59e65e})[_0x96db('0x47')](function(){var _0x1e6a3f=_[_0x96db('0x31')](_0xb75f67,function(_0x1acdda){socket[_0x96db('0x8f')](_0x96db('0x4f')+_0xee8214+_0x96db('0x9b'),{'UserId':Number(_0x1acdda),[_0xee8214+'QueueId']:_0x595d88['id']});if(_0xee8214!==_0x96db('0x82')){return;}return db[_0x96db('0x94')]['destroy']({'where':{'VoiceQueueId':_0x595d88['id'],'UserId':_0x1acdda},'transaction':_0x59e65e});});return Promise[_0x96db('0x97')](_0x1e6a3f);});});return Promise['all'](_0x48a042);});});return Promise['all'](_0x5e7a47)[_0x96db('0x47')](function(){return _0x576536['removeAgents'](_0xb75f67,{'transaction':_0x59e65e});})[_0x96db('0x47')](function(){return db[_0x96db('0x71')][_0x96db('0x74')]({'where':{'teamId':_0x3c3901}})[_0x96db('0x47')](function(_0x326f48){if(_0x326f48){var _0x3002df=_[_0x96db('0x31')](_0xb75f67,function(_0x3a20d2){db[_0x96db('0x72')][_0x96db('0x5b')]({'where':{'UserId':_0x3a20d2,'VoicePrefixId':_0x326f48['VoicePrefixId']}});});return Promise[_0x96db('0x97')](_0x3002df);}});});});}})[_0x96db('0x47')](respondWithStatusCode(_0x53cc06,null))[_0x96db('0x58')](handleError(_0x53cc06,null));};exports[_0x96db('0x9c')]=function(_0x5c18aa,_0x3cce5a,_0x2e08d6){var _0x29fdb5={};var _0x2ca151={};var _0x37747c;var _0x475b4f;return db['Team'][_0x96db('0x74')]({'where':{'id':_0x5c18aa[_0x96db('0x5a')]['id']}})[_0x96db('0x47')](handleEntityNotFound(_0x3cce5a,null))['then'](function(_0x4db6e7){if(_0x4db6e7){_0x37747c=_0x4db6e7;_0x2ca151[_0x96db('0x38')]=_[_0x96db('0x36')](db['User'][_0x96db('0x33')]);_0x2ca151['query']=_[_0x96db('0x36')](_0x5c18aa[_0x96db('0x35')]);_0x2ca151[_0x96db('0x41')]=_[_0x96db('0x37')](_0x2ca151[_0x96db('0x38')],_0x2ca151[_0x96db('0x35')]);_0x29fdb5[_0x96db('0x39')]=_[_0x96db('0x37')](_0x2ca151[_0x96db('0x38')],qs[_0x96db('0x3a')](_0x5c18aa[_0x96db('0x35')][_0x96db('0x3a')]));_0x29fdb5['attributes']=_0x29fdb5['attributes'][_0x96db('0x3b')]?_0x29fdb5[_0x96db('0x39')]:_0x2ca151['model'];_0x29fdb5['order']=qs[_0x96db('0x3f')](_0x5c18aa[_0x96db('0x35')][_0x96db('0x3f')]);_0x29fdb5[_0x96db('0x40')]=qs[_0x96db('0x41')](_[_0x96db('0x42')](_0x5c18aa[_0x96db('0x35')],_0x2ca151[_0x96db('0x41')]));if(_0x5c18aa[_0x96db('0x35')]['filter']){_0x29fdb5[_0x96db('0x40')]=_[_0x96db('0x44')](_0x29fdb5[_0x96db('0x40')],{'$or':_[_0x96db('0x31')](_0x29fdb5['attributes'],function(_0x2217e7){var _0x52e751={};_0x52e751[_0x2217e7]={'$like':'%'+_0x5c18aa[_0x96db('0x35')][_0x96db('0x43')]+'%'};return _0x52e751;})});}_0x29fdb5=_['merge']({},_0x29fdb5,_0x5c18aa[_0x96db('0x46')]);return _0x37747c[_0x96db('0x9c')](_0x29fdb5);}})[_0x96db('0x47')](function(_0x4de9a8){if(_0x4de9a8){_0x475b4f=_0x4de9a8[_0x96db('0x3b')];if(!_0x5c18aa[_0x96db('0x35')]['hasOwnProperty']('nolimit')){_0x29fdb5[_0x96db('0x24')]=qs[_0x96db('0x24')](_0x5c18aa[_0x96db('0x35')]['limit']);_0x29fdb5['offset']=qs[_0x96db('0x25')](_0x5c18aa[_0x96db('0x35')]['offset']);}return _0x37747c[_0x96db('0x9c')](_0x29fdb5);}})[_0x96db('0x47')](function(_0x2c0789){if(_0x2c0789){return _0x2c0789?{'count':_0x475b4f,'rows':_0x2c0789}:null;}})['then'](respondWithResult(_0x3cce5a,null))['catch'](handleError(_0x3cce5a,null));};
\ No newline at end of file
+var _0x2fc1=['all','spread','removeAgents','isArray','Fax','Queue:remove','TeamVoicePrefix','UserVoicePrefix','getAgents','order','pick','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','ejs','lodash','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','localhost','./team.socket','register','status','offset','limit','undefined','count','set','json','save','update','then','sendStatus','stack','send','index','map','Team','rawAttributes','fieldName','type','key','name','query','keys','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','filter','VIRTUAL','options','include','catch','show','params','length','includeAll','merge','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','sequelize','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','Sequelize','QueryTypes','SELECT','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','UserVoiceQueue','SmsQueueId','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','UserWhatsappQueue','VoicePrefixId','end','getQueues','isValidChannel','ValidationError','Unknown\x20channel','capitalize','channel','Queue','toLowerCase','Queues','addQueues','findOne','ids','removeQueues','remove','Voice','Chat','Mail','Sms','Openchannel','Whatsapp','transaction','through','QueueId','TeamVoiceQueue','penalty','findOrCreate','emit','Queue:save','User','voicePause','interface','UserVoiceQueueRt','upsert','isNil','format','SIP/%s'];(function(_0x4dae04,_0x23c8ea){var _0x2b82d2=function(_0xcf9d95){while(--_0xcf9d95){_0x4dae04['push'](_0x4dae04['shift']());}};_0x2b82d2(++_0x23c8ea);}(_0x2fc1,0x1d3));var _0x12fc=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x2fc1[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0x12fc('0x0'));var rimraf=require(_0x12fc('0x1'));var zipdir=require(_0x12fc('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x12fc('0x3'));var moment=require(_0x12fc('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x12fc('0x5'));var util=require(_0x12fc('0x6'));var path=require(_0x12fc('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x12fc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x12fc('0x9'));var squel=require(_0x12fc('0xa'));var crypto=require(_0x12fc('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x12fc('0xc'));var querystring=require(_0x12fc('0xd'));var Papa=require(_0x12fc('0xe'));var Redis=require(_0x12fc('0xf'));var authService=require(_0x12fc('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x12fc('0x11'));var hardwareService=require(_0x12fc('0x12'));var logger=require(_0x12fc('0x13'))(_0x12fc('0x14'));var utils=require(_0x12fc('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x12fc('0x16'));var db=require('../../mysqldb')['db'];config[_0x12fc('0x17')]=_[_0x12fc('0x18')](config[_0x12fc('0x17')],{'host':_0x12fc('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x12fc('0x1a'))[_0x12fc('0x1b')](socket);function respondWithStatusCode(_0x471f2d,_0x5aa4b6){_0x5aa4b6=_0x5aa4b6||0xcc;return function(_0x447067){if(_0x447067){return _0x471f2d['sendStatus'](_0x5aa4b6);}return _0x471f2d[_0x12fc('0x1c')](_0x5aa4b6)['end']();};}function respondWithResult(_0x13c514,_0x208a1f){_0x208a1f=_0x208a1f||0xc8;return function(_0x3d88fc){if(_0x3d88fc){return _0x13c514[_0x12fc('0x1c')](_0x208a1f)['json'](_0x3d88fc);}};}function respondWithFilteredResult(_0xde2540,_0x33d990){return function(_0x4e9667){if(_0x4e9667){var _0x51af44=typeof _0x33d990[_0x12fc('0x1d')]==='undefined'&&typeof _0x33d990[_0x12fc('0x1e')]===_0x12fc('0x1f');var _0x320e40=_0x4e9667[_0x12fc('0x20')];var _0x1195f8=_0x51af44?0x0:_0x33d990['offset'];var _0x2a6f25=_0x51af44?_0x4e9667[_0x12fc('0x20')]:_0x33d990[_0x12fc('0x1d')]+_0x33d990[_0x12fc('0x1e')];var _0x50ecb8;if(_0x2a6f25>=_0x320e40){_0x2a6f25=_0x320e40;_0x50ecb8=0xc8;}else{_0x50ecb8=0xce;}_0xde2540['status'](_0x50ecb8);return _0xde2540[_0x12fc('0x21')]('Content-Range',_0x1195f8+'-'+_0x2a6f25+'/'+_0x320e40)[_0x12fc('0x22')](_0x4e9667);}return null;};}function patchUpdates(_0x1ba660){return function(_0xd46f14){try{jsonpatch['apply'](_0xd46f14,_0x1ba660,!![]);}catch(_0x404faa){return BPromise['reject'](_0x404faa);}return _0xd46f14[_0x12fc('0x23')]();};}function saveUpdates(_0x1c63d1,_0x2d75f0){return function(_0x1998da){if(_0x1998da){return _0x1998da[_0x12fc('0x24')](_0x1c63d1)[_0x12fc('0x25')](function(_0x4bbaa1){return _0x4bbaa1;});}return null;};}function handleEntityNotFound(_0x4ffe28,_0xca1476){return function(_0x414e07){if(!_0x414e07){_0x4ffe28[_0x12fc('0x26')](0x194);}return _0x414e07;};}function handleError(_0xc12bcb,_0x69bb79){_0x69bb79=_0x69bb79||0x1f4;return function(_0x41703c){logger['error'](_0x41703c[_0x12fc('0x27')]);if(_0x41703c['name']){delete _0x41703c['name'];}_0xc12bcb[_0x12fc('0x1c')](_0x69bb79)[_0x12fc('0x28')](_0x41703c);};}exports[_0x12fc('0x29')]=function(_0x1948ba,_0x46c3d6){var _0x284f94={},_0x307b05={},_0x39ed00={'count':0x0,'rows':[]};var _0x3ed184=_[_0x12fc('0x2a')](db[_0x12fc('0x2b')][_0x12fc('0x2c')],function(_0x3243ca){return{'name':_0x3243ca[_0x12fc('0x2d')],'type':_0x3243ca[_0x12fc('0x2e')][_0x12fc('0x2f')]};});_0x307b05['model']=_[_0x12fc('0x2a')](_0x3ed184,_0x12fc('0x30'));_0x307b05[_0x12fc('0x31')]=_[_0x12fc('0x32')](_0x1948ba[_0x12fc('0x31')]);_0x307b05['filters']=_[_0x12fc('0x33')](_0x307b05[_0x12fc('0x34')],_0x307b05['query']);_0x284f94[_0x12fc('0x35')]=_[_0x12fc('0x33')](_0x307b05[_0x12fc('0x34')],qs[_0x12fc('0x36')](_0x1948ba[_0x12fc('0x31')][_0x12fc('0x36')]));_0x284f94[_0x12fc('0x35')]=_0x284f94[_0x12fc('0x35')]['length']?_0x284f94['attributes']:_0x307b05['model'];if(!_0x1948ba[_0x12fc('0x31')][_0x12fc('0x37')](_0x12fc('0x38'))){_0x284f94[_0x12fc('0x1e')]=qs[_0x12fc('0x1e')](_0x1948ba[_0x12fc('0x31')][_0x12fc('0x1e')]);_0x284f94[_0x12fc('0x1d')]=qs[_0x12fc('0x1d')](_0x1948ba['query'][_0x12fc('0x1d')]);}_0x284f94['order']=qs[_0x12fc('0x39')](_0x1948ba[_0x12fc('0x31')]['sort']);_0x284f94[_0x12fc('0x3a')]=qs[_0x12fc('0x3b')](_['pick'](_0x1948ba['query'],_0x307b05['filters']),_0x3ed184);if(_0x1948ba['query'][_0x12fc('0x3c')]){_0x284f94[_0x12fc('0x3a')]=_['merge'](_0x284f94[_0x12fc('0x3a')],{'$or':_[_0x12fc('0x2a')](_0x3ed184,function(_0x4bbdfb){if(_0x4bbdfb[_0x12fc('0x2e')]!==_0x12fc('0x3d')){var _0x2286ad={};_0x2286ad[_0x4bbdfb[_0x12fc('0x30')]]={'$like':'%'+_0x1948ba[_0x12fc('0x31')][_0x12fc('0x3c')]+'%'};return _0x2286ad;}})});}_0x284f94=_['merge']({},_0x284f94,_0x1948ba[_0x12fc('0x3e')]);var _0x2ee459={'where':_0x284f94[_0x12fc('0x3a')]};return db[_0x12fc('0x2b')][_0x12fc('0x20')](_0x2ee459)['then'](function(_0x528cb9){_0x39ed00[_0x12fc('0x20')]=_0x528cb9;if(_0x1948ba[_0x12fc('0x31')]['includeAll']){_0x284f94[_0x12fc('0x3f')]=[{'all':!![]}];}return db[_0x12fc('0x2b')]['findAll'](_0x284f94);})[_0x12fc('0x25')](function(_0x44194c){_0x39ed00['rows']=_0x44194c;return _0x39ed00;})[_0x12fc('0x25')](respondWithFilteredResult(_0x46c3d6,_0x284f94))[_0x12fc('0x40')](handleError(_0x46c3d6,null));};exports[_0x12fc('0x41')]=function(_0x11d89f,_0x46ed2a){var _0xe8736d={'raw':![],'where':{'id':_0x11d89f[_0x12fc('0x42')]['id']}},_0x7cb27e={};_0x7cb27e[_0x12fc('0x34')]=_[_0x12fc('0x32')](db[_0x12fc('0x2b')][_0x12fc('0x2c')]);_0x7cb27e[_0x12fc('0x31')]=_['keys'](_0x11d89f[_0x12fc('0x31')]);_0x7cb27e['filters']=_[_0x12fc('0x33')](_0x7cb27e[_0x12fc('0x34')],_0x7cb27e[_0x12fc('0x31')]);_0xe8736d['attributes']=_['intersection'](_0x7cb27e['model'],qs['fields'](_0x11d89f[_0x12fc('0x31')][_0x12fc('0x36')]));_0xe8736d[_0x12fc('0x35')]=_0xe8736d['attributes'][_0x12fc('0x43')]?_0xe8736d[_0x12fc('0x35')]:_0x7cb27e['model'];if(_0x11d89f[_0x12fc('0x31')][_0x12fc('0x44')]){_0xe8736d[_0x12fc('0x3f')]=[{'all':!![]}];}_0xe8736d=_[_0x12fc('0x45')]({},_0xe8736d,_0x11d89f[_0x12fc('0x3e')]);return db[_0x12fc('0x2b')][_0x12fc('0x46')](_0xe8736d)[_0x12fc('0x25')](handleEntityNotFound(_0x46ed2a,null))[_0x12fc('0x25')](respondWithResult(_0x46ed2a,null))[_0x12fc('0x40')](handleError(_0x46ed2a,null));};exports['create']=function(_0x23d7a1,_0x3b029c){return db['Team'][_0x12fc('0x47')](_0x23d7a1[_0x12fc('0x48')],{})['then'](function(_0x603125){var _0x434e2c=_0x23d7a1[_0x12fc('0x49')][_0x12fc('0x4a')]({'plain':!![]});if(!_0x434e2c)throw new Error(_0x12fc('0x4b'));if(_0x434e2c[_0x12fc('0x4c')]===_0x12fc('0x49')){var _0x1efb22=_0x603125[_0x12fc('0x4a')]({'plain':!![]});var _0x4eb272=_0x12fc('0x4d');return db[_0x12fc('0x4e')][_0x12fc('0x46')]({'where':{'name':_0x4eb272,'userProfileId':_0x434e2c[_0x12fc('0x4f')]},'raw':!![]})[_0x12fc('0x25')](function(_0x1c048e){if(_0x1c048e&&_0x1c048e[_0x12fc('0x50')]===0x0){return db[_0x12fc('0x51')][_0x12fc('0x47')]({'name':_0x1efb22[_0x12fc('0x30')],'resourceId':_0x1efb22['id'],'type':_0x1c048e[_0x12fc('0x30')],'sectionId':_0x1c048e['id']},{})[_0x12fc('0x25')](function(){return _0x603125;});}else{return _0x603125;}})[_0x12fc('0x40')](function(_0x2bb9cf){logger[_0x12fc('0x52')](_0x12fc('0x53'),_0x2bb9cf);throw _0x2bb9cf;});}return _0x603125;})[_0x12fc('0x25')](respondWithResult(_0x3b029c,0xc9))[_0x12fc('0x40')](handleError(_0x3b029c,null));};exports[_0x12fc('0x24')]=function(_0x48df68,_0x140dfe){if(_0x48df68['body']['id']){delete _0x48df68[_0x12fc('0x48')]['id'];}return db[_0x12fc('0x2b')][_0x12fc('0x46')]({'where':{'id':_0x48df68['params']['id']}})[_0x12fc('0x25')](handleEntityNotFound(_0x140dfe,null))[_0x12fc('0x25')](saveUpdates(_0x48df68[_0x12fc('0x48')],null))[_0x12fc('0x25')](respondWithResult(_0x140dfe,null))[_0x12fc('0x40')](handleError(_0x140dfe,null));};exports[_0x12fc('0x54')]=function(_0xae59e1,_0x2435d4){var _0x29f0b0=_0xae59e1['params']['id'];var _0x3f6df1=[];return db[_0x12fc('0x55')]['transaction'](function(_0xdb4505){var _0x16eebc=_0x12fc('0x56')+_0x29f0b0;return db[_0x12fc('0x55')][_0x12fc('0x31')](_0x16eebc,{'type':db[_0x12fc('0x57')][_0x12fc('0x58')][_0x12fc('0x59')],'raw':!![],'transaction':_0xdb4505})[_0x12fc('0x25')](function(_0x1faf80){_0x3f6df1=_[_0x12fc('0x2a')](_0x1faf80,function(_0x78e723){return Number(_0x78e723[_0x12fc('0x5a')]);});})[_0x12fc('0x25')](function(){var _0x8f6565=_0x12fc('0x5b')+_0x29f0b0;return db[_0x12fc('0x55')]['query'](_0x8f6565,{'type':db['Sequelize'][_0x12fc('0x58')][_0x12fc('0x59')],'raw':!![],'transaction':_0xdb4505});})[_0x12fc('0x25')](function(_0x35a606){var _0x18aa18=_[_0x12fc('0x2a')](_0x35a606,function(_0x27a144){return Number(_0x27a144['VoiceQueueId']);});return db[_0x12fc('0x5c')]['destroy']({'where':{'UserId':{'$in':_0x3f6df1},'VoiceQueueId':{'$in':_0x18aa18}},'transaction':_0xdb4505});})['then'](function(){var _0x2d4275='SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20'+_0x29f0b0;return db[_0x12fc('0x55')][_0x12fc('0x31')](_0x2d4275,{'type':db[_0x12fc('0x57')]['QueryTypes'][_0x12fc('0x59')],'raw':!![],'transaction':_0xdb4505});})[_0x12fc('0x25')](function(_0xcbfe41){var _0x91436c=_[_0x12fc('0x2a')](_0xcbfe41,function(_0x187625){return Number(_0x187625['MailQueueId']);});return db['UserMailQueue'][_0x12fc('0x54')]({'where':{'UserId':{'$in':_0x3f6df1},'MailQueueId':{'$in':_0x91436c}},'transaction':_0xdb4505});})[_0x12fc('0x25')](function(){var _0x3c97b9='SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20'+_0x29f0b0;return db[_0x12fc('0x55')][_0x12fc('0x31')](_0x3c97b9,{'type':db[_0x12fc('0x57')][_0x12fc('0x58')][_0x12fc('0x59')],'raw':!![],'transaction':_0xdb4505});})[_0x12fc('0x25')](function(_0x1ac259){var _0xd8fe8c=_[_0x12fc('0x2a')](_0x1ac259,function(_0x1bafff){return Number(_0x1bafff[_0x12fc('0x5d')]);});return db['UserSmsQueue'][_0x12fc('0x54')]({'where':{'UserId':{'$in':_0x3f6df1},'SmsQueueId':{'$in':_0xd8fe8c}},'transaction':_0xdb4505});})[_0x12fc('0x25')](function(){var _0x2153e3=_0x12fc('0x5e')+_0x29f0b0;return db[_0x12fc('0x55')][_0x12fc('0x31')](_0x2153e3,{'type':db[_0x12fc('0x57')]['QueryTypes'][_0x12fc('0x59')],'raw':!![],'transaction':_0xdb4505});})[_0x12fc('0x25')](function(_0x596098){var _0x5cf2a0=_['map'](_0x596098,function(_0x10956d){return Number(_0x10956d[_0x12fc('0x5f')]);});return db['UserChatQueue'][_0x12fc('0x54')]({'where':{'UserId':{'$in':_0x3f6df1},'ChatQueueId':{'$in':_0x5cf2a0}},'transaction':_0xdb4505});})[_0x12fc('0x25')](function(){var _0x111e65=_0x12fc('0x60')+_0x29f0b0;return db[_0x12fc('0x55')]['query'](_0x111e65,{'type':db[_0x12fc('0x57')][_0x12fc('0x58')][_0x12fc('0x59')],'raw':!![],'transaction':_0xdb4505});})[_0x12fc('0x25')](function(_0x3b26e7){var _0x352d49=_['map'](_0x3b26e7,function(_0x571664){return Number(_0x571664[_0x12fc('0x61')]);});return db[_0x12fc('0x62')]['destroy']({'where':{'UserId':{'$in':_0x3f6df1},'FaxQueueId':{'$in':_0x352d49}},'transaction':_0xdb4505});})['then'](function(){var _0x5edeb4=_0x12fc('0x63')+_0x29f0b0;return db[_0x12fc('0x55')][_0x12fc('0x31')](_0x5edeb4,{'type':db[_0x12fc('0x57')][_0x12fc('0x58')][_0x12fc('0x59')],'raw':!![],'transaction':_0xdb4505});})[_0x12fc('0x25')](function(_0x289601){var _0x4274be=_[_0x12fc('0x2a')](_0x289601,function(_0x593c0e){return Number(_0x593c0e[_0x12fc('0x64')]);});return db['UserOpenchannelQueue']['destroy']({'where':{'UserId':{'$in':_0x3f6df1},'OpenchannelQueueId':{'$in':_0x4274be}},'transaction':_0xdb4505});})[_0x12fc('0x25')](function(){var _0x28754b=_0x12fc('0x65')+_0x29f0b0;return db[_0x12fc('0x55')][_0x12fc('0x31')](_0x28754b,{'type':db['Sequelize']['QueryTypes'][_0x12fc('0x59')],'raw':!![],'transaction':_0xdb4505});})[_0x12fc('0x25')](function(_0xfeb3c8){var _0x46d66e=_[_0x12fc('0x2a')](_0xfeb3c8,function(_0x12d8f3){return Number(_0x12d8f3['WhatsappQueueId']);});return db[_0x12fc('0x66')][_0x12fc('0x54')]({'where':{'UserId':{'$in':_0x3f6df1},'WhatsappQueueId':{'$in':_0x46d66e}},'transaction':_0xdb4505});})[_0x12fc('0x25')](function(){return db['TeamVoicePrefix'][_0x12fc('0x46')]({'where':{'TeamId':_0x29f0b0}});})[_0x12fc('0x25')](function(_0x206223){if(_0x206223===null){return;}return db['UserVoicePrefix'][_0x12fc('0x54')]({'where':{'UserId':{'$in':_0x3f6df1},'VoicePrefixId':_0x206223[_0x12fc('0x67')]},'transaction':_0xdb4505});})['then'](function(){return db[_0x12fc('0x2b')][_0x12fc('0x54')]({'where':{'id':_0x29f0b0},'cascade':!![],'transaction':_0xdb4505});})[_0x12fc('0x25')](function(_0x4c4351){if(_0x4c4351===0x0){_0x2435d4[_0x12fc('0x26')](0x194);}else{return db[_0x12fc('0x51')][_0x12fc('0x54')]({'where':{'type':_0x12fc('0x4d'),'resourceId':_0x29f0b0},'cascade':!![],'transaction':_0xdb4505})['then'](function(){_0x2435d4[_0x12fc('0x1c')](0xcc)[_0x12fc('0x68')]();});}})[_0x12fc('0x40')](function(_0x26a431){_0x2435d4[_0x12fc('0x1c')](0x1f4)[_0x12fc('0x28')](_0x26a431);});});};exports[_0x12fc('0x69')]=function(_0xdbe2a7,_0x42f5bd,_0x250e47){return db[_0x12fc('0x2b')]['findOne']({'where':{'id':_0xdbe2a7[_0x12fc('0x42')]['id']}})['then'](handleEntityNotFound(_0x42f5bd,null))[_0x12fc('0x25')](function(_0x4442d2){if(!_0xdbe2a7[_0x12fc('0x31')]['channel']||!utils[_0x12fc('0x6a')](_0xdbe2a7[_0x12fc('0x31')]['channel'])){throw new db[(_0x12fc('0x57'))][(_0x12fc('0x6b'))](_0x12fc('0x6c'));}var _0x46f44f={};var _0x2309de={};_0x2309de[_0x12fc('0x34')]=_[_0x12fc('0x32')](db[_[_0x12fc('0x6d')](_0xdbe2a7[_0x12fc('0x31')][_0x12fc('0x6e')]['toLowerCase']())+_0x12fc('0x6f')][_0x12fc('0x2c')]);_0x2309de['query']=_['keys'](_0xdbe2a7[_0x12fc('0x31')]);_0x2309de[_0x12fc('0x3b')]=_[_0x12fc('0x33')](_0x2309de['model'],_0x2309de[_0x12fc('0x31')]);_0x46f44f[_0x12fc('0x35')]=_[_0x12fc('0x33')](_0x2309de[_0x12fc('0x34')],qs[_0x12fc('0x36')](_0xdbe2a7[_0x12fc('0x31')][_0x12fc('0x36')]));_0x46f44f['attributes']=_0x46f44f[_0x12fc('0x35')][_0x12fc('0x43')]?_0x46f44f[_0x12fc('0x35')]:_0x2309de['model'];_0x46f44f[_0x12fc('0x1e')]=qs['limit'](_0xdbe2a7[_0x12fc('0x31')][_0x12fc('0x1e')]);_0x46f44f[_0x12fc('0x1d')]=qs['offset'](_0xdbe2a7[_0x12fc('0x31')][_0x12fc('0x1d')]);_0x46f44f['order']=qs[_0x12fc('0x39')](_0xdbe2a7[_0x12fc('0x31')]['sort']);_0x46f44f[_0x12fc('0x3a')]=qs[_0x12fc('0x3b')](_['pick'](_0xdbe2a7[_0x12fc('0x31')],_0x2309de[_0x12fc('0x3b')]));_0x46f44f=_['merge']({},_0x46f44f,_0xdbe2a7['options']);return _0x4442d2[_0x12fc('0x4a')+_[_0x12fc('0x6d')](_0xdbe2a7['query'][_0x12fc('0x6e')][_0x12fc('0x70')]())+_0x12fc('0x71')](_0x46f44f);})[_0x12fc('0x25')](respondWithResult(_0x42f5bd,null))[_0x12fc('0x40')](handleError(_0x42f5bd,null));};exports[_0x12fc('0x72')]=function(_0x275933,_0xfad8e3,_0x572333){return db['Team'][_0x12fc('0x73')]({'where':{'id':_0x275933[_0x12fc('0x42')]['id']}})[_0x12fc('0x25')](function(_0x22fa6e){if(_0x22fa6e){if(!_0x275933['body'][_0x12fc('0x6e')]||!utils[_0x12fc('0x6a')](_0x275933[_0x12fc('0x48')][_0x12fc('0x6e')])){throw new db[(_0x12fc('0x57'))][(_0x12fc('0x6b'))](_0x12fc('0x6c'));}return _0x22fa6e['add'+_['capitalize'](_0x275933['body'][_0x12fc('0x6e')][_0x12fc('0x70')]())+_0x12fc('0x71')](_0x275933['body'][_0x12fc('0x74')]);}return null;})[_0x12fc('0x25')](handleEntityNotFound(_0xfad8e3,null))['then'](respondWithStatusCode(_0xfad8e3,null))['catch'](handleError(_0xfad8e3,null));};exports[_0x12fc('0x75')]=function(_0x1c0a3c,_0x4aff16,_0x5bb3a4){return db[_0x12fc('0x2b')][_0x12fc('0x73')]({'where':{'id':_0x1c0a3c[_0x12fc('0x42')]['id']}})[_0x12fc('0x25')](function(_0x3faa13){if(_0x3faa13){if(!_0x1c0a3c[_0x12fc('0x31')][_0x12fc('0x6e')]||!utils[_0x12fc('0x6a')](_0x1c0a3c['query'][_0x12fc('0x6e')])){throw new db[(_0x12fc('0x57'))]['ValidationError']('Unknown\x20channel');}return _0x3faa13[_0x12fc('0x76')+_['capitalize'](_0x1c0a3c[_0x12fc('0x31')][_0x12fc('0x6e')][_0x12fc('0x70')]())+_0x12fc('0x71')](_0x1c0a3c['query'][_0x12fc('0x74')]);}return null;})['then'](handleEntityNotFound(_0x4aff16,null))[_0x12fc('0x25')](respondWithStatusCode(_0x4aff16,null))[_0x12fc('0x40')](handleError(_0x4aff16,null));};exports['addAgents']=function(_0x3178fb,_0x4383d9){var _0x262e55=_['isArray'](_0x3178fb[_0x12fc('0x48')][_0x12fc('0x74')])?_0x3178fb[_0x12fc('0x48')][_0x12fc('0x74')]:[_0x3178fb['body'][_0x12fc('0x74')]];var _0x35d902=_0x3178fb['params']['id'];return db[_0x12fc('0x2b')]['find']({'where':{'id':_0x35d902}})['then'](handleEntityNotFound(_0x4383d9,null))[_0x12fc('0x25')](function(_0x54647d){if(_0x54647d){var _0x333669=[_0x12fc('0x77'),_0x12fc('0x78'),_0x12fc('0x79'),_0x12fc('0x7a'),'Fax',_0x12fc('0x7b'),_0x12fc('0x7c')];return db['sequelize'][_0x12fc('0x7d')](function(_0x485b9f){var _0x4db7b5=_[_0x12fc('0x2a')](_0x333669,function(_0x5a52f8){var _0xead773={'attributes':['id','name']};if(_0x5a52f8===_0x12fc('0x77')){_0xead773[_0x12fc('0x7e')]={'attributes':['penalty']};}return _0x54647d[_0x12fc('0x4a')+_0x5a52f8+_0x12fc('0x71')](_0xead773)[_0x12fc('0x25')](function(_0x3e95d6){var _0x540604=_[_0x12fc('0x2a')](_0x3e95d6,function(_0x5e6e4c){var _0x3cb86c=_['map'](_0x262e55,function(_0x44ccd7){var _0x1a1825={'where':{'UserId':_0x44ccd7,[_0x5a52f8+_0x12fc('0x7f')]:_0x5e6e4c['id']},'transaction':_0x485b9f};if(_0x5a52f8===_0x12fc('0x77')){_0x1a1825[_0x12fc('0x18')]={'penalty':_0x5e6e4c[_0x12fc('0x80')][_0x12fc('0x81')]};}return db['User'+_0x5a52f8+_0x12fc('0x6f')][_0x12fc('0x82')](_0x1a1825)[_0x12fc('0x25')](function(){socket[_0x12fc('0x83')]('user'+_0x5a52f8+_0x12fc('0x84'),{'UserId':_0x44ccd7,[_0x5a52f8+_0x12fc('0x7f')]:_0x5e6e4c['id']});if(_0x5a52f8!==_0x12fc('0x77')){return;}return db[_0x12fc('0x85')]['findAll']({'where':{'id':_0x262e55,'online':0x1},'attributes':['id','name','online',_0x12fc('0x86'),_0x12fc('0x87')],'raw':!![]})[_0x12fc('0x25')](function(_0x56164e){var _0x17de60=_[_0x12fc('0x2a')](_0x56164e,function(_0x25789e){return db[_0x12fc('0x88')][_0x12fc('0x89')]({'membername':_0x25789e[_0x12fc('0x30')],'UserId':_0x25789e['id'],'queue_name':_0x5e6e4c[_0x12fc('0x30')],'VoiceQueueId':_0x5e6e4c['id'],'interface':_[_0x12fc('0x8a')](_0x25789e[_0x12fc('0x87')])?util[_0x12fc('0x8b')](_0x12fc('0x8c'),_0x25789e['name']):_0x25789e[_0x12fc('0x87')],'paused':_0x25789e['voicePause']||![],'penalty':_0x5e6e4c[_0x12fc('0x80')][_0x12fc('0x81')]},{'transaction':_0x485b9f});});return Promise[_0x12fc('0x8d')](_0x17de60);});});});return Promise[_0x12fc('0x8d')](_0x3cb86c);});return Promise['all'](_0x540604);})['then'](function(){return db['TeamVoicePrefix'][_0x12fc('0x73')]({'where':{'teamId':_0x35d902}})[_0x12fc('0x25')](function(_0x4f1d83){if(_0x4f1d83){var _0x2c3a21=_[_0x12fc('0x2a')](_0x262e55,function(_0x333499){db['UserVoicePrefix'][_0x12fc('0x89')]({'UserId':_0x333499,'VoicePrefixId':_0x4f1d83[_0x12fc('0x67')]});});return Promise[_0x12fc('0x8d')](_0x2c3a21);}});});});return Promise['all'](_0x4db7b5)[_0x12fc('0x25')](function(){return _0x54647d['addAgents'](_0x262e55,{'transaction':_0x485b9f})[_0x12fc('0x8e')](function(_0x33d9e0){return _0x33d9e0;});});});}})['then'](respondWithResult(_0x4383d9,null))['catch'](handleError(_0x4383d9,null));};exports[_0x12fc('0x8f')]=function(_0x196fae,_0x4989ff){var _0x48ec24=_[_0x12fc('0x90')](_0x196fae[_0x12fc('0x31')]['ids'])?_0x196fae[_0x12fc('0x31')]['ids']:[_0x196fae['query'][_0x12fc('0x74')]];var _0x205701=_0x196fae[_0x12fc('0x42')]['id'];return db['Team']['find']({'where':{'id':_0x205701}})[_0x12fc('0x25')](handleEntityNotFound(_0x4989ff,null))['then'](function(_0x160d7f){if(_0x160d7f){var _0x1d4c3c=[_0x12fc('0x77'),'Chat',_0x12fc('0x79'),_0x12fc('0x7a'),_0x12fc('0x91'),'Openchannel',_0x12fc('0x7c')];return db[_0x12fc('0x55')][_0x12fc('0x7d')](function(_0x585233){var _0x167559=_[_0x12fc('0x2a')](_0x1d4c3c,function(_0x27cce3){var _0x3ae54d={'attributes':['id','name']};return _0x160d7f[_0x12fc('0x4a')+_0x27cce3+_0x12fc('0x71')](_0x3ae54d)['then'](function(_0x8561e8){var _0x5e0c4c=_[_0x12fc('0x2a')](_0x8561e8,function(_0x5f38cc){return _0x5f38cc[_0x12fc('0x8f')](_0x48ec24,{'transaction':_0x585233})[_0x12fc('0x25')](function(){var _0x55e7f5=_['map'](_0x48ec24,function(_0x43f98e){socket['emit'](_0x12fc('0x49')+_0x27cce3+_0x12fc('0x92'),{'UserId':Number(_0x43f98e),[_0x27cce3+_0x12fc('0x7f')]:_0x5f38cc['id']});if(_0x27cce3!==_0x12fc('0x77')){return;}return db[_0x12fc('0x88')][_0x12fc('0x54')]({'where':{'VoiceQueueId':_0x5f38cc['id'],'UserId':_0x43f98e},'transaction':_0x585233});});return Promise['all'](_0x55e7f5);});});return Promise[_0x12fc('0x8d')](_0x5e0c4c);});});return Promise[_0x12fc('0x8d')](_0x167559)[_0x12fc('0x25')](function(){return _0x160d7f['removeAgents'](_0x48ec24,{'transaction':_0x585233});})[_0x12fc('0x25')](function(){return db[_0x12fc('0x93')][_0x12fc('0x73')]({'where':{'teamId':_0x205701}})[_0x12fc('0x25')](function(_0x58b620){if(_0x58b620){var _0x24e63c=_[_0x12fc('0x2a')](_0x48ec24,function(_0x27f08d){db[_0x12fc('0x94')][_0x12fc('0x54')]({'where':{'UserId':_0x27f08d,'VoicePrefixId':_0x58b620['VoicePrefixId']}});});return Promise[_0x12fc('0x8d')](_0x24e63c);}});});});}})[_0x12fc('0x25')](respondWithStatusCode(_0x4989ff,null))[_0x12fc('0x40')](handleError(_0x4989ff,null));};exports[_0x12fc('0x95')]=function(_0xefbc6,_0x1e1b86,_0x479128){var _0x36f62a={};var _0x568d10={};var _0xc8c09a;var _0x11e79c;return db[_0x12fc('0x2b')]['findOne']({'where':{'id':_0xefbc6[_0x12fc('0x42')]['id']}})[_0x12fc('0x25')](handleEntityNotFound(_0x1e1b86,null))[_0x12fc('0x25')](function(_0x35e5cc){if(_0x35e5cc){_0xc8c09a=_0x35e5cc;_0x568d10['model']=_[_0x12fc('0x32')](db[_0x12fc('0x85')][_0x12fc('0x2c')]);_0x568d10['query']=_[_0x12fc('0x32')](_0xefbc6['query']);_0x568d10['filters']=_[_0x12fc('0x33')](_0x568d10['model'],_0x568d10[_0x12fc('0x31')]);_0x36f62a[_0x12fc('0x35')]=_[_0x12fc('0x33')](_0x568d10[_0x12fc('0x34')],qs[_0x12fc('0x36')](_0xefbc6[_0x12fc('0x31')][_0x12fc('0x36')]));_0x36f62a[_0x12fc('0x35')]=_0x36f62a['attributes'][_0x12fc('0x43')]?_0x36f62a[_0x12fc('0x35')]:_0x568d10[_0x12fc('0x34')];_0x36f62a[_0x12fc('0x96')]=qs[_0x12fc('0x39')](_0xefbc6['query'][_0x12fc('0x39')]);_0x36f62a['where']=qs[_0x12fc('0x3b')](_[_0x12fc('0x97')](_0xefbc6[_0x12fc('0x31')],_0x568d10[_0x12fc('0x3b')]));if(_0xefbc6['query'][_0x12fc('0x3c')]){_0x36f62a['where']=_[_0x12fc('0x45')](_0x36f62a[_0x12fc('0x3a')],{'$or':_['map'](_0x36f62a[_0x12fc('0x35')],function(_0x296ea1){var _0x1553fa={};_0x1553fa[_0x296ea1]={'$like':'%'+_0xefbc6[_0x12fc('0x31')]['filter']+'%'};return _0x1553fa;})});}_0x36f62a=_[_0x12fc('0x45')]({},_0x36f62a,_0xefbc6[_0x12fc('0x3e')]);return _0xc8c09a[_0x12fc('0x95')](_0x36f62a);}})[_0x12fc('0x25')](function(_0xe63bc3){if(_0xe63bc3){_0x11e79c=_0xe63bc3[_0x12fc('0x43')];if(!_0xefbc6[_0x12fc('0x31')][_0x12fc('0x37')](_0x12fc('0x38'))){_0x36f62a[_0x12fc('0x1e')]=qs[_0x12fc('0x1e')](_0xefbc6[_0x12fc('0x31')][_0x12fc('0x1e')]);_0x36f62a[_0x12fc('0x1d')]=qs[_0x12fc('0x1d')](_0xefbc6[_0x12fc('0x31')]['offset']);}return _0xc8c09a['getAgents'](_0x36f62a);}})[_0x12fc('0x25')](function(_0x33cbae){if(_0x33cbae){return _0x33cbae?{'count':_0x11e79c,'rows':_0x33cbae}:null;}})['then'](respondWithResult(_0x1e1b86,null))[_0x12fc('0x40')](handleError(_0x1e1b86,null));};
\ No newline at end of file
index b293b22..71f0409 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2369=['Team','remove','emit','hook','events','../../mysqldb'];(function(_0x4936fb,_0x10fda9){var _0x4430ab=function(_0xd722c3){while(--_0xd722c3){_0x4936fb['push'](_0x4936fb['shift']());}};_0x4430ab(++_0x10fda9);}(_0x2369,0x1b4));var _0x9236=function(_0x447852,_0x202f59){_0x447852=_0x447852-0x0;var _0x1bfc45=_0x2369[_0x447852];return _0x1bfc45;};'use strict';var EventEmitter=require(_0x9236('0x0'));var Team=require(_0x9236('0x1'))['db'][_0x9236('0x2')];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x9236('0x3')};function emitEvent(_0x1b949c){return function(_0x10ceff,_0x44b60a,_0x3d1a05){TeamEvents['emit'](_0x1b949c+':'+_0x10ceff['id'],_0x10ceff);TeamEvents[_0x9236('0x4')](_0x1b949c,_0x10ceff);_0x3d1a05(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team[_0x9236('0x5')](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
+var _0x0d8d=['emit','hasOwnProperty','exports','events','../../mysqldb','Team','setMaxListeners','save','update'];(function(_0x3a8c85,_0x4ce1bf){var _0x3c11bf=function(_0x558beb){while(--_0x558beb){_0x3a8c85['push'](_0x3a8c85['shift']());}};_0x3c11bf(++_0x4ce1bf);}(_0x0d8d,0x18f));var _0xd0d8=function(_0x15eeb3,_0xde4dcb){_0x15eeb3=_0x15eeb3-0x0;var _0x822e4b=_0x0d8d[_0x15eeb3];return _0x822e4b;};'use strict';var EventEmitter=require(_0xd0d8('0x0'));var Team=require(_0xd0d8('0x1'))['db'][_0xd0d8('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0xd0d8('0x3')](0x0);var events={'afterCreate':_0xd0d8('0x4'),'afterUpdate':_0xd0d8('0x5'),'afterDestroy':'remove'};function emitEvent(_0x15ba50){return function(_0x25a711,_0x3d8f16,_0x350c84){TeamEvents['emit'](_0x15ba50+':'+_0x25a711['id'],_0x25a711);TeamEvents[_0xd0d8('0x6')](_0x15ba50,_0x25a711);_0x350c84(null);};}for(var e in events){if(events[_0xd0d8('0x7')](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module[_0xd0d8('0x8')]=TeamEvents;
\ No newline at end of file
index 3fb3225..ae6459c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c7d=['define','Team','teams','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./team.attributes','exports'];(function(_0x49b1ed,_0x5e41b2){var _0x39fe60=function(_0xed5635){while(--_0xed5635){_0x49b1ed['push'](_0x49b1ed['shift']());}};_0x39fe60(++_0x5e41b2);}(_0x6c7d,0xd5));var _0xd6c7=function(_0x1fb865,_0x19dccc){_0x1fb865=_0x1fb865-0x0;var _0x39f585=_0x6c7d[_0x1fb865];return _0x39f585;};'use strict';var _=require(_0xd6c7('0x0'));var util=require(_0xd6c7('0x1'));var logger=require('../../config/logger')(_0xd6c7('0x2'));var moment=require(_0xd6c7('0x3'));var BPromise=require(_0xd6c7('0x4'));var rp=require(_0xd6c7('0x5'));var fs=require('fs');var path=require(_0xd6c7('0x6'));var rimraf=require(_0xd6c7('0x7'));var config=require(_0xd6c7('0x8'));var attributes=require(_0xd6c7('0x9'));module[_0xd6c7('0xa')]=function(_0x5469c2,_0x29303e){return _0x5469c2[_0xd6c7('0xb')](_0xd6c7('0xc'),attributes,{'tableName':_0xd6c7('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x768d=['../../config/environment','exports','Team','teams','lodash','util','../../config/logger','api','moment','path','rimraf'];(function(_0x31f7da,_0x4c7653){var _0x545175=function(_0x7c4151){while(--_0x7c4151){_0x31f7da['push'](_0x31f7da['shift']());}};_0x545175(++_0x4c7653);}(_0x768d,0x10c));var _0xd768=function(_0x39edc6,_0x41c73a){_0x39edc6=_0x39edc6-0x0;var _0x43991e=_0x768d[_0x39edc6];return _0x43991e;};'use strict';var _=require(_0xd768('0x0'));var util=require(_0xd768('0x1'));var logger=require(_0xd768('0x2'))(_0xd768('0x3'));var moment=require(_0xd768('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xd768('0x5'));var rimraf=require(_0xd768('0x6'));var config=require(_0xd768('0x7'));var attributes=require('./team.attributes');module[_0xd768('0x8')]=function(_0x5a2f85,_0x33f915){return _0x5a2f85['define'](_0xd768('0x9'),attributes,{'tableName':_0xd768('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 657a9e1..905c3e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42c6=['client','http','redis','defaults','localhost','socket.io-emitter','./team.socket','register','request','then','info','debug','Team,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','Team,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x47b1a9,_0x694d93){var _0x350f55=function(_0x401399){while(--_0x401399){_0x47b1a9['push'](_0x47b1a9['shift']());}};_0x350f55(++_0x694d93);}(_0x42c6,0xd5));var _0x642c=function(_0x1b880d,_0x271eff){_0x1b880d=_0x1b880d-0x0;var _0x4d85d1=_0x42c6[_0x1b880d];return _0x4d85d1;};'use strict';var _=require(_0x642c('0x0'));var util=require(_0x642c('0x1'));var moment=require(_0x642c('0x2'));var BPromise=require(_0x642c('0x3'));var rs=require(_0x642c('0x4'));var fs=require('fs');var Redis=require(_0x642c('0x5'));var db=require(_0x642c('0x6'))['db'];var utils=require(_0x642c('0x7'));var logger=require('../../config/logger')(_0x642c('0x8'));var config=require(_0x642c('0x9'));var jayson=require(_0x642c('0xa'));var client=jayson[_0x642c('0xb')][_0x642c('0xc')]({'port':0x232a});config[_0x642c('0xd')]=_[_0x642c('0xe')](config['redis'],{'host':_0x642c('0xf'),'port':0x18eb});var socket=require(_0x642c('0x10'))(new Redis(config['redis']));require(_0x642c('0x11'))[_0x642c('0x12')](socket);function respondWithRpcPromise(_0x4de38e,_0x56c487,_0xff0d68){return new BPromise(function(_0x4f6304,_0x23913b){return client[_0x642c('0x13')](_0x4de38e,_0xff0d68)[_0x642c('0x14')](function(_0x483084){logger[_0x642c('0x15')]('Team,\x20%s,\x20%s',_0x56c487,'request\x20sent');logger[_0x642c('0x16')](_0x642c('0x17'),_0x56c487,_0x642c('0x18'),JSON[_0x642c('0x19')](_0x483084));if(_0x483084['error']){if(_0x483084['error'][_0x642c('0x1a')]===0x1f4){logger[_0x642c('0x1b')](_0x642c('0x1c'),_0x56c487,_0x483084[_0x642c('0x1b')]['message']);return _0x23913b(_0x483084['error'][_0x642c('0x1d')]);}logger[_0x642c('0x1b')]('Team,\x20%s,\x20%s',_0x56c487,_0x483084[_0x642c('0x1b')][_0x642c('0x1d')]);return _0x4f6304(_0x483084[_0x642c('0x1b')]['message']);}else{logger[_0x642c('0x15')](_0x642c('0x1c'),_0x56c487,_0x642c('0x18'));_0x4f6304(_0x483084[_0x642c('0x1e')][_0x642c('0x1d')]);}})[_0x642c('0x1f')](function(_0x51e23f){logger[_0x642c('0x1b')](_0x642c('0x1c'),_0x56c487,_0x51e23f);_0x23913b(_0x51e23f);});});}
\ No newline at end of file
+var _0xd6d8=['result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./team.socket','register','then','info','Team,\x20%s,\x20%s','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xd6d8,0x1e8));var _0x8d6d=function(_0x12d6c2,_0x409bc8){_0x12d6c2=_0x12d6c2-0x0;var _0x1c9825=_0xd6d8[_0x12d6c2];return _0x1c9825;};'use strict';var _=require(_0x8d6d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x8d6d('0x1'));var rs=require(_0x8d6d('0x2'));var fs=require('fs');var Redis=require(_0x8d6d('0x3'));var db=require(_0x8d6d('0x4'))['db'];var utils=require(_0x8d6d('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x8d6d('0x6'));var jayson=require(_0x8d6d('0x7'));var client=jayson[_0x8d6d('0x8')][_0x8d6d('0x9')]({'port':0x232a});config[_0x8d6d('0xa')]=_[_0x8d6d('0xb')](config[_0x8d6d('0xa')],{'host':_0x8d6d('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8d6d('0xa')]));require(_0x8d6d('0xd'))[_0x8d6d('0xe')](socket);function respondWithRpcPromise(_0x3af1d2,_0x35e075,_0x56302d){return new BPromise(function(_0x5cebf4,_0x4ca8c7){return client['request'](_0x3af1d2,_0x56302d)[_0x8d6d('0xf')](function(_0xfec649){logger[_0x8d6d('0x10')](_0x8d6d('0x11'),_0x35e075,_0x8d6d('0x12'));logger[_0x8d6d('0x13')](_0x8d6d('0x14'),_0x35e075,_0x8d6d('0x12'),JSON[_0x8d6d('0x15')](_0xfec649));if(_0xfec649[_0x8d6d('0x16')]){if(_0xfec649[_0x8d6d('0x16')][_0x8d6d('0x17')]===0x1f4){logger[_0x8d6d('0x16')](_0x8d6d('0x11'),_0x35e075,_0xfec649[_0x8d6d('0x16')][_0x8d6d('0x18')]);return _0x4ca8c7(_0xfec649[_0x8d6d('0x16')][_0x8d6d('0x18')]);}logger[_0x8d6d('0x16')](_0x8d6d('0x11'),_0x35e075,_0xfec649[_0x8d6d('0x16')]['message']);return _0x5cebf4(_0xfec649[_0x8d6d('0x16')][_0x8d6d('0x18')]);}else{logger['info'](_0x8d6d('0x11'),_0x35e075,'request\x20sent');_0x5cebf4(_0xfec649[_0x8d6d('0x19')]['message']);}})[_0x8d6d('0x1a')](function(_0x4ab330){logger['error'](_0x8d6d('0x11'),_0x35e075,_0x4ab330);_0x4ca8c7(_0x4ab330);});});}
\ No newline at end of file
index e9dde5a..21577a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc069=['save','remove','emit','removeListener','register','length','./team.events'];(function(_0x43f084,_0xb48804){var _0x2a6dde=function(_0x1fab7f){while(--_0x1fab7f){_0x43f084['push'](_0x43f084['shift']());}};_0x2a6dde(++_0xb48804);}(_0xc069,0x1cd));var _0x9c06=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc069[_0x321bb2];return _0x9c12ed;};'use strict';var TeamEvents=require(_0x9c06('0x0'));var events=[_0x9c06('0x1'),_0x9c06('0x2'),'update'];function createListener(_0x2df9ab,_0x20086f){return function(_0x169201){_0x20086f[_0x9c06('0x3')](_0x2df9ab,_0x169201);};}function removeListener(_0x3d5c7c,_0x1ae793){return function(){TeamEvents[_0x9c06('0x4')](_0x3d5c7c,_0x1ae793);};}exports[_0x9c06('0x5')]=function(_0xf640c9){for(var _0x41c32e=0x0,_0x449a6c=events[_0x9c06('0x6')];_0x41c32e<_0x449a6c;_0x41c32e++){var _0x3d1d4e=events[_0x41c32e];var _0x121006=createListener('team:'+_0x3d1d4e,_0xf640c9);TeamEvents['on'](_0x3d1d4e,_0x121006);}};
\ No newline at end of file
+var _0x0713=['removeListener','register','length','team:','remove','update'];(function(_0x504df1,_0x289598){var _0x1063b5=function(_0x627abd){while(--_0x627abd){_0x504df1['push'](_0x504df1['shift']());}};_0x1063b5(++_0x289598);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var TeamEvents=require('./team.events');var events=['save',_0x3071('0x0'),_0x3071('0x1')];function createListener(_0x27405a,_0x305d85){return function(_0x864539){_0x305d85['emit'](_0x27405a,_0x864539);};}function removeListener(_0x2c547f,_0x7b18a4){return function(){TeamEvents[_0x3071('0x2')](_0x2c547f,_0x7b18a4);};}exports[_0x3071('0x3')]=function(_0xabd7b6){for(var _0x41cf76=0x0,_0x1d3dd6=events[_0x3071('0x4')];_0x41cf76<_0x1d3dd6;_0x41cf76++){var _0xbd737f=events[_0x41cf76];var _0x22274c=createListener(_0x3071('0x5')+_0xbd737f,_0xabd7b6);TeamEvents['on'](_0xbd737f,_0x22274c);}};
\ No newline at end of file
index b57509e..ed0fea8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6a9=['INTEGER'];(function(_0x29311d,_0x3f9e23){var _0xa29b8f=function(_0x2bb490){while(--_0x2bb490){_0x29311d['push'](_0x29311d['shift']());}};_0xa29b8f(++_0x3f9e23);}(_0xf6a9,0x176));var _0x9f6a=function(_0x1002f2,_0x5923b7){_0x1002f2=_0x1002f2-0x0;var _0x300bb6=_0xf6a9[_0x1002f2];return _0x300bb6;};'use strict';var Sequelize=require('sequelize');module['exports']={'TeamId':{'type':Sequelize[_0x9f6a('0x0')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x95c5=['sequelize','exports','INTEGER'];(function(_0x26d0e7,_0x196e0a){var _0x1bb6a8=function(_0x35b922){while(--_0x35b922){_0x26d0e7['push'](_0x26d0e7['shift']());}};_0x1bb6a8(++_0x196e0a);}(_0x95c5,0x153));var _0x595c=function(_0x24f326,_0x616a7){_0x24f326=_0x24f326-0x0;var _0x488e2d=_0x95c5[_0x24f326];return _0x488e2d;};'use strict';var Sequelize=require(_0x595c('0x0'));module[_0x595c('0x1')]={'TeamId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x595c('0x2')]}};
\ No newline at end of file
index 4e4a3e2..d36ff5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb01a=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./teamVoicePrefix.attributes','exports','define','TeamVoicePrefix','lodash','util','../../config/logger'];(function(_0x2d2bf1,_0x3b66f9){var _0xdcb63c=function(_0x24515d){while(--_0x24515d){_0x2d2bf1['push'](_0x2d2bf1['shift']());}};_0xdcb63c(++_0x3b66f9);}(_0xb01a,0x1a1));var _0xab01=function(_0x3c05be,_0x5cd7c6){_0x3c05be=_0x3c05be-0x0;var _0x1453b9=_0xb01a[_0x3c05be];return _0x1453b9;};'use strict';var _=require(_0xab01('0x0'));var util=require(_0xab01('0x1'));var logger=require(_0xab01('0x2'))(_0xab01('0x3'));var moment=require(_0xab01('0x4'));var BPromise=require(_0xab01('0x5'));var rp=require(_0xab01('0x6'));var fs=require('fs');var path=require(_0xab01('0x7'));var rimraf=require(_0xab01('0x8'));var config=require(_0xab01('0x9'));var attributes=require(_0xab01('0xa'));module[_0xab01('0xb')]=function(_0x22db85,_0x5d8dd9){return _0x22db85[_0xab01('0xc')](_0xab01('0xd'),attributes,{'tableName':'team_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7df3=['define','lodash','util','api','bluebird','path','../../config/environment','./teamVoicePrefix.attributes','exports'];(function(_0x21fde5,_0x450a80){var _0x36f209=function(_0x26f1bb){while(--_0x26f1bb){_0x21fde5['push'](_0x21fde5['shift']());}};_0x36f209(++_0x450a80);}(_0x7df3,0x1cc));var _0x37df=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0x7df3[_0xefd519];return _0x4bb882;};'use strict';var _=require(_0x37df('0x0'));var util=require(_0x37df('0x1'));var logger=require('../../config/logger')(_0x37df('0x2'));var moment=require('moment');var BPromise=require(_0x37df('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x37df('0x4'));var rimraf=require('rimraf');var config=require(_0x37df('0x5'));var attributes=require(_0x37df('0x6'));module[_0x37df('0x7')]=function(_0x368888,_0x194c89){return _0x368888[_0x37df('0x8')]('TeamVoicePrefix',attributes,{'tableName':'team_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b3abe25..d9140ae 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(_0x2f50bd,_0x254c00){var _0x406dbe=function(_0x5b9503){while(--_0x5b9503){_0x2f50bd['push'](_0x2f50bd['shift']());}};_0x406dbe(++_0x254c00);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x35e75a,_0x5ed225){_0x35e75a=_0x35e75a-0x0;var _0xb23c7f=_0xcb91[_0x35e75a];return _0xb23c7f;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x20ea89,_0x1bfce6){var _0x1f06a8=function(_0xc541ce){while(--_0xc541ce){_0x20ea89['push'](_0x20ea89['shift']());}};_0x1f06a8(++_0x1bfce6);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index 8eb75f7..d88a16b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81bb=['sequelize','INTEGER'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x81bb,0x74));var _0xb81b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x81bb[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xb81b('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xb81b('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa22a=['sequelize','exports','INTEGER'];(function(_0x3bc2ff,_0x3c7624){var _0x4bbd30=function(_0x3a7fe4){while(--_0x3a7fe4){_0x3bc2ff['push'](_0x3bc2ff['shift']());}};_0x4bbd30(++_0x3c7624);}(_0xa22a,0x153));var _0xaa22=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa22a[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0xaa22('0x0'));module[_0xaa22('0x1')]={'penalty':{'type':Sequelize[_0xaa22('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 6906c64..08f5d02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1da1=['lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','exports','team_has_voice_queues'];(function(_0x2e449a,_0x3b0a32){var _0x278c0d=function(_0x6231fb){while(--_0x6231fb){_0x2e449a['push'](_0x2e449a['shift']());}};_0x278c0d(++_0x3b0a32);}(_0x1da1,0x1a4));var _0x11da=function(_0x1dca98,_0x1f9847){_0x1dca98=_0x1dca98-0x0;var _0x1faa57=_0x1da1[_0x1dca98];return _0x1faa57;};'use strict';var _=require(_0x11da('0x0'));var util=require(_0x11da('0x1'));var logger=require(_0x11da('0x2'))(_0x11da('0x3'));var moment=require(_0x11da('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x11da('0x5'));var rimraf=require(_0x11da('0x6'));var config=require(_0x11da('0x7'));var attributes=require('./teamVoiceQueue.attributes');module[_0x11da('0x8')]=function(_0x209cbb,_0x15c324){return _0x209cbb['define']('TeamVoiceQueue',attributes,{'tableName':_0x11da('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x212b=['api','moment','bluebird','path','rimraf','../../config/environment','exports','TeamVoiceQueue','team_has_voice_queues','lodash','../../config/logger'];(function(_0x5ee71e,_0x28e6bf){var _0x1675b1=function(_0x5f543c){while(--_0x5f543c){_0x5ee71e['push'](_0x5ee71e['shift']());}};_0x1675b1(++_0x28e6bf);}(_0x212b,0x148));var _0xb212=function(_0x1238e2,_0x51f482){_0x1238e2=_0x1238e2-0x0;var _0x31e927=_0x212b[_0x1238e2];return _0x31e927;};'use strict';var _=require(_0xb212('0x0'));var util=require('util');var logger=require(_0xb212('0x1'))(_0xb212('0x2'));var moment=require(_0xb212('0x3'));var BPromise=require(_0xb212('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb212('0x5'));var rimraf=require(_0xb212('0x6'));var config=require(_0xb212('0x7'));var attributes=require('./teamVoiceQueue.attributes');module[_0xb212('0x8')]=function(_0x49a13c,_0x21825a){return _0x49a13c['define'](_0xb212('0x9'),attributes,{'tableName':_0xb212('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0243c3b..b5e5a44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a97=['randomstring','ioredis','../../config/utils','rpc','client','http','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','moment','bluebird'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0x4a97,0x1eb));var _0x74a9=function(_0x2a6fd5,_0x3d6deb){_0x2a6fd5=_0x2a6fd5-0x0;var _0x43c6a4=_0x4a97[_0x2a6fd5];return _0x43c6a4;};'use strict';var _=require(_0x74a9('0x0'));var util=require('util');var moment=require(_0x74a9('0x1'));var BPromise=require(_0x74a9('0x2'));var rs=require(_0x74a9('0x3'));var fs=require('fs');var Redis=require(_0x74a9('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x74a9('0x5'));var logger=require('../../config/logger')(_0x74a9('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x74a9('0x7')][_0x74a9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x15198f,_0x412d0c,_0x7d2b3b){return new BPromise(function(_0x4e8873,_0xb20f78){return client[_0x74a9('0x9')](_0x15198f,_0x7d2b3b)[_0x74a9('0xa')](function(_0x217844){logger[_0x74a9('0xb')](_0x74a9('0xc'),_0x412d0c,_0x74a9('0xd'));logger['debug'](_0x74a9('0xe'),_0x412d0c,_0x74a9('0xd'),JSON['stringify'](_0x217844));if(_0x217844[_0x74a9('0xf')]){if(_0x217844['error'][_0x74a9('0x10')]===0x1f4){logger['error'](_0x74a9('0xc'),_0x412d0c,_0x217844[_0x74a9('0xf')][_0x74a9('0x11')]);return _0xb20f78(_0x217844[_0x74a9('0xf')][_0x74a9('0x11')]);}logger[_0x74a9('0xf')](_0x74a9('0xc'),_0x412d0c,_0x217844[_0x74a9('0xf')][_0x74a9('0x11')]);return _0x4e8873(_0x217844[_0x74a9('0xf')][_0x74a9('0x11')]);}else{logger[_0x74a9('0xb')](_0x74a9('0xc'),_0x412d0c,_0x74a9('0xd'));_0x4e8873(_0x217844[_0x74a9('0x12')][_0x74a9('0x11')]);}})['catch'](function(_0x71ec18){logger['error']('TeamVoiceQueue,\x20%s,\x20%s',_0x412d0c,_0x71ec18);_0xb20f78(_0x71ec18);});});}
\ No newline at end of file
+var _0xcb81=['lodash','util','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch'];(function(_0x199591,_0x572c92){var _0x427127=function(_0x51d164){while(--_0x51d164){_0x199591['push'](_0x199591['shift']());}};_0x427127(++_0x572c92);}(_0xcb81,0x154));var _0x1cb8=function(_0x4e5552,_0x19ec4e){_0x4e5552=_0x4e5552-0x0;var _0x60a338=_0xcb81[_0x4e5552];return _0x60a338;};'use strict';var _=require(_0x1cb8('0x0'));var util=require(_0x1cb8('0x1'));var moment=require('moment');var BPromise=require(_0x1cb8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1cb8('0x3'));var logger=require(_0x1cb8('0x4'))(_0x1cb8('0x5'));var config=require(_0x1cb8('0x6'));var jayson=require(_0x1cb8('0x7'));var client=jayson['client'][_0x1cb8('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2ac2d6,_0x584b16,_0x2408c2){return new BPromise(function(_0x39b4ad,_0x282fd8){return client['request'](_0x2ac2d6,_0x2408c2)[_0x1cb8('0x9')](function(_0x51dc9e){logger['info'](_0x1cb8('0xa'),_0x584b16,_0x1cb8('0xb'));logger[_0x1cb8('0xc')](_0x1cb8('0xd'),_0x584b16,_0x1cb8('0xb'),JSON[_0x1cb8('0xe')](_0x51dc9e));if(_0x51dc9e[_0x1cb8('0xf')]){if(_0x51dc9e[_0x1cb8('0xf')]['code']===0x1f4){logger[_0x1cb8('0xf')](_0x1cb8('0xa'),_0x584b16,_0x51dc9e[_0x1cb8('0xf')][_0x1cb8('0x10')]);return _0x282fd8(_0x51dc9e[_0x1cb8('0xf')]['message']);}logger[_0x1cb8('0xf')](_0x1cb8('0xa'),_0x584b16,_0x51dc9e[_0x1cb8('0xf')][_0x1cb8('0x10')]);return _0x39b4ad(_0x51dc9e[_0x1cb8('0xf')][_0x1cb8('0x10')]);}else{logger[_0x1cb8('0x11')](_0x1cb8('0xa'),_0x584b16,'request\x20sent');_0x39b4ad(_0x51dc9e[_0x1cb8('0x12')]['message']);}})[_0x1cb8('0x13')](function(_0x28b8ff){logger[_0x1cb8('0xf')](_0x1cb8('0xa'),_0x584b16,_0x28b8ff);_0x282fd8(_0x28b8ff);});});}
\ No newline at end of file
index 124746c..bf49bcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeca8=['../../components/auth/service','../../config/environment','./template.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x3165ac,_0x355f00){var _0x412930=function(_0x4a7a3a){while(--_0x4a7a3a){_0x3165ac['push'](_0x3165ac['shift']());}};_0x412930(++_0x355f00);}(_0xeca8,0x1f2));var _0x8eca=function(_0x5bd3c7,_0x28376a){_0x5bd3c7=_0x5bd3c7-0x0;var _0x29151e=_0xeca8[_0x5bd3c7];return _0x29151e;};'use strict';var multer=require(_0x8eca('0x0'));var util=require(_0x8eca('0x1'));var path=require(_0x8eca('0x2'));var timeout=require(_0x8eca('0x3'));var express=require(_0x8eca('0x4'));var router=express[_0x8eca('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x8eca('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8eca('0x7'));var controller=require(_0x8eca('0x8'));router[_0x8eca('0x9')]('/',auth['isAuthenticated'](),controller[_0x8eca('0xa')]);router[_0x8eca('0x9')](_0x8eca('0xb'),auth[_0x8eca('0xc')](),controller[_0x8eca('0xd')]);router[_0x8eca('0xe')]('/',auth['isAuthenticated'](),controller[_0x8eca('0xf')]);router[_0x8eca('0x10')](_0x8eca('0xb'),auth[_0x8eca('0xc')](),controller[_0x8eca('0x11')]);router[_0x8eca('0x12')](_0x8eca('0xb'),auth[_0x8eca('0xc')](),controller[_0x8eca('0x13')]);module[_0x8eca('0x14')]=router;
\ No newline at end of file
+var _0xcaef=['connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','show','post','put','update','delete','/:id','destroy','exports','util','path'];(function(_0x10df96,_0x1f62a1){var _0x238069=function(_0x35480d){while(--_0x35480d){_0x10df96['push'](_0x10df96['shift']());}};_0x238069(++_0x1f62a1);}(_0xcaef,0x1c9));var _0xfcae=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0xcaef[_0x4b055c];return _0x4b62bb;};'use strict';var multer=require('multer');var util=require(_0xfcae('0x0'));var path=require(_0xfcae('0x1'));var timeout=require(_0xfcae('0x2'));var express=require(_0xfcae('0x3'));var router=express['Router']();var fs_extra=require(_0xfcae('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xfcae('0x5'));var config=require(_0xfcae('0x6'));var controller=require('./template.controller');router[_0xfcae('0x7')]('/',auth[_0xfcae('0x8')](),controller['index']);router[_0xfcae('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xfcae('0x9')]);router[_0xfcae('0xa')]('/',auth[_0xfcae('0x8')](),controller['create']);router[_0xfcae('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xfcae('0xc')]);router[_0xfcae('0xd')](_0xfcae('0xe'),auth[_0xfcae('0x8')](),controller[_0xfcae('0xf')]);module[_0xfcae('0x10')]=router;
\ No newline at end of file
index 9a79722..2735509 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd902=['STRING','TEXT','sequelize'];(function(_0x5483cc,_0x51b228){var _0x253a94=function(_0x58d73b){while(--_0x58d73b){_0x5483cc['push'](_0x5483cc['shift']());}};_0x253a94(++_0x51b228);}(_0xd902,0x110));var _0x2d90=function(_0x327cbf,_0x114362){_0x327cbf=_0x327cbf-0x0;var _0x409cb8=_0xd902[_0x327cbf];return _0x409cb8;};'use strict';var Sequelize=require(_0x2d90('0x0'));module['exports']={'name':{'type':Sequelize[_0x2d90('0x1')]},'description':{'type':Sequelize[_0x2d90('0x1')]},'html':{'type':Sequelize[_0x2d90('0x2')]}};
\ No newline at end of file
+var _0x5036=['exports','STRING','TEXT','sequelize'];(function(_0x4c05da,_0x414720){var _0x1614db=function(_0xa19cf6){while(--_0xa19cf6){_0x4c05da['push'](_0x4c05da['shift']());}};_0x1614db(++_0x414720);}(_0x5036,0x193));var _0x6503=function(_0x3dc135,_0x546abc){_0x3dc135=_0x3dc135-0x0;var _0x517300=_0x5036[_0x3dc135];return _0x517300;};'use strict';var Sequelize=require(_0x6503('0x0'));module[_0x6503('0x1')]={'name':{'type':Sequelize[_0x6503('0x2')]},'description':{'type':Sequelize[_0x6503('0x2')]},'html':{'type':Sequelize[_0x6503('0x3')]}};
\ No newline at end of file
index 706d9ea..300c8bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b60=['offset','undefined','count','set','Content-Range','apply','reject','save','update','destroy','get','Templates','UserProfileResource','then','sendStatus','error','send','index','Template','rawAttributes','fieldName','type','key','model','map','name','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','findAll','rows','catch','length','include','find','create','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','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'];(function(_0x24bcd8,_0x54f8d6){var _0x2cabab=function(_0x18bb81){while(--_0x18bb81){_0x24bcd8['push'](_0x24bcd8['shift']());}};_0x2cabab(++_0x54f8d6);}(_0x4b60,0x187));var _0x04b6=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x4b60[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0x04b6('0x0'));var rimraf=require(_0x04b6('0x1'));var zipdir=require(_0x04b6('0x2'));var jsonpatch=require(_0x04b6('0x3'));var rp=require(_0x04b6('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x04b6('0x5'));var util=require(_0x04b6('0x6'));var path=require(_0x04b6('0x7'));var sox=require(_0x04b6('0x8'));var csv=require('to-csv');var ejs=require(_0x04b6('0x9'));var fs=require('fs');var fs_extra=require(_0x04b6('0xa'));var _=require(_0x04b6('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x04b6('0xc'));var deskjs=require(_0x04b6('0xd'));var toCsv=require(_0x04b6('0xe'));var querystring=require(_0x04b6('0xf'));var Papa=require('papaparse');var Redis=require(_0x04b6('0x10'));var authService=require(_0x04b6('0x11'));var qs=require(_0x04b6('0x12'));var as=require(_0x04b6('0x13'));var hardwareService=require(_0x04b6('0x14'));var logger=require('../../config/logger')(_0x04b6('0x15'));var utils=require(_0x04b6('0x16'));var config=require(_0x04b6('0x17'));var licenseUtil=require(_0x04b6('0x18'));var db=require(_0x04b6('0x19'))['db'];function respondWithStatusCode(_0x4a8b9e,_0x33ff0c){_0x33ff0c=_0x33ff0c||0xcc;return function(_0x1fdded){if(_0x1fdded){return _0x4a8b9e['sendStatus'](_0x33ff0c);}return _0x4a8b9e[_0x04b6('0x1a')](_0x33ff0c)[_0x04b6('0x1b')]();};}function respondWithResult(_0x4e574c,_0x340bac){_0x340bac=_0x340bac||0xc8;return function(_0x384e63){if(_0x384e63){return _0x4e574c[_0x04b6('0x1a')](_0x340bac)[_0x04b6('0x1c')](_0x384e63);}};}function respondWithFilteredResult(_0x2e7587,_0x314611){return function(_0x33f51f){if(_0x33f51f){var _0x24798d=typeof _0x314611[_0x04b6('0x1d')]===_0x04b6('0x1e')&&typeof _0x314611['limit']===_0x04b6('0x1e');var _0x1b5e13=_0x33f51f['count'];var _0x395be5=_0x24798d?0x0:_0x314611[_0x04b6('0x1d')];var _0x4930de=_0x24798d?_0x33f51f[_0x04b6('0x1f')]:_0x314611['offset']+_0x314611['limit'];var _0x59d15b;if(_0x4930de>=_0x1b5e13){_0x4930de=_0x1b5e13;_0x59d15b=0xc8;}else{_0x59d15b=0xce;}_0x2e7587[_0x04b6('0x1a')](_0x59d15b);return _0x2e7587[_0x04b6('0x20')](_0x04b6('0x21'),_0x395be5+'-'+_0x4930de+'/'+_0x1b5e13)[_0x04b6('0x1c')](_0x33f51f);}return null;};}function patchUpdates(_0x2608cf){return function(_0x340cec){try{jsonpatch[_0x04b6('0x22')](_0x340cec,_0x2608cf,!![]);}catch(_0x573396){return BPromise[_0x04b6('0x23')](_0x573396);}return _0x340cec[_0x04b6('0x24')]();};}function saveUpdates(_0x4a4655,_0x26a749){return function(_0x466f93){if(_0x466f93){return _0x466f93[_0x04b6('0x25')](_0x4a4655)['then'](function(_0x26e696){return _0x26e696;});}return null;};}function removeEntity(_0xe4ebb4,_0x42db9f){return function(_0x4153ea){if(_0x4153ea){return _0x4153ea[_0x04b6('0x26')]()['then'](function(){var _0x2ea730=_0x4153ea[_0x04b6('0x27')]({'plain':!![]});var _0x25d4c4=_0x04b6('0x28');return db[_0x04b6('0x29')][_0x04b6('0x26')]({'where':{'type':_0x25d4c4,'resourceId':_0x2ea730['id']}})[_0x04b6('0x2a')](function(){return _0x4153ea;});})[_0x04b6('0x2a')](function(){_0xe4ebb4[_0x04b6('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x47ffdd,_0x2efce3){return function(_0x3ec3df){if(!_0x3ec3df){_0x47ffdd[_0x04b6('0x2b')](0x194);}return _0x3ec3df;};}function handleError(_0x2ddbde,_0x45371c){_0x45371c=_0x45371c||0x1f4;return function(_0x358c3f){logger[_0x04b6('0x2c')](_0x358c3f['stack']);if(_0x358c3f['name']){delete _0x358c3f['name'];}_0x2ddbde['status'](_0x45371c)[_0x04b6('0x2d')](_0x358c3f);};}exports[_0x04b6('0x2e')]=function(_0x526ed1,_0x4536c8){var _0x2cb7df={},_0x23b29e={},_0x26d1c7={'count':0x0,'rows':[]};var _0x24bddd=_['map'](db[_0x04b6('0x2f')][_0x04b6('0x30')],function(_0x4455e7){return{'name':_0x4455e7[_0x04b6('0x31')],'type':_0x4455e7[_0x04b6('0x32')][_0x04b6('0x33')]};});_0x23b29e[_0x04b6('0x34')]=_[_0x04b6('0x35')](_0x24bddd,_0x04b6('0x36'));_0x23b29e['query']=_[_0x04b6('0x37')](_0x526ed1[_0x04b6('0x38')]);_0x23b29e[_0x04b6('0x39')]=_[_0x04b6('0x3a')](_0x23b29e['model'],_0x23b29e[_0x04b6('0x38')]);_0x2cb7df[_0x04b6('0x3b')]=_['intersection'](_0x23b29e[_0x04b6('0x34')],qs[_0x04b6('0x3c')](_0x526ed1[_0x04b6('0x38')]['fields']));_0x2cb7df[_0x04b6('0x3b')]=_0x2cb7df[_0x04b6('0x3b')]['length']?_0x2cb7df['attributes']:_0x23b29e['model'];if(!_0x526ed1[_0x04b6('0x38')][_0x04b6('0x3d')](_0x04b6('0x3e'))){_0x2cb7df['limit']=qs['limit'](_0x526ed1[_0x04b6('0x38')]['limit']);_0x2cb7df[_0x04b6('0x1d')]=qs['offset'](_0x526ed1[_0x04b6('0x38')]['offset']);}_0x2cb7df[_0x04b6('0x3f')]=qs['sort'](_0x526ed1[_0x04b6('0x38')][_0x04b6('0x40')]);_0x2cb7df[_0x04b6('0x41')]=qs[_0x04b6('0x39')](_[_0x04b6('0x42')](_0x526ed1[_0x04b6('0x38')],_0x23b29e[_0x04b6('0x39')]),_0x24bddd);if(_0x526ed1[_0x04b6('0x38')]['filter']){_0x2cb7df[_0x04b6('0x41')]=_[_0x04b6('0x43')](_0x2cb7df['where'],{'$or':_[_0x04b6('0x35')](_0x24bddd,function(_0x1390f7){if(_0x1390f7[_0x04b6('0x32')]!==_0x04b6('0x44')){var _0x298fd6={};_0x298fd6[_0x1390f7[_0x04b6('0x36')]]={'$like':'%'+_0x526ed1[_0x04b6('0x38')]['filter']+'%'};return _0x298fd6;}})});}_0x2cb7df=_[_0x04b6('0x43')]({},_0x2cb7df,_0x526ed1[_0x04b6('0x45')]);var _0x3a47d1={'where':_0x2cb7df['where']};return db['Template'][_0x04b6('0x1f')](_0x3a47d1)[_0x04b6('0x2a')](function(_0x5cfd9a){_0x26d1c7[_0x04b6('0x1f')]=_0x5cfd9a;if(_0x526ed1[_0x04b6('0x38')][_0x04b6('0x46')]){_0x2cb7df['include']=[{'all':!![]}];}return db[_0x04b6('0x2f')][_0x04b6('0x47')](_0x2cb7df);})[_0x04b6('0x2a')](function(_0x5c4706){_0x26d1c7[_0x04b6('0x48')]=_0x5c4706;return _0x26d1c7;})[_0x04b6('0x2a')](respondWithFilteredResult(_0x4536c8,_0x2cb7df))[_0x04b6('0x49')](handleError(_0x4536c8,null));};exports['show']=function(_0x145a82,_0x39a437){var _0x3971ed={'raw':!![],'where':{'id':_0x145a82['params']['id']}},_0x2d61dd={};_0x2d61dd['model']=_[_0x04b6('0x37')](db[_0x04b6('0x2f')][_0x04b6('0x30')]);_0x2d61dd[_0x04b6('0x38')]=_[_0x04b6('0x37')](_0x145a82['query']);_0x2d61dd[_0x04b6('0x39')]=_[_0x04b6('0x3a')](_0x2d61dd[_0x04b6('0x34')],_0x2d61dd[_0x04b6('0x38')]);_0x3971ed[_0x04b6('0x3b')]=_['intersection'](_0x2d61dd['model'],qs[_0x04b6('0x3c')](_0x145a82['query'][_0x04b6('0x3c')]));_0x3971ed[_0x04b6('0x3b')]=_0x3971ed[_0x04b6('0x3b')][_0x04b6('0x4a')]?_0x3971ed[_0x04b6('0x3b')]:_0x2d61dd[_0x04b6('0x34')];if(_0x145a82[_0x04b6('0x38')][_0x04b6('0x46')]){_0x3971ed[_0x04b6('0x4b')]=[{'all':!![]}];}_0x3971ed=_[_0x04b6('0x43')]({},_0x3971ed,_0x145a82[_0x04b6('0x45')]);return db[_0x04b6('0x2f')][_0x04b6('0x4c')](_0x3971ed)[_0x04b6('0x2a')](handleEntityNotFound(_0x39a437,null))['then'](respondWithResult(_0x39a437,null))[_0x04b6('0x49')](handleError(_0x39a437,null));};exports[_0x04b6('0x4d')]=function(_0x1a77aa,_0x54c94b){return db[_0x04b6('0x2f')][_0x04b6('0x4d')](_0x1a77aa['body'],{})[_0x04b6('0x2a')](function(_0x5ee0ba){var _0x90841=_0x1a77aa[_0x04b6('0x4e')][_0x04b6('0x27')]({'plain':!![]});if(!_0x90841)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x90841['role']===_0x04b6('0x4e')){var _0x3c7996=_0x5ee0ba['get']({'plain':!![]});var _0x51ca3f=_0x04b6('0x28');return db[_0x04b6('0x4f')][_0x04b6('0x4c')]({'where':{'name':_0x51ca3f,'userProfileId':_0x90841['userProfileId']},'raw':!![]})['then'](function(_0x20fd12){if(_0x20fd12&&_0x20fd12[_0x04b6('0x50')]===0x0){return db[_0x04b6('0x29')][_0x04b6('0x4d')]({'name':_0x3c7996[_0x04b6('0x36')],'resourceId':_0x3c7996['id'],'type':_0x20fd12[_0x04b6('0x36')],'sectionId':_0x20fd12['id']},{})[_0x04b6('0x2a')](function(){return _0x5ee0ba;});}else{return _0x5ee0ba;}})[_0x04b6('0x49')](function(_0x39e097){logger['error'](_0x04b6('0x51'),_0x39e097);throw _0x39e097;});}return _0x5ee0ba;})[_0x04b6('0x2a')](respondWithResult(_0x54c94b,0xc9))[_0x04b6('0x49')](handleError(_0x54c94b,null));};exports[_0x04b6('0x25')]=function(_0x5511a7,_0x2ffc93){if(_0x5511a7[_0x04b6('0x52')]['id']){delete _0x5511a7['body']['id'];}return db[_0x04b6('0x2f')]['find']({'where':{'id':_0x5511a7[_0x04b6('0x53')]['id']}})[_0x04b6('0x2a')](handleEntityNotFound(_0x2ffc93,null))[_0x04b6('0x2a')](saveUpdates(_0x5511a7['body'],null))[_0x04b6('0x2a')](respondWithResult(_0x2ffc93,null))['catch'](handleError(_0x2ffc93,null));};exports[_0x04b6('0x26')]=function(_0x2adaaa,_0x18f29e){return db[_0x04b6('0x2f')][_0x04b6('0x4c')]({'where':{'id':_0x2adaaa[_0x04b6('0x53')]['id']}})[_0x04b6('0x2a')](handleEntityNotFound(_0x18f29e,null))[_0x04b6('0x2a')](removeEntity(_0x18f29e,null))[_0x04b6('0x49')](handleError(_0x18f29e,null));};
\ No newline at end of file
+var _0x37ce=['limit','count','set','Content-Range','apply','save','update','destroy','get','Templates','UserProfileResource','then','error','name','send','index','Template','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','fields','attributes','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','show','params','keys','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0xca9e22,_0x257ca7){var _0x445bc2=function(_0x186525){while(--_0x186525){_0xca9e22['push'](_0xca9e22['shift']());}};_0x445bc2(++_0x257ca7);}(_0x37ce,0xd3));var _0xe37c=function(_0x13cd32,_0x48fc3c){_0x13cd32=_0x13cd32-0x0;var _0x28a2e4=_0x37ce[_0x13cd32];return _0x28a2e4;};'use strict';var emlformat=require(_0xe37c('0x0'));var rimraf=require(_0xe37c('0x1'));var zipdir=require(_0xe37c('0x2'));var jsonpatch=require(_0xe37c('0x3'));var rp=require(_0xe37c('0x4'));var moment=require(_0xe37c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xe37c('0x6'));var util=require(_0xe37c('0x7'));var path=require(_0xe37c('0x8'));var sox=require('sox');var csv=require(_0xe37c('0x9'));var ejs=require(_0xe37c('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xe37c('0xb'));var crypto=require(_0xe37c('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe37c('0xd'));var toCsv=require('to-csv');var querystring=require(_0xe37c('0xe'));var Papa=require(_0xe37c('0xf'));var Redis=require(_0xe37c('0x10'));var authService=require(_0xe37c('0x11'));var qs=require(_0xe37c('0x12'));var as=require(_0xe37c('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xe37c('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe37c('0x15'));var db=require(_0xe37c('0x16'))['db'];function respondWithStatusCode(_0x57a4a1,_0xaf6534){_0xaf6534=_0xaf6534||0xcc;return function(_0x1f5fb8){if(_0x1f5fb8){return _0x57a4a1[_0xe37c('0x17')](_0xaf6534);}return _0x57a4a1[_0xe37c('0x18')](_0xaf6534)[_0xe37c('0x19')]();};}function respondWithResult(_0x205d6f,_0x4b00c9){_0x4b00c9=_0x4b00c9||0xc8;return function(_0x1d57d7){if(_0x1d57d7){return _0x205d6f[_0xe37c('0x18')](_0x4b00c9)[_0xe37c('0x1a')](_0x1d57d7);}};}function respondWithFilteredResult(_0x10d0bb,_0x4776ff){return function(_0x2b3aec){if(_0x2b3aec){var _0x3c5734=typeof _0x4776ff[_0xe37c('0x1b')]===_0xe37c('0x1c')&&typeof _0x4776ff[_0xe37c('0x1d')]==='undefined';var _0x2af009=_0x2b3aec['count'];var _0x217d7f=_0x3c5734?0x0:_0x4776ff[_0xe37c('0x1b')];var _0x54dffd=_0x3c5734?_0x2b3aec[_0xe37c('0x1e')]:_0x4776ff[_0xe37c('0x1b')]+_0x4776ff[_0xe37c('0x1d')];var _0x3b7e8f;if(_0x54dffd>=_0x2af009){_0x54dffd=_0x2af009;_0x3b7e8f=0xc8;}else{_0x3b7e8f=0xce;}_0x10d0bb[_0xe37c('0x18')](_0x3b7e8f);return _0x10d0bb[_0xe37c('0x1f')](_0xe37c('0x20'),_0x217d7f+'-'+_0x54dffd+'/'+_0x2af009)[_0xe37c('0x1a')](_0x2b3aec);}return null;};}function patchUpdates(_0x4d2a29){return function(_0x357f20){try{jsonpatch[_0xe37c('0x21')](_0x357f20,_0x4d2a29,!![]);}catch(_0x3fe642){return BPromise['reject'](_0x3fe642);}return _0x357f20[_0xe37c('0x22')]();};}function saveUpdates(_0x1d6b8f,_0x152f22){return function(_0x456afa){if(_0x456afa){return _0x456afa[_0xe37c('0x23')](_0x1d6b8f)['then'](function(_0x1d9734){return _0x1d9734;});}return null;};}function removeEntity(_0x3b3923,_0x303198){return function(_0x131618){if(_0x131618){return _0x131618[_0xe37c('0x24')]()['then'](function(){var _0x10ccb1=_0x131618[_0xe37c('0x25')]({'plain':!![]});var _0x7b9e9f=_0xe37c('0x26');return db[_0xe37c('0x27')][_0xe37c('0x24')]({'where':{'type':_0x7b9e9f,'resourceId':_0x10ccb1['id']}})['then'](function(){return _0x131618;});})[_0xe37c('0x28')](function(){_0x3b3923[_0xe37c('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51fb42,_0x5a0d62){return function(_0x38ca7b){if(!_0x38ca7b){_0x51fb42[_0xe37c('0x17')](0x194);}return _0x38ca7b;};}function handleError(_0x441a97,_0x2a6019){_0x2a6019=_0x2a6019||0x1f4;return function(_0x407a98){logger[_0xe37c('0x29')](_0x407a98['stack']);if(_0x407a98[_0xe37c('0x2a')]){delete _0x407a98['name'];}_0x441a97[_0xe37c('0x18')](_0x2a6019)[_0xe37c('0x2b')](_0x407a98);};}exports[_0xe37c('0x2c')]=function(_0x85ba8,_0x27fda9){var _0x2b2f22={},_0x5dbc1d={},_0x3c862d={'count':0x0,'rows':[]};var _0x1dc6f0=_['map'](db[_0xe37c('0x2d')][_0xe37c('0x2e')],function(_0x10148c){return{'name':_0x10148c[_0xe37c('0x2f')],'type':_0x10148c[_0xe37c('0x30')][_0xe37c('0x31')]};});_0x5dbc1d[_0xe37c('0x32')]=_[_0xe37c('0x33')](_0x1dc6f0,_0xe37c('0x2a'));_0x5dbc1d[_0xe37c('0x34')]=_['keys'](_0x85ba8[_0xe37c('0x34')]);_0x5dbc1d[_0xe37c('0x35')]=_[_0xe37c('0x36')](_0x5dbc1d[_0xe37c('0x32')],_0x5dbc1d[_0xe37c('0x34')]);_0x2b2f22['attributes']=_[_0xe37c('0x36')](_0x5dbc1d['model'],qs['fields'](_0x85ba8[_0xe37c('0x34')][_0xe37c('0x37')]));_0x2b2f22[_0xe37c('0x38')]=_0x2b2f22[_0xe37c('0x38')]['length']?_0x2b2f22[_0xe37c('0x38')]:_0x5dbc1d[_0xe37c('0x32')];if(!_0x85ba8[_0xe37c('0x34')][_0xe37c('0x39')]('nolimit')){_0x2b2f22[_0xe37c('0x1d')]=qs['limit'](_0x85ba8[_0xe37c('0x34')][_0xe37c('0x1d')]);_0x2b2f22[_0xe37c('0x1b')]=qs[_0xe37c('0x1b')](_0x85ba8[_0xe37c('0x34')][_0xe37c('0x1b')]);}_0x2b2f22['order']=qs[_0xe37c('0x3a')](_0x85ba8['query'][_0xe37c('0x3a')]);_0x2b2f22[_0xe37c('0x3b')]=qs['filters'](_[_0xe37c('0x3c')](_0x85ba8['query'],_0x5dbc1d[_0xe37c('0x35')]),_0x1dc6f0);if(_0x85ba8[_0xe37c('0x34')][_0xe37c('0x3d')]){_0x2b2f22[_0xe37c('0x3b')]=_['merge'](_0x2b2f22['where'],{'$or':_[_0xe37c('0x33')](_0x1dc6f0,function(_0x42129c){if(_0x42129c[_0xe37c('0x30')]!=='VIRTUAL'){var _0x36c680={};_0x36c680[_0x42129c['name']]={'$like':'%'+_0x85ba8['query']['filter']+'%'};return _0x36c680;}})});}_0x2b2f22=_[_0xe37c('0x3e')]({},_0x2b2f22,_0x85ba8[_0xe37c('0x3f')]);var _0x58163c={'where':_0x2b2f22[_0xe37c('0x3b')]};return db[_0xe37c('0x2d')][_0xe37c('0x1e')](_0x58163c)[_0xe37c('0x28')](function(_0x5146c5){_0x3c862d[_0xe37c('0x1e')]=_0x5146c5;if(_0x85ba8[_0xe37c('0x34')][_0xe37c('0x40')]){_0x2b2f22['include']=[{'all':!![]}];}return db[_0xe37c('0x2d')][_0xe37c('0x41')](_0x2b2f22);})[_0xe37c('0x28')](function(_0x3fb932){_0x3c862d[_0xe37c('0x42')]=_0x3fb932;return _0x3c862d;})[_0xe37c('0x28')](respondWithFilteredResult(_0x27fda9,_0x2b2f22))[_0xe37c('0x43')](handleError(_0x27fda9,null));};exports[_0xe37c('0x44')]=function(_0x272a97,_0x51a172){var _0x39f919={'raw':!![],'where':{'id':_0x272a97[_0xe37c('0x45')]['id']}},_0x16880c={};_0x16880c[_0xe37c('0x32')]=_[_0xe37c('0x46')](db[_0xe37c('0x2d')]['rawAttributes']);_0x16880c['query']=_[_0xe37c('0x46')](_0x272a97[_0xe37c('0x34')]);_0x16880c[_0xe37c('0x35')]=_[_0xe37c('0x36')](_0x16880c[_0xe37c('0x32')],_0x16880c[_0xe37c('0x34')]);_0x39f919[_0xe37c('0x38')]=_['intersection'](_0x16880c['model'],qs[_0xe37c('0x37')](_0x272a97[_0xe37c('0x34')][_0xe37c('0x37')]));_0x39f919[_0xe37c('0x38')]=_0x39f919[_0xe37c('0x38')][_0xe37c('0x47')]?_0x39f919['attributes']:_0x16880c['model'];if(_0x272a97[_0xe37c('0x34')][_0xe37c('0x40')]){_0x39f919['include']=[{'all':!![]}];}_0x39f919=_[_0xe37c('0x3e')]({},_0x39f919,_0x272a97['options']);return db['Template'][_0xe37c('0x48')](_0x39f919)[_0xe37c('0x28')](handleEntityNotFound(_0x51a172,null))['then'](respondWithResult(_0x51a172,null))[_0xe37c('0x43')](handleError(_0x51a172,null));};exports[_0xe37c('0x49')]=function(_0x2cd5af,_0x59c443){return db[_0xe37c('0x2d')][_0xe37c('0x49')](_0x2cd5af[_0xe37c('0x4a')],{})[_0xe37c('0x28')](function(_0x57b772){var _0x48d885=_0x2cd5af[_0xe37c('0x4b')][_0xe37c('0x25')]({'plain':!![]});if(!_0x48d885)throw new Error(_0xe37c('0x4c'));if(_0x48d885['role']==='user'){var _0x538dc8=_0x57b772[_0xe37c('0x25')]({'plain':!![]});var _0x1d449d=_0xe37c('0x26');return db[_0xe37c('0x4d')][_0xe37c('0x48')]({'where':{'name':_0x1d449d,'userProfileId':_0x48d885['userProfileId']},'raw':!![]})[_0xe37c('0x28')](function(_0x57aa0b){if(_0x57aa0b&&_0x57aa0b[_0xe37c('0x4e')]===0x0){return db['UserProfileResource'][_0xe37c('0x49')]({'name':_0x538dc8['name'],'resourceId':_0x538dc8['id'],'type':_0x57aa0b['name'],'sectionId':_0x57aa0b['id']},{})[_0xe37c('0x28')](function(){return _0x57b772;});}else{return _0x57b772;}})['catch'](function(_0xa71834){logger[_0xe37c('0x29')](_0xe37c('0x4f'),_0xa71834);throw _0xa71834;});}return _0x57b772;})['then'](respondWithResult(_0x59c443,0xc9))['catch'](handleError(_0x59c443,null));};exports[_0xe37c('0x23')]=function(_0x3ac75c,_0x166360){if(_0x3ac75c[_0xe37c('0x4a')]['id']){delete _0x3ac75c[_0xe37c('0x4a')]['id'];}return db['Template'][_0xe37c('0x48')]({'where':{'id':_0x3ac75c[_0xe37c('0x45')]['id']}})[_0xe37c('0x28')](handleEntityNotFound(_0x166360,null))['then'](saveUpdates(_0x3ac75c[_0xe37c('0x4a')],null))[_0xe37c('0x28')](respondWithResult(_0x166360,null))[_0xe37c('0x43')](handleError(_0x166360,null));};exports[_0xe37c('0x24')]=function(_0x49424b,_0x2fba39){return db['Template']['find']({'where':{'id':_0x49424b[_0xe37c('0x45')]['id']}})[_0xe37c('0x28')](handleEntityNotFound(_0x2fba39,null))[_0xe37c('0x28')](removeEntity(_0x2fba39,null))[_0xe37c('0x43')](handleError(_0x2fba39,null));};
\ No newline at end of file
index 00a4ad3..008cef5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80e4=['tools_templates','lodash','util','api','moment','path','rimraf','../../config/environment','./template.attributes','define'];(function(_0x4a6856,_0x51976d){var _0x537bbb=function(_0x1db2bd){while(--_0x1db2bd){_0x4a6856['push'](_0x4a6856['shift']());}};_0x537bbb(++_0x51976d);}(_0x80e4,0x169));var _0x480e=function(_0x6dd5c,_0x4bfc19){_0x6dd5c=_0x6dd5c-0x0;var _0x5a87fa=_0x80e4[_0x6dd5c];return _0x5a87fa;};'use strict';var _=require(_0x480e('0x0'));var util=require(_0x480e('0x1'));var logger=require('../../config/logger')(_0x480e('0x2'));var moment=require(_0x480e('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x480e('0x4'));var rimraf=require(_0x480e('0x5'));var config=require(_0x480e('0x6'));var attributes=require(_0x480e('0x7'));module['exports']=function(_0x3c0ab8,_0x520cec){return _0x3c0ab8[_0x480e('0x8')]('Template',attributes,{'tableName':_0x480e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x03ef=['../../config/logger','moment','bluebird','request-promise','path','rimraf','./template.attributes','define','Template','tools_templates','lodash','util'];(function(_0xcb71e,_0x378c69){var _0x5c1cd9=function(_0x35f881){while(--_0x35f881){_0xcb71e['push'](_0xcb71e['shift']());}};_0x5c1cd9(++_0x378c69);}(_0x03ef,0x9a));var _0xf03e=function(_0x2fc012,_0x503e5b){_0x2fc012=_0x2fc012-0x0;var _0x2891f9=_0x03ef[_0x2fc012];return _0x2891f9;};'use strict';var _=require(_0xf03e('0x0'));var util=require(_0xf03e('0x1'));var logger=require(_0xf03e('0x2'))('api');var moment=require(_0xf03e('0x3'));var BPromise=require(_0xf03e('0x4'));var rp=require(_0xf03e('0x5'));var fs=require('fs');var path=require(_0xf03e('0x6'));var rimraf=require(_0xf03e('0x7'));var config=require('../../config/environment');var attributes=require(_0xf03e('0x8'));module['exports']=function(_0x3986f9,_0x28c43c){return _0x3986f9[_0xf03e('0x9')](_0xf03e('0xa'),attributes,{'tableName':_0xf03e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a702c30..955af05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d00=['model','attributes','map','GetTemplate','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','info','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','error','code','Template,\x20%s,\x20%s','message','result','Template','options','raw','limit','include'];(function(_0x33677a,_0x2af28a){var _0x81ded8=function(_0x1aa6d9){while(--_0x1aa6d9){_0x33677a['push'](_0x33677a['shift']());}};_0x81ded8(++_0x2af28a);}(_0x8d00,0x198));var _0x08d0=function(_0x53054e,_0x454c8e){_0x53054e=_0x53054e-0x0;var _0x147b3f=_0x8d00[_0x53054e];return _0x147b3f;};'use strict';var _=require(_0x08d0('0x0'));var util=require('util');var moment=require(_0x08d0('0x1'));var BPromise=require(_0x08d0('0x2'));var rs=require(_0x08d0('0x3'));var fs=require('fs');var Redis=require(_0x08d0('0x4'));var db=require(_0x08d0('0x5'))['db'];var utils=require(_0x08d0('0x6'));var logger=require(_0x08d0('0x7'))(_0x08d0('0x8'));var config=require(_0x08d0('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x08d0('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41a11e,_0xe82e61,_0x32c50c){return new BPromise(function(_0x50c5b5,_0x32cadd){return client[_0x08d0('0xb')](_0x41a11e,_0x32c50c)['then'](function(_0x17c6e8){logger[_0x08d0('0xc')]('Template,\x20%s,\x20%s',_0xe82e61,_0x08d0('0xd'));logger[_0x08d0('0xe')](_0x08d0('0xf'),_0xe82e61,_0x08d0('0xd'),JSON['stringify'](_0x17c6e8));if(_0x17c6e8[_0x08d0('0x10')]){if(_0x17c6e8['error'][_0x08d0('0x11')]===0x1f4){logger['error'](_0x08d0('0x12'),_0xe82e61,_0x17c6e8['error'][_0x08d0('0x13')]);return _0x32cadd(_0x17c6e8['error'][_0x08d0('0x13')]);}logger['error'](_0x08d0('0x12'),_0xe82e61,_0x17c6e8['error'][_0x08d0('0x13')]);return _0x50c5b5(_0x17c6e8[_0x08d0('0x10')][_0x08d0('0x13')]);}else{logger['info'](_0x08d0('0x12'),_0xe82e61,_0x08d0('0xd'));_0x50c5b5(_0x17c6e8[_0x08d0('0x14')][_0x08d0('0x13')]);}})['catch'](function(_0x808a83){logger['error']('Template,\x20%s,\x20%s',_0xe82e61,_0x808a83);_0x32cadd(_0x808a83);});});}exports['GetTemplate']=function(_0x1da030){var _0x5c27bc=this;return new Promise(function(_0xf3a92b,_0x501efd){return db[_0x08d0('0x15')]['findAll']({'raw':_0x1da030[_0x08d0('0x16')]?_0x1da030[_0x08d0('0x16')][_0x08d0('0x17')]===undefined?!![]:![]:!![],'where':_0x1da030['options']?_0x1da030[_0x08d0('0x16')]['where']||null:null,'attributes':_0x1da030['options']?_0x1da030[_0x08d0('0x16')]['attributes']||null:null,'limit':_0x1da030['options']?_0x1da030['options'][_0x08d0('0x18')]||null:null,'include':_0x1da030['options']?_0x1da030[_0x08d0('0x16')][_0x08d0('0x19')]?_['map'](_0x1da030[_0x08d0('0x16')][_0x08d0('0x19')],function(_0x36323f){return{'model':db[_0x36323f[_0x08d0('0x1a')]],'as':_0x36323f['as'],'attributes':_0x36323f[_0x08d0('0x1b')],'include':_0x36323f[_0x08d0('0x19')]?_[_0x08d0('0x1c')](_0x36323f[_0x08d0('0x19')],function(_0x150222){return{'model':db[_0x150222[_0x08d0('0x1a')]],'as':_0x150222['as'],'attributes':_0x150222[_0x08d0('0x1b')],'include':_0x150222['include']?_['map'](_0x150222['include'],function(_0x3168d6){return{'model':db[_0x3168d6[_0x08d0('0x1a')]],'as':_0x3168d6['as'],'attributes':_0x3168d6['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x193c43){logger[_0x08d0('0xc')](_0x08d0('0x1d'),_0x1da030);logger[_0x08d0('0xe')](_0x08d0('0x1d'),_0x1da030,JSON['stringify'](_0x193c43));_0xf3a92b(_0x193c43);})[_0x08d0('0x1e')](function(_0x1f1222){logger[_0x08d0('0x10')]('GetTemplate',_0x1f1222[_0x08d0('0x13')],_0x1da030);_0x501efd(_0x5c27bc['error'](0x1f4,_0x1f1222['message']));});});};
\ No newline at end of file
+var _0xbd48=['../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','error','code','Template,\x20%s,\x20%s','message','result','GetTemplate','Template','options','where','limit','map','include','model','attributes','catch','lodash','moment','bluebird','randomstring','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbd48,0xd4));var _0x8bd4=function(_0x56b1a1,_0x9bce5e){_0x56b1a1=_0x56b1a1-0x0;var _0x4dd1ff=_0xbd48[_0x56b1a1];return _0x4dd1ff;};'use strict';var _=require(_0x8bd4('0x0'));var util=require('util');var moment=require(_0x8bd4('0x1'));var BPromise=require(_0x8bd4('0x2'));var rs=require(_0x8bd4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8bd4('0x4'))['db'];var utils=require(_0x8bd4('0x5'));var logger=require(_0x8bd4('0x6'))(_0x8bd4('0x7'));var config=require(_0x8bd4('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x8bd4('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x31a749,_0xcfc99c,_0x40fa01){return new BPromise(function(_0xd23b7e,_0x1bb290){return client[_0x8bd4('0xa')](_0x31a749,_0x40fa01)[_0x8bd4('0xb')](function(_0x1aa31f){logger[_0x8bd4('0xc')]('Template,\x20%s,\x20%s',_0xcfc99c,_0x8bd4('0xd'));logger[_0x8bd4('0xe')](_0x8bd4('0xf'),_0xcfc99c,_0x8bd4('0xd'),JSON['stringify'](_0x1aa31f));if(_0x1aa31f[_0x8bd4('0x10')]){if(_0x1aa31f[_0x8bd4('0x10')][_0x8bd4('0x11')]===0x1f4){logger[_0x8bd4('0x10')](_0x8bd4('0x12'),_0xcfc99c,_0x1aa31f[_0x8bd4('0x10')]['message']);return _0x1bb290(_0x1aa31f[_0x8bd4('0x10')][_0x8bd4('0x13')]);}logger[_0x8bd4('0x10')](_0x8bd4('0x12'),_0xcfc99c,_0x1aa31f[_0x8bd4('0x10')][_0x8bd4('0x13')]);return _0xd23b7e(_0x1aa31f[_0x8bd4('0x10')]['message']);}else{logger[_0x8bd4('0xc')](_0x8bd4('0x12'),_0xcfc99c,_0x8bd4('0xd'));_0xd23b7e(_0x1aa31f[_0x8bd4('0x14')][_0x8bd4('0x13')]);}})['catch'](function(_0x5e2b22){logger['error'](_0x8bd4('0x12'),_0xcfc99c,_0x5e2b22);_0x1bb290(_0x5e2b22);});});}exports[_0x8bd4('0x15')]=function(_0x59333d){var _0x4aa049=this;return new Promise(function(_0x2d8f95,_0x396c2f){return db[_0x8bd4('0x16')]['findAll']({'raw':_0x59333d[_0x8bd4('0x17')]?_0x59333d[_0x8bd4('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x59333d[_0x8bd4('0x17')]?_0x59333d['options'][_0x8bd4('0x18')]||null:null,'attributes':_0x59333d[_0x8bd4('0x17')]?_0x59333d[_0x8bd4('0x17')]['attributes']||null:null,'limit':_0x59333d[_0x8bd4('0x17')]?_0x59333d[_0x8bd4('0x17')][_0x8bd4('0x19')]||null:null,'include':_0x59333d[_0x8bd4('0x17')]?_0x59333d['options']['include']?_[_0x8bd4('0x1a')](_0x59333d[_0x8bd4('0x17')][_0x8bd4('0x1b')],function(_0x50ad50){return{'model':db[_0x50ad50[_0x8bd4('0x1c')]],'as':_0x50ad50['as'],'attributes':_0x50ad50['attributes'],'include':_0x50ad50['include']?_[_0x8bd4('0x1a')](_0x50ad50[_0x8bd4('0x1b')],function(_0x5fe897){return{'model':db[_0x5fe897[_0x8bd4('0x1c')]],'as':_0x5fe897['as'],'attributes':_0x5fe897['attributes'],'include':_0x5fe897['include']?_[_0x8bd4('0x1a')](_0x5fe897['include'],function(_0x3c62b3){return{'model':db[_0x3c62b3[_0x8bd4('0x1c')]],'as':_0x3c62b3['as'],'attributes':_0x3c62b3[_0x8bd4('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x8bd4('0xb')](function(_0x155932){logger['info'](_0x8bd4('0x15'),_0x59333d);logger['debug'](_0x8bd4('0x15'),_0x59333d,JSON['stringify'](_0x155932));_0x2d8f95(_0x155932);})[_0x8bd4('0x1e')](function(_0x3542ef){logger[_0x8bd4('0x10')](_0x8bd4('0x15'),_0x3542ef[_0x8bd4('0x13')],_0x59333d);_0x396c2f(_0x4aa049['error'](0x1f4,_0x3542ef[_0x8bd4('0x13')]));});});};
\ No newline at end of file
index db15e36..291c0fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d40=['get','/:id','isAuthenticated','show','/:id/all_conditions','getAllConditions','getAnyConditions','/:id/actions','getActions','post','create','addAnyCondition','addAction','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./trigger.controller'];(function(_0x15de6a,_0xb1b042){var _0x66bfc0=function(_0x148bb4){while(--_0x148bb4){_0x15de6a['push'](_0x15de6a['shift']());}};_0x66bfc0(++_0xb1b042);}(_0x0d40,0xac));var _0x00d4=function(_0x493c7a,_0x30ea93){_0x493c7a=_0x493c7a-0x0;var _0x1ad499=_0x0d40[_0x493c7a];return _0x1ad499;};'use strict';var multer=require(_0x00d4('0x0'));var util=require(_0x00d4('0x1'));var path=require(_0x00d4('0x2'));var timeout=require('connect-timeout');var express=require(_0x00d4('0x3'));var router=express[_0x00d4('0x4')]();var fs_extra=require(_0x00d4('0x5'));var auth=require(_0x00d4('0x6'));var interaction=require(_0x00d4('0x7'));var config=require(_0x00d4('0x8'));var controller=require(_0x00d4('0x9'));router[_0x00d4('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x00d4('0xa')](_0x00d4('0xb'),auth[_0x00d4('0xc')](),controller[_0x00d4('0xd')]);router['get'](_0x00d4('0xe'),auth['isAuthenticated'](),controller[_0x00d4('0xf')]);router[_0x00d4('0xa')]('/:id/any_conditions',auth['isAuthenticated'](),controller[_0x00d4('0x10')]);router[_0x00d4('0xa')](_0x00d4('0x11'),auth['isAuthenticated'](),controller[_0x00d4('0x12')]);router[_0x00d4('0x13')]('/',auth[_0x00d4('0xc')](),controller[_0x00d4('0x14')]);router[_0x00d4('0x13')]('/:id/all_conditions',auth[_0x00d4('0xc')](),controller['addAllCondition']);router['post']('/:id/any_conditions',auth[_0x00d4('0xc')](),controller[_0x00d4('0x15')]);router[_0x00d4('0x13')](_0x00d4('0x11'),auth[_0x00d4('0xc')](),controller[_0x00d4('0x16')]);router[_0x00d4('0x17')](_0x00d4('0xb'),auth[_0x00d4('0xc')](),controller['update']);router['delete'](_0x00d4('0xb'),auth['isAuthenticated'](),controller[_0x00d4('0x18')]);module[_0x00d4('0x19')]=router;
\ No newline at end of file
+var _0x737c=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','show','getAllConditions','/:id/any_conditions','isAuthenticated','getAnyConditions','/:id/actions','post','create','addAllCondition','addAnyCondition','put','update','exports','util','path','express'];(function(_0x9f9761,_0x5d60ce){var _0x594ef8=function(_0xa940d3){while(--_0xa940d3){_0x9f9761['push'](_0x9f9761['shift']());}};_0x594ef8(++_0x5d60ce);}(_0x737c,0x14d));var _0xc737=function(_0x20dda3,_0xfcb775){_0x20dda3=_0x20dda3-0x0;var _0x547b71=_0x737c[_0x20dda3];return _0x547b71;};'use strict';var multer=require('multer');var util=require(_0xc737('0x0'));var path=require(_0xc737('0x1'));var timeout=require('connect-timeout');var express=require(_0xc737('0x2'));var router=express[_0xc737('0x3')]();var fs_extra=require(_0xc737('0x4'));var auth=require(_0xc737('0x5'));var interaction=require(_0xc737('0x6'));var config=require(_0xc737('0x7'));var controller=require('./trigger.controller');router[_0xc737('0x8')]('/',auth['isAuthenticated'](),controller[_0xc737('0x9')]);router[_0xc737('0x8')](_0xc737('0xa'),auth['isAuthenticated'](),controller[_0xc737('0xb')]);router['get']('/:id/all_conditions',auth['isAuthenticated'](),controller[_0xc737('0xc')]);router[_0xc737('0x8')](_0xc737('0xd'),auth[_0xc737('0xe')](),controller[_0xc737('0xf')]);router[_0xc737('0x8')](_0xc737('0x10'),auth[_0xc737('0xe')](),controller['getActions']);router[_0xc737('0x11')]('/',auth[_0xc737('0xe')](),controller[_0xc737('0x12')]);router[_0xc737('0x11')]('/:id/all_conditions',auth['isAuthenticated'](),controller[_0xc737('0x13')]);router[_0xc737('0x11')](_0xc737('0xd'),auth[_0xc737('0xe')](),controller[_0xc737('0x14')]);router[_0xc737('0x11')]('/:id/actions',auth[_0xc737('0xe')](),controller['addAction']);router[_0xc737('0x15')](_0xc737('0xa'),auth[_0xc737('0xe')](),controller[_0xc737('0x16')]);router['delete'](_0xc737('0xa'),auth[_0xc737('0xe')](),controller['destroy']);module[_0xc737('0x17')]=router;
\ No newline at end of file
index 459d88d..afa8c69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9ce=['exports','STRING','BOOLEAN'];(function(_0x163bc9,_0x4b6796){var _0xb94e42=function(_0x3529e3){while(--_0x3529e3){_0x163bc9['push'](_0x163bc9['shift']());}};_0xb94e42(++_0x4b6796);}(_0xd9ce,0x1da));var _0xed9c=function(_0xcfeff4,_0x3f2e19){_0xcfeff4=_0xcfeff4-0x0;var _0xb2fadc=_0xd9ce[_0xcfeff4];return _0xb2fadc;};'use strict';var Sequelize=require('sequelize');module[_0xed9c('0x0')]={'name':{'type':Sequelize[_0xed9c('0x1')]},'channel':{'type':Sequelize[_0xed9c('0x1')]},'description':{'type':Sequelize[_0xed9c('0x1')]},'status':{'type':Sequelize[_0xed9c('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x93e9=['STRING','BOOLEAN','sequelize','exports'];(function(_0x14723d,_0x4e09de){var _0x53227d=function(_0x28aea4){while(--_0x28aea4){_0x14723d['push'](_0x14723d['shift']());}};_0x53227d(++_0x4e09de);}(_0x93e9,0xda));var _0x993e=function(_0x338f03,_0x28941b){_0x338f03=_0x338f03-0x0;var _0x514d7e=_0x93e9[_0x338f03];return _0x514d7e;};'use strict';var Sequelize=require(_0x993e('0x0'));module[_0x993e('0x1')]={'name':{'type':Sequelize[_0x993e('0x2')]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x993e('0x2')]},'status':{'type':Sequelize[_0x993e('0x3')],'defaultValue':![]}};
\ No newline at end of file
index dc1ca1d..7c99161 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00d0=['includeAll','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','Condition','addAnyCondition','TriggerAnyId','getAllConditions','findOne','getAnyConditions','TriggerId','Action','getActions','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','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','set','Content-Range','save','update','then','destroy','get','Triggers','UserProfileResource','stack','index','map','fieldName','type','key','name','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','Trigger','include','findAll','catch','show','params','rawAttributes','length'];(function(_0x5aa310,_0x2cbf8f){var _0x43ea38=function(_0x44237d){while(--_0x44237d){_0x5aa310['push'](_0x5aa310['shift']());}};_0x43ea38(++_0x2cbf8f);}(_0x00d0,0xd3));var _0x000d=function(_0x160767,_0x1a10c8){_0x160767=_0x160767-0x0;var _0x327818=_0x00d0[_0x160767];return _0x327818;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x000d('0x0'));var zipdir=require(_0x000d('0x1'));var jsonpatch=require(_0x000d('0x2'));var rp=require(_0x000d('0x3'));var moment=require(_0x000d('0x4'));var BPromise=require(_0x000d('0x5'));var Mustache=require(_0x000d('0x6'));var util=require(_0x000d('0x7'));var path=require(_0x000d('0x8'));var sox=require('sox');var csv=require(_0x000d('0x9'));var ejs=require(_0x000d('0xa'));var fs=require('fs');var fs_extra=require(_0x000d('0xb'));var _=require(_0x000d('0xc'));var squel=require(_0x000d('0xd'));var crypto=require(_0x000d('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x000d('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x000d('0x10'));var Redis=require(_0x000d('0x11'));var authService=require(_0x000d('0x12'));var qs=require(_0x000d('0x13'));var as=require(_0x000d('0x14'));var hardwareService=require(_0x000d('0x15'));var logger=require(_0x000d('0x16'))(_0x000d('0x17'));var utils=require('../../config/utils');var config=require(_0x000d('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4bd6a5,_0x23c78e){_0x23c78e=_0x23c78e||0xcc;return function(_0x2cfb15){if(_0x2cfb15){return _0x4bd6a5[_0x000d('0x19')](_0x23c78e);}return _0x4bd6a5[_0x000d('0x1a')](_0x23c78e)[_0x000d('0x1b')]();};}function respondWithResult(_0x3c8d8e,_0x5b0694){_0x5b0694=_0x5b0694||0xc8;return function(_0x435c1e){if(_0x435c1e){return _0x3c8d8e[_0x000d('0x1a')](_0x5b0694)[_0x000d('0x1c')](_0x435c1e);}};}function respondWithFilteredResult(_0x1db4d1,_0x2e1d59){return function(_0x365af8){if(_0x365af8){var _0x143503=typeof _0x2e1d59[_0x000d('0x1d')]===_0x000d('0x1e')&&typeof _0x2e1d59['limit']===_0x000d('0x1e');var _0x2e55ca=_0x365af8['count'];var _0x57dba2=_0x143503?0x0:_0x2e1d59[_0x000d('0x1d')];var _0x5a7082=_0x143503?_0x365af8[_0x000d('0x1f')]:_0x2e1d59[_0x000d('0x1d')]+_0x2e1d59['limit'];var _0x749286;if(_0x5a7082>=_0x2e55ca){_0x5a7082=_0x2e55ca;_0x749286=0xc8;}else{_0x749286=0xce;}_0x1db4d1[_0x000d('0x1a')](_0x749286);return _0x1db4d1[_0x000d('0x20')](_0x000d('0x21'),_0x57dba2+'-'+_0x5a7082+'/'+_0x2e55ca)[_0x000d('0x1c')](_0x365af8);}return null;};}function patchUpdates(_0x9e6c13){return function(_0x20c655){try{jsonpatch['apply'](_0x20c655,_0x9e6c13,!![]);}catch(_0x40797c){return BPromise['reject'](_0x40797c);}return _0x20c655[_0x000d('0x22')]();};}function saveUpdates(_0x265d8f,_0x1fdbb3){return function(_0x53e447){if(_0x53e447){return _0x53e447[_0x000d('0x23')](_0x265d8f)[_0x000d('0x24')](function(_0x1f0948){return _0x1f0948;});}return null;};}function removeEntity(_0x53d470,_0x5b6b52){return function(_0x4527f4){if(_0x4527f4){return _0x4527f4[_0x000d('0x25')]()[_0x000d('0x24')](function(){var _0x534ade=_0x4527f4[_0x000d('0x26')]({'plain':!![]});var _0x19a78a=_0x000d('0x27');return db[_0x000d('0x28')][_0x000d('0x25')]({'where':{'type':_0x19a78a,'resourceId':_0x534ade['id']}})[_0x000d('0x24')](function(){return _0x4527f4;});})[_0x000d('0x24')](function(){_0x53d470[_0x000d('0x1a')](0xcc)[_0x000d('0x1b')]();});}};}function handleEntityNotFound(_0x4d8624,_0x38d162){return function(_0x3a5624){if(!_0x3a5624){_0x4d8624[_0x000d('0x19')](0x194);}return _0x3a5624;};}function handleError(_0x58e7ec,_0x45dda5){_0x45dda5=_0x45dda5||0x1f4;return function(_0x76602d){logger['error'](_0x76602d[_0x000d('0x29')]);if(_0x76602d['name']){delete _0x76602d['name'];}_0x58e7ec[_0x000d('0x1a')](_0x45dda5)['send'](_0x76602d);};}exports[_0x000d('0x2a')]=function(_0x5aa640,_0xcdda47){var _0x4b0cb8={},_0x28d1e6={},_0x1a7e77={'count':0x0,'rows':[]};var _0x41878a=_[_0x000d('0x2b')](db['Trigger']['rawAttributes'],function(_0x219c6a){return{'name':_0x219c6a[_0x000d('0x2c')],'type':_0x219c6a[_0x000d('0x2d')][_0x000d('0x2e')]};});_0x28d1e6['model']=_[_0x000d('0x2b')](_0x41878a,_0x000d('0x2f'));_0x28d1e6[_0x000d('0x30')]=_[_0x000d('0x31')](_0x5aa640[_0x000d('0x30')]);_0x28d1e6[_0x000d('0x32')]=_[_0x000d('0x33')](_0x28d1e6[_0x000d('0x34')],_0x28d1e6['query']);_0x4b0cb8[_0x000d('0x35')]=_[_0x000d('0x33')](_0x28d1e6[_0x000d('0x34')],qs[_0x000d('0x36')](_0x5aa640[_0x000d('0x30')]['fields']));_0x4b0cb8[_0x000d('0x35')]=_0x4b0cb8[_0x000d('0x35')]['length']?_0x4b0cb8[_0x000d('0x35')]:_0x28d1e6[_0x000d('0x34')];if(!_0x5aa640['query'][_0x000d('0x37')](_0x000d('0x38'))){_0x4b0cb8[_0x000d('0x39')]=qs['limit'](_0x5aa640[_0x000d('0x30')][_0x000d('0x39')]);_0x4b0cb8[_0x000d('0x1d')]=qs['offset'](_0x5aa640[_0x000d('0x30')]['offset']);}_0x4b0cb8[_0x000d('0x3a')]=qs[_0x000d('0x3b')](_0x5aa640['query'][_0x000d('0x3b')]);_0x4b0cb8[_0x000d('0x3c')]=qs['filters'](_[_0x000d('0x3d')](_0x5aa640[_0x000d('0x30')],_0x28d1e6[_0x000d('0x32')]),_0x41878a);if(_0x5aa640[_0x000d('0x30')][_0x000d('0x3e')]){_0x4b0cb8[_0x000d('0x3c')]=_[_0x000d('0x3f')](_0x4b0cb8[_0x000d('0x3c')],{'$or':_[_0x000d('0x2b')](_0x41878a,function(_0x3c3f44){if(_0x3c3f44['type']!==_0x000d('0x40')){var _0x553222={};_0x553222[_0x3c3f44[_0x000d('0x2f')]]={'$like':'%'+_0x5aa640[_0x000d('0x30')][_0x000d('0x3e')]+'%'};return _0x553222;}})});}_0x4b0cb8=_[_0x000d('0x3f')]({},_0x4b0cb8,_0x5aa640[_0x000d('0x41')]);var _0xfd3401={'where':_0x4b0cb8[_0x000d('0x3c')]};return db[_0x000d('0x42')][_0x000d('0x1f')](_0xfd3401)[_0x000d('0x24')](function(_0x54d083){_0x1a7e77[_0x000d('0x1f')]=_0x54d083;if(_0x5aa640[_0x000d('0x30')]['includeAll']){_0x4b0cb8[_0x000d('0x43')]=[{'all':!![]}];}return db[_0x000d('0x42')][_0x000d('0x44')](_0x4b0cb8);})[_0x000d('0x24')](function(_0x144eb8){_0x1a7e77['rows']=_0x144eb8;return _0x1a7e77;})[_0x000d('0x24')](respondWithFilteredResult(_0xcdda47,_0x4b0cb8))[_0x000d('0x45')](handleError(_0xcdda47,null));};exports[_0x000d('0x46')]=function(_0x6775f0,_0x3eccb5){var _0xa28017={'raw':![],'where':{'id':_0x6775f0[_0x000d('0x47')]['id']}},_0x3100da={};_0x3100da[_0x000d('0x34')]=_[_0x000d('0x31')](db[_0x000d('0x42')][_0x000d('0x48')]);_0x3100da[_0x000d('0x30')]=_['keys'](_0x6775f0[_0x000d('0x30')]);_0x3100da['filters']=_[_0x000d('0x33')](_0x3100da['model'],_0x3100da['query']);_0xa28017[_0x000d('0x35')]=_[_0x000d('0x33')](_0x3100da[_0x000d('0x34')],qs[_0x000d('0x36')](_0x6775f0[_0x000d('0x30')][_0x000d('0x36')]));_0xa28017[_0x000d('0x35')]=_0xa28017['attributes'][_0x000d('0x49')]?_0xa28017[_0x000d('0x35')]:_0x3100da[_0x000d('0x34')];if(_0x6775f0[_0x000d('0x30')][_0x000d('0x4a')]){_0xa28017['include']=[{'all':!![]}];}_0xa28017=_['merge']({},_0xa28017,_0x6775f0[_0x000d('0x41')]);return db[_0x000d('0x42')]['find'](_0xa28017)[_0x000d('0x24')](handleEntityNotFound(_0x3eccb5,null))[_0x000d('0x24')](respondWithResult(_0x3eccb5,null))[_0x000d('0x45')](handleError(_0x3eccb5,null));};exports[_0x000d('0x4b')]=function(_0x4e7d7a,_0x5375f0){return db[_0x000d('0x42')][_0x000d('0x4b')](_0x4e7d7a[_0x000d('0x4c')],{})[_0x000d('0x24')](function(_0x392507){var _0x4e3005=_0x4e7d7a['user'][_0x000d('0x26')]({'plain':!![]});if(!_0x4e3005)throw new Error(_0x000d('0x4d'));if(_0x4e3005['role']===_0x000d('0x4e')){var _0x42e85e=_0x392507[_0x000d('0x26')]({'plain':!![]});var _0x420a7f=_0x000d('0x27');return db[_0x000d('0x4f')][_0x000d('0x50')]({'where':{'name':_0x420a7f,'userProfileId':_0x4e3005[_0x000d('0x51')]},'raw':!![]})[_0x000d('0x24')](function(_0x2394f9){if(_0x2394f9&&_0x2394f9[_0x000d('0x52')]===0x0){return db[_0x000d('0x28')][_0x000d('0x4b')]({'name':_0x42e85e[_0x000d('0x2f')],'resourceId':_0x42e85e['id'],'type':_0x2394f9[_0x000d('0x2f')],'sectionId':_0x2394f9['id']},{})[_0x000d('0x24')](function(){return _0x392507;});}else{return _0x392507;}})[_0x000d('0x45')](function(_0x17f8d2){logger[_0x000d('0x53')](_0x000d('0x54'),_0x17f8d2);throw _0x17f8d2;});}return _0x392507;})[_0x000d('0x24')](respondWithResult(_0x5375f0,0xc9))[_0x000d('0x45')](handleError(_0x5375f0,null));};exports[_0x000d('0x23')]=function(_0x1d5f6f,_0x3f120a){if(_0x1d5f6f['body']['id']){delete _0x1d5f6f[_0x000d('0x4c')]['id'];}return db[_0x000d('0x42')][_0x000d('0x50')]({'where':{'id':_0x1d5f6f[_0x000d('0x47')]['id']}})[_0x000d('0x24')](handleEntityNotFound(_0x3f120a,null))[_0x000d('0x24')](saveUpdates(_0x1d5f6f[_0x000d('0x4c')],null))[_0x000d('0x24')](respondWithResult(_0x3f120a,null))[_0x000d('0x45')](handleError(_0x3f120a,null));};exports[_0x000d('0x25')]=function(_0x4c78f6,_0x5adf7e){return db['Trigger'][_0x000d('0x50')]({'where':{'id':_0x4c78f6[_0x000d('0x47')]['id']}})['then'](handleEntityNotFound(_0x5adf7e,null))[_0x000d('0x24')](removeEntity(_0x5adf7e,null))[_0x000d('0x45')](handleError(_0x5adf7e,null));};exports[_0x000d('0x55')]=function(_0xbc3f85,_0x51c9bb,_0x14bf31){if(_0xbc3f85[_0x000d('0x4c')]['id']){delete _0xbc3f85[_0x000d('0x4c')]['id'];}return db[_0x000d('0x42')][_0x000d('0x50')]({'where':{'id':_0xbc3f85[_0x000d('0x47')]['id']}})[_0x000d('0x24')](handleEntityNotFound(_0x51c9bb,null))['then'](function(_0x26af2b){if(_0x26af2b){_0xbc3f85['body']['TriggerAllId']=_0x26af2b['id'];return db[_0x000d('0x56')][_0x000d('0x4b')](_0xbc3f85['body']);}})[_0x000d('0x24')](respondWithResult(_0x51c9bb,null))[_0x000d('0x45')](handleError(_0x51c9bb,null));};exports[_0x000d('0x57')]=function(_0x18ee43,_0x3849f6,_0x4b3c0f){if(_0x18ee43[_0x000d('0x4c')]['id']){delete _0x18ee43['body']['id'];}return db[_0x000d('0x42')][_0x000d('0x50')]({'where':{'id':_0x18ee43[_0x000d('0x47')]['id']}})['then'](handleEntityNotFound(_0x3849f6,null))[_0x000d('0x24')](function(_0x52419a){if(_0x52419a){_0x18ee43[_0x000d('0x4c')][_0x000d('0x58')]=_0x52419a['id'];return db[_0x000d('0x56')]['create'](_0x18ee43[_0x000d('0x4c')]);}})[_0x000d('0x24')](respondWithResult(_0x3849f6,null))[_0x000d('0x45')](handleError(_0x3849f6,null));};exports[_0x000d('0x59')]=function(_0x930117,_0x5d1333,_0x501f01){var _0x198ef3={};var _0x662b60={};var _0x36b45c;var _0x2838b0;return db[_0x000d('0x42')][_0x000d('0x5a')]({'where':{'id':_0x930117[_0x000d('0x47')]['id']}})[_0x000d('0x24')](handleEntityNotFound(_0x5d1333,null))['then'](function(_0x473579){if(_0x473579){_0x36b45c=_0x473579;_0x662b60[_0x000d('0x34')]=_[_0x000d('0x31')](db['Condition'][_0x000d('0x48')]);_0x662b60[_0x000d('0x30')]=_[_0x000d('0x31')](_0x930117[_0x000d('0x30')]);_0x662b60[_0x000d('0x32')]=_[_0x000d('0x33')](_0x662b60[_0x000d('0x34')],_0x662b60['query']);_0x198ef3[_0x000d('0x35')]=_[_0x000d('0x33')](_0x662b60[_0x000d('0x34')],qs[_0x000d('0x36')](_0x930117[_0x000d('0x30')][_0x000d('0x36')]));_0x198ef3[_0x000d('0x35')]=_0x198ef3[_0x000d('0x35')][_0x000d('0x49')]?_0x198ef3[_0x000d('0x35')]:_0x662b60[_0x000d('0x34')];_0x198ef3[_0x000d('0x3a')]=qs[_0x000d('0x3b')](_0x930117[_0x000d('0x30')][_0x000d('0x3b')]);_0x198ef3[_0x000d('0x3c')]=qs[_0x000d('0x32')](_[_0x000d('0x3d')](_0x930117[_0x000d('0x30')],_0x662b60[_0x000d('0x32')]));if(_0x930117[_0x000d('0x30')][_0x000d('0x3e')]){_0x198ef3[_0x000d('0x3c')]=_['merge'](_0x198ef3[_0x000d('0x3c')],{'$or':_[_0x000d('0x2b')](_0x198ef3['attributes'],function(_0x23aa19){var _0x5d2b1a={};_0x5d2b1a[_0x23aa19]={'$like':'%'+_0x930117[_0x000d('0x30')]['filter']+'%'};return _0x5d2b1a;})});}_0x198ef3=_['merge']({},_0x198ef3,_0x930117[_0x000d('0x41')]);return _0x36b45c[_0x000d('0x59')](_0x198ef3);}})[_0x000d('0x24')](function(_0xc609ca){if(_0xc609ca){_0x2838b0=_0xc609ca[_0x000d('0x49')];if(!_0x930117[_0x000d('0x30')]['hasOwnProperty']('nolimit')){_0x198ef3[_0x000d('0x39')]=qs[_0x000d('0x39')](_0x930117['query']['limit']);_0x198ef3['offset']=qs[_0x000d('0x1d')](_0x930117[_0x000d('0x30')][_0x000d('0x1d')]);}return _0x36b45c['getAllConditions'](_0x198ef3);}})[_0x000d('0x24')](function(_0x31703c){if(_0x31703c){return _0x31703c?{'count':_0x2838b0,'rows':_0x31703c}:null;}})[_0x000d('0x24')](respondWithResult(_0x5d1333,null))[_0x000d('0x45')](handleError(_0x5d1333,null));};exports[_0x000d('0x5b')]=function(_0x3228ad,_0x18ac3a,_0x1e21c6){var _0x4fadbd={};var _0x1c8a5c={};var _0x5845c1;var _0x854f47;return db['Trigger'][_0x000d('0x5a')]({'where':{'id':_0x3228ad[_0x000d('0x47')]['id']}})['then'](handleEntityNotFound(_0x18ac3a,null))[_0x000d('0x24')](function(_0x14cddd){if(_0x14cddd){_0x5845c1=_0x14cddd;_0x1c8a5c['model']=_[_0x000d('0x31')](db[_0x000d('0x56')][_0x000d('0x48')]);_0x1c8a5c[_0x000d('0x30')]=_['keys'](_0x3228ad['query']);_0x1c8a5c[_0x000d('0x32')]=_[_0x000d('0x33')](_0x1c8a5c[_0x000d('0x34')],_0x1c8a5c[_0x000d('0x30')]);_0x4fadbd['attributes']=_[_0x000d('0x33')](_0x1c8a5c[_0x000d('0x34')],qs['fields'](_0x3228ad[_0x000d('0x30')][_0x000d('0x36')]));_0x4fadbd['attributes']=_0x4fadbd[_0x000d('0x35')]['length']?_0x4fadbd[_0x000d('0x35')]:_0x1c8a5c['model'];_0x4fadbd['order']=qs[_0x000d('0x3b')](_0x3228ad['query'][_0x000d('0x3b')]);_0x4fadbd[_0x000d('0x3c')]=qs[_0x000d('0x32')](_['pick'](_0x3228ad[_0x000d('0x30')],_0x1c8a5c['filters']));if(_0x3228ad[_0x000d('0x30')]['filter']){_0x4fadbd[_0x000d('0x3c')]=_[_0x000d('0x3f')](_0x4fadbd[_0x000d('0x3c')],{'$or':_[_0x000d('0x2b')](_0x4fadbd[_0x000d('0x35')],function(_0x173358){var _0xfd71c1={};_0xfd71c1[_0x173358]={'$like':'%'+_0x3228ad['query'][_0x000d('0x3e')]+'%'};return _0xfd71c1;})});}_0x4fadbd=_['merge']({},_0x4fadbd,_0x3228ad['options']);return _0x5845c1[_0x000d('0x5b')](_0x4fadbd);}})[_0x000d('0x24')](function(_0x3da588){if(_0x3da588){_0x854f47=_0x3da588[_0x000d('0x49')];if(!_0x3228ad['query'][_0x000d('0x37')]('nolimit')){_0x4fadbd['limit']=qs[_0x000d('0x39')](_0x3228ad[_0x000d('0x30')][_0x000d('0x39')]);_0x4fadbd[_0x000d('0x1d')]=qs[_0x000d('0x1d')](_0x3228ad[_0x000d('0x30')]['offset']);}return _0x5845c1[_0x000d('0x5b')](_0x4fadbd);}})[_0x000d('0x24')](function(_0xc71a5b){if(_0xc71a5b){return _0xc71a5b?{'count':_0x854f47,'rows':_0xc71a5b}:null;}})[_0x000d('0x24')](respondWithResult(_0x18ac3a,null))['catch'](handleError(_0x18ac3a,null));};exports['addAction']=function(_0x3a3da1,_0x48eec4,_0x1941d6){if(_0x3a3da1[_0x000d('0x4c')]['id']){delete _0x3a3da1[_0x000d('0x4c')]['id'];}return db[_0x000d('0x42')][_0x000d('0x50')]({'where':{'id':_0x3a3da1['params']['id']}})['then'](handleEntityNotFound(_0x48eec4,null))['then'](function(_0x34e4b6){if(_0x34e4b6){_0x3a3da1[_0x000d('0x4c')][_0x000d('0x5c')]=_0x34e4b6['id'];return db[_0x000d('0x5d')]['create'](_0x3a3da1['body']);}})[_0x000d('0x24')](respondWithResult(_0x48eec4,null))[_0x000d('0x45')](handleError(_0x48eec4,null));};exports[_0x000d('0x5e')]=function(_0xd36b80,_0x5c37c8,_0x431981){var _0x3164ed={};var _0x174095={};var _0x4c3a37;var _0x34bd2e;return db[_0x000d('0x42')]['findOne']({'where':{'id':_0xd36b80[_0x000d('0x47')]['id']}})[_0x000d('0x24')](handleEntityNotFound(_0x5c37c8,null))[_0x000d('0x24')](function(_0x5d5906){if(_0x5d5906){_0x4c3a37=_0x5d5906;_0x174095[_0x000d('0x34')]=_[_0x000d('0x31')](db['Action'][_0x000d('0x48')]);_0x174095['query']=_['keys'](_0xd36b80[_0x000d('0x30')]);_0x174095[_0x000d('0x32')]=_['intersection'](_0x174095['model'],_0x174095[_0x000d('0x30')]);_0x3164ed[_0x000d('0x35')]=_['intersection'](_0x174095['model'],qs[_0x000d('0x36')](_0xd36b80['query']['fields']));_0x3164ed['attributes']=_0x3164ed[_0x000d('0x35')][_0x000d('0x49')]?_0x3164ed[_0x000d('0x35')]:_0x174095[_0x000d('0x34')];_0x3164ed[_0x000d('0x3a')]=qs['sort'](_0xd36b80['query'][_0x000d('0x3b')]);_0x3164ed[_0x000d('0x3c')]=qs['filters'](_[_0x000d('0x3d')](_0xd36b80['query'],_0x174095[_0x000d('0x32')]));if(_0xd36b80[_0x000d('0x30')]['filter']){_0x3164ed[_0x000d('0x3c')]=_['merge'](_0x3164ed[_0x000d('0x3c')],{'$or':_[_0x000d('0x2b')](_0x3164ed['attributes'],function(_0x45b9fd){var _0x18e605={};_0x18e605[_0x45b9fd]={'$like':'%'+_0xd36b80[_0x000d('0x30')][_0x000d('0x3e')]+'%'};return _0x18e605;})});}_0x3164ed=_[_0x000d('0x3f')]({},_0x3164ed,_0xd36b80['options']);return _0x4c3a37['getActions'](_0x3164ed);}})[_0x000d('0x24')](function(_0x1c0236){if(_0x1c0236){_0x34bd2e=_0x1c0236[_0x000d('0x49')];if(!_0xd36b80['query'][_0x000d('0x37')]('nolimit')){_0x3164ed[_0x000d('0x39')]=qs[_0x000d('0x39')](_0xd36b80[_0x000d('0x30')]['limit']);_0x3164ed['offset']=qs['offset'](_0xd36b80[_0x000d('0x30')][_0x000d('0x1d')]);}return _0x4c3a37[_0x000d('0x5e')](_0x3164ed);}})[_0x000d('0x24')](function(_0x5469dd){if(_0x5469dd){return _0x5469dd?{'count':_0x34bd2e,'rows':_0x5469dd}:null;}})[_0x000d('0x24')](respondWithResult(_0x5c37c8,null))[_0x000d('0x45')](handleError(_0x5c37c8,null));};
\ No newline at end of file
+var _0x706c=['pick','addAction','TriggerId','Action','getActions','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','offset','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','UserProfileResource','end','stack','name','send','index','map','Trigger','rawAttributes','fieldName','key','model','keys','query','attributes','fields','length','nolimit','order','sort','where','filters','merge','VIRTUAL','filter','includeAll','include','findAll','show','params','intersection','options','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','Triggers','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','Condition','addAnyCondition','TriggerAnyId','getAllConditions','findOne','hasOwnProperty','getAnyConditions'];(function(_0x3449e7,_0x79e3d){var _0x255590=function(_0x1da4bf){while(--_0x1da4bf){_0x3449e7['push'](_0x3449e7['shift']());}};_0x255590(++_0x79e3d);}(_0x706c,0x1ef));var _0xc706=function(_0x509c83,_0x511882){_0x509c83=_0x509c83-0x0;var _0x534626=_0x706c[_0x509c83];return _0x534626;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc706('0x0'));var zipdir=require(_0xc706('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc706('0x2'));var BPromise=require(_0xc706('0x3'));var Mustache=require(_0xc706('0x4'));var util=require(_0xc706('0x5'));var path=require(_0xc706('0x6'));var sox=require(_0xc706('0x7'));var csv=require(_0xc706('0x8'));var ejs=require(_0xc706('0x9'));var fs=require('fs');var fs_extra=require(_0xc706('0xa'));var _=require(_0xc706('0xb'));var squel=require(_0xc706('0xc'));var crypto=require(_0xc706('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xc706('0xe'));var toCsv=require(_0xc706('0x8'));var querystring=require(_0xc706('0xf'));var Papa=require(_0xc706('0x10'));var Redis=require('ioredis');var authService=require(_0xc706('0x11'));var qs=require(_0xc706('0x12'));var as=require(_0xc706('0x13'));var hardwareService=require(_0xc706('0x14'));var logger=require('../../config/logger')(_0xc706('0x15'));var utils=require('../../config/utils');var config=require(_0xc706('0x16'));var licenseUtil=require(_0xc706('0x17'));var db=require(_0xc706('0x18'))['db'];function respondWithStatusCode(_0x38bff9,_0x47d767){_0x47d767=_0x47d767||0xcc;return function(_0x322caf){if(_0x322caf){return _0x38bff9[_0xc706('0x19')](_0x47d767);}return _0x38bff9[_0xc706('0x1a')](_0x47d767)['end']();};}function respondWithResult(_0x4847ed,_0x59b266){_0x59b266=_0x59b266||0xc8;return function(_0x18d4da){if(_0x18d4da){return _0x4847ed[_0xc706('0x1a')](_0x59b266)[_0xc706('0x1b')](_0x18d4da);}};}function respondWithFilteredResult(_0x5e76c5,_0x8fe38e){return function(_0x2ea99e){if(_0x2ea99e){var _0xc62510=typeof _0x8fe38e['offset']===_0xc706('0x1c')&&typeof _0x8fe38e['limit']===_0xc706('0x1c');var _0x3daa58=_0x2ea99e['count'];var _0x364a8b=_0xc62510?0x0:_0x8fe38e[_0xc706('0x1d')];var _0x325a8a=_0xc62510?_0x2ea99e[_0xc706('0x1e')]:_0x8fe38e[_0xc706('0x1d')]+_0x8fe38e[_0xc706('0x1f')];var _0x1a13d7;if(_0x325a8a>=_0x3daa58){_0x325a8a=_0x3daa58;_0x1a13d7=0xc8;}else{_0x1a13d7=0xce;}_0x5e76c5[_0xc706('0x1a')](_0x1a13d7);return _0x5e76c5[_0xc706('0x20')](_0xc706('0x21'),_0x364a8b+'-'+_0x325a8a+'/'+_0x3daa58)[_0xc706('0x1b')](_0x2ea99e);}return null;};}function patchUpdates(_0xb91516){return function(_0x25dad3){try{jsonpatch[_0xc706('0x22')](_0x25dad3,_0xb91516,!![]);}catch(_0x84ff9e){return BPromise[_0xc706('0x23')](_0x84ff9e);}return _0x25dad3[_0xc706('0x24')]();};}function saveUpdates(_0x48459f,_0x3fc453){return function(_0x21cf78){if(_0x21cf78){return _0x21cf78[_0xc706('0x25')](_0x48459f)[_0xc706('0x26')](function(_0x15bfe2){return _0x15bfe2;});}return null;};}function removeEntity(_0x17eb74,_0x2d7747){return function(_0x4e1d15){if(_0x4e1d15){return _0x4e1d15[_0xc706('0x27')]()[_0xc706('0x26')](function(){var _0x54c1bd=_0x4e1d15['get']({'plain':!![]});var _0x82ebca='Triggers';return db[_0xc706('0x28')][_0xc706('0x27')]({'where':{'type':_0x82ebca,'resourceId':_0x54c1bd['id']}})[_0xc706('0x26')](function(){return _0x4e1d15;});})[_0xc706('0x26')](function(){_0x17eb74['status'](0xcc)[_0xc706('0x29')]();});}};}function handleEntityNotFound(_0xf39c40,_0x61c701){return function(_0x1402eb){if(!_0x1402eb){_0xf39c40['sendStatus'](0x194);}return _0x1402eb;};}function handleError(_0x557b97,_0x41c23f){_0x41c23f=_0x41c23f||0x1f4;return function(_0x5c9cbc){logger['error'](_0x5c9cbc[_0xc706('0x2a')]);if(_0x5c9cbc[_0xc706('0x2b')]){delete _0x5c9cbc[_0xc706('0x2b')];}_0x557b97[_0xc706('0x1a')](_0x41c23f)[_0xc706('0x2c')](_0x5c9cbc);};}exports[_0xc706('0x2d')]=function(_0x432489,_0xa2d79c){var _0x4bf123={},_0x18c1ab={},_0x1dbe82={'count':0x0,'rows':[]};var _0x946155=_[_0xc706('0x2e')](db[_0xc706('0x2f')][_0xc706('0x30')],function(_0x181f4f){return{'name':_0x181f4f[_0xc706('0x31')],'type':_0x181f4f['type'][_0xc706('0x32')]};});_0x18c1ab[_0xc706('0x33')]=_['map'](_0x946155,_0xc706('0x2b'));_0x18c1ab['query']=_[_0xc706('0x34')](_0x432489[_0xc706('0x35')]);_0x18c1ab['filters']=_['intersection'](_0x18c1ab[_0xc706('0x33')],_0x18c1ab[_0xc706('0x35')]);_0x4bf123[_0xc706('0x36')]=_['intersection'](_0x18c1ab[_0xc706('0x33')],qs[_0xc706('0x37')](_0x432489[_0xc706('0x35')][_0xc706('0x37')]));_0x4bf123['attributes']=_0x4bf123[_0xc706('0x36')][_0xc706('0x38')]?_0x4bf123[_0xc706('0x36')]:_0x18c1ab[_0xc706('0x33')];if(!_0x432489[_0xc706('0x35')]['hasOwnProperty'](_0xc706('0x39'))){_0x4bf123[_0xc706('0x1f')]=qs[_0xc706('0x1f')](_0x432489[_0xc706('0x35')][_0xc706('0x1f')]);_0x4bf123['offset']=qs['offset'](_0x432489[_0xc706('0x35')]['offset']);}_0x4bf123[_0xc706('0x3a')]=qs[_0xc706('0x3b')](_0x432489['query'][_0xc706('0x3b')]);_0x4bf123[_0xc706('0x3c')]=qs[_0xc706('0x3d')](_['pick'](_0x432489['query'],_0x18c1ab[_0xc706('0x3d')]),_0x946155);if(_0x432489[_0xc706('0x35')]['filter']){_0x4bf123[_0xc706('0x3c')]=_[_0xc706('0x3e')](_0x4bf123['where'],{'$or':_['map'](_0x946155,function(_0x557f12){if(_0x557f12['type']!==_0xc706('0x3f')){var _0x43c57b={};_0x43c57b[_0x557f12[_0xc706('0x2b')]]={'$like':'%'+_0x432489[_0xc706('0x35')][_0xc706('0x40')]+'%'};return _0x43c57b;}})});}_0x4bf123=_[_0xc706('0x3e')]({},_0x4bf123,_0x432489['options']);var _0x4d61a4={'where':_0x4bf123[_0xc706('0x3c')]};return db['Trigger'][_0xc706('0x1e')](_0x4d61a4)['then'](function(_0x1fa9e7){_0x1dbe82['count']=_0x1fa9e7;if(_0x432489[_0xc706('0x35')][_0xc706('0x41')]){_0x4bf123[_0xc706('0x42')]=[{'all':!![]}];}return db[_0xc706('0x2f')][_0xc706('0x43')](_0x4bf123);})[_0xc706('0x26')](function(_0x3062f0){_0x1dbe82['rows']=_0x3062f0;return _0x1dbe82;})[_0xc706('0x26')](respondWithFilteredResult(_0xa2d79c,_0x4bf123))['catch'](handleError(_0xa2d79c,null));};exports[_0xc706('0x44')]=function(_0x376631,_0x3308b0){var _0x39aba1={'raw':![],'where':{'id':_0x376631[_0xc706('0x45')]['id']}},_0x24e93d={};_0x24e93d[_0xc706('0x33')]=_[_0xc706('0x34')](db[_0xc706('0x2f')][_0xc706('0x30')]);_0x24e93d[_0xc706('0x35')]=_[_0xc706('0x34')](_0x376631[_0xc706('0x35')]);_0x24e93d['filters']=_[_0xc706('0x46')](_0x24e93d[_0xc706('0x33')],_0x24e93d[_0xc706('0x35')]);_0x39aba1['attributes']=_['intersection'](_0x24e93d['model'],qs[_0xc706('0x37')](_0x376631[_0xc706('0x35')][_0xc706('0x37')]));_0x39aba1[_0xc706('0x36')]=_0x39aba1[_0xc706('0x36')][_0xc706('0x38')]?_0x39aba1[_0xc706('0x36')]:_0x24e93d[_0xc706('0x33')];if(_0x376631[_0xc706('0x35')]['includeAll']){_0x39aba1[_0xc706('0x42')]=[{'all':!![]}];}_0x39aba1=_[_0xc706('0x3e')]({},_0x39aba1,_0x376631[_0xc706('0x47')]);return db[_0xc706('0x2f')][_0xc706('0x48')](_0x39aba1)['then'](handleEntityNotFound(_0x3308b0,null))[_0xc706('0x26')](respondWithResult(_0x3308b0,null))[_0xc706('0x49')](handleError(_0x3308b0,null));};exports[_0xc706('0x4a')]=function(_0x2eb750,_0x2bed77){return db[_0xc706('0x2f')][_0xc706('0x4a')](_0x2eb750[_0xc706('0x4b')],{})['then'](function(_0x2feb2d){var _0x5d0e0f=_0x2eb750[_0xc706('0x4c')]['get']({'plain':!![]});if(!_0x5d0e0f)throw new Error(_0xc706('0x4d'));if(_0x5d0e0f['role']==='user'){var _0x10cb8f=_0x2feb2d[_0xc706('0x4e')]({'plain':!![]});var _0x2e937a=_0xc706('0x4f');return db['UserProfileSection']['find']({'where':{'name':_0x2e937a,'userProfileId':_0x5d0e0f[_0xc706('0x50')]},'raw':!![]})['then'](function(_0x110c1f){if(_0x110c1f&&_0x110c1f[_0xc706('0x51')]===0x0){return db[_0xc706('0x28')][_0xc706('0x4a')]({'name':_0x10cb8f['name'],'resourceId':_0x10cb8f['id'],'type':_0x110c1f[_0xc706('0x2b')],'sectionId':_0x110c1f['id']},{})[_0xc706('0x26')](function(){return _0x2feb2d;});}else{return _0x2feb2d;}})[_0xc706('0x49')](function(_0x1c2f1c){logger[_0xc706('0x52')](_0xc706('0x53'),_0x1c2f1c);throw _0x1c2f1c;});}return _0x2feb2d;})[_0xc706('0x26')](respondWithResult(_0x2bed77,0xc9))[_0xc706('0x49')](handleError(_0x2bed77,null));};exports[_0xc706('0x25')]=function(_0x1f620a,_0x1c4297){if(_0x1f620a[_0xc706('0x4b')]['id']){delete _0x1f620a[_0xc706('0x4b')]['id'];}return db['Trigger'][_0xc706('0x48')]({'where':{'id':_0x1f620a[_0xc706('0x45')]['id']}})[_0xc706('0x26')](handleEntityNotFound(_0x1c4297,null))[_0xc706('0x26')](saveUpdates(_0x1f620a[_0xc706('0x4b')],null))[_0xc706('0x26')](respondWithResult(_0x1c4297,null))[_0xc706('0x49')](handleError(_0x1c4297,null));};exports[_0xc706('0x27')]=function(_0x39e19c,_0x4a62b8){return db[_0xc706('0x2f')]['find']({'where':{'id':_0x39e19c[_0xc706('0x45')]['id']}})['then'](handleEntityNotFound(_0x4a62b8,null))[_0xc706('0x26')](removeEntity(_0x4a62b8,null))[_0xc706('0x49')](handleError(_0x4a62b8,null));};exports[_0xc706('0x54')]=function(_0x52bc8f,_0x3fb066,_0x944992){if(_0x52bc8f[_0xc706('0x4b')]['id']){delete _0x52bc8f[_0xc706('0x4b')]['id'];}return db[_0xc706('0x2f')]['find']({'where':{'id':_0x52bc8f[_0xc706('0x45')]['id']}})['then'](handleEntityNotFound(_0x3fb066,null))['then'](function(_0x1c0ac9){if(_0x1c0ac9){_0x52bc8f[_0xc706('0x4b')][_0xc706('0x55')]=_0x1c0ac9['id'];return db[_0xc706('0x56')]['create'](_0x52bc8f[_0xc706('0x4b')]);}})[_0xc706('0x26')](respondWithResult(_0x3fb066,null))[_0xc706('0x49')](handleError(_0x3fb066,null));};exports[_0xc706('0x57')]=function(_0x1f8875,_0x92f3c5,_0x1b134a){if(_0x1f8875['body']['id']){delete _0x1f8875['body']['id'];}return db[_0xc706('0x2f')][_0xc706('0x48')]({'where':{'id':_0x1f8875[_0xc706('0x45')]['id']}})[_0xc706('0x26')](handleEntityNotFound(_0x92f3c5,null))[_0xc706('0x26')](function(_0xa7c4cc){if(_0xa7c4cc){_0x1f8875[_0xc706('0x4b')][_0xc706('0x58')]=_0xa7c4cc['id'];return db[_0xc706('0x56')][_0xc706('0x4a')](_0x1f8875['body']);}})[_0xc706('0x26')](respondWithResult(_0x92f3c5,null))[_0xc706('0x49')](handleError(_0x92f3c5,null));};exports[_0xc706('0x59')]=function(_0x3ec8ea,_0x4056ad,_0xe383f8){var _0x241e34={};var _0xef0bb4={};var _0xbf7171;var _0x1ba263;return db[_0xc706('0x2f')][_0xc706('0x5a')]({'where':{'id':_0x3ec8ea[_0xc706('0x45')]['id']}})[_0xc706('0x26')](handleEntityNotFound(_0x4056ad,null))[_0xc706('0x26')](function(_0xb214e5){if(_0xb214e5){_0xbf7171=_0xb214e5;_0xef0bb4[_0xc706('0x33')]=_['keys'](db[_0xc706('0x56')][_0xc706('0x30')]);_0xef0bb4['query']=_[_0xc706('0x34')](_0x3ec8ea[_0xc706('0x35')]);_0xef0bb4[_0xc706('0x3d')]=_[_0xc706('0x46')](_0xef0bb4['model'],_0xef0bb4['query']);_0x241e34[_0xc706('0x36')]=_[_0xc706('0x46')](_0xef0bb4[_0xc706('0x33')],qs['fields'](_0x3ec8ea[_0xc706('0x35')]['fields']));_0x241e34[_0xc706('0x36')]=_0x241e34[_0xc706('0x36')][_0xc706('0x38')]?_0x241e34[_0xc706('0x36')]:_0xef0bb4[_0xc706('0x33')];_0x241e34[_0xc706('0x3a')]=qs['sort'](_0x3ec8ea[_0xc706('0x35')][_0xc706('0x3b')]);_0x241e34[_0xc706('0x3c')]=qs[_0xc706('0x3d')](_['pick'](_0x3ec8ea['query'],_0xef0bb4[_0xc706('0x3d')]));if(_0x3ec8ea['query'][_0xc706('0x40')]){_0x241e34[_0xc706('0x3c')]=_[_0xc706('0x3e')](_0x241e34[_0xc706('0x3c')],{'$or':_[_0xc706('0x2e')](_0x241e34[_0xc706('0x36')],function(_0x375289){var _0x47b221={};_0x47b221[_0x375289]={'$like':'%'+_0x3ec8ea[_0xc706('0x35')][_0xc706('0x40')]+'%'};return _0x47b221;})});}_0x241e34=_[_0xc706('0x3e')]({},_0x241e34,_0x3ec8ea['options']);return _0xbf7171[_0xc706('0x59')](_0x241e34);}})['then'](function(_0x317b0f){if(_0x317b0f){_0x1ba263=_0x317b0f[_0xc706('0x38')];if(!_0x3ec8ea[_0xc706('0x35')][_0xc706('0x5b')]('nolimit')){_0x241e34[_0xc706('0x1f')]=qs[_0xc706('0x1f')](_0x3ec8ea[_0xc706('0x35')]['limit']);_0x241e34[_0xc706('0x1d')]=qs['offset'](_0x3ec8ea[_0xc706('0x35')]['offset']);}return _0xbf7171[_0xc706('0x59')](_0x241e34);}})[_0xc706('0x26')](function(_0x2193fd){if(_0x2193fd){return _0x2193fd?{'count':_0x1ba263,'rows':_0x2193fd}:null;}})['then'](respondWithResult(_0x4056ad,null))[_0xc706('0x49')](handleError(_0x4056ad,null));};exports[_0xc706('0x5c')]=function(_0x212c84,_0x25089e,_0x59232c){var _0x35d195={};var _0x5ae7b0={};var _0x43610d;var _0x1c4df2;return db[_0xc706('0x2f')]['findOne']({'where':{'id':_0x212c84['params']['id']}})[_0xc706('0x26')](handleEntityNotFound(_0x25089e,null))['then'](function(_0x5dc5e3){if(_0x5dc5e3){_0x43610d=_0x5dc5e3;_0x5ae7b0[_0xc706('0x33')]=_[_0xc706('0x34')](db[_0xc706('0x56')]['rawAttributes']);_0x5ae7b0[_0xc706('0x35')]=_[_0xc706('0x34')](_0x212c84[_0xc706('0x35')]);_0x5ae7b0[_0xc706('0x3d')]=_[_0xc706('0x46')](_0x5ae7b0[_0xc706('0x33')],_0x5ae7b0[_0xc706('0x35')]);_0x35d195[_0xc706('0x36')]=_[_0xc706('0x46')](_0x5ae7b0[_0xc706('0x33')],qs['fields'](_0x212c84[_0xc706('0x35')][_0xc706('0x37')]));_0x35d195['attributes']=_0x35d195[_0xc706('0x36')][_0xc706('0x38')]?_0x35d195[_0xc706('0x36')]:_0x5ae7b0['model'];_0x35d195['order']=qs[_0xc706('0x3b')](_0x212c84[_0xc706('0x35')][_0xc706('0x3b')]);_0x35d195[_0xc706('0x3c')]=qs[_0xc706('0x3d')](_[_0xc706('0x5d')](_0x212c84[_0xc706('0x35')],_0x5ae7b0[_0xc706('0x3d')]));if(_0x212c84['query']['filter']){_0x35d195[_0xc706('0x3c')]=_[_0xc706('0x3e')](_0x35d195[_0xc706('0x3c')],{'$or':_[_0xc706('0x2e')](_0x35d195['attributes'],function(_0x22777c){var _0x507f0d={};_0x507f0d[_0x22777c]={'$like':'%'+_0x212c84[_0xc706('0x35')][_0xc706('0x40')]+'%'};return _0x507f0d;})});}_0x35d195=_[_0xc706('0x3e')]({},_0x35d195,_0x212c84[_0xc706('0x47')]);return _0x43610d[_0xc706('0x5c')](_0x35d195);}})['then'](function(_0x12ecb7){if(_0x12ecb7){_0x1c4df2=_0x12ecb7['length'];if(!_0x212c84[_0xc706('0x35')][_0xc706('0x5b')]('nolimit')){_0x35d195[_0xc706('0x1f')]=qs[_0xc706('0x1f')](_0x212c84[_0xc706('0x35')][_0xc706('0x1f')]);_0x35d195[_0xc706('0x1d')]=qs[_0xc706('0x1d')](_0x212c84[_0xc706('0x35')][_0xc706('0x1d')]);}return _0x43610d[_0xc706('0x5c')](_0x35d195);}})[_0xc706('0x26')](function(_0x467c8d){if(_0x467c8d){return _0x467c8d?{'count':_0x1c4df2,'rows':_0x467c8d}:null;}})['then'](respondWithResult(_0x25089e,null))[_0xc706('0x49')](handleError(_0x25089e,null));};exports[_0xc706('0x5e')]=function(_0x1a98dd,_0x446495,_0x211a5b){if(_0x1a98dd[_0xc706('0x4b')]['id']){delete _0x1a98dd[_0xc706('0x4b')]['id'];}return db[_0xc706('0x2f')][_0xc706('0x48')]({'where':{'id':_0x1a98dd['params']['id']}})[_0xc706('0x26')](handleEntityNotFound(_0x446495,null))[_0xc706('0x26')](function(_0x3e9932){if(_0x3e9932){_0x1a98dd[_0xc706('0x4b')][_0xc706('0x5f')]=_0x3e9932['id'];return db[_0xc706('0x60')][_0xc706('0x4a')](_0x1a98dd[_0xc706('0x4b')]);}})[_0xc706('0x26')](respondWithResult(_0x446495,null))[_0xc706('0x49')](handleError(_0x446495,null));};exports[_0xc706('0x61')]=function(_0x125604,_0x4d6c25,_0x761461){var _0x401422={};var _0x4cd910={};var _0x33d8d5;var _0x51a852;return db['Trigger'][_0xc706('0x5a')]({'where':{'id':_0x125604[_0xc706('0x45')]['id']}})[_0xc706('0x26')](handleEntityNotFound(_0x4d6c25,null))[_0xc706('0x26')](function(_0x531029){if(_0x531029){_0x33d8d5=_0x531029;_0x4cd910[_0xc706('0x33')]=_['keys'](db['Action']['rawAttributes']);_0x4cd910[_0xc706('0x35')]=_[_0xc706('0x34')](_0x125604[_0xc706('0x35')]);_0x4cd910[_0xc706('0x3d')]=_[_0xc706('0x46')](_0x4cd910[_0xc706('0x33')],_0x4cd910['query']);_0x401422[_0xc706('0x36')]=_[_0xc706('0x46')](_0x4cd910['model'],qs[_0xc706('0x37')](_0x125604[_0xc706('0x35')][_0xc706('0x37')]));_0x401422[_0xc706('0x36')]=_0x401422[_0xc706('0x36')][_0xc706('0x38')]?_0x401422['attributes']:_0x4cd910[_0xc706('0x33')];_0x401422['order']=qs['sort'](_0x125604['query'][_0xc706('0x3b')]);_0x401422[_0xc706('0x3c')]=qs[_0xc706('0x3d')](_[_0xc706('0x5d')](_0x125604['query'],_0x4cd910[_0xc706('0x3d')]));if(_0x125604[_0xc706('0x35')][_0xc706('0x40')]){_0x401422['where']=_[_0xc706('0x3e')](_0x401422[_0xc706('0x3c')],{'$or':_[_0xc706('0x2e')](_0x401422[_0xc706('0x36')],function(_0x1f6e48){var _0x3e71cd={};_0x3e71cd[_0x1f6e48]={'$like':'%'+_0x125604[_0xc706('0x35')][_0xc706('0x40')]+'%'};return _0x3e71cd;})});}_0x401422=_['merge']({},_0x401422,_0x125604[_0xc706('0x47')]);return _0x33d8d5['getActions'](_0x401422);}})['then'](function(_0x17dc24){if(_0x17dc24){_0x51a852=_0x17dc24[_0xc706('0x38')];if(!_0x125604[_0xc706('0x35')]['hasOwnProperty'](_0xc706('0x39'))){_0x401422[_0xc706('0x1f')]=qs[_0xc706('0x1f')](_0x125604[_0xc706('0x35')][_0xc706('0x1f')]);_0x401422[_0xc706('0x1d')]=qs[_0xc706('0x1d')](_0x125604[_0xc706('0x35')][_0xc706('0x1d')]);}return _0x33d8d5['getActions'](_0x401422);}})[_0xc706('0x26')](function(_0x5196c4){if(_0x5196c4){return _0x5196c4?{'count':_0x51a852,'rows':_0x5196c4}:null;}})[_0xc706('0x26')](respondWithResult(_0x4d6c25,null))['catch'](handleError(_0x4d6c25,null));};
\ No newline at end of file
index 54b153f..42d7a29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35aa=['./trigger.attributes','exports','Trigger','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x4063a4,_0x19d730){var _0x17908d=function(_0x3ce714){while(--_0x3ce714){_0x4063a4['push'](_0x4063a4['shift']());}};_0x17908d(++_0x19d730);}(_0x35aa,0xbe));var _0xa35a=function(_0x4bed75,_0x211cc7){_0x4bed75=_0x4bed75-0x0;var _0x2dd8e8=_0x35aa[_0x4bed75];return _0x2dd8e8;};'use strict';var _=require('lodash');var util=require(_0xa35a('0x0'));var logger=require(_0xa35a('0x1'))(_0xa35a('0x2'));var moment=require(_0xa35a('0x3'));var BPromise=require('bluebird');var rp=require(_0xa35a('0x4'));var fs=require('fs');var path=require(_0xa35a('0x5'));var rimraf=require(_0xa35a('0x6'));var config=require(_0xa35a('0x7'));var attributes=require(_0xa35a('0x8'));module[_0xa35a('0x9')]=function(_0x449cfe,_0x10917d){return _0x449cfe['define'](_0xa35a('0xa'),attributes,{'tableName':'tools_triggers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf8de=['util','../../config/logger','moment','request-promise','path','rimraf','./trigger.attributes','exports','tools_triggers'];(function(_0x20b5b2,_0x207097){var _0x106c89=function(_0x38610e){while(--_0x38610e){_0x20b5b2['push'](_0x20b5b2['shift']());}};_0x106c89(++_0x207097);}(_0xf8de,0x1d4));var _0xef8d=function(_0x3c406e,_0x7f0304){_0x3c406e=_0x3c406e-0x0;var _0x1bed29=_0xf8de[_0x3c406e];return _0x1bed29;};'use strict';var _=require('lodash');var util=require(_0xef8d('0x0'));var logger=require(_0xef8d('0x1'))('api');var moment=require(_0xef8d('0x2'));var BPromise=require('bluebird');var rp=require(_0xef8d('0x3'));var fs=require('fs');var path=require(_0xef8d('0x4'));var rimraf=require(_0xef8d('0x5'));var config=require('../../config/environment');var attributes=require(_0xef8d('0x6'));module[_0xef8d('0x7')]=function(_0x586e39,_0x2ba6b9){return _0x586e39['define']('Trigger',attributes,{'tableName':_0xef8d('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ff45d22..d27232f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4450=['randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','debug','request\x20sent','stringify','error','code','message','Trigger,\x20%s,\x20%s','result','catch','GetTrigger','Trigger','findAll','options','raw','attributes','limit','include','map','model','ShowTrigger','find','bluebird'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0x4450,0x15f));var _0x0445=function(_0x1f2a76,_0x23aca3){_0x1f2a76=_0x1f2a76-0x0;var _0x249203=_0x4450[_0x1f2a76];return _0x249203;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x0445('0x0'));var rs=require(_0x0445('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0445('0x2'))['db'];var utils=require(_0x0445('0x3'));var logger=require('../../config/logger')(_0x0445('0x4'));var config=require(_0x0445('0x5'));var jayson=require(_0x0445('0x6'));var client=jayson[_0x0445('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2aedee,_0x4bdad4,_0x4d1080){return new BPromise(function(_0x5af986,_0x346ca0){return client[_0x0445('0x8')](_0x2aedee,_0x4d1080)[_0x0445('0x9')](function(_0x560507){logger[_0x0445('0xa')]('Trigger,\x20%s,\x20%s',_0x4bdad4,'request\x20sent');logger[_0x0445('0xb')]('Trigger,\x20%s,\x20%s,\x20%s',_0x4bdad4,_0x0445('0xc'),JSON[_0x0445('0xd')](_0x560507));if(_0x560507[_0x0445('0xe')]){if(_0x560507[_0x0445('0xe')][_0x0445('0xf')]===0x1f4){logger[_0x0445('0xe')]('Trigger,\x20%s,\x20%s',_0x4bdad4,_0x560507[_0x0445('0xe')][_0x0445('0x10')]);return _0x346ca0(_0x560507[_0x0445('0xe')][_0x0445('0x10')]);}logger[_0x0445('0xe')](_0x0445('0x11'),_0x4bdad4,_0x560507['error'][_0x0445('0x10')]);return _0x5af986(_0x560507[_0x0445('0xe')][_0x0445('0x10')]);}else{logger[_0x0445('0xa')](_0x0445('0x11'),_0x4bdad4,_0x0445('0xc'));_0x5af986(_0x560507[_0x0445('0x12')][_0x0445('0x10')]);}})[_0x0445('0x13')](function(_0x248bf9){logger[_0x0445('0xe')](_0x0445('0x11'),_0x4bdad4,_0x248bf9);_0x346ca0(_0x248bf9);});});}exports[_0x0445('0x14')]=function(_0x93a42){var _0x582895=this;return new Promise(function(_0x1ec768,_0x4c875a){return db[_0x0445('0x15')][_0x0445('0x16')]({'raw':_0x93a42[_0x0445('0x17')]?_0x93a42[_0x0445('0x17')][_0x0445('0x18')]===undefined?!![]:![]:!![],'where':_0x93a42[_0x0445('0x17')]?_0x93a42[_0x0445('0x17')]['where']||null:null,'attributes':_0x93a42[_0x0445('0x17')]?_0x93a42[_0x0445('0x17')][_0x0445('0x19')]||null:null,'limit':_0x93a42[_0x0445('0x17')]?_0x93a42[_0x0445('0x17')][_0x0445('0x1a')]||null:null,'include':_0x93a42[_0x0445('0x17')]?_0x93a42[_0x0445('0x17')][_0x0445('0x1b')]?_[_0x0445('0x1c')](_0x93a42[_0x0445('0x17')][_0x0445('0x1b')],function(_0x3f0693){return{'model':db[_0x3f0693[_0x0445('0x1d')]],'as':_0x3f0693['as'],'attributes':_0x3f0693['attributes'],'include':_0x3f0693[_0x0445('0x1b')]?_[_0x0445('0x1c')](_0x3f0693[_0x0445('0x1b')],function(_0x4758b8){return{'model':db[_0x4758b8[_0x0445('0x1d')]],'as':_0x4758b8['as'],'attributes':_0x4758b8[_0x0445('0x19')],'include':_0x4758b8[_0x0445('0x1b')]?_['map'](_0x4758b8[_0x0445('0x1b')],function(_0x26cf36){return{'model':db[_0x26cf36['model']],'as':_0x26cf36['as'],'attributes':_0x26cf36[_0x0445('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1fe4c0){logger[_0x0445('0xa')](_0x0445('0x14'),_0x93a42);logger[_0x0445('0xb')](_0x0445('0x14'),_0x93a42,JSON[_0x0445('0xd')](_0x1fe4c0));_0x1ec768(_0x1fe4c0);})[_0x0445('0x13')](function(_0x3b7d59){logger[_0x0445('0xe')]('GetTrigger',_0x3b7d59[_0x0445('0x10')],_0x93a42);_0x4c875a(_0x582895[_0x0445('0xe')](0x1f4,_0x3b7d59[_0x0445('0x10')]));});});};exports[_0x0445('0x1e')]=function(_0x1056ee){var _0x28c0dd=this;return new Promise(function(_0x210e0d,_0x5d4d56){return db['Trigger'][_0x0445('0x1f')]({'raw':_0x1056ee[_0x0445('0x17')]?_0x1056ee[_0x0445('0x17')][_0x0445('0x18')]===undefined?!![]:![]:!![],'where':_0x1056ee[_0x0445('0x17')]?_0x1056ee['options']['where']||null:null,'attributes':_0x1056ee[_0x0445('0x17')]?_0x1056ee['options'][_0x0445('0x19')]||null:null,'include':_0x1056ee[_0x0445('0x17')]?_0x1056ee['options'][_0x0445('0x1b')]?_[_0x0445('0x1c')](_0x1056ee[_0x0445('0x17')]['include'],function(_0x2147b6){return{'model':db[_0x2147b6[_0x0445('0x1d')]],'as':_0x2147b6['as'],'attributes':_0x2147b6[_0x0445('0x19')],'include':_0x2147b6[_0x0445('0x1b')]?_['map'](_0x2147b6[_0x0445('0x1b')],function(_0x14825c){return{'model':db[_0x14825c['model']],'as':_0x14825c['as'],'attributes':_0x14825c['attributes'],'include':_0x14825c[_0x0445('0x1b')]?_[_0x0445('0x1c')](_0x14825c[_0x0445('0x1b')],function(_0x5c4578){return{'model':db[_0x5c4578[_0x0445('0x1d')]],'as':_0x5c4578['as'],'attributes':_0x5c4578[_0x0445('0x19')]};}):[]};}):[]};}):[]:[]})[_0x0445('0x9')](function(_0x2861d5){logger[_0x0445('0xa')](_0x0445('0x1e'),_0x1056ee);logger[_0x0445('0xb')](_0x0445('0x1e'),_0x1056ee,JSON[_0x0445('0xd')](_0x2861d5));_0x210e0d(_0x2861d5);})[_0x0445('0x13')](function(_0x25c64f){logger[_0x0445('0xe')](_0x0445('0x1e'),_0x25c64f[_0x0445('0x10')],_0x1056ee);_0x5d4d56(_0x28c0dd[_0x0445('0xe')](0x1f4,_0x25c64f[_0x0445('0x10')]));});});};
\ No newline at end of file
+var _0xa83a=['jayson/promise','client','http','request','then','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','error','message','result','catch','GetTrigger','Trigger','options','raw','where','attributes','limit','include','map','model','info','ShowTrigger','stringify','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x12f570,_0x2bdad1){var _0x820efc=function(_0xb209d7){while(--_0xb209d7){_0x12f570['push'](_0x12f570['shift']());}};_0x820efc(++_0x2bdad1);}(_0xa83a,0x122));var _0xaa83=function(_0x29f38d,_0x489c1a){_0x29f38d=_0x29f38d-0x0;var _0x4a1b0a=_0xa83a[_0x29f38d];return _0x4a1b0a;};'use strict';var _=require('lodash');var util=require(_0xaa83('0x0'));var moment=require(_0xaa83('0x1'));var BPromise=require(_0xaa83('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaa83('0x3'))['db'];var utils=require(_0xaa83('0x4'));var logger=require(_0xaa83('0x5'))('rpc');var config=require(_0xaa83('0x6'));var jayson=require(_0xaa83('0x7'));var client=jayson[_0xaa83('0x8')][_0xaa83('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x436b23,_0x4c7f5d,_0x539e2b){return new BPromise(function(_0x5d04b2,_0x107b88){return client[_0xaa83('0xa')](_0x436b23,_0x539e2b)[_0xaa83('0xb')](function(_0x5b9f63){logger['info'](_0xaa83('0xc'),_0x4c7f5d,_0xaa83('0xd'));logger[_0xaa83('0xe')](_0xaa83('0xf'),_0x4c7f5d,_0xaa83('0xd'),JSON['stringify'](_0x5b9f63));if(_0x5b9f63[_0xaa83('0x10')]){if(_0x5b9f63[_0xaa83('0x10')]['code']===0x1f4){logger[_0xaa83('0x10')](_0xaa83('0xc'),_0x4c7f5d,_0x5b9f63[_0xaa83('0x10')][_0xaa83('0x11')]);return _0x107b88(_0x5b9f63[_0xaa83('0x10')][_0xaa83('0x11')]);}logger['error'](_0xaa83('0xc'),_0x4c7f5d,_0x5b9f63[_0xaa83('0x10')][_0xaa83('0x11')]);return _0x5d04b2(_0x5b9f63[_0xaa83('0x10')][_0xaa83('0x11')]);}else{logger['info']('Trigger,\x20%s,\x20%s',_0x4c7f5d,_0xaa83('0xd'));_0x5d04b2(_0x5b9f63[_0xaa83('0x12')][_0xaa83('0x11')]);}})[_0xaa83('0x13')](function(_0x498e5c){logger['error'](_0xaa83('0xc'),_0x4c7f5d,_0x498e5c);_0x107b88(_0x498e5c);});});}exports[_0xaa83('0x14')]=function(_0x20e739){var _0x41dbda=this;return new Promise(function(_0xfe07d0,_0x5d3cca){return db[_0xaa83('0x15')]['findAll']({'raw':_0x20e739[_0xaa83('0x16')]?_0x20e739[_0xaa83('0x16')][_0xaa83('0x17')]===undefined?!![]:![]:!![],'where':_0x20e739[_0xaa83('0x16')]?_0x20e739[_0xaa83('0x16')][_0xaa83('0x18')]||null:null,'attributes':_0x20e739['options']?_0x20e739[_0xaa83('0x16')][_0xaa83('0x19')]||null:null,'limit':_0x20e739[_0xaa83('0x16')]?_0x20e739['options'][_0xaa83('0x1a')]||null:null,'include':_0x20e739[_0xaa83('0x16')]?_0x20e739[_0xaa83('0x16')][_0xaa83('0x1b')]?_[_0xaa83('0x1c')](_0x20e739[_0xaa83('0x16')][_0xaa83('0x1b')],function(_0x219c9d){return{'model':db[_0x219c9d['model']],'as':_0x219c9d['as'],'attributes':_0x219c9d[_0xaa83('0x19')],'include':_0x219c9d[_0xaa83('0x1b')]?_[_0xaa83('0x1c')](_0x219c9d['include'],function(_0x3b4365){return{'model':db[_0x3b4365[_0xaa83('0x1d')]],'as':_0x3b4365['as'],'attributes':_0x3b4365[_0xaa83('0x19')],'include':_0x3b4365[_0xaa83('0x1b')]?_[_0xaa83('0x1c')](_0x3b4365[_0xaa83('0x1b')],function(_0x39c442){return{'model':db[_0x39c442['model']],'as':_0x39c442['as'],'attributes':_0x39c442[_0xaa83('0x19')]};}):[]};}):[]};}):[]:[]})[_0xaa83('0xb')](function(_0x442364){logger[_0xaa83('0x1e')](_0xaa83('0x14'),_0x20e739);logger[_0xaa83('0xe')](_0xaa83('0x14'),_0x20e739,JSON['stringify'](_0x442364));_0xfe07d0(_0x442364);})['catch'](function(_0x12a4d5){logger[_0xaa83('0x10')](_0xaa83('0x14'),_0x12a4d5['message'],_0x20e739);_0x5d3cca(_0x41dbda[_0xaa83('0x10')](0x1f4,_0x12a4d5[_0xaa83('0x11')]));});});};exports['ShowTrigger']=function(_0x2b4982){var _0x5905ca=this;return new Promise(function(_0x2627cc,_0x4c83b4){return db[_0xaa83('0x15')]['find']({'raw':_0x2b4982[_0xaa83('0x16')]?_0x2b4982[_0xaa83('0x16')][_0xaa83('0x17')]===undefined?!![]:![]:!![],'where':_0x2b4982[_0xaa83('0x16')]?_0x2b4982['options'][_0xaa83('0x18')]||null:null,'attributes':_0x2b4982['options']?_0x2b4982['options']['attributes']||null:null,'include':_0x2b4982[_0xaa83('0x16')]?_0x2b4982[_0xaa83('0x16')][_0xaa83('0x1b')]?_[_0xaa83('0x1c')](_0x2b4982[_0xaa83('0x16')][_0xaa83('0x1b')],function(_0x41444b){return{'model':db[_0x41444b[_0xaa83('0x1d')]],'as':_0x41444b['as'],'attributes':_0x41444b[_0xaa83('0x19')],'include':_0x41444b[_0xaa83('0x1b')]?_['map'](_0x41444b[_0xaa83('0x1b')],function(_0x7a5efa){return{'model':db[_0x7a5efa[_0xaa83('0x1d')]],'as':_0x7a5efa['as'],'attributes':_0x7a5efa['attributes'],'include':_0x7a5efa[_0xaa83('0x1b')]?_['map'](_0x7a5efa[_0xaa83('0x1b')],function(_0x5385eb){return{'model':db[_0x5385eb['model']],'as':_0x5385eb['as'],'attributes':_0x5385eb[_0xaa83('0x19')]};}):[]};}):[]};}):[]:[]})[_0xaa83('0xb')](function(_0x131c24){logger[_0xaa83('0x1e')](_0xaa83('0x1f'),_0x2b4982);logger[_0xaa83('0xe')]('ShowTrigger',_0x2b4982,JSON[_0xaa83('0x20')](_0x131c24));_0x2627cc(_0x131c24);})['catch'](function(_0x49ab5f){logger[_0xaa83('0x10')](_0xaa83('0x1f'),_0x49ab5f[_0xaa83('0x11')],_0x2b4982);_0x4c83b4(_0x5905ca[_0xaa83('0x10')](0x1f4,_0x49ab5f[_0xaa83('0x11')]));});});};
\ No newline at end of file
index 090bd27..f227109 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x320a=['multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/:id','show','/:id/clone','clone','post','create','put','update','destroy','exports'];(function(_0x640ac3,_0x2dce71){var _0x3c801e=function(_0x2f2f38){while(--_0x2f2f38){_0x640ac3['push'](_0x640ac3['shift']());}};_0x3c801e(++_0x2dce71);}(_0x320a,0x1c2));var _0xa320=function(_0x3452df,_0x492afc){_0x3452df=_0x3452df-0x0;var _0x2081c2=_0x320a[_0x3452df];return _0x2081c2;};'use strict';var multer=require(_0xa320('0x0'));var util=require(_0xa320('0x1'));var path=require('path');var timeout=require(_0xa320('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xa320('0x3'));var auth=require(_0xa320('0x4'));var interaction=require(_0xa320('0x5'));var config=require('../../config/environment');var controller=require('./trunk.controller');router[_0xa320('0x6')]('/',auth[_0xa320('0x7')](),controller['index']);router[_0xa320('0x6')](_0xa320('0x8'),auth[_0xa320('0x7')](),controller[_0xa320('0x9')]);router['post'](_0xa320('0xa'),auth[_0xa320('0x7')](),controller[_0xa320('0xb')]);router[_0xa320('0xc')]('/',auth[_0xa320('0x7')](),controller[_0xa320('0xd')]);router[_0xa320('0xe')](_0xa320('0x8'),auth[_0xa320('0x7')](),controller[_0xa320('0xf')]);router['delete']('/:id',auth[_0xa320('0x7')](),controller[_0xa320('0x10')]);module[_0xa320('0x11')]=router;
\ No newline at end of file
+var _0xfa32=['update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./trunk.controller','get','isAuthenticated','/:id','post','/:id/clone','clone','create','put'];(function(_0x209bae,_0x5b49e7){var _0x295f2e=function(_0x512af3){while(--_0x512af3){_0x209bae['push'](_0x209bae['shift']());}};_0x295f2e(++_0x5b49e7);}(_0xfa32,0x72));var _0x2fa3=function(_0x457e82,_0x584a4a){_0x457e82=_0x457e82-0x0;var _0x287594=_0xfa32[_0x457e82];return _0x287594;};'use strict';var multer=require(_0x2fa3('0x0'));var util=require(_0x2fa3('0x1'));var path=require(_0x2fa3('0x2'));var timeout=require(_0x2fa3('0x3'));var express=require('express');var router=express[_0x2fa3('0x4')]();var fs_extra=require(_0x2fa3('0x5'));var auth=require(_0x2fa3('0x6'));var interaction=require(_0x2fa3('0x7'));var config=require(_0x2fa3('0x8'));var controller=require(_0x2fa3('0x9'));router[_0x2fa3('0xa')]('/',auth[_0x2fa3('0xb')](),controller['index']);router[_0x2fa3('0xa')](_0x2fa3('0xc'),auth[_0x2fa3('0xb')](),controller['show']);router[_0x2fa3('0xd')](_0x2fa3('0xe'),auth['isAuthenticated'](),controller[_0x2fa3('0xf')]);router['post']('/',auth[_0x2fa3('0xb')](),controller[_0x2fa3('0x10')]);router[_0x2fa3('0x11')](_0x2fa3('0xc'),auth[_0x2fa3('0xb')](),controller[_0x2fa3('0x12')]);router[_0x2fa3('0x13')](_0x2fa3('0xc'),auth[_0x2fa3('0xb')](),controller[_0x2fa3('0x14')]);module[_0x2fa3('0x15')]=router;
\ No newline at end of file
index 03359fd..ee00038 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc87e=['outgoing','force_rport,comedia','nat','join','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','INTEGER','always','accept','originate','uac','pai','active','passive','actpass','dynamic','nonat','update','BOOLEAN','sequelize','exports','STRING','name','ENUM','user','peer','from-voip-provider','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','setDataValue','transport','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','shortinfo','inband','auto','yes'];(function(_0x9bca53,_0x59b4f8){var _0x3894bc=function(_0x1ae67d){while(--_0x1ae67d){_0x9bca53['push'](_0x9bca53['shift']());}};_0x3894bc(++_0x59b4f8);}(_0xc87e,0xb1));var _0xec87=function(_0x24509f,_0x521970){_0x24509f=_0x24509f-0x0;var _0x25f0ef=_0xc87e[_0x24509f];return _0x25f0ef;};'use strict';var Sequelize=require(_0xec87('0x0'));module[_0xec87('0x1')]={'name':{'type':Sequelize[_0xec87('0x2')],'allowNull':![],'unique':_0xec87('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xec87('0x4')]('friend',_0xec87('0x5'),_0xec87('0x6')),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize[_0xec87('0x2')],'allowNull':![],'defaultValue':_0xec87('0x7')},'callingpres':{'type':Sequelize[_0xec87('0x4')]('ALLOWED_NOT_SCREENED',_0xec87('0x8'),_0xec87('0x9'),'ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN',_0xec87('0xa'),_0xec87('0xb'))},'deny':{'type':Sequelize[_0xec87('0x2')]},'permit':{'type':Sequelize[_0xec87('0x2')]},'secret':{'type':Sequelize[_0xec87('0x2')]},'md5secret':{'type':Sequelize[_0xec87('0x2')]},'remotesecret':{'type':Sequelize[_0xec87('0x2')]},'transport':{'type':Sequelize['STRING'],'defaultValue':_0xec87('0xc'),'set':function(_0x107659){this[_0xec87('0xd')](_0xec87('0xe'),_0x107659?_0x107659['join'](','):null);},'get':function(){return this[_0xec87('0xf')](_0xec87('0xe'))?this['getDataValue'](_0xec87('0xe'))[_0xec87('0x10')](','):null;},'comment':_0xec87('0x11')},'dtmfmode':{'type':Sequelize['ENUM'](_0xec87('0x12'),'info',_0xec87('0x13'),_0xec87('0x14'),_0xec87('0x15')),'defaultValue':_0xec87('0x12')},'directmedia':{'type':Sequelize['ENUM'](_0xec87('0x16'),'no','nonat','update',_0xec87('0x17')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xec87('0x4')]('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xec87('0x2')]},'directmediadeny':{'type':Sequelize[_0xec87('0x2')]},'nat':{'type':Sequelize[_0xec87('0x2')],'defaultValue':_0xec87('0x18'),'set':function(_0x4c6983){this[_0xec87('0xd')](_0xec87('0x19'),_0x4c6983?_0x4c6983[_0xec87('0x1a')](','):null);},'get':function(){return this['getDataValue'](_0xec87('0x19'))?this[_0xec87('0xf')]('nat')[_0xec87('0x10')](','):null;},'comment':_0xec87('0x1b')},'callgroup':{'type':Sequelize[_0xec87('0x2')]},'namedcallgroup':{'type':Sequelize[_0xec87('0x2')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0xec87('0x2')]},'language':{'type':Sequelize[_0xec87('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING'],'allowNull':!![]},'disallow':{'type':Sequelize[_0xec87('0x2')],'defaultValue':_0xec87('0x1c')},'allow':{'type':Sequelize[_0xec87('0x2')],'allowNull':![],'defaultValue':_0xec87('0x1d'),'set':function(_0x5d6c50){this[_0xec87('0xd')](_0xec87('0x1e'),_0x5d6c50?_0x5d6c50[_0xec87('0x1a')](';'):'ulaw;alaw;gsm');},'get':function(){return this['getDataValue'](_0xec87('0x1e'))?this[_0xec87('0xf')](_0xec87('0x1e'))['split'](';'):null;},'comment':_0xec87('0x1f')},'autoframing':{'type':Sequelize[_0xec87('0x4')](_0xec87('0x16'),'no')},'insecure':{'type':Sequelize[_0xec87('0x2')],'defaultValue':_0xec87('0x20'),'set':function(_0x1f4acd){this[_0xec87('0xd')](_0xec87('0x21'),_0x1f4acd?_0x1f4acd[_0xec87('0x1a')](','):null);},'get':function(){return this[_0xec87('0xf')](_0xec87('0x21'))?this[_0xec87('0xf')]('insecure')[_0xec87('0x10')](','):null;},'comment':_0xec87('0x22')},'trustrpid':{'type':Sequelize[_0xec87('0x4')]('yes','no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xec87('0x4')](_0xec87('0x16'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xec87('0x4')](_0xec87('0x16'),'no',_0xec87('0x23'))},'promiscredir':{'type':Sequelize[_0xec87('0x4')](_0xec87('0x16'),'no')},'useclientcode':{'type':Sequelize[_0xec87('0x4')](_0xec87('0x16'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xec87('0x2')],'defaultValue':_0xec87('0x24')},'amaflags':{'type':Sequelize[_0xec87('0x2')]},'callcounter':{'type':Sequelize[_0xec87('0x4')](_0xec87('0x16'),'no'),'defaultValue':_0xec87('0x16')},'busylevel':{'type':Sequelize[_0xec87('0x25')](0xb)},'allowoverlap':{'type':Sequelize[_0xec87('0x4')](_0xec87('0x16'),'no')},'allowsubscribe':{'type':Sequelize[_0xec87('0x4')](_0xec87('0x16'),'no')},'allowtransfer':{'type':Sequelize[_0xec87('0x4')](_0xec87('0x16'),'no')},'ignoresdpversion':{'type':Sequelize[_0xec87('0x4')](_0xec87('0x16'),'no')},'subscribecontext':{'type':Sequelize[_0xec87('0x2')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0xec87('0x4')](_0xec87('0x16'),'no',_0xec87('0x26')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xec87('0x25')](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM']('yes','no')},'mailbox':{'type':Sequelize[_0xec87('0x2')]},'session_timers':{'type':Sequelize[_0xec87('0x4')](_0xec87('0x27'),'refuse',_0xec87('0x28'))},'session_expires':{'type':Sequelize[_0xec87('0x25')](0xb)},'session_minse':{'type':Sequelize[_0xec87('0x25')](0xb)},'session_refresher':{'type':Sequelize[_0xec87('0x4')](_0xec87('0x29'),'uas'),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0xec87('0x2')]},'regexten':{'type':Sequelize[_0xec87('0x2')]},'fromdomain':{'type':Sequelize[_0xec87('0x2')]},'fromuser':{'type':Sequelize[_0xec87('0x2')]},'port':{'type':Sequelize[_0xec87('0x25')](0x5)},'qualify':{'type':Sequelize[_0xec87('0x4')](_0xec87('0x16'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0xec87('0x25')](0xb)},'defaultip':{'type':Sequelize[_0xec87('0x2')]},'defaultuser':{'type':Sequelize[_0xec87('0x2')]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb)},'sendrpid':{'type':Sequelize[_0xec87('0x4')](_0xec87('0x16'),'no',_0xec87('0x2a')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xec87('0x2')]},'callbackextension':{'type':Sequelize[_0xec87('0x2')]},'timert1':{'type':Sequelize[_0xec87('0x25')](0xb)},'timerb':{'type':Sequelize[_0xec87('0x25')](0xb)},'qualifyfreq':{'type':Sequelize[_0xec87('0x25')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0xec87('0x2')]},'contactacl':{'type':Sequelize[_0xec87('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0xec87('0x2')]},'use_q850_reason':{'type':Sequelize[_0xec87('0x2')]},'maxforwards':{'type':Sequelize[_0xec87('0x25')](0xb)},'encryption':{'type':Sequelize[_0xec87('0x4')]('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM']('yes','no')},'force_avp':{'type':Sequelize[_0xec87('0x4')](_0xec87('0x16'),'no')},'icesupport':{'type':Sequelize[_0xec87('0x4')](_0xec87('0x16'),'no')},'dtlsenable':{'type':Sequelize['ENUM'](_0xec87('0x16'),'no')},'dtlsverify':{'type':Sequelize[_0xec87('0x4')]('yes','no','fingerprint','certificate')},'dtlsrekey':{'type':Sequelize[_0xec87('0x25')](0xb)},'dtlscertfile':{'type':Sequelize[_0xec87('0x2')]},'dtlsprivatekey':{'type':Sequelize[_0xec87('0x2')]},'dtlscipher':{'type':Sequelize[_0xec87('0x2')]},'dtlscafile':{'type':Sequelize[_0xec87('0x2')]},'dtlscapath':{'type':Sequelize[_0xec87('0x2')]},'dtlssetup':{'type':Sequelize[_0xec87('0x4')](_0xec87('0x2b'),_0xec87('0x2c'),_0xec87('0x2d')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xec87('0x2')]},'usereqphone':{'type':Sequelize['ENUM'](_0xec87('0x16'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xec87('0x2')]},'recordofffeature':{'type':Sequelize[_0xec87('0x2')]},'call_limit':{'type':Sequelize[_0xec87('0x25')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xec87('0x4')]('yes','no')},'subscribemwi':{'type':Sequelize['ENUM'](_0xec87('0x16'),'no')},'vmexten':{'type':Sequelize['STRING']},'mohinterpret':{'type':Sequelize[_0xec87('0x2')]},'mohsuggest':{'type':Sequelize[_0xec87('0x2')]},'parkinglot':{'type':Sequelize[_0xec87('0x2')]},'description':{'type':Sequelize[_0xec87('0x2')]},'host':{'type':Sequelize[_0xec87('0x2')],'defaultValue':_0xec87('0x2e')},'canreinvite':{'type':Sequelize[_0xec87('0x4')](_0xec87('0x16'),'no',_0xec87('0x2f'),_0xec87('0x30'),'update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize[_0xec87('0x2')]},'otherFields':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0xec87('0x31')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xec87('0x2')],'defaultValue':'no'}};
\ No newline at end of file
+var _0x0182=['INTEGER','accept','refuse','uac','uas','pai','fingerprint','certificate','active','passive','actpass','dynamic','update','BOOLEAN','sequelize','STRING','name','ENUM','friend','user','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','setDataValue','transport','join','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','inband','auto','nonat','outgoing','yes','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','ulaw;alaw;gsm','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>'];(function(_0x10a490,_0x31021c){var _0x4d5e27=function(_0xb56344){while(--_0xb56344){_0x10a490['push'](_0x10a490['shift']());}};_0x4d5e27(++_0x31021c);}(_0x0182,0x117));var _0x2018=function(_0x5225a0,_0x1d3783){_0x5225a0=_0x5225a0-0x0;var _0x1c6627=_0x0182[_0x5225a0];return _0x1c6627;};'use strict';var Sequelize=require(_0x2018('0x0'));module['exports']={'name':{'type':Sequelize[_0x2018('0x1')],'allowNull':![],'unique':_0x2018('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x4'),_0x2018('0x5'),'peer'),'allowNull':![],'defaultValue':_0x2018('0x4')},'context':{'type':Sequelize[_0x2018('0x1')],'allowNull':![],'defaultValue':_0x2018('0x6')},'callingpres':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x7'),_0x2018('0x8'),'ALLOWED_FAILED_SCREEN',_0x2018('0x9'),_0x2018('0xa'),_0x2018('0xb'),_0x2018('0xc'),_0x2018('0xd'))},'deny':{'type':Sequelize[_0x2018('0x1')]},'permit':{'type':Sequelize[_0x2018('0x1')]},'secret':{'type':Sequelize['STRING']},'md5secret':{'type':Sequelize['STRING']},'remotesecret':{'type':Sequelize[_0x2018('0x1')]},'transport':{'type':Sequelize['STRING'],'defaultValue':'udp','set':function(_0x32d7cf){this[_0x2018('0xe')](_0x2018('0xf'),_0x32d7cf?_0x32d7cf[_0x2018('0x10')](','):null);},'get':function(){return this[_0x2018('0x11')](_0x2018('0xf'))?this[_0x2018('0x11')](_0x2018('0xf'))[_0x2018('0x12')](','):null;},'comment':_0x2018('0x13')},'dtmfmode':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x14'),_0x2018('0x15'),'shortinfo',_0x2018('0x16'),_0x2018('0x17')),'defaultValue':_0x2018('0x14')},'directmedia':{'type':Sequelize['ENUM']('yes','no',_0x2018('0x18'),'update',_0x2018('0x19')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING']},'directmediadeny':{'type':Sequelize['STRING']},'nat':{'type':Sequelize[_0x2018('0x1')],'defaultValue':_0x2018('0x1b'),'set':function(_0x51f305){this['setDataValue'](_0x2018('0x1c'),_0x51f305?_0x51f305[_0x2018('0x10')](','):null);},'get':function(){return this[_0x2018('0x11')](_0x2018('0x1c'))?this[_0x2018('0x11')](_0x2018('0x1c'))[_0x2018('0x12')](','):null;},'comment':_0x2018('0x1d')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0x2018('0x1')]},'pickupgroup':{'type':Sequelize[_0x2018('0x1')]},'namedpickupgroup':{'type':Sequelize[_0x2018('0x1')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x2018('0x1')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x2018('0x1')],'defaultValue':_0x2018('0x1e')},'allow':{'type':Sequelize[_0x2018('0x1')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x5e1cb1){this['setDataValue'](_0x2018('0x1f'),_0x5e1cb1?_0x5e1cb1[_0x2018('0x10')](';'):_0x2018('0x20'));},'get':function(){return this[_0x2018('0x11')](_0x2018('0x1f'))?this[_0x2018('0x11')]('allow')['split'](';'):null;},'comment':_0x2018('0x21')},'autoframing':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':_0x2018('0x22'),'set':function(_0x5b7351){this[_0x2018('0xe')]('insecure',_0x5b7351?_0x5b7351['join'](','):null);},'get':function(){return this[_0x2018('0x11')](_0x2018('0x23'))?this[_0x2018('0x11')](_0x2018('0x23'))[_0x2018('0x12')](','):null;},'comment':_0x2018('0x24')},'trustrpid':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no',_0x2018('0x25'))},'promiscredir':{'type':Sequelize[_0x2018('0x3')]('yes','no')},'useclientcode':{'type':Sequelize['ENUM']('yes','no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize[_0x2018('0x1')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':_0x2018('0x26')},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no'),'defaultValue':_0x2018('0x1a')},'busylevel':{'type':Sequelize['INTEGER'](0xb)},'allowoverlap':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no')},'allowsubscribe':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no')},'allowtransfer':{'type':Sequelize['ENUM']('yes','no')},'ignoresdpversion':{'type':Sequelize['ENUM'](_0x2018('0x1a'),'no')},'subscribecontext':{'type':Sequelize[_0x2018('0x1')]},'template':{'type':Sequelize[_0x2018('0x1')]},'videosupport':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no','always'),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x2018('0x27')](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x2018('0x1a'),'no')},'mailbox':{'type':Sequelize[_0x2018('0x1')]},'session_timers':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x28'),_0x2018('0x29'),'originate')},'session_expires':{'type':Sequelize[_0x2018('0x27')](0xb)},'session_minse':{'type':Sequelize['INTEGER'](0xb)},'session_refresher':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x2a'),'uas'),'defaultValue':_0x2018('0x2b')},'t38pt_usertpsource':{'type':Sequelize[_0x2018('0x1')]},'regexten':{'type':Sequelize[_0x2018('0x1')]},'fromdomain':{'type':Sequelize[_0x2018('0x1')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x2018('0x27')](0x5)},'qualify':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no'),'defaultValue':_0x2018('0x1a')},'keepalive':{'type':Sequelize[_0x2018('0x27')](0xb)},'defaultip':{'type':Sequelize['STRING']},'defaultuser':{'type':Sequelize[_0x2018('0x1')]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x2018('0x27')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x2018('0x27')](0xb)},'sendrpid':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no',_0x2018('0x2c')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING']},'callbackextension':{'type':Sequelize[_0x2018('0x1')]},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0x2018('0x27')](0xb)},'qualifyfreq':{'type':Sequelize[_0x2018('0x27')](0xb)},'contactpermit':{'type':Sequelize[_0x2018('0x1')]},'contactdeny':{'type':Sequelize[_0x2018('0x1')]},'contactacl':{'type':Sequelize[_0x2018('0x1')]},'unsolicited_mailbox':{'type':Sequelize[_0x2018('0x1')]},'use_q850_reason':{'type':Sequelize[_0x2018('0x1')]},'maxforwards':{'type':Sequelize[_0x2018('0x27')](0xb)},'encryption':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0x2018('0x1a'),'no')},'force_avp':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no')},'icesupport':{'type':Sequelize['ENUM'](_0x2018('0x1a'),'no')},'dtlsenable':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no')},'dtlsverify':{'type':Sequelize[_0x2018('0x3')]('yes','no',_0x2018('0x2d'),_0x2018('0x2e'))},'dtlsrekey':{'type':Sequelize[_0x2018('0x27')](0xb)},'dtlscertfile':{'type':Sequelize[_0x2018('0x1')]},'dtlsprivatekey':{'type':Sequelize[_0x2018('0x1')]},'dtlscipher':{'type':Sequelize[_0x2018('0x1')]},'dtlscafile':{'type':Sequelize[_0x2018('0x1')]},'dtlscapath':{'type':Sequelize[_0x2018('0x1')]},'dtlssetup':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x2f'),_0x2018('0x30'),_0x2018('0x31')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x2018('0x1')]},'usereqphone':{'type':Sequelize['ENUM'](_0x2018('0x1a'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x2018('0x1')]},'recordofffeature':{'type':Sequelize[_0x2018('0x1')]},'call_limit':{'type':Sequelize[_0x2018('0x27')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no')},'subscribemwi':{'type':Sequelize['ENUM']('yes','no')},'vmexten':{'type':Sequelize[_0x2018('0x1')]},'mohinterpret':{'type':Sequelize[_0x2018('0x1')]},'mohsuggest':{'type':Sequelize[_0x2018('0x1')]},'parkinglot':{'type':Sequelize[_0x2018('0x1')]},'description':{'type':Sequelize[_0x2018('0x1')]},'host':{'type':Sequelize[_0x2018('0x1')],'defaultValue':_0x2018('0x32')},'canreinvite':{'type':Sequelize['ENUM']('yes','no',_0x2018('0x18'),_0x2018('0x33'),'update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize[_0x2018('0x1')]},'otherFields':{'type':Sequelize[_0x2018('0x1')]},'active':{'type':Sequelize[_0x2018('0x34')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x2018('0x1')],'defaultValue':'no'}};
\ No newline at end of file
index aab0744..3e8dd78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['length','limit','sort','where','filter','merge','options','Trunk','includeAll','include','findAll','show','find','clone','createdAt','updatedAt','omit','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Trunks','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','join','root','server/files/templates/trunk.ejs','server/files/templates/registry.ejs','utf8','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','render','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','userProfileId','autoAssociation','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','client','http','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','undefined','offset','count','json','reject','save','update','get','UserProfileResource','destroy','name','send','index','map','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields'];(function(_0x524a18,_0x2a7598){var _0x2ca9c6=function(_0x5ba5bc){while(--_0x5ba5bc){_0x524a18['push'](_0x524a18['shift']());}};_0x2ca9c6(++_0x2a7598);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x4322c6,_0x28f126){_0x4322c6=_0x4322c6-0x0;var _0x4e7537=_0xf3cd[_0x4322c6];return _0x4e7537;};'use strict';var emlformat=require(_0xdf3c('0x0'));var rimraf=require(_0xdf3c('0x1'));var zipdir=require(_0xdf3c('0x2'));var jsonpatch=require(_0xdf3c('0x3'));var rp=require(_0xdf3c('0x4'));var moment=require(_0xdf3c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xdf3c('0x6'));var util=require(_0xdf3c('0x7'));var path=require(_0xdf3c('0x8'));var sox=require('sox');var csv=require(_0xdf3c('0x9'));var ejs=require(_0xdf3c('0xa'));var fs=require('fs');var fs_extra=require(_0xdf3c('0xb'));var _=require(_0xdf3c('0xc'));var squel=require(_0xdf3c('0xd'));var crypto=require(_0xdf3c('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xdf3c('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xdf3c('0x10'));var Redis=require(_0xdf3c('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xdf3c('0x12'));var as=require(_0xdf3c('0x13'));var hardwareService=require(_0xdf3c('0x14'));var logger=require(_0xdf3c('0x15'))(_0xdf3c('0x16'));var utils=require(_0xdf3c('0x17'));var config=require(_0xdf3c('0x18'));var licenseUtil=require(_0xdf3c('0x19'));var db=require('../../mysqldb')['db'];var jayson=require(_0xdf3c('0x1a'));var client=jayson[_0xdf3c('0x1b')][_0xdf3c('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x17319c,_0x59e431,_0x2ae4ad,_0x461079){return new BPromise(function(_0x13ea5f,_0x5e0047){var _0x18aafa=_0x461079||client;return _0x18aafa[_0xdf3c('0x1d')](_0x17319c,_0x2ae4ad)[_0xdf3c('0x1e')](function(_0x4274fd){logger[_0xdf3c('0x1f')](_0xdf3c('0x20'),_0x59e431,_0xdf3c('0x21'));logger[_0xdf3c('0x22')](_0xdf3c('0x23'),_0x59e431,_0xdf3c('0x21'),JSON['stringify'](_0x4274fd));if(_0x4274fd[_0xdf3c('0x24')]){if(_0x4274fd[_0xdf3c('0x24')][_0xdf3c('0x25')]===0x1f4){logger[_0xdf3c('0x24')](_0xdf3c('0x20'),_0x59e431,_0x4274fd[_0xdf3c('0x24')][_0xdf3c('0x26')]);return _0x5e0047(_0x4274fd[_0xdf3c('0x24')][_0xdf3c('0x26')]);}logger[_0xdf3c('0x24')](_0xdf3c('0x20'),_0x59e431,_0x4274fd[_0xdf3c('0x24')][_0xdf3c('0x26')]);return _0x13ea5f(_0x4274fd['error']['message']);}else{logger[_0xdf3c('0x1f')]('Trunk,\x20%s,\x20%s',_0x59e431,_0xdf3c('0x21'));_0x13ea5f(_0x4274fd[_0xdf3c('0x27')][_0xdf3c('0x26')]);}})[_0xdf3c('0x28')](function(_0x33652f){logger[_0xdf3c('0x24')]('Trunk,\x20%s,\x20%s',_0x59e431,_0x33652f);_0x5e0047(_0x33652f);});});}function respondWithStatusCode(_0x22a164,_0x213d75){_0x213d75=_0x213d75||0xcc;return function(_0x13e3ca){if(_0x13e3ca){return _0x22a164[_0xdf3c('0x29')](_0x213d75);}return _0x22a164[_0xdf3c('0x2a')](_0x213d75)[_0xdf3c('0x2b')]();};}function respondWithResult(_0xef54cb,_0x155f54){_0x155f54=_0x155f54||0xc8;return function(_0x18cb46){if(_0x18cb46){return _0xef54cb[_0xdf3c('0x2a')](_0x155f54)['json'](_0x18cb46);}};}function respondWithFilteredResult(_0xd284d7,_0x153daa){return function(_0x4b57a4){if(_0x4b57a4){var _0xdc8962=typeof _0x153daa['offset']==='undefined'&&typeof _0x153daa['limit']===_0xdf3c('0x2c');var _0x186bba=_0x4b57a4['count'];var _0x5c3b5a=_0xdc8962?0x0:_0x153daa[_0xdf3c('0x2d')];var _0x1f2ce4=_0xdc8962?_0x4b57a4[_0xdf3c('0x2e')]:_0x153daa[_0xdf3c('0x2d')]+_0x153daa['limit'];var _0x43ce06;if(_0x1f2ce4>=_0x186bba){_0x1f2ce4=_0x186bba;_0x43ce06=0xc8;}else{_0x43ce06=0xce;}_0xd284d7[_0xdf3c('0x2a')](_0x43ce06);return _0xd284d7['set']('Content-Range',_0x5c3b5a+'-'+_0x1f2ce4+'/'+_0x186bba)[_0xdf3c('0x2f')](_0x4b57a4);}return null;};}function patchUpdates(_0x46f0e3){return function(_0x36937e){try{jsonpatch['apply'](_0x36937e,_0x46f0e3,!![]);}catch(_0x2355f6){return BPromise[_0xdf3c('0x30')](_0x2355f6);}return _0x36937e[_0xdf3c('0x31')]();};}function saveUpdates(_0x10099e,_0x575ae1){return function(_0xda0de0){if(_0xda0de0){return _0xda0de0[_0xdf3c('0x32')](_0x10099e)['then'](function(_0x40ae3d){return _0x40ae3d;});}return null;};}function removeEntity(_0x3daeda,_0x217a65){return function(_0x2287f){if(_0x2287f){return _0x2287f['destroy']()[_0xdf3c('0x1e')](function(){var _0x360d5c=_0x2287f[_0xdf3c('0x33')]({'plain':!![]});var _0x3b9ce8='Trunks';return db[_0xdf3c('0x34')][_0xdf3c('0x35')]({'where':{'type':_0x3b9ce8,'resourceId':_0x360d5c['id']}})['then'](function(){return _0x2287f;});})['then'](function(){_0x3daeda[_0xdf3c('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x216115,_0x5e8130){return function(_0x57faba){if(!_0x57faba){_0x216115['sendStatus'](0x194);}return _0x57faba;};}function handleError(_0x44a478,_0x2ee9ad){_0x2ee9ad=_0x2ee9ad||0x1f4;return function(_0x1d0b8a){logger[_0xdf3c('0x24')](_0x1d0b8a['stack']);if(_0x1d0b8a['name']){delete _0x1d0b8a[_0xdf3c('0x36')];}_0x44a478['status'](_0x2ee9ad)[_0xdf3c('0x37')](_0x1d0b8a);};}exports[_0xdf3c('0x38')]=function(_0x3628ae,_0xcdd731){var _0x1004e9={},_0x1e0cf2={},_0x1c7335={'count':0x0,'rows':[]};var _0x809f3d=_[_0xdf3c('0x39')](db['Trunk'][_0xdf3c('0x3a')],function(_0x54e689){return{'name':_0x54e689['fieldName'],'type':_0x54e689[_0xdf3c('0x3b')]['key']};});_0x1e0cf2[_0xdf3c('0x3c')]=_['map'](_0x809f3d,_0xdf3c('0x36'));_0x1e0cf2[_0xdf3c('0x3d')]=_[_0xdf3c('0x3e')](_0x3628ae[_0xdf3c('0x3d')]);_0x1e0cf2[_0xdf3c('0x3f')]=_[_0xdf3c('0x40')](_0x1e0cf2[_0xdf3c('0x3c')],_0x1e0cf2[_0xdf3c('0x3d')]);_0x1004e9[_0xdf3c('0x41')]=_[_0xdf3c('0x40')](_0x1e0cf2[_0xdf3c('0x3c')],qs[_0xdf3c('0x42')](_0x3628ae['query']['fields']));_0x1004e9[_0xdf3c('0x41')]=_0x1004e9['attributes'][_0xdf3c('0x43')]?_0x1004e9[_0xdf3c('0x41')]:_0x1e0cf2[_0xdf3c('0x3c')];if(!_0x3628ae[_0xdf3c('0x3d')]['hasOwnProperty']('nolimit')){_0x1004e9[_0xdf3c('0x44')]=qs[_0xdf3c('0x44')](_0x3628ae[_0xdf3c('0x3d')]['limit']);_0x1004e9[_0xdf3c('0x2d')]=qs[_0xdf3c('0x2d')](_0x3628ae[_0xdf3c('0x3d')][_0xdf3c('0x2d')]);}_0x1004e9['order']=qs[_0xdf3c('0x45')](_0x3628ae[_0xdf3c('0x3d')][_0xdf3c('0x45')]);_0x1004e9[_0xdf3c('0x46')]=qs[_0xdf3c('0x3f')](_['pick'](_0x3628ae[_0xdf3c('0x3d')],_0x1e0cf2[_0xdf3c('0x3f')]),_0x809f3d);if(_0x3628ae[_0xdf3c('0x3d')][_0xdf3c('0x47')]){_0x1004e9[_0xdf3c('0x46')]=_[_0xdf3c('0x48')](_0x1004e9['where'],{'$or':_['map'](_0x809f3d,function(_0x2c6c6d){if(_0x2c6c6d[_0xdf3c('0x3b')]!=='VIRTUAL'){var _0x5c9885={};_0x5c9885[_0x2c6c6d[_0xdf3c('0x36')]]={'$like':'%'+_0x3628ae[_0xdf3c('0x3d')][_0xdf3c('0x47')]+'%'};return _0x5c9885;}})});}_0x1004e9=_[_0xdf3c('0x48')]({},_0x1004e9,_0x3628ae[_0xdf3c('0x49')]);var _0x2dbf54={'where':_0x1004e9[_0xdf3c('0x46')]};return db[_0xdf3c('0x4a')][_0xdf3c('0x2e')](_0x2dbf54)['then'](function(_0x129c2a){_0x1c7335[_0xdf3c('0x2e')]=_0x129c2a;if(_0x3628ae[_0xdf3c('0x3d')][_0xdf3c('0x4b')]){_0x1004e9[_0xdf3c('0x4c')]=[{'all':!![]}];}return db[_0xdf3c('0x4a')][_0xdf3c('0x4d')](_0x1004e9);})['then'](function(_0x1751a8){_0x1c7335['rows']=_0x1751a8;return _0x1c7335;})[_0xdf3c('0x1e')](respondWithFilteredResult(_0xcdd731,_0x1004e9))['catch'](handleError(_0xcdd731,null));};exports[_0xdf3c('0x4e')]=function(_0x28144f,_0x2ec575){var _0x94c5b9={'raw':![],'where':{'id':_0x28144f['params']['id']}},_0x5eef94={};_0x5eef94['model']=_[_0xdf3c('0x3e')](db['Trunk'][_0xdf3c('0x3a')]);_0x5eef94[_0xdf3c('0x3d')]=_[_0xdf3c('0x3e')](_0x28144f[_0xdf3c('0x3d')]);_0x5eef94[_0xdf3c('0x3f')]=_['intersection'](_0x5eef94['model'],_0x5eef94[_0xdf3c('0x3d')]);_0x94c5b9[_0xdf3c('0x41')]=_['intersection'](_0x5eef94[_0xdf3c('0x3c')],qs[_0xdf3c('0x42')](_0x28144f[_0xdf3c('0x3d')][_0xdf3c('0x42')]));_0x94c5b9[_0xdf3c('0x41')]=_0x94c5b9[_0xdf3c('0x41')][_0xdf3c('0x43')]?_0x94c5b9['attributes']:_0x5eef94['model'];if(_0x28144f[_0xdf3c('0x3d')][_0xdf3c('0x4b')]){_0x94c5b9[_0xdf3c('0x4c')]=[{'all':!![]}];}_0x94c5b9=_[_0xdf3c('0x48')]({},_0x94c5b9,_0x28144f[_0xdf3c('0x49')]);return db[_0xdf3c('0x4a')][_0xdf3c('0x4f')](_0x94c5b9)[_0xdf3c('0x1e')](handleEntityNotFound(_0x2ec575,null))[_0xdf3c('0x1e')](respondWithResult(_0x2ec575,null))[_0xdf3c('0x28')](handleError(_0x2ec575,null));};exports[_0xdf3c('0x50')]=function(_0x4cb28f,_0x1eebcf){var _0x47cb74={'where':{'id':_0x4cb28f['params']['id']}},_0x5e7247={};_0x5e7247['model']=_['keys'](db[_0xdf3c('0x4a')][_0xdf3c('0x3a')]);_0x47cb74['attributes']=_[_0xdf3c('0x40')](_0x5e7247[_0xdf3c('0x3c')],qs['fields'](_0x4cb28f[_0xdf3c('0x3d')][_0xdf3c('0x42')]));_0x47cb74[_0xdf3c('0x41')]=_0x47cb74[_0xdf3c('0x41')][_0xdf3c('0x43')]?_0x47cb74[_0xdf3c('0x41')]:_0x5e7247[_0xdf3c('0x3c')];if(_0x4cb28f[_0xdf3c('0x3d')][_0xdf3c('0x4b')]){_0x47cb74[_0xdf3c('0x4c')]=[{'all':!![]}];}_0x47cb74=_[_0xdf3c('0x48')]({},_0x47cb74,_0x4cb28f['options']);return db[_0xdf3c('0x4a')][_0xdf3c('0x4f')](_0x47cb74)[_0xdf3c('0x1e')](handleEntityNotFound(_0x1eebcf,null))['then'](function(_0x245c68){if(_0x245c68){var _0x3e327e=_0x245c68[_0xdf3c('0x33')]({'plain':!![]});_0x3e327e=qs['omit'](_0x3e327e,['id',_0xdf3c('0x51'),_0xdf3c('0x52')]);_0x4cb28f['body']=_[_0xdf3c('0x53')](_0x4cb28f['body'],['id',_0xdf3c('0x51'),_0xdf3c('0x52')]);return db[_0xdf3c('0x4a')][_0xdf3c('0x54')](_[_0xdf3c('0x48')](_0x3e327e,_0x4cb28f[_0xdf3c('0x55')]),{'include':_0x4cb28f[_0xdf3c('0x3d')][_0xdf3c('0x4b')]?[{'all':!![]}]:undefined})[_0xdf3c('0x1e')](function(_0x330730){var _0x283be2=_0x4cb28f[_0xdf3c('0x56')][_0xdf3c('0x33')]({'plain':!![]});if(!_0x283be2)throw new Error(_0xdf3c('0x57'));if(_0x283be2[_0xdf3c('0x58')]===_0xdf3c('0x56')){var _0xd7fb2d=_0x330730['get']({'plain':!![]});var _0x4dade5=_0xdf3c('0x59');return db[_0xdf3c('0x5a')][_0xdf3c('0x4f')]({'where':{'name':_0x4dade5,'userProfileId':_0x283be2['userProfileId']},'raw':!![]})[_0xdf3c('0x1e')](function(_0x5f2765){if(_0x5f2765&&_0x5f2765['autoAssociation']===0x0){return db[_0xdf3c('0x34')][_0xdf3c('0x54')]({'name':_0xd7fb2d[_0xdf3c('0x36')],'resourceId':_0xd7fb2d['id'],'type':_0x5f2765[_0xdf3c('0x36')],'sectionId':_0x5f2765['id']},{})[_0xdf3c('0x1e')](function(){return _0x330730;});}else{return _0x330730;}})[_0xdf3c('0x28')](function(_0x1a31d7){logger[_0xdf3c('0x24')](_0xdf3c('0x5b'),_0x1a31d7);throw _0x1a31d7;});}return _0x330730;});}})[_0xdf3c('0x1e')](respondWithResult(_0x1eebcf,0xc9))[_0xdf3c('0x28')](handleError(_0x1eebcf,null));};exports[_0xdf3c('0x54')]=function(_0x34000c,_0x4be79a,_0x3febac){var _0x2cb0f5;return db[_0xdf3c('0x4a')][_0xdf3c('0x54')](_0x34000c[_0xdf3c('0x55')],{'raw':!![]})['then'](function(_0x18bf4f){_0x2cb0f5=_0x18bf4f;return db[_0xdf3c('0x4a')][_0xdf3c('0x4d')]({'raw':!![]});})[_0xdf3c('0x1e')](function(_0x1efa9c){var _0x50805c=fs[_0xdf3c('0x5c')](path[_0xdf3c('0x5d')](config[_0xdf3c('0x5e')],_0xdf3c('0x5f')),'utf8');var _0xb867a1=fs[_0xdf3c('0x5c')](path[_0xdf3c('0x5d')](config[_0xdf3c('0x5e')],_0xdf3c('0x60')),_0xdf3c('0x61'));var _0x19c851=ejs['render'](_0x50805c,{'trunks':_0x1efa9c||[]});fs[_0xdf3c('0x62')](_0xdf3c('0x63'),_0x19c851);if(_0x2cb0f5['registry']){var _0x52a2e1=ejs[_0xdf3c('0x64')](_0xb867a1,{'trunks':_0x1efa9c||[]});fs[_0xdf3c('0x62')](_0xdf3c('0x65'),_0x52a2e1);}})[_0xdf3c('0x1e')](function(){return respondWithRpcPromise(_0xdf3c('0x66'),_0xdf3c('0x54'),{'module':_0xdf3c('0x67')});})[_0xdf3c('0x1e')](function(){var _0x5e6606=_0x34000c[_0xdf3c('0x56')][_0xdf3c('0x33')]({'plain':!![]});if(!_0x5e6606)throw new Error(_0xdf3c('0x57'));if(_0x5e6606['role']===_0xdf3c('0x56')){var _0x354ff4=_0x2cb0f5[_0xdf3c('0x33')]({'plain':!![]});return db['UserProfileSection'][_0xdf3c('0x4f')]({'where':{'name':_0xdf3c('0x59'),'userProfileId':_0x5e6606[_0xdf3c('0x68')]},'raw':!![]})[_0xdf3c('0x1e')](function(_0xe01538){if(_0xe01538&&_0xe01538[_0xdf3c('0x69')]===0x0){return db['UserProfileResource']['create']({'name':_0x354ff4['name'],'resourceId':_0x354ff4['id'],'type':_0xe01538['name'],'sectionId':_0xe01538['id']},{})['then'](function(){return _0x2cb0f5;});}else{return _0x2cb0f5;}})[_0xdf3c('0x28')](function(_0x3f43a0){logger[_0xdf3c('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3f43a0);throw _0x3f43a0;});}return _0x2cb0f5;})[_0xdf3c('0x1e')](respondWithResult(_0x4be79a,0xc9))[_0xdf3c('0x28')](handleError(_0x4be79a,null));};exports[_0xdf3c('0x32')]=function(_0x51e8c6,_0x591936,_0x233718){var _0x4e3517;return db[_0xdf3c('0x4a')]['find']({'where':{'id':_0x51e8c6[_0xdf3c('0x6a')]['id']}})[_0xdf3c('0x1e')](handleEntityNotFound(_0x591936,null))[_0xdf3c('0x1e')](saveUpdates(_0x51e8c6[_0xdf3c('0x55')],null))['then'](function(_0x5148f6){if(_0x5148f6){_0x4e3517=_0x5148f6;return db[_0xdf3c('0x4a')][_0xdf3c('0x4d')]({'raw':!![]});}})[_0xdf3c('0x1e')](function(_0x12a7b0){if(_0x12a7b0){var _0x39d9f0=fs[_0xdf3c('0x5c')](path['join'](config[_0xdf3c('0x5e')],'server/files/templates/trunk.ejs'),_0xdf3c('0x61'));var _0x9c761a=fs[_0xdf3c('0x5c')](path[_0xdf3c('0x5d')](config[_0xdf3c('0x5e')],'server/files/templates/registry.ejs'),_0xdf3c('0x61'));var _0x5c27cc=ejs[_0xdf3c('0x64')](_0x39d9f0,{'trunks':_0x12a7b0||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_trunks.conf',_0x5c27cc);var _0x53b0c3=ejs['render'](_0x9c761a,{'trunks':_0x12a7b0||[]});fs[_0xdf3c('0x62')](_0xdf3c('0x65'),_0x53b0c3);return respondWithRpcPromise(_0xdf3c('0x66'),_0xdf3c('0x32'),{'module':_0xdf3c('0x67')});}return null;})[_0xdf3c('0x1e')](function(_0x5c8e5e){if(_0x5c8e5e){return _0x4e3517;}})[_0xdf3c('0x1e')](respondWithResult(_0x591936,null))['catch'](handleError(_0x591936,null));};exports[_0xdf3c('0x35')]=function(_0x389708,_0x2e5f82,_0x15a057){var _0x320452;return db[_0xdf3c('0x4a')][_0xdf3c('0x4f')]({'where':{'id':_0x389708[_0xdf3c('0x6a')]['id']}})[_0xdf3c('0x1e')](handleEntityNotFound(_0x2e5f82,null))[_0xdf3c('0x1e')](removeEntity(_0x2e5f82,null))[_0xdf3c('0x1e')](function(){return db[_0xdf3c('0x4a')][_0xdf3c('0x4d')]({'raw':!![]});})[_0xdf3c('0x1e')](function(_0x55fd73){var _0x118ab5=fs[_0xdf3c('0x5c')](path[_0xdf3c('0x5d')](config[_0xdf3c('0x5e')],'server/files/templates/trunk.ejs'),_0xdf3c('0x61'));var _0x1c8fe4=fs['readFileSync'](path['join'](config[_0xdf3c('0x5e')],_0xdf3c('0x60')),_0xdf3c('0x61'));var _0x1aaf8b=ejs[_0xdf3c('0x64')](_0x118ab5,{'trunks':_0x55fd73});var _0x56fc77=ejs[_0xdf3c('0x64')](_0x1c8fe4,{'trunks':_0x55fd73});fs[_0xdf3c('0x62')](_0xdf3c('0x63'),_0x1aaf8b);fs[_0xdf3c('0x62')](_0xdf3c('0x65'),_0x56fc77);return respondWithRpcPromise(_0xdf3c('0x66'),'destroy',{'module':_0xdf3c('0x67')});})[_0xdf3c('0x28')](handleError(_0x2e5f82,null));};
\ No newline at end of file
+var _0xedd9=['body','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','autoAssociation','create','readFileSync','join','root','utf8','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','server/files/templates/trunk.ejs','server/files/templates/registry.ejs','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','Trunk,\x20%s,\x20%s','status','end','offset','undefined','count','set','Content-Range','json','apply','reject','save','update','destroy','get','Trunks','UserProfileResource','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','limit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','Trunk','findAll','rows','show','params','length','find','omit'];(function(_0x1244c7,_0x205b94){var _0x269689=function(_0x1307d6){while(--_0x1307d6){_0x1244c7['push'](_0x1244c7['shift']());}};_0x269689(++_0x205b94);}(_0xedd9,0xfc));var _0x9edd=function(_0x5d26b0,_0x3d9a16){_0x5d26b0=_0x5d26b0-0x0;var _0x12d2ca=_0xedd9[_0x5d26b0];return _0x12d2ca;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9edd('0x0'));var zipdir=require(_0x9edd('0x1'));var jsonpatch=require(_0x9edd('0x2'));var rp=require(_0x9edd('0x3'));var moment=require(_0x9edd('0x4'));var BPromise=require(_0x9edd('0x5'));var Mustache=require(_0x9edd('0x6'));var util=require(_0x9edd('0x7'));var path=require('path');var sox=require(_0x9edd('0x8'));var csv=require(_0x9edd('0x9'));var ejs=require(_0x9edd('0xa'));var fs=require('fs');var fs_extra=require(_0x9edd('0xb'));var _=require('lodash');var squel=require(_0x9edd('0xc'));var crypto=require('crypto');var jsforce=require(_0x9edd('0xd'));var deskjs=require(_0x9edd('0xe'));var toCsv=require(_0x9edd('0x9'));var querystring=require(_0x9edd('0xf'));var Papa=require('papaparse');var Redis=require(_0x9edd('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9edd('0x11'));var as=require(_0x9edd('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9edd('0x13'))(_0x9edd('0x14'));var utils=require('../../config/utils');var config=require(_0x9edd('0x15'));var licenseUtil=require(_0x9edd('0x16'));var db=require(_0x9edd('0x17'))['db'];var jayson=require(_0x9edd('0x18'));var client=jayson[_0x9edd('0x19')][_0x9edd('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0xfca576,_0xef5498,_0x47eb64,_0x176bfa){return new BPromise(function(_0x44fc7c,_0x891832){var _0x4d9a7=_0x176bfa||client;return _0x4d9a7[_0x9edd('0x1b')](_0xfca576,_0x47eb64)[_0x9edd('0x1c')](function(_0x1042aa){logger[_0x9edd('0x1d')]('Trunk,\x20%s,\x20%s',_0xef5498,_0x9edd('0x1e'));logger[_0x9edd('0x1f')](_0x9edd('0x20'),_0xef5498,'request\x20sent',JSON[_0x9edd('0x21')](_0x1042aa));if(_0x1042aa[_0x9edd('0x22')]){if(_0x1042aa[_0x9edd('0x22')]['code']===0x1f4){logger[_0x9edd('0x22')]('Trunk,\x20%s,\x20%s',_0xef5498,_0x1042aa[_0x9edd('0x22')][_0x9edd('0x23')]);return _0x891832(_0x1042aa['error']['message']);}logger[_0x9edd('0x22')]('Trunk,\x20%s,\x20%s',_0xef5498,_0x1042aa[_0x9edd('0x22')]['message']);return _0x44fc7c(_0x1042aa['error'][_0x9edd('0x23')]);}else{logger[_0x9edd('0x1d')]('Trunk,\x20%s,\x20%s',_0xef5498,'request\x20sent');_0x44fc7c(_0x1042aa[_0x9edd('0x24')][_0x9edd('0x23')]);}})[_0x9edd('0x25')](function(_0x542172){logger[_0x9edd('0x22')](_0x9edd('0x26'),_0xef5498,_0x542172);_0x891832(_0x542172);});});}function respondWithStatusCode(_0x44a6c1,_0x2ca65f){_0x2ca65f=_0x2ca65f||0xcc;return function(_0x339a0d){if(_0x339a0d){return _0x44a6c1['sendStatus'](_0x2ca65f);}return _0x44a6c1[_0x9edd('0x27')](_0x2ca65f)[_0x9edd('0x28')]();};}function respondWithResult(_0x3a1ea5,_0x2f9f86){_0x2f9f86=_0x2f9f86||0xc8;return function(_0x310a4d){if(_0x310a4d){return _0x3a1ea5['status'](_0x2f9f86)['json'](_0x310a4d);}};}function respondWithFilteredResult(_0x3276ee,_0xfeca7b){return function(_0x8d67aa){if(_0x8d67aa){var _0x25e135=typeof _0xfeca7b[_0x9edd('0x29')]==='undefined'&&typeof _0xfeca7b['limit']===_0x9edd('0x2a');var _0x257a26=_0x8d67aa[_0x9edd('0x2b')];var _0x52746a=_0x25e135?0x0:_0xfeca7b[_0x9edd('0x29')];var _0x28cfae=_0x25e135?_0x8d67aa[_0x9edd('0x2b')]:_0xfeca7b[_0x9edd('0x29')]+_0xfeca7b['limit'];var _0x2155a1;if(_0x28cfae>=_0x257a26){_0x28cfae=_0x257a26;_0x2155a1=0xc8;}else{_0x2155a1=0xce;}_0x3276ee[_0x9edd('0x27')](_0x2155a1);return _0x3276ee[_0x9edd('0x2c')](_0x9edd('0x2d'),_0x52746a+'-'+_0x28cfae+'/'+_0x257a26)[_0x9edd('0x2e')](_0x8d67aa);}return null;};}function patchUpdates(_0x42e664){return function(_0x209aba){try{jsonpatch[_0x9edd('0x2f')](_0x209aba,_0x42e664,!![]);}catch(_0x19b6c1){return BPromise[_0x9edd('0x30')](_0x19b6c1);}return _0x209aba[_0x9edd('0x31')]();};}function saveUpdates(_0x138002,_0x6907a5){return function(_0xa55906){if(_0xa55906){return _0xa55906[_0x9edd('0x32')](_0x138002)['then'](function(_0x1453d2){return _0x1453d2;});}return null;};}function removeEntity(_0x259259,_0x267c74){return function(_0x5d1707){if(_0x5d1707){return _0x5d1707[_0x9edd('0x33')]()[_0x9edd('0x1c')](function(){var _0xde9b13=_0x5d1707[_0x9edd('0x34')]({'plain':!![]});var _0x21bc30=_0x9edd('0x35');return db[_0x9edd('0x36')][_0x9edd('0x33')]({'where':{'type':_0x21bc30,'resourceId':_0xde9b13['id']}})[_0x9edd('0x1c')](function(){return _0x5d1707;});})[_0x9edd('0x1c')](function(){_0x259259[_0x9edd('0x27')](0xcc)[_0x9edd('0x28')]();});}};}function handleEntityNotFound(_0x27eb7e,_0x14f780){return function(_0x5757fc){if(!_0x5757fc){_0x27eb7e[_0x9edd('0x37')](0x194);}return _0x5757fc;};}function handleError(_0x5ed62d,_0x968303){_0x968303=_0x968303||0x1f4;return function(_0x148630){logger[_0x9edd('0x22')](_0x148630[_0x9edd('0x38')]);if(_0x148630[_0x9edd('0x39')]){delete _0x148630['name'];}_0x5ed62d[_0x9edd('0x27')](_0x968303)[_0x9edd('0x3a')](_0x148630);};}exports[_0x9edd('0x3b')]=function(_0x38e9be,_0x1be77f){var _0x337e6c={},_0x5c0627={},_0x1cbbac={'count':0x0,'rows':[]};var _0x1ccee8=_[_0x9edd('0x3c')](db['Trunk'][_0x9edd('0x3d')],function(_0x56a228){return{'name':_0x56a228[_0x9edd('0x3e')],'type':_0x56a228['type'][_0x9edd('0x3f')]};});_0x5c0627[_0x9edd('0x40')]=_[_0x9edd('0x3c')](_0x1ccee8,'name');_0x5c0627[_0x9edd('0x41')]=_[_0x9edd('0x42')](_0x38e9be[_0x9edd('0x41')]);_0x5c0627['filters']=_[_0x9edd('0x43')](_0x5c0627['model'],_0x5c0627[_0x9edd('0x41')]);_0x337e6c[_0x9edd('0x44')]=_['intersection'](_0x5c0627[_0x9edd('0x40')],qs[_0x9edd('0x45')](_0x38e9be[_0x9edd('0x41')][_0x9edd('0x45')]));_0x337e6c['attributes']=_0x337e6c[_0x9edd('0x44')]['length']?_0x337e6c[_0x9edd('0x44')]:_0x5c0627[_0x9edd('0x40')];if(!_0x38e9be['query'][_0x9edd('0x46')]('nolimit')){_0x337e6c['limit']=qs[_0x9edd('0x47')](_0x38e9be[_0x9edd('0x41')][_0x9edd('0x47')]);_0x337e6c[_0x9edd('0x29')]=qs[_0x9edd('0x29')](_0x38e9be[_0x9edd('0x41')][_0x9edd('0x29')]);}_0x337e6c[_0x9edd('0x48')]=qs[_0x9edd('0x49')](_0x38e9be[_0x9edd('0x41')][_0x9edd('0x49')]);_0x337e6c[_0x9edd('0x4a')]=qs[_0x9edd('0x4b')](_[_0x9edd('0x4c')](_0x38e9be[_0x9edd('0x41')],_0x5c0627['filters']),_0x1ccee8);if(_0x38e9be[_0x9edd('0x41')][_0x9edd('0x4d')]){_0x337e6c[_0x9edd('0x4a')]=_[_0x9edd('0x4e')](_0x337e6c[_0x9edd('0x4a')],{'$or':_[_0x9edd('0x3c')](_0x1ccee8,function(_0x10d41e){if(_0x10d41e['type']!=='VIRTUAL'){var _0x4bc7a1={};_0x4bc7a1[_0x10d41e[_0x9edd('0x39')]]={'$like':'%'+_0x38e9be['query'][_0x9edd('0x4d')]+'%'};return _0x4bc7a1;}})});}_0x337e6c=_[_0x9edd('0x4e')]({},_0x337e6c,_0x38e9be[_0x9edd('0x4f')]);var _0x8db801={'where':_0x337e6c[_0x9edd('0x4a')]};return db['Trunk'][_0x9edd('0x2b')](_0x8db801)[_0x9edd('0x1c')](function(_0x40e33d){_0x1cbbac['count']=_0x40e33d;if(_0x38e9be[_0x9edd('0x41')][_0x9edd('0x50')]){_0x337e6c[_0x9edd('0x51')]=[{'all':!![]}];}return db[_0x9edd('0x52')][_0x9edd('0x53')](_0x337e6c);})[_0x9edd('0x1c')](function(_0x4d4f33){_0x1cbbac[_0x9edd('0x54')]=_0x4d4f33;return _0x1cbbac;})[_0x9edd('0x1c')](respondWithFilteredResult(_0x1be77f,_0x337e6c))['catch'](handleError(_0x1be77f,null));};exports[_0x9edd('0x55')]=function(_0x8d8701,_0x4bb324){var _0x2bd089={'raw':![],'where':{'id':_0x8d8701[_0x9edd('0x56')]['id']}},_0x8134cd={};_0x8134cd['model']=_[_0x9edd('0x42')](db[_0x9edd('0x52')][_0x9edd('0x3d')]);_0x8134cd[_0x9edd('0x41')]=_['keys'](_0x8d8701[_0x9edd('0x41')]);_0x8134cd[_0x9edd('0x4b')]=_[_0x9edd('0x43')](_0x8134cd['model'],_0x8134cd[_0x9edd('0x41')]);_0x2bd089[_0x9edd('0x44')]=_['intersection'](_0x8134cd[_0x9edd('0x40')],qs['fields'](_0x8d8701[_0x9edd('0x41')][_0x9edd('0x45')]));_0x2bd089[_0x9edd('0x44')]=_0x2bd089[_0x9edd('0x44')][_0x9edd('0x57')]?_0x2bd089[_0x9edd('0x44')]:_0x8134cd[_0x9edd('0x40')];if(_0x8d8701[_0x9edd('0x41')][_0x9edd('0x50')]){_0x2bd089[_0x9edd('0x51')]=[{'all':!![]}];}_0x2bd089=_[_0x9edd('0x4e')]({},_0x2bd089,_0x8d8701['options']);return db[_0x9edd('0x52')][_0x9edd('0x58')](_0x2bd089)[_0x9edd('0x1c')](handleEntityNotFound(_0x4bb324,null))['then'](respondWithResult(_0x4bb324,null))[_0x9edd('0x25')](handleError(_0x4bb324,null));};exports['clone']=function(_0x54d83d,_0x54ecfa){var _0x1348a7={'where':{'id':_0x54d83d[_0x9edd('0x56')]['id']}},_0x45f47c={};_0x45f47c[_0x9edd('0x40')]=_['keys'](db['Trunk']['rawAttributes']);_0x1348a7[_0x9edd('0x44')]=_[_0x9edd('0x43')](_0x45f47c[_0x9edd('0x40')],qs[_0x9edd('0x45')](_0x54d83d[_0x9edd('0x41')][_0x9edd('0x45')]));_0x1348a7[_0x9edd('0x44')]=_0x1348a7[_0x9edd('0x44')]['length']?_0x1348a7[_0x9edd('0x44')]:_0x45f47c['model'];if(_0x54d83d[_0x9edd('0x41')][_0x9edd('0x50')]){_0x1348a7['include']=[{'all':!![]}];}_0x1348a7=_[_0x9edd('0x4e')]({},_0x1348a7,_0x54d83d[_0x9edd('0x4f')]);return db[_0x9edd('0x52')]['find'](_0x1348a7)[_0x9edd('0x1c')](handleEntityNotFound(_0x54ecfa,null))[_0x9edd('0x1c')](function(_0x430eb4){if(_0x430eb4){var _0x15ebfa=_0x430eb4[_0x9edd('0x34')]({'plain':!![]});_0x15ebfa=qs[_0x9edd('0x59')](_0x15ebfa,['id','createdAt','updatedAt']);_0x54d83d[_0x9edd('0x5a')]=_['omit'](_0x54d83d[_0x9edd('0x5a')],['id',_0x9edd('0x5b'),_0x9edd('0x5c')]);return db[_0x9edd('0x52')]['create'](_[_0x9edd('0x4e')](_0x15ebfa,_0x54d83d['body']),{'include':_0x54d83d[_0x9edd('0x41')][_0x9edd('0x50')]?[{'all':!![]}]:undefined})[_0x9edd('0x1c')](function(_0x5ca123){var _0x2651a2=_0x54d83d['user'][_0x9edd('0x34')]({'plain':!![]});if(!_0x2651a2)throw new Error(_0x9edd('0x5d'));if(_0x2651a2['role']===_0x9edd('0x5e')){var _0x4a72d0=_0x5ca123[_0x9edd('0x34')]({'plain':!![]});var _0x134c9c=_0x9edd('0x35');return db['UserProfileSection'][_0x9edd('0x58')]({'where':{'name':_0x134c9c,'userProfileId':_0x2651a2[_0x9edd('0x5f')]},'raw':!![]})[_0x9edd('0x1c')](function(_0x2015fc){if(_0x2015fc&&_0x2015fc[_0x9edd('0x60')]===0x0){return db['UserProfileResource']['create']({'name':_0x4a72d0[_0x9edd('0x39')],'resourceId':_0x4a72d0['id'],'type':_0x2015fc[_0x9edd('0x39')],'sectionId':_0x2015fc['id']},{})['then'](function(){return _0x5ca123;});}else{return _0x5ca123;}})['catch'](function(_0x52afd7){logger[_0x9edd('0x22')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x52afd7);throw _0x52afd7;});}return _0x5ca123;});}})['then'](respondWithResult(_0x54ecfa,0xc9))[_0x9edd('0x25')](handleError(_0x54ecfa,null));};exports[_0x9edd('0x61')]=function(_0x589348,_0xb9ebeb,_0x11e082){var _0x34dff5;return db['Trunk'][_0x9edd('0x61')](_0x589348['body'],{'raw':!![]})[_0x9edd('0x1c')](function(_0x18d1a0){_0x34dff5=_0x18d1a0;return db['Trunk'][_0x9edd('0x53')]({'raw':!![]});})[_0x9edd('0x1c')](function(_0x5c1746){var _0x2bd6d1=fs[_0x9edd('0x62')](path[_0x9edd('0x63')](config[_0x9edd('0x64')],'server/files/templates/trunk.ejs'),_0x9edd('0x65'));var _0x58330c=fs[_0x9edd('0x62')](path[_0x9edd('0x63')](config[_0x9edd('0x64')],'server/files/templates/registry.ejs'),_0x9edd('0x65'));var _0x286593=ejs[_0x9edd('0x66')](_0x2bd6d1,{'trunks':_0x5c1746||[]});fs[_0x9edd('0x67')](_0x9edd('0x68'),_0x286593);if(_0x34dff5[_0x9edd('0x69')]){var _0x3fa4a9=ejs['render'](_0x58330c,{'trunks':_0x5c1746||[]});fs['writeFileSync'](_0x9edd('0x6a'),_0x3fa4a9);}})[_0x9edd('0x1c')](function(){return respondWithRpcPromise(_0x9edd('0x6b'),_0x9edd('0x61'),{'module':_0x9edd('0x6c')});})['then'](function(){var _0x2e40c8=_0x589348[_0x9edd('0x5e')][_0x9edd('0x34')]({'plain':!![]});if(!_0x2e40c8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2e40c8[_0x9edd('0x6d')]===_0x9edd('0x5e')){var _0x4b1c12=_0x34dff5[_0x9edd('0x34')]({'plain':!![]});return db[_0x9edd('0x6e')]['find']({'where':{'name':_0x9edd('0x35'),'userProfileId':_0x2e40c8[_0x9edd('0x5f')]},'raw':!![]})['then'](function(_0x3f08ac){if(_0x3f08ac&&_0x3f08ac['autoAssociation']===0x0){return db['UserProfileResource'][_0x9edd('0x61')]({'name':_0x4b1c12[_0x9edd('0x39')],'resourceId':_0x4b1c12['id'],'type':_0x3f08ac[_0x9edd('0x39')],'sectionId':_0x3f08ac['id']},{})['then'](function(){return _0x34dff5;});}else{return _0x34dff5;}})[_0x9edd('0x25')](function(_0x286e47){logger['error'](_0x9edd('0x6f'),_0x286e47);throw _0x286e47;});}return _0x34dff5;})[_0x9edd('0x1c')](respondWithResult(_0xb9ebeb,0xc9))[_0x9edd('0x25')](handleError(_0xb9ebeb,null));};exports[_0x9edd('0x32')]=function(_0x54ac71,_0x5e68db,_0x1129b7){var _0x5bb28c;return db[_0x9edd('0x52')][_0x9edd('0x58')]({'where':{'id':_0x54ac71[_0x9edd('0x56')]['id']}})[_0x9edd('0x1c')](handleEntityNotFound(_0x5e68db,null))[_0x9edd('0x1c')](saveUpdates(_0x54ac71[_0x9edd('0x5a')],null))[_0x9edd('0x1c')](function(_0x5a4d4b){if(_0x5a4d4b){_0x5bb28c=_0x5a4d4b;return db[_0x9edd('0x52')]['findAll']({'raw':!![]});}})[_0x9edd('0x1c')](function(_0x3c4db7){if(_0x3c4db7){var _0x2c7562=fs[_0x9edd('0x62')](path[_0x9edd('0x63')](config[_0x9edd('0x64')],_0x9edd('0x70')),'utf8');var _0x25e3e7=fs[_0x9edd('0x62')](path['join'](config[_0x9edd('0x64')],_0x9edd('0x71')),'utf8');var _0x304e56=ejs[_0x9edd('0x66')](_0x2c7562,{'trunks':_0x3c4db7||[]});fs[_0x9edd('0x67')]('/etc/asterisk/sip_xcally_trunks.conf',_0x304e56);var _0x41cd76=ejs[_0x9edd('0x66')](_0x25e3e7,{'trunks':_0x3c4db7||[]});fs[_0x9edd('0x67')]('/etc/asterisk/sip_xcally_registers.conf',_0x41cd76);return respondWithRpcPromise('Reload','update',{'module':'chan_sip.so'});}return null;})[_0x9edd('0x1c')](function(_0x1a6d3d){if(_0x1a6d3d){return _0x5bb28c;}})[_0x9edd('0x1c')](respondWithResult(_0x5e68db,null))['catch'](handleError(_0x5e68db,null));};exports['destroy']=function(_0x49dc1d,_0x56d794,_0x388252){var _0x20762d;return db[_0x9edd('0x52')][_0x9edd('0x58')]({'where':{'id':_0x49dc1d[_0x9edd('0x56')]['id']}})[_0x9edd('0x1c')](handleEntityNotFound(_0x56d794,null))[_0x9edd('0x1c')](removeEntity(_0x56d794,null))[_0x9edd('0x1c')](function(){return db[_0x9edd('0x52')][_0x9edd('0x53')]({'raw':!![]});})[_0x9edd('0x1c')](function(_0x4cfa99){var _0x367fc6=fs[_0x9edd('0x62')](path[_0x9edd('0x63')](config[_0x9edd('0x64')],_0x9edd('0x70')),_0x9edd('0x65'));var _0x3d4890=fs[_0x9edd('0x62')](path['join'](config['root'],_0x9edd('0x71')),'utf8');var _0x35950b=ejs['render'](_0x367fc6,{'trunks':_0x4cfa99});var _0x21c35f=ejs[_0x9edd('0x66')](_0x3d4890,{'trunks':_0x4cfa99});fs['writeFileSync'](_0x9edd('0x68'),_0x35950b);fs[_0x9edd('0x67')]('/etc/asterisk/sip_xcally_registers.conf',_0x21c35f);return respondWithRpcPromise(_0x9edd('0x6b'),_0x9edd('0x33'),{'module':_0x9edd('0x6c')});})[_0x9edd('0x25')](handleError(_0x56d794,null));};
\ No newline at end of file
index bbb66e5..a407424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d09=['tools_trunks','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./trunk.attributes','define','Trunk'];(function(_0x432467,_0x41c621){var _0x340ee1=function(_0x4582d1){while(--_0x4582d1){_0x432467['push'](_0x432467['shift']());}};_0x340ee1(++_0x41c621);}(_0x9d09,0x69));var _0x99d0=function(_0x54febf,_0x271ed3){_0x54febf=_0x54febf-0x0;var _0x135916=_0x9d09[_0x54febf];return _0x135916;};'use strict';var _=require(_0x99d0('0x0'));var util=require(_0x99d0('0x1'));var logger=require('../../config/logger')(_0x99d0('0x2'));var moment=require(_0x99d0('0x3'));var BPromise=require(_0x99d0('0x4'));var rp=require(_0x99d0('0x5'));var fs=require('fs');var path=require(_0x99d0('0x6'));var rimraf=require(_0x99d0('0x7'));var config=require(_0x99d0('0x8'));var attributes=require(_0x99d0('0x9'));module['exports']=function(_0x26a882,_0x508ee7){return _0x26a882[_0x99d0('0xa')](_0x99d0('0xb'),attributes,{'tableName':_0x99d0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x015c=['exports','tools_trunks','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./trunk.attributes'];(function(_0x54dd2a,_0x1ffe91){var _0x413531=function(_0x5e9765){while(--_0x5e9765){_0x54dd2a['push'](_0x54dd2a['shift']());}};_0x413531(++_0x1ffe91);}(_0x015c,0x9c));var _0xc015=function(_0x5dd0f7,_0x1f2b48){_0x5dd0f7=_0x5dd0f7-0x0;var _0x4844c7=_0x015c[_0x5dd0f7];return _0x4844c7;};'use strict';var _=require(_0xc015('0x0'));var util=require(_0xc015('0x1'));var logger=require(_0xc015('0x2'))('api');var moment=require(_0xc015('0x3'));var BPromise=require(_0xc015('0x4'));var rp=require(_0xc015('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc015('0x6'));var config=require(_0xc015('0x7'));var attributes=require(_0xc015('0x8'));module[_0xc015('0x9')]=function(_0xab12b8,_0x128188){return _0xab12b8['define']('Trunk',attributes,{'tableName':_0xc015('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c795586..41c4ea9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a65=['GetTrunk','options','raw','where','attributes','limit','include','map','model','ShowTrunk','find','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch'];(function(_0x161c0c,_0xc28d7){var _0x14d763=function(_0x560e31){while(--_0x560e31){_0x161c0c['push'](_0x161c0c['shift']());}};_0x14d763(++_0xc28d7);}(_0x9a65,0x1cd));var _0x59a6=function(_0x209fcd,_0x1ecccc){_0x209fcd=_0x209fcd-0x0;var _0x501d5e=_0x9a65[_0x209fcd];return _0x501d5e;};'use strict';var _=require('lodash');var util=require(_0x59a6('0x0'));var moment=require(_0x59a6('0x1'));var BPromise=require(_0x59a6('0x2'));var rs=require(_0x59a6('0x3'));var fs=require('fs');var Redis=require(_0x59a6('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x59a6('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x59a6('0x6'));var jayson=require(_0x59a6('0x7'));var client=jayson[_0x59a6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2f035a,_0x3e152f,_0x431374){return new BPromise(function(_0x5f5150,_0x31a52f){return client['request'](_0x2f035a,_0x431374)[_0x59a6('0x9')](function(_0x435a4f){logger[_0x59a6('0xa')](_0x59a6('0xb'),_0x3e152f,_0x59a6('0xc'));logger[_0x59a6('0xd')]('Trunk,\x20%s,\x20%s,\x20%s',_0x3e152f,_0x59a6('0xc'),JSON[_0x59a6('0xe')](_0x435a4f));if(_0x435a4f[_0x59a6('0xf')]){if(_0x435a4f[_0x59a6('0xf')][_0x59a6('0x10')]===0x1f4){logger[_0x59a6('0xf')]('Trunk,\x20%s,\x20%s',_0x3e152f,_0x435a4f[_0x59a6('0xf')][_0x59a6('0x11')]);return _0x31a52f(_0x435a4f['error']['message']);}logger[_0x59a6('0xf')](_0x59a6('0xb'),_0x3e152f,_0x435a4f[_0x59a6('0xf')][_0x59a6('0x11')]);return _0x5f5150(_0x435a4f[_0x59a6('0xf')][_0x59a6('0x11')]);}else{logger['info'](_0x59a6('0xb'),_0x3e152f,'request\x20sent');_0x5f5150(_0x435a4f['result'][_0x59a6('0x11')]);}})[_0x59a6('0x12')](function(_0x5512cc){logger['error'](_0x59a6('0xb'),_0x3e152f,_0x5512cc);_0x31a52f(_0x5512cc);});});}exports[_0x59a6('0x13')]=function(_0x3c47f9){var _0x2ca39b=this;return new Promise(function(_0x3e0852,_0x234c42){return db['Trunk']['findAll']({'raw':_0x3c47f9['options']?_0x3c47f9[_0x59a6('0x14')][_0x59a6('0x15')]===undefined?!![]:![]:!![],'where':_0x3c47f9[_0x59a6('0x14')]?_0x3c47f9[_0x59a6('0x14')][_0x59a6('0x16')]||null:null,'attributes':_0x3c47f9[_0x59a6('0x14')]?_0x3c47f9['options'][_0x59a6('0x17')]||null:null,'limit':_0x3c47f9[_0x59a6('0x14')]?_0x3c47f9['options'][_0x59a6('0x18')]||null:null,'include':_0x3c47f9['options']?_0x3c47f9[_0x59a6('0x14')][_0x59a6('0x19')]?_[_0x59a6('0x1a')](_0x3c47f9['options'][_0x59a6('0x19')],function(_0x91405c){return{'model':db[_0x91405c[_0x59a6('0x1b')]],'as':_0x91405c['as'],'attributes':_0x91405c[_0x59a6('0x17')],'include':_0x91405c[_0x59a6('0x19')]?_[_0x59a6('0x1a')](_0x91405c[_0x59a6('0x19')],function(_0x3dc193){return{'model':db[_0x3dc193[_0x59a6('0x1b')]],'as':_0x3dc193['as'],'attributes':_0x3dc193[_0x59a6('0x17')],'include':_0x3dc193[_0x59a6('0x19')]?_[_0x59a6('0x1a')](_0x3dc193[_0x59a6('0x19')],function(_0x595418){return{'model':db[_0x595418[_0x59a6('0x1b')]],'as':_0x595418['as'],'attributes':_0x595418[_0x59a6('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x57d1b6){logger['info'](_0x59a6('0x13'),_0x3c47f9);logger[_0x59a6('0xd')](_0x59a6('0x13'),_0x3c47f9,JSON[_0x59a6('0xe')](_0x57d1b6));_0x3e0852(_0x57d1b6);})[_0x59a6('0x12')](function(_0x439acb){logger['error']('GetTrunk',_0x439acb[_0x59a6('0x11')],_0x3c47f9);_0x234c42(_0x2ca39b[_0x59a6('0xf')](0x1f4,_0x439acb[_0x59a6('0x11')]));});});};exports[_0x59a6('0x1c')]=function(_0x2d9747){var _0x5b4d30=this;return new Promise(function(_0x38ecc5,_0x1a028e){return db['Trunk'][_0x59a6('0x1d')]({'raw':_0x2d9747[_0x59a6('0x14')]?_0x2d9747[_0x59a6('0x14')][_0x59a6('0x15')]===undefined?!![]:![]:!![],'where':_0x2d9747[_0x59a6('0x14')]?_0x2d9747[_0x59a6('0x14')][_0x59a6('0x16')]||null:null,'attributes':_0x2d9747[_0x59a6('0x14')]?_0x2d9747[_0x59a6('0x14')][_0x59a6('0x17')]||null:null,'include':_0x2d9747['options']?_0x2d9747[_0x59a6('0x14')][_0x59a6('0x19')]?_[_0x59a6('0x1a')](_0x2d9747[_0x59a6('0x14')][_0x59a6('0x19')],function(_0x56f3fc){return{'model':db[_0x56f3fc[_0x59a6('0x1b')]],'as':_0x56f3fc['as'],'attributes':_0x56f3fc['attributes'],'include':_0x56f3fc[_0x59a6('0x19')]?_[_0x59a6('0x1a')](_0x56f3fc['include'],function(_0x79bdca){return{'model':db[_0x79bdca['model']],'as':_0x79bdca['as'],'attributes':_0x79bdca[_0x59a6('0x17')],'include':_0x79bdca[_0x59a6('0x19')]?_[_0x59a6('0x1a')](_0x79bdca[_0x59a6('0x19')],function(_0x59f898){return{'model':db[_0x59f898[_0x59a6('0x1b')]],'as':_0x59f898['as'],'attributes':_0x59f898['attributes']};}):[]};}):[]};}):[]:[]})[_0x59a6('0x9')](function(_0x4d91f6){logger[_0x59a6('0xa')](_0x59a6('0x1c'),_0x2d9747);logger['debug'](_0x59a6('0x1c'),_0x2d9747,JSON[_0x59a6('0xe')](_0x4d91f6));_0x38ecc5(_0x4d91f6);})[_0x59a6('0x12')](function(_0x24d3da){logger[_0x59a6('0xf')](_0x59a6('0x1c'),_0x24d3da['message'],_0x2d9747);_0x1a028e(_0x5b4d30[_0x59a6('0xf')](0x1f4,_0x24d3da['message']));});});};
\ No newline at end of file
+var _0x58ad=['code','message','catch','GetTrunk','Trunk','options','where','limit','include','map','model','attributes','debug','ShowTrunk','raw','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Trunk,\x20%s,\x20%s','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x48807d,_0x12090a){var _0x25b121=function(_0x207527){while(--_0x207527){_0x48807d['push'](_0x48807d['shift']());}};_0x25b121(++_0x12090a);}(_0x58ad,0x78));var _0xd58a=function(_0x116f42,_0x52cc63){_0x116f42=_0x116f42-0x0;var _0x195375=_0x58ad[_0x116f42];return _0x195375;};'use strict';var _=require('lodash');var util=require(_0xd58a('0x0'));var moment=require(_0xd58a('0x1'));var BPromise=require(_0xd58a('0x2'));var rs=require(_0xd58a('0x3'));var fs=require('fs');var Redis=require(_0xd58a('0x4'));var db=require(_0xd58a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd58a('0x6'))(_0xd58a('0x7'));var config=require(_0xd58a('0x8'));var jayson=require(_0xd58a('0x9'));var client=jayson[_0xd58a('0xa')][_0xd58a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2f7726,_0x2e5bad,_0x484be9){return new BPromise(function(_0x184b01,_0x76a336){return client[_0xd58a('0xc')](_0x2f7726,_0x484be9)[_0xd58a('0xd')](function(_0x11c188){logger[_0xd58a('0xe')](_0xd58a('0xf'),_0x2e5bad,'request\x20sent');logger['debug'](_0xd58a('0x10'),_0x2e5bad,_0xd58a('0x11'),JSON[_0xd58a('0x12')](_0x11c188));if(_0x11c188[_0xd58a('0x13')]){if(_0x11c188[_0xd58a('0x13')][_0xd58a('0x14')]===0x1f4){logger[_0xd58a('0x13')](_0xd58a('0xf'),_0x2e5bad,_0x11c188[_0xd58a('0x13')]['message']);return _0x76a336(_0x11c188[_0xd58a('0x13')]['message']);}logger[_0xd58a('0x13')](_0xd58a('0xf'),_0x2e5bad,_0x11c188['error'][_0xd58a('0x15')]);return _0x184b01(_0x11c188['error'][_0xd58a('0x15')]);}else{logger[_0xd58a('0xe')](_0xd58a('0xf'),_0x2e5bad,'request\x20sent');_0x184b01(_0x11c188['result'][_0xd58a('0x15')]);}})[_0xd58a('0x16')](function(_0xe5db6e){logger['error'](_0xd58a('0xf'),_0x2e5bad,_0xe5db6e);_0x76a336(_0xe5db6e);});});}exports[_0xd58a('0x17')]=function(_0x314614){var _0x11a958=this;return new Promise(function(_0x31260e,_0x112b1e){return db[_0xd58a('0x18')]['findAll']({'raw':_0x314614[_0xd58a('0x19')]?_0x314614[_0xd58a('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x314614[_0xd58a('0x19')]?_0x314614[_0xd58a('0x19')][_0xd58a('0x1a')]||null:null,'attributes':_0x314614[_0xd58a('0x19')]?_0x314614[_0xd58a('0x19')]['attributes']||null:null,'limit':_0x314614['options']?_0x314614['options'][_0xd58a('0x1b')]||null:null,'include':_0x314614[_0xd58a('0x19')]?_0x314614[_0xd58a('0x19')][_0xd58a('0x1c')]?_[_0xd58a('0x1d')](_0x314614['options']['include'],function(_0x795cf6){return{'model':db[_0x795cf6[_0xd58a('0x1e')]],'as':_0x795cf6['as'],'attributes':_0x795cf6[_0xd58a('0x1f')],'include':_0x795cf6[_0xd58a('0x1c')]?_[_0xd58a('0x1d')](_0x795cf6['include'],function(_0x59adfb){return{'model':db[_0x59adfb['model']],'as':_0x59adfb['as'],'attributes':_0x59adfb['attributes'],'include':_0x59adfb[_0xd58a('0x1c')]?_[_0xd58a('0x1d')](_0x59adfb[_0xd58a('0x1c')],function(_0x17ab21){return{'model':db[_0x17ab21[_0xd58a('0x1e')]],'as':_0x17ab21['as'],'attributes':_0x17ab21['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0xff133f){logger[_0xd58a('0xe')]('GetTrunk',_0x314614);logger[_0xd58a('0x20')]('GetTrunk',_0x314614,JSON['stringify'](_0xff133f));_0x31260e(_0xff133f);})[_0xd58a('0x16')](function(_0x41dbb2){logger[_0xd58a('0x13')](_0xd58a('0x17'),_0x41dbb2[_0xd58a('0x15')],_0x314614);_0x112b1e(_0x11a958[_0xd58a('0x13')](0x1f4,_0x41dbb2[_0xd58a('0x15')]));});});};exports[_0xd58a('0x21')]=function(_0x5bada6){var _0x1119fa=this;return new Promise(function(_0x3c88df,_0x37e129){return db[_0xd58a('0x18')]['find']({'raw':_0x5bada6[_0xd58a('0x19')]?_0x5bada6[_0xd58a('0x19')][_0xd58a('0x22')]===undefined?!![]:![]:!![],'where':_0x5bada6[_0xd58a('0x19')]?_0x5bada6[_0xd58a('0x19')][_0xd58a('0x1a')]||null:null,'attributes':_0x5bada6[_0xd58a('0x19')]?_0x5bada6[_0xd58a('0x19')]['attributes']||null:null,'include':_0x5bada6[_0xd58a('0x19')]?_0x5bada6[_0xd58a('0x19')][_0xd58a('0x1c')]?_[_0xd58a('0x1d')](_0x5bada6['options'][_0xd58a('0x1c')],function(_0x4e87c6){return{'model':db[_0x4e87c6[_0xd58a('0x1e')]],'as':_0x4e87c6['as'],'attributes':_0x4e87c6['attributes'],'include':_0x4e87c6['include']?_['map'](_0x4e87c6['include'],function(_0x450b19){return{'model':db[_0x450b19[_0xd58a('0x1e')]],'as':_0x450b19['as'],'attributes':_0x450b19['attributes'],'include':_0x450b19[_0xd58a('0x1c')]?_[_0xd58a('0x1d')](_0x450b19[_0xd58a('0x1c')],function(_0x404802){return{'model':db[_0x404802[_0xd58a('0x1e')]],'as':_0x404802['as'],'attributes':_0x404802[_0xd58a('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xd58a('0xd')](function(_0x188573){logger['info']('ShowTrunk',_0x5bada6);logger[_0xd58a('0x20')]('ShowTrunk',_0x5bada6,JSON[_0xd58a('0x12')](_0x188573));_0x3c88df(_0x188573);})['catch'](function(_0xa260f1){logger[_0xd58a('0x13')](_0xd58a('0x21'),_0xa260f1[_0xd58a('0x15')],_0x5bada6);_0x37e129(_0x1119fa['error'](0x1f4,_0xa260f1[_0xd58a('0x15')]));});});};
\ No newline at end of file
index 8aa59c5..6e7a621 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdac0=['/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','getApiKey','post','create','/create_many','bulkCreate','/:id/queues','addQueues','diskStorage','join','root','server/files/images/','format','%s-%s','now','single','file','login','logout','pause','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','addWhatsappInteractions','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','/:id/whatsapp_accounts','addWhatsappAccounts','/:id/square_projects','addSquareProjects','put','update','changePassword','delete','removeQueues','removeTeams','removeChatInteractions','removeFaxInteractions','removeSmsInteractions','/:id/whatsapp_interactions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeApiKey','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/whoami','whoami','getPresence','/:id','show','getOpenTabs','getQueues','getVoiceQueuesRt','/:id/recordings','getRecordings','getScreenRecordings','getChatInteractions','getOpenchannelInteractions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','/:id/agents','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','/:id/mail_accounts','getMailAccounts'];(function(_0x425dc4,_0x175d99){var _0x1c9bf1=function(_0x54f02e){while(--_0x54f02e){_0x425dc4['push'](_0x425dc4['shift']());}};_0x1c9bf1(++_0x175d99);}(_0xdac0,0x17e));var _0x0dac=function(_0x42613f,_0x5a2454){_0x42613f=_0x42613f-0x0;var _0x650f3f=_0xdac0[_0x42613f];return _0x650f3f;};'use strict';var multer=require(_0x0dac('0x0'));var util=require(_0x0dac('0x1'));var path=require(_0x0dac('0x2'));var timeout=require(_0x0dac('0x3'));var express=require('express');var router=express[_0x0dac('0x4')]();var fs_extra=require(_0x0dac('0x5'));var auth=require(_0x0dac('0x6'));var interaction=require(_0x0dac('0x7'));var config=require('../../config/environment');var controller=require('./user.controller');router[_0x0dac('0x8')]('/',auth[_0x0dac('0x9')](),controller[_0x0dac('0xa')]);router[_0x0dac('0x8')](_0x0dac('0xb'),auth['isAuthenticated'](),controller[_0x0dac('0xc')]);router[_0x0dac('0x8')](_0x0dac('0xd'),auth[_0x0dac('0x9')](),controller[_0x0dac('0xe')]);router[_0x0dac('0x8')]('/presence',auth[_0x0dac('0x9')](),controller[_0x0dac('0xf')]);router[_0x0dac('0x8')](_0x0dac('0x10'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x11')]);router[_0x0dac('0x8')]('/:id/avatar',controller['getAvatar']);router[_0x0dac('0x8')]('/:id/open_tabs',auth['isAuthenticated'](),controller[_0x0dac('0x12')]);router['get']('/:id/contacts',auth[_0x0dac('0x9')](),controller['getContacts']);router['get']('/:id/queues',auth['isAuthenticated'](),controller[_0x0dac('0x13')]);router[_0x0dac('0x8')]('/:id/queues_rt',auth[_0x0dac('0x9')](),controller[_0x0dac('0x14')]);router[_0x0dac('0x8')]('/:id/groups',auth[_0x0dac('0x9')](),controller['getGroups']);router[_0x0dac('0x8')](_0x0dac('0x15'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x16')]);router[_0x0dac('0x8')]('/:id/screen_recordings',auth['isAuthenticated'](),controller[_0x0dac('0x17')]);router[_0x0dac('0x8')]('/:id/chat/interactions',auth['isAuthenticated'](),controller[_0x0dac('0x18')]);router[_0x0dac('0x8')]('/:id/openchannel/interactions',auth[_0x0dac('0x9')](),controller[_0x0dac('0x19')]);router['get']('/:id/mail/interactions',auth[_0x0dac('0x9')](),controller[_0x0dac('0x1a')]);router['get'](_0x0dac('0x1b'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x1c')]);router[_0x0dac('0x8')](_0x0dac('0x1d'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x1e')]);router[_0x0dac('0x8')](_0x0dac('0x1f'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x20')]);router[_0x0dac('0x8')](_0x0dac('0x21'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x22')]);router[_0x0dac('0x8')]('/:id/lists',auth[_0x0dac('0x9')](),controller['getLists']);router[_0x0dac('0x8')](_0x0dac('0x23'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x24')]);router[_0x0dac('0x8')](_0x0dac('0x25'),auth['isAuthenticated'](),controller[_0x0dac('0x26')]);router[_0x0dac('0x8')](_0x0dac('0x27'),auth[_0x0dac('0x9')](),controller['getFaxAccounts']);router[_0x0dac('0x8')](_0x0dac('0x28'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x29')]);router[_0x0dac('0x8')](_0x0dac('0x2a'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x2b')]);router['get'](_0x0dac('0x2c'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x2d')]);router[_0x0dac('0x8')](_0x0dac('0x2e'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x2f')]);router[_0x0dac('0x8')]('/:id/whatsapp_accounts',auth[_0x0dac('0x9')](),controller['getWhatsappAccounts']);router[_0x0dac('0x8')]('/:id/square_projects',auth[_0x0dac('0x9')](),controller['getSquareProjects']);router[_0x0dac('0x8')](_0x0dac('0x30'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x31')]);router[_0x0dac('0x8')](_0x0dac('0x32'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x33')]);router[_0x0dac('0x34')]('/:id/contacts',auth[_0x0dac('0x9')](),controller['addContacts']);router[_0x0dac('0x34')]('/',auth[_0x0dac('0x9')](),controller[_0x0dac('0x35')]);router[_0x0dac('0x34')](_0x0dac('0x36'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x37')]);router[_0x0dac('0x34')](_0x0dac('0x38'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x39')]);var upload=multer({'storage':multer[_0x0dac('0x3a')]({'destination':function(_0x25d802,_0x2347ca,_0x2c8249){_0x2c8249(null,path[_0x0dac('0x3b')](config[_0x0dac('0x3c')],_0x0dac('0x3d')));},'filename':function(_0x2d0cf6,_0x33b03c,_0x1caa70){_0x1caa70(null,util[_0x0dac('0x3e')](_0x0dac('0x3f'),Date[_0x0dac('0x40')](),_0x33b03c['originalname']));}})});router[_0x0dac('0x34')]('/:id/avatar',upload[_0x0dac('0x41')](_0x0dac('0x42')),controller['addAvatar']);router[_0x0dac('0x34')]('/:id/login',auth[_0x0dac('0x9')](),controller[_0x0dac('0x43')]);router[_0x0dac('0x34')]('/:id/logout',auth[_0x0dac('0x9')](),controller[_0x0dac('0x44')]);router[_0x0dac('0x34')]('/:id/pause',auth[_0x0dac('0x9')](),controller[_0x0dac('0x45')]);router['post']('/:id/unpause',auth[_0x0dac('0x9')](),controller['unpause']);router[_0x0dac('0x34')](_0x0dac('0x21'),auth[_0x0dac('0x9')](),controller['addTeams']);router['post'](_0x0dac('0x46'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x47')]);router['post'](_0x0dac('0x48'),auth[_0x0dac('0x9')](),controller['addMailInteractions']);router[_0x0dac('0x34')]('/:id/fax_interactions',auth[_0x0dac('0x9')](),controller[_0x0dac('0x49')]);router[_0x0dac('0x34')](_0x0dac('0x4a'),auth['isAuthenticated'](),controller[_0x0dac('0x4b')]);router[_0x0dac('0x34')](_0x0dac('0x4c'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x4d')]);router[_0x0dac('0x34')]('/:id/whatsapp_interactions',auth[_0x0dac('0x9')](),controller[_0x0dac('0x4e')]);router[_0x0dac('0x34')]('/:id/fax_accounts',auth[_0x0dac('0x9')](),controller['addFaxAccounts']);router[_0x0dac('0x34')](_0x0dac('0x28'),auth['isAuthenticated'](),controller[_0x0dac('0x4f')]);router[_0x0dac('0x34')](_0x0dac('0x2a'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x50')]);router[_0x0dac('0x34')]('/:id/sms_accounts',auth[_0x0dac('0x9')](),controller[_0x0dac('0x51')]);router[_0x0dac('0x34')](_0x0dac('0x2e'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x52')]);router[_0x0dac('0x34')](_0x0dac('0x53'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x54')]);router[_0x0dac('0x34')](_0x0dac('0x55'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x56')]);router['post'](_0x0dac('0x32'),auth[_0x0dac('0x9')](),controller['createApiKey']);router[_0x0dac('0x57')](_0x0dac('0x10'),auth['isAuthenticated'](),controller[_0x0dac('0x58')]);router['put']('/:id/password',auth[_0x0dac('0x9')](),controller[_0x0dac('0x59')]);router[_0x0dac('0x5a')](_0x0dac('0x38'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x5b')]);router[_0x0dac('0x5a')](_0x0dac('0x21'),auth['isAuthenticated'](),controller[_0x0dac('0x5c')]);router[_0x0dac('0x5a')](_0x0dac('0x10'),auth[_0x0dac('0x9')](),controller['destroy']);router[_0x0dac('0x5a')](_0x0dac('0x46'),auth['isAuthenticated'](),controller[_0x0dac('0x5d')]);router[_0x0dac('0x5a')](_0x0dac('0x48'),auth[_0x0dac('0x9')](),controller['removeMailInteractions']);router[_0x0dac('0x5a')]('/:id/fax_interactions',auth[_0x0dac('0x9')](),controller[_0x0dac('0x5e')]);router[_0x0dac('0x5a')](_0x0dac('0x4a'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x5f')]);router['delete'](_0x0dac('0x4c'),auth[_0x0dac('0x9')](),controller['removeOpenchannelInteractions']);router['delete'](_0x0dac('0x60'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x61')]);router[_0x0dac('0x5a')](_0x0dac('0x27'),auth['isAuthenticated'](),controller[_0x0dac('0x62')]);router[_0x0dac('0x5a')](_0x0dac('0x28'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x63')]);router[_0x0dac('0x5a')](_0x0dac('0x2a'),auth['isAuthenticated'](),controller[_0x0dac('0x64')]);router[_0x0dac('0x5a')]('/:id/sms_accounts',auth[_0x0dac('0x9')](),controller[_0x0dac('0x65')]);router['delete'](_0x0dac('0x2e'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x66')]);router[_0x0dac('0x5a')](_0x0dac('0x53'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x67')]);router[_0x0dac('0x5a')](_0x0dac('0x55'),auth['isAuthenticated'](),controller['removeSquareProjects']);router[_0x0dac('0x5a')](_0x0dac('0x32'),auth[_0x0dac('0x9')](),controller[_0x0dac('0x68')]);module[_0x0dac('0x69')]=router;
\ No newline at end of file
+var _0x8d05=['/presence','getPresence','/:id/avatar','getAvatar','/:id/open_tabs','/:id/contacts','getContacts','/:id/queues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','/:id/lists','getLists','/:id/agents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','post','addContacts','create','/create_many','addQueues','diskStorage','join','root','server/files/images/','%s-%s','now','originalname','single','addAvatar','/:id/login','/:id/logout','logout','/:id/unpause','unpause','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','addChatWebsites','/:id/square_projects','/:id/api_key','createApiKey','/:id','put','/:id/password','changePassword','delete','removeTeams','destroy','removeChatInteractions','removeMailInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','removeApiKey','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/whoami'];(function(_0x165cc3,_0x1b2d7d){var _0x2d5eea=function(_0x48bc18){while(--_0x48bc18){_0x165cc3['push'](_0x165cc3['shift']());}};_0x2d5eea(++_0x1b2d7d);}(_0x8d05,0x65));var _0x58d0=function(_0x196f89,_0xbec963){_0x196f89=_0x196f89-0x0;var _0x48cc99=_0x8d05[_0x196f89];return _0x48cc99;};'use strict';var multer=require('multer');var util=require(_0x58d0('0x0'));var path=require(_0x58d0('0x1'));var timeout=require(_0x58d0('0x2'));var express=require(_0x58d0('0x3'));var router=express['Router']();var fs_extra=require(_0x58d0('0x4'));var auth=require(_0x58d0('0x5'));var interaction=require(_0x58d0('0x6'));var config=require(_0x58d0('0x7'));var controller=require('./user.controller');router[_0x58d0('0x8')]('/',auth[_0x58d0('0x9')](),controller[_0x58d0('0xa')]);router[_0x58d0('0x8')](_0x58d0('0xb'),auth['isAuthenticated'](),controller[_0x58d0('0xc')]);router[_0x58d0('0x8')](_0x58d0('0xd'),auth[_0x58d0('0x9')](),controller['whoami']);router[_0x58d0('0x8')](_0x58d0('0xe'),auth[_0x58d0('0x9')](),controller[_0x58d0('0xf')]);router['get']('/:id',auth[_0x58d0('0x9')](),controller['show']);router['get'](_0x58d0('0x10'),controller[_0x58d0('0x11')]);router[_0x58d0('0x8')](_0x58d0('0x12'),auth[_0x58d0('0x9')](),controller['getOpenTabs']);router['get'](_0x58d0('0x13'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x14')]);router['get'](_0x58d0('0x15'),auth['isAuthenticated'](),controller['getQueues']);router[_0x58d0('0x8')](_0x58d0('0x16'),auth['isAuthenticated'](),controller[_0x58d0('0x17')]);router['get'](_0x58d0('0x18'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x19')]);router['get'](_0x58d0('0x1a'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x1b')]);router[_0x58d0('0x8')](_0x58d0('0x1c'),auth[_0x58d0('0x9')](),controller['getScreenRecordings']);router[_0x58d0('0x8')](_0x58d0('0x1d'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x1e')]);router[_0x58d0('0x8')](_0x58d0('0x1f'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x20')]);router['get']('/:id/mail/interactions',auth['isAuthenticated'](),controller[_0x58d0('0x21')]);router[_0x58d0('0x8')](_0x58d0('0x22'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x23')]);router[_0x58d0('0x8')](_0x58d0('0x24'),auth[_0x58d0('0x9')](),controller['getFaxInteractions']);router[_0x58d0('0x8')](_0x58d0('0x25'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x26')]);router[_0x58d0('0x8')](_0x58d0('0x27'),auth['isAuthenticated'](),controller['getTeams']);router[_0x58d0('0x8')](_0x58d0('0x28'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x29')]);router[_0x58d0('0x8')](_0x58d0('0x2a'),auth[_0x58d0('0x9')](),controller['getAgents']);router[_0x58d0('0x8')](_0x58d0('0x2b'),auth['isAuthenticated'](),controller[_0x58d0('0x2c')]);router[_0x58d0('0x8')](_0x58d0('0x2d'),auth['isAuthenticated'](),controller['getFaxAccounts']);router[_0x58d0('0x8')](_0x58d0('0x2e'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x2f')]);router[_0x58d0('0x8')](_0x58d0('0x30'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x31')]);router[_0x58d0('0x8')](_0x58d0('0x32'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x33')]);router[_0x58d0('0x8')](_0x58d0('0x34'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x35')]);router['get'](_0x58d0('0x36'),auth['isAuthenticated'](),controller[_0x58d0('0x37')]);router[_0x58d0('0x8')]('/:id/square_projects',auth[_0x58d0('0x9')](),controller[_0x58d0('0x38')]);router[_0x58d0('0x8')](_0x58d0('0x39'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x3a')]);router[_0x58d0('0x8')]('/:id/api_key',auth[_0x58d0('0x9')](),controller['getApiKey']);router[_0x58d0('0x3b')](_0x58d0('0x13'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x3c')]);router[_0x58d0('0x3b')]('/',auth[_0x58d0('0x9')](),controller[_0x58d0('0x3d')]);router[_0x58d0('0x3b')](_0x58d0('0x3e'),auth[_0x58d0('0x9')](),controller['bulkCreate']);router[_0x58d0('0x3b')]('/:id/queues',auth[_0x58d0('0x9')](),controller[_0x58d0('0x3f')]);var upload=multer({'storage':multer[_0x58d0('0x40')]({'destination':function(_0x4205f9,_0x280720,_0xd091b){_0xd091b(null,path[_0x58d0('0x41')](config[_0x58d0('0x42')],_0x58d0('0x43')));},'filename':function(_0x2d284e,_0x2646a1,_0x4d95ac){_0x4d95ac(null,util['format'](_0x58d0('0x44'),Date[_0x58d0('0x45')](),_0x2646a1[_0x58d0('0x46')]));}})});router[_0x58d0('0x3b')](_0x58d0('0x10'),upload[_0x58d0('0x47')]('file'),controller[_0x58d0('0x48')]);router['post'](_0x58d0('0x49'),auth[_0x58d0('0x9')](),controller['login']);router[_0x58d0('0x3b')](_0x58d0('0x4a'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x4b')]);router[_0x58d0('0x3b')]('/:id/pause',auth[_0x58d0('0x9')](),controller['pause']);router[_0x58d0('0x3b')](_0x58d0('0x4c'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x4d')]);router[_0x58d0('0x3b')](_0x58d0('0x27'),auth[_0x58d0('0x9')](),controller['addTeams']);router[_0x58d0('0x3b')](_0x58d0('0x4e'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x4f')]);router[_0x58d0('0x3b')](_0x58d0('0x50'),auth[_0x58d0('0x9')](),controller['addMailInteractions']);router[_0x58d0('0x3b')](_0x58d0('0x51'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x52')]);router['post'](_0x58d0('0x53'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x54')]);router[_0x58d0('0x3b')](_0x58d0('0x55'),auth[_0x58d0('0x9')](),controller['addOpenchannelInteractions']);router[_0x58d0('0x3b')](_0x58d0('0x56'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x57')]);router[_0x58d0('0x3b')](_0x58d0('0x2d'),auth['isAuthenticated'](),controller[_0x58d0('0x58')]);router[_0x58d0('0x3b')](_0x58d0('0x2e'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x59')]);router[_0x58d0('0x3b')](_0x58d0('0x30'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x5a')]);router[_0x58d0('0x3b')](_0x58d0('0x32'),auth[_0x58d0('0x9')](),controller['addSmsAccounts']);router[_0x58d0('0x3b')]('/:id/chat_websites',auth['isAuthenticated'](),controller[_0x58d0('0x5b')]);router[_0x58d0('0x3b')](_0x58d0('0x36'),auth[_0x58d0('0x9')](),controller['addWhatsappAccounts']);router[_0x58d0('0x3b')](_0x58d0('0x5c'),auth[_0x58d0('0x9')](),controller['addSquareProjects']);router[_0x58d0('0x3b')](_0x58d0('0x5d'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x5e')]);router['put'](_0x58d0('0x5f'),auth['isAuthenticated'](),controller['update']);router[_0x58d0('0x60')](_0x58d0('0x61'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x62')]);router[_0x58d0('0x63')](_0x58d0('0x15'),auth[_0x58d0('0x9')](),controller['removeQueues']);router[_0x58d0('0x63')](_0x58d0('0x27'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x64')]);router['delete'](_0x58d0('0x5f'),auth['isAuthenticated'](),controller[_0x58d0('0x65')]);router[_0x58d0('0x63')]('/:id/chat_interactions',auth['isAuthenticated'](),controller[_0x58d0('0x66')]);router['delete'](_0x58d0('0x50'),auth['isAuthenticated'](),controller[_0x58d0('0x67')]);router['delete'](_0x58d0('0x51'),auth[_0x58d0('0x9')](),controller['removeFaxInteractions']);router[_0x58d0('0x63')]('/:id/sms_interactions',auth[_0x58d0('0x9')](),controller[_0x58d0('0x68')]);router['delete'](_0x58d0('0x55'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x69')]);router[_0x58d0('0x63')](_0x58d0('0x56'),auth['isAuthenticated'](),controller[_0x58d0('0x6a')]);router['delete'](_0x58d0('0x2d'),auth[_0x58d0('0x9')](),controller['removeFaxAccounts']);router[_0x58d0('0x63')]('/:id/mail_accounts',auth[_0x58d0('0x9')](),controller[_0x58d0('0x6b')]);router[_0x58d0('0x63')](_0x58d0('0x30'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x6c')]);router[_0x58d0('0x63')](_0x58d0('0x32'),auth['isAuthenticated'](),controller[_0x58d0('0x6d')]);router[_0x58d0('0x63')](_0x58d0('0x34'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x6e')]);router['delete'](_0x58d0('0x36'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x6f')]);router[_0x58d0('0x63')](_0x58d0('0x5c'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x70')]);router[_0x58d0('0x63')]('/:id/api_key',auth[_0x58d0('0x9')](),controller[_0x58d0('0x71')]);module[_0x58d0('0x72')]=router;
\ No newline at end of file
index d7cf76c..7d3a959 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x367a=['VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blocked','blockedAt','loginAttempts','UNSIGNED','sequelize','moment','util','lodash','exports','STRING','setDataValue','fullname','callerid','\x22%s\x22\x20<%s>','getDataValue','email','ENUM','admin','agent','telephone','INTEGER','internal','accountcode','BOOLEAN','DEFAULT\x20PAUSE','DATE','dynamic','friend','user','peer','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','nonat','update','outgoing','yes','force_rport,comedia','nat','join','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','always','accept','originate','uac','uas','fingerprint','certificate','active','passive','update,nonat','TEXT','showWebBar','isArray','wss','encryption','avpf','force_avp','icesupport','dtlsenable','rtcp_mux','dtlsverify','dtlssetup','actpass','dtlscertfile','dtlsprivatekey','permissions','map'];(function(_0x4c4042,_0x1ea485){var _0xbd10dc=function(_0x164b20){while(--_0x164b20){_0x4c4042['push'](_0x4c4042['shift']());}};_0xbd10dc(++_0x1ea485);}(_0x367a,0x67));var _0xa367=function(_0x46c5ec,_0x270606){_0x46c5ec=_0x46c5ec-0x0;var _0x3d29f1=_0x367a[_0x46c5ec];return _0x3d29f1;};'use strict';var Sequelize=require(_0xa367('0x0'));var moment=require(_0xa367('0x1'));var util=require(_0xa367('0x2'));var _=require(_0xa367('0x3'));module[_0xa367('0x4')]={'name':{'type':Sequelize[_0xa367('0x5')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x28f27e){this['setDataValue']('name',_0x28f27e);this[_0xa367('0x6')]('defaultuser',_0x28f27e);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0xa367('0x5')],'allowNull':![],'set':function(_0x356ee9){this[_0xa367('0x6')](_0xa367('0x7'),_0x356ee9);this['setDataValue'](_0xa367('0x8'),util['format'](_0xa367('0x9'),_0x356ee9,this[_0xa367('0xa')]('internal')));}},'alias':{'type':Sequelize[_0xa367('0x5')]},'email':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xa367('0xb'),'validate':{'isEmail':!![]},'set':function(_0x40c122){if(_0x40c122){this[_0xa367('0x6')](_0xa367('0xb'),_0x40c122['toLowerCase']());}}},'role':{'type':Sequelize[_0xa367('0xc')](_0xa367('0xd'),'user',_0xa367('0xe'),_0xa367('0xf')),'allowNull':![]},'password':{'type':Sequelize[_0xa367('0x5')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':'local'},'internal':{'type':Sequelize[_0xa367('0x10')](0xb),'allowNull':![],'unique':_0xa367('0x11'),'set':function(_0x45d20d){this[_0xa367('0x6')](_0xa367('0x11'),_0x45d20d);this[_0xa367('0x6')](_0xa367('0x12'),_0x45d20d);this[_0xa367('0x6')](_0xa367('0x8'),util['format'](_0xa367('0x9'),this[_0xa367('0xa')](_0xa367('0x7')),_0x45d20d));}},'salt':{'type':Sequelize[_0xa367('0x5')]},'phone':{'type':Sequelize[_0xa367('0x5')]},'mobile':{'type':Sequelize[_0xa367('0x5')]},'address':{'type':Sequelize[_0xa367('0x5')]},'zipcode':{'type':Sequelize[_0xa367('0x5')]},'userpic':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0xa367('0x5')]},'country':{'type':Sequelize[_0xa367('0x5')]},'online':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]},'chatPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'mailPause':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]},'faxPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsPause':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0xa367('0x5')],'defaultValue':_0xa367('0x14')},'lastPauseAt':{'type':Sequelize[_0xa367('0x15')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0xa367('0x10')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0xa367('0x10')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0xa367('0x10')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0xa367('0x10')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0xa367('0x10')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0xa367('0x10')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![],'defaultValue':_0xa367('0x16')},'ipaddr':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'port':{'type':Sequelize[_0xa367('0x10')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0xa367('0x10')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize['STRING'],'allowNull':!![]},'lastms':{'type':Sequelize[_0xa367('0x10')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0xa367('0xc')](_0xa367('0x17'),_0xa367('0x18'),_0xa367('0x19')),'allowNull':!![],'defaultValue':_0xa367('0x17')},'context':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![],'defaultValue':'from-sip'},'callingpres':{'type':Sequelize[_0xa367('0xc')](_0xa367('0x1a'),_0xa367('0x1b'),'ALLOWED_FAILED_SCREEN',_0xa367('0x1c'),_0xa367('0x1d'),_0xa367('0x1e'),_0xa367('0x1f'),_0xa367('0x20')),'allowNull':!![]},'deny':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'permit':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'secret':{'type':Sequelize['STRING'],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'transport':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![],'defaultValue':_0xa367('0x21'),'set':function(_0x262723){this[_0xa367('0x6')](_0xa367('0x22'),_0x262723?_0x262723['join'](','):null);},'get':function(){return this[_0xa367('0xa')](_0xa367('0x22'))?this[_0xa367('0xa')](_0xa367('0x22'))[_0xa367('0x23')](','):null;},'comment':_0xa367('0x24')},'dtmfmode':{'type':Sequelize[_0xa367('0xc')](_0xa367('0x25'),_0xa367('0x26'),_0xa367('0x27'),_0xa367('0x28'),_0xa367('0x29')),'allowNull':!![],'defaultValue':_0xa367('0x25')},'directmedia':{'type':Sequelize[_0xa367('0xc')]('yes','no',_0xa367('0x2a'),_0xa367('0x2b'),_0xa367('0x2c')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xa367('0xc')](_0xa367('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'nat':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![],'defaultValue':_0xa367('0x2e'),'set':function(_0x50edac){this['setDataValue'](_0xa367('0x2f'),_0x50edac?_0x50edac[_0xa367('0x30')](','):null);},'get':function(){return this[_0xa367('0xa')]('nat')?this['getDataValue']('nat')[_0xa367('0x23')](','):null;},'comment':_0xa367('0x31')},'callgroup':{'type':Sequelize[_0xa367('0x5')]},'namedcallgroup':{'type':Sequelize[_0xa367('0x5')]},'pickupgroup':{'type':Sequelize[_0xa367('0x5')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xa367('0x5')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xa367('0x5')]},'disallow':{'type':Sequelize[_0xa367('0x5')],'allowNull':![],'defaultValue':_0xa367('0x32')},'allow':{'type':Sequelize[_0xa367('0x5')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x5a70b4){this['setDataValue'](_0xa367('0x33'),_0x5a70b4?_0x5a70b4[_0xa367('0x30')](';'):'ulaw;alaw;gsm');},'get':function(){return this[_0xa367('0xa')](_0xa367('0x33'))?this[_0xa367('0xa')](_0xa367('0x33'))[_0xa367('0x23')](';'):null;},'comment':_0xa367('0x34')},'autoframing':{'type':Sequelize[_0xa367('0xc')](_0xa367('0x2d'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![],'set':function(_0x3423a7){this['setDataValue']('insecure',_0x3423a7?_0x3423a7[_0xa367('0x30')](','):null);},'get':function(){return this[_0xa367('0xa')](_0xa367('0x35'))?this[_0xa367('0xa')]('insecure')[_0xa367('0x23')](','):null;},'comment':_0xa367('0x36')},'trustrpid':{'type':Sequelize[_0xa367('0xc')](_0xa367('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xa367('0xc')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM']('yes','no',_0xa367('0x37')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0xa367('0xc')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0xa367('0xc')](_0xa367('0x2d'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0xa367('0x10')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize['STRING'],'allowNull':!![]},'callerid':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xa367('0xc')](_0xa367('0x2d'),'no'),'allowNull':!![],'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0xa367('0x10')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize['ENUM'](_0xa367('0x2d'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0xa367('0xc')](_0xa367('0x2d'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0xa367('0x2d'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize['ENUM'](_0xa367('0x2d'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'template':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0xa367('0xc')]('yes','no',_0xa367('0x38')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xa367('0x10')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xa367('0xc')](_0xa367('0x2d'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0xa367('0xc')](_0xa367('0x39'),'refuse',_0xa367('0x3a')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0xa367('0x10')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0xa367('0x10')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xa367('0xc')](_0xa367('0x3b'),_0xa367('0x3c')),'allowNull':!![],'defaultValue':_0xa367('0x3c')},'t38pt_usertpsource':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'regexten':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0xa367('0x2d'),'no'),'allowNull':!![],'defaultValue':_0xa367('0x2d')},'keepalive':{'type':Sequelize[_0xa367('0x10')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0xa367('0x10')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xa367('0x10')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0xa367('0x10')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING'],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'timert1':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0xa367('0x10')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0xa367('0x10')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0xa367('0x10')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0xa367('0xc')](_0xa367('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0xa367('0xc')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0xa367('0xc')](_0xa367('0x2d'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xa367('0xc')]('yes','no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xa367('0xc')](_0xa367('0x2d'),'no',_0xa367('0x3d'),_0xa367('0x3e')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0xa367('0x10')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0xa367('0xc')](_0xa367('0x3f'),_0xa367('0x40'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0xa367('0xc')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0xa367('0x10')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0xa367('0xc')](_0xa367('0x2d'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xa367('0xc')](_0xa367('0x2d'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'mohsuggest':{'type':Sequelize['STRING'],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0xa367('0x2d'),'no',_0xa367('0x2a'),_0xa367('0x2b'),_0xa367('0x41')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0xa367('0x5')]},'resetPasswordExpires':{'type':Sequelize[_0xa367('0x15')]},'passwordResetAt':{'type':Sequelize[_0xa367('0x15')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0xa367('0x42')]},'showWebBar':{'type':Sequelize[_0xa367('0x10')],'defaultValue':0x0,'set':function(_0x10c51b){this[_0xa367('0x6')](_0xa367('0x43'),_0x10c51b);var _0x52166a=this['get']({'plain':!![]});switch(_0x10c51b){case 0x0:case 0x1:var _0x576a7d=_0x52166a['transport']?_[_0xa367('0x44')](_0x52166a['transport'])?_0x52166a[_0xa367('0x22')][_0xa367('0x30')]():_0x52166a[_0xa367('0x22')]:'udp';if(_0x576a7d===_0xa367('0x45')){_0x576a7d=_0xa367('0x21');}this['setDataValue']('transport',_0x576a7d);this['setDataValue'](_0xa367('0x46'),'no');this[_0xa367('0x6')](_0xa367('0x47'),null);this['setDataValue'](_0xa367('0x48'),null);this['setDataValue'](_0xa367('0x49'),null);this[_0xa367('0x6')](_0xa367('0x4a'),null);this['setDataValue']('dtlsverify',null);this['setDataValue']('dtlssetup',null);this[_0xa367('0x6')]('dtlscertfile',null);this[_0xa367('0x6')]('dtlsprivatekey',null);this[_0xa367('0x6')](_0xa367('0x4b'),'no');break;case 0x2:this['setDataValue'](_0xa367('0x22'),'wss');this[_0xa367('0x6')](_0xa367('0x46'),_0xa367('0x2d'));this[_0xa367('0x6')](_0xa367('0x47'),_0xa367('0x2d'));this[_0xa367('0x6')](_0xa367('0x48'),'yes');this[_0xa367('0x6')](_0xa367('0x49'),'yes');this[_0xa367('0x6')]('dtlsenable','yes');this[_0xa367('0x6')](_0xa367('0x4c'),'no');this[_0xa367('0x6')](_0xa367('0x4d'),_0xa367('0x4e'));this[_0xa367('0x6')](_0xa367('0x4f'),_0x52166a[_0xa367('0x4f')]||'/etc/pki/tls/certs/motion.crt');this['setDataValue'](_0xa367('0x50'),_0x52166a['dtlsprivatekey']||'/etc/pki/tls/private/motion.key');this[_0xa367('0x6')](_0xa367('0x4b'),'yes');break;default:}}},'permissions':{'type':Sequelize[_0xa367('0x42')],'set':function(_0x44c6f6){this['setDataValue'](_0xa367('0x51'),_0x44c6f6?_0x44c6f6[_0xa367('0x30')](','):[]);},'get':function(){return this[_0xa367('0xa')]('permissions')?_[_0xa367('0x52')](this[_0xa367('0xa')](_0xa367('0x51'))[_0xa367('0x23')](','),function(_0x2cf242){return parseInt(_0x2cf242,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0xa367('0x5')]},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0xa367('0x13')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0xa367('0x13')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xa367('0x10')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0xa367('0x5')],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0xa367('0xc')](_0xa367('0x2d'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0xa367('0x13')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0xa367('0x5')]},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0xa367('0x53')],'get':function(){return this['getDataValue'](_0xa367('0x54'))?this[_0xa367('0xa')](_0xa367('0x54')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]},'interface':{'type':Sequelize[_0xa367('0x5')],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0xa367('0x5')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![],'set':function(_0x58372f){if(typeof _0x58372f===_0xa367('0x55')){var _0x1ffa6f=_0x58372f==='1'?!![]:_0x58372f==='0'?![]:_0x58372f===_0xa367('0x56')?!![]:_0x58372f===_0xa367('0x57')?![]:![];this['setDataValue'](_0xa367('0x58'),_0x1ffa6f);}else{this[_0xa367('0x6')](_0xa367('0x58'),_0x58372f);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x35f426){this[_0xa367('0x6')](_0xa367('0x59'),_0x35f426);if(_0x35f426===!![]){this[_0xa367('0x6')](_0xa367('0x5a'),moment());this[_0xa367('0x6')](_0xa367('0x5b'),0x0);}else{this['setDataValue'](_0xa367('0x5a'),null);}}},'blockedAt':{'type':Sequelize[_0xa367('0x15')],'defaultValue':null},'loginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disabled':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0xa367('0x10')](0x5)[_0xa367('0x5c')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0xa367('0x13')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xa367('0x13')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xa367('0x13')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0xa367('0x13')],'defaultValue':![]}};
\ No newline at end of file
+var _0xcb81=['dynamic','friend','peer','from-sip','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','inband','auto','rfc2833','yes','nonat','outgoing','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas','fingerprint','certificate','active','passive','actpass','update,nonat','TEXT','showWebBar','get','isArray','avpf','force_avp','dtlsenable','dtlsverify','dtlscertfile','dtlsprivatekey','rtcp_mux','encryption','icesupport','/etc/pki/tls/private/motion.key','permissions','VIRTUAL','phoneBarEnableScreenRecordingByAgent','false','screenrecording','blocked','loginAttempts','blockedAt','sequelize','moment','lodash','setDataValue','name','defaultuser','STRING','fullname','callerid','\x22%s\x22\x20<%s>','email','toLowerCase','ENUM','user','agent','telephone','INTEGER','internal','accountcode','format','getDataValue','BOOLEAN','DATE','DEFAULT\x20PAUSE'];(function(_0x1cfb6e,_0x33de88){var _0x12d65c=function(_0x398e76){while(--_0x398e76){_0x1cfb6e['push'](_0x1cfb6e['shift']());}};_0x12d65c(++_0x33de88);}(_0xcb81,0x154));var _0x1cb8=function(_0x26b8b5,_0xf5c2c1){_0x26b8b5=_0x26b8b5-0x0;var _0x2150a9=_0xcb81[_0x26b8b5];return _0x2150a9;};'use strict';var Sequelize=require(_0x1cb8('0x0'));var moment=require(_0x1cb8('0x1'));var util=require('util');var _=require(_0x1cb8('0x2'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x38c3ea){this[_0x1cb8('0x3')](_0x1cb8('0x4'),_0x38c3ea);this[_0x1cb8('0x3')](_0x1cb8('0x5'),_0x38c3ea);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':![],'set':function(_0x2ac2d6){this['setDataValue'](_0x1cb8('0x7'),_0x2ac2d6);this[_0x1cb8('0x3')](_0x1cb8('0x8'),util['format'](_0x1cb8('0x9'),_0x2ac2d6,this['getDataValue']('internal')));}},'alias':{'type':Sequelize[_0x1cb8('0x6')]},'email':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':![],'unique':_0x1cb8('0xa'),'validate':{'isEmail':!![]},'set':function(_0x1671be){if(_0x1671be){this[_0x1cb8('0x3')](_0x1cb8('0xa'),_0x1671be[_0x1cb8('0xb')]());}}},'role':{'type':Sequelize[_0x1cb8('0xc')]('admin',_0x1cb8('0xd'),_0x1cb8('0xe'),_0x1cb8('0xf')),'allowNull':![]},'password':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x1cb8('0x6')],'defaultValue':'local'},'internal':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':![],'unique':_0x1cb8('0x11'),'set':function(_0xcb6ad1){this[_0x1cb8('0x3')](_0x1cb8('0x11'),_0xcb6ad1);this[_0x1cb8('0x3')](_0x1cb8('0x12'),_0xcb6ad1);this[_0x1cb8('0x3')]('callerid',util[_0x1cb8('0x13')]('\x22%s\x22\x20<%s>',this[_0x1cb8('0x14')](_0x1cb8('0x7')),_0xcb6ad1));}},'salt':{'type':Sequelize[_0x1cb8('0x6')]},'phone':{'type':Sequelize[_0x1cb8('0x6')]},'mobile':{'type':Sequelize[_0x1cb8('0x6')]},'address':{'type':Sequelize[_0x1cb8('0x6')]},'zipcode':{'type':Sequelize[_0x1cb8('0x6')]},'userpic':{'type':Sequelize[_0x1cb8('0x6')]},'city':{'type':Sequelize[_0x1cb8('0x6')]},'country':{'type':Sequelize[_0x1cb8('0x6')]},'online':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x1cb8('0x16')]},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':_0x1cb8('0x17')},'lastPauseAt':{'type':Sequelize[_0x1cb8('0x16')]},'chatCapacity':{'type':Sequelize[_0x1cb8('0x10')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x1cb8('0x10')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x1cb8('0x10')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x1cb8('0x10')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x1cb8('0x10')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x1cb8('0x10')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'description':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'host':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![],'defaultValue':_0x1cb8('0x18')},'ipaddr':{'type':Sequelize['STRING'],'allowNull':!![]},'port':{'type':Sequelize[_0x1cb8('0x10')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'lastms':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x19'),_0x1cb8('0xd'),_0x1cb8('0x1a')),'allowNull':!![],'defaultValue':'friend'},'context':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![],'defaultValue':_0x1cb8('0x1b')},'callingpres':{'type':Sequelize[_0x1cb8('0xc')]('ALLOWED_NOT_SCREENED',_0x1cb8('0x1c'),_0x1cb8('0x1d'),_0x1cb8('0x1e'),'PROHIB_NOT_SCREENED',_0x1cb8('0x1f'),_0x1cb8('0x20'),_0x1cb8('0x21')),'allowNull':!![]},'deny':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'permit':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'secret':{'type':Sequelize['STRING'],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'transport':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![],'defaultValue':_0x1cb8('0x22'),'set':function(_0x18fe1b){this[_0x1cb8('0x3')](_0x1cb8('0x23'),_0x18fe1b?_0x18fe1b[_0x1cb8('0x24')](','):null);},'get':function(){return this[_0x1cb8('0x14')]('transport')?this['getDataValue'](_0x1cb8('0x23'))[_0x1cb8('0x25')](','):null;},'comment':_0x1cb8('0x26')},'dtmfmode':{'type':Sequelize['ENUM']('rfc2833',_0x1cb8('0x27'),_0x1cb8('0x28'),_0x1cb8('0x29'),_0x1cb8('0x2a')),'allowNull':!![],'defaultValue':_0x1cb8('0x2b')},'directmedia':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no',_0x1cb8('0x2d'),'update',_0x1cb8('0x2e')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'nat':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![],'defaultValue':_0x1cb8('0x2f'),'set':function(_0x2ad7f6){this[_0x1cb8('0x3')]('nat',_0x2ad7f6?_0x2ad7f6[_0x1cb8('0x24')](','):null);},'get':function(){return this[_0x1cb8('0x14')]('nat')?this[_0x1cb8('0x14')](_0x1cb8('0x30'))[_0x1cb8('0x25')](','):null;},'comment':_0x1cb8('0x31')},'callgroup':{'type':Sequelize[_0x1cb8('0x6')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0x1cb8('0x6')]},'namedpickupgroup':{'type':Sequelize[_0x1cb8('0x6')]},'language':{'type':Sequelize[_0x1cb8('0x6')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':![],'defaultValue':_0x1cb8('0x32'),'set':function(_0x328f7e){this[_0x1cb8('0x3')]('allow',_0x328f7e?_0x328f7e['join'](';'):_0x1cb8('0x32'));},'get':function(){return this[_0x1cb8('0x14')](_0x1cb8('0x33'))?this[_0x1cb8('0x14')](_0x1cb8('0x33'))[_0x1cb8('0x25')](';'):null;},'comment':_0x1cb8('0x34')},'autoframing':{'type':Sequelize[_0x1cb8('0xc')]('yes','no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![],'set':function(_0x101a35){this[_0x1cb8('0x3')](_0x1cb8('0x35'),_0x101a35?_0x101a35['join'](','):null);},'get':function(){return this[_0x1cb8('0x14')]('insecure')?this[_0x1cb8('0x14')](_0x1cb8('0x35'))['split'](','):null;},'comment':_0x1cb8('0x36')},'trustrpid':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x1cb8('0xc')]('yes','no',_0x1cb8('0x37')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x1cb8('0x38')},'amaflags':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![],'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'template':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM'](_0x1cb8('0x2c'),'no',_0x1cb8('0x39')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x3a'),_0x1cb8('0x3b'),_0x1cb8('0x3c')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x3d'),_0x1cb8('0x3e')),'allowNull':!![],'defaultValue':_0x1cb8('0x3e')},'t38pt_usertpsource':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'regexten':{'type':Sequelize['STRING'],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![],'defaultValue':_0x1cb8('0x2c')},'keepalive':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize['STRING'],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize['STRING'],'allowNull':!![]},'maxforwards':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x1cb8('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize['ENUM'](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no',_0x1cb8('0x3f'),_0x1cb8('0x40')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x41'),_0x1cb8('0x42'),_0x1cb8('0x43')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING'],'allowNull':!![]},'usereqphone':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize['STRING'],'allowNull':!![]},'mohsuggest':{'type':Sequelize['STRING'],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x1cb8('0xc')]('yes','no',_0x1cb8('0x2d'),'update',_0x1cb8('0x44')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize['STRING']},'resetPasswordExpires':{'type':Sequelize[_0x1cb8('0x16')]},'passwordResetAt':{'type':Sequelize[_0x1cb8('0x16')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x1cb8('0x45')]},'showWebBar':{'type':Sequelize[_0x1cb8('0x10')],'defaultValue':0x0,'set':function(_0x1396fc){this[_0x1cb8('0x3')](_0x1cb8('0x46'),_0x1396fc);var _0x13661e=this[_0x1cb8('0x47')]({'plain':!![]});switch(_0x1396fc){case 0x0:case 0x1:var _0x451984=_0x13661e[_0x1cb8('0x23')]?_[_0x1cb8('0x48')](_0x13661e[_0x1cb8('0x23')])?_0x13661e['transport'][_0x1cb8('0x24')]():_0x13661e[_0x1cb8('0x23')]:_0x1cb8('0x22');if(_0x451984==='wss'){_0x451984=_0x1cb8('0x22');}this[_0x1cb8('0x3')](_0x1cb8('0x23'),_0x451984);this[_0x1cb8('0x3')]('encryption','no');this[_0x1cb8('0x3')](_0x1cb8('0x49'),null);this['setDataValue'](_0x1cb8('0x4a'),null);this[_0x1cb8('0x3')]('icesupport',null);this[_0x1cb8('0x3')](_0x1cb8('0x4b'),null);this[_0x1cb8('0x3')](_0x1cb8('0x4c'),null);this['setDataValue']('dtlssetup',null);this['setDataValue'](_0x1cb8('0x4d'),null);this[_0x1cb8('0x3')](_0x1cb8('0x4e'),null);this[_0x1cb8('0x3')](_0x1cb8('0x4f'),'no');break;case 0x2:this[_0x1cb8('0x3')](_0x1cb8('0x23'),'wss');this[_0x1cb8('0x3')](_0x1cb8('0x50'),_0x1cb8('0x2c'));this['setDataValue'](_0x1cb8('0x49'),_0x1cb8('0x2c'));this[_0x1cb8('0x3')](_0x1cb8('0x4a'),_0x1cb8('0x2c'));this['setDataValue'](_0x1cb8('0x51'),_0x1cb8('0x2c'));this[_0x1cb8('0x3')]('dtlsenable',_0x1cb8('0x2c'));this[_0x1cb8('0x3')]('dtlsverify','no');this[_0x1cb8('0x3')]('dtlssetup','actpass');this[_0x1cb8('0x3')](_0x1cb8('0x4d'),_0x13661e[_0x1cb8('0x4d')]||'/etc/pki/tls/certs/motion.crt');this['setDataValue']('dtlsprivatekey',_0x13661e[_0x1cb8('0x4e')]||_0x1cb8('0x52'));this[_0x1cb8('0x3')](_0x1cb8('0x4f'),_0x1cb8('0x2c'));break;default:}}},'permissions':{'type':Sequelize[_0x1cb8('0x45')],'set':function(_0x144e69){this['setDataValue']('permissions',_0x144e69?_0x144e69['join'](','):[]);},'get':function(){return this['getDataValue'](_0x1cb8('0x53'))?_['map'](this[_0x1cb8('0x14')]('permissions')['split'](','),function(_0x53fa60){return parseInt(_0x53fa60,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x1cb8('0x6')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x1cb8('0x6')]},'phoneBarBusyNumber':{'type':Sequelize[_0x1cb8('0x6')]},'phoneBarUnconditional':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x1cb8('0x10')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x1cb8('0x6')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x1cb8('0x10')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x1cb8('0x6')]},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x1cb8('0x54')],'get':function(){return this[_0x1cb8('0x14')](_0x1cb8('0x55'))?this[_0x1cb8('0x14')](_0x1cb8('0x55')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'interface':{'type':Sequelize[_0x1cb8('0x6')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize['STRING'],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![],'set':function(_0x34094c){if(typeof _0x34094c==='string'){var _0x2f2c87=_0x34094c==='1'?!![]:_0x34094c==='0'?![]:_0x34094c==='true'?!![]:_0x34094c===_0x1cb8('0x56')?![]:![];this[_0x1cb8('0x3')](_0x1cb8('0x57'),_0x2f2c87);}else{this['setDataValue'](_0x1cb8('0x57'),_0x34094c);}}},'blocked':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![],'set':function(_0x5d5c95){this['setDataValue'](_0x1cb8('0x58'),_0x5d5c95);if(_0x5d5c95===!![]){this[_0x1cb8('0x3')]('blockedAt',moment());this[_0x1cb8('0x3')](_0x1cb8('0x59'),0x0);}else{this[_0x1cb8('0x3')](_0x1cb8('0x5a'),null);}}},'blockedAt':{'type':Sequelize[_0x1cb8('0x16')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x1cb8('0x10')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x1cb8('0x10')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]}};
\ No newline at end of file
index 205fd22..30b3fbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1c6=['toLowerCase','penalty','spread','capitalize','QueueId','emit','Queue:save','voice','format','SIP/%s','UserVoiceQueueRt','upsert','remove','Queue:remove','addAvatar','userpic','file','getAvatar','root','download','existsSync','join','sms','ChatOpenTabs','FaxOpenTabs','FAX','createdAt','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','WhatsappOpenTabs','WHATSAPP','getContacts','CmContact','intersection','order','sort','pick','hasOwnProperty','CmList','List','tag','nolimit','getQueues','Queue','Queues','Unknown\x20role','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','UserId','VoiceRecording','getScreenRecordings','ScreenRecording','getChatInteractions','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','WhatsappInteraction','getWhatsappInteractions','login','phone','mobile','intrf','user:%s','user:forcelogout','headers','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','loginInPause','UserVoiceQueue.penalty','MemberReport','YYYY-MM-DD\x20HH:mm:ss','getChannels','forEach','LOGIN','device','PAUSE','bulkCreate','concat','isMiddleware','logout','pause','updateAttributes','DEFAULT\x20PAUSE','unpause','mailPause','chatPause','faxPause','smsPause','whatsapppause','pauseType','lastPauseAt','manual','set','%s%s','Pause','QueuePause','getTeams','Team','setDataValue','Voice','getChatQueues','Mail','getWhatsappQueues','Whatsapp','getFaxQueues','Fax','getOpenchannelQueues','Openchannel','flatten','transaction','addAgent','getDataValue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','removeTeams','Chat','getMailQueues','getSmsQueues','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','removeChatInteractions','isArray','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','$gt','$gte','$lt','$lte','$ne','$eq','$not','$notBetween','$in','$like','$notLike','$iLike','$overlap','$contained','$any','firstName','Contact','dialActive','getApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','removeApiKey','API\x20key\x20not\x20available','whoami','getPresence','resolve','teams','queues','VoiceQueue','inbound','lower','col','toString','asc','desc','substring','uniqBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','unavailable','ringing','busy','charAt','toUpperCase','slice','QueryTypes','SELECT','select','field','InteractionId','ui.createdAt','_interactions','OpenTabs','moment','bluebird','util','lodash','jayson/promise','ioredis','../../components/auth/service','api','../../config/environment','../../mysqldb','socket.io-emitter','redis','./user.socket','defaults','localhost','client','http','request','then','info','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','User,\x20%s,\x20%s','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','update','destroy','get','role','admin','Users','user','agent','Telephones','filter','ignore','map','value','includes','find','UserProfileResource','stack','name','send','index','User','rawAttributes','fieldName','type','key','where','query','includeAll','attributes','push','findAll','rows','openTabs','length','dataValues','fax','mail','whatsapp','all','show','model','differenceBy','password','salt','keys','filters','fields','include','merge','options','true','chat','openchannel','body','params','describe','addContacts','ids','omit','internal','Setting','securePassword','max','min_internal','isNil','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)','from','VoiceMail','fullname','email','101','103','113','110','105','106','107','108','109','111','115','create','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','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','some','each','telephone','UserProfileSection','isEmpty','changePassword','oldPassword','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','Sequelize','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','newPassword','Invalid\x20body\x20format.\x20Use\x20newPassword','Unauthorized','findOne','enforcePasswordHistory','passwordHistoryLimit','validatePasswordHistory','previousPasswords','updatePasswordsHistory','addQueues','channel','online','voicePause','interface','isValidChannel','Unknown\x20channel','add'];(function(_0x270789,_0x4fc6bf){var _0x54948c=function(_0x1e227b){while(--_0x1e227b){_0x270789['push'](_0x270789['shift']());}};_0x54948c(++_0x4fc6bf);}(_0xc1c6,0xf7));var _0x6c1c=function(_0x5de780,_0xe3c39a){_0x5de780=_0x5de780-0x0;var _0x13514c=_0xc1c6[_0x5de780];return _0x13514c;};'use strict';var moment=require(_0x6c1c('0x0'));var BPromise=require(_0x6c1c('0x1'));var util=require(_0x6c1c('0x2'));var path=require('path');var fs=require('fs');var _=require(_0x6c1c('0x3'));var squel=require('squel');var jayson=require(_0x6c1c('0x4'));var Redis=require(_0x6c1c('0x5'));var authService=require(_0x6c1c('0x6'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0x6c1c('0x7'));var utils=require('../../config/utils');var config=require(_0x6c1c('0x8'));var licenseUtil=require('../../config/license/util');var db=require(_0x6c1c('0x9'))['db'];var socket=require(_0x6c1c('0xa'))(new Redis(config[_0x6c1c('0xb')]));require(_0x6c1c('0xc'))['register'](socket);config[_0x6c1c('0xb')]=_[_0x6c1c('0xd')](config['redis'],{'host':_0x6c1c('0xe'),'port':0x18eb});var client=jayson[_0x6c1c('0xf')][_0x6c1c('0x10')]({'port':0x232a});var values;function respondWithRpcPromise(_0x1137e8,_0x49fb01,_0x3a25a2,_0x2a4fd4){return new BPromise(function(_0x40cebf,_0x5af308){var _0x412717=_0x2a4fd4||client;return _0x412717[_0x6c1c('0x11')](_0x1137e8,_0x3a25a2)[_0x6c1c('0x12')](function(_0x49304f){logger[_0x6c1c('0x13')]('User,\x20%s,\x20%s',_0x49fb01,_0x6c1c('0x14'));logger[_0x6c1c('0x15')](_0x6c1c('0x16'),_0x49fb01,_0x6c1c('0x14'),JSON[_0x6c1c('0x17')](_0x49304f));if(_0x49304f[_0x6c1c('0x18')]){if(_0x49304f[_0x6c1c('0x18')][_0x6c1c('0x19')]===0x1f4){logger[_0x6c1c('0x18')]('User,\x20%s,\x20%s',_0x49fb01,_0x49304f[_0x6c1c('0x18')][_0x6c1c('0x1a')]);return _0x5af308(_0x49304f['error'][_0x6c1c('0x1a')]);}logger[_0x6c1c('0x18')]('User,\x20%s,\x20%s',_0x49fb01,_0x49304f[_0x6c1c('0x18')]['message']);return _0x40cebf(_0x49304f[_0x6c1c('0x18')][_0x6c1c('0x1a')]);}else{logger['info'](_0x6c1c('0x1b'),_0x49fb01,'request\x20sent');_0x40cebf(_0x49304f[_0x6c1c('0x1c')][_0x6c1c('0x1a')]);}})[_0x6c1c('0x1d')](function(_0x211f49){logger[_0x6c1c('0x18')](_0x6c1c('0x1b'),_0x49fb01,_0x211f49);_0x5af308(_0x211f49);});});}function respondWithStatusCode(_0x1993c5,_0x2ed830){_0x2ed830=_0x2ed830||0xcc;return function(_0x1f24a4){if(_0x1f24a4){return _0x1993c5[_0x6c1c('0x1e')](_0x2ed830);}return _0x1993c5[_0x6c1c('0x1f')](_0x2ed830)[_0x6c1c('0x20')]();};}function respondWithResult(_0x2382c0,_0x9c6c55){_0x9c6c55=_0x9c6c55||0xc8;return function(_0x31fed2){if(_0x31fed2){return _0x2382c0[_0x6c1c('0x1f')](_0x9c6c55)[_0x6c1c('0x21')](_0x31fed2);}};}function respondWithFilteredResult(_0x12c638,_0x3a3f13){return function(_0x1dba08){if(_0x1dba08){var _0x96046a=typeof _0x3a3f13[_0x6c1c('0x22')]===_0x6c1c('0x23')&&typeof _0x3a3f13[_0x6c1c('0x24')]===_0x6c1c('0x23');var _0x80bc05=_0x1dba08[_0x6c1c('0x25')];var _0x1b9d7d=_0x96046a?0x0:_0x3a3f13[_0x6c1c('0x22')];var _0x5f4568=_0x96046a?_0x1dba08[_0x6c1c('0x25')]:_0x3a3f13['offset']+_0x3a3f13[_0x6c1c('0x24')];var _0x4c23f8;if(_0x5f4568>=_0x80bc05){_0x5f4568=_0x80bc05;_0x4c23f8=0xc8;}else{_0x4c23f8=0xce;}_0x12c638[_0x6c1c('0x1f')](_0x4c23f8);return _0x12c638['set'](_0x6c1c('0x26'),_0x1b9d7d+'-'+_0x5f4568+'/'+_0x80bc05)[_0x6c1c('0x21')](_0x1dba08);}return null;};}function saveUpdates(_0x504348){return function(_0x3b1a4f){if(_0x3b1a4f){return _0x3b1a4f[_0x6c1c('0x27')](_0x504348)['then'](function(_0x3b319a){return _0x3b319a;});}return null;};}function removeEntity(_0x19a8f1){return function(_0xdcef7){if(_0xdcef7){return _0xdcef7[_0x6c1c('0x28')]()['then'](function(){var _0x52c036=_0xdcef7[_0x6c1c('0x29')]({'plain':!![]});if(_0x52c036[_0x6c1c('0x2a')]===_0x6c1c('0x2b'))return;var _0x30cec5=[{'name':_0x6c1c('0x2c'),'value':_0x6c1c('0x2d'),'ignore':!![]},{'name':'Agents','value':_0x6c1c('0x2e'),'ignore':![]},{'name':_0x6c1c('0x2f'),'value':'telephone','ignore':![]}];var _0x1b371d=_(_0x30cec5)[_0x6c1c('0x30')](_0x6c1c('0x31'))[_0x6c1c('0x32')]('value')[_0x6c1c('0x33')]();if(_[_0x6c1c('0x34')](_0x1b371d,_0x52c036[_0x6c1c('0x2a')])){return;}var _0x5adddc=_[_0x6c1c('0x35')](_0x30cec5,['value',_0x52c036[_0x6c1c('0x2a')]])['name'];return db[_0x6c1c('0x36')][_0x6c1c('0x28')]({'where':{'type':_0x5adddc,'resourceId':_0x52c036['id']}})[_0x6c1c('0x12')](function(){return _0xdcef7;});})['then'](function(){_0x19a8f1['status'](0xcc)[_0x6c1c('0x20')]();});}};}function handleEntityNotFound(_0x3264e6){return function(_0x3ab64d){if(!_0x3ab64d){_0x3264e6['sendStatus'](0x194);}return _0x3ab64d;};}function handleError(_0x1a9132,_0x4c1591){_0x4c1591=_0x4c1591||0x1f4;return function(_0x5ba362){logger[_0x6c1c('0x18')](_0x5ba362[_0x6c1c('0x37')]);if(_0x5ba362[_0x6c1c('0x38')]){delete _0x5ba362[_0x6c1c('0x38')];}_0x1a9132['status'](_0x4c1591)[_0x6c1c('0x39')](_0x5ba362);};}exports[_0x6c1c('0x3a')]=function(_0x387d62,_0x18da02){var _0x173a54={},_0x398e95={'count':0x0,'rows':[]};var _0x4ae7dc=_(db[_0x6c1c('0x3b')][_0x6c1c('0x3c')])[_0x6c1c('0x32')](function(_0x47d75e){return{'name':_0x47d75e[_0x6c1c('0x3d')],'type':_0x47d75e[_0x6c1c('0x3e')][_0x6c1c('0x3f')]};})[_0x6c1c('0x30')](function(_0x1cb3b4){return!_['includes'](['password','salt'],_0x1cb3b4[_0x6c1c('0x38')]);})['value']();_0x173a54=qs['getOptions'](_0x4ae7dc,_0x387d62);var _0xc26c76={'where':_0x173a54[_0x6c1c('0x40')]};return db['User'][_0x6c1c('0x25')](_0xc26c76)[_0x6c1c('0x12')](function(_0x3d61aa){_0x398e95['count']=_0x3d61aa;if(_0x387d62[_0x6c1c('0x41')][_0x6c1c('0x42')]){_0x173a54['include']=[{'all':!![]}];}if(!_[_0x6c1c('0x34')](_0x173a54['attributes'],'id')){_0x173a54[_0x6c1c('0x43')][_0x6c1c('0x44')]('id');}return db[_0x6c1c('0x3b')][_0x6c1c('0x45')](_0x173a54);})[_0x6c1c('0x12')](function(_0x595ba2){_0x398e95[_0x6c1c('0x46')]=_0x595ba2;if(_0x387d62[_0x6c1c('0x41')][_0x6c1c('0x47')]==='true'){var _0x39c013=[];for(var _0x52866c=0x0;_0x52866c<_0x398e95[_0x6c1c('0x46')][_0x6c1c('0x48')];_0x52866c++){_0x39c013[_0x6c1c('0x44')](get_open_tabs('chat',_0x398e95[_0x6c1c('0x46')][_0x52866c]['dataValues']));_0x39c013['push'](get_open_tabs('sms',_0x398e95[_0x6c1c('0x46')][_0x52866c][_0x6c1c('0x49')]));_0x39c013[_0x6c1c('0x44')](get_open_tabs(_0x6c1c('0x4a'),_0x398e95[_0x6c1c('0x46')][_0x52866c][_0x6c1c('0x49')]));_0x39c013[_0x6c1c('0x44')](get_open_tabs(_0x6c1c('0x4b'),_0x398e95['rows'][_0x52866c][_0x6c1c('0x49')]));_0x39c013[_0x6c1c('0x44')](get_open_tabs('openchannel',_0x398e95[_0x6c1c('0x46')][_0x52866c]['dataValues']));_0x39c013[_0x6c1c('0x44')](get_open_tabs(_0x6c1c('0x4c'),_0x398e95[_0x6c1c('0x46')][_0x52866c][_0x6c1c('0x49')]));}return BPromise[_0x6c1c('0x4d')](_0x39c013)['then'](function(_0x1fe6e8){return _0x398e95;});}else{return _0x398e95;}})['then'](respondWithFilteredResult(_0x18da02,_0x173a54))[_0x6c1c('0x1d')](handleError(_0x18da02,null));};exports[_0x6c1c('0x4e')]=function(_0x2f6ce0,_0xa06377){var _0x8d614={'raw':![],'where':{'id':_0x2f6ce0['params']['id']}},_0x26cf7f={};_0x26cf7f[_0x6c1c('0x4f')]=_[_0x6c1c('0x50')](_['keys'](db[_0x6c1c('0x3b')][_0x6c1c('0x3c')]),[_0x6c1c('0x51'),_0x6c1c('0x52')]);_0x26cf7f['query']=_[_0x6c1c('0x53')](_0x2f6ce0[_0x6c1c('0x41')]);_0x26cf7f[_0x6c1c('0x54')]=_['intersection'](_0x26cf7f['model'],_0x26cf7f['query']);_0x8d614['attributes']=_['intersection'](_0x26cf7f[_0x6c1c('0x4f')],qs[_0x6c1c('0x55')](_0x2f6ce0['query'][_0x6c1c('0x55')]));_0x8d614[_0x6c1c('0x43')]=_0x8d614[_0x6c1c('0x43')]['length']?_0x8d614['attributes']:_0x26cf7f[_0x6c1c('0x4f')];if(_0x2f6ce0[_0x6c1c('0x41')]['includeAll']){_0x8d614[_0x6c1c('0x56')]=[{'all':!![]}];}_0x8d614=_[_0x6c1c('0x57')]({},_0x8d614,_0x2f6ce0[_0x6c1c('0x58')]);if(!_[_0x6c1c('0x34')](_0x8d614[_0x6c1c('0x43')],'id')){_0x8d614[_0x6c1c('0x43')]['push']('id');}return db[_0x6c1c('0x3b')][_0x6c1c('0x35')](_0x8d614)['then'](handleEntityNotFound(_0xa06377,null))['then'](function(_0x69f90b){var _0x1c6432=[];values=_0x69f90b;if(_0x2f6ce0[_0x6c1c('0x41')]['openTabs']===_0x6c1c('0x59')){_0x1c6432[_0x6c1c('0x44')](get_open_tabs(_0x6c1c('0x5a'),_0x69f90b[_0x6c1c('0x49')]));_0x1c6432['push'](get_open_tabs('sms',_0x69f90b[_0x6c1c('0x49')]));_0x1c6432[_0x6c1c('0x44')](get_open_tabs(_0x6c1c('0x5b'),_0x69f90b['dataValues']));_0x1c6432['push'](get_open_tabs(_0x6c1c('0x4c'),_0x69f90b[_0x6c1c('0x49')]));_0x1c6432['push'](get_open_tabs(_0x6c1c('0x4a'),_0x69f90b[_0x6c1c('0x49')]));_0x1c6432[_0x6c1c('0x44')](get_open_tabs(_0x6c1c('0x4b'),_0x69f90b[_0x6c1c('0x49')]));return BPromise[_0x6c1c('0x4d')](_0x1c6432);}else{return values;}})['then'](function(_0x398bca){return values;})['then'](respondWithResult(_0xa06377,null))[_0x6c1c('0x1d')](handleError(_0xa06377,null));};exports[_0x6c1c('0x27')]=function(_0x117240,_0x319820){if(_0x117240['body']['id']){delete _0x117240['body']['id'];}delete _0x117240[_0x6c1c('0x5c')][_0x6c1c('0x2a')];return db[_0x6c1c('0x3b')]['find']({'where':{'id':_0x117240[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x319820,null))[_0x6c1c('0x12')](saveUpdates(_0x117240[_0x6c1c('0x5c')],null))[_0x6c1c('0x12')](respondWithResult(_0x319820,null))[_0x6c1c('0x1d')](handleError(_0x319820,null));};exports[_0x6c1c('0x5e')]=function(_0x4d51dc,_0x268fec){return db['User'][_0x6c1c('0x5e')]()[_0x6c1c('0x12')](respondWithResult(_0x268fec,null))[_0x6c1c('0x1d')](handleError(_0x268fec,null));};exports[_0x6c1c('0x5f')]=function(_0x54b80a,_0x43423e){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x54b80a[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x43423e,null))[_0x6c1c('0x12')](function(_0x1fd3c1){if(_0x1fd3c1){return _0x1fd3c1[_0x6c1c('0x5f')](_0x54b80a[_0x6c1c('0x5c')][_0x6c1c('0x60')],_[_0x6c1c('0x61')](_0x54b80a['body'],[_0x6c1c('0x60'),'id'])||{});}})[_0x6c1c('0x12')](respondWithResult(_0x43423e,null))[_0x6c1c('0x1d')](handleError(_0x43423e,null));};function validateUser(_0x321997){return new BPromise(function(_0x441648,_0x59bd3f){if(_0x321997[_0x6c1c('0x62')])return _0x441648(_0x321997);return db[_0x6c1c('0x63')]['findById'](0x1)[_0x6c1c('0x12')](function(_0x14054d){if(_0x14054d[_0x6c1c('0x64')])authService['validatePasswordPattern'](_0x321997[_0x6c1c('0x51')]);db[_0x6c1c('0x3b')][_0x6c1c('0x65')](_0x6c1c('0x62'))[_0x6c1c('0x12')](function(_0x374b22){if(_['isNil'](_0x374b22)){_0x321997['internal']=_0x14054d[_0x6c1c('0x66')]||0x1;return;}if(_[_0x6c1c('0x67')](_0x14054d['min_internal'])||_0x14054d['min_internal']===_0x374b22){_0x321997['internal']=_0x374b22+0x1;return;}if(_0x14054d[_0x6c1c('0x66')]>_0x374b22){_0x321997[_0x6c1c('0x62')]=_0x14054d[_0x6c1c('0x66')];return;}return db[_0x6c1c('0x68')]['query'](_0x6c1c('0x69'),{'type':db['sequelize']['QueryTypes']['SELECT']})[_0x6c1c('0x12')](function(_0x1e20a9){if(_0x1e20a9&&_0x1e20a9[_0x6c1c('0x48')]){for(var _0x42ae1b=0x0,_0x10bfb4=_0x1e20a9[_0x6c1c('0x48')];_0x42ae1b<_0x10bfb4&&_['isNil'](_0x321997[_0x6c1c('0x62')]);_0x42ae1b++){if(_0x14054d[_0x6c1c('0x66')]<=_0x1e20a9[_0x42ae1b][_0x6c1c('0x6a')]){_0x321997['internal']=_0x1e20a9[_0x42ae1b]['from'];}else if(_0x14054d['min_internal']>_0x1e20a9[_0x42ae1b][_0x6c1c('0x6a')]&&_0x14054d[_0x6c1c('0x66')]<=_0x1e20a9[_0x42ae1b]['to']){_0x321997['internal']=_0x14054d[_0x6c1c('0x66')];}}}if(_['isNil'](_0x321997[_0x6c1c('0x62')])){_0x321997[_0x6c1c('0x62')]=_0x374b22+0x1;}return _0x441648(_0x321997);});});})[_0x6c1c('0x1d')](function(_0x42a468){_0x59bd3f(_0x42a468);});});}function updateUser(_0x4b1cac){return new BPromise(function(_0x13ff56,_0x41f3d9){try{if(_0x4b1cac['voicemail']){_0x4b1cac['mailbox']=_0x4b1cac[_0x6c1c('0x62')];_0x4b1cac[_0x6c1c('0x6b')]={'mailbox':_0x4b1cac[_0x6c1c('0x62')],'password':_0x4b1cac['password'],'fullname':_0x4b1cac[_0x6c1c('0x6c')],'email':_0x4b1cac[_0x6c1c('0x6d')]};}if(_0x4b1cac['role']==='agent'){if(!_0x4b1cac['permissions'])_0x4b1cac['permissions']=[_0x6c1c('0x6e'),'102',_0x6c1c('0x6f'),_0x6c1c('0x70'),_0x6c1c('0x71'),'104',_0x6c1c('0x72'),_0x6c1c('0x73'),_0x6c1c('0x74'),_0x6c1c('0x75'),_0x6c1c('0x76'),'100',_0x6c1c('0x77'),'114',_0x6c1c('0x78')];}_0x13ff56(_0x4b1cac);}catch(_0x11c901){_0x41f3d9(_0x11c901);}});}exports[_0x6c1c('0x79')]=function(_0x458316,_0x31eac6){if(_0x458316[_0x6c1c('0x2d')][_0x6c1c('0x2a')]===_0x6c1c('0x2e'))throw new Error('Unauthorized');if(_0x458316[_0x6c1c('0x5c')]['role']==='user'&&_0x458316[_0x6c1c('0x2d')][_0x6c1c('0x2a')]!==_0x6c1c('0x2b')){throw new Error(_0x6c1c('0x7a'));}if(_0x458316['body'][_0x6c1c('0x2a')]==='admin'&&_0x458316[_0x6c1c('0x2d')]['role']!==_0x6c1c('0x2b')){throw new Error(_0x6c1c('0x7b'));}return licenseUtil[_0x6c1c('0x7c')]([_0x458316['body']])[_0x6c1c('0x12')](function(){return validateUser(_0x458316[_0x6c1c('0x5c')]);})[_0x6c1c('0x12')](function(_0x4b5801){return updateUser(_0x4b5801)[_0x6c1c('0x12')](function(_0x2f9a4d){if(_0x2f9a4d[_0x6c1c('0x2a')]===_0x6c1c('0x2b')){_0x2f9a4d['settingsEnabled']=_0x458316[_0x6c1c('0x2d')][_0x6c1c('0x7d')];delete _0x2f9a4d[_0x6c1c('0x7e')];}return _0x2f9a4d;});})[_0x6c1c('0x12')](function(_0x3f87db){return db['User'][_0x6c1c('0x79')](_0x3f87db,{'include':[{'model':db[_0x6c1c('0x6b')],'as':_0x6c1c('0x6b')}]});})[_0x6c1c('0x12')](function(_0x587309){if(_0x458316[_0x6c1c('0x5c')][_0x6c1c('0x2a')]===_0x6c1c('0x2d'))return _0x587309;if(_0x458316['user'][_0x6c1c('0x2a')]!==_0x6c1c('0x2d'))return _0x587309;return db['UserProfileSection'][_0x6c1c('0x35')]({'where':{'name':_0x587309['role']===_0x6c1c('0x2e')?_0x6c1c('0x7f'):_0x6c1c('0x2f'),'userProfileId':_0x458316[_0x6c1c('0x2d')]['userProfileId']},'raw':!![]})[_0x6c1c('0x12')](function(_0x442431){if(!_0x442431||_0x442431[_0x6c1c('0x80')]!=0x0)return _0x587309;return db['UserProfileResource'][_0x6c1c('0x79')]({'name':_0x587309[_0x6c1c('0x38')],'resourceId':_0x587309['id'],'type':_0x442431[_0x6c1c('0x38')],'sectionId':_0x442431['id']},{})[_0x6c1c('0x12')](function(){return _0x587309;});})['catch'](function(_0x165839){logger[_0x6c1c('0x18')](_0x6c1c('0x81'),_0x165839);throw _0x165839;});})['then'](respondWithResult(_0x31eac6,0xc9))[_0x6c1c('0x1d')](handleError(_0x31eac6,null));};exports['bulkCreate']=function(_0x29c5c8,_0x27a9ea){var _0x1dfb61=_0x29c5c8[_0x6c1c('0x5c')];var _0x29da07=[];if(_0x29c5c8[_0x6c1c('0x2d')][_0x6c1c('0x2a')]===_0x6c1c('0x2e'))throw new Error('Unauthorized');if(_[_0x6c1c('0x82')](_0x1dfb61,['role',_0x6c1c('0x2d')])&&_0x29c5c8[_0x6c1c('0x2d')][_0x6c1c('0x2a')]!==_0x6c1c('0x2b')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_[_0x6c1c('0x82')](_0x1dfb61,[_0x6c1c('0x2a'),_0x6c1c('0x2b')])&&_0x29c5c8['user'][_0x6c1c('0x2a')]!==_0x6c1c('0x2b')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil['checkUserLimits'](_0x1dfb61)[_0x6c1c('0x12')](function(){return validateUser(_0x1dfb61[0x0]);})[_0x6c1c('0x12')](function(){for(var _0x8e8ee2=0x1;_0x8e8ee2<_0x1dfb61[_0x6c1c('0x48')];_0x8e8ee2++){var _0x305cc2=_0x1dfb61[_0x8e8ee2-0x1][_0x6c1c('0x62')];if(!_0x1dfb61[_0x8e8ee2][_0x6c1c('0x62')])_0x1dfb61[_0x8e8ee2][_0x6c1c('0x62')]=_0x305cc2+0x1;_0x29da07[_0x6c1c('0x44')](validateUser(_0x1dfb61[_0x8e8ee2]));}return BPromise[_0x6c1c('0x4d')](_0x29da07);})[_0x6c1c('0x12')](function(){_0x29da07=[];for(var _0x3f9697=0x0;_0x3f9697<_0x1dfb61['length'];_0x3f9697++){_0x29da07[_0x6c1c('0x44')](updateUser(_0x1dfb61[_0x3f9697]));}return BPromise[_0x6c1c('0x4d')](_0x29da07);})[_0x6c1c('0x12')](function(){return BPromise[_0x6c1c('0x83')](_0x1dfb61,function(_0x40415d){return db[_0x6c1c('0x3b')][_0x6c1c('0x79')](_0x40415d,{'include':[{'model':db['VoiceMail'],'as':_0x6c1c('0x6b')}]})['then'](function(_0x4df859){_0x40415d['id']=_0x4df859['id'];return _0x40415d;});});})[_0x6c1c('0x12')](function(_0x3a2cb8){if(_0x29c5c8[_0x6c1c('0x5c')][_0x6c1c('0x2a')]===_0x6c1c('0x2d'))return _0x3a2cb8;if(_0x29c5c8[_0x6c1c('0x2d')][_0x6c1c('0x2a')]!==_0x6c1c('0x2d'))return _0x3a2cb8;var _0x3543c8=_[_0x6c1c('0x82')](_0x3a2cb8,function(_0x4eac13){return _0x4eac13[_0x6c1c('0x2a')]===_0x6c1c('0x2e')||_0x4eac13[_0x6c1c('0x2a')]===_0x6c1c('0x84');});if(!_0x3543c8)return _0x3a2cb8;return db[_0x6c1c('0x85')][_0x6c1c('0x45')]({'where':{'name':{'$or':[_0x6c1c('0x7f'),_0x6c1c('0x2f')]},'userProfileId':_0x29c5c8['user'][_0x6c1c('0x7e')]},'raw':!![]})[_0x6c1c('0x12')](function(_0x232e9f){if(_[_0x6c1c('0x86')](_0x232e9f)||!_[_0x6c1c('0x82')](_0x232e9f,[_0x6c1c('0x80'),0x0]))return _0x3a2cb8;_0x29da07=[];var _0x152fef=_(_0x232e9f)[_0x6c1c('0x32')](function(_0xc5a79b){if(_0xc5a79b[_0x6c1c('0x80')]===0x1)return;return _0xc5a79b[_0x6c1c('0x38')]===_0x6c1c('0x7f')?_0x6c1c('0x2e'):_0x6c1c('0x84');})['compact']()['value']();for(var _0x3a4abd=0x0;_0x3a4abd<_0x3a2cb8['length'];_0x3a4abd++){if(!_[_0x6c1c('0x34')](_0x152fef,_0x3a2cb8[_0x3a4abd][_0x6c1c('0x2a')]))return;var _0x70b6c2=_0x3a2cb8[_0x3a4abd][_0x6c1c('0x2a')]===_0x6c1c('0x2e')?'Agents':_0x6c1c('0x2f');_0x29da07[_0x6c1c('0x44')](db[_0x6c1c('0x36')][_0x6c1c('0x79')]({'name':_0x3a2cb8[_0x3a4abd]['name'],'resourceId':_0x3a2cb8[_0x3a4abd]['id'],'type':_0x70b6c2,'sectionId':_['find'](_0x232e9f,[_0x6c1c('0x38'),_0x70b6c2])['id']},{}));}return BPromise[_0x6c1c('0x4d')](_0x29da07);});})['then'](respondWithResult(_0x27a9ea,0xc9))['catch'](handleError(_0x27a9ea,null));};exports[_0x6c1c('0x87')]=function(_0x3d272d,_0x13154a){if(_0x3d272d['body']['id']){delete _0x3d272d[_0x6c1c('0x5c')]['id'];}return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x3d272d['params']['id']}})[_0x6c1c('0x12')](function(_0x1ac1c1){if(!_0x1ac1c1)return null;if(_0x1ac1c1['id']===_0x3d272d[_0x6c1c('0x2d')]['id']){if(!_0x3d272d[_0x6c1c('0x5c')][_0x6c1c('0x88')]||!_0x3d272d[_0x6c1c('0x5c')]['newPassword']){throw new db['Sequelize'][(_0x6c1c('0x89'))](_0x6c1c('0x8a'));}if(!_0x1ac1c1['authenticate'](_0x3d272d['body'][_0x6c1c('0x88')])){throw new db[(_0x6c1c('0x8b'))][(_0x6c1c('0x89'))](_0x6c1c('0x8c'));}if(_0x3d272d[_0x6c1c('0x5c')][_0x6c1c('0x88')]===_0x3d272d[_0x6c1c('0x5c')]['newPassword']){throw new db['Sequelize'][(_0x6c1c('0x89'))](_0x6c1c('0x8d'));}}else if(_0x3d272d[_0x6c1c('0x2d')][_0x6c1c('0x2a')]===_0x6c1c('0x2b')){if(!_0x3d272d[_0x6c1c('0x5c')][_0x6c1c('0x8e')]){throw new db[(_0x6c1c('0x8b'))]['ValidationError'](_0x6c1c('0x8f'));}}else if(_0x3d272d[_0x6c1c('0x2d')][_0x6c1c('0x2a')]==='user'){if(!_0x3d272d['body'][_0x6c1c('0x8e')]){throw new db[(_0x6c1c('0x8b'))][(_0x6c1c('0x89'))](_0x6c1c('0x8f'));}if(_0x1ac1c1[_0x6c1c('0x2a')]!==_0x6c1c('0x2e')){throw new db[(_0x6c1c('0x8b'))]['ValidationError']('Unauthorized');}}else{throw new db[(_0x6c1c('0x8b'))][(_0x6c1c('0x89'))](_0x6c1c('0x90'));}return _0x1ac1c1;})[_0x6c1c('0x12')](handleEntityNotFound(_0x13154a,null))[_0x6c1c('0x12')](function(_0x1b75ed){return db[_0x6c1c('0x63')][_0x6c1c('0x91')]({'attributes':['id',_0x6c1c('0x64'),_0x6c1c('0x92'),_0x6c1c('0x93')]})[_0x6c1c('0x12')](function(_0x597350){if(_0x597350[_0x6c1c('0x64')])authService['validatePasswordPattern'](_0x3d272d['body'][_0x6c1c('0x8e')]);if(!_0x597350[_0x6c1c('0x92')]||!_0x1b75ed['previousPasswords'])return _0x1b75ed;authService[_0x6c1c('0x94')](_0x3d272d[_0x6c1c('0x5c')]['newPassword'],_0x1b75ed[_0x6c1c('0x95')],_0x597350[_0x6c1c('0x93')]);return _0x1b75ed;})[_0x6c1c('0x12')](saveUpdates({'password':_0x3d272d[_0x6c1c('0x5c')]['newPassword'],'passwordResetAt':_0x3d272d[_0x6c1c('0x2d')]['id']==_0x3d272d['params']['id']?moment():null,'previousPasswords':authService[_0x6c1c('0x96')](_0x3d272d[_0x6c1c('0x5c')][_0x6c1c('0x8e')],_0x1b75ed[_0x6c1c('0x95')])},null));})[_0x6c1c('0x12')](respondWithResult(_0x13154a,null))['catch'](handleError(_0x13154a,null));};exports[_0x6c1c('0x97')]=function(_0x20f9c5,_0x5f57e8){var _0x38770f=_0x20f9c5[_0x6c1c('0x5c')][_0x6c1c('0x98')];return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x20f9c5[_0x6c1c('0x5d')]['id']},'attributes':['id','name',_0x6c1c('0x2a'),_0x6c1c('0x99'),'loginInPause',_0x6c1c('0x9a'),_0x6c1c('0x9b')]})['then'](handleEntityNotFound(_0x5f57e8,null))[_0x6c1c('0x12')](function(_0x1c7dfb){if(_0x1c7dfb){if(!utils[_0x6c1c('0x9c')](_0x38770f)){throw new db[(_0x6c1c('0x8b'))][(_0x6c1c('0x89'))](_0x6c1c('0x9d'));}return _0x1c7dfb[_0x6c1c('0x9e')+_['capitalize'](_0x38770f[_0x6c1c('0x9f')]())+'Queues'](_0x20f9c5['body'][_0x6c1c('0x60')],{'penalty':_0x20f9c5[_0x6c1c('0x5c')][_0x6c1c('0xa0')]||0x0})[_0x6c1c('0xa1')](function(_0x17720e){for(var _0x456fa6=0x0;_0x456fa6<_0x20f9c5[_0x6c1c('0x5c')]['ids'][_0x6c1c('0x48')];_0x456fa6+=0x1){var _0x375e61={'UserId':Number(_0x20f9c5[_0x6c1c('0x5d')]['id'])};_0x375e61[_[_0x6c1c('0xa2')](_0x38770f[_0x6c1c('0x9f')]())+_0x6c1c('0xa3')]=Number(_0x20f9c5[_0x6c1c('0x5c')]['ids'][_0x456fa6]);socket[_0x6c1c('0xa4')](_0x6c1c('0x2d')+_[_0x6c1c('0xa2')](_0x38770f['toLowerCase']())+_0x6c1c('0xa5'),_0x375e61);}return _0x17720e;})['then'](function(){if(_0x38770f==='voice'){return db['VoiceQueue'][_0x6c1c('0x45')]({'where':{'id':_0x20f9c5['body'][_0x6c1c('0x60')]||[]},'raw':!![],'attributes':['id','name']});}})[_0x6c1c('0x12')](function(_0x22419a){var _0x4ab385=_0x1c7dfb['get']({'plain':!![]});var _0x46b8e1=[];if(_0x38770f===_0x6c1c('0xa6')&&_0x4ab385[_0x6c1c('0x2a')]===_0x6c1c('0x2e')&&_0x4ab385[_0x6c1c('0x99')]){for(var _0x338919=0x0;_0x338919<_0x22419a['length'];_0x338919+=0x1){_0x46b8e1[_0x6c1c('0x44')]({'membername':_0x4ab385[_0x6c1c('0x38')],'UserId':_0x4ab385['id'],'queue_name':_0x22419a[_0x338919]['name'],'VoiceQueueId':_0x22419a[_0x338919]['id'],'interface':_['isNil'](_0x4ab385['interface'])?util[_0x6c1c('0xa7')](_0x6c1c('0xa8'),_0x4ab385['name']):_0x4ab385[_0x6c1c('0x9b')],'paused':_0x4ab385[_0x6c1c('0x9a')]||![],'penalty':_0x20f9c5[_0x6c1c('0x5c')][_0x6c1c('0xa0')]||0x0});}return BPromise[_0x6c1c('0x83')](_0x46b8e1,function(_0x48ad83){return db[_0x6c1c('0xa9')][_0x6c1c('0xaa')](_0x48ad83);});}return _0x1c7dfb;});}})[_0x6c1c('0x12')](respondWithStatusCode(_0x5f57e8,null))[_0x6c1c('0x1d')](handleError(_0x5f57e8,null));};exports['removeQueues']=function(_0x32028b,_0x270f01){var _0x1df0fb;return db[_0x6c1c('0x3b')]['find']({'where':{'id':_0x32028b[_0x6c1c('0x5d')]['id']},'attributes':['id',_0x6c1c('0x38'),'role']})[_0x6c1c('0x12')](handleEntityNotFound(_0x270f01,null))[_0x6c1c('0x12')](function(_0x4e71ac){if(_0x4e71ac){_0x1df0fb=_0x4e71ac;if(!_0x32028b[_0x6c1c('0x41')][_0x6c1c('0x98')]||!utils[_0x6c1c('0x9c')](_0x32028b['query']['channel'])){throw new db['Sequelize'][(_0x6c1c('0x89'))](_0x6c1c('0x9d'));}return _0x4e71ac[_0x6c1c('0xab')+_['capitalize'](_0x32028b['query'][_0x6c1c('0x98')][_0x6c1c('0x9f')]())+'Queues'](_0x32028b['query'][_0x6c1c('0x60')]);}})[_0x6c1c('0x12')](function(_0x5d4003){if(_['isArray'](_0x32028b[_0x6c1c('0x41')][_0x6c1c('0x60')])){for(var _0x5eedbf=0x0;_0x5eedbf<_0x32028b['query']['ids'][_0x6c1c('0x48')];_0x5eedbf+=0x1){var _0x31bcbe={'UserId':Number(_0x32028b['params']['id'])};_0x31bcbe[_['capitalize'](_0x32028b['query'][_0x6c1c('0x98')][_0x6c1c('0x9f')]())+_0x6c1c('0xa3')]=Number(_0x32028b[_0x6c1c('0x41')][_0x6c1c('0x60')][_0x5eedbf]);socket[_0x6c1c('0xa4')]('user'+_[_0x6c1c('0xa2')](_0x32028b['query'][_0x6c1c('0x98')][_0x6c1c('0x9f')]())+_0x6c1c('0xac'),_0x31bcbe);}}else{var _0x31bcbe={'UserId':Number(_0x32028b[_0x6c1c('0x5d')]['id'])};_0x31bcbe[_[_0x6c1c('0xa2')](_0x32028b[_0x6c1c('0x41')][_0x6c1c('0x98')]['toLowerCase']())+_0x6c1c('0xa3')]=Number(_0x32028b[_0x6c1c('0x41')]['ids']);socket['emit'](_0x6c1c('0x2d')+_[_0x6c1c('0xa2')](_0x32028b[_0x6c1c('0x41')][_0x6c1c('0x98')][_0x6c1c('0x9f')]())+_0x6c1c('0xac'),_0x31bcbe);}return _0x5d4003;})['then'](function(){if(_0x32028b['query']['channel']===_0x6c1c('0xa6')){return db['UserVoiceQueueRt'][_0x6c1c('0x28')]({'where':{'UserId':_0x32028b[_0x6c1c('0x5d')]['id'],'VoiceQueueId':_0x32028b['query'][_0x6c1c('0x60')]},'individualHooks':!![]})['then'](function(){return _0x1df0fb;});}return _0x1df0fb;})['then'](respondWithStatusCode(_0x270f01,null))[_0x6c1c('0x1d')](handleError(_0x270f01,null));};exports[_0x6c1c('0xad')]=function(_0x11ca6a,_0x25879e){_0x11ca6a[_0x6c1c('0x5c')][_0x6c1c('0xae')]=_0x11ca6a[_0x6c1c('0xaf')]['filename'];return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x11ca6a[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x25879e,null))[_0x6c1c('0x12')](saveUpdates(_0x11ca6a[_0x6c1c('0x5c')],null))[_0x6c1c('0x12')](respondWithResult(_0x25879e,null))[_0x6c1c('0x1d')](handleError(_0x25879e,null));};exports[_0x6c1c('0xb0')]=function(_0x1e288e,_0x2ea532){var _0x59a052=path['join'](config[_0x6c1c('0xb1')],'server/files/images/logos/default_profile.png');return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x1e288e[_0x6c1c('0x5d')]['id']},'attributes':['id','userpic'],'raw':!![]})[_0x6c1c('0x12')](handleEntityNotFound(_0x2ea532,null))['then'](function(_0x611bd6){if(_0x611bd6){if(_[_0x6c1c('0x67')](_0x611bd6[_0x6c1c('0xae')])){return _0x2ea532[_0x6c1c('0xb2')](_0x59a052);}else{if(!fs[_0x6c1c('0xb3')](path['join'](config['root'],'server/files/images/',_0x611bd6['userpic']))){return _0x2ea532[_0x6c1c('0xb2')](_0x59a052);}return _0x2ea532[_0x6c1c('0xb2')](path[_0x6c1c('0xb4')](config[_0x6c1c('0xb1')],'server/files/images/',_0x611bd6[_0x6c1c('0xae')]));}}})['catch'](handleError(_0x2ea532,null));};exports['getOpenTabs']=function(_0x4012c4,_0x1f65aa){return db['User'][_0x6c1c('0x35')]({'where':{'id':_0x4012c4[_0x6c1c('0x5d')]['id']},'attributes':['id']})['then'](handleEntityNotFound(_0x1f65aa,null))[_0x6c1c('0x12')](function(_0x4d3198){var _0x5ddb1a=[];values=_0x4d3198['dataValues'];_0x5ddb1a[_0x6c1c('0x44')](get_open_tabs('chat',_0x4d3198['dataValues']));_0x5ddb1a[_0x6c1c('0x44')](get_open_tabs(_0x6c1c('0xb5'),_0x4d3198[_0x6c1c('0x49')]));_0x5ddb1a[_0x6c1c('0x44')](get_open_tabs(_0x6c1c('0x5b'),_0x4d3198['dataValues']));_0x5ddb1a['push'](get_open_tabs(_0x6c1c('0x4c'),_0x4d3198['dataValues']));_0x5ddb1a[_0x6c1c('0x44')](get_open_tabs(_0x6c1c('0x4a'),_0x4d3198[_0x6c1c('0x49')]));_0x5ddb1a[_0x6c1c('0x44')](get_open_tabs('mail',_0x4d3198[_0x6c1c('0x49')]));return BPromise[_0x6c1c('0x4d')](_0x5ddb1a);})[_0x6c1c('0x12')](function(_0x3405e1){var _0x327bd4=[];if(_0x3405e1){for(var _0x154412=0x0;_0x154412<values[_0x6c1c('0xb6')][_0x6c1c('0x48')];_0x154412++){var _0x2c1f00=values[_0x6c1c('0xb6')][_0x154412];_0x327bd4[_0x6c1c('0x44')]({'channel':'CHAT','id':_0x2c1f00['id'],'createdAt':_0x2c1f00['createdAt']});}for(var _0x154412=0x0;_0x154412<values[_0x6c1c('0xb7')][_0x6c1c('0x48')];_0x154412++){var _0x2c1f00=values[_0x6c1c('0xb7')][_0x154412];_0x327bd4[_0x6c1c('0x44')]({'channel':_0x6c1c('0xb8'),'id':_0x2c1f00['id'],'createdAt':_0x2c1f00[_0x6c1c('0xb9')]});}for(var _0x154412=0x0;_0x154412<values[_0x6c1c('0xba')][_0x6c1c('0x48')];_0x154412++){var _0x2c1f00=values[_0x6c1c('0xba')][_0x154412];_0x327bd4[_0x6c1c('0x44')]({'channel':_0x6c1c('0xbb'),'id':_0x2c1f00['id'],'createdAt':_0x2c1f00[_0x6c1c('0xb9')]});}for(var _0x154412=0x0;_0x154412<values[_0x6c1c('0xbc')][_0x6c1c('0x48')];_0x154412++){var _0x2c1f00=values[_0x6c1c('0xbc')][_0x154412];_0x327bd4[_0x6c1c('0x44')]({'channel':_0x6c1c('0xbd'),'id':_0x2c1f00['id'],'createdAt':_0x2c1f00[_0x6c1c('0xb9')]});}for(var _0x154412=0x0;_0x154412<values[_0x6c1c('0xbe')]['length'];_0x154412++){var _0x2c1f00=values['SmsOpenTabs'][_0x154412];_0x327bd4['push']({'channel':'SMS','id':_0x2c1f00['id'],'createdAt':_0x2c1f00[_0x6c1c('0xb9')]});}for(var _0x154412=0x0;_0x154412<values[_0x6c1c('0xbf')][_0x6c1c('0x48')];_0x154412++){var _0x2c1f00=values[_0x6c1c('0xbf')][_0x154412];_0x327bd4[_0x6c1c('0x44')]({'channel':_0x6c1c('0xc0'),'id':_0x2c1f00['id'],'createdAt':_0x2c1f00['createdAt']});}var _0x3733ac={'count':_0x327bd4[_0x6c1c('0x48')],'rows':_0x327bd4};return _0x3733ac;}else return null;})[_0x6c1c('0x12')](respondWithResult(_0x1f65aa,null))['catch'](handleError(_0x1f65aa,null));};exports[_0x6c1c('0xc1')]=function(_0x38e151,_0x256233){var _0x53b04c={};var _0x53872f={};var _0x150fbe;var _0x164766;return db['User'][_0x6c1c('0x91')]({'where':{'id':_0x38e151['params']['id']}})['then'](handleEntityNotFound(_0x256233,null))[_0x6c1c('0x12')](function(_0x5d9f47){if(_0x5d9f47){_0x150fbe=_0x5d9f47;_0x53872f[_0x6c1c('0x4f')]=_['keys'](db[_0x6c1c('0xc2')][_0x6c1c('0x3c')]);_0x53872f[_0x6c1c('0x41')]=_[_0x6c1c('0x53')](_0x38e151['query']);_0x53872f[_0x6c1c('0x54')]=_[_0x6c1c('0xc3')](_0x53872f['model'],_0x53872f[_0x6c1c('0x41')]);_0x53b04c['attributes']=_[_0x6c1c('0xc3')](_0x53872f['model'],qs['fields'](_0x38e151['query']['fields']));_0x53b04c[_0x6c1c('0x43')]=_0x53b04c[_0x6c1c('0x43')][_0x6c1c('0x48')]?_0x53b04c[_0x6c1c('0x43')]:_0x53872f['model'];_0x53b04c[_0x6c1c('0xc4')]=qs[_0x6c1c('0xc5')](_0x38e151[_0x6c1c('0x41')]['sort']);_0x53b04c['where']=qs[_0x6c1c('0x54')](_[_0x6c1c('0xc6')](_0x38e151[_0x6c1c('0x41')],_0x53872f[_0x6c1c('0x54')]));if(_0x38e151[_0x6c1c('0x41')][_0x6c1c('0x30')]){_0x53b04c[_0x6c1c('0x40')]=_['merge'](_0x53b04c['where'],{'$or':_['map'](_0x53b04c['attributes'],function(_0x363340){var _0x50709b={};_0x50709b[_0x363340]={'$like':'%'+_0x38e151['query'][_0x6c1c('0x30')]+'%'};return _0x50709b;})});}_0x53b04c=_[_0x6c1c('0x57')]({},_0x53b04c,_0x38e151[_0x6c1c('0x58')]);return _0x150fbe[_0x6c1c('0xc1')](_0x53b04c);}})[_0x6c1c('0x12')](function(_0x61a0b3){if(_0x61a0b3){_0x164766=_0x61a0b3['length'];if(_0x38e151[_0x6c1c('0x41')][_0x6c1c('0xc7')](_0x6c1c('0x42'))){_0x53b04c['include']=[{'model':db[_0x6c1c('0xc8')],'as':_0x6c1c('0xc9'),'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id','name','color'],'where':_0x38e151[_0x6c1c('0x41')]['tag']?{'id':_0x38e151['query'][_0x6c1c('0xca')]}:undefined,'required':_0x38e151[_0x6c1c('0x41')]['tag']?!![]:![]}];}if(!_0x38e151[_0x6c1c('0x41')][_0x6c1c('0xc7')](_0x6c1c('0xcb'))){_0x53b04c[_0x6c1c('0x24')]=qs['limit'](_0x38e151[_0x6c1c('0x41')]['limit']);_0x53b04c[_0x6c1c('0x22')]=qs[_0x6c1c('0x22')](_0x38e151[_0x6c1c('0x41')]['offset']);}return _0x150fbe[_0x6c1c('0xc1')](_0x53b04c);}})['then'](function(_0xd63bc0){if(_0xd63bc0){return _0xd63bc0?{'count':_0x164766,'rows':_0xd63bc0}:null;}})['then'](respondWithResult(_0x256233,null))[_0x6c1c('0x1d')](handleError(_0x256233,null));};exports[_0x6c1c('0xcc')]=function(_0xd123c9,_0x91d249){var _0x38e55b;var _0x364a4c;var _0x346aab={};var _0x3e34cc;return db[_0x6c1c('0x3b')][_0x6c1c('0x91')]({'where':{'id':_0xd123c9[_0x6c1c('0x5d')]['id']},'attributes':['id',_0x6c1c('0x38'),_0x6c1c('0x2a')]})['then'](handleEntityNotFound(_0x91d249,null))[_0x6c1c('0x12')](function(_0x5b4240){if(!utils[_0x6c1c('0x9c')](_0xd123c9[_0x6c1c('0x41')][_0x6c1c('0x98')])){throw new db[(_0x6c1c('0x8b'))][(_0x6c1c('0x89'))](_0x6c1c('0x9d'));}_0x38e55b=_0x5b4240;var _0xc24d92={};_0xc24d92[_0x6c1c('0x4f')]=_[_0x6c1c('0x53')](db[_[_0x6c1c('0xa2')](_0xd123c9[_0x6c1c('0x41')][_0x6c1c('0x98')])+_0x6c1c('0xcd')][_0x6c1c('0x3c')]);_0xc24d92['query']=_[_0x6c1c('0x53')](_0xd123c9[_0x6c1c('0x41')]);_0xc24d92['filters']=_[_0x6c1c('0xc3')](_0xc24d92['model'],_0xc24d92[_0x6c1c('0x41')]);_0x346aab['attributes']=_[_0x6c1c('0xc3')](_0xc24d92['model'],qs[_0x6c1c('0x55')](_0xd123c9['query'][_0x6c1c('0x55')]));_0x346aab[_0x6c1c('0x43')]=_0x346aab[_0x6c1c('0x43')][_0x6c1c('0x48')]?_0x346aab[_0x6c1c('0x43')]:_0xc24d92[_0x6c1c('0x4f')];_0x346aab[_0x6c1c('0xc4')]=qs[_0x6c1c('0xc5')](_0xd123c9[_0x6c1c('0x41')]['sort']);_0x346aab[_0x6c1c('0x40')]=qs[_0x6c1c('0x54')](_[_0x6c1c('0xc6')](_0xd123c9['query'],_0xc24d92['filters']));if(_0xd123c9['query'][_0x6c1c('0x30')]){_0x346aab['where']=_[_0x6c1c('0x57')](_0x346aab[_0x6c1c('0x40')],{'$or':_[_0x6c1c('0x32')](_0x346aab[_0x6c1c('0x43')],function(_0x38ed3c){var _0x1437fe={};_0x1437fe[_0x38ed3c]={'$like':'%'+_0xd123c9[_0x6c1c('0x41')]['filter']+'%'};return _0x1437fe;})});}_0x346aab=_[_0x6c1c('0x57')]({},_0x346aab,_0xd123c9[_0x6c1c('0x58')]);switch(_0x38e55b[_0x6c1c('0x2a')]){case _0x6c1c('0x2b'):return db[_['capitalize'](_0xd123c9['query'][_0x6c1c('0x98')])+_0x6c1c('0xcd')]['findAll'](_0x346aab);case _0x6c1c('0x2d'):case _0x6c1c('0x2e'):return _0x38e55b[_0x6c1c('0x29')+_['capitalize'](_0xd123c9['query'][_0x6c1c('0x98')])+_0x6c1c('0xce')](_0x346aab);default:throw new db[(_0x6c1c('0x8b'))][(_0x6c1c('0x89'))](_0x6c1c('0xcf'));}})[_0x6c1c('0x12')](function(_0x543869){_0x3e34cc=_0x543869[_0x6c1c('0x48')];if(!_0xd123c9[_0x6c1c('0x41')]['hasOwnProperty'](_0x6c1c('0xcb'))){_0x346aab[_0x6c1c('0x24')]=qs[_0x6c1c('0x24')](_0xd123c9[_0x6c1c('0x41')]['limit']);_0x346aab[_0x6c1c('0x22')]=qs[_0x6c1c('0x22')](_0xd123c9[_0x6c1c('0x41')]['offset']);}switch(_0x38e55b[_0x6c1c('0x2a')]){case _0x6c1c('0x2b'):return db[_[_0x6c1c('0xa2')](_0xd123c9['query']['channel'])+_0x6c1c('0xcd')][_0x6c1c('0x45')](_0x346aab);case'user':case _0x6c1c('0x2e'):return _0x38e55b[_0x6c1c('0x29')+_[_0x6c1c('0xa2')](_0xd123c9[_0x6c1c('0x41')]['channel'])+'Queues'](_0x346aab);}})[_0x6c1c('0x12')](function(_0x2cb49e){return{'count':_0x3e34cc,'rows':_0x2cb49e};})[_0x6c1c('0x12')](respondWithResult(_0x91d249,null))[_0x6c1c('0x1d')](handleError(_0x91d249,null));};exports['getVoiceQueuesRt']=function(_0x1e55bf,_0x4d5c0a){var _0xf57c32={};var _0x2a265a={};var _0x542964;var _0x49343b;return db[_0x6c1c('0x3b')]['findOne']({'where':{'id':_0x1e55bf[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x4d5c0a,null))[_0x6c1c('0x12')](function(_0x3f24c0){if(_0x3f24c0){_0x542964=_0x3f24c0;_0x2a265a[_0x6c1c('0x4f')]=_[_0x6c1c('0x53')](db[_0x6c1c('0xa9')][_0x6c1c('0x3c')]);_0x2a265a[_0x6c1c('0x41')]=_[_0x6c1c('0x53')](_0x1e55bf[_0x6c1c('0x41')]);_0x2a265a[_0x6c1c('0x54')]=_[_0x6c1c('0xc3')](_0x2a265a[_0x6c1c('0x4f')],_0x2a265a[_0x6c1c('0x41')]);_0xf57c32[_0x6c1c('0x43')]=_[_0x6c1c('0xc3')](_0x2a265a[_0x6c1c('0x4f')],qs['fields'](_0x1e55bf[_0x6c1c('0x41')]['fields']));_0xf57c32[_0x6c1c('0x43')]=_0xf57c32[_0x6c1c('0x43')]['length']?_0xf57c32[_0x6c1c('0x43')]:_0x2a265a[_0x6c1c('0x4f')];_0xf57c32['order']=qs[_0x6c1c('0xc5')](_0x1e55bf[_0x6c1c('0x41')][_0x6c1c('0xc5')]);_0xf57c32[_0x6c1c('0x40')]=qs['filters'](_[_0x6c1c('0xc6')](_0x1e55bf[_0x6c1c('0x41')],_0x2a265a['filters']));if(_0x1e55bf[_0x6c1c('0x41')][_0x6c1c('0x30')]){_0xf57c32[_0x6c1c('0x40')]=_[_0x6c1c('0x57')](_0xf57c32[_0x6c1c('0x40')],{'$or':_[_0x6c1c('0x32')](_0xf57c32[_0x6c1c('0x43')],function(_0x52c7e0){var _0x48eb85={};_0x48eb85[_0x52c7e0]={'$like':'%'+_0x1e55bf[_0x6c1c('0x41')][_0x6c1c('0x30')]+'%'};return _0x48eb85;})});}_0xf57c32=_[_0x6c1c('0x57')]({},_0xf57c32,_0x1e55bf[_0x6c1c('0x58')]);return _0x542964[_0x6c1c('0xd0')](_0xf57c32);}})[_0x6c1c('0x12')](function(_0xf7d85e){if(_0xf7d85e){_0x49343b=_0xf7d85e[_0x6c1c('0x48')];if(!_0x1e55bf[_0x6c1c('0x41')][_0x6c1c('0xc7')](_0x6c1c('0xcb'))){_0xf57c32['limit']=qs[_0x6c1c('0x24')](_0x1e55bf[_0x6c1c('0x41')][_0x6c1c('0x24')]);_0xf57c32[_0x6c1c('0x22')]=qs[_0x6c1c('0x22')](_0x1e55bf[_0x6c1c('0x41')][_0x6c1c('0x22')]);}return _0x542964['getVoiceQueuesRt'](_0xf57c32);}})[_0x6c1c('0x12')](function(_0x40a3f7){if(_0x40a3f7){return _0x40a3f7?{'count':_0x49343b,'rows':_0x40a3f7}:null;}})[_0x6c1c('0x12')](respondWithResult(_0x4d5c0a,null))['catch'](handleError(_0x4d5c0a,null));};exports[_0x6c1c('0xd1')]=function(_0x52d7a1,_0x2954fa){var _0x3f23d8={};var _0x1f87aa={};var _0x7ea68a;var _0x1be047;return db[_0x6c1c('0x3b')][_0x6c1c('0x91')]({'where':{'id':_0x52d7a1['params']['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x2954fa,null))[_0x6c1c('0x12')](function(_0x743bad){if(_0x743bad){_0x7ea68a=_0x743bad;_0x1f87aa['model']=_['keys'](db[_0x6c1c('0xd2')][_0x6c1c('0x3c')]);_0x1f87aa[_0x6c1c('0x41')]=_[_0x6c1c('0x53')](_0x52d7a1[_0x6c1c('0x41')]);_0x1f87aa['filters']=_[_0x6c1c('0xc3')](_0x1f87aa[_0x6c1c('0x4f')],_0x1f87aa[_0x6c1c('0x41')]);_0x3f23d8[_0x6c1c('0x43')]=_['intersection'](_0x1f87aa['model'],qs[_0x6c1c('0x55')](_0x52d7a1[_0x6c1c('0x41')]['fields']));_0x3f23d8[_0x6c1c('0x43')]=_0x3f23d8['attributes'][_0x6c1c('0x48')]?_0x3f23d8[_0x6c1c('0x43')]:_0x1f87aa['model'];_0x3f23d8[_0x6c1c('0xc4')]=qs['sort'](_0x52d7a1[_0x6c1c('0x41')][_0x6c1c('0xc5')]);_0x3f23d8[_0x6c1c('0x40')]=qs[_0x6c1c('0x54')](_[_0x6c1c('0xc6')](_0x52d7a1[_0x6c1c('0x41')],_0x1f87aa['filters']));if(_0x52d7a1[_0x6c1c('0x41')][_0x6c1c('0x30')]){_0x3f23d8[_0x6c1c('0x40')]=_[_0x6c1c('0x57')](_0x3f23d8[_0x6c1c('0x40')],{'$or':_[_0x6c1c('0x32')](_0x3f23d8[_0x6c1c('0x43')],function(_0x3a66bd){var _0x190471={};_0x190471[_0x3a66bd]={'$like':'%'+_0x52d7a1[_0x6c1c('0x41')][_0x6c1c('0x30')]+'%'};return _0x190471;})});}_0x3f23d8=_[_0x6c1c('0x57')]({},_0x3f23d8,_0x52d7a1[_0x6c1c('0x58')]);return _0x7ea68a['getGroups'](_0x3f23d8);}})['then'](function(_0x857841){if(_0x857841){_0x1be047=_0x857841[_0x6c1c('0x48')];if(!_0x52d7a1[_0x6c1c('0x41')][_0x6c1c('0xc7')]('nolimit')){_0x3f23d8[_0x6c1c('0x24')]=qs[_0x6c1c('0x24')](_0x52d7a1[_0x6c1c('0x41')][_0x6c1c('0x24')]);_0x3f23d8[_0x6c1c('0x22')]=qs[_0x6c1c('0x22')](_0x52d7a1[_0x6c1c('0x41')][_0x6c1c('0x22')]);}return _0x7ea68a['getGroups'](_0x3f23d8);}})[_0x6c1c('0x12')](function(_0x3bf2fa){if(_0x3bf2fa){return _0x3bf2fa?{'count':_0x1be047,'rows':_0x3bf2fa}:null;}})[_0x6c1c('0x12')](respondWithResult(_0x2954fa,null))[_0x6c1c('0x1d')](handleError(_0x2954fa,null));};exports[_0x6c1c('0xd3')]=function(_0x1e7549,_0x42b36f){var _0x2cddf2={'raw':!![],'where':{}};var _0x2d981c={};var _0x1d0c82={'count':0x0,'rows':[]};return db[_0x6c1c('0x3b')]['findOne']({'where':{'id':_0x1e7549[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x42b36f,null))['then'](function(_0x43065c){if(_0x43065c){_0x2d981c[_0x6c1c('0x4f')]=_['keys'](db['VoiceRecording'][_0x6c1c('0x3c')]);_0x2d981c[_0x6c1c('0x41')]=_[_0x6c1c('0x53')](_0x1e7549[_0x6c1c('0x41')]);_0x2d981c[_0x6c1c('0x54')]=_['intersection'](_0x2d981c[_0x6c1c('0x4f')],_0x2d981c[_0x6c1c('0x41')]);_0x2cddf2['attributes']=_[_0x6c1c('0xc3')](_0x2d981c[_0x6c1c('0x4f')],qs[_0x6c1c('0x55')](_0x1e7549[_0x6c1c('0x41')][_0x6c1c('0x55')]));_0x2cddf2[_0x6c1c('0x43')]=_0x2cddf2[_0x6c1c('0x43')][_0x6c1c('0x48')]?_0x2cddf2[_0x6c1c('0x43')]:_0x2d981c[_0x6c1c('0x4f')];if(!_0x1e7549[_0x6c1c('0x41')][_0x6c1c('0xc7')](_0x6c1c('0xcb'))){_0x2cddf2[_0x6c1c('0x24')]=qs[_0x6c1c('0x24')](_0x1e7549[_0x6c1c('0x41')][_0x6c1c('0x24')]);_0x2cddf2[_0x6c1c('0x22')]=qs[_0x6c1c('0x22')](_0x1e7549[_0x6c1c('0x41')][_0x6c1c('0x22')]);}_0x2cddf2['order']=qs[_0x6c1c('0xc5')](_0x1e7549[_0x6c1c('0x41')]['sort']);_0x2cddf2[_0x6c1c('0x40')]=qs[_0x6c1c('0x54')](_[_0x6c1c('0xc6')](_0x1e7549[_0x6c1c('0x41')],_0x2d981c['filters']));_0x2cddf2[_0x6c1c('0x40')][_0x6c1c('0xd4')]=_0x43065c['id'];if(_0x1e7549[_0x6c1c('0x41')][_0x6c1c('0x30')]){_0x2cddf2[_0x6c1c('0x40')]=_[_0x6c1c('0x57')](_0x2cddf2[_0x6c1c('0x40')],{'$or':_['map'](_0x2cddf2[_0x6c1c('0x43')],function(_0x367607){var _0x41f76f={};_0x41f76f[_0x367607]={'$like':'%'+_0x1e7549[_0x6c1c('0x41')][_0x6c1c('0x30')]+'%'};return _0x41f76f;})});}_0x2cddf2=_[_0x6c1c('0x57')]({},_0x2cddf2,_0x1e7549[_0x6c1c('0x58')]);return db[_0x6c1c('0xd5')]['count']({'where':_0x2cddf2['where']})[_0x6c1c('0x12')](function(_0x4c57f9){_0x1d0c82['count']=_0x4c57f9;if(_0x1e7549[_0x6c1c('0x41')][_0x6c1c('0x42')]){_0x2cddf2['include']=[{'all':!![]}];}return db[_0x6c1c('0xd5')][_0x6c1c('0x45')](_0x2cddf2);})[_0x6c1c('0x12')](function(_0x3a4965){_0x1d0c82[_0x6c1c('0x46')]=_0x3a4965;return _0x1d0c82;});}})[_0x6c1c('0x12')](respondWithFilteredResult(_0x42b36f,_0x2cddf2))['catch'](handleError(_0x42b36f,null));};exports[_0x6c1c('0xd6')]=function(_0x4738d7,_0x3c10a0){var _0x3ae99c={'raw':!![],'where':{}};var _0x1b9440={};var _0x2f7eb3={'count':0x0,'rows':[]};return db[_0x6c1c('0x3b')]['findOne']({'where':{'id':_0x4738d7[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x3c10a0,null))[_0x6c1c('0x12')](function(_0x196b32){if(_0x196b32){_0x1b9440['model']=_['keys'](db[_0x6c1c('0xd7')]['rawAttributes']);_0x1b9440['query']=_[_0x6c1c('0x53')](_0x4738d7[_0x6c1c('0x41')]);_0x1b9440[_0x6c1c('0x54')]=_[_0x6c1c('0xc3')](_0x1b9440[_0x6c1c('0x4f')],_0x1b9440[_0x6c1c('0x41')]);_0x3ae99c['attributes']=_[_0x6c1c('0xc3')](_0x1b9440['model'],qs[_0x6c1c('0x55')](_0x4738d7[_0x6c1c('0x41')][_0x6c1c('0x55')]));_0x3ae99c[_0x6c1c('0x43')]=_0x3ae99c[_0x6c1c('0x43')]['length']?_0x3ae99c[_0x6c1c('0x43')]:_0x1b9440[_0x6c1c('0x4f')];if(!_0x4738d7[_0x6c1c('0x41')][_0x6c1c('0xc7')](_0x6c1c('0xcb'))){_0x3ae99c[_0x6c1c('0x24')]=qs[_0x6c1c('0x24')](_0x4738d7[_0x6c1c('0x41')][_0x6c1c('0x24')]);_0x3ae99c[_0x6c1c('0x22')]=qs[_0x6c1c('0x22')](_0x4738d7[_0x6c1c('0x41')][_0x6c1c('0x22')]);}_0x3ae99c['order']=qs[_0x6c1c('0xc5')](_0x4738d7[_0x6c1c('0x41')]['sort']);_0x3ae99c['where']=qs[_0x6c1c('0x54')](_[_0x6c1c('0xc6')](_0x4738d7['query'],_0x1b9440[_0x6c1c('0x54')]));_0x3ae99c[_0x6c1c('0x40')][_0x6c1c('0xd4')]=_0x196b32['id'];if(_0x4738d7['query']['filter']){_0x3ae99c['where']=_[_0x6c1c('0x57')](_0x3ae99c[_0x6c1c('0x40')],{'$or':_[_0x6c1c('0x32')](_0x3ae99c['attributes'],function(_0x4e60c3){var _0x531848={};_0x531848[_0x4e60c3]={'$like':'%'+_0x4738d7[_0x6c1c('0x41')]['filter']+'%'};return _0x531848;})});}_0x3ae99c=_['merge']({},_0x3ae99c,_0x4738d7['options']);return db[_0x6c1c('0xd7')][_0x6c1c('0x25')]({'where':_0x3ae99c[_0x6c1c('0x40')]})['then'](function(_0x955c96){_0x2f7eb3[_0x6c1c('0x25')]=_0x955c96;if(_0x4738d7['query'][_0x6c1c('0x42')]){_0x3ae99c[_0x6c1c('0x56')]=[{'all':!![]}];}return db[_0x6c1c('0xd7')][_0x6c1c('0x45')](_0x3ae99c);})[_0x6c1c('0x12')](function(_0x1962d9){_0x2f7eb3[_0x6c1c('0x46')]=_0x1962d9;return _0x2f7eb3;});}})[_0x6c1c('0x12')](respondWithFilteredResult(_0x3c10a0,_0x3ae99c))[_0x6c1c('0x1d')](handleError(_0x3c10a0,null));};exports[_0x6c1c('0xd8')]=function(_0x23f72d,_0x5c271c){var _0x2173f0={};var _0xf2c805={};var _0x50bea7;var _0x1fde27;return db['User'][_0x6c1c('0x91')]({'where':{'id':_0x23f72d['params']['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x5c271c,null))[_0x6c1c('0x12')](function(_0x33ae1e){if(_0x33ae1e){_0x50bea7=_0x33ae1e;_0xf2c805[_0x6c1c('0x4f')]=_['keys'](db['ChatInteraction'][_0x6c1c('0x3c')]);_0xf2c805[_0x6c1c('0x41')]=_[_0x6c1c('0x53')](_0x23f72d['query']);_0xf2c805['filters']=_[_0x6c1c('0xc3')](_0xf2c805['model'],_0xf2c805['query']);_0x2173f0[_0x6c1c('0x43')]=_['intersection'](_0xf2c805[_0x6c1c('0x4f')],qs['fields'](_0x23f72d[_0x6c1c('0x41')][_0x6c1c('0x55')]));_0x2173f0['attributes']=_0x2173f0[_0x6c1c('0x43')][_0x6c1c('0x48')]?_0x2173f0['attributes']:_0xf2c805[_0x6c1c('0x4f')];_0x2173f0['order']=qs[_0x6c1c('0xc5')](_0x23f72d[_0x6c1c('0x41')]['sort']);_0x2173f0['where']=qs[_0x6c1c('0x54')](_[_0x6c1c('0xc6')](_0x23f72d[_0x6c1c('0x41')],_0xf2c805['filters']));if(_0x23f72d[_0x6c1c('0x41')][_0x6c1c('0x30')]){_0x2173f0[_0x6c1c('0x40')]=_[_0x6c1c('0x57')](_0x2173f0['where'],{'$or':_[_0x6c1c('0x32')](_0x2173f0[_0x6c1c('0x43')],function(_0x540962){var _0x22c9e5={};_0x22c9e5[_0x540962]={'$like':'%'+_0x23f72d[_0x6c1c('0x41')][_0x6c1c('0x30')]+'%'};return _0x22c9e5;})});}_0x2173f0=_['merge']({},_0x2173f0,_0x23f72d['options']);return _0x50bea7[_0x6c1c('0xd8')](_0x2173f0);}})['then'](function(_0x1024dd){if(_0x1024dd){_0x1fde27=_0x1024dd[_0x6c1c('0x48')];if(!_0x23f72d[_0x6c1c('0x41')][_0x6c1c('0xc7')](_0x6c1c('0xcb'))){_0x2173f0[_0x6c1c('0x24')]=qs[_0x6c1c('0x24')](_0x23f72d[_0x6c1c('0x41')][_0x6c1c('0x24')]);_0x2173f0[_0x6c1c('0x22')]=qs['offset'](_0x23f72d['query'][_0x6c1c('0x22')]);}return _0x50bea7[_0x6c1c('0xd8')](_0x2173f0);}})[_0x6c1c('0x12')](function(_0x3bfb62){if(_0x3bfb62){return _0x3bfb62?{'count':_0x1fde27,'rows':_0x3bfb62}:null;}})['then'](respondWithResult(_0x5c271c,null))[_0x6c1c('0x1d')](handleError(_0x5c271c,null));};exports[_0x6c1c('0xd9')]=function(_0x32c641,_0x5d23ce){var _0x50c68f={};var _0xd9e7a8={};var _0x3a7753;var _0x1357c9;return db['User'][_0x6c1c('0x91')]({'where':{'id':_0x32c641[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x5d23ce,null))[_0x6c1c('0x12')](function(_0x5c69d5){if(_0x5c69d5){_0x3a7753=_0x5c69d5;_0xd9e7a8[_0x6c1c('0x4f')]=_[_0x6c1c('0x53')](db[_0x6c1c('0xda')][_0x6c1c('0x3c')]);_0xd9e7a8[_0x6c1c('0x41')]=_[_0x6c1c('0x53')](_0x32c641[_0x6c1c('0x41')]);_0xd9e7a8['filters']=_['intersection'](_0xd9e7a8[_0x6c1c('0x4f')],_0xd9e7a8[_0x6c1c('0x41')]);_0x50c68f[_0x6c1c('0x43')]=_['intersection'](_0xd9e7a8[_0x6c1c('0x4f')],qs[_0x6c1c('0x55')](_0x32c641[_0x6c1c('0x41')][_0x6c1c('0x55')]));_0x50c68f[_0x6c1c('0x43')]=_0x50c68f[_0x6c1c('0x43')][_0x6c1c('0x48')]?_0x50c68f['attributes']:_0xd9e7a8[_0x6c1c('0x4f')];_0x50c68f[_0x6c1c('0xc4')]=qs[_0x6c1c('0xc5')](_0x32c641[_0x6c1c('0x41')]['sort']);_0x50c68f[_0x6c1c('0x40')]=qs[_0x6c1c('0x54')](_[_0x6c1c('0xc6')](_0x32c641['query'],_0xd9e7a8[_0x6c1c('0x54')]));if(_0x32c641[_0x6c1c('0x41')][_0x6c1c('0x30')]){_0x50c68f[_0x6c1c('0x40')]=_[_0x6c1c('0x57')](_0x50c68f[_0x6c1c('0x40')],{'$or':_[_0x6c1c('0x32')](_0x50c68f[_0x6c1c('0x43')],function(_0x151ab2){var _0x5ed497={};_0x5ed497[_0x151ab2]={'$like':'%'+_0x32c641[_0x6c1c('0x41')][_0x6c1c('0x30')]+'%'};return _0x5ed497;})});}_0x50c68f=_[_0x6c1c('0x57')]({},_0x50c68f,_0x32c641[_0x6c1c('0x58')]);return _0x3a7753['getOpenchannelInteractions'](_0x50c68f);}})[_0x6c1c('0x12')](function(_0xc8047){if(_0xc8047){_0x1357c9=_0xc8047['length'];if(!_0x32c641[_0x6c1c('0x41')][_0x6c1c('0xc7')](_0x6c1c('0xcb'))){_0x50c68f[_0x6c1c('0x24')]=qs[_0x6c1c('0x24')](_0x32c641['query'][_0x6c1c('0x24')]);_0x50c68f[_0x6c1c('0x22')]=qs[_0x6c1c('0x22')](_0x32c641[_0x6c1c('0x41')]['offset']);}return _0x3a7753[_0x6c1c('0xd9')](_0x50c68f);}})[_0x6c1c('0x12')](function(_0x2f2fc2){if(_0x2f2fc2){return _0x2f2fc2?{'count':_0x1357c9,'rows':_0x2f2fc2}:null;}})['then'](respondWithResult(_0x5d23ce,null))[_0x6c1c('0x1d')](handleError(_0x5d23ce,null));};exports[_0x6c1c('0xdb')]=function(_0x554b31,_0x237699){var _0x52ba7e={'raw':!![],'where':{}};var _0x2be2e4={};var _0x448f3e={'count':0x0,'rows':[]};return db['User']['findOne']({'where':{'id':_0x554b31['params']['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x237699,null))['then'](function(_0xef9eb8){if(_0xef9eb8){_0x2be2e4['model']=_[_0x6c1c('0x53')](db[_0x6c1c('0xdc')][_0x6c1c('0x3c')]);_0x2be2e4['query']=_[_0x6c1c('0x53')](_0x554b31[_0x6c1c('0x41')]);_0x2be2e4[_0x6c1c('0x54')]=_['intersection'](_0x2be2e4[_0x6c1c('0x4f')],_0x2be2e4[_0x6c1c('0x41')]);_0x52ba7e[_0x6c1c('0x43')]=_[_0x6c1c('0xc3')](_0x2be2e4[_0x6c1c('0x4f')],qs[_0x6c1c('0x55')](_0x554b31[_0x6c1c('0x41')][_0x6c1c('0x55')]));_0x52ba7e[_0x6c1c('0x43')]=_0x52ba7e[_0x6c1c('0x43')][_0x6c1c('0x48')]?_0x52ba7e[_0x6c1c('0x43')]:_0x2be2e4[_0x6c1c('0x4f')];if(!_0x554b31[_0x6c1c('0x41')][_0x6c1c('0xc7')](_0x6c1c('0xcb'))){_0x52ba7e[_0x6c1c('0x24')]=qs[_0x6c1c('0x24')](_0x554b31[_0x6c1c('0x41')][_0x6c1c('0x24')]);_0x52ba7e[_0x6c1c('0x22')]=qs[_0x6c1c('0x22')](_0x554b31[_0x6c1c('0x41')]['offset']);}_0x52ba7e[_0x6c1c('0xc4')]=qs[_0x6c1c('0xc5')](_0x554b31[_0x6c1c('0x41')][_0x6c1c('0xc5')]);_0x52ba7e['where']=qs['filters'](_['pick'](_0x554b31[_0x6c1c('0x41')],_0x2be2e4[_0x6c1c('0x54')]));_0x52ba7e[_0x6c1c('0x40')][_0x6c1c('0xd4')]=_0xef9eb8['id'];if(_0x554b31[_0x6c1c('0x41')][_0x6c1c('0x30')]){_0x52ba7e[_0x6c1c('0x40')]=_['merge'](_0x52ba7e[_0x6c1c('0x40')],{'$or':_[_0x6c1c('0x32')](_0x52ba7e[_0x6c1c('0x43')],function(_0x1b01aa){var _0x4a5d2d={};_0x4a5d2d[_0x1b01aa]={'$like':'%'+_0x554b31['query']['filter']+'%'};return _0x4a5d2d;})});}_0x52ba7e=_[_0x6c1c('0x57')]({},_0x52ba7e,_0x554b31[_0x6c1c('0x58')]);return db[_0x6c1c('0xdc')]['count']({'where':_0x52ba7e['where']})[_0x6c1c('0x12')](function(_0x2ca992){_0x448f3e['count']=_0x2ca992;if(_0x554b31['query'][_0x6c1c('0x42')]){_0x52ba7e['include']=[{'all':!![]}];}return db[_0x6c1c('0xdc')][_0x6c1c('0x45')](_0x52ba7e);})[_0x6c1c('0x12')](function(_0xb5245){_0x448f3e[_0x6c1c('0x46')]=_0xb5245;return _0x448f3e;});}})[_0x6c1c('0x12')](respondWithFilteredResult(_0x237699,_0x52ba7e))[_0x6c1c('0x1d')](handleError(_0x237699,null));};exports[_0x6c1c('0xdd')]=function(_0x417a83,_0x2cd4d0){var _0xe1ede0={};var _0x36ead8={};var _0x167670;var _0x216b8a;return db[_0x6c1c('0x3b')][_0x6c1c('0x91')]({'where':{'id':_0x417a83['params']['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x2cd4d0,null))[_0x6c1c('0x12')](function(_0x4e216e){if(_0x4e216e){_0x167670=_0x4e216e;_0x36ead8[_0x6c1c('0x4f')]=_['keys'](db['SmsInteraction'][_0x6c1c('0x3c')]);_0x36ead8[_0x6c1c('0x41')]=_[_0x6c1c('0x53')](_0x417a83['query']);_0x36ead8[_0x6c1c('0x54')]=_[_0x6c1c('0xc3')](_0x36ead8[_0x6c1c('0x4f')],_0x36ead8[_0x6c1c('0x41')]);_0xe1ede0[_0x6c1c('0x43')]=_[_0x6c1c('0xc3')](_0x36ead8[_0x6c1c('0x4f')],qs[_0x6c1c('0x55')](_0x417a83['query'][_0x6c1c('0x55')]));_0xe1ede0['attributes']=_0xe1ede0['attributes']['length']?_0xe1ede0['attributes']:_0x36ead8[_0x6c1c('0x4f')];_0xe1ede0[_0x6c1c('0xc4')]=qs[_0x6c1c('0xc5')](_0x417a83[_0x6c1c('0x41')]['sort']);_0xe1ede0['where']=qs['filters'](_[_0x6c1c('0xc6')](_0x417a83[_0x6c1c('0x41')],_0x36ead8[_0x6c1c('0x54')]));if(_0x417a83['query']['filter']){_0xe1ede0['where']=_['merge'](_0xe1ede0[_0x6c1c('0x40')],{'$or':_[_0x6c1c('0x32')](_0xe1ede0[_0x6c1c('0x43')],function(_0x3d2316){var _0x5d952f={};_0x5d952f[_0x3d2316]={'$like':'%'+_0x417a83[_0x6c1c('0x41')][_0x6c1c('0x30')]+'%'};return _0x5d952f;})});}_0xe1ede0=_[_0x6c1c('0x57')]({},_0xe1ede0,_0x417a83[_0x6c1c('0x58')]);return _0x167670[_0x6c1c('0xdd')](_0xe1ede0);}})[_0x6c1c('0x12')](function(_0x5559e5){if(_0x5559e5){_0x216b8a=_0x5559e5[_0x6c1c('0x48')];if(!_0x417a83[_0x6c1c('0x41')][_0x6c1c('0xc7')]('nolimit')){_0xe1ede0[_0x6c1c('0x24')]=qs[_0x6c1c('0x24')](_0x417a83[_0x6c1c('0x41')][_0x6c1c('0x24')]);_0xe1ede0['offset']=qs[_0x6c1c('0x22')](_0x417a83[_0x6c1c('0x41')][_0x6c1c('0x22')]);}return _0x167670[_0x6c1c('0xdd')](_0xe1ede0);}})[_0x6c1c('0x12')](function(_0x142e65){if(_0x142e65){return _0x142e65?{'count':_0x216b8a,'rows':_0x142e65}:null;}})[_0x6c1c('0x12')](respondWithResult(_0x2cd4d0,null))[_0x6c1c('0x1d')](handleError(_0x2cd4d0,null));};exports[_0x6c1c('0xde')]=function(_0x1066e6,_0x3d97f4){var _0x1f9e5a={};var _0x168c43={};var _0x598ff0;var _0x15bb6a;return db['User'][_0x6c1c('0x91')]({'where':{'id':_0x1066e6['params']['id']}})['then'](handleEntityNotFound(_0x3d97f4,null))[_0x6c1c('0x12')](function(_0x42dd3f){if(_0x42dd3f){_0x598ff0=_0x42dd3f;_0x168c43[_0x6c1c('0x4f')]=_[_0x6c1c('0x53')](db[_0x6c1c('0xdf')][_0x6c1c('0x3c')]);_0x168c43[_0x6c1c('0x41')]=_['keys'](_0x1066e6['query']);_0x168c43[_0x6c1c('0x54')]=_['intersection'](_0x168c43[_0x6c1c('0x4f')],_0x168c43['query']);_0x1f9e5a[_0x6c1c('0x43')]=_['intersection'](_0x168c43[_0x6c1c('0x4f')],qs[_0x6c1c('0x55')](_0x1066e6[_0x6c1c('0x41')][_0x6c1c('0x55')]));_0x1f9e5a[_0x6c1c('0x43')]=_0x1f9e5a[_0x6c1c('0x43')][_0x6c1c('0x48')]?_0x1f9e5a['attributes']:_0x168c43['model'];_0x1f9e5a[_0x6c1c('0xc4')]=qs['sort'](_0x1066e6[_0x6c1c('0x41')]['sort']);_0x1f9e5a[_0x6c1c('0x40')]=qs[_0x6c1c('0x54')](_['pick'](_0x1066e6[_0x6c1c('0x41')],_0x168c43['filters']));if(_0x1066e6['query']['filter']){_0x1f9e5a['where']=_[_0x6c1c('0x57')](_0x1f9e5a[_0x6c1c('0x40')],{'$or':_[_0x6c1c('0x32')](_0x1f9e5a[_0x6c1c('0x43')],function(_0x5bedf3){var _0x36ad45={};_0x36ad45[_0x5bedf3]={'$like':'%'+_0x1066e6['query'][_0x6c1c('0x30')]+'%'};return _0x36ad45;})});}_0x1f9e5a=_[_0x6c1c('0x57')]({},_0x1f9e5a,_0x1066e6['options']);return _0x598ff0[_0x6c1c('0xde')](_0x1f9e5a);}})[_0x6c1c('0x12')](function(_0x2c8dce){if(_0x2c8dce){_0x15bb6a=_0x2c8dce['length'];if(!_0x1066e6['query'][_0x6c1c('0xc7')](_0x6c1c('0xcb'))){_0x1f9e5a[_0x6c1c('0x24')]=qs[_0x6c1c('0x24')](_0x1066e6['query'][_0x6c1c('0x24')]);_0x1f9e5a[_0x6c1c('0x22')]=qs[_0x6c1c('0x22')](_0x1066e6[_0x6c1c('0x41')][_0x6c1c('0x22')]);}return _0x598ff0[_0x6c1c('0xde')](_0x1f9e5a);}})['then'](function(_0xd9e72f){if(_0xd9e72f){return _0xd9e72f?{'count':_0x15bb6a,'rows':_0xd9e72f}:null;}})['then'](respondWithResult(_0x3d97f4,null))[_0x6c1c('0x1d')](handleError(_0x3d97f4,null));};exports['getWhatsappInteractions']=function(_0x1c51a5,_0x11cb9c){var _0x323e46={};var _0x239c5a={};var _0x4328d2;var _0x26c6c4;return db[_0x6c1c('0x3b')][_0x6c1c('0x91')]({'where':{'id':_0x1c51a5[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x11cb9c,null))[_0x6c1c('0x12')](function(_0x2a3172){if(_0x2a3172){_0x4328d2=_0x2a3172;_0x239c5a['model']=_[_0x6c1c('0x53')](db[_0x6c1c('0xe0')][_0x6c1c('0x3c')]);_0x239c5a['query']=_[_0x6c1c('0x53')](_0x1c51a5[_0x6c1c('0x41')]);_0x239c5a[_0x6c1c('0x54')]=_[_0x6c1c('0xc3')](_0x239c5a[_0x6c1c('0x4f')],_0x239c5a[_0x6c1c('0x41')]);_0x323e46[_0x6c1c('0x43')]=_['intersection'](_0x239c5a[_0x6c1c('0x4f')],qs['fields'](_0x1c51a5[_0x6c1c('0x41')][_0x6c1c('0x55')]));_0x323e46[_0x6c1c('0x43')]=_0x323e46[_0x6c1c('0x43')][_0x6c1c('0x48')]?_0x323e46[_0x6c1c('0x43')]:_0x239c5a['model'];_0x323e46[_0x6c1c('0xc4')]=qs['sort'](_0x1c51a5[_0x6c1c('0x41')][_0x6c1c('0xc5')]);_0x323e46[_0x6c1c('0x40')]=qs[_0x6c1c('0x54')](_[_0x6c1c('0xc6')](_0x1c51a5[_0x6c1c('0x41')],_0x239c5a[_0x6c1c('0x54')]));if(_0x1c51a5[_0x6c1c('0x41')]['filter']){_0x323e46[_0x6c1c('0x40')]=_[_0x6c1c('0x57')](_0x323e46[_0x6c1c('0x40')],{'$or':_['map'](_0x323e46[_0x6c1c('0x43')],function(_0x3b99a6){var _0x343f6b={};_0x343f6b[_0x3b99a6]={'$like':'%'+_0x1c51a5[_0x6c1c('0x41')][_0x6c1c('0x30')]+'%'};return _0x343f6b;})});}_0x323e46=_[_0x6c1c('0x57')]({},_0x323e46,_0x1c51a5[_0x6c1c('0x58')]);return _0x4328d2[_0x6c1c('0xe1')](_0x323e46);}})[_0x6c1c('0x12')](function(_0x31840c){if(_0x31840c){_0x26c6c4=_0x31840c[_0x6c1c('0x48')];if(!_0x1c51a5[_0x6c1c('0x41')][_0x6c1c('0xc7')](_0x6c1c('0xcb'))){_0x323e46['limit']=qs['limit'](_0x1c51a5['query'][_0x6c1c('0x24')]);_0x323e46[_0x6c1c('0x22')]=qs[_0x6c1c('0x22')](_0x1c51a5['query'][_0x6c1c('0x22')]);}return _0x4328d2[_0x6c1c('0xe1')](_0x323e46);}})[_0x6c1c('0x12')](function(_0x5165c1){if(_0x5165c1){return _0x5165c1?{'count':_0x26c6c4,'rows':_0x5165c1}:null;}})[_0x6c1c('0x12')](respondWithResult(_0x11cb9c,null))['catch'](handleError(_0x11cb9c,null));};exports[_0x6c1c('0xe2')]=function(_0x4c46c5,_0x13f05d,_0x5ccd44){var _0x315a86;var _0x3fdc02;var _0x19256e;var _0x5b65f0=!_[_0x6c1c('0x67')](_0x4c46c5[_0x6c1c('0x5d')]['id'])?_0x4c46c5[_0x6c1c('0x5d')]['id']:!_[_0x6c1c('0x67')](_0x4c46c5[_0x6c1c('0x2d')]['id'])?_0x4c46c5[_0x6c1c('0x2d')]['id']:null;return db[_0x6c1c('0x3b')]['find']({'where':{'id':_0x5b65f0,'role':{'$or':[_0x6c1c('0x2b'),_0x6c1c('0x2d'),_0x6c1c('0x2e')]}},'attributes':['id',_0x6c1c('0x38'),_0x6c1c('0xe3'),_0x6c1c('0xe4'),_0x6c1c('0x2a'),_0x6c1c('0x62'),'loginInPause']})[_0x6c1c('0x12')](function(_0xf5b81e){if(_0xf5b81e){if(_0xf5b81e[_0x6c1c('0x2a')]===_0x6c1c('0x2e')){_0x315a86=_0xf5b81e;if(_0x4c46c5['body'][_0x6c1c('0x9b')]){_0x19256e=util[_0x6c1c('0xa7')]('LOCAL/%s@from-sip/n',_0x315a86[_0x4c46c5[_0x6c1c('0x5c')][_0x6c1c('0x9b')]]);}else if(_0x4c46c5[_0x6c1c('0x5c')]['intrf']){_0x19256e=util[_0x6c1c('0xa7')]('SIP/%s',_0x4c46c5['body'][_0x6c1c('0xe5')]);}else{_0x19256e=util[_0x6c1c('0xa7')]('SIP/%s',_0x315a86['name']);}socket['to'](util[_0x6c1c('0xa7')](_0x6c1c('0xe6'),_0x315a86['name']))[_0x6c1c('0xa4')](_0x6c1c('0xe7'),{'user':{'id':_0x315a86['id'],'name':_0x315a86[_0x6c1c('0x38')]},'ip':_0x4c46c5[_0x6c1c('0xe8')][_0x6c1c('0xe9')]||_0x4c46c5[_0x6c1c('0xea')][_0x6c1c('0xeb')]||_0x4c46c5['socket'][_0x6c1c('0xeb')]||_0x4c46c5[_0x6c1c('0xea')][_0x6c1c('0xec')][_0x6c1c('0xeb')]});return db['UserVoiceQueueRt'][_0x6c1c('0x28')]({'where':{'membername':_0x315a86[_0x6c1c('0x38')]},'individualHooks':!![]});}}else{throw new db[(_0x6c1c('0x8b'))][(_0x6c1c('0x89'))](_0x6c1c('0xed'));}})[_0x6c1c('0x12')](function(){if(_0x315a86){return _0x315a86[_0x6c1c('0xee')]({'raw':!![]});}})['then'](function(_0x6309f6){if(_0x315a86){var _0x4c5cf5=[];if(_0x6309f6){_0x3fdc02=_0x6309f6;if(_0x3fdc02[_0x6c1c('0x48')]){for(var _0x14743a=0x0;_0x14743a<_0x3fdc02['length'];_0x14743a++){_0x4c5cf5[_0x6c1c('0x44')]({'membername':_0x315a86[_0x6c1c('0x38')],'UserId':_0x315a86['id'],'queue_name':_0x3fdc02[_0x14743a]['name'],'VoiceQueueId':_0x3fdc02[_0x14743a]['id'],'interface':_0x19256e,'paused':_0x315a86[_0x6c1c('0xef')]||![],'penalty':_0x3fdc02[_0x14743a][_0x6c1c('0xf0')]||0x0});}return BPromise['each'](_0x4c5cf5,function(_0x510128){return db[_0x6c1c('0xa9')][_0x6c1c('0xaa')](_0x510128);});}}}})[_0x6c1c('0x12')](function(){if(_0x315a86){return db[_0x6c1c('0xf1')][_0x6c1c('0x45')]({'where':{'membername':_0x315a86['name'],'exitAt':null}});}})[_0x6c1c('0x12')](function(_0x1eadfc){if(_0x315a86){var _0x5be5ac=[];_0x1eadfc['forEach'](function(_0x46a9a9){_0x5be5ac[_0x6c1c('0x44')](_0x46a9a9[_0x6c1c('0x27')]({'exitAt':moment()[_0x6c1c('0xa7')](_0x6c1c('0xf2'))}));});return BPromise['all'](_0x5be5ac);}})['then'](function(){if(_0x315a86){var _0x3f92c7=[];var _0x2a22ad=[];var _0x3eb4a2=utils[_0x6c1c('0xf3')]();var _0x1d5d8e={'membername':_0x315a86[_0x6c1c('0x38')],'interface':_0x19256e,'enterAt':moment()['format'](_0x6c1c('0xf2')),'role':_0x315a86[_0x6c1c('0x2a')],'internal':_0x315a86[_0x6c1c('0x62')]};_0x3eb4a2[_0x6c1c('0xf4')](function(_0x4342d6){_0x3f92c7[_0x6c1c('0x44')](_[_0x6c1c('0x57')]({'channel':_0x4342d6,'type':_0x6c1c('0xf5'),'data1':_0x4c46c5[_0x6c1c('0x5c')][_0x6c1c('0xf6')],'data2':_0x19256e},_0x1d5d8e));if(_0x315a86[_0x6c1c('0xef')]){_0x2a22ad[_0x6c1c('0x44')](_[_0x6c1c('0x57')]({'channel':_0x4342d6,'type':_0x6c1c('0xf7'),'data1':'LOGININPAUSE'},_0x1d5d8e));}});return db[_0x6c1c('0xf1')][_0x6c1c('0xf8')](_0x3f92c7[_0x6c1c('0xf9')](_0x2a22ad),{'individualHooks':!![]});}})[_0x6c1c('0x12')](function(){if(_0x315a86){return _0x315a86[_0x6c1c('0x27')]({'online':!![],'lastLoginAt':moment()[_0x6c1c('0xa7')](_0x6c1c('0xf2')),'voicePause':_0x315a86[_0x6c1c('0xef')]||![],'mailPause':_0x315a86[_0x6c1c('0xef')]||![],'chatPause':_0x315a86['loginInPause']||![],'faxPause':_0x315a86['loginInPause']||![],'smsPause':_0x315a86[_0x6c1c('0xef')]||![],'openchannelPause':_0x315a86[_0x6c1c('0xef')]||![],'whatsappPause':_0x315a86['loginInPause']||![],'pauseType':_0x315a86['loginInPause']?'LOGININPAUSE':null,'interface':_0x19256e,'lastPauseAt':moment()[_0x6c1c('0xa7')]('YYYY-MM-DD\x20HH:mm:ss')});}})[_0x6c1c('0x12')](function(_0xaefe96){if(_0x4c46c5[_0x6c1c('0xfa')]){return _0x5ccd44();}else{return BPromise['resolve'](_0xaefe96)[_0x6c1c('0x12')](respondWithResult(_0x13f05d,null));}})['catch'](handleError(_0x13f05d,null));};exports[_0x6c1c('0xfb')]=function(_0x577ead,_0x59ff37){var _0x367b34;return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x577ead[_0x6c1c('0x5d')]['id'],'role':_0x6c1c('0x2e')},'attributes':['id',_0x6c1c('0x38'),'role']})['then'](handleEntityNotFound(_0x59ff37,null))[_0x6c1c('0x12')](function(_0x1eb18c){if(_0x1eb18c){_0x367b34=_0x1eb18c;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x367b34[_0x6c1c('0x38')]},'individualHooks':!![]});}})[_0x6c1c('0x12')](function(){return db[_0x6c1c('0xf1')][_0x6c1c('0x45')]({'where':{'membername':_0x367b34[_0x6c1c('0x38')],'exitAt':null}});})[_0x6c1c('0x12')](function(_0x3ba491){var _0x4559e9=[];_0x3ba491['forEach'](function(_0x1f0322){_0x4559e9[_0x6c1c('0x44')](_0x1f0322['update']({'exitAt':moment()[_0x6c1c('0xa7')](_0x6c1c('0xf2'))}));});return BPromise[_0x6c1c('0x4d')](_0x4559e9);})[_0x6c1c('0x12')](function(){return _0x367b34['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})['then'](respondWithResult(_0x59ff37,null))[_0x6c1c('0x1d')](handleError(_0x59ff37,null));};exports[_0x6c1c('0xfc')]=function(_0x3a82dc,_0x2b6749){var _0x9be81a;return db[_0x6c1c('0xa9')][_0x6c1c('0x27')]({'paused':0x1},{'where':{'UserId':_0x3a82dc[_0x6c1c('0x5d')]['id']},'individualHooks':!![]})['then'](function(){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x3a82dc[_0x6c1c('0x5d')]['id'],'role':_0x6c1c('0x2e')},'attributes':['id',_0x6c1c('0x38'),_0x6c1c('0x2a'),_0x6c1c('0x62'),_0x6c1c('0x9b')]});})['then'](handleEntityNotFound(_0x2b6749,null))[_0x6c1c('0x12')](function(_0x358676){if(_0x358676){_0x9be81a=_0x358676;return respondWithRpcPromise('QueuePause',_0x6c1c('0xfc'),{'id':_0x9be81a['id'],'name':_0x9be81a['name'],'pause':!![]});}})[_0x6c1c('0x12')](function(){if(_0x9be81a){return db[_0x6c1c('0xf1')][_0x6c1c('0x45')]({'where':{'membername':_0x9be81a[_0x6c1c('0x38')],'type':_0x6c1c('0xf7'),'exitAt':null}});}})[_0x6c1c('0x12')](function(_0x4014dc){if(_0x4014dc[_0x6c1c('0x48')]){var _0x59130b=moment()['format'](_0x6c1c('0xf2'));for(var _0x13793b=0x0,_0x4cb8c5=_0x4014dc[_0x6c1c('0x48')];_0x13793b<_0x4cb8c5;_0x13793b++){_0x4014dc[_0x13793b][_0x6c1c('0xfd')]({'exitAt':_0x59130b});}}})['then'](function(){var _0x3963ed=[];var _0x59f6b4=utils['getChannels']();_0x59f6b4['forEach'](function(_0x1bc1fb){_0x3963ed[_0x6c1c('0x44')]({'channel':_0x1bc1fb,'membername':_0x9be81a[_0x6c1c('0x38')],'interface':_[_0x6c1c('0x67')](_0x9be81a['interface'])?util[_0x6c1c('0xa7')](_0x6c1c('0xa8'),_0x9be81a[_0x6c1c('0x38')]):_0x9be81a[_0x6c1c('0x9b')],'type':_0x6c1c('0xf7'),'enterAt':moment()['format'](_0x6c1c('0xf2')),'data1':_0x3a82dc[_0x6c1c('0x5c')][_0x6c1c('0x3e')]||_0x6c1c('0xfe'),'role':_0x9be81a[_0x6c1c('0x2a')],'internal':_0x9be81a[_0x6c1c('0x62')]});});return db[_0x6c1c('0xf1')]['bulkCreate'](_0x3963ed,{'individualHooks':!![]});})[_0x6c1c('0x12')](function(){return _0x9be81a[_0x6c1c('0x27')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x3a82dc[_0x6c1c('0x5c')][_0x6c1c('0x3e')]||_0x6c1c('0xfe'),'lastPauseAt':moment()[_0x6c1c('0xa7')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0x6c1c('0x12')](respondWithResult(_0x2b6749,null))[_0x6c1c('0x1d')](handleError(_0x2b6749,null));};exports[_0x6c1c('0xff')]=function(_0x399c0b,_0xfabafa){var _0x1bbdc1;return db['User'][_0x6c1c('0x35')]({'where':{'id':_0x399c0b[_0x6c1c('0x5d')]['id']},'attributes':['id',_0x6c1c('0x38'),'role','voicePause',_0x6c1c('0x100'),_0x6c1c('0x101'),_0x6c1c('0x102'),'openchannelPause',_0x6c1c('0x103'),_0x6c1c('0x104'),_0x6c1c('0x105'),_0x6c1c('0x106')]})[_0x6c1c('0x12')](handleEntityNotFound(_0xfabafa,null))[_0x6c1c('0x12')](function(_0x1591ae){if(_0x1591ae){_0x1bbdc1=_0x1591ae;if(_0x399c0b[_0x6c1c('0x5c')][_0x6c1c('0x98')]&&!utils['isValidChannel'](_0x399c0b[_0x6c1c('0x5c')][_0x6c1c('0x98')])){throw new db[(_0x6c1c('0x8b'))][(_0x6c1c('0x89'))](_0x6c1c('0x9d'));}switch(_0x399c0b[_0x6c1c('0x5c')][_0x6c1c('0x98')]){case'voice':return respondWithRpcPromise('QueuePause','unpause',{'id':_0x1bbdc1['id'],'name':_0x1bbdc1['name'],'pause':![]})[_0x6c1c('0x12')](function(){return db[_0x6c1c('0xa9')][_0x6c1c('0x27')]({'paused':0x0},{'where':{'UserId':_0x1bbdc1['id']},'individualHooks':!![]});})[_0x6c1c('0x12')](function(){return db[_0x6c1c('0xf1')][_0x6c1c('0x35')]({'where':{'channel':_0x399c0b[_0x6c1c('0x5c')]['channel'],'membername':_0x1bbdc1[_0x6c1c('0x38')],'type':'PAUSE','exitAt':null}});})['then'](function(_0x1da4c3){if(_0x1da4c3){return _0x1da4c3[_0x6c1c('0x27')]({'exitAt':moment()[_0x6c1c('0xa7')](_0x6c1c('0xf2')),'data2':_0x6c1c('0x107')},{'individualHooks':!![]});}return null;})[_0x6c1c('0x12')](function(){return _0x1bbdc1[_0x6c1c('0x27')]({'voicePause':![]});});case _0x6c1c('0x4b'):case'chat':case'fax':case _0x6c1c('0xb5'):case'whatsapp':case _0x6c1c('0x5b'):return db[_0x6c1c('0xf1')][_0x6c1c('0x35')]({'where':{'channel':_0x399c0b[_0x6c1c('0x5c')][_0x6c1c('0x98')],'membername':_0x1bbdc1[_0x6c1c('0x38')],'type':_0x6c1c('0xf7'),'exitAt':null}})[_0x6c1c('0x12')](function(_0x3a2590){if(_0x3a2590){return _0x3a2590['update']({'exitAt':moment()[_0x6c1c('0xa7')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':'manual'},{'individualHooks':!![]});}return null;})[_0x6c1c('0x12')](function(){var _0x1bf3b9={};_[_0x6c1c('0x108')](_0x1bf3b9,util['format'](_0x6c1c('0x109'),_0x399c0b[_0x6c1c('0x5c')]['channel'],_0x6c1c('0x10a')),![]);return _0x1bbdc1[_0x6c1c('0x27')](_0x1bf3b9);});default:return respondWithRpcPromise(_0x6c1c('0x10b'),'unpause',{'id':_0x1bbdc1['id'],'name':_0x1bbdc1[_0x6c1c('0x38')],'pause':![]})['then'](function(){return db['UserVoiceQueueRt'][_0x6c1c('0x27')]({'paused':0x0},{'where':{'UserId':_0x1bbdc1['id']}});})[_0x6c1c('0x12')](function(){return db[_0x6c1c('0xf1')]['findAll']({'where':{'membername':_0x1bbdc1['name'],'type':_0x6c1c('0xf7'),'exitAt':null}});})[_0x6c1c('0x12')](function(_0x228125){var _0x2b90f5=[];_0x228125[_0x6c1c('0xf4')](function(_0x3bc372){_0x2b90f5['push'](_0x3bc372['update']({'exitAt':moment()[_0x6c1c('0xa7')](_0x6c1c('0xf2')),'data2':_0x6c1c('0x107')}));});return BPromise['all'](_0x2b90f5);})['then'](function(){return _0x1bbdc1[_0x6c1c('0x27')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x6c1c('0x12')](respondWithResult(_0xfabafa,null))[_0x6c1c('0x1d')](handleError(_0xfabafa,null));};exports[_0x6c1c('0x10c')]=function(_0x3baefe,_0x4c9301){var _0x51e2b6={};var _0x24a7ce={};var _0x5b3169;var _0xe38ec7;return db[_0x6c1c('0x3b')]['findOne']({'where':{'id':_0x3baefe['params']['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x4c9301,null))[_0x6c1c('0x12')](function(_0x1ecf03){if(_0x1ecf03){_0x5b3169=_0x1ecf03;_0x24a7ce[_0x6c1c('0x4f')]=_[_0x6c1c('0x53')](db['Team'][_0x6c1c('0x3c')]);_0x24a7ce['query']=_[_0x6c1c('0x53')](_0x3baefe[_0x6c1c('0x41')]);_0x24a7ce[_0x6c1c('0x54')]=_[_0x6c1c('0xc3')](_0x24a7ce['model'],_0x24a7ce[_0x6c1c('0x41')]);_0x51e2b6[_0x6c1c('0x43')]=_[_0x6c1c('0xc3')](_0x24a7ce['model'],qs[_0x6c1c('0x55')](_0x3baefe[_0x6c1c('0x41')][_0x6c1c('0x55')]));_0x51e2b6[_0x6c1c('0x43')]=_0x51e2b6[_0x6c1c('0x43')]['length']?_0x51e2b6['attributes']:_0x24a7ce[_0x6c1c('0x4f')];_0x51e2b6[_0x6c1c('0xc4')]=qs[_0x6c1c('0xc5')](_0x3baefe[_0x6c1c('0x41')][_0x6c1c('0xc5')]);_0x51e2b6['where']=qs['filters'](_['pick'](_0x3baefe[_0x6c1c('0x41')],_0x24a7ce[_0x6c1c('0x54')]));if(_0x3baefe[_0x6c1c('0x41')][_0x6c1c('0x30')]){_0x51e2b6[_0x6c1c('0x40')]=_[_0x6c1c('0x57')](_0x51e2b6[_0x6c1c('0x40')],{'$or':_[_0x6c1c('0x32')](_0x51e2b6[_0x6c1c('0x43')],function(_0x51dd17){var _0x1ba400={};_0x1ba400[_0x51dd17]={'$like':'%'+_0x3baefe[_0x6c1c('0x41')][_0x6c1c('0x30')]+'%'};return _0x1ba400;})});}_0x51e2b6=_[_0x6c1c('0x57')]({},_0x51e2b6,_0x3baefe[_0x6c1c('0x58')]);return _0x5b3169[_0x6c1c('0x10c')](_0x51e2b6);}})[_0x6c1c('0x12')](function(_0xe69136){if(_0xe69136){_0xe38ec7=_0xe69136[_0x6c1c('0x48')];if(!_0x3baefe[_0x6c1c('0x41')][_0x6c1c('0xc7')](_0x6c1c('0xcb'))){_0x51e2b6[_0x6c1c('0x24')]=qs['limit'](_0x3baefe[_0x6c1c('0x41')][_0x6c1c('0x24')]);_0x51e2b6[_0x6c1c('0x22')]=qs[_0x6c1c('0x22')](_0x3baefe[_0x6c1c('0x41')]['offset']);}return _0x5b3169[_0x6c1c('0x10c')](_0x51e2b6);}})[_0x6c1c('0x12')](function(_0x50f832){if(_0x50f832){return _0x50f832?{'count':_0xe38ec7,'rows':_0x50f832}:null;}})[_0x6c1c('0x12')](respondWithResult(_0x4c9301,null))[_0x6c1c('0x1d')](handleError(_0x4c9301,null));};exports['addTeams']=function(_0x5e11bd,_0x333f14){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x5e11bd[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x333f14,null))[_0x6c1c('0x12')](function(_0x200583){if(_0x200583){var _0xa16543=_0x200583[_0x6c1c('0x29')]({'plain':!![]});return _0x200583['addTeams'](_0x5e11bd[_0x6c1c('0x5c')][_0x6c1c('0x60')],_[_0x6c1c('0x61')](_0x5e11bd[_0x6c1c('0x5c')],[_0x6c1c('0x60'),'id'])||{})[_0x6c1c('0x12')](function(){for(var _0x30d922=0x0;_0x30d922<_0x5e11bd[_0x6c1c('0x5c')]['ids']['length'];_0x30d922++){var _0x1e2340=[];var _0x478af8={};db[_0x6c1c('0x10d')][_0x6c1c('0x91')]({'where':{'id':_0x5e11bd['body'][_0x6c1c('0x60')][_0x30d922]}})['then'](function(_0x17b2e4){_0x478af8=_0x17b2e4['dataValues'];_0x1e2340[_0x6c1c('0x44')](_0x17b2e4[_0x6c1c('0xee')]()[_0x6c1c('0x12')](function(_0x3195b9){for(var _0x3bb87e=0x0;_0x3bb87e<_0x3195b9[_0x6c1c('0x48')];_0x3bb87e++){_0x3195b9[_0x3bb87e][_0x6c1c('0x10e')]('channel',_0x6c1c('0x10f'));}return _0x3195b9;}));_0x1e2340[_0x6c1c('0x44')](_0x17b2e4[_0x6c1c('0x110')]()[_0x6c1c('0x12')](function(_0x5189f7){for(var _0x4a6407=0x0;_0x4a6407<_0x5189f7['length'];_0x4a6407++){_0x5189f7[_0x4a6407][_0x6c1c('0x10e')](_0x6c1c('0x98'),'Chat');}return _0x5189f7;}));_0x1e2340['push'](_0x17b2e4['getMailQueues']()[_0x6c1c('0x12')](function(_0x45de2e){for(var _0x2db80c=0x0;_0x2db80c<_0x45de2e[_0x6c1c('0x48')];_0x2db80c++){_0x45de2e[_0x2db80c][_0x6c1c('0x10e')](_0x6c1c('0x98'),_0x6c1c('0x111'));}return _0x45de2e;}));_0x1e2340['push'](_0x17b2e4['getSmsQueues']()[_0x6c1c('0x12')](function(_0x58fb5a){for(var _0x14dc81=0x0;_0x14dc81<_0x58fb5a['length'];_0x14dc81++){_0x58fb5a[_0x14dc81][_0x6c1c('0x10e')]('channel','Sms');}return _0x58fb5a;}));_0x1e2340[_0x6c1c('0x44')](_0x17b2e4[_0x6c1c('0x112')]()[_0x6c1c('0x12')](function(_0x541d7b){for(var _0x5aafb4=0x0;_0x5aafb4<_0x541d7b[_0x6c1c('0x48')];_0x5aafb4++){_0x541d7b[_0x5aafb4]['setDataValue']('channel',_0x6c1c('0x113'));}return _0x541d7b;}));_0x1e2340['push'](_0x17b2e4[_0x6c1c('0x114')]()[_0x6c1c('0x12')](function(_0x393f93){for(var _0x790f26=0x0;_0x790f26<_0x393f93[_0x6c1c('0x48')];_0x790f26++){_0x393f93[_0x790f26][_0x6c1c('0x10e')]('channel',_0x6c1c('0x115'));}return _0x393f93;}));_0x1e2340[_0x6c1c('0x44')](_0x17b2e4[_0x6c1c('0x116')]()[_0x6c1c('0x12')](function(_0x21a913){for(var _0x1cbf75=0x0;_0x1cbf75<_0x21a913[_0x6c1c('0x48')];_0x1cbf75++){_0x21a913[_0x1cbf75]['setDataValue'](_0x6c1c('0x98'),_0x6c1c('0x117'));}return _0x21a913;}));return BPromise[_0x6c1c('0x4d')](_0x1e2340);})[_0x6c1c('0x12')](function(_0x4bd35d){var _0x318f1c=_[_0x6c1c('0x118')](_0x4bd35d);_0x1e2340=[];return db[_0x6c1c('0x68')][_0x6c1c('0x119')](function(_0x525bc9){for(var _0x4a8891=0x0;_0x4a8891<_0x318f1c[_0x6c1c('0x48')];_0x4a8891++){_0x1e2340[_0x6c1c('0x44')](_0x318f1c[_0x4a8891][_0x6c1c('0x11a')](_0xa16543['id']),{'transaction':_0x525bc9});}return BPromise[_0x6c1c('0x4d')](_0x1e2340)['then'](function(){if(_0xa16543[_0x6c1c('0x99')]){return BPromise[_0x6c1c('0x83')](_['filter'](_0x318f1c,function(_0x4a359c){return _0x4a359c[_0x6c1c('0x11b')](_0x6c1c('0x98'))===_0x6c1c('0x10f');}),function(_0x475af4){return db[_0x6c1c('0xa9')][_0x6c1c('0xaa')]({'membername':_0xa16543['name'],'UserId':_0xa16543['id'],'queue_name':_0x475af4[_0x6c1c('0x38')],'VoiceQueueId':_0x475af4['id'],'interface':_[_0x6c1c('0x67')](_0xa16543[_0x6c1c('0x9b')])?util[_0x6c1c('0xa7')]('SIP/%s',_0xa16543[_0x6c1c('0x38')]):_0xa16543[_0x6c1c('0x9b')],'paused':_0xa16543[_0x6c1c('0x9a')]||![],'penalty':_0xa16543[_0x6c1c('0xa0')]},{'transaction':_0x525bc9});});}else{return;}})[_0x6c1c('0x12')](function(){for(var _0x400e96=0x0;_0x400e96<_0x318f1c['length'];_0x400e96++){var _0x331e62=_0x318f1c[_0x400e96][_0x6c1c('0x11b')]('channel');var _0x527192=_0x331e62+_0x6c1c('0xa3');socket[_0x6c1c('0xa4')]('user'+_0x331e62+'Queue:save',{'UserId':_0xa16543['id'],['queueField']:_0x318f1c[_0x400e96]['id']});}});});})[_0x6c1c('0x12')](function(){db[_0x6c1c('0x11c')][_0x6c1c('0x91')]({'where':{'teamId':_0x478af8['id']}})[_0x6c1c('0x12')](function(_0x3dc64a){if(_0x3dc64a){db[_0x6c1c('0x11d')][_0x6c1c('0x79')]({'UserId':_0x5e11bd['params']['id'],'VoicePrefixId':_0x3dc64a[_0x6c1c('0x11e')]});}});});}});}})['then'](respondWithStatusCode(_0x333f14,null))[_0x6c1c('0x1d')](handleError(_0x333f14,null));};exports[_0x6c1c('0x11f')]=function(_0x17fd55,_0x63eb1e){return db[_0x6c1c('0x3b')][_0x6c1c('0x91')]({'where':{'id':_0x17fd55['params']['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x63eb1e,null))[_0x6c1c('0x12')](function(_0x3ab41a){if(_0x3ab41a){var _0x34468d=_0x3ab41a[_0x6c1c('0x29')]({'plain':!![]});var _0x379cb5=_0x17fd55[_0x6c1c('0x41')]['ids'];return _0x3ab41a[_0x6c1c('0x11f')](_0x379cb5)[_0x6c1c('0x12')](function(){for(var _0x1a9f53=0x0;_0x1a9f53<_0x379cb5[_0x6c1c('0x48')];_0x1a9f53++){var _0x5f07af=[];var _0x2394af={};db[_0x6c1c('0x10d')]['findOne']({'where':{'id':_0x379cb5[_0x1a9f53]}})['then'](function(_0x463fdf){_0x2394af=_0x463fdf[_0x6c1c('0x49')];_0x5f07af[_0x6c1c('0x44')](_0x463fdf[_0x6c1c('0xee')]()[_0x6c1c('0x12')](function(_0x173162){for(var _0x480afb=0x0;_0x480afb<_0x173162['length'];_0x480afb++){_0x173162[_0x480afb][_0x6c1c('0x10e')](_0x6c1c('0x98'),_0x6c1c('0x10f'));}return _0x173162;}));_0x5f07af['push'](_0x463fdf['getChatQueues']()['then'](function(_0x56dc28){for(var _0x14d98f=0x0;_0x14d98f<_0x56dc28['length'];_0x14d98f++){_0x56dc28[_0x14d98f][_0x6c1c('0x10e')](_0x6c1c('0x98'),_0x6c1c('0x120'));}return _0x56dc28;}));_0x5f07af['push'](_0x463fdf[_0x6c1c('0x121')]()[_0x6c1c('0x12')](function(_0x5a4b89){for(var _0x8ca40b=0x0;_0x8ca40b<_0x5a4b89[_0x6c1c('0x48')];_0x8ca40b++){_0x5a4b89[_0x8ca40b][_0x6c1c('0x10e')](_0x6c1c('0x98'),_0x6c1c('0x111'));}return _0x5a4b89;}));_0x5f07af[_0x6c1c('0x44')](_0x463fdf[_0x6c1c('0x122')]()[_0x6c1c('0x12')](function(_0x94814f){for(var _0x554e2a=0x0;_0x554e2a<_0x94814f['length'];_0x554e2a++){_0x94814f[_0x554e2a]['setDataValue'](_0x6c1c('0x98'),'Sms');}return _0x94814f;}));_0x5f07af[_0x6c1c('0x44')](_0x463fdf['getWhatsappQueues']()[_0x6c1c('0x12')](function(_0x549572){for(var _0x2831cc=0x0;_0x2831cc<_0x549572['length'];_0x2831cc++){_0x549572[_0x2831cc][_0x6c1c('0x10e')](_0x6c1c('0x98'),_0x6c1c('0x113'));}return _0x549572;}));_0x5f07af['push'](_0x463fdf[_0x6c1c('0x114')]()[_0x6c1c('0x12')](function(_0x3638a9){for(var _0x3f496e=0x0;_0x3f496e<_0x3638a9[_0x6c1c('0x48')];_0x3f496e++){_0x3638a9[_0x3f496e][_0x6c1c('0x10e')](_0x6c1c('0x98'),'Fax');}return _0x3638a9;}));_0x5f07af[_0x6c1c('0x44')](_0x463fdf[_0x6c1c('0x116')]()['then'](function(_0x2cc6bf){for(var _0x3c6333=0x0;_0x3c6333<_0x2cc6bf[_0x6c1c('0x48')];_0x3c6333++){_0x2cc6bf[_0x3c6333][_0x6c1c('0x10e')](_0x6c1c('0x98'),_0x6c1c('0x117'));}return _0x2cc6bf;}));return BPromise[_0x6c1c('0x4d')](_0x5f07af);})[_0x6c1c('0x12')](function(_0xaf5bb9){var _0x1a9c71=_[_0x6c1c('0x118')](_0xaf5bb9);_0x5f07af=[];return db[_0x6c1c('0x68')]['transaction'](function(_0x1b1e2e){for(var _0x527cb0=0x0;_0x527cb0<_0x1a9c71[_0x6c1c('0x48')];_0x527cb0++){_0x5f07af['push'](_0x1a9c71[_0x527cb0]['removeAgent'](_0x34468d['id']),{'transaction':_0x1b1e2e});}return BPromise[_0x6c1c('0x4d')](_0x5f07af)[_0x6c1c('0x12')](function(){if(_0x34468d[_0x6c1c('0x99')]){return BPromise[_0x6c1c('0x83')](_['filter'](_0x1a9c71,function(_0x5ad269){return _0x5ad269[_0x6c1c('0x11b')](_0x6c1c('0x98'))===_0x6c1c('0x10f');}),function(_0x542f9b){return db[_0x6c1c('0xa9')][_0x6c1c('0x28')]({'where':{'VoiceQueueId':_0x542f9b['id'],'UserId':_0x34468d['id']},'transaction':_0x1b1e2e});});}else{return;}})[_0x6c1c('0x12')](function(){db[_0x6c1c('0x11c')][_0x6c1c('0x91')]({'where':{'teamId':_0x2394af['id']}})[_0x6c1c('0x12')](function(_0x1074c1){if(_0x1074c1){return db[_0x6c1c('0x11d')]['destroy']({'where':{'UserId':_0x34468d['id'],'VoicePrefixId':_0x1074c1[_0x6c1c('0x49')][_0x6c1c('0x11e')]}});}});})[_0x6c1c('0x12')](function(){for(var _0x4fef20=0x0;_0x4fef20<_0x1a9c71[_0x6c1c('0x48')];_0x4fef20++){var _0x5c9f08=_0x1a9c71[_0x4fef20][_0x6c1c('0x11b')](_0x6c1c('0x98'));var _0x2e5735=_0x5c9f08+_0x6c1c('0xa3');socket[_0x6c1c('0xa4')](_0x6c1c('0x2d')+_0x5c9f08+_0x6c1c('0xac'),{'UserId':_0x34468d['id'],['queueField']:_0x1a9c71[_0x4fef20]['id']});}});});});}});}})[_0x6c1c('0x12')](respondWithStatusCode(_0x63eb1e,null))[_0x6c1c('0x1d')](handleError(_0x63eb1e,null));};exports[_0x6c1c('0x123')]=function(_0x515613,_0x2f9fa7){var _0x47c82f={};var _0x27ca96={};var _0x7ff588;var _0x3e300b;return db[_0x6c1c('0x3b')][_0x6c1c('0x91')]({'where':{'id':_0x515613[_0x6c1c('0x5d')]['id']}})['then'](handleEntityNotFound(_0x2f9fa7,null))['then'](function(_0x4c163a){if(_0x4c163a){_0x7ff588=_0x4c163a;_0x27ca96[_0x6c1c('0x4f')]=_[_0x6c1c('0x53')](db[_0x6c1c('0xc8')][_0x6c1c('0x3c')]);_0x27ca96[_0x6c1c('0x41')]=_['keys'](_0x515613[_0x6c1c('0x41')]);_0x27ca96['filters']=_[_0x6c1c('0xc3')](_0x27ca96[_0x6c1c('0x4f')],_0x27ca96[_0x6c1c('0x41')]);_0x47c82f['attributes']=_[_0x6c1c('0xc3')](_0x27ca96[_0x6c1c('0x4f')],qs[_0x6c1c('0x55')](_0x515613[_0x6c1c('0x41')][_0x6c1c('0x55')]));_0x47c82f['attributes']=_0x47c82f[_0x6c1c('0x43')][_0x6c1c('0x48')]?_0x47c82f[_0x6c1c('0x43')]:_0x27ca96[_0x6c1c('0x4f')];_0x47c82f[_0x6c1c('0xc4')]=qs[_0x6c1c('0xc5')](_0x515613[_0x6c1c('0x41')]['sort']);_0x47c82f['where']=qs[_0x6c1c('0x54')](_[_0x6c1c('0xc6')](_0x515613[_0x6c1c('0x41')],_0x27ca96[_0x6c1c('0x54')]));if(_0x515613[_0x6c1c('0x41')][_0x6c1c('0x30')]){_0x47c82f['where']=_[_0x6c1c('0x57')](_0x47c82f[_0x6c1c('0x40')],{'$or':_[_0x6c1c('0x32')](_0x47c82f[_0x6c1c('0x43')],function(_0x50bc90){var _0x10bc6a={};_0x10bc6a[_0x50bc90]={'$like':'%'+_0x515613[_0x6c1c('0x41')][_0x6c1c('0x30')]+'%'};return _0x10bc6a;})});}_0x47c82f=_[_0x6c1c('0x57')]({},_0x47c82f,_0x515613[_0x6c1c('0x58')]);return _0x7ff588[_0x6c1c('0x123')](_0x47c82f);}})['then'](function(_0x3a238d){if(_0x3a238d){_0x3e300b=_0x3a238d[_0x6c1c('0x48')];if(!_0x515613[_0x6c1c('0x41')]['hasOwnProperty'](_0x6c1c('0xcb'))){_0x47c82f[_0x6c1c('0x24')]=qs['limit'](_0x515613[_0x6c1c('0x41')]['limit']);_0x47c82f[_0x6c1c('0x22')]=qs['offset'](_0x515613['query'][_0x6c1c('0x22')]);}return _0x7ff588[_0x6c1c('0x123')](_0x47c82f);}})['then'](function(_0x4011a4){if(_0x4011a4){return _0x4011a4?{'count':_0x3e300b,'rows':_0x4011a4}:null;}})[_0x6c1c('0x12')](respondWithResult(_0x2f9fa7,null))[_0x6c1c('0x1d')](handleError(_0x2f9fa7,null));};exports[_0x6c1c('0x124')]=function(_0x559215,_0x15b2c1){var _0x5e643e={};var _0x1402e5={};var _0x118556;var _0x40d992;return db[_0x6c1c('0x3b')]['findOne']({'where':{'id':_0x559215[_0x6c1c('0x5d')]['id']}})['then'](handleEntityNotFound(_0x15b2c1,null))[_0x6c1c('0x12')](function(_0x47a03f){if(_0x47a03f){_0x118556=_0x47a03f;_0x1402e5['model']=_[_0x6c1c('0x53')](db[_0x6c1c('0x3b')][_0x6c1c('0x3c')]);_0x1402e5['query']=_[_0x6c1c('0x53')](_0x559215[_0x6c1c('0x41')]);_0x1402e5[_0x6c1c('0x54')]=_[_0x6c1c('0xc3')](_0x1402e5[_0x6c1c('0x4f')],_0x1402e5['query']);_0x5e643e['attributes']=_[_0x6c1c('0xc3')](_0x1402e5['model'],qs[_0x6c1c('0x55')](_0x559215[_0x6c1c('0x41')][_0x6c1c('0x55')]));_0x5e643e['attributes']=_0x5e643e[_0x6c1c('0x43')][_0x6c1c('0x48')]?_0x5e643e[_0x6c1c('0x43')]:_0x1402e5['model'];_0x5e643e[_0x6c1c('0xc4')]=qs['sort'](_0x559215['query'][_0x6c1c('0xc5')]);_0x5e643e[_0x6c1c('0x40')]=qs[_0x6c1c('0x54')](_[_0x6c1c('0xc6')](_0x559215[_0x6c1c('0x41')],_0x1402e5['filters']));if(_0x559215[_0x6c1c('0x41')]['filter']){_0x5e643e[_0x6c1c('0x40')]=_[_0x6c1c('0x57')](_0x5e643e[_0x6c1c('0x40')],{'$or':_[_0x6c1c('0x32')](_0x5e643e[_0x6c1c('0x43')],function(_0x26b3ae){var _0x4f9c32={};_0x4f9c32[_0x26b3ae]={'$like':'%'+_0x559215[_0x6c1c('0x41')][_0x6c1c('0x30')]+'%'};return _0x4f9c32;})});}_0x5e643e[_0x6c1c('0x4f')]=db['User'];_0x5e643e['as']=_0x6c1c('0x7f');_0x5e643e=_['merge']({},_0x5e643e,_0x559215['options']);return _0x118556[_0x6c1c('0xee')]({'include':[_0x5e643e]});}})['then'](function(_0x242b21){if(_0x242b21){var _0x35883c={},_0x19b7cb=[],_0x4e3a00=0x0;for(var _0x55122d=0x0;_0x55122d<_0x242b21[_0x6c1c('0x48')];_0x55122d+=0x1){for(var _0x54a8e3=0x0,_0x5b31d2;_0x54a8e3<_0x242b21[_0x55122d][_0x6c1c('0x7f')][_0x6c1c('0x48')];_0x54a8e3+=0x1){_0x5b31d2=_0x242b21[_0x55122d][_0x6c1c('0x7f')][_0x54a8e3][_0x6c1c('0x29')]({'plain':!![]});_0x35883c[_0x5b31d2['id']]=_0x5b31d2;}}_0x35883c=_[_0x6c1c('0x125')](_0x35883c);for(var _0x4b750d=qs[_0x6c1c('0x22')](_0x559215[_0x6c1c('0x41')]['offset']);_0x4b750d<_0x35883c[_0x6c1c('0x48')]&&_0x19b7cb[_0x6c1c('0x48')]<qs[_0x6c1c('0x24')](_0x559215[_0x6c1c('0x41')][_0x6c1c('0x24')]);_0x4b750d+=0x1){if(_0x35883c[_0x4b750d]){_0x19b7cb['push'](_0x35883c[_0x4b750d]);}}return{'count':_0x35883c[_0x6c1c('0x48')],'rows':_0x19b7cb};}})[_0x6c1c('0x12')](respondWithResult(_0x15b2c1,null))[_0x6c1c('0x1d')](handleError(_0x15b2c1,null));};exports[_0x6c1c('0x28')]=function(_0x1c3bad,_0x21056f){if(_0x1c3bad[_0x6c1c('0x2d')]['id']==_0x1c3bad[_0x6c1c('0x5d')]['id']){return _0x21056f[_0x6c1c('0x1f')](0x1f4)[_0x6c1c('0x39')]({'message':_0x6c1c('0x126')});}return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x1c3bad[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x21056f,null))[_0x6c1c('0x12')](removeEntity(_0x21056f,null))['catch'](handleError(_0x21056f,null));};exports['addChatInteractions']=function(_0x245dfa,_0x222b25){return db['User'][_0x6c1c('0x35')]({'where':{'id':_0x245dfa[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x222b25,null))[_0x6c1c('0x12')](function(_0x40663f){if(_0x40663f){return _0x40663f[_0x6c1c('0x127')](_0x245dfa['body'][_0x6c1c('0x60')],_[_0x6c1c('0x61')](_0x245dfa[_0x6c1c('0x5c')],[_0x6c1c('0x60'),'id'])||{})['spread'](function(){for(var _0x26b2c4=0x0;_0x26b2c4<_0x245dfa['body'][_0x6c1c('0x60')]['length'];_0x26b2c4+=0x1){socket[_0x6c1c('0xa4')]('user_has_chat_interactions:save',{'ChatInteractionId':Number(_0x245dfa[_0x6c1c('0x5c')]['ids'][_0x26b2c4]),'UserId':Number(_0x245dfa[_0x6c1c('0x5d')]['id'])});}return _0x245dfa['body']['ids'];});}})[_0x6c1c('0x12')](respondWithResult(_0x222b25,null))[_0x6c1c('0x1d')](handleError(_0x222b25,null));};exports[_0x6c1c('0x128')]=function(_0x14391e,_0x193473){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x14391e[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x193473,null))[_0x6c1c('0x12')](function(_0x28df11){if(_0x28df11){return _0x28df11['removeChatInteractions'](_0x14391e[_0x6c1c('0x41')][_0x6c1c('0x60')])[_0x6c1c('0x12')](function(){if(_[_0x6c1c('0x129')](_0x14391e[_0x6c1c('0x41')][_0x6c1c('0x60')])){for(var _0x534196=0x0;_0x534196<_0x14391e['query'][_0x6c1c('0x60')][_0x6c1c('0x48')];_0x534196+=0x1){socket[_0x6c1c('0xa4')](_0x6c1c('0x12a'),{'ChatInteractionId':Number(_0x14391e[_0x6c1c('0x41')][_0x6c1c('0x60')][_0x534196]),'UserId':Number(_0x14391e['params']['id'])});}}else{socket[_0x6c1c('0xa4')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x14391e[_0x6c1c('0x41')][_0x6c1c('0x60')]),'UserId':Number(_0x14391e[_0x6c1c('0x5d')]['id'])});}});}})['then'](respondWithStatusCode(_0x193473,null))[_0x6c1c('0x1d')](handleError(_0x193473,null));};exports[_0x6c1c('0x12b')]=function(_0x2e8bd9,_0x51fbb5){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x2e8bd9[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x51fbb5,null))['then'](function(_0x28272c){if(_0x28272c){return _0x28272c['addMailInteractions'](_0x2e8bd9[_0x6c1c('0x5c')][_0x6c1c('0x60')],_[_0x6c1c('0x61')](_0x2e8bd9[_0x6c1c('0x5c')],[_0x6c1c('0x60'),'id'])||{})[_0x6c1c('0xa1')](function(){for(var _0x19f710=0x0;_0x19f710<_0x2e8bd9[_0x6c1c('0x5c')][_0x6c1c('0x60')][_0x6c1c('0x48')];_0x19f710+=0x1){socket[_0x6c1c('0xa4')](_0x6c1c('0x12c'),{'MailInteractionId':Number(_0x2e8bd9['body'][_0x6c1c('0x60')][_0x19f710]),'UserId':Number(_0x2e8bd9['params']['id'])});}return _0x2e8bd9['body'][_0x6c1c('0x60')];});}})[_0x6c1c('0x12')](respondWithResult(_0x51fbb5,null))[_0x6c1c('0x1d')](handleError(_0x51fbb5,null));};exports[_0x6c1c('0x12d')]=function(_0x150b0d,_0x515348){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x150b0d[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x515348,null))[_0x6c1c('0x12')](function(_0x5183cc){if(_0x5183cc){return _0x5183cc[_0x6c1c('0x12d')](_0x150b0d[_0x6c1c('0x41')][_0x6c1c('0x60')])[_0x6c1c('0x12')](function(){if(_[_0x6c1c('0x129')](_0x150b0d[_0x6c1c('0x41')][_0x6c1c('0x60')])){for(var _0x6010ca=0x0;_0x6010ca<_0x150b0d[_0x6c1c('0x41')][_0x6c1c('0x60')][_0x6c1c('0x48')];_0x6010ca+=0x1){socket[_0x6c1c('0xa4')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x150b0d[_0x6c1c('0x41')]['ids'][_0x6010ca]),'UserId':Number(_0x150b0d[_0x6c1c('0x5d')]['id'])});}}else{socket[_0x6c1c('0xa4')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x150b0d['query'][_0x6c1c('0x60')]),'UserId':Number(_0x150b0d[_0x6c1c('0x5d')]['id'])});}});}})[_0x6c1c('0x12')](respondWithStatusCode(_0x515348,null))[_0x6c1c('0x1d')](handleError(_0x515348,null));};exports[_0x6c1c('0x12e')]=function(_0x20a960,_0x2dfadf){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x20a960[_0x6c1c('0x5d')]['id']}})['then'](handleEntityNotFound(_0x2dfadf,null))[_0x6c1c('0x12')](function(_0x4866d9){if(_0x4866d9){return _0x4866d9['addFaxInteractions'](_0x20a960[_0x6c1c('0x5c')][_0x6c1c('0x60')],_[_0x6c1c('0x61')](_0x20a960['body'],[_0x6c1c('0x60'),'id'])||{})[_0x6c1c('0xa1')](function(){for(var _0x4fe859=0x0;_0x4fe859<_0x20a960[_0x6c1c('0x5c')][_0x6c1c('0x60')][_0x6c1c('0x48')];_0x4fe859+=0x1){socket[_0x6c1c('0xa4')](_0x6c1c('0x12f'),{'FaxInteractionId':Number(_0x20a960['body'][_0x6c1c('0x60')][_0x4fe859]),'UserId':Number(_0x20a960['params']['id'])});}return _0x20a960['body'][_0x6c1c('0x60')];});}})[_0x6c1c('0x12')](respondWithResult(_0x2dfadf,null))[_0x6c1c('0x1d')](handleError(_0x2dfadf,null));};exports[_0x6c1c('0x130')]=function(_0x533a33,_0x5a654e){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x533a33[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x5a654e,null))[_0x6c1c('0x12')](function(_0xff5038){if(_0xff5038){return _0xff5038['removeFaxInteractions'](_0x533a33[_0x6c1c('0x41')][_0x6c1c('0x60')])[_0x6c1c('0x12')](function(){if(_[_0x6c1c('0x129')](_0x533a33[_0x6c1c('0x41')][_0x6c1c('0x60')])){for(var _0x19e1aa=0x0;_0x19e1aa<_0x533a33['query'][_0x6c1c('0x60')]['length'];_0x19e1aa+=0x1){socket[_0x6c1c('0xa4')](_0x6c1c('0x131'),{'FaxInteractionId':Number(_0x533a33['query'][_0x6c1c('0x60')][_0x19e1aa]),'UserId':Number(_0x533a33['params']['id'])});}}else{socket[_0x6c1c('0xa4')](_0x6c1c('0x131'),{'FaxInteractionId':Number(_0x533a33[_0x6c1c('0x41')]['ids']),'UserId':Number(_0x533a33[_0x6c1c('0x5d')]['id'])});}});}})[_0x6c1c('0x12')](respondWithStatusCode(_0x5a654e,null))[_0x6c1c('0x1d')](handleError(_0x5a654e,null));};exports[_0x6c1c('0x132')]=function(_0x4d9913,_0x2fae26){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x4d9913['params']['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x2fae26,null))['then'](function(_0x41143f){if(_0x41143f){return _0x41143f[_0x6c1c('0x132')](_0x4d9913['body'][_0x6c1c('0x60')],_[_0x6c1c('0x61')](_0x4d9913[_0x6c1c('0x5c')],['ids','id'])||{})[_0x6c1c('0xa1')](function(){for(var _0x32acb3=0x0;_0x32acb3<_0x4d9913['body'][_0x6c1c('0x60')]['length'];_0x32acb3+=0x1){socket[_0x6c1c('0xa4')](_0x6c1c('0x133'),{'SmsInteractionId':Number(_0x4d9913[_0x6c1c('0x5c')][_0x6c1c('0x60')][_0x32acb3]),'UserId':Number(_0x4d9913['params']['id'])});}return _0x4d9913['body']['ids'];});}})['then'](respondWithResult(_0x2fae26,null))[_0x6c1c('0x1d')](handleError(_0x2fae26,null));};exports[_0x6c1c('0x134')]=function(_0x322636,_0xe2879a){return db[_0x6c1c('0x3b')]['find']({'where':{'id':_0x322636[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0xe2879a,null))['then'](function(_0x204680){if(_0x204680){return _0x204680[_0x6c1c('0x134')](_0x322636['query'][_0x6c1c('0x60')])[_0x6c1c('0x12')](function(){if(_[_0x6c1c('0x129')](_0x322636[_0x6c1c('0x41')][_0x6c1c('0x60')])){for(var _0x557f53=0x0;_0x557f53<_0x322636[_0x6c1c('0x41')]['ids'][_0x6c1c('0x48')];_0x557f53+=0x1){socket[_0x6c1c('0xa4')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x322636[_0x6c1c('0x41')][_0x6c1c('0x60')][_0x557f53]),'UserId':Number(_0x322636['params']['id'])});}}else{socket['emit'](_0x6c1c('0x135'),{'SmsInteractionId':Number(_0x322636[_0x6c1c('0x41')][_0x6c1c('0x60')]),'UserId':Number(_0x322636[_0x6c1c('0x5d')]['id'])});}});}})['then'](respondWithStatusCode(_0xe2879a,null))[_0x6c1c('0x1d')](handleError(_0xe2879a,null));};exports[_0x6c1c('0x136')]=function(_0x28571d,_0x18caaa){return db['User'][_0x6c1c('0x35')]({'where':{'id':_0x28571d[_0x6c1c('0x5d')]['id']}})['then'](handleEntityNotFound(_0x18caaa,null))[_0x6c1c('0x12')](function(_0x1b685d){if(_0x1b685d){return _0x1b685d['addOpenchannelInteractions'](_0x28571d[_0x6c1c('0x5c')][_0x6c1c('0x60')],_['omit'](_0x28571d[_0x6c1c('0x5c')],['ids','id'])||{})[_0x6c1c('0xa1')](function(){for(var _0x37aa2a=0x0;_0x37aa2a<_0x28571d['body'][_0x6c1c('0x60')][_0x6c1c('0x48')];_0x37aa2a+=0x1){socket['emit'](_0x6c1c('0x137'),{'OpenchannelInteractionId':Number(_0x28571d[_0x6c1c('0x5c')][_0x6c1c('0x60')][_0x37aa2a]),'UserId':Number(_0x28571d[_0x6c1c('0x5d')]['id'])});}return _0x28571d[_0x6c1c('0x5c')][_0x6c1c('0x60')];});}})[_0x6c1c('0x12')](respondWithResult(_0x18caaa,null))[_0x6c1c('0x1d')](handleError(_0x18caaa,null));};exports[_0x6c1c('0x138')]=function(_0x41eb72,_0x3a65a0){return db[_0x6c1c('0x3b')]['find']({'where':{'id':_0x41eb72[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x3a65a0,null))[_0x6c1c('0x12')](function(_0x5dfcbf){if(_0x5dfcbf){return _0x5dfcbf[_0x6c1c('0x138')](_0x41eb72[_0x6c1c('0x41')]['ids'])['then'](function(){if(_[_0x6c1c('0x129')](_0x41eb72[_0x6c1c('0x41')][_0x6c1c('0x60')])){for(var _0x1bd91a=0x0;_0x1bd91a<_0x41eb72[_0x6c1c('0x41')][_0x6c1c('0x60')][_0x6c1c('0x48')];_0x1bd91a+=0x1){socket['emit'](_0x6c1c('0x139'),{'OpenchannelInteractionId':Number(_0x41eb72[_0x6c1c('0x41')][_0x6c1c('0x60')][_0x1bd91a]),'UserId':Number(_0x41eb72[_0x6c1c('0x5d')]['id'])});}}else{socket['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x41eb72[_0x6c1c('0x41')][_0x6c1c('0x60')]),'UserId':Number(_0x41eb72[_0x6c1c('0x5d')]['id'])});}});}})['then'](respondWithStatusCode(_0x3a65a0,null))[_0x6c1c('0x1d')](handleError(_0x3a65a0,null));};exports[_0x6c1c('0x13a')]=function(_0x5b2d95,_0xd9bcc8){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x5b2d95['params']['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0xd9bcc8,null))[_0x6c1c('0x12')](function(_0x14e820){if(_0x14e820){return _0x14e820['addWhatsappInteractions'](_0x5b2d95[_0x6c1c('0x5c')]['ids'],_[_0x6c1c('0x61')](_0x5b2d95[_0x6c1c('0x5c')],[_0x6c1c('0x60'),'id'])||{})['spread'](function(){for(var _0x3bc5d8=0x0;_0x3bc5d8<_0x5b2d95[_0x6c1c('0x5c')]['ids']['length'];_0x3bc5d8+=0x1){socket[_0x6c1c('0xa4')](_0x6c1c('0x13b'),{'WhatsappInteractionId':Number(_0x5b2d95['body'][_0x6c1c('0x60')][_0x3bc5d8]),'UserId':Number(_0x5b2d95['params']['id'])});}return _0x5b2d95[_0x6c1c('0x5c')][_0x6c1c('0x60')];});}})[_0x6c1c('0x12')](respondWithResult(_0xd9bcc8,null))['catch'](handleError(_0xd9bcc8,null));};exports[_0x6c1c('0x13c')]=function(_0x29de56,_0x41b154){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x29de56['params']['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x41b154,null))[_0x6c1c('0x12')](function(_0x405752){if(_0x405752){return _0x405752[_0x6c1c('0x13c')](_0x29de56[_0x6c1c('0x41')][_0x6c1c('0x60')]);}})['then'](respondWithStatusCode(_0x41b154,null))[_0x6c1c('0x1d')](handleError(_0x41b154,null));};exports[_0x6c1c('0x13d')]=function(_0x54a7a4,_0x1bee9a){var _0x101246={};var _0x53cfc0={};var _0x10bc1c;var _0x4df763;return db[_0x6c1c('0x3b')]['findOne']({'where':{'id':_0x54a7a4[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x1bee9a,null))[_0x6c1c('0x12')](function(_0x45605a){if(_0x45605a){_0x10bc1c=_0x45605a;_0x53cfc0['model']=_[_0x6c1c('0x53')](db['VoicePrefix'][_0x6c1c('0x3c')]);_0x53cfc0[_0x6c1c('0x41')]=_[_0x6c1c('0x53')](_0x54a7a4[_0x6c1c('0x41')]);_0x53cfc0[_0x6c1c('0x54')]=_[_0x6c1c('0xc3')](_0x53cfc0['model'],_0x53cfc0[_0x6c1c('0x41')]);_0x101246[_0x6c1c('0x43')]=_[_0x6c1c('0xc3')](_0x53cfc0[_0x6c1c('0x4f')],qs[_0x6c1c('0x55')](_0x54a7a4[_0x6c1c('0x41')]['fields']));_0x101246[_0x6c1c('0x43')]=_0x101246[_0x6c1c('0x43')]['length']?_0x101246[_0x6c1c('0x43')]:_0x53cfc0[_0x6c1c('0x4f')];_0x101246['order']=qs['sort'](_0x54a7a4[_0x6c1c('0x41')]['sort']);_0x101246[_0x6c1c('0x40')]=qs[_0x6c1c('0x54')](_['pick'](_0x54a7a4['query'],_0x53cfc0['filters']));if(_0x54a7a4[_0x6c1c('0x41')][_0x6c1c('0x30')]){_0x101246[_0x6c1c('0x40')]=_[_0x6c1c('0x57')](_0x101246['where'],{'$or':_[_0x6c1c('0x32')](_0x101246[_0x6c1c('0x43')],function(_0x8a8191){var _0x10f11b={};_0x10f11b[_0x8a8191]={'$like':'%'+_0x54a7a4[_0x6c1c('0x41')][_0x6c1c('0x30')]+'%'};return _0x10f11b;})});}_0x101246=_['merge']({},_0x101246,_0x54a7a4['options']);return _0x10bc1c[_0x6c1c('0x13d')](_0x101246);}})[_0x6c1c('0x12')](function(_0x2da291){if(_0x2da291){_0x4df763=_0x2da291['length'];if(!_0x54a7a4[_0x6c1c('0x41')]['hasOwnProperty'](_0x6c1c('0xcb'))){_0x101246[_0x6c1c('0x24')]=qs[_0x6c1c('0x24')](_0x54a7a4['query'][_0x6c1c('0x24')]);_0x101246[_0x6c1c('0x22')]=qs[_0x6c1c('0x22')](_0x54a7a4[_0x6c1c('0x41')]['offset']);}return _0x10bc1c[_0x6c1c('0x13d')](_0x101246);}})[_0x6c1c('0x12')](function(_0x2fb6bb){if(_0x2fb6bb){return _0x2fb6bb?{'count':_0x4df763,'rows':_0x2fb6bb}:null;}})[_0x6c1c('0x12')](respondWithResult(_0x1bee9a,null))[_0x6c1c('0x1d')](handleError(_0x1bee9a,null));};exports['getFaxAccounts']=function(_0x19bc32,_0x2a4dda){var _0x3fb3ae={};var _0x7c99f1={};var _0x3e94a9;var _0x4aa544;return db[_0x6c1c('0x3b')][_0x6c1c('0x91')]({'where':{'id':_0x19bc32['params']['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x2a4dda,null))['then'](function(_0x64aaab){if(_0x64aaab){_0x3e94a9=_0x64aaab;_0x7c99f1['model']=_[_0x6c1c('0x53')](db['FaxAccount'][_0x6c1c('0x3c')]);_0x7c99f1[_0x6c1c('0x41')]=_[_0x6c1c('0x53')](_0x19bc32[_0x6c1c('0x41')]);_0x7c99f1[_0x6c1c('0x54')]=_[_0x6c1c('0xc3')](_0x7c99f1[_0x6c1c('0x4f')],_0x7c99f1['query']);_0x3fb3ae['attributes']=_[_0x6c1c('0xc3')](_0x7c99f1[_0x6c1c('0x4f')],qs[_0x6c1c('0x55')](_0x19bc32[_0x6c1c('0x41')][_0x6c1c('0x55')]));_0x3fb3ae[_0x6c1c('0x43')]=_0x3fb3ae[_0x6c1c('0x43')]['length']?_0x3fb3ae[_0x6c1c('0x43')]:_0x7c99f1[_0x6c1c('0x4f')];_0x3fb3ae['order']=qs[_0x6c1c('0xc5')](_0x19bc32[_0x6c1c('0x41')]['sort']);_0x3fb3ae[_0x6c1c('0x40')]=qs[_0x6c1c('0x54')](_['pick'](_0x19bc32['query'],_0x7c99f1[_0x6c1c('0x54')]));if(_0x19bc32[_0x6c1c('0x41')]['filter']){_0x3fb3ae[_0x6c1c('0x40')]=_['merge'](_0x3fb3ae['where'],{'$or':_['map'](_0x3fb3ae[_0x6c1c('0x43')],function(_0x125e0d){var _0xa7148e={};_0xa7148e[_0x125e0d]={'$like':'%'+_0x19bc32[_0x6c1c('0x41')][_0x6c1c('0x30')]+'%'};return _0xa7148e;})});}_0x3fb3ae=_[_0x6c1c('0x57')]({},_0x3fb3ae,_0x19bc32[_0x6c1c('0x58')]);return _0x3e94a9['getFaxAccounts'](_0x3fb3ae);}})[_0x6c1c('0x12')](function(_0x39d619){if(_0x39d619){_0x4aa544=_0x39d619[_0x6c1c('0x48')];if(!_0x19bc32[_0x6c1c('0x41')]['hasOwnProperty'](_0x6c1c('0xcb'))){_0x3fb3ae[_0x6c1c('0x24')]=qs[_0x6c1c('0x24')](_0x19bc32[_0x6c1c('0x41')][_0x6c1c('0x24')]);_0x3fb3ae[_0x6c1c('0x22')]=qs[_0x6c1c('0x22')](_0x19bc32[_0x6c1c('0x41')][_0x6c1c('0x22')]);}return _0x3e94a9[_0x6c1c('0x13e')](_0x3fb3ae);}})[_0x6c1c('0x12')](function(_0x19bc09){if(_0x19bc09){return _0x19bc09?{'count':_0x4aa544,'rows':_0x19bc09}:null;}})[_0x6c1c('0x12')](respondWithResult(_0x2a4dda,null))[_0x6c1c('0x1d')](handleError(_0x2a4dda,null));};exports[_0x6c1c('0x13f')]=function(_0x3a1759,_0x5d6d96){return db['User'][_0x6c1c('0x35')]({'where':{'id':_0x3a1759[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x5d6d96,null))[_0x6c1c('0x12')](function(_0x4d9519){if(_0x4d9519){return _0x4d9519['addFaxAccounts'](_0x3a1759[_0x6c1c('0x5c')][_0x6c1c('0x60')],_['omit'](_0x3a1759[_0x6c1c('0x5c')],['ids','id'])||{});}})[_0x6c1c('0x12')](respondWithResult(_0x5d6d96,null))[_0x6c1c('0x1d')](handleError(_0x5d6d96,null));};exports[_0x6c1c('0x140')]=function(_0x54cfb8,_0x5c6aff){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x54cfb8[_0x6c1c('0x5d')]['id']}})['then'](handleEntityNotFound(_0x5c6aff,null))['then'](function(_0x12e5c0){if(_0x12e5c0){return _0x12e5c0[_0x6c1c('0x140')](_0x54cfb8[_0x6c1c('0x41')][_0x6c1c('0x60')]);}})[_0x6c1c('0x12')](respondWithStatusCode(_0x5c6aff,null))[_0x6c1c('0x1d')](handleError(_0x5c6aff,null));};exports[_0x6c1c('0x141')]=function(_0x190b34,_0x5b6e8d){var _0x49d672={};var _0xda83f4={};var _0x3c7e2b;var _0x3f4a75;return db[_0x6c1c('0x3b')]['findOne']({'where':{'id':_0x190b34[_0x6c1c('0x5d')]['id']}})['then'](handleEntityNotFound(_0x5b6e8d,null))[_0x6c1c('0x12')](function(_0x713164){if(_0x713164){_0x3c7e2b=_0x713164;_0xda83f4[_0x6c1c('0x4f')]=_[_0x6c1c('0x53')](db[_0x6c1c('0x142')][_0x6c1c('0x3c')]);_0xda83f4['query']=_[_0x6c1c('0x53')](_0x190b34[_0x6c1c('0x41')]);_0xda83f4[_0x6c1c('0x54')]=_['intersection'](_0xda83f4[_0x6c1c('0x4f')],_0xda83f4[_0x6c1c('0x41')]);_0x49d672[_0x6c1c('0x43')]=_[_0x6c1c('0xc3')](_0xda83f4['model'],qs['fields'](_0x190b34[_0x6c1c('0x41')][_0x6c1c('0x55')]));_0x49d672[_0x6c1c('0x43')]=_0x49d672['attributes'][_0x6c1c('0x48')]?_0x49d672['attributes']:_0xda83f4[_0x6c1c('0x4f')];_0x49d672[_0x6c1c('0xc4')]=qs[_0x6c1c('0xc5')](_0x190b34[_0x6c1c('0x41')][_0x6c1c('0xc5')]);_0x49d672['where']=qs[_0x6c1c('0x54')](_[_0x6c1c('0xc6')](_0x190b34[_0x6c1c('0x41')],_0xda83f4[_0x6c1c('0x54')]));if(_0x190b34[_0x6c1c('0x41')][_0x6c1c('0x30')]){_0x49d672['where']=_[_0x6c1c('0x57')](_0x49d672[_0x6c1c('0x40')],{'$or':_[_0x6c1c('0x32')](_0x49d672[_0x6c1c('0x43')],function(_0x5a3a73){var _0x3e7b47={};_0x3e7b47[_0x5a3a73]={'$like':'%'+_0x190b34['query'][_0x6c1c('0x30')]+'%'};return _0x3e7b47;})});}_0x49d672=_['merge']({},_0x49d672,_0x190b34[_0x6c1c('0x58')]);return _0x3c7e2b[_0x6c1c('0x141')](_0x49d672);}})[_0x6c1c('0x12')](function(_0x22285d){if(_0x22285d){_0x3f4a75=_0x22285d[_0x6c1c('0x48')];if(!_0x190b34['query']['hasOwnProperty'](_0x6c1c('0xcb'))){_0x49d672[_0x6c1c('0x24')]=qs['limit'](_0x190b34[_0x6c1c('0x41')]['limit']);_0x49d672[_0x6c1c('0x22')]=qs['offset'](_0x190b34[_0x6c1c('0x41')][_0x6c1c('0x22')]);}return _0x3c7e2b[_0x6c1c('0x141')](_0x49d672);}})[_0x6c1c('0x12')](function(_0x23fad3){if(_0x23fad3){return _0x23fad3?{'count':_0x3f4a75,'rows':_0x23fad3}:null;}})[_0x6c1c('0x12')](respondWithResult(_0x5b6e8d,null))[_0x6c1c('0x1d')](handleError(_0x5b6e8d,null));};exports['addMailAccounts']=function(_0x2daed7,_0x112da5){return db[_0x6c1c('0x3b')]['find']({'where':{'id':_0x2daed7[_0x6c1c('0x5d')]['id']}})['then'](handleEntityNotFound(_0x112da5,null))['then'](function(_0x23ad46){if(_0x23ad46){return _0x23ad46[_0x6c1c('0x143')](_0x2daed7['body'][_0x6c1c('0x60')],_['omit'](_0x2daed7['body'],['ids','id'])||{});}})[_0x6c1c('0x12')](respondWithResult(_0x112da5,null))[_0x6c1c('0x1d')](handleError(_0x112da5,null));};exports[_0x6c1c('0x144')]=function(_0x31000f,_0x1a3505){return db[_0x6c1c('0x3b')]['find']({'where':{'id':_0x31000f[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x1a3505,null))[_0x6c1c('0x12')](function(_0x39cca2){if(_0x39cca2){return _0x39cca2[_0x6c1c('0x144')](_0x31000f[_0x6c1c('0x41')][_0x6c1c('0x60')]);}})['then'](respondWithStatusCode(_0x1a3505,null))[_0x6c1c('0x1d')](handleError(_0x1a3505,null));};exports[_0x6c1c('0x145')]=function(_0x142f71,_0x419965){var _0x118682={};var _0x2f6f55={};var _0x40803c;var _0x332458;return db[_0x6c1c('0x3b')]['findOne']({'where':{'id':_0x142f71['params']['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x419965,null))['then'](function(_0x4a33ed){if(_0x4a33ed){_0x40803c=_0x4a33ed;_0x2f6f55['model']=_[_0x6c1c('0x53')](db[_0x6c1c('0x146')][_0x6c1c('0x3c')]);_0x2f6f55['query']=_[_0x6c1c('0x53')](_0x142f71[_0x6c1c('0x41')]);_0x2f6f55['filters']=_[_0x6c1c('0xc3')](_0x2f6f55['model'],_0x2f6f55[_0x6c1c('0x41')]);_0x118682[_0x6c1c('0x43')]=_[_0x6c1c('0xc3')](_0x2f6f55['model'],qs[_0x6c1c('0x55')](_0x142f71[_0x6c1c('0x41')][_0x6c1c('0x55')]));_0x118682[_0x6c1c('0x43')]=_0x118682['attributes']['length']?_0x118682[_0x6c1c('0x43')]:_0x2f6f55['model'];_0x118682[_0x6c1c('0xc4')]=qs[_0x6c1c('0xc5')](_0x142f71[_0x6c1c('0x41')][_0x6c1c('0xc5')]);_0x118682[_0x6c1c('0x40')]=qs['filters'](_[_0x6c1c('0xc6')](_0x142f71['query'],_0x2f6f55[_0x6c1c('0x54')]));if(_0x142f71[_0x6c1c('0x41')][_0x6c1c('0x30')]){_0x118682['where']=_[_0x6c1c('0x57')](_0x118682[_0x6c1c('0x40')],{'$or':_['map'](_0x118682['attributes'],function(_0x3f6f2b){var _0x12f0a6={};_0x12f0a6[_0x3f6f2b]={'$like':'%'+_0x142f71['query'][_0x6c1c('0x30')]+'%'};return _0x12f0a6;})});}_0x118682=_[_0x6c1c('0x57')]({},_0x118682,_0x142f71[_0x6c1c('0x58')]);return _0x40803c[_0x6c1c('0x145')](_0x118682);}})[_0x6c1c('0x12')](function(_0x339751){if(_0x339751){_0x332458=_0x339751[_0x6c1c('0x48')];if(!_0x142f71[_0x6c1c('0x41')][_0x6c1c('0xc7')]('nolimit')){_0x118682[_0x6c1c('0x24')]=qs[_0x6c1c('0x24')](_0x142f71[_0x6c1c('0x41')]['limit']);_0x118682[_0x6c1c('0x22')]=qs[_0x6c1c('0x22')](_0x142f71['query']['offset']);}return _0x40803c[_0x6c1c('0x145')](_0x118682);}})['then'](function(_0x43f22f){if(_0x43f22f){return _0x43f22f?{'count':_0x332458,'rows':_0x43f22f}:null;}})[_0x6c1c('0x12')](respondWithResult(_0x419965,null))[_0x6c1c('0x1d')](handleError(_0x419965,null));};exports[_0x6c1c('0x147')]=function(_0x45dcc7,_0x463b4f){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x45dcc7[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x463b4f,null))[_0x6c1c('0x12')](function(_0x513b19){if(_0x513b19){return _0x513b19[_0x6c1c('0x147')](_0x45dcc7[_0x6c1c('0x5c')]['ids'],_['omit'](_0x45dcc7[_0x6c1c('0x5c')],[_0x6c1c('0x60'),'id'])||{});}})['then'](respondWithResult(_0x463b4f,null))['catch'](handleError(_0x463b4f,null));};exports[_0x6c1c('0x148')]=function(_0x50ef82,_0x5550dd){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x50ef82[_0x6c1c('0x5d')]['id']}})['then'](handleEntityNotFound(_0x5550dd,null))[_0x6c1c('0x12')](function(_0x135bbb){if(_0x135bbb){return _0x135bbb['removeOpenchannelAccounts'](_0x50ef82[_0x6c1c('0x41')][_0x6c1c('0x60')]);}})['then'](respondWithStatusCode(_0x5550dd,null))[_0x6c1c('0x1d')](handleError(_0x5550dd,null));};exports[_0x6c1c('0x149')]=function(_0x3dccd1,_0x1cb059){var _0x3f69cd={};var _0x1ef943={};var _0x3f9828;var _0x4182d3;return db[_0x6c1c('0x3b')][_0x6c1c('0x91')]({'where':{'id':_0x3dccd1['params']['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x1cb059,null))[_0x6c1c('0x12')](function(_0x2c06bf){if(_0x2c06bf){_0x3f9828=_0x2c06bf;_0x1ef943[_0x6c1c('0x4f')]=_['keys'](db[_0x6c1c('0x14a')][_0x6c1c('0x3c')]);_0x1ef943[_0x6c1c('0x41')]=_[_0x6c1c('0x53')](_0x3dccd1['query']);_0x1ef943[_0x6c1c('0x54')]=_[_0x6c1c('0xc3')](_0x1ef943[_0x6c1c('0x4f')],_0x1ef943[_0x6c1c('0x41')]);_0x3f69cd['attributes']=_[_0x6c1c('0xc3')](_0x1ef943[_0x6c1c('0x4f')],qs['fields'](_0x3dccd1[_0x6c1c('0x41')]['fields']));_0x3f69cd[_0x6c1c('0x43')]=_0x3f69cd[_0x6c1c('0x43')][_0x6c1c('0x48')]?_0x3f69cd[_0x6c1c('0x43')]:_0x1ef943[_0x6c1c('0x4f')];_0x3f69cd['order']=qs[_0x6c1c('0xc5')](_0x3dccd1[_0x6c1c('0x41')][_0x6c1c('0xc5')]);_0x3f69cd[_0x6c1c('0x40')]=qs[_0x6c1c('0x54')](_[_0x6c1c('0xc6')](_0x3dccd1[_0x6c1c('0x41')],_0x1ef943[_0x6c1c('0x54')]));if(_0x3dccd1[_0x6c1c('0x41')]['filter']){_0x3f69cd[_0x6c1c('0x40')]=_['merge'](_0x3f69cd['where'],{'$or':_[_0x6c1c('0x32')](_0x3f69cd[_0x6c1c('0x43')],function(_0x1d2064){var _0x5a6330={};_0x5a6330[_0x1d2064]={'$like':'%'+_0x3dccd1['query'][_0x6c1c('0x30')]+'%'};return _0x5a6330;})});}_0x3f69cd=_[_0x6c1c('0x57')]({},_0x3f69cd,_0x3dccd1[_0x6c1c('0x58')]);return _0x3f9828[_0x6c1c('0x149')](_0x3f69cd);}})[_0x6c1c('0x12')](function(_0x146cfd){if(_0x146cfd){_0x4182d3=_0x146cfd[_0x6c1c('0x48')];if(!_0x3dccd1[_0x6c1c('0x41')]['hasOwnProperty'](_0x6c1c('0xcb'))){_0x3f69cd[_0x6c1c('0x24')]=qs[_0x6c1c('0x24')](_0x3dccd1[_0x6c1c('0x41')]['limit']);_0x3f69cd[_0x6c1c('0x22')]=qs[_0x6c1c('0x22')](_0x3dccd1[_0x6c1c('0x41')][_0x6c1c('0x22')]);}return _0x3f9828[_0x6c1c('0x149')](_0x3f69cd);}})[_0x6c1c('0x12')](function(_0x48e72e){if(_0x48e72e){return _0x48e72e?{'count':_0x4182d3,'rows':_0x48e72e}:null;}})['then'](respondWithResult(_0x1cb059,null))[_0x6c1c('0x1d')](handleError(_0x1cb059,null));};exports[_0x6c1c('0x14b')]=function(_0x11065d,_0xb7dfec){return db['User'][_0x6c1c('0x35')]({'where':{'id':_0x11065d[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0xb7dfec,null))[_0x6c1c('0x12')](function(_0x3c1ee2){if(_0x3c1ee2){return _0x3c1ee2['addSmsAccounts'](_0x11065d[_0x6c1c('0x5c')][_0x6c1c('0x60')],_[_0x6c1c('0x61')](_0x11065d[_0x6c1c('0x5c')],[_0x6c1c('0x60'),'id'])||{});}})[_0x6c1c('0x12')](respondWithResult(_0xb7dfec,null))[_0x6c1c('0x1d')](handleError(_0xb7dfec,null));};exports[_0x6c1c('0x14c')]=function(_0x3529f3,_0x590e1e){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x3529f3[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x590e1e,null))[_0x6c1c('0x12')](function(_0x46b607){if(_0x46b607){return _0x46b607[_0x6c1c('0x14c')](_0x3529f3[_0x6c1c('0x41')][_0x6c1c('0x60')]);}})['then'](respondWithStatusCode(_0x590e1e,null))['catch'](handleError(_0x590e1e,null));};exports[_0x6c1c('0x14d')]=function(_0x451bb1,_0x3d30fe){var _0xd485a4={};var _0x55ec3f={};var _0x707432;var _0x38d5ea;return db['User'][_0x6c1c('0x91')]({'where':{'id':_0x451bb1['params']['id']}})['then'](handleEntityNotFound(_0x3d30fe,null))[_0x6c1c('0x12')](function(_0x2c2433){if(_0x2c2433){_0x707432=_0x2c2433;_0x55ec3f['model']=_[_0x6c1c('0x53')](db[_0x6c1c('0x14e')][_0x6c1c('0x3c')]);_0x55ec3f[_0x6c1c('0x41')]=_[_0x6c1c('0x53')](_0x451bb1[_0x6c1c('0x41')]);_0x55ec3f['filters']=_['intersection'](_0x55ec3f['model'],_0x55ec3f[_0x6c1c('0x41')]);_0xd485a4[_0x6c1c('0x43')]=_['intersection'](_0x55ec3f[_0x6c1c('0x4f')],qs['fields'](_0x451bb1[_0x6c1c('0x41')][_0x6c1c('0x55')]));_0xd485a4[_0x6c1c('0x43')]=_0xd485a4[_0x6c1c('0x43')]['length']?_0xd485a4[_0x6c1c('0x43')]:_0x55ec3f[_0x6c1c('0x4f')];_0xd485a4[_0x6c1c('0xc4')]=qs[_0x6c1c('0xc5')](_0x451bb1[_0x6c1c('0x41')][_0x6c1c('0xc5')]);_0xd485a4[_0x6c1c('0x40')]=qs[_0x6c1c('0x54')](_['pick'](_0x451bb1[_0x6c1c('0x41')],_0x55ec3f['filters']));if(_0x451bb1[_0x6c1c('0x41')][_0x6c1c('0x30')]){_0xd485a4['where']=_[_0x6c1c('0x57')](_0xd485a4['where'],{'$or':_[_0x6c1c('0x32')](_0xd485a4['attributes'],function(_0x549745){var _0x20adcc={};_0x20adcc[_0x549745]={'$like':'%'+_0x451bb1[_0x6c1c('0x41')][_0x6c1c('0x30')]+'%'};return _0x20adcc;})});}_0xd485a4=_['merge']({},_0xd485a4,_0x451bb1[_0x6c1c('0x58')]);return _0x707432[_0x6c1c('0x14d')](_0xd485a4);}})[_0x6c1c('0x12')](function(_0x5328e5){if(_0x5328e5){_0x38d5ea=_0x5328e5[_0x6c1c('0x48')];if(!_0x451bb1[_0x6c1c('0x41')][_0x6c1c('0xc7')](_0x6c1c('0xcb'))){_0xd485a4[_0x6c1c('0x24')]=qs['limit'](_0x451bb1[_0x6c1c('0x41')][_0x6c1c('0x24')]);_0xd485a4['offset']=qs[_0x6c1c('0x22')](_0x451bb1['query'][_0x6c1c('0x22')]);}return _0x707432['getChatWebsites'](_0xd485a4);}})['then'](function(_0x2edc9b){if(_0x2edc9b){return _0x2edc9b?{'count':_0x38d5ea,'rows':_0x2edc9b}:null;}})[_0x6c1c('0x12')](respondWithResult(_0x3d30fe,null))['catch'](handleError(_0x3d30fe,null));};exports['addChatWebsites']=function(_0x4a0550,_0x550b32){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x4a0550[_0x6c1c('0x5d')]['id']}})['then'](handleEntityNotFound(_0x550b32,null))['then'](function(_0x1438c7){if(_0x1438c7){return _0x1438c7['addChatWebsites'](_0x4a0550['body'][_0x6c1c('0x60')],_[_0x6c1c('0x61')](_0x4a0550[_0x6c1c('0x5c')],[_0x6c1c('0x60'),'id'])||{});}})['then'](respondWithResult(_0x550b32,null))[_0x6c1c('0x1d')](handleError(_0x550b32,null));};exports[_0x6c1c('0x14f')]=function(_0x3a22c8,_0x251a60){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x3a22c8['params']['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x251a60,null))[_0x6c1c('0x12')](function(_0x3a6cb8){if(_0x3a6cb8){return _0x3a6cb8['removeChatWebsites'](_0x3a22c8['query']['ids']);}})[_0x6c1c('0x12')](respondWithStatusCode(_0x251a60,null))[_0x6c1c('0x1d')](handleError(_0x251a60,null));};exports[_0x6c1c('0x150')]=function(_0x139385,_0x912fdd){var _0x52f9f8={};var _0x2c4c1a={};var _0x103a94;var _0x1a8f5c;return db[_0x6c1c('0x3b')][_0x6c1c('0x91')]({'where':{'id':_0x139385['params']['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x912fdd,null))[_0x6c1c('0x12')](function(_0x339041){if(_0x339041){_0x103a94=_0x339041;_0x2c4c1a['model']=_[_0x6c1c('0x53')](db[_0x6c1c('0x151')][_0x6c1c('0x3c')]);_0x2c4c1a['query']=_['keys'](_0x139385[_0x6c1c('0x41')]);_0x2c4c1a[_0x6c1c('0x54')]=_['intersection'](_0x2c4c1a[_0x6c1c('0x4f')],_0x2c4c1a[_0x6c1c('0x41')]);_0x52f9f8['attributes']=_[_0x6c1c('0xc3')](_0x2c4c1a[_0x6c1c('0x4f')],qs[_0x6c1c('0x55')](_0x139385['query'][_0x6c1c('0x55')]));_0x52f9f8[_0x6c1c('0x43')]=_0x52f9f8[_0x6c1c('0x43')]['length']?_0x52f9f8['attributes']:_0x2c4c1a[_0x6c1c('0x4f')];_0x52f9f8['order']=qs[_0x6c1c('0xc5')](_0x139385[_0x6c1c('0x41')][_0x6c1c('0xc5')]);_0x52f9f8[_0x6c1c('0x40')]=qs[_0x6c1c('0x54')](_[_0x6c1c('0xc6')](_0x139385[_0x6c1c('0x41')],_0x2c4c1a[_0x6c1c('0x54')]));if(_0x139385['query'][_0x6c1c('0x30')]){_0x52f9f8['where']=_['merge'](_0x52f9f8[_0x6c1c('0x40')],{'$or':_[_0x6c1c('0x32')](_0x52f9f8[_0x6c1c('0x43')],function(_0x80585c){var _0x301dcb={};_0x301dcb[_0x80585c]={'$like':'%'+_0x139385[_0x6c1c('0x41')][_0x6c1c('0x30')]+'%'};return _0x301dcb;})});}_0x52f9f8=_[_0x6c1c('0x57')]({},_0x52f9f8,_0x139385['options']);return _0x103a94['getWhatsappAccounts'](_0x52f9f8);}})[_0x6c1c('0x12')](function(_0x440a4e){if(_0x440a4e){_0x1a8f5c=_0x440a4e[_0x6c1c('0x48')];if(!_0x139385[_0x6c1c('0x41')][_0x6c1c('0xc7')]('nolimit')){_0x52f9f8[_0x6c1c('0x24')]=qs[_0x6c1c('0x24')](_0x139385[_0x6c1c('0x41')][_0x6c1c('0x24')]);_0x52f9f8[_0x6c1c('0x22')]=qs[_0x6c1c('0x22')](_0x139385['query']['offset']);}return _0x103a94['getWhatsappAccounts'](_0x52f9f8);}})['then'](function(_0xf0ff27){if(_0xf0ff27){return _0xf0ff27?{'count':_0x1a8f5c,'rows':_0xf0ff27}:null;}})[_0x6c1c('0x12')](respondWithResult(_0x912fdd,null))[_0x6c1c('0x1d')](handleError(_0x912fdd,null));};exports[_0x6c1c('0x152')]=function(_0x48bde0,_0x15701){return db['User']['find']({'where':{'id':_0x48bde0['params']['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x15701,null))[_0x6c1c('0x12')](function(_0x1ef926){if(_0x1ef926){return _0x1ef926[_0x6c1c('0x152')](_0x48bde0['body'][_0x6c1c('0x60')],_[_0x6c1c('0x61')](_0x48bde0[_0x6c1c('0x5c')],[_0x6c1c('0x60'),'id'])||{});}})[_0x6c1c('0x12')](respondWithResult(_0x15701,null))[_0x6c1c('0x1d')](handleError(_0x15701,null));};exports[_0x6c1c('0x153')]=function(_0x224cae,_0x4d3650){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x224cae[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x4d3650,null))[_0x6c1c('0x12')](function(_0x5a50ee){if(_0x5a50ee){return _0x5a50ee['removeWhatsappAccounts'](_0x224cae['query'][_0x6c1c('0x60')]);}})[_0x6c1c('0x12')](respondWithStatusCode(_0x4d3650,null))[_0x6c1c('0x1d')](handleError(_0x4d3650,null));};exports[_0x6c1c('0x154')]=function(_0x271708,_0x412e33){var _0x25ab20={};var _0x5eb229={};var _0x2a4fbc;var _0x59ae6b;return db[_0x6c1c('0x3b')]['findOne']({'where':{'id':_0x271708[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x412e33,null))['then'](function(_0x5ba8a4){if(_0x5ba8a4){_0x2a4fbc=_0x5ba8a4;_0x5eb229[_0x6c1c('0x4f')]=_[_0x6c1c('0x53')](db[_0x6c1c('0x155')][_0x6c1c('0x3c')]);_0x5eb229[_0x6c1c('0x41')]=_[_0x6c1c('0x53')](_0x271708['query']);_0x5eb229[_0x6c1c('0x54')]=_[_0x6c1c('0xc3')](_0x5eb229[_0x6c1c('0x4f')],_0x5eb229['query']);_0x25ab20[_0x6c1c('0x43')]=_['intersection'](_0x5eb229[_0x6c1c('0x4f')],qs[_0x6c1c('0x55')](_0x271708[_0x6c1c('0x41')][_0x6c1c('0x55')]));_0x25ab20[_0x6c1c('0x43')]=_0x25ab20[_0x6c1c('0x43')][_0x6c1c('0x48')]?_0x25ab20['attributes']:_0x5eb229[_0x6c1c('0x4f')];_0x25ab20['order']=qs[_0x6c1c('0xc5')](_0x271708['query']['sort']);_0x25ab20[_0x6c1c('0x40')]=qs[_0x6c1c('0x54')](_[_0x6c1c('0xc6')](_0x271708[_0x6c1c('0x41')],_0x5eb229[_0x6c1c('0x54')]));if(_0x271708[_0x6c1c('0x41')][_0x6c1c('0x30')]){_0x25ab20[_0x6c1c('0x40')]=_['merge'](_0x25ab20[_0x6c1c('0x40')],{'$or':_['map'](_0x25ab20[_0x6c1c('0x43')],function(_0x8f4edf){var _0x1e0bd3={};_0x1e0bd3[_0x8f4edf]={'$like':'%'+_0x271708[_0x6c1c('0x41')][_0x6c1c('0x30')]+'%'};return _0x1e0bd3;})});}_0x25ab20=_['merge']({},_0x25ab20,_0x271708[_0x6c1c('0x58')]);return _0x2a4fbc[_0x6c1c('0x154')](_0x25ab20);}})['then'](function(_0x4eb761){if(_0x4eb761){_0x59ae6b=_0x4eb761[_0x6c1c('0x48')];if(!_0x271708[_0x6c1c('0x41')][_0x6c1c('0xc7')]('nolimit')){_0x25ab20[_0x6c1c('0x24')]=qs['limit'](_0x271708[_0x6c1c('0x41')][_0x6c1c('0x24')]);_0x25ab20['offset']=qs[_0x6c1c('0x22')](_0x271708['query'][_0x6c1c('0x22')]);}return _0x2a4fbc[_0x6c1c('0x154')](_0x25ab20);}})[_0x6c1c('0x12')](function(_0x56f9d6){if(_0x56f9d6){return _0x56f9d6?{'count':_0x59ae6b,'rows':_0x56f9d6}:null;}})['then'](respondWithResult(_0x412e33,null))[_0x6c1c('0x1d')](handleError(_0x412e33,null));};exports[_0x6c1c('0x156')]=function(_0x45997e,_0x1ded8d){return db['User'][_0x6c1c('0x35')]({'where':{'id':_0x45997e['params']['id']}})['then'](handleEntityNotFound(_0x1ded8d,null))[_0x6c1c('0x12')](function(_0x4b069a){if(_0x4b069a){return _0x4b069a['addSquareProjects'](_0x45997e[_0x6c1c('0x5c')][_0x6c1c('0x60')],_['omit'](_0x45997e[_0x6c1c('0x5c')],[_0x6c1c('0x60'),'id'])||{});}})[_0x6c1c('0x12')](respondWithResult(_0x1ded8d,null))[_0x6c1c('0x1d')](handleError(_0x1ded8d,null));};exports[_0x6c1c('0x157')]=function(_0x11d703,_0x5bf2a6){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x11d703['params']['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x5bf2a6,null))[_0x6c1c('0x12')](function(_0x44d680){if(_0x44d680){return _0x44d680[_0x6c1c('0x157')](_0x11d703[_0x6c1c('0x41')][_0x6c1c('0x60')]);}})[_0x6c1c('0x12')](respondWithStatusCode(_0x5bf2a6,null))['catch'](handleError(_0x5bf2a6,null));};exports[_0x6c1c('0x158')]=function(_0x1da81d,_0x798f7e){var _0x3c9c9f={},_0x5ad658={},_0x23c164={'count':0x0,'rows':[]};var _0x34100e=db[_0x6c1c('0x159')][_0x6c1c('0x3c')];_0x5ad658['model']=_[_0x6c1c('0x53')](_0x34100e);_0x5ad658[_0x6c1c('0x41')]=_[_0x6c1c('0x53')](_0x1da81d[_0x6c1c('0x41')]);_0x5ad658[_0x6c1c('0x54')]=_[_0x6c1c('0xc3')](_0x5ad658['model'],_0x5ad658['query']);_0x5ad658[_0x6c1c('0x54')]=_[_0x6c1c('0xf9')](_0x5ad658[_0x6c1c('0x54')],['$and','$or',_0x6c1c('0x15a'),_0x6c1c('0x15b'),_0x6c1c('0x15c'),_0x6c1c('0x15d'),_0x6c1c('0x15e'),_0x6c1c('0x15f'),_0x6c1c('0x160'),'$between',_0x6c1c('0x161'),_0x6c1c('0x162'),'$notIn',_0x6c1c('0x163'),_0x6c1c('0x164'),_0x6c1c('0x165'),'$notILike',_0x6c1c('0x163'),_0x6c1c('0x166'),'$contains',_0x6c1c('0x167'),_0x6c1c('0x168')]);_0x3c9c9f['attributes']=_[_0x6c1c('0xc3')](_0x5ad658[_0x6c1c('0x4f')],qs[_0x6c1c('0x55')](_0x1da81d[_0x6c1c('0x41')]['fields']));_0x3c9c9f[_0x6c1c('0x43')]=_0x3c9c9f[_0x6c1c('0x43')][_0x6c1c('0x48')]?_0x3c9c9f[_0x6c1c('0x43')]:_0x5ad658['model'];if(!_0x1da81d[_0x6c1c('0x41')]['hasOwnProperty']('nolimit')){_0x3c9c9f[_0x6c1c('0x24')]=qs['limit'](_0x1da81d[_0x6c1c('0x41')][_0x6c1c('0x24')]);_0x3c9c9f[_0x6c1c('0x22')]=qs[_0x6c1c('0x22')](_0x1da81d[_0x6c1c('0x41')][_0x6c1c('0x22')]);}_0x3c9c9f['order']=qs[_0x6c1c('0xc5')](_0x1da81d['query'][_0x6c1c('0xc5')]);_0x3c9c9f[_0x6c1c('0x40')]=qs[_0x6c1c('0x54')](_[_0x6c1c('0xc6')](_0x1da81d['query'],_0x5ad658['filters']));if(_0x1da81d[_0x6c1c('0x41')][_0x6c1c('0x30')]){_0x3c9c9f[_0x6c1c('0x40')]=_[_0x6c1c('0x57')](_0x3c9c9f[_0x6c1c('0x40')],{'$or':_[_0x6c1c('0x32')](_0x3c9c9f[_0x6c1c('0x43')],function(_0x2dc924){var _0x1a2a8d={};_0x1a2a8d[_0x2dc924]={'$like':'%'+_0x1da81d['query']['filter']+'%'};return _0x1a2a8d;})});}_0x3c9c9f[_0x6c1c('0x40')]={'$and':[_0x3c9c9f['where'],{'$or':[{'UserId':_0x1da81d['params']['id']},{'OwnerId':_0x1da81d[_0x6c1c('0x5d')]['id']}]}]};_0x3c9c9f=_[_0x6c1c('0x57')]({},_0x3c9c9f,_0x1da81d[_0x6c1c('0x58')]);var _0x5a47ae={'where':_0x3c9c9f[_0x6c1c('0x40')]};return db[_0x6c1c('0x159')][_0x6c1c('0x25')](_0x5a47ae)[_0x6c1c('0x12')](function(_0x20dbca){_0x23c164[_0x6c1c('0x25')]=_0x20dbca;if(_0x1da81d[_0x6c1c('0x41')][_0x6c1c('0x42')]){_0x3c9c9f['include']=[{'attributes':['id',_0x6c1c('0x169'),'lastName','phone'],'model':db[_0x6c1c('0xc2')],'as':_0x6c1c('0x16a')},{'attributes':['id',_0x6c1c('0x38'),_0x6c1c('0x16b')],'model':db['VoiceQueue'],'as':'Queue'}];}return db[_0x6c1c('0x159')][_0x6c1c('0x45')](_0x3c9c9f);})[_0x6c1c('0x12')](function(_0x133aa4){_0x23c164[_0x6c1c('0x46')]=_0x133aa4;return _0x23c164;})[_0x6c1c('0x12')](respondWithFilteredResult(_0x798f7e,_0x3c9c9f))[_0x6c1c('0x1d')](handleError(_0x798f7e,null));};exports[_0x6c1c('0x16c')]=function(_0x265dff,_0x1da382){if(!_['isNil'](_0x265dff[_0x6c1c('0x2d')]['id'])&&(_0x265dff[_0x6c1c('0x2d')][_0x6c1c('0x2a')]==_0x6c1c('0x2b')||_0x265dff['user']['role']==_0x6c1c('0x2d'))){return db[_0x6c1c('0x3b')][_0x6c1c('0x91')]({'where':{'id':_0x265dff['params']['id']},'raw':!![]})[_0x6c1c('0x12')](function(_0x3c5a79){return authService['retrieveApiKey'](_0x3c5a79);})[_0x6c1c('0x12')](function(_0x3610bb){if(_0x3610bb){return _0x1da382[_0x6c1c('0x1f')](0xc8)[_0x6c1c('0x21')]({'api_key':_0x3610bb[_0x6c1c('0x16d')]});}else{return _0x1da382[_0x6c1c('0x1f')](0xcc)[_0x6c1c('0x21')]({'message':_0x6c1c('0x16e')});}})[_0x6c1c('0x1d')](handleError(_0x1da382,0x193));}else{return _0x1da382[_0x6c1c('0x1f')](0x191)[_0x6c1c('0x21')]({'message':_0x6c1c('0x16f')});}};exports[_0x6c1c('0x170')]=function(_0x34edbc,_0x6fe878){if(!_['isNil'](_0x34edbc[_0x6c1c('0x2d')]['id'])&&(_0x34edbc[_0x6c1c('0x2d')][_0x6c1c('0x2a')]==_0x6c1c('0x2b')||_0x34edbc[_0x6c1c('0x2d')][_0x6c1c('0x2a')]==_0x6c1c('0x2d'))){return db[_0x6c1c('0x3b')][_0x6c1c('0x35')]({'where':{'id':_0x34edbc[_0x6c1c('0x5d')]['id']}})['then'](function(_0x149de1){return authService[_0x6c1c('0x171')](_0x149de1);})['then'](function(_0x262d32){return db[_0x6c1c('0x3b')][_0x6c1c('0x27')]({'apiKeyIat':_0x262d32[_0x6c1c('0x172')],'apiKeyNonce':_0x262d32['nonce']},{'where':{'id':_0x34edbc[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](function(){return _0x6fe878[_0x6c1c('0x1f')](0xc8)[_0x6c1c('0x21')]({'api_key':_0x262d32[_0x6c1c('0x16d')]});});})[_0x6c1c('0x1d')](handleError(_0x6fe878,0x193));}else{return _0x6fe878[_0x6c1c('0x1f')](0x191)['json']({'message':_0x6c1c('0x16f')});}};exports[_0x6c1c('0x173')]=function(_0x58876,_0x573c90){if(!_['isNil'](_0x58876[_0x6c1c('0x2d')]['id'])&&(_0x58876['user'][_0x6c1c('0x2a')]=='admin'||_0x58876[_0x6c1c('0x2d')][_0x6c1c('0x2a')]=='user')){return db['User']['find']({'where':{'id':_0x58876[_0x6c1c('0x5d')]['id']}})[_0x6c1c('0x12')](handleEntityNotFound(_0x573c90,null))[_0x6c1c('0x12')](function(_0x372cc3){if(_0x372cc3&&_0x372cc3['apiKeyNonce']&&_0x372cc3['apiKeyIat'])return _0x372cc3;else throw{'message':_0x6c1c('0x174')};})[_0x6c1c('0x12')](function(_0x5be3d9){return db[_0x6c1c('0x3b')][_0x6c1c('0x27')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x58876[_0x6c1c('0x5d')]['id']}});})[_0x6c1c('0x12')](respondWithStatusCode(_0x573c90,0xc8))[_0x6c1c('0x1d')](handleError(_0x573c90,0x193));}else{return _0x573c90['status'](0x191)[_0x6c1c('0x21')]({'message':_0x6c1c('0x16f')});}};exports[_0x6c1c('0x175')]=function(_0x20cce7,_0x820ecd){var _0x10bc91=_0x20cce7[_0x6c1c('0x2d')][_0x6c1c('0x29')]({'plain':!![]});if(!_0x10bc91){return _0x820ecd['status'](0x191)[_0x6c1c('0x39')]('Unable\x20to\x20retrieve\x20the\x20current\x20user');}else{return _0x820ecd['status'](0xc8)[_0x6c1c('0x21')](_0x10bc91);}};exports[_0x6c1c('0x176')]=function(_0x31bd6c,_0xc3f308){var _0xfc917={'offset':0x0},_0x3e8000={'count':0x0,'rows':[]};Promise[_0x6c1c('0x177')]()['then'](function(){if(!_0x31bd6c[_0x6c1c('0x41')]['filter']&&!_0x31bd6c[_0x6c1c('0x41')][_0x6c1c('0x178')]&&!_0x31bd6c[_0x6c1c('0x41')]['queues'])return[];return Promise[_0x6c1c('0x177')]()[_0x6c1c('0x12')](function(){var _0x57e6a7=[];if(!_[_0x6c1c('0x86')](_0x31bd6c['query'][_0x6c1c('0x178')])){_0x57e6a7[_0x6c1c('0x44')](db['Team'][_0x6c1c('0x45')]({'attributes':['id',_0x6c1c('0x38')],'where':{'id':_0x31bd6c[_0x6c1c('0x41')][_0x6c1c('0x178')]}}));}if(!_[_0x6c1c('0x86')](_0x31bd6c[_0x6c1c('0x41')][_0x6c1c('0x179')])){_0x57e6a7[_0x6c1c('0x44')](db[_0x6c1c('0x17a')][_0x6c1c('0x45')]({'attributes':['id',_0x6c1c('0x38')],'type':_0x6c1c('0x17b'),'where':{'id':_0x31bd6c['query'][_0x6c1c('0x179')]}}));}return Promise[_0x6c1c('0x4d')](_0x57e6a7);})['then'](function(_0x110b5b){var _0x54845e=_['flatten'](_0x110b5b)['map'](function(_0x36ba79){return _0x36ba79['getAgents']({'attributes':['id','name',_0x6c1c('0x62'),'online'],'raw':!![]});});return Promise['all'](_0x54845e);})[_0x6c1c('0x12')](function(_0x371b06){var _0x4e426f=_[_0x6c1c('0x118')](_0x371b06);if(!_0x31bd6c[_0x6c1c('0x41')][_0x6c1c('0x30')])return _0x4e426f;if(_[_0x6c1c('0x86')](_0x4e426f)){return db[_0x6c1c('0x3b')][_0x6c1c('0x45')]({'attributes':['id',_0x6c1c('0x38'),_0x6c1c('0x62'),_0x6c1c('0x99')],'where':{'role':_0x6c1c('0x2e'),'$or':[db[_0x6c1c('0x68')][_0x6c1c('0x40')](db[_0x6c1c('0x68')]['fn'](_0x6c1c('0x17c'),db['sequelize'][_0x6c1c('0x17d')](_0x6c1c('0x38'))),{'$like':'%'+_0x31bd6c['query']['filter'][_0x6c1c('0x9f')]()+'%'}),{'internal':{'$like':'%'+_0x31bd6c[_0x6c1c('0x41')][_0x6c1c('0x30')]+'%'}}]},'raw':!![]});}else{return _(_0x4e426f)[_0x6c1c('0x118')]()[_0x6c1c('0x30')](function(_0x41d675){return _0x41d675[_0x6c1c('0x38')]['toLowerCase']()['includes'](_0x31bd6c['query'][_0x6c1c('0x30')]['toLowerCase']())||_0x41d675[_0x6c1c('0x62')][_0x6c1c('0x17e')]()['includes'](_0x31bd6c[_0x6c1c('0x41')][_0x6c1c('0x30')]);})[_0x6c1c('0x33')]();}})[_0x6c1c('0x12')](function(_0x1fbf2a){var _0x2d42ca='name';var _0x47cd5c=_0x6c1c('0x17f');if(_0x31bd6c[_0x6c1c('0x41')][_0x6c1c('0xc5')]){var _0x47cd5c=_0x31bd6c['query'][_0x6c1c('0xc5')][0x0]==='-'?_0x6c1c('0x180'):'asc';var _0x2d42ca=_0x47cd5c===_0x6c1c('0x17f')?_0x31bd6c[_0x6c1c('0x41')]['sort']:_0x31bd6c[_0x6c1c('0x41')][_0x6c1c('0xc5')][_0x6c1c('0x181')](0x1);}return _(_0x1fbf2a)[_0x6c1c('0x182')]('id')['orderBy']([function(_0x1c9310){return _0x2d42ca===_0x6c1c('0x38')?_0x1c9310[_0x2d42ca][_0x6c1c('0x9f')]():_0x1c9310[_0x2d42ca];}],[_0x47cd5c])[_0x6c1c('0x32')](function(_0x25b3f1){return _[_0x6c1c('0xc6')](_0x25b3f1,['id',_0x6c1c('0x38'),_0x6c1c('0x62'),_0x6c1c('0x99')]);})['value']();})['then'](function(_0x289515){return client[_0x6c1c('0x11')](_0x6c1c('0x7f'),_0x31bd6c)['then'](function(_0x492d08){if(_0x492d08['error'])throw new Error(_0x6c1c('0x183'));var _0x575938=_0x492d08['result'];var _0x2350af=jayson[_0x6c1c('0xf')][_0x6c1c('0x10')]({'port':0x232c});return _0x2350af[_0x6c1c('0x11')](_0x6c1c('0x7f'),_0x31bd6c)[_0x6c1c('0x12')](function(_0x18c535){if(_0x18c535[_0x6c1c('0x18')])throw new Error(_0x6c1c('0x184'));var _0x222fda=_0x18c535[_0x6c1c('0x1c')];return _[_0x6c1c('0x57')]({},_0x222fda,_0x575938);});})['then'](function(_0x35595e){return _[_0x6c1c('0x32')](_0x289515,function(_0x3c00a7){var _0x2a49ac=_['find'](_0x35595e[_0x6c1c('0x46')],['id',_0x3c00a7['id']]);if(!_0x2a49ac||!_0x3c00a7[_0x6c1c('0x99')]){_0x3c00a7['status']=_0x6c1c('0x185');}else if(_0x2a49ac[_0x6c1c('0x9a')]){_0x3c00a7[_0x6c1c('0x1f')]=_0x6c1c('0xfc');}else{_0x3c00a7[_0x6c1c('0x1f')]=_[_0x6c1c('0x34')]([_0x6c1c('0x186'),_0x6c1c('0x187'),_0x6c1c('0x188'),_0x6c1c('0x189'),null,undefined],_0x2a49ac['voiceStatus'])?_0x6c1c('0x99'):_0x6c1c('0x18a');}return _0x3c00a7;});});});})[_0x6c1c('0x12')](function(_0x253ba4){if(!_0x31bd6c[_0x6c1c('0x41')][_0x6c1c('0xc7')]('nolimit')){_0xfc917[_0x6c1c('0x24')]=qs['limit'](_0x31bd6c['query']['limit']||0xa);_0xfc917[_0x6c1c('0x22')]=qs[_0x6c1c('0x22')](_0x31bd6c[_0x6c1c('0x41')]['offset']);}_0x3e8000[_0x6c1c('0x25')]=_0x253ba4['length'];_0x3e8000[_0x6c1c('0x46')]=_0xfc917[_0x6c1c('0x24')]?_0x253ba4['slice'](_0xfc917[_0x6c1c('0x22')],_0xfc917[_0x6c1c('0x22')]+_0xfc917[_0x6c1c('0x24')]):_0x253ba4;return _0x3e8000;})[_0x6c1c('0x12')](respondWithFilteredResult(_0xc3f308,_0xfc917))[_0x6c1c('0x1d')](handleError(_0xc3f308,null));};function get_open_tabs(_0x118672,_0x5b55c2){var _0xdcaa68=_0x118672[_0x6c1c('0x18b')](0x0)[_0x6c1c('0x18c')]()+_0x118672[_0x6c1c('0x18d')](0x1);var _0x1bfcf8={'type':db[_0x6c1c('0x8b')][_0x6c1c('0x18e')][_0x6c1c('0x18f')],'raw':!![]};return new BPromise(function(_0x40f21b,_0x5ea759){var _0x448415=squel[_0x6c1c('0x190')]()[_0x6c1c('0x191')]('ui.'+_0xdcaa68+_0x6c1c('0x192'),'id')[_0x6c1c('0x191')](_0x6c1c('0x193'))[_0x6c1c('0x6a')]('user_has_'+_0x118672+_0x6c1c('0x194'),'ui')[_0x6c1c('0x40')]('ui.UserId\x20=\x20?',_0x5b55c2['id']);return db[_0x6c1c('0x68')][_0x6c1c('0x41')](_0x448415[_0x6c1c('0x17e')](),_0x1bfcf8)[_0x6c1c('0x12')](function(_0x472b71){_0x5b55c2[_0xdcaa68+_0x6c1c('0x195')]=_0x472b71;_0x40f21b(_0x472b71);})['catch'](function(_0x427fd0){_0x5ea759(_0x427fd0);});});};
\ No newline at end of file
+var _0x5f2f=['Sms','Openchannel','removeAgent','getLists','getAgents','values','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','spread','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','concat','$and','$or','$gte','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$like','$notLike','$iLike','$contained','$any','firstName','lastName','CmContact','Contact','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','iat','nonce','removeApiKey','apiKeyIat','whoami','resolve','teams','queues','inbound','lower','col','desc','asc','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','client','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','ringing','voiceStatus','slice','ui.','ui.createdAt','_interactions','ui.UserId\x20=\x20?','toString','OpenTabs','moment','bluebird','util','path','lodash','squel','jayson/promise','ioredis','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','./user.socket','register','defaults','localhost','http','request','then','info','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','User,\x20%s,\x20%s','message','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','destroy','get','user','agent','Telephones','telephone','filter','ignore','map','value','includes','role','find','name','stack','index','User','rawAttributes','type','key','password','salt','getOptions','where','query','includeAll','attributes','openTabs','true','rows','length','push','chat','dataValues','sms','mail','openchannel','whatsapp','all','model','differenceBy','filters','intersection','fields','include','merge','body','params','describe','addContacts','ids','omit','internal','findById','securePassword','validatePasswordPattern','max','isNil','min_internal','sequelize','QueryTypes','SELECT','from','voicemail','mailbox','VoiceMail','fullname','permissions','102','103','113','110','104','107','108','109','100','115','Unauthorized','admin','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','settingsEnabled','create','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','checkUserLimits','each','isEmpty','compact','changePassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','oldPassword','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','findOne','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','validatePasswordHistory','updatePasswordsHistory','addQueues','channel','online','loginInPause','voicePause','interface','isValidChannel','add','capitalize','toLowerCase','Queues','penalty','emit','Queue:save','voice','VoiceQueue','findAll','format','SIP/%s','UserVoiceQueueRt','upsert','removeQueues','remove','isArray','QueueId','Queue:remove','addAvatar','userpic','filename','join','root','server/files/images/logos/default_profile.png','download','server/files/images/','getOpenTabs','fax','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','WhatsappOpenTabs','WHATSAPP','getContacts','keys','order','sort','pick','options','hasOwnProperty','CmList','List','Tag','Tags','color','tag','nolimit','getQueues','Unknown\x20channel','Queue','Unknown\x20role','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','ScreenRecording','getChatInteractions','getOpenchannelInteractions','OpenchannelInteraction','MailInteraction','getSmsInteractions','FaxInteraction','getWhatsappInteractions','login','phone','LOCAL/%s@from-sip/n','intrf','user:forcelogout','headers','x-forwarded-for','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','getChannels','YYYY-MM-DD\x20HH:mm:ss','forEach','device','PAUSE','LOGININPAUSE','isMiddleware','logout','pause','QueuePause','updateAttributes','DEFAULT\x20PAUSE','unpause','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsapppause','pauseType','lastPauseAt','manual','%s%s','getTeams','Team','addTeams','setDataValue','getChatQueues','Chat','getMailQueues','Mail','getSmsQueues','getWhatsappQueues','Whatsapp','getFaxQueues','Fax','getOpenchannelQueues','flatten','transaction','addAgent','getDataValue','Voice','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','removeTeams'];(function(_0xb900c7,_0x305326){var _0x3d40f3=function(_0xae883f){while(--_0xae883f){_0xb900c7['push'](_0xb900c7['shift']());}};_0x3d40f3(++_0x305326);}(_0x5f2f,0x73));var _0xf5f2=function(_0x5077df,_0x22c829){_0x5077df=_0x5077df-0x0;var _0x10d6d9=_0x5f2f[_0x5077df];return _0x10d6d9;};'use strict';var moment=require(_0xf5f2('0x0'));var BPromise=require(_0xf5f2('0x1'));var util=require(_0xf5f2('0x2'));var path=require(_0xf5f2('0x3'));var fs=require('fs');var _=require(_0xf5f2('0x4'));var squel=require(_0xf5f2('0x5'));var jayson=require(_0xf5f2('0x6'));var Redis=require(_0xf5f2('0x7'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var logger=require(_0xf5f2('0x8'))(_0xf5f2('0x9'));var utils=require(_0xf5f2('0xa'));var config=require(_0xf5f2('0xb'));var licenseUtil=require(_0xf5f2('0xc'));var db=require(_0xf5f2('0xd'))['db'];var socket=require('socket.io-emitter')(new Redis(config[_0xf5f2('0xe')]));require(_0xf5f2('0xf'))[_0xf5f2('0x10')](socket);config['redis']=_[_0xf5f2('0x11')](config[_0xf5f2('0xe')],{'host':_0xf5f2('0x12'),'port':0x18eb});var client=jayson['client'][_0xf5f2('0x13')]({'port':0x232a});var values;function respondWithRpcPromise(_0x4ebbbe,_0x53fb33,_0xa7e1a6,_0x151aba){return new BPromise(function(_0x4b78cd,_0x336f6b){var _0x14b51f=_0x151aba||client;return _0x14b51f[_0xf5f2('0x14')](_0x4ebbbe,_0xa7e1a6)[_0xf5f2('0x15')](function(_0x59bb6c){logger[_0xf5f2('0x16')]('User,\x20%s,\x20%s',_0x53fb33,_0xf5f2('0x17'));logger[_0xf5f2('0x18')](_0xf5f2('0x19'),_0x53fb33,_0xf5f2('0x17'),JSON[_0xf5f2('0x1a')](_0x59bb6c));if(_0x59bb6c['error']){if(_0x59bb6c[_0xf5f2('0x1b')][_0xf5f2('0x1c')]===0x1f4){logger[_0xf5f2('0x1b')](_0xf5f2('0x1d'),_0x53fb33,_0x59bb6c[_0xf5f2('0x1b')][_0xf5f2('0x1e')]);return _0x336f6b(_0x59bb6c[_0xf5f2('0x1b')][_0xf5f2('0x1e')]);}logger[_0xf5f2('0x1b')](_0xf5f2('0x1d'),_0x53fb33,_0x59bb6c[_0xf5f2('0x1b')][_0xf5f2('0x1e')]);return _0x4b78cd(_0x59bb6c[_0xf5f2('0x1b')][_0xf5f2('0x1e')]);}else{logger[_0xf5f2('0x16')](_0xf5f2('0x1d'),_0x53fb33,_0xf5f2('0x17'));_0x4b78cd(_0x59bb6c['result'][_0xf5f2('0x1e')]);}})[_0xf5f2('0x1f')](function(_0x49dac2){logger['error'](_0xf5f2('0x1d'),_0x53fb33,_0x49dac2);_0x336f6b(_0x49dac2);});});}function respondWithStatusCode(_0x388e6c,_0x4ae323){_0x4ae323=_0x4ae323||0xcc;return function(_0x45b74f){if(_0x45b74f){return _0x388e6c[_0xf5f2('0x20')](_0x4ae323);}return _0x388e6c[_0xf5f2('0x21')](_0x4ae323)[_0xf5f2('0x22')]();};}function respondWithResult(_0x36f1cb,_0x4c691a){_0x4c691a=_0x4c691a||0xc8;return function(_0x21cd91){if(_0x21cd91){return _0x36f1cb[_0xf5f2('0x21')](_0x4c691a)[_0xf5f2('0x23')](_0x21cd91);}};}function respondWithFilteredResult(_0x2833fe,_0x287ad5){return function(_0x5bdf4a){if(_0x5bdf4a){var _0x529f07=typeof _0x287ad5[_0xf5f2('0x24')]===_0xf5f2('0x25')&&typeof _0x287ad5[_0xf5f2('0x26')]===_0xf5f2('0x25');var _0xf6c58d=_0x5bdf4a[_0xf5f2('0x27')];var _0x13a3be=_0x529f07?0x0:_0x287ad5[_0xf5f2('0x24')];var _0x294414=_0x529f07?_0x5bdf4a['count']:_0x287ad5[_0xf5f2('0x24')]+_0x287ad5[_0xf5f2('0x26')];var _0x375ca8;if(_0x294414>=_0xf6c58d){_0x294414=_0xf6c58d;_0x375ca8=0xc8;}else{_0x375ca8=0xce;}_0x2833fe[_0xf5f2('0x21')](_0x375ca8);return _0x2833fe[_0xf5f2('0x28')](_0xf5f2('0x29'),_0x13a3be+'-'+_0x294414+'/'+_0xf6c58d)['json'](_0x5bdf4a);}return null;};}function saveUpdates(_0x53cb96){return function(_0x22c826){if(_0x22c826){return _0x22c826[_0xf5f2('0x2a')](_0x53cb96)[_0xf5f2('0x15')](function(_0x5027ab){return _0x5027ab;});}return null;};}function removeEntity(_0x5a2c7e){return function(_0x29571b){if(_0x29571b){return _0x29571b[_0xf5f2('0x2b')]()[_0xf5f2('0x15')](function(){var _0x153924=_0x29571b[_0xf5f2('0x2c')]({'plain':!![]});if(_0x153924['role']==='admin')return;var _0x2f4778=[{'name':'Users','value':_0xf5f2('0x2d'),'ignore':!![]},{'name':'Agents','value':_0xf5f2('0x2e'),'ignore':![]},{'name':_0xf5f2('0x2f'),'value':_0xf5f2('0x30'),'ignore':![]}];var _0x428770=_(_0x2f4778)[_0xf5f2('0x31')](_0xf5f2('0x32'))[_0xf5f2('0x33')](_0xf5f2('0x34'))['value']();if(_[_0xf5f2('0x35')](_0x428770,_0x153924[_0xf5f2('0x36')])){return;}var _0x4590ec=_[_0xf5f2('0x37')](_0x2f4778,[_0xf5f2('0x34'),_0x153924[_0xf5f2('0x36')]])[_0xf5f2('0x38')];return db['UserProfileResource'][_0xf5f2('0x2b')]({'where':{'type':_0x4590ec,'resourceId':_0x153924['id']}})[_0xf5f2('0x15')](function(){return _0x29571b;});})['then'](function(){_0x5a2c7e[_0xf5f2('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x18ae07){return function(_0x3930fb){if(!_0x3930fb){_0x18ae07[_0xf5f2('0x20')](0x194);}return _0x3930fb;};}function handleError(_0x2e3cca,_0x59a6dd){_0x59a6dd=_0x59a6dd||0x1f4;return function(_0x5a98d7){logger[_0xf5f2('0x1b')](_0x5a98d7[_0xf5f2('0x39')]);if(_0x5a98d7[_0xf5f2('0x38')]){delete _0x5a98d7['name'];}_0x2e3cca[_0xf5f2('0x21')](_0x59a6dd)['send'](_0x5a98d7);};}exports[_0xf5f2('0x3a')]=function(_0x566c47,_0x46f464){var _0x456764={},_0x5337a6={'count':0x0,'rows':[]};var _0x29694f=_(db[_0xf5f2('0x3b')][_0xf5f2('0x3c')])[_0xf5f2('0x33')](function(_0x542cd6){return{'name':_0x542cd6['fieldName'],'type':_0x542cd6[_0xf5f2('0x3d')][_0xf5f2('0x3e')]};})[_0xf5f2('0x31')](function(_0x2d4400){return!_[_0xf5f2('0x35')]([_0xf5f2('0x3f'),_0xf5f2('0x40')],_0x2d4400['name']);})[_0xf5f2('0x34')]();_0x456764=qs[_0xf5f2('0x41')](_0x29694f,_0x566c47);var _0x536501={'where':_0x456764[_0xf5f2('0x42')]};return db[_0xf5f2('0x3b')][_0xf5f2('0x27')](_0x536501)[_0xf5f2('0x15')](function(_0xd10701){_0x5337a6[_0xf5f2('0x27')]=_0xd10701;if(_0x566c47[_0xf5f2('0x43')][_0xf5f2('0x44')]){_0x456764['include']=[{'all':!![]}];}if(!_[_0xf5f2('0x35')](_0x456764[_0xf5f2('0x45')],'id')){_0x456764[_0xf5f2('0x45')]['push']('id');}return db['User']['findAll'](_0x456764);})[_0xf5f2('0x15')](function(_0x2ad13c){_0x5337a6['rows']=_0x2ad13c;if(_0x566c47[_0xf5f2('0x43')][_0xf5f2('0x46')]===_0xf5f2('0x47')){var _0x31f86c=[];for(var _0x354c34=0x0;_0x354c34<_0x5337a6[_0xf5f2('0x48')][_0xf5f2('0x49')];_0x354c34++){_0x31f86c[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x4b'),_0x5337a6[_0xf5f2('0x48')][_0x354c34][_0xf5f2('0x4c')]));_0x31f86c[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x4d'),_0x5337a6[_0xf5f2('0x48')][_0x354c34]['dataValues']));_0x31f86c[_0xf5f2('0x4a')](get_open_tabs('fax',_0x5337a6[_0xf5f2('0x48')][_0x354c34][_0xf5f2('0x4c')]));_0x31f86c[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x4e'),_0x5337a6[_0xf5f2('0x48')][_0x354c34][_0xf5f2('0x4c')]));_0x31f86c['push'](get_open_tabs(_0xf5f2('0x4f'),_0x5337a6[_0xf5f2('0x48')][_0x354c34][_0xf5f2('0x4c')]));_0x31f86c[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x50'),_0x5337a6[_0xf5f2('0x48')][_0x354c34][_0xf5f2('0x4c')]));}return BPromise[_0xf5f2('0x51')](_0x31f86c)['then'](function(_0x35dece){return _0x5337a6;});}else{return _0x5337a6;}})[_0xf5f2('0x15')](respondWithFilteredResult(_0x46f464,_0x456764))[_0xf5f2('0x1f')](handleError(_0x46f464,null));};exports['show']=function(_0x1177ba,_0xc91b64){var _0x3179a9={'raw':![],'where':{'id':_0x1177ba['params']['id']}},_0x5e761c={};_0x5e761c[_0xf5f2('0x52')]=_[_0xf5f2('0x53')](_['keys'](db[_0xf5f2('0x3b')]['rawAttributes']),[_0xf5f2('0x3f'),'salt']);_0x5e761c[_0xf5f2('0x43')]=_['keys'](_0x1177ba[_0xf5f2('0x43')]);_0x5e761c[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x5e761c[_0xf5f2('0x52')],_0x5e761c['query']);_0x3179a9[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x5e761c['model'],qs['fields'](_0x1177ba[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x3179a9['attributes']=_0x3179a9[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x3179a9[_0xf5f2('0x45')]:_0x5e761c[_0xf5f2('0x52')];if(_0x1177ba['query']['includeAll']){_0x3179a9[_0xf5f2('0x57')]=[{'all':!![]}];}_0x3179a9=_[_0xf5f2('0x58')]({},_0x3179a9,_0x1177ba['options']);if(!_[_0xf5f2('0x35')](_0x3179a9[_0xf5f2('0x45')],'id')){_0x3179a9[_0xf5f2('0x45')][_0xf5f2('0x4a')]('id');}return db[_0xf5f2('0x3b')][_0xf5f2('0x37')](_0x3179a9)[_0xf5f2('0x15')](handleEntityNotFound(_0xc91b64,null))['then'](function(_0x59e8ef){var _0x330730=[];values=_0x59e8ef;if(_0x1177ba[_0xf5f2('0x43')][_0xf5f2('0x46')]===_0xf5f2('0x47')){_0x330730[_0xf5f2('0x4a')](get_open_tabs('chat',_0x59e8ef[_0xf5f2('0x4c')]));_0x330730[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x4d'),_0x59e8ef['dataValues']));_0x330730[_0xf5f2('0x4a')](get_open_tabs('openchannel',_0x59e8ef[_0xf5f2('0x4c')]));_0x330730[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x50'),_0x59e8ef[_0xf5f2('0x4c')]));_0x330730['push'](get_open_tabs('fax',_0x59e8ef[_0xf5f2('0x4c')]));_0x330730['push'](get_open_tabs(_0xf5f2('0x4e'),_0x59e8ef[_0xf5f2('0x4c')]));return BPromise['all'](_0x330730);}else{return values;}})[_0xf5f2('0x15')](function(_0xa4c0be){return values;})[_0xf5f2('0x15')](respondWithResult(_0xc91b64,null))['catch'](handleError(_0xc91b64,null));};exports[_0xf5f2('0x2a')]=function(_0xcf7a50,_0x42cc27){if(_0xcf7a50[_0xf5f2('0x59')]['id']){delete _0xcf7a50['body']['id'];}delete _0xcf7a50[_0xf5f2('0x59')]['role'];return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0xcf7a50[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x42cc27,null))[_0xf5f2('0x15')](saveUpdates(_0xcf7a50['body'],null))[_0xf5f2('0x15')](respondWithResult(_0x42cc27,null))[_0xf5f2('0x1f')](handleError(_0x42cc27,null));};exports[_0xf5f2('0x5b')]=function(_0x212639,_0x2c5733){return db['User'][_0xf5f2('0x5b')]()['then'](respondWithResult(_0x2c5733,null))['catch'](handleError(_0x2c5733,null));};exports[_0xf5f2('0x5c')]=function(_0x4802c5,_0x10f2b8){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x4802c5[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x10f2b8,null))[_0xf5f2('0x15')](function(_0x3a53f2){if(_0x3a53f2){return _0x3a53f2[_0xf5f2('0x5c')](_0x4802c5[_0xf5f2('0x59')][_0xf5f2('0x5d')],_[_0xf5f2('0x5e')](_0x4802c5[_0xf5f2('0x59')],['ids','id'])||{});}})[_0xf5f2('0x15')](respondWithResult(_0x10f2b8,null))[_0xf5f2('0x1f')](handleError(_0x10f2b8,null));};function validateUser(_0xb39a6e){return new BPromise(function(_0x45c7c1,_0x5a5b2b){if(_0xb39a6e[_0xf5f2('0x5f')])return _0x45c7c1(_0xb39a6e);return db['Setting'][_0xf5f2('0x60')](0x1)[_0xf5f2('0x15')](function(_0x5588cf){if(_0x5588cf[_0xf5f2('0x61')])authService[_0xf5f2('0x62')](_0xb39a6e[_0xf5f2('0x3f')]);db[_0xf5f2('0x3b')][_0xf5f2('0x63')]('internal')[_0xf5f2('0x15')](function(_0x21c107){if(_[_0xf5f2('0x64')](_0x21c107)){_0xb39a6e[_0xf5f2('0x5f')]=_0x5588cf[_0xf5f2('0x65')]||0x1;return;}if(_[_0xf5f2('0x64')](_0x5588cf['min_internal'])||_0x5588cf[_0xf5f2('0x65')]===_0x21c107){_0xb39a6e[_0xf5f2('0x5f')]=_0x21c107+0x1;return;}if(_0x5588cf['min_internal']>_0x21c107){_0xb39a6e[_0xf5f2('0x5f')]=_0x5588cf[_0xf5f2('0x65')];return;}return db[_0xf5f2('0x66')]['query']('select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)',{'type':db['sequelize'][_0xf5f2('0x67')][_0xf5f2('0x68')]})[_0xf5f2('0x15')](function(_0x450691){if(_0x450691&&_0x450691[_0xf5f2('0x49')]){for(var _0x4d878e=0x0,_0x278b76=_0x450691[_0xf5f2('0x49')];_0x4d878e<_0x278b76&&_[_0xf5f2('0x64')](_0xb39a6e[_0xf5f2('0x5f')]);_0x4d878e++){if(_0x5588cf[_0xf5f2('0x65')]<=_0x450691[_0x4d878e][_0xf5f2('0x69')]){_0xb39a6e[_0xf5f2('0x5f')]=_0x450691[_0x4d878e][_0xf5f2('0x69')];}else if(_0x5588cf[_0xf5f2('0x65')]>_0x450691[_0x4d878e][_0xf5f2('0x69')]&&_0x5588cf[_0xf5f2('0x65')]<=_0x450691[_0x4d878e]['to']){_0xb39a6e['internal']=_0x5588cf['min_internal'];}}}if(_['isNil'](_0xb39a6e[_0xf5f2('0x5f')])){_0xb39a6e[_0xf5f2('0x5f')]=_0x21c107+0x1;}return _0x45c7c1(_0xb39a6e);});});})[_0xf5f2('0x1f')](function(_0x878e8b){_0x5a5b2b(_0x878e8b);});});}function updateUser(_0x1bb752){return new BPromise(function(_0x5c6959,_0x9d943f){try{if(_0x1bb752[_0xf5f2('0x6a')]){_0x1bb752[_0xf5f2('0x6b')]=_0x1bb752[_0xf5f2('0x5f')];_0x1bb752[_0xf5f2('0x6c')]={'mailbox':_0x1bb752['internal'],'password':_0x1bb752[_0xf5f2('0x3f')],'fullname':_0x1bb752[_0xf5f2('0x6d')],'email':_0x1bb752['email']};}if(_0x1bb752[_0xf5f2('0x36')]===_0xf5f2('0x2e')){if(!_0x1bb752[_0xf5f2('0x6e')])_0x1bb752[_0xf5f2('0x6e')]=['101',_0xf5f2('0x6f'),_0xf5f2('0x70'),_0xf5f2('0x71'),_0xf5f2('0x72'),_0xf5f2('0x73'),'105','106',_0xf5f2('0x74'),_0xf5f2('0x75'),_0xf5f2('0x76'),_0xf5f2('0x77'),'111','114',_0xf5f2('0x78')];}_0x5c6959(_0x1bb752);}catch(_0x4f2fcc){_0x9d943f(_0x4f2fcc);}});}exports['create']=function(_0x4c899a,_0x57cb18){if(_0x4c899a[_0xf5f2('0x2d')][_0xf5f2('0x36')]===_0xf5f2('0x2e'))throw new Error(_0xf5f2('0x79'));if(_0x4c899a[_0xf5f2('0x59')][_0xf5f2('0x36')]===_0xf5f2('0x2d')&&_0x4c899a[_0xf5f2('0x2d')][_0xf5f2('0x36')]!==_0xf5f2('0x7a')){throw new Error(_0xf5f2('0x7b'));}if(_0x4c899a[_0xf5f2('0x59')][_0xf5f2('0x36')]===_0xf5f2('0x7a')&&_0x4c899a[_0xf5f2('0x2d')][_0xf5f2('0x36')]!==_0xf5f2('0x7a')){throw new Error(_0xf5f2('0x7c'));}return licenseUtil['checkUserLimits']([_0x4c899a[_0xf5f2('0x59')]])[_0xf5f2('0x15')](function(){return validateUser(_0x4c899a[_0xf5f2('0x59')]);})[_0xf5f2('0x15')](function(_0x18c353){return updateUser(_0x18c353)[_0xf5f2('0x15')](function(_0x16491c){if(_0x16491c[_0xf5f2('0x36')]==='admin'){_0x16491c[_0xf5f2('0x7d')]=_0x4c899a['user']['settingsEnabled'];delete _0x16491c['userProfileId'];}return _0x16491c;});})['then'](function(_0x50befc){return db['User'][_0xf5f2('0x7e')](_0x50befc,{'include':[{'model':db[_0xf5f2('0x6c')],'as':_0xf5f2('0x6c')}]});})[_0xf5f2('0x15')](function(_0x145d4d){if(_0x4c899a[_0xf5f2('0x59')]['role']==='user')return _0x145d4d;if(_0x4c899a[_0xf5f2('0x2d')]['role']!==_0xf5f2('0x2d'))return _0x145d4d;return db[_0xf5f2('0x7f')]['find']({'where':{'name':_0x145d4d['role']===_0xf5f2('0x2e')?_0xf5f2('0x80'):'Telephones','userProfileId':_0x4c899a[_0xf5f2('0x2d')][_0xf5f2('0x81')]},'raw':!![]})['then'](function(_0x1774ab){if(!_0x1774ab||_0x1774ab[_0xf5f2('0x82')]!=0x0)return _0x145d4d;return db[_0xf5f2('0x83')]['create']({'name':_0x145d4d[_0xf5f2('0x38')],'resourceId':_0x145d4d['id'],'type':_0x1774ab[_0xf5f2('0x38')],'sectionId':_0x1774ab['id']},{})[_0xf5f2('0x15')](function(){return _0x145d4d;});})[_0xf5f2('0x1f')](function(_0x3e188e){logger[_0xf5f2('0x1b')](_0xf5f2('0x84'),_0x3e188e);throw _0x3e188e;});})[_0xf5f2('0x15')](respondWithResult(_0x57cb18,0xc9))[_0xf5f2('0x1f')](handleError(_0x57cb18,null));};exports[_0xf5f2('0x85')]=function(_0x191af3,_0x2601aa){var _0x6f9240=_0x191af3[_0xf5f2('0x59')];var _0xe900ea=[];if(_0x191af3[_0xf5f2('0x2d')][_0xf5f2('0x36')]===_0xf5f2('0x2e'))throw new Error(_0xf5f2('0x79'));if(_[_0xf5f2('0x86')](_0x6f9240,[_0xf5f2('0x36'),'user'])&&_0x191af3[_0xf5f2('0x2d')][_0xf5f2('0x36')]!=='admin'){throw new Error(_0xf5f2('0x7b'));}if(_[_0xf5f2('0x86')](_0x6f9240,['role',_0xf5f2('0x7a')])&&_0x191af3[_0xf5f2('0x2d')][_0xf5f2('0x36')]!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil[_0xf5f2('0x87')](_0x6f9240)[_0xf5f2('0x15')](function(){return validateUser(_0x6f9240[0x0]);})[_0xf5f2('0x15')](function(){for(var _0x5ba275=0x1;_0x5ba275<_0x6f9240['length'];_0x5ba275++){var _0x2572c0=_0x6f9240[_0x5ba275-0x1][_0xf5f2('0x5f')];if(!_0x6f9240[_0x5ba275][_0xf5f2('0x5f')])_0x6f9240[_0x5ba275]['internal']=_0x2572c0+0x1;_0xe900ea['push'](validateUser(_0x6f9240[_0x5ba275]));}return BPromise['all'](_0xe900ea);})['then'](function(){_0xe900ea=[];for(var _0x560b39=0x0;_0x560b39<_0x6f9240[_0xf5f2('0x49')];_0x560b39++){_0xe900ea['push'](updateUser(_0x6f9240[_0x560b39]));}return BPromise[_0xf5f2('0x51')](_0xe900ea);})[_0xf5f2('0x15')](function(){return BPromise[_0xf5f2('0x88')](_0x6f9240,function(_0x43a167){return db[_0xf5f2('0x3b')][_0xf5f2('0x7e')](_0x43a167,{'include':[{'model':db[_0xf5f2('0x6c')],'as':_0xf5f2('0x6c')}]})[_0xf5f2('0x15')](function(_0x27ca4a){_0x43a167['id']=_0x27ca4a['id'];return _0x43a167;});});})[_0xf5f2('0x15')](function(_0x36c3c8){if(_0x191af3[_0xf5f2('0x59')]['role']===_0xf5f2('0x2d'))return _0x36c3c8;if(_0x191af3[_0xf5f2('0x2d')]['role']!==_0xf5f2('0x2d'))return _0x36c3c8;var _0x3395d3=_['some'](_0x36c3c8,function(_0x433ba0){return _0x433ba0[_0xf5f2('0x36')]===_0xf5f2('0x2e')||_0x433ba0['role']===_0xf5f2('0x30');});if(!_0x3395d3)return _0x36c3c8;return db[_0xf5f2('0x7f')]['findAll']({'where':{'name':{'$or':[_0xf5f2('0x80'),_0xf5f2('0x2f')]},'userProfileId':_0x191af3[_0xf5f2('0x2d')]['userProfileId']},'raw':!![]})[_0xf5f2('0x15')](function(_0x5573c4){if(_[_0xf5f2('0x89')](_0x5573c4)||!_['some'](_0x5573c4,[_0xf5f2('0x82'),0x0]))return _0x36c3c8;_0xe900ea=[];var _0x3cbc58=_(_0x5573c4)[_0xf5f2('0x33')](function(_0x42c915){if(_0x42c915['autoAssociation']===0x1)return;return _0x42c915[_0xf5f2('0x38')]==='Agents'?'agent':'telephone';})[_0xf5f2('0x8a')]()[_0xf5f2('0x34')]();for(var _0x5ece9e=0x0;_0x5ece9e<_0x36c3c8[_0xf5f2('0x49')];_0x5ece9e++){if(!_[_0xf5f2('0x35')](_0x3cbc58,_0x36c3c8[_0x5ece9e][_0xf5f2('0x36')]))return;var _0x3962b2=_0x36c3c8[_0x5ece9e][_0xf5f2('0x36')]===_0xf5f2('0x2e')?'Agents':_0xf5f2('0x2f');_0xe900ea[_0xf5f2('0x4a')](db['UserProfileResource'][_0xf5f2('0x7e')]({'name':_0x36c3c8[_0x5ece9e][_0xf5f2('0x38')],'resourceId':_0x36c3c8[_0x5ece9e]['id'],'type':_0x3962b2,'sectionId':_['find'](_0x5573c4,[_0xf5f2('0x38'),_0x3962b2])['id']},{}));}return BPromise[_0xf5f2('0x51')](_0xe900ea);});})[_0xf5f2('0x15')](respondWithResult(_0x2601aa,0xc9))[_0xf5f2('0x1f')](handleError(_0x2601aa,null));};exports[_0xf5f2('0x8b')]=function(_0x28dd0c,_0x4df05c){if(_0x28dd0c[_0xf5f2('0x59')]['id']){delete _0x28dd0c[_0xf5f2('0x59')]['id'];}return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x28dd0c[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](function(_0x162c13){if(!_0x162c13)return null;if(_0x162c13['id']===_0x28dd0c[_0xf5f2('0x2d')]['id']){if(!_0x28dd0c[_0xf5f2('0x59')]['oldPassword']||!_0x28dd0c[_0xf5f2('0x59')][_0xf5f2('0x8c')]){throw new db[(_0xf5f2('0x8d'))][(_0xf5f2('0x8e'))](_0xf5f2('0x8f'));}if(!_0x162c13[_0xf5f2('0x90')](_0x28dd0c[_0xf5f2('0x59')][_0xf5f2('0x91')])){throw new db[(_0xf5f2('0x8d'))][(_0xf5f2('0x8e'))]('Wrong\x20credentials');}if(_0x28dd0c['body'][_0xf5f2('0x91')]===_0x28dd0c[_0xf5f2('0x59')][_0xf5f2('0x8c')]){throw new db[(_0xf5f2('0x8d'))]['ValidationError'](_0xf5f2('0x92'));}}else if(_0x28dd0c[_0xf5f2('0x2d')][_0xf5f2('0x36')]===_0xf5f2('0x7a')){if(!_0x28dd0c[_0xf5f2('0x59')]['newPassword']){throw new db[(_0xf5f2('0x8d'))][(_0xf5f2('0x8e'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0x28dd0c[_0xf5f2('0x2d')][_0xf5f2('0x36')]===_0xf5f2('0x2d')){if(!_0x28dd0c[_0xf5f2('0x59')]['newPassword']){throw new db[(_0xf5f2('0x8d'))][(_0xf5f2('0x8e'))](_0xf5f2('0x93'));}if(_0x162c13['role']!=='agent'){throw new db[(_0xf5f2('0x8d'))][(_0xf5f2('0x8e'))](_0xf5f2('0x79'));}}else{throw new db[(_0xf5f2('0x8d'))][(_0xf5f2('0x8e'))](_0xf5f2('0x79'));}return _0x162c13;})['then'](handleEntityNotFound(_0x4df05c,null))[_0xf5f2('0x15')](function(_0x51e84c){return db[_0xf5f2('0x94')][_0xf5f2('0x95')]({'attributes':['id',_0xf5f2('0x61'),_0xf5f2('0x96'),_0xf5f2('0x97')]})[_0xf5f2('0x15')](function(_0x4a586c){if(_0x4a586c[_0xf5f2('0x61')])authService[_0xf5f2('0x62')](_0x28dd0c[_0xf5f2('0x59')][_0xf5f2('0x8c')]);if(!_0x4a586c[_0xf5f2('0x96')]||!_0x51e84c[_0xf5f2('0x98')])return _0x51e84c;authService[_0xf5f2('0x99')](_0x28dd0c['body'][_0xf5f2('0x8c')],_0x51e84c['previousPasswords'],_0x4a586c['passwordHistoryLimit']);return _0x51e84c;})['then'](saveUpdates({'password':_0x28dd0c[_0xf5f2('0x59')][_0xf5f2('0x8c')],'passwordResetAt':_0x28dd0c['user']['id']==_0x28dd0c[_0xf5f2('0x5a')]['id']?moment():null,'previousPasswords':authService[_0xf5f2('0x9a')](_0x28dd0c[_0xf5f2('0x59')][_0xf5f2('0x8c')],_0x51e84c['previousPasswords'])},null));})[_0xf5f2('0x15')](respondWithResult(_0x4df05c,null))[_0xf5f2('0x1f')](handleError(_0x4df05c,null));};exports[_0xf5f2('0x9b')]=function(_0x5d3ca7,_0x29f7bd){var _0x1efd91=_0x5d3ca7['body'][_0xf5f2('0x9c')];return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x5d3ca7[_0xf5f2('0x5a')]['id']},'attributes':['id',_0xf5f2('0x38'),_0xf5f2('0x36'),_0xf5f2('0x9d'),_0xf5f2('0x9e'),_0xf5f2('0x9f'),_0xf5f2('0xa0')]})[_0xf5f2('0x15')](handleEntityNotFound(_0x29f7bd,null))['then'](function(_0x299c53){if(_0x299c53){if(!utils[_0xf5f2('0xa1')](_0x1efd91)){throw new db['Sequelize'][(_0xf5f2('0x8e'))]('Unknown\x20channel');}return _0x299c53[_0xf5f2('0xa2')+_[_0xf5f2('0xa3')](_0x1efd91[_0xf5f2('0xa4')]())+_0xf5f2('0xa5')](_0x5d3ca7['body'][_0xf5f2('0x5d')],{'penalty':_0x5d3ca7['body'][_0xf5f2('0xa6')]||0x0})['spread'](function(_0x3310cb){for(var _0xde71c=0x0;_0xde71c<_0x5d3ca7['body'][_0xf5f2('0x5d')][_0xf5f2('0x49')];_0xde71c+=0x1){var _0x16619b={'UserId':Number(_0x5d3ca7[_0xf5f2('0x5a')]['id'])};_0x16619b[_[_0xf5f2('0xa3')](_0x1efd91[_0xf5f2('0xa4')]())+'QueueId']=Number(_0x5d3ca7['body'][_0xf5f2('0x5d')][_0xde71c]);socket[_0xf5f2('0xa7')]('user'+_[_0xf5f2('0xa3')](_0x1efd91[_0xf5f2('0xa4')]())+_0xf5f2('0xa8'),_0x16619b);}return _0x3310cb;})[_0xf5f2('0x15')](function(){if(_0x1efd91===_0xf5f2('0xa9')){return db[_0xf5f2('0xaa')][_0xf5f2('0xab')]({'where':{'id':_0x5d3ca7['body'][_0xf5f2('0x5d')]||[]},'raw':!![],'attributes':['id','name']});}})[_0xf5f2('0x15')](function(_0x5ec0f3){var _0x3ff273=_0x299c53['get']({'plain':!![]});var _0xc51962=[];if(_0x1efd91==='voice'&&_0x3ff273['role']===_0xf5f2('0x2e')&&_0x3ff273[_0xf5f2('0x9d')]){for(var _0x57708f=0x0;_0x57708f<_0x5ec0f3[_0xf5f2('0x49')];_0x57708f+=0x1){_0xc51962[_0xf5f2('0x4a')]({'membername':_0x3ff273[_0xf5f2('0x38')],'UserId':_0x3ff273['id'],'queue_name':_0x5ec0f3[_0x57708f][_0xf5f2('0x38')],'VoiceQueueId':_0x5ec0f3[_0x57708f]['id'],'interface':_[_0xf5f2('0x64')](_0x3ff273[_0xf5f2('0xa0')])?util[_0xf5f2('0xac')](_0xf5f2('0xad'),_0x3ff273['name']):_0x3ff273['interface'],'paused':_0x3ff273[_0xf5f2('0x9f')]||![],'penalty':_0x5d3ca7['body'][_0xf5f2('0xa6')]||0x0});}return BPromise[_0xf5f2('0x88')](_0xc51962,function(_0x3a0e5c){return db[_0xf5f2('0xae')][_0xf5f2('0xaf')](_0x3a0e5c);});}return _0x299c53;});}})[_0xf5f2('0x15')](respondWithStatusCode(_0x29f7bd,null))[_0xf5f2('0x1f')](handleError(_0x29f7bd,null));};exports[_0xf5f2('0xb0')]=function(_0x28f65b,_0x16cbd3){var _0x275fb7;return db[_0xf5f2('0x3b')]['find']({'where':{'id':_0x28f65b[_0xf5f2('0x5a')]['id']},'attributes':['id','name',_0xf5f2('0x36')]})[_0xf5f2('0x15')](handleEntityNotFound(_0x16cbd3,null))[_0xf5f2('0x15')](function(_0x36afea){if(_0x36afea){_0x275fb7=_0x36afea;if(!_0x28f65b[_0xf5f2('0x43')][_0xf5f2('0x9c')]||!utils[_0xf5f2('0xa1')](_0x28f65b[_0xf5f2('0x43')][_0xf5f2('0x9c')])){throw new db[(_0xf5f2('0x8d'))][(_0xf5f2('0x8e'))]('Unknown\x20channel');}return _0x36afea[_0xf5f2('0xb1')+_[_0xf5f2('0xa3')](_0x28f65b[_0xf5f2('0x43')][_0xf5f2('0x9c')][_0xf5f2('0xa4')]())+_0xf5f2('0xa5')](_0x28f65b[_0xf5f2('0x43')]['ids']);}})[_0xf5f2('0x15')](function(_0x37d8b5){if(_[_0xf5f2('0xb2')](_0x28f65b[_0xf5f2('0x43')][_0xf5f2('0x5d')])){for(var _0x36ea7f=0x0;_0x36ea7f<_0x28f65b[_0xf5f2('0x43')][_0xf5f2('0x5d')][_0xf5f2('0x49')];_0x36ea7f+=0x1){var _0x529d6f={'UserId':Number(_0x28f65b[_0xf5f2('0x5a')]['id'])};_0x529d6f[_[_0xf5f2('0xa3')](_0x28f65b[_0xf5f2('0x43')][_0xf5f2('0x9c')][_0xf5f2('0xa4')]())+_0xf5f2('0xb3')]=Number(_0x28f65b['query'][_0xf5f2('0x5d')][_0x36ea7f]);socket[_0xf5f2('0xa7')]('user'+_['capitalize'](_0x28f65b[_0xf5f2('0x43')][_0xf5f2('0x9c')][_0xf5f2('0xa4')]())+_0xf5f2('0xb4'),_0x529d6f);}}else{var _0x529d6f={'UserId':Number(_0x28f65b[_0xf5f2('0x5a')]['id'])};_0x529d6f[_[_0xf5f2('0xa3')](_0x28f65b[_0xf5f2('0x43')][_0xf5f2('0x9c')][_0xf5f2('0xa4')]())+_0xf5f2('0xb3')]=Number(_0x28f65b['query'][_0xf5f2('0x5d')]);socket['emit']('user'+_[_0xf5f2('0xa3')](_0x28f65b[_0xf5f2('0x43')][_0xf5f2('0x9c')][_0xf5f2('0xa4')]())+_0xf5f2('0xb4'),_0x529d6f);}return _0x37d8b5;})[_0xf5f2('0x15')](function(){if(_0x28f65b[_0xf5f2('0x43')]['channel']===_0xf5f2('0xa9')){return db[_0xf5f2('0xae')][_0xf5f2('0x2b')]({'where':{'UserId':_0x28f65b['params']['id'],'VoiceQueueId':_0x28f65b[_0xf5f2('0x43')]['ids']},'individualHooks':!![]})['then'](function(){return _0x275fb7;});}return _0x275fb7;})[_0xf5f2('0x15')](respondWithStatusCode(_0x16cbd3,null))['catch'](handleError(_0x16cbd3,null));};exports[_0xf5f2('0xb5')]=function(_0x10215d,_0x5c7afd){_0x10215d[_0xf5f2('0x59')][_0xf5f2('0xb6')]=_0x10215d['file'][_0xf5f2('0xb7')];return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x10215d[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x5c7afd,null))['then'](saveUpdates(_0x10215d[_0xf5f2('0x59')],null))[_0xf5f2('0x15')](respondWithResult(_0x5c7afd,null))['catch'](handleError(_0x5c7afd,null));};exports['getAvatar']=function(_0x3dd6e8,_0x37f2f1){var _0x2d3ed2=path[_0xf5f2('0xb8')](config[_0xf5f2('0xb9')],_0xf5f2('0xba'));return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x3dd6e8['params']['id']},'attributes':['id','userpic'],'raw':!![]})[_0xf5f2('0x15')](handleEntityNotFound(_0x37f2f1,null))['then'](function(_0x34abb6){if(_0x34abb6){if(_[_0xf5f2('0x64')](_0x34abb6[_0xf5f2('0xb6')])){return _0x37f2f1[_0xf5f2('0xbb')](_0x2d3ed2);}else{if(!fs['existsSync'](path[_0xf5f2('0xb8')](config[_0xf5f2('0xb9')],_0xf5f2('0xbc'),_0x34abb6[_0xf5f2('0xb6')]))){return _0x37f2f1[_0xf5f2('0xbb')](_0x2d3ed2);}return _0x37f2f1['download'](path[_0xf5f2('0xb8')](config[_0xf5f2('0xb9')],_0xf5f2('0xbc'),_0x34abb6[_0xf5f2('0xb6')]));}}})[_0xf5f2('0x1f')](handleError(_0x37f2f1,null));};exports[_0xf5f2('0xbd')]=function(_0x137bce,_0x3f7f3b){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x137bce[_0xf5f2('0x5a')]['id']},'attributes':['id']})[_0xf5f2('0x15')](handleEntityNotFound(_0x3f7f3b,null))['then'](function(_0xd05e21){var _0x492175=[];values=_0xd05e21[_0xf5f2('0x4c')];_0x492175[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x4b'),_0xd05e21[_0xf5f2('0x4c')]));_0x492175[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x4d'),_0xd05e21[_0xf5f2('0x4c')]));_0x492175[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x4f'),_0xd05e21[_0xf5f2('0x4c')]));_0x492175[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x50'),_0xd05e21[_0xf5f2('0x4c')]));_0x492175[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0xbe'),_0xd05e21[_0xf5f2('0x4c')]));_0x492175[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x4e'),_0xd05e21['dataValues']));return BPromise[_0xf5f2('0x51')](_0x492175);})['then'](function(_0x5b96ef){var _0x10dbac=[];if(_0x5b96ef){for(var _0x4fc28b=0x0;_0x4fc28b<values['ChatOpenTabs'][_0xf5f2('0x49')];_0x4fc28b++){var _0x5e2a1a=values[_0xf5f2('0xbf')][_0x4fc28b];_0x10dbac[_0xf5f2('0x4a')]({'channel':_0xf5f2('0xc0'),'id':_0x5e2a1a['id'],'createdAt':_0x5e2a1a[_0xf5f2('0xc1')]});}for(var _0x4fc28b=0x0;_0x4fc28b<values[_0xf5f2('0xc2')]['length'];_0x4fc28b++){var _0x5e2a1a=values[_0xf5f2('0xc2')][_0x4fc28b];_0x10dbac[_0xf5f2('0x4a')]({'channel':'FAX','id':_0x5e2a1a['id'],'createdAt':_0x5e2a1a[_0xf5f2('0xc1')]});}for(var _0x4fc28b=0x0;_0x4fc28b<values[_0xf5f2('0xc3')][_0xf5f2('0x49')];_0x4fc28b++){var _0x5e2a1a=values['OpenchannelOpenTabs'][_0x4fc28b];_0x10dbac[_0xf5f2('0x4a')]({'channel':_0xf5f2('0xc4'),'id':_0x5e2a1a['id'],'createdAt':_0x5e2a1a[_0xf5f2('0xc1')]});}for(var _0x4fc28b=0x0;_0x4fc28b<values[_0xf5f2('0xc5')][_0xf5f2('0x49')];_0x4fc28b++){var _0x5e2a1a=values[_0xf5f2('0xc5')][_0x4fc28b];_0x10dbac[_0xf5f2('0x4a')]({'channel':_0xf5f2('0xc6'),'id':_0x5e2a1a['id'],'createdAt':_0x5e2a1a['createdAt']});}for(var _0x4fc28b=0x0;_0x4fc28b<values[_0xf5f2('0xc7')][_0xf5f2('0x49')];_0x4fc28b++){var _0x5e2a1a=values[_0xf5f2('0xc7')][_0x4fc28b];_0x10dbac[_0xf5f2('0x4a')]({'channel':'SMS','id':_0x5e2a1a['id'],'createdAt':_0x5e2a1a[_0xf5f2('0xc1')]});}for(var _0x4fc28b=0x0;_0x4fc28b<values[_0xf5f2('0xc8')][_0xf5f2('0x49')];_0x4fc28b++){var _0x5e2a1a=values[_0xf5f2('0xc8')][_0x4fc28b];_0x10dbac['push']({'channel':_0xf5f2('0xc9'),'id':_0x5e2a1a['id'],'createdAt':_0x5e2a1a[_0xf5f2('0xc1')]});}var _0x50690a={'count':_0x10dbac[_0xf5f2('0x49')],'rows':_0x10dbac};return _0x50690a;}else return null;})[_0xf5f2('0x15')](respondWithResult(_0x3f7f3b,null))[_0xf5f2('0x1f')](handleError(_0x3f7f3b,null));};exports[_0xf5f2('0xca')]=function(_0x1e6801,_0x5970b3){var _0x3bcf9a={};var _0x391a39={};var _0x35284e;var _0x2ef267;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x1e6801[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x5970b3,null))[_0xf5f2('0x15')](function(_0x4918d4){if(_0x4918d4){_0x35284e=_0x4918d4;_0x391a39[_0xf5f2('0x52')]=_['keys'](db['CmContact'][_0xf5f2('0x3c')]);_0x391a39[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x1e6801[_0xf5f2('0x43')]);_0x391a39[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x391a39[_0xf5f2('0x52')],_0x391a39[_0xf5f2('0x43')]);_0x3bcf9a[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x391a39['model'],qs['fields'](_0x1e6801['query'][_0xf5f2('0x56')]));_0x3bcf9a['attributes']=_0x3bcf9a[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x3bcf9a[_0xf5f2('0x45')]:_0x391a39['model'];_0x3bcf9a[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x1e6801['query']['sort']);_0x3bcf9a['where']=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x1e6801[_0xf5f2('0x43')],_0x391a39['filters']));if(_0x1e6801[_0xf5f2('0x43')]['filter']){_0x3bcf9a[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x3bcf9a[_0xf5f2('0x42')],{'$or':_['map'](_0x3bcf9a[_0xf5f2('0x45')],function(_0x55dbc2){var _0x1b88b5={};_0x1b88b5[_0x55dbc2]={'$like':'%'+_0x1e6801[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0x1b88b5;})});}_0x3bcf9a=_['merge']({},_0x3bcf9a,_0x1e6801[_0xf5f2('0xcf')]);return _0x35284e[_0xf5f2('0xca')](_0x3bcf9a);}})['then'](function(_0x182677){if(_0x182677){_0x2ef267=_0x182677[_0xf5f2('0x49')];if(_0x1e6801[_0xf5f2('0x43')][_0xf5f2('0xd0')](_0xf5f2('0x44'))){_0x3bcf9a[_0xf5f2('0x57')]=[{'model':db[_0xf5f2('0xd1')],'as':_0xf5f2('0xd2'),'required':![]},{'model':db[_0xf5f2('0xd3')],'as':_0xf5f2('0xd4'),'attributes':['id',_0xf5f2('0x38'),_0xf5f2('0xd5')],'where':_0x1e6801[_0xf5f2('0x43')][_0xf5f2('0xd6')]?{'id':_0x1e6801[_0xf5f2('0x43')][_0xf5f2('0xd6')]}:undefined,'required':_0x1e6801[_0xf5f2('0x43')][_0xf5f2('0xd6')]?!![]:![]}];}if(!_0x1e6801[_0xf5f2('0x43')][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x3bcf9a[_0xf5f2('0x26')]=qs['limit'](_0x1e6801[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x3bcf9a[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x1e6801['query'][_0xf5f2('0x24')]);}return _0x35284e['getContacts'](_0x3bcf9a);}})[_0xf5f2('0x15')](function(_0x212e98){if(_0x212e98){return _0x212e98?{'count':_0x2ef267,'rows':_0x212e98}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x5970b3,null))[_0xf5f2('0x1f')](handleError(_0x5970b3,null));};exports[_0xf5f2('0xd8')]=function(_0x9aff13,_0x184fe0){var _0x593218;var _0x504909;var _0x3b6902={};var _0x174afc;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x9aff13['params']['id']},'attributes':['id',_0xf5f2('0x38'),_0xf5f2('0x36')]})[_0xf5f2('0x15')](handleEntityNotFound(_0x184fe0,null))[_0xf5f2('0x15')](function(_0x16b3db){if(!utils[_0xf5f2('0xa1')](_0x9aff13['query']['channel'])){throw new db['Sequelize'][(_0xf5f2('0x8e'))](_0xf5f2('0xd9'));}_0x593218=_0x16b3db;var _0x30a468={};_0x30a468['model']=_[_0xf5f2('0xcb')](db[_['capitalize'](_0x9aff13[_0xf5f2('0x43')][_0xf5f2('0x9c')])+_0xf5f2('0xda')][_0xf5f2('0x3c')]);_0x30a468[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x9aff13[_0xf5f2('0x43')]);_0x30a468[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x30a468[_0xf5f2('0x52')],_0x30a468[_0xf5f2('0x43')]);_0x3b6902[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x30a468[_0xf5f2('0x52')],qs['fields'](_0x9aff13[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x3b6902[_0xf5f2('0x45')]=_0x3b6902[_0xf5f2('0x45')]['length']?_0x3b6902[_0xf5f2('0x45')]:_0x30a468[_0xf5f2('0x52')];_0x3b6902[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x9aff13['query'][_0xf5f2('0xcd')]);_0x3b6902['where']=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x9aff13[_0xf5f2('0x43')],_0x30a468[_0xf5f2('0x54')]));if(_0x9aff13['query'][_0xf5f2('0x31')]){_0x3b6902[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x3b6902[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x3b6902[_0xf5f2('0x45')],function(_0x53c759){var _0x13ca0c={};_0x13ca0c[_0x53c759]={'$like':'%'+_0x9aff13[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0x13ca0c;})});}_0x3b6902=_[_0xf5f2('0x58')]({},_0x3b6902,_0x9aff13[_0xf5f2('0xcf')]);switch(_0x593218[_0xf5f2('0x36')]){case _0xf5f2('0x7a'):return db[_[_0xf5f2('0xa3')](_0x9aff13[_0xf5f2('0x43')]['channel'])+_0xf5f2('0xda')][_0xf5f2('0xab')](_0x3b6902);case _0xf5f2('0x2d'):case _0xf5f2('0x2e'):return _0x593218['get'+_['capitalize'](_0x9aff13[_0xf5f2('0x43')][_0xf5f2('0x9c')])+_0xf5f2('0xa5')](_0x3b6902);default:throw new db['Sequelize']['ValidationError'](_0xf5f2('0xdb'));}})[_0xf5f2('0x15')](function(_0x575a29){_0x174afc=_0x575a29[_0xf5f2('0x49')];if(!_0x9aff13[_0xf5f2('0x43')][_0xf5f2('0xd0')]('nolimit')){_0x3b6902[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x9aff13[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x3b6902['offset']=qs['offset'](_0x9aff13[_0xf5f2('0x43')]['offset']);}switch(_0x593218[_0xf5f2('0x36')]){case _0xf5f2('0x7a'):return db[_[_0xf5f2('0xa3')](_0x9aff13[_0xf5f2('0x43')][_0xf5f2('0x9c')])+_0xf5f2('0xda')][_0xf5f2('0xab')](_0x3b6902);case _0xf5f2('0x2d'):case _0xf5f2('0x2e'):return _0x593218[_0xf5f2('0x2c')+_[_0xf5f2('0xa3')](_0x9aff13[_0xf5f2('0x43')][_0xf5f2('0x9c')])+_0xf5f2('0xa5')](_0x3b6902);}})['then'](function(_0x19669b){return{'count':_0x174afc,'rows':_0x19669b};})[_0xf5f2('0x15')](respondWithResult(_0x184fe0,null))[_0xf5f2('0x1f')](handleError(_0x184fe0,null));};exports[_0xf5f2('0xdc')]=function(_0x148512,_0x592ee0){var _0x374b5e={};var _0x38a915={};var _0x516159;var _0x663aeb;return db[_0xf5f2('0x3b')]['findOne']({'where':{'id':_0x148512['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x592ee0,null))[_0xf5f2('0x15')](function(_0x3e7f54){if(_0x3e7f54){_0x516159=_0x3e7f54;_0x38a915['model']=_['keys'](db[_0xf5f2('0xae')][_0xf5f2('0x3c')]);_0x38a915[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x148512[_0xf5f2('0x43')]);_0x38a915[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x38a915[_0xf5f2('0x52')],_0x38a915[_0xf5f2('0x43')]);_0x374b5e[_0xf5f2('0x45')]=_['intersection'](_0x38a915[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x148512['query'][_0xf5f2('0x56')]));_0x374b5e[_0xf5f2('0x45')]=_0x374b5e[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x374b5e[_0xf5f2('0x45')]:_0x38a915['model'];_0x374b5e['order']=qs[_0xf5f2('0xcd')](_0x148512[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x374b5e[_0xf5f2('0x42')]=qs['filters'](_[_0xf5f2('0xce')](_0x148512[_0xf5f2('0x43')],_0x38a915[_0xf5f2('0x54')]));if(_0x148512[_0xf5f2('0x43')]['filter']){_0x374b5e['where']=_['merge'](_0x374b5e['where'],{'$or':_[_0xf5f2('0x33')](_0x374b5e['attributes'],function(_0x5be074){var _0x561666={};_0x561666[_0x5be074]={'$like':'%'+_0x148512['query'][_0xf5f2('0x31')]+'%'};return _0x561666;})});}_0x374b5e=_['merge']({},_0x374b5e,_0x148512['options']);return _0x516159[_0xf5f2('0xdc')](_0x374b5e);}})[_0xf5f2('0x15')](function(_0x90221){if(_0x90221){_0x663aeb=_0x90221[_0xf5f2('0x49')];if(!_0x148512['query'][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x374b5e[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x148512[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x374b5e[_0xf5f2('0x24')]=qs['offset'](_0x148512[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x516159['getVoiceQueuesRt'](_0x374b5e);}})[_0xf5f2('0x15')](function(_0x1ae708){if(_0x1ae708){return _0x1ae708?{'count':_0x663aeb,'rows':_0x1ae708}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x592ee0,null))[_0xf5f2('0x1f')](handleError(_0x592ee0,null));};exports[_0xf5f2('0xdd')]=function(_0x493582,_0x75e4a3){var _0x5f470f={};var _0x1f0a64={};var _0x2bbc23;var _0x346126;return db[_0xf5f2('0x3b')]['findOne']({'where':{'id':_0x493582['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x75e4a3,null))[_0xf5f2('0x15')](function(_0x46ae87){if(_0x46ae87){_0x2bbc23=_0x46ae87;_0x1f0a64[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db[_0xf5f2('0xde')][_0xf5f2('0x3c')]);_0x1f0a64[_0xf5f2('0x43')]=_['keys'](_0x493582['query']);_0x1f0a64[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x1f0a64['model'],_0x1f0a64[_0xf5f2('0x43')]);_0x5f470f[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x1f0a64[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x493582[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x5f470f[_0xf5f2('0x45')]=_0x5f470f[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x5f470f[_0xf5f2('0x45')]:_0x1f0a64[_0xf5f2('0x52')];_0x5f470f[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x493582[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x5f470f[_0xf5f2('0x42')]=qs['filters'](_[_0xf5f2('0xce')](_0x493582['query'],_0x1f0a64[_0xf5f2('0x54')]));if(_0x493582['query']['filter']){_0x5f470f[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x5f470f[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x5f470f['attributes'],function(_0x1d19bb){var _0x2ffe8d={};_0x2ffe8d[_0x1d19bb]={'$like':'%'+_0x493582['query']['filter']+'%'};return _0x2ffe8d;})});}_0x5f470f=_['merge']({},_0x5f470f,_0x493582[_0xf5f2('0xcf')]);return _0x2bbc23[_0xf5f2('0xdd')](_0x5f470f);}})['then'](function(_0x170566){if(_0x170566){_0x346126=_0x170566[_0xf5f2('0x49')];if(!_0x493582[_0xf5f2('0x43')]['hasOwnProperty'](_0xf5f2('0xd7'))){_0x5f470f[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x493582[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x5f470f[_0xf5f2('0x24')]=qs['offset'](_0x493582['query'][_0xf5f2('0x24')]);}return _0x2bbc23[_0xf5f2('0xdd')](_0x5f470f);}})['then'](function(_0x5a7012){if(_0x5a7012){return _0x5a7012?{'count':_0x346126,'rows':_0x5a7012}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x75e4a3,null))['catch'](handleError(_0x75e4a3,null));};exports[_0xf5f2('0xdf')]=function(_0x3ff8d0,_0x2ee55f){var _0x43ca34={'raw':!![],'where':{}};var _0x432052={};var _0x30a99c={'count':0x0,'rows':[]};return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x3ff8d0[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x2ee55f,null))['then'](function(_0x3b741a){if(_0x3b741a){_0x432052[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db[_0xf5f2('0xe0')]['rawAttributes']);_0x432052[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x3ff8d0['query']);_0x432052[_0xf5f2('0x54')]=_['intersection'](_0x432052[_0xf5f2('0x52')],_0x432052[_0xf5f2('0x43')]);_0x43ca34['attributes']=_[_0xf5f2('0x55')](_0x432052[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x3ff8d0[_0xf5f2('0x43')]['fields']));_0x43ca34[_0xf5f2('0x45')]=_0x43ca34[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x43ca34['attributes']:_0x432052[_0xf5f2('0x52')];if(!_0x3ff8d0[_0xf5f2('0x43')]['hasOwnProperty'](_0xf5f2('0xd7'))){_0x43ca34[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x3ff8d0[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x43ca34[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x3ff8d0[_0xf5f2('0x43')][_0xf5f2('0x24')]);}_0x43ca34['order']=qs[_0xf5f2('0xcd')](_0x3ff8d0[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x43ca34[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x3ff8d0[_0xf5f2('0x43')],_0x432052[_0xf5f2('0x54')]));_0x43ca34[_0xf5f2('0x42')][_0xf5f2('0xe1')]=_0x3b741a['id'];if(_0x3ff8d0[_0xf5f2('0x43')]['filter']){_0x43ca34['where']=_['merge'](_0x43ca34[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x43ca34[_0xf5f2('0x45')],function(_0x538c60){var _0x6c6e9b={};_0x6c6e9b[_0x538c60]={'$like':'%'+_0x3ff8d0[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0x6c6e9b;})});}_0x43ca34=_['merge']({},_0x43ca34,_0x3ff8d0[_0xf5f2('0xcf')]);return db[_0xf5f2('0xe0')][_0xf5f2('0x27')]({'where':_0x43ca34[_0xf5f2('0x42')]})[_0xf5f2('0x15')](function(_0x34ab18){_0x30a99c[_0xf5f2('0x27')]=_0x34ab18;if(_0x3ff8d0[_0xf5f2('0x43')]['includeAll']){_0x43ca34[_0xf5f2('0x57')]=[{'all':!![]}];}return db[_0xf5f2('0xe0')][_0xf5f2('0xab')](_0x43ca34);})[_0xf5f2('0x15')](function(_0x510f56){_0x30a99c[_0xf5f2('0x48')]=_0x510f56;return _0x30a99c;});}})[_0xf5f2('0x15')](respondWithFilteredResult(_0x2ee55f,_0x43ca34))[_0xf5f2('0x1f')](handleError(_0x2ee55f,null));};exports['getScreenRecordings']=function(_0x346a95,_0x369556){var _0xcd1fcf={'raw':!![],'where':{}};var _0x2a7b68={};var _0x249e9b={'count':0x0,'rows':[]};return db['User'][_0xf5f2('0x95')]({'where':{'id':_0x346a95[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x369556,null))['then'](function(_0x1ca92b){if(_0x1ca92b){_0x2a7b68['model']=_[_0xf5f2('0xcb')](db[_0xf5f2('0xe2')]['rawAttributes']);_0x2a7b68[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x346a95[_0xf5f2('0x43')]);_0x2a7b68['filters']=_[_0xf5f2('0x55')](_0x2a7b68[_0xf5f2('0x52')],_0x2a7b68[_0xf5f2('0x43')]);_0xcd1fcf[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x2a7b68[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x346a95[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0xcd1fcf[_0xf5f2('0x45')]=_0xcd1fcf[_0xf5f2('0x45')]['length']?_0xcd1fcf[_0xf5f2('0x45')]:_0x2a7b68[_0xf5f2('0x52')];if(!_0x346a95[_0xf5f2('0x43')][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0xcd1fcf[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x346a95['query'][_0xf5f2('0x26')]);_0xcd1fcf[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x346a95[_0xf5f2('0x43')][_0xf5f2('0x24')]);}_0xcd1fcf[_0xf5f2('0xcc')]=qs['sort'](_0x346a95[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0xcd1fcf[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x346a95[_0xf5f2('0x43')],_0x2a7b68[_0xf5f2('0x54')]));_0xcd1fcf[_0xf5f2('0x42')][_0xf5f2('0xe1')]=_0x1ca92b['id'];if(_0x346a95['query'][_0xf5f2('0x31')]){_0xcd1fcf['where']=_[_0xf5f2('0x58')](_0xcd1fcf[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0xcd1fcf[_0xf5f2('0x45')],function(_0x13538b){var _0x3a3bcc={};_0x3a3bcc[_0x13538b]={'$like':'%'+_0x346a95[_0xf5f2('0x43')]['filter']+'%'};return _0x3a3bcc;})});}_0xcd1fcf=_[_0xf5f2('0x58')]({},_0xcd1fcf,_0x346a95[_0xf5f2('0xcf')]);return db[_0xf5f2('0xe2')]['count']({'where':_0xcd1fcf[_0xf5f2('0x42')]})[_0xf5f2('0x15')](function(_0x40c8ab){_0x249e9b[_0xf5f2('0x27')]=_0x40c8ab;if(_0x346a95['query'][_0xf5f2('0x44')]){_0xcd1fcf['include']=[{'all':!![]}];}return db['ScreenRecording'][_0xf5f2('0xab')](_0xcd1fcf);})[_0xf5f2('0x15')](function(_0x4c8c06){_0x249e9b['rows']=_0x4c8c06;return _0x249e9b;});}})['then'](respondWithFilteredResult(_0x369556,_0xcd1fcf))[_0xf5f2('0x1f')](handleError(_0x369556,null));};exports['getChatInteractions']=function(_0x5869ef,_0x41fa14){var _0x11dbdb={};var _0x3b882d={};var _0x395ed3;var _0x1c83ef;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x5869ef[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x41fa14,null))[_0xf5f2('0x15')](function(_0xdd72ad){if(_0xdd72ad){_0x395ed3=_0xdd72ad;_0x3b882d[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db['ChatInteraction'][_0xf5f2('0x3c')]);_0x3b882d[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x5869ef[_0xf5f2('0x43')]);_0x3b882d[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x3b882d[_0xf5f2('0x52')],_0x3b882d[_0xf5f2('0x43')]);_0x11dbdb['attributes']=_[_0xf5f2('0x55')](_0x3b882d[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x5869ef['query'][_0xf5f2('0x56')]));_0x11dbdb[_0xf5f2('0x45')]=_0x11dbdb[_0xf5f2('0x45')]['length']?_0x11dbdb['attributes']:_0x3b882d[_0xf5f2('0x52')];_0x11dbdb[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x5869ef[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x11dbdb[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x5869ef[_0xf5f2('0x43')],_0x3b882d[_0xf5f2('0x54')]));if(_0x5869ef[_0xf5f2('0x43')][_0xf5f2('0x31')]){_0x11dbdb[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x11dbdb[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x11dbdb[_0xf5f2('0x45')],function(_0x390eb0){var _0x576932={};_0x576932[_0x390eb0]={'$like':'%'+_0x5869ef[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0x576932;})});}_0x11dbdb=_[_0xf5f2('0x58')]({},_0x11dbdb,_0x5869ef['options']);return _0x395ed3[_0xf5f2('0xe3')](_0x11dbdb);}})[_0xf5f2('0x15')](function(_0x596030){if(_0x596030){_0x1c83ef=_0x596030[_0xf5f2('0x49')];if(!_0x5869ef[_0xf5f2('0x43')][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x11dbdb[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x5869ef[_0xf5f2('0x43')]['limit']);_0x11dbdb[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x5869ef[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x395ed3[_0xf5f2('0xe3')](_0x11dbdb);}})[_0xf5f2('0x15')](function(_0x2e82da){if(_0x2e82da){return _0x2e82da?{'count':_0x1c83ef,'rows':_0x2e82da}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x41fa14,null))[_0xf5f2('0x1f')](handleError(_0x41fa14,null));};exports[_0xf5f2('0xe4')]=function(_0x148d6e,_0x5a336c){var _0x69e008={};var _0x2d1342={};var _0x1d37db;var _0x1b09e1;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x148d6e['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x5a336c,null))['then'](function(_0xce91e7){if(_0xce91e7){_0x1d37db=_0xce91e7;_0x2d1342['model']=_[_0xf5f2('0xcb')](db[_0xf5f2('0xe5')][_0xf5f2('0x3c')]);_0x2d1342[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x148d6e[_0xf5f2('0x43')]);_0x2d1342[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x2d1342['model'],_0x2d1342[_0xf5f2('0x43')]);_0x69e008['attributes']=_['intersection'](_0x2d1342[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x148d6e[_0xf5f2('0x43')]['fields']));_0x69e008[_0xf5f2('0x45')]=_0x69e008[_0xf5f2('0x45')]['length']?_0x69e008[_0xf5f2('0x45')]:_0x2d1342[_0xf5f2('0x52')];_0x69e008[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x148d6e[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x69e008[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x148d6e[_0xf5f2('0x43')],_0x2d1342[_0xf5f2('0x54')]));if(_0x148d6e[_0xf5f2('0x43')][_0xf5f2('0x31')]){_0x69e008[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x69e008[_0xf5f2('0x42')],{'$or':_['map'](_0x69e008[_0xf5f2('0x45')],function(_0xd02a3a){var _0x34cf82={};_0x34cf82[_0xd02a3a]={'$like':'%'+_0x148d6e[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0x34cf82;})});}_0x69e008=_[_0xf5f2('0x58')]({},_0x69e008,_0x148d6e[_0xf5f2('0xcf')]);return _0x1d37db['getOpenchannelInteractions'](_0x69e008);}})[_0xf5f2('0x15')](function(_0x421a52){if(_0x421a52){_0x1b09e1=_0x421a52['length'];if(!_0x148d6e['query'][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x69e008[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x148d6e['query'][_0xf5f2('0x26')]);_0x69e008[_0xf5f2('0x24')]=qs['offset'](_0x148d6e[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x1d37db[_0xf5f2('0xe4')](_0x69e008);}})['then'](function(_0x215c78){if(_0x215c78){return _0x215c78?{'count':_0x1b09e1,'rows':_0x215c78}:null;}})['then'](respondWithResult(_0x5a336c,null))['catch'](handleError(_0x5a336c,null));};exports['getMailInteractions']=function(_0x53d46f,_0x4e8602){var _0x5b83fa={'raw':!![],'where':{}};var _0xa2ae8c={};var _0x2709cc={'count':0x0,'rows':[]};return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x53d46f[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x4e8602,null))['then'](function(_0x556bcc){if(_0x556bcc){_0xa2ae8c['model']=_[_0xf5f2('0xcb')](db['MailInteraction'][_0xf5f2('0x3c')]);_0xa2ae8c[_0xf5f2('0x43')]=_['keys'](_0x53d46f['query']);_0xa2ae8c['filters']=_[_0xf5f2('0x55')](_0xa2ae8c[_0xf5f2('0x52')],_0xa2ae8c[_0xf5f2('0x43')]);_0x5b83fa[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0xa2ae8c['model'],qs[_0xf5f2('0x56')](_0x53d46f['query']['fields']));_0x5b83fa[_0xf5f2('0x45')]=_0x5b83fa['attributes'][_0xf5f2('0x49')]?_0x5b83fa[_0xf5f2('0x45')]:_0xa2ae8c[_0xf5f2('0x52')];if(!_0x53d46f[_0xf5f2('0x43')]['hasOwnProperty']('nolimit')){_0x5b83fa['limit']=qs['limit'](_0x53d46f['query'][_0xf5f2('0x26')]);_0x5b83fa[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x53d46f[_0xf5f2('0x43')]['offset']);}_0x5b83fa[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x53d46f[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x5b83fa[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x53d46f[_0xf5f2('0x43')],_0xa2ae8c['filters']));_0x5b83fa[_0xf5f2('0x42')]['UserId']=_0x556bcc['id'];if(_0x53d46f[_0xf5f2('0x43')]['filter']){_0x5b83fa[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x5b83fa[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x5b83fa[_0xf5f2('0x45')],function(_0x309bf0){var _0x11c5dd={};_0x11c5dd[_0x309bf0]={'$like':'%'+_0x53d46f[_0xf5f2('0x43')]['filter']+'%'};return _0x11c5dd;})});}_0x5b83fa=_[_0xf5f2('0x58')]({},_0x5b83fa,_0x53d46f['options']);return db[_0xf5f2('0xe6')][_0xf5f2('0x27')]({'where':_0x5b83fa['where']})[_0xf5f2('0x15')](function(_0x37ea1d){_0x2709cc[_0xf5f2('0x27')]=_0x37ea1d;if(_0x53d46f[_0xf5f2('0x43')][_0xf5f2('0x44')]){_0x5b83fa['include']=[{'all':!![]}];}return db['MailInteraction'][_0xf5f2('0xab')](_0x5b83fa);})[_0xf5f2('0x15')](function(_0x57233c){_0x2709cc[_0xf5f2('0x48')]=_0x57233c;return _0x2709cc;});}})[_0xf5f2('0x15')](respondWithFilteredResult(_0x4e8602,_0x5b83fa))[_0xf5f2('0x1f')](handleError(_0x4e8602,null));};exports[_0xf5f2('0xe7')]=function(_0x3860bf,_0xf071f7){var _0x249376={};var _0x3c3d4b={};var _0x9fa01a;var _0x4f77b3;return db[_0xf5f2('0x3b')]['findOne']({'where':{'id':_0x3860bf[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0xf071f7,null))['then'](function(_0x3f3c5e){if(_0x3f3c5e){_0x9fa01a=_0x3f3c5e;_0x3c3d4b[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db['SmsInteraction'][_0xf5f2('0x3c')]);_0x3c3d4b[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x3860bf['query']);_0x3c3d4b[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x3c3d4b['model'],_0x3c3d4b['query']);_0x249376[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x3c3d4b[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x3860bf['query'][_0xf5f2('0x56')]));_0x249376['attributes']=_0x249376[_0xf5f2('0x45')]['length']?_0x249376[_0xf5f2('0x45')]:_0x3c3d4b[_0xf5f2('0x52')];_0x249376[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x3860bf[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x249376[_0xf5f2('0x42')]=qs['filters'](_[_0xf5f2('0xce')](_0x3860bf['query'],_0x3c3d4b[_0xf5f2('0x54')]));if(_0x3860bf[_0xf5f2('0x43')]['filter']){_0x249376['where']=_['merge'](_0x249376[_0xf5f2('0x42')],{'$or':_['map'](_0x249376['attributes'],function(_0x37096d){var _0x5dda28={};_0x5dda28[_0x37096d]={'$like':'%'+_0x3860bf[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0x5dda28;})});}_0x249376=_['merge']({},_0x249376,_0x3860bf[_0xf5f2('0xcf')]);return _0x9fa01a[_0xf5f2('0xe7')](_0x249376);}})[_0xf5f2('0x15')](function(_0x48eae5){if(_0x48eae5){_0x4f77b3=_0x48eae5[_0xf5f2('0x49')];if(!_0x3860bf['query'][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x249376['limit']=qs[_0xf5f2('0x26')](_0x3860bf[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x249376[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x3860bf['query'][_0xf5f2('0x24')]);}return _0x9fa01a[_0xf5f2('0xe7')](_0x249376);}})['then'](function(_0x45628d){if(_0x45628d){return _0x45628d?{'count':_0x4f77b3,'rows':_0x45628d}:null;}})['then'](respondWithResult(_0xf071f7,null))[_0xf5f2('0x1f')](handleError(_0xf071f7,null));};exports['getFaxInteractions']=function(_0x4b6c4a,_0x489559){var _0x24edbc={};var _0x5a31a1={};var _0x206109;var _0x4d8a1d;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x4b6c4a[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x489559,null))[_0xf5f2('0x15')](function(_0x2ee89b){if(_0x2ee89b){_0x206109=_0x2ee89b;_0x5a31a1['model']=_[_0xf5f2('0xcb')](db[_0xf5f2('0xe8')][_0xf5f2('0x3c')]);_0x5a31a1[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x4b6c4a[_0xf5f2('0x43')]);_0x5a31a1[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x5a31a1[_0xf5f2('0x52')],_0x5a31a1[_0xf5f2('0x43')]);_0x24edbc[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x5a31a1[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x4b6c4a['query'][_0xf5f2('0x56')]));_0x24edbc[_0xf5f2('0x45')]=_0x24edbc['attributes'][_0xf5f2('0x49')]?_0x24edbc[_0xf5f2('0x45')]:_0x5a31a1['model'];_0x24edbc[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x4b6c4a[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x24edbc[_0xf5f2('0x42')]=qs['filters'](_[_0xf5f2('0xce')](_0x4b6c4a['query'],_0x5a31a1[_0xf5f2('0x54')]));if(_0x4b6c4a['query'][_0xf5f2('0x31')]){_0x24edbc[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x24edbc[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x24edbc[_0xf5f2('0x45')],function(_0x4e1d46){var _0x4a836b={};_0x4a836b[_0x4e1d46]={'$like':'%'+_0x4b6c4a[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0x4a836b;})});}_0x24edbc=_[_0xf5f2('0x58')]({},_0x24edbc,_0x4b6c4a[_0xf5f2('0xcf')]);return _0x206109['getFaxInteractions'](_0x24edbc);}})['then'](function(_0x4e3fb6){if(_0x4e3fb6){_0x4d8a1d=_0x4e3fb6['length'];if(!_0x4b6c4a['query'][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x24edbc[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x4b6c4a[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x24edbc[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x4b6c4a['query'][_0xf5f2('0x24')]);}return _0x206109['getFaxInteractions'](_0x24edbc);}})[_0xf5f2('0x15')](function(_0x38e377){if(_0x38e377){return _0x38e377?{'count':_0x4d8a1d,'rows':_0x38e377}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x489559,null))['catch'](handleError(_0x489559,null));};exports[_0xf5f2('0xe9')]=function(_0x12fd5b,_0x4b80fb){var _0x4bf13c={};var _0x320140={};var _0x16da91;var _0x3d59ee;return db[_0xf5f2('0x3b')]['findOne']({'where':{'id':_0x12fd5b[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x4b80fb,null))[_0xf5f2('0x15')](function(_0x98d73b){if(_0x98d73b){_0x16da91=_0x98d73b;_0x320140[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db['WhatsappInteraction'][_0xf5f2('0x3c')]);_0x320140[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x12fd5b[_0xf5f2('0x43')]);_0x320140[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x320140[_0xf5f2('0x52')],_0x320140[_0xf5f2('0x43')]);_0x4bf13c[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x320140[_0xf5f2('0x52')],qs['fields'](_0x12fd5b[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x4bf13c[_0xf5f2('0x45')]=_0x4bf13c[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x4bf13c[_0xf5f2('0x45')]:_0x320140[_0xf5f2('0x52')];_0x4bf13c[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x12fd5b[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x4bf13c['where']=qs[_0xf5f2('0x54')](_['pick'](_0x12fd5b['query'],_0x320140[_0xf5f2('0x54')]));if(_0x12fd5b[_0xf5f2('0x43')][_0xf5f2('0x31')]){_0x4bf13c[_0xf5f2('0x42')]=_['merge'](_0x4bf13c[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x4bf13c[_0xf5f2('0x45')],function(_0x57dd92){var _0x57c229={};_0x57c229[_0x57dd92]={'$like':'%'+_0x12fd5b['query'][_0xf5f2('0x31')]+'%'};return _0x57c229;})});}_0x4bf13c=_[_0xf5f2('0x58')]({},_0x4bf13c,_0x12fd5b['options']);return _0x16da91[_0xf5f2('0xe9')](_0x4bf13c);}})[_0xf5f2('0x15')](function(_0x34f5b8){if(_0x34f5b8){_0x3d59ee=_0x34f5b8[_0xf5f2('0x49')];if(!_0x12fd5b[_0xf5f2('0x43')][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x4bf13c['limit']=qs[_0xf5f2('0x26')](_0x12fd5b[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x4bf13c['offset']=qs[_0xf5f2('0x24')](_0x12fd5b[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x16da91[_0xf5f2('0xe9')](_0x4bf13c);}})[_0xf5f2('0x15')](function(_0x5caac0){if(_0x5caac0){return _0x5caac0?{'count':_0x3d59ee,'rows':_0x5caac0}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x4b80fb,null))['catch'](handleError(_0x4b80fb,null));};exports[_0xf5f2('0xea')]=function(_0xb4b9fb,_0x43d0f0,_0x3e99eb){var _0x1f01cf;var _0x22f07f;var _0x3e68d7;var _0x1a124b=!_['isNil'](_0xb4b9fb[_0xf5f2('0x5a')]['id'])?_0xb4b9fb[_0xf5f2('0x5a')]['id']:!_[_0xf5f2('0x64')](_0xb4b9fb['user']['id'])?_0xb4b9fb['user']['id']:null;return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x1a124b,'role':{'$or':[_0xf5f2('0x7a'),_0xf5f2('0x2d'),_0xf5f2('0x2e')]}},'attributes':['id',_0xf5f2('0x38'),_0xf5f2('0xeb'),'mobile','role','internal',_0xf5f2('0x9e')]})['then'](function(_0x496ee5){if(_0x496ee5){if(_0x496ee5['role']===_0xf5f2('0x2e')){_0x1f01cf=_0x496ee5;if(_0xb4b9fb[_0xf5f2('0x59')][_0xf5f2('0xa0')]){_0x3e68d7=util['format'](_0xf5f2('0xec'),_0x1f01cf[_0xb4b9fb[_0xf5f2('0x59')][_0xf5f2('0xa0')]]);}else if(_0xb4b9fb['body'][_0xf5f2('0xed')]){_0x3e68d7=util[_0xf5f2('0xac')](_0xf5f2('0xad'),_0xb4b9fb['body'][_0xf5f2('0xed')]);}else{_0x3e68d7=util[_0xf5f2('0xac')](_0xf5f2('0xad'),_0x1f01cf[_0xf5f2('0x38')]);}socket['to'](util[_0xf5f2('0xac')]('user:%s',_0x1f01cf['name']))[_0xf5f2('0xa7')](_0xf5f2('0xee'),{'user':{'id':_0x1f01cf['id'],'name':_0x1f01cf[_0xf5f2('0x38')]},'ip':_0xb4b9fb[_0xf5f2('0xef')][_0xf5f2('0xf0')]||_0xb4b9fb['connection'][_0xf5f2('0xf1')]||_0xb4b9fb['socket']['remoteAddress']||_0xb4b9fb['connection'][_0xf5f2('0xf2')][_0xf5f2('0xf1')]});return db[_0xf5f2('0xae')][_0xf5f2('0x2b')]({'where':{'membername':_0x1f01cf[_0xf5f2('0x38')]},'individualHooks':!![]});}}else{throw new db[(_0xf5f2('0x8d'))][(_0xf5f2('0x8e'))](_0xf5f2('0xf3'));}})[_0xf5f2('0x15')](function(){if(_0x1f01cf){return _0x1f01cf[_0xf5f2('0xf4')]({'raw':!![]});}})[_0xf5f2('0x15')](function(_0x4b0ddc){if(_0x1f01cf){var _0x341cdb=[];if(_0x4b0ddc){_0x22f07f=_0x4b0ddc;if(_0x22f07f[_0xf5f2('0x49')]){for(var _0x24ec35=0x0;_0x24ec35<_0x22f07f[_0xf5f2('0x49')];_0x24ec35++){_0x341cdb[_0xf5f2('0x4a')]({'membername':_0x1f01cf[_0xf5f2('0x38')],'UserId':_0x1f01cf['id'],'queue_name':_0x22f07f[_0x24ec35][_0xf5f2('0x38')],'VoiceQueueId':_0x22f07f[_0x24ec35]['id'],'interface':_0x3e68d7,'paused':_0x1f01cf[_0xf5f2('0x9e')]||![],'penalty':_0x22f07f[_0x24ec35][_0xf5f2('0xf5')]||0x0});}return BPromise[_0xf5f2('0x88')](_0x341cdb,function(_0x14811d){return db[_0xf5f2('0xae')]['upsert'](_0x14811d);});}}}})['then'](function(){if(_0x1f01cf){return db[_0xf5f2('0xf6')][_0xf5f2('0xab')]({'where':{'membername':_0x1f01cf[_0xf5f2('0x38')],'exitAt':null}});}})[_0xf5f2('0x15')](function(_0xe1aa7a){if(_0x1f01cf){var _0x189695=[];_0xe1aa7a['forEach'](function(_0x26ae52){_0x189695['push'](_0x26ae52[_0xf5f2('0x2a')]({'exitAt':moment()[_0xf5f2('0xac')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise['all'](_0x189695);}})[_0xf5f2('0x15')](function(){if(_0x1f01cf){var _0x478809=[];var _0x3f80fa=[];var _0x34c94b=utils[_0xf5f2('0xf7')]();var _0x5f6315={'membername':_0x1f01cf[_0xf5f2('0x38')],'interface':_0x3e68d7,'enterAt':moment()['format'](_0xf5f2('0xf8')),'role':_0x1f01cf[_0xf5f2('0x36')],'internal':_0x1f01cf[_0xf5f2('0x5f')]};_0x34c94b[_0xf5f2('0xf9')](function(_0x45b33f){_0x478809['push'](_[_0xf5f2('0x58')]({'channel':_0x45b33f,'type':'LOGIN','data1':_0xb4b9fb[_0xf5f2('0x59')][_0xf5f2('0xfa')],'data2':_0x3e68d7},_0x5f6315));if(_0x1f01cf[_0xf5f2('0x9e')]){_0x3f80fa['push'](_['merge']({'channel':_0x45b33f,'type':_0xf5f2('0xfb'),'data1':_0xf5f2('0xfc')},_0x5f6315));}});return db[_0xf5f2('0xf6')][_0xf5f2('0x85')](_0x478809['concat'](_0x3f80fa),{'individualHooks':!![]});}})[_0xf5f2('0x15')](function(){if(_0x1f01cf){return _0x1f01cf[_0xf5f2('0x2a')]({'online':!![],'lastLoginAt':moment()[_0xf5f2('0xac')](_0xf5f2('0xf8')),'voicePause':_0x1f01cf[_0xf5f2('0x9e')]||![],'mailPause':_0x1f01cf['loginInPause']||![],'chatPause':_0x1f01cf[_0xf5f2('0x9e')]||![],'faxPause':_0x1f01cf['loginInPause']||![],'smsPause':_0x1f01cf[_0xf5f2('0x9e')]||![],'openchannelPause':_0x1f01cf[_0xf5f2('0x9e')]||![],'whatsappPause':_0x1f01cf['loginInPause']||![],'pauseType':_0x1f01cf[_0xf5f2('0x9e')]?_0xf5f2('0xfc'):null,'interface':_0x3e68d7,'lastPauseAt':moment()[_0xf5f2('0xac')](_0xf5f2('0xf8'))});}})[_0xf5f2('0x15')](function(_0x2d798a){if(_0xb4b9fb[_0xf5f2('0xfd')]){return _0x3e99eb();}else{return BPromise['resolve'](_0x2d798a)[_0xf5f2('0x15')](respondWithResult(_0x43d0f0,null));}})[_0xf5f2('0x1f')](handleError(_0x43d0f0,null));};exports[_0xf5f2('0xfe')]=function(_0x16dee6,_0x3717d9){var _0x24fef8;return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x16dee6[_0xf5f2('0x5a')]['id'],'role':_0xf5f2('0x2e')},'attributes':['id',_0xf5f2('0x38'),_0xf5f2('0x36')]})[_0xf5f2('0x15')](handleEntityNotFound(_0x3717d9,null))['then'](function(_0x652b1e){if(_0x652b1e){_0x24fef8=_0x652b1e;return db[_0xf5f2('0xae')]['destroy']({'where':{'membername':_0x24fef8[_0xf5f2('0x38')]},'individualHooks':!![]});}})[_0xf5f2('0x15')](function(){return db['MemberReport'][_0xf5f2('0xab')]({'where':{'membername':_0x24fef8[_0xf5f2('0x38')],'exitAt':null}});})[_0xf5f2('0x15')](function(_0x58632c){var _0x316f7c=[];_0x58632c[_0xf5f2('0xf9')](function(_0x33592d){_0x316f7c[_0xf5f2('0x4a')](_0x33592d[_0xf5f2('0x2a')]({'exitAt':moment()[_0xf5f2('0xac')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xf5f2('0x51')](_0x316f7c);})[_0xf5f2('0x15')](function(){return _0x24fef8[_0xf5f2('0x2a')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})['then'](respondWithResult(_0x3717d9,null))[_0xf5f2('0x1f')](handleError(_0x3717d9,null));};exports[_0xf5f2('0xff')]=function(_0x4cee5c,_0x1d556c){var _0x4b1e13;return db[_0xf5f2('0xae')]['update']({'paused':0x1},{'where':{'UserId':_0x4cee5c[_0xf5f2('0x5a')]['id']},'individualHooks':!![]})[_0xf5f2('0x15')](function(){return db['User'][_0xf5f2('0x37')]({'where':{'id':_0x4cee5c['params']['id'],'role':_0xf5f2('0x2e')},'attributes':['id','name',_0xf5f2('0x36'),'internal',_0xf5f2('0xa0')]});})['then'](handleEntityNotFound(_0x1d556c,null))[_0xf5f2('0x15')](function(_0x5e948c){if(_0x5e948c){_0x4b1e13=_0x5e948c;return respondWithRpcPromise(_0xf5f2('0x100'),_0xf5f2('0xff'),{'id':_0x4b1e13['id'],'name':_0x4b1e13['name'],'pause':!![]});}})[_0xf5f2('0x15')](function(){if(_0x4b1e13){return db[_0xf5f2('0xf6')]['findAll']({'where':{'membername':_0x4b1e13[_0xf5f2('0x38')],'type':'PAUSE','exitAt':null}});}})[_0xf5f2('0x15')](function(_0x2c2be8){if(_0x2c2be8['length']){var _0x1e07b4=moment()[_0xf5f2('0xac')](_0xf5f2('0xf8'));for(var _0x418944=0x0,_0x2712a1=_0x2c2be8['length'];_0x418944<_0x2712a1;_0x418944++){_0x2c2be8[_0x418944][_0xf5f2('0x101')]({'exitAt':_0x1e07b4});}}})[_0xf5f2('0x15')](function(){var _0x2008f4=[];var _0x38ba23=utils[_0xf5f2('0xf7')]();_0x38ba23['forEach'](function(_0x33f10a){_0x2008f4[_0xf5f2('0x4a')]({'channel':_0x33f10a,'membername':_0x4b1e13['name'],'interface':_[_0xf5f2('0x64')](_0x4b1e13[_0xf5f2('0xa0')])?util[_0xf5f2('0xac')](_0xf5f2('0xad'),_0x4b1e13[_0xf5f2('0x38')]):_0x4b1e13['interface'],'type':_0xf5f2('0xfb'),'enterAt':moment()['format'](_0xf5f2('0xf8')),'data1':_0x4cee5c[_0xf5f2('0x59')]['type']||_0xf5f2('0x102'),'role':_0x4b1e13[_0xf5f2('0x36')],'internal':_0x4b1e13[_0xf5f2('0x5f')]});});return db['MemberReport']['bulkCreate'](_0x2008f4,{'individualHooks':!![]});})['then'](function(){return _0x4b1e13[_0xf5f2('0x2a')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x4cee5c[_0xf5f2('0x59')][_0xf5f2('0x3d')]||_0xf5f2('0x102'),'lastPauseAt':moment()[_0xf5f2('0xac')](_0xf5f2('0xf8'))});})[_0xf5f2('0x15')](respondWithResult(_0x1d556c,null))[_0xf5f2('0x1f')](handleError(_0x1d556c,null));};exports[_0xf5f2('0x103')]=function(_0xee959d,_0x468446){var _0x1639c7;return db['User'][_0xf5f2('0x37')]({'where':{'id':_0xee959d[_0xf5f2('0x5a')]['id']},'attributes':['id',_0xf5f2('0x38'),_0xf5f2('0x36'),'voicePause',_0xf5f2('0x104'),_0xf5f2('0x105'),_0xf5f2('0x106'),_0xf5f2('0x107'),_0xf5f2('0x108'),_0xf5f2('0x109'),_0xf5f2('0x10a'),_0xf5f2('0x10b')]})[_0xf5f2('0x15')](handleEntityNotFound(_0x468446,null))[_0xf5f2('0x15')](function(_0x1cfb2f){if(_0x1cfb2f){_0x1639c7=_0x1cfb2f;if(_0xee959d['body']['channel']&&!utils['isValidChannel'](_0xee959d[_0xf5f2('0x59')][_0xf5f2('0x9c')])){throw new db['Sequelize'][(_0xf5f2('0x8e'))](_0xf5f2('0xd9'));}switch(_0xee959d[_0xf5f2('0x59')][_0xf5f2('0x9c')]){case _0xf5f2('0xa9'):return respondWithRpcPromise(_0xf5f2('0x100'),'unpause',{'id':_0x1639c7['id'],'name':_0x1639c7[_0xf5f2('0x38')],'pause':![]})['then'](function(){return db[_0xf5f2('0xae')]['update']({'paused':0x0},{'where':{'UserId':_0x1639c7['id']},'individualHooks':!![]});})['then'](function(){return db[_0xf5f2('0xf6')][_0xf5f2('0x37')]({'where':{'channel':_0xee959d[_0xf5f2('0x59')][_0xf5f2('0x9c')],'membername':_0x1639c7['name'],'type':_0xf5f2('0xfb'),'exitAt':null}});})['then'](function(_0x321c7d){if(_0x321c7d){return _0x321c7d[_0xf5f2('0x2a')]({'exitAt':moment()[_0xf5f2('0xac')](_0xf5f2('0xf8')),'data2':_0xf5f2('0x10c')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x1639c7[_0xf5f2('0x2a')]({'voicePause':![]});});case'mail':case _0xf5f2('0x4b'):case _0xf5f2('0xbe'):case'sms':case _0xf5f2('0x50'):case _0xf5f2('0x4f'):return db[_0xf5f2('0xf6')][_0xf5f2('0x37')]({'where':{'channel':_0xee959d[_0xf5f2('0x59')][_0xf5f2('0x9c')],'membername':_0x1639c7['name'],'type':'PAUSE','exitAt':null}})[_0xf5f2('0x15')](function(_0x23c78c){if(_0x23c78c){return _0x23c78c[_0xf5f2('0x2a')]({'exitAt':moment()['format'](_0xf5f2('0xf8')),'data2':_0xf5f2('0x10c')},{'individualHooks':!![]});}return null;})[_0xf5f2('0x15')](function(){var _0xb404e6={};_[_0xf5f2('0x28')](_0xb404e6,util[_0xf5f2('0xac')](_0xf5f2('0x10d'),_0xee959d[_0xf5f2('0x59')][_0xf5f2('0x9c')],'Pause'),![]);return _0x1639c7[_0xf5f2('0x2a')](_0xb404e6);});default:return respondWithRpcPromise(_0xf5f2('0x100'),_0xf5f2('0x103'),{'id':_0x1639c7['id'],'name':_0x1639c7[_0xf5f2('0x38')],'pause':![]})[_0xf5f2('0x15')](function(){return db[_0xf5f2('0xae')][_0xf5f2('0x2a')]({'paused':0x0},{'where':{'UserId':_0x1639c7['id']}});})[_0xf5f2('0x15')](function(){return db[_0xf5f2('0xf6')][_0xf5f2('0xab')]({'where':{'membername':_0x1639c7[_0xf5f2('0x38')],'type':_0xf5f2('0xfb'),'exitAt':null}});})['then'](function(_0x5ab27d){var _0xaab448=[];_0x5ab27d['forEach'](function(_0x4f82ed){_0xaab448[_0xf5f2('0x4a')](_0x4f82ed[_0xf5f2('0x2a')]({'exitAt':moment()['format'](_0xf5f2('0xf8')),'data2':_0xf5f2('0x10c')}));});return BPromise[_0xf5f2('0x51')](_0xaab448);})[_0xf5f2('0x15')](function(){return _0x1639c7['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0xf5f2('0x15')](respondWithResult(_0x468446,null))[_0xf5f2('0x1f')](handleError(_0x468446,null));};exports[_0xf5f2('0x10e')]=function(_0x136ced,_0x221030){var _0x5d8087={};var _0xcb3f03={};var _0x149c2b;var _0x2c8b3e;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x136ced[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x221030,null))[_0xf5f2('0x15')](function(_0xf1a7f7){if(_0xf1a7f7){_0x149c2b=_0xf1a7f7;_0xcb3f03['model']=_[_0xf5f2('0xcb')](db[_0xf5f2('0x10f')][_0xf5f2('0x3c')]);_0xcb3f03[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x136ced[_0xf5f2('0x43')]);_0xcb3f03['filters']=_[_0xf5f2('0x55')](_0xcb3f03[_0xf5f2('0x52')],_0xcb3f03[_0xf5f2('0x43')]);_0x5d8087[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0xcb3f03[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x136ced[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x5d8087[_0xf5f2('0x45')]=_0x5d8087[_0xf5f2('0x45')]['length']?_0x5d8087[_0xf5f2('0x45')]:_0xcb3f03[_0xf5f2('0x52')];_0x5d8087['order']=qs['sort'](_0x136ced[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x5d8087[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x136ced['query'],_0xcb3f03['filters']));if(_0x136ced['query'][_0xf5f2('0x31')]){_0x5d8087[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x5d8087[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x5d8087[_0xf5f2('0x45')],function(_0x4d3842){var _0x411505={};_0x411505[_0x4d3842]={'$like':'%'+_0x136ced[_0xf5f2('0x43')]['filter']+'%'};return _0x411505;})});}_0x5d8087=_['merge']({},_0x5d8087,_0x136ced[_0xf5f2('0xcf')]);return _0x149c2b[_0xf5f2('0x10e')](_0x5d8087);}})['then'](function(_0x47cb92){if(_0x47cb92){_0x2c8b3e=_0x47cb92[_0xf5f2('0x49')];if(!_0x136ced['query'][_0xf5f2('0xd0')]('nolimit')){_0x5d8087[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x136ced[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x5d8087[_0xf5f2('0x24')]=qs['offset'](_0x136ced['query'][_0xf5f2('0x24')]);}return _0x149c2b[_0xf5f2('0x10e')](_0x5d8087);}})[_0xf5f2('0x15')](function(_0x3e300d){if(_0x3e300d){return _0x3e300d?{'count':_0x2c8b3e,'rows':_0x3e300d}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x221030,null))[_0xf5f2('0x1f')](handleError(_0x221030,null));};exports[_0xf5f2('0x110')]=function(_0x3dd1f6,_0x69fd0e){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x3dd1f6[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x69fd0e,null))[_0xf5f2('0x15')](function(_0x3e28ea){if(_0x3e28ea){var _0x2ec1e0=_0x3e28ea['get']({'plain':!![]});return _0x3e28ea[_0xf5f2('0x110')](_0x3dd1f6[_0xf5f2('0x59')][_0xf5f2('0x5d')],_[_0xf5f2('0x5e')](_0x3dd1f6[_0xf5f2('0x59')],[_0xf5f2('0x5d'),'id'])||{})['then'](function(){for(var _0x5ad6b7=0x0;_0x5ad6b7<_0x3dd1f6[_0xf5f2('0x59')]['ids']['length'];_0x5ad6b7++){var _0x5a4e56=[];var _0x41d2f0={};db[_0xf5f2('0x10f')]['findOne']({'where':{'id':_0x3dd1f6[_0xf5f2('0x59')]['ids'][_0x5ad6b7]}})[_0xf5f2('0x15')](function(_0x59c3bd){_0x41d2f0=_0x59c3bd[_0xf5f2('0x4c')];_0x5a4e56[_0xf5f2('0x4a')](_0x59c3bd['getVoiceQueues']()['then'](function(_0xc79def){for(var _0x2ba7c7=0x0;_0x2ba7c7<_0xc79def[_0xf5f2('0x49')];_0x2ba7c7++){_0xc79def[_0x2ba7c7][_0xf5f2('0x111')](_0xf5f2('0x9c'),'Voice');}return _0xc79def;}));_0x5a4e56['push'](_0x59c3bd[_0xf5f2('0x112')]()['then'](function(_0x1d6f03){for(var _0x58fead=0x0;_0x58fead<_0x1d6f03['length'];_0x58fead++){_0x1d6f03[_0x58fead][_0xf5f2('0x111')](_0xf5f2('0x9c'),_0xf5f2('0x113'));}return _0x1d6f03;}));_0x5a4e56[_0xf5f2('0x4a')](_0x59c3bd[_0xf5f2('0x114')]()['then'](function(_0x2b5e7b){for(var _0x32c98d=0x0;_0x32c98d<_0x2b5e7b['length'];_0x32c98d++){_0x2b5e7b[_0x32c98d]['setDataValue']('channel',_0xf5f2('0x115'));}return _0x2b5e7b;}));_0x5a4e56[_0xf5f2('0x4a')](_0x59c3bd[_0xf5f2('0x116')]()[_0xf5f2('0x15')](function(_0x3e5e48){for(var _0x538a9e=0x0;_0x538a9e<_0x3e5e48[_0xf5f2('0x49')];_0x538a9e++){_0x3e5e48[_0x538a9e][_0xf5f2('0x111')](_0xf5f2('0x9c'),'Sms');}return _0x3e5e48;}));_0x5a4e56[_0xf5f2('0x4a')](_0x59c3bd[_0xf5f2('0x117')]()[_0xf5f2('0x15')](function(_0x206cf4){for(var _0x2ea5b8=0x0;_0x2ea5b8<_0x206cf4['length'];_0x2ea5b8++){_0x206cf4[_0x2ea5b8]['setDataValue'](_0xf5f2('0x9c'),_0xf5f2('0x118'));}return _0x206cf4;}));_0x5a4e56[_0xf5f2('0x4a')](_0x59c3bd[_0xf5f2('0x119')]()[_0xf5f2('0x15')](function(_0x1cee21){for(var _0x35648=0x0;_0x35648<_0x1cee21[_0xf5f2('0x49')];_0x35648++){_0x1cee21[_0x35648][_0xf5f2('0x111')](_0xf5f2('0x9c'),_0xf5f2('0x11a'));}return _0x1cee21;}));_0x5a4e56[_0xf5f2('0x4a')](_0x59c3bd[_0xf5f2('0x11b')]()['then'](function(_0x5237c1){for(var _0x1b0ffb=0x0;_0x1b0ffb<_0x5237c1[_0xf5f2('0x49')];_0x1b0ffb++){_0x5237c1[_0x1b0ffb]['setDataValue']('channel','Openchannel');}return _0x5237c1;}));return BPromise[_0xf5f2('0x51')](_0x5a4e56);})[_0xf5f2('0x15')](function(_0x519ea5){var _0x2b0845=_[_0xf5f2('0x11c')](_0x519ea5);_0x5a4e56=[];return db['sequelize'][_0xf5f2('0x11d')](function(_0x1ca5a4){for(var _0x26b2d7=0x0;_0x26b2d7<_0x2b0845['length'];_0x26b2d7++){_0x5a4e56['push'](_0x2b0845[_0x26b2d7][_0xf5f2('0x11e')](_0x2ec1e0['id']),{'transaction':_0x1ca5a4});}return BPromise['all'](_0x5a4e56)[_0xf5f2('0x15')](function(){if(_0x2ec1e0[_0xf5f2('0x9d')]){return BPromise[_0xf5f2('0x88')](_[_0xf5f2('0x31')](_0x2b0845,function(_0x141623){return _0x141623[_0xf5f2('0x11f')](_0xf5f2('0x9c'))===_0xf5f2('0x120');}),function(_0x407f45){return db['UserVoiceQueueRt']['upsert']({'membername':_0x2ec1e0['name'],'UserId':_0x2ec1e0['id'],'queue_name':_0x407f45[_0xf5f2('0x38')],'VoiceQueueId':_0x407f45['id'],'interface':_['isNil'](_0x2ec1e0[_0xf5f2('0xa0')])?util[_0xf5f2('0xac')]('SIP/%s',_0x2ec1e0[_0xf5f2('0x38')]):_0x2ec1e0[_0xf5f2('0xa0')],'paused':_0x2ec1e0[_0xf5f2('0x9f')]||![],'penalty':_0x2ec1e0[_0xf5f2('0xa6')]},{'transaction':_0x1ca5a4});});}else{return;}})[_0xf5f2('0x15')](function(){for(var _0x5aa756=0x0;_0x5aa756<_0x2b0845[_0xf5f2('0x49')];_0x5aa756++){var _0x14e483=_0x2b0845[_0x5aa756][_0xf5f2('0x11f')](_0xf5f2('0x9c'));var _0x3ab4ff=_0x14e483+_0xf5f2('0xb3');socket[_0xf5f2('0xa7')]('user'+_0x14e483+_0xf5f2('0xa8'),{'UserId':_0x2ec1e0['id'],['queueField']:_0x2b0845[_0x5aa756]['id']});}});});})[_0xf5f2('0x15')](function(){db[_0xf5f2('0x121')][_0xf5f2('0x95')]({'where':{'teamId':_0x41d2f0['id']}})[_0xf5f2('0x15')](function(_0x34faf5){if(_0x34faf5){db[_0xf5f2('0x122')][_0xf5f2('0x7e')]({'UserId':_0x3dd1f6[_0xf5f2('0x5a')]['id'],'VoicePrefixId':_0x34faf5[_0xf5f2('0x123')]});}});});}});}})[_0xf5f2('0x15')](respondWithStatusCode(_0x69fd0e,null))['catch'](handleError(_0x69fd0e,null));};exports[_0xf5f2('0x124')]=function(_0x5c1fcb,_0x18ec33){return db[_0xf5f2('0x3b')]['findOne']({'where':{'id':_0x5c1fcb[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x18ec33,null))[_0xf5f2('0x15')](function(_0xcbf7b5){if(_0xcbf7b5){var _0x58ed33=_0xcbf7b5[_0xf5f2('0x2c')]({'plain':!![]});var _0x197998=_0x5c1fcb[_0xf5f2('0x43')]['ids'];return _0xcbf7b5[_0xf5f2('0x124')](_0x197998)[_0xf5f2('0x15')](function(){for(var _0x4118ec=0x0;_0x4118ec<_0x197998['length'];_0x4118ec++){var _0x3b3dff=[];var _0xf05d40={};db['Team']['findOne']({'where':{'id':_0x197998[_0x4118ec]}})[_0xf5f2('0x15')](function(_0x22cb0b){_0xf05d40=_0x22cb0b[_0xf5f2('0x4c')];_0x3b3dff[_0xf5f2('0x4a')](_0x22cb0b[_0xf5f2('0xf4')]()[_0xf5f2('0x15')](function(_0x3a3673){for(var _0x3951ea=0x0;_0x3951ea<_0x3a3673[_0xf5f2('0x49')];_0x3951ea++){_0x3a3673[_0x3951ea][_0xf5f2('0x111')](_0xf5f2('0x9c'),_0xf5f2('0x120'));}return _0x3a3673;}));_0x3b3dff['push'](_0x22cb0b[_0xf5f2('0x112')]()[_0xf5f2('0x15')](function(_0x13899b){for(var _0xb6bd54=0x0;_0xb6bd54<_0x13899b[_0xf5f2('0x49')];_0xb6bd54++){_0x13899b[_0xb6bd54]['setDataValue']('channel','Chat');}return _0x13899b;}));_0x3b3dff[_0xf5f2('0x4a')](_0x22cb0b[_0xf5f2('0x114')]()[_0xf5f2('0x15')](function(_0x5d9271){for(var _0x3d2665=0x0;_0x3d2665<_0x5d9271[_0xf5f2('0x49')];_0x3d2665++){_0x5d9271[_0x3d2665][_0xf5f2('0x111')](_0xf5f2('0x9c'),_0xf5f2('0x115'));}return _0x5d9271;}));_0x3b3dff[_0xf5f2('0x4a')](_0x22cb0b[_0xf5f2('0x116')]()[_0xf5f2('0x15')](function(_0x551c62){for(var _0xe0c5a=0x0;_0xe0c5a<_0x551c62[_0xf5f2('0x49')];_0xe0c5a++){_0x551c62[_0xe0c5a][_0xf5f2('0x111')](_0xf5f2('0x9c'),_0xf5f2('0x125'));}return _0x551c62;}));_0x3b3dff[_0xf5f2('0x4a')](_0x22cb0b[_0xf5f2('0x117')]()[_0xf5f2('0x15')](function(_0x1b9dbd){for(var _0x323ce3=0x0;_0x323ce3<_0x1b9dbd[_0xf5f2('0x49')];_0x323ce3++){_0x1b9dbd[_0x323ce3]['setDataValue']('channel','Whatsapp');}return _0x1b9dbd;}));_0x3b3dff[_0xf5f2('0x4a')](_0x22cb0b[_0xf5f2('0x119')]()[_0xf5f2('0x15')](function(_0x1af5aa){for(var _0x45ceb4=0x0;_0x45ceb4<_0x1af5aa[_0xf5f2('0x49')];_0x45ceb4++){_0x1af5aa[_0x45ceb4][_0xf5f2('0x111')](_0xf5f2('0x9c'),_0xf5f2('0x11a'));}return _0x1af5aa;}));_0x3b3dff['push'](_0x22cb0b[_0xf5f2('0x11b')]()[_0xf5f2('0x15')](function(_0x1a294d){for(var _0x204950=0x0;_0x204950<_0x1a294d[_0xf5f2('0x49')];_0x204950++){_0x1a294d[_0x204950][_0xf5f2('0x111')](_0xf5f2('0x9c'),_0xf5f2('0x126'));}return _0x1a294d;}));return BPromise[_0xf5f2('0x51')](_0x3b3dff);})[_0xf5f2('0x15')](function(_0x326b90){var _0x25a243=_[_0xf5f2('0x11c')](_0x326b90);_0x3b3dff=[];return db[_0xf5f2('0x66')][_0xf5f2('0x11d')](function(_0x215139){for(var _0x192e2a=0x0;_0x192e2a<_0x25a243[_0xf5f2('0x49')];_0x192e2a++){_0x3b3dff[_0xf5f2('0x4a')](_0x25a243[_0x192e2a][_0xf5f2('0x127')](_0x58ed33['id']),{'transaction':_0x215139});}return BPromise[_0xf5f2('0x51')](_0x3b3dff)[_0xf5f2('0x15')](function(){if(_0x58ed33[_0xf5f2('0x9d')]){return BPromise[_0xf5f2('0x88')](_[_0xf5f2('0x31')](_0x25a243,function(_0x15ecf9){return _0x15ecf9[_0xf5f2('0x11f')](_0xf5f2('0x9c'))===_0xf5f2('0x120');}),function(_0x17eb56){return db[_0xf5f2('0xae')][_0xf5f2('0x2b')]({'where':{'VoiceQueueId':_0x17eb56['id'],'UserId':_0x58ed33['id']},'transaction':_0x215139});});}else{return;}})[_0xf5f2('0x15')](function(){db[_0xf5f2('0x121')]['findOne']({'where':{'teamId':_0xf05d40['id']}})[_0xf5f2('0x15')](function(_0x43bac2){if(_0x43bac2){return db[_0xf5f2('0x122')][_0xf5f2('0x2b')]({'where':{'UserId':_0x58ed33['id'],'VoicePrefixId':_0x43bac2[_0xf5f2('0x4c')][_0xf5f2('0x123')]}});}});})['then'](function(){for(var _0x500b74=0x0;_0x500b74<_0x25a243[_0xf5f2('0x49')];_0x500b74++){var _0x55bea5=_0x25a243[_0x500b74]['getDataValue'](_0xf5f2('0x9c'));var _0x2069d0=_0x55bea5+_0xf5f2('0xb3');socket[_0xf5f2('0xa7')]('user'+_0x55bea5+'Queue:remove',{'UserId':_0x58ed33['id'],['queueField']:_0x25a243[_0x500b74]['id']});}});});});}});}})[_0xf5f2('0x15')](respondWithStatusCode(_0x18ec33,null))['catch'](handleError(_0x18ec33,null));};exports['getLists']=function(_0x11988f,_0x222589){var _0x3dee22={};var _0x38845f={};var _0x47187a;var _0x58ca66;return db['User']['findOne']({'where':{'id':_0x11988f[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x222589,null))[_0xf5f2('0x15')](function(_0xe0374e){if(_0xe0374e){_0x47187a=_0xe0374e;_0x38845f['model']=_[_0xf5f2('0xcb')](db['CmList'][_0xf5f2('0x3c')]);_0x38845f[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x11988f['query']);_0x38845f['filters']=_['intersection'](_0x38845f[_0xf5f2('0x52')],_0x38845f[_0xf5f2('0x43')]);_0x3dee22[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x38845f[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x11988f[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x3dee22[_0xf5f2('0x45')]=_0x3dee22['attributes']['length']?_0x3dee22[_0xf5f2('0x45')]:_0x38845f[_0xf5f2('0x52')];_0x3dee22['order']=qs[_0xf5f2('0xcd')](_0x11988f[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x3dee22[_0xf5f2('0x42')]=qs['filters'](_[_0xf5f2('0xce')](_0x11988f[_0xf5f2('0x43')],_0x38845f[_0xf5f2('0x54')]));if(_0x11988f[_0xf5f2('0x43')][_0xf5f2('0x31')]){_0x3dee22[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x3dee22[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x3dee22['attributes'],function(_0x51efd7){var _0x39e0d3={};_0x39e0d3[_0x51efd7]={'$like':'%'+_0x11988f['query'][_0xf5f2('0x31')]+'%'};return _0x39e0d3;})});}_0x3dee22=_[_0xf5f2('0x58')]({},_0x3dee22,_0x11988f[_0xf5f2('0xcf')]);return _0x47187a[_0xf5f2('0x128')](_0x3dee22);}})['then'](function(_0x3d2623){if(_0x3d2623){_0x58ca66=_0x3d2623['length'];if(!_0x11988f[_0xf5f2('0x43')]['hasOwnProperty'](_0xf5f2('0xd7'))){_0x3dee22[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x11988f[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x3dee22[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x11988f[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x47187a[_0xf5f2('0x128')](_0x3dee22);}})['then'](function(_0x447e0e){if(_0x447e0e){return _0x447e0e?{'count':_0x58ca66,'rows':_0x447e0e}:null;}})['then'](respondWithResult(_0x222589,null))['catch'](handleError(_0x222589,null));};exports[_0xf5f2('0x129')]=function(_0x10c571,_0x511e9e){var _0x286040={};var _0x190499={};var _0x1ce73b;var _0x214f5d;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x10c571['params']['id']}})['then'](handleEntityNotFound(_0x511e9e,null))['then'](function(_0x3da502){if(_0x3da502){_0x1ce73b=_0x3da502;_0x190499[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db[_0xf5f2('0x3b')][_0xf5f2('0x3c')]);_0x190499['query']=_[_0xf5f2('0xcb')](_0x10c571[_0xf5f2('0x43')]);_0x190499[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x190499[_0xf5f2('0x52')],_0x190499['query']);_0x286040[_0xf5f2('0x45')]=_['intersection'](_0x190499[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x10c571[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x286040['attributes']=_0x286040[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x286040['attributes']:_0x190499['model'];_0x286040['order']=qs[_0xf5f2('0xcd')](_0x10c571[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x286040[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_['pick'](_0x10c571[_0xf5f2('0x43')],_0x190499['filters']));if(_0x10c571['query']['filter']){_0x286040[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x286040[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x286040[_0xf5f2('0x45')],function(_0x2349e3){var _0x4d1fff={};_0x4d1fff[_0x2349e3]={'$like':'%'+_0x10c571[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0x4d1fff;})});}_0x286040['model']=db[_0xf5f2('0x3b')];_0x286040['as']=_0xf5f2('0x80');_0x286040=_[_0xf5f2('0x58')]({},_0x286040,_0x10c571[_0xf5f2('0xcf')]);return _0x1ce73b[_0xf5f2('0xf4')]({'include':[_0x286040]});}})[_0xf5f2('0x15')](function(_0x250aed){if(_0x250aed){var _0x23d4e9={},_0x43bfb3=[],_0x1897fb=0x0;for(var _0xd096c8=0x0;_0xd096c8<_0x250aed[_0xf5f2('0x49')];_0xd096c8+=0x1){for(var _0x3a2b9e=0x0,_0x50e6b1;_0x3a2b9e<_0x250aed[_0xd096c8][_0xf5f2('0x80')]['length'];_0x3a2b9e+=0x1){_0x50e6b1=_0x250aed[_0xd096c8][_0xf5f2('0x80')][_0x3a2b9e]['get']({'plain':!![]});_0x23d4e9[_0x50e6b1['id']]=_0x50e6b1;}}_0x23d4e9=_[_0xf5f2('0x12a')](_0x23d4e9);for(var _0x3eec45=qs[_0xf5f2('0x24')](_0x10c571[_0xf5f2('0x43')]['offset']);_0x3eec45<_0x23d4e9['length']&&_0x43bfb3[_0xf5f2('0x49')]<qs['limit'](_0x10c571[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x3eec45+=0x1){if(_0x23d4e9[_0x3eec45]){_0x43bfb3['push'](_0x23d4e9[_0x3eec45]);}}return{'count':_0x23d4e9[_0xf5f2('0x49')],'rows':_0x43bfb3};}})[_0xf5f2('0x15')](respondWithResult(_0x511e9e,null))[_0xf5f2('0x1f')](handleError(_0x511e9e,null));};exports[_0xf5f2('0x2b')]=function(_0x226dc6,_0x32ca09){if(_0x226dc6[_0xf5f2('0x2d')]['id']==_0x226dc6['params']['id']){return _0x32ca09[_0xf5f2('0x21')](0x1f4)['send']({'message':'You\x20can\x27t\x20delete\x20yourself'});}return db['User'][_0xf5f2('0x37')]({'where':{'id':_0x226dc6[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x32ca09,null))[_0xf5f2('0x15')](removeEntity(_0x32ca09,null))[_0xf5f2('0x1f')](handleError(_0x32ca09,null));};exports[_0xf5f2('0x12b')]=function(_0xd1166a,_0x2a0f21){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0xd1166a[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x2a0f21,null))[_0xf5f2('0x15')](function(_0x393b0c){if(_0x393b0c){return _0x393b0c[_0xf5f2('0x12b')](_0xd1166a['body'][_0xf5f2('0x5d')],_[_0xf5f2('0x5e')](_0xd1166a['body'],[_0xf5f2('0x5d'),'id'])||{})['spread'](function(){for(var _0x567a5b=0x0;_0x567a5b<_0xd1166a['body'][_0xf5f2('0x5d')]['length'];_0x567a5b+=0x1){socket['emit'](_0xf5f2('0x12c'),{'ChatInteractionId':Number(_0xd1166a[_0xf5f2('0x59')][_0xf5f2('0x5d')][_0x567a5b]),'UserId':Number(_0xd1166a[_0xf5f2('0x5a')]['id'])});}return _0xd1166a['body'][_0xf5f2('0x5d')];});}})[_0xf5f2('0x15')](respondWithResult(_0x2a0f21,null))['catch'](handleError(_0x2a0f21,null));};exports[_0xf5f2('0x12d')]=function(_0x8efdbe,_0x542df3){return db['User']['find']({'where':{'id':_0x8efdbe[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x542df3,null))[_0xf5f2('0x15')](function(_0x2e272a){if(_0x2e272a){return _0x2e272a[_0xf5f2('0x12d')](_0x8efdbe['query'][_0xf5f2('0x5d')])['then'](function(){if(_[_0xf5f2('0xb2')](_0x8efdbe[_0xf5f2('0x43')][_0xf5f2('0x5d')])){for(var _0x544eff=0x0;_0x544eff<_0x8efdbe['query']['ids'][_0xf5f2('0x49')];_0x544eff+=0x1){socket[_0xf5f2('0xa7')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x8efdbe['query'][_0xf5f2('0x5d')][_0x544eff]),'UserId':Number(_0x8efdbe[_0xf5f2('0x5a')]['id'])});}}else{socket[_0xf5f2('0xa7')](_0xf5f2('0x12e'),{'ChatInteractionId':Number(_0x8efdbe[_0xf5f2('0x43')]['ids']),'UserId':Number(_0x8efdbe[_0xf5f2('0x5a')]['id'])});}});}})[_0xf5f2('0x15')](respondWithStatusCode(_0x542df3,null))[_0xf5f2('0x1f')](handleError(_0x542df3,null));};exports[_0xf5f2('0x12f')]=function(_0x535549,_0x1227e6){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x535549['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x1227e6,null))[_0xf5f2('0x15')](function(_0x1fe412){if(_0x1fe412){return _0x1fe412[_0xf5f2('0x12f')](_0x535549['body']['ids'],_[_0xf5f2('0x5e')](_0x535549[_0xf5f2('0x59')],[_0xf5f2('0x5d'),'id'])||{})['spread'](function(){for(var _0x2f3a66=0x0;_0x2f3a66<_0x535549[_0xf5f2('0x59')][_0xf5f2('0x5d')][_0xf5f2('0x49')];_0x2f3a66+=0x1){socket['emit']('user_has_mail_interactions:save',{'MailInteractionId':Number(_0x535549[_0xf5f2('0x59')][_0xf5f2('0x5d')][_0x2f3a66]),'UserId':Number(_0x535549[_0xf5f2('0x5a')]['id'])});}return _0x535549[_0xf5f2('0x59')]['ids'];});}})[_0xf5f2('0x15')](respondWithResult(_0x1227e6,null))['catch'](handleError(_0x1227e6,null));};exports[_0xf5f2('0x130')]=function(_0x1fd9d4,_0x30f689){return db[_0xf5f2('0x3b')]['find']({'where':{'id':_0x1fd9d4[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x30f689,null))[_0xf5f2('0x15')](function(_0x2da7e7){if(_0x2da7e7){return _0x2da7e7['removeMailInteractions'](_0x1fd9d4[_0xf5f2('0x43')][_0xf5f2('0x5d')])[_0xf5f2('0x15')](function(){if(_[_0xf5f2('0xb2')](_0x1fd9d4[_0xf5f2('0x43')][_0xf5f2('0x5d')])){for(var _0x154d7f=0x0;_0x154d7f<_0x1fd9d4[_0xf5f2('0x43')]['ids'][_0xf5f2('0x49')];_0x154d7f+=0x1){socket[_0xf5f2('0xa7')](_0xf5f2('0x131'),{'MailInteractionId':Number(_0x1fd9d4[_0xf5f2('0x43')]['ids'][_0x154d7f]),'UserId':Number(_0x1fd9d4[_0xf5f2('0x5a')]['id'])});}}else{socket[_0xf5f2('0xa7')](_0xf5f2('0x131'),{'MailInteractionId':Number(_0x1fd9d4[_0xf5f2('0x43')][_0xf5f2('0x5d')]),'UserId':Number(_0x1fd9d4[_0xf5f2('0x5a')]['id'])});}});}})['then'](respondWithStatusCode(_0x30f689,null))['catch'](handleError(_0x30f689,null));};exports[_0xf5f2('0x132')]=function(_0x380e9a,_0x2d6951){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x380e9a[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x2d6951,null))[_0xf5f2('0x15')](function(_0x2af22e){if(_0x2af22e){return _0x2af22e[_0xf5f2('0x132')](_0x380e9a[_0xf5f2('0x59')][_0xf5f2('0x5d')],_['omit'](_0x380e9a[_0xf5f2('0x59')],['ids','id'])||{})[_0xf5f2('0x133')](function(){for(var _0x4b99f8=0x0;_0x4b99f8<_0x380e9a[_0xf5f2('0x59')][_0xf5f2('0x5d')]['length'];_0x4b99f8+=0x1){socket[_0xf5f2('0xa7')](_0xf5f2('0x134'),{'FaxInteractionId':Number(_0x380e9a['body']['ids'][_0x4b99f8]),'UserId':Number(_0x380e9a[_0xf5f2('0x5a')]['id'])});}return _0x380e9a[_0xf5f2('0x59')][_0xf5f2('0x5d')];});}})['then'](respondWithResult(_0x2d6951,null))[_0xf5f2('0x1f')](handleError(_0x2d6951,null));};exports[_0xf5f2('0x135')]=function(_0x5e1623,_0xaebfa8){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x5e1623[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0xaebfa8,null))[_0xf5f2('0x15')](function(_0x48d544){if(_0x48d544){return _0x48d544[_0xf5f2('0x135')](_0x5e1623[_0xf5f2('0x43')]['ids'])['then'](function(){if(_[_0xf5f2('0xb2')](_0x5e1623['query'][_0xf5f2('0x5d')])){for(var _0x42d35b=0x0;_0x42d35b<_0x5e1623['query']['ids'][_0xf5f2('0x49')];_0x42d35b+=0x1){socket['emit'](_0xf5f2('0x136'),{'FaxInteractionId':Number(_0x5e1623['query'][_0xf5f2('0x5d')][_0x42d35b]),'UserId':Number(_0x5e1623[_0xf5f2('0x5a')]['id'])});}}else{socket[_0xf5f2('0xa7')](_0xf5f2('0x136'),{'FaxInteractionId':Number(_0x5e1623[_0xf5f2('0x43')][_0xf5f2('0x5d')]),'UserId':Number(_0x5e1623['params']['id'])});}});}})[_0xf5f2('0x15')](respondWithStatusCode(_0xaebfa8,null))[_0xf5f2('0x1f')](handleError(_0xaebfa8,null));};exports[_0xf5f2('0x137')]=function(_0x364603,_0x22a98e){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x364603['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x22a98e,null))['then'](function(_0x9f404b){if(_0x9f404b){return _0x9f404b[_0xf5f2('0x137')](_0x364603[_0xf5f2('0x59')][_0xf5f2('0x5d')],_['omit'](_0x364603[_0xf5f2('0x59')],[_0xf5f2('0x5d'),'id'])||{})[_0xf5f2('0x133')](function(){for(var _0x2379d7=0x0;_0x2379d7<_0x364603[_0xf5f2('0x59')][_0xf5f2('0x5d')][_0xf5f2('0x49')];_0x2379d7+=0x1){socket[_0xf5f2('0xa7')]('user_has_sms_interactions:save',{'SmsInteractionId':Number(_0x364603[_0xf5f2('0x59')][_0xf5f2('0x5d')][_0x2379d7]),'UserId':Number(_0x364603[_0xf5f2('0x5a')]['id'])});}return _0x364603[_0xf5f2('0x59')][_0xf5f2('0x5d')];});}})['then'](respondWithResult(_0x22a98e,null))['catch'](handleError(_0x22a98e,null));};exports[_0xf5f2('0x138')]=function(_0x4a7d7e,_0x14a4ba){return db['User'][_0xf5f2('0x37')]({'where':{'id':_0x4a7d7e['params']['id']}})['then'](handleEntityNotFound(_0x14a4ba,null))['then'](function(_0x3434b6){if(_0x3434b6){return _0x3434b6['removeSmsInteractions'](_0x4a7d7e[_0xf5f2('0x43')]['ids'])[_0xf5f2('0x15')](function(){if(_['isArray'](_0x4a7d7e[_0xf5f2('0x43')][_0xf5f2('0x5d')])){for(var _0x56d2a6=0x0;_0x56d2a6<_0x4a7d7e[_0xf5f2('0x43')][_0xf5f2('0x5d')][_0xf5f2('0x49')];_0x56d2a6+=0x1){socket['emit'](_0xf5f2('0x139'),{'SmsInteractionId':Number(_0x4a7d7e[_0xf5f2('0x43')][_0xf5f2('0x5d')][_0x56d2a6]),'UserId':Number(_0x4a7d7e[_0xf5f2('0x5a')]['id'])});}}else{socket[_0xf5f2('0xa7')](_0xf5f2('0x139'),{'SmsInteractionId':Number(_0x4a7d7e[_0xf5f2('0x43')][_0xf5f2('0x5d')]),'UserId':Number(_0x4a7d7e[_0xf5f2('0x5a')]['id'])});}});}})[_0xf5f2('0x15')](respondWithStatusCode(_0x14a4ba,null))[_0xf5f2('0x1f')](handleError(_0x14a4ba,null));};exports[_0xf5f2('0x13a')]=function(_0x15a8d8,_0x34d01e){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x15a8d8['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x34d01e,null))[_0xf5f2('0x15')](function(_0x39fd4c){if(_0x39fd4c){return _0x39fd4c[_0xf5f2('0x13a')](_0x15a8d8[_0xf5f2('0x59')][_0xf5f2('0x5d')],_[_0xf5f2('0x5e')](_0x15a8d8[_0xf5f2('0x59')],[_0xf5f2('0x5d'),'id'])||{})[_0xf5f2('0x133')](function(){for(var _0x16dbf0=0x0;_0x16dbf0<_0x15a8d8['body']['ids'][_0xf5f2('0x49')];_0x16dbf0+=0x1){socket['emit'](_0xf5f2('0x13b'),{'OpenchannelInteractionId':Number(_0x15a8d8[_0xf5f2('0x59')]['ids'][_0x16dbf0]),'UserId':Number(_0x15a8d8[_0xf5f2('0x5a')]['id'])});}return _0x15a8d8['body'][_0xf5f2('0x5d')];});}})['then'](respondWithResult(_0x34d01e,null))[_0xf5f2('0x1f')](handleError(_0x34d01e,null));};exports[_0xf5f2('0x13c')]=function(_0x79bed6,_0xf8e2d7){return db['User'][_0xf5f2('0x37')]({'where':{'id':_0x79bed6[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0xf8e2d7,null))['then'](function(_0x4f256d){if(_0x4f256d){return _0x4f256d[_0xf5f2('0x13c')](_0x79bed6['query']['ids'])['then'](function(){if(_[_0xf5f2('0xb2')](_0x79bed6['query'][_0xf5f2('0x5d')])){for(var _0x1e7810=0x0;_0x1e7810<_0x79bed6[_0xf5f2('0x43')][_0xf5f2('0x5d')][_0xf5f2('0x49')];_0x1e7810+=0x1){socket[_0xf5f2('0xa7')](_0xf5f2('0x13d'),{'OpenchannelInteractionId':Number(_0x79bed6[_0xf5f2('0x43')][_0xf5f2('0x5d')][_0x1e7810]),'UserId':Number(_0x79bed6[_0xf5f2('0x5a')]['id'])});}}else{socket[_0xf5f2('0xa7')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x79bed6[_0xf5f2('0x43')]['ids']),'UserId':Number(_0x79bed6[_0xf5f2('0x5a')]['id'])});}});}})[_0xf5f2('0x15')](respondWithStatusCode(_0xf8e2d7,null))[_0xf5f2('0x1f')](handleError(_0xf8e2d7,null));};exports[_0xf5f2('0x13e')]=function(_0x4c30a3,_0x46f277){return db['User']['find']({'where':{'id':_0x4c30a3[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x46f277,null))['then'](function(_0x2441d8){if(_0x2441d8){return _0x2441d8['addWhatsappInteractions'](_0x4c30a3[_0xf5f2('0x59')][_0xf5f2('0x5d')],_['omit'](_0x4c30a3[_0xf5f2('0x59')],[_0xf5f2('0x5d'),'id'])||{})['spread'](function(){for(var _0x27bc7a=0x0;_0x27bc7a<_0x4c30a3['body'][_0xf5f2('0x5d')][_0xf5f2('0x49')];_0x27bc7a+=0x1){socket[_0xf5f2('0xa7')](_0xf5f2('0x13f'),{'WhatsappInteractionId':Number(_0x4c30a3[_0xf5f2('0x59')][_0xf5f2('0x5d')][_0x27bc7a]),'UserId':Number(_0x4c30a3[_0xf5f2('0x5a')]['id'])});}return _0x4c30a3['body'][_0xf5f2('0x5d')];});}})['then'](respondWithResult(_0x46f277,null))[_0xf5f2('0x1f')](handleError(_0x46f277,null));};exports[_0xf5f2('0x140')]=function(_0x46d313,_0x9fd15c){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x46d313[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x9fd15c,null))[_0xf5f2('0x15')](function(_0x194fd0){if(_0x194fd0){return _0x194fd0[_0xf5f2('0x140')](_0x46d313[_0xf5f2('0x43')]['ids']);}})[_0xf5f2('0x15')](respondWithStatusCode(_0x9fd15c,null))[_0xf5f2('0x1f')](handleError(_0x9fd15c,null));};exports['getVoicePrefixes']=function(_0x57c09f,_0x3ffc04){var _0x107578={};var _0x1e436b={};var _0x2bfac1;var _0x5c3919;return db[_0xf5f2('0x3b')]['findOne']({'where':{'id':_0x57c09f['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x3ffc04,null))[_0xf5f2('0x15')](function(_0x24c740){if(_0x24c740){_0x2bfac1=_0x24c740;_0x1e436b[_0xf5f2('0x52')]=_['keys'](db['VoicePrefix'][_0xf5f2('0x3c')]);_0x1e436b['query']=_[_0xf5f2('0xcb')](_0x57c09f[_0xf5f2('0x43')]);_0x1e436b[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x1e436b[_0xf5f2('0x52')],_0x1e436b[_0xf5f2('0x43')]);_0x107578[_0xf5f2('0x45')]=_['intersection'](_0x1e436b[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x57c09f[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x107578[_0xf5f2('0x45')]=_0x107578[_0xf5f2('0x45')]['length']?_0x107578['attributes']:_0x1e436b[_0xf5f2('0x52')];_0x107578[_0xf5f2('0xcc')]=qs['sort'](_0x57c09f['query'][_0xf5f2('0xcd')]);_0x107578[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x57c09f['query'],_0x1e436b[_0xf5f2('0x54')]));if(_0x57c09f[_0xf5f2('0x43')][_0xf5f2('0x31')]){_0x107578[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x107578[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x107578[_0xf5f2('0x45')],function(_0x24a1f5){var _0x2da6f6={};_0x2da6f6[_0x24a1f5]={'$like':'%'+_0x57c09f[_0xf5f2('0x43')]['filter']+'%'};return _0x2da6f6;})});}_0x107578=_[_0xf5f2('0x58')]({},_0x107578,_0x57c09f[_0xf5f2('0xcf')]);return _0x2bfac1['getVoicePrefixes'](_0x107578);}})[_0xf5f2('0x15')](function(_0x10f388){if(_0x10f388){_0x5c3919=_0x10f388['length'];if(!_0x57c09f[_0xf5f2('0x43')][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x107578[_0xf5f2('0x26')]=qs['limit'](_0x57c09f[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x107578[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x57c09f[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x2bfac1[_0xf5f2('0x141')](_0x107578);}})[_0xf5f2('0x15')](function(_0x2d24ed){if(_0x2d24ed){return _0x2d24ed?{'count':_0x5c3919,'rows':_0x2d24ed}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x3ffc04,null))['catch'](handleError(_0x3ffc04,null));};exports[_0xf5f2('0x142')]=function(_0x53567b,_0x2023e4){var _0x5db4b7={};var _0x7cc403={};var _0x383563;var _0x40ab86;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x53567b[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2023e4,null))['then'](function(_0x42c685){if(_0x42c685){_0x383563=_0x42c685;_0x7cc403[_0xf5f2('0x52')]=_['keys'](db[_0xf5f2('0x143')]['rawAttributes']);_0x7cc403[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x53567b[_0xf5f2('0x43')]);_0x7cc403[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x7cc403[_0xf5f2('0x52')],_0x7cc403[_0xf5f2('0x43')]);_0x5db4b7[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x7cc403[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x53567b[_0xf5f2('0x43')]['fields']));_0x5db4b7[_0xf5f2('0x45')]=_0x5db4b7[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x5db4b7[_0xf5f2('0x45')]:_0x7cc403[_0xf5f2('0x52')];_0x5db4b7['order']=qs[_0xf5f2('0xcd')](_0x53567b[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x5db4b7['where']=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x53567b[_0xf5f2('0x43')],_0x7cc403[_0xf5f2('0x54')]));if(_0x53567b['query'][_0xf5f2('0x31')]){_0x5db4b7[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x5db4b7[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x5db4b7[_0xf5f2('0x45')],function(_0x145d48){var _0x3e54a0={};_0x3e54a0[_0x145d48]={'$like':'%'+_0x53567b['query'][_0xf5f2('0x31')]+'%'};return _0x3e54a0;})});}_0x5db4b7=_['merge']({},_0x5db4b7,_0x53567b[_0xf5f2('0xcf')]);return _0x383563['getFaxAccounts'](_0x5db4b7);}})['then'](function(_0x193de7){if(_0x193de7){_0x40ab86=_0x193de7[_0xf5f2('0x49')];if(!_0x53567b[_0xf5f2('0x43')][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x5db4b7[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x53567b[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x5db4b7['offset']=qs[_0xf5f2('0x24')](_0x53567b[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x383563[_0xf5f2('0x142')](_0x5db4b7);}})[_0xf5f2('0x15')](function(_0x5e1cb1){if(_0x5e1cb1){return _0x5e1cb1?{'count':_0x40ab86,'rows':_0x5e1cb1}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x2023e4,null))[_0xf5f2('0x1f')](handleError(_0x2023e4,null));};exports[_0xf5f2('0x144')]=function(_0x17b001,_0x5d414f){return db['User'][_0xf5f2('0x37')]({'where':{'id':_0x17b001['params']['id']}})['then'](handleEntityNotFound(_0x5d414f,null))[_0xf5f2('0x15')](function(_0x11165d){if(_0x11165d){return _0x11165d[_0xf5f2('0x144')](_0x17b001[_0xf5f2('0x59')]['ids'],_[_0xf5f2('0x5e')](_0x17b001[_0xf5f2('0x59')],['ids','id'])||{});}})[_0xf5f2('0x15')](respondWithResult(_0x5d414f,null))[_0xf5f2('0x1f')](handleError(_0x5d414f,null));};exports[_0xf5f2('0x145')]=function(_0x2abc6b,_0xb5b3b0){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x2abc6b[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0xb5b3b0,null))[_0xf5f2('0x15')](function(_0x5da960){if(_0x5da960){return _0x5da960[_0xf5f2('0x145')](_0x2abc6b['query'][_0xf5f2('0x5d')]);}})[_0xf5f2('0x15')](respondWithStatusCode(_0xb5b3b0,null))['catch'](handleError(_0xb5b3b0,null));};exports[_0xf5f2('0x146')]=function(_0x5a55ba,_0xc8ad75){var _0x1491de={};var _0x3c55c3={};var _0x23e263;var _0x158c61;return db['User'][_0xf5f2('0x95')]({'where':{'id':_0x5a55ba['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0xc8ad75,null))[_0xf5f2('0x15')](function(_0x2704d3){if(_0x2704d3){_0x23e263=_0x2704d3;_0x3c55c3[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db[_0xf5f2('0x147')][_0xf5f2('0x3c')]);_0x3c55c3[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x5a55ba[_0xf5f2('0x43')]);_0x3c55c3[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x3c55c3['model'],_0x3c55c3[_0xf5f2('0x43')]);_0x1491de['attributes']=_[_0xf5f2('0x55')](_0x3c55c3['model'],qs[_0xf5f2('0x56')](_0x5a55ba['query'][_0xf5f2('0x56')]));_0x1491de[_0xf5f2('0x45')]=_0x1491de[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x1491de[_0xf5f2('0x45')]:_0x3c55c3[_0xf5f2('0x52')];_0x1491de['order']=qs[_0xf5f2('0xcd')](_0x5a55ba['query'][_0xf5f2('0xcd')]);_0x1491de[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x5a55ba[_0xf5f2('0x43')],_0x3c55c3[_0xf5f2('0x54')]));if(_0x5a55ba[_0xf5f2('0x43')]['filter']){_0x1491de[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x1491de[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x1491de[_0xf5f2('0x45')],function(_0x557f82){var _0x1f6be5={};_0x1f6be5[_0x557f82]={'$like':'%'+_0x5a55ba[_0xf5f2('0x43')]['filter']+'%'};return _0x1f6be5;})});}_0x1491de=_[_0xf5f2('0x58')]({},_0x1491de,_0x5a55ba[_0xf5f2('0xcf')]);return _0x23e263[_0xf5f2('0x146')](_0x1491de);}})[_0xf5f2('0x15')](function(_0x455926){if(_0x455926){_0x158c61=_0x455926[_0xf5f2('0x49')];if(!_0x5a55ba[_0xf5f2('0x43')]['hasOwnProperty'](_0xf5f2('0xd7'))){_0x1491de[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x5a55ba[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x1491de[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x5a55ba[_0xf5f2('0x43')]['offset']);}return _0x23e263[_0xf5f2('0x146')](_0x1491de);}})['then'](function(_0x54c9ba){if(_0x54c9ba){return _0x54c9ba?{'count':_0x158c61,'rows':_0x54c9ba}:null;}})['then'](respondWithResult(_0xc8ad75,null))[_0xf5f2('0x1f')](handleError(_0xc8ad75,null));};exports[_0xf5f2('0x148')]=function(_0x1f507b,_0x4889bc){return db['User'][_0xf5f2('0x37')]({'where':{'id':_0x1f507b[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x4889bc,null))[_0xf5f2('0x15')](function(_0x1ee1fe){if(_0x1ee1fe){return _0x1ee1fe[_0xf5f2('0x148')](_0x1f507b[_0xf5f2('0x59')][_0xf5f2('0x5d')],_[_0xf5f2('0x5e')](_0x1f507b[_0xf5f2('0x59')],[_0xf5f2('0x5d'),'id'])||{});}})[_0xf5f2('0x15')](respondWithResult(_0x4889bc,null))[_0xf5f2('0x1f')](handleError(_0x4889bc,null));};exports[_0xf5f2('0x149')]=function(_0x1248bf,_0x432dc7){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x1248bf[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x432dc7,null))['then'](function(_0x3585af){if(_0x3585af){return _0x3585af[_0xf5f2('0x149')](_0x1248bf[_0xf5f2('0x43')][_0xf5f2('0x5d')]);}})[_0xf5f2('0x15')](respondWithStatusCode(_0x432dc7,null))[_0xf5f2('0x1f')](handleError(_0x432dc7,null));};exports[_0xf5f2('0x14a')]=function(_0x38e9a7,_0xf07f58){var _0x49e9d0={};var _0x40ab51={};var _0x30f5ff;var _0x3e96c7;return db[_0xf5f2('0x3b')]['findOne']({'where':{'id':_0x38e9a7[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0xf07f58,null))[_0xf5f2('0x15')](function(_0x239478){if(_0x239478){_0x30f5ff=_0x239478;_0x40ab51[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db[_0xf5f2('0x14b')]['rawAttributes']);_0x40ab51[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x38e9a7[_0xf5f2('0x43')]);_0x40ab51[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x40ab51[_0xf5f2('0x52')],_0x40ab51['query']);_0x49e9d0[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x40ab51[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x38e9a7[_0xf5f2('0x43')]['fields']));_0x49e9d0[_0xf5f2('0x45')]=_0x49e9d0[_0xf5f2('0x45')]['length']?_0x49e9d0['attributes']:_0x40ab51['model'];_0x49e9d0[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x38e9a7[_0xf5f2('0x43')]['sort']);_0x49e9d0[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x38e9a7['query'],_0x40ab51['filters']));if(_0x38e9a7['query'][_0xf5f2('0x31')]){_0x49e9d0[_0xf5f2('0x42')]=_['merge'](_0x49e9d0['where'],{'$or':_['map'](_0x49e9d0['attributes'],function(_0x575e40){var _0xc6b04={};_0xc6b04[_0x575e40]={'$like':'%'+_0x38e9a7[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0xc6b04;})});}_0x49e9d0=_[_0xf5f2('0x58')]({},_0x49e9d0,_0x38e9a7[_0xf5f2('0xcf')]);return _0x30f5ff[_0xf5f2('0x14a')](_0x49e9d0);}})[_0xf5f2('0x15')](function(_0x405ffa){if(_0x405ffa){_0x3e96c7=_0x405ffa[_0xf5f2('0x49')];if(!_0x38e9a7[_0xf5f2('0x43')]['hasOwnProperty']('nolimit')){_0x49e9d0[_0xf5f2('0x26')]=qs['limit'](_0x38e9a7[_0xf5f2('0x43')]['limit']);_0x49e9d0[_0xf5f2('0x24')]=qs['offset'](_0x38e9a7[_0xf5f2('0x43')]['offset']);}return _0x30f5ff[_0xf5f2('0x14a')](_0x49e9d0);}})[_0xf5f2('0x15')](function(_0x170afd){if(_0x170afd){return _0x170afd?{'count':_0x3e96c7,'rows':_0x170afd}:null;}})[_0xf5f2('0x15')](respondWithResult(_0xf07f58,null))[_0xf5f2('0x1f')](handleError(_0xf07f58,null));};exports[_0xf5f2('0x14c')]=function(_0x3b8647,_0x2d5781){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x3b8647['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x2d5781,null))[_0xf5f2('0x15')](function(_0xbdf888){if(_0xbdf888){return _0xbdf888['addOpenchannelAccounts'](_0x3b8647[_0xf5f2('0x59')]['ids'],_[_0xf5f2('0x5e')](_0x3b8647['body'],['ids','id'])||{});}})[_0xf5f2('0x15')](respondWithResult(_0x2d5781,null))[_0xf5f2('0x1f')](handleError(_0x2d5781,null));};exports[_0xf5f2('0x14d')]=function(_0x2bd192,_0x39d19b){return db[_0xf5f2('0x3b')]['find']({'where':{'id':_0x2bd192[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x39d19b,null))[_0xf5f2('0x15')](function(_0x21139b){if(_0x21139b){return _0x21139b[_0xf5f2('0x14d')](_0x2bd192[_0xf5f2('0x43')][_0xf5f2('0x5d')]);}})[_0xf5f2('0x15')](respondWithStatusCode(_0x39d19b,null))['catch'](handleError(_0x39d19b,null));};exports[_0xf5f2('0x14e')]=function(_0x59e77e,_0x26d438){var _0x5e5576={};var _0x4cb6fc={};var _0x5f3c16;var _0x2694f9;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x59e77e['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x26d438,null))[_0xf5f2('0x15')](function(_0x16d024){if(_0x16d024){_0x5f3c16=_0x16d024;_0x4cb6fc[_0xf5f2('0x52')]=_['keys'](db[_0xf5f2('0x14f')][_0xf5f2('0x3c')]);_0x4cb6fc['query']=_[_0xf5f2('0xcb')](_0x59e77e[_0xf5f2('0x43')]);_0x4cb6fc[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x4cb6fc[_0xf5f2('0x52')],_0x4cb6fc[_0xf5f2('0x43')]);_0x5e5576[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x4cb6fc[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x59e77e[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x5e5576[_0xf5f2('0x45')]=_0x5e5576[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x5e5576[_0xf5f2('0x45')]:_0x4cb6fc['model'];_0x5e5576['order']=qs['sort'](_0x59e77e[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x5e5576[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x59e77e[_0xf5f2('0x43')],_0x4cb6fc[_0xf5f2('0x54')]));if(_0x59e77e[_0xf5f2('0x43')][_0xf5f2('0x31')]){_0x5e5576['where']=_[_0xf5f2('0x58')](_0x5e5576['where'],{'$or':_[_0xf5f2('0x33')](_0x5e5576[_0xf5f2('0x45')],function(_0x27da4c){var _0x465d96={};_0x465d96[_0x27da4c]={'$like':'%'+_0x59e77e[_0xf5f2('0x43')]['filter']+'%'};return _0x465d96;})});}_0x5e5576=_[_0xf5f2('0x58')]({},_0x5e5576,_0x59e77e[_0xf5f2('0xcf')]);return _0x5f3c16[_0xf5f2('0x14e')](_0x5e5576);}})[_0xf5f2('0x15')](function(_0x53a20f){if(_0x53a20f){_0x2694f9=_0x53a20f[_0xf5f2('0x49')];if(!_0x59e77e[_0xf5f2('0x43')][_0xf5f2('0xd0')]('nolimit')){_0x5e5576[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x59e77e[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x5e5576['offset']=qs['offset'](_0x59e77e[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x5f3c16[_0xf5f2('0x14e')](_0x5e5576);}})[_0xf5f2('0x15')](function(_0x377588){if(_0x377588){return _0x377588?{'count':_0x2694f9,'rows':_0x377588}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x26d438,null))[_0xf5f2('0x1f')](handleError(_0x26d438,null));};exports[_0xf5f2('0x150')]=function(_0x2b33e2,_0x20d9f4){return db['User'][_0xf5f2('0x37')]({'where':{'id':_0x2b33e2[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x20d9f4,null))[_0xf5f2('0x15')](function(_0x370f45){if(_0x370f45){return _0x370f45[_0xf5f2('0x150')](_0x2b33e2[_0xf5f2('0x59')]['ids'],_['omit'](_0x2b33e2[_0xf5f2('0x59')],[_0xf5f2('0x5d'),'id'])||{});}})[_0xf5f2('0x15')](respondWithResult(_0x20d9f4,null))['catch'](handleError(_0x20d9f4,null));};exports['removeSmsAccounts']=function(_0x30f10c,_0x1ce44a){return db['User']['find']({'where':{'id':_0x30f10c[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x1ce44a,null))['then'](function(_0xc2413e){if(_0xc2413e){return _0xc2413e[_0xf5f2('0x151')](_0x30f10c['query'][_0xf5f2('0x5d')]);}})[_0xf5f2('0x15')](respondWithStatusCode(_0x1ce44a,null))[_0xf5f2('0x1f')](handleError(_0x1ce44a,null));};exports[_0xf5f2('0x152')]=function(_0x15775b,_0x21b2ca){var _0x3197c2={};var _0x3eab38={};var _0x560c8a;var _0x4df92a;return db[_0xf5f2('0x3b')]['findOne']({'where':{'id':_0x15775b[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x21b2ca,null))[_0xf5f2('0x15')](function(_0x586842){if(_0x586842){_0x560c8a=_0x586842;_0x3eab38[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db['ChatWebsite'][_0xf5f2('0x3c')]);_0x3eab38['query']=_[_0xf5f2('0xcb')](_0x15775b[_0xf5f2('0x43')]);_0x3eab38[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x3eab38[_0xf5f2('0x52')],_0x3eab38[_0xf5f2('0x43')]);_0x3197c2[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x3eab38[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x15775b[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x3197c2[_0xf5f2('0x45')]=_0x3197c2['attributes'][_0xf5f2('0x49')]?_0x3197c2[_0xf5f2('0x45')]:_0x3eab38[_0xf5f2('0x52')];_0x3197c2[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x15775b[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x3197c2[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_['pick'](_0x15775b[_0xf5f2('0x43')],_0x3eab38[_0xf5f2('0x54')]));if(_0x15775b[_0xf5f2('0x43')]['filter']){_0x3197c2['where']=_[_0xf5f2('0x58')](_0x3197c2[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x3197c2[_0xf5f2('0x45')],function(_0x2bbe28){var _0xf37ba9={};_0xf37ba9[_0x2bbe28]={'$like':'%'+_0x15775b['query']['filter']+'%'};return _0xf37ba9;})});}_0x3197c2=_[_0xf5f2('0x58')]({},_0x3197c2,_0x15775b['options']);return _0x560c8a['getChatWebsites'](_0x3197c2);}})[_0xf5f2('0x15')](function(_0x185cfc){if(_0x185cfc){_0x4df92a=_0x185cfc[_0xf5f2('0x49')];if(!_0x15775b[_0xf5f2('0x43')]['hasOwnProperty'](_0xf5f2('0xd7'))){_0x3197c2[_0xf5f2('0x26')]=qs['limit'](_0x15775b[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x3197c2['offset']=qs['offset'](_0x15775b[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x560c8a[_0xf5f2('0x152')](_0x3197c2);}})[_0xf5f2('0x15')](function(_0x13d4a8){if(_0x13d4a8){return _0x13d4a8?{'count':_0x4df92a,'rows':_0x13d4a8}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x21b2ca,null))[_0xf5f2('0x1f')](handleError(_0x21b2ca,null));};exports[_0xf5f2('0x153')]=function(_0x554870,_0x14e246){return db[_0xf5f2('0x3b')]['find']({'where':{'id':_0x554870[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x14e246,null))[_0xf5f2('0x15')](function(_0x4d57ff){if(_0x4d57ff){return _0x4d57ff[_0xf5f2('0x153')](_0x554870[_0xf5f2('0x59')][_0xf5f2('0x5d')],_[_0xf5f2('0x5e')](_0x554870[_0xf5f2('0x59')],['ids','id'])||{});}})['then'](respondWithResult(_0x14e246,null))[_0xf5f2('0x1f')](handleError(_0x14e246,null));};exports[_0xf5f2('0x154')]=function(_0x35f0bd,_0x1404f0){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x35f0bd[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x1404f0,null))[_0xf5f2('0x15')](function(_0x3fbcef){if(_0x3fbcef){return _0x3fbcef[_0xf5f2('0x154')](_0x35f0bd[_0xf5f2('0x43')][_0xf5f2('0x5d')]);}})[_0xf5f2('0x15')](respondWithStatusCode(_0x1404f0,null))[_0xf5f2('0x1f')](handleError(_0x1404f0,null));};exports[_0xf5f2('0x155')]=function(_0x2227c0,_0x3b78df){var _0x50d5e3={};var _0x21e03a={};var _0x2b442d;var _0xea3b3a;return db['User']['findOne']({'where':{'id':_0x2227c0[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x3b78df,null))[_0xf5f2('0x15')](function(_0x51ca8e){if(_0x51ca8e){_0x2b442d=_0x51ca8e;_0x21e03a[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db[_0xf5f2('0x156')]['rawAttributes']);_0x21e03a[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x2227c0['query']);_0x21e03a[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x21e03a[_0xf5f2('0x52')],_0x21e03a[_0xf5f2('0x43')]);_0x50d5e3[_0xf5f2('0x45')]=_['intersection'](_0x21e03a['model'],qs[_0xf5f2('0x56')](_0x2227c0[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x50d5e3['attributes']=_0x50d5e3[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x50d5e3[_0xf5f2('0x45')]:_0x21e03a[_0xf5f2('0x52')];_0x50d5e3[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x2227c0[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x50d5e3['where']=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x2227c0[_0xf5f2('0x43')],_0x21e03a[_0xf5f2('0x54')]));if(_0x2227c0[_0xf5f2('0x43')][_0xf5f2('0x31')]){_0x50d5e3[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x50d5e3[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x50d5e3[_0xf5f2('0x45')],function(_0x48658c){var _0x5ad4f4={};_0x5ad4f4[_0x48658c]={'$like':'%'+_0x2227c0['query']['filter']+'%'};return _0x5ad4f4;})});}_0x50d5e3=_[_0xf5f2('0x58')]({},_0x50d5e3,_0x2227c0['options']);return _0x2b442d[_0xf5f2('0x155')](_0x50d5e3);}})[_0xf5f2('0x15')](function(_0x5f3a7d){if(_0x5f3a7d){_0xea3b3a=_0x5f3a7d['length'];if(!_0x2227c0[_0xf5f2('0x43')][_0xf5f2('0xd0')]('nolimit')){_0x50d5e3[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x2227c0[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x50d5e3[_0xf5f2('0x24')]=qs['offset'](_0x2227c0[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x2b442d['getWhatsappAccounts'](_0x50d5e3);}})['then'](function(_0xad30df){if(_0xad30df){return _0xad30df?{'count':_0xea3b3a,'rows':_0xad30df}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x3b78df,null))[_0xf5f2('0x1f')](handleError(_0x3b78df,null));};exports[_0xf5f2('0x157')]=function(_0x2eec63,_0x37d2eb){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x2eec63[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x37d2eb,null))['then'](function(_0x396b32){if(_0x396b32){return _0x396b32[_0xf5f2('0x157')](_0x2eec63['body']['ids'],_['omit'](_0x2eec63['body'],[_0xf5f2('0x5d'),'id'])||{});}})['then'](respondWithResult(_0x37d2eb,null))[_0xf5f2('0x1f')](handleError(_0x37d2eb,null));};exports[_0xf5f2('0x158')]=function(_0x4ea2c7,_0x4e399c){return db[_0xf5f2('0x3b')]['find']({'where':{'id':_0x4ea2c7[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4e399c,null))[_0xf5f2('0x15')](function(_0xb5f1d0){if(_0xb5f1d0){return _0xb5f1d0[_0xf5f2('0x158')](_0x4ea2c7['query'][_0xf5f2('0x5d')]);}})[_0xf5f2('0x15')](respondWithStatusCode(_0x4e399c,null))[_0xf5f2('0x1f')](handleError(_0x4e399c,null));};exports[_0xf5f2('0x159')]=function(_0x12cc6c,_0x48302a){var _0xa0cd4e={};var _0x2b8e44={};var _0x14ff33;var _0x2f3923;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x12cc6c[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x48302a,null))[_0xf5f2('0x15')](function(_0x4a1534){if(_0x4a1534){_0x14ff33=_0x4a1534;_0x2b8e44[_0xf5f2('0x52')]=_['keys'](db[_0xf5f2('0x15a')]['rawAttributes']);_0x2b8e44[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x12cc6c[_0xf5f2('0x43')]);_0x2b8e44[_0xf5f2('0x54')]=_['intersection'](_0x2b8e44[_0xf5f2('0x52')],_0x2b8e44['query']);_0xa0cd4e[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x2b8e44[_0xf5f2('0x52')],qs['fields'](_0x12cc6c[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0xa0cd4e[_0xf5f2('0x45')]=_0xa0cd4e[_0xf5f2('0x45')]['length']?_0xa0cd4e[_0xf5f2('0x45')]:_0x2b8e44[_0xf5f2('0x52')];_0xa0cd4e[_0xf5f2('0xcc')]=qs['sort'](_0x12cc6c['query']['sort']);_0xa0cd4e[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x12cc6c['query'],_0x2b8e44[_0xf5f2('0x54')]));if(_0x12cc6c[_0xf5f2('0x43')][_0xf5f2('0x31')]){_0xa0cd4e[_0xf5f2('0x42')]=_['merge'](_0xa0cd4e['where'],{'$or':_[_0xf5f2('0x33')](_0xa0cd4e[_0xf5f2('0x45')],function(_0x4b27f4){var _0x1ebabe={};_0x1ebabe[_0x4b27f4]={'$like':'%'+_0x12cc6c[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0x1ebabe;})});}_0xa0cd4e=_['merge']({},_0xa0cd4e,_0x12cc6c[_0xf5f2('0xcf')]);return _0x14ff33[_0xf5f2('0x159')](_0xa0cd4e);}})[_0xf5f2('0x15')](function(_0x576f10){if(_0x576f10){_0x2f3923=_0x576f10[_0xf5f2('0x49')];if(!_0x12cc6c[_0xf5f2('0x43')][_0xf5f2('0xd0')]('nolimit')){_0xa0cd4e[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x12cc6c['query'][_0xf5f2('0x26')]);_0xa0cd4e[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x12cc6c[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x14ff33[_0xf5f2('0x159')](_0xa0cd4e);}})[_0xf5f2('0x15')](function(_0x3d09f1){if(_0x3d09f1){return _0x3d09f1?{'count':_0x2f3923,'rows':_0x3d09f1}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x48302a,null))[_0xf5f2('0x1f')](handleError(_0x48302a,null));};exports[_0xf5f2('0x15b')]=function(_0x3986a3,_0x2dc897){return db['User'][_0xf5f2('0x37')]({'where':{'id':_0x3986a3[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x2dc897,null))[_0xf5f2('0x15')](function(_0x47b682){if(_0x47b682){return _0x47b682[_0xf5f2('0x15b')](_0x3986a3[_0xf5f2('0x59')]['ids'],_[_0xf5f2('0x5e')](_0x3986a3[_0xf5f2('0x59')],['ids','id'])||{});}})[_0xf5f2('0x15')](respondWithResult(_0x2dc897,null))[_0xf5f2('0x1f')](handleError(_0x2dc897,null));};exports[_0xf5f2('0x15c')]=function(_0x2918b7,_0x15a02f){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x2918b7[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x15a02f,null))[_0xf5f2('0x15')](function(_0x4384a){if(_0x4384a){return _0x4384a['removeSquareProjects'](_0x2918b7[_0xf5f2('0x43')][_0xf5f2('0x5d')]);}})[_0xf5f2('0x15')](respondWithStatusCode(_0x15a02f,null))[_0xf5f2('0x1f')](handleError(_0x15a02f,null));};exports[_0xf5f2('0x15d')]=function(_0x37cd85,_0x15647e){var _0x2e8c1f={},_0x316f9d={},_0x220158={'count':0x0,'rows':[]};var _0xe2c7e8=db[_0xf5f2('0x15e')]['rawAttributes'];_0x316f9d[_0xf5f2('0x52')]=_['keys'](_0xe2c7e8);_0x316f9d[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x37cd85[_0xf5f2('0x43')]);_0x316f9d[_0xf5f2('0x54')]=_['intersection'](_0x316f9d['model'],_0x316f9d[_0xf5f2('0x43')]);_0x316f9d[_0xf5f2('0x54')]=_[_0xf5f2('0x15f')](_0x316f9d['filters'],[_0xf5f2('0x160'),_0xf5f2('0x161'),'$gt',_0xf5f2('0x162'),_0xf5f2('0x163'),_0xf5f2('0x164'),_0xf5f2('0x165'),_0xf5f2('0x166'),_0xf5f2('0x167'),_0xf5f2('0x168'),_0xf5f2('0x169'),'$in','$notIn',_0xf5f2('0x16a'),_0xf5f2('0x16b'),_0xf5f2('0x16c'),'$notILike',_0xf5f2('0x16a'),'$overlap','$contains',_0xf5f2('0x16d'),_0xf5f2('0x16e')]);_0x2e8c1f['attributes']=_[_0xf5f2('0x55')](_0x316f9d[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x37cd85['query'][_0xf5f2('0x56')]));_0x2e8c1f[_0xf5f2('0x45')]=_0x2e8c1f['attributes']['length']?_0x2e8c1f[_0xf5f2('0x45')]:_0x316f9d[_0xf5f2('0x52')];if(!_0x37cd85[_0xf5f2('0x43')][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x2e8c1f[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x37cd85[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x2e8c1f[_0xf5f2('0x24')]=qs['offset'](_0x37cd85['query'][_0xf5f2('0x24')]);}_0x2e8c1f['order']=qs[_0xf5f2('0xcd')](_0x37cd85['query'][_0xf5f2('0xcd')]);_0x2e8c1f[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x37cd85['query'],_0x316f9d[_0xf5f2('0x54')]));if(_0x37cd85['query']['filter']){_0x2e8c1f[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x2e8c1f['where'],{'$or':_[_0xf5f2('0x33')](_0x2e8c1f[_0xf5f2('0x45')],function(_0x2dbc33){var _0x1e2ad5={};_0x1e2ad5[_0x2dbc33]={'$like':'%'+_0x37cd85['query']['filter']+'%'};return _0x1e2ad5;})});}_0x2e8c1f[_0xf5f2('0x42')]={'$and':[_0x2e8c1f[_0xf5f2('0x42')],{'$or':[{'UserId':_0x37cd85['params']['id']},{'OwnerId':_0x37cd85[_0xf5f2('0x5a')]['id']}]}]};_0x2e8c1f=_[_0xf5f2('0x58')]({},_0x2e8c1f,_0x37cd85['options']);var _0x1ebfb8={'where':_0x2e8c1f['where']};return db[_0xf5f2('0x15e')][_0xf5f2('0x27')](_0x1ebfb8)[_0xf5f2('0x15')](function(_0xd34e6e){_0x220158['count']=_0xd34e6e;if(_0x37cd85[_0xf5f2('0x43')][_0xf5f2('0x44')]){_0x2e8c1f[_0xf5f2('0x57')]=[{'attributes':['id',_0xf5f2('0x16f'),_0xf5f2('0x170'),_0xf5f2('0xeb')],'model':db[_0xf5f2('0x171')],'as':_0xf5f2('0x172')},{'attributes':['id','name','dialActive'],'model':db[_0xf5f2('0xaa')],'as':'Queue'}];}return db['CmHopper'][_0xf5f2('0xab')](_0x2e8c1f);})[_0xf5f2('0x15')](function(_0x46421b){_0x220158[_0xf5f2('0x48')]=_0x46421b;return _0x220158;})[_0xf5f2('0x15')](respondWithFilteredResult(_0x15647e,_0x2e8c1f))[_0xf5f2('0x1f')](handleError(_0x15647e,null));};exports[_0xf5f2('0x173')]=function(_0xfef9fc,_0x18065a){if(!_[_0xf5f2('0x64')](_0xfef9fc['user']['id'])&&(_0xfef9fc[_0xf5f2('0x2d')][_0xf5f2('0x36')]=='admin'||_0xfef9fc[_0xf5f2('0x2d')][_0xf5f2('0x36')]==_0xf5f2('0x2d'))){return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0xfef9fc[_0xf5f2('0x5a')]['id']},'raw':!![]})[_0xf5f2('0x15')](function(_0x469410){return authService[_0xf5f2('0x174')](_0x469410);})['then'](function(_0x314b9d){if(_0x314b9d){return _0x18065a[_0xf5f2('0x21')](0xc8)[_0xf5f2('0x23')]({'api_key':_0x314b9d[_0xf5f2('0x175')]});}else{return _0x18065a[_0xf5f2('0x21')](0xcc)[_0xf5f2('0x23')]({'message':_0xf5f2('0x176')});}})['catch'](handleError(_0x18065a,0x193));}else{return _0x18065a[_0xf5f2('0x21')](0x191)[_0xf5f2('0x23')]({'message':_0xf5f2('0x177')});}};exports[_0xf5f2('0x178')]=function(_0x1c5c07,_0xece647){if(!_[_0xf5f2('0x64')](_0x1c5c07[_0xf5f2('0x2d')]['id'])&&(_0x1c5c07[_0xf5f2('0x2d')][_0xf5f2('0x36')]==_0xf5f2('0x7a')||_0x1c5c07[_0xf5f2('0x2d')][_0xf5f2('0x36')]==_0xf5f2('0x2d'))){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x1c5c07[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](function(_0x1437f2){return authService['generateApiKey'](_0x1437f2);})['then'](function(_0x13e48b){return db['User']['update']({'apiKeyIat':_0x13e48b[_0xf5f2('0x179')],'apiKeyNonce':_0x13e48b[_0xf5f2('0x17a')]},{'where':{'id':_0x1c5c07[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](function(){return _0xece647[_0xf5f2('0x21')](0xc8)[_0xf5f2('0x23')]({'api_key':_0x13e48b[_0xf5f2('0x175')]});});})[_0xf5f2('0x1f')](handleError(_0xece647,0x193));}else{return _0xece647[_0xf5f2('0x21')](0x191)['json']({'message':_0xf5f2('0x177')});}};exports[_0xf5f2('0x17b')]=function(_0x18c252,_0x2e399a){if(!_[_0xf5f2('0x64')](_0x18c252[_0xf5f2('0x2d')]['id'])&&(_0x18c252[_0xf5f2('0x2d')][_0xf5f2('0x36')]=='admin'||_0x18c252['user']['role']=='user')){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x18c252[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x2e399a,null))['then'](function(_0x3c81ff){if(_0x3c81ff&&_0x3c81ff['apiKeyNonce']&&_0x3c81ff[_0xf5f2('0x17c')])return _0x3c81ff;else throw{'message':'API\x20key\x20not\x20available'};})['then'](function(_0x13e759){return db[_0xf5f2('0x3b')][_0xf5f2('0x2a')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x18c252[_0xf5f2('0x5a')]['id']}});})[_0xf5f2('0x15')](respondWithStatusCode(_0x2e399a,0xc8))[_0xf5f2('0x1f')](handleError(_0x2e399a,0x193));}else{return _0x2e399a[_0xf5f2('0x21')](0x191)['json']({'message':_0xf5f2('0x177')});}};exports[_0xf5f2('0x17d')]=function(_0x18b10e,_0x204e4c){var _0x17acef=_0x18b10e[_0xf5f2('0x2d')]['get']({'plain':!![]});if(!_0x17acef){return _0x204e4c['status'](0x191)['send']('Unable\x20to\x20retrieve\x20the\x20current\x20user');}else{return _0x204e4c[_0xf5f2('0x21')](0xc8)[_0xf5f2('0x23')](_0x17acef);}};exports['getPresence']=function(_0x32ec0e,_0x394792){var _0x241985={'offset':0x0},_0x247fa5={'count':0x0,'rows':[]};Promise[_0xf5f2('0x17e')]()[_0xf5f2('0x15')](function(){if(!_0x32ec0e['query'][_0xf5f2('0x31')]&&!_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0x17f')]&&!_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0x180')])return[];return Promise[_0xf5f2('0x17e')]()[_0xf5f2('0x15')](function(){var _0x346efa=[];if(!_[_0xf5f2('0x89')](_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0x17f')])){_0x346efa[_0xf5f2('0x4a')](db[_0xf5f2('0x10f')][_0xf5f2('0xab')]({'attributes':['id',_0xf5f2('0x38')],'where':{'id':_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0x17f')]}}));}if(!_['isEmpty'](_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0x180')])){_0x346efa['push'](db[_0xf5f2('0xaa')][_0xf5f2('0xab')]({'attributes':['id',_0xf5f2('0x38')],'type':_0xf5f2('0x181'),'where':{'id':_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0x180')]}}));}return Promise[_0xf5f2('0x51')](_0x346efa);})[_0xf5f2('0x15')](function(_0x2ea99b){var _0x596c9e=_[_0xf5f2('0x11c')](_0x2ea99b)['map'](function(_0x57d4f6){return _0x57d4f6[_0xf5f2('0x129')]({'attributes':['id',_0xf5f2('0x38'),_0xf5f2('0x5f'),'online'],'raw':!![]});});return Promise[_0xf5f2('0x51')](_0x596c9e);})[_0xf5f2('0x15')](function(_0x6ed3c1){var _0x57e559=_[_0xf5f2('0x11c')](_0x6ed3c1);if(!_0x32ec0e['query'][_0xf5f2('0x31')])return _0x57e559;if(_[_0xf5f2('0x89')](_0x57e559)){return db[_0xf5f2('0x3b')]['findAll']({'attributes':['id',_0xf5f2('0x38'),_0xf5f2('0x5f'),'online'],'where':{'role':_0xf5f2('0x2e'),'$or':[db[_0xf5f2('0x66')][_0xf5f2('0x42')](db[_0xf5f2('0x66')]['fn'](_0xf5f2('0x182'),db['sequelize'][_0xf5f2('0x183')](_0xf5f2('0x38'))),{'$like':'%'+_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0x31')]['toLowerCase']()+'%'}),{'internal':{'$like':'%'+_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'}}]},'raw':!![]});}else{return _(_0x57e559)[_0xf5f2('0x11c')]()['filter'](function(_0x478220){return _0x478220[_0xf5f2('0x38')]['toLowerCase']()[_0xf5f2('0x35')](_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0x31')][_0xf5f2('0xa4')]())||_0x478220[_0xf5f2('0x5f')]['toString']()['includes'](_0x32ec0e['query'][_0xf5f2('0x31')]);})[_0xf5f2('0x34')]();}})[_0xf5f2('0x15')](function(_0x39a75c){var _0x3134cd=_0xf5f2('0x38');var _0x4db609='asc';if(_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0xcd')]){var _0x4db609=_0x32ec0e[_0xf5f2('0x43')]['sort'][0x0]==='-'?_0xf5f2('0x184'):_0xf5f2('0x185');var _0x3134cd=_0x4db609===_0xf5f2('0x185')?_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0xcd')]:_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0xcd')]['substring'](0x1);}return _(_0x39a75c)[_0xf5f2('0x186')]('id')[_0xf5f2('0x187')]([function(_0x3b7161){return _0x3134cd==='name'?_0x3b7161[_0x3134cd][_0xf5f2('0xa4')]():_0x3b7161[_0x3134cd];}],[_0x4db609])[_0xf5f2('0x33')](function(_0x9a3bdd){return _['pick'](_0x9a3bdd,['id',_0xf5f2('0x38'),'internal',_0xf5f2('0x9d')]);})['value']();})[_0xf5f2('0x15')](function(_0x2669ae){return client['request'](_0xf5f2('0x80'),_0x32ec0e)[_0xf5f2('0x15')](function(_0x1a0595){if(_0x1a0595['error'])throw new Error(_0xf5f2('0x188'));var _0x20d102=_0x1a0595[_0xf5f2('0x189')];var _0x5b53a3=jayson[_0xf5f2('0x18a')][_0xf5f2('0x13')]({'port':0x232c});return _0x5b53a3[_0xf5f2('0x14')]('Agents',_0x32ec0e)[_0xf5f2('0x15')](function(_0x27b022){if(_0x27b022[_0xf5f2('0x1b')])throw new Error(_0xf5f2('0x18b'));var _0x3f290c=_0x27b022['result'];return _['merge']({},_0x3f290c,_0x20d102);});})[_0xf5f2('0x15')](function(_0x1f376c){return _[_0xf5f2('0x33')](_0x2669ae,function(_0x16e30c){var _0x471603=_[_0xf5f2('0x37')](_0x1f376c[_0xf5f2('0x48')],['id',_0x16e30c['id']]);if(!_0x471603||!_0x16e30c[_0xf5f2('0x9d')]){_0x16e30c[_0xf5f2('0x21')]=_0xf5f2('0x18c');}else if(_0x471603['voicePause']){_0x16e30c['status']=_0xf5f2('0xff');}else{_0x16e30c[_0xf5f2('0x21')]=_[_0xf5f2('0x35')]([_0xf5f2('0x18d'),_0xf5f2('0x18e'),'unavailable',_0xf5f2('0x18f'),null,undefined],_0x471603[_0xf5f2('0x190')])?_0xf5f2('0x9d'):'busy';}return _0x16e30c;});});});})[_0xf5f2('0x15')](function(_0x41dbf2){if(!_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x241985['limit']=qs[_0xf5f2('0x26')](_0x32ec0e['query'][_0xf5f2('0x26')]||0xa);_0x241985[_0xf5f2('0x24')]=qs['offset'](_0x32ec0e['query'][_0xf5f2('0x24')]);}_0x247fa5[_0xf5f2('0x27')]=_0x41dbf2['length'];_0x247fa5['rows']=_0x241985[_0xf5f2('0x26')]?_0x41dbf2[_0xf5f2('0x191')](_0x241985[_0xf5f2('0x24')],_0x241985[_0xf5f2('0x24')]+_0x241985[_0xf5f2('0x26')]):_0x41dbf2;return _0x247fa5;})[_0xf5f2('0x15')](respondWithFilteredResult(_0x394792,_0x241985))[_0xf5f2('0x1f')](handleError(_0x394792,null));};function get_open_tabs(_0x15835c,_0x3663c5){var _0x5544e4=_0x15835c['charAt'](0x0)['toUpperCase']()+_0x15835c[_0xf5f2('0x191')](0x1);var _0x11a38c={'type':db['Sequelize']['QueryTypes'][_0xf5f2('0x68')],'raw':!![]};return new BPromise(function(_0xcef92b,_0x1755d6){var _0xf22856=squel['select']()['field'](_0xf5f2('0x192')+_0x5544e4+'InteractionId','id')['field'](_0xf5f2('0x193'))[_0xf5f2('0x69')]('user_has_'+_0x15835c+_0xf5f2('0x194'),'ui')['where'](_0xf5f2('0x195'),_0x3663c5['id']);return db[_0xf5f2('0x66')][_0xf5f2('0x43')](_0xf22856[_0xf5f2('0x196')](),_0x11a38c)['then'](function(_0x26aff4){_0x3663c5[_0x5544e4+_0xf5f2('0x197')]=_0x26aff4;_0xcef92b(_0x26aff4);})[_0xf5f2('0x1f')](function(_0x16a565){_0x1755d6(_0x16a565);});});};
\ No newline at end of file
index 50b9231..80743a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdebd=['hook','exports','events','User','setMaxListeners','update','remove','emit'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0xdebd,0x122));var _0xddeb=function(_0x477a23,_0x4ec342){_0x477a23=_0x477a23-0x0;var _0x23977b=_0xdebd[_0x477a23];return _0x23977b;};'use strict';var EventEmitter=require(_0xddeb('0x0'));var User=require('../../mysqldb')['db'][_0xddeb('0x1')];var UserEvents=new EventEmitter();UserEvents[_0xddeb('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xddeb('0x3'),'afterDestroy':_0xddeb('0x4')};function emitEvent(_0x1f8766){return function(_0x34ba2d,_0x1dd9c9,_0xfbdbc9){UserEvents['emit'](_0x1f8766+':'+_0x34ba2d['id'],_0x34ba2d);UserEvents[_0xddeb('0x5')](_0x1f8766,_0x34ba2d);_0xfbdbc9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];User[_0xddeb('0x6')](e,emitEvent(event));}}module[_0xddeb('0x7')]=UserEvents;
\ No newline at end of file
+var _0x6700=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','User'];(function(_0x5ecc5d,_0x38d142){var _0x5b98a3=function(_0x469ad1){while(--_0x469ad1){_0x5ecc5d['push'](_0x5ecc5d['shift']());}};_0x5b98a3(++_0x38d142);}(_0x6700,0x1e8));var _0x0670=function(_0x1d194d,_0x3ee394){_0x1d194d=_0x1d194d-0x0;var _0x273d5b=_0x6700[_0x1d194d];return _0x273d5b;};'use strict';var EventEmitter=require(_0x0670('0x0'));var User=require('../../mysqldb')['db'][_0x0670('0x1')];var UserEvents=new EventEmitter();UserEvents[_0x0670('0x2')](0x0);var events={'afterCreate':_0x0670('0x3'),'afterUpdate':_0x0670('0x4'),'afterDestroy':_0x0670('0x5')};function emitEvent(_0x42c972){return function(_0x590ce8,_0x3b6f0d,_0x340a3e){UserEvents[_0x0670('0x6')](_0x42c972+':'+_0x590ce8['id'],_0x590ce8);UserEvents[_0x0670('0x6')](_0x42c972,_0x590ce8);_0x340a3e(null);};}for(var e in events){if(events[_0x0670('0x7')](e)){var event=events[e];User[_0x0670('0x8')](e,emitEvent(event));}}module[_0x0670('0x9')]=UserEvents;
\ No newline at end of file
index 0b7eec4..f179279 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac46=['internal','concat','catch','models','User','userProfileId','undefined','resolve','find','privacyEnabled','updateMd5Password','updatePassword','changed','UserProfile','then','VoiceExtension','bulkCreate','destroy','chanspy','encryptPassword','password','function','Missing\x20Callback','base64','salt','sha1','toString','pbkdf2','provider','Invalid\x20password','md5secret','bluebird','crypto','util','./user.attributes','google','length','from-sip','format','%s%s','merge','Set','record','push','MixMonitor','auth','ChanSpy','SIP/%s,%s','name','options','join','wav','WAV','gsm','context','system','extensionMonitor','Dial','SIP/%s,,tTxX','Hangup','defaults','findAll'];(function(_0x226c11,_0x14c0a4){var _0x4dc73e=function(_0x17e242){while(--_0x17e242){_0x226c11['push'](_0x226c11['shift']());}};_0x4dc73e(++_0x14c0a4);}(_0xac46,0x9b));var _0x6ac4=function(_0x18a2c7,_0x1544d1){_0x18a2c7=_0x18a2c7-0x0;var _0x1caa63=_0xac46[_0x18a2c7];return _0x1caa63;};'use strict';var BPromise=require(_0x6ac4('0x0'));var crypto=require(_0x6ac4('0x1'));var util=require(_0x6ac4('0x2'));var md5=require('md5');var _=require('lodash');var attributes=require(_0x6ac4('0x3'));var authTypes=[_0x6ac4('0x4')];var validatePresenceOf=function(_0x2cf805){return _0x2cf805&&_0x2cf805[_0x6ac4('0x5')];};var getChanSpyApplications=function(_0x479c17,_0x3be28f,_0x1399f9){var _0x52245d={'context':_0x479c17['context']||_0x6ac4('0x6'),'type':'system','isApp':![],'UserId':_0x479c17['id']};var _0x12c466=[];for(var _0x1f5785=0x0,_0x26974a=0x1;_0x1f5785<_0x1399f9[_0x6ac4('0x5')];_0x1f5785++,_0x26974a=0x1){var _0x5a3ac0={'exten':util[_0x6ac4('0x7')](_0x6ac4('0x8'),_0x1399f9[_0x1f5785]['prefix'],_0x3be28f),'ChanSpyId':_0x1399f9[_0x1f5785]['id']};_0x12c466['push'](_[_0x6ac4('0x9')]({'app':_0x6ac4('0xa'),'appdata':util[_0x6ac4('0x7')]('CDR(type)=%s','chanspy'),'priority':_0x26974a++},_0x52245d,_0x5a3ac0));if(_0x1399f9[_0x1f5785][_0x6ac4('0xb')]){_0x12c466[_0x6ac4('0xc')](_[_0x6ac4('0x9')]({'app':_0x6ac4('0xd'),'appdata':util['format']('${UNIQUEID}.%s,a',_0x1399f9[_0x1f5785]['recordingFormat']),'priority':_0x26974a++},_0x52245d,_0x5a3ac0));}if(_0x1399f9[_0x1f5785][_0x6ac4('0xe')]){_0x12c466[_0x6ac4('0xc')](_['merge']({'app':'Authenticate','appdata':_0x1399f9[_0x1f5785]['password'],'priority':_0x26974a++},_0x52245d,_0x5a3ac0));}_0x12c466['push'](_[_0x6ac4('0x9')]({'app':_0x6ac4('0xf'),'appdata':util[_0x6ac4('0x7')](_0x6ac4('0x10'),_0x479c17[_0x6ac4('0x11')],_0x1399f9[_0x1f5785]['options']?_0x1399f9[_0x1f5785][_0x6ac4('0x12')][_0x6ac4('0x13')](''):''),'priority':_0x26974a++},_0x52245d,_0x5a3ac0));if(_0x1399f9[_0x1f5785][_0x6ac4('0xb')]){_0x12c466[_0x6ac4('0xc')](_[_0x6ac4('0x9')]({'app':'StopMixMonitor','priority':_0x26974a++},_0x52245d,_0x5a3ac0));}}return _0x12c466;};var getUserApplications=function(_0x1c3921,_0x2abac9){var _0x14df56=[_0x6ac4('0x14'),_0x6ac4('0x15'),_0x6ac4('0x16')];var _0x4cf149={'context':_0x1c3921[_0x6ac4('0x17')]||_0x6ac4('0x6'),'exten':_0x2abac9,'type':_0x6ac4('0x18'),'isApp':![],'UserId':_0x1c3921['id']};var _0x510d08=[{'app':_0x6ac4('0xa'),'appdata':'CDR(type)=internal'}];if(_0x1c3921[_0x6ac4('0x19')]&&_['includes'](_0x14df56,_0x1c3921[_0x6ac4('0x19')])){_0x510d08[_0x6ac4('0xc')]({'app':_0x6ac4('0xa'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x510d08[_0x6ac4('0xc')]({'app':_0x6ac4('0xa'),'appdata':util['format']('_XCALLY_MIXMONITOR_FORMAT=%s',_0x1c3921[_0x6ac4('0x19')])});_0x510d08[_0x6ac4('0xc')]({'app':_0x6ac4('0x1a'),'appdata':util[_0x6ac4('0x7')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x1c3921[_0x6ac4('0x11')])});}else{_0x510d08[_0x6ac4('0xc')]({'app':_0x6ac4('0x1a'),'appdata':util['format'](_0x6ac4('0x1b'),_0x1c3921[_0x6ac4('0x11')])});}_0x510d08['push']({'app':_0x6ac4('0x1c')});for(var _0x28051b=0x0;_0x28051b<_0x510d08['length'];_0x28051b++){_0x510d08[_0x28051b]['priority']=_0x28051b+0x1;_0x510d08[_0x28051b]=_[_0x6ac4('0x1d')](_0x510d08[_0x28051b],_0x4cf149);}return _0x510d08;};var getChanSpyPromise=function(_0x70b0cb,_0x27c652){return new BPromise(function(_0x324f9b,_0x5cebda){return _0x70b0cb['VoiceChanSpy'][_0x6ac4('0x1e')]()['then'](function(_0x4e19cb){if(_0x4e19cb){var _0x1fcb30=getChanSpyApplications(_0x27c652,_0x27c652[_0x6ac4('0x1f')],_0x4e19cb);if(_0x27c652[_0x6ac4('0x1f')]!=_0x27c652[_0x6ac4('0x11')]){_0x1fcb30=_0x1fcb30[_0x6ac4('0x20')](getChanSpyApplications(_0x27c652,_0x27c652[_0x6ac4('0x11')],_0x4e19cb));}return _0x324f9b(_0x1fcb30);}return _0x324f9b([]);})[_0x6ac4('0x21')](function(_0x12d883){_0x5cebda(_0x12d883);});});};module['exports']=function(_0x4d5d15,_0x16c9b7){var _0x4300db=_0x4d5d15[_0x6ac4('0x22')];return _0x4d5d15['define'](_0x6ac4('0x23'),attributes,{'tableName':'users','charset':'utf8','collate':'utf8_bin','hooks':{'beforeCreate':function(_0x2f6629,_0x747931,_0x20aee6){var _0x58a1c6=typeof _0x2f6629[_0x6ac4('0x24')]===_0x6ac4('0x25')?BPromise[_0x6ac4('0x26')](null):_0x4300db['UserProfile'][_0x6ac4('0x27')]({'where':{'id':_0x2f6629['userProfileId']}});_0x58a1c6['then'](function(_0xd37a01){if(_0xd37a01){_0x2f6629['privacyEnabled']=_0xd37a01[_0x6ac4('0x28')];}})['then'](function(){_0x2f6629[_0x6ac4('0x29')]();_0x2f6629[_0x6ac4('0x2a')](_0x20aee6);})[_0x6ac4('0x21')](function(_0x2f9a28){_0x20aee6(_0x2f9a28);});},'beforeUpdate':function(_0x5ef000,_0x345558,_0x15bd80){Promise['resolve']()['then'](function(){if(_0x5ef000[_0x6ac4('0x2b')](_0x6ac4('0x24'))===![])return;return _0x4300db[_0x6ac4('0x2c')][_0x6ac4('0x27')]({'where':{'id':_0x5ef000[_0x6ac4('0x24')]}})[_0x6ac4('0x2d')](function(_0x26acfd){if(_0x26acfd)_0x5ef000[_0x6ac4('0x28')]=_0x26acfd[_0x6ac4('0x28')];return;});})['then'](function(){if(_0x5ef000[_0x6ac4('0x2b')]('password')){_0x5ef000[_0x6ac4('0x29')]();return _0x5ef000['updatePassword'](_0x15bd80);}_0x15bd80();})[_0x6ac4('0x21')](function(_0x4b80f0){_0x15bd80(_0x4b80f0);});},'afterCreate':function(_0x37edb2,_0xf6e7f5,_0x2687bc){var _0x2f3d76=getUserApplications(_0x37edb2,_0x37edb2[_0x6ac4('0x1f')]);if(_0x37edb2[_0x6ac4('0x1f')]!=_0x37edb2[_0x6ac4('0x11')]){_0x2f3d76=_0x2f3d76[_0x6ac4('0x20')](getUserApplications(_0x37edb2,_0x37edb2[_0x6ac4('0x11')]));}return _0x4300db[_0x6ac4('0x2e')][_0x6ac4('0x2f')](_0x2f3d76)[_0x6ac4('0x2d')](function(){if(_0x37edb2['chanspy']){return getChanSpyPromise(_0x4300db,_0x37edb2);}})[_0x6ac4('0x2d')](function(_0x448da7){if(_0x448da7&&_0x448da7[_0x6ac4('0x5')]){return _0x4300db[_0x6ac4('0x2e')][_0x6ac4('0x2f')](_0x448da7);}})['then'](function(){_0x2687bc();})[_0x6ac4('0x21')](function(_0x26e0a3){_0x2687bc(_0x26e0a3);});},'afterUpdate':function(_0x340fba,_0xfd4fce,_0x127183){return BPromise[_0x6ac4('0x26')]()[_0x6ac4('0x2d')](function(){if(_0x340fba[_0x6ac4('0x2b')]('chanspy')||_0x340fba[_0x6ac4('0x2b')](_0x6ac4('0x17'))){return _0x4300db[_0x6ac4('0x2e')][_0x6ac4('0x30')]({'where':{'UserId':_0x340fba['id'],'type':'system','ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x340fba[_0x6ac4('0x31')]){return getChanSpyPromise(_0x4300db,_0x340fba)[_0x6ac4('0x2d')](function(_0x360568){if(_0x360568&&_0x360568[_0x6ac4('0x5')]){return _0x4300db[_0x6ac4('0x2e')][_0x6ac4('0x2f')](_0x360568);}});}});}})[_0x6ac4('0x2d')](function(){if(_0x340fba[_0x6ac4('0x2b')]('extensionMonitor')||_0x340fba[_0x6ac4('0x2b')](_0x6ac4('0x17'))){return _0x4300db[_0x6ac4('0x2e')][_0x6ac4('0x30')]({'where':{'UserId':_0x340fba['id'],'type':'system','ChanSpyId':null}})[_0x6ac4('0x2d')](function(){var _0x30ab83=getUserApplications(_0x340fba,_0x340fba[_0x6ac4('0x1f')]);if(_0x340fba[_0x6ac4('0x1f')]!=_0x340fba[_0x6ac4('0x11')]){_0x30ab83=_0x30ab83[_0x6ac4('0x20')](getUserApplications(_0x340fba,_0x340fba[_0x6ac4('0x11')]));}return _0x4300db[_0x6ac4('0x2e')][_0x6ac4('0x2f')](_0x30ab83);});}})[_0x6ac4('0x2d')](function(){_0x127183();})['catch'](function(_0x21bba7){_0x127183(_0x21bba7);});},'afterDestroy':function(_0x1140e9,_0x8988fb){return _0x4300db[_0x6ac4('0x2e')][_0x6ac4('0x30')]({'where':{'UserId':_0x1140e9['id'],'type':_0x6ac4('0x18')}});}},'instanceMethods':{'authenticate':function(_0x218c7d,_0x3866f){if(!_0x3866f){return this['password']===this[_0x6ac4('0x32')](_0x218c7d);}var _0x166d83=this;this[_0x6ac4('0x32')](_0x218c7d,function(_0x459d6b,_0xd9d8a){if(_0x459d6b){_0x3866f(_0x459d6b);}if(_0x166d83[_0x6ac4('0x33')]===_0xd9d8a){_0x3866f(null,!![]);}else{_0x3866f(null,![]);}});},'makeSalt':function(_0x4f1ab1,_0x570c6e){var _0xdfc5aa=0x10;if(typeof arguments[0x0]==='function'){_0x570c6e=arguments[0x0];_0x4f1ab1=_0xdfc5aa;}else if(typeof arguments[0x1]===_0x6ac4('0x34')){_0x570c6e=arguments[0x1];}else{throw new Error(_0x6ac4('0x35'));}if(!_0x4f1ab1){_0x4f1ab1=_0xdfc5aa;}return crypto['randomBytes'](_0x4f1ab1,function(_0x52aad8,_0x39063a){if(_0x52aad8){_0x570c6e(_0x52aad8);}return _0x570c6e(null,_0x39063a['toString'](_0x6ac4('0x36')));});},'encryptPassword':function(_0x2d55a4,_0x3cb01c){if(!_0x2d55a4||!this[_0x6ac4('0x37')]){return _0x3cb01c?_0x3cb01c(null):null;}var _0x4889c2=0x2710;var _0x5f30ea=0x40;var _0x544774=new Buffer(this[_0x6ac4('0x37')],'base64');if(!_0x3cb01c){return crypto['pbkdf2Sync'](_0x2d55a4,_0x544774,_0x4889c2,_0x5f30ea,_0x6ac4('0x38'))[_0x6ac4('0x39')](_0x6ac4('0x36'));}return crypto[_0x6ac4('0x3a')](_0x2d55a4,_0x544774,_0x4889c2,_0x5f30ea,_0x6ac4('0x38'),function(_0x1aa0df,_0x1b590b){if(_0x1aa0df){_0x3cb01c(_0x1aa0df);}return _0x3cb01c(null,_0x1b590b[_0x6ac4('0x39')](_0x6ac4('0x36')));});},'updatePassword':function(_0x216cd2){if(!this[_0x6ac4('0x33')]){return _0x216cd2(null);}if(!validatePresenceOf(this[_0x6ac4('0x33')])&&authTypes['indexOf'](this[_0x6ac4('0x3b')])===-0x1){_0x216cd2(new Error(_0x6ac4('0x3c')));}var _0x1e5c34=this;this['makeSalt'](function(_0x6939e8,_0x4fb94f){if(_0x6939e8){return _0x216cd2(_0x6939e8);}_0x1e5c34[_0x6ac4('0x37')]=_0x4fb94f;_0x1e5c34[_0x6ac4('0x32')](_0x1e5c34[_0x6ac4('0x33')],function(_0x14e5b5,_0x5ee2a8){if(_0x14e5b5){_0x216cd2(_0x14e5b5);}_0x1e5c34[_0x6ac4('0x33')]=_0x5ee2a8;_0x216cd2(null);});});},'updateMd5Password':function(){this[_0x6ac4('0x3d')]=md5(this[_0x6ac4('0x11')]+':asterisk:'+this[_0x6ac4('0x33')]);return this[_0x6ac4('0x3d')];}}});};
\ No newline at end of file
+var _0xd2df=['options','join','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Hangup','defaults','findAll','then','internal','concat','exports','models','define','User','users','utf8_bin','userProfileId','resolve','UserProfile','find','updatePassword','catch','privacyEnabled','changed','updateMd5Password','VoiceExtension','bulkCreate','destroy','encryptPassword','Missing\x20Callback','toString','salt','base64','pbkdf2Sync','sha1','pbkdf2','indexOf','makeSalt',':asterisk:','md5secret','bluebird','crypto','lodash','google','length','context','from-sip','system','%s%s','prefix','push','merge','Set','format','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','name'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xd2df,0x159));var _0xfd2d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd2df[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0xfd2d('0x0'));var crypto=require(_0xfd2d('0x1'));var util=require('util');var md5=require('md5');var _=require(_0xfd2d('0x2'));var attributes=require('./user.attributes');var authTypes=[_0xfd2d('0x3')];var validatePresenceOf=function(_0x378488){return _0x378488&&_0x378488[_0xfd2d('0x4')];};var getChanSpyApplications=function(_0xe05cb7,_0x44f958,_0x36a8b9){var _0x3fa52d={'context':_0xe05cb7[_0xfd2d('0x5')]||_0xfd2d('0x6'),'type':_0xfd2d('0x7'),'isApp':![],'UserId':_0xe05cb7['id']};var _0x3fb29a=[];for(var _0x57647f=0x0,_0x42c1b6=0x1;_0x57647f<_0x36a8b9['length'];_0x57647f++,_0x42c1b6=0x1){var _0x303735={'exten':util['format'](_0xfd2d('0x8'),_0x36a8b9[_0x57647f][_0xfd2d('0x9')],_0x44f958),'ChanSpyId':_0x36a8b9[_0x57647f]['id']};_0x3fb29a[_0xfd2d('0xa')](_[_0xfd2d('0xb')]({'app':_0xfd2d('0xc'),'appdata':util[_0xfd2d('0xd')](_0xfd2d('0xe'),_0xfd2d('0xf')),'priority':_0x42c1b6++},_0x3fa52d,_0x303735));if(_0x36a8b9[_0x57647f][_0xfd2d('0x10')]){_0x3fb29a['push'](_[_0xfd2d('0xb')]({'app':_0xfd2d('0x11'),'appdata':util['format'](_0xfd2d('0x12'),_0x36a8b9[_0x57647f][_0xfd2d('0x13')]),'priority':_0x42c1b6++},_0x3fa52d,_0x303735));}if(_0x36a8b9[_0x57647f][_0xfd2d('0x14')]){_0x3fb29a['push'](_['merge']({'app':_0xfd2d('0x15'),'appdata':_0x36a8b9[_0x57647f][_0xfd2d('0x16')],'priority':_0x42c1b6++},_0x3fa52d,_0x303735));}_0x3fb29a[_0xfd2d('0xa')](_['merge']({'app':_0xfd2d('0x17'),'appdata':util[_0xfd2d('0xd')]('SIP/%s,%s',_0xe05cb7[_0xfd2d('0x18')],_0x36a8b9[_0x57647f][_0xfd2d('0x19')]?_0x36a8b9[_0x57647f]['options'][_0xfd2d('0x1a')](''):''),'priority':_0x42c1b6++},_0x3fa52d,_0x303735));if(_0x36a8b9[_0x57647f][_0xfd2d('0x10')]){_0x3fb29a[_0xfd2d('0xa')](_['merge']({'app':_0xfd2d('0x1b'),'priority':_0x42c1b6++},_0x3fa52d,_0x303735));}}return _0x3fb29a;};var getUserApplications=function(_0x3f766a,_0x20cf6b){var _0x28331b=[_0xfd2d('0x1c'),_0xfd2d('0x1d'),_0xfd2d('0x1e')];var _0xcb9e3f={'context':_0x3f766a[_0xfd2d('0x5')]||_0xfd2d('0x6'),'exten':_0x20cf6b,'type':_0xfd2d('0x7'),'isApp':![],'UserId':_0x3f766a['id']};var _0x3c6fe7=[{'app':'Set','appdata':_0xfd2d('0x1f')}];if(_0x3f766a[_0xfd2d('0x20')]&&_[_0xfd2d('0x21')](_0x28331b,_0x3f766a['extensionMonitor'])){_0x3c6fe7['push']({'app':_0xfd2d('0xc'),'appdata':_0xfd2d('0x22')});_0x3c6fe7[_0xfd2d('0xa')]({'app':_0xfd2d('0xc'),'appdata':util[_0xfd2d('0xd')](_0xfd2d('0x23'),_0x3f766a[_0xfd2d('0x20')])});_0x3c6fe7['push']({'app':_0xfd2d('0x24'),'appdata':util['format'](_0xfd2d('0x25'),_0x3f766a[_0xfd2d('0x18')])});}else{_0x3c6fe7[_0xfd2d('0xa')]({'app':_0xfd2d('0x24'),'appdata':util[_0xfd2d('0xd')]('SIP/%s,,tTxX',_0x3f766a['name'])});}_0x3c6fe7[_0xfd2d('0xa')]({'app':_0xfd2d('0x26')});for(var _0x1e4c2f=0x0;_0x1e4c2f<_0x3c6fe7[_0xfd2d('0x4')];_0x1e4c2f++){_0x3c6fe7[_0x1e4c2f]['priority']=_0x1e4c2f+0x1;_0x3c6fe7[_0x1e4c2f]=_[_0xfd2d('0x27')](_0x3c6fe7[_0x1e4c2f],_0xcb9e3f);}return _0x3c6fe7;};var getChanSpyPromise=function(_0x2902eb,_0x127392){return new BPromise(function(_0x4375ab,_0x7a0662){return _0x2902eb['VoiceChanSpy'][_0xfd2d('0x28')]()[_0xfd2d('0x29')](function(_0x5586a6){if(_0x5586a6){var _0x23cf61=getChanSpyApplications(_0x127392,_0x127392['internal'],_0x5586a6);if(_0x127392[_0xfd2d('0x2a')]!=_0x127392[_0xfd2d('0x18')]){_0x23cf61=_0x23cf61[_0xfd2d('0x2b')](getChanSpyApplications(_0x127392,_0x127392[_0xfd2d('0x18')],_0x5586a6));}return _0x4375ab(_0x23cf61);}return _0x4375ab([]);})['catch'](function(_0x139d0e){_0x7a0662(_0x139d0e);});});};module[_0xfd2d('0x2c')]=function(_0x258da8,_0x235114){var _0xd67088=_0x258da8[_0xfd2d('0x2d')];return _0x258da8[_0xfd2d('0x2e')](_0xfd2d('0x2f'),attributes,{'tableName':_0xfd2d('0x30'),'charset':'utf8','collate':_0xfd2d('0x31'),'hooks':{'beforeCreate':function(_0x396be5,_0x776e98,_0x3a60ae){var _0x568877=typeof _0x396be5[_0xfd2d('0x32')]==='undefined'?BPromise[_0xfd2d('0x33')](null):_0xd67088[_0xfd2d('0x34')][_0xfd2d('0x35')]({'where':{'id':_0x396be5[_0xfd2d('0x32')]}});_0x568877[_0xfd2d('0x29')](function(_0x98679d){if(_0x98679d){_0x396be5['privacyEnabled']=_0x98679d['privacyEnabled'];}})['then'](function(){_0x396be5['updateMd5Password']();_0x396be5[_0xfd2d('0x36')](_0x3a60ae);})[_0xfd2d('0x37')](function(_0x5aa9d8){_0x3a60ae(_0x5aa9d8);});},'beforeUpdate':function(_0x1cb6f1,_0x49cd8d,_0xa557cb){Promise[_0xfd2d('0x33')]()[_0xfd2d('0x29')](function(){if(_0x1cb6f1['changed'](_0xfd2d('0x32'))===![])return;return _0xd67088['UserProfile'][_0xfd2d('0x35')]({'where':{'id':_0x1cb6f1['userProfileId']}})[_0xfd2d('0x29')](function(_0x5707c2){if(_0x5707c2)_0x1cb6f1[_0xfd2d('0x38')]=_0x5707c2[_0xfd2d('0x38')];return;});})[_0xfd2d('0x29')](function(){if(_0x1cb6f1[_0xfd2d('0x39')](_0xfd2d('0x16'))){_0x1cb6f1[_0xfd2d('0x3a')]();return _0x1cb6f1[_0xfd2d('0x36')](_0xa557cb);}_0xa557cb();})[_0xfd2d('0x37')](function(_0xeec55c){_0xa557cb(_0xeec55c);});},'afterCreate':function(_0x361136,_0x15292e,_0x1c9fad){var _0x27b744=getUserApplications(_0x361136,_0x361136[_0xfd2d('0x2a')]);if(_0x361136[_0xfd2d('0x2a')]!=_0x361136[_0xfd2d('0x18')]){_0x27b744=_0x27b744[_0xfd2d('0x2b')](getUserApplications(_0x361136,_0x361136[_0xfd2d('0x18')]));}return _0xd67088[_0xfd2d('0x3b')][_0xfd2d('0x3c')](_0x27b744)[_0xfd2d('0x29')](function(){if(_0x361136[_0xfd2d('0xf')]){return getChanSpyPromise(_0xd67088,_0x361136);}})[_0xfd2d('0x29')](function(_0x51bbc3){if(_0x51bbc3&&_0x51bbc3[_0xfd2d('0x4')]){return _0xd67088[_0xfd2d('0x3b')]['bulkCreate'](_0x51bbc3);}})[_0xfd2d('0x29')](function(){_0x1c9fad();})[_0xfd2d('0x37')](function(_0x1546ac){_0x1c9fad(_0x1546ac);});},'afterUpdate':function(_0x3c0728,_0x170b26,_0x5c0ddc){return BPromise['resolve']()[_0xfd2d('0x29')](function(){if(_0x3c0728['changed'](_0xfd2d('0xf'))||_0x3c0728['changed'](_0xfd2d('0x5'))){return _0xd67088[_0xfd2d('0x3b')][_0xfd2d('0x3d')]({'where':{'UserId':_0x3c0728['id'],'type':_0xfd2d('0x7'),'ChanSpyId':{'$ne':null}}})[_0xfd2d('0x29')](function(){if(_0x3c0728[_0xfd2d('0xf')]){return getChanSpyPromise(_0xd67088,_0x3c0728)[_0xfd2d('0x29')](function(_0x5709ba){if(_0x5709ba&&_0x5709ba[_0xfd2d('0x4')]){return _0xd67088[_0xfd2d('0x3b')][_0xfd2d('0x3c')](_0x5709ba);}});}});}})[_0xfd2d('0x29')](function(){if(_0x3c0728[_0xfd2d('0x39')]('extensionMonitor')||_0x3c0728[_0xfd2d('0x39')](_0xfd2d('0x5'))){return _0xd67088[_0xfd2d('0x3b')]['destroy']({'where':{'UserId':_0x3c0728['id'],'type':'system','ChanSpyId':null}})['then'](function(){var _0x194f48=getUserApplications(_0x3c0728,_0x3c0728[_0xfd2d('0x2a')]);if(_0x3c0728[_0xfd2d('0x2a')]!=_0x3c0728[_0xfd2d('0x18')]){_0x194f48=_0x194f48[_0xfd2d('0x2b')](getUserApplications(_0x3c0728,_0x3c0728[_0xfd2d('0x18')]));}return _0xd67088[_0xfd2d('0x3b')]['bulkCreate'](_0x194f48);});}})[_0xfd2d('0x29')](function(){_0x5c0ddc();})[_0xfd2d('0x37')](function(_0x44570b){_0x5c0ddc(_0x44570b);});},'afterDestroy':function(_0x241182,_0x19cf2b){return _0xd67088[_0xfd2d('0x3b')][_0xfd2d('0x3d')]({'where':{'UserId':_0x241182['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x11d087,_0x40055b){if(!_0x40055b){return this[_0xfd2d('0x16')]===this['encryptPassword'](_0x11d087);}var _0x408190=this;this[_0xfd2d('0x3e')](_0x11d087,function(_0x1b51d5,_0x3d2dda){if(_0x1b51d5){_0x40055b(_0x1b51d5);}if(_0x408190[_0xfd2d('0x16')]===_0x3d2dda){_0x40055b(null,!![]);}else{_0x40055b(null,![]);}});},'makeSalt':function(_0xbe2600,_0x27b378){var _0x2c6916=0x10;if(typeof arguments[0x0]==='function'){_0x27b378=arguments[0x0];_0xbe2600=_0x2c6916;}else if(typeof arguments[0x1]==='function'){_0x27b378=arguments[0x1];}else{throw new Error(_0xfd2d('0x3f'));}if(!_0xbe2600){_0xbe2600=_0x2c6916;}return crypto['randomBytes'](_0xbe2600,function(_0x48fdf9,_0x6b0b5){if(_0x48fdf9){_0x27b378(_0x48fdf9);}return _0x27b378(null,_0x6b0b5[_0xfd2d('0x40')]('base64'));});},'encryptPassword':function(_0x2d39ea,_0x5e3443){if(!_0x2d39ea||!this[_0xfd2d('0x41')]){return _0x5e3443?_0x5e3443(null):null;}var _0x8af370=0x2710;var _0x5e9fd2=0x40;var _0x328d4c=new Buffer(this[_0xfd2d('0x41')],_0xfd2d('0x42'));if(!_0x5e3443){return crypto[_0xfd2d('0x43')](_0x2d39ea,_0x328d4c,_0x8af370,_0x5e9fd2,_0xfd2d('0x44'))[_0xfd2d('0x40')](_0xfd2d('0x42'));}return crypto[_0xfd2d('0x45')](_0x2d39ea,_0x328d4c,_0x8af370,_0x5e9fd2,'sha1',function(_0x129c14,_0x2a5a1b){if(_0x129c14){_0x5e3443(_0x129c14);}return _0x5e3443(null,_0x2a5a1b[_0xfd2d('0x40')](_0xfd2d('0x42')));});},'updatePassword':function(_0x4e5414){if(!this[_0xfd2d('0x16')]){return _0x4e5414(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0xfd2d('0x46')](this['provider'])===-0x1){_0x4e5414(new Error('Invalid\x20password'));}var _0x1c0e44=this;this[_0xfd2d('0x47')](function(_0x7ffa44,_0x3b6d30){if(_0x7ffa44){return _0x4e5414(_0x7ffa44);}_0x1c0e44['salt']=_0x3b6d30;_0x1c0e44[_0xfd2d('0x3e')](_0x1c0e44[_0xfd2d('0x16')],function(_0x1bfd49,_0x5cd41a){if(_0x1bfd49){_0x4e5414(_0x1bfd49);}_0x1c0e44['password']=_0x5cd41a;_0x4e5414(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this['name']+_0xfd2d('0x48')+this[_0xfd2d('0x16')]);return this[_0xfd2d('0x49')];}}});};
\ No newline at end of file
index 56fceea..1d0d1d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cde=['raw','attributes','limit','include','map','model','GetUser','ShowUser','where','debug','PauseUser','find','name','role','internal','interface','UserVoiceQueueRt','update','MemberReport','PAUSE','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','SIP/%s','body','type','DEFAULT\x20PAUSE','uniqueid','bulkCreate','UnpauseUser','findOne','channel','isValidChannel','Unknown\x20channel','voice','mail','chat','fax','openchannel','system','%s%s','Pause','forEach','push','all','LogoutUser','destroy','phone','loginInPause','agent','../../config/license/util','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','merge','LOGIN','concat','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','./user.socket','register','then','info','User,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','User,\x20%s,\x20%s','result','catch','User','findAll','options'];(function(_0x4ac90a,_0xbda41c){var _0x2103d0=function(_0x81639){while(--_0x81639){_0x4ac90a['push'](_0x4ac90a['shift']());}};_0x2103d0(++_0xbda41c);}(_0x8cde,0x1ad));var _0xe8cd=function(_0x4cbf20,_0x1bfa66){_0x4cbf20=_0x4cbf20-0x0;var _0x582ae4=_0x8cde[_0x4cbf20];return _0x582ae4;};'use strict';var _=require(_0xe8cd('0x0'));var util=require(_0xe8cd('0x1'));var moment=require(_0xe8cd('0x2'));var BPromise=require(_0xe8cd('0x3'));var rs=require(_0xe8cd('0x4'));var fs=require('fs');var Redis=require(_0xe8cd('0x5'));var db=require(_0xe8cd('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xe8cd('0x7'))(_0xe8cd('0x8'));var config=require(_0xe8cd('0x9'));var jayson=require(_0xe8cd('0xa'));var client=jayson[_0xe8cd('0xb')][_0xe8cd('0xc')]({'port':0x232a});config[_0xe8cd('0xd')]=_[_0xe8cd('0xe')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe8cd('0xd')]));require(_0xe8cd('0xf'))[_0xe8cd('0x10')](socket);function respondWithRpcPromise(_0x150711,_0x2b8bb4,_0x483c89){return new BPromise(function(_0x1ef602,_0x450c79){return client['request'](_0x150711,_0x483c89)[_0xe8cd('0x11')](function(_0x3928c0){logger[_0xe8cd('0x12')]('User,\x20%s,\x20%s',_0x2b8bb4,'request\x20sent');logger['debug'](_0xe8cd('0x13'),_0x2b8bb4,_0xe8cd('0x14'),JSON[_0xe8cd('0x15')](_0x3928c0));if(_0x3928c0[_0xe8cd('0x16')]){if(_0x3928c0['error'][_0xe8cd('0x17')]===0x1f4){logger[_0xe8cd('0x16')]('User,\x20%s,\x20%s',_0x2b8bb4,_0x3928c0['error'][_0xe8cd('0x18')]);return _0x450c79(_0x3928c0[_0xe8cd('0x16')]['message']);}logger[_0xe8cd('0x16')](_0xe8cd('0x19'),_0x2b8bb4,_0x3928c0[_0xe8cd('0x16')][_0xe8cd('0x18')]);return _0x1ef602(_0x3928c0[_0xe8cd('0x16')][_0xe8cd('0x18')]);}else{logger[_0xe8cd('0x12')]('User,\x20%s,\x20%s',_0x2b8bb4,'request\x20sent');_0x1ef602(_0x3928c0[_0xe8cd('0x1a')][_0xe8cd('0x18')]);}})[_0xe8cd('0x1b')](function(_0x58d03a){logger[_0xe8cd('0x16')]('User,\x20%s,\x20%s',_0x2b8bb4,_0x58d03a);_0x450c79(_0x58d03a);});});}exports['GetUser']=function(_0x56f2a2){var _0x13dd99=this;return new Promise(function(_0x4aacff,_0x548415){return db[_0xe8cd('0x1c')][_0xe8cd('0x1d')]({'raw':_0x56f2a2[_0xe8cd('0x1e')]?_0x56f2a2[_0xe8cd('0x1e')][_0xe8cd('0x1f')]===undefined?!![]:![]:!![],'where':_0x56f2a2[_0xe8cd('0x1e')]?_0x56f2a2[_0xe8cd('0x1e')]['where']||null:null,'attributes':_0x56f2a2[_0xe8cd('0x1e')]?_0x56f2a2['options'][_0xe8cd('0x20')]||null:null,'limit':_0x56f2a2[_0xe8cd('0x1e')]?_0x56f2a2[_0xe8cd('0x1e')][_0xe8cd('0x21')]||null:null,'include':_0x56f2a2[_0xe8cd('0x1e')]?_0x56f2a2['options'][_0xe8cd('0x22')]?_[_0xe8cd('0x23')](_0x56f2a2['options']['include'],function(_0x576a43){return{'model':db[_0x576a43['model']],'as':_0x576a43['as'],'attributes':_0x576a43[_0xe8cd('0x20')],'include':_0x576a43[_0xe8cd('0x22')]?_[_0xe8cd('0x23')](_0x576a43[_0xe8cd('0x22')],function(_0x294bb2){return{'model':db[_0x294bb2[_0xe8cd('0x24')]],'as':_0x294bb2['as'],'attributes':_0x294bb2[_0xe8cd('0x20')],'include':_0x294bb2[_0xe8cd('0x22')]?_[_0xe8cd('0x23')](_0x294bb2[_0xe8cd('0x22')],function(_0x46fd92){return{'model':db[_0x46fd92[_0xe8cd('0x24')]],'as':_0x46fd92['as'],'attributes':_0x46fd92[_0xe8cd('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x386ce3){logger[_0xe8cd('0x12')]('GetUser',_0x56f2a2);logger['debug'](_0xe8cd('0x25'),_0x56f2a2,JSON[_0xe8cd('0x15')](_0x386ce3));_0x4aacff(_0x386ce3);})[_0xe8cd('0x1b')](function(_0x29ccce){logger['error'](_0xe8cd('0x25'),_0x29ccce['message'],_0x56f2a2);_0x548415(_0x13dd99[_0xe8cd('0x16')](0x1f4,_0x29ccce[_0xe8cd('0x18')]));});});};exports[_0xe8cd('0x26')]=function(_0x50197f){var _0x8e3d3b=this;return new Promise(function(_0x2558e9,_0x45a3a0){return db[_0xe8cd('0x1c')]['find']({'raw':_0x50197f[_0xe8cd('0x1e')]?_0x50197f[_0xe8cd('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x50197f[_0xe8cd('0x1e')]?_0x50197f[_0xe8cd('0x1e')][_0xe8cd('0x27')]||null:null,'attributes':_0x50197f['options']?_0x50197f[_0xe8cd('0x1e')][_0xe8cd('0x20')]||null:null,'include':_0x50197f[_0xe8cd('0x1e')]?_0x50197f[_0xe8cd('0x1e')]['include']?_[_0xe8cd('0x23')](_0x50197f['options'][_0xe8cd('0x22')],function(_0x2b758d){return{'model':db[_0x2b758d[_0xe8cd('0x24')]],'as':_0x2b758d['as'],'attributes':_0x2b758d[_0xe8cd('0x20')],'include':_0x2b758d[_0xe8cd('0x22')]?_['map'](_0x2b758d[_0xe8cd('0x22')],function(_0x2711a8){return{'model':db[_0x2711a8[_0xe8cd('0x24')]],'as':_0x2711a8['as'],'attributes':_0x2711a8[_0xe8cd('0x20')],'include':_0x2711a8[_0xe8cd('0x22')]?_['map'](_0x2711a8[_0xe8cd('0x22')],function(_0x35dfcc){return{'model':db[_0x35dfcc[_0xe8cd('0x24')]],'as':_0x35dfcc['as'],'attributes':_0x35dfcc[_0xe8cd('0x20')]};}):[]};}):[]};}):[]:[]})[_0xe8cd('0x11')](function(_0x1f0bdc){logger[_0xe8cd('0x12')](_0xe8cd('0x26'),_0x50197f);logger[_0xe8cd('0x28')](_0xe8cd('0x26'),_0x50197f,JSON[_0xe8cd('0x15')](_0x1f0bdc));_0x2558e9(_0x1f0bdc);})[_0xe8cd('0x1b')](function(_0x2b7fee){logger[_0xe8cd('0x16')](_0xe8cd('0x26'),_0x2b7fee['message'],_0x50197f);_0x45a3a0(_0x8e3d3b[_0xe8cd('0x16')](0x1f4,_0x2b7fee[_0xe8cd('0x18')]));});});};exports[_0xe8cd('0x29')]=function(_0x21b19d){var _0x4dd195=this;return new Promise(function(_0x1fc7d9,_0x318387){var _0x54262f;return db[_0xe8cd('0x1c')][_0xe8cd('0x2a')]({'where':_0x21b19d[_0xe8cd('0x1e')][_0xe8cd('0x27')]||{},'attributes':['id',_0xe8cd('0x2b'),_0xe8cd('0x2c'),_0xe8cd('0x2d'),_0xe8cd('0x2e')]})['then'](function(_0x13e82f){if(_0x13e82f){_0x54262f=_0x13e82f;return db[_0xe8cd('0x2f')][_0xe8cd('0x30')]({'paused':0x1},{'where':{'UserId':_0x54262f['id']},'individualHooks':!![]});}})[_0xe8cd('0x11')](function(){if(_0x54262f){return db[_0xe8cd('0x31')][_0xe8cd('0x1d')]({'where':{'membername':_0x54262f[_0xe8cd('0x2b')],'type':_0xe8cd('0x32'),'exitAt':null}});}})[_0xe8cd('0x11')](function(_0xc63149){if(_0x54262f){if(_0xc63149&&_0xc63149[_0xe8cd('0x33')]){var _0x19dd38=moment()[_0xe8cd('0x34')](_0xe8cd('0x35'));for(var _0x4b1c29=0x0,_0x192328=_0xc63149[_0xe8cd('0x33')];_0x4b1c29<_0x192328;_0x4b1c29++){_0xc63149[_0x4b1c29][_0xe8cd('0x36')]({'exitAt':_0x19dd38});}}}})['then'](function(){if(_0x54262f){var _0x3851e5=[];var _0x255bdd=utils[_0xe8cd('0x37')]();_0x255bdd['forEach'](function(_0x2ac6e0){_0x3851e5['push']({'channel':_0x2ac6e0,'membername':_0x54262f[_0xe8cd('0x2b')],'interface':_['isNil'](_0x54262f[_0xe8cd('0x2e')])?util[_0xe8cd('0x34')](_0xe8cd('0x38'),_0x54262f[_0xe8cd('0x2b')]):_0x54262f[_0xe8cd('0x2e')],'type':_0xe8cd('0x32'),'enterAt':moment()['format'](_0xe8cd('0x35')),'data1':_0x21b19d[_0xe8cd('0x39')][_0xe8cd('0x3a')]||_0xe8cd('0x3b'),'role':_0x54262f[_0xe8cd('0x2c')],'internal':_0x54262f[_0xe8cd('0x2d')],'uniqueid':_0x21b19d[_0xe8cd('0x39')][_0xe8cd('0x3c')]||null});});return db[_0xe8cd('0x31')][_0xe8cd('0x3d')](_0x3851e5,{'individualHooks':!![]});}})[_0xe8cd('0x11')](function(){if(_0x54262f){return _0x54262f['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x21b19d[_0xe8cd('0x39')]['type']||_0xe8cd('0x3b'),'lastPauseAt':moment()[_0xe8cd('0x34')]('YYYY-MM-DD\x20HH:mm:ss')});}})[_0xe8cd('0x11')](function(_0x25083d){_0x1fc7d9(_0x25083d);})[_0xe8cd('0x1b')](function(_0x5eb1f0){_0x318387(_0x4dd195[_0xe8cd('0x16')](0x1f4,_0x5eb1f0[_0xe8cd('0x18')]));});});};exports[_0xe8cd('0x3e')]=function(_0x46ea43){var _0x393055=this;return new Promise(function(_0x3b4e0b,_0x563b21){var _0x3e2a00;return db[_0xe8cd('0x1c')][_0xe8cd('0x3f')]({'where':_0x46ea43['options'][_0xe8cd('0x27')]||{},'attributes':['id',_0xe8cd('0x2b')]})['then'](function(_0x409061){if(_0x409061){_0x3e2a00=_0x409061;if(_0x46ea43[_0xe8cd('0x39')][_0xe8cd('0x40')]&&!utils[_0xe8cd('0x41')](_0x46ea43[_0xe8cd('0x39')]['channel'])){throw new Error(_0xe8cd('0x42'));}switch(_0x46ea43[_0xe8cd('0x39')][_0xe8cd('0x40')]){case _0xe8cd('0x43'):return db['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x3e2a00['id']}})[_0xe8cd('0x11')](function(){return db[_0xe8cd('0x31')][_0xe8cd('0x2a')]({'where':{'channel':_0x46ea43[_0xe8cd('0x39')]['channel'],'membername':_0x3e2a00[_0xe8cd('0x2b')],'type':_0xe8cd('0x32'),'exitAt':null}});})['then'](function(_0x758fbc){if(_0x758fbc){return _0x758fbc['update']({'exitAt':moment()[_0xe8cd('0x34')](_0xe8cd('0x35')),'data2':'system'},{'individualHooks':!![]});}return null;})['then'](function(){return _0x3e2a00[_0xe8cd('0x30')]({'voicePause':![]});});case _0xe8cd('0x44'):case _0xe8cd('0x45'):case _0xe8cd('0x46'):case'sms':case _0xe8cd('0x47'):case'whatsapp':return db[_0xe8cd('0x31')][_0xe8cd('0x2a')]({'where':{'channel':_0x46ea43[_0xe8cd('0x39')][_0xe8cd('0x40')],'membername':_0x3e2a00[_0xe8cd('0x2b')],'type':'PAUSE','exitAt':null}})[_0xe8cd('0x11')](function(_0x57a9b0){return _0x57a9b0[_0xe8cd('0x30')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xe8cd('0x48')},{'individualHooks':!![]});})[_0xe8cd('0x11')](function(){var _0x55913a={};_['set'](_0x55913a,util['format'](_0xe8cd('0x49'),_0x46ea43['body'][_0xe8cd('0x40')],_0xe8cd('0x4a')),![]);return _0x3e2a00[_0xe8cd('0x30')](_0x55913a);});default:return db[_0xe8cd('0x2f')][_0xe8cd('0x30')]({'paused':0x0},{'where':{'UserId':_0x3e2a00['id']}})[_0xe8cd('0x11')](function(){return db['MemberReport'][_0xe8cd('0x1d')]({'where':{'membername':_0x3e2a00[_0xe8cd('0x2b')],'type':_0xe8cd('0x32'),'exitAt':null}});})[_0xe8cd('0x11')](function(_0x2e3cdb){var _0x23ad61=[];_0x2e3cdb[_0xe8cd('0x4b')](function(_0x1dd120){_0x23ad61[_0xe8cd('0x4c')](_0x1dd120['update']({'exitAt':moment()[_0xe8cd('0x34')](_0xe8cd('0x35')),'data2':_0xe8cd('0x48')}));});return BPromise[_0xe8cd('0x4d')](_0x23ad61);})[_0xe8cd('0x11')](function(){return _0x3e2a00[_0xe8cd('0x30')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xe8cd('0x11')](function(_0x1717e6){_0x3b4e0b(_0x1717e6);})[_0xe8cd('0x1b')](function(_0x5ee4fa){_0x563b21(_0x393055[_0xe8cd('0x16')](0x1f4,_0x5ee4fa[_0xe8cd('0x18')]));});});};exports[_0xe8cd('0x4e')]=function(_0x218b44){var _0x133222=this;return new Promise(function(_0xba1db4,_0x2f9961){var _0x20e987;return db['User'][_0xe8cd('0x3f')]({'where':_0x218b44['options'][_0xe8cd('0x27')]||{},'attributes':['id',_0xe8cd('0x2b')]})['then'](function(_0x1c14eb){if(_0x1c14eb){_0x20e987=_0x1c14eb;return db[_0xe8cd('0x2f')][_0xe8cd('0x4f')]({'where':{'membername':_0x20e987[_0xe8cd('0x2b')]},'individualHooks':!![]});}})[_0xe8cd('0x11')](function(){if(_0x20e987){return db[_0xe8cd('0x31')][_0xe8cd('0x1d')]({'where':{'membername':_0x20e987[_0xe8cd('0x2b')],'exitAt':null}});}})[_0xe8cd('0x11')](function(_0x569ab3){if(_0x20e987){if(_0x569ab3&&_0x569ab3[_0xe8cd('0x33')]){var _0x4b39b1=[];_0x569ab3[_0xe8cd('0x4b')](function(_0x1ec690){_0x4b39b1[_0xe8cd('0x4c')](_0x1ec690[_0xe8cd('0x30')]({'exitAt':moment()[_0xe8cd('0x34')](_0xe8cd('0x35'))}));});return BPromise[_0xe8cd('0x4d')](_0x4b39b1);}}})[_0xe8cd('0x11')](function(){if(_0x20e987){return _0x20e987['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})['then'](function(_0xaa5cdb){_0xba1db4(_0xaa5cdb);})['catch'](function(_0x28e6a6){_0x2f9961(_0x133222['error'](0x1f4,_0x28e6a6[_0xe8cd('0x18')]));});});};exports['LoginUser']=function(_0x2f3cbd){var _0x3112aa=this;return new Promise(function(_0x56e510,_0x43da2f){var _0x4d7a4b;var _0x1736bd;var _0x39a597;var _0x5d113e;return db['User'][_0xe8cd('0x3f')]({'where':_0x2f3cbd[_0xe8cd('0x1e')]['where']||{},'attributes':['id',_0xe8cd('0x2b'),'role','mobile',_0xe8cd('0x50'),_0xe8cd('0x2d'),_0xe8cd('0x51'),_0xe8cd('0x2e')]})[_0xe8cd('0x11')](function(_0x271443){if(_0x271443){_0x4d7a4b=_0x271443;_0x5d113e=_0x2f3cbd[_0xe8cd('0x39')][_0xe8cd('0x2e')]?_0x2f3cbd[_0xe8cd('0x39')]['interface']:util['format'](_0xe8cd('0x38'),_0x4d7a4b['name']);return db[_0xe8cd('0x1c')]['count']({'where':{'role':_0xe8cd('0x52'),'online':!![],'id':{'$ne':_0x4d7a4b['id']}}});}})[_0xe8cd('0x11')](function(_0x36ff4a){if(_0x36ff4a){_0x39a597=_0x36ff4a;return require(_0xe8cd('0x53'))['getLicense']();}})['then'](function(_0x198481){if(_0x198481&&_0x198481['agents']&&_0x39a597>=_0x198481[_0xe8cd('0x54')]){throw new Error(_0xe8cd('0x55'));}})[_0xe8cd('0x11')](function(){if(_0x4d7a4b){return db['UserVoiceQueueRt'][_0xe8cd('0x4f')]({'where':{'membername':_0x4d7a4b[_0xe8cd('0x2b')]},'individualHooks':!![]});}})['then'](function(){if(_0x4d7a4b){return _0x4d7a4b[_0xe8cd('0x56')]({'raw':!![]});}})[_0xe8cd('0x11')](function(_0x44cf3b){if(_0x4d7a4b){if(_0x44cf3b){var _0x2219b5=[];_0x1736bd=_0x44cf3b;if(_0x1736bd[_0xe8cd('0x33')]){for(var _0x147c90=0x0;_0x147c90<_0x1736bd[_0xe8cd('0x33')];_0x147c90++){_0x2219b5[_0xe8cd('0x4c')](db['UserVoiceQueueRt'][_0xe8cd('0x57')]({'membername':_0x4d7a4b['name'],'UserId':_0x4d7a4b['id'],'queue_name':_0x1736bd[_0x147c90][_0xe8cd('0x2b')],'VoiceQueueId':_0x1736bd[_0x147c90]['id'],'interface':_0x5d113e,'paused':_0x4d7a4b[_0xe8cd('0x51')]||![],'penalty':_0x1736bd[_0x147c90][_0xe8cd('0x58')]||0x0}));}return BPromise[_0xe8cd('0x4d')](_0x2219b5);}}}})['then'](function(){if(_0x4d7a4b){return db[_0xe8cd('0x31')]['findAll']({'where':{'membername':_0x4d7a4b[_0xe8cd('0x2b')],'exitAt':null}});}})['then'](function(_0x578fe8){if(_0x4d7a4b){if(_0x578fe8&&_0x578fe8['length']){var _0x5c4c40=[];_0x578fe8[_0xe8cd('0x4b')](function(_0x23b5d8){_0x5c4c40[_0xe8cd('0x4c')](_0x23b5d8['update']({'exitAt':moment()[_0xe8cd('0x34')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xe8cd('0x4d')](_0x5c4c40);}}})['then'](function(_0x4258f7){if(_0x4d7a4b){var _0x16e3c7=[];var _0x251f89=[];var _0x3c395a=utils[_0xe8cd('0x37')]();var _0x511505={'membername':_0x4d7a4b[_0xe8cd('0x2b')],'interface':_0x5d113e,'enterAt':moment()[_0xe8cd('0x34')](_0xe8cd('0x35')),'role':_0x4d7a4b[_0xe8cd('0x2c')],'internal':_0x4d7a4b[_0xe8cd('0x2d')]};_0x3c395a['forEach'](function(_0x1d23f8){_0x16e3c7[_0xe8cd('0x4c')](_[_0xe8cd('0x59')]({'channel':_0x1d23f8,'type':_0xe8cd('0x5a'),'data1':'callysquare','data2':_0x5d113e},_0x511505));if(_0x4d7a4b[_0xe8cd('0x51')]){_0x251f89[_0xe8cd('0x4c')](_[_0xe8cd('0x59')]({'channel':_0x1d23f8,'type':_0xe8cd('0x32'),'data1':'LOGININPAUSE'},_0x511505));}});return db[_0xe8cd('0x31')][_0xe8cd('0x3d')](_0x16e3c7[_0xe8cd('0x5b')](_0x251f89),{'individualHooks':!![]});}})[_0xe8cd('0x11')](function(){if(_0x4d7a4b){return _0x4d7a4b[_0xe8cd('0x30')]({'online':!![],'lastLoginAt':moment()[_0xe8cd('0x34')](_0xe8cd('0x35')),'voicePause':_0x4d7a4b['loginInPause']||![],'mailPause':_0x4d7a4b['loginInPause']||![],'chatPause':_0x4d7a4b[_0xe8cd('0x51')]||![],'faxPause':_0x4d7a4b[_0xe8cd('0x51')]||![],'smsPause':_0x4d7a4b[_0xe8cd('0x51')]||![],'openchannelPause':_0x4d7a4b[_0xe8cd('0x51')]||![],'pauseType':_0x4d7a4b['loginInPause']?'LOGININPAUSE':null,'lastPauseAt':moment()[_0xe8cd('0x34')](_0xe8cd('0x35')),'interface':_0x5d113e});}})[_0xe8cd('0x11')](function(_0x4234f7){_0x56e510(_0x4234f7);})[_0xe8cd('0x1b')](function(_0x43e5ee){_0x43da2f(_0x3112aa[_0xe8cd('0x16')](0x1f4,_0x43e5ee[_0xe8cd('0x18')]));});});};
\ No newline at end of file
+var _0xd133=['body','uniqueid','type','DEFAULT\x20PAUSE','UnpauseUser','channel','isValidChannel','Unknown\x20channel','fax','openchannel','whatsapp','system','set','Pause','LogoutUser','findOne','destroy','all','LoginUser','phone','loginInPause','count','agent','../../config/license/util','agents','getVoiceQueues','upsert','merge','callysquare','LOGININPAUSE','concat','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./user.socket','info','User,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','User','findAll','options','where','attributes','limit','include','map','model','then','GetUser','ShowUser','find','raw','name','role','interface','UserVoiceQueueRt','update','MemberReport','PAUSE','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','push','isNil','SIP/%s','internal'];(function(_0x1cad0a,_0x341fa7){var _0x1cb50f=function(_0x321e68){while(--_0x321e68){_0x1cad0a['push'](_0x1cad0a['shift']());}};_0x1cb50f(++_0x341fa7);}(_0xd133,0x1d2));var _0x3d13=function(_0x3cd975,_0x23f21f){_0x3cd975=_0x3cd975-0x0;var _0x579111=_0xd133[_0x3cd975];return _0x579111;};'use strict';var _=require(_0x3d13('0x0'));var util=require('util');var moment=require(_0x3d13('0x1'));var BPromise=require(_0x3d13('0x2'));var rs=require(_0x3d13('0x3'));var fs=require('fs');var Redis=require(_0x3d13('0x4'));var db=require(_0x3d13('0x5'))['db'];var utils=require(_0x3d13('0x6'));var logger=require(_0x3d13('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x3d13('0x8'));var client=jayson[_0x3d13('0x9')][_0x3d13('0xa')]({'port':0x232a});config[_0x3d13('0xb')]=_[_0x3d13('0xc')](config[_0x3d13('0xb')],{'host':_0x3d13('0xd'),'port':0x18eb});var socket=require(_0x3d13('0xe'))(new Redis(config['redis']));require(_0x3d13('0xf'))['register'](socket);function respondWithRpcPromise(_0x548fd1,_0x246c3c,_0x1e3c0d){return new BPromise(function(_0xeb048,_0x4783f3){return client['request'](_0x548fd1,_0x1e3c0d)['then'](function(_0x1607d1){logger[_0x3d13('0x10')](_0x3d13('0x11'),_0x246c3c,_0x3d13('0x12'));logger[_0x3d13('0x13')]('User,\x20%s,\x20%s,\x20%s',_0x246c3c,_0x3d13('0x12'),JSON[_0x3d13('0x14')](_0x1607d1));if(_0x1607d1[_0x3d13('0x15')]){if(_0x1607d1[_0x3d13('0x15')][_0x3d13('0x16')]===0x1f4){logger['error'](_0x3d13('0x11'),_0x246c3c,_0x1607d1['error']['message']);return _0x4783f3(_0x1607d1['error']['message']);}logger['error'](_0x3d13('0x11'),_0x246c3c,_0x1607d1[_0x3d13('0x15')][_0x3d13('0x17')]);return _0xeb048(_0x1607d1[_0x3d13('0x15')][_0x3d13('0x17')]);}else{logger[_0x3d13('0x10')]('User,\x20%s,\x20%s',_0x246c3c,_0x3d13('0x12'));_0xeb048(_0x1607d1['result'][_0x3d13('0x17')]);}})[_0x3d13('0x18')](function(_0x4f8f34){logger[_0x3d13('0x15')](_0x3d13('0x11'),_0x246c3c,_0x4f8f34);_0x4783f3(_0x4f8f34);});});}exports['GetUser']=function(_0x2ec725){var _0x3c9778=this;return new Promise(function(_0x529a55,_0x2dcd3e){return db[_0x3d13('0x19')][_0x3d13('0x1a')]({'raw':_0x2ec725[_0x3d13('0x1b')]?_0x2ec725[_0x3d13('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x2ec725[_0x3d13('0x1b')]?_0x2ec725[_0x3d13('0x1b')][_0x3d13('0x1c')]||null:null,'attributes':_0x2ec725[_0x3d13('0x1b')]?_0x2ec725[_0x3d13('0x1b')][_0x3d13('0x1d')]||null:null,'limit':_0x2ec725[_0x3d13('0x1b')]?_0x2ec725[_0x3d13('0x1b')][_0x3d13('0x1e')]||null:null,'include':_0x2ec725[_0x3d13('0x1b')]?_0x2ec725['options'][_0x3d13('0x1f')]?_[_0x3d13('0x20')](_0x2ec725['options'][_0x3d13('0x1f')],function(_0x30cb42){return{'model':db[_0x30cb42[_0x3d13('0x21')]],'as':_0x30cb42['as'],'attributes':_0x30cb42[_0x3d13('0x1d')],'include':_0x30cb42[_0x3d13('0x1f')]?_[_0x3d13('0x20')](_0x30cb42['include'],function(_0x4f5561){return{'model':db[_0x4f5561['model']],'as':_0x4f5561['as'],'attributes':_0x4f5561[_0x3d13('0x1d')],'include':_0x4f5561['include']?_[_0x3d13('0x20')](_0x4f5561[_0x3d13('0x1f')],function(_0x3a78be){return{'model':db[_0x3a78be[_0x3d13('0x21')]],'as':_0x3a78be['as'],'attributes':_0x3a78be['attributes']};}):[]};}):[]};}):[]:[]})[_0x3d13('0x22')](function(_0x21eceb){logger[_0x3d13('0x10')](_0x3d13('0x23'),_0x2ec725);logger[_0x3d13('0x13')]('GetUser',_0x2ec725,JSON['stringify'](_0x21eceb));_0x529a55(_0x21eceb);})['catch'](function(_0x3cf9e2){logger[_0x3d13('0x15')](_0x3d13('0x23'),_0x3cf9e2[_0x3d13('0x17')],_0x2ec725);_0x2dcd3e(_0x3c9778['error'](0x1f4,_0x3cf9e2['message']));});});};exports[_0x3d13('0x24')]=function(_0x12d7e9){var _0x2104eb=this;return new Promise(function(_0x39a5f4,_0x3a5bce){return db[_0x3d13('0x19')][_0x3d13('0x25')]({'raw':_0x12d7e9[_0x3d13('0x1b')]?_0x12d7e9[_0x3d13('0x1b')][_0x3d13('0x26')]===undefined?!![]:![]:!![],'where':_0x12d7e9[_0x3d13('0x1b')]?_0x12d7e9[_0x3d13('0x1b')]['where']||null:null,'attributes':_0x12d7e9[_0x3d13('0x1b')]?_0x12d7e9[_0x3d13('0x1b')][_0x3d13('0x1d')]||null:null,'include':_0x12d7e9[_0x3d13('0x1b')]?_0x12d7e9[_0x3d13('0x1b')][_0x3d13('0x1f')]?_[_0x3d13('0x20')](_0x12d7e9[_0x3d13('0x1b')][_0x3d13('0x1f')],function(_0x2efd1b){return{'model':db[_0x2efd1b[_0x3d13('0x21')]],'as':_0x2efd1b['as'],'attributes':_0x2efd1b['attributes'],'include':_0x2efd1b[_0x3d13('0x1f')]?_[_0x3d13('0x20')](_0x2efd1b['include'],function(_0x43865a){return{'model':db[_0x43865a[_0x3d13('0x21')]],'as':_0x43865a['as'],'attributes':_0x43865a[_0x3d13('0x1d')],'include':_0x43865a['include']?_[_0x3d13('0x20')](_0x43865a[_0x3d13('0x1f')],function(_0x434de7){return{'model':db[_0x434de7[_0x3d13('0x21')]],'as':_0x434de7['as'],'attributes':_0x434de7[_0x3d13('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x3d13('0x22')](function(_0x2fe4c7){logger[_0x3d13('0x10')](_0x3d13('0x24'),_0x12d7e9);logger['debug'](_0x3d13('0x24'),_0x12d7e9,JSON[_0x3d13('0x14')](_0x2fe4c7));_0x39a5f4(_0x2fe4c7);})['catch'](function(_0x42b7a3){logger['error'](_0x3d13('0x24'),_0x42b7a3[_0x3d13('0x17')],_0x12d7e9);_0x3a5bce(_0x2104eb[_0x3d13('0x15')](0x1f4,_0x42b7a3[_0x3d13('0x17')]));});});};exports['PauseUser']=function(_0x36ca0c){var _0x22dfae=this;return new Promise(function(_0x35a57b,_0x40bba9){var _0x1834b4;return db[_0x3d13('0x19')][_0x3d13('0x25')]({'where':_0x36ca0c[_0x3d13('0x1b')][_0x3d13('0x1c')]||{},'attributes':['id',_0x3d13('0x27'),_0x3d13('0x28'),'internal',_0x3d13('0x29')]})[_0x3d13('0x22')](function(_0x4b2585){if(_0x4b2585){_0x1834b4=_0x4b2585;return db[_0x3d13('0x2a')][_0x3d13('0x2b')]({'paused':0x1},{'where':{'UserId':_0x1834b4['id']},'individualHooks':!![]});}})[_0x3d13('0x22')](function(){if(_0x1834b4){return db[_0x3d13('0x2c')][_0x3d13('0x1a')]({'where':{'membername':_0x1834b4[_0x3d13('0x27')],'type':_0x3d13('0x2d'),'exitAt':null}});}})[_0x3d13('0x22')](function(_0x3f9867){if(_0x1834b4){if(_0x3f9867&&_0x3f9867[_0x3d13('0x2e')]){var _0x355982=moment()[_0x3d13('0x2f')](_0x3d13('0x30'));for(var _0x364eb7=0x0,_0x21a04c=_0x3f9867[_0x3d13('0x2e')];_0x364eb7<_0x21a04c;_0x364eb7++){_0x3f9867[_0x364eb7][_0x3d13('0x31')]({'exitAt':_0x355982});}}}})['then'](function(){if(_0x1834b4){var _0x1d42d8=[];var _0x51b4db=utils[_0x3d13('0x32')]();_0x51b4db[_0x3d13('0x33')](function(_0x5e0135){_0x1d42d8[_0x3d13('0x34')]({'channel':_0x5e0135,'membername':_0x1834b4['name'],'interface':_[_0x3d13('0x35')](_0x1834b4[_0x3d13('0x29')])?util[_0x3d13('0x2f')](_0x3d13('0x36'),_0x1834b4[_0x3d13('0x27')]):_0x1834b4[_0x3d13('0x29')],'type':_0x3d13('0x2d'),'enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x36ca0c['body']['type']||'DEFAULT\x20PAUSE','role':_0x1834b4[_0x3d13('0x28')],'internal':_0x1834b4[_0x3d13('0x37')],'uniqueid':_0x36ca0c[_0x3d13('0x38')][_0x3d13('0x39')]||null});});return db[_0x3d13('0x2c')]['bulkCreate'](_0x1d42d8,{'individualHooks':!![]});}})[_0x3d13('0x22')](function(){if(_0x1834b4){return _0x1834b4[_0x3d13('0x2b')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x36ca0c[_0x3d13('0x38')][_0x3d13('0x3a')]||_0x3d13('0x3b'),'lastPauseAt':moment()[_0x3d13('0x2f')](_0x3d13('0x30'))});}})[_0x3d13('0x22')](function(_0x58977a){_0x35a57b(_0x58977a);})[_0x3d13('0x18')](function(_0x487ccd){_0x40bba9(_0x22dfae[_0x3d13('0x15')](0x1f4,_0x487ccd['message']));});});};exports[_0x3d13('0x3c')]=function(_0x125c7f){var _0x386187=this;return new Promise(function(_0x4317df,_0x125a9e){var _0x4da815;return db[_0x3d13('0x19')]['findOne']({'where':_0x125c7f['options'][_0x3d13('0x1c')]||{},'attributes':['id',_0x3d13('0x27')]})[_0x3d13('0x22')](function(_0x293afc){if(_0x293afc){_0x4da815=_0x293afc;if(_0x125c7f['body'][_0x3d13('0x3d')]&&!utils[_0x3d13('0x3e')](_0x125c7f[_0x3d13('0x38')][_0x3d13('0x3d')])){throw new Error(_0x3d13('0x3f'));}switch(_0x125c7f['body']['channel']){case'voice':return db[_0x3d13('0x2a')][_0x3d13('0x2b')]({'paused':0x0},{'where':{'UserId':_0x4da815['id']}})[_0x3d13('0x22')](function(){return db['MemberReport'][_0x3d13('0x25')]({'where':{'channel':_0x125c7f['body'][_0x3d13('0x3d')],'membername':_0x4da815[_0x3d13('0x27')],'type':_0x3d13('0x2d'),'exitAt':null}});})['then'](function(_0x17e05c){if(_0x17e05c){return _0x17e05c['update']({'exitAt':moment()['format'](_0x3d13('0x30')),'data2':'system'},{'individualHooks':!![]});}return null;})[_0x3d13('0x22')](function(){return _0x4da815[_0x3d13('0x2b')]({'voicePause':![]});});case'mail':case'chat':case _0x3d13('0x40'):case'sms':case _0x3d13('0x41'):case _0x3d13('0x42'):return db[_0x3d13('0x2c')][_0x3d13('0x25')]({'where':{'channel':_0x125c7f[_0x3d13('0x38')][_0x3d13('0x3d')],'membername':_0x4da815[_0x3d13('0x27')],'type':_0x3d13('0x2d'),'exitAt':null}})[_0x3d13('0x22')](function(_0x5f0531){return _0x5f0531[_0x3d13('0x2b')]({'exitAt':moment()[_0x3d13('0x2f')](_0x3d13('0x30')),'data2':_0x3d13('0x43')},{'individualHooks':!![]});})[_0x3d13('0x22')](function(){var _0x4960fe={};_[_0x3d13('0x44')](_0x4960fe,util[_0x3d13('0x2f')]('%s%s',_0x125c7f['body'][_0x3d13('0x3d')],_0x3d13('0x45')),![]);return _0x4da815[_0x3d13('0x2b')](_0x4960fe);});default:return db[_0x3d13('0x2a')][_0x3d13('0x2b')]({'paused':0x0},{'where':{'UserId':_0x4da815['id']}})[_0x3d13('0x22')](function(){return db[_0x3d13('0x2c')][_0x3d13('0x1a')]({'where':{'membername':_0x4da815['name'],'type':_0x3d13('0x2d'),'exitAt':null}});})[_0x3d13('0x22')](function(_0x380743){var _0x553a18=[];_0x380743[_0x3d13('0x33')](function(_0x5d9056){_0x553a18[_0x3d13('0x34')](_0x5d9056['update']({'exitAt':moment()[_0x3d13('0x2f')](_0x3d13('0x30')),'data2':_0x3d13('0x43')}));});return BPromise['all'](_0x553a18);})[_0x3d13('0x22')](function(){return _0x4da815[_0x3d13('0x2b')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})['then'](function(_0xf963fb){_0x4317df(_0xf963fb);})[_0x3d13('0x18')](function(_0x58663e){_0x125a9e(_0x386187[_0x3d13('0x15')](0x1f4,_0x58663e['message']));});});};exports[_0x3d13('0x46')]=function(_0x3c2bae){var _0x59876e=this;return new Promise(function(_0x27e908,_0x1cc40e){var _0x14db8c;return db[_0x3d13('0x19')][_0x3d13('0x47')]({'where':_0x3c2bae[_0x3d13('0x1b')]['where']||{},'attributes':['id',_0x3d13('0x27')]})[_0x3d13('0x22')](function(_0x1d8485){if(_0x1d8485){_0x14db8c=_0x1d8485;return db['UserVoiceQueueRt'][_0x3d13('0x48')]({'where':{'membername':_0x14db8c[_0x3d13('0x27')]},'individualHooks':!![]});}})[_0x3d13('0x22')](function(){if(_0x14db8c){return db['MemberReport']['findAll']({'where':{'membername':_0x14db8c['name'],'exitAt':null}});}})[_0x3d13('0x22')](function(_0x2ca8d1){if(_0x14db8c){if(_0x2ca8d1&&_0x2ca8d1['length']){var _0x1908f8=[];_0x2ca8d1[_0x3d13('0x33')](function(_0x4cb5bd){_0x1908f8[_0x3d13('0x34')](_0x4cb5bd[_0x3d13('0x2b')]({'exitAt':moment()[_0x3d13('0x2f')](_0x3d13('0x30'))}));});return BPromise[_0x3d13('0x49')](_0x1908f8);}}})[_0x3d13('0x22')](function(){if(_0x14db8c){return _0x14db8c['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x3d13('0x22')](function(_0x25127b){_0x27e908(_0x25127b);})[_0x3d13('0x18')](function(_0x537f6e){_0x1cc40e(_0x59876e[_0x3d13('0x15')](0x1f4,_0x537f6e['message']));});});};exports[_0x3d13('0x4a')]=function(_0x1fd011){var _0x508d2b=this;return new Promise(function(_0x1597fc,_0x27a48d){var _0x227a8c;var _0x33f978;var _0x3d6d57;var _0x20af59;return db[_0x3d13('0x19')]['findOne']({'where':_0x1fd011[_0x3d13('0x1b')]['where']||{},'attributes':['id','name',_0x3d13('0x28'),'mobile',_0x3d13('0x4b'),_0x3d13('0x37'),_0x3d13('0x4c'),_0x3d13('0x29')]})['then'](function(_0x5843a8){if(_0x5843a8){_0x227a8c=_0x5843a8;_0x20af59=_0x1fd011[_0x3d13('0x38')][_0x3d13('0x29')]?_0x1fd011[_0x3d13('0x38')]['interface']:util[_0x3d13('0x2f')](_0x3d13('0x36'),_0x227a8c['name']);return db[_0x3d13('0x19')][_0x3d13('0x4d')]({'where':{'role':_0x3d13('0x4e'),'online':!![],'id':{'$ne':_0x227a8c['id']}}});}})['then'](function(_0x1e2e50){if(_0x1e2e50){_0x3d6d57=_0x1e2e50;return require(_0x3d13('0x4f'))['getLicense']();}})['then'](function(_0x552274){if(_0x552274&&_0x552274[_0x3d13('0x50')]&&_0x3d6d57>=_0x552274[_0x3d13('0x50')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})['then'](function(){if(_0x227a8c){return db['UserVoiceQueueRt'][_0x3d13('0x48')]({'where':{'membername':_0x227a8c[_0x3d13('0x27')]},'individualHooks':!![]});}})['then'](function(){if(_0x227a8c){return _0x227a8c[_0x3d13('0x51')]({'raw':!![]});}})[_0x3d13('0x22')](function(_0xf837b5){if(_0x227a8c){if(_0xf837b5){var _0x2a4d27=[];_0x33f978=_0xf837b5;if(_0x33f978[_0x3d13('0x2e')]){for(var _0x53b522=0x0;_0x53b522<_0x33f978[_0x3d13('0x2e')];_0x53b522++){_0x2a4d27['push'](db[_0x3d13('0x2a')][_0x3d13('0x52')]({'membername':_0x227a8c[_0x3d13('0x27')],'UserId':_0x227a8c['id'],'queue_name':_0x33f978[_0x53b522][_0x3d13('0x27')],'VoiceQueueId':_0x33f978[_0x53b522]['id'],'interface':_0x20af59,'paused':_0x227a8c[_0x3d13('0x4c')]||![],'penalty':_0x33f978[_0x53b522]['UserVoiceQueue.penalty']||0x0}));}return BPromise[_0x3d13('0x49')](_0x2a4d27);}}}})[_0x3d13('0x22')](function(){if(_0x227a8c){return db[_0x3d13('0x2c')][_0x3d13('0x1a')]({'where':{'membername':_0x227a8c['name'],'exitAt':null}});}})[_0x3d13('0x22')](function(_0x136ad1){if(_0x227a8c){if(_0x136ad1&&_0x136ad1['length']){var _0x9b350=[];_0x136ad1[_0x3d13('0x33')](function(_0x539dae){_0x9b350[_0x3d13('0x34')](_0x539dae['update']({'exitAt':moment()[_0x3d13('0x2f')](_0x3d13('0x30'))}));});return BPromise[_0x3d13('0x49')](_0x9b350);}}})['then'](function(_0x82b978){if(_0x227a8c){var _0x1eab66=[];var _0x54d0ab=[];var _0x5964e0=utils[_0x3d13('0x32')]();var _0x468d21={'membername':_0x227a8c[_0x3d13('0x27')],'interface':_0x20af59,'enterAt':moment()[_0x3d13('0x2f')](_0x3d13('0x30')),'role':_0x227a8c[_0x3d13('0x28')],'internal':_0x227a8c[_0x3d13('0x37')]};_0x5964e0[_0x3d13('0x33')](function(_0x173d15){_0x1eab66[_0x3d13('0x34')](_[_0x3d13('0x53')]({'channel':_0x173d15,'type':'LOGIN','data1':_0x3d13('0x54'),'data2':_0x20af59},_0x468d21));if(_0x227a8c[_0x3d13('0x4c')]){_0x54d0ab[_0x3d13('0x34')](_[_0x3d13('0x53')]({'channel':_0x173d15,'type':_0x3d13('0x2d'),'data1':_0x3d13('0x55')},_0x468d21));}});return db['MemberReport']['bulkCreate'](_0x1eab66[_0x3d13('0x56')](_0x54d0ab),{'individualHooks':!![]});}})['then'](function(){if(_0x227a8c){return _0x227a8c[_0x3d13('0x2b')]({'online':!![],'lastLoginAt':moment()[_0x3d13('0x2f')](_0x3d13('0x30')),'voicePause':_0x227a8c['loginInPause']||![],'mailPause':_0x227a8c[_0x3d13('0x4c')]||![],'chatPause':_0x227a8c[_0x3d13('0x4c')]||![],'faxPause':_0x227a8c['loginInPause']||![],'smsPause':_0x227a8c['loginInPause']||![],'openchannelPause':_0x227a8c[_0x3d13('0x4c')]||![],'pauseType':_0x227a8c[_0x3d13('0x4c')]?_0x3d13('0x55'):null,'lastPauseAt':moment()[_0x3d13('0x2f')](_0x3d13('0x30')),'interface':_0x20af59});}})[_0x3d13('0x22')](function(_0x268a93){_0x1597fc(_0x268a93);})[_0x3d13('0x18')](function(_0x11f7f6){_0x27a48d(_0x508d2b[_0x3d13('0x15')](0x1f4,_0x11f7f6[_0x3d13('0x17')]));});});};
\ No newline at end of file
index 828304d..80eb485 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bc2=['save','update','emit','removeListener','register','user:','./user.events'];(function(_0x3a980f,_0x49e4d6){var _0x36010f=function(_0x2835e6){while(--_0x2835e6){_0x3a980f['push'](_0x3a980f['shift']());}};_0x36010f(++_0x49e4d6);}(_0x5bc2,0xbc));var _0x25bc=function(_0x5bf420,_0x2d068d){_0x5bf420=_0x5bf420-0x0;var _0x1c5255=_0x5bc2[_0x5bf420];return _0x1c5255;};'use strict';var UserEvents=require(_0x25bc('0x0'));var events=[_0x25bc('0x1'),'remove',_0x25bc('0x2')];function createListener(_0x2044b9,_0x5ca1a7){return function(_0x46e1a8){_0x5ca1a7[_0x25bc('0x3')](_0x2044b9,_0x46e1a8);};}function removeListener(_0x5a711d,_0x9281e0){return function(){UserEvents[_0x25bc('0x4')](_0x5a711d,_0x9281e0);};}exports[_0x25bc('0x5')]=function(_0x156f9d){for(var _0x3ebf0e=0x0,_0x271b6a=events['length'];_0x3ebf0e<_0x271b6a;_0x3ebf0e++){var _0x9aa8f7=events[_0x3ebf0e];var _0x664ec2=createListener(_0x25bc('0x6')+_0x9aa8f7,_0x156f9d);UserEvents['on'](_0x9aa8f7,_0x664ec2);}};
\ No newline at end of file
+var _0x4e5e=['register','user:','./user.events','save','emit'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x4e5e,0x1ba));var _0xe4e5=function(_0x255766,_0xf8e7a0){_0x255766=_0x255766-0x0;var _0x42597c=_0x4e5e[_0x255766];return _0x42597c;};'use strict';var UserEvents=require(_0xe4e5('0x0'));var events=[_0xe4e5('0x1'),'remove','update'];function createListener(_0x2d1d26,_0xf1bcc8){return function(_0xe83824){_0xf1bcc8[_0xe4e5('0x2')](_0x2d1d26,_0xe83824);};}function removeListener(_0x5b6764,_0xedfc11){return function(){UserEvents['removeListener'](_0x5b6764,_0xedfc11);};}exports[_0xe4e5('0x3')]=function(_0x205eea){for(var _0x4a3f7a=0x0,_0x4fc227=events['length'];_0x4a3f7a<_0x4fc227;_0x4a3f7a++){var _0xebb5d9=events[_0x4a3f7a];var _0x5ddb55=createListener(_0xe4e5('0x4')+_0xebb5d9,_0x205eea);UserEvents['on'](_0xebb5d9,_0x5ddb55);}};
\ No newline at end of file
index 82fd46f..97c80f3 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(_0x45967a,_0x474c44){var _0xf97e90=function(_0x207c36){while(--_0x207c36){_0x45967a['push'](_0x45967a['shift']());}};_0xf97e90(++_0x474c44);}(_0x9c44,0x178));var _0x49c4=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x9c44[_0x53ccf2];return _0x5a2964;};'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 _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x20d54d,_0x1adc8e){var _0x516e8b=function(_0x2754e1){while(--_0x2754e1){_0x20d54d['push'](_0x20d54d['shift']());}};_0x516e8b(++_0x1adc8e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xa9e0[_0x138f59];return _0x3d114d;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index 31da538..10d5cbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa85f=['exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xa85f,0x144));var _0xfa85=function(_0x5a613e,_0x2849a5){_0x5a613e=_0x5a613e-0x0;var _0x249732=_0xa85f[_0x5a613e];return _0x249732;};'use strict';var Sequelize=require('sequelize');module[_0xfa85('0x0')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa2f5=['exports','INTEGER','sequelize'];(function(_0x23c73d,_0x357b21){var _0x36ba47=function(_0x317b8e){while(--_0x317b8e){_0x23c73d['push'](_0x23c73d['shift']());}};_0x36ba47(++_0x357b21);}(_0xa2f5,0xf2));var _0x5a2f=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xa2f5[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require(_0x5a2f('0x0'));module[_0x5a2f('0x1')]={'penalty':{'type':Sequelize[_0x5a2f('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 99ff4ea..b251d89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69e5=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','user_has_chat_queues','lodash','util','../../config/logger'];(function(_0x4c08a2,_0x3c808f){var _0x1f1fd6=function(_0x23cc9e){while(--_0x23cc9e){_0x4c08a2['push'](_0x4c08a2['shift']());}};_0x1f1fd6(++_0x3c808f);}(_0x69e5,0x1b9));var _0x569e=function(_0x36bc58,_0x27f03c){_0x36bc58=_0x36bc58-0x0;var _0x4a547e=_0x69e5[_0x36bc58];return _0x4a547e;};'use strict';var _=require(_0x569e('0x0'));var util=require(_0x569e('0x1'));var logger=require(_0x569e('0x2'))(_0x569e('0x3'));var moment=require(_0x569e('0x4'));var BPromise=require(_0x569e('0x5'));var rp=require(_0x569e('0x6'));var fs=require('fs');var path=require(_0x569e('0x7'));var rimraf=require(_0x569e('0x8'));var config=require(_0x569e('0x9'));var attributes=require('./userChatQueue.attributes');module[_0x569e('0xa')]=function(_0x214e4d,_0x4d1f5e){return _0x214e4d['define']('UserChatQueue',attributes,{'tableName':_0x569e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa3db=['../../config/environment','./userChatQueue.attributes','exports','define','UserChatQueue','user_has_chat_queues','lodash','util','api','moment','request-promise','path'];(function(_0x28063c,_0x4c56d4){var _0x384443=function(_0x5d88aa){while(--_0x5d88aa){_0x28063c['push'](_0x28063c['shift']());}};_0x384443(++_0x4c56d4);}(_0xa3db,0x66));var _0xba3d=function(_0x4038fb,_0x5d4a66){_0x4038fb=_0x4038fb-0x0;var _0x206adb=_0xa3db[_0x4038fb];return _0x206adb;};'use strict';var _=require(_0xba3d('0x0'));var util=require(_0xba3d('0x1'));var logger=require('../../config/logger')(_0xba3d('0x2'));var moment=require(_0xba3d('0x3'));var BPromise=require('bluebird');var rp=require(_0xba3d('0x4'));var fs=require('fs');var path=require(_0xba3d('0x5'));var rimraf=require('rimraf');var config=require(_0xba3d('0x6'));var attributes=require(_0xba3d('0x7'));module[_0xba3d('0x8')]=function(_0xf7d5d,_0xe1aed5){return _0xf7d5d[_0xba3d('0x9')](_0xba3d('0xa'),attributes,{'tableName':_0xba3d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d45c009..f41ae60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec86=['lodash','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserChatQueue,\x20%s,\x20%s','message','result','catch'];(function(_0x11a220,_0x4e470a){var _0x20d8fe=function(_0xbedfd){while(--_0xbedfd){_0x11a220['push'](_0x11a220['shift']());}};_0x20d8fe(++_0x4e470a);}(_0xec86,0xb8));var _0x6ec8=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xec86[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x6ec8('0x0'));var util=require(_0x6ec8('0x1'));var moment=require(_0x6ec8('0x2'));var BPromise=require(_0x6ec8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6ec8('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6ec8('0x5'))(_0x6ec8('0x6'));var config=require(_0x6ec8('0x7'));var jayson=require(_0x6ec8('0x8'));var client=jayson[_0x6ec8('0x9')][_0x6ec8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x212802,_0x2c14f3,_0x58336d){return new BPromise(function(_0x1b465c,_0x57b4b6){return client['request'](_0x212802,_0x58336d)[_0x6ec8('0xb')](function(_0x76df94){logger[_0x6ec8('0xc')]('UserChatQueue,\x20%s,\x20%s',_0x2c14f3,_0x6ec8('0xd'));logger[_0x6ec8('0xe')](_0x6ec8('0xf'),_0x2c14f3,'request\x20sent',JSON[_0x6ec8('0x10')](_0x76df94));if(_0x76df94[_0x6ec8('0x11')]){if(_0x76df94[_0x6ec8('0x11')][_0x6ec8('0x12')]===0x1f4){logger[_0x6ec8('0x11')](_0x6ec8('0x13'),_0x2c14f3,_0x76df94[_0x6ec8('0x11')][_0x6ec8('0x14')]);return _0x57b4b6(_0x76df94[_0x6ec8('0x11')][_0x6ec8('0x14')]);}logger[_0x6ec8('0x11')](_0x6ec8('0x13'),_0x2c14f3,_0x76df94[_0x6ec8('0x11')][_0x6ec8('0x14')]);return _0x1b465c(_0x76df94[_0x6ec8('0x11')][_0x6ec8('0x14')]);}else{logger[_0x6ec8('0xc')]('UserChatQueue,\x20%s,\x20%s',_0x2c14f3,_0x6ec8('0xd'));_0x1b465c(_0x76df94[_0x6ec8('0x15')][_0x6ec8('0x14')]);}})[_0x6ec8('0x16')](function(_0x19dc3f){logger[_0x6ec8('0x11')](_0x6ec8('0x13'),_0x2c14f3,_0x19dc3f);_0x57b4b6(_0x19dc3f);});});}
\ No newline at end of file
+var _0xa809=['UserChatQueue,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','request','then'];(function(_0x51e79c,_0x51485e){var _0x2467be=function(_0xbf70f0){while(--_0xbf70f0){_0x51e79c['push'](_0x51e79c['shift']());}};_0x2467be(++_0x51485e);}(_0xa809,0x16e));var _0x9a80=function(_0x1dddf6,_0x304467){_0x1dddf6=_0x1dddf6-0x0;var _0x335447=_0xa809[_0x1dddf6];return _0x335447;};'use strict';var _=require(_0x9a80('0x0'));var util=require('util');var moment=require(_0x9a80('0x1'));var BPromise=require(_0x9a80('0x2'));var rs=require(_0x9a80('0x3'));var fs=require('fs');var Redis=require(_0x9a80('0x4'));var db=require(_0x9a80('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9a80('0x6'));var config=require(_0x9a80('0x7'));var jayson=require(_0x9a80('0x8'));var client=jayson[_0x9a80('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2a3b87,_0x3d767f,_0x3aae4e){return new BPromise(function(_0x59e262,_0x72110a){return client[_0x9a80('0xa')](_0x2a3b87,_0x3aae4e)[_0x9a80('0xb')](function(_0x290769){logger['info'](_0x9a80('0xc'),_0x3d767f,'request\x20sent');logger[_0x9a80('0xd')]('UserChatQueue,\x20%s,\x20%s,\x20%s',_0x3d767f,_0x9a80('0xe'),JSON[_0x9a80('0xf')](_0x290769));if(_0x290769['error']){if(_0x290769[_0x9a80('0x10')][_0x9a80('0x11')]===0x1f4){logger[_0x9a80('0x10')](_0x9a80('0xc'),_0x3d767f,_0x290769[_0x9a80('0x10')]['message']);return _0x72110a(_0x290769[_0x9a80('0x10')][_0x9a80('0x12')]);}logger['error'](_0x9a80('0xc'),_0x3d767f,_0x290769['error'][_0x9a80('0x12')]);return _0x59e262(_0x290769[_0x9a80('0x10')][_0x9a80('0x12')]);}else{logger[_0x9a80('0x13')](_0x9a80('0xc'),_0x3d767f,_0x9a80('0xe'));_0x59e262(_0x290769[_0x9a80('0x14')][_0x9a80('0x12')]);}})['catch'](function(_0x57d6c5){logger['error']('UserChatQueue,\x20%s,\x20%s',_0x3d767f,_0x57d6c5);_0x72110a(_0x57d6c5);});});}
\ No newline at end of file
index b2d0dde..a2840c8 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(_0x2b91a8,_0x5882c5){var _0x1d63e4=function(_0x28d08a){while(--_0x28d08a){_0x2b91a8['push'](_0x2b91a8['shift']());}};_0x1d63e4(++_0x5882c5);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2bfe52,_0x43946e){_0x2bfe52=_0x2bfe52-0x0;var _0x1cf649=_0xcb91[_0x2bfe52];return _0x1cf649;};'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 _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x32a327,_0x170c62){var _0xba1acd=function(_0x2e3ebe){while(--_0x2e3ebe){_0x32a327['push'](_0x32a327['shift']());}};_0xba1acd(++_0x170c62);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index e541dcb..64592ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5dc=['INTEGER','STRING','sequelize','exports'];(function(_0x4eee9e,_0x57aa9f){var _0x37bc2b=function(_0x34f107){while(--_0x34f107){_0x4eee9e['push'](_0x4eee9e['shift']());}};_0x37bc2b(++_0x57aa9f);}(_0xc5dc,0x18a));var _0xcc5d=function(_0x4b6ab3,_0x203dee){_0x4b6ab3=_0x4b6ab3-0x0;var _0x13be88=_0xc5dc[_0x4b6ab3];return _0x13be88;};'use strict';var Sequelize=require(_0xcc5d('0x0'));module[_0xcc5d('0x1')]={'penalty':{'type':Sequelize[_0xcc5d('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xcc5d('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0xcc5d('0x3')]}};
\ No newline at end of file
+var _0x80e9=['STRING','exports','INTEGER'];(function(_0x5161b5,_0x4fa60f){var _0x7b35a8=function(_0x473f9c){while(--_0x473f9c){_0x5161b5['push'](_0x5161b5['shift']());}};_0x7b35a8(++_0x4fa60f);}(_0x80e9,0x139));var _0x980e=function(_0xf66378,_0x1b5bdf){_0xf66378=_0xf66378-0x0;var _0x27f3dc=_0x80e9[_0xf66378];return _0x27f3dc;};'use strict';var Sequelize=require('sequelize');module[_0x980e('0x0')]={'penalty':{'type':Sequelize[_0x980e('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x980e('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x980e('0x2')]}};
\ No newline at end of file
index bbbaa56..ecf3494 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5d3=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','./userFaxQueue.attributes','exports','define','UserFaxQueue','user_has_fax_queues','lodash'];(function(_0x34bf97,_0xc60f9d){var _0x292719=function(_0x31354e){while(--_0x31354e){_0x34bf97['push'](_0x34bf97['shift']());}};_0x292719(++_0xc60f9d);}(_0xd5d3,0x81));var _0x3d5d=function(_0x1b5d43,_0x1b6339){_0x1b5d43=_0x1b5d43-0x0;var _0x3d6408=_0xd5d3[_0x1b5d43];return _0x3d6408;};'use strict';var _=require(_0x3d5d('0x0'));var util=require(_0x3d5d('0x1'));var logger=require(_0x3d5d('0x2'))(_0x3d5d('0x3'));var moment=require('moment');var BPromise=require(_0x3d5d('0x4'));var rp=require(_0x3d5d('0x5'));var fs=require('fs');var path=require(_0x3d5d('0x6'));var rimraf=require(_0x3d5d('0x7'));var config=require('../../config/environment');var attributes=require(_0x3d5d('0x8'));module[_0x3d5d('0x9')]=function(_0x1b50e3,_0x4ad8cd){return _0x1b50e3[_0x3d5d('0xa')](_0x3d5d('0xb'),attributes,{'tableName':_0x3d5d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9aae=['UserFaxQueue','user_has_fax_queues','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userFaxQueue.attributes','exports','define'];(function(_0x5f1013,_0x4f03d4){var _0x20a5bc=function(_0x5e6066){while(--_0x5e6066){_0x5f1013['push'](_0x5f1013['shift']());}};_0x20a5bc(++_0x4f03d4);}(_0x9aae,0x1c9));var _0xe9aa=function(_0xca2ba8,_0x43888f){_0xca2ba8=_0xca2ba8-0x0;var _0x345418=_0x9aae[_0xca2ba8];return _0x345418;};'use strict';var _=require(_0xe9aa('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xe9aa('0x1'));var moment=require(_0xe9aa('0x2'));var BPromise=require(_0xe9aa('0x3'));var rp=require(_0xe9aa('0x4'));var fs=require('fs');var path=require(_0xe9aa('0x5'));var rimraf=require(_0xe9aa('0x6'));var config=require(_0xe9aa('0x7'));var attributes=require(_0xe9aa('0x8'));module[_0xe9aa('0x9')]=function(_0x4eea8b,_0x1c3af1){return _0x4eea8b[_0xe9aa('0xa')](_0xe9aa('0xb'),attributes,{'tableName':_0xe9aa('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bde964d..d950d98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08cf=['jayson/promise','client','http','info','request\x20sent','debug','stringify','error','code','UserFaxQueue,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment'];(function(_0x257280,_0x2921df){var _0xc4550e=function(_0x35bcfd){while(--_0x35bcfd){_0x257280['push'](_0x257280['shift']());}};_0xc4550e(++_0x2921df);}(_0x08cf,0xca));var _0xf08c=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0x08cf[_0xdea41a];return _0x15d0d8;};'use strict';var _=require('lodash');var util=require(_0xf08c('0x0'));var moment=require(_0xf08c('0x1'));var BPromise=require(_0xf08c('0x2'));var rs=require(_0xf08c('0x3'));var fs=require('fs');var Redis=require(_0xf08c('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xf08c('0x5'))(_0xf08c('0x6'));var config=require(_0xf08c('0x7'));var jayson=require(_0xf08c('0x8'));var client=jayson[_0xf08c('0x9')][_0xf08c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x268d24,_0x3a0459,_0x399caa){return new BPromise(function(_0x5c763e,_0x428206){return client['request'](_0x268d24,_0x399caa)['then'](function(_0x275791){logger[_0xf08c('0xb')]('UserFaxQueue,\x20%s,\x20%s',_0x3a0459,_0xf08c('0xc'));logger[_0xf08c('0xd')]('UserFaxQueue,\x20%s,\x20%s,\x20%s',_0x3a0459,_0xf08c('0xc'),JSON[_0xf08c('0xe')](_0x275791));if(_0x275791[_0xf08c('0xf')]){if(_0x275791[_0xf08c('0xf')][_0xf08c('0x10')]===0x1f4){logger[_0xf08c('0xf')](_0xf08c('0x11'),_0x3a0459,_0x275791[_0xf08c('0xf')][_0xf08c('0x12')]);return _0x428206(_0x275791[_0xf08c('0xf')][_0xf08c('0x12')]);}logger[_0xf08c('0xf')](_0xf08c('0x11'),_0x3a0459,_0x275791['error'][_0xf08c('0x12')]);return _0x5c763e(_0x275791[_0xf08c('0xf')][_0xf08c('0x12')]);}else{logger[_0xf08c('0xb')]('UserFaxQueue,\x20%s,\x20%s',_0x3a0459,'request\x20sent');_0x5c763e(_0x275791[_0xf08c('0x13')]['message']);}})[_0xf08c('0x14')](function(_0x2825dd){logger['error']('UserFaxQueue,\x20%s,\x20%s',_0x3a0459,_0x2825dd);_0x428206(_0x2825dd);});});}
\ No newline at end of file
+var _0xea59=['moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0xea59,0x98));var _0x9ea5=function(_0xb06221,_0x3b47da){_0xb06221=_0xb06221-0x0;var _0x542c06=_0xea59[_0xb06221];return _0x542c06;};'use strict';var _=require(_0x9ea5('0x0'));var util=require(_0x9ea5('0x1'));var moment=require(_0x9ea5('0x2'));var BPromise=require(_0x9ea5('0x3'));var rs=require(_0x9ea5('0x4'));var fs=require('fs');var Redis=require(_0x9ea5('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9ea5('0x6'))(_0x9ea5('0x7'));var config=require(_0x9ea5('0x8'));var jayson=require(_0x9ea5('0x9'));var client=jayson[_0x9ea5('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x50e0bf,_0x5a3017,_0x540581){return new BPromise(function(_0x47f1b4,_0x160d6e){return client[_0x9ea5('0xb')](_0x50e0bf,_0x540581)['then'](function(_0x7e0b1){logger[_0x9ea5('0xc')](_0x9ea5('0xd'),_0x5a3017,_0x9ea5('0xe'));logger[_0x9ea5('0xf')](_0x9ea5('0x10'),_0x5a3017,'request\x20sent',JSON[_0x9ea5('0x11')](_0x7e0b1));if(_0x7e0b1[_0x9ea5('0x12')]){if(_0x7e0b1[_0x9ea5('0x12')][_0x9ea5('0x13')]===0x1f4){logger[_0x9ea5('0x12')](_0x9ea5('0xd'),_0x5a3017,_0x7e0b1[_0x9ea5('0x12')][_0x9ea5('0x14')]);return _0x160d6e(_0x7e0b1['error'][_0x9ea5('0x14')]);}logger[_0x9ea5('0x12')](_0x9ea5('0xd'),_0x5a3017,_0x7e0b1[_0x9ea5('0x12')][_0x9ea5('0x14')]);return _0x47f1b4(_0x7e0b1[_0x9ea5('0x12')]['message']);}else{logger[_0x9ea5('0xc')](_0x9ea5('0xd'),_0x5a3017,'request\x20sent');_0x47f1b4(_0x7e0b1[_0x9ea5('0x15')][_0x9ea5('0x14')]);}})['catch'](function(_0x42d182){logger[_0x9ea5('0x12')](_0x9ea5('0xd'),_0x5a3017,_0x42d182);_0x160d6e(_0x42d182);});});}
\ No newline at end of file
index c636342..210c1af 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(_0x58f65e,_0x467d61){var _0x35684b=function(_0x17cafe){while(--_0x17cafe){_0x58f65e['push'](_0x58f65e['shift']());}};_0x35684b(++_0x467d61);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x5b2a7c,_0xa75601){var _0x4d7661=function(_0x10be25){while(--_0x10be25){_0x5b2a7c['push'](_0x5b2a7c['shift']());}};_0x4d7661(++_0xa75601);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index 59b0728..a8641eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x526d=['sequelize'];(function(_0x26d6c8,_0x29f425){var _0x57e7f6=function(_0x28afb0){while(--_0x28afb0){_0x26d6c8['push'](_0x26d6c8['shift']());}};_0x57e7f6(++_0x29f425);}(_0x526d,0xce));var _0xd526=function(_0x3cea7b,_0x328f7b){_0x3cea7b=_0x3cea7b-0x0;var _0x430e18=_0x526d[_0x3cea7b];return _0x430e18;};'use strict';var Sequelize=require(_0xd526('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa12e=['INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa12e,0x1bc));var _0xea12=function(_0x2c492c,_0x50e279){_0x2c492c=_0x2c492c-0x0;var _0x51c7f6=_0xa12e[_0x2c492c];return _0x51c7f6;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0xea12('0x0')],'defaultValue':0x0}};
\ No newline at end of file
index d717b8e..915a327 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f89=['lodash','util','api','request-promise','path','rimraf','../../config/environment','./userMailQueue.attributes','exports','UserMailQueue','user_has_mail_queues'];(function(_0x1cb690,_0x5592e3){var _0x3bebd4=function(_0x266301){while(--_0x266301){_0x1cb690['push'](_0x1cb690['shift']());}};_0x3bebd4(++_0x5592e3);}(_0x9f89,0x18c));var _0x99f8=function(_0x379d94,_0x1ebc1e){_0x379d94=_0x379d94-0x0;var _0xf3b9d2=_0x9f89[_0x379d94];return _0xf3b9d2;};'use strict';var _=require(_0x99f8('0x0'));var util=require(_0x99f8('0x1'));var logger=require('../../config/logger')(_0x99f8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x99f8('0x3'));var fs=require('fs');var path=require(_0x99f8('0x4'));var rimraf=require(_0x99f8('0x5'));var config=require(_0x99f8('0x6'));var attributes=require(_0x99f8('0x7'));module[_0x99f8('0x8')]=function(_0x47decb,_0x5be2b3){return _0x47decb['define'](_0x99f8('0x9'),attributes,{'tableName':_0x99f8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbab9=['request-promise','rimraf','./userMailQueue.attributes','exports','define','UserMailQueue','lodash','util','../../config/logger','bluebird'];(function(_0x2a04df,_0x48f2de){var _0x1369a2=function(_0x11724e){while(--_0x11724e){_0x2a04df['push'](_0x2a04df['shift']());}};_0x1369a2(++_0x48f2de);}(_0xbab9,0x9c));var _0x9bab=function(_0x1e47ba,_0x2761be){_0x1e47ba=_0x1e47ba-0x0;var _0x2e0154=_0xbab9[_0x1e47ba];return _0x2e0154;};'use strict';var _=require(_0x9bab('0x0'));var util=require(_0x9bab('0x1'));var logger=require(_0x9bab('0x2'))('api');var moment=require('moment');var BPromise=require(_0x9bab('0x3'));var rp=require(_0x9bab('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9bab('0x5'));var config=require('../../config/environment');var attributes=require(_0x9bab('0x6'));module[_0x9bab('0x7')]=function(_0x5839e7,_0x14667d){return _0x5839e7[_0x9bab('0x8')](_0x9bab('0x9'),attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 915fe99..faeae85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','stringify','error','code','message','UserMailQueue,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x6f6fb2,_0x5d19b2){var _0x32597b=function(_0xd7a59b){while(--_0xd7a59b){_0x6f6fb2['push'](_0x6f6fb2['shift']());}};_0x32597b(++_0x5d19b2);}(_0x5fc3,0xa8));var _0x35fc=function(_0x188a93,_0xaf57db){_0x188a93=_0x188a93-0x0;var _0x23b40d=_0x5fc3[_0x188a93];return _0x23b40d;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var moment=require('moment');var BPromise=require(_0x35fc('0x2'));var rs=require(_0x35fc('0x3'));var fs=require('fs');var Redis=require(_0x35fc('0x4'));var db=require(_0x35fc('0x5'))['db'];var utils=require(_0x35fc('0x6'));var logger=require('../../config/logger')(_0x35fc('0x7'));var config=require(_0x35fc('0x8'));var jayson=require(_0x35fc('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x19a0d1,_0x508b32,_0x16e153){return new BPromise(function(_0x27524f,_0xc72d93){return client[_0x35fc('0xa')](_0x19a0d1,_0x16e153)[_0x35fc('0xb')](function(_0xf9d3a6){logger[_0x35fc('0xc')]('UserMailQueue,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'));logger[_0x35fc('0xe')]('UserMailQueue,\x20%s,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'),JSON[_0x35fc('0xf')](_0xf9d3a6));if(_0xf9d3a6['error']){if(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x11')]===0x1f4){logger['error']('UserMailQueue,\x20%s,\x20%s',_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0xc72d93(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x12')]);}logger[_0x35fc('0x10')](_0x35fc('0x13'),_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0x27524f(_0xf9d3a6['error']['message']);}else{logger['info'](_0x35fc('0x13'),_0x508b32,_0x35fc('0xd'));_0x27524f(_0xf9d3a6[_0x35fc('0x14')][_0x35fc('0x12')]);}})[_0x35fc('0x15')](function(_0x1121fa){logger['error'](_0x35fc('0x13'),_0x508b32,_0x1121fa);_0xc72d93(_0x1121fa);});});}
\ No newline at end of file
+var _0x3e74=['rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','debug','error','UserMailQueue,\x20%s,\x20%s','message','info','catch','lodash','moment','bluebird','randomstring','../../config/utils'];(function(_0x2fed11,_0x1a6793){var _0x19ff1e=function(_0x38b5de){while(--_0x38b5de){_0x2fed11['push'](_0x2fed11['shift']());}};_0x19ff1e(++_0x1a6793);}(_0x3e74,0x175));var _0x43e7=function(_0x2f3c23,_0x1bc8e0){_0x2f3c23=_0x2f3c23-0x0;var _0x4bb9ae=_0x3e74[_0x2f3c23];return _0x4bb9ae;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var moment=require(_0x43e7('0x1'));var BPromise=require(_0x43e7('0x2'));var rs=require(_0x43e7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x43e7('0x4'));var logger=require('../../config/logger')(_0x43e7('0x5'));var config=require(_0x43e7('0x6'));var jayson=require(_0x43e7('0x7'));var client=jayson[_0x43e7('0x8')][_0x43e7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x503698,_0x45a0d1,_0x3491d6){return new BPromise(function(_0x2ede2d,_0x8528fc){return client[_0x43e7('0xa')](_0x503698,_0x3491d6)['then'](function(_0x212c6c){logger['info']('UserMailQueue,\x20%s,\x20%s',_0x45a0d1,_0x43e7('0xb'));logger[_0x43e7('0xc')]('UserMailQueue,\x20%s,\x20%s,\x20%s',_0x45a0d1,_0x43e7('0xb'),JSON['stringify'](_0x212c6c));if(_0x212c6c[_0x43e7('0xd')]){if(_0x212c6c[_0x43e7('0xd')]['code']===0x1f4){logger[_0x43e7('0xd')](_0x43e7('0xe'),_0x45a0d1,_0x212c6c[_0x43e7('0xd')][_0x43e7('0xf')]);return _0x8528fc(_0x212c6c['error']['message']);}logger[_0x43e7('0xd')](_0x43e7('0xe'),_0x45a0d1,_0x212c6c[_0x43e7('0xd')]['message']);return _0x2ede2d(_0x212c6c['error'][_0x43e7('0xf')]);}else{logger[_0x43e7('0x10')](_0x43e7('0xe'),_0x45a0d1,_0x43e7('0xb'));_0x2ede2d(_0x212c6c['result']['message']);}})[_0x43e7('0x11')](function(_0x264575){logger[_0x43e7('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x45a0d1,_0x264575);_0x8528fc(_0x264575);});});}
\ No newline at end of file
index 4a69f68..b74441d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3da2=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller','post','isAuthenticated','sendUserNotification','exports','multer','util'];(function(_0x25b62a,_0x4964d5){var _0xf3a0b1=function(_0x58dae8){while(--_0x58dae8){_0x25b62a['push'](_0x25b62a['shift']());}};_0xf3a0b1(++_0x4964d5);}(_0x3da2,0x19e));var _0x23da=function(_0x1122bf,_0x3ae33f){_0x1122bf=_0x1122bf-0x0;var _0x56eb03=_0x3da2[_0x1122bf];return _0x56eb03;};'use strict';var multer=require(_0x23da('0x0'));var util=require(_0x23da('0x1'));var path=require('path');var timeout=require(_0x23da('0x2'));var express=require(_0x23da('0x3'));var router=express[_0x23da('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x23da('0x5'));var interaction=require(_0x23da('0x6'));var config=require(_0x23da('0x7'));var controller=require(_0x23da('0x8'));router[_0x23da('0x9')]('/',auth[_0x23da('0xa')](),controller[_0x23da('0xb')]);module[_0x23da('0xc')]=router;
\ No newline at end of file
+var _0xb107=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller','post','isAuthenticated','exports','multer','util'];(function(_0x25560b,_0x5a52a5){var _0x1aeab9=function(_0x5410c8){while(--_0x5410c8){_0x25560b['push'](_0x25560b['shift']());}};_0x1aeab9(++_0x5a52a5);}(_0xb107,0x1df));var _0x7b10=function(_0x3dddc6,_0x30f432){_0x3dddc6=_0x3dddc6-0x0;var _0x4a0213=_0xb107[_0x3dddc6];return _0x4a0213;};'use strict';var multer=require(_0x7b10('0x0'));var util=require(_0x7b10('0x1'));var path=require(_0x7b10('0x2'));var timeout=require(_0x7b10('0x3'));var express=require('express');var router=express[_0x7b10('0x4')]();var fs_extra=require(_0x7b10('0x5'));var auth=require(_0x7b10('0x6'));var interaction=require(_0x7b10('0x7'));var config=require(_0x7b10('0x8'));var controller=require(_0x7b10('0x9'));router[_0x7b10('0xa')]('/',auth[_0x7b10('0xb')](),controller['sendUserNotification']);module[_0x7b10('0xc')]=router;
\ No newline at end of file
index fe11560..31fe907 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36f2=['BOOLEAN','sequelize','exports','TEXT','STRING'];(function(_0x18b02e,_0x29e6c0){var _0x5d2823=function(_0x4de8ee){while(--_0x4de8ee){_0x18b02e['push'](_0x18b02e['shift']());}};_0x5d2823(++_0x29e6c0);}(_0x36f2,0xf6));var _0x236f=function(_0x1e9c37,_0x18c10a){_0x1e9c37=_0x1e9c37-0x0;var _0x3d7cd0=_0x36f2[_0x1e9c37];return _0x3d7cd0;};'use strict';var Sequelize=require(_0x236f('0x0'));module[_0x236f('0x1')]={'body':{'type':Sequelize[_0x236f('0x2')]},'senderName':{'type':Sequelize['STRING']},'recipientsId':{'type':Sequelize[_0x236f('0x2')]},'recipientsDescription':{'type':Sequelize[_0x236f('0x3')]},'beep':{'type':Sequelize[_0x236f('0x4')]}};
\ No newline at end of file
+var _0x3fb6=['exports','TEXT','STRING','BOOLEAN','sequelize'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x3fb6,0x7c));var _0x63fb=function(_0x4d880c,_0x344714){_0x4d880c=_0x4d880c-0x0;var _0x40c121=_0x3fb6[_0x4d880c];return _0x40c121;};'use strict';var Sequelize=require(_0x63fb('0x0'));module[_0x63fb('0x1')]={'body':{'type':Sequelize[_0x63fb('0x2')]},'senderName':{'type':Sequelize[_0x63fb('0x3')]},'recipientsId':{'type':Sequelize[_0x63fb('0x2')]},'recipientsDescription':{'type':Sequelize[_0x63fb('0x3')]},'beep':{'type':Sequelize[_0x63fb('0x4')]}};
\ No newline at end of file
index 99dd231..93fa8ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2002=['userNotification:send','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','view','catch','User','union','ids','queue','replace','Queue','push','map','eml-format','rimraf','zip-dir','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','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','localhost','socket.io-emitter','register','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','body','hasOwnProperty','text','TemplateId','Sequelize','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','ValidationError','Missing\x20\x27view\x27\x20parameter','parse','recipients','Invalid\x20\x27recipients\x27\x20object','mailqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','user','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','sequelize','create','forEach','recipient','emit'];(function(_0x227ec9,_0xb9427c){var _0x3711cd=function(_0x1ac88c){while(--_0x1ac88c){_0x227ec9['push'](_0x227ec9['shift']());}};_0x3711cd(++_0xb9427c);}(_0x2002,0xd3));var _0x2200=function(_0x211087,_0x354fdd){_0x211087=_0x211087-0x0;var _0x2a581f=_0x2002[_0x211087];return _0x2a581f;};'use strict';var emlformat=require(_0x2200('0x0'));var rimraf=require(_0x2200('0x1'));var zipdir=require(_0x2200('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2200('0x3'));var Mustache=require(_0x2200('0x4'));var util=require(_0x2200('0x5'));var path=require(_0x2200('0x6'));var sox=require(_0x2200('0x7'));var csv=require(_0x2200('0x8'));var ejs=require(_0x2200('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2200('0xa'));var squel=require(_0x2200('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x2200('0xc'));var toCsv=require(_0x2200('0x8'));var querystring=require(_0x2200('0xd'));var Papa=require(_0x2200('0xe'));var Redis=require('ioredis');var authService=require(_0x2200('0xf'));var qs=require(_0x2200('0x10'));var as=require(_0x2200('0x11'));var hardwareService=require(_0x2200('0x12'));var logger=require(_0x2200('0x13'))(_0x2200('0x14'));var utils=require(_0x2200('0x15'));var config=require(_0x2200('0x16'));var licenseUtil=require(_0x2200('0x17'));var db=require(_0x2200('0x18'))['db'];config[_0x2200('0x19')]=_['defaults'](config[_0x2200('0x19')],{'host':_0x2200('0x1a'),'port':0x18eb});var socket=require(_0x2200('0x1b'))(new Redis(config['redis']));require('./userNotification.socket')[_0x2200('0x1c')](socket);function respondWithStatusCode(_0x1f5b6a,_0x5f07c5){_0x5f07c5=_0x5f07c5||0xcc;return function(_0x24e9ff){if(_0x24e9ff){return _0x1f5b6a[_0x2200('0x1d')](_0x5f07c5);}return _0x1f5b6a['status'](_0x5f07c5)[_0x2200('0x1e')]();};}function respondWithResult(_0x5939ed,_0x1afd0b){_0x1afd0b=_0x1afd0b||0xc8;return function(_0xf50ba7){if(_0xf50ba7){return _0x5939ed[_0x2200('0x1f')](_0x1afd0b)[_0x2200('0x20')](_0xf50ba7);}};}function respondWithFilteredResult(_0x1cc380,_0x9a26b3){return function(_0x3b809d){if(_0x3b809d){var _0x325a14=typeof _0x9a26b3[_0x2200('0x21')]==='undefined'&&typeof _0x9a26b3[_0x2200('0x22')]===_0x2200('0x23');var _0x5a1d02=_0x3b809d['count'];var _0x45dc08=_0x325a14?0x0:_0x9a26b3[_0x2200('0x21')];var _0x4ff0b7=_0x325a14?_0x3b809d[_0x2200('0x24')]:_0x9a26b3['offset']+_0x9a26b3[_0x2200('0x22')];var _0x25caf2;if(_0x4ff0b7>=_0x5a1d02){_0x4ff0b7=_0x5a1d02;_0x25caf2=0xc8;}else{_0x25caf2=0xce;}_0x1cc380[_0x2200('0x1f')](_0x25caf2);return _0x1cc380[_0x2200('0x25')](_0x2200('0x26'),_0x45dc08+'-'+_0x4ff0b7+'/'+_0x5a1d02)['json'](_0x3b809d);}return null;};}function patchUpdates(_0x354a3a){return function(_0x37c592){try{jsonpatch[_0x2200('0x27')](_0x37c592,_0x354a3a,!![]);}catch(_0x3ad7af){return BPromise['reject'](_0x3ad7af);}return _0x37c592[_0x2200('0x28')]();};}function saveUpdates(_0x403a7a,_0x5bb3ad){return function(_0x52d53e){if(_0x52d53e){return _0x52d53e[_0x2200('0x29')](_0x403a7a)[_0x2200('0x2a')](function(_0x1a57df){return _0x1a57df;});}return null;};}function removeEntity(_0x427477,_0x32384f){return function(_0x341f6f){if(_0x341f6f){return _0x341f6f[_0x2200('0x2b')]()['then'](function(){_0x427477['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x57802c,_0xce0cc1){return function(_0x1191b2){if(!_0x1191b2){_0x57802c[_0x2200('0x1d')](0x194);}return _0x1191b2;};}function handleError(_0x1373ad,_0x30e24a){_0x30e24a=_0x30e24a||0x1f4;return function(_0xe05cf9){logger[_0x2200('0x2c')](_0xe05cf9[_0x2200('0x2d')]);if(_0xe05cf9[_0x2200('0x2e')]){delete _0xe05cf9[_0x2200('0x2e')];}_0x1373ad[_0x2200('0x1f')](_0x30e24a)[_0x2200('0x2f')](_0xe05cf9);};}exports['sendUserNotification']=function(_0x4c61f7,_0x58f424,_0x627b9b){if(!_0x4c61f7[_0x2200('0x30')][_0x2200('0x31')](_0x2200('0x32'))&&!_0x4c61f7[_0x2200('0x30')][_0x2200('0x31')](_0x2200('0x33'))){throw new db[(_0x2200('0x34'))]['ValidationError'](_0x2200('0x35'));}else{if(_0x4c61f7['body']['hasOwnProperty'](_0x2200('0x33'))&&!_0x4c61f7[_0x2200('0x30')]['hasOwnProperty']('view')){throw new db[(_0x2200('0x34'))][(_0x2200('0x36'))](_0x2200('0x37'));}if(!_0x4c61f7[_0x2200('0x30')][_0x2200('0x31')]('recipients')){throw new db[(_0x2200('0x34'))]['ValidationError']('Missing\x20\x27recipients\x27\x20parameter');}else{try{var _0x2d7fb2=JSON[_0x2200('0x38')](_0x4c61f7[_0x2200('0x30')][_0x2200('0x39')]);}catch(_0x2044be){logger[_0x2200('0x2c')](_0x2044be);throw new db[(_0x2200('0x34'))][(_0x2200('0x36'))](_0x2200('0x3a'));}var _0x4aa865=['chatqueue','faxqueue',_0x2200('0x3b'),_0x2200('0x3c'),_0x2200('0x3d'),_0x2200('0x3e'),_0x2200('0x3f'),'team',_0x2200('0x40')];if(_['some'](_0x2d7fb2,function(_0xcce59f){return!_[_0x2200('0x41')](_0x4aa865,_0xcce59f[_0x2200('0x42')][_0x2200('0x43')]());})){throw new db[(_0x2200('0x34'))][(_0x2200('0x36'))](_0x2200('0x44'));}}}var _0xcb379e={};_0xcb379e[_0x2200('0x45')]=_0x4c61f7[_0x2200('0x30')]['hasOwnProperty'](_0x2200('0x45'))?_0x4c61f7[_0x2200('0x30')][_0x2200('0x45')]:_0x4c61f7[_0x2200('0x40')][_0x2200('0x46')];_0xcb379e[_0x2200('0x47')]=_[_0x2200('0x48')](_0x4c61f7[_0x2200('0x30')][_0x2200('0x47')])?null:_0x4c61f7['body'][_0x2200('0x47')];_0xcb379e[_0x2200('0x49')]=_0x4c61f7[_0x2200('0x30')][_0x2200('0x49')]||![];_0xcb379e[_0x2200('0x4a')]=_0x4c61f7[_0x2200('0x40')]['id'];return getContent(_0x4c61f7[_0x2200('0x30')])[_0x2200('0x2a')](function(_0xdb05c5){_0xcb379e[_0x2200('0x30')]=_0xdb05c5;return getRecipients(_0x2d7fb2);})[_0x2200('0x2a')](function(_0x336980){_0xcb379e[_0x2200('0x4b')]=_[_0x2200('0x4c')](_0x336980)[_0x2200('0x4d')](',');return db[_0x2200('0x4e')]['transaction'](function(_0x2a6602){return db['UserNotification'][_0x2200('0x4f')](_0xcb379e,{'raw':!![],'transaction':_0x2a6602})[_0x2200('0x2a')](function(_0x446b10){var _0x58492d={'sender':_0xcb379e[_0x2200('0x45')],'description':_0xcb379e[_0x2200('0x47')],'content':_0xcb379e[_0x2200('0x30')],'beep':_0xcb379e['beep']};_0x336980[_0x2200('0x50')](function(_0x48b508){_0x58492d[_0x2200('0x51')]=_0x48b508;socket[_0x2200('0x52')](_0x2200('0x53'),_0x58492d);});return _0x446b10;});});})[_0x2200('0x2a')](respondWithResult(_0x58f424,0xc9))['catch'](handleError(_0x58f424,null));};function getContent(_0x3aaf40){return new BPromise(function(_0x2577b6,_0x224f7a){if(_0x3aaf40[_0x2200('0x32')]){_0x2577b6(_0x3aaf40['text']);return;}return db['Template'][_0x2200('0x54')]({'attributes':[_0x2200('0x55')],'where':{'id':_0x3aaf40[_0x2200('0x33')]},'raw':!![]})[_0x2200('0x2a')](function(_0x5a9288){if(!_0x5a9288)throw new db[(_0x2200('0x34'))]['ValidationError'](_0x2200('0x56'));var _0x4cd09e=Mustache[_0x2200('0x57')](_0x5a9288['html'],_0x3aaf40[_0x2200('0x58')]);_0x2577b6(_0x4cd09e);})[_0x2200('0x59')](function(_0x134412){_0x224f7a(_0x134412);});});}function getRecipients(_0x51f23b){return new BPromise(function(_0x26f0e0,_0x5b6ff3){var _0x3bb191=[];var _0x4ca024=[];_0x51f23b[_0x2200('0x50')](function(_0x1a81e9){var _0x2526d7=_['startCase'](_0x1a81e9['model'][_0x2200('0x43')]());if(_0x2526d7===_0x2200('0x5a')){_0x3bb191=_[_0x2200('0x5b')](_0x3bb191,_0x1a81e9[_0x2200('0x5c')]);}else{if(_[_0x2200('0x41')](_0x2526d7,_0x2200('0x5d')))_0x2526d7=_0x2526d7[_0x2200('0x5e')](_0x2200('0x5d'),_0x2200('0x5f'));_0x1a81e9['ids'][_0x2200('0x50')](function(_0x5e4003){_0x4ca024[_0x2200('0x60')](getAgents(_0x2526d7,_0x5e4003));});}});return BPromise['all'](_0x4ca024)[_0x2200('0x2a')](function(_0x50bc76){_0x3bb191=_['union'](_0x3bb191,_['flatten'](_0x50bc76));_0x26f0e0(_0x3bb191);})[_0x2200('0x59')](function(_0x59f97d){_0x5b6ff3(_0x59f97d);});});}function getAgents(_0xcbbd0c,_0x1904b9){return new BPromise(function(_0x4e98e7,_0x353a50){return db[_0xcbbd0c][_0x2200('0x54')]({'where':{'id':_0x1904b9}})[_0x2200('0x2a')](function(_0xb6a971){return _0xb6a971['getAgents']({'attributes':['id'],'raw':!![]})[_0x2200('0x2a')](function(_0x35e465){var _0xd0f25e=_[_0x2200('0x61')](_0x35e465,'id');_0x4e98e7(_0xd0f25e);});})[_0x2200('0x59')](function(_0x419e46){_0x353a50(_0x419e46);});});}
\ No newline at end of file
+var _0x40c0=['ids','queue','replace','Queue','all','flatten','map','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','./userNotification.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','sendUserNotification','body','hasOwnProperty','text','Sequelize','ValidationError','TemplateId','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','Invalid\x20\x27recipients\x27\x20object','faxqueue','openchannelqueue','whatsappqueue','user','includes','model','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','isEmpty','recipientsDescription','beep','SenderId','recipientsId','sortBy','join','sequelize','transaction','UserNotification','create','forEach','recipient','emit','userNotification:send','catch','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','startCase','toLowerCase'];(function(_0xfd0d40,_0x61e03e){var _0x5ce011=function(_0x12d68e){while(--_0x12d68e){_0xfd0d40['push'](_0xfd0d40['shift']());}};_0x5ce011(++_0x61e03e);}(_0x40c0,0x130));var _0x040c=function(_0x15020e,_0x4ef0f9){_0x15020e=_0x15020e-0x0;var _0x4bd575=_0x40c0[_0x15020e];return _0x4bd575;};'use strict';var emlformat=require(_0x040c('0x0'));var rimraf=require(_0x040c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x040c('0x2'));var rp=require('request-promise');var moment=require(_0x040c('0x3'));var BPromise=require(_0x040c('0x4'));var Mustache=require(_0x040c('0x5'));var util=require(_0x040c('0x6'));var path=require(_0x040c('0x7'));var sox=require('sox');var csv=require(_0x040c('0x8'));var ejs=require(_0x040c('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x040c('0xa'));var squel=require(_0x040c('0xb'));var crypto=require(_0x040c('0xc'));var jsforce=require(_0x040c('0xd'));var deskjs=require(_0x040c('0xe'));var toCsv=require(_0x040c('0x8'));var querystring=require(_0x040c('0xf'));var Papa=require(_0x040c('0x10'));var Redis=require(_0x040c('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x040c('0x12'));var as=require(_0x040c('0x13'));var hardwareService=require(_0x040c('0x14'));var logger=require(_0x040c('0x15'))(_0x040c('0x16'));var utils=require(_0x040c('0x17'));var config=require(_0x040c('0x18'));var licenseUtil=require(_0x040c('0x19'));var db=require('../../mysqldb')['db'];config[_0x040c('0x1a')]=_[_0x040c('0x1b')](config[_0x040c('0x1a')],{'host':_0x040c('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x040c('0x1a')]));require(_0x040c('0x1d'))[_0x040c('0x1e')](socket);function respondWithStatusCode(_0x1c1d29,_0x4491b4){_0x4491b4=_0x4491b4||0xcc;return function(_0x5f05ea){if(_0x5f05ea){return _0x1c1d29[_0x040c('0x1f')](_0x4491b4);}return _0x1c1d29[_0x040c('0x20')](_0x4491b4)[_0x040c('0x21')]();};}function respondWithResult(_0x2f0afb,_0x43910a){_0x43910a=_0x43910a||0xc8;return function(_0x110865){if(_0x110865){return _0x2f0afb[_0x040c('0x20')](_0x43910a)['json'](_0x110865);}};}function respondWithFilteredResult(_0x2e066f,_0x77a9a3){return function(_0x2d8a49){if(_0x2d8a49){var _0xeced93=typeof _0x77a9a3[_0x040c('0x22')]===_0x040c('0x23')&&typeof _0x77a9a3[_0x040c('0x24')]===_0x040c('0x23');var _0x5c6284=_0x2d8a49[_0x040c('0x25')];var _0x5d8455=_0xeced93?0x0:_0x77a9a3[_0x040c('0x22')];var _0x19cbf6=_0xeced93?_0x2d8a49[_0x040c('0x25')]:_0x77a9a3['offset']+_0x77a9a3[_0x040c('0x24')];var _0x55e1d0;if(_0x19cbf6>=_0x5c6284){_0x19cbf6=_0x5c6284;_0x55e1d0=0xc8;}else{_0x55e1d0=0xce;}_0x2e066f[_0x040c('0x20')](_0x55e1d0);return _0x2e066f[_0x040c('0x26')](_0x040c('0x27'),_0x5d8455+'-'+_0x19cbf6+'/'+_0x5c6284)['json'](_0x2d8a49);}return null;};}function patchUpdates(_0x26db0b){return function(_0x1dd80a){try{jsonpatch[_0x040c('0x28')](_0x1dd80a,_0x26db0b,!![]);}catch(_0x50ca2f){return BPromise['reject'](_0x50ca2f);}return _0x1dd80a[_0x040c('0x29')]();};}function saveUpdates(_0x3acb98,_0x21ef6d){return function(_0x48a6bb){if(_0x48a6bb){return _0x48a6bb[_0x040c('0x2a')](_0x3acb98)[_0x040c('0x2b')](function(_0x58a24e){return _0x58a24e;});}return null;};}function removeEntity(_0x3c89c1,_0x4800ad){return function(_0x11478b){if(_0x11478b){return _0x11478b[_0x040c('0x2c')]()[_0x040c('0x2b')](function(){_0x3c89c1[_0x040c('0x20')](0xcc)[_0x040c('0x21')]();});}};}function handleEntityNotFound(_0x57ae95,_0x507da8){return function(_0x4a2770){if(!_0x4a2770){_0x57ae95[_0x040c('0x1f')](0x194);}return _0x4a2770;};}function handleError(_0x1016d8,_0x124396){_0x124396=_0x124396||0x1f4;return function(_0x154ed3){logger[_0x040c('0x2d')](_0x154ed3[_0x040c('0x2e')]);if(_0x154ed3[_0x040c('0x2f')]){delete _0x154ed3[_0x040c('0x2f')];}_0x1016d8[_0x040c('0x20')](_0x124396)[_0x040c('0x30')](_0x154ed3);};}exports[_0x040c('0x31')]=function(_0x524dde,_0x363280,_0x29b3d8){if(!_0x524dde[_0x040c('0x32')][_0x040c('0x33')](_0x040c('0x34'))&&!_0x524dde[_0x040c('0x32')][_0x040c('0x33')]('TemplateId')){throw new db[(_0x040c('0x35'))][(_0x040c('0x36'))]('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x524dde[_0x040c('0x32')][_0x040c('0x33')](_0x040c('0x37'))&&!_0x524dde[_0x040c('0x32')]['hasOwnProperty'](_0x040c('0x38'))){throw new db[(_0x040c('0x35'))][(_0x040c('0x36'))](_0x040c('0x39'));}if(!_0x524dde[_0x040c('0x32')][_0x040c('0x33')](_0x040c('0x3a'))){throw new db[(_0x040c('0x35'))][(_0x040c('0x36'))](_0x040c('0x3b'));}else{try{var _0x357fff=JSON['parse'](_0x524dde[_0x040c('0x32')][_0x040c('0x3a')]);}catch(_0xb61465){logger[_0x040c('0x2d')](_0xb61465);throw new db[(_0x040c('0x35'))][(_0x040c('0x36'))](_0x040c('0x3c'));}var _0x2e8674=['chatqueue',_0x040c('0x3d'),'mailqueue',_0x040c('0x3e'),'smsqueue','voicequeue',_0x040c('0x3f'),'team',_0x040c('0x40')];if(_['some'](_0x357fff,function(_0x185759){return!_[_0x040c('0x41')](_0x2e8674,_0x185759[_0x040c('0x42')]['toLowerCase']());})){throw new db[(_0x040c('0x35'))][(_0x040c('0x36'))](_0x040c('0x43'));}}}var _0x58a27b={};_0x58a27b[_0x040c('0x44')]=_0x524dde[_0x040c('0x32')]['hasOwnProperty'](_0x040c('0x44'))?_0x524dde['body'][_0x040c('0x44')]:_0x524dde[_0x040c('0x40')]['fullname'];_0x58a27b['recipientsDescription']=_[_0x040c('0x45')](_0x524dde['body']['recipientsDescription'])?null:_0x524dde[_0x040c('0x32')][_0x040c('0x46')];_0x58a27b[_0x040c('0x47')]=_0x524dde[_0x040c('0x32')][_0x040c('0x47')]||![];_0x58a27b[_0x040c('0x48')]=_0x524dde[_0x040c('0x40')]['id'];return getContent(_0x524dde['body'])[_0x040c('0x2b')](function(_0x287260){_0x58a27b[_0x040c('0x32')]=_0x287260;return getRecipients(_0x357fff);})['then'](function(_0x24f475){_0x58a27b[_0x040c('0x49')]=_[_0x040c('0x4a')](_0x24f475)[_0x040c('0x4b')](',');return db[_0x040c('0x4c')][_0x040c('0x4d')](function(_0x350df6){return db[_0x040c('0x4e')][_0x040c('0x4f')](_0x58a27b,{'raw':!![],'transaction':_0x350df6})[_0x040c('0x2b')](function(_0x584694){var _0x2dd314={'sender':_0x58a27b[_0x040c('0x44')],'description':_0x58a27b[_0x040c('0x46')],'content':_0x58a27b['body'],'beep':_0x58a27b[_0x040c('0x47')]};_0x24f475[_0x040c('0x50')](function(_0x14d1dd){_0x2dd314[_0x040c('0x51')]=_0x14d1dd;socket[_0x040c('0x52')](_0x040c('0x53'),_0x2dd314);});return _0x584694;});});})['then'](respondWithResult(_0x363280,0xc9))[_0x040c('0x54')](handleError(_0x363280,null));};function getContent(_0x1331ce){return new BPromise(function(_0x37ccf2,_0xfe6fc3){if(_0x1331ce[_0x040c('0x34')]){_0x37ccf2(_0x1331ce[_0x040c('0x34')]);return;}return db[_0x040c('0x55')][_0x040c('0x56')]({'attributes':[_0x040c('0x57')],'where':{'id':_0x1331ce['TemplateId']},'raw':!![]})['then'](function(_0x27e37c){if(!_0x27e37c)throw new db[(_0x040c('0x35'))][(_0x040c('0x36'))](_0x040c('0x58'));var _0x38bd5d=Mustache[_0x040c('0x59')](_0x27e37c['html'],_0x1331ce['view']);_0x37ccf2(_0x38bd5d);})[_0x040c('0x54')](function(_0x25265d){_0xfe6fc3(_0x25265d);});});}function getRecipients(_0x108fa3){return new BPromise(function(_0xd3929,_0x20cb88){var _0xeaf46b=[];var _0x42f9c7=[];_0x108fa3[_0x040c('0x50')](function(_0x38aeba){var _0x47c71e=_[_0x040c('0x5a')](_0x38aeba[_0x040c('0x42')][_0x040c('0x5b')]());if(_0x47c71e==='User'){_0xeaf46b=_['union'](_0xeaf46b,_0x38aeba[_0x040c('0x5c')]);}else{if(_[_0x040c('0x41')](_0x47c71e,_0x040c('0x5d')))_0x47c71e=_0x47c71e[_0x040c('0x5e')]('queue',_0x040c('0x5f'));_0x38aeba[_0x040c('0x5c')][_0x040c('0x50')](function(_0x56d220){_0x42f9c7['push'](getAgents(_0x47c71e,_0x56d220));});}});return BPromise[_0x040c('0x60')](_0x42f9c7)[_0x040c('0x2b')](function(_0x5cc7b1){_0xeaf46b=_['union'](_0xeaf46b,_[_0x040c('0x61')](_0x5cc7b1));_0xd3929(_0xeaf46b);})[_0x040c('0x54')](function(_0x2af133){_0x20cb88(_0x2af133);});});}function getAgents(_0x1448d5,_0x2aa9f8){return new BPromise(function(_0x3dae,_0x52783a){return db[_0x1448d5][_0x040c('0x56')]({'where':{'id':_0x2aa9f8}})[_0x040c('0x2b')](function(_0x42b4fc){return _0x42b4fc['getAgents']({'attributes':['id'],'raw':!![]})[_0x040c('0x2b')](function(_0x263f48){var _0x503fcc=_[_0x040c('0x62')](_0x263f48,'id');_0x3dae(_0x503fcc);});})['catch'](function(_0x2fe896){_0x52783a(_0x2fe896);});});}
\ No newline at end of file
index 9873860..d27c90c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x250d=['events','../../mysqldb','UserNotification','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x4c0c0d,_0x564581){var _0x21a5d3=function(_0x22b1ce){while(--_0x22b1ce){_0x4c0c0d['push'](_0x4c0c0d['shift']());}};_0x21a5d3(++_0x564581);}(_0x250d,0x118));var _0xd250=function(_0x2fc113,_0x45ec6e){_0x2fc113=_0x2fc113-0x0;var _0x5144ce=_0x250d[_0x2fc113];return _0x5144ce;};'use strict';var EventEmitter=require(_0xd250('0x0'));var UserNotification=require(_0xd250('0x1'))['db'][_0xd250('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xd250('0x3'),'afterUpdate':_0xd250('0x4'),'afterDestroy':_0xd250('0x5')};function emitEvent(_0x9f8631){return function(_0x13291e,_0x4f52d8,_0x5bdc4c){UserNotificationEvents[_0xd250('0x6')](_0x9f8631+':'+_0x13291e['id'],_0x13291e);UserNotificationEvents[_0xd250('0x6')](_0x9f8631,_0x13291e);_0x5bdc4c(null);};}for(var e in events){if(events[_0xd250('0x7')](e)){var event=events[e];UserNotification[_0xd250('0x8')](e,emitEvent(event));}}module[_0xd250('0x9')]=UserNotificationEvents;
\ No newline at end of file
+var _0x0a3b=['../../mysqldb','UserNotification','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events'];(function(_0xb8b672,_0x1182f5){var _0x128807=function(_0x31ec15){while(--_0x31ec15){_0xb8b672['push'](_0xb8b672['shift']());}};_0x128807(++_0x1182f5);}(_0x0a3b,0x17b));var _0xb0a3=function(_0x254abd,_0x1ab7f0){_0x254abd=_0x254abd-0x0;var _0x31bf1b=_0x0a3b[_0x254abd];return _0x31bf1b;};'use strict';var EventEmitter=require(_0xb0a3('0x0'));var UserNotification=require(_0xb0a3('0x1'))['db'][_0xb0a3('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0xb0a3('0x3')](0x0);var events={'afterCreate':_0xb0a3('0x4'),'afterUpdate':_0xb0a3('0x5'),'afterDestroy':'remove'};function emitEvent(_0x5637cd){return function(_0x1af162,_0x1fa18d,_0x58060a){UserNotificationEvents['emit'](_0x5637cd+':'+_0x1af162['id'],_0x1af162);UserNotificationEvents[_0xb0a3('0x6')](_0x5637cd,_0x1af162);_0x58060a(null);};}for(var e in events){if(events[_0xb0a3('0x7')](e)){var event=events[e];UserNotification[_0xb0a3('0x8')](e,emitEvent(event));}}module[_0xb0a3('0x9')]=UserNotificationEvents;
\ No newline at end of file
index 507612a..d0d7d25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e61=['path','rimraf','../../config/environment','./userNotification.attributes','define','UserNotification','lodash','../../config/logger','api'];(function(_0x1edf48,_0x4d7a3d){var _0x4d4e5b=function(_0x5677d9){while(--_0x5677d9){_0x1edf48['push'](_0x1edf48['shift']());}};_0x4d4e5b(++_0x4d7a3d);}(_0x4e61,0x1a4));var _0x14e6=function(_0x567fff,_0xd8acd8){_0x567fff=_0x567fff-0x0;var _0x465a37=_0x4e61[_0x567fff];return _0x465a37;};'use strict';var _=require(_0x14e6('0x0'));var util=require('util');var logger=require(_0x14e6('0x1'))(_0x14e6('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x14e6('0x3'));var rimraf=require(_0x14e6('0x4'));var config=require(_0x14e6('0x5'));var attributes=require(_0x14e6('0x6'));module['exports']=function(_0x13fb0c,_0x4bf49e){return _0x13fb0c[_0x14e6('0x7')](_0x14e6('0x8'),attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x6596=['userNotifications','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./userNotification.attributes','exports'];(function(_0x3c4324,_0x409416){var _0x4750f0=function(_0x10e18a){while(--_0x10e18a){_0x3c4324['push'](_0x3c4324['shift']());}};_0x4750f0(++_0x409416);}(_0x6596,0x15e));var _0x6659=function(_0x6fcc6e,_0x5d1c4e){_0x6fcc6e=_0x6fcc6e-0x0;var _0x234cee=_0x6596[_0x6fcc6e];return _0x234cee;};'use strict';var _=require(_0x6659('0x0'));var util=require('util');var logger=require(_0x6659('0x1'))(_0x6659('0x2'));var moment=require(_0x6659('0x3'));var BPromise=require(_0x6659('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6659('0x5'));var rimraf=require(_0x6659('0x6'));var config=require(_0x6659('0x7'));var attributes=require(_0x6659('0x8'));module[_0x6659('0x9')]=function(_0xc9defa,_0x5f08ba){return _0xc9defa['define']('UserNotification',attributes,{'tableName':_0x6659('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x6659('0xb')});};
\ No newline at end of file
index 361f432..b62efe7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4cf=['defaults','localhost','socket.io-emitter','./userNotification.socket','register','request','then','info','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UserNotification,\x20%s,\x20%s','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis'];(function(_0x4a3539,_0x50c0d1){var _0x4d6e0d=function(_0xfc1778){while(--_0xfc1778){_0x4a3539['push'](_0x4a3539['shift']());}};_0x4d6e0d(++_0x50c0d1);}(_0xc4cf,0x92));var _0xfc4c=function(_0x2aea9e,_0x1f587f){_0x2aea9e=_0x2aea9e-0x0;var _0x430b92=_0xc4cf[_0x2aea9e];return _0x430b92;};'use strict';var _=require(_0xfc4c('0x0'));var util=require(_0xfc4c('0x1'));var moment=require(_0xfc4c('0x2'));var BPromise=require('bluebird');var rs=require(_0xfc4c('0x3'));var fs=require('fs');var Redis=require(_0xfc4c('0x4'));var db=require(_0xfc4c('0x5'))['db'];var utils=require(_0xfc4c('0x6'));var logger=require(_0xfc4c('0x7'))(_0xfc4c('0x8'));var config=require(_0xfc4c('0x9'));var jayson=require(_0xfc4c('0xa'));var client=jayson[_0xfc4c('0xb')][_0xfc4c('0xc')]({'port':0x232a});config[_0xfc4c('0xd')]=_[_0xfc4c('0xe')](config[_0xfc4c('0xd')],{'host':_0xfc4c('0xf'),'port':0x18eb});var socket=require(_0xfc4c('0x10'))(new Redis(config[_0xfc4c('0xd')]));require(_0xfc4c('0x11'))[_0xfc4c('0x12')](socket);function respondWithRpcPromise(_0xe24ce,_0x58ce4c,_0x49f445){return new BPromise(function(_0x5c5b1e,_0x12af55){return client[_0xfc4c('0x13')](_0xe24ce,_0x49f445)[_0xfc4c('0x14')](function(_0x5d24d1){logger[_0xfc4c('0x15')]('UserNotification,\x20%s,\x20%s',_0x58ce4c,_0xfc4c('0x16'));logger[_0xfc4c('0x17')](_0xfc4c('0x18'),_0x58ce4c,_0xfc4c('0x16'),JSON[_0xfc4c('0x19')](_0x5d24d1));if(_0x5d24d1[_0xfc4c('0x1a')]){if(_0x5d24d1['error'][_0xfc4c('0x1b')]===0x1f4){logger[_0xfc4c('0x1a')]('UserNotification,\x20%s,\x20%s',_0x58ce4c,_0x5d24d1[_0xfc4c('0x1a')][_0xfc4c('0x1c')]);return _0x12af55(_0x5d24d1[_0xfc4c('0x1a')]['message']);}logger[_0xfc4c('0x1a')](_0xfc4c('0x1d'),_0x58ce4c,_0x5d24d1[_0xfc4c('0x1a')][_0xfc4c('0x1c')]);return _0x5c5b1e(_0x5d24d1['error'][_0xfc4c('0x1c')]);}else{logger[_0xfc4c('0x15')]('UserNotification,\x20%s,\x20%s',_0x58ce4c,_0xfc4c('0x16'));_0x5c5b1e(_0x5d24d1[_0xfc4c('0x1e')][_0xfc4c('0x1c')]);}})[_0xfc4c('0x1f')](function(_0x2e1718){logger[_0xfc4c('0x1a')](_0xfc4c('0x1d'),_0x58ce4c,_0x2e1718);_0x12af55(_0x2e1718);});});}
\ No newline at end of file
+var _0x569d=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis','defaults','localhost','./userNotification.socket','register','request','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','moment','bluebird','randomstring'];(function(_0x40a980,_0xabcc3c){var _0x163f7f=function(_0x23f7e9){while(--_0x23f7e9){_0x40a980['push'](_0x40a980['shift']());}};_0x163f7f(++_0xabcc3c);}(_0x569d,0x183));var _0xd569=function(_0x2490ad,_0x33836e){_0x2490ad=_0x2490ad-0x0;var _0x38262d=_0x569d[_0x2490ad];return _0x38262d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xd569('0x0'));var BPromise=require(_0xd569('0x1'));var rs=require(_0xd569('0x2'));var fs=require('fs');var Redis=require(_0xd569('0x3'));var db=require(_0xd569('0x4'))['db'];var utils=require(_0xd569('0x5'));var logger=require(_0xd569('0x6'))(_0xd569('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd569('0x8')][_0xd569('0x9')]({'port':0x232a});config[_0xd569('0xa')]=_[_0xd569('0xb')](config[_0xd569('0xa')],{'host':_0xd569('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd569('0xa')]));require(_0xd569('0xd'))[_0xd569('0xe')](socket);function respondWithRpcPromise(_0x3b90ec,_0x1fb4a9,_0x41da70){return new BPromise(function(_0x500e6d,_0x5a2f8f){return client[_0xd569('0xf')](_0x3b90ec,_0x41da70)['then'](function(_0x49c102){logger[_0xd569('0x10')](_0xd569('0x11'),_0x1fb4a9,_0xd569('0x12'));logger[_0xd569('0x13')](_0xd569('0x14'),_0x1fb4a9,'request\x20sent',JSON[_0xd569('0x15')](_0x49c102));if(_0x49c102[_0xd569('0x16')]){if(_0x49c102[_0xd569('0x16')][_0xd569('0x17')]===0x1f4){logger[_0xd569('0x16')]('UserNotification,\x20%s,\x20%s',_0x1fb4a9,_0x49c102[_0xd569('0x16')][_0xd569('0x18')]);return _0x5a2f8f(_0x49c102['error'][_0xd569('0x18')]);}logger[_0xd569('0x16')](_0xd569('0x11'),_0x1fb4a9,_0x49c102[_0xd569('0x16')][_0xd569('0x18')]);return _0x500e6d(_0x49c102[_0xd569('0x16')][_0xd569('0x18')]);}else{logger[_0xd569('0x10')](_0xd569('0x11'),_0x1fb4a9,_0xd569('0x12'));_0x500e6d(_0x49c102['result']['message']);}})[_0xd569('0x19')](function(_0x21865f){logger[_0xd569('0x16')](_0xd569('0x11'),_0x1fb4a9,_0x21865f);_0x5a2f8f(_0x21865f);});});}
\ No newline at end of file
index c624e3e..13fe97f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x940e=['length','./userNotification.events','remove','update','register'];(function(_0x2bd61d,_0x10219a){var _0x2e1c19=function(_0x197257){while(--_0x197257){_0x2bd61d['push'](_0x2bd61d['shift']());}};_0x2e1c19(++_0x10219a);}(_0x940e,0x12d));var _0xe940=function(_0x28669c,_0x1f62c4){_0x28669c=_0x28669c-0x0;var _0x4a3af6=_0x940e[_0x28669c];return _0x4a3af6;};'use strict';var UserNotificationEvents=require(_0xe940('0x0'));var events=['save',_0xe940('0x1'),_0xe940('0x2')];function createListener(_0x2bd958,_0x4f8db){return function(_0x4efa6a){_0x4f8db['emit'](_0x2bd958,_0x4efa6a);};}function removeListener(_0x351809,_0x16c474){return function(){UserNotificationEvents['removeListener'](_0x351809,_0x16c474);};}exports[_0xe940('0x3')]=function(_0xa7f54){for(var _0x35f264=0x0,_0x213b2f=events[_0xe940('0x4')];_0x35f264<_0x213b2f;_0x35f264++){var _0x5e3af2=events[_0x35f264];var _0x4537c2=createListener('userNotification:'+_0x5e3af2,_0xa7f54);UserNotificationEvents['on'](_0x5e3af2,_0x4537c2);}};
\ No newline at end of file
+var _0xd702=['save','remove','update','emit','register','userNotification:','./userNotification.events'];(function(_0x325ef4,_0x17d45b){var _0x154d55=function(_0x6c90ab){while(--_0x6c90ab){_0x325ef4['push'](_0x325ef4['shift']());}};_0x154d55(++_0x17d45b);}(_0xd702,0x117));var _0x2d70=function(_0x5b3578,_0x221eb5){_0x5b3578=_0x5b3578-0x0;var _0x5dfc75=_0xd702[_0x5b3578];return _0x5dfc75;};'use strict';var UserNotificationEvents=require(_0x2d70('0x0'));var events=[_0x2d70('0x1'),_0x2d70('0x2'),_0x2d70('0x3')];function createListener(_0x21387a,_0x249578){return function(_0x49b62b){_0x249578[_0x2d70('0x4')](_0x21387a,_0x49b62b);};}function removeListener(_0x41c93d,_0x2477a0){return function(){UserNotificationEvents['removeListener'](_0x41c93d,_0x2477a0);};}exports[_0x2d70('0x5')]=function(_0x4d65ea){for(var _0x34a6bb=0x0,_0xd71d99=events['length'];_0x34a6bb<_0xd71d99;_0x34a6bb++){var _0x28c54c=events[_0x34a6bb];var _0x2d7455=createListener(_0x2d70('0x6')+_0x28c54c,_0x4d65ea);UserNotificationEvents['on'](_0x28c54c,_0x2d7455);}};
\ No newline at end of file
index 753f700..a7cff24 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(_0x3f8d23,_0x16f5ee){var _0x1ffe51=function(_0x3d18d2){while(--_0x3d18d2){_0x3f8d23['push'](_0x3f8d23['shift']());}};_0x1ffe51(++_0x16f5ee);}(_0xa9e0,0x123));var _0x0a9e=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xa9e0[_0x491a7f];return _0x3d8f44;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x77cb04,_0x126c41){var _0x3638c6=function(_0x528ffa){while(--_0x528ffa){_0x77cb04['push'](_0x77cb04['shift']());}};_0x3638c6(++_0x126c41);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index 0a0729c..bd9e538 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0bc=['exports'];(function(_0xdeacee,_0x3f7864){var _0x3a1783=function(_0x3d6bae){while(--_0x3d6bae){_0xdeacee['push'](_0xdeacee['shift']());}};_0x3a1783(++_0x3f7864);}(_0xc0bc,0x136));var _0xcc0b=function(_0x4aa40f,_0x229cca){_0x4aa40f=_0x4aa40f-0x0;var _0x557736=_0xc0bc[_0x4aa40f];return _0x557736;};'use strict';var Sequelize=require('sequelize');module[_0xcc0b('0x0')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xeccc=['exports','sequelize'];(function(_0x32ce8e,_0xe1b31f){var _0x2af5ad=function(_0xfd60ea){while(--_0xfd60ea){_0x32ce8e['push'](_0x32ce8e['shift']());}};_0x2af5ad(++_0xe1b31f);}(_0xeccc,0x1a1));var _0xcecc=function(_0x39e84d,_0x11931d){_0x39e84d=_0x39e84d-0x0;var _0x1991bc=_0xeccc[_0x39e84d];return _0x1991bc;};'use strict';var Sequelize=require(_0xcecc('0x0'));module[_0xcecc('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 384b821..7d678d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3a0=['user_has_openchannel_queues','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports','define','UserOpenchannelQueue'];(function(_0x1488cd,_0x25a893){var _0x63fa13=function(_0x57dd1c){while(--_0x57dd1c){_0x1488cd['push'](_0x1488cd['shift']());}};_0x63fa13(++_0x25a893);}(_0xf3a0,0xaa));var _0x0f3a=function(_0x1998bb,_0x1f1da1){_0x1998bb=_0x1998bb-0x0;var _0x4ae4c9=_0xf3a0[_0x1998bb];return _0x4ae4c9;};'use strict';var _=require(_0x0f3a('0x0'));var util=require(_0x0f3a('0x1'));var logger=require(_0x0f3a('0x2'))(_0x0f3a('0x3'));var moment=require('moment');var BPromise=require(_0x0f3a('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0f3a('0x5'));var rimraf=require(_0x0f3a('0x6'));var config=require(_0x0f3a('0x7'));var attributes=require(_0x0f3a('0x8'));module[_0x0f3a('0x9')]=function(_0x3b600f,_0xee007e){return _0x3b600f[_0x0f3a('0xa')](_0x0f3a('0xb'),attributes,{'tableName':_0x0f3a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xec12=['define','UserOpenchannelQueue','lodash','util','api','bluebird','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports'];(function(_0xea3421,_0x1aa2d7){var _0x2768e0=function(_0x581efe){while(--_0x581efe){_0xea3421['push'](_0xea3421['shift']());}};_0x2768e0(++_0x1aa2d7);}(_0xec12,0x1f1));var _0x2ec1=function(_0x306726,_0x32f5c5){_0x306726=_0x306726-0x0;var _0x105e1c=_0xec12[_0x306726];return _0x105e1c;};'use strict';var _=require(_0x2ec1('0x0'));var util=require(_0x2ec1('0x1'));var logger=require('../../config/logger')(_0x2ec1('0x2'));var moment=require('moment');var BPromise=require(_0x2ec1('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2ec1('0x4'));var rimraf=require(_0x2ec1('0x5'));var config=require(_0x2ec1('0x6'));var attributes=require(_0x2ec1('0x7'));module[_0x2ec1('0x8')]=function(_0xd2c56f,_0x1788b7){return _0xd2c56f[_0x2ec1('0x9')](_0x2ec1('0xa'),attributes,{'tableName':'user_has_openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ed5bbdc..c3a6b7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fdd=['../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','UserOpenchannelQueue,\x20%s,\x20%s','message','result','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x2fa5ab,_0x56a126){var _0xbe1c8d=function(_0x5a19f9){while(--_0x5a19f9){_0x2fa5ab['push'](_0x2fa5ab['shift']());}};_0xbe1c8d(++_0x56a126);}(_0x2fdd,0xb6));var _0xd2fd=function(_0x4a5e54,_0x32a6a5){_0x4a5e54=_0x4a5e54-0x0;var _0xfd9608=_0x2fdd[_0x4a5e54];return _0xfd9608;};'use strict';var _=require(_0xd2fd('0x0'));var util=require('util');var moment=require(_0xd2fd('0x1'));var BPromise=require('bluebird');var rs=require(_0xd2fd('0x2'));var fs=require('fs');var Redis=require(_0xd2fd('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xd2fd('0x4'));var logger=require(_0xd2fd('0x5'))(_0xd2fd('0x6'));var config=require(_0xd2fd('0x7'));var jayson=require(_0xd2fd('0x8'));var client=jayson['client'][_0xd2fd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3ffd37,_0x373f45,_0x509771){return new BPromise(function(_0xbb2db2,_0x184ab9){return client[_0xd2fd('0xa')](_0x3ffd37,_0x509771)[_0xd2fd('0xb')](function(_0xe65a24){logger[_0xd2fd('0xc')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x373f45,_0xd2fd('0xd'));logger[_0xd2fd('0xe')](_0xd2fd('0xf'),_0x373f45,_0xd2fd('0xd'),JSON['stringify'](_0xe65a24));if(_0xe65a24['error']){if(_0xe65a24[_0xd2fd('0x10')][_0xd2fd('0x11')]===0x1f4){logger[_0xd2fd('0x10')](_0xd2fd('0x12'),_0x373f45,_0xe65a24[_0xd2fd('0x10')][_0xd2fd('0x13')]);return _0x184ab9(_0xe65a24[_0xd2fd('0x10')][_0xd2fd('0x13')]);}logger[_0xd2fd('0x10')](_0xd2fd('0x12'),_0x373f45,_0xe65a24[_0xd2fd('0x10')][_0xd2fd('0x13')]);return _0xbb2db2(_0xe65a24[_0xd2fd('0x10')][_0xd2fd('0x13')]);}else{logger['info'](_0xd2fd('0x12'),_0x373f45,_0xd2fd('0xd'));_0xbb2db2(_0xe65a24[_0xd2fd('0x14')][_0xd2fd('0x13')]);}})['catch'](function(_0x27508c){logger[_0xd2fd('0x10')](_0xd2fd('0x12'),_0x373f45,_0x27508c);_0x184ab9(_0x27508c);});});}
\ No newline at end of file
+var _0x75dc=['UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent'];(function(_0x4f776e,_0x6b5b8f){var _0x4ba9dc=function(_0x57b88e){while(--_0x57b88e){_0x4f776e['push'](_0x4f776e['shift']());}};_0x4ba9dc(++_0x6b5b8f);}(_0x75dc,0x149));var _0xc75d=function(_0x8b9e62,_0x173b44){_0x8b9e62=_0x8b9e62-0x0;var _0x31a9a0=_0x75dc[_0x8b9e62];return _0x31a9a0;};'use strict';var _=require(_0xc75d('0x0'));var util=require(_0xc75d('0x1'));var moment=require(_0xc75d('0x2'));var BPromise=require('bluebird');var rs=require(_0xc75d('0x3'));var fs=require('fs');var Redis=require(_0xc75d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc75d('0x5'));var logger=require(_0xc75d('0x6'))(_0xc75d('0x7'));var config=require(_0xc75d('0x8'));var jayson=require(_0xc75d('0x9'));var client=jayson[_0xc75d('0xa')][_0xc75d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1442f8,_0x2274eb,_0x5dc6ba){return new BPromise(function(_0x55a44b,_0xcb4db7){return client[_0xc75d('0xc')](_0x1442f8,_0x5dc6ba)[_0xc75d('0xd')](function(_0x35d1df){logger['info'](_0xc75d('0xe'),_0x2274eb,_0xc75d('0xf'));logger['debug'](_0xc75d('0x10'),_0x2274eb,_0xc75d('0xf'),JSON[_0xc75d('0x11')](_0x35d1df));if(_0x35d1df[_0xc75d('0x12')]){if(_0x35d1df[_0xc75d('0x12')][_0xc75d('0x13')]===0x1f4){logger['error'](_0xc75d('0xe'),_0x2274eb,_0x35d1df[_0xc75d('0x12')][_0xc75d('0x14')]);return _0xcb4db7(_0x35d1df[_0xc75d('0x12')][_0xc75d('0x14')]);}logger['error'](_0xc75d('0xe'),_0x2274eb,_0x35d1df[_0xc75d('0x12')][_0xc75d('0x14')]);return _0x55a44b(_0x35d1df[_0xc75d('0x12')][_0xc75d('0x14')]);}else{logger['info'](_0xc75d('0xe'),_0x2274eb,_0xc75d('0xf'));_0x55a44b(_0x35d1df[_0xc75d('0x15')]['message']);}})[_0xc75d('0x16')](function(_0x488210){logger['error'](_0xc75d('0xe'),_0x2274eb,_0x488210);_0xcb4db7(_0x488210);});});}
\ No newline at end of file
index cc0bd8e..4ae4539 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36dc=['fs-extra','../../config/environment','get','/:id','isAuthenticated','show','/:id/sections','getSections','/:id/resources','getResources','post','create','clone','addSections','addResources','update','destroy','delete','removeSections','exports','util','path','connect-timeout','Router'];(function(_0x46ae5a,_0x2a38d0){var _0x434986=function(_0x22735d){while(--_0x22735d){_0x46ae5a['push'](_0x46ae5a['shift']());}};_0x434986(++_0x2a38d0);}(_0x36dc,0x8c));var _0xc36d=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x36dc[_0x2641f9];return _0x585741;};'use strict';var multer=require('multer');var util=require(_0xc36d('0x0'));var path=require(_0xc36d('0x1'));var timeout=require(_0xc36d('0x2'));var express=require('express');var router=express[_0xc36d('0x3')]();var fs_extra=require(_0xc36d('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xc36d('0x5'));var controller=require('./userProfile.controller');router[_0xc36d('0x6')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router['get'](_0xc36d('0x7'),auth[_0xc36d('0x8')](),controller[_0xc36d('0x9')]);router[_0xc36d('0x6')](_0xc36d('0xa'),auth[_0xc36d('0x8')](),controller[_0xc36d('0xb')]);router[_0xc36d('0x6')](_0xc36d('0xc'),auth['isAuthenticated'](),controller[_0xc36d('0xd')]);router[_0xc36d('0xe')]('/',auth[_0xc36d('0x8')](),controller[_0xc36d('0xf')]);router[_0xc36d('0xe')]('/:id/clone',auth[_0xc36d('0x8')](),controller[_0xc36d('0x10')]);router[_0xc36d('0xe')](_0xc36d('0xa'),auth[_0xc36d('0x8')](),controller[_0xc36d('0x11')]);router[_0xc36d('0xe')](_0xc36d('0xc'),auth['isAuthenticated'](),controller[_0xc36d('0x12')]);router['put'](_0xc36d('0x7'),auth[_0xc36d('0x8')](),controller[_0xc36d('0x13')]);router['delete'](_0xc36d('0x7'),auth[_0xc36d('0x8')](),controller[_0xc36d('0x14')]);router[_0xc36d('0x15')](_0xc36d('0xa'),auth['isAuthenticated'](),controller[_0xc36d('0x16')]);router['delete']('/:id/resources',auth['isAuthenticated'](),controller['removeResources']);module[_0xc36d('0x17')]=router;
\ No newline at end of file
+var _0x4a12=['clone','/:id/sections','/:id/resources','put','update','destroy','removeResources','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./userProfile.controller','get','isAuthenticated','index','/:id','show','getSections','getResources','post','create','/:id/clone'];(function(_0x47049a,_0x1fee6b){var _0x2ce01d=function(_0x581818){while(--_0x581818){_0x47049a['push'](_0x47049a['shift']());}};_0x2ce01d(++_0x1fee6b);}(_0x4a12,0xa4));var _0x24a1=function(_0x59887e,_0x31d750){_0x59887e=_0x59887e-0x0;var _0x1d3936=_0x4a12[_0x59887e];return _0x1d3936;};'use strict';var multer=require(_0x24a1('0x0'));var util=require(_0x24a1('0x1'));var path=require('path');var timeout=require(_0x24a1('0x2'));var express=require(_0x24a1('0x3'));var router=express[_0x24a1('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x24a1('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x24a1('0x6'));var controller=require(_0x24a1('0x7'));router[_0x24a1('0x8')]('/',auth[_0x24a1('0x9')](),controller[_0x24a1('0xa')]);router[_0x24a1('0x8')]('/describe',auth[_0x24a1('0x9')](),controller['describe']);router[_0x24a1('0x8')](_0x24a1('0xb'),auth['isAuthenticated'](),controller[_0x24a1('0xc')]);router[_0x24a1('0x8')]('/:id/sections',auth[_0x24a1('0x9')](),controller[_0x24a1('0xd')]);router[_0x24a1('0x8')]('/:id/resources',auth[_0x24a1('0x9')](),controller[_0x24a1('0xe')]);router[_0x24a1('0xf')]('/',auth['isAuthenticated'](),controller[_0x24a1('0x10')]);router[_0x24a1('0xf')](_0x24a1('0x11'),auth[_0x24a1('0x9')](),controller[_0x24a1('0x12')]);router[_0x24a1('0xf')](_0x24a1('0x13'),auth['isAuthenticated'](),controller['addSections']);router[_0x24a1('0xf')](_0x24a1('0x14'),auth['isAuthenticated'](),controller['addResources']);router[_0x24a1('0x15')](_0x24a1('0xb'),auth[_0x24a1('0x9')](),controller[_0x24a1('0x16')]);router['delete'](_0x24a1('0xb'),auth[_0x24a1('0x9')](),controller[_0x24a1('0x17')]);router['delete'](_0x24a1('0x13'),auth[_0x24a1('0x9')](),controller['removeSections']);router['delete']('/:id/resources',auth['isAuthenticated'](),controller[_0x24a1('0x18')]);module[_0x24a1('0x19')]=router;
\ No newline at end of file
index 54a35d7..e27254c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2927=['setDataValue','crudPermissions','BOOLEAN','sequelize','STRING','name'];(function(_0x1c1ea2,_0x2bb56d){var _0x2d064a=function(_0x1231ff){while(--_0x1231ff){_0x1c1ea2['push'](_0x1c1ea2['shift']());}};_0x2d064a(++_0x2bb56d);}(_0x2927,0x1ad));var _0x7292=function(_0x202a40,_0x1172d2){_0x202a40=_0x202a40-0x0;var _0x3a9eb1=_0x2927[_0x202a40];return _0x3a9eb1;};'use strict';var Sequelize=require(_0x7292('0x0'));module['exports']={'name':{'type':Sequelize[_0x7292('0x1')],'allowNull':![],'unique':_0x7292('0x2')},'crudPermissions':{'type':Sequelize[_0x7292('0x1')],'set':function(_0x345866){this[_0x7292('0x3')](_0x7292('0x4'),_0x345866?_0x345866['join'](''):[]);},'get':function(){return this['getDataValue']('crudPermissions')?this['getDataValue'](_0x7292('0x4'))['split'](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x7292('0x5')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x7292('0x5')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x7292('0x5')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x7292('0x5')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x7292('0x5')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x7292('0x5')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x7292('0x5')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x3b0e=['split','BOOLEAN','sequelize','exports','STRING','name','crudPermissions','join','getDataValue'];(function(_0x4de816,_0x523df4){var _0x4bae3b=function(_0x3e7d74){while(--_0x3e7d74){_0x4de816['push'](_0x4de816['shift']());}};_0x4bae3b(++_0x523df4);}(_0x3b0e,0xec));var _0xe3b0=function(_0xb12e19,_0xd0bcc1){_0xb12e19=_0xb12e19-0x0;var _0xd166ef=_0x3b0e[_0xb12e19];return _0xd166ef;};'use strict';var Sequelize=require(_0xe3b0('0x0'));module[_0xe3b0('0x1')]={'name':{'type':Sequelize[_0xe3b0('0x2')],'allowNull':![],'unique':_0xe3b0('0x3')},'crudPermissions':{'type':Sequelize[_0xe3b0('0x2')],'set':function(_0x55968d){this['setDataValue'](_0xe3b0('0x4'),_0x55968d?_0x55968d[_0xe3b0('0x5')](''):[]);},'get':function(){return this['getDataValue'](_0xe3b0('0x4'))?this[_0xe3b0('0x6')](_0xe3b0('0x4'))[_0xe3b0('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xe3b0('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xe3b0('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xe3b0('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xe3b0('0x8')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xe3b0('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xe3b0('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xe3b0('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xe3b0('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xe3b0('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index bdbb22a..4e1b9f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4137=['userProfileId','push','ids','enabled','includes','subsections','findOne','Dashboard','forEach','resourceId','Plugin','addResources','bulkCreate','removeResources','section','Missing\x20section\x20parameter','hasOwnProperty','nolimit','No\x20User\x20Profile\x20found\x20for\x20id\x20','getResources','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','./userProfile.socket','register','status','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','end','sendStatus','stack','name','send','index','map','UserProfile','rawAttributes','type','key','model','keys','filters','intersection','attributes','fields','length','query','order','sort','where','pick','filter','merge','include','findAll','rows','catch','show','includeAll','options','create','body','clone','params','find','get','omit','createdAt','crudPermissions','updatedAt','sequelize','transaction','UserProfileSection','each','autoAssociation','UserProfileResource','Resources','destroy','describe','addSections','sectionId'];(function(_0x133990,_0x334b7a){var _0x176242=function(_0x3ac1c0){while(--_0x3ac1c0){_0x133990['push'](_0x133990['shift']());}};_0x176242(++_0x334b7a);}(_0x4137,0xf8));var _0x7413=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x4137[_0x2c91e9];return _0x13f0ff;};'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'];config[_0x7413('0x1a')]=_[_0x7413('0x1b')](config[_0x7413('0x1a')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x7413('0x1c'))[_0x7413('0x1d')](socket);function respondWithStatusCode(_0x49f0f6,_0x1a42aa){_0x1a42aa=_0x1a42aa||0xcc;return function(_0x45bef0){if(_0x45bef0){return _0x49f0f6['sendStatus'](_0x1a42aa);}return _0x49f0f6[_0x7413('0x1e')](_0x1a42aa)['end']();};}function respondWithResult(_0x4b9a5b,_0x26501b){_0x26501b=_0x26501b||0xc8;return function(_0x568d1f){if(_0x568d1f){return _0x4b9a5b[_0x7413('0x1e')](_0x26501b)['json'](_0x568d1f);}};}function respondWithFilteredResult(_0x2036b6,_0x3230d8){return function(_0x19157f){if(_0x19157f){var _0x12a01e=typeof _0x3230d8[_0x7413('0x1f')]===_0x7413('0x20')&&typeof _0x3230d8['limit']===_0x7413('0x20');var _0x17c062=_0x19157f[_0x7413('0x21')];var _0xfe5b8c=_0x12a01e?0x0:_0x3230d8['offset'];var _0x239d0e=_0x12a01e?_0x19157f[_0x7413('0x21')]:_0x3230d8[_0x7413('0x1f')]+_0x3230d8[_0x7413('0x22')];var _0x409392;if(_0x239d0e>=_0x17c062){_0x239d0e=_0x17c062;_0x409392=0xc8;}else{_0x409392=0xce;}_0x2036b6[_0x7413('0x1e')](_0x409392);return _0x2036b6[_0x7413('0x23')](_0x7413('0x24'),_0xfe5b8c+'-'+_0x239d0e+'/'+_0x17c062)['json'](_0x19157f);}return null;};}function patchUpdates(_0x5f12a2){return function(_0x138508){try{jsonpatch['apply'](_0x138508,_0x5f12a2,!![]);}catch(_0x1585ba){return BPromise[_0x7413('0x25')](_0x1585ba);}return _0x138508[_0x7413('0x26')]();};}function saveUpdates(_0x2fc0f4,_0x1d46e9){return function(_0x346ce8){if(_0x346ce8){return _0x346ce8[_0x7413('0x27')](_0x2fc0f4)[_0x7413('0x28')](function(_0x1d455b){return _0x1d455b;});}return null;};}function removeEntity(_0x5a8329,_0x5cb15f){return function(_0x11b210){if(_0x11b210){return _0x11b210['destroy']()[_0x7413('0x28')](function(){_0x5a8329[_0x7413('0x1e')](0xcc)[_0x7413('0x29')]();});}};}function handleEntityNotFound(_0x4c2e90,_0x35e0fd){return function(_0x896552){if(!_0x896552){_0x4c2e90[_0x7413('0x2a')](0x194);}return _0x896552;};}function handleError(_0x4843fd,_0x19970c){_0x19970c=_0x19970c||0x1f4;return function(_0x2e521f){logger['error'](_0x2e521f[_0x7413('0x2b')]);if(_0x2e521f['name']){delete _0x2e521f[_0x7413('0x2c')];}_0x4843fd[_0x7413('0x1e')](_0x19970c)[_0x7413('0x2d')](_0x2e521f);};}exports[_0x7413('0x2e')]=function(_0x25fa52,_0x2004ea){var _0x5bb3ea={},_0x1ffb6f={},_0x17c342={'count':0x0,'rows':[]};var _0x39db32=_[_0x7413('0x2f')](db[_0x7413('0x30')][_0x7413('0x31')],function(_0x185cfe){return{'name':_0x185cfe['fieldName'],'type':_0x185cfe[_0x7413('0x32')][_0x7413('0x33')]};});_0x1ffb6f[_0x7413('0x34')]=_[_0x7413('0x2f')](_0x39db32,_0x7413('0x2c'));_0x1ffb6f['query']=_[_0x7413('0x35')](_0x25fa52['query']);_0x1ffb6f[_0x7413('0x36')]=_[_0x7413('0x37')](_0x1ffb6f[_0x7413('0x34')],_0x1ffb6f['query']);_0x5bb3ea[_0x7413('0x38')]=_['intersection'](_0x1ffb6f[_0x7413('0x34')],qs[_0x7413('0x39')](_0x25fa52['query']['fields']));_0x5bb3ea[_0x7413('0x38')]=_0x5bb3ea[_0x7413('0x38')][_0x7413('0x3a')]?_0x5bb3ea['attributes']:_0x1ffb6f['model'];if(!_0x25fa52[_0x7413('0x3b')]['hasOwnProperty']('nolimit')){_0x5bb3ea[_0x7413('0x22')]=qs['limit'](_0x25fa52[_0x7413('0x3b')][_0x7413('0x22')]);_0x5bb3ea[_0x7413('0x1f')]=qs[_0x7413('0x1f')](_0x25fa52[_0x7413('0x3b')]['offset']);}_0x5bb3ea[_0x7413('0x3c')]=qs[_0x7413('0x3d')](_0x25fa52[_0x7413('0x3b')][_0x7413('0x3d')]);_0x5bb3ea[_0x7413('0x3e')]=qs[_0x7413('0x36')](_[_0x7413('0x3f')](_0x25fa52[_0x7413('0x3b')],_0x1ffb6f[_0x7413('0x36')]),_0x39db32);if(_0x25fa52[_0x7413('0x3b')][_0x7413('0x40')]){_0x5bb3ea[_0x7413('0x3e')]=_['merge'](_0x5bb3ea[_0x7413('0x3e')],{'$or':_['map'](_0x39db32,function(_0x56cb6f){if(_0x56cb6f['type']!=='VIRTUAL'){var _0x5c86ad={};_0x5c86ad[_0x56cb6f[_0x7413('0x2c')]]={'$like':'%'+_0x25fa52['query']['filter']+'%'};return _0x5c86ad;}})});}_0x5bb3ea=_[_0x7413('0x41')]({},_0x5bb3ea,_0x25fa52['options']);var _0x4c6746={'where':_0x5bb3ea[_0x7413('0x3e')]};return db[_0x7413('0x30')][_0x7413('0x21')](_0x4c6746)[_0x7413('0x28')](function(_0x8049c0){_0x17c342['count']=_0x8049c0;if(_0x25fa52[_0x7413('0x3b')]['includeAll']){_0x5bb3ea[_0x7413('0x42')]=[{'all':!![]}];}return db[_0x7413('0x30')][_0x7413('0x43')](_0x5bb3ea);})[_0x7413('0x28')](function(_0x3f7da2){_0x17c342[_0x7413('0x44')]=_0x3f7da2;return _0x17c342;})[_0x7413('0x28')](respondWithFilteredResult(_0x2004ea,_0x5bb3ea))[_0x7413('0x45')](handleError(_0x2004ea,null));};exports[_0x7413('0x46')]=function(_0x1dd908,_0x38cd61){var _0x1e8bbd={'raw':![],'where':{'id':_0x1dd908['params']['id']}},_0x3fbec4={};_0x3fbec4[_0x7413('0x34')]=_[_0x7413('0x35')](db[_0x7413('0x30')][_0x7413('0x31')]);_0x3fbec4[_0x7413('0x3b')]=_[_0x7413('0x35')](_0x1dd908[_0x7413('0x3b')]);_0x3fbec4[_0x7413('0x36')]=_[_0x7413('0x37')](_0x3fbec4[_0x7413('0x34')],_0x3fbec4[_0x7413('0x3b')]);_0x1e8bbd['attributes']=_[_0x7413('0x37')](_0x3fbec4['model'],qs[_0x7413('0x39')](_0x1dd908[_0x7413('0x3b')][_0x7413('0x39')]));_0x1e8bbd[_0x7413('0x38')]=_0x1e8bbd[_0x7413('0x38')][_0x7413('0x3a')]?_0x1e8bbd[_0x7413('0x38')]:_0x3fbec4[_0x7413('0x34')];if(_0x1dd908[_0x7413('0x3b')][_0x7413('0x47')]){_0x1e8bbd['include']=[{'all':!![]}];}_0x1e8bbd=_['merge']({},_0x1e8bbd,_0x1dd908[_0x7413('0x48')]);return db['UserProfile']['find'](_0x1e8bbd)[_0x7413('0x28')](handleEntityNotFound(_0x38cd61,null))[_0x7413('0x28')](respondWithResult(_0x38cd61,null))['catch'](handleError(_0x38cd61,null));};exports[_0x7413('0x49')]=function(_0x586d25,_0x562bae){return db[_0x7413('0x30')]['create'](_0x586d25[_0x7413('0x4a')],{})[_0x7413('0x28')](respondWithResult(_0x562bae,0xc9))[_0x7413('0x45')](handleError(_0x562bae,null));};exports[_0x7413('0x4b')]=function(_0x1b8859,_0x6f1d2d){var _0x153a9c={'where':{'id':_0x1b8859[_0x7413('0x4c')]['id']}},_0xde6773={};_0xde6773[_0x7413('0x34')]=_['keys'](db[_0x7413('0x30')]['rawAttributes']);_0x153a9c['attributes']=_['intersection'](_0xde6773[_0x7413('0x34')],qs[_0x7413('0x39')](_0x1b8859[_0x7413('0x3b')][_0x7413('0x39')]));_0x153a9c['attributes']=_0x153a9c['attributes'][_0x7413('0x3a')]?_0x153a9c['attributes']:_0xde6773[_0x7413('0x34')];if(_0x1b8859['query']['includeAll']){_0x153a9c['include']=[{'all':!![]}];}_0x153a9c=_['merge']({},_0x153a9c,_0x1b8859['options']);return db[_0x7413('0x30')][_0x7413('0x4d')](_0x153a9c)[_0x7413('0x28')](handleEntityNotFound(_0x6f1d2d,null))[_0x7413('0x28')](function(_0x606e03){if(_0x606e03){var _0x5a3a60=_0x606e03[_0x7413('0x4e')]({'plain':!![]});_0x5a3a60=qs[_0x7413('0x4f')](_0x5a3a60,['id',_0x7413('0x50'),'updatedAt',_0x7413('0x51')]);_0x1b8859['body']=_['omit'](_0x1b8859[_0x7413('0x4a')],['id',_0x7413('0x50'),_0x7413('0x52')]);return db[_0x7413('0x53')][_0x7413('0x54')](function(_0x2e0c7e){return db['UserProfile'][_0x7413('0x49')](_['merge'](_0x5a3a60,_0x1b8859[_0x7413('0x4a')]),{'include':_0x1b8859['query'][_0x7413('0x47')]?[{'all':!![]}]:undefined,'transaction':_0x2e0c7e})['then'](function(_0x400dfc){var _0x262f77=_0x400dfc['get']({'plain':!![]});return db[_0x7413('0x55')]['findAll']({'where':{'userProfileId':_0x1b8859[_0x7413('0x4c')]['id']},'raw':!![]})[_0x7413('0x28')](function(_0x5163ca){if(_0x5163ca){return BPromise[_0x7413('0x56')](_0x5163ca,function(_0x12048c){return new BPromise(function(_0x59d639,_0x3ce34c){if(_0x12048c[_0x7413('0x57')]===null||_0x12048c['autoAssociation']===0x1)_0x59d639(null);return db[_0x7413('0x58')][_0x7413('0x43')]({'where':{'sectionId':_0x12048c['id']},'raw':!![]})[_0x7413('0x28')](function(_0x395e3b){var _0x40fcc8=_[_0x7413('0x2f')](_0x395e3b,function(_0x3df7ba){return qs[_0x7413('0x4f')](_0x3df7ba,['id','createdAt',_0x7413('0x52'),'sectionId']);});_0x59d639(_0x40fcc8);})[_0x7413('0x45')](function(_0x37a55c){_0x3ce34c(_0x37a55c);});})[_0x7413('0x28')](function(_0x3e7058){var _0x4c8996=qs['omit'](_0x12048c,['id','createdAt','updatedAt']);_0x4c8996['userProfileId']=_0x262f77['id'];if(_0x3e7058)_0x4c8996[_0x7413('0x59')]=_0x3e7058;return _0x4c8996;})[_0x7413('0x28')](function(_0x1f023f){return db['UserProfileSection'][_0x7413('0x49')](_0x1f023f,{'include':[{'model':db[_0x7413('0x58')],'as':_0x7413('0x59')}],'raw':!![],'transaction':_0x2e0c7e});});})[_0x7413('0x28')](function(){return _0x262f77;});}});});});}})[_0x7413('0x28')](respondWithResult(_0x6f1d2d,0xc9))[_0x7413('0x45')](handleError(_0x6f1d2d,null));};exports[_0x7413('0x27')]=function(_0x295a0a,_0x1ec131){if(_0x295a0a[_0x7413('0x4a')]['id']){delete _0x295a0a[_0x7413('0x4a')]['id'];}return db[_0x7413('0x30')][_0x7413('0x4d')]({'where':{'id':_0x295a0a['params']['id']}})[_0x7413('0x28')](handleEntityNotFound(_0x1ec131,null))[_0x7413('0x28')](saveUpdates(_0x295a0a['body'],null))[_0x7413('0x28')](respondWithResult(_0x1ec131,null))[_0x7413('0x45')](handleError(_0x1ec131,null));};exports[_0x7413('0x5a')]=function(_0x5e4aa1,_0x102fd2){return db[_0x7413('0x30')]['find']({'where':{'id':_0x5e4aa1[_0x7413('0x4c')]['id']}})[_0x7413('0x28')](handleEntityNotFound(_0x102fd2,null))['then'](removeEntity(_0x102fd2,null))[_0x7413('0x45')](handleError(_0x102fd2,null));};exports['describe']=function(_0x537458,_0xbb819a){return db[_0x7413('0x30')][_0x7413('0x5b')]()[_0x7413('0x28')](respondWithResult(_0xbb819a,null))[_0x7413('0x45')](handleError(_0xbb819a,null));};exports[_0x7413('0x5c')]=function(_0x6171a9,_0x2f8637){var _0x5bed58=_0x6171a9[_0x7413('0x4a')];return db['UserProfile'][_0x7413('0x4d')]({'where':{'id':_0x6171a9[_0x7413('0x4c')]['id']}})[_0x7413('0x28')](handleEntityNotFound(_0x2f8637,null))[_0x7413('0x28')](function(_0x2c4664){if(_0x2c4664){return db[_0x7413('0x53')][_0x7413('0x54')](function(_0x46983f){return db[_0x7413('0x55')]['destroy']({'where':{'userProfileId':_0x6171a9[_0x7413('0x4c')]['id'],'sectionId':_[_0x7413('0x2f')](_0x5bed58,function(_0x53354b){return _0x53354b[_0x7413('0x5d')];})},'transaction':_0x46983f})[_0x7413('0x28')](function(){var _0x599a91=_[_0x7413('0x2f')](_0x5bed58,function(_0x4b676a){_0x4b676a[_0x7413('0x5e')]=_0x6171a9[_0x7413('0x4c')]['id'];return _0x4b676a;});var _0x54f03d=[];return BPromise['each'](_0x599a91,function(_0x227a66){return db[_0x7413('0x55')][_0x7413('0x49')](_0x227a66,{'include':[{'model':db['UserProfileResource'],'as':_0x7413('0x59')}],'raw':!![],'transaction':_0x46983f})[_0x7413('0x28')](function(_0x25c93a){_0x54f03d[_0x7413('0x5f')](_0x25c93a[_0x7413('0x4e')]({'plain':!![]}));});})[_0x7413('0x28')](function(){return _0x54f03d;});});});}})['then'](function(_0x3b6975){return _0x3b6975;})[_0x7413('0x28')](respondWithResult(_0x2f8637,null))[_0x7413('0x45')](handleError(_0x2f8637,null));};exports['removeSections']=function(_0x350b01,_0x18d2e7){var _0x82869a;return db[_0x7413('0x30')][_0x7413('0x4d')]({'where':{'id':_0x350b01[_0x7413('0x4c')]['id']},'attributes':['id',_0x7413('0x2c')]})[_0x7413('0x28')](handleEntityNotFound(_0x18d2e7,null))[_0x7413('0x28')](function(_0x5c68de){if(_0x5c68de){_0x82869a=_0x5c68de;return db[_0x7413('0x55')][_0x7413('0x5a')]({'where':{'userProfileId':_0x350b01[_0x7413('0x4c')]['id'],'sectionId':_0x350b01[_0x7413('0x3b')][_0x7413('0x60')]}});}})[_0x7413('0x28')](function(){return _0x82869a;})['then'](respondWithStatusCode(_0x18d2e7,null))[_0x7413('0x45')](handleError(_0x18d2e7,null));};exports['getSections']=function(_0x4af607,_0xefd1e7){var _0x19ff87=[];var _0x4e49ff=[];return db[_0x7413('0x55')][_0x7413('0x43')]({'where':{'userProfileId':_0x4af607[_0x7413('0x4c')]['id']},'raw':!![]})[_0x7413('0x28')](function(_0x33b279){_0x19ff87=_[_0x7413('0x40')](_0x33b279,function(_0x2d361c){return _0x2d361c[_0x7413('0x61')]===0x1||_['includes']([0x3eb,0x709],_0x2d361c[_0x7413('0x5d')]);});if(!_['isEmpty'](_0x19ff87)){return _[_0x7413('0x2f')](_0x19ff87,function(_0x3ad956){return _0x3ad956['sectionId'];});}else{return;}})[_0x7413('0x28')](function(_0x1f4ce0){if(_0x1f4ce0)_0x4e49ff=_0x1f4ce0;if(_[_0x7413('0x62')](_0x4e49ff,0x64)){var _0x300a17=_[_0x7413('0x4d')](_0x19ff87,{'sectionId':0x64});return hasDefaultDashboard(_0x300a17)[_0x7413('0x28')](function(_0x3dcbfb){return _[_0x7413('0x2f')](_0x19ff87,function(_0x2661b2){if(_0x2661b2[_0x7413('0x5d')]===0x64){_0x2661b2['subsections']=_0x3dcbfb;}return _0x2661b2;});});}else{return;}})[_0x7413('0x28')](function(_0x290acf){if(_0x290acf)_0x19ff87=_0x290acf;if(_['includes'](_0x4e49ff,0x3eb)){var _0x55d7a8=_['find'](_0x19ff87,{'sectionId':0x3eb});return getCustomDashboards(_0x55d7a8)[_0x7413('0x28')](function(_0x521f0c){return _[_0x7413('0x2f')](_0x19ff87,function(_0x44e22d){if(_0x55d7a8[_0x7413('0x61')]){if(_0x44e22d[_0x7413('0x5d')]===0x3eb){_0x44e22d[_0x7413('0x63')]=_0x521f0c;}}else{if(_0x44e22d[_0x7413('0x5d')]===0x64){_0x44e22d[_0x7413('0x63')]=_0x521f0c;}}return _0x44e22d;});});}else{return;}})[_0x7413('0x28')](function(_0x3efa75){if(_0x3efa75)_0x19ff87=_0x3efa75;if(_['includes'](_0x4e49ff,0x709)){var _0x1c0800=_[_0x7413('0x4d')](_0x19ff87,{'sectionId':0x709});return getPlugins(_0x1c0800)[_0x7413('0x28')](function(_0x4ea60e){if(_0x1c0800[_0x7413('0x61')]){return _[_0x7413('0x2f')](_0x19ff87,function(_0x337180){if(_0x337180[_0x7413('0x5d')]===0x709){_0x337180[_0x7413('0x63')]=_0x4ea60e;}return _0x337180;});}else{var _0x19a777={'sectionId':0x76c,'enabled':0x1,'subsections':_0x4ea60e};var _0x1521ad=_[_0x7413('0x2f')](_0x19ff87);_0x1521ad[_0x7413('0x5f')](_0x19a777);return _0x1521ad;}});}else{return;}})[_0x7413('0x28')](function(_0x4f998b){if(_0x4f998b)_0x19ff87=_0x4f998b;return _[_0x7413('0x40')](_0x19ff87,[_0x7413('0x61'),0x1]);})['then'](respondWithResult(_0xefd1e7,null))[_0x7413('0x45')](handleError(_0xefd1e7,null));};function hasDefaultDashboard(_0x96bdbb){var _0x4d4fec=[0x65];return new BPromise(function(_0x33232d,_0x193d54){try{if(_0x96bdbb[_0x7413('0x57')]){_0x33232d(_0x4d4fec);}else{return db['UserProfileResource'][_0x7413('0x64')]({'where':{'sectionId':_0x96bdbb['id']},'raw':!![]})['then'](function(_0x466ec8){_0x466ec8?_0x33232d(_0x4d4fec):_0x33232d();});}}catch(_0x35f721){_0x193d54(_0x35f721);}});}function getCustomDashboards(_0x4537b5){var _0x20ba75=[];return new BPromise(function(_0x2675ad,_0x371464){try{if(_0x4537b5['autoAssociation']){return db[_0x7413('0x65')][_0x7413('0x43')]({'raw':!![]})[_0x7413('0x28')](function(_0x43991d){_0x43991d[_0x7413('0x66')](function(_0x55059e){_0x20ba75[_0x7413('0x5f')](_0x55059e['id']+0x1869f);});_0x2675ad(_0x20ba75);});}else{return db[_0x7413('0x58')][_0x7413('0x43')]({'where':{'sectionId':_0x4537b5['id']},'raw':!![]})[_0x7413('0x28')](function(_0x38c966){_0x38c966['forEach'](function(_0x517b6e){_0x20ba75[_0x7413('0x5f')](_0x517b6e[_0x7413('0x67')]+0x1869f);});_0x2675ad(_0x20ba75);});}}catch(_0x389ce1){_0x371464(_0x389ce1);}});}function getPlugins(_0x14a968){var _0x4ec202=[];return new BPromise(function(_0x4c7787,_0x41bb34){try{if(_0x14a968[_0x7413('0x57')]){return db[_0x7413('0x68')]['findAll']({'raw':!![]})['then'](function(_0x2d71c8){_0x2d71c8[_0x7413('0x66')](function(_0x312894){_0x4ec202[_0x7413('0x5f')](_0x312894['id']+0x15b38);});_0x4c7787(_0x4ec202);});}else{return db[_0x7413('0x58')][_0x7413('0x43')]({'where':{'sectionId':_0x14a968['id']},'raw':!![]})[_0x7413('0x28')](function(_0x4b2b7c){_0x4b2b7c['forEach'](function(_0x396a6a){_0x4ec202[_0x7413('0x5f')](_0x396a6a['resourceId']+0x15b38);});_0x4c7787(_0x4ec202);});}}catch(_0x2016de){_0x41bb34(_0x2016de);}});}exports[_0x7413('0x69')]=function(_0x35389e,_0x23173c){return db[_0x7413('0x30')][_0x7413('0x4d')]({'where':{'id':_0x35389e[_0x7413('0x4c')]['id']}})[_0x7413('0x28')](handleEntityNotFound(_0x23173c,null))[_0x7413('0x28')](function(_0x5802e0){if(_0x5802e0){return db[_0x7413('0x53')][_0x7413('0x54')](function(_0x59d665){return db[_0x7413('0x55')][_0x7413('0x43')]({'where':{'userProfileId':_0x35389e[_0x7413('0x4c')]['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x519112){if(_0x519112){return db['UserProfileSection'][_0x7413('0x5a')]({'where':{'userProfileId':_0x35389e[_0x7413('0x4c')]['id'],'id':_[_0x7413('0x2f')](_0x519112,function(_0x591e99){return _0x591e99['id'];})},'transaction':_0x59d665});}})[_0x7413('0x28')](function(_0xbac7e8){var _0x207293=_[_0x7413('0x2f')](_0x35389e['body'],function(_0x11f5a3){_0x11f5a3['userProfileId']=_0x35389e[_0x7413('0x4c')]['id'];return _0x11f5a3;});return db[_0x7413('0x55')][_0x7413('0x6a')](_0x207293,{'raw':!![],'transaction':_0x59d665});})[_0x7413('0x28')](function(_0x2fad79){var _0x5881d6=_[_0x7413('0x40')](_[_0x7413('0x2f')](_0x2fad79,function(_0x1455b4){return _0x1455b4[_0x7413('0x4e')]({'plain':!![]});}),{'includeAll':![]});if(_0x5881d6){return db[_0x7413('0x55')][_0x7413('0x43')]({'where':{'userProfileId':_0x35389e[_0x7413('0x4c')]['id'],'sectionId':_[_0x7413('0x2f')](_0x5881d6,function(_0x35d5e2){return _0x35d5e2[_0x7413('0x5d')];})},'attributes':['id',_0x7413('0x5d')],'raw':!![]})[_0x7413('0x28')](function(_0xd39475){var _0x398823=_[_0x7413('0x2f')](_0x35389e['body'],function(_0x4d5046){_0x4d5046[_0x7413('0x5e')]=_0x35389e[_0x7413('0x4c')]['id'];return _0x4d5046;});return db['UserProfileResource'][_0x7413('0x6a')](_0x398823,{'raw':!![],'transaction':_0x59d665});});}})['catch'](handleError(_0x23173c,null));});}})[_0x7413('0x28')](function(_0x26536c){var _0x3b5ad6=_[_0x7413('0x2f')](_0x26536c,function(_0x32cd2d){return _0x32cd2d[_0x7413('0x4e')]({'plain':!![]});});})[_0x7413('0x28')](respondWithResult(_0x23173c,null))[_0x7413('0x45')](handleError(_0x23173c,null));};exports['removeResources']=function(_0x4089fe,_0x4c03be,_0x4390ed){return db['UserProfile'][_0x7413('0x4d')]({'where':{'id':_0x4089fe[_0x7413('0x4c')]['id']}})[_0x7413('0x28')](handleEntityNotFound(_0x4c03be,null))['then'](function(_0x1883a9){if(_0x1883a9){return _0x1883a9[_0x7413('0x6b')](_0x4089fe[_0x7413('0x3b')][_0x7413('0x60')]);}})[_0x7413('0x28')](respondWithStatusCode(_0x4c03be,null))[_0x7413('0x45')](handleError(_0x4c03be,null));};exports['getResources']=function(_0x4f01f8,_0x4b40b1){var _0x5539de={};if(!_0x4f01f8[_0x7413('0x3b')][_0x7413('0x6c')])throw new Error(_0x7413('0x6d'));if(!_0x4f01f8['query'][_0x7413('0x6e')](_0x7413('0x6f'))){_0x5539de[_0x7413('0x22')]=qs[_0x7413('0x22')](_0x4f01f8[_0x7413('0x3b')][_0x7413('0x22')]);_0x5539de['offset']=qs['offset'](_0x4f01f8['query'][_0x7413('0x1f')]);}return db[_0x7413('0x30')]['find']({'where':{'id':_0x4f01f8[_0x7413('0x4c')]['id']}})[_0x7413('0x28')](function(_0x9a92b8){if(!_0x9a92b8)throw new Error(_0x7413('0x70')+_0x4f01f8['params']['id']);return db[_0x7413('0x30')][_0x7413('0x71')](_0x4f01f8);})['then'](respondWithFilteredResult(_0x4b40b1,_0x5539de))[_0x7413('0x45')](handleError(_0x4b40b1,null));};
\ No newline at end of file
+var _0xa35e=['clone','get','omit','createdAt','crudPermissions','updatedAt','sequelize','transaction','UserProfileSection','findAll','autoAssociation','UserProfileResource','sectionId','userProfileId','Resources','destroy','describe','each','push','removeSections','ids','getSections','includes','isEmpty','subsections','enabled','findOne','Dashboard','forEach','resourceId','Plugin','addResources','bulkCreate','removeResources','getResources','section','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./userProfile.socket','sendStatus','end','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','UserProfile','rawAttributes','fieldName','key','model','map','query','keys','intersection','attributes','length','hasOwnProperty','nolimit','sort','filters','filter','where','type','VIRTUAL','options','includeAll','rows','catch','show','params','fields','include','merge','find','create','body'];(function(_0x536117,_0x17c694){var _0x487cf4=function(_0x4e3771){while(--_0x4e3771){_0x536117['push'](_0x536117['shift']());}};_0x487cf4(++_0x17c694);}(_0xa35e,0x111));var _0xea35=function(_0x44d419,_0x5ea38c){_0x44d419=_0x44d419-0x0;var _0x16133c=_0xa35e[_0x44d419];return _0x16133c;};'use strict';var emlformat=require(_0xea35('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xea35('0x1'));var jsonpatch=require(_0xea35('0x2'));var rp=require(_0xea35('0x3'));var moment=require(_0xea35('0x4'));var BPromise=require(_0xea35('0x5'));var Mustache=require(_0xea35('0x6'));var util=require(_0xea35('0x7'));var path=require(_0xea35('0x8'));var sox=require(_0xea35('0x9'));var csv=require(_0xea35('0xa'));var ejs=require(_0xea35('0xb'));var fs=require('fs');var fs_extra=require(_0xea35('0xc'));var _=require(_0xea35('0xd'));var squel=require(_0xea35('0xe'));var crypto=require('crypto');var jsforce=require(_0xea35('0xf'));var deskjs=require(_0xea35('0x10'));var toCsv=require(_0xea35('0xa'));var querystring=require('querystring');var Papa=require(_0xea35('0x11'));var Redis=require(_0xea35('0x12'));var authService=require(_0xea35('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xea35('0x14'));var hardwareService=require(_0xea35('0x15'));var logger=require(_0xea35('0x16'))(_0xea35('0x17'));var utils=require(_0xea35('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xea35('0x19'));var db=require(_0xea35('0x1a'))['db'];config[_0xea35('0x1b')]=_['defaults'](config['redis'],{'host':_0xea35('0x1c'),'port':0x18eb});var socket=require(_0xea35('0x1d'))(new Redis(config[_0xea35('0x1b')]));require(_0xea35('0x1e'))['register'](socket);function respondWithStatusCode(_0x2c400a,_0x5d27f4){_0x5d27f4=_0x5d27f4||0xcc;return function(_0x11f9ba){if(_0x11f9ba){return _0x2c400a[_0xea35('0x1f')](_0x5d27f4);}return _0x2c400a['status'](_0x5d27f4)[_0xea35('0x20')]();};}function respondWithResult(_0x1a99af,_0x269508){_0x269508=_0x269508||0xc8;return function(_0x3ab8d4){if(_0x3ab8d4){return _0x1a99af[_0xea35('0x21')](_0x269508)[_0xea35('0x22')](_0x3ab8d4);}};}function respondWithFilteredResult(_0x2b4322,_0x3c6a8c){return function(_0x3b7336){if(_0x3b7336){var _0x2fd286=typeof _0x3c6a8c['offset']===_0xea35('0x23')&&typeof _0x3c6a8c[_0xea35('0x24')]===_0xea35('0x23');var _0x2d32e2=_0x3b7336[_0xea35('0x25')];var _0x5a5531=_0x2fd286?0x0:_0x3c6a8c[_0xea35('0x26')];var _0x5b5628=_0x2fd286?_0x3b7336[_0xea35('0x25')]:_0x3c6a8c[_0xea35('0x26')]+_0x3c6a8c['limit'];var _0x123166;if(_0x5b5628>=_0x2d32e2){_0x5b5628=_0x2d32e2;_0x123166=0xc8;}else{_0x123166=0xce;}_0x2b4322[_0xea35('0x21')](_0x123166);return _0x2b4322['set'](_0xea35('0x27'),_0x5a5531+'-'+_0x5b5628+'/'+_0x2d32e2)[_0xea35('0x22')](_0x3b7336);}return null;};}function patchUpdates(_0x3fa0c5){return function(_0xab84c){try{jsonpatch[_0xea35('0x28')](_0xab84c,_0x3fa0c5,!![]);}catch(_0x50cf87){return BPromise[_0xea35('0x29')](_0x50cf87);}return _0xab84c[_0xea35('0x2a')]();};}function saveUpdates(_0x342749,_0x416d86){return function(_0x202be9){if(_0x202be9){return _0x202be9[_0xea35('0x2b')](_0x342749)[_0xea35('0x2c')](function(_0x49edd3){return _0x49edd3;});}return null;};}function removeEntity(_0x5e6443,_0x53510d){return function(_0x1915cf){if(_0x1915cf){return _0x1915cf['destroy']()['then'](function(){_0x5e6443[_0xea35('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x454034,_0x24b56c){return function(_0x119da7){if(!_0x119da7){_0x454034[_0xea35('0x1f')](0x194);}return _0x119da7;};}function handleError(_0x5a54de,_0x21406c){_0x21406c=_0x21406c||0x1f4;return function(_0x261a88){logger[_0xea35('0x2d')](_0x261a88[_0xea35('0x2e')]);if(_0x261a88['name']){delete _0x261a88[_0xea35('0x2f')];}_0x5a54de['status'](_0x21406c)[_0xea35('0x30')](_0x261a88);};}exports[_0xea35('0x31')]=function(_0x40baa2,_0x2ff076){var _0x7c1a19={},_0x357eb8={},_0x32fe5f={'count':0x0,'rows':[]};var _0x2e7b4d=_['map'](db[_0xea35('0x32')][_0xea35('0x33')],function(_0x4d1947){return{'name':_0x4d1947[_0xea35('0x34')],'type':_0x4d1947['type'][_0xea35('0x35')]};});_0x357eb8[_0xea35('0x36')]=_[_0xea35('0x37')](_0x2e7b4d,_0xea35('0x2f'));_0x357eb8[_0xea35('0x38')]=_[_0xea35('0x39')](_0x40baa2[_0xea35('0x38')]);_0x357eb8['filters']=_['intersection'](_0x357eb8[_0xea35('0x36')],_0x357eb8[_0xea35('0x38')]);_0x7c1a19['attributes']=_[_0xea35('0x3a')](_0x357eb8[_0xea35('0x36')],qs['fields'](_0x40baa2[_0xea35('0x38')]['fields']));_0x7c1a19[_0xea35('0x3b')]=_0x7c1a19[_0xea35('0x3b')][_0xea35('0x3c')]?_0x7c1a19[_0xea35('0x3b')]:_0x357eb8[_0xea35('0x36')];if(!_0x40baa2[_0xea35('0x38')][_0xea35('0x3d')](_0xea35('0x3e'))){_0x7c1a19[_0xea35('0x24')]=qs[_0xea35('0x24')](_0x40baa2[_0xea35('0x38')]['limit']);_0x7c1a19['offset']=qs[_0xea35('0x26')](_0x40baa2[_0xea35('0x38')]['offset']);}_0x7c1a19['order']=qs[_0xea35('0x3f')](_0x40baa2[_0xea35('0x38')][_0xea35('0x3f')]);_0x7c1a19['where']=qs[_0xea35('0x40')](_['pick'](_0x40baa2['query'],_0x357eb8[_0xea35('0x40')]),_0x2e7b4d);if(_0x40baa2[_0xea35('0x38')][_0xea35('0x41')]){_0x7c1a19['where']=_['merge'](_0x7c1a19[_0xea35('0x42')],{'$or':_[_0xea35('0x37')](_0x2e7b4d,function(_0x5bf0c9){if(_0x5bf0c9[_0xea35('0x43')]!==_0xea35('0x44')){var _0x23d95a={};_0x23d95a[_0x5bf0c9[_0xea35('0x2f')]]={'$like':'%'+_0x40baa2[_0xea35('0x38')][_0xea35('0x41')]+'%'};return _0x23d95a;}})});}_0x7c1a19=_['merge']({},_0x7c1a19,_0x40baa2[_0xea35('0x45')]);var _0x444f47={'where':_0x7c1a19['where']};return db[_0xea35('0x32')][_0xea35('0x25')](_0x444f47)[_0xea35('0x2c')](function(_0x73f98e){_0x32fe5f[_0xea35('0x25')]=_0x73f98e;if(_0x40baa2[_0xea35('0x38')][_0xea35('0x46')]){_0x7c1a19['include']=[{'all':!![]}];}return db[_0xea35('0x32')]['findAll'](_0x7c1a19);})['then'](function(_0x5d6cf7){_0x32fe5f[_0xea35('0x47')]=_0x5d6cf7;return _0x32fe5f;})[_0xea35('0x2c')](respondWithFilteredResult(_0x2ff076,_0x7c1a19))[_0xea35('0x48')](handleError(_0x2ff076,null));};exports[_0xea35('0x49')]=function(_0x3583e5,_0x4933bc){var _0x38179d={'raw':![],'where':{'id':_0x3583e5[_0xea35('0x4a')]['id']}},_0x2f3159={};_0x2f3159[_0xea35('0x36')]=_['keys'](db[_0xea35('0x32')][_0xea35('0x33')]);_0x2f3159[_0xea35('0x38')]=_['keys'](_0x3583e5[_0xea35('0x38')]);_0x2f3159[_0xea35('0x40')]=_[_0xea35('0x3a')](_0x2f3159[_0xea35('0x36')],_0x2f3159['query']);_0x38179d['attributes']=_[_0xea35('0x3a')](_0x2f3159['model'],qs['fields'](_0x3583e5[_0xea35('0x38')][_0xea35('0x4b')]));_0x38179d[_0xea35('0x3b')]=_0x38179d[_0xea35('0x3b')][_0xea35('0x3c')]?_0x38179d['attributes']:_0x2f3159[_0xea35('0x36')];if(_0x3583e5[_0xea35('0x38')][_0xea35('0x46')]){_0x38179d[_0xea35('0x4c')]=[{'all':!![]}];}_0x38179d=_[_0xea35('0x4d')]({},_0x38179d,_0x3583e5['options']);return db[_0xea35('0x32')][_0xea35('0x4e')](_0x38179d)['then'](handleEntityNotFound(_0x4933bc,null))[_0xea35('0x2c')](respondWithResult(_0x4933bc,null))[_0xea35('0x48')](handleError(_0x4933bc,null));};exports[_0xea35('0x4f')]=function(_0x46172e,_0x53e744){return db[_0xea35('0x32')]['create'](_0x46172e[_0xea35('0x50')],{})['then'](respondWithResult(_0x53e744,0xc9))[_0xea35('0x48')](handleError(_0x53e744,null));};exports[_0xea35('0x51')]=function(_0xdb049b,_0x430899){var _0x116f53={'where':{'id':_0xdb049b['params']['id']}},_0x2eb350={};_0x2eb350[_0xea35('0x36')]=_['keys'](db['UserProfile'][_0xea35('0x33')]);_0x116f53[_0xea35('0x3b')]=_[_0xea35('0x3a')](_0x2eb350[_0xea35('0x36')],qs[_0xea35('0x4b')](_0xdb049b[_0xea35('0x38')][_0xea35('0x4b')]));_0x116f53['attributes']=_0x116f53[_0xea35('0x3b')][_0xea35('0x3c')]?_0x116f53[_0xea35('0x3b')]:_0x2eb350['model'];if(_0xdb049b['query']['includeAll']){_0x116f53[_0xea35('0x4c')]=[{'all':!![]}];}_0x116f53=_[_0xea35('0x4d')]({},_0x116f53,_0xdb049b[_0xea35('0x45')]);return db[_0xea35('0x32')][_0xea35('0x4e')](_0x116f53)[_0xea35('0x2c')](handleEntityNotFound(_0x430899,null))['then'](function(_0x440304){if(_0x440304){var _0xf5a298=_0x440304[_0xea35('0x52')]({'plain':!![]});_0xf5a298=qs[_0xea35('0x53')](_0xf5a298,['id',_0xea35('0x54'),'updatedAt',_0xea35('0x55')]);_0xdb049b[_0xea35('0x50')]=_[_0xea35('0x53')](_0xdb049b[_0xea35('0x50')],['id','createdAt',_0xea35('0x56')]);return db[_0xea35('0x57')][_0xea35('0x58')](function(_0x559ee2){return db[_0xea35('0x32')]['create'](_[_0xea35('0x4d')](_0xf5a298,_0xdb049b[_0xea35('0x50')]),{'include':_0xdb049b[_0xea35('0x38')][_0xea35('0x46')]?[{'all':!![]}]:undefined,'transaction':_0x559ee2})[_0xea35('0x2c')](function(_0x3ae0f6){var _0x3789e2=_0x3ae0f6[_0xea35('0x52')]({'plain':!![]});return db[_0xea35('0x59')][_0xea35('0x5a')]({'where':{'userProfileId':_0xdb049b[_0xea35('0x4a')]['id']},'raw':!![]})['then'](function(_0x44f676){if(_0x44f676){return BPromise['each'](_0x44f676,function(_0xad5ca8){return new BPromise(function(_0x25248f,_0x3f7eb7){if(_0xad5ca8[_0xea35('0x5b')]===null||_0xad5ca8[_0xea35('0x5b')]===0x1)_0x25248f(null);return db[_0xea35('0x5c')][_0xea35('0x5a')]({'where':{'sectionId':_0xad5ca8['id']},'raw':!![]})[_0xea35('0x2c')](function(_0x50b131){var _0x1b3a2a=_[_0xea35('0x37')](_0x50b131,function(_0x2306d4){return qs['omit'](_0x2306d4,['id','createdAt',_0xea35('0x56'),_0xea35('0x5d')]);});_0x25248f(_0x1b3a2a);})[_0xea35('0x48')](function(_0xba9db9){_0x3f7eb7(_0xba9db9);});})['then'](function(_0x17c456){var _0x1efeb8=qs[_0xea35('0x53')](_0xad5ca8,['id','createdAt',_0xea35('0x56')]);_0x1efeb8[_0xea35('0x5e')]=_0x3789e2['id'];if(_0x17c456)_0x1efeb8[_0xea35('0x5f')]=_0x17c456;return _0x1efeb8;})[_0xea35('0x2c')](function(_0x3eacd6){return db['UserProfileSection'][_0xea35('0x4f')](_0x3eacd6,{'include':[{'model':db[_0xea35('0x5c')],'as':_0xea35('0x5f')}],'raw':!![],'transaction':_0x559ee2});});})['then'](function(){return _0x3789e2;});}});});});}})[_0xea35('0x2c')](respondWithResult(_0x430899,0xc9))[_0xea35('0x48')](handleError(_0x430899,null));};exports[_0xea35('0x2b')]=function(_0x3aa7f6,_0x4b3745){if(_0x3aa7f6['body']['id']){delete _0x3aa7f6[_0xea35('0x50')]['id'];}return db[_0xea35('0x32')]['find']({'where':{'id':_0x3aa7f6[_0xea35('0x4a')]['id']}})[_0xea35('0x2c')](handleEntityNotFound(_0x4b3745,null))[_0xea35('0x2c')](saveUpdates(_0x3aa7f6[_0xea35('0x50')],null))[_0xea35('0x2c')](respondWithResult(_0x4b3745,null))['catch'](handleError(_0x4b3745,null));};exports[_0xea35('0x60')]=function(_0x5b1eb5,_0x26e974){return db['UserProfile']['find']({'where':{'id':_0x5b1eb5['params']['id']}})['then'](handleEntityNotFound(_0x26e974,null))[_0xea35('0x2c')](removeEntity(_0x26e974,null))[_0xea35('0x48')](handleError(_0x26e974,null));};exports[_0xea35('0x61')]=function(_0xfbe58b,_0x926941){return db[_0xea35('0x32')][_0xea35('0x61')]()[_0xea35('0x2c')](respondWithResult(_0x926941,null))[_0xea35('0x48')](handleError(_0x926941,null));};exports['addSections']=function(_0x17bae7,_0x12acff){var _0x2ca133=_0x17bae7[_0xea35('0x50')];return db[_0xea35('0x32')][_0xea35('0x4e')]({'where':{'id':_0x17bae7[_0xea35('0x4a')]['id']}})['then'](handleEntityNotFound(_0x12acff,null))[_0xea35('0x2c')](function(_0xe60ae7){if(_0xe60ae7){return db[_0xea35('0x57')]['transaction'](function(_0x96b954){return db[_0xea35('0x59')]['destroy']({'where':{'userProfileId':_0x17bae7[_0xea35('0x4a')]['id'],'sectionId':_['map'](_0x2ca133,function(_0x3f217d){return _0x3f217d[_0xea35('0x5d')];})},'transaction':_0x96b954})[_0xea35('0x2c')](function(){var _0x47b208=_['map'](_0x2ca133,function(_0x47b16c){_0x47b16c['userProfileId']=_0x17bae7['params']['id'];return _0x47b16c;});var _0x265159=[];return BPromise[_0xea35('0x62')](_0x47b208,function(_0x1223a2){return db[_0xea35('0x59')]['create'](_0x1223a2,{'include':[{'model':db[_0xea35('0x5c')],'as':_0xea35('0x5f')}],'raw':!![],'transaction':_0x96b954})['then'](function(_0x5a031f){_0x265159[_0xea35('0x63')](_0x5a031f[_0xea35('0x52')]({'plain':!![]}));});})[_0xea35('0x2c')](function(){return _0x265159;});});});}})['then'](function(_0x4e2251){return _0x4e2251;})['then'](respondWithResult(_0x12acff,null))['catch'](handleError(_0x12acff,null));};exports[_0xea35('0x64')]=function(_0x53d536,_0x1c012a){var _0x2108f1;return db[_0xea35('0x32')][_0xea35('0x4e')]({'where':{'id':_0x53d536[_0xea35('0x4a')]['id']},'attributes':['id',_0xea35('0x2f')]})['then'](handleEntityNotFound(_0x1c012a,null))[_0xea35('0x2c')](function(_0x125a06){if(_0x125a06){_0x2108f1=_0x125a06;return db['UserProfileSection'][_0xea35('0x60')]({'where':{'userProfileId':_0x53d536[_0xea35('0x4a')]['id'],'sectionId':_0x53d536[_0xea35('0x38')][_0xea35('0x65')]}});}})[_0xea35('0x2c')](function(){return _0x2108f1;})[_0xea35('0x2c')](respondWithStatusCode(_0x1c012a,null))[_0xea35('0x48')](handleError(_0x1c012a,null));};exports[_0xea35('0x66')]=function(_0x11c546,_0x44aa59){var _0x317d40=[];var _0x336587=[];return db[_0xea35('0x59')][_0xea35('0x5a')]({'where':{'userProfileId':_0x11c546['params']['id']},'raw':!![]})[_0xea35('0x2c')](function(_0xd1f8eb){_0x317d40=_['filter'](_0xd1f8eb,function(_0x464340){return _0x464340['enabled']===0x1||_[_0xea35('0x67')]([0x3eb,0x709],_0x464340[_0xea35('0x5d')]);});if(!_[_0xea35('0x68')](_0x317d40)){return _[_0xea35('0x37')](_0x317d40,function(_0x11dad6){return _0x11dad6[_0xea35('0x5d')];});}else{return;}})[_0xea35('0x2c')](function(_0xb386aa){if(_0xb386aa)_0x336587=_0xb386aa;if(_[_0xea35('0x67')](_0x336587,0x64)){var _0xa0df3f=_[_0xea35('0x4e')](_0x317d40,{'sectionId':0x64});return hasDefaultDashboard(_0xa0df3f)['then'](function(_0x2f4cb8){return _[_0xea35('0x37')](_0x317d40,function(_0x29a250){if(_0x29a250[_0xea35('0x5d')]===0x64){_0x29a250[_0xea35('0x69')]=_0x2f4cb8;}return _0x29a250;});});}else{return;}})[_0xea35('0x2c')](function(_0x4132bc){if(_0x4132bc)_0x317d40=_0x4132bc;if(_[_0xea35('0x67')](_0x336587,0x3eb)){var _0x129438=_[_0xea35('0x4e')](_0x317d40,{'sectionId':0x3eb});return getCustomDashboards(_0x129438)[_0xea35('0x2c')](function(_0x1f9352){return _[_0xea35('0x37')](_0x317d40,function(_0x7c07b){if(_0x129438[_0xea35('0x6a')]){if(_0x7c07b[_0xea35('0x5d')]===0x3eb){_0x7c07b[_0xea35('0x69')]=_0x1f9352;}}else{if(_0x7c07b[_0xea35('0x5d')]===0x64){_0x7c07b[_0xea35('0x69')]=_0x1f9352;}}return _0x7c07b;});});}else{return;}})[_0xea35('0x2c')](function(_0x2ee2bc){if(_0x2ee2bc)_0x317d40=_0x2ee2bc;if(_[_0xea35('0x67')](_0x336587,0x709)){var _0x460078=_['find'](_0x317d40,{'sectionId':0x709});return getPlugins(_0x460078)[_0xea35('0x2c')](function(_0x4ed92f){if(_0x460078['enabled']){return _[_0xea35('0x37')](_0x317d40,function(_0xb73a29){if(_0xb73a29['sectionId']===0x709){_0xb73a29[_0xea35('0x69')]=_0x4ed92f;}return _0xb73a29;});}else{var _0x3dd02d={'sectionId':0x76c,'enabled':0x1,'subsections':_0x4ed92f};var _0x32c1bd=_[_0xea35('0x37')](_0x317d40);_0x32c1bd['push'](_0x3dd02d);return _0x32c1bd;}});}else{return;}})[_0xea35('0x2c')](function(_0x58953e){if(_0x58953e)_0x317d40=_0x58953e;return _['filter'](_0x317d40,[_0xea35('0x6a'),0x1]);})[_0xea35('0x2c')](respondWithResult(_0x44aa59,null))['catch'](handleError(_0x44aa59,null));};function hasDefaultDashboard(_0x502ced){var _0x796bef=[0x65];return new BPromise(function(_0x16839d,_0x4a1dea){try{if(_0x502ced[_0xea35('0x5b')]){_0x16839d(_0x796bef);}else{return db[_0xea35('0x5c')][_0xea35('0x6b')]({'where':{'sectionId':_0x502ced['id']},'raw':!![]})[_0xea35('0x2c')](function(_0x1378ca){_0x1378ca?_0x16839d(_0x796bef):_0x16839d();});}}catch(_0x2c59e6){_0x4a1dea(_0x2c59e6);}});}function getCustomDashboards(_0x2e3017){var _0x388f96=[];return new BPromise(function(_0x572113,_0xdb9df7){try{if(_0x2e3017[_0xea35('0x5b')]){return db[_0xea35('0x6c')][_0xea35('0x5a')]({'raw':!![]})[_0xea35('0x2c')](function(_0x5154b4){_0x5154b4[_0xea35('0x6d')](function(_0x14e0f9){_0x388f96[_0xea35('0x63')](_0x14e0f9['id']+0x1869f);});_0x572113(_0x388f96);});}else{return db[_0xea35('0x5c')][_0xea35('0x5a')]({'where':{'sectionId':_0x2e3017['id']},'raw':!![]})['then'](function(_0x1c87e6){_0x1c87e6['forEach'](function(_0x14970a){_0x388f96[_0xea35('0x63')](_0x14970a[_0xea35('0x6e')]+0x1869f);});_0x572113(_0x388f96);});}}catch(_0x53609f){_0xdb9df7(_0x53609f);}});}function getPlugins(_0x50e0df){var _0x10b125=[];return new BPromise(function(_0x3a84a9,_0x518543){try{if(_0x50e0df[_0xea35('0x5b')]){return db[_0xea35('0x6f')]['findAll']({'raw':!![]})[_0xea35('0x2c')](function(_0x2d7c71){_0x2d7c71[_0xea35('0x6d')](function(_0x198c98){_0x10b125[_0xea35('0x63')](_0x198c98['id']+0x15b38);});_0x3a84a9(_0x10b125);});}else{return db[_0xea35('0x5c')]['findAll']({'where':{'sectionId':_0x50e0df['id']},'raw':!![]})['then'](function(_0x89b6c4){_0x89b6c4[_0xea35('0x6d')](function(_0xd345c3){_0x10b125[_0xea35('0x63')](_0xd345c3[_0xea35('0x6e')]+0x15b38);});_0x3a84a9(_0x10b125);});}}catch(_0x1661a2){_0x518543(_0x1661a2);}});}exports[_0xea35('0x70')]=function(_0xb06720,_0x2131c6){return db[_0xea35('0x32')][_0xea35('0x4e')]({'where':{'id':_0xb06720['params']['id']}})[_0xea35('0x2c')](handleEntityNotFound(_0x2131c6,null))[_0xea35('0x2c')](function(_0x4a341b){if(_0x4a341b){return db['sequelize'][_0xea35('0x58')](function(_0x141436){return db['UserProfileSection'][_0xea35('0x5a')]({'where':{'userProfileId':_0xb06720[_0xea35('0x4a')]['id']},'attributes':['id'],'raw':!![]})[_0xea35('0x2c')](function(_0xf0dc5){if(_0xf0dc5){return db[_0xea35('0x59')][_0xea35('0x60')]({'where':{'userProfileId':_0xb06720[_0xea35('0x4a')]['id'],'id':_[_0xea35('0x37')](_0xf0dc5,function(_0x5e3d52){return _0x5e3d52['id'];})},'transaction':_0x141436});}})[_0xea35('0x2c')](function(_0x5dbd87){var _0x1b9f8a=_[_0xea35('0x37')](_0xb06720[_0xea35('0x50')],function(_0x17e114){_0x17e114['userProfileId']=_0xb06720[_0xea35('0x4a')]['id'];return _0x17e114;});return db[_0xea35('0x59')][_0xea35('0x71')](_0x1b9f8a,{'raw':!![],'transaction':_0x141436});})[_0xea35('0x2c')](function(_0x3c2e95){var _0x3b2871=_[_0xea35('0x41')](_[_0xea35('0x37')](_0x3c2e95,function(_0xb64843){return _0xb64843[_0xea35('0x52')]({'plain':!![]});}),{'includeAll':![]});if(_0x3b2871){return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0xb06720[_0xea35('0x4a')]['id'],'sectionId':_[_0xea35('0x37')](_0x3b2871,function(_0x4fac0e){return _0x4fac0e[_0xea35('0x5d')];})},'attributes':['id',_0xea35('0x5d')],'raw':!![]})['then'](function(_0xcd528a){var _0xc2408a=_[_0xea35('0x37')](_0xb06720[_0xea35('0x50')],function(_0x498bbe){_0x498bbe[_0xea35('0x5e')]=_0xb06720['params']['id'];return _0x498bbe;});return db[_0xea35('0x5c')][_0xea35('0x71')](_0xc2408a,{'raw':!![],'transaction':_0x141436});});}})[_0xea35('0x48')](handleError(_0x2131c6,null));});}})[_0xea35('0x2c')](function(_0x171337){var _0x58187a=_[_0xea35('0x37')](_0x171337,function(_0x5f2710){return _0x5f2710['get']({'plain':!![]});});})[_0xea35('0x2c')](respondWithResult(_0x2131c6,null))[_0xea35('0x48')](handleError(_0x2131c6,null));};exports[_0xea35('0x72')]=function(_0x3724b8,_0x2c7b0e,_0x2c74c9){return db[_0xea35('0x32')][_0xea35('0x4e')]({'where':{'id':_0x3724b8[_0xea35('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2c7b0e,null))['then'](function(_0x20e56a){if(_0x20e56a){return _0x20e56a['removeResources'](_0x3724b8[_0xea35('0x38')][_0xea35('0x65')]);}})[_0xea35('0x2c')](respondWithStatusCode(_0x2c7b0e,null))[_0xea35('0x48')](handleError(_0x2c7b0e,null));};exports[_0xea35('0x73')]=function(_0x43f3c8,_0x40eaac){var _0x351c74={};if(!_0x43f3c8[_0xea35('0x38')][_0xea35('0x74')])throw new Error('Missing\x20section\x20parameter');if(!_0x43f3c8[_0xea35('0x38')][_0xea35('0x3d')](_0xea35('0x3e'))){_0x351c74[_0xea35('0x24')]=qs['limit'](_0x43f3c8['query'][_0xea35('0x24')]);_0x351c74[_0xea35('0x26')]=qs['offset'](_0x43f3c8[_0xea35('0x38')][_0xea35('0x26')]);}return db[_0xea35('0x32')][_0xea35('0x4e')]({'where':{'id':_0x43f3c8['params']['id']}})[_0xea35('0x2c')](function(_0x11086e){if(!_0x11086e)throw new Error(_0xea35('0x75')+_0x43f3c8['params']['id']);return db[_0xea35('0x32')][_0xea35('0x73')](_0x43f3c8);})[_0xea35('0x2c')](respondWithFilteredResult(_0x40eaac,_0x351c74))[_0xea35('0x48')](handleError(_0x40eaac,null));};
\ No newline at end of file
index e3291c3..f5977e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1d7=['update','remove','emit','hasOwnProperty','exports','../../mysqldb'];(function(_0x974a43,_0x4fbdc8){var _0x43c41a=function(_0x3db3cc){while(--_0x3db3cc){_0x974a43['push'](_0x974a43['shift']());}};_0x43c41a(++_0x4fbdc8);}(_0xe1d7,0x1a9));var _0x7e1d=function(_0x502417,_0x3b4a19){_0x502417=_0x502417-0x0;var _0x32e1f8=_0xe1d7[_0x502417];return _0x32e1f8;};'use strict';var EventEmitter=require('events');var UserProfile=require(_0x7e1d('0x0'))['db']['UserProfile'];var UserProfileEvents=new EventEmitter();UserProfileEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x7e1d('0x1'),'afterDestroy':_0x7e1d('0x2')};function emitEvent(_0x416747){return function(_0x57e913,_0x347f78,_0x882bec){UserProfileEvents[_0x7e1d('0x3')](_0x416747+':'+_0x57e913['id'],_0x57e913);UserProfileEvents[_0x7e1d('0x3')](_0x416747,_0x57e913);_0x882bec(null);};}for(var e in events){if(events[_0x7e1d('0x4')](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module[_0x7e1d('0x5')]=UserProfileEvents;
\ No newline at end of file
+var _0xe3b3=['update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','UserProfile','setMaxListeners','save'];(function(_0xe09f15,_0x1a71f9){var _0x38ad6b=function(_0x326aef){while(--_0x326aef){_0xe09f15['push'](_0xe09f15['shift']());}};_0x38ad6b(++_0x1a71f9);}(_0xe3b3,0x1b3));var _0x3e3b=function(_0x5146d9,_0x5b2a81){_0x5146d9=_0x5146d9-0x0;var _0x5b4d9e=_0xe3b3[_0x5146d9];return _0x5b4d9e;};'use strict';var EventEmitter=require(_0x3e3b('0x0'));var UserProfile=require(_0x3e3b('0x1'))['db'][_0x3e3b('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x3e3b('0x3')](0x0);var events={'afterCreate':_0x3e3b('0x4'),'afterUpdate':_0x3e3b('0x5'),'afterDestroy':_0x3e3b('0x6')};function emitEvent(_0x4d1684){return function(_0xcfab31,_0x2011b1,_0x5e3212){UserProfileEvents[_0x3e3b('0x7')](_0x4d1684+':'+_0xcfab31['id'],_0xcfab31);UserProfileEvents[_0x3e3b('0x7')](_0x4d1684,_0xcfab31);_0x5e3212(null);};}for(var e in events){if(events[_0x3e3b('0x8')](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module[_0x3e3b('0x9')]=UserProfileEvents;
\ No newline at end of file
index 2d663ee..65b4e44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x627e=['toLowerCase','childModel','SquareProject','odbc','squarerecordings','SquareRecording','parentSections','SquareProjects','projectName','projects','contacts','Lists','lists','CmList','CmCompany','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','FaxQueue','faxaccounts','internalroutes','VoiceMail','voicerecordings','Agents','membername','User','agent','Telephones','role','telephone','VoiceQueues','VoiceQueue','inbound','queue','outbound','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','MailQueue','mailsubstatuses','MailSubstatus','OpenchannelQueue','OpenchannelAccount','SmsAccount','whatsappqueues','whatsappaccounts','teams','Team','voicequeues','queuecampaigns','agents','telephones','Users','user','zendeskaccounts','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','CannedAnswer','Disposition','Dashboard','Interval','Sound','tags','Tag','templates','Template','triggers','Trunk','variables','Variable','plugins','Plugin','reportId','metrics','AnalyticMetric','charAt','slice','Sequelize','QueryTypes','SELECT','select','ui.','InteractionId','ui.createdAt','from','user_has_','_interactions','where','sequelize','toString','then','OpenTabs','define','UserProfile','mergeResources','isEmpty','length','push','find','all','ignore','autoAssociation','rawAttributes','keys','query','filters','intersection','fields','attributes','nolimit','limit','offset','order','sort','pick','key','foreignKey','forEach','merge','options','includeAll','include','reportType','default','DefaultReports','custom','CustomReports','count','rows','Tags','color','tag','ThroughTags','openTabs','true','chat','dataValues','sms','fax','mail','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','field','findAll','associatedResources','map','value','model','name','catch','resolve','UserProfileResource','AnalyticExtractedReport','type','resourceId'];(function(_0x105b7b,_0x22ad08){var _0x52638c=function(_0x55d622){while(--_0x55d622){_0x105b7b['push'](_0x105b7b['shift']());}};_0x52638c(++_0x22ad08);}(_0x627e,0x14a));var _0xe627=function(_0x4c61dc,_0x48f866){_0x4c61dc=_0x4c61dc-0x0;var _0x4ab30b=_0x627e[_0x4c61dc];return _0x4ab30b;};'use strict';var _=require(_0xe627('0x0'));var attributes=require(_0xe627('0x1'));var qs=require(_0xe627('0x2'));var squel=require(_0xe627('0x3'));module[_0xe627('0x4')]=function(_0x48b97a){var _0x2b7158=_0x48b97a[_0xe627('0x5')];function _0x2abdc7(_0x59a2c8,_0x52923f){return new Promise(function(_0x4efcad,_0x1a1a3d){if(!_0x52923f)return _0x4efcad(null);var _0x3f2791=_0x52923f[_0xe627('0x6')]?{[_0x52923f[_0xe627('0x6')][_0xe627('0x7')]]:_0x52923f[_0xe627('0x6')]['value']}:undefined;return _0x2b7158[_0x59a2c8][_0xe627('0x8')]({'where':_0x3f2791,'raw':!![]})['then'](function(_0x56549e){_0x52923f[_0xe627('0x9')]=_[_0xe627('0xa')](_0x56549e,'id');_0x4efcad(_0x52923f);})['catch'](function(_0x4a85ba){_0x1a1a3d(_0x4a85ba);});});}function _0x16db2f(_0x2c1820,_0x1a3e35){return new Promise(function(_0x4543f5,_0x3d3c22){var _0x22ebea=_0x2c1820[_0xe627('0x6')]?{[_0x2c1820[_0xe627('0x6')][_0xe627('0x7')]]:_0x2c1820['filter'][_0xe627('0xb')]}:undefined;return _0x2b7158[_0x2c1820[_0xe627('0xc')]][_0xe627('0x8')]({'where':_0x22ebea,'raw':!![]})['then'](function(_0x42dd1c){_0x1a3e35[_0xe627('0x9')]=_[_0xe627('0xa')](_0x42dd1c,function(_0x119d9c){return _0x119d9c[_0xe627('0xd')];});_0x4543f5(_0x1a3e35);})[_0xe627('0xe')](function(_0x271325){_0x3d3c22(_0x271325);});});}function _0x54720a(_0x241544,_0x29b41c,_0x16c2d7){if(!_0x29b41c)return Promise[_0xe627('0xf')](null);return new Promise(function(_0x403982,_0x30da02){return _0x2b7158[_0xe627('0x10')][_0xe627('0x8')]({'where':{'sectionId':_0x29b41c['id']},'raw':!![]})['then'](function(_0x24fddd){if(_0x241544['field']&&_0x241544[_0xe627('0x7')]!=='id'){_0x29b41c['associatedResources']=_['map'](_0x24fddd,function(_0x3dde00){return _0x3dde00[_0x241544['field']];});}else{if(_0x16c2d7===_0xe627('0x11')){_0x29b41c[_0xe627('0x9')]=_['map'](_0x24fddd,function(_0x4c9b97){return{'id':_0x4c9b97['resourceId'],'type':_0x4c9b97[_0xe627('0x12')]};});}else{_0x29b41c[_0xe627('0x9')]=_['map'](_0x24fddd,function(_0x708a8a){return _0x708a8a[_0xe627('0x13')];});}}_0x403982(_0x29b41c);})['catch'](function(_0x44861b){_0x30da02(_0x44861b);});});}function _0x29221b(_0x52d492,_0x42f3d1){var _0x19adbc={'parentSections':[]};switch(_0x52d492[_0xe627('0x14')]()){case'squareprojects':_0x19adbc[_0xe627('0x15')]=_0xe627('0x16');break;case _0xe627('0x17'):_0x19adbc[_0xe627('0x15')]='SquareOdbc';break;case _0xe627('0x18'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x19');_0x19adbc[_0xe627('0x1a')]=[{'name':_0xe627('0x1b'),'field':_0xe627('0xd'),'foreignKey':_0xe627('0x1c')}];break;case _0xe627('0x1d'):_0x19adbc[_0xe627('0x15')]='JscriptyProject';break;case _0xe627('0x1e'):_0x19adbc['childModel']='CmContact';_0x19adbc[_0xe627('0x1a')]=[{'name':_0xe627('0x1f'),'field':'id','foreignKey':'ListId'}];break;case _0xe627('0x20'):_0x19adbc['childModel']=_0xe627('0x21');break;case'companies':_0x19adbc[_0xe627('0x15')]=_0xe627('0x22');break;case'globalcustomfields':_0x19adbc[_0xe627('0x15')]='CmCustomField';break;case _0xe627('0x23'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x24');break;case _0xe627('0x25'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x26');break;case _0xe627('0x27'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x28');break;case _0xe627('0x29'):_0x19adbc[_0xe627('0x15')]='FaxAccount';break;case'inboundroutes':case _0xe627('0x2a'):case'outboundroutes':_0x19adbc[_0xe627('0x15')]='VoiceExtension';break;case'contexts':_0x19adbc[_0xe627('0x15')]='VoiceContext';break;case'voicemails':_0x19adbc[_0xe627('0x15')]=_0xe627('0x2b');break;case _0xe627('0x2c'):_0x19adbc['childModel']='VoiceRecording';_0x19adbc['parentSections']=[{'name':_0xe627('0x2d'),'field':'name','foreignKey':_0xe627('0x2e'),'model':_0xe627('0x2f'),'filter':{'field':'role','value':[_0xe627('0x30')]}},{'name':_0xe627('0x31'),'field':'name','foreignKey':_0xe627('0x2e'),'model':_0xe627('0x2f'),'filter':{'field':_0xe627('0x32'),'value':[_0xe627('0x33')]}},{'name':_0xe627('0x34'),'field':_0xe627('0xd'),'foreignKey':'queue','model':_0xe627('0x35'),'filter':{'field':'type','value':[_0xe627('0x36')]}},{'name':'QueueCampaigns','field':_0xe627('0xd'),'foreignKey':_0xe627('0x37'),'model':_0xe627('0x35'),'filter':{'field':_0xe627('0x12'),'value':[_0xe627('0x38')]}}];break;case _0xe627('0x39'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x3a');break;case _0xe627('0x3b'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x3c');break;case _0xe627('0x3d'):_0x19adbc[_0xe627('0x15')]='VoicePrefix';break;case'ivrcampaigns':_0x19adbc['childModel']='Campaign';break;case'mailqueues':_0x19adbc['childModel']=_0xe627('0x3e');break;case'mailaccounts':_0x19adbc[_0xe627('0x15')]='MailAccount';break;case _0xe627('0x3f'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x40');break;case'openchannelqueues':_0x19adbc['childModel']=_0xe627('0x41');break;case'openchannelaccounts':_0x19adbc['childModel']=_0xe627('0x42');break;case'smsqueues':_0x19adbc[_0xe627('0x15')]='SmsQueue';break;case'smsaccounts':_0x19adbc[_0xe627('0x15')]=_0xe627('0x43');break;case _0xe627('0x44'):_0x19adbc['childModel']='WhatsappQueue';break;case _0xe627('0x45'):_0x19adbc['childModel']='WhatsappAccount';break;case _0xe627('0x46'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x47');break;case _0xe627('0x48'):case _0xe627('0x49'):_0x19adbc[_0xe627('0x15')]='VoiceQueue';if(_0x42f3d1){_0x19adbc[_0xe627('0x1a')]=[{'name':_0xe627('0x34')},{'name':'QueueCampaigns'}];}break;case'users':case _0xe627('0x4a'):case _0xe627('0x4b'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x2f');if(_0x42f3d1){_0x19adbc[_0xe627('0x1a')]=[{'name':_0xe627('0x4c'),'filter':{'field':_0xe627('0x32'),'value':['admin',_0xe627('0x4d')]},'ignore':!![]},{'name':'Agents'},{'name':_0xe627('0x31')}];}break;case _0xe627('0x4e'):_0x19adbc[_0xe627('0x15')]='ZendeskAccount';break;case _0xe627('0x4f'):_0x19adbc['childModel']=_0xe627('0x50');break;case _0xe627('0x51'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x52');break;case _0xe627('0x53'):_0x19adbc['childModel']=_0xe627('0x54');break;case _0xe627('0x55'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x56');break;case _0xe627('0x57'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x58');break;case _0xe627('0x59'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x2f');break;case'cannedanswers':_0x19adbc[_0xe627('0x15')]=_0xe627('0x5a');break;case'dispositions':_0x19adbc[_0xe627('0x15')]=_0xe627('0x5b');break;case'customdashboards':_0x19adbc[_0xe627('0x15')]=_0xe627('0x5c');break;case'intervals':_0x19adbc[_0xe627('0x15')]=_0xe627('0x5d');break;case'pauses':_0x19adbc[_0xe627('0x15')]='Pause';break;case'scheduler':_0x19adbc['childModel']='Schedule';break;case'sounds':_0x19adbc[_0xe627('0x15')]=_0xe627('0x5e');break;case _0xe627('0x5f'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x60');break;case _0xe627('0x61'):_0x19adbc['childModel']=_0xe627('0x62');break;case _0xe627('0x63'):_0x19adbc['childModel']='Trigger';break;case'trunks':_0x19adbc[_0xe627('0x15')]=_0xe627('0x64');break;case _0xe627('0x65'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x66');break;case _0xe627('0x67'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x68');break;case'extractedreports':_0x19adbc[_0xe627('0x15')]='AnalyticExtractedReport';_0x19adbc[_0xe627('0x1a')]=[{'name':'Reports','field':'id','foreignKey':_0xe627('0x69')}];break;case _0xe627('0x6a'):_0x19adbc[_0xe627('0x15')]=_0xe627('0x6b');break;}return _0x19adbc;}function _0x42706c(_0x27c269,_0x1cff67){var _0x36c13e=_0x27c269[_0xe627('0x6c')](0x0)['toUpperCase']()+_0x27c269[_0xe627('0x6d')](0x1);var _0x45cc2e={'type':_0x2b7158[_0xe627('0x6e')][_0xe627('0x6f')][_0xe627('0x70')],'raw':!![]};return new Promise(function(_0x5cbaa4,_0x503272){var _0x2a7ab9=squel[_0xe627('0x71')]()['field'](_0xe627('0x72')+_0x36c13e+_0xe627('0x73'),'id')[_0xe627('0x7')](_0xe627('0x74'))[_0xe627('0x75')](_0xe627('0x76')+_0x27c269+_0xe627('0x77'),'ui')[_0xe627('0x78')]('ui.UserId\x20=\x20?',_0x1cff67['id']);return _0x2b7158[_0xe627('0x79')]['query'](_0x2a7ab9[_0xe627('0x7a')](),_0x45cc2e)[_0xe627('0x7b')](function(_0x2a2c73){_0x1cff67[_0x36c13e+_0xe627('0x7c')]=_0x2a2c73;_0x5cbaa4(_0x2a2c73);})['catch'](function(_0x4c04cc){_0x503272(_0x4c04cc);});});}return _0x48b97a[_0xe627('0x7d')](_0xe627('0x7e'),attributes,{'tableName':'user_profiles','paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x3434a1){var _0xc4f431={'raw':![],'where':{}};var _0x5a81a8={};var _0x3d5b51={'count':0x0,'rows':[]};var _0x1c9628=_0x3434a1['query']['section'];var _0x364496=_0x3434a1['query'][_0xe627('0x7f')]||![];var _0x3e37cc=_0x29221b(_0x1c9628,_0x364496);if(!_0x3e37cc[_0xe627('0x15')])throw new Error('Invalid\x20section\x20\x27'+_0x1c9628+'\x27');var _0x36579d=[{'name':_0x1c9628}];if(!_[_0xe627('0x80')](_0x3e37cc[_0xe627('0x1a')]))_0x36579d=_0x3e37cc[_0xe627('0x1a')];var _0x54ffa6=[];for(var _0x57e4fd=0x0;_0x57e4fd<_0x36579d[_0xe627('0x81')];_0x57e4fd++){_0x54ffa6[_0xe627('0x82')](_0x2b7158['UserProfileSection'][_0xe627('0x83')]({'where':{'userProfileId':_0x3434a1['params']['id'],'name':_0x36579d[_0x57e4fd]['name']},'raw':!![]}));}return Promise[_0xe627('0x84')](_0x54ffa6)[_0xe627('0x7b')](function(_0x4c58ee){var _0x4edbc8=_[_0xe627('0x6')](_0x4c58ee,function(_0x415524){return _0x415524?_0x415524:undefined;});var _0x99536f=_[_0xe627('0x6')](_0x36579d,[_0xe627('0x85'),!![]]);var _0x17d03b=_['isEmpty'](_0x4edbc8)&&_['isEmpty'](_0x99536f)?null:_['union'](_0x99536f,_0x4edbc8);if(!_0x17d03b)return null;var _0x1e92de=[];for(var _0x308bb2=0x0;_0x308bb2<_0x17d03b['length'];_0x308bb2++){var _0x25c89d=_[_0xe627('0x83')](_0x36579d,function(_0x33b7b6){return _0x17d03b[_0x308bb2]?_0x33b7b6[_0xe627('0xd')]===_0x17d03b[_0x308bb2]['name']:null;});if(_0x25c89d){if(_0x17d03b[_0x308bb2][_0xe627('0x85')]){_0x1e92de[_0xe627('0x82')](_0x2abdc7(_0x3e37cc[_0xe627('0x15')],_0x17d03b[_0x308bb2]));}else{if(!_0x17d03b[_0x308bb2][_0xe627('0x86')]){_0x1e92de['push'](_0x54720a(_0x25c89d,_0x17d03b[_0x308bb2],_0x3e37cc[_0xe627('0x15')]));}else{if(_0x25c89d[_0xe627('0xc')]){_0x1e92de[_0xe627('0x82')](_0x16db2f(_0x25c89d,_0x17d03b[_0x308bb2]));}}}}}return Promise['all'](_0x1e92de);})['then'](function(_0x4ff0ee){var _0x58cbd8=_0x4ff0ee;var _0x4cafb7=null;if(_0x58cbd8){_0x4cafb7=_0x58cbd8[_0xe627('0x81')]===0x1?_0x58cbd8[0x0]:null;}if(!_0x4cafb7&&!_0x58cbd8)return _0x3d5b51;var _0x3e09c7=_0x2b7158[_0x3e37cc[_0xe627('0x15')]][_0xe627('0x87')];_0x5a81a8[_0xe627('0xc')]=_[_0xe627('0x88')](_0x3e09c7);_0x5a81a8['query']=_[_0xe627('0x88')](_0x3434a1[_0xe627('0x89')]);_0x5a81a8[_0xe627('0x8a')]=_[_0xe627('0x8b')](_0x5a81a8[_0xe627('0xc')],_0x5a81a8['query']);_0xc4f431['attributes']=_['intersection'](_0x5a81a8[_0xe627('0xc')],qs[_0xe627('0x8c')](_0x3434a1['query'][_0xe627('0x8c')]));_0xc4f431[_0xe627('0x8d')]=_0xc4f431[_0xe627('0x8d')][_0xe627('0x81')]?_0xc4f431['attributes']:_0x5a81a8['model'];if(!_0x3434a1[_0xe627('0x89')]['hasOwnProperty'](_0xe627('0x8e'))){_0xc4f431[_0xe627('0x8f')]=qs[_0xe627('0x8f')](_0x3434a1['query']['limit']);_0xc4f431[_0xe627('0x90')]=qs['offset'](_0x3434a1['query']['offset']);}_0xc4f431[_0xe627('0x91')]=qs[_0xe627('0x92')](_0x3434a1['query'][_0xe627('0x92')]);_0xc4f431[_0xe627('0x78')]=qs['filters'](_[_0xe627('0x93')](_0x3434a1[_0xe627('0x89')],_0x5a81a8[_0xe627('0x8a')]));if(_0x3434a1[_0xe627('0x89')][_0xe627('0x6')]){_0xc4f431[_0xe627('0x78')]=_['merge'](_0xc4f431[_0xe627('0x78')],{'$or':_[_0xe627('0xa')](_0x3e09c7,function(_0x4a69dc){if(_0x4a69dc[_0xe627('0x12')][_0xe627('0x94')]!=='VIRTUAL'){var _0x2a5757={};_0x2a5757[_0x4a69dc[_0xe627('0x7')]]={'$like':'%'+_0x3434a1[_0xe627('0x89')]['filter']+'%'};return _0x2a5757;}})});}var _0x4cb71c=[];var _0x471058=null;var _0x30ec1e={};if(_0x4cafb7){_0x471058=_[_0xe627('0x83')](_0x36579d,[_0xe627('0xd'),_0x4cafb7[_0xe627('0xd')]]);if(_0x471058[_0xe627('0x7')]){_0x30ec1e={};if(_0x3e37cc[_0xe627('0x15')]===_0xe627('0x11')){_0x30ec1e[_0x471058[_0xe627('0x95')]]=_[_0xe627('0xa')](_0x4cafb7[_0xe627('0x9')],'id');}else{_0x30ec1e[_0x471058['foreignKey']]=_0x4cafb7[_0xe627('0x9')];}_0x4cb71c[_0xe627('0x82')](_0x30ec1e);}else{_0xc4f431[_0xe627('0x78')]['id']=_0x4cafb7[_0xe627('0x9')];}}else{for(var _0x421821=0x0;_0x421821<_0x58cbd8[_0xe627('0x81')];_0x421821++){_0x471058=_[_0xe627('0x83')](_0x36579d,['name',_0x58cbd8[_0x421821][_0xe627('0xd')]]);if(_0x471058[_0xe627('0x7')]){_0x30ec1e={};_0x30ec1e[_0x471058[_0xe627('0x95')]]=_0x58cbd8[_0x421821]['associatedResources'];_0x4cb71c[_0xe627('0x82')](_0x30ec1e);}else{if(!_0xc4f431['where']['id'])_0xc4f431['where']['id']=[];_0x58cbd8[_0x421821][_0xe627('0x9')][_0xe627('0x96')](function(_0x203e4e){_0xc4f431['where']['id'][_0xe627('0x82')](_0x203e4e);});}}}if(!_[_0xe627('0x80')](_0x4cb71c)){_0xc4f431['where']=_[_0xe627('0x97')](_0xc4f431['where'],{'$and':{'$or':_0x4cb71c}});}_0xc4f431=_['merge']({},_0xc4f431,_0x3434a1[_0xe627('0x98')]);if(_0x4cafb7&&!_0x4cafb7[_0xe627('0x86')]&&_0x3e37cc[_0xe627('0x15')]==='AnalyticExtractedReport'){if(_0x3434a1[_0xe627('0x89')][_0xe627('0x99')]){_0xc4f431[_0xe627('0x9a')]=[{'all':!![]}];}return _0x2b7158[_0x3e37cc[_0xe627('0x15')]][_0xe627('0x8')](_0xc4f431)['then'](function(_0x339996){var _0x12c4c5=[];_0x339996[_0xe627('0x96')](function(_0x40f7b7){var _0x4658b4;switch(_0x40f7b7[_0xe627('0x9b')]){case _0xe627('0x9c'):_0x4658b4=_[_0xe627('0x83')](_0x4cafb7[_0xe627('0x9')],function(_0x106a38){return _0x106a38['id']===_0x40f7b7['reportId']&&_0x106a38['type']===_0xe627('0x9d');});break;case _0xe627('0x9e'):_0x4658b4=_['find'](_0x4cafb7[_0xe627('0x9')],function(_0x21ea37){return _0x21ea37['id']===_0x40f7b7[_0xe627('0x69')]&&_0x21ea37[_0xe627('0x12')]===_0xe627('0x9f');});break;}if(_0x4658b4)_0x12c4c5[_0xe627('0x82')](_0x40f7b7);});_0x3d5b51[_0xe627('0xa0')]=_0x12c4c5[_0xe627('0x81')];_0x3d5b51[_0xe627('0xa1')]=_0x12c4c5;return _0x3d5b51;});}else{return _0x2b7158[_0x3e37cc[_0xe627('0x15')]][_0xe627('0xa0')]({'where':_0xc4f431[_0xe627('0x78')]})[_0xe627('0x7b')](function(_0x562550){_0x3d5b51[_0xe627('0xa0')]=_0x562550;if(_0x3434a1[_0xe627('0x89')][_0xe627('0x99')]){if(_0x3e37cc['childModel']==='CmContact'){_0xc4f431[_0xe627('0x9a')]=[{'model':_0x2b7158['Tag'],'as':_0xe627('0xa2'),'attributes':['id',_0xe627('0xd'),_0xe627('0xa3')],'required':_0x3434a1['query'][_0xe627('0xa4')]?!![]:![]},{'model':_0x2b7158['Tag'],'as':_0xe627('0xa5'),'attributes':['id',_0xe627('0xd'),_0xe627('0xa3')],'through':_0x3434a1['query'][_0xe627('0xa4')]?{'attributes':[],'where':{'TagId':_0x3434a1[_0xe627('0x89')]['tag']||undefined}}:{},'required':_0x3434a1[_0xe627('0x89')][_0xe627('0xa4')]?!![]:![]}];}else{_0xc4f431[_0xe627('0x9a')]=[{'all':!![]}];}}return _0x2b7158[_0x3e37cc['childModel']][_0xe627('0x8')](_0xc4f431);})['then'](function(_0x5d5aaa){_0x3d5b51[_0xe627('0xa1')]=_0x5d5aaa;if(_0x1c9628===_0xe627('0x2d')&&_0x3434a1[_0xe627('0x89')][_0xe627('0xa6')]===_0xe627('0xa7')){var _0x17ca45=[];for(var _0x5c424a=0x0;_0x5c424a<_0x3d5b51[_0xe627('0xa1')][_0xe627('0x81')];_0x5c424a++){_0x17ca45[_0xe627('0x82')](_0x42706c(_0xe627('0xa8'),_0x3d5b51['rows'][_0x5c424a][_0xe627('0xa9')]));_0x17ca45[_0xe627('0x82')](_0x42706c(_0xe627('0xaa'),_0x3d5b51[_0xe627('0xa1')][_0x5c424a][_0xe627('0xa9')]));_0x17ca45[_0xe627('0x82')](_0x42706c(_0xe627('0xab'),_0x3d5b51['rows'][_0x5c424a]['dataValues']));_0x17ca45['push'](_0x42706c(_0xe627('0xac'),_0x3d5b51[_0xe627('0xa1')][_0x5c424a]['dataValues']));_0x17ca45[_0xe627('0x82')](_0x42706c(_0xe627('0xad'),_0x3d5b51['rows'][_0x5c424a]['dataValues']));_0x17ca45['push'](_0x42706c(_0xe627('0xae'),_0x3d5b51[_0xe627('0xa1')][_0x5c424a]['dataValues']));}return Promise[_0xe627('0x84')](_0x17ca45)['then'](function(){return _0x3d5b51;});}return _0x3d5b51;});}});}}});};
\ No newline at end of file
+var _0xdb28=['slice','Sequelize','QueryTypes','SELECT','ui.','InteractionId','ui.createdAt','user_has_','_interactions','where','ui.UserId\x20=\x20?','sequelize','query','toString','OpenTabs','define','UserProfile','user_profiles','section','mergeResources','Invalid\x20section\x20\x27','length','push','UserProfileSection','find','all','isEmpty','union','ignore','autoAssociation','keys','filters','intersection','attributes','fields','nolimit','limit','offset','order','sort','merge','key','VIRTUAL','foreignKey','forEach','options','includeAll','include','reportType','default','DefaultReports','custom','CustomReports','rows','count','Tags','color','tag','ThroughTags','Agents','openTabs','chat','dataValues','fax','mail','openchannel','lodash','./userProfile.attributes','../../components/parsers/qs','squel','models','filter','field','value','findAll','then','map','catch','model','associatedResources','name','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','SquareProject','odbc','childModel','SquareOdbc','squarerecordings','parentSections','SquareProjects','projectName','JscriptyProject','contacts','CmContact','Lists','ListId','lists','CmList','CmCompany','globalcustomfields','chatqueues','ChatQueue','chatwebsites','FaxQueue','FaxAccount','inboundroutes','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceMail','voicerecordings','VoiceRecording','membername','role','agent','Telephones','User','telephone','VoiceQueues','queue','inbound','QueueCampaigns','VoiceQueue','type','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','ivrcampaigns','Campaign','mailqueues','MailQueue','mailaccounts','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','SmsQueue','smsaccounts','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','Team','voicequeues','users','agents','telephones','Users','admin','user','zendeskaccounts','ZendeskAccount','SalesforceAccount','freshdeskaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','cannedanswers','CannedAnswer','dispositions','Disposition','customdashboards','Dashboard','intervals','Interval','pauses','scheduler','sounds','Sound','Tag','templates','Template','Trigger','trunks','Trunk','variables','Variable','plugins','Plugin','Reports','reportId','AnalyticMetric','charAt','toUpperCase'];(function(_0x2a1a31,_0x1b8b1a){var _0xe175e8=function(_0xa6f2c2){while(--_0xa6f2c2){_0x2a1a31['push'](_0x2a1a31['shift']());}};_0xe175e8(++_0x1b8b1a);}(_0xdb28,0x106));var _0x8db2=function(_0x147130,_0x2c6156){_0x147130=_0x147130-0x0;var _0x1fe9f0=_0xdb28[_0x147130];return _0x1fe9f0;};'use strict';var _=require(_0x8db2('0x0'));var attributes=require(_0x8db2('0x1'));var qs=require(_0x8db2('0x2'));var squel=require(_0x8db2('0x3'));module['exports']=function(_0x1f4c45){var _0x11c26d=_0x1f4c45[_0x8db2('0x4')];function _0x4426fe(_0x11109e,_0x52bf99){return new Promise(function(_0x21a03e,_0x1d2dd3){if(!_0x52bf99)return _0x21a03e(null);var _0x5f42ee=_0x52bf99['filter']?{[_0x52bf99[_0x8db2('0x5')][_0x8db2('0x6')]]:_0x52bf99[_0x8db2('0x5')][_0x8db2('0x7')]}:undefined;return _0x11c26d[_0x11109e][_0x8db2('0x8')]({'where':_0x5f42ee,'raw':!![]})[_0x8db2('0x9')](function(_0x126c78){_0x52bf99['associatedResources']=_[_0x8db2('0xa')](_0x126c78,'id');_0x21a03e(_0x52bf99);})[_0x8db2('0xb')](function(_0x1f62af){_0x1d2dd3(_0x1f62af);});});}function _0x57015f(_0x1d9371,_0x150942){return new Promise(function(_0x576475,_0x41beda){var _0x3b2faa=_0x1d9371[_0x8db2('0x5')]?{[_0x1d9371[_0x8db2('0x5')][_0x8db2('0x6')]]:_0x1d9371['filter']['value']}:undefined;return _0x11c26d[_0x1d9371[_0x8db2('0xc')]][_0x8db2('0x8')]({'where':_0x3b2faa,'raw':!![]})[_0x8db2('0x9')](function(_0x1d6a15){_0x150942[_0x8db2('0xd')]=_[_0x8db2('0xa')](_0x1d6a15,function(_0x2f177a){return _0x2f177a[_0x8db2('0xe')];});_0x576475(_0x150942);})[_0x8db2('0xb')](function(_0x16c8c2){_0x41beda(_0x16c8c2);});});}function _0x5489a9(_0x13b0f5,_0x24da1b,_0x48101e){if(!_0x24da1b)return Promise[_0x8db2('0xf')](null);return new Promise(function(_0x44957d,_0x21db8c){return _0x11c26d[_0x8db2('0x10')][_0x8db2('0x8')]({'where':{'sectionId':_0x24da1b['id']},'raw':!![]})[_0x8db2('0x9')](function(_0x51d60d){if(_0x13b0f5['field']&&_0x13b0f5[_0x8db2('0x6')]!=='id'){_0x24da1b[_0x8db2('0xd')]=_[_0x8db2('0xa')](_0x51d60d,function(_0x1b64e4){return _0x1b64e4[_0x13b0f5['field']];});}else{if(_0x48101e===_0x8db2('0x11')){_0x24da1b[_0x8db2('0xd')]=_[_0x8db2('0xa')](_0x51d60d,function(_0x297ba3){return{'id':_0x297ba3[_0x8db2('0x12')],'type':_0x297ba3['type']};});}else{_0x24da1b[_0x8db2('0xd')]=_[_0x8db2('0xa')](_0x51d60d,function(_0x18f69c){return _0x18f69c[_0x8db2('0x12')];});}}_0x44957d(_0x24da1b);})[_0x8db2('0xb')](function(_0x21704c){_0x21db8c(_0x21704c);});});}function _0x796ec1(_0x5c6614,_0x256202){var _0x4f6516={'parentSections':[]};switch(_0x5c6614['toLowerCase']()){case'squareprojects':_0x4f6516['childModel']=_0x8db2('0x13');break;case _0x8db2('0x14'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x16');break;case _0x8db2('0x17'):_0x4f6516[_0x8db2('0x15')]='SquareRecording';_0x4f6516[_0x8db2('0x18')]=[{'name':_0x8db2('0x19'),'field':_0x8db2('0xe'),'foreignKey':_0x8db2('0x1a')}];break;case'projects':_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x1b');break;case _0x8db2('0x1c'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x1d');_0x4f6516[_0x8db2('0x18')]=[{'name':_0x8db2('0x1e'),'field':'id','foreignKey':_0x8db2('0x1f')}];break;case _0x8db2('0x20'):_0x4f6516['childModel']=_0x8db2('0x21');break;case'companies':_0x4f6516['childModel']=_0x8db2('0x22');break;case _0x8db2('0x23'):_0x4f6516[_0x8db2('0x15')]='CmCustomField';break;case _0x8db2('0x24'):_0x4f6516['childModel']=_0x8db2('0x25');break;case _0x8db2('0x26'):_0x4f6516[_0x8db2('0x15')]='ChatWebsite';break;case'faxqueues':_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x27');break;case'faxaccounts':_0x4f6516['childModel']=_0x8db2('0x28');break;case _0x8db2('0x29'):case _0x8db2('0x2a'):case _0x8db2('0x2b'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x2c');break;case _0x8db2('0x2d'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x2e');break;case _0x8db2('0x2f'):_0x4f6516['childModel']=_0x8db2('0x30');break;case _0x8db2('0x31'):_0x4f6516['childModel']=_0x8db2('0x32');_0x4f6516[_0x8db2('0x18')]=[{'name':'Agents','field':'name','foreignKey':_0x8db2('0x33'),'model':'User','filter':{'field':_0x8db2('0x34'),'value':[_0x8db2('0x35')]}},{'name':_0x8db2('0x36'),'field':_0x8db2('0xe'),'foreignKey':'membername','model':_0x8db2('0x37'),'filter':{'field':'role','value':[_0x8db2('0x38')]}},{'name':_0x8db2('0x39'),'field':_0x8db2('0xe'),'foreignKey':_0x8db2('0x3a'),'model':'VoiceQueue','filter':{'field':'type','value':[_0x8db2('0x3b')]}},{'name':_0x8db2('0x3c'),'field':'name','foreignKey':_0x8db2('0x3a'),'model':_0x8db2('0x3d'),'filter':{'field':_0x8db2('0x3e'),'value':['outbound']}}];break;case _0x8db2('0x3f'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x40');break;case _0x8db2('0x41'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x42');break;case _0x8db2('0x43'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x44');break;case _0x8db2('0x45'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x46');break;case _0x8db2('0x47'):_0x4f6516['childModel']=_0x8db2('0x48');break;case _0x8db2('0x49'):_0x4f6516['childModel']='MailAccount';break;case _0x8db2('0x4a'):_0x4f6516['childModel']=_0x8db2('0x4b');break;case _0x8db2('0x4c'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x4d');break;case _0x8db2('0x4e'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x4f');break;case'smsqueues':_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x50');break;case _0x8db2('0x51'):_0x4f6516[_0x8db2('0x15')]='SmsAccount';break;case _0x8db2('0x52'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x53');break;case _0x8db2('0x54'):_0x4f6516['childModel']=_0x8db2('0x55');break;case'teams':_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x56');break;case _0x8db2('0x57'):case'queuecampaigns':_0x4f6516['childModel']=_0x8db2('0x3d');if(_0x256202){_0x4f6516['parentSections']=[{'name':_0x8db2('0x39')},{'name':_0x8db2('0x3c')}];}break;case _0x8db2('0x58'):case _0x8db2('0x59'):case _0x8db2('0x5a'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x37');if(_0x256202){_0x4f6516[_0x8db2('0x18')]=[{'name':_0x8db2('0x5b'),'filter':{'field':_0x8db2('0x34'),'value':[_0x8db2('0x5c'),_0x8db2('0x5d')]},'ignore':!![]},{'name':'Agents'},{'name':_0x8db2('0x36')}];}break;case _0x8db2('0x5e'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x5f');break;case'salesforceaccounts':_0x4f6516['childModel']=_0x8db2('0x60');break;case _0x8db2('0x61'):_0x4f6516[_0x8db2('0x15')]='FreshdeskAccount';break;case'sugarcrmaccounts':_0x4f6516['childModel']=_0x8db2('0x62');break;case _0x8db2('0x63'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x64');break;case _0x8db2('0x65'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x66');break;case'vtigeraccounts':_0x4f6516['childModel']=_0x8db2('0x37');break;case _0x8db2('0x67'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x68');break;case _0x8db2('0x69'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x6a');break;case _0x8db2('0x6b'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x6c');break;case _0x8db2('0x6d'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x6e');break;case _0x8db2('0x6f'):_0x4f6516[_0x8db2('0x15')]='Pause';break;case _0x8db2('0x70'):_0x4f6516[_0x8db2('0x15')]='Schedule';break;case _0x8db2('0x71'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x72');break;case'tags':_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x73');break;case _0x8db2('0x74'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x75');break;case'triggers':_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x76');break;case _0x8db2('0x77'):_0x4f6516['childModel']=_0x8db2('0x78');break;case _0x8db2('0x79'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x7a');break;case _0x8db2('0x7b'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x7c');break;case'extractedreports':_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x11');_0x4f6516['parentSections']=[{'name':_0x8db2('0x7d'),'field':'id','foreignKey':_0x8db2('0x7e')}];break;case'metrics':_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x7f');break;}return _0x4f6516;}function _0x63e8f7(_0x30f4f3,_0x42b941){var _0x3c7d8c=_0x30f4f3[_0x8db2('0x80')](0x0)[_0x8db2('0x81')]()+_0x30f4f3[_0x8db2('0x82')](0x1);var _0x173a5e={'type':_0x11c26d[_0x8db2('0x83')][_0x8db2('0x84')][_0x8db2('0x85')],'raw':!![]};return new Promise(function(_0x1ce89f,_0x64ec90){var _0x105a53=squel['select']()[_0x8db2('0x6')](_0x8db2('0x86')+_0x3c7d8c+_0x8db2('0x87'),'id')[_0x8db2('0x6')](_0x8db2('0x88'))['from'](_0x8db2('0x89')+_0x30f4f3+_0x8db2('0x8a'),'ui')[_0x8db2('0x8b')](_0x8db2('0x8c'),_0x42b941['id']);return _0x11c26d[_0x8db2('0x8d')][_0x8db2('0x8e')](_0x105a53[_0x8db2('0x8f')](),_0x173a5e)[_0x8db2('0x9')](function(_0x24cfe9){_0x42b941[_0x3c7d8c+_0x8db2('0x90')]=_0x24cfe9;_0x1ce89f(_0x24cfe9);})[_0x8db2('0xb')](function(_0xfe6bac){_0x64ec90(_0xfe6bac);});});}return _0x1f4c45[_0x8db2('0x91')](_0x8db2('0x92'),attributes,{'tableName':_0x8db2('0x93'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x270fc0){var _0x1d7862={'raw':![],'where':{}};var _0xefb12={};var _0x5a719f={'count':0x0,'rows':[]};var _0x3273dd=_0x270fc0['query'][_0x8db2('0x94')];var _0x570c53=_0x270fc0[_0x8db2('0x8e')][_0x8db2('0x95')]||![];var _0xe4fd6a=_0x796ec1(_0x3273dd,_0x570c53);if(!_0xe4fd6a[_0x8db2('0x15')])throw new Error(_0x8db2('0x96')+_0x3273dd+'\x27');var _0x59a32e=[{'name':_0x3273dd}];if(!_['isEmpty'](_0xe4fd6a[_0x8db2('0x18')]))_0x59a32e=_0xe4fd6a[_0x8db2('0x18')];var _0x21ec87=[];for(var _0x3ba1d2=0x0;_0x3ba1d2<_0x59a32e[_0x8db2('0x97')];_0x3ba1d2++){_0x21ec87[_0x8db2('0x98')](_0x11c26d[_0x8db2('0x99')][_0x8db2('0x9a')]({'where':{'userProfileId':_0x270fc0['params']['id'],'name':_0x59a32e[_0x3ba1d2][_0x8db2('0xe')]},'raw':!![]}));}return Promise[_0x8db2('0x9b')](_0x21ec87)[_0x8db2('0x9')](function(_0x21521c){var _0x250150=_[_0x8db2('0x5')](_0x21521c,function(_0x451746){return _0x451746?_0x451746:undefined;});var _0x20caf0=_['filter'](_0x59a32e,['ignore',!![]]);var _0x358009=_[_0x8db2('0x9c')](_0x250150)&&_[_0x8db2('0x9c')](_0x20caf0)?null:_[_0x8db2('0x9d')](_0x20caf0,_0x250150);if(!_0x358009)return null;var _0x412801=[];for(var _0x5a074e=0x0;_0x5a074e<_0x358009['length'];_0x5a074e++){var _0x3611da=_[_0x8db2('0x9a')](_0x59a32e,function(_0x54f0d4){return _0x358009[_0x5a074e]?_0x54f0d4[_0x8db2('0xe')]===_0x358009[_0x5a074e][_0x8db2('0xe')]:null;});if(_0x3611da){if(_0x358009[_0x5a074e][_0x8db2('0x9e')]){_0x412801['push'](_0x4426fe(_0xe4fd6a[_0x8db2('0x15')],_0x358009[_0x5a074e]));}else{if(!_0x358009[_0x5a074e][_0x8db2('0x9f')]){_0x412801[_0x8db2('0x98')](_0x5489a9(_0x3611da,_0x358009[_0x5a074e],_0xe4fd6a['childModel']));}else{if(_0x3611da[_0x8db2('0xc')]){_0x412801[_0x8db2('0x98')](_0x57015f(_0x3611da,_0x358009[_0x5a074e]));}}}}}return Promise[_0x8db2('0x9b')](_0x412801);})[_0x8db2('0x9')](function(_0x3a0946){var _0x5923b3=_0x3a0946;var _0x3c9af4=null;if(_0x5923b3){_0x3c9af4=_0x5923b3[_0x8db2('0x97')]===0x1?_0x5923b3[0x0]:null;}if(!_0x3c9af4&&!_0x5923b3)return _0x5a719f;var _0x150439=_0x11c26d[_0xe4fd6a['childModel']]['rawAttributes'];_0xefb12[_0x8db2('0xc')]=_[_0x8db2('0xa0')](_0x150439);_0xefb12['query']=_[_0x8db2('0xa0')](_0x270fc0[_0x8db2('0x8e')]);_0xefb12[_0x8db2('0xa1')]=_[_0x8db2('0xa2')](_0xefb12[_0x8db2('0xc')],_0xefb12[_0x8db2('0x8e')]);_0x1d7862[_0x8db2('0xa3')]=_[_0x8db2('0xa2')](_0xefb12[_0x8db2('0xc')],qs[_0x8db2('0xa4')](_0x270fc0[_0x8db2('0x8e')][_0x8db2('0xa4')]));_0x1d7862[_0x8db2('0xa3')]=_0x1d7862['attributes'][_0x8db2('0x97')]?_0x1d7862['attributes']:_0xefb12[_0x8db2('0xc')];if(!_0x270fc0[_0x8db2('0x8e')]['hasOwnProperty'](_0x8db2('0xa5'))){_0x1d7862[_0x8db2('0xa6')]=qs['limit'](_0x270fc0[_0x8db2('0x8e')][_0x8db2('0xa6')]);_0x1d7862[_0x8db2('0xa7')]=qs[_0x8db2('0xa7')](_0x270fc0[_0x8db2('0x8e')][_0x8db2('0xa7')]);}_0x1d7862[_0x8db2('0xa8')]=qs[_0x8db2('0xa9')](_0x270fc0[_0x8db2('0x8e')]['sort']);_0x1d7862['where']=qs[_0x8db2('0xa1')](_['pick'](_0x270fc0[_0x8db2('0x8e')],_0xefb12[_0x8db2('0xa1')]));if(_0x270fc0[_0x8db2('0x8e')]['filter']){_0x1d7862[_0x8db2('0x8b')]=_[_0x8db2('0xaa')](_0x1d7862[_0x8db2('0x8b')],{'$or':_['map'](_0x150439,function(_0x3ae18c){if(_0x3ae18c[_0x8db2('0x3e')][_0x8db2('0xab')]!==_0x8db2('0xac')){var _0x48a618={};_0x48a618[_0x3ae18c[_0x8db2('0x6')]]={'$like':'%'+_0x270fc0[_0x8db2('0x8e')][_0x8db2('0x5')]+'%'};return _0x48a618;}})});}var _0x1edb1a=[];var _0xcf1c42=null;var _0x15fd4={};if(_0x3c9af4){_0xcf1c42=_[_0x8db2('0x9a')](_0x59a32e,[_0x8db2('0xe'),_0x3c9af4[_0x8db2('0xe')]]);if(_0xcf1c42[_0x8db2('0x6')]){_0x15fd4={};if(_0xe4fd6a[_0x8db2('0x15')]==='AnalyticExtractedReport'){_0x15fd4[_0xcf1c42[_0x8db2('0xad')]]=_[_0x8db2('0xa')](_0x3c9af4[_0x8db2('0xd')],'id');}else{_0x15fd4[_0xcf1c42['foreignKey']]=_0x3c9af4['associatedResources'];}_0x1edb1a['push'](_0x15fd4);}else{_0x1d7862[_0x8db2('0x8b')]['id']=_0x3c9af4[_0x8db2('0xd')];}}else{for(var _0x3191c8=0x0;_0x3191c8<_0x5923b3[_0x8db2('0x97')];_0x3191c8++){_0xcf1c42=_[_0x8db2('0x9a')](_0x59a32e,[_0x8db2('0xe'),_0x5923b3[_0x3191c8][_0x8db2('0xe')]]);if(_0xcf1c42[_0x8db2('0x6')]){_0x15fd4={};_0x15fd4[_0xcf1c42[_0x8db2('0xad')]]=_0x5923b3[_0x3191c8][_0x8db2('0xd')];_0x1edb1a[_0x8db2('0x98')](_0x15fd4);}else{if(!_0x1d7862['where']['id'])_0x1d7862[_0x8db2('0x8b')]['id']=[];_0x5923b3[_0x3191c8][_0x8db2('0xd')][_0x8db2('0xae')](function(_0x2fb169){_0x1d7862['where']['id']['push'](_0x2fb169);});}}}if(!_[_0x8db2('0x9c')](_0x1edb1a)){_0x1d7862[_0x8db2('0x8b')]=_['merge'](_0x1d7862[_0x8db2('0x8b')],{'$and':{'$or':_0x1edb1a}});}_0x1d7862=_[_0x8db2('0xaa')]({},_0x1d7862,_0x270fc0[_0x8db2('0xaf')]);if(_0x3c9af4&&!_0x3c9af4['autoAssociation']&&_0xe4fd6a['childModel']==='AnalyticExtractedReport'){if(_0x270fc0[_0x8db2('0x8e')][_0x8db2('0xb0')]){_0x1d7862[_0x8db2('0xb1')]=[{'all':!![]}];}return _0x11c26d[_0xe4fd6a[_0x8db2('0x15')]][_0x8db2('0x8')](_0x1d7862)['then'](function(_0x30930a){var _0x5e349c=[];_0x30930a[_0x8db2('0xae')](function(_0x353101){var _0xa083b1;switch(_0x353101[_0x8db2('0xb2')]){case _0x8db2('0xb3'):_0xa083b1=_['find'](_0x3c9af4['associatedResources'],function(_0x45cce8){return _0x45cce8['id']===_0x353101['reportId']&&_0x45cce8[_0x8db2('0x3e')]===_0x8db2('0xb4');});break;case _0x8db2('0xb5'):_0xa083b1=_[_0x8db2('0x9a')](_0x3c9af4[_0x8db2('0xd')],function(_0x456d5e){return _0x456d5e['id']===_0x353101['reportId']&&_0x456d5e[_0x8db2('0x3e')]===_0x8db2('0xb6');});break;}if(_0xa083b1)_0x5e349c[_0x8db2('0x98')](_0x353101);});_0x5a719f['count']=_0x5e349c[_0x8db2('0x97')];_0x5a719f[_0x8db2('0xb7')]=_0x5e349c;return _0x5a719f;});}else{return _0x11c26d[_0xe4fd6a['childModel']][_0x8db2('0xb8')]({'where':_0x1d7862[_0x8db2('0x8b')]})[_0x8db2('0x9')](function(_0x15307d){_0x5a719f[_0x8db2('0xb8')]=_0x15307d;if(_0x270fc0[_0x8db2('0x8e')][_0x8db2('0xb0')]){if(_0xe4fd6a[_0x8db2('0x15')]===_0x8db2('0x1d')){_0x1d7862['include']=[{'model':_0x11c26d[_0x8db2('0x73')],'as':_0x8db2('0xb9'),'attributes':['id',_0x8db2('0xe'),_0x8db2('0xba')],'required':_0x270fc0[_0x8db2('0x8e')][_0x8db2('0xbb')]?!![]:![]},{'model':_0x11c26d[_0x8db2('0x73')],'as':_0x8db2('0xbc'),'attributes':['id',_0x8db2('0xe'),_0x8db2('0xba')],'through':_0x270fc0['query'][_0x8db2('0xbb')]?{'attributes':[],'where':{'TagId':_0x270fc0[_0x8db2('0x8e')][_0x8db2('0xbb')]||undefined}}:{},'required':_0x270fc0[_0x8db2('0x8e')]['tag']?!![]:![]}];}else{_0x1d7862[_0x8db2('0xb1')]=[{'all':!![]}];}}return _0x11c26d[_0xe4fd6a[_0x8db2('0x15')]][_0x8db2('0x8')](_0x1d7862);})['then'](function(_0x59fbe1){_0x5a719f[_0x8db2('0xb7')]=_0x59fbe1;if(_0x3273dd===_0x8db2('0xbd')&&_0x270fc0[_0x8db2('0x8e')][_0x8db2('0xbe')]==='true'){var _0xaa2661=[];for(var _0x3a0e7e=0x0;_0x3a0e7e<_0x5a719f[_0x8db2('0xb7')][_0x8db2('0x97')];_0x3a0e7e++){_0xaa2661['push'](_0x63e8f7(_0x8db2('0xbf'),_0x5a719f[_0x8db2('0xb7')][_0x3a0e7e][_0x8db2('0xc0')]));_0xaa2661['push'](_0x63e8f7('sms',_0x5a719f['rows'][_0x3a0e7e][_0x8db2('0xc0')]));_0xaa2661[_0x8db2('0x98')](_0x63e8f7(_0x8db2('0xc1'),_0x5a719f[_0x8db2('0xb7')][_0x3a0e7e]['dataValues']));_0xaa2661['push'](_0x63e8f7(_0x8db2('0xc2'),_0x5a719f[_0x8db2('0xb7')][_0x3a0e7e][_0x8db2('0xc0')]));_0xaa2661[_0x8db2('0x98')](_0x63e8f7(_0x8db2('0xc3'),_0x5a719f[_0x8db2('0xb7')][_0x3a0e7e]['dataValues']));_0xaa2661[_0x8db2('0x98')](_0x63e8f7('whatsapp',_0x5a719f[_0x8db2('0xb7')][_0x3a0e7e][_0x8db2('0xc0')]));}return Promise[_0x8db2('0x9b')](_0xaa2661)[_0x8db2('0x9')](function(){return _0x5a719f;});}return _0x5a719f;});}});}}});};
\ No newline at end of file
index 2f3effd..030a6f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacc6=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','defaults','localhost','socket.io-emitter','redis','./userProfile.socket','request','then','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch'];(function(_0x260e07,_0x2dd0e4){var _0x28ba4e=function(_0x237146){while(--_0x237146){_0x260e07['push'](_0x260e07['shift']());}};_0x28ba4e(++_0x2dd0e4);}(_0xacc6,0x150));var _0x6acc=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xacc6[_0x1caf6a];return _0x1bf493;};'use strict';var _=require(_0x6acc('0x0'));var util=require(_0x6acc('0x1'));var moment=require(_0x6acc('0x2'));var BPromise=require(_0x6acc('0x3'));var rs=require(_0x6acc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6acc('0x5'))['db'];var utils=require(_0x6acc('0x6'));var logger=require(_0x6acc('0x7'))('rpc');var config=require(_0x6acc('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x6acc('0x9')][_0x6acc('0xa')]({'port':0x232a});config['redis']=_[_0x6acc('0xb')](config['redis'],{'host':_0x6acc('0xc'),'port':0x18eb});var socket=require(_0x6acc('0xd'))(new Redis(config[_0x6acc('0xe')]));require(_0x6acc('0xf'))['register'](socket);function respondWithRpcPromise(_0x1343cb,_0x4cf4c7,_0x3c1a24){return new BPromise(function(_0x21b624,_0xb8647d){return client[_0x6acc('0x10')](_0x1343cb,_0x3c1a24)[_0x6acc('0x11')](function(_0x15b64b){logger['info'](_0x6acc('0x12'),_0x4cf4c7,_0x6acc('0x13'));logger[_0x6acc('0x14')](_0x6acc('0x15'),_0x4cf4c7,_0x6acc('0x13'),JSON['stringify'](_0x15b64b));if(_0x15b64b['error']){if(_0x15b64b[_0x6acc('0x16')][_0x6acc('0x17')]===0x1f4){logger[_0x6acc('0x16')](_0x6acc('0x12'),_0x4cf4c7,_0x15b64b[_0x6acc('0x16')][_0x6acc('0x18')]);return _0xb8647d(_0x15b64b[_0x6acc('0x16')][_0x6acc('0x18')]);}logger[_0x6acc('0x16')](_0x6acc('0x12'),_0x4cf4c7,_0x15b64b[_0x6acc('0x16')][_0x6acc('0x18')]);return _0x21b624(_0x15b64b[_0x6acc('0x16')][_0x6acc('0x18')]);}else{logger[_0x6acc('0x19')](_0x6acc('0x12'),_0x4cf4c7,_0x6acc('0x13'));_0x21b624(_0x15b64b[_0x6acc('0x1a')]['message']);}})[_0x6acc('0x1b')](function(_0x43b8ca){logger[_0x6acc('0x16')](_0x6acc('0x12'),_0x4cf4c7,_0x43b8ca);_0xb8647d(_0x43b8ca);});});}
\ No newline at end of file
+var _0x9505=['request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./userProfile.socket','register','request','info','UserProfile,\x20%s,\x20%s'];(function(_0x1833ee,_0x1a246d){var _0x2b2812=function(_0x140041){while(--_0x140041){_0x1833ee['push'](_0x1833ee['shift']());}};_0x2b2812(++_0x1a246d);}(_0x9505,0x1e5));var _0x5950=function(_0x442650,_0x26c15f){_0x442650=_0x442650-0x0;var _0xc262fe=_0x9505[_0x442650];return _0xc262fe;};'use strict';var _=require(_0x5950('0x0'));var util=require(_0x5950('0x1'));var moment=require('moment');var BPromise=require(_0x5950('0x2'));var rs=require(_0x5950('0x3'));var fs=require('fs');var Redis=require(_0x5950('0x4'));var db=require(_0x5950('0x5'))['db'];var utils=require(_0x5950('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x5950('0x7'));var jayson=require(_0x5950('0x8'));var client=jayson[_0x5950('0x9')][_0x5950('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x5950('0xb')],{'host':_0x5950('0xc'),'port':0x18eb});var socket=require(_0x5950('0xd'))(new Redis(config[_0x5950('0xb')]));require(_0x5950('0xe'))[_0x5950('0xf')](socket);function respondWithRpcPromise(_0x1148ef,_0x213e3b,_0x1c8f39){return new BPromise(function(_0x5ef4ab,_0x32f2e0){return client[_0x5950('0x10')](_0x1148ef,_0x1c8f39)['then'](function(_0x5a6098){logger[_0x5950('0x11')](_0x5950('0x12'),_0x213e3b,_0x5950('0x13'));logger[_0x5950('0x14')](_0x5950('0x15'),_0x213e3b,_0x5950('0x13'),JSON[_0x5950('0x16')](_0x5a6098));if(_0x5a6098[_0x5950('0x17')]){if(_0x5a6098[_0x5950('0x17')][_0x5950('0x18')]===0x1f4){logger[_0x5950('0x17')](_0x5950('0x12'),_0x213e3b,_0x5a6098[_0x5950('0x17')][_0x5950('0x19')]);return _0x32f2e0(_0x5a6098[_0x5950('0x17')][_0x5950('0x19')]);}logger[_0x5950('0x17')](_0x5950('0x12'),_0x213e3b,_0x5a6098[_0x5950('0x17')][_0x5950('0x19')]);return _0x5ef4ab(_0x5a6098[_0x5950('0x17')]['message']);}else{logger['info'](_0x5950('0x12'),_0x213e3b,_0x5950('0x13'));_0x5ef4ab(_0x5a6098[_0x5950('0x1a')][_0x5950('0x19')]);}})[_0x5950('0x1b')](function(_0x483aaf){logger['error'](_0x5950('0x12'),_0x213e3b,_0x483aaf);_0x32f2e0(_0x483aaf);});});}
\ No newline at end of file
index 49e517a..9689b2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc6e=['register','length','userProfile:','remove','update','emit'];(function(_0x47ae2e,_0x374292){var _0x26c909=function(_0x48e3a2){while(--_0x48e3a2){_0x47ae2e['push'](_0x47ae2e['shift']());}};_0x26c909(++_0x374292);}(_0xbc6e,0xa5));var _0xebc6=function(_0x3c3cad,_0x51e709){_0x3c3cad=_0x3c3cad-0x0;var _0x27d5e6=_0xbc6e[_0x3c3cad];return _0x27d5e6;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=['save',_0xebc6('0x0'),_0xebc6('0x1')];function createListener(_0x268dfb,_0x41f4a9){return function(_0x678dca){_0x41f4a9[_0xebc6('0x2')](_0x268dfb,_0x678dca);};}function removeListener(_0x250fda,_0x22c9a7){return function(){UserProfileEvents['removeListener'](_0x250fda,_0x22c9a7);};}exports[_0xebc6('0x3')]=function(_0x495de3){for(var _0x1db72c=0x0,_0xf47146=events[_0xebc6('0x4')];_0x1db72c<_0xf47146;_0x1db72c++){var _0x515b99=events[_0x1db72c];var _0x4733a7=createListener(_0xebc6('0x5')+_0x515b99,_0x495de3);UserProfileEvents['on'](_0x515b99,_0x4733a7);}};
\ No newline at end of file
+var _0x4909=['remove','removeListener','register','userProfile:','./userProfile.events','save'];(function(_0x4b4f32,_0x2b7521){var _0x394e1f=function(_0x385737){while(--_0x385737){_0x4b4f32['push'](_0x4b4f32['shift']());}};_0x394e1f(++_0x2b7521);}(_0x4909,0x112));var _0x9490=function(_0xf273f9,_0x486198){_0xf273f9=_0xf273f9-0x0;var _0xb4abcc=_0x4909[_0xf273f9];return _0xb4abcc;};'use strict';var UserProfileEvents=require(_0x9490('0x0'));var events=[_0x9490('0x1'),_0x9490('0x2'),'update'];function createListener(_0x4b2c8a,_0x3bff7c){return function(_0x5efcae){_0x3bff7c['emit'](_0x4b2c8a,_0x5efcae);};}function removeListener(_0x5bcdc5,_0x147b9e){return function(){UserProfileEvents[_0x9490('0x3')](_0x5bcdc5,_0x147b9e);};}exports[_0x9490('0x4')]=function(_0x4f1df6){for(var _0x64c0b8=0x0,_0x1f2894=events['length'];_0x64c0b8<_0x1f2894;_0x64c0b8++){var _0x5c4934=events[_0x64c0b8];var _0x3cb61a=createListener(_0x9490('0x5')+_0x5c4934,_0x4f1df6);UserProfileEvents['on'](_0x5c4934,_0x3cb61a);}};
\ No newline at end of file
index a8292c7..a4b184e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b3a=['exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','isAuthenticated','index','/describe','/:id','show','post','create','put','delete'];(function(_0x4a231f,_0x1989a6){var _0x7ea6bf=function(_0x2d179c){while(--_0x2d179c){_0x4a231f['push'](_0x4a231f['shift']());}};_0x7ea6bf(++_0x1989a6);}(_0x1b3a,0x119));var _0xa1b3=function(_0x39f1a9,_0x385632){_0x39f1a9=_0x39f1a9-0x0;var _0x56b1f6=_0x1b3a[_0x39f1a9];return _0x56b1f6;};'use strict';var multer=require(_0xa1b3('0x0'));var util=require('util');var path=require(_0xa1b3('0x1'));var timeout=require(_0xa1b3('0x2'));var express=require('express');var router=express[_0xa1b3('0x3')]();var fs_extra=require(_0xa1b3('0x4'));var auth=require(_0xa1b3('0x5'));var interaction=require(_0xa1b3('0x6'));var config=require(_0xa1b3('0x7'));var controller=require(_0xa1b3('0x8'));router[_0xa1b3('0x9')]('/',auth[_0xa1b3('0xa')](),controller[_0xa1b3('0xb')]);router[_0xa1b3('0x9')](_0xa1b3('0xc'),auth[_0xa1b3('0xa')](),controller['describe']);router[_0xa1b3('0x9')](_0xa1b3('0xd'),auth[_0xa1b3('0xa')](),controller[_0xa1b3('0xe')]);router[_0xa1b3('0xf')]('/',auth[_0xa1b3('0xa')](),controller[_0xa1b3('0x10')]);router[_0xa1b3('0x11')](_0xa1b3('0xd'),auth['isAuthenticated'](),controller['update']);router[_0xa1b3('0x12')]('/:id',auth[_0xa1b3('0xa')](),controller['destroy']);module[_0xa1b3('0x13')]=router;
\ No newline at end of file
+var _0xeb76=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./userProfileResource.controller','isAuthenticated','get','/describe','/:id','post','delete','destroy','exports','multer'];(function(_0xd6142f,_0x210886){var _0xa0a4c4=function(_0x2b4167){while(--_0x2b4167){_0xd6142f['push'](_0xd6142f['shift']());}};_0xa0a4c4(++_0x210886);}(_0xeb76,0xff));var _0x6eb7=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xeb76[_0x25bea7];return _0x175952;};'use strict';var multer=require(_0x6eb7('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6eb7('0x1'));var express=require(_0x6eb7('0x2'));var router=express[_0x6eb7('0x3')]();var fs_extra=require(_0x6eb7('0x4'));var auth=require(_0x6eb7('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x6eb7('0x6'));var controller=require(_0x6eb7('0x7'));router['get']('/',auth[_0x6eb7('0x8')](),controller['index']);router[_0x6eb7('0x9')](_0x6eb7('0xa'),auth[_0x6eb7('0x8')](),controller['describe']);router[_0x6eb7('0x9')](_0x6eb7('0xb'),auth[_0x6eb7('0x8')](),controller['show']);router[_0x6eb7('0xc')]('/',auth[_0x6eb7('0x8')](),controller['create']);router['put'](_0x6eb7('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x6eb7('0xd')](_0x6eb7('0xb'),auth[_0x6eb7('0x8')](),controller[_0x6eb7('0xe')]);module[_0x6eb7('0xf')]=router;
\ No newline at end of file
index 6202f3b..ae4aa78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3882=['sequelize','INTEGER','STRING'];(function(_0x48a801,_0x5b1ee8){var _0x400a17=function(_0x371bbc){while(--_0x371bbc){_0x48a801['push'](_0x48a801['shift']());}};_0x400a17(++_0x5b1ee8);}(_0x3882,0x87));var _0x2388=function(_0x1b258a,_0x481d57){_0x1b258a=_0x1b258a-0x0;var _0x514815=_0x3882[_0x1b258a];return _0x514815;};'use strict';var Sequelize=require(_0x2388('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize[_0x2388('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x2388('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x1a87=['STRING','exports','INTEGER'];(function(_0x5289fd,_0x55e4d3){var _0x9f3642=function(_0x103400){while(--_0x103400){_0x5289fd['push'](_0x5289fd['shift']());}};_0x9f3642(++_0x55e4d3);}(_0x1a87,0x199));var _0x71a8=function(_0x12ffe6,_0x550262){_0x12ffe6=_0x12ffe6-0x0;var _0x59fbc9=_0x1a87[_0x12ffe6];return _0x59fbc9;};'use strict';var Sequelize=require('sequelize');module[_0x71a8('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize[_0x71a8('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x71a8('0x2')],'allowNull':![]}};
\ No newline at end of file
index 05f034b..f86496b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['params','intersection','include','find','create','body','eml-format','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','UserProfileResource','includeAll','rows','catch','show'];(function(_0x1fdb40,_0x51351c){var _0x281f93=function(_0x35eebe){while(--_0x35eebe){_0x1fdb40['push'](_0x1fdb40['shift']());}};_0x281f93(++_0x51351c);}(_0x0295,0x1f0));var _0x5029=function(_0x69d91e,_0x12fec6){_0x69d91e=_0x69d91e-0x0;var _0x381436=_0x0295[_0x69d91e];return _0x381436;};'use strict';var emlformat=require(_0x5029('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5029('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5029('0x2'));var Mustache=require(_0x5029('0x3'));var util=require(_0x5029('0x4'));var path=require(_0x5029('0x5'));var sox=require(_0x5029('0x6'));var csv=require(_0x5029('0x7'));var ejs=require(_0x5029('0x8'));var fs=require('fs');var fs_extra=require(_0x5029('0x9'));var _=require(_0x5029('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5029('0xb'));var toCsv=require('to-csv');var querystring=require(_0x5029('0xc'));var Papa=require('papaparse');var Redis=require(_0x5029('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x5029('0xe'));var as=require(_0x5029('0xf'));var hardwareService=require(_0x5029('0x10'));var logger=require('../../config/logger')(_0x5029('0x11'));var utils=require(_0x5029('0x12'));var config=require(_0x5029('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x5029('0x14'))['db'];function respondWithStatusCode(_0x2442b2,_0x4cced9){_0x4cced9=_0x4cced9||0xcc;return function(_0x4fa22d){if(_0x4fa22d){return _0x2442b2['sendStatus'](_0x4cced9);}return _0x2442b2['status'](_0x4cced9)[_0x5029('0x15')]();};}function respondWithResult(_0x2e0369,_0x12c237){_0x12c237=_0x12c237||0xc8;return function(_0x434630){if(_0x434630){return _0x2e0369[_0x5029('0x16')](_0x12c237)[_0x5029('0x17')](_0x434630);}};}function respondWithFilteredResult(_0xe278b7,_0x317c20){return function(_0x10bf55){if(_0x10bf55){var _0x326923=typeof _0x317c20[_0x5029('0x18')]===_0x5029('0x19')&&typeof _0x317c20[_0x5029('0x1a')]===_0x5029('0x19');var _0x343918=_0x10bf55['count'];var _0x1ed567=_0x326923?0x0:_0x317c20[_0x5029('0x18')];var _0x35de81=_0x326923?_0x10bf55[_0x5029('0x1b')]:_0x317c20[_0x5029('0x18')]+_0x317c20[_0x5029('0x1a')];var _0xaba461;if(_0x35de81>=_0x343918){_0x35de81=_0x343918;_0xaba461=0xc8;}else{_0xaba461=0xce;}_0xe278b7['status'](_0xaba461);return _0xe278b7[_0x5029('0x1c')]('Content-Range',_0x1ed567+'-'+_0x35de81+'/'+_0x343918)[_0x5029('0x17')](_0x10bf55);}return null;};}function patchUpdates(_0x8a414c){return function(_0x2710aa){try{jsonpatch[_0x5029('0x1d')](_0x2710aa,_0x8a414c,!![]);}catch(_0x4b5854){return BPromise['reject'](_0x4b5854);}return _0x2710aa[_0x5029('0x1e')]();};}function saveUpdates(_0x4a49b6,_0x3f657d){return function(_0x853a34){if(_0x853a34){return _0x853a34[_0x5029('0x1f')](_0x4a49b6)[_0x5029('0x20')](function(_0x16bd22){return _0x16bd22;});}return null;};}function removeEntity(_0x3a3e52,_0x125c26){return function(_0x356dac){if(_0x356dac){return _0x356dac[_0x5029('0x21')]()['then'](function(){_0x3a3e52['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x588d90,_0x45666c){return function(_0x51093c){if(!_0x51093c){_0x588d90['sendStatus'](0x194);}return _0x51093c;};}function handleError(_0x181da0,_0x1e7e61){_0x1e7e61=_0x1e7e61||0x1f4;return function(_0x36d810){logger['error'](_0x36d810[_0x5029('0x22')]);if(_0x36d810[_0x5029('0x23')]){delete _0x36d810['name'];}_0x181da0[_0x5029('0x16')](_0x1e7e61)[_0x5029('0x24')](_0x36d810);};}exports[_0x5029('0x25')]=function(_0x4a24b9,_0x32da06){var _0x251f99={},_0xe5313e={},_0x4b6f92={'count':0x0,'rows':[]};var _0x2cedf6=_[_0x5029('0x26')](db['UserProfileResource'][_0x5029('0x27')],function(_0x25032b){return{'name':_0x25032b[_0x5029('0x28')],'type':_0x25032b[_0x5029('0x29')][_0x5029('0x2a')]};});_0xe5313e[_0x5029('0x2b')]=_[_0x5029('0x26')](_0x2cedf6,_0x5029('0x23'));_0xe5313e[_0x5029('0x2c')]=_[_0x5029('0x2d')](_0x4a24b9[_0x5029('0x2c')]);_0xe5313e[_0x5029('0x2e')]=_['intersection'](_0xe5313e[_0x5029('0x2b')],_0xe5313e['query']);_0x251f99[_0x5029('0x2f')]=_['intersection'](_0xe5313e['model'],qs[_0x5029('0x30')](_0x4a24b9[_0x5029('0x2c')][_0x5029('0x30')]));_0x251f99['attributes']=_0x251f99[_0x5029('0x2f')][_0x5029('0x31')]?_0x251f99[_0x5029('0x2f')]:_0xe5313e[_0x5029('0x2b')];if(!_0x4a24b9[_0x5029('0x2c')][_0x5029('0x32')](_0x5029('0x33'))){_0x251f99[_0x5029('0x1a')]=qs[_0x5029('0x1a')](_0x4a24b9['query'][_0x5029('0x1a')]);_0x251f99[_0x5029('0x18')]=qs[_0x5029('0x18')](_0x4a24b9[_0x5029('0x2c')]['offset']);}_0x251f99[_0x5029('0x34')]=qs[_0x5029('0x35')](_0x4a24b9[_0x5029('0x2c')]['sort']);_0x251f99['where']=qs[_0x5029('0x2e')](_[_0x5029('0x36')](_0x4a24b9['query'],_0xe5313e['filters']),_0x2cedf6);if(_0x4a24b9[_0x5029('0x2c')][_0x5029('0x37')]){_0x251f99[_0x5029('0x38')]=_[_0x5029('0x39')](_0x251f99[_0x5029('0x38')],{'$or':_[_0x5029('0x26')](_0x2cedf6,function(_0x3cb84e){if(_0x3cb84e[_0x5029('0x29')]!==_0x5029('0x3a')){var _0x3effa4={};_0x3effa4[_0x3cb84e[_0x5029('0x23')]]={'$like':'%'+_0x4a24b9[_0x5029('0x2c')][_0x5029('0x37')]+'%'};return _0x3effa4;}})});}_0x251f99=_[_0x5029('0x39')]({},_0x251f99,_0x4a24b9['options']);var _0x57c2b5={'where':_0x251f99[_0x5029('0x38')]};return db[_0x5029('0x3b')][_0x5029('0x1b')](_0x57c2b5)['then'](function(_0x32d8a3){_0x4b6f92[_0x5029('0x1b')]=_0x32d8a3;if(_0x4a24b9['query'][_0x5029('0x3c')]){_0x251f99['include']=[{'all':!![]}];}return db[_0x5029('0x3b')]['findAll'](_0x251f99);})[_0x5029('0x20')](function(_0x359838){_0x4b6f92[_0x5029('0x3d')]=_0x359838;return _0x4b6f92;})[_0x5029('0x20')](respondWithFilteredResult(_0x32da06,_0x251f99))[_0x5029('0x3e')](handleError(_0x32da06,null));};exports[_0x5029('0x3f')]=function(_0x4b2219,_0x1021ea){var _0x2ae047={'raw':![],'where':{'id':_0x4b2219[_0x5029('0x40')]['id']}},_0x5a3e4d={};_0x5a3e4d[_0x5029('0x2b')]=_[_0x5029('0x2d')](db[_0x5029('0x3b')][_0x5029('0x27')]);_0x5a3e4d[_0x5029('0x2c')]=_['keys'](_0x4b2219[_0x5029('0x2c')]);_0x5a3e4d[_0x5029('0x2e')]=_[_0x5029('0x41')](_0x5a3e4d[_0x5029('0x2b')],_0x5a3e4d[_0x5029('0x2c')]);_0x2ae047['attributes']=_[_0x5029('0x41')](_0x5a3e4d[_0x5029('0x2b')],qs[_0x5029('0x30')](_0x4b2219[_0x5029('0x2c')][_0x5029('0x30')]));_0x2ae047[_0x5029('0x2f')]=_0x2ae047[_0x5029('0x2f')][_0x5029('0x31')]?_0x2ae047[_0x5029('0x2f')]:_0x5a3e4d['model'];if(_0x4b2219[_0x5029('0x2c')][_0x5029('0x3c')]){_0x2ae047[_0x5029('0x42')]=[{'all':!![]}];}_0x2ae047=_[_0x5029('0x39')]({},_0x2ae047,_0x4b2219['options']);return db['UserProfileResource'][_0x5029('0x43')](_0x2ae047)[_0x5029('0x20')](handleEntityNotFound(_0x1021ea,null))[_0x5029('0x20')](respondWithResult(_0x1021ea,null))[_0x5029('0x3e')](handleError(_0x1021ea,null));};exports[_0x5029('0x44')]=function(_0x3dfc08,_0x2bb7fc){return db[_0x5029('0x3b')][_0x5029('0x44')](_0x3dfc08[_0x5029('0x45')],{})[_0x5029('0x20')](respondWithResult(_0x2bb7fc,0xc9))[_0x5029('0x3e')](handleError(_0x2bb7fc,null));};exports[_0x5029('0x1f')]=function(_0x18f1f5,_0x3168bd){if(_0x18f1f5[_0x5029('0x45')]['id']){delete _0x18f1f5[_0x5029('0x45')]['id'];}return db[_0x5029('0x3b')][_0x5029('0x43')]({'where':{'id':_0x18f1f5[_0x5029('0x40')]['id']}})[_0x5029('0x20')](handleEntityNotFound(_0x3168bd,null))['then'](saveUpdates(_0x18f1f5[_0x5029('0x45')],null))['then'](respondWithResult(_0x3168bd,null))[_0x5029('0x3e')](handleError(_0x3168bd,null));};exports[_0x5029('0x21')]=function(_0x4d788a,_0x5343c6){return db[_0x5029('0x3b')]['find']({'where':{'id':_0x4d788a['params']['id']}})[_0x5029('0x20')](handleEntityNotFound(_0x5343c6,null))[_0x5029('0x20')](removeEntity(_0x5343c6,null))[_0x5029('0x3e')](handleError(_0x5343c6,null));};exports['describe']=function(_0x544fb3,_0x1510bb){return db[_0x5029('0x3b')]['describe']()[_0x5029('0x20')](respondWithResult(_0x1510bb,null))['catch'](handleError(_0x1510bb,null));};
\ No newline at end of file
+var _0x430c=['status','end','json','limit','undefined','offset','count','set','Content-Range','then','destroy','error','stack','name','send','index','UserProfileResource','rawAttributes','fieldName','key','model','map','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','create','body','update','find','describe','eml-format','fast-json-patch','request-promise','moment','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus'];(function(_0x5e8fc,_0x1ccc06){var _0x41c58c=function(_0x495f2c){while(--_0x495f2c){_0x5e8fc['push'](_0x5e8fc['shift']());}};_0x41c58c(++_0x1ccc06);}(_0x430c,0x1a1));var _0xc430=function(_0x10dfdf,_0x36b623){_0x10dfdf=_0x10dfdf-0x0;var _0x4d857d=_0x430c[_0x10dfdf];return _0x4d857d;};'use strict';var emlformat=require(_0xc430('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc430('0x1'));var rp=require(_0xc430('0x2'));var moment=require(_0xc430('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xc430('0x4'));var csv=require(_0xc430('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc430('0x6'));var _=require('lodash');var squel=require(_0xc430('0x7'));var crypto=require(_0xc430('0x8'));var jsforce=require(_0xc430('0x9'));var deskjs=require(_0xc430('0xa'));var toCsv=require(_0xc430('0x5'));var querystring=require(_0xc430('0xb'));var Papa=require(_0xc430('0xc'));var Redis=require(_0xc430('0xd'));var authService=require(_0xc430('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xc430('0xf'));var hardwareService=require(_0xc430('0x10'));var logger=require('../../config/logger')(_0xc430('0x11'));var utils=require('../../config/utils');var config=require(_0xc430('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xc430('0x13'))['db'];function respondWithStatusCode(_0x8aa2e6,_0xc5f92){_0xc5f92=_0xc5f92||0xcc;return function(_0x1fb8ce){if(_0x1fb8ce){return _0x8aa2e6[_0xc430('0x14')](_0xc5f92);}return _0x8aa2e6[_0xc430('0x15')](_0xc5f92)[_0xc430('0x16')]();};}function respondWithResult(_0x54d851,_0x4e9134){_0x4e9134=_0x4e9134||0xc8;return function(_0x3f359c){if(_0x3f359c){return _0x54d851[_0xc430('0x15')](_0x4e9134)[_0xc430('0x17')](_0x3f359c);}};}function respondWithFilteredResult(_0x2ef538,_0x31d3b7){return function(_0x55cc6c){if(_0x55cc6c){var _0x111598=typeof _0x31d3b7['offset']==='undefined'&&typeof _0x31d3b7[_0xc430('0x18')]===_0xc430('0x19');var _0x2327c5=_0x55cc6c['count'];var _0x5d3acc=_0x111598?0x0:_0x31d3b7[_0xc430('0x1a')];var _0x4c1937=_0x111598?_0x55cc6c[_0xc430('0x1b')]:_0x31d3b7['offset']+_0x31d3b7['limit'];var _0x2f3203;if(_0x4c1937>=_0x2327c5){_0x4c1937=_0x2327c5;_0x2f3203=0xc8;}else{_0x2f3203=0xce;}_0x2ef538['status'](_0x2f3203);return _0x2ef538[_0xc430('0x1c')](_0xc430('0x1d'),_0x5d3acc+'-'+_0x4c1937+'/'+_0x2327c5)[_0xc430('0x17')](_0x55cc6c);}return null;};}function patchUpdates(_0x1f90bb){return function(_0x2a1ea1){try{jsonpatch['apply'](_0x2a1ea1,_0x1f90bb,!![]);}catch(_0x388a2f){return BPromise['reject'](_0x388a2f);}return _0x2a1ea1['save']();};}function saveUpdates(_0x3b7c3d,_0x2ea352){return function(_0x3c7afa){if(_0x3c7afa){return _0x3c7afa['update'](_0x3b7c3d)[_0xc430('0x1e')](function(_0x57d26e){return _0x57d26e;});}return null;};}function removeEntity(_0x23425d,_0x22ebfb){return function(_0x4efecd){if(_0x4efecd){return _0x4efecd[_0xc430('0x1f')]()[_0xc430('0x1e')](function(){_0x23425d['status'](0xcc)[_0xc430('0x16')]();});}};}function handleEntityNotFound(_0x59c498,_0x3aa85e){return function(_0x4b5280){if(!_0x4b5280){_0x59c498[_0xc430('0x14')](0x194);}return _0x4b5280;};}function handleError(_0x21e28a,_0x50110b){_0x50110b=_0x50110b||0x1f4;return function(_0x33433f){logger[_0xc430('0x20')](_0x33433f[_0xc430('0x21')]);if(_0x33433f[_0xc430('0x22')]){delete _0x33433f[_0xc430('0x22')];}_0x21e28a['status'](_0x50110b)[_0xc430('0x23')](_0x33433f);};}exports[_0xc430('0x24')]=function(_0x1c1da9,_0x1591e3){var _0x542cba={},_0x1f8086={},_0x4cf56c={'count':0x0,'rows':[]};var _0x1d65ee=_['map'](db[_0xc430('0x25')][_0xc430('0x26')],function(_0xfc8767){return{'name':_0xfc8767[_0xc430('0x27')],'type':_0xfc8767['type'][_0xc430('0x28')]};});_0x1f8086[_0xc430('0x29')]=_[_0xc430('0x2a')](_0x1d65ee,_0xc430('0x22'));_0x1f8086['query']=_[_0xc430('0x2b')](_0x1c1da9[_0xc430('0x2c')]);_0x1f8086['filters']=_[_0xc430('0x2d')](_0x1f8086['model'],_0x1f8086['query']);_0x542cba[_0xc430('0x2e')]=_[_0xc430('0x2d')](_0x1f8086[_0xc430('0x29')],qs[_0xc430('0x2f')](_0x1c1da9[_0xc430('0x2c')][_0xc430('0x2f')]));_0x542cba[_0xc430('0x2e')]=_0x542cba[_0xc430('0x2e')]['length']?_0x542cba[_0xc430('0x2e')]:_0x1f8086['model'];if(!_0x1c1da9[_0xc430('0x2c')][_0xc430('0x30')](_0xc430('0x31'))){_0x542cba[_0xc430('0x18')]=qs['limit'](_0x1c1da9[_0xc430('0x2c')]['limit']);_0x542cba['offset']=qs[_0xc430('0x1a')](_0x1c1da9[_0xc430('0x2c')]['offset']);}_0x542cba[_0xc430('0x32')]=qs[_0xc430('0x33')](_0x1c1da9[_0xc430('0x2c')][_0xc430('0x33')]);_0x542cba[_0xc430('0x34')]=qs[_0xc430('0x35')](_[_0xc430('0x36')](_0x1c1da9[_0xc430('0x2c')],_0x1f8086[_0xc430('0x35')]),_0x1d65ee);if(_0x1c1da9[_0xc430('0x2c')][_0xc430('0x37')]){_0x542cba[_0xc430('0x34')]=_[_0xc430('0x38')](_0x542cba[_0xc430('0x34')],{'$or':_[_0xc430('0x2a')](_0x1d65ee,function(_0x537e4c){if(_0x537e4c[_0xc430('0x39')]!==_0xc430('0x3a')){var _0x24363b={};_0x24363b[_0x537e4c[_0xc430('0x22')]]={'$like':'%'+_0x1c1da9['query'][_0xc430('0x37')]+'%'};return _0x24363b;}})});}_0x542cba=_[_0xc430('0x38')]({},_0x542cba,_0x1c1da9[_0xc430('0x3b')]);var _0x45b3dc={'where':_0x542cba[_0xc430('0x34')]};return db[_0xc430('0x25')]['count'](_0x45b3dc)[_0xc430('0x1e')](function(_0x348f2f){_0x4cf56c[_0xc430('0x1b')]=_0x348f2f;if(_0x1c1da9[_0xc430('0x2c')][_0xc430('0x3c')]){_0x542cba[_0xc430('0x3d')]=[{'all':!![]}];}return db[_0xc430('0x25')][_0xc430('0x3e')](_0x542cba);})[_0xc430('0x1e')](function(_0x4174d2){_0x4cf56c[_0xc430('0x3f')]=_0x4174d2;return _0x4cf56c;})[_0xc430('0x1e')](respondWithFilteredResult(_0x1591e3,_0x542cba))[_0xc430('0x40')](handleError(_0x1591e3,null));};exports[_0xc430('0x41')]=function(_0x5a9c4b,_0x47edb0){var _0x4983e0={'raw':![],'where':{'id':_0x5a9c4b[_0xc430('0x42')]['id']}},_0x262063={};_0x262063[_0xc430('0x29')]=_[_0xc430('0x2b')](db[_0xc430('0x25')][_0xc430('0x26')]);_0x262063[_0xc430('0x2c')]=_[_0xc430('0x2b')](_0x5a9c4b[_0xc430('0x2c')]);_0x262063[_0xc430('0x35')]=_[_0xc430('0x2d')](_0x262063[_0xc430('0x29')],_0x262063[_0xc430('0x2c')]);_0x4983e0[_0xc430('0x2e')]=_[_0xc430('0x2d')](_0x262063[_0xc430('0x29')],qs['fields'](_0x5a9c4b[_0xc430('0x2c')][_0xc430('0x2f')]));_0x4983e0[_0xc430('0x2e')]=_0x4983e0[_0xc430('0x2e')][_0xc430('0x43')]?_0x4983e0[_0xc430('0x2e')]:_0x262063[_0xc430('0x29')];if(_0x5a9c4b[_0xc430('0x2c')]['includeAll']){_0x4983e0[_0xc430('0x3d')]=[{'all':!![]}];}_0x4983e0=_['merge']({},_0x4983e0,_0x5a9c4b[_0xc430('0x3b')]);return db[_0xc430('0x25')]['find'](_0x4983e0)['then'](handleEntityNotFound(_0x47edb0,null))[_0xc430('0x1e')](respondWithResult(_0x47edb0,null))['catch'](handleError(_0x47edb0,null));};exports['create']=function(_0x10db27,_0x4eafae){return db[_0xc430('0x25')][_0xc430('0x44')](_0x10db27[_0xc430('0x45')],{})['then'](respondWithResult(_0x4eafae,0xc9))[_0xc430('0x40')](handleError(_0x4eafae,null));};exports[_0xc430('0x46')]=function(_0x19e563,_0x549400){if(_0x19e563[_0xc430('0x45')]['id']){delete _0x19e563[_0xc430('0x45')]['id'];}return db[_0xc430('0x25')][_0xc430('0x47')]({'where':{'id':_0x19e563[_0xc430('0x42')]['id']}})[_0xc430('0x1e')](handleEntityNotFound(_0x549400,null))[_0xc430('0x1e')](saveUpdates(_0x19e563['body'],null))[_0xc430('0x1e')](respondWithResult(_0x549400,null))[_0xc430('0x40')](handleError(_0x549400,null));};exports[_0xc430('0x1f')]=function(_0x4e9aff,_0x23cb41){return db[_0xc430('0x25')][_0xc430('0x47')]({'where':{'id':_0x4e9aff[_0xc430('0x42')]['id']}})['then'](handleEntityNotFound(_0x23cb41,null))[_0xc430('0x1e')](removeEntity(_0x23cb41,null))['catch'](handleError(_0x23cb41,null));};exports[_0xc430('0x48')]=function(_0x214954,_0x2a5143){return db[_0xc430('0x25')][_0xc430('0x48')]()[_0xc430('0x1e')](respondWithResult(_0x2a5143,null))['catch'](handleError(_0x2a5143,null));};
\ No newline at end of file
index 5f1c797..aa1b43f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb376=['lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userProfileResource.attributes','exports','define','compositeIndex','resourceId'];(function(_0x4ffd20,_0x1e83b6){var _0x49b5e2=function(_0xfdd1a6){while(--_0xfdd1a6){_0x4ffd20['push'](_0x4ffd20['shift']());}};_0x49b5e2(++_0x1e83b6);}(_0xb376,0x1d4));var _0x6b37=function(_0xdfd7dc,_0x2f45a1){_0xdfd7dc=_0xdfd7dc-0x0;var _0x5e2f73=_0xb376[_0xdfd7dc];return _0x5e2f73;};'use strict';var _=require(_0x6b37('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x6b37('0x1'));var moment=require(_0x6b37('0x2'));var BPromise=require(_0x6b37('0x3'));var rp=require(_0x6b37('0x4'));var fs=require('fs');var path=require(_0x6b37('0x5'));var rimraf=require(_0x6b37('0x6'));var config=require(_0x6b37('0x7'));var attributes=require(_0x6b37('0x8'));module[_0x6b37('0x9')]=function(_0x3c155c,_0xdfbce4){return _0x3c155c[_0x6b37('0xa')]('UserProfileResource',attributes,{'tableName':'user_profile_has_resources','paranoid':![],'indexes':[{'name':_0x6b37('0xb'),'fields':[_0x6b37('0xc'),'sectionId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc70c=['api','moment','bluebird','request-promise','path','../../config/environment','./userProfileResource.attributes','UserProfileResource','user_profile_has_resources','compositeIndex','sectionId','lodash','util','../../config/logger'];(function(_0x89425b,_0x40c512){var _0x383994=function(_0x214a0f){while(--_0x214a0f){_0x89425b['push'](_0x89425b['shift']());}};_0x383994(++_0x40c512);}(_0xc70c,0xeb));var _0xcc70=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xc70c[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0xcc70('0x0'));var util=require(_0xcc70('0x1'));var logger=require(_0xcc70('0x2'))(_0xcc70('0x3'));var moment=require(_0xcc70('0x4'));var BPromise=require(_0xcc70('0x5'));var rp=require(_0xcc70('0x6'));var fs=require('fs');var path=require(_0xcc70('0x7'));var rimraf=require('rimraf');var config=require(_0xcc70('0x8'));var attributes=require(_0xcc70('0x9'));module['exports']=function(_0x178406,_0x48a2be){return _0x178406['define'](_0xcc70('0xa'),attributes,{'tableName':_0xcc70('0xb'),'paranoid':![],'indexes':[{'name':_0xcc70('0xc'),'fields':['resourceId',_0xcc70('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 9616ada..148e6fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70eb=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','code','UserProfileResource,\x20%s,\x20%s','message','result','lodash','util','moment'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x70eb,0x9e));var _0xb70e=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x70eb[_0x53ccf2];return _0x5a2964;};'use strict';var _=require(_0xb70e('0x0'));var util=require(_0xb70e('0x1'));var moment=require(_0xb70e('0x2'));var BPromise=require('bluebird');var rs=require(_0xb70e('0x3'));var fs=require('fs');var Redis=require(_0xb70e('0x4'));var db=require(_0xb70e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xb70e('0x6'))(_0xb70e('0x7'));var config=require(_0xb70e('0x8'));var jayson=require(_0xb70e('0x9'));var client=jayson[_0xb70e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x8bc023,_0x113cdc,_0x33a87b){return new BPromise(function(_0x3c5ffc,_0x4bd51a){return client[_0xb70e('0xb')](_0x8bc023,_0x33a87b)[_0xb70e('0xc')](function(_0x2de3a9){logger[_0xb70e('0xd')]('UserProfileResource,\x20%s,\x20%s',_0x113cdc,_0xb70e('0xe'));logger[_0xb70e('0xf')](_0xb70e('0x10'),_0x113cdc,_0xb70e('0xe'),JSON[_0xb70e('0x11')](_0x2de3a9));if(_0x2de3a9[_0xb70e('0x12')]){if(_0x2de3a9['error'][_0xb70e('0x13')]===0x1f4){logger[_0xb70e('0x12')](_0xb70e('0x14'),_0x113cdc,_0x2de3a9[_0xb70e('0x12')][_0xb70e('0x15')]);return _0x4bd51a(_0x2de3a9[_0xb70e('0x12')][_0xb70e('0x15')]);}logger[_0xb70e('0x12')](_0xb70e('0x14'),_0x113cdc,_0x2de3a9[_0xb70e('0x12')][_0xb70e('0x15')]);return _0x3c5ffc(_0x2de3a9[_0xb70e('0x12')][_0xb70e('0x15')]);}else{logger[_0xb70e('0xd')](_0xb70e('0x14'),_0x113cdc,_0xb70e('0xe'));_0x3c5ffc(_0x2de3a9[_0xb70e('0x16')][_0xb70e('0x15')]);}})['catch'](function(_0x57bd07){logger[_0xb70e('0x12')](_0xb70e('0x14'),_0x113cdc,_0x57bd07);_0x4bd51a(_0x57bd07);});});}
\ No newline at end of file
+var _0xca6e=['UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info'];(function(_0x34193b,_0x3a0231){var _0x40192d=function(_0x56f1e1){while(--_0x56f1e1){_0x34193b['push'](_0x34193b['shift']());}};_0x40192d(++_0x3a0231);}(_0xca6e,0x9c));var _0xeca6=function(_0x315c04,_0x3bd612){_0x315c04=_0x315c04-0x0;var _0x46e297=_0xca6e[_0x315c04];return _0x46e297;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xeca6('0x0'));var BPromise=require(_0xeca6('0x1'));var rs=require(_0xeca6('0x2'));var fs=require('fs');var Redis=require(_0xeca6('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xeca6('0x4'));var logger=require('../../config/logger')(_0xeca6('0x5'));var config=require(_0xeca6('0x6'));var jayson=require(_0xeca6('0x7'));var client=jayson[_0xeca6('0x8')][_0xeca6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2186d3,_0x5df5f6,_0x1be054){return new BPromise(function(_0x29ef67,_0x579b06){return client[_0xeca6('0xa')](_0x2186d3,_0x1be054)['then'](function(_0x590a1e){logger[_0xeca6('0xb')](_0xeca6('0xc'),_0x5df5f6,_0xeca6('0xd'));logger[_0xeca6('0xe')](_0xeca6('0xf'),_0x5df5f6,_0xeca6('0xd'),JSON[_0xeca6('0x10')](_0x590a1e));if(_0x590a1e[_0xeca6('0x11')]){if(_0x590a1e[_0xeca6('0x11')][_0xeca6('0x12')]===0x1f4){logger[_0xeca6('0x11')](_0xeca6('0xc'),_0x5df5f6,_0x590a1e[_0xeca6('0x11')]['message']);return _0x579b06(_0x590a1e[_0xeca6('0x11')][_0xeca6('0x13')]);}logger['error']('UserProfileResource,\x20%s,\x20%s',_0x5df5f6,_0x590a1e[_0xeca6('0x11')][_0xeca6('0x13')]);return _0x29ef67(_0x590a1e[_0xeca6('0x11')][_0xeca6('0x13')]);}else{logger[_0xeca6('0xb')](_0xeca6('0xc'),_0x5df5f6,_0xeca6('0xd'));_0x29ef67(_0x590a1e['result'][_0xeca6('0x13')]);}})[_0xeca6('0x14')](function(_0x4311cd){logger[_0xeca6('0x11')]('UserProfileResource,\x20%s,\x20%s',_0x5df5f6,_0x4311cd);_0x579b06(_0x4311cd);});});}
\ No newline at end of file
index 7b81464..d9a8f4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0a8=['util','path','express','Router','fs-extra','../../components/auth/service','./userProfileSection.controller','isAuthenticated','index','get','describe','/:id','show','post','put','delete','destroy'];(function(_0x258bbc,_0x481311){var _0x42f135=function(_0x8ec3be){while(--_0x8ec3be){_0x258bbc['push'](_0x258bbc['shift']());}};_0x42f135(++_0x481311);}(_0xe0a8,0x1a9));var _0x8e0a=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xe0a8[_0x40a045];return _0x1a687c;};'use strict';var multer=require('multer');var util=require(_0x8e0a('0x0'));var path=require(_0x8e0a('0x1'));var timeout=require('connect-timeout');var express=require(_0x8e0a('0x2'));var router=express[_0x8e0a('0x3')]();var fs_extra=require(_0x8e0a('0x4'));var auth=require(_0x8e0a('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x8e0a('0x6'));router['get']('/',auth[_0x8e0a('0x7')](),controller[_0x8e0a('0x8')]);router[_0x8e0a('0x9')]('/describe',auth[_0x8e0a('0x7')](),controller[_0x8e0a('0xa')]);router['get'](_0x8e0a('0xb'),auth[_0x8e0a('0x7')](),controller[_0x8e0a('0xc')]);router[_0x8e0a('0xd')]('/',auth[_0x8e0a('0x7')](),controller['create']);router[_0x8e0a('0xe')](_0x8e0a('0xb'),auth[_0x8e0a('0x7')](),controller['update']);router[_0x8e0a('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x8e0a('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x0280=['/describe','isAuthenticated','describe','/:id','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./userProfileSection.controller','get','index'];(function(_0x58f145,_0x43687f){var _0xc64488=function(_0x59fbac){while(--_0x59fbac){_0x58f145['push'](_0x58f145['shift']());}};_0xc64488(++_0x43687f);}(_0x0280,0x96));var _0x0028=function(_0x5589a0,_0x5c022f){_0x5589a0=_0x5589a0-0x0;var _0x172e8a=_0x0280[_0x5589a0];return _0x172e8a;};'use strict';var multer=require(_0x0028('0x0'));var util=require(_0x0028('0x1'));var path=require(_0x0028('0x2'));var timeout=require(_0x0028('0x3'));var express=require(_0x0028('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0028('0x5'));var interaction=require(_0x0028('0x6'));var config=require('../../config/environment');var controller=require(_0x0028('0x7'));router[_0x0028('0x8')]('/',auth['isAuthenticated'](),controller[_0x0028('0x9')]);router[_0x0028('0x8')](_0x0028('0xa'),auth[_0x0028('0xb')](),controller[_0x0028('0xc')]);router[_0x0028('0x8')](_0x0028('0xd'),auth[_0x0028('0xb')](),controller['show']);router[_0x0028('0xe')]('/',auth[_0x0028('0xb')](),controller[_0x0028('0xf')]);router[_0x0028('0x10')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x0028('0x11')](_0x0028('0xd'),auth[_0x0028('0xb')](),controller[_0x0028('0x12')]);module[_0x0028('0x13')]=router;
\ No newline at end of file
index 9efb847..1865a74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58a4=['split','sequelize','exports','STRING','INTEGER','BOOLEAN','setDataValue','crudPermissions','join','getDataValue'];(function(_0x3cee87,_0x52fafd){var _0x265906=function(_0x295900){while(--_0x295900){_0x3cee87['push'](_0x3cee87['shift']());}};_0x265906(++_0x52fafd);}(_0x58a4,0xbf));var _0x458a=function(_0x1e76e8,_0x41ec55){_0x1e76e8=_0x1e76e8-0x0;var _0x2d7a1f=_0x58a4[_0x1e76e8];return _0x2d7a1f;};'use strict';var Sequelize=require(_0x458a('0x0'));module[_0x458a('0x1')]={'name':{'type':Sequelize[_0x458a('0x2')],'allowNull':![]},'category':{'type':Sequelize[_0x458a('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x458a('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0x458a('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x458a('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x458a('0x2')],'set':function(_0x362079){this[_0x458a('0x5')](_0x458a('0x6'),_0x362079?_0x362079[_0x458a('0x7')](''):[]);},'get':function(){return this[_0x458a('0x8')]('crudPermissions')?this['getDataValue'](_0x458a('0x6'))[_0x458a('0x9')](''):[];}}};
\ No newline at end of file
+var _0xd4a2=['join','getDataValue','split','sequelize','STRING','BOOLEAN','setDataValue','crudPermissions'];(function(_0x312290,_0x51485e){var _0x145fd8=function(_0x251403){while(--_0x251403){_0x312290['push'](_0x312290['shift']());}};_0x145fd8(++_0x51485e);}(_0xd4a2,0x173));var _0x2d4a=function(_0x65a45a,_0x9c8bad){_0x65a45a=_0x65a45a-0x0;var _0x3a8a04=_0xd4a2[_0x65a45a];return _0x3a8a04;};'use strict';var Sequelize=require(_0x2d4a('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize[_0x2d4a('0x1')],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize[_0x2d4a('0x2')],'defaultValue':null},'autoAssociation':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x2d4a('0x1')],'set':function(_0x5d435a){this[_0x2d4a('0x3')](_0x2d4a('0x4'),_0x5d435a?_0x5d435a[_0x2d4a('0x5')](''):[]);},'get':function(){return this[_0x2d4a('0x6')](_0x2d4a('0x4'))?this['getDataValue'](_0x2d4a('0x4'))[_0x2d4a('0x7')](''):[];}}};
\ No newline at end of file
index 3c6070f..31e84a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefba=['apply','reject','update','then','error','stack','name','send','index','map','fieldName','key','keys','filters','intersection','query','model','fields','attributes','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','UserProfileSection','includeAll','include','findAll','rows','show','rawAttributes','length','find','catch','create','body','params','destroy','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','lodash','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','Content-Range'];(function(_0x52c57b,_0x1fed8e){var _0x436686=function(_0x4c1c4b){while(--_0x4c1c4b){_0x52c57b['push'](_0x52c57b['shift']());}};_0x436686(++_0x1fed8e);}(_0xefba,0x154));var _0xaefb=function(_0x38a162,_0x4396b2){_0x38a162=_0x38a162-0x0;var _0x1f622b=_0xefba[_0x38a162];return _0x1f622b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaefb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaefb('0x1'));var rp=require(_0xaefb('0x2'));var moment=require(_0xaefb('0x3'));var BPromise=require(_0xaefb('0x4'));var Mustache=require(_0xaefb('0x5'));var util=require(_0xaefb('0x6'));var path=require(_0xaefb('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaefb('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xaefb('0x9'));var deskjs=require(_0xaefb('0xa'));var toCsv=require(_0xaefb('0xb'));var querystring=require(_0xaefb('0xc'));var Papa=require(_0xaefb('0xd'));var Redis=require(_0xaefb('0xe'));var authService=require(_0xaefb('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xaefb('0x10'));var hardwareService=require(_0xaefb('0x11'));var logger=require(_0xaefb('0x12'))(_0xaefb('0x13'));var utils=require('../../config/utils');var config=require(_0xaefb('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xaefb('0x15'))['db'];function respondWithStatusCode(_0x331a65,_0x409427){_0x409427=_0x409427||0xcc;return function(_0xed58ee){if(_0xed58ee){return _0x331a65[_0xaefb('0x16')](_0x409427);}return _0x331a65[_0xaefb('0x17')](_0x409427)['end']();};}function respondWithResult(_0x4f735c,_0x4d776c){_0x4d776c=_0x4d776c||0xc8;return function(_0x1c0daf){if(_0x1c0daf){return _0x4f735c['status'](_0x4d776c)[_0xaefb('0x18')](_0x1c0daf);}};}function respondWithFilteredResult(_0x47d592,_0x16d211){return function(_0x12e2eb){if(_0x12e2eb){var _0x3bbdbc=typeof _0x16d211[_0xaefb('0x19')]==='undefined'&&typeof _0x16d211[_0xaefb('0x1a')]===_0xaefb('0x1b');var _0x227450=_0x12e2eb['count'];var _0x1b2cb2=_0x3bbdbc?0x0:_0x16d211['offset'];var _0x219ace=_0x3bbdbc?_0x12e2eb[_0xaefb('0x1c')]:_0x16d211[_0xaefb('0x19')]+_0x16d211[_0xaefb('0x1a')];var _0x44c217;if(_0x219ace>=_0x227450){_0x219ace=_0x227450;_0x44c217=0xc8;}else{_0x44c217=0xce;}_0x47d592[_0xaefb('0x17')](_0x44c217);return _0x47d592['set'](_0xaefb('0x1d'),_0x1b2cb2+'-'+_0x219ace+'/'+_0x227450)[_0xaefb('0x18')](_0x12e2eb);}return null;};}function patchUpdates(_0x1169da){return function(_0x50b0fd){try{jsonpatch[_0xaefb('0x1e')](_0x50b0fd,_0x1169da,!![]);}catch(_0x32af2e){return BPromise[_0xaefb('0x1f')](_0x32af2e);}return _0x50b0fd['save']();};}function saveUpdates(_0x73a45a,_0x377e2b){return function(_0x5c7035){if(_0x5c7035){return _0x5c7035[_0xaefb('0x20')](_0x73a45a)['then'](function(_0x2a8160){return _0x2a8160;});}return null;};}function removeEntity(_0x59f3f1,_0x459dc6){return function(_0x10195a){if(_0x10195a){return _0x10195a['destroy']()[_0xaefb('0x21')](function(){_0x59f3f1[_0xaefb('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0xdad3f3,_0x3a1758){return function(_0x275d69){if(!_0x275d69){_0xdad3f3['sendStatus'](0x194);}return _0x275d69;};}function handleError(_0x53fe97,_0x375956){_0x375956=_0x375956||0x1f4;return function(_0x18649a){logger[_0xaefb('0x22')](_0x18649a[_0xaefb('0x23')]);if(_0x18649a[_0xaefb('0x24')]){delete _0x18649a[_0xaefb('0x24')];}_0x53fe97[_0xaefb('0x17')](_0x375956)[_0xaefb('0x25')](_0x18649a);};}exports[_0xaefb('0x26')]=function(_0x48b3af,_0x5b7bc1){var _0x401b79={},_0x273e8e={},_0x1084cd={'count':0x0,'rows':[]};var _0x24fcb8=_[_0xaefb('0x27')](db['UserProfileSection']['rawAttributes'],function(_0x23d6bc){return{'name':_0x23d6bc[_0xaefb('0x28')],'type':_0x23d6bc['type'][_0xaefb('0x29')]};});_0x273e8e['model']=_['map'](_0x24fcb8,_0xaefb('0x24'));_0x273e8e['query']=_[_0xaefb('0x2a')](_0x48b3af['query']);_0x273e8e[_0xaefb('0x2b')]=_[_0xaefb('0x2c')](_0x273e8e['model'],_0x273e8e[_0xaefb('0x2d')]);_0x401b79['attributes']=_[_0xaefb('0x2c')](_0x273e8e[_0xaefb('0x2e')],qs['fields'](_0x48b3af['query'][_0xaefb('0x2f')]));_0x401b79['attributes']=_0x401b79[_0xaefb('0x30')]['length']?_0x401b79[_0xaefb('0x30')]:_0x273e8e[_0xaefb('0x2e')];if(!_0x48b3af[_0xaefb('0x2d')]['hasOwnProperty'](_0xaefb('0x31'))){_0x401b79['limit']=qs['limit'](_0x48b3af[_0xaefb('0x2d')][_0xaefb('0x1a')]);_0x401b79['offset']=qs[_0xaefb('0x19')](_0x48b3af['query']['offset']);}_0x401b79[_0xaefb('0x32')]=qs[_0xaefb('0x33')](_0x48b3af[_0xaefb('0x2d')][_0xaefb('0x33')]);_0x401b79[_0xaefb('0x34')]=qs[_0xaefb('0x2b')](_[_0xaefb('0x35')](_0x48b3af[_0xaefb('0x2d')],_0x273e8e['filters']),_0x24fcb8);if(_0x48b3af[_0xaefb('0x2d')][_0xaefb('0x36')]){_0x401b79[_0xaefb('0x34')]=_[_0xaefb('0x37')](_0x401b79[_0xaefb('0x34')],{'$or':_[_0xaefb('0x27')](_0x24fcb8,function(_0x2bb8c0){if(_0x2bb8c0[_0xaefb('0x38')]!==_0xaefb('0x39')){var _0x3bf000={};_0x3bf000[_0x2bb8c0[_0xaefb('0x24')]]={'$like':'%'+_0x48b3af[_0xaefb('0x2d')][_0xaefb('0x36')]+'%'};return _0x3bf000;}})});}_0x401b79=_[_0xaefb('0x37')]({},_0x401b79,_0x48b3af[_0xaefb('0x3a')]);var _0x2588cb={'where':_0x401b79[_0xaefb('0x34')]};return db[_0xaefb('0x3b')][_0xaefb('0x1c')](_0x2588cb)[_0xaefb('0x21')](function(_0x192e96){_0x1084cd[_0xaefb('0x1c')]=_0x192e96;if(_0x48b3af[_0xaefb('0x2d')][_0xaefb('0x3c')]){_0x401b79[_0xaefb('0x3d')]=[{'all':!![]}];}return db['UserProfileSection'][_0xaefb('0x3e')](_0x401b79);})['then'](function(_0x296344){_0x1084cd[_0xaefb('0x3f')]=_0x296344;return _0x1084cd;})['then'](respondWithFilteredResult(_0x5b7bc1,_0x401b79))['catch'](handleError(_0x5b7bc1,null));};exports[_0xaefb('0x40')]=function(_0x5ec1e9,_0x54b907){var _0x2d9135={'raw':![],'where':{'id':_0x5ec1e9['params']['id']}},_0x31b92f={};_0x31b92f[_0xaefb('0x2e')]=_['keys'](db[_0xaefb('0x3b')][_0xaefb('0x41')]);_0x31b92f[_0xaefb('0x2d')]=_['keys'](_0x5ec1e9[_0xaefb('0x2d')]);_0x31b92f[_0xaefb('0x2b')]=_[_0xaefb('0x2c')](_0x31b92f['model'],_0x31b92f['query']);_0x2d9135[_0xaefb('0x30')]=_[_0xaefb('0x2c')](_0x31b92f[_0xaefb('0x2e')],qs[_0xaefb('0x2f')](_0x5ec1e9['query'][_0xaefb('0x2f')]));_0x2d9135[_0xaefb('0x30')]=_0x2d9135[_0xaefb('0x30')][_0xaefb('0x42')]?_0x2d9135[_0xaefb('0x30')]:_0x31b92f[_0xaefb('0x2e')];if(_0x5ec1e9[_0xaefb('0x2d')][_0xaefb('0x3c')]){_0x2d9135[_0xaefb('0x3d')]=[{'all':!![]}];}_0x2d9135=_[_0xaefb('0x37')]({},_0x2d9135,_0x5ec1e9[_0xaefb('0x3a')]);return db['UserProfileSection'][_0xaefb('0x43')](_0x2d9135)[_0xaefb('0x21')](handleEntityNotFound(_0x54b907,null))['then'](respondWithResult(_0x54b907,null))[_0xaefb('0x44')](handleError(_0x54b907,null));};exports[_0xaefb('0x45')]=function(_0x25a129,_0x20ec47){return db[_0xaefb('0x3b')][_0xaefb('0x45')](_0x25a129[_0xaefb('0x46')],{})[_0xaefb('0x21')](respondWithResult(_0x20ec47,0xc9))[_0xaefb('0x44')](handleError(_0x20ec47,null));};exports[_0xaefb('0x20')]=function(_0x35a863,_0x588712){if(_0x35a863[_0xaefb('0x46')]['id']){delete _0x35a863[_0xaefb('0x46')]['id'];}return db['UserProfileSection'][_0xaefb('0x43')]({'where':{'id':_0x35a863[_0xaefb('0x47')]['id']}})[_0xaefb('0x21')](handleEntityNotFound(_0x588712,null))[_0xaefb('0x21')](saveUpdates(_0x35a863['body'],null))[_0xaefb('0x21')](respondWithResult(_0x588712,null))[_0xaefb('0x44')](handleError(_0x588712,null));};exports[_0xaefb('0x48')]=function(_0x2f7603,_0x4f7601){return db[_0xaefb('0x3b')][_0xaefb('0x43')]({'where':{'id':_0x2f7603[_0xaefb('0x47')]['id']}})[_0xaefb('0x21')](handleEntityNotFound(_0x4f7601,null))[_0xaefb('0x21')](removeEntity(_0x4f7601,null))['catch'](handleError(_0x4f7601,null));};exports[_0xaefb('0x49')]=function(_0x3efe90,_0x122f45){return db[_0xaefb('0x3b')][_0xaefb('0x49')]()[_0xaefb('0x21')](respondWithResult(_0x122f45,null))[_0xaefb('0x44')](handleError(_0x122f45,null));};
\ No newline at end of file
+var _0x20b4=['end','json','undefined','count','offset','set','Content-Range','apply','save','then','destroy','error','stack','name','send','index','UserProfileSection','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','params','keys','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x18f0f4,_0x1b0887){var _0x55c666=function(_0x22f2a7){while(--_0x22f2a7){_0x18f0f4['push'](_0x18f0f4['shift']());}};_0x55c666(++_0x1b0887);}(_0x20b4,0x81));var _0x420b=function(_0x5743e3,_0x4a2aab){_0x5743e3=_0x5743e3-0x0;var _0x24d100=_0x20b4[_0x5743e3];return _0x24d100;};'use strict';var emlformat=require(_0x420b('0x0'));var rimraf=require(_0x420b('0x1'));var zipdir=require(_0x420b('0x2'));var jsonpatch=require(_0x420b('0x3'));var rp=require(_0x420b('0x4'));var moment=require(_0x420b('0x5'));var BPromise=require(_0x420b('0x6'));var Mustache=require(_0x420b('0x7'));var util=require(_0x420b('0x8'));var path=require(_0x420b('0x9'));var sox=require(_0x420b('0xa'));var csv=require('to-csv');var ejs=require(_0x420b('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x420b('0xc'));var squel=require(_0x420b('0xd'));var crypto=require(_0x420b('0xe'));var jsforce=require(_0x420b('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x420b('0x10'));var Papa=require(_0x420b('0x11'));var Redis=require(_0x420b('0x12'));var authService=require(_0x420b('0x13'));var qs=require(_0x420b('0x14'));var as=require(_0x420b('0x15'));var hardwareService=require(_0x420b('0x16'));var logger=require(_0x420b('0x17'))(_0x420b('0x18'));var utils=require(_0x420b('0x19'));var config=require(_0x420b('0x1a'));var licenseUtil=require(_0x420b('0x1b'));var db=require(_0x420b('0x1c'))['db'];function respondWithStatusCode(_0x29f527,_0x135670){_0x135670=_0x135670||0xcc;return function(_0x38a957){if(_0x38a957){return _0x29f527[_0x420b('0x1d')](_0x135670);}return _0x29f527[_0x420b('0x1e')](_0x135670)[_0x420b('0x1f')]();};}function respondWithResult(_0x46b589,_0x2773bd){_0x2773bd=_0x2773bd||0xc8;return function(_0x5c5f2b){if(_0x5c5f2b){return _0x46b589[_0x420b('0x1e')](_0x2773bd)[_0x420b('0x20')](_0x5c5f2b);}};}function respondWithFilteredResult(_0x1ac717,_0x5bb401){return function(_0x40d8b8){if(_0x40d8b8){var _0x5c4274=typeof _0x5bb401['offset']===_0x420b('0x21')&&typeof _0x5bb401['limit']===_0x420b('0x21');var _0x3a2afb=_0x40d8b8[_0x420b('0x22')];var _0x3dcac6=_0x5c4274?0x0:_0x5bb401[_0x420b('0x23')];var _0x2d1822=_0x5c4274?_0x40d8b8[_0x420b('0x22')]:_0x5bb401['offset']+_0x5bb401['limit'];var _0x596f32;if(_0x2d1822>=_0x3a2afb){_0x2d1822=_0x3a2afb;_0x596f32=0xc8;}else{_0x596f32=0xce;}_0x1ac717[_0x420b('0x1e')](_0x596f32);return _0x1ac717[_0x420b('0x24')](_0x420b('0x25'),_0x3dcac6+'-'+_0x2d1822+'/'+_0x3a2afb)[_0x420b('0x20')](_0x40d8b8);}return null;};}function patchUpdates(_0x3dfe31){return function(_0x418b22){try{jsonpatch[_0x420b('0x26')](_0x418b22,_0x3dfe31,!![]);}catch(_0x2bb150){return BPromise['reject'](_0x2bb150);}return _0x418b22[_0x420b('0x27')]();};}function saveUpdates(_0x5df203,_0x50ef09){return function(_0x1a1871){if(_0x1a1871){return _0x1a1871['update'](_0x5df203)[_0x420b('0x28')](function(_0x2c760f){return _0x2c760f;});}return null;};}function removeEntity(_0x10ab69,_0x3a8c00){return function(_0x11ffb5){if(_0x11ffb5){return _0x11ffb5[_0x420b('0x29')]()[_0x420b('0x28')](function(){_0x10ab69['status'](0xcc)[_0x420b('0x1f')]();});}};}function handleEntityNotFound(_0x463aaa,_0x2bf0b8){return function(_0x343095){if(!_0x343095){_0x463aaa[_0x420b('0x1d')](0x194);}return _0x343095;};}function handleError(_0x265e26,_0x3cee9c){_0x3cee9c=_0x3cee9c||0x1f4;return function(_0x40a151){logger[_0x420b('0x2a')](_0x40a151[_0x420b('0x2b')]);if(_0x40a151['name']){delete _0x40a151[_0x420b('0x2c')];}_0x265e26['status'](_0x3cee9c)[_0x420b('0x2d')](_0x40a151);};}exports[_0x420b('0x2e')]=function(_0x33a08b,_0x24b32e){var _0x410814={},_0x1249bc={},_0xbc3684={'count':0x0,'rows':[]};var _0x5a7914=_['map'](db[_0x420b('0x2f')][_0x420b('0x30')],function(_0x194a26){return{'name':_0x194a26[_0x420b('0x31')],'type':_0x194a26[_0x420b('0x32')][_0x420b('0x33')]};});_0x1249bc[_0x420b('0x34')]=_[_0x420b('0x35')](_0x5a7914,_0x420b('0x2c'));_0x1249bc[_0x420b('0x36')]=_['keys'](_0x33a08b[_0x420b('0x36')]);_0x1249bc[_0x420b('0x37')]=_[_0x420b('0x38')](_0x1249bc[_0x420b('0x34')],_0x1249bc[_0x420b('0x36')]);_0x410814[_0x420b('0x39')]=_['intersection'](_0x1249bc[_0x420b('0x34')],qs['fields'](_0x33a08b[_0x420b('0x36')][_0x420b('0x3a')]));_0x410814[_0x420b('0x39')]=_0x410814[_0x420b('0x39')][_0x420b('0x3b')]?_0x410814[_0x420b('0x39')]:_0x1249bc[_0x420b('0x34')];if(!_0x33a08b[_0x420b('0x36')][_0x420b('0x3c')](_0x420b('0x3d'))){_0x410814['limit']=qs['limit'](_0x33a08b[_0x420b('0x36')][_0x420b('0x3e')]);_0x410814[_0x420b('0x23')]=qs[_0x420b('0x23')](_0x33a08b['query']['offset']);}_0x410814['order']=qs['sort'](_0x33a08b[_0x420b('0x36')]['sort']);_0x410814[_0x420b('0x3f')]=qs[_0x420b('0x37')](_[_0x420b('0x40')](_0x33a08b[_0x420b('0x36')],_0x1249bc[_0x420b('0x37')]),_0x5a7914);if(_0x33a08b[_0x420b('0x36')][_0x420b('0x41')]){_0x410814[_0x420b('0x3f')]=_[_0x420b('0x42')](_0x410814[_0x420b('0x3f')],{'$or':_['map'](_0x5a7914,function(_0x28526a){if(_0x28526a[_0x420b('0x32')]!==_0x420b('0x43')){var _0x3ac501={};_0x3ac501[_0x28526a[_0x420b('0x2c')]]={'$like':'%'+_0x33a08b[_0x420b('0x36')][_0x420b('0x41')]+'%'};return _0x3ac501;}})});}_0x410814=_[_0x420b('0x42')]({},_0x410814,_0x33a08b[_0x420b('0x44')]);var _0x10476e={'where':_0x410814[_0x420b('0x3f')]};return db[_0x420b('0x2f')][_0x420b('0x22')](_0x10476e)[_0x420b('0x28')](function(_0x1372d1){_0xbc3684['count']=_0x1372d1;if(_0x33a08b[_0x420b('0x36')][_0x420b('0x45')]){_0x410814['include']=[{'all':!![]}];}return db[_0x420b('0x2f')]['findAll'](_0x410814);})[_0x420b('0x28')](function(_0x21fee3){_0xbc3684[_0x420b('0x46')]=_0x21fee3;return _0xbc3684;})[_0x420b('0x28')](respondWithFilteredResult(_0x24b32e,_0x410814))[_0x420b('0x47')](handleError(_0x24b32e,null));};exports[_0x420b('0x48')]=function(_0x15b36a,_0x4f2574){var _0x1415b2={'raw':![],'where':{'id':_0x15b36a[_0x420b('0x49')]['id']}},_0x14f07c={};_0x14f07c[_0x420b('0x34')]=_[_0x420b('0x4a')](db[_0x420b('0x2f')][_0x420b('0x30')]);_0x14f07c[_0x420b('0x36')]=_['keys'](_0x15b36a['query']);_0x14f07c['filters']=_[_0x420b('0x38')](_0x14f07c[_0x420b('0x34')],_0x14f07c[_0x420b('0x36')]);_0x1415b2[_0x420b('0x39')]=_[_0x420b('0x38')](_0x14f07c['model'],qs[_0x420b('0x3a')](_0x15b36a[_0x420b('0x36')][_0x420b('0x3a')]));_0x1415b2['attributes']=_0x1415b2[_0x420b('0x39')][_0x420b('0x3b')]?_0x1415b2[_0x420b('0x39')]:_0x14f07c[_0x420b('0x34')];if(_0x15b36a[_0x420b('0x36')][_0x420b('0x45')]){_0x1415b2[_0x420b('0x4b')]=[{'all':!![]}];}_0x1415b2=_[_0x420b('0x42')]({},_0x1415b2,_0x15b36a[_0x420b('0x44')]);return db['UserProfileSection'][_0x420b('0x4c')](_0x1415b2)[_0x420b('0x28')](handleEntityNotFound(_0x4f2574,null))['then'](respondWithResult(_0x4f2574,null))[_0x420b('0x47')](handleError(_0x4f2574,null));};exports['create']=function(_0x1cdc35,_0x35f3dc){return db[_0x420b('0x2f')][_0x420b('0x4d')](_0x1cdc35[_0x420b('0x4e')],{})['then'](respondWithResult(_0x35f3dc,0xc9))[_0x420b('0x47')](handleError(_0x35f3dc,null));};exports['update']=function(_0x55e7bc,_0x8e19e7){if(_0x55e7bc[_0x420b('0x4e')]['id']){delete _0x55e7bc['body']['id'];}return db['UserProfileSection'][_0x420b('0x4c')]({'where':{'id':_0x55e7bc['params']['id']}})[_0x420b('0x28')](handleEntityNotFound(_0x8e19e7,null))[_0x420b('0x28')](saveUpdates(_0x55e7bc[_0x420b('0x4e')],null))[_0x420b('0x28')](respondWithResult(_0x8e19e7,null))[_0x420b('0x47')](handleError(_0x8e19e7,null));};exports[_0x420b('0x29')]=function(_0x2d492c,_0x340456){return db[_0x420b('0x2f')][_0x420b('0x4c')]({'where':{'id':_0x2d492c[_0x420b('0x49')]['id']}})['then'](handleEntityNotFound(_0x340456,null))[_0x420b('0x28')](removeEntity(_0x340456,null))[_0x420b('0x47')](handleError(_0x340456,null));};exports['describe']=function(_0x2ad04b,_0x55fa6a){return db['UserProfileSection'][_0x420b('0x4f')]()['then'](respondWithResult(_0x55fa6a,null))[_0x420b('0x47')](handleError(_0x55fa6a,null));};
\ No newline at end of file
index c96473e..46b0722 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x157a=['define','UserProfileSection','sectionId','userProfileId','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./userProfileSection.attributes','exports'];(function(_0x28f8f8,_0x43043a){var _0x31604e=function(_0x41eb5f){while(--_0x41eb5f){_0x28f8f8['push'](_0x28f8f8['shift']());}};_0x31604e(++_0x43043a);}(_0x157a,0x7c));var _0xa157=function(_0x1aecdc,_0x522a27){_0x1aecdc=_0x1aecdc-0x0;var _0xef638b=_0x157a[_0x1aecdc];return _0xef638b;};'use strict';var _=require(_0xa157('0x0'));var util=require(_0xa157('0x1'));var logger=require(_0xa157('0x2'))(_0xa157('0x3'));var moment=require(_0xa157('0x4'));var BPromise=require('bluebird');var rp=require(_0xa157('0x5'));var fs=require('fs');var path=require(_0xa157('0x6'));var rimraf=require(_0xa157('0x7'));var config=require(_0xa157('0x8'));var attributes=require(_0xa157('0x9'));module[_0xa157('0xa')]=function(_0x3c4c6f,_0x446a8f){return _0x3c4c6f[_0xa157('0xb')](_0xa157('0xc'),attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0xa157('0xd'),_0xa157('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7142=['rimraf','../../config/environment','./userProfileSection.attributes','exports','define','user_profile_has_sections','compositeIndex','lodash','api','moment','request-promise'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7142,0x1eb));var _0x2714=function(_0x45ed3b,_0x11d356){_0x45ed3b=_0x45ed3b-0x0;var _0x128be5=_0x7142[_0x45ed3b];return _0x128be5;};'use strict';var _=require(_0x2714('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2714('0x1'));var moment=require(_0x2714('0x2'));var BPromise=require('bluebird');var rp=require(_0x2714('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2714('0x4'));var config=require(_0x2714('0x5'));var attributes=require(_0x2714('0x6'));module[_0x2714('0x7')]=function(_0xf14dc9,_0x3d8c98){return _0xf14dc9[_0x2714('0x8')]('UserProfileSection',attributes,{'tableName':_0x2714('0x9'),'paranoid':![],'indexes':[{'name':_0x2714('0xa'),'fields':['sectionId','userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
index aeb9ace..8349946 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8ba=['../../config/logger','../../config/environment','jayson/promise','http','request','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils'];(function(_0x509880,_0x462c05){var _0x243e82=function(_0x4d88a8){while(--_0x4d88a8){_0x509880['push'](_0x509880['shift']());}};_0x243e82(++_0x462c05);}(_0xc8ba,0x186));var _0xac8b=function(_0xbe40ad,_0x44343c){_0xbe40ad=_0xbe40ad-0x0;var _0x50fac9=_0xc8ba[_0xbe40ad];return _0x50fac9;};'use strict';var _=require(_0xac8b('0x0'));var util=require(_0xac8b('0x1'));var moment=require(_0xac8b('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xac8b('0x3'));var db=require(_0xac8b('0x4'))['db'];var utils=require(_0xac8b('0x5'));var logger=require(_0xac8b('0x6'))('rpc');var config=require(_0xac8b('0x7'));var jayson=require(_0xac8b('0x8'));var client=jayson['client'][_0xac8b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5375a2,_0x689678,_0x26d3d7){return new BPromise(function(_0xe63b93,_0x58c7fe){return client[_0xac8b('0xa')](_0x5375a2,_0x26d3d7)[_0xac8b('0xb')](function(_0x17c430){logger[_0xac8b('0xc')](_0xac8b('0xd'),_0x689678,_0xac8b('0xe'));logger[_0xac8b('0xf')](_0xac8b('0x10'),_0x689678,_0xac8b('0xe'),JSON[_0xac8b('0x11')](_0x17c430));if(_0x17c430[_0xac8b('0x12')]){if(_0x17c430[_0xac8b('0x12')]['code']===0x1f4){logger[_0xac8b('0x12')](_0xac8b('0xd'),_0x689678,_0x17c430[_0xac8b('0x12')][_0xac8b('0x13')]);return _0x58c7fe(_0x17c430[_0xac8b('0x12')]['message']);}logger[_0xac8b('0x12')]('UserProfileSection,\x20%s,\x20%s',_0x689678,_0x17c430['error'][_0xac8b('0x13')]);return _0xe63b93(_0x17c430[_0xac8b('0x12')]['message']);}else{logger[_0xac8b('0xc')](_0xac8b('0xd'),_0x689678,_0xac8b('0xe'));_0xe63b93(_0x17c430[_0xac8b('0x14')][_0xac8b('0x13')]);}})[_0xac8b('0x15')](function(_0x58b260){logger['error'](_0xac8b('0xd'),_0x689678,_0x58b260);_0x58c7fe(_0x58b260);});});}
\ No newline at end of file
+var _0x27e3=['error','code','message','result','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x5c80b7,_0x5c6250){var _0x4a20a7=function(_0x22dd64){while(--_0x22dd64){_0x5c80b7['push'](_0x5c80b7['shift']());}};_0x4a20a7(++_0x5c6250);}(_0x27e3,0x15d));var _0x327e=function(_0x4b8b3c,_0x54f4f8){_0x4b8b3c=_0x4b8b3c-0x0;var _0x1334c2=_0x27e3[_0x4b8b3c];return _0x1334c2;};'use strict';var _=require('lodash');var util=require(_0x327e('0x0'));var moment=require(_0x327e('0x1'));var BPromise=require(_0x327e('0x2'));var rs=require(_0x327e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x327e('0x4'))['db'];var utils=require(_0x327e('0x5'));var logger=require(_0x327e('0x6'))(_0x327e('0x7'));var config=require(_0x327e('0x8'));var jayson=require(_0x327e('0x9'));var client=jayson[_0x327e('0xa')][_0x327e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2d72d2,_0x3b56e9,_0x47b4a4){return new BPromise(function(_0x561ba9,_0x5e8aa3){return client[_0x327e('0xc')](_0x2d72d2,_0x47b4a4)[_0x327e('0xd')](function(_0x4cfd1d){logger[_0x327e('0xe')](_0x327e('0xf'),_0x3b56e9,_0x327e('0x10'));logger[_0x327e('0x11')]('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x3b56e9,_0x327e('0x10'),JSON[_0x327e('0x12')](_0x4cfd1d));if(_0x4cfd1d[_0x327e('0x13')]){if(_0x4cfd1d[_0x327e('0x13')][_0x327e('0x14')]===0x1f4){logger[_0x327e('0x13')]('UserProfileSection,\x20%s,\x20%s',_0x3b56e9,_0x4cfd1d[_0x327e('0x13')][_0x327e('0x15')]);return _0x5e8aa3(_0x4cfd1d[_0x327e('0x13')][_0x327e('0x15')]);}logger[_0x327e('0x13')]('UserProfileSection,\x20%s,\x20%s',_0x3b56e9,_0x4cfd1d[_0x327e('0x13')]['message']);return _0x561ba9(_0x4cfd1d[_0x327e('0x13')][_0x327e('0x15')]);}else{logger[_0x327e('0xe')](_0x327e('0xf'),_0x3b56e9,_0x327e('0x10'));_0x561ba9(_0x4cfd1d[_0x327e('0x16')][_0x327e('0x15')]);}})['catch'](function(_0x567423){logger['error'](_0x327e('0xf'),_0x3b56e9,_0x567423);_0x5e8aa3(_0x567423);});});}
\ No newline at end of file
index 82ab4af..b6479db 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(_0x1b4ca6,_0x37f5d0){var _0x189463=function(_0x24567b){while(--_0x24567b){_0x1b4ca6['push'](_0x1b4ca6['shift']());}};_0x189463(++_0x37f5d0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xa9e0[_0x56482c];return _0x5aae7a;};'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 _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x95e7a2,_0x104957){var _0x5b387c=function(_0x225274){while(--_0x225274){_0x95e7a2['push'](_0x95e7a2['shift']());}};_0x5b387c(++_0x104957);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xa9e0[_0x3ce3c];return _0x55a2c9;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index 9a803a3..4bdf62e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26d4=['INTEGER','sequelize'];(function(_0x31ead7,_0x2e9a7c){var _0x3516f0=function(_0x47fa36){while(--_0x47fa36){_0x31ead7['push'](_0x31ead7['shift']());}};_0x3516f0(++_0x2e9a7c);}(_0x26d4,0xab));var _0x426d=function(_0x28dc90,_0x117d06){_0x28dc90=_0x28dc90-0x0;var _0x4b6ee2=_0x26d4[_0x28dc90];return _0x4b6ee2;};'use strict';var Sequelize=require(_0x426d('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x426d('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x3cbd=['INTEGER'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x3cbd,0x184));var _0xd3cb=function(_0x706091,_0x5e07d9){_0x706091=_0x706091-0x0;var _0x4aee6f=_0x3cbd[_0x706091];return _0x4aee6f;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0xd3cb('0x0')],'defaultValue':0x0}};
\ No newline at end of file
index a9711bd..34352ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d38=['util','../../config/logger','api','request-promise','rimraf','../../config/environment','./userSmsQueue.attributes','define','UserSmsQueue'];(function(_0x2601e0,_0x4c8cc8){var _0x111809=function(_0x127c78){while(--_0x127c78){_0x2601e0['push'](_0x2601e0['shift']());}};_0x111809(++_0x4c8cc8);}(_0x6d38,0x1ef));var _0x86d3=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x6d38[_0x31e29a];return _0x32d892;};'use strict';var _=require('lodash');var util=require(_0x86d3('0x0'));var logger=require(_0x86d3('0x1'))(_0x86d3('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x86d3('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x86d3('0x4'));var config=require(_0x86d3('0x5'));var attributes=require(_0x86d3('0x6'));module['exports']=function(_0x2d8272,_0xfbbc15){return _0x2d8272[_0x86d3('0x7')](_0x86d3('0x8'),attributes,{'tableName':'user_has_sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7046=['path','../../config/environment','./userSmsQueue.attributes','exports','UserSmsQueue','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x29a32e,_0x1b96eb){var _0x215237=function(_0x2dcf12){while(--_0x2dcf12){_0x29a32e['push'](_0x29a32e['shift']());}};_0x215237(++_0x1b96eb);}(_0x7046,0x144));var _0x6704=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x7046[_0x8c43de];return _0xa6591b;};'use strict';var _=require(_0x6704('0x0'));var util=require(_0x6704('0x1'));var logger=require(_0x6704('0x2'))(_0x6704('0x3'));var moment=require('moment');var BPromise=require(_0x6704('0x4'));var rp=require(_0x6704('0x5'));var fs=require('fs');var path=require(_0x6704('0x6'));var rimraf=require('rimraf');var config=require(_0x6704('0x7'));var attributes=require(_0x6704('0x8'));module[_0x6704('0x9')]=function(_0x626a14,_0x2917be){return _0x626a14['define'](_0x6704('0xa'),attributes,{'tableName':'user_has_sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fecab62..d214a2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbfc=['message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','UserSmsQueue,\x20%s,\x20%s'];(function(_0x483657,_0x4c9172){var _0xe9877c=function(_0x1b02af){while(--_0x1b02af){_0x483657['push'](_0x483657['shift']());}};_0xe9877c(++_0x4c9172);}(_0xbbfc,0x18a));var _0xcbbf=function(_0x3a8db5,_0x31cff7){_0x3a8db5=_0x3a8db5-0x0;var _0x2c03cd=_0xbbfc[_0x3a8db5];return _0x2c03cd;};'use strict';var _=require(_0xcbbf('0x0'));var util=require(_0xcbbf('0x1'));var moment=require(_0xcbbf('0x2'));var BPromise=require(_0xcbbf('0x3'));var rs=require(_0xcbbf('0x4'));var fs=require('fs');var Redis=require(_0xcbbf('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xcbbf('0x6'));var logger=require(_0xcbbf('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xcbbf('0x8'));var client=jayson[_0xcbbf('0x9')][_0xcbbf('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3a6919,_0x552d37,_0x50ed8f){return new BPromise(function(_0x5f3182,_0x3f14ab){return client[_0xcbbf('0xb')](_0x3a6919,_0x50ed8f)[_0xcbbf('0xc')](function(_0x298763){logger[_0xcbbf('0xd')]('UserSmsQueue,\x20%s,\x20%s',_0x552d37,'request\x20sent');logger[_0xcbbf('0xe')](_0xcbbf('0xf'),_0x552d37,_0xcbbf('0x10'),JSON['stringify'](_0x298763));if(_0x298763['error']){if(_0x298763['error'][_0xcbbf('0x11')]===0x1f4){logger[_0xcbbf('0x12')](_0xcbbf('0x13'),_0x552d37,_0x298763[_0xcbbf('0x12')][_0xcbbf('0x14')]);return _0x3f14ab(_0x298763[_0xcbbf('0x12')][_0xcbbf('0x14')]);}logger[_0xcbbf('0x12')](_0xcbbf('0x13'),_0x552d37,_0x298763[_0xcbbf('0x12')][_0xcbbf('0x14')]);return _0x5f3182(_0x298763[_0xcbbf('0x12')][_0xcbbf('0x14')]);}else{logger[_0xcbbf('0xd')]('UserSmsQueue,\x20%s,\x20%s',_0x552d37,_0xcbbf('0x10'));_0x5f3182(_0x298763[_0xcbbf('0x15')][_0xcbbf('0x14')]);}})[_0xcbbf('0x16')](function(_0x24e628){logger[_0xcbbf('0x12')](_0xcbbf('0x13'),_0x552d37,_0x24e628);_0x3f14ab(_0x24e628);});});}
\ No newline at end of file
+var _0x2df2=['util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','then','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','error','message','info','catch','lodash'];(function(_0x9db13b,_0x12a363){var _0x3f15df=function(_0x3c5c4d){while(--_0x3c5c4d){_0x9db13b['push'](_0x9db13b['shift']());}};_0x3f15df(++_0x12a363);}(_0x2df2,0x84));var _0x22df=function(_0x11fe68,_0x2b6c4e){_0x11fe68=_0x11fe68-0x0;var _0x2a1548=_0x2df2[_0x11fe68];return _0x2a1548;};'use strict';var _=require(_0x22df('0x0'));var util=require(_0x22df('0x1'));var moment=require('moment');var BPromise=require(_0x22df('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x22df('0x3'));var db=require(_0x22df('0x4'))['db'];var utils=require(_0x22df('0x5'));var logger=require('../../config/logger')(_0x22df('0x6'));var config=require('../../config/environment');var jayson=require(_0x22df('0x7'));var client=jayson['client'][_0x22df('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3afa5f,_0x482712,_0x3d92aa){return new BPromise(function(_0x253135,_0x2bd2d0){return client[_0x22df('0x9')](_0x3afa5f,_0x3d92aa)[_0x22df('0xa')](function(_0x53b46f){logger['info'](_0x22df('0xb'),_0x482712,_0x22df('0xc'));logger[_0x22df('0xd')](_0x22df('0xe'),_0x482712,_0x22df('0xc'),JSON['stringify'](_0x53b46f));if(_0x53b46f['error']){if(_0x53b46f[_0x22df('0xf')]['code']===0x1f4){logger[_0x22df('0xf')](_0x22df('0xb'),_0x482712,_0x53b46f[_0x22df('0xf')][_0x22df('0x10')]);return _0x2bd2d0(_0x53b46f[_0x22df('0xf')][_0x22df('0x10')]);}logger[_0x22df('0xf')](_0x22df('0xb'),_0x482712,_0x53b46f['error'][_0x22df('0x10')]);return _0x253135(_0x53b46f[_0x22df('0xf')]['message']);}else{logger[_0x22df('0x11')](_0x22df('0xb'),_0x482712,_0x22df('0xc'));_0x253135(_0x53b46f['result'][_0x22df('0x10')]);}})[_0x22df('0x12')](function(_0x296fdd){logger[_0x22df('0xf')](_0x22df('0xb'),_0x482712,_0x296fdd);_0x2bd2d0(_0x296fdd);});});}
\ No newline at end of file
index 3851738..2dd7857 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe507=['exports','INTEGER'];(function(_0x3ffd8b,_0x1f89b9){var _0x29d491=function(_0x2dac02){while(--_0x2dac02){_0x3ffd8b['push'](_0x3ffd8b['shift']());}};_0x29d491(++_0x1f89b9);}(_0xe507,0xb4));var _0x7e50=function(_0x1f7120,_0x53456a){_0x1f7120=_0x1f7120-0x0;var _0x512142=_0xe507[_0x1f7120];return _0x512142;};'use strict';var Sequelize=require('sequelize');module[_0x7e50('0x0')]={'UserId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x7e50('0x1')]}};
\ No newline at end of file
+var _0x3b76=['INTEGER','sequelize'];(function(_0x11bd79,_0x58ab02){var _0x57834c=function(_0x44febc){while(--_0x44febc){_0x11bd79['push'](_0x11bd79['shift']());}};_0x57834c(++_0x58ab02);}(_0x3b76,0x1e1));var _0x63b7=function(_0x2a828f,_0x689474){_0x2a828f=_0x2a828f-0x0;var _0x4873a3=_0x3b76[_0x2a828f];return _0x4873a3;};'use strict';var Sequelize=require(_0x63b7('0x0'));module['exports']={'UserId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x63b7('0x1')]}};
\ No newline at end of file
index 3bb890c..a0c1a7a 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(_0x25ef07,_0x5dd09c){var _0x4f0cca=function(_0xe73faf){while(--_0xe73faf){_0x25ef07['push'](_0x25ef07['shift']());}};_0x4f0cca(++_0x5dd09c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0xa9e0[_0x54d4fe];return _0x1ab5bb;};'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(_0x292eb9,_0x501c0e){var _0x1ec641=function(_0x42191c){while(--_0x42191c){_0x292eb9['push'](_0x292eb9['shift']());}};_0x1ec641(++_0x501c0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b4d126b..fc9936f 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(_0x220b0b,_0x492350){var _0x44980c=function(_0x5b44d2){while(--_0x5b44d2){_0x220b0b['push'](_0x220b0b['shift']());}};_0x44980c(++_0x492350);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x33554b,_0x48162b){_0x33554b=_0x33554b-0x0;var _0x256954=_0xcb91[_0x33554b];return _0x256954;};'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 _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x52ed18,_0x722adb){var _0x5d0a9e=function(_0x464a){while(--_0x464a){_0x52ed18['push'](_0x52ed18['shift']());}};_0x5d0a9e(++_0x722adb);}(_0x9c44,0x178));var _0x49c4=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x9c44[_0x543084];return _0x306a57;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index 9006424..5c21fe1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xca9d=['sequelize','exports','INTEGER'];(function(_0x827600,_0x27ef3){var _0x8f4350=function(_0x4992d8){while(--_0x4992d8){_0x827600['push'](_0x827600['shift']());}};_0x8f4350(++_0x27ef3);}(_0xca9d,0x15c));var _0xdca9=function(_0x3c8f6d,_0xfc8857){_0x3c8f6d=_0x3c8f6d-0x0;var _0x2d0f22=_0xca9d[_0x3c8f6d];return _0x2d0f22;};'use strict';var Sequelize=require(_0xdca9('0x0'));module[_0xdca9('0x1')]={'penalty':{'type':Sequelize[_0xdca9('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index b250404..594fba2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0b1=['api','moment','bluebird','rimraf','../../config/environment','exports','UserVoiceQueue'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0xb0b1,0x1f1));var _0x1b0b=function(_0x233de4,_0x5ae940){_0x233de4=_0x233de4-0x0;var _0x4dfa5c=_0xb0b1[_0x233de4];return _0x4dfa5c;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x1b0b('0x0'));var moment=require(_0x1b0b('0x1'));var BPromise=require(_0x1b0b('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1b0b('0x3'));var config=require(_0x1b0b('0x4'));var attributes=require('./userVoiceQueue.attributes');module[_0x1b0b('0x5')]=function(_0x4ea414,_0xfa4665){return _0x4ea414['define'](_0x1b0b('0x6'),attributes,{'tableName':'user_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x37ad=['exports','UserVoiceQueue','lodash','api','moment','request-promise','path','rimraf','./userVoiceQueue.attributes'];(function(_0x1dba95,_0x54e1ae){var _0x28396b=function(_0x104610){while(--_0x104610){_0x1dba95['push'](_0x1dba95['shift']());}};_0x28396b(++_0x54e1ae);}(_0x37ad,0x1a9));var _0xd37a=function(_0x5a4674,_0x51eeaa){_0x5a4674=_0x5a4674-0x0;var _0x180912=_0x37ad[_0x5a4674];return _0x180912;};'use strict';var _=require(_0xd37a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xd37a('0x1'));var moment=require(_0xd37a('0x2'));var BPromise=require('bluebird');var rp=require(_0xd37a('0x3'));var fs=require('fs');var path=require(_0xd37a('0x4'));var rimraf=require(_0xd37a('0x5'));var config=require('../../config/environment');var attributes=require(_0xd37a('0x6'));module[_0xd37a('0x7')]=function(_0x4c237e,_0x59342b){return _0x4c237e['define'](_0xd37a('0x8'),attributes,{'tableName':'user_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 676e808..7515406 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29c3=['http','request','then','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x434783,_0xff395d){var _0x13efcf=function(_0x235dac){while(--_0x235dac){_0x434783['push'](_0x434783['shift']());}};_0x13efcf(++_0xff395d);}(_0x29c3,0xdc));var _0x329c=function(_0x1dbf28,_0x4ea005){_0x1dbf28=_0x1dbf28-0x0;var _0x55aee8=_0x29c3[_0x1dbf28];return _0x55aee8;};'use strict';var _=require(_0x329c('0x0'));var util=require(_0x329c('0x1'));var moment=require(_0x329c('0x2'));var BPromise=require(_0x329c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x329c('0x4'));var db=require(_0x329c('0x5'))['db'];var utils=require(_0x329c('0x6'));var logger=require(_0x329c('0x7'))('rpc');var config=require(_0x329c('0x8'));var jayson=require(_0x329c('0x9'));var client=jayson[_0x329c('0xa')][_0x329c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x326140,_0x328e2a,_0x5131ac){return new BPromise(function(_0x532576,_0x5f191c){return client[_0x329c('0xc')](_0x326140,_0x5131ac)[_0x329c('0xd')](function(_0x5d8011){logger['info'](_0x329c('0xe'),_0x328e2a,_0x329c('0xf'));logger[_0x329c('0x10')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x328e2a,_0x329c('0xf'),JSON['stringify'](_0x5d8011));if(_0x5d8011[_0x329c('0x11')]){if(_0x5d8011[_0x329c('0x11')][_0x329c('0x12')]===0x1f4){logger[_0x329c('0x11')](_0x329c('0xe'),_0x328e2a,_0x5d8011[_0x329c('0x11')][_0x329c('0x13')]);return _0x5f191c(_0x5d8011['error'][_0x329c('0x13')]);}logger[_0x329c('0x11')]('UserVoiceQueue,\x20%s,\x20%s',_0x328e2a,_0x5d8011[_0x329c('0x11')]['message']);return _0x532576(_0x5d8011['error']['message']);}else{logger['info'](_0x329c('0xe'),_0x328e2a,_0x329c('0xf'));_0x532576(_0x5d8011[_0x329c('0x14')][_0x329c('0x13')]);}})['catch'](function(_0x791d14){logger[_0x329c('0x11')](_0x329c('0xe'),_0x328e2a,_0x791d14);_0x5f191c(_0x791d14);});});}
\ No newline at end of file
+var _0xa1f3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','info','UserVoiceQueue,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','lodash','util','moment'];(function(_0x40e5d9,_0x36f0ce){var _0x4c395d=function(_0x113725){while(--_0x113725){_0x40e5d9['push'](_0x40e5d9['shift']());}};_0x4c395d(++_0x36f0ce);}(_0xa1f3,0x12d));var _0x3a1f=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xa1f3[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0x3a1f('0x0'));var util=require(_0x3a1f('0x1'));var moment=require(_0x3a1f('0x2'));var BPromise=require(_0x3a1f('0x3'));var rs=require(_0x3a1f('0x4'));var fs=require('fs');var Redis=require(_0x3a1f('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x3a1f('0x6'));var logger=require(_0x3a1f('0x7'))(_0x3a1f('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x3a1f('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x14c613,_0x4033bc,_0xc0aa9c){return new BPromise(function(_0x55d383,_0x437662){return client['request'](_0x14c613,_0xc0aa9c)['then'](function(_0x4fe888){logger[_0x3a1f('0xa')](_0x3a1f('0xb'),_0x4033bc,'request\x20sent');logger[_0x3a1f('0xc')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x4033bc,_0x3a1f('0xd'),JSON[_0x3a1f('0xe')](_0x4fe888));if(_0x4fe888[_0x3a1f('0xf')]){if(_0x4fe888['error'][_0x3a1f('0x10')]===0x1f4){logger['error'](_0x3a1f('0xb'),_0x4033bc,_0x4fe888[_0x3a1f('0xf')][_0x3a1f('0x11')]);return _0x437662(_0x4fe888[_0x3a1f('0xf')][_0x3a1f('0x11')]);}logger[_0x3a1f('0xf')](_0x3a1f('0xb'),_0x4033bc,_0x4fe888[_0x3a1f('0xf')][_0x3a1f('0x11')]);return _0x55d383(_0x4fe888[_0x3a1f('0xf')][_0x3a1f('0x11')]);}else{logger[_0x3a1f('0xa')]('UserVoiceQueue,\x20%s,\x20%s',_0x4033bc,_0x3a1f('0xd'));_0x55d383(_0x4fe888[_0x3a1f('0x12')][_0x3a1f('0x11')]);}})['catch'](function(_0x45607a){logger[_0x3a1f('0xf')](_0x3a1f('0xb'),_0x4033bc,_0x45607a);_0x437662(_0x45607a);});});}
\ No newline at end of file
index e23b57c..4e008c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x8e5172,_0x2fb72e){var _0xf0595e=function(_0x55282a){while(--_0x55282a){_0x8e5172['push'](_0x8e5172['shift']());}};_0xf0595e(++_0x2fb72e);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x11dde4,_0x1d4852){var _0x6eea94=function(_0x182859){while(--_0x182859){_0x11dde4['push'](_0x11dde4['shift']());}};_0x6eea94(++_0x1d4852);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index fe29c68..e43a7d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1250=['STRING','queue_interface','sequelize','INTEGER','Required\x20by\x20Asterisk'];(function(_0x4033c2,_0x2d5d6e){var _0x82cb1=function(_0x53c832){while(--_0x53c832){_0x4033c2['push'](_0x4033c2['shift']());}};_0x82cb1(++_0x2d5d6e);}(_0x1250,0xde));var _0x0125=function(_0x3e502d,_0x3f27b4){_0x3e502d=_0x3e502d-0x0;var _0xe927ad=_0x1250[_0x3e502d];return _0xe927ad;};'use strict';var Sequelize=require(_0x0125('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x0125('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':_0x0125('0x2')},'membername':{'type':Sequelize[_0x0125('0x3')],'allowNull':![],'comment':_0x0125('0x2')},'UserId':{'type':Sequelize[_0x0125('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'queue_interface','comment':_0x0125('0x2')},'VoiceQueueId':{'type':Sequelize[_0x0125('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0x0125('0x3')],'allowNull':![],'unique':_0x0125('0x4'),'comment':_0x0125('0x2')},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0x0125('0x2')},'paused':{'type':Sequelize[_0x0125('0x1')](0xb),'defaultValue':0x0,'comment':_0x0125('0x2')}};
\ No newline at end of file
+var _0xe816=['sequelize','exports','INTEGER','STRING','Required\x20by\x20Asterisk','queue_interface'];(function(_0x3cfbed,_0x1e6dcb){var _0x515d02=function(_0x53c2fb){while(--_0x53c2fb){_0x3cfbed['push'](_0x3cfbed['shift']());}};_0x515d02(++_0x1e6dcb);}(_0xe816,0x126));var _0x6e81=function(_0x13a3ca,_0x2f745a){_0x13a3ca=_0x13a3ca-0x0;var _0x13d278=_0xe816[_0x13a3ca];return _0x13d278;};'use strict';var Sequelize=require(_0x6e81('0x0'));module[_0x6e81('0x1')]={'uniqueid':{'type':Sequelize[_0x6e81('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0x6e81('0x3')],'allowNull':![],'comment':_0x6e81('0x4')},'UserId':{'type':Sequelize[_0x6e81('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize[_0x6e81('0x3')],'allowNull':![],'unique':_0x6e81('0x5'),'comment':_0x6e81('0x4')},'VoiceQueueId':{'type':Sequelize[_0x6e81('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0x6e81('0x3')],'allowNull':![],'unique':_0x6e81('0x5'),'comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize[_0x6e81('0x2')](0xb),'defaultValue':0x0,'comment':_0x6e81('0x4')},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}};
\ No newline at end of file
index c3fcc55..894a4cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8970=['hasOwnProperty','exports','UserVoiceQueueRt','save','remove','emit'];(function(_0x1e09ba,_0x4c3939){var _0x2e551f=function(_0x4a447b){while(--_0x4a447b){_0x1e09ba['push'](_0x1e09ba['shift']());}};_0x2e551f(++_0x4c3939);}(_0x8970,0x1dc));var _0x0897=function(_0x1f6dba,_0x5c79e1){_0x1f6dba=_0x1f6dba-0x0;var _0x5175d6=_0x8970[_0x1f6dba];return _0x5175d6;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require('../../mysqldb')['db'][_0x0897('0x0')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x0897('0x1'),'afterUpdate':'update','afterDestroy':_0x0897('0x2')};function emitEvent(_0x413402){return function(_0x2c8633,_0x3c7a8d,_0x5137c7){UserVoiceQueueRtEvents[_0x0897('0x3')](_0x413402+':'+_0x2c8633['id'],_0x2c8633);UserVoiceQueueRtEvents['emit'](_0x413402,_0x2c8633);_0x5137c7(null);};}for(var e in events){if(events[_0x0897('0x4')](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module[_0x0897('0x5')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x30b2=['emit','hasOwnProperty','exports','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x5a249e,_0x46af13){var _0x59401d=function(_0x58af52){while(--_0x58af52){_0x5a249e['push'](_0x5a249e['shift']());}};_0x59401d(++_0x46af13);}(_0x30b2,0x133));var _0x230b=function(_0x4ebdbf,_0x2dcf6e){_0x4ebdbf=_0x4ebdbf-0x0;var _0x566e59=_0x30b2[_0x4ebdbf];return _0x566e59;};'use strict';var EventEmitter=require(_0x230b('0x0'));var UserVoiceQueueRt=require(_0x230b('0x1'))['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x230b('0x2')](0x0);var events={'afterCreate':_0x230b('0x3'),'afterUpdate':_0x230b('0x4'),'afterDestroy':'remove'};function emitEvent(_0x55dfc8){return function(_0x19cbb4,_0x4d00b8,_0x10bbd1){UserVoiceQueueRtEvents[_0x230b('0x5')](_0x55dfc8+':'+_0x19cbb4['id'],_0x19cbb4);UserVoiceQueueRtEvents['emit'](_0x55dfc8,_0x19cbb4);_0x10bbd1(null);};}for(var e in events){if(events[_0x230b('0x6')](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module[_0x230b('0x7')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index 2bad315..b46f5bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74e6=['exports','define','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes'];(function(_0x109cd2,_0x31fc93){var _0x6c91f6=function(_0x2f614f){while(--_0x2f614f){_0x109cd2['push'](_0x109cd2['shift']());}};_0x6c91f6(++_0x31fc93);}(_0x74e6,0x17d));var _0x674e=function(_0x59b3b7,_0x5ad135){_0x59b3b7=_0x59b3b7-0x0;var _0x47c030=_0x74e6[_0x59b3b7];return _0x47c030;};'use strict';var _=require(_0x674e('0x0'));var util=require(_0x674e('0x1'));var logger=require(_0x674e('0x2'))(_0x674e('0x3'));var moment=require('moment');var BPromise=require(_0x674e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x674e('0x5'));var rimraf=require(_0x674e('0x6'));var config=require(_0x674e('0x7'));var attributes=require(_0x674e('0x8'));module[_0x674e('0x9')]=function(_0x431c0c,_0x4b3777){return _0x431c0c[_0x674e('0xa')](_0x674e('0xb'),attributes,{'tableName':_0x674e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c05=['user_has_voice_queues_rt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports','define','UserVoiceQueueRt'];(function(_0x1faaa1,_0x1568dd){var _0x994ec=function(_0x298ef4){while(--_0x298ef4){_0x1faaa1['push'](_0x1faaa1['shift']());}};_0x994ec(++_0x1568dd);}(_0x1c05,0x1dd));var _0x51c0=function(_0x1304ac,_0x5ef200){_0x1304ac=_0x1304ac-0x0;var _0x585107=_0x1c05[_0x1304ac];return _0x585107;};'use strict';var _=require(_0x51c0('0x0'));var util=require(_0x51c0('0x1'));var logger=require(_0x51c0('0x2'))(_0x51c0('0x3'));var moment=require(_0x51c0('0x4'));var BPromise=require(_0x51c0('0x5'));var rp=require(_0x51c0('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x51c0('0x7'));var config=require(_0x51c0('0x8'));var attributes=require(_0x51c0('0x9'));module[_0x51c0('0xa')]=function(_0x52072e,_0x2a33da){return _0x52072e[_0x51c0('0xb')](_0x51c0('0xc'),attributes,{'tableName':_0x51c0('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f263543..deb8018 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x805a=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./userVoiceQueueRt.socket','register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','options','raw','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','lodash','util','bluebird','randomstring'];(function(_0x180254,_0x522c85){var _0x14670c=function(_0xaef954){while(--_0xaef954){_0x180254['push'](_0x180254['shift']());}};_0x14670c(++_0x522c85);}(_0x805a,0x152));var _0xa805=function(_0x505dcb,_0x3d3646){_0x505dcb=_0x505dcb-0x0;var _0x3f1944=_0x805a[_0x505dcb];return _0x3f1944;};'use strict';var _=require(_0xa805('0x0'));var util=require(_0xa805('0x1'));var moment=require('moment');var BPromise=require(_0xa805('0x2'));var rs=require(_0xa805('0x3'));var fs=require('fs');var Redis=require(_0xa805('0x4'));var db=require(_0xa805('0x5'))['db'];var utils=require(_0xa805('0x6'));var logger=require(_0xa805('0x7'))(_0xa805('0x8'));var config=require(_0xa805('0x9'));var jayson=require(_0xa805('0xa'));var client=jayson[_0xa805('0xb')][_0xa805('0xc')]({'port':0x232a});config[_0xa805('0xd')]=_[_0xa805('0xe')](config[_0xa805('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0xa805('0xf'))(new Redis(config[_0xa805('0xd')]));require(_0xa805('0x10'))[_0xa805('0x11')](socket);function respondWithRpcPromise(_0x27b6d6,_0x2df132,_0x533f40){return new BPromise(function(_0x57ac11,_0x6fcd70){return client[_0xa805('0x12')](_0x27b6d6,_0x533f40)[_0xa805('0x13')](function(_0x53ced6){logger[_0xa805('0x14')](_0xa805('0x15'),_0x2df132,_0xa805('0x16'));logger[_0xa805('0x17')]('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x2df132,'request\x20sent',JSON[_0xa805('0x18')](_0x53ced6));if(_0x53ced6[_0xa805('0x19')]){if(_0x53ced6[_0xa805('0x19')][_0xa805('0x1a')]===0x1f4){logger[_0xa805('0x19')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x2df132,_0x53ced6[_0xa805('0x19')][_0xa805('0x1b')]);return _0x6fcd70(_0x53ced6[_0xa805('0x19')][_0xa805('0x1b')]);}logger[_0xa805('0x19')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x2df132,_0x53ced6[_0xa805('0x19')]['message']);return _0x57ac11(_0x53ced6[_0xa805('0x19')][_0xa805('0x1b')]);}else{logger[_0xa805('0x14')](_0xa805('0x15'),_0x2df132,_0xa805('0x16'));_0x57ac11(_0x53ced6[_0xa805('0x1c')][_0xa805('0x1b')]);}})[_0xa805('0x1d')](function(_0x3e00ef){logger['error'](_0xa805('0x15'),_0x2df132,_0x3e00ef);_0x6fcd70(_0x3e00ef);});});}exports[_0xa805('0x1e')]=function(_0x1c4394){var _0x4653fb=this;return new Promise(function(_0x3cf52c,_0x2c33db){return db[_0xa805('0x1f')]['findAll']({'raw':_0x1c4394[_0xa805('0x20')]?_0x1c4394['options'][_0xa805('0x21')]===undefined?!![]:![]:!![],'where':_0x1c4394[_0xa805('0x20')]?_0x1c4394[_0xa805('0x20')]['where']||null:null,'attributes':[[db[_0xa805('0x22')]['fn'](_0xa805('0x23'),db[_0xa805('0x22')]['fn']('IF',db[_0xa805('0x22')][_0xa805('0x24')](_0xa805('0x25')))),'outboundQueuePauses']]})[_0xa805('0x13')](function(_0x24f153){logger[_0xa805('0x14')](_0xa805('0x1e'),_0x1c4394);logger['debug'](_0xa805('0x1e'),_0x1c4394,JSON['stringify'](_0x24f153));_0x3cf52c(_0x24f153);})[_0xa805('0x1d')](function(_0x4154c6){logger[_0xa805('0x19')](_0xa805('0x1e'),_0x4154c6[_0xa805('0x1b')],_0x1c4394);_0x2c33db(_0x4653fb['error'](0x1f4,_0x4154c6[_0xa805('0x1b')]));});});};
\ No newline at end of file
+var _0xec1d=['literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','then','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','./userVoiceQueueRt.socket','register','info','UserVoiceQueueRt,\x20%s,\x20%s','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','sequelize','COUNT'];(function(_0xf9bd0a,_0xb866a4){var _0x31146c=function(_0x109d1e){while(--_0x109d1e){_0xf9bd0a['push'](_0xf9bd0a['shift']());}};_0x31146c(++_0xb866a4);}(_0xec1d,0x176));var _0xdec1=function(_0x5a9b61,_0x48d272){_0x5a9b61=_0x5a9b61-0x0;var _0x705175=_0xec1d[_0x5a9b61];return _0x705175;};'use strict';var _=require('lodash');var util=require(_0xdec1('0x0'));var moment=require(_0xdec1('0x1'));var BPromise=require(_0xdec1('0x2'));var rs=require(_0xdec1('0x3'));var fs=require('fs');var Redis=require(_0xdec1('0x4'));var db=require(_0xdec1('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xdec1('0x6'));var config=require(_0xdec1('0x7'));var jayson=require(_0xdec1('0x8'));var client=jayson[_0xdec1('0x9')]['http']({'port':0x232a});config[_0xdec1('0xa')]=_[_0xdec1('0xb')](config[_0xdec1('0xa')],{'host':_0xdec1('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdec1('0xa')]));require(_0xdec1('0xd'))[_0xdec1('0xe')](socket);function respondWithRpcPromise(_0x40cc7b,_0x28e9f0,_0xbc8fdc){return new BPromise(function(_0x190047,_0x43ace9){return client['request'](_0x40cc7b,_0xbc8fdc)['then'](function(_0x39b7d6){logger[_0xdec1('0xf')](_0xdec1('0x10'),_0x28e9f0,'request\x20sent');logger[_0xdec1('0x11')](_0xdec1('0x12'),_0x28e9f0,_0xdec1('0x13'),JSON[_0xdec1('0x14')](_0x39b7d6));if(_0x39b7d6[_0xdec1('0x15')]){if(_0x39b7d6[_0xdec1('0x15')][_0xdec1('0x16')]===0x1f4){logger[_0xdec1('0x15')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x28e9f0,_0x39b7d6['error'][_0xdec1('0x17')]);return _0x43ace9(_0x39b7d6['error'][_0xdec1('0x17')]);}logger[_0xdec1('0x15')](_0xdec1('0x10'),_0x28e9f0,_0x39b7d6[_0xdec1('0x15')][_0xdec1('0x17')]);return _0x190047(_0x39b7d6[_0xdec1('0x15')][_0xdec1('0x17')]);}else{logger['info'](_0xdec1('0x10'),_0x28e9f0,_0xdec1('0x13'));_0x190047(_0x39b7d6[_0xdec1('0x18')][_0xdec1('0x17')]);}})[_0xdec1('0x19')](function(_0x57318a){logger[_0xdec1('0x15')](_0xdec1('0x10'),_0x28e9f0,_0x57318a);_0x43ace9(_0x57318a);});});}exports[_0xdec1('0x1a')]=function(_0x4ba17d){var _0x19e7f7=this;return new Promise(function(_0xa6608d,_0x184c8b){return db[_0xdec1('0x1b')][_0xdec1('0x1c')]({'raw':_0x4ba17d[_0xdec1('0x1d')]?_0x4ba17d[_0xdec1('0x1d')][_0xdec1('0x1e')]===undefined?!![]:![]:!![],'where':_0x4ba17d[_0xdec1('0x1d')]?_0x4ba17d[_0xdec1('0x1d')]['where']||null:null,'attributes':[[db[_0xdec1('0x1f')]['fn'](_0xdec1('0x20'),db[_0xdec1('0x1f')]['fn']('IF',db[_0xdec1('0x1f')][_0xdec1('0x21')](_0xdec1('0x22')))),_0xdec1('0x23')]]})[_0xdec1('0x24')](function(_0x3df89c){logger[_0xdec1('0xf')]('GetVoiceQueueRtPauses',_0x4ba17d);logger[_0xdec1('0x11')]('GetVoiceQueueRtPauses',_0x4ba17d,JSON[_0xdec1('0x14')](_0x3df89c));_0xa6608d(_0x3df89c);})[_0xdec1('0x19')](function(_0x34c975){logger[_0xdec1('0x15')](_0xdec1('0x1a'),_0x34c975[_0xdec1('0x17')],_0x4ba17d);_0x184c8b(_0x19e7f7['error'](0x1f4,_0x34c975[_0xdec1('0x17')]));});});};
\ No newline at end of file
index 764ee63..d2ff5d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8917=['emit','removeListener','length','./userVoiceQueueRt.events','remove','update'];(function(_0x509b57,_0x209bcc){var _0x703b96=function(_0x4d07b0){while(--_0x4d07b0){_0x509b57['push'](_0x509b57['shift']());}};_0x703b96(++_0x209bcc);}(_0x8917,0x1d7));var _0x7891=function(_0x1b64e6,_0x5bf121){_0x1b64e6=_0x1b64e6-0x0;var _0x234c4a=_0x8917[_0x1b64e6];return _0x234c4a;};'use strict';var UserVoiceQueueRtEvents=require(_0x7891('0x0'));var events=['save',_0x7891('0x1'),_0x7891('0x2')];function createListener(_0xfc1628,_0x129608){return function(_0xdf5de1){_0x129608[_0x7891('0x3')](_0xfc1628,_0xdf5de1);};}function removeListener(_0x2b5570,_0x24234b){return function(){UserVoiceQueueRtEvents[_0x7891('0x4')](_0x2b5570,_0x24234b);};}exports['register']=function(_0x46b52a){for(var _0x43a48e=0x0,_0x442944=events[_0x7891('0x5')];_0x43a48e<_0x442944;_0x43a48e++){var _0x4722b7=events[_0x43a48e];var _0x452a6d=createListener('userVoiceQueueRt:'+_0x4722b7,_0x46b52a);UserVoiceQueueRtEvents['on'](_0x4722b7,_0x452a6d);}};
\ No newline at end of file
+var _0xef17=['removeListener','userVoiceQueueRt:','./userVoiceQueueRt.events','save','remove','update','emit'];(function(_0x73b80e,_0x4daa4a){var _0x4c31cd=function(_0x3663a0){while(--_0x3663a0){_0x73b80e['push'](_0x73b80e['shift']());}};_0x4c31cd(++_0x4daa4a);}(_0xef17,0x136));var _0x7ef1=function(_0x58b079,_0x2c3159){_0x58b079=_0x58b079-0x0;var _0xd28cfc=_0xef17[_0x58b079];return _0xd28cfc;};'use strict';var UserVoiceQueueRtEvents=require(_0x7ef1('0x0'));var events=[_0x7ef1('0x1'),_0x7ef1('0x2'),_0x7ef1('0x3')];function createListener(_0x601558,_0x2c0aac){return function(_0x280431){_0x2c0aac[_0x7ef1('0x4')](_0x601558,_0x280431);};}function removeListener(_0x2daaa6,_0x538a0a){return function(){UserVoiceQueueRtEvents[_0x7ef1('0x5')](_0x2daaa6,_0x538a0a);};}exports['register']=function(_0x138ed1){for(var _0x498596=0x0,_0x34a040=events['length'];_0x498596<_0x34a040;_0x498596++){var _0x5aec63=events[_0x498596];var _0x10c896=createListener(_0x7ef1('0x6')+_0x5aec63,_0x138ed1);UserVoiceQueueRtEvents['on'](_0x5aec63,_0x10c896);}};
\ No newline at end of file
index 117e9c2..5592914 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(_0x28875d,_0x224d95){var _0x217893=function(_0x5bc32e){while(--_0x5bc32e){_0x28875d['push'](_0x28875d['shift']());}};_0x217893(++_0x224d95);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1e91eb,_0x5829a3){_0x1e91eb=_0x1e91eb-0x0;var _0x2af75a=_0xcb91[_0x1e91eb];return _0x2af75a;};'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 _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x16167b,_0x2e64c4){var _0x357fab=function(_0xbab2ff){while(--_0xbab2ff){_0x16167b['push'](_0x16167b['shift']());}};_0x357fab(++_0x2e64c4);}(_0x9c44,0x178));var _0x49c4=function(_0x2b7764,_0x2606f1){_0x2b7764=_0x2b7764-0x0;var _0x848dcb=_0x9c44[_0x2b7764];return _0x848dcb;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index e333f3d..213dad0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x071a=['INTEGER','exports'];(function(_0x43d3f8,_0xe3453d){var _0x113424=function(_0x142264){while(--_0x142264){_0x43d3f8['push'](_0x43d3f8['shift']());}};_0x113424(++_0xe3453d);}(_0x071a,0x1af));var _0xa071=function(_0x5cbace,_0x33943c){_0x5cbace=_0x5cbace-0x0;var _0x6de5b8=_0x071a[_0x5cbace];return _0x6de5b8;};'use strict';var Sequelize=require('sequelize');module[_0xa071('0x0')]={'penalty':{'type':Sequelize[_0xa071('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x8ce1=['INTEGER','sequelize','exports'];(function(_0x16ae26,_0x2eab6e){var _0x33b09d=function(_0x2a762e){while(--_0x2a762e){_0x16ae26['push'](_0x16ae26['shift']());}};_0x33b09d(++_0x2eab6e);}(_0x8ce1,0xc1));var _0x18ce=function(_0x414ed7,_0x5ed52a){_0x414ed7=_0x414ed7-0x0;var _0x4abf2e=_0x8ce1[_0x414ed7];return _0x4abf2e;};'use strict';var Sequelize=require(_0x18ce('0x0'));module[_0x18ce('0x1')]={'penalty':{'type':Sequelize[_0x18ce('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 7963649..99f376a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26a2=['rimraf','../../config/environment','exports','define','user_has_whatsapp_queues','util','../../config/logger','api','request-promise','path'];(function(_0xf4add4,_0x5b9cc1){var _0x1c42fb=function(_0x2674c1){while(--_0x2674c1){_0xf4add4['push'](_0xf4add4['shift']());}};_0x1c42fb(++_0x5b9cc1);}(_0x26a2,0xd7));var _0x226a=function(_0x36a928,_0x43ff8f){_0x36a928=_0x36a928-0x0;var _0x16d07b=_0x26a2[_0x36a928];return _0x16d07b;};'use strict';var _=require('lodash');var util=require(_0x226a('0x0'));var logger=require(_0x226a('0x1'))(_0x226a('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x226a('0x3'));var fs=require('fs');var path=require(_0x226a('0x4'));var rimraf=require(_0x226a('0x5'));var config=require(_0x226a('0x6'));var attributes=require('./userWhatsappQueue.attributes');module[_0x226a('0x7')]=function(_0x43855d,_0xc2b24a){return _0x43855d[_0x226a('0x8')]('UserWhatsappQueue',attributes,{'tableName':_0x226a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1678=['request-promise','path','./userWhatsappQueue.attributes','define','user_has_whatsapp_queues','util','../../config/logger','api','bluebird'];(function(_0x33d87a,_0x135918){var _0x251bd7=function(_0x2ac408){while(--_0x2ac408){_0x33d87a['push'](_0x33d87a['shift']());}};_0x251bd7(++_0x135918);}(_0x1678,0x68));var _0x8167=function(_0x4639e8,_0x3390c4){_0x4639e8=_0x4639e8-0x0;var _0x41d24b=_0x1678[_0x4639e8];return _0x41d24b;};'use strict';var _=require('lodash');var util=require(_0x8167('0x0'));var logger=require(_0x8167('0x1'))(_0x8167('0x2'));var moment=require('moment');var BPromise=require(_0x8167('0x3'));var rp=require(_0x8167('0x4'));var fs=require('fs');var path=require(_0x8167('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8167('0x6'));module['exports']=function(_0x125763,_0x56f5d4){return _0x125763[_0x8167('0x7')]('UserWhatsappQueue',attributes,{'tableName':_0x8167('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0213681..86ecbdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c08=['../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x8c08,0x8e));var _0x88c0=function(_0xb66df,_0x4fb5ce){_0xb66df=_0xb66df-0x0;var _0x42a702=_0x8c08[_0xb66df];return _0x42a702;};'use strict';var _=require(_0x88c0('0x0'));var util=require(_0x88c0('0x1'));var moment=require(_0x88c0('0x2'));var BPromise=require(_0x88c0('0x3'));var rs=require(_0x88c0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x88c0('0x5'))['db'];var utils=require(_0x88c0('0x6'));var logger=require(_0x88c0('0x7'))(_0x88c0('0x8'));var config=require('../../config/environment');var jayson=require(_0x88c0('0x9'));var client=jayson['client'][_0x88c0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x18c420,_0x62bc85,_0xf15c91){return new BPromise(function(_0x40921f,_0x53ab55){return client[_0x88c0('0xb')](_0x18c420,_0xf15c91)[_0x88c0('0xc')](function(_0x1b466c){logger[_0x88c0('0xd')](_0x88c0('0xe'),_0x62bc85,_0x88c0('0xf'));logger['debug']('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0x62bc85,_0x88c0('0xf'),JSON[_0x88c0('0x10')](_0x1b466c));if(_0x1b466c[_0x88c0('0x11')]){if(_0x1b466c['error'][_0x88c0('0x12')]===0x1f4){logger['error'](_0x88c0('0xe'),_0x62bc85,_0x1b466c['error'][_0x88c0('0x13')]);return _0x53ab55(_0x1b466c[_0x88c0('0x11')][_0x88c0('0x13')]);}logger[_0x88c0('0x11')](_0x88c0('0xe'),_0x62bc85,_0x1b466c[_0x88c0('0x11')][_0x88c0('0x13')]);return _0x40921f(_0x1b466c[_0x88c0('0x11')][_0x88c0('0x13')]);}else{logger['info']('UserWhatsappQueue,\x20%s,\x20%s',_0x62bc85,_0x88c0('0xf'));_0x40921f(_0x1b466c[_0x88c0('0x14')][_0x88c0('0x13')]);}})['catch'](function(_0x50e42e){logger[_0x88c0('0x11')](_0x88c0('0xe'),_0x62bc85,_0x50e42e);_0x53ab55(_0x50e42e);});});}
\ No newline at end of file
+var _0xe0a1=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserWhatsappQueue,\x20%s,\x20%s','message','result'];(function(_0x5258ef,_0x21e171){var _0x2c7a4a=function(_0x1674d5){while(--_0x1674d5){_0x5258ef['push'](_0x5258ef['shift']());}};_0x2c7a4a(++_0x21e171);}(_0xe0a1,0x145));var _0x1e0a=function(_0x10a08d,_0x1bab5d){_0x10a08d=_0x10a08d-0x0;var _0x27abcc=_0xe0a1[_0x10a08d];return _0x27abcc;};'use strict';var _=require(_0x1e0a('0x0'));var util=require(_0x1e0a('0x1'));var moment=require(_0x1e0a('0x2'));var BPromise=require(_0x1e0a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1e0a('0x4'));var db=require(_0x1e0a('0x5'))['db'];var utils=require(_0x1e0a('0x6'));var logger=require(_0x1e0a('0x7'))(_0x1e0a('0x8'));var config=require(_0x1e0a('0x9'));var jayson=require(_0x1e0a('0xa'));var client=jayson[_0x1e0a('0xb')][_0x1e0a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x27bf6c,_0x1e23ce,_0x54b958){return new BPromise(function(_0x5e6760,_0x2d21f3){return client[_0x1e0a('0xd')](_0x27bf6c,_0x54b958)[_0x1e0a('0xe')](function(_0x310bb0){logger[_0x1e0a('0xf')]('UserWhatsappQueue,\x20%s,\x20%s',_0x1e23ce,_0x1e0a('0x10'));logger[_0x1e0a('0x11')](_0x1e0a('0x12'),_0x1e23ce,_0x1e0a('0x10'),JSON[_0x1e0a('0x13')](_0x310bb0));if(_0x310bb0['error']){if(_0x310bb0[_0x1e0a('0x14')][_0x1e0a('0x15')]===0x1f4){logger[_0x1e0a('0x14')](_0x1e0a('0x16'),_0x1e23ce,_0x310bb0[_0x1e0a('0x14')]['message']);return _0x2d21f3(_0x310bb0[_0x1e0a('0x14')][_0x1e0a('0x17')]);}logger[_0x1e0a('0x14')](_0x1e0a('0x16'),_0x1e23ce,_0x310bb0[_0x1e0a('0x14')]['message']);return _0x5e6760(_0x310bb0[_0x1e0a('0x14')][_0x1e0a('0x17')]);}else{logger['info'](_0x1e0a('0x16'),_0x1e23ce,'request\x20sent');_0x5e6760(_0x310bb0[_0x1e0a('0x18')][_0x1e0a('0x17')]);}})['catch'](function(_0xd4aaad){logger[_0x1e0a('0x14')]('UserWhatsappQueue,\x20%s,\x20%s',_0x1e23ce,_0xd4aaad);_0x2d21f3(_0xd4aaad);});});}
\ No newline at end of file
index e711e9a..e8810ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd7b=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','exports','util','path','connect-timeout','express'];(function(_0x4c8e2e,_0x534014){var _0x5b44e0=function(_0x213955){while(--_0x213955){_0x4c8e2e['push'](_0x4c8e2e['shift']());}};_0x5b44e0(++_0x534014);}(_0xfd7b,0x1df));var _0xbfd7=function(_0x286726,_0x20a337){_0x286726=_0x286726-0x0;var _0xcd4fe9=_0xfd7b[_0x286726];return _0xcd4fe9;};'use strict';var multer=require('multer');var util=require(_0xbfd7('0x0'));var path=require(_0xbfd7('0x1'));var timeout=require(_0xbfd7('0x2'));var express=require(_0xbfd7('0x3'));var router=express[_0xbfd7('0x4')]();var fs_extra=require(_0xbfd7('0x5'));var auth=require(_0xbfd7('0x6'));var interaction=require(_0xbfd7('0x7'));var config=require(_0xbfd7('0x8'));var controller=require(_0xbfd7('0x9'));router[_0xbfd7('0xa')]('/',auth[_0xbfd7('0xb')](),controller[_0xbfd7('0xc')]);router['get'](_0xbfd7('0xd'),auth['isAuthenticated'](),controller[_0xbfd7('0xe')]);router['post']('/',auth[_0xbfd7('0xb')](),controller[_0xbfd7('0xf')]);router[_0xbfd7('0x10')](_0xbfd7('0xd'),auth['isAuthenticated'](),controller[_0xbfd7('0x11')]);router[_0xbfd7('0x12')]('/:id',auth['isAuthenticated'](),controller[_0xbfd7('0x13')]);module[_0xbfd7('0x14')]=router;
\ No newline at end of file
+var _0x54ef=['../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller','index','get','/:id','show','isAuthenticated','create','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra'];(function(_0x14605c,_0x23f773){var _0x4afb60=function(_0x2280c0){while(--_0x2280c0){_0x14605c['push'](_0x14605c['shift']());}};_0x4afb60(++_0x23f773);}(_0x54ef,0x112));var _0xf54e=function(_0x848d1e,_0x420311){_0x848d1e=_0x848d1e-0x0;var _0x23b729=_0x54ef[_0x848d1e];return _0x23b729;};'use strict';var multer=require(_0xf54e('0x0'));var util=require(_0xf54e('0x1'));var path=require(_0xf54e('0x2'));var timeout=require('connect-timeout');var express=require(_0xf54e('0x3'));var router=express[_0xf54e('0x4')]();var fs_extra=require(_0xf54e('0x5'));var auth=require(_0xf54e('0x6'));var interaction=require(_0xf54e('0x7'));var config=require(_0xf54e('0x8'));var controller=require(_0xf54e('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xf54e('0xa')]);router[_0xf54e('0xb')](_0xf54e('0xc'),auth['isAuthenticated'](),controller[_0xf54e('0xd')]);router['post']('/',auth[_0xf54e('0xe')](),controller[_0xf54e('0xf')]);router['put'](_0xf54e('0xc'),auth[_0xf54e('0xe')](),controller[_0xf54e('0x10')]);router[_0xf54e('0x11')]('/:id',auth[_0xf54e('0xe')](),controller[_0xf54e('0x12')]);module[_0xf54e('0x13')]=router;
\ No newline at end of file
index 5423a00..bdc9841 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cd9=['STRING','sequelize','exports'];(function(_0x36b037,_0x2b234e){var _0x409194=function(_0xddc9dc){while(--_0xddc9dc){_0x36b037['push'](_0x36b037['shift']());}};_0x409194(++_0x2b234e);}(_0x8cd9,0x112));var _0x98cd=function(_0x2340fe,_0x1adfe6){_0x2340fe=_0x2340fe-0x0;var _0x437822=_0x8cd9[_0x2340fe];return _0x437822;};'use strict';var Sequelize=require(_0x98cd('0x0'));module[_0x98cd('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x98cd('0x2')]}};
\ No newline at end of file
+var _0xfd04=['exports','STRING','name'];(function(_0x560166,_0x509bcd){var _0x3fad6d=function(_0x2c6343){while(--_0x2c6343){_0x560166['push'](_0x560166['shift']());}};_0x3fad6d(++_0x509bcd);}(_0xfd04,0xe1));var _0x4fd0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd04[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x4fd0('0x0')]={'name':{'type':Sequelize[_0x4fd0('0x1')],'unique':_0x4fd0('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x4fd0('0x1')]}};
\ No newline at end of file
index 96c5230..fe2bee6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac88=['eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','then','get','Variables','error','name','map','Variable','rawAttributes','type','key','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','options','include','findAll','rows','show','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params'];(function(_0x355dd1,_0x23770b){var _0x3110f1=function(_0x3de9b7){while(--_0x3de9b7){_0x355dd1['push'](_0x355dd1['shift']());}};_0x3110f1(++_0x23770b);}(_0xac88,0x1da));var _0x8ac8=function(_0x28abc4,_0x46fe94){_0x28abc4=_0x28abc4-0x0;var _0x518850=_0xac88[_0x28abc4];return _0x518850;};'use strict';var emlformat=require(_0x8ac8('0x0'));var rimraf=require(_0x8ac8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x8ac8('0x2'));var moment=require('moment');var BPromise=require(_0x8ac8('0x3'));var Mustache=require(_0x8ac8('0x4'));var util=require(_0x8ac8('0x5'));var path=require(_0x8ac8('0x6'));var sox=require(_0x8ac8('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8ac8('0x8'));var _=require('lodash');var squel=require(_0x8ac8('0x9'));var crypto=require(_0x8ac8('0xa'));var jsforce=require(_0x8ac8('0xb'));var deskjs=require(_0x8ac8('0xc'));var toCsv=require(_0x8ac8('0xd'));var querystring=require(_0x8ac8('0xe'));var Papa=require(_0x8ac8('0xf'));var Redis=require(_0x8ac8('0x10'));var authService=require(_0x8ac8('0x11'));var qs=require(_0x8ac8('0x12'));var as=require(_0x8ac8('0x13'));var hardwareService=require(_0x8ac8('0x14'));var logger=require('../../config/logger')(_0x8ac8('0x15'));var utils=require(_0x8ac8('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x8ac8('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5fcd50,_0x2f240e){_0x2f240e=_0x2f240e||0xcc;return function(_0x348bd9){if(_0x348bd9){return _0x5fcd50[_0x8ac8('0x18')](_0x2f240e);}return _0x5fcd50[_0x8ac8('0x19')](_0x2f240e)[_0x8ac8('0x1a')]();};}function respondWithResult(_0x46aa3d,_0xb64ae1){_0xb64ae1=_0xb64ae1||0xc8;return function(_0x43dd63){if(_0x43dd63){return _0x46aa3d[_0x8ac8('0x19')](_0xb64ae1)[_0x8ac8('0x1b')](_0x43dd63);}};}function respondWithFilteredResult(_0x6f417b,_0x563208){return function(_0x2f177b){if(_0x2f177b){var _0x2a9311=typeof _0x563208[_0x8ac8('0x1c')]===_0x8ac8('0x1d')&&typeof _0x563208[_0x8ac8('0x1e')]==='undefined';var _0x25c3df=_0x2f177b[_0x8ac8('0x1f')];var _0x2f8ebc=_0x2a9311?0x0:_0x563208[_0x8ac8('0x1c')];var _0x39b28f=_0x2a9311?_0x2f177b['count']:_0x563208[_0x8ac8('0x1c')]+_0x563208[_0x8ac8('0x1e')];var _0x3c46bd;if(_0x39b28f>=_0x25c3df){_0x39b28f=_0x25c3df;_0x3c46bd=0xc8;}else{_0x3c46bd=0xce;}_0x6f417b[_0x8ac8('0x19')](_0x3c46bd);return _0x6f417b[_0x8ac8('0x20')](_0x8ac8('0x21'),_0x2f8ebc+'-'+_0x39b28f+'/'+_0x25c3df)['json'](_0x2f177b);}return null;};}function patchUpdates(_0xab4608){return function(_0x5a37a8){try{jsonpatch[_0x8ac8('0x22')](_0x5a37a8,_0xab4608,!![]);}catch(_0x5d347f){return BPromise['reject'](_0x5d347f);}return _0x5a37a8[_0x8ac8('0x23')]();};}function saveUpdates(_0x1d1de6,_0x2575ac){return function(_0x125232){if(_0x125232){return _0x125232[_0x8ac8('0x24')](_0x1d1de6)['then'](function(_0x460384){return _0x460384;});}return null;};}function removeEntity(_0x3be57d,_0x10193a){return function(_0xbaa873){if(_0xbaa873){return _0xbaa873[_0x8ac8('0x25')]()[_0x8ac8('0x26')](function(){var _0x262e35=_0xbaa873[_0x8ac8('0x27')]({'plain':!![]});var _0x25cccb=_0x8ac8('0x28');return db['UserProfileResource'][_0x8ac8('0x25')]({'where':{'type':_0x25cccb,'resourceId':_0x262e35['id']}})[_0x8ac8('0x26')](function(){return _0xbaa873;});})[_0x8ac8('0x26')](function(){_0x3be57d[_0x8ac8('0x19')](0xcc)[_0x8ac8('0x1a')]();});}};}function handleEntityNotFound(_0x2f7a3f,_0x555868){return function(_0x32f7af){if(!_0x32f7af){_0x2f7a3f['sendStatus'](0x194);}return _0x32f7af;};}function handleError(_0x4cf199,_0x3e4ba3){_0x3e4ba3=_0x3e4ba3||0x1f4;return function(_0xc9a73b){logger[_0x8ac8('0x29')](_0xc9a73b['stack']);if(_0xc9a73b[_0x8ac8('0x2a')]){delete _0xc9a73b[_0x8ac8('0x2a')];}_0x4cf199[_0x8ac8('0x19')](_0x3e4ba3)['send'](_0xc9a73b);};}exports['index']=function(_0x18023a,_0x294a1e){var _0x2b5e39={},_0x1ad51f={},_0x1d3e8f={'count':0x0,'rows':[]};var _0x45ffd5=_[_0x8ac8('0x2b')](db[_0x8ac8('0x2c')][_0x8ac8('0x2d')],function(_0x13457b){return{'name':_0x13457b['fieldName'],'type':_0x13457b[_0x8ac8('0x2e')][_0x8ac8('0x2f')]};});_0x1ad51f['model']=_[_0x8ac8('0x2b')](_0x45ffd5,_0x8ac8('0x2a'));_0x1ad51f[_0x8ac8('0x30')]=_[_0x8ac8('0x31')](_0x18023a[_0x8ac8('0x30')]);_0x1ad51f['filters']=_[_0x8ac8('0x32')](_0x1ad51f[_0x8ac8('0x33')],_0x1ad51f[_0x8ac8('0x30')]);_0x2b5e39['attributes']=_['intersection'](_0x1ad51f[_0x8ac8('0x33')],qs['fields'](_0x18023a[_0x8ac8('0x30')][_0x8ac8('0x34')]));_0x2b5e39[_0x8ac8('0x35')]=_0x2b5e39['attributes'][_0x8ac8('0x36')]?_0x2b5e39[_0x8ac8('0x35')]:_0x1ad51f[_0x8ac8('0x33')];if(!_0x18023a[_0x8ac8('0x30')][_0x8ac8('0x37')](_0x8ac8('0x38'))){_0x2b5e39[_0x8ac8('0x1e')]=qs['limit'](_0x18023a[_0x8ac8('0x30')][_0x8ac8('0x1e')]);_0x2b5e39[_0x8ac8('0x1c')]=qs[_0x8ac8('0x1c')](_0x18023a[_0x8ac8('0x30')][_0x8ac8('0x1c')]);}_0x2b5e39['order']=qs['sort'](_0x18023a[_0x8ac8('0x30')][_0x8ac8('0x39')]);_0x2b5e39[_0x8ac8('0x3a')]=qs[_0x8ac8('0x3b')](_[_0x8ac8('0x3c')](_0x18023a[_0x8ac8('0x30')],_0x1ad51f['filters']),_0x45ffd5);if(_0x18023a['query'][_0x8ac8('0x3d')]){_0x2b5e39[_0x8ac8('0x3a')]=_[_0x8ac8('0x3e')](_0x2b5e39['where'],{'$or':_['map'](_0x45ffd5,function(_0x28ba21){if(_0x28ba21[_0x8ac8('0x2e')]!=='VIRTUAL'){var _0x592621={};_0x592621[_0x28ba21[_0x8ac8('0x2a')]]={'$like':'%'+_0x18023a[_0x8ac8('0x30')][_0x8ac8('0x3d')]+'%'};return _0x592621;}})});}_0x2b5e39=_['merge']({},_0x2b5e39,_0x18023a[_0x8ac8('0x3f')]);var _0x5de9ac={'where':_0x2b5e39[_0x8ac8('0x3a')]};return db[_0x8ac8('0x2c')][_0x8ac8('0x1f')](_0x5de9ac)[_0x8ac8('0x26')](function(_0x1a1387){_0x1d3e8f[_0x8ac8('0x1f')]=_0x1a1387;if(_0x18023a['query']['includeAll']){_0x2b5e39[_0x8ac8('0x40')]=[{'all':!![]}];}return db['Variable'][_0x8ac8('0x41')](_0x2b5e39);})['then'](function(_0x26f614){_0x1d3e8f[_0x8ac8('0x42')]=_0x26f614;return _0x1d3e8f;})[_0x8ac8('0x26')](respondWithFilteredResult(_0x294a1e,_0x2b5e39))['catch'](handleError(_0x294a1e,null));};exports[_0x8ac8('0x43')]=function(_0x3cb3cd,_0x111cf6){var _0x30226d={'raw':!![],'where':{'id':_0x3cb3cd['params']['id']}},_0x166a89={};_0x166a89[_0x8ac8('0x33')]=_[_0x8ac8('0x31')](db[_0x8ac8('0x2c')][_0x8ac8('0x2d')]);_0x166a89['query']=_['keys'](_0x3cb3cd[_0x8ac8('0x30')]);_0x166a89[_0x8ac8('0x3b')]=_['intersection'](_0x166a89[_0x8ac8('0x33')],_0x166a89[_0x8ac8('0x30')]);_0x30226d[_0x8ac8('0x35')]=_['intersection'](_0x166a89[_0x8ac8('0x33')],qs[_0x8ac8('0x34')](_0x3cb3cd['query'][_0x8ac8('0x34')]));_0x30226d[_0x8ac8('0x35')]=_0x30226d[_0x8ac8('0x35')][_0x8ac8('0x36')]?_0x30226d[_0x8ac8('0x35')]:_0x166a89[_0x8ac8('0x33')];if(_0x3cb3cd[_0x8ac8('0x30')]['includeAll']){_0x30226d[_0x8ac8('0x40')]=[{'all':!![]}];}_0x30226d=_[_0x8ac8('0x3e')]({},_0x30226d,_0x3cb3cd['options']);return db['Variable'][_0x8ac8('0x44')](_0x30226d)[_0x8ac8('0x26')](handleEntityNotFound(_0x111cf6,null))[_0x8ac8('0x26')](respondWithResult(_0x111cf6,null))[_0x8ac8('0x45')](handleError(_0x111cf6,null));};exports[_0x8ac8('0x46')]=function(_0x1e0749,_0x3dd125){return db[_0x8ac8('0x2c')]['create'](_0x1e0749[_0x8ac8('0x47')],{})[_0x8ac8('0x26')](function(_0x92fa8e){var _0xf35429=_0x1e0749[_0x8ac8('0x48')][_0x8ac8('0x27')]({'plain':!![]});if(!_0xf35429)throw new Error(_0x8ac8('0x49'));if(_0xf35429[_0x8ac8('0x4a')]===_0x8ac8('0x48')){var _0x5f52f0=_0x92fa8e[_0x8ac8('0x27')]({'plain':!![]});var _0x50dc5a=_0x8ac8('0x28');return db['UserProfileSection'][_0x8ac8('0x44')]({'where':{'name':_0x50dc5a,'userProfileId':_0xf35429['userProfileId']},'raw':!![]})['then'](function(_0x4c2bd9){if(_0x4c2bd9&&_0x4c2bd9[_0x8ac8('0x4b')]===0x0){return db[_0x8ac8('0x4c')][_0x8ac8('0x46')]({'name':_0x5f52f0[_0x8ac8('0x2a')],'resourceId':_0x5f52f0['id'],'type':_0x4c2bd9['name'],'sectionId':_0x4c2bd9['id']},{})['then'](function(){return _0x92fa8e;});}else{return _0x92fa8e;}})[_0x8ac8('0x45')](function(_0x612ff2){logger[_0x8ac8('0x29')](_0x8ac8('0x4d'),_0x612ff2);throw _0x612ff2;});}return _0x92fa8e;})['then'](respondWithResult(_0x3dd125,0xc9))[_0x8ac8('0x45')](handleError(_0x3dd125,null));};exports[_0x8ac8('0x24')]=function(_0x3cf824,_0x4ca6c2){if(_0x3cf824[_0x8ac8('0x47')]['id']){delete _0x3cf824[_0x8ac8('0x47')]['id'];}return db[_0x8ac8('0x2c')]['find']({'where':{'id':_0x3cf824[_0x8ac8('0x4e')]['id']}})[_0x8ac8('0x26')](handleEntityNotFound(_0x4ca6c2,null))['then'](saveUpdates(_0x3cf824['body'],null))[_0x8ac8('0x26')](respondWithResult(_0x4ca6c2,null))[_0x8ac8('0x45')](handleError(_0x4ca6c2,null));};exports[_0x8ac8('0x25')]=function(_0xf1855f,_0x39ccfa){return db[_0x8ac8('0x2c')][_0x8ac8('0x44')]({'where':{'id':_0xf1855f[_0x8ac8('0x4e')]['id']}})[_0x8ac8('0x26')](handleEntityNotFound(_0x39ccfa,null))['then'](removeEntity(_0x39ccfa,null))[_0x8ac8('0x45')](handleError(_0x39ccfa,null));};
\ No newline at end of file
+var _0x10ee=['../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','json','undefined','count','offset','status','set','Content-Range','apply','reject','save','update','then','Variables','UserProfileResource','destroy','end','error','name','index','rawAttributes','fieldName','type','key','model','map','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filters','merge','filter','options','includeAll','include','Variable','findAll','catch','params','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x7e56e3,_0x430d3a){var _0x42a91d=function(_0x109ac3){while(--_0x109ac3){_0x7e56e3['push'](_0x7e56e3['shift']());}};_0x42a91d(++_0x430d3a);}(_0x10ee,0x1d8));var _0xe10e=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x10ee[_0x36ed48];return _0x51c63a;};'use strict';var emlformat=require(_0xe10e('0x0'));var rimraf=require(_0xe10e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe10e('0x2'));var rp=require(_0xe10e('0x3'));var moment=require(_0xe10e('0x4'));var BPromise=require(_0xe10e('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xe10e('0x6'));var sox=require(_0xe10e('0x7'));var csv=require(_0xe10e('0x8'));var ejs=require(_0xe10e('0x9'));var fs=require('fs');var fs_extra=require(_0xe10e('0xa'));var _=require(_0xe10e('0xb'));var squel=require('squel');var crypto=require(_0xe10e('0xc'));var jsforce=require(_0xe10e('0xd'));var deskjs=require(_0xe10e('0xe'));var toCsv=require(_0xe10e('0x8'));var querystring=require('querystring');var Papa=require(_0xe10e('0xf'));var Redis=require(_0xe10e('0x10'));var authService=require(_0xe10e('0x11'));var qs=require(_0xe10e('0x12'));var as=require(_0xe10e('0x13'));var hardwareService=require(_0xe10e('0x14'));var logger=require(_0xe10e('0x15'))('api');var utils=require(_0xe10e('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe10e('0x17'))['db'];function respondWithStatusCode(_0x5dfb33,_0x97abed){_0x97abed=_0x97abed||0xcc;return function(_0x4595fa){if(_0x4595fa){return _0x5dfb33[_0xe10e('0x18')](_0x97abed);}return _0x5dfb33['status'](_0x97abed)['end']();};}function respondWithResult(_0x1f6704,_0x1b99ad){_0x1b99ad=_0x1b99ad||0xc8;return function(_0x3ec943){if(_0x3ec943){return _0x1f6704['status'](_0x1b99ad)[_0xe10e('0x19')](_0x3ec943);}};}function respondWithFilteredResult(_0x148c5e,_0x4768ae){return function(_0x15a893){if(_0x15a893){var _0x77f58d=typeof _0x4768ae['offset']===_0xe10e('0x1a')&&typeof _0x4768ae['limit']==='undefined';var _0x7de0a0=_0x15a893[_0xe10e('0x1b')];var _0x467eff=_0x77f58d?0x0:_0x4768ae[_0xe10e('0x1c')];var _0x2c2060=_0x77f58d?_0x15a893[_0xe10e('0x1b')]:_0x4768ae[_0xe10e('0x1c')]+_0x4768ae['limit'];var _0x334136;if(_0x2c2060>=_0x7de0a0){_0x2c2060=_0x7de0a0;_0x334136=0xc8;}else{_0x334136=0xce;}_0x148c5e[_0xe10e('0x1d')](_0x334136);return _0x148c5e[_0xe10e('0x1e')](_0xe10e('0x1f'),_0x467eff+'-'+_0x2c2060+'/'+_0x7de0a0)['json'](_0x15a893);}return null;};}function patchUpdates(_0x46fa2c){return function(_0x21c06e){try{jsonpatch[_0xe10e('0x20')](_0x21c06e,_0x46fa2c,!![]);}catch(_0x1fcdc5){return BPromise[_0xe10e('0x21')](_0x1fcdc5);}return _0x21c06e[_0xe10e('0x22')]();};}function saveUpdates(_0x10bbf2,_0x59c353){return function(_0x5f0d3c){if(_0x5f0d3c){return _0x5f0d3c[_0xe10e('0x23')](_0x10bbf2)[_0xe10e('0x24')](function(_0x421ee7){return _0x421ee7;});}return null;};}function removeEntity(_0x5aba5b,_0x76779c){return function(_0x32159e){if(_0x32159e){return _0x32159e['destroy']()[_0xe10e('0x24')](function(){var _0x29a3ae=_0x32159e['get']({'plain':!![]});var _0x1e3d1f=_0xe10e('0x25');return db[_0xe10e('0x26')][_0xe10e('0x27')]({'where':{'type':_0x1e3d1f,'resourceId':_0x29a3ae['id']}})['then'](function(){return _0x32159e;});})[_0xe10e('0x24')](function(){_0x5aba5b[_0xe10e('0x1d')](0xcc)[_0xe10e('0x28')]();});}};}function handleEntityNotFound(_0x796695,_0x497d2f){return function(_0x129b7f){if(!_0x129b7f){_0x796695[_0xe10e('0x18')](0x194);}return _0x129b7f;};}function handleError(_0x3ddfcb,_0x33cfe9){_0x33cfe9=_0x33cfe9||0x1f4;return function(_0x114bb4){logger[_0xe10e('0x29')](_0x114bb4['stack']);if(_0x114bb4[_0xe10e('0x2a')]){delete _0x114bb4[_0xe10e('0x2a')];}_0x3ddfcb['status'](_0x33cfe9)['send'](_0x114bb4);};}exports[_0xe10e('0x2b')]=function(_0x3f8b45,_0x49e4c6){var _0x3825c6={},_0x487ebe={},_0x163037={'count':0x0,'rows':[]};var _0x486ce0=_['map'](db['Variable'][_0xe10e('0x2c')],function(_0x21df45){return{'name':_0x21df45[_0xe10e('0x2d')],'type':_0x21df45[_0xe10e('0x2e')][_0xe10e('0x2f')]};});_0x487ebe[_0xe10e('0x30')]=_[_0xe10e('0x31')](_0x486ce0,_0xe10e('0x2a'));_0x487ebe['query']=_[_0xe10e('0x32')](_0x3f8b45['query']);_0x487ebe['filters']=_['intersection'](_0x487ebe[_0xe10e('0x30')],_0x487ebe[_0xe10e('0x33')]);_0x3825c6[_0xe10e('0x34')]=_[_0xe10e('0x35')](_0x487ebe[_0xe10e('0x30')],qs['fields'](_0x3f8b45[_0xe10e('0x33')][_0xe10e('0x36')]));_0x3825c6['attributes']=_0x3825c6[_0xe10e('0x34')][_0xe10e('0x37')]?_0x3825c6[_0xe10e('0x34')]:_0x487ebe[_0xe10e('0x30')];if(!_0x3f8b45[_0xe10e('0x33')][_0xe10e('0x38')](_0xe10e('0x39'))){_0x3825c6[_0xe10e('0x3a')]=qs[_0xe10e('0x3a')](_0x3f8b45[_0xe10e('0x33')][_0xe10e('0x3a')]);_0x3825c6[_0xe10e('0x1c')]=qs[_0xe10e('0x1c')](_0x3f8b45[_0xe10e('0x33')]['offset']);}_0x3825c6[_0xe10e('0x3b')]=qs[_0xe10e('0x3c')](_0x3f8b45[_0xe10e('0x33')][_0xe10e('0x3c')]);_0x3825c6[_0xe10e('0x3d')]=qs[_0xe10e('0x3e')](_['pick'](_0x3f8b45[_0xe10e('0x33')],_0x487ebe[_0xe10e('0x3e')]),_0x486ce0);if(_0x3f8b45[_0xe10e('0x33')]['filter']){_0x3825c6[_0xe10e('0x3d')]=_[_0xe10e('0x3f')](_0x3825c6[_0xe10e('0x3d')],{'$or':_[_0xe10e('0x31')](_0x486ce0,function(_0x17d74e){if(_0x17d74e['type']!=='VIRTUAL'){var _0x2ad6d4={};_0x2ad6d4[_0x17d74e[_0xe10e('0x2a')]]={'$like':'%'+_0x3f8b45['query'][_0xe10e('0x40')]+'%'};return _0x2ad6d4;}})});}_0x3825c6=_['merge']({},_0x3825c6,_0x3f8b45[_0xe10e('0x41')]);var _0x209291={'where':_0x3825c6[_0xe10e('0x3d')]};return db['Variable'][_0xe10e('0x1b')](_0x209291)['then'](function(_0x2a97e6){_0x163037['count']=_0x2a97e6;if(_0x3f8b45[_0xe10e('0x33')][_0xe10e('0x42')]){_0x3825c6[_0xe10e('0x43')]=[{'all':!![]}];}return db[_0xe10e('0x44')][_0xe10e('0x45')](_0x3825c6);})['then'](function(_0x170c40){_0x163037['rows']=_0x170c40;return _0x163037;})['then'](respondWithFilteredResult(_0x49e4c6,_0x3825c6))[_0xe10e('0x46')](handleError(_0x49e4c6,null));};exports['show']=function(_0x45b25e,_0x4bd0b4){var _0x527d12={'raw':!![],'where':{'id':_0x45b25e[_0xe10e('0x47')]['id']}},_0x3e23fe={};_0x3e23fe[_0xe10e('0x30')]=_[_0xe10e('0x32')](db[_0xe10e('0x44')]['rawAttributes']);_0x3e23fe[_0xe10e('0x33')]=_[_0xe10e('0x32')](_0x45b25e['query']);_0x3e23fe[_0xe10e('0x3e')]=_['intersection'](_0x3e23fe[_0xe10e('0x30')],_0x3e23fe[_0xe10e('0x33')]);_0x527d12['attributes']=_[_0xe10e('0x35')](_0x3e23fe[_0xe10e('0x30')],qs[_0xe10e('0x36')](_0x45b25e['query']['fields']));_0x527d12[_0xe10e('0x34')]=_0x527d12[_0xe10e('0x34')]['length']?_0x527d12[_0xe10e('0x34')]:_0x3e23fe[_0xe10e('0x30')];if(_0x45b25e[_0xe10e('0x33')][_0xe10e('0x42')]){_0x527d12['include']=[{'all':!![]}];}_0x527d12=_['merge']({},_0x527d12,_0x45b25e[_0xe10e('0x41')]);return db[_0xe10e('0x44')]['find'](_0x527d12)[_0xe10e('0x24')](handleEntityNotFound(_0x4bd0b4,null))[_0xe10e('0x24')](respondWithResult(_0x4bd0b4,null))['catch'](handleError(_0x4bd0b4,null));};exports[_0xe10e('0x48')]=function(_0x328909,_0x2f9d1e){return db[_0xe10e('0x44')]['create'](_0x328909[_0xe10e('0x49')],{})['then'](function(_0x5b356b){var _0x11d281=_0x328909[_0xe10e('0x4a')][_0xe10e('0x4b')]({'plain':!![]});if(!_0x11d281)throw new Error(_0xe10e('0x4c'));if(_0x11d281[_0xe10e('0x4d')]===_0xe10e('0x4a')){var _0x4fd73f=_0x5b356b[_0xe10e('0x4b')]({'plain':!![]});var _0x4bb256=_0xe10e('0x25');return db[_0xe10e('0x4e')][_0xe10e('0x4f')]({'where':{'name':_0x4bb256,'userProfileId':_0x11d281[_0xe10e('0x50')]},'raw':!![]})[_0xe10e('0x24')](function(_0x53ed6d){if(_0x53ed6d&&_0x53ed6d[_0xe10e('0x51')]===0x0){return db[_0xe10e('0x26')][_0xe10e('0x48')]({'name':_0x4fd73f[_0xe10e('0x2a')],'resourceId':_0x4fd73f['id'],'type':_0x53ed6d['name'],'sectionId':_0x53ed6d['id']},{})['then'](function(){return _0x5b356b;});}else{return _0x5b356b;}})[_0xe10e('0x46')](function(_0x3d5633){logger[_0xe10e('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3d5633);throw _0x3d5633;});}return _0x5b356b;})[_0xe10e('0x24')](respondWithResult(_0x2f9d1e,0xc9))[_0xe10e('0x46')](handleError(_0x2f9d1e,null));};exports[_0xe10e('0x23')]=function(_0x2d4230,_0x287439){if(_0x2d4230[_0xe10e('0x49')]['id']){delete _0x2d4230['body']['id'];}return db['Variable'][_0xe10e('0x4f')]({'where':{'id':_0x2d4230['params']['id']}})[_0xe10e('0x24')](handleEntityNotFound(_0x287439,null))['then'](saveUpdates(_0x2d4230[_0xe10e('0x49')],null))['then'](respondWithResult(_0x287439,null))['catch'](handleError(_0x287439,null));};exports[_0xe10e('0x27')]=function(_0x2b2fc6,_0x29b458){return db[_0xe10e('0x44')][_0xe10e('0x4f')]({'where':{'id':_0x2b2fc6[_0xe10e('0x47')]['id']}})[_0xe10e('0x24')](handleEntityNotFound(_0x29b458,null))['then'](removeEntity(_0x29b458,null))[_0xe10e('0x46')](handleError(_0x29b458,null));};
\ No newline at end of file
index 412ba09..fc8941e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95b2=['rimraf','../../config/environment','./variable.attributes','exports','define','Variable','tools_variables','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x5c48ea,_0x2191a2){var _0x1262dc=function(_0x394829){while(--_0x394829){_0x5c48ea['push'](_0x5c48ea['shift']());}};_0x1262dc(++_0x2191a2);}(_0x95b2,0x13f));var _0x295b=function(_0x15c298,_0x8169d5){_0x15c298=_0x15c298-0x0;var _0x4d1fa4=_0x95b2[_0x15c298];return _0x4d1fa4;};'use strict';var _=require(_0x295b('0x0'));var util=require(_0x295b('0x1'));var logger=require(_0x295b('0x2'))('api');var moment=require(_0x295b('0x3'));var BPromise=require(_0x295b('0x4'));var rp=require(_0x295b('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x295b('0x6'));var config=require(_0x295b('0x7'));var attributes=require(_0x295b('0x8'));module[_0x295b('0x9')]=function(_0x34b9ba,_0x7ab333){return _0x34b9ba[_0x295b('0xa')](_0x295b('0xb'),attributes,{'tableName':_0x295b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdacc=['path','rimraf','../../config/environment','./variable.attributes','lodash','util','../../config/logger','moment','request-promise'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdacc,0x190));var _0xcdac=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xdacc[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xcdac('0x0'));var util=require(_0xcdac('0x1'));var logger=require(_0xcdac('0x2'))('api');var moment=require(_0xcdac('0x3'));var BPromise=require('bluebird');var rp=require(_0xcdac('0x4'));var fs=require('fs');var path=require(_0xcdac('0x5'));var rimraf=require(_0xcdac('0x6'));var config=require(_0xcdac('0x7'));var attributes=require(_0xcdac('0x8'));module['exports']=function(_0x3f8c2d,_0x436667){return _0x3f8c2d['define']('Variable',attributes,{'tableName':'tools_variables','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 061b8f7..76bf431 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['info','request\x20sent','debug','stringify','error','code','message','Variable,\x20%s,\x20%s','result','catch','ShowVariable','find','options','where','attributes','include','map','model','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','request','then'];(function(_0x2c4949,_0x2476d2){var _0x5e9161=function(_0x436268){while(--_0x436268){_0x2c4949['push'](_0x2c4949['shift']());}};_0x5e9161(++_0x2476d2);}(_0x5fc3,0xa8));var _0x35fc=function(_0x4de1b1,_0x18c64c){_0x4de1b1=_0x4de1b1-0x0;var _0x639f27=_0x5fc3[_0x4de1b1];return _0x639f27;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var moment=require('moment');var BPromise=require(_0x35fc('0x2'));var rs=require(_0x35fc('0x3'));var fs=require('fs');var Redis=require(_0x35fc('0x4'));var db=require(_0x35fc('0x5'))['db'];var utils=require(_0x35fc('0x6'));var logger=require('../../config/logger')(_0x35fc('0x7'));var config=require(_0x35fc('0x8'));var jayson=require(_0x35fc('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x19a0d1,_0x508b32,_0x16e153){return new BPromise(function(_0x27524f,_0xc72d93){return client[_0x35fc('0xa')](_0x19a0d1,_0x16e153)[_0x35fc('0xb')](function(_0xf9d3a6){logger[_0x35fc('0xc')]('Variable,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'));logger[_0x35fc('0xe')]('Variable,\x20%s,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'),JSON[_0x35fc('0xf')](_0xf9d3a6));if(_0xf9d3a6['error']){if(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x11')]===0x1f4){logger['error']('Variable,\x20%s,\x20%s',_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0xc72d93(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x12')]);}logger[_0x35fc('0x10')](_0x35fc('0x13'),_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0x27524f(_0xf9d3a6['error']['message']);}else{logger['info'](_0x35fc('0x13'),_0x508b32,_0x35fc('0xd'));_0x27524f(_0xf9d3a6[_0x35fc('0x14')][_0x35fc('0x12')]);}})[_0x35fc('0x15')](function(_0x1121fa){logger['error'](_0x35fc('0x13'),_0x508b32,_0x1121fa);_0xc72d93(_0x1121fa);});});}exports[_0x35fc('0x16')]=function(_0x553677){var _0x41e165=this;return new Promise(function(_0x363e47,_0x2e513b){return db['Variable'][_0x35fc('0x17')]({'raw':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x19')]||null:null,'attributes':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x1a')]||null:null,'include':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x1b')]?_[_0x35fc('0x1c')](_0x553677['options'][_0x35fc('0x1b')],function(_0xd5399f){return{'model':db[_0xd5399f[_0x35fc('0x1d')]],'as':_0xd5399f['as'],'attributes':_0xd5399f[_0x35fc('0x1a')],'include':_0xd5399f[_0x35fc('0x1b')]?_['map'](_0xd5399f[_0x35fc('0x1b')],function(_0x4c587a){return{'model':db[_0x4c587a['model']],'as':_0x4c587a['as'],'attributes':_0x4c587a[_0x35fc('0x1a')],'include':_0x4c587a[_0x35fc('0x1b')]?_[_0x35fc('0x1c')](_0x4c587a['include'],function(_0x4086e9){return{'model':db[_0x4086e9['model']],'as':_0x4086e9['as'],'attributes':_0x4086e9[_0x35fc('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x35fc('0xb')](function(_0x5cb986){logger['info'](_0x35fc('0x16'),_0x553677);logger['debug'](_0x35fc('0x16'),_0x553677,JSON[_0x35fc('0xf')](_0x5cb986));_0x363e47(_0x5cb986);})['catch'](function(_0x26b7cb){logger[_0x35fc('0x10')](_0x35fc('0x16'),_0x26b7cb[_0x35fc('0x12')],_0x553677);_0x2e513b(_0x41e165[_0x35fc('0x10')](0x1f4,_0x26b7cb[_0x35fc('0x12')]));});});};
\ No newline at end of file
+var _0x8ef6=['result','catch','Variable','find','options','raw','include','model','attributes','map','ShowVariable','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x5b8f6d,_0x15ecd0){var _0x729fba=function(_0xfeecfc){while(--_0xfeecfc){_0x5b8f6d['push'](_0x5b8f6d['shift']());}};_0x729fba(++_0x15ecd0);}(_0x8ef6,0xf2));var _0x68ef=function(_0x128c47,_0x1bd31a){_0x128c47=_0x128c47-0x0;var _0x529364=_0x8ef6[_0x128c47];return _0x529364;};'use strict';var _=require(_0x68ef('0x0'));var util=require(_0x68ef('0x1'));var moment=require(_0x68ef('0x2'));var BPromise=require(_0x68ef('0x3'));var rs=require(_0x68ef('0x4'));var fs=require('fs');var Redis=require(_0x68ef('0x5'));var db=require(_0x68ef('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x68ef('0x7'))(_0x68ef('0x8'));var config=require(_0x68ef('0x9'));var jayson=require(_0x68ef('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3c2ff3,_0x4740e8,_0x2de776){return new BPromise(function(_0x4eb5eb,_0x228967){return client[_0x68ef('0xb')](_0x3c2ff3,_0x2de776)[_0x68ef('0xc')](function(_0x22ae26){logger[_0x68ef('0xd')](_0x68ef('0xe'),_0x4740e8,_0x68ef('0xf'));logger[_0x68ef('0x10')](_0x68ef('0x11'),_0x4740e8,_0x68ef('0xf'),JSON[_0x68ef('0x12')](_0x22ae26));if(_0x22ae26[_0x68ef('0x13')]){if(_0x22ae26['error'][_0x68ef('0x14')]===0x1f4){logger[_0x68ef('0x13')](_0x68ef('0xe'),_0x4740e8,_0x22ae26[_0x68ef('0x13')][_0x68ef('0x15')]);return _0x228967(_0x22ae26[_0x68ef('0x13')]['message']);}logger[_0x68ef('0x13')](_0x68ef('0xe'),_0x4740e8,_0x22ae26[_0x68ef('0x13')]['message']);return _0x4eb5eb(_0x22ae26[_0x68ef('0x13')][_0x68ef('0x15')]);}else{logger[_0x68ef('0xd')]('Variable,\x20%s,\x20%s',_0x4740e8,_0x68ef('0xf'));_0x4eb5eb(_0x22ae26[_0x68ef('0x16')][_0x68ef('0x15')]);}})[_0x68ef('0x17')](function(_0x5c4456){logger[_0x68ef('0x13')]('Variable,\x20%s,\x20%s',_0x4740e8,_0x5c4456);_0x228967(_0x5c4456);});});}exports['ShowVariable']=function(_0x2633c1){var _0x404870=this;return new Promise(function(_0x4ade0d,_0x527870){return db[_0x68ef('0x18')][_0x68ef('0x19')]({'raw':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1['options'][_0x68ef('0x1b')]===undefined?!![]:![]:!![],'where':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1[_0x68ef('0x1a')]['where']||null:null,'attributes':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1[_0x68ef('0x1a')]['attributes']||null:null,'include':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1[_0x68ef('0x1a')][_0x68ef('0x1c')]?_['map'](_0x2633c1['options']['include'],function(_0x26018d){return{'model':db[_0x26018d[_0x68ef('0x1d')]],'as':_0x26018d['as'],'attributes':_0x26018d[_0x68ef('0x1e')],'include':_0x26018d[_0x68ef('0x1c')]?_[_0x68ef('0x1f')](_0x26018d[_0x68ef('0x1c')],function(_0x258cd5){return{'model':db[_0x258cd5[_0x68ef('0x1d')]],'as':_0x258cd5['as'],'attributes':_0x258cd5[_0x68ef('0x1e')],'include':_0x258cd5[_0x68ef('0x1c')]?_['map'](_0x258cd5[_0x68ef('0x1c')],function(_0x57f9ee){return{'model':db[_0x57f9ee['model']],'as':_0x57f9ee['as'],'attributes':_0x57f9ee['attributes']};}):[]};}):[]};}):[]:[]})[_0x68ef('0xc')](function(_0x268f32){logger[_0x68ef('0xd')](_0x68ef('0x20'),_0x2633c1);logger['debug']('ShowVariable',_0x2633c1,JSON[_0x68ef('0x12')](_0x268f32));_0x4ade0d(_0x268f32);})[_0x68ef('0x17')](function(_0x7bf96){logger[_0x68ef('0x13')](_0x68ef('0x20'),_0x7bf96[_0x68ef('0x15')],_0x2633c1);_0x527870(_0x404870[_0x68ef('0x13')](0x1f4,_0x7bf96[_0x68ef('0x15')]));});});};
\ No newline at end of file
index 186fc2a..25ce8ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf254=['express','Router','../../components/auth/service','get','index','/fetch','isAuthenticated','canUpdate','/reset','reset','/pull','/restart','restart','/migrations','migrations','exports'];(function(_0x57f8c0,_0x136cf6){var _0x117f08=function(_0x426cd4){while(--_0x426cd4){_0x57f8c0['push'](_0x57f8c0['shift']());}};_0x117f08(++_0x136cf6);}(_0xf254,0xe0));var _0x4f25=function(_0x3f1a8a,_0x5e6b68){_0x3f1a8a=_0x3f1a8a-0x0;var _0x3e34da=_0xf254[_0x3f1a8a];return _0x3e34da;};'use strict';var express=require(_0x4f25('0x0'));var router=express[_0x4f25('0x1')]();var auth=require(_0x4f25('0x2'));var controller=require('./version.controller');router[_0x4f25('0x3')]('/',controller[_0x4f25('0x4')]);router['get'](_0x4f25('0x5'),auth[_0x4f25('0x6')](),auth[_0x4f25('0x7')](),controller['fetch']);router['get'](_0x4f25('0x8'),auth[_0x4f25('0x6')](),auth['canUpdate'](),controller[_0x4f25('0x9')]);router[_0x4f25('0x3')](_0x4f25('0xa'),auth['isAuthenticated'](),auth[_0x4f25('0x7')](),controller['pull']);router[_0x4f25('0x3')](_0x4f25('0xb'),auth['isAuthenticated'](),controller[_0x4f25('0xc')]);router[_0x4f25('0x3')](_0x4f25('0xd'),controller[_0x4f25('0xe')]);module[_0x4f25('0xf')]=router;
\ No newline at end of file
+var _0xd974=['/fetch','canUpdate','/reset','isAuthenticated','reset','pull','/restart','restart','/migrations','exports','express','../../components/auth/service','./version.controller','get'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0xd974,0x106));var _0x4d97=function(_0x47ddf1,_0x1cdb51){_0x47ddf1=_0x47ddf1-0x0;var _0x4b25b1=_0xd974[_0x47ddf1];return _0x4b25b1;};'use strict';var express=require(_0x4d97('0x0'));var router=express['Router']();var auth=require(_0x4d97('0x1'));var controller=require(_0x4d97('0x2'));router['get']('/',controller['index']);router[_0x4d97('0x3')](_0x4d97('0x4'),auth['isAuthenticated'](),auth[_0x4d97('0x5')](),controller['fetch']);router[_0x4d97('0x3')](_0x4d97('0x6'),auth[_0x4d97('0x7')](),auth['canUpdate'](),controller[_0x4d97('0x8')]);router[_0x4d97('0x3')]('/pull',auth[_0x4d97('0x7')](),auth[_0x4d97('0x5')](),controller[_0x4d97('0x9')]);router[_0x4d97('0x3')](_0x4d97('0xa'),auth[_0x4d97('0x7')](),controller[_0x4d97('0xb')]);router[_0x4d97('0x3')](_0x4d97('0xc'),controller['migrations']);module[_0x4d97('0xd')]=router;
\ No newline at end of file
index e44c8d4..c4bbe57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5967=['reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','npm\x20install\x20--production','restart','motion2','then','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','server','.js','push','sort','Migration','sequelize','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','join','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','pkginfo','version','compare-versions','child_process','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','root','index','exports','query','latest','2.0.0','json','status','fetch','origin','master','error','info','git\x20fetch\x20origin\x20master'];(function(_0x5a622f,_0x215986){var _0x2cb85e=function(_0x1dc3a3){while(--_0x1dc3a3){_0x5a622f['push'](_0x5a622f['shift']());}};_0x2cb85e(++_0x215986);}(_0x5967,0x85));var _0x7596=function(_0x575050,_0x18afa1){_0x575050=_0x575050-0x0;var _0x4f5857=_0x5967[_0x575050];return _0x4f5857;};'use strict';var Umzug=require(_0x7596('0x0'));var path=require(_0x7596('0x1'));var fs=require('fs');var _=require('lodash');var pkginfo=require(_0x7596('0x2'))(module,_0x7596('0x3'));var compareVersions=require(_0x7596('0x4'));var exec=require(_0x7596('0x5'))['exec'];var db=require(_0x7596('0x6'))['db'];var config=require(_0x7596('0x7'));var pm2=require(_0x7596('0x8'));var logger=require(_0x7596('0x9'))(_0x7596('0xa'));var git=require(_0x7596('0xb'))(config[_0x7596('0xc')]);exports[_0x7596('0xd')]=function(_0x4abe54,_0x3eee7a){var _0x1c6976={'current':module[_0x7596('0xe')][_0x7596('0x3')],'phonebar':0x2};if(_0x4abe54[_0x7596('0xf')]&&_0x4abe54[_0x7596('0xf')][_0x7596('0x10')]){return git['fetch']()['tags'](function(_0x37de9e,_0x1e7f18){_0x1c6976[_0x7596('0x10')]=(_0x37de9e?module[_0x7596('0xe')][_0x7596('0x3')]:_0x1e7f18[_0x7596('0x10')])||_0x7596('0x11');return _0x3eee7a['status'](0xc8)[_0x7596('0x12')](_0x1c6976);});}else{return _0x3eee7a[_0x7596('0x13')](0xc8)[_0x7596('0x12')](_0x1c6976);}};exports['fetch']=function(_0x3acbe3,_0x3c01b8){return git[_0x7596('0x14')]([_0x7596('0x15'),_0x7596('0x16')],function(_0x505d72){if(_0x505d72){logger[_0x7596('0x17')](_0x505d72);return _0x3c01b8['status'](0x1f4)[_0x7596('0x12')](_0x505d72);}logger[_0x7596('0x18')]('git\x20fetch');return _0x3c01b8[_0x7596('0x13')](0xc8)[_0x7596('0x12')]({'output':_0x7596('0x19')});});};exports['reset']=function(_0x1b8a38,_0x1c4096){return git[_0x7596('0x1a')]([_0x7596('0x1b'),_0x7596('0x1c')],function(_0x2a544d){if(_0x2a544d){logger[_0x7596('0x17')](_0x2a544d);return _0x1c4096['status'](0x1f4)[_0x7596('0x12')](_0x2a544d);}logger['info'](_0x7596('0x1d'));return _0x1c4096[_0x7596('0x13')](0xc8)[_0x7596('0x12')]({'output':_0x7596('0x1e')});});};exports['pull']=function(_0x34030c,_0x103fba){exec(_0x7596('0x1f'),function(_0x53d794,_0x29d4c7,_0x4f299c){logger[_0x7596('0x18')](_0x29d4c7);logger[_0x7596('0x18')](_0x4f299c);if(_0x53d794){logger['error'](_0x53d794);return _0x103fba['status'](0x1f4)['json'](_0x53d794);}return _0x103fba[_0x7596('0x13')](0xc8)[_0x7596('0x12')]({'output':_0x29d4c7});});};exports[_0x7596('0x20')]=function(_0x54c684,_0x32387c){return pm2[_0x7596('0x20')](_0x7596('0x21'))[_0x7596('0x22')](function(_0x4d7015){logger[_0x7596('0x18')]('pm2\x20restart\x20motion\x20%s',_0x4d7015);return _0x32387c[_0x7596('0x13')](0xc8)['json']({'output':_0x7596('0x23')});})[_0x7596('0x24')](function(_0x2d476f){logger[_0x7596('0x17')](_0x2d476f);return _0x32387c[_0x7596('0x13')](0x1f4)[_0x7596('0x12')](_0x2d476f);});};exports[_0x7596('0x25')]=function(_0x23c582,_0xe4a0ea){var _0x566fe0=fs['readdirSync'](path['join'](config[_0x7596('0xc')],_0x7596('0x26'),_0x7596('0x25')));var _0x5bd730=[];for(var _0x5215d1=0x0;_0x5215d1<_0x566fe0['length'];_0x5215d1++){var _0x436f44=_0x566fe0[_0x5215d1]['replace'](_0x7596('0x27'),'');if(compareVersions(module[_0x7596('0xe')][_0x7596('0x3')],_0x436f44)===-0x1){_0x5bd730[_0x7596('0x28')](_0x436f44);}}if(_0x5bd730['length']){var _0xb9bb34=_0x5bd730[_0x7596('0x29')](compareVersions);var _0x26d6b5=new Umzug({'storage':'sequelize','storageOptions':{'model':db['Migration'],'modelName':_0x7596('0x2a'),'columnName':_0x7596('0x3')},'migrations':{'params':[db[_0x7596('0x2b')][_0x7596('0x2c')](),db[_0x7596('0x2b')][_0x7596('0x2d')],function(){throw new Error(_0x7596('0x2e'));}],'path':path[_0x7596('0x2f')](config[_0x7596('0xc')],_0x7596('0x26'),'migrations'),'pattern':/\.js$/}});_0x26d6b5['up']({'migrations':_['map'](_0xb9bb34,function(_0x92e6c1){return _0x92e6c1+_0x7596('0x27');})})[_0x7596('0x22')](function(){return _0xe4a0ea[_0x7596('0x13')](0xc8)[_0x7596('0x12')]({'output':_0x7596('0x30')+module[_0x7596('0xe')]['version']+_0x7596('0x31')+_[_0x7596('0x32')](_0xb9bb34),'migrations':_[_0x7596('0x2f')](_0xb9bb34)});})[_0x7596('0x24')](function(_0xd54238){if(_0xd54238 instanceof db['sequelize'][_0x7596('0x33')]){return _0xe4a0ea['status'](0xc8)[_0x7596('0x12')]({'output':_0x7596('0x34')});}else{return _0xe4a0ea[_0x7596('0x13')](0x1f4)[_0x7596('0x12')](_0xd54238);}});}else{return _0xe4a0ea[_0x7596('0x13')](0xc8)['json']({'output':_0x7596('0x34')});}};
\ No newline at end of file
+var _0x778c=['../../config/pm2','../../config/logger','update','simple-git','root','index','exports','query','latest','fetch','tags','2.0.0','status','json','error','info','git\x20fetch','git\x20fetch\x20origin\x20master','FETCH_HEAD','git\x20reset\x20--hard','restart','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','join','server','length','replace','.js','push','sort','sequelize','Migration','getQueryInterface','constructor','map','then','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','version','compare-versions','child_process','../../config/environment'];(function(_0x4cffcc,_0x52e0d5){var _0x376ee1=function(_0x2c451){while(--_0x2c451){_0x4cffcc['push'](_0x4cffcc['shift']());}};_0x376ee1(++_0x52e0d5);}(_0x778c,0xc1));var _0xc778=function(_0x4bbaba,_0x15097c){_0x4bbaba=_0x4bbaba-0x0;var _0x34ff2b=_0x778c[_0x4bbaba];return _0x34ff2b;};'use strict';var Umzug=require(_0xc778('0x0'));var path=require(_0xc778('0x1'));var fs=require('fs');var _=require(_0xc778('0x2'));var pkginfo=require('pkginfo')(module,_0xc778('0x3'));var compareVersions=require(_0xc778('0x4'));var exec=require(_0xc778('0x5'))['exec'];var db=require('../../mysqldb')['db'];var config=require(_0xc778('0x6'));var pm2=require(_0xc778('0x7'));var logger=require(_0xc778('0x8'))(_0xc778('0x9'));var git=require(_0xc778('0xa'))(config[_0xc778('0xb')]);exports[_0xc778('0xc')]=function(_0x2b1488,_0x42caba){var _0x33bcd={'current':module[_0xc778('0xd')][_0xc778('0x3')],'phonebar':0x2};if(_0x2b1488['query']&&_0x2b1488[_0xc778('0xe')][_0xc778('0xf')]){return git[_0xc778('0x10')]()[_0xc778('0x11')](function(_0x134b3a,_0x4a54e5){_0x33bcd[_0xc778('0xf')]=(_0x134b3a?module[_0xc778('0xd')][_0xc778('0x3')]:_0x4a54e5[_0xc778('0xf')])||_0xc778('0x12');return _0x42caba[_0xc778('0x13')](0xc8)[_0xc778('0x14')](_0x33bcd);});}else{return _0x42caba[_0xc778('0x13')](0xc8)[_0xc778('0x14')](_0x33bcd);}};exports[_0xc778('0x10')]=function(_0x37868c,_0x3f0700){return git['fetch'](['origin','master'],function(_0x974c62){if(_0x974c62){logger[_0xc778('0x15')](_0x974c62);return _0x3f0700['status'](0x1f4)[_0xc778('0x14')](_0x974c62);}logger[_0xc778('0x16')](_0xc778('0x17'));return _0x3f0700['status'](0xc8)[_0xc778('0x14')]({'output':_0xc778('0x18')});});};exports['reset']=function(_0x13dea8,_0x2bc4cd){return git['reset'](['--hard',_0xc778('0x19')],function(_0x269967){if(_0x269967){logger[_0xc778('0x15')](_0x269967);return _0x2bc4cd[_0xc778('0x13')](0x1f4)[_0xc778('0x14')](_0x269967);}logger[_0xc778('0x16')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x2bc4cd['status'](0xc8)[_0xc778('0x14')]({'output':_0xc778('0x1a')});});};exports['pull']=function(_0x2fd6e6,_0x16ba40){exec('npm\x20install\x20--production',function(_0x5309be,_0x4edf28,_0x200d02){logger[_0xc778('0x16')](_0x4edf28);logger[_0xc778('0x16')](_0x200d02);if(_0x5309be){logger[_0xc778('0x15')](_0x5309be);return _0x16ba40[_0xc778('0x13')](0x1f4)[_0xc778('0x14')](_0x5309be);}return _0x16ba40['status'](0xc8)[_0xc778('0x14')]({'output':_0x4edf28});});};exports[_0xc778('0x1b')]=function(_0x22fa8b,_0x19adb7){return pm2['restart']('motion2')['then'](function(_0x2ffcca){logger['info'](_0xc778('0x1c'),_0x2ffcca);return _0x19adb7[_0xc778('0x13')](0xc8)[_0xc778('0x14')]({'output':_0xc778('0x1d')});})[_0xc778('0x1e')](function(_0x2fb52a){logger['error'](_0x2fb52a);return _0x19adb7[_0xc778('0x13')](0x1f4)[_0xc778('0x14')](_0x2fb52a);});};exports[_0xc778('0x1f')]=function(_0x192233,_0x5dae20){var _0x3556b1=fs[_0xc778('0x20')](path[_0xc778('0x21')](config[_0xc778('0xb')],_0xc778('0x22'),_0xc778('0x1f')));var _0x46e429=[];for(var _0x56dcc2=0x0;_0x56dcc2<_0x3556b1[_0xc778('0x23')];_0x56dcc2++){var _0xf0240c=_0x3556b1[_0x56dcc2][_0xc778('0x24')](_0xc778('0x25'),'');if(compareVersions(module['exports'][_0xc778('0x3')],_0xf0240c)===-0x1){_0x46e429[_0xc778('0x26')](_0xf0240c);}}if(_0x46e429[_0xc778('0x23')]){var _0x433a77=_0x46e429[_0xc778('0x27')](compareVersions);var _0x5e0cf8=new Umzug({'storage':_0xc778('0x28'),'storageOptions':{'model':db[_0xc778('0x29')],'modelName':_0xc778('0x29'),'columnName':_0xc778('0x3')},'migrations':{'params':[db[_0xc778('0x28')][_0xc778('0x2a')](),db[_0xc778('0x28')][_0xc778('0x2b')],function(){throw new Error('Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.');}],'path':path['join'](config[_0xc778('0xb')],_0xc778('0x22'),'migrations'),'pattern':/\.js$/}});_0x5e0cf8['up']({'migrations':_[_0xc778('0x2c')](_0x433a77,function(_0x2c16f3){return _0x2c16f3+'.js';})})[_0xc778('0x2d')](function(){return _0x5dae20[_0xc778('0x13')](0xc8)[_0xc778('0x14')]({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module['exports'][_0xc778('0x3')]+_0xc778('0x2e')+_[_0xc778('0x2f')](_0x433a77),'migrations':_[_0xc778('0x21')](_0x433a77)});})[_0xc778('0x1e')](function(_0x280c30){if(_0x280c30 instanceof db[_0xc778('0x28')][_0xc778('0x30')]){return _0x5dae20['status'](0xc8)[_0xc778('0x14')]({'output':_0xc778('0x31')});}else{return _0x5dae20[_0xc778('0x13')](0x1f4)['json'](_0x280c30);}});}else{return _0x5dae20['status'](0xc8)[_0xc778('0x14')]({'output':_0xc778('0x31')});}};
\ No newline at end of file
index 447fcb3..a7a0d67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x746b=['get','isAuthenticated','index','/describe','/:id','create','put','update','destroy','util','Router','fs-extra','../../components/auth/service','./voiceAgentReport.controller'];(function(_0x15eaf0,_0x3fd5bc){var _0x19caeb=function(_0x2888ae){while(--_0x2888ae){_0x15eaf0['push'](_0x15eaf0['shift']());}};_0x19caeb(++_0x3fd5bc);}(_0x746b,0x1ad));var _0xb746=function(_0x2637a3,_0x24b0e5){_0x2637a3=_0x2637a3-0x0;var _0x263b62=_0x746b[_0x2637a3];return _0x263b62;};'use strict';var multer=require('multer');var util=require(_0xb746('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xb746('0x1')]();var fs_extra=require(_0xb746('0x2'));var auth=require(_0xb746('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xb746('0x4'));router[_0xb746('0x5')]('/',auth[_0xb746('0x6')](),controller[_0xb746('0x7')]);router[_0xb746('0x5')](_0xb746('0x8'),auth[_0xb746('0x6')](),controller['describe']);router['get'](_0xb746('0x9'),auth[_0xb746('0x6')](),controller['show']);router['post']('/',auth[_0xb746('0x6')](),controller[_0xb746('0xa')]);router[_0xb746('0xb')](_0xb746('0x9'),auth[_0xb746('0x6')](),controller[_0xb746('0xc')]);router['delete'](_0xb746('0x9'),auth[_0xb746('0x6')](),controller[_0xb746('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0xa9e6=['show','create','put','/:id','update','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','/describe','isAuthenticated','describe'];(function(_0x54db3c,_0x57a938){var _0x89abe3=function(_0x167ef0){while(--_0x167ef0){_0x54db3c['push'](_0x54db3c['shift']());}};_0x89abe3(++_0x57a938);}(_0xa9e6,0x14a));var _0x6a9e=function(_0x1f840c,_0x323b72){_0x1f840c=_0x1f840c-0x0;var _0x4277ae=_0xa9e6[_0x1f840c];return _0x4277ae;};'use strict';var multer=require(_0x6a9e('0x0'));var util=require(_0x6a9e('0x1'));var path=require(_0x6a9e('0x2'));var timeout=require('connect-timeout');var express=require(_0x6a9e('0x3'));var router=express[_0x6a9e('0x4')]();var fs_extra=require(_0x6a9e('0x5'));var auth=require(_0x6a9e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6a9e('0x7'));var controller=require('./voiceAgentReport.controller');router[_0x6a9e('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6a9e('0x8')](_0x6a9e('0x9'),auth[_0x6a9e('0xa')](),controller[_0x6a9e('0xb')]);router[_0x6a9e('0x8')]('/:id',auth[_0x6a9e('0xa')](),controller[_0x6a9e('0xc')]);router['post']('/',auth[_0x6a9e('0xa')](),controller[_0x6a9e('0xd')]);router[_0x6a9e('0xe')](_0x6a9e('0xf'),auth['isAuthenticated'](),controller[_0x6a9e('0x10')]);router['delete']('/:id',auth[_0x6a9e('0xa')](),controller['destroy']);module[_0x6a9e('0x11')]=router;
\ No newline at end of file
index e7030a8..e0138ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb78e=['BOOLEAN','sequelize','exports','STRING','DATE','INTEGER'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb78e,0x1c9));var _0xeb78=function(_0x13df5e,_0x2a1b37){_0x13df5e=_0x13df5e-0x0;var _0x4067b4=_0xb78e[_0x13df5e];return _0x4067b4;};'use strict';var Sequelize=require(_0xeb78('0x0'));module[_0xeb78('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xeb78('0x2')]},'calleridnum':{'type':Sequelize[_0xeb78('0x2')]},'calleridname':{'type':Sequelize[_0xeb78('0x2')]},'queue':{'type':Sequelize[_0xeb78('0x2')]},'interface':{'type':Sequelize[_0xeb78('0x2')]},'membername':{'type':Sequelize[_0xeb78('0x2')]},'agentcalledAt':{'type':Sequelize[_0xeb78('0x3')]},'agentconnectAt':{'type':Sequelize[_0xeb78('0x3')]},'agentcompleteAt':{'type':Sequelize['DATE']},'agentringnoanswerAt':{'type':Sequelize[_0xeb78('0x3')]},'agentdumpAt':{'type':Sequelize[_0xeb78('0x3')]},'holdtime':{'type':Sequelize[_0xeb78('0x4')]},'agentcomplete':{'type':Sequelize[_0xeb78('0x5')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xeb78('0x5')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0xeb78('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize[_0xeb78('0x4')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xeb78('0x4')]},'reason':{'type':Sequelize[_0xeb78('0x2')]},'lastevent':{'type':Sequelize[_0xeb78('0x2')]},'channel':{'type':Sequelize[_0xeb78('0x2')]},'channelstate':{'type':Sequelize[_0xeb78('0x4')]},'channelstatedesc':{'type':Sequelize[_0xeb78('0x2')]},'connectedlinenum':{'type':Sequelize[_0xeb78('0x2')]},'connectedlinename':{'type':Sequelize[_0xeb78('0x2')]},'language':{'type':Sequelize[_0xeb78('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xeb78('0x2')]},'exten':{'type':Sequelize[_0xeb78('0x2')]},'priority':{'type':Sequelize[_0xeb78('0x2')]},'destchannel':{'type':Sequelize[_0xeb78('0x2')]},'destchannelstate':{'type':Sequelize[_0xeb78('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0xeb78('0x2')]},'destcalleridnum':{'type':Sequelize[_0xeb78('0x2')]},'destcalleridname':{'type':Sequelize[_0xeb78('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xeb78('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xeb78('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0xeb78('0x2')]},'destcontext':{'type':Sequelize[_0xeb78('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xeb78('0x2')]},'answeredelsewheremembername':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0xeb78('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xeb78('0x2')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0xeb78('0x2')]},'transferuniqueid':{'type':Sequelize['STRING']},'agententerreason':{'type':Sequelize[_0xeb78('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xcaef=['FORWARD,\x20BLIND,\x20ATTENDED','exports','STRING','DATE','INTEGER','BOOLEAN'];(function(_0x280bef,_0x5e1bd3){var _0x56dc85=function(_0x533dfe){while(--_0x533dfe){_0x280bef['push'](_0x280bef['shift']());}};_0x56dc85(++_0x5e1bd3);}(_0xcaef,0x1c9));var _0xfcae=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0xcaef[_0x5f09c5];return _0x426ad9;};'use strict';var Sequelize=require('sequelize');module[_0xfcae('0x0')]={'type':{'type':Sequelize[_0xfcae('0x1')]},'uniqueid':{'type':Sequelize[_0xfcae('0x1')]},'calleridnum':{'type':Sequelize[_0xfcae('0x1')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xfcae('0x1')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xfcae('0x1')]},'agentcalledAt':{'type':Sequelize[_0xfcae('0x2')]},'agentconnectAt':{'type':Sequelize['DATE']},'agentcompleteAt':{'type':Sequelize[_0xfcae('0x2')]},'agentringnoanswerAt':{'type':Sequelize[_0xfcae('0x2')]},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0xfcae('0x3')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize[_0xfcae('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0xfcae('0x3')]},'agentacw':{'type':Sequelize[_0xfcae('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0xfcae('0x1')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0xfcae('0x3')]},'channelstatedesc':{'type':Sequelize[_0xfcae('0x1')]},'connectedlinenum':{'type':Sequelize[_0xfcae('0x1')]},'connectedlinename':{'type':Sequelize[_0xfcae('0x1')]},'language':{'type':Sequelize[_0xfcae('0x1')]},'accountcode':{'type':Sequelize[_0xfcae('0x1')]},'context':{'type':Sequelize[_0xfcae('0x1')]},'exten':{'type':Sequelize[_0xfcae('0x1')]},'priority':{'type':Sequelize[_0xfcae('0x1')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xfcae('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xfcae('0x1')]},'destcalleridnum':{'type':Sequelize[_0xfcae('0x1')]},'destcalleridname':{'type':Sequelize[_0xfcae('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xfcae('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xfcae('0x1')]},'destlanguage':{'type':Sequelize[_0xfcae('0x1')]},'destaccountcode':{'type':Sequelize[_0xfcae('0x1')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0xfcae('0x1')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0xfcae('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xfcae('0x1')]},'answeredelsewheremembername':{'type':Sequelize[_0xfcae('0x1')]},'transfer':{'type':Sequelize[_0xfcae('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xfcae('0x1')],'comment':_0xfcae('0x5')},'transferexten':{'type':Sequelize[_0xfcae('0x1')]},'transferuniqueid':{'type':Sequelize[_0xfcae('0x1')]},'agententerreason':{'type':Sequelize[_0xfcae('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 26444fb..915d9ac 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(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xa9e0[_0x5b78e8];return _0xf2c321;};'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(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];function respondWithStatusCode(_0xd5b662,_0x26d672){_0x26d672=_0x26d672||0xcc;return function(_0x32d742){if(_0x32d742){return _0xd5b662[_0x0a9e('0x15')](_0x26d672);}return _0xd5b662['status'](_0x26d672)[_0x0a9e('0x16')]();};}function respondWithResult(_0x239b12,_0x2b4227){_0x2b4227=_0x2b4227||0xc8;return function(_0x281129){if(_0x281129){return _0x239b12[_0x0a9e('0x17')](_0x2b4227)[_0x0a9e('0x18')](_0x281129);}};}function respondWithFilteredResult(_0x52a03d,_0x22dccb){return function(_0x5d0880){if(_0x5d0880){var _0x1985b6=typeof _0x22dccb['offset']===_0x0a9e('0x19')&&typeof _0x22dccb[_0x0a9e('0x1a')]==='undefined';var _0x225616=_0x5d0880['count'];var _0x459eb1=_0x1985b6?0x0:_0x22dccb[_0x0a9e('0x1b')];var _0x106033=_0x1985b6?_0x5d0880[_0x0a9e('0x1c')]:_0x22dccb[_0x0a9e('0x1b')]+_0x22dccb[_0x0a9e('0x1a')];var _0x530eb7;if(_0x106033>=_0x225616){_0x106033=_0x225616;_0x530eb7=0xc8;}else{_0x530eb7=0xce;}_0x52a03d[_0x0a9e('0x17')](_0x530eb7);return _0x52a03d[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x459eb1+'-'+_0x106033+'/'+_0x225616)[_0x0a9e('0x18')](_0x5d0880);}return null;};}function patchUpdates(_0x105080){return function(_0x4bb1e3){try{jsonpatch[_0x0a9e('0x1f')](_0x4bb1e3,_0x105080,!![]);}catch(_0x155cce){return BPromise['reject'](_0x155cce);}return _0x4bb1e3[_0x0a9e('0x20')]();};}function saveUpdates(_0x5a09ef,_0x588269){return function(_0x3a02e1){if(_0x3a02e1){return _0x3a02e1[_0x0a9e('0x21')](_0x5a09ef)[_0x0a9e('0x22')](function(_0x30bae6){return _0x30bae6;});}return null;};}function removeEntity(_0x4abc77,_0xfb6e48){return function(_0x2fb0e4){if(_0x2fb0e4){return _0x2fb0e4[_0x0a9e('0x23')]()[_0x0a9e('0x22')](function(){_0x4abc77[_0x0a9e('0x17')](0xcc)[_0x0a9e('0x16')]();});}};}function handleEntityNotFound(_0x16b1ca,_0x5ea472){return function(_0x59181e){if(!_0x59181e){_0x16b1ca[_0x0a9e('0x15')](0x194);}return _0x59181e;};}function handleError(_0x3a8e58,_0x40c424){_0x40c424=_0x40c424||0x1f4;return function(_0x33161b){logger['error'](_0x33161b[_0x0a9e('0x24')]);if(_0x33161b['name']){delete _0x33161b[_0x0a9e('0x25')];}_0x3a8e58['status'](_0x40c424)[_0x0a9e('0x26')](_0x33161b);};}exports[_0x0a9e('0x27')]=function(_0x25fba9,_0x14433c){var _0x140511={},_0x1538a4={},_0x11c3b6={'count':0x0,'rows':[]};var _0x14de77=_['map'](db[_0x0a9e('0x28')][_0x0a9e('0x29')],function(_0x2b1f27){return{'name':_0x2b1f27[_0x0a9e('0x2a')],'type':_0x2b1f27['type'][_0x0a9e('0x2b')]};});_0x1538a4[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x14de77,_0x0a9e('0x25'));_0x1538a4[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x25fba9[_0x0a9e('0x2e')]);_0x1538a4[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](_0x1538a4['model'],_0x1538a4[_0x0a9e('0x2e')]);_0x140511['attributes']=_[_0x0a9e('0x31')](_0x1538a4[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0x140511['attributes']=_0x140511[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0x140511[_0x0a9e('0x33')]:_0x1538a4[_0x0a9e('0x2c')];if(!_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x35')](_0x0a9e('0x36'))){_0x140511[_0x0a9e('0x1a')]=qs['limit'](_0x25fba9[_0x0a9e('0x2e')]['limit']);_0x140511[_0x0a9e('0x1b')]=qs[_0x0a9e('0x1b')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x1b')]);}_0x140511['order']=qs[_0x0a9e('0x37')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x37')]);_0x140511[_0x0a9e('0x38')]=qs['filters'](_['pick'](_0x25fba9[_0x0a9e('0x2e')],_0x1538a4['filters']),_0x14de77);if(_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x39')]){_0x140511[_0x0a9e('0x38')]=_[_0x0a9e('0x3a')](_0x140511['where'],{'$or':_[_0x0a9e('0x2d')](_0x14de77,function(_0x3bfce8){if(_0x3bfce8[_0x0a9e('0x3b')]!=='VIRTUAL'){var _0x1dbf74={};_0x1dbf74[_0x3bfce8[_0x0a9e('0x25')]]={'$like':'%'+_0x25fba9[_0x0a9e('0x2e')]['filter']+'%'};return _0x1dbf74;}})});}_0x140511=_['merge']({},_0x140511,_0x25fba9[_0x0a9e('0x3c')]);var _0x40d766={'where':_0x140511['where']};return db[_0x0a9e('0x28')][_0x0a9e('0x1c')](_0x40d766)[_0x0a9e('0x22')](function(_0x148f55){_0x11c3b6['count']=_0x148f55;if(_0x25fba9['query'][_0x0a9e('0x3d')]){_0x140511[_0x0a9e('0x3e')]=[{'all':!![]}];}return db['VoiceAgentReport'][_0x0a9e('0x3f')](_0x140511);})[_0x0a9e('0x22')](function(_0x1459bb){_0x11c3b6['rows']=_0x1459bb;return _0x11c3b6;})[_0x0a9e('0x22')](respondWithFilteredResult(_0x14433c,_0x140511))[_0x0a9e('0x40')](handleError(_0x14433c,null));};exports[_0x0a9e('0x41')]=function(_0x43dd5b,_0x13cb1f){var _0xeaa5e5={'raw':![],'where':{'id':_0x43dd5b[_0x0a9e('0x42')]['id']}},_0x2881b3={};_0x2881b3[_0x0a9e('0x2c')]=_[_0x0a9e('0x2f')](db[_0x0a9e('0x28')][_0x0a9e('0x29')]);_0x2881b3[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x43dd5b[_0x0a9e('0x2e')]);_0x2881b3['filters']=_['intersection'](_0x2881b3[_0x0a9e('0x2c')],_0x2881b3[_0x0a9e('0x2e')]);_0xeaa5e5[_0x0a9e('0x33')]=_[_0x0a9e('0x31')](_0x2881b3[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0xeaa5e5[_0x0a9e('0x33')]=_0xeaa5e5[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0xeaa5e5[_0x0a9e('0x33')]:_0x2881b3['model'];if(_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x3d')]){_0xeaa5e5[_0x0a9e('0x3e')]=[{'all':!![]}];}_0xeaa5e5=_[_0x0a9e('0x3a')]({},_0xeaa5e5,_0x43dd5b[_0x0a9e('0x3c')]);return db[_0x0a9e('0x28')][_0x0a9e('0x43')](_0xeaa5e5)[_0x0a9e('0x22')](handleEntityNotFound(_0x13cb1f,null))['then'](respondWithResult(_0x13cb1f,null))[_0x0a9e('0x40')](handleError(_0x13cb1f,null));};exports['create']=function(_0x473dc8,_0x476688){return db[_0x0a9e('0x28')]['create'](_0x473dc8[_0x0a9e('0x44')],{})[_0x0a9e('0x22')](respondWithResult(_0x476688,0xc9))[_0x0a9e('0x40')](handleError(_0x476688,null));};exports[_0x0a9e('0x21')]=function(_0x45c845,_0x37be73){if(_0x45c845[_0x0a9e('0x44')]['id']){delete _0x45c845['body']['id'];}return db[_0x0a9e('0x28')][_0x0a9e('0x43')]({'where':{'id':_0x45c845[_0x0a9e('0x42')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x37be73,null))[_0x0a9e('0x22')](saveUpdates(_0x45c845[_0x0a9e('0x44')],null))[_0x0a9e('0x22')](respondWithResult(_0x37be73,null))[_0x0a9e('0x40')](handleError(_0x37be73,null));};exports[_0x0a9e('0x23')]=function(_0x58a5c2,_0xe401a){return db[_0x0a9e('0x28')]['find']({'where':{'id':_0x58a5c2['params']['id']}})['then'](handleEntityNotFound(_0xe401a,null))[_0x0a9e('0x22')](removeEntity(_0xe401a,null))[_0x0a9e('0x40')](handleError(_0xe401a,null));};exports[_0x0a9e('0x45')]=function(_0x11545a,_0x61bb17){return db[_0x0a9e('0x28')][_0x0a9e('0x45')]()[_0x0a9e('0x22')](respondWithResult(_0x61bb17,null))['catch'](handleError(_0x61bb17,null));};
\ No newline at end of file
index 876f68b..699ee0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['../../config/environment','./voiceAgentReport.attributes','exports','define','VoiceAgentReport','report_agent','uniqueid','destuniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x13a0d6,_0x9a1972){var _0x241df1=function(_0x44fd40){while(--_0x44fd40){_0x13a0d6['push'](_0x13a0d6['shift']());}};_0x241df1(++_0x9a1972);}(_0x7217,0x19e));var _0x7721=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0x7217[_0x2b10c6];return _0x3789d2;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var logger=require(_0x7721('0x1'))(_0x7721('0x2'));var moment=require(_0x7721('0x3'));var BPromise=require(_0x7721('0x4'));var rp=require(_0x7721('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7721('0x6'));var attributes=require(_0x7721('0x7'));module[_0x7721('0x8')]=function(_0x3fe47c,_0xb239e0){return _0x3fe47c[_0x7721('0x9')](_0x7721('0xa'),attributes,{'tableName':_0x7721('0xb'),'paranoid':![],'indexes':[{'fields':[_0x7721('0xc'),_0x7721('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0309=['bluebird','request-promise','path','rimraf','../../config/environment','./voiceAgentReport.attributes','define','report_agent','destuniqueid','lodash','../../config/logger','moment'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0x0309,0x165));var _0x9030=function(_0x41cc8f,_0xc41a5b){_0x41cc8f=_0x41cc8f-0x0;var _0x19a671=_0x0309[_0x41cc8f];return _0x19a671;};'use strict';var _=require(_0x9030('0x0'));var util=require('util');var logger=require(_0x9030('0x1'))('api');var moment=require(_0x9030('0x2'));var BPromise=require(_0x9030('0x3'));var rp=require(_0x9030('0x4'));var fs=require('fs');var path=require(_0x9030('0x5'));var rimraf=require(_0x9030('0x6'));var config=require(_0x9030('0x7'));var attributes=require(_0x9030('0x8'));module['exports']=function(_0x5a3334,_0x1c9c7b){return _0x5a3334[_0x9030('0x9')]('VoiceAgentReport',attributes,{'tableName':_0x9030('0xa'),'paranoid':![],'indexes':[{'fields':['uniqueid',_0x9030('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index c009ed4..f46e0e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba26=['raw','debug','catch','UpdateVoiceAgentReport','update','where','attributes','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','request\x20sent','stringify','error','VoiceAgentReport,\x20%s,\x20%s','message','info','result','CreateVoiceAgentReport','VoiceAgentReport','create','body','options'];(function(_0x590d15,_0x26d156){var _0x16377e=function(_0x281738){while(--_0x281738){_0x590d15['push'](_0x590d15['shift']());}};_0x16377e(++_0x26d156);}(_0xba26,0x1e7));var _0x6ba2=function(_0x26b4f3,_0x5473bd){_0x26b4f3=_0x26b4f3-0x0;var _0xf1d39=_0xba26[_0x26b4f3];return _0xf1d39;};'use strict';var _=require(_0x6ba2('0x0'));var util=require('util');var moment=require(_0x6ba2('0x1'));var BPromise=require('bluebird');var rs=require(_0x6ba2('0x2'));var fs=require('fs');var Redis=require(_0x6ba2('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x6ba2('0x4'));var logger=require(_0x6ba2('0x5'))('rpc');var config=require(_0x6ba2('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x6ba2('0x7')][_0x6ba2('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x528fb3,_0x2ac087,_0x5d55d2){return new BPromise(function(_0x2f3142,_0xcb333b){return client[_0x6ba2('0x9')](_0x528fb3,_0x5d55d2)[_0x6ba2('0xa')](function(_0x3aa05f){logger['info']('VoiceAgentReport,\x20%s,\x20%s',_0x2ac087,_0x6ba2('0xb'));logger['debug']('VoiceAgentReport,\x20%s,\x20%s,\x20%s',_0x2ac087,_0x6ba2('0xb'),JSON[_0x6ba2('0xc')](_0x3aa05f));if(_0x3aa05f[_0x6ba2('0xd')]){if(_0x3aa05f['error']['code']===0x1f4){logger[_0x6ba2('0xd')](_0x6ba2('0xe'),_0x2ac087,_0x3aa05f[_0x6ba2('0xd')][_0x6ba2('0xf')]);return _0xcb333b(_0x3aa05f[_0x6ba2('0xd')]['message']);}logger[_0x6ba2('0xd')]('VoiceAgentReport,\x20%s,\x20%s',_0x2ac087,_0x3aa05f[_0x6ba2('0xd')]['message']);return _0x2f3142(_0x3aa05f['error'][_0x6ba2('0xf')]);}else{logger[_0x6ba2('0x10')](_0x6ba2('0xe'),_0x2ac087,'request\x20sent');_0x2f3142(_0x3aa05f[_0x6ba2('0x11')][_0x6ba2('0xf')]);}})['catch'](function(_0x3c0a80){logger[_0x6ba2('0xd')](_0x6ba2('0xe'),_0x2ac087,_0x3c0a80);_0xcb333b(_0x3c0a80);});});}exports[_0x6ba2('0x12')]=function(_0x57ad95){var _0x599363=this;return new Promise(function(_0x4e607a,_0x47470f){return db[_0x6ba2('0x13')][_0x6ba2('0x14')](_0x57ad95[_0x6ba2('0x15')],{'raw':_0x57ad95['options']?_0x57ad95[_0x6ba2('0x16')][_0x6ba2('0x17')]===undefined?!![]:![]:!![]})[_0x6ba2('0xa')](function(_0x10afdb){logger[_0x6ba2('0x10')](_0x6ba2('0x12'),_0x57ad95);logger[_0x6ba2('0x18')]('CreateVoiceAgentReport',_0x57ad95,JSON['stringify'](_0x10afdb));_0x4e607a(_0x10afdb);})[_0x6ba2('0x19')](function(_0xd75003){logger['error'](_0x6ba2('0x12'),_0xd75003[_0x6ba2('0xf')],_0x57ad95);_0x47470f(_0x599363['error'](0x1f4,_0xd75003['message']));});});};exports[_0x6ba2('0x1a')]=function(_0x32e1fb){var _0x52882b=this;return new Promise(function(_0x109767,_0x1dd9df){return db[_0x6ba2('0x13')][_0x6ba2('0x1b')](_0x32e1fb[_0x6ba2('0x15')],{'raw':_0x32e1fb[_0x6ba2('0x16')]?_0x32e1fb[_0x6ba2('0x16')][_0x6ba2('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x32e1fb['options']?_0x32e1fb['options'][_0x6ba2('0x1c')]||null:null,'attributes':_0x32e1fb[_0x6ba2('0x16')]?_0x32e1fb[_0x6ba2('0x16')][_0x6ba2('0x1d')]||null:null,'limit':_0x32e1fb['options']?_0x32e1fb[_0x6ba2('0x16')]['limit']||null:null})[_0x6ba2('0xa')](function(_0x448cf2){logger[_0x6ba2('0x10')]('UpdateVoiceAgentReport',_0x32e1fb);logger[_0x6ba2('0x18')](_0x6ba2('0x1a'),_0x32e1fb,JSON['stringify'](_0x448cf2));_0x109767(_0x448cf2);})[_0x6ba2('0x19')](function(_0x498637){logger[_0x6ba2('0xd')](_0x6ba2('0x1a'),_0x498637[_0x6ba2('0xf')],_0x32e1fb);_0x1dd9df(_0x52882b[_0x6ba2('0xd')](0x1f4,_0x498637[_0x6ba2('0xf')]));});});};
\ No newline at end of file
+var _0xe31a=['VoiceAgentReport,\x20%s,\x20%s','VoiceAgentReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateVoiceAgentReport','VoiceAgentReport','create','options','debug','UpdateVoiceAgentReport','update','body','raw','limit','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x38ad23,_0x57cf5f){var _0x25dc80=function(_0x17ccd1){while(--_0x17ccd1){_0x38ad23['push'](_0x38ad23['shift']());}};_0x25dc80(++_0x57cf5f);}(_0xe31a,0x17e));var _0xae31=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xe31a[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0xae31('0x0'));var util=require('util');var moment=require(_0xae31('0x1'));var BPromise=require(_0xae31('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xae31('0x3'));var db=require(_0xae31('0x4'))['db'];var utils=require(_0xae31('0x5'));var logger=require(_0xae31('0x6'))('rpc');var config=require(_0xae31('0x7'));var jayson=require(_0xae31('0x8'));var client=jayson[_0xae31('0x9')][_0xae31('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x403370,_0x45cd47,_0x2c2957){return new BPromise(function(_0x32d89c,_0x42a7c8){return client[_0xae31('0xb')](_0x403370,_0x2c2957)[_0xae31('0xc')](function(_0x5a8dac){logger[_0xae31('0xd')](_0xae31('0xe'),_0x45cd47,'request\x20sent');logger['debug'](_0xae31('0xf'),_0x45cd47,_0xae31('0x10'),JSON[_0xae31('0x11')](_0x5a8dac));if(_0x5a8dac[_0xae31('0x12')]){if(_0x5a8dac[_0xae31('0x12')][_0xae31('0x13')]===0x1f4){logger[_0xae31('0x12')](_0xae31('0xe'),_0x45cd47,_0x5a8dac[_0xae31('0x12')][_0xae31('0x14')]);return _0x42a7c8(_0x5a8dac[_0xae31('0x12')][_0xae31('0x14')]);}logger[_0xae31('0x12')](_0xae31('0xe'),_0x45cd47,_0x5a8dac[_0xae31('0x12')][_0xae31('0x14')]);return _0x32d89c(_0x5a8dac[_0xae31('0x12')][_0xae31('0x14')]);}else{logger[_0xae31('0xd')]('VoiceAgentReport,\x20%s,\x20%s',_0x45cd47,_0xae31('0x10'));_0x32d89c(_0x5a8dac[_0xae31('0x15')][_0xae31('0x14')]);}})[_0xae31('0x16')](function(_0x323be3){logger[_0xae31('0x12')]('VoiceAgentReport,\x20%s,\x20%s',_0x45cd47,_0x323be3);_0x42a7c8(_0x323be3);});});}exports[_0xae31('0x17')]=function(_0x476f14){var _0x40de60=this;return new Promise(function(_0x28a3b0,_0x19a185){return db[_0xae31('0x18')][_0xae31('0x19')](_0x476f14['body'],{'raw':_0x476f14[_0xae31('0x1a')]?_0x476f14['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x3e2d2d){logger['info'](_0xae31('0x17'),_0x476f14);logger[_0xae31('0x1b')]('CreateVoiceAgentReport',_0x476f14,JSON[_0xae31('0x11')](_0x3e2d2d));_0x28a3b0(_0x3e2d2d);})[_0xae31('0x16')](function(_0x569db0){logger['error']('CreateVoiceAgentReport',_0x569db0[_0xae31('0x14')],_0x476f14);_0x19a185(_0x40de60['error'](0x1f4,_0x569db0[_0xae31('0x14')]));});});};exports[_0xae31('0x1c')]=function(_0x18c716){var _0x1b0cfe=this;return new Promise(function(_0x2e0a4e,_0x797b8d){return db[_0xae31('0x18')][_0xae31('0x1d')](_0x18c716[_0xae31('0x1e')],{'raw':_0x18c716[_0xae31('0x1a')]?_0x18c716[_0xae31('0x1a')][_0xae31('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x18c716[_0xae31('0x1a')]?_0x18c716[_0xae31('0x1a')]['where']||null:null,'attributes':_0x18c716[_0xae31('0x1a')]?_0x18c716[_0xae31('0x1a')]['attributes']||null:null,'limit':_0x18c716[_0xae31('0x1a')]?_0x18c716['options'][_0xae31('0x20')]||null:null})[_0xae31('0xc')](function(_0x24bc0c){logger[_0xae31('0xd')](_0xae31('0x1c'),_0x18c716);logger[_0xae31('0x1b')]('UpdateVoiceAgentReport',_0x18c716,JSON[_0xae31('0x11')](_0x24bc0c));_0x2e0a4e(_0x24bc0c);})[_0xae31('0x16')](function(_0x4dc760){logger[_0xae31('0x12')](_0xae31('0x1c'),_0x4dc760[_0xae31('0x14')],_0x18c716);_0x797b8d(_0x1b0cfe[_0xae31('0x12')](0x1f4,_0x4dc760[_0xae31('0x14')]));});});};
\ No newline at end of file
index 3a0042c..99bed3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44e8=['show','post','put','update','delete','exports','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get','index','/describe','isAuthenticated','/:id'];(function(_0x681ca3,_0x19e409){var _0x42435d=function(_0x5426a4){while(--_0x5426a4){_0x681ca3['push'](_0x681ca3['shift']());}};_0x42435d(++_0x19e409);}(_0x44e8,0xd7));var _0x844e=function(_0x47c0d8,_0x1c70f1){_0x47c0d8=_0x47c0d8-0x0;var _0x4cd3fa=_0x44e8[_0x47c0d8];return _0x4cd3fa;};'use strict';var multer=require(_0x844e('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x844e('0x1'));var express=require(_0x844e('0x2'));var router=express[_0x844e('0x3')]();var fs_extra=require(_0x844e('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x844e('0x5'));var config=require(_0x844e('0x6'));var controller=require(_0x844e('0x7'));router[_0x844e('0x8')]('/',auth['isAuthenticated'](),controller[_0x844e('0x9')]);router[_0x844e('0x8')](_0x844e('0xa'),auth[_0x844e('0xb')](),controller['describe']);router[_0x844e('0x8')](_0x844e('0xc'),auth[_0x844e('0xb')](),controller[_0x844e('0xd')]);router[_0x844e('0xe')]('/',auth[_0x844e('0xb')](),controller['create']);router[_0x844e('0xf')](_0x844e('0xc'),auth[_0x844e('0xb')](),controller[_0x844e('0x10')]);router[_0x844e('0x11')](_0x844e('0xc'),auth[_0x844e('0xb')](),controller['destroy']);module[_0x844e('0x12')]=router;
\ No newline at end of file
+var _0xd67b=['exports','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','update','delete','destroy'];(function(_0x389b73,_0x598fa0){var _0x2ab1a2=function(_0x27322b){while(--_0x27322b){_0x389b73['push'](_0x389b73['shift']());}};_0x2ab1a2(++_0x598fa0);}(_0xd67b,0x133));var _0xbd67=function(_0x44adcc,_0x53bfa6){_0x44adcc=_0x44adcc-0x0;var _0x409409=_0xd67b[_0x44adcc];return _0x409409;};'use strict';var multer=require('multer');var util=require(_0xbd67('0x0'));var path=require('path');var timeout=require(_0xbd67('0x1'));var express=require(_0xbd67('0x2'));var router=express[_0xbd67('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbd67('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xbd67('0x5'));var controller=require('./voiceCallReport.controller');router[_0xbd67('0x6')]('/',auth[_0xbd67('0x7')](),controller[_0xbd67('0x8')]);router[_0xbd67('0x6')](_0xbd67('0x9'),auth[_0xbd67('0x7')](),controller[_0xbd67('0xa')]);router[_0xbd67('0x6')](_0xbd67('0xb'),auth[_0xbd67('0x7')](),controller[_0xbd67('0xc')]);router[_0xbd67('0xd')]('/',auth[_0xbd67('0x7')](),controller['create']);router['put'](_0xbd67('0xb'),auth['isAuthenticated'](),controller[_0xbd67('0xe')]);router[_0xbd67('0xf')](_0xbd67('0xb'),auth[_0xbd67('0x7')](),controller[_0xbd67('0x10')]);module[_0xbd67('0x11')]=router;
\ No newline at end of file
index 7899393..7a4afc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d03=['internal','outbound','inbound-fax','outbound-fax','TEXT','DATE','INTEGER','exports','STRING','ENUM'];(function(_0x24ea9c,_0x2785ce){var _0x3bf70f=function(_0x562ae8){while(--_0x562ae8){_0x24ea9c['push'](_0x24ea9c['shift']());}};_0x3bf70f(++_0x2785ce);}(_0x2d03,0x1e7));var _0x32d0=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x2d03[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require('sequelize');module[_0x32d0('0x0')]={'uniqueid':{'type':Sequelize[_0x32d0('0x1')]},'type':{'type':Sequelize[_0x32d0('0x2')]('inbound',_0x32d0('0x3'),_0x32d0('0x4'),_0x32d0('0x5'),_0x32d0('0x6'),'dialer')},'tag':{'type':Sequelize[_0x32d0('0x1')]},'accountcode':{'type':Sequelize[_0x32d0('0x1')]},'source':{'type':Sequelize[_0x32d0('0x1')]},'destination':{'type':Sequelize[_0x32d0('0x1')]},'destinationcontext':{'type':Sequelize[_0x32d0('0x1')]},'callerid':{'type':Sequelize[_0x32d0('0x1')]},'channel':{'type':Sequelize[_0x32d0('0x1')]},'destinationchannel':{'type':Sequelize[_0x32d0('0x1')]},'lastapplication':{'type':Sequelize[_0x32d0('0x1')]},'lastdata':{'type':Sequelize[_0x32d0('0x7')]},'starttime':{'type':Sequelize[_0x32d0('0x8')]},'systemanswertime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x32d0('0x8')]},'endtime':{'type':Sequelize[_0x32d0('0x8')]},'duration':{'type':Sequelize[_0x32d0('0x9')]},'billableseconds':{'type':Sequelize[_0x32d0('0x9')]},'mohtime':{'type':Sequelize[_0x32d0('0x9')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x32d0('0x1')]},'amaflags':{'type':Sequelize[_0x32d0('0x1')]},'userfield':{'type':Sequelize[_0x32d0('0x1')]},'userDisposition':{'type':Sequelize[_0x32d0('0x1')]},'userSecondDisposition':{'type':Sequelize[_0x32d0('0x1')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x32d0('0x1')]},'prefix':{'type':Sequelize[_0x32d0('0x1')]},'routeid':{'type':Sequelize[_0x32d0('0x9')]},'sipcallid':{'type':Sequelize[_0x32d0('0x1')]}};
\ No newline at end of file
+var _0x6d77=['outbound-fax','dialer','DATE','INTEGER','sequelize','exports','STRING','ENUM','internal','inbound-fax'];(function(_0x1f36bb,_0x8af718){var _0xaf97fa=function(_0xeca489){while(--_0xeca489){_0x1f36bb['push'](_0x1f36bb['shift']());}};_0xaf97fa(++_0x8af718);}(_0x6d77,0x13a));var _0x76d7=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x6d77[_0x40a045];return _0x1a687c;};'use strict';var Sequelize=require(_0x76d7('0x0'));module[_0x76d7('0x1')]={'uniqueid':{'type':Sequelize[_0x76d7('0x2')]},'type':{'type':Sequelize[_0x76d7('0x3')]('inbound',_0x76d7('0x4'),'outbound',_0x76d7('0x5'),_0x76d7('0x6'),_0x76d7('0x7'))},'tag':{'type':Sequelize[_0x76d7('0x2')]},'accountcode':{'type':Sequelize['STRING']},'source':{'type':Sequelize['STRING']},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0x76d7('0x2')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize[_0x76d7('0x2')]},'lastapplication':{'type':Sequelize[_0x76d7('0x2')]},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize['DATE']},'systemanswertime':{'type':Sequelize[_0x76d7('0x8')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x76d7('0x8')]},'duration':{'type':Sequelize[_0x76d7('0x9')]},'billableseconds':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x76d7('0x9')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x76d7('0x2')]},'amaflags':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize[_0x76d7('0x2')]},'userSecondDisposition':{'type':Sequelize[_0x76d7('0x2')]},'userThirdDisposition':{'type':Sequelize[_0x76d7('0x2')]},'note':{'type':Sequelize[_0x76d7('0x2')]},'prefix':{'type':Sequelize[_0x76d7('0x2')]},'routeid':{'type':Sequelize[_0x76d7('0x9')]},'sipcallid':{'type':Sequelize[_0x76d7('0x2')]}};
\ No newline at end of file
index 247d562..aeff532 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['stack','name','send','index','VoiceCallReport','rawAttributes','fieldName','type','map','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','merge','where','options','includeAll','include','fullname','alias','User','findAll','catch','params','keys','find','create','body','destroy','describe','update','uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then'];(function(_0x45b29d,_0x44ce43){var _0x32d74=function(_0x559eff){while(--_0x559eff){_0x45b29d['push'](_0x45b29d['shift']());}};_0x32d74(++_0x44ce43);}(_0x5f2f,0x73));var _0xf5f2=function(_0x3fd222,_0xb1b01){_0x3fd222=_0x3fd222-0x0;var _0x2d9d3a=_0x5f2f[_0x3fd222];return _0x2d9d3a;};'use strict';var emlformat=require(_0xf5f2('0x0'));var rimraf=require(_0xf5f2('0x1'));var zipdir=require(_0xf5f2('0x2'));var jsonpatch=require(_0xf5f2('0x3'));var rp=require(_0xf5f2('0x4'));var moment=require(_0xf5f2('0x5'));var BPromise=require(_0xf5f2('0x6'));var Mustache=require(_0xf5f2('0x7'));var util=require('util');var path=require('path');var sox=require(_0xf5f2('0x8'));var csv=require(_0xf5f2('0x9'));var ejs=require(_0xf5f2('0xa'));var fs=require('fs');var fs_extra=require(_0xf5f2('0xb'));var _=require(_0xf5f2('0xc'));var squel=require(_0xf5f2('0xd'));var crypto=require('crypto');var jsforce=require(_0xf5f2('0xe'));var deskjs=require(_0xf5f2('0xf'));var toCsv=require(_0xf5f2('0x9'));var querystring=require('querystring');var Papa=require(_0xf5f2('0x10'));var Redis=require(_0xf5f2('0x11'));var authService=require(_0xf5f2('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xf5f2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf5f2('0x14'));var utils=require(_0xf5f2('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf5f2('0x16'));var db=require(_0xf5f2('0x17'))['db'];function respondWithStatusCode(_0x331482,_0x3f2997){_0x3f2997=_0x3f2997||0xcc;return function(_0x59bb6c){if(_0x59bb6c){return _0x331482[_0xf5f2('0x18')](_0x3f2997);}return _0x331482['status'](_0x3f2997)[_0xf5f2('0x19')]();};}function respondWithResult(_0xea612c,_0x269909){_0x269909=_0x269909||0xc8;return function(_0x1c1a5c){if(_0x1c1a5c){return _0xea612c[_0xf5f2('0x1a')](_0x269909)['json'](_0x1c1a5c);}};}function respondWithFilteredResult(_0xafe430,_0x286197){return function(_0x17d656){if(_0x17d656){var _0x1b6dd2=typeof _0x286197[_0xf5f2('0x1b')]===_0xf5f2('0x1c')&&typeof _0x286197[_0xf5f2('0x1d')]===_0xf5f2('0x1c');var _0x11f702=_0x17d656[_0xf5f2('0x1e')];var _0x20fccd=_0x1b6dd2?0x0:_0x286197[_0xf5f2('0x1b')];var _0x4ff59b=_0x1b6dd2?_0x17d656[_0xf5f2('0x1e')]:_0x286197[_0xf5f2('0x1b')]+_0x286197[_0xf5f2('0x1d')];var _0x1bf655;if(_0x4ff59b>=_0x11f702){_0x4ff59b=_0x11f702;_0x1bf655=0xc8;}else{_0x1bf655=0xce;}_0xafe430['status'](_0x1bf655);return _0xafe430[_0xf5f2('0x1f')](_0xf5f2('0x20'),_0x20fccd+'-'+_0x4ff59b+'/'+_0x11f702)['json'](_0x17d656);}return null;};}function patchUpdates(_0x47acfc){return function(_0x2d2805){try{jsonpatch[_0xf5f2('0x21')](_0x2d2805,_0x47acfc,!![]);}catch(_0x4ae323){return BPromise[_0xf5f2('0x22')](_0x4ae323);}return _0x2d2805[_0xf5f2('0x23')]();};}function saveUpdates(_0x39e44a,_0x39c024){return function(_0x36f1cb){if(_0x36f1cb){return _0x36f1cb['update'](_0x39e44a)[_0xf5f2('0x24')](function(_0x4669a6){return _0x4669a6;});}return null;};}function removeEntity(_0x4e8bda,_0x2833fe){return function(_0x287ad5){if(_0x287ad5){return _0x287ad5['destroy']()['then'](function(){_0x4e8bda[_0xf5f2('0x1a')](0xcc)[_0xf5f2('0x19')]();});}};}function handleEntityNotFound(_0x13da6f,_0x1a5bb3){return function(_0xf6c58d){if(!_0xf6c58d){_0x13da6f[_0xf5f2('0x18')](0x194);}return _0xf6c58d;};}function handleError(_0x13a3be,_0x281ec8){_0x281ec8=_0x281ec8||0x1f4;return function(_0x294414){logger['error'](_0x294414[_0xf5f2('0x25')]);if(_0x294414[_0xf5f2('0x26')]){delete _0x294414[_0xf5f2('0x26')];}_0x13a3be[_0xf5f2('0x1a')](_0x281ec8)[_0xf5f2('0x27')](_0x294414);};}exports[_0xf5f2('0x28')]=function(_0x5b6672,_0x53cb96){var _0x22c826={},_0x14c829={},_0x11c771={'count':0x0,'rows':[]};var _0x5027ab=_['map'](db[_0xf5f2('0x29')][_0xf5f2('0x2a')],function(_0x17394a){return{'name':_0x17394a[_0xf5f2('0x2b')],'type':_0x17394a[_0xf5f2('0x2c')]['key']};});_0x14c829['model']=_[_0xf5f2('0x2d')](_0x5027ab,'name');_0x14c829[_0xf5f2('0x2e')]=_['keys'](_0x5b6672[_0xf5f2('0x2e')]);_0x14c829[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],_0x14c829[_0xf5f2('0x2e')]);_0x22c826[_0xf5f2('0x32')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],qs['fields'](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x33')]));_0x22c826[_0xf5f2('0x32')]=_0x22c826[_0xf5f2('0x32')][_0xf5f2('0x34')]?_0x22c826[_0xf5f2('0x32')]:_0x14c829[_0xf5f2('0x31')];if(!_0x5b6672['query'][_0xf5f2('0x35')](_0xf5f2('0x36'))){_0x22c826['limit']=qs[_0xf5f2('0x1d')](_0x5b6672['query'][_0xf5f2('0x1d')]);_0x22c826[_0xf5f2('0x1b')]=qs[_0xf5f2('0x1b')](_0x5b6672[_0xf5f2('0x2e')]['offset']);}_0x22c826['order']=qs[_0xf5f2('0x37')](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x37')]);_0x22c826['where']=qs[_0xf5f2('0x2f')](_['pick'](_0x5b6672[_0xf5f2('0x2e')],_0x14c829['filters']),_0x5027ab);if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]){_0x22c826['where']=_[_0xf5f2('0x39')](_0x22c826[_0xf5f2('0x3a')],{'$or':_[_0xf5f2('0x2d')](_0x5027ab,function(_0x35f738){if(_0x35f738['type']!=='VIRTUAL'){var _0x3d328f={};_0x3d328f[_0x35f738[_0xf5f2('0x26')]]={'$like':'%'+_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]+'%'};return _0x3d328f;}})});}_0x22c826=_[_0xf5f2('0x39')]({},_0x22c826,_0x5b6672[_0xf5f2('0x3b')]);var _0x2bc20e={'where':_0x22c826['where']};return db[_0xf5f2('0x29')][_0xf5f2('0x1e')](_0x2bc20e)['then'](function(_0xc6a1ae){_0x11c771[_0xf5f2('0x1e')]=_0xc6a1ae;if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x3c')]){_0x22c826[_0xf5f2('0x3d')]=[{'attributes':['id',_0xf5f2('0x26'),_0xf5f2('0x3e'),_0xf5f2('0x3f')],'model':db['User'],'as':_0xf5f2('0x40')}];}return db[_0xf5f2('0x29')][_0xf5f2('0x41')](_0x22c826);})['then'](function(_0x509dbc){_0x11c771['rows']=_0x509dbc;return _0x11c771;})[_0xf5f2('0x24')](respondWithFilteredResult(_0x53cb96,_0x22c826))[_0xf5f2('0x42')](handleError(_0x53cb96,null));};exports['show']=function(_0x106272,_0xeed03d){var _0x28e33f={'raw':!![],'where':{'id':_0x106272[_0xf5f2('0x43')]['id']}},_0x31f86c={};_0x31f86c[_0xf5f2('0x31')]=_[_0xf5f2('0x44')](db[_0xf5f2('0x29')][_0xf5f2('0x2a')]);_0x31f86c[_0xf5f2('0x2e')]=_[_0xf5f2('0x44')](_0x106272[_0xf5f2('0x2e')]);_0x31f86c[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x31f86c['model'],_0x31f86c[_0xf5f2('0x2e')]);_0x28e33f['attributes']=_[_0xf5f2('0x30')](_0x31f86c[_0xf5f2('0x31')],qs[_0xf5f2('0x33')](_0x106272[_0xf5f2('0x2e')][_0xf5f2('0x33')]));_0x28e33f[_0xf5f2('0x32')]=_0x28e33f['attributes'][_0xf5f2('0x34')]?_0x28e33f[_0xf5f2('0x32')]:_0x31f86c[_0xf5f2('0x31')];if(_0x106272[_0xf5f2('0x2e')][_0xf5f2('0x3c')]){_0x28e33f[_0xf5f2('0x3d')]=[{'all':!![]}];}_0x28e33f=_[_0xf5f2('0x39')]({},_0x28e33f,_0x106272[_0xf5f2('0x3b')]);return db['VoiceCallReport'][_0xf5f2('0x45')](_0x28e33f)[_0xf5f2('0x24')](handleEntityNotFound(_0xeed03d,null))[_0xf5f2('0x24')](respondWithResult(_0xeed03d,null))['catch'](handleError(_0xeed03d,null));};exports[_0xf5f2('0x46')]=function(_0xc91b64,_0x3179a9){return db['VoiceCallReport']['create'](_0xc91b64[_0xf5f2('0x47')],{})[_0xf5f2('0x24')](respondWithResult(_0x3179a9,0xc9))['catch'](handleError(_0x3179a9,null));};exports[_0xf5f2('0x48')]=function(_0x533cca,_0x740321){return db['VoiceCallReport'][_0xf5f2('0x45')]({'where':{'id':_0x533cca['params']['id']}})[_0xf5f2('0x24')](handleEntityNotFound(_0x740321,null))[_0xf5f2('0x24')](removeEntity(_0x740321,null))[_0xf5f2('0x42')](handleError(_0x740321,null));};exports[_0xf5f2('0x49')]=function(_0x4fa738,_0x3154c1){return db[_0xf5f2('0x29')]['describe']()['then'](respondWithResult(_0x3154c1,null))[_0xf5f2('0x42')](handleError(_0x3154c1,null));};exports[_0xf5f2('0x4a')]=function(_0x57782c,_0x22b645){if(_0x57782c[_0xf5f2('0x47')][_0xf5f2('0x4b')]){delete _0x57782c[_0xf5f2('0x47')]['uniqueid'];}return db['VoiceCallReport'][_0xf5f2('0x45')]({'where':{'uniqueid':_0x57782c[_0xf5f2('0x43')]['id'],'UserId':{'$or':[null,_0x57782c['user']['id']]}}})[_0xf5f2('0x24')](handleEntityNotFound(_0x22b645,null))[_0xf5f2('0x24')](saveUpdates(_0x57782c[_0xf5f2('0x47')],null))[_0xf5f2('0x24')](respondWithResult(_0x22b645,null))[_0xf5f2('0x42')](handleError(_0x22b645,null));};
\ No newline at end of file
+var _0x5f66=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','destroy','then','error','name','send','index','map','VoiceCallReport','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge','type','VIRTUAL','includeAll','include','fullname','alias','User','rows','catch','show','params','find','create','body','describe','uniqueid','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x5f66,0x1a0));var _0x65f6=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x5f66[_0x2f5ac5];return _0x37c9a8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x65f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x65f6('0x1'));var rp=require(_0x65f6('0x2'));var moment=require(_0x65f6('0x3'));var BPromise=require(_0x65f6('0x4'));var Mustache=require(_0x65f6('0x5'));var util=require('util');var path=require(_0x65f6('0x6'));var sox=require('sox');var csv=require(_0x65f6('0x7'));var ejs=require(_0x65f6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x65f6('0x9'));var crypto=require(_0x65f6('0xa'));var jsforce=require(_0x65f6('0xb'));var deskjs=require(_0x65f6('0xc'));var toCsv=require(_0x65f6('0x7'));var querystring=require(_0x65f6('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x65f6('0xe'));var qs=require(_0x65f6('0xf'));var as=require(_0x65f6('0x10'));var hardwareService=require(_0x65f6('0x11'));var logger=require('../../config/logger')(_0x65f6('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x65f6('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x419819,_0x4862a5){_0x4862a5=_0x4862a5||0xcc;return function(_0x2f964a){if(_0x2f964a){return _0x419819[_0x65f6('0x14')](_0x4862a5);}return _0x419819[_0x65f6('0x15')](_0x4862a5)[_0x65f6('0x16')]();};}function respondWithResult(_0x369f96,_0x1d29fd){_0x1d29fd=_0x1d29fd||0xc8;return function(_0x44144b){if(_0x44144b){return _0x369f96[_0x65f6('0x15')](_0x1d29fd)[_0x65f6('0x17')](_0x44144b);}};}function respondWithFilteredResult(_0x3440af,_0x59154e){return function(_0x19b9ff){if(_0x19b9ff){var _0x49a913=typeof _0x59154e['offset']===_0x65f6('0x18')&&typeof _0x59154e[_0x65f6('0x19')]===_0x65f6('0x18');var _0x1c955c=_0x19b9ff[_0x65f6('0x1a')];var _0x1f974c=_0x49a913?0x0:_0x59154e[_0x65f6('0x1b')];var _0x18380e=_0x49a913?_0x19b9ff['count']:_0x59154e['offset']+_0x59154e[_0x65f6('0x19')];var _0x5b4055;if(_0x18380e>=_0x1c955c){_0x18380e=_0x1c955c;_0x5b4055=0xc8;}else{_0x5b4055=0xce;}_0x3440af['status'](_0x5b4055);return _0x3440af['set'](_0x65f6('0x1c'),_0x1f974c+'-'+_0x18380e+'/'+_0x1c955c)[_0x65f6('0x17')](_0x19b9ff);}return null;};}function patchUpdates(_0x5114a4){return function(_0x39e19f){try{jsonpatch[_0x65f6('0x1d')](_0x39e19f,_0x5114a4,!![]);}catch(_0xbee6a4){return BPromise[_0x65f6('0x1e')](_0xbee6a4);}return _0x39e19f[_0x65f6('0x1f')]();};}function saveUpdates(_0xc139c2,_0x581374){return function(_0x197a49){if(_0x197a49){return _0x197a49['update'](_0xc139c2)['then'](function(_0x212247){return _0x212247;});}return null;};}function removeEntity(_0xd173f4,_0x524e42){return function(_0x1eeaaa){if(_0x1eeaaa){return _0x1eeaaa[_0x65f6('0x20')]()[_0x65f6('0x21')](function(){_0xd173f4[_0x65f6('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9d7bb0,_0x59ea32){return function(_0x20a161){if(!_0x20a161){_0x9d7bb0['sendStatus'](0x194);}return _0x20a161;};}function handleError(_0x5cb131,_0x4fde2f){_0x4fde2f=_0x4fde2f||0x1f4;return function(_0x29abdb){logger[_0x65f6('0x22')](_0x29abdb['stack']);if(_0x29abdb[_0x65f6('0x23')]){delete _0x29abdb[_0x65f6('0x23')];}_0x5cb131['status'](_0x4fde2f)[_0x65f6('0x24')](_0x29abdb);};}exports[_0x65f6('0x25')]=function(_0x28d0df,_0x559330){var _0x4ac04b={},_0x488d36={},_0x266cfe={'count':0x0,'rows':[]};var _0x3c032f=_[_0x65f6('0x26')](db[_0x65f6('0x27')][_0x65f6('0x28')],function(_0x14a387){return{'name':_0x14a387[_0x65f6('0x29')],'type':_0x14a387['type']['key']};});_0x488d36[_0x65f6('0x2a')]=_[_0x65f6('0x26')](_0x3c032f,'name');_0x488d36['query']=_[_0x65f6('0x2b')](_0x28d0df[_0x65f6('0x2c')]);_0x488d36[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],_0x488d36[_0x65f6('0x2c')]);_0x4ac04b['attributes']=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x28d0df['query'][_0x65f6('0x2f')]));_0x4ac04b[_0x65f6('0x30')]=_0x4ac04b[_0x65f6('0x30')][_0x65f6('0x31')]?_0x4ac04b[_0x65f6('0x30')]:_0x488d36[_0x65f6('0x2a')];if(!_0x28d0df['query'][_0x65f6('0x32')](_0x65f6('0x33'))){_0x4ac04b['limit']=qs[_0x65f6('0x19')](_0x28d0df['query'][_0x65f6('0x19')]);_0x4ac04b['offset']=qs[_0x65f6('0x1b')](_0x28d0df[_0x65f6('0x2c')]['offset']);}_0x4ac04b[_0x65f6('0x34')]=qs[_0x65f6('0x35')](_0x28d0df[_0x65f6('0x2c')]['sort']);_0x4ac04b['where']=qs[_0x65f6('0x2d')](_['pick'](_0x28d0df[_0x65f6('0x2c')],_0x488d36['filters']),_0x3c032f);if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]){_0x4ac04b['where']=_[_0x65f6('0x37')](_0x4ac04b['where'],{'$or':_['map'](_0x3c032f,function(_0x71b16b){if(_0x71b16b[_0x65f6('0x38')]!==_0x65f6('0x39')){var _0x313be5={};_0x313be5[_0x71b16b[_0x65f6('0x23')]]={'$like':'%'+_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]+'%'};return _0x313be5;}})});}_0x4ac04b=_[_0x65f6('0x37')]({},_0x4ac04b,_0x28d0df['options']);var _0x3aa254={'where':_0x4ac04b['where']};return db[_0x65f6('0x27')][_0x65f6('0x1a')](_0x3aa254)[_0x65f6('0x21')](function(_0x2ea7f7){_0x266cfe['count']=_0x2ea7f7;if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x4ac04b[_0x65f6('0x3b')]=[{'attributes':['id',_0x65f6('0x23'),_0x65f6('0x3c'),_0x65f6('0x3d')],'model':db[_0x65f6('0x3e')],'as':_0x65f6('0x3e')}];}return db[_0x65f6('0x27')]['findAll'](_0x4ac04b);})[_0x65f6('0x21')](function(_0x400ed2){_0x266cfe[_0x65f6('0x3f')]=_0x400ed2;return _0x266cfe;})[_0x65f6('0x21')](respondWithFilteredResult(_0x559330,_0x4ac04b))[_0x65f6('0x40')](handleError(_0x559330,null));};exports[_0x65f6('0x41')]=function(_0xe0b72d,_0x2e91e8){var _0x461393={'raw':!![],'where':{'id':_0xe0b72d[_0x65f6('0x42')]['id']}},_0x2abbed={};_0x2abbed[_0x65f6('0x2a')]=_[_0x65f6('0x2b')](db[_0x65f6('0x27')][_0x65f6('0x28')]);_0x2abbed[_0x65f6('0x2c')]=_['keys'](_0xe0b72d[_0x65f6('0x2c')]);_0x2abbed[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x2abbed[_0x65f6('0x2a')],_0x2abbed['query']);_0x461393[_0x65f6('0x30')]=_[_0x65f6('0x2e')](_0x2abbed[_0x65f6('0x2a')],qs['fields'](_0xe0b72d[_0x65f6('0x2c')][_0x65f6('0x2f')]));_0x461393[_0x65f6('0x30')]=_0x461393[_0x65f6('0x30')]['length']?_0x461393[_0x65f6('0x30')]:_0x2abbed['model'];if(_0xe0b72d[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x461393['include']=[{'all':!![]}];}_0x461393=_[_0x65f6('0x37')]({},_0x461393,_0xe0b72d['options']);return db[_0x65f6('0x27')][_0x65f6('0x43')](_0x461393)[_0x65f6('0x21')](handleEntityNotFound(_0x2e91e8,null))[_0x65f6('0x21')](respondWithResult(_0x2e91e8,null))[_0x65f6('0x40')](handleError(_0x2e91e8,null));};exports[_0x65f6('0x44')]=function(_0x4d30c5,_0x51bf6c){return db[_0x65f6('0x27')][_0x65f6('0x44')](_0x4d30c5[_0x65f6('0x45')],{})[_0x65f6('0x21')](respondWithResult(_0x51bf6c,0xc9))[_0x65f6('0x40')](handleError(_0x51bf6c,null));};exports[_0x65f6('0x20')]=function(_0x149c28,_0x41690c){return db[_0x65f6('0x27')]['find']({'where':{'id':_0x149c28[_0x65f6('0x42')]['id']}})[_0x65f6('0x21')](handleEntityNotFound(_0x41690c,null))[_0x65f6('0x21')](removeEntity(_0x41690c,null))['catch'](handleError(_0x41690c,null));};exports[_0x65f6('0x46')]=function(_0x42d453,_0x49ba5a){return db[_0x65f6('0x27')][_0x65f6('0x46')]()['then'](respondWithResult(_0x49ba5a,null))[_0x65f6('0x40')](handleError(_0x49ba5a,null));};exports['update']=function(_0x247be3,_0x3b241f){if(_0x247be3[_0x65f6('0x45')]['uniqueid']){delete _0x247be3[_0x65f6('0x45')][_0x65f6('0x47')];}return db['VoiceCallReport'][_0x65f6('0x43')]({'where':{'uniqueid':_0x247be3[_0x65f6('0x42')]['id'],'UserId':{'$or':[null,_0x247be3['user']['id']]}}})[_0x65f6('0x21')](handleEntityNotFound(_0x3b241f,null))[_0x65f6('0x21')](saveUpdates(_0x247be3[_0x65f6('0x45')],null))[_0x65f6('0x21')](respondWithResult(_0x3b241f,null))[_0x65f6('0x40')](handleError(_0x3b241f,null));};
\ No newline at end of file
index 3857275..d1413eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec05=['report_call','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','rimraf','./voiceCallReport.attributes','exports','VoiceCallReport'];(function(_0x1d1b2b,_0x3623ab){var _0x1693d2=function(_0x423304){while(--_0x423304){_0x1d1b2b['push'](_0x1d1b2b['shift']());}};_0x1693d2(++_0x3623ab);}(_0xec05,0xe6));var _0x5ec0=function(_0x7aa4cf,_0x4fe1aa){_0x7aa4cf=_0x7aa4cf-0x0;var _0x36eb0f=_0xec05[_0x7aa4cf];return _0x36eb0f;};'use strict';var _=require(_0x5ec0('0x0'));var util=require(_0x5ec0('0x1'));var logger=require(_0x5ec0('0x2'))(_0x5ec0('0x3'));var moment=require(_0x5ec0('0x4'));var BPromise=require(_0x5ec0('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x5ec0('0x6'));var config=require('../../config/environment');var attributes=require(_0x5ec0('0x7'));module[_0x5ec0('0x8')]=function(_0x34949b,_0xcad5cd){return _0x34949b['define'](_0x5ec0('0x9'),attributes,{'tableName':_0x5ec0('0xa'),'paranoid':![],'indexes':[{'fields':[_0x5ec0('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6412=['path','../../config/environment','./voiceCallReport.attributes','exports','define','VoiceCallReport','report_call','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x46cf9f,_0x21619a){var _0x2a980f=function(_0x5cedbe){while(--_0x5cedbe){_0x46cf9f['push'](_0x46cf9f['shift']());}};_0x2a980f(++_0x21619a);}(_0x6412,0xad));var _0x2641=function(_0x1c8fb1,_0xb39e81){_0x1c8fb1=_0x1c8fb1-0x0;var _0x57f8e8=_0x6412[_0x1c8fb1];return _0x57f8e8;};'use strict';var _=require(_0x2641('0x0'));var util=require(_0x2641('0x1'));var logger=require(_0x2641('0x2'))(_0x2641('0x3'));var moment=require(_0x2641('0x4'));var BPromise=require(_0x2641('0x5'));var rp=require(_0x2641('0x6'));var fs=require('fs');var path=require(_0x2641('0x7'));var rimraf=require('rimraf');var config=require(_0x2641('0x8'));var attributes=require(_0x2641('0x9'));module[_0x2641('0xa')]=function(_0x2cdab6,_0x4421a1){return _0x2cdab6[_0x2641('0xb')](_0x2641('0xc'),attributes,{'tableName':_0x2641('0xd'),'paranoid':![],'indexes':[{'fields':[_0x2641('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index a66f40d..5ad2f1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x861f=['../../mysqldb','../../config/utils','jayson/promise','client','http','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','VoiceCallReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','attributes','limit','include','map','model','debug','stringify','CreateVoiceCallReport','create','body','UpdateVoiceCallReport','update','where','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x4cecfc,_0x6263c1){var _0x10cfb2=function(_0xeb2658){while(--_0xeb2658){_0x4cecfc['push'](_0x4cecfc['shift']());}};_0x10cfb2(++_0x6263c1);}(_0x861f,0xe4));var _0xf861=function(_0x1f5887,_0x2fa1f1){_0x1f5887=_0x1f5887-0x0;var _0x21774b=_0x861f[_0x1f5887];return _0x21774b;};'use strict';var _=require(_0xf861('0x0'));var util=require(_0xf861('0x1'));var moment=require(_0xf861('0x2'));var BPromise=require(_0xf861('0x3'));var rs=require(_0xf861('0x4'));var fs=require('fs');var Redis=require(_0xf861('0x5'));var db=require(_0xf861('0x6'))['db'];var utils=require(_0xf861('0x7'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xf861('0x8'));var client=jayson[_0xf861('0x9')][_0xf861('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x32233a,_0x115b10,_0xa98944){return new BPromise(function(_0xa7eae5,_0x518641){return client['request'](_0x32233a,_0xa98944)[_0xf861('0xb')](function(_0x29a847){logger[_0xf861('0xc')](_0xf861('0xd'),_0x115b10,_0xf861('0xe'));logger['debug'](_0xf861('0xf'),_0x115b10,'request\x20sent',JSON['stringify'](_0x29a847));if(_0x29a847[_0xf861('0x10')]){if(_0x29a847[_0xf861('0x10')][_0xf861('0x11')]===0x1f4){logger[_0xf861('0x10')](_0xf861('0xd'),_0x115b10,_0x29a847[_0xf861('0x10')][_0xf861('0x12')]);return _0x518641(_0x29a847[_0xf861('0x10')][_0xf861('0x12')]);}logger['error']('VoiceCallReport,\x20%s,\x20%s',_0x115b10,_0x29a847['error']['message']);return _0xa7eae5(_0x29a847['error'][_0xf861('0x12')]);}else{logger['info'](_0xf861('0xd'),_0x115b10,_0xf861('0xe'));_0xa7eae5(_0x29a847[_0xf861('0x13')][_0xf861('0x12')]);}})[_0xf861('0x14')](function(_0x4365d1){logger['error']('VoiceCallReport,\x20%s,\x20%s',_0x115b10,_0x4365d1);_0x518641(_0x4365d1);});});}exports[_0xf861('0x15')]=function(_0x28d85f){var _0x13fde3=this;return new Promise(function(_0x4f3ee8,_0x15cf44){return db[_0xf861('0x16')][_0xf861('0x17')]({'raw':_0x28d85f['options']?_0x28d85f[_0xf861('0x18')][_0xf861('0x19')]===undefined?!![]:![]:!![],'where':_0x28d85f[_0xf861('0x18')]?_0x28d85f[_0xf861('0x18')]['where']||null:null,'attributes':_0x28d85f[_0xf861('0x18')]?_0x28d85f['options'][_0xf861('0x1a')]||null:null,'limit':_0x28d85f[_0xf861('0x18')]?_0x28d85f[_0xf861('0x18')][_0xf861('0x1b')]||null:null,'include':_0x28d85f[_0xf861('0x18')]?_0x28d85f[_0xf861('0x18')][_0xf861('0x1c')]?_[_0xf861('0x1d')](_0x28d85f[_0xf861('0x18')][_0xf861('0x1c')],function(_0x598665){return{'model':db[_0x598665[_0xf861('0x1e')]],'as':_0x598665['as'],'attributes':_0x598665[_0xf861('0x1a')],'include':_0x598665[_0xf861('0x1c')]?_['map'](_0x598665[_0xf861('0x1c')],function(_0x3150fb){return{'model':db[_0x3150fb[_0xf861('0x1e')]],'as':_0x3150fb['as'],'attributes':_0x3150fb['attributes'],'include':_0x3150fb[_0xf861('0x1c')]?_['map'](_0x3150fb[_0xf861('0x1c')],function(_0x48b1c5){return{'model':db[_0x48b1c5[_0xf861('0x1e')]],'as':_0x48b1c5['as'],'attributes':_0x48b1c5[_0xf861('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xf861('0xb')](function(_0x162731){logger[_0xf861('0xc')]('GetVoiceCallReport',_0x28d85f);logger[_0xf861('0x1f')](_0xf861('0x15'),_0x28d85f,JSON[_0xf861('0x20')](_0x162731));_0x4f3ee8(_0x162731);})['catch'](function(_0x37a2a1){logger['error'](_0xf861('0x15'),_0x37a2a1['message'],_0x28d85f);_0x15cf44(_0x13fde3[_0xf861('0x10')](0x1f4,_0x37a2a1['message']));});});};exports[_0xf861('0x21')]=function(_0x4082ee){var _0x30c45a=this;return new Promise(function(_0x3ed7f0,_0x4e4f4f){return db[_0xf861('0x16')][_0xf861('0x22')](_0x4082ee[_0xf861('0x23')],{'raw':_0x4082ee[_0xf861('0x18')]?_0x4082ee[_0xf861('0x18')][_0xf861('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x5bf740){logger[_0xf861('0xc')](_0xf861('0x21'),_0x4082ee);logger['debug'](_0xf861('0x21'),_0x4082ee,JSON['stringify'](_0x5bf740));_0x3ed7f0(_0x5bf740);})[_0xf861('0x14')](function(_0x5999b3){logger['error']('CreateVoiceCallReport',_0x5999b3[_0xf861('0x12')],_0x4082ee);_0x4e4f4f(_0x30c45a[_0xf861('0x10')](0x1f4,_0x5999b3['message']));});});};exports[_0xf861('0x24')]=function(_0x528e40){var _0xf95a54=this;return new Promise(function(_0x49fb53,_0x1b320b){return db['VoiceCallReport'][_0xf861('0x25')](_0x528e40[_0xf861('0x23')],{'raw':_0x528e40['options']?_0x528e40[_0xf861('0x18')][_0xf861('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x528e40['options']?_0x528e40[_0xf861('0x18')][_0xf861('0x26')]||null:null,'attributes':_0x528e40['options']?_0x528e40[_0xf861('0x18')]['attributes']||null:null,'limit':_0x528e40['options']?_0x528e40[_0xf861('0x18')][_0xf861('0x1b')]||null:null})[_0xf861('0xb')](function(_0x26df14){logger['info']('UpdateVoiceCallReport',_0x528e40);logger[_0xf861('0x1f')](_0xf861('0x24'),_0x528e40,JSON[_0xf861('0x20')](_0x26df14));_0x49fb53(_0x26df14);})[_0xf861('0x14')](function(_0x2618a8){logger[_0xf861('0x10')](_0xf861('0x24'),_0x2618a8[_0xf861('0x12')],_0x528e40);_0x1b320b(_0xf95a54[_0xf861('0x10')](0x1f4,_0x2618a8[_0xf861('0x12')]));});});};
\ No newline at end of file
+var _0x861c=['message','result','catch','GetVoiceCallReport','findAll','options','raw','attributes','limit','include','map','model','then','CreateVoiceCallReport','VoiceCallReport','create','UpdateVoiceCallReport','update','where','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','VoiceCallReport,\x20%s,\x20%s','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x1f351b,_0x26a803){var _0x48677f=function(_0x3b003d){while(--_0x3b003d){_0x1f351b['push'](_0x1f351b['shift']());}};_0x48677f(++_0x26a803);}(_0x861c,0x1c0));var _0xc861=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x861c[_0x21a9d9];return _0x46adce;};'use strict';var _=require('lodash');var util=require(_0xc861('0x0'));var moment=require(_0xc861('0x1'));var BPromise=require(_0xc861('0x2'));var rs=require(_0xc861('0x3'));var fs=require('fs');var Redis=require(_0xc861('0x4'));var db=require(_0xc861('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc861('0x6'))(_0xc861('0x7'));var config=require(_0xc861('0x8'));var jayson=require(_0xc861('0x9'));var client=jayson[_0xc861('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x564a3b,_0x128e10,_0x13a540){return new BPromise(function(_0x3f1837,_0x235566){return client[_0xc861('0xb')](_0x564a3b,_0x13a540)['then'](function(_0x4137f1){logger[_0xc861('0xc')](_0xc861('0xd'),_0x128e10,'request\x20sent');logger[_0xc861('0xe')](_0xc861('0xf'),_0x128e10,_0xc861('0x10'),JSON[_0xc861('0x11')](_0x4137f1));if(_0x4137f1[_0xc861('0x12')]){if(_0x4137f1[_0xc861('0x12')][_0xc861('0x13')]===0x1f4){logger[_0xc861('0x12')]('VoiceCallReport,\x20%s,\x20%s',_0x128e10,_0x4137f1[_0xc861('0x12')]['message']);return _0x235566(_0x4137f1['error'][_0xc861('0x14')]);}logger['error']('VoiceCallReport,\x20%s,\x20%s',_0x128e10,_0x4137f1[_0xc861('0x12')][_0xc861('0x14')]);return _0x3f1837(_0x4137f1[_0xc861('0x12')][_0xc861('0x14')]);}else{logger[_0xc861('0xc')](_0xc861('0xd'),_0x128e10,_0xc861('0x10'));_0x3f1837(_0x4137f1[_0xc861('0x15')][_0xc861('0x14')]);}})[_0xc861('0x16')](function(_0x427587){logger[_0xc861('0x12')](_0xc861('0xd'),_0x128e10,_0x427587);_0x235566(_0x427587);});});}exports[_0xc861('0x17')]=function(_0x1440f3){var _0x2772ef=this;return new Promise(function(_0x215a56,_0x5824a2){return db['VoiceCallReport'][_0xc861('0x18')]({'raw':_0x1440f3[_0xc861('0x19')]?_0x1440f3['options'][_0xc861('0x1a')]===undefined?!![]:![]:!![],'where':_0x1440f3[_0xc861('0x19')]?_0x1440f3[_0xc861('0x19')]['where']||null:null,'attributes':_0x1440f3[_0xc861('0x19')]?_0x1440f3[_0xc861('0x19')][_0xc861('0x1b')]||null:null,'limit':_0x1440f3[_0xc861('0x19')]?_0x1440f3[_0xc861('0x19')][_0xc861('0x1c')]||null:null,'include':_0x1440f3[_0xc861('0x19')]?_0x1440f3[_0xc861('0x19')][_0xc861('0x1d')]?_[_0xc861('0x1e')](_0x1440f3[_0xc861('0x19')][_0xc861('0x1d')],function(_0x1a9d5e){return{'model':db[_0x1a9d5e[_0xc861('0x1f')]],'as':_0x1a9d5e['as'],'attributes':_0x1a9d5e[_0xc861('0x1b')],'include':_0x1a9d5e[_0xc861('0x1d')]?_[_0xc861('0x1e')](_0x1a9d5e[_0xc861('0x1d')],function(_0x541507){return{'model':db[_0x541507[_0xc861('0x1f')]],'as':_0x541507['as'],'attributes':_0x541507[_0xc861('0x1b')],'include':_0x541507[_0xc861('0x1d')]?_[_0xc861('0x1e')](_0x541507['include'],function(_0x1213ff){return{'model':db[_0x1213ff[_0xc861('0x1f')]],'as':_0x1213ff['as'],'attributes':_0x1213ff[_0xc861('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xc861('0x20')](function(_0x1d9fa9){logger['info'](_0xc861('0x17'),_0x1440f3);logger[_0xc861('0xe')]('GetVoiceCallReport',_0x1440f3,JSON[_0xc861('0x11')](_0x1d9fa9));_0x215a56(_0x1d9fa9);})['catch'](function(_0x37cf4b){logger[_0xc861('0x12')](_0xc861('0x17'),_0x37cf4b[_0xc861('0x14')],_0x1440f3);_0x5824a2(_0x2772ef[_0xc861('0x12')](0x1f4,_0x37cf4b[_0xc861('0x14')]));});});};exports[_0xc861('0x21')]=function(_0xd704b1){var _0x21cb09=this;return new Promise(function(_0x5732d0,_0x55d791){return db[_0xc861('0x22')][_0xc861('0x23')](_0xd704b1['body'],{'raw':_0xd704b1[_0xc861('0x19')]?_0xd704b1[_0xc861('0x19')][_0xc861('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x5012a8){logger[_0xc861('0xc')]('CreateVoiceCallReport',_0xd704b1);logger[_0xc861('0xe')](_0xc861('0x21'),_0xd704b1,JSON['stringify'](_0x5012a8));_0x5732d0(_0x5012a8);})['catch'](function(_0x10df19){logger[_0xc861('0x12')](_0xc861('0x21'),_0x10df19[_0xc861('0x14')],_0xd704b1);_0x55d791(_0x21cb09[_0xc861('0x12')](0x1f4,_0x10df19['message']));});});};exports[_0xc861('0x24')]=function(_0x5866c8){var _0x3042f0=this;return new Promise(function(_0x1576ca,_0x116d98){return db['VoiceCallReport'][_0xc861('0x25')](_0x5866c8['body'],{'raw':_0x5866c8[_0xc861('0x19')]?_0x5866c8[_0xc861('0x19')][_0xc861('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5866c8[_0xc861('0x19')]?_0x5866c8[_0xc861('0x19')][_0xc861('0x26')]||null:null,'attributes':_0x5866c8['options']?_0x5866c8[_0xc861('0x19')][_0xc861('0x1b')]||null:null,'limit':_0x5866c8[_0xc861('0x19')]?_0x5866c8['options'][_0xc861('0x1c')]||null:null})[_0xc861('0x20')](function(_0x1007b3){logger['info'](_0xc861('0x24'),_0x5866c8);logger['debug']('UpdateVoiceCallReport',_0x5866c8,JSON[_0xc861('0x11')](_0x1007b3));_0x1576ca(_0x1007b3);})[_0xc861('0x16')](function(_0x35bdab){logger[_0xc861('0x12')](_0xc861('0x24'),_0x35bdab[_0xc861('0x14')],_0x5866c8);_0x116d98(_0x3042f0[_0xc861('0x12')](0x1f4,_0x35bdab[_0xc861('0x14')]));});});};
\ No newline at end of file
index 1141671..b83de42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfa4=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','index','show','post','create','put','/:id','delete','destroy','multer','util','connect-timeout'];(function(_0x1a55c5,_0x4949a8){var _0x5eeeb2=function(_0x567038){while(--_0x567038){_0x1a55c5['push'](_0x1a55c5['shift']());}};_0x5eeeb2(++_0x4949a8);}(_0xcfa4,0xe7));var _0x4cfa=function(_0x14790b,_0x31f4fa){_0x14790b=_0x14790b-0x0;var _0x139221=_0xcfa4[_0x14790b];return _0x139221;};'use strict';var multer=require(_0x4cfa('0x0'));var util=require(_0x4cfa('0x1'));var path=require('path');var timeout=require(_0x4cfa('0x2'));var express=require('express');var router=express[_0x4cfa('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x4cfa('0x4'));var interaction=require(_0x4cfa('0x5'));var config=require(_0x4cfa('0x6'));var controller=require(_0x4cfa('0x7'));router[_0x4cfa('0x8')]('/',auth[_0x4cfa('0x9')](),controller[_0x4cfa('0xa')]);router[_0x4cfa('0x8')]('/:id',auth[_0x4cfa('0x9')](),controller[_0x4cfa('0xb')]);router[_0x4cfa('0xc')]('/',auth[_0x4cfa('0x9')](),controller[_0x4cfa('0xd')]);router[_0x4cfa('0xe')](_0x4cfa('0xf'),auth['isAuthenticated'](),controller['update']);router[_0x4cfa('0x10')]('/:id',auth[_0x4cfa('0x9')](),controller[_0x4cfa('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x6b0c=['show','post','create','put','update','delete','destroy','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceChanSpy.controller','get','isAuthenticated','/:id'];(function(_0xe2da26,_0x1242f0){var _0x15eef5=function(_0x272794){while(--_0x272794){_0xe2da26['push'](_0xe2da26['shift']());}};_0x15eef5(++_0x1242f0);}(_0x6b0c,0x106));var _0xc6b0=function(_0x2cd976,_0x302575){_0x2cd976=_0x2cd976-0x0;var _0x1f37cb=_0x6b0c[_0x2cd976];return _0x1f37cb;};'use strict';var multer=require(_0xc6b0('0x0'));var util=require(_0xc6b0('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xc6b0('0x2'));var router=express['Router']();var fs_extra=require(_0xc6b0('0x3'));var auth=require(_0xc6b0('0x4'));var interaction=require(_0xc6b0('0x5'));var config=require('../../config/environment');var controller=require(_0xc6b0('0x6'));router[_0xc6b0('0x7')]('/',auth[_0xc6b0('0x8')](),controller['index']);router[_0xc6b0('0x7')](_0xc6b0('0x9'),auth['isAuthenticated'](),controller[_0xc6b0('0xa')]);router[_0xc6b0('0xb')]('/',auth[_0xc6b0('0x8')](),controller[_0xc6b0('0xc')]);router[_0xc6b0('0xd')]('/:id',auth[_0xc6b0('0x8')](),controller[_0xc6b0('0xe')]);router[_0xc6b0('0xf')](_0xc6b0('0x9'),auth['isAuthenticated'](),controller[_0xc6b0('0x10')]);module['exports']=router;
\ No newline at end of file
index 593ffb2..0c48045 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ccd=['STRING','name','setDataValue','options','getDataValue','split','BOOLEAN','exports'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x9ccd,0x1ef));var _0xd9cc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9ccd[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0xd9cc('0x0')]={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0xd9cc('0x1')],'unique':_0xd9cc('0x2'),'allowNull':![]},'options':{'type':Sequelize['STRING'],'set':function(_0x11e47a){this[_0xd9cc('0x3')](_0xd9cc('0x4'),_0x11e47a?_0x11e47a['join'](''):[]);},'get':function(){return this[_0xd9cc('0x5')](_0xd9cc('0x4'))?this[_0xd9cc('0x5')](_0xd9cc('0x4'))[_0xd9cc('0x6')](''):[];}},'auth':{'type':Sequelize[_0xd9cc('0x7')],'defaultValue':![]},'password':{'type':Sequelize[_0xd9cc('0x1')]},'record':{'type':Sequelize[_0xd9cc('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xd9cc('0x1')]},'description':{'type':Sequelize[_0xd9cc('0x1')]}};
\ No newline at end of file
+var _0x1fbd=['join','options','getDataValue','split','BOOLEAN','exports','STRING','setDataValue'];(function(_0x5b2204,_0x5eda09){var _0x35709e=function(_0x48f89e){while(--_0x48f89e){_0x5b2204['push'](_0x5b2204['shift']());}};_0x35709e(++_0x5eda09);}(_0x1fbd,0x75));var _0xd1fb=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0x1fbd[_0x4f9b18];return _0x29f20c;};'use strict';var Sequelize=require('sequelize');module[_0xd1fb('0x0')]={'name':{'type':Sequelize[_0xd1fb('0x1')]},'prefix':{'type':Sequelize[_0xd1fb('0x1')],'unique':'name','allowNull':![]},'options':{'type':Sequelize[_0xd1fb('0x1')],'set':function(_0x1c4bc5){this[_0xd1fb('0x2')]('options',_0x1c4bc5?_0x1c4bc5[_0xd1fb('0x3')](''):[]);},'get':function(){return this['getDataValue'](_0xd1fb('0x4'))?this[_0xd1fb('0x5')](_0xd1fb('0x4'))[_0xd1fb('0x6')](''):[];}},'auth':{'type':Sequelize[_0xd1fb('0x7')],'defaultValue':![]},'password':{'type':Sequelize[_0xd1fb('0x1')]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xd1fb('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4229feb..0b6748c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d9b=['filter','type','options','VoiceChanSpy','rows','params','length','includeAll','include','merge','find','catch','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','ChanSpies','UserProfileSection','create','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','lodash','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','apply','reject','save','update','then','destroy','get','UserProfileResource','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick'];(function(_0x9ca549,_0x307b85){var _0x154d7b=function(_0x467d61){while(--_0x467d61){_0x9ca549['push'](_0x9ca549['shift']());}};_0x154d7b(++_0x307b85);}(_0x8d9b,0x104));var _0xb8d9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8d9b[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xb8d9('0x0'));var rimraf=require(_0xb8d9('0x1'));var zipdir=require(_0xb8d9('0x2'));var jsonpatch=require(_0xb8d9('0x3'));var rp=require(_0xb8d9('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xb8d9('0x5'));var util=require('util');var path=require(_0xb8d9('0x6'));var sox=require(_0xb8d9('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb8d9('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xb8d9('0x9'));var toCsv=require(_0xb8d9('0xa'));var querystring=require(_0xb8d9('0xb'));var Papa=require(_0xb8d9('0xc'));var Redis=require(_0xb8d9('0xd'));var authService=require(_0xb8d9('0xe'));var qs=require(_0xb8d9('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb8d9('0x10'));var logger=require('../../config/logger')(_0xb8d9('0x11'));var utils=require(_0xb8d9('0x12'));var config=require(_0xb8d9('0x13'));var licenseUtil=require(_0xb8d9('0x14'));var db=require(_0xb8d9('0x15'))['db'];function respondWithStatusCode(_0x13b1d8,_0x10b7fe){_0x10b7fe=_0x10b7fe||0xcc;return function(_0x265472){if(_0x265472){return _0x13b1d8[_0xb8d9('0x16')](_0x10b7fe);}return _0x13b1d8[_0xb8d9('0x17')](_0x10b7fe)[_0xb8d9('0x18')]();};}function respondWithResult(_0x4b0f9,_0x1bcb02){_0x1bcb02=_0x1bcb02||0xc8;return function(_0xb3fa68){if(_0xb3fa68){return _0x4b0f9['status'](_0x1bcb02)[_0xb8d9('0x19')](_0xb3fa68);}};}function respondWithFilteredResult(_0x2c5265,_0x513edf){return function(_0x24f33a){if(_0x24f33a){var _0x283780=typeof _0x513edf['offset']==='undefined'&&typeof _0x513edf['limit']===_0xb8d9('0x1a');var _0x2d1b34=_0x24f33a[_0xb8d9('0x1b')];var _0x1183e4=_0x283780?0x0:_0x513edf['offset'];var _0x31b33f=_0x283780?_0x24f33a['count']:_0x513edf[_0xb8d9('0x1c')]+_0x513edf[_0xb8d9('0x1d')];var _0x447367;if(_0x31b33f>=_0x2d1b34){_0x31b33f=_0x2d1b34;_0x447367=0xc8;}else{_0x447367=0xce;}_0x2c5265[_0xb8d9('0x17')](_0x447367);return _0x2c5265[_0xb8d9('0x1e')]('Content-Range',_0x1183e4+'-'+_0x31b33f+'/'+_0x2d1b34)['json'](_0x24f33a);}return null;};}function patchUpdates(_0x5444a5){return function(_0x42f600){try{jsonpatch[_0xb8d9('0x1f')](_0x42f600,_0x5444a5,!![]);}catch(_0x15495f){return BPromise[_0xb8d9('0x20')](_0x15495f);}return _0x42f600[_0xb8d9('0x21')]();};}function saveUpdates(_0x48c504,_0x963afa){return function(_0x430794){if(_0x430794){return _0x430794[_0xb8d9('0x22')](_0x48c504)[_0xb8d9('0x23')](function(_0x3cefe3){return _0x3cefe3;});}return null;};}function removeEntity(_0x1d94aa,_0x3f4b9d){return function(_0x3d1659){if(_0x3d1659){return _0x3d1659[_0xb8d9('0x24')]()[_0xb8d9('0x23')](function(){var _0x52df47=_0x3d1659[_0xb8d9('0x25')]({'plain':!![]});var _0x49380d='ChanSpies';return db[_0xb8d9('0x26')][_0xb8d9('0x24')]({'where':{'type':_0x49380d,'resourceId':_0x52df47['id']}})[_0xb8d9('0x23')](function(){return _0x3d1659;});})[_0xb8d9('0x23')](function(){_0x1d94aa[_0xb8d9('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x241041,_0x282db6){return function(_0x3111aa){if(!_0x3111aa){_0x241041['sendStatus'](0x194);}return _0x3111aa;};}function handleError(_0x2d1439,_0x1c9bd4){_0x1c9bd4=_0x1c9bd4||0x1f4;return function(_0x336918){logger['error'](_0x336918[_0xb8d9('0x27')]);if(_0x336918[_0xb8d9('0x28')]){delete _0x336918['name'];}_0x2d1439[_0xb8d9('0x17')](_0x1c9bd4)[_0xb8d9('0x29')](_0x336918);};}exports[_0xb8d9('0x2a')]=function(_0x1b1212,_0x358e4d){var _0x84b01c={},_0x13120c={},_0x27ed72={'count':0x0,'rows':[]};var _0x8674fc=_[_0xb8d9('0x2b')](db['VoiceChanSpy'][_0xb8d9('0x2c')],function(_0x374def){return{'name':_0x374def[_0xb8d9('0x2d')],'type':_0x374def['type'][_0xb8d9('0x2e')]};});_0x13120c[_0xb8d9('0x2f')]=_[_0xb8d9('0x2b')](_0x8674fc,_0xb8d9('0x28'));_0x13120c[_0xb8d9('0x30')]=_[_0xb8d9('0x31')](_0x1b1212['query']);_0x13120c['filters']=_[_0xb8d9('0x32')](_0x13120c[_0xb8d9('0x2f')],_0x13120c[_0xb8d9('0x30')]);_0x84b01c[_0xb8d9('0x33')]=_[_0xb8d9('0x32')](_0x13120c[_0xb8d9('0x2f')],qs['fields'](_0x1b1212['query'][_0xb8d9('0x34')]));_0x84b01c[_0xb8d9('0x33')]=_0x84b01c[_0xb8d9('0x33')]['length']?_0x84b01c[_0xb8d9('0x33')]:_0x13120c['model'];if(!_0x1b1212[_0xb8d9('0x30')][_0xb8d9('0x35')](_0xb8d9('0x36'))){_0x84b01c['limit']=qs[_0xb8d9('0x1d')](_0x1b1212[_0xb8d9('0x30')]['limit']);_0x84b01c['offset']=qs[_0xb8d9('0x1c')](_0x1b1212[_0xb8d9('0x30')][_0xb8d9('0x1c')]);}_0x84b01c[_0xb8d9('0x37')]=qs[_0xb8d9('0x38')](_0x1b1212[_0xb8d9('0x30')][_0xb8d9('0x38')]);_0x84b01c[_0xb8d9('0x39')]=qs[_0xb8d9('0x3a')](_[_0xb8d9('0x3b')](_0x1b1212[_0xb8d9('0x30')],_0x13120c[_0xb8d9('0x3a')]),_0x8674fc);if(_0x1b1212[_0xb8d9('0x30')][_0xb8d9('0x3c')]){_0x84b01c['where']=_['merge'](_0x84b01c[_0xb8d9('0x39')],{'$or':_[_0xb8d9('0x2b')](_0x8674fc,function(_0x364bb1){if(_0x364bb1[_0xb8d9('0x3d')]!=='VIRTUAL'){var _0x4b1d71={};_0x4b1d71[_0x364bb1[_0xb8d9('0x28')]]={'$like':'%'+_0x1b1212['query'][_0xb8d9('0x3c')]+'%'};return _0x4b1d71;}})});}_0x84b01c=_['merge']({},_0x84b01c,_0x1b1212[_0xb8d9('0x3e')]);var _0x5ae97b={'where':_0x84b01c[_0xb8d9('0x39')]};return db[_0xb8d9('0x3f')][_0xb8d9('0x1b')](_0x5ae97b)['then'](function(_0x40fd3e){_0x27ed72[_0xb8d9('0x1b')]=_0x40fd3e;if(_0x1b1212[_0xb8d9('0x30')]['includeAll']){_0x84b01c['include']=[{'all':!![]}];}return db['VoiceChanSpy']['findAll'](_0x84b01c);})['then'](function(_0xc1816a){_0x27ed72[_0xb8d9('0x40')]=_0xc1816a;return _0x27ed72;})[_0xb8d9('0x23')](respondWithFilteredResult(_0x358e4d,_0x84b01c))['catch'](handleError(_0x358e4d,null));};exports['show']=function(_0x142e54,_0x496d4f){var _0x13f7ce={'raw':![],'where':{'id':_0x142e54[_0xb8d9('0x41')]['id']}},_0x25ae38={};_0x25ae38[_0xb8d9('0x2f')]=_[_0xb8d9('0x31')](db['VoiceChanSpy'][_0xb8d9('0x2c')]);_0x25ae38[_0xb8d9('0x30')]=_['keys'](_0x142e54[_0xb8d9('0x30')]);_0x25ae38[_0xb8d9('0x3a')]=_['intersection'](_0x25ae38['model'],_0x25ae38[_0xb8d9('0x30')]);_0x13f7ce[_0xb8d9('0x33')]=_[_0xb8d9('0x32')](_0x25ae38[_0xb8d9('0x2f')],qs[_0xb8d9('0x34')](_0x142e54['query'][_0xb8d9('0x34')]));_0x13f7ce[_0xb8d9('0x33')]=_0x13f7ce[_0xb8d9('0x33')][_0xb8d9('0x42')]?_0x13f7ce[_0xb8d9('0x33')]:_0x25ae38[_0xb8d9('0x2f')];if(_0x142e54['query'][_0xb8d9('0x43')]){_0x13f7ce[_0xb8d9('0x44')]=[{'all':!![]}];}_0x13f7ce=_[_0xb8d9('0x45')]({},_0x13f7ce,_0x142e54[_0xb8d9('0x3e')]);return db[_0xb8d9('0x3f')][_0xb8d9('0x46')](_0x13f7ce)['then'](handleEntityNotFound(_0x496d4f,null))[_0xb8d9('0x23')](respondWithResult(_0x496d4f,null))[_0xb8d9('0x47')](handleError(_0x496d4f,null));};exports['create']=function(_0x212310,_0x41f38b){return db['VoiceChanSpy']['create'](_0x212310[_0xb8d9('0x48')],{})[_0xb8d9('0x23')](function(_0x3c2a57){var _0xca2c82=_0x212310[_0xb8d9('0x49')][_0xb8d9('0x25')]({'plain':!![]});if(!_0xca2c82)throw new Error(_0xb8d9('0x4a'));if(_0xca2c82['role']===_0xb8d9('0x49')){var _0x431c21=_0x3c2a57[_0xb8d9('0x25')]({'plain':!![]});var _0x53575d=_0xb8d9('0x4b');return db[_0xb8d9('0x4c')]['find']({'where':{'name':_0x53575d,'userProfileId':_0xca2c82['userProfileId']},'raw':!![]})[_0xb8d9('0x23')](function(_0x213915){if(_0x213915&&_0x213915['autoAssociation']===0x0){return db[_0xb8d9('0x26')][_0xb8d9('0x4d')]({'name':_0x431c21[_0xb8d9('0x28')],'resourceId':_0x431c21['id'],'type':_0x213915[_0xb8d9('0x28')],'sectionId':_0x213915['id']},{})['then'](function(){return _0x3c2a57;});}else{return _0x3c2a57;}})[_0xb8d9('0x47')](function(_0x3d7ea6){logger[_0xb8d9('0x4e')](_0xb8d9('0x4f'),_0x3d7ea6);throw _0x3d7ea6;});}return _0x3c2a57;})[_0xb8d9('0x23')](respondWithResult(_0x41f38b,0xc9))[_0xb8d9('0x47')](handleError(_0x41f38b,null));};exports[_0xb8d9('0x22')]=function(_0x518bb4,_0x3101da){if(_0x518bb4['body']['id']){delete _0x518bb4[_0xb8d9('0x48')]['id'];}return db[_0xb8d9('0x3f')][_0xb8d9('0x46')]({'where':{'id':_0x518bb4['params']['id']}})[_0xb8d9('0x23')](handleEntityNotFound(_0x3101da,null))[_0xb8d9('0x23')](saveUpdates(_0x518bb4[_0xb8d9('0x48')],null))[_0xb8d9('0x23')](respondWithResult(_0x3101da,null))[_0xb8d9('0x47')](handleError(_0x3101da,null));};exports[_0xb8d9('0x24')]=function(_0x4533e5,_0x3480d1){return db[_0xb8d9('0x3f')][_0xb8d9('0x46')]({'where':{'id':_0x4533e5[_0xb8d9('0x41')]['id']}})['then'](handleEntityNotFound(_0x3480d1,null))[_0xb8d9('0x23')](removeEntity(_0x3480d1,null))[_0xb8d9('0x47')](handleError(_0x3480d1,null));};
\ No newline at end of file
+var _0x7217=['userProfileId','autoAssociation','destroy','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','limit','count','set','Content-Range','reject','save','update','then','get','ChanSpies','UserProfileResource','sendStatus','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','keys','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','options','VoiceChanSpy','show','params','includeAll','include','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find'];(function(_0x1ca4fb,_0x188926){var _0x262fe6=function(_0x9c7ac7){while(--_0x9c7ac7){_0x1ca4fb['push'](_0x1ca4fb['shift']());}};_0x262fe6(++_0x188926);}(_0x7217,0xa9));var _0x7721=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0x7217[_0x138f59];return _0x3d114d;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7721('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7721('0x1'));var moment=require(_0x7721('0x2'));var BPromise=require(_0x7721('0x3'));var Mustache=require(_0x7721('0x4'));var util=require(_0x7721('0x5'));var path=require(_0x7721('0x6'));var sox=require(_0x7721('0x7'));var csv=require(_0x7721('0x8'));var ejs=require(_0x7721('0x9'));var fs=require('fs');var fs_extra=require(_0x7721('0xa'));var _=require('lodash');var squel=require(_0x7721('0xb'));var crypto=require(_0x7721('0xc'));var jsforce=require(_0x7721('0xd'));var deskjs=require(_0x7721('0xe'));var toCsv=require('to-csv');var querystring=require(_0x7721('0xf'));var Papa=require(_0x7721('0x10'));var Redis=require('ioredis');var authService=require(_0x7721('0x11'));var qs=require(_0x7721('0x12'));var as=require(_0x7721('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7721('0x14'))(_0x7721('0x15'));var utils=require(_0x7721('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x7721('0x17'));var db=require(_0x7721('0x18'))['db'];function respondWithStatusCode(_0x4db091,_0x290415){_0x290415=_0x290415||0xcc;return function(_0xcbb8d5){if(_0xcbb8d5){return _0x4db091['sendStatus'](_0x290415);}return _0x4db091[_0x7721('0x19')](_0x290415)[_0x7721('0x1a')]();};}function respondWithResult(_0xedb98,_0x36f8a0){_0x36f8a0=_0x36f8a0||0xc8;return function(_0x22a78b){if(_0x22a78b){return _0xedb98['status'](_0x36f8a0)[_0x7721('0x1b')](_0x22a78b);}};}function respondWithFilteredResult(_0x353249,_0x2fdfec){return function(_0x281dfd){if(_0x281dfd){var _0x488c09=typeof _0x2fdfec[_0x7721('0x1c')]==='undefined'&&typeof _0x2fdfec[_0x7721('0x1d')]==='undefined';var _0x378dfb=_0x281dfd['count'];var _0x4b64ab=_0x488c09?0x0:_0x2fdfec[_0x7721('0x1c')];var _0x499b28=_0x488c09?_0x281dfd[_0x7721('0x1e')]:_0x2fdfec['offset']+_0x2fdfec[_0x7721('0x1d')];var _0x19f3b4;if(_0x499b28>=_0x378dfb){_0x499b28=_0x378dfb;_0x19f3b4=0xc8;}else{_0x19f3b4=0xce;}_0x353249['status'](_0x19f3b4);return _0x353249[_0x7721('0x1f')](_0x7721('0x20'),_0x4b64ab+'-'+_0x499b28+'/'+_0x378dfb)[_0x7721('0x1b')](_0x281dfd);}return null;};}function patchUpdates(_0x519768){return function(_0x4083dd){try{jsonpatch['apply'](_0x4083dd,_0x519768,!![]);}catch(_0x49b37b){return BPromise[_0x7721('0x21')](_0x49b37b);}return _0x4083dd[_0x7721('0x22')]();};}function saveUpdates(_0x528664,_0x45c389){return function(_0x16c9c4){if(_0x16c9c4){return _0x16c9c4[_0x7721('0x23')](_0x528664)['then'](function(_0x159117){return _0x159117;});}return null;};}function removeEntity(_0x5b7e03,_0x6ab534){return function(_0x1c5511){if(_0x1c5511){return _0x1c5511['destroy']()[_0x7721('0x24')](function(){var _0x485fb3=_0x1c5511[_0x7721('0x25')]({'plain':!![]});var _0x6b932b=_0x7721('0x26');return db[_0x7721('0x27')]['destroy']({'where':{'type':_0x6b932b,'resourceId':_0x485fb3['id']}})[_0x7721('0x24')](function(){return _0x1c5511;});})[_0x7721('0x24')](function(){_0x5b7e03[_0x7721('0x19')](0xcc)[_0x7721('0x1a')]();});}};}function handleEntityNotFound(_0x3ca94e,_0x4e9aaa){return function(_0x34f9e8){if(!_0x34f9e8){_0x3ca94e[_0x7721('0x28')](0x194);}return _0x34f9e8;};}function handleError(_0x197f69,_0x370262){_0x370262=_0x370262||0x1f4;return function(_0xbb3ce4){logger[_0x7721('0x29')](_0xbb3ce4[_0x7721('0x2a')]);if(_0xbb3ce4[_0x7721('0x2b')]){delete _0xbb3ce4[_0x7721('0x2b')];}_0x197f69['status'](_0x370262)[_0x7721('0x2c')](_0xbb3ce4);};}exports[_0x7721('0x2d')]=function(_0xe638a9,_0x3903f4){var _0x52b798={},_0x373a18={},_0x1efe73={'count':0x0,'rows':[]};var _0x20520b=_['map'](db['VoiceChanSpy'][_0x7721('0x2e')],function(_0x3d2b8d){return{'name':_0x3d2b8d[_0x7721('0x2f')],'type':_0x3d2b8d[_0x7721('0x30')][_0x7721('0x31')]};});_0x373a18[_0x7721('0x32')]=_[_0x7721('0x33')](_0x20520b,_0x7721('0x2b'));_0x373a18['query']=_[_0x7721('0x34')](_0xe638a9['query']);_0x373a18[_0x7721('0x35')]=_['intersection'](_0x373a18[_0x7721('0x32')],_0x373a18[_0x7721('0x36')]);_0x52b798[_0x7721('0x37')]=_[_0x7721('0x38')](_0x373a18[_0x7721('0x32')],qs[_0x7721('0x39')](_0xe638a9[_0x7721('0x36')]['fields']));_0x52b798[_0x7721('0x37')]=_0x52b798['attributes'][_0x7721('0x3a')]?_0x52b798[_0x7721('0x37')]:_0x373a18[_0x7721('0x32')];if(!_0xe638a9['query'][_0x7721('0x3b')](_0x7721('0x3c'))){_0x52b798['limit']=qs[_0x7721('0x1d')](_0xe638a9[_0x7721('0x36')][_0x7721('0x1d')]);_0x52b798[_0x7721('0x1c')]=qs['offset'](_0xe638a9[_0x7721('0x36')][_0x7721('0x1c')]);}_0x52b798['order']=qs[_0x7721('0x3d')](_0xe638a9['query'][_0x7721('0x3d')]);_0x52b798['where']=qs['filters'](_[_0x7721('0x3e')](_0xe638a9['query'],_0x373a18[_0x7721('0x35')]),_0x20520b);if(_0xe638a9[_0x7721('0x36')]['filter']){_0x52b798[_0x7721('0x3f')]=_[_0x7721('0x40')](_0x52b798[_0x7721('0x3f')],{'$or':_[_0x7721('0x33')](_0x20520b,function(_0x460abd){if(_0x460abd[_0x7721('0x30')]!==_0x7721('0x41')){var _0xc30c42={};_0xc30c42[_0x460abd[_0x7721('0x2b')]]={'$like':'%'+_0xe638a9[_0x7721('0x36')]['filter']+'%'};return _0xc30c42;}})});}_0x52b798=_[_0x7721('0x40')]({},_0x52b798,_0xe638a9[_0x7721('0x42')]);var _0x4c8d53={'where':_0x52b798[_0x7721('0x3f')]};return db[_0x7721('0x43')][_0x7721('0x1e')](_0x4c8d53)[_0x7721('0x24')](function(_0x5d56a9){_0x1efe73[_0x7721('0x1e')]=_0x5d56a9;if(_0xe638a9[_0x7721('0x36')]['includeAll']){_0x52b798['include']=[{'all':!![]}];}return db[_0x7721('0x43')]['findAll'](_0x52b798);})[_0x7721('0x24')](function(_0x21c9cb){_0x1efe73['rows']=_0x21c9cb;return _0x1efe73;})['then'](respondWithFilteredResult(_0x3903f4,_0x52b798))['catch'](handleError(_0x3903f4,null));};exports[_0x7721('0x44')]=function(_0x2eeca9,_0x2d2123){var _0x12d5b5={'raw':![],'where':{'id':_0x2eeca9[_0x7721('0x45')]['id']}},_0x2802f7={};_0x2802f7[_0x7721('0x32')]=_[_0x7721('0x34')](db[_0x7721('0x43')][_0x7721('0x2e')]);_0x2802f7[_0x7721('0x36')]=_['keys'](_0x2eeca9['query']);_0x2802f7[_0x7721('0x35')]=_[_0x7721('0x38')](_0x2802f7[_0x7721('0x32')],_0x2802f7[_0x7721('0x36')]);_0x12d5b5[_0x7721('0x37')]=_[_0x7721('0x38')](_0x2802f7[_0x7721('0x32')],qs[_0x7721('0x39')](_0x2eeca9[_0x7721('0x36')][_0x7721('0x39')]));_0x12d5b5[_0x7721('0x37')]=_0x12d5b5[_0x7721('0x37')][_0x7721('0x3a')]?_0x12d5b5[_0x7721('0x37')]:_0x2802f7[_0x7721('0x32')];if(_0x2eeca9['query'][_0x7721('0x46')]){_0x12d5b5[_0x7721('0x47')]=[{'all':!![]}];}_0x12d5b5=_['merge']({},_0x12d5b5,_0x2eeca9[_0x7721('0x42')]);return db[_0x7721('0x43')]['find'](_0x12d5b5)[_0x7721('0x24')](handleEntityNotFound(_0x2d2123,null))[_0x7721('0x24')](respondWithResult(_0x2d2123,null))[_0x7721('0x48')](handleError(_0x2d2123,null));};exports[_0x7721('0x49')]=function(_0x26357d,_0x4ac85f){return db['VoiceChanSpy'][_0x7721('0x49')](_0x26357d[_0x7721('0x4a')],{})[_0x7721('0x24')](function(_0x1ed110){var _0xf7b93f=_0x26357d[_0x7721('0x4b')][_0x7721('0x25')]({'plain':!![]});if(!_0xf7b93f)throw new Error(_0x7721('0x4c'));if(_0xf7b93f[_0x7721('0x4d')]===_0x7721('0x4b')){var _0x3ce861=_0x1ed110['get']({'plain':!![]});var _0x333c90='ChanSpies';return db[_0x7721('0x4e')][_0x7721('0x4f')]({'where':{'name':_0x333c90,'userProfileId':_0xf7b93f[_0x7721('0x50')]},'raw':!![]})['then'](function(_0x19a6ac){if(_0x19a6ac&&_0x19a6ac[_0x7721('0x51')]===0x0){return db[_0x7721('0x27')][_0x7721('0x49')]({'name':_0x3ce861[_0x7721('0x2b')],'resourceId':_0x3ce861['id'],'type':_0x19a6ac[_0x7721('0x2b')],'sectionId':_0x19a6ac['id']},{})[_0x7721('0x24')](function(){return _0x1ed110;});}else{return _0x1ed110;}})['catch'](function(_0x50a529){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x50a529);throw _0x50a529;});}return _0x1ed110;})[_0x7721('0x24')](respondWithResult(_0x4ac85f,0xc9))[_0x7721('0x48')](handleError(_0x4ac85f,null));};exports[_0x7721('0x23')]=function(_0xebf0b,_0x11ed59){if(_0xebf0b[_0x7721('0x4a')]['id']){delete _0xebf0b[_0x7721('0x4a')]['id'];}return db['VoiceChanSpy'][_0x7721('0x4f')]({'where':{'id':_0xebf0b[_0x7721('0x45')]['id']}})['then'](handleEntityNotFound(_0x11ed59,null))[_0x7721('0x24')](saveUpdates(_0xebf0b[_0x7721('0x4a')],null))[_0x7721('0x24')](respondWithResult(_0x11ed59,null))['catch'](handleError(_0x11ed59,null));};exports[_0x7721('0x52')]=function(_0x20bb7a,_0x5dcbbb){return db[_0x7721('0x43')][_0x7721('0x4f')]({'where':{'id':_0x20bb7a[_0x7721('0x45')]['id']}})[_0x7721('0x24')](handleEntityNotFound(_0x5dcbbb,null))[_0x7721('0x24')](removeEntity(_0x5dcbbb,null))['catch'](handleError(_0x5dcbbb,null));};
\ No newline at end of file
index f7e687e..afd3eb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc909=['%s%s','prefix','push','Set','format','CDR(type)=%s','chanspy','record','merge','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','length','concat','internal','findAll','catch','exports','models','define','voice_chanspy','then','VoiceExtension','bulkCreate','destroy','lodash','util','bluebird','./voiceChanSpy.attributes','context','from-sip'];(function(_0x5e1098,_0x33a916){var _0x54cc78=function(_0x53aee2){while(--_0x53aee2){_0x5e1098['push'](_0x5e1098['shift']());}};_0x54cc78(++_0x33a916);}(_0xc909,0xc2));var _0x9c90=function(_0x38eb23,_0x196e8b){_0x38eb23=_0x38eb23-0x0;var _0x48506a=_0xc909[_0x38eb23];return _0x48506a;};'use strict';var _=require(_0x9c90('0x0'));var util=require(_0x9c90('0x1'));var BPromise=require(_0x9c90('0x2'));var attributes=require(_0x9c90('0x3'));var getUserApplications=function(_0x397c76,_0x40c67e,_0x4e3229){var _0x3998b0=0x1;var _0x36f033=[];var _0x57b2c0={'context':_0x40c67e[_0x9c90('0x4')]||_0x9c90('0x5'),'exten':util['format'](_0x9c90('0x6'),_0x397c76[_0x9c90('0x7')],_0x4e3229),'type':'system','isApp':![],'ChanSpyId':_0x397c76['id'],'UserId':_0x40c67e['id']};_0x36f033[_0x9c90('0x8')](_['merge']({'app':_0x9c90('0x9'),'appdata':util[_0x9c90('0xa')](_0x9c90('0xb'),_0x9c90('0xc')),'priority':_0x3998b0++},_0x57b2c0));if(_0x397c76[_0x9c90('0xd')]){_0x36f033[_0x9c90('0x8')](_[_0x9c90('0xe')]({'app':_0x9c90('0xf'),'appdata':util[_0x9c90('0xa')](_0x9c90('0x10'),_0x397c76[_0x9c90('0x11')]),'priority':_0x3998b0++},_0x57b2c0));}if(_0x397c76[_0x9c90('0x12')]){_0x36f033[_0x9c90('0x8')](_['merge']({'app':_0x9c90('0x13'),'appdata':_0x397c76[_0x9c90('0x14')],'priority':_0x3998b0++},_0x57b2c0));}_0x36f033[_0x9c90('0x8')](_[_0x9c90('0xe')]({'app':_0x9c90('0x15'),'appdata':util[_0x9c90('0xa')](_0x9c90('0x16'),_0x40c67e[_0x9c90('0x17')],_0x397c76[_0x9c90('0x18')]?_0x397c76[_0x9c90('0x18')][_0x9c90('0x19')](''):''),'priority':_0x3998b0++},_0x57b2c0));if(_0x397c76[_0x9c90('0xd')]){_0x36f033[_0x9c90('0x8')](_[_0x9c90('0xe')]({'app':_0x9c90('0x1a'),'priority':_0x3998b0++},_0x57b2c0));}return _0x36f033;};var getChanSpyApplications=function(_0x1c28ab,_0x31d5b0){var _0x8762a8=[];for(var _0x3cc0f9=0x0,_0xb4ea21=0x1;_0x3cc0f9<_0x31d5b0[_0x9c90('0x1b')];_0x3cc0f9++,_0xb4ea21=0x1){_0x8762a8=_0x8762a8[_0x9c90('0x1c')](getUserApplications(_0x1c28ab,_0x31d5b0[_0x3cc0f9],_0x31d5b0[_0x3cc0f9][_0x9c90('0x1d')]));if(_0x31d5b0[_0x3cc0f9][_0x9c90('0x1d')]!=_0x31d5b0[_0x3cc0f9][_0x9c90('0x17')]){_0x8762a8=_0x8762a8['concat'](getUserApplications(_0x1c28ab,_0x31d5b0[_0x3cc0f9],_0x31d5b0[_0x3cc0f9]['name']));}}return _0x8762a8;};var getChanSpyPromise=function(_0x819531,_0x22a92a){return new BPromise(function(_0x3d2160,_0x3b2a29){return _0x819531['User'][_0x9c90('0x1e')]({'attributes':['id',_0x9c90('0x17'),'internal'],'where':{'role':'agent','chanspy':!![]},'raw':!![]})['then'](function(_0x3a67d4){if(_0x3a67d4){return _0x3d2160(getChanSpyApplications(_0x22a92a,_0x3a67d4));}return _0x3d2160([]);})[_0x9c90('0x1f')](function(_0x43b0ff){_0x3b2a29(_0x43b0ff);});});};module[_0x9c90('0x20')]=function(_0x54f006,_0x2437f2){var _0xcab400=_0x54f006[_0x9c90('0x21')];return _0x54f006[_0x9c90('0x22')]('VoiceChanSpy',attributes,{'tableName':_0x9c90('0x23'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x5ef9bb,_0x4fe6e5,_0x158902){return getChanSpyPromise(_0xcab400,_0x5ef9bb)[_0x9c90('0x24')](function(_0x7b4e96){if(_0x7b4e96&&_0x7b4e96[_0x9c90('0x1b')]){return _0xcab400[_0x9c90('0x25')][_0x9c90('0x26')](_0x7b4e96);}})[_0x9c90('0x24')](function(){_0x158902();})[_0x9c90('0x1f')](function(_0x3d854b){_0x158902(_0x3d854b);});},'afterUpdate':function(_0x1320d5,_0x5e7672,_0x472d1c){return _0xcab400['VoiceExtension'][_0x9c90('0x27')]({'where':{'ChanSpyId':_0x1320d5['id']}})[_0x9c90('0x24')](function(){return getChanSpyPromise(_0xcab400,_0x1320d5);})[_0x9c90('0x24')](function(_0x3c1eba){if(_0x3c1eba&&_0x3c1eba[_0x9c90('0x1b')]){return _0xcab400[_0x9c90('0x25')][_0x9c90('0x26')](_0x3c1eba);}})[_0x9c90('0x24')](function(){_0x472d1c();})[_0x9c90('0x1f')](function(_0x298b9e){_0x472d1c(_0x298b9e);});},'afterDestroy':function(_0x5136f3,_0x468b60,_0x4f4278){return _0xcab400[_0x9c90('0x25')][_0x9c90('0x27')]({'where':{'ChanSpyId':_0x5136f3['id']}})[_0x9c90('0x24')](function(){_0x4f4278();})[_0x9c90('0x1f')](function(_0x55cae3){_0x4f4278(_0x55cae3);});}}});};
\ No newline at end of file
+var _0xee3c=['define','VoiceExtension','destroy','lodash','util','./voiceChanSpy.attributes','prefix','system','push','merge','Set','format','chanspy','record','MixMonitor','auth','Authenticate','password','SIP/%s,%s','name','options','join','StopMixMonitor','length','concat','internal','User','findAll','agent','then','catch','exports'];(function(_0x425b10,_0xe4cbbe){var _0x1eecfe=function(_0x2233f1){while(--_0x2233f1){_0x425b10['push'](_0x425b10['shift']());}};_0x1eecfe(++_0xe4cbbe);}(_0xee3c,0xa3));var _0xcee3=function(_0x4ea8ec,_0x813e29){_0x4ea8ec=_0x4ea8ec-0x0;var _0x335c9b=_0xee3c[_0x4ea8ec];return _0x335c9b;};'use strict';var _=require(_0xcee3('0x0'));var util=require(_0xcee3('0x1'));var BPromise=require('bluebird');var attributes=require(_0xcee3('0x2'));var getUserApplications=function(_0x20c4b5,_0x293405,_0x7d309){var _0x20661e=0x1;var _0x5cb649=[];var _0x3e2629={'context':_0x293405['context']||'from-sip','exten':util['format']('%s%s',_0x20c4b5[_0xcee3('0x3')],_0x7d309),'type':_0xcee3('0x4'),'isApp':![],'ChanSpyId':_0x20c4b5['id'],'UserId':_0x293405['id']};_0x5cb649[_0xcee3('0x5')](_[_0xcee3('0x6')]({'app':_0xcee3('0x7'),'appdata':util[_0xcee3('0x8')]('CDR(type)=%s',_0xcee3('0x9')),'priority':_0x20661e++},_0x3e2629));if(_0x20c4b5[_0xcee3('0xa')]){_0x5cb649[_0xcee3('0x5')](_[_0xcee3('0x6')]({'app':_0xcee3('0xb'),'appdata':util[_0xcee3('0x8')]('${UNIQUEID}.%s,a',_0x20c4b5['recordingFormat']),'priority':_0x20661e++},_0x3e2629));}if(_0x20c4b5[_0xcee3('0xc')]){_0x5cb649[_0xcee3('0x5')](_[_0xcee3('0x6')]({'app':_0xcee3('0xd'),'appdata':_0x20c4b5[_0xcee3('0xe')],'priority':_0x20661e++},_0x3e2629));}_0x5cb649[_0xcee3('0x5')](_['merge']({'app':'ChanSpy','appdata':util['format'](_0xcee3('0xf'),_0x293405[_0xcee3('0x10')],_0x20c4b5[_0xcee3('0x11')]?_0x20c4b5[_0xcee3('0x11')][_0xcee3('0x12')](''):''),'priority':_0x20661e++},_0x3e2629));if(_0x20c4b5['record']){_0x5cb649[_0xcee3('0x5')](_[_0xcee3('0x6')]({'app':_0xcee3('0x13'),'priority':_0x20661e++},_0x3e2629));}return _0x5cb649;};var getChanSpyApplications=function(_0x184f26,_0x3e5cba){var _0x4365f1=[];for(var _0x15aecd=0x0,_0x53f1bf=0x1;_0x15aecd<_0x3e5cba[_0xcee3('0x14')];_0x15aecd++,_0x53f1bf=0x1){_0x4365f1=_0x4365f1[_0xcee3('0x15')](getUserApplications(_0x184f26,_0x3e5cba[_0x15aecd],_0x3e5cba[_0x15aecd]['internal']));if(_0x3e5cba[_0x15aecd][_0xcee3('0x16')]!=_0x3e5cba[_0x15aecd][_0xcee3('0x10')]){_0x4365f1=_0x4365f1[_0xcee3('0x15')](getUserApplications(_0x184f26,_0x3e5cba[_0x15aecd],_0x3e5cba[_0x15aecd][_0xcee3('0x10')]));}}return _0x4365f1;};var getChanSpyPromise=function(_0x24184d,_0x4bf321){return new BPromise(function(_0x2cb609,_0x39167b){return _0x24184d[_0xcee3('0x17')][_0xcee3('0x18')]({'attributes':['id','name',_0xcee3('0x16')],'where':{'role':_0xcee3('0x19'),'chanspy':!![]},'raw':!![]})[_0xcee3('0x1a')](function(_0xb1f61){if(_0xb1f61){return _0x2cb609(getChanSpyApplications(_0x4bf321,_0xb1f61));}return _0x2cb609([]);})[_0xcee3('0x1b')](function(_0x170f2c){_0x39167b(_0x170f2c);});});};module[_0xcee3('0x1c')]=function(_0x3b1d99,_0x5a3089){var _0x3ee8ee=_0x3b1d99['models'];return _0x3b1d99[_0xcee3('0x1d')]('VoiceChanSpy',attributes,{'tableName':'voice_chanspy','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x288adc,_0x2a5fc7,_0x3b51e5){return getChanSpyPromise(_0x3ee8ee,_0x288adc)['then'](function(_0x3daaf9){if(_0x3daaf9&&_0x3daaf9[_0xcee3('0x14')]){return _0x3ee8ee['VoiceExtension']['bulkCreate'](_0x3daaf9);}})[_0xcee3('0x1a')](function(){_0x3b51e5();})['catch'](function(_0x2ae691){_0x3b51e5(_0x2ae691);});},'afterUpdate':function(_0x44bafb,_0x4b9087,_0x4979d0){return _0x3ee8ee[_0xcee3('0x1e')][_0xcee3('0x1f')]({'where':{'ChanSpyId':_0x44bafb['id']}})[_0xcee3('0x1a')](function(){return getChanSpyPromise(_0x3ee8ee,_0x44bafb);})[_0xcee3('0x1a')](function(_0x5bd017){if(_0x5bd017&&_0x5bd017['length']){return _0x3ee8ee[_0xcee3('0x1e')]['bulkCreate'](_0x5bd017);}})[_0xcee3('0x1a')](function(){_0x4979d0();})['catch'](function(_0x32a3b1){_0x4979d0(_0x32a3b1);});},'afterDestroy':function(_0x4d3724,_0x4cbe86,_0x56535b){return _0x3ee8ee[_0xcee3('0x1e')][_0xcee3('0x1f')]({'where':{'ChanSpyId':_0x4d3724['id']}})['then'](function(){_0x56535b();})[_0xcee3('0x1b')](function(_0x5837cd){_0x56535b(_0x5837cd);});}}});};
\ No newline at end of file
index 8fc5eb7..d8c66d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x693f=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','debug','request\x20sent','stringify','error','code','message','info','VoiceChanSpy,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird'];(function(_0x2cedc5,_0x2fabcd){var _0x22032d=function(_0x3543dc){while(--_0x3543dc){_0x2cedc5['push'](_0x2cedc5['shift']());}};_0x22032d(++_0x2fabcd);}(_0x693f,0x9d));var _0xf693=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x693f[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xf693('0x0'));var util=require(_0xf693('0x1'));var moment=require(_0xf693('0x2'));var BPromise=require(_0xf693('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf693('0x4'));var db=require(_0xf693('0x5'))['db'];var utils=require(_0xf693('0x6'));var logger=require(_0xf693('0x7'))(_0xf693('0x8'));var config=require(_0xf693('0x9'));var jayson=require(_0xf693('0xa'));var client=jayson['client'][_0xf693('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x33305c,_0x5b91c5,_0x22f362){return new BPromise(function(_0x594505,_0x38e78a){return client['request'](_0x33305c,_0x22f362)[_0xf693('0xc')](function(_0x17075d){logger['info']('VoiceChanSpy,\x20%s,\x20%s',_0x5b91c5,'request\x20sent');logger[_0xf693('0xd')]('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x5b91c5,_0xf693('0xe'),JSON[_0xf693('0xf')](_0x17075d));if(_0x17075d[_0xf693('0x10')]){if(_0x17075d[_0xf693('0x10')][_0xf693('0x11')]===0x1f4){logger['error']('VoiceChanSpy,\x20%s,\x20%s',_0x5b91c5,_0x17075d[_0xf693('0x10')][_0xf693('0x12')]);return _0x38e78a(_0x17075d['error'][_0xf693('0x12')]);}logger[_0xf693('0x10')]('VoiceChanSpy,\x20%s,\x20%s',_0x5b91c5,_0x17075d['error'][_0xf693('0x12')]);return _0x594505(_0x17075d[_0xf693('0x10')][_0xf693('0x12')]);}else{logger[_0xf693('0x13')](_0xf693('0x14'),_0x5b91c5,'request\x20sent');_0x594505(_0x17075d[_0xf693('0x15')][_0xf693('0x12')]);}})[_0xf693('0x16')](function(_0x2a5e1b){logger[_0xf693('0x10')](_0xf693('0x14'),_0x5b91c5,_0x2a5e1b);_0x38e78a(_0x2a5e1b);});});}
\ No newline at end of file
+var _0x2504=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','error','code','VoiceChanSpy,\x20%s,\x20%s','message','result','catch','lodash','util'];(function(_0x1ef462,_0x2ab345){var _0x255eda=function(_0x3df02a){while(--_0x3df02a){_0x1ef462['push'](_0x1ef462['shift']());}};_0x255eda(++_0x2ab345);}(_0x2504,0xee));var _0x4250=function(_0x47153e,_0x3cab90){_0x47153e=_0x47153e-0x0;var _0x1ab7e6=_0x2504[_0x47153e];return _0x1ab7e6;};'use strict';var _=require(_0x4250('0x0'));var util=require(_0x4250('0x1'));var moment=require(_0x4250('0x2'));var BPromise=require(_0x4250('0x3'));var rs=require(_0x4250('0x4'));var fs=require('fs');var Redis=require(_0x4250('0x5'));var db=require(_0x4250('0x6'))['db'];var utils=require(_0x4250('0x7'));var logger=require(_0x4250('0x8'))(_0x4250('0x9'));var config=require(_0x4250('0xa'));var jayson=require(_0x4250('0xb'));var client=jayson['client'][_0x4250('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4e177e,_0x5a5286,_0x370998){return new BPromise(function(_0x477312,_0x1a3b57){return client[_0x4250('0xd')](_0x4e177e,_0x370998)[_0x4250('0xe')](function(_0x51ea6f){logger[_0x4250('0xf')]('VoiceChanSpy,\x20%s,\x20%s',_0x5a5286,_0x4250('0x10'));logger[_0x4250('0x11')]('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x5a5286,_0x4250('0x10'),JSON['stringify'](_0x51ea6f));if(_0x51ea6f['error']){if(_0x51ea6f[_0x4250('0x12')][_0x4250('0x13')]===0x1f4){logger[_0x4250('0x12')](_0x4250('0x14'),_0x5a5286,_0x51ea6f[_0x4250('0x12')]['message']);return _0x1a3b57(_0x51ea6f[_0x4250('0x12')][_0x4250('0x15')]);}logger[_0x4250('0x12')](_0x4250('0x14'),_0x5a5286,_0x51ea6f[_0x4250('0x12')][_0x4250('0x15')]);return _0x477312(_0x51ea6f['error'][_0x4250('0x15')]);}else{logger[_0x4250('0xf')](_0x4250('0x14'),_0x5a5286,_0x4250('0x10'));_0x477312(_0x51ea6f[_0x4250('0x16')][_0x4250('0x15')]);}})[_0x4250('0x17')](function(_0x4e70fc){logger[_0x4250('0x12')](_0x4250('0x14'),_0x5a5286,_0x4e70fc);_0x1a3b57(_0x4e70fc);});});}
\ No newline at end of file
index 4b09473..4d74e6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0722=['get','isAuthenticated','index','/:id','show','post','create','destroy','multer','util','path','express','Router','../../components/auth/service','../../config/environment'];(function(_0x34bedc,_0x5639f9){var _0x247dfd=function(_0x5f3696){while(--_0x5f3696){_0x34bedc['push'](_0x34bedc['shift']());}};_0x247dfd(++_0x5639f9);}(_0x0722,0x71));var _0x2072=function(_0x539112,_0x2a502a){_0x539112=_0x539112-0x0;var _0x2a47b9=_0x0722[_0x539112];return _0x2a47b9;};'use strict';var multer=require(_0x2072('0x0'));var util=require(_0x2072('0x1'));var path=require(_0x2072('0x2'));var timeout=require('connect-timeout');var express=require(_0x2072('0x3'));var router=express[_0x2072('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2072('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2072('0x6'));var controller=require('./voiceContext.controller');router[_0x2072('0x7')]('/',auth[_0x2072('0x8')](),controller[_0x2072('0x9')]);router[_0x2072('0x7')](_0x2072('0xa'),auth['isAuthenticated'](),controller[_0x2072('0xb')]);router[_0x2072('0xc')]('/',auth[_0x2072('0x8')](),controller[_0x2072('0xd')]);router['put'](_0x2072('0xa'),auth[_0x2072('0x8')](),controller['update']);router['delete'](_0x2072('0xa'),auth[_0x2072('0x8')](),controller[_0x2072('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x1bfc=['../../components/auth/service','../../config/environment','./voiceContext.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra'];(function(_0x50589f,_0x499bea){var _0x597b49=function(_0x167a06){while(--_0x167a06){_0x50589f['push'](_0x50589f['shift']());}};_0x597b49(++_0x499bea);}(_0x1bfc,0x73));var _0xc1bf=function(_0x5db3fa,_0x313cad){_0x5db3fa=_0x5db3fa-0x0;var _0x17e108=_0x1bfc[_0x5db3fa];return _0x17e108;};'use strict';var multer=require(_0xc1bf('0x0'));var util=require(_0xc1bf('0x1'));var path=require('path');var timeout=require(_0xc1bf('0x2'));var express=require('express');var router=express[_0xc1bf('0x3')]();var fs_extra=require(_0xc1bf('0x4'));var auth=require(_0xc1bf('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xc1bf('0x6'));var controller=require(_0xc1bf('0x7'));router[_0xc1bf('0x8')]('/',auth[_0xc1bf('0x9')](),controller[_0xc1bf('0xa')]);router[_0xc1bf('0x8')](_0xc1bf('0xb'),auth[_0xc1bf('0x9')](),controller[_0xc1bf('0xc')]);router[_0xc1bf('0xd')]('/',auth[_0xc1bf('0x9')](),controller[_0xc1bf('0xe')]);router[_0xc1bf('0xf')](_0xc1bf('0xb'),auth[_0xc1bf('0x9')](),controller[_0xc1bf('0x10')]);router[_0xc1bf('0x11')]('/:id',auth[_0xc1bf('0x9')](),controller[_0xc1bf('0x12')]);module[_0xc1bf('0x13')]=router;
\ No newline at end of file
index 4fb3954..ac92013 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc392=['STRING','name','sequelize','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xc392,0xba));var _0x2c39=function(_0x5170b2,_0x132900){_0x5170b2=_0x5170b2-0x0;var _0x35641a=_0xc392[_0x5170b2];return _0x35641a;};'use strict';var Sequelize=require(_0x2c39('0x0'));module[_0x2c39('0x1')]={'name':{'type':Sequelize[_0x2c39('0x2')],'unique':_0x2c39('0x3')},'description':{'type':Sequelize[_0x2c39('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xcf9e=['STRING','name','BOOLEAN','sequelize','exports'];(function(_0x1d697d,_0x4ad045){var _0x216365=function(_0x2e98df){while(--_0x2e98df){_0x1d697d['push'](_0x1d697d['shift']());}};_0x216365(++_0x4ad045);}(_0xcf9e,0x148));var _0xecf9=function(_0x38ad9a,_0x4539e2){_0x38ad9a=_0x38ad9a-0x0;var _0x3b41a5=_0xcf9e[_0x38ad9a];return _0x3b41a5;};'use strict';var Sequelize=require(_0xecf9('0x0'));module[_0xecf9('0x1')]={'name':{'type':Sequelize[_0xecf9('0x2')],'unique':_0xecf9('0x3')},'description':{'type':Sequelize[_0xecf9('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xecf9('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 98783cb..426122e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf193=['attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','count','includeAll','include','rows','params','find','create','findAll','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','readFileSync','chan_sip.so','join','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','VoiceContext,\x20%s,\x20%s','request\x20sent','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','status','json','undefined','limit','offset','apply','save','update','then','destroy','get','Contexts','stack','name','send','index','map','VoiceContext','rawAttributes','type','query','keys','filters','intersection','model'];(function(_0x2a3ce4,_0x974797){var _0x192665=function(_0x1542c3){while(--_0x1542c3){_0x2a3ce4['push'](_0x2a3ce4['shift']());}};_0x192665(++_0x974797);}(_0xf193,0x1c5));var _0x3f19=function(_0x56d599,_0xde964d){_0x56d599=_0x56d599-0x0;var _0x32edd5=_0xf193[_0x56d599];return _0x32edd5;};'use strict';var emlformat=require(_0x3f19('0x0'));var rimraf=require(_0x3f19('0x1'));var zipdir=require(_0x3f19('0x2'));var jsonpatch=require(_0x3f19('0x3'));var rp=require(_0x3f19('0x4'));var moment=require(_0x3f19('0x5'));var BPromise=require(_0x3f19('0x6'));var Mustache=require(_0x3f19('0x7'));var util=require(_0x3f19('0x8'));var path=require('path');var sox=require(_0x3f19('0x9'));var csv=require(_0x3f19('0xa'));var ejs=require(_0x3f19('0xb'));var fs=require('fs');var fs_extra=require(_0x3f19('0xc'));var _=require(_0x3f19('0xd'));var squel=require(_0x3f19('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x3f19('0xf'));var toCsv=require(_0x3f19('0xa'));var querystring=require('querystring');var Papa=require(_0x3f19('0x10'));var Redis=require(_0x3f19('0x11'));var authService=require(_0x3f19('0x12'));var qs=require(_0x3f19('0x13'));var as=require(_0x3f19('0x14'));var hardwareService=require(_0x3f19('0x15'));var logger=require(_0x3f19('0x16'))(_0x3f19('0x17'));var utils=require(_0x3f19('0x18'));var config=require(_0x3f19('0x19'));var licenseUtil=require(_0x3f19('0x1a'));var db=require(_0x3f19('0x1b'))['db'];var jayson=require(_0x3f19('0x1c'));var client=jayson[_0x3f19('0x1d')][_0x3f19('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x2e3131,_0x20de9f,_0x2a6881,_0x3857a1){return new BPromise(function(_0x398c46,_0x549815){var _0x4deeff=_0x3857a1||client;return _0x4deeff['request'](_0x2e3131,_0x2a6881)['then'](function(_0x422f09){logger['info'](_0x3f19('0x1f'),_0x20de9f,_0x3f19('0x20'));logger['debug'](_0x3f19('0x21'),_0x20de9f,_0x3f19('0x20'),JSON[_0x3f19('0x22')](_0x422f09));if(_0x422f09[_0x3f19('0x23')]){if(_0x422f09[_0x3f19('0x23')][_0x3f19('0x24')]===0x1f4){logger[_0x3f19('0x23')]('VoiceContext,\x20%s,\x20%s',_0x20de9f,_0x422f09[_0x3f19('0x23')][_0x3f19('0x25')]);return _0x549815(_0x422f09[_0x3f19('0x23')]['message']);}logger[_0x3f19('0x23')]('VoiceContext,\x20%s,\x20%s',_0x20de9f,_0x422f09[_0x3f19('0x23')][_0x3f19('0x25')]);return _0x398c46(_0x422f09[_0x3f19('0x23')][_0x3f19('0x25')]);}else{logger[_0x3f19('0x26')](_0x3f19('0x1f'),_0x20de9f,_0x3f19('0x20'));_0x398c46(_0x422f09[_0x3f19('0x27')][_0x3f19('0x25')]);}})[_0x3f19('0x28')](function(_0x124dff){logger[_0x3f19('0x23')](_0x3f19('0x1f'),_0x20de9f,_0x124dff);_0x549815(_0x124dff);});});}function respondWithStatusCode(_0x1dade4,_0x3c75ae){_0x3c75ae=_0x3c75ae||0xcc;return function(_0x40f46b){if(_0x40f46b){return _0x1dade4[_0x3f19('0x29')](_0x3c75ae);}return _0x1dade4[_0x3f19('0x2a')](_0x3c75ae)['end']();};}function respondWithResult(_0x3e7cbc,_0x2ae5da){_0x2ae5da=_0x2ae5da||0xc8;return function(_0x4a2731){if(_0x4a2731){return _0x3e7cbc[_0x3f19('0x2a')](_0x2ae5da)[_0x3f19('0x2b')](_0x4a2731);}};}function respondWithFilteredResult(_0x5ac020,_0x4297e4){return function(_0x2e0c8d){if(_0x2e0c8d){var _0x3a0d77=typeof _0x4297e4['offset']===_0x3f19('0x2c')&&typeof _0x4297e4[_0x3f19('0x2d')]===_0x3f19('0x2c');var _0x19f168=_0x2e0c8d['count'];var _0x195b28=_0x3a0d77?0x0:_0x4297e4[_0x3f19('0x2e')];var _0x2eb533=_0x3a0d77?_0x2e0c8d['count']:_0x4297e4['offset']+_0x4297e4[_0x3f19('0x2d')];var _0x39286b;if(_0x2eb533>=_0x19f168){_0x2eb533=_0x19f168;_0x39286b=0xc8;}else{_0x39286b=0xce;}_0x5ac020['status'](_0x39286b);return _0x5ac020['set']('Content-Range',_0x195b28+'-'+_0x2eb533+'/'+_0x19f168)[_0x3f19('0x2b')](_0x2e0c8d);}return null;};}function patchUpdates(_0xb2129f){return function(_0x114092){try{jsonpatch[_0x3f19('0x2f')](_0x114092,_0xb2129f,!![]);}catch(_0x8032cc){return BPromise['reject'](_0x8032cc);}return _0x114092[_0x3f19('0x30')]();};}function saveUpdates(_0x4d52b6,_0x3f5ad3){return function(_0x4265d4){if(_0x4265d4){return _0x4265d4[_0x3f19('0x31')](_0x4d52b6)[_0x3f19('0x32')](function(_0x263934){return _0x263934;});}return null;};}function removeEntity(_0x3130be,_0x5f4ee5){return function(_0x374b79){if(_0x374b79){return _0x374b79[_0x3f19('0x33')]()[_0x3f19('0x32')](function(){var _0x56404c=_0x374b79[_0x3f19('0x34')]({'plain':!![]});var _0x484394=_0x3f19('0x35');return db['UserProfileResource'][_0x3f19('0x33')]({'where':{'type':_0x484394,'resourceId':_0x56404c['id']}})[_0x3f19('0x32')](function(){return _0x374b79;});})[_0x3f19('0x32')](function(){_0x3130be[_0x3f19('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1648b2,_0x17aee5){return function(_0x2dfd09){if(!_0x2dfd09){_0x1648b2[_0x3f19('0x29')](0x194);}return _0x2dfd09;};}function handleError(_0x4cdad6,_0x22d41a){_0x22d41a=_0x22d41a||0x1f4;return function(_0x4fec5e){logger['error'](_0x4fec5e[_0x3f19('0x36')]);if(_0x4fec5e[_0x3f19('0x37')]){delete _0x4fec5e[_0x3f19('0x37')];}_0x4cdad6[_0x3f19('0x2a')](_0x22d41a)[_0x3f19('0x38')](_0x4fec5e);};}exports[_0x3f19('0x39')]=function(_0x223698,_0x53f1a3){var _0x4ec69a={},_0xd87f9f={},_0x575e60={'count':0x0,'rows':[]};var _0x515297=_[_0x3f19('0x3a')](db[_0x3f19('0x3b')][_0x3f19('0x3c')],function(_0x3d7c5b){return{'name':_0x3d7c5b['fieldName'],'type':_0x3d7c5b[_0x3f19('0x3d')]['key']};});_0xd87f9f['model']=_[_0x3f19('0x3a')](_0x515297,_0x3f19('0x37'));_0xd87f9f[_0x3f19('0x3e')]=_[_0x3f19('0x3f')](_0x223698[_0x3f19('0x3e')]);_0xd87f9f[_0x3f19('0x40')]=_[_0x3f19('0x41')](_0xd87f9f[_0x3f19('0x42')],_0xd87f9f[_0x3f19('0x3e')]);_0x4ec69a[_0x3f19('0x43')]=_[_0x3f19('0x41')](_0xd87f9f[_0x3f19('0x42')],qs[_0x3f19('0x44')](_0x223698['query'][_0x3f19('0x44')]));_0x4ec69a[_0x3f19('0x43')]=_0x4ec69a[_0x3f19('0x43')][_0x3f19('0x45')]?_0x4ec69a[_0x3f19('0x43')]:_0xd87f9f['model'];if(!_0x223698[_0x3f19('0x3e')][_0x3f19('0x46')]('nolimit')){_0x4ec69a['limit']=qs['limit'](_0x223698[_0x3f19('0x3e')]['limit']);_0x4ec69a['offset']=qs[_0x3f19('0x2e')](_0x223698[_0x3f19('0x3e')][_0x3f19('0x2e')]);}_0x4ec69a[_0x3f19('0x47')]=qs[_0x3f19('0x48')](_0x223698[_0x3f19('0x3e')]['sort']);_0x4ec69a[_0x3f19('0x49')]=qs['filters'](_[_0x3f19('0x4a')](_0x223698[_0x3f19('0x3e')],_0xd87f9f[_0x3f19('0x40')]),_0x515297);if(_0x223698['query'][_0x3f19('0x4b')]){_0x4ec69a[_0x3f19('0x49')]=_[_0x3f19('0x4c')](_0x4ec69a[_0x3f19('0x49')],{'$or':_[_0x3f19('0x3a')](_0x515297,function(_0x10bb24){if(_0x10bb24[_0x3f19('0x3d')]!==_0x3f19('0x4d')){var _0x27b8ea={};_0x27b8ea[_0x10bb24[_0x3f19('0x37')]]={'$like':'%'+_0x223698[_0x3f19('0x3e')][_0x3f19('0x4b')]+'%'};return _0x27b8ea;}})});}_0x4ec69a=_[_0x3f19('0x4c')]({},_0x4ec69a,_0x223698['options']);var _0x10fdd3={'where':_0x4ec69a[_0x3f19('0x49')]};return db['VoiceContext'][_0x3f19('0x4e')](_0x10fdd3)[_0x3f19('0x32')](function(_0xe6ee32){_0x575e60[_0x3f19('0x4e')]=_0xe6ee32;if(_0x223698[_0x3f19('0x3e')][_0x3f19('0x4f')]){_0x4ec69a[_0x3f19('0x50')]=[{'all':!![]}];}return db[_0x3f19('0x3b')]['findAll'](_0x4ec69a);})[_0x3f19('0x32')](function(_0x3b9c1a){_0x575e60[_0x3f19('0x51')]=_0x3b9c1a;return _0x575e60;})['then'](respondWithFilteredResult(_0x53f1a3,_0x4ec69a))[_0x3f19('0x28')](handleError(_0x53f1a3,null));};exports['show']=function(_0x3180a9,_0x1eba19){var _0x3fcb09={'raw':![],'where':{'id':_0x3180a9[_0x3f19('0x52')]['id']}},_0x10b129={};_0x10b129[_0x3f19('0x42')]=_[_0x3f19('0x3f')](db[_0x3f19('0x3b')][_0x3f19('0x3c')]);_0x10b129[_0x3f19('0x3e')]=_['keys'](_0x3180a9['query']);_0x10b129['filters']=_['intersection'](_0x10b129[_0x3f19('0x42')],_0x10b129[_0x3f19('0x3e')]);_0x3fcb09[_0x3f19('0x43')]=_[_0x3f19('0x41')](_0x10b129['model'],qs[_0x3f19('0x44')](_0x3180a9[_0x3f19('0x3e')][_0x3f19('0x44')]));_0x3fcb09[_0x3f19('0x43')]=_0x3fcb09['attributes'][_0x3f19('0x45')]?_0x3fcb09[_0x3f19('0x43')]:_0x10b129[_0x3f19('0x42')];if(_0x3180a9['query']['includeAll']){_0x3fcb09[_0x3f19('0x50')]=[{'all':!![]}];}_0x3fcb09=_[_0x3f19('0x4c')]({},_0x3fcb09,_0x3180a9['options']);return db['VoiceContext'][_0x3f19('0x53')](_0x3fcb09)[_0x3f19('0x32')](handleEntityNotFound(_0x1eba19,null))[_0x3f19('0x32')](respondWithResult(_0x1eba19,null))[_0x3f19('0x28')](handleError(_0x1eba19,null));};exports['create']=function(_0x1f698d,_0x524762,_0x4277ac){var _0x4c11a7;return db[_0x3f19('0x3b')][_0x3f19('0x54')](_0x1f698d['body'],{'raw':!![]})[_0x3f19('0x32')](function(_0x3204a7){_0x4c11a7=_0x3204a7;return db[_0x3f19('0x3b')][_0x3f19('0x55')]({'raw':!![]});})['then'](function(_0x5cdabe){var _0x54be61=fs['readFileSync'](path['join'](config[_0x3f19('0x56')],_0x3f19('0x57')),_0x3f19('0x58'));var _0x1f50b3=ejs[_0x3f19('0x59')](_0x54be61,{'contexts':_0x5cdabe||[]});fs[_0x3f19('0x5a')](_0x3f19('0x5b'),_0x1f50b3);})[_0x3f19('0x32')](function(){return respondWithRpcPromise(_0x3f19('0x5c'),_0x3f19('0x54'),{'module':'chan_sip.so'});})[_0x3f19('0x32')](function(){var _0x1eabe3=_0x1f698d[_0x3f19('0x5d')][_0x3f19('0x34')]({'plain':!![]});if(!_0x1eabe3)throw new Error(_0x3f19('0x5e'));if(_0x1eabe3[_0x3f19('0x5f')]===_0x3f19('0x5d')){var _0x259618=_0x4c11a7[_0x3f19('0x34')]({'plain':!![]});return db['UserProfileSection'][_0x3f19('0x53')]({'where':{'name':_0x3f19('0x35'),'userProfileId':_0x1eabe3[_0x3f19('0x60')]},'raw':!![]})['then'](function(_0x1a68ee){if(_0x1a68ee&&_0x1a68ee[_0x3f19('0x61')]===0x0){return db[_0x3f19('0x62')][_0x3f19('0x54')]({'name':_0x259618[_0x3f19('0x37')],'resourceId':_0x259618['id'],'type':_0x1a68ee[_0x3f19('0x37')],'sectionId':_0x1a68ee['id']},{})[_0x3f19('0x32')](function(){return _0x4c11a7;});}else{return _0x4c11a7;}})[_0x3f19('0x28')](function(_0x1f11ad){logger[_0x3f19('0x23')](_0x3f19('0x63'),_0x1f11ad);throw _0x1f11ad;});}return _0x4c11a7;})[_0x3f19('0x32')](respondWithResult(_0x524762,0xc9))[_0x3f19('0x28')](handleError(_0x524762,null));};exports['update']=function(_0x5af114,_0x3baf44,_0x3a53ed){var _0xe86634;return db[_0x3f19('0x3b')][_0x3f19('0x53')]({'where':{'id':_0x5af114[_0x3f19('0x52')]['id']}})[_0x3f19('0x32')](handleEntityNotFound(_0x3baf44,null))[_0x3f19('0x32')](saveUpdates(_0x5af114[_0x3f19('0x64')],null))[_0x3f19('0x32')](function(_0x2d9803){if(_0x2d9803){_0xe86634=_0x2d9803;return db['VoiceContext'][_0x3f19('0x55')]({'raw':!![]});}})[_0x3f19('0x32')](function(_0x12eaa1){var _0x40d86f=fs[_0x3f19('0x65')](path['join'](config[_0x3f19('0x56')],'server/files/templates/context.ejs'),_0x3f19('0x58'));var _0x32ec1e=ejs[_0x3f19('0x59')](_0x40d86f,{'contexts':_0x12eaa1||[]});fs[_0x3f19('0x5a')](_0x3f19('0x5b'),_0x32ec1e);})['then'](function(){return respondWithRpcPromise(_0x3f19('0x5c'),_0x3f19('0x31'),{'module':_0x3f19('0x66')});})['then'](function(){return _0xe86634;})['then'](respondWithResult(_0x3baf44,null))[_0x3f19('0x28')](handleError(_0x3baf44,null));};exports[_0x3f19('0x33')]=function(_0x32dced,_0x3ab292,_0xee459){var _0x271314;return db['VoiceContext'][_0x3f19('0x53')]({'where':{'id':_0x32dced[_0x3f19('0x52')]['id']}})[_0x3f19('0x32')](handleEntityNotFound(_0x3ab292,null))[_0x3f19('0x32')](removeEntity(_0x3ab292,null))[_0x3f19('0x32')](function(){return db['VoiceContext'][_0x3f19('0x55')]({'raw':!![]});})['then'](function(_0x39b4bd){var _0x49cf07=fs['readFileSync'](path[_0x3f19('0x67')](config[_0x3f19('0x56')],_0x3f19('0x57')),_0x3f19('0x58'));var _0x21ac09=ejs[_0x3f19('0x59')](_0x49cf07,{'contexts':_0x39b4bd});fs[_0x3f19('0x5a')](_0x3f19('0x5b'),_0x21ac09);return respondWithRpcPromise(_0x3f19('0x5c'),'destroy',{'module':_0x3f19('0x66')});})[_0x3f19('0x28')](handleError(_0x3ab292,null));};
\ No newline at end of file
+var _0x5e59=['send','map','fieldName','type','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','VoiceContext','findAll','rows','params','keys','rawAttributes','length','include','create','body','join','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','Contexts','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','chan_sip.so','destroy','readFileSync','eml-format','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','http','request','then','info','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','error','code','message','VoiceContext,\x20%s,\x20%s','result','catch','sendStatus','status','json','undefined','limit','count','offset','set','reject','update','UserProfileResource','name'];(function(_0x2fb87c,_0x2dee49){var _0x43038b=function(_0x7e5396){while(--_0x7e5396){_0x2fb87c['push'](_0x2fb87c['shift']());}};_0x43038b(++_0x2dee49);}(_0x5e59,0x1d8));var _0x95e5=function(_0x5cbf0e,_0x4cd140){_0x5cbf0e=_0x5cbf0e-0x0;var _0x1c76f8=_0x5e59[_0x5cbf0e];return _0x1c76f8;};'use strict';var emlformat=require(_0x95e5('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x95e5('0x1'));var moment=require(_0x95e5('0x2'));var BPromise=require(_0x95e5('0x3'));var Mustache=require(_0x95e5('0x4'));var util=require('util');var path=require(_0x95e5('0x5'));var sox=require(_0x95e5('0x6'));var csv=require('to-csv');var ejs=require(_0x95e5('0x7'));var fs=require('fs');var fs_extra=require(_0x95e5('0x8'));var _=require(_0x95e5('0x9'));var squel=require(_0x95e5('0xa'));var crypto=require(_0x95e5('0xb'));var jsforce=require(_0x95e5('0xc'));var deskjs=require(_0x95e5('0xd'));var toCsv=require('to-csv');var querystring=require(_0x95e5('0xe'));var Papa=require(_0x95e5('0xf'));var Redis=require(_0x95e5('0x10'));var authService=require(_0x95e5('0x11'));var qs=require(_0x95e5('0x12'));var as=require(_0x95e5('0x13'));var hardwareService=require(_0x95e5('0x14'));var logger=require(_0x95e5('0x15'))(_0x95e5('0x16'));var utils=require(_0x95e5('0x17'));var config=require(_0x95e5('0x18'));var licenseUtil=require(_0x95e5('0x19'));var db=require(_0x95e5('0x1a'))['db'];var jayson=require(_0x95e5('0x1b'));var client=jayson['client'][_0x95e5('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0xe9aea6,_0xc6fadf,_0x192aa6,_0x10a248){return new BPromise(function(_0x5b6fbe,_0x5e3801){var _0x368ac5=_0x10a248||client;return _0x368ac5[_0x95e5('0x1d')](_0xe9aea6,_0x192aa6)[_0x95e5('0x1e')](function(_0x27e11b){logger[_0x95e5('0x1f')]('VoiceContext,\x20%s,\x20%s',_0xc6fadf,_0x95e5('0x20'));logger[_0x95e5('0x21')](_0x95e5('0x22'),_0xc6fadf,_0x95e5('0x20'),JSON['stringify'](_0x27e11b));if(_0x27e11b[_0x95e5('0x23')]){if(_0x27e11b[_0x95e5('0x23')][_0x95e5('0x24')]===0x1f4){logger[_0x95e5('0x23')]('VoiceContext,\x20%s,\x20%s',_0xc6fadf,_0x27e11b[_0x95e5('0x23')][_0x95e5('0x25')]);return _0x5e3801(_0x27e11b[_0x95e5('0x23')][_0x95e5('0x25')]);}logger[_0x95e5('0x23')]('VoiceContext,\x20%s,\x20%s',_0xc6fadf,_0x27e11b['error'][_0x95e5('0x25')]);return _0x5b6fbe(_0x27e11b[_0x95e5('0x23')]['message']);}else{logger[_0x95e5('0x1f')](_0x95e5('0x26'),_0xc6fadf,_0x95e5('0x20'));_0x5b6fbe(_0x27e11b[_0x95e5('0x27')]['message']);}})[_0x95e5('0x28')](function(_0x22476d){logger[_0x95e5('0x23')]('VoiceContext,\x20%s,\x20%s',_0xc6fadf,_0x22476d);_0x5e3801(_0x22476d);});});}function respondWithStatusCode(_0x43ea8b,_0x5c5c2b){_0x5c5c2b=_0x5c5c2b||0xcc;return function(_0x1a75df){if(_0x1a75df){return _0x43ea8b[_0x95e5('0x29')](_0x5c5c2b);}return _0x43ea8b[_0x95e5('0x2a')](_0x5c5c2b)['end']();};}function respondWithResult(_0x1c14f0,_0x12b8a8){_0x12b8a8=_0x12b8a8||0xc8;return function(_0x2cffc5){if(_0x2cffc5){return _0x1c14f0['status'](_0x12b8a8)[_0x95e5('0x2b')](_0x2cffc5);}};}function respondWithFilteredResult(_0x26b9c2,_0x445259){return function(_0x37231c){if(_0x37231c){var _0x2a4d3c=typeof _0x445259['offset']===_0x95e5('0x2c')&&typeof _0x445259[_0x95e5('0x2d')]===_0x95e5('0x2c');var _0x2ae52e=_0x37231c[_0x95e5('0x2e')];var _0x197ffd=_0x2a4d3c?0x0:_0x445259[_0x95e5('0x2f')];var _0x204a55=_0x2a4d3c?_0x37231c[_0x95e5('0x2e')]:_0x445259[_0x95e5('0x2f')]+_0x445259[_0x95e5('0x2d')];var _0x12d27e;if(_0x204a55>=_0x2ae52e){_0x204a55=_0x2ae52e;_0x12d27e=0xc8;}else{_0x12d27e=0xce;}_0x26b9c2[_0x95e5('0x2a')](_0x12d27e);return _0x26b9c2[_0x95e5('0x30')]('Content-Range',_0x197ffd+'-'+_0x204a55+'/'+_0x2ae52e)['json'](_0x37231c);}return null;};}function patchUpdates(_0x48190b){return function(_0xf0567c){try{jsonpatch['apply'](_0xf0567c,_0x48190b,!![]);}catch(_0x238e7e){return BPromise[_0x95e5('0x31')](_0x238e7e);}return _0xf0567c['save']();};}function saveUpdates(_0x154bbe,_0x2456b6){return function(_0x4c5f02){if(_0x4c5f02){return _0x4c5f02[_0x95e5('0x32')](_0x154bbe)[_0x95e5('0x1e')](function(_0x5b298d){return _0x5b298d;});}return null;};}function removeEntity(_0x582b5a,_0x52e7fd){return function(_0x3c9809){if(_0x3c9809){return _0x3c9809['destroy']()[_0x95e5('0x1e')](function(){var _0x2ae709=_0x3c9809['get']({'plain':!![]});var _0x5aff5d='Contexts';return db[_0x95e5('0x33')]['destroy']({'where':{'type':_0x5aff5d,'resourceId':_0x2ae709['id']}})[_0x95e5('0x1e')](function(){return _0x3c9809;});})['then'](function(){_0x582b5a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x268d9d,_0x471a03){return function(_0x4d1934){if(!_0x4d1934){_0x268d9d[_0x95e5('0x29')](0x194);}return _0x4d1934;};}function handleError(_0x39158a,_0x3cb949){_0x3cb949=_0x3cb949||0x1f4;return function(_0x6d887c){logger[_0x95e5('0x23')](_0x6d887c['stack']);if(_0x6d887c['name']){delete _0x6d887c[_0x95e5('0x34')];}_0x39158a[_0x95e5('0x2a')](_0x3cb949)[_0x95e5('0x35')](_0x6d887c);};}exports['index']=function(_0x322cc7,_0x32044b){var _0x448e41={},_0x1b7d05={},_0x4f5258={'count':0x0,'rows':[]};var _0x5d808b=_[_0x95e5('0x36')](db['VoiceContext']['rawAttributes'],function(_0x455a5a){return{'name':_0x455a5a[_0x95e5('0x37')],'type':_0x455a5a[_0x95e5('0x38')][_0x95e5('0x39')]};});_0x1b7d05[_0x95e5('0x3a')]=_['map'](_0x5d808b,_0x95e5('0x34'));_0x1b7d05['query']=_['keys'](_0x322cc7[_0x95e5('0x3b')]);_0x1b7d05['filters']=_[_0x95e5('0x3c')](_0x1b7d05['model'],_0x1b7d05['query']);_0x448e41[_0x95e5('0x3d')]=_['intersection'](_0x1b7d05[_0x95e5('0x3a')],qs[_0x95e5('0x3e')](_0x322cc7[_0x95e5('0x3b')][_0x95e5('0x3e')]));_0x448e41[_0x95e5('0x3d')]=_0x448e41[_0x95e5('0x3d')]['length']?_0x448e41[_0x95e5('0x3d')]:_0x1b7d05[_0x95e5('0x3a')];if(!_0x322cc7['query'][_0x95e5('0x3f')](_0x95e5('0x40'))){_0x448e41[_0x95e5('0x2d')]=qs[_0x95e5('0x2d')](_0x322cc7[_0x95e5('0x3b')][_0x95e5('0x2d')]);_0x448e41[_0x95e5('0x2f')]=qs['offset'](_0x322cc7[_0x95e5('0x3b')]['offset']);}_0x448e41[_0x95e5('0x41')]=qs[_0x95e5('0x42')](_0x322cc7[_0x95e5('0x3b')][_0x95e5('0x42')]);_0x448e41['where']=qs['filters'](_[_0x95e5('0x43')](_0x322cc7[_0x95e5('0x3b')],_0x1b7d05['filters']),_0x5d808b);if(_0x322cc7[_0x95e5('0x3b')][_0x95e5('0x44')]){_0x448e41[_0x95e5('0x45')]=_[_0x95e5('0x46')](_0x448e41[_0x95e5('0x45')],{'$or':_[_0x95e5('0x36')](_0x5d808b,function(_0x1d8206){if(_0x1d8206[_0x95e5('0x38')]!==_0x95e5('0x47')){var _0x3a3df7={};_0x3a3df7[_0x1d8206[_0x95e5('0x34')]]={'$like':'%'+_0x322cc7[_0x95e5('0x3b')]['filter']+'%'};return _0x3a3df7;}})});}_0x448e41=_[_0x95e5('0x46')]({},_0x448e41,_0x322cc7[_0x95e5('0x48')]);var _0x61310c={'where':_0x448e41[_0x95e5('0x45')]};return db['VoiceContext'][_0x95e5('0x2e')](_0x61310c)['then'](function(_0x22eedc){_0x4f5258['count']=_0x22eedc;if(_0x322cc7[_0x95e5('0x3b')][_0x95e5('0x49')]){_0x448e41['include']=[{'all':!![]}];}return db[_0x95e5('0x4a')][_0x95e5('0x4b')](_0x448e41);})['then'](function(_0x526907){_0x4f5258[_0x95e5('0x4c')]=_0x526907;return _0x4f5258;})[_0x95e5('0x1e')](respondWithFilteredResult(_0x32044b,_0x448e41))[_0x95e5('0x28')](handleError(_0x32044b,null));};exports['show']=function(_0x5b6390,_0x4f1906){var _0x188ca6={'raw':![],'where':{'id':_0x5b6390[_0x95e5('0x4d')]['id']}},_0x594372={};_0x594372['model']=_[_0x95e5('0x4e')](db[_0x95e5('0x4a')][_0x95e5('0x4f')]);_0x594372['query']=_[_0x95e5('0x4e')](_0x5b6390[_0x95e5('0x3b')]);_0x594372['filters']=_['intersection'](_0x594372[_0x95e5('0x3a')],_0x594372[_0x95e5('0x3b')]);_0x188ca6[_0x95e5('0x3d')]=_[_0x95e5('0x3c')](_0x594372[_0x95e5('0x3a')],qs[_0x95e5('0x3e')](_0x5b6390[_0x95e5('0x3b')][_0x95e5('0x3e')]));_0x188ca6['attributes']=_0x188ca6[_0x95e5('0x3d')][_0x95e5('0x50')]?_0x188ca6[_0x95e5('0x3d')]:_0x594372[_0x95e5('0x3a')];if(_0x5b6390['query']['includeAll']){_0x188ca6[_0x95e5('0x51')]=[{'all':!![]}];}_0x188ca6=_[_0x95e5('0x46')]({},_0x188ca6,_0x5b6390['options']);return db[_0x95e5('0x4a')]['find'](_0x188ca6)[_0x95e5('0x1e')](handleEntityNotFound(_0x4f1906,null))[_0x95e5('0x1e')](respondWithResult(_0x4f1906,null))[_0x95e5('0x28')](handleError(_0x4f1906,null));};exports[_0x95e5('0x52')]=function(_0x33aec5,_0x357888,_0x420982){var _0x4af8df;return db[_0x95e5('0x4a')][_0x95e5('0x52')](_0x33aec5[_0x95e5('0x53')],{'raw':!![]})[_0x95e5('0x1e')](function(_0x22fdbe){_0x4af8df=_0x22fdbe;return db[_0x95e5('0x4a')][_0x95e5('0x4b')]({'raw':!![]});})['then'](function(_0x5e4f98){var _0x3b11cc=fs['readFileSync'](path[_0x95e5('0x54')](config[_0x95e5('0x55')],_0x95e5('0x56')),_0x95e5('0x57'));var _0x37c023=ejs[_0x95e5('0x58')](_0x3b11cc,{'contexts':_0x5e4f98||[]});fs[_0x95e5('0x59')](_0x95e5('0x5a'),_0x37c023);})['then'](function(){return respondWithRpcPromise(_0x95e5('0x5b'),'create',{'module':'chan_sip.so'});})[_0x95e5('0x1e')](function(){var _0x508800=_0x33aec5['user'][_0x95e5('0x5c')]({'plain':!![]});if(!_0x508800)throw new Error(_0x95e5('0x5d'));if(_0x508800[_0x95e5('0x5e')]===_0x95e5('0x5f')){var _0x3cf835=_0x4af8df[_0x95e5('0x5c')]({'plain':!![]});return db[_0x95e5('0x60')][_0x95e5('0x61')]({'where':{'name':_0x95e5('0x62'),'userProfileId':_0x508800[_0x95e5('0x63')]},'raw':!![]})[_0x95e5('0x1e')](function(_0xd1087b){if(_0xd1087b&&_0xd1087b[_0x95e5('0x64')]===0x0){return db[_0x95e5('0x33')][_0x95e5('0x52')]({'name':_0x3cf835[_0x95e5('0x34')],'resourceId':_0x3cf835['id'],'type':_0xd1087b[_0x95e5('0x34')],'sectionId':_0xd1087b['id']},{})[_0x95e5('0x1e')](function(){return _0x4af8df;});}else{return _0x4af8df;}})[_0x95e5('0x28')](function(_0x166d44){logger['error'](_0x95e5('0x65'),_0x166d44);throw _0x166d44;});}return _0x4af8df;})[_0x95e5('0x1e')](respondWithResult(_0x357888,0xc9))[_0x95e5('0x28')](handleError(_0x357888,null));};exports[_0x95e5('0x32')]=function(_0x328104,_0xea2c0a,_0x4615eb){var _0x5d7750;return db[_0x95e5('0x4a')]['find']({'where':{'id':_0x328104[_0x95e5('0x4d')]['id']}})[_0x95e5('0x1e')](handleEntityNotFound(_0xea2c0a,null))[_0x95e5('0x1e')](saveUpdates(_0x328104['body'],null))[_0x95e5('0x1e')](function(_0x2c3030){if(_0x2c3030){_0x5d7750=_0x2c3030;return db[_0x95e5('0x4a')]['findAll']({'raw':!![]});}})['then'](function(_0xbee5f7){var _0x49c4da=fs['readFileSync'](path[_0x95e5('0x54')](config[_0x95e5('0x55')],_0x95e5('0x56')),_0x95e5('0x57'));var _0xa2f669=ejs[_0x95e5('0x58')](_0x49c4da,{'contexts':_0xbee5f7||[]});fs[_0x95e5('0x59')](_0x95e5('0x5a'),_0xa2f669);})[_0x95e5('0x1e')](function(){return respondWithRpcPromise(_0x95e5('0x5b'),_0x95e5('0x32'),{'module':_0x95e5('0x66')});})[_0x95e5('0x1e')](function(){return _0x5d7750;})[_0x95e5('0x1e')](respondWithResult(_0xea2c0a,null))[_0x95e5('0x28')](handleError(_0xea2c0a,null));};exports[_0x95e5('0x67')]=function(_0x212ed1,_0x2fbe24,_0x1d3e70){var _0x145dc6;return db[_0x95e5('0x4a')][_0x95e5('0x61')]({'where':{'id':_0x212ed1[_0x95e5('0x4d')]['id']}})[_0x95e5('0x1e')](handleEntityNotFound(_0x2fbe24,null))[_0x95e5('0x1e')](removeEntity(_0x2fbe24,null))[_0x95e5('0x1e')](function(){return db[_0x95e5('0x4a')]['findAll']({'raw':!![]});})[_0x95e5('0x1e')](function(_0x5095b4){var _0x2ee378=fs[_0x95e5('0x68')](path[_0x95e5('0x54')](config[_0x95e5('0x55')],'server/files/templates/context.ejs'),_0x95e5('0x57'));var _0x4da8de=ejs[_0x95e5('0x58')](_0x2ee378,{'contexts':_0x5095b4});fs['writeFileSync'](_0x95e5('0x5a'),_0x4da8de);return respondWithRpcPromise(_0x95e5('0x5b'),_0x95e5('0x67'),{'module':_0x95e5('0x66')});})[_0x95e5('0x28')](handleError(_0x2fbe24,null));};
\ No newline at end of file
index 9b6c3fd..cff1572 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ec8=['exports','define','voice_contexts','lodash','../../config/logger','api','moment','path','rimraf','../../config/environment'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x2ec8,0xfd));var _0x82ec=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x2ec8[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x82ec('0x0'));var util=require('util');var logger=require(_0x82ec('0x1'))(_0x82ec('0x2'));var moment=require(_0x82ec('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x82ec('0x4'));var rimraf=require(_0x82ec('0x5'));var config=require(_0x82ec('0x6'));var attributes=require('./voiceContext.attributes');module[_0x82ec('0x7')]=function(_0x4c820c,_0x3ac4ef){return _0x4c820c[_0x82ec('0x8')]('VoiceContext',attributes,{'tableName':_0x82ec('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1dd8=['bluebird','request-promise','./voiceContext.attributes','exports','define','VoiceContext','lodash','util','api','moment'];(function(_0x3a54b9,_0x1ad93f){var _0x1b2923=function(_0x5669d3){while(--_0x5669d3){_0x3a54b9['push'](_0x3a54b9['shift']());}};_0x1b2923(++_0x1ad93f);}(_0x1dd8,0x13c));var _0x81dd=function(_0x4fdb0a,_0x47ddfd){_0x4fdb0a=_0x4fdb0a-0x0;var _0x57e3a2=_0x1dd8[_0x4fdb0a];return _0x57e3a2;};'use strict';var _=require(_0x81dd('0x0'));var util=require(_0x81dd('0x1'));var logger=require('../../config/logger')(_0x81dd('0x2'));var moment=require(_0x81dd('0x3'));var BPromise=require(_0x81dd('0x4'));var rp=require(_0x81dd('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x81dd('0x6'));module[_0x81dd('0x7')]=function(_0x2c2387,_0x44aa0f){return _0x2c2387[_0x81dd('0x8')](_0x81dd('0x9'),attributes,{'tableName':'voice_contexts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c308a82..2e849ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x793b=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\x20%s,\x20%s','error','message','request\x20sent','result','catch','lodash','util','moment'];(function(_0x5f25b3,_0x35481a){var _0x4ab9bf=function(_0x49baf7){while(--_0x49baf7){_0x5f25b3['push'](_0x5f25b3['shift']());}};_0x4ab9bf(++_0x35481a);}(_0x793b,0x189));var _0xb793=function(_0x395185,_0x5cefae){_0x395185=_0x395185-0x0;var _0x44b281=_0x793b[_0x395185];return _0x44b281;};'use strict';var _=require(_0xb793('0x0'));var util=require(_0xb793('0x1'));var moment=require(_0xb793('0x2'));var BPromise=require(_0xb793('0x3'));var rs=require(_0xb793('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb793('0x5'))['db'];var utils=require(_0xb793('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xb793('0x7'));var jayson=require(_0xb793('0x8'));var client=jayson[_0xb793('0x9')][_0xb793('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x39f110,_0x42d0c7,_0x134ac4){return new BPromise(function(_0x23a718,_0x149720){return client[_0xb793('0xb')](_0x39f110,_0x134ac4)[_0xb793('0xc')](function(_0x22c9ea){logger[_0xb793('0xd')](_0xb793('0xe'),_0x42d0c7,'request\x20sent');logger[_0xb793('0xf')](_0xb793('0x10'),_0x42d0c7,'request\x20sent',JSON['stringify'](_0x22c9ea));if(_0x22c9ea[_0xb793('0x11')]){if(_0x22c9ea[_0xb793('0x11')]['code']===0x1f4){logger[_0xb793('0x11')](_0xb793('0xe'),_0x42d0c7,_0x22c9ea['error'][_0xb793('0x12')]);return _0x149720(_0x22c9ea[_0xb793('0x11')][_0xb793('0x12')]);}logger[_0xb793('0x11')](_0xb793('0xe'),_0x42d0c7,_0x22c9ea[_0xb793('0x11')][_0xb793('0x12')]);return _0x23a718(_0x22c9ea['error'][_0xb793('0x12')]);}else{logger['info']('VoiceContext,\x20%s,\x20%s',_0x42d0c7,_0xb793('0x13'));_0x23a718(_0x22c9ea[_0xb793('0x14')][_0xb793('0x12')]);}})[_0xb793('0x15')](function(_0x38d9f2){logger[_0xb793('0x11')](_0xb793('0xe'),_0x42d0c7,_0x38d9f2);_0x149720(_0x38d9f2);});});}
\ No newline at end of file
+var _0x7633=['request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','http'];(function(_0x2a55f8,_0x540ac4){var _0x245efd=function(_0x4dbc19){while(--_0x4dbc19){_0x2a55f8['push'](_0x2a55f8['shift']());}};_0x245efd(++_0x540ac4);}(_0x7633,0x1c4));var _0x3763=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x7633[_0x465a0c];return _0x1e202e;};'use strict';var _=require(_0x3763('0x0'));var util=require(_0x3763('0x1'));var moment=require(_0x3763('0x2'));var BPromise=require(_0x3763('0x3'));var rs=require(_0x3763('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3763('0x5'))['db'];var utils=require(_0x3763('0x6'));var logger=require('../../config/logger')(_0x3763('0x7'));var config=require(_0x3763('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3763('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x8a2d3e,_0x28f9b0,_0x335382){return new BPromise(function(_0x50b634,_0x550b39){return client[_0x3763('0xa')](_0x8a2d3e,_0x335382)[_0x3763('0xb')](function(_0x4aa292){logger[_0x3763('0xc')](_0x3763('0xd'),_0x28f9b0,_0x3763('0xe'));logger[_0x3763('0xf')](_0x3763('0x10'),_0x28f9b0,_0x3763('0xe'),JSON[_0x3763('0x11')](_0x4aa292));if(_0x4aa292[_0x3763('0x12')]){if(_0x4aa292['error'][_0x3763('0x13')]===0x1f4){logger[_0x3763('0x12')](_0x3763('0xd'),_0x28f9b0,_0x4aa292['error']['message']);return _0x550b39(_0x4aa292[_0x3763('0x12')]['message']);}logger[_0x3763('0x12')](_0x3763('0xd'),_0x28f9b0,_0x4aa292[_0x3763('0x12')][_0x3763('0x14')]);return _0x50b634(_0x4aa292[_0x3763('0x12')][_0x3763('0x14')]);}else{logger[_0x3763('0xc')]('VoiceContext,\x20%s,\x20%s',_0x28f9b0,_0x3763('0xe'));_0x50b634(_0x4aa292[_0x3763('0x15')][_0x3763('0x14')]);}})['catch'](function(_0x4dde36){logger['error'](_0x3763('0xd'),_0x28f9b0,_0x4dde36);_0x550b39(_0x4dde36);});});}
\ No newline at end of file
index 617800d..30a8304 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36d6=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','get','isAuthenticated','index','describe','show','post','create','put','delete','/:id','exports','path','connect-timeout'];(function(_0x40b831,_0x4977cf){var _0x1595ee=function(_0x3780d9){while(--_0x3780d9){_0x40b831['push'](_0x40b831['shift']());}};_0x1595ee(++_0x4977cf);}(_0x36d6,0x18d));var _0x636d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x36d6[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x636d('0x0'));var timeout=require(_0x636d('0x1'));var express=require(_0x636d('0x2'));var router=express['Router']();var fs_extra=require(_0x636d('0x3'));var auth=require(_0x636d('0x4'));var interaction=require(_0x636d('0x5'));var config=require(_0x636d('0x6'));var controller=require(_0x636d('0x7'));router[_0x636d('0x8')]('/',auth[_0x636d('0x9')](),controller[_0x636d('0xa')]);router['get']('/describe',auth[_0x636d('0x9')](),controller[_0x636d('0xb')]);router[_0x636d('0x8')]('/:id',auth[_0x636d('0x9')](),controller[_0x636d('0xc')]);router[_0x636d('0xd')]('/',auth[_0x636d('0x9')](),controller[_0x636d('0xe')]);router[_0x636d('0xf')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x636d('0x10')](_0x636d('0x11'),auth[_0x636d('0x9')](),controller['destroy']);module[_0x636d('0x12')]=router;
\ No newline at end of file
+var _0x79c6=['../../config/environment','./voiceDialReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x458363,_0x1675db){var _0x4d0290=function(_0x22960f){while(--_0x22960f){_0x458363['push'](_0x458363['shift']());}};_0x4d0290(++_0x1675db);}(_0x79c6,0x158));var _0x679c=function(_0x52684f,_0xff73fc){_0x52684f=_0x52684f-0x0;var _0x4a55f0=_0x79c6[_0x52684f];return _0x4a55f0;};'use strict';var multer=require(_0x679c('0x0'));var util=require(_0x679c('0x1'));var path=require(_0x679c('0x2'));var timeout=require('connect-timeout');var express=require(_0x679c('0x3'));var router=express[_0x679c('0x4')]();var fs_extra=require(_0x679c('0x5'));var auth=require(_0x679c('0x6'));var interaction=require(_0x679c('0x7'));var config=require(_0x679c('0x8'));var controller=require(_0x679c('0x9'));router[_0x679c('0xa')]('/',auth[_0x679c('0xb')](),controller[_0x679c('0xc')]);router[_0x679c('0xa')](_0x679c('0xd'),auth[_0x679c('0xb')](),controller[_0x679c('0xe')]);router[_0x679c('0xa')](_0x679c('0xf'),auth[_0x679c('0xb')](),controller['show']);router[_0x679c('0x10')]('/',auth['isAuthenticated'](),controller[_0x679c('0x11')]);router[_0x679c('0x12')](_0x679c('0xf'),auth[_0x679c('0xb')](),controller[_0x679c('0x13')]);router[_0x679c('0x14')](_0x679c('0xf'),auth[_0x679c('0xb')](),controller[_0x679c('0x15')]);module['exports']=router;
\ No newline at end of file
index 298f42f..b76601f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbec5=['called,connect,complete','sequelize','exports','STRING','INTEGER','DATE'];(function(_0x34f697,_0x22471c){var _0x5c6cb9=function(_0x56061d){while(--_0x56061d){_0x34f697['push'](_0x34f697['shift']());}};_0x5c6cb9(++_0x22471c);}(_0xbec5,0xe5));var _0x5bec=function(_0x1f7201,_0x141b79){_0x1f7201=_0x1f7201-0x0;var _0x289fd2=_0xbec5[_0x1f7201];return _0x289fd2;};'use strict';var Sequelize=require(_0x5bec('0x0'));module[_0x5bec('0x1')]={'privilege':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x5bec('0x2')]},'channelstate':{'type':Sequelize[_0x5bec('0x3')]},'channelstatedesc':{'type':Sequelize[_0x5bec('0x2')]},'calleridnum':{'type':Sequelize[_0x5bec('0x2')]},'calleridname':{'type':Sequelize[_0x5bec('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x5bec('0x2')]},'language':{'type':Sequelize[_0x5bec('0x2')]},'accountcode':{'type':Sequelize[_0x5bec('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x5bec('0x2')]},'priority':{'type':Sequelize[_0x5bec('0x3')]},'uniqueid':{'type':Sequelize[_0x5bec('0x2')]},'linkedid':{'type':Sequelize[_0x5bec('0x2')]},'destchannel':{'type':Sequelize[_0x5bec('0x2')]},'destchannelstate':{'type':Sequelize[_0x5bec('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x5bec('0x2')]},'destcalleridnum':{'type':Sequelize[_0x5bec('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x5bec('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x5bec('0x2')]},'destaccountcode':{'type':Sequelize[_0x5bec('0x2')]},'destcontext':{'type':Sequelize[_0x5bec('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x5bec('0x3')]},'destuniqueid':{'type':Sequelize[_0x5bec('0x2')]},'destlinkedid':{'type':Sequelize[_0x5bec('0x2')]},'dialstring':{'type':Sequelize['STRING']},'dialstatus':{'type':Sequelize[_0x5bec('0x2')]},'starttime':{'type':Sequelize[_0x5bec('0x4')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x5bec('0x4')]},'lastevent':{'type':Sequelize[_0x5bec('0x2')],'comment':_0x5bec('0x5')},'routeId':{'type':Sequelize[_0x5bec('0x3')]},'duration':{'type':Sequelize[_0x5bec('0x3')]},'holdtime':{'type':Sequelize[_0x5bec('0x3')]},'billableseconds':{'type':Sequelize[_0x5bec('0x3')]}};
\ No newline at end of file
+var _0xe14d=['DATE','called,connect,complete','sequelize','exports','STRING','INTEGER'];(function(_0x179b74,_0x5dc97d){var _0x268f76=function(_0x19c8c2){while(--_0x19c8c2){_0x179b74['push'](_0x179b74['shift']());}};_0x268f76(++_0x5dc97d);}(_0xe14d,0x1ee));var _0xde14=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0xe14d[_0x618414];return _0x21c19a;};'use strict';var Sequelize=require(_0xde14('0x0'));module[_0xde14('0x1')]={'privilege':{'type':Sequelize[_0xde14('0x2')]},'channel':{'type':Sequelize[_0xde14('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xde14('0x2')]},'calleridnum':{'type':Sequelize[_0xde14('0x2')]},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xde14('0x2')]},'connectedlinename':{'type':Sequelize[_0xde14('0x2')]},'language':{'type':Sequelize[_0xde14('0x2')]},'accountcode':{'type':Sequelize[_0xde14('0x2')]},'context':{'type':Sequelize[_0xde14('0x2')]},'exten':{'type':Sequelize[_0xde14('0x2')]},'priority':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0xde14('0x2')]},'destchannel':{'type':Sequelize[_0xde14('0x2')]},'destchannelstate':{'type':Sequelize[_0xde14('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xde14('0x2')]},'destcalleridnum':{'type':Sequelize[_0xde14('0x2')]},'destcalleridname':{'type':Sequelize[_0xde14('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xde14('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xde14('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0xde14('0x2')]},'destcontext':{'type':Sequelize[_0xde14('0x2')]},'destexten':{'type':Sequelize[_0xde14('0x2')]},'destpriority':{'type':Sequelize[_0xde14('0x3')]},'destuniqueid':{'type':Sequelize[_0xde14('0x2')]},'destlinkedid':{'type':Sequelize[_0xde14('0x2')]},'dialstring':{'type':Sequelize[_0xde14('0x2')]},'dialstatus':{'type':Sequelize[_0xde14('0x2')]},'starttime':{'type':Sequelize[_0xde14('0x4')]},'answertime':{'type':Sequelize[_0xde14('0x4')]},'endtime':{'type':Sequelize[_0xde14('0x4')]},'lastevent':{'type':Sequelize[_0xde14('0x2')],'comment':_0xde14('0x5')},'routeId':{'type':Sequelize[_0xde14('0x3')]},'duration':{'type':Sequelize[_0xde14('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index def886c..d7b9195 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32ca=['fast-json-patch','request-promise','mustache','util','path','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','index','VoiceDialReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','sort','filters','filter','where','merge','map','options','includeAll','include','findAll','show','params','length','find','catch','create','body','describe','eml-format','rimraf'];(function(_0x5e15ee,_0x4ed8fb){var _0x107fda=function(_0x906e33){while(--_0x906e33){_0x5e15ee['push'](_0x5e15ee['shift']());}};_0x107fda(++_0x4ed8fb);}(_0x32ca,0x1e8));var _0xa32c=function(_0xf2efae,_0x307737){_0xf2efae=_0xf2efae-0x0;var _0x241311=_0x32ca[_0xf2efae];return _0x241311;};'use strict';var emlformat=require(_0xa32c('0x0'));var rimraf=require(_0xa32c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa32c('0x2'));var rp=require(_0xa32c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa32c('0x4'));var util=require(_0xa32c('0x5'));var path=require(_0xa32c('0x6'));var sox=require(_0xa32c('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa32c('0x8'));var _=require(_0xa32c('0x9'));var squel=require(_0xa32c('0xa'));var crypto=require('crypto');var jsforce=require(_0xa32c('0xb'));var deskjs=require(_0xa32c('0xc'));var toCsv=require(_0xa32c('0xd'));var querystring=require('querystring');var Papa=require(_0xa32c('0xe'));var Redis=require('ioredis');var authService=require(_0xa32c('0xf'));var qs=require(_0xa32c('0x10'));var as=require(_0xa32c('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa32c('0x12'))(_0xa32c('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa32c('0x14'))['db'];function respondWithStatusCode(_0x5c4e0b,_0x11b27b){_0x11b27b=_0x11b27b||0xcc;return function(_0x5637ea){if(_0x5637ea){return _0x5c4e0b['sendStatus'](_0x11b27b);}return _0x5c4e0b[_0xa32c('0x15')](_0x11b27b)[_0xa32c('0x16')]();};}function respondWithResult(_0x4bfb47,_0x3bdb80){_0x3bdb80=_0x3bdb80||0xc8;return function(_0xe5afdf){if(_0xe5afdf){return _0x4bfb47[_0xa32c('0x15')](_0x3bdb80)['json'](_0xe5afdf);}};}function respondWithFilteredResult(_0x546a15,_0x220375){return function(_0x49dc00){if(_0x49dc00){var _0x1e84e7=typeof _0x220375[_0xa32c('0x17')]===_0xa32c('0x18')&&typeof _0x220375[_0xa32c('0x19')]==='undefined';var _0x44f8b4=_0x49dc00[_0xa32c('0x1a')];var _0x23433a=_0x1e84e7?0x0:_0x220375['offset'];var _0x3f58a7=_0x1e84e7?_0x49dc00[_0xa32c('0x1a')]:_0x220375[_0xa32c('0x17')]+_0x220375['limit'];var _0x2f36f0;if(_0x3f58a7>=_0x44f8b4){_0x3f58a7=_0x44f8b4;_0x2f36f0=0xc8;}else{_0x2f36f0=0xce;}_0x546a15[_0xa32c('0x15')](_0x2f36f0);return _0x546a15[_0xa32c('0x1b')](_0xa32c('0x1c'),_0x23433a+'-'+_0x3f58a7+'/'+_0x44f8b4)[_0xa32c('0x1d')](_0x49dc00);}return null;};}function patchUpdates(_0x47c51a){return function(_0x4f4972){try{jsonpatch[_0xa32c('0x1e')](_0x4f4972,_0x47c51a,!![]);}catch(_0x50f857){return BPromise[_0xa32c('0x1f')](_0x50f857);}return _0x4f4972[_0xa32c('0x20')]();};}function saveUpdates(_0x54a6e0,_0x575dc9){return function(_0x2f0d0b){if(_0x2f0d0b){return _0x2f0d0b[_0xa32c('0x21')](_0x54a6e0)[_0xa32c('0x22')](function(_0x4c5435){return _0x4c5435;});}return null;};}function removeEntity(_0x1a19b1,_0xee660d){return function(_0x2a1e85){if(_0x2a1e85){return _0x2a1e85[_0xa32c('0x23')]()['then'](function(){_0x1a19b1[_0xa32c('0x15')](0xcc)[_0xa32c('0x16')]();});}};}function handleEntityNotFound(_0x3dadac,_0x35afc6){return function(_0x42c25e){if(!_0x42c25e){_0x3dadac['sendStatus'](0x194);}return _0x42c25e;};}function handleError(_0x518b4b,_0x12349c){_0x12349c=_0x12349c||0x1f4;return function(_0x2afae3){logger[_0xa32c('0x24')](_0x2afae3['stack']);if(_0x2afae3[_0xa32c('0x25')]){delete _0x2afae3[_0xa32c('0x25')];}_0x518b4b[_0xa32c('0x15')](_0x12349c)[_0xa32c('0x26')](_0x2afae3);};}exports[_0xa32c('0x27')]=function(_0x4e52b4,_0x31ceaa){var _0x2b8992={},_0x3f8fe8={},_0x5a9c83={'count':0x0,'rows':[]};var _0x114339=_['map'](db[_0xa32c('0x28')][_0xa32c('0x29')],function(_0x2bbe84){return{'name':_0x2bbe84[_0xa32c('0x2a')],'type':_0x2bbe84[_0xa32c('0x2b')][_0xa32c('0x2c')]};});_0x3f8fe8[_0xa32c('0x2d')]=_['map'](_0x114339,'name');_0x3f8fe8[_0xa32c('0x2e')]=_[_0xa32c('0x2f')](_0x4e52b4[_0xa32c('0x2e')]);_0x3f8fe8['filters']=_[_0xa32c('0x30')](_0x3f8fe8[_0xa32c('0x2d')],_0x3f8fe8['query']);_0x2b8992[_0xa32c('0x31')]=_['intersection'](_0x3f8fe8['model'],qs['fields'](_0x4e52b4[_0xa32c('0x2e')][_0xa32c('0x32')]));_0x2b8992[_0xa32c('0x31')]=_0x2b8992[_0xa32c('0x31')]['length']?_0x2b8992[_0xa32c('0x31')]:_0x3f8fe8['model'];if(!_0x4e52b4[_0xa32c('0x2e')][_0xa32c('0x33')]('nolimit')){_0x2b8992[_0xa32c('0x19')]=qs[_0xa32c('0x19')](_0x4e52b4['query']['limit']);_0x2b8992[_0xa32c('0x17')]=qs[_0xa32c('0x17')](_0x4e52b4['query']['offset']);}_0x2b8992['order']=qs[_0xa32c('0x34')](_0x4e52b4[_0xa32c('0x2e')]['sort']);_0x2b8992['where']=qs[_0xa32c('0x35')](_['pick'](_0x4e52b4[_0xa32c('0x2e')],_0x3f8fe8['filters']),_0x114339);if(_0x4e52b4[_0xa32c('0x2e')][_0xa32c('0x36')]){_0x2b8992[_0xa32c('0x37')]=_[_0xa32c('0x38')](_0x2b8992['where'],{'$or':_[_0xa32c('0x39')](_0x114339,function(_0x17ab06){if(_0x17ab06[_0xa32c('0x2b')]!=='VIRTUAL'){var _0x24ec10={};_0x24ec10[_0x17ab06[_0xa32c('0x25')]]={'$like':'%'+_0x4e52b4[_0xa32c('0x2e')]['filter']+'%'};return _0x24ec10;}})});}_0x2b8992=_['merge']({},_0x2b8992,_0x4e52b4[_0xa32c('0x3a')]);var _0x3bb2e8={'where':_0x2b8992[_0xa32c('0x37')]};return db[_0xa32c('0x28')][_0xa32c('0x1a')](_0x3bb2e8)[_0xa32c('0x22')](function(_0x5da1ca){_0x5a9c83[_0xa32c('0x1a')]=_0x5da1ca;if(_0x4e52b4['query'][_0xa32c('0x3b')]){_0x2b8992[_0xa32c('0x3c')]=[{'all':!![]}];}return db[_0xa32c('0x28')][_0xa32c('0x3d')](_0x2b8992);})[_0xa32c('0x22')](function(_0x5050f9){_0x5a9c83['rows']=_0x5050f9;return _0x5a9c83;})['then'](respondWithFilteredResult(_0x31ceaa,_0x2b8992))['catch'](handleError(_0x31ceaa,null));};exports[_0xa32c('0x3e')]=function(_0x55986c,_0x24a515){var _0x972ffc={'raw':!![],'where':{'id':_0x55986c[_0xa32c('0x3f')]['id']}},_0x3b5afd={};_0x3b5afd[_0xa32c('0x2d')]=_[_0xa32c('0x2f')](db[_0xa32c('0x28')]['rawAttributes']);_0x3b5afd[_0xa32c('0x2e')]=_[_0xa32c('0x2f')](_0x55986c[_0xa32c('0x2e')]);_0x3b5afd[_0xa32c('0x35')]=_[_0xa32c('0x30')](_0x3b5afd[_0xa32c('0x2d')],_0x3b5afd[_0xa32c('0x2e')]);_0x972ffc['attributes']=_[_0xa32c('0x30')](_0x3b5afd[_0xa32c('0x2d')],qs[_0xa32c('0x32')](_0x55986c[_0xa32c('0x2e')]['fields']));_0x972ffc['attributes']=_0x972ffc[_0xa32c('0x31')][_0xa32c('0x40')]?_0x972ffc[_0xa32c('0x31')]:_0x3b5afd[_0xa32c('0x2d')];if(_0x55986c[_0xa32c('0x2e')][_0xa32c('0x3b')]){_0x972ffc[_0xa32c('0x3c')]=[{'all':!![]}];}_0x972ffc=_['merge']({},_0x972ffc,_0x55986c['options']);return db['VoiceDialReport'][_0xa32c('0x41')](_0x972ffc)[_0xa32c('0x22')](handleEntityNotFound(_0x24a515,null))[_0xa32c('0x22')](respondWithResult(_0x24a515,null))[_0xa32c('0x42')](handleError(_0x24a515,null));};exports[_0xa32c('0x43')]=function(_0x5b3895,_0x28f147){return db[_0xa32c('0x28')][_0xa32c('0x43')](_0x5b3895[_0xa32c('0x44')],{})['then'](respondWithResult(_0x28f147,0xc9))[_0xa32c('0x42')](handleError(_0x28f147,null));};exports[_0xa32c('0x21')]=function(_0x4f118d,_0x24868e){if(_0x4f118d[_0xa32c('0x44')]['id']){delete _0x4f118d[_0xa32c('0x44')]['id'];}return db[_0xa32c('0x28')][_0xa32c('0x41')]({'where':{'id':_0x4f118d['params']['id']}})[_0xa32c('0x22')](handleEntityNotFound(_0x24868e,null))[_0xa32c('0x22')](saveUpdates(_0x4f118d[_0xa32c('0x44')],null))['then'](respondWithResult(_0x24868e,null))[_0xa32c('0x42')](handleError(_0x24868e,null));};exports[_0xa32c('0x23')]=function(_0x1b988a,_0x30c08f){return db[_0xa32c('0x28')][_0xa32c('0x41')]({'where':{'id':_0x1b988a[_0xa32c('0x3f')]['id']}})[_0xa32c('0x22')](handleEntityNotFound(_0x30c08f,null))[_0xa32c('0x22')](removeEntity(_0x30c08f,null))[_0xa32c('0x42')](handleError(_0x30c08f,null));};exports[_0xa32c('0x45')]=function(_0x5b7998,_0x56f65d){return db[_0xa32c('0x28')]['describe']()[_0xa32c('0x22')](respondWithResult(_0x56f65d,null))[_0xa32c('0x42')](handleError(_0x56f65d,null));};
\ No newline at end of file
+var _0xdcce=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','update','then','destroy','error','stack','name','index','map','VoiceDialReport','rawAttributes','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','findAll','rows','catch','params','keys','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x10998a,_0x4d820d){var _0x461f05=function(_0x3a079c){while(--_0x3a079c){_0x10998a['push'](_0x10998a['shift']());}};_0x461f05(++_0x4d820d);}(_0xdcce,0x14a));var _0xedcc=function(_0x232820,_0x6c6d30){_0x232820=_0x232820-0x0;var _0x2b0c0f=_0xdcce[_0x232820];return _0x2b0c0f;};'use strict';var emlformat=require(_0xedcc('0x0'));var rimraf=require(_0xedcc('0x1'));var zipdir=require(_0xedcc('0x2'));var jsonpatch=require(_0xedcc('0x3'));var rp=require(_0xedcc('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xedcc('0x5'));var util=require(_0xedcc('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xedcc('0x7'));var ejs=require(_0xedcc('0x8'));var fs=require('fs');var fs_extra=require(_0xedcc('0x9'));var _=require(_0xedcc('0xa'));var squel=require(_0xedcc('0xb'));var crypto=require(_0xedcc('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xedcc('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xedcc('0xd'));var authService=require(_0xedcc('0xe'));var qs=require(_0xedcc('0xf'));var as=require(_0xedcc('0x10'));var hardwareService=require(_0xedcc('0x11'));var logger=require(_0xedcc('0x12'))(_0xedcc('0x13'));var utils=require('../../config/utils');var config=require(_0xedcc('0x14'));var licenseUtil=require(_0xedcc('0x15'));var db=require(_0xedcc('0x16'))['db'];function respondWithStatusCode(_0x1a3926,_0x484f8e){_0x484f8e=_0x484f8e||0xcc;return function(_0xeb4690){if(_0xeb4690){return _0x1a3926[_0xedcc('0x17')](_0x484f8e);}return _0x1a3926[_0xedcc('0x18')](_0x484f8e)[_0xedcc('0x19')]();};}function respondWithResult(_0x3a2d42,_0xda1001){_0xda1001=_0xda1001||0xc8;return function(_0x46ed3d){if(_0x46ed3d){return _0x3a2d42[_0xedcc('0x18')](_0xda1001)[_0xedcc('0x1a')](_0x46ed3d);}};}function respondWithFilteredResult(_0x3b0f62,_0x4a2fae){return function(_0x13a55d){if(_0x13a55d){var _0x151d9c=typeof _0x4a2fae[_0xedcc('0x1b')]===_0xedcc('0x1c')&&typeof _0x4a2fae[_0xedcc('0x1d')]===_0xedcc('0x1c');var _0x46eec4=_0x13a55d[_0xedcc('0x1e')];var _0x3eea40=_0x151d9c?0x0:_0x4a2fae['offset'];var _0x59e424=_0x151d9c?_0x13a55d[_0xedcc('0x1e')]:_0x4a2fae['offset']+_0x4a2fae[_0xedcc('0x1d')];var _0x35ff1d;if(_0x59e424>=_0x46eec4){_0x59e424=_0x46eec4;_0x35ff1d=0xc8;}else{_0x35ff1d=0xce;}_0x3b0f62[_0xedcc('0x18')](_0x35ff1d);return _0x3b0f62[_0xedcc('0x1f')]('Content-Range',_0x3eea40+'-'+_0x59e424+'/'+_0x46eec4)[_0xedcc('0x1a')](_0x13a55d);}return null;};}function patchUpdates(_0x55e0da){return function(_0x2bb459){try{jsonpatch['apply'](_0x2bb459,_0x55e0da,!![]);}catch(_0x4132bb){return BPromise['reject'](_0x4132bb);}return _0x2bb459['save']();};}function saveUpdates(_0x1c098e,_0x23f0e9){return function(_0x4b8d67){if(_0x4b8d67){return _0x4b8d67[_0xedcc('0x20')](_0x1c098e)[_0xedcc('0x21')](function(_0x5b26f5){return _0x5b26f5;});}return null;};}function removeEntity(_0x2b84a1,_0x14cd5e){return function(_0x21a48a){if(_0x21a48a){return _0x21a48a[_0xedcc('0x22')]()['then'](function(){_0x2b84a1[_0xedcc('0x18')](0xcc)[_0xedcc('0x19')]();});}};}function handleEntityNotFound(_0x59d0a5,_0x588314){return function(_0x3c7c7c){if(!_0x3c7c7c){_0x59d0a5[_0xedcc('0x17')](0x194);}return _0x3c7c7c;};}function handleError(_0x5e4d26,_0x6ca473){_0x6ca473=_0x6ca473||0x1f4;return function(_0x5ebaa9){logger[_0xedcc('0x23')](_0x5ebaa9[_0xedcc('0x24')]);if(_0x5ebaa9['name']){delete _0x5ebaa9[_0xedcc('0x25')];}_0x5e4d26['status'](_0x6ca473)['send'](_0x5ebaa9);};}exports[_0xedcc('0x26')]=function(_0x13868d,_0x3d0a39){var _0x596e28={},_0x3a7699={},_0x58ab32={'count':0x0,'rows':[]};var _0x416d99=_[_0xedcc('0x27')](db[_0xedcc('0x28')][_0xedcc('0x29')],function(_0x50bc40){return{'name':_0x50bc40['fieldName'],'type':_0x50bc40['type']['key']};});_0x3a7699[_0xedcc('0x2a')]=_[_0xedcc('0x27')](_0x416d99,_0xedcc('0x25'));_0x3a7699[_0xedcc('0x2b')]=_['keys'](_0x13868d[_0xedcc('0x2b')]);_0x3a7699[_0xedcc('0x2c')]=_[_0xedcc('0x2d')](_0x3a7699[_0xedcc('0x2a')],_0x3a7699[_0xedcc('0x2b')]);_0x596e28[_0xedcc('0x2e')]=_[_0xedcc('0x2d')](_0x3a7699['model'],qs[_0xedcc('0x2f')](_0x13868d[_0xedcc('0x2b')]['fields']));_0x596e28[_0xedcc('0x2e')]=_0x596e28[_0xedcc('0x2e')][_0xedcc('0x30')]?_0x596e28['attributes']:_0x3a7699[_0xedcc('0x2a')];if(!_0x13868d[_0xedcc('0x2b')][_0xedcc('0x31')]('nolimit')){_0x596e28['limit']=qs[_0xedcc('0x1d')](_0x13868d[_0xedcc('0x2b')][_0xedcc('0x1d')]);_0x596e28[_0xedcc('0x1b')]=qs[_0xedcc('0x1b')](_0x13868d['query'][_0xedcc('0x1b')]);}_0x596e28[_0xedcc('0x32')]=qs[_0xedcc('0x33')](_0x13868d['query'][_0xedcc('0x33')]);_0x596e28[_0xedcc('0x34')]=qs[_0xedcc('0x2c')](_[_0xedcc('0x35')](_0x13868d['query'],_0x3a7699[_0xedcc('0x2c')]),_0x416d99);if(_0x13868d[_0xedcc('0x2b')]['filter']){_0x596e28[_0xedcc('0x34')]=_[_0xedcc('0x36')](_0x596e28[_0xedcc('0x34')],{'$or':_[_0xedcc('0x27')](_0x416d99,function(_0x2bd2b4){if(_0x2bd2b4[_0xedcc('0x37')]!==_0xedcc('0x38')){var _0x3abae6={};_0x3abae6[_0x2bd2b4[_0xedcc('0x25')]]={'$like':'%'+_0x13868d[_0xedcc('0x2b')][_0xedcc('0x39')]+'%'};return _0x3abae6;}})});}_0x596e28=_[_0xedcc('0x36')]({},_0x596e28,_0x13868d[_0xedcc('0x3a')]);var _0x39f903={'where':_0x596e28[_0xedcc('0x34')]};return db[_0xedcc('0x28')][_0xedcc('0x1e')](_0x39f903)[_0xedcc('0x21')](function(_0x286162){_0x58ab32[_0xedcc('0x1e')]=_0x286162;if(_0x13868d[_0xedcc('0x2b')][_0xedcc('0x3b')]){_0x596e28['include']=[{'all':!![]}];}return db['VoiceDialReport'][_0xedcc('0x3c')](_0x596e28);})[_0xedcc('0x21')](function(_0x33c280){_0x58ab32[_0xedcc('0x3d')]=_0x33c280;return _0x58ab32;})[_0xedcc('0x21')](respondWithFilteredResult(_0x3d0a39,_0x596e28))[_0xedcc('0x3e')](handleError(_0x3d0a39,null));};exports['show']=function(_0x37cd73,_0x5c5c83){var _0x54d965={'raw':!![],'where':{'id':_0x37cd73[_0xedcc('0x3f')]['id']}},_0x5df754={};_0x5df754[_0xedcc('0x2a')]=_['keys'](db[_0xedcc('0x28')][_0xedcc('0x29')]);_0x5df754[_0xedcc('0x2b')]=_[_0xedcc('0x40')](_0x37cd73[_0xedcc('0x2b')]);_0x5df754[_0xedcc('0x2c')]=_[_0xedcc('0x2d')](_0x5df754[_0xedcc('0x2a')],_0x5df754['query']);_0x54d965[_0xedcc('0x2e')]=_['intersection'](_0x5df754['model'],qs[_0xedcc('0x2f')](_0x37cd73[_0xedcc('0x2b')][_0xedcc('0x2f')]));_0x54d965['attributes']=_0x54d965[_0xedcc('0x2e')][_0xedcc('0x30')]?_0x54d965['attributes']:_0x5df754[_0xedcc('0x2a')];if(_0x37cd73[_0xedcc('0x2b')][_0xedcc('0x3b')]){_0x54d965[_0xedcc('0x41')]=[{'all':!![]}];}_0x54d965=_[_0xedcc('0x36')]({},_0x54d965,_0x37cd73[_0xedcc('0x3a')]);return db[_0xedcc('0x28')][_0xedcc('0x42')](_0x54d965)['then'](handleEntityNotFound(_0x5c5c83,null))[_0xedcc('0x21')](respondWithResult(_0x5c5c83,null))[_0xedcc('0x3e')](handleError(_0x5c5c83,null));};exports[_0xedcc('0x43')]=function(_0x5a48ba,_0x1f69d3){return db[_0xedcc('0x28')][_0xedcc('0x43')](_0x5a48ba[_0xedcc('0x44')],{})[_0xedcc('0x21')](respondWithResult(_0x1f69d3,0xc9))[_0xedcc('0x3e')](handleError(_0x1f69d3,null));};exports['update']=function(_0x15dce6,_0x46aa7c){if(_0x15dce6[_0xedcc('0x44')]['id']){delete _0x15dce6[_0xedcc('0x44')]['id'];}return db['VoiceDialReport'][_0xedcc('0x42')]({'where':{'id':_0x15dce6[_0xedcc('0x3f')]['id']}})['then'](handleEntityNotFound(_0x46aa7c,null))[_0xedcc('0x21')](saveUpdates(_0x15dce6[_0xedcc('0x44')],null))['then'](respondWithResult(_0x46aa7c,null))[_0xedcc('0x3e')](handleError(_0x46aa7c,null));};exports[_0xedcc('0x22')]=function(_0x48fd67,_0xf20f2a){return db[_0xedcc('0x28')]['find']({'where':{'id':_0x48fd67[_0xedcc('0x3f')]['id']}})[_0xedcc('0x21')](handleEntityNotFound(_0xf20f2a,null))['then'](removeEntity(_0xf20f2a,null))[_0xedcc('0x3e')](handleError(_0xf20f2a,null));};exports[_0xedcc('0x45')]=function(_0x4b1666,_0x373c37){return db['VoiceDialReport']['describe']()[_0xedcc('0x21')](respondWithResult(_0x373c37,null))[_0xedcc('0x3e')](handleError(_0x373c37,null));};
\ No newline at end of file
index 22a253b..04757d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb769=['lodash','../../config/logger','api','request-promise','path','rimraf','../../config/environment','exports','report_dial'];(function(_0x16984d,_0x40a4d9){var _0x567c12=function(_0x4e959e){while(--_0x4e959e){_0x16984d['push'](_0x16984d['shift']());}};_0x567c12(++_0x40a4d9);}(_0xb769,0x19e));var _0x9b76=function(_0x59e9a9,_0xd4e48e){_0x59e9a9=_0x59e9a9-0x0;var _0x213617=_0xb769[_0x59e9a9];return _0x213617;};'use strict';var _=require(_0x9b76('0x0'));var util=require('util');var logger=require(_0x9b76('0x1'))(_0x9b76('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9b76('0x3'));var fs=require('fs');var path=require(_0x9b76('0x4'));var rimraf=require(_0x9b76('0x5'));var config=require(_0x9b76('0x6'));var attributes=require('./voiceDialReport.attributes');module[_0x9b76('0x7')]=function(_0x18f154,_0x5706b0){return _0x18f154['define']('VoiceDialReport',attributes,{'tableName':_0x9b76('0x8'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x62dd=['moment','request-promise','path','rimraf','../../config/environment','exports','define','VoiceDialReport','report_dial','uniqueid','lodash','util','../../config/logger','api'];(function(_0x45fd47,_0x11bc77){var _0x2db7ce=function(_0x2be9fd){while(--_0x2be9fd){_0x45fd47['push'](_0x45fd47['shift']());}};_0x2db7ce(++_0x11bc77);}(_0x62dd,0x6c));var _0xd62d=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x62dd[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0xd62d('0x0'));var util=require(_0xd62d('0x1'));var logger=require(_0xd62d('0x2'))(_0xd62d('0x3'));var moment=require(_0xd62d('0x4'));var BPromise=require('bluebird');var rp=require(_0xd62d('0x5'));var fs=require('fs');var path=require(_0xd62d('0x6'));var rimraf=require(_0xd62d('0x7'));var config=require(_0xd62d('0x8'));var attributes=require('./voiceDialReport.attributes');module[_0xd62d('0x9')]=function(_0x5326fa,_0x11adaf){return _0x5326fa[_0xd62d('0xa')](_0xd62d('0xb'),attributes,{'tableName':_0xd62d('0xc'),'paranoid':![],'indexes':[{'fields':[_0xd62d('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 91cf8bf..7d41f20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7731=['info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateVoiceDialReport','body','options','raw','UpdateVoiceDialReport','VoiceDialReport','update','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0x7731,0x17c));var _0x1773=function(_0x349031,_0x3cd2d1){_0x349031=_0x349031-0x0;var _0x33bcba=_0x7731[_0x349031];return _0x33bcba;};'use strict';var _=require(_0x1773('0x0'));var util=require(_0x1773('0x1'));var moment=require(_0x1773('0x2'));var BPromise=require(_0x1773('0x3'));var rs=require(_0x1773('0x4'));var fs=require('fs');var Redis=require(_0x1773('0x5'));var db=require(_0x1773('0x6'))['db'];var utils=require(_0x1773('0x7'));var logger=require(_0x1773('0x8'))(_0x1773('0x9'));var config=require(_0x1773('0xa'));var jayson=require(_0x1773('0xb'));var client=jayson[_0x1773('0xc')][_0x1773('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x53faf9,_0x26c346,_0x5b9be9){return new BPromise(function(_0x43cde6,_0x310c37){return client[_0x1773('0xe')](_0x53faf9,_0x5b9be9)[_0x1773('0xf')](function(_0x168e6b){logger[_0x1773('0x10')](_0x1773('0x11'),_0x26c346,_0x1773('0x12'));logger[_0x1773('0x13')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x26c346,_0x1773('0x12'),JSON[_0x1773('0x14')](_0x168e6b));if(_0x168e6b[_0x1773('0x15')]){if(_0x168e6b['error'][_0x1773('0x16')]===0x1f4){logger[_0x1773('0x15')](_0x1773('0x11'),_0x26c346,_0x168e6b[_0x1773('0x15')]['message']);return _0x310c37(_0x168e6b[_0x1773('0x15')][_0x1773('0x17')]);}logger[_0x1773('0x15')](_0x1773('0x11'),_0x26c346,_0x168e6b[_0x1773('0x15')]['message']);return _0x43cde6(_0x168e6b[_0x1773('0x15')][_0x1773('0x17')]);}else{logger['info'](_0x1773('0x11'),_0x26c346,_0x1773('0x12'));_0x43cde6(_0x168e6b[_0x1773('0x18')][_0x1773('0x17')]);}})[_0x1773('0x19')](function(_0x465e34){logger[_0x1773('0x15')](_0x1773('0x11'),_0x26c346,_0x465e34);_0x310c37(_0x465e34);});});}exports[_0x1773('0x1a')]=function(_0x15f547){var _0x150cbe=this;return new Promise(function(_0x2b54ce,_0x22293b){return db['VoiceDialReport']['create'](_0x15f547[_0x1773('0x1b')],{'raw':_0x15f547[_0x1773('0x1c')]?_0x15f547[_0x1773('0x1c')][_0x1773('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x38c6c5){logger[_0x1773('0x10')](_0x1773('0x1a'),_0x15f547);logger[_0x1773('0x13')]('CreateVoiceDialReport',_0x15f547,JSON[_0x1773('0x14')](_0x38c6c5));_0x2b54ce(_0x38c6c5);})[_0x1773('0x19')](function(_0x3bc227){logger[_0x1773('0x15')](_0x1773('0x1a'),_0x3bc227[_0x1773('0x17')],_0x15f547);_0x22293b(_0x150cbe[_0x1773('0x15')](0x1f4,_0x3bc227['message']));});});};exports[_0x1773('0x1e')]=function(_0x5c89f5){var _0x5b972a=this;return new Promise(function(_0x336730,_0x183429){return db[_0x1773('0x1f')][_0x1773('0x20')](_0x5c89f5['body'],{'raw':_0x5c89f5[_0x1773('0x1c')]?_0x5c89f5['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5c89f5['options']?_0x5c89f5[_0x1773('0x1c')][_0x1773('0x21')]||null:null,'attributes':_0x5c89f5[_0x1773('0x1c')]?_0x5c89f5[_0x1773('0x1c')][_0x1773('0x22')]||null:null,'limit':_0x5c89f5['options']?_0x5c89f5[_0x1773('0x1c')][_0x1773('0x23')]||null:null})[_0x1773('0xf')](function(_0x34a539){logger[_0x1773('0x10')](_0x1773('0x1e'),_0x5c89f5);logger[_0x1773('0x13')](_0x1773('0x1e'),_0x5c89f5,JSON['stringify'](_0x34a539));_0x336730(_0x34a539);})[_0x1773('0x19')](function(_0x4f58ab){logger[_0x1773('0x15')](_0x1773('0x1e'),_0x4f58ab['message'],_0x5c89f5);_0x183429(_0x5b972a['error'](0x1f4,_0x4f58ab['message']));});});};
\ No newline at end of file
+var _0xeb67=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','http','request','then','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','CreateVoiceDialReport','VoiceDialReport','create','body','options','raw','UpdateVoiceDialReport','update','where','attributes','limit','lodash'];(function(_0x1c443f,_0x51319d){var _0x4a4a71=function(_0x355b73){while(--_0x355b73){_0x1c443f['push'](_0x1c443f['shift']());}};_0x4a4a71(++_0x51319d);}(_0xeb67,0x149));var _0x7eb6=function(_0x538458,_0x309fb0){_0x538458=_0x538458-0x0;var _0x156d33=_0xeb67[_0x538458];return _0x156d33;};'use strict';var _=require(_0x7eb6('0x0'));var util=require(_0x7eb6('0x1'));var moment=require(_0x7eb6('0x2'));var BPromise=require(_0x7eb6('0x3'));var rs=require(_0x7eb6('0x4'));var fs=require('fs');var Redis=require(_0x7eb6('0x5'));var db=require(_0x7eb6('0x6'))['db'];var utils=require(_0x7eb6('0x7'));var logger=require('../../config/logger')(_0x7eb6('0x8'));var config=require(_0x7eb6('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7eb6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x26874e,_0xdfb894,_0x1fb921){return new BPromise(function(_0x4456a9,_0x61935f){return client[_0x7eb6('0xb')](_0x26874e,_0x1fb921)[_0x7eb6('0xc')](function(_0x35ce18){logger['info'](_0x7eb6('0xd'),_0xdfb894,_0x7eb6('0xe'));logger[_0x7eb6('0xf')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0xdfb894,_0x7eb6('0xe'),JSON[_0x7eb6('0x10')](_0x35ce18));if(_0x35ce18[_0x7eb6('0x11')]){if(_0x35ce18[_0x7eb6('0x11')]['code']===0x1f4){logger[_0x7eb6('0x11')](_0x7eb6('0xd'),_0xdfb894,_0x35ce18['error'][_0x7eb6('0x12')]);return _0x61935f(_0x35ce18['error']['message']);}logger['error'](_0x7eb6('0xd'),_0xdfb894,_0x35ce18[_0x7eb6('0x11')][_0x7eb6('0x12')]);return _0x4456a9(_0x35ce18[_0x7eb6('0x11')][_0x7eb6('0x12')]);}else{logger[_0x7eb6('0x13')](_0x7eb6('0xd'),_0xdfb894,'request\x20sent');_0x4456a9(_0x35ce18[_0x7eb6('0x14')][_0x7eb6('0x12')]);}})[_0x7eb6('0x15')](function(_0x4133fd){logger['error'](_0x7eb6('0xd'),_0xdfb894,_0x4133fd);_0x61935f(_0x4133fd);});});}exports[_0x7eb6('0x16')]=function(_0x16e2b5){var _0x34ddee=this;return new Promise(function(_0x591a69,_0x4b5035){return db[_0x7eb6('0x17')][_0x7eb6('0x18')](_0x16e2b5[_0x7eb6('0x19')],{'raw':_0x16e2b5['options']?_0x16e2b5[_0x7eb6('0x1a')][_0x7eb6('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x2f892e){logger[_0x7eb6('0x13')](_0x7eb6('0x16'),_0x16e2b5);logger[_0x7eb6('0xf')](_0x7eb6('0x16'),_0x16e2b5,JSON[_0x7eb6('0x10')](_0x2f892e));_0x591a69(_0x2f892e);})[_0x7eb6('0x15')](function(_0x28459c){logger[_0x7eb6('0x11')](_0x7eb6('0x16'),_0x28459c[_0x7eb6('0x12')],_0x16e2b5);_0x4b5035(_0x34ddee[_0x7eb6('0x11')](0x1f4,_0x28459c['message']));});});};exports[_0x7eb6('0x1c')]=function(_0x409424){var _0x530269=this;return new Promise(function(_0x492be3,_0xe494f7){return db[_0x7eb6('0x17')][_0x7eb6('0x1d')](_0x409424['body'],{'raw':_0x409424[_0x7eb6('0x1a')]?_0x409424[_0x7eb6('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x409424[_0x7eb6('0x1a')]?_0x409424[_0x7eb6('0x1a')][_0x7eb6('0x1e')]||null:null,'attributes':_0x409424[_0x7eb6('0x1a')]?_0x409424[_0x7eb6('0x1a')][_0x7eb6('0x1f')]||null:null,'limit':_0x409424[_0x7eb6('0x1a')]?_0x409424[_0x7eb6('0x1a')][_0x7eb6('0x20')]||null:null})[_0x7eb6('0xc')](function(_0x2553bc){logger[_0x7eb6('0x13')]('UpdateVoiceDialReport',_0x409424);logger[_0x7eb6('0xf')](_0x7eb6('0x1c'),_0x409424,JSON[_0x7eb6('0x10')](_0x2553bc));_0x492be3(_0x2553bc);})[_0x7eb6('0x15')](function(_0x1468df){logger[_0x7eb6('0x11')](_0x7eb6('0x1c'),_0x1468df[_0x7eb6('0x12')],_0x409424);_0xe494f7(_0x530269['error'](0x1f4,_0x1468df[_0x7eb6('0x12')]));});});};
\ No newline at end of file
index 968771e..0206611 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0f9=['/:id','post','create','/:id/applications','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceExtension.controller','get','isAuthenticated','index'];(function(_0x12c34e,_0x39287a){var _0x244e88=function(_0x34507b){while(--_0x34507b){_0x12c34e['push'](_0x12c34e['shift']());}};_0x244e88(++_0x39287a);}(_0xd0f9,0x9c));var _0x9d0f=function(_0x9cfe28,_0x1a335c){_0x9cfe28=_0x9cfe28-0x0;var _0x54a1d0=_0xd0f9[_0x9cfe28];return _0x54a1d0;};'use strict';var multer=require(_0x9d0f('0x0'));var util=require(_0x9d0f('0x1'));var path=require('path');var timeout=require(_0x9d0f('0x2'));var express=require(_0x9d0f('0x3'));var router=express[_0x9d0f('0x4')]();var fs_extra=require(_0x9d0f('0x5'));var auth=require(_0x9d0f('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x9d0f('0x7'));var controller=require(_0x9d0f('0x8'));router[_0x9d0f('0x9')]('/',auth[_0x9d0f('0xa')](),controller[_0x9d0f('0xb')]);router['get'](_0x9d0f('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x9d0f('0xd')]('/',auth['isAuthenticated'](),controller[_0x9d0f('0xe')]);router['post'](_0x9d0f('0xf'),auth[_0x9d0f('0xa')](),controller['addApplications']);router[_0x9d0f('0x10')]('/:id',auth[_0x9d0f('0xa')](),controller[_0x9d0f('0x11')]);router[_0x9d0f('0x12')](_0x9d0f('0xc'),auth[_0x9d0f('0xa')](),controller[_0x9d0f('0x13')]);module[_0x9d0f('0x14')]=router;
\ No newline at end of file
+var _0xcdfa=['put','update','delete','exports','multer','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','isAuthenticated','index','/:id','create','post'];(function(_0x5f58ea,_0x12238a){var _0x71f520=function(_0x7c1286){while(--_0x7c1286){_0x5f58ea['push'](_0x5f58ea['shift']());}};_0x71f520(++_0x12238a);}(_0xcdfa,0x15a));var _0xacdf=function(_0x3b77e8,_0x2f3f4e){_0x3b77e8=_0x3b77e8-0x0;var _0x539f99=_0xcdfa[_0x3b77e8];return _0x539f99;};'use strict';var multer=require(_0xacdf('0x0'));var util=require(_0xacdf('0x1'));var path=require('path');var timeout=require(_0xacdf('0x2'));var express=require(_0xacdf('0x3'));var router=express[_0xacdf('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xacdf('0x5'));var config=require(_0xacdf('0x6'));var controller=require(_0xacdf('0x7'));router[_0xacdf('0x8')]('/',auth[_0xacdf('0x9')](),controller[_0xacdf('0xa')]);router[_0xacdf('0x8')](_0xacdf('0xb'),auth[_0xacdf('0x9')](),controller['show']);router['post']('/',auth[_0xacdf('0x9')](),controller[_0xacdf('0xc')]);router[_0xacdf('0xd')]('/:id/applications',auth[_0xacdf('0x9')](),controller['addApplications']);router[_0xacdf('0xe')](_0xacdf('0xb'),auth[_0xacdf('0x9')](),controller[_0xacdf('0xf')]);router[_0xacdf('0x10')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xacdf('0x11')]=router;
\ No newline at end of file
index b9c582d..a0afa86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc000=['BOOLEAN','wav','getDataValue','exports','STRING','compositeIndex','NoOp','ENUM','inbound','outbound','internal','inbound-fax','outbound-fax','system','any','*,*,*,*','INTEGER'];(function(_0x35f30d,_0x4ff767){var _0x2dea42=function(_0x4c7734){while(--_0x4c7734){_0x35f30d['push'](_0x35f30d['shift']());}};_0x2dea42(++_0x4ff767);}(_0xc000,0xcf));var _0x0c00=function(_0x43ead6,_0x156392){_0x43ead6=_0x43ead6-0x0;var _0x1419a5=_0xc000[_0x43ead6];return _0x1419a5;};'use strict';var Sequelize=require('sequelize');module[_0x0c00('0x0')]={'context':{'type':Sequelize[_0x0c00('0x1')],'allowNull':![],'unique':_0x0c00('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x0c00('0x1')],'allowNull':![],'unique':_0x0c00('0x2')},'priority':{'type':Sequelize[_0x0c00('0x1')],'allowNull':![],'defaultValue':'1','unique':'compositeIndex'},'tag':{'type':Sequelize[_0x0c00('0x1')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x0c00('0x1')],'allowNull':![],'defaultValue':_0x0c00('0x3')},'appdata':{'type':Sequelize['STRING'](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x0c00('0x4')](_0x0c00('0x5'),_0x0c00('0x6'),_0x0c00('0x7'),_0x0c00('0x8'),_0x0c00('0x9'),_0x0c00('0xa'),_0x0c00('0xb')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x0c00('0x1')],'allowNull':![],'defaultValue':_0x0c00('0xc')},'IntervalId':{'type':Sequelize[_0x0c00('0xd')]},'isApp':{'type':Sequelize[_0x0c00('0xe')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x0c00('0x1')],'defaultValue':null},'callerID':{'type':Sequelize[_0x0c00('0x1')],'allowNull':!![]},'record':{'type':Sequelize[_0x0c00('0xe')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x0c00('0xd')]},'recordingFormat':{'type':Sequelize[_0x0c00('0x1')],'defaultValue':_0x0c00('0xf')},'answer':{'type':Sequelize[_0x0c00('0xe')],'defaultValue':!![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x2b597f){return this[_0x0c00('0x10')]('exten');}},'alias':{'type':Sequelize[_0x0c00('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0x0a5e=['VIRTUAL','getDataValue','sequelize','exports','STRING','compositeIndex','ENUM','inbound','internal','inbound-fax','outbound-fax','any','INTEGER','BOOLEAN','wav'];(function(_0x420d8d,_0x78b67f){var _0x4865d7=function(_0x2965df){while(--_0x2965df){_0x420d8d['push'](_0x420d8d['shift']());}};_0x4865d7(++_0x78b67f);}(_0x0a5e,0x1e2));var _0xe0a5=function(_0x453724,_0x20b7ef){_0x453724=_0x453724-0x0;var _0xccc5a5=_0x0a5e[_0x453724];return _0xccc5a5;};'use strict';var Sequelize=require(_0xe0a5('0x0'));module[_0xe0a5('0x1')]={'context':{'type':Sequelize[_0xe0a5('0x2')],'allowNull':![],'unique':'compositeIndex','validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xe0a5('0x2')],'allowNull':![],'unique':_0xe0a5('0x3')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':'compositeIndex'},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize[_0xe0a5('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xe0a5('0x4')](_0xe0a5('0x5'),'outbound',_0xe0a5('0x6'),_0xe0a5('0x7'),_0xe0a5('0x8'),'system',_0xe0a5('0x9')),'allowNull':![]},'description':{'type':Sequelize[_0xe0a5('0x2')]},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'*,*,*,*'},'IntervalId':{'type':Sequelize[_0xe0a5('0xa')]},'isApp':{'type':Sequelize[_0xe0a5('0xb')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xe0a5('0x2')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize[_0xe0a5('0xb')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xe0a5('0xa')]},'recordingFormat':{'type':Sequelize[_0xe0a5('0x2')],'defaultValue':_0xe0a5('0xc')},'answer':{'type':Sequelize[_0xe0a5('0xb')],'defaultValue':!![]},'name':{'type':Sequelize[_0xe0a5('0xd')],'get':function(_0x1f7fe6){return this[_0xe0a5('0xe')]('exten');}},'alias':{'type':Sequelize[_0xe0a5('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 551ca6d..6eae561 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddbb=['key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','merge','options','includeAll','include','findAll','rows','keys','catch','params','create','body','startsWith','exten','concat','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','description','recordingFormat','cutdigits','mandatoryDisposition','alias','context','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','VoiceExtensionId','createRouting','bulkCreate','findAndCountAll','priority','finally','sendStatus','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','status','end','json','undefined','count','offset','limit','set','Content-Range','then','InboundRoutes','inbound','outbound','InternalRoutes','internal','filter','ignore','map','value','includes','type','find','UserProfileResource','destroy','error','name','send','VoiceExtension','rawAttributes','fieldName'];(function(_0x156ed4,_0x249717){var _0x499d24=function(_0x44ca6){while(--_0x44ca6){_0x156ed4['push'](_0x156ed4['shift']());}};_0x499d24(++_0x249717);}(_0xddbb,0x1bb));var _0xbddb=function(_0x1c5bd0,_0x258f8e){_0x1c5bd0=_0x1c5bd0-0x0;var _0x4ac59d=_0xddbb[_0x1c5bd0];return _0x4ac59d;};'use strict';var _=require(_0xbddb('0x0'));var Redis=require(_0xbddb('0x1'));var qs=require(_0xbddb('0x2'));var logger=require(_0xbddb('0x3'))(_0xbddb('0x4'));var config=require(_0xbddb('0x5'));var db=require('../../mysqldb')['db'];config[_0xbddb('0x6')]=_[_0xbddb('0x7')](config[_0xbddb('0x6')],{'host':_0xbddb('0x8'),'port':0x18eb});var socket=require(_0xbddb('0x9'))(new Redis(config['redis']));require(_0xbddb('0xa'))[_0xbddb('0xb')](socket);function respondWithStatusCode(_0x6e3297,_0x841f2d){_0x841f2d=_0x841f2d||0xcc;return function(_0x38f02c){if(_0x38f02c){return _0x6e3297['sendStatus'](_0x841f2d);}return _0x6e3297[_0xbddb('0xc')](_0x841f2d)[_0xbddb('0xd')]();};}function respondWithResult(_0x3910a1,_0x21c479){_0x21c479=_0x21c479||0xc8;return function(_0x2eb03f){if(_0x2eb03f){return _0x3910a1[_0xbddb('0xc')](_0x21c479)[_0xbddb('0xe')](_0x2eb03f);}};}function respondWithFilteredResult(_0x17b61d,_0x394f96){return function(_0x5c112a){if(_0x5c112a){var _0xda43d5=typeof _0x394f96['offset']===_0xbddb('0xf')&&typeof _0x394f96['limit']==='undefined';var _0xfd7ab1=_0x5c112a[_0xbddb('0x10')];var _0x2d0f7f=_0xda43d5?0x0:_0x394f96[_0xbddb('0x11')];var _0x7c3491=_0xda43d5?_0x5c112a[_0xbddb('0x10')]:_0x394f96['offset']+_0x394f96[_0xbddb('0x12')];var _0x2fc13b;if(_0x7c3491>=_0xfd7ab1){_0x7c3491=_0xfd7ab1;_0x2fc13b=0xc8;}else{_0x2fc13b=0xce;}_0x17b61d[_0xbddb('0xc')](_0x2fc13b);return _0x17b61d[_0xbddb('0x13')](_0xbddb('0x14'),_0x2d0f7f+'-'+_0x7c3491+'/'+_0xfd7ab1)[_0xbddb('0xe')](_0x5c112a);}return null;};}function removeEntity(_0x466dcf){return function(_0x49665d){if(_0x49665d){return _0x49665d['destroy']()[_0xbddb('0x15')](function(){var _0x5d53a6=_0x49665d['get']({'plain':!![]});var _0x55ac0a=[{'name':_0xbddb('0x16'),'value':_0xbddb('0x17'),'ignore':![]},{'name':'OutboundRoutes','value':_0xbddb('0x18'),'ignore':![]},{'name':_0xbddb('0x19'),'value':_0xbddb('0x1a'),'ignore':![]}];var _0x3dd792=_(_0x55ac0a)[_0xbddb('0x1b')](_0xbddb('0x1c'))[_0xbddb('0x1d')](_0xbddb('0x1e'))[_0xbddb('0x1e')]();if(_[_0xbddb('0x1f')](_0x3dd792,_0x5d53a6[_0xbddb('0x20')])){return;}var _0x223597=_[_0xbddb('0x21')](_0x55ac0a,['value',_0x5d53a6[_0xbddb('0x20')]])['name'];return db[_0xbddb('0x22')][_0xbddb('0x23')]({'where':{'type':_0x223597,'resourceId':_0x5d53a6['id']}})[_0xbddb('0x15')](function(){return _0x49665d;});})[_0xbddb('0x15')](function(){_0x466dcf['status'](0xcc)[_0xbddb('0xd')]();});}};}function handleEntityNotFound(_0x52f458){return function(_0x26200a){if(!_0x26200a){_0x52f458['sendStatus'](0x194);}return _0x26200a;};}function handleError(_0x8ce7a5,_0x16972d){_0x16972d=_0x16972d||0x1f4;return function(_0x304d6f){logger[_0xbddb('0x24')](_0x304d6f['stack']);if(_0x304d6f[_0xbddb('0x25')]){delete _0x304d6f['name'];}_0x8ce7a5[_0xbddb('0xc')](_0x16972d)[_0xbddb('0x26')](_0x304d6f);};}exports['index']=function(_0x18bb68,_0x29a80c){var _0x4d2b41={},_0x28b83c={},_0x393899={'count':0x0,'rows':[]};var _0x2ff7be=_[_0xbddb('0x1d')](db[_0xbddb('0x27')][_0xbddb('0x28')],function(_0x45b3b2){return{'name':_0x45b3b2[_0xbddb('0x29')],'type':_0x45b3b2[_0xbddb('0x20')][_0xbddb('0x2a')]};});_0x28b83c[_0xbddb('0x2b')]=_['map'](_0x2ff7be,_0xbddb('0x25'));_0x28b83c['query']=_['keys'](_0x18bb68[_0xbddb('0x2c')]);_0x28b83c[_0xbddb('0x2d')]=_[_0xbddb('0x2e')](_0x28b83c['model'],_0x28b83c[_0xbddb('0x2c')]);_0x4d2b41['attributes']=_['intersection'](_0x28b83c[_0xbddb('0x2b')],qs[_0xbddb('0x2f')](_0x18bb68[_0xbddb('0x2c')][_0xbddb('0x2f')]));_0x4d2b41[_0xbddb('0x30')]=_0x4d2b41['attributes'][_0xbddb('0x31')]?_0x4d2b41['attributes']:_0x28b83c[_0xbddb('0x2b')];if(!_0x18bb68[_0xbddb('0x2c')][_0xbddb('0x32')]('nolimit')){_0x4d2b41[_0xbddb('0x12')]=qs[_0xbddb('0x12')](_0x18bb68['query'][_0xbddb('0x12')]);_0x4d2b41[_0xbddb('0x11')]=qs[_0xbddb('0x11')](_0x18bb68[_0xbddb('0x2c')]['offset']);}_0x4d2b41[_0xbddb('0x33')]=qs[_0xbddb('0x34')](_0x18bb68[_0xbddb('0x2c')][_0xbddb('0x34')]);_0x4d2b41[_0xbddb('0x35')]=qs['filters'](_[_0xbddb('0x36')](_0x18bb68[_0xbddb('0x2c')],_0x28b83c[_0xbddb('0x2d')]),_0x2ff7be);if(_0x18bb68['query'][_0xbddb('0x1b')]){_0x4d2b41['where']=_['merge'](_0x4d2b41[_0xbddb('0x35')],{'$or':_[_0xbddb('0x1d')](_0x2ff7be,function(_0x3f9134){if(_0x3f9134[_0xbddb('0x20')]!==_0xbddb('0x37')){var _0x112697={};_0x112697[_0x3f9134[_0xbddb('0x25')]]={'$like':'%'+_0x18bb68[_0xbddb('0x2c')][_0xbddb('0x1b')]+'%'};return _0x112697;}})});}_0x4d2b41=_[_0xbddb('0x38')]({},_0x4d2b41,_0x18bb68[_0xbddb('0x39')]);var _0x4ab9df={'where':_0x4d2b41[_0xbddb('0x35')]};return db[_0xbddb('0x27')][_0xbddb('0x10')](_0x4ab9df)[_0xbddb('0x15')](function(_0x4103f7){_0x393899[_0xbddb('0x10')]=_0x4103f7;if(_0x18bb68[_0xbddb('0x2c')][_0xbddb('0x3a')]){_0x4d2b41[_0xbddb('0x3b')]=[{'all':!![]}];}return db[_0xbddb('0x27')][_0xbddb('0x3c')](_0x4d2b41);})['then'](function(_0x209358){_0x393899[_0xbddb('0x3d')]=_0x209358;return _0x393899;})[_0xbddb('0x15')](respondWithFilteredResult(_0x29a80c,_0x4d2b41))['catch'](handleError(_0x29a80c,null));};exports['show']=function(_0x3172dc,_0x2d85cb){var _0x46edd2={'raw':![],'where':{'id':_0x3172dc['params']['id']}},_0x4c78e4={};_0x4c78e4['model']=_[_0xbddb('0x3e')](db['VoiceExtension'][_0xbddb('0x28')]);_0x4c78e4[_0xbddb('0x2c')]=_[_0xbddb('0x3e')](_0x3172dc[_0xbddb('0x2c')]);_0x4c78e4[_0xbddb('0x2d')]=_[_0xbddb('0x2e')](_0x4c78e4['model'],_0x4c78e4[_0xbddb('0x2c')]);_0x46edd2[_0xbddb('0x30')]=_[_0xbddb('0x2e')](_0x4c78e4[_0xbddb('0x2b')],qs[_0xbddb('0x2f')](_0x3172dc[_0xbddb('0x2c')][_0xbddb('0x2f')]));_0x46edd2[_0xbddb('0x30')]=_0x46edd2[_0xbddb('0x30')][_0xbddb('0x31')]?_0x46edd2[_0xbddb('0x30')]:_0x4c78e4[_0xbddb('0x2b')];if(_0x3172dc['query'][_0xbddb('0x3a')]){_0x46edd2['include']=[{'all':!![]}];}_0x46edd2=_[_0xbddb('0x38')]({},_0x46edd2,_0x3172dc[_0xbddb('0x39')]);return db[_0xbddb('0x27')][_0xbddb('0x21')](_0x46edd2)[_0xbddb('0x15')](handleEntityNotFound(_0x2d85cb,null))[_0xbddb('0x15')](respondWithResult(_0x2d85cb,null))[_0xbddb('0x3f')](handleError(_0x2d85cb,null));};exports['destroy']=function(_0x2fa2ea,_0x5b7239){return db['VoiceExtension'][_0xbddb('0x21')]({'where':{'id':_0x2fa2ea[_0xbddb('0x40')]['id']}})['then'](handleEntityNotFound(_0x5b7239,null))['then'](removeEntity(_0x5b7239,null))[_0xbddb('0x3f')](handleError(_0x5b7239,null));};exports[_0xbddb('0x41')]=function(_0x36781e,_0x34ea74){if(_0x36781e[_0xbddb('0x42')][_0xbddb('0x20')]===_0xbddb('0x18')&&!_[_0xbddb('0x43')](_0x36781e[_0xbddb('0x42')][_0xbddb('0x44')],'_')){_0x36781e[_0xbddb('0x42')][_0xbddb('0x44')]='_'[_0xbddb('0x45')](_0x36781e['body'][_0xbddb('0x44')]);}return db[_0xbddb('0x27')][_0xbddb('0x41')](_0x36781e[_0xbddb('0x42')],{'raw':![]})[_0xbddb('0x15')](function(_0x579cad){var _0x35cdf6=_0x36781e['user']['get']({'plain':!![]});if(!_0x35cdf6)throw new Error(_0xbddb('0x46'));if(_0x35cdf6[_0xbddb('0x47')]===_0xbddb('0x48')){var _0x1cf7fd=_0x579cad[_0xbddb('0x49')]({'plain':!![]});var _0x54eeb6=[{'name':_0xbddb('0x16'),'value':_0xbddb('0x17')},{'name':'OutboundRoutes','value':_0xbddb('0x18')},{'name':'InternalRoutes','value':'internal'}];var _0x2b4e37=_['find'](_0x54eeb6,[_0xbddb('0x1e'),_0x1cf7fd['type']])[_0xbddb('0x25')];return db[_0xbddb('0x4a')]['find']({'where':{'name':_0x2b4e37,'userProfileId':_0x35cdf6[_0xbddb('0x4b')]},'raw':!![]})[_0xbddb('0x15')](function(_0x8d90b6){if(_0x8d90b6&&_0x8d90b6[_0xbddb('0x4c')]===0x0){return db[_0xbddb('0x22')][_0xbddb('0x41')]({'name':_0x1cf7fd[_0xbddb('0x25')],'resourceId':_0x1cf7fd['id'],'type':_0x8d90b6['name'],'sectionId':_0x8d90b6['id']},{})[_0xbddb('0x15')](function(){return _0x579cad;});}else{return _0x579cad;}})[_0xbddb('0x3f')](function(_0x5bd9cf){logger[_0xbddb('0x24')](_0xbddb('0x4d'),_0x5bd9cf);throw _0x5bd9cf;});}return _0x579cad;})[_0xbddb('0x15')](respondWithResult(_0x34ea74,0xc9))[_0xbddb('0x3f')](handleError(_0x34ea74,null));};exports[_0xbddb('0x4e')]=function(_0x44d06b,_0x8a802f){if(_0x44d06b[_0xbddb('0x42')]['id']){delete _0x44d06b['body']['id'];}return db[_0xbddb('0x27')][_0xbddb('0x21')]({'where':{'id':_0x44d06b[_0xbddb('0x40')]['id']}})['then'](handleEntityNotFound(_0x8a802f,null))[_0xbddb('0x15')](function(_0x4baf4c){if(_0x4baf4c){return db[_0xbddb('0x27')][_0xbddb('0x4e')](_[_0xbddb('0x36')](_0x44d06b[_0xbddb('0x42')],[_0xbddb('0x44'),'context',_0xbddb('0x4f'),_0xbddb('0x50'),_0xbddb('0x51'),_0xbddb('0x52'),_0xbddb('0x53')]),{'where':{'context':_0x4baf4c[_0xbddb('0x54')],'exten':_0x4baf4c[_0xbddb('0x44')]},'individualHooks':!![]})['then'](function(_0x44b069){return _0x44b069;});}return null;})[_0xbddb('0x15')](respondWithStatusCode(_0x8a802f,null))[_0xbddb('0x3f')](handleError(_0x8a802f,null));};exports[_0xbddb('0x55')]=function(_0x2f3303,_0x56698b){var _0xcfd69d=_0x2f3303[_0xbddb('0x40')]['id'];var _0x403cc6=_0x2f3303[_0xbddb('0x42')];var _0x16555c=0xc8;var _0x5bb5a8=null;return db[_0xbddb('0x56')][_0xbddb('0x57')]({'isolationLevel':db[_0xbddb('0x56')][_0xbddb('0x58')][_0xbddb('0x59')]['READ_COMMITTED']},function(_0x3071c0){return db[_0xbddb('0x27')]['findOne']({'where':{'id':_0xcfd69d},'transaction':_0x3071c0})[_0xbddb('0x15')](function(_0x3137bb){if(_0x3137bb){return db['VoiceExtension'][_0xbddb('0x23')]({'where':{'VoiceExtensionId':_0xcfd69d},'transaction':_0x3071c0})[_0xbddb('0x15')](function(){var _0x45fdeb=_[_0xbddb('0x1d')](_0x403cc6,function(_0xbe9241){_0xbe9241[_0xbddb('0x5a')]=_0xcfd69d;_0xbe9241['isApp']=!![];return _0xbe9241;});return _0x3137bb[_0xbddb('0x5b')](_0x45fdeb);})[_0xbddb('0x15')](function(_0x3a7d85){return db[_0xbddb('0x27')][_0xbddb('0x5c')](_0x3a7d85,{'transaction':_0x3071c0});});}else{_0x16555c=0x194;_0x5bb5a8=[];}});})['then'](function(){if(_0x16555c!==0x194){return db['VoiceExtension'][_0xbddb('0x5d')]({'where':{'isApp':!![],'VoiceExtensionId':_0xcfd69d},'order':_0xbddb('0x5e')})['then'](function(_0x10ebcb){_0x5bb5a8=_0x10ebcb;});}})[_0xbddb('0x3f')](function(_0x45f45e){_0x16555c=0x1f4;logger[_0xbddb('0x24')](_0x45f45e['stack']);if(_0x45f45e[_0xbddb('0x25')]){delete _0x45f45e[_0xbddb('0x25')];}_0x5bb5a8=_0x45f45e;})[_0xbddb('0x5f')](function(){if(_0x5bb5a8===null){_0x56698b[_0xbddb('0x60')](_0x16555c);}else{if(_0x16555c===0x1f4){_0x56698b[_0xbddb('0xc')](_0x16555c)[_0xbddb('0x26')](_0x5bb5a8);}else{_0x56698b['status'](_0x16555c)[_0xbddb('0xe')](_0x5bb5a8);}}});};
\ No newline at end of file
+var _0xb59c=['bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','lodash','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','sendStatus','status','end','json','undefined','limit','offset','Content-Range','destroy','inbound','OutboundRoutes','filter','ignore','map','value','includes','find','type','name','UserProfileResource','then','error','stack','index','VoiceExtension','rawAttributes','key','model','keys','query','intersection','fields','attributes','length','hasOwnProperty','sort','where','filters','pick','merge','count','includeAll','findAll','rows','show','params','include','create','body','outbound','startsWith','exten','concat','get','role','InboundRoutes','InternalRoutes','internal','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','description','recordingFormat','cutdigits','mandatoryDisposition','alias','context','addApplications','findOne','transaction','VoiceExtensionId','isApp','createRouting','log','LOG\x20~\x20.then\x20~\x20routing'];(function(_0x5f3f46,_0x2ed6ae){var _0x3e94d6=function(_0x124988){while(--_0x124988){_0x5f3f46['push'](_0x5f3f46['shift']());}};_0x3e94d6(++_0x2ed6ae);}(_0xb59c,0x10b));var _0xcb59=function(_0x38e6f6,_0x131f94){_0x38e6f6=_0x38e6f6-0x0;var _0x16f471=_0xb59c[_0x38e6f6];return _0x16f471;};'use strict';var _=require(_0xcb59('0x0'));var Redis=require(_0xcb59('0x1'));var qs=require(_0xcb59('0x2'));var logger=require('../../config/logger')(_0xcb59('0x3'));var config=require(_0xcb59('0x4'));var db=require(_0xcb59('0x5'))['db'];config[_0xcb59('0x6')]=_['defaults'](config[_0xcb59('0x6')],{'host':_0xcb59('0x7'),'port':0x18eb});var socket=require(_0xcb59('0x8'))(new Redis(config['redis']));require('./voiceExtension.socket')['register'](socket);function respondWithStatusCode(_0x3597ea,_0x2289e6){_0x2289e6=_0x2289e6||0xcc;return function(_0x513186){if(_0x513186){return _0x3597ea[_0xcb59('0x9')](_0x2289e6);}return _0x3597ea[_0xcb59('0xa')](_0x2289e6)[_0xcb59('0xb')]();};}function respondWithResult(_0x42f94c,_0x1c9182){_0x1c9182=_0x1c9182||0xc8;return function(_0x559905){if(_0x559905){return _0x42f94c[_0xcb59('0xa')](_0x1c9182)[_0xcb59('0xc')](_0x559905);}};}function respondWithFilteredResult(_0x3728d8,_0x27e30a){return function(_0x5f5275){if(_0x5f5275){var _0xa8cbed=typeof _0x27e30a['offset']===_0xcb59('0xd')&&typeof _0x27e30a[_0xcb59('0xe')]===_0xcb59('0xd');var _0x50ccab=_0x5f5275['count'];var _0x42a187=_0xa8cbed?0x0:_0x27e30a[_0xcb59('0xf')];var _0x3f0998=_0xa8cbed?_0x5f5275['count']:_0x27e30a['offset']+_0x27e30a[_0xcb59('0xe')];var _0x4b0738;if(_0x3f0998>=_0x50ccab){_0x3f0998=_0x50ccab;_0x4b0738=0xc8;}else{_0x4b0738=0xce;}_0x3728d8['status'](_0x4b0738);return _0x3728d8['set'](_0xcb59('0x10'),_0x42a187+'-'+_0x3f0998+'/'+_0x50ccab)['json'](_0x5f5275);}return null;};}function removeEntity(_0x461eef){return function(_0x4270c3){if(_0x4270c3){return _0x4270c3[_0xcb59('0x11')]()['then'](function(){var _0x21b7fd=_0x4270c3['get']({'plain':!![]});var _0x29db0f=[{'name':'InboundRoutes','value':_0xcb59('0x12'),'ignore':![]},{'name':_0xcb59('0x13'),'value':'outbound','ignore':![]},{'name':'InternalRoutes','value':'internal','ignore':![]}];var _0x4469e9=_(_0x29db0f)[_0xcb59('0x14')](_0xcb59('0x15'))[_0xcb59('0x16')](_0xcb59('0x17'))[_0xcb59('0x17')]();if(_[_0xcb59('0x18')](_0x4469e9,_0x21b7fd['type'])){return;}var _0x30b77e=_[_0xcb59('0x19')](_0x29db0f,[_0xcb59('0x17'),_0x21b7fd[_0xcb59('0x1a')]])[_0xcb59('0x1b')];return db[_0xcb59('0x1c')]['destroy']({'where':{'type':_0x30b77e,'resourceId':_0x21b7fd['id']}})[_0xcb59('0x1d')](function(){return _0x4270c3;});})['then'](function(){_0x461eef['status'](0xcc)[_0xcb59('0xb')]();});}};}function handleEntityNotFound(_0x1c5335){return function(_0x15fc1d){if(!_0x15fc1d){_0x1c5335['sendStatus'](0x194);}return _0x15fc1d;};}function handleError(_0x394050,_0x279319){_0x279319=_0x279319||0x1f4;return function(_0x3e10be){logger[_0xcb59('0x1e')](_0x3e10be[_0xcb59('0x1f')]);if(_0x3e10be['name']){delete _0x3e10be[_0xcb59('0x1b')];}_0x394050[_0xcb59('0xa')](_0x279319)['send'](_0x3e10be);};}exports[_0xcb59('0x20')]=function(_0x502024,_0x508063){var _0x1fe9c2={},_0x2f12f4={},_0x1d47c2={'count':0x0,'rows':[]};var _0x12f35a=_[_0xcb59('0x16')](db[_0xcb59('0x21')][_0xcb59('0x22')],function(_0x35a28d){return{'name':_0x35a28d['fieldName'],'type':_0x35a28d[_0xcb59('0x1a')][_0xcb59('0x23')]};});_0x2f12f4[_0xcb59('0x24')]=_[_0xcb59('0x16')](_0x12f35a,'name');_0x2f12f4['query']=_[_0xcb59('0x25')](_0x502024['query']);_0x2f12f4['filters']=_['intersection'](_0x2f12f4[_0xcb59('0x24')],_0x2f12f4[_0xcb59('0x26')]);_0x1fe9c2['attributes']=_[_0xcb59('0x27')](_0x2f12f4[_0xcb59('0x24')],qs['fields'](_0x502024['query'][_0xcb59('0x28')]));_0x1fe9c2['attributes']=_0x1fe9c2[_0xcb59('0x29')][_0xcb59('0x2a')]?_0x1fe9c2[_0xcb59('0x29')]:_0x2f12f4['model'];if(!_0x502024[_0xcb59('0x26')][_0xcb59('0x2b')]('nolimit')){_0x1fe9c2[_0xcb59('0xe')]=qs[_0xcb59('0xe')](_0x502024[_0xcb59('0x26')]['limit']);_0x1fe9c2['offset']=qs[_0xcb59('0xf')](_0x502024[_0xcb59('0x26')]['offset']);}_0x1fe9c2['order']=qs[_0xcb59('0x2c')](_0x502024[_0xcb59('0x26')]['sort']);_0x1fe9c2[_0xcb59('0x2d')]=qs[_0xcb59('0x2e')](_[_0xcb59('0x2f')](_0x502024[_0xcb59('0x26')],_0x2f12f4[_0xcb59('0x2e')]),_0x12f35a);if(_0x502024[_0xcb59('0x26')][_0xcb59('0x14')]){_0x1fe9c2[_0xcb59('0x2d')]=_[_0xcb59('0x30')](_0x1fe9c2[_0xcb59('0x2d')],{'$or':_[_0xcb59('0x16')](_0x12f35a,function(_0x59ff77){if(_0x59ff77[_0xcb59('0x1a')]!=='VIRTUAL'){var _0xe10e46={};_0xe10e46[_0x59ff77[_0xcb59('0x1b')]]={'$like':'%'+_0x502024['query'][_0xcb59('0x14')]+'%'};return _0xe10e46;}})});}_0x1fe9c2=_[_0xcb59('0x30')]({},_0x1fe9c2,_0x502024['options']);var _0x368407={'where':_0x1fe9c2[_0xcb59('0x2d')]};return db[_0xcb59('0x21')][_0xcb59('0x31')](_0x368407)['then'](function(_0x4ae2ac){_0x1d47c2['count']=_0x4ae2ac;if(_0x502024[_0xcb59('0x26')][_0xcb59('0x32')]){_0x1fe9c2['include']=[{'all':!![]}];}return db[_0xcb59('0x21')][_0xcb59('0x33')](_0x1fe9c2);})[_0xcb59('0x1d')](function(_0xacb8f2){_0x1d47c2[_0xcb59('0x34')]=_0xacb8f2;return _0x1d47c2;})[_0xcb59('0x1d')](respondWithFilteredResult(_0x508063,_0x1fe9c2))['catch'](handleError(_0x508063,null));};exports[_0xcb59('0x35')]=function(_0x10cbc5,_0xe336f3){var _0x17e726={'raw':![],'where':{'id':_0x10cbc5[_0xcb59('0x36')]['id']}},_0x5764b4={};_0x5764b4[_0xcb59('0x24')]=_[_0xcb59('0x25')](db[_0xcb59('0x21')]['rawAttributes']);_0x5764b4[_0xcb59('0x26')]=_[_0xcb59('0x25')](_0x10cbc5[_0xcb59('0x26')]);_0x5764b4[_0xcb59('0x2e')]=_[_0xcb59('0x27')](_0x5764b4[_0xcb59('0x24')],_0x5764b4['query']);_0x17e726[_0xcb59('0x29')]=_[_0xcb59('0x27')](_0x5764b4[_0xcb59('0x24')],qs[_0xcb59('0x28')](_0x10cbc5[_0xcb59('0x26')]['fields']));_0x17e726['attributes']=_0x17e726['attributes']['length']?_0x17e726['attributes']:_0x5764b4[_0xcb59('0x24')];if(_0x10cbc5[_0xcb59('0x26')]['includeAll']){_0x17e726[_0xcb59('0x37')]=[{'all':!![]}];}_0x17e726=_[_0xcb59('0x30')]({},_0x17e726,_0x10cbc5['options']);return db[_0xcb59('0x21')]['find'](_0x17e726)[_0xcb59('0x1d')](handleEntityNotFound(_0xe336f3,null))['then'](respondWithResult(_0xe336f3,null))['catch'](handleError(_0xe336f3,null));};exports['destroy']=function(_0x18711a,_0x303679){return db['VoiceExtension'][_0xcb59('0x19')]({'where':{'id':_0x18711a[_0xcb59('0x36')]['id']}})[_0xcb59('0x1d')](handleEntityNotFound(_0x303679,null))['then'](removeEntity(_0x303679,null))['catch'](handleError(_0x303679,null));};exports[_0xcb59('0x38')]=function(_0x1f1e90,_0x10d351){if(_0x1f1e90[_0xcb59('0x39')][_0xcb59('0x1a')]===_0xcb59('0x3a')&&!_[_0xcb59('0x3b')](_0x1f1e90[_0xcb59('0x39')][_0xcb59('0x3c')],'_')){_0x1f1e90['body'][_0xcb59('0x3c')]='_'[_0xcb59('0x3d')](_0x1f1e90['body']['exten']);}return db[_0xcb59('0x21')][_0xcb59('0x38')](_0x1f1e90[_0xcb59('0x39')],{'raw':![]})['then'](function(_0x235349){var _0x52f30f=_0x1f1e90['user'][_0xcb59('0x3e')]({'plain':!![]});if(!_0x52f30f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x52f30f[_0xcb59('0x3f')]==='user'){var _0x53f5d5=_0x235349['get']({'plain':!![]});var _0x51097c=[{'name':_0xcb59('0x40'),'value':_0xcb59('0x12')},{'name':_0xcb59('0x13'),'value':'outbound'},{'name':_0xcb59('0x41'),'value':_0xcb59('0x42')}];var _0x1873ba=_[_0xcb59('0x19')](_0x51097c,['value',_0x53f5d5['type']])['name'];return db['UserProfileSection'][_0xcb59('0x19')]({'where':{'name':_0x1873ba,'userProfileId':_0x52f30f['userProfileId']},'raw':!![]})['then'](function(_0x31d3ef){if(_0x31d3ef&&_0x31d3ef[_0xcb59('0x43')]===0x0){return db[_0xcb59('0x1c')][_0xcb59('0x38')]({'name':_0x53f5d5[_0xcb59('0x1b')],'resourceId':_0x53f5d5['id'],'type':_0x31d3ef[_0xcb59('0x1b')],'sectionId':_0x31d3ef['id']},{})[_0xcb59('0x1d')](function(){return _0x235349;});}else{return _0x235349;}})[_0xcb59('0x44')](function(_0x25d80f){logger[_0xcb59('0x1e')](_0xcb59('0x45'),_0x25d80f);throw _0x25d80f;});}return _0x235349;})['then'](respondWithResult(_0x10d351,0xc9))[_0xcb59('0x44')](handleError(_0x10d351,null));};exports[_0xcb59('0x46')]=function(_0xa1b07a,_0x4a5cd8){if(_0xa1b07a[_0xcb59('0x39')]['id']){delete _0xa1b07a[_0xcb59('0x39')]['id'];}return db[_0xcb59('0x21')][_0xcb59('0x19')]({'where':{'id':_0xa1b07a[_0xcb59('0x36')]['id']}})[_0xcb59('0x1d')](handleEntityNotFound(_0x4a5cd8,null))[_0xcb59('0x1d')](function(_0x61605f){if(_0x61605f){return db['VoiceExtension']['update'](_[_0xcb59('0x2f')](_0xa1b07a[_0xcb59('0x39')],[_0xcb59('0x3c'),'context',_0xcb59('0x47'),_0xcb59('0x48'),_0xcb59('0x49'),_0xcb59('0x4a'),_0xcb59('0x4b')]),{'where':{'context':_0x61605f[_0xcb59('0x4c')],'exten':_0x61605f['exten']},'individualHooks':!![]})['then'](function(_0x179aea){return _0x179aea;});}return null;})[_0xcb59('0x1d')](respondWithStatusCode(_0x4a5cd8,null))['catch'](handleError(_0x4a5cd8,null));};exports[_0xcb59('0x4d')]=function(_0x5e3b2e,_0x5c1c39){return db[_0xcb59('0x21')][_0xcb59('0x4e')]({'where':{'id':_0x5e3b2e[_0xcb59('0x36')]['id']}})[_0xcb59('0x1d')](function(_0x6ebb51){if(_0x6ebb51){return db['sequelize'][_0xcb59('0x4f')](function(_0x42c7c8){return db[_0xcb59('0x21')][_0xcb59('0x11')]({'where':{'VoiceExtensionId':_0x5e3b2e[_0xcb59('0x36')]['id']},'transaction':_0x42c7c8})['then'](function(){var _0x35178d=_[_0xcb59('0x16')](_0x5e3b2e[_0xcb59('0x39')],function(_0x246111){_0x246111[_0xcb59('0x50')]=_0x5e3b2e[_0xcb59('0x36')]['id'];_0x246111[_0xcb59('0x51')]=!![];return _0x246111;});return _0x6ebb51[_0xcb59('0x52')](_0x35178d);})[_0xcb59('0x1d')](function(_0x16dd51){console[_0xcb59('0x53')](_0xcb59('0x54'),_0x16dd51);return db[_0xcb59('0x21')][_0xcb59('0x55')](_0x16dd51,{'transaction':_0x42c7c8});});})[_0xcb59('0x1d')](function(){return db[_0xcb59('0x21')][_0xcb59('0x56')]({'where':{'isApp':!![],'VoiceExtensionId':_0x5e3b2e[_0xcb59('0x36')]['id']},'order':_0xcb59('0x57')});});}})[_0xcb59('0x1d')](respondWithResult(_0x5c1c39,null))[_0xcb59('0x44')](handleError(_0x5c1c39,null));};
\ No newline at end of file
index e806837..9e1ed4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0005=['exports','events','../../mysqldb','VoiceExtension','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x12d207,_0x461077){var _0x2adbaa=function(_0x4cc418){while(--_0x4cc418){_0x12d207['push'](_0x12d207['shift']());}};_0x2adbaa(++_0x461077);}(_0x0005,0x10f));var _0x5000=function(_0x357549,_0x3f1df0){_0x357549=_0x357549-0x0;var _0x4eff56=_0x0005[_0x357549];return _0x4eff56;};'use strict';var EventEmitter=require(_0x5000('0x0'));var VoiceExtension=require(_0x5000('0x1'))['db'][_0x5000('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x5000('0x3')](0x0);var events={'afterCreate':_0x5000('0x4'),'afterUpdate':_0x5000('0x5'),'afterDestroy':_0x5000('0x6')};function emitEvent(_0x85a35f){return function(_0x4dbf5d,_0x5360d5,_0x413da1){VoiceExtensionEvents[_0x5000('0x7')](_0x85a35f+':'+_0x4dbf5d['id'],_0x4dbf5d);VoiceExtensionEvents[_0x5000('0x7')](_0x85a35f,_0x4dbf5d);_0x413da1(null);};}for(var e in events){if(events[_0x5000('0x8')](e)){var event=events[e];VoiceExtension['hook'](e,emitEvent(event));}}module[_0x5000('0x9')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0x9c95=['events','../../mysqldb','VoiceExtension','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x4ce048,_0x27a6fd){var _0x4c6524=function(_0x3319e8){while(--_0x3319e8){_0x4ce048['push'](_0x4ce048['shift']());}};_0x4c6524(++_0x27a6fd);}(_0x9c95,0xd1));var _0x59c9=function(_0x565ed7,_0x398228){_0x565ed7=_0x565ed7-0x0;var _0x183ad7=_0x9c95[_0x565ed7];return _0x183ad7;};'use strict';var EventEmitter=require(_0x59c9('0x0'));var VoiceExtension=require(_0x59c9('0x1'))['db'][_0x59c9('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x59c9('0x3')](0x0);var events={'afterCreate':_0x59c9('0x4'),'afterUpdate':_0x59c9('0x5'),'afterDestroy':_0x59c9('0x6')};function emitEvent(_0x4ded92){return function(_0x2f3519,_0x230ad7,_0x4c8ea9){VoiceExtensionEvents[_0x59c9('0x7')](_0x4ded92+':'+_0x2f3519['id'],_0x2f3519);VoiceExtensionEvents[_0x59c9('0x7')](_0x4ded92,_0x2f3519);_0x4c8ea9(null);};}for(var e in events){if(events[_0x59c9('0x8')](e)){var event=events[e];VoiceExtension[_0x59c9('0x9')](e,emitEvent(event));}}module[_0x59c9('0xa')]=VoiceExtensionEvents;
\ No newline at end of file
index e7fc7b7..f1b5116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd072=['CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','outbound','CDR(routeAlias)=','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','):Goto(','CDR(prefix)=${EXTEN:0:','MONITOR_OPTIONS=ab','hasOwnProperty','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','url','split','param','prefix','phone','SIP','indexOf','U(xcally-mixmonitor-context)','replace','join','isEmpty','findAll','interval','IntervalId','length','*,*,*,*','intervals','map','tag','toLowerCase','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','playback','app','appType','custom','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','appdata','priority','last','concat','catch','define','voice_extensions','get','then','Hangup','lodash','./voiceExtension.attributes','exports','models','type','Set','CDR(type)=','context','exten','alias','NoOp','No\x20alias\x20set','inbound','push'];(function(_0x184cc6,_0x4961ee){var _0x3f7435=function(_0x448fed){while(--_0x448fed){_0x184cc6['push'](_0x184cc6['shift']());}};_0x3f7435(++_0x4961ee);}(_0xd072,0x132));var _0x2d07=function(_0x24d5d6,_0x32b902){_0x24d5d6=_0x24d5d6-0x0;var _0x29a476=_0xd072[_0x24d5d6];return _0x29a476;};'use strict';var _=require(_0x2d07('0x0'));var attributes=require(_0x2d07('0x1'));module[_0x2d07('0x2')]=function(_0x175a41){var _0x47013f=_0x175a41[_0x2d07('0x3')];function _0x336c08(_0x4b1571){var _0x38692b=0x2;var _0x1264ae=[{'type':_0x4b1571[_0x2d07('0x4')],'app':_0x2d07('0x5'),'appdata':_0x2d07('0x6')+_0x4b1571['type'],'context':_0x4b1571[_0x2d07('0x7')],'exten':_0x4b1571[_0x2d07('0x8')],'priority':_0x38692b++,'VoiceExtensionId':_0x4b1571['id']},{'type':_0x4b1571[_0x2d07('0x4')],'app':_0x4b1571[_0x2d07('0x9')]?_0x2d07('0x5'):_0x2d07('0xa'),'appdata':_0x4b1571[_0x2d07('0x9')]?'CDR(routeAlias)='+_0x4b1571[_0x2d07('0x9')]:_0x2d07('0xb'),'context':_0x4b1571[_0x2d07('0x7')],'exten':_0x4b1571[_0x2d07('0x8')],'priority':_0x38692b++,'VoiceExtensionId':_0x4b1571['id']}];if(_0x4b1571[_0x2d07('0x4')]===_0x2d07('0xc')){_0x1264ae[_0x2d07('0xd')]({'type':_0x2d07('0xc'),'app':_0x2d07('0x5'),'appdata':_0x2d07('0xe')+_0x4b1571['id'],'context':_0x4b1571[_0x2d07('0x7')],'exten':_0x4b1571[_0x2d07('0x8')],'priority':_0x38692b++,'VoiceExtensionId':_0x4b1571['id']});}_0x1264ae[_0x2d07('0xd')]({'type':_0x4b1571[_0x2d07('0x4')],'app':_0x2d07('0x5'),'appdata':_0x2d07('0xf'),'context':_0x4b1571[_0x2d07('0x7')],'exten':_0x4b1571[_0x2d07('0x8')],'priority':_0x38692b++,'VoiceExtensionId':_0x4b1571['id']},{'type':_0x4b1571[_0x2d07('0x4')],'app':_0x2d07('0x5'),'appdata':_0x2d07('0x10'),'context':_0x4b1571[_0x2d07('0x7')],'exten':_0x4b1571[_0x2d07('0x8')],'priority':_0x38692b++,'VoiceExtensionId':_0x4b1571['id']},{'type':_0x4b1571[_0x2d07('0x4')],'app':_0x2d07('0x5'),'appdata':'MONITOR_OPTIONS=ab','context':_0x4b1571[_0x2d07('0x7')],'exten':_0x4b1571[_0x2d07('0x8')],'priority':_0x38692b++,'VoiceExtensionId':_0x4b1571['id']});return _0x1264ae;}function _0x3d47e5(_0x149043){var _0x2b8884=0x2;var _0x378dd0=[{'type':_0x2d07('0x11'),'app':_0x2d07('0x5'),'appdata':'CDR(type)=outbound','context':_0x149043[_0x2d07('0x7')],'exten':_0x149043[_0x2d07('0x8')],'priority':_0x2b8884++,'VoiceExtensionId':_0x149043['id']},{'type':_0x2d07('0x11'),'app':_0x149043[_0x2d07('0x9')]?'Set':_0x2d07('0xa'),'appdata':_0x149043[_0x2d07('0x9')]?_0x2d07('0x12')+_0x149043[_0x2d07('0x9')]:_0x2d07('0xb'),'context':_0x149043[_0x2d07('0x7')],'exten':_0x149043[_0x2d07('0x8')],'priority':_0x2b8884++,'VoiceExtensionId':_0x149043['id']},{'type':_0x2d07('0x11'),'app':'Set','appdata':_0x2d07('0x13')+(_0x149043[_0x2d07('0x14')]?_0x2d07('0x15')+_0x149043['cutdigits']+'}':_0x2d07('0x16')),'context':_0x149043['context'],'exten':_0x149043[_0x2d07('0x8')],'priority':_0x2b8884++,'VoiceExtensionId':_0x149043['id']},{'type':_0x2d07('0x11'),'app':_0x2d07('0x5'),'appdata':'CDR(routeid)='+_0x149043['id'],'context':_0x149043[_0x2d07('0x7')],'exten':_0x149043[_0x2d07('0x8')],'priority':_0x2b8884++,'VoiceExtensionId':_0x149043['id']},{'type':'outbound','app':_0x2d07('0x17'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x2b8884+0x2)+_0x2d07('0x18')+(_0x2b8884+0x1)+')','context':_0x149043[_0x2d07('0x7')],'exten':_0x149043[_0x2d07('0x8')],'priority':_0x2b8884++,'VoiceExtensionId':_0x149043['id']},{'type':_0x2d07('0x11'),'app':'Set','appdata':_0x149043[_0x2d07('0x14')]?_0x2d07('0x19')+_0x149043[_0x2d07('0x14')]+'}':'CDR(prefix)=noprefix','context':_0x149043[_0x2d07('0x7')],'exten':_0x149043['exten'],'priority':_0x2b8884++,'VoiceExtensionId':_0x149043['id']},{'type':'outbound','app':_0x2d07('0x5'),'appdata':_0x2d07('0xf'),'context':_0x149043['context'],'exten':_0x149043[_0x2d07('0x8')],'priority':_0x2b8884++,'VoiceExtensionId':_0x149043['id']},{'type':'outbound','app':'Set','appdata':_0x2d07('0x10'),'context':_0x149043[_0x2d07('0x7')],'exten':_0x149043['exten'],'priority':_0x2b8884++,'VoiceExtensionId':_0x149043['id']},{'type':_0x2d07('0x11'),'app':'Set','appdata':_0x2d07('0x1a'),'context':_0x149043[_0x2d07('0x7')],'exten':_0x149043['exten'],'priority':_0x2b8884++,'VoiceExtensionId':_0x149043['id']},{'type':_0x2d07('0x11'),'app':'Set','appdata':'outboundrouteid='+_0x149043['id'],'context':_0x149043[_0x2d07('0x7')],'exten':_0x149043['exten'],'priority':_0x2b8884++,'VoiceExtensionId':_0x149043['id']}];if(_0x149043[_0x2d07('0x1b')](_0x2d07('0x1c'))&&_0x149043[_0x2d07('0x1c')]!=='none'){_0x378dd0['push']({'type':_0x2d07('0x11'),'app':_0x2d07('0x5'),'appdata':_0x2d07('0x1d'),'context':_0x149043[_0x2d07('0x7')],'exten':_0x149043['exten'],'priority':_0x2b8884++,'VoiceExtensionId':_0x149043['id']},{'type':'outbound','app':'Set','appdata':_0x2d07('0x1e')+_0x149043['recordingFormat']||_0x2d07('0x1f'),'context':_0x149043[_0x2d07('0x7')],'exten':_0x149043[_0x2d07('0x8')],'priority':_0x2b8884++,'VoiceExtensionId':_0x149043['id']});}return _0x378dd0;}function _0xde0855(_0x1e0d78,_0x55246b){var _0x54f080=[{'name':_0x2d07('0x20'),'param':0x0},{'name':_0x2d07('0x21'),'param':0x1},{'name':_0x2d07('0x22'),'param':0x2},{'name':_0x2d07('0x23'),'param':0x3}];var _0x53c152={};var _0x1f0125=_0x55246b[_0x2d07('0x24')](',');var _0x3ea4d2=[];for(var _0x3e7e37=0x0;_0x3e7e37<_0x54f080['length'];_0x3e7e37++){switch(_0x54f080[_0x3e7e37]['name']){case _0x2d07('0x20'):_0x53c152[_0x2d07('0x20')]=_0x1f0125[_0x54f080[_0x3e7e37][_0x2d07('0x25')]]['split']('/')[0x1];_0x53c152['phone']=_0x1f0125[_0x54f080[_0x3e7e37][_0x2d07('0x25')]][_0x2d07('0x24')]('/')[0x2];_0x53c152[_0x2d07('0x26')]=_0x53c152[_0x2d07('0x27')]?_0x53c152[_0x2d07('0x27')]['split']('$')[0x0]:undefined;_0x53c152[_0x2d07('0x27')]=_0x1e0d78[_0x2d07('0x14')]?(_0x53c152['prefix']||'')+_0x2d07('0x15')+_0x1e0d78['cutdigits']+'}':(_0x53c152[_0x2d07('0x26')]||'')+_0x2d07('0x16');_0x3ea4d2[_0x54f080[_0x3e7e37][_0x2d07('0x25')]]=[_0x2d07('0x28'),_0x53c152[_0x2d07('0x20')],_0x53c152[_0x2d07('0x27')]]['join']('/');break;case _0x2d07('0x22'):_0x53c152[_0x2d07('0x22')]=_0x1f0125[_0x54f080[_0x3e7e37][_0x2d07('0x25')]];if(_0x1e0d78[_0x2d07('0x1c')]!=='none'){if(_0x53c152[_0x2d07('0x22')][_0x2d07('0x29')](_0x2d07('0x2a'))<0x0){_0x53c152[_0x2d07('0x22')]+=_0x2d07('0x2a');}}else{_0x53c152['options']=_0x53c152[_0x2d07('0x22')][_0x2d07('0x2b')](_0x2d07('0x2a'),'');}_0x3ea4d2[_0x54f080[_0x3e7e37][_0x2d07('0x25')]]=_0x53c152[_0x2d07('0x22')];break;default:_0x3ea4d2[_0x54f080[_0x3e7e37][_0x2d07('0x25')]]=_0x1f0125[_0x54f080[_0x3e7e37][_0x2d07('0x25')]];}}return _0x3ea4d2[_0x2d07('0x2c')](',');}function _0x4450b1(_0x1fe5c5,_0x1cfad1,_0x8d1cf3){return new Promise(function(_0x104bf7,_0x5b3ff9){var _0x1c2bbe=[];if(_[_0x2d07('0x2d')](_0x1cfad1))return _0x104bf7(_0x1c2bbe);_0x47013f['Interval'][_0x2d07('0x2e')]({'attributes':['id',_0x2d07('0x2f'),_0x2d07('0x30')],'raw':!![]})['then'](function(_0x593f55){for(var _0x3fb560=0x0,_0x42e500=0x0;_0x3fb560<_0x1cfad1[_0x2d07('0x31')];_0x3fb560++,_0x42e500=0x0){var _0x5be095=_0x1cfad1[_0x3fb560];var _0x165d0d=[];var _0x3820fb=[];delete _0x5be095['id'];if(_0x5be095['interval']!==_0x2d07('0x32')){_0x5be095[_0x2d07('0x33')]=[_0x5be095[_0x2d07('0x2f')]];}else{_0x5be095[_0x2d07('0x33')]=_0x5be095[_0x2d07('0x30')]?_[_0x2d07('0x34')](_['filter'](_0x593f55,{'IntervalId':_0x5be095[_0x2d07('0x30')]}),_0x2d07('0x2f')):[];}_0x5be095['context']=_0x1fe5c5[_0x2d07('0x7')];_0x5be095['exten']=_0x1fe5c5['exten'];if(_0x5be095[_0x2d07('0x4')])_0x5be095[_0x2d07('0x4')]=_0x5be095['type']['toLowerCase']();if(_0x1fe5c5[_0x2d07('0x4')]==='outbound'){if(_0x5be095[_0x2d07('0x1b')]('tag')&&_0x5be095[_0x2d07('0x35')]&&_0x5be095[_0x2d07('0x35')]!=='--'){_0x165d0d[_0x2d07('0xd')]({'type':_0x5be095[_0x2d07('0x4')][_0x2d07('0x36')](),'app':_0x2d07('0x5'),'appdata':_0x2d07('0x37')+_0x5be095[_0x2d07('0x35')],'context':_0x1fe5c5[_0x2d07('0x7')],'exten':_0x1fe5c5[_0x2d07('0x8')],'priority':_0x5be095[_0x2d07('0x33')][_0x2d07('0x31')]+_0x8d1cf3+_0x42e500++,'VoiceExtensionId':_0x1fe5c5['id']});}_0x165d0d[_0x2d07('0xd')]({'type':_0x5be095[_0x2d07('0x4')][_0x2d07('0x36')](),'app':_0x2d07('0x17'),'appdata':_0x2d07('0x38')+(_0x5be095[_0x2d07('0x39')]?_0x2d07('0x3a')+_0x5be095[_0x2d07('0x39')]+')':_0x2d07('0x3b')),'context':_0x1fe5c5[_0x2d07('0x7')],'exten':_0x1fe5c5[_0x2d07('0x8')],'priority':_0x5be095[_0x2d07('0x33')][_0x2d07('0x31')]+_0x8d1cf3+_0x42e500++,'VoiceExtensionId':_0x1fe5c5['id']});}else{if(_0x5be095['hasOwnProperty'](_0x2d07('0x3c'))){if(['queue',_0x2d07('0x3d')]['includes'](_0x5be095[_0x2d07('0x3e')][_0x2d07('0x36')]())&&_0x5be095[_0x2d07('0x3f')]!==_0x2d07('0x40')){if(_0x5be095[_0x2d07('0x3c')]){_0x165d0d[_0x2d07('0xd')]({'type':_0x5be095[_0x2d07('0x4')][_0x2d07('0x36')](),'app':'ExecIf','appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x1fe5c5['context'],'exten':_0x1fe5c5[_0x2d07('0x8')],'priority':_0x5be095[_0x2d07('0x33')][_0x2d07('0x31')]+_0x8d1cf3+_0x42e500++,'VoiceExtensionId':_0x1fe5c5['id']});_0x165d0d[_0x2d07('0xd')]({'type':_0x5be095[_0x2d07('0x4')][_0x2d07('0x36')](),'app':'Set','appdata':'XCALLY-MOTION-ANSWER=1','context':_0x1fe5c5['context'],'exten':_0x1fe5c5[_0x2d07('0x8')],'priority':_0x5be095[_0x2d07('0x33')][_0x2d07('0x31')]+_0x8d1cf3+_0x42e500++,'VoiceExtensionId':_0x1fe5c5['id']});}else{_0x165d0d[_0x2d07('0xd')]({'type':_0x5be095[_0x2d07('0x4')][_0x2d07('0x36')](),'app':_0x2d07('0x17'),'appdata':_0x2d07('0x41'),'context':_0x1fe5c5[_0x2d07('0x7')],'exten':_0x1fe5c5[_0x2d07('0x8')],'priority':_0x5be095[_0x2d07('0x33')][_0x2d07('0x31')]+_0x8d1cf3+_0x42e500++,'VoiceExtensionId':_0x1fe5c5['id']});_0x165d0d[_0x2d07('0xd')]({'type':_0x5be095[_0x2d07('0x4')][_0x2d07('0x36')](),'app':_0x2d07('0x5'),'appdata':_0x2d07('0x42'),'context':_0x1fe5c5[_0x2d07('0x7')],'exten':_0x1fe5c5[_0x2d07('0x8')],'priority':_0x5be095[_0x2d07('0x33')][_0x2d07('0x31')]+_0x8d1cf3+_0x42e500++,'VoiceExtensionId':_0x1fe5c5['id']});}}}}for(var _0x237ca5=0x0;_0x237ca5<_0x5be095[_0x2d07('0x33')][_0x2d07('0x31')];_0x237ca5++){var _0x4007d8=_0x8d1cf3+_0x5be095[_0x2d07('0x33')]['length'];var _0x5e61cc=_0x237ca5===_0x5be095[_0x2d07('0x33')][_0x2d07('0x31')]-0x1?_0x8d1cf3+_0x165d0d['length']+_0x3820fb[_0x2d07('0x31')]+0x2:_0x8d1cf3+_0x237ca5+0x1;_0x165d0d[_0x2d07('0x43')](_0x237ca5,0x0,{'type':_0x1fe5c5[_0x2d07('0x4')],'app':_0x2d07('0x44'),'appdata':_0x5be095[_0x2d07('0x33')][_0x237ca5]+'?'+_0x1fe5c5['context']+_0x2d07('0x45')+_0x4007d8+':'+_0x1fe5c5[_0x2d07('0x7')]+_0x2d07('0x45')+_0x5e61cc,'exten':_0x1fe5c5['exten'],'context':_0x1fe5c5[_0x2d07('0x7')],'priority':_0x8d1cf3+_0x237ca5,'VoiceExtensionId':_0x1fe5c5['id']});}if(_0x5be095[_0x2d07('0x3f')]==='outboundDial')_0x5be095[_0x2d07('0x46')]=_0xde0855(_0x1fe5c5,_0x5be095[_0x2d07('0x46')]);_0x5be095[_0x2d07('0x47')]=_0x165d0d[_0x2d07('0x31')]?_[_0x2d07('0x48')](_0x165d0d)[_0x2d07('0x47')]+0x1:_0x8d1cf3;_0x1c2bbe=_[_0x2d07('0x49')](_0x1c2bbe,_0x165d0d,[_0x5be095],_0x3820fb);_0x8d1cf3=_['last'](_0x1c2bbe)[_0x2d07('0x47')]+0x1;}return _0x104bf7(_0x1c2bbe);})[_0x2d07('0x4a')](function(_0x3d8742){_0x5b3ff9(_0x3d8742);});});}return _0x175a41[_0x2d07('0x4b')]('VoiceExtension',attributes,{'tableName':_0x2d07('0x4c'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x3d5338){var _0x466c69=this[_0x2d07('0x4d')]({'plain':!![]});var _0x80db68=_0x466c69[_0x2d07('0x4')]===_0x2d07('0x11')?_0x3d47e5(_0x466c69):_0x336c08(_0x466c69);return _0x4450b1(_0x466c69,_0x3d5338,_[_0x2d07('0x48')](_0x80db68)[_0x2d07('0x47')]+0x1)[_0x2d07('0x4e')](function(_0x146a99){var _0x42f87a=_[_0x2d07('0x49')](_0x80db68,_0x146a99);_0x42f87a[_0x2d07('0xd')]({'type':_0x466c69[_0x2d07('0x4')],'app':_0x2d07('0x4f'),'exten':_0x466c69[_0x2d07('0x8')],'context':_0x466c69['context'],'priority':_['last'](_0x42f87a)[_0x2d07('0x47')]+0x1,'VoiceExtensionId':_0x466c69['id']});return _0x42f87a;});}}});};
\ No newline at end of file
+var _0x4986=['isEmpty','interval','IntervalId','then','*,*,*,*','intervals','map','filter','tag','toLowerCase','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','Set(CALLERID(all)=','callerID','NoOp(No\x20number\x20available)','answer','playback','includes','app','appType','XCALLY-MOTION-ANSWER=1','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','appdata','priority','last','concat','catch','define','VoiceExtension','voice_extensions','get','Hangup','lodash','./voiceExtension.attributes','exports','models','type','Set','CDR(type)=','context','alias','NoOp','CDR(routeAlias)=','No\x20alias\x20set','exten','push','CDR(routeid)=','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','CDR(destination)=','cutdigits','${EXTEN:','ExecIf','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','hasOwnProperty','recordingFormat','trunk','options','split','length','name','param','prefix','phone','SIP','join','none','indexOf','replace','U(xcally-mixmonitor-context)'];(function(_0x725b8e,_0xc22b48){var _0x43ac45=function(_0x46bb4a){while(--_0x46bb4a){_0x725b8e['push'](_0x725b8e['shift']());}};_0x43ac45(++_0xc22b48);}(_0x4986,0x6e));var _0x6498=function(_0x1e437f,_0x28e899){_0x1e437f=_0x1e437f-0x0;var _0x282424=_0x4986[_0x1e437f];return _0x282424;};'use strict';var _=require(_0x6498('0x0'));var attributes=require(_0x6498('0x1'));module[_0x6498('0x2')]=function(_0x5c0f72){var _0x5ab420=_0x5c0f72[_0x6498('0x3')];function _0x40bbc9(_0x5d24c6){var _0x15e8d3=0x2;var _0x12a6fb=[{'type':_0x5d24c6[_0x6498('0x4')],'app':_0x6498('0x5'),'appdata':_0x6498('0x6')+_0x5d24c6[_0x6498('0x4')],'context':_0x5d24c6[_0x6498('0x7')],'exten':_0x5d24c6['exten'],'priority':_0x15e8d3++,'VoiceExtensionId':_0x5d24c6['id']},{'type':_0x5d24c6['type'],'app':_0x5d24c6[_0x6498('0x8')]?_0x6498('0x5'):_0x6498('0x9'),'appdata':_0x5d24c6[_0x6498('0x8')]?_0x6498('0xa')+_0x5d24c6['alias']:_0x6498('0xb'),'context':_0x5d24c6[_0x6498('0x7')],'exten':_0x5d24c6[_0x6498('0xc')],'priority':_0x15e8d3++,'VoiceExtensionId':_0x5d24c6['id']}];if(_0x5d24c6['type']==='inbound'){_0x12a6fb[_0x6498('0xd')]({'type':'inbound','app':_0x6498('0x5'),'appdata':_0x6498('0xe')+_0x5d24c6['id'],'context':_0x5d24c6[_0x6498('0x7')],'exten':_0x5d24c6[_0x6498('0xc')],'priority':_0x15e8d3++,'VoiceExtensionId':_0x5d24c6['id']});}_0x12a6fb[_0x6498('0xd')]({'type':_0x5d24c6[_0x6498('0x4')],'app':_0x6498('0x5'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x5d24c6['context'],'exten':_0x5d24c6[_0x6498('0xc')],'priority':_0x15e8d3++,'VoiceExtensionId':_0x5d24c6['id']},{'type':_0x5d24c6[_0x6498('0x4')],'app':_0x6498('0x5'),'appdata':_0x6498('0xf'),'context':_0x5d24c6[_0x6498('0x7')],'exten':_0x5d24c6['exten'],'priority':_0x15e8d3++,'VoiceExtensionId':_0x5d24c6['id']},{'type':_0x5d24c6[_0x6498('0x4')],'app':_0x6498('0x5'),'appdata':_0x6498('0x10'),'context':_0x5d24c6[_0x6498('0x7')],'exten':_0x5d24c6[_0x6498('0xc')],'priority':_0x15e8d3++,'VoiceExtensionId':_0x5d24c6['id']});return _0x12a6fb;}function _0x1b4083(_0x3fa89d){var _0x500d3f=0x2;var _0x43ae3b=[{'type':_0x6498('0x11'),'app':_0x6498('0x5'),'appdata':_0x6498('0x12'),'context':_0x3fa89d[_0x6498('0x7')],'exten':_0x3fa89d['exten'],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':'outbound','app':_0x3fa89d[_0x6498('0x8')]?_0x6498('0x5'):_0x6498('0x9'),'appdata':_0x3fa89d[_0x6498('0x8')]?_0x6498('0xa')+_0x3fa89d[_0x6498('0x8')]:_0x6498('0xb'),'context':_0x3fa89d[_0x6498('0x7')],'exten':_0x3fa89d[_0x6498('0xc')],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':_0x6498('0x11'),'app':_0x6498('0x5'),'appdata':_0x6498('0x13')+(_0x3fa89d[_0x6498('0x14')]?_0x6498('0x15')+_0x3fa89d['cutdigits']+'}':'${EXTEN}'),'context':_0x3fa89d[_0x6498('0x7')],'exten':_0x3fa89d['exten'],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':_0x6498('0x11'),'app':_0x6498('0x5'),'appdata':_0x6498('0xe')+_0x3fa89d['id'],'context':_0x3fa89d[_0x6498('0x7')],'exten':_0x3fa89d['exten'],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':'outbound','app':_0x6498('0x16'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x500d3f+0x2)+_0x6498('0x17')+(_0x500d3f+0x1)+')','context':_0x3fa89d[_0x6498('0x7')],'exten':_0x3fa89d[_0x6498('0xc')],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':_0x6498('0x11'),'app':_0x6498('0x5'),'appdata':_0x3fa89d[_0x6498('0x14')]?_0x6498('0x18')+_0x3fa89d[_0x6498('0x14')]+'}':_0x6498('0x19'),'context':_0x3fa89d[_0x6498('0x7')],'exten':_0x3fa89d[_0x6498('0xc')],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':_0x6498('0x11'),'app':_0x6498('0x5'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x3fa89d[_0x6498('0x7')],'exten':_0x3fa89d[_0x6498('0xc')],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':'outbound','app':'Set','appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x3fa89d['context'],'exten':_0x3fa89d[_0x6498('0xc')],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':_0x6498('0x11'),'app':_0x6498('0x5'),'appdata':_0x6498('0x10'),'context':_0x3fa89d['context'],'exten':_0x3fa89d[_0x6498('0xc')],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':'outbound','app':'Set','appdata':'outboundrouteid='+_0x3fa89d['id'],'context':_0x3fa89d['context'],'exten':_0x3fa89d[_0x6498('0xc')],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']}];if(_0x3fa89d[_0x6498('0x1a')]('recordingFormat')&&_0x3fa89d[_0x6498('0x1b')]!=='none'){_0x43ae3b[_0x6498('0xd')]({'type':_0x6498('0x11'),'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x3fa89d[_0x6498('0x7')],'exten':_0x3fa89d['exten'],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':_0x6498('0x11'),'app':_0x6498('0x5'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x3fa89d[_0x6498('0x1b')]||'wav','context':_0x3fa89d[_0x6498('0x7')],'exten':_0x3fa89d[_0x6498('0xc')],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']});}return _0x43ae3b;}function _0x56739d(_0x2bbb2c,_0x1fed77){var _0xfd79c3=[{'name':_0x6498('0x1c'),'param':0x0},{'name':'timeout','param':0x1},{'name':_0x6498('0x1d'),'param':0x2},{'name':'url','param':0x3}];var _0x2548b8={};var _0x5b5089=_0x1fed77[_0x6498('0x1e')](',');var _0x50179d=[];for(var _0x2411ee=0x0;_0x2411ee<_0xfd79c3[_0x6498('0x1f')];_0x2411ee++){switch(_0xfd79c3[_0x2411ee][_0x6498('0x20')]){case _0x6498('0x1c'):_0x2548b8[_0x6498('0x1c')]=_0x5b5089[_0xfd79c3[_0x2411ee][_0x6498('0x21')]][_0x6498('0x1e')]('/')[0x1];_0x2548b8['phone']=_0x5b5089[_0xfd79c3[_0x2411ee][_0x6498('0x21')]][_0x6498('0x1e')]('/')[0x2];_0x2548b8[_0x6498('0x22')]=_0x2548b8[_0x6498('0x23')]?_0x2548b8[_0x6498('0x23')][_0x6498('0x1e')]('$')[0x0]:undefined;_0x2548b8[_0x6498('0x23')]=_0x2bbb2c[_0x6498('0x14')]?(_0x2548b8['prefix']||'')+_0x6498('0x15')+_0x2bbb2c[_0x6498('0x14')]+'}':(_0x2548b8[_0x6498('0x22')]||'')+'${EXTEN}';_0x50179d[_0xfd79c3[_0x2411ee][_0x6498('0x21')]]=[_0x6498('0x24'),_0x2548b8[_0x6498('0x1c')],_0x2548b8[_0x6498('0x23')]][_0x6498('0x25')]('/');break;case _0x6498('0x1d'):_0x2548b8[_0x6498('0x1d')]=_0x5b5089[_0xfd79c3[_0x2411ee][_0x6498('0x21')]];if(_0x2bbb2c[_0x6498('0x1b')]!==_0x6498('0x26')){if(_0x2548b8[_0x6498('0x1d')][_0x6498('0x27')]('U(xcally-mixmonitor-context)')<0x0){_0x2548b8['options']+='U(xcally-mixmonitor-context)';}}else{_0x2548b8[_0x6498('0x1d')]=_0x2548b8[_0x6498('0x1d')][_0x6498('0x28')](_0x6498('0x29'),'');}_0x50179d[_0xfd79c3[_0x2411ee][_0x6498('0x21')]]=_0x2548b8[_0x6498('0x1d')];break;default:_0x50179d[_0xfd79c3[_0x2411ee][_0x6498('0x21')]]=_0x5b5089[_0xfd79c3[_0x2411ee]['param']];}}return _0x50179d[_0x6498('0x25')](',');}function _0x15b5ee(_0x28cfb7,_0x6fca6d,_0x2cb807){return new Promise(function(_0x3bc9ca,_0x484cba){var _0x427e95=[];if(_[_0x6498('0x2a')](_0x6fca6d))return _0x3bc9ca(_0x427e95);_0x5ab420['Interval']['findAll']({'attributes':['id',_0x6498('0x2b'),_0x6498('0x2c')],'raw':!![]})[_0x6498('0x2d')](function(_0x4d2f1f){for(var _0x4fb005=0x0,_0xc578de=0x0;_0x4fb005<_0x6fca6d['length'];_0x4fb005++,_0xc578de=0x0){var _0x419b04=_0x6fca6d[_0x4fb005];var _0x468e1f=[];var _0x34e5b2=[];delete _0x419b04['id'];if(_0x419b04[_0x6498('0x2b')]!==_0x6498('0x2e')){_0x419b04[_0x6498('0x2f')]=[_0x419b04['interval']];}else{_0x419b04[_0x6498('0x2f')]=_0x419b04[_0x6498('0x2c')]?_[_0x6498('0x30')](_[_0x6498('0x31')](_0x4d2f1f,{'IntervalId':_0x419b04['IntervalId']}),_0x6498('0x2b')):[];}_0x419b04[_0x6498('0x7')]=_0x28cfb7[_0x6498('0x7')];_0x419b04[_0x6498('0xc')]=_0x28cfb7[_0x6498('0xc')];if(_0x419b04[_0x6498('0x4')])_0x419b04[_0x6498('0x4')]=_0x419b04[_0x6498('0x4')]['toLowerCase']();if(_0x28cfb7[_0x6498('0x4')]===_0x6498('0x11')){if(_0x419b04[_0x6498('0x1a')](_0x6498('0x32'))&&_0x419b04[_0x6498('0x32')]&&_0x419b04[_0x6498('0x32')]!=='--'){_0x468e1f[_0x6498('0xd')]({'type':_0x419b04[_0x6498('0x4')][_0x6498('0x33')](),'app':_0x6498('0x5'),'appdata':_0x6498('0x34')+_0x419b04[_0x6498('0x32')],'context':_0x28cfb7[_0x6498('0x7')],'exten':_0x28cfb7[_0x6498('0xc')],'priority':_0x419b04[_0x6498('0x2f')][_0x6498('0x1f')]+_0x2cb807+_0xc578de++,'VoiceExtensionId':_0x28cfb7['id']});}_0x468e1f[_0x6498('0xd')]({'type':_0x419b04[_0x6498('0x4')][_0x6498('0x33')](),'app':_0x6498('0x16'),'appdata':_0x6498('0x35')+(_0x419b04['callerID']?_0x6498('0x36')+_0x419b04[_0x6498('0x37')]+')':_0x6498('0x38')),'context':_0x28cfb7[_0x6498('0x7')],'exten':_0x28cfb7[_0x6498('0xc')],'priority':_0x419b04[_0x6498('0x2f')]['length']+_0x2cb807+_0xc578de++,'VoiceExtensionId':_0x28cfb7['id']});}else{if(_0x419b04['hasOwnProperty'](_0x6498('0x39'))){if(['queue',_0x6498('0x3a')][_0x6498('0x3b')](_0x419b04[_0x6498('0x3c')][_0x6498('0x33')]())&&_0x419b04[_0x6498('0x3d')]!=='custom'){if(_0x419b04[_0x6498('0x39')]){_0x468e1f[_0x6498('0xd')]({'type':_0x419b04[_0x6498('0x4')][_0x6498('0x33')](),'app':'ExecIf','appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x28cfb7[_0x6498('0x7')],'exten':_0x28cfb7['exten'],'priority':_0x419b04[_0x6498('0x2f')][_0x6498('0x1f')]+_0x2cb807+_0xc578de++,'VoiceExtensionId':_0x28cfb7['id']});_0x468e1f[_0x6498('0xd')]({'type':_0x419b04[_0x6498('0x4')][_0x6498('0x33')](),'app':_0x6498('0x5'),'appdata':_0x6498('0x3e'),'context':_0x28cfb7[_0x6498('0x7')],'exten':_0x28cfb7['exten'],'priority':_0x419b04[_0x6498('0x2f')][_0x6498('0x1f')]+_0x2cb807+_0xc578de++,'VoiceExtensionId':_0x28cfb7['id']});}else{_0x468e1f[_0x6498('0xd')]({'type':_0x419b04[_0x6498('0x4')]['toLowerCase'](),'app':_0x6498('0x16'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x28cfb7[_0x6498('0x7')],'exten':_0x28cfb7['exten'],'priority':_0x419b04[_0x6498('0x2f')][_0x6498('0x1f')]+_0x2cb807+_0xc578de++,'VoiceExtensionId':_0x28cfb7['id']});_0x468e1f['push']({'type':_0x419b04['type']['toLowerCase'](),'app':_0x6498('0x5'),'appdata':_0x6498('0x3f'),'context':_0x28cfb7['context'],'exten':_0x28cfb7[_0x6498('0xc')],'priority':_0x419b04[_0x6498('0x2f')]['length']+_0x2cb807+_0xc578de++,'VoiceExtensionId':_0x28cfb7['id']});}}}}for(var _0x5eccb8=0x0;_0x5eccb8<_0x419b04[_0x6498('0x2f')][_0x6498('0x1f')];_0x5eccb8++){var _0x13503=_0x2cb807+_0x419b04[_0x6498('0x2f')][_0x6498('0x1f')];var _0x33c930=_0x5eccb8===_0x419b04[_0x6498('0x2f')][_0x6498('0x1f')]-0x1?_0x2cb807+_0x468e1f[_0x6498('0x1f')]+_0x34e5b2['length']+0x2:_0x2cb807+_0x5eccb8+0x1;_0x468e1f['splice'](_0x5eccb8,0x0,{'type':_0x28cfb7[_0x6498('0x4')],'app':_0x6498('0x40'),'appdata':_0x419b04['intervals'][_0x5eccb8]+'?'+_0x28cfb7[_0x6498('0x7')]+_0x6498('0x41')+_0x13503+':'+_0x28cfb7[_0x6498('0x7')]+_0x6498('0x41')+_0x33c930,'exten':_0x28cfb7[_0x6498('0xc')],'context':_0x28cfb7[_0x6498('0x7')],'priority':_0x2cb807+_0x5eccb8,'VoiceExtensionId':_0x28cfb7['id']});}if(_0x419b04['appType']==='outboundDial')_0x419b04['appdata']=_0x56739d(_0x28cfb7,_0x419b04[_0x6498('0x42')]);_0x419b04[_0x6498('0x43')]=_0x468e1f['length']?_[_0x6498('0x44')](_0x468e1f)[_0x6498('0x43')]+0x1:_0x2cb807;_0x427e95=_[_0x6498('0x45')](_0x427e95,_0x468e1f,[_0x419b04],_0x34e5b2);_0x2cb807=_[_0x6498('0x44')](_0x427e95)[_0x6498('0x43')]+0x1;}return _0x3bc9ca(_0x427e95);})[_0x6498('0x46')](function(_0x11f3f7){_0x484cba(_0x11f3f7);});});}return _0x5c0f72[_0x6498('0x47')](_0x6498('0x48'),attributes,{'tableName':_0x6498('0x49'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x4c2abb){var _0x4496f0=this[_0x6498('0x4a')]({'plain':!![]});var _0x525208=_0x4496f0['type']==='outbound'?_0x1b4083(_0x4496f0):_0x40bbc9(_0x4496f0);return _0x15b5ee(_0x4496f0,_0x4c2abb,_['last'](_0x525208)[_0x6498('0x43')]+0x1)[_0x6498('0x2d')](function(_0x43296a){var _0x45dcda=_['concat'](_0x525208,_0x43296a);_0x45dcda[_0x6498('0xd')]({'type':_0x4496f0['type'],'app':_0x6498('0x4b'),'exten':_0x4496f0[_0x6498('0xc')],'context':_0x4496f0[_0x6498('0x7')],'priority':_[_0x6498('0x44')](_0x45dcda)[_0x6498('0x43')]+0x1,'VoiceExtensionId':_0x4496f0['id']});return _0x45dcda;});}}});};
\ No newline at end of file
index 02640d6..070708d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5496=['socket.io-emitter','./voiceExtension.socket','register','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','GetVoiceExtension','findAll','options','raw','where','attributes','limit','include','map','model','debug','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','http','redis','localhost'];(function(_0x508926,_0xa05b4f){var _0x49ab00=function(_0x360b74){while(--_0x360b74){_0x508926['push'](_0x508926['shift']());}};_0x49ab00(++_0xa05b4f);}(_0x5496,0x175));var _0x6549=function(_0x5c8608,_0x4d2496){_0x5c8608=_0x5c8608-0x0;var _0x5a051b=_0x5496[_0x5c8608];return _0x5a051b;};'use strict';var _=require(_0x6549('0x0'));var util=require(_0x6549('0x1'));var moment=require(_0x6549('0x2'));var BPromise=require(_0x6549('0x3'));var rs=require(_0x6549('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6549('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6549('0x6'))(_0x6549('0x7'));var config=require(_0x6549('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x6549('0x9')]({'port':0x232a});config[_0x6549('0xa')]=_['defaults'](config[_0x6549('0xa')],{'host':_0x6549('0xb'),'port':0x18eb});var socket=require(_0x6549('0xc'))(new Redis(config['redis']));require(_0x6549('0xd'))[_0x6549('0xe')](socket);function respondWithRpcPromise(_0x2ecce2,_0x135c2c,_0x1e5083){return new BPromise(function(_0x3e08a6,_0x50fa35){return client['request'](_0x2ecce2,_0x1e5083)[_0x6549('0xf')](function(_0xac828c){logger[_0x6549('0x10')](_0x6549('0x11'),_0x135c2c,_0x6549('0x12'));logger['debug']('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x135c2c,_0x6549('0x12'),JSON[_0x6549('0x13')](_0xac828c));if(_0xac828c['error']){if(_0xac828c[_0x6549('0x14')][_0x6549('0x15')]===0x1f4){logger[_0x6549('0x14')](_0x6549('0x11'),_0x135c2c,_0xac828c[_0x6549('0x14')][_0x6549('0x16')]);return _0x50fa35(_0xac828c['error']['message']);}logger[_0x6549('0x14')](_0x6549('0x11'),_0x135c2c,_0xac828c['error'][_0x6549('0x16')]);return _0x3e08a6(_0xac828c[_0x6549('0x14')][_0x6549('0x16')]);}else{logger[_0x6549('0x10')](_0x6549('0x11'),_0x135c2c,'request\x20sent');_0x3e08a6(_0xac828c['result'][_0x6549('0x16')]);}})['catch'](function(_0x56c15b){logger[_0x6549('0x14')](_0x6549('0x11'),_0x135c2c,_0x56c15b);_0x50fa35(_0x56c15b);});});}exports[_0x6549('0x17')]=function(_0xfca192){var _0x236fd9=this;return new Promise(function(_0x5ce3aa,_0x228117){return db['VoiceExtension'][_0x6549('0x18')]({'raw':_0xfca192[_0x6549('0x19')]?_0xfca192[_0x6549('0x19')][_0x6549('0x1a')]===undefined?!![]:![]:!![],'where':_0xfca192[_0x6549('0x19')]?_0xfca192[_0x6549('0x19')][_0x6549('0x1b')]||null:null,'attributes':_0xfca192[_0x6549('0x19')]?_0xfca192[_0x6549('0x19')][_0x6549('0x1c')]||null:null,'limit':_0xfca192[_0x6549('0x19')]?_0xfca192[_0x6549('0x19')][_0x6549('0x1d')]||null:null,'include':_0xfca192['options']?_0xfca192[_0x6549('0x19')][_0x6549('0x1e')]?_['map'](_0xfca192[_0x6549('0x19')][_0x6549('0x1e')],function(_0x3768cb){return{'model':db[_0x3768cb['model']],'as':_0x3768cb['as'],'attributes':_0x3768cb[_0x6549('0x1c')],'include':_0x3768cb[_0x6549('0x1e')]?_[_0x6549('0x1f')](_0x3768cb[_0x6549('0x1e')],function(_0x442862){return{'model':db[_0x442862[_0x6549('0x20')]],'as':_0x442862['as'],'attributes':_0x442862[_0x6549('0x1c')],'include':_0x442862[_0x6549('0x1e')]?_['map'](_0x442862[_0x6549('0x1e')],function(_0x136518){return{'model':db[_0x136518[_0x6549('0x20')]],'as':_0x136518['as'],'attributes':_0x136518['attributes']};}):[]};}):[]};}):[]:[]})[_0x6549('0xf')](function(_0x4acaf5){logger['info']('GetVoiceExtension',_0xfca192);logger[_0x6549('0x21')](_0x6549('0x17'),_0xfca192,JSON['stringify'](_0x4acaf5));_0x5ce3aa(_0x4acaf5);})[_0x6549('0x22')](function(_0x194ae7){logger[_0x6549('0x14')](_0x6549('0x17'),_0x194ae7[_0x6549('0x16')],_0xfca192);_0x228117(_0x236fd9[_0x6549('0x14')](0x1f4,_0x194ae7[_0x6549('0x16')]));});});};
\ No newline at end of file
+var _0x5a99=['VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','VoiceExtension,\x20%s,\x20%s','GetVoiceExtension','findAll','options','raw','where','attributes','include','map','model','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','./voiceExtension.socket','register','request','then','info','request\x20sent','debug'];(function(_0xf91841,_0x182ae3){var _0x4b9c44=function(_0x2e216e){while(--_0x2e216e){_0xf91841['push'](_0xf91841['shift']());}};_0x4b9c44(++_0x182ae3);}(_0x5a99,0xc9));var _0x95a9=function(_0x4453e9,_0x448c1b){_0x4453e9=_0x4453e9-0x0;var _0x46e103=_0x5a99[_0x4453e9];return _0x46e103;};'use strict';var _=require(_0x95a9('0x0'));var util=require(_0x95a9('0x1'));var moment=require(_0x95a9('0x2'));var BPromise=require('bluebird');var rs=require(_0x95a9('0x3'));var fs=require('fs');var Redis=require(_0x95a9('0x4'));var db=require(_0x95a9('0x5'))['db'];var utils=require(_0x95a9('0x6'));var logger=require('../../config/logger')(_0x95a9('0x7'));var config=require(_0x95a9('0x8'));var jayson=require(_0x95a9('0x9'));var client=jayson[_0x95a9('0xa')]['http']({'port':0x232a});config[_0x95a9('0xb')]=_[_0x95a9('0xc')](config[_0x95a9('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x95a9('0xd'))(new Redis(config['redis']));require(_0x95a9('0xe'))[_0x95a9('0xf')](socket);function respondWithRpcPromise(_0x48d5f0,_0x2be9a2,_0xc0e40d){return new BPromise(function(_0x4de148,_0x4aedae){return client[_0x95a9('0x10')](_0x48d5f0,_0xc0e40d)[_0x95a9('0x11')](function(_0x4de6ba){logger[_0x95a9('0x12')]('VoiceExtension,\x20%s,\x20%s',_0x2be9a2,_0x95a9('0x13'));logger[_0x95a9('0x14')](_0x95a9('0x15'),_0x2be9a2,_0x95a9('0x13'),JSON[_0x95a9('0x16')](_0x4de6ba));if(_0x4de6ba['error']){if(_0x4de6ba['error']['code']===0x1f4){logger[_0x95a9('0x17')]('VoiceExtension,\x20%s,\x20%s',_0x2be9a2,_0x4de6ba[_0x95a9('0x17')][_0x95a9('0x18')]);return _0x4aedae(_0x4de6ba[_0x95a9('0x17')]['message']);}logger[_0x95a9('0x17')]('VoiceExtension,\x20%s,\x20%s',_0x2be9a2,_0x4de6ba[_0x95a9('0x17')][_0x95a9('0x18')]);return _0x4de148(_0x4de6ba[_0x95a9('0x17')]['message']);}else{logger[_0x95a9('0x12')]('VoiceExtension,\x20%s,\x20%s',_0x2be9a2,'request\x20sent');_0x4de148(_0x4de6ba[_0x95a9('0x19')][_0x95a9('0x18')]);}})[_0x95a9('0x1a')](function(_0x183a64){logger[_0x95a9('0x17')](_0x95a9('0x1b'),_0x2be9a2,_0x183a64);_0x4aedae(_0x183a64);});});}exports[_0x95a9('0x1c')]=function(_0xab9d9a){var _0x294556=this;return new Promise(function(_0x2249dd,_0x4d48b4){return db['VoiceExtension'][_0x95a9('0x1d')]({'raw':_0xab9d9a[_0x95a9('0x1e')]?_0xab9d9a[_0x95a9('0x1e')][_0x95a9('0x1f')]===undefined?!![]:![]:!![],'where':_0xab9d9a['options']?_0xab9d9a[_0x95a9('0x1e')][_0x95a9('0x20')]||null:null,'attributes':_0xab9d9a[_0x95a9('0x1e')]?_0xab9d9a[_0x95a9('0x1e')][_0x95a9('0x21')]||null:null,'limit':_0xab9d9a[_0x95a9('0x1e')]?_0xab9d9a[_0x95a9('0x1e')]['limit']||null:null,'include':_0xab9d9a[_0x95a9('0x1e')]?_0xab9d9a[_0x95a9('0x1e')][_0x95a9('0x22')]?_['map'](_0xab9d9a['options'][_0x95a9('0x22')],function(_0x49413f){return{'model':db[_0x49413f['model']],'as':_0x49413f['as'],'attributes':_0x49413f[_0x95a9('0x21')],'include':_0x49413f['include']?_[_0x95a9('0x23')](_0x49413f[_0x95a9('0x22')],function(_0x333260){return{'model':db[_0x333260[_0x95a9('0x24')]],'as':_0x333260['as'],'attributes':_0x333260[_0x95a9('0x21')],'include':_0x333260[_0x95a9('0x22')]?_[_0x95a9('0x23')](_0x333260[_0x95a9('0x22')],function(_0x381672){return{'model':db[_0x381672[_0x95a9('0x24')]],'as':_0x381672['as'],'attributes':_0x381672[_0x95a9('0x21')]};}):[]};}):[]};}):[]:[]})[_0x95a9('0x11')](function(_0x3ae759){logger[_0x95a9('0x12')](_0x95a9('0x1c'),_0xab9d9a);logger[_0x95a9('0x14')](_0x95a9('0x1c'),_0xab9d9a,JSON['stringify'](_0x3ae759));_0x2249dd(_0x3ae759);})['catch'](function(_0x59087c){logger[_0x95a9('0x17')](_0x95a9('0x1c'),_0x59087c[_0x95a9('0x18')],_0xab9d9a);_0x4d48b4(_0x294556['error'](0x1f4,_0x59087c[_0x95a9('0x18')]));});});};
\ No newline at end of file
index cd3a728..3a12150 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['length','voiceExtension:','./voiceExtension.events','save','remove','update','emit','removeListener'];(function(_0x2e6142,_0x18e16d){var _0x2cbeb6=function(_0x4a4a93){while(--_0x4a4a93){_0x2e6142['push'](_0x2e6142['shift']());}};_0x2cbeb6(++_0x18e16d);}(_0x53ec,0x192));var _0xc53e=function(_0x513789,_0x3d7067){_0x513789=_0x513789-0x0;var _0xbdc2f3=_0x53ec[_0x513789];return _0xbdc2f3;};'use strict';var VoiceExtensionEvents=require(_0xc53e('0x0'));var events=[_0xc53e('0x1'),_0xc53e('0x2'),_0xc53e('0x3')];function createListener(_0x1b04cc,_0xe45c6d){return function(_0x51c435){_0xe45c6d[_0xc53e('0x4')](_0x1b04cc,_0x51c435);};}function removeListener(_0x4e954a,_0x2b90f6){return function(){VoiceExtensionEvents[_0xc53e('0x5')](_0x4e954a,_0x2b90f6);};}exports['register']=function(_0x2f1414){for(var _0x4f989b=0x0,_0x41a9e8=events[_0xc53e('0x6')];_0x4f989b<_0x41a9e8;_0x4f989b++){var _0x5d3b28=events[_0x4f989b];var _0x1616ac=createListener(_0xc53e('0x7')+_0x5d3b28,_0x2f1414);VoiceExtensionEvents['on'](_0x5d3b28,_0x1616ac);}};
\ No newline at end of file
+var _0x4975=['length','./voiceExtension.events','remove','update','emit','removeListener','register'];(function(_0x192ff4,_0x4c6c4e){var _0x2fbb8a=function(_0x4c23be){while(--_0x4c23be){_0x192ff4['push'](_0x192ff4['shift']());}};_0x2fbb8a(++_0x4c6c4e);}(_0x4975,0x86));var _0x5497=function(_0x333ef2,_0x2b93c2){_0x333ef2=_0x333ef2-0x0;var _0x47095b=_0x4975[_0x333ef2];return _0x47095b;};'use strict';var VoiceExtensionEvents=require(_0x5497('0x0'));var events=['save',_0x5497('0x1'),_0x5497('0x2')];function createListener(_0xfc7927,_0x349f5f){return function(_0x135f6f){_0x349f5f[_0x5497('0x3')](_0xfc7927,_0x135f6f);};}function removeListener(_0x14cecb,_0xeb31af){return function(){VoiceExtensionEvents[_0x5497('0x4')](_0x14cecb,_0xeb31af);};}exports[_0x5497('0x5')]=function(_0x539a27){for(var _0x37e48d=0x0,_0x4f563d=events[_0x5497('0x6')];_0x37e48d<_0x4f563d;_0x37e48d++){var _0x674a2a=events[_0x37e48d];var _0x368e8b=createListener('voiceExtension:'+_0x674a2a,_0x539a27);VoiceExtensionEvents['on'](_0x674a2a,_0x368e8b);}};
\ No newline at end of file
index f300171..0c7c96b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdbd=['get','getMessages','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceMail.controller','isAuthenticated','index','show'];(function(_0x6c0a53,_0x186a58){var _0x30e85f=function(_0x104906){while(--_0x104906){_0x6c0a53['push'](_0x6c0a53['shift']());}};_0x30e85f(++_0x186a58);}(_0xfdbd,0xf0));var _0xdfdb=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xfdbd[_0x1d1779];return _0x2377e9;};'use strict';var multer=require(_0xdfdb('0x0'));var util=require(_0xdfdb('0x1'));var path=require(_0xdfdb('0x2'));var timeout=require(_0xdfdb('0x3'));var express=require(_0xdfdb('0x4'));var router=express[_0xdfdb('0x5')]();var fs_extra=require(_0xdfdb('0x6'));var auth=require(_0xdfdb('0x7'));var interaction=require(_0xdfdb('0x8'));var config=require('../../config/environment');var controller=require(_0xdfdb('0x9'));router['get']('/',auth[_0xdfdb('0xa')](),controller[_0xdfdb('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xdfdb('0xc')]);router[_0xdfdb('0xd')]('/:id/messages',auth[_0xdfdb('0xa')](),controller[_0xdfdb('0xe')]);router[_0xdfdb('0xf')]('/',auth[_0xdfdb('0xa')](),controller[_0xdfdb('0x10')]);router[_0xdfdb('0x11')](_0xdfdb('0x12'),auth['isAuthenticated'](),controller[_0xdfdb('0x13')]);router[_0xdfdb('0x14')]('/:id',auth[_0xdfdb('0xa')](),controller[_0xdfdb('0x15')]);module[_0xdfdb('0x16')]=router;
\ No newline at end of file
+var _0xc4aa=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../config/environment','./voiceMail.controller','get','isAuthenticated','index','/:id','/:id/messages','getMessages','create','put','delete'];(function(_0x508119,_0x187eeb){var _0x704feb=function(_0x324024){while(--_0x324024){_0x508119['push'](_0x508119['shift']());}};_0x704feb(++_0x187eeb);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0xc4aa[_0x36c5b0];return _0xf19333;};'use strict';var multer=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var path=require(_0xac4a('0x2'));var timeout=require(_0xac4a('0x3'));var express=require(_0xac4a('0x4'));var router=express[_0xac4a('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xac4a('0x6'));var controller=require(_0xac4a('0x7'));router[_0xac4a('0x8')]('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0xa')]);router[_0xac4a('0x8')](_0xac4a('0xb'),auth[_0xac4a('0x9')](),controller['show']);router['get'](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0xd')]);router['post']('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0xe')]);router[_0xac4a('0xf')]('/:id',auth[_0xac4a('0x9')](),controller['update']);router[_0xac4a('0x10')]('/:id',auth[_0xac4a('0x9')](),controller[_0xac4a('0x11')]);module[_0xac4a('0x12')]=router;
\ No newline at end of file
index 1926812..5645b3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6f2=['\x20-\x20','mailbox','sequelize','STRING','from-voicemail','contest_mailbox','setDataValue','email','trim','ENUM','yes','TINYINT(4)','TIMESTAMP','getDataValue','fullname'];(function(_0x42db3e,_0x4e0e33){var _0x1c86e2=function(_0xf701de){while(--_0xf701de){_0x42db3e['push'](_0x42db3e['shift']());}};_0x1c86e2(++_0x4e0e33);}(_0xa6f2,0xb6));var _0x2a6f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa6f2[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x2a6f('0x0'));module['exports']={'customer_id':{'type':Sequelize[_0x2a6f('0x1')]},'context':{'type':Sequelize[_0x2a6f('0x1')],'defaultValue':_0x2a6f('0x2'),'unique':_0x2a6f('0x3')},'mailbox':{'type':Sequelize[_0x2a6f('0x1')],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize[_0x2a6f('0x1')]},'fullname':{'type':Sequelize[_0x2a6f('0x1')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]},'set':function(_0x2b799b){this[_0x2a6f('0x4')](_0x2a6f('0x5'),typeof _0x2b799b==='string'&&_0x2b799b[_0x2a6f('0x6')]()?_0x2b799b[_0x2a6f('0x6')]():null);}},'pager':{'type':Sequelize[_0x2a6f('0x1')]},'tz':{'type':Sequelize[_0x2a6f('0x1')],'defaultValue':'central'},'attach':{'type':Sequelize[_0x2a6f('0x7')](_0x2a6f('0x8'),'no'),'defaultValue':_0x2a6f('0x8'),'allowNull':![]},'saycid':{'type':Sequelize[_0x2a6f('0x7')]('yes','no'),'defaultValue':_0x2a6f('0x8'),'allowNull':![]},'dialout':{'type':Sequelize[_0x2a6f('0x1')]},'callback':{'type':Sequelize[_0x2a6f('0x1')]},'review':{'type':Sequelize[_0x2a6f('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x2a6f('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize['ENUM'](_0x2a6f('0x8'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x2a6f('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x2a6f('0x9'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x2a6f('0x7')](_0x2a6f('0x8'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize['ENUM'](_0x2a6f('0x8'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x2a6f('0x7')](_0x2a6f('0x8'),'no'),'defaultValue':_0x2a6f('0x8'),'allowNull':![]},'forcename':{'type':Sequelize[_0x2a6f('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x2a6f('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x2a6f('0x7')]('yes','no'),'defaultValue':'yes','allowNull':![]},'stamp':{'type':_0x2a6f('0xa')},'emailsubject':{'type':Sequelize['STRING']},'emailbody':{'type':Sequelize[_0x2a6f('0x1')]},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x2a6f('0xb')](_0x2a6f('0xc'))+_0x2a6f('0xd')+this[_0x2a6f('0xb')](_0x2a6f('0xe'));}}};
\ No newline at end of file
+var _0xb24b=['contest_mailbox','setDataValue','string','trim','central','ENUM','yes','TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL','fullname','getDataValue','mailbox','exports','STRING'];(function(_0x5992b4,_0x414e4d){var _0x3df19c=function(_0x29bf04){while(--_0x29bf04){_0x5992b4['push'](_0x5992b4['shift']());}};_0x3df19c(++_0x414e4d);}(_0xb24b,0x12e));var _0xbb24=function(_0x2a597f,_0x384743){_0x2a597f=_0x2a597f-0x0;var _0x44e7ec=_0xb24b[_0x2a597f];return _0x44e7ec;};'use strict';var Sequelize=require('sequelize');module[_0xbb24('0x0')]={'customer_id':{'type':Sequelize[_0xbb24('0x1')]},'context':{'type':Sequelize[_0xbb24('0x1')],'defaultValue':'from-voicemail','unique':_0xbb24('0x2')},'mailbox':{'type':Sequelize[_0xbb24('0x1')],'defaultValue':'','allowNull':![],'unique':_0xbb24('0x2')},'password':{'type':Sequelize[_0xbb24('0x1')]},'fullname':{'type':Sequelize[_0xbb24('0x1')]},'email':{'type':Sequelize[_0xbb24('0x1')],'validate':{'isEmail':!![]},'set':function(_0x578dc4){this[_0xbb24('0x3')]('email',typeof _0x578dc4===_0xbb24('0x4')&&_0x578dc4[_0xbb24('0x5')]()?_0x578dc4[_0xbb24('0x5')]():null);}},'pager':{'type':Sequelize[_0xbb24('0x1')]},'tz':{'type':Sequelize[_0xbb24('0x1')],'defaultValue':_0xbb24('0x6')},'attach':{'type':Sequelize[_0xbb24('0x7')](_0xbb24('0x8'),'no'),'defaultValue':_0xbb24('0x8'),'allowNull':![]},'saycid':{'type':Sequelize[_0xbb24('0x7')](_0xbb24('0x8'),'no'),'defaultValue':'yes','allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0xbb24('0x1')]},'review':{'type':Sequelize[_0xbb24('0x7')](_0xbb24('0x8'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xbb24('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xbb24('0x7')](_0xbb24('0x8'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0xbb24('0x9'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xbb24('0x7')](_0xbb24('0x8'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0xbb24('0x7')](_0xbb24('0x8'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xbb24('0x7')](_0xbb24('0x8'),'no'),'defaultValue':_0xbb24('0x8'),'allowNull':![]},'forcename':{'type':Sequelize[_0xbb24('0x7')](_0xbb24('0x8'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0xbb24('0x7')](_0xbb24('0x8'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0xbb24('0x8'),'allowNull':![]},'stamp':{'type':_0xbb24('0xa')},'emailsubject':{'type':Sequelize[_0xbb24('0x1')]},'emailbody':{'type':Sequelize[_0xbb24('0x1')]},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0xbb24('0xb')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xbb24('0xc')],'get':function(){return this['getDataValue'](_0xbb24('0xd'))+'\x20-\x20'+this[_0xbb24('0xe')](_0xbb24('0xf'));}}};
\ No newline at end of file
index a2f4620..cca8c91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1775=['hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','include','params','includeAll','find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','findOne','rawAttributes','mailbox','options','VoiceMailMessage','findAndCountAll','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','then','destroy','Voicemails','UserProfileResource','name','send','index','VoiceMail','fieldName','type','map','query','keys','filters','intersection','model','attributes','fields','length'];(function(_0xb22803,_0x3ecadd){var _0x43b3c8=function(_0x364e5d){while(--_0x364e5d){_0xb22803['push'](_0xb22803['shift']());}};_0x43b3c8(++_0x3ecadd);}(_0x1775,0x1db));var _0x5177=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x1775[_0x3947c9];return _0x2e7871;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5177('0x0'));var zipdir=require(_0x5177('0x1'));var jsonpatch=require(_0x5177('0x2'));var rp=require(_0x5177('0x3'));var moment=require(_0x5177('0x4'));var BPromise=require(_0x5177('0x5'));var Mustache=require(_0x5177('0x6'));var util=require(_0x5177('0x7'));var path=require(_0x5177('0x8'));var sox=require(_0x5177('0x9'));var csv=require(_0x5177('0xa'));var ejs=require(_0x5177('0xb'));var fs=require('fs');var fs_extra=require(_0x5177('0xc'));var _=require(_0x5177('0xd'));var squel=require(_0x5177('0xe'));var crypto=require(_0x5177('0xf'));var jsforce=require(_0x5177('0x10'));var deskjs=require(_0x5177('0x11'));var toCsv=require(_0x5177('0xa'));var querystring=require(_0x5177('0x12'));var Papa=require(_0x5177('0x13'));var Redis=require(_0x5177('0x14'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x5177('0x15'));var hardwareService=require(_0x5177('0x16'));var logger=require(_0x5177('0x17'))(_0x5177('0x18'));var utils=require(_0x5177('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x5177('0x1a'));var db=require(_0x5177('0x1b'))['db'];function respondWithStatusCode(_0xc613b9,_0x3c4ced){_0x3c4ced=_0x3c4ced||0xcc;return function(_0x111e99){if(_0x111e99){return _0xc613b9[_0x5177('0x1c')](_0x3c4ced);}return _0xc613b9[_0x5177('0x1d')](_0x3c4ced)[_0x5177('0x1e')]();};}function respondWithResult(_0x3e6224,_0x1eb9dd){_0x1eb9dd=_0x1eb9dd||0xc8;return function(_0x41bef4){if(_0x41bef4){return _0x3e6224[_0x5177('0x1d')](_0x1eb9dd)[_0x5177('0x1f')](_0x41bef4);}};}function respondWithFilteredResult(_0x31aff8,_0x1b32e6){return function(_0x175ca6){if(_0x175ca6){var _0x2ab5e5=typeof _0x1b32e6[_0x5177('0x20')]===_0x5177('0x21')&&typeof _0x1b32e6['limit']===_0x5177('0x21');var _0x41e687=_0x175ca6[_0x5177('0x22')];var _0x1b4102=_0x2ab5e5?0x0:_0x1b32e6['offset'];var _0x3e6944=_0x2ab5e5?_0x175ca6[_0x5177('0x22')]:_0x1b32e6[_0x5177('0x20')]+_0x1b32e6['limit'];var _0x86f5f8;if(_0x3e6944>=_0x41e687){_0x3e6944=_0x41e687;_0x86f5f8=0xc8;}else{_0x86f5f8=0xce;}_0x31aff8['status'](_0x86f5f8);return _0x31aff8[_0x5177('0x23')](_0x5177('0x24'),_0x1b4102+'-'+_0x3e6944+'/'+_0x41e687)[_0x5177('0x1f')](_0x175ca6);}return null;};}function patchUpdates(_0x27b732){return function(_0x451e5c){try{jsonpatch[_0x5177('0x25')](_0x451e5c,_0x27b732,!![]);}catch(_0x174c4f){return BPromise[_0x5177('0x26')](_0x174c4f);}return _0x451e5c[_0x5177('0x27')]();};}function saveUpdates(_0x2a95cc,_0x23dad2){return function(_0x3b0c37){if(_0x3b0c37){return _0x3b0c37['update'](_0x2a95cc)[_0x5177('0x28')](function(_0x556f96){return _0x556f96;});}return null;};}function removeEntity(_0x30b60f,_0x2c68d8){return function(_0x3b39b5){if(_0x3b39b5){return _0x3b39b5[_0x5177('0x29')]()['then'](function(){var _0x2503ef=_0x3b39b5['get']({'plain':!![]});var _0x564139=_0x5177('0x2a');return db[_0x5177('0x2b')]['destroy']({'where':{'type':_0x564139,'resourceId':_0x2503ef['id']}})[_0x5177('0x28')](function(){return _0x3b39b5;});})['then'](function(){_0x30b60f[_0x5177('0x1d')](0xcc)[_0x5177('0x1e')]();});}};}function handleEntityNotFound(_0x58846c,_0x3e021a){return function(_0x2554ec){if(!_0x2554ec){_0x58846c[_0x5177('0x1c')](0x194);}return _0x2554ec;};}function handleError(_0x7f86e,_0xe98ff1){_0xe98ff1=_0xe98ff1||0x1f4;return function(_0x1cef5d){logger['error'](_0x1cef5d['stack']);if(_0x1cef5d[_0x5177('0x2c')]){delete _0x1cef5d[_0x5177('0x2c')];}_0x7f86e[_0x5177('0x1d')](_0xe98ff1)[_0x5177('0x2d')](_0x1cef5d);};}exports[_0x5177('0x2e')]=function(_0x8134f9,_0x31eb9f){var _0x72dced={},_0x49f6f1={},_0x42e1db={'count':0x0,'rows':[]};var _0x2233a2=_['map'](db[_0x5177('0x2f')]['rawAttributes'],function(_0x172b36){return{'name':_0x172b36[_0x5177('0x30')],'type':_0x172b36[_0x5177('0x31')]['key']};});_0x49f6f1['model']=_[_0x5177('0x32')](_0x2233a2,_0x5177('0x2c'));_0x49f6f1[_0x5177('0x33')]=_[_0x5177('0x34')](_0x8134f9[_0x5177('0x33')]);_0x49f6f1[_0x5177('0x35')]=_[_0x5177('0x36')](_0x49f6f1[_0x5177('0x37')],_0x49f6f1['query']);_0x72dced[_0x5177('0x38')]=_[_0x5177('0x36')](_0x49f6f1['model'],qs[_0x5177('0x39')](_0x8134f9[_0x5177('0x33')][_0x5177('0x39')]));_0x72dced[_0x5177('0x38')]=_0x72dced[_0x5177('0x38')][_0x5177('0x3a')]?_0x72dced['attributes']:_0x49f6f1[_0x5177('0x37')];if(!_0x8134f9[_0x5177('0x33')][_0x5177('0x3b')](_0x5177('0x3c'))){_0x72dced[_0x5177('0x3d')]=qs[_0x5177('0x3d')](_0x8134f9[_0x5177('0x33')]['limit']);_0x72dced[_0x5177('0x20')]=qs[_0x5177('0x20')](_0x8134f9['query']['offset']);}_0x72dced[_0x5177('0x3e')]=qs[_0x5177('0x3f')](_0x8134f9[_0x5177('0x33')][_0x5177('0x3f')]);_0x72dced[_0x5177('0x40')]=qs[_0x5177('0x35')](_[_0x5177('0x41')](_0x8134f9[_0x5177('0x33')],_0x49f6f1[_0x5177('0x35')]),_0x2233a2);if(_0x8134f9[_0x5177('0x33')][_0x5177('0x42')]){_0x72dced[_0x5177('0x40')]=_[_0x5177('0x43')](_0x72dced['where'],{'$or':_[_0x5177('0x32')](_0x2233a2,function(_0x2a4db1){if(_0x2a4db1['type']!==_0x5177('0x44')){var _0x56f297={};_0x56f297[_0x2a4db1[_0x5177('0x2c')]]={'$like':'%'+_0x8134f9[_0x5177('0x33')][_0x5177('0x42')]+'%'};return _0x56f297;}})});}_0x72dced=_['merge']({},_0x72dced,_0x8134f9['options']);var _0x210510={'where':_0x72dced[_0x5177('0x40')]};return db[_0x5177('0x2f')][_0x5177('0x22')](_0x210510)[_0x5177('0x28')](function(_0x3e710d){_0x42e1db[_0x5177('0x22')]=_0x3e710d;if(_0x8134f9[_0x5177('0x33')]['includeAll']){_0x72dced[_0x5177('0x45')]=[{'all':!![]}];}return db['VoiceMail']['findAll'](_0x72dced);})[_0x5177('0x28')](function(_0x17dc98){_0x42e1db['rows']=_0x17dc98;return _0x42e1db;})[_0x5177('0x28')](respondWithFilteredResult(_0x31eb9f,_0x72dced))['catch'](handleError(_0x31eb9f,null));};exports['show']=function(_0x46c833,_0x1769cd){var _0x262c71={'raw':!![],'where':{'id':_0x46c833[_0x5177('0x46')]['id']}},_0x3776b8={};_0x3776b8[_0x5177('0x37')]=_[_0x5177('0x34')](db['VoiceMail']['rawAttributes']);_0x3776b8[_0x5177('0x33')]=_['keys'](_0x46c833[_0x5177('0x33')]);_0x3776b8[_0x5177('0x35')]=_[_0x5177('0x36')](_0x3776b8[_0x5177('0x37')],_0x3776b8['query']);_0x262c71[_0x5177('0x38')]=_[_0x5177('0x36')](_0x3776b8[_0x5177('0x37')],qs[_0x5177('0x39')](_0x46c833[_0x5177('0x33')][_0x5177('0x39')]));_0x262c71[_0x5177('0x38')]=_0x262c71[_0x5177('0x38')][_0x5177('0x3a')]?_0x262c71[_0x5177('0x38')]:_0x3776b8[_0x5177('0x37')];if(_0x46c833['query'][_0x5177('0x47')]){_0x262c71['include']=[{'all':!![]}];}_0x262c71=_['merge']({},_0x262c71,_0x46c833['options']);return db[_0x5177('0x2f')][_0x5177('0x48')](_0x262c71)['then'](handleEntityNotFound(_0x1769cd,null))[_0x5177('0x28')](respondWithResult(_0x1769cd,null))[_0x5177('0x49')](handleError(_0x1769cd,null));};exports[_0x5177('0x4a')]=function(_0x4891fe,_0x1d4ae4){return db['VoiceMail']['create'](_0x4891fe['body'],{})[_0x5177('0x28')](function(_0x37d5dd){var _0x1300d7=_0x4891fe['user']['get']({'plain':!![]});if(!_0x1300d7)throw new Error(_0x5177('0x4b'));if(_0x1300d7['role']===_0x5177('0x4c')){var _0x9dd7a2=_0x37d5dd[_0x5177('0x4d')]({'plain':!![]});var _0x31a6e1=_0x5177('0x2a');return db[_0x5177('0x4e')][_0x5177('0x48')]({'where':{'name':_0x31a6e1,'userProfileId':_0x1300d7[_0x5177('0x4f')]},'raw':!![]})[_0x5177('0x28')](function(_0x217aca){if(_0x217aca&&_0x217aca[_0x5177('0x50')]===0x0){return db[_0x5177('0x2b')][_0x5177('0x4a')]({'name':_0x9dd7a2['name'],'resourceId':_0x9dd7a2['id'],'type':_0x217aca['name'],'sectionId':_0x217aca['id']},{})[_0x5177('0x28')](function(){return _0x37d5dd;});}else{return _0x37d5dd;}})['catch'](function(_0x649c6f){logger['error'](_0x5177('0x51'),_0x649c6f);throw _0x649c6f;});}return _0x37d5dd;})[_0x5177('0x28')](respondWithResult(_0x1d4ae4,0xc9))[_0x5177('0x49')](handleError(_0x1d4ae4,null));};exports['update']=function(_0x5be224,_0x19884e){if(_0x5be224[_0x5177('0x52')]['id']){delete _0x5be224[_0x5177('0x52')]['id'];}return db[_0x5177('0x2f')]['find']({'where':{'id':_0x5be224['params']['id']}})[_0x5177('0x28')](handleEntityNotFound(_0x19884e,null))[_0x5177('0x28')](saveUpdates(_0x5be224[_0x5177('0x52')],null))[_0x5177('0x28')](respondWithResult(_0x19884e,null))['catch'](handleError(_0x19884e,null));};exports[_0x5177('0x29')]=function(_0x143aff,_0x3a18ad){return db['VoiceMail'][_0x5177('0x48')]({'where':{'id':_0x143aff[_0x5177('0x46')]['id']}})[_0x5177('0x28')](handleEntityNotFound(_0x3a18ad,null))['then'](removeEntity(_0x3a18ad,null))[_0x5177('0x49')](handleError(_0x3a18ad,null));};exports['getMessages']=function(_0x40dfd6,_0x39fb92,_0x3268bd){return db['VoiceMail'][_0x5177('0x53')]({'where':{'id':_0x40dfd6[_0x5177('0x46')]['id']}})[_0x5177('0x28')](handleEntityNotFound(_0x39fb92,null))[_0x5177('0x28')](function(_0xc7a59e){var _0x74589e;var _0x37380c={},_0x267599={};_0x267599['model']=_['keys'](db['VoiceMailMessage'][_0x5177('0x54')]);_0x267599[_0x5177('0x33')]=_[_0x5177('0x34')](_0x40dfd6[_0x5177('0x33')]);_0x267599[_0x5177('0x35')]=_[_0x5177('0x36')](_0x267599['model'],_0x267599['query']);_0x37380c[_0x5177('0x38')]=_[_0x5177('0x36')](_0x267599[_0x5177('0x37')],qs[_0x5177('0x39')](_0x40dfd6[_0x5177('0x33')][_0x5177('0x39')]));_0x37380c[_0x5177('0x38')]=_0x37380c[_0x5177('0x38')][_0x5177('0x3a')]?_0x37380c['attributes']:_0x267599[_0x5177('0x37')];if(!_0x40dfd6[_0x5177('0x33')]['hasOwnProperty'](_0x5177('0x3c'))){_0x37380c[_0x5177('0x3d')]=qs['limit'](_0x40dfd6[_0x5177('0x33')][_0x5177('0x3d')]);_0x37380c[_0x5177('0x20')]=qs['offset'](_0x40dfd6[_0x5177('0x33')][_0x5177('0x20')]);}_0x37380c['order']=qs['sort'](_0x40dfd6[_0x5177('0x33')]['sort']);_0x37380c[_0x5177('0x40')]=qs['filters'](_[_0x5177('0x41')](_0x40dfd6[_0x5177('0x33')],_0x267599['filters']));if(_0x40dfd6[_0x5177('0x33')][_0x5177('0x42')]){_0x37380c[_0x5177('0x40')]=_[_0x5177('0x43')](_0x37380c[_0x5177('0x40')],{'$or':_[_0x5177('0x32')](_0x37380c[_0x5177('0x38')],function(_0x58ebdd){var _0x26b733={};_0x26b733[_0x58ebdd]={'$like':'%'+_0x40dfd6['query']['filter']+'%'};return _0x26b733;})});}_0x37380c[_0x5177('0x40')]=_[_0x5177('0x43')](_0x37380c['where'],{'mailboxuser':_0xc7a59e[_0x5177('0x55')]});_0x37380c=_[_0x5177('0x43')]({},_0x37380c,_0x40dfd6[_0x5177('0x56')]);return db[_0x5177('0x57')][_0x5177('0x58')](_0x37380c)[_0x5177('0x28')](respondWithFilteredResult(_0x39fb92,_0x37380c));})[_0x5177('0x49')](handleError(_0x39fb92,null));};
\ No newline at end of file
+var _0xe511=['pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','UserProfileResource','create','catch','body','destroy','getMessages','findOne','VoiceMailMessage','nolimit','mailbox','findAndCountAll','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','save','update','then','get','Voicemails','error','name','send','map','VoiceMail','rawAttributes','fieldName','type','key','query','keys','intersection','attributes','fields','length','model','hasOwnProperty','order','sort','filters'];(function(_0x2f432a,_0x21efbd){var _0x9fb239=function(_0x56549c){while(--_0x56549c){_0x2f432a['push'](_0x2f432a['shift']());}};_0x9fb239(++_0x21efbd);}(_0xe511,0x16f));var _0x1e51=function(_0x549876,_0x66473f){_0x549876=_0x549876-0x0;var _0x242552=_0xe511[_0x549876];return _0x242552;};'use strict';var emlformat=require(_0x1e51('0x0'));var rimraf=require(_0x1e51('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1e51('0x2'));var rp=require('request-promise');var moment=require(_0x1e51('0x3'));var BPromise=require(_0x1e51('0x4'));var Mustache=require('mustache');var util=require(_0x1e51('0x5'));var path=require(_0x1e51('0x6'));var sox=require(_0x1e51('0x7'));var csv=require(_0x1e51('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1e51('0x9'));var _=require(_0x1e51('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1e51('0xb'));var deskjs=require(_0x1e51('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1e51('0xd'));var Redis=require(_0x1e51('0xe'));var authService=require(_0x1e51('0xf'));var qs=require(_0x1e51('0x10'));var as=require(_0x1e51('0x11'));var hardwareService=require(_0x1e51('0x12'));var logger=require('../../config/logger')(_0x1e51('0x13'));var utils=require(_0x1e51('0x14'));var config=require(_0x1e51('0x15'));var licenseUtil=require(_0x1e51('0x16'));var db=require(_0x1e51('0x17'))['db'];function respondWithStatusCode(_0x3c5330,_0x5544eb){_0x5544eb=_0x5544eb||0xcc;return function(_0x408a77){if(_0x408a77){return _0x3c5330[_0x1e51('0x18')](_0x5544eb);}return _0x3c5330[_0x1e51('0x19')](_0x5544eb)[_0x1e51('0x1a')]();};}function respondWithResult(_0x21bcbd,_0x32945d){_0x32945d=_0x32945d||0xc8;return function(_0x441c70){if(_0x441c70){return _0x21bcbd[_0x1e51('0x19')](_0x32945d)[_0x1e51('0x1b')](_0x441c70);}};}function respondWithFilteredResult(_0xd76fba,_0x5a5c07){return function(_0x3b01b7){if(_0x3b01b7){var _0x24db4f=typeof _0x5a5c07[_0x1e51('0x1c')]==='undefined'&&typeof _0x5a5c07[_0x1e51('0x1d')]==='undefined';var _0x53d222=_0x3b01b7[_0x1e51('0x1e')];var _0x27dcad=_0x24db4f?0x0:_0x5a5c07[_0x1e51('0x1c')];var _0x4785a5=_0x24db4f?_0x3b01b7[_0x1e51('0x1e')]:_0x5a5c07[_0x1e51('0x1c')]+_0x5a5c07['limit'];var _0x39449b;if(_0x4785a5>=_0x53d222){_0x4785a5=_0x53d222;_0x39449b=0xc8;}else{_0x39449b=0xce;}_0xd76fba['status'](_0x39449b);return _0xd76fba[_0x1e51('0x1f')](_0x1e51('0x20'),_0x27dcad+'-'+_0x4785a5+'/'+_0x53d222)[_0x1e51('0x1b')](_0x3b01b7);}return null;};}function patchUpdates(_0x183a95){return function(_0x506f40){try{jsonpatch['apply'](_0x506f40,_0x183a95,!![]);}catch(_0x4e6a49){return BPromise['reject'](_0x4e6a49);}return _0x506f40[_0x1e51('0x21')]();};}function saveUpdates(_0x4f1f56,_0x3f7340){return function(_0x28aacb){if(_0x28aacb){return _0x28aacb[_0x1e51('0x22')](_0x4f1f56)[_0x1e51('0x23')](function(_0x23c85a){return _0x23c85a;});}return null;};}function removeEntity(_0xf9298,_0x270adf){return function(_0x461d3d){if(_0x461d3d){return _0x461d3d['destroy']()['then'](function(){var _0x43f5c5=_0x461d3d[_0x1e51('0x24')]({'plain':!![]});var _0x2e42b1=_0x1e51('0x25');return db['UserProfileResource']['destroy']({'where':{'type':_0x2e42b1,'resourceId':_0x43f5c5['id']}})['then'](function(){return _0x461d3d;});})[_0x1e51('0x23')](function(){_0xf9298[_0x1e51('0x19')](0xcc)[_0x1e51('0x1a')]();});}};}function handleEntityNotFound(_0x5412bc,_0x1e7a96){return function(_0x49c507){if(!_0x49c507){_0x5412bc['sendStatus'](0x194);}return _0x49c507;};}function handleError(_0x3349f0,_0x5c5bbd){_0x5c5bbd=_0x5c5bbd||0x1f4;return function(_0x170ec6){logger[_0x1e51('0x26')](_0x170ec6['stack']);if(_0x170ec6[_0x1e51('0x27')]){delete _0x170ec6[_0x1e51('0x27')];}_0x3349f0[_0x1e51('0x19')](_0x5c5bbd)[_0x1e51('0x28')](_0x170ec6);};}exports['index']=function(_0x4cf046,_0x4f67d3){var _0x20eb9b={},_0x288b50={},_0x1ba84a={'count':0x0,'rows':[]};var _0x36dabe=_[_0x1e51('0x29')](db[_0x1e51('0x2a')][_0x1e51('0x2b')],function(_0x34701c){return{'name':_0x34701c[_0x1e51('0x2c')],'type':_0x34701c[_0x1e51('0x2d')][_0x1e51('0x2e')]};});_0x288b50['model']=_[_0x1e51('0x29')](_0x36dabe,_0x1e51('0x27'));_0x288b50[_0x1e51('0x2f')]=_[_0x1e51('0x30')](_0x4cf046[_0x1e51('0x2f')]);_0x288b50['filters']=_[_0x1e51('0x31')](_0x288b50['model'],_0x288b50[_0x1e51('0x2f')]);_0x20eb9b[_0x1e51('0x32')]=_[_0x1e51('0x31')](_0x288b50['model'],qs[_0x1e51('0x33')](_0x4cf046['query'][_0x1e51('0x33')]));_0x20eb9b['attributes']=_0x20eb9b['attributes'][_0x1e51('0x34')]?_0x20eb9b[_0x1e51('0x32')]:_0x288b50[_0x1e51('0x35')];if(!_0x4cf046['query'][_0x1e51('0x36')]('nolimit')){_0x20eb9b[_0x1e51('0x1d')]=qs[_0x1e51('0x1d')](_0x4cf046['query'][_0x1e51('0x1d')]);_0x20eb9b[_0x1e51('0x1c')]=qs[_0x1e51('0x1c')](_0x4cf046[_0x1e51('0x2f')][_0x1e51('0x1c')]);}_0x20eb9b[_0x1e51('0x37')]=qs['sort'](_0x4cf046['query'][_0x1e51('0x38')]);_0x20eb9b['where']=qs[_0x1e51('0x39')](_[_0x1e51('0x3a')](_0x4cf046[_0x1e51('0x2f')],_0x288b50[_0x1e51('0x39')]),_0x36dabe);if(_0x4cf046[_0x1e51('0x2f')][_0x1e51('0x3b')]){_0x20eb9b[_0x1e51('0x3c')]=_[_0x1e51('0x3d')](_0x20eb9b[_0x1e51('0x3c')],{'$or':_[_0x1e51('0x29')](_0x36dabe,function(_0x45d5fe){if(_0x45d5fe['type']!==_0x1e51('0x3e')){var _0x5818be={};_0x5818be[_0x45d5fe[_0x1e51('0x27')]]={'$like':'%'+_0x4cf046[_0x1e51('0x2f')][_0x1e51('0x3b')]+'%'};return _0x5818be;}})});}_0x20eb9b=_[_0x1e51('0x3d')]({},_0x20eb9b,_0x4cf046[_0x1e51('0x3f')]);var _0x2f8fd9={'where':_0x20eb9b[_0x1e51('0x3c')]};return db[_0x1e51('0x2a')][_0x1e51('0x1e')](_0x2f8fd9)[_0x1e51('0x23')](function(_0xc40fce){_0x1ba84a['count']=_0xc40fce;if(_0x4cf046['query'][_0x1e51('0x40')]){_0x20eb9b[_0x1e51('0x41')]=[{'all':!![]}];}return db[_0x1e51('0x2a')][_0x1e51('0x42')](_0x20eb9b);})[_0x1e51('0x23')](function(_0x1a9e0d){_0x1ba84a[_0x1e51('0x43')]=_0x1a9e0d;return _0x1ba84a;})[_0x1e51('0x23')](respondWithFilteredResult(_0x4f67d3,_0x20eb9b))['catch'](handleError(_0x4f67d3,null));};exports[_0x1e51('0x44')]=function(_0x30eba9,_0x1750b3){var _0x41ca21={'raw':!![],'where':{'id':_0x30eba9[_0x1e51('0x45')]['id']}},_0xfd96a0={};_0xfd96a0[_0x1e51('0x35')]=_['keys'](db[_0x1e51('0x2a')][_0x1e51('0x2b')]);_0xfd96a0['query']=_[_0x1e51('0x30')](_0x30eba9[_0x1e51('0x2f')]);_0xfd96a0[_0x1e51('0x39')]=_['intersection'](_0xfd96a0[_0x1e51('0x35')],_0xfd96a0[_0x1e51('0x2f')]);_0x41ca21[_0x1e51('0x32')]=_[_0x1e51('0x31')](_0xfd96a0[_0x1e51('0x35')],qs[_0x1e51('0x33')](_0x30eba9[_0x1e51('0x2f')][_0x1e51('0x33')]));_0x41ca21[_0x1e51('0x32')]=_0x41ca21['attributes'][_0x1e51('0x34')]?_0x41ca21[_0x1e51('0x32')]:_0xfd96a0['model'];if(_0x30eba9[_0x1e51('0x2f')][_0x1e51('0x40')]){_0x41ca21[_0x1e51('0x41')]=[{'all':!![]}];}_0x41ca21=_['merge']({},_0x41ca21,_0x30eba9[_0x1e51('0x3f')]);return db[_0x1e51('0x2a')][_0x1e51('0x46')](_0x41ca21)['then'](handleEntityNotFound(_0x1750b3,null))[_0x1e51('0x23')](respondWithResult(_0x1750b3,null))['catch'](handleError(_0x1750b3,null));};exports['create']=function(_0x54688b,_0x169e6c){return db[_0x1e51('0x2a')]['create'](_0x54688b['body'],{})[_0x1e51('0x23')](function(_0x7ffc42){var _0x2a43dd=_0x54688b[_0x1e51('0x47')][_0x1e51('0x24')]({'plain':!![]});if(!_0x2a43dd)throw new Error(_0x1e51('0x48'));if(_0x2a43dd['role']===_0x1e51('0x47')){var _0x48a2d0=_0x7ffc42[_0x1e51('0x24')]({'plain':!![]});var _0x43589a='Voicemails';return db['UserProfileSection']['find']({'where':{'name':_0x43589a,'userProfileId':_0x2a43dd[_0x1e51('0x49')]},'raw':!![]})[_0x1e51('0x23')](function(_0x31a37a){if(_0x31a37a&&_0x31a37a['autoAssociation']===0x0){return db[_0x1e51('0x4a')][_0x1e51('0x4b')]({'name':_0x48a2d0[_0x1e51('0x27')],'resourceId':_0x48a2d0['id'],'type':_0x31a37a[_0x1e51('0x27')],'sectionId':_0x31a37a['id']},{})[_0x1e51('0x23')](function(){return _0x7ffc42;});}else{return _0x7ffc42;}})[_0x1e51('0x4c')](function(_0x32fe1f){logger[_0x1e51('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x32fe1f);throw _0x32fe1f;});}return _0x7ffc42;})[_0x1e51('0x23')](respondWithResult(_0x169e6c,0xc9))[_0x1e51('0x4c')](handleError(_0x169e6c,null));};exports[_0x1e51('0x22')]=function(_0x213edb,_0x177b63){if(_0x213edb[_0x1e51('0x4d')]['id']){delete _0x213edb['body']['id'];}return db[_0x1e51('0x2a')]['find']({'where':{'id':_0x213edb['params']['id']}})['then'](handleEntityNotFound(_0x177b63,null))[_0x1e51('0x23')](saveUpdates(_0x213edb[_0x1e51('0x4d')],null))[_0x1e51('0x23')](respondWithResult(_0x177b63,null))['catch'](handleError(_0x177b63,null));};exports[_0x1e51('0x4e')]=function(_0x133576,_0x36c981){return db['VoiceMail'][_0x1e51('0x46')]({'where':{'id':_0x133576[_0x1e51('0x45')]['id']}})[_0x1e51('0x23')](handleEntityNotFound(_0x36c981,null))['then'](removeEntity(_0x36c981,null))[_0x1e51('0x4c')](handleError(_0x36c981,null));};exports[_0x1e51('0x4f')]=function(_0x175aa0,_0x30ee67,_0x666ae9){return db[_0x1e51('0x2a')][_0x1e51('0x50')]({'where':{'id':_0x175aa0[_0x1e51('0x45')]['id']}})['then'](handleEntityNotFound(_0x30ee67,null))[_0x1e51('0x23')](function(_0x2e78e7){var _0x48848f;var _0x5a9d2a={},_0x577b19={};_0x577b19[_0x1e51('0x35')]=_[_0x1e51('0x30')](db[_0x1e51('0x51')][_0x1e51('0x2b')]);_0x577b19[_0x1e51('0x2f')]=_[_0x1e51('0x30')](_0x175aa0[_0x1e51('0x2f')]);_0x577b19[_0x1e51('0x39')]=_[_0x1e51('0x31')](_0x577b19['model'],_0x577b19['query']);_0x5a9d2a['attributes']=_[_0x1e51('0x31')](_0x577b19[_0x1e51('0x35')],qs['fields'](_0x175aa0['query'][_0x1e51('0x33')]));_0x5a9d2a[_0x1e51('0x32')]=_0x5a9d2a['attributes'][_0x1e51('0x34')]?_0x5a9d2a[_0x1e51('0x32')]:_0x577b19[_0x1e51('0x35')];if(!_0x175aa0[_0x1e51('0x2f')][_0x1e51('0x36')](_0x1e51('0x52'))){_0x5a9d2a[_0x1e51('0x1d')]=qs[_0x1e51('0x1d')](_0x175aa0[_0x1e51('0x2f')][_0x1e51('0x1d')]);_0x5a9d2a['offset']=qs[_0x1e51('0x1c')](_0x175aa0[_0x1e51('0x2f')][_0x1e51('0x1c')]);}_0x5a9d2a[_0x1e51('0x37')]=qs[_0x1e51('0x38')](_0x175aa0[_0x1e51('0x2f')]['sort']);_0x5a9d2a['where']=qs[_0x1e51('0x39')](_[_0x1e51('0x3a')](_0x175aa0[_0x1e51('0x2f')],_0x577b19[_0x1e51('0x39')]));if(_0x175aa0['query']['filter']){_0x5a9d2a['where']=_[_0x1e51('0x3d')](_0x5a9d2a[_0x1e51('0x3c')],{'$or':_[_0x1e51('0x29')](_0x5a9d2a[_0x1e51('0x32')],function(_0x184665){var _0x5c68b1={};_0x5c68b1[_0x184665]={'$like':'%'+_0x175aa0[_0x1e51('0x2f')][_0x1e51('0x3b')]+'%'};return _0x5c68b1;})});}_0x5a9d2a[_0x1e51('0x3c')]=_['merge'](_0x5a9d2a[_0x1e51('0x3c')],{'mailboxuser':_0x2e78e7[_0x1e51('0x53')]});_0x5a9d2a=_[_0x1e51('0x3d')]({},_0x5a9d2a,_0x175aa0['options']);return db[_0x1e51('0x51')][_0x1e51('0x54')](_0x5a9d2a)['then'](respondWithFilteredResult(_0x30ee67,_0x5a9d2a));})['catch'](handleError(_0x30ee67,null));};
\ No newline at end of file
index 409e1a8..cc2ce73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5661=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','VoiceMail','voice_voicemail','mailbox','context','util'];(function(_0x888385,_0x9cdc66){var _0x22d5c2=function(_0x3b1599){while(--_0x3b1599){_0x888385['push'](_0x888385['shift']());}};_0x22d5c2(++_0x9cdc66);}(_0x5661,0x197));var _0x1566=function(_0x3dae40,_0x5ac8fb){_0x3dae40=_0x3dae40-0x0;var _0x4a3858=_0x5661[_0x3dae40];return _0x4a3858;};'use strict';var _=require('lodash');var util=require(_0x1566('0x0'));var logger=require(_0x1566('0x1'))(_0x1566('0x2'));var moment=require(_0x1566('0x3'));var BPromise=require('bluebird');var rp=require(_0x1566('0x4'));var fs=require('fs');var path=require(_0x1566('0x5'));var rimraf=require(_0x1566('0x6'));var config=require(_0x1566('0x7'));var attributes=require('./voiceMail.attributes');module['exports']=function(_0x50724a,_0x57154f){return _0x50724a['define'](_0x1566('0x8'),attributes,{'tableName':_0x1566('0x9'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':[_0x1566('0xa'),_0x1566('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc48c=['../../config/environment','exports','define','VoiceMail','voice_voicemail','mailbox_context','mailbox','context','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x28cf60,_0x2fe9d9){var _0x2b61e5=function(_0x28b6ba){while(--_0x28b6ba){_0x28cf60['push'](_0x28cf60['shift']());}};_0x2b61e5(++_0x2fe9d9);}(_0xc48c,0x158));var _0xcc48=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0xc48c[_0x15bc81];return _0x59440e;};'use strict';var _=require(_0xcc48('0x0'));var util=require(_0xcc48('0x1'));var logger=require(_0xcc48('0x2'))(_0xcc48('0x3'));var moment=require(_0xcc48('0x4'));var BPromise=require(_0xcc48('0x5'));var rp=require(_0xcc48('0x6'));var fs=require('fs');var path=require(_0xcc48('0x7'));var rimraf=require('rimraf');var config=require(_0xcc48('0x8'));var attributes=require('./voiceMail.attributes');module[_0xcc48('0x9')]=function(_0x147d03,_0x54d21a){return _0x147d03[_0xcc48('0xa')](_0xcc48('0xb'),attributes,{'tableName':_0xcc48('0xc'),'paranoid':![],'indexes':[{'name':_0xcc48('0xd'),'fields':[_0xcc48('0xe'),_0xcc48('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 3150b16..c7fdbbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd11=['info','result','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','then','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xfd11,0x1e5));var _0x1fd1=function(_0x53c256,_0x382a24){_0x53c256=_0x53c256-0x0;var _0x25feb6=_0xfd11[_0x53c256];return _0x25feb6;};'use strict';var _=require('lodash');var util=require(_0x1fd1('0x0'));var moment=require(_0x1fd1('0x1'));var BPromise=require(_0x1fd1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1fd1('0x3'));var db=require(_0x1fd1('0x4'))['db'];var utils=require(_0x1fd1('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x1fd1('0x6'));var jayson=require(_0x1fd1('0x7'));var client=jayson[_0x1fd1('0x8')][_0x1fd1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x49c3cb,_0x1eaf1e,_0x8d9ed8){return new BPromise(function(_0xb563e6,_0x5d53d5){return client['request'](_0x49c3cb,_0x8d9ed8)[_0x1fd1('0xa')](function(_0x311a30){logger['info'](_0x1fd1('0xb'),_0x1eaf1e,_0x1fd1('0xc'));logger[_0x1fd1('0xd')](_0x1fd1('0xe'),_0x1eaf1e,_0x1fd1('0xc'),JSON[_0x1fd1('0xf')](_0x311a30));if(_0x311a30[_0x1fd1('0x10')]){if(_0x311a30['error'][_0x1fd1('0x11')]===0x1f4){logger[_0x1fd1('0x10')](_0x1fd1('0xb'),_0x1eaf1e,_0x311a30[_0x1fd1('0x10')][_0x1fd1('0x12')]);return _0x5d53d5(_0x311a30[_0x1fd1('0x10')][_0x1fd1('0x12')]);}logger[_0x1fd1('0x10')](_0x1fd1('0xb'),_0x1eaf1e,_0x311a30[_0x1fd1('0x10')][_0x1fd1('0x12')]);return _0xb563e6(_0x311a30[_0x1fd1('0x10')]['message']);}else{logger[_0x1fd1('0x13')](_0x1fd1('0xb'),_0x1eaf1e,'request\x20sent');_0xb563e6(_0x311a30[_0x1fd1('0x14')][_0x1fd1('0x12')]);}})['catch'](function(_0x297eaf){logger[_0x1fd1('0x10')](_0x1fd1('0xb'),_0x1eaf1e,_0x297eaf);_0x5d53d5(_0x297eaf);});});}
\ No newline at end of file
+var _0xa3f7=['../../config/logger','../../config/environment','jayson/promise','client','then','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x2faddb,_0xc18b78){var _0x273c05=function(_0x1a3785){while(--_0x1a3785){_0x2faddb['push'](_0x2faddb['shift']());}};_0x273c05(++_0xc18b78);}(_0xa3f7,0xd5));var _0x7a3f=function(_0x516d32,_0x47449c){_0x516d32=_0x516d32-0x0;var _0x243fe2=_0xa3f7[_0x516d32];return _0x243fe2;};'use strict';var _=require(_0x7a3f('0x0'));var util=require(_0x7a3f('0x1'));var moment=require(_0x7a3f('0x2'));var BPromise=require(_0x7a3f('0x3'));var rs=require(_0x7a3f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7a3f('0x5'))['db'];var utils=require(_0x7a3f('0x6'));var logger=require(_0x7a3f('0x7'))('rpc');var config=require(_0x7a3f('0x8'));var jayson=require(_0x7a3f('0x9'));var client=jayson[_0x7a3f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x39106a,_0x50624f,_0x1740f1){return new BPromise(function(_0x4ce871,_0x5bffd5){return client['request'](_0x39106a,_0x1740f1)[_0x7a3f('0xb')](function(_0x316e21){logger['info'](_0x7a3f('0xc'),_0x50624f,_0x7a3f('0xd'));logger[_0x7a3f('0xe')](_0x7a3f('0xf'),_0x50624f,_0x7a3f('0xd'),JSON[_0x7a3f('0x10')](_0x316e21));if(_0x316e21[_0x7a3f('0x11')]){if(_0x316e21[_0x7a3f('0x11')]['code']===0x1f4){logger[_0x7a3f('0x11')](_0x7a3f('0xc'),_0x50624f,_0x316e21[_0x7a3f('0x11')][_0x7a3f('0x12')]);return _0x5bffd5(_0x316e21[_0x7a3f('0x11')][_0x7a3f('0x12')]);}logger[_0x7a3f('0x11')](_0x7a3f('0xc'),_0x50624f,_0x316e21['error'][_0x7a3f('0x12')]);return _0x4ce871(_0x316e21[_0x7a3f('0x11')]['message']);}else{logger['info'](_0x7a3f('0xc'),_0x50624f,_0x7a3f('0xd'));_0x4ce871(_0x316e21['result'][_0x7a3f('0x12')]);}})[_0x7a3f('0x13')](function(_0x519544){logger[_0x7a3f('0x11')](_0x7a3f('0xc'),_0x50624f,_0x519544);_0x5bffd5(_0x519544);});});}
\ No newline at end of file
index 98641b9..3802b65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cae=['../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index','create','/:id','update','delete','destroy','exports','multer','util','path','Router','fs-extra'];(function(_0x44da95,_0x4cc956){var _0x5d1db4=function(_0xe7c3da){while(--_0xe7c3da){_0x44da95['push'](_0x44da95['shift']());}};_0x5d1db4(++_0x4cc956);}(_0x5cae,0x160));var _0xe5ca=function(_0x43e2e4,_0x4ad3b4){_0x43e2e4=_0x43e2e4-0x0;var _0x1b71d0=_0x5cae[_0x43e2e4];return _0x1b71d0;};'use strict';var multer=require(_0xe5ca('0x0'));var util=require(_0xe5ca('0x1'));var path=require(_0xe5ca('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xe5ca('0x3')]();var fs_extra=require(_0xe5ca('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xe5ca('0x5'));var config=require(_0xe5ca('0x6'));var controller=require(_0xe5ca('0x7'));router[_0xe5ca('0x8')]('/',auth[_0xe5ca('0x9')](),controller[_0xe5ca('0xa')]);router[_0xe5ca('0x8')]('/:id',auth[_0xe5ca('0x9')](),controller['show']);router[_0xe5ca('0x8')]('/:id/download',auth[_0xe5ca('0x9')](),controller['download']);router['post']('/',auth[_0xe5ca('0x9')](),controller[_0xe5ca('0xb')]);router['put'](_0xe5ca('0xc'),auth[_0xe5ca('0x9')](),controller[_0xe5ca('0xd')]);router[_0xe5ca('0xe')](_0xe5ca('0xc'),auth[_0xe5ca('0x9')](),controller[_0xe5ca('0xf')]);module[_0xe5ca('0x10')]=router;
\ No newline at end of file
+var _0xb69a=['fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/download','download','post','create','put','update','destroy','multer','path','express','Router'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb69a,0x1b1));var _0xab69=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0xb69a[_0x164eca];return _0x2ce562;};'use strict';var multer=require(_0xab69('0x0'));var util=require('util');var path=require(_0xab69('0x1'));var timeout=require('connect-timeout');var express=require(_0xab69('0x2'));var router=express[_0xab69('0x3')]();var fs_extra=require(_0xab69('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xab69('0x5'));var config=require(_0xab69('0x6'));var controller=require('./voiceMailMessage.controller');router[_0xab69('0x7')]('/',auth[_0xab69('0x8')](),controller[_0xab69('0x9')]);router['get'](_0xab69('0xa'),auth[_0xab69('0x8')](),controller[_0xab69('0xb')]);router['get'](_0xab69('0xc'),auth[_0xab69('0x8')](),controller[_0xab69('0xd')]);router[_0xab69('0xe')]('/',auth[_0xab69('0x8')](),controller[_0xab69('0xf')]);router[_0xab69('0x10')](_0xab69('0xa'),auth[_0xab69('0x8')](),controller[_0xab69('0x11')]);router['delete'](_0xab69('0xa'),auth[_0xab69('0x8')](),controller[_0xab69('0x12')]);module['exports']=router;
\ No newline at end of file
index 5d6e110..9ddf9bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9f9=['sequelize','VIRTUAL','INTEGER','STRING','BLOB','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe9f9,0x1ea));var _0x9e9f=function(_0x68f044,_0x1bb7a8){_0x68f044=_0x68f044-0x0;var _0x5741eb=_0xe9f9[_0x68f044];return _0x5741eb;};'use strict';var Sequelize=require(_0x9e9f('0x0'));module['exports']={'name':{'type':Sequelize[_0x9e9f('0x1')],'get':function(_0x13d5b5){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize[_0x9e9f('0x2')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize['STRING'],'defaultValue':''},'context':{'type':Sequelize[_0x9e9f('0x3')],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize['STRING'],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize[_0x9e9f('0x3')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x9e9f('0x3')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x9e9f('0x3')],'defaultValue':''},'recording':{'type':Sequelize[_0x9e9f('0x4')]('long'),'defaultValue':null},'flag':{'type':Sequelize[_0x9e9f('0x3')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x9e9f('0x3')],'defaultValue':''},'stamp':{'type':'TIMESTAMP','defaultValue':Sequelize[_0x9e9f('0x5')](_0x9e9f('0x6'))}};
\ No newline at end of file
+var _0xb184=['getDataValue','INTEGER','STRING','BLOB','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL'];(function(_0x1e7517,_0x4b03c9){var _0x522f4c=function(_0x4b056b){while(--_0x4b056b){_0x1e7517['push'](_0x1e7517['shift']());}};_0x522f4c(++_0x4b03c9);}(_0xb184,0xa7));var _0x4b18=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb184[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x4b18('0x0'));module[_0x4b18('0x1')]={'name':{'type':Sequelize[_0x4b18('0x2')],'get':function(_0x4e1144){return this[_0x4b18('0x3')]('id');}},'msgnum':{'type':Sequelize[_0x4b18('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x4b18('0x5')],'defaultValue':''},'context':{'type':Sequelize['STRING'],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x4b18('0x5')],'defaultValue':''},'callerid':{'type':Sequelize[_0x4b18('0x5')],'defaultValue':''},'origtime':{'type':Sequelize[_0x4b18('0x5')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x4b18('0x5')],'defaultValue':''},'recording':{'type':Sequelize[_0x4b18('0x6')]('long'),'defaultValue':null},'flag':{'type':Sequelize[_0x4b18('0x5')],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0x4b18('0x7'),'defaultValue':Sequelize[_0x4b18('0x8')](_0x4b18('0x9'))}};
\ No newline at end of file
index 596665d..27bd52f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa534=['api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','apply','reject','update','then','destroy','error','stack','name','send','index','map','VoiceMailMessage','fieldName','type','key','differenceBy','query','keys','filters','intersection','model','attributes','fields','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','download','recording','msg_id','Sequelize','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','set','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x19d24c,_0x62bc50){var _0x2fae8d=function(_0x419856){while(--_0x419856){_0x19d24c['push'](_0x19d24c['shift']());}};_0x2fae8d(++_0x62bc50);}(_0xa534,0x92));var _0x4a53=function(_0x4a747d,_0x3b747f){_0x4a747d=_0x4a747d-0x0;var _0x3a5b5c=_0xa534[_0x4a747d];return _0x3a5b5c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4a53('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4a53('0x1'));var rp=require(_0x4a53('0x2'));var moment=require(_0x4a53('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x4a53('0x4'));var util=require('util');var path=require(_0x4a53('0x5'));var sox=require(_0x4a53('0x6'));var csv=require(_0x4a53('0x7'));var ejs=require(_0x4a53('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4a53('0x9'));var squel=require('squel');var crypto=require(_0x4a53('0xa'));var jsforce=require(_0x4a53('0xb'));var deskjs=require(_0x4a53('0xc'));var toCsv=require(_0x4a53('0x7'));var querystring=require(_0x4a53('0xd'));var Papa=require('papaparse');var Redis=require(_0x4a53('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x4a53('0xf'));var as=require(_0x4a53('0x10'));var hardwareService=require(_0x4a53('0x11'));var logger=require('../../config/logger')(_0x4a53('0x12'));var utils=require('../../config/utils');var config=require(_0x4a53('0x13'));var licenseUtil=require(_0x4a53('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x235038,_0x27652b){_0x27652b=_0x27652b||0xcc;return function(_0x3476ad){if(_0x3476ad){return _0x235038[_0x4a53('0x15')](_0x27652b);}return _0x235038[_0x4a53('0x16')](_0x27652b)[_0x4a53('0x17')]();};}function respondWithResult(_0x36e1d9,_0x5a42f3){_0x5a42f3=_0x5a42f3||0xc8;return function(_0x521208){if(_0x521208){return _0x36e1d9['status'](_0x5a42f3)[_0x4a53('0x18')](_0x521208);}};}function respondWithFilteredResult(_0x289911,_0x4b3f5f){return function(_0x199409){if(_0x199409){var _0x29d765=typeof _0x4b3f5f[_0x4a53('0x19')]==='undefined'&&typeof _0x4b3f5f[_0x4a53('0x1a')]===_0x4a53('0x1b');var _0x591353=_0x199409[_0x4a53('0x1c')];var _0x2dddbe=_0x29d765?0x0:_0x4b3f5f['offset'];var _0x3c00be=_0x29d765?_0x199409[_0x4a53('0x1c')]:_0x4b3f5f[_0x4a53('0x19')]+_0x4b3f5f[_0x4a53('0x1a')];var _0x500362;if(_0x3c00be>=_0x591353){_0x3c00be=_0x591353;_0x500362=0xc8;}else{_0x500362=0xce;}_0x289911['status'](_0x500362);return _0x289911['set']('Content-Range',_0x2dddbe+'-'+_0x3c00be+'/'+_0x591353)[_0x4a53('0x18')](_0x199409);}return null;};}function patchUpdates(_0x3cdb77){return function(_0x569bdc){try{jsonpatch[_0x4a53('0x1d')](_0x569bdc,_0x3cdb77,!![]);}catch(_0x2b42ee){return BPromise[_0x4a53('0x1e')](_0x2b42ee);}return _0x569bdc['save']();};}function saveUpdates(_0x1da20d,_0x39cdf8){return function(_0x332fea){if(_0x332fea){return _0x332fea[_0x4a53('0x1f')](_0x1da20d)[_0x4a53('0x20')](function(_0x3fd4ba){return _0x3fd4ba;});}return null;};}function removeEntity(_0x1ad2ae,_0x2c5b5f){return function(_0x2b5c9d){if(_0x2b5c9d){return _0x2b5c9d[_0x4a53('0x21')]()[_0x4a53('0x20')](function(){_0x1ad2ae['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xdb8330,_0x5d599a){return function(_0xa73f67){if(!_0xa73f67){_0xdb8330[_0x4a53('0x15')](0x194);}return _0xa73f67;};}function handleError(_0x15f2cf,_0x1cac2f){_0x1cac2f=_0x1cac2f||0x1f4;return function(_0x2db734){logger[_0x4a53('0x22')](_0x2db734[_0x4a53('0x23')]);if(_0x2db734[_0x4a53('0x24')]){delete _0x2db734[_0x4a53('0x24')];}_0x15f2cf[_0x4a53('0x16')](_0x1cac2f)[_0x4a53('0x25')](_0x2db734);};}exports[_0x4a53('0x26')]=function(_0xaec2c,_0x46790d){var _0x560749={},_0x19a73a={},_0x119ab1={'count':0x0,'rows':[]};var _0x33e9dc=_[_0x4a53('0x27')](db[_0x4a53('0x28')]['rawAttributes'],function(_0x204c45){return{'name':_0x204c45[_0x4a53('0x29')],'type':_0x204c45[_0x4a53('0x2a')][_0x4a53('0x2b')]};});_0x19a73a['model']=_[_0x4a53('0x2c')](_['map'](_0x33e9dc,_0x4a53('0x24')),['name']);_0x19a73a[_0x4a53('0x2d')]=_[_0x4a53('0x2e')](_0xaec2c[_0x4a53('0x2d')]);_0x19a73a[_0x4a53('0x2f')]=_[_0x4a53('0x30')](_0x19a73a[_0x4a53('0x31')],_0x19a73a[_0x4a53('0x2d')]);_0x560749[_0x4a53('0x32')]=_['intersection'](_0x19a73a[_0x4a53('0x31')],qs[_0x4a53('0x33')](_0xaec2c[_0x4a53('0x2d')][_0x4a53('0x33')]));_0x560749[_0x4a53('0x32')]=_0x560749[_0x4a53('0x32')]['length']?_0x560749[_0x4a53('0x32')]:_0x19a73a[_0x4a53('0x31')];if(!_0xaec2c[_0x4a53('0x2d')]['hasOwnProperty'](_0x4a53('0x34'))){_0x560749['limit']=qs[_0x4a53('0x1a')](_0xaec2c[_0x4a53('0x2d')][_0x4a53('0x1a')]);_0x560749['offset']=qs[_0x4a53('0x19')](_0xaec2c[_0x4a53('0x2d')][_0x4a53('0x19')]);}_0x560749['order']=qs[_0x4a53('0x35')](_0xaec2c[_0x4a53('0x2d')][_0x4a53('0x35')]);_0x560749[_0x4a53('0x36')]=qs[_0x4a53('0x2f')](_[_0x4a53('0x37')](_0xaec2c[_0x4a53('0x2d')],_0x19a73a[_0x4a53('0x2f')]),_0x33e9dc);if(_0xaec2c[_0x4a53('0x2d')]['filter']){_0x560749[_0x4a53('0x36')]=_[_0x4a53('0x38')](_0x560749[_0x4a53('0x36')],{'$or':_[_0x4a53('0x27')](_0x33e9dc,function(_0x704b30){if(_0x704b30[_0x4a53('0x2a')]!==_0x4a53('0x39')){var _0x3c75e9={};_0x3c75e9[_0x704b30[_0x4a53('0x24')]]={'$like':'%'+_0xaec2c[_0x4a53('0x2d')][_0x4a53('0x3a')]+'%'};return _0x3c75e9;}})});}_0x560749=_[_0x4a53('0x38')]({},_0x560749,_0xaec2c[_0x4a53('0x3b')]);var _0x290bed={'where':_0x560749[_0x4a53('0x36')]};return db[_0x4a53('0x28')]['count'](_0x290bed)[_0x4a53('0x20')](function(_0x5d628e){_0x119ab1['count']=_0x5d628e;if(_0xaec2c[_0x4a53('0x2d')][_0x4a53('0x3c')]){_0x560749[_0x4a53('0x3d')]=[{'all':!![]}];}return db['VoiceMailMessage'][_0x4a53('0x3e')](_0x560749);})[_0x4a53('0x20')](function(_0x4619f0){_0x119ab1[_0x4a53('0x3f')]=_0x4619f0;return _0x119ab1;})['then'](respondWithFilteredResult(_0x46790d,_0x560749))[_0x4a53('0x40')](handleError(_0x46790d,null));};exports[_0x4a53('0x41')]=function(_0x3fa5d8,_0x31e011){var _0x46886f={'raw':!![],'where':{'id':_0x3fa5d8[_0x4a53('0x42')]['id']}},_0x44142d={};_0x44142d[_0x4a53('0x31')]=_[_0x4a53('0x2e')](db[_0x4a53('0x28')][_0x4a53('0x43')]);_0x44142d[_0x4a53('0x2d')]=_['keys'](_0x3fa5d8[_0x4a53('0x2d')]);_0x44142d['filters']=_[_0x4a53('0x30')](_0x44142d[_0x4a53('0x31')],_0x44142d[_0x4a53('0x2d')]);_0x46886f[_0x4a53('0x32')]=_[_0x4a53('0x30')](_0x44142d[_0x4a53('0x31')],qs[_0x4a53('0x33')](_0x3fa5d8[_0x4a53('0x2d')][_0x4a53('0x33')]));_0x46886f[_0x4a53('0x32')]=_0x46886f[_0x4a53('0x32')]['length']?_0x46886f[_0x4a53('0x32')]:_0x44142d[_0x4a53('0x31')];if(_0x3fa5d8[_0x4a53('0x2d')]['includeAll']){_0x46886f[_0x4a53('0x3d')]=[{'all':!![]}];}_0x46886f=_['merge']({},_0x46886f,_0x3fa5d8['options']);return db[_0x4a53('0x28')][_0x4a53('0x44')](_0x46886f)[_0x4a53('0x20')](handleEntityNotFound(_0x31e011,null))[_0x4a53('0x20')](respondWithResult(_0x31e011,null))['catch'](handleError(_0x31e011,null));};exports['create']=function(_0x48a56,_0x1cb5ee){return db[_0x4a53('0x28')][_0x4a53('0x45')](_0x48a56[_0x4a53('0x46')],{})[_0x4a53('0x20')](respondWithResult(_0x1cb5ee,0xc9))[_0x4a53('0x40')](handleError(_0x1cb5ee,null));};exports[_0x4a53('0x1f')]=function(_0xff4522,_0x273161){if(_0xff4522[_0x4a53('0x46')]['id']){delete _0xff4522[_0x4a53('0x46')]['id'];}return db['VoiceMailMessage']['find']({'where':{'id':_0xff4522[_0x4a53('0x42')]['id']}})['then'](handleEntityNotFound(_0x273161,null))[_0x4a53('0x20')](saveUpdates(_0xff4522['body'],null))[_0x4a53('0x20')](respondWithResult(_0x273161,null))[_0x4a53('0x40')](handleError(_0x273161,null));};exports[_0x4a53('0x21')]=function(_0x29bae5,_0x19bb27){return db[_0x4a53('0x28')][_0x4a53('0x44')]({'where':{'id':_0x29bae5['params']['id']}})[_0x4a53('0x20')](handleEntityNotFound(_0x19bb27,null))[_0x4a53('0x20')](removeEntity(_0x19bb27,null))['catch'](handleError(_0x19bb27,null));};exports[_0x4a53('0x47')]=function(_0xfb4945,_0x31ef3b,_0x43b4ea){return db['VoiceMailMessage'][_0x4a53('0x44')]({'where':{'id':_0xfb4945['params']['id']},'attributes':['id',_0x4a53('0x48'),_0x4a53('0x49')]})[_0x4a53('0x20')](handleEntityNotFound(_0x31ef3b,null))[_0x4a53('0x20')](function(_0x55fa32){if(_0x55fa32){if(!_0x55fa32[_0x4a53('0x48')]){throw new db[(_0x4a53('0x4a'))]['ValidationError'](_0x4a53('0x4b'));}var _0x2d98ea={'Content-Type':_0x4a53('0x4c'),'Content-Disposition':_0x4a53('0x4d')};if(_0x55fa32['msg_id']){_0x2d98ea[_0x4a53('0x4e')]=_0x4a53('0x4f')+_0x55fa32[_0x4a53('0x49')]+_0x4a53('0x50');}_0x31ef3b[_0x4a53('0x51')](_0x2d98ea);return _0x31ef3b['send'](new Buffer(_0x55fa32[_0x4a53('0x48')]));}})['catch'](handleError(_0x31ef3b,null));};
\ No newline at end of file
+var _0x801f=['recording','msg_id','Sequelize','VoiceMailMessage\x20not\x20found','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','set','rimraf','zip-dir','moment','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','status','end','offset','undefined','limit','count','json','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','VoiceMailMessage','rawAttributes','type','key','differenceBy','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','params','merge','find','catch','body','download'];(function(_0x190bb7,_0x3fafc0){var _0x2d5edd=function(_0x52e356){while(--_0x52e356){_0x190bb7['push'](_0x190bb7['shift']());}};_0x2d5edd(++_0x3fafc0);}(_0x801f,0x1d7));var _0xf801=function(_0x17e73b,_0x237aba){_0x17e73b=_0x17e73b-0x0;var _0x14fdb7=_0x801f[_0x17e73b];return _0x14fdb7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf801('0x0'));var zipdir=require(_0xf801('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xf801('0x2'));var BPromise=require(_0xf801('0x3'));var Mustache=require(_0xf801('0x4'));var util=require('util');var path=require('path');var sox=require(_0xf801('0x5'));var csv=require(_0xf801('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf801('0x7'));var _=require(_0xf801('0x8'));var squel=require(_0xf801('0x9'));var crypto=require(_0xf801('0xa'));var jsforce=require(_0xf801('0xb'));var deskjs=require(_0xf801('0xc'));var toCsv=require(_0xf801('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf801('0xd'));var authService=require(_0xf801('0xe'));var qs=require(_0xf801('0xf'));var as=require(_0xf801('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf801('0x11'))(_0xf801('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xf801('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x10ca52,_0x298ec7){_0x298ec7=_0x298ec7||0xcc;return function(_0x2940e7){if(_0x2940e7){return _0x10ca52['sendStatus'](_0x298ec7);}return _0x10ca52[_0xf801('0x14')](_0x298ec7)[_0xf801('0x15')]();};}function respondWithResult(_0x45ba2f,_0x428f96){_0x428f96=_0x428f96||0xc8;return function(_0x2e0cc3){if(_0x2e0cc3){return _0x45ba2f[_0xf801('0x14')](_0x428f96)['json'](_0x2e0cc3);}};}function respondWithFilteredResult(_0x1f8ac8,_0x356037){return function(_0x49672a){if(_0x49672a){var _0x49e79f=typeof _0x356037[_0xf801('0x16')]===_0xf801('0x17')&&typeof _0x356037[_0xf801('0x18')]===_0xf801('0x17');var _0x549658=_0x49672a[_0xf801('0x19')];var _0x574340=_0x49e79f?0x0:_0x356037[_0xf801('0x16')];var _0x34d44c=_0x49e79f?_0x49672a[_0xf801('0x19')]:_0x356037[_0xf801('0x16')]+_0x356037[_0xf801('0x18')];var _0x5da705;if(_0x34d44c>=_0x549658){_0x34d44c=_0x549658;_0x5da705=0xc8;}else{_0x5da705=0xce;}_0x1f8ac8[_0xf801('0x14')](_0x5da705);return _0x1f8ac8['set']('Content-Range',_0x574340+'-'+_0x34d44c+'/'+_0x549658)[_0xf801('0x1a')](_0x49672a);}return null;};}function patchUpdates(_0x518172){return function(_0x39c84f){try{jsonpatch[_0xf801('0x1b')](_0x39c84f,_0x518172,!![]);}catch(_0x4030b1){return BPromise['reject'](_0x4030b1);}return _0x39c84f[_0xf801('0x1c')]();};}function saveUpdates(_0x58b282,_0x554fe6){return function(_0x35e736){if(_0x35e736){return _0x35e736[_0xf801('0x1d')](_0x58b282)[_0xf801('0x1e')](function(_0x313e45){return _0x313e45;});}return null;};}function removeEntity(_0x5062fd,_0x3e90bb){return function(_0x31af81){if(_0x31af81){return _0x31af81[_0xf801('0x1f')]()['then'](function(){_0x5062fd[_0xf801('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f6fee,_0x1136b3){return function(_0x15e1b6){if(!_0x15e1b6){_0x4f6fee[_0xf801('0x20')](0x194);}return _0x15e1b6;};}function handleError(_0x3f24a0,_0x139456){_0x139456=_0x139456||0x1f4;return function(_0x111f76){logger[_0xf801('0x21')](_0x111f76[_0xf801('0x22')]);if(_0x111f76[_0xf801('0x23')]){delete _0x111f76[_0xf801('0x23')];}_0x3f24a0['status'](_0x139456)[_0xf801('0x24')](_0x111f76);};}exports[_0xf801('0x25')]=function(_0x3cdc0e,_0x4bd628){var _0x3bcfef={},_0x4b65c1={},_0x1f7334={'count':0x0,'rows':[]};var _0x1fe178=_[_0xf801('0x26')](db[_0xf801('0x27')][_0xf801('0x28')],function(_0x21dc0b){return{'name':_0x21dc0b['fieldName'],'type':_0x21dc0b[_0xf801('0x29')][_0xf801('0x2a')]};});_0x4b65c1['model']=_[_0xf801('0x2b')](_['map'](_0x1fe178,_0xf801('0x23')),['name']);_0x4b65c1['query']=_[_0xf801('0x2c')](_0x3cdc0e[_0xf801('0x2d')]);_0x4b65c1[_0xf801('0x2e')]=_[_0xf801('0x2f')](_0x4b65c1[_0xf801('0x30')],_0x4b65c1[_0xf801('0x2d')]);_0x3bcfef[_0xf801('0x31')]=_[_0xf801('0x2f')](_0x4b65c1['model'],qs[_0xf801('0x32')](_0x3cdc0e[_0xf801('0x2d')][_0xf801('0x32')]));_0x3bcfef[_0xf801('0x31')]=_0x3bcfef['attributes'][_0xf801('0x33')]?_0x3bcfef[_0xf801('0x31')]:_0x4b65c1['model'];if(!_0x3cdc0e[_0xf801('0x2d')][_0xf801('0x34')]('nolimit')){_0x3bcfef[_0xf801('0x18')]=qs[_0xf801('0x18')](_0x3cdc0e[_0xf801('0x2d')][_0xf801('0x18')]);_0x3bcfef[_0xf801('0x16')]=qs[_0xf801('0x16')](_0x3cdc0e[_0xf801('0x2d')]['offset']);}_0x3bcfef[_0xf801('0x35')]=qs[_0xf801('0x36')](_0x3cdc0e[_0xf801('0x2d')]['sort']);_0x3bcfef[_0xf801('0x37')]=qs['filters'](_[_0xf801('0x38')](_0x3cdc0e[_0xf801('0x2d')],_0x4b65c1['filters']),_0x1fe178);if(_0x3cdc0e[_0xf801('0x2d')][_0xf801('0x39')]){_0x3bcfef['where']=_['merge'](_0x3bcfef[_0xf801('0x37')],{'$or':_[_0xf801('0x26')](_0x1fe178,function(_0x273bec){if(_0x273bec[_0xf801('0x29')]!==_0xf801('0x3a')){var _0x13f6e5={};_0x13f6e5[_0x273bec[_0xf801('0x23')]]={'$like':'%'+_0x3cdc0e[_0xf801('0x2d')][_0xf801('0x39')]+'%'};return _0x13f6e5;}})});}_0x3bcfef=_['merge']({},_0x3bcfef,_0x3cdc0e[_0xf801('0x3b')]);var _0x145a2e={'where':_0x3bcfef[_0xf801('0x37')]};return db[_0xf801('0x27')][_0xf801('0x19')](_0x145a2e)[_0xf801('0x1e')](function(_0x2d312d){_0x1f7334[_0xf801('0x19')]=_0x2d312d;if(_0x3cdc0e[_0xf801('0x2d')][_0xf801('0x3c')]){_0x3bcfef[_0xf801('0x3d')]=[{'all':!![]}];}return db[_0xf801('0x27')]['findAll'](_0x3bcfef);})[_0xf801('0x1e')](function(_0x34d362){_0x1f7334['rows']=_0x34d362;return _0x1f7334;})[_0xf801('0x1e')](respondWithFilteredResult(_0x4bd628,_0x3bcfef))['catch'](handleError(_0x4bd628,null));};exports['show']=function(_0x130af8,_0x59bcd2){var _0x172dc6={'raw':!![],'where':{'id':_0x130af8[_0xf801('0x3e')]['id']}},_0x1560a5={};_0x1560a5[_0xf801('0x30')]=_[_0xf801('0x2c')](db[_0xf801('0x27')][_0xf801('0x28')]);_0x1560a5[_0xf801('0x2d')]=_[_0xf801('0x2c')](_0x130af8[_0xf801('0x2d')]);_0x1560a5['filters']=_[_0xf801('0x2f')](_0x1560a5[_0xf801('0x30')],_0x1560a5[_0xf801('0x2d')]);_0x172dc6[_0xf801('0x31')]=_[_0xf801('0x2f')](_0x1560a5[_0xf801('0x30')],qs[_0xf801('0x32')](_0x130af8['query'][_0xf801('0x32')]));_0x172dc6['attributes']=_0x172dc6[_0xf801('0x31')][_0xf801('0x33')]?_0x172dc6[_0xf801('0x31')]:_0x1560a5[_0xf801('0x30')];if(_0x130af8[_0xf801('0x2d')][_0xf801('0x3c')]){_0x172dc6[_0xf801('0x3d')]=[{'all':!![]}];}_0x172dc6=_[_0xf801('0x3f')]({},_0x172dc6,_0x130af8[_0xf801('0x3b')]);return db[_0xf801('0x27')][_0xf801('0x40')](_0x172dc6)[_0xf801('0x1e')](handleEntityNotFound(_0x59bcd2,null))[_0xf801('0x1e')](respondWithResult(_0x59bcd2,null))[_0xf801('0x41')](handleError(_0x59bcd2,null));};exports['create']=function(_0x2a87f0,_0x107b34){return db[_0xf801('0x27')]['create'](_0x2a87f0[_0xf801('0x42')],{})[_0xf801('0x1e')](respondWithResult(_0x107b34,0xc9))[_0xf801('0x41')](handleError(_0x107b34,null));};exports['update']=function(_0x4718eb,_0x7285e8){if(_0x4718eb['body']['id']){delete _0x4718eb[_0xf801('0x42')]['id'];}return db[_0xf801('0x27')][_0xf801('0x40')]({'where':{'id':_0x4718eb[_0xf801('0x3e')]['id']}})[_0xf801('0x1e')](handleEntityNotFound(_0x7285e8,null))[_0xf801('0x1e')](saveUpdates(_0x4718eb[_0xf801('0x42')],null))[_0xf801('0x1e')](respondWithResult(_0x7285e8,null))[_0xf801('0x41')](handleError(_0x7285e8,null));};exports[_0xf801('0x1f')]=function(_0x4dba40,_0x1cde12){return db[_0xf801('0x27')][_0xf801('0x40')]({'where':{'id':_0x4dba40[_0xf801('0x3e')]['id']}})['then'](handleEntityNotFound(_0x1cde12,null))[_0xf801('0x1e')](removeEntity(_0x1cde12,null))[_0xf801('0x41')](handleError(_0x1cde12,null));};exports[_0xf801('0x43')]=function(_0x356c43,_0x5283ef,_0x7e6b13){return db[_0xf801('0x27')][_0xf801('0x40')]({'where':{'id':_0x356c43[_0xf801('0x3e')]['id']},'attributes':['id',_0xf801('0x44'),_0xf801('0x45')]})[_0xf801('0x1e')](handleEntityNotFound(_0x5283ef,null))[_0xf801('0x1e')](function(_0x125152){if(_0x125152){if(!_0x125152[_0xf801('0x44')]){throw new db[(_0xf801('0x46'))]['ValidationError'](_0xf801('0x47'));}var _0x177850={'Content-Type':'audio/wav','Content-Disposition':_0xf801('0x48')};if(_0x125152['msg_id']){_0x177850[_0xf801('0x49')]=_0xf801('0x4a')+_0x125152[_0xf801('0x45')]+_0xf801('0x4b');}_0x5283ef[_0xf801('0x4c')](_0x177850);return _0x5283ef['send'](new Buffer(_0x125152[_0xf801('0x44')]));}})[_0xf801('0x41')](handleError(_0x5283ef,null));};
\ No newline at end of file
index 5c8adcd..53ee2a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5d6=['dir','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceMailMessage.attributes','exports','voice_voicemail_messages'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0xc5d6,0x16d));var _0x6c5d=function(_0x5d8030,_0x36ef31){_0x5d8030=_0x5d8030-0x0;var _0x465a41=_0xc5d6[_0x5d8030];return _0x465a41;};'use strict';var _=require(_0x6c5d('0x0'));var util=require(_0x6c5d('0x1'));var logger=require(_0x6c5d('0x2'))('api');var moment=require(_0x6c5d('0x3'));var BPromise=require(_0x6c5d('0x4'));var rp=require(_0x6c5d('0x5'));var fs=require('fs');var path=require(_0x6c5d('0x6'));var rimraf=require(_0x6c5d('0x7'));var config=require(_0x6c5d('0x8'));var attributes=require(_0x6c5d('0x9'));module[_0x6c5d('0xa')]=function(_0x14dcfb,_0x3896fb){return _0x14dcfb['define']('VoiceMailMessage',attributes,{'tableName':_0x6c5d('0xb'),'paranoid':![],'indexes':[{'name':_0x6c5d('0xc'),'fields':[_0x6c5d('0xc')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x03e9=['../../config/environment','./voiceMailMessage.attributes','exports','define','dir','lodash','../../config/logger','moment','path','rimraf'];(function(_0x46a671,_0x758e9a){var _0x526d75=function(_0xde3640){while(--_0xde3640){_0x46a671['push'](_0x46a671['shift']());}};_0x526d75(++_0x758e9a);}(_0x03e9,0x91));var _0x903e=function(_0x2a4d97,_0x372510){_0x2a4d97=_0x2a4d97-0x0;var _0xaf5f70=_0x03e9[_0x2a4d97];return _0xaf5f70;};'use strict';var _=require(_0x903e('0x0'));var util=require('util');var logger=require(_0x903e('0x1'))('api');var moment=require(_0x903e('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x903e('0x3'));var rimraf=require(_0x903e('0x4'));var config=require(_0x903e('0x5'));var attributes=require(_0x903e('0x6'));module[_0x903e('0x7')]=function(_0x521321,_0xc2eea7){return _0x521321[_0x903e('0x8')]('VoiceMailMessage',attributes,{'tableName':'voice_voicemail_messages','paranoid':![],'indexes':[{'name':_0x903e('0x9'),'fields':[_0x903e('0x9')]}],'timestamps':![]});};
\ No newline at end of file
index 1d168fa..2dc3581 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xead6=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','debug','request\x20sent','error','code','VoiceMailMessage,\x20%s,\x20%s','message','info','result','catch','lodash'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xead6,0xdb));var _0x6ead=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xead6[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0x6ead('0x0'));var util=require('util');var moment=require(_0x6ead('0x1'));var BPromise=require(_0x6ead('0x2'));var rs=require(_0x6ead('0x3'));var fs=require('fs');var Redis=require(_0x6ead('0x4'));var db=require(_0x6ead('0x5'))['db'];var utils=require(_0x6ead('0x6'));var logger=require('../../config/logger')(_0x6ead('0x7'));var config=require(_0x6ead('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x6ead('0x9')][_0x6ead('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xcabd6c,_0x23eba5,_0x499687){return new BPromise(function(_0x4a5ecf,_0x430b3e){return client[_0x6ead('0xb')](_0xcabd6c,_0x499687)[_0x6ead('0xc')](function(_0x7172cb){logger['info']('VoiceMailMessage,\x20%s,\x20%s',_0x23eba5,'request\x20sent');logger[_0x6ead('0xd')]('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x23eba5,_0x6ead('0xe'),JSON['stringify'](_0x7172cb));if(_0x7172cb[_0x6ead('0xf')]){if(_0x7172cb[_0x6ead('0xf')][_0x6ead('0x10')]===0x1f4){logger[_0x6ead('0xf')](_0x6ead('0x11'),_0x23eba5,_0x7172cb[_0x6ead('0xf')][_0x6ead('0x12')]);return _0x430b3e(_0x7172cb[_0x6ead('0xf')][_0x6ead('0x12')]);}logger[_0x6ead('0xf')](_0x6ead('0x11'),_0x23eba5,_0x7172cb['error'][_0x6ead('0x12')]);return _0x4a5ecf(_0x7172cb[_0x6ead('0xf')]['message']);}else{logger[_0x6ead('0x13')](_0x6ead('0x11'),_0x23eba5,_0x6ead('0xe'));_0x4a5ecf(_0x7172cb[_0x6ead('0x14')][_0x6ead('0x12')]);}})[_0x6ead('0x15')](function(_0x18de9d){logger[_0x6ead('0xf')](_0x6ead('0x11'),_0x23eba5,_0x18de9d);_0x430b3e(_0x18de9d);});});}
\ No newline at end of file
+var _0x7824=['debug','stringify','error','code','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','VoiceMailMessage,\x20%s,\x20%s','request\x20sent'];(function(_0x294333,_0x10c59a){var _0x445f0e=function(_0x1edd8b){while(--_0x1edd8b){_0x294333['push'](_0x294333['shift']());}};_0x445f0e(++_0x10c59a);}(_0x7824,0x1a6));var _0x4782=function(_0xe39ced,_0x590c61){_0xe39ced=_0xe39ced-0x0;var _0x5eed69=_0x7824[_0xe39ced];return _0x5eed69;};'use strict';var _=require(_0x4782('0x0'));var util=require(_0x4782('0x1'));var moment=require('moment');var BPromise=require(_0x4782('0x2'));var rs=require(_0x4782('0x3'));var fs=require('fs');var Redis=require(_0x4782('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4782('0x5'));var logger=require(_0x4782('0x6'))(_0x4782('0x7'));var config=require(_0x4782('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x4782('0x9')][_0x4782('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf4e440,_0x36c0e7,_0x5c1c70){return new BPromise(function(_0x387d70,_0x2c3496){return client[_0x4782('0xb')](_0xf4e440,_0x5c1c70)[_0x4782('0xc')](function(_0x502357){logger['info'](_0x4782('0xd'),_0x36c0e7,_0x4782('0xe'));logger[_0x4782('0xf')]('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x36c0e7,'request\x20sent',JSON[_0x4782('0x10')](_0x502357));if(_0x502357['error']){if(_0x502357[_0x4782('0x11')][_0x4782('0x12')]===0x1f4){logger[_0x4782('0x11')]('VoiceMailMessage,\x20%s,\x20%s',_0x36c0e7,_0x502357[_0x4782('0x11')]['message']);return _0x2c3496(_0x502357[_0x4782('0x11')][_0x4782('0x13')]);}logger['error'](_0x4782('0xd'),_0x36c0e7,_0x502357[_0x4782('0x11')][_0x4782('0x13')]);return _0x387d70(_0x502357[_0x4782('0x11')][_0x4782('0x13')]);}else{logger[_0x4782('0x14')](_0x4782('0xd'),_0x36c0e7,_0x4782('0xe'));_0x387d70(_0x502357[_0x4782('0x15')][_0x4782('0x13')]);}})[_0x4782('0x16')](function(_0x5e8728){logger[_0x4782('0x11')](_0x4782('0xd'),_0x36c0e7,_0x5e8728);_0x2c3496(_0x5e8728);});});}
\ No newline at end of file
index fbe1d49..28206fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbed9=['getSounds','post','create','put','/:id','update','delete','/:id/sounds/:id2','removeSound','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceMusicOnHold.controller','isAuthenticated','get','show','/:id/sounds'];(function(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0xbed9,0xc2));var _0x9bed=function(_0x5bed33,_0x254573){_0x5bed33=_0x5bed33-0x0;var _0x48ffa4=_0xbed9[_0x5bed33];return _0x48ffa4;};'use strict';var multer=require(_0x9bed('0x0'));var util=require(_0x9bed('0x1'));var path=require(_0x9bed('0x2'));var timeout=require('connect-timeout');var express=require(_0x9bed('0x3'));var router=express[_0x9bed('0x4')]();var fs_extra=require(_0x9bed('0x5'));var auth=require(_0x9bed('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x9bed('0x7'));var controller=require(_0x9bed('0x8'));router['get']('/',auth[_0x9bed('0x9')](),controller['index']);router[_0x9bed('0xa')]('/:id',auth[_0x9bed('0x9')](),controller[_0x9bed('0xb')]);router[_0x9bed('0xa')](_0x9bed('0xc'),auth[_0x9bed('0x9')](),controller[_0x9bed('0xd')]);router[_0x9bed('0xe')]('/',auth['isAuthenticated'](),controller[_0x9bed('0xf')]);router[_0x9bed('0xe')]('/:id/sounds',auth[_0x9bed('0x9')](),controller['addSound']);router[_0x9bed('0x10')](_0x9bed('0x11'),auth[_0x9bed('0x9')](),controller[_0x9bed('0x12')]);router['delete'](_0x9bed('0x11'),auth[_0x9bed('0x9')](),controller['destroy']);router[_0x9bed('0x13')](_0x9bed('0x14'),auth[_0x9bed('0x9')](),controller[_0x9bed('0x15')]);module[_0x9bed('0x16')]=router;
\ No newline at end of file
+var _0x1ca2=['../../components/interaction/service','get','index','/:id','isAuthenticated','getSounds','post','/:id/sounds','addSound','put','update','delete','removeSound','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x119d5a,_0x19b457){var _0x15bff4=function(_0x1b7c78){while(--_0x1b7c78){_0x119d5a['push'](_0x119d5a['shift']());}};_0x15bff4(++_0x19b457);}(_0x1ca2,0x162));var _0x21ca=function(_0x1ee41b,_0x1874af){_0x1ee41b=_0x1ee41b-0x0;var _0x1f5200=_0x1ca2[_0x1ee41b];return _0x1f5200;};'use strict';var multer=require(_0x21ca('0x0'));var util=require(_0x21ca('0x1'));var path=require('path');var timeout=require(_0x21ca('0x2'));var express=require(_0x21ca('0x3'));var router=express['Router']();var fs_extra=require(_0x21ca('0x4'));var auth=require(_0x21ca('0x5'));var interaction=require(_0x21ca('0x6'));var config=require('../../config/environment');var controller=require('./voiceMusicOnHold.controller');router[_0x21ca('0x7')]('/',auth['isAuthenticated'](),controller[_0x21ca('0x8')]);router[_0x21ca('0x7')](_0x21ca('0x9'),auth[_0x21ca('0xa')](),controller['show']);router[_0x21ca('0x7')]('/:id/sounds',auth[_0x21ca('0xa')](),controller[_0x21ca('0xb')]);router[_0x21ca('0xc')]('/',auth[_0x21ca('0xa')](),controller['create']);router['post'](_0x21ca('0xd'),auth['isAuthenticated'](),controller[_0x21ca('0xe')]);router[_0x21ca('0xf')](_0x21ca('0x9'),auth[_0x21ca('0xa')](),controller[_0x21ca('0x10')]);router['delete'](_0x21ca('0x9'),auth['isAuthenticated'](),controller['destroy']);router[_0x21ca('0x11')]('/:id/sounds/:id2',auth[_0x21ca('0xa')](),controller[_0x21ca('0x12')]);module[_0x21ca('0x13')]=router;
\ No newline at end of file
index 40a647a..3b2f462 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7310=['STRING','TIMESTAMP','BOOLEAN','sequelize','exports','ENUM','files','quietmp3nb','quietmp3'];(function(_0x25bada,_0xf760bb){var _0x3b2e2a=function(_0x42a9c8){while(--_0x42a9c8){_0x25bada['push'](_0x25bada['shift']());}};_0x3b2e2a(++_0xf760bb);}(_0x7310,0xdb));var _0x0731=function(_0xfeb222,_0x1e8428){_0xfeb222=_0xfeb222-0x0;var _0x2026d3=_0x7310[_0xfeb222];return _0x2026d3;};'use strict';var Sequelize=require(_0x0731('0x0'));module[_0x0731('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'mode':{'type':Sequelize[_0x0731('0x2')]('custom',_0x0731('0x3'),'mp3nb',_0x0731('0x4'),_0x0731('0x5'),'mp3'),'allowNull':!![],'defaultValue':_0x0731('0x3')},'directory':{'type':Sequelize[_0x0731('0x6')],'allowNull':!![]},'application':{'type':Sequelize[_0x0731('0x6')],'allowNull':!![]},'digit':{'type':Sequelize[_0x0731('0x6')],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize[_0x0731('0x6')],'allowNull':!![]},'stamp':{'type':_0x0731('0x7')},'defaultEntry':{'type':Sequelize[_0x0731('0x8')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe3b6=['TIMESTAMP','BOOLEAN','sequelize','exports','STRING','name','ENUM','files','quietmp3nb','quietmp3'];(function(_0x59118b,_0x8770df){var _0x3eda8a=function(_0x49370a){while(--_0x49370a){_0x59118b['push'](_0x59118b['shift']());}};_0x3eda8a(++_0x8770df);}(_0xe3b6,0x110));var _0x6e3b=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xe3b6[_0xbca1b1];return _0x4e1686;};'use strict';var Sequelize=require(_0x6e3b('0x0'));module[_0x6e3b('0x1')]={'name':{'type':Sequelize[_0x6e3b('0x2')],'allowNull':![],'unique':_0x6e3b('0x3')},'mode':{'type':Sequelize[_0x6e3b('0x4')]('custom',_0x6e3b('0x5'),'mp3nb',_0x6e3b('0x6'),_0x6e3b('0x7'),'mp3'),'allowNull':!![],'defaultValue':_0x6e3b('0x5')},'directory':{'type':Sequelize[_0x6e3b('0x2')],'allowNull':!![]},'application':{'type':Sequelize[_0x6e3b('0x2')],'allowNull':!![]},'digit':{'type':Sequelize[_0x6e3b('0x2')],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize[_0x6e3b('0x2')],'allowNull':!![]},'stamp':{'type':_0x6e3b('0x8')},'defaultEntry':{'type':Sequelize[_0x6e3b('0x9')],'defaultValue':0x0}};
\ No newline at end of file
index d9dc88c..6f77622 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb286=['addSound','Sound','findOne','save_name','createdAt','server/files/sounds/converted','format','%s.%s','extname','converted_format','symlinkSync','ValidationError','removeSound','id2','getSounds','pick','nolimit','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','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','limit','count','set','Content-Range','apply','reject','update','get','UserProfileResource','destroy','then','error','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','key','query','filters','intersection','model','fields','length','attributes','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','keys','find','body','params','create','sequelize','transaction','files','join','root','server/files/moh','mode','mkdirSync','directory','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','MusicOnHolds','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','unlinkSync','rmdirSync','Sequelize','message'];(function(_0x56fbb6,_0x385dbb){var _0x200655=function(_0x4159a9){while(--_0x4159a9){_0x56fbb6['push'](_0x56fbb6['shift']());}};_0x200655(++_0x385dbb);}(_0xb286,0x105));var _0x6b28=function(_0x50973d,_0x3c0764){_0x50973d=_0x50973d-0x0;var _0x328618=_0xb286[_0x50973d];return _0x328618;};'use strict';var emlformat=require(_0x6b28('0x0'));var rimraf=require(_0x6b28('0x1'));var zipdir=require(_0x6b28('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6b28('0x3'));var moment=require(_0x6b28('0x4'));var BPromise=require(_0x6b28('0x5'));var Mustache=require(_0x6b28('0x6'));var util=require(_0x6b28('0x7'));var path=require(_0x6b28('0x8'));var sox=require(_0x6b28('0x9'));var csv=require('to-csv');var ejs=require(_0x6b28('0xa'));var fs=require('fs');var fs_extra=require(_0x6b28('0xb'));var _=require(_0x6b28('0xc'));var squel=require(_0x6b28('0xd'));var crypto=require('crypto');var jsforce=require(_0x6b28('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x6b28('0xf'));var querystring=require(_0x6b28('0x10'));var Papa=require(_0x6b28('0x11'));var Redis=require(_0x6b28('0x12'));var authService=require(_0x6b28('0x13'));var qs=require(_0x6b28('0x14'));var as=require(_0x6b28('0x15'));var hardwareService=require(_0x6b28('0x16'));var logger=require(_0x6b28('0x17'))(_0x6b28('0x18'));var utils=require(_0x6b28('0x19'));var config=require(_0x6b28('0x1a'));var licenseUtil=require(_0x6b28('0x1b'));var db=require(_0x6b28('0x1c'))['db'];function respondWithStatusCode(_0x3d892c,_0x3176ce){_0x3176ce=_0x3176ce||0xcc;return function(_0x444ce1){if(_0x444ce1){return _0x3d892c[_0x6b28('0x1d')](_0x3176ce);}return _0x3d892c[_0x6b28('0x1e')](_0x3176ce)[_0x6b28('0x1f')]();};}function respondWithResult(_0x55ed91,_0x88a880){_0x88a880=_0x88a880||0xc8;return function(_0xbea9a7){if(_0xbea9a7){return _0x55ed91[_0x6b28('0x1e')](_0x88a880)[_0x6b28('0x20')](_0xbea9a7);}};}function respondWithFilteredResult(_0x3f7ce2,_0x4fad63){return function(_0x5adbc5){if(_0x5adbc5){var _0x480fa9=typeof _0x4fad63[_0x6b28('0x21')]===_0x6b28('0x22')&&typeof _0x4fad63[_0x6b28('0x23')]===_0x6b28('0x22');var _0x31fb3f=_0x5adbc5[_0x6b28('0x24')];var _0x36a74d=_0x480fa9?0x0:_0x4fad63['offset'];var _0x3aa824=_0x480fa9?_0x5adbc5['count']:_0x4fad63[_0x6b28('0x21')]+_0x4fad63[_0x6b28('0x23')];var _0x329077;if(_0x3aa824>=_0x31fb3f){_0x3aa824=_0x31fb3f;_0x329077=0xc8;}else{_0x329077=0xce;}_0x3f7ce2[_0x6b28('0x1e')](_0x329077);return _0x3f7ce2[_0x6b28('0x25')](_0x6b28('0x26'),_0x36a74d+'-'+_0x3aa824+'/'+_0x31fb3f)[_0x6b28('0x20')](_0x5adbc5);}return null;};}function patchUpdates(_0x36dcf4){return function(_0x21dd4e){try{jsonpatch[_0x6b28('0x27')](_0x21dd4e,_0x36dcf4,!![]);}catch(_0x38174e){return BPromise[_0x6b28('0x28')](_0x38174e);}return _0x21dd4e['save']();};}function saveUpdates(_0x3589fd,_0x527a24){return function(_0x592296){if(_0x592296){return _0x592296[_0x6b28('0x29')](_0x3589fd)['then'](function(_0x7cc32){return _0x7cc32;});}return null;};}function removeEntity(_0x50e1a3,_0x56d38b){return function(_0x1a7a5f){if(_0x1a7a5f){return _0x1a7a5f['destroy']()['then'](function(){var _0x2d2d17=_0x1a7a5f[_0x6b28('0x2a')]({'plain':!![]});var _0x51bc04='MusicOnHolds';return db[_0x6b28('0x2b')][_0x6b28('0x2c')]({'where':{'type':_0x51bc04,'resourceId':_0x2d2d17['id']}})[_0x6b28('0x2d')](function(){return _0x1a7a5f;});})['then'](function(){_0x50e1a3[_0x6b28('0x1e')](0xcc)[_0x6b28('0x1f')]();});}};}function handleEntityNotFound(_0x52c656,_0x34da24){return function(_0x2edfa3){if(!_0x2edfa3){_0x52c656[_0x6b28('0x1d')](0x194);}return _0x2edfa3;};}function handleError(_0x3063bc,_0x28241d){_0x28241d=_0x28241d||0x1f4;return function(_0x43491a){logger[_0x6b28('0x2e')](_0x43491a[_0x6b28('0x2f')]);if(_0x43491a[_0x6b28('0x30')]){delete _0x43491a[_0x6b28('0x30')];}_0x3063bc[_0x6b28('0x1e')](_0x28241d)[_0x6b28('0x31')](_0x43491a);};}exports[_0x6b28('0x32')]=function(_0x29418d,_0x1bfae7){var _0x553b01={},_0x1d01ff={},_0x3e7f5e={'count':0x0,'rows':[]};var _0x4b5dea=_[_0x6b28('0x33')](db[_0x6b28('0x34')][_0x6b28('0x35')],function(_0x36d061){return{'name':_0x36d061[_0x6b28('0x36')],'type':_0x36d061['type'][_0x6b28('0x37')]};});_0x1d01ff['model']=_['map'](_0x4b5dea,_0x6b28('0x30'));_0x1d01ff[_0x6b28('0x38')]=_['keys'](_0x29418d[_0x6b28('0x38')]);_0x1d01ff[_0x6b28('0x39')]=_[_0x6b28('0x3a')](_0x1d01ff['model'],_0x1d01ff[_0x6b28('0x38')]);_0x553b01['attributes']=_[_0x6b28('0x3a')](_0x1d01ff[_0x6b28('0x3b')],qs[_0x6b28('0x3c')](_0x29418d[_0x6b28('0x38')][_0x6b28('0x3c')]));_0x553b01['attributes']=_0x553b01['attributes'][_0x6b28('0x3d')]?_0x553b01[_0x6b28('0x3e')]:_0x1d01ff[_0x6b28('0x3b')];if(!_0x29418d[_0x6b28('0x38')][_0x6b28('0x3f')]('nolimit')){_0x553b01['limit']=qs[_0x6b28('0x23')](_0x29418d['query']['limit']);_0x553b01[_0x6b28('0x21')]=qs[_0x6b28('0x21')](_0x29418d[_0x6b28('0x38')][_0x6b28('0x21')]);}_0x553b01[_0x6b28('0x40')]=qs[_0x6b28('0x41')](_0x29418d[_0x6b28('0x38')][_0x6b28('0x41')]);delete _0x29418d[_0x6b28('0x38')][_0x6b28('0x41')];_0x553b01[_0x6b28('0x42')]=qs[_0x6b28('0x39')](_['pick'](_0x29418d[_0x6b28('0x38')],_0x1d01ff[_0x6b28('0x39')]),_0x4b5dea);if(_0x29418d[_0x6b28('0x38')][_0x6b28('0x43')]){_0x553b01[_0x6b28('0x42')]=_[_0x6b28('0x44')](_0x553b01[_0x6b28('0x42')],{'$or':_[_0x6b28('0x33')](_0x4b5dea,function(_0x343153){if(_0x343153['type']!==_0x6b28('0x45')){var _0x930d61={};_0x930d61[_0x343153[_0x6b28('0x30')]]={'$like':'%'+_0x29418d[_0x6b28('0x38')][_0x6b28('0x43')]+'%'};return _0x930d61;}})});}_0x553b01=_[_0x6b28('0x44')]({},_0x553b01,_0x29418d[_0x6b28('0x46')]);var _0x551a3c={'where':_0x553b01[_0x6b28('0x42')]};return db[_0x6b28('0x34')][_0x6b28('0x24')](_0x551a3c)['then'](function(_0x229c56){_0x3e7f5e[_0x6b28('0x24')]=_0x229c56;if(_0x29418d['query'][_0x6b28('0x47')]){_0x553b01[_0x6b28('0x48')]=[{'all':!![]}];}return db[_0x6b28('0x34')][_0x6b28('0x49')](_0x553b01);})[_0x6b28('0x2d')](function(_0x537360){_0x3e7f5e[_0x6b28('0x4a')]=_0x537360;return _0x3e7f5e;})[_0x6b28('0x2d')](respondWithFilteredResult(_0x1bfae7,_0x553b01))[_0x6b28('0x4b')](handleError(_0x1bfae7,null));};exports[_0x6b28('0x4c')]=function(_0x56cf2f,_0x48cba0){var _0x5ec4b8={'raw':![],'where':{'id':_0x56cf2f['params']['id']}},_0x4d1ac5={};_0x4d1ac5['model']=_[_0x6b28('0x4d')](db['VoiceMusicOnHold'][_0x6b28('0x35')]);_0x4d1ac5[_0x6b28('0x38')]=_[_0x6b28('0x4d')](_0x56cf2f[_0x6b28('0x38')]);_0x4d1ac5['filters']=_[_0x6b28('0x3a')](_0x4d1ac5[_0x6b28('0x3b')],_0x4d1ac5[_0x6b28('0x38')]);_0x5ec4b8[_0x6b28('0x3e')]=_[_0x6b28('0x3a')](_0x4d1ac5[_0x6b28('0x3b')],qs[_0x6b28('0x3c')](_0x56cf2f[_0x6b28('0x38')][_0x6b28('0x3c')]));_0x5ec4b8['attributes']=_0x5ec4b8['attributes'][_0x6b28('0x3d')]?_0x5ec4b8[_0x6b28('0x3e')]:_0x4d1ac5[_0x6b28('0x3b')];if(_0x56cf2f['query'][_0x6b28('0x47')]){_0x5ec4b8[_0x6b28('0x48')]=[{'all':!![]}];}_0x5ec4b8=_['merge']({},_0x5ec4b8,_0x56cf2f[_0x6b28('0x46')]);return db[_0x6b28('0x34')][_0x6b28('0x4e')](_0x5ec4b8)[_0x6b28('0x2d')](handleEntityNotFound(_0x48cba0,null))[_0x6b28('0x2d')](respondWithResult(_0x48cba0,null))[_0x6b28('0x4b')](handleError(_0x48cba0,null));};exports['update']=function(_0x3c4c39,_0x12da35){if(_0x3c4c39['body']['id']){delete _0x3c4c39[_0x6b28('0x4f')]['id'];}return db[_0x6b28('0x34')][_0x6b28('0x4e')]({'where':{'id':_0x3c4c39[_0x6b28('0x50')]['id']}})[_0x6b28('0x2d')](handleEntityNotFound(_0x12da35,null))[_0x6b28('0x2d')](saveUpdates(_0x3c4c39['body'],null))['then'](respondWithResult(_0x12da35,null))['catch'](handleError(_0x12da35,null));};exports[_0x6b28('0x51')]=function(_0x51b239,_0x4b8079,_0x5560aa){return db[_0x6b28('0x52')][_0x6b28('0x53')](function(_0x3ad4a3){if(_0x51b239[_0x6b28('0x4f')]['mode']===_0x6b28('0x54')){_0x51b239['body']['directory']=path[_0x6b28('0x55')](config[_0x6b28('0x56')],_0x6b28('0x57'),_0x51b239['body']['name']);}return db[_0x6b28('0x34')][_0x6b28('0x51')](_0x51b239['body'],{'transaction':_0x3ad4a3})[_0x6b28('0x2d')](function(_0x3c18eb){if(_0x51b239[_0x6b28('0x4f')][_0x6b28('0x58')]===_0x6b28('0x54')){fs[_0x6b28('0x59')](_0x3c18eb[_0x6b28('0x5a')],parseInt(_0x6b28('0x5b'),0x8));}var _0x215ad8=_0x51b239[_0x6b28('0x5c')][_0x6b28('0x2a')]({'plain':!![]});if(!_0x215ad8)throw new Error(_0x6b28('0x5d'));if(_0x215ad8[_0x6b28('0x5e')]===_0x6b28('0x5c')){var _0xc6b56b=_0x3c18eb[_0x6b28('0x2a')]({'plain':!![]});return db[_0x6b28('0x5f')][_0x6b28('0x4e')]({'where':{'name':_0x6b28('0x60'),'userProfileId':_0x215ad8[_0x6b28('0x61')]},'raw':!![]})['then'](function(_0x150299){if(_0x150299&&_0x150299[_0x6b28('0x62')]===0x0){return db['UserProfileResource'][_0x6b28('0x51')]({'name':_0xc6b56b[_0x6b28('0x30')],'resourceId':_0xc6b56b['id'],'type':_0x150299[_0x6b28('0x30')],'sectionId':_0x150299['id']},{})[_0x6b28('0x2d')](function(){return _0x3c18eb;});}else{return _0x3c18eb;}})[_0x6b28('0x4b')](function(_0x4ae533){logger[_0x6b28('0x2e')](_0x6b28('0x63'),_0x4ae533);});}return _0x3c18eb;});})[_0x6b28('0x2d')](respondWithResult(_0x4b8079,0xc9))[_0x6b28('0x4b')](handleError(_0x4b8079,null));};exports[_0x6b28('0x2c')]=function(_0x41afa2,_0x1b8575,_0x5b2e33){var _0x3efa7f;return db[_0x6b28('0x34')]['find']({'where':{'id':_0x41afa2[_0x6b28('0x50')]['id']}})['then'](function(_0x1703d7){if(_0x1703d7){return db['sequelize'][_0x6b28('0x53')](function(_0x3d6ac5){return _0x1703d7[_0x6b28('0x2c')]({'transaction':_0x3d6ac5,'raw':!![]})[_0x6b28('0x2d')](function(_0x537894){if(_0x537894['directory']){fs[_0x6b28('0x64')](_0x537894[_0x6b28('0x5a')])['forEach'](function(_0x4175d3){fs[_0x6b28('0x65')](path[_0x6b28('0x55')](_0x537894[_0x6b28('0x5a')],_0x4175d3));});fs[_0x6b28('0x66')](_0x537894[_0x6b28('0x5a')]);}return _0x537894;});})[_0x6b28('0x4b')](function(_0xac5f16){throw new db[(_0x6b28('0x67'))]['ValidationError'](_0xac5f16[_0x6b28('0x68')]);});}})[_0x6b28('0x2d')](handleEntityNotFound(_0x1b8575,null))[_0x6b28('0x2d')](removeEntity(_0x1b8575,null))[_0x6b28('0x4b')](handleError(_0x1b8575,null));};exports['addSound']=function(_0x29bcbc,_0x817d13,_0x63af87){return db[_0x6b28('0x52')][_0x6b28('0x53')](function(_0x5bf50d){var _0x2fdfbb;return db['VoiceMusicOnHold'][_0x6b28('0x4e')]({'where':{'id':_0x29bcbc[_0x6b28('0x50')]['id']}})[_0x6b28('0x2d')](function(_0x22d9f5){if(_0x22d9f5){_0x2fdfbb=_0x22d9f5;return _0x22d9f5[_0x6b28('0x69')](_0x29bcbc['body']['id'],{'transaction':_0x5bf50d});}})[_0x6b28('0x2d')](function(_0x23b2e0){if(_0x23b2e0){return db[_0x6b28('0x6a')][_0x6b28('0x6b')]({'where':{'id':_0x29bcbc[_0x6b28('0x4f')]['id']},'attributes':['id','name',_0x6b28('0x6c'),'converted_format',_0x6b28('0x6d')],'raw':!![]});}})['then'](function(_0x5eafb3){if(_0x5eafb3){var _0x5f2eb1=path[_0x6b28('0x55')](config[_0x6b28('0x56')],_0x6b28('0x6e'),util[_0x6b28('0x6f')](_0x6b28('0x70'),path['basename'](_0x5eafb3[_0x6b28('0x6c')],path[_0x6b28('0x71')](_0x5eafb3[_0x6b28('0x6c')])),_0x5eafb3[_0x6b28('0x72')]));var _0xad0418=path[_0x6b28('0x55')](config['root'],_0x6b28('0x57'),_0x2fdfbb[_0x6b28('0x30')],util[_0x6b28('0x6f')](_0x6b28('0x70'),_0x5eafb3[_0x6b28('0x30')],_0x5eafb3[_0x6b28('0x72')]));fs[_0x6b28('0x73')](_0x5f2eb1,_0xad0418);return _0x5eafb3;}})[_0x6b28('0x4b')](function(_0x1c09df){throw new db['Sequelize'][(_0x6b28('0x74'))](_0x1c09df[_0x6b28('0x68')]);});})['then'](handleEntityNotFound(_0x817d13,null))[_0x6b28('0x2d')](respondWithResult(_0x817d13,0xc9))[_0x6b28('0x4b')](handleError(_0x817d13,null));};exports['removeSound']=function(_0x36d574,_0xe5e6b6,_0x50d9f4){return db[_0x6b28('0x52')][_0x6b28('0x53')](function(_0x3bcc08){var _0xa6bf5a;return db[_0x6b28('0x34')][_0x6b28('0x6b')]({'where':{'id':_0x36d574[_0x6b28('0x50')]['id']}})[_0x6b28('0x2d')](handleEntityNotFound(_0xe5e6b6,null))[_0x6b28('0x2d')](function(_0x690f77){if(_0x690f77){_0xa6bf5a=_0x690f77;return _0x690f77[_0x6b28('0x75')](_0x36d574[_0x6b28('0x50')]['id2']);}})[_0x6b28('0x2d')](function(_0x2f6f4b){if(_0x2f6f4b){return db[_0x6b28('0x6a')]['findOne']({'where':{'id':_0x36d574[_0x6b28('0x50')][_0x6b28('0x76')]},'attributes':['id',_0x6b28('0x30'),_0x6b28('0x6c'),_0x6b28('0x72'),_0x6b28('0x6d')],'raw':!![]});}})[_0x6b28('0x2d')](function(_0x4abad2){if(_0x4abad2){fs['unlinkSync'](path[_0x6b28('0x55')](_0xa6bf5a['directory'],util[_0x6b28('0x6f')](_0x6b28('0x70'),_0x4abad2['name'],_0x4abad2[_0x6b28('0x72')])));return _0x4abad2;}})[_0x6b28('0x4b')](function(_0x5758f0){throw new db[(_0x6b28('0x67'))]['ValidationError'](_0x5758f0[_0x6b28('0x68')]);});})[_0x6b28('0x2d')](handleEntityNotFound(_0xe5e6b6,null))['then'](respondWithStatusCode(_0xe5e6b6,0xcc))[_0x6b28('0x4b')](handleError(_0xe5e6b6,null));};exports[_0x6b28('0x77')]=function(_0x15d581,_0x48987c,_0x27636c){var _0x5c47e1={};var _0x577b0d={};var _0x1b1231;var _0x57194b;return db[_0x6b28('0x34')][_0x6b28('0x6b')]({'where':{'id':_0x15d581[_0x6b28('0x50')]['id']}})[_0x6b28('0x2d')](handleEntityNotFound(_0x48987c,null))['then'](function(_0x25c51f){if(_0x25c51f){_0x1b1231=_0x25c51f;_0x577b0d['model']=_[_0x6b28('0x4d')](db[_0x6b28('0x6a')][_0x6b28('0x35')]);_0x577b0d[_0x6b28('0x38')]=_[_0x6b28('0x4d')](_0x15d581[_0x6b28('0x38')]);_0x577b0d[_0x6b28('0x39')]=_['intersection'](_0x577b0d[_0x6b28('0x3b')],_0x577b0d[_0x6b28('0x38')]);_0x5c47e1['attributes']=_[_0x6b28('0x3a')](_0x577b0d[_0x6b28('0x3b')],qs['fields'](_0x15d581[_0x6b28('0x38')][_0x6b28('0x3c')]));_0x5c47e1['attributes']=_0x5c47e1[_0x6b28('0x3e')][_0x6b28('0x3d')]?_0x5c47e1['attributes']:_0x577b0d[_0x6b28('0x3b')];_0x5c47e1[_0x6b28('0x40')]=qs[_0x6b28('0x41')](_0x15d581[_0x6b28('0x38')][_0x6b28('0x41')]);_0x5c47e1[_0x6b28('0x42')]=qs[_0x6b28('0x39')](_[_0x6b28('0x78')](_0x15d581['query'],_0x577b0d[_0x6b28('0x39')]));if(_0x15d581['query'][_0x6b28('0x43')]){_0x5c47e1['where']=_[_0x6b28('0x44')](_0x5c47e1['where'],{'$or':_['map'](_0x5c47e1['attributes'],function(_0x491233){var _0x5cc114={};_0x5cc114[_0x491233]={'$like':'%'+_0x15d581[_0x6b28('0x38')][_0x6b28('0x43')]+'%'};return _0x5cc114;})});}_0x5c47e1=_[_0x6b28('0x44')]({},_0x5c47e1,_0x15d581[_0x6b28('0x46')]);return _0x1b1231[_0x6b28('0x77')](_0x5c47e1);}})[_0x6b28('0x2d')](function(_0x6efef4){if(_0x6efef4){_0x57194b=_0x6efef4[_0x6b28('0x3d')];if(!_0x15d581[_0x6b28('0x38')][_0x6b28('0x3f')](_0x6b28('0x79'))){_0x5c47e1[_0x6b28('0x23')]=qs[_0x6b28('0x23')](_0x15d581[_0x6b28('0x38')][_0x6b28('0x23')]);_0x5c47e1['offset']=qs[_0x6b28('0x21')](_0x15d581['query'][_0x6b28('0x21')]);}return _0x1b1231[_0x6b28('0x77')](_0x5c47e1);}})[_0x6b28('0x2d')](function(_0x156c79){if(_0x156c79){return _0x156c79?{'count':_0x57194b,'rows':_0x156c79}:null;}})[_0x6b28('0x2d')](respondWithResult(_0x48987c,null))[_0x6b28('0x4b')](handleError(_0x48987c,null));};
\ No newline at end of file
+var _0x2401=['options','find','body','sequelize','transaction','mode','files','join','root','server/files/moh','create','mkdirSync','directory','0777','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','MusicOnHolds','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','forEach','rmdirSync','Sequelize','ValidationError','message','addSound','Sound','findOne','save_name','converted_format','createdAt','server/files/sounds/converted','%s.%s','extname','symlinkSync','removeSound','id2','unlinkSync','getSounds','order','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','apply','save','then','destroy','sendStatus','error','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','filter','includeAll','include','findAll','rows','catch','show','params','length'];(function(_0x47fd36,_0x41535d){var _0x21a0fc=function(_0x44c07c){while(--_0x44c07c){_0x47fd36['push'](_0x47fd36['shift']());}};_0x21a0fc(++_0x41535d);}(_0x2401,0x9d));var _0x1240=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2401[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1240('0x0'));var zipdir=require(_0x1240('0x1'));var jsonpatch=require(_0x1240('0x2'));var rp=require(_0x1240('0x3'));var moment=require(_0x1240('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1240('0x5'));var util=require(_0x1240('0x6'));var path=require('path');var sox=require(_0x1240('0x7'));var csv=require('to-csv');var ejs=require(_0x1240('0x8'));var fs=require('fs');var fs_extra=require(_0x1240('0x9'));var _=require(_0x1240('0xa'));var squel=require('squel');var crypto=require(_0x1240('0xb'));var jsforce=require(_0x1240('0xc'));var deskjs=require(_0x1240('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1240('0xe'));var Redis=require(_0x1240('0xf'));var authService=require(_0x1240('0x10'));var qs=require(_0x1240('0x11'));var as=require(_0x1240('0x12'));var hardwareService=require(_0x1240('0x13'));var logger=require(_0x1240('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x1240('0x15'));var licenseUtil=require(_0x1240('0x16'));var db=require(_0x1240('0x17'))['db'];function respondWithStatusCode(_0x52afa9,_0x1cc93e){_0x1cc93e=_0x1cc93e||0xcc;return function(_0x1e6811){if(_0x1e6811){return _0x52afa9['sendStatus'](_0x1cc93e);}return _0x52afa9[_0x1240('0x18')](_0x1cc93e)[_0x1240('0x19')]();};}function respondWithResult(_0x1c41cf,_0x2310a1){_0x2310a1=_0x2310a1||0xc8;return function(_0x25b149){if(_0x25b149){return _0x1c41cf['status'](_0x2310a1)[_0x1240('0x1a')](_0x25b149);}};}function respondWithFilteredResult(_0x48583f,_0x5e65b2){return function(_0x453c58){if(_0x453c58){var _0x8f4afb=typeof _0x5e65b2['offset']===_0x1240('0x1b')&&typeof _0x5e65b2[_0x1240('0x1c')]==='undefined';var _0x4e3f0f=_0x453c58[_0x1240('0x1d')];var _0x2fc557=_0x8f4afb?0x0:_0x5e65b2[_0x1240('0x1e')];var _0x41bb55=_0x8f4afb?_0x453c58[_0x1240('0x1d')]:_0x5e65b2[_0x1240('0x1e')]+_0x5e65b2[_0x1240('0x1c')];var _0x38a2b3;if(_0x41bb55>=_0x4e3f0f){_0x41bb55=_0x4e3f0f;_0x38a2b3=0xc8;}else{_0x38a2b3=0xce;}_0x48583f['status'](_0x38a2b3);return _0x48583f[_0x1240('0x1f')]('Content-Range',_0x2fc557+'-'+_0x41bb55+'/'+_0x4e3f0f)['json'](_0x453c58);}return null;};}function patchUpdates(_0x4f21f1){return function(_0x1df6dd){try{jsonpatch[_0x1240('0x20')](_0x1df6dd,_0x4f21f1,!![]);}catch(_0x11f917){return BPromise['reject'](_0x11f917);}return _0x1df6dd[_0x1240('0x21')]();};}function saveUpdates(_0xa414de,_0x3622b9){return function(_0x50d8ba){if(_0x50d8ba){return _0x50d8ba['update'](_0xa414de)[_0x1240('0x22')](function(_0x4b52f1){return _0x4b52f1;});}return null;};}function removeEntity(_0x5326ce,_0x4a3144){return function(_0x8eb795){if(_0x8eb795){return _0x8eb795['destroy']()['then'](function(){var _0x165a24=_0x8eb795['get']({'plain':!![]});var _0x3fe9b8='MusicOnHolds';return db['UserProfileResource'][_0x1240('0x23')]({'where':{'type':_0x3fe9b8,'resourceId':_0x165a24['id']}})['then'](function(){return _0x8eb795;});})[_0x1240('0x22')](function(){_0x5326ce[_0x1240('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2130bc,_0x4544e0){return function(_0x705bb4){if(!_0x705bb4){_0x2130bc[_0x1240('0x24')](0x194);}return _0x705bb4;};}function handleError(_0x5dde02,_0x4ba3ff){_0x4ba3ff=_0x4ba3ff||0x1f4;return function(_0x91b2d8){logger[_0x1240('0x25')](_0x91b2d8[_0x1240('0x26')]);if(_0x91b2d8[_0x1240('0x27')]){delete _0x91b2d8[_0x1240('0x27')];}_0x5dde02[_0x1240('0x18')](_0x4ba3ff)[_0x1240('0x28')](_0x91b2d8);};}exports[_0x1240('0x29')]=function(_0x52f718,_0x3252ff){var _0x5a1623={},_0x44be80={},_0x1b23c2={'count':0x0,'rows':[]};var _0x3c5824=_[_0x1240('0x2a')](db[_0x1240('0x2b')][_0x1240('0x2c')],function(_0xce547e){return{'name':_0xce547e[_0x1240('0x2d')],'type':_0xce547e[_0x1240('0x2e')]['key']};});_0x44be80[_0x1240('0x2f')]=_[_0x1240('0x2a')](_0x3c5824,'name');_0x44be80[_0x1240('0x30')]=_[_0x1240('0x31')](_0x52f718['query']);_0x44be80[_0x1240('0x32')]=_[_0x1240('0x33')](_0x44be80['model'],_0x44be80[_0x1240('0x30')]);_0x5a1623[_0x1240('0x34')]=_[_0x1240('0x33')](_0x44be80[_0x1240('0x2f')],qs[_0x1240('0x35')](_0x52f718[_0x1240('0x30')][_0x1240('0x35')]));_0x5a1623[_0x1240('0x34')]=_0x5a1623['attributes']['length']?_0x5a1623[_0x1240('0x34')]:_0x44be80[_0x1240('0x2f')];if(!_0x52f718[_0x1240('0x30')][_0x1240('0x36')](_0x1240('0x37'))){_0x5a1623[_0x1240('0x1c')]=qs[_0x1240('0x1c')](_0x52f718[_0x1240('0x30')][_0x1240('0x1c')]);_0x5a1623[_0x1240('0x1e')]=qs['offset'](_0x52f718['query']['offset']);}_0x5a1623['order']=qs[_0x1240('0x38')](_0x52f718['query']['sort']);delete _0x52f718['query']['sort'];_0x5a1623[_0x1240('0x39')]=qs[_0x1240('0x32')](_[_0x1240('0x3a')](_0x52f718[_0x1240('0x30')],_0x44be80[_0x1240('0x32')]),_0x3c5824);if(_0x52f718[_0x1240('0x30')]['filter']){_0x5a1623['where']=_[_0x1240('0x3b')](_0x5a1623[_0x1240('0x39')],{'$or':_[_0x1240('0x2a')](_0x3c5824,function(_0x383b84){if(_0x383b84[_0x1240('0x2e')]!=='VIRTUAL'){var _0x532486={};_0x532486[_0x383b84[_0x1240('0x27')]]={'$like':'%'+_0x52f718[_0x1240('0x30')][_0x1240('0x3c')]+'%'};return _0x532486;}})});}_0x5a1623=_[_0x1240('0x3b')]({},_0x5a1623,_0x52f718['options']);var _0x15d087={'where':_0x5a1623[_0x1240('0x39')]};return db[_0x1240('0x2b')]['count'](_0x15d087)[_0x1240('0x22')](function(_0x3c5ec4){_0x1b23c2[_0x1240('0x1d')]=_0x3c5ec4;if(_0x52f718[_0x1240('0x30')][_0x1240('0x3d')]){_0x5a1623[_0x1240('0x3e')]=[{'all':!![]}];}return db[_0x1240('0x2b')][_0x1240('0x3f')](_0x5a1623);})['then'](function(_0x575212){_0x1b23c2[_0x1240('0x40')]=_0x575212;return _0x1b23c2;})['then'](respondWithFilteredResult(_0x3252ff,_0x5a1623))[_0x1240('0x41')](handleError(_0x3252ff,null));};exports[_0x1240('0x42')]=function(_0x1f6265,_0x5ebc75){var _0x4e6bb8={'raw':![],'where':{'id':_0x1f6265[_0x1240('0x43')]['id']}},_0x5efcbc={};_0x5efcbc[_0x1240('0x2f')]=_['keys'](db[_0x1240('0x2b')][_0x1240('0x2c')]);_0x5efcbc['query']=_['keys'](_0x1f6265[_0x1240('0x30')]);_0x5efcbc[_0x1240('0x32')]=_[_0x1240('0x33')](_0x5efcbc[_0x1240('0x2f')],_0x5efcbc[_0x1240('0x30')]);_0x4e6bb8['attributes']=_['intersection'](_0x5efcbc['model'],qs[_0x1240('0x35')](_0x1f6265[_0x1240('0x30')][_0x1240('0x35')]));_0x4e6bb8[_0x1240('0x34')]=_0x4e6bb8[_0x1240('0x34')][_0x1240('0x44')]?_0x4e6bb8[_0x1240('0x34')]:_0x5efcbc['model'];if(_0x1f6265[_0x1240('0x30')][_0x1240('0x3d')]){_0x4e6bb8[_0x1240('0x3e')]=[{'all':!![]}];}_0x4e6bb8=_[_0x1240('0x3b')]({},_0x4e6bb8,_0x1f6265[_0x1240('0x45')]);return db[_0x1240('0x2b')][_0x1240('0x46')](_0x4e6bb8)['then'](handleEntityNotFound(_0x5ebc75,null))[_0x1240('0x22')](respondWithResult(_0x5ebc75,null))[_0x1240('0x41')](handleError(_0x5ebc75,null));};exports['update']=function(_0x35fdbe,_0x10cfb8){if(_0x35fdbe['body']['id']){delete _0x35fdbe[_0x1240('0x47')]['id'];}return db[_0x1240('0x2b')][_0x1240('0x46')]({'where':{'id':_0x35fdbe[_0x1240('0x43')]['id']}})[_0x1240('0x22')](handleEntityNotFound(_0x10cfb8,null))[_0x1240('0x22')](saveUpdates(_0x35fdbe[_0x1240('0x47')],null))[_0x1240('0x22')](respondWithResult(_0x10cfb8,null))[_0x1240('0x41')](handleError(_0x10cfb8,null));};exports['create']=function(_0x5c420c,_0x4c0933,_0x328175){return db[_0x1240('0x48')][_0x1240('0x49')](function(_0x11e249){if(_0x5c420c[_0x1240('0x47')][_0x1240('0x4a')]===_0x1240('0x4b')){_0x5c420c[_0x1240('0x47')]['directory']=path[_0x1240('0x4c')](config[_0x1240('0x4d')],_0x1240('0x4e'),_0x5c420c[_0x1240('0x47')]['name']);}return db['VoiceMusicOnHold'][_0x1240('0x4f')](_0x5c420c['body'],{'transaction':_0x11e249})[_0x1240('0x22')](function(_0xd306a9){if(_0x5c420c[_0x1240('0x47')]['mode']===_0x1240('0x4b')){fs[_0x1240('0x50')](_0xd306a9[_0x1240('0x51')],parseInt(_0x1240('0x52'),0x8));}var _0x561f6b=_0x5c420c['user'][_0x1240('0x53')]({'plain':!![]});if(!_0x561f6b)throw new Error(_0x1240('0x54'));if(_0x561f6b[_0x1240('0x55')]===_0x1240('0x56')){var _0x4ad6c1=_0xd306a9[_0x1240('0x53')]({'plain':!![]});return db[_0x1240('0x57')][_0x1240('0x46')]({'where':{'name':_0x1240('0x58'),'userProfileId':_0x561f6b['userProfileId']},'raw':!![]})['then'](function(_0x4e028f){if(_0x4e028f&&_0x4e028f[_0x1240('0x59')]===0x0){return db[_0x1240('0x5a')]['create']({'name':_0x4ad6c1[_0x1240('0x27')],'resourceId':_0x4ad6c1['id'],'type':_0x4e028f['name'],'sectionId':_0x4e028f['id']},{})[_0x1240('0x22')](function(){return _0xd306a9;});}else{return _0xd306a9;}})[_0x1240('0x41')](function(_0x32052b){logger[_0x1240('0x25')](_0x1240('0x5b'),_0x32052b);});}return _0xd306a9;});})[_0x1240('0x22')](respondWithResult(_0x4c0933,0xc9))[_0x1240('0x41')](handleError(_0x4c0933,null));};exports['destroy']=function(_0x1add74,_0x4d7221,_0x1db83e){var _0x29e677;return db[_0x1240('0x2b')][_0x1240('0x46')]({'where':{'id':_0x1add74[_0x1240('0x43')]['id']}})['then'](function(_0x33cc26){if(_0x33cc26){return db[_0x1240('0x48')][_0x1240('0x49')](function(_0x26e34b){return _0x33cc26[_0x1240('0x23')]({'transaction':_0x26e34b,'raw':!![]})[_0x1240('0x22')](function(_0x560c64){if(_0x560c64[_0x1240('0x51')]){fs[_0x1240('0x5c')](_0x560c64[_0x1240('0x51')])[_0x1240('0x5d')](function(_0x399af6){fs['unlinkSync'](path[_0x1240('0x4c')](_0x560c64[_0x1240('0x51')],_0x399af6));});fs[_0x1240('0x5e')](_0x560c64['directory']);}return _0x560c64;});})[_0x1240('0x41')](function(_0x543449){throw new db[(_0x1240('0x5f'))][(_0x1240('0x60'))](_0x543449[_0x1240('0x61')]);});}})['then'](handleEntityNotFound(_0x4d7221,null))[_0x1240('0x22')](removeEntity(_0x4d7221,null))[_0x1240('0x41')](handleError(_0x4d7221,null));};exports[_0x1240('0x62')]=function(_0x17f5ad,_0xa60275,_0x2c9017){return db[_0x1240('0x48')]['transaction'](function(_0x114cbf){var _0x2e06d6;return db['VoiceMusicOnHold'][_0x1240('0x46')]({'where':{'id':_0x17f5ad[_0x1240('0x43')]['id']}})[_0x1240('0x22')](function(_0x22a964){if(_0x22a964){_0x2e06d6=_0x22a964;return _0x22a964[_0x1240('0x62')](_0x17f5ad['body']['id'],{'transaction':_0x114cbf});}})[_0x1240('0x22')](function(_0x392dab){if(_0x392dab){return db[_0x1240('0x63')][_0x1240('0x64')]({'where':{'id':_0x17f5ad['body']['id']},'attributes':['id',_0x1240('0x27'),_0x1240('0x65'),_0x1240('0x66'),_0x1240('0x67')],'raw':!![]});}})[_0x1240('0x22')](function(_0x42dea3){if(_0x42dea3){var _0x1a6220=path[_0x1240('0x4c')](config['root'],_0x1240('0x68'),util['format'](_0x1240('0x69'),path['basename'](_0x42dea3[_0x1240('0x65')],path[_0x1240('0x6a')](_0x42dea3[_0x1240('0x65')])),_0x42dea3[_0x1240('0x66')]));var _0xde9f0f=path[_0x1240('0x4c')](config['root'],_0x1240('0x4e'),_0x2e06d6[_0x1240('0x27')],util['format']('%s.%s',_0x42dea3[_0x1240('0x27')],_0x42dea3[_0x1240('0x66')]));fs[_0x1240('0x6b')](_0x1a6220,_0xde9f0f);return _0x42dea3;}})[_0x1240('0x41')](function(_0xe7bee3){throw new db['Sequelize'][(_0x1240('0x60'))](_0xe7bee3['message']);});})['then'](handleEntityNotFound(_0xa60275,null))['then'](respondWithResult(_0xa60275,0xc9))[_0x1240('0x41')](handleError(_0xa60275,null));};exports[_0x1240('0x6c')]=function(_0x3068f6,_0x2c9d98,_0xa06b57){return db[_0x1240('0x48')][_0x1240('0x49')](function(_0x19e988){var _0x26858a;return db[_0x1240('0x2b')][_0x1240('0x64')]({'where':{'id':_0x3068f6[_0x1240('0x43')]['id']}})[_0x1240('0x22')](handleEntityNotFound(_0x2c9d98,null))[_0x1240('0x22')](function(_0x49c89c){if(_0x49c89c){_0x26858a=_0x49c89c;return _0x49c89c[_0x1240('0x6c')](_0x3068f6[_0x1240('0x43')][_0x1240('0x6d')]);}})['then'](function(_0x997a38){if(_0x997a38){return db[_0x1240('0x63')][_0x1240('0x64')]({'where':{'id':_0x3068f6[_0x1240('0x43')][_0x1240('0x6d')]},'attributes':['id',_0x1240('0x27'),_0x1240('0x65'),_0x1240('0x66'),'createdAt'],'raw':!![]});}})[_0x1240('0x22')](function(_0x47e842){if(_0x47e842){fs[_0x1240('0x6e')](path[_0x1240('0x4c')](_0x26858a[_0x1240('0x51')],util['format'](_0x1240('0x69'),_0x47e842[_0x1240('0x27')],_0x47e842[_0x1240('0x66')])));return _0x47e842;}})[_0x1240('0x41')](function(_0x14285f){throw new db[(_0x1240('0x5f'))][(_0x1240('0x60'))](_0x14285f[_0x1240('0x61')]);});})[_0x1240('0x22')](handleEntityNotFound(_0x2c9d98,null))[_0x1240('0x22')](respondWithStatusCode(_0x2c9d98,0xcc))[_0x1240('0x41')](handleError(_0x2c9d98,null));};exports[_0x1240('0x6f')]=function(_0xba3821,_0x203e63,_0x3f3525){var _0xc862c0={};var _0x2874e7={};var _0x3c2958;var _0x38f758;return db['VoiceMusicOnHold'][_0x1240('0x64')]({'where':{'id':_0xba3821[_0x1240('0x43')]['id']}})['then'](handleEntityNotFound(_0x203e63,null))['then'](function(_0x11ad4a){if(_0x11ad4a){_0x3c2958=_0x11ad4a;_0x2874e7[_0x1240('0x2f')]=_[_0x1240('0x31')](db['Sound']['rawAttributes']);_0x2874e7[_0x1240('0x30')]=_[_0x1240('0x31')](_0xba3821[_0x1240('0x30')]);_0x2874e7[_0x1240('0x32')]=_[_0x1240('0x33')](_0x2874e7[_0x1240('0x2f')],_0x2874e7['query']);_0xc862c0[_0x1240('0x34')]=_[_0x1240('0x33')](_0x2874e7['model'],qs[_0x1240('0x35')](_0xba3821[_0x1240('0x30')][_0x1240('0x35')]));_0xc862c0[_0x1240('0x34')]=_0xc862c0[_0x1240('0x34')][_0x1240('0x44')]?_0xc862c0[_0x1240('0x34')]:_0x2874e7[_0x1240('0x2f')];_0xc862c0[_0x1240('0x70')]=qs[_0x1240('0x38')](_0xba3821[_0x1240('0x30')]['sort']);_0xc862c0[_0x1240('0x39')]=qs['filters'](_[_0x1240('0x3a')](_0xba3821[_0x1240('0x30')],_0x2874e7[_0x1240('0x32')]));if(_0xba3821[_0x1240('0x30')][_0x1240('0x3c')]){_0xc862c0[_0x1240('0x39')]=_[_0x1240('0x3b')](_0xc862c0['where'],{'$or':_[_0x1240('0x2a')](_0xc862c0['attributes'],function(_0x1da395){var _0xb9bf0b={};_0xb9bf0b[_0x1da395]={'$like':'%'+_0xba3821[_0x1240('0x30')][_0x1240('0x3c')]+'%'};return _0xb9bf0b;})});}_0xc862c0=_[_0x1240('0x3b')]({},_0xc862c0,_0xba3821[_0x1240('0x45')]);return _0x3c2958[_0x1240('0x6f')](_0xc862c0);}})[_0x1240('0x22')](function(_0x23f93f){if(_0x23f93f){_0x38f758=_0x23f93f[_0x1240('0x44')];if(!_0xba3821[_0x1240('0x30')][_0x1240('0x36')](_0x1240('0x37'))){_0xc862c0[_0x1240('0x1c')]=qs['limit'](_0xba3821[_0x1240('0x30')]['limit']);_0xc862c0['offset']=qs[_0x1240('0x1e')](_0xba3821[_0x1240('0x30')][_0x1240('0x1e')]);}return _0x3c2958['getSounds'](_0xc862c0);}})['then'](function(_0x22ac55){if(_0x22ac55){return _0x22ac55?{'count':_0x38f758,'rows':_0x22ac55}:null;}})[_0x1240('0x22')](respondWithResult(_0x203e63,null))['catch'](handleError(_0x203e63,null));};
\ No newline at end of file
index 3b1fc77..6959e49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfaf=['voice_musiconhold','lodash','moment','request-promise','rimraf','../../config/environment','exports'];(function(_0x2dfabd,_0x1374db){var _0x437cdc=function(_0x2c429e){while(--_0x2c429e){_0x2dfabd['push'](_0x2dfabd['shift']());}};_0x437cdc(++_0x1374db);}(_0xbfaf,0x1d6));var _0xfbfa=function(_0x309d93,_0x157662){_0x309d93=_0x309d93-0x0;var _0x2dd61d=_0xbfaf[_0x309d93];return _0x2dd61d;};'use strict';var _=require(_0xfbfa('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xfbfa('0x1'));var BPromise=require('bluebird');var rp=require(_0xfbfa('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfbfa('0x3'));var config=require(_0xfbfa('0x4'));var attributes=require('./voiceMusicOnHold.attributes');module[_0xfbfa('0x5')]=function(_0x3dedfb,_0x3b8d97){return _0x3dedfb['define']('VoiceMusicOnHold',attributes,{'tableName':_0xfbfa('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1aa1=['bluebird','path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','exports','define','voice_musiconhold','util','../../config/logger'];(function(_0x9ed59a,_0x5210ac){var _0x1e2e8f=function(_0x460baa){while(--_0x460baa){_0x9ed59a['push'](_0x9ed59a['shift']());}};_0x1e2e8f(++_0x5210ac);}(_0x1aa1,0xf8));var _0x11aa=function(_0x35cf0a,_0x4b32be){_0x35cf0a=_0x35cf0a-0x0;var _0x5dc065=_0x1aa1[_0x35cf0a];return _0x5dc065;};'use strict';var _=require('lodash');var util=require(_0x11aa('0x0'));var logger=require(_0x11aa('0x1'))('api');var moment=require('moment');var BPromise=require(_0x11aa('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x11aa('0x3'));var rimraf=require(_0x11aa('0x4'));var config=require(_0x11aa('0x5'));var attributes=require(_0x11aa('0x6'));module[_0x11aa('0x7')]=function(_0x2113dd,_0x122a32){return _0x2113dd[_0x11aa('0x8')]('VoiceMusicOnHold',attributes,{'tableName':_0x11aa('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7e8b366..2b789fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['http','request','then','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x2b9526,_0x156f9a){var _0x2360c8=function(_0x5aad4a){while(--_0x5aad4a){_0x2b9526['push'](_0x2b9526['shift']());}};_0x2360c8(++_0x156f9a);}(_0xe706,0xa3));var _0x6e70=function(_0x3d0016,_0x4a37e0){_0x3d0016=_0x3d0016-0x0;var _0x1dcb28=_0xe706[_0x3d0016];return _0x1dcb28;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var moment=require(_0x6e70('0x2'));var BPromise=require('bluebird');var rs=require(_0x6e70('0x3'));var fs=require('fs');var Redis=require(_0x6e70('0x4'));var db=require(_0x6e70('0x5'))['db'];var utils=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));var config=require(_0x6e70('0x9'));var jayson=require(_0x6e70('0xa'));var client=jayson[_0x6e70('0xb')][_0x6e70('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x36357b,_0x293ce7,_0x45a2d4){return new BPromise(function(_0x188ed3,_0x3c4843){return client[_0x6e70('0xd')](_0x36357b,_0x45a2d4)[_0x6e70('0xe')](function(_0x25e61c){logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,_0x6e70('0x11'));logger[_0x6e70('0x12')](_0x6e70('0x13'),_0x293ce7,_0x6e70('0x11'),JSON['stringify'](_0x25e61c));if(_0x25e61c['error']){if(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x15')]===0x1f4){logger[_0x6e70('0x14')](_0x6e70('0x10'),_0x293ce7,_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);return _0x3c4843(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);}logger['error']('VoiceMusicOnHold,\x20%s,\x20%s',_0x293ce7,_0x25e61c['error'][_0x6e70('0x16')]);return _0x188ed3(_0x25e61c['error']['message']);}else{logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,'request\x20sent');_0x188ed3(_0x25e61c[_0x6e70('0x17')]['message']);}})[_0x6e70('0x18')](function(_0x161f23){logger['error']('VoiceMusicOnHold,\x20%s,\x20%s',_0x293ce7,_0x161f23);_0x3c4843(_0x161f23);});});}
\ No newline at end of file
+var _0x9c44=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','request\x20sent','debug','stringify','code','error','message','VoiceMusicOnHold,\x20%s,\x20%s','info','result','catch','moment','bluebird'];(function(_0x1b85ca,_0x2a3424){var _0x1c41a5=function(_0x55cea0){while(--_0x55cea0){_0x1b85ca['push'](_0x1b85ca['shift']());}};_0x1c41a5(++_0x2a3424);}(_0x9c44,0x178));var _0x49c4=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0x9c44[_0xdea41a];return _0x15d0d8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x49c4('0x0'));var BPromise=require(_0x49c4('0x1'));var rs=require(_0x49c4('0x2'));var fs=require('fs');var Redis=require(_0x49c4('0x3'));var db=require(_0x49c4('0x4'))['db'];var utils=require(_0x49c4('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x49c4('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x49c4('0x7')][_0x49c4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x69bc41,_0x2c4e2e,_0x436234){return new BPromise(function(_0x511d53,_0x11c586){return client[_0x49c4('0x9')](_0x69bc41,_0x436234)[_0x49c4('0xa')](function(_0x4487ca){logger['info']('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'));logger[_0x49c4('0xc')]('VoiceMusicOnHold,\x20%s,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'),JSON[_0x49c4('0xd')](_0x4487ca));if(_0x4487ca['error']){if(_0x4487ca['error'][_0x49c4('0xe')]===0x1f4){logger[_0x49c4('0xf')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);return _0x11c586(_0x4487ca['error'][_0x49c4('0x10')]);}logger[_0x49c4('0xf')](_0x49c4('0x11'),_0x2c4e2e,_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);return _0x511d53(_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);}else{logger[_0x49c4('0x12')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'));_0x511d53(_0x4487ca[_0x49c4('0x13')][_0x49c4('0x10')]);}})[_0x49c4('0x14')](function(_0x2abc78){logger['error'](_0x49c4('0x11'),_0x2c4e2e,_0x2abc78);_0x11c586(_0x2abc78);});});}
\ No newline at end of file
index 50b3d7d..f09b86c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf62=['addTeams','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voicePrefix.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/users','getAgents','/:id/teams','post','create','addAgents'];(function(_0x563129,_0x26d5f9){var _0x28d1a3=function(_0x2c2d43){while(--_0x2c2d43){_0x563129['push'](_0x563129['shift']());}};_0x28d1a3(++_0x26d5f9);}(_0xcf62,0x71));var _0x2cf6=function(_0x25e7cb,_0x3579b7){_0x25e7cb=_0x25e7cb-0x0;var _0x375d92=_0xcf62[_0x25e7cb];return _0x375d92;};'use strict';var multer=require(_0x2cf6('0x0'));var util=require(_0x2cf6('0x1'));var path=require('path');var timeout=require(_0x2cf6('0x2'));var express=require(_0x2cf6('0x3'));var router=express[_0x2cf6('0x4')]();var fs_extra=require(_0x2cf6('0x5'));var auth=require(_0x2cf6('0x6'));var interaction=require(_0x2cf6('0x7'));var config=require(_0x2cf6('0x8'));var controller=require(_0x2cf6('0x9'));router['get']('/',auth[_0x2cf6('0xa')](),controller['index']);router[_0x2cf6('0xb')](_0x2cf6('0xc'),auth[_0x2cf6('0xa')](),controller[_0x2cf6('0xd')]);router['get'](_0x2cf6('0xe'),auth[_0x2cf6('0xa')](),controller[_0x2cf6('0xf')]);router[_0x2cf6('0xb')](_0x2cf6('0x10'),auth[_0x2cf6('0xa')](),controller[_0x2cf6('0x11')]);router[_0x2cf6('0xb')](_0x2cf6('0x12'),auth[_0x2cf6('0xa')](),controller['getTeams']);router[_0x2cf6('0x13')]('/',auth[_0x2cf6('0xa')](),controller[_0x2cf6('0x14')]);router['post']('/:id/users',auth['isAuthenticated'](),controller[_0x2cf6('0x15')]);router[_0x2cf6('0x13')](_0x2cf6('0x12'),auth[_0x2cf6('0xa')](),controller[_0x2cf6('0x16')]);router['put'](_0x2cf6('0xe'),auth[_0x2cf6('0xa')](),controller[_0x2cf6('0x17')]);router[_0x2cf6('0x18')](_0x2cf6('0xe'),auth[_0x2cf6('0xa')](),controller[_0x2cf6('0x19')]);router[_0x2cf6('0x18')](_0x2cf6('0x10'),auth[_0x2cf6('0xa')](),controller['removeAgents']);router[_0x2cf6('0x18')](_0x2cf6('0x12'),auth[_0x2cf6('0xa')](),controller['removeTeams']);module[_0x2cf6('0x1a')]=router;
\ No newline at end of file
+var _0x18c9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voicePrefix.controller','index','get','/describe','isAuthenticated','/:id','show','/:id/users','getAgents','/:id/teams','post','addTeams','put','update','delete','destroy','removeTeams','exports','multer'];(function(_0x55fdf3,_0x43fac4){var _0x1f924c=function(_0x48e344){while(--_0x48e344){_0x55fdf3['push'](_0x55fdf3['shift']());}};_0x1f924c(++_0x43fac4);}(_0x18c9,0x1bf));var _0x918c=function(_0x1a7550,_0x1edace){_0x1a7550=_0x1a7550-0x0;var _0x426e22=_0x18c9[_0x1a7550];return _0x426e22;};'use strict';var multer=require(_0x918c('0x0'));var util=require(_0x918c('0x1'));var path=require(_0x918c('0x2'));var timeout=require(_0x918c('0x3'));var express=require(_0x918c('0x4'));var router=express[_0x918c('0x5')]();var fs_extra=require(_0x918c('0x6'));var auth=require(_0x918c('0x7'));var interaction=require(_0x918c('0x8'));var config=require(_0x918c('0x9'));var controller=require(_0x918c('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x918c('0xb')]);router[_0x918c('0xc')](_0x918c('0xd'),auth[_0x918c('0xe')](),controller['describe']);router['get'](_0x918c('0xf'),auth[_0x918c('0xe')](),controller[_0x918c('0x10')]);router[_0x918c('0xc')](_0x918c('0x11'),auth[_0x918c('0xe')](),controller[_0x918c('0x12')]);router['get'](_0x918c('0x13'),auth[_0x918c('0xe')](),controller['getTeams']);router[_0x918c('0x14')]('/',auth[_0x918c('0xe')](),controller['create']);router['post'](_0x918c('0x11'),auth[_0x918c('0xe')](),controller['addAgents']);router['post'](_0x918c('0x13'),auth[_0x918c('0xe')](),controller[_0x918c('0x15')]);router[_0x918c('0x16')](_0x918c('0xf'),auth[_0x918c('0xe')](),controller[_0x918c('0x17')]);router[_0x918c('0x18')](_0x918c('0xf'),auth['isAuthenticated'](),controller[_0x918c('0x19')]);router[_0x918c('0x18')]('/:id/users',auth[_0x918c('0xe')](),controller['removeAgents']);router[_0x918c('0x18')]('/:id/teams',auth[_0x918c('0xe')](),controller[_0x918c('0x1a')]);module[_0x918c('0x1b')]=router;
\ No newline at end of file
index c96a654..e815e97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30d0=['INTEGER','VIRTUAL','system-','getDataValue','name','STRING'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0x30d0,0x187));var _0x030d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x30d0[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize[_0x030d('0x0')],'get':function(_0x3a3dce){return _0x030d('0x1')+this[_0x030d('0x2')](_0x030d('0x3'))+'-';}},'description':{'type':Sequelize[_0x030d('0x4')]},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize[_0x030d('0x5')]}};
\ No newline at end of file
+var _0xe445=['name','STRING','INTEGER','VIRTUAL','system-','getDataValue'];(function(_0x368fb9,_0x1a9895){var _0x4892fb=function(_0x28d735){while(--_0x28d735){_0x368fb9['push'](_0x368fb9['shift']());}};_0x4892fb(++_0x1a9895);}(_0xe445,0x1e3));var _0x5e44=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xe445[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize[_0x5e44('0x0')],'get':function(_0x392351){return _0x5e44('0x1')+this[_0x5e44('0x2')](_0x5e44('0x3'))+'-';}},'description':{'type':Sequelize[_0x5e44('0x4')]},'callerIdAll':{'type':Sequelize[_0x5e44('0x4')]},'VoiceExtensionId':{'type':Sequelize[_0x5e44('0x5')]}};
\ No newline at end of file
index ae3febd..0752477 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbbc=['filters','filter','merge','options','VoicePrefix','includeAll','include','findAll','rows','catch','show','params','find','describe','create','sequelize','transaction','VoiceExtension','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','VoicePrefixes','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','from-sip','exten','system','priority','NoOp','Voice\x20Prefix','VoicePrefixId','Extensions\x20creation\x20failed','prefix','push','Set','CDR(prefix)=','callerIdAll','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','context','${EXTEN:','charAt','system-','update','findById','addAgents','ids','omit','body','emit','userVoicePrefix:save','removeAgents','isArray','findOne','pick','getAgents','Team','getTeams','hasOwnProperty','addTeams','Agents','online','interface','flatMap','each','TeamVoicePrefix','findOrCreate','forEach','removeTeams','field','from','join','user_has_teams','VoicePrefixId\x20=\x20?','clone','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','userVoicePrefix:remove','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','redis','register','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','get','UserProfileResource','destroy','status','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','nolimit','order','sort','where'];(function(_0x4d03c3,_0x4dc031){var _0x3c306a=function(_0x57128a){while(--_0x57128a){_0x4d03c3['push'](_0x4d03c3['shift']());}};_0x3c306a(++_0x4dc031);}(_0xbbbc,0xf6));var _0xcbbb=function(_0x39caaa,_0x1f37bc){_0x39caaa=_0x39caaa-0x0;var _0x9b9c7d=_0xbbbc[_0x39caaa];return _0x9b9c7d;};'use strict';var emlformat=require(_0xcbbb('0x0'));var rimraf=require(_0xcbbb('0x1'));var zipdir=require(_0xcbbb('0x2'));var jsonpatch=require(_0xcbbb('0x3'));var rp=require(_0xcbbb('0x4'));var moment=require(_0xcbbb('0x5'));var BPromise=require(_0xcbbb('0x6'));var Mustache=require('mustache');var util=require(_0xcbbb('0x7'));var path=require(_0xcbbb('0x8'));var sox=require(_0xcbbb('0x9'));var csv=require(_0xcbbb('0xa'));var ejs=require(_0xcbbb('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcbbb('0xc'));var squel=require(_0xcbbb('0xd'));var crypto=require(_0xcbbb('0xe'));var jsforce=require(_0xcbbb('0xf'));var deskjs=require(_0xcbbb('0x10'));var toCsv=require(_0xcbbb('0xa'));var querystring=require(_0xcbbb('0x11'));var Papa=require('papaparse');var Redis=require(_0xcbbb('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xcbbb('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xcbbb('0x14'))('api');var utils=require(_0xcbbb('0x15'));var config=require(_0xcbbb('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xcbbb('0x17'))['db'];config['redis']=_[_0xcbbb('0x18')](config['redis'],{'host':_0xcbbb('0x19'),'port':0x18eb});var socket=require(_0xcbbb('0x1a'))(new Redis(config[_0xcbbb('0x1b')]));require('./voicePrefix.socket')[_0xcbbb('0x1c')](socket);function respondWithStatusCode(_0x3ff767,_0x8a325c){_0x8a325c=_0x8a325c||0xcc;return function(_0x273e13){if(_0x273e13){return _0x3ff767['sendStatus'](_0x8a325c);}return _0x3ff767['status'](_0x8a325c)[_0xcbbb('0x1d')]();};}function respondWithResult(_0x30297d,_0xf76038){_0xf76038=_0xf76038||0xc8;return function(_0x188698){if(_0x188698){return _0x30297d['status'](_0xf76038)[_0xcbbb('0x1e')](_0x188698);}};}function respondWithFilteredResult(_0x4ff973,_0x1fbfb1){return function(_0x3436af){if(_0x3436af){var _0x3572bb=typeof _0x1fbfb1['offset']==='undefined'&&typeof _0x1fbfb1['limit']===_0xcbbb('0x1f');var _0x3ae91b=_0x3436af[_0xcbbb('0x20')];var _0x25e92f=_0x3572bb?0x0:_0x1fbfb1[_0xcbbb('0x21')];var _0x1cca90=_0x3572bb?_0x3436af[_0xcbbb('0x20')]:_0x1fbfb1[_0xcbbb('0x21')]+_0x1fbfb1[_0xcbbb('0x22')];var _0x2d4335;if(_0x1cca90>=_0x3ae91b){_0x1cca90=_0x3ae91b;_0x2d4335=0xc8;}else{_0x2d4335=0xce;}_0x4ff973['status'](_0x2d4335);return _0x4ff973[_0xcbbb('0x23')](_0xcbbb('0x24'),_0x25e92f+'-'+_0x1cca90+'/'+_0x3ae91b)[_0xcbbb('0x1e')](_0x3436af);}return null;};}function patchUpdates(_0x42aaf1){return function(_0x258d1f){try{jsonpatch[_0xcbbb('0x25')](_0x258d1f,_0x42aaf1,!![]);}catch(_0x297eae){return BPromise[_0xcbbb('0x26')](_0x297eae);}return _0x258d1f[_0xcbbb('0x27')]();};}function saveUpdates(_0x5e3970,_0xf39ddd){return function(_0x4490c1){if(_0x4490c1){return _0x4490c1['update'](_0x5e3970)[_0xcbbb('0x28')](function(_0x4ffa80){return _0x4ffa80;});}return null;};}function removeEntity(_0x48dfc4,_0x575d56){return function(_0x32e070){if(_0x32e070){return _0x32e070['destroy']()['then'](function(){var _0x5499a1=_0x32e070[_0xcbbb('0x29')]({'plain':!![]});var _0x55e1d8='VoicePrefixes';return db[_0xcbbb('0x2a')][_0xcbbb('0x2b')]({'where':{'type':_0x55e1d8,'resourceId':_0x5499a1['id']}})[_0xcbbb('0x28')](function(){return _0x32e070;});})[_0xcbbb('0x28')](function(){_0x48dfc4[_0xcbbb('0x2c')](0xcc)[_0xcbbb('0x1d')]();});}};}function handleEntityNotFound(_0x3d4c0d,_0x1c986d){return function(_0x2a023f){if(!_0x2a023f){_0x3d4c0d[_0xcbbb('0x2d')](0x194);}return _0x2a023f;};}function handleError(_0x1c2ac9,_0xeb8cd8){_0xeb8cd8=_0xeb8cd8||0x1f4;return function(_0xfa973b){logger[_0xcbbb('0x2e')](_0xfa973b[_0xcbbb('0x2f')]);if(_0xfa973b[_0xcbbb('0x30')]){delete _0xfa973b[_0xcbbb('0x30')];}_0x1c2ac9[_0xcbbb('0x2c')](_0xeb8cd8)['send'](_0xfa973b);};}exports[_0xcbbb('0x31')]=function(_0x203a34,_0x5332f9){var _0xec2761={},_0x539dcf={},_0x2d37d3={'count':0x0,'rows':[]};var _0x1fb05e=_[_0xcbbb('0x32')](db['VoicePrefix'][_0xcbbb('0x33')],function(_0xa4743b){return{'name':_0xa4743b[_0xcbbb('0x34')],'type':_0xa4743b[_0xcbbb('0x35')][_0xcbbb('0x36')]};});_0x539dcf[_0xcbbb('0x37')]=_[_0xcbbb('0x32')](_0x1fb05e,_0xcbbb('0x30'));_0x539dcf[_0xcbbb('0x38')]=_[_0xcbbb('0x39')](_0x203a34['query']);_0x539dcf['filters']=_['intersection'](_0x539dcf['model'],_0x539dcf[_0xcbbb('0x38')]);_0xec2761[_0xcbbb('0x3a')]=_[_0xcbbb('0x3b')](_0x539dcf[_0xcbbb('0x37')],qs[_0xcbbb('0x3c')](_0x203a34[_0xcbbb('0x38')][_0xcbbb('0x3c')]));_0xec2761[_0xcbbb('0x3a')]=_0xec2761[_0xcbbb('0x3a')][_0xcbbb('0x3d')]?_0xec2761[_0xcbbb('0x3a')]:_0x539dcf[_0xcbbb('0x37')];if(!_0x203a34['query']['hasOwnProperty'](_0xcbbb('0x3e'))){_0xec2761['limit']=qs['limit'](_0x203a34['query'][_0xcbbb('0x22')]);_0xec2761[_0xcbbb('0x21')]=qs[_0xcbbb('0x21')](_0x203a34[_0xcbbb('0x38')][_0xcbbb('0x21')]);}_0xec2761[_0xcbbb('0x3f')]=qs[_0xcbbb('0x40')](_0x203a34[_0xcbbb('0x38')][_0xcbbb('0x40')]);_0xec2761[_0xcbbb('0x41')]=qs[_0xcbbb('0x42')](_['pick'](_0x203a34[_0xcbbb('0x38')],_0x539dcf['filters']),_0x1fb05e);if(_0x203a34[_0xcbbb('0x38')][_0xcbbb('0x43')]){_0xec2761[_0xcbbb('0x41')]=_[_0xcbbb('0x44')](_0xec2761[_0xcbbb('0x41')],{'$or':_[_0xcbbb('0x32')](_0x1fb05e,function(_0x5651fd){if(_0x5651fd['type']!=='VIRTUAL'){var _0xda1973={};_0xda1973[_0x5651fd[_0xcbbb('0x30')]]={'$like':'%'+_0x203a34[_0xcbbb('0x38')][_0xcbbb('0x43')]+'%'};return _0xda1973;}})});}_0xec2761=_[_0xcbbb('0x44')]({},_0xec2761,_0x203a34[_0xcbbb('0x45')]);var _0x2b45ee={'where':_0xec2761['where']};return db[_0xcbbb('0x46')][_0xcbbb('0x20')](_0x2b45ee)['then'](function(_0x15b3bc){_0x2d37d3[_0xcbbb('0x20')]=_0x15b3bc;if(_0x203a34[_0xcbbb('0x38')][_0xcbbb('0x47')]){_0xec2761[_0xcbbb('0x48')]=[{'all':!![]}];}return db['VoicePrefix'][_0xcbbb('0x49')](_0xec2761);})['then'](function(_0x520448){_0x2d37d3[_0xcbbb('0x4a')]=_0x520448;return _0x2d37d3;})[_0xcbbb('0x28')](respondWithFilteredResult(_0x5332f9,_0xec2761))[_0xcbbb('0x4b')](handleError(_0x5332f9,null));};exports[_0xcbbb('0x4c')]=function(_0xb5391d,_0x406e1c){var _0x2040bf={'raw':![],'where':{'id':_0xb5391d[_0xcbbb('0x4d')]['id']}},_0x3ba75e={};_0x3ba75e[_0xcbbb('0x37')]=_[_0xcbbb('0x39')](db[_0xcbbb('0x46')][_0xcbbb('0x33')]);_0x3ba75e[_0xcbbb('0x38')]=_['keys'](_0xb5391d[_0xcbbb('0x38')]);_0x3ba75e[_0xcbbb('0x42')]=_[_0xcbbb('0x3b')](_0x3ba75e[_0xcbbb('0x37')],_0x3ba75e['query']);_0x2040bf['attributes']=_['intersection'](_0x3ba75e[_0xcbbb('0x37')],qs[_0xcbbb('0x3c')](_0xb5391d[_0xcbbb('0x38')][_0xcbbb('0x3c')]));_0x2040bf[_0xcbbb('0x3a')]=_0x2040bf[_0xcbbb('0x3a')][_0xcbbb('0x3d')]?_0x2040bf['attributes']:_0x3ba75e[_0xcbbb('0x37')];if(_0xb5391d[_0xcbbb('0x38')][_0xcbbb('0x47')]){_0x2040bf[_0xcbbb('0x48')]=[{'all':!![]}];}_0x2040bf=_['merge']({},_0x2040bf,_0xb5391d[_0xcbbb('0x45')]);return db[_0xcbbb('0x46')][_0xcbbb('0x4e')](_0x2040bf)[_0xcbbb('0x28')](handleEntityNotFound(_0x406e1c,null))['then'](respondWithResult(_0x406e1c,null))['catch'](handleError(_0x406e1c,null));};exports[_0xcbbb('0x2b')]=function(_0x421137,_0x3dc052){return db['VoicePrefix']['find']({'where':{'id':_0x421137['params']['id']}})[_0xcbbb('0x28')](handleEntityNotFound(_0x3dc052,null))[_0xcbbb('0x28')](removeEntity(_0x3dc052,null))['catch'](handleError(_0x3dc052,null));};exports[_0xcbbb('0x4f')]=function(_0x35bb94,_0x2dc313){return db[_0xcbbb('0x46')]['describe']()[_0xcbbb('0x28')](respondWithResult(_0x2dc313,null))[_0xcbbb('0x4b')](handleError(_0x2dc313,null));};exports[_0xcbbb('0x50')]=function(_0x3526f5,_0xb267da){var _0x3679f4;return db[_0xcbbb('0x51')][_0xcbbb('0x52')](function(_0x2d3990){return db[_0xcbbb('0x46')][_0xcbbb('0x50')](_0x3526f5['body'],{'transaction':_0x2d3990})['then'](function(_0x3fb0bd){_0x3679f4=_0x3fb0bd[_0xcbbb('0x29')]({'plain':!![]});return db[_0xcbbb('0x53')]['find']({'where':{'id':_0x3679f4[_0xcbbb('0x54')]},'raw':!![]})['then'](function(_0x2a9958){return createVoicePrefixExtensions(_0x3679f4,_0x2a9958,_0x2d3990);});});})[_0xcbbb('0x28')](function(){var _0x317633=_0x3526f5[_0xcbbb('0x55')][_0xcbbb('0x29')]({'plain':!![]});if(!_0x317633)throw new Error(_0xcbbb('0x56'));if(_0x317633['role']==='user'){var _0x4cc098=_0x3679f4;return db[_0xcbbb('0x57')][_0xcbbb('0x4e')]({'where':{'name':_0xcbbb('0x58'),'userProfileId':_0x317633[_0xcbbb('0x59')]},'raw':!![]})[_0xcbbb('0x28')](function(_0x30bc24){if(_0x30bc24&&_0x30bc24[_0xcbbb('0x5a')]===0x0){return db[_0xcbbb('0x2a')][_0xcbbb('0x50')]({'name':_0x4cc098[_0xcbbb('0x30')],'resourceId':_0x4cc098['id'],'type':_0x30bc24[_0xcbbb('0x30')],'sectionId':_0x30bc24['id']},{})[_0xcbbb('0x28')](function(){return _0x3679f4;});}else{return _0x3679f4;}})[_0xcbbb('0x4b')](function(_0x48d295){logger[_0xcbbb('0x2e')](_0xcbbb('0x5b'),_0x48d295);throw _0x48d295;});}return _0x3679f4;})[_0xcbbb('0x28')](respondWithResult(_0xb267da,null))['catch'](handleError(_0xb267da,null));};function Extension(_0x17d714,_0x1dbf9b,_0x5501d5,_0x26f0e6){this['context']=_0xcbbb('0x5c');this[_0xcbbb('0x5d')]=_0x17d714;this['app']=_0x5501d5;this[_0xcbbb('0x35')]=_0xcbbb('0x5e');this['description']='Voice\x20Prefix\x20Extension';this[_0xcbbb('0x5f')]=_0x1dbf9b;this['appdata']=_0x26f0e6;}function createVoicePrefixExtensions(_0x411bc6,_0x4c56fe,_0xb68922){return new BPromise(function(_0x3849d8,_0x20aaa9){var _0x4b4bb7=new Extension(formatPrefixName(_0x411bc6['prefix']),0x1,_0xcbbb('0x60'),_0xcbbb('0x61'));_0x4b4bb7['VoicePrefixId']=_0x411bc6['id'];return db[_0xcbbb('0x53')][_0xcbbb('0x50')](_0x4b4bb7,{'transaction':_0xb68922})[_0xcbbb('0x28')](function(_0x556e48){var _0xe347c6=_0x556e48[_0xcbbb('0x29')]({'plain':!![]});var _0x12ef00=_[_0xcbbb('0x32')](addVoicePrefixExtensions(_0x411bc6,_0x4c56fe),function(_0xf13e52){_0xf13e52[_0xcbbb('0x54')]=_0xe347c6['id'];_0xf13e52[_0xcbbb('0x62')]=_0x411bc6['id'];return _0xf13e52;});return db['VoiceExtension']['bulkCreate'](_0x12ef00,{'transaction':_0xb68922})[_0xcbbb('0x28')](function(_0x2469e5){if(!_0x2469e5){return _0x20aaa9(_0xcbbb('0x63'));}else{return _0x3849d8(_0x2469e5);}})[_0xcbbb('0x4b')](function(_0x4bc7cc){return _0x20aaa9(_0x4bc7cc);});});;});};function addVoicePrefixExtensions(_0x5c6bf7,_0x3781df){var _0x4f6529=[];var _0x5ea915=formatPrefixName(_0x5c6bf7[_0xcbbb('0x64')]);_0x4f6529[_0xcbbb('0x65')](new Extension(_0x5ea915,0x2,_0xcbbb('0x66'),_0xcbbb('0x67')+_0x5c6bf7[_0xcbbb('0x30')]));if(_0x5c6bf7[_0xcbbb('0x68')]){_0x4f6529[_0xcbbb('0x65')](new Extension(_0x5ea915,0x3,'Set',_0xcbbb('0x69')+_0x5c6bf7['callerIdAll']));}else{_0x4f6529[_0xcbbb('0x65')](new Extension(_0x5ea915,0x3,'NoOp',_0xcbbb('0x6a')));}_0x4f6529[_0xcbbb('0x65')](new Extension(_0x5ea915,0x4,_0xcbbb('0x6b'),_0x3781df[_0xcbbb('0x6c')]+','+_0xcbbb('0x6d')+(0x8+_0x5c6bf7[_0xcbbb('0x30')][_0xcbbb('0x3d')])+'}'+','+0x1));return _0x4f6529;}function formatPrefixName(_0x619340){var _0x4ff7db='_';for(var _0x57d776=0x0;_0x57d776<_0x619340[_0xcbbb('0x3d')];_0x57d776++){if(_0x619340[_0xcbbb('0x6e')](_0x57d776)=='-'){_0x4ff7db+=_0x619340[_0xcbbb('0x6e')](_0x57d776);}else{_0x4ff7db+='['+_0x619340[_0xcbbb('0x6e')](_0x57d776)+']';}}_0x4ff7db+='.';return _0x4ff7db;}exports['update']=function(_0x583c33,_0x590fc6,_0x6060d){var _0x2f0db8=_0x583c33['body'];_0x2f0db8[_0xcbbb('0x64')]=_0xcbbb('0x6f')+_0x2f0db8['name']+'-';return db[_0xcbbb('0x51')][_0xcbbb('0x52')](function(_0x4e2198){return db[_0xcbbb('0x46')][_0xcbbb('0x70')](_0x2f0db8,{'where':{'id':_0x2f0db8['id']},'transaction':_0x4e2198})[_0xcbbb('0x28')](function(){return db['VoiceExtension']['destroy']({'where':{'VoicePrefixId':_0x2f0db8['id']},'transaction':_0x4e2198})[_0xcbbb('0x28')](function(){return db[_0xcbbb('0x53')][_0xcbbb('0x4e')]({'where':{'id':_0x2f0db8['VoiceExtensionId']},'raw':!![]})['then'](function(_0x128d79){return createVoicePrefixExtensions(_0x2f0db8,_0x128d79,_0x4e2198);});});});})[_0xcbbb('0x28')](function(){return db[_0xcbbb('0x46')][_0xcbbb('0x71')](_0x2f0db8['id']);})[_0xcbbb('0x28')](respondWithResult(_0x590fc6,null))[_0xcbbb('0x4b')](handleError(_0x590fc6,null));};exports[_0xcbbb('0x72')]=function(_0x194b4b,_0x3e401d,_0x305344){return db[_0xcbbb('0x46')]['find']({'where':{'id':_0x194b4b[_0xcbbb('0x4d')]['id']}})[_0xcbbb('0x28')](handleEntityNotFound(_0x3e401d,null))[_0xcbbb('0x28')](function(_0x3ad059){if(_0x3ad059){return _0x3ad059[_0xcbbb('0x72')](_0x194b4b['body'][_0xcbbb('0x73')],_[_0xcbbb('0x74')](_0x194b4b[_0xcbbb('0x75')],[_0xcbbb('0x73'),'id'])||{})['spread'](function(_0x264c34){for(var _0x22de60=0x0;_0x22de60<_0x194b4b[_0xcbbb('0x75')]['ids']['length'];_0x22de60+=0x1){socket[_0xcbbb('0x76')](_0xcbbb('0x77'),{'UserId':Number(_0x194b4b[_0xcbbb('0x75')][_0xcbbb('0x73')][_0x22de60]),'VoicePrefixId':Number(_0x194b4b['params']['id'])});}return _0x264c34;});}})[_0xcbbb('0x28')](respondWithResult(_0x3e401d,null))[_0xcbbb('0x4b')](handleError(_0x3e401d,null));};exports[_0xcbbb('0x78')]=function(_0x349674,_0x42a9d3,_0x5706e6){return db['VoicePrefix'][_0xcbbb('0x4e')]({'where':{'id':_0x349674[_0xcbbb('0x4d')]['id']}})[_0xcbbb('0x28')](handleEntityNotFound(_0x42a9d3,null))[_0xcbbb('0x28')](function(_0x14eaec){if(_0x14eaec){return _0x14eaec[_0xcbbb('0x78')](_0x349674['query'][_0xcbbb('0x73')])[_0xcbbb('0x28')](function(){if(_[_0xcbbb('0x79')](_0x349674[_0xcbbb('0x38')][_0xcbbb('0x73')])){for(var _0x2b1277=0x0;_0x2b1277<_0x349674[_0xcbbb('0x38')]['ids']['length'];_0x2b1277+=0x1){socket[_0xcbbb('0x76')]('userVoicePrefix:remove',{'UserId':Number(_0x349674['query'][_0xcbbb('0x73')][_0x2b1277]),'VoicePrefixId':Number(_0x349674['params']['id'])});}}else{socket['emit']('userVoicePrefix:remove',{'UserId':Number(_0x349674[_0xcbbb('0x38')]['ids']),'VoicePrefixId':Number(_0x349674[_0xcbbb('0x4d')]['id'])});}});}})['then'](respondWithStatusCode(_0x42a9d3,null))['catch'](handleError(_0x42a9d3,null));};exports['getAgents']=function(_0x4de2dd,_0x1c9dd2,_0x14c60b){var _0x56b09b={};var _0x4bb903={};var _0x130f91;var _0x1bffe9;return db['VoicePrefix'][_0xcbbb('0x7a')]({'where':{'id':_0x4de2dd[_0xcbbb('0x4d')]['id']}})[_0xcbbb('0x28')](handleEntityNotFound(_0x1c9dd2,null))[_0xcbbb('0x28')](function(_0x24b949){if(_0x24b949){_0x130f91=_0x24b949;_0x4bb903[_0xcbbb('0x37')]=_[_0xcbbb('0x39')](db['User'][_0xcbbb('0x33')]);_0x4bb903[_0xcbbb('0x38')]=_['keys'](_0x4de2dd[_0xcbbb('0x38')]);_0x4bb903[_0xcbbb('0x42')]=_[_0xcbbb('0x3b')](_0x4bb903[_0xcbbb('0x37')],_0x4bb903[_0xcbbb('0x38')]);_0x56b09b[_0xcbbb('0x3a')]=_['intersection'](_0x4bb903['model'],qs[_0xcbbb('0x3c')](_0x4de2dd[_0xcbbb('0x38')][_0xcbbb('0x3c')]));_0x56b09b[_0xcbbb('0x3a')]=_0x56b09b[_0xcbbb('0x3a')]['length']?_0x56b09b[_0xcbbb('0x3a')]:_0x4bb903[_0xcbbb('0x37')];_0x56b09b[_0xcbbb('0x3f')]=qs[_0xcbbb('0x40')](_0x4de2dd[_0xcbbb('0x38')][_0xcbbb('0x40')]);_0x56b09b[_0xcbbb('0x41')]=qs[_0xcbbb('0x42')](_[_0xcbbb('0x7b')](_0x4de2dd[_0xcbbb('0x38')],_0x4bb903[_0xcbbb('0x42')]));if(_0x4de2dd['query']['filter']){_0x56b09b[_0xcbbb('0x41')]=_[_0xcbbb('0x44')](_0x56b09b[_0xcbbb('0x41')],{'$or':_[_0xcbbb('0x32')](_0x56b09b[_0xcbbb('0x3a')],function(_0x4a964b){var _0x1d7b6b={};_0x1d7b6b[_0x4a964b]={'$like':'%'+_0x4de2dd[_0xcbbb('0x38')]['filter']+'%'};return _0x1d7b6b;})});}_0x56b09b=_['merge']({},_0x56b09b,_0x4de2dd[_0xcbbb('0x45')]);return _0x130f91['getAgents'](_0x56b09b);}})[_0xcbbb('0x28')](function(_0x1a5dd3){if(_0x1a5dd3){_0x1bffe9=_0x1a5dd3[_0xcbbb('0x3d')];if(!_0x4de2dd[_0xcbbb('0x38')]['hasOwnProperty']('nolimit')){_0x56b09b[_0xcbbb('0x22')]=qs[_0xcbbb('0x22')](_0x4de2dd['query'][_0xcbbb('0x22')]);_0x56b09b[_0xcbbb('0x21')]=qs[_0xcbbb('0x21')](_0x4de2dd[_0xcbbb('0x38')][_0xcbbb('0x21')]);}return _0x130f91[_0xcbbb('0x7c')](_0x56b09b);}})[_0xcbbb('0x28')](function(_0x49f482){if(_0x49f482){return _0x49f482?{'count':_0x1bffe9,'rows':_0x49f482}:null;}})[_0xcbbb('0x28')](respondWithResult(_0x1c9dd2,null))[_0xcbbb('0x4b')](handleError(_0x1c9dd2,null));};exports['getTeams']=function(_0x10667e,_0x549d6c,_0x7a604f){var _0x10f932={};var _0x736484={};var _0x369b6f;var _0x4dc485;return db[_0xcbbb('0x46')][_0xcbbb('0x7a')]({'where':{'id':_0x10667e[_0xcbbb('0x4d')]['id']}})[_0xcbbb('0x28')](handleEntityNotFound(_0x549d6c,null))[_0xcbbb('0x28')](function(_0x4a5a59){if(_0x4a5a59){_0x369b6f=_0x4a5a59;_0x736484['model']=_[_0xcbbb('0x39')](db[_0xcbbb('0x7d')][_0xcbbb('0x33')]);_0x736484[_0xcbbb('0x38')]=_[_0xcbbb('0x39')](_0x10667e['query']);_0x736484['filters']=_[_0xcbbb('0x3b')](_0x736484[_0xcbbb('0x37')],_0x736484[_0xcbbb('0x38')]);_0x10f932[_0xcbbb('0x3a')]=_[_0xcbbb('0x3b')](_0x736484['model'],qs[_0xcbbb('0x3c')](_0x10667e[_0xcbbb('0x38')][_0xcbbb('0x3c')]));_0x10f932['attributes']=_0x10f932[_0xcbbb('0x3a')][_0xcbbb('0x3d')]?_0x10f932[_0xcbbb('0x3a')]:_0x736484[_0xcbbb('0x37')];_0x10f932[_0xcbbb('0x3f')]=qs[_0xcbbb('0x40')](_0x10667e[_0xcbbb('0x38')][_0xcbbb('0x40')]);_0x10f932['where']=qs[_0xcbbb('0x42')](_['pick'](_0x10667e['query'],_0x736484['filters']));if(_0x10667e[_0xcbbb('0x38')]['filter']){_0x10f932[_0xcbbb('0x41')]=_[_0xcbbb('0x44')](_0x10f932['where'],{'$or':_[_0xcbbb('0x32')](_0x10f932[_0xcbbb('0x3a')],function(_0x4bf0b3){var _0x4314d3={};_0x4314d3[_0x4bf0b3]={'$like':'%'+_0x10667e[_0xcbbb('0x38')][_0xcbbb('0x43')]+'%'};return _0x4314d3;})});}_0x10f932=_['merge']({},_0x10f932,_0x10667e[_0xcbbb('0x45')]);return _0x369b6f[_0xcbbb('0x7e')](_0x10f932);}})[_0xcbbb('0x28')](function(_0x2da472){if(_0x2da472){_0x4dc485=_0x2da472[_0xcbbb('0x3d')];if(!_0x10667e[_0xcbbb('0x38')][_0xcbbb('0x7f')](_0xcbbb('0x3e'))){_0x10f932[_0xcbbb('0x22')]=qs['limit'](_0x10667e[_0xcbbb('0x38')][_0xcbbb('0x22')]);_0x10f932[_0xcbbb('0x21')]=qs['offset'](_0x10667e['query'][_0xcbbb('0x21')]);}return _0x369b6f['getTeams'](_0x10f932);}})[_0xcbbb('0x28')](function(_0x198899){if(_0x198899){return _0x198899?{'count':_0x4dc485,'rows':_0x198899}:null;}})['then'](respondWithResult(_0x549d6c,null))[_0xcbbb('0x4b')](handleError(_0x549d6c,null));};exports[_0xcbbb('0x80')]=function(_0x59d833,_0x39951f,_0x283bc8){var _0x2754d1=_0x59d833[_0xcbbb('0x75')][_0xcbbb('0x73')];var _0x458b66;return db['Team'][_0xcbbb('0x49')]({'where':{'id':_0x2754d1},'attributes':['id'],'include':[{'model':db['User'],'as':_0xcbbb('0x81'),'attributes':['id',_0xcbbb('0x30'),_0xcbbb('0x82'),'voicePause',_0xcbbb('0x83')],'raw':!![]}]})['then'](function(_0x32993d){if(_0x32993d){_0x458b66=_0x32993d;var _0x962f3f=_[_0xcbbb('0x84')](_0x32993d,function(_0x55ca6b){var _0x287b25=_0x55ca6b['get']({'plain':!![]});return _0x287b25[_0xcbbb('0x81')];});return db[_0xcbbb('0x46')][_0xcbbb('0x4e')]({'where':{'id':_0x59d833[_0xcbbb('0x4d')]['id']}})['then'](function(_0x16991b){return db['sequelize'][_0xcbbb('0x52')](function(_0xd01dff){return _0x16991b[_0xcbbb('0x80')](_0x2754d1,{'transaction':_0xd01dff})[_0xcbbb('0x28')](function(){return BPromise[_0xcbbb('0x85')](_0x458b66,function(_0x3ab011){return db[_0xcbbb('0x86')]['upsert']({'TeamId':_0x3ab011['id'],'VoicePrefixId':_0x59d833[_0xcbbb('0x4d')]['id']},{'transaction':_0xd01dff});});})[_0xcbbb('0x28')](function(){return BPromise[_0xcbbb('0x85')](_0x962f3f,function(_0x354314){return db['UserVoicePrefix'][_0xcbbb('0x87')]({'where':{'UserId':_0x354314['id'],'VoicePrefixId':_0x59d833[_0xcbbb('0x4d')]['id']},'transaction':_0xd01dff});});})[_0xcbbb('0x28')](function(){_0x962f3f[_0xcbbb('0x88')](function(_0x3fc8da){socket[_0xcbbb('0x76')]('userVoicePrefix:save',{'UserId':_0x3fc8da['id'],'VoicePrefixId':_0x16991b['id']});});});});});}})[_0xcbbb('0x28')](respondWithStatusCode(_0x39951f,null))[_0xcbbb('0x4b')](handleError(_0x39951f,null));};exports[_0xcbbb('0x89')]=function(_0x23bda8,_0x233c44,_0x26545e){return db[_0xcbbb('0x7d')][_0xcbbb('0x49')]({'where':{'id':_0x23bda8['query'][_0xcbbb('0x73')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xcbbb('0x81'),'attributes':['id'],'raw':!![]}]})[_0xcbbb('0x28')](handleEntityNotFound(_0x233c44,null))[_0xcbbb('0x28')](function(_0x510bc9){var _0x1ce1c4=_[_0xcbbb('0x32')](_0x510bc9,'id');var _0x7fc4ea=[];var _0xde4f2b=[];var _0xabe61=squel['select']();_0xabe61[_0xcbbb('0x8a')]('tq.TeamId')[_0xcbbb('0x8b')]('team_has_voice_prefixes','tq')[_0xcbbb('0x8c')](_0xcbbb('0x8d'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xcbbb('0x41')](_0xcbbb('0x8e'),_0x23bda8[_0xcbbb('0x4d')]['id']);for(var _0x3a3e73=0x0;_0x3a3e73<_0x510bc9[_0xcbbb('0x3d')];_0x3a3e73+=0x1){let _0x517af0=_0x510bc9[_0x3a3e73];for(var _0x4312c3=0x0;_0x4312c3<_0x517af0[_0xcbbb('0x81')][_0xcbbb('0x3d')];_0x4312c3+=0x1){let _0x1b34ac=_0x517af0[_0xcbbb('0x81')][_0x4312c3];var _0x402d10=_0xabe61[_0xcbbb('0x8f')]();_0x402d10[_0xcbbb('0x41')]('ut.UserId\x20=\x20?',_0x1b34ac['id']);_0xde4f2b['push'](db[_0xcbbb('0x51')]['query'](_0x402d10[_0xcbbb('0x90')](),{'type':db[_0xcbbb('0x51')][_0xcbbb('0x91')][_0xcbbb('0x92')]})[_0xcbbb('0x28')](function(_0x2129d8){if(_0x2129d8[_0xcbbb('0x3d')]===0x1){return _0x1b34ac['id'];}else{var _0x274e33=_[_0xcbbb('0x93')](_[_0xcbbb('0x32')](_0x2129d8,_0xcbbb('0x94')),function(_0x1c8981){return _[_0xcbbb('0x95')](_0x1ce1c4,_0x1c8981);});if(_0x274e33){return _0x1b34ac['id'];}}}));}}return BPromise[_0xcbbb('0x96')](_0xde4f2b)[_0xcbbb('0x28')](function(_0x4bcb5d){_0x7fc4ea=_(_0x7fc4ea)[_0xcbbb('0x97')](_0x4bcb5d)[_0xcbbb('0x98')]()[_0xcbbb('0x99')]();return db[_0xcbbb('0x46')]['find']({'where':{'id':_0x23bda8[_0xcbbb('0x4d')]['id']}})[_0xcbbb('0x28')](function(_0x40fc06){return db[_0xcbbb('0x51')][_0xcbbb('0x52')](function(_0x357810){return _0x40fc06['removeTeams'](_0x23bda8[_0xcbbb('0x38')][_0xcbbb('0x73')],{'transaction':_0x357810})['then'](function(){if(!_[_0xcbbb('0x9a')](_0x7fc4ea)){return _0x40fc06[_0xcbbb('0x78')](_0x7fc4ea,{'transaction':_0x357810});}})[_0xcbbb('0x28')](function(){_0x7fc4ea[_0xcbbb('0x88')](function(_0x49e6e1){socket['emit'](_0xcbbb('0x9b'),{'UserId':_0x49e6e1,'VoicePrefixId':_0x40fc06['id']});});});});});});})[_0xcbbb('0x28')](respondWithStatusCode(_0x233c44,null))[_0xcbbb('0x4b')](handleError(_0x233c44,null));};
\ No newline at end of file
+var _0x1eba=['UserVoicePrefix','findOrCreate','forEach','select','field','tq.TeamId','from','team_has_voice_prefixes','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','SELECT','TeamId','includes','all','compact','removeTeams','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','register','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','VoicePrefixes','error','stack','name','send','index','map','VoicePrefix','fieldName','type','key','model','keys','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','rawAttributes','intersection','options','find','describe','create','sequelize','transaction','body','VoiceExtension','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','context','from-sip','system','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','NoOp','VoicePrefixId','Extensions\x20creation\x20failed','push','CDR(prefix)=','PREFIX-CALLERIDALL=','callerIdAll','No\x20callerid\x20available','goto','${EXTEN:','charAt','system-','findById','addAgents','ids','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','getTeams','Team','voicePause','flatMap','Agents','addTeams','each'];(function(_0x728a62,_0x53677e){var _0x10cec9=function(_0x4ece30){while(--_0x4ece30){_0x728a62['push'](_0x728a62['shift']());}};_0x10cec9(++_0x53677e);}(_0x1eba,0x1d7));var _0xa1eb=function(_0x515afd,_0x1a1e91){_0x515afd=_0x515afd-0x0;var _0x536d53=_0x1eba[_0x515afd];return _0x536d53;};'use strict';var emlformat=require(_0xa1eb('0x0'));var rimraf=require(_0xa1eb('0x1'));var zipdir=require(_0xa1eb('0x2'));var jsonpatch=require(_0xa1eb('0x3'));var rp=require(_0xa1eb('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa1eb('0x5'));var util=require(_0xa1eb('0x6'));var path=require(_0xa1eb('0x7'));var sox=require(_0xa1eb('0x8'));var csv=require(_0xa1eb('0x9'));var ejs=require(_0xa1eb('0xa'));var fs=require('fs');var fs_extra=require(_0xa1eb('0xb'));var _=require(_0xa1eb('0xc'));var squel=require(_0xa1eb('0xd'));var crypto=require(_0xa1eb('0xe'));var jsforce=require(_0xa1eb('0xf'));var deskjs=require(_0xa1eb('0x10'));var toCsv=require('to-csv');var querystring=require(_0xa1eb('0x11'));var Papa=require('papaparse');var Redis=require(_0xa1eb('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xa1eb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa1eb('0x14'));var logger=require('../../config/logger')(_0xa1eb('0x15'));var utils=require(_0xa1eb('0x16'));var config=require(_0xa1eb('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xa1eb('0x18'))['db'];config[_0xa1eb('0x19')]=_['defaults'](config[_0xa1eb('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa1eb('0x19')]));require('./voicePrefix.socket')[_0xa1eb('0x1a')](socket);function respondWithStatusCode(_0x2178e2,_0x14e048){_0x14e048=_0x14e048||0xcc;return function(_0x2877cb){if(_0x2877cb){return _0x2178e2[_0xa1eb('0x1b')](_0x14e048);}return _0x2178e2[_0xa1eb('0x1c')](_0x14e048)[_0xa1eb('0x1d')]();};}function respondWithResult(_0x45d6dd,_0x211e42){_0x211e42=_0x211e42||0xc8;return function(_0x4aa527){if(_0x4aa527){return _0x45d6dd[_0xa1eb('0x1c')](_0x211e42)['json'](_0x4aa527);}};}function respondWithFilteredResult(_0x1401ef,_0x3dafcd){return function(_0x33c4e3){if(_0x33c4e3){var _0x1a5d2c=typeof _0x3dafcd['offset']===_0xa1eb('0x1e')&&typeof _0x3dafcd[_0xa1eb('0x1f')]===_0xa1eb('0x1e');var _0xcf45c1=_0x33c4e3[_0xa1eb('0x20')];var _0x3b8607=_0x1a5d2c?0x0:_0x3dafcd[_0xa1eb('0x21')];var _0x166f7f=_0x1a5d2c?_0x33c4e3['count']:_0x3dafcd[_0xa1eb('0x21')]+_0x3dafcd['limit'];var _0x2258d1;if(_0x166f7f>=_0xcf45c1){_0x166f7f=_0xcf45c1;_0x2258d1=0xc8;}else{_0x2258d1=0xce;}_0x1401ef[_0xa1eb('0x1c')](_0x2258d1);return _0x1401ef[_0xa1eb('0x22')](_0xa1eb('0x23'),_0x3b8607+'-'+_0x166f7f+'/'+_0xcf45c1)['json'](_0x33c4e3);}return null;};}function patchUpdates(_0x539634){return function(_0x168221){try{jsonpatch[_0xa1eb('0x24')](_0x168221,_0x539634,!![]);}catch(_0x5b0903){return BPromise[_0xa1eb('0x25')](_0x5b0903);}return _0x168221[_0xa1eb('0x26')]();};}function saveUpdates(_0x258d3a,_0xa6b20c){return function(_0x23b49e){if(_0x23b49e){return _0x23b49e[_0xa1eb('0x27')](_0x258d3a)[_0xa1eb('0x28')](function(_0x364b1c){return _0x364b1c;});}return null;};}function removeEntity(_0xd7bb88,_0x352796){return function(_0xb77fd6){if(_0xb77fd6){return _0xb77fd6[_0xa1eb('0x29')]()['then'](function(){var _0x7c617e=_0xb77fd6[_0xa1eb('0x2a')]({'plain':!![]});var _0x491f37=_0xa1eb('0x2b');return db['UserProfileResource'][_0xa1eb('0x29')]({'where':{'type':_0x491f37,'resourceId':_0x7c617e['id']}})[_0xa1eb('0x28')](function(){return _0xb77fd6;});})['then'](function(){_0xd7bb88[_0xa1eb('0x1c')](0xcc)[_0xa1eb('0x1d')]();});}};}function handleEntityNotFound(_0x136835,_0x4f64bb){return function(_0x12cf56){if(!_0x12cf56){_0x136835[_0xa1eb('0x1b')](0x194);}return _0x12cf56;};}function handleError(_0x55f5cc,_0x273a42){_0x273a42=_0x273a42||0x1f4;return function(_0xb27bf9){logger[_0xa1eb('0x2c')](_0xb27bf9[_0xa1eb('0x2d')]);if(_0xb27bf9[_0xa1eb('0x2e')]){delete _0xb27bf9['name'];}_0x55f5cc[_0xa1eb('0x1c')](_0x273a42)[_0xa1eb('0x2f')](_0xb27bf9);};}exports[_0xa1eb('0x30')]=function(_0x2ae21d,_0x383e26){var _0xcd9efd={},_0x1d5b64={},_0xcfda64={'count':0x0,'rows':[]};var _0x254727=_[_0xa1eb('0x31')](db[_0xa1eb('0x32')]['rawAttributes'],function(_0x563b11){return{'name':_0x563b11[_0xa1eb('0x33')],'type':_0x563b11[_0xa1eb('0x34')][_0xa1eb('0x35')]};});_0x1d5b64[_0xa1eb('0x36')]=_[_0xa1eb('0x31')](_0x254727,'name');_0x1d5b64['query']=_[_0xa1eb('0x37')](_0x2ae21d[_0xa1eb('0x38')]);_0x1d5b64['filters']=_['intersection'](_0x1d5b64[_0xa1eb('0x36')],_0x1d5b64['query']);_0xcd9efd[_0xa1eb('0x39')]=_['intersection'](_0x1d5b64[_0xa1eb('0x36')],qs[_0xa1eb('0x3a')](_0x2ae21d[_0xa1eb('0x38')]['fields']));_0xcd9efd[_0xa1eb('0x39')]=_0xcd9efd[_0xa1eb('0x39')][_0xa1eb('0x3b')]?_0xcd9efd['attributes']:_0x1d5b64[_0xa1eb('0x36')];if(!_0x2ae21d[_0xa1eb('0x38')][_0xa1eb('0x3c')](_0xa1eb('0x3d'))){_0xcd9efd[_0xa1eb('0x1f')]=qs['limit'](_0x2ae21d[_0xa1eb('0x38')][_0xa1eb('0x1f')]);_0xcd9efd[_0xa1eb('0x21')]=qs[_0xa1eb('0x21')](_0x2ae21d[_0xa1eb('0x38')][_0xa1eb('0x21')]);}_0xcd9efd[_0xa1eb('0x3e')]=qs[_0xa1eb('0x3f')](_0x2ae21d['query'][_0xa1eb('0x3f')]);_0xcd9efd[_0xa1eb('0x40')]=qs[_0xa1eb('0x41')](_[_0xa1eb('0x42')](_0x2ae21d[_0xa1eb('0x38')],_0x1d5b64['filters']),_0x254727);if(_0x2ae21d[_0xa1eb('0x38')][_0xa1eb('0x43')]){_0xcd9efd[_0xa1eb('0x40')]=_['merge'](_0xcd9efd[_0xa1eb('0x40')],{'$or':_[_0xa1eb('0x31')](_0x254727,function(_0x2ae6d8){if(_0x2ae6d8[_0xa1eb('0x34')]!==_0xa1eb('0x44')){var _0x1e5b3b={};_0x1e5b3b[_0x2ae6d8[_0xa1eb('0x2e')]]={'$like':'%'+_0x2ae21d['query'][_0xa1eb('0x43')]+'%'};return _0x1e5b3b;}})});}_0xcd9efd=_[_0xa1eb('0x45')]({},_0xcd9efd,_0x2ae21d['options']);var _0xf6c04b={'where':_0xcd9efd['where']};return db[_0xa1eb('0x32')][_0xa1eb('0x20')](_0xf6c04b)[_0xa1eb('0x28')](function(_0x361675){_0xcfda64[_0xa1eb('0x20')]=_0x361675;if(_0x2ae21d[_0xa1eb('0x38')][_0xa1eb('0x46')]){_0xcd9efd[_0xa1eb('0x47')]=[{'all':!![]}];}return db[_0xa1eb('0x32')][_0xa1eb('0x48')](_0xcd9efd);})[_0xa1eb('0x28')](function(_0x3c4690){_0xcfda64[_0xa1eb('0x49')]=_0x3c4690;return _0xcfda64;})[_0xa1eb('0x28')](respondWithFilteredResult(_0x383e26,_0xcd9efd))[_0xa1eb('0x4a')](handleError(_0x383e26,null));};exports[_0xa1eb('0x4b')]=function(_0x4e068d,_0x10f983){var _0x4fd053={'raw':![],'where':{'id':_0x4e068d[_0xa1eb('0x4c')]['id']}},_0x3edc6b={};_0x3edc6b['model']=_['keys'](db[_0xa1eb('0x32')][_0xa1eb('0x4d')]);_0x3edc6b[_0xa1eb('0x38')]=_['keys'](_0x4e068d[_0xa1eb('0x38')]);_0x3edc6b[_0xa1eb('0x41')]=_[_0xa1eb('0x4e')](_0x3edc6b[_0xa1eb('0x36')],_0x3edc6b[_0xa1eb('0x38')]);_0x4fd053[_0xa1eb('0x39')]=_[_0xa1eb('0x4e')](_0x3edc6b[_0xa1eb('0x36')],qs[_0xa1eb('0x3a')](_0x4e068d[_0xa1eb('0x38')][_0xa1eb('0x3a')]));_0x4fd053[_0xa1eb('0x39')]=_0x4fd053[_0xa1eb('0x39')][_0xa1eb('0x3b')]?_0x4fd053['attributes']:_0x3edc6b[_0xa1eb('0x36')];if(_0x4e068d[_0xa1eb('0x38')][_0xa1eb('0x46')]){_0x4fd053[_0xa1eb('0x47')]=[{'all':!![]}];}_0x4fd053=_[_0xa1eb('0x45')]({},_0x4fd053,_0x4e068d[_0xa1eb('0x4f')]);return db[_0xa1eb('0x32')]['find'](_0x4fd053)[_0xa1eb('0x28')](handleEntityNotFound(_0x10f983,null))[_0xa1eb('0x28')](respondWithResult(_0x10f983,null))[_0xa1eb('0x4a')](handleError(_0x10f983,null));};exports[_0xa1eb('0x29')]=function(_0x8975a1,_0x1302f6){return db[_0xa1eb('0x32')][_0xa1eb('0x50')]({'where':{'id':_0x8975a1[_0xa1eb('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1302f6,null))[_0xa1eb('0x28')](removeEntity(_0x1302f6,null))['catch'](handleError(_0x1302f6,null));};exports[_0xa1eb('0x51')]=function(_0x495c01,_0x1a815e){return db[_0xa1eb('0x32')][_0xa1eb('0x51')]()['then'](respondWithResult(_0x1a815e,null))[_0xa1eb('0x4a')](handleError(_0x1a815e,null));};exports[_0xa1eb('0x52')]=function(_0x549c95,_0x10d6d5){var _0x2926e7;return db[_0xa1eb('0x53')][_0xa1eb('0x54')](function(_0x11cc84){return db[_0xa1eb('0x32')][_0xa1eb('0x52')](_0x549c95[_0xa1eb('0x55')],{'transaction':_0x11cc84})[_0xa1eb('0x28')](function(_0x3d9a41){_0x2926e7=_0x3d9a41[_0xa1eb('0x2a')]({'plain':!![]});return db[_0xa1eb('0x56')][_0xa1eb('0x50')]({'where':{'id':_0x2926e7[_0xa1eb('0x57')]},'raw':!![]})[_0xa1eb('0x28')](function(_0x2ba6c0){return createVoicePrefixExtensions(_0x2926e7,_0x2ba6c0,_0x11cc84);});});})[_0xa1eb('0x28')](function(){var _0x589186=_0x549c95[_0xa1eb('0x58')][_0xa1eb('0x2a')]({'plain':!![]});if(!_0x589186)throw new Error(_0xa1eb('0x59'));if(_0x589186[_0xa1eb('0x5a')]===_0xa1eb('0x58')){var _0x1f5da6=_0x2926e7;return db['UserProfileSection'][_0xa1eb('0x50')]({'where':{'name':_0xa1eb('0x2b'),'userProfileId':_0x589186[_0xa1eb('0x5b')]},'raw':!![]})[_0xa1eb('0x28')](function(_0xa46d79){if(_0xa46d79&&_0xa46d79[_0xa1eb('0x5c')]===0x0){return db[_0xa1eb('0x5d')]['create']({'name':_0x1f5da6[_0xa1eb('0x2e')],'resourceId':_0x1f5da6['id'],'type':_0xa46d79[_0xa1eb('0x2e')],'sectionId':_0xa46d79['id']},{})[_0xa1eb('0x28')](function(){return _0x2926e7;});}else{return _0x2926e7;}})[_0xa1eb('0x4a')](function(_0x4c30ad){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4c30ad);throw _0x4c30ad;});}return _0x2926e7;})['then'](respondWithResult(_0x10d6d5,null))[_0xa1eb('0x4a')](handleError(_0x10d6d5,null));};function Extension(_0x1e1e5d,_0x591907,_0x4643f3,_0x3e2d2f){this[_0xa1eb('0x5e')]=_0xa1eb('0x5f');this['exten']=_0x1e1e5d;this['app']=_0x4643f3;this[_0xa1eb('0x34')]=_0xa1eb('0x60');this[_0xa1eb('0x61')]=_0xa1eb('0x62');this[_0xa1eb('0x63')]=_0x591907;this[_0xa1eb('0x64')]=_0x3e2d2f;}function createVoicePrefixExtensions(_0x51580f,_0x532dfa,_0x43f223){return new BPromise(function(_0x5afc3e,_0x3ea940){var _0x57172d=new Extension(formatPrefixName(_0x51580f[_0xa1eb('0x65')]),0x1,_0xa1eb('0x66'),'Voice\x20Prefix');_0x57172d[_0xa1eb('0x67')]=_0x51580f['id'];return db[_0xa1eb('0x56')]['create'](_0x57172d,{'transaction':_0x43f223})[_0xa1eb('0x28')](function(_0x17feb5){var _0x3b97c7=_0x17feb5['get']({'plain':!![]});var _0x9799d3=_[_0xa1eb('0x31')](addVoicePrefixExtensions(_0x51580f,_0x532dfa),function(_0x4af59a){_0x4af59a[_0xa1eb('0x57')]=_0x3b97c7['id'];_0x4af59a[_0xa1eb('0x67')]=_0x51580f['id'];return _0x4af59a;});return db[_0xa1eb('0x56')]['bulkCreate'](_0x9799d3,{'transaction':_0x43f223})[_0xa1eb('0x28')](function(_0x5aa916){if(!_0x5aa916){return _0x3ea940(_0xa1eb('0x68'));}else{return _0x5afc3e(_0x5aa916);}})[_0xa1eb('0x4a')](function(_0x40eae0){return _0x3ea940(_0x40eae0);});});;});};function addVoicePrefixExtensions(_0x331a80,_0x2df867){var _0x48f49d=[];var _0x2aba03=formatPrefixName(_0x331a80[_0xa1eb('0x65')]);_0x48f49d[_0xa1eb('0x69')](new Extension(_0x2aba03,0x2,'Set',_0xa1eb('0x6a')+_0x331a80['name']));if(_0x331a80['callerIdAll']){_0x48f49d['push'](new Extension(_0x2aba03,0x3,'Set',_0xa1eb('0x6b')+_0x331a80[_0xa1eb('0x6c')]));}else{_0x48f49d[_0xa1eb('0x69')](new Extension(_0x2aba03,0x3,_0xa1eb('0x66'),_0xa1eb('0x6d')));}_0x48f49d[_0xa1eb('0x69')](new Extension(_0x2aba03,0x4,_0xa1eb('0x6e'),_0x2df867[_0xa1eb('0x5e')]+','+_0xa1eb('0x6f')+(0x8+_0x331a80[_0xa1eb('0x2e')]['length'])+'}'+','+0x1));return _0x48f49d;}function formatPrefixName(_0x79bee8){var _0x1d1c91='_';for(var _0x46207c=0x0;_0x46207c<_0x79bee8[_0xa1eb('0x3b')];_0x46207c++){if(_0x79bee8[_0xa1eb('0x70')](_0x46207c)=='-'){_0x1d1c91+=_0x79bee8[_0xa1eb('0x70')](_0x46207c);}else{_0x1d1c91+='['+_0x79bee8['charAt'](_0x46207c)+']';}}_0x1d1c91+='.';return _0x1d1c91;}exports[_0xa1eb('0x27')]=function(_0x2b6996,_0x16c5a3,_0x58147f){var _0x1434a1=_0x2b6996[_0xa1eb('0x55')];_0x1434a1[_0xa1eb('0x65')]=_0xa1eb('0x71')+_0x1434a1[_0xa1eb('0x2e')]+'-';return db['sequelize'][_0xa1eb('0x54')](function(_0x50eff6){return db[_0xa1eb('0x32')]['update'](_0x1434a1,{'where':{'id':_0x1434a1['id']},'transaction':_0x50eff6})[_0xa1eb('0x28')](function(){return db[_0xa1eb('0x56')][_0xa1eb('0x29')]({'where':{'VoicePrefixId':_0x1434a1['id']},'transaction':_0x50eff6})[_0xa1eb('0x28')](function(){return db['VoiceExtension'][_0xa1eb('0x50')]({'where':{'id':_0x1434a1[_0xa1eb('0x57')]},'raw':!![]})[_0xa1eb('0x28')](function(_0x293f74){return createVoicePrefixExtensions(_0x1434a1,_0x293f74,_0x50eff6);});});});})['then'](function(){return db[_0xa1eb('0x32')][_0xa1eb('0x72')](_0x1434a1['id']);})[_0xa1eb('0x28')](respondWithResult(_0x16c5a3,null))[_0xa1eb('0x4a')](handleError(_0x16c5a3,null));};exports[_0xa1eb('0x73')]=function(_0x22a7cb,_0x389e44,_0x471633){return db[_0xa1eb('0x32')]['find']({'where':{'id':_0x22a7cb['params']['id']}})['then'](handleEntityNotFound(_0x389e44,null))[_0xa1eb('0x28')](function(_0x5b7785){if(_0x5b7785){return _0x5b7785[_0xa1eb('0x73')](_0x22a7cb[_0xa1eb('0x55')]['ids'],_['omit'](_0x22a7cb[_0xa1eb('0x55')],[_0xa1eb('0x74'),'id'])||{})[_0xa1eb('0x75')](function(_0x6027f7){for(var _0x470489=0x0;_0x470489<_0x22a7cb['body']['ids'][_0xa1eb('0x3b')];_0x470489+=0x1){socket[_0xa1eb('0x76')](_0xa1eb('0x77'),{'UserId':Number(_0x22a7cb[_0xa1eb('0x55')]['ids'][_0x470489]),'VoicePrefixId':Number(_0x22a7cb[_0xa1eb('0x4c')]['id'])});}return _0x6027f7;});}})[_0xa1eb('0x28')](respondWithResult(_0x389e44,null))[_0xa1eb('0x4a')](handleError(_0x389e44,null));};exports[_0xa1eb('0x78')]=function(_0x3863ce,_0x37d8c4,_0x3fd52a){return db[_0xa1eb('0x32')][_0xa1eb('0x50')]({'where':{'id':_0x3863ce[_0xa1eb('0x4c')]['id']}})[_0xa1eb('0x28')](handleEntityNotFound(_0x37d8c4,null))['then'](function(_0x21d884){if(_0x21d884){return _0x21d884[_0xa1eb('0x78')](_0x3863ce[_0xa1eb('0x38')][_0xa1eb('0x74')])[_0xa1eb('0x28')](function(){if(_[_0xa1eb('0x79')](_0x3863ce['query'][_0xa1eb('0x74')])){for(var _0x36a94f=0x0;_0x36a94f<_0x3863ce[_0xa1eb('0x38')][_0xa1eb('0x74')]['length'];_0x36a94f+=0x1){socket['emit'](_0xa1eb('0x7a'),{'UserId':Number(_0x3863ce['query'][_0xa1eb('0x74')][_0x36a94f]),'VoicePrefixId':Number(_0x3863ce[_0xa1eb('0x4c')]['id'])});}}else{socket['emit'](_0xa1eb('0x7a'),{'UserId':Number(_0x3863ce[_0xa1eb('0x38')]['ids']),'VoicePrefixId':Number(_0x3863ce[_0xa1eb('0x4c')]['id'])});}});}})[_0xa1eb('0x28')](respondWithStatusCode(_0x37d8c4,null))[_0xa1eb('0x4a')](handleError(_0x37d8c4,null));};exports[_0xa1eb('0x7b')]=function(_0x3d9034,_0x20cf70,_0x824123){var _0x2ce2e1={};var _0x3d32da={};var _0x64943f;var _0x3b4851;return db['VoicePrefix'][_0xa1eb('0x7c')]({'where':{'id':_0x3d9034[_0xa1eb('0x4c')]['id']}})[_0xa1eb('0x28')](handleEntityNotFound(_0x20cf70,null))[_0xa1eb('0x28')](function(_0x49e563){if(_0x49e563){_0x64943f=_0x49e563;_0x3d32da[_0xa1eb('0x36')]=_[_0xa1eb('0x37')](db[_0xa1eb('0x7d')]['rawAttributes']);_0x3d32da[_0xa1eb('0x38')]=_[_0xa1eb('0x37')](_0x3d9034[_0xa1eb('0x38')]);_0x3d32da['filters']=_[_0xa1eb('0x4e')](_0x3d32da['model'],_0x3d32da[_0xa1eb('0x38')]);_0x2ce2e1[_0xa1eb('0x39')]=_[_0xa1eb('0x4e')](_0x3d32da[_0xa1eb('0x36')],qs[_0xa1eb('0x3a')](_0x3d9034[_0xa1eb('0x38')][_0xa1eb('0x3a')]));_0x2ce2e1[_0xa1eb('0x39')]=_0x2ce2e1['attributes'][_0xa1eb('0x3b')]?_0x2ce2e1[_0xa1eb('0x39')]:_0x3d32da[_0xa1eb('0x36')];_0x2ce2e1[_0xa1eb('0x3e')]=qs[_0xa1eb('0x3f')](_0x3d9034['query'][_0xa1eb('0x3f')]);_0x2ce2e1[_0xa1eb('0x40')]=qs['filters'](_[_0xa1eb('0x42')](_0x3d9034['query'],_0x3d32da['filters']));if(_0x3d9034[_0xa1eb('0x38')][_0xa1eb('0x43')]){_0x2ce2e1['where']=_[_0xa1eb('0x45')](_0x2ce2e1[_0xa1eb('0x40')],{'$or':_['map'](_0x2ce2e1[_0xa1eb('0x39')],function(_0x2c49d1){var _0x4d2598={};_0x4d2598[_0x2c49d1]={'$like':'%'+_0x3d9034['query'][_0xa1eb('0x43')]+'%'};return _0x4d2598;})});}_0x2ce2e1=_['merge']({},_0x2ce2e1,_0x3d9034[_0xa1eb('0x4f')]);return _0x64943f[_0xa1eb('0x7b')](_0x2ce2e1);}})[_0xa1eb('0x28')](function(_0x316a75){if(_0x316a75){_0x3b4851=_0x316a75[_0xa1eb('0x3b')];if(!_0x3d9034[_0xa1eb('0x38')]['hasOwnProperty'](_0xa1eb('0x3d'))){_0x2ce2e1['limit']=qs[_0xa1eb('0x1f')](_0x3d9034[_0xa1eb('0x38')][_0xa1eb('0x1f')]);_0x2ce2e1[_0xa1eb('0x21')]=qs[_0xa1eb('0x21')](_0x3d9034[_0xa1eb('0x38')][_0xa1eb('0x21')]);}return _0x64943f['getAgents'](_0x2ce2e1);}})[_0xa1eb('0x28')](function(_0x4effc0){if(_0x4effc0){return _0x4effc0?{'count':_0x3b4851,'rows':_0x4effc0}:null;}})['then'](respondWithResult(_0x20cf70,null))[_0xa1eb('0x4a')](handleError(_0x20cf70,null));};exports[_0xa1eb('0x7e')]=function(_0x456ddb,_0x559d58,_0x14eff1){var _0x717fbf={};var _0x5ef8c1={};var _0x2dd909;var _0x58d694;return db[_0xa1eb('0x32')]['findOne']({'where':{'id':_0x456ddb[_0xa1eb('0x4c')]['id']}})[_0xa1eb('0x28')](handleEntityNotFound(_0x559d58,null))['then'](function(_0x52c3d6){if(_0x52c3d6){_0x2dd909=_0x52c3d6;_0x5ef8c1[_0xa1eb('0x36')]=_[_0xa1eb('0x37')](db[_0xa1eb('0x7f')][_0xa1eb('0x4d')]);_0x5ef8c1[_0xa1eb('0x38')]=_[_0xa1eb('0x37')](_0x456ddb[_0xa1eb('0x38')]);_0x5ef8c1[_0xa1eb('0x41')]=_[_0xa1eb('0x4e')](_0x5ef8c1[_0xa1eb('0x36')],_0x5ef8c1[_0xa1eb('0x38')]);_0x717fbf[_0xa1eb('0x39')]=_[_0xa1eb('0x4e')](_0x5ef8c1[_0xa1eb('0x36')],qs[_0xa1eb('0x3a')](_0x456ddb['query'][_0xa1eb('0x3a')]));_0x717fbf[_0xa1eb('0x39')]=_0x717fbf['attributes'][_0xa1eb('0x3b')]?_0x717fbf['attributes']:_0x5ef8c1[_0xa1eb('0x36')];_0x717fbf[_0xa1eb('0x3e')]=qs[_0xa1eb('0x3f')](_0x456ddb['query'][_0xa1eb('0x3f')]);_0x717fbf[_0xa1eb('0x40')]=qs[_0xa1eb('0x41')](_[_0xa1eb('0x42')](_0x456ddb['query'],_0x5ef8c1[_0xa1eb('0x41')]));if(_0x456ddb['query'][_0xa1eb('0x43')]){_0x717fbf[_0xa1eb('0x40')]=_[_0xa1eb('0x45')](_0x717fbf[_0xa1eb('0x40')],{'$or':_[_0xa1eb('0x31')](_0x717fbf[_0xa1eb('0x39')],function(_0xc27d40){var _0x1e3d9c={};_0x1e3d9c[_0xc27d40]={'$like':'%'+_0x456ddb['query'][_0xa1eb('0x43')]+'%'};return _0x1e3d9c;})});}_0x717fbf=_[_0xa1eb('0x45')]({},_0x717fbf,_0x456ddb[_0xa1eb('0x4f')]);return _0x2dd909[_0xa1eb('0x7e')](_0x717fbf);}})[_0xa1eb('0x28')](function(_0x322728){if(_0x322728){_0x58d694=_0x322728[_0xa1eb('0x3b')];if(!_0x456ddb[_0xa1eb('0x38')][_0xa1eb('0x3c')](_0xa1eb('0x3d'))){_0x717fbf[_0xa1eb('0x1f')]=qs[_0xa1eb('0x1f')](_0x456ddb[_0xa1eb('0x38')][_0xa1eb('0x1f')]);_0x717fbf['offset']=qs[_0xa1eb('0x21')](_0x456ddb[_0xa1eb('0x38')]['offset']);}return _0x2dd909['getTeams'](_0x717fbf);}})[_0xa1eb('0x28')](function(_0x106dd9){if(_0x106dd9){return _0x106dd9?{'count':_0x58d694,'rows':_0x106dd9}:null;}})[_0xa1eb('0x28')](respondWithResult(_0x559d58,null))[_0xa1eb('0x4a')](handleError(_0x559d58,null));};exports['addTeams']=function(_0x402acb,_0x49441f,_0x3ad4ca){var _0x2151a8=_0x402acb[_0xa1eb('0x55')][_0xa1eb('0x74')];var _0x33a90e;return db[_0xa1eb('0x7f')][_0xa1eb('0x48')]({'where':{'id':_0x2151a8},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id','name','online',_0xa1eb('0x80'),'interface'],'raw':!![]}]})[_0xa1eb('0x28')](function(_0x2c97f8){if(_0x2c97f8){_0x33a90e=_0x2c97f8;var _0x1c1a59=_[_0xa1eb('0x81')](_0x2c97f8,function(_0x438746){var _0x16528e=_0x438746[_0xa1eb('0x2a')]({'plain':!![]});return _0x16528e[_0xa1eb('0x82')];});return db[_0xa1eb('0x32')][_0xa1eb('0x50')]({'where':{'id':_0x402acb[_0xa1eb('0x4c')]['id']}})[_0xa1eb('0x28')](function(_0x3d9f66){return db[_0xa1eb('0x53')][_0xa1eb('0x54')](function(_0x562666){return _0x3d9f66[_0xa1eb('0x83')](_0x2151a8,{'transaction':_0x562666})['then'](function(){return BPromise[_0xa1eb('0x84')](_0x33a90e,function(_0x230a07){return db['TeamVoicePrefix']['upsert']({'TeamId':_0x230a07['id'],'VoicePrefixId':_0x402acb[_0xa1eb('0x4c')]['id']},{'transaction':_0x562666});});})[_0xa1eb('0x28')](function(){return BPromise[_0xa1eb('0x84')](_0x1c1a59,function(_0x38451d){return db[_0xa1eb('0x85')][_0xa1eb('0x86')]({'where':{'UserId':_0x38451d['id'],'VoicePrefixId':_0x402acb['params']['id']},'transaction':_0x562666});});})[_0xa1eb('0x28')](function(){_0x1c1a59[_0xa1eb('0x87')](function(_0x11d0ab){socket[_0xa1eb('0x76')](_0xa1eb('0x77'),{'UserId':_0x11d0ab['id'],'VoicePrefixId':_0x3d9f66['id']});});});});});}})[_0xa1eb('0x28')](respondWithStatusCode(_0x49441f,null))[_0xa1eb('0x4a')](handleError(_0x49441f,null));};exports['removeTeams']=function(_0x37e2d5,_0x1cfec1,_0x4d9d0b){return db['Team'][_0xa1eb('0x48')]({'where':{'id':_0x37e2d5['query']['ids']},'attributes':['id'],'include':[{'model':db[_0xa1eb('0x7d')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xa1eb('0x28')](handleEntityNotFound(_0x1cfec1,null))[_0xa1eb('0x28')](function(_0x5b8b32){var _0xe47df5=_[_0xa1eb('0x31')](_0x5b8b32,'id');var _0x382643=[];var _0x89e33c=[];var _0x4f535b=squel[_0xa1eb('0x88')]();_0x4f535b[_0xa1eb('0x89')](_0xa1eb('0x8a'))[_0xa1eb('0x8b')](_0xa1eb('0x8c'),'tq')['join']('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0xa1eb('0x40')](_0xa1eb('0x8d'),_0x37e2d5[_0xa1eb('0x4c')]['id']);for(var _0x3da094=0x0;_0x3da094<_0x5b8b32[_0xa1eb('0x3b')];_0x3da094+=0x1){let _0x41e608=_0x5b8b32[_0x3da094];for(var _0x934746=0x0;_0x934746<_0x41e608[_0xa1eb('0x82')][_0xa1eb('0x3b')];_0x934746+=0x1){let _0x34e1ae=_0x41e608[_0xa1eb('0x82')][_0x934746];var _0x368e4e=_0x4f535b[_0xa1eb('0x8e')]();_0x368e4e[_0xa1eb('0x40')](_0xa1eb('0x8f'),_0x34e1ae['id']);_0x89e33c[_0xa1eb('0x69')](db[_0xa1eb('0x53')]['query'](_0x368e4e[_0xa1eb('0x90')](),{'type':db[_0xa1eb('0x53')]['QueryTypes'][_0xa1eb('0x91')]})[_0xa1eb('0x28')](function(_0x155a90){if(_0x155a90[_0xa1eb('0x3b')]===0x1){return _0x34e1ae['id'];}else{var _0x1d018a=_['every'](_['map'](_0x155a90,_0xa1eb('0x92')),function(_0x4ab784){return _[_0xa1eb('0x93')](_0xe47df5,_0x4ab784);});if(_0x1d018a){return _0x34e1ae['id'];}}}));}}return BPromise[_0xa1eb('0x94')](_0x89e33c)['then'](function(_0x4e3121){_0x382643=_(_0x382643)['union'](_0x4e3121)[_0xa1eb('0x95')]()['value']();return db[_0xa1eb('0x32')][_0xa1eb('0x50')]({'where':{'id':_0x37e2d5[_0xa1eb('0x4c')]['id']}})[_0xa1eb('0x28')](function(_0x29ecae){return db[_0xa1eb('0x53')][_0xa1eb('0x54')](function(_0x5a0dd4){return _0x29ecae[_0xa1eb('0x96')](_0x37e2d5[_0xa1eb('0x38')][_0xa1eb('0x74')],{'transaction':_0x5a0dd4})['then'](function(){if(!_['isEmpty'](_0x382643)){return _0x29ecae[_0xa1eb('0x78')](_0x382643,{'transaction':_0x5a0dd4});}})[_0xa1eb('0x28')](function(){_0x382643[_0xa1eb('0x87')](function(_0x42720b){socket[_0xa1eb('0x76')]('userVoicePrefix:remove',{'UserId':_0x42720b,'VoicePrefixId':_0x29ecae['id']});});});});});});})[_0xa1eb('0x28')](respondWithStatusCode(_0x1cfec1,null))['catch'](handleError(_0x1cfec1,null));};
\ No newline at end of file
index 3174a5f..bc9ffe2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec69=['../../mysqldb','VoicePrefix','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x3124f8,_0x1a8b23){var _0x5bab5f=function(_0x18b09b){while(--_0x18b09b){_0x3124f8['push'](_0x3124f8['shift']());}};_0x5bab5f(++_0x1a8b23);}(_0xec69,0xe5));var _0x9ec6=function(_0x72493a,_0x158721){_0x72493a=_0x72493a-0x0;var _0x4c6027=_0xec69[_0x72493a];return _0x4c6027;};'use strict';var EventEmitter=require(_0x9ec6('0x0'));var VoicePrefix=require(_0x9ec6('0x1'))['db'][_0x9ec6('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x9ec6('0x3')](0x0);var events={'afterCreate':_0x9ec6('0x4'),'afterUpdate':_0x9ec6('0x5'),'afterDestroy':_0x9ec6('0x6')};function emitEvent(_0x33ee67){return function(_0x1e293b,_0x34142b,_0x50062c){VoicePrefixEvents[_0x9ec6('0x7')](_0x33ee67+':'+_0x1e293b['id'],_0x1e293b);VoicePrefixEvents[_0x9ec6('0x7')](_0x33ee67,_0x1e293b);_0x50062c(null);};}for(var e in events){if(events[_0x9ec6('0x8')](e)){var event=events[e];VoicePrefix[_0x9ec6('0x9')](e,emitEvent(event));}}module['exports']=VoicePrefixEvents;
\ No newline at end of file
+var _0x922c=['exports','events','../../mysqldb','setMaxListeners','remove','emit','hasOwnProperty','hook'];(function(_0x258b37,_0x3078b3){var _0x34d71d=function(_0x26f5aa){while(--_0x26f5aa){_0x258b37['push'](_0x258b37['shift']());}};_0x34d71d(++_0x3078b3);}(_0x922c,0x121));var _0xc922=function(_0x2f62aa,_0x108e95){_0x2f62aa=_0x2f62aa-0x0;var _0x1a341f=_0x922c[_0x2f62aa];return _0x1a341f;};'use strict';var EventEmitter=require(_0xc922('0x0'));var VoicePrefix=require(_0xc922('0x1'))['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xc922('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xc922('0x3')};function emitEvent(_0x2806f4){return function(_0x3588ad,_0xc9c306,_0x562b03){VoicePrefixEvents[_0xc922('0x4')](_0x2806f4+':'+_0x3588ad['id'],_0x3588ad);VoicePrefixEvents[_0xc922('0x4')](_0x2806f4,_0x3588ad);_0x562b03(null);};}for(var e in events){if(events[_0xc922('0x5')](e)){var event=events[e];VoicePrefix[_0xc922('0x6')](e,emitEvent(event));}}module[_0xc922('0x7')]=VoicePrefixEvents;
\ No newline at end of file
index f9a13fe..be75041 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x606c=['voice_prefixes','api','bluebird','rimraf','../../config/environment','./voicePrefix.attributes','exports','define','VoicePrefix'];(function(_0x1ab0b5,_0x3cf535){var _0x41ffef=function(_0x4f2eb3){while(--_0x4f2eb3){_0x1ab0b5['push'](_0x1ab0b5['shift']());}};_0x41ffef(++_0x3cf535);}(_0x606c,0xf4));var _0xc606=function(_0x187d80,_0x5b793f){_0x187d80=_0x187d80-0x0;var _0x498a77=_0x606c[_0x187d80];return _0x498a77;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xc606('0x0'));var moment=require('moment');var BPromise=require(_0xc606('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc606('0x2'));var config=require(_0xc606('0x3'));var attributes=require(_0xc606('0x4'));module[_0xc606('0x5')]=function(_0x2e5b74,_0x26c9b0){return _0x2e5b74[_0xc606('0x6')](_0xc606('0x7'),attributes,{'tableName':_0xc606('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x07df=['exports','define','VoicePrefix','voice_prefixes','lodash','util','../../config/logger','moment','request-promise','path','../../config/environment','./voicePrefix.attributes'];(function(_0x346585,_0x30f4f4){var _0x2bc4e7=function(_0x56422c){while(--_0x56422c){_0x346585['push'](_0x346585['shift']());}};_0x2bc4e7(++_0x30f4f4);}(_0x07df,0x13c));var _0xf07d=function(_0x113564,_0x3e5bcb){_0x113564=_0x113564-0x0;var _0x151b78=_0x07df[_0x113564];return _0x151b78;};'use strict';var _=require(_0xf07d('0x0'));var util=require(_0xf07d('0x1'));var logger=require(_0xf07d('0x2'))('api');var moment=require(_0xf07d('0x3'));var BPromise=require('bluebird');var rp=require(_0xf07d('0x4'));var fs=require('fs');var path=require(_0xf07d('0x5'));var rimraf=require('rimraf');var config=require(_0xf07d('0x6'));var attributes=require(_0xf07d('0x7'));module[_0xf07d('0x8')]=function(_0x8f393e,_0x21e32b){return _0x8f393e[_0xf07d('0x9')](_0xf07d('0xa'),attributes,{'tableName':_0xf07d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0c41f96..7b447ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x323f=['register','request','then','info','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','VoicePrefix,\x20%s,\x20%s','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket'];(function(_0x206e7c,_0x1d8477){var _0x26299f=function(_0x42f73f){while(--_0x42f73f){_0x206e7c['push'](_0x206e7c['shift']());}};_0x26299f(++_0x1d8477);}(_0x323f,0x1ee));var _0xf323=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x323f[_0x6131cd];return _0x47e916;};'use strict';var _=require('lodash');var util=require(_0xf323('0x0'));var moment=require('moment');var BPromise=require(_0xf323('0x1'));var rs=require(_0xf323('0x2'));var fs=require('fs');var Redis=require(_0xf323('0x3'));var db=require(_0xf323('0x4'))['db'];var utils=require(_0xf323('0x5'));var logger=require(_0xf323('0x6'))(_0xf323('0x7'));var config=require(_0xf323('0x8'));var jayson=require(_0xf323('0x9'));var client=jayson[_0xf323('0xa')]['http']({'port':0x232a});config[_0xf323('0xb')]=_[_0xf323('0xc')](config[_0xf323('0xb')],{'host':_0xf323('0xd'),'port':0x18eb});var socket=require(_0xf323('0xe'))(new Redis(config[_0xf323('0xb')]));require(_0xf323('0xf'))[_0xf323('0x10')](socket);function respondWithRpcPromise(_0x10d1ff,_0x21e82e,_0x22fd48){return new BPromise(function(_0x4196b5,_0x8825ef){return client[_0xf323('0x11')](_0x10d1ff,_0x22fd48)[_0xf323('0x12')](function(_0xb6ec37){logger[_0xf323('0x13')]('VoicePrefix,\x20%s,\x20%s',_0x21e82e,_0xf323('0x14'));logger[_0xf323('0x15')](_0xf323('0x16'),_0x21e82e,'request\x20sent',JSON[_0xf323('0x17')](_0xb6ec37));if(_0xb6ec37[_0xf323('0x18')]){if(_0xb6ec37[_0xf323('0x18')][_0xf323('0x19')]===0x1f4){logger[_0xf323('0x18')](_0xf323('0x1a'),_0x21e82e,_0xb6ec37['error']['message']);return _0x8825ef(_0xb6ec37[_0xf323('0x18')][_0xf323('0x1b')]);}logger[_0xf323('0x18')](_0xf323('0x1a'),_0x21e82e,_0xb6ec37[_0xf323('0x18')]['message']);return _0x4196b5(_0xb6ec37[_0xf323('0x18')][_0xf323('0x1b')]);}else{logger[_0xf323('0x13')](_0xf323('0x1a'),_0x21e82e,'request\x20sent');_0x4196b5(_0xb6ec37[_0xf323('0x1c')][_0xf323('0x1b')]);}})[_0xf323('0x1d')](function(_0x41b2cb){logger['error'](_0xf323('0x1a'),_0x21e82e,_0x41b2cb);_0x8825ef(_0x41b2cb);});});}
\ No newline at end of file
+var _0x1115=['http','defaults','redis','socket.io-emitter','./voicePrefix.socket','register','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client'];(function(_0x34df55,_0x35e243){var _0x211a92=function(_0x185ec8){while(--_0x185ec8){_0x34df55['push'](_0x34df55['shift']());}};_0x211a92(++_0x35e243);}(_0x1115,0x1b6));var _0x5111=function(_0x598076,_0x5106da){_0x598076=_0x598076-0x0;var _0x4dbe23=_0x1115[_0x598076];return _0x4dbe23;};'use strict';var _=require('lodash');var util=require(_0x5111('0x0'));var moment=require(_0x5111('0x1'));var BPromise=require(_0x5111('0x2'));var rs=require(_0x5111('0x3'));var fs=require('fs');var Redis=require(_0x5111('0x4'));var db=require(_0x5111('0x5'))['db'];var utils=require(_0x5111('0x6'));var logger=require(_0x5111('0x7'))(_0x5111('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5111('0x9')][_0x5111('0xa')]({'port':0x232a});config['redis']=_[_0x5111('0xb')](config[_0x5111('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x5111('0xd'))(new Redis(config['redis']));require(_0x5111('0xe'))[_0x5111('0xf')](socket);function respondWithRpcPromise(_0x4ecb50,_0x5e12a7,_0x347d87){return new BPromise(function(_0x5a826a,_0x162624){return client['request'](_0x4ecb50,_0x347d87)[_0x5111('0x10')](function(_0x532984){logger[_0x5111('0x11')](_0x5111('0x12'),_0x5e12a7,_0x5111('0x13'));logger[_0x5111('0x14')](_0x5111('0x15'),_0x5e12a7,_0x5111('0x13'),JSON[_0x5111('0x16')](_0x532984));if(_0x532984[_0x5111('0x17')]){if(_0x532984[_0x5111('0x17')][_0x5111('0x18')]===0x1f4){logger[_0x5111('0x17')](_0x5111('0x12'),_0x5e12a7,_0x532984[_0x5111('0x17')][_0x5111('0x19')]);return _0x162624(_0x532984[_0x5111('0x17')][_0x5111('0x19')]);}logger['error'](_0x5111('0x12'),_0x5e12a7,_0x532984['error']['message']);return _0x5a826a(_0x532984[_0x5111('0x17')][_0x5111('0x19')]);}else{logger[_0x5111('0x11')]('VoicePrefix,\x20%s,\x20%s',_0x5e12a7,_0x5111('0x13'));_0x5a826a(_0x532984[_0x5111('0x1a')]['message']);}})[_0x5111('0x1b')](function(_0x10110b){logger[_0x5111('0x17')](_0x5111('0x12'),_0x5e12a7,_0x10110b);_0x162624(_0x10110b);});});}
\ No newline at end of file
index 87007f7..6b746a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea70=['length','voicePrefix:','./voicePrefix.events','save','remove','removeListener','register'];(function(_0x2232cf,_0x4fd5ae){var _0x524b5a=function(_0x2ff832){while(--_0x2ff832){_0x2232cf['push'](_0x2232cf['shift']());}};_0x524b5a(++_0x4fd5ae);}(_0xea70,0x175));var _0x0ea7=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xea70[_0x20a584];return _0x4b41a8;};'use strict';var VoicePrefixEvents=require(_0x0ea7('0x0'));var events=[_0x0ea7('0x1'),_0x0ea7('0x2'),'update'];function createListener(_0x28ddf0,_0x499815){return function(_0x2fad00){_0x499815['emit'](_0x28ddf0,_0x2fad00);};}function removeListener(_0x425623,_0x3138eb){return function(){VoicePrefixEvents[_0x0ea7('0x3')](_0x425623,_0x3138eb);};}exports[_0x0ea7('0x4')]=function(_0x168372){for(var _0x489be9=0x0,_0x144497=events[_0x0ea7('0x5')];_0x489be9<_0x144497;_0x489be9++){var _0x51b516=events[_0x489be9];var _0x48dedd=createListener(_0x0ea7('0x6')+_0x51b516,_0x168372);VoicePrefixEvents['on'](_0x51b516,_0x48dedd);}};
\ No newline at end of file
+var _0xbde2=['length','voicePrefix:','save','remove','update','emit','removeListener','register'];(function(_0x485d1,_0x3b09d4){var _0x749fff=function(_0x3fce9e){while(--_0x3fce9e){_0x485d1['push'](_0x485d1['shift']());}};_0x749fff(++_0x3b09d4);}(_0xbde2,0x7a));var _0x2bde=function(_0x3b5d5e,_0x4c2724){_0x3b5d5e=_0x3b5d5e-0x0;var _0xa2b00b=_0xbde2[_0x3b5d5e];return _0xa2b00b;};'use strict';var VoicePrefixEvents=require('./voicePrefix.events');var events=[_0x2bde('0x0'),_0x2bde('0x1'),_0x2bde('0x2')];function createListener(_0x4efae2,_0x3b1018){return function(_0x1055e2){_0x3b1018[_0x2bde('0x3')](_0x4efae2,_0x1055e2);};}function removeListener(_0x530c9f,_0x3622bb){return function(){VoicePrefixEvents[_0x2bde('0x4')](_0x530c9f,_0x3622bb);};}exports[_0x2bde('0x5')]=function(_0x3b3039){for(var _0x50c1a1=0x0,_0x30d926=events[_0x2bde('0x6')];_0x50c1a1<_0x30d926;_0x50c1a1++){var _0x39522f=events[_0x50c1a1];var _0x3ddbc4=createListener(_0x2bde('0x7')+_0x39522f,_0x3b3039);VoicePrefixEvents['on'](_0x39522f,_0x3ddbc4);}};
\ No newline at end of file
index c553462..b83e5f9 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(_0x51ed62,_0x574379){var _0x34aee3=function(_0x2958bc){while(--_0x2958bc){_0x51ed62['push'](_0x51ed62['shift']());}};_0x34aee3(++_0x574379);}(_0xb10b,0x12a));var _0xbb10=function(_0x21abf1,_0xcd06d){_0x21abf1=_0x21abf1-0x0;var _0x8f3ba=_0xb10b[_0x21abf1];return _0x8f3ba;};'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 _0xb10b=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','addTeams','addAgents','addLists','addBlackLists','put','/:id','update','delete','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','path','connect-timeout'];(function(_0x1591d4,_0x4ea3bd){var _0x4c46bb=function(_0x13b7e7){while(--_0x13b7e7){_0x1591d4['push'](_0x1591d4['shift']());}};_0x4c46bb(++_0x4ea3bd);}(_0xb10b,0x12a));var _0xbb10=function(_0x154584,_0x421e12){_0x154584=_0x154584-0x0;var _0x969074=_0xb10b[_0x154584];return _0x969074;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0x9')](_0xbb10('0xf'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0xbb10('0x9')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['getHopperFinals']);router[_0xbb10('0x9')]('/:id/hopper_black',auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);router[_0xbb10('0x9')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x13')]);router['get'](_0xbb10('0x14'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x15')]);router[_0xbb10('0x9')](_0xbb10('0x16'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x17')]);router[_0xbb10('0x9')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller['getLists']);router[_0xbb10('0x9')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0x1c')]);router[_0xbb10('0x1b')](_0xbb10('0x1d'),auth[_0xbb10('0xb')](),controller['clone']);router[_0xbb10('0x1b')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);router[_0xbb10('0x1b')](_0xbb10('0x14'),auth['isAuthenticated'](),controller[_0xbb10('0x1f')]);router[_0xbb10('0x1b')]('/:id/lists',auth['isAuthenticated'](),controller[_0xbb10('0x20')]);router[_0xbb10('0x1b')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x21')]);router[_0xbb10('0x22')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x24')]);router[_0xbb10('0x25')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth[_0xbb10('0xb')](),controller[_0xbb10('0x26')]);router[_0xbb10('0x25')]('/:id/users',auth[_0xbb10('0xb')](),controller[_0xbb10('0x27')]);router[_0xbb10('0x25')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x28')]);router[_0xbb10('0x25')]('/:id/blacklists',auth[_0xbb10('0xb')](),controller[_0xbb10('0x29')]);module[_0xbb10('0x2a')]=router;
\ No newline at end of file
index db47a15..178cc1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacb5=['#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)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','ENUM','inbound','ringall','leastrecent','fewestcalls','random','rrmemory','linear','rrordered','strategy','getDataValue','type','dialMethod','booked','predictive','power','INTEGER','yes','all','once','setDataValue','periodic_announce','joinempty','join','split','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','preview','progressive','Dial\x20Method.','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','agentBusyFactor','dropRate','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','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Busy\x20Retry\x20(min:1,\x20max:999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0xacb5,0xf4));var _0x5acb=function(_0x55c485,_0x3fe77e){_0x55c485=_0x55c485-0x0;var _0x6bb521=_0xacb5[_0x55c485];return _0x6bb521;};'use strict';var Sequelize=require(_0x5acb('0x0'));module['exports']={'name':{'type':Sequelize[_0x5acb('0x1')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x5acb('0x2')](_0x5acb('0x3'),'outbound'),'allowNull':![],'defaultValue':_0x5acb('0x3')},'musiconhold':{'type':Sequelize[_0x5acb('0x1')],'defaultValue':'default'},'announce':{'type':Sequelize[_0x5acb('0x1')],'defaultValue':''},'strategy':{'type':Sequelize[_0x5acb('0x2')]('rr',_0x5acb('0x4'),_0x5acb('0x5'),_0x5acb('0x6'),_0x5acb('0x7'),_0x5acb('0x8'),_0x5acb('0x9'),'wrandom',_0x5acb('0xa')),'allowNull':![],'defaultValue':_0x5acb('0x4'),'set':function(_0x65f042){this['setDataValue'](_0x5acb('0xb'),_0x65f042?_0x65f042:_0x5acb('0x8'));},'get':function(){var _0x4c4fa6=this[_0x5acb('0xc')](_0x5acb('0xd'));var _0x46c6eb=this['getDataValue'](_0x5acb('0xe'));var _0x1af0ad=this[_0x5acb('0xc')](_0x5acb('0xb'));if(_0x4c4fa6===_0x5acb('0x3')){return _0x1af0ad;}if(_0x46c6eb===_0x5acb('0xf')&&_0x1af0ad===_0x5acb('0x8')||_0x46c6eb===_0x5acb('0xf')&&_0x1af0ad==='roundrobin'){return _0x1af0ad;}if(_0x46c6eb==='progressive'||_0x46c6eb===_0x5acb('0x10')||_0x46c6eb===_0x5acb('0x11')){return _0x1af0ad;}return null;}},'servicelevel':{'type':Sequelize[_0x5acb('0x12')](0xb),'defaultValue':0x0},'context':{'type':Sequelize['STRING'],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x5acb('0x12')](0xb)},'timeout':{'type':Sequelize[_0x5acb('0x12')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x5acb('0x1')]},'weight':{'type':Sequelize[_0x5acb('0x12')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x5acb('0x12')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x5acb('0x2')](_0x5acb('0x13'),'no'),'defaultValue':_0x5acb('0x13')},'autopause':{'type':Sequelize[_0x5acb('0x2')](_0x5acb('0x13'),'no',_0x5acb('0x14')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize['INTEGER'](0xb)},'autopausebusy':{'type':Sequelize[_0x5acb('0x2')](_0x5acb('0x13'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x5acb('0x2')](_0x5acb('0x13'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x5acb('0x12')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x5acb('0x2')](_0x5acb('0x13'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x5acb('0x2')]('yes','no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x5acb('0x2')](_0x5acb('0x13'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x5acb('0x2')](_0x5acb('0x13'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x5acb('0x1')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x5acb('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x5acb('0x12')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x5acb('0x12')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x5acb('0x2')](_0x5acb('0x13'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x5acb('0x2')](_0x5acb('0x13'),'no'),'defaultValue':_0x5acb('0x13')},'announce_holdtime':{'type':Sequelize[_0x5acb('0x2')](_0x5acb('0x13'),'no',_0x5acb('0x15')),'defaultValue':'no'},'announce_position':{'type':Sequelize['STRING'],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x5acb('0x2')](_0x5acb('0x13'),'no')},'announce_position_limit':{'type':Sequelize[_0x5acb('0x12')](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x5acb('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x5acb('0x1')]},'queue_youarenext':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x5acb('0x1')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize['STRING'],'defaultValue':null},'queue_holdtime':{'type':Sequelize['STRING'],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x5acb('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x5acb('0x1')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x5acb('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x5acb('0x1')]},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize[_0x5acb('0x1')]},'queue_periodic_announce':{'type':Sequelize[_0x5acb('0x1')]},'queue_less_than':{'type':Sequelize[_0x5acb('0x1')]},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0x6d3276){this[_0x5acb('0x16')](_0x5acb('0x17'),_0x6d3276?_0x6d3276['join'](','):[]);},'get':function(){return this['getDataValue']('periodic_announce')?this[_0x5acb('0xc')](_0x5acb('0x17'))['split'](','):[];}},'joinempty':{'type':Sequelize[_0x5acb('0x1')],'defaultValue':'yes','set':function(_0x17ac01){this[_0x5acb('0x16')](_0x5acb('0x18'),_0x17ac01?_0x17ac01[_0x5acb('0x19')](','):undefined);},'get':function(){return this[_0x5acb('0xc')]('joinempty')?this['getDataValue'](_0x5acb('0x18'))[_0x5acb('0x1a')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x5acb('0x1')],'defaultValue':'no','set':function(_0x34a334){this[_0x5acb('0x16')](_0x5acb('0x1b'),_0x34a334?_0x34a334[_0x5acb('0x19')](','):undefined);},'get':function(){return this['getDataValue'](_0x5acb('0x1b'))?this[_0x5acb('0xc')](_0x5acb('0x1b'))[_0x5acb('0x1a')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x5acb('0x2')]('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x5acb('0x2')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM'](_0x5acb('0x13'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x5acb('0x1')]},'description':{'type':Sequelize[_0x5acb('0x1')]},'acw':{'type':Sequelize[_0x5acb('0x1c')],'defaultValue':0x0,'set':function(_0x2a8f3c){this[_0x5acb('0x16')](_0x5acb('0x1d'),_0x2a8f3c);if(_0x2a8f3c){if(this[_0x5acb('0xc')](_0x5acb('0x1e'))<0x2){this[_0x5acb('0x16')](_0x5acb('0x1e'),0x2);}}}},'acwTimeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x5acb('0x1c')],'defaultValue':0x0,'comment':_0x5acb('0x1f')},'dialMethod':{'type':Sequelize[_0x5acb('0x2')](_0x5acb('0x20'),_0x5acb('0x21'),_0x5acb('0x11'),_0x5acb('0x10'),_0x5acb('0xf')),'defaultValue':'progressive','comment':_0x5acb('0x22')},'dialLimitChannel':{'type':Sequelize[_0x5acb('0x12')](0x4)[_0x5acb('0x23')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize[_0x5acb('0x12')](0x4)[_0x5acb('0x23')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x5acb('0x24')},'dialPowerLevel':{'type':Sequelize[_0x5acb('0x25')](0x2)[_0x5acb('0x23')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':'Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).'},'dialPredictiveOptimization':{'type':Sequelize['ENUM'](_0x5acb('0x26'),_0x5acb('0x27')),'defaultValue':_0x5acb('0x27'),'comment':'Only\x20for\x20predictive\x20method.'},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x5acb('0x25')](0x2)[_0x5acb('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x5acb('0x28')},'dialPredictiveInterval':{'type':Sequelize[_0x5acb('0x12')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x5acb('0x29')},'dialOriginateCallerIdName':{'type':Sequelize[_0x5acb('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x5acb('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0x5acb('0x12')](0x3)[_0x5acb('0x23')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5acb('0x2a')},'dialQueueOptions':{'type':Sequelize[_0x5acb('0x1')],'defaultValue':'tTxX','comment':_0x5acb('0x2b')},'dialQueueTimeout':{'type':Sequelize[_0x5acb('0x12')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0x5acb('0x1')],'comment':_0x5acb('0x2c')},'dialCongestionMaxRetry':{'type':Sequelize[_0x5acb('0x12')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0x5acb('0x12')](0x5)[_0x5acb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0x5acb('0x12')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5acb('0x2d')},'dialBusyRetryFrequency':{'type':Sequelize[_0x5acb('0x12')](0x5)[_0x5acb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x5acb('0x12')](0x3)[_0x5acb('0x23')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x5acb('0x12')](0x5)[_0x5acb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0x5acb('0x12')](0x3)[_0x5acb('0x23')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x5acb('0x2e')},'dialTimezone':{'type':Sequelize[_0x5acb('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x5acb('0x1')],'defaultValue':_0x5acb('0x2f')},'dialPrefix':{'type':Sequelize[_0x5acb('0x1')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x5acb('0x2')](_0x5acb('0x30'),_0x5acb('0x31'),_0x5acb('0x32')),'defaultValue':_0x5acb('0x30')},'dialAMDActive':{'type':Sequelize[_0x5acb('0x1c')],'defaultValue':0x0,'comment':_0x5acb('0x33')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x5acb('0x34')},'dialAMDGreeting':{'type':Sequelize[_0x5acb('0x12')](0x9)[_0x5acb('0x23')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x5acb('0x35')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x5acb('0x12')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x5acb('0x36')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x5acb('0x12')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x5acb('0x37')},'dialAMDMinWordLength':{'type':Sequelize[_0x5acb('0x12')](0x9)[_0x5acb('0x23')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x5acb('0x38')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x5acb('0x12')](0x9)[_0x5acb('0x23')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x5acb('0x39')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x5acb('0x12')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x5acb('0x3a')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x5acb('0x12')](0x5)[_0x5acb('0x23')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x5acb('0x3b')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x5acb('0x12')](0x9)[_0x5acb('0x23')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x5acb('0x3c')},'dialRecallMeTimeout':{'type':Sequelize[_0x5acb('0x12')](0x5)[_0x5acb('0x23')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x5acb('0x3d')},'dialRecallInQueue':{'type':Sequelize[_0x5acb('0x1c')],'defaultValue':0x0,'comment':_0x5acb('0x3e')},'dialOrderByScheduledAt':{'type':Sequelize[_0x5acb('0x2')](_0x5acb('0x3f'),_0x5acb('0x40')),'defaultValue':_0x5acb('0x3f')},'dialQueueProject2':{'type':Sequelize[_0x5acb('0x1')],'comment':_0x5acb('0x2c')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x5acb('0x1c')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x5acb('0x1c')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x5acb('0x23')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x5acb('0x41')},'dialCutDigit':{'type':Sequelize[_0x5acb('0x12')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x5acb('0x12')](0x3)[_0x5acb('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5acb('0x42')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x5acb('0x12')](0x5)[_0x5acb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5acb('0x43')},'dialDropMaxRetry':{'type':Sequelize[_0x5acb('0x12')](0x3)[_0x5acb('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0x5acb('0x12')](0x5)[_0x5acb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x5acb('0x12')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5acb('0x44')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x5acb('0x12')](0x5)[_0x5acb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5acb('0x45')},'dialMachineMaxRetry':{'type':Sequelize[_0x5acb('0x12')](0x3)[_0x5acb('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5acb('0x46')},'dialMachineRetryFrequency':{'type':Sequelize[_0x5acb('0x12')](0x5)[_0x5acb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5acb('0x47')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x5acb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5acb('0x48')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x5acb('0x12')],'allowNull':!![],'comment':_0x5acb('0x49')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0xf152c3){if(!_0xf152c3)this[_0x5acb('0x16')](_0x5acb('0x4a'),null);this['setDataValue'](_0x5acb('0x4b'),_0xf152c3);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x5acb('0x12')](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)[_0x5acb('0x23')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x5acb('0x1c')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x6ec5=['dialMethod','booked','roundrobin','progressive','predictive','power','INTEGER','yes','all','once','periodic_announce','join','joinempty','leavewhenempty','split','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','preview','Dial\x20Method.','Max\x209999\x20channels,\x200\x20means\x20unlimited.','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','name','ENUM','inbound','outbound','ringall','leastrecent','fewestcalls','rrmemory','wrandom','rrordered','setDataValue','strategy','getDataValue'];(function(_0x33070f,_0x3ff0e5){var _0x5bc8e6=function(_0x39fef3){while(--_0x39fef3){_0x33070f['push'](_0x33070f['shift']());}};_0x5bc8e6(++_0x3ff0e5);}(_0x6ec5,0x1e3));var _0x56ec=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6ec5[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0x56ec('0x0'));module['exports']={'name':{'type':Sequelize[_0x56ec('0x1')],'allowNull':![],'unique':_0x56ec('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x4'),_0x56ec('0x5')),'allowNull':![],'defaultValue':_0x56ec('0x4')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':'default'},'announce':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr',_0x56ec('0x6'),_0x56ec('0x7'),_0x56ec('0x8'),'random',_0x56ec('0x9'),'linear',_0x56ec('0xa'),_0x56ec('0xb')),'allowNull':![],'defaultValue':_0x56ec('0x6'),'set':function(_0x193e04){this[_0x56ec('0xc')](_0x56ec('0xd'),_0x193e04?_0x193e04:_0x56ec('0x9'));},'get':function(){var _0x42d64=this[_0x56ec('0xe')]('type');var _0x2cb427=this[_0x56ec('0xe')](_0x56ec('0xf'));var _0x5011a2=this[_0x56ec('0xe')](_0x56ec('0xd'));if(_0x42d64==='inbound'){return _0x5011a2;}if(_0x2cb427===_0x56ec('0x10')&&_0x5011a2==='rrmemory'||_0x2cb427===_0x56ec('0x10')&&_0x5011a2===_0x56ec('0x11')){return _0x5011a2;}if(_0x2cb427===_0x56ec('0x12')||_0x2cb427===_0x56ec('0x13')||_0x2cb427===_0x56ec('0x14')){return _0x5011a2;}return null;}},'servicelevel':{'type':Sequelize[_0x56ec('0x15')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x56ec('0x15')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x56ec('0x1')]},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x56ec('0x15')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x56ec('0x3')]('yes','no'),'defaultValue':_0x56ec('0x16')},'autopause':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no',_0x56ec('0x17')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x56ec('0x15')](0xb)},'autopausebusy':{'type':Sequelize['ENUM'](_0x56ec('0x16'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x56ec('0x15')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize['ENUM'](_0x56ec('0x16'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x56ec('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x56ec('0x15')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x56ec('0x15')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no'),'defaultValue':_0x56ec('0x16')},'announce_holdtime':{'type':Sequelize['ENUM']('yes','no',_0x56ec('0x18')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no')},'announce_position_limit':{'type':Sequelize[_0x56ec('0x15')](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x56ec('0x1')]},'queue_youarenext':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':null},'queue_minute':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x56ec('0x1')]},'queue_quantity1':{'type':Sequelize[_0x56ec('0x1')]},'queue_quantity2':{'type':Sequelize[_0x56ec('0x1')]},'queue_periodic_announce':{'type':Sequelize[_0x56ec('0x1')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0x584e36){this[_0x56ec('0xc')](_0x56ec('0x19'),_0x584e36?_0x584e36[_0x56ec('0x1a')](','):[]);},'get':function(){return this[_0x56ec('0xe')](_0x56ec('0x19'))?this[_0x56ec('0xe')](_0x56ec('0x19'))['split'](','):[];}},'joinempty':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':_0x56ec('0x16'),'set':function(_0x1ad39f){this[_0x56ec('0xc')]('joinempty',_0x1ad39f?_0x1ad39f[_0x56ec('0x1a')](','):undefined);},'get':function(){return this[_0x56ec('0xe')](_0x56ec('0x1b'))?this[_0x56ec('0xe')](_0x56ec('0x1b'))['split'](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':'no','set':function(_0x4a339a){this[_0x56ec('0xc')](_0x56ec('0x1c'),_0x4a339a?_0x4a339a[_0x56ec('0x1a')](','):undefined);},'get':function(){return this[_0x56ec('0xe')](_0x56ec('0x1c'))?this[_0x56ec('0xe')]('leavewhenempty')[_0x56ec('0x1d')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x56ec('0x15')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM'](_0x56ec('0x16'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x56ec('0x1')]},'description':{'type':Sequelize[_0x56ec('0x1')]},'acw':{'type':Sequelize[_0x56ec('0x1e')],'defaultValue':0x0,'set':function(_0x145323){this[_0x56ec('0xc')](_0x56ec('0x1f'),_0x145323);if(_0x145323){if(this[_0x56ec('0xe')](_0x56ec('0x20'))<0x2){this[_0x56ec('0xc')]('wrapuptime',0x2);}}}},'acwTimeout':{'type':Sequelize[_0x56ec('0x15')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x56ec('0x1e')],'defaultValue':0x0,'comment':_0x56ec('0x21')},'dialMethod':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x22'),_0x56ec('0x12'),'power','predictive','booked'),'defaultValue':_0x56ec('0x12'),'comment':_0x56ec('0x23')},'dialLimitChannel':{'type':Sequelize[_0x56ec('0x15')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x56ec('0x24')},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)[_0x56ec('0x25')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x56ec('0x26')},'dialPowerLevel':{'type':Sequelize[_0x56ec('0x27')](0x2)[_0x56ec('0x25')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x56ec('0x28')},'dialPredictiveOptimization':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x29'),_0x56ec('0x2a')),'defaultValue':_0x56ec('0x2a'),'comment':_0x56ec('0x2b')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x56ec('0x27')](0x2)[_0x56ec('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x56ec('0x2c')},'dialPredictiveInterval':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x56ec('0x2d')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0x56ec('0x15')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueOptions':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':_0x56ec('0x2e'),'comment':_0x56ec('0x2f')},'dialQueueTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x56ec('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x56ec('0x30')},'dialQueueProject':{'type':Sequelize[_0x56ec('0x1')],'comment':_0x56ec('0x31')},'dialCongestionMaxRetry':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x56ec('0x32')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x56ec('0x15')](0x5)[_0x56ec('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x56ec('0x33')},'dialBusyMaxRetry':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x56ec('0x15')](0x5)[_0x56ec('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'defaultValue':0x3,'comment':_0x56ec('0x34')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x56ec('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x56ec('0x35')},'dialGlobalMaxRetry':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x56ec('0x36')},'dialTimezone':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':_0x56ec('0x37')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM']('always',_0x56ec('0x38'),_0x56ec('0x39')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0x56ec('0x1e')],'defaultValue':0x0,'comment':_0x56ec('0x3a')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0x56ec('0x25')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x56ec('0x3b')},'dialAMDGreeting':{'type':Sequelize[_0x56ec('0x15')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x56ec('0x25')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x56ec('0x3c')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x56ec('0x15')](0x9)[_0x56ec('0x25')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x56ec('0x3d')},'dialAMDMinWordLength':{'type':Sequelize[_0x56ec('0x15')](0x9)[_0x56ec('0x25')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x56ec('0x3e')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x56ec('0x15')](0x9)[_0x56ec('0x25')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x56ec('0x3f')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0x56ec('0x25')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x56ec('0x40')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x56ec('0x15')](0x5)[_0x56ec('0x25')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x56ec('0x41')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x56ec('0x25')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize['INTEGER'](0x5)[_0x56ec('0x25')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x56ec('0x42')},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x56ec('0x43')},'dialOrderByScheduledAt':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x44'),'ASC'),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0x56ec('0x1')],'comment':_0x56ec('0x31')},'dialAgiAfterHangupClient':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x56ec('0x45')},'dialCutDigit':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x56ec('0x46')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x56ec('0x47')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x56ec('0x15')](0x5)[_0x56ec('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0x56ec('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x56ec('0x48')},'dialDropRetryFrequency':{'type':Sequelize[_0x56ec('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x56ec('0x49')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x56ec('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x56ec('0x15')](0x5)[_0x56ec('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x56ec('0x4a')},'dialMachineMaxRetry':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x56ec('0x4b')},'dialMachineRetryFrequency':{'type':Sequelize[_0x56ec('0x15')](0x5)[_0x56ec('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x56ec('0x4c')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x56ec('0x4d')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x56ec('0x15')](0x5)[_0x56ec('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x56ec('0x4e')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x56ec('0x15')],'allowNull':!![],'comment':_0x56ec('0x4f')},'mandatoryDisposition':{'type':Sequelize[_0x56ec('0x1e')],'defaultValue':![],'comment':_0x56ec('0x50'),'set':function(_0x47c689){if(!_0x47c689)this[_0x56ec('0xc')](_0x56ec('0x51'),null);this['setDataValue'](_0x56ec('0x52'),_0x47c689);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x56ec('0x15')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index d790040..b95e1f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32cc=['keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','limit','order','sort','pick','where','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','merge','find','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','create','clone','omit','updatedAt','createdAt','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getHoppers','findOne','CmHopper','nolimit','VoiceQueueId','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','teams','User','Agents','online','voicePause','interface','flatMap','penalty','sequelize','addTeams','each','TeamVoiceQueue','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','upsert','isNil','format','SIP/%s','userVoiceQueue:save','removeTeams','ids','select','field','tq.TeamId','from','team_has_voice_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','push','toString','QueryTypes','TeamId','all','union','compact','transaction','removeAgents','emit','userVoiceQueue:remove','addAgents','isEmpty','isArray','getAgents','getMembers','getLists','CmList','addLists','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','ContactId','ListId','scheduledAt','CmListId','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','VoiceQueueId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','NOW()','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','json','offset','count','set','Content-Range','apply','reject','update','then','get','VoiceQueues','inbound','QueueCampaigns','outbound','filter','value','includes','type','UserProfileResource','destroy','error','stack','name','index','map','VoiceQueue','rawAttributes','fieldName','key','query'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x32cc,0x13d));var _0xc32c=function(_0x148202,_0x132b6a){_0x148202=_0x148202-0x0;var _0x1b15ad=_0x32cc[_0x148202];return _0x1b15ad;};'use strict';var emlformat=require(_0xc32c('0x0'));var rimraf=require(_0xc32c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc32c('0x2'));var rp=require(_0xc32c('0x3'));var moment=require(_0xc32c('0x4'));var BPromise=require(_0xc32c('0x5'));var Mustache=require('mustache');var util=require(_0xc32c('0x6'));var path=require(_0xc32c('0x7'));var sox=require(_0xc32c('0x8'));var csv=require(_0xc32c('0x9'));var ejs=require(_0xc32c('0xa'));var fs=require('fs');var fs_extra=require(_0xc32c('0xb'));var _=require(_0xc32c('0xc'));var squel=require(_0xc32c('0xd'));var crypto=require(_0xc32c('0xe'));var jsforce=require(_0xc32c('0xf'));var deskjs=require(_0xc32c('0x10'));var toCsv=require(_0xc32c('0x9'));var querystring=require(_0xc32c('0x11'));var Papa=require('papaparse');var Redis=require(_0xc32c('0x12'));var authService=require(_0xc32c('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xc32c('0x14'));var hardwareService=require(_0xc32c('0x15'));var logger=require(_0xc32c('0x16'))(_0xc32c('0x17'));var utils=require(_0xc32c('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xc32c('0x19'));var db=require('../../mysqldb')['db'];config[_0xc32c('0x1a')]=_[_0xc32c('0x1b')](config[_0xc32c('0x1a')],{'host':_0xc32c('0x1c'),'port':0x18eb});var socket=require(_0xc32c('0x1d'))(new Redis(config[_0xc32c('0x1a')]));require('./voiceQueue.socket')['register'](socket);function respondWithStatusCode(_0x9bd6a6,_0x4322d7){_0x4322d7=_0x4322d7||0xcc;return function(_0x121f6e){if(_0x121f6e){return _0x9bd6a6[_0xc32c('0x1e')](_0x4322d7);}return _0x9bd6a6[_0xc32c('0x1f')](_0x4322d7)[_0xc32c('0x20')]();};}function respondWithResult(_0x8b5725,_0x744978){_0x744978=_0x744978||0xc8;return function(_0x44a46e){if(_0x44a46e){return _0x8b5725[_0xc32c('0x1f')](_0x744978)[_0xc32c('0x21')](_0x44a46e);}};}function respondWithFilteredResult(_0x241431,_0x668d6b){return function(_0x3f266e){if(_0x3f266e){var _0x5e0950=typeof _0x668d6b[_0xc32c('0x22')]==='undefined'&&typeof _0x668d6b['limit']==='undefined';var _0xd4b474=_0x3f266e[_0xc32c('0x23')];var _0x485cdd=_0x5e0950?0x0:_0x668d6b[_0xc32c('0x22')];var _0x23c53f=_0x5e0950?_0x3f266e['count']:_0x668d6b[_0xc32c('0x22')]+_0x668d6b['limit'];var _0x3ffe73;if(_0x23c53f>=_0xd4b474){_0x23c53f=_0xd4b474;_0x3ffe73=0xc8;}else{_0x3ffe73=0xce;}_0x241431[_0xc32c('0x1f')](_0x3ffe73);return _0x241431[_0xc32c('0x24')](_0xc32c('0x25'),_0x485cdd+'-'+_0x23c53f+'/'+_0xd4b474)[_0xc32c('0x21')](_0x3f266e);}return null;};}function patchUpdates(_0x48a857){return function(_0x5bdc43){try{jsonpatch[_0xc32c('0x26')](_0x5bdc43,_0x48a857,!![]);}catch(_0x19b354){return BPromise[_0xc32c('0x27')](_0x19b354);}return _0x5bdc43['save']();};}function saveUpdates(_0x3553de,_0x3be9a6){return function(_0xf5ecca){if(_0xf5ecca){return _0xf5ecca[_0xc32c('0x28')](_0x3553de)['then'](function(_0x5f338a){return _0x5f338a;});}return null;};}function removeEntity(_0x39b48e,_0x647708){return function(_0x2e5a25){if(_0x2e5a25){return _0x2e5a25['destroy']()[_0xc32c('0x29')](function(){var _0x1d7cf5=_0x2e5a25[_0xc32c('0x2a')]({'plain':!![]});var _0x2e8881=[{'name':_0xc32c('0x2b'),'value':_0xc32c('0x2c'),'ignore':![]},{'name':_0xc32c('0x2d'),'value':_0xc32c('0x2e'),'ignore':![]}];var _0x56b3a1=_(_0x2e8881)[_0xc32c('0x2f')]('ignore')['map'](_0xc32c('0x30'))[_0xc32c('0x30')]();if(_[_0xc32c('0x31')](_0x56b3a1,_0x1d7cf5[_0xc32c('0x32')])){return;}var _0x5076bf=_['find'](_0x2e8881,[_0xc32c('0x30'),_0x1d7cf5[_0xc32c('0x32')]])['name'];return db[_0xc32c('0x33')][_0xc32c('0x34')]({'where':{'type':_0x5076bf,'resourceId':_0x1d7cf5['id']}})[_0xc32c('0x29')](function(){return _0x2e5a25;});})[_0xc32c('0x29')](function(){_0x39b48e[_0xc32c('0x1f')](0xcc)[_0xc32c('0x20')]();});}};}function handleEntityNotFound(_0x35ff16,_0x25e0aa){return function(_0xb175a9){if(!_0xb175a9){_0x35ff16[_0xc32c('0x1e')](0x194);}return _0xb175a9;};}function handleError(_0x2d6325,_0x3d80d5){_0x3d80d5=_0x3d80d5||0x1f4;return function(_0x11e57e){logger[_0xc32c('0x35')](_0x11e57e[_0xc32c('0x36')]);if(_0x11e57e[_0xc32c('0x37')]){delete _0x11e57e[_0xc32c('0x37')];}_0x2d6325['status'](_0x3d80d5)['send'](_0x11e57e);};}exports[_0xc32c('0x38')]=function(_0x5258b6,_0x4a24d2){var _0x804294={},_0x577706={},_0x283f90={'count':0x0,'rows':[]};var _0x221730=_[_0xc32c('0x39')](db[_0xc32c('0x3a')][_0xc32c('0x3b')],function(_0x405fb9){return{'name':_0x405fb9[_0xc32c('0x3c')],'type':_0x405fb9[_0xc32c('0x32')][_0xc32c('0x3d')]};});_0x577706['model']=_['map'](_0x221730,'name');_0x577706[_0xc32c('0x3e')]=_[_0xc32c('0x3f')](_0x5258b6['query']);_0x577706[_0xc32c('0x40')]=_['intersection'](_0x577706[_0xc32c('0x41')],_0x577706[_0xc32c('0x3e')]);_0x804294[_0xc32c('0x42')]=_[_0xc32c('0x43')](_0x577706['model'],qs['fields'](_0x5258b6[_0xc32c('0x3e')][_0xc32c('0x44')]));_0x804294[_0xc32c('0x42')]=_0x804294['attributes'][_0xc32c('0x45')]?_0x804294['attributes']:_0x577706[_0xc32c('0x41')];if(!_0x5258b6[_0xc32c('0x3e')][_0xc32c('0x46')]('nolimit')){_0x804294[_0xc32c('0x47')]=qs[_0xc32c('0x47')](_0x5258b6[_0xc32c('0x3e')][_0xc32c('0x47')]);_0x804294[_0xc32c('0x22')]=qs[_0xc32c('0x22')](_0x5258b6[_0xc32c('0x3e')][_0xc32c('0x22')]);}_0x804294[_0xc32c('0x48')]=qs[_0xc32c('0x49')](_0x5258b6[_0xc32c('0x3e')]['sort']);_0x804294['where']=qs[_0xc32c('0x40')](_[_0xc32c('0x4a')](_0x5258b6[_0xc32c('0x3e')],_0x577706[_0xc32c('0x40')]),_0x221730);if(_0x5258b6[_0xc32c('0x3e')][_0xc32c('0x2f')]){_0x804294[_0xc32c('0x4b')]=_['merge'](_0x804294['where'],{'$or':_[_0xc32c('0x39')](_0x221730,function(_0x5c31cf){if(_0x5c31cf[_0xc32c('0x32')]!==_0xc32c('0x4c')){var _0x21663c={};_0x21663c[_0x5c31cf['name']]={'$like':'%'+_0x5258b6[_0xc32c('0x3e')][_0xc32c('0x2f')]+'%'};return _0x21663c;}})});}_0x804294=_['merge']({},_0x804294,_0x5258b6[_0xc32c('0x4d')]);var _0x459de2={'where':_0x804294[_0xc32c('0x4b')]};return db['VoiceQueue'][_0xc32c('0x23')](_0x459de2)['then'](function(_0x480d40){_0x283f90[_0xc32c('0x23')]=_0x480d40;if(_0x5258b6[_0xc32c('0x3e')]['includeAll']){_0x804294[_0xc32c('0x4e')]=[{'all':!![]}];}return db[_0xc32c('0x3a')][_0xc32c('0x4f')](_0x804294);})['then'](function(_0x5d64f1){_0x283f90[_0xc32c('0x50')]=_0x5d64f1;return _0x283f90;})[_0xc32c('0x29')](respondWithFilteredResult(_0x4a24d2,_0x804294))[_0xc32c('0x51')](handleError(_0x4a24d2,null));};exports[_0xc32c('0x52')]=function(_0x305d49,_0x1fcfe1){var _0x1eeb9e={'raw':![],'where':{'id':_0x305d49[_0xc32c('0x53')]['id']}},_0x203c80={};_0x203c80[_0xc32c('0x41')]=_['keys'](db['VoiceQueue']['rawAttributes']);_0x203c80[_0xc32c('0x3e')]=_['keys'](_0x305d49[_0xc32c('0x3e')]);_0x203c80[_0xc32c('0x40')]=_[_0xc32c('0x43')](_0x203c80[_0xc32c('0x41')],_0x203c80[_0xc32c('0x3e')]);_0x1eeb9e[_0xc32c('0x42')]=_['intersection'](_0x203c80[_0xc32c('0x41')],qs[_0xc32c('0x44')](_0x305d49[_0xc32c('0x3e')][_0xc32c('0x44')]));_0x1eeb9e['attributes']=_0x1eeb9e[_0xc32c('0x42')][_0xc32c('0x45')]?_0x1eeb9e[_0xc32c('0x42')]:_0x203c80['model'];if(_0x305d49['query'][_0xc32c('0x54')]){_0x1eeb9e['include']=[{'all':!![]}];}_0x1eeb9e=_[_0xc32c('0x55')]({},_0x1eeb9e,_0x305d49[_0xc32c('0x4d')]);return db[_0xc32c('0x3a')][_0xc32c('0x56')](_0x1eeb9e)[_0xc32c('0x29')](handleEntityNotFound(_0x1fcfe1,null))[_0xc32c('0x29')](respondWithResult(_0x1fcfe1,null))[_0xc32c('0x51')](handleError(_0x1fcfe1,null));};exports['create']=function(_0x4610f2,_0x5b3528){return db['VoiceQueue']['create'](_0x4610f2[_0xc32c('0x57')],{})[_0xc32c('0x29')](function(_0x5c8d66){var _0x86e41b=_0x4610f2['user'][_0xc32c('0x2a')]({'plain':!![]});if(!_0x86e41b)throw new Error(_0xc32c('0x58'));if(_0x86e41b[_0xc32c('0x59')]===_0xc32c('0x5a')){var _0x51234d=_0x5c8d66['get']({'plain':!![]});var _0x32074d=[{'name':_0xc32c('0x2b'),'value':_0xc32c('0x2c')},{'name':'QueueCampaigns','value':'outbound'}];var _0x2ef934=_[_0xc32c('0x56')](_0x32074d,[_0xc32c('0x30'),_0x51234d['type']])[_0xc32c('0x37')];return db[_0xc32c('0x5b')]['find']({'where':{'name':_0x2ef934,'userProfileId':_0x86e41b[_0xc32c('0x5c')]},'raw':!![]})[_0xc32c('0x29')](function(_0x5a3455){if(_0x5a3455&&_0x5a3455[_0xc32c('0x5d')]===0x0){return db[_0xc32c('0x33')][_0xc32c('0x5e')]({'name':_0x51234d[_0xc32c('0x37')],'resourceId':_0x51234d['id'],'type':_0x5a3455[_0xc32c('0x37')],'sectionId':_0x5a3455['id']},{})['then'](function(){return _0x5c8d66;});}else{return _0x5c8d66;}})['catch'](function(_0x326a52){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x326a52);throw _0x326a52;});}return _0x5c8d66;})[_0xc32c('0x29')](respondWithResult(_0x5b3528,0xc9))[_0xc32c('0x51')](handleError(_0x5b3528,null));};exports[_0xc32c('0x5f')]=function(_0x492187,_0xd2669b){var _0x1e2b6b={'where':{'id':_0x492187['params']['id']}},_0x13eaf0={};_0x13eaf0[_0xc32c('0x41')]=_[_0xc32c('0x3f')](db[_0xc32c('0x3a')][_0xc32c('0x3b')]);_0x1e2b6b[_0xc32c('0x42')]=_[_0xc32c('0x43')](_0x13eaf0[_0xc32c('0x41')],qs[_0xc32c('0x44')](_0x492187[_0xc32c('0x3e')][_0xc32c('0x44')]));_0x1e2b6b[_0xc32c('0x42')]=_0x1e2b6b[_0xc32c('0x42')]['length']?_0x1e2b6b[_0xc32c('0x42')]:_0x13eaf0[_0xc32c('0x41')];if(_0x492187[_0xc32c('0x3e')][_0xc32c('0x54')]){_0x1e2b6b['include']=[{'all':!![]}];}_0x1e2b6b=_[_0xc32c('0x55')]({},_0x1e2b6b,_0x492187[_0xc32c('0x4d')]);return db[_0xc32c('0x3a')][_0xc32c('0x56')](_0x1e2b6b)['then'](handleEntityNotFound(_0xd2669b,null))['then'](function(_0x39d90d){if(_0x39d90d){var _0xd60a4a=_0x39d90d[_0xc32c('0x2a')]({'plain':!![]});_0xd60a4a=qs[_0xc32c('0x60')](_0xd60a4a,['id','createdAt',_0xc32c('0x61')]);_0x492187[_0xc32c('0x57')]=_[_0xc32c('0x60')](_0x492187[_0xc32c('0x57')],['id',_0xc32c('0x62'),_0xc32c('0x61')]);return db[_0xc32c('0x3a')][_0xc32c('0x5e')](_[_0xc32c('0x55')](_0xd60a4a,_0x492187[_0xc32c('0x57')]),{'include':_0x492187['query'][_0xc32c('0x54')]?[{'all':!![]}]:undefined})[_0xc32c('0x29')](function(_0x227ed4){var _0x4ff400=_0x492187[_0xc32c('0x5a')]['get']({'plain':!![]});if(!_0x4ff400)throw new Error(_0xc32c('0x58'));if(_0x4ff400[_0xc32c('0x59')]===_0xc32c('0x5a')){var _0x105b4c=_0x227ed4[_0xc32c('0x2a')]({'plain':!![]});var _0x1be2ba=[{'name':'VoiceQueues','value':_0xc32c('0x2c')},{'name':_0xc32c('0x2d'),'value':_0xc32c('0x2e')}];var _0xc7279=_['find'](_0x1be2ba,[_0xc32c('0x30'),_0x105b4c['type']])[_0xc32c('0x37')];return db[_0xc32c('0x5b')][_0xc32c('0x56')]({'where':{'name':_0xc7279,'userProfileId':_0x4ff400[_0xc32c('0x5c')]},'raw':!![]})[_0xc32c('0x29')](function(_0x3b8cc1){if(_0x3b8cc1&&_0x3b8cc1[_0xc32c('0x5d')]===0x0){return db[_0xc32c('0x33')][_0xc32c('0x5e')]({'name':_0x105b4c[_0xc32c('0x37')],'resourceId':_0x105b4c['id'],'type':_0x3b8cc1[_0xc32c('0x37')],'sectionId':_0x3b8cc1['id']},{})['then'](function(){return _0x227ed4;});}else{return _0x227ed4;}})[_0xc32c('0x51')](function(_0x48aa2d){logger[_0xc32c('0x35')](_0xc32c('0x63'),_0x48aa2d);throw _0x48aa2d;});}return _0x227ed4;});}})[_0xc32c('0x29')](respondWithResult(_0xd2669b,0xc9))[_0xc32c('0x51')](handleError(_0xd2669b,null));};exports['update']=function(_0x2547a3,_0x3f1890){if(_0x2547a3['body']['id']){delete _0x2547a3['body']['id'];}return db[_0xc32c('0x3a')]['find']({'where':{'id':_0x2547a3[_0xc32c('0x53')]['id']}})[_0xc32c('0x29')](handleEntityNotFound(_0x3f1890,null))[_0xc32c('0x29')](saveUpdates(_0x2547a3['body'],null))[_0xc32c('0x29')](respondWithResult(_0x3f1890,null))['catch'](handleError(_0x3f1890,null));};exports[_0xc32c('0x34')]=function(_0x48dbc4,_0x573b9c){return db['VoiceQueue']['find']({'where':{'id':_0x48dbc4['params']['id']}})['then'](handleEntityNotFound(_0x573b9c,null))[_0xc32c('0x29')](removeEntity(_0x573b9c,null))[_0xc32c('0x51')](handleError(_0x573b9c,null));};exports[_0xc32c('0x64')]=function(_0x495345,_0x14f3cd,_0x31a3d7){var _0x1d5bea={'raw':![],'where':{}};var _0x2ef1ae={};var _0x50e752={'count':0x0,'rows':[]};return db[_0xc32c('0x3a')][_0xc32c('0x65')]({'where':{'id':_0x495345[_0xc32c('0x53')]['id']}})[_0xc32c('0x29')](handleEntityNotFound(_0x14f3cd,null))['then'](function(_0x11a6a2){if(_0x11a6a2){_0x2ef1ae[_0xc32c('0x41')]=_[_0xc32c('0x3f')](db[_0xc32c('0x66')][_0xc32c('0x3b')]);_0x2ef1ae['query']=_[_0xc32c('0x3f')](_0x495345[_0xc32c('0x3e')]);_0x2ef1ae[_0xc32c('0x40')]=_['intersection'](_0x2ef1ae[_0xc32c('0x41')],_0x2ef1ae[_0xc32c('0x3e')]);_0x1d5bea[_0xc32c('0x42')]=_['intersection'](_0x2ef1ae['model'],qs[_0xc32c('0x44')](_0x495345['query'][_0xc32c('0x44')]));_0x1d5bea[_0xc32c('0x42')]=_0x1d5bea[_0xc32c('0x42')]['length']?_0x1d5bea['attributes']:_0x2ef1ae['model'];if(!_0x495345[_0xc32c('0x3e')]['hasOwnProperty'](_0xc32c('0x67'))){_0x1d5bea['limit']=qs[_0xc32c('0x47')](_0x495345[_0xc32c('0x3e')][_0xc32c('0x47')]);_0x1d5bea['offset']=qs[_0xc32c('0x22')](_0x495345['query'][_0xc32c('0x22')]);}_0x1d5bea[_0xc32c('0x48')]=qs['sort'](_0x495345[_0xc32c('0x3e')][_0xc32c('0x49')]);_0x1d5bea[_0xc32c('0x4b')]=qs[_0xc32c('0x40')](_[_0xc32c('0x4a')](_0x495345[_0xc32c('0x3e')],_0x2ef1ae[_0xc32c('0x40')]));_0x1d5bea['where'][_0xc32c('0x68')]=_0x11a6a2['id'];if(_0x495345['query'][_0xc32c('0x2f')]){_0x1d5bea[_0xc32c('0x4b')]=_[_0xc32c('0x55')](_0x1d5bea['where'],{'$or':_[_0xc32c('0x39')](_0x1d5bea[_0xc32c('0x42')],function(_0x3888f0){var _0x1763b7={};_0x1763b7[_0x3888f0]={'$like':'%'+_0x495345['query'][_0xc32c('0x2f')]+'%'};return _0x1763b7;})});}_0x1d5bea=_[_0xc32c('0x55')]({},_0x1d5bea,_0x495345['options']);return db[_0xc32c('0x66')]['count']({'where':_0x1d5bea['where']})[_0xc32c('0x29')](function(_0x5dcacf){_0x50e752[_0xc32c('0x23')]=_0x5dcacf;if(_0x495345[_0xc32c('0x3e')][_0xc32c('0x54')]){_0x1d5bea[_0xc32c('0x4e')]=[{'all':!![]}];}return db[_0xc32c('0x66')][_0xc32c('0x4f')](_0x1d5bea);})[_0xc32c('0x29')](function(_0x136059){_0x50e752[_0xc32c('0x50')]=_0x136059;return _0x50e752;});}})[_0xc32c('0x29')](respondWithFilteredResult(_0x14f3cd,_0x1d5bea))['catch'](handleError(_0x14f3cd,null));};exports[_0xc32c('0x69')]=function(_0xdda9e7,_0x42bc6c,_0x1a4074){var _0x3a7d64={'raw':!![],'where':{}};var _0x4c8ff8={};var _0x58ec08={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xc32c('0x65')]({'where':{'id':_0xdda9e7['params']['id']}})['then'](handleEntityNotFound(_0x42bc6c,null))[_0xc32c('0x29')](function(_0x2fd343){if(_0x2fd343){_0x4c8ff8[_0xc32c('0x41')]=_['keys'](db[_0xc32c('0x6a')][_0xc32c('0x3b')]);_0x4c8ff8[_0xc32c('0x3e')]=_[_0xc32c('0x3f')](_0xdda9e7[_0xc32c('0x3e')]);_0x4c8ff8[_0xc32c('0x40')]=_[_0xc32c('0x43')](_0x4c8ff8[_0xc32c('0x41')],_0x4c8ff8[_0xc32c('0x3e')]);_0x3a7d64['attributes']=_['intersection'](_0x4c8ff8['model'],qs['fields'](_0xdda9e7[_0xc32c('0x3e')]['fields']));_0x3a7d64[_0xc32c('0x42')]=_0x3a7d64['attributes'][_0xc32c('0x45')]?_0x3a7d64[_0xc32c('0x42')]:_0x4c8ff8[_0xc32c('0x41')];if(!_0xdda9e7[_0xc32c('0x3e')][_0xc32c('0x46')](_0xc32c('0x67'))){_0x3a7d64[_0xc32c('0x47')]=qs['limit'](_0xdda9e7[_0xc32c('0x3e')][_0xc32c('0x47')]);_0x3a7d64[_0xc32c('0x22')]=qs[_0xc32c('0x22')](_0xdda9e7[_0xc32c('0x3e')][_0xc32c('0x22')]);}_0x3a7d64['order']=qs[_0xc32c('0x49')](_0xdda9e7['query'][_0xc32c('0x49')]);_0x3a7d64['where']=qs[_0xc32c('0x40')](_[_0xc32c('0x4a')](_0xdda9e7[_0xc32c('0x3e')],_0x4c8ff8['filters']));_0x3a7d64['where']['VoiceQueueId']=_0x2fd343['id'];if(_0xdda9e7[_0xc32c('0x3e')][_0xc32c('0x2f')]){_0x3a7d64[_0xc32c('0x4b')]=_['merge'](_0x3a7d64[_0xc32c('0x4b')],{'$or':_['map'](_0x3a7d64[_0xc32c('0x42')],function(_0x17b466){var _0xd0c340={};_0xd0c340[_0x17b466]={'$like':'%'+_0xdda9e7[_0xc32c('0x3e')]['filter']+'%'};return _0xd0c340;})});}_0x3a7d64=_[_0xc32c('0x55')]({},_0x3a7d64,_0xdda9e7[_0xc32c('0x4d')]);return db[_0xc32c('0x6a')]['count']({'where':_0x3a7d64[_0xc32c('0x4b')]})[_0xc32c('0x29')](function(_0x4ab357){_0x58ec08[_0xc32c('0x23')]=_0x4ab357;if(_0xdda9e7[_0xc32c('0x3e')][_0xc32c('0x54')]){_0x3a7d64[_0xc32c('0x4e')]=[{'all':!![]}];}return db[_0xc32c('0x6a')][_0xc32c('0x4f')](_0x3a7d64);})['then'](function(_0xc2b60e){_0x58ec08[_0xc32c('0x50')]=_0xc2b60e;return _0x58ec08;});}})[_0xc32c('0x29')](respondWithFilteredResult(_0x42bc6c,_0x3a7d64))[_0xc32c('0x51')](handleError(_0x42bc6c,null));};exports[_0xc32c('0x6b')]=function(_0x2abc14,_0x15dd82,_0x226b31){var _0x49f833={'raw':!![],'where':{}};var _0x4f26ec={};var _0x367f1c={'count':0x0,'rows':[]};return db[_0xc32c('0x3a')][_0xc32c('0x65')]({'where':{'id':_0x2abc14['params']['id']}})['then'](handleEntityNotFound(_0x15dd82,null))[_0xc32c('0x29')](function(_0x40c5e2){if(_0x40c5e2){_0x4f26ec[_0xc32c('0x41')]=_['keys'](db[_0xc32c('0x6c')][_0xc32c('0x3b')]);_0x4f26ec[_0xc32c('0x3e')]=_[_0xc32c('0x3f')](_0x2abc14[_0xc32c('0x3e')]);_0x4f26ec[_0xc32c('0x40')]=_[_0xc32c('0x43')](_0x4f26ec['model'],_0x4f26ec[_0xc32c('0x3e')]);_0x49f833[_0xc32c('0x42')]=_[_0xc32c('0x43')](_0x4f26ec['model'],qs[_0xc32c('0x44')](_0x2abc14[_0xc32c('0x3e')][_0xc32c('0x44')]));_0x49f833['attributes']=_0x49f833[_0xc32c('0x42')]['length']?_0x49f833['attributes']:_0x4f26ec[_0xc32c('0x41')];if(!_0x2abc14[_0xc32c('0x3e')][_0xc32c('0x46')]('nolimit')){_0x49f833[_0xc32c('0x47')]=qs[_0xc32c('0x47')](_0x2abc14[_0xc32c('0x3e')]['limit']);_0x49f833[_0xc32c('0x22')]=qs[_0xc32c('0x22')](_0x2abc14['query'][_0xc32c('0x22')]);}_0x49f833['order']=qs[_0xc32c('0x49')](_0x2abc14['query'][_0xc32c('0x49')]);_0x49f833[_0xc32c('0x4b')]=qs[_0xc32c('0x40')](_[_0xc32c('0x4a')](_0x2abc14['query'],_0x4f26ec[_0xc32c('0x40')]));_0x49f833[_0xc32c('0x4b')][_0xc32c('0x68')]=_0x40c5e2['id'];if(_0x2abc14['query']['filter']){_0x49f833[_0xc32c('0x4b')]=_[_0xc32c('0x55')](_0x49f833[_0xc32c('0x4b')],{'$or':_[_0xc32c('0x39')](_0x49f833[_0xc32c('0x42')],function(_0x22d871){var _0x554cb0={};_0x554cb0[_0x22d871]={'$like':'%'+_0x2abc14['query'][_0xc32c('0x2f')]+'%'};return _0x554cb0;})});}_0x49f833=_[_0xc32c('0x55')]({},_0x49f833,_0x2abc14[_0xc32c('0x4d')]);return db[_0xc32c('0x6c')][_0xc32c('0x23')]({'where':_0x49f833[_0xc32c('0x4b')]})[_0xc32c('0x29')](function(_0x752fcf){_0x367f1c['count']=_0x752fcf;if(_0x2abc14[_0xc32c('0x3e')][_0xc32c('0x54')]){_0x49f833['include']=[{'all':!![]}];}return db['CmHopperFinal'][_0xc32c('0x4f')](_0x49f833);})['then'](function(_0x499793){_0x367f1c[_0xc32c('0x50')]=_0x499793;return _0x367f1c;});}})[_0xc32c('0x29')](respondWithFilteredResult(_0x15dd82,_0x49f833))[_0xc32c('0x51')](handleError(_0x15dd82,null));};exports[_0xc32c('0x6d')]=function(_0x2f0145,_0x527298,_0xeee314){var _0x3591f2={'raw':!![],'where':{}};var _0x436ce1={};var _0x493353={'count':0x0,'rows':[]};return db[_0xc32c('0x3a')][_0xc32c('0x65')]({'where':{'id':_0x2f0145['params']['id']}})['then'](handleEntityNotFound(_0x527298,null))['then'](function(_0x34a301){if(_0x34a301){_0x436ce1['model']=_[_0xc32c('0x3f')](db[_0xc32c('0x6e')]['rawAttributes']);_0x436ce1[_0xc32c('0x3e')]=_['keys'](_0x2f0145[_0xc32c('0x3e')]);_0x436ce1[_0xc32c('0x40')]=_['intersection'](_0x436ce1['model'],_0x436ce1['query']);_0x3591f2[_0xc32c('0x42')]=_[_0xc32c('0x43')](_0x436ce1[_0xc32c('0x41')],qs['fields'](_0x2f0145[_0xc32c('0x3e')]['fields']));_0x3591f2[_0xc32c('0x42')]=_0x3591f2['attributes'][_0xc32c('0x45')]?_0x3591f2[_0xc32c('0x42')]:_0x436ce1[_0xc32c('0x41')];if(!_0x2f0145['query'][_0xc32c('0x46')]('nolimit')){_0x3591f2[_0xc32c('0x47')]=qs[_0xc32c('0x47')](_0x2f0145[_0xc32c('0x3e')][_0xc32c('0x47')]);_0x3591f2[_0xc32c('0x22')]=qs['offset'](_0x2f0145[_0xc32c('0x3e')]['offset']);}_0x3591f2['order']=qs[_0xc32c('0x49')](_0x2f0145[_0xc32c('0x3e')]['sort']);_0x3591f2[_0xc32c('0x4b')]=qs[_0xc32c('0x40')](_['pick'](_0x2f0145['query'],_0x436ce1[_0xc32c('0x40')]));_0x3591f2[_0xc32c('0x4b')][_0xc32c('0x68')]=_0x34a301['id'];if(_0x2f0145[_0xc32c('0x3e')][_0xc32c('0x2f')]){_0x3591f2[_0xc32c('0x4b')]=_['merge'](_0x3591f2['where'],{'$or':_[_0xc32c('0x39')](_0x3591f2[_0xc32c('0x42')],function(_0x729a9b){var _0x38934d={};_0x38934d[_0x729a9b]={'$like':'%'+_0x2f0145['query'][_0xc32c('0x2f')]+'%'};return _0x38934d;})});}_0x3591f2=_[_0xc32c('0x55')]({},_0x3591f2,_0x2f0145[_0xc32c('0x4d')]);return db['CmHopperBlack'][_0xc32c('0x23')]({'where':_0x3591f2['where']})[_0xc32c('0x29')](function(_0x37144b){_0x493353[_0xc32c('0x23')]=_0x37144b;if(_0x2f0145['query'][_0xc32c('0x54')]){_0x3591f2[_0xc32c('0x4e')]=[{'all':!![]}];}return db[_0xc32c('0x6e')][_0xc32c('0x4f')](_0x3591f2);})[_0xc32c('0x29')](function(_0x163932){_0x493353[_0xc32c('0x50')]=_0x163932;return _0x493353;});}})['then'](respondWithFilteredResult(_0x527298,_0x3591f2))['catch'](handleError(_0x527298,null));};exports[_0xc32c('0x6f')]=function(_0x3a0add,_0x48dcda,_0x1d49a1){var _0x25d6f9={};var _0x468f11={};var _0x3be1cd;var _0x46bf62;return db[_0xc32c('0x3a')][_0xc32c('0x65')]({'where':{'id':_0x3a0add['params']['id']}})[_0xc32c('0x29')](handleEntityNotFound(_0x48dcda,null))['then'](function(_0x41343c){if(_0x41343c){_0x3be1cd=_0x41343c;_0x468f11['model']=_['keys'](db[_0xc32c('0x70')][_0xc32c('0x3b')]);_0x468f11['query']=_[_0xc32c('0x3f')](_0x3a0add[_0xc32c('0x3e')]);_0x468f11[_0xc32c('0x40')]=_[_0xc32c('0x43')](_0x468f11[_0xc32c('0x41')],_0x468f11[_0xc32c('0x3e')]);_0x25d6f9['attributes']=_[_0xc32c('0x43')](_0x468f11[_0xc32c('0x41')],qs[_0xc32c('0x44')](_0x3a0add[_0xc32c('0x3e')]['fields']));_0x25d6f9[_0xc32c('0x42')]=_0x25d6f9['attributes'][_0xc32c('0x45')]?_0x25d6f9['attributes']:_0x468f11['model'];_0x25d6f9[_0xc32c('0x48')]=qs[_0xc32c('0x49')](_0x3a0add[_0xc32c('0x3e')][_0xc32c('0x49')]);_0x25d6f9[_0xc32c('0x4b')]=qs['filters'](_['pick'](_0x3a0add[_0xc32c('0x3e')],_0x468f11['filters']));if(_0x3a0add[_0xc32c('0x3e')]['filter']){_0x25d6f9[_0xc32c('0x4b')]=_[_0xc32c('0x55')](_0x25d6f9[_0xc32c('0x4b')],{'$or':_[_0xc32c('0x39')](_0x25d6f9[_0xc32c('0x42')],function(_0x130fe9){var _0x418a76={};_0x418a76[_0x130fe9]={'$like':'%'+_0x3a0add[_0xc32c('0x3e')][_0xc32c('0x2f')]+'%'};return _0x418a76;})});}_0x25d6f9=_[_0xc32c('0x55')]({},_0x25d6f9,_0x3a0add[_0xc32c('0x4d')]);return _0x3be1cd[_0xc32c('0x6f')](_0x25d6f9);}})[_0xc32c('0x29')](function(_0x273494){if(_0x273494){_0x46bf62=_0x273494[_0xc32c('0x45')];if(!_0x3a0add[_0xc32c('0x3e')]['hasOwnProperty'](_0xc32c('0x67'))){_0x25d6f9[_0xc32c('0x47')]=qs['limit'](_0x3a0add[_0xc32c('0x3e')]['limit']);_0x25d6f9[_0xc32c('0x22')]=qs[_0xc32c('0x22')](_0x3a0add[_0xc32c('0x3e')][_0xc32c('0x22')]);}return _0x3be1cd['getTeams'](_0x25d6f9);}})[_0xc32c('0x29')](function(_0x430677){if(_0x430677){return _0x430677?{'count':_0x46bf62,'rows':_0x430677}:null;}})[_0xc32c('0x29')](respondWithResult(_0x48dcda,null))['catch'](handleError(_0x48dcda,null));};exports['addTeams']=function(_0x20e7f4,_0x205c3a,_0x4acdf9){var _0x24a8e6=_0x20e7f4['body'][_0xc32c('0x71')];var _0x5a2386=_['map'](_0x24a8e6,'id');return db['Team'][_0xc32c('0x4f')]({'where':{'id':_0x5a2386},'attributes':['id'],'include':[{'model':db[_0xc32c('0x72')],'as':_0xc32c('0x73'),'attributes':['id',_0xc32c('0x37'),_0xc32c('0x74'),_0xc32c('0x75'),_0xc32c('0x76')],'raw':!![]}]})[_0xc32c('0x29')](function(_0x408d67){if(_0x408d67){var _0x1e3f24=_[_0xc32c('0x77')](_0x408d67,function(_0x1b46fc){var _0x31826c=_0x1b46fc[_0xc32c('0x2a')]({'plain':!![]});_0x31826c[_0xc32c('0x73')]['forEach'](function(_0x4637c7){_0x4637c7[_0xc32c('0x78')]=_[_0xc32c('0x56')](_0x24a8e6,{'id':_0x31826c['id']})[_0xc32c('0x78')];});return _0x31826c['Agents'];});return db[_0xc32c('0x3a')][_0xc32c('0x56')]({'where':{'id':_0x20e7f4[_0xc32c('0x53')]['id']}})[_0xc32c('0x29')](function(_0x210dc8){return db[_0xc32c('0x79')]['transaction'](function(_0x58014d){return _0x210dc8[_0xc32c('0x7a')](_0x5a2386,{'transaction':_0x58014d})['then'](function(){return BPromise[_0xc32c('0x7b')](_0x24a8e6,function(_0x376cf4){return db[_0xc32c('0x7c')]['upsert']({'TeamId':_0x376cf4['id'],'VoiceQueueId':_0x20e7f4[_0xc32c('0x53')]['id'],'penalty':_0x376cf4[_0xc32c('0x78')]},{'transaction':_0x58014d});});})['then'](function(){return BPromise[_0xc32c('0x7b')](_0x1e3f24,function(_0x3c442d){return db[_0xc32c('0x7d')][_0xc32c('0x7e')]({'where':{'UserId':_0x3c442d['id'],'VoiceQueueId':_0x20e7f4['params']['id']},'defaults':{'penalty':_0x3c442d[_0xc32c('0x78')]},'transaction':_0x58014d});});})['then'](function(){return BPromise[_0xc32c('0x7b')](_[_0xc32c('0x2f')](_0x1e3f24,{'online':!![]}),function(_0x4aae6b){return db[_0xc32c('0x7f')][_0xc32c('0x80')]({'membername':_0x4aae6b[_0xc32c('0x37')],'UserId':_0x4aae6b['id'],'queue_name':_0x210dc8[_0xc32c('0x37')],'VoiceQueueId':_0x210dc8['id'],'interface':_[_0xc32c('0x81')](_0x4aae6b['interface'])?util[_0xc32c('0x82')](_0xc32c('0x83'),_0x4aae6b[_0xc32c('0x37')]):_0x4aae6b[_0xc32c('0x76')],'paused':_0x4aae6b[_0xc32c('0x75')]||![],'penalty':_0x4aae6b[_0xc32c('0x78')]},{'transaction':_0x58014d});});})['then'](function(){_0x1e3f24['forEach'](function(_0x7f5403){socket['emit'](_0xc32c('0x84'),{'UserId':_0x7f5403['id'],'VoiceQueueId':_0x210dc8['id']});});});});});}})[_0xc32c('0x29')](respondWithStatusCode(_0x205c3a,null))[_0xc32c('0x51')](handleError(_0x205c3a,null));};exports[_0xc32c('0x85')]=function(_0xcf268,_0x29f4f0,_0x2a9223){return db[_0xc32c('0x70')][_0xc32c('0x4f')]({'where':{'id':_0xcf268[_0xc32c('0x3e')][_0xc32c('0x86')]},'attributes':['id'],'include':[{'model':db[_0xc32c('0x72')],'as':_0xc32c('0x73'),'attributes':['id'],'raw':!![]}]})[_0xc32c('0x29')](handleEntityNotFound(_0x29f4f0,null))[_0xc32c('0x29')](function(_0x1d9adc){var _0x5e221e=_['map'](_0x1d9adc,'id');var _0x38d8d0=[];var _0x557abf=[];var _0x2942d4=squel[_0xc32c('0x87')]();_0x2942d4[_0xc32c('0x88')](_0xc32c('0x89'))[_0xc32c('0x8a')](_0xc32c('0x8b'),'tq')['join'](_0xc32c('0x8c'),'ut',_0xc32c('0x8d'))['where']('VoiceQueueId\x20=\x20?',_0xcf268[_0xc32c('0x53')]['id']);for(var _0x477b04=0x0;_0x477b04<_0x1d9adc[_0xc32c('0x45')];_0x477b04+=0x1){let _0x146f5a=_0x1d9adc[_0x477b04];for(var _0x3cb0ae=0x0;_0x3cb0ae<_0x146f5a[_0xc32c('0x73')][_0xc32c('0x45')];_0x3cb0ae+=0x1){let _0x1ed895=_0x146f5a[_0xc32c('0x73')][_0x3cb0ae];var _0x46f09a=_0x2942d4[_0xc32c('0x5f')]();_0x46f09a[_0xc32c('0x4b')](_0xc32c('0x8e'),_0x1ed895['id']);_0x557abf[_0xc32c('0x8f')](db[_0xc32c('0x79')][_0xc32c('0x3e')](_0x46f09a[_0xc32c('0x90')](),{'type':db[_0xc32c('0x79')][_0xc32c('0x91')]['SELECT']})[_0xc32c('0x29')](function(_0x2bbade){if(_0x2bbade['length']===0x1){return _0x1ed895['id'];}else{var _0x3a2dbe=_['every'](_[_0xc32c('0x39')](_0x2bbade,_0xc32c('0x92')),function(_0xa0c011){return _[_0xc32c('0x31')](_0x5e221e,_0xa0c011);});if(_0x3a2dbe){return _0x1ed895['id'];}}}));}}return BPromise[_0xc32c('0x93')](_0x557abf)[_0xc32c('0x29')](function(_0x2258d9){_0x38d8d0=_(_0x38d8d0)[_0xc32c('0x94')](_0x2258d9)[_0xc32c('0x95')]()['value']();return db[_0xc32c('0x3a')]['find']({'where':{'id':_0xcf268['params']['id']}})[_0xc32c('0x29')](function(_0x8bdc96){return db[_0xc32c('0x79')][_0xc32c('0x96')](function(_0x4af328){return _0x8bdc96['removeTeams'](_0xcf268[_0xc32c('0x3e')][_0xc32c('0x86')],{'transaction':_0x4af328})[_0xc32c('0x29')](function(){if(!_['isEmpty'](_0x38d8d0)){return _0x8bdc96[_0xc32c('0x97')](_0x38d8d0,{'transaction':_0x4af328})['then'](function(){return db[_0xc32c('0x7f')][_0xc32c('0x34')]({'where':{'VoiceQueueId':_0xcf268[_0xc32c('0x53')]['id'],'UserId':_0x38d8d0},'transaction':_0x4af328});});}})[_0xc32c('0x29')](function(){_0x38d8d0['forEach'](function(_0x222513){socket[_0xc32c('0x98')](_0xc32c('0x99'),{'UserId':_0x222513,'VoiceQueueId':_0x8bdc96['id']});});});});});});})['then'](respondWithStatusCode(_0x29f4f0,null))[_0xc32c('0x51')](handleError(_0x29f4f0,null));};exports[_0xc32c('0x9a')]=function(_0x167dae,_0x72685a,_0x1d89f8){var _0x4fdb78,_0x4a98bb;return db[_0xc32c('0x3a')][_0xc32c('0x56')]({'where':{'id':_0x167dae['params']['id']}})[_0xc32c('0x29')](handleEntityNotFound(_0x72685a,null))[_0xc32c('0x29')](function(_0x146299){if(_0x146299){_0x4a98bb=_0x146299;return _0x146299[_0xc32c('0x9a')](_0x167dae['body'][_0xc32c('0x86')],_[_0xc32c('0x60')](_0x167dae['body'],[_0xc32c('0x86'),'id'])||{})['spread'](function(_0x313e13){for(var _0x4e35bd=0x0;_0x4e35bd<_0x167dae[_0xc32c('0x57')][_0xc32c('0x86')][_0xc32c('0x45')];_0x4e35bd+=0x1){socket[_0xc32c('0x98')]('userVoiceQueue:save',{'UserId':Number(_0x167dae['body']['ids'][_0x4e35bd]),'VoiceQueueId':Number(_0x167dae[_0xc32c('0x53')]['id'])});}return _0x313e13;});}})[_0xc32c('0x29')](function(_0xbb6697){_0x4fdb78=_0xbb6697||[];if(_0x4a98bb){return db[_0xc32c('0x72')][_0xc32c('0x4f')]({'where':{'id':_0x167dae['body']['ids']},'attributes':['id',_0xc32c('0x37'),_0xc32c('0x74'),_0xc32c('0x75'),_0xc32c('0x76')],'raw':!![]});}})[_0xc32c('0x29')](function(_0x5a42b0){if(!_[_0xc32c('0x9b')](_0x5a42b0)){var _0x1da0b8=[];for(var _0x2a9288=0x0;_0x2a9288<_0x5a42b0['length'];_0x2a9288++){if(_0x5a42b0[_0x2a9288]['online']){_0x1da0b8['push'](db['UserVoiceQueueRt'][_0xc32c('0x80')]({'membername':_0x5a42b0[_0x2a9288][_0xc32c('0x37')],'UserId':_0x5a42b0[_0x2a9288]['id'],'queue_name':_0x4a98bb['name'],'VoiceQueueId':_0x4a98bb['id'],'interface':_[_0xc32c('0x81')](_0x5a42b0[_0x2a9288][_0xc32c('0x76')])?util['format']('SIP/%s',_0x5a42b0[_0x2a9288]['name']):_0x5a42b0[_0x2a9288][_0xc32c('0x76')],'paused':_0x5a42b0[_0x2a9288]['voicePause']||![],'penalty':_0x167dae[_0xc32c('0x57')][_0xc32c('0x78')]||0x0}));}}return BPromise[_0xc32c('0x93')](_0x1da0b8);}})[_0xc32c('0x29')](function(){return _0x4fdb78;})[_0xc32c('0x29')](respondWithResult(_0x72685a,null))['catch'](handleError(_0x72685a,null));};exports['removeAgents']=function(_0x40d3ce,_0x3a920e,_0xcc636c){return db[_0xc32c('0x3a')]['find']({'where':{'id':_0x40d3ce['params']['id']}})[_0xc32c('0x29')](handleEntityNotFound(_0x3a920e,null))['then'](function(_0x55e6d0){if(_0x55e6d0){return _0x55e6d0[_0xc32c('0x97')](_0x40d3ce[_0xc32c('0x3e')][_0xc32c('0x86')])[_0xc32c('0x29')](function(){if(_[_0xc32c('0x9c')](_0x40d3ce['query'][_0xc32c('0x86')])){for(var _0x47c2d1=0x0;_0x47c2d1<_0x40d3ce[_0xc32c('0x3e')][_0xc32c('0x86')][_0xc32c('0x45')];_0x47c2d1+=0x1){socket[_0xc32c('0x98')]('userVoiceQueue:remove',{'UserId':Number(_0x40d3ce['query']['ids'][_0x47c2d1]),'VoiceQueueId':Number(_0x40d3ce[_0xc32c('0x53')]['id'])});}}else{socket[_0xc32c('0x98')](_0xc32c('0x99'),{'UserId':Number(_0x40d3ce[_0xc32c('0x3e')][_0xc32c('0x86')]),'VoiceQueueId':Number(_0x40d3ce[_0xc32c('0x53')]['id'])});}});}})[_0xc32c('0x29')](function(_0x4623c2){return db[_0xc32c('0x7f')][_0xc32c('0x34')]({'where':{'VoiceQueueId':_0x40d3ce[_0xc32c('0x53')]['id'],'UserId':_0x40d3ce[_0xc32c('0x3e')][_0xc32c('0x86')]}})['then'](function(){return _0x4623c2;});})[_0xc32c('0x29')](respondWithStatusCode(_0x3a920e,null))[_0xc32c('0x51')](handleError(_0x3a920e,null));};exports[_0xc32c('0x9d')]=function(_0xcaf12a,_0x274243,_0x5e4994){var _0xd85690={};var _0x54447f={};var _0x91bf46;var _0x1b8e36;return db['VoiceQueue'][_0xc32c('0x65')]({'where':{'id':_0xcaf12a['params']['id']}})['then'](handleEntityNotFound(_0x274243,null))[_0xc32c('0x29')](function(_0x1bbe1c){if(_0x1bbe1c){_0x91bf46=_0x1bbe1c;_0x54447f[_0xc32c('0x41')]=_[_0xc32c('0x3f')](db[_0xc32c('0x72')]['rawAttributes']);_0x54447f['query']=_['keys'](_0xcaf12a[_0xc32c('0x3e')]);_0x54447f[_0xc32c('0x40')]=_[_0xc32c('0x43')](_0x54447f[_0xc32c('0x41')],_0x54447f[_0xc32c('0x3e')]);_0xd85690[_0xc32c('0x42')]=_[_0xc32c('0x43')](_0x54447f[_0xc32c('0x41')],qs['fields'](_0xcaf12a[_0xc32c('0x3e')][_0xc32c('0x44')]));_0xd85690[_0xc32c('0x42')]=_0xd85690[_0xc32c('0x42')]['length']?_0xd85690[_0xc32c('0x42')]:_0x54447f[_0xc32c('0x41')];_0xd85690['order']=qs[_0xc32c('0x49')](_0xcaf12a[_0xc32c('0x3e')]['sort']);_0xd85690['where']=qs[_0xc32c('0x40')](_[_0xc32c('0x4a')](_0xcaf12a[_0xc32c('0x3e')],_0x54447f[_0xc32c('0x40')]));if(_0xcaf12a[_0xc32c('0x3e')][_0xc32c('0x2f')]){_0xd85690[_0xc32c('0x4b')]=_['merge'](_0xd85690[_0xc32c('0x4b')],{'$or':_['map'](_0xd85690[_0xc32c('0x42')],function(_0x563dd7){var _0x54569a={};_0x54569a[_0x563dd7]={'$like':'%'+_0xcaf12a[_0xc32c('0x3e')]['filter']+'%'};return _0x54569a;})});}_0xd85690=_[_0xc32c('0x55')]({},_0xd85690,_0xcaf12a['options']);return _0x91bf46[_0xc32c('0x9d')](_0xd85690);}})[_0xc32c('0x29')](function(_0x2a7765){if(_0x2a7765){_0x1b8e36=_0x2a7765['length'];if(!_0xcaf12a[_0xc32c('0x3e')][_0xc32c('0x46')](_0xc32c('0x67'))){_0xd85690[_0xc32c('0x47')]=qs[_0xc32c('0x47')](_0xcaf12a[_0xc32c('0x3e')][_0xc32c('0x47')]);_0xd85690[_0xc32c('0x22')]=qs[_0xc32c('0x22')](_0xcaf12a[_0xc32c('0x3e')][_0xc32c('0x22')]);}return _0x91bf46[_0xc32c('0x9d')](_0xd85690);}})['then'](function(_0x4b68b8){if(_0x4b68b8){return _0x4b68b8?{'count':_0x1b8e36,'rows':_0x4b68b8}:null;}})[_0xc32c('0x29')](respondWithResult(_0x274243,null))[_0xc32c('0x51')](handleError(_0x274243,null));};exports[_0xc32c('0x9e')]=function(_0x420790,_0x47db50,_0x302d6c){var _0x3dddb9={};var _0x1f666b={};var _0x3cbcc0;var _0x1f5871;return db['VoiceQueue']['findOne']({'where':{'id':_0x420790[_0xc32c('0x53')]['id']}})[_0xc32c('0x29')](handleEntityNotFound(_0x47db50,null))[_0xc32c('0x29')](function(_0x22e095){if(_0x22e095){_0x3cbcc0=_0x22e095;_0x1f666b[_0xc32c('0x41')]=_[_0xc32c('0x3f')](db[_0xc32c('0x7f')][_0xc32c('0x3b')]);_0x1f666b[_0xc32c('0x3e')]=_[_0xc32c('0x3f')](_0x420790[_0xc32c('0x3e')]);_0x1f666b[_0xc32c('0x40')]=_[_0xc32c('0x43')](_0x1f666b[_0xc32c('0x41')],_0x1f666b[_0xc32c('0x3e')]);_0x3dddb9['attributes']=_['intersection'](_0x1f666b[_0xc32c('0x41')],qs['fields'](_0x420790[_0xc32c('0x3e')][_0xc32c('0x44')]));_0x3dddb9[_0xc32c('0x42')]=_0x3dddb9['attributes']['length']?_0x3dddb9[_0xc32c('0x42')]:_0x1f666b[_0xc32c('0x41')];_0x3dddb9[_0xc32c('0x48')]=qs[_0xc32c('0x49')](_0x420790[_0xc32c('0x3e')][_0xc32c('0x49')]);_0x3dddb9['where']=qs[_0xc32c('0x40')](_[_0xc32c('0x4a')](_0x420790['query'],_0x1f666b['filters']));if(_0x420790[_0xc32c('0x3e')][_0xc32c('0x2f')]){_0x3dddb9[_0xc32c('0x4b')]=_[_0xc32c('0x55')](_0x3dddb9[_0xc32c('0x4b')],{'$or':_[_0xc32c('0x39')](_0x3dddb9[_0xc32c('0x42')],function(_0xa76f70){var _0x3ba7ea={};_0x3ba7ea[_0xa76f70]={'$like':'%'+_0x420790['query'][_0xc32c('0x2f')]+'%'};return _0x3ba7ea;})});}_0x3dddb9=_['merge']({},_0x3dddb9,_0x420790[_0xc32c('0x4d')]);return _0x3cbcc0[_0xc32c('0x9e')](_0x3dddb9);}})['then'](function(_0x565dda){if(_0x565dda){_0x1f5871=_0x565dda[_0xc32c('0x45')];if(!_0x420790[_0xc32c('0x3e')][_0xc32c('0x46')]('nolimit')){_0x3dddb9['limit']=qs[_0xc32c('0x47')](_0x420790[_0xc32c('0x3e')][_0xc32c('0x47')]);_0x3dddb9[_0xc32c('0x22')]=qs[_0xc32c('0x22')](_0x420790[_0xc32c('0x3e')]['offset']);}return _0x3cbcc0[_0xc32c('0x9e')](_0x3dddb9);}})[_0xc32c('0x29')](function(_0x5633f2){return _0x5633f2?{'count':_0x1f5871,'rows':_0x5633f2}:null;})[_0xc32c('0x29')](respondWithResult(_0x47db50,null))['catch'](handleError(_0x47db50,null));};exports[_0xc32c('0x9f')]=function(_0x1a0a44,_0x147a32,_0x5d7698){var _0x5ba3a9={};var _0x4bd504={};var _0x201b75;var _0x57feaf;return db['VoiceQueue'][_0xc32c('0x65')]({'where':{'id':_0x1a0a44[_0xc32c('0x53')]['id']}})[_0xc32c('0x29')](handleEntityNotFound(_0x147a32,null))[_0xc32c('0x29')](function(_0xb898c2){if(_0xb898c2){_0x201b75=_0xb898c2;_0x4bd504['model']=_[_0xc32c('0x3f')](db[_0xc32c('0xa0')][_0xc32c('0x3b')]);_0x4bd504[_0xc32c('0x3e')]=_[_0xc32c('0x3f')](_0x1a0a44[_0xc32c('0x3e')]);_0x4bd504[_0xc32c('0x40')]=_[_0xc32c('0x43')](_0x4bd504['model'],_0x4bd504[_0xc32c('0x3e')]);_0x5ba3a9[_0xc32c('0x42')]=_['intersection'](_0x4bd504[_0xc32c('0x41')],qs[_0xc32c('0x44')](_0x1a0a44[_0xc32c('0x3e')][_0xc32c('0x44')]));_0x5ba3a9['attributes']=_0x5ba3a9[_0xc32c('0x42')][_0xc32c('0x45')]?_0x5ba3a9['attributes']:_0x4bd504[_0xc32c('0x41')];_0x5ba3a9[_0xc32c('0x48')]=qs[_0xc32c('0x49')](_0x1a0a44[_0xc32c('0x3e')]['sort']);_0x5ba3a9[_0xc32c('0x4b')]=qs[_0xc32c('0x40')](_[_0xc32c('0x4a')](_0x1a0a44[_0xc32c('0x3e')],_0x4bd504['filters']));if(_0x1a0a44[_0xc32c('0x3e')][_0xc32c('0x2f')]){_0x5ba3a9['where']=_[_0xc32c('0x55')](_0x5ba3a9['where'],{'$or':_[_0xc32c('0x39')](_0x5ba3a9[_0xc32c('0x42')],function(_0xb59ee9){var _0x2ee361={};_0x2ee361[_0xb59ee9]={'$like':'%'+_0x1a0a44['query'][_0xc32c('0x2f')]+'%'};return _0x2ee361;})});}_0x5ba3a9=_['merge']({},_0x5ba3a9,_0x1a0a44[_0xc32c('0x4d')]);return _0x201b75[_0xc32c('0x9f')](_0x5ba3a9);}})[_0xc32c('0x29')](function(_0x20570f){if(_0x20570f){_0x57feaf=_0x20570f[_0xc32c('0x45')];if(!_0x1a0a44['query'][_0xc32c('0x46')](_0xc32c('0x67'))){_0x5ba3a9[_0xc32c('0x47')]=qs[_0xc32c('0x47')](_0x1a0a44[_0xc32c('0x3e')][_0xc32c('0x47')]);_0x5ba3a9[_0xc32c('0x22')]=qs[_0xc32c('0x22')](_0x1a0a44[_0xc32c('0x3e')][_0xc32c('0x22')]);}return _0x201b75[_0xc32c('0x9f')](_0x5ba3a9);}})[_0xc32c('0x29')](function(_0x1f7e75){if(_0x1f7e75){return _0x1f7e75?{'count':_0x57feaf,'rows':_0x1f7e75}:null;}})[_0xc32c('0x29')](respondWithResult(_0x147a32,null))['catch'](handleError(_0x147a32,null));};exports[_0xc32c('0xa1')]=function(_0x2c43b7,_0x520490,_0x3323b0){var _0x616957,_0x587d06;return db[_0xc32c('0x3a')][_0xc32c('0x56')]({'where':{'id':_0x2c43b7['params']['id']}})[_0xc32c('0x29')](handleEntityNotFound(_0x520490,null))[_0xc32c('0x29')](function(_0x41a9d9){if(_0x41a9d9){_0x587d06=_0x41a9d9;return _0x41a9d9[_0xc32c('0xa1')](_0x2c43b7['body'][_0xc32c('0x86')],_[_0xc32c('0x60')](_0x2c43b7[_0xc32c('0x57')],[_0xc32c('0x86'),'id'])||{});}return null;})[_0xc32c('0xa2')](function(_0x4ff5ee){var _0xbdc361;_0x616957=_0x4ff5ee||[];var _0x3f1bee=[];if(_0x4ff5ee){for(var _0x59decb=0x0;_0x59decb<_0x4ff5ee[_0xc32c('0x45')];_0x59decb+=0x1){var _0x56ec5c=_0x4ff5ee[_0x59decb]['get']({'plain':!![]});_0x587d06[_0xc32c('0xa3')]=_0x2c43b7[_0xc32c('0x57')][_0xc32c('0xa3')]?_0x2c43b7['body']['dialCheckDuplicateType']:_0x587d06[_0xc32c('0xa3')];switch(_0x587d06[_0xc32c('0xa3')]){case _0xc32c('0xa4'):_0xbdc361=squel[_0xc32c('0xa5')]()[_0xc32c('0xa6')](_0xc32c('0xa7'))[_0xc32c('0xa8')]([_0xc32c('0xa9'),'scheduledAt',_0xc32c('0xaa'),_0xc32c('0xab'),_0xc32c('0x68'),_0xc32c('0x62'),_0xc32c('0x61')],squel[_0xc32c('0x87')]()['field'](_0xc32c('0xa9'),'phone')['field']('NOW()',_0xc32c('0xac'))[_0xc32c('0x88')]('id',_0xc32c('0xaa'))[_0xc32c('0x88')](_0x56ec5c[_0xc32c('0xad')][_0xc32c('0x90')](),_0xc32c('0xab'))[_0xc32c('0x88')](_0x2c43b7[_0xc32c('0x53')]['id'][_0xc32c('0x90')](),_0xc32c('0x68'))[_0xc32c('0x88')]('NOW()','createdAt')['field']('NOW()',_0xc32c('0x61'))[_0xc32c('0x8a')](_0xc32c('0xae'))[_0xc32c('0x4b')](_0xc32c('0xaf'))[_0xc32c('0x4b')](_0xc32c('0xb0'),_0x56ec5c[_0xc32c('0xad')][_0xc32c('0x90')]())[_0xc32c('0x4b')](_0xc32c('0xb1'))[_0xc32c('0x4b')](_0xc32c('0xb2'),squel[_0xc32c('0x87')]()[_0xc32c('0x88')](_0xc32c('0xb3'))[_0xc32c('0x8a')](_0xc32c('0xb4'))[_0xc32c('0x4b')](_0xc32c('0xb5'),_0x2c43b7[_0xc32c('0x53')]['id'][_0xc32c('0x90')]()))[_0xc32c('0x4b')](_0xc32c('0xb2'),squel[_0xc32c('0x87')]()[_0xc32c('0x88')](_0xc32c('0xb6'))['from'](_0xc32c('0xa7'))[_0xc32c('0x4b')](_0xc32c('0xb5'),_0x2c43b7['params']['id'][_0xc32c('0x90')]())))[_0xc32c('0x90')]();break;case _0xc32c('0xb7'):_0xbdc361=squel[_0xc32c('0xa5')]()[_0xc32c('0xa6')]('cm_hopper')[_0xc32c('0xa8')]([_0xc32c('0xa9'),_0xc32c('0xac'),_0xc32c('0xaa'),'ListId',_0xc32c('0x68'),_0xc32c('0x62'),_0xc32c('0x61')],squel[_0xc32c('0x87')]()[_0xc32c('0x88')](_0xc32c('0xa9'),_0xc32c('0xa9'))[_0xc32c('0x88')](_0xc32c('0xb8'),'scheduledAt')[_0xc32c('0x88')]('id',_0xc32c('0xaa'))[_0xc32c('0x88')](_0x56ec5c['CmListId']['toString'](),_0xc32c('0xab'))[_0xc32c('0x88')](_0x2c43b7[_0xc32c('0x53')]['id']['toString'](),_0xc32c('0x68'))[_0xc32c('0x88')](_0xc32c('0xb8'),'createdAt')[_0xc32c('0x88')]('NOW()',_0xc32c('0x61'))[_0xc32c('0x8a')](_0xc32c('0xae'))[_0xc32c('0x4b')](_0xc32c('0xaf'))['where'](_0xc32c('0xb0'),_0x56ec5c['CmListId']['toString']())[_0xc32c('0x4b')]('phone\x20IS\x20NOT\x20NULL')['where'](_0xc32c('0xb2'),squel['select']()[_0xc32c('0x88')]('COALESCE(phone,\x27\x27)')[_0xc32c('0x8a')](_0xc32c('0xa7'))[_0xc32c('0x4b')](_0xc32c('0xb5'),_0x2c43b7[_0xc32c('0x53')]['id'][_0xc32c('0x90')]())))['toString']();break;default:_0xbdc361=squel[_0xc32c('0xa5')]()[_0xc32c('0xa6')](_0xc32c('0xa7'))[_0xc32c('0xa8')]([_0xc32c('0xa9'),'scheduledAt',_0xc32c('0xaa'),'ListId',_0xc32c('0x68'),'createdAt',_0xc32c('0x61')],squel[_0xc32c('0x87')]()[_0xc32c('0x88')](_0xc32c('0xa9'),'phone')[_0xc32c('0x88')](_0xc32c('0xb8'),_0xc32c('0xac'))[_0xc32c('0x88')]('id',_0xc32c('0xaa'))[_0xc32c('0x88')](_0x56ec5c[_0xc32c('0xad')]['toString'](),'ListId')[_0xc32c('0x88')](_0x2c43b7[_0xc32c('0x53')]['id'][_0xc32c('0x90')](),_0xc32c('0x68'))[_0xc32c('0x88')](_0xc32c('0xb8'),'createdAt')[_0xc32c('0x88')]('NOW()',_0xc32c('0x61'))[_0xc32c('0x8a')](_0xc32c('0xae'))[_0xc32c('0x4b')](_0xc32c('0xaf'))[_0xc32c('0x4b')]('ListId\x20=\x20?',_0x56ec5c[_0xc32c('0xad')]['toString']())['where']('phone\x20IS\x20NOT\x20NULL'))[_0xc32c('0x90')]();}_0x3f1bee['push'](db[_0xc32c('0x79')][_0xc32c('0x3e')](_0xbdc361));}return BPromise[_0xc32c('0x93')](_0x3f1bee);}})[_0xc32c('0x29')](function(){return _0x616957;})[_0xc32c('0x29')](respondWithResult(_0x520490,null))[_0xc32c('0x51')](handleError(_0x520490,null));};exports['removeLists']=function(_0x37fecf,_0x2c956c,_0x120541){return db[_0xc32c('0x3a')][_0xc32c('0x56')]({'where':{'id':_0x37fecf[_0xc32c('0x53')]['id']}})['then'](handleEntityNotFound(_0x2c956c,null))[_0xc32c('0x29')](function(_0x127d7c){if(_0x127d7c){return _0x127d7c[_0xc32c('0xb9')](_0x37fecf['query']['ids']);}})['then'](function(_0x245b29){if(_0x245b29){return db[_0xc32c('0x66')]['destroy']({'where':{'ListId':_0x37fecf['query'][_0xc32c('0x86')],'VoiceQueueId':_0x37fecf[_0xc32c('0x53')]['id']}})[_0xc32c('0x29')](function(){return _0x245b29;});}})['then'](respondWithStatusCode(_0x2c956c,null))[_0xc32c('0x51')](handleError(_0x2c956c,null));};exports[_0xc32c('0xba')]=function(_0x1300c0,_0x16e8a5,_0x594831){var _0x341d1f={};var _0x18f279={};var _0x9fd43e;var _0x42a84b;return db[_0xc32c('0x3a')][_0xc32c('0x65')]({'where':{'id':_0x1300c0[_0xc32c('0x53')]['id']}})['then'](handleEntityNotFound(_0x16e8a5,null))[_0xc32c('0x29')](function(_0xa08e4f){if(_0xa08e4f){_0x9fd43e=_0xa08e4f;_0x18f279[_0xc32c('0x41')]=_['keys'](db[_0xc32c('0xa0')][_0xc32c('0x3b')]);_0x18f279['query']=_[_0xc32c('0x3f')](_0x1300c0[_0xc32c('0x3e')]);_0x18f279[_0xc32c('0x40')]=_['intersection'](_0x18f279[_0xc32c('0x41')],_0x18f279[_0xc32c('0x3e')]);_0x341d1f[_0xc32c('0x42')]=_[_0xc32c('0x43')](_0x18f279[_0xc32c('0x41')],qs[_0xc32c('0x44')](_0x1300c0[_0xc32c('0x3e')][_0xc32c('0x44')]));_0x341d1f['attributes']=_0x341d1f['attributes'][_0xc32c('0x45')]?_0x341d1f[_0xc32c('0x42')]:_0x18f279[_0xc32c('0x41')];_0x341d1f['order']=qs[_0xc32c('0x49')](_0x1300c0[_0xc32c('0x3e')][_0xc32c('0x49')]);_0x341d1f[_0xc32c('0x4b')]=qs[_0xc32c('0x40')](_['pick'](_0x1300c0[_0xc32c('0x3e')],_0x18f279[_0xc32c('0x40')]));if(_0x1300c0[_0xc32c('0x3e')][_0xc32c('0x2f')]){_0x341d1f[_0xc32c('0x4b')]=_[_0xc32c('0x55')](_0x341d1f[_0xc32c('0x4b')],{'$or':_[_0xc32c('0x39')](_0x341d1f[_0xc32c('0x42')],function(_0x38ddd4){var _0x4fc919={};_0x4fc919[_0x38ddd4]={'$like':'%'+_0x1300c0['query'][_0xc32c('0x2f')]+'%'};return _0x4fc919;})});}_0x341d1f=_[_0xc32c('0x55')]({},_0x341d1f,_0x1300c0['options']);return _0x9fd43e['getBlackLists'](_0x341d1f);}})[_0xc32c('0x29')](function(_0x1361d1){if(_0x1361d1){_0x42a84b=_0x1361d1[_0xc32c('0x45')];if(!_0x1300c0['query'][_0xc32c('0x46')](_0xc32c('0x67'))){_0x341d1f[_0xc32c('0x47')]=qs[_0xc32c('0x47')](_0x1300c0[_0xc32c('0x3e')][_0xc32c('0x47')]);_0x341d1f['offset']=qs[_0xc32c('0x22')](_0x1300c0[_0xc32c('0x3e')][_0xc32c('0x22')]);}return _0x9fd43e['getBlackLists'](_0x341d1f);}})[_0xc32c('0x29')](function(_0xc6cf2b){if(_0xc6cf2b){return _0xc6cf2b?{'count':_0x42a84b,'rows':_0xc6cf2b}:null;}})[_0xc32c('0x29')](respondWithResult(_0x16e8a5,null))[_0xc32c('0x51')](handleError(_0x16e8a5,null));};exports[_0xc32c('0xbb')]=function(_0x3bcb11,_0x58ec57,_0x3e9e5d){var _0x486284,_0x1090ea;return db['VoiceQueue'][_0xc32c('0x56')]({'where':{'id':_0x3bcb11[_0xc32c('0x53')]['id']}})['then'](handleEntityNotFound(_0x58ec57,null))[_0xc32c('0x29')](function(_0x538dbf){if(_0x538dbf){_0x1090ea=_0x538dbf;return _0x538dbf[_0xc32c('0xbb')](_0x3bcb11[_0xc32c('0x57')]['ids'],_[_0xc32c('0x60')](_0x3bcb11[_0xc32c('0x57')],[_0xc32c('0x86'),'id'])||{});}return null;})[_0xc32c('0xa2')](function(_0x302220){var _0x10067c;_0x486284=_0x302220||[];var _0x472b2d=[];if(_0x302220){for(var _0x593c67=0x0;_0x593c67<_0x302220[_0xc32c('0x45')];_0x593c67+=0x1){var _0xa928c4=_0x302220[_0x593c67][_0xc32c('0x2a')]({'plain':!![]});_0x10067c=squel[_0xc32c('0xa5')]()['into'](_0xc32c('0xbc'))[_0xc32c('0xa8')](['phone',_0xc32c('0xaa'),'ListId','VoiceQueueId',_0xc32c('0x62'),_0xc32c('0x61')],squel['select']()[_0xc32c('0x88')](_0xc32c('0xa9'),_0xc32c('0xa9'))['field']('id',_0xc32c('0xaa'))[_0xc32c('0x88')](_0xa928c4[_0xc32c('0xad')][_0xc32c('0x90')](),_0xc32c('0xab'))[_0xc32c('0x88')](_0x3bcb11[_0xc32c('0x53')]['id'][_0xc32c('0x90')](),_0xc32c('0x68'))[_0xc32c('0x88')](_0xc32c('0xb8'),'createdAt')['field'](_0xc32c('0xb8'),'updatedAt')['from'](_0xc32c('0xae'))[_0xc32c('0x4b')](_0xc32c('0xaf'))['where']('ListId\x20=\x20?',_0xa928c4[_0xc32c('0xad')][_0xc32c('0x90')]())['where'](_0xc32c('0xb1')))[_0xc32c('0x90')]();_0x472b2d[_0xc32c('0x8f')](db[_0xc32c('0x79')]['query'](_0x10067c));}return BPromise[_0xc32c('0x93')](_0x472b2d);}})[_0xc32c('0x29')](function(){return _0x486284;})['then'](respondWithResult(_0x58ec57,null))[_0xc32c('0x51')](handleError(_0x58ec57,null));};exports[_0xc32c('0xbd')]=function(_0x1a623a,_0xc2bf57,_0x27c11c){return db[_0xc32c('0x3a')][_0xc32c('0x56')]({'where':{'id':_0x1a623a[_0xc32c('0x53')]['id']}})[_0xc32c('0x29')](handleEntityNotFound(_0xc2bf57,null))[_0xc32c('0x29')](function(_0x2ef00b){if(_0x2ef00b){return _0x2ef00b[_0xc32c('0xbd')](_0x1a623a[_0xc32c('0x3e')][_0xc32c('0x86')]);}})[_0xc32c('0x29')](function(_0x52d02f){if(_0x52d02f){return db[_0xc32c('0x6e')][_0xc32c('0x34')]({'where':{'ListId':_0x1a623a[_0xc32c('0x3e')][_0xc32c('0x86')],'VoiceQueueId':_0x1a623a[_0xc32c('0x53')]['id']}})['then'](function(){return _0x52d02f;});}})[_0xc32c('0x29')](respondWithStatusCode(_0xc2bf57,null))[_0xc32c('0x51')](handleError(_0xc2bf57,null));};
\ No newline at end of file
+var _0x11b9=['UserProfileResource','error','stack','send','index','VoiceQueue','rawAttributes','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','includeAll','include','findAll','rows','catch','show','params','merge','create','body','user','role','get','VoiceQueues','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','inbound','destroy','getHoppers','CmHopper','pick','VoiceQueueId','options','getHopperHistories','findOne','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','interface','forEach','sequelize','transaction','upsert','each','UserVoiceQueue','findOrCreate','penalty','UserVoiceQueueRt','isNil','format','SIP/%s','emit','userVoiceQueue:save','removeTeams','ids','Agents','select','from','team_has_voice_queues','join','user_has_teams','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','union','compact','isEmpty','userVoiceQueue:remove','addAgents','spread','online','voicePause','all','removeAgents','getAgents','getMembers','getLists','addLists','omit','dialCheckDuplicateType','always','into','cm_hopper','fromQuery','phone','NOW()','scheduledAt','field','ContactId','CmListId','toString','ListId','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','onlyIfOpen','insert','deletedAt\x20IS\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(phone,\x27\x27)','removeLists','getBlackLists','CmList','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','redis','defaults','localhost','./voiceQueue.socket','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','reject','update','then','QueueCampaigns','outbound','filter','map','value','includes','type','find','name'];(function(_0x79cd47,_0x16102d){var _0x3b9484=function(_0x23db95){while(--_0x23db95){_0x79cd47['push'](_0x79cd47['shift']());}};_0x3b9484(++_0x16102d);}(_0x11b9,0x87));var _0x911b=function(_0x1fa871,_0x2b0e76){_0x1fa871=_0x1fa871-0x0;var _0x4f8de9=_0x11b9[_0x1fa871];return _0x4f8de9;};'use strict';var emlformat=require(_0x911b('0x0'));var rimraf=require(_0x911b('0x1'));var zipdir=require(_0x911b('0x2'));var jsonpatch=require(_0x911b('0x3'));var rp=require(_0x911b('0x4'));var moment=require('moment');var BPromise=require(_0x911b('0x5'));var Mustache=require(_0x911b('0x6'));var util=require(_0x911b('0x7'));var path=require('path');var sox=require(_0x911b('0x8'));var csv=require(_0x911b('0x9'));var ejs=require(_0x911b('0xa'));var fs=require('fs');var fs_extra=require(_0x911b('0xb'));var _=require(_0x911b('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x911b('0xd'));var deskjs=require(_0x911b('0xe'));var toCsv=require(_0x911b('0x9'));var querystring=require(_0x911b('0xf'));var Papa=require(_0x911b('0x10'));var Redis=require(_0x911b('0x11'));var authService=require(_0x911b('0x12'));var qs=require(_0x911b('0x13'));var as=require(_0x911b('0x14'));var hardwareService=require(_0x911b('0x15'));var logger=require('../../config/logger')(_0x911b('0x16'));var utils=require(_0x911b('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x911b('0x18'));var db=require('../../mysqldb')['db'];config[_0x911b('0x19')]=_[_0x911b('0x1a')](config['redis'],{'host':_0x911b('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x911b('0x19')]));require(_0x911b('0x1c'))['register'](socket);function respondWithStatusCode(_0x2eb3cd,_0x4e7d1b){_0x4e7d1b=_0x4e7d1b||0xcc;return function(_0x13f609){if(_0x13f609){return _0x2eb3cd[_0x911b('0x1d')](_0x4e7d1b);}return _0x2eb3cd[_0x911b('0x1e')](_0x4e7d1b)[_0x911b('0x1f')]();};}function respondWithResult(_0x16992b,_0x5d358d){_0x5d358d=_0x5d358d||0xc8;return function(_0x594b0c){if(_0x594b0c){return _0x16992b['status'](_0x5d358d)[_0x911b('0x20')](_0x594b0c);}};}function respondWithFilteredResult(_0xe1433d,_0x700722){return function(_0x2d425c){if(_0x2d425c){var _0x52da8d=typeof _0x700722['offset']==='undefined'&&typeof _0x700722['limit']===_0x911b('0x21');var _0x789c01=_0x2d425c[_0x911b('0x22')];var _0x1a2318=_0x52da8d?0x0:_0x700722['offset'];var _0x44251a=_0x52da8d?_0x2d425c[_0x911b('0x22')]:_0x700722[_0x911b('0x23')]+_0x700722['limit'];var _0x6ef848;if(_0x44251a>=_0x789c01){_0x44251a=_0x789c01;_0x6ef848=0xc8;}else{_0x6ef848=0xce;}_0xe1433d[_0x911b('0x1e')](_0x6ef848);return _0xe1433d[_0x911b('0x24')](_0x911b('0x25'),_0x1a2318+'-'+_0x44251a+'/'+_0x789c01)[_0x911b('0x20')](_0x2d425c);}return null;};}function patchUpdates(_0x58e436){return function(_0x33b1aa){try{jsonpatch['apply'](_0x33b1aa,_0x58e436,!![]);}catch(_0x399b8b){return BPromise[_0x911b('0x26')](_0x399b8b);}return _0x33b1aa['save']();};}function saveUpdates(_0xedcc13,_0x1c28a7){return function(_0x334535){if(_0x334535){return _0x334535[_0x911b('0x27')](_0xedcc13)[_0x911b('0x28')](function(_0x40cb09){return _0x40cb09;});}return null;};}function removeEntity(_0x4e1e80,_0x3dbeed){return function(_0x539dc6){if(_0x539dc6){return _0x539dc6['destroy']()[_0x911b('0x28')](function(){var _0x2c326e=_0x539dc6['get']({'plain':!![]});var _0x597a0d=[{'name':'VoiceQueues','value':'inbound','ignore':![]},{'name':_0x911b('0x29'),'value':_0x911b('0x2a'),'ignore':![]}];var _0x49f795=_(_0x597a0d)[_0x911b('0x2b')]('ignore')[_0x911b('0x2c')]('value')[_0x911b('0x2d')]();if(_[_0x911b('0x2e')](_0x49f795,_0x2c326e[_0x911b('0x2f')])){return;}var _0x3dbbc5=_[_0x911b('0x30')](_0x597a0d,['value',_0x2c326e['type']])[_0x911b('0x31')];return db[_0x911b('0x32')]['destroy']({'where':{'type':_0x3dbbc5,'resourceId':_0x2c326e['id']}})[_0x911b('0x28')](function(){return _0x539dc6;});})[_0x911b('0x28')](function(){_0x4e1e80[_0x911b('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51a7b4,_0x453dce){return function(_0x1223fe){if(!_0x1223fe){_0x51a7b4[_0x911b('0x1d')](0x194);}return _0x1223fe;};}function handleError(_0x2b39a0,_0x7dbed4){_0x7dbed4=_0x7dbed4||0x1f4;return function(_0x147aff){logger[_0x911b('0x33')](_0x147aff[_0x911b('0x34')]);if(_0x147aff[_0x911b('0x31')]){delete _0x147aff[_0x911b('0x31')];}_0x2b39a0[_0x911b('0x1e')](_0x7dbed4)[_0x911b('0x35')](_0x147aff);};}exports[_0x911b('0x36')]=function(_0x1118a9,_0x10ff95){var _0x4cace2={},_0x57253e={},_0x56cbc3={'count':0x0,'rows':[]};var _0x3a7614=_['map'](db[_0x911b('0x37')][_0x911b('0x38')],function(_0x1a3b3f){return{'name':_0x1a3b3f['fieldName'],'type':_0x1a3b3f[_0x911b('0x2f')][_0x911b('0x39')]};});_0x57253e[_0x911b('0x3a')]=_[_0x911b('0x2c')](_0x3a7614,'name');_0x57253e[_0x911b('0x3b')]=_[_0x911b('0x3c')](_0x1118a9[_0x911b('0x3b')]);_0x57253e[_0x911b('0x3d')]=_['intersection'](_0x57253e[_0x911b('0x3a')],_0x57253e[_0x911b('0x3b')]);_0x4cace2[_0x911b('0x3e')]=_[_0x911b('0x3f')](_0x57253e[_0x911b('0x3a')],qs[_0x911b('0x40')](_0x1118a9[_0x911b('0x3b')]['fields']));_0x4cace2['attributes']=_0x4cace2[_0x911b('0x3e')][_0x911b('0x41')]?_0x4cace2[_0x911b('0x3e')]:_0x57253e[_0x911b('0x3a')];if(!_0x1118a9[_0x911b('0x3b')][_0x911b('0x42')](_0x911b('0x43'))){_0x4cace2['limit']=qs[_0x911b('0x44')](_0x1118a9[_0x911b('0x3b')][_0x911b('0x44')]);_0x4cace2[_0x911b('0x23')]=qs[_0x911b('0x23')](_0x1118a9['query'][_0x911b('0x23')]);}_0x4cace2[_0x911b('0x45')]=qs[_0x911b('0x46')](_0x1118a9['query']['sort']);_0x4cace2[_0x911b('0x47')]=qs[_0x911b('0x3d')](_['pick'](_0x1118a9[_0x911b('0x3b')],_0x57253e[_0x911b('0x3d')]),_0x3a7614);if(_0x1118a9[_0x911b('0x3b')][_0x911b('0x2b')]){_0x4cace2['where']=_['merge'](_0x4cace2['where'],{'$or':_[_0x911b('0x2c')](_0x3a7614,function(_0x2ba3ad){if(_0x2ba3ad[_0x911b('0x2f')]!=='VIRTUAL'){var _0x484214={};_0x484214[_0x2ba3ad[_0x911b('0x31')]]={'$like':'%'+_0x1118a9[_0x911b('0x3b')][_0x911b('0x2b')]+'%'};return _0x484214;}})});}_0x4cace2=_['merge']({},_0x4cace2,_0x1118a9['options']);var _0x4a9025={'where':_0x4cace2[_0x911b('0x47')]};return db[_0x911b('0x37')]['count'](_0x4a9025)[_0x911b('0x28')](function(_0x1dd2ee){_0x56cbc3[_0x911b('0x22')]=_0x1dd2ee;if(_0x1118a9[_0x911b('0x3b')][_0x911b('0x48')]){_0x4cace2[_0x911b('0x49')]=[{'all':!![]}];}return db['VoiceQueue'][_0x911b('0x4a')](_0x4cace2);})[_0x911b('0x28')](function(_0x28cf59){_0x56cbc3[_0x911b('0x4b')]=_0x28cf59;return _0x56cbc3;})[_0x911b('0x28')](respondWithFilteredResult(_0x10ff95,_0x4cace2))[_0x911b('0x4c')](handleError(_0x10ff95,null));};exports[_0x911b('0x4d')]=function(_0x46c40c,_0x55ee94){var _0x339b0c={'raw':![],'where':{'id':_0x46c40c[_0x911b('0x4e')]['id']}},_0x19540c={};_0x19540c[_0x911b('0x3a')]=_[_0x911b('0x3c')](db[_0x911b('0x37')]['rawAttributes']);_0x19540c[_0x911b('0x3b')]=_['keys'](_0x46c40c['query']);_0x19540c[_0x911b('0x3d')]=_[_0x911b('0x3f')](_0x19540c['model'],_0x19540c[_0x911b('0x3b')]);_0x339b0c[_0x911b('0x3e')]=_[_0x911b('0x3f')](_0x19540c['model'],qs[_0x911b('0x40')](_0x46c40c[_0x911b('0x3b')][_0x911b('0x40')]));_0x339b0c['attributes']=_0x339b0c[_0x911b('0x3e')]['length']?_0x339b0c[_0x911b('0x3e')]:_0x19540c[_0x911b('0x3a')];if(_0x46c40c[_0x911b('0x3b')][_0x911b('0x48')]){_0x339b0c[_0x911b('0x49')]=[{'all':!![]}];}_0x339b0c=_[_0x911b('0x4f')]({},_0x339b0c,_0x46c40c['options']);return db[_0x911b('0x37')][_0x911b('0x30')](_0x339b0c)[_0x911b('0x28')](handleEntityNotFound(_0x55ee94,null))[_0x911b('0x28')](respondWithResult(_0x55ee94,null))[_0x911b('0x4c')](handleError(_0x55ee94,null));};exports['create']=function(_0x214a35,_0x4dbccd){return db['VoiceQueue'][_0x911b('0x50')](_0x214a35[_0x911b('0x51')],{})[_0x911b('0x28')](function(_0x71a8ce){var _0x53fac4=_0x214a35[_0x911b('0x52')]['get']({'plain':!![]});if(!_0x53fac4)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x53fac4[_0x911b('0x53')]===_0x911b('0x52')){var _0x41b089=_0x71a8ce[_0x911b('0x54')]({'plain':!![]});var _0x378bb6=[{'name':_0x911b('0x55'),'value':'inbound'},{'name':_0x911b('0x29'),'value':_0x911b('0x2a')}];var _0x40cd31=_[_0x911b('0x30')](_0x378bb6,[_0x911b('0x2d'),_0x41b089[_0x911b('0x2f')]])[_0x911b('0x31')];return db[_0x911b('0x56')]['find']({'where':{'name':_0x40cd31,'userProfileId':_0x53fac4[_0x911b('0x57')]},'raw':!![]})['then'](function(_0x7ab307){if(_0x7ab307&&_0x7ab307['autoAssociation']===0x0){return db[_0x911b('0x32')][_0x911b('0x50')]({'name':_0x41b089[_0x911b('0x31')],'resourceId':_0x41b089['id'],'type':_0x7ab307['name'],'sectionId':_0x7ab307['id']},{})[_0x911b('0x28')](function(){return _0x71a8ce;});}else{return _0x71a8ce;}})[_0x911b('0x4c')](function(_0x5598ba){logger['error'](_0x911b('0x58'),_0x5598ba);throw _0x5598ba;});}return _0x71a8ce;})[_0x911b('0x28')](respondWithResult(_0x4dbccd,0xc9))[_0x911b('0x4c')](handleError(_0x4dbccd,null));};exports[_0x911b('0x59')]=function(_0x11b355,_0x3e8738){var _0x58f2c9={'where':{'id':_0x11b355[_0x911b('0x4e')]['id']}},_0x54c67c={};_0x54c67c['model']=_['keys'](db['VoiceQueue'][_0x911b('0x38')]);_0x58f2c9[_0x911b('0x3e')]=_[_0x911b('0x3f')](_0x54c67c[_0x911b('0x3a')],qs['fields'](_0x11b355[_0x911b('0x3b')][_0x911b('0x40')]));_0x58f2c9['attributes']=_0x58f2c9[_0x911b('0x3e')][_0x911b('0x41')]?_0x58f2c9[_0x911b('0x3e')]:_0x54c67c[_0x911b('0x3a')];if(_0x11b355[_0x911b('0x3b')]['includeAll']){_0x58f2c9[_0x911b('0x49')]=[{'all':!![]}];}_0x58f2c9=_[_0x911b('0x4f')]({},_0x58f2c9,_0x11b355['options']);return db[_0x911b('0x37')][_0x911b('0x30')](_0x58f2c9)[_0x911b('0x28')](handleEntityNotFound(_0x3e8738,null))['then'](function(_0x2be5b3){if(_0x2be5b3){var _0x1b4f7d=_0x2be5b3[_0x911b('0x54')]({'plain':!![]});_0x1b4f7d=qs['omit'](_0x1b4f7d,['id',_0x911b('0x5a'),_0x911b('0x5b')]);_0x11b355[_0x911b('0x51')]=_['omit'](_0x11b355['body'],['id','createdAt',_0x911b('0x5b')]);return db[_0x911b('0x37')][_0x911b('0x50')](_[_0x911b('0x4f')](_0x1b4f7d,_0x11b355[_0x911b('0x51')]),{'include':_0x11b355[_0x911b('0x3b')][_0x911b('0x48')]?[{'all':!![]}]:undefined})[_0x911b('0x28')](function(_0x460c29){var _0x311441=_0x11b355[_0x911b('0x52')]['get']({'plain':!![]});if(!_0x311441)throw new Error(_0x911b('0x5c'));if(_0x311441[_0x911b('0x53')]===_0x911b('0x52')){var _0xd4b498=_0x460c29[_0x911b('0x54')]({'plain':!![]});var _0x592e47=[{'name':_0x911b('0x55'),'value':_0x911b('0x5d')},{'name':_0x911b('0x29'),'value':_0x911b('0x2a')}];var _0x49cef9=_[_0x911b('0x30')](_0x592e47,[_0x911b('0x2d'),_0xd4b498[_0x911b('0x2f')]])[_0x911b('0x31')];return db[_0x911b('0x56')][_0x911b('0x30')]({'where':{'name':_0x49cef9,'userProfileId':_0x311441[_0x911b('0x57')]},'raw':!![]})[_0x911b('0x28')](function(_0x41f86a){if(_0x41f86a&&_0x41f86a['autoAssociation']===0x0){return db[_0x911b('0x32')][_0x911b('0x50')]({'name':_0xd4b498['name'],'resourceId':_0xd4b498['id'],'type':_0x41f86a[_0x911b('0x31')],'sectionId':_0x41f86a['id']},{})[_0x911b('0x28')](function(){return _0x460c29;});}else{return _0x460c29;}})['catch'](function(_0x4943c1){logger[_0x911b('0x33')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4943c1);throw _0x4943c1;});}return _0x460c29;});}})[_0x911b('0x28')](respondWithResult(_0x3e8738,0xc9))['catch'](handleError(_0x3e8738,null));};exports['update']=function(_0x20e8b8,_0x1bdc98){if(_0x20e8b8[_0x911b('0x51')]['id']){delete _0x20e8b8[_0x911b('0x51')]['id'];}return db['VoiceQueue'][_0x911b('0x30')]({'where':{'id':_0x20e8b8['params']['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x1bdc98,null))['then'](saveUpdates(_0x20e8b8[_0x911b('0x51')],null))['then'](respondWithResult(_0x1bdc98,null))['catch'](handleError(_0x1bdc98,null));};exports[_0x911b('0x5e')]=function(_0x45d39f,_0x3f6957){return db['VoiceQueue'][_0x911b('0x30')]({'where':{'id':_0x45d39f[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x3f6957,null))['then'](removeEntity(_0x3f6957,null))['catch'](handleError(_0x3f6957,null));};exports[_0x911b('0x5f')]=function(_0x5e1edd,_0x564d85,_0xe9d53){var _0x1cda0d={'raw':![],'where':{}};var _0x3013a5={};var _0x4dbfa2={'count':0x0,'rows':[]};return db[_0x911b('0x37')]['findOne']({'where':{'id':_0x5e1edd[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x564d85,null))[_0x911b('0x28')](function(_0x5ba8a1){if(_0x5ba8a1){_0x3013a5[_0x911b('0x3a')]=_['keys'](db[_0x911b('0x60')][_0x911b('0x38')]);_0x3013a5[_0x911b('0x3b')]=_[_0x911b('0x3c')](_0x5e1edd[_0x911b('0x3b')]);_0x3013a5[_0x911b('0x3d')]=_[_0x911b('0x3f')](_0x3013a5['model'],_0x3013a5[_0x911b('0x3b')]);_0x1cda0d[_0x911b('0x3e')]=_['intersection'](_0x3013a5[_0x911b('0x3a')],qs['fields'](_0x5e1edd['query']['fields']));_0x1cda0d[_0x911b('0x3e')]=_0x1cda0d[_0x911b('0x3e')][_0x911b('0x41')]?_0x1cda0d[_0x911b('0x3e')]:_0x3013a5[_0x911b('0x3a')];if(!_0x5e1edd[_0x911b('0x3b')][_0x911b('0x42')]('nolimit')){_0x1cda0d[_0x911b('0x44')]=qs[_0x911b('0x44')](_0x5e1edd[_0x911b('0x3b')]['limit']);_0x1cda0d[_0x911b('0x23')]=qs[_0x911b('0x23')](_0x5e1edd['query']['offset']);}_0x1cda0d[_0x911b('0x45')]=qs['sort'](_0x5e1edd[_0x911b('0x3b')][_0x911b('0x46')]);_0x1cda0d['where']=qs[_0x911b('0x3d')](_[_0x911b('0x61')](_0x5e1edd[_0x911b('0x3b')],_0x3013a5['filters']));_0x1cda0d['where'][_0x911b('0x62')]=_0x5ba8a1['id'];if(_0x5e1edd[_0x911b('0x3b')][_0x911b('0x2b')]){_0x1cda0d['where']=_[_0x911b('0x4f')](_0x1cda0d[_0x911b('0x47')],{'$or':_[_0x911b('0x2c')](_0x1cda0d[_0x911b('0x3e')],function(_0x2b2546){var _0x4f24b6={};_0x4f24b6[_0x2b2546]={'$like':'%'+_0x5e1edd[_0x911b('0x3b')][_0x911b('0x2b')]+'%'};return _0x4f24b6;})});}_0x1cda0d=_[_0x911b('0x4f')]({},_0x1cda0d,_0x5e1edd[_0x911b('0x63')]);return db[_0x911b('0x60')]['count']({'where':_0x1cda0d[_0x911b('0x47')]})[_0x911b('0x28')](function(_0x2046db){_0x4dbfa2[_0x911b('0x22')]=_0x2046db;if(_0x5e1edd[_0x911b('0x3b')][_0x911b('0x48')]){_0x1cda0d[_0x911b('0x49')]=[{'all':!![]}];}return db['CmHopper'][_0x911b('0x4a')](_0x1cda0d);})[_0x911b('0x28')](function(_0x2620c2){_0x4dbfa2[_0x911b('0x4b')]=_0x2620c2;return _0x4dbfa2;});}})[_0x911b('0x28')](respondWithFilteredResult(_0x564d85,_0x1cda0d))[_0x911b('0x4c')](handleError(_0x564d85,null));};exports[_0x911b('0x64')]=function(_0x110329,_0x16c8fd,_0x125f38){var _0x60202c={'raw':!![],'where':{}};var _0x57fa54={};var _0x4ad842={'count':0x0,'rows':[]};return db[_0x911b('0x37')][_0x911b('0x65')]({'where':{'id':_0x110329[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x16c8fd,null))[_0x911b('0x28')](function(_0x364549){if(_0x364549){_0x57fa54[_0x911b('0x3a')]=_[_0x911b('0x3c')](db[_0x911b('0x66')][_0x911b('0x38')]);_0x57fa54[_0x911b('0x3b')]=_['keys'](_0x110329[_0x911b('0x3b')]);_0x57fa54['filters']=_[_0x911b('0x3f')](_0x57fa54['model'],_0x57fa54[_0x911b('0x3b')]);_0x60202c['attributes']=_[_0x911b('0x3f')](_0x57fa54[_0x911b('0x3a')],qs[_0x911b('0x40')](_0x110329['query'][_0x911b('0x40')]));_0x60202c['attributes']=_0x60202c[_0x911b('0x3e')][_0x911b('0x41')]?_0x60202c[_0x911b('0x3e')]:_0x57fa54['model'];if(!_0x110329[_0x911b('0x3b')][_0x911b('0x42')](_0x911b('0x43'))){_0x60202c[_0x911b('0x44')]=qs[_0x911b('0x44')](_0x110329[_0x911b('0x3b')]['limit']);_0x60202c[_0x911b('0x23')]=qs[_0x911b('0x23')](_0x110329[_0x911b('0x3b')][_0x911b('0x23')]);}_0x60202c['order']=qs['sort'](_0x110329[_0x911b('0x3b')][_0x911b('0x46')]);_0x60202c['where']=qs[_0x911b('0x3d')](_['pick'](_0x110329[_0x911b('0x3b')],_0x57fa54['filters']));_0x60202c[_0x911b('0x47')][_0x911b('0x62')]=_0x364549['id'];if(_0x110329[_0x911b('0x3b')][_0x911b('0x2b')]){_0x60202c[_0x911b('0x47')]=_[_0x911b('0x4f')](_0x60202c[_0x911b('0x47')],{'$or':_[_0x911b('0x2c')](_0x60202c['attributes'],function(_0x317bd6){var _0x21a781={};_0x21a781[_0x317bd6]={'$like':'%'+_0x110329[_0x911b('0x3b')][_0x911b('0x2b')]+'%'};return _0x21a781;})});}_0x60202c=_['merge']({},_0x60202c,_0x110329[_0x911b('0x63')]);return db[_0x911b('0x66')][_0x911b('0x22')]({'where':_0x60202c[_0x911b('0x47')]})[_0x911b('0x28')](function(_0x14f073){_0x4ad842[_0x911b('0x22')]=_0x14f073;if(_0x110329[_0x911b('0x3b')]['includeAll']){_0x60202c['include']=[{'all':!![]}];}return db[_0x911b('0x66')][_0x911b('0x4a')](_0x60202c);})[_0x911b('0x28')](function(_0x3ff7d3){_0x4ad842['rows']=_0x3ff7d3;return _0x4ad842;});}})['then'](respondWithFilteredResult(_0x16c8fd,_0x60202c))[_0x911b('0x4c')](handleError(_0x16c8fd,null));};exports[_0x911b('0x67')]=function(_0x54c648,_0x3f180d,_0x2ecbaa){var _0x1faa02={'raw':!![],'where':{}};var _0x351adf={};var _0x41bd0a={'count':0x0,'rows':[]};return db[_0x911b('0x37')]['findOne']({'where':{'id':_0x54c648[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x3f180d,null))[_0x911b('0x28')](function(_0xf4955a){if(_0xf4955a){_0x351adf['model']=_[_0x911b('0x3c')](db[_0x911b('0x68')][_0x911b('0x38')]);_0x351adf[_0x911b('0x3b')]=_['keys'](_0x54c648[_0x911b('0x3b')]);_0x351adf[_0x911b('0x3d')]=_['intersection'](_0x351adf[_0x911b('0x3a')],_0x351adf[_0x911b('0x3b')]);_0x1faa02['attributes']=_[_0x911b('0x3f')](_0x351adf['model'],qs[_0x911b('0x40')](_0x54c648[_0x911b('0x3b')][_0x911b('0x40')]));_0x1faa02[_0x911b('0x3e')]=_0x1faa02['attributes']['length']?_0x1faa02['attributes']:_0x351adf[_0x911b('0x3a')];if(!_0x54c648[_0x911b('0x3b')]['hasOwnProperty'](_0x911b('0x43'))){_0x1faa02['limit']=qs[_0x911b('0x44')](_0x54c648[_0x911b('0x3b')][_0x911b('0x44')]);_0x1faa02[_0x911b('0x23')]=qs[_0x911b('0x23')](_0x54c648[_0x911b('0x3b')][_0x911b('0x23')]);}_0x1faa02['order']=qs['sort'](_0x54c648[_0x911b('0x3b')][_0x911b('0x46')]);_0x1faa02['where']=qs[_0x911b('0x3d')](_[_0x911b('0x61')](_0x54c648[_0x911b('0x3b')],_0x351adf['filters']));_0x1faa02[_0x911b('0x47')][_0x911b('0x62')]=_0xf4955a['id'];if(_0x54c648[_0x911b('0x3b')][_0x911b('0x2b')]){_0x1faa02[_0x911b('0x47')]=_['merge'](_0x1faa02['where'],{'$or':_['map'](_0x1faa02[_0x911b('0x3e')],function(_0x7a9e21){var _0x5ce6d9={};_0x5ce6d9[_0x7a9e21]={'$like':'%'+_0x54c648[_0x911b('0x3b')][_0x911b('0x2b')]+'%'};return _0x5ce6d9;})});}_0x1faa02=_[_0x911b('0x4f')]({},_0x1faa02,_0x54c648[_0x911b('0x63')]);return db[_0x911b('0x68')][_0x911b('0x22')]({'where':_0x1faa02['where']})['then'](function(_0x1cc9e8){_0x41bd0a['count']=_0x1cc9e8;if(_0x54c648[_0x911b('0x3b')][_0x911b('0x48')]){_0x1faa02[_0x911b('0x49')]=[{'all':!![]}];}return db[_0x911b('0x68')]['findAll'](_0x1faa02);})['then'](function(_0x517154){_0x41bd0a['rows']=_0x517154;return _0x41bd0a;});}})[_0x911b('0x28')](respondWithFilteredResult(_0x3f180d,_0x1faa02))[_0x911b('0x4c')](handleError(_0x3f180d,null));};exports[_0x911b('0x69')]=function(_0x4df9c3,_0x55b556,_0x5f0ac2){var _0xe86410={'raw':!![],'where':{}};var _0x1500f5={};var _0x1afa1e={'count':0x0,'rows':[]};return db[_0x911b('0x37')][_0x911b('0x65')]({'where':{'id':_0x4df9c3[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x55b556,null))[_0x911b('0x28')](function(_0x267e1e){if(_0x267e1e){_0x1500f5[_0x911b('0x3a')]=_['keys'](db[_0x911b('0x6a')]['rawAttributes']);_0x1500f5['query']=_[_0x911b('0x3c')](_0x4df9c3[_0x911b('0x3b')]);_0x1500f5[_0x911b('0x3d')]=_[_0x911b('0x3f')](_0x1500f5['model'],_0x1500f5['query']);_0xe86410['attributes']=_[_0x911b('0x3f')](_0x1500f5['model'],qs[_0x911b('0x40')](_0x4df9c3[_0x911b('0x3b')][_0x911b('0x40')]));_0xe86410[_0x911b('0x3e')]=_0xe86410[_0x911b('0x3e')][_0x911b('0x41')]?_0xe86410[_0x911b('0x3e')]:_0x1500f5[_0x911b('0x3a')];if(!_0x4df9c3[_0x911b('0x3b')][_0x911b('0x42')](_0x911b('0x43'))){_0xe86410['limit']=qs[_0x911b('0x44')](_0x4df9c3[_0x911b('0x3b')][_0x911b('0x44')]);_0xe86410[_0x911b('0x23')]=qs[_0x911b('0x23')](_0x4df9c3[_0x911b('0x3b')][_0x911b('0x23')]);}_0xe86410['order']=qs[_0x911b('0x46')](_0x4df9c3[_0x911b('0x3b')][_0x911b('0x46')]);_0xe86410['where']=qs[_0x911b('0x3d')](_[_0x911b('0x61')](_0x4df9c3['query'],_0x1500f5[_0x911b('0x3d')]));_0xe86410['where'][_0x911b('0x62')]=_0x267e1e['id'];if(_0x4df9c3['query'][_0x911b('0x2b')]){_0xe86410[_0x911b('0x47')]=_[_0x911b('0x4f')](_0xe86410[_0x911b('0x47')],{'$or':_[_0x911b('0x2c')](_0xe86410[_0x911b('0x3e')],function(_0x4d49d8){var _0x258afb={};_0x258afb[_0x4d49d8]={'$like':'%'+_0x4df9c3[_0x911b('0x3b')][_0x911b('0x2b')]+'%'};return _0x258afb;})});}_0xe86410=_[_0x911b('0x4f')]({},_0xe86410,_0x4df9c3['options']);return db[_0x911b('0x6a')][_0x911b('0x22')]({'where':_0xe86410[_0x911b('0x47')]})[_0x911b('0x28')](function(_0x3a6754){_0x1afa1e[_0x911b('0x22')]=_0x3a6754;if(_0x4df9c3['query'][_0x911b('0x48')]){_0xe86410['include']=[{'all':!![]}];}return db[_0x911b('0x6a')][_0x911b('0x4a')](_0xe86410);})[_0x911b('0x28')](function(_0x37bff5){_0x1afa1e['rows']=_0x37bff5;return _0x1afa1e;});}})[_0x911b('0x28')](respondWithFilteredResult(_0x55b556,_0xe86410))[_0x911b('0x4c')](handleError(_0x55b556,null));};exports[_0x911b('0x6b')]=function(_0x189749,_0x495c1e,_0x3ef1b1){var _0x103153={};var _0x3285f9={};var _0x2157db;var _0x31a77e;return db[_0x911b('0x37')]['findOne']({'where':{'id':_0x189749[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x495c1e,null))[_0x911b('0x28')](function(_0xa92713){if(_0xa92713){_0x2157db=_0xa92713;_0x3285f9[_0x911b('0x3a')]=_[_0x911b('0x3c')](db[_0x911b('0x6c')][_0x911b('0x38')]);_0x3285f9[_0x911b('0x3b')]=_[_0x911b('0x3c')](_0x189749[_0x911b('0x3b')]);_0x3285f9['filters']=_['intersection'](_0x3285f9['model'],_0x3285f9[_0x911b('0x3b')]);_0x103153[_0x911b('0x3e')]=_[_0x911b('0x3f')](_0x3285f9['model'],qs['fields'](_0x189749['query'][_0x911b('0x40')]));_0x103153[_0x911b('0x3e')]=_0x103153[_0x911b('0x3e')][_0x911b('0x41')]?_0x103153[_0x911b('0x3e')]:_0x3285f9['model'];_0x103153['order']=qs[_0x911b('0x46')](_0x189749[_0x911b('0x3b')]['sort']);_0x103153[_0x911b('0x47')]=qs['filters'](_[_0x911b('0x61')](_0x189749[_0x911b('0x3b')],_0x3285f9['filters']));if(_0x189749[_0x911b('0x3b')]['filter']){_0x103153['where']=_[_0x911b('0x4f')](_0x103153[_0x911b('0x47')],{'$or':_[_0x911b('0x2c')](_0x103153[_0x911b('0x3e')],function(_0x46e850){var _0x460bc2={};_0x460bc2[_0x46e850]={'$like':'%'+_0x189749[_0x911b('0x3b')][_0x911b('0x2b')]+'%'};return _0x460bc2;})});}_0x103153=_[_0x911b('0x4f')]({},_0x103153,_0x189749[_0x911b('0x63')]);return _0x2157db['getTeams'](_0x103153);}})[_0x911b('0x28')](function(_0x3429b9){if(_0x3429b9){_0x31a77e=_0x3429b9[_0x911b('0x41')];if(!_0x189749[_0x911b('0x3b')][_0x911b('0x42')](_0x911b('0x43'))){_0x103153['limit']=qs[_0x911b('0x44')](_0x189749['query'][_0x911b('0x44')]);_0x103153[_0x911b('0x23')]=qs['offset'](_0x189749[_0x911b('0x3b')]['offset']);}return _0x2157db['getTeams'](_0x103153);}})['then'](function(_0x47e72a){if(_0x47e72a){return _0x47e72a?{'count':_0x31a77e,'rows':_0x47e72a}:null;}})[_0x911b('0x28')](respondWithResult(_0x495c1e,null))[_0x911b('0x4c')](handleError(_0x495c1e,null));};exports[_0x911b('0x6d')]=function(_0xe4f568,_0x5173bd,_0x2f2421){var _0x16da5c=_0xe4f568[_0x911b('0x51')][_0x911b('0x6e')];var _0x2acd5c=_['map'](_0x16da5c,'id');return db[_0x911b('0x6c')][_0x911b('0x4a')]({'where':{'id':_0x2acd5c},'attributes':['id'],'include':[{'model':db[_0x911b('0x6f')],'as':'Agents','attributes':['id',_0x911b('0x31'),'online','voicePause',_0x911b('0x70')],'raw':!![]}]})[_0x911b('0x28')](function(_0x7db45d){if(_0x7db45d){var _0x8215c8=_['flatMap'](_0x7db45d,function(_0x2b240e){var _0x3cabbf=_0x2b240e['get']({'plain':!![]});_0x3cabbf['Agents'][_0x911b('0x71')](function(_0x56525e){_0x56525e['penalty']=_[_0x911b('0x30')](_0x16da5c,{'id':_0x3cabbf['id']})['penalty'];});return _0x3cabbf['Agents'];});return db[_0x911b('0x37')][_0x911b('0x30')]({'where':{'id':_0xe4f568[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](function(_0x46de67){return db[_0x911b('0x72')][_0x911b('0x73')](function(_0x1d7872){return _0x46de67[_0x911b('0x6d')](_0x2acd5c,{'transaction':_0x1d7872})['then'](function(){return BPromise['each'](_0x16da5c,function(_0x155dc7){return db['TeamVoiceQueue'][_0x911b('0x74')]({'TeamId':_0x155dc7['id'],'VoiceQueueId':_0xe4f568[_0x911b('0x4e')]['id'],'penalty':_0x155dc7['penalty']},{'transaction':_0x1d7872});});})['then'](function(){return BPromise[_0x911b('0x75')](_0x8215c8,function(_0x493bdd){return db[_0x911b('0x76')][_0x911b('0x77')]({'where':{'UserId':_0x493bdd['id'],'VoiceQueueId':_0xe4f568['params']['id']},'defaults':{'penalty':_0x493bdd[_0x911b('0x78')]},'transaction':_0x1d7872});});})[_0x911b('0x28')](function(){return BPromise[_0x911b('0x75')](_['filter'](_0x8215c8,{'online':!![]}),function(_0x43bce2){return db[_0x911b('0x79')]['upsert']({'membername':_0x43bce2[_0x911b('0x31')],'UserId':_0x43bce2['id'],'queue_name':_0x46de67[_0x911b('0x31')],'VoiceQueueId':_0x46de67['id'],'interface':_[_0x911b('0x7a')](_0x43bce2['interface'])?util[_0x911b('0x7b')](_0x911b('0x7c'),_0x43bce2[_0x911b('0x31')]):_0x43bce2['interface'],'paused':_0x43bce2['voicePause']||![],'penalty':_0x43bce2[_0x911b('0x78')]},{'transaction':_0x1d7872});});})[_0x911b('0x28')](function(){_0x8215c8['forEach'](function(_0xd158f7){socket[_0x911b('0x7d')](_0x911b('0x7e'),{'UserId':_0xd158f7['id'],'VoiceQueueId':_0x46de67['id']});});});});});}})[_0x911b('0x28')](respondWithStatusCode(_0x5173bd,null))[_0x911b('0x4c')](handleError(_0x5173bd,null));};exports[_0x911b('0x7f')]=function(_0x362de9,_0x59eb17,_0x163a8c){return db[_0x911b('0x6c')][_0x911b('0x4a')]({'where':{'id':_0x362de9['query'][_0x911b('0x80')]},'attributes':['id'],'include':[{'model':db[_0x911b('0x6f')],'as':_0x911b('0x81'),'attributes':['id'],'raw':!![]}]})[_0x911b('0x28')](handleEntityNotFound(_0x59eb17,null))[_0x911b('0x28')](function(_0x2ecf6a){var _0x4815fa=_[_0x911b('0x2c')](_0x2ecf6a,'id');var _0x2fa979=[];var _0x305d21=[];var _0x2fe1f3=squel[_0x911b('0x82')]();_0x2fe1f3['field']('tq.TeamId')[_0x911b('0x83')](_0x911b('0x84'),'tq')[_0x911b('0x85')](_0x911b('0x86'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x911b('0x47')](_0x911b('0x87'),_0x362de9[_0x911b('0x4e')]['id']);for(var _0x111759=0x0;_0x111759<_0x2ecf6a['length'];_0x111759+=0x1){let _0x237907=_0x2ecf6a[_0x111759];for(var _0x5a9204=0x0;_0x5a9204<_0x237907[_0x911b('0x81')]['length'];_0x5a9204+=0x1){let _0x3122b1=_0x237907[_0x911b('0x81')][_0x5a9204];var _0x34852a=_0x2fe1f3[_0x911b('0x59')]();_0x34852a[_0x911b('0x47')](_0x911b('0x88'),_0x3122b1['id']);_0x305d21[_0x911b('0x89')](db['sequelize'][_0x911b('0x3b')](_0x34852a['toString'](),{'type':db[_0x911b('0x72')][_0x911b('0x8a')][_0x911b('0x8b')]})[_0x911b('0x28')](function(_0x2a15a4){if(_0x2a15a4['length']===0x1){return _0x3122b1['id'];}else{var _0x4a8630=_[_0x911b('0x8c')](_[_0x911b('0x2c')](_0x2a15a4,'TeamId'),function(_0x379e07){return _[_0x911b('0x2e')](_0x4815fa,_0x379e07);});if(_0x4a8630){return _0x3122b1['id'];}}}));}}return BPromise['all'](_0x305d21)[_0x911b('0x28')](function(_0x150988){_0x2fa979=_(_0x2fa979)[_0x911b('0x8d')](_0x150988)[_0x911b('0x8e')]()[_0x911b('0x2d')]();return db[_0x911b('0x37')][_0x911b('0x30')]({'where':{'id':_0x362de9[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](function(_0x46c620){return db[_0x911b('0x72')]['transaction'](function(_0x1f8dad){return _0x46c620['removeTeams'](_0x362de9[_0x911b('0x3b')][_0x911b('0x80')],{'transaction':_0x1f8dad})[_0x911b('0x28')](function(){if(!_[_0x911b('0x8f')](_0x2fa979)){return _0x46c620['removeAgents'](_0x2fa979,{'transaction':_0x1f8dad})['then'](function(){return db[_0x911b('0x79')]['destroy']({'where':{'VoiceQueueId':_0x362de9[_0x911b('0x4e')]['id'],'UserId':_0x2fa979},'transaction':_0x1f8dad});});}})[_0x911b('0x28')](function(){_0x2fa979[_0x911b('0x71')](function(_0x4f44f1){socket[_0x911b('0x7d')](_0x911b('0x90'),{'UserId':_0x4f44f1,'VoiceQueueId':_0x46c620['id']});});});});});});})[_0x911b('0x28')](respondWithStatusCode(_0x59eb17,null))[_0x911b('0x4c')](handleError(_0x59eb17,null));};exports['addAgents']=function(_0x331780,_0xda8564,_0x3dca68){var _0x2839d6,_0x5ad4c3;return db[_0x911b('0x37')][_0x911b('0x30')]({'where':{'id':_0x331780['params']['id']}})[_0x911b('0x28')](handleEntityNotFound(_0xda8564,null))[_0x911b('0x28')](function(_0x504911){if(_0x504911){_0x5ad4c3=_0x504911;return _0x504911[_0x911b('0x91')](_0x331780['body']['ids'],_['omit'](_0x331780[_0x911b('0x51')],[_0x911b('0x80'),'id'])||{})[_0x911b('0x92')](function(_0x3b4a7b){for(var _0x4c80fb=0x0;_0x4c80fb<_0x331780['body'][_0x911b('0x80')][_0x911b('0x41')];_0x4c80fb+=0x1){socket[_0x911b('0x7d')](_0x911b('0x7e'),{'UserId':Number(_0x331780[_0x911b('0x51')]['ids'][_0x4c80fb]),'VoiceQueueId':Number(_0x331780[_0x911b('0x4e')]['id'])});}return _0x3b4a7b;});}})[_0x911b('0x28')](function(_0x42a077){_0x2839d6=_0x42a077||[];if(_0x5ad4c3){return db[_0x911b('0x6f')][_0x911b('0x4a')]({'where':{'id':_0x331780['body'][_0x911b('0x80')]},'attributes':['id',_0x911b('0x31'),_0x911b('0x93'),_0x911b('0x94'),_0x911b('0x70')],'raw':!![]});}})[_0x911b('0x28')](function(_0x41a29c){if(!_['isEmpty'](_0x41a29c)){var _0x4eb7d5=[];for(var _0xadecf8=0x0;_0xadecf8<_0x41a29c['length'];_0xadecf8++){if(_0x41a29c[_0xadecf8][_0x911b('0x93')]){_0x4eb7d5[_0x911b('0x89')](db[_0x911b('0x79')][_0x911b('0x74')]({'membername':_0x41a29c[_0xadecf8][_0x911b('0x31')],'UserId':_0x41a29c[_0xadecf8]['id'],'queue_name':_0x5ad4c3[_0x911b('0x31')],'VoiceQueueId':_0x5ad4c3['id'],'interface':_[_0x911b('0x7a')](_0x41a29c[_0xadecf8][_0x911b('0x70')])?util[_0x911b('0x7b')](_0x911b('0x7c'),_0x41a29c[_0xadecf8][_0x911b('0x31')]):_0x41a29c[_0xadecf8][_0x911b('0x70')],'paused':_0x41a29c[_0xadecf8]['voicePause']||![],'penalty':_0x331780[_0x911b('0x51')][_0x911b('0x78')]||0x0}));}}return BPromise[_0x911b('0x95')](_0x4eb7d5);}})[_0x911b('0x28')](function(){return _0x2839d6;})['then'](respondWithResult(_0xda8564,null))[_0x911b('0x4c')](handleError(_0xda8564,null));};exports[_0x911b('0x96')]=function(_0x5eff74,_0x307a6a,_0x537f3f){return db['VoiceQueue'][_0x911b('0x30')]({'where':{'id':_0x5eff74[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x307a6a,null))[_0x911b('0x28')](function(_0x4df78d){if(_0x4df78d){return _0x4df78d[_0x911b('0x96')](_0x5eff74[_0x911b('0x3b')][_0x911b('0x80')])['then'](function(){if(_['isArray'](_0x5eff74[_0x911b('0x3b')][_0x911b('0x80')])){for(var _0xa273c1=0x0;_0xa273c1<_0x5eff74[_0x911b('0x3b')][_0x911b('0x80')]['length'];_0xa273c1+=0x1){socket[_0x911b('0x7d')](_0x911b('0x90'),{'UserId':Number(_0x5eff74[_0x911b('0x3b')][_0x911b('0x80')][_0xa273c1]),'VoiceQueueId':Number(_0x5eff74[_0x911b('0x4e')]['id'])});}}else{socket['emit']('userVoiceQueue:remove',{'UserId':Number(_0x5eff74[_0x911b('0x3b')][_0x911b('0x80')]),'VoiceQueueId':Number(_0x5eff74[_0x911b('0x4e')]['id'])});}});}})[_0x911b('0x28')](function(_0x3387e7){return db[_0x911b('0x79')][_0x911b('0x5e')]({'where':{'VoiceQueueId':_0x5eff74[_0x911b('0x4e')]['id'],'UserId':_0x5eff74[_0x911b('0x3b')][_0x911b('0x80')]}})['then'](function(){return _0x3387e7;});})[_0x911b('0x28')](respondWithStatusCode(_0x307a6a,null))[_0x911b('0x4c')](handleError(_0x307a6a,null));};exports[_0x911b('0x97')]=function(_0x3d8ecc,_0x55d276,_0xc3425c){var _0x248580={};var _0x6252fc={};var _0x536634;var _0x411688;return db[_0x911b('0x37')]['findOne']({'where':{'id':_0x3d8ecc['params']['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x55d276,null))[_0x911b('0x28')](function(_0x571c63){if(_0x571c63){_0x536634=_0x571c63;_0x6252fc[_0x911b('0x3a')]=_[_0x911b('0x3c')](db[_0x911b('0x6f')]['rawAttributes']);_0x6252fc[_0x911b('0x3b')]=_[_0x911b('0x3c')](_0x3d8ecc[_0x911b('0x3b')]);_0x6252fc[_0x911b('0x3d')]=_[_0x911b('0x3f')](_0x6252fc[_0x911b('0x3a')],_0x6252fc[_0x911b('0x3b')]);_0x248580['attributes']=_[_0x911b('0x3f')](_0x6252fc[_0x911b('0x3a')],qs[_0x911b('0x40')](_0x3d8ecc[_0x911b('0x3b')][_0x911b('0x40')]));_0x248580[_0x911b('0x3e')]=_0x248580[_0x911b('0x3e')][_0x911b('0x41')]?_0x248580[_0x911b('0x3e')]:_0x6252fc[_0x911b('0x3a')];_0x248580[_0x911b('0x45')]=qs[_0x911b('0x46')](_0x3d8ecc[_0x911b('0x3b')][_0x911b('0x46')]);_0x248580[_0x911b('0x47')]=qs[_0x911b('0x3d')](_[_0x911b('0x61')](_0x3d8ecc[_0x911b('0x3b')],_0x6252fc['filters']));if(_0x3d8ecc[_0x911b('0x3b')][_0x911b('0x2b')]){_0x248580[_0x911b('0x47')]=_[_0x911b('0x4f')](_0x248580['where'],{'$or':_[_0x911b('0x2c')](_0x248580[_0x911b('0x3e')],function(_0x10a76a){var _0x3b7c54={};_0x3b7c54[_0x10a76a]={'$like':'%'+_0x3d8ecc[_0x911b('0x3b')]['filter']+'%'};return _0x3b7c54;})});}_0x248580=_['merge']({},_0x248580,_0x3d8ecc[_0x911b('0x63')]);return _0x536634['getAgents'](_0x248580);}})[_0x911b('0x28')](function(_0x41c15c){if(_0x41c15c){_0x411688=_0x41c15c[_0x911b('0x41')];if(!_0x3d8ecc[_0x911b('0x3b')][_0x911b('0x42')](_0x911b('0x43'))){_0x248580[_0x911b('0x44')]=qs[_0x911b('0x44')](_0x3d8ecc[_0x911b('0x3b')]['limit']);_0x248580[_0x911b('0x23')]=qs[_0x911b('0x23')](_0x3d8ecc[_0x911b('0x3b')]['offset']);}return _0x536634['getAgents'](_0x248580);}})[_0x911b('0x28')](function(_0x185ed1){if(_0x185ed1){return _0x185ed1?{'count':_0x411688,'rows':_0x185ed1}:null;}})['then'](respondWithResult(_0x55d276,null))[_0x911b('0x4c')](handleError(_0x55d276,null));};exports[_0x911b('0x98')]=function(_0x49ff55,_0x1d10ea,_0x5f0ff7){var _0x4d35b2={};var _0x2d96f0={};var _0x1359eb;var _0x599ac1;return db[_0x911b('0x37')][_0x911b('0x65')]({'where':{'id':_0x49ff55[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x1d10ea,null))[_0x911b('0x28')](function(_0x54d8c4){if(_0x54d8c4){_0x1359eb=_0x54d8c4;_0x2d96f0['model']=_[_0x911b('0x3c')](db['UserVoiceQueueRt'][_0x911b('0x38')]);_0x2d96f0['query']=_[_0x911b('0x3c')](_0x49ff55[_0x911b('0x3b')]);_0x2d96f0[_0x911b('0x3d')]=_[_0x911b('0x3f')](_0x2d96f0[_0x911b('0x3a')],_0x2d96f0[_0x911b('0x3b')]);_0x4d35b2['attributes']=_[_0x911b('0x3f')](_0x2d96f0[_0x911b('0x3a')],qs[_0x911b('0x40')](_0x49ff55[_0x911b('0x3b')][_0x911b('0x40')]));_0x4d35b2[_0x911b('0x3e')]=_0x4d35b2['attributes']['length']?_0x4d35b2[_0x911b('0x3e')]:_0x2d96f0[_0x911b('0x3a')];_0x4d35b2['order']=qs[_0x911b('0x46')](_0x49ff55[_0x911b('0x3b')][_0x911b('0x46')]);_0x4d35b2['where']=qs[_0x911b('0x3d')](_[_0x911b('0x61')](_0x49ff55['query'],_0x2d96f0[_0x911b('0x3d')]));if(_0x49ff55['query'][_0x911b('0x2b')]){_0x4d35b2[_0x911b('0x47')]=_[_0x911b('0x4f')](_0x4d35b2['where'],{'$or':_[_0x911b('0x2c')](_0x4d35b2['attributes'],function(_0x35c52d){var _0x202672={};_0x202672[_0x35c52d]={'$like':'%'+_0x49ff55[_0x911b('0x3b')]['filter']+'%'};return _0x202672;})});}_0x4d35b2=_[_0x911b('0x4f')]({},_0x4d35b2,_0x49ff55[_0x911b('0x63')]);return _0x1359eb[_0x911b('0x98')](_0x4d35b2);}})[_0x911b('0x28')](function(_0x42b8b7){if(_0x42b8b7){_0x599ac1=_0x42b8b7[_0x911b('0x41')];if(!_0x49ff55[_0x911b('0x3b')][_0x911b('0x42')](_0x911b('0x43'))){_0x4d35b2['limit']=qs['limit'](_0x49ff55[_0x911b('0x3b')]['limit']);_0x4d35b2[_0x911b('0x23')]=qs[_0x911b('0x23')](_0x49ff55[_0x911b('0x3b')][_0x911b('0x23')]);}return _0x1359eb['getMembers'](_0x4d35b2);}})[_0x911b('0x28')](function(_0x17233a){return _0x17233a?{'count':_0x599ac1,'rows':_0x17233a}:null;})[_0x911b('0x28')](respondWithResult(_0x1d10ea,null))[_0x911b('0x4c')](handleError(_0x1d10ea,null));};exports[_0x911b('0x99')]=function(_0x1ef9bb,_0x48383e,_0x881a4b){var _0x415b32={};var _0x5c9ea8={};var _0x126bcb;var _0x53e7df;return db[_0x911b('0x37')][_0x911b('0x65')]({'where':{'id':_0x1ef9bb[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x48383e,null))[_0x911b('0x28')](function(_0x2839a6){if(_0x2839a6){_0x126bcb=_0x2839a6;_0x5c9ea8[_0x911b('0x3a')]=_[_0x911b('0x3c')](db['CmList'][_0x911b('0x38')]);_0x5c9ea8[_0x911b('0x3b')]=_[_0x911b('0x3c')](_0x1ef9bb['query']);_0x5c9ea8[_0x911b('0x3d')]=_[_0x911b('0x3f')](_0x5c9ea8['model'],_0x5c9ea8[_0x911b('0x3b')]);_0x415b32[_0x911b('0x3e')]=_[_0x911b('0x3f')](_0x5c9ea8['model'],qs[_0x911b('0x40')](_0x1ef9bb[_0x911b('0x3b')][_0x911b('0x40')]));_0x415b32[_0x911b('0x3e')]=_0x415b32[_0x911b('0x3e')][_0x911b('0x41')]?_0x415b32[_0x911b('0x3e')]:_0x5c9ea8[_0x911b('0x3a')];_0x415b32['order']=qs[_0x911b('0x46')](_0x1ef9bb['query'][_0x911b('0x46')]);_0x415b32[_0x911b('0x47')]=qs[_0x911b('0x3d')](_[_0x911b('0x61')](_0x1ef9bb[_0x911b('0x3b')],_0x5c9ea8['filters']));if(_0x1ef9bb[_0x911b('0x3b')][_0x911b('0x2b')]){_0x415b32[_0x911b('0x47')]=_[_0x911b('0x4f')](_0x415b32[_0x911b('0x47')],{'$or':_['map'](_0x415b32['attributes'],function(_0x5fa11){var _0x1d642b={};_0x1d642b[_0x5fa11]={'$like':'%'+_0x1ef9bb[_0x911b('0x3b')][_0x911b('0x2b')]+'%'};return _0x1d642b;})});}_0x415b32=_[_0x911b('0x4f')]({},_0x415b32,_0x1ef9bb[_0x911b('0x63')]);return _0x126bcb[_0x911b('0x99')](_0x415b32);}})['then'](function(_0x50a9ad){if(_0x50a9ad){_0x53e7df=_0x50a9ad['length'];if(!_0x1ef9bb[_0x911b('0x3b')][_0x911b('0x42')](_0x911b('0x43'))){_0x415b32['limit']=qs['limit'](_0x1ef9bb[_0x911b('0x3b')][_0x911b('0x44')]);_0x415b32['offset']=qs[_0x911b('0x23')](_0x1ef9bb[_0x911b('0x3b')][_0x911b('0x23')]);}return _0x126bcb[_0x911b('0x99')](_0x415b32);}})[_0x911b('0x28')](function(_0x40b882){if(_0x40b882){return _0x40b882?{'count':_0x53e7df,'rows':_0x40b882}:null;}})['then'](respondWithResult(_0x48383e,null))['catch'](handleError(_0x48383e,null));};exports[_0x911b('0x9a')]=function(_0x1b3351,_0x100e68,_0x5c580a){var _0x26c390,_0x70191d;return db[_0x911b('0x37')][_0x911b('0x30')]({'where':{'id':_0x1b3351[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x100e68,null))[_0x911b('0x28')](function(_0x2fe704){if(_0x2fe704){_0x70191d=_0x2fe704;return _0x2fe704['addLists'](_0x1b3351[_0x911b('0x51')][_0x911b('0x80')],_[_0x911b('0x9b')](_0x1b3351[_0x911b('0x51')],[_0x911b('0x80'),'id'])||{});}return null;})[_0x911b('0x92')](function(_0x18f985){var _0x53c62d;_0x26c390=_0x18f985||[];var _0x3a94cd=[];if(_0x18f985){for(var _0x17095e=0x0;_0x17095e<_0x18f985[_0x911b('0x41')];_0x17095e+=0x1){var _0x52a14f=_0x18f985[_0x17095e]['get']({'plain':!![]});_0x70191d['dialCheckDuplicateType']=_0x1b3351[_0x911b('0x51')][_0x911b('0x9c')]?_0x1b3351[_0x911b('0x51')][_0x911b('0x9c')]:_0x70191d['dialCheckDuplicateType'];switch(_0x70191d[_0x911b('0x9c')]){case _0x911b('0x9d'):_0x53c62d=squel['insert']()[_0x911b('0x9e')](_0x911b('0x9f'))[_0x911b('0xa0')](['phone','scheduledAt','ContactId','ListId',_0x911b('0x62'),_0x911b('0x5a'),_0x911b('0x5b')],squel[_0x911b('0x82')]()['field'](_0x911b('0xa1'),_0x911b('0xa1'))['field'](_0x911b('0xa2'),_0x911b('0xa3'))[_0x911b('0xa4')]('id',_0x911b('0xa5'))['field'](_0x52a14f[_0x911b('0xa6')][_0x911b('0xa7')](),_0x911b('0xa8'))[_0x911b('0xa4')](_0x1b3351[_0x911b('0x4e')]['id'][_0x911b('0xa7')](),_0x911b('0x62'))[_0x911b('0xa4')](_0x911b('0xa2'),_0x911b('0x5a'))[_0x911b('0xa4')](_0x911b('0xa2'),_0x911b('0x5b'))['from'](_0x911b('0xa9'))[_0x911b('0x47')]('deletedAt\x20IS\x20NULL')[_0x911b('0x47')](_0x911b('0xaa'),_0x52a14f['CmListId'][_0x911b('0xa7')]())[_0x911b('0x47')](_0x911b('0xab'))[_0x911b('0x47')]('phone\x20NOT\x20IN\x20(?)',squel[_0x911b('0x82')]()[_0x911b('0xa4')](_0x911b('0xac'))['from'](_0x911b('0xad'))[_0x911b('0x47')](_0x911b('0x87'),_0x1b3351[_0x911b('0x4e')]['id'][_0x911b('0xa7')]()))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x911b('0x82')]()['field']('COALESCE(phone,\x27\x27)')['from'](_0x911b('0x9f'))[_0x911b('0x47')](_0x911b('0x87'),_0x1b3351[_0x911b('0x4e')]['id'][_0x911b('0xa7')]())))['toString']();break;case _0x911b('0xae'):_0x53c62d=squel[_0x911b('0xaf')]()[_0x911b('0x9e')](_0x911b('0x9f'))[_0x911b('0xa0')]([_0x911b('0xa1'),_0x911b('0xa3'),_0x911b('0xa5'),'ListId',_0x911b('0x62'),'createdAt',_0x911b('0x5b')],squel[_0x911b('0x82')]()[_0x911b('0xa4')](_0x911b('0xa1'),_0x911b('0xa1'))[_0x911b('0xa4')](_0x911b('0xa2'),_0x911b('0xa3'))[_0x911b('0xa4')]('id',_0x911b('0xa5'))[_0x911b('0xa4')](_0x52a14f['CmListId'][_0x911b('0xa7')](),_0x911b('0xa8'))[_0x911b('0xa4')](_0x1b3351[_0x911b('0x4e')]['id']['toString'](),_0x911b('0x62'))[_0x911b('0xa4')](_0x911b('0xa2'),_0x911b('0x5a'))[_0x911b('0xa4')](_0x911b('0xa2'),_0x911b('0x5b'))['from']('cm_contacts')['where'](_0x911b('0xb0'))['where'](_0x911b('0xaa'),_0x52a14f[_0x911b('0xa6')]['toString']())[_0x911b('0x47')](_0x911b('0xab'))[_0x911b('0x47')](_0x911b('0xb1'),squel[_0x911b('0x82')]()[_0x911b('0xa4')](_0x911b('0xb2'))[_0x911b('0x83')]('cm_hopper')[_0x911b('0x47')]('VoiceQueueId\x20=\x20?',_0x1b3351[_0x911b('0x4e')]['id'][_0x911b('0xa7')]())))['toString']();break;default:_0x53c62d=squel[_0x911b('0xaf')]()[_0x911b('0x9e')](_0x911b('0x9f'))[_0x911b('0xa0')]([_0x911b('0xa1'),_0x911b('0xa3'),_0x911b('0xa5'),_0x911b('0xa8'),'VoiceQueueId',_0x911b('0x5a'),_0x911b('0x5b')],squel[_0x911b('0x82')]()[_0x911b('0xa4')]('phone',_0x911b('0xa1'))['field'](_0x911b('0xa2'),_0x911b('0xa3'))[_0x911b('0xa4')]('id',_0x911b('0xa5'))[_0x911b('0xa4')](_0x52a14f[_0x911b('0xa6')]['toString'](),'ListId')[_0x911b('0xa4')](_0x1b3351[_0x911b('0x4e')]['id']['toString'](),_0x911b('0x62'))[_0x911b('0xa4')](_0x911b('0xa2'),_0x911b('0x5a'))['field']('NOW()','updatedAt')['from'](_0x911b('0xa9'))[_0x911b('0x47')](_0x911b('0xb0'))['where']('ListId\x20=\x20?',_0x52a14f[_0x911b('0xa6')][_0x911b('0xa7')]())[_0x911b('0x47')]('phone\x20IS\x20NOT\x20NULL'))[_0x911b('0xa7')]();}_0x3a94cd['push'](db[_0x911b('0x72')][_0x911b('0x3b')](_0x53c62d));}return BPromise[_0x911b('0x95')](_0x3a94cd);}})[_0x911b('0x28')](function(){return _0x26c390;})[_0x911b('0x28')](respondWithResult(_0x100e68,null))[_0x911b('0x4c')](handleError(_0x100e68,null));};exports[_0x911b('0xb3')]=function(_0x4f17f6,_0x1b1601,_0x37be48){return db['VoiceQueue'][_0x911b('0x30')]({'where':{'id':_0x4f17f6[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x1b1601,null))[_0x911b('0x28')](function(_0x19f562){if(_0x19f562){return _0x19f562[_0x911b('0xb3')](_0x4f17f6[_0x911b('0x3b')]['ids']);}})[_0x911b('0x28')](function(_0xc8c5b5){if(_0xc8c5b5){return db[_0x911b('0x60')][_0x911b('0x5e')]({'where':{'ListId':_0x4f17f6['query']['ids'],'VoiceQueueId':_0x4f17f6[_0x911b('0x4e')]['id']}})['then'](function(){return _0xc8c5b5;});}})[_0x911b('0x28')](respondWithStatusCode(_0x1b1601,null))[_0x911b('0x4c')](handleError(_0x1b1601,null));};exports[_0x911b('0xb4')]=function(_0x442bab,_0x3d75f5,_0x287823){var _0x50fda2={};var _0xe684ce={};var _0x1f0256;var _0x52e97f;return db['VoiceQueue'][_0x911b('0x65')]({'where':{'id':_0x442bab[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x3d75f5,null))[_0x911b('0x28')](function(_0x18e0e0){if(_0x18e0e0){_0x1f0256=_0x18e0e0;_0xe684ce['model']=_['keys'](db[_0x911b('0xb5')][_0x911b('0x38')]);_0xe684ce[_0x911b('0x3b')]=_[_0x911b('0x3c')](_0x442bab[_0x911b('0x3b')]);_0xe684ce[_0x911b('0x3d')]=_[_0x911b('0x3f')](_0xe684ce[_0x911b('0x3a')],_0xe684ce[_0x911b('0x3b')]);_0x50fda2[_0x911b('0x3e')]=_[_0x911b('0x3f')](_0xe684ce[_0x911b('0x3a')],qs[_0x911b('0x40')](_0x442bab[_0x911b('0x3b')]['fields']));_0x50fda2[_0x911b('0x3e')]=_0x50fda2[_0x911b('0x3e')][_0x911b('0x41')]?_0x50fda2['attributes']:_0xe684ce['model'];_0x50fda2['order']=qs[_0x911b('0x46')](_0x442bab[_0x911b('0x3b')]['sort']);_0x50fda2['where']=qs[_0x911b('0x3d')](_[_0x911b('0x61')](_0x442bab[_0x911b('0x3b')],_0xe684ce['filters']));if(_0x442bab['query'][_0x911b('0x2b')]){_0x50fda2[_0x911b('0x47')]=_[_0x911b('0x4f')](_0x50fda2['where'],{'$or':_[_0x911b('0x2c')](_0x50fda2['attributes'],function(_0xb0ccdc){var _0x3295f1={};_0x3295f1[_0xb0ccdc]={'$like':'%'+_0x442bab['query'][_0x911b('0x2b')]+'%'};return _0x3295f1;})});}_0x50fda2=_[_0x911b('0x4f')]({},_0x50fda2,_0x442bab[_0x911b('0x63')]);return _0x1f0256[_0x911b('0xb4')](_0x50fda2);}})['then'](function(_0xc8f711){if(_0xc8f711){_0x52e97f=_0xc8f711[_0x911b('0x41')];if(!_0x442bab['query']['hasOwnProperty']('nolimit')){_0x50fda2[_0x911b('0x44')]=qs[_0x911b('0x44')](_0x442bab['query'][_0x911b('0x44')]);_0x50fda2[_0x911b('0x23')]=qs[_0x911b('0x23')](_0x442bab[_0x911b('0x3b')][_0x911b('0x23')]);}return _0x1f0256[_0x911b('0xb4')](_0x50fda2);}})['then'](function(_0xc9b809){if(_0xc9b809){return _0xc9b809?{'count':_0x52e97f,'rows':_0xc9b809}:null;}})[_0x911b('0x28')](respondWithResult(_0x3d75f5,null))['catch'](handleError(_0x3d75f5,null));};exports[_0x911b('0xb6')]=function(_0x18a3fe,_0x2daf49,_0x16669b){var _0x23de57,_0x5da1e3;return db[_0x911b('0x37')][_0x911b('0x30')]({'where':{'id':_0x18a3fe['params']['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x2daf49,null))[_0x911b('0x28')](function(_0x1bb56a){if(_0x1bb56a){_0x5da1e3=_0x1bb56a;return _0x1bb56a[_0x911b('0xb6')](_0x18a3fe[_0x911b('0x51')][_0x911b('0x80')],_['omit'](_0x18a3fe[_0x911b('0x51')],['ids','id'])||{});}return null;})[_0x911b('0x92')](function(_0x2a377f){var _0x47c43c;_0x23de57=_0x2a377f||[];var _0x2aed35=[];if(_0x2a377f){for(var _0x2ec04e=0x0;_0x2ec04e<_0x2a377f[_0x911b('0x41')];_0x2ec04e+=0x1){var _0x3c229d=_0x2a377f[_0x2ec04e][_0x911b('0x54')]({'plain':!![]});_0x47c43c=squel['insert']()[_0x911b('0x9e')](_0x911b('0xb7'))['fromQuery'](['phone',_0x911b('0xa5'),'ListId','VoiceQueueId',_0x911b('0x5a'),_0x911b('0x5b')],squel[_0x911b('0x82')]()[_0x911b('0xa4')](_0x911b('0xa1'),_0x911b('0xa1'))[_0x911b('0xa4')]('id','ContactId')[_0x911b('0xa4')](_0x3c229d[_0x911b('0xa6')][_0x911b('0xa7')](),_0x911b('0xa8'))[_0x911b('0xa4')](_0x18a3fe[_0x911b('0x4e')]['id'][_0x911b('0xa7')](),_0x911b('0x62'))['field'](_0x911b('0xa2'),_0x911b('0x5a'))[_0x911b('0xa4')]('NOW()',_0x911b('0x5b'))['from'](_0x911b('0xa9'))[_0x911b('0x47')](_0x911b('0xb0'))['where'](_0x911b('0xaa'),_0x3c229d[_0x911b('0xa6')]['toString']())['where'](_0x911b('0xab')))[_0x911b('0xa7')]();_0x2aed35['push'](db['sequelize'][_0x911b('0x3b')](_0x47c43c));}return BPromise[_0x911b('0x95')](_0x2aed35);}})[_0x911b('0x28')](function(){return _0x23de57;})[_0x911b('0x28')](respondWithResult(_0x2daf49,null))['catch'](handleError(_0x2daf49,null));};exports[_0x911b('0xb8')]=function(_0x16e3fa,_0x49dfda,_0x3df109){return db[_0x911b('0x37')][_0x911b('0x30')]({'where':{'id':_0x16e3fa[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x49dfda,null))[_0x911b('0x28')](function(_0x435a4e){if(_0x435a4e){return _0x435a4e['removeBlackLists'](_0x16e3fa[_0x911b('0x3b')][_0x911b('0x80')]);}})[_0x911b('0x28')](function(_0x39eefc){if(_0x39eefc){return db[_0x911b('0x6a')]['destroy']({'where':{'ListId':_0x16e3fa[_0x911b('0x3b')][_0x911b('0x80')],'VoiceQueueId':_0x16e3fa[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](function(){return _0x39eefc;});}})[_0x911b('0x28')](respondWithStatusCode(_0x49dfda,null))[_0x911b('0x4c')](handleError(_0x49dfda,null));};
\ No newline at end of file
index efdbfae..cb4c26d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53d4=['../../mysqldb','VoiceQueue','save','update','remove','hasOwnProperty','hook','exports'];(function(_0xb5896a,_0x17b104){var _0x273217=function(_0x19843a){while(--_0x19843a){_0xb5896a['push'](_0xb5896a['shift']());}};_0x273217(++_0x17b104);}(_0x53d4,0xd8));var _0x453d=function(_0x5dfbb,_0x548b87){_0x5dfbb=_0x5dfbb-0x0;var _0xfee3d5=_0x53d4[_0x5dfbb];return _0xfee3d5;};'use strict';var EventEmitter=require('events');var VoiceQueue=require(_0x453d('0x0'))['db'][_0x453d('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x453d('0x2'),'afterUpdate':_0x453d('0x3'),'afterDestroy':_0x453d('0x4')};function emitEvent(_0xbde201){return function(_0x11bd5c,_0x22180e,_0x2e0e3b){VoiceQueueEvents['emit'](_0xbde201+':'+_0x11bd5c['id'],_0x11bd5c);VoiceQueueEvents['emit'](_0xbde201,_0x11bd5c);_0x2e0e3b(null);};}for(var e in events){if(events[_0x453d('0x5')](e)){var event=events[e];VoiceQueue[_0x453d('0x6')](e,emitEvent(event));}}module[_0x453d('0x7')]=VoiceQueueEvents;
\ No newline at end of file
+var _0xcc13=['save','update','emit','exports','events','VoiceQueue'];(function(_0x5b967e,_0x58e9ab){var _0x2f99b2=function(_0x3285f2){while(--_0x3285f2){_0x5b967e['push'](_0x5b967e['shift']());}};_0x2f99b2(++_0x58e9ab);}(_0xcc13,0x6a));var _0x3cc1=function(_0x13c4ad,_0x323de5){_0x13c4ad=_0x13c4ad-0x0;var _0x138309=_0xcc13[_0x13c4ad];return _0x138309;};'use strict';var EventEmitter=require(_0x3cc1('0x0'));var VoiceQueue=require('../../mysqldb')['db'][_0x3cc1('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3cc1('0x2'),'afterUpdate':_0x3cc1('0x3'),'afterDestroy':'remove'};function emitEvent(_0x5230a9){return function(_0x1017f1,_0x1b39aa,_0x2594c4){VoiceQueueEvents[_0x3cc1('0x4')](_0x5230a9+':'+_0x1017f1['id'],_0x1017f1);VoiceQueueEvents[_0x3cc1('0x4')](_0x5230a9,_0x1017f1);_0x2594c4(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module[_0x3cc1('0x5')]=VoiceQueueEvents;
\ No newline at end of file
index 50eb95b..b1898b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./voiceQueue.attributes','exports','VoiceQueue','util'];(function(_0x1329df,_0x1d71e5){var _0x245a6f=function(_0x241a83){while(--_0x241a83){_0x1329df['push'](_0x1329df['shift']());}};_0x245a6f(++_0x1d71e5);}(_0xedd9,0xfc));var _0x9edd=function(_0x5e33db,_0x3b8df8){_0x5e33db=_0x5e33db-0x0;var _0x267bde=_0xedd9[_0x5e33db];return _0x267bde;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var logger=require(_0x9edd('0x1'))(_0x9edd('0x2'));var moment=require(_0x9edd('0x3'));var BPromise=require(_0x9edd('0x4'));var rp=require(_0x9edd('0x5'));var fs=require('fs');var path=require(_0x9edd('0x6'));var rimraf=require(_0x9edd('0x7'));var config=require('../../config/environment');var attributes=require(_0x9edd('0x8'));module[_0x9edd('0x9')]=function(_0x268f9e,_0x34c1a7){return _0x268f9e['define'](_0x9edd('0xa'),attributes,{'tableName':'voice_queues','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(_0x294d71,_0xb29d72){var _0x36648f=function(_0x2f9c12){while(--_0x2f9c12){_0x294d71['push'](_0x294d71['shift']());}};_0x36648f(++_0xb29d72);}(_0x9c44,0x178));var _0x49c4=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x9c44[_0x24061a];return _0x82054e;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x49c4('0x0'))(_0x49c4('0x1'));var moment=require(_0x49c4('0x2'));var BPromise=require(_0x49c4('0x3'));var rp=require(_0x49c4('0x4'));var fs=require('fs');var path=require(_0x49c4('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x49c4('0x6'));module['exports']=function(_0xc1278f,_0x6030ae){return _0xc1278f[_0x49c4('0x7')](_0x49c4('0x8'),attributes,{'tableName':_0x49c4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 61b6ebf..688592f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb236=['moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','defaults','socket.io-emitter','register','request','then','info','VoiceQueue,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','VoiceQueue','findAll','options','raw','attributes','limit','include','map','model','GetVoiceQueue','ShowVoiceQueue','find','where'];(function(_0x16115d,_0x58f185){var _0x10d5da=function(_0x39981a){while(--_0x39981a){_0x16115d['push'](_0x16115d['shift']());}};_0x10d5da(++_0x58f185);}(_0xb236,0x1d4));var _0x6b23=function(_0x1396c8,_0x4b14c8){_0x1396c8=_0x1396c8-0x0;var _0x46451c=_0xb236[_0x1396c8];return _0x46451c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6b23('0x0'));var BPromise=require(_0x6b23('0x1'));var rs=require(_0x6b23('0x2'));var fs=require('fs');var Redis=require(_0x6b23('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6b23('0x4'))('rpc');var config=require(_0x6b23('0x5'));var jayson=require(_0x6b23('0x6'));var client=jayson[_0x6b23('0x7')][_0x6b23('0x8')]({'port':0x232a});config['redis']=_[_0x6b23('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x6b23('0xa'))(new Redis(config['redis']));require('./voiceQueue.socket')[_0x6b23('0xb')](socket);function respondWithRpcPromise(_0x364f0d,_0x56c03a,_0x388da9){return new BPromise(function(_0x36f77a,_0x37e98e){return client[_0x6b23('0xc')](_0x364f0d,_0x388da9)[_0x6b23('0xd')](function(_0x60300d){logger[_0x6b23('0xe')](_0x6b23('0xf'),_0x56c03a,'request\x20sent');logger[_0x6b23('0x10')]('VoiceQueue,\x20%s,\x20%s,\x20%s',_0x56c03a,'request\x20sent',JSON[_0x6b23('0x11')](_0x60300d));if(_0x60300d[_0x6b23('0x12')]){if(_0x60300d['error'][_0x6b23('0x13')]===0x1f4){logger['error'](_0x6b23('0xf'),_0x56c03a,_0x60300d[_0x6b23('0x12')][_0x6b23('0x14')]);return _0x37e98e(_0x60300d['error'][_0x6b23('0x14')]);}logger[_0x6b23('0x12')](_0x6b23('0xf'),_0x56c03a,_0x60300d[_0x6b23('0x12')][_0x6b23('0x14')]);return _0x36f77a(_0x60300d['error']['message']);}else{logger['info'](_0x6b23('0xf'),_0x56c03a,_0x6b23('0x15'));_0x36f77a(_0x60300d[_0x6b23('0x16')][_0x6b23('0x14')]);}})['catch'](function(_0x5dc631){logger[_0x6b23('0x12')](_0x6b23('0xf'),_0x56c03a,_0x5dc631);_0x37e98e(_0x5dc631);});});}exports['GetVoiceQueue']=function(_0x56c667){var _0x1b151b=this;return new Promise(function(_0x34102f,_0x52d740){return db[_0x6b23('0x17')][_0x6b23('0x18')]({'raw':_0x56c667['options']?_0x56c667[_0x6b23('0x19')][_0x6b23('0x1a')]===undefined?!![]:![]:!![],'where':_0x56c667['options']?_0x56c667[_0x6b23('0x19')]['where']||null:null,'attributes':_0x56c667[_0x6b23('0x19')]?_0x56c667[_0x6b23('0x19')][_0x6b23('0x1b')]||null:null,'limit':_0x56c667[_0x6b23('0x19')]?_0x56c667[_0x6b23('0x19')][_0x6b23('0x1c')]||null:null,'include':_0x56c667['options']?_0x56c667[_0x6b23('0x19')][_0x6b23('0x1d')]?_[_0x6b23('0x1e')](_0x56c667[_0x6b23('0x19')][_0x6b23('0x1d')],function(_0x45076b){return{'model':db[_0x45076b[_0x6b23('0x1f')]],'as':_0x45076b['as'],'attributes':_0x45076b['attributes'],'include':_0x45076b[_0x6b23('0x1d')]?_[_0x6b23('0x1e')](_0x45076b['include'],function(_0x526ef4){return{'model':db[_0x526ef4[_0x6b23('0x1f')]],'as':_0x526ef4['as'],'attributes':_0x526ef4[_0x6b23('0x1b')],'include':_0x526ef4['include']?_[_0x6b23('0x1e')](_0x526ef4['include'],function(_0x401685){return{'model':db[_0x401685[_0x6b23('0x1f')]],'as':_0x401685['as'],'attributes':_0x401685['attributes']};}):[]};}):[]};}):[]:[]})[_0x6b23('0xd')](function(_0x4bb282){logger[_0x6b23('0xe')]('GetVoiceQueue',_0x56c667);logger[_0x6b23('0x10')]('GetVoiceQueue',_0x56c667,JSON[_0x6b23('0x11')](_0x4bb282));_0x34102f(_0x4bb282);})['catch'](function(_0x10e8c7){logger[_0x6b23('0x12')](_0x6b23('0x20'),_0x10e8c7[_0x6b23('0x14')],_0x56c667);_0x52d740(_0x1b151b[_0x6b23('0x12')](0x1f4,_0x10e8c7[_0x6b23('0x14')]));});});};exports[_0x6b23('0x21')]=function(_0x36184b){var _0x405c5d=this;return new Promise(function(_0x2b1211,_0x276425){return db[_0x6b23('0x17')][_0x6b23('0x22')]({'raw':_0x36184b['options']?_0x36184b[_0x6b23('0x19')][_0x6b23('0x1a')]===undefined?!![]:![]:!![],'where':_0x36184b['options']?_0x36184b[_0x6b23('0x19')][_0x6b23('0x23')]||null:null,'attributes':_0x36184b[_0x6b23('0x19')]?_0x36184b[_0x6b23('0x19')][_0x6b23('0x1b')]||null:null,'include':_0x36184b[_0x6b23('0x19')]?_0x36184b[_0x6b23('0x19')][_0x6b23('0x1d')]?_[_0x6b23('0x1e')](_0x36184b['options'][_0x6b23('0x1d')],function(_0x5b1f97){return{'model':db[_0x5b1f97[_0x6b23('0x1f')]],'as':_0x5b1f97['as'],'attributes':_0x5b1f97[_0x6b23('0x1b')],'include':_0x5b1f97[_0x6b23('0x1d')]?_['map'](_0x5b1f97[_0x6b23('0x1d')],function(_0x4599c6){return{'model':db[_0x4599c6[_0x6b23('0x1f')]],'as':_0x4599c6['as'],'attributes':_0x4599c6[_0x6b23('0x1b')],'include':_0x4599c6[_0x6b23('0x1d')]?_[_0x6b23('0x1e')](_0x4599c6[_0x6b23('0x1d')],function(_0x4d060d){return{'model':db[_0x4d060d[_0x6b23('0x1f')]],'as':_0x4d060d['as'],'attributes':_0x4d060d[_0x6b23('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x6b23('0xd')](function(_0x36aeb6){logger['info'](_0x6b23('0x21'),_0x36184b);logger['debug'](_0x6b23('0x21'),_0x36184b,JSON[_0x6b23('0x11')](_0x36aeb6));_0x2b1211(_0x36aeb6);})['catch'](function(_0x42dceb){logger[_0x6b23('0x12')](_0x6b23('0x21'),_0x42dceb['message'],_0x36184b);_0x276425(_0x405c5d[_0x6b23('0x12')](0x1f4,_0x42dceb['message']));});});};
\ No newline at end of file
+var _0xe054=['catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','./voiceQueue.socket','register','request','info','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceQueue,\x20%s,\x20%s','message','result','GetVoiceQueue','VoiceQueue','findAll','options','where','attributes','limit','include','model','map','ShowVoiceQueue','find','raw','then'];(function(_0x39608a,_0x3bb7fd){var _0x5eb386=function(_0x465a39){while(--_0x465a39){_0x39608a['push'](_0x39608a['shift']());}};_0x5eb386(++_0x3bb7fd);}(_0xe054,0x172));var _0x4e05=function(_0x315aa8,_0x262f9c){_0x315aa8=_0x315aa8-0x0;var _0x20f758=_0xe054[_0x315aa8];return _0x20f758;};'use strict';var _=require(_0x4e05('0x0'));var util=require(_0x4e05('0x1'));var moment=require('moment');var BPromise=require(_0x4e05('0x2'));var rs=require(_0x4e05('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4e05('0x4'))['db'];var utils=require(_0x4e05('0x5'));var logger=require(_0x4e05('0x6'))(_0x4e05('0x7'));var config=require(_0x4e05('0x8'));var jayson=require(_0x4e05('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x4e05('0xa')]=_[_0x4e05('0xb')](config['redis'],{'host':_0x4e05('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4e05('0xa')]));require(_0x4e05('0xd'))[_0x4e05('0xe')](socket);function respondWithRpcPromise(_0x234d67,_0x145dea,_0x1b0990){return new BPromise(function(_0x172dd3,_0x55cbcd){return client[_0x4e05('0xf')](_0x234d67,_0x1b0990)['then'](function(_0x897100){logger[_0x4e05('0x10')]('VoiceQueue,\x20%s,\x20%s',_0x145dea,_0x4e05('0x11'));logger[_0x4e05('0x12')](_0x4e05('0x13'),_0x145dea,_0x4e05('0x11'),JSON[_0x4e05('0x14')](_0x897100));if(_0x897100[_0x4e05('0x15')]){if(_0x897100[_0x4e05('0x15')][_0x4e05('0x16')]===0x1f4){logger[_0x4e05('0x15')](_0x4e05('0x17'),_0x145dea,_0x897100['error'][_0x4e05('0x18')]);return _0x55cbcd(_0x897100[_0x4e05('0x15')]['message']);}logger[_0x4e05('0x15')]('VoiceQueue,\x20%s,\x20%s',_0x145dea,_0x897100[_0x4e05('0x15')][_0x4e05('0x18')]);return _0x172dd3(_0x897100['error']['message']);}else{logger[_0x4e05('0x10')](_0x4e05('0x17'),_0x145dea,_0x4e05('0x11'));_0x172dd3(_0x897100[_0x4e05('0x19')]['message']);}})['catch'](function(_0x458b96){logger['error']('VoiceQueue,\x20%s,\x20%s',_0x145dea,_0x458b96);_0x55cbcd(_0x458b96);});});}exports[_0x4e05('0x1a')]=function(_0xcbdabb){var _0x1b4421=this;return new Promise(function(_0x32f23d,_0x5e885f){return db[_0x4e05('0x1b')][_0x4e05('0x1c')]({'raw':_0xcbdabb[_0x4e05('0x1d')]?_0xcbdabb['options']['raw']===undefined?!![]:![]:!![],'where':_0xcbdabb[_0x4e05('0x1d')]?_0xcbdabb[_0x4e05('0x1d')][_0x4e05('0x1e')]||null:null,'attributes':_0xcbdabb['options']?_0xcbdabb['options'][_0x4e05('0x1f')]||null:null,'limit':_0xcbdabb[_0x4e05('0x1d')]?_0xcbdabb[_0x4e05('0x1d')][_0x4e05('0x20')]||null:null,'include':_0xcbdabb[_0x4e05('0x1d')]?_0xcbdabb[_0x4e05('0x1d')][_0x4e05('0x21')]?_['map'](_0xcbdabb[_0x4e05('0x1d')][_0x4e05('0x21')],function(_0x489b43){return{'model':db[_0x489b43[_0x4e05('0x22')]],'as':_0x489b43['as'],'attributes':_0x489b43[_0x4e05('0x1f')],'include':_0x489b43['include']?_[_0x4e05('0x23')](_0x489b43[_0x4e05('0x21')],function(_0x5393bb){return{'model':db[_0x5393bb[_0x4e05('0x22')]],'as':_0x5393bb['as'],'attributes':_0x5393bb[_0x4e05('0x1f')],'include':_0x5393bb[_0x4e05('0x21')]?_[_0x4e05('0x23')](_0x5393bb[_0x4e05('0x21')],function(_0x47a5df){return{'model':db[_0x47a5df[_0x4e05('0x22')]],'as':_0x47a5df['as'],'attributes':_0x47a5df['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x21e249){logger[_0x4e05('0x10')]('GetVoiceQueue',_0xcbdabb);logger[_0x4e05('0x12')](_0x4e05('0x1a'),_0xcbdabb,JSON[_0x4e05('0x14')](_0x21e249));_0x32f23d(_0x21e249);})['catch'](function(_0x2be5bb){logger[_0x4e05('0x15')](_0x4e05('0x1a'),_0x2be5bb[_0x4e05('0x18')],_0xcbdabb);_0x5e885f(_0x1b4421[_0x4e05('0x15')](0x1f4,_0x2be5bb[_0x4e05('0x18')]));});});};exports[_0x4e05('0x24')]=function(_0x3548e1){var _0xf105a8=this;return new Promise(function(_0x447e3d,_0x1b1e64){return db[_0x4e05('0x1b')][_0x4e05('0x25')]({'raw':_0x3548e1[_0x4e05('0x1d')]?_0x3548e1['options'][_0x4e05('0x26')]===undefined?!![]:![]:!![],'where':_0x3548e1['options']?_0x3548e1[_0x4e05('0x1d')][_0x4e05('0x1e')]||null:null,'attributes':_0x3548e1[_0x4e05('0x1d')]?_0x3548e1[_0x4e05('0x1d')][_0x4e05('0x1f')]||null:null,'include':_0x3548e1['options']?_0x3548e1[_0x4e05('0x1d')][_0x4e05('0x21')]?_[_0x4e05('0x23')](_0x3548e1[_0x4e05('0x1d')]['include'],function(_0x548ed7){return{'model':db[_0x548ed7[_0x4e05('0x22')]],'as':_0x548ed7['as'],'attributes':_0x548ed7['attributes'],'include':_0x548ed7[_0x4e05('0x21')]?_[_0x4e05('0x23')](_0x548ed7[_0x4e05('0x21')],function(_0x14ba6b){return{'model':db[_0x14ba6b[_0x4e05('0x22')]],'as':_0x14ba6b['as'],'attributes':_0x14ba6b[_0x4e05('0x1f')],'include':_0x14ba6b['include']?_[_0x4e05('0x23')](_0x14ba6b[_0x4e05('0x21')],function(_0x527bb1){return{'model':db[_0x527bb1[_0x4e05('0x22')]],'as':_0x527bb1['as'],'attributes':_0x527bb1[_0x4e05('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x4e05('0x27')](function(_0x2cc300){logger[_0x4e05('0x10')](_0x4e05('0x24'),_0x3548e1);logger[_0x4e05('0x12')]('ShowVoiceQueue',_0x3548e1,JSON[_0x4e05('0x14')](_0x2cc300));_0x447e3d(_0x2cc300);})[_0x4e05('0x28')](function(_0x404c9b){logger[_0x4e05('0x15')](_0x4e05('0x24'),_0x404c9b[_0x4e05('0x18')],_0x3548e1);_0x1b1e64(_0xf105a8['error'](0x1f4,_0x404c9b[_0x4e05('0x18')]));});});};
\ No newline at end of file
index 90d0b94..fb527da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9e8=['voiceQueue:','./voiceQueue.events','save','update','emit','removeListener','register'];(function(_0xc465f5,_0xa9c358){var _0x3dd839=function(_0x45aa86){while(--_0x45aa86){_0xc465f5['push'](_0xc465f5['shift']());}};_0x3dd839(++_0xa9c358);}(_0xd9e8,0x19e));var _0x8d9e=function(_0x4ac955,_0x30fd5c){_0x4ac955=_0x4ac955-0x0;var _0x3a907f=_0xd9e8[_0x4ac955];return _0x3a907f;};'use strict';var VoiceQueueEvents=require(_0x8d9e('0x0'));var events=[_0x8d9e('0x1'),'remove',_0x8d9e('0x2')];function createListener(_0xb3a770,_0x418ef0){return function(_0x25229b){_0x418ef0[_0x8d9e('0x3')](_0xb3a770,_0x25229b);};}function removeListener(_0x124e46,_0x38a059){return function(){VoiceQueueEvents[_0x8d9e('0x4')](_0x124e46,_0x38a059);};}exports[_0x8d9e('0x5')]=function(_0x305028){for(var _0x146f5a=0x0,_0x537e3f=events['length'];_0x146f5a<_0x537e3f;_0x146f5a++){var _0x279dc9=events[_0x146f5a];var _0x18acc8=createListener(_0x8d9e('0x6')+_0x279dc9,_0x305028);VoiceQueueEvents['on'](_0x279dc9,_0x18acc8);}};
\ No newline at end of file
+var _0x1abf=['save','remove','emit','removeListener','register','length','voiceQueue:','./voiceQueue.events'];(function(_0x70cf5c,_0x2b24a0){var _0xb8f307=function(_0x441d58){while(--_0x441d58){_0x70cf5c['push'](_0x70cf5c['shift']());}};_0xb8f307(++_0x2b24a0);}(_0x1abf,0x87));var _0xf1ab=function(_0xb87f20,_0x4ae8f5){_0xb87f20=_0xb87f20-0x0;var _0x5e02bb=_0x1abf[_0xb87f20];return _0x5e02bb;};'use strict';var VoiceQueueEvents=require(_0xf1ab('0x0'));var events=[_0xf1ab('0x1'),_0xf1ab('0x2'),'update'];function createListener(_0x4850aa,_0x46b58b){return function(_0x435e33){_0x46b58b[_0xf1ab('0x3')](_0x4850aa,_0x435e33);};}function removeListener(_0xd08856,_0x271b39){return function(){VoiceQueueEvents[_0xf1ab('0x4')](_0xd08856,_0x271b39);};}exports[_0xf1ab('0x5')]=function(_0x84ec1e){for(var _0x207b99=0x0,_0x196562=events[_0xf1ab('0x6')];_0x207b99<_0x196562;_0x207b99++){var _0xee00cc=events[_0x207b99];var _0x2decef=createListener(_0xf1ab('0x7')+_0xee00cc,_0x84ec1e);VoiceQueueEvents['on'](_0xee00cc,_0x2decef);}};
\ No newline at end of file
index ef35600..221385b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6642=['put','/:id','update','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','./voiceQueueReport.controller','isAuthenticated','index','get','/index','getVoiceQueuesReport','post','create'];(function(_0xf04c6d,_0xe98786){var _0x4a804e=function(_0x431a0a){while(--_0x431a0a){_0xf04c6d['push'](_0xf04c6d['shift']());}};_0x4a804e(++_0xe98786);}(_0x6642,0xa5));var _0x2664=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6642[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x2664('0x0'));var util=require(_0x2664('0x1'));var path=require(_0x2664('0x2'));var timeout=require(_0x2664('0x3'));var express=require(_0x2664('0x4'));var router=express[_0x2664('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x2664('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x2664('0x7'));router['get']('/',auth[_0x2664('0x8')](),controller[_0x2664('0x9')]);router[_0x2664('0xa')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x2664('0xa')](_0x2664('0xb'),auth[_0x2664('0x8')](),controller[_0x2664('0xc')]);router[_0x2664('0xa')]('/:id',auth[_0x2664('0x8')](),controller['show']);router[_0x2664('0xd')]('/',auth[_0x2664('0x8')](),controller[_0x2664('0xe')]);router[_0x2664('0xf')](_0x2664('0x10'),auth[_0x2664('0x8')](),controller[_0x2664('0x11')]);router[_0x2664('0x12')](_0x2664('0x10'),auth[_0x2664('0x8')](),controller['destroy']);module[_0x2664('0x13')]=router;
\ No newline at end of file
+var _0x836f=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','index','/describe','describe','/index','getVoiceQueuesReport','show','post','create','put','/:id','delete','destroy','exports','multer','connect-timeout'];(function(_0xb7a4d5,_0x215823){var _0x1f826c=function(_0x5d5edf){while(--_0x5d5edf){_0xb7a4d5['push'](_0xb7a4d5['shift']());}};_0x1f826c(++_0x215823);}(_0x836f,0xcd));var _0xf836=function(_0x1b7413,_0x3b7298){_0x1b7413=_0x1b7413-0x0;var _0x1b0aec=_0x836f[_0x1b7413];return _0x1b0aec;};'use strict';var multer=require(_0xf836('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xf836('0x1'));var express=require(_0xf836('0x2'));var router=express[_0xf836('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xf836('0x4'));var interaction=require(_0xf836('0x5'));var config=require(_0xf836('0x6'));var controller=require(_0xf836('0x7'));router[_0xf836('0x8')]('/',auth[_0xf836('0x9')](),controller[_0xf836('0xa')]);router[_0xf836('0x8')](_0xf836('0xb'),auth[_0xf836('0x9')](),controller[_0xf836('0xc')]);router[_0xf836('0x8')](_0xf836('0xd'),auth[_0xf836('0x9')](),controller[_0xf836('0xe')]);router[_0xf836('0x8')]('/:id',auth[_0xf836('0x9')](),controller[_0xf836('0xf')]);router[_0xf836('0x10')]('/',auth[_0xf836('0x9')](),controller[_0xf836('0x11')]);router[_0xf836('0x12')](_0xf836('0x13'),auth['isAuthenticated'](),controller['update']);router[_0xf836('0x14')]('/:id',auth[_0xf836('0x9')](),controller[_0xf836('0x15')]);module[_0xf836('0x16')]=router;
\ No newline at end of file
index f9ea350..fa2f86c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb21a=['format','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','queuecallerleaveAt','holdtime','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','INTEGER','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','DATE','getDataValue','queuecallerjoinAt'];(function(_0xfb02c9,_0x43c274){var _0x9afb71=function(_0x56dff0){while(--_0x56dff0){_0xfb02c9['push'](_0xfb02c9['shift']());}};_0x9afb71(++_0x43c274);}(_0xb21a,0x1f1));var _0xab21=function(_0x314995,_0x168758){_0x314995=_0x314995-0x0;var _0x347fcf=_0xb21a[_0x314995];return _0x347fcf;};'use strict';var Sequelize=require(_0xab21('0x0'));var moment=require(_0xab21('0x1'));module[_0xab21('0x2')]={'type':{'type':Sequelize[_0xab21('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xab21('0x3')]},'calleridname':{'type':Sequelize[_0xab21('0x3')]},'queue':{'type':Sequelize[_0xab21('0x3')]},'queuecallerjoinAt':{'type':Sequelize[_0xab21('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0xab21('0x4')],'set':function(_0x4f42e5){var _0x52d100=moment(_0x4f42e5);var _0x3eb760=moment(this[_0xab21('0x5')](_0xab21('0x6')))[_0xab21('0x7')](_0xab21('0x8'));var _0x1cbbe0=_0x52d100[_0xab21('0x9')](_0x3eb760,_0xab21('0xa'));this[_0xab21('0xb')](_0xab21('0xc'),_0x4f42e5);this[_0xab21('0xb')](_0xab21('0xd'),_0x1cbbe0||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize[_0xab21('0xe')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xab21('0x4')]},'queuecallercomplete':{'type':Sequelize[_0xab21('0xe')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xab21('0x4')]},'queuecallerexit':{'type':Sequelize[_0xab21('0xe')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0xab21('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0xab21('0x3')],'comment':_0xab21('0xf')},'originalposition':{'type':Sequelize['INTEGER']},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xab21('0x3')]},'connectedlinename':{'type':Sequelize[_0xab21('0x3')]},'accountcode':{'type':Sequelize[_0xab21('0x3')]},'context':{'type':Sequelize[_0xab21('0x3')]},'exten':{'type':Sequelize[_0xab21('0x3')]},'priority':{'type':Sequelize[_0xab21('0x3')]},'holdtime':{'type':Sequelize[_0xab21('0x10')]},'mohtime':{'type':Sequelize[_0xab21('0x10')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xab21('0xe')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xab21('0x3')]},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0xab21('0x11')},'transferexten':{'type':Sequelize[_0xab21('0x3')]},'transferuniqueid':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0xab21('0x3')]},'secondDisposition':{'type':Sequelize[_0xab21('0x3')]},'thirdDisposition':{'type':Sequelize[_0xab21('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0xab21('0x10')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1a58=['exports','STRING','DATE','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','diff','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'];(function(_0x22d300,_0x23c213){var _0x4d2a92=function(_0x439c61){while(--_0x439c61){_0x22d300['push'](_0x22d300['shift']());}};_0x4d2a92(++_0x23c213);}(_0x1a58,0x180));var _0x81a5=function(_0x431800,_0x321eb4){_0x431800=_0x431800-0x0;var _0x3bd646=_0x1a58[_0x431800];return _0x3bd646;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0x81a5('0x0')]={'type':{'type':Sequelize[_0x81a5('0x1')]},'uniqueid':{'type':Sequelize[_0x81a5('0x1')]},'calleridnum':{'type':Sequelize[_0x81a5('0x1')]},'calleridname':{'type':Sequelize[_0x81a5('0x1')]},'queue':{'type':Sequelize[_0x81a5('0x1')]},'queuecallerjoinAt':{'type':Sequelize[_0x81a5('0x2')]},'queuecallerleaveAt':{'type':Sequelize['DATE'],'set':function(_0x217f32){var _0x188f68=moment(_0x217f32);var _0x5e69c1=moment(this['getDataValue'](_0x81a5('0x3')))['format'](_0x81a5('0x4'));var _0x435ed4=_0x188f68[_0x81a5('0x5')](_0x5e69c1,'seconds');this[_0x81a5('0x6')](_0x81a5('0x7'),_0x217f32);this[_0x81a5('0x6')](_0x81a5('0x8'),_0x435ed4||null);}},'position':{'type':Sequelize[_0x81a5('0x9')]},'count':{'type':Sequelize[_0x81a5('0x9')]},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x81a5('0x2')]},'queuecallercomplete':{'type':Sequelize[_0x81a5('0xa')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize['DATE']},'queuecallerexit':{'type':Sequelize[_0x81a5('0xa')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x81a5('0x2')]},'queuecallerexitreason':{'type':Sequelize['STRING'],'comment':_0x81a5('0xb')},'originalposition':{'type':Sequelize['INTEGER']},'channel':{'type':Sequelize[_0x81a5('0x1')]},'connectedlinenum':{'type':Sequelize[_0x81a5('0x1')]},'connectedlinename':{'type':Sequelize[_0x81a5('0x1')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x81a5('0x1')]},'priority':{'type':Sequelize[_0x81a5('0x1')]},'holdtime':{'type':Sequelize[_0x81a5('0x9')]},'mohtime':{'type':Sequelize[_0x81a5('0x9')],'defaultValue':0x0},'assigned':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x81a5('0xa')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x81a5('0x1')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0x81a5('0x1')]},'disposition':{'type':Sequelize[_0x81a5('0x1')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x81a5('0x1')]},'queuecallerenterreason':{'type':Sequelize[_0x81a5('0x9')],'defaultValue':0x0}};
\ No newline at end of file
index af5c547..aa4d465 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf803=['describe','getVoiceQueuesReport','rows','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','destroy','then','sendStatus','name','send','map','VoiceQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','find','create','body','params'];(function(_0x1344c6,_0x54914b){var _0x144dfb=function(_0x942296){while(--_0x942296){_0x1344c6['push'](_0x1344c6['shift']());}};_0x144dfb(++_0x54914b);}(_0xf803,0xf9));var _0x3f80=function(_0x50b2f3,_0x7a6e39){_0x50b2f3=_0x50b2f3-0x0;var _0x478ce9=_0xf803[_0x50b2f3];return _0x478ce9;};'use strict';var emlformat=require(_0x3f80('0x0'));var rimraf=require(_0x3f80('0x1'));var zipdir=require(_0x3f80('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3f80('0x3'));var moment=require(_0x3f80('0x4'));var BPromise=require(_0x3f80('0x5'));var Mustache=require(_0x3f80('0x6'));var util=require(_0x3f80('0x7'));var path=require('path');var sox=require(_0x3f80('0x8'));var csv=require('to-csv');var ejs=require(_0x3f80('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3f80('0xa'));var squel=require(_0x3f80('0xb'));var crypto=require(_0x3f80('0xc'));var jsforce=require(_0x3f80('0xd'));var deskjs=require(_0x3f80('0xe'));var toCsv=require('to-csv');var querystring=require(_0x3f80('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x3f80('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3f80('0x11'));var logger=require('../../config/logger')(_0x3f80('0x12'));var utils=require(_0x3f80('0x13'));var config=require(_0x3f80('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x3f80('0x15'))['db'];config[_0x3f80('0x16')]=_[_0x3f80('0x17')](config['redis'],{'host':_0x3f80('0x18'),'port':0x18eb});var socket=require(_0x3f80('0x19'))(new Redis(config[_0x3f80('0x16')]));require(_0x3f80('0x1a'))[_0x3f80('0x1b')](socket);function respondWithStatusCode(_0x1d9dfc,_0x2a1a0d){_0x2a1a0d=_0x2a1a0d||0xcc;return function(_0x1d2e75){if(_0x1d2e75){return _0x1d9dfc['sendStatus'](_0x2a1a0d);}return _0x1d9dfc['status'](_0x2a1a0d)[_0x3f80('0x1c')]();};}function respondWithResult(_0x19b739,_0x1f618a){_0x1f618a=_0x1f618a||0xc8;return function(_0x3d6c71){if(_0x3d6c71){return _0x19b739[_0x3f80('0x1d')](_0x1f618a)['json'](_0x3d6c71);}};}function respondWithFilteredResult(_0x2f0a39,_0x2ac34b){return function(_0x3ad13d){if(_0x3ad13d){var _0x36015d=typeof _0x2ac34b[_0x3f80('0x1e')]==='undefined'&&typeof _0x2ac34b['limit']===_0x3f80('0x1f');var _0x32ba19=_0x3ad13d['count'];var _0x5b3304=_0x36015d?0x0:_0x2ac34b['offset'];var _0x174bb0=_0x36015d?_0x3ad13d[_0x3f80('0x20')]:_0x2ac34b[_0x3f80('0x1e')]+_0x2ac34b[_0x3f80('0x21')];var _0x573179;if(_0x174bb0>=_0x32ba19){_0x174bb0=_0x32ba19;_0x573179=0xc8;}else{_0x573179=0xce;}_0x2f0a39[_0x3f80('0x1d')](_0x573179);return _0x2f0a39[_0x3f80('0x22')](_0x3f80('0x23'),_0x5b3304+'-'+_0x174bb0+'/'+_0x32ba19)[_0x3f80('0x24')](_0x3ad13d);}return null;};}function patchUpdates(_0xaf2996){return function(_0xe3b84){try{jsonpatch[_0x3f80('0x25')](_0xe3b84,_0xaf2996,!![]);}catch(_0x2c2402){return BPromise[_0x3f80('0x26')](_0x2c2402);}return _0xe3b84[_0x3f80('0x27')]();};}function saveUpdates(_0xe06a3,_0x53d4a0){return function(_0x466d0d){if(_0x466d0d){return _0x466d0d[_0x3f80('0x28')](_0xe06a3)['then'](function(_0x11ad9e){return _0x11ad9e;});}return null;};}function removeEntity(_0x57953a,_0x31cdc0){return function(_0x1ee274){if(_0x1ee274){return _0x1ee274[_0x3f80('0x29')]()[_0x3f80('0x2a')](function(){_0x57953a[_0x3f80('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1de18f,_0x595f27){return function(_0x45781d){if(!_0x45781d){_0x1de18f[_0x3f80('0x2b')](0x194);}return _0x45781d;};}function handleError(_0x2011b7,_0x3632b1){_0x3632b1=_0x3632b1||0x1f4;return function(_0x3df1ac){logger['error'](_0x3df1ac['stack']);if(_0x3df1ac[_0x3f80('0x2c')]){delete _0x3df1ac[_0x3f80('0x2c')];}_0x2011b7['status'](_0x3632b1)[_0x3f80('0x2d')](_0x3df1ac);};}exports['index']=function(_0x5c9dea,_0x4fdf64){var _0x1dfa30={},_0x4667ca={},_0x47adb3={'count':0x0,'rows':[]};var _0x334804=_[_0x3f80('0x2e')](db[_0x3f80('0x2f')][_0x3f80('0x30')],function(_0x131817){return{'name':_0x131817[_0x3f80('0x31')],'type':_0x131817[_0x3f80('0x32')][_0x3f80('0x33')]};});_0x4667ca[_0x3f80('0x34')]=_[_0x3f80('0x2e')](_0x334804,_0x3f80('0x2c'));_0x4667ca[_0x3f80('0x35')]=_[_0x3f80('0x36')](_0x5c9dea[_0x3f80('0x35')]);_0x4667ca[_0x3f80('0x37')]=_[_0x3f80('0x38')](_0x4667ca[_0x3f80('0x34')],_0x4667ca[_0x3f80('0x35')]);_0x1dfa30[_0x3f80('0x39')]=_[_0x3f80('0x38')](_0x4667ca[_0x3f80('0x34')],qs[_0x3f80('0x3a')](_0x5c9dea[_0x3f80('0x35')][_0x3f80('0x3a')]));_0x1dfa30['attributes']=_0x1dfa30['attributes'][_0x3f80('0x3b')]?_0x1dfa30['attributes']:_0x4667ca[_0x3f80('0x34')];if(!_0x5c9dea[_0x3f80('0x35')][_0x3f80('0x3c')](_0x3f80('0x3d'))){_0x1dfa30[_0x3f80('0x21')]=qs[_0x3f80('0x21')](_0x5c9dea['query'][_0x3f80('0x21')]);_0x1dfa30[_0x3f80('0x1e')]=qs['offset'](_0x5c9dea['query']['offset']);}_0x1dfa30[_0x3f80('0x3e')]=qs[_0x3f80('0x3f')](_0x5c9dea['query'][_0x3f80('0x3f')]);_0x1dfa30['where']=qs[_0x3f80('0x37')](_[_0x3f80('0x40')](_0x5c9dea[_0x3f80('0x35')],_0x4667ca[_0x3f80('0x37')]),_0x334804);if(_0x5c9dea[_0x3f80('0x35')][_0x3f80('0x41')]){_0x1dfa30[_0x3f80('0x42')]=_[_0x3f80('0x43')](_0x1dfa30[_0x3f80('0x42')],{'$or':_[_0x3f80('0x2e')](_0x334804,function(_0x3ec10c){if(_0x3ec10c[_0x3f80('0x32')]!==_0x3f80('0x44')){var _0x48c1ea={};_0x48c1ea[_0x3ec10c[_0x3f80('0x2c')]]={'$like':'%'+_0x5c9dea[_0x3f80('0x35')]['filter']+'%'};return _0x48c1ea;}})});}_0x1dfa30=_[_0x3f80('0x43')]({},_0x1dfa30,_0x5c9dea[_0x3f80('0x45')]);var _0x13a234={'where':_0x1dfa30[_0x3f80('0x42')]};return db[_0x3f80('0x2f')][_0x3f80('0x20')](_0x13a234)[_0x3f80('0x2a')](function(_0x5d5691){_0x47adb3['count']=_0x5d5691;if(_0x5c9dea[_0x3f80('0x35')][_0x3f80('0x46')]){_0x1dfa30[_0x3f80('0x47')]=[{'all':!![]}];}return db[_0x3f80('0x2f')][_0x3f80('0x48')](_0x1dfa30);})[_0x3f80('0x2a')](function(_0x1dd7c7){_0x47adb3['rows']=_0x1dd7c7;return _0x47adb3;})[_0x3f80('0x2a')](respondWithFilteredResult(_0x4fdf64,_0x1dfa30))[_0x3f80('0x49')](handleError(_0x4fdf64,null));};exports[_0x3f80('0x4a')]=function(_0xbacba7,_0x10c761){var _0x52b824={'raw':![],'where':{'id':_0xbacba7['params']['id']}},_0xea0517={};_0xea0517[_0x3f80('0x34')]=_[_0x3f80('0x36')](db[_0x3f80('0x2f')][_0x3f80('0x30')]);_0xea0517[_0x3f80('0x35')]=_[_0x3f80('0x36')](_0xbacba7[_0x3f80('0x35')]);_0xea0517[_0x3f80('0x37')]=_[_0x3f80('0x38')](_0xea0517['model'],_0xea0517[_0x3f80('0x35')]);_0x52b824['attributes']=_[_0x3f80('0x38')](_0xea0517['model'],qs[_0x3f80('0x3a')](_0xbacba7['query'][_0x3f80('0x3a')]));_0x52b824[_0x3f80('0x39')]=_0x52b824[_0x3f80('0x39')][_0x3f80('0x3b')]?_0x52b824['attributes']:_0xea0517[_0x3f80('0x34')];if(_0xbacba7[_0x3f80('0x35')][_0x3f80('0x46')]){_0x52b824[_0x3f80('0x47')]=[{'all':!![]}];}_0x52b824=_[_0x3f80('0x43')]({},_0x52b824,_0xbacba7[_0x3f80('0x45')]);return db[_0x3f80('0x2f')][_0x3f80('0x4b')](_0x52b824)[_0x3f80('0x2a')](handleEntityNotFound(_0x10c761,null))[_0x3f80('0x2a')](respondWithResult(_0x10c761,null))[_0x3f80('0x49')](handleError(_0x10c761,null));};exports[_0x3f80('0x4c')]=function(_0x44be7f,_0x58a7ff){return db[_0x3f80('0x2f')][_0x3f80('0x4c')](_0x44be7f[_0x3f80('0x4d')],{})[_0x3f80('0x2a')](respondWithResult(_0x58a7ff,0xc9))['catch'](handleError(_0x58a7ff,null));};exports[_0x3f80('0x28')]=function(_0x924010,_0x1b6912){if(_0x924010[_0x3f80('0x4d')]['id']){delete _0x924010[_0x3f80('0x4d')]['id'];}return db[_0x3f80('0x2f')][_0x3f80('0x4b')]({'where':{'id':_0x924010['params']['id']}})['then'](handleEntityNotFound(_0x1b6912,null))[_0x3f80('0x2a')](saveUpdates(_0x924010[_0x3f80('0x4d')],null))[_0x3f80('0x2a')](respondWithResult(_0x1b6912,null))[_0x3f80('0x49')](handleError(_0x1b6912,null));};exports['destroy']=function(_0x4e8975,_0x5f5d5c){return db['VoiceQueueReport'][_0x3f80('0x4b')]({'where':{'id':_0x4e8975[_0x3f80('0x4e')]['id']}})['then'](handleEntityNotFound(_0x5f5d5c,null))[_0x3f80('0x2a')](removeEntity(_0x5f5d5c,null))[_0x3f80('0x49')](handleError(_0x5f5d5c,null));};exports['describe']=function(_0xf9bff0,_0x4ba716){return db['VoiceQueueReport'][_0x3f80('0x4f')]()['then'](respondWithResult(_0x4ba716,null))[_0x3f80('0x49')](handleError(_0x4ba716,null));};exports[_0x3f80('0x50')]=function(_0x26da0c,_0x42465b){var _0x428b31={},_0x39591e={},_0x5b5e70={'count':0x0,'rows':[]};_0x39591e[_0x3f80('0x34')]=_[_0x3f80('0x36')](db[_0x3f80('0x2f')][_0x3f80('0x30')]);_0x39591e[_0x3f80('0x35')]=_[_0x3f80('0x36')](_0x26da0c[_0x3f80('0x35')]);_0x39591e[_0x3f80('0x37')]=_[_0x3f80('0x38')](_0x39591e['model'],_0x39591e[_0x3f80('0x35')]);_0x428b31[_0x3f80('0x39')]=_[_0x3f80('0x38')](_0x39591e[_0x3f80('0x34')],qs[_0x3f80('0x3a')](_0x26da0c[_0x3f80('0x35')][_0x3f80('0x3a')]));_0x428b31['attributes']=_0x428b31[_0x3f80('0x39')]['length']?_0x428b31[_0x3f80('0x39')]:_0x39591e[_0x3f80('0x34')];if(!_0x26da0c['query'][_0x3f80('0x3c')](_0x3f80('0x3d'))){_0x428b31[_0x3f80('0x21')]=qs[_0x3f80('0x21')](_0x26da0c[_0x3f80('0x35')][_0x3f80('0x21')]);_0x428b31['offset']=qs[_0x3f80('0x1e')](_0x26da0c[_0x3f80('0x35')][_0x3f80('0x1e')]);}_0x428b31[_0x3f80('0x3e')]=qs[_0x3f80('0x3f')](_0x26da0c[_0x3f80('0x35')][_0x3f80('0x3f')]);_0x428b31['where']=qs['filters'](_['pick'](_0x26da0c['query'],_0x39591e[_0x3f80('0x37')]));if(_0x26da0c[_0x3f80('0x35')][_0x3f80('0x41')]){_0x428b31['where']=_[_0x3f80('0x43')](_0x428b31['where'],{'$or':_[_0x3f80('0x2e')](_0x428b31[_0x3f80('0x39')],function(_0x5c6e63){var _0x51298a={};_0x51298a[_0x5c6e63]={'$like':'%'+_0x26da0c[_0x3f80('0x35')][_0x3f80('0x41')]+'%'};return _0x51298a;})});}_0x428b31=_[_0x3f80('0x43')]({},_0x428b31,_0x26da0c['options']);var _0x4864a0={'where':_0x428b31[_0x3f80('0x42')]};return db[_0x3f80('0x2f')][_0x3f80('0x20')](_0x4864a0)[_0x3f80('0x2a')](function(_0x3d9658){_0x5b5e70[_0x3f80('0x20')]=_0x3d9658;if(_0x26da0c[_0x3f80('0x35')]['includeAll']){_0x428b31['include']=[{'all':!![]}];}return db['VoiceQueueReport'][_0x3f80('0x48')](_0x428b31);})[_0x3f80('0x2a')](function(_0xe5f9b6){_0x5b5e70[_0x3f80('0x51')]=_0xe5f9b6;return _0x5b5e70;})[_0x3f80('0x2a')](respondWithFilteredResult(_0x42465b,_0x428b31,_0x3f80('0x50')))[_0x3f80('0x49')](handleError(_0x42465b,null,_0x3f80('0x50')));};
\ No newline at end of file
+var _0x976e=['name','index','VoiceQueueReport','fieldName','key','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','type','VIRTUAL','includeAll','include','findAll','show','merge','options','catch','create','body','find','params','describe','getVoiceQueuesReport','rows','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','sendStatus','status','json','offset','limit','undefined','count','Content-Range','reject','save','update','then','destroy','end','error'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x976e,0x11e));var _0xe976=function(_0x2fc34b,_0x486b3c){_0x2fc34b=_0x2fc34b-0x0;var _0x4a8fe7=_0x976e[_0x2fc34b];return _0x4a8fe7;};'use strict';var emlformat=require(_0xe976('0x0'));var rimraf=require(_0xe976('0x1'));var zipdir=require(_0xe976('0x2'));var jsonpatch=require(_0xe976('0x3'));var rp=require(_0xe976('0x4'));var moment=require(_0xe976('0x5'));var BPromise=require(_0xe976('0x6'));var Mustache=require(_0xe976('0x7'));var util=require(_0xe976('0x8'));var path=require(_0xe976('0x9'));var sox=require(_0xe976('0xa'));var csv=require(_0xe976('0xb'));var ejs=require(_0xe976('0xc'));var fs=require('fs');var fs_extra=require(_0xe976('0xd'));var _=require(_0xe976('0xe'));var squel=require(_0xe976('0xf'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe976('0xb'));var querystring=require('querystring');var Papa=require(_0xe976('0x10'));var Redis=require(_0xe976('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xe976('0x12'));var as=require(_0xe976('0x13'));var hardwareService=require(_0xe976('0x14'));var logger=require(_0xe976('0x15'))(_0xe976('0x16'));var utils=require('../../config/utils');var config=require(_0xe976('0x17'));var licenseUtil=require(_0xe976('0x18'));var db=require('../../mysqldb')['db'];config[_0xe976('0x19')]=_[_0xe976('0x1a')](config[_0xe976('0x19')],{'host':_0xe976('0x1b'),'port':0x18eb});var socket=require(_0xe976('0x1c'))(new Redis(config[_0xe976('0x19')]));require(_0xe976('0x1d'))[_0xe976('0x1e')](socket);function respondWithStatusCode(_0x38aa0c,_0x2cd5d4){_0x2cd5d4=_0x2cd5d4||0xcc;return function(_0x1e6496){if(_0x1e6496){return _0x38aa0c[_0xe976('0x1f')](_0x2cd5d4);}return _0x38aa0c[_0xe976('0x20')](_0x2cd5d4)['end']();};}function respondWithResult(_0x592281,_0x171e35){_0x171e35=_0x171e35||0xc8;return function(_0x2334f9){if(_0x2334f9){return _0x592281[_0xe976('0x20')](_0x171e35)[_0xe976('0x21')](_0x2334f9);}};}function respondWithFilteredResult(_0x3fb79b,_0x127561){return function(_0x55dbf7){if(_0x55dbf7){var _0x1f2fe2=typeof _0x127561[_0xe976('0x22')]==='undefined'&&typeof _0x127561[_0xe976('0x23')]===_0xe976('0x24');var _0x38b2fa=_0x55dbf7[_0xe976('0x25')];var _0x369112=_0x1f2fe2?0x0:_0x127561[_0xe976('0x22')];var _0x25eb96=_0x1f2fe2?_0x55dbf7[_0xe976('0x25')]:_0x127561[_0xe976('0x22')]+_0x127561[_0xe976('0x23')];var _0x12f73d;if(_0x25eb96>=_0x38b2fa){_0x25eb96=_0x38b2fa;_0x12f73d=0xc8;}else{_0x12f73d=0xce;}_0x3fb79b[_0xe976('0x20')](_0x12f73d);return _0x3fb79b['set'](_0xe976('0x26'),_0x369112+'-'+_0x25eb96+'/'+_0x38b2fa)['json'](_0x55dbf7);}return null;};}function patchUpdates(_0x51448a){return function(_0x3b8611){try{jsonpatch['apply'](_0x3b8611,_0x51448a,!![]);}catch(_0x36178e){return BPromise[_0xe976('0x27')](_0x36178e);}return _0x3b8611[_0xe976('0x28')]();};}function saveUpdates(_0x586ea4,_0x2c98b6){return function(_0x307bac){if(_0x307bac){return _0x307bac[_0xe976('0x29')](_0x586ea4)[_0xe976('0x2a')](function(_0x2e95b1){return _0x2e95b1;});}return null;};}function removeEntity(_0x51b5de,_0x35ce85){return function(_0x57d0c7){if(_0x57d0c7){return _0x57d0c7[_0xe976('0x2b')]()[_0xe976('0x2a')](function(){_0x51b5de['status'](0xcc)[_0xe976('0x2c')]();});}};}function handleEntityNotFound(_0x852bcc,_0x299a55){return function(_0x302f4c){if(!_0x302f4c){_0x852bcc['sendStatus'](0x194);}return _0x302f4c;};}function handleError(_0x57417a,_0x5deed9){_0x5deed9=_0x5deed9||0x1f4;return function(_0x35d8b9){logger[_0xe976('0x2d')](_0x35d8b9['stack']);if(_0x35d8b9[_0xe976('0x2e')]){delete _0x35d8b9['name'];}_0x57417a[_0xe976('0x20')](_0x5deed9)['send'](_0x35d8b9);};}exports[_0xe976('0x2f')]=function(_0xad3ab2,_0x899604){var _0x47effb={},_0x2346a4={},_0x25739c={'count':0x0,'rows':[]};var _0x150fee=_['map'](db[_0xe976('0x30')]['rawAttributes'],function(_0x4decca){return{'name':_0x4decca[_0xe976('0x31')],'type':_0x4decca['type'][_0xe976('0x32')]};});_0x2346a4[_0xe976('0x33')]=_[_0xe976('0x34')](_0x150fee,'name');_0x2346a4[_0xe976('0x35')]=_[_0xe976('0x36')](_0xad3ab2[_0xe976('0x35')]);_0x2346a4['filters']=_['intersection'](_0x2346a4['model'],_0x2346a4[_0xe976('0x35')]);_0x47effb['attributes']=_[_0xe976('0x37')](_0x2346a4[_0xe976('0x33')],qs[_0xe976('0x38')](_0xad3ab2[_0xe976('0x35')]['fields']));_0x47effb[_0xe976('0x39')]=_0x47effb['attributes'][_0xe976('0x3a')]?_0x47effb[_0xe976('0x39')]:_0x2346a4[_0xe976('0x33')];if(!_0xad3ab2['query'][_0xe976('0x3b')](_0xe976('0x3c'))){_0x47effb[_0xe976('0x23')]=qs[_0xe976('0x23')](_0xad3ab2['query'][_0xe976('0x23')]);_0x47effb[_0xe976('0x22')]=qs[_0xe976('0x22')](_0xad3ab2[_0xe976('0x35')][_0xe976('0x22')]);}_0x47effb[_0xe976('0x3d')]=qs[_0xe976('0x3e')](_0xad3ab2[_0xe976('0x35')][_0xe976('0x3e')]);_0x47effb[_0xe976('0x3f')]=qs[_0xe976('0x40')](_[_0xe976('0x41')](_0xad3ab2[_0xe976('0x35')],_0x2346a4['filters']),_0x150fee);if(_0xad3ab2['query'][_0xe976('0x42')]){_0x47effb['where']=_['merge'](_0x47effb['where'],{'$or':_[_0xe976('0x34')](_0x150fee,function(_0x4e8a14){if(_0x4e8a14[_0xe976('0x43')]!==_0xe976('0x44')){var _0x20a26e={};_0x20a26e[_0x4e8a14[_0xe976('0x2e')]]={'$like':'%'+_0xad3ab2[_0xe976('0x35')][_0xe976('0x42')]+'%'};return _0x20a26e;}})});}_0x47effb=_['merge']({},_0x47effb,_0xad3ab2['options']);var _0x35ca1c={'where':_0x47effb[_0xe976('0x3f')]};return db[_0xe976('0x30')][_0xe976('0x25')](_0x35ca1c)[_0xe976('0x2a')](function(_0x116280){_0x25739c[_0xe976('0x25')]=_0x116280;if(_0xad3ab2[_0xe976('0x35')][_0xe976('0x45')]){_0x47effb[_0xe976('0x46')]=[{'all':!![]}];}return db[_0xe976('0x30')][_0xe976('0x47')](_0x47effb);})[_0xe976('0x2a')](function(_0x4519eb){_0x25739c['rows']=_0x4519eb;return _0x25739c;})['then'](respondWithFilteredResult(_0x899604,_0x47effb))['catch'](handleError(_0x899604,null));};exports[_0xe976('0x48')]=function(_0x29c7d1,_0x329f4f){var _0x126abf={'raw':![],'where':{'id':_0x29c7d1['params']['id']}},_0x189bb1={};_0x189bb1[_0xe976('0x33')]=_['keys'](db[_0xe976('0x30')]['rawAttributes']);_0x189bb1['query']=_[_0xe976('0x36')](_0x29c7d1['query']);_0x189bb1[_0xe976('0x40')]=_[_0xe976('0x37')](_0x189bb1['model'],_0x189bb1[_0xe976('0x35')]);_0x126abf[_0xe976('0x39')]=_['intersection'](_0x189bb1[_0xe976('0x33')],qs['fields'](_0x29c7d1[_0xe976('0x35')][_0xe976('0x38')]));_0x126abf['attributes']=_0x126abf[_0xe976('0x39')]['length']?_0x126abf[_0xe976('0x39')]:_0x189bb1[_0xe976('0x33')];if(_0x29c7d1['query'][_0xe976('0x45')]){_0x126abf[_0xe976('0x46')]=[{'all':!![]}];}_0x126abf=_[_0xe976('0x49')]({},_0x126abf,_0x29c7d1[_0xe976('0x4a')]);return db[_0xe976('0x30')]['find'](_0x126abf)['then'](handleEntityNotFound(_0x329f4f,null))['then'](respondWithResult(_0x329f4f,null))[_0xe976('0x4b')](handleError(_0x329f4f,null));};exports[_0xe976('0x4c')]=function(_0x5174c3,_0x43f682){return db[_0xe976('0x30')]['create'](_0x5174c3[_0xe976('0x4d')],{})['then'](respondWithResult(_0x43f682,0xc9))['catch'](handleError(_0x43f682,null));};exports[_0xe976('0x29')]=function(_0x45180c,_0x3e9e82){if(_0x45180c[_0xe976('0x4d')]['id']){delete _0x45180c[_0xe976('0x4d')]['id'];}return db[_0xe976('0x30')][_0xe976('0x4e')]({'where':{'id':_0x45180c[_0xe976('0x4f')]['id']}})[_0xe976('0x2a')](handleEntityNotFound(_0x3e9e82,null))[_0xe976('0x2a')](saveUpdates(_0x45180c[_0xe976('0x4d')],null))[_0xe976('0x2a')](respondWithResult(_0x3e9e82,null))[_0xe976('0x4b')](handleError(_0x3e9e82,null));};exports[_0xe976('0x2b')]=function(_0xc26b33,_0x53f55e){return db[_0xe976('0x30')][_0xe976('0x4e')]({'where':{'id':_0xc26b33[_0xe976('0x4f')]['id']}})[_0xe976('0x2a')](handleEntityNotFound(_0x53f55e,null))[_0xe976('0x2a')](removeEntity(_0x53f55e,null))[_0xe976('0x4b')](handleError(_0x53f55e,null));};exports['describe']=function(_0x2f3cd9,_0xf64542){return db['VoiceQueueReport'][_0xe976('0x50')]()[_0xe976('0x2a')](respondWithResult(_0xf64542,null))[_0xe976('0x4b')](handleError(_0xf64542,null));};exports[_0xe976('0x51')]=function(_0x3c9122,_0x3956bc){var _0x25d96c={},_0x37757d={},_0x440ade={'count':0x0,'rows':[]};_0x37757d['model']=_[_0xe976('0x36')](db[_0xe976('0x30')]['rawAttributes']);_0x37757d[_0xe976('0x35')]=_[_0xe976('0x36')](_0x3c9122[_0xe976('0x35')]);_0x37757d[_0xe976('0x40')]=_['intersection'](_0x37757d[_0xe976('0x33')],_0x37757d[_0xe976('0x35')]);_0x25d96c[_0xe976('0x39')]=_[_0xe976('0x37')](_0x37757d[_0xe976('0x33')],qs[_0xe976('0x38')](_0x3c9122['query']['fields']));_0x25d96c[_0xe976('0x39')]=_0x25d96c[_0xe976('0x39')][_0xe976('0x3a')]?_0x25d96c['attributes']:_0x37757d['model'];if(!_0x3c9122['query'][_0xe976('0x3b')](_0xe976('0x3c'))){_0x25d96c['limit']=qs[_0xe976('0x23')](_0x3c9122[_0xe976('0x35')][_0xe976('0x23')]);_0x25d96c[_0xe976('0x22')]=qs[_0xe976('0x22')](_0x3c9122[_0xe976('0x35')][_0xe976('0x22')]);}_0x25d96c['order']=qs[_0xe976('0x3e')](_0x3c9122[_0xe976('0x35')]['sort']);_0x25d96c[_0xe976('0x3f')]=qs[_0xe976('0x40')](_[_0xe976('0x41')](_0x3c9122['query'],_0x37757d['filters']));if(_0x3c9122[_0xe976('0x35')]['filter']){_0x25d96c[_0xe976('0x3f')]=_[_0xe976('0x49')](_0x25d96c['where'],{'$or':_[_0xe976('0x34')](_0x25d96c[_0xe976('0x39')],function(_0x21529f){var _0x2f6543={};_0x2f6543[_0x21529f]={'$like':'%'+_0x3c9122['query']['filter']+'%'};return _0x2f6543;})});}_0x25d96c=_['merge']({},_0x25d96c,_0x3c9122['options']);var _0x1a0d51={'where':_0x25d96c[_0xe976('0x3f')]};return db[_0xe976('0x30')][_0xe976('0x25')](_0x1a0d51)[_0xe976('0x2a')](function(_0x8954ba){_0x440ade[_0xe976('0x25')]=_0x8954ba;if(_0x3c9122[_0xe976('0x35')]['includeAll']){_0x25d96c[_0xe976('0x46')]=[{'all':!![]}];}return db[_0xe976('0x30')][_0xe976('0x47')](_0x25d96c);})[_0xe976('0x2a')](function(_0xfaeda3){_0x440ade[_0xe976('0x52')]=_0xfaeda3;return _0x440ade;})[_0xe976('0x2a')](respondWithFilteredResult(_0x3956bc,_0x25d96c,_0xe976('0x51')))['catch'](handleError(_0x3956bc,null,_0xe976('0x51')));};
\ No newline at end of file
index f31a54d..b921ff8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfafe=['save','update','emit','hook','exports','events','../../mysqldb','VoiceQueueReport'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0xfafe,0x65));var _0xefaf=function(_0x31f8a0,_0x1e3391){_0x31f8a0=_0x31f8a0-0x0;var _0x319328=_0xfafe[_0x31f8a0];return _0x319328;};'use strict';var EventEmitter=require(_0xefaf('0x0'));var VoiceQueueReport=require(_0xefaf('0x1'))['db'][_0xefaf('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xefaf('0x3'),'afterUpdate':_0xefaf('0x4'),'afterDestroy':'remove'};function emitEvent(_0x4a4f86){return function(_0x7d8ce3,_0x248db6,_0x4a568d){VoiceQueueReportEvents[_0xefaf('0x5')](_0x4a4f86+':'+_0x7d8ce3['id'],_0x7d8ce3);VoiceQueueReportEvents[_0xefaf('0x5')](_0x4a4f86,_0x7d8ce3);_0x4a568d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport[_0xefaf('0x6')](e,emitEvent(event));}}module[_0xefaf('0x7')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0xe74e=['../../mysqldb','VoiceQueueReport','setMaxListeners','save','update','emit','exports'];(function(_0x330141,_0x1dd290){var _0x1b68a2=function(_0x4e7f3c){while(--_0x4e7f3c){_0x330141['push'](_0x330141['shift']());}};_0x1b68a2(++_0x1dd290);}(_0xe74e,0x188));var _0xee74=function(_0xfdfe03,_0x2aaa1e){_0xfdfe03=_0xfdfe03-0x0;var _0x58f88a=_0xe74e[_0xfdfe03];return _0x58f88a;};'use strict';var EventEmitter=require('events');var VoiceQueueReport=require(_0xee74('0x0'))['db'][_0xee74('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xee74('0x2')](0x0);var events={'afterCreate':_0xee74('0x3'),'afterUpdate':_0xee74('0x4'),'afterDestroy':'remove'};function emitEvent(_0x57f1aa){return function(_0x57040c,_0x141914,_0x1c774c){VoiceQueueReportEvents[_0xee74('0x5')](_0x57f1aa+':'+_0x57040c['id'],_0x57040c);VoiceQueueReportEvents[_0xee74('0x5')](_0x57f1aa,_0x57040c);_0x1c774c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0xee74('0x6')]=VoiceQueueReportEvents;
\ No newline at end of file
index 20df09a..95619c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ce6=['../../config/environment','./voiceQueueReport.attributes','exports','define','VoiceQueueReport','uniqueid','calleridnum','util','moment','bluebird','path'];(function(_0x476b00,_0x250877){var _0x44ec8e=function(_0xec6b23){while(--_0xec6b23){_0x476b00['push'](_0x476b00['shift']());}};_0x44ec8e(++_0x250877);}(_0x7ce6,0xe3));var _0x67ce=function(_0x37d7b2,_0x31a1b3){_0x37d7b2=_0x37d7b2-0x0;var _0x279fa7=_0x7ce6[_0x37d7b2];return _0x279fa7;};'use strict';var _=require('lodash');var util=require(_0x67ce('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x67ce('0x1'));var BPromise=require(_0x67ce('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x67ce('0x3'));var rimraf=require('rimraf');var config=require(_0x67ce('0x4'));var attributes=require(_0x67ce('0x5'));module[_0x67ce('0x6')]=function(_0x32c9f3,_0x10453c){return _0x32c9f3[_0x67ce('0x7')](_0x67ce('0x8'),attributes,{'tableName':'report_queue','paranoid':![],'indexes':[{'fields':[_0x67ce('0x9')]},{'fields':[_0x67ce('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0f5e=['bluebird','request-promise','rimraf','../../config/environment','./voiceQueueReport.attributes','exports','VoiceQueueReport','report_queue','uniqueid','lodash','util','../../config/logger','moment'];(function(_0x2635bf,_0x31f0a0){var _0x5edc0e=function(_0x174097){while(--_0x174097){_0x2635bf['push'](_0x2635bf['shift']());}};_0x5edc0e(++_0x31f0a0);}(_0x0f5e,0x1dd));var _0xe0f5=function(_0x5b331d,_0x4042f5){_0x5b331d=_0x5b331d-0x0;var _0x1d0547=_0x0f5e[_0x5b331d];return _0x1d0547;};'use strict';var _=require(_0xe0f5('0x0'));var util=require(_0xe0f5('0x1'));var logger=require(_0xe0f5('0x2'))('api');var moment=require(_0xe0f5('0x3'));var BPromise=require(_0xe0f5('0x4'));var rp=require(_0xe0f5('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe0f5('0x6'));var config=require(_0xe0f5('0x7'));var attributes=require(_0xe0f5('0x8'));module[_0xe0f5('0x9')]=function(_0x4db9aa,_0xde1889){return _0x4db9aa['define'](_0xe0f5('0xa'),attributes,{'tableName':_0xe0f5('0xb'),'paranoid':![],'indexes':[{'fields':[_0xe0f5('0xc')]},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
index 47bad6f..f836166 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ef8=['request\x20sent','debug','error','code','message','info','result','GetVoiceQueueReport','VoiceQueueReport','findAll','options','raw','where','attributes','limit','map','include','model','then','stringify','CreateVoiceQueueReport','body','catch','UpdateVoiceQueueReport','update','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','register','VoiceQueueReport,\x20%s,\x20%s'];(function(_0x30d749,_0x3f0518){var _0x36b854=function(_0x1aac59){while(--_0x1aac59){_0x30d749['push'](_0x30d749['shift']());}};_0x36b854(++_0x3f0518);}(_0x5ef8,0x9d));var _0x85ef=function(_0x530d94,_0x58dc9f){_0x530d94=_0x530d94-0x0;var _0x56123f=_0x5ef8[_0x530d94];return _0x56123f;};'use strict';var _=require(_0x85ef('0x0'));var util=require(_0x85ef('0x1'));var moment=require(_0x85ef('0x2'));var BPromise=require(_0x85ef('0x3'));var rs=require(_0x85ef('0x4'));var fs=require('fs');var Redis=require(_0x85ef('0x5'));var db=require(_0x85ef('0x6'))['db'];var utils=require(_0x85ef('0x7'));var logger=require(_0x85ef('0x8'))(_0x85ef('0x9'));var config=require(_0x85ef('0xa'));var jayson=require(_0x85ef('0xb'));var client=jayson[_0x85ef('0xc')]['http']({'port':0x232a});config[_0x85ef('0xd')]=_['defaults'](config['redis'],{'host':_0x85ef('0xe'),'port':0x18eb});var socket=require(_0x85ef('0xf'))(new Redis(config[_0x85ef('0xd')]));require(_0x85ef('0x10'))[_0x85ef('0x11')](socket);function respondWithRpcPromise(_0x1035da,_0x2c2e88,_0x3e91b6){return new BPromise(function(_0x33f499,_0x5a60c9){return client['request'](_0x1035da,_0x3e91b6)['then'](function(_0x22cdbc){logger['info'](_0x85ef('0x12'),_0x2c2e88,_0x85ef('0x13'));logger[_0x85ef('0x14')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x2c2e88,'request\x20sent',JSON['stringify'](_0x22cdbc));if(_0x22cdbc[_0x85ef('0x15')]){if(_0x22cdbc[_0x85ef('0x15')][_0x85ef('0x16')]===0x1f4){logger[_0x85ef('0x15')](_0x85ef('0x12'),_0x2c2e88,_0x22cdbc['error'][_0x85ef('0x17')]);return _0x5a60c9(_0x22cdbc[_0x85ef('0x15')]['message']);}logger[_0x85ef('0x15')]('VoiceQueueReport,\x20%s,\x20%s',_0x2c2e88,_0x22cdbc[_0x85ef('0x15')][_0x85ef('0x17')]);return _0x33f499(_0x22cdbc['error'][_0x85ef('0x17')]);}else{logger[_0x85ef('0x18')](_0x85ef('0x12'),_0x2c2e88,_0x85ef('0x13'));_0x33f499(_0x22cdbc[_0x85ef('0x19')][_0x85ef('0x17')]);}})['catch'](function(_0x5275c0){logger[_0x85ef('0x15')](_0x85ef('0x12'),_0x2c2e88,_0x5275c0);_0x5a60c9(_0x5275c0);});});}exports[_0x85ef('0x1a')]=function(_0x47ef3d){var _0x2149b8=this;return new Promise(function(_0x3abaa4,_0x20955d){return db[_0x85ef('0x1b')][_0x85ef('0x1c')]({'raw':_0x47ef3d[_0x85ef('0x1d')]?_0x47ef3d[_0x85ef('0x1d')][_0x85ef('0x1e')]===undefined?!![]:![]:!![],'where':_0x47ef3d['options']?_0x47ef3d[_0x85ef('0x1d')][_0x85ef('0x1f')]||null:null,'attributes':_0x47ef3d[_0x85ef('0x1d')]?_0x47ef3d[_0x85ef('0x1d')][_0x85ef('0x20')]||null:null,'limit':_0x47ef3d['options']?_0x47ef3d[_0x85ef('0x1d')][_0x85ef('0x21')]||null:null,'include':_0x47ef3d['options']?_0x47ef3d['options']['include']?_[_0x85ef('0x22')](_0x47ef3d[_0x85ef('0x1d')][_0x85ef('0x23')],function(_0x31b1e2){return{'model':db[_0x31b1e2[_0x85ef('0x24')]],'as':_0x31b1e2['as'],'attributes':_0x31b1e2['attributes'],'include':_0x31b1e2['include']?_[_0x85ef('0x22')](_0x31b1e2[_0x85ef('0x23')],function(_0x33af51){return{'model':db[_0x33af51[_0x85ef('0x24')]],'as':_0x33af51['as'],'attributes':_0x33af51[_0x85ef('0x20')],'include':_0x33af51['include']?_['map'](_0x33af51[_0x85ef('0x23')],function(_0x53cc6e){return{'model':db[_0x53cc6e[_0x85ef('0x24')]],'as':_0x53cc6e['as'],'attributes':_0x53cc6e[_0x85ef('0x20')]};}):[]};}):[]};}):[]:[]})[_0x85ef('0x25')](function(_0x4d438e){logger['info'](_0x85ef('0x1a'),_0x47ef3d);logger[_0x85ef('0x14')](_0x85ef('0x1a'),_0x47ef3d,JSON[_0x85ef('0x26')](_0x4d438e));_0x3abaa4(_0x4d438e);})['catch'](function(_0x27bc8c){logger[_0x85ef('0x15')](_0x85ef('0x1a'),_0x27bc8c[_0x85ef('0x17')],_0x47ef3d);_0x20955d(_0x2149b8[_0x85ef('0x15')](0x1f4,_0x27bc8c[_0x85ef('0x17')]));});});};exports[_0x85ef('0x27')]=function(_0x4668ca){var _0x47c719=this;return new Promise(function(_0x61aa2c,_0x284eca){return db[_0x85ef('0x1b')]['create'](_0x4668ca[_0x85ef('0x28')],{'raw':_0x4668ca[_0x85ef('0x1d')]?_0x4668ca[_0x85ef('0x1d')][_0x85ef('0x1e')]===undefined?!![]:![]:!![]})[_0x85ef('0x25')](function(_0x50ba4f){logger[_0x85ef('0x18')](_0x85ef('0x27'),_0x4668ca);logger['debug'](_0x85ef('0x27'),_0x4668ca,JSON[_0x85ef('0x26')](_0x50ba4f));_0x61aa2c(_0x50ba4f);})[_0x85ef('0x29')](function(_0x49d8af){logger[_0x85ef('0x15')]('CreateVoiceQueueReport',_0x49d8af[_0x85ef('0x17')],_0x4668ca);_0x284eca(_0x47c719[_0x85ef('0x15')](0x1f4,_0x49d8af['message']));});});};exports[_0x85ef('0x2a')]=function(_0xdee021){var _0x5d96c9=this;return new Promise(function(_0x19c26b,_0x138226){return db[_0x85ef('0x1b')][_0x85ef('0x2b')](_0xdee021[_0x85ef('0x28')],{'raw':_0xdee021[_0x85ef('0x1d')]?_0xdee021[_0x85ef('0x1d')][_0x85ef('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xdee021[_0x85ef('0x1d')]?_0xdee021[_0x85ef('0x1d')][_0x85ef('0x1f')]||null:null,'attributes':_0xdee021['options']?_0xdee021[_0x85ef('0x1d')][_0x85ef('0x20')]||null:null,'limit':_0xdee021[_0x85ef('0x1d')]?_0xdee021[_0x85ef('0x1d')][_0x85ef('0x21')]||null:null})[_0x85ef('0x25')](function(_0x8d4b11){logger[_0x85ef('0x18')](_0x85ef('0x2a'),_0xdee021);logger[_0x85ef('0x14')](_0x85ef('0x2a'),_0xdee021,JSON['stringify'](_0x8d4b11));_0x19c26b(_0x8d4b11);})[_0x85ef('0x29')](function(_0x534acf){logger[_0x85ef('0x15')](_0x85ef('0x2a'),_0x534acf['message'],_0xdee021);_0x138226(_0x5d96c9[_0x85ef('0x15')](0x1f4,_0x534acf[_0x85ef('0x17')]));});});};
\ No newline at end of file
+var _0xb202=['findAll','options','raw','where','attributes','limit','map','include','model','CreateVoiceQueueReport','body','UpdateVoiceQueueReport','update','stringify','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','register','request','then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetVoiceQueueReport','VoiceQueueReport'];(function(_0x1c25a6,_0xd4339d){var _0x5c58ff=function(_0x437096){while(--_0x437096){_0x1c25a6['push'](_0x1c25a6['shift']());}};_0x5c58ff(++_0xd4339d);}(_0xb202,0x104));var _0x2b20=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xb202[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0x2b20('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x2b20('0x1'));var rs=require(_0x2b20('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2b20('0x3'))['db'];var utils=require(_0x2b20('0x4'));var logger=require(_0x2b20('0x5'))(_0x2b20('0x6'));var config=require(_0x2b20('0x7'));var jayson=require(_0x2b20('0x8'));var client=jayson['client'][_0x2b20('0x9')]({'port':0x232a});config[_0x2b20('0xa')]=_['defaults'](config['redis'],{'host':_0x2b20('0xb'),'port':0x18eb});var socket=require(_0x2b20('0xc'))(new Redis(config['redis']));require('./voiceQueueReport.socket')[_0x2b20('0xd')](socket);function respondWithRpcPromise(_0x4dea49,_0x22e8b9,_0x1cdf1a){return new BPromise(function(_0x1b83ad,_0x116156){return client[_0x2b20('0xe')](_0x4dea49,_0x1cdf1a)[_0x2b20('0xf')](function(_0x3bcb67){logger[_0x2b20('0x10')](_0x2b20('0x11'),_0x22e8b9,_0x2b20('0x12'));logger[_0x2b20('0x13')](_0x2b20('0x14'),_0x22e8b9,_0x2b20('0x12'),JSON['stringify'](_0x3bcb67));if(_0x3bcb67[_0x2b20('0x15')]){if(_0x3bcb67['error'][_0x2b20('0x16')]===0x1f4){logger['error'](_0x2b20('0x11'),_0x22e8b9,_0x3bcb67[_0x2b20('0x15')][_0x2b20('0x17')]);return _0x116156(_0x3bcb67[_0x2b20('0x15')]['message']);}logger['error'](_0x2b20('0x11'),_0x22e8b9,_0x3bcb67[_0x2b20('0x15')]['message']);return _0x1b83ad(_0x3bcb67[_0x2b20('0x15')]['message']);}else{logger[_0x2b20('0x10')](_0x2b20('0x11'),_0x22e8b9,_0x2b20('0x12'));_0x1b83ad(_0x3bcb67['result'][_0x2b20('0x17')]);}})[_0x2b20('0x18')](function(_0x3c3be9){logger[_0x2b20('0x15')](_0x2b20('0x11'),_0x22e8b9,_0x3c3be9);_0x116156(_0x3c3be9);});});}exports[_0x2b20('0x19')]=function(_0x45172c){var _0x46386b=this;return new Promise(function(_0x2dda39,_0x2722a9){return db[_0x2b20('0x1a')][_0x2b20('0x1b')]({'raw':_0x45172c[_0x2b20('0x1c')]?_0x45172c[_0x2b20('0x1c')][_0x2b20('0x1d')]===undefined?!![]:![]:!![],'where':_0x45172c[_0x2b20('0x1c')]?_0x45172c[_0x2b20('0x1c')][_0x2b20('0x1e')]||null:null,'attributes':_0x45172c[_0x2b20('0x1c')]?_0x45172c[_0x2b20('0x1c')][_0x2b20('0x1f')]||null:null,'limit':_0x45172c[_0x2b20('0x1c')]?_0x45172c[_0x2b20('0x1c')][_0x2b20('0x20')]||null:null,'include':_0x45172c['options']?_0x45172c[_0x2b20('0x1c')]['include']?_[_0x2b20('0x21')](_0x45172c[_0x2b20('0x1c')][_0x2b20('0x22')],function(_0x12e1a7){return{'model':db[_0x12e1a7[_0x2b20('0x23')]],'as':_0x12e1a7['as'],'attributes':_0x12e1a7[_0x2b20('0x1f')],'include':_0x12e1a7[_0x2b20('0x22')]?_[_0x2b20('0x21')](_0x12e1a7[_0x2b20('0x22')],function(_0x1f69ff){return{'model':db[_0x1f69ff['model']],'as':_0x1f69ff['as'],'attributes':_0x1f69ff[_0x2b20('0x1f')],'include':_0x1f69ff[_0x2b20('0x22')]?_[_0x2b20('0x21')](_0x1f69ff[_0x2b20('0x22')],function(_0xb8b14c){return{'model':db[_0xb8b14c['model']],'as':_0xb8b14c['as'],'attributes':_0xb8b14c[_0x2b20('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x2b20('0xf')](function(_0x3812e6){logger[_0x2b20('0x10')](_0x2b20('0x19'),_0x45172c);logger['debug'](_0x2b20('0x19'),_0x45172c,JSON['stringify'](_0x3812e6));_0x2dda39(_0x3812e6);})['catch'](function(_0x5f3df1){logger[_0x2b20('0x15')](_0x2b20('0x19'),_0x5f3df1['message'],_0x45172c);_0x2722a9(_0x46386b['error'](0x1f4,_0x5f3df1['message']));});});};exports[_0x2b20('0x24')]=function(_0x1cd344){var _0x575b4e=this;return new Promise(function(_0xa6fbc4,_0x224ae1){return db[_0x2b20('0x1a')]['create'](_0x1cd344[_0x2b20('0x25')],{'raw':_0x1cd344['options']?_0x1cd344['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x59771d){logger[_0x2b20('0x10')]('CreateVoiceQueueReport',_0x1cd344);logger[_0x2b20('0x13')]('CreateVoiceQueueReport',_0x1cd344,JSON['stringify'](_0x59771d));_0xa6fbc4(_0x59771d);})[_0x2b20('0x18')](function(_0x6963b1){logger['error'](_0x2b20('0x24'),_0x6963b1[_0x2b20('0x17')],_0x1cd344);_0x224ae1(_0x575b4e[_0x2b20('0x15')](0x1f4,_0x6963b1[_0x2b20('0x17')]));});});};exports[_0x2b20('0x26')]=function(_0x3d2b8d){var _0x1f8e20=this;return new Promise(function(_0xb9a5b4,_0x1726bc){return db[_0x2b20('0x1a')][_0x2b20('0x27')](_0x3d2b8d[_0x2b20('0x25')],{'raw':_0x3d2b8d[_0x2b20('0x1c')]?_0x3d2b8d[_0x2b20('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3d2b8d['options']?_0x3d2b8d[_0x2b20('0x1c')]['where']||null:null,'attributes':_0x3d2b8d['options']?_0x3d2b8d[_0x2b20('0x1c')][_0x2b20('0x1f')]||null:null,'limit':_0x3d2b8d[_0x2b20('0x1c')]?_0x3d2b8d[_0x2b20('0x1c')][_0x2b20('0x20')]||null:null})[_0x2b20('0xf')](function(_0x2aaf32){logger[_0x2b20('0x10')]('UpdateVoiceQueueReport',_0x3d2b8d);logger[_0x2b20('0x13')](_0x2b20('0x26'),_0x3d2b8d,JSON[_0x2b20('0x28')](_0x2aaf32));_0xb9a5b4(_0x2aaf32);})[_0x2b20('0x18')](function(_0x1deed3){logger[_0x2b20('0x15')](_0x2b20('0x26'),_0x1deed3[_0x2b20('0x17')],_0x3d2b8d);_0x1726bc(_0x1f8e20[_0x2b20('0x15')](0x1f4,_0x1deed3['message']));});});};
\ No newline at end of file
index f0d376f..c8ac846 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0eab=['save','remove','update','emit','register','length','./voiceQueueReport.events'];(function(_0xb5d5ca,_0x365b89){var _0x524c7d=function(_0x267ed3){while(--_0x267ed3){_0xb5d5ca['push'](_0xb5d5ca['shift']());}};_0x524c7d(++_0x365b89);}(_0x0eab,0x1d4));var _0xb0ea=function(_0x208d59,_0x1ad7a7){_0x208d59=_0x208d59-0x0;var _0x3c3ae0=_0x0eab[_0x208d59];return _0x3c3ae0;};'use strict';var VoiceQueueReportEvents=require(_0xb0ea('0x0'));var events=[_0xb0ea('0x1'),_0xb0ea('0x2'),_0xb0ea('0x3')];function createListener(_0x419942,_0x32fc0f){return function(_0x2b4b1c){_0x32fc0f[_0xb0ea('0x4')](_0x419942,_0x2b4b1c);};}function removeListener(_0x24a827,_0x663143){return function(){VoiceQueueReportEvents['removeListener'](_0x24a827,_0x663143);};}exports[_0xb0ea('0x5')]=function(_0x721c00){for(var _0x251758=0x0,_0x136b87=events[_0xb0ea('0x6')];_0x251758<_0x136b87;_0x251758++){var _0x5d3174=events[_0x251758];var _0x1d045f=createListener('voiceQueueReport:'+_0x5d3174,_0x721c00);VoiceQueueReportEvents['on'](_0x5d3174,_0x1d045f);}};
\ No newline at end of file
+var _0x0bde=['save','update','emit','removeListener','register','length','voiceQueueReport:'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0bde,0xe7));var _0xe0bd=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0bde[_0x321bb2];return _0x9c12ed;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0xe0bd('0x0'),'remove',_0xe0bd('0x1')];function createListener(_0x3dc984,_0x1d8922){return function(_0x1e198a){_0x1d8922[_0xe0bd('0x2')](_0x3dc984,_0x1e198a);};}function removeListener(_0x5541b9,_0x34df88){return function(){VoiceQueueReportEvents[_0xe0bd('0x3')](_0x5541b9,_0x34df88);};}exports[_0xe0bd('0x4')]=function(_0x3b712a){for(var _0x22bfd1=0x0,_0x26393f=events[_0xe0bd('0x5')];_0x22bfd1<_0x26393f;_0x22bfd1++){var _0x491dc7=events[_0x22bfd1];var _0x40b36a=createListener(_0xe0bd('0x6')+_0x491dc7,_0x3b712a);VoiceQueueReportEvents['on'](_0x491dc7,_0x40b36a);}};
\ No newline at end of file
index 015d56b..c92d2e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabc7=['isAuthenticated','create','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','show','post'];(function(_0x520ec5,_0x293c71){var _0x2a383d=function(_0x368984){while(--_0x368984){_0x520ec5['push'](_0x520ec5['shift']());}};_0x2a383d(++_0x293c71);}(_0xabc7,0x77));var _0x7abc=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xabc7[_0x501510];return _0x1e6ee5;};'use strict';var multer=require(_0x7abc('0x0'));var util=require(_0x7abc('0x1'));var path=require(_0x7abc('0x2'));var timeout=require(_0x7abc('0x3'));var express=require(_0x7abc('0x4'));var router=express['Router']();var fs_extra=require(_0x7abc('0x5'));var auth=require(_0x7abc('0x6'));var interaction=require(_0x7abc('0x7'));var config=require(_0x7abc('0x8'));var controller=require('./voiceQueuesLog.controller');router[_0x7abc('0x9')]('/',auth['isAuthenticated'](),controller[_0x7abc('0xa')]);router[_0x7abc('0x9')](_0x7abc('0xb'),auth['isAuthenticated'](),controller[_0x7abc('0xc')]);router[_0x7abc('0xd')]('/',auth[_0x7abc('0xe')](),controller[_0x7abc('0xf')]);router['put'](_0x7abc('0xb'),auth[_0x7abc('0xe')](),controller[_0x7abc('0x10')]);router[_0x7abc('0x11')](_0x7abc('0xb'),auth[_0x7abc('0xe')](),controller['destroy']);module[_0x7abc('0x12')]=router;
\ No newline at end of file
+var _0x4e20=['./voiceQueuesLog.controller','index','get','/:id','isAuthenticated','show','create','put','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0x4e20,0x173));var _0x04e2=function(_0xf26c2e,_0x56c3ea){_0xf26c2e=_0xf26c2e-0x0;var _0x46ecb4=_0x4e20[_0xf26c2e];return _0x46ecb4;};'use strict';var multer=require(_0x04e2('0x0'));var util=require(_0x04e2('0x1'));var path=require(_0x04e2('0x2'));var timeout=require(_0x04e2('0x3'));var express=require('express');var router=express[_0x04e2('0x4')]();var fs_extra=require(_0x04e2('0x5'));var auth=require(_0x04e2('0x6'));var interaction=require(_0x04e2('0x7'));var config=require(_0x04e2('0x8'));var controller=require(_0x04e2('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x04e2('0xa')]);router[_0x04e2('0xb')](_0x04e2('0xc'),auth[_0x04e2('0xd')](),controller[_0x04e2('0xe')]);router['post']('/',auth[_0x04e2('0xd')](),controller[_0x04e2('0xf')]);router[_0x04e2('0x10')]('/:id',auth[_0x04e2('0xd')](),controller['update']);router[_0x04e2('0x11')](_0x04e2('0xc'),auth[_0x04e2('0xd')](),controller[_0x04e2('0x12')]);module[_0x04e2('0x13')]=router;
\ No newline at end of file
index 6c872af..2a8cb03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24fe=['YYYY-MM-DD\x20HH:mm:ss','sequelize','moment','exports','STRING','DATE','format'];(function(_0x22a443,_0xc47c8e){var _0x310537=function(_0xcd536d){while(--_0xcd536d){_0x22a443['push'](_0x22a443['shift']());}};_0x310537(++_0xc47c8e);}(_0x24fe,0xef));var _0xe24f=function(_0x402f42,_0x5d3d08){_0x402f42=_0x402f42-0x0;var _0x2d3cf8=_0x24fe[_0x402f42];return _0x2d3cf8;};'use strict';var Sequelize=require(_0xe24f('0x0'));var moment=require(_0xe24f('0x1'));module[_0xe24f('0x2')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xe24f('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xe24f('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xe24f('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xe24f('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xe24f('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xe24f('0x4')],'allowNull':![],'defaultValue':moment()[_0xe24f('0x5')](_0xe24f('0x6'))}};
\ No newline at end of file
+var _0x4759=['exports','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','sequelize','moment'];(function(_0x47cde9,_0x19d013){var _0x26fdf1=function(_0x32fb69){while(--_0x32fb69){_0x47cde9['push'](_0x47cde9['shift']());}};_0x26fdf1(++_0x19d013);}(_0x4759,0x171));var _0x9475=function(_0x3e6b2f,_0x1ffa07){_0x3e6b2f=_0x3e6b2f-0x0;var _0x323215=_0x4759[_0x3e6b2f];return _0x323215;};'use strict';var Sequelize=require(_0x9475('0x0'));var moment=require(_0x9475('0x1'));module[_0x9475('0x2')]={'time':{'type':Sequelize[_0x9475('0x3')]},'callid':{'type':Sequelize[_0x9475('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x9475('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x9475('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x9475('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x9475('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x9475('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x9475('0x4')],'allowNull':![],'defaultValue':moment()[_0x9475('0x5')](_0x9475('0x6'))}};
\ No newline at end of file
index 8b6ac0c..dc16f7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cf5=['count','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','VoiceQueuesLog','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','params','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','util','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit'];(function(_0x24bed0,_0x2519fa){var _0x3df76a=function(_0x1c94f8){while(--_0x1c94f8){_0x24bed0['push'](_0x24bed0['shift']());}};_0x3df76a(++_0x2519fa);}(_0x8cf5,0xfc));var _0x58cf=function(_0x1582be,_0x1fa1d5){_0x1582be=_0x1582be-0x0;var _0x246f4d=_0x8cf5[_0x1582be];return _0x246f4d;};'use strict';var emlformat=require(_0x58cf('0x0'));var rimraf=require(_0x58cf('0x1'));var zipdir=require(_0x58cf('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x58cf('0x3'));var moment=require(_0x58cf('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x58cf('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x58cf('0x6'));var ejs=require(_0x58cf('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x58cf('0x8'));var crypto=require('crypto');var jsforce=require(_0x58cf('0x9'));var deskjs=require(_0x58cf('0xa'));var toCsv=require('to-csv');var querystring=require(_0x58cf('0xb'));var Papa=require(_0x58cf('0xc'));var Redis=require(_0x58cf('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x58cf('0xe'));var hardwareService=require(_0x58cf('0xf'));var logger=require(_0x58cf('0x10'))(_0x58cf('0x11'));var utils=require('../../config/utils');var config=require(_0x58cf('0x12'));var licenseUtil=require(_0x58cf('0x13'));var db=require(_0x58cf('0x14'))['db'];function respondWithStatusCode(_0x12731b,_0x22e757){_0x22e757=_0x22e757||0xcc;return function(_0x2c20bb){if(_0x2c20bb){return _0x12731b[_0x58cf('0x15')](_0x22e757);}return _0x12731b[_0x58cf('0x16')](_0x22e757)[_0x58cf('0x17')]();};}function respondWithResult(_0x3a1088,_0x1caeb4){_0x1caeb4=_0x1caeb4||0xc8;return function(_0x383a32){if(_0x383a32){return _0x3a1088['status'](_0x1caeb4)[_0x58cf('0x18')](_0x383a32);}};}function respondWithFilteredResult(_0x2b2b69,_0x21a63a){return function(_0x3a55ce){if(_0x3a55ce){var _0x17a489=typeof _0x21a63a[_0x58cf('0x19')]===_0x58cf('0x1a')&&typeof _0x21a63a[_0x58cf('0x1b')]===_0x58cf('0x1a');var _0x361b9b=_0x3a55ce[_0x58cf('0x1c')];var _0x597ba7=_0x17a489?0x0:_0x21a63a[_0x58cf('0x19')];var _0x53da50=_0x17a489?_0x3a55ce[_0x58cf('0x1c')]:_0x21a63a[_0x58cf('0x19')]+_0x21a63a[_0x58cf('0x1b')];var _0x2776ed;if(_0x53da50>=_0x361b9b){_0x53da50=_0x361b9b;_0x2776ed=0xc8;}else{_0x2776ed=0xce;}_0x2b2b69[_0x58cf('0x16')](_0x2776ed);return _0x2b2b69[_0x58cf('0x1d')]('Content-Range',_0x597ba7+'-'+_0x53da50+'/'+_0x361b9b)['json'](_0x3a55ce);}return null;};}function patchUpdates(_0x554378){return function(_0x253a61){try{jsonpatch[_0x58cf('0x1e')](_0x253a61,_0x554378,!![]);}catch(_0x441333){return BPromise[_0x58cf('0x1f')](_0x441333);}return _0x253a61[_0x58cf('0x20')]();};}function saveUpdates(_0x4ad278,_0x1a7e45){return function(_0x3ca4a9){if(_0x3ca4a9){return _0x3ca4a9[_0x58cf('0x21')](_0x4ad278)[_0x58cf('0x22')](function(_0x1e45a4){return _0x1e45a4;});}return null;};}function removeEntity(_0x535f82,_0x238760){return function(_0x5bdc63){if(_0x5bdc63){return _0x5bdc63[_0x58cf('0x23')]()[_0x58cf('0x22')](function(){_0x535f82[_0x58cf('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x336619,_0x82e16f){return function(_0x36f42f){if(!_0x36f42f){_0x336619[_0x58cf('0x15')](0x194);}return _0x36f42f;};}function handleError(_0x384b91,_0x451dc3){_0x451dc3=_0x451dc3||0x1f4;return function(_0x34647e){logger[_0x58cf('0x24')](_0x34647e[_0x58cf('0x25')]);if(_0x34647e[_0x58cf('0x26')]){delete _0x34647e[_0x58cf('0x26')];}_0x384b91['status'](_0x451dc3)[_0x58cf('0x27')](_0x34647e);};}exports[_0x58cf('0x28')]=function(_0x255c58,_0x480457){var _0xab4c1b={},_0x1f3b2e={},_0x145c9c={'count':0x0,'rows':[]};var _0x2f4f62=_[_0x58cf('0x29')](db[_0x58cf('0x2a')][_0x58cf('0x2b')],function(_0x4c5e63){return{'name':_0x4c5e63[_0x58cf('0x2c')],'type':_0x4c5e63[_0x58cf('0x2d')][_0x58cf('0x2e')]};});_0x1f3b2e[_0x58cf('0x2f')]=_[_0x58cf('0x29')](_0x2f4f62,'name');_0x1f3b2e['query']=_[_0x58cf('0x30')](_0x255c58[_0x58cf('0x31')]);_0x1f3b2e[_0x58cf('0x32')]=_[_0x58cf('0x33')](_0x1f3b2e[_0x58cf('0x2f')],_0x1f3b2e[_0x58cf('0x31')]);_0xab4c1b[_0x58cf('0x34')]=_[_0x58cf('0x33')](_0x1f3b2e['model'],qs[_0x58cf('0x35')](_0x255c58[_0x58cf('0x31')][_0x58cf('0x35')]));_0xab4c1b[_0x58cf('0x34')]=_0xab4c1b[_0x58cf('0x34')][_0x58cf('0x36')]?_0xab4c1b['attributes']:_0x1f3b2e[_0x58cf('0x2f')];if(!_0x255c58['query'][_0x58cf('0x37')]('nolimit')){_0xab4c1b[_0x58cf('0x1b')]=qs[_0x58cf('0x1b')](_0x255c58['query']['limit']);_0xab4c1b[_0x58cf('0x19')]=qs[_0x58cf('0x19')](_0x255c58[_0x58cf('0x31')][_0x58cf('0x19')]);}_0xab4c1b['order']=qs['sort'](_0x255c58[_0x58cf('0x31')]['sort']);_0xab4c1b['where']=qs[_0x58cf('0x32')](_[_0x58cf('0x38')](_0x255c58[_0x58cf('0x31')],_0x1f3b2e[_0x58cf('0x32')]),_0x2f4f62);if(_0x255c58[_0x58cf('0x31')][_0x58cf('0x39')]){_0xab4c1b[_0x58cf('0x3a')]=_[_0x58cf('0x3b')](_0xab4c1b['where'],{'$or':_['map'](_0x2f4f62,function(_0x525532){if(_0x525532[_0x58cf('0x2d')]!==_0x58cf('0x3c')){var _0x4cab41={};_0x4cab41[_0x525532['name']]={'$like':'%'+_0x255c58[_0x58cf('0x31')]['filter']+'%'};return _0x4cab41;}})});}_0xab4c1b=_[_0x58cf('0x3b')]({},_0xab4c1b,_0x255c58['options']);var _0x35cc79={'where':_0xab4c1b['where']};return db[_0x58cf('0x2a')]['count'](_0x35cc79)[_0x58cf('0x22')](function(_0x87fa5c){_0x145c9c[_0x58cf('0x1c')]=_0x87fa5c;if(_0x255c58['query'][_0x58cf('0x3d')]){_0xab4c1b[_0x58cf('0x3e')]=[{'all':!![]}];}return db[_0x58cf('0x2a')][_0x58cf('0x3f')](_0xab4c1b);})[_0x58cf('0x22')](function(_0x568992){_0x145c9c[_0x58cf('0x40')]=_0x568992;return _0x145c9c;})['then'](respondWithFilteredResult(_0x480457,_0xab4c1b))[_0x58cf('0x41')](handleError(_0x480457,null));};exports['show']=function(_0x5846be,_0x5c9b03){var _0x59d4e9={'raw':!![],'where':{'id':_0x5846be[_0x58cf('0x42')]['id']}},_0x57cc40={};_0x57cc40[_0x58cf('0x2f')]=_[_0x58cf('0x30')](db[_0x58cf('0x2a')]['rawAttributes']);_0x57cc40[_0x58cf('0x31')]=_['keys'](_0x5846be['query']);_0x57cc40[_0x58cf('0x32')]=_[_0x58cf('0x33')](_0x57cc40[_0x58cf('0x2f')],_0x57cc40[_0x58cf('0x31')]);_0x59d4e9[_0x58cf('0x34')]=_[_0x58cf('0x33')](_0x57cc40[_0x58cf('0x2f')],qs[_0x58cf('0x35')](_0x5846be['query'][_0x58cf('0x35')]));_0x59d4e9[_0x58cf('0x34')]=_0x59d4e9[_0x58cf('0x34')]['length']?_0x59d4e9[_0x58cf('0x34')]:_0x57cc40[_0x58cf('0x2f')];if(_0x5846be[_0x58cf('0x31')][_0x58cf('0x3d')]){_0x59d4e9['include']=[{'all':!![]}];}_0x59d4e9=_[_0x58cf('0x3b')]({},_0x59d4e9,_0x5846be['options']);return db[_0x58cf('0x2a')][_0x58cf('0x43')](_0x59d4e9)['then'](handleEntityNotFound(_0x5c9b03,null))[_0x58cf('0x22')](respondWithResult(_0x5c9b03,null))[_0x58cf('0x41')](handleError(_0x5c9b03,null));};exports[_0x58cf('0x44')]=function(_0x2d61d9,_0x505b41){return db['VoiceQueuesLog'][_0x58cf('0x44')](_0x2d61d9['body'],{})[_0x58cf('0x22')](respondWithResult(_0x505b41,0xc9))[_0x58cf('0x41')](handleError(_0x505b41,null));};exports['update']=function(_0x4ade85,_0x35b8f5){if(_0x4ade85[_0x58cf('0x45')]['id']){delete _0x4ade85[_0x58cf('0x45')]['id'];}return db[_0x58cf('0x2a')][_0x58cf('0x43')]({'where':{'id':_0x4ade85['params']['id']}})['then'](handleEntityNotFound(_0x35b8f5,null))[_0x58cf('0x22')](saveUpdates(_0x4ade85[_0x58cf('0x45')],null))['then'](respondWithResult(_0x35b8f5,null))[_0x58cf('0x41')](handleError(_0x35b8f5,null));};exports[_0x58cf('0x23')]=function(_0x4f66c5,_0x54407d){return db[_0x58cf('0x2a')]['find']({'where':{'id':_0x4f66c5[_0x58cf('0x42')]['id']}})[_0x58cf('0x22')](handleEntityNotFound(_0x54407d,null))[_0x58cf('0x22')](removeEntity(_0x54407d,null))['catch'](handleError(_0x54407d,null));};
\ No newline at end of file
+var _0x9386=['order','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','include','create','body','find','destroy','eml-format','rimraf','zip-dir','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','VoiceQueuesLog','rawAttributes','fieldName','type','key','query','intersection','model','fields','attributes','length','hasOwnProperty','nolimit'];(function(_0x46bd83,_0x56585b){var _0x3e4195=function(_0x72caed){while(--_0x72caed){_0x46bd83['push'](_0x46bd83['shift']());}};_0x3e4195(++_0x56585b);}(_0x9386,0x159));var _0x6938=function(_0x26a519,_0x3486c4){_0x26a519=_0x26a519-0x0;var _0x5caad7=_0x9386[_0x26a519];return _0x5caad7;};'use strict';var emlformat=require(_0x6938('0x0'));var rimraf=require(_0x6938('0x1'));var zipdir=require(_0x6938('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x6938('0x3'));var util=require(_0x6938('0x4'));var path=require(_0x6938('0x5'));var sox=require('sox');var csv=require(_0x6938('0x6'));var ejs=require(_0x6938('0x7'));var fs=require('fs');var fs_extra=require(_0x6938('0x8'));var _=require(_0x6938('0x9'));var squel=require(_0x6938('0xa'));var crypto=require(_0x6938('0xb'));var jsforce=require(_0x6938('0xc'));var deskjs=require(_0x6938('0xd'));var toCsv=require(_0x6938('0x6'));var querystring=require(_0x6938('0xe'));var Papa=require(_0x6938('0xf'));var Redis=require('ioredis');var authService=require(_0x6938('0x10'));var qs=require(_0x6938('0x11'));var as=require(_0x6938('0x12'));var hardwareService=require(_0x6938('0x13'));var logger=require(_0x6938('0x14'))(_0x6938('0x15'));var utils=require(_0x6938('0x16'));var config=require(_0x6938('0x17'));var licenseUtil=require(_0x6938('0x18'));var db=require(_0x6938('0x19'))['db'];function respondWithStatusCode(_0x2f7737,_0x14d59a){_0x14d59a=_0x14d59a||0xcc;return function(_0x3133f8){if(_0x3133f8){return _0x2f7737[_0x6938('0x1a')](_0x14d59a);}return _0x2f7737[_0x6938('0x1b')](_0x14d59a)[_0x6938('0x1c')]();};}function respondWithResult(_0x5c3d47,_0x2db9c5){_0x2db9c5=_0x2db9c5||0xc8;return function(_0xa3f9fd){if(_0xa3f9fd){return _0x5c3d47[_0x6938('0x1b')](_0x2db9c5)[_0x6938('0x1d')](_0xa3f9fd);}};}function respondWithFilteredResult(_0x2e0025,_0xa31d15){return function(_0x269fbb){if(_0x269fbb){var _0x39802b=typeof _0xa31d15['offset']===_0x6938('0x1e')&&typeof _0xa31d15[_0x6938('0x1f')]===_0x6938('0x1e');var _0x3a0b96=_0x269fbb[_0x6938('0x20')];var _0x3a8e71=_0x39802b?0x0:_0xa31d15[_0x6938('0x21')];var _0x5419d2=_0x39802b?_0x269fbb['count']:_0xa31d15[_0x6938('0x21')]+_0xa31d15[_0x6938('0x1f')];var _0x4ec5f4;if(_0x5419d2>=_0x3a0b96){_0x5419d2=_0x3a0b96;_0x4ec5f4=0xc8;}else{_0x4ec5f4=0xce;}_0x2e0025['status'](_0x4ec5f4);return _0x2e0025[_0x6938('0x22')](_0x6938('0x23'),_0x3a8e71+'-'+_0x5419d2+'/'+_0x3a0b96)[_0x6938('0x1d')](_0x269fbb);}return null;};}function patchUpdates(_0x439be8){return function(_0x36cbec){try{jsonpatch[_0x6938('0x24')](_0x36cbec,_0x439be8,!![]);}catch(_0x1bfcd1){return BPromise[_0x6938('0x25')](_0x1bfcd1);}return _0x36cbec[_0x6938('0x26')]();};}function saveUpdates(_0x4e3260,_0x5e7f7e){return function(_0x5cbecc){if(_0x5cbecc){return _0x5cbecc[_0x6938('0x27')](_0x4e3260)['then'](function(_0x39d12e){return _0x39d12e;});}return null;};}function removeEntity(_0x43b504,_0x2efe36){return function(_0x34ec36){if(_0x34ec36){return _0x34ec36['destroy']()[_0x6938('0x28')](function(){_0x43b504['status'](0xcc)[_0x6938('0x1c')]();});}};}function handleEntityNotFound(_0x5a2ae0,_0x25d079){return function(_0x52fcbf){if(!_0x52fcbf){_0x5a2ae0['sendStatus'](0x194);}return _0x52fcbf;};}function handleError(_0x66b9ad,_0x3ca27c){_0x3ca27c=_0x3ca27c||0x1f4;return function(_0x10cdcb){logger[_0x6938('0x29')](_0x10cdcb[_0x6938('0x2a')]);if(_0x10cdcb[_0x6938('0x2b')]){delete _0x10cdcb[_0x6938('0x2b')];}_0x66b9ad['status'](_0x3ca27c)[_0x6938('0x2c')](_0x10cdcb);};}exports[_0x6938('0x2d')]=function(_0x122c18,_0x394286){var _0xd93427={},_0x36560f={},_0x4e0de2={'count':0x0,'rows':[]};var _0x59c954=_[_0x6938('0x2e')](db[_0x6938('0x2f')][_0x6938('0x30')],function(_0x468aca){return{'name':_0x468aca[_0x6938('0x31')],'type':_0x468aca[_0x6938('0x32')][_0x6938('0x33')]};});_0x36560f['model']=_[_0x6938('0x2e')](_0x59c954,_0x6938('0x2b'));_0x36560f[_0x6938('0x34')]=_['keys'](_0x122c18[_0x6938('0x34')]);_0x36560f['filters']=_[_0x6938('0x35')](_0x36560f[_0x6938('0x36')],_0x36560f[_0x6938('0x34')]);_0xd93427['attributes']=_['intersection'](_0x36560f[_0x6938('0x36')],qs[_0x6938('0x37')](_0x122c18[_0x6938('0x34')]['fields']));_0xd93427[_0x6938('0x38')]=_0xd93427[_0x6938('0x38')][_0x6938('0x39')]?_0xd93427[_0x6938('0x38')]:_0x36560f[_0x6938('0x36')];if(!_0x122c18['query'][_0x6938('0x3a')](_0x6938('0x3b'))){_0xd93427[_0x6938('0x1f')]=qs[_0x6938('0x1f')](_0x122c18[_0x6938('0x34')][_0x6938('0x1f')]);_0xd93427[_0x6938('0x21')]=qs[_0x6938('0x21')](_0x122c18[_0x6938('0x34')][_0x6938('0x21')]);}_0xd93427[_0x6938('0x3c')]=qs[_0x6938('0x3d')](_0x122c18[_0x6938('0x34')][_0x6938('0x3d')]);_0xd93427['where']=qs[_0x6938('0x3e')](_[_0x6938('0x3f')](_0x122c18['query'],_0x36560f['filters']),_0x59c954);if(_0x122c18[_0x6938('0x34')][_0x6938('0x40')]){_0xd93427[_0x6938('0x41')]=_[_0x6938('0x42')](_0xd93427['where'],{'$or':_[_0x6938('0x2e')](_0x59c954,function(_0x42e3ac){if(_0x42e3ac[_0x6938('0x32')]!==_0x6938('0x43')){var _0x20b52e={};_0x20b52e[_0x42e3ac[_0x6938('0x2b')]]={'$like':'%'+_0x122c18[_0x6938('0x34')][_0x6938('0x40')]+'%'};return _0x20b52e;}})});}_0xd93427=_[_0x6938('0x42')]({},_0xd93427,_0x122c18[_0x6938('0x44')]);var _0x2d9f46={'where':_0xd93427['where']};return db['VoiceQueuesLog'][_0x6938('0x20')](_0x2d9f46)[_0x6938('0x28')](function(_0x2942e9){_0x4e0de2[_0x6938('0x20')]=_0x2942e9;if(_0x122c18[_0x6938('0x34')][_0x6938('0x45')]){_0xd93427['include']=[{'all':!![]}];}return db[_0x6938('0x2f')][_0x6938('0x46')](_0xd93427);})['then'](function(_0x527683){_0x4e0de2[_0x6938('0x47')]=_0x527683;return _0x4e0de2;})['then'](respondWithFilteredResult(_0x394286,_0xd93427))[_0x6938('0x48')](handleError(_0x394286,null));};exports[_0x6938('0x49')]=function(_0x135575,_0x560eac){var _0x53c58f={'raw':!![],'where':{'id':_0x135575[_0x6938('0x4a')]['id']}},_0x285632={};_0x285632['model']=_[_0x6938('0x4b')](db[_0x6938('0x2f')][_0x6938('0x30')]);_0x285632[_0x6938('0x34')]=_['keys'](_0x135575[_0x6938('0x34')]);_0x285632['filters']=_[_0x6938('0x35')](_0x285632[_0x6938('0x36')],_0x285632[_0x6938('0x34')]);_0x53c58f[_0x6938('0x38')]=_[_0x6938('0x35')](_0x285632[_0x6938('0x36')],qs[_0x6938('0x37')](_0x135575['query'][_0x6938('0x37')]));_0x53c58f['attributes']=_0x53c58f['attributes']['length']?_0x53c58f['attributes']:_0x285632[_0x6938('0x36')];if(_0x135575[_0x6938('0x34')][_0x6938('0x45')]){_0x53c58f[_0x6938('0x4c')]=[{'all':!![]}];}_0x53c58f=_[_0x6938('0x42')]({},_0x53c58f,_0x135575[_0x6938('0x44')]);return db[_0x6938('0x2f')]['find'](_0x53c58f)[_0x6938('0x28')](handleEntityNotFound(_0x560eac,null))[_0x6938('0x28')](respondWithResult(_0x560eac,null))[_0x6938('0x48')](handleError(_0x560eac,null));};exports['create']=function(_0x59ddb6,_0x554bd2){return db[_0x6938('0x2f')][_0x6938('0x4d')](_0x59ddb6[_0x6938('0x4e')],{})[_0x6938('0x28')](respondWithResult(_0x554bd2,0xc9))[_0x6938('0x48')](handleError(_0x554bd2,null));};exports['update']=function(_0x10c947,_0x35a9a3){if(_0x10c947[_0x6938('0x4e')]['id']){delete _0x10c947[_0x6938('0x4e')]['id'];}return db['VoiceQueuesLog'][_0x6938('0x4f')]({'where':{'id':_0x10c947[_0x6938('0x4a')]['id']}})[_0x6938('0x28')](handleEntityNotFound(_0x35a9a3,null))[_0x6938('0x28')](saveUpdates(_0x10c947[_0x6938('0x4e')],null))[_0x6938('0x28')](respondWithResult(_0x35a9a3,null))[_0x6938('0x48')](handleError(_0x35a9a3,null));};exports[_0x6938('0x50')]=function(_0x162a02,_0x1f62a0){return db[_0x6938('0x2f')][_0x6938('0x4f')]({'where':{'id':_0x162a02['params']['id']}})[_0x6938('0x28')](handleEntityNotFound(_0x1f62a0,null))[_0x6938('0x28')](removeEntity(_0x1f62a0,null))['catch'](handleError(_0x1f62a0,null));};
\ No newline at end of file
index 5e217d0..22ee0e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96d5=['../../config/environment','exports','define','VoiceQueuesLog','voice_queues_log','event_dtm','event','dtm','lodash','../../config/logger','api','bluebird','request-promise','rimraf'];(function(_0x382dfd,_0x40c06c){var _0x356b15=function(_0x1a0240){while(--_0x1a0240){_0x382dfd['push'](_0x382dfd['shift']());}};_0x356b15(++_0x40c06c);}(_0x96d5,0x166));var _0x596d=function(_0xbc6566,_0x32d463){_0xbc6566=_0xbc6566-0x0;var _0x4ed128=_0x96d5[_0xbc6566];return _0x4ed128;};'use strict';var _=require(_0x596d('0x0'));var util=require('util');var logger=require(_0x596d('0x1'))(_0x596d('0x2'));var moment=require('moment');var BPromise=require(_0x596d('0x3'));var rp=require(_0x596d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x596d('0x5'));var config=require(_0x596d('0x6'));var attributes=require('./voiceQueuesLog.attributes');module[_0x596d('0x7')]=function(_0x1c8bbd,_0xfc78e8){return _0x1c8bbd[_0x596d('0x8')](_0x596d('0x9'),attributes,{'tableName':_0x596d('0xa'),'paranoid':![],'indexes':[{'name':_0x596d('0xb'),'fields':[_0x596d('0xc'),_0x596d('0xd')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xf180=['moment','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','VoiceQueuesLog','voice_queues_log','event_dtm','event','dtm','lodash','util','../../config/logger'];(function(_0x4751f9,_0x19da43){var _0x1562ee=function(_0x1a4142){while(--_0x1a4142){_0x4751f9['push'](_0x4751f9['shift']());}};_0x1562ee(++_0x19da43);}(_0xf180,0xc0));var _0x0f18=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xf180[_0x432682];return _0x463d05;};'use strict';var _=require(_0x0f18('0x0'));var util=require(_0x0f18('0x1'));var logger=require(_0x0f18('0x2'))('api');var moment=require(_0x0f18('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x0f18('0x4'));var rimraf=require(_0x0f18('0x5'));var config=require(_0x0f18('0x6'));var attributes=require(_0x0f18('0x7'));module['exports']=function(_0xc3989b,_0x29de66){return _0xc3989b['define'](_0x0f18('0x8'),attributes,{'tableName':_0x0f18('0x9'),'paranoid':![],'indexes':[{'name':_0x0f18('0xa'),'fields':[_0x0f18('0xb'),_0x0f18('0xc')]}],'timestamps':![]});};
\ No newline at end of file
index a7990b4..da13e8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24cf=['info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then'];(function(_0x313f90,_0xa58897){var _0x3e0fb6=function(_0x5f0cd2){while(--_0x5f0cd2){_0x313f90['push'](_0x313f90['shift']());}};_0x3e0fb6(++_0xa58897);}(_0x24cf,0x1d5));var _0xf24c=function(_0x29d7ef,_0x251294){_0x29d7ef=_0x29d7ef-0x0;var _0x284f1c=_0x24cf[_0x29d7ef];return _0x284f1c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf24c('0x0'));var BPromise=require(_0xf24c('0x1'));var rs=require(_0xf24c('0x2'));var fs=require('fs');var Redis=require(_0xf24c('0x3'));var db=require(_0xf24c('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xf24c('0x5'))(_0xf24c('0x6'));var config=require(_0xf24c('0x7'));var jayson=require(_0xf24c('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5104bd,_0x272d25,_0x596e81){return new BPromise(function(_0x3b7cf1,_0x13163e){return client[_0xf24c('0x9')](_0x5104bd,_0x596e81)[_0xf24c('0xa')](function(_0x4b3ea3){logger[_0xf24c('0xb')](_0xf24c('0xc'),_0x272d25,_0xf24c('0xd'));logger[_0xf24c('0xe')](_0xf24c('0xf'),_0x272d25,_0xf24c('0xd'),JSON['stringify'](_0x4b3ea3));if(_0x4b3ea3[_0xf24c('0x10')]){if(_0x4b3ea3[_0xf24c('0x10')][_0xf24c('0x11')]===0x1f4){logger['error'](_0xf24c('0xc'),_0x272d25,_0x4b3ea3[_0xf24c('0x10')]['message']);return _0x13163e(_0x4b3ea3['error'][_0xf24c('0x12')]);}logger['error'](_0xf24c('0xc'),_0x272d25,_0x4b3ea3[_0xf24c('0x10')]['message']);return _0x3b7cf1(_0x4b3ea3[_0xf24c('0x10')][_0xf24c('0x12')]);}else{logger[_0xf24c('0xb')](_0xf24c('0xc'),_0x272d25,_0xf24c('0xd'));_0x3b7cf1(_0x4b3ea3['result']['message']);}})[_0xf24c('0x13')](function(_0x462801){logger['error'](_0xf24c('0xc'),_0x272d25,_0x462801);_0x13163e(_0x462801);});});}
\ No newline at end of file
+var _0x43f7=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','lodash','util','moment','randomstring','ioredis'];(function(_0x3ca0f2,_0x581036){var _0xddc540=function(_0x1c01fd){while(--_0x1c01fd){_0x3ca0f2['push'](_0x3ca0f2['shift']());}};_0xddc540(++_0x581036);}(_0x43f7,0xc3));var _0x743f=function(_0xcde22b,_0x568eda){_0xcde22b=_0xcde22b-0x0;var _0x6d6b00=_0x43f7[_0xcde22b];return _0x6d6b00;};'use strict';var _=require(_0x743f('0x0'));var util=require(_0x743f('0x1'));var moment=require(_0x743f('0x2'));var BPromise=require('bluebird');var rs=require(_0x743f('0x3'));var fs=require('fs');var Redis=require(_0x743f('0x4'));var db=require(_0x743f('0x5'))['db'];var utils=require(_0x743f('0x6'));var logger=require('../../config/logger')(_0x743f('0x7'));var config=require(_0x743f('0x8'));var jayson=require(_0x743f('0x9'));var client=jayson[_0x743f('0xa')][_0x743f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x233848,_0xfb2f1,_0x4fce08){return new BPromise(function(_0x2a0ecf,_0x309593){return client[_0x743f('0xc')](_0x233848,_0x4fce08)['then'](function(_0x5e4c50){logger['info'](_0x743f('0xd'),_0xfb2f1,_0x743f('0xe'));logger[_0x743f('0xf')]('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0xfb2f1,_0x743f('0xe'),JSON[_0x743f('0x10')](_0x5e4c50));if(_0x5e4c50[_0x743f('0x11')]){if(_0x5e4c50[_0x743f('0x11')]['code']===0x1f4){logger[_0x743f('0x11')](_0x743f('0xd'),_0xfb2f1,_0x5e4c50['error'][_0x743f('0x12')]);return _0x309593(_0x5e4c50['error'][_0x743f('0x12')]);}logger['error'](_0x743f('0xd'),_0xfb2f1,_0x5e4c50['error'][_0x743f('0x12')]);return _0x2a0ecf(_0x5e4c50[_0x743f('0x11')][_0x743f('0x12')]);}else{logger['info']('VoiceQueuesLog,\x20%s,\x20%s',_0xfb2f1,'request\x20sent');_0x2a0ecf(_0x5e4c50['result'][_0x743f('0x12')]);}})[_0x743f('0x13')](function(_0x3c440b){logger['error'](_0x743f('0xd'),_0xfb2f1,_0x3c440b);_0x309593(_0x3c440b);});});}
\ No newline at end of file
index 0d4b6be..3edf627 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bdc=['util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','/:id/download','/:id/downloads','downloads','/:id/transcribe','downloadTranscribe','post','runTranscribe','update','destroy','exports','multer'];(function(_0x2440b9,_0x1732dc){var _0x3b097b=function(_0x39a1e9){while(--_0x39a1e9){_0x2440b9['push'](_0x2440b9['shift']());}};_0x3b097b(++_0x1732dc);}(_0x2bdc,0xb7));var _0xc2bd=function(_0x2e9490,_0x40ff41){_0x2e9490=_0x2e9490-0x0;var _0x400142=_0x2bdc[_0x2e9490];return _0x400142;};'use strict';var multer=require(_0xc2bd('0x0'));var util=require(_0xc2bd('0x1'));var path=require(_0xc2bd('0x2'));var timeout=require(_0xc2bd('0x3'));var express=require('express');var router=express[_0xc2bd('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xc2bd('0x5'));var config=require(_0xc2bd('0x6'));var controller=require('./voiceRecording.controller');router['get']('/',auth[_0xc2bd('0x7')](),controller[_0xc2bd('0x8')]);router[_0xc2bd('0x9')]('/describe',auth[_0xc2bd('0x7')](),controller[_0xc2bd('0xa')]);router['get'](_0xc2bd('0xb'),auth[_0xc2bd('0x7')](),controller[_0xc2bd('0xc')]);router[_0xc2bd('0x9')](_0xc2bd('0xd'),auth[_0xc2bd('0x7')](),controller['download']);router[_0xc2bd('0x9')](_0xc2bd('0xe'),controller[_0xc2bd('0xf')]);router[_0xc2bd('0x9')](_0xc2bd('0x10'),auth[_0xc2bd('0x7')](),controller[_0xc2bd('0x11')]);router['post']('/',auth[_0xc2bd('0x7')](),controller['create']);router[_0xc2bd('0x12')](_0xc2bd('0x10'),auth[_0xc2bd('0x7')](),controller[_0xc2bd('0x13')]);router['put'](_0xc2bd('0xb'),auth[_0xc2bd('0x7')](),controller[_0xc2bd('0x14')]);router['delete']('/:id',auth[_0xc2bd('0x7')](),controller[_0xc2bd('0x15')]);module[_0xc2bd('0x16')]=router;
\ No newline at end of file
+var _0x752f=['show','/:id/download','download','/:id/transcribe','post','create','runTranscribe','put','update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/interaction/service','./voiceRecording.controller','get','isAuthenticated','/:id'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0x752f,0x1f0));var _0xf752=function(_0x6961a6,_0x5e80bd){_0x6961a6=_0x6961a6-0x0;var _0x5d6611=_0x752f[_0x6961a6];return _0x5d6611;};'use strict';var multer=require(_0xf752('0x0'));var util=require(_0xf752('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf752('0x2'));var router=express[_0xf752('0x3')]();var fs_extra=require(_0xf752('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xf752('0x5'));var config=require('../../config/environment');var controller=require(_0xf752('0x6'));router[_0xf752('0x7')]('/',auth[_0xf752('0x8')](),controller['index']);router['get']('/describe',auth[_0xf752('0x8')](),controller['describe']);router[_0xf752('0x7')](_0xf752('0x9'),auth[_0xf752('0x8')](),controller[_0xf752('0xa')]);router[_0xf752('0x7')](_0xf752('0xb'),auth['isAuthenticated'](),controller[_0xf752('0xc')]);router['get']('/:id/downloads',controller['downloads']);router[_0xf752('0x7')](_0xf752('0xd'),auth['isAuthenticated'](),controller['downloadTranscribe']);router[_0xf752('0xe')]('/',auth[_0xf752('0x8')](),controller[_0xf752('0xf')]);router['post'](_0xf752('0xd'),auth[_0xf752('0x8')](),controller[_0xf752('0x10')]);router[_0xf752('0x11')](_0xf752('0x9'),auth[_0xf752('0x8')](),controller[_0xf752('0x12')]);router[_0xf752('0x13')](_0xf752('0x9'),auth[_0xf752('0x8')](),controller[_0xf752('0x14')]);module[_0xf752('0x15')]=router;
\ No newline at end of file
index b1da89e..b936fe0 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(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'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(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xa9e0[_0x110c3d];return _0x226d67;};'use strict';var Sequelize=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x0a9e('0x3')]('value')?path[_0x0a9e('0x4')](this[_0x0a9e('0x3')](_0x0a9e('0x5'))):undefined;}},'uniqueid':{'type':Sequelize[_0x0a9e('0x6')]},'channel':{'type':Sequelize[_0x0a9e('0x6')],'set':function(_0x57b080){if(_0x57b080){this[_0x0a9e('0x7')](_0x0a9e('0x8'),_0x57b080);this[_0x0a9e('0x7')]('membername',_0x57b080['split'](/\/|-/)[0x1]);}}},'membername':{'type':Sequelize[_0x0a9e('0x6')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x0a9e('0x6')]},'connectedlinename':{'type':Sequelize[_0x0a9e('0x6')]},'accountcode':{'type':Sequelize[_0x0a9e('0x6')]},'context':{'type':Sequelize[_0x0a9e('0x6')]},'exten':{'type':Sequelize[_0x0a9e('0x6')]},'value':{'type':Sequelize[_0x0a9e('0x6')]},'type':{'type':Sequelize['STRING']},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'queue':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'userThirdDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'location':{'type':Sequelize[_0x0a9e('0x9')]},'transcribeName':{'type':Sequelize[_0x0a9e('0x6')]},'transcribeStatus':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':_0x0a9e('0xa')},'fileUri':{'type':Sequelize['TEXT']},'fileText':{'type':Sequelize[_0x0a9e('0x9')]},'failureReason':{'type':Sequelize[_0x0a9e('0x9')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')]},'sPositive':{'type':Sequelize[_0x0a9e('0xb')]},'sNegative':{'type':Sequelize[_0x0a9e('0xb')]},'sNeutral':{'type':Sequelize[_0x0a9e('0xb')]},'sMixed':{'type':Sequelize['FLOAT']},'tempSentiment':{'type':Sequelize[_0x0a9e('0xc')],'defaultValue':![]},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x0a9e('0x3')]('createdAt'))[_0x0a9e('0xd')](_0x0a9e('0xe'))['toString']();}},'updatedAt':{'type':Sequelize[_0x0a9e('0xf')],'get':function(){return moment(this['getDataValue'](_0x0a9e('0x10')))[_0x0a9e('0xd')](_0x0a9e('0xe'))[_0x0a9e('0x11')]();}}};
\ No newline at end of file
index e3da4b3..e40866d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcad0=['NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','tempSentiment','updateAttributes','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','Transcript\x20not\x20available','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','papaparse','uuid/v4','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','update','then','destroy','sendStatus','error','name','map','VoiceRecording','rawAttributes','fieldName','type','key','model','differenceBy','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options','includeAll','include','catch','show','params','find','create','body','describe','download','../../components/encryptor','uniqueid','value','existsSync','decryptFile','secrets','recording','ValidationError','VoiceRecording\x20not\x20found','filename','extname','unlink','message','send','downloads','sequelize','token','$and','push','Sequelize','isNil','info','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','upload','startTranscriptionJob','format','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','TranscriptionJobStatus','runTranscribe','findOne','%s.cypher','Voice\x20Recording\x20not\x20found','transcribe','transcribeAccountId','transcribeRegion','language','runSentiment','sentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','Cloud\x20Provider\x20not\x20configured','data2','Buckets','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available'];(function(_0x36d5d5,_0x1c1590){var _0x4eaa56=function(_0x56fa0e){while(--_0x56fa0e){_0x36d5d5['push'](_0x36d5d5['shift']());}};_0x4eaa56(++_0x1c1590);}(_0xcad0,0x1b6));var _0x0cad=function(_0x423b10,_0x36cad4){_0x423b10=_0x423b10-0x0;var _0x1338d9=_0xcad0[_0x423b10];return _0x1338d9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x0cad('0x0'));var jsonpatch=require(_0x0cad('0x1'));var rp=require('request-promise');var moment=require(_0x0cad('0x2'));var BPromise=require(_0x0cad('0x3'));var Mustache=require('mustache');var util=require(_0x0cad('0x4'));var path=require(_0x0cad('0x5'));var sox=require(_0x0cad('0x6'));var csv=require(_0x0cad('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0cad('0x8'));var squel=require(_0x0cad('0x9'));var crypto=require(_0x0cad('0xa'));var jsforce=require(_0x0cad('0xb'));var deskjs=require(_0x0cad('0xc'));var toCsv=require(_0x0cad('0x7'));var querystring=require('querystring');var Papa=require(_0x0cad('0xd'));var AWS=require('aws-sdk');var uuidv4=require(_0x0cad('0xe'));var Redis=require('ioredis');var authService=require(_0x0cad('0xf'));var qs=require(_0x0cad('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0cad('0x11'));var logger=require(_0x0cad('0x12'))('api');var utils=require(_0x0cad('0x13'));var config=require(_0x0cad('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x0cad('0x15'))['db'];function respondWithStatusCode(_0x5340bc,_0x3d6dff){_0x3d6dff=_0x3d6dff||0xcc;return function(_0x3e4953){if(_0x3e4953){return _0x5340bc['sendStatus'](_0x3d6dff);}return _0x5340bc['status'](_0x3d6dff)[_0x0cad('0x16')]();};}function respondWithResult(_0x5b39a1,_0xbacfb4){_0xbacfb4=_0xbacfb4||0xc8;return function(_0xfbfd9c){if(_0xfbfd9c){return _0x5b39a1[_0x0cad('0x17')](_0xbacfb4)[_0x0cad('0x18')](_0xfbfd9c);}};}function respondWithFilteredResult(_0x3354c2,_0x37c999){return function(_0x4cccb6){if(_0x4cccb6){var _0x17035b=typeof _0x37c999[_0x0cad('0x19')]===_0x0cad('0x1a')&&typeof _0x37c999[_0x0cad('0x1b')]==='undefined';var _0xe082=_0x4cccb6['count'];var _0x5905b3=_0x17035b?0x0:_0x37c999['offset'];var _0x1a6deb=_0x17035b?_0x4cccb6[_0x0cad('0x1c')]:_0x37c999[_0x0cad('0x19')]+_0x37c999[_0x0cad('0x1b')];var _0x1c934f;if(_0x1a6deb>=_0xe082){_0x1a6deb=_0xe082;_0x1c934f=0xc8;}else{_0x1c934f=0xce;}_0x3354c2[_0x0cad('0x17')](_0x1c934f);return _0x3354c2[_0x0cad('0x1d')](_0x0cad('0x1e'),_0x5905b3+'-'+_0x1a6deb+'/'+_0xe082)[_0x0cad('0x18')](_0x4cccb6);}return null;};}function patchUpdates(_0x2dffbd){return function(_0x4fbd9b){try{jsonpatch['apply'](_0x4fbd9b,_0x2dffbd,!![]);}catch(_0x443bd5){return BPromise[_0x0cad('0x1f')](_0x443bd5);}return _0x4fbd9b['save']();};}function saveUpdates(_0x33c042,_0x39a529){return function(_0x52dd0e){if(_0x52dd0e){return _0x52dd0e[_0x0cad('0x20')](_0x33c042)[_0x0cad('0x21')](function(_0x5d11d9){return _0x5d11d9;});}return null;};}function removeEntity(_0x5a0624,_0x5e23fc){return function(_0x86dd07){if(_0x86dd07){return _0x86dd07[_0x0cad('0x22')]()[_0x0cad('0x21')](function(){_0x5a0624[_0x0cad('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51b992,_0x4f926b){return function(_0x44866b){if(!_0x44866b){_0x51b992[_0x0cad('0x23')](0x194);}return _0x44866b;};}function handleError(_0x47338a,_0x2250c2){_0x2250c2=_0x2250c2||0x1f4;return function(_0xf090b5){logger[_0x0cad('0x24')](_0xf090b5['stack']);if(_0xf090b5[_0x0cad('0x25')]){delete _0xf090b5[_0x0cad('0x25')];}_0x47338a[_0x0cad('0x17')](_0x2250c2)['send'](_0xf090b5);};}exports['index']=function(_0x5eb903,_0x248dec){var _0x48cc7a={},_0x51120c={},_0x1d41fd={'count':0x0,'rows':[]};var _0x5eac21=_[_0x0cad('0x26')](db[_0x0cad('0x27')][_0x0cad('0x28')],function(_0x3a5199){return{'name':_0x3a5199[_0x0cad('0x29')],'type':_0x3a5199[_0x0cad('0x2a')][_0x0cad('0x2b')]};});_0x51120c[_0x0cad('0x2c')]=_[_0x0cad('0x2d')](_[_0x0cad('0x26')](_0x5eac21,_0x0cad('0x25')),['format']);_0x51120c['query']=_[_0x0cad('0x2e')](_0x5eb903[_0x0cad('0x2f')]);_0x51120c[_0x0cad('0x30')]=_[_0x0cad('0x31')](_0x51120c[_0x0cad('0x2c')],_0x51120c[_0x0cad('0x2f')]);_0x48cc7a[_0x0cad('0x32')]=_[_0x0cad('0x31')](_0x51120c[_0x0cad('0x2c')],qs[_0x0cad('0x33')](_0x5eb903['query'][_0x0cad('0x33')]));_0x48cc7a[_0x0cad('0x32')]=_0x48cc7a[_0x0cad('0x32')][_0x0cad('0x34')]?_0x48cc7a[_0x0cad('0x32')]:_0x51120c[_0x0cad('0x2c')];if(!_0x5eb903['query'][_0x0cad('0x35')](_0x0cad('0x36'))){_0x48cc7a[_0x0cad('0x1b')]=qs[_0x0cad('0x1b')](_0x5eb903['query']['limit']);_0x48cc7a[_0x0cad('0x19')]=qs[_0x0cad('0x19')](_0x5eb903[_0x0cad('0x2f')][_0x0cad('0x19')]);}_0x48cc7a[_0x0cad('0x37')]=qs[_0x0cad('0x38')](_0x5eb903[_0x0cad('0x2f')][_0x0cad('0x38')]);_0x48cc7a[_0x0cad('0x39')]=qs[_0x0cad('0x30')](_[_0x0cad('0x3a')](_0x5eb903[_0x0cad('0x2f')],_0x51120c[_0x0cad('0x30')]),_0x5eac21);if(_0x5eb903[_0x0cad('0x2f')]['filter']){_0x48cc7a['where']=_[_0x0cad('0x3b')](_0x48cc7a[_0x0cad('0x39')],{'$or':_[_0x0cad('0x26')](_0x5eac21,function(_0x4f63dc){if(_0x4f63dc[_0x0cad('0x2a')]!=='VIRTUAL'){var _0x5102ca={};_0x5102ca[_0x4f63dc['name']]={'$like':'%'+_0x5eb903[_0x0cad('0x2f')][_0x0cad('0x3c')]+'%'};return _0x5102ca;}})});}_0x48cc7a=_['merge']({},_0x48cc7a,_0x5eb903[_0x0cad('0x3d')]);var _0x39d812={'where':_0x48cc7a[_0x0cad('0x39')]};return db[_0x0cad('0x27')][_0x0cad('0x1c')](_0x39d812)[_0x0cad('0x21')](function(_0x1331d7){_0x1d41fd[_0x0cad('0x1c')]=_0x1331d7;if(_0x5eb903['query'][_0x0cad('0x3e')]){_0x48cc7a[_0x0cad('0x3f')]=[{'all':!![]}];}return db['VoiceRecording']['findAll'](_0x48cc7a);})['then'](function(_0x3dde1c){_0x1d41fd['rows']=_0x3dde1c;return _0x1d41fd;})[_0x0cad('0x21')](respondWithFilteredResult(_0x248dec,_0x48cc7a))[_0x0cad('0x40')](handleError(_0x248dec,null));};exports[_0x0cad('0x41')]=function(_0x35933b,_0x3eaf2c){var _0x117d46={'raw':![],'where':{'id':_0x35933b[_0x0cad('0x42')]['id']}},_0x21fca1={};_0x21fca1[_0x0cad('0x2c')]=_[_0x0cad('0x2e')](db[_0x0cad('0x27')][_0x0cad('0x28')]);_0x21fca1['query']=_[_0x0cad('0x2e')](_0x35933b['query']);_0x21fca1['filters']=_[_0x0cad('0x31')](_0x21fca1['model'],_0x21fca1[_0x0cad('0x2f')]);_0x117d46[_0x0cad('0x32')]=_[_0x0cad('0x31')](_0x21fca1[_0x0cad('0x2c')],qs[_0x0cad('0x33')](_0x35933b[_0x0cad('0x2f')]['fields']));_0x117d46[_0x0cad('0x32')]=_0x117d46[_0x0cad('0x32')][_0x0cad('0x34')]?_0x117d46[_0x0cad('0x32')]:_0x21fca1['model'];if(_0x35933b[_0x0cad('0x2f')]['includeAll']){_0x117d46[_0x0cad('0x3f')]=[{'all':!![]}];}_0x117d46=_[_0x0cad('0x3b')]({},_0x117d46,_0x35933b[_0x0cad('0x3d')]);return db[_0x0cad('0x27')][_0x0cad('0x43')](_0x117d46)[_0x0cad('0x21')](handleEntityNotFound(_0x3eaf2c,null))[_0x0cad('0x21')](respondWithResult(_0x3eaf2c,null))[_0x0cad('0x40')](handleError(_0x3eaf2c,null));};exports[_0x0cad('0x44')]=function(_0xb4cab3,_0x571089){return db[_0x0cad('0x27')]['create'](_0xb4cab3[_0x0cad('0x45')],{})['then'](respondWithResult(_0x571089,0xc9))[_0x0cad('0x40')](handleError(_0x571089,null));};exports[_0x0cad('0x20')]=function(_0x7f41a,_0x45c84e){if(_0x7f41a['body']['id']){delete _0x7f41a[_0x0cad('0x45')]['id'];}return db[_0x0cad('0x27')][_0x0cad('0x43')]({'where':{'id':_0x7f41a[_0x0cad('0x42')]['id']}})[_0x0cad('0x21')](handleEntityNotFound(_0x45c84e,null))[_0x0cad('0x21')](saveUpdates(_0x7f41a[_0x0cad('0x45')],null))[_0x0cad('0x21')](respondWithResult(_0x45c84e,null))[_0x0cad('0x40')](handleError(_0x45c84e,null));};exports[_0x0cad('0x46')]=function(_0x197370,_0x169cd8){return db['VoiceRecording'][_0x0cad('0x46')]()['then'](respondWithResult(_0x169cd8,null))[_0x0cad('0x40')](handleError(_0x169cd8,null));};exports[_0x0cad('0x47')]=function(_0x4b1390,_0x32db8b,_0x2df491){var _0x53461b=require(_0x0cad('0x48'));var _0x5d002a=![];var _0x47cb8b={};if(_0x4b1390[_0x0cad('0x2f')][_0x0cad('0x2a')]&&_0x4b1390['query'][_0x0cad('0x2a')]===_0x0cad('0x49')){_0x47cb8b[_0x0cad('0x49')]=_0x4b1390[_0x0cad('0x42')]['id'];}else{_0x47cb8b['id']=_0x4b1390['params']['id'];}return db['VoiceRecording'][_0x0cad('0x43')]({'where':_0x47cb8b,'attributes':['id','value'],'raw':!![]})[_0x0cad('0x21')](handleEntityNotFound(_0x32db8b,null))[_0x0cad('0x21')](function(_0x500252){if(_0x500252){var _0x404276=_0x500252[_0x0cad('0x4a')];var _0x199207=util['format']('%s.cypher',_0x404276);if(fs[_0x0cad('0x4b')](_0x199207)){_0x5d002a=!![];return _0x53461b[_0x0cad('0x4c')](_0x199207,_0x404276,config[_0x0cad('0x4d')][_0x0cad('0x4e')])[_0x0cad('0x21')](function(){return _0x500252;});}return _0x500252;}})[_0x0cad('0x21')](function(_0x7dccca){if(_0x7dccca){var _0x5e4f3f=_0x7dccca[_0x0cad('0x4a')];if(!fs[_0x0cad('0x4b')](_0x5e4f3f)){throw new db['Sequelize'][(_0x0cad('0x4f'))](_0x0cad('0x50'));}if(_0x7dccca['filename']){return _0x32db8b['download'](_0x5e4f3f,_0x7dccca[_0x0cad('0x51')]+path[_0x0cad('0x52')](_0x5e4f3f),function(){if(_0x5d002a){fs[_0x0cad('0x53')](_0x5e4f3f);}});}else{return _0x32db8b[_0x0cad('0x47')](_0x5e4f3f,function(_0x419424){if(_0x5d002a){fs[_0x0cad('0x53')](_0x5e4f3f);}});}}})[_0x0cad('0x40')](function(_0x14fcc7){if(_0x14fcc7[_0x0cad('0x54')]===_0x0cad('0x50')){_0x32db8b[_0x0cad('0x17')](0x194)[_0x0cad('0x55')]('Not\x20found');}else{return handleError(_0x32db8b,null);}});};exports[_0x0cad('0x56')]=function(_0x1b9051,_0x33f55e,_0x4c3997){var _0x58e899=require('../../components/encryptor');var _0x4499c8=![];var _0x269067={'$and':[db[_0x0cad('0x57')][_0x0cad('0x39')](db['sequelize']['fn']('MD5',db[_0x0cad('0x57')]['col']('uniqueid')),_0x1b9051[_0x0cad('0x2f')][_0x0cad('0x58')])]};if(_0x1b9051[_0x0cad('0x2f')][_0x0cad('0x2a')]&&_0x1b9051['query'][_0x0cad('0x2a')]===_0x0cad('0x49')){_0x269067['$and']['push']({'uniqueid':_0x1b9051[_0x0cad('0x42')]['id']});}else{_0x269067[_0x0cad('0x59')][_0x0cad('0x5a')]({'id':_0x1b9051['params']['id']});}return db[_0x0cad('0x27')][_0x0cad('0x43')]({'where':_0x269067,'attributes':['id',_0x0cad('0x4a')],'raw':!![]})['then'](handleEntityNotFound(_0x33f55e,null))['then'](function(_0x98f0c2){if(_0x98f0c2){var _0x1a3980=util['format']('%s.cypher',_0x98f0c2['value']);if(fs['existsSync'](_0x1a3980)){_0x4499c8=!![];return _0x58e899[_0x0cad('0x4c')](_0x1a3980,_0x98f0c2[_0x0cad('0x4a')],config[_0x0cad('0x4d')]['recording'])[_0x0cad('0x21')](function(){return _0x98f0c2;});}return _0x98f0c2;}})[_0x0cad('0x21')](function(_0x5e87a9){if(_0x5e87a9){if(!fs[_0x0cad('0x4b')](_0x5e87a9[_0x0cad('0x4a')])){throw new db[(_0x0cad('0x5b'))][(_0x0cad('0x4f'))]('VoiceRecording\x20not\x20found');}if(_0x5e87a9[_0x0cad('0x51')]){return _0x33f55e[_0x0cad('0x47')](_0x5e87a9[_0x0cad('0x4a')],_0x5e87a9[_0x0cad('0x51')]+path[_0x0cad('0x52')](_0x5e87a9[_0x0cad('0x4a')]),function(){if(_0x4499c8){fs[_0x0cad('0x53')](_0x5e87a9[_0x0cad('0x4a')]);}});}else{return _0x33f55e[_0x0cad('0x47')](_0x5e87a9[_0x0cad('0x4a')],function(_0x3bbc19){if(_0x4499c8){fs[_0x0cad('0x53')](_0x5e87a9[_0x0cad('0x4a')]);}});}}})['catch'](handleError(_0x33f55e,null));};exports[_0x0cad('0x22')]=function(_0x4852a1,_0x4d97fc){return db[_0x0cad('0x27')]['find']({'where':{'id':_0x4852a1[_0x0cad('0x42')]['id']}})[_0x0cad('0x21')](function(_0x8e0ad2){if(_[_0x0cad('0x5c')](_0x8e0ad2)){throw new ReferenceError('Entity\x20not\x20found');}return _0x8e0ad2;})[_0x0cad('0x21')](function(_0x4bedb8){var _0x2837f=_0x4bedb8[_0x0cad('0x4a')];logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x2837f);if(!_['isNil'](_0x4bedb8[_0x0cad('0x4a')])&&fs['existsSync'](_0x2837f)){logger[_0x0cad('0x5d')](_0x0cad('0x5e')+_0x2837f+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x0cad('0x5f')](_0x2837f);}_0x2837f=_0x2837f+_0x0cad('0x60');if(!_[_0x0cad('0x5c')](_0x4bedb8[_0x0cad('0x4a')])&&fs[_0x0cad('0x4b')](_0x2837f)){logger[_0x0cad('0x5d')](_0x0cad('0x5e')+_0x2837f+_0x0cad('0x61'));fs['unlinkSync'](_0x2837f);}return _0x4bedb8;})[_0x0cad('0x21')](function(_0x1910ff){if(!_0x1910ff)throw new InternalError();return _0x1910ff['destroy']();})[_0x0cad('0x21')](function(){_0x4d97fc[_0x0cad('0x17')](0xcc)[_0x0cad('0x16')]();})['catch'](handleError(_0x4d97fc,null));};function getBucketslist(_0x1f9c50,_0x6141a9,_0x5ac3e1){return new Promise(function(_0x247fcf,_0x16e4f6){var _0x196bdf=new AWS['S3']({'accessKeyId':_0x6141a9,'secretAccessKey':_0x1f9c50,'region':_0x5ac3e1});_0x196bdf['listBuckets']({},function(_0x539561,_0x37b20d){if(_0x539561){return _0x16e4f6(_0x539561);}else{return _0x247fcf(_0x37b20d);}});});}function createBucket(_0x3dafb1,_0x3dcefd,_0xcbebe,_0x3abeac){return new Promise(function(_0x12271e,_0x428da5){var _0x332f8c=new AWS['S3']({'accessKeyId':_0x3dcefd,'secretAccessKey':_0x3dafb1,'region':_0xcbebe});_0x332f8c['createBucket']({'Bucket':_0x3abeac},function(_0x76f53f,_0x18079d){if(_0x76f53f){return _0x428da5(_0x76f53f);}else{return _0x12271e(_0x18079d);}});});}function uploadFile(_0x55b0da,_0x1c9d8c,_0x32ac27,_0x4cac4b,_0x20074a,_0xc91b9e){return new Promise(function(_0x47deac,_0x5c2d97){var _0x4064e5=new AWS['S3']({'accessKeyId':_0x1c9d8c,'secretAccessKey':_0x55b0da,'region':_0x32ac27});_0x4064e5[_0x0cad('0x62')]({'Bucket':_0x4cac4b,'Key':_0x20074a,'Body':_0xc91b9e},function(_0x1b6fda,_0x3aa578){if(_0x1b6fda){return _0x5c2d97(_0x1b6fda);}else{return _0x47deac(_0x3aa578);}});});}function startTranscribe(_0x2bf0e7,_0x219fe3,_0x36bcfe,_0x461f3c,_0x5bf6bb,_0xaa3257){return new Promise(function(_0x250d9b,_0x21ee3e){var _0x3a8eb6=new AWS['TranscribeService']({'accessKeyId':_0x219fe3,'secretAccessKey':_0x2bf0e7,'region':_0x36bcfe});_0x3a8eb6[_0x0cad('0x63')]({'TranscriptionJobName':_0x461f3c,'LanguageCode':_0x5bf6bb,'Media':{'MediaFileUri':_0xaa3257}},function(_0x48aedd,_0x4c1514){if(_0x48aedd){return _0x21ee3e(_0x48aedd);}else{return _0x250d9b(_0x4c1514);}});});}function transcribe(_0x107a67,_0x5074a6,_0x5f01d6,_0x24bd8f,_0x418356,_0x26ee82,_0xf41d64){return new Promise(function(_0x3959d2,_0x56d26d){var _0x277d27={};logger[_0x0cad('0x5d')](util[_0x0cad('0x64')](_0x0cad('0x65'),_0x107a67,_0x418356));return uploadFile(_0x5074a6,_0x5f01d6,_0x24bd8f,_0x418356,path['basename'](_0x26ee82),fs['readFileSync'](_0x26ee82))['then'](function(_0x2d4e76){logger[_0x0cad('0x5d')](util[_0x0cad('0x64')](_0x0cad('0x66'),_0x107a67,_0x418356,_0x2d4e76[_0x0cad('0x67')]));_0x277d27[_0x0cad('0x68')]=_0x2d4e76[_0x0cad('0x69')];_0x277d27[_0x0cad('0x6a')]=_0x2d4e76[_0x0cad('0x67')];logger[_0x0cad('0x5d')](util[_0x0cad('0x64')](_0x0cad('0x6b'),_0x107a67));return startTranscribe(_0x5074a6,_0x5f01d6,_0x24bd8f,uuidv4(),_0xf41d64,_0x2d4e76[_0x0cad('0x67')]);})[_0x0cad('0x21')](function(_0x5b2ccb){logger[_0x0cad('0x5d')](util['format'](_0x0cad('0x6c'),_0x107a67,_0x5b2ccb[_0x0cad('0x6d')][_0x0cad('0x6e')]));_0x277d27[_0x0cad('0x6f')]=_0x5b2ccb[_0x0cad('0x6d')][_0x0cad('0x6e')];_0x277d27[_0x0cad('0x70')]=_0x5b2ccb['TranscriptionJob'][_0x0cad('0x71')];return _0x3959d2(_0x277d27);})[_0x0cad('0x40')](function(_0x5660ec){return _0x56d26d(_0x5660ec);});});}exports[_0x0cad('0x72')]=function(_0x320e48,_0x5a0d94,_0x3274fc){var _0x12db22;var _0x3e3c0f;var _0x2a37d3;var _0x419054=require('../../components/encryptor');return db[_0x0cad('0x27')][_0x0cad('0x73')]({'where':{'id':_0x320e48[_0x0cad('0x42')]['id']}})[_0x0cad('0x21')](function(_0xedb978){if(_0xedb978){var _0x19dfc6=util[_0x0cad('0x64')](_0x0cad('0x74'),_0xedb978[_0x0cad('0x4a')]);if(fs[_0x0cad('0x4b')](_0x19dfc6)){cypher=!![];return _0x419054['decryptFile'](_0x19dfc6,_0xedb978[_0x0cad('0x4a')],config[_0x0cad('0x4d')][_0x0cad('0x4e')])[_0x0cad('0x21')](function(){return _0xedb978;});}return _0xedb978;}})[_0x0cad('0x21')](function(_0x407c82){if(!_0x407c82){throw new db['Sequelize'][(_0x0cad('0x4f'))](_0x0cad('0x75'));}_0x3e3c0f=_0x407c82;return db['Setting'][_0x0cad('0x73')]({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0x5a0d94,null))['then'](function(_0x7a4f54){if(_0x7a4f54){_0x12db22=_0x7a4f54;if(!_0x12db22[_0x0cad('0x76')]||!_0x12db22[_0x0cad('0x77')]||!_0x12db22[_0x0cad('0x78')]||!_0x12db22[_0x0cad('0x79')]||!_0x12db22[_0x0cad('0x68')]){throw new db['Sequelize'][(_0x0cad('0x4f'))]('Transcribe\x20not\x20configured');}if(_0x320e48[_0x0cad('0x45')][_0x0cad('0x7a')]&&(!_0x12db22[_0x0cad('0x7b')]||!_0x12db22[_0x0cad('0x7c')]||!_0x12db22[_0x0cad('0x7d')]||!_0x12db22['language']||!_0x12db22[_0x0cad('0x68')])){throw new db[(_0x0cad('0x5b'))][(_0x0cad('0x4f'))](_0x0cad('0x7e'));}return db[_0x0cad('0x7f')][_0x0cad('0x73')]({'where':{'id':_0x12db22[_0x0cad('0x77')]}});}})[_0x0cad('0x21')](function(_0x3d2da0){if(!_0x3d2da0){throw new db[(_0x0cad('0x5b'))][(_0x0cad('0x4f'))](_0x0cad('0x80'));}if(!_0x3d2da0[_0x0cad('0x81')]||!_0x3d2da0['data2']){throw new db[(_0x0cad('0x5b'))]['ValidationError'](_0x0cad('0x82'));}_0x2a37d3=_0x3d2da0;return getBucketslist(_0x2a37d3['data1'],_0x2a37d3[_0x0cad('0x83')],_0x12db22[_0x0cad('0x78')]);})[_0x0cad('0x21')](function(_0x25744c){if(_0x25744c&&_0x25744c[_0x0cad('0x84')]){var _0x1928c9=_['find'](_0x25744c[_0x0cad('0x84')],function(_0x4c7801){return _0x4c7801['Name']===_0x12db22[_0x0cad('0x68')];});if(!_0x1928c9){logger['info'](util[_0x0cad('0x64')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available',_0x320e48['params']['id'],_0x12db22[_0x0cad('0x68')]));return createBucket(_0x2a37d3[_0x0cad('0x81')],_0x2a37d3[_0x0cad('0x83')],_0x12db22[_0x0cad('0x78')],_0x12db22[_0x0cad('0x68')]);}logger[_0x0cad('0x5d')](util['format'](_0x0cad('0x85'),_0x320e48['params']['id'],_0x12db22[_0x0cad('0x68')]));return;}})[_0x0cad('0x21')](function(_0xc8d51){if(_0x3e3c0f['transcribeStatus']===_0x0cad('0x86')){return transcribe(_0x320e48[_0x0cad('0x42')]['id'],_0x2a37d3[_0x0cad('0x81')],_0x2a37d3[_0x0cad('0x83')],_0x12db22[_0x0cad('0x78')],_0x12db22['bucket'],_0x3e3c0f[_0x0cad('0x4a')],_0x12db22[_0x0cad('0x79')]);}else{logger[_0x0cad('0x5d')](util[_0x0cad('0x64')](_0x0cad('0x87'),_0x320e48[_0x0cad('0x42')]['id']));return{'transcribeStatus':'IN_PROGRESS'};}})[_0x0cad('0x21')](function(_0x5e963e){if(_0x5e963e){_0x5e963e[_0x0cad('0x88')]=_0x320e48[_0x0cad('0x45')]['runSentiment'];return _0x3e3c0f[_0x0cad('0x89')](_0x5e963e);}})[_0x0cad('0x21')](respondWithResult(_0x5a0d94,null))[_0x0cad('0x40')](handleError(_0x5a0d94,null));};function writeFile(_0x3c254c,_0x9ddcbd){return new Promise(function(_0x3e70c0,_0x56ce71){fs['writeFile'](_0x9ddcbd,_0x3c254c,function(_0x19799f,_0x17676b){if(_0x19799f){return _0x56ce71(_0x19799f);}else{return _0x3e70c0(_0x17676b);}});});}exports[_0x0cad('0x8a')]=function(_0x4f14b8,_0x18d1ad,_0x5f234b){return db[_0x0cad('0x27')][_0x0cad('0x73')]({'where':{'id':_0x4f14b8[_0x0cad('0x42')]['id']}})[_0x0cad('0x21')](handleEntityNotFound(_0x18d1ad))[_0x0cad('0x21')](function(_0x4547b9){if(_0x4547b9&&_0x4547b9[_0x0cad('0x8b')]){var _0x4b1538=_0x4547b9[_0x0cad('0x8b')];var _0x173ad1=config[_0x0cad('0x8c')]+_0x0cad('0x8d')+_0x4547b9['id']+'.txt';if(fs[_0x0cad('0x4b')](_0x173ad1)){return _0x173ad1;}return writeFile(_0x4b1538,_0x173ad1)['then'](function(){return _0x173ad1;});}else{throw new db['Sequelize'][(_0x0cad('0x4f'))](_0x0cad('0x8e'));}})[_0x0cad('0x21')](function(_0x543adf){return _0x18d1ad[_0x0cad('0x47')](_0x543adf);})[_0x0cad('0x40')](handleError(_0x18d1ad));};
\ No newline at end of file
+var _0xae1c=['then','sendStatus','stack','name','send','map','VoiceRecording','rawAttributes','key','model','differenceBy','query','filters','attributes','intersection','fields','nolimit','sort','pick','filter','where','type','VIRTUAL','merge','options','includeAll','rows','catch','params','keys','length','find','create','body','describe','download','../../components/encryptor','uniqueid','value','format','existsSync','secrets','recording','ValidationError','filename','extname','unlink','VoiceRecording\x20not\x20found','Not\x20found','downloads','sequelize','MD5','col','push','$and','%s.cypher','decryptFile','Sequelize','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','File:\x20\x22','unlinkSync','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','listBuckets','upload','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','Bucket','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','TranscriptionJob','TranscriptionJobName','transcribeName','TranscriptionJobStatus','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeAccountId','transcribeRegion','language','bucket','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','data1','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','transcribeStatus','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','root','.txt','Transcript\x20not\x20available','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','end','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','destroy'];(function(_0x3eeb48,_0x20bd08){var _0x586724=function(_0x6ae73f){while(--_0x6ae73f){_0x3eeb48['push'](_0x3eeb48['shift']());}};_0x586724(++_0x20bd08);}(_0xae1c,0x107));var _0xcae1=function(_0x183a77,_0x986fa){_0x183a77=_0x183a77-0x0;var _0x33a2c4=_0xae1c[_0x183a77];return _0x33a2c4;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xcae1('0x0'));var jsonpatch=require(_0xcae1('0x1'));var rp=require(_0xcae1('0x2'));var moment=require(_0xcae1('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xcae1('0x4'));var path=require(_0xcae1('0x5'));var sox=require(_0xcae1('0x6'));var csv=require(_0xcae1('0x7'));var ejs=require(_0xcae1('0x8'));var fs=require('fs');var fs_extra=require(_0xcae1('0x9'));var _=require(_0xcae1('0xa'));var squel=require(_0xcae1('0xb'));var crypto=require(_0xcae1('0xc'));var jsforce=require(_0xcae1('0xd'));var deskjs=require(_0xcae1('0xe'));var toCsv=require(_0xcae1('0x7'));var querystring=require(_0xcae1('0xf'));var Papa=require('papaparse');var AWS=require(_0xcae1('0x10'));var uuidv4=require(_0xcae1('0x11'));var Redis=require(_0xcae1('0x12'));var authService=require(_0xcae1('0x13'));var qs=require(_0xcae1('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcae1('0x15'));var logger=require(_0xcae1('0x16'))('api');var utils=require(_0xcae1('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xcae1('0x18'));var db=require(_0xcae1('0x19'))['db'];function respondWithStatusCode(_0x21867b,_0x2c1c92){_0x2c1c92=_0x2c1c92||0xcc;return function(_0x374bb8){if(_0x374bb8){return _0x21867b['sendStatus'](_0x2c1c92);}return _0x21867b['status'](_0x2c1c92)[_0xcae1('0x1a')]();};}function respondWithResult(_0x190f52,_0x1e9f1a){_0x1e9f1a=_0x1e9f1a||0xc8;return function(_0x1d45b7){if(_0x1d45b7){return _0x190f52[_0xcae1('0x1b')](_0x1e9f1a)['json'](_0x1d45b7);}};}function respondWithFilteredResult(_0xe75364,_0x3483f8){return function(_0x3b4ae5){if(_0x3b4ae5){var _0x489950=typeof _0x3483f8[_0xcae1('0x1c')]===_0xcae1('0x1d')&&typeof _0x3483f8[_0xcae1('0x1e')]===_0xcae1('0x1d');var _0x42efa5=_0x3b4ae5[_0xcae1('0x1f')];var _0x18e7c0=_0x489950?0x0:_0x3483f8['offset'];var _0x31d6f4=_0x489950?_0x3b4ae5['count']:_0x3483f8[_0xcae1('0x1c')]+_0x3483f8[_0xcae1('0x1e')];var _0x6364a1;if(_0x31d6f4>=_0x42efa5){_0x31d6f4=_0x42efa5;_0x6364a1=0xc8;}else{_0x6364a1=0xce;}_0xe75364[_0xcae1('0x1b')](_0x6364a1);return _0xe75364[_0xcae1('0x20')](_0xcae1('0x21'),_0x18e7c0+'-'+_0x31d6f4+'/'+_0x42efa5)[_0xcae1('0x22')](_0x3b4ae5);}return null;};}function patchUpdates(_0x5b5942){return function(_0x33880c){try{jsonpatch['apply'](_0x33880c,_0x5b5942,!![]);}catch(_0x840653){return BPromise[_0xcae1('0x23')](_0x840653);}return _0x33880c[_0xcae1('0x24')]();};}function saveUpdates(_0x2dee30,_0x41873d){return function(_0x2f2ddf){if(_0x2f2ddf){return _0x2f2ddf[_0xcae1('0x25')](_0x2dee30)['then'](function(_0x38cc31){return _0x38cc31;});}return null;};}function removeEntity(_0x5a3deb,_0x115ad2){return function(_0x37e25c){if(_0x37e25c){return _0x37e25c[_0xcae1('0x26')]()[_0xcae1('0x27')](function(){_0x5a3deb[_0xcae1('0x1b')](0xcc)[_0xcae1('0x1a')]();});}};}function handleEntityNotFound(_0x14ecd3,_0x20b9b9){return function(_0x1c8824){if(!_0x1c8824){_0x14ecd3[_0xcae1('0x28')](0x194);}return _0x1c8824;};}function handleError(_0x42120c,_0xf950cc){_0xf950cc=_0xf950cc||0x1f4;return function(_0x40034b){logger['error'](_0x40034b[_0xcae1('0x29')]);if(_0x40034b[_0xcae1('0x2a')]){delete _0x40034b[_0xcae1('0x2a')];}_0x42120c[_0xcae1('0x1b')](_0xf950cc)[_0xcae1('0x2b')](_0x40034b);};}exports['index']=function(_0x41732b,_0x10ed44){var _0xcc594e={},_0x2e2788={},_0x3dfd73={'count':0x0,'rows':[]};var _0x1a691f=_[_0xcae1('0x2c')](db[_0xcae1('0x2d')][_0xcae1('0x2e')],function(_0x1605cd){return{'name':_0x1605cd['fieldName'],'type':_0x1605cd['type'][_0xcae1('0x2f')]};});_0x2e2788[_0xcae1('0x30')]=_[_0xcae1('0x31')](_[_0xcae1('0x2c')](_0x1a691f,'name'),['format']);_0x2e2788['query']=_['keys'](_0x41732b[_0xcae1('0x32')]);_0x2e2788[_0xcae1('0x33')]=_['intersection'](_0x2e2788[_0xcae1('0x30')],_0x2e2788['query']);_0xcc594e[_0xcae1('0x34')]=_[_0xcae1('0x35')](_0x2e2788['model'],qs[_0xcae1('0x36')](_0x41732b[_0xcae1('0x32')]['fields']));_0xcc594e['attributes']=_0xcc594e[_0xcae1('0x34')]['length']?_0xcc594e[_0xcae1('0x34')]:_0x2e2788['model'];if(!_0x41732b[_0xcae1('0x32')]['hasOwnProperty'](_0xcae1('0x37'))){_0xcc594e[_0xcae1('0x1e')]=qs[_0xcae1('0x1e')](_0x41732b[_0xcae1('0x32')][_0xcae1('0x1e')]);_0xcc594e[_0xcae1('0x1c')]=qs['offset'](_0x41732b['query'][_0xcae1('0x1c')]);}_0xcc594e['order']=qs['sort'](_0x41732b[_0xcae1('0x32')][_0xcae1('0x38')]);_0xcc594e['where']=qs[_0xcae1('0x33')](_[_0xcae1('0x39')](_0x41732b['query'],_0x2e2788[_0xcae1('0x33')]),_0x1a691f);if(_0x41732b[_0xcae1('0x32')][_0xcae1('0x3a')]){_0xcc594e['where']=_['merge'](_0xcc594e[_0xcae1('0x3b')],{'$or':_[_0xcae1('0x2c')](_0x1a691f,function(_0x33b442){if(_0x33b442[_0xcae1('0x3c')]!==_0xcae1('0x3d')){var _0x1cbd40={};_0x1cbd40[_0x33b442[_0xcae1('0x2a')]]={'$like':'%'+_0x41732b[_0xcae1('0x32')][_0xcae1('0x3a')]+'%'};return _0x1cbd40;}})});}_0xcc594e=_[_0xcae1('0x3e')]({},_0xcc594e,_0x41732b[_0xcae1('0x3f')]);var _0x40dd9f={'where':_0xcc594e['where']};return db[_0xcae1('0x2d')][_0xcae1('0x1f')](_0x40dd9f)[_0xcae1('0x27')](function(_0x229873){_0x3dfd73[_0xcae1('0x1f')]=_0x229873;if(_0x41732b[_0xcae1('0x32')][_0xcae1('0x40')]){_0xcc594e['include']=[{'all':!![]}];}return db[_0xcae1('0x2d')]['findAll'](_0xcc594e);})[_0xcae1('0x27')](function(_0xb82a60){_0x3dfd73[_0xcae1('0x41')]=_0xb82a60;return _0x3dfd73;})[_0xcae1('0x27')](respondWithFilteredResult(_0x10ed44,_0xcc594e))[_0xcae1('0x42')](handleError(_0x10ed44,null));};exports['show']=function(_0x18e243,_0x3b0c04){var _0x18fe78={'raw':![],'where':{'id':_0x18e243[_0xcae1('0x43')]['id']}},_0x3375d9={};_0x3375d9[_0xcae1('0x30')]=_[_0xcae1('0x44')](db[_0xcae1('0x2d')]['rawAttributes']);_0x3375d9[_0xcae1('0x32')]=_[_0xcae1('0x44')](_0x18e243[_0xcae1('0x32')]);_0x3375d9[_0xcae1('0x33')]=_[_0xcae1('0x35')](_0x3375d9['model'],_0x3375d9[_0xcae1('0x32')]);_0x18fe78[_0xcae1('0x34')]=_[_0xcae1('0x35')](_0x3375d9[_0xcae1('0x30')],qs['fields'](_0x18e243[_0xcae1('0x32')][_0xcae1('0x36')]));_0x18fe78[_0xcae1('0x34')]=_0x18fe78[_0xcae1('0x34')][_0xcae1('0x45')]?_0x18fe78[_0xcae1('0x34')]:_0x3375d9[_0xcae1('0x30')];if(_0x18e243['query'][_0xcae1('0x40')]){_0x18fe78['include']=[{'all':!![]}];}_0x18fe78=_[_0xcae1('0x3e')]({},_0x18fe78,_0x18e243[_0xcae1('0x3f')]);return db['VoiceRecording'][_0xcae1('0x46')](_0x18fe78)['then'](handleEntityNotFound(_0x3b0c04,null))[_0xcae1('0x27')](respondWithResult(_0x3b0c04,null))[_0xcae1('0x42')](handleError(_0x3b0c04,null));};exports[_0xcae1('0x47')]=function(_0x1f263e,_0x74efd0){return db[_0xcae1('0x2d')][_0xcae1('0x47')](_0x1f263e[_0xcae1('0x48')],{})[_0xcae1('0x27')](respondWithResult(_0x74efd0,0xc9))[_0xcae1('0x42')](handleError(_0x74efd0,null));};exports[_0xcae1('0x25')]=function(_0x564ab7,_0x493ec6){if(_0x564ab7['body']['id']){delete _0x564ab7[_0xcae1('0x48')]['id'];}return db[_0xcae1('0x2d')][_0xcae1('0x46')]({'where':{'id':_0x564ab7[_0xcae1('0x43')]['id']}})[_0xcae1('0x27')](handleEntityNotFound(_0x493ec6,null))[_0xcae1('0x27')](saveUpdates(_0x564ab7[_0xcae1('0x48')],null))[_0xcae1('0x27')](respondWithResult(_0x493ec6,null))['catch'](handleError(_0x493ec6,null));};exports[_0xcae1('0x49')]=function(_0xfe20a6,_0xa6d196){return db[_0xcae1('0x2d')][_0xcae1('0x49')]()[_0xcae1('0x27')](respondWithResult(_0xa6d196,null))['catch'](handleError(_0xa6d196,null));};exports[_0xcae1('0x4a')]=function(_0x17eb02,_0x3ce791,_0x355f79){var _0x31752b=require(_0xcae1('0x4b'));var _0x1859f5=![];var _0x3f0ece={};if(_0x17eb02[_0xcae1('0x32')]['type']&&_0x17eb02[_0xcae1('0x32')]['type']===_0xcae1('0x4c')){_0x3f0ece[_0xcae1('0x4c')]=_0x17eb02[_0xcae1('0x43')]['id'];}else{_0x3f0ece['id']=_0x17eb02[_0xcae1('0x43')]['id'];}return db['VoiceRecording']['find']({'where':_0x3f0ece,'attributes':['id',_0xcae1('0x4d')],'raw':!![]})['then'](handleEntityNotFound(_0x3ce791,null))[_0xcae1('0x27')](function(_0x46d0e2){if(_0x46d0e2){var _0xff3c9e=_0x46d0e2[_0xcae1('0x4d')];var _0x5c62dd=util[_0xcae1('0x4e')]('%s.cypher',_0xff3c9e);if(fs[_0xcae1('0x4f')](_0x5c62dd)){_0x1859f5=!![];return _0x31752b['decryptFile'](_0x5c62dd,_0xff3c9e,config[_0xcae1('0x50')][_0xcae1('0x51')])['then'](function(){return _0x46d0e2;});}return _0x46d0e2;}})['then'](function(_0x2e81bf){if(_0x2e81bf){var _0x54d437=_0x2e81bf[_0xcae1('0x4d')];if(!fs['existsSync'](_0x54d437)){throw new db['Sequelize'][(_0xcae1('0x52'))]('VoiceRecording\x20not\x20found');}if(_0x2e81bf['filename']){return _0x3ce791[_0xcae1('0x4a')](_0x54d437,_0x2e81bf[_0xcae1('0x53')]+path[_0xcae1('0x54')](_0x54d437),function(){if(_0x1859f5){fs[_0xcae1('0x55')](_0x54d437);}});}else{return _0x3ce791['download'](_0x54d437,function(_0x240251){if(_0x1859f5){fs[_0xcae1('0x55')](_0x54d437);}});}}})[_0xcae1('0x42')](function(_0x145e45){if(_0x145e45['message']===_0xcae1('0x56')){_0x3ce791['status'](0x194)[_0xcae1('0x2b')](_0xcae1('0x57'));}else{return handleError(_0x3ce791,null);}});};exports[_0xcae1('0x58')]=function(_0x37d487,_0x16b857,_0x5b3176){var _0x1e2964=require(_0xcae1('0x4b'));var _0x46732f=![];var _0x576bd5={'$and':[db[_0xcae1('0x59')][_0xcae1('0x3b')](db[_0xcae1('0x59')]['fn'](_0xcae1('0x5a'),db['sequelize'][_0xcae1('0x5b')](_0xcae1('0x4c'))),_0x37d487[_0xcae1('0x32')]['token'])]};if(_0x37d487[_0xcae1('0x32')]['type']&&_0x37d487['query']['type']===_0xcae1('0x4c')){_0x576bd5['$and'][_0xcae1('0x5c')]({'uniqueid':_0x37d487[_0xcae1('0x43')]['id']});}else{_0x576bd5[_0xcae1('0x5d')][_0xcae1('0x5c')]({'id':_0x37d487['params']['id']});}return db['VoiceRecording'][_0xcae1('0x46')]({'where':_0x576bd5,'attributes':['id',_0xcae1('0x4d')],'raw':!![]})[_0xcae1('0x27')](handleEntityNotFound(_0x16b857,null))[_0xcae1('0x27')](function(_0x3ebe8b){if(_0x3ebe8b){var _0x3a53ea=util[_0xcae1('0x4e')](_0xcae1('0x5e'),_0x3ebe8b[_0xcae1('0x4d')]);if(fs['existsSync'](_0x3a53ea)){_0x46732f=!![];return _0x1e2964[_0xcae1('0x5f')](_0x3a53ea,_0x3ebe8b[_0xcae1('0x4d')],config[_0xcae1('0x50')][_0xcae1('0x51')])['then'](function(){return _0x3ebe8b;});}return _0x3ebe8b;}})['then'](function(_0x19165f){if(_0x19165f){if(!fs[_0xcae1('0x4f')](_0x19165f['value'])){throw new db[(_0xcae1('0x60'))][(_0xcae1('0x52'))]('VoiceRecording\x20not\x20found');}if(_0x19165f['filename']){return _0x16b857[_0xcae1('0x4a')](_0x19165f[_0xcae1('0x4d')],_0x19165f[_0xcae1('0x53')]+path['extname'](_0x19165f[_0xcae1('0x4d')]),function(){if(_0x46732f){fs[_0xcae1('0x55')](_0x19165f['value']);}});}else{return _0x16b857[_0xcae1('0x4a')](_0x19165f[_0xcae1('0x4d')],function(_0x84350b){if(_0x46732f){fs[_0xcae1('0x55')](_0x19165f[_0xcae1('0x4d')]);}});}}})['catch'](handleError(_0x16b857,null));};exports['destroy']=function(_0x2fef1a,_0x59de5a){return db[_0xcae1('0x2d')]['find']({'where':{'id':_0x2fef1a[_0xcae1('0x43')]['id']}})[_0xcae1('0x27')](function(_0x166e40){if(_['isNil'](_0x166e40)){throw new ReferenceError(_0xcae1('0x61'));}return _0x166e40;})[_0xcae1('0x27')](function(_0x5bf463){var _0x541c8=_0x5bf463['value'];logger[_0xcae1('0x62')](_0xcae1('0x63'),_0x541c8);if(!_[_0xcae1('0x64')](_0x5bf463[_0xcae1('0x4d')])&&fs['existsSync'](_0x541c8)){logger['info'](_0xcae1('0x65')+_0x541c8+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xcae1('0x66')](_0x541c8);}_0x541c8=_0x541c8+'.cypher';if(!_['isNil'](_0x5bf463['value'])&&fs[_0xcae1('0x4f')](_0x541c8)){logger[_0xcae1('0x62')](_0xcae1('0x65')+_0x541c8+_0xcae1('0x67'));fs[_0xcae1('0x66')](_0x541c8);}return _0x5bf463;})[_0xcae1('0x27')](function(_0x265b3d){if(!_0x265b3d)throw new InternalError();return _0x265b3d[_0xcae1('0x26')]();})['then'](function(){_0x59de5a[_0xcae1('0x1b')](0xcc)[_0xcae1('0x1a')]();})[_0xcae1('0x42')](handleError(_0x59de5a,null));};function getBucketslist(_0x19fda5,_0x12350a,_0x2ab391){return new Promise(function(_0x39d7f7,_0xdaff1e){var _0x111c7b=new AWS['S3']({'accessKeyId':_0x12350a,'secretAccessKey':_0x19fda5,'region':_0x2ab391});_0x111c7b[_0xcae1('0x68')]({},function(_0xd10d00,_0x5641f5){if(_0xd10d00){return _0xdaff1e(_0xd10d00);}else{return _0x39d7f7(_0x5641f5);}});});}function createBucket(_0x199d30,_0x18ee57,_0x323732,_0x2140ec){return new Promise(function(_0x8ceeba,_0x563149){var _0x4dbb90=new AWS['S3']({'accessKeyId':_0x18ee57,'secretAccessKey':_0x199d30,'region':_0x323732});_0x4dbb90['createBucket']({'Bucket':_0x2140ec},function(_0x345e75,_0xdde312){if(_0x345e75){return _0x563149(_0x345e75);}else{return _0x8ceeba(_0xdde312);}});});}function uploadFile(_0x4c2132,_0x41a3be,_0x353804,_0x3787dd,_0x3f2060,_0x16247d){return new Promise(function(_0x34b9db,_0x26101b){var _0x24b83b=new AWS['S3']({'accessKeyId':_0x41a3be,'secretAccessKey':_0x4c2132,'region':_0x353804});_0x24b83b[_0xcae1('0x69')]({'Bucket':_0x3787dd,'Key':_0x3f2060,'Body':_0x16247d},function(_0x160481,_0x5d5352){if(_0x160481){return _0x26101b(_0x160481);}else{return _0x34b9db(_0x5d5352);}});});}function startTranscribe(_0x2d0d16,_0x5dd372,_0x2ba717,_0x5da617,_0xbf2361,_0xe4396f){return new Promise(function(_0x37ca4e,_0x57c682){var _0x38f160=new AWS['TranscribeService']({'accessKeyId':_0x5dd372,'secretAccessKey':_0x2d0d16,'region':_0x2ba717});_0x38f160['startTranscriptionJob']({'TranscriptionJobName':_0x5da617,'LanguageCode':_0xbf2361,'Media':{'MediaFileUri':_0xe4396f}},function(_0x2c925a,_0xe10828){if(_0x2c925a){return _0x57c682(_0x2c925a);}else{return _0x37ca4e(_0xe10828);}});});}function transcribe(_0x243b7d,_0xdab462,_0x4db559,_0x5e0a25,_0x1aed9a,_0x5c4008,_0x1b2803){return new Promise(function(_0x44f7f1,_0x25a5ec){var _0x3e5d0e={};logger[_0xcae1('0x62')](util[_0xcae1('0x4e')](_0xcae1('0x6a'),_0x243b7d,_0x1aed9a));return uploadFile(_0xdab462,_0x4db559,_0x5e0a25,_0x1aed9a,path[_0xcae1('0x6b')](_0x5c4008),fs[_0xcae1('0x6c')](_0x5c4008))[_0xcae1('0x27')](function(_0xe217c4){logger['info'](util[_0xcae1('0x4e')](_0xcae1('0x6d'),_0x243b7d,_0x1aed9a,_0xe217c4[_0xcae1('0x6e')]));_0x3e5d0e['bucket']=_0xe217c4[_0xcae1('0x6f')];_0x3e5d0e['location']=_0xe217c4['Location'];logger['info'](util[_0xcae1('0x4e')](_0xcae1('0x70'),_0x243b7d));return startTranscribe(_0xdab462,_0x4db559,_0x5e0a25,uuidv4(),_0x1b2803,_0xe217c4[_0xcae1('0x6e')]);})['then'](function(_0x371f37){logger[_0xcae1('0x62')](util[_0xcae1('0x4e')]('[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created',_0x243b7d,_0x371f37[_0xcae1('0x71')][_0xcae1('0x72')]));_0x3e5d0e[_0xcae1('0x73')]=_0x371f37[_0xcae1('0x71')][_0xcae1('0x72')];_0x3e5d0e['transcribeStatus']=_0x371f37['TranscriptionJob'][_0xcae1('0x74')];return _0x44f7f1(_0x3e5d0e);})[_0xcae1('0x42')](function(_0x309494){return _0x25a5ec(_0x309494);});});}exports[_0xcae1('0x75')]=function(_0x5593d8,_0x5a8ba,_0x296997){var _0x360c44;var _0x5def5d;var _0x27ca7b;var _0x316119=require('../../components/encryptor');return db['VoiceRecording'][_0xcae1('0x76')]({'where':{'id':_0x5593d8[_0xcae1('0x43')]['id']}})[_0xcae1('0x27')](function(_0x496073){if(_0x496073){var _0x5130e0=util[_0xcae1('0x4e')](_0xcae1('0x5e'),_0x496073[_0xcae1('0x4d')]);if(fs['existsSync'](_0x5130e0)){cypher=!![];return _0x316119[_0xcae1('0x5f')](_0x5130e0,_0x496073['value'],config[_0xcae1('0x50')][_0xcae1('0x51')])['then'](function(){return _0x496073;});}return _0x496073;}})['then'](function(_0x501981){if(!_0x501981){throw new db['Sequelize']['ValidationError'](_0xcae1('0x77'));}_0x5def5d=_0x501981;return db[_0xcae1('0x78')][_0xcae1('0x76')]({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0x5a8ba,null))[_0xcae1('0x27')](function(_0x175c46){if(_0x175c46){_0x360c44=_0x175c46;if(!_0x360c44[_0xcae1('0x79')]||!_0x360c44[_0xcae1('0x7a')]||!_0x360c44[_0xcae1('0x7b')]||!_0x360c44[_0xcae1('0x7c')]||!_0x360c44[_0xcae1('0x7d')]){throw new db[(_0xcae1('0x60'))][(_0xcae1('0x52'))](_0xcae1('0x7e'));}if(_0x5593d8[_0xcae1('0x48')][_0xcae1('0x7f')]&&(!_0x360c44[_0xcae1('0x80')]||!_0x360c44[_0xcae1('0x81')]||!_0x360c44[_0xcae1('0x82')]||!_0x360c44[_0xcae1('0x7c')]||!_0x360c44['bucket'])){throw new db['Sequelize'][(_0xcae1('0x52'))](_0xcae1('0x83'));}return db[_0xcae1('0x84')][_0xcae1('0x76')]({'where':{'id':_0x360c44[_0xcae1('0x7a')]}});}})[_0xcae1('0x27')](function(_0x48b106){if(!_0x48b106){throw new db['Sequelize'][(_0xcae1('0x52'))](_0xcae1('0x85'));}if(!_0x48b106['data1']||!_0x48b106[_0xcae1('0x86')]){throw new db['Sequelize']['ValidationError'](_0xcae1('0x87'));}_0x27ca7b=_0x48b106;return getBucketslist(_0x27ca7b[_0xcae1('0x88')],_0x27ca7b[_0xcae1('0x86')],_0x360c44[_0xcae1('0x7b')]);})[_0xcae1('0x27')](function(_0x40fc5d){if(_0x40fc5d&&_0x40fc5d[_0xcae1('0x89')]){var _0x33f22d=_[_0xcae1('0x46')](_0x40fc5d[_0xcae1('0x89')],function(_0x14a2eb){return _0x14a2eb[_0xcae1('0x8a')]===_0x360c44[_0xcae1('0x7d')];});if(!_0x33f22d){logger[_0xcae1('0x62')](util['format'](_0xcae1('0x8b'),_0x5593d8[_0xcae1('0x43')]['id'],_0x360c44[_0xcae1('0x7d')]));return createBucket(_0x27ca7b[_0xcae1('0x88')],_0x27ca7b[_0xcae1('0x86')],_0x360c44[_0xcae1('0x7b')],_0x360c44[_0xcae1('0x7d')]);}logger[_0xcae1('0x62')](util[_0xcae1('0x4e')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available',_0x5593d8[_0xcae1('0x43')]['id'],_0x360c44[_0xcae1('0x7d')]));return;}})[_0xcae1('0x27')](function(_0x1be3d0){if(_0x5def5d[_0xcae1('0x8c')]===_0xcae1('0x8d')){return transcribe(_0x5593d8[_0xcae1('0x43')]['id'],_0x27ca7b[_0xcae1('0x88')],_0x27ca7b[_0xcae1('0x86')],_0x360c44[_0xcae1('0x7b')],_0x360c44[_0xcae1('0x7d')],_0x5def5d[_0xcae1('0x4d')],_0x360c44['language']);}else{logger[_0xcae1('0x62')](util[_0xcae1('0x4e')](_0xcae1('0x8e'),_0x5593d8[_0xcae1('0x43')]['id']));return{'transcribeStatus':'IN_PROGRESS'};}})[_0xcae1('0x27')](function(_0x427228){if(_0x427228){_0x427228[_0xcae1('0x8f')]=_0x5593d8[_0xcae1('0x48')]['runSentiment'];return _0x5def5d[_0xcae1('0x90')](_0x427228);}})['then'](respondWithResult(_0x5a8ba,null))[_0xcae1('0x42')](handleError(_0x5a8ba,null));};function writeFile(_0x3019e2,_0x25adc4){return new Promise(function(_0x3bf30f,_0xe7be01){fs[_0xcae1('0x91')](_0x25adc4,_0x3019e2,function(_0x34b474,_0x326976){if(_0x34b474){return _0xe7be01(_0x34b474);}else{return _0x3bf30f(_0x326976);}});});}exports[_0xcae1('0x92')]=function(_0x40a155,_0x125785,_0x3363fc){return db['VoiceRecording']['findOne']({'where':{'id':_0x40a155[_0xcae1('0x43')]['id']}})['then'](handleEntityNotFound(_0x125785))[_0xcae1('0x27')](function(_0x4d9c8d){if(_0x4d9c8d&&_0x4d9c8d[_0xcae1('0x93')]){var _0x485cc3=_0x4d9c8d[_0xcae1('0x93')];var _0x4a54d2=config[_0xcae1('0x94')]+'/server/files/transcribes/transcribe_'+_0x4d9c8d['id']+_0xcae1('0x95');if(fs[_0xcae1('0x4f')](_0x4a54d2)){return _0x4a54d2;}return writeFile(_0x485cc3,_0x4a54d2)[_0xcae1('0x27')](function(){return _0x4a54d2;});}else{throw new db['Sequelize']['ValidationError'](_0xcae1('0x96'));}})[_0xcae1('0x27')](function(_0x407db4){return _0x125785['download'](_0x407db4);})[_0xcae1('0x42')](handleError(_0x125785));};
\ No newline at end of file
index b599a37..fcbbec1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76d5=['define','VoiceRecording','voice_recordings','uniqueid','lodash','api','moment','path','rimraf','../../config/environment','./voiceRecording.attributes'];(function(_0xc0a3d3,_0x2c8d00){var _0x3386e8=function(_0x3f9df4){while(--_0x3f9df4){_0xc0a3d3['push'](_0xc0a3d3['shift']());}};_0x3386e8(++_0x2c8d00);}(_0x76d5,0x19b));var _0x576d=function(_0x3bd885,_0x440155){_0x3bd885=_0x3bd885-0x0;var _0x5f5791=_0x76d5[_0x3bd885];return _0x5f5791;};'use strict';var _=require(_0x576d('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x576d('0x1'));var moment=require(_0x576d('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x576d('0x3'));var rimraf=require(_0x576d('0x4'));var config=require(_0x576d('0x5'));var attributes=require(_0x576d('0x6'));module['exports']=function(_0x1fec3e,_0x1d7f08){return _0x1fec3e[_0x576d('0x7')](_0x576d('0x8'),attributes,{'tableName':_0x576d('0x9'),'paranoid':![],'indexes':[{'name':_0x576d('0xa'),'fields':[_0x576d('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4373=['exports','define','VoiceRecording','voice_recordings','lodash','api','request-promise','path','rimraf','../../config/environment'];(function(_0x3a6efd,_0x2a5102){var _0x487b9a=function(_0x104f89){while(--_0x104f89){_0x3a6efd['push'](_0x3a6efd['shift']());}};_0x487b9a(++_0x2a5102);}(_0x4373,0xfe));var _0x3437=function(_0x393559,_0x436ab9){_0x393559=_0x393559-0x0;var _0x5c4950=_0x4373[_0x393559];return _0x5c4950;};'use strict';var _=require(_0x3437('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3437('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3437('0x2'));var fs=require('fs');var path=require(_0x3437('0x3'));var rimraf=require(_0x3437('0x4'));var config=require(_0x3437('0x5'));var attributes=require('./voiceRecording.attributes');module[_0x3437('0x6')]=function(_0x386e02,_0x2a5840){return _0x386e02[_0x3437('0x7')](_0x3437('0x8'),attributes,{'tableName':_0x3437('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 4875527..c83cf7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2542=['catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceRecording,\x20%s,\x20%s','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','UpdateVoiceRecording','update','body','options','raw','where','limit','../../components/encryptor','Setting','callRecordingEncryption','VoiceRecording','create','existsSync','value','format','%s.cypher','encryptFile','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording'];(function(_0x26eecf,_0x360096){var _0x1cf849=function(_0x44f8be){while(--_0x44f8be){_0x26eecf['push'](_0x26eecf['shift']());}};_0x1cf849(++_0x360096);}(_0x2542,0x169));var _0x2254=function(_0x387969,_0x24921c){_0x387969=_0x387969-0x0;var _0x4a77ce=_0x2542[_0x387969];return _0x4a77ce;};'use strict';var _=require(_0x2254('0x0'));var util=require(_0x2254('0x1'));var moment=require(_0x2254('0x2'));var BPromise=require(_0x2254('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2254('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2254('0x5'));var logger=require(_0x2254('0x6'))(_0x2254('0x7'));var config=require(_0x2254('0x8'));var jayson=require(_0x2254('0x9'));var client=jayson['client'][_0x2254('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe8ca50,_0x2ee7ee,_0x3c45ec){return new BPromise(function(_0x1637ad,_0x477b47){return client[_0x2254('0xb')](_0xe8ca50,_0x3c45ec)[_0x2254('0xc')](function(_0xb395da){logger[_0x2254('0xd')](_0x2254('0xe'),_0x2ee7ee,'request\x20sent');logger[_0x2254('0xf')](_0x2254('0x10'),_0x2ee7ee,_0x2254('0x11'),JSON[_0x2254('0x12')](_0xb395da));if(_0xb395da['error']){if(_0xb395da['error'][_0x2254('0x13')]===0x1f4){logger[_0x2254('0x14')](_0x2254('0xe'),_0x2ee7ee,_0xb395da[_0x2254('0x14')][_0x2254('0x15')]);return _0x477b47(_0xb395da[_0x2254('0x14')]['message']);}logger[_0x2254('0x14')](_0x2254('0xe'),_0x2ee7ee,_0xb395da['error'][_0x2254('0x15')]);return _0x1637ad(_0xb395da[_0x2254('0x14')][_0x2254('0x15')]);}else{logger[_0x2254('0xd')](_0x2254('0xe'),_0x2ee7ee,_0x2254('0x11'));_0x1637ad(_0xb395da['result'][_0x2254('0x15')]);}})['catch'](function(_0x327d6d){logger[_0x2254('0x14')](_0x2254('0xe'),_0x2ee7ee,_0x327d6d);_0x477b47(_0x327d6d);});});}exports[_0x2254('0x16')]=function(_0x1ae11e){var _0x34f90e=this;return new Promise(function(_0x497724,_0x51b395){return db['VoiceRecording'][_0x2254('0x17')](_0x1ae11e[_0x2254('0x18')],{'raw':_0x1ae11e[_0x2254('0x19')]?_0x1ae11e[_0x2254('0x19')][_0x2254('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ae11e[_0x2254('0x19')]?_0x1ae11e['options'][_0x2254('0x1b')]||null:null,'attributes':_0x1ae11e[_0x2254('0x19')]?_0x1ae11e[_0x2254('0x19')]['attributes']||null:null,'limit':_0x1ae11e['options']?_0x1ae11e['options'][_0x2254('0x1c')]||null:null})[_0x2254('0xc')](function(_0xf88b56){logger['info']('UpdateVoiceRecording',_0x1ae11e);logger['debug']('UpdateVoiceRecording',_0x1ae11e,JSON['stringify'](_0xf88b56));_0x497724(_0xf88b56);})['catch'](function(_0x1aa71f){logger[_0x2254('0x14')](_0x2254('0x16'),_0x1aa71f[_0x2254('0x15')],_0x1ae11e);_0x51b395(_0x34f90e[_0x2254('0x14')](0x1f4,_0x1aa71f[_0x2254('0x15')]));});});};exports['CreateVoiceRecording']=function(_0x4a8274){var _0x1ada42=this;return new Promise(function(_0x4f6877,_0x35608a){var _0x141dc5=require(_0x2254('0x1d'));var _0x3aa0bd;return db[_0x2254('0x1e')]['findOne']({'attributes':['id',_0x2254('0x1f')],'where':{'id':0x1},'raw':!![]})[_0x2254('0xc')](function(_0x21285d){_0x3aa0bd=_0x21285d;return db[_0x2254('0x20')][_0x2254('0x21')](_0x4a8274[_0x2254('0x18')]);})[_0x2254('0xc')](function(_0x22e791){if(_0x3aa0bd[_0x2254('0x1f')]&&fs[_0x2254('0x22')](_0x22e791[_0x2254('0x23')])){var _0xad7774=util[_0x2254('0x24')](_0x2254('0x25'),_0x22e791[_0x2254('0x23')]);return _0x141dc5[_0x2254('0x26')](_0x22e791[_0x2254('0x23')],_0xad7774,config[_0x2254('0x27')][_0x2254('0x28')])['then'](function(){fs[_0x2254('0x29')](_0x22e791[_0x2254('0x23')]);logger[_0x2254('0xd')](_0x2254('0x2a'));return _0x22e791;});}return _0x22e791;})[_0x2254('0xc')](function(_0x1d275b){logger[_0x2254('0xd')](_0x2254('0x2b'),_0x4a8274);logger[_0x2254('0xf')]('CreateVoiceRecording',_0x4a8274,JSON[_0x2254('0x12')](_0x1d275b));_0x4f6877(_0x1d275b);})[_0x2254('0x2c')](function(_0x503540){logger[_0x2254('0x14')](_0x2254('0x2b'),_0x503540[_0x2254('0x15')],_0x4a8274);_0x35608a(_0x1ada42[_0x2254('0x14')](0x1f4,_0x503540['message']));});});};
\ No newline at end of file
+var _0x90b1=['request','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateVoiceRecording','VoiceRecording','update','body','options','raw','where','limit','then','../../components/encryptor','findOne','callRecordingEncryption','create','existsSync','%s.cypher','encryptFile','value','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','http'];(function(_0x1d0499,_0x23e22f){var _0x153fb3=function(_0x40c19c){while(--_0x40c19c){_0x1d0499['push'](_0x1d0499['shift']());}};_0x153fb3(++_0x23e22f);}(_0x90b1,0x1bb));var _0x190b=function(_0xe4034a,_0x3459b2){_0xe4034a=_0xe4034a-0x0;var _0x189750=_0x90b1[_0xe4034a];return _0x189750;};'use strict';var _=require(_0x190b('0x0'));var util=require(_0x190b('0x1'));var moment=require(_0x190b('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x190b('0x3'));var db=require(_0x190b('0x4'))['db'];var utils=require(_0x190b('0x5'));var logger=require(_0x190b('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x190b('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x34a689,_0x3b57f7,_0x626aa1){return new BPromise(function(_0x311161,_0x802924){return client[_0x190b('0x8')](_0x34a689,_0x626aa1)['then'](function(_0x14b93d){logger[_0x190b('0x9')](_0x190b('0xa'),_0x3b57f7,_0x190b('0xb'));logger[_0x190b('0xc')](_0x190b('0xd'),_0x3b57f7,_0x190b('0xb'),JSON[_0x190b('0xe')](_0x14b93d));if(_0x14b93d['error']){if(_0x14b93d[_0x190b('0xf')][_0x190b('0x10')]===0x1f4){logger['error'](_0x190b('0xa'),_0x3b57f7,_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);return _0x802924(_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);}logger[_0x190b('0xf')](_0x190b('0xa'),_0x3b57f7,_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);return _0x311161(_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);}else{logger[_0x190b('0x9')](_0x190b('0xa'),_0x3b57f7,_0x190b('0xb'));_0x311161(_0x14b93d[_0x190b('0x12')][_0x190b('0x11')]);}})[_0x190b('0x13')](function(_0x5c63d9){logger[_0x190b('0xf')]('VoiceRecording,\x20%s,\x20%s',_0x3b57f7,_0x5c63d9);_0x802924(_0x5c63d9);});});}exports[_0x190b('0x14')]=function(_0x21e458){var _0x56d07a=this;return new Promise(function(_0x16c009,_0x50a3c4){return db[_0x190b('0x15')][_0x190b('0x16')](_0x21e458[_0x190b('0x17')],{'raw':_0x21e458[_0x190b('0x18')]?_0x21e458[_0x190b('0x18')][_0x190b('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21e458['options']?_0x21e458[_0x190b('0x18')][_0x190b('0x1a')]||null:null,'attributes':_0x21e458['options']?_0x21e458[_0x190b('0x18')]['attributes']||null:null,'limit':_0x21e458['options']?_0x21e458[_0x190b('0x18')][_0x190b('0x1b')]||null:null})[_0x190b('0x1c')](function(_0x4c0b6e){logger[_0x190b('0x9')](_0x190b('0x14'),_0x21e458);logger[_0x190b('0xc')](_0x190b('0x14'),_0x21e458,JSON[_0x190b('0xe')](_0x4c0b6e));_0x16c009(_0x4c0b6e);})[_0x190b('0x13')](function(_0x1bce97){logger['error']('UpdateVoiceRecording',_0x1bce97[_0x190b('0x11')],_0x21e458);_0x50a3c4(_0x56d07a[_0x190b('0xf')](0x1f4,_0x1bce97['message']));});});};exports['CreateVoiceRecording']=function(_0x3260d5){var _0x4e2a93=this;return new Promise(function(_0x328e5e,_0x3b6aaf){var _0x51f8b4=require(_0x190b('0x1d'));var _0x1deea6;return db['Setting'][_0x190b('0x1e')]({'attributes':['id',_0x190b('0x1f')],'where':{'id':0x1},'raw':!![]})[_0x190b('0x1c')](function(_0x494f3f){_0x1deea6=_0x494f3f;return db['VoiceRecording'][_0x190b('0x20')](_0x3260d5['body']);})[_0x190b('0x1c')](function(_0x19e421){if(_0x1deea6['callRecordingEncryption']&&fs[_0x190b('0x21')](_0x19e421['value'])){var _0x40d060=util['format'](_0x190b('0x22'),_0x19e421['value']);return _0x51f8b4[_0x190b('0x23')](_0x19e421[_0x190b('0x24')],_0x40d060,config['secrets'][_0x190b('0x25')])[_0x190b('0x1c')](function(){fs[_0x190b('0x26')](_0x19e421[_0x190b('0x24')]);logger[_0x190b('0x9')](_0x190b('0x27'));return _0x19e421;});}return _0x19e421;})[_0x190b('0x1c')](function(_0x248919){logger['info']('CreateVoiceRecording',_0x3260d5);logger[_0x190b('0xc')](_0x190b('0x28'),_0x3260d5,JSON['stringify'](_0x248919));_0x328e5e(_0x248919);})[_0x190b('0x13')](function(_0x2dcd39){logger[_0x190b('0xf')](_0x190b('0x28'),_0x2dcd39[_0x190b('0x11')],_0x3260d5);_0x3b6aaf(_0x4e2a93[_0x190b('0xf')](0x1f4,_0x2dcd39[_0x190b('0x11')]));});});};
\ No newline at end of file
index e507ff1..799b5d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c66=['Router','fs-extra','../../components/auth/service','./voiceTransferReport.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x2d2d37,_0x5778a6){var _0x55bbce=function(_0x319445){while(--_0x319445){_0x2d2d37['push'](_0x2d2d37['shift']());}};_0x55bbce(++_0x5778a6);}(_0x3c66,0x1ef));var _0x63c6=function(_0x26cbce,_0x44addd){_0x26cbce=_0x26cbce-0x0;var _0xf052c3=_0x3c66[_0x26cbce];return _0xf052c3;};'use strict';var multer=require(_0x63c6('0x0'));var util=require(_0x63c6('0x1'));var path=require(_0x63c6('0x2'));var timeout=require(_0x63c6('0x3'));var express=require(_0x63c6('0x4'));var router=express[_0x63c6('0x5')]();var fs_extra=require(_0x63c6('0x6'));var auth=require(_0x63c6('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x63c6('0x8'));router[_0x63c6('0x9')]('/',auth['isAuthenticated'](),controller[_0x63c6('0xa')]);router[_0x63c6('0x9')]('/describe',auth['isAuthenticated'](),controller['describe']);router['get'](_0x63c6('0xb'),auth[_0x63c6('0xc')](),controller[_0x63c6('0xd')]);router[_0x63c6('0xe')]('/',auth[_0x63c6('0xc')](),controller[_0x63c6('0xf')]);router[_0x63c6('0x10')](_0x63c6('0xb'),auth['isAuthenticated'](),controller[_0x63c6('0x11')]);router['delete'](_0x63c6('0xb'),auth[_0x63c6('0xc')](),controller[_0x63c6('0x12')]);module[_0x63c6('0x13')]=router;
\ No newline at end of file
+var _0x73ea=['../../config/environment','get','isAuthenticated','index','/describe','/:id','show','post','create','put','delete','destroy','multer','util','path','connect-timeout','express','Router'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x73ea,0x9c));var _0xa73e=function(_0x5a5275,_0x3d8220){_0x5a5275=_0x5a5275-0x0;var _0x3b8d03=_0x73ea[_0x5a5275];return _0x3b8d03;};'use strict';var multer=require(_0xa73e('0x0'));var util=require(_0xa73e('0x1'));var path=require(_0xa73e('0x2'));var timeout=require(_0xa73e('0x3'));var express=require(_0xa73e('0x4'));var router=express[_0xa73e('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xa73e('0x6'));var controller=require('./voiceTransferReport.controller');router[_0xa73e('0x7')]('/',auth[_0xa73e('0x8')](),controller[_0xa73e('0x9')]);router[_0xa73e('0x7')](_0xa73e('0xa'),auth[_0xa73e('0x8')](),controller['describe']);router[_0xa73e('0x7')](_0xa73e('0xb'),auth[_0xa73e('0x8')](),controller[_0xa73e('0xc')]);router[_0xa73e('0xd')]('/',auth[_0xa73e('0x8')](),controller[_0xa73e('0xe')]);router[_0xa73e('0xf')](_0xa73e('0xb'),auth[_0xa73e('0x8')](),controller['update']);router[_0xa73e('0x10')](_0xa73e('0xb'),auth[_0xa73e('0x8')](),controller[_0xa73e('0x11')]);module['exports']=router;
\ No newline at end of file
index d7a04d0..8d95b30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16fc=['attended','STRING','Yes','sequelize','moment','exports','ENUM','blind'];(function(_0x130dac,_0x4799d4){var _0x4d2555=function(_0x370c2f){while(--_0x370c2f){_0x130dac['push'](_0x130dac['shift']());}};_0x4d2555(++_0x4799d4);}(_0x16fc,0x83));var _0xc16f=function(_0x48b66d,_0x16a9df){_0x48b66d=_0x48b66d-0x0;var _0x4a3d04=_0x16fc[_0x48b66d];return _0x4a3d04;};'use strict';var Sequelize=require(_0xc16f('0x0'));var moment=require(_0xc16f('0x1'));module[_0xc16f('0x2')]={'type':{'type':Sequelize[_0xc16f('0x3')](_0xc16f('0x4'),_0xc16f('0x5'))},'result':{'type':Sequelize[_0xc16f('0x6')]},'transfererchannel':{'type':Sequelize[_0xc16f('0x6')]},'transferercalleridnum':{'type':Sequelize[_0xc16f('0x6')]},'transferercalleridname':{'type':Sequelize[_0xc16f('0x6')]},'transfererconnectedlinenum':{'type':Sequelize[_0xc16f('0x6')]},'transfererconnectedlinename':{'type':Sequelize[_0xc16f('0x6')]},'transfereraccountcode':{'type':Sequelize[_0xc16f('0x6')]},'transferercontext':{'type':Sequelize['STRING']},'transfererexten':{'type':Sequelize[_0xc16f('0x6')]},'transfererlinkedid':{'type':Sequelize[_0xc16f('0x6')]},'transfereechannel':{'type':Sequelize[_0xc16f('0x6')]},'transfereecalleridnum':{'type':Sequelize[_0xc16f('0x6')]},'transfereecalleridname':{'type':Sequelize['STRING']},'transfereeconnectedlinenum':{'type':Sequelize[_0xc16f('0x6')]},'transfereeconnectedlinename':{'type':Sequelize[_0xc16f('0x6')]},'transfereeaccountcode':{'type':Sequelize[_0xc16f('0x6')]},'transfereecontext':{'type':Sequelize[_0xc16f('0x6')]},'transfereeexten':{'type':Sequelize[_0xc16f('0x6')]},'transfereelinkedid':{'type':Sequelize[_0xc16f('0x6')]},'isexternal':{'type':Sequelize[_0xc16f('0x3')](_0xc16f('0x7'),'No')},'context':{'type':Sequelize[_0xc16f('0x6')]},'extension':{'type':Sequelize[_0xc16f('0x6')]}};
\ No newline at end of file
+var _0x139b=['sequelize','moment','exports','ENUM','blind','attended','STRING'];(function(_0x30ad7b,_0x138913){var _0x3788de=function(_0x1991ff){while(--_0x1991ff){_0x30ad7b['push'](_0x30ad7b['shift']());}};_0x3788de(++_0x138913);}(_0x139b,0xf5));var _0xb139=function(_0x3332ec,_0x2bb80f){_0x3332ec=_0x3332ec-0x0;var _0x1a6934=_0x139b[_0x3332ec];return _0x1a6934;};'use strict';var Sequelize=require(_0xb139('0x0'));var moment=require(_0xb139('0x1'));module[_0xb139('0x2')]={'type':{'type':Sequelize[_0xb139('0x3')](_0xb139('0x4'),_0xb139('0x5'))},'result':{'type':Sequelize['STRING']},'transfererchannel':{'type':Sequelize[_0xb139('0x6')]},'transferercalleridnum':{'type':Sequelize[_0xb139('0x6')]},'transferercalleridname':{'type':Sequelize[_0xb139('0x6')]},'transfererconnectedlinenum':{'type':Sequelize[_0xb139('0x6')]},'transfererconnectedlinename':{'type':Sequelize['STRING']},'transfereraccountcode':{'type':Sequelize[_0xb139('0x6')]},'transferercontext':{'type':Sequelize[_0xb139('0x6')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize[_0xb139('0x6')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0xb139('0x6')]},'transfereeconnectedlinenum':{'type':Sequelize[_0xb139('0x6')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0xb139('0x6')]},'transfereecontext':{'type':Sequelize[_0xb139('0x6')]},'transfereeexten':{'type':Sequelize[_0xb139('0x6')]},'transfereelinkedid':{'type':Sequelize[_0xb139('0x6')]},'isexternal':{'type':Sequelize[_0xb139('0x3')]('Yes','No')},'context':{'type':Sequelize[_0xb139('0x6')]},'extension':{'type':Sequelize[_0xb139('0x6')]}};
\ No newline at end of file
index f30033d..8efe391 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9053=['fast-json-patch','request-promise','moment','mustache','util','path','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','index','map','VoiceTransferReport','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','catch','create','body','find','describe','eml-format','rimraf','zip-dir'];(function(_0x15c618,_0x1cb4c6){var _0x536358=function(_0x45ecdf){while(--_0x45ecdf){_0x15c618['push'](_0x15c618['shift']());}};_0x536358(++_0x1cb4c6);}(_0x9053,0xde));var _0x3905=function(_0x56e4e7,_0x1db098){_0x56e4e7=_0x56e4e7-0x0;var _0x383618=_0x9053[_0x56e4e7];return _0x383618;};'use strict';var emlformat=require(_0x3905('0x0'));var rimraf=require(_0x3905('0x1'));var zipdir=require(_0x3905('0x2'));var jsonpatch=require(_0x3905('0x3'));var rp=require(_0x3905('0x4'));var moment=require(_0x3905('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x3905('0x6'));var util=require(_0x3905('0x7'));var path=require(_0x3905('0x8'));var sox=require('sox');var csv=require(_0x3905('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3905('0xa'));var squel=require(_0x3905('0xb'));var crypto=require(_0x3905('0xc'));var jsforce=require(_0x3905('0xd'));var deskjs=require(_0x3905('0xe'));var toCsv=require(_0x3905('0x9'));var querystring=require(_0x3905('0xf'));var Papa=require(_0x3905('0x10'));var Redis=require(_0x3905('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x3905('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3905('0x13'));var logger=require(_0x3905('0x14'))(_0x3905('0x15'));var utils=require('../../config/utils');var config=require(_0x3905('0x16'));var licenseUtil=require(_0x3905('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x191655,_0x47a440){_0x47a440=_0x47a440||0xcc;return function(_0x41b647){if(_0x41b647){return _0x191655[_0x3905('0x18')](_0x47a440);}return _0x191655['status'](_0x47a440)[_0x3905('0x19')]();};}function respondWithResult(_0x4100d5,_0x2d8a5e){_0x2d8a5e=_0x2d8a5e||0xc8;return function(_0xc94152){if(_0xc94152){return _0x4100d5[_0x3905('0x1a')](_0x2d8a5e)[_0x3905('0x1b')](_0xc94152);}};}function respondWithFilteredResult(_0x2867d3,_0x13d2c4){return function(_0x3fb7bc){if(_0x3fb7bc){var _0x24c256=typeof _0x13d2c4[_0x3905('0x1c')]===_0x3905('0x1d')&&typeof _0x13d2c4[_0x3905('0x1e')]===_0x3905('0x1d');var _0x360dc7=_0x3fb7bc[_0x3905('0x1f')];var _0x55dfa5=_0x24c256?0x0:_0x13d2c4[_0x3905('0x1c')];var _0x5baf3e=_0x24c256?_0x3fb7bc['count']:_0x13d2c4['offset']+_0x13d2c4[_0x3905('0x1e')];var _0x1059a9;if(_0x5baf3e>=_0x360dc7){_0x5baf3e=_0x360dc7;_0x1059a9=0xc8;}else{_0x1059a9=0xce;}_0x2867d3[_0x3905('0x1a')](_0x1059a9);return _0x2867d3[_0x3905('0x20')]('Content-Range',_0x55dfa5+'-'+_0x5baf3e+'/'+_0x360dc7)[_0x3905('0x1b')](_0x3fb7bc);}return null;};}function patchUpdates(_0x2c86a5){return function(_0x456d65){try{jsonpatch[_0x3905('0x21')](_0x456d65,_0x2c86a5,!![]);}catch(_0x242ad8){return BPromise[_0x3905('0x22')](_0x242ad8);}return _0x456d65[_0x3905('0x23')]();};}function saveUpdates(_0x397343,_0x50a091){return function(_0x49f2eb){if(_0x49f2eb){return _0x49f2eb[_0x3905('0x24')](_0x397343)[_0x3905('0x25')](function(_0x56c52d){return _0x56c52d;});}return null;};}function removeEntity(_0xf20eac,_0x13fa13){return function(_0x2754a3){if(_0x2754a3){return _0x2754a3[_0x3905('0x26')]()['then'](function(){_0xf20eac[_0x3905('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2cb816,_0x3b2555){return function(_0x41472e){if(!_0x41472e){_0x2cb816[_0x3905('0x18')](0x194);}return _0x41472e;};}function handleError(_0x4b1649,_0x1d11f3){_0x1d11f3=_0x1d11f3||0x1f4;return function(_0x456569){logger[_0x3905('0x27')](_0x456569[_0x3905('0x28')]);if(_0x456569[_0x3905('0x29')]){delete _0x456569['name'];}_0x4b1649[_0x3905('0x1a')](_0x1d11f3)['send'](_0x456569);};}exports[_0x3905('0x2a')]=function(_0x138ac9,_0x4a98a1){var _0x5224c6={},_0x443902={},_0x1fffff={'count':0x0,'rows':[]};var _0x1a06e4=_[_0x3905('0x2b')](db[_0x3905('0x2c')][_0x3905('0x2d')],function(_0x3e7c69){return{'name':_0x3e7c69[_0x3905('0x2e')],'type':_0x3e7c69[_0x3905('0x2f')][_0x3905('0x30')]};});_0x443902[_0x3905('0x31')]=_[_0x3905('0x2b')](_0x1a06e4,_0x3905('0x29'));_0x443902['query']=_[_0x3905('0x32')](_0x138ac9[_0x3905('0x33')]);_0x443902[_0x3905('0x34')]=_['intersection'](_0x443902[_0x3905('0x31')],_0x443902['query']);_0x5224c6[_0x3905('0x35')]=_[_0x3905('0x36')](_0x443902[_0x3905('0x31')],qs['fields'](_0x138ac9[_0x3905('0x33')][_0x3905('0x37')]));_0x5224c6['attributes']=_0x5224c6[_0x3905('0x35')][_0x3905('0x38')]?_0x5224c6[_0x3905('0x35')]:_0x443902[_0x3905('0x31')];if(!_0x138ac9[_0x3905('0x33')][_0x3905('0x39')]('nolimit')){_0x5224c6[_0x3905('0x1e')]=qs['limit'](_0x138ac9['query'][_0x3905('0x1e')]);_0x5224c6[_0x3905('0x1c')]=qs['offset'](_0x138ac9[_0x3905('0x33')][_0x3905('0x1c')]);}_0x5224c6[_0x3905('0x3a')]=qs[_0x3905('0x3b')](_0x138ac9[_0x3905('0x33')][_0x3905('0x3b')]);_0x5224c6[_0x3905('0x3c')]=qs[_0x3905('0x34')](_[_0x3905('0x3d')](_0x138ac9[_0x3905('0x33')],_0x443902[_0x3905('0x34')]),_0x1a06e4);if(_0x138ac9['query']['filter']){_0x5224c6[_0x3905('0x3c')]=_[_0x3905('0x3e')](_0x5224c6[_0x3905('0x3c')],{'$or':_[_0x3905('0x2b')](_0x1a06e4,function(_0x350593){if(_0x350593[_0x3905('0x2f')]!==_0x3905('0x3f')){var _0x1c59ed={};_0x1c59ed[_0x350593['name']]={'$like':'%'+_0x138ac9['query']['filter']+'%'};return _0x1c59ed;}})});}_0x5224c6=_[_0x3905('0x3e')]({},_0x5224c6,_0x138ac9[_0x3905('0x40')]);var _0xb00d0b={'where':_0x5224c6['where']};return db[_0x3905('0x2c')][_0x3905('0x1f')](_0xb00d0b)[_0x3905('0x25')](function(_0x17d8da){_0x1fffff[_0x3905('0x1f')]=_0x17d8da;if(_0x138ac9[_0x3905('0x33')][_0x3905('0x41')]){_0x5224c6[_0x3905('0x42')]=[{'all':!![]}];}return db['VoiceTransferReport'][_0x3905('0x43')](_0x5224c6);})[_0x3905('0x25')](function(_0x1af448){_0x1fffff[_0x3905('0x44')]=_0x1af448;return _0x1fffff;})[_0x3905('0x25')](respondWithFilteredResult(_0x4a98a1,_0x5224c6))['catch'](handleError(_0x4a98a1,null));};exports['show']=function(_0x1d5b2f,_0x3b9f08){var _0x2f617a={'raw':!![],'where':{'id':_0x1d5b2f[_0x3905('0x45')]['id']}},_0x46d938={};_0x46d938[_0x3905('0x31')]=_[_0x3905('0x32')](db['VoiceTransferReport'][_0x3905('0x2d')]);_0x46d938[_0x3905('0x33')]=_['keys'](_0x1d5b2f['query']);_0x46d938[_0x3905('0x34')]=_[_0x3905('0x36')](_0x46d938[_0x3905('0x31')],_0x46d938[_0x3905('0x33')]);_0x2f617a[_0x3905('0x35')]=_[_0x3905('0x36')](_0x46d938[_0x3905('0x31')],qs[_0x3905('0x37')](_0x1d5b2f[_0x3905('0x33')][_0x3905('0x37')]));_0x2f617a[_0x3905('0x35')]=_0x2f617a[_0x3905('0x35')][_0x3905('0x38')]?_0x2f617a[_0x3905('0x35')]:_0x46d938[_0x3905('0x31')];if(_0x1d5b2f['query'][_0x3905('0x41')]){_0x2f617a[_0x3905('0x42')]=[{'all':!![]}];}_0x2f617a=_[_0x3905('0x3e')]({},_0x2f617a,_0x1d5b2f['options']);return db[_0x3905('0x2c')]['find'](_0x2f617a)[_0x3905('0x25')](handleEntityNotFound(_0x3b9f08,null))['then'](respondWithResult(_0x3b9f08,null))[_0x3905('0x46')](handleError(_0x3b9f08,null));};exports[_0x3905('0x47')]=function(_0x3e096a,_0x3c98e0){return db[_0x3905('0x2c')]['create'](_0x3e096a['body'],{})[_0x3905('0x25')](respondWithResult(_0x3c98e0,0xc9))[_0x3905('0x46')](handleError(_0x3c98e0,null));};exports[_0x3905('0x24')]=function(_0x3fe1b6,_0x58a32a){if(_0x3fe1b6[_0x3905('0x48')]['id']){delete _0x3fe1b6['body']['id'];}return db[_0x3905('0x2c')][_0x3905('0x49')]({'where':{'id':_0x3fe1b6[_0x3905('0x45')]['id']}})[_0x3905('0x25')](handleEntityNotFound(_0x58a32a,null))['then'](saveUpdates(_0x3fe1b6[_0x3905('0x48')],null))[_0x3905('0x25')](respondWithResult(_0x58a32a,null))[_0x3905('0x46')](handleError(_0x58a32a,null));};exports[_0x3905('0x26')]=function(_0x2eb7aa,_0x379e0c){return db[_0x3905('0x2c')]['find']({'where':{'id':_0x2eb7aa[_0x3905('0x45')]['id']}})[_0x3905('0x25')](handleEntityNotFound(_0x379e0c,null))[_0x3905('0x25')](removeEntity(_0x379e0c,null))[_0x3905('0x46')](handleError(_0x379e0c,null));};exports[_0x3905('0x4a')]=function(_0x28a18a,_0x3f5b1b){return db['VoiceTransferReport'][_0x3905('0x4a')]()[_0x3905('0x25')](respondWithResult(_0x3f5b1b,null))['catch'](handleError(_0x3f5b1b,null));};
\ No newline at end of file
+var _0x074e=['offset','undefined','limit','count','set','apply','reject','save','then','name','send','index','map','rawAttributes','fieldName','type','model','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','VoiceTransferReport','includeAll','include','rows','show','keys','find','catch','create','body','update','destroy','params','describe','eml-format','rimraf','zip-dir','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json'];(function(_0x3284cd,_0x2e10a2){var _0xe92280=function(_0x398d2e){while(--_0x398d2e){_0x3284cd['push'](_0x3284cd['shift']());}};_0xe92280(++_0x2e10a2);}(_0x074e,0x75));var _0xe074=function(_0x3474ac,_0x22d0f7){_0x3474ac=_0x3474ac-0x0;var _0x5345ec=_0x074e[_0x3474ac];return _0x5345ec;};'use strict';var emlformat=require(_0xe074('0x0'));var rimraf=require(_0xe074('0x1'));var zipdir=require(_0xe074('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe074('0x3'));var Mustache=require(_0xe074('0x4'));var util=require('util');var path=require(_0xe074('0x5'));var sox=require('sox');var csv=require(_0xe074('0x6'));var ejs=require(_0xe074('0x7'));var fs=require('fs');var fs_extra=require(_0xe074('0x8'));var _=require(_0xe074('0x9'));var squel=require(_0xe074('0xa'));var crypto=require('crypto');var jsforce=require(_0xe074('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xe074('0x6'));var querystring=require('querystring');var Papa=require(_0xe074('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xe074('0xd'));var as=require(_0xe074('0xe'));var hardwareService=require(_0xe074('0xf'));var logger=require('../../config/logger')(_0xe074('0x10'));var utils=require(_0xe074('0x11'));var config=require(_0xe074('0x12'));var licenseUtil=require(_0xe074('0x13'));var db=require(_0xe074('0x14'))['db'];function respondWithStatusCode(_0x6a7300,_0x5ed38d){_0x5ed38d=_0x5ed38d||0xcc;return function(_0xe2decb){if(_0xe2decb){return _0x6a7300[_0xe074('0x15')](_0x5ed38d);}return _0x6a7300[_0xe074('0x16')](_0x5ed38d)[_0xe074('0x17')]();};}function respondWithResult(_0x520c48,_0x58cd17){_0x58cd17=_0x58cd17||0xc8;return function(_0x2ea930){if(_0x2ea930){return _0x520c48[_0xe074('0x16')](_0x58cd17)[_0xe074('0x18')](_0x2ea930);}};}function respondWithFilteredResult(_0x44e3a9,_0x362b5c){return function(_0x26b6bd){if(_0x26b6bd){var _0x175452=typeof _0x362b5c[_0xe074('0x19')]===_0xe074('0x1a')&&typeof _0x362b5c[_0xe074('0x1b')]==='undefined';var _0x67028b=_0x26b6bd[_0xe074('0x1c')];var _0x4c2533=_0x175452?0x0:_0x362b5c[_0xe074('0x19')];var _0x2fcaef=_0x175452?_0x26b6bd[_0xe074('0x1c')]:_0x362b5c['offset']+_0x362b5c[_0xe074('0x1b')];var _0x4b0241;if(_0x2fcaef>=_0x67028b){_0x2fcaef=_0x67028b;_0x4b0241=0xc8;}else{_0x4b0241=0xce;}_0x44e3a9[_0xe074('0x16')](_0x4b0241);return _0x44e3a9[_0xe074('0x1d')]('Content-Range',_0x4c2533+'-'+_0x2fcaef+'/'+_0x67028b)[_0xe074('0x18')](_0x26b6bd);}return null;};}function patchUpdates(_0x2b3aa8){return function(_0x50d173){try{jsonpatch[_0xe074('0x1e')](_0x50d173,_0x2b3aa8,!![]);}catch(_0x3f3e11){return BPromise[_0xe074('0x1f')](_0x3f3e11);}return _0x50d173[_0xe074('0x20')]();};}function saveUpdates(_0x44ef61,_0x337468){return function(_0x116be1){if(_0x116be1){return _0x116be1['update'](_0x44ef61)['then'](function(_0x5f5adf){return _0x5f5adf;});}return null;};}function removeEntity(_0x450800,_0x306144){return function(_0x199181){if(_0x199181){return _0x199181['destroy']()[_0xe074('0x21')](function(){_0x450800[_0xe074('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x578fcd,_0xa21b3e){return function(_0xbbdde0){if(!_0xbbdde0){_0x578fcd[_0xe074('0x15')](0x194);}return _0xbbdde0;};}function handleError(_0x1ce29c,_0x23655c){_0x23655c=_0x23655c||0x1f4;return function(_0x26aa4e){logger['error'](_0x26aa4e['stack']);if(_0x26aa4e[_0xe074('0x22')]){delete _0x26aa4e['name'];}_0x1ce29c['status'](_0x23655c)[_0xe074('0x23')](_0x26aa4e);};}exports[_0xe074('0x24')]=function(_0xafdc71,_0x2a19a4){var _0x584c9b={},_0x5ebe2e={},_0x14aafd={'count':0x0,'rows':[]};var _0x348081=_[_0xe074('0x25')](db['VoiceTransferReport'][_0xe074('0x26')],function(_0x41ae2e){return{'name':_0x41ae2e[_0xe074('0x27')],'type':_0x41ae2e[_0xe074('0x28')]['key']};});_0x5ebe2e[_0xe074('0x29')]=_[_0xe074('0x25')](_0x348081,_0xe074('0x22'));_0x5ebe2e[_0xe074('0x2a')]=_['keys'](_0xafdc71[_0xe074('0x2a')]);_0x5ebe2e['filters']=_['intersection'](_0x5ebe2e[_0xe074('0x29')],_0x5ebe2e[_0xe074('0x2a')]);_0x584c9b['attributes']=_[_0xe074('0x2b')](_0x5ebe2e[_0xe074('0x29')],qs[_0xe074('0x2c')](_0xafdc71[_0xe074('0x2a')][_0xe074('0x2c')]));_0x584c9b[_0xe074('0x2d')]=_0x584c9b[_0xe074('0x2d')]['length']?_0x584c9b[_0xe074('0x2d')]:_0x5ebe2e[_0xe074('0x29')];if(!_0xafdc71['query'][_0xe074('0x2e')](_0xe074('0x2f'))){_0x584c9b[_0xe074('0x1b')]=qs[_0xe074('0x1b')](_0xafdc71['query'][_0xe074('0x1b')]);_0x584c9b[_0xe074('0x19')]=qs['offset'](_0xafdc71['query'][_0xe074('0x19')]);}_0x584c9b[_0xe074('0x30')]=qs[_0xe074('0x31')](_0xafdc71[_0xe074('0x2a')]['sort']);_0x584c9b[_0xe074('0x32')]=qs[_0xe074('0x33')](_[_0xe074('0x34')](_0xafdc71['query'],_0x5ebe2e[_0xe074('0x33')]),_0x348081);if(_0xafdc71['query'][_0xe074('0x35')]){_0x584c9b['where']=_[_0xe074('0x36')](_0x584c9b[_0xe074('0x32')],{'$or':_[_0xe074('0x25')](_0x348081,function(_0x549c55){if(_0x549c55[_0xe074('0x28')]!==_0xe074('0x37')){var _0x3488f4={};_0x3488f4[_0x549c55[_0xe074('0x22')]]={'$like':'%'+_0xafdc71['query'][_0xe074('0x35')]+'%'};return _0x3488f4;}})});}_0x584c9b=_[_0xe074('0x36')]({},_0x584c9b,_0xafdc71[_0xe074('0x38')]);var _0x1e7f62={'where':_0x584c9b[_0xe074('0x32')]};return db[_0xe074('0x39')]['count'](_0x1e7f62)['then'](function(_0x1f8abd){_0x14aafd[_0xe074('0x1c')]=_0x1f8abd;if(_0xafdc71[_0xe074('0x2a')][_0xe074('0x3a')]){_0x584c9b[_0xe074('0x3b')]=[{'all':!![]}];}return db['VoiceTransferReport']['findAll'](_0x584c9b);})['then'](function(_0x15490d){_0x14aafd[_0xe074('0x3c')]=_0x15490d;return _0x14aafd;})['then'](respondWithFilteredResult(_0x2a19a4,_0x584c9b))['catch'](handleError(_0x2a19a4,null));};exports[_0xe074('0x3d')]=function(_0x6683dc,_0x3770b7){var _0x5f2e21={'raw':!![],'where':{'id':_0x6683dc['params']['id']}},_0x21c0e0={};_0x21c0e0['model']=_[_0xe074('0x3e')](db[_0xe074('0x39')][_0xe074('0x26')]);_0x21c0e0[_0xe074('0x2a')]=_['keys'](_0x6683dc['query']);_0x21c0e0[_0xe074('0x33')]=_[_0xe074('0x2b')](_0x21c0e0[_0xe074('0x29')],_0x21c0e0[_0xe074('0x2a')]);_0x5f2e21[_0xe074('0x2d')]=_[_0xe074('0x2b')](_0x21c0e0[_0xe074('0x29')],qs['fields'](_0x6683dc[_0xe074('0x2a')][_0xe074('0x2c')]));_0x5f2e21[_0xe074('0x2d')]=_0x5f2e21[_0xe074('0x2d')]['length']?_0x5f2e21['attributes']:_0x21c0e0[_0xe074('0x29')];if(_0x6683dc[_0xe074('0x2a')][_0xe074('0x3a')]){_0x5f2e21[_0xe074('0x3b')]=[{'all':!![]}];}_0x5f2e21=_[_0xe074('0x36')]({},_0x5f2e21,_0x6683dc[_0xe074('0x38')]);return db['VoiceTransferReport'][_0xe074('0x3f')](_0x5f2e21)[_0xe074('0x21')](handleEntityNotFound(_0x3770b7,null))['then'](respondWithResult(_0x3770b7,null))[_0xe074('0x40')](handleError(_0x3770b7,null));};exports[_0xe074('0x41')]=function(_0x4908ad,_0x3651b7){return db[_0xe074('0x39')][_0xe074('0x41')](_0x4908ad[_0xe074('0x42')],{})[_0xe074('0x21')](respondWithResult(_0x3651b7,0xc9))[_0xe074('0x40')](handleError(_0x3651b7,null));};exports[_0xe074('0x43')]=function(_0x82a898,_0x428a72){if(_0x82a898['body']['id']){delete _0x82a898['body']['id'];}return db[_0xe074('0x39')]['find']({'where':{'id':_0x82a898['params']['id']}})[_0xe074('0x21')](handleEntityNotFound(_0x428a72,null))[_0xe074('0x21')](saveUpdates(_0x82a898['body'],null))[_0xe074('0x21')](respondWithResult(_0x428a72,null))[_0xe074('0x40')](handleError(_0x428a72,null));};exports[_0xe074('0x44')]=function(_0x47f83e,_0x4c917b){return db[_0xe074('0x39')][_0xe074('0x3f')]({'where':{'id':_0x47f83e[_0xe074('0x45')]['id']}})[_0xe074('0x21')](handleEntityNotFound(_0x4c917b,null))[_0xe074('0x21')](removeEntity(_0x4c917b,null))[_0xe074('0x40')](handleError(_0x4c917b,null));};exports[_0xe074('0x46')]=function(_0x477306,_0xc06364){return db['VoiceTransferReport'][_0xe074('0x46')]()[_0xe074('0x21')](respondWithResult(_0xc06364,null))[_0xe074('0x40')](handleError(_0xc06364,null));};
\ No newline at end of file
index 4feedd9..0f86b0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6889=['util','../../config/logger','bluebird','path','rimraf','../../config/environment','./voiceTransferReport.attributes','exports','define','VoiceTransferReport','report_call_transfer','lodash'];(function(_0x1d8c09,_0x28e4c8){var _0x2421c6=function(_0x39a0ef){while(--_0x39a0ef){_0x1d8c09['push'](_0x1d8c09['shift']());}};_0x2421c6(++_0x28e4c8);}(_0x6889,0xef));var _0x9688=function(_0xcf5436,_0x4632c3){_0xcf5436=_0xcf5436-0x0;var _0xc4f5c8=_0x6889[_0xcf5436];return _0xc4f5c8;};'use strict';var _=require(_0x9688('0x0'));var util=require(_0x9688('0x1'));var logger=require(_0x9688('0x2'))('api');var moment=require('moment');var BPromise=require(_0x9688('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9688('0x4'));var rimraf=require(_0x9688('0x5'));var config=require(_0x9688('0x6'));var attributes=require(_0x9688('0x7'));module[_0x9688('0x8')]=function(_0x3b2064,_0x835edb){return _0x3b2064[_0x9688('0x9')](_0x9688('0xa'),attributes,{'tableName':_0x9688('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0ad1=['VoiceTransferReport','report_call_transfer','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./voiceTransferReport.attributes','define'];(function(_0x472a41,_0x40149e){var _0x1941d5=function(_0x152dfe){while(--_0x152dfe){_0x472a41['push'](_0x472a41['shift']());}};_0x1941d5(++_0x40149e);}(_0x0ad1,0xab));var _0x10ad=function(_0x567257,_0x4df4d1){_0x567257=_0x567257-0x0;var _0x217875=_0x0ad1[_0x567257];return _0x217875;};'use strict';var _=require(_0x10ad('0x0'));var util=require(_0x10ad('0x1'));var logger=require(_0x10ad('0x2'))(_0x10ad('0x3'));var moment=require(_0x10ad('0x4'));var BPromise=require(_0x10ad('0x5'));var rp=require(_0x10ad('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x10ad('0x7'));var config=require(_0x10ad('0x8'));var attributes=require(_0x10ad('0x9'));module['exports']=function(_0x2e3334,_0x1e51ef){return _0x2e3334[_0x10ad('0xa')](_0x10ad('0xb'),attributes,{'tableName':_0x10ad('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a891e8c..d0ba606 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6463=['request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','CreateVoiceTransferReport','VoiceTransferReport','body','options','raw','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','VoiceTransferReport,\x20%s,\x20%s'];(function(_0x55abd9,_0x1148af){var _0x3e5669=function(_0x6f2105){while(--_0x6f2105){_0x55abd9['push'](_0x55abd9['shift']());}};_0x3e5669(++_0x1148af);}(_0x6463,0xe8));var _0x3646=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6463[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x3646('0x0'));var moment=require(_0x3646('0x1'));var BPromise=require(_0x3646('0x2'));var rs=require(_0x3646('0x3'));var fs=require('fs');var Redis=require(_0x3646('0x4'));var db=require(_0x3646('0x5'))['db'];var utils=require(_0x3646('0x6'));var logger=require(_0x3646('0x7'))(_0x3646('0x8'));var config=require(_0x3646('0x9'));var jayson=require(_0x3646('0xa'));var client=jayson[_0x3646('0xb')][_0x3646('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x21a549,_0x5b2224,_0xc1a9d4){return new BPromise(function(_0x548dad,_0x4c14f3){return client[_0x3646('0xd')](_0x21a549,_0xc1a9d4)[_0x3646('0xe')](function(_0xda467a){logger['info'](_0x3646('0xf'),_0x5b2224,_0x3646('0x10'));logger[_0x3646('0x11')](_0x3646('0x12'),_0x5b2224,_0x3646('0x10'),JSON[_0x3646('0x13')](_0xda467a));if(_0xda467a[_0x3646('0x14')]){if(_0xda467a[_0x3646('0x14')][_0x3646('0x15')]===0x1f4){logger[_0x3646('0x14')]('VoiceTransferReport,\x20%s,\x20%s',_0x5b2224,_0xda467a[_0x3646('0x14')][_0x3646('0x16')]);return _0x4c14f3(_0xda467a['error'][_0x3646('0x16')]);}logger['error'](_0x3646('0xf'),_0x5b2224,_0xda467a[_0x3646('0x14')][_0x3646('0x16')]);return _0x548dad(_0xda467a['error']['message']);}else{logger[_0x3646('0x17')](_0x3646('0xf'),_0x5b2224,_0x3646('0x10'));_0x548dad(_0xda467a[_0x3646('0x18')][_0x3646('0x16')]);}})['catch'](function(_0x63aade){logger['error'](_0x3646('0xf'),_0x5b2224,_0x63aade);_0x4c14f3(_0x63aade);});});}exports[_0x3646('0x19')]=function(_0x396221){var _0x3aff47=this;return new Promise(function(_0x5481e2,_0x986c7c){return db[_0x3646('0x1a')]['create'](_0x396221[_0x3646('0x1b')],{'raw':_0x396221['options']?_0x396221[_0x3646('0x1c')][_0x3646('0x1d')]===undefined?!![]:![]:!![]})[_0x3646('0xe')](function(_0x3265f1){logger[_0x3646('0x17')]('CreateVoiceTransferReport',_0x396221);logger[_0x3646('0x11')](_0x3646('0x19'),_0x396221,JSON[_0x3646('0x13')](_0x3265f1));_0x5481e2(_0x3265f1);})[_0x3646('0x1e')](function(_0xeee92){logger[_0x3646('0x14')]('CreateVoiceTransferReport',_0xeee92[_0x3646('0x16')],_0x396221);_0x986c7c(_0x3aff47[_0x3646('0x14')](0x1f4,_0xeee92[_0x3646('0x16')]));});});};
\ No newline at end of file
+var _0x0662=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','CreateVoiceTransferReport','options','raw','catch','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0xba7a9d,_0x41aa0f){var _0x219c04=function(_0x57a16c){while(--_0x57a16c){_0xba7a9d['push'](_0xba7a9d['shift']());}};_0x219c04(++_0x41aa0f);}(_0x0662,0x175));var _0x2066=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x0662[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var util=require(_0x2066('0x0'));var moment=require(_0x2066('0x1'));var BPromise=require(_0x2066('0x2'));var rs=require(_0x2066('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2066('0x4'))['db'];var utils=require(_0x2066('0x5'));var logger=require(_0x2066('0x6'))(_0x2066('0x7'));var config=require(_0x2066('0x8'));var jayson=require(_0x2066('0x9'));var client=jayson[_0x2066('0xa')][_0x2066('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x38e656,_0x23ee81,_0x2999ed){return new BPromise(function(_0x510675,_0x1f82a2){return client[_0x2066('0xc')](_0x38e656,_0x2999ed)[_0x2066('0xd')](function(_0x1bb145){logger[_0x2066('0xe')](_0x2066('0xf'),_0x23ee81,_0x2066('0x10'));logger[_0x2066('0x11')]('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x23ee81,_0x2066('0x10'),JSON[_0x2066('0x12')](_0x1bb145));if(_0x1bb145[_0x2066('0x13')]){if(_0x1bb145[_0x2066('0x13')][_0x2066('0x14')]===0x1f4){logger[_0x2066('0x13')](_0x2066('0xf'),_0x23ee81,_0x1bb145[_0x2066('0x13')][_0x2066('0x15')]);return _0x1f82a2(_0x1bb145[_0x2066('0x13')][_0x2066('0x15')]);}logger[_0x2066('0x13')](_0x2066('0xf'),_0x23ee81,_0x1bb145[_0x2066('0x13')][_0x2066('0x15')]);return _0x510675(_0x1bb145[_0x2066('0x13')]['message']);}else{logger['info'](_0x2066('0xf'),_0x23ee81,_0x2066('0x10'));_0x510675(_0x1bb145[_0x2066('0x16')]['message']);}})['catch'](function(_0x2fbce4){logger[_0x2066('0x13')](_0x2066('0xf'),_0x23ee81,_0x2fbce4);_0x1f82a2(_0x2fbce4);});});}exports[_0x2066('0x17')]=function(_0x2aa9ea){var _0x129813=this;return new Promise(function(_0x3b7c8b,_0x5954e8){return db['VoiceTransferReport']['create'](_0x2aa9ea['body'],{'raw':_0x2aa9ea[_0x2066('0x18')]?_0x2aa9ea['options'][_0x2066('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x5dac2d){logger['info']('CreateVoiceTransferReport',_0x2aa9ea);logger['debug'](_0x2066('0x17'),_0x2aa9ea,JSON['stringify'](_0x5dac2d));_0x3b7c8b(_0x5dac2d);})[_0x2066('0x1a')](function(_0x208a38){logger[_0x2066('0x13')](_0x2066('0x17'),_0x208a38[_0x2066('0x15')],_0x2aa9ea);_0x5954e8(_0x129813[_0x2066('0x13')](0x1f4,_0x208a38[_0x2066('0x15')]));});});};
\ No newline at end of file
index 909f8fb..f3d9c4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4e6=['unhold','calls','/transfer','exports','express','../../components/auth/service','./webbar.controller','post','/originate','isAuthenticated','isWebrtcLicence','originate','/hangup','/hold','hold','/unhold'];(function(_0x375bd5,_0x43ff4d){var _0x3ab484=function(_0x14ba99){while(--_0x14ba99){_0x375bd5['push'](_0x375bd5['shift']());}};_0x3ab484(++_0x43ff4d);}(_0xb4e6,0x1f4));var _0x6b4e=function(_0x1ab0e6,_0x17ba8d){_0x1ab0e6=_0x1ab0e6-0x0;var _0x248815=_0xb4e6[_0x1ab0e6];return _0x248815;};'use strict';var express=require(_0x6b4e('0x0'));var router=express['Router']();var auth=require(_0x6b4e('0x1'));var controller=require(_0x6b4e('0x2'));router[_0x6b4e('0x3')](_0x6b4e('0x4'),auth[_0x6b4e('0x5')](),auth[_0x6b4e('0x6')](),controller[_0x6b4e('0x7')]);router['post'](_0x6b4e('0x8'),auth[_0x6b4e('0x5')](),auth[_0x6b4e('0x6')](),controller['hangup']);router[_0x6b4e('0x3')]('/answer',auth['isAuthenticated'](),auth[_0x6b4e('0x6')](),controller['answer']);router['post'](_0x6b4e('0x9'),auth[_0x6b4e('0x5')](),auth[_0x6b4e('0x6')](),controller[_0x6b4e('0xa')]);router[_0x6b4e('0x3')](_0x6b4e('0xb'),auth[_0x6b4e('0x5')](),auth['isWebrtcLicence'](),controller[_0x6b4e('0xc')]);router[_0x6b4e('0x3')]('/calls',auth[_0x6b4e('0x5')](),auth[_0x6b4e('0x6')](),controller[_0x6b4e('0xd')]);router[_0x6b4e('0x3')](_0x6b4e('0xe'),auth[_0x6b4e('0x5')](),auth[_0x6b4e('0x6')](),controller['transfer']);module[_0x6b4e('0xf')]=router;
\ No newline at end of file
+var _0xf3cd=['/unhold','unhold','/calls','calls','/transfer','transfer','exports','express','Router','../../components/auth/service','./webbar.controller','post','/originate','isWebrtcLicence','originate','isAuthenticated','hangup','/answer','answer'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xf3cd,0xfe));var _0xdf3c=function(_0xffa654,_0x4c734){_0xffa654=_0xffa654-0x0;var _0x5dd847=_0xf3cd[_0xffa654];return _0x5dd847;};'use strict';var express=require(_0xdf3c('0x0'));var router=express[_0xdf3c('0x1')]();var auth=require(_0xdf3c('0x2'));var controller=require(_0xdf3c('0x3'));router[_0xdf3c('0x4')](_0xdf3c('0x5'),auth['isAuthenticated'](),auth[_0xdf3c('0x6')](),controller[_0xdf3c('0x7')]);router[_0xdf3c('0x4')]('/hangup',auth[_0xdf3c('0x8')](),auth[_0xdf3c('0x6')](),controller[_0xdf3c('0x9')]);router[_0xdf3c('0x4')](_0xdf3c('0xa'),auth[_0xdf3c('0x8')](),auth['isWebrtcLicence'](),controller[_0xdf3c('0xb')]);router['post']('/hold',auth[_0xdf3c('0x8')](),auth[_0xdf3c('0x6')](),controller['hold']);router[_0xdf3c('0x4')](_0xdf3c('0xc'),auth[_0xdf3c('0x8')](),auth[_0xdf3c('0x6')](),controller[_0xdf3c('0xd')]);router[_0xdf3c('0x4')](_0xdf3c('0xe'),auth[_0xdf3c('0x8')](),auth['isWebrtcLicence'](),controller[_0xdf3c('0xf')]);router[_0xdf3c('0x4')](_0xdf3c('0x10'),auth[_0xdf3c('0x8')](),auth['isWebrtcLicence'](),controller[_0xdf3c('0x11')]);module[_0xdf3c('0x12')]=router;
\ No newline at end of file
index 755ef86..3d3a227 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc36d=['all','rows','sessionId','length','sessionId\x20','originate','originate\x20fired:','body','userId','callNumber','callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','json','originate\x20executed!','hangup','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','unhold\x20executed!','calls','calls\x20fired:','filter','UserId','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','client','http','webbarapi','ioredis','redis','defaults','socket.io-emitter','validate','number','string','callNumber\x20is\x20required','userId\x20is\x20required','sessionId\x20is\x20required','info','stringify','log','handleError:','error','stack','name','status','NotFound','request','then','code','result','catch','User','findOne','agent','VoiceChannels'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc36d,0x7d));var _0xdc36=function(_0x5534fe,_0x43c22e){_0x5534fe=_0x5534fe-0x0;var _0x3d1dc2=_0xc36d[_0x5534fe];return _0x3d1dc2;};'use strict';var path=require(_0xdc36('0x0'));var fs=require('fs');var _=require(_0xdc36('0x1'));var db=require(_0xdc36('0x2'))['db'];var config=require(_0xdc36('0x3'));var util=require(_0xdc36('0x4'));var BPromise=require(_0xdc36('0x5'));var jayson=require('jayson/promise');var amiClient=jayson[_0xdc36('0x6')][_0xdc36('0x7')]({'port':0x232a});var logger=require('../../config/logger')(_0xdc36('0x8'));var Redis=require(_0xdc36('0x9'));config[_0xdc36('0xa')]=_[_0xdc36('0xb')](config[_0xdc36('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0xdc36('0xc'))(new Redis(config[_0xdc36('0xa')]));var Schema=require(_0xdc36('0xd'));var originateValidation=new Schema({'userId':{'type':_0xdc36('0xe'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':_0xdc36('0xf'),'required':[!![],_0xdc36('0x10')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0xdc36('0xf')}});var hangupValidation=new Schema({'userId':{'type':_0xdc36('0xe'),'required':[!![],_0xdc36('0x11')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0xdc36('0xe'),'required':[!![],_0xdc36('0x11')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0xdc36('0x11')]},'sessionId':{'type':_0xdc36('0xf'),'required':[!![],_0xdc36('0x12')]},'transferNumber':{'type':_0xdc36('0xf'),'required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':_0xdc36('0xe'),'required':[!![],_0xdc36('0x11')]},'sessionId':{'type':_0xdc36('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xdc36('0xe'),'required':[!![],_0xdc36('0x11')]},'sessionId':{'type':_0xdc36('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xdc36('0xe'),'required':[!![],_0xdc36('0x11')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0xdc36('0x11')]}});function emit(_0x526ac8,_0x4baf2e,_0x59c88f){logger[_0xdc36('0x13')](_0x526ac8,_0x4baf2e,JSON[_0xdc36('0x14')](_0x59c88f));io['to'](_0x526ac8)['emit'](_0x4baf2e,_0x59c88f);}function handleError(_0xd38826){return function(_0x219a73){console[_0xdc36('0x15')](_0xdc36('0x16'),_0x219a73,_0x219a73 instanceof RangeError);logger[_0xdc36('0x17')](_0x219a73[_0xdc36('0x18')]);if(_0x219a73 instanceof RangeError){if(_0x219a73['name']){delete _0x219a73[_0xdc36('0x19')];}_0xd38826[_0xdc36('0x1a')](0x194)['send'](_0x219a73);}else{if(_0x219a73[_0xdc36('0x19')]){delete _0x219a73[_0xdc36('0x19')];}_0xd38826[_0xdc36('0x1a')](0x1f4)['send'](_0x219a73);}};}function checkError(){return function(_0x10aafb){if(!_0x10aafb){throw new RangeError(_0xdc36('0x1b'));}return _0x10aafb;};}function respondWithRpcPromise(_0x5b9891,_0x388b1a){return new BPromise(function(_0x480277,_0x5a6e35){var _0x12f9d8=amiClient;return _0x12f9d8[_0xdc36('0x1c')](_0x5b9891,_0x388b1a)[_0xdc36('0x1d')](function(_0xda916b){if(_0xda916b[_0xdc36('0x17')]){if(_0xda916b[_0xdc36('0x17')][_0xdc36('0x1e')]===0x1f4){return _0x5a6e35(_0xda916b[_0xdc36('0x17')]['message']);}return _0x480277(_0xda916b[_0xdc36('0x17')]['message']);}else{_0x480277(_0xda916b[_0xdc36('0x1f')]);}})[_0xdc36('0x20')](function(_0x15e686){_0x5a6e35(_0x15e686);});});}function getAgent(_0x5c785b){return db[_0xdc36('0x21')][_0xdc36('0x22')]({'where':{'id':_0x5c785b,'role':_0xdc36('0x23')}})['then'](checkError());}function getAgentCheckSession(_0x28a005,_0x2f3b6a){return new BPromise(function(_0x2a596d,_0x5f3b20){var _0x3c39e3=respondWithRpcPromise(_0xdc36('0x24'));var _0x4b15b4=getAgent(_0x28a005);Promise[_0xdc36('0x25')]([_0x3c39e3,_0x4b15b4])[_0xdc36('0x1d')](function(_0x4ea2ad){var _0x21151b=_0x4ea2ad[0x0];var _0x5bba0b=_0x4ea2ad[0x1];var _0x49bbf2=_['filter'](_0x21151b[_0xdc36('0x26')],function(_0x2f2bb4){return _0x2f2bb4['UserId']==_0x5bba0b['id']&&_0x2f2bb4[_0xdc36('0x27')]==_0x2f3b6a;});if(_0x49bbf2[_0xdc36('0x28')]==0x1){_0x2a596d(_0x5bba0b);}else{_0x5f3b20(new RangeError(_0xdc36('0x29')+_0x2f3b6a+'\x20not\x20found!'));}});});}exports[_0xdc36('0x2a')]=function(_0xcfff77,_0x1d010c){logger[_0xdc36('0x13')](_0xdc36('0x2b'),_0xcfff77[_0xdc36('0x2c')]);var _0x1aa877=originateValidation['validate'](_0xcfff77[_0xdc36('0x2c')]);if(_0x1aa877[_0xdc36('0x28')]>0x0){return _0x1d010c['status'](0x190)['json'](_0x1aa877);}var _0x359e7c=_0xcfff77[_0xdc36('0x2c')][_0xdc36('0x2d')];var _0x58a899=_0xcfff77['body'][_0xdc36('0x2e')];var _0x1a2261=_0xcfff77[_0xdc36('0x2c')][_0xdc36('0x2f')];var _0x302d69=_0xcfff77[_0xdc36('0x2c')][_0xdc36('0x30')];return getAgent(_0x359e7c)[_0xdc36('0x1d')](function(_0x734ad6){logger[_0xdc36('0x13')](_0xdc36('0x31'),_0x734ad6['name']);emit(util[_0xdc36('0x32')](_0xdc36('0x33'),_0x734ad6[_0xdc36('0x19')]),_0xdc36('0x34'),{'callNumber':_0x58a899,'callerId':_0x1a2261,'callbackUrl':_0x302d69});return _0x1d010c['status'](0xc8)[_0xdc36('0x35')]({'error':![],'message':_0xdc36('0x36')});})[_0xdc36('0x20')](handleError(_0x1d010c));};exports[_0xdc36('0x37')]=function(_0x4c4105,_0x3c8bd5){logger['info']('hangup\x20fired:',_0x4c4105[_0xdc36('0x2c')]);var _0x169c1e=hangupValidation[_0xdc36('0xd')](_0x4c4105['body']);if(_0x169c1e[_0xdc36('0x28')]>0x0){return _0x3c8bd5['status'](0x190)[_0xdc36('0x35')](_0x169c1e);}var _0x34f6be=_0x4c4105[_0xdc36('0x2c')]['userId'];var _0x34fe4d=_0x4c4105[_0xdc36('0x2c')][_0xdc36('0x27')];return getAgent(_0x34f6be)[_0xdc36('0x1d')](function(_0x50cf7b){logger[_0xdc36('0x13')](_0xdc36('0x31'),_0x50cf7b[_0xdc36('0x19')]);emit(util['format']('user:%s',_0x50cf7b[_0xdc36('0x19')]),_0xdc36('0x38'),{'sessionId':_0x34fe4d});return _0x3c8bd5['status'](0xc8)['json']({'error':![],'message':_0xdc36('0x39')});})[_0xdc36('0x20')](handleError(_0x3c8bd5));};exports[_0xdc36('0x3a')]=function(_0x1c0a6c,_0x26fb8c){logger[_0xdc36('0x13')](_0xdc36('0x3b'),_0x1c0a6c[_0xdc36('0x2c')]);var _0x2f4c89=answerValidation[_0xdc36('0xd')](_0x1c0a6c[_0xdc36('0x2c')]);if(_0x2f4c89[_0xdc36('0x28')]>0x0){return _0x26fb8c[_0xdc36('0x1a')](0x190)[_0xdc36('0x35')](_0x2f4c89);}var _0x1f2604=_0x1c0a6c[_0xdc36('0x2c')][_0xdc36('0x2d')];var _0x16dcb7=_0x1c0a6c[_0xdc36('0x2c')][_0xdc36('0x27')];return getAgent(_0x1f2604)[_0xdc36('0x1d')](function(_0x608220){logger[_0xdc36('0x13')](_0xdc36('0x31'),_0x608220[_0xdc36('0x19')]);emit(util[_0xdc36('0x32')]('user:%s',_0x608220[_0xdc36('0x19')]),_0xdc36('0x3c'),{'sessionId':_0x16dcb7});return _0x26fb8c['status'](0xc8)['json']({'error':![],'message':_0xdc36('0x3d')});})['catch'](handleError(_0x26fb8c));};exports[_0xdc36('0x3e')]=function(_0x51a276,_0x19c7fe){logger[_0xdc36('0x13')](_0xdc36('0x3f'),_0x51a276[_0xdc36('0x2c')]);var _0x34af88=holdValidation[_0xdc36('0xd')](_0x51a276[_0xdc36('0x2c')]);if(_0x34af88[_0xdc36('0x28')]>0x0){return _0x19c7fe[_0xdc36('0x1a')](0x190)[_0xdc36('0x35')](_0x34af88);}var _0x3c27c7=_0x51a276[_0xdc36('0x2c')][_0xdc36('0x2d')];var _0x10d865=_0x51a276[_0xdc36('0x2c')][_0xdc36('0x27')];return getAgent(_0x3c27c7)[_0xdc36('0x1d')](function(_0x3399cc){logger['info']('entityFound:',_0x3399cc[_0xdc36('0x19')]);emit(util[_0xdc36('0x32')](_0xdc36('0x33'),_0x3399cc[_0xdc36('0x19')]),_0xdc36('0x40'),{'sessionId':_0x10d865});return _0x19c7fe[_0xdc36('0x1a')](0xc8)['json']({'error':![],'message':_0xdc36('0x41')});})[_0xdc36('0x20')](handleError(_0x19c7fe));};exports[_0xdc36('0x42')]=function(_0x49f456,_0x2c6856){logger[_0xdc36('0x13')](_0xdc36('0x43'),_0x49f456[_0xdc36('0x2c')]);var _0x3bfc00=unholdValidation[_0xdc36('0xd')](_0x49f456['body']);if(_0x3bfc00[_0xdc36('0x28')]>0x0){return _0x2c6856[_0xdc36('0x1a')](0x190)[_0xdc36('0x35')](_0x3bfc00);}var _0x18272a=_0x49f456[_0xdc36('0x2c')][_0xdc36('0x2d')];var _0x26775a=_0x49f456[_0xdc36('0x2c')]['sessionId'];return getAgent(_0x18272a)[_0xdc36('0x1d')](function(_0x5bdc6){logger[_0xdc36('0x13')](_0xdc36('0x31'),_0x5bdc6[_0xdc36('0x19')]);emit(util[_0xdc36('0x32')](_0xdc36('0x33'),_0x5bdc6[_0xdc36('0x19')]),'webbar:unhold',{'sessionId':_0x26775a});return _0x2c6856['status'](0xc8)[_0xdc36('0x35')]({'error':![],'message':_0xdc36('0x44')});})['catch'](handleError(_0x2c6856));};exports[_0xdc36('0x45')]=function(_0xd8af57,_0x502033){logger['info'](_0xdc36('0x46'),_0x502033['body']);var _0x4277b4=callsValidation['validate'](_0xd8af57[_0xdc36('0x2c')]);if(_0x4277b4['length']>0x0){return _0x502033['status'](0x190)[_0xdc36('0x35')](_0x4277b4);}var _0x5d139f=_0xd8af57[_0xdc36('0x2c')][_0xdc36('0x2d')];var _0x33b3d2=respondWithRpcPromise(_0xdc36('0x24'));var _0x396a6a=getAgent(_0x5d139f);return Promise['all']([_0x33b3d2,_0x396a6a])[_0xdc36('0x1d')](function(_0x379a72){var _0x42d0a6=_0x379a72[0x0];var _0x4e62c2=_0x379a72[0x1];var _0x4f7bf5=_[_0xdc36('0x47')](_0x42d0a6['rows'],function(_0x3c50ea){return _0x3c50ea[_0xdc36('0x48')]==_0x4e62c2['id'];});return _0x502033[_0xdc36('0x1a')](0xc8)[_0xdc36('0x35')]({'count':_0x4f7bf5['length'],'rows':_0x4f7bf5});})['catch'](handleError(_0x502033));};exports[_0xdc36('0x49')]=function(_0x1d4707,_0x3d8c56){logger[_0xdc36('0x13')](_0xdc36('0x4a'),_0x1d4707[_0xdc36('0x2c')]);var _0x2359bd=conferenceValidation[_0xdc36('0xd')](_0x1d4707[_0xdc36('0x2c')]);if(_0x2359bd[_0xdc36('0x28')]>0x0){return _0x3d8c56['status'](0x190)[_0xdc36('0x35')](_0x2359bd);}var _0x4ea344=_0x1d4707[_0xdc36('0x2c')][_0xdc36('0x2d')];return getAgent(_0x4ea344)[_0xdc36('0x1d')](function(_0x35adec){logger[_0xdc36('0x13')](_0xdc36('0x31'),_0x35adec[_0xdc36('0x19')]);emit(util[_0xdc36('0x32')](_0xdc36('0x33'),_0x35adec[_0xdc36('0x19')]),_0xdc36('0x4b'));return _0x3d8c56[_0xdc36('0x1a')](0xc8)[_0xdc36('0x35')]({'error':![],'message':_0xdc36('0x4c')});})[_0xdc36('0x20')](handleError(_0x3d8c56));};exports[_0xdc36('0x4d')]=function(_0x43e23e,_0x1994c6){logger[_0xdc36('0x13')](_0xdc36('0x4e'),_0x43e23e['body']);var _0x327c04=transferValidation[_0xdc36('0xd')](_0x43e23e[_0xdc36('0x2c')]);if(_0x327c04[_0xdc36('0x28')]>0x0){return _0x1994c6[_0xdc36('0x1a')](0x190)[_0xdc36('0x35')](_0x327c04);}var _0x5ae258=_0x43e23e[_0xdc36('0x2c')][_0xdc36('0x2d')];var _0x52e7f7=_0x43e23e['body'][_0xdc36('0x27')];var _0x271004=_0x43e23e[_0xdc36('0x2c')]['transferNumber'];return getAgent(_0x5ae258)['then'](function(_0x6888a8){logger[_0xdc36('0x13')]('entityFound:',_0x6888a8['name']);emit(util[_0xdc36('0x32')](_0xdc36('0x33'),_0x6888a8[_0xdc36('0x19')]),_0xdc36('0x4f'),{'sessionId':_0x52e7f7,'transferNumber':_0x271004});return _0x1994c6[_0xdc36('0x1a')](0xc8)[_0xdc36('0x35')]({'error':![],'message':_0xdc36('0x50')});})[_0xdc36('0x20')](handleError(_0x1994c6));};
\ No newline at end of file
+var _0x49e9=['transferNumber\x20is\x20required','info','emit','log','handleError:','stack','name','status','send','NotFound','then','code','error','message','result','catch','User','agent','VoiceChannels','all','filter','rows','\x20not\x20found!','originate','originate\x20fired:','body','length','userId','callerId','callbackUrl','webbar:originate','json','originate\x20executed!','hangup','hangup\x20fired:','user:%s','answer','sessionId','entityFound:','webbar:answer','hold','hold\x20fired:','format','webbar:hold','hold\x20executed!','calls','UserId','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../config/environment','util','bluebird','http','webbarapi','ioredis','redis','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','callNumber\x20is\x20required','string','sessionId\x20is\x20required'];(function(_0x40136e,_0x5c275d){var _0x199a66=function(_0x3eedd5){while(--_0x3eedd5){_0x40136e['push'](_0x40136e['shift']());}};_0x199a66(++_0x5c275d);}(_0x49e9,0x10f));var _0x949e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x49e9[_0x20a584];return _0x4b41a8;};'use strict';var path=require(_0x949e('0x0'));var fs=require('fs');var _=require(_0x949e('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0x949e('0x2'));var util=require(_0x949e('0x3'));var BPromise=require(_0x949e('0x4'));var jayson=require('jayson/promise');var amiClient=jayson['client'][_0x949e('0x5')]({'port':0x232a});var logger=require('../../config/logger')(_0x949e('0x6'));var Redis=require(_0x949e('0x7'));config[_0x949e('0x8')]=_['defaults'](config[_0x949e('0x8')],{'host':_0x949e('0x9'),'port':0x18eb});var io=require(_0x949e('0xa'))(new Redis(config[_0x949e('0x8')]));var Schema=require(_0x949e('0xb'));var originateValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]},'callNumber':{'type':'string','required':[!![],_0x949e('0xe')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x949e('0xf')}});var hangupValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]},'sessionId':{'type':_0x949e('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]},'sessionId':{'type':_0x949e('0xf'),'required':[!![],_0x949e('0x10')]},'transferNumber':{'type':_0x949e('0xf'),'required':[!![],_0x949e('0x11')]}});var holdValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]},'sessionId':{'type':_0x949e('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]},'sessionId':{'type':_0x949e('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0x949e('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]}});function emit(_0xf1f41a,_0x5f5962,_0x420733){logger[_0x949e('0x12')](_0xf1f41a,_0x5f5962,JSON['stringify'](_0x420733));io['to'](_0xf1f41a)[_0x949e('0x13')](_0x5f5962,_0x420733);}function handleError(_0x175d62){return function(_0x43498d){console[_0x949e('0x14')](_0x949e('0x15'),_0x43498d,_0x43498d instanceof RangeError);logger['error'](_0x43498d[_0x949e('0x16')]);if(_0x43498d instanceof RangeError){if(_0x43498d[_0x949e('0x17')]){delete _0x43498d[_0x949e('0x17')];}_0x175d62[_0x949e('0x18')](0x194)[_0x949e('0x19')](_0x43498d);}else{if(_0x43498d[_0x949e('0x17')]){delete _0x43498d[_0x949e('0x17')];}_0x175d62[_0x949e('0x18')](0x1f4)[_0x949e('0x19')](_0x43498d);}};}function checkError(){return function(_0x39ad61){if(!_0x39ad61){throw new RangeError(_0x949e('0x1a'));}return _0x39ad61;};}function respondWithRpcPromise(_0x260c1c,_0x1e3a79){return new BPromise(function(_0x1927ab,_0x199d53){var _0x2e81f2=amiClient;return _0x2e81f2['request'](_0x260c1c,_0x1e3a79)[_0x949e('0x1b')](function(_0x44ffb4){if(_0x44ffb4['error']){if(_0x44ffb4['error'][_0x949e('0x1c')]===0x1f4){return _0x199d53(_0x44ffb4[_0x949e('0x1d')][_0x949e('0x1e')]);}return _0x1927ab(_0x44ffb4[_0x949e('0x1d')][_0x949e('0x1e')]);}else{_0x1927ab(_0x44ffb4[_0x949e('0x1f')]);}})[_0x949e('0x20')](function(_0x255b11){_0x199d53(_0x255b11);});});}function getAgent(_0x3468ac){return db[_0x949e('0x21')]['findOne']({'where':{'id':_0x3468ac,'role':_0x949e('0x22')}})[_0x949e('0x1b')](checkError());}function getAgentCheckSession(_0x59b3a1,_0x39308f){return new BPromise(function(_0x20061d,_0x55d56a){var _0x446401=respondWithRpcPromise(_0x949e('0x23'));var _0x5b9f28=getAgent(_0x59b3a1);Promise[_0x949e('0x24')]([_0x446401,_0x5b9f28])['then'](function(_0x5e6e34){var _0x4e169d=_0x5e6e34[0x0];var _0x54ad5d=_0x5e6e34[0x1];var _0x52f5bd=_[_0x949e('0x25')](_0x4e169d[_0x949e('0x26')],function(_0x3051ec){return _0x3051ec['UserId']==_0x54ad5d['id']&&_0x3051ec['sessionId']==_0x39308f;});if(_0x52f5bd['length']==0x1){_0x20061d(_0x54ad5d);}else{_0x55d56a(new RangeError('sessionId\x20'+_0x39308f+_0x949e('0x27')));}});});}exports[_0x949e('0x28')]=function(_0xcfd5a6,_0x1fe31b){logger['info'](_0x949e('0x29'),_0xcfd5a6[_0x949e('0x2a')]);var _0xad8500=originateValidation['validate'](_0xcfd5a6[_0x949e('0x2a')]);if(_0xad8500[_0x949e('0x2b')]>0x0){return _0x1fe31b[_0x949e('0x18')](0x190)['json'](_0xad8500);}var _0x5b7d77=_0xcfd5a6[_0x949e('0x2a')][_0x949e('0x2c')];var _0x25d65a=_0xcfd5a6[_0x949e('0x2a')]['callNumber'];var _0x15a63f=_0xcfd5a6[_0x949e('0x2a')][_0x949e('0x2d')];var _0x41b8d7=_0xcfd5a6[_0x949e('0x2a')][_0x949e('0x2e')];return getAgent(_0x5b7d77)[_0x949e('0x1b')](function(_0xe6c996){logger['info']('entityFound:',_0xe6c996[_0x949e('0x17')]);emit(util['format']('user:%s',_0xe6c996[_0x949e('0x17')]),_0x949e('0x2f'),{'callNumber':_0x25d65a,'callerId':_0x15a63f,'callbackUrl':_0x41b8d7});return _0x1fe31b[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'error':![],'message':_0x949e('0x31')});})[_0x949e('0x20')](handleError(_0x1fe31b));};exports[_0x949e('0x32')]=function(_0x49bf64,_0x21bd17){logger[_0x949e('0x12')](_0x949e('0x33'),_0x49bf64[_0x949e('0x2a')]);var _0x39c90b=hangupValidation[_0x949e('0xb')](_0x49bf64[_0x949e('0x2a')]);if(_0x39c90b[_0x949e('0x2b')]>0x0){return _0x21bd17[_0x949e('0x18')](0x190)['json'](_0x39c90b);}var _0x34bcd5=_0x49bf64['body'][_0x949e('0x2c')];var _0x2b112a=_0x49bf64['body']['sessionId'];return getAgent(_0x34bcd5)['then'](function(_0x1e848c){logger[_0x949e('0x12')]('entityFound:',_0x1e848c['name']);emit(util['format'](_0x949e('0x34'),_0x1e848c[_0x949e('0x17')]),'webbar:hangup',{'sessionId':_0x2b112a});return _0x21bd17[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'error':![],'message':'hangup\x20executed!'});})[_0x949e('0x20')](handleError(_0x21bd17));};exports[_0x949e('0x35')]=function(_0x3db452,_0xb384ed){logger['info']('answer\x20fired:',_0x3db452[_0x949e('0x2a')]);var _0x590aa7=answerValidation[_0x949e('0xb')](_0x3db452[_0x949e('0x2a')]);if(_0x590aa7[_0x949e('0x2b')]>0x0){return _0xb384ed[_0x949e('0x18')](0x190)[_0x949e('0x30')](_0x590aa7);}var _0x572f20=_0x3db452['body'][_0x949e('0x2c')];var _0x5e970b=_0x3db452[_0x949e('0x2a')][_0x949e('0x36')];return getAgent(_0x572f20)[_0x949e('0x1b')](function(_0x2fdfe6){logger[_0x949e('0x12')](_0x949e('0x37'),_0x2fdfe6['name']);emit(util['format'](_0x949e('0x34'),_0x2fdfe6[_0x949e('0x17')]),_0x949e('0x38'),{'sessionId':_0x5e970b});return _0xb384ed[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'error':![],'message':'answer\x20executed!'});})[_0x949e('0x20')](handleError(_0xb384ed));};exports[_0x949e('0x39')]=function(_0x5b3086,_0x216789){logger[_0x949e('0x12')](_0x949e('0x3a'),_0x5b3086[_0x949e('0x2a')]);var _0x1f1e69=holdValidation[_0x949e('0xb')](_0x5b3086[_0x949e('0x2a')]);if(_0x1f1e69[_0x949e('0x2b')]>0x0){return _0x216789[_0x949e('0x18')](0x190)['json'](_0x1f1e69);}var _0x1599ea=_0x5b3086['body'][_0x949e('0x2c')];var _0x24c7a6=_0x5b3086['body'][_0x949e('0x36')];return getAgent(_0x1599ea)[_0x949e('0x1b')](function(_0x121355){logger[_0x949e('0x12')](_0x949e('0x37'),_0x121355[_0x949e('0x17')]);emit(util[_0x949e('0x3b')](_0x949e('0x34'),_0x121355['name']),_0x949e('0x3c'),{'sessionId':_0x24c7a6});return _0x216789[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'error':![],'message':_0x949e('0x3d')});})[_0x949e('0x20')](handleError(_0x216789));};exports['unhold']=function(_0x5f23b2,_0x46a4fe){logger[_0x949e('0x12')]('unhold\x20fired:',_0x5f23b2[_0x949e('0x2a')]);var _0xdeefe1=unholdValidation[_0x949e('0xb')](_0x5f23b2[_0x949e('0x2a')]);if(_0xdeefe1['length']>0x0){return _0x46a4fe['status'](0x190)[_0x949e('0x30')](_0xdeefe1);}var _0x46d687=_0x5f23b2[_0x949e('0x2a')][_0x949e('0x2c')];var _0x16ec1b=_0x5f23b2[_0x949e('0x2a')][_0x949e('0x36')];return getAgent(_0x46d687)[_0x949e('0x1b')](function(_0x21477f){logger['info'](_0x949e('0x37'),_0x21477f['name']);emit(util[_0x949e('0x3b')]('user:%s',_0x21477f[_0x949e('0x17')]),'webbar:unhold',{'sessionId':_0x16ec1b});return _0x46a4fe[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'error':![],'message':'unhold\x20executed!'});})[_0x949e('0x20')](handleError(_0x46a4fe));};exports[_0x949e('0x3e')]=function(_0x2eb9f9,_0x2a5e99){logger[_0x949e('0x12')]('calls\x20fired:',_0x2a5e99['body']);var _0x287a45=callsValidation[_0x949e('0xb')](_0x2eb9f9['body']);if(_0x287a45[_0x949e('0x2b')]>0x0){return _0x2a5e99[_0x949e('0x18')](0x190)['json'](_0x287a45);}var _0x195371=_0x2eb9f9[_0x949e('0x2a')][_0x949e('0x2c')];var _0x2d7397=respondWithRpcPromise(_0x949e('0x23'));var _0x41798a=getAgent(_0x195371);return Promise[_0x949e('0x24')]([_0x2d7397,_0x41798a])[_0x949e('0x1b')](function(_0x394b92){var _0x7dd940=_0x394b92[0x0];var _0x8cc24a=_0x394b92[0x1];var _0x1561b2=_[_0x949e('0x25')](_0x7dd940[_0x949e('0x26')],function(_0x1284ec){return _0x1284ec[_0x949e('0x3f')]==_0x8cc24a['id'];});return _0x2a5e99[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'count':_0x1561b2['length'],'rows':_0x1561b2});})[_0x949e('0x20')](handleError(_0x2a5e99));};exports['conference']=function(_0x5520cd,_0x1bc2bb){logger[_0x949e('0x12')](_0x949e('0x40'),_0x5520cd['body']);var _0xa07383=conferenceValidation[_0x949e('0xb')](_0x5520cd[_0x949e('0x2a')]);if(_0xa07383['length']>0x0){return _0x1bc2bb[_0x949e('0x18')](0x190)[_0x949e('0x30')](_0xa07383);}var _0x23a1c5=_0x5520cd['body'][_0x949e('0x2c')];return getAgent(_0x23a1c5)[_0x949e('0x1b')](function(_0x4073e9){logger[_0x949e('0x12')](_0x949e('0x37'),_0x4073e9[_0x949e('0x17')]);emit(util['format'](_0x949e('0x34'),_0x4073e9[_0x949e('0x17')]),_0x949e('0x41'));return _0x1bc2bb['status'](0xc8)['json']({'error':![],'message':_0x949e('0x42')});})['catch'](handleError(_0x1bc2bb));};exports[_0x949e('0x43')]=function(_0xcc3e22,_0x226576){logger[_0x949e('0x12')](_0x949e('0x44'),_0xcc3e22[_0x949e('0x2a')]);var _0x5ebbe3=transferValidation[_0x949e('0xb')](_0xcc3e22[_0x949e('0x2a')]);if(_0x5ebbe3[_0x949e('0x2b')]>0x0){return _0x226576[_0x949e('0x18')](0x190)[_0x949e('0x30')](_0x5ebbe3);}var _0x470e2a=_0xcc3e22['body'][_0x949e('0x2c')];var _0x1a1ebd=_0xcc3e22['body']['sessionId'];var _0x6ecca9=_0xcc3e22['body'][_0x949e('0x45')];return getAgent(_0x470e2a)['then'](function(_0x5c4c4c){logger[_0x949e('0x12')](_0x949e('0x37'),_0x5c4c4c[_0x949e('0x17')]);emit(util[_0x949e('0x3b')](_0x949e('0x34'),_0x5c4c4c[_0x949e('0x17')]),_0x949e('0x46'),{'sessionId':_0x1a1ebd,'transferNumber':_0x6ecca9});return _0x226576[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'error':![],'message':_0x949e('0x47')});})[_0x949e('0x20')](handleError(_0x226576));};
\ No newline at end of file
index 2f3602b..eaa2b34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a85=['removeAgents','exports','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','getApplications','create','post','addAnswer','addApplications','/:id/notify','/:id/send','send','put','/:id','update','destroy','delete','removeAnswers'];(function(_0x152453,_0x14efa1){var _0x1ee6cf=function(_0x1c7cba){while(--_0x1c7cba){_0x152453['push'](_0x152453['shift']());}};_0x1ee6cf(++_0x14efa1);}(_0x1a85,0x178));var _0x51a8=function(_0x56fbb6,_0x570f05){_0x56fbb6=_0x56fbb6-0x0;var _0x4e9a77=_0x1a85[_0x56fbb6];return _0x4e9a77;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x51a8('0x0'));var timeout=require(_0x51a8('0x1'));var express=require(_0x51a8('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x51a8('0x3'));var interaction=require(_0x51a8('0x4'));var config=require(_0x51a8('0x5'));var controller=require('./whatsappAccount.controller');router[_0x51a8('0x6')]('/',auth['isAuthenticated'](),controller[_0x51a8('0x7')]);router['get'](_0x51a8('0x8'),auth[_0x51a8('0x9')](),controller['describe']);router[_0x51a8('0x6')]('/:id',auth['isAuthenticated'](),controller[_0x51a8('0xa')]);router[_0x51a8('0x6')](_0x51a8('0xb'),auth[_0x51a8('0x9')](),controller[_0x51a8('0xc')]);router[_0x51a8('0x6')](_0x51a8('0xd'),auth[_0x51a8('0x9')](),controller[_0x51a8('0xe')]);router[_0x51a8('0x6')](_0x51a8('0xf'),auth[_0x51a8('0x9')](),controller[_0x51a8('0x10')]);router[_0x51a8('0x6')](_0x51a8('0x11'),auth[_0x51a8('0x9')](),controller[_0x51a8('0x12')]);router['post']('/',auth[_0x51a8('0x9')](),controller[_0x51a8('0x13')]);router[_0x51a8('0x14')]('/:id/dispositions',auth[_0x51a8('0x9')](),controller['addDisposition']);router[_0x51a8('0x14')](_0x51a8('0xd'),auth[_0x51a8('0x9')](),controller[_0x51a8('0x15')]);router[_0x51a8('0x14')](_0x51a8('0xf'),auth[_0x51a8('0x9')](),controller['addAgents']);router[_0x51a8('0x14')](_0x51a8('0x11'),auth[_0x51a8('0x9')](),controller[_0x51a8('0x16')]);router[_0x51a8('0x14')](_0x51a8('0x17'),controller['notify']);router[_0x51a8('0x14')](_0x51a8('0x18'),auth[_0x51a8('0x9')](),controller[_0x51a8('0x19')]);router[_0x51a8('0x1a')](_0x51a8('0x1b'),auth[_0x51a8('0x9')](),controller[_0x51a8('0x1c')]);router['delete'](_0x51a8('0x1b'),auth['isAuthenticated'](),controller[_0x51a8('0x1d')]);router[_0x51a8('0x1e')](_0x51a8('0xb'),auth[_0x51a8('0x9')](),controller['removeDispositions']);router[_0x51a8('0x1e')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x51a8('0x1f')]);router['delete'](_0x51a8('0xf'),auth[_0x51a8('0x9')](),controller[_0x51a8('0x20')]);module[_0x51a8('0x21')]=router;
\ No newline at end of file
+var _0x57ca=['addDisposition','addAnswer','addApplications','/:id/notify','notify','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','getApplications','create','post','/:id/dispositions'];(function(_0x5b3dcb,_0x44e05d){var _0x3a237a=function(_0x50730f){while(--_0x50730f){_0x5b3dcb['push'](_0x5b3dcb['shift']());}};_0x3a237a(++_0x44e05d);}(_0x57ca,0x108));var _0xa57c=function(_0x126900,_0x405077){_0x126900=_0x126900-0x0;var _0x11ee20=_0x57ca[_0x126900];return _0x11ee20;};'use strict';var multer=require('multer');var util=require(_0xa57c('0x0'));var path=require(_0xa57c('0x1'));var timeout=require('connect-timeout');var express=require(_0xa57c('0x2'));var router=express[_0xa57c('0x3')]();var fs_extra=require(_0xa57c('0x4'));var auth=require(_0xa57c('0x5'));var interaction=require(_0xa57c('0x6'));var config=require('../../config/environment');var controller=require(_0xa57c('0x7'));router[_0xa57c('0x8')]('/',auth[_0xa57c('0x9')](),controller[_0xa57c('0xa')]);router[_0xa57c('0x8')](_0xa57c('0xb'),auth[_0xa57c('0x9')](),controller[_0xa57c('0xc')]);router['get'](_0xa57c('0xd'),auth['isAuthenticated'](),controller[_0xa57c('0xe')]);router[_0xa57c('0x8')]('/:id/dispositions',auth[_0xa57c('0x9')](),controller['getDispositions']);router[_0xa57c('0x8')](_0xa57c('0xf'),auth['isAuthenticated'](),controller[_0xa57c('0x10')]);router['get'](_0xa57c('0x11'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x12')]);router[_0xa57c('0x8')](_0xa57c('0x13'),auth['isAuthenticated'](),controller[_0xa57c('0x14')]);router['post']('/',auth[_0xa57c('0x9')](),controller[_0xa57c('0x15')]);router[_0xa57c('0x16')](_0xa57c('0x17'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x18')]);router[_0xa57c('0x16')]('/:id/canned_answers',auth[_0xa57c('0x9')](),controller[_0xa57c('0x19')]);router[_0xa57c('0x16')]('/:id/users',auth[_0xa57c('0x9')](),controller['addAgents']);router[_0xa57c('0x16')](_0xa57c('0x13'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x1a')]);router[_0xa57c('0x16')](_0xa57c('0x1b'),controller[_0xa57c('0x1c')]);router[_0xa57c('0x16')]('/:id/send',auth[_0xa57c('0x9')](),controller['send']);router['put'](_0xa57c('0xd'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x1d')]);router[_0xa57c('0x1e')]('/:id',auth[_0xa57c('0x9')](),controller[_0xa57c('0x1f')]);router[_0xa57c('0x1e')](_0xa57c('0x17'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x20')]);router[_0xa57c('0x1e')](_0xa57c('0xf'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x21')]);router[_0xa57c('0x1e')](_0xa57c('0x11'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x22')]);module[_0xa57c('0x23')]=router;
\ No newline at end of file
index 85af1da..eef4994 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20b5=['sinch','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','sequelize','exports','STRING','name','generate'];(function(_0x5b0473,_0x285b48){var _0x56ca94=function(_0x38ed08){while(--_0x38ed08){_0x5b0473['push'](_0x5b0473['shift']());}};_0x56ca94(++_0x285b48);}(_0x20b5,0x67));var _0x520b=function(_0x2684f9,_0x2ae154){_0x2684f9=_0x2684f9-0x0;var _0x4774ef=_0x20b5[_0x2684f9];return _0x4774ef;};'use strict';var Sequelize=require(_0x520b('0x0'));var rs=require('randomstring');module[_0x520b('0x1')]={'name':{'type':Sequelize[_0x520b('0x2')],'unique':_0x520b('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x520b('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x520b('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x520b('0x2')],'defaultValue':function(){return rs[_0x520b('0x4')]();}},'phone':{'type':Sequelize[_0x520b('0x2')]},'type':{'type':Sequelize['ENUM']('twilio',_0x520b('0x5'))},'accountSid':{'type':Sequelize[_0x520b('0x2')]},'baseUrl':{'type':Sequelize[_0x520b('0x2')]},'authToken':{'type':Sequelize[_0x520b('0x2')]},'notificationTemplate':{'type':Sequelize[_0x520b('0x6')],'defaultValue':function(){return _0x520b('0x7');}},'notificationSound':{'type':Sequelize[_0x520b('0x8')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x520b('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x520b('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x520b('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x520b('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x520b('0x9')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x520b('0x8')],'defaultValue':![],'comment':_0x520b('0xa'),'set':function(_0x1835d0){if(!_0x1835d0){this[_0x520b('0xb')]('mandatoryDispositionPauseId',null);}this[_0x520b('0xb')]('mandatoryDisposition',_0x1835d0);}},'description':{'type':Sequelize[_0x520b('0x2')]}};
\ No newline at end of file
+var _0x94c8=['name','STRING','generate','ENUM','twilio','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','randomstring'];(function(_0x547204,_0x58aa0c){var _0x3e5e31=function(_0x17b5f2){while(--_0x17b5f2){_0x547204['push'](_0x547204['shift']());}};_0x3e5e31(++_0x58aa0c);}(_0x94c8,0xfa));var _0x894c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x94c8[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x894c('0x0'));var rs=require(_0x894c('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x894c('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0x894c('0x3')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0x894c('0x3')],'defaultValue':function(){return rs[_0x894c('0x4')]();}},'phone':{'type':Sequelize[_0x894c('0x3')]},'type':{'type':Sequelize[_0x894c('0x5')](_0x894c('0x6'),'sinch')},'accountSid':{'type':Sequelize['STRING']},'baseUrl':{'type':Sequelize[_0x894c('0x3')]},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x894c('0x7')],'defaultValue':function(){return _0x894c('0x8');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x894c('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x894c('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x894c('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x894c('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x894c('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x894c('0xb'),'set':function(_0x593e16){if(!_0x593e16){this[_0x894c('0xc')]('mandatoryDispositionPauseId',null);}this['setDataValue'](_0x894c('0xd'),_0x593e16);}},'description':{'type':Sequelize[_0x894c('0x3')]}};
\ No newline at end of file
index 2d9699b..77a4c19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfed=['omit','spread','emit','removeAgents','isArray','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','ISOLATION_LEVELS','READ_COMMITTED','WhatsappApplication','findAndCountAll','finally','getApplications','notify','whatsapp','Applications','account','sinch','statuses','state','read','WhatsappMessage','timestamp','message_id','applications','orderBy','asc','CmContact','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','ListId','twilio','from','From','replace','whatsapp:','Body','notifications','messageId','Sequelize','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','CmList','DESC','list','Contacts','contact','WhatsappInteraction','interaction','created','push','close','*,*,*,*','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','to\x20is\x20mandatory','List','out','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','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','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','jayson/promise','http','request','info','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','WhatsappAccount,\x20%s,\x20%s','message','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','WhatsappAccounts','UserProfileResource','sendStatus','stack','name','send','index','Pause','map','WhatsappAccount','rawAttributes','fieldName','key','model','keys','intersection','query','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','type','merge','options','includeAll','include','rows','show','mandatoryDispositionPause','length','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','params','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','order','findAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','removeAnswers','addAgents'];(function(_0x41ecb2,_0x306e02){var _0x1137d9=function(_0x4be3ef){while(--_0x4be3ef){_0x41ecb2['push'](_0x41ecb2['shift']());}};_0x1137d9(++_0x306e02);}(_0xbfed,0x114));var _0xdbfe=function(_0x673722,_0x275d7e){_0x673722=_0x673722-0x0;var _0x21249c=_0xbfed[_0x673722];return _0x21249c;};'use strict';var emlformat=require(_0xdbfe('0x0'));var rimraf=require(_0xdbfe('0x1'));var zipdir=require(_0xdbfe('0x2'));var jsonpatch=require(_0xdbfe('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xdbfe('0x4'));var Mustache=require(_0xdbfe('0x5'));var util=require('util');var path=require('path');var sox=require(_0xdbfe('0x6'));var csv=require(_0xdbfe('0x7'));var ejs=require(_0xdbfe('0x8'));var fs=require('fs');var fs_extra=require(_0xdbfe('0x9'));var _=require(_0xdbfe('0xa'));var squel=require(_0xdbfe('0xb'));var crypto=require(_0xdbfe('0xc'));var jsforce=require(_0xdbfe('0xd'));var deskjs=require(_0xdbfe('0xe'));var toCsv=require(_0xdbfe('0x7'));var querystring=require(_0xdbfe('0xf'));var Papa=require(_0xdbfe('0x10'));var Redis=require('ioredis');var authService=require(_0xdbfe('0x11'));var qs=require(_0xdbfe('0x12'));var as=require(_0xdbfe('0x13'));var hardwareService=require(_0xdbfe('0x14'));var logger=require(_0xdbfe('0x15'))(_0xdbfe('0x16'));var utils=require(_0xdbfe('0x17'));var config=require(_0xdbfe('0x18'));var licenseUtil=require(_0xdbfe('0x19'));var db=require(_0xdbfe('0x1a'))['db'];config[_0xdbfe('0x1b')]=_[_0xdbfe('0x1c')](config[_0xdbfe('0x1b')],{'host':_0xdbfe('0x1d'),'port':0x18eb});var socket=require(_0xdbfe('0x1e'))(new Redis(config[_0xdbfe('0x1b')]));require(_0xdbfe('0x1f'))[_0xdbfe('0x20')](socket);var jayson=require(_0xdbfe('0x21'));var client=jayson['client'][_0xdbfe('0x22')]({'port':0x232c});function respondWithRpcPromise(_0x439539,_0x5b406d,_0x56ac45,_0x4cba77){return new BPromise(function(_0x37ab3c,_0x7410cd){var _0x58bb60=_0x4cba77||client;return _0x58bb60[_0xdbfe('0x23')](_0x439539,_0x56ac45)['then'](function(_0x664137){logger[_0xdbfe('0x24')]('WhatsappAccount,\x20%s,\x20%s',_0x5b406d,'request\x20sent');logger[_0xdbfe('0x25')](_0xdbfe('0x26'),_0x5b406d,_0xdbfe('0x27'),JSON[_0xdbfe('0x28')](_0x664137));if(_0x664137[_0xdbfe('0x29')]){if(_0x664137[_0xdbfe('0x29')][_0xdbfe('0x2a')]===0x1f4){logger[_0xdbfe('0x29')](_0xdbfe('0x2b'),_0x5b406d,_0x664137['error']['message']);return _0x7410cd(_0x664137[_0xdbfe('0x29')]['message']);}logger[_0xdbfe('0x29')](_0xdbfe('0x2b'),_0x5b406d,_0x664137[_0xdbfe('0x29')]['message']);return _0x37ab3c(_0x664137[_0xdbfe('0x29')][_0xdbfe('0x2c')]);}else{logger[_0xdbfe('0x24')](_0xdbfe('0x2b'),_0x5b406d,_0xdbfe('0x27'));_0x37ab3c(_0x664137[_0xdbfe('0x2d')][_0xdbfe('0x2c')]);}})[_0xdbfe('0x2e')](function(_0x31a7aa){logger[_0xdbfe('0x29')](_0xdbfe('0x2b'),_0x5b406d,_0x31a7aa);_0x7410cd(_0x31a7aa);});});}function respondWithStatusCode(_0x481d7a,_0x4b74bc){_0x4b74bc=_0x4b74bc||0xcc;return function(_0x170a83){if(_0x170a83){return _0x481d7a['sendStatus'](_0x4b74bc);}return _0x481d7a[_0xdbfe('0x2f')](_0x4b74bc)[_0xdbfe('0x30')]();};}function respondWithResult(_0x214f7b,_0x566322){_0x566322=_0x566322||0xc8;return function(_0x157089){if(_0x157089){return _0x214f7b[_0xdbfe('0x2f')](_0x566322)[_0xdbfe('0x31')](_0x157089);}};}function respondWithFilteredResult(_0x4f813c,_0x36ada3){return function(_0x51cd8c){if(_0x51cd8c){var _0x4c083c=typeof _0x36ada3[_0xdbfe('0x32')]===_0xdbfe('0x33')&&typeof _0x36ada3[_0xdbfe('0x34')]===_0xdbfe('0x33');var _0x3769f1=_0x51cd8c[_0xdbfe('0x35')];var _0x367854=_0x4c083c?0x0:_0x36ada3[_0xdbfe('0x32')];var _0x13ad7c=_0x4c083c?_0x51cd8c[_0xdbfe('0x35')]:_0x36ada3['offset']+_0x36ada3[_0xdbfe('0x34')];var _0x578790;if(_0x13ad7c>=_0x3769f1){_0x13ad7c=_0x3769f1;_0x578790=0xc8;}else{_0x578790=0xce;}_0x4f813c['status'](_0x578790);return _0x4f813c[_0xdbfe('0x36')](_0xdbfe('0x37'),_0x367854+'-'+_0x13ad7c+'/'+_0x3769f1)[_0xdbfe('0x31')](_0x51cd8c);}return null;};}function patchUpdates(_0x549211){return function(_0x184e10){try{jsonpatch[_0xdbfe('0x38')](_0x184e10,_0x549211,!![]);}catch(_0x18f4b0){return BPromise['reject'](_0x18f4b0);}return _0x184e10[_0xdbfe('0x39')]();};}function saveUpdates(_0x1532a6,_0x298053){return function(_0x2e6499){if(_0x2e6499){return _0x2e6499[_0xdbfe('0x3a')](_0x1532a6)[_0xdbfe('0x3b')](function(_0x170f28){return _0x170f28;});}return null;};}function removeEntity(_0x1509df,_0x49bcda){return function(_0x18786e){if(_0x18786e){return _0x18786e[_0xdbfe('0x3c')]()[_0xdbfe('0x3b')](function(){var _0x29db53=_0x18786e['get']({'plain':!![]});var _0x5c0380=_0xdbfe('0x3d');return db[_0xdbfe('0x3e')][_0xdbfe('0x3c')]({'where':{'type':_0x5c0380,'resourceId':_0x29db53['id']}})['then'](function(){return _0x18786e;});})[_0xdbfe('0x3b')](function(){_0x1509df['status'](0xcc)[_0xdbfe('0x30')]();});}};}function handleEntityNotFound(_0x464824,_0x539209){return function(_0xe2721d){if(!_0xe2721d){_0x464824[_0xdbfe('0x3f')](0x194);}return _0xe2721d;};}function handleError(_0x3587ef,_0x2f7569){_0x2f7569=_0x2f7569||0x1f4;return function(_0x13644b){logger[_0xdbfe('0x29')](_0x13644b[_0xdbfe('0x40')]);if(_0x13644b[_0xdbfe('0x41')]){delete _0x13644b['name'];}_0x3587ef[_0xdbfe('0x2f')](_0x2f7569)[_0xdbfe('0x42')](_0x13644b);};}exports[_0xdbfe('0x43')]=function(_0x113432,_0x48314d){var _0x56d89a={'include':[{'model':db[_0xdbfe('0x44')],'as':'mandatoryDispositionPause'}]},_0x47f0bb={},_0x1a180c={'count':0x0,'rows':[]};var _0x297d81=_[_0xdbfe('0x45')](db[_0xdbfe('0x46')][_0xdbfe('0x47')],function(_0x2d38ba){return{'name':_0x2d38ba[_0xdbfe('0x48')],'type':_0x2d38ba['type'][_0xdbfe('0x49')]};});_0x47f0bb[_0xdbfe('0x4a')]=_[_0xdbfe('0x45')](_0x297d81,'name');_0x47f0bb['query']=_[_0xdbfe('0x4b')](_0x113432['query']);_0x47f0bb['filters']=_[_0xdbfe('0x4c')](_0x47f0bb[_0xdbfe('0x4a')],_0x47f0bb[_0xdbfe('0x4d')]);_0x56d89a[_0xdbfe('0x4e')]=_[_0xdbfe('0x4c')](_0x47f0bb[_0xdbfe('0x4a')],qs[_0xdbfe('0x4f')](_0x113432[_0xdbfe('0x4d')][_0xdbfe('0x4f')]));_0x56d89a[_0xdbfe('0x4e')]=_0x56d89a['attributes']['length']?_0x56d89a[_0xdbfe('0x4e')]:_0x47f0bb[_0xdbfe('0x4a')];if(!_0x113432['query'][_0xdbfe('0x50')](_0xdbfe('0x51'))){_0x56d89a['limit']=qs['limit'](_0x113432[_0xdbfe('0x4d')]['limit']);_0x56d89a['offset']=qs[_0xdbfe('0x32')](_0x113432[_0xdbfe('0x4d')][_0xdbfe('0x32')]);}_0x56d89a['order']=qs['sort'](_0x113432[_0xdbfe('0x4d')][_0xdbfe('0x52')]);_0x56d89a[_0xdbfe('0x53')]=qs[_0xdbfe('0x54')](_[_0xdbfe('0x55')](_0x113432[_0xdbfe('0x4d')],_0x47f0bb[_0xdbfe('0x54')]),_0x297d81);if(_0x113432['query'][_0xdbfe('0x56')]){_0x56d89a[_0xdbfe('0x53')]=_['merge'](_0x56d89a[_0xdbfe('0x53')],{'$or':_[_0xdbfe('0x45')](_0x297d81,function(_0x523f3e){if(_0x523f3e[_0xdbfe('0x57')]!=='VIRTUAL'){var _0x53505f={};_0x53505f[_0x523f3e[_0xdbfe('0x41')]]={'$like':'%'+_0x113432['query'][_0xdbfe('0x56')]+'%'};return _0x53505f;}})});}_0x56d89a=_[_0xdbfe('0x58')]({},_0x56d89a,_0x113432[_0xdbfe('0x59')]);var _0x34de5c={'where':_0x56d89a['where']};return db['WhatsappAccount'][_0xdbfe('0x35')](_0x34de5c)[_0xdbfe('0x3b')](function(_0x1823c5){_0x1a180c[_0xdbfe('0x35')]=_0x1823c5;if(_0x113432[_0xdbfe('0x4d')][_0xdbfe('0x5a')]){_0x56d89a[_0xdbfe('0x5b')]=[{'all':!![]}];}return db[_0xdbfe('0x46')]['findAll'](_0x56d89a);})[_0xdbfe('0x3b')](function(_0x3c2696){_0x1a180c[_0xdbfe('0x5c')]=_0x3c2696;return _0x1a180c;})[_0xdbfe('0x3b')](respondWithFilteredResult(_0x48314d,_0x56d89a))[_0xdbfe('0x2e')](handleError(_0x48314d,null));};exports[_0xdbfe('0x5d')]=function(_0x9aa111,_0x58ea90){var _0x226f30={'raw':![],'where':{'id':_0x9aa111['params']['id']},'include':[{'model':db[_0xdbfe('0x44')],'as':_0xdbfe('0x5e')}]},_0x4dce53={};_0x4dce53['model']=_[_0xdbfe('0x4b')](db[_0xdbfe('0x46')][_0xdbfe('0x47')]);_0x4dce53[_0xdbfe('0x4d')]=_['keys'](_0x9aa111[_0xdbfe('0x4d')]);_0x4dce53['filters']=_[_0xdbfe('0x4c')](_0x4dce53[_0xdbfe('0x4a')],_0x4dce53['query']);_0x226f30[_0xdbfe('0x4e')]=_[_0xdbfe('0x4c')](_0x4dce53[_0xdbfe('0x4a')],qs[_0xdbfe('0x4f')](_0x9aa111[_0xdbfe('0x4d')]['fields']));_0x226f30[_0xdbfe('0x4e')]=_0x226f30[_0xdbfe('0x4e')][_0xdbfe('0x5f')]?_0x226f30[_0xdbfe('0x4e')]:_0x4dce53['model'];if(_0x9aa111['query'][_0xdbfe('0x5a')]){_0x226f30[_0xdbfe('0x5b')]=[{'all':!![]}];}_0x226f30=_[_0xdbfe('0x58')]({},_0x226f30,_0x9aa111['options']);return db['WhatsappAccount'][_0xdbfe('0x60')](_0x226f30)[_0xdbfe('0x3b')](handleEntityNotFound(_0x58ea90,null))[_0xdbfe('0x3b')](respondWithResult(_0x58ea90,null))['catch'](handleError(_0x58ea90,null));};exports['create']=function(_0x5844ad,_0x150b6c){return db[_0xdbfe('0x46')][_0xdbfe('0x61')](_0x5844ad[_0xdbfe('0x62')],{})['then'](function(_0x55f025){var _0x547266=_0x5844ad[_0xdbfe('0x63')][_0xdbfe('0x64')]({'plain':!![]});if(!_0x547266)throw new Error(_0xdbfe('0x65'));if(_0x547266[_0xdbfe('0x66')]==='user'){var _0x3d9cc2=_0x55f025[_0xdbfe('0x64')]({'plain':!![]});var _0xee3d6=_0xdbfe('0x3d');return db[_0xdbfe('0x67')]['find']({'where':{'name':_0xee3d6,'userProfileId':_0x547266[_0xdbfe('0x68')]},'raw':!![]})[_0xdbfe('0x3b')](function(_0x355f1e){if(_0x355f1e&&_0x355f1e[_0xdbfe('0x69')]===0x0){return db[_0xdbfe('0x3e')][_0xdbfe('0x61')]({'name':_0x3d9cc2[_0xdbfe('0x41')],'resourceId':_0x3d9cc2['id'],'type':_0x355f1e[_0xdbfe('0x41')],'sectionId':_0x355f1e['id']},{})[_0xdbfe('0x3b')](function(){return _0x55f025;});}else{return _0x55f025;}})[_0xdbfe('0x2e')](function(_0x3ae684){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3ae684);throw _0x3ae684;});}return _0x55f025;})['then'](respondWithResult(_0x150b6c,0xc9))[_0xdbfe('0x2e')](handleError(_0x150b6c,null));};exports[_0xdbfe('0x3a')]=function(_0x363782,_0x367918){if(_0x363782[_0xdbfe('0x62')]['id']){delete _0x363782[_0xdbfe('0x62')]['id'];}return db[_0xdbfe('0x46')][_0xdbfe('0x60')]({'where':{'id':_0x363782[_0xdbfe('0x6a')]['id']},'include':[{'model':db['Pause'],'as':_0xdbfe('0x5e')}]})[_0xdbfe('0x3b')](handleEntityNotFound(_0x367918,null))[_0xdbfe('0x3b')](saveUpdates(_0x363782['body'],null))[_0xdbfe('0x3b')](respondWithResult(_0x367918,null))[_0xdbfe('0x2e')](handleError(_0x367918,null));};exports[_0xdbfe('0x3c')]=function(_0x2f4491,_0x5dc394){return db[_0xdbfe('0x46')][_0xdbfe('0x60')]({'where':{'id':_0x2f4491[_0xdbfe('0x6a')]['id']}})[_0xdbfe('0x3b')](handleEntityNotFound(_0x5dc394,null))[_0xdbfe('0x3b')](removeEntity(_0x5dc394,null))[_0xdbfe('0x2e')](handleError(_0x5dc394,null));};exports['describe']=function(_0x33b189,_0x2c2500){return db['WhatsappAccount'][_0xdbfe('0x6b')]()['then'](respondWithResult(_0x2c2500,null))[_0xdbfe('0x2e')](handleError(_0x2c2500,null));};exports[_0xdbfe('0x6c')]=function(_0x17cc7c,_0x808c30,_0x3693ae){if(_0x17cc7c[_0xdbfe('0x62')]['id']){delete _0x17cc7c[_0xdbfe('0x62')]['id'];}return db[_0xdbfe('0x46')][_0xdbfe('0x60')]({'where':{'id':_0x17cc7c[_0xdbfe('0x6a')]['id']}})[_0xdbfe('0x3b')](handleEntityNotFound(_0x808c30,null))[_0xdbfe('0x3b')](function(_0x3ee13a){if(_0x3ee13a){_0x17cc7c['body'][_0xdbfe('0x6d')]=_0x3ee13a['id'];return db[_0xdbfe('0x6e')][_0xdbfe('0x61')](_0x17cc7c['body']);}})[_0xdbfe('0x3b')](respondWithResult(_0x808c30,null))[_0xdbfe('0x2e')](handleError(_0x808c30,null));};exports[_0xdbfe('0x6f')]=function(_0x1434f0,_0x3cb523,_0x471478){var _0x389cf3={'raw':![],'where':{}};var _0x4d9fa9={};var _0x2b849f={'count':0x0,'rows':[]};return db[_0xdbfe('0x46')]['findOne']({'where':{'id':_0x1434f0[_0xdbfe('0x6a')]['id']}})[_0xdbfe('0x3b')](handleEntityNotFound(_0x3cb523,null))[_0xdbfe('0x3b')](function(_0x23e21e){if(_0x23e21e){_0x4d9fa9[_0xdbfe('0x4a')]=_[_0xdbfe('0x4b')](db['Disposition'][_0xdbfe('0x47')]);_0x4d9fa9['query']=_[_0xdbfe('0x4b')](_0x1434f0[_0xdbfe('0x4d')]);_0x4d9fa9[_0xdbfe('0x54')]=_[_0xdbfe('0x4c')](_0x4d9fa9['model'],_0x4d9fa9[_0xdbfe('0x4d')]);_0x389cf3['attributes']=_[_0xdbfe('0x4c')](_0x4d9fa9[_0xdbfe('0x4a')],qs[_0xdbfe('0x4f')](_0x1434f0[_0xdbfe('0x4d')][_0xdbfe('0x4f')]));_0x389cf3[_0xdbfe('0x4e')]=_0x389cf3[_0xdbfe('0x4e')][_0xdbfe('0x5f')]?_0x389cf3['attributes']:_0x4d9fa9[_0xdbfe('0x4a')];if(!_0x1434f0[_0xdbfe('0x4d')][_0xdbfe('0x50')](_0xdbfe('0x51'))){_0x389cf3[_0xdbfe('0x34')]=qs[_0xdbfe('0x34')](_0x1434f0['query'][_0xdbfe('0x34')]);_0x389cf3['offset']=qs[_0xdbfe('0x32')](_0x1434f0[_0xdbfe('0x4d')][_0xdbfe('0x32')]);}_0x389cf3[_0xdbfe('0x70')]=qs[_0xdbfe('0x52')](_0x1434f0[_0xdbfe('0x4d')][_0xdbfe('0x52')]);_0x389cf3['where']=qs[_0xdbfe('0x54')](_['pick'](_0x1434f0['query'],_0x4d9fa9[_0xdbfe('0x54')]));_0x389cf3['where']['WhatsappAccountId']=_0x23e21e['id'];if(_0x1434f0['query'][_0xdbfe('0x56')]){_0x389cf3[_0xdbfe('0x53')]=_[_0xdbfe('0x58')](_0x389cf3[_0xdbfe('0x53')],{'$or':_[_0xdbfe('0x45')](_0x389cf3[_0xdbfe('0x4e')],function(_0x7080){var _0x5e57b0={};_0x5e57b0[_0x7080]={'$like':'%'+_0x1434f0[_0xdbfe('0x4d')][_0xdbfe('0x56')]+'%'};return _0x5e57b0;})});}_0x389cf3=_[_0xdbfe('0x58')]({},_0x389cf3,_0x1434f0[_0xdbfe('0x59')]);return db[_0xdbfe('0x6e')][_0xdbfe('0x35')]({'where':_0x389cf3[_0xdbfe('0x53')]})[_0xdbfe('0x3b')](function(_0x1714f8){_0x2b849f[_0xdbfe('0x35')]=_0x1714f8;if(_0x1434f0[_0xdbfe('0x4d')][_0xdbfe('0x5a')]){_0x389cf3[_0xdbfe('0x5b')]=[{'all':!![]}];}return db[_0xdbfe('0x6e')][_0xdbfe('0x71')](_0x389cf3);})[_0xdbfe('0x3b')](function(_0x3d37ea){_0x2b849f[_0xdbfe('0x5c')]=_0x3d37ea;return _0x2b849f;});}})['then'](respondWithFilteredResult(_0x3cb523,_0x389cf3))[_0xdbfe('0x2e')](handleError(_0x3cb523,null));};exports[_0xdbfe('0x72')]=function(_0x516e28,_0x3e3928,_0x346c70){return db[_0xdbfe('0x46')][_0xdbfe('0x60')]({'where':{'id':_0x516e28['params']['id']}})[_0xdbfe('0x3b')](handleEntityNotFound(_0x3e3928,null))[_0xdbfe('0x3b')](function(_0xa76355){if(_0xa76355){return _0xa76355['removeDispositions'](_0x516e28[_0xdbfe('0x4d')][_0xdbfe('0x73')]);}})[_0xdbfe('0x3b')](respondWithStatusCode(_0x3e3928,null))[_0xdbfe('0x2e')](handleError(_0x3e3928,null));};exports[_0xdbfe('0x74')]=function(_0x212bc8,_0x44e280,_0x523b99){if(_0x212bc8[_0xdbfe('0x62')]['id']){delete _0x212bc8['body']['id'];}return db[_0xdbfe('0x46')]['find']({'where':{'id':_0x212bc8['params']['id']}})[_0xdbfe('0x3b')](handleEntityNotFound(_0x44e280,null))[_0xdbfe('0x3b')](function(_0x380232){if(_0x380232){_0x212bc8['body']['WhatsappAccountId']=_0x380232['id'];return db[_0xdbfe('0x75')][_0xdbfe('0x61')](_0x212bc8['body']);}})[_0xdbfe('0x3b')](respondWithResult(_0x44e280,null))['catch'](handleError(_0x44e280,null));};exports[_0xdbfe('0x76')]=function(_0x494386,_0x27f23b,_0x23c62e){var _0x3d3ade={'raw':![],'where':{}};var _0x15fff4={};var _0x4dd673={'count':0x0,'rows':[]};return db[_0xdbfe('0x46')][_0xdbfe('0x77')]({'where':{'id':_0x494386[_0xdbfe('0x6a')]['id']}})[_0xdbfe('0x3b')](handleEntityNotFound(_0x27f23b,null))[_0xdbfe('0x3b')](function(_0x1785fc){if(_0x1785fc){_0x15fff4[_0xdbfe('0x4a')]=_[_0xdbfe('0x4b')](db[_0xdbfe('0x75')][_0xdbfe('0x47')]);_0x15fff4[_0xdbfe('0x4d')]=_[_0xdbfe('0x4b')](_0x494386[_0xdbfe('0x4d')]);_0x15fff4[_0xdbfe('0x54')]=_['intersection'](_0x15fff4['model'],_0x15fff4[_0xdbfe('0x4d')]);_0x3d3ade[_0xdbfe('0x4e')]=_[_0xdbfe('0x4c')](_0x15fff4['model'],qs[_0xdbfe('0x4f')](_0x494386['query'][_0xdbfe('0x4f')]));_0x3d3ade[_0xdbfe('0x4e')]=_0x3d3ade[_0xdbfe('0x4e')][_0xdbfe('0x5f')]?_0x3d3ade[_0xdbfe('0x4e')]:_0x15fff4[_0xdbfe('0x4a')];if(!_0x494386[_0xdbfe('0x4d')][_0xdbfe('0x50')](_0xdbfe('0x51'))){_0x3d3ade[_0xdbfe('0x34')]=qs['limit'](_0x494386[_0xdbfe('0x4d')][_0xdbfe('0x34')]);_0x3d3ade['offset']=qs[_0xdbfe('0x32')](_0x494386['query'][_0xdbfe('0x32')]);}_0x3d3ade['order']=qs[_0xdbfe('0x52')](_0x494386[_0xdbfe('0x4d')]['sort']);_0x3d3ade[_0xdbfe('0x53')]=qs[_0xdbfe('0x54')](_[_0xdbfe('0x55')](_0x494386[_0xdbfe('0x4d')],_0x15fff4[_0xdbfe('0x54')]));_0x3d3ade[_0xdbfe('0x53')][_0xdbfe('0x6d')]=_0x1785fc['id'];if(_0x494386[_0xdbfe('0x4d')][_0xdbfe('0x56')]){_0x3d3ade[_0xdbfe('0x53')]=_[_0xdbfe('0x58')](_0x3d3ade['where'],{'$or':_['map'](_0x3d3ade[_0xdbfe('0x4e')],function(_0x409189){var _0x5808ef={};_0x5808ef[_0x409189]={'$like':'%'+_0x494386[_0xdbfe('0x4d')]['filter']+'%'};return _0x5808ef;})});}_0x3d3ade=_[_0xdbfe('0x58')]({},_0x3d3ade,_0x494386[_0xdbfe('0x59')]);return db[_0xdbfe('0x75')][_0xdbfe('0x35')]({'where':_0x3d3ade[_0xdbfe('0x53')]})[_0xdbfe('0x3b')](function(_0x35ca37){_0x4dd673[_0xdbfe('0x35')]=_0x35ca37;if(_0x494386[_0xdbfe('0x4d')][_0xdbfe('0x5a')]){_0x3d3ade[_0xdbfe('0x5b')]=[{'all':!![]}];}return db[_0xdbfe('0x75')][_0xdbfe('0x71')](_0x3d3ade);})['then'](function(_0x4feb76){_0x4dd673[_0xdbfe('0x5c')]=_0x4feb76;return _0x4dd673;});}})['then'](respondWithFilteredResult(_0x27f23b,_0x3d3ade))[_0xdbfe('0x2e')](handleError(_0x27f23b,null));};exports[_0xdbfe('0x78')]=function(_0x1afb53,_0x1746eb,_0x2125dd){return db[_0xdbfe('0x46')][_0xdbfe('0x60')]({'where':{'id':_0x1afb53[_0xdbfe('0x6a')]['id']}})[_0xdbfe('0x3b')](handleEntityNotFound(_0x1746eb,null))[_0xdbfe('0x3b')](function(_0x3e6bab){if(_0x3e6bab){return _0x3e6bab[_0xdbfe('0x78')](_0x1afb53[_0xdbfe('0x4d')][_0xdbfe('0x73')]);}})['then'](respondWithStatusCode(_0x1746eb,null))[_0xdbfe('0x2e')](handleError(_0x1746eb,null));};exports[_0xdbfe('0x79')]=function(_0x3345b6,_0x5d1b61,_0x4e4fd1){return db[_0xdbfe('0x46')][_0xdbfe('0x60')]({'where':{'id':_0x3345b6[_0xdbfe('0x6a')]['id']}})['then'](handleEntityNotFound(_0x5d1b61,null))[_0xdbfe('0x3b')](function(_0x15e569){if(_0x15e569){return _0x15e569[_0xdbfe('0x79')](_0x3345b6[_0xdbfe('0x62')][_0xdbfe('0x73')],_[_0xdbfe('0x7a')](_0x3345b6['body'],[_0xdbfe('0x73'),'id'])||{})[_0xdbfe('0x7b')](function(_0x44c183){for(var _0x2c535d=0x0;_0x2c535d<_0x3345b6[_0xdbfe('0x62')]['ids'][_0xdbfe('0x5f')];_0x2c535d+=0x1){socket[_0xdbfe('0x7c')]('userWhatsappAccount:save',{'UserId':Number(_0x3345b6[_0xdbfe('0x62')][_0xdbfe('0x73')][_0x2c535d]),'WhatsappAccountId':Number(_0x3345b6[_0xdbfe('0x6a')]['id'])});}return _0x44c183;});}})[_0xdbfe('0x3b')](respondWithResult(_0x5d1b61,null))['catch'](handleError(_0x5d1b61,null));};exports[_0xdbfe('0x7d')]=function(_0x4cfe60,_0x7d6ac7,_0x1568df){return db[_0xdbfe('0x46')][_0xdbfe('0x60')]({'where':{'id':_0x4cfe60[_0xdbfe('0x6a')]['id']}})['then'](handleEntityNotFound(_0x7d6ac7,null))['then'](function(_0x4c8b14){if(_0x4c8b14){return _0x4c8b14['removeAgents'](_0x4cfe60['query'][_0xdbfe('0x73')])[_0xdbfe('0x3b')](function(){if(_[_0xdbfe('0x7e')](_0x4cfe60['query'][_0xdbfe('0x73')])){for(var _0x2b0dbd=0x0;_0x2b0dbd<_0x4cfe60[_0xdbfe('0x4d')][_0xdbfe('0x73')][_0xdbfe('0x5f')];_0x2b0dbd+=0x1){socket['emit'](_0xdbfe('0x7f'),{'UserId':Number(_0x4cfe60['query']['ids'][_0x2b0dbd]),'WhatsappAccountId':Number(_0x4cfe60[_0xdbfe('0x6a')]['id'])});}}else{socket['emit'](_0xdbfe('0x7f'),{'UserId':Number(_0x4cfe60['query'][_0xdbfe('0x73')]),'WhatsappAccountId':Number(_0x4cfe60['params']['id'])});}});}})['then'](respondWithStatusCode(_0x7d6ac7,null))['catch'](handleError(_0x7d6ac7,null));};exports[_0xdbfe('0x80')]=function(_0x45eed9,_0xcb2326,_0x3e6f5e){var _0xadbc5a={};var _0x293b43={};var _0x1696f8;var _0x56a152;return db[_0xdbfe('0x46')][_0xdbfe('0x77')]({'where':{'id':_0x45eed9[_0xdbfe('0x6a')]['id']}})[_0xdbfe('0x3b')](handleEntityNotFound(_0xcb2326,null))[_0xdbfe('0x3b')](function(_0x54c9aa){if(_0x54c9aa){_0x1696f8=_0x54c9aa;_0x293b43['model']=_['keys'](db[_0xdbfe('0x81')][_0xdbfe('0x47')]);_0x293b43['query']=_[_0xdbfe('0x4b')](_0x45eed9['query']);_0x293b43[_0xdbfe('0x54')]=_[_0xdbfe('0x4c')](_0x293b43[_0xdbfe('0x4a')],_0x293b43[_0xdbfe('0x4d')]);_0xadbc5a[_0xdbfe('0x4e')]=_[_0xdbfe('0x4c')](_0x293b43[_0xdbfe('0x4a')],qs['fields'](_0x45eed9[_0xdbfe('0x4d')][_0xdbfe('0x4f')]));_0xadbc5a[_0xdbfe('0x4e')]=_0xadbc5a[_0xdbfe('0x4e')][_0xdbfe('0x5f')]?_0xadbc5a['attributes']:_0x293b43[_0xdbfe('0x4a')];_0xadbc5a[_0xdbfe('0x70')]=qs[_0xdbfe('0x52')](_0x45eed9[_0xdbfe('0x4d')]['sort']);_0xadbc5a[_0xdbfe('0x53')]=qs[_0xdbfe('0x54')](_[_0xdbfe('0x55')](_0x45eed9[_0xdbfe('0x4d')],_0x293b43[_0xdbfe('0x54')]));if(_0x45eed9[_0xdbfe('0x4d')][_0xdbfe('0x56')]){_0xadbc5a['where']=_['merge'](_0xadbc5a[_0xdbfe('0x53')],{'$or':_[_0xdbfe('0x45')](_0xadbc5a['attributes'],function(_0xa8bd4a){var _0x160535={};_0x160535[_0xa8bd4a]={'$like':'%'+_0x45eed9[_0xdbfe('0x4d')][_0xdbfe('0x56')]+'%'};return _0x160535;})});}_0xadbc5a=_[_0xdbfe('0x58')]({},_0xadbc5a,_0x45eed9[_0xdbfe('0x59')]);return _0x1696f8[_0xdbfe('0x80')](_0xadbc5a);}})[_0xdbfe('0x3b')](function(_0x255f08){if(_0x255f08){_0x56a152=_0x255f08[_0xdbfe('0x5f')];if(!_0x45eed9['query']['hasOwnProperty']('nolimit')){_0xadbc5a[_0xdbfe('0x34')]=qs['limit'](_0x45eed9[_0xdbfe('0x4d')][_0xdbfe('0x34')]);_0xadbc5a[_0xdbfe('0x32')]=qs['offset'](_0x45eed9[_0xdbfe('0x4d')][_0xdbfe('0x32')]);}return _0x1696f8[_0xdbfe('0x80')](_0xadbc5a);}})[_0xdbfe('0x3b')](function(_0x3433f0){if(_0x3433f0){return _0x3433f0?{'count':_0x56a152,'rows':_0x3433f0}:null;}})[_0xdbfe('0x3b')](respondWithResult(_0xcb2326,null))[_0xdbfe('0x2e')](handleError(_0xcb2326,null));};exports[_0xdbfe('0x82')]=function(_0xd7d380,_0x179584){var _0x5530ed=_0xd7d380[_0xdbfe('0x6a')]['id'];var _0x1607eb=_0xd7d380['body'];var _0x8b341=0xc8;var _0x2ecdb6=null;return db['sequelize']['transaction']({'isolationLevel':db[_0xdbfe('0x83')]['Transaction'][_0xdbfe('0x84')][_0xdbfe('0x85')]},function(_0x3d6636){return db[_0xdbfe('0x46')][_0xdbfe('0x77')]({'where':{'id':_0x5530ed},'transaction':_0x3d6636})[_0xdbfe('0x3b')](function(_0x514603){if(_0x514603){return db[_0xdbfe('0x86')][_0xdbfe('0x3c')]({'where':{'WhatsappAccountId':_0x5530ed},'transaction':_0x3d6636})['then'](function(){var _0xf0f73e=_[_0xdbfe('0x45')](_0x1607eb,function(_0x29a3df){_0x29a3df[_0xdbfe('0x6d')]=_0x5530ed;return _0x29a3df;});return db[_0xdbfe('0x86')]['bulkCreate'](_0xf0f73e,{'transaction':_0x3d6636});});}else{_0x8b341=0x194;_0x2ecdb6=[];}});})[_0xdbfe('0x3b')](function(){if(_0x8b341!==0x194){return db[_0xdbfe('0x86')][_0xdbfe('0x87')]({'where':{'WhatsappAccountId':_0x5530ed},'order':'priority'})['then'](function(_0xb17809){_0x2ecdb6=_0xb17809;});}})[_0xdbfe('0x2e')](function(_0x3ce68f){_0x8b341=0x1f4;logger['error'](_0x3ce68f[_0xdbfe('0x40')]);if(_0x3ce68f[_0xdbfe('0x41')]){delete _0x3ce68f[_0xdbfe('0x41')];}_0x2ecdb6=_0x3ce68f;})[_0xdbfe('0x88')](function(){if(_0x2ecdb6===null){_0x179584[_0xdbfe('0x3f')](_0x8b341);}else{if(_0x8b341===0x1f4){_0x179584['status'](_0x8b341)['send'](_0x2ecdb6);}else{_0x179584[_0xdbfe('0x2f')](_0x8b341)[_0xdbfe('0x31')](_0x2ecdb6);}}});};exports['getApplications']=function(_0x4a3d0d,_0x1b7a2c,_0x5f41c6){var _0x53f9bc={};var _0x505478={};var _0x18cc8c;var _0x54b28c;return db[_0xdbfe('0x46')]['findOne']({'where':{'id':_0x4a3d0d['params']['id']}})[_0xdbfe('0x3b')](handleEntityNotFound(_0x1b7a2c,null))['then'](function(_0x3a5e7d){if(_0x3a5e7d){_0x18cc8c=_0x3a5e7d;_0x505478[_0xdbfe('0x4a')]=_[_0xdbfe('0x4b')](db[_0xdbfe('0x86')]['rawAttributes']);_0x505478[_0xdbfe('0x4d')]=_[_0xdbfe('0x4b')](_0x4a3d0d['query']);_0x505478['filters']=_[_0xdbfe('0x4c')](_0x505478[_0xdbfe('0x4a')],_0x505478['query']);_0x53f9bc['attributes']=_[_0xdbfe('0x4c')](_0x505478[_0xdbfe('0x4a')],qs['fields'](_0x4a3d0d[_0xdbfe('0x4d')]['fields']));_0x53f9bc[_0xdbfe('0x4e')]=_0x53f9bc[_0xdbfe('0x4e')][_0xdbfe('0x5f')]?_0x53f9bc[_0xdbfe('0x4e')]:_0x505478[_0xdbfe('0x4a')];_0x53f9bc[_0xdbfe('0x70')]=qs['sort'](_0x4a3d0d[_0xdbfe('0x4d')][_0xdbfe('0x52')]);_0x53f9bc[_0xdbfe('0x53')]=qs[_0xdbfe('0x54')](_[_0xdbfe('0x55')](_0x4a3d0d[_0xdbfe('0x4d')],_0x505478[_0xdbfe('0x54')]));if(_0x4a3d0d[_0xdbfe('0x4d')][_0xdbfe('0x56')]){_0x53f9bc[_0xdbfe('0x53')]=_[_0xdbfe('0x58')](_0x53f9bc[_0xdbfe('0x53')],{'$or':_[_0xdbfe('0x45')](_0x53f9bc[_0xdbfe('0x4e')],function(_0x517f26){var _0x10c4e7={};_0x10c4e7[_0x517f26]={'$like':'%'+_0x4a3d0d[_0xdbfe('0x4d')][_0xdbfe('0x56')]+'%'};return _0x10c4e7;})});}_0x53f9bc=_[_0xdbfe('0x58')]({},_0x53f9bc,_0x4a3d0d[_0xdbfe('0x59')]);return _0x18cc8c['getApplications'](_0x53f9bc);}})[_0xdbfe('0x3b')](function(_0x154539){if(_0x154539){_0x54b28c=_0x154539[_0xdbfe('0x5f')];if(!_0x4a3d0d[_0xdbfe('0x4d')][_0xdbfe('0x50')](_0xdbfe('0x51'))){_0x53f9bc[_0xdbfe('0x34')]=qs[_0xdbfe('0x34')](_0x4a3d0d[_0xdbfe('0x4d')][_0xdbfe('0x34')]);_0x53f9bc['offset']=qs[_0xdbfe('0x32')](_0x4a3d0d['query']['offset']);}return _0x18cc8c[_0xdbfe('0x89')](_0x53f9bc);}})[_0xdbfe('0x3b')](function(_0x3d7c89){if(_0x3d7c89){return _0x3d7c89?{'count':_0x54b28c,'rows':_0x3d7c89}:null;}})['then'](respondWithResult(_0x1b7a2c,null))[_0xdbfe('0x2e')](handleError(_0x1b7a2c,null));};exports[_0xdbfe('0x8a')]=function(_0x55017f,_0x56cf8e,_0x5b655f){var _0x49dc5a={'channel':_0xdbfe('0x8b')};var _0x103981=[];var _0xe9b2d0=[];var _0x5b3486={};return db['WhatsappAccount'][_0xdbfe('0x60')]({'where':{'id':_0x55017f[_0xdbfe('0x6a')]['id']},'include':[{'model':db[_0xdbfe('0x86')],'as':_0xdbfe('0x8c')}]})[_0xdbfe('0x3b')](handleEntityNotFound(_0x56cf8e,null))[_0xdbfe('0x3b')](function(_0x7b0b3b){_0x49dc5a[_0xdbfe('0x8d')]=_0x7b0b3b;if(_0x49dc5a[_0xdbfe('0x8d')]&&_0x49dc5a[_0xdbfe('0x8d')]['type']===_0xdbfe('0x8e')&&_0x55017f['body'][_0xdbfe('0x8f')]){if(_0x55017f[_0xdbfe('0x62')][_0xdbfe('0x8f')][_0xdbfe('0x5f')]===0x0)return;if(_0x55017f[_0xdbfe('0x62')][_0xdbfe('0x8f')][0x0][_0xdbfe('0x90')]!==_0xdbfe('0x91'))return;return db[_0xdbfe('0x92')][_0xdbfe('0x3a')]({'read':!![],'readAt':_0x55017f[_0xdbfe('0x62')][_0xdbfe('0x8f')][0x0][_0xdbfe('0x93')]},{'where':{'messageId':_0x55017f[_0xdbfe('0x62')][_0xdbfe('0x8f')][0x0][_0xdbfe('0x94')]},'individualHooks':!![]})[_0xdbfe('0x3b')](function(_0x5b590f){return _0x56cf8e['status'](0xc8)[_0xdbfe('0x31')](_0x5b590f);});}_0x49dc5a[_0xdbfe('0x95')]=_[_0xdbfe('0x96')](_0x7b0b3b[_0xdbfe('0x8c')],['priority'],[_0xdbfe('0x97')]);if(_0x49dc5a[_0xdbfe('0x8d')][_0xdbfe('0x8c')]){delete _0x49dc5a[_0xdbfe('0x8d')][_0xdbfe('0x8c')];}return db[_0xdbfe('0x98')][_0xdbfe('0x6b')]()['then'](function(_0x378196){if(!_0x378196){throw new db['Sequelize'][(_0xdbfe('0x99'))](_0xdbfe('0x9a'));}_0x103981=_['difference'](_['keys'](_0x378196),[_0xdbfe('0x9b'),_0xdbfe('0x9c')]);_0xe9b2d0=_[_0xdbfe('0x9d')](_[_0xdbfe('0x4b')](_0x378196),[_0xdbfe('0x9b'),_0xdbfe('0x9c'),'CompanyId',_0xdbfe('0x9e')]);_0x49dc5a[_0xdbfe('0x62')]={'mapKey':'mobile'};if(_0x49dc5a[_0xdbfe('0x8d')]&&_0x49dc5a[_0xdbfe('0x8d')]['type']===_0xdbfe('0x9f')){_0x49dc5a[_0xdbfe('0x62')][_0xdbfe('0xa0')]=_0x55017f[_0xdbfe('0x62')][_0xdbfe('0xa1')][_0xdbfe('0xa2')](_0xdbfe('0xa3'),'');_0x49dc5a[_0xdbfe('0x62')]['body']=_0x55017f[_0xdbfe('0x62')][_0xdbfe('0xa4')];_0x49dc5a['body']['messageId']=_0x55017f[_0xdbfe('0x62')]['MessageSid'];}if(_0x49dc5a[_0xdbfe('0x8d')]&&_0x49dc5a[_0xdbfe('0x8d')][_0xdbfe('0x57')]===_0xdbfe('0x8e')){_0x49dc5a[_0xdbfe('0x62')][_0xdbfe('0xa0')]=_0x55017f[_0xdbfe('0x62')][_0xdbfe('0xa5')][0x0]['from'];_0x49dc5a[_0xdbfe('0x62')][_0xdbfe('0x62')]=_0x55017f[_0xdbfe('0x62')]['notifications'][0x0][_0xdbfe('0x2c')][_0xdbfe('0x62')];_0x49dc5a[_0xdbfe('0x62')][_0xdbfe('0xa6')]=_0x55017f[_0xdbfe('0x62')][_0xdbfe('0xa5')][0x0]['message_id'];}if(_0x49dc5a[_0xdbfe('0x62')]['id']){delete _0x49dc5a['body']['id'];}if(_['isNil'](_0x49dc5a[_0xdbfe('0x62')][_0xdbfe('0xa0')])){throw new db[(_0xdbfe('0xa7'))][(_0xdbfe('0x99'))](_0xdbfe('0xa8'));}if(_[_0xdbfe('0xa9')](_0x49dc5a[_0xdbfe('0x62')][_0xdbfe('0x62')])||_0x49dc5a[_0xdbfe('0x62')][_0xdbfe('0x62')]===''){throw new db[(_0xdbfe('0xa7'))][(_0xdbfe('0x99'))](_0xdbfe('0xaa'));}if(_[_0xdbfe('0xa9')](_0x49dc5a[_0xdbfe('0x62')][_0xdbfe('0xab')])){throw new db[(_0xdbfe('0xa7'))]['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0xe9b2d0);}if(!_[_0xdbfe('0xac')](_0xe9b2d0,_0x49dc5a[_0xdbfe('0x62')][_0xdbfe('0xab')])){throw new db[(_0xdbfe('0xa7'))][(_0xdbfe('0x99'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0xe9b2d0);}_0x5b3486[_0x49dc5a['body'][_0xdbfe('0xab')]]=_0x49dc5a[_0xdbfe('0x62')][_0xdbfe('0xa0')];return db[_0xdbfe('0xad')][_0xdbfe('0x60')]({'where':{'id':_0x49dc5a[_0xdbfe('0x8d')][_0xdbfe('0x9e')]},'include':[{'model':db[_0xdbfe('0x98')],'as':'Contacts','where':_0x5b3486,'limit':0x1,'order':[[_0xdbfe('0x9c'),_0xdbfe('0xae')]]}]});})[_0xdbfe('0x3b')](handleEntityNotFound(_0x56cf8e,null))[_0xdbfe('0x3b')](function(_0xc51054){if(_0xc51054){_0x49dc5a[_0xdbfe('0xaf')]=_[_0xdbfe('0x7a')](_0xc51054,[_0xdbfe('0xb0')]);if(_0xc51054[_0xdbfe('0xb0')][_0xdbfe('0x5f')]){return _0xc51054['Contacts'][0x0];}var _0x57301d=_[_0xdbfe('0x1c')](_0x49dc5a[_0xdbfe('0x62')],{'firstName':_0x49dc5a[_0xdbfe('0x62')][_0xdbfe('0xa0')],'ListId':_0xc51054['id']});_0x57301d[_0x49dc5a[_0xdbfe('0x62')][_0xdbfe('0xab')]]=_0x49dc5a[_0xdbfe('0x62')][_0xdbfe('0xa0')];return db[_0xdbfe('0x98')][_0xdbfe('0x61')](_0x57301d,{'fields':_0x103981,'raw':!![]});}})[_0xdbfe('0x3b')](handleEntityNotFound(_0x56cf8e,null))[_0xdbfe('0x3b')](function(_0x5d8fbb){if(_0x5d8fbb){_0x49dc5a[_0xdbfe('0xb1')]=_0x5d8fbb;var _0x5dc00a={'ContactId':_0x5d8fbb['id'],'phone':_0x49dc5a[_0xdbfe('0x62')][_0xdbfe('0xa0')],'WhatsappAccountId':_0x55017f['params']['id']};var _0x2baf50={'ContactId':_0x5d8fbb['id'],'WhatsappAccountId':_0x55017f[_0xdbfe('0x6a')]['id'],'closed':![]};return db[_0xdbfe('0xb2')][_0xdbfe('0x60')]({'where':_0x2baf50})[_0xdbfe('0x3b')](function(_0x348281){if(_0x348281){return[_0x348281,![]];}return db[_0xdbfe('0xb2')]['create'](_0x5dc00a)['then'](function(_0x224d23){return[_0x224d23,!![]];});});}})[_0xdbfe('0x7b')](function(_0x1786e7,_0xc412d7){_0x49dc5a[_0xdbfe('0xb3')]=_0x1786e7[_0xdbfe('0x64')]({'plain':!![]});_0x49dc5a[_0xdbfe('0xb3')][_0xdbfe('0xb4')]=![];if(_0xc412d7){if(_0x49dc5a[_0xdbfe('0x8d')]['autoclose']){_0x49dc5a[_0xdbfe('0x95')][_0xdbfe('0xb5')]({'id':0x0,'priority':_0x49dc5a[_0xdbfe('0x95')][_0xdbfe('0x5f')]+0x1,'app':_0xdbfe('0xb6'),'appdata':'unmanaged','interval':_0xdbfe('0xb7')});}_0x49dc5a[_0xdbfe('0xb3')][_0xdbfe('0xb4')]=!![];}return db['WhatsappMessage'][_0xdbfe('0x61')]({'phone':_0x49dc5a['body'][_0xdbfe('0xa0')],'messageId':_0x49dc5a['body'][_0xdbfe('0xa6')],'body':_0x49dc5a[_0xdbfe('0x62')][_0xdbfe('0x62')],'WhatsappAccountId':_0x55017f[_0xdbfe('0x6a')]['id'],'WhatsappInteractionId':_0x1786e7['id'],'direction':'in','ContactId':_0x1786e7[_0xdbfe('0xb8')],'AttachmentId':_0x49dc5a[_0xdbfe('0x62')][_0xdbfe('0xb9')]});})[_0xdbfe('0x3b')](function(_0x14e7ad){_0x49dc5a['message']=_0x14e7ad;if(_0x49dc5a[_0xdbfe('0xb3')][_0xdbfe('0xba')]){return db[_0xdbfe('0x81')][_0xdbfe('0x60')]({'attributes':['id',_0xdbfe('0x41')],'where':{'id':_0x49dc5a['interaction'][_0xdbfe('0xba')]}})[_0xdbfe('0x3b')](function(_0x5212cb){if(_0x5212cb){_0x49dc5a['applications'][_0xdbfe('0xbb')]({'id':0x0,'priority':0x0,'app':_0xdbfe('0xbc'),'appdata':_0x5212cb[_0xdbfe('0x41')]+','+(_0x49dc5a[_0xdbfe('0x8d')][_0xdbfe('0xbd')]||0xa),'interval':_0xdbfe('0xb7')});}return respondWithRpcPromise(_0xdbfe('0xbe'),_0xdbfe('0xbf'),_0x49dc5a);});}return respondWithRpcPromise('Start','startRouting',_0x49dc5a);})[_0xdbfe('0x3b')](function(_0x4f8abe){if(_0x4f8abe){var _0xdaea74=0xc8;var _0x16e7fe='receiveMessage';logger[_0xdbfe('0x24')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x16e7fe,_0xdaea74,_0xdbfe('0xc0'));logger[_0xdbfe('0x25')](_0xdbfe('0xc1'),_0x16e7fe,_0xdaea74,_0xdbfe('0xc0'),JSON[_0xdbfe('0x28')](_0x4f8abe));if(_0x49dc5a['account'][_0xdbfe('0x57')]==='twilio'){return _0x56cf8e['status'](_0xdaea74)[_0xdbfe('0x36')]('Content-Type','text/xml')['send']('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x56cf8e[_0xdbfe('0x2f')](_0xdaea74)[_0xdbfe('0x31')](_0x4f8abe);}}});})[_0xdbfe('0x2e')](handleError(_0x56cf8e,null));};exports[_0xdbfe('0x42')]=function(_0x4c3796,_0x10cf1d,_0x297c26){var _0x292ce1,_0x2c7086,_0xe8a0d5;if(_[_0xdbfe('0xa9')](_0x4c3796['body'][_0xdbfe('0x62')])||_0x4c3796[_0xdbfe('0x62')][_0xdbfe('0x62')]===''){throw new db[(_0xdbfe('0xa7'))][(_0xdbfe('0x99'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x4c3796[_0xdbfe('0x62')]['to'])){throw new db[(_0xdbfe('0xa7'))][(_0xdbfe('0x99'))](_0xdbfe('0xc2'));}_0x292ce1=_0x4c3796[_0xdbfe('0x62')]['to'];return db[_0xdbfe('0x46')][_0xdbfe('0x60')]({'where':{'id':_0x4c3796['params']['id']},'include':[{'model':db[_0xdbfe('0xad')],'as':'List','include':[{'model':db[_0xdbfe('0x98')],'as':_0xdbfe('0xb0'),'where':{'mobile':_0x292ce1},'limit':0x1,'order':[['updatedAt',_0xdbfe('0xae')]]}]}]})[_0xdbfe('0x3b')](handleEntityNotFound(_0x10cf1d,null))[_0xdbfe('0x3b')](function(_0x543423){if(_0x543423&&_0x543423[_0xdbfe('0xc3')]){_0x2c7086=_0x543423['get']({'plain':!![]});if(_0x2c7086[_0xdbfe('0xc3')]&&_0x2c7086['List'][_0xdbfe('0xb0')][_0xdbfe('0x5f')]){return _0x2c7086[_0xdbfe('0xc3')][_0xdbfe('0xb0')][0x0];}return db[_0xdbfe('0x98')][_0xdbfe('0x61')](_[_0xdbfe('0x1c')](_0x4c3796[_0xdbfe('0x62')],{'firstName':_0x292ce1,'mobile':_0x292ce1,'phone':_0x292ce1,'ListId':_0x2c7086['ListId']}));}})[_0xdbfe('0x3b')](handleEntityNotFound(_0x10cf1d,null))['then'](function(_0x4716b2){if(_0x4716b2){_0xe8a0d5=_0x4716b2;return db[_0xdbfe('0xb2')][_0xdbfe('0x60')]({'where':{'ContactId':_0xe8a0d5['id'],'closed':![],'WhatsappAccountId':_0x2c7086['id']}})[_0xdbfe('0x3b')](function(_0x279dfe){if(_0x279dfe){return[_0x279dfe,![]];}return db[_0xdbfe('0xb2')][_0xdbfe('0x61')]({'UserId':_0x4c3796[_0xdbfe('0x63')]['id'],'ContactId':_0xe8a0d5['id'],'WhatsappAccountId':_0x2c7086['id'],'phone':_0x292ce1,'firstMsgDirection':_0xdbfe('0xc4'),'Messages':[_['merge'](_0x4c3796[_0xdbfe('0x62')],{'read':![],'body':_0x4c3796[_0xdbfe('0x62')]['body'],'phone':_0x292ce1,'WhatsappAccountId':_0x2c7086['id'],'UserId':_0x4c3796[_0xdbfe('0x63')]['id'],'ContactId':_0xe8a0d5['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0xdbfe('0xc5')}]})['then'](function(_0x300cf6){return[_0x300cf6,!![]];});});}})[_0xdbfe('0x7b')](function(_0x365d3a,_0x54bd55){if(_0x54bd55){return _0x365d3a;}return db['WhatsappMessage']['create'](_['merge'](_0x4c3796[_0xdbfe('0x62')],{'read':![],'body':_0x4c3796[_0xdbfe('0x62')]['body'],'phone':_0x292ce1,'WhatsappAccountId':_0x2c7086['id'],'WhatsappInteractionId':_0x365d3a['id'],'UserId':_0x4c3796[_0xdbfe('0x63')]['id'],'ContactId':_0xe8a0d5['id']}))[_0xdbfe('0x3b')](function(_0x45d11d){_0x365d3a['dataValues'][_0xdbfe('0xc5')]=[];_0x365d3a[_0xdbfe('0xc6')]['Messages'][_0xdbfe('0xb5')](_0x45d11d[_0xdbfe('0xc6')]);return _0x365d3a;});})[_0xdbfe('0x3b')](respondWithResult(_0x10cf1d,null))[_0xdbfe('0x2e')](handleError(_0x10cf1d,null));};
\ No newline at end of file
+var _0x14f7=['include','rows','mandatoryDispositionPause','keys','rawAttributes','length','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','WhatsappAccountId','Disposition','getDispositions','filter','findAll','removeDispositions','ids','addAnswer','getAnswers','findOne','CannedAnswer','nolimit','order','removeAnswers','addAgents','userWhatsappAccount:save','removeAgents','isArray','emit','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','transaction','WhatsappApplication','bulkCreate','getApplications','notify','whatsapp','Applications','account','sinch','statuses','state','read','timestamp','message_id','applications','orderBy','priority','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','ListId','mobile','twilio','from','From','Body','MessageSid','notifications','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','list','omit','Contacts','contact','WhatsappInteraction','spread','interaction','created','autoclose','push','close','*,*,*,*','WhatsappMessage','messageId','ContactId','AttachmentId','UserId','unshift','agent','Start','startRouting','receiveMessage','entity\x20found','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','CmList','List','DESC','Messages','dataValues','zip-dir','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','register','jayson/promise','client','http','request','then','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','get','WhatsappAccounts','end','stack','name','send','index','Pause','map','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','merge','VIRTUAL','options','WhatsappAccount'];(function(_0x53ac11,_0x14e63f){var _0x38d84a=function(_0x3d104d){while(--_0x3d104d){_0x53ac11['push'](_0x53ac11['shift']());}};_0x38d84a(++_0x14e63f);}(_0x14f7,0x12b));var _0x714f=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0x14f7[_0x40ac5e];return _0x2839d6;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x714f('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x714f('0x1'));var BPromise=require('bluebird');var Mustache=require(_0x714f('0x2'));var util=require(_0x714f('0x3'));var path=require(_0x714f('0x4'));var sox=require('sox');var csv=require(_0x714f('0x5'));var ejs=require(_0x714f('0x6'));var fs=require('fs');var fs_extra=require(_0x714f('0x7'));var _=require(_0x714f('0x8'));var squel=require('squel');var crypto=require(_0x714f('0x9'));var jsforce=require(_0x714f('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x714f('0x5'));var querystring=require(_0x714f('0xb'));var Papa=require('papaparse');var Redis=require(_0x714f('0xc'));var authService=require(_0x714f('0xd'));var qs=require(_0x714f('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x714f('0xf'));var logger=require(_0x714f('0x10'))('api');var utils=require(_0x714f('0x11'));var config=require(_0x714f('0x12'));var licenseUtil=require(_0x714f('0x13'));var db=require('../../mysqldb')['db'];config[_0x714f('0x14')]=_[_0x714f('0x15')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x714f('0x14')]));require('./whatsappAccount.socket')[_0x714f('0x16')](socket);var jayson=require(_0x714f('0x17'));var client=jayson[_0x714f('0x18')][_0x714f('0x19')]({'port':0x232c});function respondWithRpcPromise(_0x522749,_0x2f6058,_0x26686d,_0x3040f0){return new BPromise(function(_0x24dae0,_0xa967eb){var _0x5b40d6=_0x3040f0||client;return _0x5b40d6[_0x714f('0x1a')](_0x522749,_0x26686d)[_0x714f('0x1b')](function(_0x2a42c4){logger['info'](_0x714f('0x1c'),_0x2f6058,_0x714f('0x1d'));logger[_0x714f('0x1e')](_0x714f('0x1f'),_0x2f6058,_0x714f('0x1d'),JSON[_0x714f('0x20')](_0x2a42c4));if(_0x2a42c4[_0x714f('0x21')]){if(_0x2a42c4[_0x714f('0x21')][_0x714f('0x22')]===0x1f4){logger['error'](_0x714f('0x1c'),_0x2f6058,_0x2a42c4[_0x714f('0x21')][_0x714f('0x23')]);return _0xa967eb(_0x2a42c4[_0x714f('0x21')][_0x714f('0x23')]);}logger[_0x714f('0x21')](_0x714f('0x1c'),_0x2f6058,_0x2a42c4[_0x714f('0x21')][_0x714f('0x23')]);return _0x24dae0(_0x2a42c4['error'][_0x714f('0x23')]);}else{logger[_0x714f('0x24')](_0x714f('0x1c'),_0x2f6058,_0x714f('0x1d'));_0x24dae0(_0x2a42c4['result'][_0x714f('0x23')]);}})[_0x714f('0x25')](function(_0x351f19){logger[_0x714f('0x21')](_0x714f('0x1c'),_0x2f6058,_0x351f19);_0xa967eb(_0x351f19);});});}function respondWithStatusCode(_0x6bf439,_0x46036c){_0x46036c=_0x46036c||0xcc;return function(_0x5d3237){if(_0x5d3237){return _0x6bf439[_0x714f('0x26')](_0x46036c);}return _0x6bf439[_0x714f('0x27')](_0x46036c)['end']();};}function respondWithResult(_0x407125,_0x312507){_0x312507=_0x312507||0xc8;return function(_0x5248f0){if(_0x5248f0){return _0x407125[_0x714f('0x27')](_0x312507)[_0x714f('0x28')](_0x5248f0);}};}function respondWithFilteredResult(_0x29ec13,_0xc94932){return function(_0x57a7a2){if(_0x57a7a2){var _0x346d49=typeof _0xc94932[_0x714f('0x29')]===_0x714f('0x2a')&&typeof _0xc94932[_0x714f('0x2b')]==='undefined';var _0x5bd74c=_0x57a7a2[_0x714f('0x2c')];var _0x125e3f=_0x346d49?0x0:_0xc94932[_0x714f('0x29')];var _0x4b582b=_0x346d49?_0x57a7a2['count']:_0xc94932[_0x714f('0x29')]+_0xc94932[_0x714f('0x2b')];var _0x437895;if(_0x4b582b>=_0x5bd74c){_0x4b582b=_0x5bd74c;_0x437895=0xc8;}else{_0x437895=0xce;}_0x29ec13[_0x714f('0x27')](_0x437895);return _0x29ec13[_0x714f('0x2d')](_0x714f('0x2e'),_0x125e3f+'-'+_0x4b582b+'/'+_0x5bd74c)['json'](_0x57a7a2);}return null;};}function patchUpdates(_0x382c70){return function(_0xa75bc9){try{jsonpatch[_0x714f('0x2f')](_0xa75bc9,_0x382c70,!![]);}catch(_0x4ceba0){return BPromise['reject'](_0x4ceba0);}return _0xa75bc9[_0x714f('0x30')]();};}function saveUpdates(_0x445c9d,_0x22700a){return function(_0x28ec7f){if(_0x28ec7f){return _0x28ec7f[_0x714f('0x31')](_0x445c9d)[_0x714f('0x1b')](function(_0x514887){return _0x514887;});}return null;};}function removeEntity(_0x2ebbf2,_0x2763e1){return function(_0x25a634){if(_0x25a634){return _0x25a634[_0x714f('0x32')]()['then'](function(){var _0x2df684=_0x25a634[_0x714f('0x33')]({'plain':!![]});var _0xbbe3f6=_0x714f('0x34');return db['UserProfileResource'][_0x714f('0x32')]({'where':{'type':_0xbbe3f6,'resourceId':_0x2df684['id']}})[_0x714f('0x1b')](function(){return _0x25a634;});})['then'](function(){_0x2ebbf2[_0x714f('0x27')](0xcc)[_0x714f('0x35')]();});}};}function handleEntityNotFound(_0xc9cba0,_0x58ec81){return function(_0xb16956){if(!_0xb16956){_0xc9cba0[_0x714f('0x26')](0x194);}return _0xb16956;};}function handleError(_0x42e0ec,_0x1a54bb){_0x1a54bb=_0x1a54bb||0x1f4;return function(_0x2c6a84){logger['error'](_0x2c6a84[_0x714f('0x36')]);if(_0x2c6a84[_0x714f('0x37')]){delete _0x2c6a84[_0x714f('0x37')];}_0x42e0ec['status'](_0x1a54bb)[_0x714f('0x38')](_0x2c6a84);};}exports[_0x714f('0x39')]=function(_0xd1a0e1,_0x5d570c){var _0x1e6da6={'include':[{'model':db[_0x714f('0x3a')],'as':'mandatoryDispositionPause'}]},_0x4b5569={},_0xaf2415={'count':0x0,'rows':[]};var _0x780d58=_[_0x714f('0x3b')](db['WhatsappAccount']['rawAttributes'],function(_0x4567ea){return{'name':_0x4567ea[_0x714f('0x3c')],'type':_0x4567ea[_0x714f('0x3d')][_0x714f('0x3e')]};});_0x4b5569[_0x714f('0x3f')]=_[_0x714f('0x3b')](_0x780d58,_0x714f('0x37'));_0x4b5569[_0x714f('0x40')]=_['keys'](_0xd1a0e1[_0x714f('0x40')]);_0x4b5569[_0x714f('0x41')]=_[_0x714f('0x42')](_0x4b5569[_0x714f('0x3f')],_0x4b5569[_0x714f('0x40')]);_0x1e6da6[_0x714f('0x43')]=_[_0x714f('0x42')](_0x4b5569[_0x714f('0x3f')],qs[_0x714f('0x44')](_0xd1a0e1['query']['fields']));_0x1e6da6[_0x714f('0x43')]=_0x1e6da6['attributes']['length']?_0x1e6da6['attributes']:_0x4b5569['model'];if(!_0xd1a0e1[_0x714f('0x40')][_0x714f('0x45')]('nolimit')){_0x1e6da6['limit']=qs['limit'](_0xd1a0e1[_0x714f('0x40')][_0x714f('0x2b')]);_0x1e6da6['offset']=qs[_0x714f('0x29')](_0xd1a0e1[_0x714f('0x40')]['offset']);}_0x1e6da6['order']=qs[_0x714f('0x46')](_0xd1a0e1[_0x714f('0x40')][_0x714f('0x46')]);_0x1e6da6[_0x714f('0x47')]=qs[_0x714f('0x41')](_[_0x714f('0x48')](_0xd1a0e1[_0x714f('0x40')],_0x4b5569[_0x714f('0x41')]),_0x780d58);if(_0xd1a0e1['query']['filter']){_0x1e6da6['where']=_[_0x714f('0x49')](_0x1e6da6[_0x714f('0x47')],{'$or':_['map'](_0x780d58,function(_0x29ba28){if(_0x29ba28[_0x714f('0x3d')]!==_0x714f('0x4a')){var _0x252688={};_0x252688[_0x29ba28[_0x714f('0x37')]]={'$like':'%'+_0xd1a0e1[_0x714f('0x40')]['filter']+'%'};return _0x252688;}})});}_0x1e6da6=_[_0x714f('0x49')]({},_0x1e6da6,_0xd1a0e1[_0x714f('0x4b')]);var _0x474aa4={'where':_0x1e6da6[_0x714f('0x47')]};return db[_0x714f('0x4c')]['count'](_0x474aa4)[_0x714f('0x1b')](function(_0xe218eb){_0xaf2415[_0x714f('0x2c')]=_0xe218eb;if(_0xd1a0e1[_0x714f('0x40')]['includeAll']){_0x1e6da6[_0x714f('0x4d')]=[{'all':!![]}];}return db[_0x714f('0x4c')]['findAll'](_0x1e6da6);})[_0x714f('0x1b')](function(_0x3c034d){_0xaf2415[_0x714f('0x4e')]=_0x3c034d;return _0xaf2415;})[_0x714f('0x1b')](respondWithFilteredResult(_0x5d570c,_0x1e6da6))[_0x714f('0x25')](handleError(_0x5d570c,null));};exports['show']=function(_0xd6980c,_0x431768){var _0x89bb48={'raw':![],'where':{'id':_0xd6980c['params']['id']},'include':[{'model':db[_0x714f('0x3a')],'as':_0x714f('0x4f')}]},_0x9285f6={};_0x9285f6[_0x714f('0x3f')]=_[_0x714f('0x50')](db['WhatsappAccount'][_0x714f('0x51')]);_0x9285f6[_0x714f('0x40')]=_[_0x714f('0x50')](_0xd6980c[_0x714f('0x40')]);_0x9285f6['filters']=_[_0x714f('0x42')](_0x9285f6['model'],_0x9285f6[_0x714f('0x40')]);_0x89bb48[_0x714f('0x43')]=_['intersection'](_0x9285f6[_0x714f('0x3f')],qs[_0x714f('0x44')](_0xd6980c[_0x714f('0x40')][_0x714f('0x44')]));_0x89bb48[_0x714f('0x43')]=_0x89bb48[_0x714f('0x43')][_0x714f('0x52')]?_0x89bb48[_0x714f('0x43')]:_0x9285f6['model'];if(_0xd6980c[_0x714f('0x40')][_0x714f('0x53')]){_0x89bb48[_0x714f('0x4d')]=[{'all':!![]}];}_0x89bb48=_[_0x714f('0x49')]({},_0x89bb48,_0xd6980c[_0x714f('0x4b')]);return db[_0x714f('0x4c')][_0x714f('0x54')](_0x89bb48)[_0x714f('0x1b')](handleEntityNotFound(_0x431768,null))[_0x714f('0x1b')](respondWithResult(_0x431768,null))[_0x714f('0x25')](handleError(_0x431768,null));};exports[_0x714f('0x55')]=function(_0x40f0b8,_0x3163fb){return db['WhatsappAccount'][_0x714f('0x55')](_0x40f0b8['body'],{})[_0x714f('0x1b')](function(_0x45dc05){var _0x343795=_0x40f0b8[_0x714f('0x56')][_0x714f('0x33')]({'plain':!![]});if(!_0x343795)throw new Error(_0x714f('0x57'));if(_0x343795[_0x714f('0x58')]===_0x714f('0x56')){var _0x27ce73=_0x45dc05[_0x714f('0x33')]({'plain':!![]});var _0x2f56b0=_0x714f('0x34');return db[_0x714f('0x59')][_0x714f('0x54')]({'where':{'name':_0x2f56b0,'userProfileId':_0x343795[_0x714f('0x5a')]},'raw':!![]})[_0x714f('0x1b')](function(_0x3fae4d){if(_0x3fae4d&&_0x3fae4d['autoAssociation']===0x0){return db[_0x714f('0x5b')][_0x714f('0x55')]({'name':_0x27ce73[_0x714f('0x37')],'resourceId':_0x27ce73['id'],'type':_0x3fae4d[_0x714f('0x37')],'sectionId':_0x3fae4d['id']},{})[_0x714f('0x1b')](function(){return _0x45dc05;});}else{return _0x45dc05;}})[_0x714f('0x25')](function(_0x5827bd){logger[_0x714f('0x21')](_0x714f('0x5c'),_0x5827bd);throw _0x5827bd;});}return _0x45dc05;})[_0x714f('0x1b')](respondWithResult(_0x3163fb,0xc9))[_0x714f('0x25')](handleError(_0x3163fb,null));};exports[_0x714f('0x31')]=function(_0x1f5059,_0x3f024a){if(_0x1f5059[_0x714f('0x5d')]['id']){delete _0x1f5059['body']['id'];}return db[_0x714f('0x4c')][_0x714f('0x54')]({'where':{'id':_0x1f5059['params']['id']},'include':[{'model':db[_0x714f('0x3a')],'as':_0x714f('0x4f')}]})[_0x714f('0x1b')](handleEntityNotFound(_0x3f024a,null))[_0x714f('0x1b')](saveUpdates(_0x1f5059['body'],null))[_0x714f('0x1b')](respondWithResult(_0x3f024a,null))[_0x714f('0x25')](handleError(_0x3f024a,null));};exports[_0x714f('0x32')]=function(_0x30deae,_0x51641e){return db[_0x714f('0x4c')][_0x714f('0x54')]({'where':{'id':_0x30deae[_0x714f('0x5e')]['id']}})[_0x714f('0x1b')](handleEntityNotFound(_0x51641e,null))['then'](removeEntity(_0x51641e,null))[_0x714f('0x25')](handleError(_0x51641e,null));};exports[_0x714f('0x5f')]=function(_0x4bc119,_0x49f87c){return db[_0x714f('0x4c')][_0x714f('0x5f')]()[_0x714f('0x1b')](respondWithResult(_0x49f87c,null))[_0x714f('0x25')](handleError(_0x49f87c,null));};exports['addDisposition']=function(_0x3589f4,_0x5b7002,_0x39e5d4){if(_0x3589f4[_0x714f('0x5d')]['id']){delete _0x3589f4['body']['id'];}return db[_0x714f('0x4c')]['find']({'where':{'id':_0x3589f4['params']['id']}})['then'](handleEntityNotFound(_0x5b7002,null))[_0x714f('0x1b')](function(_0x3377fd){if(_0x3377fd){_0x3589f4[_0x714f('0x5d')][_0x714f('0x60')]=_0x3377fd['id'];return db[_0x714f('0x61')][_0x714f('0x55')](_0x3589f4['body']);}})['then'](respondWithResult(_0x5b7002,null))[_0x714f('0x25')](handleError(_0x5b7002,null));};exports[_0x714f('0x62')]=function(_0x44bdf4,_0x4d88cc,_0x1c0f7d){var _0x5069d2={'raw':![],'where':{}};var _0x22295f={};var _0x4ac9a3={'count':0x0,'rows':[]};return db[_0x714f('0x4c')]['findOne']({'where':{'id':_0x44bdf4[_0x714f('0x5e')]['id']}})['then'](handleEntityNotFound(_0x4d88cc,null))['then'](function(_0x3b5f83){if(_0x3b5f83){_0x22295f[_0x714f('0x3f')]=_[_0x714f('0x50')](db[_0x714f('0x61')][_0x714f('0x51')]);_0x22295f['query']=_[_0x714f('0x50')](_0x44bdf4[_0x714f('0x40')]);_0x22295f[_0x714f('0x41')]=_[_0x714f('0x42')](_0x22295f['model'],_0x22295f[_0x714f('0x40')]);_0x5069d2[_0x714f('0x43')]=_[_0x714f('0x42')](_0x22295f[_0x714f('0x3f')],qs[_0x714f('0x44')](_0x44bdf4[_0x714f('0x40')][_0x714f('0x44')]));_0x5069d2[_0x714f('0x43')]=_0x5069d2[_0x714f('0x43')][_0x714f('0x52')]?_0x5069d2['attributes']:_0x22295f[_0x714f('0x3f')];if(!_0x44bdf4[_0x714f('0x40')]['hasOwnProperty']('nolimit')){_0x5069d2[_0x714f('0x2b')]=qs[_0x714f('0x2b')](_0x44bdf4[_0x714f('0x40')][_0x714f('0x2b')]);_0x5069d2[_0x714f('0x29')]=qs[_0x714f('0x29')](_0x44bdf4[_0x714f('0x40')][_0x714f('0x29')]);}_0x5069d2['order']=qs[_0x714f('0x46')](_0x44bdf4[_0x714f('0x40')][_0x714f('0x46')]);_0x5069d2['where']=qs[_0x714f('0x41')](_[_0x714f('0x48')](_0x44bdf4[_0x714f('0x40')],_0x22295f[_0x714f('0x41')]));_0x5069d2[_0x714f('0x47')]['WhatsappAccountId']=_0x3b5f83['id'];if(_0x44bdf4[_0x714f('0x40')][_0x714f('0x63')]){_0x5069d2[_0x714f('0x47')]=_[_0x714f('0x49')](_0x5069d2['where'],{'$or':_[_0x714f('0x3b')](_0x5069d2['attributes'],function(_0x477d60){var _0x285af1={};_0x285af1[_0x477d60]={'$like':'%'+_0x44bdf4[_0x714f('0x40')][_0x714f('0x63')]+'%'};return _0x285af1;})});}_0x5069d2=_[_0x714f('0x49')]({},_0x5069d2,_0x44bdf4[_0x714f('0x4b')]);return db['Disposition'][_0x714f('0x2c')]({'where':_0x5069d2[_0x714f('0x47')]})[_0x714f('0x1b')](function(_0x2411af){_0x4ac9a3['count']=_0x2411af;if(_0x44bdf4[_0x714f('0x40')][_0x714f('0x53')]){_0x5069d2[_0x714f('0x4d')]=[{'all':!![]}];}return db[_0x714f('0x61')][_0x714f('0x64')](_0x5069d2);})['then'](function(_0x528b55){_0x4ac9a3['rows']=_0x528b55;return _0x4ac9a3;});}})[_0x714f('0x1b')](respondWithFilteredResult(_0x4d88cc,_0x5069d2))[_0x714f('0x25')](handleError(_0x4d88cc,null));};exports[_0x714f('0x65')]=function(_0x2c03c4,_0x29feab,_0xb43d8){return db[_0x714f('0x4c')][_0x714f('0x54')]({'where':{'id':_0x2c03c4[_0x714f('0x5e')]['id']}})[_0x714f('0x1b')](handleEntityNotFound(_0x29feab,null))[_0x714f('0x1b')](function(_0xda33dd){if(_0xda33dd){return _0xda33dd['removeDispositions'](_0x2c03c4[_0x714f('0x40')][_0x714f('0x66')]);}})['then'](respondWithStatusCode(_0x29feab,null))[_0x714f('0x25')](handleError(_0x29feab,null));};exports[_0x714f('0x67')]=function(_0x465d7c,_0x13409c,_0x11f28f){if(_0x465d7c[_0x714f('0x5d')]['id']){delete _0x465d7c[_0x714f('0x5d')]['id'];}return db[_0x714f('0x4c')][_0x714f('0x54')]({'where':{'id':_0x465d7c[_0x714f('0x5e')]['id']}})[_0x714f('0x1b')](handleEntityNotFound(_0x13409c,null))[_0x714f('0x1b')](function(_0x54124e){if(_0x54124e){_0x465d7c['body'][_0x714f('0x60')]=_0x54124e['id'];return db['CannedAnswer']['create'](_0x465d7c[_0x714f('0x5d')]);}})[_0x714f('0x1b')](respondWithResult(_0x13409c,null))[_0x714f('0x25')](handleError(_0x13409c,null));};exports[_0x714f('0x68')]=function(_0x581b10,_0x4be71d,_0x2f026d){var _0x5ed5f6={'raw':![],'where':{}};var _0x371722={};var _0x57184c={'count':0x0,'rows':[]};return db[_0x714f('0x4c')][_0x714f('0x69')]({'where':{'id':_0x581b10[_0x714f('0x5e')]['id']}})[_0x714f('0x1b')](handleEntityNotFound(_0x4be71d,null))[_0x714f('0x1b')](function(_0x3e753a){if(_0x3e753a){_0x371722[_0x714f('0x3f')]=_['keys'](db[_0x714f('0x6a')][_0x714f('0x51')]);_0x371722[_0x714f('0x40')]=_['keys'](_0x581b10[_0x714f('0x40')]);_0x371722['filters']=_[_0x714f('0x42')](_0x371722[_0x714f('0x3f')],_0x371722[_0x714f('0x40')]);_0x5ed5f6[_0x714f('0x43')]=_[_0x714f('0x42')](_0x371722[_0x714f('0x3f')],qs[_0x714f('0x44')](_0x581b10['query'][_0x714f('0x44')]));_0x5ed5f6[_0x714f('0x43')]=_0x5ed5f6[_0x714f('0x43')][_0x714f('0x52')]?_0x5ed5f6[_0x714f('0x43')]:_0x371722[_0x714f('0x3f')];if(!_0x581b10['query']['hasOwnProperty'](_0x714f('0x6b'))){_0x5ed5f6[_0x714f('0x2b')]=qs[_0x714f('0x2b')](_0x581b10[_0x714f('0x40')][_0x714f('0x2b')]);_0x5ed5f6[_0x714f('0x29')]=qs[_0x714f('0x29')](_0x581b10[_0x714f('0x40')]['offset']);}_0x5ed5f6[_0x714f('0x6c')]=qs[_0x714f('0x46')](_0x581b10['query'][_0x714f('0x46')]);_0x5ed5f6[_0x714f('0x47')]=qs['filters'](_[_0x714f('0x48')](_0x581b10[_0x714f('0x40')],_0x371722[_0x714f('0x41')]));_0x5ed5f6[_0x714f('0x47')][_0x714f('0x60')]=_0x3e753a['id'];if(_0x581b10[_0x714f('0x40')][_0x714f('0x63')]){_0x5ed5f6[_0x714f('0x47')]=_[_0x714f('0x49')](_0x5ed5f6[_0x714f('0x47')],{'$or':_[_0x714f('0x3b')](_0x5ed5f6['attributes'],function(_0x1995fe){var _0x5cbd9f={};_0x5cbd9f[_0x1995fe]={'$like':'%'+_0x581b10[_0x714f('0x40')]['filter']+'%'};return _0x5cbd9f;})});}_0x5ed5f6=_[_0x714f('0x49')]({},_0x5ed5f6,_0x581b10[_0x714f('0x4b')]);return db[_0x714f('0x6a')][_0x714f('0x2c')]({'where':_0x5ed5f6[_0x714f('0x47')]})[_0x714f('0x1b')](function(_0x511557){_0x57184c[_0x714f('0x2c')]=_0x511557;if(_0x581b10[_0x714f('0x40')][_0x714f('0x53')]){_0x5ed5f6[_0x714f('0x4d')]=[{'all':!![]}];}return db[_0x714f('0x6a')]['findAll'](_0x5ed5f6);})[_0x714f('0x1b')](function(_0x5a06cf){_0x57184c[_0x714f('0x4e')]=_0x5a06cf;return _0x57184c;});}})[_0x714f('0x1b')](respondWithFilteredResult(_0x4be71d,_0x5ed5f6))[_0x714f('0x25')](handleError(_0x4be71d,null));};exports[_0x714f('0x6d')]=function(_0x410ca7,_0x16bcd8,_0x5eca76){return db[_0x714f('0x4c')][_0x714f('0x54')]({'where':{'id':_0x410ca7[_0x714f('0x5e')]['id']}})[_0x714f('0x1b')](handleEntityNotFound(_0x16bcd8,null))[_0x714f('0x1b')](function(_0x1d8708){if(_0x1d8708){return _0x1d8708[_0x714f('0x6d')](_0x410ca7[_0x714f('0x40')][_0x714f('0x66')]);}})[_0x714f('0x1b')](respondWithStatusCode(_0x16bcd8,null))[_0x714f('0x25')](handleError(_0x16bcd8,null));};exports[_0x714f('0x6e')]=function(_0x19dcd5,_0x4d000b,_0x5953a8){return db[_0x714f('0x4c')][_0x714f('0x54')]({'where':{'id':_0x19dcd5[_0x714f('0x5e')]['id']}})[_0x714f('0x1b')](handleEntityNotFound(_0x4d000b,null))[_0x714f('0x1b')](function(_0x29ad00){if(_0x29ad00){return _0x29ad00[_0x714f('0x6e')](_0x19dcd5[_0x714f('0x5d')][_0x714f('0x66')],_['omit'](_0x19dcd5[_0x714f('0x5d')],[_0x714f('0x66'),'id'])||{})['spread'](function(_0x4c2ca0){for(var _0x568e7c=0x0;_0x568e7c<_0x19dcd5[_0x714f('0x5d')][_0x714f('0x66')]['length'];_0x568e7c+=0x1){socket['emit'](_0x714f('0x6f'),{'UserId':Number(_0x19dcd5[_0x714f('0x5d')][_0x714f('0x66')][_0x568e7c]),'WhatsappAccountId':Number(_0x19dcd5[_0x714f('0x5e')]['id'])});}return _0x4c2ca0;});}})[_0x714f('0x1b')](respondWithResult(_0x4d000b,null))[_0x714f('0x25')](handleError(_0x4d000b,null));};exports[_0x714f('0x70')]=function(_0x3f0e22,_0x584bbe,_0x2f8966){return db[_0x714f('0x4c')][_0x714f('0x54')]({'where':{'id':_0x3f0e22[_0x714f('0x5e')]['id']}})[_0x714f('0x1b')](handleEntityNotFound(_0x584bbe,null))[_0x714f('0x1b')](function(_0x5116c0){if(_0x5116c0){return _0x5116c0[_0x714f('0x70')](_0x3f0e22[_0x714f('0x40')][_0x714f('0x66')])[_0x714f('0x1b')](function(){if(_[_0x714f('0x71')](_0x3f0e22[_0x714f('0x40')][_0x714f('0x66')])){for(var _0x25bbf3=0x0;_0x25bbf3<_0x3f0e22[_0x714f('0x40')][_0x714f('0x66')][_0x714f('0x52')];_0x25bbf3+=0x1){socket[_0x714f('0x72')](_0x714f('0x73'),{'UserId':Number(_0x3f0e22[_0x714f('0x40')][_0x714f('0x66')][_0x25bbf3]),'WhatsappAccountId':Number(_0x3f0e22[_0x714f('0x5e')]['id'])});}}else{socket[_0x714f('0x72')](_0x714f('0x73'),{'UserId':Number(_0x3f0e22[_0x714f('0x40')][_0x714f('0x66')]),'WhatsappAccountId':Number(_0x3f0e22[_0x714f('0x5e')]['id'])});}});}})[_0x714f('0x1b')](respondWithStatusCode(_0x584bbe,null))[_0x714f('0x25')](handleError(_0x584bbe,null));};exports[_0x714f('0x74')]=function(_0x19c42a,_0x26faf4,_0x1d53f7){var _0x294558={};var _0x339ab1={};var _0x8db5a6;var _0x207e58;return db['WhatsappAccount'][_0x714f('0x69')]({'where':{'id':_0x19c42a[_0x714f('0x5e')]['id']}})[_0x714f('0x1b')](handleEntityNotFound(_0x26faf4,null))[_0x714f('0x1b')](function(_0x224e95){if(_0x224e95){_0x8db5a6=_0x224e95;_0x339ab1[_0x714f('0x3f')]=_['keys'](db[_0x714f('0x75')][_0x714f('0x51')]);_0x339ab1[_0x714f('0x40')]=_[_0x714f('0x50')](_0x19c42a[_0x714f('0x40')]);_0x339ab1[_0x714f('0x41')]=_[_0x714f('0x42')](_0x339ab1[_0x714f('0x3f')],_0x339ab1['query']);_0x294558[_0x714f('0x43')]=_[_0x714f('0x42')](_0x339ab1[_0x714f('0x3f')],qs[_0x714f('0x44')](_0x19c42a[_0x714f('0x40')][_0x714f('0x44')]));_0x294558[_0x714f('0x43')]=_0x294558['attributes'][_0x714f('0x52')]?_0x294558[_0x714f('0x43')]:_0x339ab1['model'];_0x294558[_0x714f('0x6c')]=qs[_0x714f('0x46')](_0x19c42a[_0x714f('0x40')][_0x714f('0x46')]);_0x294558[_0x714f('0x47')]=qs['filters'](_[_0x714f('0x48')](_0x19c42a[_0x714f('0x40')],_0x339ab1[_0x714f('0x41')]));if(_0x19c42a[_0x714f('0x40')]['filter']){_0x294558[_0x714f('0x47')]=_[_0x714f('0x49')](_0x294558['where'],{'$or':_[_0x714f('0x3b')](_0x294558[_0x714f('0x43')],function(_0x1dad82){var _0x488ca0={};_0x488ca0[_0x1dad82]={'$like':'%'+_0x19c42a[_0x714f('0x40')][_0x714f('0x63')]+'%'};return _0x488ca0;})});}_0x294558=_['merge']({},_0x294558,_0x19c42a[_0x714f('0x4b')]);return _0x8db5a6[_0x714f('0x74')](_0x294558);}})[_0x714f('0x1b')](function(_0x45b210){if(_0x45b210){_0x207e58=_0x45b210[_0x714f('0x52')];if(!_0x19c42a[_0x714f('0x40')][_0x714f('0x45')](_0x714f('0x6b'))){_0x294558['limit']=qs[_0x714f('0x2b')](_0x19c42a[_0x714f('0x40')][_0x714f('0x2b')]);_0x294558[_0x714f('0x29')]=qs[_0x714f('0x29')](_0x19c42a[_0x714f('0x40')][_0x714f('0x29')]);}return _0x8db5a6[_0x714f('0x74')](_0x294558);}})[_0x714f('0x1b')](function(_0x46342a){if(_0x46342a){return _0x46342a?{'count':_0x207e58,'rows':_0x46342a}:null;}})[_0x714f('0x1b')](respondWithResult(_0x26faf4,null))[_0x714f('0x25')](handleError(_0x26faf4,null));};exports[_0x714f('0x76')]=function(_0x4968ad,_0x4795c7,_0x3069d2){return db[_0x714f('0x4c')][_0x714f('0x69')]({'where':{'id':_0x4968ad[_0x714f('0x5e')]['id']}})['then'](handleEntityNotFound(_0x4795c7,null))[_0x714f('0x1b')](function(_0x784891){if(_0x784891){return db[_0x714f('0x77')][_0x714f('0x78')](function(_0x225587){return db[_0x714f('0x79')][_0x714f('0x32')]({'where':{'WhatsappAccountId':_0x4968ad['params']['id']},'transaction':_0x225587})[_0x714f('0x1b')](function(_0x544294){var _0x16655a=_[_0x714f('0x3b')](_0x4968ad[_0x714f('0x5d')],function(_0x3f92d1){_0x3f92d1['WhatsappAccountId']=_0x4968ad['params']['id'];return _0x3f92d1;});return db[_0x714f('0x79')][_0x714f('0x7a')](_0x16655a,{'transaction':_0x225587});});})['then'](function(){return db[_0x714f('0x79')]['findAndCountAll']({'where':{'WhatsappAccountId':_0x4968ad['params']['id']},'order':'priority'});});}})[_0x714f('0x1b')](respondWithResult(_0x4795c7,null))[_0x714f('0x25')](handleError(_0x4795c7,null));};exports[_0x714f('0x7b')]=function(_0x1f0817,_0x31bbb2,_0x3c5cae){var _0x5565ac={};var _0x26ccaf={};var _0x1b83db;var _0x1ced36;return db[_0x714f('0x4c')]['findOne']({'where':{'id':_0x1f0817[_0x714f('0x5e')]['id']}})[_0x714f('0x1b')](handleEntityNotFound(_0x31bbb2,null))['then'](function(_0x1e7c0f){if(_0x1e7c0f){_0x1b83db=_0x1e7c0f;_0x26ccaf[_0x714f('0x3f')]=_[_0x714f('0x50')](db[_0x714f('0x79')][_0x714f('0x51')]);_0x26ccaf[_0x714f('0x40')]=_['keys'](_0x1f0817[_0x714f('0x40')]);_0x26ccaf[_0x714f('0x41')]=_['intersection'](_0x26ccaf['model'],_0x26ccaf['query']);_0x5565ac[_0x714f('0x43')]=_[_0x714f('0x42')](_0x26ccaf['model'],qs[_0x714f('0x44')](_0x1f0817[_0x714f('0x40')][_0x714f('0x44')]));_0x5565ac['attributes']=_0x5565ac[_0x714f('0x43')][_0x714f('0x52')]?_0x5565ac[_0x714f('0x43')]:_0x26ccaf[_0x714f('0x3f')];_0x5565ac['order']=qs[_0x714f('0x46')](_0x1f0817['query'][_0x714f('0x46')]);_0x5565ac[_0x714f('0x47')]=qs[_0x714f('0x41')](_[_0x714f('0x48')](_0x1f0817[_0x714f('0x40')],_0x26ccaf[_0x714f('0x41')]));if(_0x1f0817[_0x714f('0x40')][_0x714f('0x63')]){_0x5565ac[_0x714f('0x47')]=_['merge'](_0x5565ac[_0x714f('0x47')],{'$or':_[_0x714f('0x3b')](_0x5565ac[_0x714f('0x43')],function(_0x5357d4){var _0x4516ca={};_0x4516ca[_0x5357d4]={'$like':'%'+_0x1f0817['query'][_0x714f('0x63')]+'%'};return _0x4516ca;})});}_0x5565ac=_[_0x714f('0x49')]({},_0x5565ac,_0x1f0817['options']);return _0x1b83db[_0x714f('0x7b')](_0x5565ac);}})[_0x714f('0x1b')](function(_0x90c58c){if(_0x90c58c){_0x1ced36=_0x90c58c[_0x714f('0x52')];if(!_0x1f0817['query'][_0x714f('0x45')](_0x714f('0x6b'))){_0x5565ac[_0x714f('0x2b')]=qs['limit'](_0x1f0817[_0x714f('0x40')]['limit']);_0x5565ac[_0x714f('0x29')]=qs[_0x714f('0x29')](_0x1f0817[_0x714f('0x40')][_0x714f('0x29')]);}return _0x1b83db[_0x714f('0x7b')](_0x5565ac);}})[_0x714f('0x1b')](function(_0x1c9fc6){if(_0x1c9fc6){return _0x1c9fc6?{'count':_0x1ced36,'rows':_0x1c9fc6}:null;}})[_0x714f('0x1b')](respondWithResult(_0x31bbb2,null))['catch'](handleError(_0x31bbb2,null));};exports[_0x714f('0x7c')]=function(_0xed93f2,_0x41056f,_0x3c5b85){var _0x1321b0={'channel':_0x714f('0x7d')};var _0x2e6eac=[];var _0x48531b=[];var _0x29e0d1={};return db[_0x714f('0x4c')][_0x714f('0x54')]({'where':{'id':_0xed93f2['params']['id']},'include':[{'model':db[_0x714f('0x79')],'as':_0x714f('0x7e')}]})[_0x714f('0x1b')](handleEntityNotFound(_0x41056f,null))[_0x714f('0x1b')](function(_0x2abcbe){_0x1321b0[_0x714f('0x7f')]=_0x2abcbe;if(_0x1321b0[_0x714f('0x7f')]&&_0x1321b0[_0x714f('0x7f')][_0x714f('0x3d')]===_0x714f('0x80')&&_0xed93f2['body']['statuses']){if(_0xed93f2['body']['statuses'][_0x714f('0x52')]===0x0)return;if(_0xed93f2[_0x714f('0x5d')][_0x714f('0x81')][0x0][_0x714f('0x82')]!==_0x714f('0x83'))return;return db['WhatsappMessage']['update']({'read':!![],'readAt':_0xed93f2[_0x714f('0x5d')][_0x714f('0x81')][0x0][_0x714f('0x84')]},{'where':{'messageId':_0xed93f2['body'][_0x714f('0x81')][0x0][_0x714f('0x85')]},'individualHooks':!![]})['then'](function(_0x4d7899){return _0x41056f[_0x714f('0x27')](0xc8)['json'](_0x4d7899);});}_0x1321b0[_0x714f('0x86')]=_[_0x714f('0x87')](_0x2abcbe[_0x714f('0x7e')],[_0x714f('0x88')],[_0x714f('0x89')]);if(_0x1321b0['account'][_0x714f('0x7e')]){delete _0x1321b0['account'][_0x714f('0x7e')];}return db[_0x714f('0x8a')][_0x714f('0x5f')]()[_0x714f('0x1b')](function(_0x4d1f21){if(!_0x4d1f21){throw new db[(_0x714f('0x8b'))][(_0x714f('0x8c'))](_0x714f('0x8d'));}_0x2e6eac=_[_0x714f('0x8e')](_[_0x714f('0x50')](_0x4d1f21),[_0x714f('0x8f'),_0x714f('0x90')]);_0x48531b=_[_0x714f('0x8e')](_[_0x714f('0x50')](_0x4d1f21),[_0x714f('0x8f'),'updatedAt','CompanyId',_0x714f('0x91')]);_0x1321b0['body']={'mapKey':_0x714f('0x92')};if(_0x1321b0[_0x714f('0x7f')]&&_0x1321b0[_0x714f('0x7f')][_0x714f('0x3d')]===_0x714f('0x93')){_0x1321b0[_0x714f('0x5d')][_0x714f('0x94')]=_0xed93f2[_0x714f('0x5d')][_0x714f('0x95')]['replace']('whatsapp:','');_0x1321b0[_0x714f('0x5d')][_0x714f('0x5d')]=_0xed93f2[_0x714f('0x5d')][_0x714f('0x96')];_0x1321b0[_0x714f('0x5d')]['messageId']=_0xed93f2[_0x714f('0x5d')][_0x714f('0x97')];}if(_0x1321b0['account']&&_0x1321b0[_0x714f('0x7f')][_0x714f('0x3d')]===_0x714f('0x80')){_0x1321b0[_0x714f('0x5d')][_0x714f('0x94')]=_0xed93f2[_0x714f('0x5d')][_0x714f('0x98')][0x0][_0x714f('0x94')];_0x1321b0[_0x714f('0x5d')][_0x714f('0x5d')]=_0xed93f2[_0x714f('0x5d')][_0x714f('0x98')][0x0]['message'][_0x714f('0x5d')];_0x1321b0[_0x714f('0x5d')]['messageId']=_0xed93f2[_0x714f('0x5d')][_0x714f('0x98')][0x0][_0x714f('0x85')];}if(_0x1321b0[_0x714f('0x5d')]['id']){delete _0x1321b0['body']['id'];}if(_['isNil'](_0x1321b0['body'][_0x714f('0x94')])){throw new db[(_0x714f('0x8b'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0x714f('0x99')](_0x1321b0[_0x714f('0x5d')][_0x714f('0x5d')])||_0x1321b0['body'][_0x714f('0x5d')]===''){throw new db[(_0x714f('0x8b'))][(_0x714f('0x8c'))](_0x714f('0x9a'));}if(_[_0x714f('0x99')](_0x1321b0[_0x714f('0x5d')][_0x714f('0x9b')])){throw new db[(_0x714f('0x8b'))][(_0x714f('0x8c'))](_0x714f('0x9c')+_0x48531b);}if(!_[_0x714f('0x9d')](_0x48531b,_0x1321b0['body'][_0x714f('0x9b')])){throw new db['Sequelize']['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x48531b);}_0x29e0d1[_0x1321b0[_0x714f('0x5d')]['mapKey']]=_0x1321b0[_0x714f('0x5d')][_0x714f('0x94')];return db['CmList'][_0x714f('0x54')]({'where':{'id':_0x1321b0[_0x714f('0x7f')][_0x714f('0x91')]},'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x29e0d1,'limit':0x1,'order':[['updatedAt','DESC']]}]});})['then'](handleEntityNotFound(_0x41056f,null))[_0x714f('0x1b')](function(_0x5f4952){if(_0x5f4952){_0x1321b0[_0x714f('0x9e')]=_[_0x714f('0x9f')](_0x5f4952,[_0x714f('0xa0')]);if(_0x5f4952['Contacts'][_0x714f('0x52')]){return _0x5f4952[_0x714f('0xa0')][0x0];}var _0x508e70=_[_0x714f('0x15')](_0x1321b0[_0x714f('0x5d')],{'firstName':_0x1321b0['body']['from'],'ListId':_0x5f4952['id']});_0x508e70[_0x1321b0['body'][_0x714f('0x9b')]]=_0x1321b0[_0x714f('0x5d')][_0x714f('0x94')];return db[_0x714f('0x8a')][_0x714f('0x55')](_0x508e70,{'fields':_0x2e6eac,'raw':!![]});}})['then'](handleEntityNotFound(_0x41056f,null))['then'](function(_0x2c9199){if(_0x2c9199){_0x1321b0[_0x714f('0xa1')]=_0x2c9199;var _0x495846={'ContactId':_0x2c9199['id'],'phone':_0x1321b0[_0x714f('0x5d')][_0x714f('0x94')],'WhatsappAccountId':_0xed93f2[_0x714f('0x5e')]['id']};var _0x1b9aaa={'ContactId':_0x2c9199['id'],'WhatsappAccountId':_0xed93f2[_0x714f('0x5e')]['id'],'closed':![]};return db[_0x714f('0xa2')][_0x714f('0x54')]({'where':_0x1b9aaa})[_0x714f('0x1b')](function(_0x290f2e){if(_0x290f2e){return[_0x290f2e,![]];}return db[_0x714f('0xa2')]['create'](_0x495846)['then'](function(_0x4e7bfe){return[_0x4e7bfe,!![]];});});}})[_0x714f('0xa3')](function(_0x4757ec,_0x28a335){_0x1321b0[_0x714f('0xa4')]=_0x4757ec['get']({'plain':!![]});_0x1321b0[_0x714f('0xa4')][_0x714f('0xa5')]=![];if(_0x28a335){if(_0x1321b0['account'][_0x714f('0xa6')]){_0x1321b0[_0x714f('0x86')][_0x714f('0xa7')]({'id':0x0,'priority':_0x1321b0[_0x714f('0x86')][_0x714f('0x52')]+0x1,'app':_0x714f('0xa8'),'appdata':'unmanaged','interval':_0x714f('0xa9')});}_0x1321b0[_0x714f('0xa4')]['created']=!![];}return db[_0x714f('0xaa')]['create']({'phone':_0x1321b0['body']['from'],'messageId':_0x1321b0[_0x714f('0x5d')][_0x714f('0xab')],'body':_0x1321b0['body']['body'],'WhatsappAccountId':_0xed93f2[_0x714f('0x5e')]['id'],'WhatsappInteractionId':_0x4757ec['id'],'direction':'in','ContactId':_0x4757ec[_0x714f('0xac')],'AttachmentId':_0x1321b0[_0x714f('0x5d')][_0x714f('0xad')]});})[_0x714f('0x1b')](function(_0x4b58b6){_0x1321b0['message']=_0x4b58b6;if(_0x1321b0[_0x714f('0xa4')][_0x714f('0xae')]){return db[_0x714f('0x75')][_0x714f('0x54')]({'attributes':['id',_0x714f('0x37')],'where':{'id':_0x1321b0[_0x714f('0xa4')][_0x714f('0xae')]}})['then'](function(_0x54f8b3){if(_0x54f8b3){_0x1321b0[_0x714f('0x86')][_0x714f('0xaf')]({'id':0x0,'priority':0x0,'app':_0x714f('0xb0'),'appdata':_0x54f8b3[_0x714f('0x37')]+','+(_0x1321b0[_0x714f('0x7f')]['waitForTheAssignedAgent']||0xa),'interval':_0x714f('0xa9')});}return respondWithRpcPromise(_0x714f('0xb1'),_0x714f('0xb2'),_0x1321b0);});}return respondWithRpcPromise(_0x714f('0xb1'),_0x714f('0xb2'),_0x1321b0);})[_0x714f('0x1b')](function(_0x17245c){if(_0x17245c){var _0x5a77f2=0xc8;var _0x554a05=_0x714f('0xb3');logger[_0x714f('0x24')](_0x714f('0x1f'),_0x554a05,_0x5a77f2,_0x714f('0xb4'));logger[_0x714f('0x1e')]('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x554a05,_0x5a77f2,_0x714f('0xb4'),JSON[_0x714f('0x20')](_0x17245c));if(_0x1321b0[_0x714f('0x7f')][_0x714f('0x3d')]===_0x714f('0x93')){return _0x41056f[_0x714f('0x27')](_0x5a77f2)['set']('Content-Type',_0x714f('0xb5'))[_0x714f('0x38')](_0x714f('0xb6'));}else{return _0x41056f[_0x714f('0x27')](_0x5a77f2)[_0x714f('0x28')](_0x17245c);}}});})[_0x714f('0x25')](handleError(_0x41056f,null));};exports[_0x714f('0x38')]=function(_0x1b1a11,_0x57fb8c,_0xf79ef0){var _0x175f49,_0x5ac686,_0x511bb7;if(_[_0x714f('0x99')](_0x1b1a11[_0x714f('0x5d')]['body'])||_0x1b1a11[_0x714f('0x5d')][_0x714f('0x5d')]===''){throw new db[(_0x714f('0x8b'))][(_0x714f('0x8c'))](_0x714f('0x9a'));}if(_[_0x714f('0x99')](_0x1b1a11['body']['to'])){throw new db[(_0x714f('0x8b'))][(_0x714f('0x8c'))]('to\x20is\x20mandatory');}_0x175f49=_0x1b1a11['body']['to'];return db['WhatsappAccount'][_0x714f('0x54')]({'where':{'id':_0x1b1a11['params']['id']},'include':[{'model':db[_0x714f('0xb7')],'as':_0x714f('0xb8'),'include':[{'model':db['CmContact'],'as':_0x714f('0xa0'),'where':{'mobile':_0x175f49},'limit':0x1,'order':[[_0x714f('0x90'),_0x714f('0xb9')]]}]}]})[_0x714f('0x1b')](handleEntityNotFound(_0x57fb8c,null))[_0x714f('0x1b')](function(_0x3da617){if(_0x3da617&&_0x3da617['List']){_0x5ac686=_0x3da617[_0x714f('0x33')]({'plain':!![]});if(_0x5ac686[_0x714f('0xb8')]&&_0x5ac686[_0x714f('0xb8')][_0x714f('0xa0')][_0x714f('0x52')]){return _0x5ac686['List'][_0x714f('0xa0')][0x0];}return db[_0x714f('0x8a')][_0x714f('0x55')](_[_0x714f('0x15')](_0x1b1a11[_0x714f('0x5d')],{'firstName':_0x175f49,'mobile':_0x175f49,'phone':_0x175f49,'ListId':_0x5ac686['ListId']}));}})[_0x714f('0x1b')](handleEntityNotFound(_0x57fb8c,null))[_0x714f('0x1b')](function(_0x3c19f1){if(_0x3c19f1){_0x511bb7=_0x3c19f1;return db['WhatsappInteraction'][_0x714f('0x54')]({'where':{'ContactId':_0x511bb7['id'],'closed':![],'WhatsappAccountId':_0x5ac686['id']}})[_0x714f('0x1b')](function(_0x4be5c2){if(_0x4be5c2){return[_0x4be5c2,![]];}return db[_0x714f('0xa2')][_0x714f('0x55')]({'UserId':_0x1b1a11['user']['id'],'ContactId':_0x511bb7['id'],'WhatsappAccountId':_0x5ac686['id'],'phone':_0x175f49,'firstMsgDirection':'out','Messages':[_['merge'](_0x1b1a11[_0x714f('0x5d')],{'read':![],'body':_0x1b1a11[_0x714f('0x5d')][_0x714f('0x5d')],'phone':_0x175f49,'WhatsappAccountId':_0x5ac686['id'],'UserId':_0x1b1a11['user']['id'],'ContactId':_0x511bb7['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0x714f('0xba')}]})[_0x714f('0x1b')](function(_0x3c43fa){return[_0x3c43fa,!![]];});});}})[_0x714f('0xa3')](function(_0x38c48f,_0x37637f){if(_0x37637f){return _0x38c48f;}return db[_0x714f('0xaa')][_0x714f('0x55')](_[_0x714f('0x49')](_0x1b1a11[_0x714f('0x5d')],{'read':![],'body':_0x1b1a11[_0x714f('0x5d')][_0x714f('0x5d')],'phone':_0x175f49,'WhatsappAccountId':_0x5ac686['id'],'WhatsappInteractionId':_0x38c48f['id'],'UserId':_0x1b1a11[_0x714f('0x56')]['id'],'ContactId':_0x511bb7['id']}))[_0x714f('0x1b')](function(_0x4f63cd){_0x38c48f['dataValues'][_0x714f('0xba')]=[];_0x38c48f[_0x714f('0xbb')]['Messages'][_0x714f('0xa7')](_0x4f63cd[_0x714f('0xbb')]);return _0x38c48f;});})[_0x714f('0x1b')](respondWithResult(_0x57fb8c,null))[_0x714f('0x25')](handleError(_0x57fb8c,null));};
\ No newline at end of file
index ab74f66..b4c87b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c7f=['WhatsappAccount','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x3de8a4,_0x289a5c){var _0x4635cf=function(_0x2bddb8){while(--_0x2bddb8){_0x3de8a4['push'](_0x3de8a4['shift']());}};_0x4635cf(++_0x289a5c);}(_0x4c7f,0x157));var _0xf4c7=function(_0x58e469,_0x95ee3e){_0x58e469=_0x58e469-0x0;var _0x4c01c5=_0x4c7f[_0x58e469];return _0x4c01c5;};'use strict';var EventEmitter=require('events');var WhatsappAccount=require('../../mysqldb')['db'][_0xf4c7('0x0')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xf4c7('0x1'),'afterDestroy':_0xf4c7('0x2')};function emitEvent(_0x1d4cdb){return function(_0xcd24d,_0x560d07,_0x4e884f){WhatsappAccountEvents[_0xf4c7('0x3')](_0x1d4cdb+':'+_0xcd24d['id'],_0xcd24d);WhatsappAccountEvents[_0xf4c7('0x3')](_0x1d4cdb,_0xcd24d);_0x4e884f(null);};}for(var e in events){if(events[_0xf4c7('0x4')](e)){var event=events[e];WhatsappAccount[_0xf4c7('0x5')](e,emitEvent(event));}}module[_0xf4c7('0x6')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0x56aa=['WhatsappAccount','setMaxListeners','update','remove','hasOwnProperty','events'];(function(_0x412342,_0x180734){var _0x3e62cb=function(_0x501fc6){while(--_0x501fc6){_0x412342['push'](_0x412342['shift']());}};_0x3e62cb(++_0x180734);}(_0x56aa,0xb9));var _0xa56a=function(_0x2cb1bd,_0x42b64c){_0x2cb1bd=_0x2cb1bd-0x0;var _0x393fdf=_0x56aa[_0x2cb1bd];return _0x393fdf;};'use strict';var EventEmitter=require(_0xa56a('0x0'));var WhatsappAccount=require('../../mysqldb')['db'][_0xa56a('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0xa56a('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xa56a('0x3'),'afterDestroy':_0xa56a('0x4')};function emitEvent(_0x33c66c){return function(_0x5de141,_0x431e40,_0x21dfc0){WhatsappAccountEvents['emit'](_0x33c66c+':'+_0x5de141['id'],_0x5de141);WhatsappAccountEvents['emit'](_0x33c66c,_0x5de141);_0x21dfc0(null);};}for(var e in events){if(events[_0xa56a('0x5')](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
index e198e56..641d0e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47a7=['rimraf','../../config/environment','exports','define','WhatsappAccount','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0xcda325,_0x1859c4){var _0x1f988f=function(_0x3b2d44){while(--_0x3b2d44){_0xcda325['push'](_0xcda325['shift']());}};_0x1f988f(++_0x1859c4);}(_0x47a7,0x1e5));var _0x747a=function(_0x4eb889,_0x13b842){_0x4eb889=_0x4eb889-0x0;var _0x3f2955=_0x47a7[_0x4eb889];return _0x3f2955;};'use strict';var _=require(_0x747a('0x0'));var util=require(_0x747a('0x1'));var logger=require(_0x747a('0x2'))(_0x747a('0x3'));var moment=require(_0x747a('0x4'));var BPromise=require(_0x747a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x747a('0x6'));var rimraf=require(_0x747a('0x7'));var config=require(_0x747a('0x8'));var attributes=require('./whatsappAccount.attributes');module[_0x747a('0x9')]=function(_0x394e46,_0x31d4a7){return _0x394e46[_0x747a('0xa')](_0x747a('0xb'),attributes,{'tableName':'whatsapp_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2e8f=['util','moment','bluebird','rimraf','./whatsappAccount.attributes','exports','define','whatsapp_accounts'];(function(_0x3509b9,_0x38bb75){var _0x11704f=function(_0x37a435){while(--_0x37a435){_0x3509b9['push'](_0x3509b9['shift']());}};_0x11704f(++_0x38bb75);}(_0x2e8f,0x1d0));var _0xf2e8=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0x2e8f[_0x32f7d7];return _0x133d09;};'use strict';var _=require('lodash');var util=require(_0xf2e8('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xf2e8('0x1'));var BPromise=require(_0xf2e8('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xf2e8('0x3'));var config=require('../../config/environment');var attributes=require(_0xf2e8('0x4'));module[_0xf2e8('0x5')]=function(_0x5f232e,_0x19fd25){return _0x5f232e[_0xf2e8('0x6')]('WhatsappAccount',attributes,{'tableName':_0xf2e8('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 90b4a2e..93091b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe08b=['options','raw','where','map','model','attributes','include','stringify','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','request','then','info','request\x20sent','debug','error','code','message','WhatsappAccount,\x20%s,\x20%s','result','catch','ShowWhatsappAccount','find'];(function(_0x2cae99,_0x2c4acb){var _0x2748b6=function(_0x277351){while(--_0x277351){_0x2cae99['push'](_0x2cae99['shift']());}};_0x2748b6(++_0x2c4acb);}(_0xe08b,0x184));var _0xbe08=function(_0xfb0281,_0x3ff38b){_0xfb0281=_0xfb0281-0x0;var _0x408dd3=_0xe08b[_0xfb0281];return _0x408dd3;};'use strict';var _=require('lodash');var util=require(_0xbe08('0x0'));var moment=require(_0xbe08('0x1'));var BPromise=require(_0xbe08('0x2'));var rs=require(_0xbe08('0x3'));var fs=require('fs');var Redis=require(_0xbe08('0x4'));var db=require(_0xbe08('0x5'))['db'];var utils=require(_0xbe08('0x6'));var logger=require(_0xbe08('0x7'))('rpc');var config=require(_0xbe08('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xbe08('0x9')][_0xbe08('0xa')]({'port':0x232a});config[_0xbe08('0xb')]=_[_0xbe08('0xc')](config[_0xbe08('0xb')],{'host':_0xbe08('0xd'),'port':0x18eb});var socket=require(_0xbe08('0xe'))(new Redis(config[_0xbe08('0xb')]));require(_0xbe08('0xf'))[_0xbe08('0x10')](socket);function respondWithRpcPromise(_0x438ca1,_0x29b3fa,_0x358a34){return new BPromise(function(_0x2bf1db,_0x504852){return client[_0xbe08('0x11')](_0x438ca1,_0x358a34)[_0xbe08('0x12')](function(_0x393650){logger[_0xbe08('0x13')]('WhatsappAccount,\x20%s,\x20%s',_0x29b3fa,_0xbe08('0x14'));logger[_0xbe08('0x15')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x29b3fa,_0xbe08('0x14'),JSON['stringify'](_0x393650));if(_0x393650[_0xbe08('0x16')]){if(_0x393650[_0xbe08('0x16')][_0xbe08('0x17')]===0x1f4){logger['error']('WhatsappAccount,\x20%s,\x20%s',_0x29b3fa,_0x393650['error'][_0xbe08('0x18')]);return _0x504852(_0x393650[_0xbe08('0x16')][_0xbe08('0x18')]);}logger['error'](_0xbe08('0x19'),_0x29b3fa,_0x393650[_0xbe08('0x16')][_0xbe08('0x18')]);return _0x2bf1db(_0x393650[_0xbe08('0x16')][_0xbe08('0x18')]);}else{logger[_0xbe08('0x13')](_0xbe08('0x19'),_0x29b3fa,_0xbe08('0x14'));_0x2bf1db(_0x393650[_0xbe08('0x1a')][_0xbe08('0x18')]);}})[_0xbe08('0x1b')](function(_0x5e94bd){logger[_0xbe08('0x16')](_0xbe08('0x19'),_0x29b3fa,_0x5e94bd);_0x504852(_0x5e94bd);});});}exports[_0xbe08('0x1c')]=function(_0x15880a){var _0x3a6e6d=this;return new Promise(function(_0x48d880,_0x334dbc){return db['WhatsappAccount'][_0xbe08('0x1d')]({'raw':_0x15880a['options']?_0x15880a[_0xbe08('0x1e')][_0xbe08('0x1f')]===undefined?!![]:![]:!![],'where':_0x15880a[_0xbe08('0x1e')]?_0x15880a[_0xbe08('0x1e')][_0xbe08('0x20')]||null:null,'attributes':_0x15880a[_0xbe08('0x1e')]?_0x15880a[_0xbe08('0x1e')]['attributes']||null:null,'include':_0x15880a['options']?_0x15880a[_0xbe08('0x1e')]['include']?_[_0xbe08('0x21')](_0x15880a[_0xbe08('0x1e')]['include'],function(_0x22cc18){return{'model':db[_0x22cc18[_0xbe08('0x22')]],'as':_0x22cc18['as'],'attributes':_0x22cc18[_0xbe08('0x23')],'include':_0x22cc18[_0xbe08('0x24')]?_[_0xbe08('0x21')](_0x22cc18['include'],function(_0x3be3ac){return{'model':db[_0x3be3ac[_0xbe08('0x22')]],'as':_0x3be3ac['as'],'attributes':_0x3be3ac['attributes'],'include':_0x3be3ac[_0xbe08('0x24')]?_[_0xbe08('0x21')](_0x3be3ac[_0xbe08('0x24')],function(_0x28f762){return{'model':db[_0x28f762['model']],'as':_0x28f762['as'],'attributes':_0x28f762[_0xbe08('0x23')]};}):[]};}):[]};}):[]:[]})[_0xbe08('0x12')](function(_0x84ba17){logger[_0xbe08('0x13')](_0xbe08('0x1c'),_0x15880a);logger[_0xbe08('0x15')](_0xbe08('0x1c'),_0x15880a,JSON[_0xbe08('0x25')](_0x84ba17));_0x48d880(_0x84ba17);})[_0xbe08('0x1b')](function(_0x390df2){logger[_0xbe08('0x16')]('ShowWhatsappAccount',_0x390df2[_0xbe08('0x18')],_0x15880a);_0x334dbc(_0x3a6e6d[_0xbe08('0x16')](0x1f4,_0x390df2[_0xbe08('0x18')]));});});};
\ No newline at end of file
+var _0x7599=['localhost','socket.io-emitter','register','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','WhatsappAccount','find','options','include','map','model','attributes','then','ShowWhatsappAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults'];(function(_0x3a0c02,_0x301422){var _0xf45781=function(_0x223a37){while(--_0x223a37){_0x3a0c02['push'](_0x3a0c02['shift']());}};_0xf45781(++_0x301422);}(_0x7599,0x14f));var _0x9759=function(_0x49b61e,_0x1a9058){_0x49b61e=_0x49b61e-0x0;var _0x5732f=_0x7599[_0x49b61e];return _0x5732f;};'use strict';var _=require(_0x9759('0x0'));var util=require(_0x9759('0x1'));var moment=require(_0x9759('0x2'));var BPromise=require(_0x9759('0x3'));var rs=require(_0x9759('0x4'));var fs=require('fs');var Redis=require(_0x9759('0x5'));var db=require(_0x9759('0x6'))['db'];var utils=require(_0x9759('0x7'));var logger=require(_0x9759('0x8'))(_0x9759('0x9'));var config=require(_0x9759('0xa'));var jayson=require(_0x9759('0xb'));var client=jayson[_0x9759('0xc')][_0x9759('0xd')]({'port':0x232a});config[_0x9759('0xe')]=_[_0x9759('0xf')](config['redis'],{'host':_0x9759('0x10'),'port':0x18eb});var socket=require(_0x9759('0x11'))(new Redis(config[_0x9759('0xe')]));require('./whatsappAccount.socket')[_0x9759('0x12')](socket);function respondWithRpcPromise(_0x5ea5c1,_0x15d1ef,_0x25df10){return new BPromise(function(_0x44e1d7,_0x5735d5){return client['request'](_0x5ea5c1,_0x25df10)['then'](function(_0x309128){logger[_0x9759('0x13')](_0x9759('0x14'),_0x15d1ef,_0x9759('0x15'));logger[_0x9759('0x16')](_0x9759('0x17'),_0x15d1ef,'request\x20sent',JSON[_0x9759('0x18')](_0x309128));if(_0x309128[_0x9759('0x19')]){if(_0x309128[_0x9759('0x19')][_0x9759('0x1a')]===0x1f4){logger[_0x9759('0x19')](_0x9759('0x14'),_0x15d1ef,_0x309128['error'][_0x9759('0x1b')]);return _0x5735d5(_0x309128[_0x9759('0x19')][_0x9759('0x1b')]);}logger[_0x9759('0x19')](_0x9759('0x14'),_0x15d1ef,_0x309128[_0x9759('0x19')]['message']);return _0x44e1d7(_0x309128[_0x9759('0x19')][_0x9759('0x1b')]);}else{logger[_0x9759('0x13')](_0x9759('0x14'),_0x15d1ef,_0x9759('0x15'));_0x44e1d7(_0x309128[_0x9759('0x1c')][_0x9759('0x1b')]);}})[_0x9759('0x1d')](function(_0x2756fd){logger[_0x9759('0x19')](_0x9759('0x14'),_0x15d1ef,_0x2756fd);_0x5735d5(_0x2756fd);});});}exports['ShowWhatsappAccount']=function(_0x5ce88d){var _0x3c91a0=this;return new Promise(function(_0x148744,_0x222223){return db[_0x9759('0x1e')][_0x9759('0x1f')]({'raw':_0x5ce88d[_0x9759('0x20')]?_0x5ce88d['options']['raw']===undefined?!![]:![]:!![],'where':_0x5ce88d[_0x9759('0x20')]?_0x5ce88d['options']['where']||null:null,'attributes':_0x5ce88d[_0x9759('0x20')]?_0x5ce88d[_0x9759('0x20')]['attributes']||null:null,'include':_0x5ce88d[_0x9759('0x20')]?_0x5ce88d[_0x9759('0x20')][_0x9759('0x21')]?_[_0x9759('0x22')](_0x5ce88d[_0x9759('0x20')][_0x9759('0x21')],function(_0x13a327){return{'model':db[_0x13a327['model']],'as':_0x13a327['as'],'attributes':_0x13a327['attributes'],'include':_0x13a327[_0x9759('0x21')]?_[_0x9759('0x22')](_0x13a327[_0x9759('0x21')],function(_0x172418){return{'model':db[_0x172418[_0x9759('0x23')]],'as':_0x172418['as'],'attributes':_0x172418[_0x9759('0x24')],'include':_0x172418['include']?_[_0x9759('0x22')](_0x172418[_0x9759('0x21')],function(_0xdcc3db){return{'model':db[_0xdcc3db[_0x9759('0x23')]],'as':_0xdcc3db['as'],'attributes':_0xdcc3db[_0x9759('0x24')]};}):[]};}):[]};}):[]:[]})[_0x9759('0x25')](function(_0x399332){logger[_0x9759('0x13')](_0x9759('0x26'),_0x5ce88d);logger[_0x9759('0x16')](_0x9759('0x26'),_0x5ce88d,JSON[_0x9759('0x18')](_0x399332));_0x148744(_0x399332);})[_0x9759('0x1d')](function(_0x5f23fb){logger[_0x9759('0x19')](_0x9759('0x26'),_0x5f23fb['message'],_0x5ce88d);_0x222223(_0x3c91a0['error'](0x1f4,_0x5f23fb[_0x9759('0x1b')]));});});};
\ No newline at end of file
index 05329c4..bc99473 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfac=['update','emit','removeListener','register','whatsappAccount:','./whatsappAccount.events','save','remove'];(function(_0x585346,_0x4458c7){var _0x266f8a=function(_0x2891b9){while(--_0x2891b9){_0x585346['push'](_0x585346['shift']());}};_0x266f8a(++_0x4458c7);}(_0xdfac,0x9d));var _0xcdfa=function(_0x3e2435,_0xc531a1){_0x3e2435=_0x3e2435-0x0;var _0x5d49e7=_0xdfac[_0x3e2435];return _0x5d49e7;};'use strict';var WhatsappAccountEvents=require(_0xcdfa('0x0'));var events=[_0xcdfa('0x1'),_0xcdfa('0x2'),_0xcdfa('0x3')];function createListener(_0x1d127f,_0x1d7ddb){return function(_0x4a46db){_0x1d7ddb[_0xcdfa('0x4')](_0x1d127f,_0x4a46db);};}function removeListener(_0x5dd5b3,_0x10e4c7){return function(){WhatsappAccountEvents[_0xcdfa('0x5')](_0x5dd5b3,_0x10e4c7);};}exports[_0xcdfa('0x6')]=function(_0x55c4db){for(var _0x144a86=0x0,_0x7a0514=events['length'];_0x144a86<_0x7a0514;_0x144a86++){var _0x1a2fa9=events[_0x144a86];var _0x1c297d=createListener(_0xcdfa('0x7')+_0x1a2fa9,_0x55c4db);WhatsappAccountEvents['on'](_0x1a2fa9,_0x1c297d);}};
\ No newline at end of file
+var _0xaf21=['emit','register','length','whatsappAccount:','save','remove','update'];(function(_0x34342f,_0x5ebb37){var _0x2742fd=function(_0x227b07){while(--_0x227b07){_0x34342f['push'](_0x34342f['shift']());}};_0x2742fd(++_0x5ebb37);}(_0xaf21,0x18c));var _0x1af2=function(_0x2eb487,_0x34a574){_0x2eb487=_0x2eb487-0x0;var _0x3f3518=_0xaf21[_0x2eb487];return _0x3f3518;};'use strict';var WhatsappAccountEvents=require('./whatsappAccount.events');var events=[_0x1af2('0x0'),_0x1af2('0x1'),_0x1af2('0x2')];function createListener(_0xd9308f,_0x2c46a3){return function(_0x44ca76){_0x2c46a3[_0x1af2('0x3')](_0xd9308f,_0x44ca76);};}function removeListener(_0x779bff,_0xb476f5){return function(){WhatsappAccountEvents['removeListener'](_0x779bff,_0xb476f5);};}exports[_0x1af2('0x4')]=function(_0x4cb757){for(var _0x33dacd=0x0,_0x5ec1a4=events[_0x1af2('0x5')];_0x33dacd<_0x5ec1a4;_0x33dacd++){var _0x22b7e8=events[_0x33dacd];var _0x4de469=createListener(_0x1af2('0x6')+_0x22b7e8,_0x4cb757);WhatsappAccountEvents['on'](_0x22b7e8,_0x4de469);}};
\ No newline at end of file
index 7fdd7c5..68704ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x560a=['destroy','exports','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','get','/:id','show','post','isAuthenticated','put','update','delete'];(function(_0x3303b8,_0xe0e43e){var _0x193c57=function(_0x42e064){while(--_0x42e064){_0x3303b8['push'](_0x3303b8['shift']());}};_0x193c57(++_0xe0e43e);}(_0x560a,0x142));var _0xa560=function(_0x2c90c1,_0x446eda){_0x2c90c1=_0x2c90c1-0x0;var _0xcb55d4=_0x560a[_0x2c90c1];return _0xcb55d4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xa560('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xa560('0x1'));var auth=require(_0xa560('0x2'));var interaction=require(_0xa560('0x3'));var config=require(_0xa560('0x4'));var controller=require(_0xa560('0x5'));router[_0xa560('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0xa560('0x6')](_0xa560('0x7'),auth['isAuthenticated'](),controller[_0xa560('0x8')]);router[_0xa560('0x9')]('/',auth[_0xa560('0xa')](),controller['create']);router[_0xa560('0xb')](_0xa560('0x7'),auth[_0xa560('0xa')](),controller[_0xa560('0xc')]);router[_0xa560('0xd')](_0xa560('0x7'),auth['isAuthenticated'](),controller[_0xa560('0xe')]);module[_0xa560('0xf')]=router;
\ No newline at end of file
+var _0x6433=['express','Router','../../config/environment','./whatsappApplication.controller','get','isAuthenticated','index','create','put','/:id','update','exports','multer','util','path'];(function(_0x102138,_0x2c10f8){var _0x35efb3=function(_0x38f765){while(--_0x38f765){_0x102138['push'](_0x102138['shift']());}};_0x35efb3(++_0x2c10f8);}(_0x6433,0x84));var _0x3643=function(_0x3bad24,_0x572818){_0x3bad24=_0x3bad24-0x0;var _0x4ad5a1=_0x6433[_0x3bad24];return _0x4ad5a1;};'use strict';var multer=require(_0x3643('0x0'));var util=require(_0x3643('0x1'));var path=require(_0x3643('0x2'));var timeout=require('connect-timeout');var express=require(_0x3643('0x3'));var router=express[_0x3643('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3643('0x5'));var controller=require(_0x3643('0x6'));router[_0x3643('0x7')]('/',auth[_0x3643('0x8')](),controller[_0x3643('0x9')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x3643('0xa')]);router[_0x3643('0xb')](_0x3643('0xc'),auth[_0x3643('0x8')](),controller[_0x3643('0xd')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x3643('0xe')]=router;
\ No newline at end of file
index cdac040..57a8b90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4972=['noop','TEXT','STRING','*,*,*,*','exports','INTEGER'];(function(_0x33cb6d,_0xe5a8e4){var _0x554b8c=function(_0xc64e55){while(--_0xc64e55){_0x33cb6d['push'](_0x33cb6d['shift']());}};_0x554b8c(++_0xe5a8e4);}(_0x4972,0x130));var _0x2497=function(_0x19dc23,_0x4dd8c6){_0x19dc23=_0x19dc23-0x0;var _0x325046=_0x4972[_0x19dc23];return _0x325046;};'use strict';var Sequelize=require('sequelize');module[_0x2497('0x0')]={'priority':{'type':Sequelize[_0x2497('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x2497('0x2')},'appdata':{'type':Sequelize[_0x2497('0x3')]()},'description':{'type':Sequelize[_0x2497('0x4')]},'interval':{'type':Sequelize[_0x2497('0x4')],'defaultValue':_0x2497('0x5')}};
\ No newline at end of file
+var _0xd6cb=['STRING','noop','TEXT','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x2eb4e4,_0x22ef1c){var _0x3ab339=function(_0x1aae2e){while(--_0x1aae2e){_0x2eb4e4['push'](_0x2eb4e4['shift']());}};_0x3ab339(++_0x22ef1c);}(_0xd6cb,0x1cb));var _0xbd6c=function(_0x51b362,_0x2a3af3){_0x51b362=_0x51b362-0x0;var _0x18bd6=_0xd6cb[_0x51b362];return _0x18bd6;};'use strict';var Sequelize=require(_0xbd6c('0x0'));module[_0xbd6c('0x1')]={'priority':{'type':Sequelize[_0xbd6c('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xbd6c('0x3')],'allowNull':![],'defaultValue':_0xbd6c('0x4')},'appdata':{'type':Sequelize[_0xbd6c('0x5')]()},'description':{'type':Sequelize[_0xbd6c('0x3')]},'interval':{'type':Sequelize[_0xbd6c('0x3')],'defaultValue':_0xbd6c('0x6')}};
\ No newline at end of file
index a6eee93..cbca011 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd0a=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','status','error','stack','name','send','index','map','WhatsappApplication','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','keys','find','create','body','eml-format','zip-dir','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils'];(function(_0x2c04a4,_0x4745f1){var _0x5c43de=function(_0x18b5df){while(--_0x18b5df){_0x2c04a4['push'](_0x2c04a4['shift']());}};_0x5c43de(++_0x4745f1);}(_0xbd0a,0x1b9));var _0xabd0=function(_0xe5da06,_0x1a56da){_0xe5da06=_0xe5da06-0x0;var _0x1fee48=_0xbd0a[_0xe5da06];return _0x1fee48;};'use strict';var emlformat=require(_0xabd0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xabd0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xabd0('0x2'));var Mustache=require(_0xabd0('0x3'));var util=require(_0xabd0('0x4'));var path=require(_0xabd0('0x5'));var sox=require(_0xabd0('0x6'));var csv=require(_0xabd0('0x7'));var ejs=require(_0xabd0('0x8'));var fs=require('fs');var fs_extra=require(_0xabd0('0x9'));var _=require(_0xabd0('0xa'));var squel=require('squel');var crypto=require(_0xabd0('0xb'));var jsforce=require(_0xabd0('0xc'));var deskjs=require(_0xabd0('0xd'));var toCsv=require('to-csv');var querystring=require(_0xabd0('0xe'));var Papa=require('papaparse');var Redis=require(_0xabd0('0xf'));var authService=require(_0xabd0('0x10'));var qs=require(_0xabd0('0x11'));var as=require(_0xabd0('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xabd0('0x13'))('api');var utils=require(_0xabd0('0x14'));var config=require(_0xabd0('0x15'));var licenseUtil=require(_0xabd0('0x16'));var db=require(_0xabd0('0x17'))['db'];function respondWithStatusCode(_0x3bf33,_0xd66d68){_0xd66d68=_0xd66d68||0xcc;return function(_0x5b0f34){if(_0x5b0f34){return _0x3bf33[_0xabd0('0x18')](_0xd66d68);}return _0x3bf33['status'](_0xd66d68)[_0xabd0('0x19')]();};}function respondWithResult(_0x145f76,_0x5ceb94){_0x5ceb94=_0x5ceb94||0xc8;return function(_0x56ba31){if(_0x56ba31){return _0x145f76['status'](_0x5ceb94)['json'](_0x56ba31);}};}function respondWithFilteredResult(_0x679d0b,_0x26d8fd){return function(_0x97f4ec){if(_0x97f4ec){var _0xdb7a40=typeof _0x26d8fd[_0xabd0('0x1a')]===_0xabd0('0x1b')&&typeof _0x26d8fd[_0xabd0('0x1c')]===_0xabd0('0x1b');var _0x2d17b1=_0x97f4ec['count'];var _0x3a0ace=_0xdb7a40?0x0:_0x26d8fd['offset'];var _0x579dcd=_0xdb7a40?_0x97f4ec[_0xabd0('0x1d')]:_0x26d8fd[_0xabd0('0x1a')]+_0x26d8fd[_0xabd0('0x1c')];var _0x23f955;if(_0x579dcd>=_0x2d17b1){_0x579dcd=_0x2d17b1;_0x23f955=0xc8;}else{_0x23f955=0xce;}_0x679d0b['status'](_0x23f955);return _0x679d0b[_0xabd0('0x1e')](_0xabd0('0x1f'),_0x3a0ace+'-'+_0x579dcd+'/'+_0x2d17b1)['json'](_0x97f4ec);}return null;};}function patchUpdates(_0x56c2f5){return function(_0x1c955e){try{jsonpatch[_0xabd0('0x20')](_0x1c955e,_0x56c2f5,!![]);}catch(_0x4d9416){return BPromise[_0xabd0('0x21')](_0x4d9416);}return _0x1c955e[_0xabd0('0x22')]();};}function saveUpdates(_0xa1ebf,_0x1e077e){return function(_0x4c9f3a){if(_0x4c9f3a){return _0x4c9f3a[_0xabd0('0x23')](_0xa1ebf)[_0xabd0('0x24')](function(_0x3376bc){return _0x3376bc;});}return null;};}function removeEntity(_0x462420,_0x264167){return function(_0xf6dbad){if(_0xf6dbad){return _0xf6dbad[_0xabd0('0x25')]()[_0xabd0('0x24')](function(){_0x462420[_0xabd0('0x26')](0xcc)[_0xabd0('0x19')]();});}};}function handleEntityNotFound(_0x52c8be,_0x369dd0){return function(_0x2699c4){if(!_0x2699c4){_0x52c8be[_0xabd0('0x18')](0x194);}return _0x2699c4;};}function handleError(_0x3e0dd2,_0x31b869){_0x31b869=_0x31b869||0x1f4;return function(_0x399996){logger[_0xabd0('0x27')](_0x399996[_0xabd0('0x28')]);if(_0x399996[_0xabd0('0x29')]){delete _0x399996[_0xabd0('0x29')];}_0x3e0dd2[_0xabd0('0x26')](_0x31b869)[_0xabd0('0x2a')](_0x399996);};}exports[_0xabd0('0x2b')]=function(_0x3246de,_0x1fe955){var _0x15096f={},_0x5427a0={},_0x1c0d90={'count':0x0,'rows':[]};var _0x2d4c55=_[_0xabd0('0x2c')](db[_0xabd0('0x2d')]['rawAttributes'],function(_0x1ef94b){return{'name':_0x1ef94b[_0xabd0('0x2e')],'type':_0x1ef94b[_0xabd0('0x2f')]['key']};});_0x5427a0[_0xabd0('0x30')]=_[_0xabd0('0x2c')](_0x2d4c55,'name');_0x5427a0[_0xabd0('0x31')]=_['keys'](_0x3246de[_0xabd0('0x31')]);_0x5427a0[_0xabd0('0x32')]=_[_0xabd0('0x33')](_0x5427a0[_0xabd0('0x30')],_0x5427a0[_0xabd0('0x31')]);_0x15096f[_0xabd0('0x34')]=_['intersection'](_0x5427a0[_0xabd0('0x30')],qs[_0xabd0('0x35')](_0x3246de[_0xabd0('0x31')][_0xabd0('0x35')]));_0x15096f[_0xabd0('0x34')]=_0x15096f[_0xabd0('0x34')][_0xabd0('0x36')]?_0x15096f[_0xabd0('0x34')]:_0x5427a0[_0xabd0('0x30')];if(!_0x3246de[_0xabd0('0x31')][_0xabd0('0x37')](_0xabd0('0x38'))){_0x15096f[_0xabd0('0x1c')]=qs[_0xabd0('0x1c')](_0x3246de[_0xabd0('0x31')]['limit']);_0x15096f['offset']=qs['offset'](_0x3246de[_0xabd0('0x31')][_0xabd0('0x1a')]);}_0x15096f[_0xabd0('0x39')]=qs[_0xabd0('0x3a')](_0x3246de[_0xabd0('0x31')]['sort']);_0x15096f['where']=qs['filters'](_[_0xabd0('0x3b')](_0x3246de['query'],_0x5427a0[_0xabd0('0x32')]),_0x2d4c55);if(_0x3246de[_0xabd0('0x31')][_0xabd0('0x3c')]){_0x15096f[_0xabd0('0x3d')]=_[_0xabd0('0x3e')](_0x15096f[_0xabd0('0x3d')],{'$or':_[_0xabd0('0x2c')](_0x2d4c55,function(_0x42e86e){if(_0x42e86e['type']!==_0xabd0('0x3f')){var _0x592de0={};_0x592de0[_0x42e86e['name']]={'$like':'%'+_0x3246de[_0xabd0('0x31')][_0xabd0('0x3c')]+'%'};return _0x592de0;}})});}_0x15096f=_[_0xabd0('0x3e')]({},_0x15096f,_0x3246de[_0xabd0('0x40')]);var _0x1b8687={'where':_0x15096f['where']};return db[_0xabd0('0x2d')][_0xabd0('0x1d')](_0x1b8687)[_0xabd0('0x24')](function(_0x2e0bdf){_0x1c0d90['count']=_0x2e0bdf;if(_0x3246de[_0xabd0('0x31')][_0xabd0('0x41')]){_0x15096f[_0xabd0('0x42')]=[{'all':!![]}];}return db[_0xabd0('0x2d')][_0xabd0('0x43')](_0x15096f);})[_0xabd0('0x24')](function(_0x2aa5a9){_0x1c0d90[_0xabd0('0x44')]=_0x2aa5a9;return _0x1c0d90;})[_0xabd0('0x24')](respondWithFilteredResult(_0x1fe955,_0x15096f))[_0xabd0('0x45')](handleError(_0x1fe955,null));};exports[_0xabd0('0x46')]=function(_0x975bbe,_0x237a33){var _0x514ea3={'raw':!![],'where':{'id':_0x975bbe[_0xabd0('0x47')]['id']}},_0x2ba135={};_0x2ba135[_0xabd0('0x30')]=_['keys'](db['WhatsappApplication'][_0xabd0('0x48')]);_0x2ba135[_0xabd0('0x31')]=_[_0xabd0('0x49')](_0x975bbe[_0xabd0('0x31')]);_0x2ba135[_0xabd0('0x32')]=_['intersection'](_0x2ba135['model'],_0x2ba135[_0xabd0('0x31')]);_0x514ea3[_0xabd0('0x34')]=_[_0xabd0('0x33')](_0x2ba135[_0xabd0('0x30')],qs[_0xabd0('0x35')](_0x975bbe['query'][_0xabd0('0x35')]));_0x514ea3[_0xabd0('0x34')]=_0x514ea3[_0xabd0('0x34')]['length']?_0x514ea3[_0xabd0('0x34')]:_0x2ba135[_0xabd0('0x30')];if(_0x975bbe[_0xabd0('0x31')][_0xabd0('0x41')]){_0x514ea3['include']=[{'all':!![]}];}_0x514ea3=_[_0xabd0('0x3e')]({},_0x514ea3,_0x975bbe[_0xabd0('0x40')]);return db[_0xabd0('0x2d')][_0xabd0('0x4a')](_0x514ea3)['then'](handleEntityNotFound(_0x237a33,null))[_0xabd0('0x24')](respondWithResult(_0x237a33,null))[_0xabd0('0x45')](handleError(_0x237a33,null));};exports[_0xabd0('0x4b')]=function(_0xc80459,_0x2a1069){return db[_0xabd0('0x2d')]['create'](_0xc80459['body'],{})[_0xabd0('0x24')](respondWithResult(_0x2a1069,0xc9))['catch'](handleError(_0x2a1069,null));};exports['update']=function(_0x2293bd,_0x1610d9){if(_0x2293bd[_0xabd0('0x4c')]['id']){delete _0x2293bd[_0xabd0('0x4c')]['id'];}return db['WhatsappApplication'][_0xabd0('0x4a')]({'where':{'id':_0x2293bd[_0xabd0('0x47')]['id']}})[_0xabd0('0x24')](handleEntityNotFound(_0x1610d9,null))[_0xabd0('0x24')](saveUpdates(_0x2293bd['body'],null))['then'](respondWithResult(_0x1610d9,null))[_0xabd0('0x45')](handleError(_0x1610d9,null));};exports[_0xabd0('0x25')]=function(_0x16dd64,_0x32a5c9){return db[_0xabd0('0x2d')][_0xabd0('0x4a')]({'where':{'id':_0x16dd64[_0xabd0('0x47')]['id']}})[_0xabd0('0x24')](handleEntityNotFound(_0x32a5c9,null))[_0xabd0('0x24')](removeEntity(_0x32a5c9,null))['catch'](handleError(_0x32a5c9,null));};
\ No newline at end of file
+var _0xdd4f=['include','findAll','rows','catch','show','params','keys','intersection','includeAll','create','body','find','eml-format','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','then','destroy','sendStatus','error','stack','name','send','map','WhatsappApplication','rawAttributes','fieldName','key','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options'];(function(_0x56d7b2,_0x2ca43e){var _0x4a114c=function(_0x5080bb){while(--_0x5080bb){_0x56d7b2['push'](_0x56d7b2['shift']());}};_0x4a114c(++_0x2ca43e);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0x56b7c6,_0x2e2186){_0x56b7c6=_0x56b7c6-0x0;var _0x222295=_0xdd4f[_0x56b7c6];return _0x222295;};'use strict';var emlformat=require(_0xfdd4('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xfdd4('0x1'));var moment=require(_0xfdd4('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xfdd4('0x3'));var util=require(_0xfdd4('0x4'));var path=require(_0xfdd4('0x5'));var sox=require('sox');var csv=require(_0xfdd4('0x6'));var ejs=require(_0xfdd4('0x7'));var fs=require('fs');var fs_extra=require(_0xfdd4('0x8'));var _=require(_0xfdd4('0x9'));var squel=require(_0xfdd4('0xa'));var crypto=require('crypto');var jsforce=require(_0xfdd4('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xfdd4('0x6'));var querystring=require(_0xfdd4('0xc'));var Papa=require(_0xfdd4('0xd'));var Redis=require('ioredis');var authService=require(_0xfdd4('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xfdd4('0xf'));var hardwareService=require(_0xfdd4('0x10'));var logger=require(_0xfdd4('0x11'))(_0xfdd4('0x12'));var utils=require(_0xfdd4('0x13'));var config=require(_0xfdd4('0x14'));var licenseUtil=require(_0xfdd4('0x15'));var db=require(_0xfdd4('0x16'))['db'];function respondWithStatusCode(_0x3f07f1,_0x4565e6){_0x4565e6=_0x4565e6||0xcc;return function(_0x1bf37b){if(_0x1bf37b){return _0x3f07f1['sendStatus'](_0x4565e6);}return _0x3f07f1[_0xfdd4('0x17')](_0x4565e6)[_0xfdd4('0x18')]();};}function respondWithResult(_0x227099,_0x57b21f){_0x57b21f=_0x57b21f||0xc8;return function(_0x1b7da1){if(_0x1b7da1){return _0x227099['status'](_0x57b21f)[_0xfdd4('0x19')](_0x1b7da1);}};}function respondWithFilteredResult(_0x42c3a8,_0x2f34ec){return function(_0x431255){if(_0x431255){var _0x37b05f=typeof _0x2f34ec['offset']==='undefined'&&typeof _0x2f34ec['limit']===_0xfdd4('0x1a');var _0x216c7e=_0x431255[_0xfdd4('0x1b')];var _0x2ccc88=_0x37b05f?0x0:_0x2f34ec[_0xfdd4('0x1c')];var _0x33d752=_0x37b05f?_0x431255[_0xfdd4('0x1b')]:_0x2f34ec[_0xfdd4('0x1c')]+_0x2f34ec[_0xfdd4('0x1d')];var _0x52ce34;if(_0x33d752>=_0x216c7e){_0x33d752=_0x216c7e;_0x52ce34=0xc8;}else{_0x52ce34=0xce;}_0x42c3a8[_0xfdd4('0x17')](_0x52ce34);return _0x42c3a8[_0xfdd4('0x1e')](_0xfdd4('0x1f'),_0x2ccc88+'-'+_0x33d752+'/'+_0x216c7e)[_0xfdd4('0x19')](_0x431255);}return null;};}function patchUpdates(_0x1454f1){return function(_0x29cc8d){try{jsonpatch[_0xfdd4('0x20')](_0x29cc8d,_0x1454f1,!![]);}catch(_0x34dfa8){return BPromise['reject'](_0x34dfa8);}return _0x29cc8d[_0xfdd4('0x21')]();};}function saveUpdates(_0x17302b,_0x2a24e8){return function(_0x16e81b){if(_0x16e81b){return _0x16e81b[_0xfdd4('0x22')](_0x17302b)[_0xfdd4('0x23')](function(_0x451767){return _0x451767;});}return null;};}function removeEntity(_0x277ec1,_0x538b00){return function(_0x1e14da){if(_0x1e14da){return _0x1e14da[_0xfdd4('0x24')]()[_0xfdd4('0x23')](function(){_0x277ec1['status'](0xcc)[_0xfdd4('0x18')]();});}};}function handleEntityNotFound(_0x39b712,_0xf9c346){return function(_0x2f8268){if(!_0x2f8268){_0x39b712[_0xfdd4('0x25')](0x194);}return _0x2f8268;};}function handleError(_0x4a8790,_0x18bafb){_0x18bafb=_0x18bafb||0x1f4;return function(_0x2c88ad){logger[_0xfdd4('0x26')](_0x2c88ad[_0xfdd4('0x27')]);if(_0x2c88ad[_0xfdd4('0x28')]){delete _0x2c88ad[_0xfdd4('0x28')];}_0x4a8790[_0xfdd4('0x17')](_0x18bafb)[_0xfdd4('0x29')](_0x2c88ad);};}exports['index']=function(_0xcbd1fb,_0x39981f){var _0x385a68={},_0xef012e={},_0x2207ae={'count':0x0,'rows':[]};var _0x4a36a2=_[_0xfdd4('0x2a')](db[_0xfdd4('0x2b')][_0xfdd4('0x2c')],function(_0x2bb793){return{'name':_0x2bb793[_0xfdd4('0x2d')],'type':_0x2bb793['type'][_0xfdd4('0x2e')]};});_0xef012e[_0xfdd4('0x2f')]=_[_0xfdd4('0x2a')](_0x4a36a2,'name');_0xef012e[_0xfdd4('0x30')]=_['keys'](_0xcbd1fb[_0xfdd4('0x30')]);_0xef012e[_0xfdd4('0x31')]=_['intersection'](_0xef012e['model'],_0xef012e[_0xfdd4('0x30')]);_0x385a68[_0xfdd4('0x32')]=_['intersection'](_0xef012e['model'],qs[_0xfdd4('0x33')](_0xcbd1fb[_0xfdd4('0x30')][_0xfdd4('0x33')]));_0x385a68[_0xfdd4('0x32')]=_0x385a68[_0xfdd4('0x32')][_0xfdd4('0x34')]?_0x385a68[_0xfdd4('0x32')]:_0xef012e[_0xfdd4('0x2f')];if(!_0xcbd1fb[_0xfdd4('0x30')][_0xfdd4('0x35')](_0xfdd4('0x36'))){_0x385a68[_0xfdd4('0x1d')]=qs[_0xfdd4('0x1d')](_0xcbd1fb[_0xfdd4('0x30')][_0xfdd4('0x1d')]);_0x385a68[_0xfdd4('0x1c')]=qs[_0xfdd4('0x1c')](_0xcbd1fb[_0xfdd4('0x30')][_0xfdd4('0x1c')]);}_0x385a68[_0xfdd4('0x37')]=qs[_0xfdd4('0x38')](_0xcbd1fb[_0xfdd4('0x30')][_0xfdd4('0x38')]);_0x385a68[_0xfdd4('0x39')]=qs[_0xfdd4('0x31')](_[_0xfdd4('0x3a')](_0xcbd1fb['query'],_0xef012e[_0xfdd4('0x31')]),_0x4a36a2);if(_0xcbd1fb[_0xfdd4('0x30')][_0xfdd4('0x3b')]){_0x385a68[_0xfdd4('0x39')]=_[_0xfdd4('0x3c')](_0x385a68[_0xfdd4('0x39')],{'$or':_['map'](_0x4a36a2,function(_0x245ce4){if(_0x245ce4['type']!==_0xfdd4('0x3d')){var _0x2c5199={};_0x2c5199[_0x245ce4[_0xfdd4('0x28')]]={'$like':'%'+_0xcbd1fb[_0xfdd4('0x30')]['filter']+'%'};return _0x2c5199;}})});}_0x385a68=_[_0xfdd4('0x3c')]({},_0x385a68,_0xcbd1fb[_0xfdd4('0x3e')]);var _0x1040e8={'where':_0x385a68[_0xfdd4('0x39')]};return db[_0xfdd4('0x2b')][_0xfdd4('0x1b')](_0x1040e8)[_0xfdd4('0x23')](function(_0x55fcec){_0x2207ae[_0xfdd4('0x1b')]=_0x55fcec;if(_0xcbd1fb[_0xfdd4('0x30')]['includeAll']){_0x385a68[_0xfdd4('0x3f')]=[{'all':!![]}];}return db[_0xfdd4('0x2b')][_0xfdd4('0x40')](_0x385a68);})[_0xfdd4('0x23')](function(_0x5173db){_0x2207ae[_0xfdd4('0x41')]=_0x5173db;return _0x2207ae;})[_0xfdd4('0x23')](respondWithFilteredResult(_0x39981f,_0x385a68))[_0xfdd4('0x42')](handleError(_0x39981f,null));};exports[_0xfdd4('0x43')]=function(_0x362c4f,_0x496747){var _0x1411e0={'raw':!![],'where':{'id':_0x362c4f[_0xfdd4('0x44')]['id']}},_0x23af2a={};_0x23af2a[_0xfdd4('0x2f')]=_[_0xfdd4('0x45')](db[_0xfdd4('0x2b')][_0xfdd4('0x2c')]);_0x23af2a['query']=_[_0xfdd4('0x45')](_0x362c4f['query']);_0x23af2a[_0xfdd4('0x31')]=_[_0xfdd4('0x46')](_0x23af2a[_0xfdd4('0x2f')],_0x23af2a[_0xfdd4('0x30')]);_0x1411e0['attributes']=_[_0xfdd4('0x46')](_0x23af2a[_0xfdd4('0x2f')],qs['fields'](_0x362c4f[_0xfdd4('0x30')][_0xfdd4('0x33')]));_0x1411e0['attributes']=_0x1411e0[_0xfdd4('0x32')]['length']?_0x1411e0['attributes']:_0x23af2a['model'];if(_0x362c4f[_0xfdd4('0x30')][_0xfdd4('0x47')]){_0x1411e0[_0xfdd4('0x3f')]=[{'all':!![]}];}_0x1411e0=_['merge']({},_0x1411e0,_0x362c4f[_0xfdd4('0x3e')]);return db[_0xfdd4('0x2b')]['find'](_0x1411e0)[_0xfdd4('0x23')](handleEntityNotFound(_0x496747,null))[_0xfdd4('0x23')](respondWithResult(_0x496747,null))[_0xfdd4('0x42')](handleError(_0x496747,null));};exports[_0xfdd4('0x48')]=function(_0x746f6a,_0x3817fe){return db[_0xfdd4('0x2b')][_0xfdd4('0x48')](_0x746f6a[_0xfdd4('0x49')],{})[_0xfdd4('0x23')](respondWithResult(_0x3817fe,0xc9))[_0xfdd4('0x42')](handleError(_0x3817fe,null));};exports[_0xfdd4('0x22')]=function(_0x300965,_0x3c0ee1){if(_0x300965['body']['id']){delete _0x300965['body']['id'];}return db[_0xfdd4('0x2b')][_0xfdd4('0x4a')]({'where':{'id':_0x300965[_0xfdd4('0x44')]['id']}})[_0xfdd4('0x23')](handleEntityNotFound(_0x3c0ee1,null))['then'](saveUpdates(_0x300965[_0xfdd4('0x49')],null))[_0xfdd4('0x23')](respondWithResult(_0x3c0ee1,null))['catch'](handleError(_0x3c0ee1,null));};exports['destroy']=function(_0x53c66d,_0x51dd34){return db['WhatsappApplication'][_0xfdd4('0x4a')]({'where':{'id':_0x53c66d[_0xfdd4('0x44')]['id']}})[_0xfdd4('0x23')](handleEntityNotFound(_0x51dd34,null))[_0xfdd4('0x23')](removeEntity(_0x51dd34,null))[_0xfdd4('0x42')](handleError(_0x51dd34,null));};
\ No newline at end of file
index e5d9010..9272f04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae24=['rimraf','./whatsappApplication.attributes','exports','define','WhatsappApplication','utf8mb4_unicode_ci','lodash','../../config/logger','moment','bluebird'];(function(_0x321c39,_0x323c87){var _0x479de4=function(_0x386b17){while(--_0x386b17){_0x321c39['push'](_0x321c39['shift']());}};_0x479de4(++_0x323c87);}(_0xae24,0x182));var _0x4ae2=function(_0x11205c,_0x30eaf7){_0x11205c=_0x11205c-0x0;var _0x35e776=_0xae24[_0x11205c];return _0x35e776;};'use strict';var _=require(_0x4ae2('0x0'));var util=require('util');var logger=require(_0x4ae2('0x1'))('api');var moment=require(_0x4ae2('0x2'));var BPromise=require(_0x4ae2('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4ae2('0x4'));var config=require('../../config/environment');var attributes=require(_0x4ae2('0x5'));module[_0x4ae2('0x6')]=function(_0x20c85c,_0x3e6055){return _0x20c85c[_0x4ae2('0x7')](_0x4ae2('0x8'),attributes,{'tableName':'whatsapp_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x4ae2('0x9')});};
\ No newline at end of file
+var _0x8d0e=['./whatsappApplication.attributes','define','WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x2aed3,_0x5f9c05){var _0x160e00=function(_0x552b3a){while(--_0x552b3a){_0x2aed3['push'](_0x2aed3['shift']());}};_0x160e00(++_0x5f9c05);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x5687f0,_0x2058e2){_0x5687f0=_0x5687f0-0x0;var _0xb696ee=_0x8d0e[_0x5687f0];return _0xb696ee;};'use strict';var _=require(_0xe8d0('0x0'));var util=require(_0xe8d0('0x1'));var logger=require(_0xe8d0('0x2'))(_0xe8d0('0x3'));var moment=require(_0xe8d0('0x4'));var BPromise=require(_0xe8d0('0x5'));var rp=require(_0xe8d0('0x6'));var fs=require('fs');var path=require(_0xe8d0('0x7'));var rimraf=require(_0xe8d0('0x8'));var config=require('../../config/environment');var attributes=require(_0xe8d0('0x9'));module['exports']=function(_0x560dab,_0x2e2985){return _0x560dab[_0xe8d0('0xa')](_0xe8d0('0xb'),attributes,{'tableName':_0xe8d0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe8d0('0xd'),'collate':_0xe8d0('0xe')});};
\ No newline at end of file
index e971050..04bb634 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['rpc','../../config/environment','jayson/promise','client','http','request','then','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','ioredis','../../mysqldb','../../config/logger'];(function(_0x3fa212,_0x3d7bcb){var _0x1b65b1=function(_0x1423f8){while(--_0x1423f8){_0x3fa212['push'](_0x3fa212['shift']());}};_0x1b65b1(++_0x3d7bcb);}(_0x55ca,0x126));var _0xa55c=function(_0x65efc5,_0x5d978c){_0x65efc5=_0x65efc5-0x0;var _0x4c387a=_0x55ca[_0x65efc5];return _0x4c387a;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa55c('0x2'));var db=require(_0xa55c('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa55c('0x4'))(_0xa55c('0x5'));var config=require(_0xa55c('0x6'));var jayson=require(_0xa55c('0x7'));var client=jayson[_0xa55c('0x8')][_0xa55c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x36b623,_0x4d0624,_0x2121fd){return new BPromise(function(_0x2537f0,_0x57e069){return client[_0xa55c('0xa')](_0x36b623,_0x2121fd)[_0xa55c('0xb')](function(_0x52a3bc){logger['info'](_0xa55c('0xc'),_0x4d0624,_0xa55c('0xd'));logger[_0xa55c('0xe')](_0xa55c('0xf'),_0x4d0624,_0xa55c('0xd'),JSON[_0xa55c('0x10')](_0x52a3bc));if(_0x52a3bc[_0xa55c('0x11')]){if(_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x12')]===0x1f4){logger[_0xa55c('0x11')]('WhatsappApplication,\x20%s,\x20%s',_0x4d0624,_0x52a3bc['error'][_0xa55c('0x13')]);return _0x57e069(_0x52a3bc['error']['message']);}logger['error'](_0xa55c('0xc'),_0x4d0624,_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x13')]);return _0x2537f0(_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x13')]);}else{logger[_0xa55c('0x14')]('WhatsappApplication,\x20%s,\x20%s',_0x4d0624,_0xa55c('0xd'));_0x2537f0(_0x52a3bc[_0xa55c('0x15')][_0xa55c('0x13')]);}})[_0xa55c('0x16')](function(_0x1c4cfd){logger[_0xa55c('0x11')](_0xa55c('0xc'),_0x4d0624,_0x1c4cfd);_0x57e069(_0x1c4cfd);});});}
\ No newline at end of file
+var _0x70e0=['code','WhatsappApplication,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0xffae6f,_0x14068a){var _0x450c76=function(_0x9b24ce){while(--_0x9b24ce){_0xffae6f['push'](_0xffae6f['shift']());}};_0x450c76(++_0x14068a);}(_0x70e0,0x17b));var _0x070e=function(_0x114ef9,_0x388b59){_0x114ef9=_0x114ef9-0x0;var _0xdf476b=_0x70e0[_0x114ef9];return _0xdf476b;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x070e('0x3'));var db=require(_0x070e('0x4'))['db'];var utils=require(_0x070e('0x5'));var logger=require(_0x070e('0x6'))('rpc');var config=require(_0x070e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x070e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56e420,_0x5032e5,_0x35ab0c){return new BPromise(function(_0x1e11f0,_0x604664){return client[_0x070e('0x9')](_0x56e420,_0x35ab0c)[_0x070e('0xa')](function(_0x68a09e){logger[_0x070e('0xb')]('WhatsappApplication,\x20%s,\x20%s',_0x5032e5,'request\x20sent');logger[_0x070e('0xc')](_0x070e('0xd'),_0x5032e5,_0x070e('0xe'),JSON[_0x070e('0xf')](_0x68a09e));if(_0x68a09e[_0x070e('0x10')]){if(_0x68a09e[_0x070e('0x10')][_0x070e('0x11')]===0x1f4){logger[_0x070e('0x10')](_0x070e('0x12'),_0x5032e5,_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);return _0x604664(_0x68a09e['error']['message']);}logger[_0x070e('0x10')]('WhatsappApplication,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('WhatsappApplication,\x20%s,\x20%s',_0x5032e5,_0x070e('0xe'));_0x1e11f0(_0x68a09e[_0x070e('0x14')][_0x070e('0x13')]);}})[_0x070e('0x15')](function(_0x5bc71e){logger['error'](_0x070e('0x12'),_0x5032e5,_0x5bc71e);_0x604664(_0x5bc71e);});});}
\ No newline at end of file
index 22c6d84..2aaef54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa23f=['/:id/messages','/:id/tags','tracked','whatsapp','addTags','put','whatsappinteraction:update','update','delete','whatsappinteraction:destroy','destroy','removeTags','multer','util','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','getMessages','/:id/download','download','post'];(function(_0x1b14a2,_0x8c4a63){var _0x88d8b8=function(_0xf78866){while(--_0xf78866){_0x1b14a2['push'](_0x1b14a2['shift']());}};_0x88d8b8(++_0x8c4a63);}(_0xa23f,0x7c));var _0xfa23=function(_0x33774e,_0x45b8df){_0x33774e=_0x33774e-0x0;var _0x3f9076=_0xa23f[_0x33774e];return _0x3f9076;};'use strict';var multer=require(_0xfa23('0x0'));var util=require(_0xfa23('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xfa23('0x2'));var router=express[_0xfa23('0x3')]();var fs_extra=require(_0xfa23('0x4'));var auth=require(_0xfa23('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xfa23('0x6'));var controller=require('./whatsappInteraction.controller');router[_0xfa23('0x7')]('/',auth[_0xfa23('0x8')](),controller[_0xfa23('0x9')]);router[_0xfa23('0x7')]('/describe',auth[_0xfa23('0x8')](),controller['describe']);router[_0xfa23('0x7')](_0xfa23('0xa'),auth[_0xfa23('0x8')](),controller[_0xfa23('0xb')]);router[_0xfa23('0x7')]('/:id/messages',auth['isAuthenticated'](),controller[_0xfa23('0xc')]);router['get'](_0xfa23('0xd'),auth['isAuthenticated'](),controller[_0xfa23('0xe')]);router[_0xfa23('0xf')]('/',auth[_0xfa23('0x8')](),controller['create']);router[_0xfa23('0xf')](_0xfa23('0x10'),auth[_0xfa23('0x8')](),controller['addMessage']);router['post'](_0xfa23('0x11'),auth[_0xfa23('0x8')](),interaction[_0xfa23('0x12')](_0xfa23('0x13'),'whatsappinteraction:addtags'),controller[_0xfa23('0x14')]);router[_0xfa23('0x15')](_0xfa23('0xa'),auth[_0xfa23('0x8')](),interaction['tracked'](_0xfa23('0x13'),_0xfa23('0x16')),controller[_0xfa23('0x17')]);router[_0xfa23('0x18')](_0xfa23('0xa'),auth['isAuthenticated'](),interaction['tracked']('whatsapp',_0xfa23('0x19')),controller[_0xfa23('0x1a')]);router['delete'](_0xfa23('0x11'),auth[_0xfa23('0x8')](),controller[_0xfa23('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0x90b1=['index','get','/describe','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','addMessage','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','addTags','put','whatsappinteraction:update','delete','whatsappinteraction:destroy','removeTags','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x59e40a,_0x3007b2){var _0x75a770=function(_0x900d74){while(--_0x900d74){_0x59e40a['push'](_0x59e40a['shift']());}};_0x75a770(++_0x3007b2);}(_0x90b1,0x1bb));var _0x190b=function(_0x23d274,_0x7e1ebe){_0x23d274=_0x23d274-0x0;var _0x2b0f72=_0x90b1[_0x23d274];return _0x2b0f72;};'use strict';var multer=require(_0x190b('0x0'));var util=require(_0x190b('0x1'));var path=require(_0x190b('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x190b('0x3')]();var fs_extra=require(_0x190b('0x4'));var auth=require(_0x190b('0x5'));var interaction=require(_0x190b('0x6'));var config=require('../../config/environment');var controller=require('./whatsappInteraction.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x190b('0x7')]);router[_0x190b('0x8')](_0x190b('0x9'),auth[_0x190b('0xa')](),controller[_0x190b('0xb')]);router[_0x190b('0x8')](_0x190b('0xc'),auth['isAuthenticated'](),controller[_0x190b('0xd')]);router[_0x190b('0x8')](_0x190b('0xe'),auth[_0x190b('0xa')](),controller[_0x190b('0xf')]);router[_0x190b('0x8')](_0x190b('0x10'),auth[_0x190b('0xa')](),controller['download']);router[_0x190b('0x11')]('/',auth[_0x190b('0xa')](),controller['create']);router[_0x190b('0x11')](_0x190b('0xe'),auth[_0x190b('0xa')](),controller[_0x190b('0x12')]);router[_0x190b('0x11')](_0x190b('0x13'),auth[_0x190b('0xa')](),interaction[_0x190b('0x14')](_0x190b('0x15'),_0x190b('0x16')),controller[_0x190b('0x17')]);router[_0x190b('0x18')](_0x190b('0xc'),auth[_0x190b('0xa')](),interaction[_0x190b('0x14')](_0x190b('0x15'),_0x190b('0x19')),controller['update']);router[_0x190b('0x1a')]('/:id',auth[_0x190b('0xa')](),interaction[_0x190b('0x14')](_0x190b('0x15'),_0x190b('0x1b')),controller['destroy']);router[_0x190b('0x1a')](_0x190b('0x13'),auth[_0x190b('0xa')](),controller[_0x190b('0x1c')]);module[_0x190b('0x1d')]=router;
\ No newline at end of file
index 464a410..2a3cc37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1354=['STRING','out','sequelize','moment','exports','BOOLEAN','DATE'];(function(_0x18350c,_0x1bc1d7){var _0x32e371=function(_0x76bff5){while(--_0x76bff5){_0x18350c['push'](_0x18350c['shift']());}};_0x32e371(++_0x1bc1d7);}(_0x1354,0x95));var _0x4135=function(_0x543429,_0x140390){_0x543429=_0x543429-0x0;var _0x112a46=_0x1354[_0x543429];return _0x112a46;};'use strict';var Sequelize=require(_0x4135('0x0'));var moment=require(_0x4135('0x1'));module[_0x4135('0x2')]={'closed':{'type':Sequelize[_0x4135('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x4135('0x4')]},'disposition':{'type':Sequelize[_0x4135('0x5')]},'secondDisposition':{'type':Sequelize[_0x4135('0x5')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x4135('0x5')]},'phone':{'type':Sequelize[_0x4135('0x5')]},'read1stAt':{'type':Sequelize[_0x4135('0x4')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x4135('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x4135('0x4')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x4135('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x4135('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x8832=['ENUM','out','BOOLEAN','sequelize','moment','DATE','STRING'];(function(_0x51ab33,_0x71a8a8){var _0x5e1298=function(_0x1bd8cf){while(--_0x1bd8cf){_0x51ab33['push'](_0x51ab33['shift']());}};_0x5e1298(++_0x71a8a8);}(_0x8832,0x1f4));var _0x2883=function(_0x5be187,_0x1df136){_0x5be187=_0x5be187-0x0;var _0x3d16e5=_0x8832[_0x5be187];return _0x3d16e5;};'use strict';var Sequelize=require(_0x2883('0x0'));var moment=require(_0x2883('0x1'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x2883('0x2')]},'disposition':{'type':Sequelize[_0x2883('0x3')]},'secondDisposition':{'type':Sequelize[_0x2883('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x2883('0x3')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x2883('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x2883('0x4')]('in',_0x2883('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x2883('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x2883('0x6')],'defaultValue':![]}};
\ No newline at end of file
index 043a8ce..6e1e33f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95f2=['sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','update','then','error','stack','name','send','map','TagIds','Tags','split','forEach','catch','WhatsappInteraction','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','where','select','field','tools_tags','u.id','u.fullname','user_has_whatsapp_interactions','left_join','users','u.id\x20=\x20ui.UserId','from','whatsapp_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','find','unreadMessages','value','`\x20=\x200','`\x20>\x200','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','some','isEmpty','WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','$gte','parse','\x20IS\x20NULL','\x20=\x20?','read','having','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','Sequelize','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','toString','sequelize','keyBy','merge','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.WhatsappInteractionId\x20IN\x20?','groupBy','all','show','params','include','options','create','describe','addMessage','ids','omit','getMessages','findOne','WhatsappMessage','intersection','pick','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','rows','color','emit','removeTags','download','unix','join','root','server','files','push','CmContact','lastName','attachments','Attachment','Messages','direction','Account','Owner','fullname','get','mkdirSync','Whatsapp','N.A.','closed','disposition','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','Contact','firstName','secret','renderFile','views','transcript-','.pdf','err','unlinkSync','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','path'];(function(_0x21c11f,_0x439add){var _0x5bccc1=function(_0x490024){while(--_0x490024){_0x21c11f['push'](_0x21c11f['shift']());}};_0x5bccc1(++_0x439add);}(_0x95f2,0xdf));var _0x295f=function(_0x22dac7,_0x45d32a){_0x22dac7=_0x22dac7-0x0;var _0x3e6cfa=_0x95f2[_0x22dac7];return _0x3e6cfa;};'use strict';var emlformat=require(_0x295f('0x0'));var rimraf=require(_0x295f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x295f('0x2'));var rp=require(_0x295f('0x3'));var moment=require(_0x295f('0x4'));var BPromise=require(_0x295f('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x295f('0x6'));var sox=require(_0x295f('0x7'));var csv=require(_0x295f('0x8'));var ejs=require(_0x295f('0x9'));var fs=require('fs');var fs_extra=require(_0x295f('0xa'));var _=require(_0x295f('0xb'));var squel=require(_0x295f('0xc'));var crypto=require(_0x295f('0xd'));var jsforce=require(_0x295f('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x295f('0xf'));var Papa=require('papaparse');var Redis=require(_0x295f('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x295f('0x11'));var as=require(_0x295f('0x12'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0x295f('0x13'));var logger=require(_0x295f('0x14'))('api');var utils=require(_0x295f('0x15'));var config=require(_0x295f('0x16'));var licenseUtil=require(_0x295f('0x17'));var db=require(_0x295f('0x18'))['db'];config['redis']=_[_0x295f('0x19')](config[_0x295f('0x1a')],{'host':_0x295f('0x1b'),'port':0x18eb});var socket=require(_0x295f('0x1c'))(new Redis(config[_0x295f('0x1a')]));require(_0x295f('0x1d'))['register'](socket);function respondWithStatusCode(_0x455c57,_0x143f9b){_0x143f9b=_0x143f9b||0xcc;return function(_0x369edf){if(_0x369edf){return _0x455c57[_0x295f('0x1e')](_0x143f9b);}return _0x455c57[_0x295f('0x1f')](_0x143f9b)[_0x295f('0x20')]();};}function respondWithResult(_0x26c12d,_0x2e2d17){_0x2e2d17=_0x2e2d17||0xc8;return function(_0x17a04e){if(_0x17a04e){return _0x26c12d[_0x295f('0x1f')](_0x2e2d17)[_0x295f('0x21')](_0x17a04e);}};}function respondWithFilteredResult(_0x1d063b,_0x3072bb){return function(_0x530d03){if(_0x530d03){var _0x5882f3=typeof _0x3072bb[_0x295f('0x22')]===_0x295f('0x23')&&typeof _0x3072bb[_0x295f('0x24')]===_0x295f('0x23');var _0xd37370=_0x530d03[_0x295f('0x25')];var _0x419150=_0x5882f3?0x0:_0x3072bb[_0x295f('0x22')];var _0x3b8d4d=_0x5882f3?_0x530d03[_0x295f('0x25')]:_0x3072bb[_0x295f('0x22')]+_0x3072bb[_0x295f('0x24')];var _0x4c194d;if(_0x3b8d4d>=_0xd37370){_0x3b8d4d=_0xd37370;_0x4c194d=0xc8;}else{_0x4c194d=0xce;}_0x1d063b[_0x295f('0x1f')](_0x4c194d);return _0x1d063b[_0x295f('0x26')]('Content-Range',_0x419150+'-'+_0x3b8d4d+'/'+_0xd37370)[_0x295f('0x21')](_0x530d03);}return null;};}function patchUpdates(_0x4dd3e1){return function(_0x2ad19e){try{jsonpatch['apply'](_0x2ad19e,_0x4dd3e1,!![]);}catch(_0x1df335){return BPromise['reject'](_0x1df335);}return _0x2ad19e['save']();};}function saveUpdates(_0x175371,_0x463dbf){return function(_0x19dfb7){if(_0x19dfb7){return _0x19dfb7[_0x295f('0x27')](_0x175371)['then'](function(_0x136555){return _0x136555;});}return null;};}function removeEntity(_0x88425,_0x3e63f3){return function(_0x3141c1){if(_0x3141c1){return _0x3141c1['destroy']()[_0x295f('0x28')](function(){_0x88425[_0x295f('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3c5f51,_0x226991){return function(_0x1b6fbc){if(!_0x1b6fbc){_0x3c5f51[_0x295f('0x1e')](0x194);}return _0x1b6fbc;};}function handleError(_0x5ad232,_0x55a341){_0x55a341=_0x55a341||0x1f4;return function(_0x47a602){logger[_0x295f('0x29')](_0x47a602[_0x295f('0x2a')]);if(_0x47a602['name']){delete _0x47a602[_0x295f('0x2b')];}_0x5ad232[_0x295f('0x1f')](_0x55a341)[_0x295f('0x2c')](_0x47a602);};}function getInteractionUsers(_0x2e9193,_0x33e8f3){return new BPromise(function(_0x3f2ff7,_0x5ef755){try{if(_0x33e8f3[_0x2e9193['id']]){_0x2e9193['Users']=_[_0x295f('0x2d')](_0x33e8f3[_0x2e9193['id']],function(_0x33d4af){return{'id':_0x33d4af['id'],'fullname':_0x33d4af['fullname']};});}}catch(_0x42253d){_0x5ef755(_0x42253d);}_0x3f2ff7(_0x2e9193);});}function getInteractionTags(_0x4bb366,_0xac0f6b){return new BPromise(function(_0xda0df8,_0x323c8c){try{if(_0x4bb366[_0x295f('0x2e')]){_0x4bb366[_0x295f('0x2f')]=[];_0x4bb366['TagIds'][_0x295f('0x30')](',')[_0x295f('0x31')](function(_0x5b66cc){_0x4bb366[_0x295f('0x2f')]['push'](_0xac0f6b[_0x5b66cc]);});}delete _0x4bb366[_0x295f('0x2e')];}catch(_0x9855e6){_0x323c8c(_0x9855e6);}_0xda0df8(_0x4bb366);});}function updateWhatsappInteraction(_0x1002ff,_0x229229,_0x1f3883){return new BPromise(function(_0x30fc33,_0x330d4a){return getInteractionUsers(_0x1002ff,_0x1f3883)['then'](function(_0x4b3afb){return getInteractionTags(_0x4b3afb,_0x229229);})[_0x295f('0x28')](function(_0x28424e){_0x30fc33(_0x28424e);})[_0x295f('0x32')](function(_0x28655b){_0x330d4a(_0x28655b);});});}exports['index']=function(_0x4ff088,_0x4f1db9){var _0x54b809={},_0x33866e={},_0x5c9531={'count':0x0,'rows':[]};var _0x2c42aa=_['map'](db[_0x295f('0x33')]['rawAttributes'],function(_0x3fe765){return{'name':_0x3fe765[_0x295f('0x34')],'type':_0x3fe765[_0x295f('0x35')][_0x295f('0x36')]};});_0x33866e[_0x295f('0x37')]=_[_0x295f('0x2d')](_0x2c42aa,_0x295f('0x2b'));_0x33866e[_0x295f('0x38')]=_[_0x295f('0x39')](_0x4ff088['query']);_0x33866e[_0x295f('0x3a')]=_['intersection'](_0x33866e['model'],_0x33866e[_0x295f('0x38')]);_0x54b809[_0x295f('0x3b')]=_['intersection'](_0x33866e[_0x295f('0x37')],qs[_0x295f('0x3c')](_0x4ff088[_0x295f('0x38')][_0x295f('0x3c')]));_0x54b809[_0x295f('0x3b')]=_0x54b809[_0x295f('0x3b')][_0x295f('0x3d')]?_0x54b809['attributes']:_0x33866e[_0x295f('0x37')];if(!_0x4ff088[_0x295f('0x38')][_0x295f('0x3e')]('nolimit')){_0x54b809[_0x295f('0x24')]=qs['limit'](_0x4ff088[_0x295f('0x38')][_0x295f('0x24')]);_0x54b809[_0x295f('0x22')]=qs['offset'](_0x4ff088['query'][_0x295f('0x22')]);}_0x54b809[_0x295f('0x3f')]=qs[_0x295f('0x40')](_0x4ff088['query']['sort']);_0x54b809[_0x295f('0x41')]=qs[_0x295f('0x3a')](_['pick'](_0x4ff088[_0x295f('0x38')],_0x33866e[_0x295f('0x3a')]),_0x2c42aa);var _0x5ac8ad=[];var _0x350bee=squel[_0x295f('0x42')]()[_0x295f('0x43')]('id')['field'](_0x295f('0x2b'))[_0x295f('0x43')]('color')['from'](_0x295f('0x44'));var _0x4b7e04=squel[_0x295f('0x42')]()['field'](_0x295f('0x45'))[_0x295f('0x43')](_0x295f('0x46'))[_0x295f('0x43')]('ui.WhatsappInteractionId')['from'](_0x295f('0x47'),'ui')[_0x295f('0x48')](_0x295f('0x49'),'u',_0x295f('0x4a'));var _0xdb34e4=squel[_0x295f('0x42')]()[_0x295f('0x4b')](_0x295f('0x4c'),'i')[_0x295f('0x48')](_0x295f('0x4d'),'c',_0x295f('0x4e'))['left_join'](_0x295f('0x49'),'o','o.id\x20=\x20i.UserId')['left_join'](_0x295f('0x4f'),'a',_0x295f('0x50'))[_0x295f('0x48')](_0x295f('0x51'),'me',_0x295f('0x52'))[_0x295f('0x48')](_0x295f('0x53'),'it',_0x295f('0x54'))[_0x295f('0x48')]('tools_tags','t',_0x295f('0x55'));var _0x4854e3=squel[_0x295f('0x56')]();var _0x25246f=[];var _0x2f6276=squel[_0x295f('0x56')]();var _0x8201b0;if(_0x4ff088[_0x295f('0x38')]['search']){_0x8201b0=as[_0x295f('0x57')](_0x4ff088[_0x295f('0x38')][_0x295f('0x58')]);var _0xc2487d=_0x8201b0[_0x295f('0x59')];for(var _0x3e3b9c=0x0;_0x3e3b9c<_0x8201b0['conditions']['length'];_0x3e3b9c++){var _0x55988c=_0x8201b0['conditions'][_0x3e3b9c];var _0x349ee9='i';var _0x5df101=_[_0x295f('0x5a')](_0x2c42aa,[_0x295f('0x2b'),_0x55988c[_0x295f('0x43')]]);if(!_0x5df101){switch(_0x55988c[_0x295f('0x43')]){case _0x295f('0x5b'):if(_0x55988c[_0x295f('0x5c')]==0x1){_0xdb34e4['having']('`'+_0x55988c[_0x295f('0x43')]+_0x295f('0x5d'));}else{_0xdb34e4['having']('`'+_0x55988c[_0x295f('0x43')]+_0x295f('0x5e'));}break;case'Contact':if(_0x55988c[_0x295f('0x5f')]===_0x295f('0x60')){if(_0x55988c[_0x295f('0x5c')][_0x295f('0x30')]('\x20')[_0x295f('0x3d')]>0x1){_0x4854e3[_0xc2487d](_0x295f('0x61'),qs[_0x295f('0x62')](_0x55988c[_0x295f('0x5c')]),null);}else{var _0x60c354='%'+_0x55988c[_0x295f('0x5c')]+'%';_0x4854e3[_0xc2487d](_0x295f('0x63'),_0x60c354,_0x60c354,_0x60c354);}}else{_0x5df101=_[_0x295f('0x5a')](_0x2c42aa,[_0x295f('0x2b'),'ContactId']);_0x55988c['field']='ContactId';_0x50b655=as[_0x295f('0x64')](_0x349ee9,_0x5df101[_0x295f('0x35')],_0x55988c);_0x4854e3[_0xc2487d](_0x50b655[_0x295f('0x65')],_0x50b655[_0x295f('0x5c')][_0x295f('0x66')],_0x50b655['value'][_0x295f('0x20')]);}break;case _0x295f('0x67'):var _0x410348=_0x55988c['value'][_0x295f('0x30')](',')['map'](function(_0x80b23b){return Number(_0x80b23b);});_0x410348[_0x295f('0x31')](function(_0x43e37f){_0x2f6276['or'](_0x295f('0x68'),'%,'+_0x43e37f+',%');});_0x25246f=_[_0x295f('0x69')](_0x25246f,_0x410348);break;case _0x295f('0x6a'):if(_0x55988c[_0x295f('0x5f')]===_0x295f('0x60')){_0x4854e3[_0xc2487d](_0x295f('0x6b'),'%'+_0x55988c[_0x295f('0x5c')]+'%',null);}else{_0x5df101=_[_0x295f('0x5a')](_0x2c42aa,[_0x295f('0x2b'),_0x295f('0x6c')]);_0x55988c['field']=_0x295f('0x6c');_0x50b655=as[_0x295f('0x64')](_0x349ee9,_0x5df101[_0x295f('0x35')],_0x55988c);_0x4854e3[_0xc2487d](_0x50b655['text'],_0x50b655[_0x295f('0x5c')][_0x295f('0x66')],_0x50b655[_0x295f('0x5c')][_0x295f('0x20')]);}break;case _0x295f('0x6d'):_0x50b655=as[_0x295f('0x64')]('me',null,_0x55988c);_0x4854e3[_0xc2487d](_0x50b655['text'],_0x50b655[_0x295f('0x5c')][_0x295f('0x66')],_0x50b655[_0x295f('0x5c')]['end']);break;}}else{var _0x50b655=as['buildExpression'](_0x349ee9,_0x5df101[_0x295f('0x35')],_0x55988c);_0x4854e3[_0xc2487d](_0x50b655['text'],_0x50b655[_0x295f('0x5c')][_0x295f('0x66')],_0x50b655[_0x295f('0x5c')][_0x295f('0x20')]);}}}else{var _0x2549bc=_(_0x4ff088[_0x295f('0x38')])['keys']()[_0x295f('0x2d')](function(_0x3e362d){return _[_0x295f('0x6e')](_0x2c42aa,[_0x295f('0x2b'),_0x3e362d])?_0x3e362d:undefined;})['compact']()[_0x295f('0x5c')]();if(!_[_0x295f('0x6f')](_0x2549bc)){_0x2549bc['forEach'](function(_0x252ab5){if(_0x252ab5===_0x295f('0x70')){_0xdb34e4[_0x295f('0x41')](_0x295f('0x71'),[][_0x295f('0x72')](_0x4ff088[_0x295f('0x38')][_0x252ab5]));}else if(_0x252ab5===_0x295f('0x73')){var _0x12610a=JSON['parse'](_0x4ff088[_0x295f('0x38')][_0x252ab5])[_0x295f('0x74')];var _0x5ae215=JSON[_0x295f('0x75')](_0x4ff088['query'][_0x252ab5])['$lte'];_0xdb34e4[_0x295f('0x41')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x12610a,_0x5ae215);}else{if(_0x4ff088['query'][_0x252ab5]==='null'){_0xdb34e4[_0x295f('0x41')]('i.'+_0x252ab5+_0x295f('0x76'));}else{_0xdb34e4[_0x295f('0x41')]('i.'+_0x252ab5+_0x295f('0x77'),_0x4ff088[_0x295f('0x38')][_0x252ab5]);}}});}if(_0x4ff088[_0x295f('0x38')][_0x295f('0x78')]){if(_0x4ff088['query'][_0x295f('0x78')]==0x1){_0xdb34e4[_0x295f('0x79')](_0x295f('0x7a'));}else{_0xdb34e4[_0x295f('0x79')]('`unreadMessages`\x20>\x200');}}if(_0x4ff088[_0x295f('0x38')][_0x295f('0x7b')]){_0x25246f=_[_0x295f('0x7c')](_0x4ff088['query'][_0x295f('0x7b')])?_0x4ff088[_0x295f('0x38')][_0x295f('0x7b')]:new Array(_0x4ff088['query']['tag']);_0x25246f[_0x295f('0x31')](function(_0x4b85e1){_0x2f6276['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x4b85e1+',%');});}if(_0x4ff088[_0x295f('0x38')][_0x295f('0x7d')]){var _0x11ed8a=_0x4ff088[_0x295f('0x38')][_0x295f('0x7d')]['replace']('\x5c','\x5c\x5c')[_0x295f('0x7e')](/'/g,'\x27\x27');if(qs[_0x295f('0x7f')](_0x11ed8a)){_0x4854e3['or'](_0x295f('0x80'),_0x11ed8a+'%')['or'](_0x295f('0x81'),_0x11ed8a+'%');}else{_0x4854e3['or'](_0x295f('0x82'),qs[_0x295f('0x62')](_0x11ed8a))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x11ed8a+'%');}}}_0xdb34e4['where'](_0x4854e3);_0xdb34e4[_0x295f('0x83')]('i.id');var _0x5daca9={'type':db[_0x295f('0x84')][_0x295f('0x85')]['SELECT'],'raw':!![]};var _0x5ebee8=_0xdb34e4[_0x295f('0x86')]();_0x5ebee8[_0x295f('0x43')]('i.id');_0x5ebee8[_0x295f('0x43')](_0x295f('0x87'),_0x295f('0x5b'));if(_0x54b809[_0x295f('0x3f')]){_0x54b809['order'][_0x295f('0x31')](function(_0x47581f){var _0x28b37e=_0x47581f[0x0]===_0x295f('0x88')?_0x47581f[0x0]:'i.'+_0x47581f[0x0];_0xdb34e4[_0x295f('0x3f')](_0x28b37e,_0x47581f[0x1]==='DESC'?![]:!![]);});}if(!_[_0x295f('0x6f')](_0x25246f)){_0xdb34e4['having'](_0x2f6276);_0x5ebee8[_0x295f('0x41')](_0x295f('0x89'),_0x25246f);}BPromise[_0x295f('0x8a')]()[_0x295f('0x28')](function(){if(!_0x8201b0){if(_0x4ff088[_0x295f('0x38')][_0x295f('0x70')])return;_0x5ebee8[_0x295f('0x41')](_0x295f('0x8b'));_0xdb34e4[_0x295f('0x41')](_0x295f('0x8b'));return;}if(_0x4ff088[_0x295f('0x8c')][_0x295f('0x8d')]!==_0x295f('0x8e'))return;return _0x4ff088[_0x295f('0x8c')][_0x295f('0x8f')]({'attributes':['id'],'raw':!![]})['then'](function(_0x13ecc8){if(_['isEmpty'](_0x13ecc8)){_0x5ebee8['where'](_0x295f('0x90'));_0xdb34e4[_0x295f('0x41')](_0x295f('0x90'));}else{_0x5ebee8[_0x295f('0x41')]('i.WhatsappAccountId\x20IN\x20?',_['map'](_0x13ecc8,'id'));_0xdb34e4[_0x295f('0x41')](_0x295f('0x71'),_[_0x295f('0x2d')](_0x13ecc8,'id'));}});})[_0x295f('0x28')](function(){if(_0x4ff088[_0x295f('0x8c')][_0x295f('0x8d')]===_0x295f('0x8e')&&!_0x8201b0&&!_0x4ff088['query'][_0x295f('0x70')])return[];return db['sequelize'][_0x295f('0x38')](_0x5ebee8[_0x295f('0x91')](),_0x5daca9);})[_0x295f('0x28')](function(_0xe699ea){_0x5c9531[_0x295f('0x25')]=_0xe699ea[_0x295f('0x3d')];if(_0x5c9531[_0x295f('0x25')]===0x0)return[];return db[_0x295f('0x92')][_0x295f('0x38')](_0x350bee[_0x295f('0x91')](),_0x5daca9)['then'](function(_0x447261){_0x5ac8ad=_[_0x295f('0x93')](_0x447261,'id');_0x5daca9=_[_0x295f('0x94')](_0x5daca9,{'model':db[_0x295f('0x33')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4ff088[_0x295f('0x38')][_0x295f('0x3c')]){_0x54b809[_0x295f('0x3b')][_0x295f('0x31')](function(_0x21c767){_0xdb34e4['field']('i.'+_0x21c767);});}else{_0xdb34e4[_0x295f('0x43')](_0x295f('0x87'),_0x295f('0x5b'));_0xdb34e4[_0x295f('0x43')]('a.key',_0x295f('0x95'));_0xdb34e4[_0x295f('0x43')](_0x295f('0x96'),_0x295f('0x97'));_0xdb34e4[_0x295f('0x43')](_0x295f('0x98'),_0x295f('0x88'));_0xdb34e4[_0x295f('0x43')](_0x295f('0x99'));_0xdb34e4['field'](_0x295f('0x9a'),'Contact.firstName');_0xdb34e4[_0x295f('0x43')](_0x295f('0x9b'),_0x295f('0x9c'));_0xdb34e4[_0x295f('0x43')](_0x295f('0x9d'),_0x295f('0x9e'));_0xdb34e4[_0x295f('0x43')](_0x295f('0x9f'),_0x295f('0xa0'));_0xdb34e4['field']('c.mobile','Contact.mobile');_0xdb34e4['field'](_0x295f('0xa1'),'Contact.fax');_0xdb34e4['field'](_0x295f('0xa2'),_0x295f('0xa3'));_0xdb34e4[_0x295f('0x43')](_0x295f('0xa4'),_0x295f('0xa5'));_0xdb34e4['field'](_0x295f('0xa6'),'TagIds');}if(_0x54b809[_0x295f('0x24')])_0xdb34e4['limit'](_0x54b809['limit']);if(_0x54b809[_0x295f('0x22')])_0xdb34e4[_0x295f('0x22')](_0x54b809[_0x295f('0x22')]);return db[_0x295f('0x92')][_0x295f('0x38')](_0xdb34e4['toString'](),_0x5daca9);})[_0x295f('0x28')](function(_0x399fa3){if(_0x399fa3['length']>0x0)_0x4b7e04['where'](_0x295f('0xa7'),_['map'](_0x399fa3,'id'));return db[_0x295f('0x92')][_0x295f('0x38')](_0x4b7e04[_0x295f('0x91')](),_0x5daca9)[_0x295f('0x28')](function(_0x424dab){var _0xb6c0a0=_[_0x295f('0xa8')](_0x424dab,'WhatsappInteractionId');var _0x23b90e=[];_0x399fa3[_0x295f('0x31')](function(_0x494cee){_0x23b90e['push'](updateWhatsappInteraction(_0x494cee,_0x5ac8ad,_0xb6c0a0));});return BPromise[_0x295f('0xa9')](_0x23b90e);});});})[_0x295f('0x28')](function(_0x54444c){_0x5c9531['rows']=_0x54444c;return _0x5c9531;})[_0x295f('0x28')](respondWithFilteredResult(_0x4f1db9,_0x54b809))[_0x295f('0x32')](handleError(_0x4f1db9,null));};exports[_0x295f('0xaa')]=function(_0x2e00ee,_0x49d63c){var _0xbccf50={'raw':![],'where':{'id':_0x2e00ee[_0x295f('0xab')]['id']}},_0x1dbd09={};_0x1dbd09[_0x295f('0x37')]=_[_0x295f('0x39')](db[_0x295f('0x33')]['rawAttributes']);_0x1dbd09[_0x295f('0x38')]=_['keys'](_0x2e00ee[_0x295f('0x38')]);_0x1dbd09[_0x295f('0x3a')]=_['intersection'](_0x1dbd09[_0x295f('0x37')],_0x1dbd09['query']);_0xbccf50[_0x295f('0x3b')]=_['intersection'](_0x1dbd09[_0x295f('0x37')],qs['fields'](_0x2e00ee[_0x295f('0x38')][_0x295f('0x3c')]));_0xbccf50[_0x295f('0x3b')]=_0xbccf50['attributes'][_0x295f('0x3d')]?_0xbccf50[_0x295f('0x3b')]:_0x1dbd09[_0x295f('0x37')];if(_0x2e00ee[_0x295f('0x38')]['includeAll']){_0xbccf50[_0x295f('0xac')]=[{'all':!![]}];}_0xbccf50=_['merge']({},_0xbccf50,_0x2e00ee[_0x295f('0xad')]);return db[_0x295f('0x33')][_0x295f('0x5a')](_0xbccf50)['then'](handleEntityNotFound(_0x49d63c,null))[_0x295f('0x28')](respondWithResult(_0x49d63c,null))[_0x295f('0x32')](handleError(_0x49d63c,null));};exports['create']=function(_0x2d8b4a,_0x2b2143){return db[_0x295f('0x33')][_0x295f('0xae')](_0x2d8b4a['body'],{})[_0x295f('0x28')](respondWithResult(_0x2b2143,0xc9))['catch'](handleError(_0x2b2143,null));};exports[_0x295f('0x27')]=function(_0x16b972,_0x3fc944){if(_0x16b972[_0x295f('0x6d')]['id']){delete _0x16b972[_0x295f('0x6d')]['id'];}return db['WhatsappInteraction'][_0x295f('0x5a')]({'where':{'id':_0x16b972[_0x295f('0xab')]['id']}})[_0x295f('0x28')](handleEntityNotFound(_0x3fc944,null))['then'](saveUpdates(_0x16b972[_0x295f('0x6d')],null))[_0x295f('0x28')](respondWithResult(_0x3fc944,null))['catch'](handleError(_0x3fc944,null));};exports['destroy']=function(_0x4b48d3,_0x4831c7){return db[_0x295f('0x33')][_0x295f('0x5a')]({'where':{'id':_0x4b48d3[_0x295f('0xab')]['id']}})['then'](handleEntityNotFound(_0x4831c7,null))[_0x295f('0x28')](removeEntity(_0x4831c7,null))[_0x295f('0x32')](handleError(_0x4831c7,null));};exports[_0x295f('0xaf')]=function(_0x2767bf,_0xa1acc4){return db['WhatsappInteraction']['describe']()[_0x295f('0x28')](respondWithResult(_0xa1acc4,null))[_0x295f('0x32')](handleError(_0xa1acc4,null));};exports[_0x295f('0xb0')]=function(_0x1f263a,_0x455d7d,_0x2fed3a){return db['WhatsappMessage']['find']({'where':{'id':_0x1f263a[_0x295f('0xab')]['id']}})[_0x295f('0x28')](handleEntityNotFound(_0x455d7d,null))[_0x295f('0x28')](function(_0xd7e3dd){if(_0xd7e3dd){return _0xd7e3dd['addMessage'](_0x1f263a[_0x295f('0x6d')][_0x295f('0xb1')],_[_0x295f('0xb2')](_0x1f263a['body'],[_0x295f('0xb1'),'id'])||{});}})['then'](respondWithResult(_0x455d7d,null))[_0x295f('0x32')](handleError(_0x455d7d,null));};exports[_0x295f('0xb3')]=function(_0x56e539,_0x1b0101,_0x883b52){var _0x4e24c7={'raw':![],'where':{}};var _0x50c062={};var _0x105e96={'count':0x0,'rows':[]};return db[_0x295f('0x33')][_0x295f('0xb4')]({'where':{'id':_0x56e539[_0x295f('0xab')]['id']}})[_0x295f('0x28')](handleEntityNotFound(_0x1b0101,null))[_0x295f('0x28')](function(_0x3e3c3f){if(_0x3e3c3f){_0x50c062[_0x295f('0x37')]=_[_0x295f('0x39')](db[_0x295f('0xb5')]['rawAttributes']);_0x50c062[_0x295f('0x38')]=_[_0x295f('0x39')](_0x56e539[_0x295f('0x38')]);_0x50c062[_0x295f('0x3a')]=_[_0x295f('0xb6')](_0x50c062[_0x295f('0x37')],_0x50c062[_0x295f('0x38')]);_0x4e24c7[_0x295f('0x3b')]=_[_0x295f('0xb6')](_0x50c062[_0x295f('0x37')],qs[_0x295f('0x3c')](_0x56e539[_0x295f('0x38')][_0x295f('0x3c')]));_0x4e24c7[_0x295f('0x3b')]=_0x4e24c7[_0x295f('0x3b')][_0x295f('0x3d')]?_0x4e24c7[_0x295f('0x3b')]:_0x50c062['model'];if(!_0x56e539[_0x295f('0x38')]['hasOwnProperty']('nolimit')){_0x4e24c7[_0x295f('0x24')]=qs['limit'](_0x56e539['query']['limit']);_0x4e24c7[_0x295f('0x22')]=qs[_0x295f('0x22')](_0x56e539[_0x295f('0x38')]['offset']);}_0x4e24c7[_0x295f('0x3f')]=qs['sort'](_0x56e539[_0x295f('0x38')]['sort']);_0x4e24c7['where']=qs[_0x295f('0x3a')](_[_0x295f('0xb7')](_0x56e539[_0x295f('0x38')],_0x50c062[_0x295f('0x3a')]));_0x4e24c7[_0x295f('0x41')]['WhatsappInteractionId']=_0x3e3c3f['id'];if(_0x56e539['query'][_0x295f('0x7d')]){_0x4e24c7[_0x295f('0x41')]=_[_0x295f('0x94')](_0x4e24c7[_0x295f('0x41')],{'$or':_[_0x295f('0x2d')](_0x4e24c7[_0x295f('0x3b')],function(_0x32bd91){var _0x3d9e57={};_0x3d9e57[_0x32bd91]={'$like':'%'+_0x56e539[_0x295f('0x38')][_0x295f('0x7d')]+'%'};return _0x3d9e57;})});}if(_0x56e539[_0x295f('0x38')][_0x295f('0x74')]){var _0x2ba9c5=_0x56e539[_0x295f('0x38')][_0x295f('0x74')][_0x295f('0x30')](',');var _0x1d000c={};_0x1d000c[_0x2ba9c5[0x0]]={'$gte':moment(_0x2ba9c5[0x1])[_0x295f('0xb8')](_0x295f('0xb9'))};_0x4e24c7[_0x295f('0x41')]=_[_0x295f('0x94')](_0x4e24c7['where'],_0x1d000c);}_0x4e24c7=_[_0x295f('0x94')]({},_0x4e24c7,_0x56e539[_0x295f('0xad')]);return db[_0x295f('0xb5')][_0x295f('0x25')]({'where':_0x4e24c7[_0x295f('0x41')]})['then'](function(_0x578af7){_0x105e96[_0x295f('0x25')]=_0x578af7;if(_0x56e539[_0x295f('0x38')][_0x295f('0xba')]){_0x4e24c7[_0x295f('0xac')]=[{'all':!![]}];}return db[_0x295f('0xb5')][_0x295f('0xbb')](_0x4e24c7);})[_0x295f('0x28')](function(_0x129553){_0x105e96[_0x295f('0xbc')]=_0x129553;return _0x105e96;});}})['then'](respondWithFilteredResult(_0x1b0101,_0x4e24c7))[_0x295f('0x32')](handleError(_0x1b0101,null));};exports['addTags']=function(_0x163f20,_0x2a7a62,_0x21519f){return db[_0x295f('0x33')]['find']({'where':{'id':_0x163f20[_0x295f('0xab')]['id']}})[_0x295f('0x28')](handleEntityNotFound(_0x2a7a62,null))['then'](function(_0x5dedc8){if(_0x5dedc8){return _0x5dedc8['setTags'](_0x163f20[_0x295f('0x6d')]['ids'],_[_0x295f('0xb2')](_0x163f20['body'],['ids','id'])||{})['spread'](function(){return db[_0x295f('0x67')][_0x295f('0xbb')]({'attributes':['id',_0x295f('0x2b'),_0x295f('0xbd')],'where':{'id':_0x163f20[_0x295f('0x6d')]['ids']}});})[_0x295f('0x28')](function(_0x2e89ae){socket[_0x295f('0xbe')]('whatsappInteractionTags:save',{'id':Number(_0x163f20[_0x295f('0xab')]['id']),'tags':_0x2e89ae||[]});return{'id':Number(_0x163f20[_0x295f('0xab')]['id']),'tags':_0x2e89ae||[]};});}})[_0x295f('0x28')](respondWithResult(_0x2a7a62,null))[_0x295f('0x32')](handleError(_0x2a7a62,null));};exports[_0x295f('0xbf')]=function(_0x352265,_0x4666ac,_0x5ece69){return db[_0x295f('0x33')][_0x295f('0x5a')]({'where':{'id':_0x352265['params']['id']}})[_0x295f('0x28')](handleEntityNotFound(_0x4666ac,null))[_0x295f('0x28')](function(_0x32e367){if(_0x32e367){return _0x32e367[_0x295f('0xbf')](_0x352265[_0x295f('0x38')][_0x295f('0xb1')]);}})['then'](respondWithStatusCode(_0x4666ac,null))[_0x295f('0x32')](handleError(_0x4666ac,null));};exports[_0x295f('0xc0')]=function(_0x4cde8c,_0x5b527a){var _0x5c421b=moment()[_0x295f('0xc1')]()[_0x295f('0x91')]();var _0x4293d7=path[_0x295f('0xc2')](config[_0x295f('0xc3')],_0x295f('0xc4'),_0x295f('0xc5'),'tmp');var _0x2c5926=path[_0x295f('0xc2')](config[_0x295f('0xc3')],_0x295f('0xc4'),_0x295f('0xc5'),'attachments');var _0x501000=path[_0x295f('0xc2')](_0x4293d7,_0x5c421b);var _0x370273=util[_0x295f('0xb8')]('transcript-%d-%s.zip',_0x4cde8c['params']['id'],_0x5c421b);var _0x414311=path[_0x295f('0xc2')](_0x4293d7,_0x370273);var _0x1188c6=[];_0x1188c6[_0x295f('0xc6')]({'model':db['User'],'as':'User','attributes':['id','fullname'],'raw':!![]});_0x1188c6[_0x295f('0xc6')]({'model':db[_0x295f('0xc7')],'as':'Contact','attributes':['id','firstName',_0x295f('0xc8')],'raw':!![]});if(_0x4cde8c[_0x295f('0x38')][_0x295f('0xc9')]){_0x1188c6[_0x295f('0xc6')]({'model':db['Attachment'],'as':_0x295f('0xca'),'raw':!![]});}var _0x57a7db=[{'model':db[_0x295f('0xb5')],'as':_0x295f('0xcb'),'attributes':['id',_0x295f('0x6d'),_0x295f('0x73'),_0x295f('0xcc'),'secret','read'],'include':_0x1188c6}];_0x57a7db[_0x295f('0xc6')]({'model':db['WhatsappAccount'],'as':_0x295f('0xcd'),'attributes':['id',_0x295f('0x2b')]});_0x57a7db[_0x295f('0xc6')]({'model':db['User'],'as':_0x295f('0xce'),'attributes':['id',_0x295f('0xcf')]});return db[_0x295f('0x33')][_0x295f('0x5a')]({'where':{'id':_0x4cde8c['params']['id']},'include':_0x57a7db})['then'](handleEntityNotFound(_0x5b527a,null))[_0x295f('0x28')](function(_0x4d4ec6){if(_0x4d4ec6){var _0x5f3576=_0x4d4ec6[_0x295f('0xd0')]({'plain':!![]});fs[_0x295f('0xd1')](_0x501000);var _0xac82c0={'channel':_0x295f('0xd2'),'account':_0x5f3576[_0x295f('0xcd')][_0x295f('0x2b')],'agent':_0x5f3576[_0x295f('0xce')]?_0x5f3576[_0x295f('0xce')][_0x295f('0xcf')]:_0x295f('0xd3'),'createdAt':moment(_0x5f3576['createdAt'])[_0x295f('0xb8')](_0x295f('0xb9'))[_0x295f('0x91')](),'closedAt':_0x5f3576[_0x295f('0xd4')]?moment(_0x5f3576['closedAt'])[_0x295f('0xb8')](_0x295f('0xb9'))['toString']():'','disposition':_0x5f3576[_0x295f('0xd5')],'messages':_(_0x5f3576['Messages'])['filter']({'secret':![]})[_0x295f('0x2d')](function(_0x5e82bd){if(_0x5e82bd[_0x295f('0xca')]){var _0x28e557=path['join'](_0x2c5926,_0x5e82bd[_0x295f('0xca')][_0x295f('0xd6')]);if(fs[_0x295f('0xd7')](_0x28e557)){fs[_0x295f('0xd8')](_0x28e557)[_0x295f('0xd9')](fs[_0x295f('0xda')](path[_0x295f('0xc2')](_0x501000,_0x5e82bd[_0x295f('0xca')][_0x295f('0xd6')])));}}return{'date':moment(_0x5e82bd['createdAt'])['format'](_0x295f('0xb9'))[_0x295f('0x91')](),'sender':_0x5e82bd[_0x295f('0xcc')]===_0x295f('0xdb')?_0x5e82bd['User']?_0x5e82bd[_0x295f('0x6a')]['fullname']:_0x295f('0xdc'):_0x5e82bd[_0x295f('0xdd')][_0x295f('0xde')]+(_0x5e82bd[_0x295f('0xdd')]['lastName']?'\x20'+_0x5e82bd[_0x295f('0xdd')][_0x295f('0xc8')]:''),'body':_0x5e82bd[_0x295f('0xca')]?_0x5e82bd['Attachment']['basename']:_0x5e82bd[_0x295f('0x6d')],'direction':_0x5e82bd[_0x295f('0xcc')]==='out'?'A':'C','secret':_0x5e82bd[_0x295f('0xdf')],'read':_0x5e82bd[_0x295f('0x78')],'attachment':_0x5e82bd[_0x295f('0xca')]};})[_0x295f('0x5c')]()};return ejs[_0x295f('0xe0')](path[_0x295f('0xc2')](config[_0x295f('0xc3')],_0x295f('0xc4'),_0x295f('0xe1'),'downloadInteraction.ejs'),{'interaction':_0xac82c0})[_0x295f('0x28')](function(_0x33bab6){var _0x4f4667=path[_0x295f('0xc2')](_0x501000,_0x295f('0xe2')+_0x5f3576['id']+'-'+_0x5c421b+_0x295f('0xe3'));var _0x36dbe8={'path':_0x4f4667,'channel':_0x295f('0xd2'),'interactionId':_0x5f3576['id']};return pdf['createPdfFromHTML'](_0x33bab6,_0x36dbe8);})[_0x295f('0x28')](function(){return new BPromise(function(_0x28c66c,_0x250a15){zipdir(_0x501000,{'saveTo':_0x414311},function(_0x57babf,_0x2353b4){if(_0x57babf)return _0x250a15(_0x57babf);return _0x28c66c(_0x2353b4);});})[_0x295f('0x28')](function(){return new BPromise(function(_0x503695,_0x279661){rimraf(_0x501000,function(_0x37ba51){if(_0x37ba51)_0x279661(_0x37ba51);return _0x503695();});});})[_0x295f('0x28')](function(){return _0x5b527a[_0x295f('0xc0')](_0x414311,_0x370273,function(_0x2838dc){if(_0x2838dc){console['log'](_0x295f('0xe4'),_0x2838dc);}else{fs[_0x295f('0xe5')](_0x414311);}});});});}else{return _0x5b527a[_0x295f('0x1e')](0xc8);}})[_0x295f('0x32')](handleError(_0x5b527a,null));};
\ No newline at end of file
+var _0x668b=['o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','toString','ui.WhatsappInteractionId\x20IN\x20?','WhatsappInteractionId','show','includeAll','include','options','create','destroy','describe','addMessage','WhatsappMessage','ids','omit','getMessages','findOne','params','pick','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','findAll','whatsappInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','push','CmContact','lastName','Attachment','Messages','direction','secret','WhatsappAccount','Account','Owner','get','mkdirSync','N.A.','closed','closedAt','disposition','createReadStream','pipe','createWriteStream','basename','out','System','firstName','views','downloadInteraction.ejs','transcript-','.pdf','Whatsapp','log','err','unlinkSync','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','end','offset','limit','count','set','Content-Range','apply','reject','save','update','then','error','name','send','map','fullname','TagIds','Tags','forEach','catch','index','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','select','field','color','from','tools_tags','u.id','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','left_join','users','whatsapp_interactions','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','conditions','length','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','buildExpression','type','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','body','some','compact','isEmpty','WhatsappAccountId','where','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','order','contactName','DESC','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','i.WhatsappAccountId\x20IS\x20NULL','agent','sequelize','keyBy','merge','WhatsappInteraction','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','Contact.mobile','c.fax','Contact.fax'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x668b,0x140));var _0xb668=function(_0x39a2d6,_0x477459){_0x39a2d6=_0x39a2d6-0x0;var _0x23af66=_0x668b[_0x39a2d6];return _0x23af66;};'use strict';var emlformat=require(_0xb668('0x0'));var rimraf=require(_0xb668('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb668('0x2'));var rp=require(_0xb668('0x3'));var moment=require('moment');var BPromise=require(_0xb668('0x4'));var Mustache=require('mustache');var util=require(_0xb668('0x5'));var path=require(_0xb668('0x6'));var sox=require(_0xb668('0x7'));var csv=require('to-csv');var ejs=require(_0xb668('0x8'));var fs=require('fs');var fs_extra=require(_0xb668('0x9'));var _=require(_0xb668('0xa'));var squel=require(_0xb668('0xb'));var crypto=require(_0xb668('0xc'));var jsforce=require(_0xb668('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xb668('0xe'));var querystring=require(_0xb668('0xf'));var Papa=require(_0xb668('0x10'));var Redis=require(_0xb668('0x11'));var authService=require(_0xb668('0x12'));var qs=require(_0xb668('0x13'));var as=require(_0xb668('0x14'));var pdf=require(_0xb668('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb668('0x16'))(_0xb668('0x17'));var utils=require(_0xb668('0x18'));var config=require(_0xb668('0x19'));var licenseUtil=require(_0xb668('0x1a'));var db=require(_0xb668('0x1b'))['db'];config[_0xb668('0x1c')]=_[_0xb668('0x1d')](config[_0xb668('0x1c')],{'host':_0xb668('0x1e'),'port':0x18eb});var socket=require(_0xb668('0x1f'))(new Redis(config[_0xb668('0x1c')]));require(_0xb668('0x20'))[_0xb668('0x21')](socket);function respondWithStatusCode(_0x2ec706,_0x3b0c84){_0x3b0c84=_0x3b0c84||0xcc;return function(_0x1ca6e7){if(_0x1ca6e7){return _0x2ec706[_0xb668('0x22')](_0x3b0c84);}return _0x2ec706[_0xb668('0x23')](_0x3b0c84)[_0xb668('0x24')]();};}function respondWithResult(_0xd3e39f,_0x27bbfa){_0x27bbfa=_0x27bbfa||0xc8;return function(_0x4ab137){if(_0x4ab137){return _0xd3e39f[_0xb668('0x23')](_0x27bbfa)['json'](_0x4ab137);}};}function respondWithFilteredResult(_0x30742a,_0x89fe72){return function(_0x5438ff){if(_0x5438ff){var _0x38595d=typeof _0x89fe72[_0xb668('0x25')]==='undefined'&&typeof _0x89fe72[_0xb668('0x26')]==='undefined';var _0x12fb3f=_0x5438ff[_0xb668('0x27')];var _0x253ba5=_0x38595d?0x0:_0x89fe72[_0xb668('0x25')];var _0x5d33ae=_0x38595d?_0x5438ff[_0xb668('0x27')]:_0x89fe72[_0xb668('0x25')]+_0x89fe72[_0xb668('0x26')];var _0x52de83;if(_0x5d33ae>=_0x12fb3f){_0x5d33ae=_0x12fb3f;_0x52de83=0xc8;}else{_0x52de83=0xce;}_0x30742a['status'](_0x52de83);return _0x30742a[_0xb668('0x28')](_0xb668('0x29'),_0x253ba5+'-'+_0x5d33ae+'/'+_0x12fb3f)['json'](_0x5438ff);}return null;};}function patchUpdates(_0x61de4a){return function(_0x4bf863){try{jsonpatch[_0xb668('0x2a')](_0x4bf863,_0x61de4a,!![]);}catch(_0x4bd365){return BPromise[_0xb668('0x2b')](_0x4bd365);}return _0x4bf863[_0xb668('0x2c')]();};}function saveUpdates(_0x3f84c7,_0x3231b2){return function(_0x2a5b3d){if(_0x2a5b3d){return _0x2a5b3d[_0xb668('0x2d')](_0x3f84c7)['then'](function(_0x23084d){return _0x23084d;});}return null;};}function removeEntity(_0x10d767,_0x2ab8c2){return function(_0x49abfd){if(_0x49abfd){return _0x49abfd['destroy']()[_0xb668('0x2e')](function(){_0x10d767[_0xb668('0x23')](0xcc)[_0xb668('0x24')]();});}};}function handleEntityNotFound(_0x5a67e9,_0x3a2543){return function(_0x39a129){if(!_0x39a129){_0x5a67e9[_0xb668('0x22')](0x194);}return _0x39a129;};}function handleError(_0x4c78a0,_0x5709e2){_0x5709e2=_0x5709e2||0x1f4;return function(_0x12919c){logger[_0xb668('0x2f')](_0x12919c['stack']);if(_0x12919c[_0xb668('0x30')]){delete _0x12919c[_0xb668('0x30')];}_0x4c78a0[_0xb668('0x23')](_0x5709e2)[_0xb668('0x31')](_0x12919c);};}function getInteractionUsers(_0x256a8,_0x5f36b5){return new BPromise(function(_0x138ee5,_0x3bd27c){try{if(_0x5f36b5[_0x256a8['id']]){_0x256a8['Users']=_[_0xb668('0x32')](_0x5f36b5[_0x256a8['id']],function(_0x52a946){return{'id':_0x52a946['id'],'fullname':_0x52a946[_0xb668('0x33')]};});}}catch(_0x406cc5){_0x3bd27c(_0x406cc5);}_0x138ee5(_0x256a8);});}function getInteractionTags(_0x467fea,_0x3ddd5d){return new BPromise(function(_0x2e40dd,_0x655536){try{if(_0x467fea[_0xb668('0x34')]){_0x467fea[_0xb668('0x35')]=[];_0x467fea[_0xb668('0x34')]['split'](',')[_0xb668('0x36')](function(_0x13bc2b){_0x467fea[_0xb668('0x35')]['push'](_0x3ddd5d[_0x13bc2b]);});}delete _0x467fea[_0xb668('0x34')];}catch(_0x203ea0){_0x655536(_0x203ea0);}_0x2e40dd(_0x467fea);});}function updateWhatsappInteraction(_0x58cacf,_0x68d980,_0x500f4e){return new BPromise(function(_0xb989a3,_0x423088){return getInteractionUsers(_0x58cacf,_0x500f4e)[_0xb668('0x2e')](function(_0x2f6edb){return getInteractionTags(_0x2f6edb,_0x68d980);})[_0xb668('0x2e')](function(_0xe10c43){_0xb989a3(_0xe10c43);})[_0xb668('0x37')](function(_0x5a9134){_0x423088(_0x5a9134);});});}exports[_0xb668('0x38')]=function(_0x19de9f,_0x5a9a55){var _0xede795={},_0x5ef681={},_0x48888d={'count':0x0,'rows':[]};var _0x39fa1a=_[_0xb668('0x32')](db['WhatsappInteraction'][_0xb668('0x39')],function(_0x510f93){return{'name':_0x510f93[_0xb668('0x3a')],'type':_0x510f93['type']['key']};});_0x5ef681[_0xb668('0x3b')]=_[_0xb668('0x32')](_0x39fa1a,'name');_0x5ef681['query']=_[_0xb668('0x3c')](_0x19de9f[_0xb668('0x3d')]);_0x5ef681[_0xb668('0x3e')]=_[_0xb668('0x3f')](_0x5ef681[_0xb668('0x3b')],_0x5ef681['query']);_0xede795['attributes']=_[_0xb668('0x3f')](_0x5ef681[_0xb668('0x3b')],qs[_0xb668('0x40')](_0x19de9f[_0xb668('0x3d')][_0xb668('0x40')]));_0xede795[_0xb668('0x41')]=_0xede795['attributes']['length']?_0xede795[_0xb668('0x41')]:_0x5ef681[_0xb668('0x3b')];if(!_0x19de9f[_0xb668('0x3d')][_0xb668('0x42')](_0xb668('0x43'))){_0xede795['limit']=qs[_0xb668('0x26')](_0x19de9f[_0xb668('0x3d')]['limit']);_0xede795[_0xb668('0x25')]=qs[_0xb668('0x25')](_0x19de9f[_0xb668('0x3d')][_0xb668('0x25')]);}_0xede795['order']=qs['sort'](_0x19de9f['query'][_0xb668('0x44')]);_0xede795['where']=qs['filters'](_['pick'](_0x19de9f['query'],_0x5ef681[_0xb668('0x3e')]),_0x39fa1a);var _0x4874a8=[];var _0x14b269=squel[_0xb668('0x45')]()[_0xb668('0x46')]('id')[_0xb668('0x46')](_0xb668('0x30'))['field'](_0xb668('0x47'))[_0xb668('0x48')](_0xb668('0x49'));var _0x155b43=squel[_0xb668('0x45')]()[_0xb668('0x46')](_0xb668('0x4a'))[_0xb668('0x46')](_0xb668('0x4b'))[_0xb668('0x46')](_0xb668('0x4c'))['from'](_0xb668('0x4d'),'ui')[_0xb668('0x4e')](_0xb668('0x4f'),'u','u.id\x20=\x20ui.UserId');var _0x47a769=squel[_0xb668('0x45')]()['from'](_0xb668('0x50'),'i')['left_join']('cm_contacts','c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xb668('0x4e')](_0xb668('0x4f'),'o','o.id\x20=\x20i.UserId')[_0xb668('0x4e')](_0xb668('0x51'),'a',_0xb668('0x52'))[_0xb668('0x4e')](_0xb668('0x53'),'me',_0xb668('0x54'))[_0xb668('0x4e')](_0xb668('0x55'),'it',_0xb668('0x56'))[_0xb668('0x4e')]('tools_tags','t',_0xb668('0x57'));var _0x415aba=squel[_0xb668('0x58')]();var _0x175106=[];var _0x44f280=squel[_0xb668('0x58')]();var _0x381694;if(_0x19de9f[_0xb668('0x3d')][_0xb668('0x59')]){_0x381694=as['parseSearch'](_0x19de9f[_0xb668('0x3d')][_0xb668('0x59')]);var _0x2e906d=_0x381694['sqlOperator'];for(var _0x5c4e1a=0x0;_0x5c4e1a<_0x381694[_0xb668('0x5a')][_0xb668('0x5b')];_0x5c4e1a++){var _0x36222a=_0x381694['conditions'][_0x5c4e1a];var _0x17054f='i';var _0x5ad4cd=_['find'](_0x39fa1a,[_0xb668('0x30'),_0x36222a[_0xb668('0x46')]]);if(!_0x5ad4cd){switch(_0x36222a[_0xb668('0x46')]){case _0xb668('0x5c'):if(_0x36222a[_0xb668('0x5d')]==0x1){_0x47a769[_0xb668('0x5e')]('`'+_0x36222a[_0xb668('0x46')]+_0xb668('0x5f'));}else{_0x47a769[_0xb668('0x5e')]('`'+_0x36222a[_0xb668('0x46')]+_0xb668('0x60'));}break;case _0xb668('0x61'):if(_0x36222a[_0xb668('0x62')]===_0xb668('0x63')){if(_0x36222a[_0xb668('0x5d')][_0xb668('0x64')]('\x20')[_0xb668('0x5b')]>0x1){_0x415aba[_0x2e906d](_0xb668('0x65'),qs[_0xb668('0x66')](_0x36222a[_0xb668('0x5d')]),null);}else{var _0x3c1b83='%'+_0x36222a[_0xb668('0x5d')]+'%';_0x415aba[_0x2e906d](_0xb668('0x67'),_0x3c1b83,_0x3c1b83,_0x3c1b83);}}else{_0x5ad4cd=_[_0xb668('0x68')](_0x39fa1a,[_0xb668('0x30'),_0xb668('0x69')]);_0x36222a[_0xb668('0x46')]=_0xb668('0x69');_0xc82dfd=as[_0xb668('0x6a')](_0x17054f,_0x5ad4cd[_0xb668('0x6b')],_0x36222a);_0x415aba[_0x2e906d](_0xc82dfd['text'],_0xc82dfd[_0xb668('0x5d')][_0xb668('0x6c')],_0xc82dfd[_0xb668('0x5d')][_0xb668('0x24')]);}break;case _0xb668('0x6d'):var _0x30b536=_0x36222a[_0xb668('0x5d')][_0xb668('0x64')](',')[_0xb668('0x32')](function(_0x26993b){return Number(_0x26993b);});_0x30b536[_0xb668('0x36')](function(_0x348437){_0x44f280['or'](_0xb668('0x6e'),'%,'+_0x348437+',%');});_0x175106=_['union'](_0x175106,_0x30b536);break;case _0xb668('0x6f'):if(_0x36222a[_0xb668('0x62')]==='$substring'){_0x415aba[_0x2e906d](_0xb668('0x70'),'%'+_0x36222a[_0xb668('0x5d')]+'%',null);}else{_0x5ad4cd=_['find'](_0x39fa1a,[_0xb668('0x30'),_0xb668('0x71')]);_0x36222a['field']=_0xb668('0x71');_0xc82dfd=as['buildExpression'](_0x17054f,_0x5ad4cd[_0xb668('0x6b')],_0x36222a);_0x415aba[_0x2e906d](_0xc82dfd[_0xb668('0x72')],_0xc82dfd['value'][_0xb668('0x6c')],_0xc82dfd[_0xb668('0x5d')][_0xb668('0x24')]);}break;case _0xb668('0x73'):_0xc82dfd=as[_0xb668('0x6a')]('me',null,_0x36222a);_0x415aba[_0x2e906d](_0xc82dfd[_0xb668('0x72')],_0xc82dfd[_0xb668('0x5d')][_0xb668('0x6c')],_0xc82dfd[_0xb668('0x5d')]['end']);break;}}else{var _0xc82dfd=as[_0xb668('0x6a')](_0x17054f,_0x5ad4cd[_0xb668('0x6b')],_0x36222a);_0x415aba[_0x2e906d](_0xc82dfd[_0xb668('0x72')],_0xc82dfd[_0xb668('0x5d')]['start'],_0xc82dfd[_0xb668('0x5d')][_0xb668('0x24')]);}}}else{var _0x276288=_(_0x19de9f['query'])[_0xb668('0x3c')]()[_0xb668('0x32')](function(_0x409c8b){return _[_0xb668('0x74')](_0x39fa1a,['name',_0x409c8b])?_0x409c8b:undefined;})[_0xb668('0x75')]()[_0xb668('0x5d')]();if(!_[_0xb668('0x76')](_0x276288)){_0x276288['forEach'](function(_0xfaafb5){if(_0xfaafb5===_0xb668('0x77')){_0x47a769[_0xb668('0x78')](_0xb668('0x79'),[][_0xb668('0x7a')](_0x19de9f[_0xb668('0x3d')][_0xfaafb5]));}else if(_0xfaafb5===_0xb668('0x7b')){var _0x2ce26f=JSON[_0xb668('0x7c')](_0x19de9f['query'][_0xfaafb5])[_0xb668('0x7d')];var _0x5a9c76=JSON[_0xb668('0x7c')](_0x19de9f['query'][_0xfaafb5])[_0xb668('0x7e')];_0x47a769[_0xb668('0x78')](_0xb668('0x7f'),_0x2ce26f,_0x5a9c76);}else{if(_0x19de9f['query'][_0xfaafb5]===_0xb668('0x80')){_0x47a769[_0xb668('0x78')]('i.'+_0xfaafb5+_0xb668('0x81'));}else{_0x47a769[_0xb668('0x78')]('i.'+_0xfaafb5+_0xb668('0x82'),_0x19de9f[_0xb668('0x3d')][_0xfaafb5]);}}});}if(_0x19de9f[_0xb668('0x3d')][_0xb668('0x83')]){if(_0x19de9f[_0xb668('0x3d')][_0xb668('0x83')]==0x1){_0x47a769[_0xb668('0x5e')](_0xb668('0x84'));}else{_0x47a769[_0xb668('0x5e')](_0xb668('0x85'));}}if(_0x19de9f[_0xb668('0x3d')][_0xb668('0x86')]){_0x175106=_[_0xb668('0x87')](_0x19de9f[_0xb668('0x3d')][_0xb668('0x86')])?_0x19de9f[_0xb668('0x3d')]['tag']:new Array(_0x19de9f[_0xb668('0x3d')][_0xb668('0x86')]);_0x175106['forEach'](function(_0x128221){_0x44f280['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x128221+',%');});}if(_0x19de9f[_0xb668('0x3d')][_0xb668('0x88')]){var _0x562f04=_0x19de9f['query'][_0xb668('0x88')][_0xb668('0x89')]('\x5c','\x5c\x5c')[_0xb668('0x89')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x562f04)){_0x415aba['or'](_0xb668('0x8a'),_0x562f04+'%')['or'](_0xb668('0x8b'),_0x562f04+'%');}else{_0x415aba['or'](_0xb668('0x8c'),qs['getFullTextValue'](_0x562f04))['or'](_0xb668('0x8d'),_0x562f04+'%');}}}_0x47a769[_0xb668('0x78')](_0x415aba);_0x47a769[_0xb668('0x8e')](_0xb668('0x8f'));var _0x1dcbf3={'type':db[_0xb668('0x90')][_0xb668('0x91')][_0xb668('0x92')],'raw':!![]};var _0x23ad51=_0x47a769[_0xb668('0x93')]();_0x23ad51[_0xb668('0x46')]('i.id');_0x23ad51[_0xb668('0x46')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');if(_0xede795[_0xb668('0x94')]){_0xede795[_0xb668('0x94')][_0xb668('0x36')](function(_0x3aaeed){var _0x5dbf71=_0x3aaeed[0x0]===_0xb668('0x95')?_0x3aaeed[0x0]:'i.'+_0x3aaeed[0x0];_0x47a769['order'](_0x5dbf71,_0x3aaeed[0x1]===_0xb668('0x96')?![]:!![]);});}if(!_[_0xb668('0x76')](_0x175106)){_0x47a769[_0xb668('0x5e')](_0x44f280);_0x23ad51['where'](_0xb668('0x97'),_0x175106);}BPromise[_0xb668('0x98')]()[_0xb668('0x2e')](function(){if(!_0x381694){if(_0x19de9f['query'][_0xb668('0x77')])return;_0x23ad51[_0xb668('0x78')](_0xb668('0x99'));_0x47a769[_0xb668('0x78')]('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x19de9f[_0xb668('0x9a')][_0xb668('0x9b')]!=='agent')return;return _0x19de9f[_0xb668('0x9a')]['getWhatsappAccounts']({'attributes':['id'],'raw':!![]})[_0xb668('0x2e')](function(_0x35648d){if(_[_0xb668('0x76')](_0x35648d)){_0x23ad51[_0xb668('0x78')](_0xb668('0x9c'));_0x47a769['where']('i.WhatsappAccountId\x20IS\x20NULL');}else{_0x23ad51[_0xb668('0x78')](_0xb668('0x79'),_[_0xb668('0x32')](_0x35648d,'id'));_0x47a769[_0xb668('0x78')](_0xb668('0x79'),_[_0xb668('0x32')](_0x35648d,'id'));}});})[_0xb668('0x2e')](function(){if(_0x19de9f[_0xb668('0x9a')][_0xb668('0x9b')]===_0xb668('0x9d')&&!_0x381694&&!_0x19de9f[_0xb668('0x3d')]['WhatsappAccountId'])return[];return db[_0xb668('0x9e')][_0xb668('0x3d')](_0x23ad51['toString'](),_0x1dcbf3);})[_0xb668('0x2e')](function(_0x4592ca){_0x48888d[_0xb668('0x27')]=_0x4592ca[_0xb668('0x5b')];if(_0x48888d[_0xb668('0x27')]===0x0)return[];return db[_0xb668('0x9e')][_0xb668('0x3d')](_0x14b269['toString'](),_0x1dcbf3)[_0xb668('0x2e')](function(_0x530b92){_0x4874a8=_[_0xb668('0x9f')](_0x530b92,'id');_0x1dcbf3=_[_0xb668('0xa0')](_0x1dcbf3,{'model':db[_0xb668('0xa1')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x19de9f[_0xb668('0x3d')][_0xb668('0x40')]){_0xede795['attributes'][_0xb668('0x36')](function(_0x324066){_0x47a769[_0xb668('0x46')]('i.'+_0x324066);});}else{_0x47a769[_0xb668('0x46')](_0xb668('0xa2'),_0xb668('0x5c'));_0x47a769['field'](_0xb668('0xa3'),_0xb668('0xa4'));_0x47a769[_0xb668('0x46')](_0xb668('0xa5'),_0xb668('0xa6'));_0x47a769[_0xb668('0x46')](_0xb668('0xa7'),_0xb668('0x95'));_0x47a769['field'](_0xb668('0xa8'));_0x47a769[_0xb668('0x46')](_0xb668('0xa9'),'Contact.firstName');_0x47a769[_0xb668('0x46')]('c.lastName',_0xb668('0xaa'));_0x47a769[_0xb668('0x46')](_0xb668('0xab'),_0xb668('0xac'));_0x47a769[_0xb668('0x46')](_0xb668('0xad'),_0xb668('0xae'));_0x47a769['field']('c.mobile',_0xb668('0xaf'));_0x47a769[_0xb668('0x46')](_0xb668('0xb0'),_0xb668('0xb1'));_0x47a769[_0xb668('0x46')](_0xb668('0xb2'),_0xb668('0xb3'));_0x47a769[_0xb668('0x46')](_0xb668('0xb4'),_0xb668('0xb5'));_0x47a769[_0xb668('0x46')](_0xb668('0xb6'),_0xb668('0x34'));}if(_0xede795['limit'])_0x47a769[_0xb668('0x26')](_0xede795[_0xb668('0x26')]);if(_0xede795[_0xb668('0x25')])_0x47a769[_0xb668('0x25')](_0xede795[_0xb668('0x25')]);return db[_0xb668('0x9e')][_0xb668('0x3d')](_0x47a769[_0xb668('0xb7')](),_0x1dcbf3);})['then'](function(_0x1a43da){if(_0x1a43da['length']>0x0)_0x155b43['where'](_0xb668('0xb8'),_[_0xb668('0x32')](_0x1a43da,'id'));return db['sequelize'][_0xb668('0x3d')](_0x155b43['toString'](),_0x1dcbf3)[_0xb668('0x2e')](function(_0x45a77b){var _0xf9c1a6=_['groupBy'](_0x45a77b,_0xb668('0xb9'));var _0x43aec8=[];_0x1a43da[_0xb668('0x36')](function(_0xf5b01c){_0x43aec8['push'](updateWhatsappInteraction(_0xf5b01c,_0x4874a8,_0xf9c1a6));});return BPromise['all'](_0x43aec8);});});})[_0xb668('0x2e')](function(_0xd14e7f){_0x48888d['rows']=_0xd14e7f;return _0x48888d;})[_0xb668('0x2e')](respondWithFilteredResult(_0x5a9a55,_0xede795))['catch'](handleError(_0x5a9a55,null));};exports[_0xb668('0xba')]=function(_0x2f988c,_0x102265){var _0x19d55e={'raw':![],'where':{'id':_0x2f988c['params']['id']}},_0x506197={};_0x506197[_0xb668('0x3b')]=_[_0xb668('0x3c')](db[_0xb668('0xa1')]['rawAttributes']);_0x506197[_0xb668('0x3d')]=_[_0xb668('0x3c')](_0x2f988c[_0xb668('0x3d')]);_0x506197['filters']=_[_0xb668('0x3f')](_0x506197['model'],_0x506197[_0xb668('0x3d')]);_0x19d55e[_0xb668('0x41')]=_[_0xb668('0x3f')](_0x506197[_0xb668('0x3b')],qs[_0xb668('0x40')](_0x2f988c['query']['fields']));_0x19d55e[_0xb668('0x41')]=_0x19d55e[_0xb668('0x41')][_0xb668('0x5b')]?_0x19d55e[_0xb668('0x41')]:_0x506197['model'];if(_0x2f988c['query'][_0xb668('0xbb')]){_0x19d55e[_0xb668('0xbc')]=[{'all':!![]}];}_0x19d55e=_['merge']({},_0x19d55e,_0x2f988c[_0xb668('0xbd')]);return db[_0xb668('0xa1')][_0xb668('0x68')](_0x19d55e)[_0xb668('0x2e')](handleEntityNotFound(_0x102265,null))[_0xb668('0x2e')](respondWithResult(_0x102265,null))[_0xb668('0x37')](handleError(_0x102265,null));};exports[_0xb668('0xbe')]=function(_0x11c949,_0x206546){return db[_0xb668('0xa1')]['create'](_0x11c949[_0xb668('0x73')],{})[_0xb668('0x2e')](respondWithResult(_0x206546,0xc9))[_0xb668('0x37')](handleError(_0x206546,null));};exports[_0xb668('0x2d')]=function(_0x31bec3,_0x34576f){if(_0x31bec3[_0xb668('0x73')]['id']){delete _0x31bec3[_0xb668('0x73')]['id'];}return db[_0xb668('0xa1')][_0xb668('0x68')]({'where':{'id':_0x31bec3['params']['id']}})[_0xb668('0x2e')](handleEntityNotFound(_0x34576f,null))[_0xb668('0x2e')](saveUpdates(_0x31bec3['body'],null))[_0xb668('0x2e')](respondWithResult(_0x34576f,null))[_0xb668('0x37')](handleError(_0x34576f,null));};exports[_0xb668('0xbf')]=function(_0x4c599d,_0x1fa9f1){return db[_0xb668('0xa1')]['find']({'where':{'id':_0x4c599d['params']['id']}})[_0xb668('0x2e')](handleEntityNotFound(_0x1fa9f1,null))[_0xb668('0x2e')](removeEntity(_0x1fa9f1,null))['catch'](handleError(_0x1fa9f1,null));};exports[_0xb668('0xc0')]=function(_0x5507f9,_0x1a05b8){return db['WhatsappInteraction'][_0xb668('0xc0')]()[_0xb668('0x2e')](respondWithResult(_0x1a05b8,null))[_0xb668('0x37')](handleError(_0x1a05b8,null));};exports[_0xb668('0xc1')]=function(_0x47bf24,_0x37bb97,_0x2f8ae1){return db[_0xb668('0xc2')]['find']({'where':{'id':_0x47bf24['params']['id']}})[_0xb668('0x2e')](handleEntityNotFound(_0x37bb97,null))[_0xb668('0x2e')](function(_0x306b03){if(_0x306b03){return _0x306b03[_0xb668('0xc1')](_0x47bf24['body'][_0xb668('0xc3')],_[_0xb668('0xc4')](_0x47bf24[_0xb668('0x73')],['ids','id'])||{});}})[_0xb668('0x2e')](respondWithResult(_0x37bb97,null))[_0xb668('0x37')](handleError(_0x37bb97,null));};exports[_0xb668('0xc5')]=function(_0x4d170f,_0x44bd1d,_0x2b85b0){var _0x3c39dc={'raw':![],'where':{}};var _0x5431a8={};var _0x33d610={'count':0x0,'rows':[]};return db[_0xb668('0xa1')][_0xb668('0xc6')]({'where':{'id':_0x4d170f[_0xb668('0xc7')]['id']}})[_0xb668('0x2e')](handleEntityNotFound(_0x44bd1d,null))['then'](function(_0x1f636d){if(_0x1f636d){_0x5431a8['model']=_[_0xb668('0x3c')](db['WhatsappMessage'][_0xb668('0x39')]);_0x5431a8[_0xb668('0x3d')]=_[_0xb668('0x3c')](_0x4d170f[_0xb668('0x3d')]);_0x5431a8[_0xb668('0x3e')]=_[_0xb668('0x3f')](_0x5431a8[_0xb668('0x3b')],_0x5431a8[_0xb668('0x3d')]);_0x3c39dc[_0xb668('0x41')]=_['intersection'](_0x5431a8[_0xb668('0x3b')],qs[_0xb668('0x40')](_0x4d170f['query'][_0xb668('0x40')]));_0x3c39dc['attributes']=_0x3c39dc[_0xb668('0x41')][_0xb668('0x5b')]?_0x3c39dc[_0xb668('0x41')]:_0x5431a8['model'];if(!_0x4d170f[_0xb668('0x3d')][_0xb668('0x42')](_0xb668('0x43'))){_0x3c39dc['limit']=qs['limit'](_0x4d170f[_0xb668('0x3d')][_0xb668('0x26')]);_0x3c39dc[_0xb668('0x25')]=qs[_0xb668('0x25')](_0x4d170f[_0xb668('0x3d')][_0xb668('0x25')]);}_0x3c39dc[_0xb668('0x94')]=qs[_0xb668('0x44')](_0x4d170f['query'][_0xb668('0x44')]);_0x3c39dc[_0xb668('0x78')]=qs[_0xb668('0x3e')](_[_0xb668('0xc8')](_0x4d170f['query'],_0x5431a8['filters']));_0x3c39dc[_0xb668('0x78')][_0xb668('0xb9')]=_0x1f636d['id'];if(_0x4d170f[_0xb668('0x3d')]['filter']){_0x3c39dc[_0xb668('0x78')]=_[_0xb668('0xa0')](_0x3c39dc[_0xb668('0x78')],{'$or':_['map'](_0x3c39dc[_0xb668('0x41')],function(_0x43aa75){var _0x468de9={};_0x468de9[_0x43aa75]={'$like':'%'+_0x4d170f[_0xb668('0x3d')][_0xb668('0x88')]+'%'};return _0x468de9;})});}if(_0x4d170f[_0xb668('0x3d')][_0xb668('0x7d')]){var _0x22f997=_0x4d170f[_0xb668('0x3d')][_0xb668('0x7d')][_0xb668('0x64')](',');var _0x301856={};_0x301856[_0x22f997[0x0]]={'$gte':moment(_0x22f997[0x1])[_0xb668('0xc9')](_0xb668('0xca'))};_0x3c39dc[_0xb668('0x78')]=_[_0xb668('0xa0')](_0x3c39dc[_0xb668('0x78')],_0x301856);}_0x3c39dc=_[_0xb668('0xa0')]({},_0x3c39dc,_0x4d170f[_0xb668('0xbd')]);return db[_0xb668('0xc2')][_0xb668('0x27')]({'where':_0x3c39dc['where']})['then'](function(_0x5bc068){_0x33d610[_0xb668('0x27')]=_0x5bc068;if(_0x4d170f[_0xb668('0x3d')][_0xb668('0xbb')]){_0x3c39dc[_0xb668('0xbc')]=[{'all':!![]}];}return db[_0xb668('0xc2')]['findAll'](_0x3c39dc);})[_0xb668('0x2e')](function(_0x459d8d){_0x33d610[_0xb668('0xcb')]=_0x459d8d;return _0x33d610;});}})[_0xb668('0x2e')](respondWithFilteredResult(_0x44bd1d,_0x3c39dc))[_0xb668('0x37')](handleError(_0x44bd1d,null));};exports[_0xb668('0xcc')]=function(_0x36bd15,_0xdbcdbb,_0x312418){return db[_0xb668('0xa1')][_0xb668('0x68')]({'where':{'id':_0x36bd15[_0xb668('0xc7')]['id']}})[_0xb668('0x2e')](handleEntityNotFound(_0xdbcdbb,null))[_0xb668('0x2e')](function(_0x524534){if(_0x524534){return _0x524534[_0xb668('0xcd')](_0x36bd15[_0xb668('0x73')]['ids'],_[_0xb668('0xc4')](_0x36bd15['body'],[_0xb668('0xc3'),'id'])||{})['spread'](function(){return db[_0xb668('0x6d')][_0xb668('0xce')]({'attributes':['id',_0xb668('0x30'),_0xb668('0x47')],'where':{'id':_0x36bd15[_0xb668('0x73')][_0xb668('0xc3')]}});})[_0xb668('0x2e')](function(_0x304e6c){socket['emit'](_0xb668('0xcf'),{'id':Number(_0x36bd15['params']['id']),'tags':_0x304e6c||[]});return{'id':Number(_0x36bd15[_0xb668('0xc7')]['id']),'tags':_0x304e6c||[]};});}})[_0xb668('0x2e')](respondWithResult(_0xdbcdbb,null))[_0xb668('0x37')](handleError(_0xdbcdbb,null));};exports[_0xb668('0xd0')]=function(_0x42a8c7,_0x173af0,_0x52daa5){return db[_0xb668('0xa1')]['find']({'where':{'id':_0x42a8c7[_0xb668('0xc7')]['id']}})[_0xb668('0x2e')](handleEntityNotFound(_0x173af0,null))[_0xb668('0x2e')](function(_0x103031){if(_0x103031){return _0x103031[_0xb668('0xd0')](_0x42a8c7[_0xb668('0x3d')]['ids']);}})[_0xb668('0x2e')](respondWithStatusCode(_0x173af0,null))[_0xb668('0x37')](handleError(_0x173af0,null));};exports[_0xb668('0xd1')]=function(_0x43b986,_0x205e7b){var _0x4e6ce1=moment()[_0xb668('0xd2')]()[_0xb668('0xb7')]();var _0x5f4c8d=path[_0xb668('0xd3')](config[_0xb668('0xd4')],_0xb668('0xd5'),_0xb668('0xd6'),_0xb668('0xd7'));var _0xf0c5d8=path[_0xb668('0xd3')](config[_0xb668('0xd4')],_0xb668('0xd5'),_0xb668('0xd6'),_0xb668('0xd8'));var _0x36727=path[_0xb668('0xd3')](_0x5f4c8d,_0x4e6ce1);var _0x31d881=util[_0xb668('0xc9')](_0xb668('0xd9'),_0x43b986[_0xb668('0xc7')]['id'],_0x4e6ce1);var _0x3a37bd=path[_0xb668('0xd3')](_0x5f4c8d,_0x31d881);var _0x4c58bb=[];_0x4c58bb[_0xb668('0xda')]({'model':db[_0xb668('0x6f')],'as':_0xb668('0x6f'),'attributes':['id','fullname'],'raw':!![]});_0x4c58bb[_0xb668('0xda')]({'model':db[_0xb668('0xdb')],'as':'Contact','attributes':['id','firstName',_0xb668('0xdc')],'raw':!![]});if(_0x43b986['query']['attachments']){_0x4c58bb[_0xb668('0xda')]({'model':db[_0xb668('0xdd')],'as':_0xb668('0xdd'),'raw':!![]});}var _0x34778e=[{'model':db[_0xb668('0xc2')],'as':_0xb668('0xde'),'attributes':['id',_0xb668('0x73'),_0xb668('0x7b'),_0xb668('0xdf'),_0xb668('0xe0'),_0xb668('0x83')],'include':_0x4c58bb}];_0x34778e[_0xb668('0xda')]({'model':db[_0xb668('0xe1')],'as':_0xb668('0xe2'),'attributes':['id',_0xb668('0x30')]});_0x34778e[_0xb668('0xda')]({'model':db[_0xb668('0x6f')],'as':_0xb668('0xe3'),'attributes':['id',_0xb668('0x33')]});return db['WhatsappInteraction'][_0xb668('0x68')]({'where':{'id':_0x43b986['params']['id']},'include':_0x34778e})[_0xb668('0x2e')](handleEntityNotFound(_0x205e7b,null))[_0xb668('0x2e')](function(_0xf9b14){if(_0xf9b14){var _0x22a70a=_0xf9b14[_0xb668('0xe4')]({'plain':!![]});fs[_0xb668('0xe5')](_0x36727);var _0x992ef0={'channel':'Whatsapp','account':_0x22a70a['Account'][_0xb668('0x30')],'agent':_0x22a70a['Owner']?_0x22a70a[_0xb668('0xe3')]['fullname']:_0xb668('0xe6'),'createdAt':moment(_0x22a70a[_0xb668('0x7b')])['format'](_0xb668('0xca'))[_0xb668('0xb7')](),'closedAt':_0x22a70a[_0xb668('0xe7')]?moment(_0x22a70a[_0xb668('0xe8')])[_0xb668('0xc9')](_0xb668('0xca'))[_0xb668('0xb7')]():'','disposition':_0x22a70a[_0xb668('0xe9')],'messages':_(_0x22a70a[_0xb668('0xde')])[_0xb668('0x88')]({'secret':![]})[_0xb668('0x32')](function(_0x8dbce1){if(_0x8dbce1[_0xb668('0xdd')]){var _0x48c300=path[_0xb668('0xd3')](_0xf0c5d8,_0x8dbce1[_0xb668('0xdd')]['basename']);if(fs['existsSync'](_0x48c300)){fs[_0xb668('0xea')](_0x48c300)[_0xb668('0xeb')](fs[_0xb668('0xec')](path[_0xb668('0xd3')](_0x36727,_0x8dbce1[_0xb668('0xdd')][_0xb668('0xed')])));}}return{'date':moment(_0x8dbce1[_0xb668('0x7b')])['format'](_0xb668('0xca'))[_0xb668('0xb7')](),'sender':_0x8dbce1[_0xb668('0xdf')]===_0xb668('0xee')?_0x8dbce1['User']?_0x8dbce1[_0xb668('0x6f')][_0xb668('0x33')]:_0xb668('0xef'):_0x8dbce1[_0xb668('0x61')][_0xb668('0xf0')]+(_0x8dbce1[_0xb668('0x61')][_0xb668('0xdc')]?'\x20'+_0x8dbce1['Contact'][_0xb668('0xdc')]:''),'body':_0x8dbce1[_0xb668('0xdd')]?_0x8dbce1[_0xb668('0xdd')][_0xb668('0xed')]:_0x8dbce1[_0xb668('0x73')],'direction':_0x8dbce1[_0xb668('0xdf')]===_0xb668('0xee')?'A':'C','secret':_0x8dbce1[_0xb668('0xe0')],'read':_0x8dbce1[_0xb668('0x83')],'attachment':_0x8dbce1[_0xb668('0xdd')]};})[_0xb668('0x5d')]()};return ejs['renderFile'](path['join'](config[_0xb668('0xd4')],_0xb668('0xd5'),_0xb668('0xf1'),_0xb668('0xf2')),{'interaction':_0x992ef0})[_0xb668('0x2e')](function(_0x308224){var _0x592cab=path[_0xb668('0xd3')](_0x36727,_0xb668('0xf3')+_0x22a70a['id']+'-'+_0x4e6ce1+_0xb668('0xf4'));var _0x132417={'path':_0x592cab,'channel':_0xb668('0xf5'),'interactionId':_0x22a70a['id']};return pdf['createPdfFromHTML'](_0x308224,_0x132417);})[_0xb668('0x2e')](function(){return new BPromise(function(_0x460aa8,_0x8867a7){zipdir(_0x36727,{'saveTo':_0x3a37bd},function(_0xe11dfb,_0x13278a){if(_0xe11dfb)return _0x8867a7(_0xe11dfb);return _0x460aa8(_0x13278a);});})[_0xb668('0x2e')](function(){return new BPromise(function(_0x1a91ae,_0x41e468){rimraf(_0x36727,function(_0x573f72){if(_0x573f72)_0x41e468(_0x573f72);return _0x1a91ae();});});})[_0xb668('0x2e')](function(){return _0x205e7b['download'](_0x3a37bd,_0x31d881,function(_0xfb6b3a){if(_0xfb6b3a){console[_0xb668('0xf6')](_0xb668('0xf7'),_0xfb6b3a);}else{fs[_0xb668('0xf8')](_0x3a37bd);}});});});}else{return _0x205e7b[_0xb668('0x22')](0xc8);}})[_0xb668('0x37')](handleError(_0x205e7b,null));};
\ No newline at end of file
index 272e526..25ae48a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe28e=['length','emit','catch','hook','exports','events','../../mysqldb','WhatsappInteraction','WhatsappMessage','setMaxListeners','save','update','remove','then','setDataValue','Users','map','findAll','unreadMessages'];(function(_0x4ee04c,_0x3e0798){var _0x1c9ad1=function(_0x9ae612){while(--_0x9ae612){_0x4ee04c['push'](_0x4ee04c['shift']());}};_0x1c9ad1(++_0x3e0798);}(_0xe28e,0x1ba));var _0xee28=function(_0x5af2b0,_0x2e2a22){_0x5af2b0=_0x5af2b0-0x0;var _0x3c4eef=_0xe28e[_0x5af2b0];return _0x3c4eef;};'use strict';var EventEmitter=require(_0xee28('0x0'));var WhatsappInteraction=require(_0xee28('0x1'))['db'][_0xee28('0x2')];var WhatsappMessage=require(_0xee28('0x1'))['db'][_0xee28('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0xee28('0x4')](0x0);var events={'afterCreate':_0xee28('0x5'),'afterUpdate':_0xee28('0x6'),'afterDestroy':_0xee28('0x7')};function emitEvent(_0x40fdf8){return function(_0x1c7cb1,_0x43c350,_0x162d3f){_0x1c7cb1['getUsers']({'attributes':['id'],'raw':!![]})[_0xee28('0x8')](function(_0x30224a){_0x1c7cb1[_0xee28('0x9')](_0xee28('0xa'),_0x30224a[_0xee28('0xb')](function(_0x478b02){return{'id':_0x478b02['id']};}));return WhatsappMessage[_0xee28('0xc')]({'where':{'WhatsappInteractionId':_0x1c7cb1['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x5afe44){_0x1c7cb1['setDataValue'](_0xee28('0xd'),_0x5afe44[_0xee28('0xe')]);WhatsappInteractionEvents['emit'](_0x40fdf8+':'+_0x1c7cb1['id'],_0x1c7cb1);WhatsappInteractionEvents[_0xee28('0xf')](_0x40fdf8,_0x1c7cb1);_0x162d3f(null);})[_0xee28('0x10')](_0x162d3f(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappInteraction[_0xee28('0x11')](e,emitEvent(event));}}module[_0xee28('0x12')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0xb688=['map','findAll','then','unreadMessages','length','emit','hasOwnProperty','hook','exports','../../mysqldb','WhatsappInteraction','WhatsappMessage','setMaxListeners','save','remove','getUsers','setDataValue','Users'];(function(_0x5cda03,_0x249db1){var _0x4318d5=function(_0x1c839b){while(--_0x1c839b){_0x5cda03['push'](_0x5cda03['shift']());}};_0x4318d5(++_0x249db1);}(_0xb688,0xcf));var _0x8b68=function(_0x3e78e6,_0x145ff8){_0x3e78e6=_0x3e78e6-0x0;var _0x5e67a4=_0xb688[_0x3e78e6];return _0x5e67a4;};'use strict';var EventEmitter=require('events');var WhatsappInteraction=require(_0x8b68('0x0'))['db'][_0x8b68('0x1')];var WhatsappMessage=require(_0x8b68('0x0'))['db'][_0x8b68('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x8b68('0x3')](0x0);var events={'afterCreate':_0x8b68('0x4'),'afterUpdate':'update','afterDestroy':_0x8b68('0x5')};function emitEvent(_0x27925d){return function(_0x30f33d,_0x12d40e,_0x583d16){_0x30f33d[_0x8b68('0x6')]({'attributes':['id'],'raw':!![]})['then'](function(_0x37677d){_0x30f33d[_0x8b68('0x7')](_0x8b68('0x8'),_0x37677d[_0x8b68('0x9')](function(_0x132617){return{'id':_0x132617['id']};}));return WhatsappMessage[_0x8b68('0xa')]({'where':{'WhatsappInteractionId':_0x30f33d['id'],'direction':'in','read':![]},'raw':!![]});})[_0x8b68('0xb')](function(_0x21d944){_0x30f33d[_0x8b68('0x7')](_0x8b68('0xc'),_0x21d944[_0x8b68('0xd')]);WhatsappInteractionEvents[_0x8b68('0xe')](_0x27925d+':'+_0x30f33d['id'],_0x30f33d);WhatsappInteractionEvents[_0x8b68('0xe')](_0x27925d,_0x30f33d);_0x583d16(null);})['catch'](_0x583d16(null));};}for(var e in events){if(events[_0x8b68('0xf')](e)){var event=events[e];WhatsappInteraction[_0x8b68('0x10')](e,emitEvent(event));}}module[_0x8b68('0x11')]=WhatsappInteractionEvents;
\ No newline at end of file
index 5959833..fc531ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x221f=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./whatsappInteraction.attributes','exports','WhatsappInteraction','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util'];(function(_0x5627e1,_0x1b2dbf){var _0x2f013f=function(_0x142015){while(--_0x142015){_0x5627e1['push'](_0x5627e1['shift']());}};_0x2f013f(++_0x1b2dbf);}(_0x221f,0x14e));var _0xf221=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0x221f[_0x3b0731];return _0x4204d7;};'use strict';var _=require(_0xf221('0x0'));var util=require(_0xf221('0x1'));var logger=require(_0xf221('0x2'))(_0xf221('0x3'));var moment=require(_0xf221('0x4'));var BPromise=require(_0xf221('0x5'));var rp=require(_0xf221('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf221('0x7'));var config=require(_0xf221('0x8'));var attributes=require(_0xf221('0x9'));module[_0xf221('0xa')]=function(_0xf5457,_0xf6a412){return _0xf5457['define'](_0xf221('0xb'),attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x239d8c,_0xbe80bb,_0x53ed13){if(_0x239d8c[_0xf221('0xc')](_0xf221('0xd'))){_0x239d8c[_0xf221('0xe')]=moment()['format'](_0xf221('0xf'));}_0x53ed13(null,_0x239d8c);}}});};
\ No newline at end of file
+var _0x1671=['closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./whatsappInteraction.attributes','exports','define','WhatsappInteraction','whatsapp_interactions','changed','closed'];(function(_0x2af333,_0x54f43f){var _0x1f22a5=function(_0x15ff1b){while(--_0x15ff1b){_0x2af333['push'](_0x2af333['shift']());}};_0x1f22a5(++_0x54f43f);}(_0x1671,0xda));var _0x1167=function(_0x5ca69b,_0x38712c){_0x5ca69b=_0x5ca69b-0x0;var _0x44434b=_0x1671[_0x5ca69b];return _0x44434b;};'use strict';var _=require(_0x1167('0x0'));var util=require(_0x1167('0x1'));var logger=require(_0x1167('0x2'))(_0x1167('0x3'));var moment=require(_0x1167('0x4'));var BPromise=require(_0x1167('0x5'));var rp=require(_0x1167('0x6'));var fs=require('fs');var path=require(_0x1167('0x7'));var rimraf=require(_0x1167('0x8'));var config=require('../../config/environment');var attributes=require(_0x1167('0x9'));module[_0x1167('0xa')]=function(_0x46fd7e,_0x27f21a){return _0x46fd7e[_0x1167('0xb')](_0x1167('0xc'),attributes,{'tableName':_0x1167('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x48f044,_0x2da76e,_0x17738e){if(_0x48f044[_0x1167('0xe')](_0x1167('0xf'))){_0x48f044[_0x1167('0x10')]=moment()['format'](_0x1167('0x11'));}_0x17738e(null,_0x48f044);}}});};
\ No newline at end of file
index 2af231f..55e9ea7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf62f=['AddTags','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','http','redis','defaults','socket.io-emitter','./whatsappInteraction.socket','register','request','then','info','request\x20sent','debug','error','WhatsappInteraction,\x20%s,\x20%s','message','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','body','options','where','attributes','limit','stringify','AddTagsToWhatsappInteraction','find','ids'];(function(_0x48ed8c,_0x298f37){var _0x55bbee=function(_0x607804){while(--_0x607804){_0x48ed8c['push'](_0x48ed8c['shift']());}};_0x55bbee(++_0x298f37);}(_0xf62f,0x173));var _0xff62=function(_0x242b1e,_0x5ccb20){_0x242b1e=_0x242b1e-0x0;var _0xe9e3ac=_0xf62f[_0x242b1e];return _0xe9e3ac;};'use strict';var _=require('lodash');var util=require(_0xff62('0x0'));var moment=require(_0xff62('0x1'));var BPromise=require(_0xff62('0x2'));var rs=require(_0xff62('0x3'));var fs=require('fs');var Redis=require(_0xff62('0x4'));var db=require(_0xff62('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xff62('0x6'))(_0xff62('0x7'));var config=require('../../config/environment');var jayson=require(_0xff62('0x8'));var client=jayson['client'][_0xff62('0x9')]({'port':0x232a});config[_0xff62('0xa')]=_[_0xff62('0xb')](config[_0xff62('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xff62('0xc'))(new Redis(config[_0xff62('0xa')]));require(_0xff62('0xd'))[_0xff62('0xe')](socket);function respondWithRpcPromise(_0x66d4bd,_0x5f5286,_0x38ba94){return new BPromise(function(_0x1c4a52,_0x3568b2){return client[_0xff62('0xf')](_0x66d4bd,_0x38ba94)[_0xff62('0x10')](function(_0x285dea){logger[_0xff62('0x11')]('WhatsappInteraction,\x20%s,\x20%s',_0x5f5286,_0xff62('0x12'));logger[_0xff62('0x13')]('WhatsappInteraction,\x20%s,\x20%s,\x20%s',_0x5f5286,_0xff62('0x12'),JSON['stringify'](_0x285dea));if(_0x285dea[_0xff62('0x14')]){if(_0x285dea['error']['code']===0x1f4){logger[_0xff62('0x14')](_0xff62('0x15'),_0x5f5286,_0x285dea[_0xff62('0x14')]['message']);return _0x3568b2(_0x285dea[_0xff62('0x14')][_0xff62('0x16')]);}logger[_0xff62('0x14')](_0xff62('0x15'),_0x5f5286,_0x285dea['error'][_0xff62('0x16')]);return _0x1c4a52(_0x285dea[_0xff62('0x14')]['message']);}else{logger[_0xff62('0x11')](_0xff62('0x15'),_0x5f5286,_0xff62('0x12'));_0x1c4a52(_0x285dea['result']['message']);}})[_0xff62('0x17')](function(_0x3cd3fd){logger['error'](_0xff62('0x15'),_0x5f5286,_0x3cd3fd);_0x3568b2(_0x3cd3fd);});});}exports[_0xff62('0x18')]=function(_0x1a24b7){var _0x1b34f8=this;return new Promise(function(_0x41b49f,_0x3cccda){return db[_0xff62('0x19')][_0xff62('0x1a')](_0x1a24b7[_0xff62('0x1b')],{'raw':_0x1a24b7[_0xff62('0x1c')]?_0x1a24b7['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1a24b7['options']?_0x1a24b7[_0xff62('0x1c')][_0xff62('0x1d')]||null:null,'attributes':_0x1a24b7['options']?_0x1a24b7[_0xff62('0x1c')][_0xff62('0x1e')]||null:null,'limit':_0x1a24b7['options']?_0x1a24b7['options'][_0xff62('0x1f')]||null:null})[_0xff62('0x10')](function(_0x528e06){logger['info'](_0xff62('0x18'),_0x1a24b7);logger[_0xff62('0x13')]('UpdateWhatsappInteraction',_0x1a24b7,JSON[_0xff62('0x20')](_0x528e06));_0x41b49f(_0x528e06);})['catch'](function(_0x4872ba){logger[_0xff62('0x14')](_0xff62('0x18'),_0x4872ba[_0xff62('0x16')],_0x1a24b7);_0x3cccda(_0x1b34f8[_0xff62('0x14')](0x1f4,_0x4872ba['message']));});});};exports[_0xff62('0x21')]=function(_0x3f697e){return new Promise(function(_0x3cb433,_0x2b051f){return db[_0xff62('0x19')][_0xff62('0x22')]({'where':_0x3f697e[_0xff62('0x1c')]?_0x3f697e[_0xff62('0x1c')][_0xff62('0x1d')]||null:null})[_0xff62('0x10')](function(_0x5cb746){if(_0x5cb746){return _0x5cb746['addTags'](_0x3f697e[_0xff62('0x1b')]['ids'],_['omit'](_0x3f697e[_0xff62('0x1b')],[_0xff62('0x23'),'id'])||{});}})['spread'](function(_0xa7718f){logger[_0xff62('0x11')](_0xff62('0x24'),_0x3f697e);logger[_0xff62('0x13')](_0xff62('0x24'),_0x3f697e,JSON[_0xff62('0x20')](_0xa7718f));_0x3cb433(_0xa7718f);})[_0xff62('0x17')](function(_0xb1e115){logger[_0xff62('0x14')](_0xff62('0x24'),_0xb1e115[_0xff62('0x16')],_0x3f697e);_0x2b051f(_this[_0xff62('0x14')](0x1f4,_0xb1e115[_0xff62('0x16')]));});});};
\ No newline at end of file
+var _0xf685=['attributes','limit','AddTagsToWhatsappInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','register','request','info','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','WhatsappInteraction,\x20%s,\x20%s','UpdateWhatsappInteraction','WhatsappInteraction','body','options','where'];(function(_0x38e603,_0x5aaf90){var _0x550718=function(_0x4526da){while(--_0x4526da){_0x38e603['push'](_0x38e603['shift']());}};_0x550718(++_0x5aaf90);}(_0xf685,0xa9));var _0x5f68=function(_0x2be9bd,_0xabd12d){_0x2be9bd=_0x2be9bd-0x0;var _0x20c3a1=_0xf685[_0x2be9bd];return _0x20c3a1;};'use strict';var _=require(_0x5f68('0x0'));var util=require(_0x5f68('0x1'));var moment=require(_0x5f68('0x2'));var BPromise=require(_0x5f68('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5f68('0x4'));var db=require(_0x5f68('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x5f68('0x6'))(_0x5f68('0x7'));var config=require(_0x5f68('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0x5f68('0x9')]=_['defaults'](config['redis'],{'host':_0x5f68('0xa'),'port':0x18eb});var socket=require(_0x5f68('0xb'))(new Redis(config['redis']));require(_0x5f68('0xc'))[_0x5f68('0xd')](socket);function respondWithRpcPromise(_0x1aba40,_0x6dc422,_0x3c613f){return new BPromise(function(_0x4fa00f,_0x3c4e01){return client[_0x5f68('0xe')](_0x1aba40,_0x3c613f)['then'](function(_0x34cbab){logger[_0x5f68('0xf')]('WhatsappInteraction,\x20%s,\x20%s',_0x6dc422,_0x5f68('0x10'));logger[_0x5f68('0x11')](_0x5f68('0x12'),_0x6dc422,_0x5f68('0x10'),JSON[_0x5f68('0x13')](_0x34cbab));if(_0x34cbab[_0x5f68('0x14')]){if(_0x34cbab[_0x5f68('0x14')][_0x5f68('0x15')]===0x1f4){logger['error']('WhatsappInteraction,\x20%s,\x20%s',_0x6dc422,_0x34cbab[_0x5f68('0x14')][_0x5f68('0x16')]);return _0x3c4e01(_0x34cbab[_0x5f68('0x14')][_0x5f68('0x16')]);}logger['error']('WhatsappInteraction,\x20%s,\x20%s',_0x6dc422,_0x34cbab[_0x5f68('0x14')]['message']);return _0x4fa00f(_0x34cbab[_0x5f68('0x14')][_0x5f68('0x16')]);}else{logger['info']('WhatsappInteraction,\x20%s,\x20%s',_0x6dc422,_0x5f68('0x10'));_0x4fa00f(_0x34cbab[_0x5f68('0x17')][_0x5f68('0x16')]);}})[_0x5f68('0x18')](function(_0x198c61){logger[_0x5f68('0x14')](_0x5f68('0x19'),_0x6dc422,_0x198c61);_0x3c4e01(_0x198c61);});});}exports[_0x5f68('0x1a')]=function(_0x3fa20a){var _0x18d86e=this;return new Promise(function(_0x1e7f0f,_0x4a60fa){return db[_0x5f68('0x1b')]['update'](_0x3fa20a[_0x5f68('0x1c')],{'raw':_0x3fa20a[_0x5f68('0x1d')]?_0x3fa20a['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3fa20a['options']?_0x3fa20a[_0x5f68('0x1d')][_0x5f68('0x1e')]||null:null,'attributes':_0x3fa20a['options']?_0x3fa20a[_0x5f68('0x1d')][_0x5f68('0x1f')]||null:null,'limit':_0x3fa20a[_0x5f68('0x1d')]?_0x3fa20a['options'][_0x5f68('0x20')]||null:null})['then'](function(_0x196354){logger[_0x5f68('0xf')](_0x5f68('0x1a'),_0x3fa20a);logger['debug']('UpdateWhatsappInteraction',_0x3fa20a,JSON[_0x5f68('0x13')](_0x196354));_0x1e7f0f(_0x196354);})[_0x5f68('0x18')](function(_0x2caf74){logger[_0x5f68('0x14')](_0x5f68('0x1a'),_0x2caf74[_0x5f68('0x16')],_0x3fa20a);_0x4a60fa(_0x18d86e[_0x5f68('0x14')](0x1f4,_0x2caf74[_0x5f68('0x16')]));});});};exports[_0x5f68('0x21')]=function(_0x3b536f){return new Promise(function(_0x1041a3,_0x2f1ab5){return db[_0x5f68('0x1b')][_0x5f68('0x22')]({'where':_0x3b536f['options']?_0x3b536f[_0x5f68('0x1d')]['where']||null:null})['then'](function(_0x496253){if(_0x496253){return _0x496253[_0x5f68('0x23')](_0x3b536f[_0x5f68('0x1c')][_0x5f68('0x24')],_[_0x5f68('0x25')](_0x3b536f[_0x5f68('0x1c')],['ids','id'])||{});}})[_0x5f68('0x26')](function(_0x488fa4){logger['info'](_0x5f68('0x27'),_0x3b536f);logger[_0x5f68('0x11')](_0x5f68('0x27'),_0x3b536f,JSON['stringify'](_0x488fa4));_0x1041a3(_0x488fa4);})[_0x5f68('0x18')](function(_0x567ce3){logger[_0x5f68('0x14')]('AddTags',_0x567ce3[_0x5f68('0x16')],_0x3b536f);_0x2f1ab5(_this[_0x5f68('0x14')](0x1f4,_0x567ce3['message']));});});};
\ No newline at end of file
index 468c6b7..f842a21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7486=['register','length','whatsappInteraction:','./whatsappInteraction.events','save','remove','update','emit','removeListener'];(function(_0x88bc71,_0x391a44){var _0x48aaa2=function(_0x2522cd){while(--_0x2522cd){_0x88bc71['push'](_0x88bc71['shift']());}};_0x48aaa2(++_0x391a44);}(_0x7486,0x147));var _0x6748=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7486[_0x3dd15e];return _0x231fd0;};'use strict';var WhatsappInteractionEvents=require(_0x6748('0x0'));var events=[_0x6748('0x1'),_0x6748('0x2'),_0x6748('0x3')];function createListener(_0x68e33d,_0x3d9892){return function(_0xb7dfbf){_0x3d9892[_0x6748('0x4')](_0x68e33d,_0xb7dfbf);};}function removeListener(_0x2aff36,_0x80d9d1){return function(){WhatsappInteractionEvents[_0x6748('0x5')](_0x2aff36,_0x80d9d1);};}exports[_0x6748('0x6')]=function(_0x267a51){for(var _0x479812=0x0,_0x199e98=events[_0x6748('0x7')];_0x479812<_0x199e98;_0x479812++){var _0x49cc2c=events[_0x479812];var _0x50da52=createListener(_0x6748('0x8')+_0x49cc2c,_0x267a51);WhatsappInteractionEvents['on'](_0x49cc2c,_0x50da52);}};
\ No newline at end of file
+var _0x7bb1=['register','whatsappInteraction:','./whatsappInteraction.events','save','remove','emit','removeListener'];(function(_0x32cc68,_0x5d2b21){var _0x472ab1=function(_0x14ff66){while(--_0x14ff66){_0x32cc68['push'](_0x32cc68['shift']());}};_0x472ab1(++_0x5d2b21);}(_0x7bb1,0xb1));var _0x17bb=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0x7bb1[_0xaa0309];return _0x5de7ce;};'use strict';var WhatsappInteractionEvents=require(_0x17bb('0x0'));var events=[_0x17bb('0x1'),_0x17bb('0x2'),'update'];function createListener(_0x5bddac,_0x40ff43){return function(_0x456986){_0x40ff43[_0x17bb('0x3')](_0x5bddac,_0x456986);};}function removeListener(_0x198a9e,_0x6330d6){return function(){WhatsappInteractionEvents[_0x17bb('0x4')](_0x198a9e,_0x6330d6);};}exports[_0x17bb('0x5')]=function(_0x4f10e5){for(var _0x191de3=0x0,_0x3c459f=events['length'];_0x191de3<_0x3c459f;_0x191de3++){var _0x2201b2=events[_0x191de3];var _0x4991f4=createListener(_0x17bb('0x6')+_0x2201b2,_0x4f10e5);WhatsappInteractionEvents['on'](_0x2201b2,_0x4991f4);}};
\ No newline at end of file
index 0e28e54..4fa4786 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa47d=['tracked','whatsapp','whatsappmessage:create','post','/:id/status','status','put','update','reject','delete','multer','util','path','fs-extra','../../components/auth/service','../../config/environment','./whatsappMessage.controller','get','isAuthenticated','index','describe','/:id','show'];(function(_0x4e9d3c,_0x1f4b98){var _0x2d0825=function(_0x384676){while(--_0x384676){_0x4e9d3c['push'](_0x4e9d3c['shift']());}};_0x2d0825(++_0x1f4b98);}(_0xa47d,0x11e));var _0xda47=function(_0x38cfab,_0x3274c2){_0x38cfab=_0x38cfab-0x0;var _0x9ae20e=_0xa47d[_0x38cfab];return _0x9ae20e;};'use strict';var multer=require(_0xda47('0x0'));var util=require(_0xda47('0x1'));var path=require(_0xda47('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xda47('0x3'));var auth=require(_0xda47('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xda47('0x5'));var controller=require(_0xda47('0x6'));router[_0xda47('0x7')]('/',auth[_0xda47('0x8')](),controller[_0xda47('0x9')]);router[_0xda47('0x7')]('/describe',auth[_0xda47('0x8')](),controller[_0xda47('0xa')]);router[_0xda47('0x7')](_0xda47('0xb'),auth[_0xda47('0x8')](),controller[_0xda47('0xc')]);router['post']('/',auth[_0xda47('0x8')](),interaction[_0xda47('0xd')](_0xda47('0xe'),_0xda47('0xf')),controller['create']);router[_0xda47('0x10')](_0xda47('0x11'),controller[_0xda47('0x12')]);router[_0xda47('0x13')]('/:id',auth[_0xda47('0x8')](),controller[_0xda47('0x14')]);router['put']('/:id/accept',auth[_0xda47('0x8')](),controller['accept']);router[_0xda47('0x13')]('/:id/reject',auth[_0xda47('0x8')](),controller[_0xda47('0x15')]);router[_0xda47('0x16')]('/:id',auth[_0xda47('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x92b4=['whatsapp','whatsappmessage:create','create','status','put','update','/:id/accept','accept','reject','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappMessage.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post'];(function(_0x3ca4ed,_0x4672ac){var _0x6f14ca=function(_0x2e106a){while(--_0x2e106a){_0x3ca4ed['push'](_0x3ca4ed['shift']());}};_0x6f14ca(++_0x4672ac);}(_0x92b4,0xf4));var _0x492b=function(_0x41b917,_0x499920){_0x41b917=_0x41b917-0x0;var _0x4baeaf=_0x92b4[_0x41b917];return _0x4baeaf;};'use strict';var multer=require(_0x492b('0x0'));var util=require(_0x492b('0x1'));var path=require(_0x492b('0x2'));var timeout=require(_0x492b('0x3'));var express=require('express');var router=express[_0x492b('0x4')]();var fs_extra=require(_0x492b('0x5'));var auth=require(_0x492b('0x6'));var interaction=require(_0x492b('0x7'));var config=require('../../config/environment');var controller=require(_0x492b('0x8'));router[_0x492b('0x9')]('/',auth['isAuthenticated'](),controller[_0x492b('0xa')]);router[_0x492b('0x9')](_0x492b('0xb'),auth[_0x492b('0xc')](),controller[_0x492b('0xd')]);router[_0x492b('0x9')](_0x492b('0xe'),auth['isAuthenticated'](),controller[_0x492b('0xf')]);router[_0x492b('0x10')]('/',auth['isAuthenticated'](),interaction['tracked'](_0x492b('0x11'),_0x492b('0x12')),controller[_0x492b('0x13')]);router[_0x492b('0x10')]('/:id/status',controller[_0x492b('0x14')]);router[_0x492b('0x15')](_0x492b('0xe'),auth['isAuthenticated'](),controller[_0x492b('0x16')]);router['put'](_0x492b('0x17'),auth[_0x492b('0xc')](),controller[_0x492b('0x18')]);router[_0x492b('0x15')]('/:id/reject',auth[_0x492b('0xc')](),controller[_0x492b('0x19')]);router[_0x492b('0x1a')]('/:id',auth[_0x492b('0xc')](),controller[_0x492b('0x1b')]);module[_0x492b('0x1c')]=router;
\ No newline at end of file
index bb0ce78..a02cfce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd55c=['DATE','sequelize','exports','TEXT','medium','BOOLEAN','out'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0xd55c,0x14a));var _0xcd55=function(_0x4c2967,_0x4f8873){_0x4c2967=_0x4c2967-0x0;var _0x2c7e2b=_0xd55c[_0x4c2967];return _0x2c7e2b;};'use strict';var Sequelize=require(_0xcd55('0x0'));module[_0xcd55('0x1')]={'body':{'type':Sequelize[_0xcd55('0x2')](_0xcd55('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xcd55('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0xcd55('0x5'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0xcd55('0x6')]},'secret':{'type':Sequelize[_0xcd55('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xcd55('0x2')]}};
\ No newline at end of file
+var _0x73e1=['STRING','DATE','TEXT','sequelize','exports','BOOLEAN','ENUM','out'];(function(_0xc8a931,_0x260690){var _0x28bd27=function(_0x591b9f){while(--_0x591b9f){_0xc8a931['push'](_0xc8a931['shift']());}};_0x28bd27(++_0x260690);}(_0x73e1,0x133));var _0x173e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x73e1[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x173e('0x0'));module[_0x173e('0x1')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x173e('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x173e('0x3')]('in',_0x173e('0x4')),'defaultValue':_0x173e('0x4'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0x173e('0x5')]},'readAt':{'type':Sequelize[_0x173e('0x6')]},'secret':{'type':Sequelize[_0x173e('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x173e('0x5')]},'providerResponse':{'type':Sequelize[_0x173e('0x7')]}};
\ No newline at end of file
index 2f730e4..d38cc2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec14=['eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','./whatsappMessage.socket','register','jayson/promise','client','request','then','info','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','WhatsappMessage,\x20%s,\x20%s','result','catch','status','json','offset','undefined','limit','count','set','Content-Range','reject','destroy','sendStatus','stack','name','index','map','WhatsappMessage','rawAttributes','type','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','show','params','includeAll','find','create','update','body','describe','../../config/logger','whatsapp-interactions','accept','whatsapp','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','WhatsappInteractionId','isNil','read1stAt','interaction','user','role','null','AcceptMessage','ContactId','sequelize','QueryTypes','SELECT','contact','fullname','internal','interface','SIP/%s','channel','motionChannel','event','EventManager','WhatsappInteraction','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','User','email','rejectmessage','WhatsappAccount','WhatsappAccountId','received\x20delivery\x20report\x20from','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','inspect'];(function(_0x285c48,_0x13ac4f){var _0x3b9961=function(_0x501329){while(--_0x501329){_0x285c48['push'](_0x285c48['shift']());}};_0x3b9961(++_0x13ac4f);}(_0xec14,0x85));var _0x4ec1=function(_0x1030ce,_0xbe3f74){_0x1030ce=_0x1030ce-0x0;var _0x3367fd=_0xec14[_0x1030ce];return _0x3367fd;};'use strict';var emlformat=require(_0x4ec1('0x0'));var rimraf=require(_0x4ec1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4ec1('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4ec1('0x3'));var Mustache=require(_0x4ec1('0x4'));var util=require(_0x4ec1('0x5'));var path=require(_0x4ec1('0x6'));var sox=require('sox');var csv=require(_0x4ec1('0x7'));var ejs=require(_0x4ec1('0x8'));var fs=require('fs');var fs_extra=require(_0x4ec1('0x9'));var _=require(_0x4ec1('0xa'));var squel=require('squel');var crypto=require(_0x4ec1('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x4ec1('0xc'));var toCsv=require(_0x4ec1('0x7'));var querystring=require(_0x4ec1('0xd'));var Papa=require(_0x4ec1('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x4ec1('0xf'));var as=require(_0x4ec1('0x10'));var hardwareService=require(_0x4ec1('0x11'));var logger=require('../../config/logger')(_0x4ec1('0x12'));var utils=require(_0x4ec1('0x13'));var config=require(_0x4ec1('0x14'));var licenseUtil=require(_0x4ec1('0x15'));var db=require(_0x4ec1('0x16'))['db'];config[_0x4ec1('0x17')]=_['defaults'](config[_0x4ec1('0x17')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4ec1('0x17')]));require(_0x4ec1('0x18'))[_0x4ec1('0x19')](socket);var jayson=require(_0x4ec1('0x1a'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x4ec1('0x1b')]['http']({'port':0x232a});function respondWithRpcPromise(_0x539df2,_0x2f4030,_0x1f858c,_0x1fe5c4){return new BPromise(function(_0x204582,_0x50d221){var _0x17e23a=_0x1fe5c4||client;return _0x17e23a[_0x4ec1('0x1c')](_0x539df2,_0x1f858c)[_0x4ec1('0x1d')](function(_0x1668ba){logger[_0x4ec1('0x1e')]('WhatsappMessage,\x20%s,\x20%s',_0x2f4030,_0x4ec1('0x1f'));logger[_0x4ec1('0x20')](_0x4ec1('0x21'),_0x2f4030,_0x4ec1('0x1f'),JSON[_0x4ec1('0x22')](_0x1668ba));if(_0x1668ba[_0x4ec1('0x23')]){if(_0x1668ba[_0x4ec1('0x23')][_0x4ec1('0x24')]===0x1f4){logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x2f4030,_0x1668ba[_0x4ec1('0x23')][_0x4ec1('0x25')]);return _0x50d221(_0x1668ba[_0x4ec1('0x23')]['message']);}logger[_0x4ec1('0x23')](_0x4ec1('0x26'),_0x2f4030,_0x1668ba[_0x4ec1('0x23')]['message']);return _0x204582(_0x1668ba[_0x4ec1('0x23')][_0x4ec1('0x25')]);}else{logger[_0x4ec1('0x1e')](_0x4ec1('0x26'),_0x2f4030,_0x4ec1('0x1f'));_0x204582(_0x1668ba[_0x4ec1('0x27')][_0x4ec1('0x25')]);}})[_0x4ec1('0x28')](function(_0x2fc7c7){logger[_0x4ec1('0x23')]('WhatsappMessage,\x20%s,\x20%s',_0x2f4030,_0x2fc7c7);_0x50d221(_0x2fc7c7);});});}function respondWithStatusCode(_0x28b9ac,_0x3d93f6){_0x3d93f6=_0x3d93f6||0xcc;return function(_0x30ab62){if(_0x30ab62){return _0x28b9ac['sendStatus'](_0x3d93f6);}return _0x28b9ac[_0x4ec1('0x29')](_0x3d93f6)['end']();};}function respondWithResult(_0x1b0efe,_0x51296e){_0x51296e=_0x51296e||0xc8;return function(_0x55440e){if(_0x55440e){return _0x1b0efe[_0x4ec1('0x29')](_0x51296e)[_0x4ec1('0x2a')](_0x55440e);}};}function respondWithFilteredResult(_0x175481,_0x3409a2){return function(_0x2cd918){if(_0x2cd918){var _0x1e767a=typeof _0x3409a2[_0x4ec1('0x2b')]===_0x4ec1('0x2c')&&typeof _0x3409a2[_0x4ec1('0x2d')]===_0x4ec1('0x2c');var _0x457d4c=_0x2cd918['count'];var _0x19097f=_0x1e767a?0x0:_0x3409a2[_0x4ec1('0x2b')];var _0x185ead=_0x1e767a?_0x2cd918[_0x4ec1('0x2e')]:_0x3409a2[_0x4ec1('0x2b')]+_0x3409a2['limit'];var _0x3ba8ca;if(_0x185ead>=_0x457d4c){_0x185ead=_0x457d4c;_0x3ba8ca=0xc8;}else{_0x3ba8ca=0xce;}_0x175481[_0x4ec1('0x29')](_0x3ba8ca);return _0x175481[_0x4ec1('0x2f')](_0x4ec1('0x30'),_0x19097f+'-'+_0x185ead+'/'+_0x457d4c)['json'](_0x2cd918);}return null;};}function patchUpdates(_0x326939){return function(_0x2b80f2){try{jsonpatch['apply'](_0x2b80f2,_0x326939,!![]);}catch(_0x27323a){return BPromise[_0x4ec1('0x31')](_0x27323a);}return _0x2b80f2['save']();};}function saveUpdates(_0x1405db,_0x2b7f64){return function(_0x3ba97d){if(_0x3ba97d){return _0x3ba97d['update'](_0x1405db)[_0x4ec1('0x1d')](function(_0x196d0a){return _0x196d0a;});}return null;};}function removeEntity(_0x179c9b,_0x11d3ad){return function(_0x3fe66c){if(_0x3fe66c){return _0x3fe66c[_0x4ec1('0x32')]()[_0x4ec1('0x1d')](function(){_0x179c9b[_0x4ec1('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x13e2a2,_0x4fee77){return function(_0x2bb7b6){if(!_0x2bb7b6){_0x13e2a2[_0x4ec1('0x33')](0x194);}return _0x2bb7b6;};}function handleError(_0x45bb9a,_0x25e692){_0x25e692=_0x25e692||0x1f4;return function(_0x296c26){logger['error'](_0x296c26[_0x4ec1('0x34')]);if(_0x296c26[_0x4ec1('0x35')]){delete _0x296c26[_0x4ec1('0x35')];}_0x45bb9a[_0x4ec1('0x29')](_0x25e692)['send'](_0x296c26);};}exports[_0x4ec1('0x36')]=function(_0x40df2a,_0x57c963){var _0x4c5892={},_0x4f172d={},_0x5e9c3a={'count':0x0,'rows':[]};var _0x388069=_[_0x4ec1('0x37')](db[_0x4ec1('0x38')][_0x4ec1('0x39')],function(_0x55855a){return{'name':_0x55855a['fieldName'],'type':_0x55855a[_0x4ec1('0x3a')]['key']};});_0x4f172d['model']=_[_0x4ec1('0x37')](_0x388069,_0x4ec1('0x35'));_0x4f172d[_0x4ec1('0x3b')]=_[_0x4ec1('0x3c')](_0x40df2a['query']);_0x4f172d[_0x4ec1('0x3d')]=_[_0x4ec1('0x3e')](_0x4f172d[_0x4ec1('0x3f')],_0x4f172d['query']);_0x4c5892[_0x4ec1('0x40')]=_['intersection'](_0x4f172d[_0x4ec1('0x3f')],qs[_0x4ec1('0x41')](_0x40df2a[_0x4ec1('0x3b')]['fields']));_0x4c5892[_0x4ec1('0x40')]=_0x4c5892[_0x4ec1('0x40')][_0x4ec1('0x42')]?_0x4c5892[_0x4ec1('0x40')]:_0x4f172d['model'];if(!_0x40df2a[_0x4ec1('0x3b')]['hasOwnProperty'](_0x4ec1('0x43'))){_0x4c5892['limit']=qs[_0x4ec1('0x2d')](_0x40df2a['query'][_0x4ec1('0x2d')]);_0x4c5892[_0x4ec1('0x2b')]=qs['offset'](_0x40df2a['query']['offset']);}_0x4c5892[_0x4ec1('0x44')]=qs[_0x4ec1('0x45')](_0x40df2a[_0x4ec1('0x3b')][_0x4ec1('0x45')]);_0x4c5892[_0x4ec1('0x46')]=qs[_0x4ec1('0x3d')](_[_0x4ec1('0x47')](_0x40df2a[_0x4ec1('0x3b')],_0x4f172d[_0x4ec1('0x3d')]),_0x388069);if(_0x40df2a[_0x4ec1('0x3b')][_0x4ec1('0x48')]){_0x4c5892[_0x4ec1('0x46')]=_[_0x4ec1('0x49')](_0x4c5892['where'],{'$or':_[_0x4ec1('0x37')](_0x388069,function(_0x5da4f1){if(_0x5da4f1['type']!=='VIRTUAL'){var _0x458596={};_0x458596[_0x5da4f1[_0x4ec1('0x35')]]={'$like':'%'+_0x40df2a[_0x4ec1('0x3b')][_0x4ec1('0x48')]+'%'};return _0x458596;}})});}_0x4c5892=_[_0x4ec1('0x49')]({},_0x4c5892,_0x40df2a[_0x4ec1('0x4a')]);var _0x425063={'where':_0x4c5892[_0x4ec1('0x46')]};return db[_0x4ec1('0x38')]['count'](_0x425063)[_0x4ec1('0x1d')](function(_0xf18328){_0x5e9c3a[_0x4ec1('0x2e')]=_0xf18328;if(_0x40df2a[_0x4ec1('0x3b')]['includeAll']){_0x4c5892[_0x4ec1('0x4b')]=[{'all':!![]}];}return db[_0x4ec1('0x38')][_0x4ec1('0x4c')](_0x4c5892);})[_0x4ec1('0x1d')](function(_0xf7ef08){_0x5e9c3a['rows']=_0xf7ef08;return _0x5e9c3a;})[_0x4ec1('0x1d')](respondWithFilteredResult(_0x57c963,_0x4c5892))[_0x4ec1('0x28')](handleError(_0x57c963,null));};exports[_0x4ec1('0x4d')]=function(_0x5523be,_0x1fff58){var _0x4a7f93={'raw':!![],'where':{'id':_0x5523be[_0x4ec1('0x4e')]['id']}},_0x2fdfda={};_0x2fdfda['model']=_[_0x4ec1('0x3c')](db[_0x4ec1('0x38')][_0x4ec1('0x39')]);_0x2fdfda[_0x4ec1('0x3b')]=_[_0x4ec1('0x3c')](_0x5523be['query']);_0x2fdfda[_0x4ec1('0x3d')]=_[_0x4ec1('0x3e')](_0x2fdfda['model'],_0x2fdfda[_0x4ec1('0x3b')]);_0x4a7f93[_0x4ec1('0x40')]=_[_0x4ec1('0x3e')](_0x2fdfda['model'],qs[_0x4ec1('0x41')](_0x5523be[_0x4ec1('0x3b')][_0x4ec1('0x41')]));_0x4a7f93[_0x4ec1('0x40')]=_0x4a7f93[_0x4ec1('0x40')][_0x4ec1('0x42')]?_0x4a7f93[_0x4ec1('0x40')]:_0x2fdfda['model'];if(_0x5523be[_0x4ec1('0x3b')][_0x4ec1('0x4f')]){_0x4a7f93[_0x4ec1('0x4b')]=[{'all':!![]}];}_0x4a7f93=_[_0x4ec1('0x49')]({},_0x4a7f93,_0x5523be[_0x4ec1('0x4a')]);return db['WhatsappMessage'][_0x4ec1('0x50')](_0x4a7f93)[_0x4ec1('0x1d')](handleEntityNotFound(_0x1fff58,null))['then'](respondWithResult(_0x1fff58,null))[_0x4ec1('0x28')](handleError(_0x1fff58,null));};exports[_0x4ec1('0x51')]=function(_0x569b93,_0x3526fd){return db[_0x4ec1('0x38')][_0x4ec1('0x51')](_0x569b93['body'],{})[_0x4ec1('0x1d')](respondWithResult(_0x3526fd,0xc9))['catch'](handleError(_0x3526fd,null));};exports[_0x4ec1('0x52')]=function(_0x5b1f43,_0xc4d65){if(_0x5b1f43[_0x4ec1('0x53')]['id']){delete _0x5b1f43[_0x4ec1('0x53')]['id'];}return db['WhatsappMessage'][_0x4ec1('0x50')]({'where':{'id':_0x5b1f43[_0x4ec1('0x4e')]['id']}})[_0x4ec1('0x1d')](handleEntityNotFound(_0xc4d65,null))[_0x4ec1('0x1d')](saveUpdates(_0x5b1f43[_0x4ec1('0x53')],null))[_0x4ec1('0x1d')](respondWithResult(_0xc4d65,null))[_0x4ec1('0x28')](handleError(_0xc4d65,null));};exports[_0x4ec1('0x32')]=function(_0x9a8ba2,_0x35f39c){return db[_0x4ec1('0x38')][_0x4ec1('0x50')]({'where':{'id':_0x9a8ba2[_0x4ec1('0x4e')]['id']}})['then'](handleEntityNotFound(_0x35f39c,null))[_0x4ec1('0x1d')](removeEntity(_0x35f39c,null))[_0x4ec1('0x28')](handleError(_0x35f39c,null));};exports['describe']=function(_0x583503,_0x1e71a0){return db[_0x4ec1('0x38')][_0x4ec1('0x54')]()[_0x4ec1('0x1d')](respondWithResult(_0x1e71a0,null))[_0x4ec1('0x28')](handleError(_0x1e71a0,null));};var interaction_log=require(_0x4ec1('0x55'))(_0x4ec1('0x56'));exports[_0x4ec1('0x57')]=function(_0x308e3b,_0x276fd1,_0x47f5be){var _0x21c7fb={'agent':{},'channel':_0x4ec1('0x58')};if(_0x308e3b[_0x4ec1('0x53')]['id']){delete _0x308e3b['body']['id'];}_0x308e3b[_0x4ec1('0x53')][_0x4ec1('0x59')]=!![];_0x308e3b[_0x4ec1('0x53')][_0x4ec1('0x5a')]=moment()[_0x4ec1('0x5b')](_0x4ec1('0x5c'));_0x308e3b[_0x4ec1('0x53')]['UserId']=_0x308e3b[_0x4ec1('0x53')][_0x4ec1('0x5d')]||_0x308e3b['user']['id'];_0x21c7fb[_0x4ec1('0x5e')]['id']=_0x308e3b[_0x4ec1('0x53')][_0x4ec1('0x5d')];return db[_0x4ec1('0x38')][_0x4ec1('0x50')]({'where':{'id':_0x308e3b[_0x4ec1('0x4e')]['id'],'UserId':null}})[_0x4ec1('0x1d')](handleEntityNotFound(_0x276fd1,null))[_0x4ec1('0x1d')](saveUpdates(_0x308e3b['body'],null))[_0x4ec1('0x1d')](function(_0x3687b3){if(_0x3687b3){_0x21c7fb[_0x4ec1('0x25')]=_0x3687b3[_0x4ec1('0x5f')]({'plain':!![]});return db['WhatsappInteraction'][_0x4ec1('0x50')]({'where':{'id':_0x3687b3[_0x4ec1('0x60')]}});}return null;})['then'](handleEntityNotFound(_0x276fd1,null))['then'](function(_0x15a9d2){if(_0x15a9d2){return _0x15a9d2[_0x4ec1('0x52')]({'UserId':_0x308e3b[_0x4ec1('0x53')][_0x4ec1('0x5d')],'read1stAt':_[_0x4ec1('0x61')](_0x15a9d2[_0x4ec1('0x62')])?moment()[_0x4ec1('0x5b')](_0x4ec1('0x5c')):undefined});}return null;})[_0x4ec1('0x1d')](function(_0x23ffaf){if(_0x23ffaf){_0x21c7fb[_0x4ec1('0x63')]=_0x23ffaf['get']({'plain':!![]});interaction_log[_0x4ec1('0x1e')]('[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x308e3b[_0x4ec1('0x64')]['id'],_0x308e3b[_0x4ec1('0x64')][_0x4ec1('0x35')],_0x308e3b[_0x4ec1('0x64')][_0x4ec1('0x65')],_0x21c7fb[_0x4ec1('0x63')]['id'],_0x308e3b[_0x4ec1('0x53')]?JSON['stringify'](_0x308e3b[_0x4ec1('0x53')]):_0x4ec1('0x66'));return respondWithRpcPromise(_0x4ec1('0x67'),'acceptMessage',_0x21c7fb);}return null;})[_0x4ec1('0x1d')](function(_0xcdb765){var _0x13202='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xcdb765[_0x4ec1('0x25')][_0x4ec1('0x68')];return db[_0x4ec1('0x69')][_0x4ec1('0x3b')](_0x13202,{'type':db['Sequelize'][_0x4ec1('0x6a')][_0x4ec1('0x6b')],'raw':!![]})[_0x4ec1('0x1d')](function(_0x257f6){return _0x257f6;});})[_0x4ec1('0x1d')](function(_0x1dff3b){if(_0x1dff3b){_0x21c7fb[_0x4ec1('0x25')][_0x4ec1('0x6c')]=_0x1dff3b[0x0];if(!_0x308e3b['body']['UserId'])return;return db['User'][_0x4ec1('0x50')]({'where':{'id':_0x308e3b[_0x4ec1('0x53')][_0x4ec1('0x5d')],'role':_0x4ec1('0x5e')},'attributes':['id',_0x4ec1('0x35'),_0x4ec1('0x6d'),'email',_0x4ec1('0x6e')],'raw':!![]});}return null;})[_0x4ec1('0x1d')](function(_0x597135){if(!_0x597135)return null;_0x21c7fb[_0x4ec1('0x25')][_0x4ec1('0x5e')]=_0x597135;return _0x21c7fb;})['then'](function(_0x4eec77){if(_0x4eec77){if(_0x308e3b[_0x4ec1('0x53')]['manual']){_0x21c7fb[_0x4ec1('0x25')][_0x4ec1('0x6f')]=util[_0x4ec1('0x5b')](_0x4ec1('0x70'),_0x308e3b[_0x4ec1('0x64')][_0x4ec1('0x35')]);_0x21c7fb['message'][_0x4ec1('0x71')]=_0x21c7fb[_0x4ec1('0x71')];_0x21c7fb[_0x4ec1('0x25')][_0x4ec1('0x72')]=_0x21c7fb[_0x4ec1('0x71')];_0x21c7fb[_0x4ec1('0x25')][_0x4ec1('0x73')]='accept';return respondWithRpcPromise(_0x4ec1('0x74'),_0x4ec1('0x74'),{'event':'acceptmessage','message':_0x21c7fb[_0x4ec1('0x25')]},client9002)[_0x4ec1('0x1d')](function(){return _0x21c7fb;});}return _0x21c7fb;}return null;})[_0x4ec1('0x1d')](respondWithResult(_0x276fd1,null))[_0x4ec1('0x28')](handleError(_0x276fd1,null));};var interaction_log=require(_0x4ec1('0x55'))(_0x4ec1('0x56'));exports[_0x4ec1('0x31')]=function(_0x3ad531,_0x37f761,_0x10a762){var _0x1da382={'agent':{},'channel':_0x4ec1('0x58')};if(_0x3ad531['body']['id']){delete _0x3ad531[_0x4ec1('0x53')]['id'];}_0x3ad531[_0x4ec1('0x53')]['UserId']=_0x3ad531[_0x4ec1('0x53')]['UserId']||_0x3ad531['user']['id'];_0x1da382[_0x4ec1('0x5e')]['id']=_0x3ad531[_0x4ec1('0x53')][_0x4ec1('0x5d')];return db[_0x4ec1('0x38')][_0x4ec1('0x50')]({'where':{'id':_0x3ad531[_0x4ec1('0x4e')]['id'],'UserId':null}})[_0x4ec1('0x1d')](handleEntityNotFound(_0x37f761,null))[_0x4ec1('0x1d')](function(_0x30f528){if(_0x30f528){_0x1da382['message']=_0x30f528['get']({'plain':!![]});return db[_0x4ec1('0x75')]['find']({'where':{'id':_0x30f528[_0x4ec1('0x60')]}});}return null;})['then'](handleEntityNotFound(_0x37f761,null))[_0x4ec1('0x1d')](function(_0x375ee9){if(_0x375ee9){_0x1da382[_0x4ec1('0x63')]=_0x375ee9['get']({'plain':!![]});interaction_log[_0x4ec1('0x1e')](_0x4ec1('0x76'),_0x3ad531['user']['id'],_0x3ad531[_0x4ec1('0x64')][_0x4ec1('0x35')],_0x3ad531['user'][_0x4ec1('0x65')],_0x1da382['interaction']['id'],_0x3ad531['body']?JSON[_0x4ec1('0x22')](_0x3ad531['body']):_0x4ec1('0x66'));return respondWithRpcPromise('RejectMessage',_0x4ec1('0x77'),_0x1da382);}return null;})['then'](function(_0x518290){var _0x1a4802=_0x4ec1('0x78')+_0x518290['message'][_0x4ec1('0x68')];return db[_0x4ec1('0x69')][_0x4ec1('0x3b')](_0x1a4802,{'type':db['Sequelize'][_0x4ec1('0x6a')][_0x4ec1('0x6b')],'raw':!![]})['then'](function(_0x301738){return _0x301738;});})[_0x4ec1('0x1d')](function(_0x5e5c23){if(_0x5e5c23){_0x1da382[_0x4ec1('0x25')]['contact']=_0x5e5c23[0x0];if(!_0x3ad531['body']['UserId'])return;return db[_0x4ec1('0x79')]['find']({'where':{'id':_0x3ad531[_0x4ec1('0x53')][_0x4ec1('0x5d')],'role':'agent'},'attributes':['id',_0x4ec1('0x35'),_0x4ec1('0x6d'),_0x4ec1('0x7a'),_0x4ec1('0x6e')],'raw':!![]});}return null;})[_0x4ec1('0x1d')](function(_0xb495f1){if(!_0xb495f1)return null;_0x1da382[_0x4ec1('0x25')][_0x4ec1('0x5e')]=_0xb495f1;return _0x1da382;})[_0x4ec1('0x1d')](function(_0x4b964e){if(_0x4b964e){_0x4b964e[_0x4ec1('0x25')]['interface']=util[_0x4ec1('0x5b')](_0x4ec1('0x70'),_0x3ad531[_0x4ec1('0x64')][_0x4ec1('0x35')]);_0x4b964e['message']['channel']=_0x1da382[_0x4ec1('0x71')];_0x4b964e[_0x4ec1('0x25')][_0x4ec1('0x72')]=_0x1da382[_0x4ec1('0x71')];_0x4b964e[_0x4ec1('0x25')][_0x4ec1('0x73')]='reject';respondWithRpcPromise(_0x4ec1('0x74'),_0x4ec1('0x74'),{'event':_0x4ec1('0x7b'),'message':_0x4b964e[_0x4ec1('0x25')]},client9002);return _0x1da382;}return null;})['then'](respondWithResult(_0x37f761,null))['catch'](handleError(_0x37f761,null));};exports[_0x4ec1('0x29')]=function(_0x4757bb,_0x41909e,_0x3714f1){if(_0x4757bb['body']['id']){delete _0x4757bb['body']['id'];}var _0x15006f;return db[_0x4ec1('0x38')][_0x4ec1('0x50')]({'where':{'id':_0x4757bb[_0x4ec1('0x4e')]['id']}})[_0x4ec1('0x1d')](handleEntityNotFound(_0x41909e,null))[_0x4ec1('0x1d')](function(_0x6fc8ab){if(_0x6fc8ab){_0x15006f=_0x6fc8ab;return db[_0x4ec1('0x7c')][_0x4ec1('0x50')]({'where':{'id':_0x6fc8ab[_0x4ec1('0x7d')]}});}})['then'](handleEntityNotFound(_0x41909e,null))[_0x4ec1('0x1d')](function(_0x5d010b){if(_0x5d010b){logger[_0x4ec1('0x20')]('WhatsppMessage,\x20%s,\x20%s,\x20%s','status',_0x4ec1('0x7e'),_0x5d010b[_0x4ec1('0x3a')],util['inspect'](_0x4757bb[_0x4ec1('0x53')],{'showHidden':![],'depth':null}));switch(_0x5d010b[_0x4ec1('0x3a')]){case _0x4ec1('0x7f'):if(_0x4757bb['body'][_0x4ec1('0x80')]&&_0x4757bb[_0x4ec1('0x53')][_0x4ec1('0x80')]===_0x15006f[_0x4ec1('0x81')]&&_0x4757bb['body'][_0x4ec1('0x82')]&&_0x4757bb[_0x4ec1('0x53')][_0x4ec1('0x82')]===_0x4ec1('0x59')){return _0x15006f[_0x4ec1('0x52')]({'read':!![]});}else{logger['error'](_0x4ec1('0x83'),_0x4ec1('0x29'),_0x4ec1('0x7f'),util[_0x4ec1('0x84')](_0x4757bb['body'],{'showHidden':![],'depth':null}));}break;}return _0x15006f;}})[_0x4ec1('0x1d')](respondWithResult(_0x41909e,null))['catch'](handleError(_0x41909e,null));};
\ No newline at end of file
+var _0xc4eb=['motionChannel','EventManager','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','twilio','MessageSid','MessageStatus','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','client','http','info','WhatsappMessage,\x20%s,\x20%s','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','sendStatus','status','json','limit','undefined','count','offset','set','apply','update','then','destroy','end','stack','name','send','index','WhatsappMessage','type','query','keys','filters','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','show','rawAttributes','intersection','find','create','body','params','whatsapp-interactions','accept','whatsapp','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','WhatsappInteraction','isNil','format','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','email','manual','SIP/%s','channel','event','acceptmessage','reject','WhatsappInteractionId','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','SELECT','interface'];(function(_0x15dd57,_0x1237e3){var _0x703f49=function(_0x2a999f){while(--_0x2a999f){_0x15dd57['push'](_0x15dd57['shift']());}};_0x703f49(++_0x1237e3);}(_0xc4eb,0x92));var _0xbc4e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xc4eb[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbc4e('0x0'));var zipdir=require(_0xbc4e('0x1'));var jsonpatch=require(_0xbc4e('0x2'));var rp=require(_0xbc4e('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xbc4e('0x4'));var util=require(_0xbc4e('0x5'));var path=require(_0xbc4e('0x6'));var sox=require('sox');var csv=require(_0xbc4e('0x7'));var ejs=require(_0xbc4e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbc4e('0x9'));var squel=require(_0xbc4e('0xa'));var crypto=require(_0xbc4e('0xb'));var jsforce=require(_0xbc4e('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xbc4e('0xd'));var Papa=require(_0xbc4e('0xe'));var Redis=require('ioredis');var authService=require(_0xbc4e('0xf'));var qs=require(_0xbc4e('0x10'));var as=require(_0xbc4e('0x11'));var hardwareService=require(_0xbc4e('0x12'));var logger=require(_0xbc4e('0x13'))('api');var utils=require(_0xbc4e('0x14'));var config=require(_0xbc4e('0x15'));var licenseUtil=require(_0xbc4e('0x16'));var db=require(_0xbc4e('0x17'))['db'];config[_0xbc4e('0x18')]=_[_0xbc4e('0x19')](config[_0xbc4e('0x18')],{'host':_0xbc4e('0x1a'),'port':0x18eb});var socket=require(_0xbc4e('0x1b'))(new Redis(config[_0xbc4e('0x18')]));require(_0xbc4e('0x1c'))[_0xbc4e('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0xbc4e('0x1e')][_0xbc4e('0x1f')]({'port':0x232c});var client9002=jayson[_0xbc4e('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1bf8ca,_0x138a83,_0x3c017f,_0x8a6359){return new BPromise(function(_0x26d289,_0x121153){var _0x4b7531=_0x8a6359||client;return _0x4b7531['request'](_0x1bf8ca,_0x3c017f)['then'](function(_0x54e492){logger[_0xbc4e('0x20')](_0xbc4e('0x21'),_0x138a83,'request\x20sent');logger[_0xbc4e('0x22')](_0xbc4e('0x23'),_0x138a83,_0xbc4e('0x24'),JSON[_0xbc4e('0x25')](_0x54e492));if(_0x54e492[_0xbc4e('0x26')]){if(_0x54e492[_0xbc4e('0x26')][_0xbc4e('0x27')]===0x1f4){logger['error'](_0xbc4e('0x21'),_0x138a83,_0x54e492[_0xbc4e('0x26')][_0xbc4e('0x28')]);return _0x121153(_0x54e492['error'][_0xbc4e('0x28')]);}logger[_0xbc4e('0x26')](_0xbc4e('0x21'),_0x138a83,_0x54e492[_0xbc4e('0x26')][_0xbc4e('0x28')]);return _0x26d289(_0x54e492[_0xbc4e('0x26')][_0xbc4e('0x28')]);}else{logger[_0xbc4e('0x20')](_0xbc4e('0x21'),_0x138a83,_0xbc4e('0x24'));_0x26d289(_0x54e492['result'][_0xbc4e('0x28')]);}})[_0xbc4e('0x29')](function(_0x163494){logger[_0xbc4e('0x26')]('WhatsappMessage,\x20%s,\x20%s',_0x138a83,_0x163494);_0x121153(_0x163494);});});}function respondWithStatusCode(_0x130be4,_0x49017f){_0x49017f=_0x49017f||0xcc;return function(_0x21891c){if(_0x21891c){return _0x130be4[_0xbc4e('0x2a')](_0x49017f);}return _0x130be4[_0xbc4e('0x2b')](_0x49017f)['end']();};}function respondWithResult(_0x37ec7f,_0x32452d){_0x32452d=_0x32452d||0xc8;return function(_0x4e4578){if(_0x4e4578){return _0x37ec7f[_0xbc4e('0x2b')](_0x32452d)[_0xbc4e('0x2c')](_0x4e4578);}};}function respondWithFilteredResult(_0x4ea377,_0x18c167){return function(_0x5cf901){if(_0x5cf901){var _0x1ea125=typeof _0x18c167['offset']==='undefined'&&typeof _0x18c167[_0xbc4e('0x2d')]===_0xbc4e('0x2e');var _0x41d89c=_0x5cf901[_0xbc4e('0x2f')];var _0x820fe=_0x1ea125?0x0:_0x18c167[_0xbc4e('0x30')];var _0x422f29=_0x1ea125?_0x5cf901[_0xbc4e('0x2f')]:_0x18c167[_0xbc4e('0x30')]+_0x18c167[_0xbc4e('0x2d')];var _0x348f4b;if(_0x422f29>=_0x41d89c){_0x422f29=_0x41d89c;_0x348f4b=0xc8;}else{_0x348f4b=0xce;}_0x4ea377[_0xbc4e('0x2b')](_0x348f4b);return _0x4ea377[_0xbc4e('0x31')]('Content-Range',_0x820fe+'-'+_0x422f29+'/'+_0x41d89c)[_0xbc4e('0x2c')](_0x5cf901);}return null;};}function patchUpdates(_0x45bbee){return function(_0x5abd9c){try{jsonpatch[_0xbc4e('0x32')](_0x5abd9c,_0x45bbee,!![]);}catch(_0x199142){return BPromise['reject'](_0x199142);}return _0x5abd9c['save']();};}function saveUpdates(_0x409644,_0x138935){return function(_0x475387){if(_0x475387){return _0x475387[_0xbc4e('0x33')](_0x409644)[_0xbc4e('0x34')](function(_0x14393e){return _0x14393e;});}return null;};}function removeEntity(_0x38a2ae,_0x49b861){return function(_0x4e33e5){if(_0x4e33e5){return _0x4e33e5[_0xbc4e('0x35')]()['then'](function(){_0x38a2ae[_0xbc4e('0x2b')](0xcc)[_0xbc4e('0x36')]();});}};}function handleEntityNotFound(_0x1859df,_0x5114dc){return function(_0x1aa3ac){if(!_0x1aa3ac){_0x1859df[_0xbc4e('0x2a')](0x194);}return _0x1aa3ac;};}function handleError(_0x2689a2,_0x10207f){_0x10207f=_0x10207f||0x1f4;return function(_0xd95075){logger[_0xbc4e('0x26')](_0xd95075[_0xbc4e('0x37')]);if(_0xd95075[_0xbc4e('0x38')]){delete _0xd95075[_0xbc4e('0x38')];}_0x2689a2[_0xbc4e('0x2b')](_0x10207f)[_0xbc4e('0x39')](_0xd95075);};}exports[_0xbc4e('0x3a')]=function(_0x5313f6,_0x218318){var _0x863abb={},_0x160cbc={},_0x5e7086={'count':0x0,'rows':[]};var _0x22fe66=_['map'](db[_0xbc4e('0x3b')]['rawAttributes'],function(_0x47d2b3){return{'name':_0x47d2b3['fieldName'],'type':_0x47d2b3[_0xbc4e('0x3c')]['key']};});_0x160cbc['model']=_['map'](_0x22fe66,_0xbc4e('0x38'));_0x160cbc[_0xbc4e('0x3d')]=_[_0xbc4e('0x3e')](_0x5313f6[_0xbc4e('0x3d')]);_0x160cbc[_0xbc4e('0x3f')]=_['intersection'](_0x160cbc['model'],_0x160cbc[_0xbc4e('0x3d')]);_0x863abb[_0xbc4e('0x40')]=_['intersection'](_0x160cbc[_0xbc4e('0x41')],qs['fields'](_0x5313f6['query'][_0xbc4e('0x42')]));_0x863abb[_0xbc4e('0x40')]=_0x863abb[_0xbc4e('0x40')][_0xbc4e('0x43')]?_0x863abb['attributes']:_0x160cbc[_0xbc4e('0x41')];if(!_0x5313f6[_0xbc4e('0x3d')][_0xbc4e('0x44')](_0xbc4e('0x45'))){_0x863abb[_0xbc4e('0x2d')]=qs[_0xbc4e('0x2d')](_0x5313f6['query']['limit']);_0x863abb[_0xbc4e('0x30')]=qs['offset'](_0x5313f6[_0xbc4e('0x3d')]['offset']);}_0x863abb[_0xbc4e('0x46')]=qs['sort'](_0x5313f6['query'][_0xbc4e('0x47')]);_0x863abb[_0xbc4e('0x48')]=qs[_0xbc4e('0x3f')](_['pick'](_0x5313f6['query'],_0x160cbc[_0xbc4e('0x3f')]),_0x22fe66);if(_0x5313f6[_0xbc4e('0x3d')][_0xbc4e('0x49')]){_0x863abb[_0xbc4e('0x48')]=_[_0xbc4e('0x4a')](_0x863abb['where'],{'$or':_[_0xbc4e('0x4b')](_0x22fe66,function(_0x96afd1){if(_0x96afd1[_0xbc4e('0x3c')]!==_0xbc4e('0x4c')){var _0x2c5755={};_0x2c5755[_0x96afd1[_0xbc4e('0x38')]]={'$like':'%'+_0x5313f6['query'][_0xbc4e('0x49')]+'%'};return _0x2c5755;}})});}_0x863abb=_['merge']({},_0x863abb,_0x5313f6[_0xbc4e('0x4d')]);var _0x333538={'where':_0x863abb[_0xbc4e('0x48')]};return db[_0xbc4e('0x3b')][_0xbc4e('0x2f')](_0x333538)[_0xbc4e('0x34')](function(_0x2f9804){_0x5e7086[_0xbc4e('0x2f')]=_0x2f9804;if(_0x5313f6['query'][_0xbc4e('0x4e')]){_0x863abb[_0xbc4e('0x4f')]=[{'all':!![]}];}return db[_0xbc4e('0x3b')][_0xbc4e('0x50')](_0x863abb);})[_0xbc4e('0x34')](function(_0x1382ad){_0x5e7086[_0xbc4e('0x51')]=_0x1382ad;return _0x5e7086;})['then'](respondWithFilteredResult(_0x218318,_0x863abb))[_0xbc4e('0x29')](handleError(_0x218318,null));};exports[_0xbc4e('0x52')]=function(_0x349809,_0x1ea19a){var _0x25b09a={'raw':!![],'where':{'id':_0x349809['params']['id']}},_0x217afb={};_0x217afb[_0xbc4e('0x41')]=_['keys'](db[_0xbc4e('0x3b')][_0xbc4e('0x53')]);_0x217afb[_0xbc4e('0x3d')]=_[_0xbc4e('0x3e')](_0x349809[_0xbc4e('0x3d')]);_0x217afb[_0xbc4e('0x3f')]=_[_0xbc4e('0x54')](_0x217afb[_0xbc4e('0x41')],_0x217afb[_0xbc4e('0x3d')]);_0x25b09a[_0xbc4e('0x40')]=_['intersection'](_0x217afb[_0xbc4e('0x41')],qs['fields'](_0x349809[_0xbc4e('0x3d')][_0xbc4e('0x42')]));_0x25b09a['attributes']=_0x25b09a[_0xbc4e('0x40')][_0xbc4e('0x43')]?_0x25b09a[_0xbc4e('0x40')]:_0x217afb['model'];if(_0x349809['query'][_0xbc4e('0x4e')]){_0x25b09a[_0xbc4e('0x4f')]=[{'all':!![]}];}_0x25b09a=_[_0xbc4e('0x4a')]({},_0x25b09a,_0x349809['options']);return db[_0xbc4e('0x3b')][_0xbc4e('0x55')](_0x25b09a)[_0xbc4e('0x34')](handleEntityNotFound(_0x1ea19a,null))['then'](respondWithResult(_0x1ea19a,null))[_0xbc4e('0x29')](handleError(_0x1ea19a,null));};exports[_0xbc4e('0x56')]=function(_0x371ee1,_0x334452){return db[_0xbc4e('0x3b')][_0xbc4e('0x56')](_0x371ee1['body'],{})[_0xbc4e('0x34')](respondWithResult(_0x334452,0xc9))[_0xbc4e('0x29')](handleError(_0x334452,null));};exports[_0xbc4e('0x33')]=function(_0x1165c4,_0x191eeb){if(_0x1165c4[_0xbc4e('0x57')]['id']){delete _0x1165c4[_0xbc4e('0x57')]['id'];}return db['WhatsappMessage'][_0xbc4e('0x55')]({'where':{'id':_0x1165c4[_0xbc4e('0x58')]['id']}})[_0xbc4e('0x34')](handleEntityNotFound(_0x191eeb,null))['then'](saveUpdates(_0x1165c4[_0xbc4e('0x57')],null))[_0xbc4e('0x34')](respondWithResult(_0x191eeb,null))[_0xbc4e('0x29')](handleError(_0x191eeb,null));};exports[_0xbc4e('0x35')]=function(_0x392d83,_0x27bd7f){return db[_0xbc4e('0x3b')][_0xbc4e('0x55')]({'where':{'id':_0x392d83[_0xbc4e('0x58')]['id']}})[_0xbc4e('0x34')](handleEntityNotFound(_0x27bd7f,null))[_0xbc4e('0x34')](removeEntity(_0x27bd7f,null))['catch'](handleError(_0x27bd7f,null));};exports['describe']=function(_0x45a418,_0x43697c){return db[_0xbc4e('0x3b')]['describe']()[_0xbc4e('0x34')](respondWithResult(_0x43697c,null))['catch'](handleError(_0x43697c,null));};var interaction_log=require(_0xbc4e('0x13'))(_0xbc4e('0x59'));exports[_0xbc4e('0x5a')]=function(_0x40d19f,_0x2b3392,_0x23e0a9){var _0x523b76={'agent':{},'channel':_0xbc4e('0x5b')};if(_0x40d19f[_0xbc4e('0x57')]['id']){delete _0x40d19f[_0xbc4e('0x57')]['id'];}_0x40d19f[_0xbc4e('0x57')][_0xbc4e('0x5c')]=!![];_0x40d19f[_0xbc4e('0x57')][_0xbc4e('0x5d')]=moment()['format'](_0xbc4e('0x5e'));_0x40d19f[_0xbc4e('0x57')][_0xbc4e('0x5f')]=_0x40d19f['body'][_0xbc4e('0x5f')]||_0x40d19f[_0xbc4e('0x60')]['id'];_0x523b76[_0xbc4e('0x61')]['id']=_0x40d19f['body'][_0xbc4e('0x5f')];return db[_0xbc4e('0x3b')]['find']({'where':{'id':_0x40d19f['params']['id'],'UserId':null}})[_0xbc4e('0x34')](handleEntityNotFound(_0x2b3392,null))[_0xbc4e('0x34')](saveUpdates(_0x40d19f[_0xbc4e('0x57')],null))[_0xbc4e('0x34')](function(_0x6d1ea9){if(_0x6d1ea9){_0x523b76[_0xbc4e('0x28')]=_0x6d1ea9[_0xbc4e('0x62')]({'plain':!![]});return db[_0xbc4e('0x63')][_0xbc4e('0x55')]({'where':{'id':_0x6d1ea9['WhatsappInteractionId']}});}return null;})[_0xbc4e('0x34')](handleEntityNotFound(_0x2b3392,null))[_0xbc4e('0x34')](function(_0x36fd3f){if(_0x36fd3f){return _0x36fd3f['update']({'UserId':_0x40d19f[_0xbc4e('0x57')]['UserId'],'read1stAt':_[_0xbc4e('0x64')](_0x36fd3f['read1stAt'])?moment()[_0xbc4e('0x65')](_0xbc4e('0x5e')):undefined});}return null;})[_0xbc4e('0x34')](function(_0x1cd2ad){if(_0x1cd2ad){_0x523b76[_0xbc4e('0x66')]=_0x1cd2ad['get']({'plain':!![]});interaction_log[_0xbc4e('0x20')](_0xbc4e('0x67'),_0x40d19f[_0xbc4e('0x60')]['id'],_0x40d19f['user'][_0xbc4e('0x38')],_0x40d19f[_0xbc4e('0x60')][_0xbc4e('0x68')],_0x523b76[_0xbc4e('0x66')]['id'],_0x40d19f[_0xbc4e('0x57')]?JSON[_0xbc4e('0x25')](_0x40d19f[_0xbc4e('0x57')]):_0xbc4e('0x69'));return respondWithRpcPromise(_0xbc4e('0x6a'),_0xbc4e('0x6b'),_0x523b76);}return null;})[_0xbc4e('0x34')](function(_0x390ed8){var _0x48dc15=_0xbc4e('0x6c')+_0x390ed8[_0xbc4e('0x28')][_0xbc4e('0x6d')];return db[_0xbc4e('0x6e')]['query'](_0x48dc15,{'type':db['Sequelize'][_0xbc4e('0x6f')]['SELECT'],'raw':!![]})[_0xbc4e('0x34')](function(_0x2ba537){return _0x2ba537;});})[_0xbc4e('0x34')](function(_0x43498c){if(_0x43498c){_0x523b76['message']['contact']=_0x43498c[0x0];if(!_0x40d19f[_0xbc4e('0x57')][_0xbc4e('0x5f')])return;return db['User'][_0xbc4e('0x55')]({'where':{'id':_0x40d19f[_0xbc4e('0x57')]['UserId'],'role':_0xbc4e('0x61')},'attributes':['id','name','fullname',_0xbc4e('0x70'),'internal'],'raw':!![]});}return null;})[_0xbc4e('0x34')](function(_0x11b22d){if(!_0x11b22d)return null;_0x523b76[_0xbc4e('0x28')][_0xbc4e('0x61')]=_0x11b22d;return _0x523b76;})[_0xbc4e('0x34')](function(_0x37efa3){if(_0x37efa3){if(_0x40d19f[_0xbc4e('0x57')][_0xbc4e('0x71')]){_0x523b76[_0xbc4e('0x28')]['interface']=util['format'](_0xbc4e('0x72'),_0x40d19f['user'][_0xbc4e('0x38')]);_0x523b76[_0xbc4e('0x28')]['channel']=_0x523b76[_0xbc4e('0x73')];_0x523b76[_0xbc4e('0x28')]['motionChannel']=_0x523b76['channel'];_0x523b76[_0xbc4e('0x28')][_0xbc4e('0x74')]=_0xbc4e('0x5a');return respondWithRpcPromise('EventManager','EventManager',{'event':_0xbc4e('0x75'),'message':_0x523b76[_0xbc4e('0x28')]},client9002)[_0xbc4e('0x34')](function(){return _0x523b76;});}return _0x523b76;}return null;})[_0xbc4e('0x34')](respondWithResult(_0x2b3392,null))[_0xbc4e('0x29')](handleError(_0x2b3392,null));};var interaction_log=require(_0xbc4e('0x13'))(_0xbc4e('0x59'));exports[_0xbc4e('0x76')]=function(_0x2201ba,_0x14ff68,_0x2695a5){var _0x4e6e60={'agent':{},'channel':'whatsapp'};if(_0x2201ba[_0xbc4e('0x57')]['id']){delete _0x2201ba[_0xbc4e('0x57')]['id'];}_0x2201ba[_0xbc4e('0x57')]['UserId']=_0x2201ba[_0xbc4e('0x57')][_0xbc4e('0x5f')]||_0x2201ba[_0xbc4e('0x60')]['id'];_0x4e6e60[_0xbc4e('0x61')]['id']=_0x2201ba[_0xbc4e('0x57')][_0xbc4e('0x5f')];return db['WhatsappMessage'][_0xbc4e('0x55')]({'where':{'id':_0x2201ba[_0xbc4e('0x58')]['id'],'UserId':null}})[_0xbc4e('0x34')](handleEntityNotFound(_0x14ff68,null))['then'](function(_0x4d022b){if(_0x4d022b){_0x4e6e60[_0xbc4e('0x28')]=_0x4d022b[_0xbc4e('0x62')]({'plain':!![]});return db[_0xbc4e('0x63')][_0xbc4e('0x55')]({'where':{'id':_0x4d022b[_0xbc4e('0x77')]}});}return null;})[_0xbc4e('0x34')](handleEntityNotFound(_0x14ff68,null))[_0xbc4e('0x34')](function(_0x97d646){if(_0x97d646){_0x4e6e60[_0xbc4e('0x66')]=_0x97d646[_0xbc4e('0x62')]({'plain':!![]});interaction_log['info'](_0xbc4e('0x78'),_0x2201ba[_0xbc4e('0x60')]['id'],_0x2201ba['user']['name'],_0x2201ba[_0xbc4e('0x60')][_0xbc4e('0x68')],_0x4e6e60[_0xbc4e('0x66')]['id'],_0x2201ba[_0xbc4e('0x57')]?JSON[_0xbc4e('0x25')](_0x2201ba[_0xbc4e('0x57')]):_0xbc4e('0x69'));return respondWithRpcPromise(_0xbc4e('0x79'),_0xbc4e('0x7a'),_0x4e6e60);}return null;})[_0xbc4e('0x34')](function(_0x592e52){var _0x66a04c=_0xbc4e('0x6c')+_0x592e52[_0xbc4e('0x28')]['ContactId'];return db[_0xbc4e('0x6e')][_0xbc4e('0x3d')](_0x66a04c,{'type':db[_0xbc4e('0x7b')][_0xbc4e('0x6f')][_0xbc4e('0x7c')],'raw':!![]})[_0xbc4e('0x34')](function(_0x4fdc73){return _0x4fdc73;});})[_0xbc4e('0x34')](function(_0x22ba1a){if(_0x22ba1a){_0x4e6e60[_0xbc4e('0x28')]['contact']=_0x22ba1a[0x0];if(!_0x2201ba['body'][_0xbc4e('0x5f')])return;return db['User']['find']({'where':{'id':_0x2201ba[_0xbc4e('0x57')]['UserId'],'role':_0xbc4e('0x61')},'attributes':['id','name','fullname',_0xbc4e('0x70'),'internal'],'raw':!![]});}return null;})['then'](function(_0x5bc720){if(!_0x5bc720)return null;_0x4e6e60[_0xbc4e('0x28')][_0xbc4e('0x61')]=_0x5bc720;return _0x4e6e60;})[_0xbc4e('0x34')](function(_0xef9eda){if(_0xef9eda){_0xef9eda[_0xbc4e('0x28')][_0xbc4e('0x7d')]=util[_0xbc4e('0x65')](_0xbc4e('0x72'),_0x2201ba['user'][_0xbc4e('0x38')]);_0xef9eda[_0xbc4e('0x28')][_0xbc4e('0x73')]=_0x4e6e60[_0xbc4e('0x73')];_0xef9eda[_0xbc4e('0x28')][_0xbc4e('0x7e')]=_0x4e6e60[_0xbc4e('0x73')];_0xef9eda[_0xbc4e('0x28')][_0xbc4e('0x74')]=_0xbc4e('0x76');respondWithRpcPromise(_0xbc4e('0x7f'),_0xbc4e('0x7f'),{'event':_0xbc4e('0x80'),'message':_0xef9eda[_0xbc4e('0x28')]},client9002);return _0x4e6e60;}return null;})['then'](respondWithResult(_0x14ff68,null))['catch'](handleError(_0x14ff68,null));};exports[_0xbc4e('0x2b')]=function(_0x472db4,_0x3d3d16,_0x5d3cff){if(_0x472db4['body']['id']){delete _0x472db4[_0xbc4e('0x57')]['id'];}var _0x41303b;return db[_0xbc4e('0x3b')]['find']({'where':{'id':_0x472db4[_0xbc4e('0x58')]['id']}})[_0xbc4e('0x34')](handleEntityNotFound(_0x3d3d16,null))[_0xbc4e('0x34')](function(_0xf72f99){if(_0xf72f99){_0x41303b=_0xf72f99;return db[_0xbc4e('0x81')][_0xbc4e('0x55')]({'where':{'id':_0xf72f99[_0xbc4e('0x82')]}});}})[_0xbc4e('0x34')](handleEntityNotFound(_0x3d3d16,null))[_0xbc4e('0x34')](function(_0x4023fe){if(_0x4023fe){logger[_0xbc4e('0x22')](_0xbc4e('0x83'),_0xbc4e('0x2b'),_0xbc4e('0x84'),_0x4023fe['type'],util['inspect'](_0x472db4[_0xbc4e('0x57')],{'showHidden':![],'depth':null}));switch(_0x4023fe['type']){case _0xbc4e('0x85'):if(_0x472db4[_0xbc4e('0x57')][_0xbc4e('0x86')]&&_0x472db4[_0xbc4e('0x57')][_0xbc4e('0x86')]===_0x41303b['messageId']&&_0x472db4[_0xbc4e('0x57')][_0xbc4e('0x87')]&&_0x472db4[_0xbc4e('0x57')][_0xbc4e('0x87')]===_0xbc4e('0x5c')){return _0x41303b[_0xbc4e('0x33')]({'read':!![]});}else{logger[_0xbc4e('0x26')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0xbc4e('0x2b'),_0xbc4e('0x85'),util['inspect'](_0x472db4[_0xbc4e('0x57')],{'showHidden':![],'depth':null}));}break;}return _0x41303b;}})[_0xbc4e('0x34')](respondWithResult(_0x3d3d16,null))[_0xbc4e('0x29')](handleError(_0x3d3d16,null));};
\ No newline at end of file
index 6d4eba8..0dbbb93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd64b=['exports','events','WhatsappMessage','save','update','remove','hasOwnProperty','hook'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xd64b,0xc1));var _0xbd64=function(_0x31922d,_0x35f27b){_0x31922d=_0x31922d-0x0;var _0x255700=_0xd64b[_0x31922d];return _0x255700;};'use strict';var EventEmitter=require(_0xbd64('0x0'));var WhatsappMessage=require('../../mysqldb')['db'][_0xbd64('0x1')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xbd64('0x2'),'afterUpdate':_0xbd64('0x3'),'afterDestroy':_0xbd64('0x4')};function emitEvent(_0x3f1f05){return function(_0x30fe29,_0x5458d8,_0x5446e4){WhatsappMessageEvents['emit'](_0x3f1f05+':'+_0x30fe29['id'],_0x30fe29);WhatsappMessageEvents['emit'](_0x3f1f05,_0x30fe29);_0x5446e4(null);};}for(var e in events){if(events[_0xbd64('0x5')](e)){var event=events[e];WhatsappMessage[_0xbd64('0x6')](e,emitEvent(event));}}module[_0xbd64('0x7')]=WhatsappMessageEvents;
\ No newline at end of file
+var _0x422f=['../../mysqldb','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0x422f,0x1c7));var _0xf422=function(_0x507ff4,_0x4fabda){_0x507ff4=_0x507ff4-0x0;var _0x68480c=_0x422f[_0x507ff4];return _0x68480c;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0xf422('0x0'))['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0xf422('0x1')](0x0);var events={'afterCreate':_0xf422('0x2'),'afterUpdate':'update','afterDestroy':_0xf422('0x3')};function emitEvent(_0x172a93){return function(_0x312bc8,_0x444ad5,_0x16047c){WhatsappMessageEvents[_0xf422('0x4')](_0x172a93+':'+_0x312bc8['id'],_0x312bc8);WhatsappMessageEvents[_0xf422('0x4')](_0x172a93,_0x312bc8);_0x16047c(null);};}for(var e in events){if(events[_0xf422('0x5')](e)){var event=events[e];WhatsappMessage[_0xf422('0x6')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
index c57ad43..d0b0d0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x134d=['token','sid','afterCreate','inspect','WhatsappMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/whatsapp/v1/','/messages/','text','POST','application/json','message_id','statuses','err','WhatsappMessage,\x20%s','finally','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','node-fetch','path','rimraf','../../config/environment','./whatsappMessage.attributes','exports','whatsapp_messages','messageId','fti_whatsapp_messages','FULLTEXT','models','direction','toLowerCase','out','secret','UserId','WhatsappInteractionId','then','update','catch','error','find','WhatsappAccountId','type','twilio','authToken','phone','accountSid','create','body','/api/whatsapp/messages/','/status?token='];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x134d,0xfc));var _0xd134=function(_0x32d1c1,_0x620f95){_0x32d1c1=_0x32d1c1-0x0;var _0x32ffb9=_0x134d[_0x32d1c1];return _0x32ffb9;};'use strict';var _=require(_0xd134('0x0'));var util=require('util');var logger=require(_0xd134('0x1'))(_0xd134('0x2'));var moment=require(_0xd134('0x3'));var BPromise=require(_0xd134('0x4'));var rp=require(_0xd134('0x5'));var fetch=require(_0xd134('0x6'));var fs=require('fs');var path=require(_0xd134('0x7'));var rimraf=require(_0xd134('0x8'));var config=require(_0xd134('0x9'));var attributes=require(_0xd134('0xa'));module[_0xd134('0xb')]=function(_0x4bf824,_0x5bd6a3){return _0x4bf824['define']('WhatsappMessage',attributes,{'tableName':_0xd134('0xc'),'paranoid':![],'indexes':[{'name':_0xd134('0xd'),'fields':[_0xd134('0xd')]},{'name':_0xd134('0xe'),'fields':['body'],'type':_0xd134('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x482267,_0x458527,_0x3e0e65){var _0x397764=_0x4bf824[_0xd134('0x10')];var _0x351960=_0x482267['get']({'plain':!![]});if(_0x351960[_0xd134('0x11')][_0xd134('0x12')]()==='in'||_0x351960[_0xd134('0x11')][_0xd134('0x12')]()===_0xd134('0x13')&&!_0x351960[_0xd134('0x14')]&&!_['isNil'](_0x351960[_0xd134('0x15')])){_0x397764['WhatsappInteraction']['findOne']({'where':{'id':_0x351960[_0xd134('0x16')]}})[_0xd134('0x17')](function(_0x1163a0){if(_0x1163a0){_0x1163a0[_0xd134('0x18')]({'lastMsgAt':_0x351960['createdAt'],'lastMsgDirection':_0x351960['direction'][_0xd134('0x12')]()});}})[_0xd134('0x19')](function(_0x2e4590){console[_0xd134('0x1a')](_0x2e4590);});}if(_0x351960['direction']===_0xd134('0x13')&&!_0x351960[_0xd134('0x14')]){var _0x495a3e;_0x397764['WhatsappAccount'][_0xd134('0x1b')]({'where':{'id':_0x351960[_0xd134('0x1c')]},'raw':!![]})[_0xd134('0x17')](function(_0x2953cd){_0x495a3e=_0x2953cd;if(_0x495a3e&&_0x495a3e[_0xd134('0x1d')]){switch(_0x495a3e[_0xd134('0x1d')]){case _0xd134('0x1e'):var _0xba8b6d=require(_0xd134('0x1e'));if(_0x495a3e['accountSid']&&_0x495a3e[_0xd134('0x1f')]&&_0x495a3e[_0xd134('0x20')]){var _0x10e2d6=new _0xba8b6d(_0x495a3e[_0xd134('0x21')],_0x495a3e[_0xd134('0x1f')]);_0x10e2d6['messages'][_0xd134('0x22')]({'body':_0x351960[_0xd134('0x23')],'to':'whatsapp:'+_0x351960[_0xd134('0x20')],'from':'whatsapp:'+_0x495a3e[_0xd134('0x20')],'statusCallback':_0x495a3e['remote']+_0xd134('0x24')+_0x351960['id']+_0xd134('0x25')+_0x495a3e[_0xd134('0x26')]})[_0xd134('0x17')](function(_0x28b05c){if(_0x28b05c[_0xd134('0x27')]){return _0x482267[_0xd134('0x18')]({'messageId':_0x28b05c[_0xd134('0x27')]});}})[_0xd134('0x19')](function(_0x3698f9){logger[_0xd134('0x1a')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xd134('0x28'),_0xd134('0x1e'),util[_0xd134('0x29')](_0x3698f9,{'showHidden':![],'depth':null}));});}else{logger[_0xd134('0x1a')](_0xd134('0x2a'),_0xd134('0x28'),_0xd134('0x1e'),_0xd134('0x2b'));}break;case _0xd134('0x2c'):var _0x17b4b2=_0x495a3e[_0xd134('0x21')];var _0x21ac16=_0x495a3e['authToken'];var _0x5a7503=_0x495a3e[_0xd134('0x2d')]+_0xd134('0x2e')+_0x17b4b2+_0xd134('0x2f');var _0x5a631a={'to':[_0x351960[_0xd134('0x20')]],'message':{'type':_0xd134('0x30'),'text':_0x351960[_0xd134('0x23')]}};var _0x372a8f={'method':_0xd134('0x31'),'uri':_0x5a7503,'headers':{'Authorization':'Bearer\x20'+_0x21ac16,'Content-Type':_0xd134('0x32')},'body':_0x5a631a,'json':!![]};rp(_0x372a8f)['then'](function(_0x3f7c5a){if(_0x3f7c5a['statuses'][0x0][_0xd134('0x33')]){return _0x482267[_0xd134('0x18')]({'messageId':_0x3f7c5a[_0xd134('0x34')][0x0]['message_id']});}})[_0xd134('0x19')](function(_0x3c1a0d){logger[_0xd134('0x35')](_0xd134('0x36'),_0x3c1a0d);});break;}}})[_0xd134('0x37')](function(){_0x3e0e65();});}else{_0x3e0e65();}}},'charset':_0xd134('0x38'),'collate':_0xd134('0x39')});};
\ No newline at end of file
+var _0xa306=['WhatsappInteractionId','then','catch','error','WhatsappAccount','find','WhatsappAccountId','type','accountSid','phone','authToken','create','whatsapp:','remote','/api/whatsapp/messages/','token','sid','update','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/whatsapp/v1/','POST','application/json','statuses','message_id','finally','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','request-promise','node-fetch','path','rimraf','../../config/environment','./whatsappMessage.attributes','exports','define','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','get','direction','toLowerCase','secret','UserId','findOne'];(function(_0x2601b4,_0x315e78){var _0x3e3661=function(_0x13b45b){while(--_0x13b45b){_0x2601b4['push'](_0x2601b4['shift']());}};_0x3e3661(++_0x315e78);}(_0xa306,0x1cf));var _0x6a30=function(_0x56916d,_0x37b935){_0x56916d=_0x56916d-0x0;var _0x2b7f1f=_0xa306[_0x56916d];return _0x2b7f1f;};'use strict';var _=require(_0x6a30('0x0'));var util=require(_0x6a30('0x1'));var logger=require(_0x6a30('0x2'))('api');var moment=require(_0x6a30('0x3'));var BPromise=require('bluebird');var rp=require(_0x6a30('0x4'));var fetch=require(_0x6a30('0x5'));var fs=require('fs');var path=require(_0x6a30('0x6'));var rimraf=require(_0x6a30('0x7'));var config=require(_0x6a30('0x8'));var attributes=require(_0x6a30('0x9'));module[_0x6a30('0xa')]=function(_0x244dd0,_0x3a5b4b){return _0x244dd0[_0x6a30('0xb')]('WhatsappMessage',attributes,{'tableName':_0x6a30('0xc'),'paranoid':![],'indexes':[{'name':_0x6a30('0xd'),'fields':[_0x6a30('0xd')]},{'name':_0x6a30('0xe'),'fields':[_0x6a30('0xf')],'type':_0x6a30('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4f348e,_0x451abf,_0x1c361d){var _0x574c7b=_0x244dd0['models'];var _0xf5f84e=_0x4f348e[_0x6a30('0x11')]({'plain':!![]});if(_0xf5f84e[_0x6a30('0x12')]['toLowerCase']()==='in'||_0xf5f84e['direction'][_0x6a30('0x13')]()==='out'&&!_0xf5f84e[_0x6a30('0x14')]&&!_['isNil'](_0xf5f84e[_0x6a30('0x15')])){_0x574c7b['WhatsappInteraction'][_0x6a30('0x16')]({'where':{'id':_0xf5f84e[_0x6a30('0x17')]}})[_0x6a30('0x18')](function(_0x3766f2){if(_0x3766f2){_0x3766f2['update']({'lastMsgAt':_0xf5f84e['createdAt'],'lastMsgDirection':_0xf5f84e[_0x6a30('0x12')][_0x6a30('0x13')]()});}})[_0x6a30('0x19')](function(_0x35d378){console[_0x6a30('0x1a')](_0x35d378);});}if(_0xf5f84e[_0x6a30('0x12')]==='out'&&!_0xf5f84e[_0x6a30('0x14')]){var _0x333448;_0x574c7b[_0x6a30('0x1b')][_0x6a30('0x1c')]({'where':{'id':_0xf5f84e[_0x6a30('0x1d')]},'raw':!![]})['then'](function(_0x2f80c5){_0x333448=_0x2f80c5;if(_0x333448&&_0x333448[_0x6a30('0x1e')]){switch(_0x333448[_0x6a30('0x1e')]){case'twilio':var _0x27b4da=require('twilio');if(_0x333448[_0x6a30('0x1f')]&&_0x333448['authToken']&&_0x333448[_0x6a30('0x20')]){var _0x27db7d=new _0x27b4da(_0x333448['accountSid'],_0x333448[_0x6a30('0x21')]);_0x27db7d['messages'][_0x6a30('0x22')]({'body':_0xf5f84e['body'],'to':_0x6a30('0x23')+_0xf5f84e['phone'],'from':_0x6a30('0x23')+_0x333448[_0x6a30('0x20')],'statusCallback':_0x333448[_0x6a30('0x24')]+_0x6a30('0x25')+_0xf5f84e['id']+'/status?token='+_0x333448[_0x6a30('0x26')]})[_0x6a30('0x18')](function(_0x1bcf7b){if(_0x1bcf7b[_0x6a30('0x27')]){return _0x4f348e[_0x6a30('0x28')]({'messageId':_0x1bcf7b[_0x6a30('0x27')]});}})['catch'](function(_0x512710){logger[_0x6a30('0x1a')](_0x6a30('0x29'),_0x6a30('0x2a'),_0x6a30('0x2b'),util['inspect'](_0x512710,{'showHidden':![],'depth':null}));});}else{logger[_0x6a30('0x1a')](_0x6a30('0x29'),_0x6a30('0x2a'),_0x6a30('0x2b'),_0x6a30('0x2c'));}break;case _0x6a30('0x2d'):var _0x528884=_0x333448[_0x6a30('0x1f')];var _0x48fded=_0x333448[_0x6a30('0x21')];var _0x5d443b=_0x333448[_0x6a30('0x2e')]+_0x6a30('0x2f')+_0x528884+'/messages/';var _0x3fd0e4={'to':[_0xf5f84e[_0x6a30('0x20')]],'message':{'type':'text','text':_0xf5f84e[_0x6a30('0xf')]}};var _0x2dd9b1={'method':_0x6a30('0x30'),'uri':_0x5d443b,'headers':{'Authorization':'Bearer\x20'+_0x48fded,'Content-Type':_0x6a30('0x31')},'body':_0x3fd0e4,'json':!![]};rp(_0x2dd9b1)['then'](function(_0x1eafcb){if(_0x1eafcb[_0x6a30('0x32')][0x0][_0x6a30('0x33')]){return _0x4f348e[_0x6a30('0x28')]({'messageId':_0x1eafcb[_0x6a30('0x32')][0x0][_0x6a30('0x33')]});}})[_0x6a30('0x19')](function(_0x1397da){logger['err']('WhatsappMessage,\x20%s',_0x1397da);});break;}}})[_0x6a30('0x34')](function(){_0x1c361d();});}else{_0x1c361d();}}},'charset':'utf8mb4','collate':_0x6a30('0x35')});};
\ No newline at end of file
index d104eb6..caa8aa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b64=['raw','debug','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','defaults','redis','./whatsappMessage.socket','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateWhatsappMessage','create','body','options'];(function(_0x481604,_0x276ff8){var _0x1ca4ed=function(_0x136e9d){while(--_0x136e9d){_0x481604['push'](_0x481604['shift']());}};_0x1ca4ed(++_0x276ff8);}(_0x5b64,0x15e));var _0x45b6=function(_0x10848d,_0x49ab9b){_0x10848d=_0x10848d-0x0;var _0x5d09ec=_0x5b64[_0x10848d];return _0x5d09ec;};'use strict';var _=require('lodash');var util=require(_0x45b6('0x0'));var moment=require(_0x45b6('0x1'));var BPromise=require('bluebird');var rs=require(_0x45b6('0x2'));var fs=require('fs');var Redis=require(_0x45b6('0x3'));var db=require(_0x45b6('0x4'))['db'];var utils=require(_0x45b6('0x5'));var logger=require(_0x45b6('0x6'))('rpc');var config=require(_0x45b6('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x45b6('0x8')][_0x45b6('0x9')]({'port':0x232a});config['redis']=_[_0x45b6('0xa')](config[_0x45b6('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x45b6('0xb')]));require(_0x45b6('0xc'))['register'](socket);function respondWithRpcPromise(_0x1b3012,_0x2a8b14,_0x4a5863){return new BPromise(function(_0x3043c9,_0x3ed21c){return client[_0x45b6('0xd')](_0x1b3012,_0x4a5863)['then'](function(_0x55cb46){logger[_0x45b6('0xe')](_0x45b6('0xf'),_0x2a8b14,_0x45b6('0x10'));logger['debug']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x2a8b14,_0x45b6('0x10'),JSON[_0x45b6('0x11')](_0x55cb46));if(_0x55cb46[_0x45b6('0x12')]){if(_0x55cb46[_0x45b6('0x12')][_0x45b6('0x13')]===0x1f4){logger[_0x45b6('0x12')]('WhatsappMessage,\x20%s,\x20%s',_0x2a8b14,_0x55cb46[_0x45b6('0x12')]['message']);return _0x3ed21c(_0x55cb46['error'][_0x45b6('0x14')]);}logger[_0x45b6('0x12')](_0x45b6('0xf'),_0x2a8b14,_0x55cb46[_0x45b6('0x12')][_0x45b6('0x14')]);return _0x3043c9(_0x55cb46[_0x45b6('0x12')][_0x45b6('0x14')]);}else{logger[_0x45b6('0xe')](_0x45b6('0xf'),_0x2a8b14,_0x45b6('0x10'));_0x3043c9(_0x55cb46[_0x45b6('0x15')][_0x45b6('0x14')]);}})[_0x45b6('0x16')](function(_0x103334){logger[_0x45b6('0x12')](_0x45b6('0xf'),_0x2a8b14,_0x103334);_0x3ed21c(_0x103334);});});}exports[_0x45b6('0x17')]=function(_0x488e07){var _0x192bd2=this;return new Promise(function(_0x45e8c0,_0x5c4a8d){return db['WhatsappMessage'][_0x45b6('0x18')](_0x488e07[_0x45b6('0x19')],{'raw':_0x488e07[_0x45b6('0x1a')]?_0x488e07['options'][_0x45b6('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x44acd0){logger[_0x45b6('0xe')](_0x45b6('0x17'),_0x488e07);logger[_0x45b6('0x1c')](_0x45b6('0x17'),_0x488e07,JSON[_0x45b6('0x11')](_0x44acd0));_0x45e8c0(_0x44acd0);})[_0x45b6('0x16')](function(_0x149b65){logger[_0x45b6('0x12')](_0x45b6('0x17'),_0x149b65[_0x45b6('0x14')],_0x488e07);_0x5c4a8d(_0x192bd2[_0x45b6('0x12')](0x1f4,_0x149b65[_0x45b6('0x14')]));});});};
\ No newline at end of file
+var _0x4785=['../../config/utils','../../config/logger','client','http','defaults','redis','localhost','register','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','error','message','result','catch','CreateWhatsappMessage','WhatsappMessage','create','body','options','raw','debug','stringify','moment','randomstring','ioredis','../../mysqldb'];(function(_0x34cb6d,_0x1e05b5){var _0x51b433=function(_0x2326b8){while(--_0x2326b8){_0x34cb6d['push'](_0x34cb6d['shift']());}};_0x51b433(++_0x1e05b5);}(_0x4785,0xa4));var _0x5478=function(_0x32a254,_0x14e1d0){_0x32a254=_0x32a254-0x0;var _0x799afb=_0x4785[_0x32a254];return _0x799afb;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x5478('0x0'));var BPromise=require('bluebird');var rs=require(_0x5478('0x1'));var fs=require('fs');var Redis=require(_0x5478('0x2'));var db=require(_0x5478('0x3'))['db'];var utils=require(_0x5478('0x4'));var logger=require(_0x5478('0x5'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5478('0x6')][_0x5478('0x7')]({'port':0x232a});config['redis']=_[_0x5478('0x8')](config[_0x5478('0x9')],{'host':_0x5478('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5478('0x9')]));require('./whatsappMessage.socket')[_0x5478('0xb')](socket);function respondWithRpcPromise(_0x4dcfc2,_0x1d3646,_0x5aeb7d){return new BPromise(function(_0x4f51cc,_0x5739cb){return client[_0x5478('0xc')](_0x4dcfc2,_0x5aeb7d)['then'](function(_0x570fb7){logger[_0x5478('0xd')](_0x5478('0xe'),_0x1d3646,_0x5478('0xf'));logger['debug']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x1d3646,_0x5478('0xf'),JSON['stringify'](_0x570fb7));if(_0x570fb7['error']){if(_0x570fb7[_0x5478('0x10')]['code']===0x1f4){logger[_0x5478('0x10')](_0x5478('0xe'),_0x1d3646,_0x570fb7[_0x5478('0x10')][_0x5478('0x11')]);return _0x5739cb(_0x570fb7[_0x5478('0x10')]['message']);}logger[_0x5478('0x10')]('WhatsappMessage,\x20%s,\x20%s',_0x1d3646,_0x570fb7['error'][_0x5478('0x11')]);return _0x4f51cc(_0x570fb7[_0x5478('0x10')][_0x5478('0x11')]);}else{logger['info']('WhatsappMessage,\x20%s,\x20%s',_0x1d3646,'request\x20sent');_0x4f51cc(_0x570fb7[_0x5478('0x12')][_0x5478('0x11')]);}})[_0x5478('0x13')](function(_0x3ffeec){logger['error'](_0x5478('0xe'),_0x1d3646,_0x3ffeec);_0x5739cb(_0x3ffeec);});});}exports[_0x5478('0x14')]=function(_0x225db0){var _0x3fe246=this;return new Promise(function(_0x1e4f30,_0x31b305){return db[_0x5478('0x15')][_0x5478('0x16')](_0x225db0[_0x5478('0x17')],{'raw':_0x225db0[_0x5478('0x18')]?_0x225db0[_0x5478('0x18')][_0x5478('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x361d3e){logger['info'](_0x5478('0x14'),_0x225db0);logger[_0x5478('0x1a')](_0x5478('0x14'),_0x225db0,JSON[_0x5478('0x1b')](_0x361d3e));_0x1e4f30(_0x361d3e);})['catch'](function(_0x7e55d9){logger['error'](_0x5478('0x14'),_0x7e55d9['message'],_0x225db0);_0x31b305(_0x3fe246[_0x5478('0x10')](0x1f4,_0x7e55d9[_0x5478('0x11')]));});});};
\ No newline at end of file
index b4812b7..bd9b355 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2164=['length','save','remove','update','emit','removeListener'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0x2164,0x187));var _0x4216=function(_0x22c1ea,_0x37210c){_0x22c1ea=_0x22c1ea-0x0;var _0x2a7c46=_0x2164[_0x22c1ea];return _0x2a7c46;};'use strict';var WhatsappMessageEvents=require('./whatsappMessage.events');var events=[_0x4216('0x0'),_0x4216('0x1'),_0x4216('0x2')];function createListener(_0xc3988d,_0xa312d7){return function(_0x53dc5d){_0xa312d7[_0x4216('0x3')](_0xc3988d,_0x53dc5d);};}function removeListener(_0x2c015a,_0x1341d8){return function(){WhatsappMessageEvents[_0x4216('0x4')](_0x2c015a,_0x1341d8);};}exports['register']=function(_0x45bcdd){for(var _0x98a04c=0x0,_0x4b5e7a=events[_0x4216('0x5')];_0x98a04c<_0x4b5e7a;_0x98a04c++){var _0x52f08a=events[_0x98a04c];var _0x24531a=createListener('whatsappMessage:'+_0x52f08a,_0x45bcdd);WhatsappMessageEvents['on'](_0x52f08a,_0x24531a);}};
\ No newline at end of file
+var _0xa67a=['save','register','whatsappMessage:','./whatsappMessage.events'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xa67a,0x1eb));var _0xaa67=function(_0x37e88f,_0x12b915){_0x37e88f=_0x37e88f-0x0;var _0x263589=_0xa67a[_0x37e88f];return _0x263589;};'use strict';var WhatsappMessageEvents=require(_0xaa67('0x0'));var events=[_0xaa67('0x1'),'remove','update'];function createListener(_0x21ce29,_0x44d19d){return function(_0x54982b){_0x44d19d['emit'](_0x21ce29,_0x54982b);};}function removeListener(_0x12c78d,_0x129b19){return function(){WhatsappMessageEvents['removeListener'](_0x12c78d,_0x129b19);};}exports[_0xaa67('0x2')]=function(_0x4cab2e){for(var _0x3b9f83=0x0,_0x380151=events['length'];_0x3b9f83<_0x380151;_0x3b9f83++){var _0x534701=events[_0x3b9f83];var _0xb1b956=createListener(_0xaa67('0x3')+_0x534701,_0x4cab2e);WhatsappMessageEvents['on'](_0x534701,_0xb1b956);}};
\ No newline at end of file
index ee1b3af..177b1cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa927=['path','express','../../components/auth/service','./whatsappQueue.controller','get','/describe','isAuthenticated','describe','/:id','show','/:id/teams','getAgents','post','create','addTeams','/:id/users','delete','removeAgents','exports','multer'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xa927,0xc7));var _0x7a92=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa927[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x7a92('0x0'));var util=require('util');var path=require(_0x7a92('0x1'));var timeout=require('connect-timeout');var express=require(_0x7a92('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x7a92('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x7a92('0x4'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x7a92('0x5')](_0x7a92('0x6'),auth[_0x7a92('0x7')](),controller[_0x7a92('0x8')]);router[_0x7a92('0x5')](_0x7a92('0x9'),auth[_0x7a92('0x7')](),controller[_0x7a92('0xa')]);router[_0x7a92('0x5')]('/:id/members',auth[_0x7a92('0x7')](),controller['getMembers']);router[_0x7a92('0x5')](_0x7a92('0xb'),auth['isAuthenticated'](),controller['getTeams']);router[_0x7a92('0x5')]('/:id/users',auth[_0x7a92('0x7')](),controller[_0x7a92('0xc')]);router[_0x7a92('0xd')]('/',auth[_0x7a92('0x7')](),controller[_0x7a92('0xe')]);router[_0x7a92('0xd')]('/:id/teams',auth[_0x7a92('0x7')](),controller[_0x7a92('0xf')]);router[_0x7a92('0xd')](_0x7a92('0x10'),auth[_0x7a92('0x7')](),controller['addAgents']);router['put'](_0x7a92('0x9'),auth[_0x7a92('0x7')](),controller['update']);router[_0x7a92('0x11')](_0x7a92('0x9'),auth[_0x7a92('0x7')](),controller['destroy']);router[_0x7a92('0x11')](_0x7a92('0xb'),auth[_0x7a92('0x7')](),controller['removeTeams']);router['delete'](_0x7a92('0x10'),auth['isAuthenticated'](),controller[_0x7a92('0x12')]);module[_0x7a92('0x13')]=router;
\ No newline at end of file
+var _0xbb97=['getAgents','post','/:id/users','addAgents','put','update','delete','destroy','removeTeams','exports','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','index','isAuthenticated','show','/:id/teams'];(function(_0x404b35,_0x16dd9e){var _0x3e53d6=function(_0x5c3545){while(--_0x5c3545){_0x404b35['push'](_0x404b35['shift']());}};_0x3e53d6(++_0x16dd9e);}(_0xbb97,0xf0));var _0x7bb9=function(_0x5bd830,_0x389339){_0x5bd830=_0x5bd830-0x0;var _0x5a76af=_0xbb97[_0x5bd830];return _0x5a76af;};'use strict';var multer=require(_0x7bb9('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x7bb9('0x1'));var express=require(_0x7bb9('0x2'));var router=express[_0x7bb9('0x3')]();var fs_extra=require(_0x7bb9('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x7bb9('0x5'));var config=require(_0x7bb9('0x6'));var controller=require(_0x7bb9('0x7'));router[_0x7bb9('0x8')]('/',auth['isAuthenticated'](),controller[_0x7bb9('0x9')]);router['get']('/describe',auth[_0x7bb9('0xa')](),controller['describe']);router[_0x7bb9('0x8')]('/:id',auth[_0x7bb9('0xa')](),controller[_0x7bb9('0xb')]);router[_0x7bb9('0x8')]('/:id/members',auth[_0x7bb9('0xa')](),controller['getMembers']);router[_0x7bb9('0x8')](_0x7bb9('0xc'),auth[_0x7bb9('0xa')](),controller['getTeams']);router['get']('/:id/users',auth[_0x7bb9('0xa')](),controller[_0x7bb9('0xd')]);router[_0x7bb9('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7bb9('0xe')](_0x7bb9('0xc'),auth[_0x7bb9('0xa')](),controller['addTeams']);router[_0x7bb9('0xe')](_0x7bb9('0xf'),auth[_0x7bb9('0xa')](),controller[_0x7bb9('0x10')]);router[_0x7bb9('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x7bb9('0x12')]);router[_0x7bb9('0x13')]('/:id',auth[_0x7bb9('0xa')](),controller[_0x7bb9('0x14')]);router['delete']('/:id/teams',auth[_0x7bb9('0xa')](),controller[_0x7bb9('0x15')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0x7bb9('0x16')]=router;
\ No newline at end of file
index bbb8432..af1f650 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['name','INTEGER','ENUM','beepall','roundrobin','STRING'];(function(_0x31e982,_0x521c6a){var _0x3efb59=function(_0x9a5416){while(--_0x9a5416){_0x31e982['push'](_0x31e982['shift']());}};_0x3efb59(++_0x521c6a);}(_0xcb91,0x1a9));var _0x1cb9=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0xcb91[_0xdea41a];return _0x15d0d8;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x1cb9('0x0')],'unique':_0x1cb9('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x1cb9('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x1cb9('0x3')]('rrmemory',_0x1cb9('0x4'),_0x1cb9('0x5'))},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xcffe=['rrmemory','beepall','roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM'];(function(_0x399599,_0x51b65f){var _0x22202e=function(_0x39fac5){while(--_0x39fac5){_0x399599['push'](_0x399599['shift']());}};_0x22202e(++_0x51b65f);}(_0xcffe,0x1a1));var _0xecff=function(_0x2ffc5d,_0x564eba){_0x2ffc5d=_0x2ffc5d-0x0;var _0x57f0a=_0xcffe[_0x2ffc5d];return _0x57f0a;};'use strict';var Sequelize=require(_0xecff('0x0'));module[_0xecff('0x1')]={'name':{'type':Sequelize[_0xecff('0x2')],'unique':_0xecff('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0xecff('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xecff('0x5')](_0xecff('0x6'),_0xecff('0x7'),_0xecff('0x8'))},'description':{'type':Sequelize[_0xecff('0x2')]}};
\ No newline at end of file
index 174ba51..254f1f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x575a=['fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./whatsappQueue.socket','register','sendStatus','status','end','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy','get','WhatsappQueues','error','stack','index','map','WhatsappQueue','fieldName','type','keys','query','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','rawAttributes','find','create','body','user','role','UserProfileSection','userProfileId','UserProfileResource','name','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','UserWhatsappQueue','pick','WhatsappQueueId','findAll','User','UserId','agent','updatedAt','createdAt','%s/%s','SIP','whatsappPause','getTeams','findOne','Team','addTeams','Agents','online','interface','flatMap','sequelize','each','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','ids','select','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','push','toString','QueryTypes','SELECT','TeamId','includes','all','compact','value','transaction','isEmpty','userWhatsappQueue:remove','addAgents','spread','isArray','getAgents','zip-dir','request-promise','bluebird','mustache','util','path','to-csv'];(function(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_0x575a,0x83));var _0xa575=function(_0x2adfb1,_0x406e6e){_0x2adfb1=_0x2adfb1-0x0;var _0xa52d45=_0x575a[_0x2adfb1];return _0xa52d45;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xa575('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa575('0x1'));var moment=require('moment');var BPromise=require(_0xa575('0x2'));var Mustache=require(_0xa575('0x3'));var util=require(_0xa575('0x4'));var path=require(_0xa575('0x5'));var sox=require('sox');var csv=require(_0xa575('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa575('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xa575('0x8'));var jsforce=require(_0xa575('0x9'));var deskjs=require(_0xa575('0xa'));var toCsv=require(_0xa575('0x6'));var querystring=require(_0xa575('0xb'));var Papa=require(_0xa575('0xc'));var Redis=require(_0xa575('0xd'));var authService=require(_0xa575('0xe'));var qs=require(_0xa575('0xf'));var as=require(_0xa575('0x10'));var hardwareService=require(_0xa575('0x11'));var logger=require(_0xa575('0x12'))('api');var utils=require(_0xa575('0x13'));var config=require(_0xa575('0x14'));var licenseUtil=require(_0xa575('0x15'));var db=require(_0xa575('0x16'))['db'];config[_0xa575('0x17')]=_[_0xa575('0x18')](config['redis'],{'host':_0xa575('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa575('0x17')]));require(_0xa575('0x1a'))[_0xa575('0x1b')](socket);function respondWithStatusCode(_0x2595a7,_0x145e12){_0x145e12=_0x145e12||0xcc;return function(_0x8b65a8){if(_0x8b65a8){return _0x2595a7[_0xa575('0x1c')](_0x145e12);}return _0x2595a7[_0xa575('0x1d')](_0x145e12)[_0xa575('0x1e')]();};}function respondWithResult(_0x5dc793,_0x5ba525){_0x5ba525=_0x5ba525||0xc8;return function(_0x2afc2e){if(_0x2afc2e){return _0x5dc793['status'](_0x5ba525)['json'](_0x2afc2e);}};}function respondWithFilteredResult(_0x5f0192,_0x1ddaff){return function(_0x2214ac){if(_0x2214ac){var _0x3d5553=typeof _0x1ddaff[_0xa575('0x1f')]==='undefined'&&typeof _0x1ddaff[_0xa575('0x20')]===_0xa575('0x21');var _0x50d2a2=_0x2214ac['count'];var _0xecbabc=_0x3d5553?0x0:_0x1ddaff['offset'];var _0x1d763a=_0x3d5553?_0x2214ac[_0xa575('0x22')]:_0x1ddaff['offset']+_0x1ddaff['limit'];var _0x16db57;if(_0x1d763a>=_0x50d2a2){_0x1d763a=_0x50d2a2;_0x16db57=0xc8;}else{_0x16db57=0xce;}_0x5f0192[_0xa575('0x1d')](_0x16db57);return _0x5f0192[_0xa575('0x23')]('Content-Range',_0xecbabc+'-'+_0x1d763a+'/'+_0x50d2a2)['json'](_0x2214ac);}return null;};}function patchUpdates(_0x17012b){return function(_0x23474f){try{jsonpatch[_0xa575('0x24')](_0x23474f,_0x17012b,!![]);}catch(_0x244914){return BPromise[_0xa575('0x25')](_0x244914);}return _0x23474f[_0xa575('0x26')]();};}function saveUpdates(_0x32a850,_0x70ddf4){return function(_0x4ba0ae){if(_0x4ba0ae){return _0x4ba0ae[_0xa575('0x27')](_0x32a850)[_0xa575('0x28')](function(_0x3999c1){return _0x3999c1;});}return null;};}function removeEntity(_0x10fd49,_0x208bbd){return function(_0x1d8a42){if(_0x1d8a42){return _0x1d8a42[_0xa575('0x29')]()[_0xa575('0x28')](function(){var _0x4767c6=_0x1d8a42[_0xa575('0x2a')]({'plain':!![]});var _0x47156b=_0xa575('0x2b');return db['UserProfileResource'][_0xa575('0x29')]({'where':{'type':_0x47156b,'resourceId':_0x4767c6['id']}})[_0xa575('0x28')](function(){return _0x1d8a42;});})[_0xa575('0x28')](function(){_0x10fd49[_0xa575('0x1d')](0xcc)[_0xa575('0x1e')]();});}};}function handleEntityNotFound(_0x578455,_0x241ef2){return function(_0x351daa){if(!_0x351daa){_0x578455['sendStatus'](0x194);}return _0x351daa;};}function handleError(_0x1a51fe,_0x18ac59){_0x18ac59=_0x18ac59||0x1f4;return function(_0xd86be5){logger[_0xa575('0x2c')](_0xd86be5[_0xa575('0x2d')]);if(_0xd86be5['name']){delete _0xd86be5['name'];}_0x1a51fe[_0xa575('0x1d')](_0x18ac59)['send'](_0xd86be5);};}exports[_0xa575('0x2e')]=function(_0x14c81b,_0x3236e7){var _0x25e672={},_0x48c768={},_0x4db8d4={'count':0x0,'rows':[]};var _0x42fc4a=_[_0xa575('0x2f')](db[_0xa575('0x30')]['rawAttributes'],function(_0x246da8){return{'name':_0x246da8[_0xa575('0x31')],'type':_0x246da8[_0xa575('0x32')]['key']};});_0x48c768['model']=_['map'](_0x42fc4a,'name');_0x48c768['query']=_[_0xa575('0x33')](_0x14c81b[_0xa575('0x34')]);_0x48c768['filters']=_['intersection'](_0x48c768[_0xa575('0x35')],_0x48c768[_0xa575('0x34')]);_0x25e672[_0xa575('0x36')]=_[_0xa575('0x37')](_0x48c768[_0xa575('0x35')],qs['fields'](_0x14c81b[_0xa575('0x34')][_0xa575('0x38')]));_0x25e672[_0xa575('0x36')]=_0x25e672[_0xa575('0x36')][_0xa575('0x39')]?_0x25e672[_0xa575('0x36')]:_0x48c768[_0xa575('0x35')];if(!_0x14c81b['query'][_0xa575('0x3a')](_0xa575('0x3b'))){_0x25e672[_0xa575('0x20')]=qs[_0xa575('0x20')](_0x14c81b[_0xa575('0x34')][_0xa575('0x20')]);_0x25e672[_0xa575('0x1f')]=qs[_0xa575('0x1f')](_0x14c81b['query'][_0xa575('0x1f')]);}_0x25e672[_0xa575('0x3c')]=qs['sort'](_0x14c81b[_0xa575('0x34')][_0xa575('0x3d')]);_0x25e672[_0xa575('0x3e')]=qs['filters'](_['pick'](_0x14c81b['query'],_0x48c768[_0xa575('0x3f')]),_0x42fc4a);if(_0x14c81b[_0xa575('0x34')][_0xa575('0x40')]){_0x25e672['where']=_[_0xa575('0x41')](_0x25e672['where'],{'$or':_[_0xa575('0x2f')](_0x42fc4a,function(_0x27bc1c){if(_0x27bc1c['type']!==_0xa575('0x42')){var _0x2be552={};_0x2be552[_0x27bc1c['name']]={'$like':'%'+_0x14c81b[_0xa575('0x34')]['filter']+'%'};return _0x2be552;}})});}_0x25e672=_['merge']({},_0x25e672,_0x14c81b[_0xa575('0x43')]);var _0x23b4de={'where':_0x25e672[_0xa575('0x3e')]};return db[_0xa575('0x30')][_0xa575('0x22')](_0x23b4de)['then'](function(_0x58a6a7){_0x4db8d4[_0xa575('0x22')]=_0x58a6a7;if(_0x14c81b[_0xa575('0x34')][_0xa575('0x44')]){_0x25e672[_0xa575('0x45')]=[{'all':!![]}];}return db[_0xa575('0x30')]['findAll'](_0x25e672);})['then'](function(_0x494a0b){_0x4db8d4[_0xa575('0x46')]=_0x494a0b;return _0x4db8d4;})['then'](respondWithFilteredResult(_0x3236e7,_0x25e672))[_0xa575('0x47')](handleError(_0x3236e7,null));};exports[_0xa575('0x48')]=function(_0x360db3,_0x3e5461){var _0x4ff4be={'raw':!![],'where':{'id':_0x360db3[_0xa575('0x49')]['id']}},_0x300d62={};_0x300d62[_0xa575('0x35')]=_[_0xa575('0x33')](db['WhatsappQueue'][_0xa575('0x4a')]);_0x300d62[_0xa575('0x34')]=_[_0xa575('0x33')](_0x360db3['query']);_0x300d62['filters']=_[_0xa575('0x37')](_0x300d62['model'],_0x300d62[_0xa575('0x34')]);_0x4ff4be[_0xa575('0x36')]=_[_0xa575('0x37')](_0x300d62[_0xa575('0x35')],qs[_0xa575('0x38')](_0x360db3[_0xa575('0x34')][_0xa575('0x38')]));_0x4ff4be[_0xa575('0x36')]=_0x4ff4be[_0xa575('0x36')][_0xa575('0x39')]?_0x4ff4be[_0xa575('0x36')]:_0x300d62[_0xa575('0x35')];if(_0x360db3[_0xa575('0x34')][_0xa575('0x44')]){_0x4ff4be['include']=[{'all':!![]}];}_0x4ff4be=_[_0xa575('0x41')]({},_0x4ff4be,_0x360db3['options']);return db['WhatsappQueue'][_0xa575('0x4b')](_0x4ff4be)['then'](handleEntityNotFound(_0x3e5461,null))['then'](respondWithResult(_0x3e5461,null))[_0xa575('0x47')](handleError(_0x3e5461,null));};exports['create']=function(_0x3ba2a8,_0x1c2a04){return db[_0xa575('0x30')][_0xa575('0x4c')](_0x3ba2a8[_0xa575('0x4d')],{})[_0xa575('0x28')](function(_0x31d12f){var _0x35b06b=_0x3ba2a8[_0xa575('0x4e')]['get']({'plain':!![]});if(!_0x35b06b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x35b06b[_0xa575('0x4f')]==='user'){var _0x4dbd95=_0x31d12f[_0xa575('0x2a')]({'plain':!![]});var _0x33cb33=_0xa575('0x2b');return db[_0xa575('0x50')]['find']({'where':{'name':_0x33cb33,'userProfileId':_0x35b06b[_0xa575('0x51')]},'raw':!![]})['then'](function(_0x17405c){if(_0x17405c&&_0x17405c['autoAssociation']===0x0){return db[_0xa575('0x52')][_0xa575('0x4c')]({'name':_0x4dbd95[_0xa575('0x53')],'resourceId':_0x4dbd95['id'],'type':_0x17405c[_0xa575('0x53')],'sectionId':_0x17405c['id']},{})[_0xa575('0x28')](function(){return _0x31d12f;});}else{return _0x31d12f;}})[_0xa575('0x47')](function(_0x5dd68e){logger[_0xa575('0x2c')](_0xa575('0x54'),_0x5dd68e);throw _0x5dd68e;});}return _0x31d12f;})[_0xa575('0x28')](respondWithResult(_0x1c2a04,0xc9))[_0xa575('0x47')](handleError(_0x1c2a04,null));};exports[_0xa575('0x27')]=function(_0x458c3d,_0x5f238e){if(_0x458c3d['body']['id']){delete _0x458c3d[_0xa575('0x4d')]['id'];}return db['WhatsappQueue'][_0xa575('0x4b')]({'where':{'id':_0x458c3d[_0xa575('0x49')]['id']}})[_0xa575('0x28')](handleEntityNotFound(_0x5f238e,null))[_0xa575('0x28')](saveUpdates(_0x458c3d[_0xa575('0x4d')],null))[_0xa575('0x28')](respondWithResult(_0x5f238e,null))['catch'](handleError(_0x5f238e,null));};exports[_0xa575('0x29')]=function(_0x7e6a71,_0x47f1b5){return db[_0xa575('0x30')][_0xa575('0x4b')]({'where':{'id':_0x7e6a71[_0xa575('0x49')]['id']}})[_0xa575('0x28')](handleEntityNotFound(_0x47f1b5,null))[_0xa575('0x28')](removeEntity(_0x47f1b5,null))[_0xa575('0x47')](handleError(_0x47f1b5,null));};exports['describe']=function(_0x3ee96a,_0x15d23e){return db['WhatsappQueue'][_0xa575('0x55')]()[_0xa575('0x28')](respondWithResult(_0x15d23e,null))[_0xa575('0x47')](handleError(_0x15d23e,null));};exports[_0xa575('0x56')]=function(_0x3786aa,_0x4ccebb,_0x44e4f9){var _0x22e076={'raw':!![],'where':{}},_0x19e10f={},_0x5de858;return db[_0xa575('0x30')]['findOne']({'where':{'id':_0x3786aa[_0xa575('0x49')]['id']}})[_0xa575('0x28')](handleEntityNotFound(_0x4ccebb,null))[_0xa575('0x28')](function(_0x540949){if(_0x540949){_0x5de858=_0x540949['get']({'plain':!![]});_0x19e10f[_0xa575('0x35')]=_[_0xa575('0x33')](db[_0xa575('0x57')][_0xa575('0x4a')]);_0x19e10f[_0xa575('0x34')]=_[_0xa575('0x33')](_0x3786aa[_0xa575('0x34')]);_0x19e10f[_0xa575('0x3f')]=_[_0xa575('0x37')](_0x19e10f[_0xa575('0x35')],_0x19e10f[_0xa575('0x34')]);_0x22e076['attributes']=_[_0xa575('0x37')](_0x19e10f[_0xa575('0x35')],qs[_0xa575('0x38')](_0x3786aa[_0xa575('0x34')][_0xa575('0x38')]));_0x22e076[_0xa575('0x36')]=_0x22e076[_0xa575('0x36')][_0xa575('0x39')]?_0x22e076['attributes']:_0x19e10f[_0xa575('0x35')];if(!_0x3786aa[_0xa575('0x34')][_0xa575('0x3a')]('nolimit')){_0x22e076[_0xa575('0x20')]=qs[_0xa575('0x20')](_0x3786aa[_0xa575('0x34')][_0xa575('0x20')]);_0x22e076[_0xa575('0x1f')]=qs['offset'](_0x3786aa[_0xa575('0x34')][_0xa575('0x1f')]);}_0x22e076[_0xa575('0x3c')]=qs[_0xa575('0x3d')](_0x3786aa[_0xa575('0x34')][_0xa575('0x3d')]);_0x22e076[_0xa575('0x3e')]=qs[_0xa575('0x3f')](_[_0xa575('0x58')](_0x3786aa[_0xa575('0x34')],_0x19e10f['filters']));_0x22e076[_0xa575('0x3e')][_0xa575('0x59')]=_0x540949['id'];if(_0x3786aa['query']['filter']){_0x22e076[_0xa575('0x3e')]=_[_0xa575('0x41')](_0x22e076[_0xa575('0x3e')],{'$or':_[_0xa575('0x2f')](_0x22e076[_0xa575('0x36')],function(_0xdf279a){var _0x462253={};_0x462253[_0xdf279a]={'$like':'%'+_0x3786aa[_0xa575('0x34')][_0xa575('0x40')]+'%'};return _0x462253;})});}_0x22e076=_[_0xa575('0x41')]({},_0x22e076,_0x3786aa[_0xa575('0x43')]);return db[_0xa575('0x57')][_0xa575('0x5a')](_0x22e076);}})[_0xa575('0x28')](function(_0x2ac93b){if(_0x2ac93b){return db[_0xa575('0x5b')]['findAndCountAll']({'where':{'id':_[_0xa575('0x2f')](_0x2ac93b,_0xa575('0x5c')),'role':_0xa575('0x5d')},'attributes':['id',_0xa575('0x53'),'whatsappPause',_0xa575('0x5e'),_0xa575('0x5f')]});}})[_0xa575('0x28')](function(_0x54f337){if(_0x54f337){return{'count':_0x54f337[_0xa575('0x22')],'rows':_[_0xa575('0x2f')](_0x54f337[_0xa575('0x46')],function(_0x58f051){return{'membername':_0x58f051['name'],'UserId':_0x58f051['id'],'queue_name':_0x5de858[_0xa575('0x53')],'WhatsappQueueId':_0x5de858['id'],'interface':util['format'](_0xa575('0x60'),_0xa575('0x61'),_0x58f051['name']),'penalty':0x0,'paused':_0x58f051[_0xa575('0x62')],'createdAt':_0x58f051['createdAt'],'updatedAt':_0x58f051[_0xa575('0x5e')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xa575('0x28')](respondWithFilteredResult(_0x4ccebb,_0x22e076))[_0xa575('0x47')](handleError(_0x4ccebb,null));};exports[_0xa575('0x63')]=function(_0x36b8e0,_0x291091,_0x1b8e0a){var _0x2cdbb5={};var _0x3371b9={};var _0x45b149;var _0x139ff2;return db[_0xa575('0x30')][_0xa575('0x64')]({'where':{'id':_0x36b8e0[_0xa575('0x49')]['id']}})['then'](handleEntityNotFound(_0x291091,null))['then'](function(_0x3c412c){if(_0x3c412c){_0x45b149=_0x3c412c;_0x3371b9[_0xa575('0x35')]=_[_0xa575('0x33')](db[_0xa575('0x65')][_0xa575('0x4a')]);_0x3371b9[_0xa575('0x34')]=_[_0xa575('0x33')](_0x36b8e0[_0xa575('0x34')]);_0x3371b9['filters']=_['intersection'](_0x3371b9[_0xa575('0x35')],_0x3371b9[_0xa575('0x34')]);_0x2cdbb5[_0xa575('0x36')]=_['intersection'](_0x3371b9[_0xa575('0x35')],qs[_0xa575('0x38')](_0x36b8e0[_0xa575('0x34')]['fields']));_0x2cdbb5[_0xa575('0x36')]=_0x2cdbb5[_0xa575('0x36')][_0xa575('0x39')]?_0x2cdbb5['attributes']:_0x3371b9[_0xa575('0x35')];_0x2cdbb5[_0xa575('0x3c')]=qs[_0xa575('0x3d')](_0x36b8e0[_0xa575('0x34')][_0xa575('0x3d')]);_0x2cdbb5[_0xa575('0x3e')]=qs[_0xa575('0x3f')](_[_0xa575('0x58')](_0x36b8e0['query'],_0x3371b9[_0xa575('0x3f')]));if(_0x36b8e0[_0xa575('0x34')][_0xa575('0x40')]){_0x2cdbb5['where']=_['merge'](_0x2cdbb5[_0xa575('0x3e')],{'$or':_[_0xa575('0x2f')](_0x2cdbb5[_0xa575('0x36')],function(_0x242b6f){var _0x4bc5cd={};_0x4bc5cd[_0x242b6f]={'$like':'%'+_0x36b8e0[_0xa575('0x34')]['filter']+'%'};return _0x4bc5cd;})});}_0x2cdbb5=_['merge']({},_0x2cdbb5,_0x36b8e0['options']);return _0x45b149[_0xa575('0x63')](_0x2cdbb5);}})[_0xa575('0x28')](function(_0x4b48a0){if(_0x4b48a0){_0x139ff2=_0x4b48a0['length'];if(!_0x36b8e0[_0xa575('0x34')][_0xa575('0x3a')]('nolimit')){_0x2cdbb5[_0xa575('0x20')]=qs[_0xa575('0x20')](_0x36b8e0['query'][_0xa575('0x20')]);_0x2cdbb5[_0xa575('0x1f')]=qs[_0xa575('0x1f')](_0x36b8e0[_0xa575('0x34')][_0xa575('0x1f')]);}return _0x45b149[_0xa575('0x63')](_0x2cdbb5);}})['then'](function(_0x4df1e3){if(_0x4df1e3){return _0x4df1e3?{'count':_0x139ff2,'rows':_0x4df1e3}:null;}})['then'](respondWithResult(_0x291091,null))[_0xa575('0x47')](handleError(_0x291091,null));};exports[_0xa575('0x66')]=function(_0x5706f9,_0x5d4c84,_0x1f6a02){var _0x3dd723=_0x5706f9['body']['ids'];return db[_0xa575('0x65')][_0xa575('0x5a')]({'where':{'id':_0x3dd723},'attributes':['id'],'include':[{'model':db[_0xa575('0x5b')],'as':_0xa575('0x67'),'attributes':['id',_0xa575('0x53'),_0xa575('0x68'),'voicePause',_0xa575('0x69')],'raw':!![]}]})[_0xa575('0x28')](function(_0x1a8db0){if(_0x1a8db0){var _0x5ab9b2=_[_0xa575('0x6a')](_0x1a8db0,function(_0x390865){var _0x148b0d=_0x390865[_0xa575('0x2a')]({'plain':!![]});return _0x148b0d[_0xa575('0x67')];});return db[_0xa575('0x30')]['find']({'where':{'id':_0x5706f9['params']['id']}})['then'](function(_0x539e30){return db[_0xa575('0x6b')]['transaction'](function(_0x21928e){return _0x539e30['addTeams'](_0x3dd723,{'transaction':_0x21928e})[_0xa575('0x28')](function(){return BPromise[_0xa575('0x6c')](_0x5ab9b2,function(_0x2fcf4c){return db[_0xa575('0x57')][_0xa575('0x6d')]({'where':{'UserId':_0x2fcf4c['id'],'WhatsappQueueId':_0x5706f9[_0xa575('0x49')]['id']},'transaction':_0x21928e});});})[_0xa575('0x28')](function(){_0x5ab9b2[_0xa575('0x6e')](function(_0x181208){socket[_0xa575('0x6f')](_0xa575('0x70'),{'UserId':_0x181208['id'],'WhatsappQueueId':_0x539e30['id']});});});});});}})[_0xa575('0x28')](respondWithStatusCode(_0x5d4c84,null))[_0xa575('0x47')](handleError(_0x5d4c84,null));};exports[_0xa575('0x71')]=function(_0x160330,_0x27cf84,_0x3a1759){return db[_0xa575('0x65')]['findAll']({'where':{'id':_0x160330['query'][_0xa575('0x72')]},'attributes':['id'],'include':[{'model':db[_0xa575('0x5b')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xa575('0x28')](handleEntityNotFound(_0x27cf84,null))[_0xa575('0x28')](function(_0x140191){var _0xa4b325=_['map'](_0x140191,'id');var _0x31c7c8=[];var _0x3c0c62=[];var _0x319b5e=squel[_0xa575('0x73')]();_0x319b5e['field'](_0xa575('0x74'))[_0xa575('0x75')]('team_has_whatsapp_queues','tq')[_0xa575('0x76')](_0xa575('0x77'),'ut',_0xa575('0x78'))[_0xa575('0x3e')]('WhatsappQueueId\x20=\x20?',_0x160330[_0xa575('0x49')]['id']);for(var _0x2e6a0e=0x0;_0x2e6a0e<_0x140191['length'];_0x2e6a0e+=0x1){let _0x25e5f2=_0x140191[_0x2e6a0e];for(var _0x33aa45=0x0;_0x33aa45<_0x25e5f2[_0xa575('0x67')]['length'];_0x33aa45+=0x1){let _0xd3eec7=_0x25e5f2['Agents'][_0x33aa45];var _0x313896=_0x319b5e[_0xa575('0x79')]();_0x313896['where']('ut.UserId\x20=\x20?',_0xd3eec7['id']);_0x3c0c62[_0xa575('0x7a')](db[_0xa575('0x6b')]['query'](_0x313896[_0xa575('0x7b')](),{'type':db[_0xa575('0x6b')][_0xa575('0x7c')][_0xa575('0x7d')]})['then'](function(_0x302485){if(_0x302485[_0xa575('0x39')]===0x1){return _0xd3eec7['id'];}else{var _0x59e6b9=_['every'](_[_0xa575('0x2f')](_0x302485,_0xa575('0x7e')),function(_0x2cd425){return _[_0xa575('0x7f')](_0xa4b325,_0x2cd425);});if(_0x59e6b9){return _0xd3eec7['id'];}}}));}}return BPromise[_0xa575('0x80')](_0x3c0c62)[_0xa575('0x28')](function(_0x27f716){_0x31c7c8=_(_0x31c7c8)['union'](_0x27f716)[_0xa575('0x81')]()[_0xa575('0x82')]();return db['WhatsappQueue'][_0xa575('0x4b')]({'where':{'id':_0x160330[_0xa575('0x49')]['id']}})['then'](function(_0x41d8bc){return db[_0xa575('0x6b')][_0xa575('0x83')](function(_0x37c23f){return _0x41d8bc[_0xa575('0x71')](_0x160330['query'][_0xa575('0x72')],{'transaction':_0x37c23f})['then'](function(){if(!_[_0xa575('0x84')](_0x31c7c8)){return _0x41d8bc['removeAgents'](_0x31c7c8,{'transaction':_0x37c23f});}})[_0xa575('0x28')](function(){_0x31c7c8[_0xa575('0x6e')](function(_0x562621){socket[_0xa575('0x6f')](_0xa575('0x85'),{'UserId':_0x562621,'WhatsappQueueId':_0x41d8bc['id']});});});});});});})['then'](respondWithStatusCode(_0x27cf84,null))[_0xa575('0x47')](handleError(_0x27cf84,null));};exports[_0xa575('0x86')]=function(_0x4bf6ed,_0x2b4794,_0x49381b){return db['WhatsappQueue']['find']({'where':{'id':_0x4bf6ed[_0xa575('0x49')]['id']}})[_0xa575('0x28')](handleEntityNotFound(_0x2b4794,null))['then'](function(_0x5338ec){if(_0x5338ec){return _0x5338ec[_0xa575('0x86')](_0x4bf6ed[_0xa575('0x4d')]['ids'],_['omit'](_0x4bf6ed[_0xa575('0x4d')],[_0xa575('0x72'),'id'])||{})[_0xa575('0x87')](function(_0x51721b){for(var _0x422fec=0x0;_0x422fec<_0x4bf6ed[_0xa575('0x4d')][_0xa575('0x72')][_0xa575('0x39')];_0x422fec+=0x1){socket[_0xa575('0x6f')](_0xa575('0x70'),{'UserId':Number(_0x4bf6ed[_0xa575('0x4d')][_0xa575('0x72')][_0x422fec]),'WhatsappQueueId':Number(_0x4bf6ed['params']['id'])});}return _0x51721b;});}})['then'](respondWithResult(_0x2b4794,null))[_0xa575('0x47')](handleError(_0x2b4794,null));};exports['removeAgents']=function(_0x5cf572,_0x4fdfb9,_0x3b085b){return db['WhatsappQueue'][_0xa575('0x4b')]({'where':{'id':_0x5cf572[_0xa575('0x49')]['id']}})['then'](handleEntityNotFound(_0x4fdfb9,null))[_0xa575('0x28')](function(_0xff366f){if(_0xff366f){return _0xff366f['removeAgents'](_0x5cf572['query'][_0xa575('0x72')])[_0xa575('0x28')](function(){if(_[_0xa575('0x88')](_0x5cf572[_0xa575('0x34')][_0xa575('0x72')])){for(var _0x5684e7=0x0;_0x5684e7<_0x5cf572['query'][_0xa575('0x72')][_0xa575('0x39')];_0x5684e7+=0x1){socket[_0xa575('0x6f')](_0xa575('0x85'),{'UserId':Number(_0x5cf572[_0xa575('0x34')][_0xa575('0x72')][_0x5684e7]),'WhatsappQueueId':Number(_0x5cf572[_0xa575('0x49')]['id'])});}}else{socket['emit'](_0xa575('0x85'),{'UserId':Number(_0x5cf572[_0xa575('0x34')][_0xa575('0x72')]),'WhatsappQueueId':Number(_0x5cf572[_0xa575('0x49')]['id'])});}});}})['then'](respondWithStatusCode(_0x4fdfb9,null))[_0xa575('0x47')](handleError(_0x4fdfb9,null));};exports[_0xa575('0x89')]=function(_0x1dc328,_0x566bc5,_0x5e523e){var _0x5df2ae={};var _0x37c654={};var _0x5874ee;var _0x66ba36;return db[_0xa575('0x30')][_0xa575('0x64')]({'where':{'id':_0x1dc328[_0xa575('0x49')]['id']}})[_0xa575('0x28')](handleEntityNotFound(_0x566bc5,null))[_0xa575('0x28')](function(_0x141517){if(_0x141517){_0x5874ee=_0x141517;_0x37c654[_0xa575('0x35')]=_[_0xa575('0x33')](db['User']['rawAttributes']);_0x37c654[_0xa575('0x34')]=_[_0xa575('0x33')](_0x1dc328[_0xa575('0x34')]);_0x37c654['filters']=_[_0xa575('0x37')](_0x37c654[_0xa575('0x35')],_0x37c654['query']);_0x5df2ae[_0xa575('0x36')]=_[_0xa575('0x37')](_0x37c654[_0xa575('0x35')],qs[_0xa575('0x38')](_0x1dc328[_0xa575('0x34')]['fields']));_0x5df2ae[_0xa575('0x36')]=_0x5df2ae[_0xa575('0x36')][_0xa575('0x39')]?_0x5df2ae['attributes']:_0x37c654[_0xa575('0x35')];_0x5df2ae[_0xa575('0x3c')]=qs[_0xa575('0x3d')](_0x1dc328[_0xa575('0x34')][_0xa575('0x3d')]);_0x5df2ae[_0xa575('0x3e')]=qs[_0xa575('0x3f')](_[_0xa575('0x58')](_0x1dc328[_0xa575('0x34')],_0x37c654[_0xa575('0x3f')]));if(_0x1dc328[_0xa575('0x34')][_0xa575('0x40')]){_0x5df2ae[_0xa575('0x3e')]=_['merge'](_0x5df2ae[_0xa575('0x3e')],{'$or':_[_0xa575('0x2f')](_0x5df2ae[_0xa575('0x36')],function(_0x5e1003){var _0x1aac13={};_0x1aac13[_0x5e1003]={'$like':'%'+_0x1dc328['query'][_0xa575('0x40')]+'%'};return _0x1aac13;})});}_0x5df2ae=_[_0xa575('0x41')]({},_0x5df2ae,_0x1dc328[_0xa575('0x43')]);return _0x5874ee['getAgents'](_0x5df2ae);}})[_0xa575('0x28')](function(_0xc69847){if(_0xc69847){_0x66ba36=_0xc69847['length'];if(!_0x1dc328['query']['hasOwnProperty']('nolimit')){_0x5df2ae[_0xa575('0x20')]=qs[_0xa575('0x20')](_0x1dc328[_0xa575('0x34')][_0xa575('0x20')]);_0x5df2ae['offset']=qs[_0xa575('0x1f')](_0x1dc328[_0xa575('0x34')][_0xa575('0x1f')]);}return _0x5874ee[_0xa575('0x89')](_0x5df2ae);}})['then'](function(_0x37f330){if(_0x37f330){return _0x37f330?{'count':_0x66ba36,'rows':_0x37f330}:null;}})[_0xa575('0x28')](respondWithResult(_0x566bc5,null))['catch'](handleError(_0x566bc5,null));};
\ No newline at end of file
+var _0x90a9=['undefined','limit','count','Content-Range','apply','save','update','destroy','then','get','WhatsappQueues','UserProfileResource','stack','name','send','index','map','WhatsappQueue','rawAttributes','fieldName','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','type','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','keys','includeAll','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','UserWhatsappQueue','WhatsappQueueId','User','findAndCountAll','UserId','updatedAt','createdAt','format','SIP','whatsappPause','getTeams','findOne','Team','voicePause','flatMap','Agents','find','sequelize','transaction','addTeams','each','findOrCreate','forEach','userWhatsappQueue:save','ids','select','field','tq.TeamId','team_has_whatsapp_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','push','toString','SELECT','every','TeamId','includes','all','union','compact','isEmpty','removeAgents','emit','userWhatsappQueue:remove','addAgents','omit','spread','isArray','getAgents','pick','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./whatsappQueue.socket','sendStatus','status','json','offset'];(function(_0x3de07d,_0x5d583b){var _0x1e831e=function(_0x2f8e9c){while(--_0x2f8e9c){_0x3de07d['push'](_0x3de07d['shift']());}};_0x1e831e(++_0x5d583b);}(_0x90a9,0x180));var _0x990a=function(_0x5422fa,_0x2e39ca){_0x5422fa=_0x5422fa-0x0;var _0x1cc9a5=_0x90a9[_0x5422fa];return _0x1cc9a5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x990a('0x0'));var zipdir=require(_0x990a('0x1'));var jsonpatch=require(_0x990a('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x990a('0x3'));var Mustache=require(_0x990a('0x4'));var util=require('util');var path=require(_0x990a('0x5'));var sox=require(_0x990a('0x6'));var csv=require('to-csv');var ejs=require(_0x990a('0x7'));var fs=require('fs');var fs_extra=require(_0x990a('0x8'));var _=require(_0x990a('0x9'));var squel=require('squel');var crypto=require(_0x990a('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x990a('0xb'));var toCsv=require(_0x990a('0xc'));var querystring=require(_0x990a('0xd'));var Papa=require(_0x990a('0xe'));var Redis=require(_0x990a('0xf'));var authService=require(_0x990a('0x10'));var qs=require(_0x990a('0x11'));var as=require(_0x990a('0x12'));var hardwareService=require(_0x990a('0x13'));var logger=require(_0x990a('0x14'))('api');var utils=require(_0x990a('0x15'));var config=require(_0x990a('0x16'));var licenseUtil=require(_0x990a('0x17'));var db=require(_0x990a('0x18'))['db'];config[_0x990a('0x19')]=_[_0x990a('0x1a')](config[_0x990a('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0x990a('0x1b'))(new Redis(config[_0x990a('0x19')]));require(_0x990a('0x1c'))['register'](socket);function respondWithStatusCode(_0x2d8548,_0x5993b9){_0x5993b9=_0x5993b9||0xcc;return function(_0x3c4d4f){if(_0x3c4d4f){return _0x2d8548[_0x990a('0x1d')](_0x5993b9);}return _0x2d8548[_0x990a('0x1e')](_0x5993b9)['end']();};}function respondWithResult(_0x29ce4e,_0x3a058c){_0x3a058c=_0x3a058c||0xc8;return function(_0x130385){if(_0x130385){return _0x29ce4e[_0x990a('0x1e')](_0x3a058c)[_0x990a('0x1f')](_0x130385);}};}function respondWithFilteredResult(_0x1f7ea5,_0x198ce6){return function(_0x3d4151){if(_0x3d4151){var _0xe376b8=typeof _0x198ce6[_0x990a('0x20')]===_0x990a('0x21')&&typeof _0x198ce6[_0x990a('0x22')]===_0x990a('0x21');var _0x12c108=_0x3d4151[_0x990a('0x23')];var _0x2a95d3=_0xe376b8?0x0:_0x198ce6[_0x990a('0x20')];var _0x2ae0c3=_0xe376b8?_0x3d4151['count']:_0x198ce6[_0x990a('0x20')]+_0x198ce6[_0x990a('0x22')];var _0x188d7b;if(_0x2ae0c3>=_0x12c108){_0x2ae0c3=_0x12c108;_0x188d7b=0xc8;}else{_0x188d7b=0xce;}_0x1f7ea5[_0x990a('0x1e')](_0x188d7b);return _0x1f7ea5['set'](_0x990a('0x24'),_0x2a95d3+'-'+_0x2ae0c3+'/'+_0x12c108)['json'](_0x3d4151);}return null;};}function patchUpdates(_0x451711){return function(_0x580194){try{jsonpatch[_0x990a('0x25')](_0x580194,_0x451711,!![]);}catch(_0x39edb0){return BPromise['reject'](_0x39edb0);}return _0x580194[_0x990a('0x26')]();};}function saveUpdates(_0x2d87a6,_0x3f5ed0){return function(_0x3199ad){if(_0x3199ad){return _0x3199ad[_0x990a('0x27')](_0x2d87a6)['then'](function(_0x3711ff){return _0x3711ff;});}return null;};}function removeEntity(_0x14e8ee,_0x5c897d){return function(_0x2d3628){if(_0x2d3628){return _0x2d3628[_0x990a('0x28')]()[_0x990a('0x29')](function(){var _0x4a36b2=_0x2d3628[_0x990a('0x2a')]({'plain':!![]});var _0x1291ce=_0x990a('0x2b');return db[_0x990a('0x2c')][_0x990a('0x28')]({'where':{'type':_0x1291ce,'resourceId':_0x4a36b2['id']}})['then'](function(){return _0x2d3628;});})['then'](function(){_0x14e8ee[_0x990a('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d85b3,_0x2b4524){return function(_0x255dbd){if(!_0x255dbd){_0x3d85b3[_0x990a('0x1d')](0x194);}return _0x255dbd;};}function handleError(_0x115a2c,_0x2395df){_0x2395df=_0x2395df||0x1f4;return function(_0x5c254b){logger['error'](_0x5c254b[_0x990a('0x2d')]);if(_0x5c254b[_0x990a('0x2e')]){delete _0x5c254b[_0x990a('0x2e')];}_0x115a2c[_0x990a('0x1e')](_0x2395df)[_0x990a('0x2f')](_0x5c254b);};}exports[_0x990a('0x30')]=function(_0x5f37d5,_0x5449af){var _0x1c80af={},_0x76d012={},_0x18bbb0={'count':0x0,'rows':[]};var _0xeeb750=_[_0x990a('0x31')](db[_0x990a('0x32')][_0x990a('0x33')],function(_0x64103d){return{'name':_0x64103d[_0x990a('0x34')],'type':_0x64103d['type'][_0x990a('0x35')]};});_0x76d012['model']=_[_0x990a('0x31')](_0xeeb750,_0x990a('0x2e'));_0x76d012[_0x990a('0x36')]=_['keys'](_0x5f37d5[_0x990a('0x36')]);_0x76d012[_0x990a('0x37')]=_[_0x990a('0x38')](_0x76d012[_0x990a('0x39')],_0x76d012[_0x990a('0x36')]);_0x1c80af[_0x990a('0x3a')]=_[_0x990a('0x38')](_0x76d012[_0x990a('0x39')],qs[_0x990a('0x3b')](_0x5f37d5[_0x990a('0x36')][_0x990a('0x3b')]));_0x1c80af[_0x990a('0x3a')]=_0x1c80af['attributes'][_0x990a('0x3c')]?_0x1c80af[_0x990a('0x3a')]:_0x76d012['model'];if(!_0x5f37d5['query'][_0x990a('0x3d')](_0x990a('0x3e'))){_0x1c80af['limit']=qs[_0x990a('0x22')](_0x5f37d5[_0x990a('0x36')][_0x990a('0x22')]);_0x1c80af['offset']=qs[_0x990a('0x20')](_0x5f37d5[_0x990a('0x36')][_0x990a('0x20')]);}_0x1c80af[_0x990a('0x3f')]=qs[_0x990a('0x40')](_0x5f37d5['query'][_0x990a('0x40')]);_0x1c80af[_0x990a('0x41')]=qs['filters'](_['pick'](_0x5f37d5[_0x990a('0x36')],_0x76d012[_0x990a('0x37')]),_0xeeb750);if(_0x5f37d5[_0x990a('0x36')][_0x990a('0x42')]){_0x1c80af[_0x990a('0x41')]=_['merge'](_0x1c80af[_0x990a('0x41')],{'$or':_[_0x990a('0x31')](_0xeeb750,function(_0x5842d8){if(_0x5842d8[_0x990a('0x43')]!==_0x990a('0x44')){var _0x106ba1={};_0x106ba1[_0x5842d8[_0x990a('0x2e')]]={'$like':'%'+_0x5f37d5[_0x990a('0x36')]['filter']+'%'};return _0x106ba1;}})});}_0x1c80af=_[_0x990a('0x45')]({},_0x1c80af,_0x5f37d5[_0x990a('0x46')]);var _0x22a972={'where':_0x1c80af[_0x990a('0x41')]};return db[_0x990a('0x32')][_0x990a('0x23')](_0x22a972)[_0x990a('0x29')](function(_0x1b0c04){_0x18bbb0['count']=_0x1b0c04;if(_0x5f37d5[_0x990a('0x36')]['includeAll']){_0x1c80af[_0x990a('0x47')]=[{'all':!![]}];}return db[_0x990a('0x32')][_0x990a('0x48')](_0x1c80af);})['then'](function(_0x51705f){_0x18bbb0[_0x990a('0x49')]=_0x51705f;return _0x18bbb0;})[_0x990a('0x29')](respondWithFilteredResult(_0x5449af,_0x1c80af))[_0x990a('0x4a')](handleError(_0x5449af,null));};exports[_0x990a('0x4b')]=function(_0x4f1948,_0x3ce6ec){var _0x59b8e8={'raw':!![],'where':{'id':_0x4f1948[_0x990a('0x4c')]['id']}},_0x27aa95={};_0x27aa95[_0x990a('0x39')]=_[_0x990a('0x4d')](db[_0x990a('0x32')]['rawAttributes']);_0x27aa95[_0x990a('0x36')]=_[_0x990a('0x4d')](_0x4f1948[_0x990a('0x36')]);_0x27aa95[_0x990a('0x37')]=_[_0x990a('0x38')](_0x27aa95['model'],_0x27aa95[_0x990a('0x36')]);_0x59b8e8[_0x990a('0x3a')]=_[_0x990a('0x38')](_0x27aa95[_0x990a('0x39')],qs['fields'](_0x4f1948[_0x990a('0x36')][_0x990a('0x3b')]));_0x59b8e8[_0x990a('0x3a')]=_0x59b8e8['attributes'][_0x990a('0x3c')]?_0x59b8e8[_0x990a('0x3a')]:_0x27aa95[_0x990a('0x39')];if(_0x4f1948[_0x990a('0x36')][_0x990a('0x4e')]){_0x59b8e8[_0x990a('0x47')]=[{'all':!![]}];}_0x59b8e8=_[_0x990a('0x45')]({},_0x59b8e8,_0x4f1948[_0x990a('0x46')]);return db[_0x990a('0x32')]['find'](_0x59b8e8)[_0x990a('0x29')](handleEntityNotFound(_0x3ce6ec,null))['then'](respondWithResult(_0x3ce6ec,null))[_0x990a('0x4a')](handleError(_0x3ce6ec,null));};exports['create']=function(_0x9802d8,_0x173e66){return db[_0x990a('0x32')]['create'](_0x9802d8[_0x990a('0x4f')],{})[_0x990a('0x29')](function(_0x4ed6d8){var _0x93f8c4=_0x9802d8[_0x990a('0x50')][_0x990a('0x2a')]({'plain':!![]});if(!_0x93f8c4)throw new Error(_0x990a('0x51'));if(_0x93f8c4[_0x990a('0x52')]===_0x990a('0x50')){var _0x14f9f6=_0x4ed6d8[_0x990a('0x2a')]({'plain':!![]});var _0x3c9898=_0x990a('0x2b');return db['UserProfileSection']['find']({'where':{'name':_0x3c9898,'userProfileId':_0x93f8c4[_0x990a('0x53')]},'raw':!![]})[_0x990a('0x29')](function(_0x578c75){if(_0x578c75&&_0x578c75['autoAssociation']===0x0){return db[_0x990a('0x2c')]['create']({'name':_0x14f9f6[_0x990a('0x2e')],'resourceId':_0x14f9f6['id'],'type':_0x578c75['name'],'sectionId':_0x578c75['id']},{})[_0x990a('0x29')](function(){return _0x4ed6d8;});}else{return _0x4ed6d8;}})[_0x990a('0x4a')](function(_0x2a7fa1){logger[_0x990a('0x54')](_0x990a('0x55'),_0x2a7fa1);throw _0x2a7fa1;});}return _0x4ed6d8;})[_0x990a('0x29')](respondWithResult(_0x173e66,0xc9))[_0x990a('0x4a')](handleError(_0x173e66,null));};exports['update']=function(_0x2946d1,_0x574378){if(_0x2946d1[_0x990a('0x4f')]['id']){delete _0x2946d1[_0x990a('0x4f')]['id'];}return db[_0x990a('0x32')]['find']({'where':{'id':_0x2946d1[_0x990a('0x4c')]['id']}})[_0x990a('0x29')](handleEntityNotFound(_0x574378,null))['then'](saveUpdates(_0x2946d1[_0x990a('0x4f')],null))[_0x990a('0x29')](respondWithResult(_0x574378,null))[_0x990a('0x4a')](handleError(_0x574378,null));};exports[_0x990a('0x28')]=function(_0x6bb2c9,_0x1ca9c7){return db[_0x990a('0x32')]['find']({'where':{'id':_0x6bb2c9[_0x990a('0x4c')]['id']}})[_0x990a('0x29')](handleEntityNotFound(_0x1ca9c7,null))[_0x990a('0x29')](removeEntity(_0x1ca9c7,null))[_0x990a('0x4a')](handleError(_0x1ca9c7,null));};exports[_0x990a('0x56')]=function(_0x33e1bc,_0x5550cc){return db['WhatsappQueue'][_0x990a('0x56')]()[_0x990a('0x29')](respondWithResult(_0x5550cc,null))[_0x990a('0x4a')](handleError(_0x5550cc,null));};exports['getMembers']=function(_0x466837,_0x2e1b47,_0x37e059){var _0x40e3e4={'raw':!![],'where':{}},_0x1ba71b={},_0x448005;return db[_0x990a('0x32')]['findOne']({'where':{'id':_0x466837[_0x990a('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2e1b47,null))[_0x990a('0x29')](function(_0x5e4094){if(_0x5e4094){_0x448005=_0x5e4094['get']({'plain':!![]});_0x1ba71b[_0x990a('0x39')]=_[_0x990a('0x4d')](db[_0x990a('0x57')][_0x990a('0x33')]);_0x1ba71b[_0x990a('0x36')]=_[_0x990a('0x4d')](_0x466837[_0x990a('0x36')]);_0x1ba71b[_0x990a('0x37')]=_[_0x990a('0x38')](_0x1ba71b[_0x990a('0x39')],_0x1ba71b[_0x990a('0x36')]);_0x40e3e4[_0x990a('0x3a')]=_[_0x990a('0x38')](_0x1ba71b[_0x990a('0x39')],qs[_0x990a('0x3b')](_0x466837[_0x990a('0x36')]['fields']));_0x40e3e4[_0x990a('0x3a')]=_0x40e3e4[_0x990a('0x3a')][_0x990a('0x3c')]?_0x40e3e4[_0x990a('0x3a')]:_0x1ba71b['model'];if(!_0x466837['query'][_0x990a('0x3d')]('nolimit')){_0x40e3e4[_0x990a('0x22')]=qs[_0x990a('0x22')](_0x466837[_0x990a('0x36')][_0x990a('0x22')]);_0x40e3e4[_0x990a('0x20')]=qs['offset'](_0x466837[_0x990a('0x36')][_0x990a('0x20')]);}_0x40e3e4[_0x990a('0x3f')]=qs[_0x990a('0x40')](_0x466837[_0x990a('0x36')][_0x990a('0x40')]);_0x40e3e4[_0x990a('0x41')]=qs['filters'](_['pick'](_0x466837[_0x990a('0x36')],_0x1ba71b[_0x990a('0x37')]));_0x40e3e4[_0x990a('0x41')][_0x990a('0x58')]=_0x5e4094['id'];if(_0x466837[_0x990a('0x36')][_0x990a('0x42')]){_0x40e3e4[_0x990a('0x41')]=_[_0x990a('0x45')](_0x40e3e4[_0x990a('0x41')],{'$or':_['map'](_0x40e3e4[_0x990a('0x3a')],function(_0x23671f){var _0xa580ea={};_0xa580ea[_0x23671f]={'$like':'%'+_0x466837[_0x990a('0x36')][_0x990a('0x42')]+'%'};return _0xa580ea;})});}_0x40e3e4=_['merge']({},_0x40e3e4,_0x466837[_0x990a('0x46')]);return db[_0x990a('0x57')]['findAll'](_0x40e3e4);}})[_0x990a('0x29')](function(_0x98eac0){if(_0x98eac0){return db[_0x990a('0x59')][_0x990a('0x5a')]({'where':{'id':_['map'](_0x98eac0,_0x990a('0x5b')),'role':'agent'},'attributes':['id','name','whatsappPause',_0x990a('0x5c'),_0x990a('0x5d')]});}})['then'](function(_0x534670){if(_0x534670){return{'count':_0x534670[_0x990a('0x23')],'rows':_[_0x990a('0x31')](_0x534670[_0x990a('0x49')],function(_0x16c818){return{'membername':_0x16c818['name'],'UserId':_0x16c818['id'],'queue_name':_0x448005[_0x990a('0x2e')],'WhatsappQueueId':_0x448005['id'],'interface':util[_0x990a('0x5e')]('%s/%s',_0x990a('0x5f'),_0x16c818[_0x990a('0x2e')]),'penalty':0x0,'paused':_0x16c818[_0x990a('0x60')],'createdAt':_0x16c818[_0x990a('0x5d')],'updatedAt':_0x16c818[_0x990a('0x5c')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x2e1b47,_0x40e3e4))['catch'](handleError(_0x2e1b47,null));};exports[_0x990a('0x61')]=function(_0x2973e9,_0x33d7e2,_0x344462){var _0x238998={};var _0x15c6d1={};var _0x29a2c1;var _0x2c05f2;return db['WhatsappQueue'][_0x990a('0x62')]({'where':{'id':_0x2973e9[_0x990a('0x4c')]['id']}})[_0x990a('0x29')](handleEntityNotFound(_0x33d7e2,null))[_0x990a('0x29')](function(_0x559f9e){if(_0x559f9e){_0x29a2c1=_0x559f9e;_0x15c6d1['model']=_[_0x990a('0x4d')](db['Team']['rawAttributes']);_0x15c6d1[_0x990a('0x36')]=_['keys'](_0x2973e9[_0x990a('0x36')]);_0x15c6d1[_0x990a('0x37')]=_[_0x990a('0x38')](_0x15c6d1[_0x990a('0x39')],_0x15c6d1[_0x990a('0x36')]);_0x238998[_0x990a('0x3a')]=_[_0x990a('0x38')](_0x15c6d1[_0x990a('0x39')],qs[_0x990a('0x3b')](_0x2973e9[_0x990a('0x36')][_0x990a('0x3b')]));_0x238998['attributes']=_0x238998['attributes'][_0x990a('0x3c')]?_0x238998[_0x990a('0x3a')]:_0x15c6d1[_0x990a('0x39')];_0x238998[_0x990a('0x3f')]=qs['sort'](_0x2973e9[_0x990a('0x36')][_0x990a('0x40')]);_0x238998['where']=qs[_0x990a('0x37')](_['pick'](_0x2973e9[_0x990a('0x36')],_0x15c6d1['filters']));if(_0x2973e9[_0x990a('0x36')][_0x990a('0x42')]){_0x238998[_0x990a('0x41')]=_[_0x990a('0x45')](_0x238998['where'],{'$or':_[_0x990a('0x31')](_0x238998['attributes'],function(_0x4c70d5){var _0x16d965={};_0x16d965[_0x4c70d5]={'$like':'%'+_0x2973e9['query'][_0x990a('0x42')]+'%'};return _0x16d965;})});}_0x238998=_['merge']({},_0x238998,_0x2973e9['options']);return _0x29a2c1[_0x990a('0x61')](_0x238998);}})[_0x990a('0x29')](function(_0x3d1d5b){if(_0x3d1d5b){_0x2c05f2=_0x3d1d5b['length'];if(!_0x2973e9['query'][_0x990a('0x3d')]('nolimit')){_0x238998['limit']=qs[_0x990a('0x22')](_0x2973e9[_0x990a('0x36')][_0x990a('0x22')]);_0x238998[_0x990a('0x20')]=qs['offset'](_0x2973e9[_0x990a('0x36')]['offset']);}return _0x29a2c1[_0x990a('0x61')](_0x238998);}})[_0x990a('0x29')](function(_0x8c7560){if(_0x8c7560){return _0x8c7560?{'count':_0x2c05f2,'rows':_0x8c7560}:null;}})[_0x990a('0x29')](respondWithResult(_0x33d7e2,null))['catch'](handleError(_0x33d7e2,null));};exports['addTeams']=function(_0x32f75d,_0x480695,_0x2b9955){var _0x7a0050=_0x32f75d[_0x990a('0x4f')]['ids'];return db[_0x990a('0x63')][_0x990a('0x48')]({'where':{'id':_0x7a0050},'attributes':['id'],'include':[{'model':db[_0x990a('0x59')],'as':'Agents','attributes':['id',_0x990a('0x2e'),'online',_0x990a('0x64'),'interface'],'raw':!![]}]})[_0x990a('0x29')](function(_0x9f4836){if(_0x9f4836){var _0xbfcfca=_[_0x990a('0x65')](_0x9f4836,function(_0x35f147){var _0x239bb0=_0x35f147[_0x990a('0x2a')]({'plain':!![]});return _0x239bb0[_0x990a('0x66')];});return db[_0x990a('0x32')][_0x990a('0x67')]({'where':{'id':_0x32f75d['params']['id']}})[_0x990a('0x29')](function(_0x2d3d60){return db[_0x990a('0x68')][_0x990a('0x69')](function(_0x5071d8){return _0x2d3d60[_0x990a('0x6a')](_0x7a0050,{'transaction':_0x5071d8})[_0x990a('0x29')](function(){return BPromise[_0x990a('0x6b')](_0xbfcfca,function(_0x1ccb2f){return db['UserWhatsappQueue'][_0x990a('0x6c')]({'where':{'UserId':_0x1ccb2f['id'],'WhatsappQueueId':_0x32f75d['params']['id']},'transaction':_0x5071d8});});})['then'](function(){_0xbfcfca[_0x990a('0x6d')](function(_0xa7078a){socket['emit'](_0x990a('0x6e'),{'UserId':_0xa7078a['id'],'WhatsappQueueId':_0x2d3d60['id']});});});});});}})[_0x990a('0x29')](respondWithStatusCode(_0x480695,null))[_0x990a('0x4a')](handleError(_0x480695,null));};exports['removeTeams']=function(_0x2a31ac,_0x1bc69f,_0x768cc4){return db[_0x990a('0x63')][_0x990a('0x48')]({'where':{'id':_0x2a31ac['query'][_0x990a('0x6f')]},'attributes':['id'],'include':[{'model':db[_0x990a('0x59')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x990a('0x29')](handleEntityNotFound(_0x1bc69f,null))[_0x990a('0x29')](function(_0x56c2a9){var _0x185ec7=_['map'](_0x56c2a9,'id');var _0xc66f30=[];var _0x24a66e=[];var _0x1a4f46=squel[_0x990a('0x70')]();_0x1a4f46[_0x990a('0x71')](_0x990a('0x72'))['from'](_0x990a('0x73'),'tq')['join'](_0x990a('0x74'),'ut',_0x990a('0x75'))[_0x990a('0x41')](_0x990a('0x76'),_0x2a31ac[_0x990a('0x4c')]['id']);for(var _0x214c8f=0x0;_0x214c8f<_0x56c2a9[_0x990a('0x3c')];_0x214c8f+=0x1){let _0x493a51=_0x56c2a9[_0x214c8f];for(var _0x5b0c4e=0x0;_0x5b0c4e<_0x493a51[_0x990a('0x66')][_0x990a('0x3c')];_0x5b0c4e+=0x1){let _0x35c8c9=_0x493a51[_0x990a('0x66')][_0x5b0c4e];var _0x406731=_0x1a4f46[_0x990a('0x77')]();_0x406731[_0x990a('0x41')]('ut.UserId\x20=\x20?',_0x35c8c9['id']);_0x24a66e[_0x990a('0x78')](db[_0x990a('0x68')][_0x990a('0x36')](_0x406731[_0x990a('0x79')](),{'type':db[_0x990a('0x68')]['QueryTypes'][_0x990a('0x7a')]})[_0x990a('0x29')](function(_0x1ca0dd){if(_0x1ca0dd['length']===0x1){return _0x35c8c9['id'];}else{var _0x3cd586=_[_0x990a('0x7b')](_['map'](_0x1ca0dd,_0x990a('0x7c')),function(_0x5f0d9a){return _[_0x990a('0x7d')](_0x185ec7,_0x5f0d9a);});if(_0x3cd586){return _0x35c8c9['id'];}}}));}}return BPromise[_0x990a('0x7e')](_0x24a66e)[_0x990a('0x29')](function(_0x431d3e){_0xc66f30=_(_0xc66f30)[_0x990a('0x7f')](_0x431d3e)[_0x990a('0x80')]()['value']();return db[_0x990a('0x32')][_0x990a('0x67')]({'where':{'id':_0x2a31ac[_0x990a('0x4c')]['id']}})['then'](function(_0x5956b0){return db[_0x990a('0x68')][_0x990a('0x69')](function(_0x1ee87b){return _0x5956b0['removeTeams'](_0x2a31ac[_0x990a('0x36')]['ids'],{'transaction':_0x1ee87b})[_0x990a('0x29')](function(){if(!_[_0x990a('0x81')](_0xc66f30)){return _0x5956b0[_0x990a('0x82')](_0xc66f30,{'transaction':_0x1ee87b});}})[_0x990a('0x29')](function(){_0xc66f30['forEach'](function(_0x461d11){socket[_0x990a('0x83')](_0x990a('0x84'),{'UserId':_0x461d11,'WhatsappQueueId':_0x5956b0['id']});});});});});});})[_0x990a('0x29')](respondWithStatusCode(_0x1bc69f,null))['catch'](handleError(_0x1bc69f,null));};exports[_0x990a('0x85')]=function(_0xe0f69b,_0x23d37b,_0x50fe46){return db[_0x990a('0x32')]['find']({'where':{'id':_0xe0f69b[_0x990a('0x4c')]['id']}})[_0x990a('0x29')](handleEntityNotFound(_0x23d37b,null))[_0x990a('0x29')](function(_0x5a1c70){if(_0x5a1c70){return _0x5a1c70[_0x990a('0x85')](_0xe0f69b['body'][_0x990a('0x6f')],_[_0x990a('0x86')](_0xe0f69b['body'],[_0x990a('0x6f'),'id'])||{})[_0x990a('0x87')](function(_0x25c5b9){for(var _0x4b7537=0x0;_0x4b7537<_0xe0f69b[_0x990a('0x4f')][_0x990a('0x6f')]['length'];_0x4b7537+=0x1){socket[_0x990a('0x83')](_0x990a('0x6e'),{'UserId':Number(_0xe0f69b[_0x990a('0x4f')]['ids'][_0x4b7537]),'WhatsappQueueId':Number(_0xe0f69b[_0x990a('0x4c')]['id'])});}return _0x25c5b9;});}})['then'](respondWithResult(_0x23d37b,null))[_0x990a('0x4a')](handleError(_0x23d37b,null));};exports[_0x990a('0x82')]=function(_0x2a2e95,_0x129978,_0x4b3ca3){return db[_0x990a('0x32')][_0x990a('0x67')]({'where':{'id':_0x2a2e95[_0x990a('0x4c')]['id']}})[_0x990a('0x29')](handleEntityNotFound(_0x129978,null))[_0x990a('0x29')](function(_0x25bd8a){if(_0x25bd8a){return _0x25bd8a[_0x990a('0x82')](_0x2a2e95[_0x990a('0x36')]['ids'])[_0x990a('0x29')](function(){if(_[_0x990a('0x88')](_0x2a2e95[_0x990a('0x36')]['ids'])){for(var _0x97678f=0x0;_0x97678f<_0x2a2e95[_0x990a('0x36')][_0x990a('0x6f')][_0x990a('0x3c')];_0x97678f+=0x1){socket[_0x990a('0x83')](_0x990a('0x84'),{'UserId':Number(_0x2a2e95[_0x990a('0x36')][_0x990a('0x6f')][_0x97678f]),'WhatsappQueueId':Number(_0x2a2e95[_0x990a('0x4c')]['id'])});}}else{socket[_0x990a('0x83')](_0x990a('0x84'),{'UserId':Number(_0x2a2e95[_0x990a('0x36')][_0x990a('0x6f')]),'WhatsappQueueId':Number(_0x2a2e95['params']['id'])});}});}})['then'](respondWithStatusCode(_0x129978,null))[_0x990a('0x4a')](handleError(_0x129978,null));};exports[_0x990a('0x89')]=function(_0x228017,_0x47eccf,_0x426ee7){var _0x6ff099={};var _0x13c466={};var _0x1b9aa5;var _0x4e2dbc;return db['WhatsappQueue'][_0x990a('0x62')]({'where':{'id':_0x228017['params']['id']}})[_0x990a('0x29')](handleEntityNotFound(_0x47eccf,null))['then'](function(_0x1d92fe){if(_0x1d92fe){_0x1b9aa5=_0x1d92fe;_0x13c466[_0x990a('0x39')]=_[_0x990a('0x4d')](db['User']['rawAttributes']);_0x13c466[_0x990a('0x36')]=_[_0x990a('0x4d')](_0x228017[_0x990a('0x36')]);_0x13c466[_0x990a('0x37')]=_[_0x990a('0x38')](_0x13c466[_0x990a('0x39')],_0x13c466[_0x990a('0x36')]);_0x6ff099[_0x990a('0x3a')]=_[_0x990a('0x38')](_0x13c466[_0x990a('0x39')],qs[_0x990a('0x3b')](_0x228017['query'][_0x990a('0x3b')]));_0x6ff099[_0x990a('0x3a')]=_0x6ff099['attributes'][_0x990a('0x3c')]?_0x6ff099[_0x990a('0x3a')]:_0x13c466[_0x990a('0x39')];_0x6ff099[_0x990a('0x3f')]=qs['sort'](_0x228017[_0x990a('0x36')]['sort']);_0x6ff099[_0x990a('0x41')]=qs[_0x990a('0x37')](_[_0x990a('0x8a')](_0x228017[_0x990a('0x36')],_0x13c466[_0x990a('0x37')]));if(_0x228017[_0x990a('0x36')][_0x990a('0x42')]){_0x6ff099[_0x990a('0x41')]=_[_0x990a('0x45')](_0x6ff099[_0x990a('0x41')],{'$or':_['map'](_0x6ff099[_0x990a('0x3a')],function(_0x471240){var _0x445599={};_0x445599[_0x471240]={'$like':'%'+_0x228017[_0x990a('0x36')][_0x990a('0x42')]+'%'};return _0x445599;})});}_0x6ff099=_[_0x990a('0x45')]({},_0x6ff099,_0x228017[_0x990a('0x46')]);return _0x1b9aa5[_0x990a('0x89')](_0x6ff099);}})[_0x990a('0x29')](function(_0x10012f){if(_0x10012f){_0x4e2dbc=_0x10012f[_0x990a('0x3c')];if(!_0x228017[_0x990a('0x36')][_0x990a('0x3d')](_0x990a('0x3e'))){_0x6ff099[_0x990a('0x22')]=qs['limit'](_0x228017[_0x990a('0x36')][_0x990a('0x22')]);_0x6ff099['offset']=qs[_0x990a('0x20')](_0x228017['query'][_0x990a('0x20')]);}return _0x1b9aa5[_0x990a('0x89')](_0x6ff099);}})[_0x990a('0x29')](function(_0x232791){if(_0x232791){return _0x232791?{'count':_0x4e2dbc,'rows':_0x232791}:null;}})['then'](respondWithResult(_0x47eccf,null))[_0x990a('0x4a')](handleError(_0x47eccf,null));};
\ No newline at end of file
index 6365fbd..866d636 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba68=['WhatsappQueue','setMaxListeners','save','update','remove','hasOwnProperty','hook','exports','events'];(function(_0x285824,_0x3da647){var _0x311d7e=function(_0x2f3de0){while(--_0x2f3de0){_0x285824['push'](_0x285824['shift']());}};_0x311d7e(++_0x3da647);}(_0xba68,0x1b8));var _0x8ba6=function(_0x30fdb7,_0x26483c){_0x30fdb7=_0x30fdb7-0x0;var _0x12668d=_0xba68[_0x30fdb7];return _0x12668d;};'use strict';var EventEmitter=require(_0x8ba6('0x0'));var WhatsappQueue=require('../../mysqldb')['db'][_0x8ba6('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x8ba6('0x2')](0x0);var events={'afterCreate':_0x8ba6('0x3'),'afterUpdate':_0x8ba6('0x4'),'afterDestroy':_0x8ba6('0x5')};function emitEvent(_0xaedb4c){return function(_0x134f9f,_0x3eca49,_0x286c22){WhatsappQueueEvents['emit'](_0xaedb4c+':'+_0x134f9f['id'],_0x134f9f);WhatsappQueueEvents['emit'](_0xaedb4c,_0x134f9f);_0x286c22(null);};}for(var e in events){if(events[_0x8ba6('0x6')](e)){var event=events[e];WhatsappQueue[_0x8ba6('0x7')](e,emitEvent(event));}}module[_0x8ba6('0x8')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x9ba5=['../../mysqldb','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports'];(function(_0x4ee5bb,_0x1a0c56){var _0xa01c1a=function(_0x3ab3f7){while(--_0x3ab3f7){_0x4ee5bb['push'](_0x4ee5bb['shift']());}};_0xa01c1a(++_0x1a0c56);}(_0x9ba5,0xe0));var _0x59ba=function(_0xd0b415,_0x149675){_0xd0b415=_0xd0b415-0x0;var _0x2bdf2c=_0x9ba5[_0xd0b415];return _0x2bdf2c;};'use strict';var EventEmitter=require('events');var WhatsappQueue=require(_0x59ba('0x0'))['db']['WhatsappQueue'];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x59ba('0x1')](0x0);var events={'afterCreate':_0x59ba('0x2'),'afterUpdate':_0x59ba('0x3'),'afterDestroy':'remove'};function emitEvent(_0x3cf74c){return function(_0x5ca46a,_0x1b2e78,_0x17c404){WhatsappQueueEvents[_0x59ba('0x4')](_0x3cf74c+':'+_0x5ca46a['id'],_0x5ca46a);WhatsappQueueEvents[_0x59ba('0x4')](_0x3cf74c,_0x5ca46a);_0x17c404(null);};}for(var e in events){if(events[_0x59ba('0x5')](e)){var event=events[e];WhatsappQueue[_0x59ba('0x6')](e,emitEvent(event));}}module[_0x59ba('0x7')]=WhatsappQueueEvents;
\ No newline at end of file
index 2a77efc..9b63bc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7553=['bluebird','rimraf','../../config/environment','./whatsappQueue.attributes','exports','define','WhatsappQueue','whatsapp_queues','lodash','util','moment'];(function(_0x9a6719,_0x191f24){var _0x138184=function(_0x6fbdfd){while(--_0x6fbdfd){_0x9a6719['push'](_0x9a6719['shift']());}};_0x138184(++_0x191f24);}(_0x7553,0xef));var _0x3755=function(_0xfbc3dc,_0x3a7830){_0xfbc3dc=_0xfbc3dc-0x0;var _0x48c818=_0x7553[_0xfbc3dc];return _0x48c818;};'use strict';var _=require(_0x3755('0x0'));var util=require(_0x3755('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x3755('0x2'));var BPromise=require(_0x3755('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x3755('0x4'));var config=require(_0x3755('0x5'));var attributes=require(_0x3755('0x6'));module[_0x3755('0x7')]=function(_0xeaea29,_0x2c4256){return _0xeaea29[_0x3755('0x8')](_0x3755('0x9'),attributes,{'tableName':_0x3755('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x157e=['exports','define','WhatsappQueue','whatsapp_queues','lodash','../../config/logger','api','bluebird','request-promise','rimraf','./whatsappQueue.attributes'];(function(_0x11abf3,_0x5c5fdd){var _0x5ea08f=function(_0x273a0b){while(--_0x273a0b){_0x11abf3['push'](_0x11abf3['shift']());}};_0x5ea08f(++_0x5c5fdd);}(_0x157e,0x1f3));var _0xe157=function(_0x34473f,_0x2b9c5c){_0x34473f=_0x34473f-0x0;var _0x25cf6f=_0x157e[_0x34473f];return _0x25cf6f;};'use strict';var _=require(_0xe157('0x0'));var util=require('util');var logger=require(_0xe157('0x1'))(_0xe157('0x2'));var moment=require('moment');var BPromise=require(_0xe157('0x3'));var rp=require(_0xe157('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe157('0x5'));var config=require('../../config/environment');var attributes=require(_0xe157('0x6'));module[_0xe157('0x7')]=function(_0xf8ca3f,_0x5200b0){return _0xf8ca3f[_0xe157('0x8')](_0xe157('0x9'),attributes,{'tableName':_0xe157('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1d5db64..9595540 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e2f=['message','result','catch','GetWhatsappQueue','WhatsappQueue','options','where','attributes','map','include','model','ShowWhatsappQueue','find','util','moment','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','redis','localhost','./whatsappQueue.socket','register','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x1ae86b,_0x24699f){var _0x2f11a5=function(_0x1b1177){while(--_0x1b1177){_0x1ae86b['push'](_0x1ae86b['shift']());}};_0x2f11a5(++_0x24699f);}(_0x4e2f,0x148));var _0xf4e2=function(_0x5ef0fe,_0xb5967a){_0x5ef0fe=_0x5ef0fe-0x0;var _0x3a18bb=_0x4e2f[_0x5ef0fe];return _0x3a18bb;};'use strict';var _=require('lodash');var util=require(_0xf4e2('0x0'));var moment=require(_0xf4e2('0x1'));var BPromise=require('bluebird');var rs=require(_0xf4e2('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf4e2('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xf4e2('0x4'));var config=require(_0xf4e2('0x5'));var jayson=require(_0xf4e2('0x6'));var client=jayson[_0xf4e2('0x7')]['http']({'port':0x232a});config[_0xf4e2('0x8')]=_['defaults'](config[_0xf4e2('0x8')],{'host':_0xf4e2('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf4e2('0x8')]));require(_0xf4e2('0xa'))[_0xf4e2('0xb')](socket);function respondWithRpcPromise(_0x55d89b,_0x46d7c7,_0x176321){return new BPromise(function(_0x1ec3c5,_0x443713){return client[_0xf4e2('0xc')](_0x55d89b,_0x176321)[_0xf4e2('0xd')](function(_0x3c86ec){logger[_0xf4e2('0xe')](_0xf4e2('0xf'),_0x46d7c7,_0xf4e2('0x10'));logger[_0xf4e2('0x11')](_0xf4e2('0x12'),_0x46d7c7,'request\x20sent',JSON[_0xf4e2('0x13')](_0x3c86ec));if(_0x3c86ec['error']){if(_0x3c86ec[_0xf4e2('0x14')][_0xf4e2('0x15')]===0x1f4){logger[_0xf4e2('0x14')](_0xf4e2('0xf'),_0x46d7c7,_0x3c86ec[_0xf4e2('0x14')][_0xf4e2('0x16')]);return _0x443713(_0x3c86ec[_0xf4e2('0x14')]['message']);}logger[_0xf4e2('0x14')]('WhatsappQueue,\x20%s,\x20%s',_0x46d7c7,_0x3c86ec[_0xf4e2('0x14')][_0xf4e2('0x16')]);return _0x1ec3c5(_0x3c86ec['error']['message']);}else{logger['info'](_0xf4e2('0xf'),_0x46d7c7,_0xf4e2('0x10'));_0x1ec3c5(_0x3c86ec[_0xf4e2('0x17')][_0xf4e2('0x16')]);}})[_0xf4e2('0x18')](function(_0x1650dd){logger[_0xf4e2('0x14')]('WhatsappQueue,\x20%s,\x20%s',_0x46d7c7,_0x1650dd);_0x443713(_0x1650dd);});});}exports[_0xf4e2('0x19')]=function(_0x4cb270){var _0x27a654=this;return new Promise(function(_0x351fc1,_0x36df25){return db[_0xf4e2('0x1a')]['findAll']({'raw':_0x4cb270[_0xf4e2('0x1b')]?_0x4cb270[_0xf4e2('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x4cb270[_0xf4e2('0x1b')]?_0x4cb270[_0xf4e2('0x1b')][_0xf4e2('0x1c')]||null:null,'attributes':_0x4cb270[_0xf4e2('0x1b')]?_0x4cb270[_0xf4e2('0x1b')][_0xf4e2('0x1d')]||null:null,'limit':_0x4cb270[_0xf4e2('0x1b')]?_0x4cb270[_0xf4e2('0x1b')]['limit']||null:null,'include':_0x4cb270[_0xf4e2('0x1b')]?_0x4cb270[_0xf4e2('0x1b')]['include']?_[_0xf4e2('0x1e')](_0x4cb270['options'][_0xf4e2('0x1f')],function(_0x18db01){return{'model':db[_0x18db01[_0xf4e2('0x20')]],'as':_0x18db01['as'],'attributes':_0x18db01[_0xf4e2('0x1d')],'include':_0x18db01[_0xf4e2('0x1f')]?_['map'](_0x18db01[_0xf4e2('0x1f')],function(_0x27512d){return{'model':db[_0x27512d[_0xf4e2('0x20')]],'as':_0x27512d['as'],'attributes':_0x27512d['attributes'],'include':_0x27512d[_0xf4e2('0x1f')]?_[_0xf4e2('0x1e')](_0x27512d[_0xf4e2('0x1f')],function(_0xdd9cc0){return{'model':db[_0xdd9cc0[_0xf4e2('0x20')]],'as':_0xdd9cc0['as'],'attributes':_0xdd9cc0[_0xf4e2('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xf4e2('0xd')](function(_0x334fa9){logger[_0xf4e2('0xe')](_0xf4e2('0x19'),_0x4cb270);logger[_0xf4e2('0x11')]('GetWhatsappQueue',_0x4cb270,JSON[_0xf4e2('0x13')](_0x334fa9));_0x351fc1(_0x334fa9);})[_0xf4e2('0x18')](function(_0x56dd38){logger[_0xf4e2('0x14')]('GetWhatsappQueue',_0x56dd38[_0xf4e2('0x16')],_0x4cb270);_0x36df25(_0x27a654[_0xf4e2('0x14')](0x1f4,_0x56dd38[_0xf4e2('0x16')]));});});};exports[_0xf4e2('0x21')]=function(_0x41f0a3){var _0x24c42c=this;return new Promise(function(_0xb9831d,_0x17b6e3){return db[_0xf4e2('0x1a')][_0xf4e2('0x22')]({'raw':_0x41f0a3[_0xf4e2('0x1b')]?_0x41f0a3['options']['raw']===undefined?!![]:![]:!![],'where':_0x41f0a3[_0xf4e2('0x1b')]?_0x41f0a3[_0xf4e2('0x1b')][_0xf4e2('0x1c')]||null:null,'attributes':_0x41f0a3[_0xf4e2('0x1b')]?_0x41f0a3[_0xf4e2('0x1b')][_0xf4e2('0x1d')]||null:null,'include':_0x41f0a3[_0xf4e2('0x1b')]?_0x41f0a3[_0xf4e2('0x1b')][_0xf4e2('0x1f')]?_['map'](_0x41f0a3[_0xf4e2('0x1b')][_0xf4e2('0x1f')],function(_0x22672b){return{'model':db[_0x22672b[_0xf4e2('0x20')]],'as':_0x22672b['as'],'attributes':_0x22672b[_0xf4e2('0x1d')],'include':_0x22672b[_0xf4e2('0x1f')]?_[_0xf4e2('0x1e')](_0x22672b[_0xf4e2('0x1f')],function(_0x4d9a96){return{'model':db[_0x4d9a96[_0xf4e2('0x20')]],'as':_0x4d9a96['as'],'attributes':_0x4d9a96[_0xf4e2('0x1d')],'include':_0x4d9a96[_0xf4e2('0x1f')]?_[_0xf4e2('0x1e')](_0x4d9a96[_0xf4e2('0x1f')],function(_0x2d85a8){return{'model':db[_0x2d85a8[_0xf4e2('0x20')]],'as':_0x2d85a8['as'],'attributes':_0x2d85a8[_0xf4e2('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xf4e2('0xd')](function(_0x5f0314){logger[_0xf4e2('0xe')](_0xf4e2('0x21'),_0x41f0a3);logger[_0xf4e2('0x11')](_0xf4e2('0x21'),_0x41f0a3,JSON[_0xf4e2('0x13')](_0x5f0314));_0xb9831d(_0x5f0314);})[_0xf4e2('0x18')](function(_0x1dd215){logger['error'](_0xf4e2('0x21'),_0x1dd215[_0xf4e2('0x16')],_0x41f0a3);_0x17b6e3(_0x24c42c[_0xf4e2('0x14')](0x1f4,_0x1dd215[_0xf4e2('0x16')]));});});};
\ No newline at end of file
+var _0x34be=['attributes','include','map','model','stringify','ShowWhatsappQueue','WhatsappQueue','find','where','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults','localhost','./whatsappQueue.socket','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','GetWhatsappQueue','findAll','raw','options'];(function(_0x4fa7e9,_0x295394){var _0xf6264d=function(_0x50bf04){while(--_0x50bf04){_0x4fa7e9['push'](_0x4fa7e9['shift']());}};_0xf6264d(++_0x295394);}(_0x34be,0x75));var _0xe34b=function(_0x363b81,_0x81e6ca){_0x363b81=_0x363b81-0x0;var _0x1d92fb=_0x34be[_0x363b81];return _0x1d92fb;};'use strict';var _=require('lodash');var util=require(_0xe34b('0x0'));var moment=require(_0xe34b('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe34b('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xe34b('0x3'));var logger=require(_0xe34b('0x4'))(_0xe34b('0x5'));var config=require(_0xe34b('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xe34b('0x7')]({'port':0x232a});config[_0xe34b('0x8')]=_[_0xe34b('0x9')](config['redis'],{'host':_0xe34b('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe34b('0x8')]));require(_0xe34b('0xb'))['register'](socket);function respondWithRpcPromise(_0x58f10a,_0x1f9586,_0x14ab5c){return new BPromise(function(_0x337719,_0x5039df){return client[_0xe34b('0xc')](_0x58f10a,_0x14ab5c)[_0xe34b('0xd')](function(_0xd947e6){logger[_0xe34b('0xe')](_0xe34b('0xf'),_0x1f9586,_0xe34b('0x10'));logger[_0xe34b('0x11')]('WhatsappQueue,\x20%s,\x20%s,\x20%s',_0x1f9586,_0xe34b('0x10'),JSON['stringify'](_0xd947e6));if(_0xd947e6[_0xe34b('0x12')]){if(_0xd947e6[_0xe34b('0x12')][_0xe34b('0x13')]===0x1f4){logger[_0xe34b('0x12')](_0xe34b('0xf'),_0x1f9586,_0xd947e6['error']['message']);return _0x5039df(_0xd947e6[_0xe34b('0x12')][_0xe34b('0x14')]);}logger[_0xe34b('0x12')](_0xe34b('0xf'),_0x1f9586,_0xd947e6[_0xe34b('0x12')][_0xe34b('0x14')]);return _0x337719(_0xd947e6[_0xe34b('0x12')][_0xe34b('0x14')]);}else{logger[_0xe34b('0xe')](_0xe34b('0xf'),_0x1f9586,_0xe34b('0x10'));_0x337719(_0xd947e6[_0xe34b('0x15')][_0xe34b('0x14')]);}})[_0xe34b('0x16')](function(_0x49aeac){logger[_0xe34b('0x12')](_0xe34b('0xf'),_0x1f9586,_0x49aeac);_0x5039df(_0x49aeac);});});}exports[_0xe34b('0x17')]=function(_0x573c5b){var _0x21de75=this;return new Promise(function(_0x123ceb,_0x30287f){return db['WhatsappQueue'][_0xe34b('0x18')]({'raw':_0x573c5b['options']?_0x573c5b['options'][_0xe34b('0x19')]===undefined?!![]:![]:!![],'where':_0x573c5b[_0xe34b('0x1a')]?_0x573c5b[_0xe34b('0x1a')]['where']||null:null,'attributes':_0x573c5b[_0xe34b('0x1a')]?_0x573c5b[_0xe34b('0x1a')][_0xe34b('0x1b')]||null:null,'limit':_0x573c5b[_0xe34b('0x1a')]?_0x573c5b[_0xe34b('0x1a')]['limit']||null:null,'include':_0x573c5b[_0xe34b('0x1a')]?_0x573c5b['options'][_0xe34b('0x1c')]?_[_0xe34b('0x1d')](_0x573c5b['options']['include'],function(_0x2e09ef){return{'model':db[_0x2e09ef[_0xe34b('0x1e')]],'as':_0x2e09ef['as'],'attributes':_0x2e09ef[_0xe34b('0x1b')],'include':_0x2e09ef[_0xe34b('0x1c')]?_[_0xe34b('0x1d')](_0x2e09ef[_0xe34b('0x1c')],function(_0x2ae6b8){return{'model':db[_0x2ae6b8[_0xe34b('0x1e')]],'as':_0x2ae6b8['as'],'attributes':_0x2ae6b8[_0xe34b('0x1b')],'include':_0x2ae6b8[_0xe34b('0x1c')]?_[_0xe34b('0x1d')](_0x2ae6b8[_0xe34b('0x1c')],function(_0x132864){return{'model':db[_0x132864[_0xe34b('0x1e')]],'as':_0x132864['as'],'attributes':_0x132864[_0xe34b('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x46af69){logger['info'](_0xe34b('0x17'),_0x573c5b);logger['debug']('GetWhatsappQueue',_0x573c5b,JSON[_0xe34b('0x1f')](_0x46af69));_0x123ceb(_0x46af69);})[_0xe34b('0x16')](function(_0xa20a43){logger[_0xe34b('0x12')]('GetWhatsappQueue',_0xa20a43[_0xe34b('0x14')],_0x573c5b);_0x30287f(_0x21de75[_0xe34b('0x12')](0x1f4,_0xa20a43[_0xe34b('0x14')]));});});};exports[_0xe34b('0x20')]=function(_0x533aa2){var _0x6b57e8=this;return new Promise(function(_0xecf113,_0x10fccb){return db[_0xe34b('0x21')][_0xe34b('0x22')]({'raw':_0x533aa2[_0xe34b('0x1a')]?_0x533aa2[_0xe34b('0x1a')][_0xe34b('0x19')]===undefined?!![]:![]:!![],'where':_0x533aa2[_0xe34b('0x1a')]?_0x533aa2['options'][_0xe34b('0x23')]||null:null,'attributes':_0x533aa2[_0xe34b('0x1a')]?_0x533aa2[_0xe34b('0x1a')][_0xe34b('0x1b')]||null:null,'include':_0x533aa2[_0xe34b('0x1a')]?_0x533aa2['options'][_0xe34b('0x1c')]?_[_0xe34b('0x1d')](_0x533aa2['options'][_0xe34b('0x1c')],function(_0x268aac){return{'model':db[_0x268aac[_0xe34b('0x1e')]],'as':_0x268aac['as'],'attributes':_0x268aac[_0xe34b('0x1b')],'include':_0x268aac['include']?_[_0xe34b('0x1d')](_0x268aac[_0xe34b('0x1c')],function(_0x2d772c){return{'model':db[_0x2d772c[_0xe34b('0x1e')]],'as':_0x2d772c['as'],'attributes':_0x2d772c[_0xe34b('0x1b')],'include':_0x2d772c[_0xe34b('0x1c')]?_[_0xe34b('0x1d')](_0x2d772c[_0xe34b('0x1c')],function(_0x3e25d8){return{'model':db[_0x3e25d8[_0xe34b('0x1e')]],'as':_0x3e25d8['as'],'attributes':_0x3e25d8[_0xe34b('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xe34b('0xd')](function(_0x453a60){logger[_0xe34b('0xe')]('ShowWhatsappQueue',_0x533aa2);logger[_0xe34b('0x11')](_0xe34b('0x20'),_0x533aa2,JSON[_0xe34b('0x1f')](_0x453a60));_0xecf113(_0x453a60);})[_0xe34b('0x16')](function(_0xe9239e){logger[_0xe34b('0x12')](_0xe34b('0x20'),_0xe9239e[_0xe34b('0x14')],_0x533aa2);_0x10fccb(_0x6b57e8[_0xe34b('0x12')](0x1f4,_0xe9239e[_0xe34b('0x14')]));});});};
\ No newline at end of file
index d2d54c0..634da8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b20=['whatsappQueue:','./whatsappQueue.events','remove','emit','register'];(function(_0x45f095,_0x2b24b7){var _0x1f7365=function(_0x1343af){while(--_0x1343af){_0x45f095['push'](_0x45f095['shift']());}};_0x1f7365(++_0x2b24b7);}(_0x4b20,0x1c8));var _0x04b2=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x4b20[_0x14add3];return _0x4a174f;};'use strict';var WhatsappQueueEvents=require(_0x04b2('0x0'));var events=['save',_0x04b2('0x1'),'update'];function createListener(_0x10ec8e,_0x1317a8){return function(_0xced91c){_0x1317a8[_0x04b2('0x2')](_0x10ec8e,_0xced91c);};}function removeListener(_0x2a9853,_0x1fb5df){return function(){WhatsappQueueEvents['removeListener'](_0x2a9853,_0x1fb5df);};}exports[_0x04b2('0x3')]=function(_0x481c71){for(var _0x5d2caa=0x0,_0x43150e=events['length'];_0x5d2caa<_0x43150e;_0x5d2caa++){var _0x2797bb=events[_0x5d2caa];var _0x12a81e=createListener(_0x04b2('0x4')+_0x2797bb,_0x481c71);WhatsappQueueEvents['on'](_0x2797bb,_0x12a81e);}};
\ No newline at end of file
+var _0x3c79=['remove','update','emit','length','whatsappQueue:'];(function(_0x231d5a,_0x15ae0c){var _0x2253dd=function(_0x548b80){while(--_0x548b80){_0x231d5a['push'](_0x231d5a['shift']());}};_0x2253dd(++_0x15ae0c);}(_0x3c79,0x1cc));var _0x93c7=function(_0x13a436,_0x2d70b5){_0x13a436=_0x13a436-0x0;var _0x233b30=_0x3c79[_0x13a436];return _0x233b30;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=['save',_0x93c7('0x0'),_0x93c7('0x1')];function createListener(_0x598669,_0x4243bd){return function(_0x57aa75){_0x4243bd[_0x93c7('0x2')](_0x598669,_0x57aa75);};}function removeListener(_0x4aaf67,_0x449081){return function(){WhatsappQueueEvents['removeListener'](_0x4aaf67,_0x449081);};}exports['register']=function(_0x1bdb50){for(var _0x1efe06=0x0,_0x7a7515=events[_0x93c7('0x3')];_0x1efe06<_0x7a7515;_0x1efe06++){var _0x534a21=events[_0x1efe06];var _0x2247b8=createListener(_0x93c7('0x4')+_0x534a21,_0x1bdb50);WhatsappQueueEvents['on'](_0x534a21,_0x2247b8);}};
\ No newline at end of file
index 0e6bea4..4ae3879 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c51=['./whatsappQueueReport.controller','isAuthenticated','index','get','/:id','post','update','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service'];(function(_0x1c86c7,_0x508992){var _0x3e1a9a=function(_0xa843cc){while(--_0xa843cc){_0x1c86c7['push'](_0x1c86c7['shift']());}};_0x3e1a9a(++_0x508992);}(_0x3c51,0x109));var _0x13c5=function(_0x27737f,_0x41a746){_0x27737f=_0x27737f-0x0;var _0x36c322=_0x3c51[_0x27737f];return _0x36c322;};'use strict';var multer=require(_0x13c5('0x0'));var util=require(_0x13c5('0x1'));var path=require(_0x13c5('0x2'));var timeout=require('connect-timeout');var express=require(_0x13c5('0x3'));var router=express[_0x13c5('0x4')]();var fs_extra=require(_0x13c5('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x13c5('0x6'));var config=require('../../config/environment');var controller=require(_0x13c5('0x7'));router['get']('/',auth[_0x13c5('0x8')](),controller[_0x13c5('0x9')]);router[_0x13c5('0xa')]('/describe',auth[_0x13c5('0x8')](),controller['describe']);router[_0x13c5('0xa')](_0x13c5('0xb'),auth[_0x13c5('0x8')](),controller['show']);router[_0x13c5('0xc')]('/',auth[_0x13c5('0x8')](),controller['create']);router['put'](_0x13c5('0xb'),auth['isAuthenticated'](),controller[_0x13c5('0xd')]);router['delete']('/:id',auth[_0x13c5('0x8')](),controller[_0x13c5('0xe')]);module[_0x13c5('0xf')]=router;
\ No newline at end of file
+var _0x7e10=['/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get','index','isAuthenticated'];(function(_0x725a4c,_0x102507){var _0x37b2cc=function(_0x505fc9){while(--_0x505fc9){_0x725a4c['push'](_0x725a4c['shift']());}};_0x37b2cc(++_0x102507);}(_0x7e10,0x77));var _0x07e1=function(_0x4cf237,_0x551431){_0x4cf237=_0x4cf237-0x0;var _0x237e45=_0x7e10[_0x4cf237];return _0x237e45;};'use strict';var multer=require(_0x07e1('0x0'));var util=require(_0x07e1('0x1'));var path=require(_0x07e1('0x2'));var timeout=require(_0x07e1('0x3'));var express=require(_0x07e1('0x4'));var router=express['Router']();var fs_extra=require(_0x07e1('0x5'));var auth=require(_0x07e1('0x6'));var interaction=require(_0x07e1('0x7'));var config=require(_0x07e1('0x8'));var controller=require(_0x07e1('0x9'));router[_0x07e1('0xa')]('/',auth['isAuthenticated'](),controller[_0x07e1('0xb')]);router[_0x07e1('0xa')]('/describe',auth[_0x07e1('0xc')](),controller['describe']);router['get'](_0x07e1('0xd'),auth['isAuthenticated'](),controller[_0x07e1('0xe')]);router[_0x07e1('0xf')]('/',auth[_0x07e1('0xc')](),controller[_0x07e1('0x10')]);router[_0x07e1('0x11')](_0x07e1('0xd'),auth[_0x07e1('0xc')](),controller[_0x07e1('0x12')]);router[_0x07e1('0x13')](_0x07e1('0xd'),auth[_0x07e1('0xc')](),controller[_0x07e1('0x14')]);module[_0x07e1('0x15')]=router;
\ No newline at end of file
index 8cb422b..7cb32ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x8f82df,_0x4ad0e9){var _0x19212a=function(_0xa30958){while(--_0xa30958){_0x8f82df['push'](_0x8f82df['shift']());}};_0x19212a(++_0x4ad0e9);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
+var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x3a2eee,_0x48fb1f){var _0x58df2e=function(_0x18eef7){while(--_0x18eef7){_0x3a2eee['push'](_0x3a2eee['shift']());}};_0x58df2e(++_0x48fb1f);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
index 428e1d4..f3c4425 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58a4=['key','keys','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','rawAttributes','include','create','body','update','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','save','then','destroy','sendStatus','error','name','index','map','WhatsappQueueReport','fieldName'];(function(_0x223bdb,_0x5882e6){var _0xef8e68=function(_0x55ab83){while(--_0x55ab83){_0x223bdb['push'](_0x223bdb['shift']());}};_0xef8e68(++_0x5882e6);}(_0x58a4,0xbf));var _0x458a=function(_0x49253a,_0x4883d1){_0x49253a=_0x49253a-0x0;var _0x471008=_0x58a4[_0x49253a];return _0x471008;};'use strict';var emlformat=require(_0x458a('0x0'));var rimraf=require(_0x458a('0x1'));var zipdir=require(_0x458a('0x2'));var jsonpatch=require(_0x458a('0x3'));var rp=require(_0x458a('0x4'));var moment=require(_0x458a('0x5'));var BPromise=require(_0x458a('0x6'));var Mustache=require(_0x458a('0x7'));var util=require(_0x458a('0x8'));var path=require(_0x458a('0x9'));var sox=require(_0x458a('0xa'));var csv=require(_0x458a('0xb'));var ejs=require(_0x458a('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x458a('0xd'));var crypto=require(_0x458a('0xe'));var jsforce=require(_0x458a('0xf'));var deskjs=require(_0x458a('0x10'));var toCsv=require(_0x458a('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x458a('0x11'));var authService=require(_0x458a('0x12'));var qs=require(_0x458a('0x13'));var as=require(_0x458a('0x14'));var hardwareService=require(_0x458a('0x15'));var logger=require('../../config/logger')(_0x458a('0x16'));var utils=require(_0x458a('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x458a('0x18'));var db=require(_0x458a('0x19'))['db'];function respondWithStatusCode(_0xee09c6,_0x2a4934){_0x2a4934=_0x2a4934||0xcc;return function(_0x2e788b){if(_0x2e788b){return _0xee09c6['sendStatus'](_0x2a4934);}return _0xee09c6['status'](_0x2a4934)[_0x458a('0x1a')]();};}function respondWithResult(_0x56436f,_0x2c7528){_0x2c7528=_0x2c7528||0xc8;return function(_0x44f683){if(_0x44f683){return _0x56436f[_0x458a('0x1b')](_0x2c7528)[_0x458a('0x1c')](_0x44f683);}};}function respondWithFilteredResult(_0xad80f9,_0x29acee){return function(_0x507b0f){if(_0x507b0f){var _0x4b26be=typeof _0x29acee['offset']===_0x458a('0x1d')&&typeof _0x29acee[_0x458a('0x1e')]===_0x458a('0x1d');var _0x5c5b41=_0x507b0f[_0x458a('0x1f')];var _0x260c87=_0x4b26be?0x0:_0x29acee[_0x458a('0x20')];var _0x392986=_0x4b26be?_0x507b0f[_0x458a('0x1f')]:_0x29acee['offset']+_0x29acee['limit'];var _0x178db9;if(_0x392986>=_0x5c5b41){_0x392986=_0x5c5b41;_0x178db9=0xc8;}else{_0x178db9=0xce;}_0xad80f9['status'](_0x178db9);return _0xad80f9[_0x458a('0x21')](_0x458a('0x22'),_0x260c87+'-'+_0x392986+'/'+_0x5c5b41)['json'](_0x507b0f);}return null;};}function patchUpdates(_0x468416){return function(_0x55a588){try{jsonpatch[_0x458a('0x23')](_0x55a588,_0x468416,!![]);}catch(_0x1c79cb){return BPromise['reject'](_0x1c79cb);}return _0x55a588[_0x458a('0x24')]();};}function saveUpdates(_0xead884,_0x5a2bcb){return function(_0xa6b8ff){if(_0xa6b8ff){return _0xa6b8ff['update'](_0xead884)[_0x458a('0x25')](function(_0x5bca42){return _0x5bca42;});}return null;};}function removeEntity(_0x4080fc,_0x5dfc6c){return function(_0x36b08e){if(_0x36b08e){return _0x36b08e[_0x458a('0x26')]()[_0x458a('0x25')](function(){_0x4080fc[_0x458a('0x1b')](0xcc)[_0x458a('0x1a')]();});}};}function handleEntityNotFound(_0x19bd5,_0x340375){return function(_0x3012c7){if(!_0x3012c7){_0x19bd5[_0x458a('0x27')](0x194);}return _0x3012c7;};}function handleError(_0xfc6b24,_0x52efed){_0x52efed=_0x52efed||0x1f4;return function(_0x327fcb){logger[_0x458a('0x28')](_0x327fcb['stack']);if(_0x327fcb[_0x458a('0x29')]){delete _0x327fcb[_0x458a('0x29')];}_0xfc6b24['status'](_0x52efed)['send'](_0x327fcb);};}exports[_0x458a('0x2a')]=function(_0x596fe2,_0x33c5d8){var _0x29f9b5={},_0x223f73={},_0x4a49e4={'count':0x0,'rows':[]};var _0xa6fdf=_[_0x458a('0x2b')](db[_0x458a('0x2c')]['rawAttributes'],function(_0x47e20d){return{'name':_0x47e20d[_0x458a('0x2d')],'type':_0x47e20d['type'][_0x458a('0x2e')]};});_0x223f73['model']=_[_0x458a('0x2b')](_0xa6fdf,_0x458a('0x29'));_0x223f73['query']=_[_0x458a('0x2f')](_0x596fe2[_0x458a('0x30')]);_0x223f73[_0x458a('0x31')]=_['intersection'](_0x223f73[_0x458a('0x32')],_0x223f73[_0x458a('0x30')]);_0x29f9b5[_0x458a('0x33')]=_[_0x458a('0x34')](_0x223f73[_0x458a('0x32')],qs['fields'](_0x596fe2[_0x458a('0x30')][_0x458a('0x35')]));_0x29f9b5[_0x458a('0x33')]=_0x29f9b5[_0x458a('0x33')][_0x458a('0x36')]?_0x29f9b5[_0x458a('0x33')]:_0x223f73['model'];if(!_0x596fe2[_0x458a('0x30')][_0x458a('0x37')](_0x458a('0x38'))){_0x29f9b5[_0x458a('0x1e')]=qs[_0x458a('0x1e')](_0x596fe2[_0x458a('0x30')][_0x458a('0x1e')]);_0x29f9b5[_0x458a('0x20')]=qs[_0x458a('0x20')](_0x596fe2['query'][_0x458a('0x20')]);}_0x29f9b5[_0x458a('0x39')]=qs[_0x458a('0x3a')](_0x596fe2[_0x458a('0x30')][_0x458a('0x3a')]);_0x29f9b5[_0x458a('0x3b')]=qs[_0x458a('0x31')](_[_0x458a('0x3c')](_0x596fe2[_0x458a('0x30')],_0x223f73[_0x458a('0x31')]),_0xa6fdf);if(_0x596fe2[_0x458a('0x30')][_0x458a('0x3d')]){_0x29f9b5[_0x458a('0x3b')]=_[_0x458a('0x3e')](_0x29f9b5[_0x458a('0x3b')],{'$or':_['map'](_0xa6fdf,function(_0x226cf0){if(_0x226cf0[_0x458a('0x3f')]!==_0x458a('0x40')){var _0x12dad4={};_0x12dad4[_0x226cf0[_0x458a('0x29')]]={'$like':'%'+_0x596fe2[_0x458a('0x30')][_0x458a('0x3d')]+'%'};return _0x12dad4;}})});}_0x29f9b5=_[_0x458a('0x3e')]({},_0x29f9b5,_0x596fe2[_0x458a('0x41')]);var _0x44c5ba={'where':_0x29f9b5[_0x458a('0x3b')]};return db['WhatsappQueueReport'][_0x458a('0x1f')](_0x44c5ba)[_0x458a('0x25')](function(_0x5da57a){_0x4a49e4[_0x458a('0x1f')]=_0x5da57a;if(_0x596fe2[_0x458a('0x30')][_0x458a('0x42')]){_0x29f9b5['include']=[{'all':!![]}];}return db[_0x458a('0x2c')][_0x458a('0x43')](_0x29f9b5);})[_0x458a('0x25')](function(_0x1e51d2){_0x4a49e4[_0x458a('0x44')]=_0x1e51d2;return _0x4a49e4;})[_0x458a('0x25')](respondWithFilteredResult(_0x33c5d8,_0x29f9b5))[_0x458a('0x45')](handleError(_0x33c5d8,null));};exports[_0x458a('0x46')]=function(_0x5883ab,_0x296385){var _0x145e3c={'raw':!![],'where':{'id':_0x5883ab['params']['id']}},_0x2b9030={};_0x2b9030[_0x458a('0x32')]=_[_0x458a('0x2f')](db['WhatsappQueueReport'][_0x458a('0x47')]);_0x2b9030[_0x458a('0x30')]=_[_0x458a('0x2f')](_0x5883ab[_0x458a('0x30')]);_0x2b9030[_0x458a('0x31')]=_['intersection'](_0x2b9030['model'],_0x2b9030[_0x458a('0x30')]);_0x145e3c[_0x458a('0x33')]=_[_0x458a('0x34')](_0x2b9030[_0x458a('0x32')],qs['fields'](_0x5883ab[_0x458a('0x30')][_0x458a('0x35')]));_0x145e3c['attributes']=_0x145e3c[_0x458a('0x33')]['length']?_0x145e3c[_0x458a('0x33')]:_0x2b9030[_0x458a('0x32')];if(_0x5883ab[_0x458a('0x30')]['includeAll']){_0x145e3c[_0x458a('0x48')]=[{'all':!![]}];}_0x145e3c=_[_0x458a('0x3e')]({},_0x145e3c,_0x5883ab[_0x458a('0x41')]);return db['WhatsappQueueReport']['find'](_0x145e3c)[_0x458a('0x25')](handleEntityNotFound(_0x296385,null))[_0x458a('0x25')](respondWithResult(_0x296385,null))[_0x458a('0x45')](handleError(_0x296385,null));};exports['create']=function(_0x5e7a64,_0x3a7005){return db[_0x458a('0x2c')][_0x458a('0x49')](_0x5e7a64[_0x458a('0x4a')],{})[_0x458a('0x25')](respondWithResult(_0x3a7005,0xc9))[_0x458a('0x45')](handleError(_0x3a7005,null));};exports[_0x458a('0x4b')]=function(_0x30cdaf,_0xb22232){if(_0x30cdaf[_0x458a('0x4a')]['id']){delete _0x30cdaf[_0x458a('0x4a')]['id'];}return db[_0x458a('0x2c')][_0x458a('0x4c')]({'where':{'id':_0x30cdaf[_0x458a('0x4d')]['id']}})[_0x458a('0x25')](handleEntityNotFound(_0xb22232,null))[_0x458a('0x25')](saveUpdates(_0x30cdaf['body'],null))[_0x458a('0x25')](respondWithResult(_0xb22232,null))[_0x458a('0x45')](handleError(_0xb22232,null));};exports[_0x458a('0x26')]=function(_0x396bb3,_0x44670a){return db['WhatsappQueueReport']['find']({'where':{'id':_0x396bb3['params']['id']}})[_0x458a('0x25')](handleEntityNotFound(_0x44670a,null))['then'](removeEntity(_0x44670a,null))[_0x458a('0x45')](handleError(_0x44670a,null));};exports[_0x458a('0x4e')]=function(_0x2a35a9,_0x649553){return db[_0x458a('0x2c')]['describe']()['then'](respondWithResult(_0x649553,null))[_0x458a('0x45')](handleError(_0x649553,null));};
\ No newline at end of file
+var _0xcf66=['json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','stack','name','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','WhatsappQueueReport','catch','show','params','rawAttributes','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','end'];(function(_0x46c77c,_0x3c4282){var _0x2e66ee=function(_0x31b1db){while(--_0x31b1db){_0x46c77c['push'](_0x46c77c['shift']());}};_0x2e66ee(++_0x3c4282);}(_0xcf66,0x71));var _0x6cf6=function(_0x1f60a5,_0x253671){_0x1f60a5=_0x1f60a5-0x0;var _0x432019=_0xcf66[_0x1f60a5];return _0x432019;};'use strict';var emlformat=require(_0x6cf6('0x0'));var rimraf=require(_0x6cf6('0x1'));var zipdir=require(_0x6cf6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6cf6('0x3'));var moment=require(_0x6cf6('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6cf6('0x5'));var path=require(_0x6cf6('0x6'));var sox=require('sox');var csv=require(_0x6cf6('0x7'));var ejs=require(_0x6cf6('0x8'));var fs=require('fs');var fs_extra=require(_0x6cf6('0x9'));var _=require('lodash');var squel=require(_0x6cf6('0xa'));var crypto=require(_0x6cf6('0xb'));var jsforce=require(_0x6cf6('0xc'));var deskjs=require(_0x6cf6('0xd'));var toCsv=require(_0x6cf6('0x7'));var querystring=require(_0x6cf6('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6cf6('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6cf6('0x10'));var logger=require(_0x6cf6('0x11'))(_0x6cf6('0x12'));var utils=require(_0x6cf6('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3fdfea,_0x13b1ad){_0x13b1ad=_0x13b1ad||0xcc;return function(_0x372d12){if(_0x372d12){return _0x3fdfea[_0x6cf6('0x14')](_0x13b1ad);}return _0x3fdfea[_0x6cf6('0x15')](_0x13b1ad)[_0x6cf6('0x16')]();};}function respondWithResult(_0x57909f,_0x32fe64){_0x32fe64=_0x32fe64||0xc8;return function(_0x494ece){if(_0x494ece){return _0x57909f[_0x6cf6('0x15')](_0x32fe64)[_0x6cf6('0x17')](_0x494ece);}};}function respondWithFilteredResult(_0x4b073f,_0x40e413){return function(_0x1b40f8){if(_0x1b40f8){var _0x2d23ab=typeof _0x40e413[_0x6cf6('0x18')]===_0x6cf6('0x19')&&typeof _0x40e413[_0x6cf6('0x1a')]===_0x6cf6('0x19');var _0x39ec25=_0x1b40f8[_0x6cf6('0x1b')];var _0x2ca2b1=_0x2d23ab?0x0:_0x40e413['offset'];var _0x11d994=_0x2d23ab?_0x1b40f8[_0x6cf6('0x1b')]:_0x40e413[_0x6cf6('0x18')]+_0x40e413['limit'];var _0x18abd9;if(_0x11d994>=_0x39ec25){_0x11d994=_0x39ec25;_0x18abd9=0xc8;}else{_0x18abd9=0xce;}_0x4b073f[_0x6cf6('0x15')](_0x18abd9);return _0x4b073f[_0x6cf6('0x1c')](_0x6cf6('0x1d'),_0x2ca2b1+'-'+_0x11d994+'/'+_0x39ec25)[_0x6cf6('0x17')](_0x1b40f8);}return null;};}function patchUpdates(_0x21e903){return function(_0x123993){try{jsonpatch['apply'](_0x123993,_0x21e903,!![]);}catch(_0x19f2cd){return BPromise[_0x6cf6('0x1e')](_0x19f2cd);}return _0x123993[_0x6cf6('0x1f')]();};}function saveUpdates(_0x380a40,_0x5cba3a){return function(_0x470ea4){if(_0x470ea4){return _0x470ea4[_0x6cf6('0x20')](_0x380a40)[_0x6cf6('0x21')](function(_0x5b2767){return _0x5b2767;});}return null;};}function removeEntity(_0x5b30e0,_0x276225){return function(_0x59f838){if(_0x59f838){return _0x59f838[_0x6cf6('0x22')]()[_0x6cf6('0x21')](function(){_0x5b30e0[_0x6cf6('0x15')](0xcc)[_0x6cf6('0x16')]();});}};}function handleEntityNotFound(_0x3f9871,_0x565fad){return function(_0x1c966e){if(!_0x1c966e){_0x3f9871['sendStatus'](0x194);}return _0x1c966e;};}function handleError(_0x2779b7,_0xc7b489){_0xc7b489=_0xc7b489||0x1f4;return function(_0x3eaa31){logger['error'](_0x3eaa31[_0x6cf6('0x23')]);if(_0x3eaa31[_0x6cf6('0x24')]){delete _0x3eaa31[_0x6cf6('0x24')];}_0x2779b7[_0x6cf6('0x15')](_0xc7b489)['send'](_0x3eaa31);};}exports['index']=function(_0x2afe84,_0x4521af){var _0x57099f={},_0x5869e9={},_0x5ccc8f={'count':0x0,'rows':[]};var _0x2afc06=_['map'](db['WhatsappQueueReport']['rawAttributes'],function(_0x10bde5){return{'name':_0x10bde5[_0x6cf6('0x25')],'type':_0x10bde5[_0x6cf6('0x26')][_0x6cf6('0x27')]};});_0x5869e9[_0x6cf6('0x28')]=_['map'](_0x2afc06,_0x6cf6('0x24'));_0x5869e9[_0x6cf6('0x29')]=_[_0x6cf6('0x2a')](_0x2afe84['query']);_0x5869e9[_0x6cf6('0x2b')]=_[_0x6cf6('0x2c')](_0x5869e9[_0x6cf6('0x28')],_0x5869e9[_0x6cf6('0x29')]);_0x57099f[_0x6cf6('0x2d')]=_[_0x6cf6('0x2c')](_0x5869e9[_0x6cf6('0x28')],qs[_0x6cf6('0x2e')](_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x2e')]));_0x57099f[_0x6cf6('0x2d')]=_0x57099f[_0x6cf6('0x2d')][_0x6cf6('0x2f')]?_0x57099f[_0x6cf6('0x2d')]:_0x5869e9[_0x6cf6('0x28')];if(!_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x30')](_0x6cf6('0x31'))){_0x57099f['limit']=qs[_0x6cf6('0x1a')](_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x1a')]);_0x57099f[_0x6cf6('0x18')]=qs[_0x6cf6('0x18')](_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x18')]);}_0x57099f[_0x6cf6('0x32')]=qs[_0x6cf6('0x33')](_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x33')]);_0x57099f['where']=qs[_0x6cf6('0x2b')](_[_0x6cf6('0x34')](_0x2afe84[_0x6cf6('0x29')],_0x5869e9[_0x6cf6('0x2b')]),_0x2afc06);if(_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x35')]){_0x57099f[_0x6cf6('0x36')]=_[_0x6cf6('0x37')](_0x57099f[_0x6cf6('0x36')],{'$or':_['map'](_0x2afc06,function(_0x1c5eda){if(_0x1c5eda[_0x6cf6('0x26')]!==_0x6cf6('0x38')){var _0x3e906f={};_0x3e906f[_0x1c5eda[_0x6cf6('0x24')]]={'$like':'%'+_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x35')]+'%'};return _0x3e906f;}})});}_0x57099f=_[_0x6cf6('0x37')]({},_0x57099f,_0x2afe84[_0x6cf6('0x39')]);var _0x5ed61f={'where':_0x57099f[_0x6cf6('0x36')]};return db['WhatsappQueueReport'][_0x6cf6('0x1b')](_0x5ed61f)[_0x6cf6('0x21')](function(_0x23d280){_0x5ccc8f[_0x6cf6('0x1b')]=_0x23d280;if(_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x3a')]){_0x57099f[_0x6cf6('0x3b')]=[{'all':!![]}];}return db[_0x6cf6('0x3c')]['findAll'](_0x57099f);})[_0x6cf6('0x21')](function(_0x335dce){_0x5ccc8f['rows']=_0x335dce;return _0x5ccc8f;})[_0x6cf6('0x21')](respondWithFilteredResult(_0x4521af,_0x57099f))[_0x6cf6('0x3d')](handleError(_0x4521af,null));};exports[_0x6cf6('0x3e')]=function(_0x4874c0,_0x10bb9b){var _0x128f7a={'raw':!![],'where':{'id':_0x4874c0[_0x6cf6('0x3f')]['id']}},_0x51d915={};_0x51d915[_0x6cf6('0x28')]=_[_0x6cf6('0x2a')](db[_0x6cf6('0x3c')][_0x6cf6('0x40')]);_0x51d915[_0x6cf6('0x29')]=_[_0x6cf6('0x2a')](_0x4874c0['query']);_0x51d915[_0x6cf6('0x2b')]=_['intersection'](_0x51d915[_0x6cf6('0x28')],_0x51d915[_0x6cf6('0x29')]);_0x128f7a['attributes']=_[_0x6cf6('0x2c')](_0x51d915[_0x6cf6('0x28')],qs[_0x6cf6('0x2e')](_0x4874c0[_0x6cf6('0x29')][_0x6cf6('0x2e')]));_0x128f7a['attributes']=_0x128f7a[_0x6cf6('0x2d')][_0x6cf6('0x2f')]?_0x128f7a[_0x6cf6('0x2d')]:_0x51d915['model'];if(_0x4874c0[_0x6cf6('0x29')][_0x6cf6('0x3a')]){_0x128f7a[_0x6cf6('0x3b')]=[{'all':!![]}];}_0x128f7a=_['merge']({},_0x128f7a,_0x4874c0[_0x6cf6('0x39')]);return db['WhatsappQueueReport']['find'](_0x128f7a)[_0x6cf6('0x21')](handleEntityNotFound(_0x10bb9b,null))[_0x6cf6('0x21')](respondWithResult(_0x10bb9b,null))[_0x6cf6('0x3d')](handleError(_0x10bb9b,null));};exports[_0x6cf6('0x41')]=function(_0xb8788a,_0x311745){return db[_0x6cf6('0x3c')][_0x6cf6('0x41')](_0xb8788a[_0x6cf6('0x42')],{})[_0x6cf6('0x21')](respondWithResult(_0x311745,0xc9))[_0x6cf6('0x3d')](handleError(_0x311745,null));};exports[_0x6cf6('0x20')]=function(_0x3786d1,_0x4c8ada){if(_0x3786d1[_0x6cf6('0x42')]['id']){delete _0x3786d1[_0x6cf6('0x42')]['id'];}return db['WhatsappQueueReport']['find']({'where':{'id':_0x3786d1[_0x6cf6('0x3f')]['id']}})[_0x6cf6('0x21')](handleEntityNotFound(_0x4c8ada,null))[_0x6cf6('0x21')](saveUpdates(_0x3786d1[_0x6cf6('0x42')],null))[_0x6cf6('0x21')](respondWithResult(_0x4c8ada,null))[_0x6cf6('0x3d')](handleError(_0x4c8ada,null));};exports['destroy']=function(_0x115b9b,_0x262c23){return db[_0x6cf6('0x3c')]['find']({'where':{'id':_0x115b9b['params']['id']}})[_0x6cf6('0x21')](handleEntityNotFound(_0x262c23,null))[_0x6cf6('0x21')](removeEntity(_0x262c23,null))[_0x6cf6('0x3d')](handleError(_0x262c23,null));};exports[_0x6cf6('0x43')]=function(_0x2dbd71,_0x1fb6f1){return db[_0x6cf6('0x3c')][_0x6cf6('0x43')]()[_0x6cf6('0x21')](respondWithResult(_0x1fb6f1,null))[_0x6cf6('0x3d')](handleError(_0x1fb6f1,null));};
\ No newline at end of file
index ed06383..92283e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41a5=['util','../../config/logger','api','moment','bluebird','request-promise','path','./whatsappQueueReport.attributes','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x41a5,0xe9));var _0x541a=function(_0x400a49,_0x1cf98a){_0x400a49=_0x400a49-0x0;var _0x302ce4=_0x41a5[_0x400a49];return _0x302ce4;};'use strict';var _=require(_0x541a('0x0'));var util=require(_0x541a('0x1'));var logger=require(_0x541a('0x2'))(_0x541a('0x3'));var moment=require(_0x541a('0x4'));var BPromise=require(_0x541a('0x5'));var rp=require(_0x541a('0x6'));var fs=require('fs');var path=require(_0x541a('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x541a('0x8'));module['exports']=function(_0x1a5ba4,_0x578931){return _0x1a5ba4[_0x541a('0x9')](_0x541a('0xa'),attributes,{'tableName':_0x541a('0xb'),'paranoid':![],'indexes':[{'name':_0x541a('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1423=['./whatsappQueueReport.attributes','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x1423,0x1e4));var _0x3142=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x1423[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x3142('0x0'));var util=require(_0x3142('0x1'));var logger=require('../../config/logger')(_0x3142('0x2'));var moment=require(_0x3142('0x3'));var BPromise=require(_0x3142('0x4'));var rp=require(_0x3142('0x5'));var fs=require('fs');var path=require(_0x3142('0x6'));var rimraf=require(_0x3142('0x7'));var config=require('../../config/environment');var attributes=require(_0x3142('0x8'));module['exports']=function(_0x2118ec,_0xc4a9c8){return _0x2118ec['define'](_0x3142('0x9'),attributes,{'tableName':_0x3142('0xa'),'paranoid':![],'indexes':[{'name':_0x3142('0xb'),'fields':[_0x3142('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 738fe06..bc8154e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29e8=['WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','WhatsappQueueReport','create','body','CreateWhatsappQueueReport','UpdateWhatsappQueueReport','update','options','where','attributes','then','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','http','info'];(function(_0x1c8b28,_0x18ef15){var _0x5be512=function(_0x20c7cb){while(--_0x20c7cb){_0x1c8b28['push'](_0x1c8b28['shift']());}};_0x5be512(++_0x18ef15);}(_0x29e8,0x15d));var _0x829e=function(_0x20ebe1,_0x46332f){_0x20ebe1=_0x20ebe1-0x0;var _0x28e139=_0x29e8[_0x20ebe1];return _0x28e139;};'use strict';var _=require(_0x829e('0x0'));var util=require('util');var moment=require(_0x829e('0x1'));var BPromise=require(_0x829e('0x2'));var rs=require(_0x829e('0x3'));var fs=require('fs');var Redis=require(_0x829e('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x829e('0x5'))(_0x829e('0x6'));var config=require('../../config/environment');var jayson=require(_0x829e('0x7'));var client=jayson[_0x829e('0x8')][_0x829e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1e4036,_0x52e6da,_0x4caba4){return new BPromise(function(_0x516db0,_0x427b65){return client['request'](_0x1e4036,_0x4caba4)['then'](function(_0x319b66){logger[_0x829e('0xa')](_0x829e('0xb'),_0x52e6da,_0x829e('0xc'));logger[_0x829e('0xd')](_0x829e('0xe'),_0x52e6da,_0x829e('0xc'),JSON[_0x829e('0xf')](_0x319b66));if(_0x319b66[_0x829e('0x10')]){if(_0x319b66['error'][_0x829e('0x11')]===0x1f4){logger[_0x829e('0x10')](_0x829e('0xb'),_0x52e6da,_0x319b66['error'][_0x829e('0x12')]);return _0x427b65(_0x319b66[_0x829e('0x10')][_0x829e('0x12')]);}logger[_0x829e('0x10')]('WhatsappQueueReport,\x20%s,\x20%s',_0x52e6da,_0x319b66[_0x829e('0x10')][_0x829e('0x12')]);return _0x516db0(_0x319b66[_0x829e('0x10')]['message']);}else{logger['info'](_0x829e('0xb'),_0x52e6da,_0x829e('0xc'));_0x516db0(_0x319b66['result']['message']);}})[_0x829e('0x13')](function(_0x45fa7f){logger[_0x829e('0x10')](_0x829e('0xb'),_0x52e6da,_0x45fa7f);_0x427b65(_0x45fa7f);});});}exports['CreateWhatsappQueueReport']=function(_0xb44374){var _0x423707=this;return new Promise(function(_0x3f2e45,_0x1b8d2d){return db[_0x829e('0x14')][_0x829e('0x15')](_0xb44374[_0x829e('0x16')],{'raw':_0xb44374['options']?_0xb44374['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x554d7e){logger['info']('CreateWhatsappQueueReport',_0xb44374);logger['debug'](_0x829e('0x17'),_0xb44374,JSON['stringify'](_0x554d7e));_0x3f2e45(_0x554d7e);})[_0x829e('0x13')](function(_0x275441){logger[_0x829e('0x10')]('CreateWhatsappQueueReport',_0x275441[_0x829e('0x12')],_0xb44374);_0x1b8d2d(_0x423707[_0x829e('0x10')](0x1f4,_0x275441['message']));});});};exports[_0x829e('0x18')]=function(_0x594f94){var _0x3d1870=this;return new Promise(function(_0x197679,_0x265ce3){return db[_0x829e('0x14')][_0x829e('0x19')](_0x594f94['body'],{'raw':_0x594f94[_0x829e('0x1a')]?_0x594f94['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x594f94[_0x829e('0x1a')]?_0x594f94[_0x829e('0x1a')][_0x829e('0x1b')]||null:null,'attributes':_0x594f94[_0x829e('0x1a')]?_0x594f94[_0x829e('0x1a')][_0x829e('0x1c')]||null:null,'limit':_0x594f94[_0x829e('0x1a')]?_0x594f94[_0x829e('0x1a')]['limit']||null:null})[_0x829e('0x1d')](function(_0x30739c){logger[_0x829e('0xa')](_0x829e('0x18'),_0x594f94);logger[_0x829e('0xd')](_0x829e('0x18'),_0x594f94,JSON['stringify'](_0x30739c));_0x197679(_0x30739c);})[_0x829e('0x13')](function(_0x20fa77){logger[_0x829e('0x10')](_0x829e('0x18'),_0x20fa77[_0x829e('0x12')],_0x594f94);_0x265ce3(_0x3d1870['error'](0x1f4,_0x20fa77['message']));});});};
\ No newline at end of file
+var _0xf54a=['bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','WhatsappQueueReport,\x20%s,\x20%s','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','body','options','raw','update','where','limit','lodash','util','moment'];(function(_0x383356,_0x33d2f5){var _0x32ee5a=function(_0x2741db){while(--_0x2741db){_0x383356['push'](_0x383356['shift']());}};_0x32ee5a(++_0x33d2f5);}(_0xf54a,0xfd));var _0xaf54=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf54a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xaf54('0x0'));var util=require(_0xaf54('0x1'));var moment=require(_0xaf54('0x2'));var BPromise=require(_0xaf54('0x3'));var rs=require(_0xaf54('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xaf54('0x5'));var logger=require(_0xaf54('0x6'))(_0xaf54('0x7'));var config=require(_0xaf54('0x8'));var jayson=require(_0xaf54('0x9'));var client=jayson[_0xaf54('0xa')][_0xaf54('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3bf62a,_0x22522c,_0x1ede80){return new BPromise(function(_0x26fbaa,_0x2778ee){return client[_0xaf54('0xc')](_0x3bf62a,_0x1ede80)[_0xaf54('0xd')](function(_0x250b66){logger[_0xaf54('0xe')]('WhatsappQueueReport,\x20%s,\x20%s',_0x22522c,_0xaf54('0xf'));logger[_0xaf54('0x10')](_0xaf54('0x11'),_0x22522c,_0xaf54('0xf'),JSON[_0xaf54('0x12')](_0x250b66));if(_0x250b66[_0xaf54('0x13')]){if(_0x250b66[_0xaf54('0x13')]['code']===0x1f4){logger[_0xaf54('0x13')](_0xaf54('0x14'),_0x22522c,_0x250b66[_0xaf54('0x13')][_0xaf54('0x15')]);return _0x2778ee(_0x250b66[_0xaf54('0x13')][_0xaf54('0x15')]);}logger['error']('WhatsappQueueReport,\x20%s,\x20%s',_0x22522c,_0x250b66[_0xaf54('0x13')]['message']);return _0x26fbaa(_0x250b66[_0xaf54('0x13')][_0xaf54('0x15')]);}else{logger[_0xaf54('0xe')](_0xaf54('0x14'),_0x22522c,'request\x20sent');_0x26fbaa(_0x250b66[_0xaf54('0x16')][_0xaf54('0x15')]);}})[_0xaf54('0x17')](function(_0x4ec709){logger[_0xaf54('0x13')](_0xaf54('0x14'),_0x22522c,_0x4ec709);_0x2778ee(_0x4ec709);});});}exports[_0xaf54('0x18')]=function(_0x1794b8){var _0x2ff520=this;return new Promise(function(_0xcd1488,_0x1fb38c){return db[_0xaf54('0x19')]['create'](_0x1794b8[_0xaf54('0x1a')],{'raw':_0x1794b8[_0xaf54('0x1b')]?_0x1794b8['options'][_0xaf54('0x1c')]===undefined?!![]:![]:!![]})[_0xaf54('0xd')](function(_0x23b798){logger[_0xaf54('0xe')](_0xaf54('0x18'),_0x1794b8);logger[_0xaf54('0x10')](_0xaf54('0x18'),_0x1794b8,JSON[_0xaf54('0x12')](_0x23b798));_0xcd1488(_0x23b798);})[_0xaf54('0x17')](function(_0xe97230){logger['error'](_0xaf54('0x18'),_0xe97230['message'],_0x1794b8);_0x1fb38c(_0x2ff520['error'](0x1f4,_0xe97230[_0xaf54('0x15')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x40ebaa){var _0x3fbfec=this;return new Promise(function(_0x4d5ff5,_0x38909c){return db[_0xaf54('0x19')][_0xaf54('0x1d')](_0x40ebaa[_0xaf54('0x1a')],{'raw':_0x40ebaa[_0xaf54('0x1b')]?_0x40ebaa[_0xaf54('0x1b')][_0xaf54('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x40ebaa[_0xaf54('0x1b')]?_0x40ebaa[_0xaf54('0x1b')][_0xaf54('0x1e')]||null:null,'attributes':_0x40ebaa[_0xaf54('0x1b')]?_0x40ebaa[_0xaf54('0x1b')]['attributes']||null:null,'limit':_0x40ebaa[_0xaf54('0x1b')]?_0x40ebaa[_0xaf54('0x1b')][_0xaf54('0x1f')]||null:null})[_0xaf54('0xd')](function(_0x31b85d){logger[_0xaf54('0xe')]('UpdateWhatsappQueueReport',_0x40ebaa);logger['debug']('UpdateWhatsappQueueReport',_0x40ebaa,JSON['stringify'](_0x31b85d));_0x4d5ff5(_0x31b85d);})[_0xaf54('0x17')](function(_0x5e7c3b){logger['error']('UpdateWhatsappQueueReport',_0x5e7c3b[_0xaf54('0x15')],_0x40ebaa);_0x38909c(_0x3fbfec[_0xaf54('0x13')](0x1f4,_0x5e7c3b[_0xaf54('0x15')]));});});};
\ No newline at end of file
index 3c6d0cf..30cae63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd44c=['destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','./whatsappTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','update','delete'];(function(_0x11192a,_0x478cf4){var _0x4f99a4=function(_0x58dc74){while(--_0x58dc74){_0x11192a['push'](_0x11192a['shift']());}};_0x4f99a4(++_0x478cf4);}(_0xd44c,0x106));var _0xcd44=function(_0x1b1f88,_0x3fe1cb){_0x1b1f88=_0x1b1f88-0x0;var _0x5045b9=_0xd44c[_0x1b1f88];return _0x5045b9;};'use strict';var multer=require(_0xcd44('0x0'));var util=require(_0xcd44('0x1'));var path=require(_0xcd44('0x2'));var timeout=require(_0xcd44('0x3'));var express=require('express');var router=express[_0xcd44('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xcd44('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xcd44('0x6'));var controller=require(_0xcd44('0x7'));router['get']('/',auth[_0xcd44('0x8')](),controller[_0xcd44('0x9')]);router[_0xcd44('0xa')](_0xcd44('0xb'),auth[_0xcd44('0x8')](),controller[_0xcd44('0xc')]);router[_0xcd44('0xa')](_0xcd44('0xd'),auth[_0xcd44('0x8')](),controller[_0xcd44('0xe')]);router[_0xcd44('0xf')]('/',auth[_0xcd44('0x8')](),controller['create']);router['put'](_0xcd44('0xd'),auth['isAuthenticated'](),controller[_0xcd44('0x10')]);router[_0xcd44('0x11')](_0xcd44('0xd'),auth['isAuthenticated'](),controller[_0xcd44('0x12')]);module[_0xcd44('0x13')]=router;
\ No newline at end of file
+var _0xcf0c=['delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','isAuthenticated','get','/describe','/:id','show','create','put','update'];(function(_0x257bc0,_0x202aca){var _0x574084=function(_0x4632d1){while(--_0x4632d1){_0x257bc0['push'](_0x257bc0['shift']());}};_0x574084(++_0x202aca);}(_0xcf0c,0x1ba));var _0xccf0=function(_0x2a5099,_0x329e92){_0x2a5099=_0x2a5099-0x0;var _0x2802f1=_0xcf0c[_0x2a5099];return _0x2802f1;};'use strict';var multer=require(_0xccf0('0x0'));var util=require(_0xccf0('0x1'));var path=require(_0xccf0('0x2'));var timeout=require(_0xccf0('0x3'));var express=require(_0xccf0('0x4'));var router=express['Router']();var fs_extra=require(_0xccf0('0x5'));var auth=require(_0xccf0('0x6'));var interaction=require(_0xccf0('0x7'));var config=require(_0xccf0('0x8'));var controller=require(_0xccf0('0x9'));router['get']('/',auth[_0xccf0('0xa')](),controller['index']);router[_0xccf0('0xb')](_0xccf0('0xc'),auth[_0xccf0('0xa')](),controller['describe']);router[_0xccf0('0xb')](_0xccf0('0xd'),auth[_0xccf0('0xa')](),controller[_0xccf0('0xe')]);router['post']('/',auth[_0xccf0('0xa')](),controller[_0xccf0('0xf')]);router[_0xccf0('0x10')]('/:id',auth[_0xccf0('0xa')](),controller[_0xccf0('0x11')]);router[_0xccf0('0x12')](_0xccf0('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xccf0('0x13')]=router;
\ No newline at end of file
index fa4a8f2..fb518f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8a0=['agent','STRING','ENUM'];(function(_0x27be9a,_0x592f94){var _0x563f8a=function(_0x5be946){while(--_0x5be946){_0x27be9a['push'](_0x27be9a['shift']());}};_0x563f8a(++_0x592f94);}(_0xb8a0,0x1d5));var _0x0b8a=function(_0x31cd4c,_0x2eca23){_0x31cd4c=_0x31cd4c-0x0;var _0x434419=_0xb8a0[_0x31cd4c];return _0x434419;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x0b8a('0x0')],'allowNull':![]},'type':{'type':Sequelize[_0x0b8a('0x1')]('account',_0x0b8a('0x2'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0x2cae=['account','agent','DATE','sequelize','exports'];(function(_0x57db49,_0x288094){var _0xd0636f=function(_0x227787){while(--_0x227787){_0x57db49['push'](_0x57db49['shift']());}};_0xd0636f(++_0x288094);}(_0x2cae,0x16b));var _0xe2ca=function(_0x52e0ee,_0x52f7c1){_0x52e0ee=_0x52e0ee-0x0;var _0x32534c=_0x2cae[_0x52e0ee];return _0x32534c;};'use strict';var Sequelize=require(_0xe2ca('0x0'));module[_0xe2ca('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe2ca('0x2'),_0xe2ca('0x3'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xe2ca('0x4')]}};
\ No newline at end of file
index 1e8a78f..46df106 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x340e=['hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','WhatsappTransferReport','includeAll','findAll','show','params','include','find','catch','create','body','describe','eml-format','zip-dir','moment','bluebird','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','keys','filters','intersection','query','attributes','model','fields','length'];(function(_0x793c7c,_0x1ae54a){var _0x356037=function(_0x4fcf9f){while(--_0x4fcf9f){_0x793c7c['push'](_0x793c7c['shift']());}};_0x356037(++_0x1ae54a);}(_0x340e,0x1dc));var _0xe340=function(_0x205946,_0x23a131){_0x205946=_0x205946-0x0;var _0x197059=_0x340e[_0x205946];return _0x197059;};'use strict';var emlformat=require(_0xe340('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe340('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xe340('0x2'));var BPromise=require(_0xe340('0x3'));var Mustache=require('mustache');var util=require(_0xe340('0x4'));var path=require(_0xe340('0x5'));var sox=require(_0xe340('0x6'));var csv=require('to-csv');var ejs=require(_0xe340('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe340('0x8'));var squel=require(_0xe340('0x9'));var crypto=require(_0xe340('0xa'));var jsforce=require(_0xe340('0xb'));var deskjs=require(_0xe340('0xc'));var toCsv=require('to-csv');var querystring=require(_0xe340('0xd'));var Papa=require(_0xe340('0xe'));var Redis=require(_0xe340('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xe340('0x10'));var as=require(_0xe340('0x11'));var hardwareService=require(_0xe340('0x12'));var logger=require(_0xe340('0x13'))('api');var utils=require(_0xe340('0x14'));var config=require(_0xe340('0x15'));var licenseUtil=require(_0xe340('0x16'));var db=require(_0xe340('0x17'))['db'];function respondWithStatusCode(_0x181974,_0x463805){_0x463805=_0x463805||0xcc;return function(_0x326c9b){if(_0x326c9b){return _0x181974['sendStatus'](_0x463805);}return _0x181974[_0xe340('0x18')](_0x463805)[_0xe340('0x19')]();};}function respondWithResult(_0x325018,_0x1e1ad7){_0x1e1ad7=_0x1e1ad7||0xc8;return function(_0x14f0a5){if(_0x14f0a5){return _0x325018['status'](_0x1e1ad7)[_0xe340('0x1a')](_0x14f0a5);}};}function respondWithFilteredResult(_0xd401cd,_0x5f12d0){return function(_0xc2784a){if(_0xc2784a){var _0x335ab9=typeof _0x5f12d0[_0xe340('0x1b')]===_0xe340('0x1c')&&typeof _0x5f12d0[_0xe340('0x1d')]===_0xe340('0x1c');var _0x1d749b=_0xc2784a[_0xe340('0x1e')];var _0x257798=_0x335ab9?0x0:_0x5f12d0[_0xe340('0x1b')];var _0x5f16ce=_0x335ab9?_0xc2784a[_0xe340('0x1e')]:_0x5f12d0[_0xe340('0x1b')]+_0x5f12d0[_0xe340('0x1d')];var _0x1281b2;if(_0x5f16ce>=_0x1d749b){_0x5f16ce=_0x1d749b;_0x1281b2=0xc8;}else{_0x1281b2=0xce;}_0xd401cd[_0xe340('0x18')](_0x1281b2);return _0xd401cd['set'](_0xe340('0x1f'),_0x257798+'-'+_0x5f16ce+'/'+_0x1d749b)[_0xe340('0x1a')](_0xc2784a);}return null;};}function patchUpdates(_0xba68f5){return function(_0x32e4c7){try{jsonpatch[_0xe340('0x20')](_0x32e4c7,_0xba68f5,!![]);}catch(_0x557dcf){return BPromise[_0xe340('0x21')](_0x557dcf);}return _0x32e4c7[_0xe340('0x22')]();};}function saveUpdates(_0x1eb647,_0x2b5e98){return function(_0x39ad71){if(_0x39ad71){return _0x39ad71[_0xe340('0x23')](_0x1eb647)[_0xe340('0x24')](function(_0x506f89){return _0x506f89;});}return null;};}function removeEntity(_0x189c81,_0x41815c){return function(_0x361d96){if(_0x361d96){return _0x361d96[_0xe340('0x25')]()['then'](function(){_0x189c81[_0xe340('0x18')](0xcc)[_0xe340('0x19')]();});}};}function handleEntityNotFound(_0x487b36,_0x1e160f){return function(_0x3fe91e){if(!_0x3fe91e){_0x487b36[_0xe340('0x26')](0x194);}return _0x3fe91e;};}function handleError(_0x332b0e,_0x38c0a8){_0x38c0a8=_0x38c0a8||0x1f4;return function(_0x3792db){logger['error'](_0x3792db[_0xe340('0x27')]);if(_0x3792db['name']){delete _0x3792db[_0xe340('0x28')];}_0x332b0e[_0xe340('0x18')](_0x38c0a8)[_0xe340('0x29')](_0x3792db);};}exports[_0xe340('0x2a')]=function(_0x131584,_0x376446){var _0x4ccbf7={},_0x34342c={},_0x2998c5={'count':0x0,'rows':[]};var _0x1f12cc=_[_0xe340('0x2b')](db['WhatsappTransferReport'][_0xe340('0x2c')],function(_0x64f389){return{'name':_0x64f389[_0xe340('0x2d')],'type':_0x64f389[_0xe340('0x2e')][_0xe340('0x2f')]};});_0x34342c['model']=_[_0xe340('0x2b')](_0x1f12cc,'name');_0x34342c['query']=_[_0xe340('0x30')](_0x131584['query']);_0x34342c[_0xe340('0x31')]=_[_0xe340('0x32')](_0x34342c['model'],_0x34342c[_0xe340('0x33')]);_0x4ccbf7[_0xe340('0x34')]=_[_0xe340('0x32')](_0x34342c[_0xe340('0x35')],qs[_0xe340('0x36')](_0x131584[_0xe340('0x33')]['fields']));_0x4ccbf7[_0xe340('0x34')]=_0x4ccbf7['attributes'][_0xe340('0x37')]?_0x4ccbf7[_0xe340('0x34')]:_0x34342c[_0xe340('0x35')];if(!_0x131584[_0xe340('0x33')][_0xe340('0x38')](_0xe340('0x39'))){_0x4ccbf7[_0xe340('0x1d')]=qs[_0xe340('0x1d')](_0x131584[_0xe340('0x33')][_0xe340('0x1d')]);_0x4ccbf7[_0xe340('0x1b')]=qs[_0xe340('0x1b')](_0x131584[_0xe340('0x33')][_0xe340('0x1b')]);}_0x4ccbf7[_0xe340('0x3a')]=qs[_0xe340('0x3b')](_0x131584[_0xe340('0x33')][_0xe340('0x3b')]);_0x4ccbf7['where']=qs[_0xe340('0x31')](_[_0xe340('0x3c')](_0x131584[_0xe340('0x33')],_0x34342c['filters']),_0x1f12cc);if(_0x131584[_0xe340('0x33')][_0xe340('0x3d')]){_0x4ccbf7[_0xe340('0x3e')]=_[_0xe340('0x3f')](_0x4ccbf7[_0xe340('0x3e')],{'$or':_['map'](_0x1f12cc,function(_0x500672){if(_0x500672[_0xe340('0x2e')]!=='VIRTUAL'){var _0x5dfe7a={};_0x5dfe7a[_0x500672[_0xe340('0x28')]]={'$like':'%'+_0x131584['query'][_0xe340('0x3d')]+'%'};return _0x5dfe7a;}})});}_0x4ccbf7=_[_0xe340('0x3f')]({},_0x4ccbf7,_0x131584[_0xe340('0x40')]);var _0x30a0ec={'where':_0x4ccbf7[_0xe340('0x3e')]};return db[_0xe340('0x41')]['count'](_0x30a0ec)[_0xe340('0x24')](function(_0x51d1c7){_0x2998c5[_0xe340('0x1e')]=_0x51d1c7;if(_0x131584[_0xe340('0x33')][_0xe340('0x42')]){_0x4ccbf7['include']=[{'all':!![]}];}return db['WhatsappTransferReport'][_0xe340('0x43')](_0x4ccbf7);})['then'](function(_0x28aa94){_0x2998c5['rows']=_0x28aa94;return _0x2998c5;})[_0xe340('0x24')](respondWithFilteredResult(_0x376446,_0x4ccbf7))['catch'](handleError(_0x376446,null));};exports[_0xe340('0x44')]=function(_0x26af6c,_0x6a1de){var _0x48b536={'raw':!![],'where':{'id':_0x26af6c[_0xe340('0x45')]['id']}},_0x3866ec={};_0x3866ec[_0xe340('0x35')]=_['keys'](db[_0xe340('0x41')][_0xe340('0x2c')]);_0x3866ec[_0xe340('0x33')]=_['keys'](_0x26af6c['query']);_0x3866ec[_0xe340('0x31')]=_[_0xe340('0x32')](_0x3866ec[_0xe340('0x35')],_0x3866ec['query']);_0x48b536['attributes']=_[_0xe340('0x32')](_0x3866ec[_0xe340('0x35')],qs[_0xe340('0x36')](_0x26af6c[_0xe340('0x33')]['fields']));_0x48b536[_0xe340('0x34')]=_0x48b536[_0xe340('0x34')][_0xe340('0x37')]?_0x48b536[_0xe340('0x34')]:_0x3866ec[_0xe340('0x35')];if(_0x26af6c['query'][_0xe340('0x42')]){_0x48b536[_0xe340('0x46')]=[{'all':!![]}];}_0x48b536=_['merge']({},_0x48b536,_0x26af6c[_0xe340('0x40')]);return db['WhatsappTransferReport'][_0xe340('0x47')](_0x48b536)[_0xe340('0x24')](handleEntityNotFound(_0x6a1de,null))[_0xe340('0x24')](respondWithResult(_0x6a1de,null))[_0xe340('0x48')](handleError(_0x6a1de,null));};exports[_0xe340('0x49')]=function(_0x4c9b44,_0x51c2b3){return db[_0xe340('0x41')]['create'](_0x4c9b44[_0xe340('0x4a')],{})['then'](respondWithResult(_0x51c2b3,0xc9))[_0xe340('0x48')](handleError(_0x51c2b3,null));};exports['update']=function(_0x1b9b92,_0x4426bc){if(_0x1b9b92['body']['id']){delete _0x1b9b92['body']['id'];}return db['WhatsappTransferReport'][_0xe340('0x47')]({'where':{'id':_0x1b9b92[_0xe340('0x45')]['id']}})[_0xe340('0x24')](handleEntityNotFound(_0x4426bc,null))[_0xe340('0x24')](saveUpdates(_0x1b9b92[_0xe340('0x4a')],null))[_0xe340('0x24')](respondWithResult(_0x4426bc,null))['catch'](handleError(_0x4426bc,null));};exports[_0xe340('0x25')]=function(_0x163f96,_0x5cd56d){return db['WhatsappTransferReport']['find']({'where':{'id':_0x163f96['params']['id']}})['then'](handleEntityNotFound(_0x5cd56d,null))[_0xe340('0x24')](removeEntity(_0x5cd56d,null))[_0xe340('0x48')](handleError(_0x5cd56d,null));};exports[_0xe340('0x4b')]=function(_0x41296a,_0x21b9b7){return db[_0xe340('0x41')][_0xe340('0x4b')]()[_0xe340('0x24')](respondWithResult(_0x21b9b7,null))[_0xe340('0x48')](handleError(_0x21b9b7,null));};
\ No newline at end of file
+var _0x6be2=['includeAll','include','findAll','show','rawAttributes','find','catch','create','body','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','Content-Range','save','update','then','destroy','error','name','send','index','map','WhatsappTransferReport','key','keys','query','filters','intersection','model','attributes','fields','length','nolimit','limit','order','sort','where','pick','merge','type','VIRTUAL','filter','options'];(function(_0x3649d3,_0x283e04){var _0x44245a=function(_0x569c5a){while(--_0x569c5a){_0x3649d3['push'](_0x3649d3['shift']());}};_0x44245a(++_0x283e04);}(_0x6be2,0xa1));var _0x26be=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6be2[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x26be('0x0'));var zipdir=require(_0x26be('0x1'));var jsonpatch=require(_0x26be('0x2'));var rp=require(_0x26be('0x3'));var moment=require('moment');var BPromise=require(_0x26be('0x4'));var Mustache=require('mustache');var util=require(_0x26be('0x5'));var path=require(_0x26be('0x6'));var sox=require(_0x26be('0x7'));var csv=require(_0x26be('0x8'));var ejs=require(_0x26be('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x26be('0xa'));var squel=require(_0x26be('0xb'));var crypto=require(_0x26be('0xc'));var jsforce=require(_0x26be('0xd'));var deskjs=require(_0x26be('0xe'));var toCsv=require('to-csv');var querystring=require(_0x26be('0xf'));var Papa=require(_0x26be('0x10'));var Redis=require(_0x26be('0x11'));var authService=require(_0x26be('0x12'));var qs=require(_0x26be('0x13'));var as=require(_0x26be('0x14'));var hardwareService=require(_0x26be('0x15'));var logger=require(_0x26be('0x16'))(_0x26be('0x17'));var utils=require('../../config/utils');var config=require(_0x26be('0x18'));var licenseUtil=require(_0x26be('0x19'));var db=require(_0x26be('0x1a'))['db'];function respondWithStatusCode(_0x2d39d4,_0x4997f9){_0x4997f9=_0x4997f9||0xcc;return function(_0x5b4e08){if(_0x5b4e08){return _0x2d39d4[_0x26be('0x1b')](_0x4997f9);}return _0x2d39d4['status'](_0x4997f9)[_0x26be('0x1c')]();};}function respondWithResult(_0x7b7ef9,_0x372ed8){_0x372ed8=_0x372ed8||0xc8;return function(_0x2d612a){if(_0x2d612a){return _0x7b7ef9['status'](_0x372ed8)[_0x26be('0x1d')](_0x2d612a);}};}function respondWithFilteredResult(_0x19b556,_0x224376){return function(_0x384a7e){if(_0x384a7e){var _0x355105=typeof _0x224376[_0x26be('0x1e')]==='undefined'&&typeof _0x224376['limit']===_0x26be('0x1f');var _0x4ada5d=_0x384a7e[_0x26be('0x20')];var _0xda3098=_0x355105?0x0:_0x224376['offset'];var _0xce5f4a=_0x355105?_0x384a7e['count']:_0x224376[_0x26be('0x1e')]+_0x224376['limit'];var _0x582f2d;if(_0xce5f4a>=_0x4ada5d){_0xce5f4a=_0x4ada5d;_0x582f2d=0xc8;}else{_0x582f2d=0xce;}_0x19b556['status'](_0x582f2d);return _0x19b556['set'](_0x26be('0x21'),_0xda3098+'-'+_0xce5f4a+'/'+_0x4ada5d)[_0x26be('0x1d')](_0x384a7e);}return null;};}function patchUpdates(_0x56d87a){return function(_0x1ded47){try{jsonpatch['apply'](_0x1ded47,_0x56d87a,!![]);}catch(_0x440d33){return BPromise['reject'](_0x440d33);}return _0x1ded47[_0x26be('0x22')]();};}function saveUpdates(_0x87d9ab,_0x1a9d4a){return function(_0x2b1c55){if(_0x2b1c55){return _0x2b1c55[_0x26be('0x23')](_0x87d9ab)[_0x26be('0x24')](function(_0x426ee4){return _0x426ee4;});}return null;};}function removeEntity(_0x4612c6,_0xaa6561){return function(_0x1173ab){if(_0x1173ab){return _0x1173ab[_0x26be('0x25')]()[_0x26be('0x24')](function(){_0x4612c6['status'](0xcc)[_0x26be('0x1c')]();});}};}function handleEntityNotFound(_0x50f75c,_0x25a178){return function(_0x3880aa){if(!_0x3880aa){_0x50f75c['sendStatus'](0x194);}return _0x3880aa;};}function handleError(_0x51a16c,_0x468bd8){_0x468bd8=_0x468bd8||0x1f4;return function(_0x3609b3){logger[_0x26be('0x26')](_0x3609b3['stack']);if(_0x3609b3[_0x26be('0x27')]){delete _0x3609b3[_0x26be('0x27')];}_0x51a16c['status'](_0x468bd8)[_0x26be('0x28')](_0x3609b3);};}exports[_0x26be('0x29')]=function(_0x2e7b98,_0x149f1b){var _0x2f1e49={},_0x3e3386={},_0x562848={'count':0x0,'rows':[]};var _0x46ab71=_[_0x26be('0x2a')](db[_0x26be('0x2b')]['rawAttributes'],function(_0x3d37ac){return{'name':_0x3d37ac['fieldName'],'type':_0x3d37ac['type'][_0x26be('0x2c')]};});_0x3e3386['model']=_[_0x26be('0x2a')](_0x46ab71,_0x26be('0x27'));_0x3e3386['query']=_[_0x26be('0x2d')](_0x2e7b98[_0x26be('0x2e')]);_0x3e3386[_0x26be('0x2f')]=_[_0x26be('0x30')](_0x3e3386[_0x26be('0x31')],_0x3e3386[_0x26be('0x2e')]);_0x2f1e49[_0x26be('0x32')]=_[_0x26be('0x30')](_0x3e3386[_0x26be('0x31')],qs[_0x26be('0x33')](_0x2e7b98[_0x26be('0x2e')][_0x26be('0x33')]));_0x2f1e49[_0x26be('0x32')]=_0x2f1e49[_0x26be('0x32')][_0x26be('0x34')]?_0x2f1e49[_0x26be('0x32')]:_0x3e3386[_0x26be('0x31')];if(!_0x2e7b98[_0x26be('0x2e')]['hasOwnProperty'](_0x26be('0x35'))){_0x2f1e49['limit']=qs[_0x26be('0x36')](_0x2e7b98[_0x26be('0x2e')]['limit']);_0x2f1e49[_0x26be('0x1e')]=qs[_0x26be('0x1e')](_0x2e7b98[_0x26be('0x2e')][_0x26be('0x1e')]);}_0x2f1e49[_0x26be('0x37')]=qs[_0x26be('0x38')](_0x2e7b98[_0x26be('0x2e')][_0x26be('0x38')]);_0x2f1e49[_0x26be('0x39')]=qs[_0x26be('0x2f')](_[_0x26be('0x3a')](_0x2e7b98[_0x26be('0x2e')],_0x3e3386[_0x26be('0x2f')]),_0x46ab71);if(_0x2e7b98[_0x26be('0x2e')]['filter']){_0x2f1e49[_0x26be('0x39')]=_[_0x26be('0x3b')](_0x2f1e49[_0x26be('0x39')],{'$or':_[_0x26be('0x2a')](_0x46ab71,function(_0x14dca5){if(_0x14dca5[_0x26be('0x3c')]!==_0x26be('0x3d')){var _0x1eaf82={};_0x1eaf82[_0x14dca5[_0x26be('0x27')]]={'$like':'%'+_0x2e7b98[_0x26be('0x2e')][_0x26be('0x3e')]+'%'};return _0x1eaf82;}})});}_0x2f1e49=_[_0x26be('0x3b')]({},_0x2f1e49,_0x2e7b98[_0x26be('0x3f')]);var _0x561dfb={'where':_0x2f1e49['where']};return db['WhatsappTransferReport'][_0x26be('0x20')](_0x561dfb)[_0x26be('0x24')](function(_0x1775b5){_0x562848[_0x26be('0x20')]=_0x1775b5;if(_0x2e7b98[_0x26be('0x2e')][_0x26be('0x40')]){_0x2f1e49[_0x26be('0x41')]=[{'all':!![]}];}return db[_0x26be('0x2b')][_0x26be('0x42')](_0x2f1e49);})[_0x26be('0x24')](function(_0x3b625a){_0x562848['rows']=_0x3b625a;return _0x562848;})[_0x26be('0x24')](respondWithFilteredResult(_0x149f1b,_0x2f1e49))['catch'](handleError(_0x149f1b,null));};exports[_0x26be('0x43')]=function(_0x33d010,_0x12ce40){var _0x2b8d67={'raw':!![],'where':{'id':_0x33d010['params']['id']}},_0x119c49={};_0x119c49[_0x26be('0x31')]=_[_0x26be('0x2d')](db['WhatsappTransferReport'][_0x26be('0x44')]);_0x119c49['query']=_[_0x26be('0x2d')](_0x33d010[_0x26be('0x2e')]);_0x119c49[_0x26be('0x2f')]=_[_0x26be('0x30')](_0x119c49[_0x26be('0x31')],_0x119c49[_0x26be('0x2e')]);_0x2b8d67[_0x26be('0x32')]=_[_0x26be('0x30')](_0x119c49[_0x26be('0x31')],qs[_0x26be('0x33')](_0x33d010[_0x26be('0x2e')][_0x26be('0x33')]));_0x2b8d67[_0x26be('0x32')]=_0x2b8d67[_0x26be('0x32')][_0x26be('0x34')]?_0x2b8d67[_0x26be('0x32')]:_0x119c49['model'];if(_0x33d010[_0x26be('0x2e')][_0x26be('0x40')]){_0x2b8d67[_0x26be('0x41')]=[{'all':!![]}];}_0x2b8d67=_[_0x26be('0x3b')]({},_0x2b8d67,_0x33d010[_0x26be('0x3f')]);return db[_0x26be('0x2b')][_0x26be('0x45')](_0x2b8d67)['then'](handleEntityNotFound(_0x12ce40,null))[_0x26be('0x24')](respondWithResult(_0x12ce40,null))[_0x26be('0x46')](handleError(_0x12ce40,null));};exports[_0x26be('0x47')]=function(_0x2a2a8b,_0x2ba582){return db[_0x26be('0x2b')][_0x26be('0x47')](_0x2a2a8b[_0x26be('0x48')],{})[_0x26be('0x24')](respondWithResult(_0x2ba582,0xc9))[_0x26be('0x46')](handleError(_0x2ba582,null));};exports[_0x26be('0x23')]=function(_0x243643,_0x129bd0){if(_0x243643[_0x26be('0x48')]['id']){delete _0x243643['body']['id'];}return db['WhatsappTransferReport'][_0x26be('0x45')]({'where':{'id':_0x243643[_0x26be('0x49')]['id']}})[_0x26be('0x24')](handleEntityNotFound(_0x129bd0,null))['then'](saveUpdates(_0x243643['body'],null))[_0x26be('0x24')](respondWithResult(_0x129bd0,null))[_0x26be('0x46')](handleError(_0x129bd0,null));};exports[_0x26be('0x25')]=function(_0x5d8c89,_0x2135a9){return db[_0x26be('0x2b')][_0x26be('0x45')]({'where':{'id':_0x5d8c89[_0x26be('0x49')]['id']}})['then'](handleEntityNotFound(_0x2135a9,null))['then'](removeEntity(_0x2135a9,null))[_0x26be('0x46')](handleError(_0x2135a9,null));};exports[_0x26be('0x4a')]=function(_0x1881bc,_0x5ea52e){return db[_0x26be('0x2b')][_0x26be('0x4a')]()[_0x26be('0x24')](respondWithResult(_0x5ea52e,null))[_0x26be('0x46')](handleError(_0x5ea52e,null));};
\ No newline at end of file
index 1d68fc9..dc6d605 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48ab=['exports','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./whatsappTransferReport.attributes'];(function(_0x535e0e,_0x1b9d34){var _0x2dfaa5=function(_0x594ca0){while(--_0x594ca0){_0x535e0e['push'](_0x535e0e['shift']());}};_0x2dfaa5(++_0x1b9d34);}(_0x48ab,0x1a8));var _0xb48a=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x48ab[_0x1e7b16];return _0x37fadc;};'use strict';var _=require(_0xb48a('0x0'));var util=require('util');var logger=require(_0xb48a('0x1'))(_0xb48a('0x2'));var moment=require('moment');var BPromise=require(_0xb48a('0x3'));var rp=require(_0xb48a('0x4'));var fs=require('fs');var path=require(_0xb48a('0x5'));var rimraf=require('rimraf');var config=require(_0xb48a('0x6'));var attributes=require(_0xb48a('0x7'));module[_0xb48a('0x8')]=function(_0x2de7a5,_0x358901){return _0x2de7a5['define'](_0xb48a('0x9'),attributes,{'tableName':_0xb48a('0xa'),'paranoid':![],'indexes':[{'name':_0xb48a('0xb'),'fields':[_0xb48a('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x285f=['WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','path','../../config/environment','./whatsappTransferReport.attributes','exports','define'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x285f,0xab));var _0xf285=function(_0xb306bb,_0x4624cc){_0xb306bb=_0xb306bb-0x0;var _0x588523=_0x285f[_0xb306bb];return _0x588523;};'use strict';var _=require(_0xf285('0x0'));var util=require(_0xf285('0x1'));var logger=require(_0xf285('0x2'))(_0xf285('0x3'));var moment=require(_0xf285('0x4'));var BPromise=require(_0xf285('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf285('0x6'));var rimraf=require('rimraf');var config=require(_0xf285('0x7'));var attributes=require(_0xf285('0x8'));module[_0xf285('0x9')]=function(_0x2dab5d,_0x152ed3){return _0x2dab5d[_0xf285('0xa')](_0xf285('0xb'),attributes,{'tableName':_0xf285('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xf285('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index cc2a14b..82e987d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72ad=['client','http','request','then','info','request\x20sent','debug','stringify','error','code','WhatsappTransferReport,\x20%s,\x20%s','message','result','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x4bfade,_0xb26c0e){var _0x272465=function(_0x3b38cb){while(--_0x3b38cb){_0x4bfade['push'](_0x4bfade['shift']());}};_0x272465(++_0xb26c0e);}(_0x72ad,0xff));var _0xd72a=function(_0x56f7e2,_0x145392){_0x56f7e2=_0x56f7e2-0x0;var _0x36240b=_0x72ad[_0x56f7e2];return _0x36240b;};'use strict';var _=require(_0xd72a('0x0'));var util=require('util');var moment=require(_0xd72a('0x1'));var BPromise=require(_0xd72a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd72a('0x3'));var db=require(_0xd72a('0x4'))['db'];var utils=require(_0xd72a('0x5'));var logger=require(_0xd72a('0x6'))('rpc');var config=require(_0xd72a('0x7'));var jayson=require(_0xd72a('0x8'));var client=jayson[_0xd72a('0x9')][_0xd72a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x140b24,_0x35f4a9,_0x52d4df){return new BPromise(function(_0x14d409,_0x4e9a30){return client[_0xd72a('0xb')](_0x140b24,_0x52d4df)[_0xd72a('0xc')](function(_0x3333d3){logger[_0xd72a('0xd')]('WhatsappTransferReport,\x20%s,\x20%s',_0x35f4a9,_0xd72a('0xe'));logger[_0xd72a('0xf')]('WhatsappTransferReport,\x20%s,\x20%s,\x20%s',_0x35f4a9,_0xd72a('0xe'),JSON[_0xd72a('0x10')](_0x3333d3));if(_0x3333d3[_0xd72a('0x11')]){if(_0x3333d3[_0xd72a('0x11')][_0xd72a('0x12')]===0x1f4){logger[_0xd72a('0x11')](_0xd72a('0x13'),_0x35f4a9,_0x3333d3['error'][_0xd72a('0x14')]);return _0x4e9a30(_0x3333d3[_0xd72a('0x11')]['message']);}logger[_0xd72a('0x11')](_0xd72a('0x13'),_0x35f4a9,_0x3333d3['error']['message']);return _0x14d409(_0x3333d3['error'][_0xd72a('0x14')]);}else{logger[_0xd72a('0xd')](_0xd72a('0x13'),_0x35f4a9,_0xd72a('0xe'));_0x14d409(_0x3333d3[_0xd72a('0x15')][_0xd72a('0x14')]);}})['catch'](function(_0xd4d739){logger['error'](_0xd72a('0x13'),_0x35f4a9,_0xd4d739);_0x4e9a30(_0xd4d739);});});}
\ No newline at end of file
+var _0xa8b1=['ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','request','then','info','request\x20sent','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappTransferReport,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring'];(function(_0x1d3e8c,_0x11b8b9){var _0x2e0ee5=function(_0x25c0b9){while(--_0x25c0b9){_0x1d3e8c['push'](_0x1d3e8c['shift']());}};_0x2e0ee5(++_0x11b8b9);}(_0xa8b1,0x146));var _0x1a8b=function(_0x2ecb59,_0x5b3497){_0x2ecb59=_0x2ecb59-0x0;var _0x281938=_0xa8b1[_0x2ecb59];return _0x281938;};'use strict';var _=require('lodash');var util=require(_0x1a8b('0x0'));var moment=require(_0x1a8b('0x1'));var BPromise=require(_0x1a8b('0x2'));var rs=require(_0x1a8b('0x3'));var fs=require('fs');var Redis=require(_0x1a8b('0x4'));var db=require(_0x1a8b('0x5'))['db'];var utils=require(_0x1a8b('0x6'));var logger=require(_0x1a8b('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x1a8b('0x8')][_0x1a8b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x28845a,_0x4c75a8,_0xe7a7d7){return new BPromise(function(_0x4a9f05,_0x4cc124){return client[_0x1a8b('0xa')](_0x28845a,_0xe7a7d7)[_0x1a8b('0xb')](function(_0x574dda){logger[_0x1a8b('0xc')]('WhatsappTransferReport,\x20%s,\x20%s',_0x4c75a8,_0x1a8b('0xd'));logger['debug'](_0x1a8b('0xe'),_0x4c75a8,_0x1a8b('0xd'),JSON[_0x1a8b('0xf')](_0x574dda));if(_0x574dda[_0x1a8b('0x10')]){if(_0x574dda['error'][_0x1a8b('0x11')]===0x1f4){logger['error'](_0x1a8b('0x12'),_0x4c75a8,_0x574dda['error']['message']);return _0x4cc124(_0x574dda[_0x1a8b('0x10')][_0x1a8b('0x13')]);}logger[_0x1a8b('0x10')](_0x1a8b('0x12'),_0x4c75a8,_0x574dda[_0x1a8b('0x10')][_0x1a8b('0x13')]);return _0x4a9f05(_0x574dda[_0x1a8b('0x10')][_0x1a8b('0x13')]);}else{logger[_0x1a8b('0xc')](_0x1a8b('0x12'),_0x4c75a8,_0x1a8b('0xd'));_0x4a9f05(_0x574dda[_0x1a8b('0x14')][_0x1a8b('0x13')]);}})[_0x1a8b('0x15')](function(_0x4c0cf7){logger['error']('WhatsappTransferReport,\x20%s,\x20%s',_0x4c75a8,_0x4c0cf7);_0x4cc124(_0x4c0cf7);});});}
\ No newline at end of file
index b1a0c4f..445ec7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd068=['./config/schedule/transcribe','sequelize','then','info','start','Online\x20apps:','map','filter','online','name','Offline\x20apps:','status','join','seedDB','./config/seedDB','default','./config/license','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','lodash','./mysqldb','./config/environment','./config/logger','app','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp'];(function(_0x77c228,_0x222bcb){var _0x28a9f=function(_0x490ad3){while(--_0x490ad3){_0x77c228['push'](_0x77c228['shift']());}};_0x28a9f(++_0x222bcb);}(_0xd068,0x1de));var _0x8d06=function(_0x122d0b,_0x2186fa){_0x122d0b=_0x122d0b-0x0;var _0x3f18fd=_0xd068[_0x122d0b];return _0x3f18fd;};'use strict';var _=require(_0x8d06('0x0'));var mysqldb=require(_0x8d06('0x1'));var rpc=require('./rpc');var config=require(_0x8d06('0x2'));var logger=require(_0x8d06('0x3'))(_0x8d06('0x4'));var pm2=require('./config/pm2');var pm2Config=require('./config/pm2/config');var schedule=require(_0x8d06('0x5'));var chat=require(_0x8d06('0x6'));var whatsapp=require(_0x8d06('0x7'));var transcribe=require(_0x8d06('0x8'));function main(){return mysqldb['db'][_0x8d06('0x9')]['sync']()[_0x8d06('0xa')](function(){return rpc['listen']();})[_0x8d06('0xa')](function(_0x2af713){logger[_0x8d06('0xb')](_0x2af713);return chat[_0x8d06('0xc')]();})[_0x8d06('0xa')](function(){return whatsapp[_0x8d06('0xc')]();})['then'](function(){return schedule[_0x8d06('0xc')]();})[_0x8d06('0xa')](function(){return transcribe[_0x8d06('0xc')]();})['then'](function(_0x390c2e){logger[_0x8d06('0xb')](_0x390c2e);return pm2[_0x8d06('0xc')](pm2Config);})[_0x8d06('0xa')](function(_0x2f5751){logger[_0x8d06('0xb')](_0x8d06('0xd'),_[_0x8d06('0xe')](_[_0x8d06('0xf')](_0x2f5751,{'status':_0x8d06('0x10')}),_0x8d06('0x11'))['join']());logger[_0x8d06('0xb')](_0x8d06('0x12'),_[_0x8d06('0xe')](_[_0x8d06('0xf')](_0x2f5751,function(_0x57f2dc){return _0x57f2dc[_0x8d06('0x13')]!==_0x8d06('0x10');}),'name')[_0x8d06('0x14')]()||'None');config[_0x8d06('0x15')]&&require(_0x8d06('0x16'))[_0x8d06('0x17')]();require(_0x8d06('0x18'))['default']();})['catch'](function(_0x257acf){logger[_0x8d06('0x19')](_0x8d06('0x1a'),_0x257acf);process['exit'](0x1);});}main();
\ No newline at end of file
+var _0xfa41=['catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','./mysqldb','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/transcribe','sync','then','start','info','Online\x20apps:','filter','online','name','join','Offline\x20apps:','map','status','./config/seedDB','default','./config/license'];(function(_0x2bb9b3,_0x1d2c25){var _0x601b6=function(_0x4f8d09){while(--_0x4f8d09){_0x2bb9b3['push'](_0x2bb9b3['shift']());}};_0x601b6(++_0x1d2c25);}(_0xfa41,0x8f));var _0x1fa4=function(_0x3ac0fd,_0x2dfb0c){_0x3ac0fd=_0x3ac0fd-0x0;var _0x2670a9=_0xfa41[_0x3ac0fd];return _0x2670a9;};'use strict';var _=require('lodash');var mysqldb=require(_0x1fa4('0x0'));var rpc=require(_0x1fa4('0x1'));var config=require(_0x1fa4('0x2'));var logger=require(_0x1fa4('0x3'))(_0x1fa4('0x4'));var pm2=require(_0x1fa4('0x5'));var pm2Config=require(_0x1fa4('0x6'));var schedule=require(_0x1fa4('0x7'));var chat=require(_0x1fa4('0x8'));var whatsapp=require('./config/schedule/whatsapp');var transcribe=require(_0x1fa4('0x9'));function main(){return mysqldb['db']['sequelize'][_0x1fa4('0xa')]()['then'](function(){return rpc['listen']();})[_0x1fa4('0xb')](function(_0x315cdc){logger['info'](_0x315cdc);return chat[_0x1fa4('0xc')]();})[_0x1fa4('0xb')](function(){return whatsapp[_0x1fa4('0xc')]();})[_0x1fa4('0xb')](function(){return schedule['start']();})[_0x1fa4('0xb')](function(){return transcribe[_0x1fa4('0xc')]();})[_0x1fa4('0xb')](function(_0x3a2d51){logger['info'](_0x3a2d51);return pm2[_0x1fa4('0xc')](pm2Config);})[_0x1fa4('0xb')](function(_0x456ccb){logger[_0x1fa4('0xd')](_0x1fa4('0xe'),_['map'](_[_0x1fa4('0xf')](_0x456ccb,{'status':_0x1fa4('0x10')}),_0x1fa4('0x11'))[_0x1fa4('0x12')]());logger[_0x1fa4('0xd')](_0x1fa4('0x13'),_[_0x1fa4('0x14')](_[_0x1fa4('0xf')](_0x456ccb,function(_0x47ddeb){return _0x47ddeb[_0x1fa4('0x15')]!==_0x1fa4('0x10');}),_0x1fa4('0x11'))[_0x1fa4('0x12')]()||'None');config['seedDB']&&require(_0x1fa4('0x16'))[_0x1fa4('0x17')]();require(_0x1fa4('0x18'))[_0x1fa4('0x17')]();})[_0x1fa4('0x19')](function(_0xdecc8e){logger[_0x1fa4('0x1a')](_0x1fa4('0x1b'),_0xdecc8e);process['exit'](0x1);});}main();
\ No newline at end of file
index 14b9ca9..44974bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44c7=['User\x20object\x20not\x20found.','canUpdate','getLicense','Forbidden','isWebrtcLicence','webrtc','isMiddleware','signToken','setTokenCookie','cookie','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyIat','generateApiKey','regenerateApiKey','Sequelize','validatePasswordHistory','decryptString','toLowerCase','format','updatePasswordsHistory','split','length','splice','unshift','join','promisify','sign','secret','payload','options','verify','randomBytes','toString','hex','floor','now','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','lodash','jsonwebtoken','composable-middleware','basic-auth','bluebird','util','moment','secrets','session','role','fullname','name','internal','email','userpic','permissions','md5secret','voicePause','chatPause','faxPause','smsPause','openchannelPause','pauseType','showWebBar','lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','privacyEnabled','settingsEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','ignorePauseForPreviewCalls','selectRecallMeCampaign','isChatInteractionAuthorized','isAuthenticated','use','user','findOne','params','closed','disposition','then','status','unmanaged','json','catch','authorization','startsWith','headers','Basic','User','find','authenticate','pass','Wrong\x20credentials.','Bearer','Unknown\x20authorization\x20format','getUuid','query','apikey','Setting','allowedLoginAttempts','blockDuration','apiKeyNonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blockedAt','add','minutes','User\x20not\x20found.'];(function(_0x512407,_0x536ec8){var _0x3c7e61=function(_0x4fe690){while(--_0x4fe690){_0x512407['push'](_0x512407['shift']());}};_0x3c7e61(++_0x536ec8);}(_0x44c7,0xa7));var _0x744c=function(_0x2956ed,_0x3e62f0){_0x2956ed=_0x2956ed-0x0;var _0x1deefd=_0x44c7[_0x2956ed];return _0x1deefd;};'use strict';var db=require(_0x744c('0x0'))['db'];var config=require(_0x744c('0x1'));var hardwareConf=require(_0x744c('0x2'));var licenseUtil=require(_0x744c('0x3'));var encryptor=require(_0x744c('0x4'));var _=require(_0x744c('0x5'));var jwt=require(_0x744c('0x6'));var expressJwt=require('express-jwt');var compose=require(_0x744c('0x7'));var basicAuth=require(_0x744c('0x8'));var crypto=require('crypto');var BPromise=require(_0x744c('0x9'));var util=require(_0x744c('0xa'));var moment=require(_0x744c('0xb'));var validateJwt=expressJwt({'secret':config[_0x744c('0xc')][_0x744c('0xd')]});var userAttributes=['id',_0x744c('0xe'),_0x744c('0xf'),_0x744c('0x10'),_0x744c('0x11'),_0x744c('0x12'),_0x744c('0x13'),_0x744c('0x14'),_0x744c('0x15'),_0x744c('0x16'),_0x744c('0x17'),'mailPause',_0x744c('0x18'),_0x744c('0x19'),_0x744c('0x1a'),_0x744c('0x1b'),_0x744c('0x1c'),_0x744c('0x1d'),_0x744c('0x1e'),_0x744c('0x1f'),_0x744c('0x20'),_0x744c('0x21'),_0x744c('0x22'),_0x744c('0x23'),_0x744c('0x24'),_0x744c('0x25'),_0x744c('0x26'),'phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired',_0x744c('0x27'),_0x744c('0x28'),_0x744c('0x29'),'interface','userProfileId',_0x744c('0x2a'),_0x744c('0x2b'),_0x744c('0x2c'),_0x744c('0x2d'),_0x744c('0x2e'),'downloadAttachments',_0x744c('0x2f'),_0x744c('0x30')];exports[_0x744c('0x31')]=function(){return this[_0x744c('0x32')](!![])[_0x744c('0x33')](function(_0x165a61,_0x4d6237,_0x1f6ac9){if(_0x165a61[_0x744c('0x34')]){_0x1f6ac9();}else{return db['ChatInteraction'][_0x744c('0x35')]({'where':{'id':_0x165a61[_0x744c('0x36')]['id']},'attributes':['id',_0x744c('0x37'),_0x744c('0x38')],'raw':!![]})[_0x744c('0x39')](function(_0x5317d4){if(_0x5317d4&&_0x5317d4[_0x744c('0x37')]){return _0x4d6237[_0x744c('0x3a')](_0x5317d4[_0x744c('0x38')]===_0x744c('0x3b')?0x195:0x193)[_0x744c('0x3c')]({'message':_0x5317d4[_0x744c('0x38')]===_0x744c('0x3b')?'Unmanaged.':'Forbidden.'});}else{_0x1f6ac9();}})[_0x744c('0x3d')](function(_0x29fdbc){_0x1f6ac9(_0x29fdbc);});}});};exports[_0x744c('0x32')]=function isAuthenticated(_0x518def){return compose()[_0x744c('0x33')](function(_0x2c608f,_0x3fe6fe,_0x30cae1){var _0xf2de1e;if(_0x2c608f['headers'][_0x744c('0x3e')]){if(_[_0x744c('0x3f')](_0x2c608f[_0x744c('0x40')][_0x744c('0x3e')],_0x744c('0x41'))){var _0x743450=basicAuth(_0x2c608f);db[_0x744c('0x42')][_0x744c('0x43')]({'where':{'name':_0x743450[_0x744c('0x10')]}})[_0x744c('0x39')](function(_0x28bede){if(!_0x28bede||!_0x28bede[_0x744c('0x44')](_0x743450[_0x744c('0x45')])){return _0x3fe6fe['status'](0x191)[_0x744c('0x3c')]({'message':_0x744c('0x46')});}_0x2c608f[_0x744c('0x34')]={'id':_0x28bede['id']};_0x30cae1();})[_0x744c('0x3d')](function(_0x36a37c){_0x30cae1(_0x36a37c);});}else if(_[_0x744c('0x3f')](_0x2c608f['headers'][_0x744c('0x3e')],_0x744c('0x47'))){validateJwt(_0x2c608f,_0x3fe6fe,_0x30cae1);}else{if(_0x518def){_0x30cae1();}else{return _0x3fe6fe[_0x744c('0x3a')](0x193)[_0x744c('0x3c')]({'message':_0x744c('0x48')});}}}else if(_0x2c608f['query']['apikey']){try{var _0x3c2381={'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0x744c('0x49')]()};verifyJwt(_0x2c608f[_0x744c('0x4a')][_0x744c('0x4b')],_0x3c2381)[_0x744c('0x39')](function(_0x27c4d6){return db['User'][_0x744c('0x43')]({'where':{'id':_0x27c4d6['sub']}})[_0x744c('0x39')](function(_0x1444de){_0xf2de1e=_0x1444de;return db[_0x744c('0x4c')][_0x744c('0x35')]({'where':{'id':0x1},'attributes':[_0x744c('0x4d'),_0x744c('0x4e')],'raw':!![]});})['then'](function(_0x58ae0b){if(!_0xf2de1e||!_['isEqual'](_0xf2de1e[_0x744c('0x4f')],_0x27c4d6['nonce'])){return _0x3fe6fe[_0x744c('0x3a')](0x191)[_0x744c('0x3c')]({'message':_0x744c('0x50')});}if(_0xf2de1e[_0x744c('0x51')]){return _0x3fe6fe[_0x744c('0x3a')](0x191)[_0x744c('0x3c')]({'message':_0x744c('0x52')});}if(_0xf2de1e['blocked']){if(_0x58ae0b['blockDuration']>0x0){if(moment(_0xf2de1e[_0x744c('0x53')])[_0x744c('0x54')](_0x58ae0b[_0x744c('0x4e')],_0x744c('0x55'))>moment()){return _0x3fe6fe[_0x744c('0x3a')](0x191)[_0x744c('0x3c')]({'message':_0x744c('0x52')});}}else{return _0x3fe6fe['status'](0x191)[_0x744c('0x3c')]({'message':_0x744c('0x52')});}}_0x2c608f[_0x744c('0x34')]={'id':_0xf2de1e['id']};_0x30cae1();});})[_0x744c('0x3d')](function(){return _0x3fe6fe['status'](0x191)[_0x744c('0x3c')]({'message':_0x744c('0x52')});});}catch(_0x200ac6){_0x30cae1(_0x200ac6);}}else if(_0x518def){_0x30cae1();}else{return _0x3fe6fe[_0x744c('0x3a')](0x193)[_0x744c('0x3c')]({'message':_0x744c('0x48')});}})[_0x744c('0x33')](function(_0x1b208b,_0x3f6889,_0x1db733){if(_0x1b208b[_0x744c('0x34')]){db['User'][_0x744c('0x43')]({'where':{'id':_0x1b208b['user']['id']},'attributes':userAttributes})[_0x744c('0x39')](function(_0x3fdbd4){if(!_0x3fdbd4){return _0x3f6889[_0x744c('0x3a')](0x194)[_0x744c('0x3c')]({'message':_0x744c('0x56')});}_0x1b208b[_0x744c('0x34')]=_0x3fdbd4;_0x1db733();})[_0x744c('0x3d')](function(_0xa6356a){_0x1db733(_0xa6356a);});}else if(_0x518def){_0x1db733();}else{return _0x3f6889[_0x744c('0x3a')](0x194)[_0x744c('0x3c')]({'message':_0x744c('0x57')});}});};exports[_0x744c('0x58')]=function canUpdate(){return compose()[_0x744c('0x33')](function(_0x36df71,_0x106afb,_0x3e3099){return licenseUtil[_0x744c('0x59')]()[_0x744c('0x39')](function(_0x23eb92){if(_0x23eb92['update']){_0x3e3099();}else{return _0x106afb[_0x744c('0x3a')](0x193)['json']({'message':_0x744c('0x5a')});}})[_0x744c('0x3d')](function(_0xe16746){_0x3e3099(_0xe16746);});});};exports[_0x744c('0x5b')]=function isWebrtcLicence(){return compose()[_0x744c('0x33')](function(_0x331105,_0xa3848b,_0x451c04){return licenseUtil[_0x744c('0x59')]()['then'](function(_0x497655){if(_0x497655[_0x744c('0x5c')]){_0x451c04();}else{return _0xa3848b[_0x744c('0x3a')](0x193)[_0x744c('0x3c')]({'message':_0x744c('0x5a')});}})[_0x744c('0x3d')](function(_0xd8f1ad){_0x451c04(_0xd8f1ad);});});};exports[_0x744c('0x5d')]=function(_0x44f02a,_0x1e050f,_0xa266e){_0x44f02a[_0x744c('0x5d')]=!![];return _0xa266e();};exports[_0x744c('0x5e')]=function signToken(_0x5557b8){return signJwt(_0x5557b8);};exports[_0x744c('0x5f')]=function(_0x42e66e,_0x383f41){if(!_0x42e66e[_0x744c('0x34')]){return _0x383f41[_0x744c('0x3a')](0x194)[_0x744c('0x3c')]({'message':'It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'});}var _0x33cfdd={'payload':{'id':_0x42e66e[_0x744c('0x34')]['id'],'role':_0x42e66e['user'][_0x744c('0xe')]},'options':{'expiresIn':0x15180}};return signJwt(_0x33cfdd)['then'](function(_0x2baaa7){_0x383f41[_0x744c('0x60')]('motion.token',_0x2baaa7);_0x383f41[_0x744c('0x61')](_0x744c('0x62'));})['catch'](function(_0x2e0521){return _0x383f41[_0x744c('0x3a')](0x1f4)[_0x744c('0x63')](_0x2e0521);});};exports[_0x744c('0x64')]=function(_0x59df26){if(_[_0x744c('0x65')](_0x59df26[_0x744c('0x4f')])||_[_0x744c('0x65')](_0x59df26[_0x744c('0x66')])){return null;}else{return createJwt(_0x59df26);}};exports[_0x744c('0x67')]=function(_0x2d0a72){_0x2d0a72['apiKeyNonce']=generateNonce();_0x2d0a72[_0x744c('0x66')]=generateIssuedAt();return createJwt(_0x2d0a72);};exports[_0x744c('0x68')]=function(_0x51f3f8,_0x4509c9){var _0x16460a=_0x51f3f8['query'][_0x744c('0x4b')];if(_0x16460a){var _0x8bf0a4={'nonce':_0x4509c9['apiKeyNonce'],'iat':_0x4509c9[_0x744c('0x66')],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0x744c('0x49')]()};return verifyJwt(_0x16460a,_0x8bf0a4)[_0x744c('0x39')](function(){return generateApiKey(_0x4509c9);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports['validatePasswordPattern']=function(_0x544fc1){var _0x575a15=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x575a15['test'](_0x544fc1))throw new db[(_0x744c('0x69'))]['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~!@#$%^&-_=+[{]}.');return;};exports[_0x744c('0x6a')]=function(_0xb5115b,_0x39a830,_0x304462){var _0x142b5c=encryptor[_0x744c('0x6b')](_0x39a830)['split'](',');for(var _0x3035d9=0x0;_0x3035d9<_0x304462;_0x3035d9++){if(!_0x142b5c[_0x3035d9])break;if(_0xb5115b['toLowerCase']()===_0x142b5c[_0x3035d9][_0x744c('0x6c')]()){var _0x12decf=util[_0x744c('0x6d')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x304462);if(_0x304462===0x1){_0x12decf='The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.';}throw new db[(_0x744c('0x69'))]['ValidationError'](_0x12decf);}}return;};exports[_0x744c('0x6e')]=function(_0x1578d0,_0xfe3101){var _0x374974=_0xfe3101?encryptor[_0x744c('0x6b')](_0xfe3101)[_0x744c('0x6f')](','):[];if(_0x374974[_0x744c('0x70')]===0x5){_0x374974[_0x744c('0x71')](-0x1,0x1);}_0x374974[_0x744c('0x72')](_0x1578d0);return encryptor['encryptString'](_0x374974[_0x744c('0x73')](','));};function signJwt(_0x25721d){var _0x1e4cf9=BPromise[_0x744c('0x74')](jwt[_0x744c('0x75')],{'context':jwt});var _0x463858=_0x25721d[_0x744c('0x76')]||config['secrets']['session'];return new BPromise(function(_0x1ba5cc,_0x5ea882){_0x1e4cf9(_0x25721d[_0x744c('0x77')],_0x463858,_0x25721d[_0x744c('0x78')])[_0x744c('0x39')](function(_0x19c2e2){_0x1ba5cc(_0x19c2e2);})[_0x744c('0x3d')](function(_0x49eaa4){_0x5ea882(_0x49eaa4);});});}function verifyJwt(_0x14a5a0,_0x5c589b,_0x195e57){var _0x3d4be0=BPromise[_0x744c('0x74')](jwt[_0x744c('0x79')],{'context':jwt});var _0x43c502=_0x195e57||config[_0x744c('0xc')][_0x744c('0xd')];return new BPromise(function(_0x52122c,_0x36a168){_0x3d4be0(_0x14a5a0,_0x43c502,_0x5c589b)[_0x744c('0x39')](function(_0xf69ac7){_0x52122c(_0xf69ac7);})[_0x744c('0x3d')](function(_0x83dd07){_0x36a168(_0x83dd07);});});}function generateNonce(){return crypto[_0x744c('0x7a')](0x10)[_0x744c('0x7b')](_0x744c('0x7c'));}function generateIssuedAt(){return Math[_0x744c('0x7d')](Date[_0x744c('0x7e')]()/0x3e8)[_0x744c('0x7b')]();}function createJwt(_0x31cd2f){var _0x103e36={'payload':{'iat':_0x31cd2f[_0x744c('0x66')],'nonce':_0x31cd2f[_0x744c('0x4f')]},'options':{'algorithm':'HS512','subject':_0x31cd2f['id'][_0x744c('0x7b')](),'issuer':hardwareConf[_0x744c('0x49')](),'audience':hardwareConf['getUuid']()}};return signJwt(_0x103e36)['then'](function(_0x3383a2){return{'iat':_0x31cd2f['apiKeyIat'],'nonce':_0x31cd2f['apiKeyNonce'],'token':_0x3383a2};});}
\ No newline at end of file
+var _0x3df4=['verify','randomBytes','toString','hex','floor','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','lodash','jsonwebtoken','express-jwt','composable-middleware','basic-auth','bluebird','util','moment','secrets','session','role','fullname','name','internal','email','userpic','permissions','md5secret','voicePause','chatPause','mailPause','faxPause','showWebBar','lastLoginAt','lastPauseAt','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableDtmfTone','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControlPort','interface','privacyEnabled','settingsEnabled','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','use','user','ChatInteraction','findOne','params','closed','disposition','then','status','unmanaged','json','Unmanaged.','catch','isAuthenticated','headers','authorization','startsWith','Basic','find','query','apikey','getUuid','User','sub','allowedLoginAttempts','blockDuration','isEqual','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','blockedAt','minutes','Invalid\x20API\x20access\x20key','Unknown\x20authorization\x20format','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','webrtc','isMiddleware','signToken','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','/dashboards/general','retrieveApiKey','apiKeyNonce','isNil','generateApiKey','apiKeyIat','regenerateApiKey','validatePasswordPattern','test','Sequelize','ValidationError','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','length','splice','unshift','encryptString','join','promisify','sign','payload','options'];(function(_0x161d3e,_0xa8d8df){var _0xc29485=function(_0x245c0a){while(--_0x245c0a){_0x161d3e['push'](_0x161d3e['shift']());}};_0xc29485(++_0xa8d8df);}(_0x3df4,0x173));var _0x43df=function(_0x522f2d,_0x5a73a9){_0x522f2d=_0x522f2d-0x0;var _0x100e6e=_0x3df4[_0x522f2d];return _0x100e6e;};'use strict';var db=require(_0x43df('0x0'))['db'];var config=require(_0x43df('0x1'));var hardwareConf=require(_0x43df('0x2'));var licenseUtil=require(_0x43df('0x3'));var encryptor=require(_0x43df('0x4'));var _=require(_0x43df('0x5'));var jwt=require(_0x43df('0x6'));var expressJwt=require(_0x43df('0x7'));var compose=require(_0x43df('0x8'));var basicAuth=require(_0x43df('0x9'));var crypto=require('crypto');var BPromise=require(_0x43df('0xa'));var util=require(_0x43df('0xb'));var moment=require(_0x43df('0xc'));var validateJwt=expressJwt({'secret':config[_0x43df('0xd')][_0x43df('0xe')]});var userAttributes=['id',_0x43df('0xf'),_0x43df('0x10'),_0x43df('0x11'),_0x43df('0x12'),_0x43df('0x13'),_0x43df('0x14'),_0x43df('0x15'),_0x43df('0x16'),_0x43df('0x17'),_0x43df('0x18'),_0x43df('0x19'),_0x43df('0x1a'),'smsPause','openchannelPause','pauseType',_0x43df('0x1b'),_0x43df('0x1c'),_0x43df('0x1d'),'crudPermissions','allowmessenger',_0x43df('0x1e'),_0x43df('0x1f'),_0x43df('0x20'),_0x43df('0x21'),_0x43df('0x22'),'phoneBarEnableRecording',_0x43df('0x23'),'phoneBarEnableSettings',_0x43df('0x24'),_0x43df('0x25'),'phoneBarRemoteControl',_0x43df('0x26'),'hotdesk',_0x43df('0x27'),'userProfileId',_0x43df('0x28'),_0x43df('0x29'),'wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions',_0x43df('0x2a'),_0x43df('0x2b'),_0x43df('0x2c')];exports['isChatInteractionAuthorized']=function(){return this['isAuthenticated'](!![])[_0x43df('0x2d')](function(_0x352d2a,_0x194b7e,_0xa85580){if(_0x352d2a[_0x43df('0x2e')]){_0xa85580();}else{return db[_0x43df('0x2f')][_0x43df('0x30')]({'where':{'id':_0x352d2a[_0x43df('0x31')]['id']},'attributes':['id',_0x43df('0x32'),_0x43df('0x33')],'raw':!![]})[_0x43df('0x34')](function(_0x5b4f56){if(_0x5b4f56&&_0x5b4f56[_0x43df('0x32')]){return _0x194b7e[_0x43df('0x35')](_0x5b4f56['disposition']===_0x43df('0x36')?0x195:0x193)[_0x43df('0x37')]({'message':_0x5b4f56['disposition']===_0x43df('0x36')?_0x43df('0x38'):'Forbidden.'});}else{_0xa85580();}})[_0x43df('0x39')](function(_0x4683b9){_0xa85580(_0x4683b9);});}});};exports[_0x43df('0x3a')]=function isAuthenticated(_0x5ec146){return compose()[_0x43df('0x2d')](function(_0x3837d3,_0x1d6df3,_0x4afd60){var _0x2a90f6;if(_0x3837d3[_0x43df('0x3b')][_0x43df('0x3c')]){if(_[_0x43df('0x3d')](_0x3837d3[_0x43df('0x3b')][_0x43df('0x3c')],_0x43df('0x3e'))){var _0x46f445=basicAuth(_0x3837d3);db['User'][_0x43df('0x3f')]({'where':{'name':_0x46f445['name']}})[_0x43df('0x34')](function(_0xa272b1){if(!_0xa272b1||!_0xa272b1['authenticate'](_0x46f445['pass'])){return _0x1d6df3['status'](0x191)[_0x43df('0x37')]({'message':'Wrong\x20credentials.'});}_0x3837d3['user']={'id':_0xa272b1['id']};_0x4afd60();})[_0x43df('0x39')](function(_0x951188){_0x4afd60(_0x951188);});}else if(_[_0x43df('0x3d')](_0x3837d3[_0x43df('0x3b')]['authorization'],'Bearer')){validateJwt(_0x3837d3,_0x1d6df3,_0x4afd60);}else{if(_0x5ec146){_0x4afd60();}else{return _0x1d6df3[_0x43df('0x35')](0x193)[_0x43df('0x37')]({'message':'Unknown\x20authorization\x20format'});}}}else if(_0x3837d3[_0x43df('0x40')][_0x43df('0x41')]){try{var _0x1373b7={'audience':hardwareConf[_0x43df('0x42')](),'issuer':hardwareConf[_0x43df('0x42')]()};verifyJwt(_0x3837d3['query'][_0x43df('0x41')],_0x1373b7)[_0x43df('0x34')](function(_0x2ee576){return db[_0x43df('0x43')][_0x43df('0x3f')]({'where':{'id':_0x2ee576[_0x43df('0x44')]}})[_0x43df('0x34')](function(_0x5625a6){_0x2a90f6=_0x5625a6;return db['Setting'][_0x43df('0x30')]({'where':{'id':0x1},'attributes':[_0x43df('0x45'),_0x43df('0x46')],'raw':!![]});})[_0x43df('0x34')](function(_0x108ba1){if(!_0x2a90f6||!_[_0x43df('0x47')](_0x2a90f6['apiKeyNonce'],_0x2ee576[_0x43df('0x48')])){return _0x1d6df3[_0x43df('0x35')](0x191)['json']({'message':_0x43df('0x49')});}if(_0x2a90f6['disabled']){return _0x1d6df3[_0x43df('0x35')](0x191)['json']({'message':'Invalid\x20API\x20access\x20key'});}if(_0x2a90f6['blocked']){if(_0x108ba1[_0x43df('0x46')]>0x0){if(moment(_0x2a90f6[_0x43df('0x4a')])['add'](_0x108ba1[_0x43df('0x46')],_0x43df('0x4b'))>moment()){return _0x1d6df3[_0x43df('0x35')](0x191)['json']({'message':_0x43df('0x4c')});}}else{return _0x1d6df3[_0x43df('0x35')](0x191)[_0x43df('0x37')]({'message':'Invalid\x20API\x20access\x20key'});}}_0x3837d3[_0x43df('0x2e')]={'id':_0x2a90f6['id']};_0x4afd60();});})[_0x43df('0x39')](function(){return _0x1d6df3[_0x43df('0x35')](0x191)[_0x43df('0x37')]({'message':_0x43df('0x4c')});});}catch(_0x4ca1e7){_0x4afd60(_0x4ca1e7);}}else if(_0x5ec146){_0x4afd60();}else{return _0x1d6df3[_0x43df('0x35')](0x193)[_0x43df('0x37')]({'message':_0x43df('0x4d')});}})[_0x43df('0x2d')](function(_0x4e13ec,_0x251250,_0x159497){if(_0x4e13ec[_0x43df('0x2e')]){db[_0x43df('0x43')][_0x43df('0x3f')]({'where':{'id':_0x4e13ec[_0x43df('0x2e')]['id']},'attributes':userAttributes})[_0x43df('0x34')](function(_0x5c7169){if(!_0x5c7169){return _0x251250['status'](0x194)['json']({'message':_0x43df('0x4e')});}_0x4e13ec[_0x43df('0x2e')]=_0x5c7169;_0x159497();})[_0x43df('0x39')](function(_0x1928a8){_0x159497(_0x1928a8);});}else if(_0x5ec146){_0x159497();}else{return _0x251250[_0x43df('0x35')](0x194)['json']({'message':_0x43df('0x4f')});}});};exports[_0x43df('0x50')]=function canUpdate(){return compose()[_0x43df('0x2d')](function(_0x42bc33,_0x3ecb97,_0x2c8198){return licenseUtil[_0x43df('0x51')]()['then'](function(_0x442c90){if(_0x442c90[_0x43df('0x52')]){_0x2c8198();}else{return _0x3ecb97[_0x43df('0x35')](0x193)[_0x43df('0x37')]({'message':_0x43df('0x53')});}})['catch'](function(_0x4ff2d9){_0x2c8198(_0x4ff2d9);});});};exports['isWebrtcLicence']=function isWebrtcLicence(){return compose()['use'](function(_0x11e751,_0x3ee5cb,_0x3280c4){return licenseUtil[_0x43df('0x51')]()[_0x43df('0x34')](function(_0x2f8673){if(_0x2f8673[_0x43df('0x54')]){_0x3280c4();}else{return _0x3ee5cb['status'](0x193)[_0x43df('0x37')]({'message':_0x43df('0x53')});}})[_0x43df('0x39')](function(_0x12e88f){_0x3280c4(_0x12e88f);});});};exports[_0x43df('0x55')]=function(_0x567099,_0xc719ac,_0xd730e9){_0x567099['isMiddleware']=!![];return _0xd730e9();};exports[_0x43df('0x56')]=function signToken(_0x23e783){return signJwt(_0x23e783);};exports['setTokenCookie']=function(_0x50a2b1,_0x58195a){if(!_0x50a2b1['user']){return _0x58195a['status'](0x194)['json']({'message':_0x43df('0x57')});}var _0x474800={'payload':{'id':_0x50a2b1[_0x43df('0x2e')]['id'],'role':_0x50a2b1[_0x43df('0x2e')][_0x43df('0xf')]},'options':{'expiresIn':0x15180}};return signJwt(_0x474800)[_0x43df('0x34')](function(_0xdc423b){_0x58195a[_0x43df('0x58')](_0x43df('0x59'),_0xdc423b);_0x58195a[_0x43df('0x5a')](_0x43df('0x5b'));})[_0x43df('0x39')](function(_0x3f1067){return _0x58195a[_0x43df('0x35')](0x1f4)['send'](_0x3f1067);});};exports[_0x43df('0x5c')]=function(_0x79bf8e){if(_['isNil'](_0x79bf8e[_0x43df('0x5d')])||_[_0x43df('0x5e')](_0x79bf8e['apiKeyIat'])){return null;}else{return createJwt(_0x79bf8e);}};exports[_0x43df('0x5f')]=function(_0x5cead3){_0x5cead3[_0x43df('0x5d')]=generateNonce();_0x5cead3[_0x43df('0x60')]=generateIssuedAt();return createJwt(_0x5cead3);};exports[_0x43df('0x61')]=function(_0x1bce33,_0x5a9600){var _0x1912ce=_0x1bce33[_0x43df('0x40')][_0x43df('0x41')];if(_0x1912ce){var _0x5f4ff7={'nonce':_0x5a9600[_0x43df('0x5d')],'iat':_0x5a9600[_0x43df('0x60')],'audience':hardwareConf[_0x43df('0x42')](),'issuer':hardwareConf[_0x43df('0x42')]()};return verifyJwt(_0x1912ce,_0x5f4ff7)[_0x43df('0x34')](function(){return generateApiKey(_0x5a9600);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports[_0x43df('0x62')]=function(_0x31df6e){var _0x31f40d=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x31f40d[_0x43df('0x63')](_0x31df6e))throw new db[(_0x43df('0x64'))][(_0x43df('0x65'))]('The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.');return;};exports[_0x43df('0x66')]=function(_0x429ba5,_0x503161,_0x57618b){var _0x3a2822=encryptor[_0x43df('0x67')](_0x503161)[_0x43df('0x68')](',');for(var _0x51eceb=0x0;_0x51eceb<_0x57618b;_0x51eceb++){if(!_0x3a2822[_0x51eceb])break;if(_0x429ba5[_0x43df('0x69')]()===_0x3a2822[_0x51eceb][_0x43df('0x69')]()){var _0x56a053=util[_0x43df('0x6a')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x57618b);if(_0x57618b===0x1){_0x56a053=_0x43df('0x6b');}throw new db['Sequelize'][(_0x43df('0x65'))](_0x56a053);}}return;};exports['updatePasswordsHistory']=function(_0x5dea96,_0x20167b){var _0x44578c=_0x20167b?encryptor[_0x43df('0x67')](_0x20167b)[_0x43df('0x68')](','):[];if(_0x44578c[_0x43df('0x6c')]===0x5){_0x44578c[_0x43df('0x6d')](-0x1,0x1);}_0x44578c[_0x43df('0x6e')](_0x5dea96);return encryptor[_0x43df('0x6f')](_0x44578c[_0x43df('0x70')](','));};function signJwt(_0x3d8fed){var _0x565ff5=BPromise[_0x43df('0x71')](jwt[_0x43df('0x72')],{'context':jwt});var _0x5a4803=_0x3d8fed['secret']||config[_0x43df('0xd')][_0x43df('0xe')];return new BPromise(function(_0x1ad650,_0x108f55){_0x565ff5(_0x3d8fed[_0x43df('0x73')],_0x5a4803,_0x3d8fed[_0x43df('0x74')])[_0x43df('0x34')](function(_0x222988){_0x1ad650(_0x222988);})[_0x43df('0x39')](function(_0x25dead){_0x108f55(_0x25dead);});});}function verifyJwt(_0x26db3b,_0x30adff,_0x181bc9){var _0x398931=BPromise['promisify'](jwt[_0x43df('0x75')],{'context':jwt});var _0x36bf5c=_0x181bc9||config[_0x43df('0xd')]['session'];return new BPromise(function(_0x4a8512,_0x3859ae){_0x398931(_0x26db3b,_0x36bf5c,_0x30adff)['then'](function(_0x55e5b3){_0x4a8512(_0x55e5b3);})[_0x43df('0x39')](function(_0x149807){_0x3859ae(_0x149807);});});}function generateNonce(){return crypto[_0x43df('0x76')](0x10)[_0x43df('0x77')](_0x43df('0x78'));}function generateIssuedAt(){return Math[_0x43df('0x79')](Date['now']()/0x3e8)[_0x43df('0x77')]();}function createJwt(_0x191b87){var _0x2a3778={'payload':{'iat':_0x191b87['apiKeyIat'],'nonce':_0x191b87[_0x43df('0x5d')]},'options':{'algorithm':'HS512','subject':_0x191b87['id'][_0x43df('0x77')](),'issuer':hardwareConf['getUuid'](),'audience':hardwareConf[_0x43df('0x42')]()}};return signJwt(_0x2a3778)['then'](function(_0x521f02){return{'iat':_0x191b87[_0x43df('0x60')],'nonce':_0x191b87[_0x43df('0x5d')],'token':_0x521f02};});}
\ No newline at end of file
index 08919e8..d82a500 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12b5=['createCipher','utf8','base64','secret','lodash','../../config/environment','../../config/logger','secrets','session','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createReadStream','createWriteStream','write','end','final','binary','close','unlink','createDecipher','data','update'];(function(_0x1b76fd,_0x6f361e){var _0x5406c6=function(_0x2ae044){while(--_0x2ae044){_0x1b76fd['push'](_0x1b76fd['shift']());}};_0x5406c6(++_0x6f361e);}(_0x12b5,0x144));var _0x512b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x12b5[_0x14add3];return _0x4a174f;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require('bluebird');var _=require(_0x512b('0x0'));var config=require(_0x512b('0x1'));var logger=require(_0x512b('0x2'))('app');const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x512b('0x3')][_0x512b('0x4')],'algorithm':'aes-256-ctr'};const fileOptions={'algorithm':_0x512b('0x5')};if(config[_0x512b('0x6')]&&config['encrypt']['algorithm']){var isSupported=isAlgorithmSupported(config[_0x512b('0x6')]['algorithm']);if(isSupported){fileOptions[_0x512b('0x7')]=config[_0x512b('0x6')][_0x512b('0x7')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x512b('0x8')](',\x20');logger[_0x512b('0x9')](config['encrypt'][_0x512b('0x7')],_0x512b('0xa'),supportedAlgorithms);}}function isASupportedCipher(_0x2a5484){return AES_SUPPORTED_RX[_0x512b('0xb')](_0x2a5484);}function getSupportedCiphers(){return crypto[_0x512b('0xc')]()[_0x512b('0xd')](isASupportedCipher);}function isAlgorithmSupported(_0x23ea54){return getSupportedCiphers()[_0x512b('0xe')](_0x23ea54)>-0x1;}function combineOptions(_0x4533ea){var _0x219f3b={};for(var _0x3809f6 in fileOptions){if(fileOptions['hasOwnProperty'](_0x3809f6)){_0x219f3b[_0x3809f6]=fileOptions[_0x3809f6];}}if(_0x4533ea){for(var _0x11a837 in _0x4533ea){if(_0x4533ea[_0x512b('0xf')](_0x11a837)){_0x219f3b[_0x11a837]=_0x4533ea[_0x11a837];}}}return _0x219f3b;}exports[_0x512b('0x10')]=function(_0x451f28,_0x565028,_0x35aed2,_0x23e86c){return new BPromise(function(_0x17db5a,_0x5c37a1){_0x23e86c=combineOptions(_0x23e86c);var _0x115e34=new Buffer(_0x35aed2);var _0x5804d8=fs[_0x512b('0x11')](_0x451f28);var _0x4930fa=fs[_0x512b('0x12')](_0x565028);var _0x40fe5c=crypto['createCipher'](_0x23e86c[_0x512b('0x7')],_0x115e34);_0x5804d8['on']('data',function(_0x5e3ee1){var _0x32618a=new Buffer(_0x40fe5c['update'](_0x5e3ee1),'binary');_0x4930fa[_0x512b('0x13')](_0x32618a);});_0x5804d8['on'](_0x512b('0x14'),function(){try{var _0x449d41=new Buffer(_0x40fe5c[_0x512b('0x15')](_0x512b('0x16')),_0x512b('0x16'));_0x4930fa['write'](_0x449d41);_0x4930fa['end']();_0x4930fa['on'](_0x512b('0x17'),function(){return _0x17db5a(_0x565028);});}catch(_0x4c036a){fs[_0x512b('0x18')](_0x565028);return _0x5c37a1(_0x4c036a);}});});};exports['decryptFile']=function(_0x1cd291,_0x14b8c5,_0x41373c,_0x3fd3d1){return new BPromise(function(_0x4bd164,_0x42eee8){_0x3fd3d1=combineOptions(_0x3fd3d1);var _0x503871=new Buffer(_0x41373c);var _0x3face5=fs[_0x512b('0x11')](_0x1cd291);var _0x226f7e=fs[_0x512b('0x12')](_0x14b8c5);var _0x47fcdd=crypto[_0x512b('0x19')](_0x3fd3d1[_0x512b('0x7')],_0x503871);_0x3face5['on'](_0x512b('0x1a'),function(_0x1d2722){var _0x1e2eed=new Buffer(_0x47fcdd[_0x512b('0x1b')](_0x1d2722),_0x512b('0x16'));_0x226f7e[_0x512b('0x13')](_0x1e2eed);});_0x3face5['on'](_0x512b('0x14'),function(){try{var _0x4b6187=new Buffer(_0x47fcdd[_0x512b('0x15')](_0x512b('0x16')),'binary');_0x226f7e[_0x512b('0x13')](_0x4b6187);_0x226f7e[_0x512b('0x14')]();_0x226f7e['on'](_0x512b('0x17'),function(){return _0x4bd164(_0x14b8c5);});}catch(_0x47c590){fs[_0x512b('0x18')](_0x14b8c5);return _0x42eee8(_0x47c590);}});});};exports['encryptString']=function(_0x532bdb,_0x296c3a,_0xcd3a9d){var _0x2d7f91=_0xcd3a9d||stringOptions[_0x512b('0x7')];var _0x57a739=_0x296c3a||stringOptions['secret'];var _0x54c909=crypto[_0x512b('0x1c')](_0x2d7f91,_0x57a739);var _0x38f8d1=_0x54c909[_0x512b('0x1b')](_0x532bdb,_0x512b('0x1d'),'base64');_0x38f8d1+=_0x54c909[_0x512b('0x15')](_0x512b('0x1e'));return _0x38f8d1;};exports['decryptString']=function(_0x33b2bb,_0x27bbe5,_0x186251){var _0x5b692b=_0x186251||stringOptions[_0x512b('0x7')];var _0x30218b=_0x27bbe5||stringOptions[_0x512b('0x1f')];var _0x175935=crypto[_0x512b('0x19')](_0x5b692b,_0x30218b);var _0x4209a5=_0x175935['update'](_0x33b2bb,'base64','utf8');_0x4209a5+=_0x175935[_0x512b('0x15')](_0x512b('0x1d'));return _0x4209a5;};
\ No newline at end of file
+var _0xba41=['encrypt','algorithm','join','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','createWriteStream','createCipher','data','binary','write','final','end','close','unlink','decryptFile','createReadStream','encryptString','secret','update','utf8','base64','decryptString','createDecipher','crypto','lodash','../../config/environment','secrets','session','aes-256-ctr','aes192'];(function(_0x582d0b,_0x28f609){var _0x2e93e1=function(_0xb6a81c){while(--_0xb6a81c){_0x582d0b['push'](_0x582d0b['shift']());}};_0x2e93e1(++_0x28f609);}(_0xba41,0x81));var _0x1ba4=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0xba41[_0x12fc8d];return _0x3f9d04;};'use strict';var crypto=require(_0x1ba4('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require(_0x1ba4('0x1'));var config=require(_0x1ba4('0x2'));var logger=require('../../config/logger')('app');const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x1ba4('0x3')][_0x1ba4('0x4')],'algorithm':_0x1ba4('0x5')};const fileOptions={'algorithm':_0x1ba4('0x6')};if(config[_0x1ba4('0x7')]&&config[_0x1ba4('0x7')]['algorithm']){var isSupported=isAlgorithmSupported(config[_0x1ba4('0x7')]['algorithm']);if(isSupported){fileOptions[_0x1ba4('0x8')]=config[_0x1ba4('0x7')][_0x1ba4('0x8')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x1ba4('0x9')](',\x20');logger['error'](config['encrypt'][_0x1ba4('0x8')],_0x1ba4('0xa'),supportedAlgorithms);}}function isASupportedCipher(_0x8cc346){return AES_SUPPORTED_RX[_0x1ba4('0xb')](_0x8cc346);}function getSupportedCiphers(){return crypto[_0x1ba4('0xc')]()[_0x1ba4('0xd')](isASupportedCipher);}function isAlgorithmSupported(_0x150b77){return getSupportedCiphers()[_0x1ba4('0xe')](_0x150b77)>-0x1;}function combineOptions(_0x21a74c){var _0xaf9242={};for(var _0x39a342 in fileOptions){if(fileOptions[_0x1ba4('0xf')](_0x39a342)){_0xaf9242[_0x39a342]=fileOptions[_0x39a342];}}if(_0x21a74c){for(var _0x5c72e9 in _0x21a74c){if(_0x21a74c[_0x1ba4('0xf')](_0x5c72e9)){_0xaf9242[_0x5c72e9]=_0x21a74c[_0x5c72e9];}}}return _0xaf9242;}exports['encryptFile']=function(_0x45b447,_0x32362a,_0x3411c8,_0x4cbe8a){return new BPromise(function(_0x4b4ec8,_0x45dddf){_0x4cbe8a=combineOptions(_0x4cbe8a);var _0x3935bb=new Buffer(_0x3411c8);var _0x336b9f=fs['createReadStream'](_0x45b447);var _0x2f3c5a=fs[_0x1ba4('0x10')](_0x32362a);var _0x35f9a=crypto[_0x1ba4('0x11')](_0x4cbe8a[_0x1ba4('0x8')],_0x3935bb);_0x336b9f['on'](_0x1ba4('0x12'),function(_0x3e1ef8){var _0x4fe964=new Buffer(_0x35f9a['update'](_0x3e1ef8),_0x1ba4('0x13'));_0x2f3c5a[_0x1ba4('0x14')](_0x4fe964);});_0x336b9f['on']('end',function(){try{var _0x4096d5=new Buffer(_0x35f9a[_0x1ba4('0x15')]('binary'),_0x1ba4('0x13'));_0x2f3c5a[_0x1ba4('0x14')](_0x4096d5);_0x2f3c5a[_0x1ba4('0x16')]();_0x2f3c5a['on'](_0x1ba4('0x17'),function(){return _0x4b4ec8(_0x32362a);});}catch(_0x5a6624){fs[_0x1ba4('0x18')](_0x32362a);return _0x45dddf(_0x5a6624);}});});};exports[_0x1ba4('0x19')]=function(_0x141a34,_0x32655f,_0x28b01b,_0x38df63){return new BPromise(function(_0x3df775,_0x5dc320){_0x38df63=combineOptions(_0x38df63);var _0x90a82c=new Buffer(_0x28b01b);var _0x3bc802=fs[_0x1ba4('0x1a')](_0x141a34);var _0x43f3a1=fs[_0x1ba4('0x10')](_0x32655f);var _0x3aeeb9=crypto['createDecipher'](_0x38df63[_0x1ba4('0x8')],_0x90a82c);_0x3bc802['on'](_0x1ba4('0x12'),function(_0x5abe20){var _0x560aaf=new Buffer(_0x3aeeb9['update'](_0x5abe20),'binary');_0x43f3a1[_0x1ba4('0x14')](_0x560aaf);});_0x3bc802['on']('end',function(){try{var _0x1cc468=new Buffer(_0x3aeeb9[_0x1ba4('0x15')]('binary'),'binary');_0x43f3a1[_0x1ba4('0x14')](_0x1cc468);_0x43f3a1[_0x1ba4('0x16')]();_0x43f3a1['on']('close',function(){return _0x3df775(_0x32655f);});}catch(_0x44b932){fs[_0x1ba4('0x18')](_0x32655f);return _0x5dc320(_0x44b932);}});});};exports[_0x1ba4('0x1b')]=function(_0x2c3578,_0x43f8f9,_0x302408){var _0x56ede4=_0x302408||stringOptions[_0x1ba4('0x8')];var _0x3c2353=_0x43f8f9||stringOptions[_0x1ba4('0x1c')];var _0x52ab30=crypto['createCipher'](_0x56ede4,_0x3c2353);var _0x186354=_0x52ab30[_0x1ba4('0x1d')](_0x2c3578,_0x1ba4('0x1e'),'base64');_0x186354+=_0x52ab30['final'](_0x1ba4('0x1f'));return _0x186354;};exports[_0x1ba4('0x20')]=function(_0x5daf5a,_0x27c9a3,_0x51bbce){var _0x2cc1e3=_0x51bbce||stringOptions[_0x1ba4('0x8')];var _0x642667=_0x27c9a3||stringOptions[_0x1ba4('0x1c')];var _0x2a8fbd=crypto[_0x1ba4('0x21')](_0x2cc1e3,_0x642667);var _0x2cbdc7=_0x2a8fbd[_0x1ba4('0x1d')](_0x5daf5a,_0x1ba4('0x1f'),'utf8');_0x2cbdc7+=_0x2a8fbd[_0x1ba4('0x15')](_0x1ba4('0x1e'));return _0x2cbdc7;};
\ No newline at end of file
index 5676548..fbb6ede 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f97=['sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','split','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.csv','length','existsSync','join','mkdirSync','%s%d.%s','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','finally','exit','util','lodash','to-csv','bluebird','zip-dir','rimraf','../../mysqldb','dbH','analytics','argv','savename','AnalyticExtractedReport','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','splitSizeCsv','then'];(function(_0x10531e,_0x374772){var _0x23a667=function(_0x18da96){while(--_0x18da96){_0x10531e['push'](_0x10531e['shift']());}};_0x23a667(++_0x374772);}(_0x9f97,0x184));var _0x79f9=function(_0x5976f8,_0x1265b7){_0x5976f8=_0x5976f8-0x0;var _0x179715=_0x9f97[_0x5976f8];return _0x179715;};'use strict';var util=require(_0x79f9('0x0'));var path=require('path');var _=require(_0x79f9('0x1'));var csv=require(_0x79f9('0x2'));var fs=require('fs');var BPromise=require(_0x79f9('0x3'));var zipdir=require(_0x79f9('0x4'));var rimraf=require(_0x79f9('0x5'));var db=require(_0x79f9('0x6'))['db'];var dbH=require(_0x79f9('0x6'))[_0x79f9('0x7')];var logger=require('../../config/logger')(_0x79f9('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0x79f9('0x9')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x79f9('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x4ba07e,_0x4ebff5){var _0x51885c={'status':_0x4ba07e};var _0x4050d8={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4ebff5){_0x51885c[_0x79f9('0xa')]=_0x4ebff5;}return db[_0x79f9('0xb')]['update'](_0x51885c,_0x4050d8);}function main(){var _0x3deab8=0x1388;var _0x21b9f4;logger[_0x79f9('0xc')](util[_0x79f9('0xd')](_0x79f9('0xe'),EXTRACTED_REPORT_ID,_0x79f9('0xf')));return db[_0x79f9('0x10')][_0x79f9('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x79f9('0x12')]})[_0x79f9('0x13')](function(_0x4ac131){if(_0x4ac131){_0x21b9f4=_0x4ac131;_0x3deab8=_0x21b9f4[_0x79f9('0x12')]||0x1388;}})[_0x79f9('0x13')](function(){return dbH[_0x79f9('0x14')][_0x79f9('0x15')](util[_0x79f9('0xd')](_0x79f9('0x16'),QUERY),{'type':dbH[_0x79f9('0x14')][_0x79f9('0x17')][_0x79f9('0x18')]});})['then'](function(_0x5c780e){if(!_0x5c780e[0x0][_0x79f9('0x19')]){return analyticExtractedReport(_0x79f9('0x1a'));}var _0x3d46ae=[];var _0x5e5202=0x0;if(_0x21b9f4[_0x79f9('0x1b')]){if(_0x5c780e&&_0x5c780e['length']){var _0x464942=_['range'](_0x5c780e[0x0]['num']/_0x3deab8);var _0x265663=Number[_0x79f9('0x1c')](_0x5c780e[0x0]['num']/_0x3deab8)?_0x5c780e[0x0][_0x79f9('0x19')]%_0x3deab8:0x0;_0x464942[_0x79f9('0x1d')](function(_0x5d42fa){if(_0x5d42fa>0x0){_0x5e5202+=_0x3deab8;}_0x3d46ae[_0x79f9('0x1e')](dbH[_0x79f9('0x14')][_0x79f9('0x15')](util[_0x79f9('0xd')](_0x79f9('0x1f'),QUERY,_0x3deab8,_0x5e5202),{'type':dbH[_0x79f9('0x14')]['QueryTypes'][_0x79f9('0x18')]}));});if(_0x265663>0x0){_0x5e5202+=_0x3deab8;_0x3d46ae[_0x79f9('0x1e')](dbH[_0x79f9('0x14')][_0x79f9('0x15')](util[_0x79f9('0xd')](_0x79f9('0x1f'),QUERY,_0x265663,_0x5e5202),{'type':dbH['sequelize']['QueryTypes'][_0x79f9('0x18')]}));}}}else{_0x3d46ae[_0x79f9('0x1e')](dbH[_0x79f9('0x14')][_0x79f9('0x15')](QUERY,{'type':dbH[_0x79f9('0x14')]['QueryTypes'][_0x79f9('0x18')]}));}var _0x3a9648=path[_0x79f9('0x20')](PATH);var _0x4753de=path[_0x79f9('0x21')](PATH,_0x79f9('0x22'));var _0x13b433=_0x21b9f4[_0x79f9('0x1b')]&&_0x3d46ae[_0x79f9('0x23')]>0x1;var _0x5bd343=[];if(!fs[_0x79f9('0x24')](path[_0x79f9('0x25')](_0x3a9648,_0x4753de))&&_0x13b433){fs[_0x79f9('0x26')](path[_0x79f9('0x25')](_0x3a9648,_0x4753de));}return BPromise['each'](_0x3d46ae,function(_0x4a0fe6){_0x5bd343[_0x79f9('0x1e')](_0x4a0fe6);})['then'](function(){for(var _0x3e2df1=0x0;_0x3e2df1<_0x5bd343['length'];_0x3e2df1+=0x1){var _0x25d3aa;var _0x516e0a=_0x5bd343[_0x3e2df1];if(_0x13b433){_0x25d3aa=path[_0x79f9('0x25')](_0x3a9648,_0x4753de,util[_0x79f9('0xd')](_0x79f9('0x27'),_0x4753de,_0x3e2df1,_0x79f9('0x28')));}else{_0x25d3aa=path['join'](_0x3a9648,util[_0x79f9('0xd')](_0x79f9('0x29'),_0x4753de,'csv'));}fs[_0x79f9('0x2a')](_0x25d3aa,csv(_0x516e0a));}})['then'](function(){if(_0x13b433){return new Promise(function(_0x135133){zipdir(path[_0x79f9('0x25')](_0x3a9648,_0x4753de),{'saveTo':path[_0x79f9('0x25')](_0x3a9648,util[_0x79f9('0xd')]('%s.%s',_0x4753de,_0x79f9('0x2b')))},function(_0xddec77,_0x29a404){rimraf(path[_0x79f9('0x25')](_0x3a9648,_0x4753de),function(){});_0x135133(_0x79f9('0x2c'));});});}})[_0x79f9('0x13')](function(){logger[_0x79f9('0xc')](util['format'](_0x79f9('0x2d'),EXTRACTED_REPORT_ID,_0x79f9('0xf')));return analyticExtractedReport(_0x79f9('0x2e'),_0x13b433?util[_0x79f9('0xd')](_0x79f9('0x29'),_0x4753de,_0x13b433?_0x79f9('0x2b'):_0x79f9('0x28')):null);});})[_0x79f9('0x2f')](function(_0x40b706){logger['info'](util['format'](_0x79f9('0x30'),EXTRACTED_REPORT_ID,'CSV'),util['inspect'](_0x40b706,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x79f9('0x31')](function(){process[_0x79f9('0x32')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x53d1=['csv','%s.%s','Completed','zip','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','util','path','to-csv','bluebird','zip-dir','rimraf','../../mysqldb','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','splitSizeCsv','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','SELECT','Empty','length','range','num','isInteger','forEach','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','push','dirname','.csv','split','join','each','%s%d.%s'];(function(_0x51e7b5,_0x398c97){var _0x3a9695=function(_0x174312){while(--_0x174312){_0x51e7b5['push'](_0x51e7b5['shift']());}};_0x3a9695(++_0x398c97);}(_0x53d1,0x67));var _0x153d=function(_0x595914,_0x511dee){_0x595914=_0x595914-0x0;var _0x1803f0=_0x53d1[_0x595914];return _0x1803f0;};'use strict';var util=require(_0x153d('0x0'));var path=require(_0x153d('0x1'));var _=require('lodash');var csv=require(_0x153d('0x2'));var fs=require('fs');var BPromise=require(_0x153d('0x3'));var zipdir=require(_0x153d('0x4'));var rimraf=require(_0x153d('0x5'));var db=require(_0x153d('0x6'))['db'];var dbH=require('../../mysqldb')['dbH'];var logger=require(_0x153d('0x7'))(_0x153d('0x8'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x153d('0x9')][0x3];var PATH=process[_0x153d('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x45e015,_0x3fdc28){var _0x22c4aa={'status':_0x45e015};var _0x1a8031={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x3fdc28){_0x22c4aa[_0x153d('0xa')]=_0x3fdc28;}return db[_0x153d('0xb')]['update'](_0x22c4aa,_0x1a8031);}function main(){var _0x48c66b=0x1388;var _0x4c5deb;logger[_0x153d('0xc')](util[_0x153d('0xd')](_0x153d('0xe'),EXTRACTED_REPORT_ID,_0x153d('0xf')));return db[_0x153d('0x10')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x153d('0x11')]})[_0x153d('0x12')](function(_0x3a1024){if(_0x3a1024){_0x4c5deb=_0x3a1024;_0x48c66b=_0x4c5deb[_0x153d('0x11')]||0x1388;}})[_0x153d('0x12')](function(){return dbH[_0x153d('0x13')][_0x153d('0x14')](util[_0x153d('0xd')](_0x153d('0x15'),QUERY),{'type':dbH[_0x153d('0x13')]['QueryTypes'][_0x153d('0x16')]});})['then'](function(_0x440365){if(!_0x440365[0x0]['num']){return analyticExtractedReport(_0x153d('0x17'));}var _0xc0732=[];var _0x50635f=0x0;if(_0x4c5deb['split']){if(_0x440365&&_0x440365[_0x153d('0x18')]){var _0x4bc7bd=_[_0x153d('0x19')](_0x440365[0x0][_0x153d('0x1a')]/_0x48c66b);var _0x50fdc3=Number[_0x153d('0x1b')](_0x440365[0x0][_0x153d('0x1a')]/_0x48c66b)?_0x440365[0x0][_0x153d('0x1a')]%_0x48c66b:0x0;_0x4bc7bd[_0x153d('0x1c')](function(_0x24f74b){if(_0x24f74b>0x0){_0x50635f+=_0x48c66b;}_0xc0732['push'](dbH['sequelize'][_0x153d('0x14')](util[_0x153d('0xd')](_0x153d('0x1d'),QUERY,_0x48c66b,_0x50635f),{'type':dbH[_0x153d('0x13')][_0x153d('0x1e')]['SELECT']}));});if(_0x50fdc3>0x0){_0x50635f+=_0x48c66b;_0xc0732[_0x153d('0x1f')](dbH['sequelize'][_0x153d('0x14')](util[_0x153d('0xd')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x50fdc3,_0x50635f),{'type':dbH[_0x153d('0x13')]['QueryTypes'][_0x153d('0x16')]}));}}}else{_0xc0732[_0x153d('0x1f')](dbH[_0x153d('0x13')][_0x153d('0x14')](QUERY,{'type':dbH[_0x153d('0x13')][_0x153d('0x1e')][_0x153d('0x16')]}));}var _0x1854cf=path[_0x153d('0x20')](PATH);var _0x5c1654=path['basename'](PATH,_0x153d('0x21'));var _0x215eb1=_0x4c5deb[_0x153d('0x22')]&&_0xc0732[_0x153d('0x18')]>0x1;var _0x3fc38a=[];if(!fs['existsSync'](path[_0x153d('0x23')](_0x1854cf,_0x5c1654))&&_0x215eb1){fs['mkdirSync'](path[_0x153d('0x23')](_0x1854cf,_0x5c1654));}return BPromise[_0x153d('0x24')](_0xc0732,function(_0x128e10){_0x3fc38a['push'](_0x128e10);})[_0x153d('0x12')](function(){for(var _0x2a5e8f=0x0;_0x2a5e8f<_0x3fc38a[_0x153d('0x18')];_0x2a5e8f+=0x1){var _0x29f69f;var _0x1f68e5=_0x3fc38a[_0x2a5e8f];if(_0x215eb1){_0x29f69f=path[_0x153d('0x23')](_0x1854cf,_0x5c1654,util[_0x153d('0xd')](_0x153d('0x25'),_0x5c1654,_0x2a5e8f,_0x153d('0x26')));}else{_0x29f69f=path[_0x153d('0x23')](_0x1854cf,util['format'](_0x153d('0x27'),_0x5c1654,'csv'));}fs['writeFileSync'](_0x29f69f,csv(_0x1f68e5));}})[_0x153d('0x12')](function(){if(_0x215eb1){return new Promise(function(_0x2303ac){zipdir(path['join'](_0x1854cf,_0x5c1654),{'saveTo':path[_0x153d('0x23')](_0x1854cf,util[_0x153d('0xd')]('%s.%s',_0x5c1654,'zip'))},function(_0xd163bc,_0x2095c1){rimraf(path[_0x153d('0x23')](_0x1854cf,_0x5c1654),function(){});_0x2303ac('zip\x20finished');});});}})[_0x153d('0x12')](function(){logger[_0x153d('0xc')](util[_0x153d('0xd')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x153d('0xf')));return analyticExtractedReport(_0x153d('0x28'),_0x215eb1?util[_0x153d('0xd')]('%s.%s',_0x5c1654,_0x215eb1?_0x153d('0x29'):_0x153d('0x26')):null);});})[_0x153d('0x2a')](function(_0x404468){logger[_0x153d('0xc')](util[_0x153d('0xd')](_0x153d('0x2b'),EXTRACTED_REPORT_ID,_0x153d('0xf')),util[_0x153d('0x2c')](_0x404468,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x153d('0x2d'));})[_0x153d('0x2e')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
index cca8c48..189d831 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5e5=['inspect','Failed','finally','exit','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','YYYY-MM-DD','center','Interaction\x20Transcript','finish','error','end','createPdfFromHTML','catch','util','path','moment','pdfmake/src/printer','JSDOM','window','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','update','map','tableHeader','toString','value','length','auto','body','push','concat','chunk','forEach','format','name','startDate','header','before','margin','\x20/\x20','footer','Arial','black','right','num','Empty','split','splitSizePdf','then','range','isInteger','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','basename','existsSync','join','mkdirSync','each','flatten','createPdfKitDocument','pdf','%s.%s','all','zip','info','PDF','Completed','AnalyticExtractedReport','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format'];(function(_0x462e58,_0x1389ff){var _0x4eddbb=function(_0x4f5c75){while(--_0x4f5c75){_0x462e58['push'](_0x462e58['shift']());}};_0x4eddbb(++_0x1389ff);}(_0xf5e5,0x1ef));var _0x5f5e=function(_0x4fc5df,_0x3acaab){_0x4fc5df=_0x4fc5df-0x0;var _0x4a18f5=_0xf5e5[_0x4fc5df];return _0x4a18f5;};'use strict';var _=require('lodash');var fs=require('fs');var util=require(_0x5f5e('0x0'));var path=require(_0x5f5e('0x1'));var moment=require(_0x5f5e('0x2'));var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x5f5e('0x3'));var zipdir=require('zip-dir');var rimraf=require('rimraf');var JSDOM=require('jsdom')[_0x5f5e('0x4')];var window=new JSDOM('')[_0x5f5e('0x5')];var BPromise=require(_0x5f5e('0x6'));var db=require(_0x5f5e('0x7'))['db'];var dbH=require(_0x5f5e('0x7'))[_0x5f5e('0x8')];var logger=require(_0x5f5e('0x9'))(_0x5f5e('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0x5f5e('0xb')][0x2]);var QUERY=process[_0x5f5e('0xb')][0x3];var PATH=process[_0x5f5e('0xb')][0x4];var NAME=process[_0x5f5e('0xb')][0x5];var FORMAT=_0x5f5e('0xc');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x14b49c,_0x3a13ab){var _0x3dd0b7={'status':_0x14b49c};var _0x2843c3={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x3a13ab){_0x3dd0b7[_0x5f5e('0xd')]=_0x3a13ab;}return db['AnalyticExtractedReport'][_0x5f5e('0xe')](_0x3dd0b7,_0x2843c3);}function getHeaders(_0x2db217){return _[_0x5f5e('0xf')](_0x2db217,function(_0x23e3c3){return{'text':_0x23e3c3,'style':_0x5f5e('0x10')};});}function getRows(_0x21e6dc,_0x3e3b84){return _[_0x5f5e('0xf')](_0x3e3b84,function(_0x46ab9c){return _(_0x46ab9c)['pick'](_0x21e6dc)[_0x5f5e('0xf')](function(_0x344546){return _0x344546?_[_0x5f5e('0x11')](_0x344546):'';})[_0x5f5e('0x12')]();});}function createTable(_0x5c4aa9,_0x4d88fe){var _0x2cc85c={'widths':_['fill'](Array(_0x5c4aa9[_0x5f5e('0x13')]),0x91),'heights':function(_0x49354e){return _0x49354e===0x0?_0x5f5e('0x14'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x5570ea=getHeaders(_0x5c4aa9);_0x2cc85c[_0x5f5e('0x15')][_0x5f5e('0x16')](_0x5570ea);var _0x3854a3=getRows(_0x5c4aa9,_0x4d88fe);_0x2cc85c[_0x5f5e('0x15')]=_0x2cc85c['body'][_0x5f5e('0x17')](_0x3854a3);return _0x2cc85c;}function createTables(_0x4aa5b9){var _0x17ee24=[];var _0x1fcd1c=_[_0x5f5e('0x18')](Object['keys'](_0x4aa5b9[0x0]),0x5);_0x1fcd1c[_0x5f5e('0x19')](function(_0xb2bbec){_0x17ee24[_0x5f5e('0x16')](createTable(_0xb2bbec,_0x4aa5b9));});return _0x17ee24;}function getPDFDocDefinition(_0xd466b5){var _0x32ac1e=util[_0x5f5e('0x1a')]('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT[_0x5f5e('0x1b')],moment(EXTRACTED_REPORT[_0x5f5e('0x1c')])[_0x5f5e('0x1a')](FORMAT),moment(EXTRACTED_REPORT['endDate'])['format'](FORMAT));var _0x4a0459=[];for(var _0x584643=0x0;_0x584643<_0xd466b5[_0x5f5e('0x13')];_0x584643++){var _0x30357e=[];if(_0x584643===0x0){_0x30357e[_0x5f5e('0x16')]({'text':_0x32ac1e,'style':_0x5f5e('0x1d')});}var _0x50abcd={'table':_0xd466b5[_0x584643]};if(_0x584643>0x0){_0x50abcd['pageBreak']=_0x5f5e('0x1e');_0x50abcd[_0x5f5e('0x1f')]=[0x0,0x46,0x0,0x0];}_0x30357e[_0x5f5e('0x16')](_0x50abcd);_0x4a0459[_0x5f5e('0x16')](_0x30357e);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x4a0459,'footer':function(_0x11fcad,_0x1d3216){return{'text':_0x11fcad['toString']()+_0x5f5e('0x20')+_0x1d3216,'style':_0x5f5e('0x21')};},'defaultStyle':{'font':_0x5f5e('0x22')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x5f5e('0x23')},'footer':{'alignment':_0x5f5e('0x24'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x326dd9){var _0x528002=0x1388;var _0x3d9fb7;if(!_0x326dd9[0x0][_0x5f5e('0x25')]){return analyticExtractedReport(_0x5f5e('0x26'));}return db['Setting']['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x5f5e('0x27'),_0x5f5e('0x28')]})[_0x5f5e('0x29')](function(_0x23c784){if(_0x23c784){_0x3d9fb7=_0x23c784;_0x528002=_0x3d9fb7[_0x5f5e('0x28')]||0x3e8;}})['then'](function(){var _0x406098=[];var _0x436331=0x0;if(_0x3d9fb7[_0x5f5e('0x27')]){if(_0x326dd9&&_0x326dd9[_0x5f5e('0x13')]){var _0x4340bd=_[_0x5f5e('0x2a')](_0x326dd9[0x0][_0x5f5e('0x25')]/_0x528002);var _0x478325=Number[_0x5f5e('0x2b')](_0x326dd9[0x0]['num']/_0x528002)?_0x326dd9[0x0][_0x5f5e('0x25')]%_0x528002:0x0;_0x4340bd['forEach'](function(_0x19cd8b){if(_0x19cd8b>0x0){_0x436331+=_0x528002;}_0x406098[_0x5f5e('0x16')](dbH[_0x5f5e('0x2c')][_0x5f5e('0x2d')](util['format'](_0x5f5e('0x2e'),QUERY,_0x528002,_0x436331),{'type':dbH[_0x5f5e('0x2c')][_0x5f5e('0x2f')]['SELECT']}));});if(_0x478325>0x0){_0x436331+=_0x528002;_0x406098[_0x5f5e('0x16')](dbH[_0x5f5e('0x2c')][_0x5f5e('0x2d')](util[_0x5f5e('0x1a')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x478325,_0x436331),{'type':dbH[_0x5f5e('0x2c')][_0x5f5e('0x2f')][_0x5f5e('0x30')]}));}}}else{_0x406098[_0x5f5e('0x16')](dbH[_0x5f5e('0x2c')][_0x5f5e('0x2d')](QUERY,{'type':dbH[_0x5f5e('0x2c')][_0x5f5e('0x2f')][_0x5f5e('0x30')]}));}var _0x4f1701=path['dirname'](PATH);var _0x5e38e3=path[_0x5f5e('0x31')](PATH,'.pdf');var _0x127a66=_0x3d9fb7[_0x5f5e('0x27')]&&_0x406098['length']>0x1;var _0x526e39=[];if(!fs[_0x5f5e('0x32')](path[_0x5f5e('0x33')](_0x4f1701,_0x5e38e3))&&_0x127a66){fs[_0x5f5e('0x34')](path[_0x5f5e('0x33')](_0x4f1701,_0x5e38e3));}return BPromise[_0x5f5e('0x35')](_0x406098,function(_0x4c94ff){_0x526e39[_0x5f5e('0x16')](_0x4c94ff);})[_0x5f5e('0x29')](function(){var _0x4ab37e=[];for(var _0x16283a=0x0;_0x16283a<_0x526e39[_0x5f5e('0x13')];_0x16283a+=0x1){var _0x16f8c2=_0x526e39[_0x16283a];var _0x5c5e9c=createTables(_[_0x5f5e('0x36')](_0x16f8c2));var _0x220192;var _0x57c958=getPDFDocDefinition(_0x5c5e9c);var _0x2ccefc=getPDFPrinter();var _0x1d6ebd=_0x2ccefc[_0x5f5e('0x37')](_0x57c958);if(_0x127a66){_0x220192=path[_0x5f5e('0x33')](_0x4f1701,_0x5e38e3,util['format']('%s%d.%s',_0x5e38e3,_0x16283a,_0x5f5e('0x38')));}else{_0x220192=path[_0x5f5e('0x33')](_0x4f1701,util['format'](_0x5f5e('0x39'),_0x5e38e3,_0x5f5e('0x38')));}_0x4ab37e['push'](writePDFDocument(_0x1d6ebd,_0x220192));}return Promise[_0x5f5e('0x3a')](_0x4ab37e);})[_0x5f5e('0x29')](function(){if(_0x127a66){return new Promise(function(_0x302d9b){zipdir(path[_0x5f5e('0x33')](_0x4f1701,_0x5e38e3),{'saveTo':path[_0x5f5e('0x33')](_0x4f1701,util[_0x5f5e('0x1a')](_0x5f5e('0x39'),_0x5e38e3,_0x5f5e('0x3b')))},function(){rimraf(path[_0x5f5e('0x33')](_0x4f1701,_0x5e38e3),function(){});_0x302d9b('zip\x20finished');});});}})[_0x5f5e('0x29')](function(){if(!_0x127a66)return;rimraf(path[_0x5f5e('0x33')](_0x4f1701,_0x5e38e3),function(){});})[_0x5f5e('0x29')](function(){logger[_0x5f5e('0x3c')](util[_0x5f5e('0x1a')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x5f5e('0x3d')));return analyticExtractedReport(_0x5f5e('0x3e'),_0x127a66?util[_0x5f5e('0x1a')](_0x5f5e('0x39'),_0x5e38e3,_0x127a66?_0x5f5e('0x3b'):_0x5f5e('0x38')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x5f5e('0x3c')](util['format']('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x5f5e('0x3d')));return db[_0x5f5e('0x3f')]['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})[_0x5f5e('0x29')](function(_0x4ee33b){EXTRACTED_REPORT=_0x4ee33b;return dbH[_0x5f5e('0x2c')][_0x5f5e('0x2d')](util[_0x5f5e('0x1a')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x5f5e('0x2c')][_0x5f5e('0x2f')][_0x5f5e('0x30')]});})['then'](extractReport)['catch'](function(_0x42926c){logger[_0x5f5e('0x3c')](util['format'](_0x5f5e('0x40'),EXTRACTED_REPORT_ID,'PDF'),util[_0x5f5e('0x41')](_0x42926c,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x5f5e('0x42'));})[_0x5f5e('0x43')](function(){process[_0x5f5e('0x44')](EXIT_CODE);});}main();function getPDFPrinter(){var _0xb0a487=new PdfPrinter({'Arial':{'normal':__dirname+'/fonts/arial-regular.ttf','bold':__dirname+_0x5f5e('0x45'),'italics':__dirname+_0x5f5e('0x46'),'bolditalics':__dirname+_0x5f5e('0x47')}});return _0xb0a487;}function getPDFDocDefinitionFromHTML(_0xfc95be,_0x2fa13a){var _0x35578f=util[_0x5f5e('0x1a')]('%s\x20#%d',_0x2fa13a['channel'],_0x2fa13a['interactionId']);var _0x557447=moment()[_0x5f5e('0x1a')](_0x5f5e('0x48'))['toString']();var _0x521a0a=htmlToPdfmake(_0xfc95be,{'window':window,'tableAutoSize':!![]});return{'content':[_0x521a0a],'defaultStyle':{'font':_0x5f5e('0x22')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x5f5e('0x49'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x5f5e('0x49'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x5f5e('0x4a'),'style':'header'}];},'footer':function(_0xb6695b,_0x1bbdb6){return[{'text':util['format']('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x35578f,_0xb6695b,_0x1bbdb6,_0x557447),'style':_0x5f5e('0x21')}];}};}function writePDFDocument(_0x2d300e,_0x506e0e){return new Promise(function(_0x232b18,_0x3d3c75){var _0x302821=_0x2d300e['pipe'](fs['createWriteStream'](_0x506e0e));_0x302821['on']('finish',function(){_0x232b18(_0x5f5e('0x4b'));});_0x302821['on'](_0x5f5e('0x4c'),function(_0x52a77a){_0x3d3c75(_0x52a77a);});_0x2d300e[_0x5f5e('0x4d')]();});}exports[_0x5f5e('0x4e')]=function(_0x23ed6a,_0x18f770){var _0x529d06=getPDFPrinter();var _0x4df0a9=getPDFDocDefinitionFromHTML(_0x23ed6a,_0x18f770);var _0x5f463b=_0x529d06[_0x5f5e('0x37')](_0x4df0a9);return writePDFDocument(_0x5f463b,_0x18f770[_0x5f5e('0x1')])[_0x5f5e('0x4f')](function(_0x3737c9){throw _0x3737c9;});};
\ No newline at end of file
+var _0x001c=['before','margin','landscape','\x20/\x20','footer','Arial','black','right','num','Setting','splitSizePdf','then','split','range','isInteger','query','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','SELECT','QueryTypes','dirname','basename','.pdf','existsSync','join','mkdirSync','each','flatten','%s%d.%s','pdf','all','%s.%s','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','center','Interaction\x20Transcript','pipe','createWriteStream','finish','error','createPdfFromHTML','createPdfKitDocument','path','lodash','util','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','jsdom','JSDOM','window','dbH','../../config/logger','analytics','argv','savename','update','map','toString','value','fill','body','push','concat','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','endDate','length','header','pageBreak'];(function(_0x2ca249,_0x5cb677){var _0x526cda=function(_0x10d8cf){while(--_0x10d8cf){_0x2ca249['push'](_0x2ca249['shift']());}};_0x526cda(++_0x5cb677);}(_0x001c,0x144));var _0xc001=function(_0xaf872d,_0x1d55fd){_0xaf872d=_0xaf872d-0x0;var _0x300584=_0x001c[_0xaf872d];return _0x300584;};'use strict';var _=require(_0xc001('0x0'));var fs=require('fs');var util=require(_0xc001('0x1'));var path=require('path');var moment=require(_0xc001('0x2'));var htmlToPdfmake=require(_0xc001('0x3'));var PdfPrinter=require(_0xc001('0x4'));var zipdir=require(_0xc001('0x5'));var rimraf=require('rimraf');var JSDOM=require(_0xc001('0x6'))[_0xc001('0x7')];var window=new JSDOM('')[_0xc001('0x8')];var BPromise=require('bluebird');var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0xc001('0x9')];var logger=require(_0xc001('0xa'))(_0xc001('0xb'));var EXTRACTED_REPORT_ID=Number(process[_0xc001('0xc')][0x2]);var QUERY=process[_0xc001('0xc')][0x3];var PATH=process[_0xc001('0xc')][0x4];var NAME=process[_0xc001('0xc')][0x5];var FORMAT='MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a';var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x2f7a0c,_0x1c5ef3){var _0x3866c1={'status':_0x2f7a0c};var _0xe77b98={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1c5ef3){_0x3866c1[_0xc001('0xd')]=_0x1c5ef3;}return db['AnalyticExtractedReport'][_0xc001('0xe')](_0x3866c1,_0xe77b98);}function getHeaders(_0x1736fa){return _['map'](_0x1736fa,function(_0x40fbe5){return{'text':_0x40fbe5,'style':'tableHeader'};});}function getRows(_0x16d00e,_0x1103f9){return _['map'](_0x1103f9,function(_0x26aef6){return _(_0x26aef6)['pick'](_0x16d00e)[_0xc001('0xf')](function(_0x1c824c){return _0x1c824c?_[_0xc001('0x10')](_0x1c824c):'';})[_0xc001('0x11')]();});}function createTable(_0x2f6887,_0x2a18db){var _0x5c1b6d={'widths':_[_0xc001('0x12')](Array(_0x2f6887['length']),0x91),'heights':function(_0x2ddd72){return _0x2ddd72===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x4b4c43=getHeaders(_0x2f6887);_0x5c1b6d[_0xc001('0x13')][_0xc001('0x14')](_0x4b4c43);var _0x5b1a54=getRows(_0x2f6887,_0x2a18db);_0x5c1b6d[_0xc001('0x13')]=_0x5c1b6d[_0xc001('0x13')][_0xc001('0x15')](_0x5b1a54);return _0x5c1b6d;}function createTables(_0x4eac02){var _0xbc92ee=[];var _0x4e7491=_[_0xc001('0x16')](Object[_0xc001('0x17')](_0x4eac02[0x0]),0x5);_0x4e7491[_0xc001('0x18')](function(_0x3322aa){_0xbc92ee[_0xc001('0x14')](createTable(_0x3322aa,_0x4eac02));});return _0xbc92ee;}function getPDFDocDefinition(_0x38c0b9){var _0x318e7f=util[_0xc001('0x19')](_0xc001('0x1a'),NAME,EXTRACTED_REPORT[_0xc001('0x1b')],moment(EXTRACTED_REPORT['startDate'])['format'](FORMAT),moment(EXTRACTED_REPORT[_0xc001('0x1c')])[_0xc001('0x19')](FORMAT));var _0x51ad0b=[];for(var _0xb4dd92=0x0;_0xb4dd92<_0x38c0b9[_0xc001('0x1d')];_0xb4dd92++){var _0x5a0f5d=[];if(_0xb4dd92===0x0){_0x5a0f5d[_0xc001('0x14')]({'text':_0x318e7f,'style':_0xc001('0x1e')});}var _0x3bbfc2={'table':_0x38c0b9[_0xb4dd92]};if(_0xb4dd92>0x0){_0x3bbfc2[_0xc001('0x1f')]=_0xc001('0x20');_0x3bbfc2[_0xc001('0x21')]=[0x0,0x46,0x0,0x0];}_0x5a0f5d[_0xc001('0x14')](_0x3bbfc2);_0x51ad0b['push'](_0x5a0f5d);}return{'pageSize':'A4','pageOrientation':_0xc001('0x22'),'content':_0x51ad0b,'footer':function(_0x7c444d,_0xb3d7fe){return{'text':_0x7c444d[_0xc001('0x10')]()+_0xc001('0x23')+_0xb3d7fe,'style':_0xc001('0x24')};},'defaultStyle':{'font':_0xc001('0x25')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0xc001('0x26')},'footer':{'alignment':_0xc001('0x27'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x4326be){var _0x199de3=0x1388;var _0x4b9509;if(!_0x4326be[0x0][_0xc001('0x28')]){return analyticExtractedReport('Empty');}return db[_0xc001('0x29')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0xc001('0x2a')]})['then'](function(_0x2e3cfa){if(_0x2e3cfa){_0x4b9509=_0x2e3cfa;_0x199de3=_0x4b9509['splitSizePdf']||0x3e8;}})[_0xc001('0x2b')](function(){var _0x137370=[];var _0x14c1a3=0x0;if(_0x4b9509[_0xc001('0x2c')]){if(_0x4326be&&_0x4326be['length']){var _0x217a18=_[_0xc001('0x2d')](_0x4326be[0x0][_0xc001('0x28')]/_0x199de3);var _0x446853=Number[_0xc001('0x2e')](_0x4326be[0x0][_0xc001('0x28')]/_0x199de3)?_0x4326be[0x0][_0xc001('0x28')]%_0x199de3:0x0;_0x217a18['forEach'](function(_0x95f866){if(_0x95f866>0x0){_0x14c1a3+=_0x199de3;}_0x137370[_0xc001('0x14')](dbH['sequelize'][_0xc001('0x2f')](util[_0xc001('0x19')](_0xc001('0x30'),QUERY,_0x199de3,_0x14c1a3),{'type':dbH[_0xc001('0x31')]['QueryTypes'][_0xc001('0x32')]}));});if(_0x446853>0x0){_0x14c1a3+=_0x199de3;_0x137370[_0xc001('0x14')](dbH[_0xc001('0x31')]['query'](util[_0xc001('0x19')](_0xc001('0x30'),QUERY,_0x446853,_0x14c1a3),{'type':dbH[_0xc001('0x31')][_0xc001('0x33')][_0xc001('0x32')]}));}}}else{_0x137370[_0xc001('0x14')](dbH[_0xc001('0x31')]['query'](QUERY,{'type':dbH[_0xc001('0x31')]['QueryTypes']['SELECT']}));}var _0x28cc49=path[_0xc001('0x34')](PATH);var _0x3ffeda=path[_0xc001('0x35')](PATH,_0xc001('0x36'));var _0x48bb39=_0x4b9509['split']&&_0x137370['length']>0x1;var _0x1612c1=[];if(!fs[_0xc001('0x37')](path[_0xc001('0x38')](_0x28cc49,_0x3ffeda))&&_0x48bb39){fs[_0xc001('0x39')](path[_0xc001('0x38')](_0x28cc49,_0x3ffeda));}return BPromise[_0xc001('0x3a')](_0x137370,function(_0x1c6704){_0x1612c1[_0xc001('0x14')](_0x1c6704);})[_0xc001('0x2b')](function(){var _0x30fe5f=[];for(var _0x3a80c9=0x0;_0x3a80c9<_0x1612c1[_0xc001('0x1d')];_0x3a80c9+=0x1){var _0x16ad10=_0x1612c1[_0x3a80c9];var _0x331e9e=createTables(_[_0xc001('0x3b')](_0x16ad10));var _0x21d824;var _0x111406=getPDFDocDefinition(_0x331e9e);var _0x571510=getPDFPrinter();var _0x3c2f0d=_0x571510['createPdfKitDocument'](_0x111406);if(_0x48bb39){_0x21d824=path[_0xc001('0x38')](_0x28cc49,_0x3ffeda,util['format'](_0xc001('0x3c'),_0x3ffeda,_0x3a80c9,_0xc001('0x3d')));}else{_0x21d824=path[_0xc001('0x38')](_0x28cc49,util[_0xc001('0x19')]('%s.%s',_0x3ffeda,_0xc001('0x3d')));}_0x30fe5f[_0xc001('0x14')](writePDFDocument(_0x3c2f0d,_0x21d824));}return Promise[_0xc001('0x3e')](_0x30fe5f);})[_0xc001('0x2b')](function(){if(_0x48bb39){return new Promise(function(_0xb1aa32){zipdir(path[_0xc001('0x38')](_0x28cc49,_0x3ffeda),{'saveTo':path['join'](_0x28cc49,util[_0xc001('0x19')](_0xc001('0x3f'),_0x3ffeda,_0xc001('0x40')))},function(){rimraf(path['join'](_0x28cc49,_0x3ffeda),function(){});_0xb1aa32(_0xc001('0x41'));});});}})[_0xc001('0x2b')](function(){if(!_0x48bb39)return;rimraf(path[_0xc001('0x38')](_0x28cc49,_0x3ffeda),function(){});})[_0xc001('0x2b')](function(){logger[_0xc001('0x42')](util[_0xc001('0x19')](_0xc001('0x43'),EXTRACTED_REPORT_ID,_0xc001('0x44')));return analyticExtractedReport(_0xc001('0x45'),_0x48bb39?util[_0xc001('0x19')](_0xc001('0x3f'),_0x3ffeda,_0x48bb39?_0xc001('0x40'):_0xc001('0x3d')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util['format']('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xc001('0x44')));return db['AnalyticExtractedReport'][_0xc001('0x46')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xc001('0x2b')](function(_0x1aa02b){EXTRACTED_REPORT=_0x1aa02b;return dbH[_0xc001('0x31')][_0xc001('0x2f')](util['format'](_0xc001('0x47'),QUERY),{'type':dbH[_0xc001('0x31')][_0xc001('0x33')][_0xc001('0x32')]});})[_0xc001('0x2b')](extractReport)[_0xc001('0x48')](function(_0x165202){logger[_0xc001('0x42')](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xc001('0x44')),util['inspect'](_0x165202,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0xc001('0x49')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x3876fb=new PdfPrinter({'Arial':{'normal':__dirname+_0xc001('0x4a'),'bold':__dirname+_0xc001('0x4b'),'italics':__dirname+_0xc001('0x4c'),'bolditalics':__dirname+_0xc001('0x4d')}});return _0x3876fb;}function getPDFDocDefinitionFromHTML(_0x8c094c,_0x107887){var _0x92d51d=util[_0xc001('0x19')](_0xc001('0x4e'),_0x107887[_0xc001('0x4f')],_0x107887['interactionId']);var _0xc196da=moment()[_0xc001('0x19')]('YYYY-MM-DD')[_0xc001('0x10')]();var _0xae95a0=htmlToPdfmake(_0x8c094c,{'window':window,'tableAutoSize':!![]});return{'content':[_0xae95a0],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0xc001('0x50'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':'center','margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0xc001('0x51'),'style':_0xc001('0x1e')}];},'footer':function(_0x38da8a,_0x27687f){return[{'text':util[_0xc001('0x19')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x92d51d,_0x38da8a,_0x27687f,_0xc196da),'style':_0xc001('0x24')}];}};}function writePDFDocument(_0x2ca48e,_0x40af40){return new Promise(function(_0x45dd03,_0x396e76){var _0xf69770=_0x2ca48e[_0xc001('0x52')](fs[_0xc001('0x53')](_0x40af40));_0xf69770['on'](_0xc001('0x54'),function(){_0x45dd03('finish');});_0xf69770['on'](_0xc001('0x55'),function(_0x17e8f7){_0x396e76(_0x17e8f7);});_0x2ca48e['end']();});}exports[_0xc001('0x56')]=function(_0x13a474,_0x452a52){var _0x5dedbe=getPDFPrinter();var _0xe2d7f4=getPDFDocDefinitionFromHTML(_0x13a474,_0x452a52);var _0x2f664a=_0x5dedbe[_0xc001('0x57')](_0xe2d7f4);return writePDFDocument(_0x2f664a,_0x452a52[_0xc001('0x58')])[_0xc001('0x48')](function(_0x502bcc){throw _0x502bcc;});};
\ No newline at end of file
index 3e5dac6..ffc78eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2779=['.xlsx','existsSync','mkdirSync','join','each','xlsx','writeFileSync','binary','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','%s.%s','zip','inspect','Failed','finally','exit','util','path','lodash','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','split','splitSizeXlsx','then','sequelize','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','length','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename'];(function(_0xce13b1,_0x2b45ff){var _0x2e3ab5=function(_0x50f340){while(--_0x50f340){_0xce13b1['push'](_0xce13b1['shift']());}};_0x2e3ab5(++_0x2b45ff);}(_0x2779,0x143));var _0x9277=function(_0x36131e,_0x1ae548){_0x36131e=_0x36131e-0x0;var _0x22abe1=_0x2779[_0x36131e];return _0x22abe1;};'use strict';var util=require(_0x9277('0x0'));var path=require(_0x9277('0x1'));var _=require(_0x9277('0x2'));var fs=require('fs');var json2xls=require(_0x9277('0x3'));var BPromise=require(_0x9277('0x4'));var zipdir=require(_0x9277('0x5'));var rimraf=require(_0x9277('0x6'));var db=require(_0x9277('0x7'))['db'];var dbH=require(_0x9277('0x7'))['dbH'];var logger=require(_0x9277('0x8'))(_0x9277('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0x9277('0xa')][0x2]);var QUERY=process[_0x9277('0xa')][0x3];var PATH=process[_0x9277('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x25a588,_0x1592fd){var _0x326e30={'status':_0x25a588};var _0x4a1004={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1592fd){_0x326e30[_0x9277('0xb')]=_0x1592fd;}return db[_0x9277('0xc')]['update'](_0x326e30,_0x4a1004);}function main(){var _0x88fce1=0x1388;var _0x33b6c2;logger['info'](util['format'](_0x9277('0xd'),EXTRACTED_REPORT_ID,_0x9277('0xe')));return db[_0x9277('0xf')][_0x9277('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x9277('0x11'),'splitSizeXlsx']})['then'](function(_0x1d2af1){if(_0x1d2af1){_0x33b6c2=_0x1d2af1;_0x88fce1=_0x33b6c2[_0x9277('0x12')]||0x1388;}})[_0x9277('0x13')](function(){return dbH[_0x9277('0x14')][_0x9277('0x15')](util[_0x9277('0x16')](_0x9277('0x17'),QUERY),{'type':dbH['sequelize'][_0x9277('0x18')][_0x9277('0x19')]});})[_0x9277('0x13')](function(_0x5522ee){if(!_0x5522ee[0x0][_0x9277('0x1a')]){return analyticExtractedReport('Empty');}var _0x289e03=[];var _0x1b27c0=0x0;if(_0x33b6c2['split']){if(_0x5522ee&&_0x5522ee[_0x9277('0x1b')]){var _0x216264=_['range'](_0x5522ee[0x0][_0x9277('0x1a')]/_0x88fce1);var _0x2d90ee=Number[_0x9277('0x1c')](_0x5522ee[0x0]['num']/_0x88fce1)?_0x5522ee[0x0][_0x9277('0x1a')]%_0x88fce1:0x0;_0x216264[_0x9277('0x1d')](function(_0x3bf5b3){if(_0x3bf5b3>0x0){_0x1b27c0+=_0x88fce1;}_0x289e03[_0x9277('0x1e')](dbH[_0x9277('0x14')][_0x9277('0x15')](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x88fce1,_0x1b27c0),{'type':dbH[_0x9277('0x14')][_0x9277('0x18')][_0x9277('0x19')]}));});if(_0x2d90ee>0x0){_0x1b27c0+=_0x88fce1;_0x289e03['push'](dbH['sequelize'][_0x9277('0x15')](util['format'](_0x9277('0x1f'),QUERY,_0x2d90ee,_0x1b27c0),{'type':dbH[_0x9277('0x14')][_0x9277('0x18')][_0x9277('0x19')]}));}}}else{_0x289e03[_0x9277('0x1e')](dbH[_0x9277('0x14')][_0x9277('0x15')](QUERY,{'type':dbH[_0x9277('0x14')][_0x9277('0x18')][_0x9277('0x19')]}));}var _0x192237=path[_0x9277('0x20')](PATH);var _0x3b8a70=path[_0x9277('0x21')](PATH,_0x9277('0x22'));var _0x17b5cb=_0x33b6c2[_0x9277('0x11')]&&_0x289e03[_0x9277('0x1b')]>0x1;var _0x523c8d=[];if(!fs[_0x9277('0x23')](path['join'](_0x192237,_0x3b8a70))&&_0x17b5cb){fs[_0x9277('0x24')](path[_0x9277('0x25')](_0x192237,_0x3b8a70));}return BPromise[_0x9277('0x26')](_0x289e03,function(_0xb38e21){_0x523c8d['push'](_0xb38e21);})[_0x9277('0x13')](function(){for(var _0x58bedd=0x0;_0x58bedd<_0x523c8d[_0x9277('0x1b')];_0x58bedd+=0x1){var _0x31cd0e;var _0x1763ab=_0x523c8d[_0x58bedd];if(_0x17b5cb){_0x31cd0e=path[_0x9277('0x25')](_0x192237,_0x3b8a70,util[_0x9277('0x16')]('%s%d.%s',_0x3b8a70,_0x58bedd,_0x9277('0x27')));}else{_0x31cd0e=path[_0x9277('0x25')](_0x192237,util[_0x9277('0x16')]('%s.%s',_0x3b8a70,_0x9277('0x27')));}fs[_0x9277('0x28')](_0x31cd0e,json2xls(_0x1763ab),_0x9277('0x29'));}})[_0x9277('0x13')](function(){if(_0x17b5cb){return new Promise(function(_0x4694a8){zipdir(path[_0x9277('0x25')](_0x192237,_0x3b8a70),{'saveTo':path['join'](_0x192237,util[_0x9277('0x16')]('%s.%s',_0x3b8a70,'zip'))},function(_0x26c7bc,_0x483774){rimraf(path[_0x9277('0x25')](_0x192237,_0x3b8a70),function(){});_0x4694a8(_0x9277('0x2a'));});});}})['then'](function(){logger[_0x9277('0x2b')](util[_0x9277('0x16')](_0x9277('0x2c'),EXTRACTED_REPORT_ID,_0x9277('0xe')));return analyticExtractedReport('Completed',_0x17b5cb?util[_0x9277('0x16')](_0x9277('0x2d'),_0x3b8a70,_0x17b5cb?_0x9277('0x2e'):_0x9277('0x27')):null);});})['catch'](function(_0x45e9d1){logger[_0x9277('0x2b')](util[_0x9277('0x16')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x9277('0xe')),util[_0x9277('0x2f')](_0x45e9d1,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x9277('0x30'));})[_0x9277('0x31')](function(){process[_0x9277('0x32')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x609a=['finally','exit','util','path','lodash','json2xls','bluebird','zip-dir','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','find','split','splitSizeXlsx','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','length','range','isInteger','push','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','existsSync','join','mkdirSync','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','inspect','Failed'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x609a,0x1ec));var _0xa609=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x609a[_0x17d9e3];return _0x14192d;};'use strict';var util=require(_0xa609('0x0'));var path=require(_0xa609('0x1'));var _=require(_0xa609('0x2'));var fs=require('fs');var json2xls=require(_0xa609('0x3'));var BPromise=require(_0xa609('0x4'));var zipdir=require(_0xa609('0x5'));var rimraf=require('rimraf');var db=require(_0xa609('0x6'))['db'];var dbH=require('../../mysqldb')[_0xa609('0x7')];var logger=require(_0xa609('0x8'))(_0xa609('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0xa609('0xa')][0x2]);var QUERY=process[_0xa609('0xa')][0x3];var PATH=process[_0xa609('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x394cde,_0x269447){var _0x29f23a={'status':_0x394cde};var _0x3b5da3={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x269447){_0x29f23a[_0xa609('0xb')]=_0x269447;}return db[_0xa609('0xc')]['update'](_0x29f23a,_0x3b5da3);}function main(){var _0x381edb=0x1388;var _0x4be70b;logger[_0xa609('0xd')](util[_0xa609('0xe')](_0xa609('0xf'),EXTRACTED_REPORT_ID,_0xa609('0x10')));return db['Setting'][_0xa609('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xa609('0x12'),_0xa609('0x13')]})['then'](function(_0x2b8729){if(_0x2b8729){_0x4be70b=_0x2b8729;_0x381edb=_0x4be70b[_0xa609('0x13')]||0x1388;}})[_0xa609('0x14')](function(){return dbH[_0xa609('0x15')][_0xa609('0x16')](util[_0xa609('0xe')](_0xa609('0x17'),QUERY),{'type':dbH[_0xa609('0x15')][_0xa609('0x18')][_0xa609('0x19')]});})[_0xa609('0x14')](function(_0x4809bc){if(!_0x4809bc[0x0][_0xa609('0x1a')]){return analyticExtractedReport(_0xa609('0x1b'));}var _0x33db9a=[];var _0x21cb81=0x0;if(_0x4be70b[_0xa609('0x12')]){if(_0x4809bc&&_0x4809bc[_0xa609('0x1c')]){var _0x317fc3=_[_0xa609('0x1d')](_0x4809bc[0x0][_0xa609('0x1a')]/_0x381edb);var _0x1c9bed=Number[_0xa609('0x1e')](_0x4809bc[0x0][_0xa609('0x1a')]/_0x381edb)?_0x4809bc[0x0][_0xa609('0x1a')]%_0x381edb:0x0;_0x317fc3['forEach'](function(_0x48ab44){if(_0x48ab44>0x0){_0x21cb81+=_0x381edb;}_0x33db9a[_0xa609('0x1f')](dbH[_0xa609('0x15')][_0xa609('0x16')](util[_0xa609('0xe')](_0xa609('0x20'),QUERY,_0x381edb,_0x21cb81),{'type':dbH[_0xa609('0x15')]['QueryTypes'][_0xa609('0x19')]}));});if(_0x1c9bed>0x0){_0x21cb81+=_0x381edb;_0x33db9a[_0xa609('0x1f')](dbH['sequelize'][_0xa609('0x16')](util[_0xa609('0xe')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x1c9bed,_0x21cb81),{'type':dbH[_0xa609('0x15')][_0xa609('0x18')][_0xa609('0x19')]}));}}}else{_0x33db9a[_0xa609('0x1f')](dbH[_0xa609('0x15')][_0xa609('0x16')](QUERY,{'type':dbH[_0xa609('0x15')]['QueryTypes'][_0xa609('0x19')]}));}var _0x1fe2ab=path['dirname'](PATH);var _0x33673c=path[_0xa609('0x21')](PATH,'.xlsx');var _0x1b9f04=_0x4be70b[_0xa609('0x12')]&&_0x33db9a[_0xa609('0x1c')]>0x1;var _0x495b95=[];if(!fs[_0xa609('0x22')](path[_0xa609('0x23')](_0x1fe2ab,_0x33673c))&&_0x1b9f04){fs[_0xa609('0x24')](path[_0xa609('0x23')](_0x1fe2ab,_0x33673c));}return BPromise[_0xa609('0x25')](_0x33db9a,function(_0x1fffc5){_0x495b95[_0xa609('0x1f')](_0x1fffc5);})[_0xa609('0x14')](function(){for(var _0x5e0f8c=0x0;_0x5e0f8c<_0x495b95[_0xa609('0x1c')];_0x5e0f8c+=0x1){var _0x816a3b;var _0x58ad7e=_0x495b95[_0x5e0f8c];if(_0x1b9f04){_0x816a3b=path[_0xa609('0x23')](_0x1fe2ab,_0x33673c,util[_0xa609('0xe')](_0xa609('0x26'),_0x33673c,_0x5e0f8c,_0xa609('0x27')));}else{_0x816a3b=path[_0xa609('0x23')](_0x1fe2ab,util['format'](_0xa609('0x28'),_0x33673c,_0xa609('0x27')));}fs[_0xa609('0x29')](_0x816a3b,json2xls(_0x58ad7e),_0xa609('0x2a'));}})['then'](function(){if(_0x1b9f04){return new Promise(function(_0x3190cf){zipdir(path[_0xa609('0x23')](_0x1fe2ab,_0x33673c),{'saveTo':path['join'](_0x1fe2ab,util[_0xa609('0xe')]('%s.%s',_0x33673c,_0xa609('0x2b')))},function(_0x1980de,_0x4a1bff){rimraf(path[_0xa609('0x23')](_0x1fe2ab,_0x33673c),function(){});_0x3190cf('zip\x20finished');});});}})[_0xa609('0x14')](function(){logger['info'](util['format'](_0xa609('0x2c'),EXTRACTED_REPORT_ID,'XLSX'));return analyticExtractedReport('Completed',_0x1b9f04?util['format']('%s.%s',_0x33673c,_0x1b9f04?_0xa609('0x2b'):_0xa609('0x27')):null);});})['catch'](function(_0x3f2c78){logger[_0xa609('0xd')](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'XLSX'),util[_0xa609('0x2d')](_0x3f2c78,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xa609('0x2e'));})[_0xa609('0x2f')](function(){process[_0xa609('0x30')](EXIT_CODE);});}main();
\ No newline at end of file
index db7bc82..3c7b359 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b6a=['appType','custom','XCALLY-MOTION-ANSWER=1','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','last','concat','Hangup','transaction','destroy','bulkCreate','catch','error','rewrite','lodash','models','Interval','findAll','then','intervals','VoiceExtension','IntervalId','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback','hasOwnProperty','extensions','extension','find','push','type','Set','format','CDR(type)=%s','context','priority','VoiceExtensionId','inbound','outbound','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','createdAt','updatedAt','interval','*,*,*,*','tag','CDR(tag)=','length','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','indexOf','app','toLowerCase'];(function(_0xcb6d2b,_0x1a56ac){var _0x2c3687=function(_0x1b6ed0){while(--_0x1b6ed0){_0xcb6d2b['push'](_0xcb6d2b['shift']());}};_0x2c3687(++_0x1a56ac);}(_0x9b6a,0x99));var _0xa9b6=function(_0x762c59,_0x5e21c9){_0x762c59=_0x762c59-0x0;var _0x27c6f3=_0x9b6a[_0x762c59];return _0x27c6f3;};'use strict';var _=require(_0xa9b6('0x0'));var util=require('util');function rewrite(_0x4b06a1,_0x5ba76a){var _0x388b83=this;return _0x4b06a1[_0xa9b6('0x1')][_0xa9b6('0x2')][_0xa9b6('0x3')]({'raw':!![]})[_0xa9b6('0x4')](function(_0x332abd){_0x388b83[_0xa9b6('0x5')]=_0x332abd;return _0x4b06a1['models'][_0xa9b6('0x6')][_0xa9b6('0x3')]({'where':{'IntervalId':_0x5ba76a[_0xa9b6('0x7')]},'raw':!![]});})[_0xa9b6('0x4')](function(_0x46d0e5){return _0x4b06a1[_0xa9b6('0x1')][_0xa9b6('0x6')]['findAll']({'where':{'exten':{'$in':_[_0xa9b6('0x8')](_[_0xa9b6('0x9')](_0x46d0e5,_0xa9b6('0xa')))}},'order':[{'raw':_0xa9b6('0xb')}],'raw':!![]});})[_0xa9b6('0x4')](function(_0x16cc81){var _0x3e37fd=_[_0xa9b6('0xc')](_0x16cc81,{'priority':'1'});var _0xbbfe5f=_[_0xa9b6('0xc')](_0x16cc81,{'isApp':0x1});var _0x1a4673=_[_0xa9b6('0xd')](_0xbbfe5f,'exten');var _0x4ccee0=[_0xa9b6('0xe'),_0xa9b6('0xf')];var _0x402420=[];var _0x4739cb=[];for(var _0x2e7b40 in _0x1a4673){if(_0x1a4673[_0xa9b6('0x10')](_0x2e7b40)){_0x388b83['priority']=0x2;_0x388b83[_0xa9b6('0x11')]=[];_0x388b83[_0xa9b6('0x12')]=_[_0xa9b6('0x13')](_0x3e37fd,{'exten':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0xa')]});_0x388b83[_0xa9b6('0x11')][_0xa9b6('0x14')]({'type':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x15')],'app':_0xa9b6('0x16'),'appdata':util[_0xa9b6('0x17')](_0xa9b6('0x18'),_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x15')]),'context':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x19')],'exten':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0xa')],'priority':_0x388b83[_0xa9b6('0x1a')]++,'VoiceExtensionId':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x1b')]});if(_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x15')]===_0xa9b6('0x1c')){_0x388b83['extensions'][_0xa9b6('0x14')]({'type':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x15')],'app':'Set','appdata':'CDR(routeid)='+_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x1b')],'context':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x19')],'exten':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0xa')],'priority':_0x388b83[_0xa9b6('0x1a')]++,'VoiceExtensionId':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x1b')]});}else if(_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x15')]===_0xa9b6('0x1d')){if(_0x388b83[_0xa9b6('0x12')]){_0x388b83[_0xa9b6('0x11')][_0xa9b6('0x14')]({'type':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x15')],'app':_0xa9b6('0x16'),'appdata':'CDR(destination)='+(_0x388b83['extension'][_0xa9b6('0x1e')]?'${EXTEN:'+_0x388b83[_0xa9b6('0x12')][_0xa9b6('0x1e')]+'}':_0xa9b6('0x1f')),'context':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x19')],'exten':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0xa')],'priority':_0x388b83['priority']++,'VoiceExtensionId':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x1b')]});}_0x388b83[_0xa9b6('0x11')][_0xa9b6('0x14')]({'type':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x15')],'app':'Set','appdata':'CDR(routeid)='+_0x1a4673[_0x2e7b40][0x0]['VoiceExtensionId'],'context':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x19')],'exten':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0xa')],'priority':_0x388b83['priority']++,'VoiceExtensionId':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x1b')]});var _0x3af3a6=_0x388b83[_0xa9b6('0x1a')]++;_0x388b83['extensions']['push']({'type':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x15')],'app':_0xa9b6('0x20'),'appdata':_0xa9b6('0x21')+(_0x3af3a6+0x2)+_0xa9b6('0x22')+(_0x3af3a6+0x1)+')','context':_0x1a4673[_0x2e7b40][0x0]['context'],'exten':_0x1a4673[_0x2e7b40][0x0]['exten'],'priority':_0x3af3a6,'VoiceExtensionId':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x1b')]});if(_0x388b83[_0xa9b6('0x12')]){_0x388b83['extensions']['push']({'type':_0x1a4673[_0x2e7b40][0x0]['type'],'app':_0xa9b6('0x16'),'appdata':_0x388b83[_0xa9b6('0x12')][_0xa9b6('0x1e')]?'CDR(prefix)=${EXTEN:0:'+_0x388b83[_0xa9b6('0x12')][_0xa9b6('0x1e')]+'}':'CDR(prefix)=noprefix','context':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x19')],'exten':_0x1a4673[_0x2e7b40][0x0]['exten'],'priority':_0x388b83[_0xa9b6('0x1a')]++,'VoiceExtensionId':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x1b')]});}_0x388b83[_0xa9b6('0x11')][_0xa9b6('0x14')]({'type':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x15')],'app':'Set','appdata':_0xa9b6('0x23')+_0x1a4673[_0x2e7b40][0x0]['VoiceExtensionId'],'context':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x19')],'exten':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0xa')],'priority':_0x388b83[_0xa9b6('0x1a')]++,'VoiceExtensionId':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x1b')]});if(_0x388b83[_0xa9b6('0x12')]&&_0x388b83[_0xa9b6('0x12')]['hasOwnProperty'](_0xa9b6('0x24'))&&_0x388b83[_0xa9b6('0x12')][_0xa9b6('0x24')]!==_0xa9b6('0x25')){_0x388b83[_0xa9b6('0x11')][_0xa9b6('0x14')]({'type':_0x1a4673[_0x2e7b40][0x0]['type'],'app':_0xa9b6('0x16'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x1a4673[_0x2e7b40][0x0]['context'],'exten':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0xa')],'priority':_0x388b83[_0xa9b6('0x1a')]++,'VoiceExtensionId':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x1b')]});_0x388b83[_0xa9b6('0x11')][_0xa9b6('0x14')]({'type':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x15')],'app':_0xa9b6('0x16'),'appdata':_0xa9b6('0x26')+_0x388b83[_0xa9b6('0x12')][_0xa9b6('0x24')]||_0xa9b6('0x27'),'context':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x19')],'exten':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0xa')],'priority':_0x388b83[_0xa9b6('0x1a')]++,'VoiceExtensionId':_0x1a4673[_0x2e7b40][0x0]['VoiceExtensionId']});}}_0x388b83[_0xa9b6('0x11')][_0xa9b6('0x14')]({'type':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x15')],'app':_0xa9b6('0x16'),'appdata':_0xa9b6('0x28'),'context':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x19')],'exten':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0xa')],'priority':_0x388b83[_0xa9b6('0x1a')]++,'VoiceExtensionId':_0x1a4673[_0x2e7b40][0x0]['VoiceExtensionId']});_0x388b83[_0xa9b6('0x11')][_0xa9b6('0x14')]({'type':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x15')],'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x1a4673[_0x2e7b40][0x0]['context'],'exten':_0x1a4673[_0x2e7b40][0x0]['exten'],'priority':_0x388b83[_0xa9b6('0x1a')]++,'VoiceExtensionId':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x1b')]});_0x388b83['extensions'][_0xa9b6('0x14')]({'type':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x15')],'app':_0xa9b6('0x16'),'appdata':_0xa9b6('0x29'),'context':_0x1a4673[_0x2e7b40][0x0]['context'],'exten':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0xa')],'priority':_0x388b83[_0xa9b6('0x1a')]++,'VoiceExtensionId':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x1b')]});for(var _0x56be06=0x0,_0x2d89ba=0x0;_0x56be06<_0x1a4673[_0x2e7b40]['length'];_0x56be06+=0x1,_0x2d89ba=0x0){var _0x5939e3=_0x1a4673[_0x2e7b40][_0x56be06];if(_0x5939e3[_0xa9b6('0x15')]){_0x5939e3[_0xa9b6('0x15')]=_0x5939e3[_0xa9b6('0x15')]['toLowerCase']();}var _0xf306f3=[];var _0x845ad9=[];delete _0x5939e3['id'];delete _0x5939e3[_0xa9b6('0x2a')];delete _0x5939e3[_0xa9b6('0x2b')];var _0x136714=_0x5939e3[_0xa9b6('0x2c')]!==_0xa9b6('0x2d')?[_0x5939e3[_0xa9b6('0x2c')]]:_0x5939e3[_0xa9b6('0x7')]?_[_0xa9b6('0x9')](_[_0xa9b6('0xc')](_0x388b83['intervals'],{'IntervalId':_0x5939e3[_0xa9b6('0x7')]}),_0xa9b6('0x2c')):[];if(_0x5939e3[_0xa9b6('0x10')](_0xa9b6('0x2e'))){if(_0x5939e3[_0xa9b6('0x2e')]&&_0x5939e3[_0xa9b6('0x2e')]!=='--'){_0xf306f3['push']({'type':_0x5939e3[_0xa9b6('0x15')],'app':_0xa9b6('0x16'),'appdata':_0xa9b6('0x2f')+_0x5939e3[_0xa9b6('0x2e')],'context':_0x5939e3[_0xa9b6('0x19')],'exten':_0x5939e3['exten'],'priority':_0x136714[_0xa9b6('0x30')]+_0x388b83[_0xa9b6('0x1a')]+_0x2d89ba++,'VoiceExtensionId':_0x5939e3['VoiceExtensionId']});}}if(_0x5939e3['type']==='outbound'&&_0x5939e3['hasOwnProperty'](_0xa9b6('0x31'))){if(_0x5939e3['callerID']){_0xf306f3[_0xa9b6('0x14')]({'type':_0x5939e3[_0xa9b6('0x15')],'app':_0xa9b6('0x20'),'appdata':_0xa9b6('0x32')+_0x5939e3['callerID']+')','context':_0x5939e3[_0xa9b6('0x19')],'exten':_0x5939e3[_0xa9b6('0xa')],'priority':_0x136714[_0xa9b6('0x30')]+_0x388b83['priority']+_0x2d89ba++,'VoiceExtensionId':_0x5939e3[_0xa9b6('0x1b')]});}else{_0xf306f3[_0xa9b6('0x14')]({'type':_0x5939e3['type'],'app':'ExecIf','appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0x5939e3['context'],'exten':_0x5939e3[_0xa9b6('0xa')],'priority':_0x136714['length']+_0x388b83[_0xa9b6('0x1a')]+_0x2d89ba++,'VoiceExtensionId':_0x5939e3[_0xa9b6('0x1b')]});}}if(_0x5939e3[_0xa9b6('0x10')]('answer')){if(_0x4ccee0[_0xa9b6('0x33')](_0x5939e3[_0xa9b6('0x34')][_0xa9b6('0x35')]())>=0x0&&_0x5939e3[_0xa9b6('0x36')]!==_0xa9b6('0x37')){if(_0x5939e3['answer']){_0xf306f3['push']({'type':_0x5939e3[_0xa9b6('0x15')],'app':_0xa9b6('0x20'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x5939e3[_0xa9b6('0x19')],'exten':_0x5939e3['exten'],'priority':_0x136714[_0xa9b6('0x30')]+_0x388b83[_0xa9b6('0x1a')]+_0x2d89ba++,'VoiceExtensionId':_0x5939e3[_0xa9b6('0x1b')]});_0xf306f3[_0xa9b6('0x14')]({'type':_0x5939e3[_0xa9b6('0x15')],'app':_0xa9b6('0x16'),'appdata':_0xa9b6('0x38'),'context':_0x5939e3[_0xa9b6('0x19')],'exten':_0x5939e3[_0xa9b6('0xa')],'priority':_0x136714[_0xa9b6('0x30')]+_0x388b83[_0xa9b6('0x1a')]+_0x2d89ba++,'VoiceExtensionId':_0x5939e3[_0xa9b6('0x1b')]});}else{_0xf306f3[_0xa9b6('0x14')]({'type':_0x5939e3[_0xa9b6('0x15')],'app':_0xa9b6('0x20'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x5939e3[_0xa9b6('0x19')],'exten':_0x5939e3[_0xa9b6('0xa')],'priority':_0x136714[_0xa9b6('0x30')]+_0x388b83[_0xa9b6('0x1a')]+_0x2d89ba++,'VoiceExtensionId':_0x5939e3[_0xa9b6('0x1b')]});_0xf306f3[_0xa9b6('0x14')]({'type':_0x5939e3['type'],'app':_0xa9b6('0x16'),'appdata':_0xa9b6('0x39'),'context':_0x5939e3[_0xa9b6('0x19')],'exten':_0x5939e3[_0xa9b6('0xa')],'priority':_0x136714['length']+_0x388b83[_0xa9b6('0x1a')]+_0x2d89ba++,'VoiceExtensionId':_0x5939e3[_0xa9b6('0x1b')]});}}}for(var _0x57b31a=0x0;_0x57b31a<_0x136714[_0xa9b6('0x30')];_0x57b31a+=0x1){var _0x2a0c82=_0x388b83[_0xa9b6('0x1a')]+_0x136714[_0xa9b6('0x30')];var _0xf2b5ac=_0x57b31a===_0x136714['length']-0x1?_0x388b83['priority']+_0xf306f3[_0xa9b6('0x30')]+_0x845ad9[_0xa9b6('0x30')]+0x2:_0x388b83[_0xa9b6('0x1a')]+_0x57b31a+0x1;_0xf306f3['splice'](_0x57b31a,0x0,{'type':_0x5939e3[_0xa9b6('0x15')],'app':_0xa9b6('0x3a'),'appdata':_0x136714[_0x57b31a]+'?'+_0x5939e3['context']+_0xa9b6('0x3b')+_0x2a0c82+':'+_0x5939e3['context']+',${EXTEN},'+_0xf2b5ac,'exten':_0x5939e3[_0xa9b6('0xa')],'context':_0x5939e3[_0xa9b6('0x19')],'priority':_0x388b83[_0xa9b6('0x1a')]+_0x57b31a,'VoiceExtensionId':_0x1a4673[_0x2e7b40][0x0]['VoiceExtensionId']});}_0x5939e3[_0xa9b6('0x1a')]=_0xf306f3[_0xa9b6('0x30')]?_[_0xa9b6('0x3c')](_0xf306f3)['priority']+0x1:_0x388b83['priority'];_0x388b83[_0xa9b6('0x1a')]=(_0x845ad9[_0xa9b6('0x30')]?_[_0xa9b6('0x3c')](_0x845ad9)['priority']:_0x5939e3['priority'])+0x1;_0x388b83[_0xa9b6('0x11')]=_[_0xa9b6('0x3d')](_0x388b83[_0xa9b6('0x11')],_0xf306f3,[_0x5939e3],_0x845ad9);}_0x388b83[_0xa9b6('0x11')][_0xa9b6('0x14')]({'type':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x15')],'app':_0xa9b6('0x3e'),'exten':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0xa')],'context':_0x1a4673[_0x2e7b40][0x0][_0xa9b6('0x19')],'priority':_0x388b83[_0xa9b6('0x1a')],'VoiceExtensionId':_0x1a4673[_0x2e7b40][0x0]['VoiceExtensionId']});_0x402420[_0xa9b6('0x14')](_0x1a4673[_0x2e7b40][0x0]['VoiceExtensionId']);_0x4739cb=_['concat'](_0x4739cb,_0x388b83['extensions']);}}return _0x4b06a1[_0xa9b6('0x3f')](function(_0x34b480){return _0x4b06a1['models'][_0xa9b6('0x6')][_0xa9b6('0x40')]({'where':{'VoiceExtensionId':{'$in':_0x402420}},'transaction':_0x34b480})[_0xa9b6('0x4')](function(_0x2de07d){return _0x4b06a1['models'][_0xa9b6('0x6')][_0xa9b6('0x41')](_['sortBy'](_0x4739cb,_0xa9b6('0x1a')),{'transaction':_0x34b480});});});})[_0xa9b6('0x42')](function(_0xb4d27f){console[_0xa9b6('0x43')](_0xb4d27f);});}exports[_0xa9b6('0x44')]=rewrite;
\ No newline at end of file
+var _0xe53d=['intervals','VoiceExtension','uniq','map','CAST(priority\x20AS\x20UNSIGNED)','then','filter','groupBy','queue','playback','hasOwnProperty','priority','extensions','extension','exten','push','type','format','CDR(type)=%s','inbound','VoiceExtensionId','CDR(destination)=','${EXTEN:','cutdigits','${EXTEN}','context','Set','CDR(routeid)=','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','toLowerCase','createdAt','interval','*,*,*,*','IntervalId','tag','CDR(tag)=','length','outbound','callerID','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','answer','app','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','transaction','destroy','bulkCreate','error','rewrite','util','models','Interval','findAll'];(function(_0x492221,_0x9e2521){var _0x398bf9=function(_0x303c5b){while(--_0x303c5b){_0x492221['push'](_0x492221['shift']());}};_0x398bf9(++_0x9e2521);}(_0xe53d,0x1d8));var _0xde53=function(_0x4fbfd9,_0x3ab91a){_0x4fbfd9=_0x4fbfd9-0x0;var _0x31dc94=_0xe53d[_0x4fbfd9];return _0x31dc94;};'use strict';var _=require('lodash');var util=require(_0xde53('0x0'));function rewrite(_0xc4c0ae,_0x1a64b1){var _0x2f7de6=this;return _0xc4c0ae[_0xde53('0x1')][_0xde53('0x2')][_0xde53('0x3')]({'raw':!![]})['then'](function(_0x2531e8){_0x2f7de6[_0xde53('0x4')]=_0x2531e8;return _0xc4c0ae[_0xde53('0x1')][_0xde53('0x5')][_0xde53('0x3')]({'where':{'IntervalId':_0x1a64b1['IntervalId']},'raw':!![]});})['then'](function(_0x10de9c){return _0xc4c0ae[_0xde53('0x1')]['VoiceExtension'][_0xde53('0x3')]({'where':{'exten':{'$in':_[_0xde53('0x6')](_[_0xde53('0x7')](_0x10de9c,'exten'))}},'order':[{'raw':_0xde53('0x8')}],'raw':!![]});})[_0xde53('0x9')](function(_0x40f45e){var _0x51e7d0=_[_0xde53('0xa')](_0x40f45e,{'priority':'1'});var _0xcdfcfc=_[_0xde53('0xa')](_0x40f45e,{'isApp':0x1});var _0x5025a8=_[_0xde53('0xb')](_0xcdfcfc,'exten');var _0x25e22d=[_0xde53('0xc'),_0xde53('0xd')];var _0x17a008=[];var _0x159d65=[];for(var _0x2680b5 in _0x5025a8){if(_0x5025a8[_0xde53('0xe')](_0x2680b5)){_0x2f7de6[_0xde53('0xf')]=0x2;_0x2f7de6[_0xde53('0x10')]=[];_0x2f7de6[_0xde53('0x11')]=_['find'](_0x51e7d0,{'exten':_0x5025a8[_0x2680b5][0x0][_0xde53('0x12')]});_0x2f7de6[_0xde53('0x10')][_0xde53('0x13')]({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':'Set','appdata':util[_0xde53('0x15')](_0xde53('0x16'),_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')]),'context':_0x5025a8[_0x2680b5][0x0]['context'],'exten':_0x5025a8[_0x2680b5][0x0][_0xde53('0x12')],'priority':_0x2f7de6['priority']++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0]['VoiceExtensionId']});if(_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')]===_0xde53('0x17')){_0x2f7de6[_0xde53('0x10')][_0xde53('0x13')]({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':'Set','appdata':'CDR(routeid)='+_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')],'context':_0x5025a8[_0x2680b5][0x0]['context'],'exten':_0x5025a8[_0x2680b5][0x0]['exten'],'priority':_0x2f7de6[_0xde53('0xf')]++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]});}else if(_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')]==='outbound'){if(_0x2f7de6[_0xde53('0x11')]){_0x2f7de6[_0xde53('0x10')]['push']({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':'Set','appdata':_0xde53('0x19')+(_0x2f7de6[_0xde53('0x11')]['cutdigits']?_0xde53('0x1a')+_0x2f7de6[_0xde53('0x11')][_0xde53('0x1b')]+'}':_0xde53('0x1c')),'context':_0x5025a8[_0x2680b5][0x0][_0xde53('0x1d')],'exten':_0x5025a8[_0x2680b5][0x0]['exten'],'priority':_0x2f7de6[_0xde53('0xf')]++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]});}_0x2f7de6[_0xde53('0x10')][_0xde53('0x13')]({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':_0xde53('0x1e'),'appdata':_0xde53('0x1f')+_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')],'context':_0x5025a8[_0x2680b5][0x0]['context'],'exten':_0x5025a8[_0x2680b5][0x0][_0xde53('0x12')],'priority':_0x2f7de6['priority']++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]});var _0x59fc1a=_0x2f7de6['priority']++;_0x2f7de6[_0xde53('0x10')][_0xde53('0x13')]({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':'ExecIf','appdata':_0xde53('0x20')+(_0x59fc1a+0x2)+_0xde53('0x21')+(_0x59fc1a+0x1)+')','context':_0x5025a8[_0x2680b5][0x0][_0xde53('0x1d')],'exten':_0x5025a8[_0x2680b5][0x0][_0xde53('0x12')],'priority':_0x59fc1a,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]});if(_0x2f7de6['extension']){_0x2f7de6['extensions'][_0xde53('0x13')]({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':'Set','appdata':_0x2f7de6[_0xde53('0x11')][_0xde53('0x1b')]?_0xde53('0x22')+_0x2f7de6[_0xde53('0x11')][_0xde53('0x1b')]+'}':_0xde53('0x23'),'context':_0x5025a8[_0x2680b5][0x0][_0xde53('0x1d')],'exten':_0x5025a8[_0x2680b5][0x0][_0xde53('0x12')],'priority':_0x2f7de6['priority']++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]});}_0x2f7de6[_0xde53('0x10')][_0xde53('0x13')]({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':_0xde53('0x1e'),'appdata':'outboundrouteid='+_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')],'context':_0x5025a8[_0x2680b5][0x0]['context'],'exten':_0x5025a8[_0x2680b5][0x0]['exten'],'priority':_0x2f7de6[_0xde53('0xf')]++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]});if(_0x2f7de6[_0xde53('0x11')]&&_0x2f7de6[_0xde53('0x11')][_0xde53('0xe')](_0xde53('0x24'))&&_0x2f7de6[_0xde53('0x11')][_0xde53('0x24')]!==_0xde53('0x25')){_0x2f7de6[_0xde53('0x10')]['push']({'type':_0x5025a8[_0x2680b5][0x0]['type'],'app':_0xde53('0x1e'),'appdata':_0xde53('0x26'),'context':_0x5025a8[_0x2680b5][0x0][_0xde53('0x1d')],'exten':_0x5025a8[_0x2680b5][0x0][_0xde53('0x12')],'priority':_0x2f7de6[_0xde53('0xf')]++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0]['VoiceExtensionId']});_0x2f7de6[_0xde53('0x10')][_0xde53('0x13')]({'type':_0x5025a8[_0x2680b5][0x0]['type'],'app':_0xde53('0x1e'),'appdata':_0xde53('0x27')+_0x2f7de6[_0xde53('0x11')][_0xde53('0x24')]||_0xde53('0x28'),'context':_0x5025a8[_0x2680b5][0x0][_0xde53('0x1d')],'exten':_0x5025a8[_0x2680b5][0x0][_0xde53('0x12')],'priority':_0x2f7de6[_0xde53('0xf')]++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]});}}_0x2f7de6[_0xde53('0x10')][_0xde53('0x13')]({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':_0xde53('0x1e'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x5025a8[_0x2680b5][0x0]['context'],'exten':_0x5025a8[_0x2680b5][0x0]['exten'],'priority':_0x2f7de6[_0xde53('0xf')]++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]});_0x2f7de6['extensions'][_0xde53('0x13')]({'type':_0x5025a8[_0x2680b5][0x0]['type'],'app':_0xde53('0x1e'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x5025a8[_0x2680b5][0x0][_0xde53('0x1d')],'exten':_0x5025a8[_0x2680b5][0x0][_0xde53('0x12')],'priority':_0x2f7de6[_0xde53('0xf')]++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0]['VoiceExtensionId']});_0x2f7de6[_0xde53('0x10')]['push']({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':_0xde53('0x1e'),'appdata':'MONITOR_OPTIONS=ab','context':_0x5025a8[_0x2680b5][0x0][_0xde53('0x1d')],'exten':_0x5025a8[_0x2680b5][0x0]['exten'],'priority':_0x2f7de6['priority']++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0]['VoiceExtensionId']});for(var _0x3ea329=0x0,_0x5c11a5=0x0;_0x3ea329<_0x5025a8[_0x2680b5]['length'];_0x3ea329+=0x1,_0x5c11a5=0x0){var _0x4bc1b1=_0x5025a8[_0x2680b5][_0x3ea329];if(_0x4bc1b1[_0xde53('0x14')]){_0x4bc1b1[_0xde53('0x14')]=_0x4bc1b1[_0xde53('0x14')][_0xde53('0x29')]();}var _0x2515db=[];var _0x2ad48e=[];delete _0x4bc1b1['id'];delete _0x4bc1b1[_0xde53('0x2a')];delete _0x4bc1b1['updatedAt'];var _0x9bdc5d=_0x4bc1b1[_0xde53('0x2b')]!==_0xde53('0x2c')?[_0x4bc1b1[_0xde53('0x2b')]]:_0x4bc1b1[_0xde53('0x2d')]?_[_0xde53('0x7')](_[_0xde53('0xa')](_0x2f7de6[_0xde53('0x4')],{'IntervalId':_0x4bc1b1['IntervalId']}),_0xde53('0x2b')):[];if(_0x4bc1b1[_0xde53('0xe')](_0xde53('0x2e'))){if(_0x4bc1b1[_0xde53('0x2e')]&&_0x4bc1b1[_0xde53('0x2e')]!=='--'){_0x2515db['push']({'type':_0x4bc1b1[_0xde53('0x14')],'app':'Set','appdata':_0xde53('0x2f')+_0x4bc1b1[_0xde53('0x2e')],'context':_0x4bc1b1[_0xde53('0x1d')],'exten':_0x4bc1b1[_0xde53('0x12')],'priority':_0x9bdc5d[_0xde53('0x30')]+_0x2f7de6[_0xde53('0xf')]+_0x5c11a5++,'VoiceExtensionId':_0x4bc1b1[_0xde53('0x18')]});}}if(_0x4bc1b1[_0xde53('0x14')]===_0xde53('0x31')&&_0x4bc1b1[_0xde53('0xe')](_0xde53('0x32'))){if(_0x4bc1b1[_0xde53('0x32')]){_0x2515db['push']({'type':_0x4bc1b1[_0xde53('0x14')],'app':_0xde53('0x33'),'appdata':_0xde53('0x34')+_0x4bc1b1[_0xde53('0x32')]+')','context':_0x4bc1b1[_0xde53('0x1d')],'exten':_0x4bc1b1[_0xde53('0x12')],'priority':_0x9bdc5d[_0xde53('0x30')]+_0x2f7de6[_0xde53('0xf')]+_0x5c11a5++,'VoiceExtensionId':_0x4bc1b1[_0xde53('0x18')]});}else{_0x2515db[_0xde53('0x13')]({'type':_0x4bc1b1['type'],'app':_0xde53('0x33'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0x4bc1b1[_0xde53('0x1d')],'exten':_0x4bc1b1[_0xde53('0x12')],'priority':_0x9bdc5d[_0xde53('0x30')]+_0x2f7de6[_0xde53('0xf')]+_0x5c11a5++,'VoiceExtensionId':_0x4bc1b1[_0xde53('0x18')]});}}if(_0x4bc1b1[_0xde53('0xe')](_0xde53('0x35'))){if(_0x25e22d['indexOf'](_0x4bc1b1[_0xde53('0x36')][_0xde53('0x29')]())>=0x0&&_0x4bc1b1['appType']!=='custom'){if(_0x4bc1b1[_0xde53('0x35')]){_0x2515db['push']({'type':_0x4bc1b1[_0xde53('0x14')],'app':_0xde53('0x33'),'appdata':_0xde53('0x37'),'context':_0x4bc1b1['context'],'exten':_0x4bc1b1['exten'],'priority':_0x9bdc5d[_0xde53('0x30')]+_0x2f7de6[_0xde53('0xf')]+_0x5c11a5++,'VoiceExtensionId':_0x4bc1b1[_0xde53('0x18')]});_0x2515db['push']({'type':_0x4bc1b1['type'],'app':'Set','appdata':'XCALLY-MOTION-ANSWER=1','context':_0x4bc1b1[_0xde53('0x1d')],'exten':_0x4bc1b1['exten'],'priority':_0x9bdc5d[_0xde53('0x30')]+_0x2f7de6['priority']+_0x5c11a5++,'VoiceExtensionId':_0x4bc1b1['VoiceExtensionId']});}else{_0x2515db[_0xde53('0x13')]({'type':_0x4bc1b1[_0xde53('0x14')],'app':_0xde53('0x33'),'appdata':_0xde53('0x38'),'context':_0x4bc1b1[_0xde53('0x1d')],'exten':_0x4bc1b1[_0xde53('0x12')],'priority':_0x9bdc5d[_0xde53('0x30')]+_0x2f7de6[_0xde53('0xf')]+_0x5c11a5++,'VoiceExtensionId':_0x4bc1b1[_0xde53('0x18')]});_0x2515db['push']({'type':_0x4bc1b1[_0xde53('0x14')],'app':'Set','appdata':_0xde53('0x39'),'context':_0x4bc1b1[_0xde53('0x1d')],'exten':_0x4bc1b1[_0xde53('0x12')],'priority':_0x9bdc5d[_0xde53('0x30')]+_0x2f7de6[_0xde53('0xf')]+_0x5c11a5++,'VoiceExtensionId':_0x4bc1b1[_0xde53('0x18')]});}}}for(var _0x59e2b3=0x0;_0x59e2b3<_0x9bdc5d[_0xde53('0x30')];_0x59e2b3+=0x1){var _0x57869f=_0x2f7de6['priority']+_0x9bdc5d[_0xde53('0x30')];var _0x43e8de=_0x59e2b3===_0x9bdc5d[_0xde53('0x30')]-0x1?_0x2f7de6[_0xde53('0xf')]+_0x2515db[_0xde53('0x30')]+_0x2ad48e[_0xde53('0x30')]+0x2:_0x2f7de6[_0xde53('0xf')]+_0x59e2b3+0x1;_0x2515db[_0xde53('0x3a')](_0x59e2b3,0x0,{'type':_0x4bc1b1[_0xde53('0x14')],'app':_0xde53('0x3b'),'appdata':_0x9bdc5d[_0x59e2b3]+'?'+_0x4bc1b1[_0xde53('0x1d')]+_0xde53('0x3c')+_0x57869f+':'+_0x4bc1b1[_0xde53('0x1d')]+_0xde53('0x3c')+_0x43e8de,'exten':_0x4bc1b1[_0xde53('0x12')],'context':_0x4bc1b1[_0xde53('0x1d')],'priority':_0x2f7de6[_0xde53('0xf')]+_0x59e2b3,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]});}_0x4bc1b1['priority']=_0x2515db['length']?_[_0xde53('0x3d')](_0x2515db)[_0xde53('0xf')]+0x1:_0x2f7de6[_0xde53('0xf')];_0x2f7de6[_0xde53('0xf')]=(_0x2ad48e[_0xde53('0x30')]?_[_0xde53('0x3d')](_0x2ad48e)['priority']:_0x4bc1b1[_0xde53('0xf')])+0x1;_0x2f7de6[_0xde53('0x10')]=_[_0xde53('0x3e')](_0x2f7de6['extensions'],_0x2515db,[_0x4bc1b1],_0x2ad48e);}_0x2f7de6[_0xde53('0x10')]['push']({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':'Hangup','exten':_0x5025a8[_0x2680b5][0x0][_0xde53('0x12')],'context':_0x5025a8[_0x2680b5][0x0]['context'],'priority':_0x2f7de6[_0xde53('0xf')],'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0]['VoiceExtensionId']});_0x17a008[_0xde53('0x13')](_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]);_0x159d65=_['concat'](_0x159d65,_0x2f7de6['extensions']);}}return _0xc4c0ae[_0xde53('0x3f')](function(_0x447def){return _0xc4c0ae[_0xde53('0x1')][_0xde53('0x5')][_0xde53('0x40')]({'where':{'VoiceExtensionId':{'$in':_0x17a008}},'transaction':_0x447def})[_0xde53('0x9')](function(_0x4ebbcd){return _0xc4c0ae['models'][_0xde53('0x5')][_0xde53('0x41')](_['sortBy'](_0x159d65,_0xde53('0xf')),{'transaction':_0x447def});});});})['catch'](function(_0x42a700){console[_0xde53('0x42')](_0x42a700);});}exports[_0xde53('0x43')]=rewrite;
\ No newline at end of file
index a1aee50..27efcab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa39e=['message','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','birthDate','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','length','find','duplicate','Duplicate\x20Contact','create','keys','then','push','Error\x20while\x20creating\x20contact:\x20','stringify','checkHopper','inspect','insert','cm_hopper','fromQuery','scheduledAt','ContactId','createdAt','updatedAt','select','field','NOW()','toString','from','cm_contacts','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','\x20=\x20?','into','str','phone\x20NOT\x20IN\x20(?)','calleridnum','cm_hopper_final','id\x20IN\x20?','cm_hopper_black','VoiceQueue','findAll','outbound','Lists','dialCheckDuplicateType','always','sequelize','query','VoiceQueueId','catch','CmList','BlackLists','get','all','Campaign','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','resume','resolve','contact:csv_','exit','SIGINT','info','CmContact','parse','pause','CSV\x20parsed\x20correctly!','Error\x20executing\x20contact\x20csv\x20import:','bluebird','squel','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','defaults','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','Missing\x20filepath\x20parameter!','null','Missing\x20binding\x20parameters!','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','isNil','errors','map'];(function(_0xe38764,_0x28ce79){var _0x5979cf=function(_0x1fedef){while(--_0x1fedef){_0xe38764['push'](_0xe38764['shift']());}};_0x5979cf(++_0x28ce79);}(_0xa39e,0x12f));var _0xea39=function(_0x3d78ce,_0x83c8a9){_0x3d78ce=_0x3d78ce-0x0;var _0x150489=_0xa39e[_0x3d78ce];return _0x150489;};'use strict';var BPromise=require(_0xea39('0x0'));var util=require('util');var _=require('lodash');var fs=require('fs');var squel=require(_0xea39('0x1'));var Papa=require('papaparse');var Redis=require('ioredis');var db=require(_0xea39('0x2'))['db'];var config=require(_0xea39('0x3'));var logger=require(_0xea39('0x4'))(_0xea39('0x5'));config[_0xea39('0x6')]=_[_0xea39('0x7')](config[_0xea39('0x6')],{'host':_0xea39('0x8'),'port':0x18eb});var socket=require(_0xea39('0x9'))(new Redis(config[_0xea39('0x6')]));require(_0xea39('0xa'))[_0xea39('0xb')](socket);try{if(!process[_0xea39('0xc')][0x2]||process[_0xea39('0xc')][0x2]===_0xea39('0xd')||process['argv'][0x2]==='null'){throw new Error(_0xea39('0xe'));}var FILEPATH=process[_0xea39('0xc')][0x2];if(!process[_0xea39('0xc')][0x3]||process[_0xea39('0xc')][0x3]==='undefined'||process[_0xea39('0xc')][0x3]==='null'||!process[_0xea39('0xc')][0x4]||process[_0xea39('0xc')][0x4]===_0xea39('0xd')||process[_0xea39('0xc')][0x4]===_0xea39('0xf')){throw new Error(_0xea39('0x10'));}var FIELDS=_['zipObject'](process[_0xea39('0xc')][0x3]['split'](','),process['argv'][0x4][_0xea39('0x11')](','));if(!process[_0xea39('0xc')][0x5]||process['argv'][0x5]===_0xea39('0xd')||process['argv'][0x5]===_0xea39('0xf')){throw new Error(_0xea39('0x12'));}var LISTID=process[_0xea39('0xc')][0x5];var COMPANYID=process[_0xea39('0xc')][0x6]&&process[_0xea39('0xc')][0x6]!==_0xea39('0xd')&&process[_0xea39('0xc')][0x6]!=='null'?process['argv'][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0xea39('0xc')][0x7]!==_0xea39('0xd')&&process[_0xea39('0xc')][0x7]!==_0xea39('0xf')?process[_0xea39('0xc')][0x7]:null;if(!process[_0xea39('0xc')][0x8]||process[_0xea39('0xc')][0x8]===_0xea39('0xd')||process['argv'][0x8]===_0xea39('0xf')){throw new Error(_0xea39('0x13'));}var SOCKET_TIMESTAMP=process[_0xea39('0xc')][0x8];}catch(_0x21fc4a){logger[_0xea39('0x14')](_0x21fc4a);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(_0x5a21dd,_0x5596f5,_0x326938,_0x4bd603){var _0x4d9711={'message':_0x5596f5};_0x4d9711[_0x5a21dd]=!![];if(_0x326938){_0x4d9711[_0xea39('0x15')]=_0x326938;}if(_0x4bd603){_0x4d9711[_0xea39('0x16')]=_0x4bd603;}return _0x4d9711;}function isEmail(_0x317acf){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))*$/[_0xea39('0x17')](_0x317acf);}function checkRow(_0x3dd410,_0x54952b,_0x205aec){return new BPromise(function(_0xb15da4,_0x3f335e){if(_[_0xea39('0x18')](_0x3dd410)){return _0x3f335e(handleCheckRowError('error','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!',null,_0x205aec));}if(_0x3dd410[_0xea39('0x19')]&&_0x3dd410['errors']['length']){var _0x345f55=_[_0xea39('0x1a')](_0x3dd410[_0xea39('0x19')],_0xea39('0x1b'))['join'](';');return _0x3f335e(handleCheckRowError(_0xea39('0x14'),_0x345f55,null,_0x205aec));}var _0x1be9be={};for(var _0x231e43 in FIELDS){if(FIELDS[_0xea39('0x1c')](_0x231e43)&&FIELDS[_0x231e43]){_0x1be9be[_0x231e43]=_0x3dd410[_0xea39('0x1d')][0x0][FIELDS[_0x231e43]]||_0x3dd410['data'][0x0]['\ufeff'+FIELDS[_0x231e43]];}}if(!_0x1be9be[_0xea39('0x1e')]){return _0x3f335e(handleCheckRowError(_0xea39('0x14'),_0xea39('0x1f'),null,_0x205aec));}if(!_0x1be9be[_0xea39('0x20')]){return _0x3f335e(handleCheckRowError(_0xea39('0x14'),'phone\x20not\x20specified!',null,_0x205aec));}if(_0x1be9be[_0xea39('0x21')]){var _0x58cf05=moment(_0x1be9be[_0xea39('0x21')],_0xea39('0x22'));if(!_0x58cf05[_0xea39('0x23')]()){return _0x3f335e(handleCheckRowError(_0xea39('0x14'),_0xea39('0x24'),null,_0x205aec));}}if(_0x1be9be[_0xea39('0x25')]){if(!isEmail(_0x1be9be[_0xea39('0x25')])){return _0x3f335e(handleCheckRowError(_0xea39('0x14'),_0xea39('0x26'),null,_0x205aec));}}_0x1be9be[_0xea39('0x27')]=LISTID;_0x1be9be[_0xea39('0x28')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xea39('0x29')]&&_0x54952b){var _0xc90c8a={};for(var _0x2acaaf=0x0,_0x418beb=DUPLICATES[_0xea39('0x29')];_0x2acaaf<_0x418beb;_0x2acaaf+=0x1){_0xc90c8a[DUPLICATES[_0x2acaaf]]=_0x1be9be[DUPLICATES[_0x2acaaf]];}var _0x698b83=_[_0xea39('0x2a')](_0x54952b,_0xc90c8a);if(_0x698b83){return _0x3f335e(handleCheckRowError(_0xea39('0x2b'),_0xea39('0x2c'),_0x698b83,_0x205aec));}}return db['CmContact'][_0xea39('0x2d')](_0x1be9be,{'raw':!![],'hooks':![],'fields':_[_0xea39('0x2e')](_0x1be9be)})[_0xea39('0x2f')](function(_0x351597){if(DUPLICATES&&DUPLICATES[_0xea39('0x29')]&&_0x54952b){_0x54952b[_0xea39('0x30')](_['pick'](_0x1be9be,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x351597['id'];return _0xb15da4();})['catch'](function(_0x442e8a){return _0x3f335e(handleCheckRowError(_0xea39('0x14'),_0xea39('0x31')+(_0x442e8a[_0xea39('0x1b')]||JSON[_0xea39('0x32')](_0x442e8a)),null,_0x205aec));});});}function checkHopper(){function _0x840e52(){return function(_0xfb4ba7){logger[_0xea39('0x14')]('cmContact',_0xea39('0x33'),util[_0xea39('0x34')](_0xfb4ba7,{'showHidden':![],'depth':null}));};}var _0x52c7ef=function(_0x1f73d7,_0x20877e){var _0x192f90=squel[_0xea39('0x35')]()['into'](_0xea39('0x36'))[_0xea39('0x37')](['phone',_0xea39('0x38'),_0xea39('0x39'),_0xea39('0x27'),_0x20877e,_0xea39('0x3a'),_0xea39('0x3b')],squel[_0xea39('0x3c')]()[_0xea39('0x3d')](_0xea39('0x20'),_0xea39('0x20'))['field'](_0xea39('0x3e'),_0xea39('0x38'))[_0xea39('0x3d')]('id',_0xea39('0x39'))[_0xea39('0x3d')](LISTID[_0xea39('0x3f')](),_0xea39('0x27'))[_0xea39('0x3d')](_0x1f73d7['id']['toString'](),_0x20877e)[_0xea39('0x3d')](_0xea39('0x3e'),_0xea39('0x3a'))['field'](_0xea39('0x3e'),_0xea39('0x3b'))[_0xea39('0x40')](_0xea39('0x41'))[_0xea39('0x42')](_0xea39('0x43'))[_0xea39('0x42')](_0xea39('0x44'),LISTID[_0xea39('0x3f')]())[_0xea39('0x42')](_0xea39('0x45'))[_0xea39('0x42')]('phone\x20NOT\x20IN\x20(?)',squel[_0xea39('0x3c')]()[_0xea39('0x3d')]('phone')[_0xea39('0x40')](_0xea39('0x36'))['where'](_0x20877e+_0xea39('0x46'),_0x1f73d7['id'][_0xea39('0x3f')]())))[_0xea39('0x3f')]();return _0x192f90;};var _0x2b7c7e=function(_0x4845f9,_0x1a75a8){var _0x10b70e=squel[_0xea39('0x35')]()[_0xea39('0x47')](_0xea39('0x36'))[_0xea39('0x37')]([_0xea39('0x20'),_0xea39('0x38'),_0xea39('0x39'),_0xea39('0x27'),_0x1a75a8,_0xea39('0x3a'),_0xea39('0x3b')],squel[_0xea39('0x3c')]()[_0xea39('0x3d')]('phone',_0xea39('0x20'))[_0xea39('0x3d')](_0xea39('0x3e'),_0xea39('0x38'))[_0xea39('0x3d')]('id',_0xea39('0x39'))[_0xea39('0x3d')](LISTID['toString'](),'ListId')['field'](_0x4845f9['id'][_0xea39('0x3f')](),_0x1a75a8)[_0xea39('0x3d')]('NOW()','createdAt')['field'](_0xea39('0x3e'),_0xea39('0x3b'))['from'](_0xea39('0x41'))[_0xea39('0x42')](_0xea39('0x43'))[_0xea39('0x42')](_0xea39('0x44'),LISTID[_0xea39('0x3f')]())[_0xea39('0x42')]('id\x20IN\x20?',squel[_0xea39('0x48')](hopperContacts))[_0xea39('0x42')](_0xea39('0x45'))[_0xea39('0x42')](_0xea39('0x49'),squel[_0xea39('0x3c')]()[_0xea39('0x3d')](_0xea39('0x4a'))[_0xea39('0x40')](_0xea39('0x4b'))[_0xea39('0x42')](_0x1a75a8+_0xea39('0x46'),_0x4845f9['id'][_0xea39('0x3f')]()))[_0xea39('0x42')](_0xea39('0x49'),squel[_0xea39('0x3c')]()[_0xea39('0x3d')](_0xea39('0x20'))[_0xea39('0x40')](_0xea39('0x36'))[_0xea39('0x42')](_0x1a75a8+_0xea39('0x46'),_0x4845f9['id'][_0xea39('0x3f')]())))[_0xea39('0x3f')]();return _0x10b70e;};function _0x4c63dc(_0x742e12,_0x25f10f){var _0x183415=squel['insert']()[_0xea39('0x47')](_0xea39('0x36'))[_0xea39('0x37')]([_0xea39('0x20'),'scheduledAt',_0xea39('0x39'),'ListId',_0x25f10f,_0xea39('0x3a'),_0xea39('0x3b')],squel[_0xea39('0x3c')]()['field'](_0xea39('0x20'),'phone')[_0xea39('0x3d')]('NOW()',_0xea39('0x38'))[_0xea39('0x3d')]('id',_0xea39('0x39'))['field'](LISTID[_0xea39('0x3f')](),_0xea39('0x27'))[_0xea39('0x3d')](_0x742e12['id'][_0xea39('0x3f')](),_0x25f10f)[_0xea39('0x3d')](_0xea39('0x3e'),_0xea39('0x3a'))[_0xea39('0x3d')]('NOW()',_0xea39('0x3b'))['from'](_0xea39('0x41'))[_0xea39('0x42')]('deletedAt\x20IS\x20NULL')[_0xea39('0x42')](_0xea39('0x44'),LISTID[_0xea39('0x3f')]())[_0xea39('0x42')](_0xea39('0x4c'),squel[_0xea39('0x48')](hopperContacts))[_0xea39('0x42')](_0xea39('0x45')))[_0xea39('0x3f')]();return _0x183415;}function _0xf2f060(_0x4e0e2a,_0x34f00a){var _0x449649=squel[_0xea39('0x35')]()['into'](_0xea39('0x4d'))[_0xea39('0x37')]([_0xea39('0x20'),_0xea39('0x39'),_0xea39('0x27'),_0x34f00a,'createdAt',_0xea39('0x3b')],squel[_0xea39('0x3c')]()[_0xea39('0x3d')](_0xea39('0x20'),_0xea39('0x20'))['field']('id',_0xea39('0x39'))[_0xea39('0x3d')](LISTID[_0xea39('0x3f')](),_0xea39('0x27'))[_0xea39('0x3d')](_0x4e0e2a['id'][_0xea39('0x3f')](),_0x34f00a)['field'](_0xea39('0x3e'),_0xea39('0x3a'))[_0xea39('0x3d')](_0xea39('0x3e'),_0xea39('0x3b'))[_0xea39('0x40')](_0xea39('0x41'))[_0xea39('0x42')](_0xea39('0x43'))[_0xea39('0x42')](_0xea39('0x44'),LISTID[_0xea39('0x3f')]())[_0xea39('0x42')](_0xea39('0x4c'),squel[_0xea39('0x48')](hopperContacts))[_0xea39('0x42')](_0xea39('0x45')))[_0xea39('0x3f')]();return _0x449649;}return db[_0xea39('0x4e')][_0xea39('0x4f')]({'where':{'type':_0xea39('0x50')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':_0xea39('0x51'),'where':{'id':LISTID}}]})[_0xea39('0x2f')](function(_0x20c3ef){var _0xb1dd9d=[];if(_0x20c3ef){var _0x1b8d6c;for(var _0x2b1140=0x0,_0x482d57;_0x2b1140<_0x20c3ef[_0xea39('0x29')];_0x2b1140+=0x1){_0x482d57=_0x20c3ef[_0x2b1140]['get']({'plain':!![]});switch(_0x482d57[_0xea39('0x52')]){case _0xea39('0x53'):_0xb1dd9d[_0xea39('0x30')](db[_0xea39('0x54')][_0xea39('0x55')](_0x2b7c7e(_0x482d57,_0xea39('0x56')))['then'](function(){})['catch'](_0x840e52()));break;case'onlyIfOpen':_0xb1dd9d[_0xea39('0x30')](db['sequelize'][_0xea39('0x55')](_0x52c7ef(_0x482d57,_0xea39('0x56')))[_0xea39('0x2f')](function(){})[_0xea39('0x57')](_0x840e52()));break;default:_0xb1dd9d['push'](db[_0xea39('0x54')][_0xea39('0x55')](_0x4c63dc(_0x482d57,'VoiceQueueId'))[_0xea39('0x2f')](function(){})[_0xea39('0x57')](_0x840e52()));}}}return _0xb1dd9d;})['all']()[_0xea39('0x2f')](function(){return db[_0xea39('0x4e')][_0xea39('0x4f')]({'where':{'type':_0xea39('0x50')},'attributes':['id'],'include':[{'model':db[_0xea39('0x58')],'as':_0xea39('0x59'),'where':{'id':LISTID}}]})[_0xea39('0x2f')](function(_0x5d7fa4){var _0x22915a=[];if(_0x5d7fa4){var _0x55d290;for(var _0x3db0fe=0x0,_0x19b30e;_0x3db0fe<_0x5d7fa4['length'];_0x3db0fe+=0x1){_0x19b30e=_0x5d7fa4[_0x3db0fe][_0xea39('0x5a')]({'plain':!![]});_0x22915a[_0xea39('0x30')](db[_0xea39('0x54')]['query'](_0xf2f060(_0x19b30e,_0xea39('0x56')))[_0xea39('0x2f')](function(){})['catch'](_0x840e52()));}}return _0x22915a;})[_0xea39('0x5b')]();})[_0xea39('0x2f')](function(){return db[_0xea39('0x5c')][_0xea39('0x4f')]({'attributes':['id',_0xea39('0x52')],'include':[{'model':db[_0xea39('0x58')],'as':_0xea39('0x51'),'where':{'id':LISTID}}]})['then'](function(_0x2492f0){var _0x3bc3ce=[];if(_0x2492f0){for(var _0x3a600f=0x0,_0x435013;_0x3a600f<_0x2492f0[_0xea39('0x29')];_0x3a600f+=0x1){_0x435013=_0x2492f0[_0x3a600f]['get']({'plain':!![]});switch(_0x435013[_0xea39('0x52')]){case _0xea39('0x53'):_0x3bc3ce[_0xea39('0x30')](db['sequelize']['query'](_0x2b7c7e(_0x435013,_0xea39('0x5d')))['then'](function(){})[_0xea39('0x57')](_0x840e52()));break;case'onlyIfOpen':_0x3bc3ce[_0xea39('0x30')](db[_0xea39('0x54')]['query'](_0x52c7ef(_0x435013,'CampaignId'))[_0xea39('0x2f')](function(){})[_0xea39('0x57')](_0x840e52()));break;default:_0x3bc3ce[_0xea39('0x30')](db[_0xea39('0x54')][_0xea39('0x55')](_0x4c63dc(_0x435013,_0xea39('0x5d')))['then'](function(){})[_0xea39('0x57')](_0x840e52()));}}}return _0x3bc3ce;})['all']();})['then'](function(){return db[_0xea39('0x5c')][_0xea39('0x4f')]({'attributes':['id'],'include':[{'model':db['CmList'],'as':'BlackLists','where':{'id':LISTID}}]})[_0xea39('0x2f')](function(_0x3ddddd){var _0x1498b7=[];if(_0x3ddddd){for(var _0x5b47d4=0x0,_0x2b8874;_0x5b47d4<_0x3ddddd['length'];_0x5b47d4+=0x1){_0x2b8874=_0x3ddddd[_0x5b47d4][_0xea39('0x5a')]({'plain':!![]});_0x1498b7[_0xea39('0x30')](db['sequelize'][_0xea39('0x55')](_0xf2f060(_0x2b8874,_0xea39('0x5d')))[_0xea39('0x2f')](function(){})['catch'](_0x840e52()));}}return _0x1498b7;})[_0xea39('0x5b')]();})[_0xea39('0x57')](function(_0x12d164){logger[_0xea39('0x14')](_0xea39('0x5e'),_0xea39('0x5f'),_0x12d164['message']);});}var processPromises=function(_0x1aafa7){return BPromise[_0xea39('0x5b')](promises)[_0xea39('0x2f')](function(_0xd86e85){})[_0xea39('0x57')](function(_0x13f8d4){logger[_0xea39('0x14')](_0xea39('0x60'),JSON['stringify'](_0x13f8d4));})[_0xea39('0x61')](function(){socket[_0xea39('0x62')]('contact:csv_'+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x1aafa7){return _0x1aafa7[_0xea39('0x63')]();}});};var endCsv=function(){return BPromise[_0xea39('0x64')]()[_0xea39('0x2f')](function(){if(hopperContacts){return checkHopper();}})['then'](function(){socket[_0xea39('0x62')](_0xea39('0x65')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs['unlinkSync'](FILEPATH);}catch(_0xe17549){logger[_0xea39('0x14')]('Unable\x20to\x20delete\x20temp\x20file:',JSON[_0xea39('0x32')](_0xe17549));}finally{process[_0xea39('0x66')](0x0);}});};process['on'](_0xea39('0x67'),function(){logger[_0xea39('0x68')]('CSV\x20import\x20process\x20stopped!');endCsv();});function main(){return BPromise[_0xea39('0x64')]()[_0xea39('0x2f')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xea39('0x11')](',');return db[_0xea39('0x69')]['findAll']({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0xea39('0x2f')](function(_0x59b818){var _0x3e5f34=fs['createReadStream'](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xea39('0x6a')](_0x3e5f34,{'header':!![],'skipEmptyLines':!![],'step':function(_0x5763cd,_0x43c49b){total+=0x1;var _0x107682=total;promises[_0xea39('0x30')](checkRow(_0x5763cd,_0x59b818,_0x107682)[_0xea39('0x2f')](function(){success+=0x1;})['catch'](function(_0xe01953){if(_0xe01953[_0xea39('0x14')]){errors+=0x1;delete _0xe01953['error'];}else if(_0xe01953[_0xea39('0x2b')]){duplicates+=0x1;delete _0xe01953[_0xea39('0x2b')];}rows[_0xea39('0x30')](_0xe01953);}));if(total%0xc8===0x0){_0x43c49b[_0xea39('0x6b')]();return processPromises(_0x43c49b);}},'complete':function(){return processPromises()[_0xea39('0x2f')](function(){logger[_0xea39('0x68')](_0xea39('0x6c'));endCsv();});},'error':function(_0x88d7b6,_0x77a6a7){logger[_0xea39('0x68')]('CSV\x20parse\x20error',JSON[_0xea39('0x32')](_0x88d7b6));endCsv();}});})[_0xea39('0x57')](function(_0x1fe749){logger['error'](_0xea39('0x6d'),JSON[_0xea39('0x32')](_0x1fe749));});}main();
\ No newline at end of file
+var _0x4bc6=['findAll','outbound','dialCheckDuplicateType','CmList','Lists','get','sequelize','VoiceQueueId','onlyIfOpen','query','all','VoiceQueue','BlackLists','Campaign','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','contact:csv_','resolve','unlinkSync','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','squel','ioredis','../../../mysqldb','../../../config/logger','defaults','redis','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','null','undefined','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','duplicate','Duplicate\x20Contact','CmContact','create','then','push','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','inspect','cm_hopper','fromQuery','scheduledAt','createdAt','updatedAt','field','phone','ContactId','toString','cm_contacts','deletedAt\x20IS\x20NULL','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','select','from','\x20=\x20?','into','NOW()','id\x20IN\x20?','str','calleridnum','cm_hopper_final','insert'];(function(_0x5acb6f,_0x43b847){var _0x59118b=function(_0xde4b){while(--_0xde4b){_0x5acb6f['push'](_0x5acb6f['shift']());}};_0x59118b(++_0x43b847);}(_0x4bc6,0xff));var _0x64bc=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x4bc6[_0x413feb];return _0x40ee88;};'use strict';var BPromise=require(_0x64bc('0x0'));var util=require('util');var _=require('lodash');var fs=require('fs');var squel=require(_0x64bc('0x1'));var Papa=require('papaparse');var Redis=require(_0x64bc('0x2'));var db=require(_0x64bc('0x3'))['db'];var config=require('../../../config/environment');var logger=require(_0x64bc('0x4'))('api');config['redis']=_[_0x64bc('0x5')](config[_0x64bc('0x6')],{'host':_0x64bc('0x7'),'port':0x18eb});var socket=require(_0x64bc('0x8'))(new Redis(config[_0x64bc('0x6')]));require(_0x64bc('0x9'))[_0x64bc('0xa')](socket);try{if(!process[_0x64bc('0xb')][0x2]||process[_0x64bc('0xb')][0x2]==='undefined'||process[_0x64bc('0xb')][0x2]===_0x64bc('0xc')){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process[_0x64bc('0xb')][0x2];if(!process['argv'][0x3]||process[_0x64bc('0xb')][0x3]==='undefined'||process[_0x64bc('0xb')][0x3]===_0x64bc('0xc')||!process[_0x64bc('0xb')][0x4]||process[_0x64bc('0xb')][0x4]===_0x64bc('0xd')||process[_0x64bc('0xb')][0x4]===_0x64bc('0xc')){throw new Error(_0x64bc('0xe'));}var FIELDS=_[_0x64bc('0xf')](process[_0x64bc('0xb')][0x3]['split'](','),process[_0x64bc('0xb')][0x4][_0x64bc('0x10')](','));if(!process['argv'][0x5]||process[_0x64bc('0xb')][0x5]===_0x64bc('0xd')||process[_0x64bc('0xb')][0x5]===_0x64bc('0xc')){throw new Error(_0x64bc('0x11'));}var LISTID=process[_0x64bc('0xb')][0x5];var COMPANYID=process['argv'][0x6]&&process['argv'][0x6]!==_0x64bc('0xd')&&process[_0x64bc('0xb')][0x6]!==_0x64bc('0xc')?process[_0x64bc('0xb')][0x6]:null;var DUPLICATES=process[_0x64bc('0xb')][0x7]&&process[_0x64bc('0xb')][0x7]!==_0x64bc('0xd')&&process[_0x64bc('0xb')][0x7]!=='null'?process[_0x64bc('0xb')][0x7]:null;if(!process[_0x64bc('0xb')][0x8]||process[_0x64bc('0xb')][0x8]===_0x64bc('0xd')||process[_0x64bc('0xb')][0x8]===_0x64bc('0xc')){throw new Error(_0x64bc('0x12'));}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x3bff84){logger[_0x64bc('0x13')](_0x3bff84);endCsv();}var total=0x0;var pTotal=0x0;var success=0x0;var errors=0x0;var duplicates=0x0;var rows=[];var hopperContacts='';var promises=[];var index=0x0;var alreadyInvalid=![];function handleCheckRowError(_0x141ac5,_0x1855ca,_0x4f8313,_0x3600da){var _0x3b9364={'message':_0x1855ca};_0x3b9364[_0x141ac5]=!![];if(_0x4f8313){_0x3b9364[_0x64bc('0x14')]=_0x4f8313;}if(_0x3600da){_0x3b9364[_0x64bc('0x15')]=_0x3600da;}return _0x3b9364;}function isEmail(_0x50b08a){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0x64bc('0x16')](_0x50b08a);}function checkRow(_0x3c4569,_0x3f6b8c,_0x353ef6){return new BPromise(function(_0x39840a,_0xf35d24){if(_[_0x64bc('0x17')](_0x3c4569)){return _0xf35d24(handleCheckRowError(_0x64bc('0x13'),_0x64bc('0x18'),null,_0x353ef6));}if(_0x3c4569['errors']&&_0x3c4569[_0x64bc('0x19')][_0x64bc('0x1a')]){var _0x5eb3d2=_[_0x64bc('0x1b')](_0x3c4569[_0x64bc('0x19')],_0x64bc('0x1c'))['join'](';');return _0xf35d24(handleCheckRowError('error',_0x5eb3d2,null,_0x353ef6));}var _0x11bfba={};for(var _0x27e834 in FIELDS){if(FIELDS[_0x64bc('0x1d')](_0x27e834)&&FIELDS[_0x27e834]){_0x11bfba[_0x27e834]=_0x3c4569[_0x64bc('0x1e')][0x0][FIELDS[_0x27e834]]||_0x3c4569['data'][0x0]['\ufeff'+FIELDS[_0x27e834]];}}if(!_0x11bfba[_0x64bc('0x1f')]){return _0xf35d24(handleCheckRowError(_0x64bc('0x13'),_0x64bc('0x20'),null,_0x353ef6));}if(!_0x11bfba['phone']){return _0xf35d24(handleCheckRowError('error',_0x64bc('0x21'),null,_0x353ef6));}if(_0x11bfba[_0x64bc('0x22')]){var _0x71dcf7=moment(_0x11bfba[_0x64bc('0x22')],_0x64bc('0x23'));if(!_0x71dcf7[_0x64bc('0x24')]()){return _0xf35d24(handleCheckRowError(_0x64bc('0x13'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x353ef6));}}if(_0x11bfba[_0x64bc('0x25')]){if(!isEmail(_0x11bfba[_0x64bc('0x25')])){return _0xf35d24(handleCheckRowError('error',_0x64bc('0x26'),null,_0x353ef6));}}_0x11bfba[_0x64bc('0x27')]=LISTID;_0x11bfba[_0x64bc('0x28')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x64bc('0x1a')]&&_0x3f6b8c){var _0x227e20={};for(var _0x4a36ff=0x0,_0x31d5fc=DUPLICATES[_0x64bc('0x1a')];_0x4a36ff<_0x31d5fc;_0x4a36ff+=0x1){_0x227e20[DUPLICATES[_0x4a36ff]]=_0x11bfba[DUPLICATES[_0x4a36ff]];}var _0x1bbc07=_['find'](_0x3f6b8c,_0x227e20);if(_0x1bbc07){return _0xf35d24(handleCheckRowError(_0x64bc('0x29'),_0x64bc('0x2a'),_0x1bbc07,_0x353ef6));}}return db[_0x64bc('0x2b')][_0x64bc('0x2c')](_0x11bfba,{'raw':!![],'hooks':![],'fields':_['keys'](_0x11bfba)})[_0x64bc('0x2d')](function(_0x4d7c7f){if(DUPLICATES&&DUPLICATES[_0x64bc('0x1a')]&&_0x3f6b8c){_0x3f6b8c[_0x64bc('0x2e')](_['pick'](_0x11bfba,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x4d7c7f['id'];return _0x39840a();})[_0x64bc('0x2f')](function(_0x377690){return _0xf35d24(handleCheckRowError('error',_0x64bc('0x30')+(_0x377690['message']||JSON[_0x64bc('0x31')](_0x377690)),null,_0x353ef6));});});}function checkHopper(){function _0x4a3b0c(){return function(_0x3b3007){logger['error'](_0x64bc('0x32'),_0x64bc('0x33'),util[_0x64bc('0x34')](_0x3b3007,{'showHidden':![],'depth':null}));};}var _0x468405=function(_0x181774,_0x43b672){var _0x45d120=squel['insert']()['into'](_0x64bc('0x35'))[_0x64bc('0x36')](['phone',_0x64bc('0x37'),'ContactId',_0x64bc('0x27'),_0x43b672,_0x64bc('0x38'),_0x64bc('0x39')],squel['select']()[_0x64bc('0x3a')]('phone',_0x64bc('0x3b'))[_0x64bc('0x3a')]('NOW()',_0x64bc('0x37'))[_0x64bc('0x3a')]('id',_0x64bc('0x3c'))[_0x64bc('0x3a')](LISTID['toString'](),_0x64bc('0x27'))[_0x64bc('0x3a')](_0x181774['id'][_0x64bc('0x3d')](),_0x43b672)['field']('NOW()','createdAt')[_0x64bc('0x3a')]('NOW()','updatedAt')['from'](_0x64bc('0x3e'))['where'](_0x64bc('0x3f'))[_0x64bc('0x40')](_0x64bc('0x41'),LISTID['toString']())['where'](_0x64bc('0x42'))[_0x64bc('0x40')](_0x64bc('0x43'),squel[_0x64bc('0x44')]()[_0x64bc('0x3a')](_0x64bc('0x3b'))[_0x64bc('0x45')]('cm_hopper')['where'](_0x43b672+_0x64bc('0x46'),_0x181774['id'][_0x64bc('0x3d')]())))['toString']();return _0x45d120;};var _0x1ebe7a=function(_0x447dab,_0x327110){var _0x3741db=squel['insert']()[_0x64bc('0x47')](_0x64bc('0x35'))['fromQuery']([_0x64bc('0x3b'),_0x64bc('0x37'),'ContactId','ListId',_0x327110,'createdAt',_0x64bc('0x39')],squel[_0x64bc('0x44')]()[_0x64bc('0x3a')]('phone','phone')[_0x64bc('0x3a')](_0x64bc('0x48'),'scheduledAt')[_0x64bc('0x3a')]('id','ContactId')[_0x64bc('0x3a')](LISTID[_0x64bc('0x3d')](),'ListId')[_0x64bc('0x3a')](_0x447dab['id'][_0x64bc('0x3d')](),_0x327110)[_0x64bc('0x3a')](_0x64bc('0x48'),_0x64bc('0x38'))[_0x64bc('0x3a')](_0x64bc('0x48'),_0x64bc('0x39'))[_0x64bc('0x45')](_0x64bc('0x3e'))[_0x64bc('0x40')](_0x64bc('0x3f'))[_0x64bc('0x40')](_0x64bc('0x41'),LISTID[_0x64bc('0x3d')]())[_0x64bc('0x40')](_0x64bc('0x49'),squel[_0x64bc('0x4a')](hopperContacts))[_0x64bc('0x40')]('phone\x20IS\x20NOT\x20NULL')[_0x64bc('0x40')](_0x64bc('0x43'),squel[_0x64bc('0x44')]()[_0x64bc('0x3a')](_0x64bc('0x4b'))[_0x64bc('0x45')](_0x64bc('0x4c'))[_0x64bc('0x40')](_0x327110+_0x64bc('0x46'),_0x447dab['id'][_0x64bc('0x3d')]()))[_0x64bc('0x40')](_0x64bc('0x43'),squel[_0x64bc('0x44')]()[_0x64bc('0x3a')](_0x64bc('0x3b'))[_0x64bc('0x45')]('cm_hopper')[_0x64bc('0x40')](_0x327110+_0x64bc('0x46'),_0x447dab['id'][_0x64bc('0x3d')]())))[_0x64bc('0x3d')]();return _0x3741db;};function _0x121978(_0x25d4de,_0x12337c){var _0x4e23ca=squel[_0x64bc('0x4d')]()[_0x64bc('0x47')](_0x64bc('0x35'))[_0x64bc('0x36')]([_0x64bc('0x3b'),_0x64bc('0x37'),_0x64bc('0x3c'),_0x64bc('0x27'),_0x12337c,_0x64bc('0x38'),'updatedAt'],squel[_0x64bc('0x44')]()[_0x64bc('0x3a')](_0x64bc('0x3b'),_0x64bc('0x3b'))[_0x64bc('0x3a')](_0x64bc('0x48'),_0x64bc('0x37'))[_0x64bc('0x3a')]('id',_0x64bc('0x3c'))[_0x64bc('0x3a')](LISTID[_0x64bc('0x3d')](),_0x64bc('0x27'))[_0x64bc('0x3a')](_0x25d4de['id'][_0x64bc('0x3d')](),_0x12337c)[_0x64bc('0x3a')](_0x64bc('0x48'),_0x64bc('0x38'))[_0x64bc('0x3a')](_0x64bc('0x48'),_0x64bc('0x39'))['from'](_0x64bc('0x3e'))[_0x64bc('0x40')](_0x64bc('0x3f'))[_0x64bc('0x40')](_0x64bc('0x41'),LISTID[_0x64bc('0x3d')]())[_0x64bc('0x40')]('id\x20IN\x20?',squel[_0x64bc('0x4a')](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL'))[_0x64bc('0x3d')]();return _0x4e23ca;}function _0x1af8ea(_0x5b8f10,_0x4ee666){var _0x48ea18=squel[_0x64bc('0x4d')]()[_0x64bc('0x47')]('cm_hopper_black')[_0x64bc('0x36')](['phone',_0x64bc('0x3c'),_0x64bc('0x27'),_0x4ee666,_0x64bc('0x38'),_0x64bc('0x39')],squel[_0x64bc('0x44')]()[_0x64bc('0x3a')]('phone',_0x64bc('0x3b'))['field']('id',_0x64bc('0x3c'))[_0x64bc('0x3a')](LISTID[_0x64bc('0x3d')](),_0x64bc('0x27'))[_0x64bc('0x3a')](_0x5b8f10['id'][_0x64bc('0x3d')](),_0x4ee666)[_0x64bc('0x3a')]('NOW()',_0x64bc('0x38'))['field'](_0x64bc('0x48'),'updatedAt')[_0x64bc('0x45')](_0x64bc('0x3e'))['where'](_0x64bc('0x3f'))['where'](_0x64bc('0x41'),LISTID['toString']())[_0x64bc('0x40')](_0x64bc('0x49'),squel['str'](hopperContacts))['where'](_0x64bc('0x42')))['toString']();return _0x48ea18;}return db['VoiceQueue'][_0x64bc('0x4e')]({'where':{'type':_0x64bc('0x4f')},'attributes':['id',_0x64bc('0x50')],'include':[{'model':db[_0x64bc('0x51')],'as':_0x64bc('0x52'),'where':{'id':LISTID}}]})[_0x64bc('0x2d')](function(_0x510c3f){var _0x3e61a3=[];if(_0x510c3f){var _0x511e24;for(var _0x2a1138=0x0,_0x5d69e9;_0x2a1138<_0x510c3f['length'];_0x2a1138+=0x1){_0x5d69e9=_0x510c3f[_0x2a1138][_0x64bc('0x53')]({'plain':!![]});switch(_0x5d69e9['dialCheckDuplicateType']){case'always':_0x3e61a3[_0x64bc('0x2e')](db[_0x64bc('0x54')]['query'](_0x1ebe7a(_0x5d69e9,_0x64bc('0x55')))[_0x64bc('0x2d')](function(){})[_0x64bc('0x2f')](_0x4a3b0c()));break;case _0x64bc('0x56'):_0x3e61a3['push'](db[_0x64bc('0x54')][_0x64bc('0x57')](_0x468405(_0x5d69e9,'VoiceQueueId'))[_0x64bc('0x2d')](function(){})[_0x64bc('0x2f')](_0x4a3b0c()));break;default:_0x3e61a3[_0x64bc('0x2e')](db[_0x64bc('0x54')][_0x64bc('0x57')](_0x121978(_0x5d69e9,'VoiceQueueId'))[_0x64bc('0x2d')](function(){})[_0x64bc('0x2f')](_0x4a3b0c()));}}}return _0x3e61a3;})[_0x64bc('0x58')]()[_0x64bc('0x2d')](function(){return db[_0x64bc('0x59')][_0x64bc('0x4e')]({'where':{'type':_0x64bc('0x4f')},'attributes':['id'],'include':[{'model':db[_0x64bc('0x51')],'as':_0x64bc('0x5a'),'where':{'id':LISTID}}]})[_0x64bc('0x2d')](function(_0xd2bb71){var _0x10b38f=[];if(_0xd2bb71){var _0x5f179b;for(var _0x203016=0x0,_0x560fe3;_0x203016<_0xd2bb71[_0x64bc('0x1a')];_0x203016+=0x1){_0x560fe3=_0xd2bb71[_0x203016][_0x64bc('0x53')]({'plain':!![]});_0x10b38f['push'](db[_0x64bc('0x54')]['query'](_0x1af8ea(_0x560fe3,'VoiceQueueId'))[_0x64bc('0x2d')](function(){})[_0x64bc('0x2f')](_0x4a3b0c()));}}return _0x10b38f;})[_0x64bc('0x58')]();})[_0x64bc('0x2d')](function(){return db[_0x64bc('0x5b')][_0x64bc('0x4e')]({'attributes':['id',_0x64bc('0x50')],'include':[{'model':db[_0x64bc('0x51')],'as':'Lists','where':{'id':LISTID}}]})['then'](function(_0x4f5934){var _0xae9a22=[];if(_0x4f5934){for(var _0x1fcad9=0x0,_0x181d18;_0x1fcad9<_0x4f5934[_0x64bc('0x1a')];_0x1fcad9+=0x1){_0x181d18=_0x4f5934[_0x1fcad9][_0x64bc('0x53')]({'plain':!![]});switch(_0x181d18[_0x64bc('0x50')]){case'always':_0xae9a22[_0x64bc('0x2e')](db[_0x64bc('0x54')]['query'](_0x1ebe7a(_0x181d18,'CampaignId'))[_0x64bc('0x2d')](function(){})[_0x64bc('0x2f')](_0x4a3b0c()));break;case'onlyIfOpen':_0xae9a22['push'](db[_0x64bc('0x54')][_0x64bc('0x57')](_0x468405(_0x181d18,'CampaignId'))['then'](function(){})[_0x64bc('0x2f')](_0x4a3b0c()));break;default:_0xae9a22['push'](db[_0x64bc('0x54')]['query'](_0x121978(_0x181d18,_0x64bc('0x5c')))[_0x64bc('0x2d')](function(){})[_0x64bc('0x2f')](_0x4a3b0c()));}}}return _0xae9a22;})[_0x64bc('0x58')]();})['then'](function(){return db[_0x64bc('0x5b')]['findAll']({'attributes':['id'],'include':[{'model':db[_0x64bc('0x51')],'as':_0x64bc('0x5a'),'where':{'id':LISTID}}]})[_0x64bc('0x2d')](function(_0x16fc7f){var _0x5190d1=[];if(_0x16fc7f){for(var _0x211c7f=0x0,_0x24d4ee;_0x211c7f<_0x16fc7f[_0x64bc('0x1a')];_0x211c7f+=0x1){_0x24d4ee=_0x16fc7f[_0x211c7f]['get']({'plain':!![]});_0x5190d1['push'](db['sequelize'][_0x64bc('0x57')](_0x1af8ea(_0x24d4ee,'CampaignId'))[_0x64bc('0x2d')](function(){})[_0x64bc('0x2f')](_0x4a3b0c()));}}return _0x5190d1;})[_0x64bc('0x58')]();})[_0x64bc('0x2f')](function(_0x51abce){logger[_0x64bc('0x13')](_0x64bc('0x5d'),_0x64bc('0x5e'),_0x51abce[_0x64bc('0x1c')]);});}var processPromises=function(_0x65af0d){return BPromise[_0x64bc('0x58')](promises)['then'](function(_0x161698){})['catch'](function(_0x10c7ad){logger[_0x64bc('0x13')](_0x64bc('0x5f'),JSON[_0x64bc('0x31')](_0x10c7ad));})[_0x64bc('0x60')](function(){socket[_0x64bc('0x61')](_0x64bc('0x62')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x65af0d){return _0x65af0d['resume']();}});};var endCsv=function(){return BPromise[_0x64bc('0x63')]()[_0x64bc('0x2d')](function(){if(hopperContacts){return checkHopper();}})[_0x64bc('0x2d')](function(){socket['emit'](_0x64bc('0x62')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x64bc('0x64')](FILEPATH);}catch(_0xce9cb7){logger['error']('Unable\x20to\x20delete\x20temp\x20file:',JSON[_0x64bc('0x31')](_0xce9cb7));}finally{process[_0x64bc('0x65')](0x0);}});};process['on'](_0x64bc('0x66'),function(){logger[_0x64bc('0x67')](_0x64bc('0x68'));endCsv();});function main(){return BPromise[_0x64bc('0x63')]()[_0x64bc('0x2d')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x64bc('0x10')](',');return db['CmContact'][_0x64bc('0x4e')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x64bc('0x2d')](function(_0x50a353){var _0x565d82=fs[_0x64bc('0x69')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x64bc('0x6a')](_0x565d82,{'header':!![],'skipEmptyLines':!![],'step':function(_0x529c80,_0x11048e){total+=0x1;var _0x18bc0c=total;promises[_0x64bc('0x2e')](checkRow(_0x529c80,_0x50a353,_0x18bc0c)[_0x64bc('0x2d')](function(){success+=0x1;})[_0x64bc('0x2f')](function(_0x52950a){if(_0x52950a[_0x64bc('0x13')]){errors+=0x1;delete _0x52950a['error'];}else if(_0x52950a[_0x64bc('0x29')]){duplicates+=0x1;delete _0x52950a[_0x64bc('0x29')];}rows['push'](_0x52950a);}));if(total%0xc8===0x0){_0x11048e[_0x64bc('0x6b')]();return processPromises(_0x11048e);}},'complete':function(){return processPromises()[_0x64bc('0x2d')](function(){logger['info'](_0x64bc('0x6c'));endCsv();});},'error':function(_0x24ecc7,_0x4108d5){logger[_0x64bc('0x67')](_0x64bc('0x6d'),JSON[_0x64bc('0x31')](_0x24ecc7));endCsv();}});})['catch'](function(_0x1058d4){logger['error'](_0x64bc('0x6e'),JSON[_0x64bc('0x31')](_0x1058d4));});}main();
\ No newline at end of file
index 24c8920..1072cb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12b5=['argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','binding','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','import','redis','defaults','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','select','field','phone','.id\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','join','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.priority','into','cm_hopper','fromQuery','createdAt','updatedAt','priority','UserId','recallme','fields','from','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','\x22always\x22','\x22onlyIfOpen\x22','cm_contacts.phone\x20NOT\x20IN\x20(?)','toString','insert','ListId','ListId\x20=\x20?','\x20=\x20?','concat','CompanyId','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','group','Received\x20SIGINT','error','message','exit','errors','push','code','info','query','spread','catch','main','send','start','root','server/files/tmp','.csv','header','writeFileSync','parse','createReadStream','data','length','rows','trim','replace','scheduledat','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','includes','agent\x20not\x20exists','email','dateOfBirth','YYYY-MM-DD','firstName','SystemRow','emit','SystemError','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','isNil','DROP\x20TABLE\x20','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','campaigns_has_cm_lists','campaigns','CampaignId','campaigns_has_cm_blacklists','each','then','finish','affectedRows','contact:import:','unlink','complete'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0x12b5,0x117));var _0x512b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x12b5[_0x3dd15e];return _0x231fd0;};'use strict';var fs=require('fs');var path=require(_0x512b('0x0'));var _=require(_0x512b('0x1'));var Papa=require(_0x512b('0x2'));var util=require(_0x512b('0x3'));var BPromise=require(_0x512b('0x4'));var moment=require('moment');var squel=require(_0x512b('0x5'));var Redis=require(_0x512b('0x6'));var db=require(_0x512b('0x7'))['db'];var config=require(_0x512b('0x8'));var logger=require(_0x512b('0x9'))(_0x512b('0xa'));config[_0x512b('0xb')]=_[_0x512b('0xc')](config[_0x512b('0xb')],{'host':_0x512b('0xd'),'port':0x18eb});var socket=require(_0x512b('0xe'))(new Redis(config[_0x512b('0xb')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x512b('0xf')](_0x512b('0x10'));function isEmail(_0x46fcc2){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'](_0x46fcc2);}function selectNotIn(_0x44f3dd,_0x3b3c23,_0x5452b8,_0x440be3,_0x16c05f){return squel[_0x512b('0x11')]()[_0x512b('0x12')](_0x512b('0x13'))['from'](_0x440be3)['join'](_0x3b3c23,null,_0x3b3c23+_0x512b('0x14')+_0x440be3+'.'+_0x5452b8)[_0x512b('0x15')](_0x440be3+'.'+_0x5452b8+'\x20=\x20'+_0x44f3dd+'.'+_0x5452b8)[_0x512b('0x15')](_0x3b3c23+_0x512b('0x16')+_0x16c05f[_0x512b('0x17')]()+')');}function insertCmHopper(_0x2f1923,_0x322154,_0x1de48e,_0x627add,_0x22521d){var _0x3825c4=['cm_contacts.phone','cm_contacts.scheduledat',_0x512b('0x18'),_0x512b('0x19'),_0x322154+'.'+_0x627add,_0x512b('0x1a'),'cm_contacts.updatedAt',_0x512b('0x1b'),'cm_contacts.UserId','\x22'+_0x22521d+'\x22'];return squel['insert']()[_0x512b('0x1c')](_0x512b('0x1d'))[_0x512b('0x1e')]([_0x512b('0x13'),'scheduledat','ContactId','ListId',_0x627add,_0x512b('0x1f'),_0x512b('0x20'),_0x512b('0x21'),_0x512b('0x22'),_0x512b('0x23')],squel[_0x512b('0x11')]()[_0x512b('0x24')](_0x3825c4)[_0x512b('0x25')](_0x322154)[_0x512b('0x17')](_0x512b('0x26'),null,_0x512b('0x27')+_0x322154+_0x512b('0x28'))[_0x512b('0x17')](_0x1de48e,null,_0x1de48e+_0x512b('0x14')+_0x322154+'.'+_0x627add)[_0x512b('0x15')](_0x322154+_0x512b('0x29'),_0x2f1923)[_0x512b('0x15')](_0x512b('0x2a'),NOW)[_0x512b('0x15')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x322154,_0x1de48e,_0x627add,'cm_hopper',[_0x512b('0x2b'),_0x512b('0x2c')]))['where'](_0x512b('0x2d'),selectNotIn(_0x322154,_0x1de48e,_0x627add,_0x512b('0x1d'),[_0x512b('0x2b')])))[_0x512b('0x2e')]();}function insertCmHopperBlack(_0x3eb5e2,_0x47aeb6,_0x3f2f3c,_0x392a8c){var _0xbfd4fd=['cm_contacts.phone',_0x512b('0x18'),'cm_contacts.ListId',_0x47aeb6+'.'+_0x392a8c,_0x512b('0x1a'),'cm_contacts.updatedAt'];return squel[_0x512b('0x2f')]()[_0x512b('0x1c')]('cm_hopper_black')[_0x512b('0x1e')](['phone','ContactId',_0x512b('0x30'),_0x392a8c,'createdAt',_0x512b('0x20')],squel[_0x512b('0x11')]()['fields'](_0xbfd4fd)[_0x512b('0x25')](_0x47aeb6)[_0x512b('0x17')]('cm_contacts',null,'cm_contacts.ListId\x20=\x20'+_0x47aeb6+_0x512b('0x28'))[_0x512b('0x17')](_0x3f2f3c,null,_0x3f2f3c+_0x512b('0x14')+_0x47aeb6+'.'+_0x392a8c)[_0x512b('0x15')](_0x47aeb6+'.CmListId\x20=\x20?',_0x3eb5e2)[_0x512b('0x15')](_0x512b('0x2a'),NOW)['where'](_0x512b('0x2d'),squel[_0x512b('0x11')]()[_0x512b('0x12')](_0x512b('0x13'))[_0x512b('0x25')]('cm_hopper_black')[_0x512b('0x15')](_0x512b('0x31'),_0x3eb5e2)[_0x512b('0x15')](_0x392a8c+_0x512b('0x32'),_0x47aeb6+'.'+_0x392a8c)))[_0x512b('0x2e')]();}function insertCmContact(_0x4b5959,_0x5464aa,_0x3efe62,_0x46663d){var _0xcf0b15=_[_0x512b('0x33')](_['keys'](_0x46663d),['ListId',_0x512b('0x34'),'createdAt',_0x512b('0x20')]);return squel[_0x512b('0x2f')]()['into'](_0x512b('0x26'))[_0x512b('0x1e')](_0xcf0b15,squel[_0x512b('0x11')]()[_0x512b('0x24')](_0xcf0b15)[_0x512b('0x25')](_0x5464aa)[_0x512b('0x15')]('('+_0x3efe62['join'](',')+')\x20NOT\x20IN\x20?',squel[_0x512b('0x11')]()[_0x512b('0x24')](_0x3efe62)[_0x512b('0x25')](_0x512b('0x26'))[_0x512b('0x15')](_0x512b('0x31'),_0x4b5959)[_0x512b('0x15')](_0x512b('0x35')))['where'](_0x512b('0x36'),squel[_0x512b('0x11')]()[_0x512b('0x12')](_0x512b('0x37'),_0x512b('0x38'))[_0x512b('0x25')](_0x5464aa)[_0x512b('0x39')](_0x3efe62['join'](','))))[_0x512b('0x2e')]();}function handleStop(){logger['info'](_0x512b('0x3a'));stopped=!![];}function handleUncaughtException(_0x3a760a){logger[_0x512b('0x3b')](_0x3a760a[_0x512b('0x3c')]);process[_0x512b('0x3d')](0x1);}function handleError(_0x2b4dcc,_0x8408e3){stats[_0x512b('0x3e')][_0x512b('0x3f')]({'name':_0x8408e3[_0x512b('0x40')],'message':_0x8408e3[_0x512b('0x3c')],'row':_0x2b4dcc});}function handleQuery(_0x5ada10){logger[_0x512b('0x41')](_0x5ada10);return db['sequelize'][_0x512b('0x42')](_0x5ada10)[_0x512b('0x43')](function(_0x35b227){results[_0x512b('0x3f')](_0x35b227);})[_0x512b('0x44')](function(_0xef5d82){logger[_0x512b('0x3b')](_0xef5d82['message']);});}function main(_0x5b2442,_0x3d2ba3,_0x47ff01,_0x58477f){logger[_0x512b('0x41')](_0x512b('0x45'),_0x5b2442,JSON['stringify'](_0x3d2ba3));process[_0x512b('0x46')](_0x512b('0x47'));var _0x430687=_0x3d2ba3['binding'];var _0x253f7a=_0x3d2ba3['socket_timestamp'];var _0x5c1c66=path[_0x512b('0x17')](config[_0x512b('0x48')],_0x512b('0x49'),_0x253f7a+_0x512b('0x4a'));var _0x5be2c4=_['keys'](_0x430687)[_0x512b('0x17')]();logger[_0x512b('0x41')](_0x512b('0x4b'),_0x5be2c4);fs[_0x512b('0x4c')](_0x5c1c66,_0x5be2c4+'\x0a');Papa[_0x512b('0x4d')](fs[_0x512b('0x4e')](_0x5b2442),{'header':!![],'skipEmptyLines':!![],'step':function(_0x3abc7c,_0x3f934e){try{for(var _0x99fa3e=0x0,_0x46f753=[];_0x99fa3e<_0x3abc7c[_0x512b('0x4f')][_0x512b('0x50')];_0x99fa3e++){stats[_0x512b('0x51')]+=0x1;if(_0x3abc7c[_0x512b('0x3e')][_0x99fa3e]){handleError(_0x3abc7c[_0x512b('0x4f')][_0x99fa3e],_0x3abc7c[_0x512b('0x3e')][_0x99fa3e]);}else{var _0x4fdf32=[];for(var _0x41b31f in _0x430687){if(_0x430687['hasOwnProperty'](_0x41b31f)){if(_0x3abc7c[_0x512b('0x4f')][_0x99fa3e][_0x430687[_0x41b31f]]){var _0x2fb5fa=_[_0x512b('0x52')](_0x3abc7c['data'][_0x99fa3e][_0x430687[_0x41b31f]][_0x512b('0x53')](/"/g,'\x27'));switch(_0x41b31f){case _0x512b('0x54'):var _0x246680=moment(_0x2fb5fa,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x246680[_0x512b('0x55')]()){_0x46f753[_0x512b('0x3f')]('\x22'+_0x2fb5fa+'\x22');}else{_0x4fdf32[_0x512b('0x3f')](_0x512b('0x56'));}break;case _0x512b('0x21'):var _0x4273a9=parseInt(_0x2fb5fa);_0x2fb5fa=_[_0x512b('0x57')](_0x4273a9)||_0x4273a9<0x0||_0x4273a9>0x4?_0x58477f?0x3:0x2:_0x4273a9;_0x46f753['push']('\x22'+_0x2fb5fa+'\x22');break;case'UserId':var _0x5f0b49=parseInt(_0x2fb5fa);if(_[_0x512b('0x58')](_0x5f0b49)&&_[_0x512b('0x59')](_0x47ff01,_0x5f0b49)){_0x46f753[_0x512b('0x3f')]('\x22'+_0x5f0b49+'\x22');}else{_0x4fdf32[_0x512b('0x3f')](_0x512b('0x5a'));}break;case _0x512b('0x5b'):if(isEmail(_0x2fb5fa)){_0x46f753[_0x512b('0x3f')]('\x22'+_0x2fb5fa+'\x22');}else{_0x4fdf32[_0x512b('0x3f')]('email\x20wrong\x20format');}break;case _0x512b('0x5c'):var _0x5c8c62=moment(_0x2fb5fa,_0x512b('0x5d'),!![]);if(_0x5c8c62[_0x512b('0x55')]()){_0x46f753[_0x512b('0x3f')]('\x22'+_0x2fb5fa+'\x22');}else{_0x4fdf32[_0x512b('0x3f')]('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;default:_0x46f753[_0x512b('0x3f')]('\x22'+_0x2fb5fa+'\x22');}}else{switch(_0x41b31f){case _0x512b('0x5e'):case _0x512b('0x13'):_0x4fdf32[_0x512b('0x3f')](_0x41b31f+'\x20not\x20specified');break;default:_0x46f753['push']('\x22\x22');}}}}if(_0x4fdf32['length']){handleError(_0x3abc7c[_0x512b('0x4f')][_0x99fa3e],{'code':_0x512b('0x5f'),'message':_0x4fdf32['join']()});}else{fs['appendFileSync'](_0x5c1c66,_0x46f753[_0x512b('0x17')]()+'\x0a');}_0x46f753=[];}if(!(stats[_0x512b('0x51')]%0xc8)){socket[_0x512b('0x60')]('contact:import:'+_0x253f7a,stats);stats[_0x512b('0x3e')]=[];}}if(stopped){logger['info']('Abort\x20parser');_0x3f934e['abort']();}}catch(_0x29faf3){handleError(_0x3abc7c[_0x512b('0x4f')][_0x99fa3e],{'code':_0x512b('0x61'),'message':_0x29faf3[_0x512b('0x3c')]});logger[_0x512b('0x3b')](_0x512b('0x62'),_0x29faf3[_0x512b('0x3c')]);}},'complete':function(){try{var _0x323b8f=[];var _0x19b245=_0x512b('0x26');if(_0x3d2ba3[_0x512b('0x63')]&&_0x3d2ba3[_0x512b('0x63')][_0x512b('0x50')]){_0x19b245=_0x512b('0x64')+_0x253f7a;_0x323b8f[_0x512b('0x3f')](_0x512b('0x65')+_0x19b245+_0x512b('0x66'));}var _0x1e0354=util[_0x512b('0xf')](_0x512b('0x67'),_0x5c1c66,_0x19b245,_0x5be2c4,_0x3d2ba3['ListId'],_0x3d2ba3['CompanyId']||null,NOW,NOW);if(_[_0x512b('0x68')](_0x430687[_0x512b('0x54')])){_0x1e0354+=',\x20scheduledAt\x20=\x20NOW()';}_0x323b8f[_0x512b('0x3f')](_0x1e0354);if(_0x3d2ba3['duplicates']&&_0x3d2ba3[_0x512b('0x63')][_0x512b('0x50')]){_0x323b8f[_0x512b('0x3f')](insertCmContact(_0x3d2ba3[_0x512b('0x30')],_0x19b245,_0x3d2ba3[_0x512b('0x63')],_0x430687));_0x323b8f[_0x512b('0x3f')](_0x512b('0x69')+_0x19b245+';');}_0x323b8f[_0x512b('0x3f')](insertCmHopper(_0x3d2ba3['ListId'],_0x512b('0x6a'),_0x512b('0x6b'),_0x512b('0x6c'),_0x58477f));_0x323b8f['push'](insertCmHopperBlack(_0x3d2ba3[_0x512b('0x30')],'voice_queues_has_cm_blacklists',_0x512b('0x6b'),_0x512b('0x6c')));_0x323b8f[_0x512b('0x3f')](insertCmHopper(_0x3d2ba3[_0x512b('0x30')],_0x512b('0x6d'),_0x512b('0x6e'),_0x512b('0x6f'),_0x58477f));_0x323b8f['push'](insertCmHopperBlack(_0x3d2ba3[_0x512b('0x30')],_0x512b('0x70'),_0x512b('0x6e'),'CampaignId'));BPromise[_0x512b('0x71')](_0x323b8f,handleQuery)[_0x512b('0x72')](function(_0x1bc773){stats[_0x512b('0x73')]=!![];stats[_0x512b('0x74')]=_0x3d2ba3['duplicates']&&_0x3d2ba3[_0x512b('0x63')][_0x512b('0x50')]?results[0x2][_0x512b('0x74')]:results[0x0][_0x512b('0x74')];socket[_0x512b('0x60')](_0x512b('0x75')+_0x253f7a,stats);fs['unlink'](_0x5b2442);fs[_0x512b('0x76')](_0x5c1c66);process[_0x512b('0x3d')](0x0);})['catch'](function(_0x500b8c){logger[_0x512b('0x3b')](_0x500b8c[_0x512b('0x3c')]);process[_0x512b('0x3d')](0x1);});}catch(_0x1d8c1a){logger[_0x512b('0x3b')](_0x512b('0x77'),_0x1d8c1a[_0x512b('0x3c')]);process[_0x512b('0x3d')](0x1);}},'error':function(_0x551be5,_0x38460a,_0x514706,_0x21337d){throw new Error(_0x21337d);}});}function validate(){if(process[_0x512b('0x78')]&&process['argv']['length']<0x4){throw new Error(_0x512b('0x79'));}var _0x4fa6c9=path['join'](config[_0x512b('0x48')],_0x512b('0x49'),process[_0x512b('0x78')][0x2]);if(!fs[_0x512b('0x7a')](_0x4fa6c9)){throw new Error(_0x512b('0x7b'));}var _0x51b6f5={};try{_0x51b6f5=JSON[_0x512b('0x4d')](process[_0x512b('0x78')][0x3]);if(!_0x51b6f5[_0x512b('0x7c')]){throw new Error(_0x512b('0x7d'));}if(!_0x51b6f5[_0x512b('0x7c')][_0x512b('0x13')]){throw new Error(_0x512b('0x7e'));}if(!_0x51b6f5[_0x512b('0x7c')][_0x512b('0x5e')]){throw new Error(_0x512b('0x7f'));}var _0x307795=0x0;if(_0x51b6f5[_0x512b('0x7c')][_0x512b('0x22')]){_0x307795=0x1;}if(!_0x51b6f5[_0x512b('0x30')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x4e5021){throw new Error(_0x512b('0x80'));}var _0x47caf5=[];try{_0x47caf5=_[_0x512b('0x81')](JSON[_0x512b('0x4d')](process[_0x512b('0x78')][0x4]),'id');}catch(_0x34480d){logger[_0x512b('0x41')](_0x512b('0x82'));}main(_0x4fa6c9,_0x51b6f5,_0x47caf5,_0x307795);}validate();process['on'](_0x512b('0x83'),handleStop);process['on'](_0x512b('0x84'),handleUncaughtException);
\ No newline at end of file
+var _0x0b68=['LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','campaigns_has_cm_lists','campaigns','CampaignId','campaigns_has_cm_blacklists','each','then','affectedRows','unlink','exit','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','server/files/tmp','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName','firstName\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','squel','ioredis','../../../config/environment','../../../config/logger','import','defaults','redis','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field','phone','from','.id\x20=\x20','join','cm_contacts.scheduledat','cm_contacts.priority','cm_contacts.UserId','insert','cm_hopper','scheduledat','ContactId','ListId','createdAt','updatedAt','recallme','fields','cm_contacts','where','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','cm_contacts.phone','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_hopper_black','fromQuery','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','\x20=\x20?','toString','concat','keys','CompanyId','into',')\x20NOT\x20IN\x20?','ListId\x20=\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','group','info','error','message','errors','push','code','spread','catch','main','stringify','send','start','binding','socket_timestamp','root','.csv','header','parse','createReadStream','data','length','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','priority','isNaN','UserId','isNumber','email','email\x20wrong\x20format','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','SystemRow','appendFileSync','rows','emit','contact:import:','Abort\x20parser','abort','SystemError','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;'];(function(_0x197afd,_0x550768){var _0x28480b=function(_0x1ab1f5){while(--_0x1ab1f5){_0x197afd['push'](_0x197afd['shift']());}};_0x28480b(++_0x550768);}(_0x0b68,0xa2));var _0x80b6=function(_0x43b532,_0x68a536){_0x43b532=_0x43b532-0x0;var _0x31e0c1=_0x0b68[_0x43b532];return _0x31e0c1;};'use strict';var fs=require('fs');var path=require(_0x80b6('0x0'));var _=require(_0x80b6('0x1'));var Papa=require(_0x80b6('0x2'));var util=require('util');var BPromise=require('bluebird');var moment=require('moment');var squel=require(_0x80b6('0x3'));var Redis=require(_0x80b6('0x4'));var db=require('../../../mysqldb')['db'];var config=require(_0x80b6('0x5'));var logger=require(_0x80b6('0x6'))(_0x80b6('0x7'));config['redis']=_[_0x80b6('0x8')](config[_0x80b6('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x80b6('0xa'))(new Redis(config[_0x80b6('0x9')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x80b6('0xb')](_0x80b6('0xc'));function isEmail(_0x16f1ff){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0x80b6('0xd')](_0x16f1ff);}function selectNotIn(_0x42b054,_0x44c8bf,_0x25b392,_0x3c9e9c,_0x5232fc){return squel[_0x80b6('0xe')]()[_0x80b6('0xf')](_0x80b6('0x10'))[_0x80b6('0x11')](_0x3c9e9c)['join'](_0x44c8bf,null,_0x44c8bf+_0x80b6('0x12')+_0x3c9e9c+'.'+_0x25b392)['where'](_0x3c9e9c+'.'+_0x25b392+'\x20=\x20'+_0x42b054+'.'+_0x25b392)['where'](_0x44c8bf+'.dialCheckDuplicateType\x20IN\x20('+_0x5232fc[_0x80b6('0x13')]()+')');}function insertCmHopper(_0x1a2ab0,_0x138dca,_0xe11c83,_0x3cb929,_0x16707a){var _0x1f5a3b=['cm_contacts.phone',_0x80b6('0x14'),'cm_contacts.id','cm_contacts.ListId',_0x138dca+'.'+_0x3cb929,'cm_contacts.createdAt','cm_contacts.updatedAt',_0x80b6('0x15'),_0x80b6('0x16'),'\x22'+_0x16707a+'\x22'];return squel[_0x80b6('0x17')]()['into'](_0x80b6('0x18'))['fromQuery'](['phone',_0x80b6('0x19'),_0x80b6('0x1a'),_0x80b6('0x1b'),_0x3cb929,_0x80b6('0x1c'),_0x80b6('0x1d'),'priority','UserId',_0x80b6('0x1e')],squel[_0x80b6('0xe')]()[_0x80b6('0x1f')](_0x1f5a3b)[_0x80b6('0x11')](_0x138dca)[_0x80b6('0x13')](_0x80b6('0x20'),null,'cm_contacts.ListId\x20=\x20'+_0x138dca+'.CmListId')[_0x80b6('0x13')](_0xe11c83,null,_0xe11c83+_0x80b6('0x12')+_0x138dca+'.'+_0x3cb929)['where'](_0x138dca+'.CmListId\x20=\x20?',_0x1a2ab0)['where']('cm_contacts.createdAt\x20=\x20?',NOW)[_0x80b6('0x21')](_0x80b6('0x22'),selectNotIn(_0x138dca,_0xe11c83,_0x3cb929,_0x80b6('0x18'),[_0x80b6('0x23'),_0x80b6('0x24')]))['where'](_0x80b6('0x22'),selectNotIn(_0x138dca,_0xe11c83,_0x3cb929,_0x80b6('0x18'),[_0x80b6('0x23')])))['toString']();}function insertCmHopperBlack(_0x3501ca,_0x5a6ded,_0x564edb,_0x58bc34){var _0x3d29d7=[_0x80b6('0x25'),'cm_contacts.id',_0x80b6('0x26'),_0x5a6ded+'.'+_0x58bc34,_0x80b6('0x27'),_0x80b6('0x28')];return squel[_0x80b6('0x17')]()['into'](_0x80b6('0x29'))[_0x80b6('0x2a')]([_0x80b6('0x10'),_0x80b6('0x1a'),_0x80b6('0x1b'),_0x58bc34,_0x80b6('0x1c'),_0x80b6('0x1d')],squel[_0x80b6('0xe')]()[_0x80b6('0x1f')](_0x3d29d7)['from'](_0x5a6ded)[_0x80b6('0x13')](_0x80b6('0x20'),null,'cm_contacts.ListId\x20=\x20'+_0x5a6ded+_0x80b6('0x2b'))['join'](_0x564edb,null,_0x564edb+_0x80b6('0x12')+_0x5a6ded+'.'+_0x58bc34)['where'](_0x5a6ded+_0x80b6('0x2c'),_0x3501ca)[_0x80b6('0x21')](_0x80b6('0x2d'),NOW)['where'](_0x80b6('0x22'),squel[_0x80b6('0xe')]()[_0x80b6('0xf')](_0x80b6('0x10'))['from']('cm_hopper_black')[_0x80b6('0x21')]('ListId\x20=\x20?',_0x3501ca)['where'](_0x58bc34+_0x80b6('0x2e'),_0x5a6ded+'.'+_0x58bc34)))[_0x80b6('0x2f')]();}function insertCmContact(_0xc6d7dc,_0x48df5a,_0x184d94,_0x3e5436){var _0x5319a0=_[_0x80b6('0x30')](_[_0x80b6('0x31')](_0x3e5436),[_0x80b6('0x1b'),_0x80b6('0x32'),_0x80b6('0x1c'),_0x80b6('0x1d')]);return squel[_0x80b6('0x17')]()[_0x80b6('0x33')](_0x80b6('0x20'))[_0x80b6('0x2a')](_0x5319a0,squel[_0x80b6('0xe')]()[_0x80b6('0x1f')](_0x5319a0)[_0x80b6('0x11')](_0x48df5a)[_0x80b6('0x21')]('('+_0x184d94[_0x80b6('0x13')](',')+_0x80b6('0x34'),squel[_0x80b6('0xe')]()[_0x80b6('0x1f')](_0x184d94)[_0x80b6('0x11')]('cm_contacts')[_0x80b6('0x21')](_0x80b6('0x35'),_0xc6d7dc)['where'](_0x80b6('0x36')))[_0x80b6('0x21')](_0x80b6('0x37'),squel[_0x80b6('0xe')]()[_0x80b6('0xf')](_0x80b6('0x38'),'min_id')[_0x80b6('0x11')](_0x48df5a)[_0x80b6('0x39')](_0x184d94[_0x80b6('0x13')](','))))[_0x80b6('0x2f')]();}function handleStop(){logger[_0x80b6('0x3a')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x9c406e){logger[_0x80b6('0x3b')](_0x9c406e[_0x80b6('0x3c')]);process['exit'](0x1);}function handleError(_0x508224,_0x2f2c24){stats[_0x80b6('0x3d')][_0x80b6('0x3e')]({'name':_0x2f2c24[_0x80b6('0x3f')],'message':_0x2f2c24['message'],'row':_0x508224});}function handleQuery(_0x35c1e1){logger[_0x80b6('0x3a')](_0x35c1e1);return db['sequelize']['query'](_0x35c1e1)[_0x80b6('0x40')](function(_0x3772c5){results[_0x80b6('0x3e')](_0x3772c5);})[_0x80b6('0x41')](function(_0x36ac64){logger['error'](_0x36ac64[_0x80b6('0x3c')]);});}function main(_0x421470,_0xc6491b,_0x32ef97,_0x508449){logger[_0x80b6('0x3a')](_0x80b6('0x42'),_0x421470,JSON[_0x80b6('0x43')](_0xc6491b));process[_0x80b6('0x44')](_0x80b6('0x45'));var _0x4ac116=_0xc6491b[_0x80b6('0x46')];var _0x27648c=_0xc6491b[_0x80b6('0x47')];var _0x159cc9=path['join'](config[_0x80b6('0x48')],'server/files/tmp',_0x27648c+_0x80b6('0x49'));var _0x5a9cdb=_[_0x80b6('0x31')](_0x4ac116)[_0x80b6('0x13')]();logger[_0x80b6('0x3a')](_0x80b6('0x4a'),_0x5a9cdb);fs['writeFileSync'](_0x159cc9,_0x5a9cdb+'\x0a');Papa[_0x80b6('0x4b')](fs[_0x80b6('0x4c')](_0x421470),{'header':!![],'skipEmptyLines':!![],'step':function(_0x3c8ec4,_0x15ae5f){try{for(var _0x1996cc=0x0,_0xa6250a=[];_0x1996cc<_0x3c8ec4[_0x80b6('0x4d')][_0x80b6('0x4e')];_0x1996cc++){stats['rows']+=0x1;if(_0x3c8ec4[_0x80b6('0x3d')][_0x1996cc]){handleError(_0x3c8ec4['data'][_0x1996cc],_0x3c8ec4[_0x80b6('0x3d')][_0x1996cc]);}else{var _0x66b83a=[];for(var _0x333aa7 in _0x4ac116){if(_0x4ac116['hasOwnProperty'](_0x333aa7)){if(_0x3c8ec4[_0x80b6('0x4d')][_0x1996cc][_0x4ac116[_0x333aa7]]){var _0x4ef343=_['trim'](_0x3c8ec4[_0x80b6('0x4d')][_0x1996cc][_0x4ac116[_0x333aa7]][_0x80b6('0x4f')](/"/g,'\x27'));switch(_0x333aa7){case _0x80b6('0x19'):var _0x4dc05b=moment(_0x4ef343,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x4dc05b[_0x80b6('0x50')]()){_0xa6250a['push']('\x22'+_0x4ef343+'\x22');}else{_0x66b83a[_0x80b6('0x3e')](_0x80b6('0x51'));}break;case _0x80b6('0x52'):var _0x1e03e7=parseInt(_0x4ef343);_0x4ef343=_[_0x80b6('0x53')](_0x1e03e7)||_0x1e03e7<0x0||_0x1e03e7>0x4?_0x508449?0x3:0x2:_0x1e03e7;_0xa6250a[_0x80b6('0x3e')]('\x22'+_0x4ef343+'\x22');break;case _0x80b6('0x54'):var _0x2fd21a=parseInt(_0x4ef343);if(_[_0x80b6('0x55')](_0x2fd21a)&&_['includes'](_0x32ef97,_0x2fd21a)){_0xa6250a['push']('\x22'+_0x2fd21a+'\x22');}else{_0x66b83a['push']('agent\x20not\x20exists');}break;case _0x80b6('0x56'):if(isEmail(_0x4ef343)){_0xa6250a[_0x80b6('0x3e')]('\x22'+_0x4ef343+'\x22');}else{_0x66b83a[_0x80b6('0x3e')](_0x80b6('0x57'));}break;case _0x80b6('0x58'):var _0x9fcd7d=moment(_0x4ef343,'YYYY-MM-DD',!![]);if(_0x9fcd7d[_0x80b6('0x50')]()){_0xa6250a[_0x80b6('0x3e')]('\x22'+_0x4ef343+'\x22');}else{_0x66b83a[_0x80b6('0x3e')](_0x80b6('0x59'));}break;default:_0xa6250a['push']('\x22'+_0x4ef343+'\x22');}}else{switch(_0x333aa7){case'firstName':case _0x80b6('0x10'):_0x66b83a[_0x80b6('0x3e')](_0x333aa7+_0x80b6('0x5a'));break;default:_0xa6250a[_0x80b6('0x3e')]('\x22\x22');}}}}if(_0x66b83a[_0x80b6('0x4e')]){handleError(_0x3c8ec4[_0x80b6('0x4d')][_0x1996cc],{'code':_0x80b6('0x5b'),'message':_0x66b83a['join']()});}else{fs[_0x80b6('0x5c')](_0x159cc9,_0xa6250a['join']()+'\x0a');}_0xa6250a=[];}if(!(stats[_0x80b6('0x5d')]%0xc8)){socket[_0x80b6('0x5e')](_0x80b6('0x5f')+_0x27648c,stats);stats[_0x80b6('0x3d')]=[];}}if(stopped){logger[_0x80b6('0x3a')](_0x80b6('0x60'));_0x15ae5f[_0x80b6('0x61')]();}}catch(_0x3381ea){handleError(_0x3c8ec4[_0x80b6('0x4d')][_0x1996cc],{'code':_0x80b6('0x62'),'message':_0x3381ea[_0x80b6('0x3c')]});logger['error'](_0x80b6('0x63'),_0x3381ea[_0x80b6('0x3c')]);}},'complete':function(){try{var _0x3f41f5=[];var _0x3fe693=_0x80b6('0x20');if(_0xc6491b[_0x80b6('0x64')]&&_0xc6491b[_0x80b6('0x64')][_0x80b6('0x4e')]){_0x3fe693=_0x80b6('0x65')+_0x27648c;_0x3f41f5[_0x80b6('0x3e')](_0x80b6('0x66')+_0x3fe693+_0x80b6('0x67'));}var _0x13a016=util['format'](_0x80b6('0x68'),_0x159cc9,_0x3fe693,_0x5a9cdb,_0xc6491b[_0x80b6('0x1b')],_0xc6491b['CompanyId']||null,NOW,NOW);if(_[_0x80b6('0x69')](_0x4ac116[_0x80b6('0x19')])){_0x13a016+=_0x80b6('0x6a');}_0x3f41f5['push'](_0x13a016);if(_0xc6491b[_0x80b6('0x64')]&&_0xc6491b['duplicates'][_0x80b6('0x4e')]){_0x3f41f5[_0x80b6('0x3e')](insertCmContact(_0xc6491b[_0x80b6('0x1b')],_0x3fe693,_0xc6491b['duplicates'],_0x4ac116));_0x3f41f5['push'](_0x80b6('0x6b')+_0x3fe693+';');}_0x3f41f5[_0x80b6('0x3e')](insertCmHopper(_0xc6491b[_0x80b6('0x1b')],_0x80b6('0x6c'),_0x80b6('0x6d'),_0x80b6('0x6e'),_0x508449));_0x3f41f5[_0x80b6('0x3e')](insertCmHopperBlack(_0xc6491b[_0x80b6('0x1b')],'voice_queues_has_cm_blacklists',_0x80b6('0x6d'),_0x80b6('0x6e')));_0x3f41f5[_0x80b6('0x3e')](insertCmHopper(_0xc6491b[_0x80b6('0x1b')],_0x80b6('0x6f'),_0x80b6('0x70'),_0x80b6('0x71'),_0x508449));_0x3f41f5[_0x80b6('0x3e')](insertCmHopperBlack(_0xc6491b['ListId'],_0x80b6('0x72'),_0x80b6('0x70'),_0x80b6('0x71')));BPromise[_0x80b6('0x73')](_0x3f41f5,handleQuery)[_0x80b6('0x74')](function(_0x4651b5){stats['finish']=!![];stats[_0x80b6('0x75')]=_0xc6491b['duplicates']&&_0xc6491b[_0x80b6('0x64')][_0x80b6('0x4e')]?results[0x2][_0x80b6('0x75')]:results[0x0][_0x80b6('0x75')];socket[_0x80b6('0x5e')](_0x80b6('0x5f')+_0x27648c,stats);fs['unlink'](_0x421470);fs[_0x80b6('0x76')](_0x159cc9);process['exit'](0x0);})[_0x80b6('0x41')](function(_0x2c7d7a){logger[_0x80b6('0x3b')](_0x2c7d7a['message']);process[_0x80b6('0x77')](0x1);});}catch(_0x48b820){logger[_0x80b6('0x3b')]('complete',_0x48b820[_0x80b6('0x3c')]);process[_0x80b6('0x77')](0x1);}},'error':function(_0x3a7b88,_0x1430ed,_0x2fe0cc,_0x6ab90){throw new Error(_0x6ab90);}});}function validate(){if(process[_0x80b6('0x78')]&&process[_0x80b6('0x78')]['length']<0x4){throw new Error(_0x80b6('0x79'));}var _0x58c304=path['join'](config[_0x80b6('0x48')],_0x80b6('0x7a'),process[_0x80b6('0x78')][0x2]);if(!fs['existsSync'](_0x58c304)){throw new Error(_0x80b6('0x7b'));}var _0x4338d0={};try{_0x4338d0=JSON[_0x80b6('0x4b')](process['argv'][0x3]);if(!_0x4338d0[_0x80b6('0x46')]){throw new Error(_0x80b6('0x7c'));}if(!_0x4338d0[_0x80b6('0x46')][_0x80b6('0x10')]){throw new Error(_0x80b6('0x7d'));}if(!_0x4338d0[_0x80b6('0x46')][_0x80b6('0x7e')]){throw new Error(_0x80b6('0x7f'));}var _0x106860=0x0;if(_0x4338d0[_0x80b6('0x46')][_0x80b6('0x54')]){_0x106860=0x1;}if(!_0x4338d0[_0x80b6('0x1b')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x53ce85){throw new Error(_0x80b6('0x80'));}var _0x222b69=[];try{_0x222b69=_[_0x80b6('0x81')](JSON[_0x80b6('0x4b')](process[_0x80b6('0x78')][0x4]),'id');}catch(_0x4ce714){logger[_0x80b6('0x3a')](_0x80b6('0x82'));}main(_0x58c304,_0x4338d0,_0x222b69,_0x106860);}validate();process['on'](_0x80b6('0x83'),handleStop);process['on'](_0x80b6('0x84'),handleUncaughtException);
\ No newline at end of file
index 075fbe0..6b5df66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14f7=['keyValue','Caller\x20Number','calleridnum','Caller\x20Name','calleridname','Call\x20To','destexten','Queue','uniqueid','Date','agentcalledAt','destcalleridname','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','Talk\x20Time','talktime','Called\x20Number','Member\x20Name','membername','UniqueId','starttime','Answer\x20Time','answertime','Complete\x20Time','endtime','Duration','duration','Billable\x20Time','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','voice','toLowerCase','push','variable','queue','outbound','Outbound\x20Call','destcalleridnum','getDescriptions','inbound','***\x20Call\x20Info\x20***'];(function(_0x45bf86,_0x75586e){var _0x1f02b7=function(_0x1ea8a3){while(--_0x1ea8a3){_0x45bf86['push'](_0x45bf86['shift']());}};_0x1f02b7(++_0x75586e);}(_0x14f7,0x17a));var _0x714f=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0x14f7[_0xaa0309];return _0x5de7ce;};'use strict';exports[_0x714f('0x0')]=function(_0xe2f552,_0x660f67){var _0x111670=[{'type':_0x714f('0x1'),'content':_0x714f('0x2'),'variableName':null}];switch(_0xe2f552['toLowerCase']()){case _0x714f('0x3'):switch(_0x660f67[_0x714f('0x4')]()){case'inbound':_0x111670[_0x714f('0x5')]({'type':_0x714f('0x6'),'content':'','variableName':_0x714f('0x7')});_0x111670[_0x714f('0x5')]({'type':_0x714f('0x6'),'content':'','variableName':'calleridnum'});break;case _0x714f('0x8'):_0x111670[_0x714f('0x5')]({'type':_0x714f('0x1'),'content':_0x714f('0x9'),'variableName':null});_0x111670[_0x714f('0x5')]({'type':_0x714f('0x6'),'content':'','variableName':_0x714f('0xa')});break;}}return _0x111670;};exports[_0x714f('0xb')]=function(_0x8a399e,_0x23bd28){var _0x26d4b7=[];switch(_0x8a399e[_0x714f('0x4')]()){case'voice':switch(_0x23bd28[_0x714f('0x4')]()){case _0x714f('0xc'):_0x26d4b7=[{'type':_0x714f('0x1'),'content':_0x714f('0xd'),'key':null,'keyType':null,'variableName':null},{'type':_0x714f('0xe'),'content':'','key':_0x714f('0xf'),'keyType':_0x714f('0x6'),'variableName':_0x714f('0x10')},{'type':'keyValue','content':'','key':_0x714f('0x11'),'keyType':_0x714f('0x6'),'variableName':_0x714f('0x12')},{'type':_0x714f('0xe'),'content':'','key':_0x714f('0x13'),'keyType':_0x714f('0x6'),'variableName':_0x714f('0x14')},{'type':'keyValue','content':'','key':_0x714f('0x15'),'keyType':'variable','variableName':_0x714f('0x7')},{'type':'keyValue','content':'','key':'UniqueId','keyType':'variable','variableName':_0x714f('0x16')},{'type':_0x714f('0xe'),'content':'','key':_0x714f('0x17'),'keyType':_0x714f('0x6'),'variableName':_0x714f('0x18')},{'type':'string','content':'***\x20Agent\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x714f('0xe'),'content':'','key':'Agent\x20Name','keyType':_0x714f('0x6'),'variableName':_0x714f('0x19')},{'type':_0x714f('0xe'),'content':'','key':'Agent\x20Number','keyType':_0x714f('0x6'),'variableName':'destcalleridnum'},{'type':_0x714f('0x1'),'content':_0x714f('0x1a'),'key':null,'keyType':null,'variableName':null},{'type':_0x714f('0xe'),'content':'','key':_0x714f('0x1b'),'keyType':_0x714f('0x6'),'variableName':'agentcalledAt'},{'type':_0x714f('0xe'),'content':'','key':_0x714f('0x1c'),'keyType':_0x714f('0x6'),'variableName':_0x714f('0x1d')},{'type':_0x714f('0xe'),'content':'','key':_0x714f('0x1e'),'keyType':'variable','variableName':_0x714f('0x1f')},{'type':_0x714f('0xe'),'content':'','key':_0x714f('0x20'),'keyType':_0x714f('0x6'),'variableName':_0x714f('0x21')},{'type':_0x714f('0xe'),'content':'','key':_0x714f('0x22'),'keyType':'variable','variableName':_0x714f('0x23')}];break;case _0x714f('0x8'):_0x26d4b7=[{'type':_0x714f('0x1'),'content':_0x714f('0xd'),'variableName':null},{'type':_0x714f('0xe'),'content':'','key':_0x714f('0x24'),'keyType':'variable','keyContent':'','variableName':_0x714f('0xa')},{'type':_0x714f('0xe'),'content':'','key':_0x714f('0x25'),'keyType':'variable','keyContent':'','variableName':_0x714f('0x26')},{'type':'keyValue','content':'','key':_0x714f('0x27'),'keyType':_0x714f('0x6'),'keyContent':'','variableName':_0x714f('0x16')},{'type':_0x714f('0xe'),'content':'','key':_0x714f('0x17'),'keyType':_0x714f('0x6'),'keyContent':'','variableName':_0x714f('0x28')},{'type':_0x714f('0x1'),'content':_0x714f('0x1a')},{'type':_0x714f('0xe'),'content':'','key':_0x714f('0x29'),'keyType':_0x714f('0x6'),'keyContent':'','variableName':_0x714f('0x2a')},{'type':'keyValue','content':'','key':_0x714f('0x2b'),'keyType':_0x714f('0x6'),'keyContent':'','variableName':_0x714f('0x2c')},{'type':_0x714f('0xe'),'content':'','key':_0x714f('0x2d'),'keyType':'variable','keyContent':'','variableName':_0x714f('0x2e')},{'type':_0x714f('0xe'),'content':'','key':_0x714f('0x2f'),'keyType':_0x714f('0x6'),'keyContent':'','variableName':_0x714f('0x30')}];break;}}return _0x26d4b7;};
\ No newline at end of file
+var _0xe63a=['Talk\x20Time','talktime','Called\x20Number','Member\x20Name','membername','UniqueId','uniqueid','Date','starttime','Answer\x20Time','answertime','Complete\x20Time','endtime','Billable\x20Time','billableseconds','getSubjects','[xCALLY\x20Ticket]','toLowerCase','inbound','push','queue','variable','calleridnum','string','Outbound\x20Call','destcalleridnum','getDescriptions','voice','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','calleridname','Call\x20To','destexten','Queue','***\x20Agent\x20Info\x20***','destcalleridname','***\x20Time\x20Info\x20***','agentcalledAt','Agent\x20Connect','Agent\x20Complete','agentcompleteAt','Hold\x20Time'];(function(_0x3dc99e,_0x56b7fd){var _0xbff813=function(_0x5f28a8){while(--_0x5f28a8){_0x3dc99e['push'](_0x3dc99e['shift']());}};_0xbff813(++_0x56b7fd);}(_0xe63a,0x117));var _0xae63=function(_0x505088,_0x2391d8){_0x505088=_0x505088-0x0;var _0x301ef7=_0xe63a[_0x505088];return _0x301ef7;};'use strict';exports[_0xae63('0x0')]=function(_0x405b12,_0x1799a3){var _0x29eb9a=[{'type':'string','content':_0xae63('0x1'),'variableName':null}];switch(_0x405b12[_0xae63('0x2')]()){case'voice':switch(_0x1799a3[_0xae63('0x2')]()){case _0xae63('0x3'):_0x29eb9a[_0xae63('0x4')]({'type':'variable','content':'','variableName':_0xae63('0x5')});_0x29eb9a[_0xae63('0x4')]({'type':_0xae63('0x6'),'content':'','variableName':_0xae63('0x7')});break;case'outbound':_0x29eb9a[_0xae63('0x4')]({'type':_0xae63('0x8'),'content':_0xae63('0x9'),'variableName':null});_0x29eb9a[_0xae63('0x4')]({'type':_0xae63('0x6'),'content':'','variableName':_0xae63('0xa')});break;}}return _0x29eb9a;};exports[_0xae63('0xb')]=function(_0x31ec60,_0x5cfdd2){var _0x410f04=[];switch(_0x31ec60[_0xae63('0x2')]()){case _0xae63('0xc'):switch(_0x5cfdd2['toLowerCase']()){case'inbound':_0x410f04=[{'type':_0xae63('0x8'),'content':_0xae63('0xd'),'key':null,'keyType':null,'variableName':null},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0xf'),'keyType':'variable','variableName':_0xae63('0x7')},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x10'),'keyType':_0xae63('0x6'),'variableName':_0xae63('0x11')},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x12'),'keyType':_0xae63('0x6'),'variableName':_0xae63('0x13')},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x14'),'keyType':'variable','variableName':_0xae63('0x5')},{'type':_0xae63('0xe'),'content':'','key':'UniqueId','keyType':_0xae63('0x6'),'variableName':'uniqueid'},{'type':_0xae63('0xe'),'content':'','key':'Date','keyType':_0xae63('0x6'),'variableName':'agentcalledAt'},{'type':_0xae63('0x8'),'content':_0xae63('0x15'),'key':null,'keyType':null,'variableName':null},{'type':_0xae63('0xe'),'content':'','key':'Agent\x20Name','keyType':'variable','variableName':_0xae63('0x16')},{'type':_0xae63('0xe'),'content':'','key':'Agent\x20Number','keyType':_0xae63('0x6'),'variableName':_0xae63('0xa')},{'type':_0xae63('0x8'),'content':_0xae63('0x17'),'key':null,'keyType':null,'variableName':null},{'type':_0xae63('0xe'),'content':'','key':'Agent\x20Ring','keyType':_0xae63('0x6'),'variableName':_0xae63('0x18')},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x19'),'keyType':_0xae63('0x6'),'variableName':'agentconnectAt'},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x1a'),'keyType':_0xae63('0x6'),'variableName':_0xae63('0x1b')},{'type':'keyValue','content':'','key':_0xae63('0x1c'),'keyType':_0xae63('0x6'),'variableName':'holdtime'},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x1d'),'keyType':_0xae63('0x6'),'variableName':_0xae63('0x1e')}];break;case'outbound':_0x410f04=[{'type':_0xae63('0x8'),'content':_0xae63('0xd'),'variableName':null},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x1f'),'keyType':_0xae63('0x6'),'keyContent':'','variableName':_0xae63('0xa')},{'type':'keyValue','content':'','key':_0xae63('0x20'),'keyType':'variable','keyContent':'','variableName':_0xae63('0x21')},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x22'),'keyType':_0xae63('0x6'),'keyContent':'','variableName':_0xae63('0x23')},{'type':'keyValue','content':'','key':_0xae63('0x24'),'keyType':_0xae63('0x6'),'keyContent':'','variableName':_0xae63('0x25')},{'type':_0xae63('0x8'),'content':'***\x20Time\x20Info\x20***'},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x26'),'keyType':_0xae63('0x6'),'keyContent':'','variableName':_0xae63('0x27')},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x28'),'keyType':_0xae63('0x6'),'keyContent':'','variableName':_0xae63('0x29')},{'type':'keyValue','content':'','key':'Duration','keyType':_0xae63('0x6'),'keyContent':'','variableName':'duration'},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x2a'),'keyType':_0xae63('0x6'),'keyContent':'','variableName':_0xae63('0x2b')}];break;}}return _0x410f04;};
\ No newline at end of file
index c4359d4..1532461 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe397=['then','update','info','catch','error','tracked','user','query','body','phone','fax','mobile','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','sms-interactions','chat-interactions','whatsapp-interactions','InteractionId','upperFirst','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','name','role','stringify','null','Interaction','findOne'];(function(_0x6baf10,_0xc346be){var _0x1846df=function(_0x193129){while(--_0x193129){_0x6baf10['push'](_0x6baf10['shift']());}};_0x1846df(++_0xc346be);}(_0xe397,0x174));var _0x7e39=function(_0x3af1ee,_0x2c54b1){_0x3af1ee=_0x3af1ee-0x0;var _0x49cbcf=_0xe397[_0x3af1ee];return _0x49cbcf;};'use strict';var _=require('lodash');var db=require('../../mysqldb')['db'];var loggers={'openchannel':require(_0x7e39('0x0'))(_0x7e39('0x1')),'mail':require('../../config/logger')(_0x7e39('0x2')),'fax':require(_0x7e39('0x0'))(_0x7e39('0x3')),'sms':require(_0x7e39('0x0'))(_0x7e39('0x4')),'chat':require(_0x7e39('0x0'))(_0x7e39('0x5')),'whatsapp':require(_0x7e39('0x0'))(_0x7e39('0x6'))};function getInteractionId(_0x4fb152,_0x100bdd,_0x21f8e3){if(_0x4fb152&&_0x4fb152[_['upperFirst'](_0x21f8e3)+_0x7e39('0x7')]){return _0x4fb152[_[_0x7e39('0x8')](_0x21f8e3)+'InteractionId'];}else if(_0x4fb152&&_0x4fb152['id']){return _0x4fb152['id'];}else if(_0x100bdd&&_0x100bdd['id']){return _0x100bdd['id'];}else{return _0x7e39('0x9');}}function log(_0x32c1ae,_0x51f36e,_0x27d006,_0x20b732,_0xc0870,_0x1a599e){loggers[_0xc0870[_0x7e39('0xa')]()][_0x32c1ae](_0x7e39('0xb'),_0x1a599e['toUpperCase'](),_0x51f36e?_0x51f36e['id']:null,_0x51f36e?_0x51f36e[_0x7e39('0xc')]:null,_0x51f36e?_0x51f36e[_0x7e39('0xd')]:null,getInteractionId(_0x27d006,_0x20b732,_0xc0870),_0x27d006?JSON[_0x7e39('0xe')](_0x27d006):_0x7e39('0xf'));}function updateUser(_0x516c89,_0x5aae63,_0x52dded,_0x27d953,_0x188d8a){db[_[_0x7e39('0x8')](_0x27d953)+_0x7e39('0x10')][_0x7e39('0x11')]({'where':{'id':getInteractionId(_0x5aae63,_0x52dded,_0x27d953)}})[_0x7e39('0x12')](function(_0xf5f09a){if(_0xf5f09a){return _0xf5f09a[_0x7e39('0x13')]({'UserId':_0x516c89?_0x516c89['id']:null});}})[_0x7e39('0x12')](function(_0x18c371){if(_0x18c371){log(_0x7e39('0x14'),_0x516c89,_0x5aae63,_0x52dded,_0x27d953,_0x188d8a);}})[_0x7e39('0x15')](function(){log(_0x7e39('0x16'),_0x516c89,_0x5aae63,_0x52dded,_0x27d953,_0x188d8a);});}exports[_0x7e39('0x17')]=function(_0x35fc46,_0x317dd0){return function(_0x91dbec,_0x5e4f55,_0x30f93e){var _0x5d121a=_0x91dbec[_0x7e39('0x18')];var _0x141290={};var _0x474968=_0x91dbec[_0x7e39('0x19')];if(_0x141290){_0x141290=_['clone'](_0x91dbec[_0x7e39('0x1a')]);_0x141290=_['omit'](_0x141290,[_0x7e39('0x1a'),'html',_0x7e39('0x1b'),_0x7e39('0x1c'),_0x7e39('0x1d')]);}updateUser(_0x5d121a,_0x141290,_0x474968,_0x35fc46,_0x317dd0);_0x30f93e(null);};};
\ No newline at end of file
+var _0xaec2=['info','tracked','query','body','omit','html','phone','lodash','../../mysqldb','../../config/logger','sms-interactions','whatsapp-interactions','upperFirst','InteractionId','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','name','stringify','Interaction','findOne','then','update'];(function(_0x299aad,_0x3a0675){var _0x4b256a=function(_0x2a3cb5){while(--_0x2a3cb5){_0x299aad['push'](_0x299aad['shift']());}};_0x4b256a(++_0x3a0675);}(_0xaec2,0x193));var _0x2aec=function(_0xd5a842,_0x3bef1f){_0xd5a842=_0xd5a842-0x0;var _0xcedd84=_0xaec2[_0xd5a842];return _0xcedd84;};'use strict';var _=require(_0x2aec('0x0'));var db=require(_0x2aec('0x1'))['db'];var loggers={'openchannel':require(_0x2aec('0x2'))('openchannel-interactions'),'mail':require('../../config/logger')('mail-interactions'),'fax':require(_0x2aec('0x2'))('fax-interactions'),'sms':require('../../config/logger')(_0x2aec('0x3')),'chat':require(_0x2aec('0x2'))('chat-interactions'),'whatsapp':require(_0x2aec('0x2'))(_0x2aec('0x4'))};function getInteractionId(_0x34f783,_0x5de5ba,_0x58840b){if(_0x34f783&&_0x34f783[_['upperFirst'](_0x58840b)+'InteractionId']){return _0x34f783[_[_0x2aec('0x5')](_0x58840b)+_0x2aec('0x6')];}else if(_0x34f783&&_0x34f783['id']){return _0x34f783['id'];}else if(_0x5de5ba&&_0x5de5ba['id']){return _0x5de5ba['id'];}else{return'unknown';}}function log(_0x18925f,_0x3cfb98,_0x3a5f3a,_0x365033,_0x304a97,_0x35bc00){loggers[_0x304a97[_0x2aec('0x7')]()][_0x18925f](_0x2aec('0x8'),_0x35bc00['toUpperCase'](),_0x3cfb98?_0x3cfb98['id']:null,_0x3cfb98?_0x3cfb98[_0x2aec('0x9')]:null,_0x3cfb98?_0x3cfb98['role']:null,getInteractionId(_0x3a5f3a,_0x365033,_0x304a97),_0x3a5f3a?JSON[_0x2aec('0xa')](_0x3a5f3a):'null');}function updateUser(_0x5c4ef2,_0x316c40,_0x1a7b61,_0x4cca5,_0x39a978){db[_['upperFirst'](_0x4cca5)+_0x2aec('0xb')][_0x2aec('0xc')]({'where':{'id':getInteractionId(_0x316c40,_0x1a7b61,_0x4cca5)}})[_0x2aec('0xd')](function(_0x285656){if(_0x285656){return _0x285656[_0x2aec('0xe')]({'UserId':_0x5c4ef2?_0x5c4ef2['id']:null});}})['then'](function(_0x47a109){if(_0x47a109){log(_0x2aec('0xf'),_0x5c4ef2,_0x316c40,_0x1a7b61,_0x4cca5,_0x39a978);}})['catch'](function(){log('error',_0x5c4ef2,_0x316c40,_0x1a7b61,_0x4cca5,_0x39a978);});}exports[_0x2aec('0x10')]=function(_0xdc93ef,_0x5e7968){return function(_0xde2ef0,_0x3e778e,_0x967628){var _0x3d4cd0=_0xde2ef0['user'];var _0x545f6a={};var _0x5601b7=_0xde2ef0[_0x2aec('0x11')];if(_0x545f6a){_0x545f6a=_['clone'](_0xde2ef0[_0x2aec('0x12')]);_0x545f6a=_[_0x2aec('0x13')](_0x545f6a,['body',_0x2aec('0x14'),_0x2aec('0x15'),'fax','mobile']);}updateUser(_0x3d4cd0,_0x545f6a,_0x5601b7,_0xdc93ef,_0x5e7968);_0x967628(null);};};
\ No newline at end of file
index dc4b29e..6880f2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae6c=['json','format','catch','users','User','admin','user','crypto','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','aes-256-ctr','base64','utf8','parse','hasOwnProperty','findOne','then','count','status'];(function(_0x422b01,_0x7184ed){var _0xfd907=function(_0x2eb052){while(--_0x2eb052){_0x422b01['push'](_0x422b01['shift']());}};_0xfd907(++_0x7184ed);}(_0xae6c,0x7a));var _0xcae6=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xae6c[_0x321bb2];return _0x9c12ed;};'use strict';var crypto=require(_0xcae6('0x0'));var util=require('util');var compose=require(_0xcae6('0x1'));var db=require(_0xcae6('0x2'))['db'];var config=require(_0xcae6('0x3'));function getValueFromLicense(_0xf044c8,_0x58877c){if(_0xf044c8&&_0x58877c){if(_0x58877c[_0xcae6('0x4')]&&_0x58877c['license']){var _0xad4bf9=_0x58877c['data1'];var _0x4f7123=_0x58877c[_0xcae6('0x5')];var _0x54ec58=_0xad4bf9[_0xcae6('0x6')]('-')[0x4];var _0x380302=_0xad4bf9[_0xcae6('0x6')]('-')[0x0];var _0x4fb836=crypto['createDecipher'](_0xcae6('0x7'),util['format']('%s:%s:%s',_0x54ec58,_0xad4bf9,_0x380302));var _0xa28145=_0x4fb836['update'](_0x4f7123,_0xcae6('0x8'),_0xcae6('0x9'));_0xa28145+=_0x4fb836['final'](_0xcae6('0x9'));var _0x3b4b4a=JSON[_0xcae6('0xa')](_0xa28145);return _0x3b4b4a[_0xcae6('0xb')](_0xf044c8)?_0x3b4b4a[_0xf044c8]:null;}}return null;}function isLimit(_0x382596,_0x2eecf8,_0x9509f4,_0x495f11){var _0x1d10ce=_0x2eecf8;return compose()['use'](function(_0x43dbe0,_0x17b670,_0x6df3e4){return db['License'][_0xcae6('0xc')]({'where':{'id':0x1},'raw':!![]})[_0xcae6('0xd')](function(_0x510bf8){var _0x53efd9=getValueFromLicense(_0x382596,_0x510bf8);return _0x53efd9?_0x53efd9:_0x1d10ce;})[_0xcae6('0xd')](function(_0x29cc43){_0x1d10ce=_0x29cc43;return _0x9509f4[_0xcae6('0xe')](_0x495f11);})[_0xcae6('0xd')](function(_0x1afd02){if(_0x1afd02>=_0x1d10ce){return _0x17b670[_0xcae6('0xf')](0x193)[_0xcae6('0x10')]({'message':util[_0xcae6('0x11')]('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x382596)});}_0x6df3e4();})[_0xcae6('0x12')](function(_0x49f328){_0x6df3e4(_0x49f328);});});}function isUserLimit(){return isLimit(_0xcae6('0x13'),0x1,db[_0xcae6('0x14')],{'where':{'$or':[{'role':_0xcae6('0x15')},{'role':_0xcae6('0x16')}]}});}exports['isUserLimit']=isUserLimit;
\ No newline at end of file
+var _0x8562=['users','User','admin','isUserLimit','crypto','util','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format','update','base64','utf8','final','hasOwnProperty','License','findOne','then','count','status','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x8562,0x70));var _0x2856=function(_0x1bce46,_0x1d6cdc){_0x1bce46=_0x1bce46-0x0;var _0x2a9f8e=_0x8562[_0x1bce46];return _0x2a9f8e;};'use strict';var crypto=require(_0x2856('0x0'));var util=require(_0x2856('0x1'));var compose=require(_0x2856('0x2'));var db=require(_0x2856('0x3'))['db'];var config=require(_0x2856('0x4'));function getValueFromLicense(_0x2940b0,_0x45c366){if(_0x2940b0&&_0x45c366){if(_0x45c366[_0x2856('0x5')]&&_0x45c366[_0x2856('0x6')]){var _0x2504be=_0x45c366[_0x2856('0x5')];var _0x5aa86e=_0x45c366[_0x2856('0x6')];var _0x490237=_0x2504be[_0x2856('0x7')]('-')[0x4];var _0x1ce18c=_0x2504be[_0x2856('0x7')]('-')[0x0];var _0x4a3c7f=crypto[_0x2856('0x8')](_0x2856('0x9'),util[_0x2856('0xa')]('%s:%s:%s',_0x490237,_0x2504be,_0x1ce18c));var _0x284580=_0x4a3c7f[_0x2856('0xb')](_0x5aa86e,_0x2856('0xc'),_0x2856('0xd'));_0x284580+=_0x4a3c7f[_0x2856('0xe')](_0x2856('0xd'));var _0x529aa2=JSON['parse'](_0x284580);return _0x529aa2[_0x2856('0xf')](_0x2940b0)?_0x529aa2[_0x2940b0]:null;}}return null;}function isLimit(_0x2db282,_0x4c66b6,_0x1e828b,_0x3354c2){var _0x4e43d6=_0x4c66b6;return compose()['use'](function(_0x207a3b,_0x47e558,_0x49cb62){return db[_0x2856('0x10')][_0x2856('0x11')]({'where':{'id':0x1},'raw':!![]})[_0x2856('0x12')](function(_0x398645){var _0x19c12e=getValueFromLicense(_0x2db282,_0x398645);return _0x19c12e?_0x19c12e:_0x4e43d6;})[_0x2856('0x12')](function(_0x2ca302){_0x4e43d6=_0x2ca302;return _0x1e828b[_0x2856('0x13')](_0x3354c2);})[_0x2856('0x12')](function(_0x4485e6){if(_0x4485e6>=_0x4e43d6){return _0x47e558[_0x2856('0x14')](0x193)['json']({'message':util['format'](_0x2856('0x15'),_0x2db282)});}_0x49cb62();})[_0x2856('0x16')](function(_0x5b89f7){_0x49cb62(_0x5b89f7);});});}function isUserLimit(){return isLimit(_0x2856('0x17'),0x1,db[_0x2856('0x18')],{'where':{'$or':[{'role':_0x2856('0x19')},{'role':'user'}]}});}exports[_0x2856('0x1a')]=isUserLimit;
\ No newline at end of file
index 22fc5f1..a930463 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b8e=['hours','minutes','parseSearch','sqlOperator','startsWith','[$or]','and','replace','[$and]','split','slice','forEach','shift','filter','indexOf','map','conditions','push','DATE','operator','$eq','$between','value','includes','$gt','$lte','add','days','format','YYYY-MM-DD','castTo','text','CAST(','field','\x20AS\x20','$ne','\x20OR\x20','\x20IS\x20NULL)','$notIn','NOT\x20IN\x20?','=\x20?','$startsWith','$endsWith','LIKE\x20?','$lt','<\x20?','<=\x20?','BETWEEN\x20?\x20AND\x20?','$in','$substring','start','pop','utcOffset'];(function(_0x40800b,_0x575a41){var _0x4587ae=function(_0x578486){while(--_0x578486){_0x40800b['push'](_0x40800b['shift']());}};_0x4587ae(++_0x575a41);}(_0x1b8e,0xd6));var _0xe1b8=function(_0x445847,_0x56a926){_0x445847=_0x445847-0x0;var _0x707a85=_0x1b8e[_0x445847];return _0x707a85;};'use strict';var _=require('lodash');var moment=require('moment');exports[_0xe1b8('0x0')]=function(_0x149daf){var _0x2acbbe={'conditions':[]};_0x2acbbe[_0xe1b8('0x1')]=_[_0xe1b8('0x2')](_0x149daf,_0xe1b8('0x3'))?'or':_0xe1b8('0x4');var _0x30039b=_0x149daf[_0xe1b8('0x5')](_0xe1b8('0x6'),'')['replace'](_0xe1b8('0x3'),'')[_0xe1b8('0x7')]('||');for(var _0x3eb0cf=0x0;_0x3eb0cf<_0x30039b['length'];_0x3eb0cf++){var _0x185208=_0x30039b[_0x3eb0cf][_0xe1b8('0x7')](':=');var _0x5ef108=_0x185208[0x0];var _0x96c876=_0x185208[_0xe1b8('0x8')](0x1);_0x96c876[_0xe1b8('0x9')](function(_0x2d7925){var _0x53bd2c=_0x2d7925[_0xe1b8('0x7')]('[')[_0xe1b8('0xa')]();var _0x1ed9d5=_0x2d7925['match'](/\[(.*?)\]/g);_0x1ed9d5['forEach'](function(_0x765fae){var _0x37f7d6=_0x765fae['split']('[')[_0xe1b8('0xb')](function(_0x14652d){return _0x14652d[_0xe1b8('0xc')](']')>-0x1;})[_0xe1b8('0xd')](function(_0x4dc1d8){return _0x4dc1d8[_0xe1b8('0x7')](']')[0x0];})[0x0];_0x2acbbe[_0xe1b8('0xe')][_0xe1b8('0xf')]({'field':_0x5ef108,'operator':_0x53bd2c,'value':_0x37f7d6});});});}return _0x2acbbe;};exports['buildExpression']=function(_0x42baa6,_0xf0a42a,_0x2a7d00){var _0x4a4f35={};if(_0xf0a42a===_0xe1b8('0x10')){if(_0x2a7d00[_0xe1b8('0x11')]===_0xe1b8('0x12')){_0x2a7d00['operator']=_0xe1b8('0x13');_0x2a7d00[_0xe1b8('0x14')]+=','+_0x2a7d00[_0xe1b8('0x14')];}else if(_[_0xe1b8('0x15')]([_0xe1b8('0x16'),_0xe1b8('0x17')],_0x2a7d00[_0xe1b8('0x11')])){_0x2a7d00[_0xe1b8('0x14')]=moment(_0x2a7d00[_0xe1b8('0x14')])[_0xe1b8('0x18')](0x1,_0xe1b8('0x19'))[_0xe1b8('0x1a')](_0xe1b8('0x1b'));}}if(_0x2a7d00['castTo']){_0xf0a42a=_0x2a7d00[_0xe1b8('0x1c')];_0x4a4f35[_0xe1b8('0x1d')]=_0xe1b8('0x1e')+_0x42baa6+'.'+_0x2a7d00[_0xe1b8('0x1f')]+_0xe1b8('0x20')+_0x2a7d00['castTo']+')\x20'+parseOperator(_0x2a7d00['operator']);}else{_0x4a4f35[_0xe1b8('0x1d')]=_0x42baa6+'.'+_0x2a7d00[_0xe1b8('0x1f')]+'\x20'+parseOperator(_0x2a7d00[_0xe1b8('0x11')]);}if(_[_0xe1b8('0x15')]([_0xe1b8('0x21'),'$notIn'],_0x2a7d00[_0xe1b8('0x11')]))_0x4a4f35[_0xe1b8('0x1d')]='('+_0x4a4f35['text']+_0xe1b8('0x22')+_0x42baa6+'.'+_0x2a7d00['field']+_0xe1b8('0x23');_0x4a4f35[_0xe1b8('0x14')]=parseValue(_0xf0a42a,_0x2a7d00['operator'],_0x2a7d00['value']);return _0x4a4f35;};function parseOperator(_0x5297bc){var _0x552d6a;switch(_0x5297bc){case'$in':_0x552d6a='IN\x20?';break;case _0xe1b8('0x24'):_0x552d6a=_0xe1b8('0x25');break;case _0xe1b8('0x12'):_0x552d6a=_0xe1b8('0x26');break;case _0xe1b8('0x21'):_0x552d6a='<>\x20?';break;case'$substring':case _0xe1b8('0x27'):case _0xe1b8('0x28'):_0x552d6a=_0xe1b8('0x29');break;case _0xe1b8('0x2a'):_0x552d6a=_0xe1b8('0x2b');break;case _0xe1b8('0x16'):_0x552d6a='>\x20?';break;case _0xe1b8('0x17'):_0x552d6a=_0xe1b8('0x2c');break;case'$gte':_0x552d6a='>=\x20?';break;case _0xe1b8('0x13'):_0x552d6a=_0xe1b8('0x2d');break;}return _0x552d6a;}function parseValue(_0x1c5238,_0xdd39bf,_0x23d3c5){var _0xc5469e={'start':undefined,'end':undefined};switch(_0xdd39bf){case _0xe1b8('0x2e'):case'$notIn':_0xc5469e['start']=_0x23d3c5[_0xe1b8('0x7')](',');break;case _0xe1b8('0x2f'):_0xc5469e['start']='%'+_0x23d3c5+'%';break;case'$startsWith':_0xc5469e['start']=_0x23d3c5+'%';break;case _0xe1b8('0x28'):_0xc5469e[_0xe1b8('0x30')]='%'+_0x23d3c5;break;case _0xe1b8('0x13'):var _0x3e12ed=_0x23d3c5[_0xe1b8('0x7')](',');var _0x23d3c5=_0x3e12ed[_0xe1b8('0xa')]();var _0x365a09=_0x3e12ed[_0xe1b8('0x31')]();if(_0x1c5238===_0xe1b8('0x10')){_0x23d3c5=moment(_0x23d3c5)[_0xe1b8('0x32')](0x0,!![])[_0xe1b8('0x1a')]();_0x365a09=moment(_0x365a09)[_0xe1b8('0x32')](0x0,!![])['add'](0x17,_0xe1b8('0x33'))[_0xe1b8('0x18')](0x3b,_0xe1b8('0x34'))[_0xe1b8('0x18')](0x3b,'seconds')[_0xe1b8('0x1a')]();}_0xc5469e={'start':_0x23d3c5,'end':_0x365a09};break;default:_0xc5469e[_0xe1b8('0x30')]=_0x23d3c5;break;}return _0xc5469e;}
\ No newline at end of file
+var _0x7b25=['$lte','add','days','format','YYYY-MM-DD','castTo','text','CAST(','\x20AS\x20','field','$ne','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','$notIn','NOT\x20IN\x20?','=\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','<\x20?','>\x20?','<=\x20?','$gte','>=\x20?','start','pop','utcOffset','hours','lodash','moment','sqlOperator','startsWith','[$or]','and','[$and]','replace','split','length','slice','forEach','shift','filter','indexOf','map','push','buildExpression','DATE','operator','$eq','$between','value','includes','$gt'];(function(_0x419913,_0x24ae51){var _0x2d79eb=function(_0x2db37a){while(--_0x2db37a){_0x419913['push'](_0x419913['shift']());}};_0x2d79eb(++_0x24ae51);}(_0x7b25,0x137));var _0x57b2=function(_0xe59469,_0x4ffac9){_0xe59469=_0xe59469-0x0;var _0xe52a05=_0x7b25[_0xe59469];return _0xe52a05;};'use strict';var _=require(_0x57b2('0x0'));var moment=require(_0x57b2('0x1'));exports['parseSearch']=function(_0x244f3c){var _0x591876={'conditions':[]};_0x591876[_0x57b2('0x2')]=_[_0x57b2('0x3')](_0x244f3c,_0x57b2('0x4'))?'or':_0x57b2('0x5');var _0x453828=_0x244f3c['replace'](_0x57b2('0x6'),'')[_0x57b2('0x7')](_0x57b2('0x4'),'')[_0x57b2('0x8')]('||');for(var _0x36abc9=0x0;_0x36abc9<_0x453828[_0x57b2('0x9')];_0x36abc9++){var _0x133187=_0x453828[_0x36abc9]['split'](':=');var _0x525392=_0x133187[0x0];var _0x55584a=_0x133187[_0x57b2('0xa')](0x1);_0x55584a[_0x57b2('0xb')](function(_0x445270){var _0x5792d7=_0x445270['split']('[')[_0x57b2('0xc')]();var _0x236ced=_0x445270['match'](/\[(.*?)\]/g);_0x236ced[_0x57b2('0xb')](function(_0x1520ec){var _0x51b27b=_0x1520ec[_0x57b2('0x8')]('[')[_0x57b2('0xd')](function(_0x5187e3){return _0x5187e3[_0x57b2('0xe')](']')>-0x1;})[_0x57b2('0xf')](function(_0x484f21){return _0x484f21['split'](']')[0x0];})[0x0];_0x591876['conditions'][_0x57b2('0x10')]({'field':_0x525392,'operator':_0x5792d7,'value':_0x51b27b});});});}return _0x591876;};exports[_0x57b2('0x11')]=function(_0x827b63,_0x8b645e,_0x5ac60d){var _0x4846c4={};if(_0x8b645e===_0x57b2('0x12')){if(_0x5ac60d[_0x57b2('0x13')]===_0x57b2('0x14')){_0x5ac60d['operator']=_0x57b2('0x15');_0x5ac60d[_0x57b2('0x16')]+=','+_0x5ac60d[_0x57b2('0x16')];}else if(_[_0x57b2('0x17')]([_0x57b2('0x18'),_0x57b2('0x19')],_0x5ac60d['operator'])){_0x5ac60d[_0x57b2('0x16')]=moment(_0x5ac60d['value'])[_0x57b2('0x1a')](0x1,_0x57b2('0x1b'))[_0x57b2('0x1c')](_0x57b2('0x1d'));}}if(_0x5ac60d[_0x57b2('0x1e')]){_0x8b645e=_0x5ac60d[_0x57b2('0x1e')];_0x4846c4[_0x57b2('0x1f')]=_0x57b2('0x20')+_0x827b63+'.'+_0x5ac60d['field']+_0x57b2('0x21')+_0x5ac60d[_0x57b2('0x1e')]+')\x20'+parseOperator(_0x5ac60d[_0x57b2('0x13')]);}else{_0x4846c4[_0x57b2('0x1f')]=_0x827b63+'.'+_0x5ac60d[_0x57b2('0x22')]+'\x20'+parseOperator(_0x5ac60d[_0x57b2('0x13')]);}if(_[_0x57b2('0x17')]([_0x57b2('0x23'),'$notIn'],_0x5ac60d[_0x57b2('0x13')]))_0x4846c4[_0x57b2('0x1f')]='('+_0x4846c4[_0x57b2('0x1f')]+_0x57b2('0x24')+_0x827b63+'.'+_0x5ac60d[_0x57b2('0x22')]+_0x57b2('0x25');_0x4846c4['value']=parseValue(_0x8b645e,_0x5ac60d['operator'],_0x5ac60d['value']);return _0x4846c4;};function parseOperator(_0xcfba3a){var _0x4331e5;switch(_0xcfba3a){case _0x57b2('0x26'):_0x4331e5=_0x57b2('0x27');break;case _0x57b2('0x28'):_0x4331e5=_0x57b2('0x29');break;case _0x57b2('0x14'):_0x4331e5=_0x57b2('0x2a');break;case _0x57b2('0x23'):_0x4331e5='<>\x20?';break;case _0x57b2('0x2b'):case _0x57b2('0x2c'):case _0x57b2('0x2d'):_0x4331e5=_0x57b2('0x2e');break;case'$lt':_0x4331e5=_0x57b2('0x2f');break;case _0x57b2('0x18'):_0x4331e5=_0x57b2('0x30');break;case _0x57b2('0x19'):_0x4331e5=_0x57b2('0x31');break;case _0x57b2('0x32'):_0x4331e5=_0x57b2('0x33');break;case _0x57b2('0x15'):_0x4331e5='BETWEEN\x20?\x20AND\x20?';break;}return _0x4331e5;}function parseValue(_0x138074,_0x3684f5,_0x9b8c21){var _0x1b2e47={'start':undefined,'end':undefined};switch(_0x3684f5){case'$in':case _0x57b2('0x28'):_0x1b2e47[_0x57b2('0x34')]=_0x9b8c21[_0x57b2('0x8')](',');break;case'$substring':_0x1b2e47[_0x57b2('0x34')]='%'+_0x9b8c21+'%';break;case _0x57b2('0x2c'):_0x1b2e47[_0x57b2('0x34')]=_0x9b8c21+'%';break;case'$endsWith':_0x1b2e47[_0x57b2('0x34')]='%'+_0x9b8c21;break;case _0x57b2('0x15'):var _0x49c98d=_0x9b8c21['split'](',');var _0x9b8c21=_0x49c98d[_0x57b2('0xc')]();var _0xb38b03=_0x49c98d[_0x57b2('0x35')]();if(_0x138074===_0x57b2('0x12')){_0x9b8c21=moment(_0x9b8c21)[_0x57b2('0x36')](0x0,!![])['format']();_0xb38b03=moment(_0xb38b03)[_0x57b2('0x36')](0x0,!![])[_0x57b2('0x1a')](0x17,_0x57b2('0x37'))[_0x57b2('0x1a')](0x3b,'minutes')[_0x57b2('0x1a')](0x3b,'seconds')[_0x57b2('0x1c')]();}_0x1b2e47={'start':_0x9b8c21,'end':_0xb38b03};break;default:_0x1b2e47[_0x57b2('0x34')]=_0x9b8c21;break;}return _0x1b2e47;}
\ No newline at end of file
index b9b4f82..3ce98ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc95f=['name','uniqueid','isArray','split','limit','offset','map','indexOf','cast','priority','unsigned','substr','DESC','ASC','omit','length','isObject','isString','unset','hasOwnProperty','^[+]?[0-9]*$','isEmail','match','getFullTextValue','push','join','getOptions','query','$id','model','intersection','attributes','nolimit','order','sort','where','filter','object','includes','merge','lower','col','options','lodash','sequelize','moment','parse','keys','fields','filters','isEmpty','forOwn','type','DATE','isPlainObject','$gte','format','YYYY-MM-DD','utc','$lte','subtract'];(function(_0x37a416,_0x14ee6a){var _0x47959e=function(_0x57aa93){while(--_0x57aa93){_0x37a416['push'](_0x37a416['shift']());}};_0x47959e(++_0x14ee6a);}(_0xc95f,0xe2));var _0xfc95=function(_0x20a6bd,_0xaeb074){_0x20a6bd=_0x20a6bd-0x0;var _0x318a91=_0xc95f[_0x20a6bd];return _0x318a91;};'use strict';var _=require(_0xfc95('0x0'));var sequelize=require(_0xfc95('0x1'));var moment=require(_0xfc95('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x2c0a03){var _0x1e4820=['ne'];try{var _0x169b37=JSON[_0xfc95('0x3')](_0x2c0a03);var _0x5a4e15=Object[_0xfc95('0x4')](_0x169b37)[0x0];return _0x1e4820['includes'](_0x5a4e15);}catch(_0x4df20f){return![];}}function getOperatorValue(_0x97e2d8){var _0x4923f7=JSON['parse'](_0x97e2d8);var _0x5eeb24=Object[_0xfc95('0x4')](_0x4923f7)[0x0];var _0xa83aa1=_0x4923f7[_0x5eeb24];return{['$'+_0x5eeb24]:_0xa83aa1};}exports[_0xfc95('0x5')]=function(_0x87e6f0){var _0x2eaae0=null;if(_0x87e6f0){_0x2eaae0=_0x87e6f0['split'](',');}return _0x2eaae0;};exports[_0xfc95('0x6')]=function(_0x34d4c6,_0x33b8e2){var _0x39bed6={};if(!_[_0xfc95('0x7')](_0x34d4c6)){_[_0xfc95('0x8')](_0x34d4c6,function(_0x1b0979,_0x5b4a15){try{if(_0x33b8e2){var _0x4612c7=_['find'](_0x33b8e2,{'name':_0x5b4a15})||{};if(hasSequelizeOperator(_0x1b0979)){_0x39bed6[_0x5b4a15]=getOperatorValue(_0x1b0979);}else if(_0x4612c7[_0xfc95('0x9')]===_0xfc95('0xa')&&_[_0xfc95('0xb')](_0x1b0979)){var _0x36ba7c=JSON[_0xfc95('0x3')](_0x1b0979);var _0x6e6bcd={'$gte':moment(moment(_0x36ba7c[_0xfc95('0xc')])[_0xfc95('0xd')](_0xfc95('0xe')))[_0xfc95('0xf')]()[_0xfc95('0xd')](),'$lte':moment(moment(_0x36ba7c[_0xfc95('0x10')])['format'](_0xfc95('0xe')))[_0xfc95('0xf')]()[_0xfc95('0x11')](0x1,'s')[_0xfc95('0xd')]()};_0x39bed6[_0x5b4a15]=_0x6e6bcd;}else if(_0x4612c7[_0xfc95('0x12')]===_0xfc95('0x13')){_0x39bed6[_0x5b4a15]=_0x1b0979;}else{_0x39bed6[_0x5b4a15]=_[_0xfc95('0x14')](_0x1b0979)?_0x1b0979:JSON['parse'](_0x1b0979);}}else{_0x39bed6[_0x5b4a15]=_['isArray'](_0x1b0979)?_0x1b0979:JSON['parse'](_0x1b0979);}}catch(_0x3fe4e4){_0x39bed6[_0x5b4a15]=_0x1b0979[_0xfc95('0x15')](',');}});}return _0x39bed6;};exports[_0xfc95('0x16')]=function(_0x423198){_0x423198=parseInt(_0x423198,0xa);if(!_0x423198||_0x423198<0x0){_0x423198=LIMIT_VALUE;}return _0x423198;};exports[_0xfc95('0x17')]=function(_0x59466a){_0x59466a=parseInt(_0x59466a,0xa);if(!_0x59466a||_0x59466a<0x0){_0x59466a=0x0;}return _0x59466a;};exports['sort']=function(_0x4ce6ee){var _0x42711f,_0x3abf7b=null;if(_0x4ce6ee){_0x42711f=_0x4ce6ee[_0xfc95('0x15')](',');_0x3abf7b=_[_0xfc95('0x18')](_0x42711f,function(_0x1d8e83){if(_0x1d8e83[_0xfc95('0x19')]('-')===0x0){return[_0x1d8e83==='priority'?sequelize[_0xfc95('0x1a')](sequelize['col'](_0xfc95('0x1b')),_0xfc95('0x1c')):_0x1d8e83[_0xfc95('0x1d')](0x1),_0xfc95('0x1e')];}else{return[_0x1d8e83==='priority'?sequelize[_0xfc95('0x1a')](sequelize['col'](_0xfc95('0x1b')),_0xfc95('0x1c')):_0x1d8e83,_0xfc95('0x1f')];}});}return _0x3abf7b;};exports[_0xfc95('0x20')]=function(_0x1e5397,_0x3a3d02){if(_[_0xfc95('0x7')](_0x1e5397)){return _0x1e5397;}if(_[_0xfc95('0x14')](_0x1e5397)){for(var _0x53840d=0x0;_0x53840d<_0x1e5397[_0xfc95('0x21')];_0x53840d+=0x1){_0x1e5397[_0x53840d]=this[_0xfc95('0x20')](_0x1e5397[_0x53840d],_0x3a3d02);}return _0x1e5397;}if(!_[_0xfc95('0x22')](_0x1e5397)){return _0x1e5397;}if(_[_0xfc95('0x23')](_0x3a3d02)){_0x3a3d02=[_0x3a3d02];}if(!_[_0xfc95('0x14')](_0x3a3d02)){return _0x1e5397;}for(var _0x213abe=0x0;_0x213abe<_0x3a3d02['length'];_0x213abe+=0x1){_[_0xfc95('0x24')](_0x1e5397,_0x3a3d02[_0x213abe]);}for(var _0x3bd86f in _0x1e5397){if(_0x1e5397[_0xfc95('0x25')](_0x3bd86f)){_0x1e5397[_0x3bd86f]=this['omit'](_0x1e5397[_0x3bd86f],_0x3a3d02);}}return _0x1e5397;};exports['isNumeric']=function(_0x51a509){return _0x51a509['match'](RegExp(_0xfc95('0x26')))?!![]:![];};exports[_0xfc95('0x27')]=function(_0x296cb0){return _0x296cb0[_0xfc95('0x28')](/^\S+@\S+$/)?!![]:![];};exports[_0xfc95('0x29')]=function(_0x4d5db3){var _0x44e2f8=[];_0x4d5db3[_0xfc95('0x15')](/[ ,]+/)['forEach'](function(_0x1675a7){_0x1675a7=_0x1675a7['replace'](/([^:]")"+/g,'$1');_0x1675a7='+'+_0x1675a7+'*';if(_0x1675a7['includes']('@'))_0x1675a7='\x22'+_0x1675a7+'\x22';_0x44e2f8[_0xfc95('0x2a')](_0x1675a7);});return _0x44e2f8[_0xfc95('0x2b')]('\x20');};exports[_0xfc95('0x2c')]=function(_0x5acade,_0x5f10c3,_0x2f370b){var _0x333a09={},_0x446583={};if(_0x5f10c3[_0xfc95('0x2d')][_0xfc95('0x2e')]){_0x5f10c3[_0xfc95('0x2d')]['id']=_0x5f10c3['query'][_0xfc95('0x2e')];delete _0x5f10c3[_0xfc95('0x2d')][_0xfc95('0x2e')];}_0x333a09[_0xfc95('0x2f')]=_[_0xfc95('0x18')](_0x5acade,_0xfc95('0x12'));_0x333a09['query']=_[_0xfc95('0x4')](_0x5f10c3['query']);_0x333a09[_0xfc95('0x6')]=_[_0xfc95('0x30')](_0x333a09[_0xfc95('0x2f')],_0x333a09[_0xfc95('0x2d')]);_0x446583[_0xfc95('0x31')]=_[_0xfc95('0x30')](_0x333a09[_0xfc95('0x2f')],this[_0xfc95('0x5')](_0x5f10c3[_0xfc95('0x2d')][_0xfc95('0x5')]));_0x446583[_0xfc95('0x31')]=_0x446583[_0xfc95('0x31')][_0xfc95('0x21')]?_0x446583[_0xfc95('0x31')]:_0x333a09['model'];if(!_0x5f10c3[_0xfc95('0x2d')]['hasOwnProperty'](_0xfc95('0x32'))){_0x446583[_0xfc95('0x16')]=this[_0xfc95('0x16')](_0x5f10c3[_0xfc95('0x2d')][_0xfc95('0x16')]);_0x446583['offset']=this[_0xfc95('0x17')](_0x5f10c3['query'][_0xfc95('0x17')]);}_0x446583[_0xfc95('0x33')]=this[_0xfc95('0x34')](_0x5f10c3['query'][_0xfc95('0x34')]);_0x446583[_0xfc95('0x35')]=this[_0xfc95('0x6')](_['pick'](_0x5f10c3['query'],_0x333a09[_0xfc95('0x6')]),_0x5acade);if(_0x5f10c3[_0xfc95('0x2d')][_0xfc95('0x36')]){var _0x50fcff=_0x5acade;var _0x30ccfd=_0x5f10c3[_0xfc95('0x2d')][_0xfc95('0x36')];if(typeof _0x30ccfd===_0xfc95('0x37')){_0x50fcff=_[_0xfc95('0x36')](_0x5acade,function(_0x16f4c8){return _[_0xfc95('0x38')](_0x30ccfd['columns'],_0x16f4c8[_0xfc95('0x12')]);});_0x30ccfd=_0x30ccfd['value'];}_0x446583[_0xfc95('0x35')]=_[_0xfc95('0x39')](_0x446583['where'],{'$or':_[_0xfc95('0x18')](_0x50fcff,function(_0x3fe225){if(_0x3fe225['type']!=='VIRTUAL'){if(_0x2f370b){return sequelize[_0xfc95('0x35')](sequelize['fn'](_0xfc95('0x3a'),sequelize[_0xfc95('0x3b')](_0x3fe225[_0xfc95('0x12')])),{'$like':sequelize['fn'](_0xfc95('0x3a'),'%'+_0x5f10c3[_0xfc95('0x2d')][_0xfc95('0x36')]+'%')});}else{var _0x501dbf={};_0x501dbf[_0x3fe225[_0xfc95('0x12')]]={'$like':'%'+_0x5f10c3[_0xfc95('0x2d')]['filter']+'%'};return _0x501dbf;}}})});}_0x446583=_[_0xfc95('0x39')]({},_0x446583,_0x5f10c3[_0xfc95('0x3c')]);return _0x446583;};
\ No newline at end of file
+var _0x506a=['keys','includes','fields','split','filters','isEmpty','isPlainObject','parse','format','YYYY-MM-DD','utc','$lte','subtract','name','limit','sort','map','indexOf','priority','cast','col','unsigned','substr','DESC','omit','isArray','length','isObject','isString','hasOwnProperty','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','replace','push','join','getOptions','$id','query','intersection','model','attributes','offset','order','where','filter','object','columns','value','type','VIRTUAL','lower','options','lodash','moment'];(function(_0x68c4cf,_0x1aa460){var _0x2412c5=function(_0x4dbc30){while(--_0x4dbc30){_0x68c4cf['push'](_0x68c4cf['shift']());}};_0x2412c5(++_0x1aa460);}(_0x506a,0x1c6));var _0xa506=function(_0x5603b9,_0x2f72b4){_0x5603b9=_0x5603b9-0x0;var _0x5dabec=_0x506a[_0x5603b9];return _0x5dabec;};'use strict';var _=require(_0xa506('0x0'));var sequelize=require('sequelize');var moment=require(_0xa506('0x1'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x2ae955){var _0x158285=['ne'];try{var _0x5859ae=JSON['parse'](_0x2ae955);var _0x20fb9f=Object[_0xa506('0x2')](_0x5859ae)[0x0];return _0x158285[_0xa506('0x3')](_0x20fb9f);}catch(_0x1b1916){return![];}}function getOperatorValue(_0x1d7afa){var _0x2ecd3e=JSON['parse'](_0x1d7afa);var _0x691c05=Object[_0xa506('0x2')](_0x2ecd3e)[0x0];var _0x49f0b5=_0x2ecd3e[_0x691c05];return{['$'+_0x691c05]:_0x49f0b5};}exports[_0xa506('0x4')]=function(_0xd0a405){var _0x1671ee=null;if(_0xd0a405){_0x1671ee=_0xd0a405[_0xa506('0x5')](',');}return _0x1671ee;};exports[_0xa506('0x6')]=function(_0x44e5fe,_0x186e66){var _0x302a08={};if(!_[_0xa506('0x7')](_0x44e5fe)){_['forOwn'](_0x44e5fe,function(_0x31c466,_0x35afa9){try{if(_0x186e66){var _0x21cf74=_['find'](_0x186e66,{'name':_0x35afa9})||{};if(hasSequelizeOperator(_0x31c466)){_0x302a08[_0x35afa9]=getOperatorValue(_0x31c466);}else if(_0x21cf74['type']==='DATE'&&_[_0xa506('0x8')](_0x31c466)){var _0x598b8a=JSON[_0xa506('0x9')](_0x31c466);var _0x21059a={'$gte':moment(moment(_0x598b8a['$gte'])[_0xa506('0xa')](_0xa506('0xb')))[_0xa506('0xc')]()[_0xa506('0xa')](),'$lte':moment(moment(_0x598b8a[_0xa506('0xd')])[_0xa506('0xa')](_0xa506('0xb')))[_0xa506('0xc')]()[_0xa506('0xe')](0x1,'s')[_0xa506('0xa')]()};_0x302a08[_0x35afa9]=_0x21059a;}else if(_0x21cf74[_0xa506('0xf')]==='uniqueid'){_0x302a08[_0x35afa9]=_0x31c466;}else{_0x302a08[_0x35afa9]=_['isArray'](_0x31c466)?_0x31c466:JSON[_0xa506('0x9')](_0x31c466);}}else{_0x302a08[_0x35afa9]=_['isArray'](_0x31c466)?_0x31c466:JSON[_0xa506('0x9')](_0x31c466);}}catch(_0x46241e){_0x302a08[_0x35afa9]=_0x31c466[_0xa506('0x5')](',');}});}return _0x302a08;};exports[_0xa506('0x10')]=function(_0x20ebec){_0x20ebec=parseInt(_0x20ebec,0xa);if(!_0x20ebec||_0x20ebec<0x0){_0x20ebec=LIMIT_VALUE;}return _0x20ebec;};exports['offset']=function(_0x3e6798){_0x3e6798=parseInt(_0x3e6798,0xa);if(!_0x3e6798||_0x3e6798<0x0){_0x3e6798=0x0;}return _0x3e6798;};exports[_0xa506('0x11')]=function(_0x3390d7){var _0x3244d2,_0x5c9c0a=null;if(_0x3390d7){_0x3244d2=_0x3390d7[_0xa506('0x5')](',');_0x5c9c0a=_[_0xa506('0x12')](_0x3244d2,function(_0x38e17b){if(_0x38e17b[_0xa506('0x13')]('-')===0x0){return[_0x38e17b===_0xa506('0x14')?sequelize[_0xa506('0x15')](sequelize[_0xa506('0x16')](_0xa506('0x14')),_0xa506('0x17')):_0x38e17b[_0xa506('0x18')](0x1),_0xa506('0x19')];}else{return[_0x38e17b===_0xa506('0x14')?sequelize[_0xa506('0x15')](sequelize[_0xa506('0x16')](_0xa506('0x14')),_0xa506('0x17')):_0x38e17b,'ASC'];}});}return _0x5c9c0a;};exports[_0xa506('0x1a')]=function(_0x5dc6f1,_0x211d14){if(_[_0xa506('0x7')](_0x5dc6f1)){return _0x5dc6f1;}if(_[_0xa506('0x1b')](_0x5dc6f1)){for(var _0x5d7f51=0x0;_0x5d7f51<_0x5dc6f1[_0xa506('0x1c')];_0x5d7f51+=0x1){_0x5dc6f1[_0x5d7f51]=this[_0xa506('0x1a')](_0x5dc6f1[_0x5d7f51],_0x211d14);}return _0x5dc6f1;}if(!_[_0xa506('0x1d')](_0x5dc6f1)){return _0x5dc6f1;}if(_[_0xa506('0x1e')](_0x211d14)){_0x211d14=[_0x211d14];}if(!_['isArray'](_0x211d14)){return _0x5dc6f1;}for(var _0x7e1e3d=0x0;_0x7e1e3d<_0x211d14[_0xa506('0x1c')];_0x7e1e3d+=0x1){_['unset'](_0x5dc6f1,_0x211d14[_0x7e1e3d]);}for(var _0x591847 in _0x5dc6f1){if(_0x5dc6f1[_0xa506('0x1f')](_0x591847)){_0x5dc6f1[_0x591847]=this[_0xa506('0x1a')](_0x5dc6f1[_0x591847],_0x211d14);}}return _0x5dc6f1;};exports['isNumeric']=function(_0x133a2e){return _0x133a2e[_0xa506('0x20')](RegExp(_0xa506('0x21')))?!![]:![];};exports[_0xa506('0x22')]=function(_0xb69a79){return _0xb69a79[_0xa506('0x20')](/^\S+@\S+$/)?!![]:![];};exports[_0xa506('0x23')]=function(_0x1683e0){var _0x5e16c0=[];_0x1683e0[_0xa506('0x5')](/[ ,]+/)[_0xa506('0x24')](function(_0x2bfb49){_0x2bfb49=_0x2bfb49[_0xa506('0x25')](/([^:]")"+/g,'$1');_0x2bfb49='+'+_0x2bfb49+'*';if(_0x2bfb49['includes']('@'))_0x2bfb49='\x22'+_0x2bfb49+'\x22';_0x5e16c0[_0xa506('0x26')](_0x2bfb49);});return _0x5e16c0[_0xa506('0x27')]('\x20');};exports[_0xa506('0x28')]=function(_0x4af2b5,_0x4c27e9,_0x120a16){var _0x21bbdf={},_0x942c87={};if(_0x4c27e9['query'][_0xa506('0x29')]){_0x4c27e9[_0xa506('0x2a')]['id']=_0x4c27e9[_0xa506('0x2a')][_0xa506('0x29')];delete _0x4c27e9[_0xa506('0x2a')]['$id'];}_0x21bbdf['model']=_[_0xa506('0x12')](_0x4af2b5,_0xa506('0xf'));_0x21bbdf[_0xa506('0x2a')]=_[_0xa506('0x2')](_0x4c27e9['query']);_0x21bbdf[_0xa506('0x6')]=_[_0xa506('0x2b')](_0x21bbdf[_0xa506('0x2c')],_0x21bbdf['query']);_0x942c87[_0xa506('0x2d')]=_[_0xa506('0x2b')](_0x21bbdf[_0xa506('0x2c')],this[_0xa506('0x4')](_0x4c27e9[_0xa506('0x2a')][_0xa506('0x4')]));_0x942c87['attributes']=_0x942c87[_0xa506('0x2d')][_0xa506('0x1c')]?_0x942c87['attributes']:_0x21bbdf['model'];if(!_0x4c27e9[_0xa506('0x2a')]['hasOwnProperty']('nolimit')){_0x942c87[_0xa506('0x10')]=this[_0xa506('0x10')](_0x4c27e9[_0xa506('0x2a')][_0xa506('0x10')]);_0x942c87['offset']=this[_0xa506('0x2e')](_0x4c27e9['query']['offset']);}_0x942c87[_0xa506('0x2f')]=this[_0xa506('0x11')](_0x4c27e9[_0xa506('0x2a')][_0xa506('0x11')]);_0x942c87[_0xa506('0x30')]=this[_0xa506('0x6')](_['pick'](_0x4c27e9['query'],_0x21bbdf[_0xa506('0x6')]),_0x4af2b5);if(_0x4c27e9['query'][_0xa506('0x31')]){var _0x591a8c=_0x4af2b5;var _0x5b4a2e=_0x4c27e9[_0xa506('0x2a')][_0xa506('0x31')];if(typeof _0x5b4a2e===_0xa506('0x32')){_0x591a8c=_[_0xa506('0x31')](_0x4af2b5,function(_0x12cf17){return _['includes'](_0x5b4a2e[_0xa506('0x33')],_0x12cf17[_0xa506('0xf')]);});_0x5b4a2e=_0x5b4a2e[_0xa506('0x34')];}_0x942c87[_0xa506('0x30')]=_['merge'](_0x942c87[_0xa506('0x30')],{'$or':_[_0xa506('0x12')](_0x591a8c,function(_0x41a855){if(_0x41a855[_0xa506('0x35')]!==_0xa506('0x36')){if(_0x120a16){return sequelize['where'](sequelize['fn'](_0xa506('0x37'),sequelize[_0xa506('0x16')](_0x41a855[_0xa506('0xf')])),{'$like':sequelize['fn']('lower','%'+_0x4c27e9[_0xa506('0x2a')][_0xa506('0x31')]+'%')});}else{var _0x15379c={};_0x15379c[_0x41a855[_0xa506('0xf')]]={'$like':'%'+_0x4c27e9[_0xa506('0x2a')]['filter']+'%'};return _0x15379c;}}})});}_0x942c87=_['merge']({},_0x942c87,_0x4c27e9[_0xa506('0x38')]);return _0x942c87;};
\ No newline at end of file
index 75c868b..d2c58f6 100644 (file)
@@ -80,11 +80,5 @@ module.exports = {
   },
   encrypt: {
     algorithm: 'aes192'
-  },
-  activedirectory: {
-    baseDN: process.env.AD_BASEDN || '',
-    url: process.env.AD_URL,
-    domain: process.env.AD_DOMAIN
-  },
-  licenseToken: '35c0dc46-5874-5a7c-f6ef-95aa3f3e57e4'
+  }
 };
\ No newline at end of file
index e7cbfaa..856251b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x935f=['json','initialize','express','serve-favicon','body-parser','method-override','cookie-parser','errorhandler','moment','./environment','../mysqldb','default','get','env','production','set','appPath','join','root','development','test','client','use','json\x20replacer','toISOString','split','static','views','/server/views','engine','html','ejs','renderFile','view\x20engine','urlencoded','50mb'];(function(_0x135424,_0xe21fa7){var _0x28618e=function(_0x103926){while(--_0x103926){_0x135424['push'](_0x135424['shift']());}};_0x28618e(++_0xe21fa7);}(_0x935f,0xda));var _0xf935=function(_0x3052bb,_0x3f9aac){_0x3052bb=_0x3052bb-0x0;var _0x1a1865=_0x935f[_0x3052bb];return _0x1a1865;};'use strict';var express=require(_0xf935('0x0'));var favicon=require(_0xf935('0x1'));var bodyParser=require(_0xf935('0x2'));var methodOverride=require(_0xf935('0x3'));var cookieParser=require(_0xf935('0x4'));var errorHandler=require(_0xf935('0x5'));var path=require('path');var passport=require('passport');var cors=require('cors');var moment=require(_0xf935('0x6'));var config=require(_0xf935('0x7'));var db=require(_0xf935('0x8'))['db'];exports[_0xf935('0x9')]=function(_0x21f750){var _0x5f3457=_0x21f750[_0xf935('0xa')](_0xf935('0xb'));if(_0x5f3457===_0xf935('0xc')){_0x21f750[_0xf935('0xd')](_0xf935('0xe'),path[_0xf935('0xf')](config[_0xf935('0x10')],'public'));}if(_0x5f3457===_0xf935('0x11')||_0x5f3457===_0xf935('0x12')){_0x21f750['set'](_0xf935('0xe'),path[_0xf935('0xf')](config[_0xf935('0x10')],_0xf935('0x13')));_0x21f750[_0xf935('0x14')](errorHandler());}_0x21f750[_0xf935('0xd')](_0xf935('0x15'),function(_0x331ae9,_0x577fd0){if(this[_0x331ae9]instanceof Date){_0x577fd0=this[_0x331ae9][_0xf935('0x16')]()[_0xf935('0x17')]('.')[0x0]+'Z';}return _0x577fd0;});_0x21f750[_0xf935('0x14')](express[_0xf935('0x18')](_0x21f750[_0xf935('0xa')](_0xf935('0xe'))));_0x21f750[_0xf935('0xd')](_0xf935('0x19'),config[_0xf935('0x10')]+_0xf935('0x1a'));_0x21f750[_0xf935('0x1b')](_0xf935('0x1c'),require(_0xf935('0x1d'))[_0xf935('0x1e')]);_0x21f750[_0xf935('0xd')](_0xf935('0x1f'),_0xf935('0x1c'));_0x21f750[_0xf935('0x14')](bodyParser[_0xf935('0x20')]({'limit':_0xf935('0x21'),'extended':!![]}));_0x21f750[_0xf935('0x14')](bodyParser[_0xf935('0x22')]({'limit':_0xf935('0x21')}));_0x21f750['use'](cors());_0x21f750[_0xf935('0x14')](methodOverride());_0x21f750['use'](cookieParser());_0x21f750[_0xf935('0x14')](passport[_0xf935('0x23')]());};
\ No newline at end of file
+var _0x5d24=['test','appPath','use','json\x20replacer','split','static','/server/views','html','ejs','renderFile','view\x20engine','50mb','initialize','express','serve-favicon','body-parser','method-override','cookie-parser','errorhandler','path','passport','cors','moment','../mysqldb','default','get','env','production','set','join','root','public','development'];(function(_0x6317d6,_0x424384){var _0x5add4d=function(_0x176118){while(--_0x176118){_0x6317d6['push'](_0x6317d6['shift']());}};_0x5add4d(++_0x424384);}(_0x5d24,0xf4));var _0x45d2=function(_0x53101c,_0x527a86){_0x53101c=_0x53101c-0x0;var _0x26ebff=_0x5d24[_0x53101c];return _0x26ebff;};'use strict';var express=require(_0x45d2('0x0'));var favicon=require(_0x45d2('0x1'));var bodyParser=require(_0x45d2('0x2'));var methodOverride=require(_0x45d2('0x3'));var cookieParser=require(_0x45d2('0x4'));var errorHandler=require(_0x45d2('0x5'));var path=require(_0x45d2('0x6'));var passport=require(_0x45d2('0x7'));var cors=require(_0x45d2('0x8'));var moment=require(_0x45d2('0x9'));var config=require('./environment');var db=require(_0x45d2('0xa'))['db'];exports[_0x45d2('0xb')]=function(_0x5ea464){var _0x524d23=_0x5ea464[_0x45d2('0xc')](_0x45d2('0xd'));if(_0x524d23===_0x45d2('0xe')){_0x5ea464[_0x45d2('0xf')]('appPath',path[_0x45d2('0x10')](config[_0x45d2('0x11')],_0x45d2('0x12')));}if(_0x524d23===_0x45d2('0x13')||_0x524d23===_0x45d2('0x14')){_0x5ea464[_0x45d2('0xf')](_0x45d2('0x15'),path[_0x45d2('0x10')](config[_0x45d2('0x11')],'client'));_0x5ea464[_0x45d2('0x16')](errorHandler());}_0x5ea464[_0x45d2('0xf')](_0x45d2('0x17'),function(_0x14b41b,_0x580d59){if(this[_0x14b41b]instanceof Date){_0x580d59=this[_0x14b41b]['toISOString']()[_0x45d2('0x18')]('.')[0x0]+'Z';}return _0x580d59;});_0x5ea464['use'](express[_0x45d2('0x19')](_0x5ea464[_0x45d2('0xc')]('appPath')));_0x5ea464[_0x45d2('0xf')]('views',config[_0x45d2('0x11')]+_0x45d2('0x1a'));_0x5ea464['engine'](_0x45d2('0x1b'),require(_0x45d2('0x1c'))[_0x45d2('0x1d')]);_0x5ea464['set'](_0x45d2('0x1e'),_0x45d2('0x1b'));_0x5ea464[_0x45d2('0x16')](bodyParser['urlencoded']({'limit':_0x45d2('0x1f'),'extended':!![]}));_0x5ea464[_0x45d2('0x16')](bodyParser['json']({'limit':_0x45d2('0x1f')}));_0x5ea464[_0x45d2('0x16')](cors());_0x5ea464[_0x45d2('0x16')](methodOverride());_0x5ea464[_0x45d2('0x16')](cookieParser());_0x5ea464[_0x45d2('0x16')](passport[_0x45d2('0x20')]());};
\ No newline at end of file
index 2a6ae24..bb33d25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc893=['length','filter','head','mac','address','getFirstInterface','cpus','map','model','join','createHash','md5','hex','getUuid','platform','licenseToken','test','win32','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname','macAddress','ipAddress','update','substring','lodash','crypto','bimedia-machine-uuid','execSync','../environment','orderBy','keys'];(function(_0x44ed50,_0x4b4a68){var _0x34930c=function(_0x59bf4d){while(--_0x59bf4d){_0x44ed50['push'](_0x44ed50['shift']());}};_0x34930c(++_0x4b4a68);}(_0xc893,0x101));var _0x3c89=function(_0x2f66cb,_0x59a2ce){_0x2f66cb=_0x2f66cb-0x0;var _0x431bdc=_0xc893[_0x2f66cb];return _0x431bdc;};'use strict';var _=require(_0x3c89('0x0'));var os=require('os');var crypto=require(_0x3c89('0x1'));var machine=require(_0x3c89('0x2'));var exec=require('child_process')[_0x3c89('0x3')];var config=require(_0x3c89('0x4'));function getInterfaces(){var _0x2b2fa8=[];var _0x47865e=os['networkInterfaces']();var _0x1c5e85=_[_0x3c89('0x5')](_[_0x3c89('0x6')](_0x47865e));for(var _0x141c03=0x0;_0x141c03<_0x1c5e85[_0x3c89('0x7')];_0x141c03++){var _0xea032d=_0x47865e[_0x1c5e85[_0x141c03]][_0x3c89('0x8')](function(_0x4851a6){return _0x4851a6['family']==='IPv4'&&_0x4851a6['internal']===![];});_0x2b2fa8=_0x2b2fa8['concat'](_0xea032d);}return _0x2b2fa8;}function getFirstInterface(){var _0x44c217=_[_0x3c89('0x9')](getInterfaces());return{'macAddress':_0x44c217&&_0x44c217[_0x3c89('0xa')]?_0x44c217[_0x3c89('0xa')]:'00:00:00:00:00:00','ipAddress':_0x44c217&&_0x44c217[_0x3c89('0xb')]?_0x44c217[_0x3c89('0xb')]:'127.0.0.1'};}exports[_0x3c89('0xc')]=getFirstInterface;function getCPUhash(){var _0x724db3=_[_0x3c89('0x5')](os[_0x3c89('0xd')]()[_0x3c89('0xe')](function(_0x562427){return _0x562427[_0x3c89('0xf')];}))[_0x3c89('0x10')](':');return crypto[_0x3c89('0x11')](_0x3c89('0x12'))['update'](_0x724db3)['digest'](_0x3c89('0x13'));}exports[_0x3c89('0x14')]=function(){var _0x3311a4=os[_0x3c89('0x15')]();var _0x29f86d=/[0-9a-f-]{36}/;if(config[_0x3c89('0x16')]&&_0x29f86d[_0x3c89('0x17')](config[_0x3c89('0x16')])){return config['licenseToken'];}else if(_0x3311a4===_0x3c89('0x18')){return exec(_0x3c89('0x19'),{'encoding':_0x3c89('0x1a')})[_0x3c89('0x1b')]('\x0d\x0a','');}else{var _0x1fe5e2=getFirstInterface();var _0x250221=getCPUhash();var _0x4a7776=_0x250221+'|'+os[_0x3c89('0x1c')]()+'|'+_0x1fe5e2[_0x3c89('0x1d')]+'|'+_0x1fe5e2[_0x3c89('0x1e')];var _0xae9df5=crypto['createHash'](_0x3c89('0x12'))[_0x3c89('0x1f')](_0x4a7776)['digest'](_0x3c89('0x13'));return _0xae9df5[_0x3c89('0x20')](0x0,0x8)+'-'+_0xae9df5['substring'](0x8,0xc)+'-'+_0xae9df5[_0x3c89('0x20')](0xc,0x10)+'-'+_0xae9df5[_0x3c89('0x20')](0x10,0x14)+'-'+_0xae9df5[_0x3c89('0x20')](0x14);}};
\ No newline at end of file
+var _0x4842=['../environment','networkInterfaces','orderBy','keys','length','filter','family','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','cpus','map','model','join','createHash','md5','update','digest','getUuid','platform','licenseToken','win32','dmidecode\x20--string\x20system-uuid','replace','macAddress','ipAddress','hex','substring','crypto','child_process','execSync'];(function(_0x25d608,_0x217360){var _0x591793=function(_0x37e5f0){while(--_0x37e5f0){_0x25d608['push'](_0x25d608['shift']());}};_0x591793(++_0x217360);}(_0x4842,0x1b9));var _0x2484=function(_0x4f8c09,_0x484964){_0x4f8c09=_0x4f8c09-0x0;var _0x4c648f=_0x4842[_0x4f8c09];return _0x4c648f;};'use strict';var _=require('lodash');var os=require('os');var crypto=require(_0x2484('0x0'));var machine=require('bimedia-machine-uuid');var exec=require(_0x2484('0x1'))[_0x2484('0x2')];var config=require(_0x2484('0x3'));function getInterfaces(){var _0x1ab81c=[];var _0xd25adb=os[_0x2484('0x4')]();var _0x180b3d=_[_0x2484('0x5')](_[_0x2484('0x6')](_0xd25adb));for(var _0x374329=0x0;_0x374329<_0x180b3d[_0x2484('0x7')];_0x374329++){var _0x1eafd8=_0xd25adb[_0x180b3d[_0x374329]][_0x2484('0x8')](function(_0x278898){return _0x278898[_0x2484('0x9')]===_0x2484('0xa')&&_0x278898[_0x2484('0xb')]===![];});_0x1ab81c=_0x1ab81c[_0x2484('0xc')](_0x1eafd8);}return _0x1ab81c;}function getFirstInterface(){var _0x411d61=_[_0x2484('0xd')](getInterfaces());return{'macAddress':_0x411d61&&_0x411d61[_0x2484('0xe')]?_0x411d61[_0x2484('0xe')]:_0x2484('0xf'),'ipAddress':_0x411d61&&_0x411d61[_0x2484('0x10')]?_0x411d61[_0x2484('0x10')]:_0x2484('0x11')};}exports[_0x2484('0x12')]=getFirstInterface;function getCPUhash(){var _0x6d5c58=_[_0x2484('0x5')](os[_0x2484('0x13')]()[_0x2484('0x14')](function(_0x2a72ca){return _0x2a72ca[_0x2484('0x15')];}))[_0x2484('0x16')](':');return crypto[_0x2484('0x17')](_0x2484('0x18'))[_0x2484('0x19')](_0x6d5c58)[_0x2484('0x1a')]('hex');}exports[_0x2484('0x1b')]=function(){var _0x2d615d=os[_0x2484('0x1c')]();var _0x5c7bad=/[0-9a-f-]{36}/;if(config[_0x2484('0x1d')]&&_0x5c7bad['test'](config[_0x2484('0x1d')])){return config[_0x2484('0x1d')];}else if(_0x2d615d===_0x2484('0x1e')){return exec(_0x2484('0x1f'),{'encoding':'utf8'})[_0x2484('0x20')]('\x0d\x0a','');}else{var _0x134c6d=getFirstInterface();var _0x5969f8=getCPUhash();var _0x58c8bd=_0x5969f8+'|'+os['hostname']()+'|'+_0x134c6d[_0x2484('0x21')]+'|'+_0x134c6d[_0x2484('0x22')];var _0x5f2bd9=crypto['createHash']('md5')[_0x2484('0x19')](_0x58c8bd)[_0x2484('0x1a')](_0x2484('0x23'));return _0x5f2bd9['substring'](0x0,0x8)+'-'+_0x5f2bd9[_0x2484('0x24')](0x8,0xc)+'-'+_0x5f2bd9['substring'](0xc,0x10)+'-'+_0x5f2bd9[_0x2484('0x24')](0x10,0x14)+'-'+_0x5f2bd9[_0x2484('0x24')](0x14);}};
\ No newline at end of file
index 595bd71..e606649 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0737=['data1','data2','active','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','format','YYYY-MM-DD\x20HH:mm','update','encryptString','diff','decryptString','days','error','message','finally','getUuid','License','findOrCreate','spread','default','util','request-promise','pkginfo','version','../../mysqldb','../../components/encryptor','./hardware','license','https://www.xcallymotion.com','exports','GET','then','catch','get'];(function(_0x2f2352,_0x28419f){var _0x4c4139=function(_0x27c9c9){while(--_0x27c9c9){_0x2f2352['push'](_0x2f2352['shift']());}};_0x4c4139(++_0x28419f);}(_0x0737,0x111));var _0x7073=function(_0x595993,_0x547a3c){_0x595993=_0x595993-0x0;var _0x196614=_0x0737[_0x595993];return _0x196614;};'use strict';var util=require(_0x7073('0x0'));var moment=require('moment');var rp=require(_0x7073('0x1'));var BPromise=require('bluebird');var pkginfo=require(_0x7073('0x2'))(module,_0x7073('0x3'));var db=require(_0x7073('0x4'))['db'];var encryptor=require(_0x7073('0x5'));var hardware=require(_0x7073('0x6'));var logger=require('../logger')(_0x7073('0x7'));var HOST=_0x7073('0x8');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x4335cd){return new BPromise(function(_0x393bc9,_0x2333fc){var _0x45e947=util['format']('%s/api/servers/%s/check?version=%s',HOST,_0x4335cd,module[_0x7073('0x9')][_0x7073('0x3')]);if(oldToken){_0x45e947=util['format']('%s/api/servers/%s/check?version=%s&oldtoken=%s',HOST,_0x4335cd,module[_0x7073('0x9')]['version'],oldToken);}var _0xad182={'uri':_0x45e947,'method':_0x7073('0xa'),'timeout':0xea60,'json':!![]};return rp(_0xad182)[_0x7073('0xb')](function(_0x219dbc){_0x393bc9(_0x219dbc);})[_0x7073('0xc')](function(_0x157725){_0x2333fc(_0x157725);});});}function manageLicense(_0x5d2e21,_0x1fd706){var _0x566feb=_0x1fd706[_0x7073('0xd')]({'plain':!![]});if(!isOldTokenSent&&_0x566feb[_0x7073('0xe')]!==_0x5d2e21&&!_0x566feb[_0x7073('0xf')]){oldToken=_0x566feb[_0x7073('0xe')];}httpRequest(_0x5d2e21)[_0x7073('0xb')](function(_0x37a8e7){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x37a8e7[_0x7073('0x10')]){isOldTokenSent=![];if(!_0x566feb[_0x7073('0x7')]&&_0x566feb[_0x7073('0x7')]!=_0x37a8e7[_0x7073('0x7')]||_0x566feb[_0x7073('0x7')]&&_0x566feb[_0x7073('0xf')]){logger['info'](_0x7073('0x11'));}if(_0x566feb[_0x7073('0x7')]&&!_0x566feb[_0x7073('0xf')]&&_0x566feb[_0x7073('0x7')]!=_0x37a8e7[_0x7073('0x7')]){logger[_0x7073('0x12')](_0x7073('0x13'));}if(_0x566feb[_0x7073('0x7')]&&!_0x566feb[_0x7073('0xf')]&&_0x566feb[_0x7073('0x7')]==_0x37a8e7[_0x7073('0x7')]){return _0x1fd706;}return _0x1fd706['update']({'data1':_0x5d2e21,'data2':null,'license':_0x37a8e7[_0x7073('0x7')]});}else{if(_0x37a8e7[_0x7073('0x7')]||_0x566feb[_0x7073('0x7')]){if(!_0x566feb[_0x7073('0xf')]){if(_0x566feb[_0x7073('0xe')]==_0x5d2e21){GRAY_PERIOD_REASON=_0x7073('0x14');logger[_0x7073('0x12')](_0x7073('0x15'));}else{GRAY_PERIOD_REASON=_0x7073('0x16');logger['info'](_0x7073('0x17'),_0x566feb['data1'],_0x5d2e21);}logger['info'](_0x7073('0x18'),GRAY_PERIOD_REASON[_0x7073('0x19')](),moment()[_0x7073('0x1a')](_0x7073('0x1b')));return _0x1fd706[_0x7073('0x1c')]({'data2':encryptor[_0x7073('0x1d')](moment()[_0x7073('0x1a')]('YYYY-MM-DD\x20HH:mm'))});}else{if(moment()[_0x7073('0x1e')](encryptor[_0x7073('0x1f')](_0x566feb['data2']),_0x7073('0x20'))>DAYS){logger['info']('DEMO\x20START\x20AT\x20%s',moment()[_0x7073('0x1a')](_0x7073('0x1b')));isOldTokenSent=![];return _0x1fd706[_0x7073('0x1c')]({'data1':_0x5d2e21,'data2':null,'license':null});}}}else{if(_0x566feb[_0x7073('0xe')]!=_0x5d2e21){logger[_0x7073('0x12')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x566feb[_0x7073('0xe')],_0x5d2e21);return _0x1fd706[_0x7073('0x1c')]({'data1':_0x5d2e21,'data2':null,'license':null});}}}return _0x1fd706;})[_0x7073('0xb')](function(_0x3869be){_0x1fd706=_0x3869be;})[_0x7073('0xc')](function(_0x160dc1){logger[_0x7073('0x21')](_0x160dc1[_0x7073('0x22')]);})[_0x7073('0x23')](function(){setTimeout(function(){manageLicense(hardware[_0x7073('0x24')](),_0x1fd706);},TIME);});}function defaultLicense(){var _0x30a9ee=hardware[_0x7073('0x24')]();if(_0x30a9ee){return db[_0x7073('0x25')][_0x7073('0x26')]({'where':{'id':0x1},'defaults':{'data1':_0x30a9ee}})[_0x7073('0x27')](function(_0x345f21,_0x5367d0){logger['info']('SERVICE\x20LICENSE\x20STARTED\x20%s',_0x30a9ee);manageLicense(_0x30a9ee,_0x345f21);})[_0x7073('0xc')](function(_0x11957f){logger[_0x7073('0x21')](_0x11957f[_0x7073('0x22')]);});}}exports[_0x7073('0x28')]=defaultLicense;
\ No newline at end of file
+var _0x34a8=['findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','util','moment','request-promise','bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','catch','get','data2','data1','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','update','encryptString','YYYY-MM-DD\x20HH:mm','decryptString','days','DEMO\x20START\x20AT\x20%s','error','message','finally','getUuid','License'];(function(_0x5e4288,_0x45bddd){var _0x542537=function(_0x3fdbf0){while(--_0x3fdbf0){_0x5e4288['push'](_0x5e4288['shift']());}};_0x542537(++_0x45bddd);}(_0x34a8,0x163));var _0x834a=function(_0x26f963,_0x27543e){_0x26f963=_0x26f963-0x0;var _0x19ce83=_0x34a8[_0x26f963];return _0x19ce83;};'use strict';var util=require(_0x834a('0x0'));var moment=require(_0x834a('0x1'));var rp=require(_0x834a('0x2'));var BPromise=require(_0x834a('0x3'));var pkginfo=require(_0x834a('0x4'))(module,_0x834a('0x5'));var db=require(_0x834a('0x6'))['db'];var encryptor=require(_0x834a('0x7'));var hardware=require('./hardware');var logger=require(_0x834a('0x8'))(_0x834a('0x9'));var HOST=_0x834a('0xa');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x2fcd2a){return new BPromise(function(_0x2a8612,_0x48a8ac){var _0x1a4349=util[_0x834a('0xb')](_0x834a('0xc'),HOST,_0x2fcd2a,module[_0x834a('0xd')]['version']);if(oldToken){_0x1a4349=util['format'](_0x834a('0xe'),HOST,_0x2fcd2a,module[_0x834a('0xd')][_0x834a('0x5')],oldToken);}var _0x31d2cf={'uri':_0x1a4349,'method':_0x834a('0xf'),'timeout':0xea60,'json':!![]};return rp(_0x31d2cf)[_0x834a('0x10')](function(_0x3ca547){_0x2a8612(_0x3ca547);})[_0x834a('0x11')](function(_0x16dbaa){_0x48a8ac(_0x16dbaa);});});}function manageLicense(_0x2f041e,_0x376619){var _0x1e2478=_0x376619[_0x834a('0x12')]({'plain':!![]});if(!isOldTokenSent&&_0x1e2478['data1']!==_0x2f041e&&!_0x1e2478[_0x834a('0x13')]){oldToken=_0x1e2478[_0x834a('0x14')];}httpRequest(_0x2f041e)[_0x834a('0x10')](function(_0x449bb3){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x449bb3[_0x834a('0x15')]){isOldTokenSent=![];if(!_0x1e2478[_0x834a('0x9')]&&_0x1e2478['license']!=_0x449bb3[_0x834a('0x9')]||_0x1e2478[_0x834a('0x9')]&&_0x1e2478[_0x834a('0x13')]){logger[_0x834a('0x16')](_0x834a('0x17'));}if(_0x1e2478[_0x834a('0x9')]&&!_0x1e2478[_0x834a('0x13')]&&_0x1e2478['license']!=_0x449bb3['license']){logger['info'](_0x834a('0x18'));}if(_0x1e2478[_0x834a('0x9')]&&!_0x1e2478[_0x834a('0x13')]&&_0x1e2478[_0x834a('0x9')]==_0x449bb3[_0x834a('0x9')]){return _0x376619;}return _0x376619['update']({'data1':_0x2f041e,'data2':null,'license':_0x449bb3[_0x834a('0x9')]});}else{if(_0x449bb3['license']||_0x1e2478[_0x834a('0x9')]){if(!_0x1e2478[_0x834a('0x13')]){if(_0x1e2478[_0x834a('0x14')]==_0x2f041e){GRAY_PERIOD_REASON=_0x834a('0x19');logger[_0x834a('0x16')](_0x834a('0x1a'));}else{GRAY_PERIOD_REASON='Changed';logger[_0x834a('0x16')](_0x834a('0x1b'),_0x1e2478[_0x834a('0x14')],_0x2f041e);}logger['info'](_0x834a('0x1c'),GRAY_PERIOD_REASON[_0x834a('0x1d')](),moment()[_0x834a('0xb')]('YYYY-MM-DD\x20HH:mm'));return _0x376619[_0x834a('0x1e')]({'data2':encryptor[_0x834a('0x1f')](moment()[_0x834a('0xb')](_0x834a('0x20')))});}else{if(moment()['diff'](encryptor[_0x834a('0x21')](_0x1e2478[_0x834a('0x13')]),_0x834a('0x22'))>DAYS){logger[_0x834a('0x16')](_0x834a('0x23'),moment()[_0x834a('0xb')](_0x834a('0x20')));isOldTokenSent=![];return _0x376619[_0x834a('0x1e')]({'data1':_0x2f041e,'data2':null,'license':null});}}}else{if(_0x1e2478[_0x834a('0x14')]!=_0x2f041e){logger[_0x834a('0x16')](_0x834a('0x1b'),_0x1e2478[_0x834a('0x14')],_0x2f041e);return _0x376619['update']({'data1':_0x2f041e,'data2':null,'license':null});}}}return _0x376619;})['then'](function(_0xa4ce85){_0x376619=_0xa4ce85;})[_0x834a('0x11')](function(_0xa7f571){logger[_0x834a('0x24')](_0xa7f571[_0x834a('0x25')]);})[_0x834a('0x26')](function(){setTimeout(function(){manageLicense(hardware[_0x834a('0x27')](),_0x376619);},TIME);});}function defaultLicense(){var _0x3607ea=hardware[_0x834a('0x27')]();if(_0x3607ea){return db[_0x834a('0x28')][_0x834a('0x29')]({'where':{'id':0x1},'defaults':{'data1':_0x3607ea}})[_0x834a('0x2a')](function(_0x1f6224,_0x720306){logger[_0x834a('0x16')](_0x834a('0x2b'),_0x3607ea);manageLicense(_0x3607ea,_0x1f6224);})['catch'](function(_0x66dc15){logger[_0x834a('0x24')](_0x66dc15['message']);});}}exports['default']=defaultLicense;
\ No newline at end of file
index 4199dd2..6d07424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc35=['getUuid','License','find','then','catch','uuid','data1','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','decryptString','format','%s:%s:%s','parse','demo','machineUuid','gray','deadline','add','days','grayReason','changed','message','findAll','COUNT','sequelize','count','role','admin','user','telephone','telephones','forEach','pick','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','lodash','moment','bluebird','./hardware','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license'];(function(_0xcd938c,_0x522d9c){var _0x1c7a0c=function(_0x8e7fac){while(--_0x8e7fac){_0xcd938c['push'](_0xcd938c['shift']());}};_0x1c7a0c(++_0x522d9c);}(_0xdc35,0x117));var _0x5dc3=function(_0x461251,_0x4b5f46){_0x461251=_0x461251-0x0;var _0x35a479=_0xdc35[_0x461251];return _0x35a479;};'use strict';var util=require(_0x5dc3('0x0'));var _=require(_0x5dc3('0x1'));var moment=require(_0x5dc3('0x2'));var BPromise=require(_0x5dc3('0x3'));var hardware=require(_0x5dc3('0x4'));var encryptor=require(_0x5dc3('0x5'));var db=require(_0x5dc3('0x6'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x5dc3('0x7'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x5dc3('0x8'),'machineUuid':hardware[_0x5dc3('0x9')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x5dc3('0x7'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':'Breaking\x20license','machineUuid':hardware[_0x5dc3('0x9')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x4db803){return new BPromise(function(_0x47c5c3,_0xadc457){return db[_0x5dc3('0xa')][_0x5dc3('0xb')](_['defaults'](_0x4db803,{'raw':!![],'where':{'id':0x1}}))[_0x5dc3('0xc')](function(_0x22075e){return checkLicense(_0x22075e,null);})[_0x5dc3('0xc')](function(_0x6e00b7){_0x47c5c3(_0x6e00b7);return;})[_0x5dc3('0xd')](function(_0x43b090){_0xadc457(_0x43b090);});});}function checkLicense(_0x2a694b,_0x4167a3){if(!_0x2a694b){demoLicense[_0x5dc3('0xe')]=_0x2a694b[_0x5dc3('0xf')];return demoLicense;}try{var _0x40bd50=_0x4167a3||_0x2a694b['license'];if(_[_0x5dc3('0x10')](_0x40bd50)){throw new Error(_0x5dc3('0x11'));}var _0x2e20c1=_0x2a694b[_0x5dc3('0xf')];var _0x21341b=_0x2a694b[_0x5dc3('0x12')];var _0xe9aed=_0x2e20c1[_0x5dc3('0x13')]('-')[0x4];var _0x122cbf=_0x2e20c1['split']('-')[0x0];var _0x4875d5=encryptor[_0x5dc3('0x14')](_0x40bd50,util[_0x5dc3('0x15')](_0x5dc3('0x16'),_0xe9aed,_0x2e20c1,_0x122cbf));var _0x2cbff4=JSON[_0x5dc3('0x17')](_0x4875d5);_0x2cbff4[_0x5dc3('0x18')]=![];_0x2cbff4[_0x5dc3('0xe')]=_0x2e20c1;_0x2cbff4[_0x5dc3('0x19')]=hardware[_0x5dc3('0x9')]();if(_0x21341b){var _0x439fb6=encryptor[_0x5dc3('0x14')](_0x21341b);_0x2cbff4[_0x5dc3('0x1a')]=_0x439fb6;_0x2cbff4[_0x5dc3('0x1b')]=moment(_0x439fb6)[_0x5dc3('0x1c')](0x7,_0x5dc3('0x1d'))[_0x5dc3('0x15')]();_0x2cbff4[_0x5dc3('0x1e')]=_0x2cbff4[_0x5dc3('0xe')]!=_0x2cbff4[_0x5dc3('0x19')]?_0x5dc3('0x1f'):'disabled';}return _0x2cbff4;}catch(_0x25a7d2){breakingLicense[_0x5dc3('0xe')]=_0x2a694b[_0x5dc3('0xf')];breakingLicense[_0x5dc3('0x20')]=_0x25a7d2[_0x5dc3('0x20')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x3f3c9a,_0x1f73a3){getLicense()['then'](function(_0x12b452){return db['User'][_0x5dc3('0x21')]({'attributes':['role',[db['sequelize']['fn'](_0x5dc3('0x22'),db[_0x5dc3('0x23')]['col']('role')),_0x5dc3('0x24')]],'group':_0x5dc3('0x25'),'where':{'role':{'$or':[_0x5dc3('0x26'),_0x5dc3('0x27'),_0x5dc3('0x28')]}},'raw':!![]})[_0x5dc3('0xc')](function(_0x35a2ad){var _0x53a3ed={'user':_0x12b452['users']||0x0,'telephone':_0x12b452[_0x5dc3('0x29')]||0x0};_0x35a2ad[_0x5dc3('0x2a')](function(_0x2cbf3a){var _0x238851=_0x2cbf3a['role']===_0x5dc3('0x26')?'user':_0x2cbf3a['role'];_0x53a3ed[_0x238851]-=_0x2cbf3a[_0x5dc3('0x24')];if(_0x53a3ed[_0x238851]<0x0)_0x53a3ed[_0x238851]=0x0;});_0x3f3c9a(_0x53a3ed);return;});})[_0x5dc3('0xd')](function(_0x7347aa){_0x1f73a3(_0x7347aa);});});}function checkUserLimits(_0x55ceda){return new BPromise(function(_0x42d9c9,_0x54a20d){getLimits()[_0x5dc3('0xc')](function(_0x510050){var _0x5c778a=_[_0x5dc3('0x2b')](_[_0x5dc3('0x2c')](_0x55ceda,_0x5dc3('0x25')),[_0x5dc3('0x26'),_0x5dc3('0x27'),_0x5dc3('0x28')]);var _0x2897c2=(_0x5c778a[_0x5dc3('0x26')]||0x0)+(_0x5c778a[_0x5dc3('0x27')]||0x0);var _0x1e86da=_0x5c778a[_0x5dc3('0x28')]||0x0;if(_0x2897c2>_0x510050[_0x5dc3('0x27')])return _0x54a20d(_0x5dc3('0x2d'));if(_0x1e86da>_0x510050[_0x5dc3('0x28')])return _0x54a20d(_0x5dc3('0x2e'));return _0x42d9c9();})[_0x5dc3('0xd')](function(_0x1ac610){_0x54a20d(_0x1ac610);});});}module[_0x5dc3('0x2f')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x576c=['forEach','user','pick','admin','License\x20limit\x20reached\x20for\x20users','exports','util','bluebird','./hardware','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','Breaking\x20license','getUuid','License','find','defaults','then','catch','uuid','license','License\x20key\x20value\x20not\x20found','data1','data2','split','decryptString','format','%s:%s:%s','parse','demo','machineUuid','deadline','add','days','changed','message','findAll','role','sequelize','COUNT','col','count','telephone','users','telephones'];(function(_0x2b1551,_0x1776fe){var _0x2fc2a1=function(_0x5d43c8){while(--_0x5d43c8){_0x2b1551['push'](_0x2b1551['shift']());}};_0x2fc2a1(++_0x1776fe);}(_0x576c,0xbe));var _0xc576=function(_0x18e17f,_0x3616e8){_0x18e17f=_0x18e17f-0x0;var _0x5a9221=_0x576c[_0x18e17f];return _0x5a9221;};'use strict';var util=require(_0xc576('0x0'));var _=require('lodash');var moment=require('moment');var BPromise=require(_0xc576('0x1'));var hardware=require(_0xc576('0x2'));var encryptor=require(_0xc576('0x3'));var db=require(_0xc576('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xc576('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0xc576('0x6'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xc576('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0xc576('0x7'),'machineUuid':hardware[_0xc576('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x5461b5){return new BPromise(function(_0xf35290,_0x57a52f){return db[_0xc576('0x9')][_0xc576('0xa')](_[_0xc576('0xb')](_0x5461b5,{'raw':!![],'where':{'id':0x1}}))[_0xc576('0xc')](function(_0x2a6179){return checkLicense(_0x2a6179,null);})[_0xc576('0xc')](function(_0x3d4147){_0xf35290(_0x3d4147);return;})[_0xc576('0xd')](function(_0x3597d7){_0x57a52f(_0x3597d7);});});}function checkLicense(_0x4c5535,_0x312b6a){if(!_0x4c5535){demoLicense[_0xc576('0xe')]=_0x4c5535['data1'];return demoLicense;}try{var _0x39e313=_0x312b6a||_0x4c5535[_0xc576('0xf')];if(_['isEmpty'](_0x39e313)){throw new Error(_0xc576('0x10'));}var _0x4cd00b=_0x4c5535[_0xc576('0x11')];var _0x2d2efd=_0x4c5535[_0xc576('0x12')];var _0x3e3ca8=_0x4cd00b[_0xc576('0x13')]('-')[0x4];var _0x4c85ae=_0x4cd00b[_0xc576('0x13')]('-')[0x0];var _0x1da58e=encryptor[_0xc576('0x14')](_0x39e313,util[_0xc576('0x15')](_0xc576('0x16'),_0x3e3ca8,_0x4cd00b,_0x4c85ae));var _0x4d6d19=JSON[_0xc576('0x17')](_0x1da58e);_0x4d6d19[_0xc576('0x18')]=![];_0x4d6d19[_0xc576('0xe')]=_0x4cd00b;_0x4d6d19[_0xc576('0x19')]=hardware[_0xc576('0x8')]();if(_0x2d2efd){var _0x46a27d=encryptor[_0xc576('0x14')](_0x2d2efd);_0x4d6d19['gray']=_0x46a27d;_0x4d6d19[_0xc576('0x1a')]=moment(_0x46a27d)[_0xc576('0x1b')](0x7,_0xc576('0x1c'))[_0xc576('0x15')]();_0x4d6d19['grayReason']=_0x4d6d19[_0xc576('0xe')]!=_0x4d6d19[_0xc576('0x19')]?_0xc576('0x1d'):'disabled';}return _0x4d6d19;}catch(_0x30f4a7){breakingLicense[_0xc576('0xe')]=_0x4c5535[_0xc576('0x11')];breakingLicense['message']=_0x30f4a7[_0xc576('0x1e')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x52451a,_0xcfacfe){getLicense()[_0xc576('0xc')](function(_0x133fa7){return db['User'][_0xc576('0x1f')]({'attributes':[_0xc576('0x20'),[db[_0xc576('0x21')]['fn'](_0xc576('0x22'),db[_0xc576('0x21')][_0xc576('0x23')]('role')),_0xc576('0x24')]],'group':'role','where':{'role':{'$or':['admin','user',_0xc576('0x25')]}},'raw':!![]})[_0xc576('0xc')](function(_0x248e29){var _0x16af71={'user':_0x133fa7[_0xc576('0x26')]||0x0,'telephone':_0x133fa7[_0xc576('0x27')]||0x0};_0x248e29[_0xc576('0x28')](function(_0x821767){var _0x18ff90=_0x821767[_0xc576('0x20')]==='admin'?_0xc576('0x29'):_0x821767[_0xc576('0x20')];_0x16af71[_0x18ff90]-=_0x821767[_0xc576('0x24')];if(_0x16af71[_0x18ff90]<0x0)_0x16af71[_0x18ff90]=0x0;});_0x52451a(_0x16af71);return;});})[_0xc576('0xd')](function(_0x7ea29d){_0xcfacfe(_0x7ea29d);});});}function checkUserLimits(_0x11ca79){return new BPromise(function(_0x479189,_0x4e8415){getLimits()[_0xc576('0xc')](function(_0xc5a85c){var _0x3ebff5=_[_0xc576('0x2a')](_['countBy'](_0x11ca79,_0xc576('0x20')),[_0xc576('0x2b'),_0xc576('0x29'),_0xc576('0x25')]);var _0x21e222=(_0x3ebff5[_0xc576('0x2b')]||0x0)+(_0x3ebff5[_0xc576('0x29')]||0x0);var _0xc7f19a=_0x3ebff5['telephone']||0x0;if(_0x21e222>_0xc5a85c[_0xc576('0x29')])return _0x4e8415(_0xc576('0x2c'));if(_0xc7f19a>_0xc5a85c['telephone'])return _0x4e8415('License\x20limit\x20reached\x20for\x20telephones');return _0x479189();})['catch'](function(_0x144744){_0x4e8415(_0x144744);});});}module[_0xc576('0x2d')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index d1eab2f..a21ad81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0972=['http://localhost:9000','app-id'];(function(_0x2a54fc,_0x3754c8){var _0x19d8b4=function(_0xce7d3e){while(--_0xce7d3e){_0x2a54fc['push'](_0x2a54fc['shift']());}};_0x19d8b4(++_0x3754c8);}(_0x0972,0x64));var _0x2097=function(_0x82f9de,_0x30a62e){_0x82f9de=_0x82f9de-0x0;var _0x4892d3=_0x0972[_0x82f9de];return _0x4892d3;};'use strict';module['exports']={'DOMAIN':_0x2097('0x0'),'SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':_0x2097('0x1'),'GOOGLE_SECRET':'secret','DEBUG':''};
\ No newline at end of file
+var _0xd4a2=['app-id','exports'];(function(_0x15aec9,_0x39f50f){var _0x2e84e0=function(_0xfe69fc){while(--_0xfe69fc){_0x15aec9['push'](_0x15aec9['shift']());}};_0x2e84e0(++_0x39f50f);}(_0xd4a2,0x173));var _0x2d4a=function(_0x196682,_0x192ff5){_0x196682=_0x196682-0x0;var _0x2bfd7a=_0xd4a2[_0x196682];return _0x2bfd7a;};'use strict';module[_0x2d4a('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':_0x2d4a('0x1'),'GOOGLE_SECRET':'secret','DEBUG':''};
\ No newline at end of file
index be8fe0a..2281023 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa461=['}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','Logger','File','error','transports','%s-%s','info','moment','winston','path','INFO','join','/var','log','xcally','format','message','{{{','replace'];(function(_0x67f95e,_0x3ca797){var _0x538f5a=function(_0xc919e9){while(--_0xc919e9){_0x67f95e['push'](_0x67f95e['shift']());}};_0x538f5a(++_0x3ca797);}(_0xa461,0x1ee));var _0x1a46=function(_0x280cec,_0x435549){_0x280cec=_0x280cec-0x0;var _0x5927d3=_0xa461[_0x280cec];return _0x5927d3;};'use strict';var moment=require(_0x1a46('0x0'));var winston=require(_0x1a46('0x1'));var util=require('util');var path=require(_0x1a46('0x2'));var debugLevel=_0x1a46('0x3');function filename(_0x22b918,_0x10d893){return path[_0x1a46('0x4')](_0x1a46('0x5'),_0x1a46('0x6'),_0x1a46('0x7'),util[_0x1a46('0x8')]('%s-%s.log',_0x22b918,_0x10d893));}function formatter(_0x58437e,_0x339a87){_0x339a87[_0x1a46('0x9')]=_0x339a87[_0x1a46('0x9')]['replace'](/@@{/g,_0x1a46('0xa'))[_0x1a46('0xb')](/}@@/g,_0x1a46('0xc'))['replace'](/@{/g,'{{')[_0x1a46('0xb')](/}@/g,'}}');return util[_0x1a46('0x8')](_0x1a46('0xd'),moment()[_0x1a46('0x8')](_0x1a46('0xe')),_0x339a87[_0x1a46('0xf')]['toUpperCase'](),_0x58437e,_0x339a87[_0x1a46('0x9')]);}module['exports']=function(_0x502512){return new winston[(_0x1a46('0x10'))]({'transports':[new winston['transports'][(_0x1a46('0x11'))]({'name':util['format']('%s-%s',_0x502512,_0x1a46('0x12')),'filename':filename(_0x502512,'error'),'level':_0x1a46('0x12'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x2d9181){return formatter(_0x502512,_0x2d9181);}}),new winston[(_0x1a46('0x13'))]['File']({'name':util[_0x1a46('0x8')](_0x1a46('0x14'),_0x502512,_0x1a46('0x15')),'filename':filename(_0x502512,_0x1a46('0x15')),'level':_0x1a46('0x15'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x4aff35){return formatter(_0x502512,_0x4aff35);}}),new winston['transports']['Console']({'level':process['env']['debugLevel']||debugLevel,'json':![],'formatter':function(_0x2adc6b){return formatter(_0x502512,_0x2adc6b);}})]});};
\ No newline at end of file
+var _0xa85a=['{{{','}}}','format','[%s]\x20[%s]\x20%s\x20-\x20%s','level','toUpperCase','exports','transports','File','%s-%s','error','info','Console','env','debugLevel','moment','winston','util','path','log','xcally','message','replace'];(function(_0x22cb5f,_0x2cdd63){var _0x274d36=function(_0x421472){while(--_0x421472){_0x22cb5f['push'](_0x22cb5f['shift']());}};_0x274d36(++_0x2cdd63);}(_0xa85a,0x1ad));var _0xaa85=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xa85a[_0x46698a];return _0x356db0;};'use strict';var moment=require(_0xaa85('0x0'));var winston=require(_0xaa85('0x1'));var util=require(_0xaa85('0x2'));var path=require(_0xaa85('0x3'));var debugLevel='INFO';function filename(_0x503219,_0x2ff3b1){return path['join']('/var',_0xaa85('0x4'),_0xaa85('0x5'),util['format']('%s-%s.log',_0x503219,_0x2ff3b1));}function formatter(_0x27efb6,_0x1fc1bb){_0x1fc1bb[_0xaa85('0x6')]=_0x1fc1bb['message'][_0xaa85('0x7')](/@@{/g,_0xaa85('0x8'))[_0xaa85('0x7')](/}@@/g,_0xaa85('0x9'))[_0xaa85('0x7')](/@{/g,'{{')[_0xaa85('0x7')](/}@/g,'}}');return util[_0xaa85('0xa')](_0xaa85('0xb'),moment()[_0xaa85('0xa')]('YYYY-MM-DD\x20HH:mm:ss'),_0x1fc1bb[_0xaa85('0xc')][_0xaa85('0xd')](),_0x27efb6,_0x1fc1bb[_0xaa85('0x6')]);}module[_0xaa85('0xe')]=function(_0x46ba85){return new winston['Logger']({'transports':[new winston[(_0xaa85('0xf'))][(_0xaa85('0x10'))]({'name':util[_0xaa85('0xa')](_0xaa85('0x11'),_0x46ba85,_0xaa85('0x12')),'filename':filename(_0x46ba85,_0xaa85('0x12')),'level':_0xaa85('0x12'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x25762e){return formatter(_0x46ba85,_0x25762e);}}),new winston[(_0xaa85('0xf'))][(_0xaa85('0x10'))]({'name':util[_0xaa85('0xa')](_0xaa85('0x11'),_0x46ba85,_0xaa85('0x13')),'filename':filename(_0x46ba85,'info'),'level':_0xaa85('0x13'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x5b55cb){return formatter(_0x46ba85,_0x5b55cb);}}),new winston[(_0xaa85('0xf'))][(_0xaa85('0x14'))]({'level':process[_0xaa85('0x15')][_0xaa85('0x16')]||debugLevel,'json':![],'formatter':function(_0x5bddc8){return formatter(_0x46ba85,_0x5bddc8);}})]});};
\ No newline at end of file
index 6df311e..fd9a61b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33b6=['../../services/express/index.js','ami','join','../../services/ami/index.js','../../services/agi/index.js','../../services/email/index.js','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports','path','express'];(function(_0x54d710,_0x17b8ba){var _0x3e7ade=function(_0x46aac3){while(--_0x46aac3){_0x54d710['push'](_0x54d710['shift']());}};_0x3e7ade(++_0x17b8ba);}(_0x33b6,0xee));var _0x633b=function(_0x2503aa,_0x4ea0db){_0x2503aa=_0x2503aa-0x0;var _0x44f5e2=_0x33b6[_0x2503aa];return _0x44f5e2;};'use strict';var path=require(_0x633b('0x0'));var os=require('os');var config={'apps':[{'name':_0x633b('0x1'),'script':path['join'](__dirname,_0x633b('0x2'))},{'name':_0x633b('0x3'),'script':path[_0x633b('0x4')](__dirname,_0x633b('0x5'))},{'name':'agi','script':path[_0x633b('0x4')](__dirname,_0x633b('0x6'))},{'name':'email','script':path[_0x633b('0x4')](__dirname,_0x633b('0x7'))},{'name':'routing','script':path[_0x633b('0x4')](__dirname,_0x633b('0x8'))},{'name':_0x633b('0x9'),'script':path[_0x633b('0x4')](__dirname,_0x633b('0xa'))}]};module[_0x633b('0xb')]=config;
\ No newline at end of file
+var _0x0fc6=['routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','express','join','ami','../../services/ami/index.js','agi','email','../../services/email/index.js'];(function(_0x1bc42d,_0x1b8a92){var _0x2a4351=function(_0x247ad2){while(--_0x247ad2){_0x1bc42d['push'](_0x1bc42d['shift']());}};_0x2a4351(++_0x1b8a92);}(_0x0fc6,0x1f3));var _0x60fc=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x0fc6[_0x1cc8fe];return _0x230054;};'use strict';var path=require('path');var os=require('os');var config={'apps':[{'name':_0x60fc('0x0'),'script':path[_0x60fc('0x1')](__dirname,'../../services/express/index.js')},{'name':_0x60fc('0x2'),'script':path[_0x60fc('0x1')](__dirname,_0x60fc('0x3'))},{'name':_0x60fc('0x4'),'script':path['join'](__dirname,'../../services/agi/index.js')},{'name':_0x60fc('0x5'),'script':path[_0x60fc('0x1')](__dirname,_0x60fc('0x6'))},{'name':_0x60fc('0x7'),'script':path[_0x60fc('0x1')](__dirname,_0x60fc('0x8'))},{'name':_0x60fc('0x9'),'script':path[_0x60fc('0x1')](__dirname,_0x60fc('0xa'))}]};module['exports']=config;
\ No newline at end of file
index cc2bd42..307a4c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b45=['pm2','bluebird','./config','connect','connected','start','disconnect','stop','restart','then','list','describe','delete','dump'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x1b45,0xb6));var _0x51b4=function(_0x166f3c,_0x5770af){_0x166f3c=_0x166f3c-0x0;var _0x58e68b=_0x1b45[_0x166f3c];return _0x58e68b;};'use strict';var pm2=require(_0x51b4('0x0'));var BPromise=require(_0x51b4('0x1'));var config=require(_0x51b4('0x2'));function connect(){return new BPromise(function(_0xa7f626,_0x2cb14b){return pm2[_0x51b4('0x3')](function(_0x597c93){if(_0x597c93){return _0x2cb14b(_0x597c93);}return _0xa7f626(_0x51b4('0x4'));});});};exports[_0x51b4('0x5')]=function(_0x4e4e6d){return connect()['then'](function(){return new BPromise(function(_0x5a2b20,_0x1891cc){return pm2['start'](_0x4e4e6d,function(_0x4eefc8,_0x1d85fd){if(_0x4eefc8){return _0x1891cc(_0x4eefc8);}pm2[_0x51b4('0x6')]();return _0x5a2b20(_0x1d85fd);});});});};exports[_0x51b4('0x7')]=function(_0x20fc40){return connect()['then'](function(){return new BPromise(function(_0x31559b,_0x2f8196){return pm2[_0x51b4('0x7')](_0x20fc40,function(_0x363daa,_0x32f32b){if(_0x363daa){return _0x2f8196(_0x363daa);}pm2['disconnect']();return _0x31559b(_0x32f32b);});});});};exports[_0x51b4('0x8')]=function(_0x3327e6){return connect()[_0x51b4('0x9')](function(){return new BPromise(function(_0x5223f6,_0x3823bf){return pm2[_0x51b4('0x8')](_0x3327e6,function(_0x46de63,_0x297444){if(_0x46de63){return _0x3823bf(_0x46de63);}pm2['disconnect']();return _0x5223f6(_0x297444);});});});};exports[_0x51b4('0xa')]=function(){return connect()[_0x51b4('0x9')](function(){return new BPromise(function(_0x3bf17d,_0x44092b){return pm2[_0x51b4('0xa')](function(_0x722207,_0x1bf280){if(_0x722207){return _0x44092b(_0x722207);}pm2[_0x51b4('0x6')]();return _0x3bf17d(_0x1bf280);});});});};exports['describe']=function(_0x2342c9){return connect()[_0x51b4('0x9')](function(){return new BPromise(function(_0x5e2aa3,_0x5e1f69){return pm2[_0x51b4('0xb')](_0x2342c9,function(_0x6c205b,_0x23e97a){if(_0x6c205b){return _0x5e1f69(_0x6c205b);}pm2[_0x51b4('0x6')]();return _0x5e2aa3(_0x23e97a);});});});};exports[_0x51b4('0xc')]=function(_0x3b0fb3){return connect()[_0x51b4('0x9')](function(){return new BPromise(function(_0x55e203,_0x3735c8){return pm2[_0x51b4('0xc')](_0x3b0fb3,function(_0x16f3c2,_0x3410e2){if(_0x16f3c2){return _0x3735c8(_0x16f3c2);}pm2[_0x51b4('0x6')]();return _0x55e203(_0x3410e2);});});});};exports[_0x51b4('0xd')]=function(){return connect()[_0x51b4('0x9')](function(){return new BPromise(function(_0x58a4b3,_0x2d3d5e){return pm2[_0x51b4('0xd')](function(_0x906000){if(_0x906000){return _0x2d3d5e(_0x906000);}return _0x58a4b3('saved');});});});};
\ No newline at end of file
+var _0x04ea=['delete','dump','saved','pm2','connect','connected','start','then','disconnect','stop','restart','list','describe'];(function(_0xa2efb7,_0x195139){var _0x358337=function(_0xc1cf7a){while(--_0xc1cf7a){_0xa2efb7['push'](_0xa2efb7['shift']());}};_0x358337(++_0x195139);}(_0x04ea,0x1bd));var _0xa04e=function(_0x24bd83,_0x1830c4){_0x24bd83=_0x24bd83-0x0;var _0x3a047e=_0x04ea[_0x24bd83];return _0x3a047e;};'use strict';var pm2=require(_0xa04e('0x0'));var BPromise=require('bluebird');var config=require('./config');function connect(){return new BPromise(function(_0x16c32b,_0x5d1017){return pm2[_0xa04e('0x1')](function(_0x5877be){if(_0x5877be){return _0x5d1017(_0x5877be);}return _0x16c32b(_0xa04e('0x2'));});});};exports[_0xa04e('0x3')]=function(_0x28185a){return connect()[_0xa04e('0x4')](function(){return new BPromise(function(_0x538036,_0x3fec13){return pm2[_0xa04e('0x3')](_0x28185a,function(_0x1411ff,_0x35828){if(_0x1411ff){return _0x3fec13(_0x1411ff);}pm2[_0xa04e('0x5')]();return _0x538036(_0x35828);});});});};exports['stop']=function(_0x3776cb){return connect()[_0xa04e('0x4')](function(){return new BPromise(function(_0x2f4991,_0x434c8d){return pm2[_0xa04e('0x6')](_0x3776cb,function(_0x25d672,_0x5916ac){if(_0x25d672){return _0x434c8d(_0x25d672);}pm2[_0xa04e('0x5')]();return _0x2f4991(_0x5916ac);});});});};exports[_0xa04e('0x7')]=function(_0x59632c){return connect()[_0xa04e('0x4')](function(){return new BPromise(function(_0x32a114,_0x23921d){return pm2[_0xa04e('0x7')](_0x59632c,function(_0x65712e,_0x365e22){if(_0x65712e){return _0x23921d(_0x65712e);}pm2[_0xa04e('0x5')]();return _0x32a114(_0x365e22);});});});};exports[_0xa04e('0x8')]=function(){return connect()[_0xa04e('0x4')](function(){return new BPromise(function(_0x2ad6b0,_0x2fa17f){return pm2[_0xa04e('0x8')](function(_0x8feefc,_0x3e2213){if(_0x8feefc){return _0x2fa17f(_0x8feefc);}pm2[_0xa04e('0x5')]();return _0x2ad6b0(_0x3e2213);});});});};exports[_0xa04e('0x9')]=function(_0x1ffdab){return connect()[_0xa04e('0x4')](function(){return new BPromise(function(_0x3976f3,_0x3fb971){return pm2[_0xa04e('0x9')](_0x1ffdab,function(_0x5a3213,_0x338189){if(_0x5a3213){return _0x3fb971(_0x5a3213);}pm2[_0xa04e('0x5')]();return _0x3976f3(_0x338189);});});});};exports['delete']=function(_0x341143){return connect()[_0xa04e('0x4')](function(){return new BPromise(function(_0x30b8c7,_0x4573d3){return pm2[_0xa04e('0xa')](_0x341143,function(_0x4c94a1,_0x9e22e8){if(_0x4c94a1){return _0x4573d3(_0x4c94a1);}pm2[_0xa04e('0x5')]();return _0x30b8c7(_0x9e22e8);});});});};exports[_0xa04e('0xb')]=function(){return connect()[_0xa04e('0x4')](function(){return new BPromise(function(_0x3effa9,_0x157f23){return pm2[_0xa04e('0xb')](function(_0x6c6520){if(_0x6c6520){return _0x157f23(_0x6c6520);}return _0x3effa9(_0xa04e('0xc'));});});});};
\ No newline at end of file
index e3f4714..537f85f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c7d=['then','map','[CHAT]\x20Interactions\x20to\x20close:','join','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','info','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','moment','ioredis','util','../../config/environment','schedule','defaults','redis','localhost','Setting','find','ChatInteraction','findAll','lastMsgAt','chatTimeout','minutes'];(function(_0xb065e3,_0x2d01cf){var _0x1db262=function(_0x7cc0ad){while(--_0x7cc0ad){_0xb065e3['push'](_0xb065e3['shift']());}};_0x1db262(++_0x2d01cf);}(_0x5c7d,0x91));var _0xd5c7=function(_0x5a324f,_0x2de44c){_0x5a324f=_0x5a324f-0x0;var _0x29f2de=_0x5c7d[_0x5a324f];return _0x29f2de;};'use strict';var _=require('lodash');var moment=require(_0xd5c7('0x0'));var Redis=require(_0xd5c7('0x1'));var util=require(_0xd5c7('0x2'));var config=require(_0xd5c7('0x3'));var db=require('../../mysqldb')['db'];var logger=require('../logger')(_0xd5c7('0x4'));config['redis']=_[_0xd5c7('0x5')](config[_0xd5c7('0x6')],{'host':_0xd5c7('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xd5c7('0x6')]));function closeInteractions(){var _0x31ac3f=0x0;var _0x1da6e1=[];return db[_0xd5c7('0x8')][_0xd5c7('0x9')]({'raw':!![],'attributes':['id','chatTimeout'],'where':{'id':0x1}})['then'](function(_0x3dcd51){_0x31ac3f=_0x3dcd51['chatTimeout'];if(_0x31ac3f){return db[_0xd5c7('0xa')][_0xd5c7('0xb')]({'raw':!![],'attributes':['id',_0xd5c7('0xc')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()['subtract'](_0x3dcd51[_0xd5c7('0xd')],_0xd5c7('0xe'))}}});}else{return[];}})[_0xd5c7('0xf')](function(_0x27b731){if(_0x27b731&&_0x27b731['length']){_0x1da6e1=_[_0xd5c7('0x10')](_0x27b731||[],'id');logger['info'](_0xd5c7('0x11'),_0x1da6e1[_0xd5c7('0x12')]());return db[_0xd5c7('0xa')][_0xd5c7('0x13')]({'closeReason':_0xd5c7('0x14'),'disposition':_0xd5c7('0x15'),'closed':!![],'closedAt':moment()[_0xd5c7('0x16')](_0xd5c7('0x17'))},{'where':{'id':_0x1da6e1}});}})[_0xd5c7('0xf')](function(){if(_0x1da6e1&&_0x1da6e1['length']){logger[_0xd5c7('0x18')](_0xd5c7('0x19'),_0x1da6e1[_0xd5c7('0x12')]());for(var _0x577578=0x0;_0x577578<_0x1da6e1['length'];_0x577578++){io[_0xd5c7('0x1a')](_0xd5c7('0x1b'),{'id':_0x1da6e1[_0x577578],'closed':!![]});}}})['catch'](function(_0x25ab19){logger[_0xd5c7('0x1c')](_0xd5c7('0x1d'),_0x25ab19?util[_0xd5c7('0x1e')](_0x25ab19,{'showHidden':![],'depth':null}):'');});}exports[_0xd5c7('0x1f')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xb34f=['../../config/environment','../../mysqldb','../logger','schedule','redis','localhost','find','chatTimeout','subtract','minutes','length','[CHAT]\x20Interactions\x20to\x20close:','join','ChatInteraction','timeout','format','YYYY-MM-DD\x20HH:mm:ss','then','info','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','util'];(function(_0xbb2bc4,_0x1d1735){var _0x35c842=function(_0x4c43ff){while(--_0x4c43ff){_0xbb2bc4['push'](_0xbb2bc4['shift']());}};_0x35c842(++_0x1d1735);}(_0xb34f,0xed));var _0xfb34=function(_0x30c296,_0x45a600){_0x30c296=_0x30c296-0x0;var _0x4df037=_0xb34f[_0x30c296];return _0x4df037;};'use strict';var _=require(_0xfb34('0x0'));var moment=require(_0xfb34('0x1'));var Redis=require('ioredis');var util=require(_0xfb34('0x2'));var config=require(_0xfb34('0x3'));var db=require(_0xfb34('0x4'))['db'];var logger=require(_0xfb34('0x5'))(_0xfb34('0x6'));config[_0xfb34('0x7')]=_['defaults'](config[_0xfb34('0x7')],{'host':_0xfb34('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function closeInteractions(){var _0x3411db=0x0;var _0x23a6c3=[];return db['Setting'][_0xfb34('0x9')]({'raw':!![],'attributes':['id',_0xfb34('0xa')],'where':{'id':0x1}})['then'](function(_0x46e4b8){_0x3411db=_0x46e4b8[_0xfb34('0xa')];if(_0x3411db){return db['ChatInteraction']['findAll']({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xfb34('0xb')](_0x46e4b8['chatTimeout'],_0xfb34('0xc'))}}});}else{return[];}})['then'](function(_0x5122f0){if(_0x5122f0&&_0x5122f0[_0xfb34('0xd')]){_0x23a6c3=_['map'](_0x5122f0||[],'id');logger['info'](_0xfb34('0xe'),_0x23a6c3[_0xfb34('0xf')]());return db[_0xfb34('0x10')]['update']({'closeReason':'system','disposition':_0xfb34('0x11'),'closed':!![],'closedAt':moment()[_0xfb34('0x12')](_0xfb34('0x13'))},{'where':{'id':_0x23a6c3}});}})[_0xfb34('0x14')](function(){if(_0x23a6c3&&_0x23a6c3['length']){logger[_0xfb34('0x15')](_0xfb34('0x16'),_0x23a6c3[_0xfb34('0xf')]());for(var _0x2c37c8=0x0;_0x2c37c8<_0x23a6c3[_0xfb34('0xd')];_0x2c37c8++){io[_0xfb34('0x17')](_0xfb34('0x18'),{'id':_0x23a6c3[_0x2c37c8],'closed':!![]});}}})[_0xfb34('0x19')](function(_0x5d4b8a){logger[_0xfb34('0x1a')](_0xfb34('0x1b'),_0x5d4b8a?util[_0xfb34('0x1c')](_0x5d4b8a,{'showHidden':![],'depth':null}):'');});}exports[_0xfb34('0x1d')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 069c7f7..f87c85e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae29=['bcc','format','Report\x20%s\x20last\x20%s\x20%s','join','../../files/reports','savename','%s.%s','basename','extname','zip','status','message','attachments','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','existsSync','sendIfEmpty','request','SendMail','then','error','error\x20mail','email\x20sent','data','isNil','subtractNumber','subtractUnit','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','catch','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','map','keyBy','toString','difference','intersection','length','exists','toRun','index','my\x20id','cron','active','isBetween','startAt','endAt','add','start','add\x20cron','stop','deleteJob','stop\x20cron','update','update\x20cron','run','util','path','lodash','moment','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','secure','authentication','user','name'];(function(_0x15af84,_0x7a5b4d){var _0x5ac0a4=function(_0x97cb67){while(--_0x97cb67){_0x15af84['push'](_0x15af84['shift']());}};_0x5ac0a4(++_0x7a5b4d);}(_0xae29,0xa3));var _0x9ae2=function(_0x5de064,_0x2dbae2){_0x5de064=_0x5de064-0x0;var _0x56cdf8=_0xae29[_0x5de064];return _0x56cdf8;};'use strict';var fs=require('fs');var util=require(_0x9ae2('0x0'));var path=require(_0x9ae2('0x1'));var _=require(_0x9ae2('0x2'));var moment=require(_0x9ae2('0x3'));var CronJobManager=require('cron-job-manager');var jayson=require(_0x9ae2('0x4'));var BPromise=require(_0x9ae2('0x5'));var logger=require(_0x9ae2('0x6'))(_0x9ae2('0x7'));var db=require(_0x9ae2('0x8'))['db'];var analyticCustomReportController=require(_0x9ae2('0x9'));var analyticDefaultReportController=require(_0x9ae2('0xa'));var client=jayson[_0x9ae2('0xb')][_0x9ae2('0xc')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x44b930,_0xf5e235){return function(){logger[_0x9ae2('0xd')](_0x9ae2('0xe'),_0x44b930[_0x9ae2('0xf')]);var _0x1fc1b8=!![];var _0x2cdb82={'tls':{'rejectUnauthorized':![]}};if(_0x44b930[_0x9ae2('0x10')][_0x9ae2('0x11')]['service']){_0x2cdb82[_0x9ae2('0x12')]=_0x44b930[_0x9ae2('0x10')][_0x9ae2('0x11')][_0x9ae2('0x12')];}else{_0x2cdb82[_0x9ae2('0x13')]=_0x44b930['MailAccount'][_0x9ae2('0x11')][_0x9ae2('0x13')];_0x2cdb82[_0x9ae2('0x14')]=_0x44b930[_0x9ae2('0x10')][_0x9ae2('0x11')]['port'];_0x2cdb82[_0x9ae2('0x15')]=_0x44b930[_0x9ae2('0x10')][_0x9ae2('0x11')]['secure'];}if(_0x44b930[_0x9ae2('0x10')][_0x9ae2('0x11')][_0x9ae2('0x16')]){_0x2cdb82['auth']={'user':_0x44b930['MailAccount']['Smtp'][_0x9ae2('0x17')],'pass':_0x44b930['MailAccount']['Smtp']['pass']};}var _0xbad806={'account':_0x2cdb82,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x44b930[_0x9ae2('0x10')][_0x9ae2('0x18')],_0x44b930['MailAccount'][_0x9ae2('0xf')]||_0x44b930[_0x9ae2('0x10')][_0x9ae2('0x11')]['user']),'to':_0x44b930[_0x9ae2('0xf')],'cc':_0x44b930['cc'],'bcc':_0x44b930[_0x9ae2('0x19')],'subject':util[_0x9ae2('0x1a')](_0x9ae2('0x1b'),_0xf5e235['name'],_0x44b930['subtractNumber'],_0x44b930['subtractUnit'])}};var _0x2c81f6=path[_0x9ae2('0x1c')](__dirname,_0x9ae2('0x1d'));var _0x5cb885=_0xf5e235[_0x9ae2('0x1e')];var _0x231e42=util[_0x9ae2('0x1a')](_0x9ae2('0x1f'),path[_0x9ae2('0x20')](_0xf5e235[_0x9ae2('0x1e')],path[_0x9ae2('0x21')](_0xf5e235[_0x9ae2('0x1e')])),_0x9ae2('0x22'));var _0x39223e=path['join'](_0x2c81f6,_0x5cb885);var _0x112618=path['join'](_0x2c81f6,_0x231e42);if(fs['existsSync'](_0x39223e)){_0xf5e235[_0x9ae2('0x23')]='Sent';_0xbad806[_0x9ae2('0x24')][_0x9ae2('0x25')]=[{'filename':_0x5cb885,'path':_0x39223e}];_0xbad806['message'][_0x9ae2('0x26')]=util[_0x9ae2('0x1a')](_0x9ae2('0x27'),JSON[_0x9ae2('0x28')](_0xf5e235,null,0x2));}else if(fs[_0x9ae2('0x29')](_0x112618)){_0xf5e235[_0x9ae2('0x23')]='Sent';_0xbad806[_0x9ae2('0x24')][_0x9ae2('0x25')]=[{'filename':_0x231e42,'path':_0x112618}];}else{_0xbad806[_0x9ae2('0x24')]['text']='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x44b930[_0x9ae2('0x2a')]){_0x1fc1b8=![];logger[_0x9ae2('0xd')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x1fc1b8){return client[_0x9ae2('0x2b')](_0x9ae2('0x2c'),_0xbad806)[_0x9ae2('0x2d')](function(_0x5a2209){if(_0x5a2209[_0x9ae2('0x2e')]){return logger[_0x9ae2('0x2e')](_0x9ae2('0x2f'),JSON[_0x9ae2('0x28')](_0x5a2209));}return logger[_0x9ae2('0xd')](_0x9ae2('0x30'));})['catch'](function(_0xe51874){return logger[_0x9ae2('0x2e')](_0x9ae2('0x2f'),JSON[_0x9ae2('0x28')](_0xe51874));});}};}function handleError(){return function(_0x27e71a){return logger[_0x9ae2('0x2e')](JSON[_0x9ae2('0x28')](_0x27e71a));};}function handleResult(_0x1ea449){return function(_0xc9f6e2){logger[_0x9ae2('0xd')](_0x9ae2('0x31'),JSON['stringify'](_0xc9f6e2));if(_0x1ea449[_0x9ae2('0x10')]&&_0x1ea449[_0x9ae2('0x10')][_0x9ae2('0x11')]&&!_[_0x9ae2('0x32')](_0x1ea449['email'])){setTimeout(handleSendEmail(_0x1ea449,_0xc9f6e2),0x3c*0x3e8);}};}function handleJob(_0x3dffb9){return function(){try{if(_[_0x9ae2('0x32')](_0x3dffb9[_0x9ae2('0x33')])){return logger[_0x9ae2('0xd')]('subtractNumber\x20null\x20or\x20undefined');}if(_['isNil'](_0x3dffb9[_0x9ae2('0x34')])){return logger[_0x9ae2('0xd')](_0x9ae2('0x35'));}var _0xa4c6e8={'startDate':moment()[_0x9ae2('0x36')](_0x3dffb9[_0x9ae2('0x33')],_0x3dffb9[_0x9ae2('0x34')])[_0x9ae2('0x1a')](_0x9ae2('0x37')),'endDate':moment()['format'](_0x9ae2('0x37')),'type':_0x9ae2('0x38'),'output':_0x3dffb9[_0x9ae2('0x39')],'name':_0x3dffb9[_0x9ae2('0x18')]};if(!_['isNil'](_0x3dffb9[_0x9ae2('0x3a')])){logger[_0x9ae2('0xd')](_0x9ae2('0x3b'),_0x3dffb9['DefaultReportId']);return analyticDefaultReportController[_0x9ae2('0x3c')]({'id':_0x3dffb9['DefaultReportId']},_0xa4c6e8)[_0x9ae2('0x2d')](handleResult(_0x3dffb9))['catch'](handleError());}if(!_[_0x9ae2('0x32')](_0x3dffb9[_0x9ae2('0x3d')])){logger[_0x9ae2('0xd')](_0x9ae2('0x3e'),_0x3dffb9[_0x9ae2('0x3d')]);return analyticCustomReportController[_0x9ae2('0x3c')]({'id':_0x3dffb9[_0x9ae2('0x3d')]},_0xa4c6e8)[_0x9ae2('0x2d')](handleResult(_0x3dffb9))[_0x9ae2('0x3f')](handleError());}}catch(_0x5d444b){logger['error'](JSON[_0x9ae2('0x28')](_0x5d444b));}return logger[_0x9ae2('0xd')](_0x9ae2('0x40'));};}function getJobs(_0x4c2d90){var _0x1e6d02={};if(_0x4c2d90){_0x1e6d02['id']=_0x4c2d90;}return db[_0x9ae2('0x41')][_0x9ae2('0x42')]({'where':_0x1e6d02,'include':[{'model':db[_0x9ae2('0x10')],'attributes':['id',_0x9ae2('0x18'),_0x9ae2('0xf')],'include':[{'model':db[_0x9ae2('0x43')],'as':_0x9ae2('0x11')}]}]})[_0x9ae2('0x2d')](function(_0x14029e){var _0x40d004=_[_0x9ae2('0x44')](manager[_0x9ae2('0x45')]);var _0x210657=_[_0x9ae2('0x46')](_0x14029e,function(_0x14ce94){return _0x14ce94['id']['toString']();});var _0x37ef7b=_[_0x9ae2('0x47')](_0x14029e,function(_0x59ea7c){return _0x59ea7c['id'][_0x9ae2('0x48')]();});var _0x194c96=_0x4c2d90?_0x210657:_[_0x9ae2('0x49')](_0x210657,_0x40d004);var _0x36e23c=_[_0x9ae2('0x4a')](_0x210657,_0x40d004);var _0xefa339=_[_0x9ae2('0x49')](_0x40d004,_0x210657);var _0x179ca7;var _0x5bc334;for(_0x179ca7=0x0;_0x179ca7<_0xefa339[_0x9ae2('0x4b')]&&!_0x4c2d90;_0x179ca7+=0x1){_0x5bc334=_0xefa339[_0x179ca7][_0x9ae2('0x48')]();if(manager[_0x9ae2('0x4c')](_0x5bc334)){manager['stop'](_0x5bc334);manager['deleteJob'](_0x5bc334);logger[_0x9ae2('0xd')]('delete\x20cron',_0x5bc334);}}logger[_0x9ae2('0xd')](_0x9ae2('0x4d'),JSON[_0x9ae2('0x28')](_0x194c96));for(_0x179ca7=0x0;_0x179ca7<_0x194c96[_0x9ae2('0x4b')];_0x179ca7+=0x1){_0x5bc334=_0x194c96[_0x179ca7]['toString']();logger[_0x9ae2('0xd')](_0x9ae2('0x4e'),_0x5bc334);if(_0x4c2d90){logger[_0x9ae2('0xd')](_0x9ae2('0x4f'),_0x4c2d90);logger[_0x9ae2('0xd')](JSON['stringify'](_0x37ef7b[_0x5bc334]));BPromise['resolve']()[_0x9ae2('0x2d')](handleJob(_0x37ef7b[_0x5bc334]));logger[_0x9ae2('0xd')]('run\x20job',_0x37ef7b[_0x5bc334][_0x9ae2('0x18')],_0x37ef7b[_0x5bc334][_0x9ae2('0x50')]);}else if(_0x37ef7b[_0x5bc334][_0x9ae2('0x50')]&&_0x37ef7b[_0x5bc334][_0x9ae2('0x51')]&&moment()[_0x9ae2('0x52')](_0x37ef7b[_0x5bc334][_0x9ae2('0x53')],_0x37ef7b[_0x5bc334][_0x9ae2('0x54')])){manager[_0x9ae2('0x55')](_0x5bc334,_0x37ef7b[_0x5bc334]['cron'],handleJob(_0x37ef7b[_0x5bc334]));manager[_0x9ae2('0x56')](_0x5bc334);logger[_0x9ae2('0xd')](_0x9ae2('0x57'),_0x37ef7b[_0x5bc334][_0x9ae2('0x18')],_0x37ef7b[_0x5bc334]['cron']);}else if(manager['exists'](_0x5bc334)){manager[_0x9ae2('0x58')](_0x5bc334);manager[_0x9ae2('0x59')](_0x5bc334);logger[_0x9ae2('0xd')](_0x9ae2('0x5a'),_0x37ef7b[_0x5bc334][_0x9ae2('0x18')],_0x37ef7b[_0x5bc334]['cron']);}}for(_0x179ca7=0x0,_0x5bc334;_0x179ca7<_0x36e23c[_0x9ae2('0x4b')]&&!_0x4c2d90;_0x179ca7+=0x1){_0x5bc334=_0x36e23c[_0x179ca7][_0x9ae2('0x48')]();if(manager[_0x9ae2('0x4c')](_0x5bc334)){if(_0x37ef7b[_0x5bc334][_0x9ae2('0x50')]&&_0x37ef7b[_0x5bc334][_0x9ae2('0x51')]&&moment()[_0x9ae2('0x52')](_0x37ef7b[_0x5bc334][_0x9ae2('0x53')],_0x37ef7b[_0x5bc334][_0x9ae2('0x54')])){manager[_0x9ae2('0x5b')](_0x5bc334,_0x37ef7b[_0x5bc334][_0x9ae2('0x50')],handleJob(_0x37ef7b[_0x5bc334]));logger[_0x9ae2('0xd')](_0x9ae2('0x5c'),_0x37ef7b[_0x5bc334][_0x9ae2('0x18')],_0x37ef7b[_0x5bc334][_0x9ae2('0x50')]);}else{manager['stop'](_0x5bc334);manager['deleteJob'](_0x5bc334);logger[_0x9ae2('0xd')]('stop\x20cron',_0x37ef7b[_0x5bc334][_0x9ae2('0x18')],_0x37ef7b[_0x5bc334][_0x9ae2('0x50')]);}}}})['catch'](function(_0x869f70){logger[_0x9ae2('0x2e')](JSON[_0x9ae2('0x28')](_0x869f70));});}exports[_0x9ae2('0x5d')]=function(_0x512afb){return getJobs(_0x512afb);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0x43c2=['exists','stop\x20cron','update','update\x20cron','run','util','lodash','cron-job-manager','../logger','schedule','../../mysqldb','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','Smtp','service','MailAccount','host','port','secure','authentication','auth','user','pass','format','\x22%s\x22\x20<%s>','bcc','name','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s','basename','extname','status','Sent','attachments','text','stringify','message','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','request','SendMail','then','error','error\x20mail','catch','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','exec\x20custom\x20report\x20id:%s','CustomReportId','no\x20report\x20id','MailServerOut','jobs','map','toString','keyBy','difference','intersection','deleteJob','delete\x20cron','length','my\x20id','resolve','run\x20job','cron','active','isBetween','endAt','add','add\x20cron'];(function(_0x3263b2,_0x142a3f){var _0x3a8a5e=function(_0x217928){while(--_0x217928){_0x3263b2['push'](_0x3263b2['shift']());}};_0x3a8a5e(++_0x142a3f);}(_0x43c2,0x104));var _0x243c=function(_0x3a6afc,_0x426e64){_0x3a6afc=_0x3a6afc-0x0;var _0x56e387=_0x43c2[_0x3a6afc];return _0x56e387;};'use strict';var fs=require('fs');var util=require(_0x243c('0x0'));var path=require('path');var _=require(_0x243c('0x1'));var moment=require('moment');var CronJobManager=require(_0x243c('0x2'));var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x243c('0x3'))(_0x243c('0x4'));var db=require(_0x243c('0x5'))['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0x243c('0x6')][_0x243c('0x7')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x582d0d,_0x364b17){return function(){logger[_0x243c('0x8')](_0x243c('0x9'),_0x582d0d[_0x243c('0xa')]);var _0x2244ff=!![];var _0x27a215={'tls':{'rejectUnauthorized':![]}};if(_0x582d0d['MailAccount'][_0x243c('0xb')][_0x243c('0xc')]){_0x27a215['service']=_0x582d0d[_0x243c('0xd')][_0x243c('0xb')][_0x243c('0xc')];}else{_0x27a215[_0x243c('0xe')]=_0x582d0d[_0x243c('0xd')][_0x243c('0xb')][_0x243c('0xe')];_0x27a215[_0x243c('0xf')]=_0x582d0d[_0x243c('0xd')][_0x243c('0xb')]['port'];_0x27a215['secure']=_0x582d0d[_0x243c('0xd')][_0x243c('0xb')][_0x243c('0x10')];}if(_0x582d0d[_0x243c('0xd')]['Smtp'][_0x243c('0x11')]){_0x27a215[_0x243c('0x12')]={'user':_0x582d0d[_0x243c('0xd')][_0x243c('0xb')][_0x243c('0x13')],'pass':_0x582d0d[_0x243c('0xd')][_0x243c('0xb')][_0x243c('0x14')]};}var _0x47a596={'account':_0x27a215,'message':{'from':util[_0x243c('0x15')](_0x243c('0x16'),_0x582d0d[_0x243c('0xd')]['name'],_0x582d0d[_0x243c('0xd')][_0x243c('0xa')]||_0x582d0d[_0x243c('0xd')]['Smtp'][_0x243c('0x13')]),'to':_0x582d0d[_0x243c('0xa')],'cc':_0x582d0d['cc'],'bcc':_0x582d0d[_0x243c('0x17')],'subject':util[_0x243c('0x15')]('Report\x20%s\x20last\x20%s\x20%s',_0x364b17[_0x243c('0x18')],_0x582d0d[_0x243c('0x19')],_0x582d0d[_0x243c('0x1a')])}};var _0x44fdb2=path[_0x243c('0x1b')](__dirname,_0x243c('0x1c'));var _0x204766=_0x364b17[_0x243c('0x1d')];var _0x318357=util[_0x243c('0x15')](_0x243c('0x1e'),path[_0x243c('0x1f')](_0x364b17['savename'],path[_0x243c('0x20')](_0x364b17[_0x243c('0x1d')])),'zip');var _0x4422a3=path[_0x243c('0x1b')](_0x44fdb2,_0x204766);var _0x1cc15f=path[_0x243c('0x1b')](_0x44fdb2,_0x318357);if(fs['existsSync'](_0x4422a3)){_0x364b17[_0x243c('0x21')]=_0x243c('0x22');_0x47a596['message'][_0x243c('0x23')]=[{'filename':_0x204766,'path':_0x4422a3}];_0x47a596['message'][_0x243c('0x24')]=util[_0x243c('0x15')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0x243c('0x25')](_0x364b17,null,0x2));}else if(fs['existsSync'](_0x1cc15f)){_0x364b17[_0x243c('0x21')]='Sent';_0x47a596[_0x243c('0x26')][_0x243c('0x23')]=[{'filename':_0x318357,'path':_0x1cc15f}];}else{_0x47a596[_0x243c('0x26')][_0x243c('0x24')]=_0x243c('0x27');if(!_0x582d0d[_0x243c('0x28')]){_0x2244ff=![];logger[_0x243c('0x8')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x2244ff){return client[_0x243c('0x29')](_0x243c('0x2a'),_0x47a596)[_0x243c('0x2b')](function(_0x44e92b){if(_0x44e92b[_0x243c('0x2c')]){return logger[_0x243c('0x2c')](_0x243c('0x2d'),JSON['stringify'](_0x44e92b));}return logger[_0x243c('0x8')]('email\x20sent');})[_0x243c('0x2e')](function(_0x2ffad9){return logger[_0x243c('0x2c')]('error\x20mail',JSON['stringify'](_0x2ffad9));});}};}function handleError(){return function(_0x255373){return logger[_0x243c('0x2c')](JSON[_0x243c('0x25')](_0x255373));};}function handleResult(_0x502dfa){return function(_0x3a32f0){logger[_0x243c('0x8')](_0x243c('0x2f'),JSON['stringify'](_0x3a32f0));if(_0x502dfa['MailAccount']&&_0x502dfa[_0x243c('0xd')][_0x243c('0xb')]&&!_[_0x243c('0x30')](_0x502dfa[_0x243c('0xa')])){setTimeout(handleSendEmail(_0x502dfa,_0x3a32f0),0x3c*0x3e8);}};}function handleJob(_0x202dd2){return function(){try{if(_[_0x243c('0x30')](_0x202dd2[_0x243c('0x19')])){return logger['info'](_0x243c('0x31'));}if(_[_0x243c('0x30')](_0x202dd2[_0x243c('0x1a')])){return logger['info'](_0x243c('0x32'));}var _0x175944={'startDate':moment()[_0x243c('0x33')](_0x202dd2[_0x243c('0x19')],_0x202dd2[_0x243c('0x1a')])['format']('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0x243c('0x15')](_0x243c('0x34')),'type':_0x243c('0x35'),'output':_0x202dd2[_0x243c('0x36')],'name':_0x202dd2['name']};if(!_[_0x243c('0x30')](_0x202dd2[_0x243c('0x37')])){logger[_0x243c('0x8')](_0x243c('0x38'),_0x202dd2[_0x243c('0x37')]);return analyticDefaultReportController[_0x243c('0x39')]({'id':_0x202dd2['DefaultReportId']},_0x175944)['then'](handleResult(_0x202dd2))['catch'](handleError());}if(!_['isNil'](_0x202dd2['CustomReportId'])){logger[_0x243c('0x8')](_0x243c('0x3a'),_0x202dd2['CustomReportId']);return analyticCustomReportController['runReport']({'id':_0x202dd2[_0x243c('0x3b')]},_0x175944)[_0x243c('0x2b')](handleResult(_0x202dd2))[_0x243c('0x2e')](handleError());}}catch(_0x230152){logger[_0x243c('0x2c')](JSON[_0x243c('0x25')](_0x230152));}return logger[_0x243c('0x8')](_0x243c('0x3c'));};}function getJobs(_0x2193e3){var _0x11ba55={};if(_0x2193e3){_0x11ba55['id']=_0x2193e3;}return db['Schedule']['findAll']({'where':_0x11ba55,'include':[{'model':db['MailAccount'],'attributes':['id',_0x243c('0x18'),_0x243c('0xa')],'include':[{'model':db[_0x243c('0x3d')],'as':'Smtp'}]}]})[_0x243c('0x2b')](function(_0x2a350c){var _0x15f3d4=_['keys'](manager[_0x243c('0x3e')]);var _0x27377c=_[_0x243c('0x3f')](_0x2a350c,function(_0x3c5343){return _0x3c5343['id'][_0x243c('0x40')]();});var _0xea0690=_[_0x243c('0x41')](_0x2a350c,function(_0x23fe78){return _0x23fe78['id'][_0x243c('0x40')]();});var _0x27b90e=_0x2193e3?_0x27377c:_[_0x243c('0x42')](_0x27377c,_0x15f3d4);var _0x45193d=_[_0x243c('0x43')](_0x27377c,_0x15f3d4);var _0x3be93d=_['difference'](_0x15f3d4,_0x27377c);var _0x1ed920;var _0x2bb51b;for(_0x1ed920=0x0;_0x1ed920<_0x3be93d['length']&&!_0x2193e3;_0x1ed920+=0x1){_0x2bb51b=_0x3be93d[_0x1ed920][_0x243c('0x40')]();if(manager['exists'](_0x2bb51b)){manager['stop'](_0x2bb51b);manager[_0x243c('0x44')](_0x2bb51b);logger[_0x243c('0x8')](_0x243c('0x45'),_0x2bb51b);}}logger[_0x243c('0x8')]('toRun',JSON[_0x243c('0x25')](_0x27b90e));for(_0x1ed920=0x0;_0x1ed920<_0x27b90e[_0x243c('0x46')];_0x1ed920+=0x1){_0x2bb51b=_0x27b90e[_0x1ed920][_0x243c('0x40')]();logger[_0x243c('0x8')]('index',_0x2bb51b);if(_0x2193e3){logger[_0x243c('0x8')](_0x243c('0x47'),_0x2193e3);logger[_0x243c('0x8')](JSON[_0x243c('0x25')](_0xea0690[_0x2bb51b]));BPromise[_0x243c('0x48')]()['then'](handleJob(_0xea0690[_0x2bb51b]));logger[_0x243c('0x8')](_0x243c('0x49'),_0xea0690[_0x2bb51b][_0x243c('0x18')],_0xea0690[_0x2bb51b][_0x243c('0x4a')]);}else if(_0xea0690[_0x2bb51b][_0x243c('0x4a')]&&_0xea0690[_0x2bb51b][_0x243c('0x4b')]&&moment()[_0x243c('0x4c')](_0xea0690[_0x2bb51b]['startAt'],_0xea0690[_0x2bb51b][_0x243c('0x4d')])){manager[_0x243c('0x4e')](_0x2bb51b,_0xea0690[_0x2bb51b]['cron'],handleJob(_0xea0690[_0x2bb51b]));manager['start'](_0x2bb51b);logger[_0x243c('0x8')](_0x243c('0x4f'),_0xea0690[_0x2bb51b]['name'],_0xea0690[_0x2bb51b][_0x243c('0x4a')]);}else if(manager[_0x243c('0x50')](_0x2bb51b)){manager['stop'](_0x2bb51b);manager[_0x243c('0x44')](_0x2bb51b);logger[_0x243c('0x8')](_0x243c('0x51'),_0xea0690[_0x2bb51b][_0x243c('0x18')],_0xea0690[_0x2bb51b][_0x243c('0x4a')]);}}for(_0x1ed920=0x0,_0x2bb51b;_0x1ed920<_0x45193d['length']&&!_0x2193e3;_0x1ed920+=0x1){_0x2bb51b=_0x45193d[_0x1ed920][_0x243c('0x40')]();if(manager[_0x243c('0x50')](_0x2bb51b)){if(_0xea0690[_0x2bb51b][_0x243c('0x4a')]&&_0xea0690[_0x2bb51b][_0x243c('0x4b')]&&moment()[_0x243c('0x4c')](_0xea0690[_0x2bb51b]['startAt'],_0xea0690[_0x2bb51b][_0x243c('0x4d')])){manager[_0x243c('0x52')](_0x2bb51b,_0xea0690[_0x2bb51b][_0x243c('0x4a')],handleJob(_0xea0690[_0x2bb51b]));logger[_0x243c('0x8')](_0x243c('0x53'),_0xea0690[_0x2bb51b][_0x243c('0x18')],_0xea0690[_0x2bb51b][_0x243c('0x4a')]);}else{manager['stop'](_0x2bb51b);manager['deleteJob'](_0x2bb51b);logger[_0x243c('0x8')]('stop\x20cron',_0xea0690[_0x2bb51b][_0x243c('0x18')],_0xea0690[_0x2bb51b][_0x243c('0x4a')]);}}}})['catch'](function(_0xc7a607){logger['error'](JSON[_0x243c('0x25')](_0xc7a607));});}exports[_0x243c('0x54')]=function(_0x13b961){return getJobs(_0x13b961);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 9f99f49..805e2cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3db=['[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','ValidationError','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Transcript\x20not\x20available','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Sentiment','catch','name','SequelizeValidationError','error','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','start','lodash','aws-sdk','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript'];(function(_0x380a3f,_0x202483){var _0x2b4eca=function(_0x1e99b2){while(--_0x1e99b2){_0x380a3f['push'](_0x380a3f['shift']());}};_0x2b4eca(++_0x202483);}(_0xe3db,0xc8));var _0xbe3d=function(_0x12b4b5,_0x29b12a){_0x12b4b5=_0x12b4b5-0x0;var _0x9870c4=_0xe3db[_0x12b4b5];return _0x9870c4;};var _=require(_0xbe3d('0x0'));var AWS=require(_0xbe3d('0x1'));var rp=require('request-promise');var util=require(_0xbe3d('0x2'));var BPromise=require(_0xbe3d('0x3'));var db=require(_0xbe3d('0x4'))['db'];var logger=require(_0xbe3d('0x5'))(_0xbe3d('0x6'));function getTranscriptionJob(_0x192368,_0x30163d,_0x472825,_0x22d579){return new Promise(function(_0xd5a81,_0x2b4c19){var _0x4c255b=new AWS[(_0xbe3d('0x7'))]({'accessKeyId':_0x30163d,'secretAccessKey':_0x192368,'region':_0x472825});_0x4c255b[_0xbe3d('0x8')]({'TranscriptionJobName':_0x22d579},function(_0x24136a,_0x37e7c0){if(_0x24136a){return _0x2b4c19(_0x24136a);}else{return _0xd5a81(_0x37e7c0);}});});}function sentiment(_0x55df34,_0x105b9e,_0x2aa8ff,_0x514464,_0x5eddd8){return new Promise(function(_0x3b313c,_0x29d4d6){var _0x1d9d6b=new AWS[(_0xbe3d('0x9'))]({'accessKeyId':_0x105b9e,'secretAccessKey':_0x55df34,'region':_0x2aa8ff});_0x1d9d6b[_0xbe3d('0xa')]({'Text':_0x514464,'LanguageCode':_0x5eddd8[_0xbe3d('0xb')](0x0,0x2)},function(_0xfb42af,_0x2a772f){if(_0xfb42af){return _0x29d4d6(_0xfb42af);}else{return _0x3b313c(_0x2a772f);}});});}function checkTranscribeJob(_0x1ff83c,_0x276e4c,_0x4d25e7){var _0x2fad2d;return new BPromise(function(_0x48318a,_0xf2e2e6){logger[_0xbe3d('0xc')](util[_0xbe3d('0xd')](_0xbe3d('0xe'),_0x1ff83c['id'],_0x1ff83c[_0xbe3d('0xf')]));return getTranscriptionJob(_0x4d25e7[_0xbe3d('0x10')],_0x4d25e7[_0xbe3d('0x11')],_0x276e4c[_0xbe3d('0x12')],_0x1ff83c[_0xbe3d('0xf')])[_0xbe3d('0x13')](function(_0x2a45ef){logger[_0xbe3d('0xc')](util[_0xbe3d('0xd')](_0xbe3d('0x14'),_0x1ff83c['id'],_0x1ff83c['transcribeName'],_0x2a45ef[_0xbe3d('0x15')][_0xbe3d('0x16')]));if(!_0x1ff83c[_0xbe3d('0x17')]){switch(_0x2a45ef[_0xbe3d('0x15')][_0xbe3d('0x16')]){case _0xbe3d('0x18'):var _0x1d2ccc={'transcribeStatus':_0x2a45ef[_0xbe3d('0x15')][_0xbe3d('0x16')],'fileUri':_0x2a45ef['TranscriptionJob'][_0xbe3d('0x19')][_0xbe3d('0x1a')]};logger[_0xbe3d('0xc')](util[_0xbe3d('0xd')](_0xbe3d('0x1b'),_0x1ff83c['id']));return rp({'uri':_0x2a45ef[_0xbe3d('0x15')][_0xbe3d('0x19')][_0xbe3d('0x1a')],'json':!![]})[_0xbe3d('0x13')](function(_0x37b211){logger[_0xbe3d('0xc')](util['format'](_0xbe3d('0x1c'),_0x1ff83c['id']));if(_0x37b211&&_0x37b211[_0xbe3d('0x1d')]&&_0x37b211['results'][_0xbe3d('0x1e')]&&_0x37b211['results'][_0xbe3d('0x1e')][_0xbe3d('0x1f')]){_0x1d2ccc['fileText']='';for(var _0x1f2cd0=0x0;_0x1f2cd0<_0x37b211[_0xbe3d('0x1d')][_0xbe3d('0x1e')][_0xbe3d('0x1f')];_0x1f2cd0++){_0x1d2ccc[_0xbe3d('0x17')]+=_0x37b211[_0xbe3d('0x1d')][_0xbe3d('0x1e')][_0x1f2cd0][_0xbe3d('0x20')]+'';}}return _0x1ff83c[_0xbe3d('0x21')](_0x1d2ccc);})['then'](function(){logger[_0xbe3d('0xc')](util['format'](_0xbe3d('0x22'),_0x1ff83c['id']));if(!_0x1ff83c['tempSentiment']){throw new db[(_0xbe3d('0x23'))]['ValidationError'](_0xbe3d('0x24'));}if(!_0x276e4c[_0xbe3d('0x25')]||!_0x276e4c[_0xbe3d('0x26')]||!_0x276e4c[_0xbe3d('0x27')]||!_0x276e4c[_0xbe3d('0x28')]||!_0x276e4c[_0xbe3d('0x29')]){throw new db[(_0xbe3d('0x23'))]['ValidationError'](_0xbe3d('0x2a'));}if(!_0x1d2ccc[_0xbe3d('0x17')]){throw new Error('Transcript\x20not\x20available');}if(_0x276e4c['sentimentAccountId']===_0x4d25e7['id']){return _0x4d25e7;}else{return db[_0xbe3d('0x2b')][_0xbe3d('0x2c')]({'where':{'id':_settings[_0xbe3d('0x26')]}});}})[_0xbe3d('0x13')](function(_0x2e8e2e){if(!_0x2e8e2e){throw new db[(_0xbe3d('0x23'))][(_0xbe3d('0x2d'))](_0xbe3d('0x2e'));}if(!_0x2e8e2e['data1']||!_0x2e8e2e[_0xbe3d('0x11')]){throw new db[(_0xbe3d('0x23'))][(_0xbe3d('0x2d'))](_0xbe3d('0x2f'));}_0x2fad2d=_0x2e8e2e;logger[_0xbe3d('0xc')](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x1ff83c['id']));return sentiment(_0x2fad2d[_0xbe3d('0x10')],_0x2fad2d['data2'],_0x276e4c['sentimentRegion'],_0x1d2ccc['fileText'],_0x276e4c[_0xbe3d('0x28')]);})[_0xbe3d('0x13')](function(_0x29d222){logger['info'](util[_0xbe3d('0xd')](_0xbe3d('0x30'),_0x1ff83c['id']));return _0x1ff83c[_0xbe3d('0x21')]({'sentiment':_0x29d222['Sentiment'],'sPositive':_0x29d222[_0xbe3d('0x31')][_0xbe3d('0x32')],'sNegative':_0x29d222[_0xbe3d('0x31')][_0xbe3d('0x33')],'sMixed':_0x29d222[_0xbe3d('0x31')][_0xbe3d('0x34')],'sNeutral':_0x29d222[_0xbe3d('0x31')][_0xbe3d('0x35')]});})[_0xbe3d('0x13')](function(){logger[_0xbe3d('0xc')](util[_0xbe3d('0xd')](_0xbe3d('0x22'),_0x1ff83c['id']));_0x48318a();});case'FAILED':return _0x1ff83c[_0xbe3d('0x21')]({'transcribeStatus':_0xbe3d('0x36'),'failureReason':_0x2a45ef[_0xbe3d('0x15')][_0xbe3d('0x37')]})[_0xbe3d('0x13')](function(){logger[_0xbe3d('0xc')](util[_0xbe3d('0xd')](_0xbe3d('0x22'),_0x1ff83c['id']));_0x48318a();});default:logger[_0xbe3d('0xc')](util[_0xbe3d('0xd')](_0xbe3d('0x38'),_0x1ff83c['id']));break;}}else{return BPromise[_0xbe3d('0x39')]()[_0xbe3d('0x13')](function(){if(!_0x1ff83c['tempSentiment']){throw new db[(_0xbe3d('0x23'))][(_0xbe3d('0x2d'))](_0xbe3d('0x24'));}if(!_0x276e4c['sentiment']||!_0x276e4c[_0xbe3d('0x26')]||!_0x276e4c[_0xbe3d('0x27')]||!_0x276e4c[_0xbe3d('0x28')]||!_0x276e4c[_0xbe3d('0x29')]){throw new db[(_0xbe3d('0x23'))][(_0xbe3d('0x2d'))](_0xbe3d('0x2a'));}if(!_0x1ff83c[_0xbe3d('0x17')]){throw new Error(_0xbe3d('0x3a'));}if(_0x276e4c['sentimentAccountId']===_0x4d25e7['id']){return _0x4d25e7;}else{return db[_0xbe3d('0x2b')][_0xbe3d('0x2c')]({'where':{'id':_settings[_0xbe3d('0x26')]}});}})[_0xbe3d('0x13')](function(_0x1e313e){if(!_0x1e313e){throw new db['Sequelize'][(_0xbe3d('0x2d'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x1e313e[_0xbe3d('0x10')]||!_0x1e313e['data2']){throw new db['Sequelize'][(_0xbe3d('0x2d'))](_0xbe3d('0x2f'));}_0x2fad2d=_0x1e313e;logger[_0xbe3d('0xc')](util[_0xbe3d('0xd')](_0xbe3d('0x3b'),_0x1ff83c['id']));return sentiment(_0x2fad2d[_0xbe3d('0x10')],_0x2fad2d[_0xbe3d('0x11')],_0x276e4c['sentimentRegion'],_0x1ff83c[_0xbe3d('0x17')],_0x276e4c[_0xbe3d('0x28')]);})[_0xbe3d('0x13')](function(_0xad5c96){logger['info'](util[_0xbe3d('0xd')](_0xbe3d('0x30'),_0x1ff83c['id']));return _0x1ff83c[_0xbe3d('0x21')]({'sentiment':_0xad5c96[_0xbe3d('0x3c')],'sPositive':_0xad5c96[_0xbe3d('0x31')][_0xbe3d('0x32')],'sNegative':_0xad5c96[_0xbe3d('0x31')][_0xbe3d('0x33')],'sMixed':_0xad5c96[_0xbe3d('0x31')][_0xbe3d('0x34')],'sNeutral':_0xad5c96[_0xbe3d('0x31')][_0xbe3d('0x35')],'transcribeStatus':'COMPLETED'});})[_0xbe3d('0x13')](function(){logger[_0xbe3d('0xc')](util[_0xbe3d('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x1ff83c['id']));_0x48318a();});}})[_0xbe3d('0x3d')](function(_0x21a424){if(_0x21a424){if(!_0x21a424[_0xbe3d('0x3e')]||_0x21a424['name']!==_0xbe3d('0x3f')){logger[_0xbe3d('0x40')](util[_0xbe3d('0xd')]('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x1ff83c['id']),util[_0xbe3d('0x41')](_0x21a424,{'showHidden':![],'depth':null}));}}_0x48318a();});});}function checkTranscribe(){var _0x59c888;var _0x4c2584;var _0x47476a;return db[_0xbe3d('0x42')][_0xbe3d('0x43')]({'where':{'transcribeStatus':_0xbe3d('0x44')}})[_0xbe3d('0x13')](function(_0x5e727e){if(!_0x5e727e||!_0x5e727e[_0xbe3d('0x1f')]){throw new db[(_0xbe3d('0x23'))]['ValidationError'](_0xbe3d('0x45'));}_0x59c888=_0x5e727e;return db['Setting'][_0xbe3d('0x2c')]({'where':{'id':0x1}});})[_0xbe3d('0x13')](function(_0x4a28e7){if(!_0x4a28e7){throw new db[(_0xbe3d('0x23'))][(_0xbe3d('0x2d'))](_0xbe3d('0x46'));}_0x4c2584=_0x4a28e7;if(!_0x4c2584[_0xbe3d('0x6')]||!_0x4c2584[_0xbe3d('0x47')]||!_0x4c2584[_0xbe3d('0x12')]||!_0x4c2584[_0xbe3d('0x28')]||!_0x4c2584['bucket']){throw new db[(_0xbe3d('0x23'))][(_0xbe3d('0x2d'))](_0xbe3d('0x48'));}return db[_0xbe3d('0x2b')]['findOne']({'where':{'id':_0x4c2584[_0xbe3d('0x47')]}});})[_0xbe3d('0x13')](function(_0x32ac09){if(!_0x32ac09){throw new db[(_0xbe3d('0x23'))]['ValidationError'](_0xbe3d('0x2e'));}if(!_0x32ac09[_0xbe3d('0x10')]||!_0x32ac09['data2']){throw new db[(_0xbe3d('0x23'))][(_0xbe3d('0x2d'))](_0xbe3d('0x2f'));}_0x47476a=_0x32ac09;var _0x279d2c=[];_0x59c888[_0xbe3d('0x49')](function(_0x5e72ee){_0x279d2c[_0xbe3d('0x4a')](checkTranscribeJob(_0x5e72ee,_0x4c2584,_0x47476a));});return BPromise['all'](_0x279d2c);})['catch'](function(_0x326ea9){if(_0x326ea9){if(!_0x326ea9[_0xbe3d('0x3e')]||_0x326ea9[_0xbe3d('0x3e')]!==_0xbe3d('0x3f')){logger[_0xbe3d('0x40')](util['inspect'](_0x326ea9,{'showHidden':![],'depth':null}));}}});}exports[_0xbe3d('0x4b')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0x5bc5=['CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Mixed','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','catch','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','forEach','push','all','error','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','detectSentiment','substring','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','TranscriptionJob','TranscriptionJobStatus','COMPLETED','format','[RECORDING:%d]\x20Get\x20transcript','then','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','transcript','update','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available'];(function(_0x244a86,_0x41b276){var _0x5efe98=function(_0x49b0e6){while(--_0x49b0e6){_0x244a86['push'](_0x244a86['shift']());}};_0x5efe98(++_0x41b276);}(_0x5bc5,0xb2));var _0x55bc=function(_0x33fcbb,_0x291d0f){_0x33fcbb=_0x33fcbb-0x0;var _0x2efe40=_0x5bc5[_0x33fcbb];return _0x2efe40;};var _=require(_0x55bc('0x0'));var AWS=require(_0x55bc('0x1'));var rp=require(_0x55bc('0x2'));var util=require(_0x55bc('0x3'));var BPromise=require(_0x55bc('0x4'));var db=require(_0x55bc('0x5'))['db'];var logger=require(_0x55bc('0x6'))(_0x55bc('0x7'));function getTranscriptionJob(_0xa94795,_0x1ea633,_0x340279,_0x121bd1){return new Promise(function(_0x188eb6,_0x5d5f1d){var _0x4d78d6=new AWS[(_0x55bc('0x8'))]({'accessKeyId':_0x1ea633,'secretAccessKey':_0xa94795,'region':_0x340279});_0x4d78d6[_0x55bc('0x9')]({'TranscriptionJobName':_0x121bd1},function(_0x38839e,_0x4d0610){if(_0x38839e){return _0x5d5f1d(_0x38839e);}else{return _0x188eb6(_0x4d0610);}});});}function sentiment(_0x1d6e72,_0x3a0e5e,_0xc535ac,_0x3114d0,_0x3548fb){return new Promise(function(_0xe07566,_0x72a619){var _0x718891=new AWS['Comprehend']({'accessKeyId':_0x3a0e5e,'secretAccessKey':_0x1d6e72,'region':_0xc535ac});_0x718891[_0x55bc('0xa')]({'Text':_0x3114d0,'LanguageCode':_0x3548fb[_0x55bc('0xb')](0x0,0x2)},function(_0x41f298,_0x531cea){if(_0x41f298){return _0x72a619(_0x41f298);}else{return _0xe07566(_0x531cea);}});});}function checkTranscribeJob(_0x3edda7,_0x59e38c,_0xd79ff5){var _0x2d3bd1;return new BPromise(function(_0x2d745b,_0x53542b){logger[_0x55bc('0xc')](util['format'](_0x55bc('0xd'),_0x3edda7['id'],_0x3edda7[_0x55bc('0xe')]));return getTranscriptionJob(_0xd79ff5[_0x55bc('0xf')],_0xd79ff5['data2'],_0x59e38c[_0x55bc('0x10')],_0x3edda7[_0x55bc('0xe')])['then'](function(_0x5c0547){logger[_0x55bc('0xc')](util['format']('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x3edda7['id'],_0x3edda7[_0x55bc('0xe')],_0x5c0547[_0x55bc('0x11')][_0x55bc('0x12')]));if(!_0x3edda7['fileText']){switch(_0x5c0547[_0x55bc('0x11')][_0x55bc('0x12')]){case _0x55bc('0x13'):var _0x5714f5={'transcribeStatus':_0x5c0547[_0x55bc('0x11')]['TranscriptionJobStatus'],'fileUri':_0x5c0547[_0x55bc('0x11')]['Transcript']['TranscriptFileUri']};logger[_0x55bc('0xc')](util[_0x55bc('0x14')](_0x55bc('0x15'),_0x3edda7['id']));return rp({'uri':_0x5c0547['TranscriptionJob']['Transcript']['TranscriptFileUri'],'json':!![]})[_0x55bc('0x16')](function(_0x4647ca){logger['info'](util['format'](_0x55bc('0x17'),_0x3edda7['id']));if(_0x4647ca&&_0x4647ca[_0x55bc('0x18')]&&_0x4647ca[_0x55bc('0x18')][_0x55bc('0x19')]&&_0x4647ca['results'][_0x55bc('0x19')]['length']){_0x5714f5['fileText']='';for(var _0x3e6254=0x0;_0x3e6254<_0x4647ca[_0x55bc('0x18')][_0x55bc('0x19')][_0x55bc('0x1a')];_0x3e6254++){_0x5714f5[_0x55bc('0x1b')]+=_0x4647ca['results'][_0x55bc('0x19')][_0x3e6254][_0x55bc('0x1c')]+'';}}return _0x3edda7[_0x55bc('0x1d')](_0x5714f5);})[_0x55bc('0x16')](function(){logger[_0x55bc('0xc')](util[_0x55bc('0x14')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x3edda7['id']));if(!_0x3edda7[_0x55bc('0x1e')]){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x21'));}if(!_0x59e38c[_0x55bc('0x22')]||!_0x59e38c[_0x55bc('0x23')]||!_0x59e38c[_0x55bc('0x24')]||!_0x59e38c[_0x55bc('0x25')]||!_0x59e38c[_0x55bc('0x26')]){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x27'));}if(!_0x5714f5['fileText']){throw new Error(_0x55bc('0x28'));}if(_0x59e38c[_0x55bc('0x23')]===_0xd79ff5['id']){return _0xd79ff5;}else{return db[_0x55bc('0x29')][_0x55bc('0x2a')]({'where':{'id':_settings[_0x55bc('0x23')]}});}})['then'](function(_0x317bca){if(!_0x317bca){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x2b'));}if(!_0x317bca[_0x55bc('0xf')]||!_0x317bca[_0x55bc('0x2c')]){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x2d'));}_0x2d3bd1=_0x317bca;logger['info'](util[_0x55bc('0x14')](_0x55bc('0x2e'),_0x3edda7['id']));return sentiment(_0x2d3bd1[_0x55bc('0xf')],_0x2d3bd1[_0x55bc('0x2c')],_0x59e38c[_0x55bc('0x24')],_0x5714f5[_0x55bc('0x1b')],_0x59e38c[_0x55bc('0x25')]);})['then'](function(_0x29976c){logger[_0x55bc('0xc')](util['format'](_0x55bc('0x2f'),_0x3edda7['id']));return _0x3edda7[_0x55bc('0x1d')]({'sentiment':_0x29976c[_0x55bc('0x30')],'sPositive':_0x29976c[_0x55bc('0x31')][_0x55bc('0x32')],'sNegative':_0x29976c['SentimentScore']['Negative'],'sMixed':_0x29976c[_0x55bc('0x31')][_0x55bc('0x33')],'sNeutral':_0x29976c[_0x55bc('0x31')][_0x55bc('0x34')]});})[_0x55bc('0x16')](function(){logger[_0x55bc('0xc')](util[_0x55bc('0x14')](_0x55bc('0x35'),_0x3edda7['id']));_0x2d745b();});case'FAILED':return _0x3edda7[_0x55bc('0x1d')]({'transcribeStatus':_0x55bc('0x36'),'failureReason':_0x5c0547[_0x55bc('0x11')]['FailureReason']})['then'](function(){logger[_0x55bc('0xc')](util[_0x55bc('0x14')](_0x55bc('0x35'),_0x3edda7['id']));_0x2d745b();});default:logger[_0x55bc('0xc')](util['format'](_0x55bc('0x37'),_0x3edda7['id']));break;}}else{return BPromise[_0x55bc('0x38')]()[_0x55bc('0x16')](function(){if(!_0x3edda7[_0x55bc('0x1e')]){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x21'));}if(!_0x59e38c[_0x55bc('0x22')]||!_0x59e38c['sentimentAccountId']||!_0x59e38c[_0x55bc('0x24')]||!_0x59e38c[_0x55bc('0x25')]||!_0x59e38c[_0x55bc('0x26')]){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x27'));}if(!_0x3edda7[_0x55bc('0x1b')]){throw new Error(_0x55bc('0x28'));}if(_0x59e38c['sentimentAccountId']===_0xd79ff5['id']){return _0xd79ff5;}else{return db[_0x55bc('0x29')][_0x55bc('0x2a')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0x55bc('0x16')](function(_0x464f05){if(!_0x464f05){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x2b'));}if(!_0x464f05[_0x55bc('0xf')]||!_0x464f05[_0x55bc('0x2c')]){throw new db['Sequelize'][(_0x55bc('0x20'))](_0x55bc('0x2d'));}_0x2d3bd1=_0x464f05;logger[_0x55bc('0xc')](util['format'](_0x55bc('0x2e'),_0x3edda7['id']));return sentiment(_0x2d3bd1[_0x55bc('0xf')],_0x2d3bd1[_0x55bc('0x2c')],_0x59e38c[_0x55bc('0x24')],_0x3edda7['fileText'],_0x59e38c[_0x55bc('0x25')]);})['then'](function(_0x54cf96){logger[_0x55bc('0xc')](util['format'](_0x55bc('0x2f'),_0x3edda7['id']));return _0x3edda7[_0x55bc('0x1d')]({'sentiment':_0x54cf96[_0x55bc('0x30')],'sPositive':_0x54cf96[_0x55bc('0x31')]['Positive'],'sNegative':_0x54cf96['SentimentScore']['Negative'],'sMixed':_0x54cf96['SentimentScore'][_0x55bc('0x33')],'sNeutral':_0x54cf96[_0x55bc('0x31')]['Neutral'],'transcribeStatus':_0x55bc('0x13')});})[_0x55bc('0x16')](function(){logger[_0x55bc('0xc')](util[_0x55bc('0x14')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x3edda7['id']));_0x2d745b();});}})[_0x55bc('0x39')](function(_0x1acbc0){if(_0x1acbc0){if(!_0x1acbc0[_0x55bc('0x3a')]||_0x1acbc0[_0x55bc('0x3a')]!==_0x55bc('0x3b')){logger['error'](util[_0x55bc('0x14')](_0x55bc('0x3c'),_0x3edda7['id']),util[_0x55bc('0x3d')](_0x1acbc0,{'showHidden':![],'depth':null}));}}_0x2d745b();});});}function checkTranscribe(){var _0x308f2c;var _0x300147;var _0x44d617;return db[_0x55bc('0x3e')]['findAll']({'where':{'transcribeStatus':_0x55bc('0x3f')}})[_0x55bc('0x16')](function(_0x31a171){if(!_0x31a171||!_0x31a171[_0x55bc('0x1a')]){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x40'));}_0x308f2c=_0x31a171;return db[_0x55bc('0x41')][_0x55bc('0x2a')]({'where':{'id':0x1}});})[_0x55bc('0x16')](function(_0x2966d6){if(!_0x2966d6){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x42'));}_0x300147=_0x2966d6;if(!_0x300147['transcribe']||!_0x300147['transcribeAccountId']||!_0x300147[_0x55bc('0x10')]||!_0x300147[_0x55bc('0x25')]||!_0x300147[_0x55bc('0x26')]){throw new db['Sequelize'][(_0x55bc('0x20'))]('Transcribe\x20not\x20configured');}return db[_0x55bc('0x29')]['findOne']({'where':{'id':_0x300147[_0x55bc('0x43')]}});})['then'](function(_0x1ba9f3){if(!_0x1ba9f3){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x1ba9f3[_0x55bc('0xf')]||!_0x1ba9f3[_0x55bc('0x2c')]){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x2d'));}_0x44d617=_0x1ba9f3;var _0x4fc84e=[];_0x308f2c[_0x55bc('0x44')](function(_0x5d4c24){_0x4fc84e[_0x55bc('0x45')](checkTranscribeJob(_0x5d4c24,_0x300147,_0x44d617));});return BPromise[_0x55bc('0x46')](_0x4fc84e);})[_0x55bc('0x39')](function(_0x21cc1c){if(_0x21cc1c){if(!_0x21cc1c[_0x55bc('0x3a')]||_0x21cc1c[_0x55bc('0x3a')]!==_0x55bc('0x3b')){logger[_0x55bc('0x47')](util[_0x55bc('0x3d')](_0x21cc1c,{'showHidden':![],'depth':null}));}}});}exports[_0x55bc('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index ed9e027..4d7f52d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe237=['emit','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','../../config/environment','../../mysqldb','../logger','schedule','redis','WhatsappInteraction','findAll','hours','then','map','[WHATSAPP]\x20Interactions\x20to\x20close:','update','timeout','format','length','info','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','join'];(function(_0x56e3a8,_0x38f770){var _0x321e49=function(_0x22572f){while(--_0x22572f){_0x56e3a8['push'](_0x56e3a8['shift']());}};_0x321e49(++_0x38f770);}(_0xe237,0xdc));var _0x7e23=function(_0x53b938,_0x1ef2f1){_0x53b938=_0x53b938-0x0;var _0xf029bd=_0xe237[_0x53b938];return _0xf029bd;};'use strict';var _=require(_0x7e23('0x0'));var moment=require(_0x7e23('0x1'));var Redis=require('ioredis');var util=require('util');var config=require(_0x7e23('0x2'));var db=require(_0x7e23('0x3'))['db'];var logger=require(_0x7e23('0x4'))(_0x7e23('0x5'));config['redis']=_['defaults'](config[_0x7e23('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x7e23('0x6')]));function closeInteractions(){var _0x1b8093=[];return db[_0x7e23('0x7')][_0x7e23('0x8')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,_0x7e23('0x9'))}}})[_0x7e23('0xa')](function(_0xc5aaae){if(_0xc5aaae&&_0xc5aaae['length']){_0x1b8093=_[_0x7e23('0xb')](_0xc5aaae||[],'id');logger['info'](_0x7e23('0xc'),_0x1b8093['join']());return db[_0x7e23('0x7')][_0x7e23('0xd')]({'closeReason':'system','disposition':_0x7e23('0xe'),'closed':!![],'closedAt':moment()[_0x7e23('0xf')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x1b8093}});}})[_0x7e23('0xa')](function(){if(_0x1b8093&&_0x1b8093[_0x7e23('0x10')]){logger[_0x7e23('0x11')](_0x7e23('0x12'),_0x1b8093[_0x7e23('0x13')]());for(var _0x2d3c0b=0x0;_0x2d3c0b<_0x1b8093[_0x7e23('0x10')];_0x2d3c0b++){io[_0x7e23('0x14')]('whatsappInteraction:update',{'id':_0x1b8093[_0x2d3c0b],'closed':!![]});}}})['catch'](function(_0x5ebb86){logger['error'](_0x7e23('0x15'),_0x5ebb86?util[_0x7e23('0x16')](_0x5ebb86,{'showHidden':![],'depth':null}):'');});}exports[_0x7e23('0x17')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x8e6f=['system','timeout','format','then','emit','whatsappInteraction:update','catch','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','moment','ioredis','../../mysqldb','../logger','schedule','localhost','socket.io-emitter','redis','lastMsgAt','subtract','hours','length','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join'];(function(_0xa8883,_0x1f107f){var _0x479426=function(_0x4e56b9){while(--_0x4e56b9){_0xa8883['push'](_0xa8883['shift']());}};_0x479426(++_0x1f107f);}(_0x8e6f,0x1cc));var _0xf8e6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8e6f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var moment=require(_0xf8e6('0x0'));var Redis=require(_0xf8e6('0x1'));var util=require('util');var config=require('../../config/environment');var db=require(_0xf8e6('0x2'))['db'];var logger=require(_0xf8e6('0x3'))(_0xf8e6('0x4'));config['redis']=_['defaults'](config['redis'],{'host':_0xf8e6('0x5'),'port':0x18eb});var io=require(_0xf8e6('0x6'))(new Redis(config[_0xf8e6('0x7')]));function closeInteractions(){var _0x3e5b98=[];return db['WhatsappInteraction']['findAll']({'raw':!![],'attributes':['id',_0xf8e6('0x8')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xf8e6('0x9')](0x18,_0xf8e6('0xa'))}}})['then'](function(_0x42bcca){if(_0x42bcca&&_0x42bcca[_0xf8e6('0xb')]){_0x3e5b98=_['map'](_0x42bcca||[],'id');logger[_0xf8e6('0xc')](_0xf8e6('0xd'),_0x3e5b98[_0xf8e6('0xe')]());return db['WhatsappInteraction']['update']({'closeReason':_0xf8e6('0xf'),'disposition':_0xf8e6('0x10'),'closed':!![],'closedAt':moment()[_0xf8e6('0x11')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x3e5b98}});}})[_0xf8e6('0x12')](function(){if(_0x3e5b98&&_0x3e5b98[_0xf8e6('0xb')]){logger[_0xf8e6('0xc')]('[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:',_0x3e5b98['join']());for(var _0x130eef=0x0;_0x130eef<_0x3e5b98[_0xf8e6('0xb')];_0x130eef++){io[_0xf8e6('0x13')](_0xf8e6('0x14'),{'id':_0x3e5b98[_0x130eef],'closed':!![]});}}})[_0xf8e6('0x15')](function(_0xbdb5a7){logger['error'](_0xf8e6('0x16'),_0xbdb5a7?util[_0xf8e6('0x17')](_0xbdb5a7,{'showHidden':![],'depth':null}):'');});}exports[_0xf8e6('0x18')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index e660774..1e7f5bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x664c=['CmHopper','hopper2','catch','util','../mysqldb','push','Biondo','innocenzo.biondo','@xcally.com','now','Innocenzo','destroy','then','CmContact','bulkCreate','log','finished\x20populating'];(function(_0x2c00af,_0x5d5c83){var _0x592a13=function(_0x580dea){while(--_0x580dea){_0x2c00af['push'](_0x2c00af['shift']());}};_0x592a13(++_0x5d5c83);}(_0x664c,0x124));var _0xc664=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x664c[_0x14add3];return _0x4a174f;};'use strict';var util=require(_0xc664('0x0'));var db=require(_0xc664('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xc664('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0xc664('0x3')+i,'phone':0xf879fb460+i,'email':_0xc664('0x4')+i+_0xc664('0x5')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xc664('0x2')]({'id':i,'active':![],'scheduledat':Date[_0xc664('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xc664('0x6')](),'updatedAt':Date[_0xc664('0x6')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xc664('0x2')]({'id':i,'firstName':_0xc664('0x7')+i,'lastName':_0xc664('0x3')+i,'phone':0xf879fb460+i,'email':_0xc664('0x4')+i+_0xc664('0x5')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xc664('0x2')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xc664('0x6')](),'updatedAt':Date[_0xc664('0x6')]()});}db['CmContact'][_0xc664('0x8')]({'where':{}})[_0xc664('0x9')](function(){return db[_0xc664('0xa')][_0xc664('0xb')](contacts);})[_0xc664('0x9')](function(){console[_0xc664('0xc')](_0xc664('0xd'),'contacts1');return db['CmHopper']['destroy']({'where':{}});})[_0xc664('0x9')](function(){return db['CmHopper'][_0xc664('0xb')](hopper);})[_0xc664('0x9')](function(){console['log']('finished\x20populating','hopper1');return db['CmContact'][_0xc664('0xb')](contacts2);})['then'](function(){console[_0xc664('0xc')](_0xc664('0xd'),'contacts2');return db[_0xc664('0xe')][_0xc664('0xb')](hopper2);})[_0xc664('0x9')](function(){console[_0xc664('0xc')]('finished\x20populating',_0xc664('0xf'));})[_0xc664('0x10')](function(_0x4fa4ce){console[_0xc664('0xc')](_0x4fa4ce);});
\ No newline at end of file
+var _0x535a=['bulkCreate','hopper1','hopper2','catch','util','push','Innocenzo','Biondo','innocenzo.biondo','now','@xcally.com','CmContact','destroy','then','log','finished\x20populating','contacts1','CmHopper'];(function(_0x2a083f,_0x286b24){var _0x3feaa1=function(_0xe26645){while(--_0xe26645){_0x2a083f['push'](_0x2a083f['shift']());}};_0x3feaa1(++_0x286b24);}(_0x535a,0x1a2));var _0xa535=function(_0xff39c1,_0x91728a){_0xff39c1=_0xff39c1-0x0;var _0x830b7e=_0x535a[_0xff39c1];return _0x830b7e;};'use strict';var util=require(_0xa535('0x0'));var db=require('../mysqldb')['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xa535('0x1')]({'id':i,'firstName':_0xa535('0x2')+i,'lastName':_0xa535('0x3')+i,'phone':0xf879fb460+i,'email':_0xa535('0x4')+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xa535('0x1')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xa535('0x5')](),'updatedAt':Date[_0xa535('0x5')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xa535('0x1')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0xa535('0x3')+i,'phone':0xf879fb460+i,'email':_0xa535('0x4')+i+_0xa535('0x6')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xa535('0x1')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0xa535('0x5')]()});}db[_0xa535('0x7')][_0xa535('0x8')]({'where':{}})[_0xa535('0x9')](function(){return db[_0xa535('0x7')]['bulkCreate'](contacts);})[_0xa535('0x9')](function(){console[_0xa535('0xa')](_0xa535('0xb'),_0xa535('0xc'));return db['CmHopper']['destroy']({'where':{}});})[_0xa535('0x9')](function(){return db[_0xa535('0xd')][_0xa535('0xe')](hopper);})[_0xa535('0x9')](function(){console['log'](_0xa535('0xb'),_0xa535('0xf'));return db[_0xa535('0x7')][_0xa535('0xe')](contacts2);})[_0xa535('0x9')](function(){console[_0xa535('0xa')](_0xa535('0xb'),'contacts2');return db[_0xa535('0xd')][_0xa535('0xe')](hopper2);})['then'](function(){console[_0xa535('0xa')]('finished\x20populating',_0xa535('0x10'));})[_0xa535('0x11')](function(_0x31e10f){console['log'](_0x31e10f);});
\ No newline at end of file
index 1d115d9..f34c641 100644 (file)
@@ -362,10 +362,6 @@ var applicationsAlways = {
       app: 'Progress'
     },
     {
-      app: 'Set',
-      appdata: 'CDR(type)=internal'
-    },
-    {
       app: 'Queue',
       appdata: '${EXTEN:20},xX'
     }
index 770b999..66a36b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7e3=['%s%s@xcally.com','password','friend','udp','wss','all','ulaw','yes','/etc/pki/tls/private/motion.key','User','bulkCreate','then','log','catch','util','../mysqldb','push','format','%s%s','agent'];(function(_0x2c27ed,_0x5c50f0){var _0x597bd1=function(_0xd6db18){while(--_0xd6db18){_0x2c27ed['push'](_0x2c27ed['shift']());}};_0x597bd1(++_0x5c50f0);}(_0xe7e3,0x14e));var _0x3e7e=function(_0x31eb67,_0x9bc8c0){_0x31eb67=_0x31eb67-0x0;var _0x2a8cb8=_0xe7e3[_0x31eb67];return _0x2a8cb8;};'use strict';var util=require(_0x3e7e('0x0'));var db=require(_0x3e7e('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x3e7e('0x2')]({'name':util[_0x3e7e('0x3')](_0x3e7e('0x4'),_0x3e7e('0x5'),i),'fullname':util['format']('%s%s','agent',i),'email':util[_0x3e7e('0x3')](_0x3e7e('0x6'),_0x3e7e('0x5'),i),'role':_0x3e7e('0x5'),'password':_0x3e7e('0x7'),'internal':0xfa0+i,'type':_0x3e7e('0x8'),'transport':[_0x3e7e('0x9'),'ws',_0x3e7e('0xa')],'disallow':[_0x3e7e('0xb')],'allow':[_0x3e7e('0xc')],'defaultuser':util[_0x3e7e('0x3')](_0x3e7e('0x4'),_0x3e7e('0x5'),i),'encryption':_0x3e7e('0xd'),'avpf':_0x3e7e('0xd'),'force_avp':_0x3e7e('0xd'),'icesupport':'yes','dtlsenable':_0x3e7e('0xd'),'dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':_0x3e7e('0xe'),'dtlssetup':'actpass','callerid':util[_0x3e7e('0x3')]('\x22%s\x22\x20<%s>',util[_0x3e7e('0x3')](_0x3e7e('0x4'),_0x3e7e('0x5'),i),0xfa0+i)});}db[_0x3e7e('0xf')][_0x3e7e('0x10')](users)[_0x3e7e('0x11')](function(){console[_0x3e7e('0x12')]('add\x20user');})[_0x3e7e('0x13')](function(_0x1b2077){console[_0x3e7e('0x12')](_0x1b2077);});
\ No newline at end of file
+var _0x671b=['all','ulaw','format','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','User','bulkCreate','then','log','add\x20user','catch','util','../mysqldb','%s%s','agent','password','friend','wss'];(function(_0x17b0d4,_0x377add){var _0x2d02c7=function(_0x56e627){while(--_0x56e627){_0x17b0d4['push'](_0x17b0d4['shift']());}};_0x2d02c7(++_0x377add);}(_0x671b,0xe9));var _0xb671=function(_0x90631,_0x48e587){_0x90631=_0x90631-0x0;var _0x495bf8=_0x671b[_0x90631];return _0x495bf8;};'use strict';var util=require(_0xb671('0x0'));var db=require(_0xb671('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util['format'](_0xb671('0x2'),_0xb671('0x3'),i),'fullname':util['format'](_0xb671('0x2'),_0xb671('0x3'),i),'email':util['format']('%s%s@xcally.com',_0xb671('0x3'),i),'role':_0xb671('0x3'),'password':_0xb671('0x4'),'internal':0xfa0+i,'type':_0xb671('0x5'),'transport':['udp','ws',_0xb671('0x6')],'disallow':[_0xb671('0x7')],'allow':[_0xb671('0x8')],'defaultuser':util[_0xb671('0x9')](_0xb671('0x2'),_0xb671('0x3'),i),'encryption':_0xb671('0xa'),'avpf':'yes','force_avp':_0xb671('0xa'),'icesupport':_0xb671('0xa'),'dtlsenable':_0xb671('0xa'),'dtlsverify':'no','dtlscertfile':_0xb671('0xb'),'dtlsprivatekey':_0xb671('0xc'),'dtlssetup':_0xb671('0xd'),'callerid':util['format']('\x22%s\x22\x20<%s>',util[_0xb671('0x9')](_0xb671('0x2'),_0xb671('0x3'),i),0xfa0+i)});}db[_0xb671('0xe')][_0xb671('0xf')](users)[_0xb671('0x10')](function(){console[_0xb671('0x11')](_0xb671('0x12'));})[_0xb671('0x13')](function(_0x3b5fd8){console['log'](_0x3b5fd8);});
\ No newline at end of file
index 84dd2ad..3a8b6e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3746=['handshake','query','find','userProfileId','ChatInteraction','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','admin','push','ChatQueue','SmsQueue','MailQueue','OpenchannelQueue','Trunk','user','voice:inbound','voice:outbound','VoiceQueue','FaxQueues','FaxQueue','OpenchannelQueues','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','voice','chat','fax','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','user_has_fax_interactions:remove','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','connection','address','request','remoteAddress','remotePort','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','util','../mysqldb','name','Agents','role','agent','telephone','type','ivr','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','SmsQueues','MailQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','map','resourceId','User','where','Campaign','format','%s:queue:%s','length','user:%s'];(function(_0x8f7aff,_0x523fbf){var _0x4742f8=function(_0xc6214c){while(--_0xc6214c){_0x8f7aff['push'](_0x8f7aff['shift']());}};_0x4742f8(++_0x523fbf);}(_0x3746,0xa9));var _0x6374=function(_0x541598,_0x1a5c0f){_0x541598=_0x541598-0x0;var _0x4312d7=_0x3746[_0x541598];return _0x4312d7;};'use strict';var _=require(_0x6374('0x0'));var util=require(_0x6374('0x1'));var BPromise=require('bluebird');var db=require(_0x6374('0x2'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0x6374('0x3')],'include':[{'as':_0x6374('0x4'),'model':db['User'],'attributes':['id','name',_0x6374('0x5')],'raw':!![],'where':{'role':_0x6374('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x6374('0x3')],'where':{'role':_0x6374('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x6374('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0x6374('0x3')],'where':{'role':_0x6374('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x6374('0x3'),_0x6374('0x8')],'where':{'type':_0x6374('0x9')}};function getAssociatedResources(_0x59de90,_0x18e4ef,_0x5bd695){return db[_0x6374('0xa')][_0x6374('0xb')]({'where':{'name':_0x59de90,'userProfileId':_0x18e4ef},'raw':!![]})[_0x6374('0xc')](function(_0x585eed){if(_0x585eed){if(_0x585eed[_0x6374('0xd')]){switch(_0x59de90){case _0x6374('0xe'):case _0x6374('0xf'):case'FaxQueues':case _0x6374('0x10'):case _0x6374('0x11'):case'OpenchannelQueues':case _0x6374('0x12'):return db[_0x5bd695][_0x6374('0x13')](queryQueues);case _0x6374('0x14'):return db[_0x5bd695]['findAll'](queryTelephones);case _0x6374('0x15'):return db[_0x5bd695][_0x6374('0x13')](queryTrunks);case _0x6374('0x16'):return db[_0x5bd695]['findAll'](queryCampaigns);}}else{return db[_0x6374('0x17')]['findAll']({'attributes':['resourceId'],'where':{'sectionId':_0x585eed['id']},'raw':!![]})[_0x6374('0xc')](function(_0x4ffe00){if(_0x4ffe00){var _0x17d71b={'where':{'id':_[_0x6374('0x18')](_0x4ffe00,_0x6374('0x19'))},'raw':!![]};switch(_0x5bd695){case _0x6374('0x1a'):_0x17d71b[_0x6374('0x1b')][_0x6374('0x5')]=_0x6374('0x7');break;case _0x6374('0x1c'):_0x17d71b[_0x6374('0x1b')][_0x6374('0x8')]=_0x6374('0x9');break;}return db[_0x5bd695][_0x6374('0x13')](_0x17d71b);}else{return[];}});}}else{return[];}})[_0x6374('0xc')](function(_0x7f4ea3){return _0x7f4ea3;});}function joinOrLeaveQueues(_0x435ab6,_0x11beab,_0x46fdc2,_0x3b8ed2){_0x435ab6[_0x11beab](util[_0x6374('0x1d')](_0x6374('0x1e'),_0x46fdc2,_0x3b8ed2['name']));if(_0x3b8ed2['Agents']){for(var _0x2c29ae=0x0;_0x2c29ae<_0x3b8ed2['Agents'][_0x6374('0x1f')];_0x2c29ae+=0x1){_0x435ab6[_0x11beab](util[_0x6374('0x1d')](_0x6374('0x20'),_0x3b8ed2[_0x6374('0x4')][_0x2c29ae]['name']));}}}function joinOrLeave(_0x110353,_0x2227c9,_0x190870){var _0x1148e5;if(_0x110353[_0x6374('0x21')][_0x6374('0x22')]['id']){db[_0x6374('0x1a')][_0x6374('0x23')]({'attributes':['id','name',_0x6374('0x5'),_0x6374('0x24')],'where':{'id':_0x110353[_0x6374('0x21')]['query']['id']},'include':[{'model':db[_0x6374('0x25')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x6374('0x26')],'as':_0x6374('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x6374('0x28')],'as':_0x6374('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x6374('0x2a')],'as':_0x6374('0x2b'),'attributes':['id'],'raw':!![]},{'model':db[_0x6374('0x2c')],'as':_0x6374('0x2d'),'attributes':['id'],'raw':!![]},{'model':db[_0x6374('0x2e')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0x6374('0xc')](function(_0x37b74a){if(_0x37b74a){_0x1148e5=_0x37b74a;_0x110353[_0x2227c9](util[_0x6374('0x1d')]('user:%s',_0x37b74a[_0x6374('0x3')]));var _0x27f7cf=[];switch(_0x37b74a['role']){case _0x6374('0x2f'):_0x110353[_0x2227c9]('voice:inbound');_0x110353[_0x2227c9]('voice:outbound');if(queryQueues['hasOwnProperty']('include')){delete queryQueues['include'];}_0x27f7cf[_0x6374('0x30')](db['VoiceQueue']['findAll'](queryQueues));_0x27f7cf[_0x6374('0x30')](db[_0x6374('0x31')][_0x6374('0x13')](queryQueues));_0x27f7cf[_0x6374('0x30')](db['FaxQueue'][_0x6374('0x13')](queryQueues));_0x27f7cf['push'](db[_0x6374('0x32')][_0x6374('0x13')](queryQueues));_0x27f7cf[_0x6374('0x30')](db[_0x6374('0x33')][_0x6374('0x13')](queryQueues));_0x27f7cf[_0x6374('0x30')](db[_0x6374('0x34')][_0x6374('0x13')](queryQueues));_0x27f7cf[_0x6374('0x30')](db['WhatsappQueue'][_0x6374('0x13')](queryQueues));_0x27f7cf[_0x6374('0x30')](db['User'][_0x6374('0x13')](queryTelephones));_0x27f7cf[_0x6374('0x30')](db[_0x6374('0x35')][_0x6374('0x13')](queryTrunks));_0x27f7cf[_0x6374('0x30')](db[_0x6374('0x1c')]['findAll'](queryCampaigns));_0x27f7cf[_0x6374('0x30')](db[_0x6374('0x1a')][_0x6374('0x13')](queryAgents));break;case _0x6374('0x36'):_0x110353[_0x2227c9](_0x6374('0x37'));_0x110353[_0x2227c9](_0x6374('0x38'));_0x27f7cf[_0x6374('0x30')](getAssociatedResources('VoiceQueues',_0x37b74a[_0x6374('0x24')],_0x6374('0x39')));_0x27f7cf[_0x6374('0x30')](getAssociatedResources('ChatQueues',_0x37b74a[_0x6374('0x24')],_0x6374('0x31')));_0x27f7cf['push'](getAssociatedResources(_0x6374('0x3a'),_0x37b74a[_0x6374('0x24')],_0x6374('0x3b')));_0x27f7cf[_0x6374('0x30')](getAssociatedResources(_0x6374('0x10'),_0x37b74a['userProfileId'],_0x6374('0x32')));_0x27f7cf[_0x6374('0x30')](getAssociatedResources(_0x6374('0x11'),_0x37b74a['userProfileId'],_0x6374('0x33')));_0x27f7cf[_0x6374('0x30')](getAssociatedResources(_0x6374('0x3c'),_0x37b74a['userProfileId'],_0x6374('0x34')));_0x27f7cf['push'](getAssociatedResources(_0x6374('0x12'),_0x37b74a['userProfileId'],'WhatsappQueue'));_0x27f7cf[_0x6374('0x30')](getAssociatedResources(_0x6374('0x14'),_0x37b74a['userProfileId'],_0x6374('0x1a')));_0x27f7cf[_0x6374('0x30')](getAssociatedResources('Trunks',_0x37b74a[_0x6374('0x24')],_0x6374('0x35')));_0x27f7cf[_0x6374('0x30')](getAssociatedResources(_0x6374('0x16'),_0x37b74a[_0x6374('0x24')],_0x6374('0x1c')));_0x27f7cf[_0x6374('0x30')](db['User']['findAll'](queryAgents));break;case'agent':_0x110353[_0x2227c9]('voice:inbound');_0x110353[_0x2227c9]('voice:outbound');_0x27f7cf['push'](_0x37b74a[_0x6374('0x3d')]({'attributes':['id','name']}));_0x27f7cf[_0x6374('0x30')](_0x37b74a[_0x6374('0x3e')]({'attributes':['id','name']}));_0x27f7cf[_0x6374('0x30')](_0x37b74a[_0x6374('0x3f')]({'attributes':['id',_0x6374('0x3')]}));_0x27f7cf[_0x6374('0x30')](_0x37b74a[_0x6374('0x40')]({'attributes':['id',_0x6374('0x3')]}));_0x27f7cf['push'](_0x37b74a[_0x6374('0x41')]({'attributes':['id',_0x6374('0x3')]}));_0x27f7cf[_0x6374('0x30')](_0x37b74a[_0x6374('0x42')]({'attributes':['id','name']}));_0x27f7cf[_0x6374('0x30')](_0x37b74a['getWhatsappQueues']({'attributes':['id',_0x6374('0x3')]}));break;}return BPromise['all'](_0x27f7cf);}})[_0x6374('0xc')](function(_0x5cdb59){if(_0x5cdb59&&_0x5cdb59[_0x6374('0x1f')]){for(var _0x3d17c3=0x0;_0x3d17c3<_0x5cdb59['length'];_0x3d17c3+=0x1){for(var _0x39dc6c=0x0;_0x39dc6c<_0x5cdb59[_0x3d17c3][_0x6374('0x1f')];_0x39dc6c+=0x1){switch(_0x3d17c3){case 0x0:joinOrLeaveQueues(_0x110353,_0x2227c9,_0x6374('0x43'),_0x5cdb59[_0x3d17c3][_0x39dc6c]);break;case 0x1:joinOrLeaveQueues(_0x110353,_0x2227c9,_0x6374('0x44'),_0x5cdb59[_0x3d17c3][_0x39dc6c]);break;case 0x2:joinOrLeaveQueues(_0x110353,_0x2227c9,_0x6374('0x45'),_0x5cdb59[_0x3d17c3][_0x39dc6c]);break;case 0x3:joinOrLeaveQueues(_0x110353,_0x2227c9,_0x6374('0x46'),_0x5cdb59[_0x3d17c3][_0x39dc6c]);break;case 0x4:joinOrLeaveQueues(_0x110353,_0x2227c9,_0x6374('0x47'),_0x5cdb59[_0x3d17c3][_0x39dc6c]);break;case 0x5:joinOrLeaveQueues(_0x110353,_0x2227c9,_0x6374('0x48'),_0x5cdb59[_0x3d17c3][_0x39dc6c]);break;case 0x6:joinOrLeaveQueues(_0x110353,_0x2227c9,_0x6374('0x49'),_0x5cdb59[_0x3d17c3][_0x39dc6c]);break;case 0x7:if(_0x1148e5[_0x6374('0x5')]!==_0x6374('0x6'))_0x110353[_0x2227c9](util[_0x6374('0x1d')](_0x6374('0x4a'),_0x5cdb59[_0x3d17c3][_0x39dc6c][_0x6374('0x3')]));break;case 0x8:if(_0x1148e5['role']!=='agent')_0x110353[_0x2227c9](util['format'](_0x6374('0x4b'),_0x5cdb59[_0x3d17c3][_0x39dc6c][_0x6374('0x3')]));break;case 0x9:if(_0x1148e5[_0x6374('0x5')]!==_0x6374('0x6'))_0x110353[_0x2227c9](util[_0x6374('0x1d')](_0x6374('0x4c'),_0x5cdb59[_0x3d17c3][_0x39dc6c]['type'],_0x5cdb59[_0x3d17c3][_0x39dc6c][_0x6374('0x3')]));break;case 0xa:_0x110353[_0x2227c9](util[_0x6374('0x1d')](_0x6374('0x20'),_0x5cdb59[_0x3d17c3][_0x39dc6c][_0x6374('0x3')]));break;}}}}})[_0x6374('0xc')](function(){if(_0x2227c9===_0x6374('0x4d')){var _0x15ec01=_[_0x6374('0x18')](_0x1148e5['ChatInteractions'],'id');return _0x1148e5[_0x6374('0x4e')](_0x15ec01)[_0x6374('0xc')](function(){for(var _0x4efc8a=0x0;_0x4efc8a<_0x15ec01[_0x6374('0x1f')];_0x4efc8a+=0x1){_0x190870[_0x6374('0x4f')](_0x6374('0x50'),{'ChatInteractionId':Number(_0x15ec01[_0x4efc8a]),'UserId':Number(_0x1148e5['id'])});}});}})[_0x6374('0xc')](function(){if(_0x2227c9===_0x6374('0x4d')){var _0x3fe6f3=_[_0x6374('0x18')](_0x1148e5['MailInteractions'],'id');return _0x1148e5[_0x6374('0x51')](_0x3fe6f3)['then'](function(){for(var _0x390fe6=0x0;_0x390fe6<_0x3fe6f3['length'];_0x390fe6+=0x1){_0x190870[_0x6374('0x4f')](_0x6374('0x52'),{'MailInteractionId':Number(_0x3fe6f3[_0x390fe6]),'UserId':Number(_0x1148e5['id'])});}});}})['then'](function(){if(_0x2227c9==='leave'){var _0x9d6dcc=_[_0x6374('0x18')](_0x1148e5[_0x6374('0x29')],'id');return _0x1148e5['removeFaxInteractions'](_0x9d6dcc)['then'](function(){for(var _0x4712d6=0x0;_0x4712d6<_0x9d6dcc['length'];_0x4712d6+=0x1){_0x190870[_0x6374('0x4f')](_0x6374('0x53'),{'FaxInteractionId':Number(_0x9d6dcc[_0x4712d6]),'UserId':Number(_0x1148e5['id'])});}});}})['then'](function(){if(_0x2227c9==='leave'){var _0x12801d=_[_0x6374('0x18')](_0x1148e5[_0x6374('0x2b')],'id');return _0x1148e5['removeSmsInteractions'](_0x12801d)[_0x6374('0xc')](function(){for(var _0x30c131=0x0;_0x30c131<_0x12801d['length'];_0x30c131+=0x1){_0x190870[_0x6374('0x4f')](_0x6374('0x54'),{'SmsInteractionId':Number(_0x12801d[_0x30c131]),'UserId':Number(_0x1148e5['id'])});}});}})[_0x6374('0xc')](function(){if(_0x2227c9==='leave'){var _0x170400=_[_0x6374('0x18')](_0x1148e5[_0x6374('0x2d')],'id');return _0x1148e5[_0x6374('0x55')](_0x170400)['then'](function(){for(var _0x508f55=0x0;_0x508f55<_0x170400['length'];_0x508f55+=0x1){_0x190870[_0x6374('0x4f')](_0x6374('0x56'),{'OpenchannelInteractionId':Number(_0x170400[_0x508f55]),'UserId':Number(_0x1148e5['id'])});}});}})[_0x6374('0xc')](function(){if(_0x2227c9===_0x6374('0x4d')){var _0x3a383e=_[_0x6374('0x18')](_0x1148e5['WhatsappInteractions'],'id');return _0x1148e5[_0x6374('0x57')](_0x3a383e)[_0x6374('0xc')](function(){for(var _0x4da92f=0x0;_0x4da92f<_0x3a383e['length'];_0x4da92f+=0x1){_0x190870[_0x6374('0x4f')](_0x6374('0x58'),{'WhatsappInteractionId':Number(_0x3a383e[_0x4da92f]),'UserId':Number(_0x1148e5['id'])});}});}})[_0x6374('0x59')](function(_0x1886ba){_0x110353[_0x6374('0x5a')](_0x1886ba);});}}function onDisconnect(_0x513181,_0x26f601){joinOrLeave(_0x513181,_0x6374('0x4d'),_0x26f601);}function onConnect(_0x48669b){joinOrLeave(_0x48669b,_0x6374('0x5b'));}exports['default']=function(_0x3cd1db){_0x3cd1db['on'](_0x6374('0x5c'),function(_0x5a7efd){_0x5a7efd['setMaxListeners'](0x0);_0x5a7efd[_0x6374('0x5d')]=_0x5a7efd[_0x6374('0x5e')]['connection'][_0x6374('0x5f')]+':'+_0x5a7efd[_0x6374('0x5e')]['connection'][_0x6374('0x60')];_0x5a7efd['connectedAt']=new Date();_0x5a7efd['log']=function(_0x47ed85){console[_0x6374('0x5a')]('SocketIO\x20'+_0x5a7efd[_0x6374('0x61')][_0x6374('0x3')]+'['+_0x5a7efd['address']+']',_0x47ed85);};_0x5a7efd['on'](_0x6374('0x62'),function(){onDisconnect(_0x5a7efd,_0x3cd1db);_0x5a7efd['log'](_0x6374('0x63'));});onConnect(_0x5a7efd);_0x5a7efd[_0x6374('0x5a')](_0x6374('0x64'));});};
\ No newline at end of file
+var _0xbb61=['user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','WhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','address','request','connection','remoteAddress','remotePort','connectedAt','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','bluebird','../mysqldb','./environment','name','Agents','User','agent','telephone','ivr','UserProfileSection','findOne','autoAssociation','ChatQueues','WhatsappQueues','findAll','Trunks','IvrCampaigns','UserProfileResource','resourceId','then','map','where','Campaign','format','%s:queue:%s','length','find','role','handshake','query','ChatInteraction','ChatInteractions','MailInteraction','SmsInteraction','OpenchannelInteractions','user:%s','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','VoiceQueues','userProfileId','FaxQueues','SmsQueues','SmsQueue','MailQueues','OpenchannelQueues','getFaxQueues','getSmsQueues','getOpenchannelQueues','all','chat','fax','sms','openchannel','telephone:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','MailInteractions','user_has_mail_interactions:remove','FaxInteractions','removeFaxInteractions'];(function(_0x5b78e8,_0x55096b){var _0xf2c321=function(_0x4e0cff){while(--_0x4e0cff){_0x5b78e8['push'](_0x5b78e8['shift']());}};_0xf2c321(++_0x55096b);}(_0xbb61,0x131));var _0x1bb6=function(_0x79b649,_0x2115b3){_0x79b649=_0x79b649-0x0;var _0x1af9b1=_0xbb61[_0x79b649];return _0x1af9b1;};'use strict';var _=require(_0x1bb6('0x0'));var util=require('util');var BPromise=require(_0x1bb6('0x1'));var db=require(_0x1bb6('0x2'))['db'];var config=require(_0x1bb6('0x3'));var queryQueues={'attributes':['id',_0x1bb6('0x4')],'include':[{'as':_0x1bb6('0x5'),'model':db[_0x1bb6('0x6')],'attributes':['id',_0x1bb6('0x4'),'role'],'raw':!![],'where':{'role':_0x1bb6('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x1bb6('0x4')],'where':{'role':_0x1bb6('0x8')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x1bb6('0x4')],'where':{'role':_0x1bb6('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x1bb6('0x4'),'type'],'where':{'type':_0x1bb6('0x9')}};function getAssociatedResources(_0xf43d0d,_0x1cc392,_0xe56199){return db[_0x1bb6('0xa')][_0x1bb6('0xb')]({'where':{'name':_0xf43d0d,'userProfileId':_0x1cc392},'raw':!![]})['then'](function(_0xe24210){if(_0xe24210){if(_0xe24210[_0x1bb6('0xc')]){switch(_0xf43d0d){case'VoiceQueues':case _0x1bb6('0xd'):case'FaxQueues':case'SmsQueues':case'MailQueues':case'OpenchannelQueues':case _0x1bb6('0xe'):return db[_0xe56199][_0x1bb6('0xf')](queryQueues);case'Telephones':return db[_0xe56199]['findAll'](queryTelephones);case _0x1bb6('0x10'):return db[_0xe56199][_0x1bb6('0xf')](queryTrunks);case _0x1bb6('0x11'):return db[_0xe56199][_0x1bb6('0xf')](queryCampaigns);}}else{return db[_0x1bb6('0x12')][_0x1bb6('0xf')]({'attributes':[_0x1bb6('0x13')],'where':{'sectionId':_0xe24210['id']},'raw':!![]})[_0x1bb6('0x14')](function(_0x5b1aca){if(_0x5b1aca){var _0x3856f7={'where':{'id':_[_0x1bb6('0x15')](_0x5b1aca,_0x1bb6('0x13'))},'raw':!![]};switch(_0xe56199){case _0x1bb6('0x6'):_0x3856f7[_0x1bb6('0x16')]['role']=_0x1bb6('0x8');break;case _0x1bb6('0x17'):_0x3856f7[_0x1bb6('0x16')]['type']=_0x1bb6('0x9');break;}return db[_0xe56199]['findAll'](_0x3856f7);}else{return[];}});}}else{return[];}})[_0x1bb6('0x14')](function(_0x4b2c3f){return _0x4b2c3f;});}function joinOrLeaveQueues(_0x44c3df,_0xdd0546,_0x44190f,_0x457d46){_0x44c3df[_0xdd0546](util[_0x1bb6('0x18')](_0x1bb6('0x19'),_0x44190f,_0x457d46[_0x1bb6('0x4')]));if(_0x457d46[_0x1bb6('0x5')]){for(var _0x42cb75=0x0;_0x42cb75<_0x457d46['Agents'][_0x1bb6('0x1a')];_0x42cb75+=0x1){_0x44c3df[_0xdd0546](util[_0x1bb6('0x18')]('user:%s',_0x457d46[_0x1bb6('0x5')][_0x42cb75][_0x1bb6('0x4')]));}}}function joinOrLeave(_0x1f18fa,_0xc670ec,_0x57bfbd){var _0x4b5be5;if(_0x1f18fa['handshake']['query']['id']){db['User'][_0x1bb6('0x1b')]({'attributes':['id',_0x1bb6('0x4'),_0x1bb6('0x1c'),'userProfileId'],'where':{'id':_0x1f18fa[_0x1bb6('0x1d')][_0x1bb6('0x1e')]['id']},'include':[{'model':db[_0x1bb6('0x1f')],'as':_0x1bb6('0x20'),'attributes':['id'],'raw':!![]},{'model':db[_0x1bb6('0x21')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x1bb6('0x22')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x1bb6('0x23'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0x1bb6('0x14')](function(_0xf42d9){if(_0xf42d9){_0x4b5be5=_0xf42d9;_0x1f18fa[_0xc670ec](util[_0x1bb6('0x18')](_0x1bb6('0x24'),_0xf42d9['name']));var _0x1bc261=[];switch(_0xf42d9[_0x1bb6('0x1c')]){case'admin':_0x1f18fa[_0xc670ec](_0x1bb6('0x25'));_0x1f18fa[_0xc670ec](_0x1bb6('0x26'));if(queryQueues[_0x1bb6('0x27')]('include')){delete queryQueues[_0x1bb6('0x28')];}_0x1bc261[_0x1bb6('0x29')](db[_0x1bb6('0x2a')][_0x1bb6('0xf')](queryQueues));_0x1bc261['push'](db[_0x1bb6('0x2b')][_0x1bb6('0xf')](queryQueues));_0x1bc261['push'](db[_0x1bb6('0x2c')][_0x1bb6('0xf')](queryQueues));_0x1bc261[_0x1bb6('0x29')](db['SmsQueue'][_0x1bb6('0xf')](queryQueues));_0x1bc261[_0x1bb6('0x29')](db[_0x1bb6('0x2d')]['findAll'](queryQueues));_0x1bc261['push'](db[_0x1bb6('0x2e')][_0x1bb6('0xf')](queryQueues));_0x1bc261['push'](db[_0x1bb6('0x2f')]['findAll'](queryQueues));_0x1bc261[_0x1bb6('0x29')](db[_0x1bb6('0x6')][_0x1bb6('0xf')](queryTelephones));_0x1bc261[_0x1bb6('0x29')](db[_0x1bb6('0x30')][_0x1bb6('0xf')](queryTrunks));_0x1bc261[_0x1bb6('0x29')](db['Campaign'][_0x1bb6('0xf')](queryCampaigns));_0x1bc261[_0x1bb6('0x29')](db['User'][_0x1bb6('0xf')](queryAgents));break;case _0x1bb6('0x31'):_0x1f18fa[_0xc670ec](_0x1bb6('0x25'));_0x1f18fa[_0xc670ec](_0x1bb6('0x26'));_0x1bc261[_0x1bb6('0x29')](getAssociatedResources(_0x1bb6('0x32'),_0xf42d9[_0x1bb6('0x33')],_0x1bb6('0x2a')));_0x1bc261['push'](getAssociatedResources(_0x1bb6('0xd'),_0xf42d9[_0x1bb6('0x33')],'ChatQueue'));_0x1bc261[_0x1bb6('0x29')](getAssociatedResources(_0x1bb6('0x34'),_0xf42d9[_0x1bb6('0x33')],_0x1bb6('0x2c')));_0x1bc261[_0x1bb6('0x29')](getAssociatedResources(_0x1bb6('0x35'),_0xf42d9[_0x1bb6('0x33')],_0x1bb6('0x36')));_0x1bc261['push'](getAssociatedResources(_0x1bb6('0x37'),_0xf42d9['userProfileId'],_0x1bb6('0x2d')));_0x1bc261[_0x1bb6('0x29')](getAssociatedResources(_0x1bb6('0x38'),_0xf42d9[_0x1bb6('0x33')],_0x1bb6('0x2e')));_0x1bc261[_0x1bb6('0x29')](getAssociatedResources(_0x1bb6('0xe'),_0xf42d9[_0x1bb6('0x33')],'WhatsappQueue'));_0x1bc261[_0x1bb6('0x29')](getAssociatedResources('Telephones',_0xf42d9[_0x1bb6('0x33')],_0x1bb6('0x6')));_0x1bc261[_0x1bb6('0x29')](getAssociatedResources(_0x1bb6('0x10'),_0xf42d9[_0x1bb6('0x33')],_0x1bb6('0x30')));_0x1bc261[_0x1bb6('0x29')](getAssociatedResources('IvrCampaigns',_0xf42d9['userProfileId'],_0x1bb6('0x17')));_0x1bc261['push'](db['User'][_0x1bb6('0xf')](queryAgents));break;case'agent':_0x1f18fa[_0xc670ec](_0x1bb6('0x25'));_0x1f18fa[_0xc670ec](_0x1bb6('0x26'));_0x1bc261[_0x1bb6('0x29')](_0xf42d9['getVoiceQueues']({'attributes':['id',_0x1bb6('0x4')]}));_0x1bc261[_0x1bb6('0x29')](_0xf42d9['getChatQueues']({'attributes':['id','name']}));_0x1bc261[_0x1bb6('0x29')](_0xf42d9[_0x1bb6('0x39')]({'attributes':['id',_0x1bb6('0x4')]}));_0x1bc261[_0x1bb6('0x29')](_0xf42d9[_0x1bb6('0x3a')]({'attributes':['id',_0x1bb6('0x4')]}));_0x1bc261[_0x1bb6('0x29')](_0xf42d9['getMailQueues']({'attributes':['id','name']}));_0x1bc261['push'](_0xf42d9[_0x1bb6('0x3b')]({'attributes':['id',_0x1bb6('0x4')]}));_0x1bc261['push'](_0xf42d9['getWhatsappQueues']({'attributes':['id',_0x1bb6('0x4')]}));break;}return BPromise[_0x1bb6('0x3c')](_0x1bc261);}})['then'](function(_0x1effb1){if(_0x1effb1&&_0x1effb1[_0x1bb6('0x1a')]){for(var _0x7751aa=0x0;_0x7751aa<_0x1effb1['length'];_0x7751aa+=0x1){for(var _0x8f5d79=0x0;_0x8f5d79<_0x1effb1[_0x7751aa][_0x1bb6('0x1a')];_0x8f5d79+=0x1){switch(_0x7751aa){case 0x0:joinOrLeaveQueues(_0x1f18fa,_0xc670ec,'voice',_0x1effb1[_0x7751aa][_0x8f5d79]);break;case 0x1:joinOrLeaveQueues(_0x1f18fa,_0xc670ec,_0x1bb6('0x3d'),_0x1effb1[_0x7751aa][_0x8f5d79]);break;case 0x2:joinOrLeaveQueues(_0x1f18fa,_0xc670ec,_0x1bb6('0x3e'),_0x1effb1[_0x7751aa][_0x8f5d79]);break;case 0x3:joinOrLeaveQueues(_0x1f18fa,_0xc670ec,_0x1bb6('0x3f'),_0x1effb1[_0x7751aa][_0x8f5d79]);break;case 0x4:joinOrLeaveQueues(_0x1f18fa,_0xc670ec,'mail',_0x1effb1[_0x7751aa][_0x8f5d79]);break;case 0x5:joinOrLeaveQueues(_0x1f18fa,_0xc670ec,_0x1bb6('0x40'),_0x1effb1[_0x7751aa][_0x8f5d79]);break;case 0x6:joinOrLeaveQueues(_0x1f18fa,_0xc670ec,'whatsapp',_0x1effb1[_0x7751aa][_0x8f5d79]);break;case 0x7:if(_0x4b5be5[_0x1bb6('0x1c')]!==_0x1bb6('0x7'))_0x1f18fa[_0xc670ec](util['format'](_0x1bb6('0x41'),_0x1effb1[_0x7751aa][_0x8f5d79][_0x1bb6('0x4')]));break;case 0x8:if(_0x4b5be5['role']!==_0x1bb6('0x7'))_0x1f18fa[_0xc670ec](util['format']('trunk:%s',_0x1effb1[_0x7751aa][_0x8f5d79][_0x1bb6('0x4')]));break;case 0x9:if(_0x4b5be5[_0x1bb6('0x1c')]!==_0x1bb6('0x7'))_0x1f18fa[_0xc670ec](util[_0x1bb6('0x18')](_0x1bb6('0x42'),_0x1effb1[_0x7751aa][_0x8f5d79]['type'],_0x1effb1[_0x7751aa][_0x8f5d79][_0x1bb6('0x4')]));break;case 0xa:_0x1f18fa[_0xc670ec](util['format'](_0x1bb6('0x24'),_0x1effb1[_0x7751aa][_0x8f5d79][_0x1bb6('0x4')]));break;}}}}})[_0x1bb6('0x14')](function(){if(_0xc670ec===_0x1bb6('0x43')){var _0x4be649=_['map'](_0x4b5be5[_0x1bb6('0x20')],'id');return _0x4b5be5[_0x1bb6('0x44')](_0x4be649)[_0x1bb6('0x14')](function(){for(var _0x7ed84a=0x0;_0x7ed84a<_0x4be649[_0x1bb6('0x1a')];_0x7ed84a+=0x1){_0x57bfbd[_0x1bb6('0x45')](_0x1bb6('0x46'),{'ChatInteractionId':Number(_0x4be649[_0x7ed84a]),'UserId':Number(_0x4b5be5['id'])});}});}})[_0x1bb6('0x14')](function(){if(_0xc670ec===_0x1bb6('0x43')){var _0x3aa435=_[_0x1bb6('0x15')](_0x4b5be5[_0x1bb6('0x47')],'id');return _0x4b5be5['removeMailInteractions'](_0x3aa435)[_0x1bb6('0x14')](function(){for(var _0x31961a=0x0;_0x31961a<_0x3aa435[_0x1bb6('0x1a')];_0x31961a+=0x1){_0x57bfbd[_0x1bb6('0x45')](_0x1bb6('0x48'),{'MailInteractionId':Number(_0x3aa435[_0x31961a]),'UserId':Number(_0x4b5be5['id'])});}});}})[_0x1bb6('0x14')](function(){if(_0xc670ec==='leave'){var _0x456582=_['map'](_0x4b5be5[_0x1bb6('0x49')],'id');return _0x4b5be5[_0x1bb6('0x4a')](_0x456582)[_0x1bb6('0x14')](function(){for(var _0x36378e=0x0;_0x36378e<_0x456582[_0x1bb6('0x1a')];_0x36378e+=0x1){_0x57bfbd[_0x1bb6('0x45')](_0x1bb6('0x4b'),{'FaxInteractionId':Number(_0x456582[_0x36378e]),'UserId':Number(_0x4b5be5['id'])});}});}})[_0x1bb6('0x14')](function(){if(_0xc670ec==='leave'){var _0x369962=_[_0x1bb6('0x15')](_0x4b5be5[_0x1bb6('0x4c')],'id');return _0x4b5be5[_0x1bb6('0x4d')](_0x369962)[_0x1bb6('0x14')](function(){for(var _0xc6d438=0x0;_0xc6d438<_0x369962['length'];_0xc6d438+=0x1){_0x57bfbd[_0x1bb6('0x45')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x369962[_0xc6d438]),'UserId':Number(_0x4b5be5['id'])});}});}})[_0x1bb6('0x14')](function(){if(_0xc670ec===_0x1bb6('0x43')){var _0x3957f3=_[_0x1bb6('0x15')](_0x4b5be5[_0x1bb6('0x23')],'id');return _0x4b5be5[_0x1bb6('0x4e')](_0x3957f3)['then'](function(){for(var _0x543d73=0x0;_0x543d73<_0x3957f3['length'];_0x543d73+=0x1){_0x57bfbd['emit'](_0x1bb6('0x4f'),{'OpenchannelInteractionId':Number(_0x3957f3[_0x543d73]),'UserId':Number(_0x4b5be5['id'])});}});}})[_0x1bb6('0x14')](function(){if(_0xc670ec===_0x1bb6('0x43')){var _0x1a64e9=_[_0x1bb6('0x15')](_0x4b5be5[_0x1bb6('0x50')],'id');return _0x4b5be5['removeWhatsappInteractions'](_0x1a64e9)[_0x1bb6('0x14')](function(){for(var _0x4d34f9=0x0;_0x4d34f9<_0x1a64e9[_0x1bb6('0x1a')];_0x4d34f9+=0x1){_0x57bfbd['emit'](_0x1bb6('0x51'),{'WhatsappInteractionId':Number(_0x1a64e9[_0x4d34f9]),'UserId':Number(_0x4b5be5['id'])});}});}})[_0x1bb6('0x52')](function(_0x10aa7c){_0x1f18fa[_0x1bb6('0x53')](_0x10aa7c);});}}function onDisconnect(_0x27b037,_0x1370da){joinOrLeave(_0x27b037,'leave',_0x1370da);}function onConnect(_0x34bfcc){joinOrLeave(_0x34bfcc,_0x1bb6('0x54'));}exports['default']=function(_0x287cac){_0x287cac['on']('connection',function(_0xae32af){_0xae32af['setMaxListeners'](0x0);_0xae32af[_0x1bb6('0x55')]=_0xae32af[_0x1bb6('0x56')][_0x1bb6('0x57')][_0x1bb6('0x58')]+':'+_0xae32af['request'][_0x1bb6('0x57')][_0x1bb6('0x59')];_0xae32af[_0x1bb6('0x5a')]=new Date();_0xae32af[_0x1bb6('0x53')]=function(_0x3dd19e){console['log']('SocketIO\x20'+_0xae32af[_0x1bb6('0x5b')][_0x1bb6('0x4')]+'['+_0xae32af[_0x1bb6('0x55')]+']',_0x3dd19e);};_0xae32af['on'](_0x1bb6('0x5c'),function(){onDisconnect(_0xae32af,_0x287cac);_0xae32af[_0x1bb6('0x53')](_0x1bb6('0x5d'));});onConnect(_0xae32af);_0xae32af[_0x1bb6('0x53')](_0x1bb6('0x5e'));});};
\ No newline at end of file
index b311ed1..92827ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf8a=['Chat','ChatInteraction','afterCreate','afterUpdate','closedinteraction','ChatMessage','Sms','newinteraction','SmsInteraction','SmsMessage','newmessage','Whatsapp','WhatsappInteraction','WhatsappMessage','FaxInteraction','Fax','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','info','Trigger,\x20%s','EventManager','error','code','get','channel','motionChannel','event','direction','then','ContactId','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','QueryTypes','SELECT','contact','UserId','interface','format','SIP/%s','name','incomingmessage','outgoingmessage','catch','opened','resolve','sequelize','query','agent','changed','closed','substatus','AfterUpdate','User','fullname','email','internal','default','length','hasOwnProperty','model','callback','condition','util','../../mysqldb','jayson/promise','../logger','client','http'];(function(_0x4d71c4,_0x1efb09){var _0x4f58d9=function(_0x219339){while(--_0x219339){_0x4d71c4['push'](_0x4d71c4['shift']());}};_0x4f58d9(++_0x1efb09);}(_0xaf8a,0x1b6));var _0xaaf8=function(_0x347712,_0x323c57){_0x347712=_0x347712-0x0;var _0x539525=_0xaf8a[_0x347712];return _0x539525;};'use strict';var util=require(_0xaaf8('0x0'));var db=require(_0xaaf8('0x1'))['db'];var jayson=require(_0xaaf8('0x2'));var logger=require(_0xaaf8('0x3'))('triggers');var client=jayson[_0xaaf8('0x4')][_0xaaf8('0x5')]({'port':0x232a});var triggers=[{'channel':_0xaaf8('0x6'),'model':_0xaaf8('0x7'),'event':_0xaaf8('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':_0xaaf8('0x6'),'model':'ChatInteraction','event':_0xaaf8('0x9'),'condition':_0xaaf8('0xa'),'callback':afterUpdate},{'channel':_0xaaf8('0x6'),'model':_0xaaf8('0xb'),'event':_0xaaf8('0x8'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0xaaf8('0xc'),'model':'SmsInteraction','event':_0xaaf8('0x8'),'condition':_0xaaf8('0xd'),'callback':afterCreate},{'channel':_0xaaf8('0xc'),'model':_0xaaf8('0xe'),'event':_0xaaf8('0x9'),'condition':_0xaaf8('0xa'),'callback':afterUpdate},{'channel':_0xaaf8('0xc'),'model':_0xaaf8('0xf'),'event':_0xaaf8('0x8'),'condition':_0xaaf8('0x10'),'callback':afterCreateMessage},{'channel':_0xaaf8('0x11'),'model':'WhatsappInteraction','event':_0xaaf8('0x8'),'condition':_0xaaf8('0xd'),'callback':afterCreate},{'channel':'Whatsapp','model':_0xaaf8('0x12'),'event':_0xaaf8('0x9'),'condition':_0xaaf8('0xa'),'callback':afterUpdate},{'channel':_0xaaf8('0x11'),'model':_0xaaf8('0x13'),'event':_0xaaf8('0x8'),'condition':_0xaaf8('0x10'),'callback':afterCreateMessage},{'channel':'Fax','model':_0xaaf8('0x14'),'event':_0xaaf8('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':_0xaaf8('0x15'),'model':'FaxInteraction','event':_0xaaf8('0x9'),'condition':_0xaaf8('0xa'),'callback':afterUpdate},{'channel':_0xaaf8('0x15'),'model':'FaxMessage','event':'afterCreate','condition':_0xaaf8('0x10'),'callback':afterCreateMessage},{'channel':_0xaaf8('0x16'),'model':_0xaaf8('0x17'),'event':_0xaaf8('0x8'),'condition':_0xaaf8('0xd'),'callback':afterCreate},{'channel':_0xaaf8('0x16'),'model':_0xaaf8('0x17'),'event':_0xaaf8('0x9'),'condition':_0xaaf8('0xa'),'callback':afterUpdate},{'channel':'Mail','model':_0xaaf8('0x18'),'event':'afterCreate','condition':_0xaaf8('0x10'),'callback':afterCreateMessage},{'channel':_0xaaf8('0x19'),'model':_0xaaf8('0x1a'),'event':_0xaaf8('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':'Openchannel','model':_0xaaf8('0x1a'),'event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':_0xaaf8('0x19'),'model':_0xaaf8('0x1b'),'event':_0xaaf8('0x8'),'condition':_0xaaf8('0x10'),'callback':afterCreateMessage}];function request(_0x429f56){return client[_0xaaf8('0x1c')]('EventManager',_0x429f56)['then'](function(_0x3ed746){logger[_0xaaf8('0x1d')](_0xaaf8('0x1e'),_0xaaf8('0x1f'),_0x3ed746);if(_0x3ed746[_0xaaf8('0x20')]){if(_0x3ed746[_0xaaf8('0x20')][_0xaaf8('0x21')]===0x1f4){logger[_0xaaf8('0x20')]('Trigger,\x20%s',_0xaaf8('0x1f'),_0x3ed746[_0xaaf8('0x20')]);}}})['catch'](function(_0x2d47d4){logger[_0xaaf8('0x20')](_0xaaf8('0x1e'),_0xaaf8('0x1f'),_0x2d47d4);});}function afterCreateMessage(_0x4ba3c4){return function(_0x28016f){_0x28016f=_0x28016f[_0xaaf8('0x22')]({'plain':!![]});_0x28016f[_0xaaf8('0x23')]=_0x4ba3c4;_0x28016f[_0xaaf8('0x24')]=_0x4ba3c4;_0x28016f[_0xaaf8('0x25')]=_0x28016f[_0xaaf8('0x26')];Promise['resolve']()[_0xaaf8('0x27')](function(){if(typeof _0x28016f[_0xaaf8('0x28')]===_0xaaf8('0x29'))return null;var _0x3ce1f8=_0xaaf8('0x2a')+_0x28016f[_0xaaf8('0x28')];return db['sequelize']['query'](_0x3ce1f8,{'type':db[_0xaaf8('0x2b')][_0xaaf8('0x2c')][_0xaaf8('0x2d')],'raw':!![]});})[_0xaaf8('0x27')](function(_0x4b05d0){if(_0x4b05d0){_0x28016f[_0xaaf8('0x2e')]=_0x4b05d0[0x0];}if(typeof _0x28016f[_0xaaf8('0x2f')]===_0xaaf8('0x29'))return;return getAgent(_0x28016f['UserId']);})[_0xaaf8('0x27')](function(_0x440c81){if(_0x440c81){_0x28016f[_0xaaf8('0x30')]=util[_0xaaf8('0x31')](_0xaaf8('0x32'),_0x440c81[_0xaaf8('0x33')]);_0x28016f['agent']=_0x440c81;_0x28016f[_0xaaf8('0x23')]=_0x4ba3c4;return request({'event':_0xaaf8('0x34'),'message':_0x28016f});}else{return request({'event':_0xaaf8('0x35'),'message':_0x28016f});}})[_0xaaf8('0x36')](function(_0x4a8031){logger[_0xaaf8('0x20')](_0xaaf8('0x1e'),'AfterCreateMessage',_0x4a8031);});};}function afterCreate(_0x193de5,_0xa41b2d){return function(_0x5f1fbb){_0x5f1fbb=_0x5f1fbb[_0xaaf8('0x22')]({'plain':!![]});_0x5f1fbb['channel']=_0x193de5;_0x5f1fbb[_0xaaf8('0x24')]=_0x193de5;_0x5f1fbb[_0xaaf8('0x25')]=_0xaaf8('0x37');Promise[_0xaaf8('0x38')]()[_0xaaf8('0x27')](function(){var _0x5b6d0a=_0xaaf8('0x2a')+_0x5f1fbb[_0xaaf8('0x28')];return db[_0xaaf8('0x39')][_0xaaf8('0x3a')](_0x5b6d0a,{'type':db['Sequelize'][_0xaaf8('0x2c')]['SELECT'],'raw':!![]});})[_0xaaf8('0x27')](function(_0x5da7a7){if(_0x5da7a7){_0x5f1fbb['contact']=_0x5da7a7[0x0];}if(typeof _0x5f1fbb['UserId']===_0xaaf8('0x29'))return;return getAgent(_0x5f1fbb[_0xaaf8('0x2f')]);})[_0xaaf8('0x27')](function(_0x9b3590){if(_0x9b3590){_0x5f1fbb[_0xaaf8('0x30')]=util[_0xaaf8('0x31')]('SIP/%s',_0x9b3590['name']);_0x5f1fbb[_0xaaf8('0x3b')]=_0x9b3590;}return request({'event':_0xa41b2d,'message':_0x5f1fbb});})[_0xaaf8('0x36')](function(_0x3df5c6){logger[_0xaaf8('0x20')](_0xaaf8('0x1e'),'AfterCreate',_0x3df5c6);});};}function afterUpdate(_0x2a393d){return function(_0x20c1c2){var _0xc8d949=_0x20c1c2[_0xaaf8('0x3c')](_0xaaf8('0x3d'))&&_0x20c1c2[_0xaaf8('0x3d')];var _0x1cd480=_0x20c1c2['changed'](_0xaaf8('0x3e'));if(_0xc8d949||_0x1cd480){var _0x153c3f=_0xc8d949?_0xaaf8('0xa'):'substatus';var _0x4dac93=_0x20c1c2[_0xaaf8('0x22')]({'plain':!![]});_0x4dac93[_0xaaf8('0x23')]=_0x2a393d;_0x4dac93[_0xaaf8('0x24')]=_0x2a393d;_0x4dac93[_0xaaf8('0x25')]=_0xc8d949?_0xaaf8('0x3d'):_0xaaf8('0x3e');var _0x59da94=_0xaaf8('0x2a')+_0x4dac93[_0xaaf8('0x28')];return db[_0xaaf8('0x39')]['query'](_0x59da94,{'type':db[_0xaaf8('0x2b')]['QueryTypes'][_0xaaf8('0x2d')],'raw':!![]})[_0xaaf8('0x27')](function(_0x46b05a){if(_0x46b05a){_0x4dac93[_0xaaf8('0x2e')]=_0x46b05a[0x0];}if(typeof _0x4dac93[_0xaaf8('0x2f')]===_0xaaf8('0x29'))return;return getAgent(_0x4dac93[_0xaaf8('0x2f')]);})[_0xaaf8('0x27')](function(_0x10ab72){if(_0x10ab72){_0x4dac93[_0xaaf8('0x30')]=util[_0xaaf8('0x31')](_0xaaf8('0x32'),_0x10ab72[_0xaaf8('0x33')]);_0x4dac93[_0xaaf8('0x3b')]=_0x10ab72;}return request({'event':_0x153c3f,'message':_0x4dac93});})[_0xaaf8('0x36')](function(_0x25a259){logger[_0xaaf8('0x20')](_0xaaf8('0x1e'),_0xaaf8('0x3f'),_0x25a259);});}};}function getAgent(_0x486d02){return db[_0xaaf8('0x40')]['find']({'where':{'id':_0x486d02},'attributes':['id','name',_0xaaf8('0x41'),_0xaaf8('0x42'),_0xaaf8('0x43')],'raw':!![]})['then'](function(_0x32d6f9){return _0x32d6f9;});}exports[_0xaaf8('0x44')]=function(){for(var _0x2e30ab=0x0;_0x2e30ab<triggers[_0xaaf8('0x45')];_0x2e30ab+=0x1){if(db[_0xaaf8('0x46')](triggers[_0x2e30ab][_0xaaf8('0x47')])){db[triggers[_0x2e30ab][_0xaaf8('0x47')]]['hook'](triggers[_0x2e30ab]['event'],triggers[_0x2e30ab][_0xaaf8('0x48')](triggers[_0x2e30ab][_0xaaf8('0x23')]['toLowerCase'](),triggers[_0x2e30ab][_0xaaf8('0x49')]));}}};
\ No newline at end of file
+var _0x8c77=['ChatInteraction','Chat','afterUpdate','closedinteraction','ChatMessage','newmessage','SmsInteraction','newinteraction','Sms','SmsMessage','afterCreate','WhatsappInteraction','Whatsapp','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','request','EventManager','info','error','code','Trigger,\x20%s','get','channel','motionChannel','event','resolve','ContactId','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','SELECT','then','contact','UserId','interface','format','SIP/%s','name','agent','incomingmessage','catch','AfterCreateMessage','opened','Sequelize','QueryTypes','undefined','AfterCreate','changed','closed','substatus','AfterUpdate','User','find','fullname','email','internal','default','length','hasOwnProperty','model','toLowerCase','condition','util','../../mysqldb','jayson/promise','../logger','client','http'];(function(_0x2c8d85,_0x590fef){var _0x277ef4=function(_0x7c7a91){while(--_0x7c7a91){_0x2c8d85['push'](_0x2c8d85['shift']());}};_0x277ef4(++_0x590fef);}(_0x8c77,0x126));var _0x78c7=function(_0x2c9bdc,_0x5addbb){_0x2c9bdc=_0x2c9bdc-0x0;var _0x28186a=_0x8c77[_0x2c9bdc];return _0x28186a;};'use strict';var util=require(_0x78c7('0x0'));var db=require(_0x78c7('0x1'))['db'];var jayson=require(_0x78c7('0x2'));var logger=require(_0x78c7('0x3'))('triggers');var client=jayson[_0x78c7('0x4')][_0x78c7('0x5')]({'port':0x232a});var triggers=[{'channel':'Chat','model':_0x78c7('0x6'),'event':'afterCreate','condition':'newinteraction','callback':afterCreate},{'channel':_0x78c7('0x7'),'model':'ChatInteraction','event':_0x78c7('0x8'),'condition':_0x78c7('0x9'),'callback':afterUpdate},{'channel':_0x78c7('0x7'),'model':_0x78c7('0xa'),'event':'afterCreate','condition':_0x78c7('0xb'),'callback':afterCreateMessage},{'channel':'Sms','model':_0x78c7('0xc'),'event':'afterCreate','condition':_0x78c7('0xd'),'callback':afterCreate},{'channel':'Sms','model':'SmsInteraction','event':_0x78c7('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x78c7('0xe'),'model':_0x78c7('0xf'),'event':_0x78c7('0x10'),'condition':_0x78c7('0xb'),'callback':afterCreateMessage},{'channel':'Whatsapp','model':_0x78c7('0x11'),'event':'afterCreate','condition':_0x78c7('0xd'),'callback':afterCreate},{'channel':_0x78c7('0x12'),'model':_0x78c7('0x11'),'event':_0x78c7('0x8'),'condition':_0x78c7('0x9'),'callback':afterUpdate},{'channel':_0x78c7('0x12'),'model':_0x78c7('0x13'),'event':_0x78c7('0x10'),'condition':_0x78c7('0xb'),'callback':afterCreateMessage},{'channel':_0x78c7('0x14'),'model':_0x78c7('0x15'),'event':_0x78c7('0x10'),'condition':_0x78c7('0xd'),'callback':afterCreate},{'channel':'Fax','model':_0x78c7('0x15'),'event':_0x78c7('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Fax','model':_0x78c7('0x16'),'event':_0x78c7('0x10'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x78c7('0x17'),'model':_0x78c7('0x18'),'event':_0x78c7('0x10'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x78c7('0x17'),'model':_0x78c7('0x18'),'event':_0x78c7('0x8'),'condition':_0x78c7('0x9'),'callback':afterUpdate},{'channel':_0x78c7('0x17'),'model':_0x78c7('0x19'),'event':_0x78c7('0x10'),'condition':_0x78c7('0xb'),'callback':afterCreateMessage},{'channel':_0x78c7('0x1a'),'model':_0x78c7('0x1b'),'event':_0x78c7('0x10'),'condition':_0x78c7('0xd'),'callback':afterCreate},{'channel':'Openchannel','model':_0x78c7('0x1b'),'event':_0x78c7('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x78c7('0x1a'),'model':'OpenchannelMessage','event':_0x78c7('0x10'),'condition':'newmessage','callback':afterCreateMessage}];function request(_0x4184ea){return client[_0x78c7('0x1c')](_0x78c7('0x1d'),_0x4184ea)['then'](function(_0x153f9f){logger[_0x78c7('0x1e')]('Trigger,\x20%s',_0x78c7('0x1d'),_0x153f9f);if(_0x153f9f[_0x78c7('0x1f')]){if(_0x153f9f['error'][_0x78c7('0x20')]===0x1f4){logger[_0x78c7('0x1f')](_0x78c7('0x21'),_0x78c7('0x1d'),_0x153f9f[_0x78c7('0x1f')]);}}})['catch'](function(_0x371f3d){logger['error'](_0x78c7('0x21'),_0x78c7('0x1d'),_0x371f3d);});}function afterCreateMessage(_0x9f1e90){return function(_0x4ec411){_0x4ec411=_0x4ec411[_0x78c7('0x22')]({'plain':!![]});_0x4ec411[_0x78c7('0x23')]=_0x9f1e90;_0x4ec411[_0x78c7('0x24')]=_0x9f1e90;_0x4ec411[_0x78c7('0x25')]=_0x4ec411['direction'];Promise[_0x78c7('0x26')]()['then'](function(){if(typeof _0x4ec411[_0x78c7('0x27')]==='undefined')return null;var _0x3ee74f=_0x78c7('0x28')+_0x4ec411[_0x78c7('0x27')];return db[_0x78c7('0x29')][_0x78c7('0x2a')](_0x3ee74f,{'type':db['Sequelize']['QueryTypes'][_0x78c7('0x2b')],'raw':!![]});})[_0x78c7('0x2c')](function(_0x3310ce){if(_0x3310ce){_0x4ec411[_0x78c7('0x2d')]=_0x3310ce[0x0];}if(typeof _0x4ec411['UserId']==='undefined')return;return getAgent(_0x4ec411[_0x78c7('0x2e')]);})[_0x78c7('0x2c')](function(_0x10b798){if(_0x10b798){_0x4ec411[_0x78c7('0x2f')]=util[_0x78c7('0x30')](_0x78c7('0x31'),_0x10b798[_0x78c7('0x32')]);_0x4ec411[_0x78c7('0x33')]=_0x10b798;_0x4ec411['channel']=_0x9f1e90;return request({'event':_0x78c7('0x34'),'message':_0x4ec411});}else{return request({'event':'outgoingmessage','message':_0x4ec411});}})[_0x78c7('0x35')](function(_0x1f904f){logger[_0x78c7('0x1f')](_0x78c7('0x21'),_0x78c7('0x36'),_0x1f904f);});};}function afterCreate(_0x43061f,_0x5770a4){return function(_0x2e2e27){_0x2e2e27=_0x2e2e27[_0x78c7('0x22')]({'plain':!![]});_0x2e2e27['channel']=_0x43061f;_0x2e2e27[_0x78c7('0x24')]=_0x43061f;_0x2e2e27[_0x78c7('0x25')]=_0x78c7('0x37');Promise['resolve']()[_0x78c7('0x2c')](function(){var _0x42c872=_0x78c7('0x28')+_0x2e2e27['ContactId'];return db[_0x78c7('0x29')][_0x78c7('0x2a')](_0x42c872,{'type':db[_0x78c7('0x38')][_0x78c7('0x39')]['SELECT'],'raw':!![]});})['then'](function(_0x10f32f){if(_0x10f32f){_0x2e2e27[_0x78c7('0x2d')]=_0x10f32f[0x0];}if(typeof _0x2e2e27[_0x78c7('0x2e')]===_0x78c7('0x3a'))return;return getAgent(_0x2e2e27[_0x78c7('0x2e')]);})[_0x78c7('0x2c')](function(_0x299d36){if(_0x299d36){_0x2e2e27[_0x78c7('0x2f')]=util[_0x78c7('0x30')](_0x78c7('0x31'),_0x299d36['name']);_0x2e2e27[_0x78c7('0x33')]=_0x299d36;}return request({'event':_0x5770a4,'message':_0x2e2e27});})[_0x78c7('0x35')](function(_0x42ec39){logger[_0x78c7('0x1f')](_0x78c7('0x21'),_0x78c7('0x3b'),_0x42ec39);});};}function afterUpdate(_0x321435){return function(_0x372010){var _0x29b5b7=_0x372010[_0x78c7('0x3c')](_0x78c7('0x3d'))&&_0x372010[_0x78c7('0x3d')];var _0x1a468a=_0x372010[_0x78c7('0x3c')](_0x78c7('0x3e'));if(_0x29b5b7||_0x1a468a){var _0x175d99=_0x29b5b7?_0x78c7('0x9'):_0x78c7('0x3e');var _0x1df239=_0x372010[_0x78c7('0x22')]({'plain':!![]});_0x1df239[_0x78c7('0x23')]=_0x321435;_0x1df239[_0x78c7('0x24')]=_0x321435;_0x1df239['event']=_0x29b5b7?_0x78c7('0x3d'):_0x78c7('0x3e');var _0x51faf8=_0x78c7('0x28')+_0x1df239[_0x78c7('0x27')];return db[_0x78c7('0x29')][_0x78c7('0x2a')](_0x51faf8,{'type':db[_0x78c7('0x38')][_0x78c7('0x39')][_0x78c7('0x2b')],'raw':!![]})[_0x78c7('0x2c')](function(_0x2fbadf){if(_0x2fbadf){_0x1df239['contact']=_0x2fbadf[0x0];}if(typeof _0x1df239[_0x78c7('0x2e')]===_0x78c7('0x3a'))return;return getAgent(_0x1df239[_0x78c7('0x2e')]);})[_0x78c7('0x2c')](function(_0x2abbfe){if(_0x2abbfe){_0x1df239[_0x78c7('0x2f')]=util[_0x78c7('0x30')](_0x78c7('0x31'),_0x2abbfe['name']);_0x1df239[_0x78c7('0x33')]=_0x2abbfe;}return request({'event':_0x175d99,'message':_0x1df239});})[_0x78c7('0x35')](function(_0x70d835){logger[_0x78c7('0x1f')]('Trigger,\x20%s',_0x78c7('0x3f'),_0x70d835);});}};}function getAgent(_0x22d9e9){return db[_0x78c7('0x40')][_0x78c7('0x41')]({'where':{'id':_0x22d9e9},'attributes':['id',_0x78c7('0x32'),_0x78c7('0x42'),_0x78c7('0x43'),_0x78c7('0x44')],'raw':!![]})[_0x78c7('0x2c')](function(_0x194945){return _0x194945;});}exports[_0x78c7('0x45')]=function(){for(var _0x28b536=0x0;_0x28b536<triggers[_0x78c7('0x46')];_0x28b536+=0x1){if(db[_0x78c7('0x47')](triggers[_0x28b536][_0x78c7('0x48')])){db[triggers[_0x28b536][_0x78c7('0x48')]]['hook'](triggers[_0x28b536][_0x78c7('0x25')],triggers[_0x28b536]['callback'](triggers[_0x28b536][_0x78c7('0x23')][_0x78c7('0x49')](),triggers[_0x28b536][_0x78c7('0x4a')]));}}};
\ No newline at end of file
index 0ad6055..5ded222 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdaab=['blockedAt','updateAttributes','getLicense','agent','count','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','bluebird','../mysqldb','./license/util','voice','mail','chat','openchannel','getChannels','isValidChannel','toLowerCase','includes','clearBlockUser'];(function(_0x345a54,_0x42e24e){var _0x267370=function(_0x28c7ab){while(--_0x28c7ab){_0x345a54['push'](_0x345a54['shift']());}};_0x267370(++_0x42e24e);}(_0xdaab,0x1d7));var _0xbdaa=function(_0x1b1aee,_0x57c8ed){_0x1b1aee=_0x1b1aee-0x0;var _0x276aa2=_0xdaab[_0x1b1aee];return _0x276aa2;};'use strict';var _=require(_0xbdaa('0x0'));var BPromise=require(_0xbdaa('0x1'));var db=require(_0xbdaa('0x2'))['db'];var util=require(_0xbdaa('0x3'));var channels=[_0xbdaa('0x4'),_0xbdaa('0x5'),_0xbdaa('0x6'),'fax','sms','whatsapp',_0xbdaa('0x7')];exports[_0xbdaa('0x8')]=function(){return channels;};exports[_0xbdaa('0x9')]=function(_0x4e2313){_0x4e2313=_0x4e2313[_0xbdaa('0xa')]();return _[_0xbdaa('0xb')](channels,_0x4e2313);};exports[_0xbdaa('0xc')]=function(_0x752dbc,_0x1aef1e,_0x2c4858,_0x1d35f8){var _0x277b8b={'loginAttempts':_0x1aef1e,'blocked':_0x2c4858};if(!_['isUndefined'](_0x1d35f8)){_0x277b8b[_0xbdaa('0xd')]=_0x1d35f8;}return _0x752dbc[_0xbdaa('0xe')](_0x277b8b);};exports[_0xbdaa('0xf')]=function(_0x40e3c7){return new BPromise(function(_0x30d82c,_0x2bdabb){var _0x127fe0=0x0;if(_0x40e3c7['role']!==_0xbdaa('0x10')){_0x30d82c(_0x40e3c7);}db['User'][_0xbdaa('0x11')]({'where':{'role':_0xbdaa('0x10'),'online':!![],'id':{'$ne':_0x40e3c7['id']}}})[_0xbdaa('0x12')](function(_0x14fa50){_0x127fe0=_0x14fa50;return util['getLicense']();})[_0xbdaa('0x12')](function(_0x31c436){if(_0x31c436&&_0x31c436[_0xbdaa('0x13')]&&_0x127fe0>=_0x31c436[_0xbdaa('0x13')]){throw Error(_0xbdaa('0x14'));}_0x30d82c(_0x40e3c7);})[_0xbdaa('0x15')](function(_0x4c0902){_0x2bdabb(_0x4c0902);});});};
\ No newline at end of file
+var _0x348d=['bluebird','../mysqldb','./license/util','chat','fax','whatsapp','openchannel','isValidChannel','toLowerCase','includes','updateAttributes','getLicense','role','agent','count','then','agents','lodash'];(function(_0x4de586,_0x183427){var _0x46baf5=function(_0x1157f0){while(--_0x1157f0){_0x4de586['push'](_0x4de586['shift']());}};_0x46baf5(++_0x183427);}(_0x348d,0x11f));var _0xd348=function(_0x238830,_0x545f75){_0x238830=_0x238830-0x0;var _0x5917f0=_0x348d[_0x238830];return _0x5917f0;};'use strict';var _=require(_0xd348('0x0'));var BPromise=require(_0xd348('0x1'));var db=require(_0xd348('0x2'))['db'];var util=require(_0xd348('0x3'));var channels=['voice','mail',_0xd348('0x4'),_0xd348('0x5'),'sms',_0xd348('0x6'),_0xd348('0x7')];exports['getChannels']=function(){return channels;};exports[_0xd348('0x8')]=function(_0xf9b892){_0xf9b892=_0xf9b892[_0xd348('0x9')]();return _[_0xd348('0xa')](channels,_0xf9b892);};exports['clearBlockUser']=function(_0x5c6bbd,_0x1db579,_0x309ec5,_0x1d4c58){var _0x4be4d5={'loginAttempts':_0x1db579,'blocked':_0x309ec5};if(!_['isUndefined'](_0x1d4c58)){_0x4be4d5['blockedAt']=_0x1d4c58;}return _0x5c6bbd[_0xd348('0xb')](_0x4be4d5);};exports[_0xd348('0xc')]=function(_0x54ec9b){return new BPromise(function(_0x1c2794,_0x1af716){var _0x124a9c=0x0;if(_0x54ec9b[_0xd348('0xd')]!==_0xd348('0xe')){_0x1c2794(_0x54ec9b);}db['User'][_0xd348('0xf')]({'where':{'role':_0xd348('0xe'),'online':!![],'id':{'$ne':_0x54ec9b['id']}}})['then'](function(_0x3fd7ea){_0x124a9c=_0x3fd7ea;return util[_0xd348('0xc')]();})[_0xd348('0x10')](function(_0x2b36e8){if(_0x2b36e8&&_0x2b36e8[_0xd348('0x11')]&&_0x124a9c>=_0x2b36e8[_0xd348('0x11')]){throw Error('Maximum\x20login\x20has\x20been\x20reached');}_0x1c2794(_0x54ec9b);})['catch'](function(_0x3ca54c){_0x1af716(_0x3ca54c);});});};
\ No newline at end of file
index b9b337d..54f68b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5080=['404','status','json','send','exports'];(function(_0x375a22,_0x4c065d){var _0x573d9f=function(_0x3de1ac){while(--_0x3de1ac){_0x375a22['push'](_0x375a22['shift']());}};_0x573d9f(++_0x4c065d);}(_0x5080,0x158));var _0x0508=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x5080[_0x3bf83f];return _0x22c4a9;};'use strict';module[_0x0508('0x0')][0x194]=function pageNotFound(_0x30e691,_0x2cae60){var _0x573935=_0x0508('0x1');var _0x59d20d=0x194;var _0x4baaa9={'status':_0x59d20d};_0x2cae60['status'](_0x4baaa9[_0x0508('0x2')]);_0x2cae60['render'](_0x573935,{},function(_0x205dec,_0x381125){if(_0x205dec){return _0x2cae60[_0x0508('0x2')](_0x4baaa9[_0x0508('0x2')])[_0x0508('0x3')](_0x4baaa9);}_0x2cae60[_0x0508('0x4')](_0x381125);});};
\ No newline at end of file
+var _0xb235=['send','exports','404','status','json'];(function(_0x8ca72f,_0x2ccb6d){var _0x501ace=function(_0x2c8a7c){while(--_0x2c8a7c){_0x8ca72f['push'](_0x8ca72f['shift']());}};_0x501ace(++_0x2ccb6d);}(_0xb235,0xb5));var _0x5b23=function(_0xa72345,_0x1fd304){_0xa72345=_0xa72345-0x0;var _0xbc82fb=_0xb235[_0xa72345];return _0xbc82fb;};'use strict';module[_0x5b23('0x0')][0x194]=function pageNotFound(_0x2fd788,_0x529f6e){var _0x465e68=_0x5b23('0x1');var _0x598dff=0x194;var _0x3128a6={'status':_0x598dff};_0x529f6e[_0x5b23('0x2')](_0x3128a6[_0x5b23('0x2')]);_0x529f6e['render'](_0x465e68,{},function(_0x1f4e28,_0x476f3b){if(_0x1f4e28){return _0x529f6e[_0x5b23('0x2')](_0x3128a6[_0x5b23('0x2')])[_0x5b23('0x3')](_0x3128a6);}_0x529f6e[_0x5b23('0x4')](_0x476f3b);});};
\ No newline at end of file
index 22df2f1..f7d42ec 100644 (file)
-'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 FINAL
-      migration.final(resolve);
-      // END FINAL
-    });
-  },
-
-  down: function(queryInterface, Sequelize) {
-    // var migration = new Migration(queryInterface);
-  }
+'use strict';\r
+\r
+var BPromise = require('bluebird');\r
+var util = require('util');\r
+\r
+var logger = require('../config/logger')('migration');\r
+\r
+var Sequence = function() {};\r
+\r
+Sequence.prototype.enqueue = function(fn) {\r
+  this.tail = this.tail ? this.tail.finally(fn) : fn();\r
+};\r
+\r
+var Migration = function(queryInterface) {\r
+  this.queryInterface = queryInterface;\r
+  this.sequence = new Sequence();\r
+};\r
+\r
+Migration.prototype.changeColumn = function(table, column, type) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .changeColumn(table, column, type)\r
+      .then(function() {\r
+        logger.info('Changed column %s in table %s', column, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.addColumn = function(table, column, type) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .addColumn(table, column, type)\r
+      .then(function() {\r
+        logger.info('Added column %s to %s', column, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.dropTable = function(table) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .dropTable(table, {\r
+        force: true\r
+      })\r
+      .then(function() {\r
+        logger.info('table dropped %s', table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.addIndex = function(table, column, indexName) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .addIndex(table, column, {\r
+        indexName: indexName\r
+      })\r
+      .then(function() {\r
+        logger.info('addIndex %s %s %s', table, column.join(','), indexName);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.removeIndex = function(table, indexName) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .removeIndex(table, indexName)\r
+      .then(function() {\r
+        logger.info('removeIndex %s %s', table, indexName);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.query = function(sql) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface.sequelize\r
+      .query(sql)\r
+      .then(function() {\r
+        logger.info('query %s', sql);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(JSON.stringify(err));\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.removeColumn = function(table, column) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .removeColumn(table, column)\r
+      .then(function() {\r
+        logger.info('Removed column %s from %s', column, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(\r
+          util.inspect(err, {\r
+            showHidden: false,\r
+            depth: null\r
+          })\r
+        );\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.renameColumn = function(table, oldColumn, newColumn) {\r
+  var _this = this;\r
+  this.sequence.enqueue(function() {\r
+    return _this.queryInterface\r
+      .renameColumn(table, oldColumn, newColumn)\r
+      .then(function() {\r
+        logger.info('Renamed column from %s to %s on %s', oldColumn, newColumn, table);\r
+      })\r
+      .catch(function(err) {\r
+        logger.info(\r
+          util.inspect(err, {\r
+            showHidden: false,\r
+            depth: null\r
+          })\r
+        );\r
+      });\r
+  });\r
+};\r
+\r
+Migration.prototype.final = function(resolve) {\r
+  this.sequence.enqueue(function() {\r
+    return resolve();\r
+  });\r
+};\r
+\r
+module.exports = {\r
+  up: function(queryInterface, Sequelize) {\r
+    return new BPromise(function(resolve) {\r
+      var migration = new Migration(queryInterface);\r
+\r
+      // START FINAL\r
+      migration.final(resolve);\r
+      // END FINAL\r
+    });\r
+  },\r
+\r
+  down: function(queryInterface, Sequelize) {\r
+    // var migration = new Migration(queryInterface);\r
+  }\r
 };
\ No newline at end of file
diff --git a/server/migrations/2.5.38.js b/server/migrations/2.5.38.js
deleted file mode 100644 (file)
index 56f9d73..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-'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 settings
-      migration.addColumn('settings', 'adSsoEnabled', {
-        type: Sequelize.BOOLEAN,
-        defaultValue: false
-      });
-      // END settings 
-
-      // START users
-      migration.addColumn('users', 'adSsoEnabled', {
-        type: Sequelize.BOOLEAN,
-        defaultValue: false
-      });
-      // 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 8df56bd..126994c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x668b=['ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Network','../api/network/network.model','ChatQueueReport','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/squareReport/squareReport.model','../api/squareReportDetail/squareReportDetail.model','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','../api/squareOdbc/squareOdbc.model','SquareProject','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/license/license.model','Campaign','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Plugin','MailTransferReport','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','SmsTransferReport','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','WhatsappAccount','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','hasOne','VoiceMail','cascade','UserId','hasMany','VoiceRecording','Recordings','VoiceQueuesRt','Extensions','CmHopperFinal','HopperFinals','OpenchannelInteractions','ChatInteractions','SmsInteractions','MailInteractions','WhatsappInteractions','SenderId','belongsTo','userProfileId','belongsToMany','Groups','chat_group_has_users','Contacts','CmList','Lists','cm_user_has_lists','user_has_mail_interactions','user_has_chat_interactions','FaxInteractions','user_has_fax_interactions','user_has_openchannel_interactions','VoiceQueue','VoiceQueues','VoicePrefixes','MailQueue','MailQueues','ChatQueues','FaxQueues','SmsQueues','ChatWebsite','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccount','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','user_has_square_projects','SpiedAgents','ChanSpyId','Applications','moh_has_sounds','Members','Hoppers','VoiceQueueId','HopperHistories','HopperBlacks','JscriptySessions','TrunkId','TrunkBackup','BlackLists','voice_queues_has_cm_blacklists','ScreenRecording','Messages','mailboxuser','mailbox','VoiceQueueReport','uniqueid','VoiceAgentReport','AgentReports','Contact','ContactId','MailAccount','MailServerIn','Smtp','Dispositions','MailAccountId','CannedAnswer','Answers','Interactions','List','ListId','TemplateId','mandatoryDispositionPause','Agents','team_has_mail_queues','Teams','MailInteractionId','Owner','mail_interaction_has_tags','Users','Attachment','Attachments','Interaction','Account','ChatWebsiteId','ChatOfflineMessageId','restrict','TagId','Dashboard','FaxAccountId','Exntensions','FaxMessage','mandatoryDispositionPauseId','FaxApplication','FaxInteractionId','fax_interaction_has_tags','Tags','ThroughTags','AttachmentId','SmsAccountId','SmsApplication','sms_interaction_has_tags','user_has_sms_interactions','SmsInteractionId','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','IntervalId','OpenchannelInteractionId','openchannel_interaction_has_tags','ProactiveActions','OpenchannelQueueReport','Agent','Queue','ChatQueueId','ChatInteractionId','chat_interaction_has_tags','Website','CompanyId','Company','cm_user_has_contacts','cm_contact_has_tags','CampaignId','OwnerId','All','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','Actions','AutomationId','ParentId','Intervals','MailApplications','ChatApplications','SmsApplications','DefaultReportId','CustomReportId','Mohs','whatsapp_interaction_has_tags','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','Fields','Configurations','AccountId','Subjects','Descriptions','DescriptionId','FieldId','SubjectId','VariableId','Description','Field','int_desk_configuration_has_tags','Subject','int_freshdesk_configuration_has_tags','VtigerConfiguration','Dynamics365Configuration','FromId','ToId','JscriptySessionReport','JscriptyQuestionReport','SessionId','JscriptyProject','ProjectId','team_has_openchannel_queues','OpenchannelQueues','WhatsappQueues','TeamVoicePrefix','TrunkBackupId','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','FromMailAccountId','FromAccount','FromUserId','ToMailQueueId','ToMailAccountId','ToAccount','FromAgent','ToUserId','ToChatQueueId','ToQueue','FaxTransferReport','FromFaxAccountId','ToAgent','ToOpenchannelQueueId','ToOpenchannelAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','HopperHistory','Queues','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','WhatsappQueueReport','ToWhatsappAccountId','ToQueueId','team_has_whatsapp_queues','../config/environment','sequelize','jstz','determine','defaultsDeep','motion2','xcall','xC@LL1234','mysql','utf8mb4','name','utf8','utf8_general_ci','sequelizeHistory','127.0.0.1','database','username','password','options','User','import','../api/user/user.model','VoiceChanSpy','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','../api/voiceQueue/voiceQueue.model','../api/voiceRecording/voiceRecording.model','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','VoiceCallReport','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','../api/voiceQueueReport/voiceQueueReport.model','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','VoiceTransferReport','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','MailServerOut','../api/mailQueue/mailQueue.model','MailSubstatus','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','FaxAccount','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','../api/smsAccount/smsAccount.model','SmsInteraction','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','OpenchannelQueue','../api/chatWebsite/chatWebsite.model','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','Pause','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','Template','../api/template/template.model','Trigger','../api/trigger/trigger.model','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','AnalyticDefaultReport','AnalyticExtractedReport','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model'];(function(_0x43ceb7,_0x20ed3c){var _0x4bfee7=function(_0x43f666){while(--_0x43f666){_0x43ceb7['push'](_0x43ceb7['shift']());}};_0x4bfee7(++_0x20ed3c);}(_0x668b,0x140));var _0xb668=function(_0x365be9,_0x3c88b9){_0x365be9=_0x365be9-0x0;var _0x185c12=_0x668b[_0x365be9];return _0x185c12;};'use strict';var config=require(_0xb668('0x0'));var Sequelize=require(_0xb668('0x1'));var _=require('lodash');var jstz=require(_0xb668('0x2'));var timezone=jstz[_0xb668('0x3')]();config['sequelize']=_[_0xb668('0x4')](config['sequelize'],{'database':_0xb668('0x5'),'username':_0xb668('0x6'),'password':_0xb668('0x7'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':_0xb668('0x8'),'dialectOptions':{'charset':_0xb668('0x9')},'logging':![],'timezone':timezone[_0xb668('0xa')](),'define':{'charset':_0xb668('0xb'),'collate':_0xb668('0xc')}}});config[_0xb668('0xd')]=_['defaultsDeep'](config[_0xb668('0xd')],{'database':_0xb668('0x5'),'username':_0xb668('0x6'),'password':_0xb668('0x7'),'options':{'host':_0xb668('0xe'),'port':0xcea,'dialect':_0xb668('0x8'),'dialectOptions':{'charset':_0xb668('0x9')},'logging':![],'timezone':timezone[_0xb668('0xa')](),'define':{'charset':'utf8','collate':_0xb668('0xc')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xb668('0x1')][_0xb668('0xf')],config[_0xb668('0x1')][_0xb668('0x10')],config[_0xb668('0x1')][_0xb668('0x11')],config[_0xb668('0x1')][_0xb668('0x12')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xb668('0xd')][_0xb668('0xf')],config[_0xb668('0xd')][_0xb668('0x10')],config[_0xb668('0xd')][_0xb668('0x11')],config[_0xb668('0xd')][_0xb668('0x12')])};db[_0xb668('0x13')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x15'));db[_0xb668('0x16')]=db['sequelize'][_0xb668('0x14')]('../api/voiceChanSpy/voiceChanSpy.model');db[_0xb668('0x17')]=db[_0xb668('0x1')]['import'](_0xb668('0x18'));db[_0xb668('0x19')]=db['sequelize'][_0xb668('0x14')]('../api/voiceExtension/voiceExtension.model');db[_0xb668('0x1a')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x1b'));db['VoiceQueue']=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x1c'));db['VoiceRecording']=db['sequelize'][_0xb668('0x14')](_0xb668('0x1d'));db['ScreenRecording']=db[_0xb668('0x1')]['import'](_0xb668('0x1e'));db['VoiceMail']=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x1f'));db[_0xb668('0x20')]=db[_0xb668('0x1')][_0xb668('0x14')]('../api/voiceMailMessage/voiceMailMessage.model');db[_0xb668('0x21')]=db[_0xb668('0x1')][_0xb668('0x14')]('../api/voiceCallReport/voiceCallReport.model');db['VoiceDialReport']=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x22'));db['VoiceAgentReport']=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x23'));db['VoiceQueueReport']=db['sequelize'][_0xb668('0x14')](_0xb668('0x24'));db['MemberReport']=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x25'));db[_0xb668('0x26')]=db[_0xb668('0x1')]['import'](_0xb668('0x27'));db[_0xb668('0x28')]=db['sequelize'][_0xb668('0x14')]('../api/voiceTransferReport/voiceTransferReport.model');db[_0xb668('0x29')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x2a'));db[_0xb668('0x2b')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x2c'));db[_0xb668('0x2d')]=db['sequelize'][_0xb668('0x14')](_0xb668('0x2e'));db[_0xb668('0x2f')]=db['sequelize'][_0xb668('0x14')](_0xb668('0x30'));db[_0xb668('0x31')]=db[_0xb668('0x1')]['import'](_0xb668('0x32'));db[_0xb668('0x33')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x34'));db[_0xb668('0x35')]=db[_0xb668('0x1')]['import'](_0xb668('0x36'));db[_0xb668('0x37')]=db['sequelize'][_0xb668('0x14')]('../api/userWhatsappQueue/userWhatsappQueue.model');db['MailServerIn']=db[_0xb668('0x1')][_0xb668('0x14')]('../api/mailServerIn/mailServerIn.model');db[_0xb668('0x38')]=db['sequelize'][_0xb668('0x14')]('../api/mailServerOut/mailServerOut.model');db['MailAccount']=db[_0xb668('0x1')][_0xb668('0x14')]('../api/mailAccount/mailAccount.model');db['MailQueue']=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x39'));db[_0xb668('0x3a')]=db[_0xb668('0x1')]['import']('../api/mailSubstatus/mailSubstatus.model');db[_0xb668('0x3b')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x3c'));db[_0xb668('0x3d')]=db[_0xb668('0x1')]['import']('../api/mailMessage/mailMessage.model');db[_0xb668('0x3e')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x3f'));db[_0xb668('0x40')]=db['sequelize'][_0xb668('0x14')](_0xb668('0x41'));db['Dashboard']=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x42'));db[_0xb668('0x43')]=db['sequelize']['import']('../api/dashboardItem/dashboardItem.model');db[_0xb668('0x44')]=db['sequelize']['import']('../api/faxAccount/faxAccount.model');db['FaxApplication']=db[_0xb668('0x1')]['import'](_0xb668('0x45'));db[_0xb668('0x46')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x47'));db['FaxMessage']=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x48'));db[_0xb668('0x49')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x4a'));db[_0xb668('0x4b')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x4c'));db['SmsAccount']=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x4d'));db['SmsApplication']=db['sequelize'][_0xb668('0x14')]('../api/smsApplication/smsApplication.model');db[_0xb668('0x4e')]=db['sequelize']['import']('../api/smsInteraction/smsInteraction.model');db[_0xb668('0x4f')]=db[_0xb668('0x1')]['import'](_0xb668('0x50'));db[_0xb668('0x51')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x52'));db[_0xb668('0x53')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x54'));db[_0xb668('0x55')]=db['sequelize'][_0xb668('0x14')](_0xb668('0x56'));db[_0xb668('0x57')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x58'));db[_0xb668('0x59')]=db[_0xb668('0x1')][_0xb668('0x14')]('../api/openchannelMessage/openchannelMessage.model');db[_0xb668('0x5a')]=db[_0xb668('0x1')][_0xb668('0x14')]('../api/openchannelQueue/openchannelQueue.model');db['ChatWebsite']=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x5b'));db['OpenchannelQueueReport']=db[_0xb668('0x1')]['import']('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0xb668('0x5c')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x5d'));db[_0xb668('0x5e')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x5f'));db[_0xb668('0x60')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x61'));db[_0xb668('0x62')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x63'));db[_0xb668('0x64')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x65'));db[_0xb668('0x66')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x67'));db[_0xb668('0x68')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x69'));db[_0xb668('0x6a')]=db[_0xb668('0x1')]['import'](_0xb668('0x6b'));db[_0xb668('0x6c')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x6d'));db[_0xb668('0x6e')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x6f'));db[_0xb668('0x70')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x71'));db['CmHopperFinal']=db[_0xb668('0x1')][_0xb668('0x14')]('../api/cmHopperFinal/cmHopperFinal.model');db[_0xb668('0x72')]=db[_0xb668('0x1')]['import'](_0xb668('0x73'));db[_0xb668('0x74')]=db['sequelize'][_0xb668('0x14')]('../api/reportAgentPreview/reportAgentPreview.model');db[_0xb668('0x75')]=db[_0xb668('0x1')]['import'](_0xb668('0x76'));db[_0xb668('0x77')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x78'));db[_0xb668('0x79')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x7a'));db['CannedAnswer']=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x7b'));db[_0xb668('0x7c')]=db[_0xb668('0x1')]['import'](_0xb668('0x7d'));db[_0xb668('0x7e')]=db[_0xb668('0x1')]['import'](_0xb668('0x7f'));db[_0xb668('0x80')]=db[_0xb668('0x1')][_0xb668('0x14')]('../api/interval/interval.model');db[_0xb668('0x81')]=db[_0xb668('0x1')][_0xb668('0x14')]('../api/pause/pause.model');db[_0xb668('0x82')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x83'));db[_0xb668('0x84')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x85'));db[_0xb668('0x86')]=db['sequelize'][_0xb668('0x14')]('../api/schedule/schedule.model');db[_0xb668('0x87')]=db['sequelize'][_0xb668('0x14')](_0xb668('0x88'));db[_0xb668('0x89')]=db['sequelize'][_0xb668('0x14')](_0xb668('0x8a'));db[_0xb668('0x8b')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x8c'));db[_0xb668('0x8d')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x8e'));db[_0xb668('0x8f')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x90'));db[_0xb668('0x91')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x92'));db[_0xb668('0x93')]=db[_0xb668('0x1')]['import'](_0xb668('0x94'));db[_0xb668('0x95')]=db['sequelize'][_0xb668('0x14')]('../api/analyticCustomReport/analyticCustomReport.model');db[_0xb668('0x96')]=db[_0xb668('0x1')]['import']('../api/analyticDefaultReport/analyticDefaultReport.model');db[_0xb668('0x97')]=db[_0xb668('0x1')][_0xb668('0x14')]('../api/analyticExtractedReport/analyticExtractedReport.model');db[_0xb668('0x98')]=db[_0xb668('0x1')][_0xb668('0x14')]('../api/analyticMetric/analyticMetric.model');db[_0xb668('0x99')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x9a'));db[_0xb668('0x9b')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x9c'));db[_0xb668('0x9d')]=db[_0xb668('0x1')][_0xb668('0x14')]('../api/intSalesforceAccount/intSalesforceAccount.model');db[_0xb668('0x9e')]=db['sequelize']['import'](_0xb668('0x9f'));db[_0xb668('0xa0')]=db[_0xb668('0x1')][_0xb668('0x14')]('../api/intSalesforceField/intSalesforceField.model');db[_0xb668('0xa1')]=db['sequelize'][_0xb668('0x14')](_0xb668('0xa2'));db[_0xb668('0xa3')]=db['sequelize'][_0xb668('0x14')](_0xb668('0xa4'));db[_0xb668('0xa5')]=db['sequelize'][_0xb668('0x14')](_0xb668('0xa6'));db[_0xb668('0xa7')]=db[_0xb668('0x1')]['import'](_0xb668('0xa8'));db[_0xb668('0xa9')]=db['sequelize'][_0xb668('0x14')]('../api/intDeskConfiguration/intDeskConfiguration.model');db[_0xb668('0xaa')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xab'));db[_0xb668('0xac')]=db['sequelize']['import'](_0xb668('0xad'));db[_0xb668('0xae')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xaf'));db[_0xb668('0xb0')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xb1'));db[_0xb668('0xb2')]=db[_0xb668('0x1')]['import'](_0xb668('0xb3'));db[_0xb668('0xb4')]=db['sequelize'][_0xb668('0x14')](_0xb668('0xb5'));db[_0xb668('0xb6')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xb7'));db[_0xb668('0xb8')]=db['sequelize'][_0xb668('0x14')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0xb668('0xb9')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xba'));db[_0xb668('0xbb')]=db['sequelize'][_0xb668('0x14')](_0xb668('0xbc'));db[_0xb668('0xbd')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xbe'));db['VtigerConfiguration']=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xbf'));db[_0xb668('0xc0')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xc1'));db[_0xb668('0xc2')]=db['sequelize'][_0xb668('0x14')](_0xb668('0xc3'));db[_0xb668('0xc4')]=db['sequelize'][_0xb668('0x14')]('../api/intServicenowConfiguration/intServicenowConfiguration.model');db[_0xb668('0xc5')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xc6'));db[_0xb668('0xc7')]=db[_0xb668('0x1')][_0xb668('0x14')]('../api/intDynamics365Account/intDynamics365Account.model');db['Dynamics365Configuration']=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xc8'));db[_0xb668('0xc9')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xca'));db[_0xb668('0xcb')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xcc'));db[_0xb668('0xcd')]=db[_0xb668('0x1')]['import'](_0xb668('0xce'));db[_0xb668('0xcf')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xd0'));db[_0xb668('0x91')]=db[_0xb668('0x1')][_0xb668('0x14')]('../api/integration/integration.model');db[_0xb668('0xd1')]=db['sequelize']['import'](_0xb668('0xd2'));db[_0xb668('0xd3')]=db['sequelize'][_0xb668('0x14')]('../api/chatQueueReport/chatQueueReport.model');db[_0xb668('0xd4')]=db[_0xb668('0x1')][_0xb668('0x14')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0xb668('0xd5')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xd6'));db['JscriptyQuestionReport']=db['sequelize'][_0xb668('0x14')](_0xb668('0xd7'));db['JscriptySessionReport']=db[_0xb668('0x1')]['import'](_0xb668('0xd8'));db[_0xb668('0xd9')]=db[_0xb668('0x1')][_0xb668('0x14')]('../api/smsQueueReport/smsQueueReport.model');db['SquareReport']=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xda'));db['SquareDetailsReport']=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xdb'));db['JscriptyProject']=db[_0xb668('0x1')]['import'](_0xb668('0xdc'));db[_0xb668('0xdd')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xde'));db['SquareOdbc']=db['sequelize'][_0xb668('0x14')](_0xb668('0xdf'));db[_0xb668('0xe0')]=db[_0xb668('0x1')]['import']('../api/squareProject/squareProject.model');db[_0xb668('0xe1')]=db[_0xb668('0x1')]['import'](_0xb668('0xe2'));db[_0xb668('0xe3')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xe4'));db[_0xb668('0xe5')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xe6'));db[_0xb668('0xe7')]=db['sequelize'][_0xb668('0x14')](_0xb668('0xe8'));db[_0xb668('0xe9')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xea'));db[_0xb668('0xeb')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xec'));db['Attachment']=db[_0xb668('0x1')][_0xb668('0x14')]('../api/attachment/attachment.model');db[_0xb668('0xed')]=db[_0xb668('0x1')][_0xb668('0x14')]('../api/plugin/plugin.model');db[_0xb668('0xee')]=db[_0xb668('0x1')]['import']('../api/mailTransferReport/mailTransferReport.model');db[_0xb668('0xef')]=db[_0xb668('0x1')]['import'](_0xb668('0xf0'));db['FaxTransferReport']=db[_0xb668('0x1')]['import'](_0xb668('0xf1'));db[_0xb668('0xf2')]=db[_0xb668('0x1')][_0xb668('0x14')]('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0xb668('0xf3')]=db[_0xb668('0x1')][_0xb668('0x14')]('../api/smsTransferReport/smsTransferReport.model');db['CmList']=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xf4'));db[_0xb668('0xf5')]=db['sequelize'][_0xb668('0x14')](_0xb668('0xf6'));db[_0xb668('0xf7')]=db['sequelize'][_0xb668('0x14')](_0xb668('0xf8'));db[_0xb668('0xf9')]=db['sequelize'][_0xb668('0x14')](_0xb668('0xfa'));db[_0xb668('0xfb')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0xfc'));db[_0xb668('0xfd')]=db[_0xb668('0x1')][_0xb668('0x14')]('../api/userNotification/userNotification.model');db[_0xb668('0xfe')]=db['sequelize'][_0xb668('0x14')]('../api/whatsappAccount/whatsappAccount.model');db[_0xb668('0xff')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x100'));db[_0xb668('0x101')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x102'));db[_0xb668('0x103')]=db['sequelize'][_0xb668('0x14')](_0xb668('0x104'));db['WhatsappQueueReport']=db[_0xb668('0x1')]['import'](_0xb668('0x105'));db[_0xb668('0x106')]=db[_0xb668('0x1')]['import'](_0xb668('0x107'));db[_0xb668('0x108')]=db[_0xb668('0x1')]['import']('../api/whatsappQueue/whatsappQueue.model');db[_0xb668('0x109')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x10a'));db[_0xb668('0x10b')]=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x10c'));db['TeamVoicePrefix']=db[_0xb668('0x1')][_0xb668('0x14')](_0xb668('0x10d'));db[_0xb668('0x10e')]=db['sequelize']['import'](_0xb668('0x10f'));db[_0xb668('0x13')][_0xb668('0x110')](db['VoiceMail'],{'as':_0xb668('0x111'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x113')});db['User'][_0xb668('0x114')](db[_0xb668('0x115')],{'as':_0xb668('0x116'),'foreignKey':_0xb668('0x113')});db[_0xb668('0x13')][_0xb668('0x114')](db[_0xb668('0x29')],{'as':_0xb668('0x117'),'foreignKey':_0xb668('0x113')});db[_0xb668('0x13')][_0xb668('0x114')](db[_0xb668('0x19')],{'as':_0xb668('0x118'),'onDelete':_0xb668('0x112'),'hooks':!![]});db[_0xb668('0x13')][_0xb668('0x114')](db[_0xb668('0x119')],{'as':_0xb668('0x11a'),'foreignKey':_0xb668('0x113')});db[_0xb668('0x13')][_0xb668('0x114')](db['CmHopperHistory'],{'as':'HopperHistory','foreignKey':'UserId'});db[_0xb668('0x13')][_0xb668('0x114')](db[_0xb668('0x74')],{'as':_0xb668('0x74'),'foreignKey':_0xb668('0x113')});db['User'][_0xb668('0x114')](db[_0xb668('0x57')],{'as':_0xb668('0x11b'),'foreignKey':_0xb668('0x113')});db[_0xb668('0x13')][_0xb668('0x114')](db[_0xb668('0x5e')],{'as':_0xb668('0x11c'),'foreignKey':_0xb668('0x113')});db[_0xb668('0x13')][_0xb668('0x114')](db[_0xb668('0x4e')],{'as':_0xb668('0x11d'),'foreignKey':_0xb668('0x113')});db['User'][_0xb668('0x114')](db[_0xb668('0x46')],{'as':'FaxInteractions','foreignKey':_0xb668('0x113')});db['User'][_0xb668('0x114')](db['MailInteraction'],{'as':_0xb668('0x11e'),'foreignKey':_0xb668('0x113')});db[_0xb668('0x13')][_0xb668('0x114')](db[_0xb668('0x101')],{'as':_0xb668('0x11f'),'foreignKey':_0xb668('0x113')});db[_0xb668('0x13')]['hasMany'](db[_0xb668('0xfd')],{'as':'UserNotifications','foreignKey':_0xb668('0x120')});db[_0xb668('0x13')][_0xb668('0x121')](db[_0xb668('0xf7')],{'as':_0xb668('0xf7'),'foreignKey':_0xb668('0x122')});db['User'][_0xb668('0x123')](db['ChatGroup'],{'as':_0xb668('0x124'),'through':_0xb668('0x125')});db[_0xb668('0x13')][_0xb668('0x123')](db[_0xb668('0x6c')],{'as':_0xb668('0x126'),'through':'cm_user_has_contacts'});db[_0xb668('0x13')][_0xb668('0x123')](db[_0xb668('0x127')],{'as':_0xb668('0x128'),'through':_0xb668('0x129')});db['User'][_0xb668('0x123')](db[_0xb668('0xe5')],{'through':'user_has_teams'});db[_0xb668('0x13')][_0xb668('0x123')](db[_0xb668('0x3b')],{'as':_0xb668('0x11e'),'through':_0xb668('0x12a')});db[_0xb668('0x13')][_0xb668('0x123')](db[_0xb668('0x5e')],{'as':_0xb668('0x11c'),'through':_0xb668('0x12b')});db[_0xb668('0x13')][_0xb668('0x123')](db[_0xb668('0x46')],{'as':_0xb668('0x12c'),'through':_0xb668('0x12d')});db[_0xb668('0x13')][_0xb668('0x123')](db[_0xb668('0x4e')],{'as':_0xb668('0x11d'),'through':'user_has_sms_interactions'});db[_0xb668('0x13')][_0xb668('0x123')](db[_0xb668('0x57')],{'as':'OpenchannelInteractions','through':_0xb668('0x12e')});db[_0xb668('0x13')]['belongsToMany'](db['WhatsappInteraction'],{'as':_0xb668('0x11f'),'through':'user_has_whatsapp_interactions'});db['User'][_0xb668('0x123')](db[_0xb668('0x12f')],{'as':_0xb668('0x130'),'through':_0xb668('0x2b'),'required':![]});db[_0xb668('0x13')][_0xb668('0x123')](db[_0xb668('0xf5')],{'as':_0xb668('0x131'),'through':_0xb668('0x10e'),'required':![]});db[_0xb668('0x13')][_0xb668('0x123')](db[_0xb668('0x132')],{'as':_0xb668('0x133'),'through':_0xb668('0x2f'),'required':![]});db[_0xb668('0x13')][_0xb668('0x123')](db[_0xb668('0x64')],{'as':_0xb668('0x134'),'through':_0xb668('0x2d'),'required':![],'hooks':!![]});db['User'][_0xb668('0x123')](db['FaxQueue'],{'as':_0xb668('0x135'),'through':_0xb668('0x31'),'required':![]});db[_0xb668('0x13')][_0xb668('0x123')](db[_0xb668('0x51')],{'as':_0xb668('0x136'),'through':_0xb668('0x33'),'required':![]});db['User']['belongsToMany'](db[_0xb668('0x5a')],{'as':'OpenchannelQueues','through':_0xb668('0x35'),'required':![]});db['User'][_0xb668('0x123')](db[_0xb668('0x108')],{'as':'WhatsappQueues','through':_0xb668('0x37'),'required':![]});db[_0xb668('0x13')][_0xb668('0x123')](db[_0xb668('0x127')],{'through':_0xb668('0x129')});db[_0xb668('0x13')][_0xb668('0x123')](db[_0xb668('0x137')],{'as':_0xb668('0x138'),'through':_0xb668('0x139')});db[_0xb668('0x13')][_0xb668('0x123')](db[_0xb668('0x44')],{'as':'FaxAccounts','through':_0xb668('0x13a')});db[_0xb668('0x13')]['belongsToMany'](db['MailAccount'],{'as':_0xb668('0x13b'),'through':_0xb668('0x13c')});db[_0xb668('0x13')][_0xb668('0x123')](db[_0xb668('0x53')],{'as':_0xb668('0x13d'),'through':_0xb668('0x13e')});db['User'][_0xb668('0x123')](db[_0xb668('0x13f')],{'as':_0xb668('0x140'),'through':_0xb668('0x141')});db['User'][_0xb668('0x123')](db[_0xb668('0xfe')],{'as':_0xb668('0x142'),'through':_0xb668('0x143')});db[_0xb668('0x13')][_0xb668('0x123')](db[_0xb668('0xe0')],{'as':'SquareProjects','through':_0xb668('0x144')});db[_0xb668('0x16')][_0xb668('0x114')](db[_0xb668('0x19')],{'as':_0xb668('0x145'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x146')});db[_0xb668('0x17')][_0xb668('0x114')](db[_0xb668('0x19')],{'onDelete':_0xb668('0x112')});db['VoiceExtension']['hasMany'](db[_0xb668('0x19')],{'as':_0xb668('0x147'),'onDelete':_0xb668('0x112')});db[_0xb668('0x1a')][_0xb668('0x123')](db[_0xb668('0x87')],{'as':'Sounds','through':_0xb668('0x148')});db[_0xb668('0x12f')][_0xb668('0x114')](db[_0xb668('0x29')],{'as':_0xb668('0x149'),'foreignKey':'VoiceQueueId'});db[_0xb668('0x12f')][_0xb668('0x114')](db[_0xb668('0x6e')],{'as':_0xb668('0x14a'),'foreignKey':_0xb668('0x14b')});db[_0xb668('0x12f')][_0xb668('0x114')](db[_0xb668('0x119')],{'as':'HopperFinals','foreignKey':_0xb668('0x14b')});db['VoiceQueue'][_0xb668('0x114')](db[_0xb668('0x72')],{'as':_0xb668('0x14c'),'foreignKey':_0xb668('0x14b')});db[_0xb668('0x12f')][_0xb668('0x114')](db[_0xb668('0x74')],{'as':_0xb668('0x74'),'foreignKey':_0xb668('0x14b')});db['VoiceQueue']['hasMany'](db[_0xb668('0x70')],{'as':_0xb668('0x14d'),'foreignKey':_0xb668('0x14b')});db[_0xb668('0x12f')][_0xb668('0x114')](db['JscriptySessionReport'],{'as':_0xb668('0x14e'),'foreignKey':_0xb668('0x14b')});db[_0xb668('0x12f')][_0xb668('0x121')](db[_0xb668('0x26')],{'as':'Trunk','foreignKey':_0xb668('0x14f')});db['VoiceQueue'][_0xb668('0x121')](db[_0xb668('0x26')],{'as':_0xb668('0x150'),'foreignKey':'TrunkBackupId'});db[_0xb668('0x12f')][_0xb668('0x121')](db[_0xb668('0x80')],{'as':'Interval','foreignKey':'IntervalId'});db[_0xb668('0x12f')][_0xb668('0x121')](db[_0xb668('0x81')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db['VoiceQueue'][_0xb668('0x123')](db[_0xb668('0x127')],{'as':'Lists','through':'voice_queues_has_cm_lists'});db[_0xb668('0x12f')]['belongsToMany'](db[_0xb668('0x13')],{'as':'Agents','through':'UserVoiceQueue'});db[_0xb668('0x12f')][_0xb668('0x123')](db[_0xb668('0xe5')],{'as':'Teams','through':_0xb668('0x10b')});db['VoiceQueue']['belongsToMany'](db[_0xb668('0x127')],{'as':_0xb668('0x151'),'through':_0xb668('0x152')});db[_0xb668('0x115')][_0xb668('0x121')](db['User'],{'as':_0xb668('0x13'),'foreignKey':_0xb668('0x113')});db[_0xb668('0x153')][_0xb668('0x121')](db[_0xb668('0x13')],{'as':'User','foreignKey':'UserId'});db['VoiceMail'][_0xb668('0x114')](db['VoiceMailMessage'],{'as':_0xb668('0x154'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x155'),'sourceKey':'mailbox'});db[_0xb668('0x20')]['belongsTo'](db[_0xb668('0x111')],{'foreignKey':'mailboxuser','targetKey':_0xb668('0x156')});db[_0xb668('0x21')][_0xb668('0x114')](db[_0xb668('0x157')],{'as':'QueueCalls','foreignKey':_0xb668('0x158'),'constraints':![]});db[_0xb668('0x21')]['hasMany'](db[_0xb668('0x159')],{'as':_0xb668('0x15a'),'foreignKey':'uniqueid','constraints':![]});db['VoiceCallReport'][_0xb668('0x121')](db[_0xb668('0x13')],{'as':_0xb668('0x13'),'foreignKey':_0xb668('0x113')});db[_0xb668('0x21')]['belongsTo'](db[_0xb668('0x6c')],{'as':_0xb668('0x15b'),'foreignKey':_0xb668('0x15c')});db['MailServerIn'][_0xb668('0x121')](db['MailAccount'],{'as':'MailAccount','foreignKey':'MailAccountId'});db[_0xb668('0x38')][_0xb668('0x121')](db[_0xb668('0x15d')],{'as':'MailAccount','foreignKey':'MailAccountId'});db['MailAccount'][_0xb668('0x110')](db[_0xb668('0x15e')],{'as':'Imap','onDelete':_0xb668('0x112')});db[_0xb668('0x15d')]['hasOne'](db[_0xb668('0x38')],{'as':_0xb668('0x15f'),'onDelete':'cascade'});db[_0xb668('0x15d')][_0xb668('0x114')](db[_0xb668('0x7c')],{'as':_0xb668('0x160'),'foreignKey':_0xb668('0x161'),'onDelete':_0xb668('0x112')});db[_0xb668('0x15d')]['hasMany'](db[_0xb668('0x162')],{'as':_0xb668('0x163'),'foreignKey':_0xb668('0x161')});db[_0xb668('0x15d')][_0xb668('0x114')](db[_0xb668('0x3d')],{'as':_0xb668('0x154'),'foreignKey':_0xb668('0x161')});db[_0xb668('0x15d')][_0xb668('0x114')](db['MailInteraction'],{'as':_0xb668('0x164')});db[_0xb668('0x15d')][_0xb668('0x114')](db[_0xb668('0x3e')],{'as':_0xb668('0x147')});db[_0xb668('0x15d')][_0xb668('0x121')](db['CmList'],{'as':_0xb668('0x165'),'foreignKey':_0xb668('0x166')});db[_0xb668('0x15d')][_0xb668('0x121')](db[_0xb668('0x8b')],{'as':_0xb668('0x8b'),'foreignKey':_0xb668('0x167')});db['MailAccount'][_0xb668('0x121')](db[_0xb668('0x81')],{'as':_0xb668('0x168'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xb668('0x15d')][_0xb668('0x123')](db[_0xb668('0x13')],{'as':_0xb668('0x169'),'through':'user_has_mail_accounts'});db[_0xb668('0x132')][_0xb668('0x123')](db[_0xb668('0x13')],{'as':_0xb668('0x169'),'through':'UserMailQueue'});db[_0xb668('0x132')]['belongsToMany'](db[_0xb668('0xe5')],{'through':_0xb668('0x16a'),'as':_0xb668('0x16b')});db['MailInteraction'][_0xb668('0x114')](db['MailMessage'],{'as':_0xb668('0x154'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x16c')});db['MailInteraction'][_0xb668('0x121')](db[_0xb668('0x15d')],{'as':'Account','foreignKey':_0xb668('0x161')});db['MailInteraction'][_0xb668('0x121')](db[_0xb668('0x6c')],{'as':'Contact','foreignKey':_0xb668('0x15c')});db[_0xb668('0x3b')][_0xb668('0x121')](db[_0xb668('0x13')],{'as':_0xb668('0x16d'),'foreignKey':_0xb668('0x113')});db[_0xb668('0x3b')][_0xb668('0x123')](db['Tag'],{'through':'mail_interaction_has_tags','as':'Tags'});db[_0xb668('0x3b')][_0xb668('0x123')](db[_0xb668('0x89')],{'through':_0xb668('0x16e'),'as':'ThroughTags'});db[_0xb668('0x3b')][_0xb668('0x123')](db[_0xb668('0x13')],{'as':_0xb668('0x16f'),'through':'user_has_mail_interactions','foreignKey':'MailInteractionId'});db[_0xb668('0x3d')][_0xb668('0x114')](db[_0xb668('0x170')],{'as':_0xb668('0x171'),'onDelete':_0xb668('0x112')});db[_0xb668('0x3d')][_0xb668('0x121')](db[_0xb668('0x13')],{'as':'User'});db[_0xb668('0x3d')][_0xb668('0x121')](db['CmContact'],{'onDelete':_0xb668('0x112'),'as':_0xb668('0x15b')});db[_0xb668('0x3d')][_0xb668('0x121')](db[_0xb668('0x3b')],{'as':_0xb668('0x172'),'foreignKey':'MailInteractionId'});db['MailMessage'][_0xb668('0x121')](db[_0xb668('0x15d')],{'as':_0xb668('0x173'),'foreignKey':_0xb668('0x161')});db[_0xb668('0x3d')][_0xb668('0x121')](db[_0xb668('0x137')],{'as':_0xb668('0x137'),'foreignKey':_0xb668('0x174')});db[_0xb668('0x3d')][_0xb668('0x121')](db[_0xb668('0x62')],{'as':_0xb668('0x62'),'foreignKey':_0xb668('0x175')});db[_0xb668('0x3e')][_0xb668('0x121')](db[_0xb668('0x13')],{'onDelete':_0xb668('0x176')});db[_0xb668('0x3e')][_0xb668('0x121')](db['MailQueue'],{'onDelete':_0xb668('0x176')});db[_0xb668('0x3e')][_0xb668('0x121')](db['MailAccount'],{'onDelete':'restrict'});db[_0xb668('0x3e')]['belongsTo'](db['Interval'],{'onDelete':'restrict','foreignKey':'IntervalId'});db[_0xb668('0x3e')][_0xb668('0x121')](db[_0xb668('0x89')],{'onDelete':_0xb668('0x176'),'foreignKey':_0xb668('0x177')});db[_0xb668('0x40')]['belongsTo'](db['MailAccount'],{});db[_0xb668('0x40')][_0xb668('0x121')](db['CmList'],{'as':_0xb668('0x165'),'foreignKey':_0xb668('0x166')});db[_0xb668('0x40')][_0xb668('0x121')](db[_0xb668('0x6c')],{'as':_0xb668('0x15b'),'foreignKey':_0xb668('0x15c')});db[_0xb668('0x40')]['belongsTo'](db[_0xb668('0x3b')],{});db[_0xb668('0x40')]['belongsTo'](db[_0xb668('0x3d')],{});db[_0xb668('0x40')][_0xb668('0x121')](db[_0xb668('0x13')],{});db[_0xb668('0x40')][_0xb668('0x121')](db[_0xb668('0x132')],{});db[_0xb668('0x178')][_0xb668('0x114')](db['DashboardItem'],{'as':'Items','onDelete':_0xb668('0x112')});db[_0xb668('0x44')][_0xb668('0x114')](db[_0xb668('0x7c')],{'as':'Dispositions','foreignKey':_0xb668('0x179'),'onDelete':_0xb668('0x112')});db['FaxAccount']['hasMany'](db[_0xb668('0x162')],{'as':'Answers','foreignKey':'FaxAccountId'});db[_0xb668('0x44')]['hasMany'](db[_0xb668('0x46')],{'as':_0xb668('0x164')});db[_0xb668('0x44')][_0xb668('0x114')](db['FaxApplication'],{'as':_0xb668('0x147')});db[_0xb668('0x44')][_0xb668('0x114')](db[_0xb668('0x19')],{'as':_0xb668('0x17a'),'onDelete':_0xb668('0x112')});db['FaxAccount'][_0xb668('0x114')](db[_0xb668('0x17b')],{'as':_0xb668('0x154')});db[_0xb668('0x44')][_0xb668('0x121')](db[_0xb668('0x26')],{'as':_0xb668('0x26')});db[_0xb668('0x44')]['belongsTo'](db[_0xb668('0x127')],{'as':_0xb668('0x165'),'foreignKey':_0xb668('0x166')});db[_0xb668('0x44')][_0xb668('0x121')](db[_0xb668('0x81')],{'as':'mandatoryDispositionPause','foreignKey':_0xb668('0x17c')});db[_0xb668('0x44')][_0xb668('0x123')](db[_0xb668('0x13')],{'as':_0xb668('0x169'),'through':_0xb668('0x13a')});db[_0xb668('0x17d')]['belongsTo'](db['User'],{'onDelete':_0xb668('0x176')});db[_0xb668('0x17d')][_0xb668('0x121')](db[_0xb668('0x49')],{'onDelete':_0xb668('0x176')});db[_0xb668('0x17d')][_0xb668('0x121')](db['FaxAccount'],{'onDelete':_0xb668('0x176')});db[_0xb668('0x17d')][_0xb668('0x121')](db[_0xb668('0x89')],{'onDelete':_0xb668('0x176'),'foreignKey':_0xb668('0x177')});db['FaxInteraction'][_0xb668('0x114')](db[_0xb668('0x17b')],{'as':_0xb668('0x154'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x17e')});db[_0xb668('0x46')][_0xb668('0x121')](db[_0xb668('0x44')],{'as':_0xb668('0x173'),'foreignKey':_0xb668('0x179')});db[_0xb668('0x46')][_0xb668('0x121')](db['CmContact'],{'as':_0xb668('0x15b'),'foreignKey':_0xb668('0x15c')});db[_0xb668('0x46')][_0xb668('0x121')](db['User'],{'as':'Owner','foreignKey':_0xb668('0x113')});db[_0xb668('0x46')][_0xb668('0x123')](db['Tag'],{'through':_0xb668('0x17f'),'as':_0xb668('0x180')});db[_0xb668('0x46')][_0xb668('0x123')](db[_0xb668('0x89')],{'through':'fax_interaction_has_tags','as':_0xb668('0x181')});db[_0xb668('0x46')][_0xb668('0x123')](db['User'],{'as':_0xb668('0x16f'),'through':_0xb668('0x12d'),'foreignKey':_0xb668('0x17e')});db['FaxMessage'][_0xb668('0x121')](db['User'],{'onDelete':_0xb668('0x112'),'as':_0xb668('0x13')});db[_0xb668('0x17b')][_0xb668('0x121')](db[_0xb668('0x46')],{'as':_0xb668('0x172'),'foreignKey':_0xb668('0x17e')});db[_0xb668('0x17b')][_0xb668('0x121')](db[_0xb668('0x6c')],{'onDelete':_0xb668('0x112'),'as':_0xb668('0x15b')});db[_0xb668('0x17b')][_0xb668('0x121')](db[_0xb668('0x170')],{'as':_0xb668('0x170'),'foreignKey':_0xb668('0x182')});db[_0xb668('0x17b')][_0xb668('0x121')](db[_0xb668('0x44')],{'as':_0xb668('0x173'),'foreignKey':_0xb668('0x179')});db[_0xb668('0x49')][_0xb668('0x123')](db[_0xb668('0x13')],{'as':_0xb668('0x169'),'through':_0xb668('0x31')});db[_0xb668('0x49')][_0xb668('0x123')](db[_0xb668('0xe5')],{'through':'team_has_fax_queues','as':_0xb668('0x16b')});db[_0xb668('0x4b')][_0xb668('0x121')](db[_0xb668('0x44')],{});db['FaxQueueReport'][_0xb668('0x121')](db['CmList'],{'as':_0xb668('0x165'),'foreignKey':_0xb668('0x166')});db[_0xb668('0x4b')][_0xb668('0x121')](db[_0xb668('0x6c')],{'as':_0xb668('0x15b'),'foreignKey':_0xb668('0x15c')});db['FaxQueueReport'][_0xb668('0x121')](db[_0xb668('0x46')],{});db[_0xb668('0x4b')][_0xb668('0x121')](db[_0xb668('0x17b')],{});db['FaxQueueReport'][_0xb668('0x121')](db[_0xb668('0x13')],{});db['FaxQueueReport'][_0xb668('0x121')](db[_0xb668('0x49')],{});db['SmsAccount'][_0xb668('0x114')](db[_0xb668('0x7c')],{'as':_0xb668('0x160'),'foreignKey':_0xb668('0x183'),'onDelete':_0xb668('0x112')});db['SmsAccount']['hasMany'](db[_0xb668('0x162')],{'as':_0xb668('0x163'),'foreignKey':_0xb668('0x183')});db[_0xb668('0x13f')][_0xb668('0x114')](db[_0xb668('0x4f')],{'as':'Messages','foreignKey':'SmsAccountId'});db['SmsAccount'][_0xb668('0x114')](db[_0xb668('0x4e')],{'as':'Interactions'});db[_0xb668('0x13f')]['hasMany'](db['SmsApplication'],{'as':_0xb668('0x147')});db[_0xb668('0x13f')][_0xb668('0x121')](db['CmList'],{'as':_0xb668('0x165'),'foreignKey':'ListId'});db[_0xb668('0x13f')][_0xb668('0x121')](db[_0xb668('0x81')],{'as':_0xb668('0x168'),'foreignKey':_0xb668('0x17c')});db['SmsAccount'][_0xb668('0x123')](db[_0xb668('0x13')],{'as':_0xb668('0x169'),'through':_0xb668('0x141')});db[_0xb668('0x184')][_0xb668('0x121')](db[_0xb668('0x13')],{'onDelete':_0xb668('0x176')});db['SmsApplication']['belongsTo'](db[_0xb668('0x51')],{'onDelete':_0xb668('0x176')});db['SmsApplication'][_0xb668('0x121')](db[_0xb668('0x13f')],{'onDelete':_0xb668('0x176')});db[_0xb668('0x184')][_0xb668('0x121')](db[_0xb668('0x80')],{'onDelete':'restrict','foreignKey':'IntervalId'});db[_0xb668('0x184')][_0xb668('0x121')](db[_0xb668('0x89')],{'onDelete':_0xb668('0x176'),'foreignKey':_0xb668('0x177')});db['SmsInteraction'][_0xb668('0x114')](db['SmsMessage'],{'as':_0xb668('0x154'),'onDelete':_0xb668('0x112'),'foreignKey':'SmsInteractionId'});db[_0xb668('0x4e')]['belongsTo'](db[_0xb668('0x13f')],{'as':_0xb668('0x173'),'foreignKey':'SmsAccountId'});db['SmsInteraction'][_0xb668('0x121')](db[_0xb668('0x6c')],{'as':_0xb668('0x15b'),'foreignKey':_0xb668('0x15c')});db[_0xb668('0x4e')][_0xb668('0x121')](db[_0xb668('0x13')],{'as':_0xb668('0x16d'),'foreignKey':_0xb668('0x113')});db['SmsInteraction'][_0xb668('0x123')](db[_0xb668('0x89')],{'through':_0xb668('0x185'),'as':'Tags'});db[_0xb668('0x4e')][_0xb668('0x123')](db[_0xb668('0x89')],{'through':'sms_interaction_has_tags','as':_0xb668('0x181')});db[_0xb668('0x4e')][_0xb668('0x123')](db[_0xb668('0x13')],{'as':_0xb668('0x16f'),'through':_0xb668('0x186'),'foreignKey':_0xb668('0x187')});db['SmsMessage']['belongsTo'](db[_0xb668('0x13')],{'as':_0xb668('0x13')});db[_0xb668('0x4f')]['belongsTo'](db['CmContact'],{'onDelete':_0xb668('0x112'),'as':_0xb668('0x15b')});db[_0xb668('0x4f')]['belongsTo'](db[_0xb668('0x4e')],{'onDelete':_0xb668('0x112'),'as':_0xb668('0x172'),'foreignKey':_0xb668('0x187')});db[_0xb668('0x4f')]['belongsTo'](db[_0xb668('0x13f')],{'as':_0xb668('0x173'),'foreignKey':_0xb668('0x183')});db[_0xb668('0x51')][_0xb668('0x123')](db[_0xb668('0x13')],{'as':_0xb668('0x169'),'through':_0xb668('0x33'),'foreignKey':_0xb668('0x188')});db[_0xb668('0x51')][_0xb668('0x123')](db[_0xb668('0xe5')],{'through':_0xb668('0x189'),'as':_0xb668('0x16b')});db[_0xb668('0x53')]['hasMany'](db[_0xb668('0x7c')],{'as':_0xb668('0x160'),'foreignKey':_0xb668('0x18a'),'onDelete':_0xb668('0x112')});db[_0xb668('0x53')][_0xb668('0x114')](db[_0xb668('0x162')],{'as':_0xb668('0x163'),'foreignKey':'OpenchannelAccountId'});db[_0xb668('0x53')][_0xb668('0x114')](db[_0xb668('0x57')],{'as':'Interactions','foreignKey':_0xb668('0x18a')});db[_0xb668('0x53')]['hasMany'](db[_0xb668('0x59')],{'as':_0xb668('0x154'),'foreignKey':_0xb668('0x18a')});db[_0xb668('0x53')]['hasMany'](db[_0xb668('0x55')],{'as':_0xb668('0x147'),'foreignKey':_0xb668('0x18a')});db[_0xb668('0x53')][_0xb668('0x121')](db['CmList'],{'as':_0xb668('0x165'),'foreignKey':_0xb668('0x166')});db[_0xb668('0x53')]['belongsTo'](db[_0xb668('0x81')],{'as':'mandatoryDispositionPause','foreignKey':_0xb668('0x17c')});db[_0xb668('0x53')][_0xb668('0x123')](db[_0xb668('0x13')],{'as':_0xb668('0x169'),'through':_0xb668('0x13e')});db[_0xb668('0x55')][_0xb668('0x121')](db[_0xb668('0x13')],{'onDelete':_0xb668('0x176')});db[_0xb668('0x55')][_0xb668('0x121')](db['OpenchannelQueue'],{'onDelete':_0xb668('0x176'),'foreignKey':_0xb668('0x18b')});db[_0xb668('0x55')][_0xb668('0x121')](db[_0xb668('0x53')],{'onDelete':_0xb668('0x176'),'foreignKey':_0xb668('0x18a')});db[_0xb668('0x55')][_0xb668('0x121')](db[_0xb668('0x80')],{'onDelete':_0xb668('0x176'),'foreignKey':_0xb668('0x18c')});db[_0xb668('0x55')][_0xb668('0x121')](db[_0xb668('0x89')],{'onDelete':_0xb668('0x176'),'foreignKey':_0xb668('0x177')});db[_0xb668('0x57')][_0xb668('0x114')](db[_0xb668('0x59')],{'as':_0xb668('0x154'),'onDelete':'cascade','foreignKey':_0xb668('0x18d')});db[_0xb668('0x57')][_0xb668('0x121')](db[_0xb668('0x53')],{'as':'Account','foreignKey':_0xb668('0x18a')});db['OpenchannelInteraction']['belongsTo'](db[_0xb668('0x6c')],{'as':_0xb668('0x15b'),'foreignKey':_0xb668('0x15c')});db[_0xb668('0x57')][_0xb668('0x121')](db[_0xb668('0x13')],{'as':'Owner','foreignKey':_0xb668('0x113')});db[_0xb668('0x57')][_0xb668('0x123')](db[_0xb668('0x89')],{'through':'openchannel_interaction_has_tags','as':_0xb668('0x180')});db[_0xb668('0x57')][_0xb668('0x123')](db['Tag'],{'through':_0xb668('0x18e'),'as':_0xb668('0x181')});db[_0xb668('0x57')][_0xb668('0x123')](db[_0xb668('0x13')],{'as':_0xb668('0x16f'),'through':_0xb668('0x12e'),'foreignKey':'OpenchannelInteractionId'});db[_0xb668('0x59')][_0xb668('0x121')](db[_0xb668('0x13')],{'onDelete':_0xb668('0x112'),'as':_0xb668('0x13')});db[_0xb668('0x59')][_0xb668('0x121')](db[_0xb668('0x6c')],{'onDelete':_0xb668('0x112'),'as':'Contact'});db[_0xb668('0x59')][_0xb668('0x121')](db['OpenchannelInteraction'],{'onDelete':_0xb668('0x112'),'as':'Interaction','foreignKey':_0xb668('0x18d')});db[_0xb668('0x59')]['belongsTo'](db['Attachment'],{'as':_0xb668('0x170'),'foreignKey':_0xb668('0x182')});db[_0xb668('0x59')][_0xb668('0x121')](db['OpenchannelAccount'],{'as':'Account','foreignKey':_0xb668('0x18a')});db[_0xb668('0x5a')]['belongsToMany'](db[_0xb668('0x13')],{'as':'Agents','through':_0xb668('0x35'),'foreignKey':'OpenchannelQueueId'});db[_0xb668('0x5a')][_0xb668('0x123')](db['Team'],{'through':'team_has_openchannel_queues','as':_0xb668('0x16b')});db['ChatWebsite'][_0xb668('0x114')](db['Disposition'],{'as':_0xb668('0x160'),'foreignKey':_0xb668('0x174'),'onDelete':_0xb668('0x112')});db['ChatWebsite']['hasMany'](db[_0xb668('0x162')],{'as':_0xb668('0x163'),'foreignKey':_0xb668('0x174')});db['ChatWebsite'][_0xb668('0x114')](db[_0xb668('0x68')],{'as':_0xb668('0x18f')});db[_0xb668('0x137')]['hasMany'](db[_0xb668('0x5e')],{'as':'Interactions'});db[_0xb668('0x137')]['hasMany'](db[_0xb668('0x5c')],{'as':_0xb668('0x147')});db[_0xb668('0x137')][_0xb668('0x114')](db[_0xb668('0x60')],{'as':_0xb668('0x154')});db['ChatWebsite'][_0xb668('0x121')](db[_0xb668('0x127')],{'as':'List','foreignKey':'ListId'});db[_0xb668('0x137')]['belongsTo'](db[_0xb668('0x80')],{'as':'Interval','foreignKey':_0xb668('0x18c')});db[_0xb668('0x137')][_0xb668('0x121')](db['MailAccount'],{'as':_0xb668('0x15d'),'foreignKey':'MailAccountId'});db[_0xb668('0x137')][_0xb668('0x121')](db[_0xb668('0x81')],{'as':_0xb668('0x168'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xb668('0x137')][_0xb668('0x123')](db[_0xb668('0x13')],{'as':'Agents','through':_0xb668('0x139')});db[_0xb668('0x190')][_0xb668('0x121')](db['OpenchannelAccount'],{});db[_0xb668('0x190')][_0xb668('0x121')](db['CmList'],{'as':'List','foreignKey':_0xb668('0x166')});db[_0xb668('0x190')]['belongsTo'](db[_0xb668('0x6c')],{'as':_0xb668('0x15b'),'foreignKey':_0xb668('0x15c')});db['OpenchannelQueueReport'][_0xb668('0x121')](db[_0xb668('0x57')],{});db[_0xb668('0x190')][_0xb668('0x121')](db[_0xb668('0x59')],{});db[_0xb668('0x190')][_0xb668('0x121')](db[_0xb668('0x13')],{});db[_0xb668('0x190')][_0xb668('0x121')](db[_0xb668('0x5a')],{});db[_0xb668('0x5c')][_0xb668('0x121')](db[_0xb668('0x13')],{'as':_0xb668('0x191'),'foreignKey':_0xb668('0x113'),'onDelete':_0xb668('0x176')});db[_0xb668('0x5c')][_0xb668('0x121')](db['ChatQueue'],{'as':_0xb668('0x192'),'foreignKey':_0xb668('0x193'),'onDelete':'restrict'});db['ChatApplication'][_0xb668('0x121')](db['ChatWebsite'],{'as':'Website','foreignKey':_0xb668('0x174'),'onDelete':'restrict'});db[_0xb668('0x5c')]['belongsTo'](db[_0xb668('0x89')],{'onDelete':_0xb668('0x176'),'foreignKey':_0xb668('0x177')});db['ChatInteraction'][_0xb668('0x114')](db[_0xb668('0x60')],{'as':'Messages','onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x194')});db[_0xb668('0x5e')][_0xb668('0x121')](db[_0xb668('0x137')],{'as':_0xb668('0x173'),'foreignKey':'ChatWebsiteId'});db[_0xb668('0x5e')][_0xb668('0x121')](db['CmContact'],{'as':_0xb668('0x15b'),'foreignKey':_0xb668('0x15c')});db[_0xb668('0x5e')]['belongsTo'](db[_0xb668('0x13')],{'as':_0xb668('0x16d'),'foreignKey':_0xb668('0x113')});db[_0xb668('0x5e')]['belongsToMany'](db['Tag'],{'through':_0xb668('0x195'),'as':_0xb668('0x180')});db[_0xb668('0x5e')][_0xb668('0x123')](db['Tag'],{'through':'chat_interaction_has_tags','as':_0xb668('0x181')});db[_0xb668('0x5e')][_0xb668('0x123')](db[_0xb668('0x13')],{'as':_0xb668('0x16f'),'through':_0xb668('0x12b'),'foreignKey':_0xb668('0x194')});db[_0xb668('0x60')]['belongsTo'](db[_0xb668('0x13')],{'onDelete':_0xb668('0x112'),'as':_0xb668('0x13')});db[_0xb668('0x60')][_0xb668('0x121')](db[_0xb668('0x6c')],{'onDelete':_0xb668('0x112'),'as':_0xb668('0x15b'),'foreignKey':_0xb668('0x15c')});db[_0xb668('0x60')][_0xb668('0x121')](db[_0xb668('0x5e')],{'onDelete':_0xb668('0x112'),'as':_0xb668('0x172'),'foreignKey':_0xb668('0x194')});db[_0xb668('0x60')][_0xb668('0x121')](db[_0xb668('0x170')],{'as':_0xb668('0x170'),'foreignKey':_0xb668('0x182')});db[_0xb668('0x60')]['belongsTo'](db[_0xb668('0x137')],{'as':_0xb668('0x173'),'foreignKey':'ChatWebsiteId'});db[_0xb668('0x62')][_0xb668('0x114')](db[_0xb668('0x170')],{'as':_0xb668('0x171'),'foreignKey':_0xb668('0x175'),'onDelete':_0xb668('0x112'),'hooks':!![]});db['ChatOfflineMessage']['belongsTo'](db[_0xb668('0x6c')],{'onDelete':_0xb668('0x112'),'as':_0xb668('0x15b'),'foreignKey':'ContactId'});db[_0xb668('0x62')]['belongsTo'](db['ChatWebsite'],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0xb668('0x64')][_0xb668('0x123')](db[_0xb668('0x13')],{'as':_0xb668('0x169'),'through':_0xb668('0x2d'),'hooks':!![]});db[_0xb668('0x64')][_0xb668('0x123')](db[_0xb668('0xe5')],{'through':'team_has_chat_queues','as':_0xb668('0x16b')});db[_0xb668('0x66')][_0xb668('0x114')](db[_0xb668('0xd4')],{'as':_0xb668('0x154'),'foreignKey':'ChatGroupId','onDelete':'cascade'});db[_0xb668('0x66')][_0xb668('0x123')](db[_0xb668('0x13')],{'as':'Members','through':_0xb668('0x125')});db['ChatProactiveAction'][_0xb668('0x121')](db[_0xb668('0x137')],{'as':_0xb668('0x196'),'foreignKey':'ChatWebsiteId'});db[_0xb668('0x6a')][_0xb668('0x114')](db[_0xb668('0x6c')],{'as':_0xb668('0x126'),'foreignKey':_0xb668('0x197')});db[_0xb668('0x6c')][_0xb668('0x114')](db['CmHopper'],{'as':'Hoppers','foreignKey':_0xb668('0x15c')});db[_0xb668('0x6c')]['hasMany'](db[_0xb668('0x119')],{'as':_0xb668('0x11a'),'foreignKey':'ContactId'});db[_0xb668('0x6c')][_0xb668('0x114')](db['CmHopperHistory'],{'as':'HopperHistories','foreignKey':_0xb668('0x15c')});db[_0xb668('0x6c')]['hasMany'](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0xb668('0x15c')});db[_0xb668('0x6c')]['hasMany'](db['JscriptySessionReport'],{'as':_0xb668('0x14e'),'foreignKey':'ContactId'});db[_0xb668('0x6c')][_0xb668('0x114')](db[_0xb668('0x57')],{'as':'OpenchannelInteractions','foreignKey':'ContactId','onDelete':_0xb668('0x176')});db[_0xb668('0x6c')]['hasMany'](db[_0xb668('0x5e')],{'as':_0xb668('0x11c'),'foreignKey':_0xb668('0x15c'),'onDelete':_0xb668('0x176')});db['CmContact'][_0xb668('0x114')](db['SmsInteraction'],{'as':_0xb668('0x11d'),'foreignKey':_0xb668('0x15c'),'onDelete':_0xb668('0x176')});db[_0xb668('0x6c')][_0xb668('0x114')](db[_0xb668('0x46')],{'as':'FaxInteractions','foreignKey':_0xb668('0x15c'),'onDelete':_0xb668('0x176')});db['CmContact'][_0xb668('0x114')](db['MailInteraction'],{'as':_0xb668('0x11e'),'foreignKey':_0xb668('0x15c'),'onDelete':_0xb668('0x176')});db[_0xb668('0x6c')][_0xb668('0x121')](db[_0xb668('0x6a')],{'as':_0xb668('0x198'),'foreignKey':_0xb668('0x197')});db[_0xb668('0x6c')][_0xb668('0x121')](db[_0xb668('0x127')],{'as':_0xb668('0x165'),'foreignKey':_0xb668('0x166'),'onDelete':_0xb668('0x112')});db[_0xb668('0x6c')][_0xb668('0x123')](db[_0xb668('0x13')],{'as':_0xb668('0x16f'),'through':_0xb668('0x199')});db[_0xb668('0x6c')][_0xb668('0x123')](db[_0xb668('0x89')],{'as':'Tags','through':'cm_contact_has_tags'});db['CmContact'][_0xb668('0x123')](db['Tag'],{'through':_0xb668('0x19a'),'as':_0xb668('0x181')});db[_0xb668('0x6e')][_0xb668('0x121')](db[_0xb668('0x6c')],{'as':_0xb668('0x15b'),'foreignKey':_0xb668('0x15c'),'onDelete':_0xb668('0x112')});db[_0xb668('0x6e')][_0xb668('0x121')](db[_0xb668('0x127')],{'as':_0xb668('0x165'),'foreignKey':_0xb668('0x166'),'onDelete':_0xb668('0x112')});db[_0xb668('0x6e')]['belongsTo'](db[_0xb668('0x13')],{'as':'Agent','foreignKey':_0xb668('0x113')});db['CmHopper']['belongsTo'](db[_0xb668('0x12f')],{'as':'Queue','foreignKey':_0xb668('0x14b'),'onDelete':_0xb668('0x112')});db[_0xb668('0x6e')]['belongsTo'](db[_0xb668('0xe9')],{'as':_0xb668('0xe9'),'foreignKey':_0xb668('0x19b'),'onDelete':_0xb668('0x112')});db['CmHopper'][_0xb668('0x121')](db[_0xb668('0x13')],{'as':_0xb668('0x16d'),'foreignKey':_0xb668('0x19c')});db[_0xb668('0x70')][_0xb668('0x121')](db[_0xb668('0x6c')],{'as':_0xb668('0x15b'),'foreignKey':_0xb668('0x15c'),'onDelete':_0xb668('0x112')});db[_0xb668('0x70')]['belongsTo'](db[_0xb668('0x127')],{'as':_0xb668('0x165'),'foreignKey':'ListId','onDelete':'cascade'});db[_0xb668('0x70')][_0xb668('0x121')](db[_0xb668('0x12f')],{'as':_0xb668('0x192'),'foreignKey':_0xb668('0x14b'),'onDelete':_0xb668('0x112')});db[_0xb668('0x70')]['belongsTo'](db[_0xb668('0xe9')],{'as':_0xb668('0xe9'),'foreignKey':_0xb668('0x19b'),'onDelete':_0xb668('0x112')});db['Automation'][_0xb668('0x114')](db[_0xb668('0x7e')],{'as':{'plural':_0xb668('0x19d'),'singular':_0xb668('0x19e')},'foreignKey':_0xb668('0x19f'),'onDelete':'cascade','hooks':!![]});db[_0xb668('0x79')][_0xb668('0x114')](db[_0xb668('0x7e')],{'as':{'plural':_0xb668('0x1a0'),'singular':_0xb668('0x1a1')},'foreignKey':_0xb668('0x1a2'),'onDelete':'cascade','hooks':!![]});db['Automation'][_0xb668('0x114')](db[_0xb668('0x77')],{'as':_0xb668('0x1a3'),'foreignKey':_0xb668('0x1a4'),'onDelete':_0xb668('0x112'),'hooks':!![]});db[_0xb668('0x7c')][_0xb668('0x114')](db[_0xb668('0x7c')],{'as':_0xb668('0x160'),'foreignKey':_0xb668('0x1a5'),'onDelete':'cascade'});db[_0xb668('0x80')]['hasMany'](db[_0xb668('0x80')],{'as':_0xb668('0x1a6'),'foreignKey':_0xb668('0x18c'),'onDelete':'cascade','hooks':!![],'required':![]});db[_0xb668('0x80')][_0xb668('0x114')](db[_0xb668('0x19')],{'as':_0xb668('0x118'),'foreignKey':_0xb668('0x18c'),'onDelete':_0xb668('0x176')});db[_0xb668('0x80')]['hasMany'](db['MailApplication'],{'as':_0xb668('0x1a7'),'foreignKey':_0xb668('0x18c')});db['Interval'][_0xb668('0x114')](db[_0xb668('0x5c')],{'as':_0xb668('0x1a8'),'foreignKey':_0xb668('0x18c')});db[_0xb668('0x80')][_0xb668('0x114')](db[_0xb668('0x17d')],{'as':'FaxApplications','foreignKey':_0xb668('0x18c')});db[_0xb668('0x80')][_0xb668('0x114')](db[_0xb668('0x184')],{'as':_0xb668('0x1a9'),'foreignKey':_0xb668('0x18c')});db['Schedule'][_0xb668('0x121')](db['MailAccount'],{});db[_0xb668('0x86')][_0xb668('0x121')](db[_0xb668('0x96')],{'foreignKey':_0xb668('0x1aa')});db[_0xb668('0x86')][_0xb668('0x121')](db[_0xb668('0x95')],{'foreignKey':_0xb668('0x1ab')});db[_0xb668('0x87')][_0xb668('0x123')](db[_0xb668('0x1a')],{'as':_0xb668('0x1ac'),'through':_0xb668('0x148'),'onDelete':'restrict'});db['Tag']['belongsToMany'](db[_0xb668('0x6c')],{'through':_0xb668('0x19a')});db['Tag'][_0xb668('0x123')](db[_0xb668('0x5e')],{'through':_0xb668('0x195')});db[_0xb668('0x89')][_0xb668('0x123')](db[_0xb668('0x3b')],{'through':_0xb668('0x16e')});db[_0xb668('0x89')][_0xb668('0x123')](db[_0xb668('0x4e')],{'through':'sms_interaction_has_tags'});db[_0xb668('0x89')][_0xb668('0x123')](db['FaxInteraction'],{'through':_0xb668('0x17f')});db[_0xb668('0x89')]['belongsToMany'](db[_0xb668('0x57')],{'through':'openchannel_interaction_has_tags'});db[_0xb668('0x89')][_0xb668('0x123')](db[_0xb668('0x101')],{'through':_0xb668('0x1ad')});db[_0xb668('0x8d')][_0xb668('0x114')](db['Condition'],{'as':{'plural':_0xb668('0x1ae'),'singular':_0xb668('0x1af')},'foreignKey':_0xb668('0x1b0'),'onDelete':_0xb668('0x112'),'hooks':!![]});db[_0xb668('0x8d')][_0xb668('0x114')](db[_0xb668('0x7e')],{'as':{'plural':_0xb668('0x1b1'),'singular':_0xb668('0x1b2')},'foreignKey':_0xb668('0x1b3'),'onDelete':'cascade','hooks':!![]});db['Trigger']['hasMany'](db[_0xb668('0x77')],{'as':_0xb668('0x1a3'),'foreignKey':'TriggerId','onDelete':_0xb668('0x112'),'hooks':!![]});db[_0xb668('0x95')]['hasMany'](db[_0xb668('0x99')],{'as':'Fields','onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1ab'),'hooks':!![]});db[_0xb668('0x96')][_0xb668('0x114')](db[_0xb668('0x99')],{'as':_0xb668('0x1b4'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1aa')});db['AnalyticMetric']['hasMany'](db[_0xb668('0x99')],{'as':_0xb668('0x1b4'),'onDelete':_0xb668('0x112'),'foreignKey':'MetricId'});db[_0xb668('0x99')][_0xb668('0x121')](db[_0xb668('0x98')],{'foreignKey':'MetricId'});db[_0xb668('0x9d')][_0xb668('0x114')](db[_0xb668('0x9e')],{'as':_0xb668('0x1b5'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1b6')});db['SalesforceConfiguration']['hasMany'](db[_0xb668('0xa0')],{'as':_0xb668('0x1b7'),'onDelete':_0xb668('0x112'),'foreignKey':'SubjectId'});db['SalesforceConfiguration']['hasMany'](db[_0xb668('0xa0')],{'as':_0xb668('0x1b8'),'onDelete':'cascade','foreignKey':_0xb668('0x1b9')});db[_0xb668('0x9e')][_0xb668('0x114')](db['SalesforceField'],{'as':_0xb668('0x1b4'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1ba')});db[_0xb668('0x9e')]['belongsTo'](db[_0xb668('0x9d')],{'as':_0xb668('0x173'),'foreignKey':_0xb668('0x1b6')});db[_0xb668('0xa0')][_0xb668('0x114')](db[_0xb668('0xa0')],{'as':'Subject','foreignKey':_0xb668('0x1bb')});db[_0xb668('0xa0')][_0xb668('0x114')](db[_0xb668('0xa0')],{'as':'Description','foreignKey':_0xb668('0x1b9')});db['SalesforceField'][_0xb668('0x114')](db[_0xb668('0xa0')],{'as':'Field','foreignKey':_0xb668('0x1ba')});db[_0xb668('0xa0')][_0xb668('0x121')](db[_0xb668('0x8f')],{'as':_0xb668('0x8f'),'foreignKey':_0xb668('0x1bc')});db[_0xb668('0xa1')][_0xb668('0x114')](db['SugarcrmConfiguration'],{'as':_0xb668('0x1b5'),'onDelete':'cascade','foreignKey':_0xb668('0x1b6')});db[_0xb668('0xa3')]['hasMany'](db[_0xb668('0xa5')],{'as':'Subjects','onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1bb')});db[_0xb668('0xa3')]['hasMany'](db['SugarcrmField'],{'as':_0xb668('0x1b8'),'onDelete':'cascade','foreignKey':_0xb668('0x1b9')});db[_0xb668('0xa3')]['hasMany'](db['SugarcrmField'],{'as':_0xb668('0x1b4'),'onDelete':_0xb668('0x112'),'foreignKey':'FieldId'});db[_0xb668('0xa3')][_0xb668('0x121')](db['SugarcrmAccount'],{'as':_0xb668('0x173'),'foreignKey':'AccountId'});db[_0xb668('0xa5')][_0xb668('0x114')](db['SugarcrmField'],{'as':'Subject','foreignKey':_0xb668('0x1bb')});db[_0xb668('0xa5')]['hasMany'](db['SugarcrmField'],{'as':_0xb668('0x1bd'),'foreignKey':_0xb668('0x1b9')});db['SugarcrmField'][_0xb668('0x114')](db['SugarcrmField'],{'as':_0xb668('0x1be'),'foreignKey':_0xb668('0x1ba')});db[_0xb668('0xa5')][_0xb668('0x121')](db['Variable'],{'as':_0xb668('0x8f'),'foreignKey':'VariableId'});db[_0xb668('0xa7')][_0xb668('0x114')](db['DeskConfiguration'],{'as':_0xb668('0x1b5'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1b6')});db[_0xb668('0xa9')][_0xb668('0x114')](db['DeskField'],{'as':'Subjects','onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1bb')});db[_0xb668('0xa9')][_0xb668('0x114')](db[_0xb668('0xaa')],{'as':_0xb668('0x1b8'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1b9')});db[_0xb668('0xa9')][_0xb668('0x114')](db['DeskField'],{'as':_0xb668('0x1b4'),'onDelete':'cascade','foreignKey':'FieldId'});db['DeskConfiguration'][_0xb668('0x121')](db[_0xb668('0xa7')],{'as':_0xb668('0x173'),'foreignKey':_0xb668('0x1b6')});db[_0xb668('0xa9')]['belongsToMany'](db[_0xb668('0x89')],{'through':_0xb668('0x1bf')});db[_0xb668('0xaa')][_0xb668('0x114')](db[_0xb668('0xaa')],{'as':_0xb668('0x1c0'),'foreignKey':'SubjectId'});db[_0xb668('0xaa')][_0xb668('0x114')](db[_0xb668('0xaa')],{'as':'Description','foreignKey':_0xb668('0x1b9')});db[_0xb668('0xaa')][_0xb668('0x114')](db[_0xb668('0xaa')],{'as':_0xb668('0x1be'),'foreignKey':_0xb668('0x1ba')});db['DeskField'][_0xb668('0x121')](db[_0xb668('0x8f')],{'as':_0xb668('0x8f'),'foreignKey':_0xb668('0x1bc')});db[_0xb668('0xac')]['hasMany'](db[_0xb668('0xae')],{'as':_0xb668('0x1b5'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1b6')});db[_0xb668('0xae')][_0xb668('0x114')](db[_0xb668('0xb0')],{'as':_0xb668('0x1b7'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1bb')});db[_0xb668('0xae')][_0xb668('0x114')](db['ZohoField'],{'as':_0xb668('0x1b8'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1b9')});db['ZohoConfiguration']['hasMany'](db[_0xb668('0xb0')],{'as':_0xb668('0x1b4'),'onDelete':_0xb668('0x112'),'foreignKey':'FieldId'});db['ZohoConfiguration'][_0xb668('0x121')](db['ZohoAccount'],{'as':'Account','foreignKey':'AccountId'});db[_0xb668('0xb0')][_0xb668('0x114')](db['ZohoField'],{'as':_0xb668('0x1c0'),'foreignKey':_0xb668('0x1bb')});db[_0xb668('0xb0')][_0xb668('0x114')](db[_0xb668('0xb0')],{'as':_0xb668('0x1bd'),'foreignKey':_0xb668('0x1b9')});db[_0xb668('0xb0')][_0xb668('0x114')](db[_0xb668('0xb0')],{'as':'Field','foreignKey':_0xb668('0x1ba')});db[_0xb668('0xb0')]['belongsTo'](db['Variable'],{'as':'Variable','foreignKey':_0xb668('0x1bc')});db[_0xb668('0xb2')][_0xb668('0x114')](db[_0xb668('0xb4')],{'as':_0xb668('0x1b5'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1b6')});db[_0xb668('0xb4')]['hasMany'](db[_0xb668('0xb6')],{'as':_0xb668('0x1b7'),'foreignKey':_0xb668('0x1bb')});db[_0xb668('0xb4')]['hasMany'](db['ZendeskField'],{'as':_0xb668('0x1b8'),'foreignKey':'DescriptionId'});db[_0xb668('0xb4')][_0xb668('0x114')](db[_0xb668('0xb6')],{'as':_0xb668('0x1b4'),'foreignKey':'FieldId'});db[_0xb668('0xb4')][_0xb668('0x121')](db[_0xb668('0xb2')],{'as':_0xb668('0x173'),'foreignKey':_0xb668('0x1b6')});db[_0xb668('0xb4')][_0xb668('0x123')](db[_0xb668('0x89')],{'through':'int_zendesk_configuration_has_tags'});db[_0xb668('0xb6')][_0xb668('0x114')](db[_0xb668('0xb6')],{'as':_0xb668('0x1c0'),'foreignKey':'SubjectId'});db[_0xb668('0xb6')][_0xb668('0x114')](db['ZendeskField'],{'as':_0xb668('0x1bd'),'foreignKey':_0xb668('0x1b9')});db['ZendeskField'][_0xb668('0x114')](db[_0xb668('0xb6')],{'as':_0xb668('0x1be'),'foreignKey':_0xb668('0x1ba')});db[_0xb668('0xb6')]['belongsTo'](db[_0xb668('0x8f')],{'as':_0xb668('0x8f'),'foreignKey':_0xb668('0x1bc')});db[_0xb668('0xb8')][_0xb668('0x114')](db['FreshdeskConfiguration'],{'as':_0xb668('0x1b5'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1b6')});db['FreshdeskConfiguration'][_0xb668('0x114')](db['FreshdeskField'],{'as':'Subjects','onDelete':'cascade','foreignKey':_0xb668('0x1bb')});db[_0xb668('0xb9')][_0xb668('0x114')](db[_0xb668('0xbb')],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0xb668('0x1b9')});db[_0xb668('0xb9')][_0xb668('0x114')](db['FreshdeskField'],{'as':_0xb668('0x1b4'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1ba')});db['FreshdeskConfiguration'][_0xb668('0x121')](db[_0xb668('0xb8')],{'as':'Account','foreignKey':'AccountId'});db[_0xb668('0xb9')][_0xb668('0x123')](db[_0xb668('0x89')],{'through':_0xb668('0x1c1')});db[_0xb668('0xbb')]['hasMany'](db['FreshdeskField'],{'as':_0xb668('0x1c0'),'foreignKey':'SubjectId'});db[_0xb668('0xbb')][_0xb668('0x114')](db['FreshdeskField'],{'as':_0xb668('0x1bd'),'foreignKey':_0xb668('0x1b9')});db[_0xb668('0xbb')][_0xb668('0x114')](db[_0xb668('0xbb')],{'as':_0xb668('0x1be'),'foreignKey':_0xb668('0x1ba')});db[_0xb668('0xbb')]['belongsTo'](db[_0xb668('0x8f')],{'as':_0xb668('0x8f'),'foreignKey':_0xb668('0x1bc')});db['VtigerAccount'][_0xb668('0x114')](db[_0xb668('0x1c2')],{'as':_0xb668('0x1b5'),'onDelete':_0xb668('0x112'),'foreignKey':'AccountId'});db[_0xb668('0x1c2')]['hasMany'](db[_0xb668('0xc0')],{'as':'Subjects','foreignKey':_0xb668('0x1bb')});db[_0xb668('0x1c2')][_0xb668('0x114')](db['VtigerField'],{'as':_0xb668('0x1b8'),'foreignKey':_0xb668('0x1b9')});db[_0xb668('0x1c2')][_0xb668('0x114')](db[_0xb668('0xc0')],{'as':_0xb668('0x1b4'),'foreignKey':_0xb668('0x1ba')});db[_0xb668('0x1c2')][_0xb668('0x121')](db[_0xb668('0xbd')],{'as':_0xb668('0x173'),'foreignKey':_0xb668('0x1b6')});db['VtigerField'][_0xb668('0x114')](db['VtigerField'],{'as':_0xb668('0x1c0'),'foreignKey':_0xb668('0x1bb')});db['VtigerField'][_0xb668('0x114')](db[_0xb668('0xc0')],{'as':'Description','foreignKey':_0xb668('0x1b9')});db[_0xb668('0xc0')][_0xb668('0x114')](db[_0xb668('0xc0')],{'as':'Field','foreignKey':_0xb668('0x1ba')});db[_0xb668('0xc0')][_0xb668('0x121')](db[_0xb668('0x8f')],{'as':_0xb668('0x8f'),'foreignKey':'VariableId'});db[_0xb668('0xc2')]['hasMany'](db['ServicenowConfiguration'],{'as':_0xb668('0x1b5'),'onDelete':'cascade','foreignKey':_0xb668('0x1b6')});db['ServicenowConfiguration'][_0xb668('0x114')](db['ServicenowField'],{'as':_0xb668('0x1b7'),'foreignKey':_0xb668('0x1bb')});db['ServicenowConfiguration'][_0xb668('0x114')](db[_0xb668('0xc5')],{'as':_0xb668('0x1b8'),'foreignKey':'DescriptionId'});db[_0xb668('0xc4')][_0xb668('0x114')](db[_0xb668('0xc5')],{'as':_0xb668('0x1b4'),'foreignKey':_0xb668('0x1ba')});db[_0xb668('0xc4')][_0xb668('0x121')](db[_0xb668('0xc2')],{'as':_0xb668('0x173'),'foreignKey':_0xb668('0x1b6')});db[_0xb668('0xc5')][_0xb668('0x114')](db['ServicenowField'],{'as':_0xb668('0x1c0'),'foreignKey':_0xb668('0x1bb')});db[_0xb668('0xc5')][_0xb668('0x114')](db[_0xb668('0xc5')],{'as':'Description','foreignKey':_0xb668('0x1b9')});db[_0xb668('0xc5')]['hasMany'](db[_0xb668('0xc5')],{'as':_0xb668('0x1be'),'foreignKey':_0xb668('0x1ba')});db[_0xb668('0xc5')]['belongsTo'](db[_0xb668('0x8f')],{'as':_0xb668('0x8f'),'foreignKey':'VariableId'});db[_0xb668('0xc7')]['hasMany'](db[_0xb668('0x1c3')],{'as':_0xb668('0x1b5'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1b6')});db[_0xb668('0x1c3')]['hasMany'](db[_0xb668('0xc9')],{'as':_0xb668('0x1b7'),'onDelete':_0xb668('0x112'),'foreignKey':'SubjectId'});db[_0xb668('0x1c3')][_0xb668('0x114')](db[_0xb668('0xc9')],{'as':_0xb668('0x1b8'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1b9')});db[_0xb668('0x1c3')][_0xb668('0x114')](db['Dynamics365Field'],{'as':_0xb668('0x1b4'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1ba')});db[_0xb668('0x1c3')]['belongsTo'](db['Dynamics365Account'],{'as':_0xb668('0x173'),'foreignKey':_0xb668('0x1b6')});db[_0xb668('0xc9')][_0xb668('0x114')](db[_0xb668('0xc9')],{'as':_0xb668('0x1c0'),'foreignKey':_0xb668('0x1bb')});db[_0xb668('0xc9')][_0xb668('0x114')](db[_0xb668('0xc9')],{'as':_0xb668('0x1bd'),'foreignKey':'DescriptionId'});db[_0xb668('0xc9')][_0xb668('0x114')](db[_0xb668('0xc9')],{'as':_0xb668('0x1be'),'foreignKey':_0xb668('0x1ba')});db['Dynamics365Field']['belongsTo'](db['Variable'],{'as':_0xb668('0x8f'),'foreignKey':'VariableId'});db['FreshsalesAccount']['hasMany'](db['FreshsalesConfiguration'],{'as':'Configurations','onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1b6')});db[_0xb668('0xcd')][_0xb668('0x114')](db[_0xb668('0xcf')],{'as':_0xb668('0x1b7'),'foreignKey':'SubjectId'});db[_0xb668('0xcd')]['hasMany'](db[_0xb668('0xcf')],{'as':'Descriptions','foreignKey':_0xb668('0x1b9')});db[_0xb668('0xcd')][_0xb668('0x114')](db['FreshsalesField'],{'as':_0xb668('0x1b4'),'foreignKey':_0xb668('0x1ba')});db['FreshsalesConfiguration'][_0xb668('0x121')](db[_0xb668('0xcb')],{'as':_0xb668('0x173'),'foreignKey':_0xb668('0x1b6')});db['FreshsalesField']['hasMany'](db[_0xb668('0xcf')],{'as':_0xb668('0x1c0'),'foreignKey':'SubjectId'});db[_0xb668('0xcf')][_0xb668('0x114')](db[_0xb668('0xcf')],{'as':_0xb668('0x1bd'),'foreignKey':_0xb668('0x1b9')});db[_0xb668('0xcf')]['hasMany'](db[_0xb668('0xcf')],{'as':_0xb668('0x1be'),'foreignKey':_0xb668('0x1ba')});db[_0xb668('0xcf')]['belongsTo'](db[_0xb668('0x8f')],{'as':_0xb668('0x8f'),'foreignKey':_0xb668('0x1bc')});db[_0xb668('0xd3')][_0xb668('0x121')](db['ChatWebsite'],{});db['ChatQueueReport'][_0xb668('0x121')](db['CmList'],{'as':_0xb668('0x165'),'foreignKey':_0xb668('0x166')});db['ChatQueueReport'][_0xb668('0x121')](db['CmContact'],{'as':'Contact','foreignKey':_0xb668('0x15c')});db[_0xb668('0xd3')][_0xb668('0x121')](db['ChatInteraction'],{});db[_0xb668('0xd3')][_0xb668('0x121')](db['ChatMessage'],{});db['ChatQueueReport'][_0xb668('0x121')](db[_0xb668('0x13')],{});db['ChatQueueReport'][_0xb668('0x121')](db[_0xb668('0x64')],{});db[_0xb668('0xd4')]['belongsTo'](db[_0xb668('0x13')],{'onDelete':'cascade','foreignKey':_0xb668('0x1c4')});db[_0xb668('0xd4')][_0xb668('0x121')](db['User'],{'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1c5')});db[_0xb668('0x1c6')][_0xb668('0x114')](db[_0xb668('0x1c7')],{'foreignKey':_0xb668('0x1c8'),'onDelete':_0xb668('0x112')});db[_0xb668('0x1c6')][_0xb668('0x114')](db[_0xb668('0xd5')],{'foreignKey':_0xb668('0x1c8'),'onDelete':_0xb668('0x112')});db[_0xb668('0xd9')][_0xb668('0x121')](db['SmsAccount'],{});db[_0xb668('0xd9')][_0xb668('0x121')](db[_0xb668('0x127')],{'as':_0xb668('0x165'),'foreignKey':_0xb668('0x166')});db[_0xb668('0xd9')]['belongsTo'](db[_0xb668('0x6c')],{'as':'Contact','foreignKey':_0xb668('0x15c')});db[_0xb668('0xd9')][_0xb668('0x121')](db[_0xb668('0x4e')],{});db[_0xb668('0xd9')]['belongsTo'](db[_0xb668('0x4f')],{});db[_0xb668('0xd9')][_0xb668('0x121')](db[_0xb668('0x13')],{});db[_0xb668('0xd9')][_0xb668('0x121')](db[_0xb668('0x51')],{});db['JscriptyProject']['hasMany'](db['JscriptySessionReport'],{'foreignKey':'ProjectId'});db[_0xb668('0x1c9')]['hasMany'](db['JscriptyQuestionReport'],{'foreignKey':_0xb668('0x1ca')});db['JscriptyProject'][_0xb668('0x114')](db[_0xb668('0xd5')],{'foreignKey':_0xb668('0x1ca')});db[_0xb668('0xe0')]['belongsToMany'](db['User'],{'as':_0xb668('0x16f'),'through':_0xb668('0x144')});db[_0xb668('0xe5')]['belongsToMany'](db[_0xb668('0x13')],{'as':_0xb668('0x169'),'through':'user_has_teams'});db['Team'][_0xb668('0x123')](db['VoiceQueue'],{'through':'TeamVoiceQueue','as':_0xb668('0x130')});db[_0xb668('0xe5')][_0xb668('0x123')](db['MailQueue'],{'through':_0xb668('0x16a'),'as':_0xb668('0x133')});db[_0xb668('0xe5')][_0xb668('0x123')](db['ChatQueue'],{'through':'team_has_chat_queues','as':'ChatQueues'});db[_0xb668('0xe5')]['belongsToMany'](db[_0xb668('0x49')],{'through':'team_has_fax_queues','as':_0xb668('0x135')});db[_0xb668('0xe5')][_0xb668('0x123')](db[_0xb668('0x51')],{'through':_0xb668('0x189'),'as':_0xb668('0x136')});db[_0xb668('0xe5')][_0xb668('0x123')](db[_0xb668('0x5a')],{'through':_0xb668('0x1cb'),'as':_0xb668('0x1cc')});db[_0xb668('0xe5')][_0xb668('0x123')](db[_0xb668('0x108')],{'through':'team_has_whatsapp_queues','as':_0xb668('0x1cd')});db[_0xb668('0xe5')][_0xb668('0x123')](db['VoicePrefix'],{'through':_0xb668('0x1ce'),'as':_0xb668('0x131')});db['Campaign'][_0xb668('0x114')](db[_0xb668('0x6e')],{'as':_0xb668('0x14a'),'foreignKey':_0xb668('0x19b')});db[_0xb668('0xe9')][_0xb668('0x114')](db[_0xb668('0x119')],{'as':_0xb668('0x11a'),'foreignKey':_0xb668('0x19b')});db[_0xb668('0xe9')][_0xb668('0x114')](db['CmHopperHistory'],{'as':'HopperHistories','foreignKey':_0xb668('0x19b')});db[_0xb668('0xe9')][_0xb668('0x114')](db[_0xb668('0x70')],{'as':'HopperBlacks','foreignKey':'CampaignId'});db['Campaign'][_0xb668('0x121')](db[_0xb668('0x26')],{'as':_0xb668('0x26'),'foreignKey':_0xb668('0x14f')});db['Campaign'][_0xb668('0x121')](db[_0xb668('0x26')],{'as':'TrunkBackup','foreignKey':_0xb668('0x1cf')});db[_0xb668('0xe9')]['belongsTo'](db[_0xb668('0x80')],{'as':_0xb668('0x80'),'foreignKey':_0xb668('0x18c')});db[_0xb668('0xe9')][_0xb668('0x121')](db[_0xb668('0xe0')],{'as':_0xb668('0xe0'),'foreignKey':_0xb668('0x1d0')});db[_0xb668('0xe9')][_0xb668('0x123')](db[_0xb668('0x127')],{'as':'Lists','through':_0xb668('0x1d1')});db['Campaign'][_0xb668('0x123')](db[_0xb668('0x127')],{'as':_0xb668('0x151'),'through':_0xb668('0x1d2')});db[_0xb668('0x170')][_0xb668('0x121')](db[_0xb668('0x62')],{'as':'ChatOfflineMessage','foreignKey':'ChatOfflineMessageId'});db[_0xb668('0xee')][_0xb668('0x121')](db[_0xb668('0x3d')],{});db[_0xb668('0xee')][_0xb668('0x121')](db[_0xb668('0x3b')],{});db[_0xb668('0xee')][_0xb668('0x121')](db['MailAccount'],{'foreignKey':_0xb668('0x1d3'),'as':_0xb668('0x1d4')});db[_0xb668('0xee')]['belongsTo'](db['User'],{'foreignKey':_0xb668('0x1d5'),'as':'FromAgent'});db[_0xb668('0xee')][_0xb668('0x121')](db[_0xb668('0x13')],{'foreignKey':'ToUserId','as':'ToAgent'});db[_0xb668('0xee')][_0xb668('0x121')](db[_0xb668('0x132')],{'foreignKey':_0xb668('0x1d6'),'as':'ToQueue'});db[_0xb668('0xee')][_0xb668('0x121')](db[_0xb668('0x15d')],{'foreignKey':_0xb668('0x1d7'),'as':_0xb668('0x1d8')});db[_0xb668('0xef')][_0xb668('0x121')](db[_0xb668('0x60')],{});db[_0xb668('0xef')][_0xb668('0x121')](db[_0xb668('0x5e')],{});db[_0xb668('0xef')][_0xb668('0x121')](db['ChatWebsite'],{'foreignKey':'FromChatWebsiteId','as':_0xb668('0x1d4')});db[_0xb668('0xef')][_0xb668('0x121')](db[_0xb668('0x13')],{'foreignKey':_0xb668('0x1d5'),'as':_0xb668('0x1d9')});db[_0xb668('0xef')][_0xb668('0x121')](db[_0xb668('0x13')],{'foreignKey':_0xb668('0x1da'),'as':'ToAgent'});db['ChatTransferReport'][_0xb668('0x121')](db[_0xb668('0x64')],{'foreignKey':_0xb668('0x1db'),'as':_0xb668('0x1dc')});db[_0xb668('0xef')]['belongsTo'](db['ChatWebsite'],{'foreignKey':'ToChatWebsiteId','as':'ToAccount'});db[_0xb668('0x1dd')]['belongsTo'](db[_0xb668('0x17b')],{});db['FaxTransferReport']['belongsTo'](db[_0xb668('0x46')],{});db['FaxTransferReport'][_0xb668('0x121')](db['FaxAccount'],{'foreignKey':_0xb668('0x1de'),'as':'FromAccount'});db[_0xb668('0x1dd')][_0xb668('0x121')](db[_0xb668('0x13')],{'foreignKey':_0xb668('0x1d5'),'as':_0xb668('0x1d9')});db['FaxTransferReport'][_0xb668('0x121')](db['User'],{'foreignKey':_0xb668('0x1da'),'as':_0xb668('0x1df')});db[_0xb668('0x1dd')][_0xb668('0x121')](db[_0xb668('0x49')],{'foreignKey':'ToFaxQueueId','as':_0xb668('0x1dc')});db[_0xb668('0x1dd')][_0xb668('0x121')](db[_0xb668('0x44')],{'foreignKey':'ToFaxAccountId','as':_0xb668('0x1d8')});db[_0xb668('0xf2')]['belongsTo'](db[_0xb668('0x59')],{});db[_0xb668('0xf2')][_0xb668('0x121')](db[_0xb668('0x57')],{});db[_0xb668('0xf2')]['belongsTo'](db['OpenchannelAccount'],{'foreignKey':'FromOpenchannelAccountId','as':_0xb668('0x1d4')});db[_0xb668('0xf2')][_0xb668('0x121')](db['User'],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0xb668('0xf2')][_0xb668('0x121')](db[_0xb668('0x13')],{'foreignKey':_0xb668('0x1da'),'as':'ToAgent'});db[_0xb668('0xf2')][_0xb668('0x121')](db['OpenchannelQueue'],{'foreignKey':_0xb668('0x1e0'),'as':'ToQueue'});db[_0xb668('0xf2')]['belongsTo'](db['OpenchannelAccount'],{'foreignKey':_0xb668('0x1e1'),'as':_0xb668('0x1d8')});db[_0xb668('0xf3')][_0xb668('0x121')](db[_0xb668('0x4f')],{});db[_0xb668('0xf3')]['belongsTo'](db[_0xb668('0x4e')],{});db[_0xb668('0xf3')][_0xb668('0x121')](db[_0xb668('0x13f')],{'foreignKey':'FromSmsAccountId','as':_0xb668('0x1d4')});db[_0xb668('0xf3')][_0xb668('0x121')](db[_0xb668('0x13')],{'foreignKey':_0xb668('0x1d5'),'as':_0xb668('0x1d9')});db[_0xb668('0xf3')]['belongsTo'](db['User'],{'foreignKey':_0xb668('0x1da'),'as':_0xb668('0x1df')});db[_0xb668('0xf3')][_0xb668('0x121')](db['SmsQueue'],{'foreignKey':_0xb668('0x1e2'),'as':'ToQueue'});db[_0xb668('0xf3')][_0xb668('0x121')](db[_0xb668('0x13f')],{'foreignKey':_0xb668('0x1e3'),'as':'ToAccount'});db['CmList'][_0xb668('0x114')](db[_0xb668('0x7c')],{'as':_0xb668('0x160'),'foreignKey':_0xb668('0x166'),'onDelete':_0xb668('0x112')});db['CmList'][_0xb668('0x114')](db['CmCustomField'],{'as':_0xb668('0x1e4'),'foreignKey':_0xb668('0x166')});db[_0xb668('0x127')][_0xb668('0x114')](db[_0xb668('0x6c')],{'as':_0xb668('0x126'),'onDelete':'cascade','foreignKey':'ListId'});db[_0xb668('0x127')]['hasMany'](db['CmHopperFinal'],{'as':'HopperFinals','foreignKey':'ListId'});db[_0xb668('0x127')][_0xb668('0x114')](db[_0xb668('0x72')],{'as':_0xb668('0x1e5'),'foreignKey':_0xb668('0x166')});db[_0xb668('0x127')]['hasMany'](db[_0xb668('0x74')],{'as':_0xb668('0x74'),'foreignKey':_0xb668('0x166')});db[_0xb668('0x127')]['belongsToMany'](db[_0xb668('0x12f')],{'as':_0xb668('0x1e6'),'through':'voice_queues_has_cm_lists'});db[_0xb668('0x127')]['belongsToMany'](db['User'],{'as':_0xb668('0x169'),'through':_0xb668('0x129')});db['VoicePrefix']['hasMany'](db[_0xb668('0x19')],{'as':_0xb668('0x118'),'onDelete':'cascade'});db[_0xb668('0xf5')][_0xb668('0x123')](db[_0xb668('0x13')],{'as':_0xb668('0x169'),'through':_0xb668('0x10e')});db[_0xb668('0xf5')][_0xb668('0x123')](db['Team'],{'through':'TeamVoicePrefix','as':_0xb668('0x16b')});db['UserProfile']['hasMany'](db[_0xb668('0x13')],{'as':_0xb668('0x16f'),'foreignKey':_0xb668('0x122')});db[_0xb668('0xf7')][_0xb668('0x114')](db[_0xb668('0xf9')],{'as':_0xb668('0x1e7'),'foreignKey':_0xb668('0x122'),'onDelete':_0xb668('0x112')});db[_0xb668('0xf9')][_0xb668('0x114')](db[_0xb668('0xfb')],{'as':_0xb668('0x1e8'),'foreignKey':_0xb668('0x1e9'),'onDelete':_0xb668('0x112')});db[_0xb668('0xfe')]['hasMany'](db['Disposition'],{'as':_0xb668('0x160'),'foreignKey':_0xb668('0x1ea'),'onDelete':'cascade'});db[_0xb668('0xfe')][_0xb668('0x114')](db[_0xb668('0x162')],{'as':_0xb668('0x163'),'foreignKey':_0xb668('0x1ea')});db[_0xb668('0xfe')][_0xb668('0x114')](db[_0xb668('0x103')],{'as':_0xb668('0x154'),'foreignKey':'WhatsappAccountId'});db[_0xb668('0xfe')]['hasMany'](db[_0xb668('0x101')],{'as':_0xb668('0x164')});db[_0xb668('0xfe')][_0xb668('0x114')](db[_0xb668('0xff')],{'as':_0xb668('0x147')});db['WhatsappAccount'][_0xb668('0x121')](db[_0xb668('0x127')],{'as':_0xb668('0x165'),'foreignKey':_0xb668('0x166')});db['WhatsappAccount'][_0xb668('0x121')](db[_0xb668('0x81')],{'as':_0xb668('0x168'),'foreignKey':_0xb668('0x17c')});db[_0xb668('0xfe')]['belongsToMany'](db[_0xb668('0x13')],{'as':'Agents','through':_0xb668('0x143')});db['WhatsappApplication'][_0xb668('0x121')](db[_0xb668('0x13')],{'onDelete':_0xb668('0x176')});db[_0xb668('0xff')][_0xb668('0x121')](db[_0xb668('0x108')],{'onDelete':_0xb668('0x176')});db[_0xb668('0xff')][_0xb668('0x121')](db[_0xb668('0xfe')],{'onDelete':_0xb668('0x176')});db[_0xb668('0xff')]['belongsTo'](db[_0xb668('0x80')],{'onDelete':_0xb668('0x176'),'foreignKey':_0xb668('0x18c')});db['WhatsappApplication'][_0xb668('0x121')](db[_0xb668('0x89')],{'onDelete':'restrict','foreignKey':_0xb668('0x177')});db[_0xb668('0x101')]['hasMany'](db[_0xb668('0x103')],{'as':_0xb668('0x154'),'onDelete':_0xb668('0x112'),'foreignKey':_0xb668('0x1eb')});db[_0xb668('0x101')][_0xb668('0x121')](db[_0xb668('0xfe')],{'as':_0xb668('0x173'),'foreignKey':_0xb668('0x1ea')});db['WhatsappInteraction'][_0xb668('0x121')](db[_0xb668('0x6c')],{'as':_0xb668('0x15b'),'foreignKey':_0xb668('0x15c')});db[_0xb668('0x101')][_0xb668('0x121')](db['User'],{'as':_0xb668('0x16d'),'foreignKey':'UserId'});db[_0xb668('0x101')][_0xb668('0x123')](db[_0xb668('0x89')],{'through':'whatsapp_interaction_has_tags','as':_0xb668('0x180')});db[_0xb668('0x101')][_0xb668('0x123')](db[_0xb668('0x89')],{'through':_0xb668('0x1ad'),'as':'ThroughTags'});db[_0xb668('0x101')][_0xb668('0x123')](db[_0xb668('0x13')],{'as':_0xb668('0x16f'),'through':'user_has_whatsapp_interactions','foreignKey':_0xb668('0x1eb')});db[_0xb668('0x103')][_0xb668('0x121')](db[_0xb668('0x13')],{'as':_0xb668('0x13')});db['WhatsappMessage'][_0xb668('0x121')](db[_0xb668('0x6c')],{'onDelete':_0xb668('0x112'),'as':_0xb668('0x15b')});db['WhatsappMessage'][_0xb668('0x121')](db[_0xb668('0x101')],{'onDelete':_0xb668('0x112'),'as':'Interaction','foreignKey':_0xb668('0x1eb')});db[_0xb668('0x103')]['belongsTo'](db['WhatsappAccount'],{'as':_0xb668('0x173'),'foreignKey':'WhatsappAccountId'});db[_0xb668('0x1ec')][_0xb668('0x121')](db[_0xb668('0xfe')],{});db['WhatsappQueueReport'][_0xb668('0x121')](db[_0xb668('0x127')],{'as':_0xb668('0x165'),'foreignKey':_0xb668('0x166')});db[_0xb668('0x1ec')][_0xb668('0x121')](db[_0xb668('0x6c')],{'as':_0xb668('0x15b'),'foreignKey':_0xb668('0x15c')});db[_0xb668('0x1ec')][_0xb668('0x121')](db[_0xb668('0x101')],{});db[_0xb668('0x1ec')][_0xb668('0x121')](db['WhatsappQueue'],{});db[_0xb668('0x1ec')][_0xb668('0x121')](db[_0xb668('0x103')],{});db[_0xb668('0x1ec')][_0xb668('0x121')](db['User'],{});db[_0xb668('0x106')][_0xb668('0x121')](db[_0xb668('0x103')],{});db[_0xb668('0x106')]['belongsTo'](db['WhatsappInteraction'],{});db['WhatsappTransferReport'][_0xb668('0x121')](db[_0xb668('0xfe')],{'foreignKey':'FromWhatsappAccountId','as':_0xb668('0x1d4')});db['WhatsappTransferReport']['belongsTo'](db['WhatsappAccount'],{'foreignKey':_0xb668('0x1ed'),'as':_0xb668('0x1d8')});db['WhatsappTransferReport'][_0xb668('0x121')](db[_0xb668('0x108')],{'foreignKey':_0xb668('0x1ee'),'as':'ToQueue'});db['WhatsappTransferReport'][_0xb668('0x121')](db[_0xb668('0x13')],{'foreignKey':_0xb668('0x1d5'),'as':_0xb668('0x1d9')});db['WhatsappTransferReport'][_0xb668('0x121')](db['User'],{'foreignKey':_0xb668('0x1da'),'as':_0xb668('0x1df')});db[_0xb668('0x108')][_0xb668('0x123')](db[_0xb668('0x13')],{'as':_0xb668('0x169'),'through':_0xb668('0x37'),'foreignKey':'WhatsappQueueId'});db['WhatsappQueue']['belongsToMany'](db[_0xb668('0xe5')],{'through':_0xb668('0x1ef'),'as':_0xb668('0x16b')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x5ff3=['ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','../api/interval/interval.model','../api/pause/pause.model','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','../api/trigger/trigger.model','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Network','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','Campaign','../api/migration/migration.model','Attachment','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','../api/userVoicePrefix/userVoicePrefix.model','hasOne','cascade','UserId','hasMany','Recordings','VoiceQueuesRt','Extensions','HopperFinals','HopperHistory','OpenchannelInteractions','FaxInteraction','FaxInteractions','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsTo','userProfileId','belongsToMany','Groups','chat_group_has_users','Contacts','cm_user_has_contacts','CmList','Lists','cm_user_has_lists','user_has_mail_interactions','ChatInteraction','user_has_chat_interactions','SmsInteractions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueue','VoiceQueues','VoicePrefixes','UserVoicePrefix','MailQueue','MailQueues','ChatQueues','SmsQueues','WhatsappQueues','UserWhatsappQueue','ChatWebsites','FaxAccount','FaxAccounts','MailAccount','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','SquareProjects','user_has_square_projects','SpiedAgents','ChanSpyId','Applications','VoiceMusicOnHold','Sounds','moh_has_sounds','UserVoiceQueueRt','Members','VoiceQueueId','CmHopper','Hoppers','HopperHistories','HopperBlacks','JscriptySessions','TrunkId','TrunkBackupId','IntervalId','Pause','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Agents','Messages','mailboxuser','mailbox','VoiceCallReport','CmContact','ContactId','MailAccountId','Imap','Dispositions','Answers','Interactions','List','Template','TemplateId','UserMailQueue','team_has_mail_queues','Teams','MailInteractionId','Account','Owner','Tags','mail_interaction_has_tags','ThroughTags','Users','MailMessage','Attachments','Contact','Interaction','ChatOfflineMessage','ChatOfflineMessageId','restrict','TagId','Items','FaxAccountId','Exntensions','ListId','user_has_fax_accounts','FaxQueue','FaxInteractionId','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccount','SmsAccountId','sms_interaction_has_tags','SmsInteractionId','team_has_sms_queues','OpenchannelAccount','OpenchannelAccountId','OpenchannelMessage','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','ChatWebsiteId','ProactiveActions','ChatMessage','user_has_chat_websites','Agent','ChatQueueId','ChatInteractionId','team_has_chat_queues','ChatGroup','ChatInternalMessage','Website','ChatInteractions','CompanyId','cm_contact_has_tags','Queue','CampaignId','All','AutomationAllId','Any','OneAny','AutomationAnyId','Actions','AutomationId','MailApplications','ChatApplications','FaxApplications','DefaultReportId','AnalyticCustomReport','CustomReportId','chat_interaction_has_tags','whatsapp_interaction_has_tags','Trigger','AllConditions','AllCondition','TriggerAllId','AnyConditions','TriggerAnyId','TriggerId','Fields','MetricId','Configurations','AccountId','Subjects','SubjectId','Descriptions','FieldId','Subject','Description','DescriptionId','Field','VariableId','DeskConfiguration','ZohoConfiguration','int_zendesk_configuration_has_tags','int_freshdesk_configuration_has_tags','VtigerConfiguration','ServicenowConfiguration','FromId','ToId','SessionId','ProjectId','FaxQueues','team_has_openchannel_queues','SquareProjectId','campaigns_has_cm_lists','BlackLists','campaigns_has_cm_blacklists','FromAccount','ToUserId','ToMailQueueId','ToMailAccountId','ToAccount','ChatTransferReport','FromChatWebsiteId','FromUserId','ToChatQueueId','ToQueue','ToChatWebsiteId','FromFaxAccountId','ToAgent','OpenchannelTransferReport','FromOpenchannelAccountId','FromAgent','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','UserProfileSection','Resources','WhatsappAccountId','WhatsappApplication','WhatsappInteractionId','FromWhatsappAccountId','ToQueueId','team_has_whatsapp_queues','exports','sequelize','jstz','defaultsDeep','motion2','xC@LL1234','127.0.0.1','mysql','utf8mb4','name','utf8_general_ci','sequelizeHistory','username','password','database','options','User','import','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','VoiceExtension','../api/voiceExtension/voiceExtension.model','../api/voiceMusicOnHold/voiceMusicOnHold.model','../api/voiceQueue/voiceQueue.model','VoiceRecording','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','VoiceAgentReport','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','../api/mailAccount/mailAccount.model','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatInteraction/chatInteraction.model','../api/chatMessage/chatMessage.model','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','../api/cmContact/cmContact.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','CmHopperHistory'];(function(_0x291f8b,_0x3b5591){var _0x275171=function(_0xb33d67){while(--_0xb33d67){_0x291f8b['push'](_0x291f8b['shift']());}};_0x275171(++_0x3b5591);}(_0x5ff3,0x17d));var _0x35ff=function(_0x805dcb,_0x1c9b0c){_0x805dcb=_0x805dcb-0x0;var _0x1abd17=_0x5ff3[_0x805dcb];return _0x1abd17;};'use strict';var config=require('../config/environment');var Sequelize=require(_0x35ff('0x0'));var _=require('lodash');var jstz=require(_0x35ff('0x1'));var timezone=jstz['determine']();config[_0x35ff('0x0')]=_[_0x35ff('0x2')](config[_0x35ff('0x0')],{'database':_0x35ff('0x3'),'username':'xcall','password':_0x35ff('0x4'),'options':{'host':_0x35ff('0x5'),'port':0xcea,'dialect':_0x35ff('0x6'),'dialectOptions':{'charset':_0x35ff('0x7')},'logging':![],'timezone':timezone[_0x35ff('0x8')](),'define':{'charset':'utf8','collate':_0x35ff('0x9')}}});config['sequelizeHistory']=_[_0x35ff('0x2')](config[_0x35ff('0xa')],{'database':_0x35ff('0x3'),'username':'xcall','password':_0x35ff('0x4'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x35ff('0x6'),'dialectOptions':{'charset':_0x35ff('0x7')},'logging':![],'timezone':timezone['name'](),'define':{'charset':'utf8','collate':_0x35ff('0x9')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize']['database'],config['sequelize'][_0x35ff('0xb')],config[_0x35ff('0x0')][_0x35ff('0xc')],config[_0x35ff('0x0')]['options'])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x35ff('0xa')][_0x35ff('0xd')],config[_0x35ff('0xa')]['username'],config[_0x35ff('0xa')][_0x35ff('0xc')],config[_0x35ff('0xa')][_0x35ff('0xe')])};db[_0x35ff('0xf')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x11'));db[_0x35ff('0x12')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x13'));db[_0x35ff('0x14')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/voiceContext/voiceContext.model');db[_0x35ff('0x15')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x16'));db['VoiceMusicOnHold']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x17'));db['VoiceQueue']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x18'));db[_0x35ff('0x19')]=db['sequelize'][_0x35ff('0x10')]('../api/voiceRecording/voiceRecording.model');db[_0x35ff('0x1a')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x1b'));db[_0x35ff('0x1c')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/voiceMail/voiceMail.model');db[_0x35ff('0x1d')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x1e'));db['VoiceCallReport']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x1f'));db[_0x35ff('0x20')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/voiceDialReport/voiceDialReport.model');db[_0x35ff('0x21')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/voiceAgentReport/voiceAgentReport.model');db[_0x35ff('0x22')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x23'));db[_0x35ff('0x24')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x25'));db[_0x35ff('0x26')]=db['sequelize'][_0x35ff('0x10')]('../api/trunk/trunk.model');db[_0x35ff('0x27')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x28'));db['UserVoiceQueueRt']=db[_0x35ff('0x0')]['import'](_0x35ff('0x29'));db[_0x35ff('0x2a')]=db['sequelize']['import'](_0x35ff('0x2b'));db[_0x35ff('0x2c')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x2d'));db['UserMailQueue']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x2e'));db[_0x35ff('0x2f')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x30'));db[_0x35ff('0x31')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x32'));db[_0x35ff('0x33')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x34'));db['UserWhatsappQueue']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x35'));db[_0x35ff('0x36')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x37'));db[_0x35ff('0x38')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x39'));db['MailAccount']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x3a'));db['MailQueue']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x3b'));db[_0x35ff('0x3c')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x3d'));db[_0x35ff('0x3e')]=db[_0x35ff('0x0')]['import']('../api/mailInteraction/mailInteraction.model');db['MailMessage']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x3f'));db[_0x35ff('0x40')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x41'));db[_0x35ff('0x42')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x43'));db[_0x35ff('0x44')]=db['sequelize']['import'](_0x35ff('0x45'));db[_0x35ff('0x46')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/dashboardItem/dashboardItem.model');db['FaxAccount']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x47'));db[_0x35ff('0x48')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x49'));db['FaxInteraction']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x4a'));db[_0x35ff('0x4b')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x4c'));db['FaxQueue']=db['sequelize'][_0x35ff('0x10')]('../api/faxQueue/faxQueue.model');db[_0x35ff('0x4d')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x4e'));db['SmsAccount']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x4f'));db[_0x35ff('0x50')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x51'));db[_0x35ff('0x52')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x53'));db[_0x35ff('0x54')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x55'));db[_0x35ff('0x56')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/smsQueue/smsQueue.model');db['OpenchannelAccount']=db[_0x35ff('0x0')]['import'](_0x35ff('0x57'));db[_0x35ff('0x58')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x59'));db[_0x35ff('0x5a')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x5b'));db['OpenchannelMessage']=db['sequelize'][_0x35ff('0x10')]('../api/openchannelMessage/openchannelMessage.model');db[_0x35ff('0x5c')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x5d'));db[_0x35ff('0x5e')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x5f'));db[_0x35ff('0x60')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x61'));db[_0x35ff('0x62')]=db[_0x35ff('0x0')]['import']('../api/chatApplication/chatApplication.model');db['ChatInteraction']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x63'));db['ChatMessage']=db[_0x35ff('0x0')]['import'](_0x35ff('0x64'));db['ChatOfflineMessage']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x65'));db[_0x35ff('0x66')]=db['sequelize']['import'](_0x35ff('0x67'));db['ChatGroup']=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/chatGroup/chatGroup.model');db[_0x35ff('0x68')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x69'));db[_0x35ff('0x6a')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x6b'));db['CmContact']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x6c'));db['CmHopper']=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/cmHopper/cmHopper.model');db[_0x35ff('0x6d')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x6e'));db[_0x35ff('0x6f')]=db['sequelize']['import']('../api/cmHopperFinal/cmHopperFinal.model');db[_0x35ff('0x70')]=db['sequelize'][_0x35ff('0x10')]('../api/cmHopperHistory/cmHopperHistory.model');db[_0x35ff('0x71')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x72'));db[_0x35ff('0x73')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x74'));db[_0x35ff('0x75')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x76'));db[_0x35ff('0x77')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x78'));db[_0x35ff('0x79')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/cannedAnswer/cannedAnswer.model');db[_0x35ff('0x7a')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x7b'));db[_0x35ff('0x7c')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x7d'));db[_0x35ff('0x7e')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x7f'));db['Pause']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x80'));db['Cdr']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x81'));db[_0x35ff('0x82')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x83'));db[_0x35ff('0x84')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x85'));db[_0x35ff('0x86')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x87'));db[_0x35ff('0x88')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x89'));db['Template']=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/template/template.model');db['Trigger']=db[_0x35ff('0x0')]['import'](_0x35ff('0x8a'));db[_0x35ff('0x8b')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x8c'));db[_0x35ff('0x8d')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x8e'));db['IntegrationReport']=db[_0x35ff('0x0')]['import'](_0x35ff('0x8f'));db['AnalyticCustomReport']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x90'));db[_0x35ff('0x91')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x92'));db[_0x35ff('0x93')]=db['sequelize']['import'](_0x35ff('0x94'));db[_0x35ff('0x95')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x96'));db[_0x35ff('0x97')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x98'));db[_0x35ff('0x99')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x9a'));db[_0x35ff('0x9b')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/intSalesforceAccount/intSalesforceAccount.model');db[_0x35ff('0x9c')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x9d'));db[_0x35ff('0x9e')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/intSalesforceField/intSalesforceField.model');db[_0x35ff('0x9f')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xa0'));db[_0x35ff('0xa1')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model');db[_0x35ff('0xa2')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xa3'));db[_0x35ff('0xa4')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/intDeskAccount/intDeskAccount.model');db['DeskConfiguration']=db[_0x35ff('0x0')]['import'](_0x35ff('0xa5'));db[_0x35ff('0xa6')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xa7'));db[_0x35ff('0xa8')]=db[_0x35ff('0x0')]['import'](_0x35ff('0xa9'));db['ZohoConfiguration']=db[_0x35ff('0x0')]['import'](_0x35ff('0xaa'));db[_0x35ff('0xab')]=db[_0x35ff('0x0')]['import']('../api/intZohoField/intZohoField.model');db[_0x35ff('0xac')]=db[_0x35ff('0x0')]['import'](_0x35ff('0xad'));db[_0x35ff('0xae')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xaf'));db[_0x35ff('0xb0')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xb1'));db[_0x35ff('0xb2')]=db[_0x35ff('0x0')]['import'](_0x35ff('0xb3'));db[_0x35ff('0xb4')]=db['sequelize'][_0x35ff('0x10')]('../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model');db[_0x35ff('0xb5')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xb6'));db[_0x35ff('0xb7')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xb8'));db['VtigerConfiguration']=db[_0x35ff('0x0')]['import'](_0x35ff('0xb9'));db[_0x35ff('0xba')]=db[_0x35ff('0x0')]['import'](_0x35ff('0xbb'));db[_0x35ff('0xbc')]=db['sequelize'][_0x35ff('0x10')]('../api/intServicenowAccount/intServicenowAccount.model');db['ServicenowConfiguration']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xbd'));db[_0x35ff('0xbe')]=db['sequelize']['import']('../api/intServicenowField/intServicenowField.model');db[_0x35ff('0xbf')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xc0'));db[_0x35ff('0xc1')]=db[_0x35ff('0x0')]['import']('../api/intDynamics365Configuration/intDynamics365Configuration.model');db[_0x35ff('0xc2')]=db['sequelize']['import'](_0x35ff('0xc3'));db[_0x35ff('0xc4')]=db['sequelize']['import']('../api/intFreshsalesAccount/intFreshsalesAccount.model');db[_0x35ff('0xc5')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xc6'));db[_0x35ff('0xc7')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xc8'));db[_0x35ff('0x8d')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x8e'));db[_0x35ff('0xc9')]=db['sequelize']['import'](_0x35ff('0xca'));db[_0x35ff('0xcb')]=db[_0x35ff('0x0')]['import'](_0x35ff('0xcc'));db['ChatInternalMessage']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xcd'));db[_0x35ff('0xce')]=db['sequelize']['import'](_0x35ff('0xcf'));db[_0x35ff('0xd0')]=db[_0x35ff('0x0')]['import'](_0x35ff('0xd1'));db[_0x35ff('0xd2')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xd3'));db[_0x35ff('0xd4')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xd5'));db[_0x35ff('0xd6')]=db[_0x35ff('0x0')]['import']('../api/squareReport/squareReport.model');db[_0x35ff('0xd7')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xd8'));db[_0x35ff('0xd9')]=db[_0x35ff('0x0')]['import'](_0x35ff('0xda'));db[_0x35ff('0xdb')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/setting/setting.model');db[_0x35ff('0xdc')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xdd'));db[_0x35ff('0xde')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xdf'));db[_0x35ff('0xe0')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xe1'));db['SquareMessage']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xe2'));db[_0x35ff('0xe3')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xe4'));db[_0x35ff('0xe5')]=db[_0x35ff('0x0')]['import']('../api/license/license.model');db[_0x35ff('0xe6')]=db['sequelize'][_0x35ff('0x10')]('../api/campaign/campaign.model');db['Migration']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xe7'));db[_0x35ff('0xe8')]=db[_0x35ff('0x0')]['import']('../api/attachment/attachment.model');db[_0x35ff('0xe9')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xea'));db[_0x35ff('0xeb')]=db[_0x35ff('0x0')]['import']('../api/mailTransferReport/mailTransferReport.model');db['ChatTransferReport']=db[_0x35ff('0x0')]['import'](_0x35ff('0xec'));db[_0x35ff('0xed')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xee'));db['OpenchannelTransferReport']=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0x35ff('0xef')]=db['sequelize']['import'](_0x35ff('0xf0'));db['CmList']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xf1'));db[_0x35ff('0xf2')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xf3'));db[_0x35ff('0xf4')]=db[_0x35ff('0x0')]['import'](_0x35ff('0xf5'));db['UserProfileSection']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xf6'));db[_0x35ff('0xf7')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xf8'));db[_0x35ff('0xf9')]=db['sequelize'][_0x35ff('0x10')]('../api/userNotification/userNotification.model');db[_0x35ff('0xfa')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xfb'));db['WhatsappApplication']=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/whatsappApplication/whatsappApplication.model');db[_0x35ff('0xfc')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xfd'));db[_0x35ff('0xfe')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xff'));db[_0x35ff('0x100')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x101'));db[_0x35ff('0x102')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x103'));db[_0x35ff('0x104')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/whatsappQueue/whatsappQueue.model');db[_0x35ff('0x105')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x106'));db[_0x35ff('0x107')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/teamVoiceQueue/teamVoiceQueue.model');db[_0x35ff('0x108')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x109'));db['UserVoicePrefix']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x10a'));db[_0x35ff('0xf')][_0x35ff('0x10b')](db[_0x35ff('0x1c')],{'as':'VoiceMail','onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x10d')});db[_0x35ff('0xf')][_0x35ff('0x10e')](db['VoiceRecording'],{'as':_0x35ff('0x10f'),'foreignKey':_0x35ff('0x10d')});db[_0x35ff('0xf')][_0x35ff('0x10e')](db['UserVoiceQueueRt'],{'as':_0x35ff('0x110'),'foreignKey':'UserId'});db[_0x35ff('0xf')][_0x35ff('0x10e')](db['VoiceExtension'],{'as':_0x35ff('0x111'),'onDelete':_0x35ff('0x10c'),'hooks':!![]});db['User'][_0x35ff('0x10e')](db['CmHopperFinal'],{'as':_0x35ff('0x112'),'foreignKey':_0x35ff('0x10d')});db[_0x35ff('0xf')]['hasMany'](db[_0x35ff('0x70')],{'as':_0x35ff('0x113'),'foreignKey':_0x35ff('0x10d')});db['User'][_0x35ff('0x10e')](db[_0x35ff('0x71')],{'as':_0x35ff('0x71'),'foreignKey':_0x35ff('0x10d')});db[_0x35ff('0xf')]['hasMany'](db[_0x35ff('0x5a')],{'as':_0x35ff('0x114'),'foreignKey':'UserId'});db[_0x35ff('0xf')][_0x35ff('0x10e')](db['ChatInteraction'],{'as':'ChatInteractions','foreignKey':'UserId'});db[_0x35ff('0xf')]['hasMany'](db[_0x35ff('0x52')],{'as':'SmsInteractions','foreignKey':_0x35ff('0x10d')});db[_0x35ff('0xf')][_0x35ff('0x10e')](db[_0x35ff('0x115')],{'as':_0x35ff('0x116'),'foreignKey':_0x35ff('0x10d')});db['User']['hasMany'](db[_0x35ff('0x3e')],{'as':_0x35ff('0x117'),'foreignKey':_0x35ff('0x10d')});db[_0x35ff('0xf')]['hasMany'](db['WhatsappInteraction'],{'as':_0x35ff('0x118'),'foreignKey':_0x35ff('0x10d')});db['User'][_0x35ff('0x10e')](db['UserNotification'],{'as':_0x35ff('0x119'),'foreignKey':_0x35ff('0x11a')});db[_0x35ff('0xf')][_0x35ff('0x11b')](db['UserProfile'],{'as':_0x35ff('0xf4'),'foreignKey':_0x35ff('0x11c')});db['User'][_0x35ff('0x11d')](db['ChatGroup'],{'as':_0x35ff('0x11e'),'through':_0x35ff('0x11f')});db['User']['belongsToMany'](db['CmContact'],{'as':_0x35ff('0x120'),'through':_0x35ff('0x121')});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0x122')],{'as':_0x35ff('0x123'),'through':_0x35ff('0x124')});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0xe3')],{'through':'user_has_teams'});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0x3e')],{'as':_0x35ff('0x117'),'through':_0x35ff('0x125')});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0x126')],{'as':'ChatInteractions','through':_0x35ff('0x127')});db['User'][_0x35ff('0x11d')](db[_0x35ff('0x115')],{'as':_0x35ff('0x116'),'through':'user_has_fax_interactions'});db['User']['belongsToMany'](db[_0x35ff('0x52')],{'as':_0x35ff('0x128'),'through':_0x35ff('0x129')});db[_0x35ff('0xf')]['belongsToMany'](db[_0x35ff('0x5a')],{'as':_0x35ff('0x114'),'through':_0x35ff('0x12a')});db['User']['belongsToMany'](db[_0x35ff('0xfc')],{'as':_0x35ff('0x118'),'through':_0x35ff('0x12b')});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0x12c')],{'as':_0x35ff('0x12d'),'through':_0x35ff('0x2a'),'required':![]});db[_0x35ff('0xf')][_0x35ff('0x11d')](db['VoicePrefix'],{'as':_0x35ff('0x12e'),'through':_0x35ff('0x12f'),'required':![]});db[_0x35ff('0xf')]['belongsToMany'](db[_0x35ff('0x130')],{'as':_0x35ff('0x131'),'through':'UserMailQueue','required':![]});db['User'][_0x35ff('0x11d')](db['ChatQueue'],{'as':_0x35ff('0x132'),'through':_0x35ff('0x2c'),'required':![],'hooks':!![]});db[_0x35ff('0xf')]['belongsToMany'](db['FaxQueue'],{'as':'FaxQueues','through':_0x35ff('0x2f'),'required':![]});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0x56')],{'as':_0x35ff('0x133'),'through':_0x35ff('0x31'),'required':![]});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0x5c')],{'as':'OpenchannelQueues','through':_0x35ff('0x33'),'required':![]});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0x104')],{'as':_0x35ff('0x134'),'through':_0x35ff('0x135'),'required':![]});db[_0x35ff('0xf')][_0x35ff('0x11d')](db['CmList'],{'through':_0x35ff('0x124')});db['User'][_0x35ff('0x11d')](db[_0x35ff('0x5e')],{'as':_0x35ff('0x136'),'through':'user_has_chat_websites'});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0x137')],{'as':_0x35ff('0x138'),'through':'user_has_fax_accounts'});db[_0x35ff('0xf')]['belongsToMany'](db[_0x35ff('0x139')],{'as':_0x35ff('0x13a'),'through':_0x35ff('0x13b')});db[_0x35ff('0xf')][_0x35ff('0x11d')](db['OpenchannelAccount'],{'as':_0x35ff('0x13c'),'through':_0x35ff('0x13d')});db['User'][_0x35ff('0x11d')](db['SmsAccount'],{'as':_0x35ff('0x13e'),'through':_0x35ff('0x13f')});db['User'][_0x35ff('0x11d')](db[_0x35ff('0xfa')],{'as':'WhatsappAccounts','through':'user_has_whatsapp_accounts'});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0xde')],{'as':_0x35ff('0x140'),'through':_0x35ff('0x141')});db['VoiceChanSpy'][_0x35ff('0x10e')](db[_0x35ff('0x15')],{'as':_0x35ff('0x142'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x143')});db['VoiceContext'][_0x35ff('0x10e')](db[_0x35ff('0x15')],{'onDelete':_0x35ff('0x10c')});db[_0x35ff('0x15')]['hasMany'](db[_0x35ff('0x15')],{'as':_0x35ff('0x144'),'onDelete':_0x35ff('0x10c')});db[_0x35ff('0x145')][_0x35ff('0x11d')](db[_0x35ff('0x86')],{'as':_0x35ff('0x146'),'through':_0x35ff('0x147')});db[_0x35ff('0x12c')][_0x35ff('0x10e')](db[_0x35ff('0x148')],{'as':_0x35ff('0x149'),'foreignKey':_0x35ff('0x14a')});db[_0x35ff('0x12c')][_0x35ff('0x10e')](db[_0x35ff('0x14b')],{'as':_0x35ff('0x14c'),'foreignKey':'VoiceQueueId'});db[_0x35ff('0x12c')][_0x35ff('0x10e')](db[_0x35ff('0x6f')],{'as':_0x35ff('0x112'),'foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0x35ff('0x10e')](db[_0x35ff('0x70')],{'as':_0x35ff('0x14d'),'foreignKey':'VoiceQueueId'});db[_0x35ff('0x12c')][_0x35ff('0x10e')](db['ReportAgentPreview'],{'as':_0x35ff('0x71'),'foreignKey':_0x35ff('0x14a')});db[_0x35ff('0x12c')][_0x35ff('0x10e')](db['CmHopperBlack'],{'as':_0x35ff('0x14e'),'foreignKey':_0x35ff('0x14a')});db[_0x35ff('0x12c')][_0x35ff('0x10e')](db['JscriptySessionReport'],{'as':_0x35ff('0x14f'),'foreignKey':_0x35ff('0x14a')});db[_0x35ff('0x12c')][_0x35ff('0x11b')](db['Trunk'],{'as':_0x35ff('0x26'),'foreignKey':_0x35ff('0x150')});db[_0x35ff('0x12c')][_0x35ff('0x11b')](db[_0x35ff('0x26')],{'as':'TrunkBackup','foreignKey':_0x35ff('0x151')});db[_0x35ff('0x12c')][_0x35ff('0x11b')](db['Interval'],{'as':_0x35ff('0x7e'),'foreignKey':_0x35ff('0x152')});db[_0x35ff('0x12c')]['belongsTo'](db[_0x35ff('0x153')],{'as':_0x35ff('0x154'),'foreignKey':_0x35ff('0x155')});db[_0x35ff('0x12c')][_0x35ff('0x11d')](db[_0x35ff('0x122')],{'as':_0x35ff('0x123'),'through':_0x35ff('0x156')});db[_0x35ff('0x12c')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':_0x35ff('0x2a')});db[_0x35ff('0x12c')][_0x35ff('0x11d')](db[_0x35ff('0xe3')],{'as':'Teams','through':'TeamVoiceQueue'});db[_0x35ff('0x12c')][_0x35ff('0x11d')](db[_0x35ff('0x122')],{'as':'BlackLists','through':'voice_queues_has_cm_blacklists'});db[_0x35ff('0x19')][_0x35ff('0x11b')](db['User'],{'as':_0x35ff('0xf'),'foreignKey':'UserId'});db[_0x35ff('0x1a')]['belongsTo'](db['User'],{'as':'User','foreignKey':_0x35ff('0x10d')});db[_0x35ff('0x1c')]['hasMany'](db[_0x35ff('0x1d')],{'as':_0x35ff('0x158'),'onDelete':'cascade','foreignKey':_0x35ff('0x159'),'sourceKey':_0x35ff('0x15a')});db['VoiceMailMessage'][_0x35ff('0x11b')](db[_0x35ff('0x1c')],{'foreignKey':_0x35ff('0x159'),'targetKey':'mailbox'});db[_0x35ff('0x15b')][_0x35ff('0x10e')](db['VoiceQueueReport'],{'as':'QueueCalls','foreignKey':'uniqueid','constraints':![]});db[_0x35ff('0x15b')][_0x35ff('0x10e')](db[_0x35ff('0x21')],{'as':'AgentReports','foreignKey':'uniqueid','constraints':![]});db[_0x35ff('0x15b')]['belongsTo'](db[_0x35ff('0xf')],{'as':'User','foreignKey':'UserId'});db[_0x35ff('0x15b')]['belongsTo'](db[_0x35ff('0x15c')],{'as':'Contact','foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x36')][_0x35ff('0x11b')](db[_0x35ff('0x139')],{'as':_0x35ff('0x139'),'foreignKey':_0x35ff('0x15e')});db[_0x35ff('0x38')]['belongsTo'](db['MailAccount'],{'as':_0x35ff('0x139'),'foreignKey':_0x35ff('0x15e')});db[_0x35ff('0x139')][_0x35ff('0x10b')](db['MailServerIn'],{'as':_0x35ff('0x15f'),'onDelete':'cascade'});db[_0x35ff('0x139')]['hasOne'](db['MailServerOut'],{'as':'Smtp','onDelete':_0x35ff('0x10c')});db[_0x35ff('0x139')][_0x35ff('0x10e')](db[_0x35ff('0x7a')],{'as':_0x35ff('0x160'),'foreignKey':_0x35ff('0x15e'),'onDelete':'cascade'});db['MailAccount'][_0x35ff('0x10e')](db[_0x35ff('0x79')],{'as':_0x35ff('0x161'),'foreignKey':_0x35ff('0x15e')});db[_0x35ff('0x139')][_0x35ff('0x10e')](db['MailMessage'],{'as':_0x35ff('0x158'),'foreignKey':_0x35ff('0x15e')});db[_0x35ff('0x139')][_0x35ff('0x10e')](db['MailInteraction'],{'as':_0x35ff('0x162')});db['MailAccount'][_0x35ff('0x10e')](db[_0x35ff('0x40')],{'as':_0x35ff('0x144')});db[_0x35ff('0x139')][_0x35ff('0x11b')](db[_0x35ff('0x122')],{'as':_0x35ff('0x163'),'foreignKey':'ListId'});db[_0x35ff('0x139')]['belongsTo'](db[_0x35ff('0x164')],{'as':'Template','foreignKey':_0x35ff('0x165')});db[_0x35ff('0x139')][_0x35ff('0x11b')](db[_0x35ff('0x153')],{'as':'mandatoryDispositionPause','foreignKey':_0x35ff('0x155')});db[_0x35ff('0x139')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':'Agents','through':_0x35ff('0x13b')});db['MailQueue']['belongsToMany'](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':_0x35ff('0x166')});db[_0x35ff('0x130')][_0x35ff('0x11d')](db[_0x35ff('0xe3')],{'through':_0x35ff('0x167'),'as':_0x35ff('0x168')});db[_0x35ff('0x3e')][_0x35ff('0x10e')](db['MailMessage'],{'as':_0x35ff('0x158'),'onDelete':'cascade','foreignKey':_0x35ff('0x169')});db[_0x35ff('0x3e')]['belongsTo'](db[_0x35ff('0x139')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x15e')});db[_0x35ff('0x3e')][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'as':'Contact','foreignKey':'ContactId'});db[_0x35ff('0x3e')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'as':_0x35ff('0x16b'),'foreignKey':_0x35ff('0x10d')});db[_0x35ff('0x3e')]['belongsToMany'](db[_0x35ff('0x88')],{'through':'mail_interaction_has_tags','as':_0x35ff('0x16c')});db[_0x35ff('0x3e')]['belongsToMany'](db[_0x35ff('0x88')],{'through':_0x35ff('0x16d'),'as':_0x35ff('0x16e')});db['MailInteraction'][_0x35ff('0x11d')](db['User'],{'as':_0x35ff('0x16f'),'through':'user_has_mail_interactions','foreignKey':'MailInteractionId'});db[_0x35ff('0x170')]['hasMany'](db[_0x35ff('0xe8')],{'as':_0x35ff('0x171'),'onDelete':'cascade'});db[_0x35ff('0x170')]['belongsTo'](db[_0x35ff('0xf')],{'as':_0x35ff('0xf')});db[_0x35ff('0x170')][_0x35ff('0x11b')](db['CmContact'],{'onDelete':_0x35ff('0x10c'),'as':_0x35ff('0x172')});db[_0x35ff('0x170')]['belongsTo'](db['MailInteraction'],{'as':_0x35ff('0x173'),'foreignKey':_0x35ff('0x169')});db[_0x35ff('0x170')][_0x35ff('0x11b')](db[_0x35ff('0x139')],{'as':'Account','foreignKey':_0x35ff('0x15e')});db[_0x35ff('0x170')][_0x35ff('0x11b')](db[_0x35ff('0x5e')],{'as':_0x35ff('0x5e'),'foreignKey':'ChatWebsiteId'});db[_0x35ff('0x170')][_0x35ff('0x11b')](db[_0x35ff('0x174')],{'as':_0x35ff('0x174'),'foreignKey':_0x35ff('0x175')});db[_0x35ff('0x40')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'onDelete':'restrict'});db[_0x35ff('0x40')]['belongsTo'](db['MailQueue'],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x40')][_0x35ff('0x11b')](db['MailAccount'],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x40')]['belongsTo'](db[_0x35ff('0x7e')],{'onDelete':'restrict','foreignKey':'IntervalId'});db[_0x35ff('0x40')][_0x35ff('0x11b')](db[_0x35ff('0x88')],{'onDelete':_0x35ff('0x176'),'foreignKey':_0x35ff('0x177')});db[_0x35ff('0x42')][_0x35ff('0x11b')](db[_0x35ff('0x139')],{});db[_0x35ff('0x42')][_0x35ff('0x11b')](db[_0x35ff('0x122')],{'as':_0x35ff('0x163'),'foreignKey':'ListId'});db[_0x35ff('0x42')][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db['MailQueueReport'][_0x35ff('0x11b')](db[_0x35ff('0x3e')],{});db['MailQueueReport'][_0x35ff('0x11b')](db[_0x35ff('0x170')],{});db['MailQueueReport'][_0x35ff('0x11b')](db[_0x35ff('0xf')],{});db[_0x35ff('0x42')][_0x35ff('0x11b')](db['MailQueue'],{});db['Dashboard'][_0x35ff('0x10e')](db[_0x35ff('0x46')],{'as':_0x35ff('0x178'),'onDelete':_0x35ff('0x10c')});db['FaxAccount']['hasMany'](db[_0x35ff('0x7a')],{'as':'Dispositions','foreignKey':'FaxAccountId','onDelete':_0x35ff('0x10c')});db['FaxAccount'][_0x35ff('0x10e')](db['CannedAnswer'],{'as':'Answers','foreignKey':_0x35ff('0x179')});db[_0x35ff('0x137')][_0x35ff('0x10e')](db['FaxInteraction'],{'as':_0x35ff('0x162')});db[_0x35ff('0x137')][_0x35ff('0x10e')](db[_0x35ff('0x48')],{'as':_0x35ff('0x144')});db[_0x35ff('0x137')][_0x35ff('0x10e')](db[_0x35ff('0x15')],{'as':_0x35ff('0x17a'),'onDelete':_0x35ff('0x10c')});db['FaxAccount'][_0x35ff('0x10e')](db['FaxMessage'],{'as':_0x35ff('0x158')});db[_0x35ff('0x137')]['belongsTo'](db[_0x35ff('0x26')],{'as':'Trunk'});db[_0x35ff('0x137')]['belongsTo'](db[_0x35ff('0x122')],{'as':_0x35ff('0x163'),'foreignKey':_0x35ff('0x17b')});db[_0x35ff('0x137')][_0x35ff('0x11b')](db[_0x35ff('0x153')],{'as':'mandatoryDispositionPause','foreignKey':_0x35ff('0x155')});db['FaxAccount'][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':'Agents','through':_0x35ff('0x17c')});db[_0x35ff('0x48')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x48')][_0x35ff('0x11b')](db[_0x35ff('0x17d')],{'onDelete':_0x35ff('0x176')});db['FaxApplication'][_0x35ff('0x11b')](db['FaxAccount'],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x48')][_0x35ff('0x11b')](db[_0x35ff('0x88')],{'onDelete':_0x35ff('0x176'),'foreignKey':_0x35ff('0x177')});db[_0x35ff('0x115')]['hasMany'](db[_0x35ff('0x4b')],{'as':_0x35ff('0x158'),'onDelete':'cascade','foreignKey':_0x35ff('0x17e')});db[_0x35ff('0x115')][_0x35ff('0x11b')](db[_0x35ff('0x137')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x179')});db[_0x35ff('0x115')][_0x35ff('0x11b')](db['CmContact'],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x115')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'as':'Owner','foreignKey':_0x35ff('0x10d')});db[_0x35ff('0x115')][_0x35ff('0x11d')](db[_0x35ff('0x88')],{'through':_0x35ff('0x17f'),'as':_0x35ff('0x16c')});db[_0x35ff('0x115')]['belongsToMany'](db[_0x35ff('0x88')],{'through':_0x35ff('0x17f'),'as':_0x35ff('0x16e')});db['FaxInteraction'][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x16f'),'through':'user_has_fax_interactions','foreignKey':'FaxInteractionId'});db[_0x35ff('0x4b')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'onDelete':_0x35ff('0x10c'),'as':'User'});db[_0x35ff('0x4b')][_0x35ff('0x11b')](db['FaxInteraction'],{'as':_0x35ff('0x173'),'foreignKey':_0x35ff('0x17e')});db[_0x35ff('0x4b')]['belongsTo'](db['CmContact'],{'onDelete':_0x35ff('0x10c'),'as':'Contact'});db['FaxMessage']['belongsTo'](db[_0x35ff('0xe8')],{'as':'Attachment','foreignKey':_0x35ff('0x180')});db[_0x35ff('0x4b')][_0x35ff('0x11b')](db[_0x35ff('0x137')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x179')});db[_0x35ff('0x17d')]['belongsToMany'](db[_0x35ff('0xf')],{'as':'Agents','through':'UserFaxQueue'});db[_0x35ff('0x17d')][_0x35ff('0x11d')](db[_0x35ff('0xe3')],{'through':_0x35ff('0x181'),'as':'Teams'});db[_0x35ff('0x4d')][_0x35ff('0x11b')](db[_0x35ff('0x137')],{});db['FaxQueueReport']['belongsTo'](db[_0x35ff('0x122')],{'as':'List','foreignKey':_0x35ff('0x17b')});db[_0x35ff('0x4d')]['belongsTo'](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x4d')][_0x35ff('0x11b')](db[_0x35ff('0x115')],{});db[_0x35ff('0x4d')][_0x35ff('0x11b')](db['FaxMessage'],{});db[_0x35ff('0x4d')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{});db[_0x35ff('0x4d')][_0x35ff('0x11b')](db['FaxQueue'],{});db[_0x35ff('0x182')]['hasMany'](db[_0x35ff('0x7a')],{'as':_0x35ff('0x160'),'foreignKey':'SmsAccountId','onDelete':_0x35ff('0x10c')});db['SmsAccount']['hasMany'](db[_0x35ff('0x79')],{'as':_0x35ff('0x161'),'foreignKey':'SmsAccountId'});db[_0x35ff('0x182')][_0x35ff('0x10e')](db[_0x35ff('0x54')],{'as':'Messages','foreignKey':_0x35ff('0x183')});db[_0x35ff('0x182')][_0x35ff('0x10e')](db[_0x35ff('0x52')],{'as':_0x35ff('0x162')});db[_0x35ff('0x182')][_0x35ff('0x10e')](db[_0x35ff('0x50')],{'as':_0x35ff('0x144')});db[_0x35ff('0x182')][_0x35ff('0x11b')](db['CmList'],{'as':_0x35ff('0x163'),'foreignKey':_0x35ff('0x17b')});db[_0x35ff('0x182')][_0x35ff('0x11b')](db[_0x35ff('0x153')],{'as':'mandatoryDispositionPause','foreignKey':_0x35ff('0x155')});db[_0x35ff('0x182')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':_0x35ff('0x13f')});db[_0x35ff('0x50')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x50')]['belongsTo'](db[_0x35ff('0x56')],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x50')]['belongsTo'](db[_0x35ff('0x182')],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x50')]['belongsTo'](db[_0x35ff('0x7e')],{'onDelete':_0x35ff('0x176'),'foreignKey':_0x35ff('0x152')});db['SmsApplication'][_0x35ff('0x11b')](db[_0x35ff('0x88')],{'onDelete':'restrict','foreignKey':_0x35ff('0x177')});db['SmsInteraction'][_0x35ff('0x10e')](db[_0x35ff('0x54')],{'as':'Messages','onDelete':_0x35ff('0x10c'),'foreignKey':'SmsInteractionId'});db[_0x35ff('0x52')][_0x35ff('0x11b')](db[_0x35ff('0x182')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x183')});db[_0x35ff('0x52')][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db['SmsInteraction']['belongsTo'](db[_0x35ff('0xf')],{'as':'Owner','foreignKey':_0x35ff('0x10d')});db[_0x35ff('0x52')][_0x35ff('0x11d')](db[_0x35ff('0x88')],{'through':_0x35ff('0x184'),'as':_0x35ff('0x16c')});db['SmsInteraction'][_0x35ff('0x11d')](db['Tag'],{'through':'sms_interaction_has_tags','as':_0x35ff('0x16e')});db[_0x35ff('0x52')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x16f'),'through':_0x35ff('0x129'),'foreignKey':'SmsInteractionId'});db[_0x35ff('0x54')][_0x35ff('0x11b')](db['User'],{'as':_0x35ff('0xf')});db['SmsMessage']['belongsTo'](db[_0x35ff('0x15c')],{'onDelete':_0x35ff('0x10c'),'as':_0x35ff('0x172')});db[_0x35ff('0x54')]['belongsTo'](db[_0x35ff('0x52')],{'onDelete':_0x35ff('0x10c'),'as':_0x35ff('0x173'),'foreignKey':_0x35ff('0x185')});db[_0x35ff('0x54')]['belongsTo'](db[_0x35ff('0x182')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x183')});db[_0x35ff('0x56')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':_0x35ff('0x31'),'foreignKey':'SmsQueueId'});db['SmsQueue'][_0x35ff('0x11d')](db[_0x35ff('0xe3')],{'through':_0x35ff('0x186'),'as':_0x35ff('0x168')});db[_0x35ff('0x187')][_0x35ff('0x10e')](db[_0x35ff('0x7a')],{'as':_0x35ff('0x160'),'foreignKey':_0x35ff('0x188'),'onDelete':_0x35ff('0x10c')});db[_0x35ff('0x187')][_0x35ff('0x10e')](db[_0x35ff('0x79')],{'as':_0x35ff('0x161'),'foreignKey':_0x35ff('0x188')});db[_0x35ff('0x187')][_0x35ff('0x10e')](db[_0x35ff('0x5a')],{'as':_0x35ff('0x162'),'foreignKey':_0x35ff('0x188')});db[_0x35ff('0x187')][_0x35ff('0x10e')](db[_0x35ff('0x189')],{'as':_0x35ff('0x158'),'foreignKey':'OpenchannelAccountId'});db[_0x35ff('0x187')][_0x35ff('0x10e')](db[_0x35ff('0x58')],{'as':_0x35ff('0x144'),'foreignKey':_0x35ff('0x188')});db[_0x35ff('0x187')]['belongsTo'](db[_0x35ff('0x122')],{'as':_0x35ff('0x163'),'foreignKey':_0x35ff('0x17b')});db[_0x35ff('0x187')][_0x35ff('0x11b')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x35ff('0x155')});db[_0x35ff('0x187')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':_0x35ff('0x13d')});db['OpenchannelApplication'][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x58')][_0x35ff('0x11b')](db[_0x35ff('0x5c')],{'onDelete':_0x35ff('0x176'),'foreignKey':_0x35ff('0x18a')});db[_0x35ff('0x58')][_0x35ff('0x11b')](db[_0x35ff('0x187')],{'onDelete':_0x35ff('0x176'),'foreignKey':_0x35ff('0x188')});db[_0x35ff('0x58')]['belongsTo'](db[_0x35ff('0x7e')],{'onDelete':_0x35ff('0x176'),'foreignKey':_0x35ff('0x152')});db[_0x35ff('0x58')][_0x35ff('0x11b')](db[_0x35ff('0x88')],{'onDelete':_0x35ff('0x176'),'foreignKey':_0x35ff('0x177')});db[_0x35ff('0x5a')][_0x35ff('0x10e')](db[_0x35ff('0x189')],{'as':_0x35ff('0x158'),'onDelete':'cascade','foreignKey':_0x35ff('0x18b')});db['OpenchannelInteraction']['belongsTo'](db['OpenchannelAccount'],{'as':'Account','foreignKey':_0x35ff('0x188')});db[_0x35ff('0x5a')][_0x35ff('0x11b')](db['CmContact'],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db['OpenchannelInteraction'][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'as':_0x35ff('0x16b'),'foreignKey':_0x35ff('0x10d')});db[_0x35ff('0x5a')][_0x35ff('0x11d')](db[_0x35ff('0x88')],{'through':_0x35ff('0x18c'),'as':_0x35ff('0x16c')});db[_0x35ff('0x5a')][_0x35ff('0x11d')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x35ff('0x16e')});db['OpenchannelInteraction'][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x16f'),'through':_0x35ff('0x12a'),'foreignKey':_0x35ff('0x18b')});db['OpenchannelMessage'][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'onDelete':_0x35ff('0x10c'),'as':'User'});db['OpenchannelMessage'][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'onDelete':'cascade','as':'Contact'});db[_0x35ff('0x189')][_0x35ff('0x11b')](db[_0x35ff('0x5a')],{'onDelete':_0x35ff('0x10c'),'as':'Interaction','foreignKey':'OpenchannelInteractionId'});db['OpenchannelMessage'][_0x35ff('0x11b')](db[_0x35ff('0xe8')],{'as':_0x35ff('0xe8'),'foreignKey':'AttachmentId'});db[_0x35ff('0x189')][_0x35ff('0x11b')](db[_0x35ff('0x187')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x188')});db[_0x35ff('0x5c')][_0x35ff('0x11d')](db['User'],{'as':_0x35ff('0x157'),'through':_0x35ff('0x33'),'foreignKey':_0x35ff('0x18a')});db[_0x35ff('0x5c')][_0x35ff('0x11d')](db['Team'],{'through':'team_has_openchannel_queues','as':_0x35ff('0x168')});db['ChatWebsite'][_0x35ff('0x10e')](db[_0x35ff('0x7a')],{'as':_0x35ff('0x160'),'foreignKey':_0x35ff('0x18d'),'onDelete':_0x35ff('0x10c')});db[_0x35ff('0x5e')][_0x35ff('0x10e')](db[_0x35ff('0x79')],{'as':_0x35ff('0x161'),'foreignKey':_0x35ff('0x18d')});db['ChatWebsite'][_0x35ff('0x10e')](db[_0x35ff('0x68')],{'as':_0x35ff('0x18e')});db[_0x35ff('0x5e')]['hasMany'](db['ChatInteraction'],{'as':_0x35ff('0x162')});db['ChatWebsite'][_0x35ff('0x10e')](db[_0x35ff('0x62')],{'as':'Applications'});db[_0x35ff('0x5e')][_0x35ff('0x10e')](db[_0x35ff('0x18f')],{'as':_0x35ff('0x158')});db[_0x35ff('0x5e')][_0x35ff('0x11b')](db[_0x35ff('0x122')],{'as':_0x35ff('0x163'),'foreignKey':'ListId'});db[_0x35ff('0x5e')][_0x35ff('0x11b')](db[_0x35ff('0x7e')],{'as':_0x35ff('0x7e'),'foreignKey':_0x35ff('0x152')});db[_0x35ff('0x5e')][_0x35ff('0x11b')](db['MailAccount'],{'as':'MailAccount','foreignKey':_0x35ff('0x15e')});db[_0x35ff('0x5e')][_0x35ff('0x11b')](db[_0x35ff('0x153')],{'as':_0x35ff('0x154'),'foreignKey':_0x35ff('0x155')});db[_0x35ff('0x5e')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':_0x35ff('0x190')});db['OpenchannelQueueReport'][_0x35ff('0x11b')](db[_0x35ff('0x187')],{});db[_0x35ff('0x60')]['belongsTo'](db[_0x35ff('0x122')],{'as':'List','foreignKey':_0x35ff('0x17b')});db['OpenchannelQueueReport'][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x60')][_0x35ff('0x11b')](db['OpenchannelInteraction'],{});db[_0x35ff('0x60')][_0x35ff('0x11b')](db[_0x35ff('0x189')],{});db[_0x35ff('0x60')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{});db[_0x35ff('0x60')][_0x35ff('0x11b')](db[_0x35ff('0x5c')],{});db[_0x35ff('0x62')]['belongsTo'](db['User'],{'as':_0x35ff('0x191'),'foreignKey':'UserId','onDelete':'restrict'});db[_0x35ff('0x62')][_0x35ff('0x11b')](db[_0x35ff('0x66')],{'as':'Queue','foreignKey':_0x35ff('0x192'),'onDelete':_0x35ff('0x176')});db[_0x35ff('0x62')][_0x35ff('0x11b')](db[_0x35ff('0x5e')],{'as':'Website','foreignKey':_0x35ff('0x18d'),'onDelete':_0x35ff('0x176')});db[_0x35ff('0x62')][_0x35ff('0x11b')](db[_0x35ff('0x88')],{'onDelete':_0x35ff('0x176'),'foreignKey':_0x35ff('0x177')});db[_0x35ff('0x126')][_0x35ff('0x10e')](db[_0x35ff('0x18f')],{'as':'Messages','onDelete':'cascade','foreignKey':_0x35ff('0x193')});db['ChatInteraction'][_0x35ff('0x11b')](db[_0x35ff('0x5e')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x18d')});db[_0x35ff('0x126')][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x126')]['belongsTo'](db[_0x35ff('0xf')],{'as':_0x35ff('0x16b'),'foreignKey':_0x35ff('0x10d')});db[_0x35ff('0x126')][_0x35ff('0x11d')](db['Tag'],{'through':'chat_interaction_has_tags','as':_0x35ff('0x16c')});db[_0x35ff('0x126')][_0x35ff('0x11d')](db[_0x35ff('0x88')],{'through':'chat_interaction_has_tags','as':_0x35ff('0x16e')});db['ChatInteraction'][_0x35ff('0x11d')](db['User'],{'as':_0x35ff('0x16f'),'through':_0x35ff('0x127'),'foreignKey':'ChatInteractionId'});db[_0x35ff('0x18f')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'onDelete':'cascade','as':'User'});db[_0x35ff('0x18f')][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'onDelete':_0x35ff('0x10c'),'as':'Contact','foreignKey':'ContactId'});db['ChatMessage'][_0x35ff('0x11b')](db[_0x35ff('0x126')],{'onDelete':_0x35ff('0x10c'),'as':_0x35ff('0x173'),'foreignKey':_0x35ff('0x193')});db[_0x35ff('0x18f')]['belongsTo'](db[_0x35ff('0xe8')],{'as':'Attachment','foreignKey':'AttachmentId'});db['ChatMessage']['belongsTo'](db[_0x35ff('0x5e')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x18d')});db[_0x35ff('0x174')][_0x35ff('0x10e')](db[_0x35ff('0xe8')],{'as':'Attachments','foreignKey':_0x35ff('0x175'),'onDelete':_0x35ff('0x10c'),'hooks':!![]});db[_0x35ff('0x174')][_0x35ff('0x11b')](db['CmContact'],{'onDelete':_0x35ff('0x10c'),'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x174')][_0x35ff('0x11b')](db[_0x35ff('0x5e')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x18d')});db[_0x35ff('0x66')]['belongsToMany'](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':_0x35ff('0x2c'),'hooks':!![]});db[_0x35ff('0x66')]['belongsToMany'](db[_0x35ff('0xe3')],{'through':_0x35ff('0x194'),'as':_0x35ff('0x168')});db[_0x35ff('0x195')][_0x35ff('0x10e')](db[_0x35ff('0x196')],{'as':_0x35ff('0x158'),'foreignKey':'ChatGroupId','onDelete':_0x35ff('0x10c')});db[_0x35ff('0x195')][_0x35ff('0x11d')](db['User'],{'as':_0x35ff('0x149'),'through':_0x35ff('0x11f')});db[_0x35ff('0x68')][_0x35ff('0x11b')](db[_0x35ff('0x5e')],{'as':_0x35ff('0x197'),'foreignKey':_0x35ff('0x18d')});db[_0x35ff('0x6a')]['hasMany'](db[_0x35ff('0x15c')],{'as':_0x35ff('0x120'),'foreignKey':'CompanyId'});db[_0x35ff('0x15c')]['hasMany'](db['CmHopper'],{'as':_0x35ff('0x14c'),'foreignKey':'ContactId'});db[_0x35ff('0x15c')][_0x35ff('0x10e')](db[_0x35ff('0x6f')],{'as':_0x35ff('0x112'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x15c')][_0x35ff('0x10e')](db[_0x35ff('0x70')],{'as':_0x35ff('0x14d'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x15c')]['hasMany'](db[_0x35ff('0x71')],{'as':'ReportAgentPreview','foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x15c')]['hasMany'](db[_0x35ff('0xd2')],{'as':_0x35ff('0x14f'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x15c')][_0x35ff('0x10e')](db[_0x35ff('0x5a')],{'as':_0x35ff('0x114'),'foreignKey':_0x35ff('0x15d'),'onDelete':_0x35ff('0x176')});db[_0x35ff('0x15c')][_0x35ff('0x10e')](db[_0x35ff('0x126')],{'as':_0x35ff('0x198'),'foreignKey':_0x35ff('0x15d'),'onDelete':_0x35ff('0x176')});db[_0x35ff('0x15c')][_0x35ff('0x10e')](db[_0x35ff('0x52')],{'as':_0x35ff('0x128'),'foreignKey':_0x35ff('0x15d'),'onDelete':'restrict'});db[_0x35ff('0x15c')][_0x35ff('0x10e')](db[_0x35ff('0x115')],{'as':_0x35ff('0x116'),'foreignKey':_0x35ff('0x15d'),'onDelete':_0x35ff('0x176')});db[_0x35ff('0x15c')][_0x35ff('0x10e')](db[_0x35ff('0x3e')],{'as':_0x35ff('0x117'),'foreignKey':_0x35ff('0x15d'),'onDelete':_0x35ff('0x176')});db[_0x35ff('0x15c')]['belongsTo'](db[_0x35ff('0x6a')],{'as':'Company','foreignKey':_0x35ff('0x199')});db[_0x35ff('0x15c')][_0x35ff('0x11b')](db['CmList'],{'as':_0x35ff('0x163'),'foreignKey':_0x35ff('0x17b'),'onDelete':_0x35ff('0x10c')});db[_0x35ff('0x15c')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x16f'),'through':_0x35ff('0x121')});db[_0x35ff('0x15c')]['belongsToMany'](db[_0x35ff('0x88')],{'as':_0x35ff('0x16c'),'through':'cm_contact_has_tags'});db[_0x35ff('0x15c')][_0x35ff('0x11d')](db[_0x35ff('0x88')],{'through':_0x35ff('0x19a'),'as':'ThroughTags'});db[_0x35ff('0x14b')]['belongsTo'](db[_0x35ff('0x15c')],{'as':'Contact','foreignKey':'ContactId','onDelete':_0x35ff('0x10c')});db[_0x35ff('0x14b')][_0x35ff('0x11b')](db['CmList'],{'as':_0x35ff('0x163'),'foreignKey':'ListId','onDelete':_0x35ff('0x10c')});db[_0x35ff('0x14b')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'as':_0x35ff('0x191'),'foreignKey':'UserId'});db[_0x35ff('0x14b')][_0x35ff('0x11b')](db[_0x35ff('0x12c')],{'as':_0x35ff('0x19b'),'foreignKey':_0x35ff('0x14a'),'onDelete':_0x35ff('0x10c')});db['CmHopper'][_0x35ff('0x11b')](db['Campaign'],{'as':'Campaign','foreignKey':_0x35ff('0x19c'),'onDelete':_0x35ff('0x10c')});db['CmHopper'][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'as':_0x35ff('0x16b'),'foreignKey':'OwnerId'});db[_0x35ff('0x6d')]['belongsTo'](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d'),'onDelete':_0x35ff('0x10c')});db[_0x35ff('0x6d')]['belongsTo'](db[_0x35ff('0x122')],{'as':_0x35ff('0x163'),'foreignKey':_0x35ff('0x17b'),'onDelete':_0x35ff('0x10c')});db[_0x35ff('0x6d')][_0x35ff('0x11b')](db[_0x35ff('0x12c')],{'as':_0x35ff('0x19b'),'foreignKey':'VoiceQueueId','onDelete':_0x35ff('0x10c')});db['CmHopperBlack'][_0x35ff('0x11b')](db[_0x35ff('0xe6')],{'as':'Campaign','foreignKey':'CampaignId','onDelete':_0x35ff('0x10c')});db['Automation'][_0x35ff('0x10e')](db['Condition'],{'as':{'plural':_0x35ff('0x19d'),'singular':'OneAll'},'foreignKey':_0x35ff('0x19e'),'onDelete':_0x35ff('0x10c'),'hooks':!![]});db[_0x35ff('0x77')][_0x35ff('0x10e')](db[_0x35ff('0x7c')],{'as':{'plural':_0x35ff('0x19f'),'singular':_0x35ff('0x1a0')},'foreignKey':_0x35ff('0x1a1'),'onDelete':_0x35ff('0x10c'),'hooks':!![]});db['Automation'][_0x35ff('0x10e')](db[_0x35ff('0x75')],{'as':_0x35ff('0x1a2'),'foreignKey':_0x35ff('0x1a3'),'onDelete':'cascade','hooks':!![]});db[_0x35ff('0x7a')][_0x35ff('0x10e')](db['Disposition'],{'as':_0x35ff('0x160'),'foreignKey':'ParentId','onDelete':_0x35ff('0x10c')});db[_0x35ff('0x7e')][_0x35ff('0x10e')](db[_0x35ff('0x7e')],{'as':'Intervals','foreignKey':'IntervalId','onDelete':_0x35ff('0x10c'),'hooks':!![],'required':![]});db[_0x35ff('0x7e')][_0x35ff('0x10e')](db['VoiceExtension'],{'as':_0x35ff('0x111'),'foreignKey':_0x35ff('0x152'),'onDelete':_0x35ff('0x176')});db[_0x35ff('0x7e')][_0x35ff('0x10e')](db[_0x35ff('0x40')],{'as':_0x35ff('0x1a4'),'foreignKey':_0x35ff('0x152')});db[_0x35ff('0x7e')]['hasMany'](db['ChatApplication'],{'as':_0x35ff('0x1a5'),'foreignKey':_0x35ff('0x152')});db[_0x35ff('0x7e')]['hasMany'](db[_0x35ff('0x48')],{'as':_0x35ff('0x1a6'),'foreignKey':_0x35ff('0x152')});db[_0x35ff('0x7e')][_0x35ff('0x10e')](db[_0x35ff('0x50')],{'as':'SmsApplications','foreignKey':_0x35ff('0x152')});db[_0x35ff('0x84')][_0x35ff('0x11b')](db[_0x35ff('0x139')],{});db[_0x35ff('0x84')][_0x35ff('0x11b')](db[_0x35ff('0x91')],{'foreignKey':_0x35ff('0x1a7')});db[_0x35ff('0x84')][_0x35ff('0x11b')](db[_0x35ff('0x1a8')],{'foreignKey':_0x35ff('0x1a9')});db[_0x35ff('0x86')][_0x35ff('0x11d')](db['VoiceMusicOnHold'],{'as':'Mohs','through':_0x35ff('0x147'),'onDelete':_0x35ff('0x176')});db['Tag'][_0x35ff('0x11d')](db['CmContact'],{'through':_0x35ff('0x19a')});db[_0x35ff('0x88')][_0x35ff('0x11d')](db['ChatInteraction'],{'through':_0x35ff('0x1aa')});db[_0x35ff('0x88')][_0x35ff('0x11d')](db[_0x35ff('0x3e')],{'through':_0x35ff('0x16d')});db['Tag']['belongsToMany'](db[_0x35ff('0x52')],{'through':_0x35ff('0x184')});db['Tag']['belongsToMany'](db['FaxInteraction'],{'through':'fax_interaction_has_tags'});db['Tag'][_0x35ff('0x11d')](db[_0x35ff('0x5a')],{'through':_0x35ff('0x18c')});db['Tag'][_0x35ff('0x11d')](db[_0x35ff('0xfc')],{'through':_0x35ff('0x1ab')});db[_0x35ff('0x1ac')][_0x35ff('0x10e')](db[_0x35ff('0x7c')],{'as':{'plural':_0x35ff('0x1ad'),'singular':_0x35ff('0x1ae')},'foreignKey':_0x35ff('0x1af'),'onDelete':'cascade','hooks':!![]});db[_0x35ff('0x1ac')][_0x35ff('0x10e')](db[_0x35ff('0x7c')],{'as':{'plural':_0x35ff('0x1b0'),'singular':'AnyCondition'},'foreignKey':_0x35ff('0x1b1'),'onDelete':_0x35ff('0x10c'),'hooks':!![]});db[_0x35ff('0x1ac')][_0x35ff('0x10e')](db[_0x35ff('0x75')],{'as':_0x35ff('0x1a2'),'foreignKey':_0x35ff('0x1b2'),'onDelete':'cascade','hooks':!![]});db[_0x35ff('0x1a8')][_0x35ff('0x10e')](db[_0x35ff('0x97')],{'as':_0x35ff('0x1b3'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1a9'),'hooks':!![]});db[_0x35ff('0x91')][_0x35ff('0x10e')](db['AnalyticFieldReport'],{'as':'Fields','onDelete':'cascade','foreignKey':_0x35ff('0x1a7')});db[_0x35ff('0x95')][_0x35ff('0x10e')](db[_0x35ff('0x97')],{'as':_0x35ff('0x1b3'),'onDelete':_0x35ff('0x10c'),'foreignKey':'MetricId'});db[_0x35ff('0x97')][_0x35ff('0x11b')](db[_0x35ff('0x95')],{'foreignKey':_0x35ff('0x1b4')});db['SalesforceAccount'][_0x35ff('0x10e')](db[_0x35ff('0x9c')],{'as':_0x35ff('0x1b5'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0x9c')]['hasMany'](db[_0x35ff('0x9e')],{'as':_0x35ff('0x1b7'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0x9c')][_0x35ff('0x10e')](db[_0x35ff('0x9e')],{'as':_0x35ff('0x1b9'),'onDelete':_0x35ff('0x10c'),'foreignKey':'DescriptionId'});db[_0x35ff('0x9c')][_0x35ff('0x10e')](db[_0x35ff('0x9e')],{'as':'Fields','onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1ba')});db[_0x35ff('0x9c')][_0x35ff('0x11b')](db['SalesforceAccount'],{'as':_0x35ff('0x16a'),'foreignKey':'AccountId'});db['SalesforceField'][_0x35ff('0x10e')](db[_0x35ff('0x9e')],{'as':_0x35ff('0x1bb'),'foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0x9e')][_0x35ff('0x10e')](db['SalesforceField'],{'as':_0x35ff('0x1bc'),'foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0x9e')][_0x35ff('0x10e')](db[_0x35ff('0x9e')],{'as':_0x35ff('0x1be'),'foreignKey':_0x35ff('0x1ba')});db[_0x35ff('0x9e')][_0x35ff('0x11b')](db['Variable'],{'as':'Variable','foreignKey':_0x35ff('0x1bf')});db[_0x35ff('0x9f')]['hasMany'](db[_0x35ff('0xa1')],{'as':_0x35ff('0x1b5'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0xa1')]['hasMany'](db[_0x35ff('0xa2')],{'as':_0x35ff('0x1b7'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b8')});db['SugarcrmConfiguration']['hasMany'](db['SugarcrmField'],{'as':_0x35ff('0x1b9'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0xa1')]['hasMany'](db[_0x35ff('0xa2')],{'as':_0x35ff('0x1b3'),'onDelete':_0x35ff('0x10c'),'foreignKey':'FieldId'});db[_0x35ff('0xa1')]['belongsTo'](db[_0x35ff('0x9f')],{'as':'Account','foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0xa2')][_0x35ff('0x10e')](db['SugarcrmField'],{'as':_0x35ff('0x1bb'),'foreignKey':_0x35ff('0x1b8')});db['SugarcrmField'][_0x35ff('0x10e')](db[_0x35ff('0xa2')],{'as':_0x35ff('0x1bc'),'foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0xa2')][_0x35ff('0x10e')](db[_0x35ff('0xa2')],{'as':_0x35ff('0x1be'),'foreignKey':'FieldId'});db[_0x35ff('0xa2')][_0x35ff('0x11b')](db[_0x35ff('0x8b')],{'as':_0x35ff('0x8b'),'foreignKey':_0x35ff('0x1bf')});db[_0x35ff('0xa4')]['hasMany'](db[_0x35ff('0x1c0')],{'as':'Configurations','onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0x1c0')]['hasMany'](db[_0x35ff('0xa6')],{'as':_0x35ff('0x1b7'),'onDelete':_0x35ff('0x10c'),'foreignKey':'SubjectId'});db[_0x35ff('0x1c0')]['hasMany'](db[_0x35ff('0xa6')],{'as':_0x35ff('0x1b9'),'onDelete':'cascade','foreignKey':_0x35ff('0x1bd')});db['DeskConfiguration'][_0x35ff('0x10e')](db['DeskField'],{'as':_0x35ff('0x1b3'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1ba')});db['DeskConfiguration'][_0x35ff('0x11b')](db[_0x35ff('0xa4')],{'as':'Account','foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0x1c0')][_0x35ff('0x11d')](db[_0x35ff('0x88')],{'through':'int_desk_configuration_has_tags'});db[_0x35ff('0xa6')][_0x35ff('0x10e')](db[_0x35ff('0xa6')],{'as':_0x35ff('0x1bb'),'foreignKey':_0x35ff('0x1b8')});db['DeskField']['hasMany'](db[_0x35ff('0xa6')],{'as':_0x35ff('0x1bc'),'foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0xa6')][_0x35ff('0x10e')](db['DeskField'],{'as':_0x35ff('0x1be'),'foreignKey':'FieldId'});db[_0x35ff('0xa6')][_0x35ff('0x11b')](db['Variable'],{'as':_0x35ff('0x8b'),'foreignKey':_0x35ff('0x1bf')});db['ZohoAccount'][_0x35ff('0x10e')](db[_0x35ff('0x1c1')],{'as':_0x35ff('0x1b5'),'onDelete':'cascade','foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0x1c1')][_0x35ff('0x10e')](db['ZohoField'],{'as':_0x35ff('0x1b7'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b8')});db['ZohoConfiguration'][_0x35ff('0x10e')](db[_0x35ff('0xab')],{'as':_0x35ff('0x1b9'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0x1c1')]['hasMany'](db[_0x35ff('0xab')],{'as':'Fields','onDelete':'cascade','foreignKey':'FieldId'});db[_0x35ff('0x1c1')][_0x35ff('0x11b')](db[_0x35ff('0xa8')],{'as':'Account','foreignKey':'AccountId'});db[_0x35ff('0xab')][_0x35ff('0x10e')](db[_0x35ff('0xab')],{'as':_0x35ff('0x1bb'),'foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0xab')]['hasMany'](db[_0x35ff('0xab')],{'as':'Description','foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0xab')][_0x35ff('0x10e')](db[_0x35ff('0xab')],{'as':_0x35ff('0x1be'),'foreignKey':'FieldId'});db['ZohoField'][_0x35ff('0x11b')](db[_0x35ff('0x8b')],{'as':_0x35ff('0x8b'),'foreignKey':_0x35ff('0x1bf')});db[_0x35ff('0xac')][_0x35ff('0x10e')](db[_0x35ff('0xae')],{'as':_0x35ff('0x1b5'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b6')});db['ZendeskConfiguration']['hasMany'](db[_0x35ff('0xb0')],{'as':'Subjects','foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0xae')][_0x35ff('0x10e')](db[_0x35ff('0xb0')],{'as':'Descriptions','foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0xae')][_0x35ff('0x10e')](db[_0x35ff('0xb0')],{'as':_0x35ff('0x1b3'),'foreignKey':_0x35ff('0x1ba')});db['ZendeskConfiguration'][_0x35ff('0x11b')](db[_0x35ff('0xac')],{'as':_0x35ff('0x16a'),'foreignKey':'AccountId'});db['ZendeskConfiguration'][_0x35ff('0x11d')](db[_0x35ff('0x88')],{'through':_0x35ff('0x1c2')});db[_0x35ff('0xb0')]['hasMany'](db[_0x35ff('0xb0')],{'as':_0x35ff('0x1bb'),'foreignKey':_0x35ff('0x1b8')});db['ZendeskField'][_0x35ff('0x10e')](db[_0x35ff('0xb0')],{'as':_0x35ff('0x1bc'),'foreignKey':_0x35ff('0x1bd')});db['ZendeskField'][_0x35ff('0x10e')](db[_0x35ff('0xb0')],{'as':_0x35ff('0x1be'),'foreignKey':_0x35ff('0x1ba')});db['ZendeskField'][_0x35ff('0x11b')](db[_0x35ff('0x8b')],{'as':_0x35ff('0x8b'),'foreignKey':'VariableId'});db[_0x35ff('0xb2')][_0x35ff('0x10e')](db[_0x35ff('0xb4')],{'as':_0x35ff('0x1b5'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b6')});db['FreshdeskConfiguration'][_0x35ff('0x10e')](db[_0x35ff('0xb5')],{'as':'Subjects','onDelete':_0x35ff('0x10c'),'foreignKey':'SubjectId'});db['FreshdeskConfiguration']['hasMany'](db[_0x35ff('0xb5')],{'as':_0x35ff('0x1b9'),'onDelete':'cascade','foreignKey':'DescriptionId'});db[_0x35ff('0xb4')][_0x35ff('0x10e')](db[_0x35ff('0xb5')],{'as':_0x35ff('0x1b3'),'onDelete':_0x35ff('0x10c'),'foreignKey':'FieldId'});db[_0x35ff('0xb4')][_0x35ff('0x11b')](db['FreshdeskAccount'],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0xb4')][_0x35ff('0x11d')](db[_0x35ff('0x88')],{'through':_0x35ff('0x1c3')});db['FreshdeskField'][_0x35ff('0x10e')](db[_0x35ff('0xb5')],{'as':_0x35ff('0x1bb'),'foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0xb5')][_0x35ff('0x10e')](db[_0x35ff('0xb5')],{'as':_0x35ff('0x1bc'),'foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0xb5')][_0x35ff('0x10e')](db[_0x35ff('0xb5')],{'as':_0x35ff('0x1be'),'foreignKey':'FieldId'});db[_0x35ff('0xb5')][_0x35ff('0x11b')](db[_0x35ff('0x8b')],{'as':_0x35ff('0x8b'),'foreignKey':_0x35ff('0x1bf')});db[_0x35ff('0xb7')][_0x35ff('0x10e')](db['VtigerConfiguration'],{'as':_0x35ff('0x1b5'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0x1c4')][_0x35ff('0x10e')](db[_0x35ff('0xba')],{'as':'Subjects','foreignKey':'SubjectId'});db[_0x35ff('0x1c4')][_0x35ff('0x10e')](db[_0x35ff('0xba')],{'as':_0x35ff('0x1b9'),'foreignKey':'DescriptionId'});db[_0x35ff('0x1c4')]['hasMany'](db[_0x35ff('0xba')],{'as':_0x35ff('0x1b3'),'foreignKey':_0x35ff('0x1ba')});db['VtigerConfiguration'][_0x35ff('0x11b')](db[_0x35ff('0xb7')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0xba')][_0x35ff('0x10e')](db[_0x35ff('0xba')],{'as':_0x35ff('0x1bb'),'foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0xba')][_0x35ff('0x10e')](db[_0x35ff('0xba')],{'as':_0x35ff('0x1bc'),'foreignKey':'DescriptionId'});db['VtigerField'][_0x35ff('0x10e')](db['VtigerField'],{'as':_0x35ff('0x1be'),'foreignKey':_0x35ff('0x1ba')});db['VtigerField'][_0x35ff('0x11b')](db['Variable'],{'as':_0x35ff('0x8b'),'foreignKey':_0x35ff('0x1bf')});db[_0x35ff('0xbc')][_0x35ff('0x10e')](db['ServicenowConfiguration'],{'as':_0x35ff('0x1b5'),'onDelete':'cascade','foreignKey':_0x35ff('0x1b6')});db['ServicenowConfiguration'][_0x35ff('0x10e')](db[_0x35ff('0xbe')],{'as':_0x35ff('0x1b7'),'foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0x1c5')][_0x35ff('0x10e')](db[_0x35ff('0xbe')],{'as':'Descriptions','foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0x1c5')]['hasMany'](db[_0x35ff('0xbe')],{'as':_0x35ff('0x1b3'),'foreignKey':_0x35ff('0x1ba')});db[_0x35ff('0x1c5')][_0x35ff('0x11b')](db['ServicenowAccount'],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0xbe')][_0x35ff('0x10e')](db['ServicenowField'],{'as':_0x35ff('0x1bb'),'foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0xbe')][_0x35ff('0x10e')](db[_0x35ff('0xbe')],{'as':_0x35ff('0x1bc'),'foreignKey':'DescriptionId'});db[_0x35ff('0xbe')][_0x35ff('0x10e')](db['ServicenowField'],{'as':_0x35ff('0x1be'),'foreignKey':'FieldId'});db[_0x35ff('0xbe')]['belongsTo'](db['Variable'],{'as':_0x35ff('0x8b'),'foreignKey':'VariableId'});db[_0x35ff('0xbf')][_0x35ff('0x10e')](db[_0x35ff('0xc1')],{'as':_0x35ff('0x1b5'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0xc1')][_0x35ff('0x10e')](db[_0x35ff('0xc2')],{'as':_0x35ff('0x1b7'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0xc1')][_0x35ff('0x10e')](db[_0x35ff('0xc2')],{'as':_0x35ff('0x1b9'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0xc1')][_0x35ff('0x10e')](db[_0x35ff('0xc2')],{'as':_0x35ff('0x1b3'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1ba')});db[_0x35ff('0xc1')]['belongsTo'](db[_0x35ff('0xbf')],{'as':'Account','foreignKey':_0x35ff('0x1b6')});db['Dynamics365Field'][_0x35ff('0x10e')](db[_0x35ff('0xc2')],{'as':'Subject','foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0xc2')][_0x35ff('0x10e')](db['Dynamics365Field'],{'as':'Description','foreignKey':'DescriptionId'});db[_0x35ff('0xc2')][_0x35ff('0x10e')](db[_0x35ff('0xc2')],{'as':'Field','foreignKey':_0x35ff('0x1ba')});db[_0x35ff('0xc2')][_0x35ff('0x11b')](db['Variable'],{'as':_0x35ff('0x8b'),'foreignKey':_0x35ff('0x1bf')});db[_0x35ff('0xc4')][_0x35ff('0x10e')](db[_0x35ff('0xc5')],{'as':_0x35ff('0x1b5'),'onDelete':_0x35ff('0x10c'),'foreignKey':'AccountId'});db[_0x35ff('0xc5')]['hasMany'](db[_0x35ff('0xc7')],{'as':'Subjects','foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0xc5')]['hasMany'](db[_0x35ff('0xc7')],{'as':_0x35ff('0x1b9'),'foreignKey':_0x35ff('0x1bd')});db['FreshsalesConfiguration'][_0x35ff('0x10e')](db[_0x35ff('0xc7')],{'as':'Fields','foreignKey':_0x35ff('0x1ba')});db[_0x35ff('0xc5')]['belongsTo'](db['FreshsalesAccount'],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x1b6')});db['FreshsalesField'][_0x35ff('0x10e')](db[_0x35ff('0xc7')],{'as':_0x35ff('0x1bb'),'foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0xc7')]['hasMany'](db[_0x35ff('0xc7')],{'as':_0x35ff('0x1bc'),'foreignKey':'DescriptionId'});db[_0x35ff('0xc7')][_0x35ff('0x10e')](db[_0x35ff('0xc7')],{'as':'Field','foreignKey':'FieldId'});db[_0x35ff('0xc7')][_0x35ff('0x11b')](db[_0x35ff('0x8b')],{'as':_0x35ff('0x8b'),'foreignKey':'VariableId'});db['ChatQueueReport'][_0x35ff('0x11b')](db[_0x35ff('0x5e')],{});db[_0x35ff('0xcb')][_0x35ff('0x11b')](db['CmList'],{'as':_0x35ff('0x163'),'foreignKey':_0x35ff('0x17b')});db[_0x35ff('0xcb')][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0xcb')][_0x35ff('0x11b')](db[_0x35ff('0x126')],{});db[_0x35ff('0xcb')][_0x35ff('0x11b')](db['ChatMessage'],{});db[_0x35ff('0xcb')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{});db[_0x35ff('0xcb')]['belongsTo'](db['ChatQueue'],{});db['ChatInternalMessage'][_0x35ff('0x11b')](db['User'],{'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1c6')});db['ChatInternalMessage'][_0x35ff('0x11b')](db['User'],{'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1c7')});db[_0x35ff('0xd2')]['hasMany'](db[_0x35ff('0xd0')],{'foreignKey':_0x35ff('0x1c8'),'onDelete':_0x35ff('0x10c')});db[_0x35ff('0xd2')][_0x35ff('0x10e')](db[_0x35ff('0xce')],{'foreignKey':_0x35ff('0x1c8'),'onDelete':_0x35ff('0x10c')});db[_0x35ff('0xd4')][_0x35ff('0x11b')](db[_0x35ff('0x182')],{});db[_0x35ff('0xd4')][_0x35ff('0x11b')](db['CmList'],{'as':_0x35ff('0x163'),'foreignKey':'ListId'});db['SmsQueueReport']['belongsTo'](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0xd4')][_0x35ff('0x11b')](db[_0x35ff('0x52')],{});db['SmsQueueReport'][_0x35ff('0x11b')](db[_0x35ff('0x54')],{});db['SmsQueueReport'][_0x35ff('0x11b')](db[_0x35ff('0xf')],{});db[_0x35ff('0xd4')][_0x35ff('0x11b')](db[_0x35ff('0x56')],{});db[_0x35ff('0xd9')]['hasMany'](db['JscriptySessionReport'],{'foreignKey':_0x35ff('0x1c9')});db[_0x35ff('0xd9')][_0x35ff('0x10e')](db[_0x35ff('0xd0')],{'foreignKey':_0x35ff('0x1c9')});db['JscriptyProject'][_0x35ff('0x10e')](db[_0x35ff('0xce')],{'foreignKey':_0x35ff('0x1c9')});db[_0x35ff('0xde')][_0x35ff('0x11d')](db['User'],{'as':'Users','through':'user_has_square_projects'});db[_0x35ff('0xe3')]['belongsToMany'](db['User'],{'as':'Agents','through':'user_has_teams'});db[_0x35ff('0xe3')][_0x35ff('0x11d')](db['VoiceQueue'],{'through':_0x35ff('0x107'),'as':_0x35ff('0x12d')});db['Team'][_0x35ff('0x11d')](db[_0x35ff('0x130')],{'through':_0x35ff('0x167'),'as':_0x35ff('0x131')});db[_0x35ff('0xe3')][_0x35ff('0x11d')](db[_0x35ff('0x66')],{'through':_0x35ff('0x194'),'as':'ChatQueues'});db[_0x35ff('0xe3')][_0x35ff('0x11d')](db[_0x35ff('0x17d')],{'through':_0x35ff('0x181'),'as':_0x35ff('0x1ca')});db['Team'][_0x35ff('0x11d')](db['SmsQueue'],{'through':_0x35ff('0x186'),'as':_0x35ff('0x133')});db[_0x35ff('0xe3')]['belongsToMany'](db[_0x35ff('0x5c')],{'through':_0x35ff('0x1cb'),'as':'OpenchannelQueues'});db[_0x35ff('0xe3')]['belongsToMany'](db[_0x35ff('0x104')],{'through':'team_has_whatsapp_queues','as':_0x35ff('0x134')});db['Team'][_0x35ff('0x11d')](db[_0x35ff('0xf2')],{'through':_0x35ff('0x108'),'as':_0x35ff('0x12e')});db[_0x35ff('0xe6')][_0x35ff('0x10e')](db[_0x35ff('0x14b')],{'as':'Hoppers','foreignKey':_0x35ff('0x19c')});db[_0x35ff('0xe6')][_0x35ff('0x10e')](db['CmHopperFinal'],{'as':_0x35ff('0x112'),'foreignKey':'CampaignId'});db[_0x35ff('0xe6')]['hasMany'](db['CmHopperHistory'],{'as':_0x35ff('0x14d'),'foreignKey':_0x35ff('0x19c')});db[_0x35ff('0xe6')]['hasMany'](db['CmHopperBlack'],{'as':'HopperBlacks','foreignKey':_0x35ff('0x19c')});db[_0x35ff('0xe6')][_0x35ff('0x11b')](db[_0x35ff('0x26')],{'as':_0x35ff('0x26'),'foreignKey':'TrunkId'});db[_0x35ff('0xe6')][_0x35ff('0x11b')](db[_0x35ff('0x26')],{'as':'TrunkBackup','foreignKey':_0x35ff('0x151')});db['Campaign'][_0x35ff('0x11b')](db[_0x35ff('0x7e')],{'as':'Interval','foreignKey':'IntervalId'});db['Campaign']['belongsTo'](db[_0x35ff('0xde')],{'as':_0x35ff('0xde'),'foreignKey':_0x35ff('0x1cc')});db[_0x35ff('0xe6')][_0x35ff('0x11d')](db['CmList'],{'as':'Lists','through':_0x35ff('0x1cd')});db[_0x35ff('0xe6')]['belongsToMany'](db[_0x35ff('0x122')],{'as':_0x35ff('0x1ce'),'through':_0x35ff('0x1cf')});db[_0x35ff('0xe8')][_0x35ff('0x11b')](db['ChatOfflineMessage'],{'as':_0x35ff('0x174'),'foreignKey':'ChatOfflineMessageId'});db[_0x35ff('0xeb')][_0x35ff('0x11b')](db[_0x35ff('0x170')],{});db[_0x35ff('0xeb')]['belongsTo'](db[_0x35ff('0x3e')],{});db[_0x35ff('0xeb')][_0x35ff('0x11b')](db['MailAccount'],{'foreignKey':'FromMailAccountId','as':_0x35ff('0x1d0')});db['MailTransferReport'][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'foreignKey':'FromUserId','as':'FromAgent'});db['MailTransferReport']['belongsTo'](db[_0x35ff('0xf')],{'foreignKey':_0x35ff('0x1d1'),'as':'ToAgent'});db[_0x35ff('0xeb')][_0x35ff('0x11b')](db[_0x35ff('0x130')],{'foreignKey':_0x35ff('0x1d2'),'as':'ToQueue'});db[_0x35ff('0xeb')][_0x35ff('0x11b')](db[_0x35ff('0x139')],{'foreignKey':_0x35ff('0x1d3'),'as':_0x35ff('0x1d4')});db['ChatTransferReport'][_0x35ff('0x11b')](db[_0x35ff('0x18f')],{});db['ChatTransferReport']['belongsTo'](db[_0x35ff('0x126')],{});db[_0x35ff('0x1d5')]['belongsTo'](db[_0x35ff('0x5e')],{'foreignKey':_0x35ff('0x1d6'),'as':_0x35ff('0x1d0')});db['ChatTransferReport']['belongsTo'](db[_0x35ff('0xf')],{'foreignKey':_0x35ff('0x1d7'),'as':'FromAgent'});db[_0x35ff('0x1d5')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'foreignKey':_0x35ff('0x1d1'),'as':'ToAgent'});db[_0x35ff('0x1d5')][_0x35ff('0x11b')](db[_0x35ff('0x66')],{'foreignKey':_0x35ff('0x1d8'),'as':_0x35ff('0x1d9')});db[_0x35ff('0x1d5')][_0x35ff('0x11b')](db[_0x35ff('0x5e')],{'foreignKey':_0x35ff('0x1da'),'as':_0x35ff('0x1d4')});db['FaxTransferReport'][_0x35ff('0x11b')](db['FaxMessage'],{});db['FaxTransferReport']['belongsTo'](db[_0x35ff('0x115')],{});db[_0x35ff('0xed')]['belongsTo'](db[_0x35ff('0x137')],{'foreignKey':_0x35ff('0x1db'),'as':_0x35ff('0x1d0')});db[_0x35ff('0xed')]['belongsTo'](db[_0x35ff('0xf')],{'foreignKey':_0x35ff('0x1d7'),'as':'FromAgent'});db['FaxTransferReport'][_0x35ff('0x11b')](db['User'],{'foreignKey':'ToUserId','as':_0x35ff('0x1dc')});db[_0x35ff('0xed')][_0x35ff('0x11b')](db[_0x35ff('0x17d')],{'foreignKey':'ToFaxQueueId','as':_0x35ff('0x1d9')});db[_0x35ff('0xed')][_0x35ff('0x11b')](db[_0x35ff('0x137')],{'foreignKey':'ToFaxAccountId','as':'ToAccount'});db['OpenchannelTransferReport'][_0x35ff('0x11b')](db[_0x35ff('0x189')],{});db[_0x35ff('0x1dd')][_0x35ff('0x11b')](db[_0x35ff('0x5a')],{});db[_0x35ff('0x1dd')][_0x35ff('0x11b')](db[_0x35ff('0x187')],{'foreignKey':_0x35ff('0x1de'),'as':_0x35ff('0x1d0')});db[_0x35ff('0x1dd')]['belongsTo'](db['User'],{'foreignKey':_0x35ff('0x1d7'),'as':_0x35ff('0x1df')});db[_0x35ff('0x1dd')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'foreignKey':_0x35ff('0x1d1'),'as':_0x35ff('0x1dc')});db[_0x35ff('0x1dd')][_0x35ff('0x11b')](db[_0x35ff('0x5c')],{'foreignKey':'ToOpenchannelQueueId','as':'ToQueue'});db[_0x35ff('0x1dd')][_0x35ff('0x11b')](db[_0x35ff('0x187')],{'foreignKey':_0x35ff('0x1e0'),'as':_0x35ff('0x1d4')});db[_0x35ff('0xef')][_0x35ff('0x11b')](db['SmsMessage'],{});db['SmsTransferReport'][_0x35ff('0x11b')](db[_0x35ff('0x52')],{});db['SmsTransferReport'][_0x35ff('0x11b')](db[_0x35ff('0x182')],{'foreignKey':_0x35ff('0x1e1'),'as':_0x35ff('0x1d0')});db['SmsTransferReport']['belongsTo'](db[_0x35ff('0xf')],{'foreignKey':_0x35ff('0x1d7'),'as':_0x35ff('0x1df')});db[_0x35ff('0xef')]['belongsTo'](db[_0x35ff('0xf')],{'foreignKey':_0x35ff('0x1d1'),'as':_0x35ff('0x1dc')});db[_0x35ff('0xef')][_0x35ff('0x11b')](db['SmsQueue'],{'foreignKey':_0x35ff('0x1e2'),'as':_0x35ff('0x1d9')});db[_0x35ff('0xef')]['belongsTo'](db['SmsAccount'],{'foreignKey':_0x35ff('0x1e3'),'as':'ToAccount'});db[_0x35ff('0x122')][_0x35ff('0x10e')](db['Disposition'],{'as':'Dispositions','foreignKey':_0x35ff('0x17b'),'onDelete':'cascade'});db['CmList'][_0x35ff('0x10e')](db[_0x35ff('0x73')],{'as':_0x35ff('0x1e4'),'foreignKey':_0x35ff('0x17b')});db[_0x35ff('0x122')][_0x35ff('0x10e')](db[_0x35ff('0x15c')],{'as':_0x35ff('0x120'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x17b')});db[_0x35ff('0x122')][_0x35ff('0x10e')](db[_0x35ff('0x6f')],{'as':_0x35ff('0x112'),'foreignKey':_0x35ff('0x17b')});db[_0x35ff('0x122')][_0x35ff('0x10e')](db['CmHopperHistory'],{'as':_0x35ff('0x113'),'foreignKey':_0x35ff('0x17b')});db[_0x35ff('0x122')]['hasMany'](db[_0x35ff('0x71')],{'as':_0x35ff('0x71'),'foreignKey':'ListId'});db[_0x35ff('0x122')]['belongsToMany'](db[_0x35ff('0x12c')],{'as':'Queues','through':_0x35ff('0x156')});db[_0x35ff('0x122')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':'cm_user_has_lists'});db[_0x35ff('0xf2')]['hasMany'](db['VoiceExtension'],{'as':_0x35ff('0x111'),'onDelete':'cascade'});db[_0x35ff('0xf2')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':'UserVoicePrefix'});db[_0x35ff('0xf2')][_0x35ff('0x11d')](db['Team'],{'through':_0x35ff('0x108'),'as':_0x35ff('0x168')});db[_0x35ff('0xf4')]['hasMany'](db[_0x35ff('0xf')],{'as':'Users','foreignKey':_0x35ff('0x11c')});db[_0x35ff('0xf4')]['hasMany'](db[_0x35ff('0x1e5')],{'as':'UserProfileSections','foreignKey':'userProfileId','onDelete':_0x35ff('0x10c')});db[_0x35ff('0x1e5')][_0x35ff('0x10e')](db[_0x35ff('0xf7')],{'as':_0x35ff('0x1e6'),'foreignKey':'sectionId','onDelete':_0x35ff('0x10c')});db['WhatsappAccount'][_0x35ff('0x10e')](db[_0x35ff('0x7a')],{'as':_0x35ff('0x160'),'foreignKey':_0x35ff('0x1e7'),'onDelete':_0x35ff('0x10c')});db['WhatsappAccount']['hasMany'](db['CannedAnswer'],{'as':_0x35ff('0x161'),'foreignKey':_0x35ff('0x1e7')});db[_0x35ff('0xfa')]['hasMany'](db[_0x35ff('0xfe')],{'as':_0x35ff('0x158'),'foreignKey':_0x35ff('0x1e7')});db[_0x35ff('0xfa')][_0x35ff('0x10e')](db[_0x35ff('0xfc')],{'as':_0x35ff('0x162')});db['WhatsappAccount']['hasMany'](db[_0x35ff('0x1e8')],{'as':_0x35ff('0x144')});db[_0x35ff('0xfa')][_0x35ff('0x11b')](db[_0x35ff('0x122')],{'as':_0x35ff('0x163'),'foreignKey':'ListId'});db[_0x35ff('0xfa')][_0x35ff('0x11b')](db[_0x35ff('0x153')],{'as':_0x35ff('0x154'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x35ff('0xfa')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':'user_has_whatsapp_accounts'});db[_0x35ff('0x1e8')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x1e8')][_0x35ff('0x11b')](db[_0x35ff('0x104')],{'onDelete':'restrict'});db[_0x35ff('0x1e8')]['belongsTo'](db[_0x35ff('0xfa')],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x1e8')][_0x35ff('0x11b')](db[_0x35ff('0x7e')],{'onDelete':_0x35ff('0x176'),'foreignKey':'IntervalId'});db[_0x35ff('0x1e8')][_0x35ff('0x11b')](db[_0x35ff('0x88')],{'onDelete':_0x35ff('0x176'),'foreignKey':_0x35ff('0x177')});db['WhatsappInteraction'][_0x35ff('0x10e')](db[_0x35ff('0xfe')],{'as':'Messages','onDelete':_0x35ff('0x10c'),'foreignKey':'WhatsappInteractionId'});db[_0x35ff('0xfc')]['belongsTo'](db[_0x35ff('0xfa')],{'as':'Account','foreignKey':_0x35ff('0x1e7')});db[_0x35ff('0xfc')]['belongsTo'](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db['WhatsappInteraction'][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'as':_0x35ff('0x16b'),'foreignKey':'UserId'});db[_0x35ff('0xfc')][_0x35ff('0x11d')](db[_0x35ff('0x88')],{'through':_0x35ff('0x1ab'),'as':'Tags'});db[_0x35ff('0xfc')][_0x35ff('0x11d')](db['Tag'],{'through':'whatsapp_interaction_has_tags','as':_0x35ff('0x16e')});db[_0x35ff('0xfc')][_0x35ff('0x11d')](db['User'],{'as':'Users','through':_0x35ff('0x12b'),'foreignKey':'WhatsappInteractionId'});db['WhatsappMessage'][_0x35ff('0x11b')](db['User'],{'as':_0x35ff('0xf')});db['WhatsappMessage'][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'onDelete':_0x35ff('0x10c'),'as':'Contact'});db[_0x35ff('0xfe')]['belongsTo'](db[_0x35ff('0xfc')],{'onDelete':'cascade','as':_0x35ff('0x173'),'foreignKey':_0x35ff('0x1e9')});db['WhatsappMessage'][_0x35ff('0x11b')](db[_0x35ff('0xfa')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x1e7')});db[_0x35ff('0x100')]['belongsTo'](db['WhatsappAccount'],{});db['WhatsappQueueReport'][_0x35ff('0x11b')](db[_0x35ff('0x122')],{'as':_0x35ff('0x163'),'foreignKey':_0x35ff('0x17b')});db[_0x35ff('0x100')][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db['WhatsappQueueReport']['belongsTo'](db[_0x35ff('0xfc')],{});db[_0x35ff('0x100')]['belongsTo'](db[_0x35ff('0x104')],{});db['WhatsappQueueReport'][_0x35ff('0x11b')](db['WhatsappMessage'],{});db[_0x35ff('0x100')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{});db[_0x35ff('0x102')][_0x35ff('0x11b')](db[_0x35ff('0xfe')],{});db[_0x35ff('0x102')]['belongsTo'](db[_0x35ff('0xfc')],{});db[_0x35ff('0x102')][_0x35ff('0x11b')](db[_0x35ff('0xfa')],{'foreignKey':_0x35ff('0x1ea'),'as':_0x35ff('0x1d0')});db[_0x35ff('0x102')][_0x35ff('0x11b')](db[_0x35ff('0xfa')],{'foreignKey':'ToWhatsappAccountId','as':'ToAccount'});db[_0x35ff('0x102')][_0x35ff('0x11b')](db['WhatsappQueue'],{'foreignKey':_0x35ff('0x1eb'),'as':_0x35ff('0x1d9')});db[_0x35ff('0x102')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'foreignKey':_0x35ff('0x1d7'),'as':'FromAgent'});db[_0x35ff('0x102')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'foreignKey':_0x35ff('0x1d1'),'as':_0x35ff('0x1dc')});db[_0x35ff('0x104')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':_0x35ff('0x135'),'foreignKey':'WhatsappQueueId'});db['WhatsappQueue'][_0x35ff('0x11d')](db[_0x35ff('0xe3')],{'through':_0x35ff('0x1ec'),'as':_0x35ff('0x168')});module[_0x35ff('0x1ed')]={'db':db,'dbH':dbH};
\ No newline at end of file
index 979fb1b..8ce36a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafec=['clientEmail','privateKey','key','pass','localstationid','dsn','secret','oldPassword','isPlainObject','isArray','length','isString','@@{','replace','}@@','includes','path','express','express-winston','util','./config/environment','api','./config/logger','./safe-template','safeTemplate','default','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','format','x-forwarded-for','headers','remoteAddress','url','statusCode','responseTime','user','name','role','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)','method','connection','agent_name','test','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','./api/mailQueue','/api/mail/substatuses','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','./api/mailApplication','./api/mailQueueReport','/api/dashboards','/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/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','./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/chat/groups','/api/chat/proactive_actions','./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/cmCustomField','/api/actions','./api/action','/api/automations','/api/canned_answers','/api/dispositions','/api/conditions','./api/condition','/api/intervals','./api/interval','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','./api/sound','/api/tags','./api/tag','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','/api/integrations','/api/integrations/reports','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','./api/intSalesforceAccount','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intDeskAccount','/api/integrations/desk/configurations','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','./api/intZohoConfiguration','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/configurations','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/configurations','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','./api/network','/api/chat/reports/queue','/api/chat/internal/messages','/api/jscripty/answers/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./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/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','./api/team','./api/license','/api/migrations','./api/migration','/api/attachments','/api/plugins','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','./api/userNotification','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','./api/whatsappInteraction','/api/whatsapp/reports/queue','./api/whatsappQueueReport','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','./api/realtime','/api/auth/local','./api/authLocal','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','/api/jira','/api/rpc','./api/rpc','/api/version','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','join','root','/apidoc','/www','static','/demo','/snippet','snippet','3.0.0','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','username','newPassword','apiKey','street','fax','email','clientSecret','securityToken','code','accessKey','tenantId','token','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','consumerSecret','membername','calleridname','calleridnum','exten','vidaooApiKey'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xafec,0x161));var _0xcafe=function(_0x287ca1,_0x9e0fba){_0x287ca1=_0x287ca1-0x0;var _0x88ce7e=_0xafec[_0x287ca1];return _0x88ce7e;};'use strict';var _=require('lodash');var path=require(_0xcafe('0x0'));var express=require(_0xcafe('0x1'));var ewinston=require(_0xcafe('0x2'));var util=require(_0xcafe('0x3'));var errors=require('./errors');var config=require(_0xcafe('0x4'));var logger=require('./config/logger')(_0xcafe('0x5'));var authLogger=require(_0xcafe('0x6'))('auth');var safeTemplate=require(_0xcafe('0x7'))[_0xcafe('0x8')];exports[_0xcafe('0x9')]=function(_0x27062a){_0x27062a[_0xcafe('0xa')](ewinston[_0xcafe('0xb')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0xed4ea1,_0x35762a){var _0x21bef8=_0xcafe('0xc');if(!_[_0xcafe('0xd')](_0xed4ea1[_0xcafe('0xe')])){_0x21bef8+='\x20body=%s';var _0x433b66=_0xed4ea1['body'];maskSensitiveData(_0x433b66);}return safeTemplate(util[_0xcafe('0xf')](_0x21bef8,_0xed4ea1['method'],_0xed4ea1['headers'][_0xcafe('0x10')]?_0xed4ea1[_0xcafe('0x11')][_0xcafe('0x10')]:_0xed4ea1['connection'][_0xcafe('0x12')]||_0xed4ea1['ip'],_0xed4ea1[_0xcafe('0x13')],_0x35762a[_0xcafe('0x14')],_0x35762a[_0xcafe('0x15')],_0xed4ea1['user']?_0xed4ea1[_0xcafe('0x16')]['id']:null,_0xed4ea1[_0xcafe('0x16')]?_0xed4ea1['user'][_0xcafe('0x17')]:null,_0xed4ea1[_0xcafe('0x16')]?_0xed4ea1['user'][_0xcafe('0x18')]:null,_0x433b66?util[_0xcafe('0x19')](_0x433b66,![],null):''));}}));_0x27062a[_0xcafe('0xa')](ewinston[_0xcafe('0xb')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x2e26ef,_0x1a4a47){var _0x45dc6d='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x2e26ef[_0xcafe('0xe')]&&_0x2e26ef[_0xcafe('0xe')][_0xcafe('0x1a')]&&_0x2e26ef[_0xcafe('0xe')][_0xcafe('0x1b')]){_0x45dc6d=_0xcafe('0x1c');}return util['format'](_0x45dc6d,_0x2e26ef[_0xcafe('0x1d')],_0x2e26ef[_0xcafe('0x11')][_0xcafe('0x10')]?_0x2e26ef[_0xcafe('0x11')][_0xcafe('0x10')]:_0x2e26ef[_0xcafe('0x1e')][_0xcafe('0x12')]||_0x2e26ef['ip'],_0x2e26ef[_0xcafe('0x13')],_0x1a4a47['statusCode'],_0x1a4a47[_0xcafe('0x15')],_0x2e26ef[_0xcafe('0x16')]?_0x2e26ef['user']['id']:null,_0x2e26ef[_0xcafe('0x16')]?_0x2e26ef[_0xcafe('0x16')][_0xcafe('0x17')]:null,_0x2e26ef[_0xcafe('0x16')]?_0x2e26ef[_0xcafe('0x16')][_0xcafe('0x18')]:null,_0x2e26ef['body']&&_0x2e26ef[_0xcafe('0xe')][_0xcafe('0x1a')]?_0x2e26ef[_0xcafe('0xe')][_0xcafe('0x1a')]:'other',_0x2e26ef[_0xcafe('0xe')]&&_0x2e26ef[_0xcafe('0xe')]['agent_id']?_0x2e26ef[_0xcafe('0xe')][_0xcafe('0x1b')]:'',_0x2e26ef['body']&&_0x2e26ef[_0xcafe('0xe')]['agent_name']?_0x2e26ef[_0xcafe('0xe')][_0xcafe('0x1f')]:'');},'ignoreRoute':function(_0x33b77d){var _0x4ef74f=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x4ef74f[_0xcafe('0x20')](_0x33b77d[_0xcafe('0x13')]);}}));_0x27062a[_0xcafe('0xa')](_0xcafe('0x21'),require(_0xcafe('0x22')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x23'),require(_0xcafe('0x24')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x25'),require(_0xcafe('0x26')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x27'),require('./api/voiceExtension'));_0x27062a[_0xcafe('0xa')](_0xcafe('0x28'),require(_0xcafe('0x29')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x2a'),require(_0xcafe('0x2b')));_0x27062a['use']('/api/voice/recordings',require(_0xcafe('0x2c')));_0x27062a['use'](_0xcafe('0x2d'),require(_0xcafe('0x2e')));_0x27062a['use'](_0xcafe('0x2f'),require('./api/voiceMail'));_0x27062a[_0xcafe('0xa')](_0xcafe('0x30'),require(_0xcafe('0x31')));_0x27062a[_0xcafe('0xa')]('/api/voice/calls/reports',require('./api/voiceCallReport'));_0x27062a['use'](_0xcafe('0x32'),require(_0xcafe('0x33')));_0x27062a['use'](_0xcafe('0x34'),require(_0xcafe('0x35')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x36'),require(_0xcafe('0x37')));_0x27062a['use'](_0xcafe('0x38'),require('./api/memberReport'));_0x27062a[_0xcafe('0xa')](_0xcafe('0x39'),require(_0xcafe('0x3a')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x3b'),require(_0xcafe('0x3c')));_0x27062a[_0xcafe('0xa')]('/api/mail/out_servers',require(_0xcafe('0x3d')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x3e'),require(_0xcafe('0x3f')));_0x27062a[_0xcafe('0xa')]('/api/mail/queues',require(_0xcafe('0x40')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x41'),require('./api/mailSubstatus'));_0x27062a['use'](_0xcafe('0x42'),require(_0xcafe('0x43')));_0x27062a['use'](_0xcafe('0x44'),require(_0xcafe('0x45')));_0x27062a[_0xcafe('0xa')]('/api/mail/applications',require(_0xcafe('0x46')));_0x27062a[_0xcafe('0xa')]('/api/mail/reports/queue',require(_0xcafe('0x47')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x48'),require('./api/dashboard'));_0x27062a[_0xcafe('0xa')](_0xcafe('0x49'),require(_0xcafe('0x4a')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x4b'),require(_0xcafe('0x4c')));_0x27062a['use'](_0xcafe('0x4d'),require(_0xcafe('0x4e')));_0x27062a['use'](_0xcafe('0x4f'),require(_0xcafe('0x50')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x51'),require(_0xcafe('0x52')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x53'),require(_0xcafe('0x54')));_0x27062a['use']('/api/fax/reports/queue',require(_0xcafe('0x55')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x56'),require(_0xcafe('0x57')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x58'),require('./api/smsApplication'));_0x27062a['use'](_0xcafe('0x59'),require(_0xcafe('0x5a')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x5b'),require(_0xcafe('0x5c')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x5d'),require(_0xcafe('0x5e')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x5f'),require('./api/openchannelAccount'));_0x27062a[_0xcafe('0xa')]('/api/openchannel/applications',require(_0xcafe('0x60')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x61'),require(_0xcafe('0x62')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x63'),require(_0xcafe('0x64')));_0x27062a[_0xcafe('0xa')]('/api/openchannel/queues',require(_0xcafe('0x65')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x66'),require(_0xcafe('0x67')));_0x27062a[_0xcafe('0xa')]('/api/openchannel/reports/queue',require(_0xcafe('0x68')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x69'),require(_0xcafe('0x6a')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x6b'),require(_0xcafe('0x6c')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x6d'),require(_0xcafe('0x6e')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x6f'),require(_0xcafe('0x70')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x71'),require('./api/chatQueue'));_0x27062a[_0xcafe('0xa')](_0xcafe('0x72'),require('./api/chatGroup'));_0x27062a['use'](_0xcafe('0x73'),require('./api/chatProactiveAction'));_0x27062a[_0xcafe('0xa')]('/api/cm/companies',require(_0xcafe('0x74')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x75'),require(_0xcafe('0x76')));_0x27062a['use'](_0xcafe('0x77'),require(_0xcafe('0x78')));_0x27062a['use'](_0xcafe('0x79'),require(_0xcafe('0x7a')));_0x27062a['use'](_0xcafe('0x7b'),require(_0xcafe('0x7c')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x7d'),require(_0xcafe('0x7e')));_0x27062a[_0xcafe('0xa')]('/api/cm/custom_fields',require(_0xcafe('0x7f')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x80'),require(_0xcafe('0x81')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x82'),require('./api/automation'));_0x27062a[_0xcafe('0xa')](_0xcafe('0x83'),require('./api/cannedAnswer'));_0x27062a[_0xcafe('0xa')](_0xcafe('0x84'),require('./api/disposition'));_0x27062a[_0xcafe('0xa')](_0xcafe('0x85'),require(_0xcafe('0x86')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x87'),require(_0xcafe('0x88')));_0x27062a[_0xcafe('0xa')]('/api/pauses',require(_0xcafe('0x89')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x8a'),require(_0xcafe('0x8b')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x8c'),require(_0xcafe('0x8d')));_0x27062a['use'](_0xcafe('0x8e'),require(_0xcafe('0x8f')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x90'),require(_0xcafe('0x91')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x92'),require(_0xcafe('0x93')));_0x27062a['use'](_0xcafe('0x94'),require(_0xcafe('0x95')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x96'),require(_0xcafe('0x97')));_0x27062a['use'](_0xcafe('0x98'),require('./api/variable'));_0x27062a[_0xcafe('0xa')](_0xcafe('0x99'),require('./api/integration'));_0x27062a[_0xcafe('0xa')](_0xcafe('0x9a'),require('./api/integrationReport'));_0x27062a['use'](_0xcafe('0x9b'),require(_0xcafe('0x9c')));_0x27062a['use'](_0xcafe('0x9d'),require(_0xcafe('0x9e')));_0x27062a[_0xcafe('0xa')]('/api/analytics/extracted_reports',require(_0xcafe('0x9f')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xa0'),require(_0xcafe('0xa1')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xa2'),require(_0xcafe('0xa3')));_0x27062a['use'](_0xcafe('0xa4'),require(_0xcafe('0xa5')));_0x27062a[_0xcafe('0xa')]('/api/integrations/salesforce/accounts',require(_0xcafe('0xa6')));_0x27062a[_0xcafe('0xa')]('/api/integrations/salesforce/configurations',require(_0xcafe('0xa7')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xa8'),require(_0xcafe('0xa9')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xaa'),require('./api/intSugarcrmAccount'));_0x27062a['use'](_0xcafe('0xab'),require(_0xcafe('0xac')));_0x27062a['use'](_0xcafe('0xad'),require('./api/intSugarcrmField'));_0x27062a[_0xcafe('0xa')]('/api/integrations/desk/accounts',require(_0xcafe('0xae')));_0x27062a['use'](_0xcafe('0xaf'),require('./api/intDeskConfiguration'));_0x27062a[_0xcafe('0xa')](_0xcafe('0xb0'),require(_0xcafe('0xb1')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xb2'),require(_0xcafe('0xb3')));_0x27062a[_0xcafe('0xa')]('/api/integrations/zoho/configurations',require(_0xcafe('0xb4')));_0x27062a[_0xcafe('0xa')]('/api/integrations/zoho/fields',require(_0xcafe('0xb5')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xb6'),require('./api/intZendeskAccount'));_0x27062a[_0xcafe('0xa')]('/api/integrations/zendesk/configurations',require(_0xcafe('0xb7')));_0x27062a['use'](_0xcafe('0xb8'),require(_0xcafe('0xb9')));_0x27062a[_0xcafe('0xa')]('/api/integrations/freshdesk/accounts',require('./api/intFreshdeskAccount'));_0x27062a[_0xcafe('0xa')](_0xcafe('0xba'),require('./api/intFreshdeskConfiguration'));_0x27062a[_0xcafe('0xa')](_0xcafe('0xbb'),require(_0xcafe('0xbc')));_0x27062a[_0xcafe('0xa')]('/api/integrations/vtiger/accounts',require('./api/intVtigerAccount'));_0x27062a['use'](_0xcafe('0xbd'),require('./api/intVtigerConfiguration'));_0x27062a[_0xcafe('0xa')](_0xcafe('0xbe'),require(_0xcafe('0xbf')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xc0'),require(_0xcafe('0xc1')));_0x27062a['use'](_0xcafe('0xc2'),require(_0xcafe('0xc3')));_0x27062a['use'](_0xcafe('0xc4'),require('./api/intServicenowField'));_0x27062a[_0xcafe('0xa')](_0xcafe('0xc5'),require(_0xcafe('0xc6')));_0x27062a[_0xcafe('0xa')]('/api/integrations/dynamics365/configurations',require(_0xcafe('0xc7')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xc8'),require(_0xcafe('0xc9')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xca'),require(_0xcafe('0xcb')));_0x27062a['use']('/api/integrations/freshsales/configurations',require(_0xcafe('0xcc')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xcd'),require(_0xcafe('0xce')));_0x27062a['use'](_0xcafe('0xcf'),require(_0xcafe('0xd0')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xd1'),require('./api/chatQueueReport'));_0x27062a['use'](_0xcafe('0xd2'),require('./api/chatInternalMessage'));_0x27062a[_0xcafe('0xa')](_0xcafe('0xd3'),require('./api/jscriptyAnswerReport'));_0x27062a[_0xcafe('0xa')]('/api/jscripty/questions/reports',require(_0xcafe('0xd4')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xd5'),require('./api/jscriptySessionReport'));_0x27062a[_0xcafe('0xa')]('/api/sms/reports/queue',require(_0xcafe('0xd6')));_0x27062a[_0xcafe('0xa')]('/api/square/reports',require(_0xcafe('0xd7')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xd8'),require('./api/squareReportDetail'));_0x27062a[_0xcafe('0xa')](_0xcafe('0xd9'),require(_0xcafe('0xda')));_0x27062a['use'](_0xcafe('0xdb'),require(_0xcafe('0xdc')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xdd'),require(_0xcafe('0xde')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xdf'),require('./api/squareProject'));_0x27062a[_0xcafe('0xa')](_0xcafe('0xe0'),require(_0xcafe('0xe1')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xe2'),require(_0xcafe('0xe3')));_0x27062a[_0xcafe('0xa')]('/api/teams',require(_0xcafe('0xe4')));_0x27062a['use']('/api/license',require(_0xcafe('0xe5')));_0x27062a[_0xcafe('0xa')]('/api/campaigns',require('./api/campaign'));_0x27062a['use'](_0xcafe('0xe6'),require(_0xcafe('0xe7')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xe8'),require('./api/attachment'));_0x27062a['use'](_0xcafe('0xe9'),require('./api/plugin'));_0x27062a[_0xcafe('0xa')]('/api/mail/reports/transfer',require(_0xcafe('0xea')));_0x27062a['use'](_0xcafe('0xeb'),require(_0xcafe('0xec')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xed'),require(_0xcafe('0xee')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xef'),require(_0xcafe('0xf0')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xf1'),require(_0xcafe('0xf2')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xf3'),require(_0xcafe('0xf4')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xf5'),require(_0xcafe('0xf6')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xf7'),require(_0xcafe('0xf8')));_0x27062a['use'](_0xcafe('0xf9'),require(_0xcafe('0xfa')));_0x27062a[_0xcafe('0xa')](_0xcafe('0xfb'),require(_0xcafe('0xfc')));_0x27062a['use'](_0xcafe('0xfd'),require(_0xcafe('0xfe')));_0x27062a[_0xcafe('0xa')]('/api/whatsapp/accounts',require(_0xcafe('0xff')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x100'),require(_0xcafe('0x101')));_0x27062a['use']('/api/whatsapp/interactions',require(_0xcafe('0x102')));_0x27062a[_0xcafe('0xa')]('/api/whatsapp/messages',require('./api/whatsappMessage'));_0x27062a[_0xcafe('0xa')](_0xcafe('0x103'),require(_0xcafe('0x104')));_0x27062a[_0xcafe('0xa')]('/api/whatsapp/reports/transfer',require(_0xcafe('0x105')));_0x27062a['use'](_0xcafe('0x106'),require(_0xcafe('0x107')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x108'),require(_0xcafe('0x109')));_0x27062a[_0xcafe('0xa')]('/api/realtime',require(_0xcafe('0x10a')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x10b'),require(_0xcafe('0x10c')));_0x27062a[_0xcafe('0xa')]('/api/auth/google',require(_0xcafe('0x10d')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x10e'),require(_0xcafe('0x10f')));_0x27062a['use'](_0xcafe('0x110'),require('./api/jira'));_0x27062a[_0xcafe('0xa')](_0xcafe('0x111'),require(_0xcafe('0x112')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x113'),require(_0xcafe('0x114')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x115'),require(_0xcafe('0x116')));_0x27062a[_0xcafe('0xa')](_0xcafe('0x117'),require(_0xcafe('0x118')));_0x27062a[_0xcafe('0xa')]('/api/webbar',require('./api/webbar'));_0x27062a[_0xcafe('0xa')]('/apidoc',express['static'](path[_0xcafe('0x119')](config[_0xcafe('0x11a')],_0xcafe('0x11b'))));_0x27062a[_0xcafe('0xa')](_0xcafe('0x11c'),express[_0xcafe('0x11d')](path['join'](config[_0xcafe('0x11a')],_0xcafe('0x11c'))));_0x27062a['use'](_0xcafe('0x11e'),express[_0xcafe('0x11d')](path[_0xcafe('0x119')](config[_0xcafe('0x11a')],_0xcafe('0x11e'))));_0x27062a[_0xcafe('0xa')](_0xcafe('0x11f'),express[_0xcafe('0x11d')](path[_0xcafe('0x119')](config[_0xcafe('0x11a')],_0xcafe('0x120'),_0xcafe('0x121'))));_0x27062a[_0xcafe('0xa')](_0xcafe('0x122'),express[_0xcafe('0x11d')](path['join'](config['root'],_0xcafe('0x123'))));_0x27062a[_0xcafe('0x124')](_0xcafe('0x125'))[_0xcafe('0x126')](errors[0x194]);_0x27062a[_0xcafe('0x124')]('/*')['get'](function(_0x42220a,_0x236c73){_0x236c73[_0xcafe('0x127')](path[_0xcafe('0x128')](_0x27062a[_0xcafe('0x126')](_0xcafe('0x129'))+'/index.html'));});};var sensitiveFields=[_0xcafe('0x12a'),'password',_0xcafe('0x12b'),_0xcafe('0x12c'),'firstName','lastName',_0xcafe('0x12d'),'phone','mobile',_0xcafe('0x12e'),_0xcafe('0x12f'),'clientId',_0xcafe('0x130'),_0xcafe('0x131'),_0xcafe('0x132'),_0xcafe('0x133'),_0xcafe('0x134'),_0xcafe('0x135'),_0xcafe('0x136'),_0xcafe('0x137'),_0xcafe('0x138'),_0xcafe('0x139'),_0xcafe('0x13a'),_0xcafe('0x13b'),_0xcafe('0x13c'),_0xcafe('0x13d'),_0xcafe('0x13e'),_0xcafe('0x13f'),_0xcafe('0x140'),_0xcafe('0x141'),_0xcafe('0x142'),'accesskeyid','secretaccesskey',_0xcafe('0x143'),_0xcafe('0x16'),_0xcafe('0x144'),'accountSid',_0xcafe('0x145'),_0xcafe('0x146'),_0xcafe('0x147'),'registry',_0xcafe('0x148')];function maskSensitiveData(_0x1bedf6){var _0x349e42=/(?!^)[\s\S](?!$)/g;if(!_[_0xcafe('0x149')](_0x1bedf6))return;for(var _0x3cfa15 in _0x1bedf6){if(_[_0xcafe('0x14a')](_0x1bedf6[_0x3cfa15])){for(var _0x2af257=0x0;_0x2af257<_0x1bedf6[_0x3cfa15][_0xcafe('0x14b')];_0x2af257++){maskSensitiveData(_0x1bedf6[_0x3cfa15][_0x2af257]);}}else if(_['isPlainObject'](_0x1bedf6[_0x3cfa15])){maskSensitiveData(_0x1bedf6[_0x3cfa15]);}else if(_[_0xcafe('0x14c')](_0x1bedf6[_0x3cfa15])){_0x1bedf6[_0x3cfa15]=_0x1bedf6[_0x3cfa15]['replace'](/{{{/g,_0xcafe('0x14d'))[_0xcafe('0x14e')](/}}}/g,_0xcafe('0x14f'))[_0xcafe('0x14e')](/{{/g,'@{')[_0xcafe('0x14e')](/}}/g,'}@');if(_[_0xcafe('0x150')](sensitiveFields,_0x3cfa15)){_0x1bedf6[_0x3cfa15]=_0x1bedf6[_0x3cfa15][_0xcafe('0x14e')](_0x349e42,'*');}}}}
\ No newline at end of file
+var _0x018d=['/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','./api/jscriptySessionReport','./api/smsQueueReport','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','./api/jscriptyProject','/api/settings','./api/setting','./api/squareOdbc','./api/squareProject','/api/square/messages','./api/squareMessage','/api/teams','./api/team','/api/license','./api/license','/api/campaigns','./api/campaign','./api/migration','/api/attachments','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','./api/userProfileResource','/api/userNotifications','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/authLocal','/api/auth/google','./api/authGoogle','/api/rpc','/api/version','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/apidoc','static','root','/www','join','/demo','snippet','3.0.0','/plugins','/server/files/plugins','get','appPath','/index.html','username','password','newPassword','apiKey','firstName','lastName','street','phone','mobile','fax','email','clientId','clientSecret','securityToken','accessKey','tenantId','token','accessToken','accessTokenSecret','authToken','consumerKey','consumerSecret','membername','calleridname','calleridnum','exten','vidaooApiKey','privateKey','accesskeyid','secretaccesskey','key','pass','localstationid','isPlainObject','isString','replace','@@{','}@@','lodash','express','express-winston','util','./errors','./config/logger','auth','safeTemplate','default','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','body','\x20body=%s','format','method','x-forwarded-for','headers','connection','url','statusCode','responseTime','user','inspect','use','device','remoteAddress','name','agent_id','agent_name','test','/api/users','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/trunk','/api/voice/transfers/reports','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/fax/accounts','./api/faxAccount','./api/faxApplication','/api/fax/interactions','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsInteraction','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','/api/cm/hopper_black','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','./api/cmCustomField','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval','/api/pauses','./api/pause','./api/cdr','/api/voiceQueuesLog','/api/sounds','/api/tags','./api/template','/api/triggers','./api/trigger','/api/variables','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','./api/analyticDefaultReport','./api/analyticExtractedReport','./api/analyticMetric','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','./api/intDynamics365Account','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x018d,0x79));var _0xd018=function(_0x390752,_0x42cad3){_0x390752=_0x390752-0x0;var _0x5eca55=_0x018d[_0x390752];return _0x5eca55;};'use strict';var _=require(_0xd018('0x0'));var path=require('path');var express=require(_0xd018('0x1'));var ewinston=require(_0xd018('0x2'));var util=require(_0xd018('0x3'));var errors=require(_0xd018('0x4'));var config=require('./config/environment');var logger=require(_0xd018('0x5'))('api');var authLogger=require(_0xd018('0x5'))(_0xd018('0x6'));var safeTemplate=require('./safe-template')[_0xd018('0x7')];exports[_0xd018('0x8')]=function(_0x2a85d7){_0x2a85d7['use'](ewinston[_0xd018('0x9')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x4a0c7d,_0x53d124){var _0xf3551d=_0xd018('0xa');if(!_['isEmpty'](_0x4a0c7d[_0xd018('0xb')])){_0xf3551d+=_0xd018('0xc');var _0x85466f=_0x4a0c7d['body'];maskSensitiveData(_0x85466f);}return safeTemplate(util[_0xd018('0xd')](_0xf3551d,_0x4a0c7d[_0xd018('0xe')],_0x4a0c7d['headers'][_0xd018('0xf')]?_0x4a0c7d[_0xd018('0x10')][_0xd018('0xf')]:_0x4a0c7d[_0xd018('0x11')]['remoteAddress']||_0x4a0c7d['ip'],_0x4a0c7d[_0xd018('0x12')],_0x53d124[_0xd018('0x13')],_0x53d124[_0xd018('0x14')],_0x4a0c7d[_0xd018('0x15')]?_0x4a0c7d['user']['id']:null,_0x4a0c7d[_0xd018('0x15')]?_0x4a0c7d[_0xd018('0x15')]['name']:null,_0x4a0c7d[_0xd018('0x15')]?_0x4a0c7d[_0xd018('0x15')]['role']:null,_0x85466f?util[_0xd018('0x16')](_0x85466f,![],null):''));}}));_0x2a85d7[_0xd018('0x17')](ewinston[_0xd018('0x9')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x1be2a1,_0x4033b2){var _0x4283fc='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x1be2a1['body']&&_0x1be2a1[_0xd018('0xb')][_0xd018('0x18')]&&_0x1be2a1[_0xd018('0xb')]['agent_id']){_0x4283fc='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util['format'](_0x4283fc,_0x1be2a1[_0xd018('0xe')],_0x1be2a1[_0xd018('0x10')][_0xd018('0xf')]?_0x1be2a1[_0xd018('0x10')][_0xd018('0xf')]:_0x1be2a1[_0xd018('0x11')][_0xd018('0x19')]||_0x1be2a1['ip'],_0x1be2a1[_0xd018('0x12')],_0x4033b2[_0xd018('0x13')],_0x4033b2[_0xd018('0x14')],_0x1be2a1['user']?_0x1be2a1[_0xd018('0x15')]['id']:null,_0x1be2a1[_0xd018('0x15')]?_0x1be2a1[_0xd018('0x15')][_0xd018('0x1a')]:null,_0x1be2a1[_0xd018('0x15')]?_0x1be2a1[_0xd018('0x15')]['role']:null,_0x1be2a1[_0xd018('0xb')]&&_0x1be2a1[_0xd018('0xb')]['device']?_0x1be2a1[_0xd018('0xb')][_0xd018('0x18')]:'other',_0x1be2a1['body']&&_0x1be2a1[_0xd018('0xb')][_0xd018('0x1b')]?_0x1be2a1[_0xd018('0xb')]['agent_id']:'',_0x1be2a1[_0xd018('0xb')]&&_0x1be2a1['body'][_0xd018('0x1c')]?_0x1be2a1[_0xd018('0xb')][_0xd018('0x1c')]:'');},'ignoreRoute':function(_0x369253){var _0x582d9f=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x582d9f[_0xd018('0x1d')](_0x369253[_0xd018('0x12')]);}}));_0x2a85d7['use'](_0xd018('0x1e'),require('./api/user'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x1f'),require(_0xd018('0x20')));_0x2a85d7['use'](_0xd018('0x21'),require('./api/voiceContext'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x22'),require(_0xd018('0x23')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x24'),require(_0xd018('0x25')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x26'),require(_0xd018('0x27')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x28'),require(_0xd018('0x29')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x2a'),require(_0xd018('0x2b')));_0x2a85d7[_0xd018('0x17')]('/api/voice/mails',require(_0xd018('0x2c')));_0x2a85d7['use'](_0xd018('0x2d'),require(_0xd018('0x2e')));_0x2a85d7[_0xd018('0x17')]('/api/voice/calls/reports',require(_0xd018('0x2f')));_0x2a85d7['use'](_0xd018('0x30'),require(_0xd018('0x31')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x32'),require(_0xd018('0x33')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x34'),require(_0xd018('0x35')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x36'),require('./api/memberReport'));_0x2a85d7[_0xd018('0x17')]('/api/trunks',require(_0xd018('0x37')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x38'),require('./api/voiceTransferReport'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x39'),require(_0xd018('0x3a')));_0x2a85d7['use'](_0xd018('0x3b'),require('./api/mailAccount'));_0x2a85d7['use']('/api/mail/queues',require('./api/mailQueue'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x3c'),require(_0xd018('0x3d')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x3e'),require('./api/mailInteraction'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x3f'),require(_0xd018('0x40')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x41'),require(_0xd018('0x42')));_0x2a85d7['use'](_0xd018('0x43'),require(_0xd018('0x44')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x45'),require(_0xd018('0x46')));_0x2a85d7['use']('/api/dashboards/items',require('./api/dashboardItem'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x47'),require(_0xd018('0x48')));_0x2a85d7[_0xd018('0x17')]('/api/fax/applications',require(_0xd018('0x49')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x4a'),require('./api/faxInteraction'));_0x2a85d7['use'](_0xd018('0x4b'),require(_0xd018('0x4c')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x4d'),require(_0xd018('0x4e')));_0x2a85d7['use']('/api/fax/reports/queue',require('./api/faxQueueReport'));_0x2a85d7['use'](_0xd018('0x4f'),require(_0xd018('0x50')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x51'),require('./api/smsApplication'));_0x2a85d7[_0xd018('0x17')]('/api/sms/interactions',require(_0xd018('0x52')));_0x2a85d7['use']('/api/sms/messages',require(_0xd018('0x53')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x54'),require(_0xd018('0x55')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x56'),require('./api/openchannelAccount'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x57'),require(_0xd018('0x58')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x59'),require(_0xd018('0x5a')));_0x2a85d7['use'](_0xd018('0x5b'),require(_0xd018('0x5c')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x5d'),require(_0xd018('0x5e')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x5f'),require('./api/chatWebsite'));_0x2a85d7[_0xd018('0x17')]('/api/openchannel/reports/queue',require(_0xd018('0x60')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x61'),require(_0xd018('0x62')));_0x2a85d7['use'](_0xd018('0x63'),require('./api/chatInteraction'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x64'),require(_0xd018('0x65')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x66'),require('./api/chatOfflineMessage'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x67'),require(_0xd018('0x68')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x69'),require(_0xd018('0x6a')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x6b'),require(_0xd018('0x6c')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x6d'),require(_0xd018('0x6e')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x6f'),require(_0xd018('0x70')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x71'),require('./api/cmHopper'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x72'),require('./api/cmHopperBlack'));_0x2a85d7[_0xd018('0x17')]('/api/cm/hopper_final',require(_0xd018('0x73')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x74'),require(_0xd018('0x75')));_0x2a85d7[_0xd018('0x17')]('/api/cm/custom_fields',require(_0xd018('0x76')));_0x2a85d7['use']('/api/actions',require(_0xd018('0x77')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x78'),require(_0xd018('0x79')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x7a'),require(_0xd018('0x7b')));_0x2a85d7['use'](_0xd018('0x7c'),require(_0xd018('0x7d')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x7e'),require(_0xd018('0x7f')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x80'),require(_0xd018('0x81')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x82'),require(_0xd018('0x83')));_0x2a85d7[_0xd018('0x17')]('/api/cdr',require(_0xd018('0x84')));_0x2a85d7['use'](_0xd018('0x85'),require('./api/voiceQueuesLog'));_0x2a85d7[_0xd018('0x17')]('/api/schedules',require('./api/schedule'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x86'),require('./api/sound'));_0x2a85d7['use'](_0xd018('0x87'),require('./api/tag'));_0x2a85d7[_0xd018('0x17')]('/api/templates',require(_0xd018('0x88')));_0x2a85d7['use'](_0xd018('0x89'),require(_0xd018('0x8a')));_0x2a85d7['use'](_0xd018('0x8b'),require('./api/variable'));_0x2a85d7[_0xd018('0x17')]('/api/integrations',require(_0xd018('0x8c')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x8d'),require(_0xd018('0x8e')));_0x2a85d7['use'](_0xd018('0x8f'),require(_0xd018('0x90')));_0x2a85d7[_0xd018('0x17')]('/api/analytics/default_reports',require(_0xd018('0x91')));_0x2a85d7[_0xd018('0x17')]('/api/analytics/extracted_reports',require(_0xd018('0x92')));_0x2a85d7[_0xd018('0x17')]('/api/analytics/metrics',require(_0xd018('0x93')));_0x2a85d7[_0xd018('0x17')]('/api/analytics/field_reports',require(_0xd018('0x94')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x95'),require(_0xd018('0x96')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x97'),require(_0xd018('0x98')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x99'),require(_0xd018('0x9a')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x9b'),require('./api/intSalesforceField'));_0x2a85d7['use'](_0xd018('0x9c'),require(_0xd018('0x9d')));_0x2a85d7[_0xd018('0x17')]('/api/integrations/sugarcrm/configurations',require(_0xd018('0x9e')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x9f'),require(_0xd018('0xa0')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xa1'),require(_0xd018('0xa2')));_0x2a85d7['use'](_0xd018('0xa3'),require(_0xd018('0xa4')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xa5'),require(_0xd018('0xa6')));_0x2a85d7['use'](_0xd018('0xa7'),require(_0xd018('0xa8')));_0x2a85d7['use'](_0xd018('0xa9'),require(_0xd018('0xaa')));_0x2a85d7[_0xd018('0x17')]('/api/integrations/zoho/fields',require('./api/intZohoField'));_0x2a85d7[_0xd018('0x17')](_0xd018('0xab'),require(_0xd018('0xac')));_0x2a85d7['use'](_0xd018('0xad'),require('./api/intZendeskConfiguration'));_0x2a85d7['use'](_0xd018('0xae'),require(_0xd018('0xaf')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xb0'),require(_0xd018('0xb1')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xb2'),require(_0xd018('0xb3')));_0x2a85d7['use'](_0xd018('0xb4'),require(_0xd018('0xb5')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xb6'),require(_0xd018('0xb7')));_0x2a85d7['use'](_0xd018('0xb8'),require(_0xd018('0xb9')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xba'),require(_0xd018('0xbb')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xbc'),require(_0xd018('0xbd')));_0x2a85d7[_0xd018('0x17')]('/api/integrations/servicenow/configurations',require(_0xd018('0xbe')));_0x2a85d7['use'](_0xd018('0xbf'),require(_0xd018('0xc0')));_0x2a85d7[_0xd018('0x17')]('/api/integrations/dynamics365/accounts',require(_0xd018('0xc1')));_0x2a85d7[_0xd018('0x17')]('/api/integrations/dynamics365/configurations',require('./api/intDynamics365Configuration'));_0x2a85d7[_0xd018('0x17')](_0xd018('0xc2'),require(_0xd018('0xc3')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xc4'),require(_0xd018('0xc5')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xc6'),require(_0xd018('0xc7')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xc8'),require(_0xd018('0xc9')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xca'),require(_0xd018('0xcb')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xcc'),require(_0xd018('0xcd')));_0x2a85d7[_0xd018('0x17')]('/api/chat/internal/messages',require('./api/chatInternalMessage'));_0x2a85d7[_0xd018('0x17')]('/api/jscripty/answers/reports',require(_0xd018('0xce')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xcf'),require(_0xd018('0xd0')));_0x2a85d7['use']('/api/jscripty/sessions/reports',require(_0xd018('0xd1')));_0x2a85d7[_0xd018('0x17')]('/api/sms/reports/queue',require(_0xd018('0xd2')));_0x2a85d7['use']('/api/square/reports',require(_0xd018('0xd3')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xd4'),require(_0xd018('0xd5')));_0x2a85d7[_0xd018('0x17')]('/api/jscripty/projects',require(_0xd018('0xd6')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xd7'),require(_0xd018('0xd8')));_0x2a85d7[_0xd018('0x17')]('/api/square/odbc',require(_0xd018('0xd9')));_0x2a85d7[_0xd018('0x17')]('/api/square/projects',require(_0xd018('0xda')));_0x2a85d7[_0xd018('0x17')]('/api/square/recordings',require('./api/squareRecording'));_0x2a85d7[_0xd018('0x17')](_0xd018('0xdb'),require(_0xd018('0xdc')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xdd'),require(_0xd018('0xde')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xdf'),require(_0xd018('0xe0')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xe1'),require(_0xd018('0xe2')));_0x2a85d7[_0xd018('0x17')]('/api/migrations',require(_0xd018('0xe3')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xe4'),require(_0xd018('0xe5')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xe6'),require(_0xd018('0xe7')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xe8'),require('./api/mailTransferReport'));_0x2a85d7[_0xd018('0x17')](_0xd018('0xe9'),require(_0xd018('0xea')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xeb'),require(_0xd018('0xec')));_0x2a85d7[_0xd018('0x17')]('/api/openchannel/reports/transfer',require('./api/openchannelTransferReport'));_0x2a85d7['use'](_0xd018('0xed'),require(_0xd018('0xee')));_0x2a85d7['use'](_0xd018('0xef'),require(_0xd018('0xf0')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xf1'),require(_0xd018('0xf2')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xf3'),require(_0xd018('0xf4')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xf5'),require(_0xd018('0xf6')));_0x2a85d7[_0xd018('0x17')]('/api/userProfile/resources',require(_0xd018('0xf7')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xf8'),require('./api/userNotification'));_0x2a85d7[_0xd018('0x17')](_0xd018('0xf9'),require(_0xd018('0xfa')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xfb'),require('./api/whatsappApplication'));_0x2a85d7['use']('/api/whatsapp/interactions',require('./api/whatsappInteraction'));_0x2a85d7[_0xd018('0x17')](_0xd018('0xfc'),require(_0xd018('0xfd')));_0x2a85d7['use'](_0xd018('0xfe'),require(_0xd018('0xff')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x100'),require(_0xd018('0x101')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x102'),require(_0xd018('0x103')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x104'),require(_0xd018('0x105')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x106'),require('./api/realtime'));_0x2a85d7[_0xd018('0x17')]('/api/auth/local',require(_0xd018('0x107')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x108'),require(_0xd018('0x109')));_0x2a85d7[_0xd018('0x17')]('/api/jira',require('./api/jira'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x10a'),require('./api/rpc'));_0x2a85d7['use'](_0xd018('0x10b'),require('./api/version'));_0x2a85d7[_0xd018('0x17')]('/api/system',require('./api/system'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x10c'),require(_0xd018('0x10d')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x10e'),require(_0xd018('0x10f')));_0x2a85d7['use'](_0xd018('0x110'),express[_0xd018('0x111')](path['join'](config[_0xd018('0x112')],_0xd018('0x110'))));_0x2a85d7[_0xd018('0x17')](_0xd018('0x113'),express[_0xd018('0x111')](path[_0xd018('0x114')](config[_0xd018('0x112')],_0xd018('0x113'))));_0x2a85d7[_0xd018('0x17')](_0xd018('0x115'),express[_0xd018('0x111')](path[_0xd018('0x114')](config[_0xd018('0x112')],_0xd018('0x115'))));_0x2a85d7[_0xd018('0x17')]('/snippet',express[_0xd018('0x111')](path['join'](config[_0xd018('0x112')],_0xd018('0x116'),_0xd018('0x117'))));_0x2a85d7[_0xd018('0x17')](_0xd018('0x118'),express[_0xd018('0x111')](path[_0xd018('0x114')](config[_0xd018('0x112')],_0xd018('0x119'))));_0x2a85d7['route']('/:url(api|auth|components|app|bower_components|assets)/*')[_0xd018('0x11a')](errors[0x194]);_0x2a85d7['route']('/*')[_0xd018('0x11a')](function(_0x357344,_0x1d4b7a){_0x1d4b7a['sendFile'](path['resolve'](_0x2a85d7[_0xd018('0x11a')](_0xd018('0x11b'))+_0xd018('0x11c')));});};var sensitiveFields=[_0xd018('0x11d'),_0xd018('0x11e'),_0xd018('0x11f'),_0xd018('0x120'),_0xd018('0x121'),_0xd018('0x122'),_0xd018('0x123'),_0xd018('0x124'),_0xd018('0x125'),_0xd018('0x126'),_0xd018('0x127'),_0xd018('0x128'),_0xd018('0x129'),_0xd018('0x12a'),'code',_0xd018('0x12b'),_0xd018('0x12c'),_0xd018('0x12d'),'channelSecret',_0xd018('0x12e'),_0xd018('0x12f'),_0xd018('0x130'),_0xd018('0x131'),_0xd018('0x132'),_0xd018('0x133'),_0xd018('0x134'),_0xd018('0x135'),_0xd018('0x136'),_0xd018('0x137'),'clientEmail',_0xd018('0x138'),_0xd018('0x139'),_0xd018('0x13a'),_0xd018('0x13b'),_0xd018('0x15'),_0xd018('0x13c'),'accountSid',_0xd018('0x13d'),'dsn','secret','registry','oldPassword'];function maskSensitiveData(_0x3c592c){var _0x15e516=/(?!^)[\s\S](?!$)/g;if(!_[_0xd018('0x13e')](_0x3c592c))return;for(var _0x1efa40 in _0x3c592c){if(_['isArray'](_0x3c592c[_0x1efa40])){for(var _0x17cc4f=0x0;_0x17cc4f<_0x3c592c[_0x1efa40]['length'];_0x17cc4f++){maskSensitiveData(_0x3c592c[_0x1efa40][_0x17cc4f]);}}else if(_[_0xd018('0x13e')](_0x3c592c[_0x1efa40])){maskSensitiveData(_0x3c592c[_0x1efa40]);}else if(_[_0xd018('0x13f')](_0x3c592c[_0x1efa40])){_0x3c592c[_0x1efa40]=_0x3c592c[_0x1efa40][_0xd018('0x140')](/{{{/g,_0xd018('0x141'))[_0xd018('0x140')](/}}}/g,_0xd018('0x142'))[_0xd018('0x140')](/{{/g,'@{')[_0xd018('0x140')](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x1efa40)){_0x3c592c[_0x1efa40]=_0x3c592c[_0x1efa40]['replace'](_0x15e516,'*');}}}}
\ No newline at end of file
index ee8fb60..db34704 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b0b=['../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','rpc','port','localhost','listen','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','bluebird','lodash','../config/environment','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatMessage/chatMessage.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/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.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','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc'];(function(_0x2053ea,_0x1ab2d4){var _0x2232c4=function(_0x4230df){while(--_0x4230df){_0x2053ea['push'](_0x2053ea['shift']());}};_0x2232c4(++_0x1ab2d4);}(_0x9b0b,0xff));var _0xb9b0=function(_0x256e32,_0x4013bc){_0x256e32=_0x256e32-0x0;var _0x464070=_0x9b0b[_0x256e32];return _0x464070;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xb9b0('0x0'));var _=require(_0xb9b0('0x1'));var config=require(_0xb9b0('0x2'));exports['listen']=function(){return new BPromise(function(_0xbd49f8,_0x59b838){var _0x319c00={};_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x4')));_0x319c00=_['merge'](_0x319c00,require(_0xb9b0('0x5')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x6')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x7')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x8')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x9')));_0x319c00=_['merge'](_0x319c00,require(_0xb9b0('0xa')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require('../api/memberReport/memberReport.rpc'));_0x319c00=_['merge'](_0x319c00,require('../api/trunk/trunk.rpc'));_0x319c00=_['merge'](_0x319c00,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0xb')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require('../api/mailServerIn/mailServerIn.rpc'));_0x319c00=_['merge'](_0x319c00,require(_0xb9b0('0xc')));_0x319c00=_['merge'](_0x319c00,require(_0xb9b0('0xd')));_0x319c00=_['merge'](_0x319c00,require(_0xb9b0('0xe')));_0x319c00=_['merge'](_0x319c00,require('../api/mailMessage/mailMessage.rpc'));_0x319c00=_['merge'](_0x319c00,require(_0xb9b0('0xf')));_0x319c00=_['merge'](_0x319c00,require(_0xb9b0('0x10')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x11')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x12')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x13')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x14')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x15')));_0x319c00=_['merge'](_0x319c00,require(_0xb9b0('0x16')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require('../api/smsAccount/smsAccount.rpc'));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x17')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x18')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x19')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x1a')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x1b')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x1c')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x1d')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require('../api/chatInteraction/chatInteraction.rpc'));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x1e')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require('../api/chatQueue/chatQueue.rpc'));_0x319c00=_['merge'](_0x319c00,require('../api/cmContact/cmContact.rpc'));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x1f')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x20')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x21')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x22')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x23')));_0x319c00=_['merge'](_0x319c00,require(_0xb9b0('0x24')));_0x319c00=_['merge'](_0x319c00,require(_0xb9b0('0x25')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require('../api/sound/sound.rpc'));_0x319c00=_['merge'](_0x319c00,require(_0xb9b0('0x26')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x27')));_0x319c00=_['merge'](_0x319c00,require(_0xb9b0('0x28')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x29')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x2a')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x2b')));_0x319c00=_['merge'](_0x319c00,require(_0xb9b0('0x2c')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x2d')));_0x319c00=_['merge'](_0x319c00,require(_0xb9b0('0x2e')));_0x319c00=_['merge'](_0x319c00,require(_0xb9b0('0x2f')));_0x319c00=_['merge'](_0x319c00,require('../api/intDynamics365Account/intDynamics365Account.rpc'));_0x319c00=_['merge'](_0x319c00,require(_0xb9b0('0x30')));_0x319c00=_['merge'](_0x319c00,require(_0xb9b0('0x31')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x32')));_0x319c00=_['merge'](_0x319c00,require(_0xb9b0('0x33')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x34')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x35')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x36')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x37')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x38')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x39')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x3a')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x3b')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x3c')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x3d')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x3e')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x3f')));_0x319c00=_['merge'](_0x319c00,require(_0xb9b0('0x40')));_0x319c00=_[_0xb9b0('0x3')](_0x319c00,require(_0xb9b0('0x41')));var _0x1a70bb=jayson[_0xb9b0('0x42')](_0x319c00)[_0xb9b0('0x43')]();var _0x14506b=config[_0xb9b0('0x44')][_0xb9b0('0x45')]||config['port']+0x1;var _0x4acef8=config[_0xb9b0('0x44')]['ip']||_0xb9b0('0x46');_0x1a70bb['on']('error',function(_0x45a985){return _0x59b838(_0x45a985);});_0x1a70bb[_0xb9b0('0x47')](_0x14506b,_0x4acef8,function(){console['log'](_0xb9b0('0x48'),_0x4acef8,_0x14506b);require(_0xb9b0('0x49'))[_0xb9b0('0x4a')]();return _0xbd49f8(_0xb9b0('0x4b')+_0x4acef8+':'+_0x14506b);});});};
\ No newline at end of file
+var _0xfd42=['../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','http','port','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','bluebird','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailMessage/mailMessage.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/interval/interval.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappInteraction/whatsappInteraction.rpc'];(function(_0x1e47db,_0x417474){var _0x5ccfaa=function(_0x41392d){while(--_0x41392d){_0x1e47db['push'](_0x1e47db['shift']());}};_0x5ccfaa(++_0x417474);}(_0xfd42,0x163));var _0x2fd4=function(_0x968642,_0x2eda1a){_0x968642=_0x968642-0x0;var _0x370246=_0xfd42[_0x968642];return _0x370246;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0x2fd4('0x0'));var _=require(_0x2fd4('0x1'));var config=require(_0x2fd4('0x2'));exports[_0x2fd4('0x3')]=function(){return new BPromise(function(_0xb18b38,_0x2e2ee5){var _0x24e297={};_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x5')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x6')));_0x24e297=_['merge'](_0x24e297,require('../api/voiceQueue/voiceQueue.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x7')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x8')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x9')));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0xa')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0xb')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0xc')));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0xd')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0xe')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0xf')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x10')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x11')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/mailInteraction/mailInteraction.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x12')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/mailApplication/mailApplication.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x13')));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x14')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x15')));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x16')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x17')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x18')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x19')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x1a')));_0x24e297=_['merge'](_0x24e297,require('../api/smsInteraction/smsInteraction.rpc'));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x1b')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x1c')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/openchannelApplication/openchannelApplication.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x1d')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/openchannelQueue/openchannelQueue.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x1e')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x1f')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x20')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x21')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x22')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x23')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x24')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x25')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/reportAgentPreview/reportAgentPreview.rpc'));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x26')));_0x24e297=_['merge'](_0x24e297,require('../api/pause/pause.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/sound/sound.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/template/template.rpc'));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x27')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x28')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x29')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x2a')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x2b')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x2c')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/intVtigerAccount/intVtigerAccount.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x2d')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x2e')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x2f')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x30')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x31')));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x32')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x33')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x34')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x35')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/squareRecording/squareRecording.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x36')));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x37')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x38')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x39')));_0x24e297=_['merge'](_0x24e297,require('../api/whatsappAccount/whatsappAccount.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x3a')));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x3b')));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x3c')));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x3d')));var _0x579b22=jayson['server'](_0x24e297)[_0x2fd4('0x3e')]();var _0x2dad7a=config['rpc'][_0x2fd4('0x3f')]||config[_0x2fd4('0x3f')]+0x1;var _0x4d2d3c=config['rpc']['ip']||_0x2fd4('0x40');_0x579b22['on'](_0x2fd4('0x41'),function(_0x17d011){return _0x2e2ee5(_0x17d011);});_0x579b22[_0x2fd4('0x3')](_0x2dad7a,_0x4d2d3c,function(){console[_0x2fd4('0x42')](_0x2fd4('0x43'),_0x4d2d3c,_0x2dad7a);require(_0x2fd4('0x44'))['default']();return _0xb18b38('RPC\x20listening\x20on\x20'+_0x4d2d3c+':'+_0x2dad7a);});});};
\ No newline at end of file
index f9f0680..b27ebdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a85=['{\x20{\x20','\x20}\x20}','replace','isArray','map','isPlainObject','reduce','exports'];(function(_0x8cd7,_0x2cf434){var _0x262c9f=function(_0x14c21d){while(--_0x14c21d){_0x8cd7['push'](_0x8cd7['shift']());}};_0x262c9f(++_0x2cf434);}(_0x1a85,0x178));var _0x51a8=function(_0x4e1211,_0x1c0e26){_0x4e1211=_0x4e1211-0x0;var _0x4ae887=_0x1a85[_0x4e1211];return _0x4ae887;};var _=require('lodash');var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x54a0db){return _0x54a0db==='{{'?_0x51a8('0x0'):_0x51a8('0x1');}function safeTemplate(_0x43e22a){var _0x498466=_0x43e22a;if(typeof _0x43e22a==='string'){_0x498466=_0x43e22a[_0x51a8('0x2')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x51a8('0x3')](_0x43e22a)){_0x498466=_0x43e22a[_0x51a8('0x4')](function(_0x48a21b){return safeTemplate(_0x48a21b);});}else if(_[_0x51a8('0x5')](_0x43e22a)){_0x498466=Object['keys'](_0x43e22a)[_0x51a8('0x6')](function(_0x5cf430,_0x331117){_0x5cf430[_0x331117]=safeTemplate(_0x43e22a[_0x331117]);return _0x5cf430;},{});}return _0x498466;}module[_0x51a8('0x7')]['safeTemplate']=safeTemplate;
\ No newline at end of file
+var _0xef0f=['lodash','{\x20{\x20','\x20}\x20}','string','replace','isArray','isPlainObject','keys','reduce','safeTemplate'];(function(_0x3edeb1,_0x5d0526){var _0x4d1e51=function(_0x4ae1a9){while(--_0x4ae1a9){_0x3edeb1['push'](_0x3edeb1['shift']());}};_0x4d1e51(++_0x5d0526);}(_0xef0f,0x168));var _0xfef0=function(_0x500f0b,_0x21a6a8){_0x500f0b=_0x500f0b-0x0;var _0x204137=_0xef0f[_0x500f0b];return _0x204137;};var _=require(_0xfef0('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x581303){return _0x581303==='{{'?_0xfef0('0x1'):_0xfef0('0x2');}function safeTemplate(_0x19f865){var _0x4d29e5=_0x19f865;if(typeof _0x19f865===_0xfef0('0x3')){_0x4d29e5=_0x19f865[_0xfef0('0x4')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0xfef0('0x5')](_0x19f865)){_0x4d29e5=_0x19f865['map'](function(_0x2a6fcf){return safeTemplate(_0x2a6fcf);});}else if(_[_0xfef0('0x6')](_0x19f865)){_0x4d29e5=Object[_0xfef0('0x7')](_0x19f865)[_0xfef0('0x8')](function(_0xad43e,_0x11dfd7){_0xad43e[_0x11dfd7]=safeTemplate(_0x19f865[_0x11dfd7]);return _0xad43e;},{});}return _0x4d29e5;}module['exports'][_0xfef0('0x9')]=safeTemplate;
\ No newline at end of file
index 191c39d..9503237 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x778c=['prototype','answer','ANSWER','getData','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','join','setContext','SET\x20CONTEXT\x20%s','setPriority','SET\x20PRIORITY\x20%s','HANGUP','setVariable','SET\x20VARIABLE\x20%s\x20\x22%s\x22','toString','sayNumber','sayDigits','sayPhonetic','extension','setExtension','GOTO\x20%s\x20%s\x20%s','getVariable','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','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','wait','error','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','util','events','EventEmitter','./reply','./error','setEncoding','utf8','headers','line','toLowerCase','hangup','emit','substring','520-Invalid','520\x20End\x20of\x20proper','function','no\x20code','replace','result=','indexOf','startsWith','length','match','E_AGI_SOCKET_ERROR','code','close','timeout','pipe','command','write','destroy','inherits','sendRequest','sync'];(function(_0x186c5c,_0x166826){var _0x824c59=function(_0x29eeea){while(--_0x29eeea){_0x186c5c['push'](_0x186c5c['shift']());}};_0x824c59(++_0x166826);}(_0x778c,0x1e4));var _0xc778=function(_0x4b980d,_0x32fc6a){_0x4b980d=_0x4b980d-0x0;var _0x5c7974=_0x778c[_0x4b980d];return _0x5c7974;};'use strict';var util=require(_0xc778('0x0'));var _=require('lodash');var EventEmitter=require(_0xc778('0x1'))[_0xc778('0x2')];var AGIReply=require(_0xc778('0x3'));var AGIError=require(_0xc778('0x4'));function AGIChannel(_0x32350d){var _0x405cda=this,_0x5be380=new AGIReply(),_0x2b759f=![],_0x552344={};EventEmitter['call'](_0x405cda);_0x32350d[_0xc778('0x5')](_0xc778('0x6'));_0x32350d['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x5be380[_0xc778('0x5')]('utf8');_0x5be380['on'](_0xc778('0x7'),function(_0xbf56a9){for(var _0x17ec39 in _0xbf56a9){_0x405cda[_0x17ec39]=_0xbf56a9[_0x17ec39];}_0x405cda['emit']('ready');});_0x5be380['on'](_0xc778('0x8'),function(_0x748f1a){if(_0x748f1a[_0xc778('0x9')]()==_0xc778('0xa')){_0x405cda[_0xc778('0xb')](_0xc778('0xa'));return;}if(_0x748f1a[_0xc778('0xc')](0x0,0xb)==_0xc778('0xd')){_0x2b759f=!![];}if(_0x2b759f){_0x552344['rx']+=_0x748f1a+'\x0a';if(_0x748f1a['search'](_0xc778('0xe'))!=-0x1){_0x2b759f=![];}}else{_0x552344['rx']=_0x748f1a;}if(_0x2b759f){return;}if(typeof _0x552344['cb']==_0xc778('0xf')){var _0x8bd093=_0x552344['rx'][_0xc778('0xc')](0x0,0x3),_0x2b2ba4=null,_0x106f44=null;_0x8bd093=parseInt(_0x8bd093);if(isNaN(_0x8bd093)){_0x552344['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xc778('0x10')});return;}if(_0x8bd093!=0xc8){_0x552344['cb'](null,{'code':_0x8bd093,'result':-0x1,'extra':'KO'});return;}_0x2b2ba4=_0x552344['rx'][_0xc778('0xc')](0x4)[_0xc778('0x11')](_0xc778('0x12'),'');if(_0x2b2ba4[_0xc778('0x13')]('\x20')!=-0x1){_0x2b2ba4=_0x2b2ba4['substr'](0x0,_0x2b2ba4[_0xc778('0x13')]('\x20'));}if(_[_0xc778('0x14')](_0x2b2ba4,'-1')){_0x2b2ba4=parseInt(_0x2b2ba4);}_0x106f44=_0x552344['rx']['split']('\x20');if(_0x106f44[_0xc778('0x15')]==0x3){_0x106f44=_0x106f44[0x2][_0xc778('0xc')](0x1,_0x106f44[0x2][_0xc778('0x15')]-0x1);}else if(_0x106f44[_0xc778('0x15')]>0x3){var _0x2726fc=/\((.+)\)/;var _0x557e48=_0x552344['rx'][_0xc778('0x16')](_0x2726fc);if(_0x557e48){_0x106f44=_0x557e48[0x1];}else{_0x106f44=null;}}else{_0x106f44=null;}_0x552344['cb'](null,{'code':_0x8bd093,'result':_0x2b2ba4,'extra':_0x106f44});}});_0x32350d['on']('error',function(_0x49a567){_0x405cda['emit']('error',new AGIError(_0xc778('0x17'),_0x49a567[_0xc778('0x18')]));});_0x32350d['on'](_0xc778('0x19'),function(){_0x405cda[_0xc778('0xb')](_0xc778('0x19'),new AGIError('E_AGI_SOCKET_CLOSE'));});_0x32350d['on'](_0xc778('0x1a'),function(){_0x405cda[_0xc778('0xb')](_0xc778('0x1a'),new AGIError('E_AGI_SOCKET_TIMEOUT'));_0x32350d['destroy']();});_0x32350d[_0xc778('0x1b')](_0x5be380);this[_0xc778('0x1c')]=function(_0x3c2ca6,_0x27c08d){var _0x3c2ca6=_0x3c2ca6||'',_0x27c08d=typeof _0x27c08d==_0xc778('0xf')?_0x27c08d:new Function();_0x552344={'tx':_0x3c2ca6,'rx':'','cb':_0x27c08d};_0x32350d[_0xc778('0x1d')](_0x3c2ca6+'\x0a');},this[_0xc778('0x19')]=function(){_0x32350d[_0xc778('0x1e')]();};}util[_0xc778('0x1f')](AGIChannel,EventEmitter);AGIChannel['prototype'][_0xc778('0x20')]=function(_0x472b30){return this[_0xc778('0x1c')][_0xc778('0x21')](this,_0x472b30);};AGIChannel[_0xc778('0x22')][_0xc778('0x23')]=function(){return this[_0xc778('0x20')](_0xc778('0x24'));};AGIChannel['prototype'][_0xc778('0x25')]=function(_0x4f4e25,_0x43cb3e,_0x487070){_0x4f4e25=_0x4f4e25===undefined?'beep':_0x4f4e25;_0x43cb3e=_0x43cb3e===undefined?'5':_0x43cb3e;_0x487070=_0x487070===undefined?'1':_0x487070;return this['sendRequest'](util[_0xc778('0x26')](_0xc778('0x27'),_0x4f4e25,_0x43cb3e*0x3e8,_0x487070));};AGIChannel[_0xc778('0x22')][_0xc778('0x28')]=function(_0x358dd7){_0x358dd7=_0x358dd7||_0xc778('0x29');return this[_0xc778('0x20')](util['format'](_0xc778('0x2a'),_0x358dd7));};AGIChannel['prototype'][_0xc778('0x2b')]=function(_0x290424,_0x1b69d2){if(_[_0xc778('0x2c')](_0x1b69d2)){return this[_0xc778('0x20')](util[_0xc778('0x26')](_0xc778('0x2d'),_0x290424,_0x1b69d2[_0xc778('0x2e')](',')));}return this['sendRequest'](util['format'](_0xc778('0x2d'),_0x290424,_0x1b69d2));};AGIChannel[_0xc778('0x22')][_0xc778('0x2f')]=function(_0x556403){return this['sendRequest'](util[_0xc778('0x26')](_0xc778('0x30'),_0x556403));};AGIChannel['prototype']['setExtension']=function(_0x3f0f38){return this[_0xc778('0x20')](util[_0xc778('0x26')]('SET\x20EXTENSION\x20%s',_0x3f0f38));};AGIChannel['prototype'][_0xc778('0x31')]=function(_0x3c04c2){return this['sendRequest'](util['format'](_0xc778('0x32'),_0x3c04c2));};AGIChannel['prototype']['hangup']=function(){return this[_0xc778('0x20')](_0xc778('0x33'));};AGIChannel[_0xc778('0x22')][_0xc778('0x34')]=function(_0x54b646,_0x3b4aa5){var _0x4770f2=_['isBoolean'](_0x3b4aa5)||_['isNumber'](_0x3b4aa5)?_0x3b4aa5['toString']():_0x3b4aa5;return this[_0xc778('0x20')](util[_0xc778('0x26')](_0xc778('0x35'),_0x54b646,_0x4770f2?_0x4770f2[_0xc778('0x36')]()[_0xc778('0x11')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0xc778('0x37')]=function(_0x58336d,_0x4cb2e){return this[_0xc778('0x20')](util[_0xc778('0x26')]('SAY\x20NUMBER\x20%s\x20%s',_0x58336d,_0x4cb2e));};AGIChannel[_0xc778('0x22')][_0xc778('0x38')]=function(_0x17e25d,_0x2500eb){return this[_0xc778('0x20')](util[_0xc778('0x26')]('SAY\x20DIGITS\x20%s\x20%s',_0x17e25d,_0x2500eb));};AGIChannel[_0xc778('0x22')][_0xc778('0x39')]=function(_0x458087,_0x28a602){return this[_0xc778('0x20')](util[_0xc778('0x26')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x458087,_0x28a602));};AGIChannel[_0xc778('0x22')]['continueAt']=function(_0xe6cbc3,_0x544ae0,_0x37d37f){_0x544ae0=_0x544ae0||this[_0xc778('0x3a')];_0x37d37f=_0x37d37f||0x1;this['setContext'](_0xe6cbc3);this[_0xc778('0x3b')](_0x544ae0);this['setPriority'](_0x37d37f);return this[_0xc778('0x28')](util['format'](_0xc778('0x3c'),_0xe6cbc3,_0x544ae0,_0x37d37f));};AGIChannel[_0xc778('0x22')][_0xc778('0x3d')]=function(_0x3c8027){return this[_0xc778('0x20')](util[_0xc778('0x26')](_0xc778('0x3e'),_0x3c8027));};AGIChannel[_0xc778('0x22')]['recordFile']=function(_0x728cc5,_0x4d72b8,_0x475aa3,_0x241561,_0x370a3c,_0x23b476){_0x4d72b8=_0x4d72b8||_0xc778('0x3f');_0x475aa3=_0x475aa3||'';_0x241561=_0x241561===undefined?-0x1:_0x241561==='-1'?-0x1:_0x241561*0x3e8;_0x370a3c=_0x370a3c===undefined?'':'s='+_0x370a3c;_0x23b476=_0x23b476?_0xc778('0x40'):'';return this['sendRequest'](util[_0xc778('0x26')](_0xc778('0x41'),_0x728cc5,_0x4d72b8,_0x475aa3,_0x241561,_0x23b476,_0x370a3c));};AGIChannel[_0xc778('0x22')][_0xc778('0x42')]=function(_0x564bfb,_0x17561e){_0x17561e=_0x17561e||'';return this[_0xc778('0x20')](util['format'](_0xc778('0x43'),_0x564bfb,_0x17561e));};AGIChannel[_0xc778('0x22')][_0xc778('0x44')]=function(_0x4f6454){return this[_0xc778('0x2b')](_0xc778('0x45'),_0x4f6454);};AGIChannel[_0xc778('0x22')][_0xc778('0x46')]=function(_0x2d4a6a){return this['exec']('WAIT',_0x2d4a6a);};AGIChannel['prototype'][_0xc778('0x47')]=function(_0x54b6f2,_0x618368){this[_0xc778('0x28')](util[_0xc778('0x26')](_0xc778('0x48'),_0x54b6f2['id'],_0x54b6f2[_0xc778('0x49')],_0x618368));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
+var _0xe47d=['E_AGI_SOCKET_ERROR','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','inherits','prototype','sendRequest','sync','answer','ANSWER','getData','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','join','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','isNumber','SET\x20VARIABLE\x20%s\x20\x22%s\x22','toString','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','extension','setContext','noop','GOTO\x20%s\x20%s\x20%s','getVariable','recordFile','wav','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','events','EventEmitter','./reply','./error','setEncoding','setTimeout','utf8','headers','emit','ready','line','toLowerCase','hangup','substring','search','function','no\x20code','replace','result=','indexOf','substr','startsWith','split','length','error'];(function(_0x162aea,_0x280d91){var _0x5779cb=function(_0x316dd8){while(--_0x316dd8){_0x162aea['push'](_0x162aea['shift']());}};_0x5779cb(++_0x280d91);}(_0xe47d,0x1c5));var _0xde47=function(_0x58b35e,_0x17a8cd){_0x58b35e=_0x58b35e-0x0;var _0x86b2a0=_0xe47d[_0x58b35e];return _0x86b2a0;};'use strict';var util=require(_0xde47('0x0'));var _=require(_0xde47('0x1'));var EventEmitter=require(_0xde47('0x2'))[_0xde47('0x3')];var AGIReply=require(_0xde47('0x4'));var AGIError=require(_0xde47('0x5'));function AGIChannel(_0x59ddbf){var _0x95de96=this,_0x137406=new AGIReply(),_0xe104ab=![],_0x1aff69={};EventEmitter['call'](_0x95de96);_0x59ddbf[_0xde47('0x6')]('utf8');_0x59ddbf[_0xde47('0x7')](0x8*0x3c*0x3c*0x3e8);_0x137406[_0xde47('0x6')](_0xde47('0x8'));_0x137406['on'](_0xde47('0x9'),function(_0x432407){for(var _0x5ad910 in _0x432407){_0x95de96[_0x5ad910]=_0x432407[_0x5ad910];}_0x95de96[_0xde47('0xa')](_0xde47('0xb'));});_0x137406['on'](_0xde47('0xc'),function(_0x300fa1){if(_0x300fa1[_0xde47('0xd')]()==_0xde47('0xe')){_0x95de96[_0xde47('0xa')](_0xde47('0xe'));return;}if(_0x300fa1[_0xde47('0xf')](0x0,0xb)=='520-Invalid'){_0xe104ab=!![];}if(_0xe104ab){_0x1aff69['rx']+=_0x300fa1+'\x0a';if(_0x300fa1[_0xde47('0x10')]('520\x20End\x20of\x20proper')!=-0x1){_0xe104ab=![];}}else{_0x1aff69['rx']=_0x300fa1;}if(_0xe104ab){return;}if(typeof _0x1aff69['cb']==_0xde47('0x11')){var _0x3b573c=_0x1aff69['rx'][_0xde47('0xf')](0x0,0x3),_0x17fd78=null,_0x5d74d3=null;_0x3b573c=parseInt(_0x3b573c);if(isNaN(_0x3b573c)){_0x1aff69['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xde47('0x12')});return;}if(_0x3b573c!=0xc8){_0x1aff69['cb'](null,{'code':_0x3b573c,'result':-0x1,'extra':'KO'});return;}_0x17fd78=_0x1aff69['rx']['substring'](0x4)[_0xde47('0x13')](_0xde47('0x14'),'');if(_0x17fd78[_0xde47('0x15')]('\x20')!=-0x1){_0x17fd78=_0x17fd78[_0xde47('0x16')](0x0,_0x17fd78[_0xde47('0x15')]('\x20'));}if(_[_0xde47('0x17')](_0x17fd78,'-1')){_0x17fd78=parseInt(_0x17fd78);}_0x5d74d3=_0x1aff69['rx'][_0xde47('0x18')]('\x20');if(_0x5d74d3[_0xde47('0x19')]==0x3){_0x5d74d3=_0x5d74d3[0x2][_0xde47('0xf')](0x1,_0x5d74d3[0x2][_0xde47('0x19')]-0x1);}else if(_0x5d74d3[_0xde47('0x19')]>0x3){var _0x1cb7d7=/\((.+)\)/;var _0x21e898=_0x1aff69['rx']['match'](_0x1cb7d7);if(_0x21e898){_0x5d74d3=_0x21e898[0x1];}else{_0x5d74d3=null;}}else{_0x5d74d3=null;}_0x1aff69['cb'](null,{'code':_0x3b573c,'result':_0x17fd78,'extra':_0x5d74d3});}});_0x59ddbf['on'](_0xde47('0x1a'),function(_0x12af88){_0x95de96[_0xde47('0xa')](_0xde47('0x1a'),new AGIError(_0xde47('0x1b'),_0x12af88['code']));});_0x59ddbf['on'](_0xde47('0x1c'),function(){_0x95de96[_0xde47('0xa')](_0xde47('0x1c'),new AGIError(_0xde47('0x1d')));});_0x59ddbf['on'](_0xde47('0x1e'),function(){_0x95de96[_0xde47('0xa')](_0xde47('0x1e'),new AGIError(_0xde47('0x1f')));_0x59ddbf[_0xde47('0x20')]();});_0x59ddbf[_0xde47('0x21')](_0x137406);this[_0xde47('0x22')]=function(_0x1618d5,_0x170f65){var _0x1618d5=_0x1618d5||'',_0x170f65=typeof _0x170f65==_0xde47('0x11')?_0x170f65:new Function();_0x1aff69={'tx':_0x1618d5,'rx':'','cb':_0x170f65};_0x59ddbf[_0xde47('0x23')](_0x1618d5+'\x0a');},this[_0xde47('0x1c')]=function(){_0x59ddbf['destroy']();};}util[_0xde47('0x24')](AGIChannel,EventEmitter);AGIChannel[_0xde47('0x25')][_0xde47('0x26')]=function(_0x430485){return this[_0xde47('0x22')][_0xde47('0x27')](this,_0x430485);};AGIChannel['prototype'][_0xde47('0x28')]=function(){return this['sendRequest'](_0xde47('0x29'));};AGIChannel['prototype'][_0xde47('0x2a')]=function(_0x5341bc,_0x1afb46,_0x30379e){_0x5341bc=_0x5341bc===undefined?_0xde47('0x2b'):_0x5341bc;_0x1afb46=_0x1afb46===undefined?'5':_0x1afb46;_0x30379e=_0x30379e===undefined?'1':_0x30379e;return this[_0xde47('0x26')](util[_0xde47('0x2c')](_0xde47('0x2d'),_0x5341bc,_0x1afb46*0x3e8,_0x30379e));};AGIChannel['prototype']['noop']=function(_0xbcd338){_0xbcd338=_0xbcd338||_0xde47('0x2e');return this[_0xde47('0x26')](util[_0xde47('0x2c')](_0xde47('0x2f'),_0xbcd338));};AGIChannel['prototype'][_0xde47('0x30')]=function(_0x536ac7,_0x3f37e3){if(_[_0xde47('0x31')](_0x3f37e3)){return this[_0xde47('0x26')](util['format'](_0xde47('0x32'),_0x536ac7,_0x3f37e3[_0xde47('0x33')](',')));}return this['sendRequest'](util[_0xde47('0x2c')](_0xde47('0x32'),_0x536ac7,_0x3f37e3));};AGIChannel[_0xde47('0x25')]['setContext']=function(_0x30b6ba){return this[_0xde47('0x26')](util[_0xde47('0x2c')]('SET\x20CONTEXT\x20%s',_0x30b6ba));};AGIChannel[_0xde47('0x25')][_0xde47('0x34')]=function(_0x1e76a0){return this[_0xde47('0x26')](util['format'](_0xde47('0x35'),_0x1e76a0));};AGIChannel['prototype'][_0xde47('0x36')]=function(_0x405dd8){return this[_0xde47('0x26')](util[_0xde47('0x2c')](_0xde47('0x37'),_0x405dd8));};AGIChannel[_0xde47('0x25')][_0xde47('0xe')]=function(){return this[_0xde47('0x26')]('HANGUP');};AGIChannel['prototype']['setVariable']=function(_0x550f0d,_0x1e9fe9){var _0x55cb0a=_['isBoolean'](_0x1e9fe9)||_[_0xde47('0x38')](_0x1e9fe9)?_0x1e9fe9['toString']():_0x1e9fe9;return this[_0xde47('0x26')](util['format'](_0xde47('0x39'),_0x550f0d,_0x55cb0a?_0x55cb0a[_0xde47('0x3a')]()['replace'](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0xde47('0x25')][_0xde47('0x3b')]=function(_0xa8dded,_0x3e48e6){return this['sendRequest'](util['format'](_0xde47('0x3c'),_0xa8dded,_0x3e48e6));};AGIChannel[_0xde47('0x25')][_0xde47('0x3d')]=function(_0x4904cd,_0x4e95cf){return this['sendRequest'](util[_0xde47('0x2c')](_0xde47('0x3e'),_0x4904cd,_0x4e95cf));};AGIChannel[_0xde47('0x25')][_0xde47('0x3f')]=function(_0x27f379,_0x13d7cb){return this[_0xde47('0x26')](util[_0xde47('0x2c')](_0xde47('0x40'),_0x27f379,_0x13d7cb));};AGIChannel['prototype']['continueAt']=function(_0x17124f,_0x340db1,_0x2a58da){_0x340db1=_0x340db1||this[_0xde47('0x41')];_0x2a58da=_0x2a58da||0x1;this[_0xde47('0x42')](_0x17124f);this[_0xde47('0x34')](_0x340db1);this['setPriority'](_0x2a58da);return this[_0xde47('0x43')](util['format'](_0xde47('0x44'),_0x17124f,_0x340db1,_0x2a58da));};AGIChannel[_0xde47('0x25')][_0xde47('0x45')]=function(_0x47ed62){return this[_0xde47('0x26')](util[_0xde47('0x2c')]('GET\x20VARIABLE\x20\x22%s\x22',_0x47ed62));};AGIChannel['prototype'][_0xde47('0x46')]=function(_0x56c724,_0x502c9b,_0x539ec8,_0x520b86,_0x1ad98c,_0x31e9d5){_0x502c9b=_0x502c9b||_0xde47('0x47');_0x539ec8=_0x539ec8||'';_0x520b86=_0x520b86===undefined?-0x1:_0x520b86==='-1'?-0x1:_0x520b86*0x3e8;_0x1ad98c=_0x1ad98c===undefined?'':'s='+_0x1ad98c;_0x31e9d5=_0x31e9d5?'BEEP':'';return this[_0xde47('0x26')](util[_0xde47('0x2c')](_0xde47('0x48'),_0x56c724,_0x502c9b,_0x539ec8,_0x520b86,_0x31e9d5,_0x1ad98c));};AGIChannel['prototype'][_0xde47('0x49')]=function(_0x5aad08,_0x3b2bd5){_0x3b2bd5=_0x3b2bd5||'';return this[_0xde47('0x26')](util[_0xde47('0x2c')](_0xde47('0x4a'),_0x5aad08,_0x3b2bd5));};AGIChannel[_0xde47('0x25')][_0xde47('0x4b')]=function(_0x19e3ca){return this[_0xde47('0x30')](_0xde47('0x4c'),_0x19e3ca);};AGIChannel[_0xde47('0x25')]['wait']=function(_0x40b5f6){return this[_0xde47('0x30')]('WAIT',_0x40b5f6);};AGIChannel[_0xde47('0x25')][_0xde47('0x1a')]=function(_0x1a0647,_0x14d3aa){this[_0xde47('0x43')](util[_0xde47('0x2c')](_0xde47('0x4d'),_0x1a0647['id'],_0x1a0647[_0xde47('0x4e')],_0x14d3aa));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xde47('0x4f')]=AGIChannel;
\ No newline at end of file
index 536aa22..6a34e21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6508=['push','format','message','exports','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED'];(function(_0x154fc2,_0xdafb2d){var _0x27e717=function(_0x7ba0f){while(--_0x7ba0f){_0x154fc2['push'](_0x154fc2['shift']());}};_0x27e717(++_0xdafb2d);}(_0x6508,0xe8));var _0x8650=function(_0x254081,_0x20731a){_0x254081=_0x254081-0x0;var _0x5d1e2a=_0x6508[_0x254081];return _0x5d1e2a;};'use strict';var util=require('util');var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':'Server\x20closed.','E_AGI_SERVER_MAXCONNECTION':_0x8650('0x0'),'E_AGI_SERVER_VOICE_DISABLED':_0x8650('0x1'),'E_AGI_SOCKET_ERROR':_0x8650('0x2'),'E_AGI_SOCKET_CLOSE':_0x8650('0x3'),'E_AGI_SOCKET_TIMEOUT':_0x8650('0x4'),'E_AGI_COMMAND_EMPTY':_0x8650('0x5'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':_0x8650('0x6')};function AGIError(_0x1ec479){var _0x1ec479=_0x1ec479||null,_0x295c3e=_0x295c3e||[],_0x2b888c=0x1,_0xd5a67d='';if(!error[_0x1ec479]){_0x1ec479=_0x8650('0x7');}_0x295c3e[_0x8650('0x8')](error[_0x1ec479]);while(arguments[_0x2b888c]){_0x295c3e[_0x8650('0x8')](arguments[_0x2b888c]);_0x2b888c++;}_0xd5a67d=util[_0x8650('0x9')]['apply'](util,_0x295c3e);this[_0x8650('0xa')]=_0xd5a67d;this['name']=_0x1ec479;}module[_0x8650('0xb')]=AGIError;
\ No newline at end of file
+var _0x8375=['exports','util','Server\x20closed.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20closed.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format','apply','message','name'];(function(_0x66bc7c,_0x3aace0){var _0x26b129=function(_0x4664a0){while(--_0x4664a0){_0x66bc7c['push'](_0x66bc7c['shift']());}};_0x26b129(++_0x3aace0);}(_0x8375,0x145));var _0x5837=function(_0x6726bf,_0x1f31b9){_0x6726bf=_0x6726bf-0x0;var _0x15bfc3=_0x8375[_0x6726bf];return _0x15bfc3;};'use strict';var util=require(_0x5837('0x0'));var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':_0x5837('0x1'),'E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':_0x5837('0x2'),'E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':_0x5837('0x3'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':_0x5837('0x4')};function AGIError(_0x2419ad){var _0x2419ad=_0x2419ad||null,_0x263571=_0x263571||[],_0x5cd183=0x1,_0x5cae1d='';if(!error[_0x2419ad]){_0x2419ad=_0x5837('0x5');}_0x263571[_0x5837('0x6')](error[_0x2419ad]);while(arguments[_0x5cd183]){_0x263571['push'](arguments[_0x5cd183]);_0x5cd183++;}_0x5cae1d=util[_0x5837('0x7')][_0x5837('0x8')](util,_0x263571);this[_0x5837('0x9')]=_0x5cae1d;this[_0x5837('0xa')]=_0x2419ad;}module[_0x5837('0xb')]=AGIError;
\ No newline at end of file
index 0b9953b..e1500a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd959=['size','relations','getVertex','info','stop\x20traverse','length','no\x20edge/s\x20available','condition','split','vswitch','target','default','invalid','traverseBFS','agicommand','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','lodash','../../../config/logger','agi','menu','getdigits','getsecretdigits','vertices','edges','numberOfEdges','addVertex','prototype','addEdge','push'];(function(_0x10b753,_0x34d1e2){var _0x4c7ef0=function(_0x53e799){while(--_0x53e799){_0x10b753['push'](_0x10b753['shift']());}};_0x4c7ef0(++_0x34d1e2);}(_0xd959,0x1f3));var _0x9d95=function(_0xef16f0,_0x32fbbd){_0xef16f0=_0xef16f0-0x0;var _0x580f42=_0xd959[_0xef16f0];return _0x580f42;};'use strict';var _=require(_0x9d95('0x0'));var logger=require(_0x9d95('0x1'))(_0x9d95('0x2'));var verticesWithRetry=[_0x9d95('0x3'),_0x9d95('0x4'),_0x9d95('0x5')];var Graph=function(){this[_0x9d95('0x6')]={};this[_0x9d95('0x7')]={};this[_0x9d95('0x8')]=0x0;};Graph['prototype'][_0x9d95('0x9')]=function(_0x5f572b){this[_0x9d95('0x6')][_0x5f572b['id']]=_0x5f572b;this[_0x9d95('0x7')][_0x5f572b['id']]=[];};Graph[_0x9d95('0xa')][_0x9d95('0xb')]=function(_0x4f7c4e,_0x295c2d,_0x3a3f4c){this[_0x9d95('0x7')][_0x4f7c4e][_0x9d95('0xc')]({'target':_0x295c2d,'condition':_0x3a3f4c});this[_0x9d95('0x8')]+=0x1;};Graph[_0x9d95('0xa')][_0x9d95('0xd')]=function(){return _['size'](this[_0x9d95('0x6')]);};Graph['prototype'][_0x9d95('0xe')]=function(){return this[_0x9d95('0x8')];};Graph[_0x9d95('0xa')][_0x9d95('0xf')]=function(_0x4630d6){return this[_0x9d95('0x6')][_0x4630d6];};Graph[_0x9d95('0xa')]['traverseBFS']=function(_0x2a04cd,_0x564d2c){if(!this[_0x9d95('0x6')][_0x2a04cd]){return logger[_0x9d95('0x10')]('no\x20vertex\x20found');}var _0x5ea357=_0x564d2c(this[_0x9d95('0x6')][_0x2a04cd]);if(!_0x5ea357){return logger['info'](_0x9d95('0x11'));}if(this[_0x9d95('0x7')][_0x2a04cd][_0x9d95('0x12')]===0x0){return logger[_0x9d95('0x10')](_0x9d95('0x13'));}for(var _0x1be976=0x0,_0x58ac2f=[],_0x3e061e=![];_0x1be976<this[_0x9d95('0x7')][_0x2a04cd][_0x9d95('0x12')];_0x1be976+=0x1){if(this['edges'][_0x2a04cd][_0x1be976][_0x9d95('0x14')]){_0x58ac2f=this['edges'][_0x2a04cd][_0x1be976][_0x9d95('0x14')][_0x9d95('0x15')](',');for(var _0x4e2740=0x0;_0x4e2740<_0x58ac2f[_0x9d95('0x12')];_0x4e2740+=0x1){if(this[_0x9d95('0x6')][_0x2a04cd]['agicommand']===_0x9d95('0x16')&&_0x58ac2f[_0x4e2740]==='-'){_0x3e061e=this[_0x9d95('0x7')][_0x2a04cd][_0x1be976][_0x9d95('0x17')];logger[_0x9d95('0x10')](_0x9d95('0x18'),_0x58ac2f[_0x4e2740],this[_0x9d95('0x7')][_0x2a04cd][_0x1be976][_0x9d95('0x17')]);}else if(this[_0x9d95('0x6')][_0x2a04cd]['agicommand']===_0x9d95('0x3')&&_0x58ac2f[_0x4e2740]==='i'){_0x3e061e=this['edges'][_0x2a04cd][_0x1be976][_0x9d95('0x17')];logger[_0x9d95('0x10')](_0x9d95('0x19'),_0x58ac2f[_0x4e2740],this[_0x9d95('0x7')][_0x2a04cd][_0x1be976][_0x9d95('0x17')]);}if(_0x58ac2f[_0x4e2740]===_0x5ea357){return this[_0x9d95('0x1a')](this[_0x9d95('0x7')][_0x2a04cd][_0x1be976][_0x9d95('0x17')],_0x564d2c);}}}else{return this[_0x9d95('0x1a')](this[_0x9d95('0x7')][_0x2a04cd][_0x1be976][_0x9d95('0x17')],_0x564d2c);}}if(_0x58ac2f[_0x9d95('0x12')]){if(this[_0x9d95('0x6')][_0x2a04cd][_0x9d95('0x1b')]==='vswitch'){if(_0x3e061e){return this[_0x9d95('0x1a')](_0x3e061e,_0x564d2c);}return logger['info'](_0x9d95('0x1c'));}else if(_[_0x9d95('0x1d')](verticesWithRetry,this[_0x9d95('0x6')][_0x2a04cd][_0x9d95('0x1b')])){if(_0x5ea357==='-'){return logger['info'](_0x9d95('0x1e'));}if(_0x3e061e&&_0x5ea357!=='t'){return this[_0x9d95('0x1a')](_0x3e061e,_0x564d2c);}return this[_0x9d95('0x1a')](_0x2a04cd,_0x564d2c);}return logger[_0x9d95('0x10')](_0x9d95('0x1f'));}};module['exports']=Graph;
\ No newline at end of file
+var _0xa81a=['relations','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','length','no\x20edge/s\x20available','condition','split','agicommand','vswitch','target','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','../../../config/logger','agi','menu','getdigits','getsecretdigits','edges','numberOfEdges','prototype','addVertex','vertices','addEdge','push','size'];(function(_0x1724e6,_0x5412d5){var _0x173f53=function(_0x1172ed){while(--_0x1172ed){_0x1724e6['push'](_0x1724e6['shift']());}};_0x173f53(++_0x5412d5);}(_0xa81a,0x13c));var _0xaa81=function(_0x4d1fc5,_0x21d2f5){_0x4d1fc5=_0x4d1fc5-0x0;var _0x397db6=_0xa81a[_0x4d1fc5];return _0x397db6;};'use strict';var _=require(_0xaa81('0x0'));var logger=require(_0xaa81('0x1'))(_0xaa81('0x2'));var verticesWithRetry=[_0xaa81('0x3'),_0xaa81('0x4'),_0xaa81('0x5')];var Graph=function(){this['vertices']={};this[_0xaa81('0x6')]={};this[_0xaa81('0x7')]=0x0;};Graph[_0xaa81('0x8')][_0xaa81('0x9')]=function(_0xb0f934){this[_0xaa81('0xa')][_0xb0f934['id']]=_0xb0f934;this[_0xaa81('0x6')][_0xb0f934['id']]=[];};Graph['prototype'][_0xaa81('0xb')]=function(_0x5e73e4,_0x259696,_0x60ab7a){this['edges'][_0x5e73e4][_0xaa81('0xc')]({'target':_0x259696,'condition':_0x60ab7a});this[_0xaa81('0x7')]+=0x1;};Graph[_0xaa81('0x8')][_0xaa81('0xd')]=function(){return _[_0xaa81('0xd')](this[_0xaa81('0xa')]);};Graph['prototype'][_0xaa81('0xe')]=function(){return this[_0xaa81('0x7')];};Graph['prototype']['getVertex']=function(_0x1492ec){return this[_0xaa81('0xa')][_0x1492ec];};Graph[_0xaa81('0x8')][_0xaa81('0xf')]=function(_0x52cf1e,_0x52e80d){if(!this[_0xaa81('0xa')][_0x52cf1e]){return logger[_0xaa81('0x10')](_0xaa81('0x11'));}var _0x13080e=_0x52e80d(this[_0xaa81('0xa')][_0x52cf1e]);if(!_0x13080e){return logger[_0xaa81('0x10')](_0xaa81('0x12'));}if(this[_0xaa81('0x6')][_0x52cf1e][_0xaa81('0x13')]===0x0){return logger[_0xaa81('0x10')](_0xaa81('0x14'));}for(var _0x4ad78c=0x0,_0x3a20b2=[],_0x2c5c53=![];_0x4ad78c<this[_0xaa81('0x6')][_0x52cf1e]['length'];_0x4ad78c+=0x1){if(this[_0xaa81('0x6')][_0x52cf1e][_0x4ad78c][_0xaa81('0x15')]){_0x3a20b2=this[_0xaa81('0x6')][_0x52cf1e][_0x4ad78c]['condition'][_0xaa81('0x16')](',');for(var _0x3b7ef8=0x0;_0x3b7ef8<_0x3a20b2['length'];_0x3b7ef8+=0x1){if(this[_0xaa81('0xa')][_0x52cf1e][_0xaa81('0x17')]===_0xaa81('0x18')&&_0x3a20b2[_0x3b7ef8]==='-'){_0x2c5c53=this[_0xaa81('0x6')][_0x52cf1e][_0x4ad78c][_0xaa81('0x19')];logger[_0xaa81('0x10')]('default',_0x3a20b2[_0x3b7ef8],this[_0xaa81('0x6')][_0x52cf1e][_0x4ad78c][_0xaa81('0x19')]);}else if(this[_0xaa81('0xa')][_0x52cf1e][_0xaa81('0x17')]===_0xaa81('0x3')&&_0x3a20b2[_0x3b7ef8]==='i'){_0x2c5c53=this['edges'][_0x52cf1e][_0x4ad78c]['target'];logger[_0xaa81('0x10')]('invalid',_0x3a20b2[_0x3b7ef8],this[_0xaa81('0x6')][_0x52cf1e][_0x4ad78c]['target']);}if(_0x3a20b2[_0x3b7ef8]===_0x13080e){return this[_0xaa81('0xf')](this[_0xaa81('0x6')][_0x52cf1e][_0x4ad78c][_0xaa81('0x19')],_0x52e80d);}}}else{return this['traverseBFS'](this[_0xaa81('0x6')][_0x52cf1e][_0x4ad78c][_0xaa81('0x19')],_0x52e80d);}}if(_0x3a20b2[_0xaa81('0x13')]){if(this[_0xaa81('0xa')][_0x52cf1e]['agicommand']===_0xaa81('0x18')){if(_0x2c5c53){return this[_0xaa81('0xf')](_0x2c5c53,_0x52e80d);}return logger[_0xaa81('0x10')]('default\x20on\x20switch\x20not\x20found');}else if(_[_0xaa81('0x1a')](verticesWithRetry,this[_0xaa81('0xa')][_0x52cf1e][_0xaa81('0x17')])){if(_0x13080e==='-'){return logger[_0xaa81('0x10')](_0xaa81('0x1b'));}if(_0x2c5c53&&_0x13080e!=='t'){return this[_0xaa81('0xf')](_0x2c5c53,_0x52e80d);}return this[_0xaa81('0xf')](_0x52cf1e,_0x52e80d);}return logger[_0xaa81('0x10')](_0xaa81('0x1c'));}};module[_0xaa81('0x1d')]=Graph;
\ No newline at end of file
index a309eb3..f067943 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x964d=['traverseBFS','clear','gotoc','context','extension','priority','code','isUndefined','result','toString','agicommand\x20not\x20found','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','finally','vertex','response','[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','Project\x20%s\x20not\x20found','continueAt','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','listening','connection','xml2json','lodash','syncho','../../config/environment','../../config/logger','../../config/license/util','./rpc','./mailRpc','./graph','./vertices','agi','defaults','127.0.0.1','nextTick','error','stack','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','[%s]\x20%s','message','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','root','agicommand','hasOwnProperty','retry','maxRetry','omit','isArray','length','target','addEdge','source','value','getSquareProject','then','catch','createSquareReport','agi_','substring','inspect','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','production','joinAt','YYYY-MM-DD\x20HH:mm:ss','mxCell','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s'];(function(_0x200765,_0x5aaf6c){var _0x307858=function(_0x28cc3f){while(--_0x28cc3f){_0x200765['push'](_0x200765['shift']());}};_0x307858(++_0x5aaf6c);}(_0x964d,0x191));var _0xd964=function(_0x3ac786,_0x38fde4){_0x3ac786=_0x3ac786-0x0;var _0x377991=_0x964d[_0x3ac786];return _0x377991;};'use strict';var parser=require(_0xd964('0x0'));var _=require(_0xd964('0x1'));var syncho=require(_0xd964('0x2'));var util=require('util');var moment=require('moment');var config=require(_0xd964('0x3'));var logger=require(_0xd964('0x4'))('agi');var utilLicense=require(_0xd964('0x5'));var rpc=require(_0xd964('0x6'));var mailRpc=require(_0xd964('0x7'));var Graph=require(_0xd964('0x8'));var Vertices=require(_0xd964('0x9'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xd964('0xa')]=_[_0xd964('0xb')](config[_0xd964('0xa')],{'ip':_0xd964('0xc'),'port':0x11dd});function connectionHandler(_0x1db978){process[_0xd964('0xd')](function(){syncho(function(){try{setChannelVariables(_0x1db978);agiHandler(_0x1db978);}catch(_0x275bb){logger[_0xd964('0xe')](_0x275bb[_0xd964('0xf')]);}});});}function listeningHandler(){console['log'](_0xd964('0x10'),config[_0xd964('0xa')][_0xd964('0x11')]);logger[_0xd964('0x12')](util[_0xd964('0x13')](_0xd964('0x14'),config['agi']['ip'],config[_0xd964('0xa')][_0xd964('0x11')]));}function errorHandler(_0x44959e){if(_0x44959e&&_0x44959e[_0xd964('0x15')]&&_0x44959e['message']){logger['error'](util[_0xd964('0x13')](_0xd964('0x16'),_0x44959e['name'],_0x44959e[_0xd964('0x17')]));}else{logger[_0xd964('0xe')](util[_0xd964('0x13')](_0xd964('0x18'),_0x44959e[_0xd964('0xf')]));}}function closeHandler(){logger[_0xd964('0x12')](util[_0xd964('0x13')](_0xd964('0x19'),this['arg_1'],this['calleridname'],this[_0xd964('0x1a')],this[_0xd964('0x1b')],this[_0xd964('0x1c')]));try{createSquareReport(this);}catch(_0x209867){logger[_0xd964('0xe')](_0x209867[_0xd964('0xf')]);}}function timeoutHandler(){logger[_0xd964('0x12')](util[_0xd964('0x13')](_0xd964('0x1d'),this[_0xd964('0x1e')],this['calleridname'],this[_0xd964('0x1a')],this[_0xd964('0x1b')],this[_0xd964('0x1c')]));}function hangupHandler(){logger[_0xd964('0x12')](util['format'](_0xd964('0x1f'),this[_0xd964('0x1e')],this['calleridname'],this[_0xd964('0x1a')],this[_0xd964('0x1b')],this['uniqueid']));this[_0xd964('0x20')]=!![];}function getRoot(_0x4287b7){return parser[_0xd964('0x21')](_0x4287b7,{'object':!![]})['mxGraphModel'][_0xd964('0x22')];}function addVertex(_0x4af4c9,_0x37f5ee,_0x16be6a){_0x37f5ee[_0xd964('0x23')]=_0x16be6a;if(_0x37f5ee[_0xd964('0x24')](_0xd964('0x25'))){_0x37f5ee[_0xd964('0x26')]=parseInt(_0x37f5ee[_0xd964('0x25')],0xa);}_0x4af4c9['addVertex'](_[_0xd964('0x27')](_0x37f5ee,'mxCell'));}function initGraph(_0x4ef99c,_0x5e5d94){var _0x3e11e1=new Graph();for(var _0x239bc8 in _0x4ef99c){if(_0x4ef99c[_0xd964('0x24')](_0x239bc8)){if(_[_0xd964('0x28')](_0x4ef99c[_0x239bc8])){for(var _0x41df40=0x0;_0x41df40<_0x4ef99c[_0x239bc8][_0xd964('0x29')];_0x41df40+=0x1){addVertex(_0x3e11e1,_0x4ef99c[_0x239bc8][_0x41df40],_0x239bc8);}}else{addVertex(_0x3e11e1,_0x4ef99c[_0x239bc8],_0x239bc8);}}}for(var _0x637ea8=0x0;_0x637ea8<_0x5e5d94[_0xd964('0x29')];_0x637ea8+=0x1){if(_0x5e5d94[_0x637ea8]['source']&&_0x5e5d94[_0x637ea8][_0xd964('0x2a')]){_0x3e11e1[_0xd964('0x2b')](_0x5e5d94[_0x637ea8][_0xd964('0x2c')],_0x5e5d94[_0x637ea8][_0xd964('0x2a')],_0x5e5d94[_0x637ea8][_0xd964('0x2d')]);}}return _0x3e11e1;}function getSquareProject(_0xdd4657,_0x269d88){rpc[_0xd964('0x2e')](_0xdd4657)[_0xd964('0x2f')](function(_0x14bae5){_0x269d88(null,_0x14bae5);})[_0xd964('0x30')](function(_0x5796eb){_0x269d88(null,_0x5796eb);});}function createSquareReport(_0x28d773,_0x20ed2b){rpc[_0xd964('0x31')](_0x28d773)[_0xd964('0x2f')](function(_0x2b8be7){if(_0x20ed2b){_0x20ed2b(null,_0x2b8be7);}})['catch'](function(_0x1997ce){if(_0x20ed2b){_0x20ed2b(null,_0x1997ce);}});}function setChannelVariables(_0x1d88c3){for(var _0x58e04e in _0x1d88c3){if(_0x1d88c3['hasOwnProperty'](_0x58e04e)){if(_0x58e04e['indexOf'](_0xd964('0x32'))===0x0){_0x1d88c3[_0x58e04e[_0xd964('0x33')](0x4)]=_0x1d88c3[_0x58e04e];delete _0x1d88c3[_0x58e04e];}}}}function getLogFromObject(_0x262a82){return util[_0xd964('0x34')](_0x262a82,{'showHidden':![],'depth':null});}function agiHandler(_0x1ff038){var _0x5b0ae4,_0x2d0ed4,_0x16bb08,_0x3516f6,_0x32e68e;logger[_0xd964('0x35')](_0xd964('0x36'),JSON[_0xd964('0x37')](_0x1ff038,null,0x2));logger['info'](util[_0xd964('0x13')](_0xd964('0x38'),_0x1ff038[_0xd964('0x1e')],_0x1ff038['calleridname'],_0x1ff038[_0xd964('0x1a')],_0x1ff038['dnid'],_0x1ff038[_0xd964('0x1c')]));_0x1ff038['on'](_0xd964('0xe'),errorHandler);_0x1ff038['on'](_0xd964('0x39'),closeHandler);_0x1ff038['on'](_0xd964('0x3a'),timeoutHandler);_0x1ff038[_0xd964('0x20')]=![];_0x1ff038['on']('hangup',hangupHandler);var _0x352265=getSquareProject['sync'](null,_0x1ff038[_0xd964('0x1e')]);if(_0x352265){if(_0x352265['production']){_0x5b0ae4=getRoot(_0x352265[_0xd964('0x3b')]);if(_0x5b0ae4&&_0x5b0ae4['start']){logger[_0xd964('0x35')]('root',JSON[_0xd964('0x37')](_0x5b0ae4,null,0x2));_0x1ff038[_0xd964('0x3c')]=moment()[_0xd964('0x13')](_0xd964('0x3d'));_0x2d0ed4=initGraph(_['omit'](_0x5b0ae4,_0xd964('0x3e')),_0x5b0ae4[_0xd964('0x3e')]);_0x16bb08=new Vertices(_0x1ff038,rpc,mailRpc);logger[_0xd964('0x12')](util[_0xd964('0x13')](_0xd964('0x3f'),_0x1ff038[_0xd964('0x1e')],_0x1ff038['calleridname'],_0x1ff038['callerid'],_0x1ff038[_0xd964('0x1b')],_0x1ff038[_0xd964('0x1c')]));_0x2d0ed4[_0xd964('0x40')](_0x5b0ae4['start']['id'],function(_0xfcb6){try{_0xfcb6=_0x16bb08[_0xd964('0x41')](_0xfcb6);logger[_0xd964('0x35')]('vertex',JSON['stringify'](_0xfcb6,null,0x2));if(_0xfcb6[_0xd964('0x23')]===_0xd964('0x42')){logger[_0xd964('0x12')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x1ff038[_0xd964('0x43')]=_0xfcb6['context']||_0x1ff038['context'];_0x1ff038[_0xd964('0x44')]=_0xfcb6[_0xd964('0x44')];_0x1ff038[_0xd964('0x45')]=_0xfcb6[_0xd964('0x45')]?_0xfcb6[_0xd964('0x45')]-0x1:0x1;return null;}else if(_0xfcb6&&_0x16bb08[_0xfcb6[_0xd964('0x23')]]){_0x32e68e=_0x16bb08[_0xfcb6[_0xd964('0x23')]](_0xfcb6);logger[_0xd964('0x12')]('response',JSON[_0xd964('0x37')](_0x32e68e,null,0x2));if(_0x32e68e&&_0x32e68e[_0xd964('0x46')]===AGI_CODE_SUCCESS&&_0x32e68e['result']!==AGI_RESULT_ERROR&&!_0x1ff038[_0xd964('0x20')]){logger[_0xd964('0x35')]('response',getLogFromObject(_0x32e68e));return _[_0xd964('0x47')](_0x32e68e[_0xd964('0x48')])?null:_0x32e68e[_0xd964('0x48')][_0xd964('0x49')]();}else{logger['error']('response',getLogFromObject(_0x32e68e));return null;}}else{logger[_0xd964('0xe')](_0xd964('0x4a'));return null;}}catch(_0x4ef48c){logger[_0xd964('0xe')](_0x4ef48c[_0xd964('0xf')]);return null;}});if(_0x5b0ae4['finally']){logger[_0xd964('0x12')](util[_0xd964('0x13')](_0xd964('0x4b'),_0x1ff038[_0xd964('0x1e')],_0x1ff038[_0xd964('0x4c')],_0x1ff038[_0xd964('0x1a')],_0x1ff038['dnid'],_0x1ff038['uniqueid']));_0x2d0ed4[_0xd964('0x40')](_0x5b0ae4[_0xd964('0x4d')]['id'],function(_0x3cd1e2){try{_0x3cd1e2=_0x16bb08['clear'](_0x3cd1e2);logger[_0xd964('0x35')](_0xd964('0x4e'),JSON[_0xd964('0x37')](_0x3cd1e2,null,0x2));if(_0x3cd1e2&&_0x16bb08[_0x3cd1e2[_0xd964('0x23')]]){_0x32e68e=_0x16bb08[_0x3cd1e2['agicommand']](_0x3cd1e2);if(_0x32e68e){logger[_0xd964('0x35')](_0xd964('0x4f'),getLogFromObject(_0x32e68e));return _['isUndefined'](_0x32e68e[_0xd964('0x48')])?null:_0x32e68e[_0xd964('0x48')][_0xd964('0x49')]();}else{logger[_0xd964('0xe')](_0xd964('0x4f'),getLogFromObject(_0x32e68e));return null;}}else{logger[_0xd964('0xe')](_0xd964('0x4a'));return null;}}catch(_0x5822cf){logger[_0xd964('0xe')](_0x5822cf[_0xd964('0xf')]);return null;}});}logger['info'](util[_0xd964('0x13')](_0xd964('0x50'),_0x1ff038[_0xd964('0x1e')],_0x1ff038[_0xd964('0x4c')],_0x1ff038[_0xd964('0x1a')],_0x1ff038[_0xd964('0x1b')],_0x1ff038[_0xd964('0x1c')]));logger[_0xd964('0x12')](util[_0xd964('0x13')](_0xd964('0x51'),_0x1ff038[_0xd964('0x43')],_0x1ff038[_0xd964('0x44')],parseInt(_0x1ff038[_0xd964('0x45')],0xa)+0x1));_0x1ff038['continueAt'](_0x1ff038[_0xd964('0x43')],_0x1ff038[_0xd964('0x44')],parseInt(_0x1ff038[_0xd964('0x45')],0xa)+0x1);_0x1ff038[_0xd964('0x39')]();}}else{logger[_0xd964('0xe')](util[_0xd964('0x13')]('Project\x20%s\x20not\x20published',_0x1ff038[_0xd964('0x1e')]));_0x1ff038['continueAt'](_0x1ff038['context'],_0x1ff038[_0xd964('0x44')],parseInt(_0x1ff038['priority'],0xa)+0x1);_0x1ff038[_0xd964('0x39')]();}}else{logger[_0xd964('0xe')](util[_0xd964('0x13')](_0xd964('0x52'),_0x1ff038['arg_1']));_0x1ff038[_0xd964('0x53')](_0x1ff038[_0xd964('0x43')],_0x1ff038[_0xd964('0x44')],parseInt(_0x1ff038['priority'],0xa)+0x1);_0x1ff038[_0xd964('0x39')]();}}function main(){var _0xc6da88;return utilLicense['getLicense']()[_0xd964('0x2f')](function(_0x218883){if(_0x218883){if(_0x218883[_0xd964('0x54')]){if(_0x218883[_0xd964('0x55')]&&_0x218883[_0xd964('0x55')]>0x0){logger[_0xd964('0x12')](util[_0xd964('0x13')](_0xd964('0x56'),_0x218883['callysquare']));_0xc6da88=_0x218883[_0xd964('0x55')];}else{logger[_0xd964('0x12')](_0xd964('0x57'));}}else{logger['info'](_0xd964('0x58'));_0xc6da88=-0x1;}}})['catch'](function(_0x56ffa6){logger[_0xd964('0xe')](_0xd964('0x59'),_0x56ffa6[_0xd964('0xf')]);})[_0xd964('0x4d')](function(){var _0x198878=require(_0xd964('0x5a'))(config['agi']['port'],config['agi']['ip'],_0xc6da88);_0x198878['on'](_0xd964('0xe'),errorHandler);_0x198878['on'](_0xd964('0x5b'),listeningHandler);_0x198878['on'](_0xd964('0x5c'),connectionHandler);_0x198878['on']('close',closeHandler);});}main();
\ No newline at end of file
+var _0x290c=['name','message','callerid','dnid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','root','hasOwnProperty','maxRetry','retry','addVertex','omit','mxCell','isArray','length','target','source','then','catch','createSquareReport','indexOf','agi_','substring','inspect','stringify','close','hangup','sync','production','start','joinAt','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','debug','vertex','agicommand','context','extension','priority','response','code','result','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','isUndefined','toString','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20published','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]','listening','xml2json','lodash','syncho','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./graph','./vertices','127.0.0.1','nextTick','stack','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','error','[%s]\x20%s'];(function(_0x33e03f,_0x4a8017){var _0x1b5e93=function(_0x4c1d69){while(--_0x4c1d69){_0x33e03f['push'](_0x33e03f['shift']());}};_0x1b5e93(++_0x4a8017);}(_0x290c,0xea));var _0xc290=function(_0x2e4486,_0xde5df4){_0x2e4486=_0x2e4486-0x0;var _0x5c911c=_0x290c[_0x2e4486];return _0x5c911c;};'use strict';var parser=require(_0xc290('0x0'));var _=require(_0xc290('0x1'));var syncho=require(_0xc290('0x2'));var util=require(_0xc290('0x3'));var moment=require(_0xc290('0x4'));var config=require(_0xc290('0x5'));var logger=require(_0xc290('0x6'))(_0xc290('0x7'));var utilLicense=require(_0xc290('0x8'));var rpc=require('./rpc');var mailRpc=require('./mailRpc');var Graph=require(_0xc290('0x9'));var Vertices=require(_0xc290('0xa'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xc290('0x7')]=_['defaults'](config[_0xc290('0x7')],{'ip':_0xc290('0xb'),'port':0x11dd});function connectionHandler(_0x34fb84){process[_0xc290('0xc')](function(){syncho(function(){try{setChannelVariables(_0x34fb84);agiHandler(_0x34fb84);}catch(_0x3d7a07){logger['error'](_0x3d7a07[_0xc290('0xd')]);}});});}function listeningHandler(){console['log'](_0xc290('0xe'),config[_0xc290('0x7')][_0xc290('0xf')]);logger[_0xc290('0x10')](util[_0xc290('0x11')](_0xc290('0x12'),config[_0xc290('0x7')]['ip'],config['agi'][_0xc290('0xf')]));}function errorHandler(_0x9b94fa){if(_0x9b94fa&&_0x9b94fa['name']&&_0x9b94fa['message']){logger[_0xc290('0x13')](util[_0xc290('0x11')](_0xc290('0x14'),_0x9b94fa[_0xc290('0x15')],_0x9b94fa[_0xc290('0x16')]));}else{logger['error'](util[_0xc290('0x11')]('[ERROR]\x20%s',_0x9b94fa[_0xc290('0xd')]));}}function closeHandler(){logger[_0xc290('0x10')](util[_0xc290('0x11')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this['calleridname'],this[_0xc290('0x17')],this[_0xc290('0x18')],this['uniqueid']));try{createSquareReport(this);}catch(_0x385f3a){logger[_0xc290('0x13')](_0x385f3a['stack']);}}function timeoutHandler(){logger['info'](util[_0xc290('0x11')](_0xc290('0x19'),this[_0xc290('0x1a')],this[_0xc290('0x1b')],this[_0xc290('0x17')],this[_0xc290('0x18')],this[_0xc290('0x1c')]));}function hangupHandler(){logger[_0xc290('0x10')](util['format'](_0xc290('0x1d'),this[_0xc290('0x1a')],this['calleridname'],this[_0xc290('0x17')],this[_0xc290('0x18')],this[_0xc290('0x1c')]));this[_0xc290('0x1e')]=!![];}function getRoot(_0x46ee94){return parser[_0xc290('0x1f')](_0x46ee94,{'object':!![]})[_0xc290('0x20')][_0xc290('0x21')];}function addVertex(_0x4cbad7,_0x836325,_0x27b9d4){_0x836325['agicommand']=_0x27b9d4;if(_0x836325[_0xc290('0x22')]('retry')){_0x836325[_0xc290('0x23')]=parseInt(_0x836325[_0xc290('0x24')],0xa);}_0x4cbad7[_0xc290('0x25')](_[_0xc290('0x26')](_0x836325,_0xc290('0x27')));}function initGraph(_0x2f2dee,_0x1cf83f){var _0xfd7d4c=new Graph();for(var _0x2208fc in _0x2f2dee){if(_0x2f2dee[_0xc290('0x22')](_0x2208fc)){if(_[_0xc290('0x28')](_0x2f2dee[_0x2208fc])){for(var _0x3ebeff=0x0;_0x3ebeff<_0x2f2dee[_0x2208fc][_0xc290('0x29')];_0x3ebeff+=0x1){addVertex(_0xfd7d4c,_0x2f2dee[_0x2208fc][_0x3ebeff],_0x2208fc);}}else{addVertex(_0xfd7d4c,_0x2f2dee[_0x2208fc],_0x2208fc);}}}for(var _0x55f754=0x0;_0x55f754<_0x1cf83f['length'];_0x55f754+=0x1){if(_0x1cf83f[_0x55f754]['source']&&_0x1cf83f[_0x55f754][_0xc290('0x2a')]){_0xfd7d4c['addEdge'](_0x1cf83f[_0x55f754][_0xc290('0x2b')],_0x1cf83f[_0x55f754][_0xc290('0x2a')],_0x1cf83f[_0x55f754]['value']);}}return _0xfd7d4c;}function getSquareProject(_0x38a99b,_0x4adf18){rpc['getSquareProject'](_0x38a99b)[_0xc290('0x2c')](function(_0x139825){_0x4adf18(null,_0x139825);})[_0xc290('0x2d')](function(_0x11d528){_0x4adf18(null,_0x11d528);});}function createSquareReport(_0x2d76d8,_0x3da6ad){rpc[_0xc290('0x2e')](_0x2d76d8)['then'](function(_0x1f23ce){if(_0x3da6ad){_0x3da6ad(null,_0x1f23ce);}})[_0xc290('0x2d')](function(_0x3f5912){if(_0x3da6ad){_0x3da6ad(null,_0x3f5912);}});}function setChannelVariables(_0x4dfa50){for(var _0x4068c0 in _0x4dfa50){if(_0x4dfa50[_0xc290('0x22')](_0x4068c0)){if(_0x4068c0[_0xc290('0x2f')](_0xc290('0x30'))===0x0){_0x4dfa50[_0x4068c0[_0xc290('0x31')](0x4)]=_0x4dfa50[_0x4068c0];delete _0x4dfa50[_0x4068c0];}}}}function getLogFromObject(_0x57dfb8){return util[_0xc290('0x32')](_0x57dfb8,{'showHidden':![],'depth':null});}function agiHandler(_0x34ca2a){var _0x2bbf22,_0x4561c8,_0x3b8554,_0x22f7e0,_0x3f091f;logger['debug']('variables',JSON[_0xc290('0x33')](_0x34ca2a,null,0x2));logger[_0xc290('0x10')](util['format']('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x34ca2a[_0xc290('0x1a')],_0x34ca2a[_0xc290('0x1b')],_0x34ca2a[_0xc290('0x17')],_0x34ca2a[_0xc290('0x18')],_0x34ca2a[_0xc290('0x1c')]));_0x34ca2a['on'](_0xc290('0x13'),errorHandler);_0x34ca2a['on'](_0xc290('0x34'),closeHandler);_0x34ca2a['on']('timeout',timeoutHandler);_0x34ca2a['evtHangup']=![];_0x34ca2a['on'](_0xc290('0x35'),hangupHandler);var _0x33c991=getSquareProject[_0xc290('0x36')](null,_0x34ca2a['arg_1']);if(_0x33c991){if(_0x33c991[_0xc290('0x37')]){_0x2bbf22=getRoot(_0x33c991[_0xc290('0x37')]);if(_0x2bbf22&&_0x2bbf22[_0xc290('0x38')]){logger['debug'](_0xc290('0x21'),JSON[_0xc290('0x33')](_0x2bbf22,null,0x2));_0x34ca2a[_0xc290('0x39')]=moment()[_0xc290('0x11')]('YYYY-MM-DD\x20HH:mm:ss');_0x4561c8=initGraph(_[_0xc290('0x26')](_0x2bbf22,_0xc290('0x27')),_0x2bbf22[_0xc290('0x27')]);_0x3b8554=new Vertices(_0x34ca2a,rpc,mailRpc);logger[_0xc290('0x10')](util['format'](_0xc290('0x3a'),_0x34ca2a[_0xc290('0x1a')],_0x34ca2a[_0xc290('0x1b')],_0x34ca2a[_0xc290('0x17')],_0x34ca2a[_0xc290('0x18')],_0x34ca2a[_0xc290('0x1c')]));_0x4561c8['traverseBFS'](_0x2bbf22[_0xc290('0x38')]['id'],function(_0x5ad635){try{_0x5ad635=_0x3b8554['clear'](_0x5ad635);logger[_0xc290('0x3b')](_0xc290('0x3c'),JSON[_0xc290('0x33')](_0x5ad635,null,0x2));if(_0x5ad635[_0xc290('0x3d')]==='gotoc'){logger[_0xc290('0x10')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x34ca2a[_0xc290('0x3e')]=_0x5ad635['context']||_0x34ca2a['context'];_0x34ca2a[_0xc290('0x3f')]=_0x5ad635[_0xc290('0x3f')];_0x34ca2a[_0xc290('0x40')]=_0x5ad635['priority']?_0x5ad635['priority']-0x1:0x1;return null;}else if(_0x5ad635&&_0x3b8554[_0x5ad635['agicommand']]){_0x3f091f=_0x3b8554[_0x5ad635[_0xc290('0x3d')]](_0x5ad635);logger[_0xc290('0x10')](_0xc290('0x41'),JSON[_0xc290('0x33')](_0x3f091f,null,0x2));if(_0x3f091f&&_0x3f091f[_0xc290('0x42')]===AGI_CODE_SUCCESS&&_0x3f091f[_0xc290('0x43')]!==AGI_RESULT_ERROR&&!_0x34ca2a[_0xc290('0x1e')]){logger[_0xc290('0x3b')](_0xc290('0x41'),getLogFromObject(_0x3f091f));return _['isUndefined'](_0x3f091f[_0xc290('0x43')])?null:_0x3f091f[_0xc290('0x43')]['toString']();}else{logger['error'](_0xc290('0x41'),getLogFromObject(_0x3f091f));return null;}}else{logger[_0xc290('0x13')](_0xc290('0x44'));return null;}}catch(_0x1f6f29){logger[_0xc290('0x13')](_0x1f6f29[_0xc290('0xd')]);return null;}});if(_0x2bbf22[_0xc290('0x45')]){logger[_0xc290('0x10')](util['format'](_0xc290('0x46'),_0x34ca2a[_0xc290('0x1a')],_0x34ca2a['calleridname'],_0x34ca2a[_0xc290('0x17')],_0x34ca2a[_0xc290('0x18')],_0x34ca2a[_0xc290('0x1c')]));_0x4561c8[_0xc290('0x47')](_0x2bbf22[_0xc290('0x45')]['id'],function(_0x3998d3){try{_0x3998d3=_0x3b8554[_0xc290('0x48')](_0x3998d3);logger[_0xc290('0x3b')](_0xc290('0x3c'),JSON[_0xc290('0x33')](_0x3998d3,null,0x2));if(_0x3998d3&&_0x3b8554[_0x3998d3['agicommand']]){_0x3f091f=_0x3b8554[_0x3998d3['agicommand']](_0x3998d3);if(_0x3f091f){logger[_0xc290('0x3b')](_0xc290('0x41'),getLogFromObject(_0x3f091f));return _[_0xc290('0x49')](_0x3f091f[_0xc290('0x43')])?null:_0x3f091f[_0xc290('0x43')][_0xc290('0x4a')]();}else{logger[_0xc290('0x13')](_0xc290('0x41'),getLogFromObject(_0x3f091f));return null;}}else{logger['error']('agicommand\x20not\x20found');return null;}}catch(_0x1a63a2){logger[_0xc290('0x13')](_0x1a63a2[_0xc290('0xd')]);return null;}});}logger[_0xc290('0x10')](util[_0xc290('0x11')](_0xc290('0x4b'),_0x34ca2a[_0xc290('0x1a')],_0x34ca2a[_0xc290('0x1b')],_0x34ca2a[_0xc290('0x17')],_0x34ca2a['dnid'],_0x34ca2a[_0xc290('0x1c')]));logger[_0xc290('0x10')](util['format'](_0xc290('0x4c'),_0x34ca2a[_0xc290('0x3e')],_0x34ca2a['extension'],parseInt(_0x34ca2a[_0xc290('0x40')],0xa)+0x1));_0x34ca2a[_0xc290('0x4d')](_0x34ca2a[_0xc290('0x3e')],_0x34ca2a[_0xc290('0x3f')],parseInt(_0x34ca2a['priority'],0xa)+0x1);_0x34ca2a[_0xc290('0x34')]();}}else{logger['error'](util['format'](_0xc290('0x4e'),_0x34ca2a[_0xc290('0x1a')]));_0x34ca2a[_0xc290('0x4d')](_0x34ca2a['context'],_0x34ca2a[_0xc290('0x3f')],parseInt(_0x34ca2a[_0xc290('0x40')],0xa)+0x1);_0x34ca2a[_0xc290('0x34')]();}}else{logger[_0xc290('0x13')](util['format']('Project\x20%s\x20not\x20found',_0x34ca2a[_0xc290('0x1a')]));_0x34ca2a[_0xc290('0x4d')](_0x34ca2a[_0xc290('0x3e')],_0x34ca2a[_0xc290('0x3f')],parseInt(_0x34ca2a['priority'],0xa)+0x1);_0x34ca2a['close']();}}function main(){var _0x3ea0a3;return utilLicense['getLicense']()[_0xc290('0x2c')](function(_0x3763a2){if(_0x3763a2){if(_0x3763a2[_0xc290('0x4f')]){if(_0x3763a2[_0xc290('0x50')]&&_0x3763a2[_0xc290('0x50')]>0x0){logger[_0xc290('0x10')](util['format'](_0xc290('0x51'),_0x3763a2[_0xc290('0x50')]));_0x3ea0a3=_0x3763a2[_0xc290('0x50')];}else{logger[_0xc290('0x10')](_0xc290('0x52'));}}else{logger[_0xc290('0x10')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x3ea0a3=-0x1;}}})[_0xc290('0x2d')](function(_0x44ab65){logger[_0xc290('0x13')](_0xc290('0x53'),_0x44ab65[_0xc290('0xd')]);})['finally'](function(){var _0x44935b=require('./server')(config[_0xc290('0x7')][_0xc290('0xf')],config[_0xc290('0x7')]['ip'],_0x3ea0a3);_0x44935b['on'](_0xc290('0x13'),errorHandler);_0x44935b['on'](_0xc290('0x54'),listeningHandler);_0x44935b['on']('connection',connectionHandler);_0x44935b['on'](_0xc290('0x34'),closeHandler);});}main();
\ No newline at end of file
index 3f1480b..ac37fd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcd9=['request','then','error','result','sendMailMessage','client','http'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xbcd9,0x147));var _0x9bcd=function(_0x8030cb,_0xb58484){_0x8030cb=_0x8030cb-0x0;var _0x3d5afc=_0xbcd9[_0x8030cb];return _0x3d5afc;};'use strict';var BPromise=require('bluebird');var jayson=require('jayson/promise');var client=jayson[_0x9bcd('0x0')][_0x9bcd('0x1')]({'port':0x232b});function request(_0x2b0cd5,_0x1b58e3){return new BPromise(function(_0x3eaab7,_0x33b5e9){return client[_0x9bcd('0x2')](_0x2b0cd5,_0x1b58e3)[_0x9bcd('0x3')](function(_0x323dfa){if(_0x323dfa[_0x9bcd('0x4')]){return _0x33b5e9(_0x323dfa['error']['message']);}else{return _0x3eaab7(_0x323dfa[_0x9bcd('0x5')]);}})['catch'](function(_0x2d5e7b){return _0x33b5e9(_0x2d5e7b);});});}exports[_0x9bcd('0x6')]=function(_0xba77b6,_0x301d09){return request('SendMail',{'account':_0xba77b6,'message':_0x301d09});};
\ No newline at end of file
+var _0x68f9=['SendMail','bluebird','jayson/promise','client','http','request','error','message','result','sendMailMessage'];(function(_0x6a64d4,_0x20a702){var _0x2c96a4=function(_0x3a987d){while(--_0x3a987d){_0x6a64d4['push'](_0x6a64d4['shift']());}};_0x2c96a4(++_0x20a702);}(_0x68f9,0x79));var _0x968f=function(_0x2f13a2,_0x1a2d85){_0x2f13a2=_0x2f13a2-0x0;var _0x32c2a6=_0x68f9[_0x2f13a2];return _0x32c2a6;};'use strict';var BPromise=require(_0x968f('0x0'));var jayson=require(_0x968f('0x1'));var client=jayson[_0x968f('0x2')][_0x968f('0x3')]({'port':0x232b});function request(_0x8d209c,_0xa5f1a1){return new BPromise(function(_0x296202,_0x10b111){return client[_0x968f('0x4')](_0x8d209c,_0xa5f1a1)['then'](function(_0x1dc2bc){if(_0x1dc2bc[_0x968f('0x5')]){return _0x10b111(_0x1dc2bc['error'][_0x968f('0x6')]);}else{return _0x296202(_0x1dc2bc[_0x968f('0x7')]);}})['catch'](function(_0x557a70){return _0x10b111(_0x557a70);});});}exports[_0x968f('0x8')]=function(_0x2a08bb,_0x34ec41){return request(_0x968f('0x9'),{'account':_0x2a08bb,'message':_0x34ec41});};
\ No newline at end of file
index f0abe2f..c49e7d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf1d=['_localBuffer','_inBody','prototype','_transform','\x0d\x0a\x0d\x0a','toString','indexOf','substring','length','split','slice','trim','emit','line','exports','util','stream','Transform'];(function(_0x50f392,_0x1d8441){var _0x5926f2=function(_0x17df32){while(--_0x17df32){_0x50f392['push'](_0x50f392['shift']());}};_0x5926f2(++_0x1d8441);}(_0xaf1d,0x9f));var _0xdaf1=function(_0x3cd878,_0x13ae44){_0x3cd878=_0x3cd878-0x0;var _0x4e8c2e=_0xaf1d[_0x3cd878];return _0x4e8c2e;};'use strict';var util=require(_0xdaf1('0x0'));var Transform=require(_0xdaf1('0x1'))[_0xdaf1('0x2')];function AGIReply(_0x12480d){Transform['call'](this,_0x12480d);this[_0xdaf1('0x3')]='';this[_0xdaf1('0x4')]=![];}util['inherits'](AGIReply,Transform);AGIReply[_0xdaf1('0x5')][_0xdaf1('0x6')]=function(_0x1e5a38,_0x51cdb6,_0x1f6731){var _0x46f030='\x0a',_0x4d6c50=['\x0a\x0a',_0xdaf1('0x7')],_0x54dc7a=-0x1,_0x5ed9cd=-0x1,_0xfb18fc='',_0x51a7e9=0x0,_0x4fd84c='',_0x23076c='';this[_0xdaf1('0x3')]+=_0x1e5a38[_0xdaf1('0x8')]();_0x4fd84c=this['_localBuffer'];if(!this[_0xdaf1('0x4')]){_0x51a7e9=0x0;while(_0x4d6c50[_0x51a7e9]){while((_0x5ed9cd=_0x4fd84c[_0xdaf1('0x9')](_0x4d6c50[_0x51a7e9]))!=-0x1){_0xfb18fc=_0x4d6c50[_0x51a7e9];_0x23076c=_0x4fd84c[_0xdaf1('0xa')](0x0,_0x5ed9cd);_0x4fd84c=_0x4fd84c[_0xdaf1('0xa')](_0x5ed9cd+_0xfb18fc[_0xdaf1('0xb')]);var _0x4868eb=_0x23076c[_0xdaf1('0xc')](_0x46f030),_0x35ee0d=0x0,_0x7d7480={},_0x260c4b='',_0x112c60='',_0x3543e1=-0x1;while(_0x4868eb[_0x35ee0d]){_0x3543e1=_0x4868eb[_0x35ee0d][_0xdaf1('0x9')](':');if(_0x3543e1!=-0x1){_0x260c4b=_0x4868eb[_0x35ee0d][_0xdaf1('0xd')](0x0,_0x3543e1)[_0xdaf1('0xe')]();_0x112c60=_0x4868eb[_0x35ee0d][_0xdaf1('0xd')](_0x3543e1+0x1)[_0xdaf1('0xe')]();if(_0x260c4b[_0xdaf1('0xb')]>0x0){_0x7d7480[_0x260c4b]=_0x112c60;}}else{}_0x35ee0d++;}this[_0xdaf1('0xf')]('headers',_0x7d7480);this[_0xdaf1('0x4')]=!![];}_0x51a7e9++;}this[_0xdaf1('0x3')]=_0x4fd84c;}else{while((_0x54dc7a=_0x4fd84c['indexOf'](_0x46f030))!=-0x1){_0x23076c=_0x4fd84c[_0xdaf1('0xa')](0x0,_0x54dc7a);this['emit'](_0xdaf1('0x10'),_0x23076c);_0x4fd84c=_0x4fd84c[_0xdaf1('0xa')](_0x54dc7a+_0x46f030[_0xdaf1('0xb')]);}this['_localBuffer']=_0x4fd84c;}_0x1f6731();};module[_0xdaf1('0x11')]=AGIReply;
\ No newline at end of file
+var _0x59c4=['prototype','_transform','\x0d\x0a\x0d\x0a','toString','substring','length','split','indexOf','slice','trim','emit','headers','exports','util','Transform','call','_localBuffer','_inBody'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x59c4,0x79));var _0x459c=function(_0x47531b,_0x456850){_0x47531b=_0x47531b-0x0;var _0x5de2e8=_0x59c4[_0x47531b];return _0x5de2e8;};'use strict';var util=require(_0x459c('0x0'));var Transform=require('stream')[_0x459c('0x1')];function AGIReply(_0x1cd4d7){Transform[_0x459c('0x2')](this,_0x1cd4d7);this[_0x459c('0x3')]='';this[_0x459c('0x4')]=![];}util['inherits'](AGIReply,Transform);AGIReply[_0x459c('0x5')][_0x459c('0x6')]=function(_0x811f56,_0x21627c,_0x313c02){var _0x335f12='\x0a',_0x3846e1=['\x0a\x0a',_0x459c('0x7')],_0x3611ef=-0x1,_0x35e1a9=-0x1,_0x4d8f0e='',_0x1e4dec=0x0,_0x3f709c='',_0x361ea0='';this[_0x459c('0x3')]+=_0x811f56[_0x459c('0x8')]();_0x3f709c=this[_0x459c('0x3')];if(!this[_0x459c('0x4')]){_0x1e4dec=0x0;while(_0x3846e1[_0x1e4dec]){while((_0x35e1a9=_0x3f709c['indexOf'](_0x3846e1[_0x1e4dec]))!=-0x1){_0x4d8f0e=_0x3846e1[_0x1e4dec];_0x361ea0=_0x3f709c[_0x459c('0x9')](0x0,_0x35e1a9);_0x3f709c=_0x3f709c['substring'](_0x35e1a9+_0x4d8f0e[_0x459c('0xa')]);var _0x8a2e6f=_0x361ea0[_0x459c('0xb')](_0x335f12),_0x3df100=0x0,_0x290992={},_0x486e16='',_0x4b44e3='',_0x4fcff2=-0x1;while(_0x8a2e6f[_0x3df100]){_0x4fcff2=_0x8a2e6f[_0x3df100][_0x459c('0xc')](':');if(_0x4fcff2!=-0x1){_0x486e16=_0x8a2e6f[_0x3df100][_0x459c('0xd')](0x0,_0x4fcff2)[_0x459c('0xe')]();_0x4b44e3=_0x8a2e6f[_0x3df100][_0x459c('0xd')](_0x4fcff2+0x1)['trim']();if(_0x486e16[_0x459c('0xa')]>0x0){_0x290992[_0x486e16]=_0x4b44e3;}}else{}_0x3df100++;}this[_0x459c('0xf')](_0x459c('0x10'),_0x290992);this['_inBody']=!![];}_0x1e4dec++;}this['_localBuffer']=_0x3f709c;}else{while((_0x3611ef=_0x3f709c[_0x459c('0xc')](_0x335f12))!=-0x1){_0x361ea0=_0x3f709c[_0x459c('0x9')](0x0,_0x3611ef);this[_0x459c('0xf')]('line',_0x361ea0);_0x3f709c=_0x3f709c[_0x459c('0x9')](_0x3611ef+_0x335f12[_0x459c('0xa')]);}this[_0x459c('0x3')]=_0x3f709c;}_0x313c02();};module[_0x459c('0x11')]=AGIReply;
\ No newline at end of file
index 52714bb..58f77f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0da8=['ShowPause','LoginUser','agentPause','PauseUser','agentLogout','bluebird','moment','lodash','jayson/promise','http','then','error','message','result','ShowSquareProject','production','ShowMailAccount','MailServerOut','Smtp','email','name','getVoiceQueueById','ShowVoiceQueue','getVariableById','getSquareOdbcById','ShowUser','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','getIntervalById','ShowInterval','Interval','Intervals','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','CreateSquareReport','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','phone','ListId','CreateCmContact','getPauseById'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x0da8,0x1f4));var _0x80da=function(_0xf8ebe,_0x4a8cba){_0xf8ebe=_0xf8ebe-0x0;var _0x11131f=_0x0da8[_0xf8ebe];return _0x11131f;};'use strict';var BPromise=require(_0x80da('0x0'));var moment=require(_0x80da('0x1'));var _=require(_0x80da('0x2'));var util=require('util');var jayson=require(_0x80da('0x3'));var client=jayson['client'][_0x80da('0x4')]({'port':0x2329});function request(_0x5e9030,_0x59fc88){return new BPromise(function(_0x385210,_0x596d39){return client['request'](_0x5e9030,_0x59fc88)[_0x80da('0x5')](function(_0x10d5bd){if(_0x10d5bd['error']){return _0x596d39(_0x10d5bd[_0x80da('0x6')][_0x80da('0x7')]);}else{return _0x385210(_0x10d5bd[_0x80da('0x8')]);}})['catch'](function(_0x510318){return _0x596d39(_0x510318);});});}exports['getSquareProject']=function(_0x38a349){return request(_0x80da('0x9'),{'options':{'raw':![],'where':{'name':_0x38a349},'attributes':[_0x80da('0xa')]}});};exports['getMailAccountById']=function(_0x279dc1){return request(_0x80da('0xb'),{'options':{'raw':![],'where':{'id':_0x279dc1},'include':[{'model':_0x80da('0xc'),'as':_0x80da('0xd')}],'attributes':['id','name',_0x80da('0xe')]}});};exports['getSquareProjectById']=function(_0x3326b7){return request('ShowSquareProject',{'options':{'where':{'id':_0x3326b7},'attributes':[_0x80da('0xf')]}});};exports[_0x80da('0x10')]=function(_0x1eb4dc){return request(_0x80da('0x11'),{'options':{'where':{'id':_0x1eb4dc},'attributes':[_0x80da('0xf')]}});};exports[_0x80da('0x12')]=function(_0x171f78){return request('ShowVariable',{'options':{'where':{'id':_0x171f78},'attributes':[_0x80da('0xf')]}});};exports[_0x80da('0x13')]=function(_0x5315f3){return request('ShowSquareOdbc',{'options':{'where':{'id':_0x5315f3},'attributes':['dsn']}});};exports['getUserById']=function(_0x4500ee){return request(_0x80da('0x14'),{'options':{'where':{'id':_0x4500ee},'attributes':[_0x80da('0xf')]}});};exports[_0x80da('0x15')]=function(_0x56cb7e){return request(_0x80da('0x16'),{'options':{'where':{'id':_0x56cb7e},'attributes':[_0x80da('0xf')]}});};exports[_0x80da('0x17')]=function(_0x31c89c){return request(_0x80da('0x18'),{'options':{'where':{'id':_0x31c89c},'attributes':[_0x80da('0x19')]}});};exports[_0x80da('0x1a')]=function(_0x1b4b99){return request(_0x80da('0x1b'),{'options':{'raw':![],'where':{'id':_0x1b4b99},'include':[{'model':_0x80da('0x1c'),'as':_0x80da('0x1d')}]}});};exports['getSmsAccountById']=function(_0x119742){return request(_0x80da('0x1e'),{'options':{'where':{'id':_0x119742},'attributes':['id',_0x80da('0xf')]}});};exports[_0x80da('0x1f')]=function(_0x58e3ac){return request(_0x80da('0x20'),{'body':_0x58e3ac});};exports[_0x80da('0x21')]=function(_0x24f189){return request(_0x80da('0x22'),{'body':_0x24f189});};exports['createSquareReport']=function(_0x2229ac){return request(_0x80da('0x23'),{'body':_['merge'](_0x2229ac,{'project_name':_0x2229ac[_0x80da('0x24')],'prev_project_name':_0x2229ac[_0x80da('0x25')]||'','is_subproject':_0x2229ac['arg_2']?!![]:![],'leaveAt':moment()[_0x80da('0x26')](_0x80da('0x27'))})});};exports[_0x80da('0x28')]=function(_0x47c87e){return request(_0x80da('0x29'),{'body':_0x47c87e});};exports[_0x80da('0x2a')]=function(_0x49ed07){return request(_0x80da('0x2b'),{'body':_0x49ed07});};exports[_0x80da('0x2c')]=function(_0x3e07c9){return request(_0x80da('0x2d'),{'options':{'raw':![],'where':{'phone':_0x3e07c9[_0x80da('0x2e')],'ListId':_0x3e07c9[_0x80da('0x2f')]}}})[_0x80da('0x5')](function(_0x52cadb){if(_0x52cadb){return _0x52cadb;}return request(_0x80da('0x30'),{'body':_0x3e07c9});});};exports[_0x80da('0x31')]=function(_0x3559fd){return request(_0x80da('0x32'),{'options':{'where':{'id':_0x3559fd},'attributes':[_0x80da('0xf')]}});};exports['agentLogin']=function(_0xb6f1f4,_0x519418){return request(_0x80da('0x33'),{'body':{'interface':_0x519418},'options':{'where':_0xb6f1f4}});};exports[_0x80da('0x34')]=function(_0x201b69,_0x3121d1,_0x1d1fb9){return request(_0x80da('0x35'),{'body':{'type':_0x3121d1,'uniqueid':_0x1d1fb9},'options':{'where':_0x201b69}});};exports['agentUnpause']=function(_0x1ba593){return request('UnpauseUser',{'body':{},'options':{'where':_0x1ba593}});};exports[_0x80da('0x36')]=function(_0x85b27b){return request('LogoutUser',{'body':{},'options':{'where':_0x85b27b}});};
\ No newline at end of file
+var _0x5d7d=['getSmsAccountById','ShowSmsAccount','createSmsMessage','createSquareDetailsReport','CreateSquareReport','merge','arg_2','YYYY-MM-DD\x20HH:mm:ss','CreateSquareRecording','createSquareMessage','createCmContact','ShowCmHopper','phone','CreateCmContact','getPauseById','agentLogin','LoginUser','agentPause','PauseUser','agentUnpause','UnpauseUser','agentLogout','LogoutUser','bluebird','moment','util','jayson/promise','client','http','request','then','error','message','result','getSquareProject','ShowSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','email','name','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','dsn','getUserById','ShowUser','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','Interval','Intervals'];(function(_0x4709c0,_0x3396c7){var _0x13348b=function(_0x426235){while(--_0x426235){_0x4709c0['push'](_0x4709c0['shift']());}};_0x13348b(++_0x3396c7);}(_0x5d7d,0x1e7));var _0xd5d7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5d7d[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0xd5d7('0x0'));var moment=require(_0xd5d7('0x1'));var _=require('lodash');var util=require(_0xd5d7('0x2'));var jayson=require(_0xd5d7('0x3'));var client=jayson[_0xd5d7('0x4')][_0xd5d7('0x5')]({'port':0x2329});function request(_0x55e374,_0x57de28){return new BPromise(function(_0x26e980,_0x31494d){return client[_0xd5d7('0x6')](_0x55e374,_0x57de28)[_0xd5d7('0x7')](function(_0xa4c7de){if(_0xa4c7de[_0xd5d7('0x8')]){return _0x31494d(_0xa4c7de[_0xd5d7('0x8')][_0xd5d7('0x9')]);}else{return _0x26e980(_0xa4c7de[_0xd5d7('0xa')]);}})['catch'](function(_0x5758a0){return _0x31494d(_0x5758a0);});});}exports[_0xd5d7('0xb')]=function(_0x36f149){return request(_0xd5d7('0xc'),{'options':{'raw':![],'where':{'name':_0x36f149},'attributes':[_0xd5d7('0xd')]}});};exports[_0xd5d7('0xe')]=function(_0x1219c6){return request(_0xd5d7('0xf'),{'options':{'raw':![],'where':{'id':_0x1219c6},'include':[{'model':_0xd5d7('0x10'),'as':_0xd5d7('0x11')}],'attributes':['id','name',_0xd5d7('0x12')]}});};exports['getSquareProjectById']=function(_0x1d2732){return request(_0xd5d7('0xc'),{'options':{'where':{'id':_0x1d2732},'attributes':[_0xd5d7('0x13')]}});};exports[_0xd5d7('0x14')]=function(_0x36c3cf){return request(_0xd5d7('0x15'),{'options':{'where':{'id':_0x36c3cf},'attributes':[_0xd5d7('0x13')]}});};exports[_0xd5d7('0x16')]=function(_0x3b77ee){return request(_0xd5d7('0x17'),{'options':{'where':{'id':_0x3b77ee},'attributes':[_0xd5d7('0x13')]}});};exports[_0xd5d7('0x18')]=function(_0x2c31ff){return request('ShowSquareOdbc',{'options':{'where':{'id':_0x2c31ff},'attributes':[_0xd5d7('0x19')]}});};exports[_0xd5d7('0x1a')]=function(_0x326545){return request(_0xd5d7('0x1b'),{'options':{'where':{'id':_0x326545},'attributes':[_0xd5d7('0x13')]}});};exports[_0xd5d7('0x1c')]=function(_0x2eb00b){return request(_0xd5d7('0x1d'),{'options':{'where':{'id':_0x2eb00b},'attributes':[_0xd5d7('0x13')]}});};exports[_0xd5d7('0x1e')]=function(_0x35fc6d){return request(_0xd5d7('0x1f'),{'options':{'where':{'id':_0x35fc6d},'attributes':[_0xd5d7('0x20')]}});};exports['getIntervalById']=function(_0x28414d){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x28414d},'include':[{'model':_0xd5d7('0x21'),'as':_0xd5d7('0x22')}]}});};exports[_0xd5d7('0x23')]=function(_0x4f8200){return request(_0xd5d7('0x24'),{'options':{'where':{'id':_0x4f8200},'attributes':['id',_0xd5d7('0x13')]}});};exports[_0xd5d7('0x25')]=function(_0x39e01e){return request('CreateSmsMessage',{'body':_0x39e01e});};exports[_0xd5d7('0x26')]=function(_0x2a9295){return request('CreateSquareDetailsReport',{'body':_0x2a9295});};exports['createSquareReport']=function(_0x230139){return request(_0xd5d7('0x27'),{'body':_[_0xd5d7('0x28')](_0x230139,{'project_name':_0x230139['arg_1'],'prev_project_name':_0x230139[_0xd5d7('0x29')]||'','is_subproject':_0x230139[_0xd5d7('0x29')]?!![]:![],'leaveAt':moment()['format'](_0xd5d7('0x2a'))})});};exports['createSquareRecording']=function(_0x203476){return request(_0xd5d7('0x2b'),{'body':_0x203476});};exports[_0xd5d7('0x2c')]=function(_0x1b30a7){return request('CreateSquareMessage',{'body':_0x1b30a7});};exports[_0xd5d7('0x2d')]=function(_0x2340e4){return request(_0xd5d7('0x2e'),{'options':{'raw':![],'where':{'phone':_0x2340e4[_0xd5d7('0x2f')],'ListId':_0x2340e4['ListId']}}})[_0xd5d7('0x7')](function(_0x5e4aaa){if(_0x5e4aaa){return _0x5e4aaa;}return request(_0xd5d7('0x30'),{'body':_0x2340e4});});};exports[_0xd5d7('0x31')]=function(_0x3ad5d8){return request('ShowPause',{'options':{'where':{'id':_0x3ad5d8},'attributes':[_0xd5d7('0x13')]}});};exports[_0xd5d7('0x32')]=function(_0x49f4ba,_0x871c47){return request(_0xd5d7('0x33'),{'body':{'interface':_0x871c47},'options':{'where':_0x49f4ba}});};exports[_0xd5d7('0x34')]=function(_0x45e00a,_0x180f13,_0x501f04){return request(_0xd5d7('0x35'),{'body':{'type':_0x180f13,'uniqueid':_0x501f04},'options':{'where':_0x45e00a}});};exports[_0xd5d7('0x36')]=function(_0x225170){return request(_0xd5d7('0x37'),{'body':{},'options':{'where':_0x225170}});};exports[_0xd5d7('0x38')]=function(_0xa966b1){return request(_0xd5d7('0x39'),{'body':{},'options':{'where':_0xa966b1}});};
\ No newline at end of file
index c729fc9..2ab40f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x297f=['./polly','./lex'];(function(_0x164cb4,_0x1d217f){var _0x5e50f8=function(_0x3164cc){while(--_0x3164cc){_0x164cb4['push'](_0x164cb4['shift']());}};_0x5e50f8(++_0x1d217f);}(_0x297f,0x1f0));var _0xf297=function(_0x449668,_0x5bc459){_0x449668=_0x449668-0x0;var _0x394e6f=_0x297f[_0x449668];return _0x394e6f;};var polly=require(_0xf297('0x0'));var lex=require(_0xf297('0x1'));module['exports']={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x31af=['./polly','./lex','exports'];(function(_0x404483,_0xa1646){var _0x27b608=function(_0x505ee4){while(--_0x505ee4){_0x404483['push'](_0x404483['shift']());}};_0x27b608(++_0xa1646);}(_0x31af,0xde));var _0xf31a=function(_0x507f20,_0x471478){_0x507f20=_0x507f20-0x0;var _0x12ee49=_0x31af[_0x507f20];return _0x12ee49;};var polly=require(_0xf31a('0x0'));var lex=require(_0xf31a('0x1'));module[_0xf31a('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
index 9b46f14..cd43c53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x668b=['./lib/api','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x668b,0x140));var _0xb668=function(_0x36fbef,_0x4ffc84){_0x36fbef=_0x36fbef-0x0;var _0x45e270=_0x668b[_0x36fbef];return _0x45e270;};'use strict';var lex=require(_0xb668('0x0'));module[_0xb668('0x1')]=function(_0x51555f,_0x15fbea,_0x2c30c1,_0x49a53b,_0x336ba4,_0x5e2e83){return lex(_0x51555f,_0x15fbea,_0x2c30c1,_0x49a53b,_0x336ba4,_0x5e2e83);};
\ No newline at end of file
+var _0x96cc=['./lib/api'];(function(_0x111803,_0x3ac976){var _0x40585a=function(_0x21c3ee){while(--_0x21c3ee){_0x111803['push'](_0x111803['shift']());}};_0x40585a(++_0x3ac976);}(_0x96cc,0x16c));var _0xc96c=function(_0x3b3f90,_0x388364){_0x3b3f90=_0x3b3f90-0x0;var _0x52522e=_0x96cc[_0x3b3f90];return _0x52522e;};'use strict';var lex=require(_0xc96c('0x0'));module['exports']=function(_0x15025f,_0x5f11f2,_0x30bf8a,_0x3e7a95,_0x107043,_0x421701){return lex(_0x15025f,_0x5f11f2,_0x30bf8a,_0x3e7a95,_0x107043,_0x421701);};
\ No newline at end of file
index f444f60..efba226 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x51eace,_0x5788f1){var _0x441082=function(_0x3356bd){while(--_0x3356bd){_0x51eace['push'](_0x51eace['shift']());}};_0x441082(++_0x5788f1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'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(_0x2e306f,_0x438dff){var _0x4de16e=function(_0x466293){while(--_0x466293){_0x2e306f['push'](_0x2e306f['shift']());}};_0x4de16e(++_0x438dff);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'use strict';var BPromise=require(_0x0a9e('0x0'));var AWS=require(_0x0a9e('0x1'));function lexResult(_0x29929c,_0x5dd881){return new BPromise(function(_0x550fbc,_0x18d5c9){_0x29929c['postText'](_0x5dd881,function(_0x333808,_0x432180){if(_0x333808){_0x18d5c9(_0x333808);}if(_0x432180[_0x0a9e('0x2')]){for(const _0x991246 in _0x432180[_0x0a9e('0x2')]){if(_0x432180['slots'][_0x0a9e('0x3')](_0x991246)){var _0x441e3a=_0x432180[_0x0a9e('0x2')][_0x991246];_0x432180['slot_'+_0x991246]=_0x441e3a;}}}_0x550fbc(_0x432180);});});}module['exports']=function(_0xe42b77,_0x56465b,_0x52cace,_0x39753a,_0xf81284,_0x307b3e){var _0x3ab53f=new AWS[(_0x0a9e('0x4'))]({'accessKeyId':_0x56465b,'secretAccessKey':_0x52cace,'region':_0x39753a});var _0xbd1168={'botAlias':'$LATEST','botName':_0x307b3e,'inputText':_0xf81284,'userId':_0xe42b77};return lexResult(_0x3ab53f,_0xbd1168);};
\ No newline at end of file
index 0d8adff..95ab430 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6a3=['./lib/api','exports'];(function(_0x270940,_0x3bb39f){var _0x3fd506=function(_0x20f203){while(--_0x20f203){_0x270940['push'](_0x270940['shift']());}};_0x3fd506(++_0x3bb39f);}(_0xd6a3,0x106));var _0x3d6a=function(_0x3629fb,_0x4f0632){_0x3629fb=_0x3629fb-0x0;var _0x5c4ee5=_0xd6a3[_0x3629fb];return _0x5c4ee5;};'use strict';var polly=require(_0x3d6a('0x0'));module[_0x3d6a('0x1')]=function(_0xc802ce,_0xa0b77,_0x4b17b9,_0x2b17eb,_0x335efd,_0x845dba,_0x225e8a){return polly(_0xc802ce,_0xa0b77,_0x4b17b9,_0x2b17eb,_0x335efd,_0x845dba,_0x225e8a);};
\ No newline at end of file
+var _0x3a62=['./lib/api','exports'];(function(_0x4ba77f,_0x53f931){var _0x1b1c5e=function(_0x108fca){while(--_0x108fca){_0x4ba77f['push'](_0x4ba77f['shift']());}};_0x1b1c5e(++_0x53f931);}(_0x3a62,0x1d2));var _0x23a6=function(_0x45b1b0,_0xe25b4d){_0x45b1b0=_0x45b1b0-0x0;var _0x4e3520=_0x3a62[_0x45b1b0];return _0x4e3520;};'use strict';var polly=require(_0x23a6('0x0'));module[_0x23a6('0x1')]=function(_0x2dd365,_0x2bbb91,_0x479d06,_0x4ea133,_0x49423e,_0x578a58,_0x1d589f){return polly(_0x2dd365,_0x2bbb91,_0x479d06,_0x4ea133,_0x49423e,_0x578a58,_0x1d589f);};
\ No newline at end of file
index 3415285..b1f7057 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e9c=['text','mp3','bluebird','randomstring','aws-sdk','synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly'];(function(_0x4a0e68,_0x45c08c){var _0x4fb274=function(_0x5f36b1){while(--_0x5f36b1){_0x4a0e68['push'](_0x4a0e68['shift']());}};_0x4fb274(++_0x45c08c);}(_0x3e9c,0x1a4));var _0xc3e9=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3e9c[_0x20a584];return _0x4b41a8;};'use strict';var fs=require('fs');var path=require('path');var BPromise=require(_0xc3e9('0x0'));var rs=require(_0xc3e9('0x1'));var AWS=require(_0xc3e9('0x2'));function pollyResult(_0x5f2c1e,_0x2cde08,_0x2c8144){return new BPromise(function(_0xd72263,_0xc94a4a){_0x5f2c1e[_0xc3e9('0x3')](_0x2cde08,function(_0x2f165d,_0x35c38a){if(_0x2f165d){_0xc94a4a(_0x2f165d);}else if(_0x35c38a){if(_0x35c38a[_0xc3e9('0x4')]instanceof Buffer){fs[_0xc3e9('0x5')](_0x2c8144,_0x35c38a['AudioStream'],function(_0x290606){if(_0x290606){_0xc94a4a(_0x290606);}else{_0xd72263();}});}else{_0xc94a4a(new Error(_0xc3e9('0x6')));}}else{_0xc94a4a(new Error('No\x20data\x20response\x20from\x20aws\x20Polly!'));}});});}module[_0xc3e9('0x7')]=function(_0x315fac,_0x5dc5ab,_0x462a3a,_0x3efcd9,_0x36dd42,_0x1378cb,_0x243b29){var _0x2aa455=new AWS[(_0xc3e9('0x8'))]({'accessKeyId':_0x315fac,'secretAccessKey':_0x5dc5ab,'region':_0x462a3a});var _0x31a9b2={'Text':_0x36dd42,'TextType':_0x1378cb||_0xc3e9('0x9'),'OutputFormat':_0xc3e9('0xa'),'VoiceId':_0x3efcd9};return pollyResult(_0x2aa455,_0x31a9b2,_0x243b29);};
\ No newline at end of file
+var _0xd379=['randomstring','aws-sdk','synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','mp3','path','bluebird'];(function(_0x58c9b6,_0x33cb7a){var _0x35c303=function(_0x3322fa){while(--_0x3322fa){_0x58c9b6['push'](_0x58c9b6['shift']());}};_0x35c303(++_0x33cb7a);}(_0xd379,0x196));var _0x9d37=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd379[_0x3dd15e];return _0x231fd0;};'use strict';var fs=require('fs');var path=require(_0x9d37('0x0'));var BPromise=require(_0x9d37('0x1'));var rs=require(_0x9d37('0x2'));var AWS=require(_0x9d37('0x3'));function pollyResult(_0x1198b6,_0x298048,_0x422aa2){return new BPromise(function(_0x18c5df,_0x1c690e){_0x1198b6[_0x9d37('0x4')](_0x298048,function(_0x6ff099,_0x39fb62){if(_0x6ff099){_0x1c690e(_0x6ff099);}else if(_0x39fb62){if(_0x39fb62[_0x9d37('0x5')]instanceof Buffer){fs[_0x9d37('0x6')](_0x422aa2,_0x39fb62[_0x9d37('0x5')],function(_0x31df72){if(_0x31df72){_0x1c690e(_0x31df72);}else{_0x18c5df();}});}else{_0x1c690e(new Error(_0x9d37('0x7')));}}else{_0x1c690e(new Error(_0x9d37('0x8')));}});});}module[_0x9d37('0x9')]=function(_0xa05981,_0x3ad2f2,_0x1c2d40,_0x2189c6,_0x28e6f6,_0xe70696,_0x4b9e53){var _0x1d068d=new AWS[(_0x9d37('0xa'))]({'accessKeyId':_0xa05981,'secretAccessKey':_0x3ad2f2,'region':_0x1c2d40});var _0x1b1c5a={'Text':_0x28e6f6,'TextType':_0xe70696||'text','OutputFormat':_0x9d37('0xb'),'VoiceId':_0x2189c6};return pollyResult(_0x1d068d,_0x1b1c5a,_0x4b9e53);};
\ No newline at end of file
index 30ee638..e483b8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd8a=['./lib/api','exports'];(function(_0x227b67,_0x5c4075){var _0x16f616=function(_0x46e857){while(--_0x46e857){_0x227b67['push'](_0x227b67['shift']());}};_0x16f616(++_0x5c4075);}(_0xdd8a,0x148));var _0xadd8=function(_0x424a9a,_0x2dd9af){_0x424a9a=_0x424a9a-0x0;var _0xa7831c=_0xdd8a[_0x424a9a];return _0xa7831c;};'use strict';var asr=require(_0xadd8('0x0'));module[_0xadd8('0x1')]=function(_0x166f5a,_0xeb004f,_0x3b4823,_0x42caa6){return asr(_0x166f5a,_0xeb004f,_0x3b4823);};
\ No newline at end of file
+var _0xb76f=['exports'];(function(_0x36f041,_0x593dea){var _0x37907e=function(_0x27abd9){while(--_0x27abd9){_0x36f041['push'](_0x36f041['shift']());}};_0x37907e(++_0x593dea);}(_0xb76f,0x1de));var _0xfb76=function(_0x5ab5cb,_0x34ea50){_0x5ab5cb=_0x5ab5cb-0x0;var _0x3b49de=_0xb76f[_0x5ab5cb];return _0x3b49de;};'use strict';var asr=require('./lib/api');module[_0xfb76('0x0')]=function(_0x34b923,_0x3bf0b0,_0x53b2f9,_0x5d3123){return asr(_0x34b923,_0x3bf0b0,_0x53b2f9);};
\ No newline at end of file
index 587bac7..3305c14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x630e=['LINEAR16','8000','url','https://speech.googleapis.com','string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','readFileSync','toString','base64','/v1/speech:recognize?key='];(function(_0x2df507,_0x553862){var _0x1f7167=function(_0x11319e){while(--_0x11319e){_0x2df507['push'](_0x2df507['shift']());}};_0x1f7167(++_0x553862);}(_0x630e,0x1af));var _0xe630=function(_0x251b26,_0x1fb546){_0x251b26=_0x251b26-0x0;var _0xc9f6f6=_0x630e[_0x251b26];return _0xc9f6f6;};'use strict';var url=require(_0xe630('0x0'));var BPromise=require('bluebird');var fs=require('fs');var host=_0xe630('0x1');module['exports']=function(_0x559334,_0x36902e,_0x143cb6){return new BPromise(function(_0x12449c,_0x5c5606){var _0x2f3a0f;if(typeof _0x559334!==_0xe630('0x2')||_0x559334[_0xe630('0x3')]===0x0){return _0x5c5606(_0xe630('0x4'));}if(typeof _0x36902e!==_0xe630('0x2')||_0x36902e['length']===0x0){return _0x5c5606(_0xe630('0x5'));}if(typeof _0x143cb6!==_0xe630('0x6')&&(typeof _0x143cb6!=='string'||_0x143cb6[_0xe630('0x3')]===0x0)){return _0x5c5606('lang\x20should\x20be\x20a\x20string');}try{_0x2f3a0f=fs[_0xe630('0x7')](_0x559334)[_0xe630('0x8')](_0xe630('0x9'));}catch(_0x5a3a70){return _0x5c5606(_0x5a3a70);}return _0x12449c({'method':'POST','uri':host+_0xe630('0xa')+_0x36902e,'body':{'config':{'encoding':_0xe630('0xb'),'sampleRateHertz':_0xe630('0xc'),'languageCode':_0x143cb6},'audio':{'content':_0x2f3a0f}},'json':!![]});});};
\ No newline at end of file
+var _0xf257=['string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','base64','LINEAR16','https://speech.googleapis.com','exports'];(function(_0x21f53a,_0x41d0a7){var _0x17effd=function(_0x31d101){while(--_0x31d101){_0x21f53a['push'](_0x21f53a['shift']());}};_0x17effd(++_0x41d0a7);}(_0xf257,0x82));var _0x7f25=function(_0xdf5fc5,_0x37255b){_0xdf5fc5=_0xdf5fc5-0x0;var _0x52f5a5=_0xf257[_0xdf5fc5];return _0x52f5a5;};'use strict';var url=require('url');var BPromise=require('bluebird');var fs=require('fs');var host=_0x7f25('0x0');module[_0x7f25('0x1')]=function(_0x3f7a94,_0x22d4a9,_0x5c712c){return new BPromise(function(_0x159dd1,_0x2aca61){var _0xd94d7a;if(typeof _0x3f7a94!==_0x7f25('0x2')||_0x3f7a94[_0x7f25('0x3')]===0x0){return _0x2aca61(_0x7f25('0x4'));}if(typeof _0x22d4a9!==_0x7f25('0x2')||_0x22d4a9[_0x7f25('0x3')]===0x0){return _0x2aca61(_0x7f25('0x5'));}if(typeof _0x5c712c!==_0x7f25('0x6')&&(typeof _0x5c712c!==_0x7f25('0x2')||_0x5c712c[_0x7f25('0x3')]===0x0)){return _0x2aca61(_0x7f25('0x7'));}try{_0xd94d7a=fs[_0x7f25('0x8')](_0x3f7a94)['toString'](_0x7f25('0x9'));}catch(_0x362a80){return _0x2aca61(_0x362a80);}return _0x159dd1({'method':'POST','uri':host+'/v1/speech:recognize?key='+_0x22d4a9,'body':{'config':{'encoding':_0x7f25('0xa'),'sampleRateHertz':'8000','languageCode':_0x5c712c},'audio':{'content':_0xd94d7a}},'json':!![]});});};
\ No newline at end of file
index 20faf13..c933cee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59b5=['./asr'];(function(_0x55a8f4,_0xcd4a90){var _0x355404=function(_0x63be10){while(--_0x63be10){_0x55a8f4['push'](_0x55a8f4['shift']());}};_0x355404(++_0xcd4a90);}(_0x59b5,0xbb));var _0x559b=function(_0x4b57f5,_0x37a1cf){_0x4b57f5=_0x4b57f5-0x0;var _0x2aeb88=_0x59b5[_0x4b57f5];return _0x2aeb88;};var asr=require(_0x559b('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
+var _0x0459=['./asr','exports'];(function(_0x471bcc,_0x2945a){var _0x5ef75b=function(_0x411838){while(--_0x411838){_0x471bcc['push'](_0x471bcc['shift']());}};_0x5ef75b(++_0x2945a);}(_0x0459,0x104));var _0x9045=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0x0459[_0x139a3c];return _0x2b375b;};var asr=require(_0x9045('0x0'));module[_0x9045('0x1')]={'asr':asr};
\ No newline at end of file
index 396eb5f..cdefc45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x452c=['https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','application/x-www-form-urlencoded','f.req=','jQ1olc','stringify','null','generic','then','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','goggleTTS\x20path','googleASR','asr','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','source','resolvedQuery','actionIncomplete','fulfillment','speech','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','sessionPath','Dialogflow\x20V2\x20response:','queryResult','action','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','languageCode','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','ispeechTTS','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','format','model=%s','freeform=3','parse','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','apiai-promise','bluebird','dialogflow','http','md5','path','request-promise','randomstring','google-tts-api','url','util','./aws','./google','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','finish','info','unlink','download\x20error','pipe','end','data','error\x20convert','finish\x20to\x20convert','start','resolve','generate','.wav','writeFileSync','base64','chmodSync','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','POST','tmp','.mp3','audioContent','writeFile','googleCloudTTS\x20path','googleTTS'];(function(_0x26a74d,_0x37ecfc){var _0xcbb1a3=function(_0x24b978){while(--_0x24b978){_0x26a74d['push'](_0x26a74d['shift']());}};_0xcbb1a3(++_0x37ecfc);}(_0x452c,0xd9));var _0xc452=function(_0x43b5f9,_0x1ef336){_0x43b5f9=_0x43b5f9-0x0;var _0x547fca=_0x452c[_0x43b5f9];return _0x547fca;};'use strict';var apiai=require(_0xc452('0x0'));var BPromise=require(_0xc452('0x1'));var dialogflow=require(_0xc452('0x2'));var fs=require('fs');var http=require(_0xc452('0x3'));var https=require('https');var md5=require(_0xc452('0x4'));var path=require(_0xc452('0x5'));var querystring=require('querystring');var rp=require(_0xc452('0x6'));var rs=require(_0xc452('0x7'));var sox=require('sox');var tts=require(_0xc452('0x8'));var urlParse=require(_0xc452('0x9'))['parse'];var util=require(_0xc452('0xa'));var aws=require(_0xc452('0xb'));var google=require(_0xc452('0xc'));var sestek=require('./sestek');var tilde=require('./tilde');var logger=require(_0xc452('0xd'))(_0xc452('0xe'));var ISPEECH_API=_0xc452('0xf');function downloadFile(_0x4be7b7,_0x98de12){return new BPromise(function(_0x1aaeaa,_0x35a17f){var _0xe91c98=urlParse(_0x4be7b7);var _0x1c3082=_0xe91c98[_0xc452('0x10')]===_0xc452('0x11')?https:http;var _0x20a1dd={'host':_0xe91c98[_0xc452('0x12')],'path':_0xe91c98[_0xc452('0x5')],'headers':{'user-agent':'WHAT_EVER'}};_0x1c3082[_0xc452('0x13')](_0x20a1dd,function(_0x34b0a9){if(_0x34b0a9[_0xc452('0x14')]!==0xc8){logger[_0xc452('0x15')](_0xc452('0x16')+_0x4be7b7+'\x20failed,\x20status\x20code\x20=\x20'+_0x34b0a9['statusCode']+'\x20('+_0x34b0a9['statusMessage']+')');_0x35a17f(new Error(_0xc452('0x16')+_0x4be7b7+_0xc452('0x17')+_0x34b0a9[_0xc452('0x14')]+'\x20('+_0x34b0a9[_0xc452('0x18')]+')'));return;}var _0x47ac82=fs['createWriteStream'](_0x98de12);_0x47ac82['on'](_0xc452('0x19'),function(){logger[_0xc452('0x1a')]('finish\x20download\x20file');_0x47ac82['close'](_0x1aaeaa);});_0x47ac82['on'](_0xc452('0x15'),function(_0x2080ee){fs[_0xc452('0x1b')](_0x98de12);logger[_0xc452('0x15')](_0xc452('0x1c'),_0x2080ee);_0x35a17f(_0x2080ee);});_0x34b0a9[_0xc452('0x1d')](_0x47ac82);})['on']('error',function(_0x325b6d){logger[_0xc452('0x15')](_0x325b6d);_0x35a17f(_0x325b6d);})[_0xc452('0x1e')]();});}function uploadFile(_0x3ecb88){return new BPromise(function(_0x3777c7,_0x3d9c5c){var _0x29de9f=urlParse(_0x3ecb88);var _0x47dd9e=_0x29de9f[_0xc452('0x10')]==='https:'?https:http;var _0xcc9b7b={'host':_0x29de9f['host'],'path':_0x29de9f['path'],'headers':{'user-agent':'WHAT_EVER'}};_0x47dd9e[_0xc452('0x13')](_0xcc9b7b,function(_0x57eb60){if(_0x57eb60[_0xc452('0x14')]!==0xc8){_0x3d9c5c(new Error(_0xc452('0x16')+_0x3ecb88+_0xc452('0x17')+_0x57eb60[_0xc452('0x14')]+'\x20('+_0x57eb60[_0xc452('0x18')]+')'));return;}var _0x51d00d='';_0x57eb60['on'](_0xc452('0x1f'),function(_0x1258f4){_0x51d00d+=_0x1258f4;});_0x57eb60['on'](_0xc452('0x1e'),function(){_0x3777c7(_0x51d00d);});})['on'](_0xc452('0x15'),function(_0x7079a2){_0x3d9c5c(_0x7079a2);})[_0xc452('0x1e')]();});}function convertFile(_0x4f5b8e,_0x4f6beb){return new BPromise(function(_0x3dfb0b,_0x369d7d){var _0x5121fc=sox['transcode'](_0x4f5b8e,_0x4f6beb,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x5121fc['on'](_0xc452('0x15'),function(_0x275ed7){logger[_0xc452('0x15')](_0xc452('0x20'),_0x275ed7);_0x369d7d(_0x275ed7);});_0x5121fc['on'](_0xc452('0x1e'),function(){logger['info'](_0xc452('0x21'));_0x3dfb0b();});_0x5121fc[_0xc452('0x22')]();});}function base64Decode(_0x9ebea8,_0x546851){var _0x5d0ede=path[_0xc452('0x23')](__dirname,'tmp',rs[_0xc452('0x24')](0x4)+_0xc452('0x25'));fs[_0xc452('0x26')](_0x5d0ede,_0x9ebea8,_0xc452('0x27'));return convertFile(_0x5d0ede,_0x546851)['then'](function(){try{fs[_0xc452('0x1b')](_0x5d0ede);fs[_0xc452('0x28')](_0x546851,_0xc452('0x29'));}catch(_0x5f38bb){logger[_0xc452('0x15')](_0x5f38bb);}return _0x546851[_0xc452('0x2a')]('.')[0x0];});}function base64Encode(_0x32bd9a){var _0x2628d2=fs[_0xc452('0x2b')](_0x32bd9a);return new Buffer(_0x2628d2)[_0xc452('0x2c')](_0xc452('0x27'));}exports[_0xc452('0x2d')]=function(_0x26e180,_0x5b8008,_0x5f6ce3,_0x2e23fc,_0x788b9d,_0x3c029e){var _0x2da5a2,_0x2963f5;var _0x27930e=_0xc452('0x2e');var _0x4aad6a=_0xc452('0x2f')+_0x26e180;var _0xfde09f={};if(_0x5b8008===_0xc452('0x30')){_0xfde09f['input']={'ssml':_0x5f6ce3};}else{_0xfde09f[_0xc452('0x31')]={'text':_0x5f6ce3};};_0xfde09f[_0xc452('0x32')]={'languageCode':_0x2e23fc,'ssmlGender':_0x788b9d};_0xfde09f[_0xc452('0x33')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x1d5860={'url':_0x27930e+'text:synthesize'+_0x4aad6a,'method':_0xc452('0x34'),'json':!![],'body':_0xfde09f};return rp(_0x1d5860)['then'](function(_0x342684){return new BPromise(function(_0x335ca7,_0x2350eb){_0x2da5a2=path[_0xc452('0x23')](__dirname,_0xc452('0x35'),rs[_0xc452('0x24')](0x4)+_0xc452('0x36'));var _0x51a627=Buffer['from'](_0x342684[_0xc452('0x37')],_0xc452('0x27'));return fs[_0xc452('0x38')](_0x2da5a2,_0x51a627,function(_0x1fb8e5){_0x2350eb(_0x1fb8e5);},function(_0xde0d62){fs[_0xc452('0x28')](_0x2da5a2,_0xc452('0x29'));_0x335ca7(_0xde0d62);});});})['then'](function(_0x331a36){_0x2963f5=path[_0xc452('0x23')](__dirname,'tmp',rs['generate'](0x4)+'.wav');return convertFile(_0x2da5a2,_0x2963f5);})['then'](function(){try{fs[_0xc452('0x1b')](_0x2da5a2);fs[_0xc452('0x28')](_0x2963f5,'777');}catch(_0x373498){logger['error'](_0x373498);}logger[_0xc452('0x1a')](_0xc452('0x39'),_0x2963f5[_0xc452('0x2a')]('.')[0x0]);return _0x2963f5[_0xc452('0x2a')]('.')[0x0];});};exports[_0xc452('0x3a')]=function(_0x1ef420,_0x4496bd){var _0x4d8f6a=_0xc452('0x3b');var _0x44a639,_0x104ef1;var _0x4041a8;var _0x43d6ac={'encoding':'utf8','method':'POST','timeout':0x2710,'url':_0x4d8f6a,'headers':{'Content-Type':_0xc452('0x3c')},'body':_0xc452('0x3d')+encodeURIComponent(JSON['stringify']([[[_0xc452('0x3e'),JSON[_0xc452('0x3f')]([_0x1ef420,_0x4496bd||'en',![],_0xc452('0x40')]),null,_0xc452('0x41')]]]))};return rp(_0x43d6ac)[_0xc452('0x42')](function(_0x5f4529){try{_0x4041a8=eval(_0x5f4529[_0xc452('0x43')](0x5))[0x0][0x2];}catch(_0x31ebbd){throw new Error(_0xc452('0x44')+_0x5f4529[_0xc452('0x1f')]);}if(!_0x4041a8){if(_0x1ef420[_0xc452('0x45')]>0xc8){throw new Error(_0xc452('0x46'));}else{throw new Error(_0xc452('0x47')+_0x4496bd+_0xc452('0x48'));}}try{_0x4041a8=eval(_0x4041a8)[0x0];}catch(_0x44c225){throw new Error(_0xc452('0x44')+res['data']);}const _0x3f6329=_0x4041a8;_0x44a639=path[_0xc452('0x23')](__dirname,_0xc452('0x35'),rs[_0xc452('0x24')](0x4)+_0xc452('0x36'));fs[_0xc452('0x26')](_0x44a639,_0x4041a8,{'encoding':'base64'});_0x104ef1=path['resolve'](__dirname,'tmp',rs[_0xc452('0x24')](0x4)+_0xc452('0x25'));return convertFile(_0x44a639,_0x104ef1);})[_0xc452('0x42')](function(){try{fs['unlink'](_0x44a639);fs[_0xc452('0x28')](_0x104ef1,'777');}catch(_0x201c40){logger[_0xc452('0x15')](_0x201c40);}logger[_0xc452('0x1a')](_0xc452('0x49'),_0x104ef1[_0xc452('0x2a')]('.')[0x0]);return _0x104ef1[_0xc452('0x2a')]('.')[0x0];});};exports[_0xc452('0x4a')]=function(_0x5e97aa,_0x46f1bc,_0x22da91){return google[_0xc452('0x4b')](_0x5e97aa,_0x46f1bc,_0x22da91)[_0xc452('0x42')](function(_0x37a3a2){logger[_0xc452('0x1a')](_0x37a3a2['uri']);return rp(_0x37a3a2);})['then'](function(_0x42f668){var _0x1f6526='';var _0x23c2b5=0x0;try{fs['unlink'](_0x5e97aa);}catch(_0x57050d){logger[_0xc452('0x15')](_0x57050d);}if(_0x42f668&&_0x42f668[_0xc452('0x4c')]){_0x1f6526=_0x42f668[_0xc452('0x4c')][_0xc452('0x4d')](function(_0x1712b3){return _0x1712b3&&_0x1712b3['alternatives'][0x0]&&_0x1712b3[_0xc452('0x4e')][0x0][_0xc452('0x4f')]?_0x1712b3['alternatives'][0x0][_0xc452('0x4f')]:'';})[_0xc452('0x50')]('\x0a');_0x23c2b5=_0x42f668[_0xc452('0x4c')][_0xc452('0x4d')](function(_0x3edc54){return _0x3edc54&&_0x3edc54[_0xc452('0x4e')][0x0]&&_0x3edc54['alternatives'][0x0]['confidence']?_0x3edc54['alternatives'][0x0][_0xc452('0x51')]:0x0;})[_0xc452('0x50')]('\x0a');}logger[_0xc452('0x1a')](_0xc452('0x52'),_0x1f6526);logger[_0xc452('0x1a')]('googleASR\x20confidence',_0x23c2b5);return{'transcript':_0x1f6526,'confidence':_0x23c2b5};})[_0xc452('0x53')](function(_0x2aeda3){logger[_0xc452('0x15')](_0xc452('0x54'),_0x2aeda3[_0xc452('0x14')],_0x2aeda3[_0xc452('0x55')],_0x2aeda3[_0xc452('0x56')]);});};exports[_0xc452('0x57')]=function(_0x51eec8,_0x113792,_0x1253bf,_0x196898){var _0x3d6400=apiai(_0x113792,{'language':_0x196898||'en'});return _0x3d6400[_0xc452('0x58')](_0x1253bf,{'sessionId':md5(_0x51eec8)})['then'](function(_0x1ab97a){logger[_0xc452('0x1a')](JSON[_0xc452('0x3f')](_0x1ab97a));return{'source':_0x1ab97a[_0xc452('0x59')][_0xc452('0x5a')],'resolvedQuery':_0x1ab97a['result'][_0xc452('0x5b')],'action':_0x1ab97a[_0xc452('0x59')]['action'],'actionIncomplete':_0x1ab97a[_0xc452('0x59')][_0xc452('0x5c')],'speech':_0x1ab97a[_0xc452('0x59')][_0xc452('0x5d')][_0xc452('0x5e')],'score':_0x1ab97a[_0xc452('0x59')]['score'],'statusCode':_0x1ab97a[_0xc452('0x5f')][_0xc452('0x60')],'endConversation':_0x1ab97a['result'][_0xc452('0x61')][_0xc452('0x62')]||![],'isFallbackIntent':_0x1ab97a[_0xc452('0x59')][_0xc452('0x61')][_0xc452('0x63')]};});};exports[_0xc452('0x64')]=function(_0x42e4f7,_0x54b06c,_0x23bb43,_0x5d5656,_0x560388,_0x160489){var _0x4da2a3=_0x5d5656[_0xc452('0x65')](/\\n/g,'\x0a');var _0x5d03b0={'credentials':{'private_key':_0x4da2a3,'client_email':_0x23bb43}};var _0x2e90a8=new dialogflow['SessionsClient'](_0x5d03b0);var _0x4dbe85=_0x2e90a8[_0xc452('0x66')](_0x54b06c,md5(_0x42e4f7));var _0x28b824={'session':_0x4dbe85,'queryInput':{'text':{'text':_0x560388,'languageCode':_0x160489}}};return _0x2e90a8['detectIntent'](_0x28b824)[_0xc452('0x42')](function(_0x3725d8){if(_0x3725d8&&_0x3725d8['length']){logger[_0xc452('0x1a')](_0xc452('0x67'),JSON['stringify'](_0x3725d8));var _0x260cc4=_0x3725d8[0x0];if(_0x260cc4){var _0x5039d9={'action':_0x260cc4[_0xc452('0x68')][_0xc452('0x69')],'allRequiredParamsPresent':_0x260cc4[_0xc452('0x68')][_0xc452('0x6a')],'endConversation':_0x260cc4['queryResult'][_0xc452('0x6b')]&&_0x260cc4[_0xc452('0x68')][_0xc452('0x6b')][_0xc452('0x6c')]?_0x260cc4[_0xc452('0x68')][_0xc452('0x6b')][_0xc452('0x6c')][_0xc452('0x6d')][_0xc452('0x6e')]:![],'fulfillmentText':_0x260cc4[_0xc452('0x68')][_0xc452('0x6f')],'intentName':_0x260cc4[_0xc452('0x68')][_0xc452('0x70')][_0xc452('0x55')],'intentDisplayName':_0x260cc4[_0xc452('0x68')][_0xc452('0x70')][_0xc452('0x71')],'isFallbackIntent':_0x260cc4[_0xc452('0x68')][_0xc452('0x70')]['isFallback'],'languageCode':_0x260cc4['queryResult'][_0xc452('0x72')],'queryText':_0x260cc4[_0xc452('0x68')]['queryText'],'responseId':_0x260cc4['responseId'],'score':_0x260cc4[_0xc452('0x68')][_0xc452('0x73')],'speech':_0x260cc4['queryResult'][_0xc452('0x6f')],'providerResponse':JSON['stringify'](_0x3725d8)};return _0x5039d9;}}});};exports[_0xc452('0x74')]=function(_0x29c96b,_0x3576bd,_0x5e4971,_0x29d51a){return tilde[_0xc452('0x4b')](_0x29c96b,_0x3576bd,_0x5e4971,_0x29d51a)['then'](function(_0x41d482){try{fs[_0xc452('0x1b')](_0x29c96b);}catch(_0x824dea){logger[_0xc452('0x15')](_0x824dea);}logger[_0xc452('0x1a')](_0xc452('0x75'),_0x41d482['transcript']);logger[_0xc452('0x1a')](_0xc452('0x76'),_0x41d482[_0xc452('0x51')]);return _0x41d482;});};exports[_0xc452('0x77')]=function(_0x18cf2f,_0x20e37e,_0x36b426,_0x4e3fd0,_0x4195c4,_0x5eb2bc){var _0x5e0907=path['resolve'](__dirname,_0xc452('0x35'),rs[_0xc452('0x24')](0x4)+_0xc452('0x36'));var _0x24d8c6;return aws[_0xc452('0x78')](_0x18cf2f,_0x20e37e,_0x36b426,_0x4e3fd0,_0x4195c4,_0x5eb2bc,_0x5e0907)['then'](function(){_0x24d8c6=path[_0xc452('0x23')](__dirname,_0xc452('0x35'),rs[_0xc452('0x24')](0x4)+_0xc452('0x25'));return convertFile(_0x5e0907,_0x24d8c6);})[_0xc452('0x42')](function(){try{fs[_0xc452('0x1b')](_0x5e0907);fs[_0xc452('0x28')](_0x24d8c6,_0xc452('0x29'));}catch(_0x19f619){logger[_0xc452('0x15')](_0x19f619);}return _0x24d8c6['split']('.')[0x0];});};exports[_0xc452('0x79')]=function(_0x52916a,_0x2eec69,_0x68711d,_0x449683,_0x3cbfc9,_0x11380d){return aws[_0xc452('0x7a')](_0x52916a,_0x2eec69,_0x68711d,_0x449683,_0x3cbfc9,_0x11380d)[_0xc452('0x42')](function(_0x4ee814){logger[_0xc452('0x1a')](JSON['stringify'](_0x4ee814));return _0x4ee814;});};exports[_0xc452('0x7b')]=function(_0x1ad888,_0x3c9c05,_0x43f023,_0x2645d0){var _0x4cf514=util['format'](_0xc452('0x7c'),ISPEECH_API,_0x1ad888,encodeURIComponent(_0x3c9c05),_0x43f023,_0x2645d0);var _0x2a5319=path[_0xc452('0x23')](__dirname,_0xc452('0x35'),rs['generate'](0x4)+_0xc452('0x36'));var _0x17b688;return downloadFile(_0x4cf514,_0x2a5319)[_0xc452('0x42')](function(){_0x17b688=path['resolve'](__dirname,_0xc452('0x35'),rs['generate'](0x4)+'.wav');return convertFile(_0x2a5319,_0x17b688);})[_0xc452('0x42')](function(){try{fs[_0xc452('0x1b')](_0x2a5319);fs[_0xc452('0x28')](_0x17b688,'777');}catch(_0x1c7603){logger[_0xc452('0x15')](_0x1c7603);}return _0x17b688[_0xc452('0x2a')]('.')[0x0];});};exports[_0xc452('0x7d')]=function(_0x3eff5e,_0x1febdf,_0x137a65,_0x5984b3){var _0x4f88f4=util['format']('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x1febdf,_0x137a65,base64Encode(_0x3eff5e),_0x5984b3?util[_0xc452('0x7e')](_0xc452('0x7f'),encodeURIComponent(_0x5984b3)):_0xc452('0x80'));return uploadFile(_0x4f88f4)[_0xc452('0x42')](function(_0x4f016f){return querystring[_0xc452('0x81')](_0x4f016f);});};exports[_0xc452('0x82')]=function(_0x3720ef,_0x1d7801){return sestek[_0xc452('0x83')](_0x3720ef,_0x1d7801)[_0xc452('0x42')](function(_0x126197){logger[_0xc452('0x1a')](JSON[_0xc452('0x3f')](_0x126197));var _0x2a8bf6={'speech':_0x126197[_0xc452('0x84')],'action':_0x126197[_0xc452('0x85')]?_0x126197[_0xc452('0x85')][_0xc452('0x86')]:undefined,'actiondata':_0x126197[_0xc452('0x85')]?_0x126197[_0xc452('0x85')][_0xc452('0x87')]:undefined};if(_0x126197[_0xc452('0x85')]&&_0x126197[_0xc452('0x85')]['AudioFromTts']){return base64Decode(_0x126197['channelData'][_0xc452('0x88')][_0xc452('0x89')],path[_0xc452('0x23')](__dirname,_0xc452('0x35'),rs[_0xc452('0x24')](0x4)+_0xc452('0x25')))['then'](function(_0x680c94){_0x2a8bf6['audiofile']=_0x680c94;return _0x2a8bf6;});}return _0x2a8bf6;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
+var _0x2ea0=['source','result','resolvedQuery','action','fulfillment','speech','score','status','metadata','endConversation','isFallbackIntent','replace','SessionsClient','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','intent','displayName','isFallback','languageCode','queryText','intentDetectionConfidence','fulfillmentText','tildeASR','Tilde\x20ASR\x20transcription','awsPolly','polly','awsLex','ispeechTTS','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','format','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','https','md5','path','querystring','sox','google-tts-api','url','parse','util','./aws','./google','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','host','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','close','unlink','download\x20error','pipe','protocol','end','transcode','error\x20convert','info','start','resolve','tmp','generate','.wav','writeFileSync','then','chmodSync','777','split','readFileSync','toString','base64','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','input','voice','audioConfig','text:synthesize','POST','.mp3','from','audioContent','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','f.req=','stringify','jQ1olc','null','slice','data','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','parse\x20response\x20failed:\x0a','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20confidence','[%s]\x20%s:%s','message','textRequest'];(function(_0x50aa2e,_0xfbd6f0){var _0x5e07f0=function(_0x3ed540){while(--_0x3ed540){_0x50aa2e['push'](_0x50aa2e['shift']());}};_0x5e07f0(++_0xfbd6f0);}(_0x2ea0,0x141));var _0x02ea=function(_0x25019f,_0x243013){_0x25019f=_0x25019f-0x0;var _0x3f0abd=_0x2ea0[_0x25019f];return _0x3f0abd;};'use strict';var apiai=require(_0x02ea('0x0'));var BPromise=require(_0x02ea('0x1'));var dialogflow=require(_0x02ea('0x2'));var fs=require('fs');var http=require(_0x02ea('0x3'));var https=require(_0x02ea('0x4'));var md5=require(_0x02ea('0x5'));var path=require(_0x02ea('0x6'));var querystring=require(_0x02ea('0x7'));var rp=require('request-promise');var rs=require('randomstring');var sox=require(_0x02ea('0x8'));var tts=require(_0x02ea('0x9'));var urlParse=require(_0x02ea('0xa'))[_0x02ea('0xb')];var util=require(_0x02ea('0xc'));var aws=require(_0x02ea('0xd'));var google=require(_0x02ea('0xe'));var sestek=require('./sestek');var tilde=require('./tilde');var logger=require(_0x02ea('0xf'))(_0x02ea('0x10'));var ISPEECH_API=_0x02ea('0x11');function downloadFile(_0x5da092,_0x296608){return new BPromise(function(_0x3c0b35,_0x2fafec){var _0x78f2ac=urlParse(_0x5da092);var _0x4e3a6d=_0x78f2ac['protocol']===_0x02ea('0x12')?https:http;var _0x57ab47={'host':_0x78f2ac[_0x02ea('0x13')],'path':_0x78f2ac[_0x02ea('0x6')],'headers':{'user-agent':_0x02ea('0x14')}};_0x4e3a6d[_0x02ea('0x15')](_0x57ab47,function(_0xfde46b){if(_0xfde46b[_0x02ea('0x16')]!==0xc8){logger[_0x02ea('0x17')](_0x02ea('0x18')+_0x5da092+_0x02ea('0x19')+_0xfde46b[_0x02ea('0x16')]+'\x20('+_0xfde46b[_0x02ea('0x1a')]+')');_0x2fafec(new Error('request\x20to\x20'+_0x5da092+_0x02ea('0x19')+_0xfde46b['statusCode']+'\x20('+_0xfde46b[_0x02ea('0x1a')]+')'));return;}var _0x2dfc1c=fs[_0x02ea('0x1b')](_0x296608);_0x2dfc1c['on']('finish',function(){logger['info']('finish\x20download\x20file');_0x2dfc1c[_0x02ea('0x1c')](_0x3c0b35);});_0x2dfc1c['on'](_0x02ea('0x17'),function(_0x35de54){fs[_0x02ea('0x1d')](_0x296608);logger[_0x02ea('0x17')](_0x02ea('0x1e'),_0x35de54);_0x2fafec(_0x35de54);});_0xfde46b[_0x02ea('0x1f')](_0x2dfc1c);})['on'](_0x02ea('0x17'),function(_0xcb317c){logger[_0x02ea('0x17')](_0xcb317c);_0x2fafec(_0xcb317c);})['end']();});}function uploadFile(_0x4f7d29){return new BPromise(function(_0x19a215,_0x1f2e1f){var _0x1668f7=urlParse(_0x4f7d29);var _0x579f98=_0x1668f7[_0x02ea('0x20')]===_0x02ea('0x12')?https:http;var _0xfba575={'host':_0x1668f7['host'],'path':_0x1668f7[_0x02ea('0x6')],'headers':{'user-agent':_0x02ea('0x14')}};_0x579f98[_0x02ea('0x15')](_0xfba575,function(_0x4d8327){if(_0x4d8327[_0x02ea('0x16')]!==0xc8){_0x1f2e1f(new Error('request\x20to\x20'+_0x4f7d29+_0x02ea('0x19')+_0x4d8327[_0x02ea('0x16')]+'\x20('+_0x4d8327['statusMessage']+')'));return;}var _0x1095aa='';_0x4d8327['on']('data',function(_0x294799){_0x1095aa+=_0x294799;});_0x4d8327['on'](_0x02ea('0x21'),function(){_0x19a215(_0x1095aa);});})['on'](_0x02ea('0x17'),function(_0x421a02){_0x1f2e1f(_0x421a02);})[_0x02ea('0x21')]();});}function convertFile(_0x2a6419,_0x5133cc){return new BPromise(function(_0x55e20a,_0x2c000c){var _0x118be3=sox[_0x02ea('0x22')](_0x2a6419,_0x5133cc,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x118be3['on']('error',function(_0x3255fd){logger['error'](_0x02ea('0x23'),_0x3255fd);_0x2c000c(_0x3255fd);});_0x118be3['on'](_0x02ea('0x21'),function(){logger[_0x02ea('0x24')]('finish\x20to\x20convert');_0x55e20a();});_0x118be3[_0x02ea('0x25')]();});}function base64Decode(_0x357885,_0x558160){var _0x564a2c=path[_0x02ea('0x26')](__dirname,_0x02ea('0x27'),rs[_0x02ea('0x28')](0x4)+_0x02ea('0x29'));fs[_0x02ea('0x2a')](_0x564a2c,_0x357885,'base64');return convertFile(_0x564a2c,_0x558160)[_0x02ea('0x2b')](function(){try{fs[_0x02ea('0x1d')](_0x564a2c);fs[_0x02ea('0x2c')](_0x558160,_0x02ea('0x2d'));}catch(_0x5f5326){logger[_0x02ea('0x17')](_0x5f5326);}return _0x558160[_0x02ea('0x2e')]('.')[0x0];});}function base64Encode(_0xcaaa70){var _0x10d92e=fs[_0x02ea('0x2f')](_0xcaaa70);return new Buffer(_0x10d92e)[_0x02ea('0x30')](_0x02ea('0x31'));}exports[_0x02ea('0x32')]=function(_0x3cb68c,_0x322771,_0x215272,_0x48f226,_0x1e8119,_0x1b46fa){var _0xed585a,_0x1186ce;var _0x1d491d=_0x02ea('0x33');var _0xf30b52=_0x02ea('0x34')+_0x3cb68c;var _0xae00c7={};if(_0x322771==='ssml'){_0xae00c7['input']={'ssml':_0x215272};}else{_0xae00c7[_0x02ea('0x35')]={'text':_0x215272};};_0xae00c7[_0x02ea('0x36')]={'languageCode':_0x48f226,'ssmlGender':_0x1e8119};_0xae00c7[_0x02ea('0x37')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0xd92bb4={'url':_0x1d491d+_0x02ea('0x38')+_0xf30b52,'method':_0x02ea('0x39'),'json':!![],'body':_0xae00c7};return rp(_0xd92bb4)[_0x02ea('0x2b')](function(_0x5b453c){return new BPromise(function(_0xe58a43,_0x51d910){_0xed585a=path[_0x02ea('0x26')](__dirname,_0x02ea('0x27'),rs[_0x02ea('0x28')](0x4)+_0x02ea('0x3a'));var _0x42f4ea=Buffer[_0x02ea('0x3b')](_0x5b453c[_0x02ea('0x3c')],_0x02ea('0x31'));return fs['writeFile'](_0xed585a,_0x42f4ea,function(_0xd03b2){_0x51d910(_0xd03b2);},function(_0xdb0f3e){fs[_0x02ea('0x2c')](_0xed585a,_0x02ea('0x2d'));_0xe58a43(_0xdb0f3e);});});})[_0x02ea('0x2b')](function(_0x5c6350){_0x1186ce=path[_0x02ea('0x26')](__dirname,_0x02ea('0x27'),rs['generate'](0x4)+'.wav');return convertFile(_0xed585a,_0x1186ce);})[_0x02ea('0x2b')](function(){try{fs[_0x02ea('0x1d')](_0xed585a);fs['chmodSync'](_0x1186ce,_0x02ea('0x2d'));}catch(_0x2568a7){logger['error'](_0x2568a7);}logger['info'](_0x02ea('0x3d'),_0x1186ce['split']('.')[0x0]);return _0x1186ce[_0x02ea('0x2e')]('.')[0x0];});};exports[_0x02ea('0x3e')]=function(_0x1d9e21,_0x3450fc){var _0x237179=_0x02ea('0x3f');var _0x53cacb,_0x4e04ca;var _0xe9dc0;var _0x5eb75={'encoding':'utf8','method':_0x02ea('0x39'),'timeout':0x2710,'url':_0x237179,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':_0x02ea('0x40')+encodeURIComponent(JSON[_0x02ea('0x41')]([[[_0x02ea('0x42'),JSON[_0x02ea('0x41')]([_0x1d9e21,_0x3450fc||'en',![],_0x02ea('0x43')]),null,'generic']]]))};return rp(_0x5eb75)[_0x02ea('0x2b')](function(_0x85ca2e){try{_0xe9dc0=eval(_0x85ca2e[_0x02ea('0x44')](0x5))[0x0][0x2];}catch(_0x2f26bd){throw new Error('parse\x20response\x20failed:\x0a'+_0x85ca2e[_0x02ea('0x45')]);}if(!_0xe9dc0){if(_0x1d9e21['length']>0xc8){throw new Error(_0x02ea('0x46'));}else{throw new Error(_0x02ea('0x47')+_0x3450fc+_0x02ea('0x48'));}}try{_0xe9dc0=eval(_0xe9dc0)[0x0];}catch(_0x5189e5){throw new Error(_0x02ea('0x49')+res['data']);}const _0x6ebd4a=_0xe9dc0;_0x53cacb=path['resolve'](__dirname,_0x02ea('0x27'),rs['generate'](0x4)+_0x02ea('0x3a'));fs[_0x02ea('0x2a')](_0x53cacb,_0xe9dc0,{'encoding':_0x02ea('0x31')});_0x4e04ca=path[_0x02ea('0x26')](__dirname,_0x02ea('0x27'),rs[_0x02ea('0x28')](0x4)+'.wav');return convertFile(_0x53cacb,_0x4e04ca);})['then'](function(){try{fs['unlink'](_0x53cacb);fs[_0x02ea('0x2c')](_0x4e04ca,'777');}catch(_0x3c96a7){logger[_0x02ea('0x17')](_0x3c96a7);}logger[_0x02ea('0x24')]('goggleTTS\x20path',_0x4e04ca[_0x02ea('0x2e')]('.')[0x0]);return _0x4e04ca[_0x02ea('0x2e')]('.')[0x0];});};exports[_0x02ea('0x4a')]=function(_0x240186,_0x3e0e98,_0x30a5cc){return google[_0x02ea('0x4b')](_0x240186,_0x3e0e98,_0x30a5cc)[_0x02ea('0x2b')](function(_0x52cdc5){logger['info'](_0x52cdc5[_0x02ea('0x4c')]);return rp(_0x52cdc5);})[_0x02ea('0x2b')](function(_0x20acd4){var _0x274a93='';var _0x259424=0x0;try{fs[_0x02ea('0x1d')](_0x240186);}catch(_0xa20ac8){logger[_0x02ea('0x17')](_0xa20ac8);}if(_0x20acd4&&_0x20acd4[_0x02ea('0x4d')]){_0x274a93=_0x20acd4['results'][_0x02ea('0x4e')](function(_0x34cd60){return _0x34cd60&&_0x34cd60[_0x02ea('0x4f')][0x0]&&_0x34cd60[_0x02ea('0x4f')][0x0][_0x02ea('0x50')]?_0x34cd60[_0x02ea('0x4f')][0x0]['transcript']:'';})[_0x02ea('0x51')]('\x0a');_0x259424=_0x20acd4[_0x02ea('0x4d')][_0x02ea('0x4e')](function(_0x5764cc){return _0x5764cc&&_0x5764cc['alternatives'][0x0]&&_0x5764cc[_0x02ea('0x4f')][0x0][_0x02ea('0x52')]?_0x5764cc[_0x02ea('0x4f')][0x0][_0x02ea('0x52')]:0x0;})[_0x02ea('0x51')]('\x0a');}logger[_0x02ea('0x24')]('googleASR\x20transcription',_0x274a93);logger[_0x02ea('0x24')](_0x02ea('0x53'),_0x259424);return{'transcript':_0x274a93,'confidence':_0x259424};})['catch'](function(_0x3c01e6){logger[_0x02ea('0x17')](_0x02ea('0x54'),_0x3c01e6['statusCode'],_0x3c01e6['name'],_0x3c01e6[_0x02ea('0x55')]);});};exports['googleDialogflow']=function(_0x39a09d,_0x26c05d,_0x21fd75,_0x16ff26){var _0x2871e9=apiai(_0x26c05d,{'language':_0x16ff26||'en'});return _0x2871e9[_0x02ea('0x56')](_0x21fd75,{'sessionId':md5(_0x39a09d)})[_0x02ea('0x2b')](function(_0x59e42d){logger['info'](JSON['stringify'](_0x59e42d));return{'source':_0x59e42d['result'][_0x02ea('0x57')],'resolvedQuery':_0x59e42d[_0x02ea('0x58')][_0x02ea('0x59')],'action':_0x59e42d[_0x02ea('0x58')][_0x02ea('0x5a')],'actionIncomplete':_0x59e42d[_0x02ea('0x58')]['actionIncomplete'],'speech':_0x59e42d[_0x02ea('0x58')][_0x02ea('0x5b')][_0x02ea('0x5c')],'score':_0x59e42d[_0x02ea('0x58')][_0x02ea('0x5d')],'statusCode':_0x59e42d[_0x02ea('0x5e')]['code'],'endConversation':_0x59e42d[_0x02ea('0x58')][_0x02ea('0x5f')][_0x02ea('0x60')]||![],'isFallbackIntent':_0x59e42d['result'][_0x02ea('0x5f')][_0x02ea('0x61')]};});};exports['googleDialogflowV2']=function(_0x102794,_0x5498c1,_0x184932,_0x33636f,_0x300613,_0x4f6d84){var _0x37e4c3=_0x33636f[_0x02ea('0x62')](/\\n/g,'\x0a');var _0x2cff8e={'credentials':{'private_key':_0x37e4c3,'client_email':_0x184932}};var _0x3d6e81=new dialogflow[(_0x02ea('0x63'))](_0x2cff8e);var _0x3273eb=_0x3d6e81[_0x02ea('0x64')](_0x5498c1,md5(_0x102794));var _0x5408f5={'session':_0x3273eb,'queryInput':{'text':{'text':_0x300613,'languageCode':_0x4f6d84}}};return _0x3d6e81[_0x02ea('0x65')](_0x5408f5)['then'](function(_0x38c429){if(_0x38c429&&_0x38c429[_0x02ea('0x66')]){logger[_0x02ea('0x24')](_0x02ea('0x67'),JSON[_0x02ea('0x41')](_0x38c429));var _0x3a5c23=_0x38c429[0x0];if(_0x3a5c23){var _0x392ad9={'action':_0x3a5c23[_0x02ea('0x68')][_0x02ea('0x5a')],'allRequiredParamsPresent':_0x3a5c23['queryResult'][_0x02ea('0x69')],'endConversation':_0x3a5c23['queryResult'][_0x02ea('0x6a')]&&_0x3a5c23[_0x02ea('0x68')][_0x02ea('0x6a')][_0x02ea('0x6b')]?_0x3a5c23[_0x02ea('0x68')][_0x02ea('0x6a')][_0x02ea('0x6b')][_0x02ea('0x6c')][_0x02ea('0x6d')]:![],'fulfillmentText':_0x3a5c23[_0x02ea('0x68')]['fulfillmentText'],'intentName':_0x3a5c23['queryResult'][_0x02ea('0x6e')]['name'],'intentDisplayName':_0x3a5c23[_0x02ea('0x68')][_0x02ea('0x6e')][_0x02ea('0x6f')],'isFallbackIntent':_0x3a5c23[_0x02ea('0x68')][_0x02ea('0x6e')][_0x02ea('0x70')],'languageCode':_0x3a5c23[_0x02ea('0x68')][_0x02ea('0x71')],'queryText':_0x3a5c23[_0x02ea('0x68')][_0x02ea('0x72')],'responseId':_0x3a5c23['responseId'],'score':_0x3a5c23[_0x02ea('0x68')][_0x02ea('0x73')],'speech':_0x3a5c23['queryResult'][_0x02ea('0x74')],'providerResponse':JSON[_0x02ea('0x41')](_0x38c429)};return _0x392ad9;}}});};exports[_0x02ea('0x75')]=function(_0x1e6052,_0x47ee45,_0x24e5a3,_0x3157d2){return tilde['asr'](_0x1e6052,_0x47ee45,_0x24e5a3,_0x3157d2)[_0x02ea('0x2b')](function(_0x201eed){try{fs[_0x02ea('0x1d')](_0x1e6052);}catch(_0x3f9bc7){logger['error'](_0x3f9bc7);}logger['info'](_0x02ea('0x76'),_0x201eed[_0x02ea('0x50')]);logger[_0x02ea('0x24')]('Tilde\x20ASR\x20confidence',_0x201eed[_0x02ea('0x52')]);return _0x201eed;});};exports[_0x02ea('0x77')]=function(_0x14a255,_0x5b6c44,_0x41b4dc,_0x331f77,_0x5a2fbd,_0x4b9ca2){var _0x4955e8=path['resolve'](__dirname,_0x02ea('0x27'),rs[_0x02ea('0x28')](0x4)+_0x02ea('0x3a'));var _0x4116d4;return aws[_0x02ea('0x78')](_0x14a255,_0x5b6c44,_0x41b4dc,_0x331f77,_0x5a2fbd,_0x4b9ca2,_0x4955e8)[_0x02ea('0x2b')](function(){_0x4116d4=path[_0x02ea('0x26')](__dirname,_0x02ea('0x27'),rs[_0x02ea('0x28')](0x4)+_0x02ea('0x29'));return convertFile(_0x4955e8,_0x4116d4);})[_0x02ea('0x2b')](function(){try{fs['unlink'](_0x4955e8);fs['chmodSync'](_0x4116d4,_0x02ea('0x2d'));}catch(_0x3b741f){logger[_0x02ea('0x17')](_0x3b741f);}return _0x4116d4[_0x02ea('0x2e')]('.')[0x0];});};exports[_0x02ea('0x79')]=function(_0x120298,_0x5d7b84,_0x50f33b,_0x5dc97b,_0x580140,_0x1f5def){return aws['lex'](_0x120298,_0x5d7b84,_0x50f33b,_0x5dc97b,_0x580140,_0x1f5def)['then'](function(_0x34f8bc){logger[_0x02ea('0x24')](JSON[_0x02ea('0x41')](_0x34f8bc));return _0x34f8bc;});};exports[_0x02ea('0x7a')]=function(_0x428f66,_0x321102,_0x4b2280,_0xec1b65){var _0x3c3476=util['format']('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x428f66,encodeURIComponent(_0x321102),_0x4b2280,_0xec1b65);var _0x46a8d0=path[_0x02ea('0x26')](__dirname,_0x02ea('0x27'),rs[_0x02ea('0x28')](0x4)+_0x02ea('0x3a'));var _0x1e1e79;return downloadFile(_0x3c3476,_0x46a8d0)[_0x02ea('0x2b')](function(){_0x1e1e79=path[_0x02ea('0x26')](__dirname,_0x02ea('0x27'),rs[_0x02ea('0x28')](0x4)+_0x02ea('0x29'));return convertFile(_0x46a8d0,_0x1e1e79);})[_0x02ea('0x2b')](function(){try{fs['unlink'](_0x46a8d0);fs[_0x02ea('0x2c')](_0x1e1e79,_0x02ea('0x2d'));}catch(_0x40b5c8){logger['error'](_0x40b5c8);}return _0x1e1e79[_0x02ea('0x2e')]('.')[0x0];});};exports['ispeechASR']=function(_0x15f5f4,_0x196e59,_0x129163,_0x3d5513){var _0x50153b=util['format'](_0x02ea('0x7b'),ISPEECH_API,_0x196e59,_0x129163,base64Encode(_0x15f5f4),_0x3d5513?util[_0x02ea('0x7c')](_0x02ea('0x7d'),encodeURIComponent(_0x3d5513)):_0x02ea('0x7e'));return uploadFile(_0x50153b)[_0x02ea('0x2b')](function(_0x2ffe89){return querystring['parse'](_0x2ffe89);});};exports[_0x02ea('0x7f')]=function(_0x2b7f27,_0x183ed3){return sestek[_0x02ea('0x80')](_0x2b7f27,_0x183ed3)['then'](function(_0x470f25){logger[_0x02ea('0x24')](JSON[_0x02ea('0x41')](_0x470f25));var _0x2f0efd={'speech':_0x470f25[_0x02ea('0x81')],'action':_0x470f25[_0x02ea('0x82')]?_0x470f25[_0x02ea('0x82')]['CustomAction']:undefined,'actiondata':_0x470f25[_0x02ea('0x82')]?_0x470f25['channelData'][_0x02ea('0x83')]:undefined};if(_0x470f25[_0x02ea('0x82')]&&_0x470f25[_0x02ea('0x82')][_0x02ea('0x84')]){return base64Decode(_0x470f25[_0x02ea('0x82')][_0x02ea('0x84')][_0x02ea('0x85')],path[_0x02ea('0x26')](__dirname,_0x02ea('0x27'),rs['generate'](0x4)+_0x02ea('0x29')))[_0x02ea('0x2b')](function(_0x3ff1eb){_0x2f0efd[_0x02ea('0x86')]=_0x3ff1eb;return _0x2f0efd;});}return _0x2f0efd;});};exports[_0x02ea('0x87')]=function(){return __dirname;};
\ No newline at end of file
index 681712f..274d221 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43a=['./nda','exports'];(function(_0x20918c,_0x37a788){var _0x31257d=function(_0x547d3c){while(--_0x547d3c){_0x20918c['push'](_0x20918c['shift']());}};_0x31257d(++_0x37a788);}(_0xb43a,0x1a8));var _0xab43=function(_0x31c19c,_0xbe4b70){_0x31c19c=_0x31c19c-0x0;var _0x1a87f7=_0xb43a[_0x31c19c];return _0x1a87f7;};var nda=require(_0xab43('0x0'));module[_0xab43('0x1')]={'nda':nda};
\ No newline at end of file
+var _0x48e1=['exports','./nda'];(function(_0x5bc251,_0x5c4317){var _0x318d40=function(_0x3c9e1f){while(--_0x3c9e1f){_0x5bc251['push'](_0x5bc251['shift']());}};_0x318d40(++_0x5c4317);}(_0x48e1,0x177));var _0x148e=function(_0x49233d,_0xdb859c){_0x49233d=_0x49233d-0x0;var _0x29a72d=_0x48e1[_0x49233d];return _0x29a72d;};var nda=require(_0x148e('0x0'));module[_0x148e('0x1')]={'nda':nda};
\ No newline at end of file
index 2b6755b..27cd9a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76dc=['calleridname','dnid','extension','text','Bearer\x20','access_token','project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','CustomAction','custom_action','custom_action_data','info','stringify','request-promise','url','../../../../../config/logger','agi','POST','/token','password','username','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','Nda','callerid'];(function(_0x331e91,_0x1cc7e3){var _0x2c73f5=function(_0x4797a1){while(--_0x4797a1){_0x331e91['push'](_0x331e91['shift']());}};_0x2c73f5(++_0x1cc7e3);}(_0x76dc,0x1f2));var _0xc76d=function(_0x314460,_0x356cb6){_0x314460=_0x314460-0x0;var _0x1b2c7b=_0x76dc[_0x314460];return _0x1b2c7b;};'use strict';var rp=require(_0xc76d('0x0'));var url=require(_0xc76d('0x1'));var logger=require(_0xc76d('0x2'))(_0xc76d('0x3'));module['exports']=function(_0x2a8b7d,_0x1ba6a1){var _0x5cff74={'method':_0xc76d('0x4'),'uri':url['resolve'](_0x1ba6a1['ndauth_url'],_0xc76d('0x5')),'form':{'grant_type':_0xc76d('0x6'),'username':_0x1ba6a1[_0xc76d('0x7')],'password':_0x1ba6a1['password']},'json':!![]};return rp(_0x5cff74)['then'](function(_0x119f38){var _0x114572={'method':_0xc76d('0x4'),'uri':url['resolve'](_0x1ba6a1['ndassistant_url'],_0xc76d('0x8')),'body':{'type':_0x1ba6a1[_0xc76d('0x9')]||'message','channelId':_0xc76d('0xa'),'conversation':{'id':_0x2a8b7d['uniqueid']},'from':{'id':_0x2a8b7d[_0xc76d('0xb')],'name':_0x2a8b7d[_0xc76d('0xc')]},'recipient':{'id':_0x2a8b7d[_0xc76d('0xd')],'name':_0x2a8b7d[_0xc76d('0xe')]},'text':_0x1ba6a1[_0xc76d('0xf')],'channelData':{}},'headers':{'Authorization':_0xc76d('0x10')+_0x119f38[_0xc76d('0x11')]},'json':!![]};if(_0x1ba6a1[_0xc76d('0x12')]){_0x114572[_0xc76d('0x13')][_0xc76d('0x14')][_0xc76d('0x15')]=_0x1ba6a1[_0xc76d('0x12')];}if(_0x1ba6a1[_0xc76d('0x16')]=='1'){_0x114572[_0xc76d('0x13')]['channelData'][_0xc76d('0x17')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xc76d('0x18')};}if(_0x1ba6a1['custom_action']){_0x114572[_0xc76d('0x13')][_0xc76d('0x14')][_0xc76d('0x19')]=_0x1ba6a1[_0xc76d('0x1a')];if(_0x1ba6a1['custom_action_data']){_0x114572[_0xc76d('0x13')]['channelData']['CustomActionData']=_0x1ba6a1[_0xc76d('0x1b')];}}logger[_0xc76d('0x1c')](JSON[_0xc76d('0x1d')](_0x114572));return rp(_0x114572);});};
\ No newline at end of file
+var _0x99b7=['POST','ndauth_url','/token','password','username','then','resolve','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','message','Nda','uniqueid','calleridname','text','access_token','body','project','ndagenerate_audio','channelData','AudioOutputSettings','audio/wav','CustomAction','custom_action','custom_action_data','info','stringify','request-promise','../../../../../config/logger'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x99b7,0x14e));var _0x799b=function(_0xcf5436,_0x4632c3){_0xcf5436=_0xcf5436-0x0;var _0xc4f5c8=_0x99b7[_0xcf5436];return _0xc4f5c8;};'use strict';var rp=require(_0x799b('0x0'));var url=require('url');var logger=require(_0x799b('0x1'))('agi');module['exports']=function(_0x58056f,_0x41135c){var _0x45d0c6={'method':_0x799b('0x2'),'uri':url['resolve'](_0x41135c[_0x799b('0x3')],_0x799b('0x4')),'form':{'grant_type':_0x799b('0x5'),'username':_0x41135c[_0x799b('0x6')],'password':_0x41135c[_0x799b('0x5')]},'json':!![]};return rp(_0x45d0c6)[_0x799b('0x7')](function(_0x4b901a){var _0x418a70={'method':_0x799b('0x2'),'uri':url[_0x799b('0x8')](_0x41135c[_0x799b('0x9')],_0x799b('0xa')),'body':{'type':_0x41135c['ndaactivity_type']||_0x799b('0xb'),'channelId':_0x799b('0xc'),'conversation':{'id':_0x58056f[_0x799b('0xd')]},'from':{'id':_0x58056f['callerid'],'name':_0x58056f[_0x799b('0xe')]},'recipient':{'id':_0x58056f['dnid'],'name':_0x58056f['extension']},'text':_0x41135c[_0x799b('0xf')],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x4b901a[_0x799b('0x10')]},'json':!![]};if(_0x41135c['project']){_0x418a70[_0x799b('0x11')]['channelData']['ProjectName']=_0x41135c[_0x799b('0x12')];}if(_0x41135c[_0x799b('0x13')]=='1'){_0x418a70[_0x799b('0x11')][_0x799b('0x14')][_0x799b('0x15')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x799b('0x16')};}if(_0x41135c['custom_action']){_0x418a70[_0x799b('0x11')]['channelData'][_0x799b('0x17')]=_0x41135c[_0x799b('0x18')];if(_0x41135c['custom_action_data']){_0x418a70[_0x799b('0x11')][_0x799b('0x14')]['CustomActionData']=_0x41135c[_0x799b('0x19')];}}logger[_0x799b('0x1a')](JSON[_0x799b('0x1b')](_0x418a70));return rp(_0x418a70);});};
\ No newline at end of file
index 9d5b855..ae22fc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8868=['./lib/api'];(function(_0x4ab080,_0x2de364){var _0x53c5f3=function(_0x40bb04){while(--_0x40bb04){_0x4ab080['push'](_0x4ab080['shift']());}};_0x53c5f3(++_0x2de364);}(_0x8868,0x1ed));var _0x8886=function(_0xd52ead,_0xc316cc){_0xd52ead=_0xd52ead-0x0;var _0x868f2d=_0x8868[_0xd52ead];return _0x868f2d;};'use strict';var asr=require(_0x8886('0x0'));module['exports']=function(_0x498615,_0xe1c26e,_0x848726,_0x5aba82){return asr(_0x498615,_0xe1c26e,_0x848726,_0x5aba82);};
\ No newline at end of file
+var _0xfbae=['./lib/api','exports'];(function(_0x1d0d40,_0x4f5d58){var _0x4bd9c9=function(_0xc536e){while(--_0xc536e){_0x1d0d40['push'](_0x1d0d40['shift']());}};_0x4bd9c9(++_0x4f5d58);}(_0xfbae,0xbe));var _0xefba=function(_0x47574d,_0x834e6d){_0x47574d=_0x47574d-0x0;var _0x484055=_0xfbae[_0x47574d];return _0x484055;};'use strict';var asr=require(_0xefba('0x0'));module[_0xefba('0x1')]=function(_0x5008ea,_0x678b09,_0x10495f,_0x5a3a7d){return asr(_0x5008ea,_0x678b09,_0x10495f,_0x5a3a7d);};
\ No newline at end of file
index c9a2c26..394f166 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec64=['final','Tilde\x20ASR\x20hypoteses','stringify','hypotheses','transcript','likelihood','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message','bluebird','lodash','moment','crypto','../../../../../../config/logger','agi','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','sha1','update','digest','hex','Open\x20Tilde\x20ASR\x20socket','data','close','EOS','error','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result'];(function(_0x579879,_0x16d3e1){var _0x33baa0=function(_0x1b1098){while(--_0x1b1098){_0x579879['push'](_0x579879['shift']());}};_0x33baa0(++_0x16d3e1);}(_0xec64,0x147));var _0x4ec6=function(_0x272638,_0x42b993){_0x272638=_0x272638-0x0;var _0x19d027=_0xec64[_0x272638];return _0x19d027;};'use strict';var BPromise=require(_0x4ec6('0x0'));var _=require(_0x4ec6('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x4ec6('0x2'));var crypto=require(_0x4ec6('0x3'));var logger=require(_0x4ec6('0x4'))(_0x4ec6('0x5'));module['exports']=function(_0xbb5b7f,_0x195abe,_0x31c987,_0x407d39){return new BPromise(function(_0x1c9426,_0x20fcab){logger[_0x4ec6('0x6')](_0x4ec6('0x7'),_0x407d39||_0x4ec6('0x8'));var _0x4760bc=new WebSocket(_0x407d39||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE',{'perMessageDeflate':![]});var _0x2b7b75='';var _0x4bf562='0';var _0x50cb14='1';var _0x21399a=_0x4ec6('0x9');function _0x22a99a(_0x597342){var _0x2e910a=crypto['createHash'](_0x4ec6('0xa'));_0x2e910a[_0x4ec6('0xb')](_0x597342);return _0x2e910a[_0x4ec6('0xc')](_0x4ec6('0xd'));}function _0x14a901(){try{logger[_0x4ec6('0x6')](_0x4ec6('0xe'));var _0x1651d3=moment()['unix']();var _0x2ae892=_0x22a99a(_0x1651d3+_0x195abe+_0x31c987);_0x4760bc['send'](JSON['stringify']({'appID':_0x195abe,'timestamp':_0x1651d3,'appKey':_0x2ae892}));var _0x8729bd=fs['createReadStream'](_0xbb5b7f);_0x8729bd['on'](_0x4ec6('0xf'),function(_0x262ba9){_0x4760bc['send'](_0x262ba9);});_0x8729bd['on'](_0x4ec6('0x10'),function(){_0x4760bc['send'](_0x4ec6('0x11'));});}catch(_0x54490b){logger[_0x4ec6('0x12')](_0x4ec6('0x13'),JSON['stringify'](_0x54490b));_0x4760bc[_0x4ec6('0x14')]();}}function _0x1a716c(_0x3226a7){try{if(_0x3226a7){var _0x3be129=JSON[_0x4ec6('0x15')](_0x3226a7);switch(_0x3be129[_0x4ec6('0x16')]){case 0x0:if(_0x3be129[_0x4ec6('0x17')]){if(_0x3be129[_0x4ec6('0x17')][_0x4ec6('0x18')]){logger[_0x4ec6('0x6')](_0x4ec6('0x19'),JSON[_0x4ec6('0x1a')](_0x3be129[_0x4ec6('0x17')][_0x4ec6('0x1b')]));_0x2b7b75=_0x3be129[_0x4ec6('0x17')]['hypotheses'][0x0][_0x4ec6('0x1c')];_0x4bf562=_0x3be129['result']['hypotheses'][0x0][_0x4ec6('0x1d')];_0x50cb14='0';_0x21399a='Success.';_0x4760bc[_0x4ec6('0x14')]();}}break;case 0x1:logger['info'](_0x4ec6('0x9'));_0x50cb14='1';_0x21399a=_0x4ec6('0x9');break;case 0x2:logger['info'](_0x4ec6('0x1e'));_0x50cb14='2';_0x21399a='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger['info'](_0x4ec6('0x1f'));_0x50cb14='9';_0x21399a='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger[_0x4ec6('0x6')]('Authentication\x20failed.');_0x50cb14='10';_0x21399a='Authentication\x20failed.';break;case 0xb:logger['info'](_0x4ec6('0x20'));_0x50cb14='11';_0x21399a=_0x4ec6('0x20');}}}catch(_0x2e3fb0){logger[_0x4ec6('0x12')](_0x4ec6('0x21'),JSON[_0x4ec6('0x1a')](_0x2e3fb0));_0x4760bc[_0x4ec6('0x14')]();}}function _0x1ffc65(){logger[_0x4ec6('0x6')](_0x4ec6('0x22'));_0x1c9426({'transcript':_0x2b7b75,'confidence':_0x4bf562,'status':_0x50cb14,'status_message':_0x21399a});}function _0x2ba5a4(_0x2452a2){logger[_0x4ec6('0x12')]('Error\x20Tilde\x20ASR\x20socket');if(!_[_0x4ec6('0x23')](_0x2452a2)){logger[_0x4ec6('0x12')](_[_0x4ec6('0x24')](_0x2452a2)?JSON['stringify'](_0x2452a2):_0x2452a2);}}_0x4760bc['on'](_0x4ec6('0x25'),_0x14a901);_0x4760bc['on'](_0x4ec6('0x26'),_0x1a716c);_0x4760bc['on'](_0x4ec6('0x10'),_0x1ffc65);_0x4760bc['on'](_0x4ec6('0x12'),_0x2ba5a4);});};
\ No newline at end of file
+var _0xbd24=['createReadStream','EOS','error','Tilde\x20ASR\x20send\x20error','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Success.','terminate','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isObject','open','close','bluebird','moment','crypto','../../../../../../config/logger','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','digest','hex','info','unix','send','stringify'];(function(_0x3b729e,_0x17f53d){var _0x5b6207=function(_0x5ed234){while(--_0x5ed234){_0x3b729e['push'](_0x3b729e['shift']());}};_0x5b6207(++_0x17f53d);}(_0xbd24,0x176));var _0x4bd2=function(_0x5e1248,_0x42b862){_0x5e1248=_0x5e1248-0x0;var _0x1b4201=_0xbd24[_0x5e1248];return _0x1b4201;};'use strict';var BPromise=require(_0x4bd2('0x0'));var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x4bd2('0x1'));var crypto=require(_0x4bd2('0x2'));var logger=require(_0x4bd2('0x3'))('agi');module['exports']=function(_0x559817,_0x287ba6,_0x1d6450,_0x890e9){return new BPromise(function(_0x26cfcc,_0x50f618){logger['info'](_0x4bd2('0x4'),_0x890e9||_0x4bd2('0x5'));var _0x4d5ac5=new WebSocket(_0x890e9||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE',{'perMessageDeflate':![]});var _0x473325='';var _0x46b530='0';var _0x4c5ac7='1';var _0x47ce2a=_0x4bd2('0x6');function _0x254a66(_0x5972fc){var _0x54d262=crypto[_0x4bd2('0x7')](_0x4bd2('0x8'));_0x54d262[_0x4bd2('0x9')](_0x5972fc);return _0x54d262[_0x4bd2('0xa')](_0x4bd2('0xb'));}function _0x9476b(){try{logger[_0x4bd2('0xc')]('Open\x20Tilde\x20ASR\x20socket');var _0x275be7=moment()[_0x4bd2('0xd')]();var _0x2f5d4e=_0x254a66(_0x275be7+_0x287ba6+_0x1d6450);_0x4d5ac5[_0x4bd2('0xe')](JSON[_0x4bd2('0xf')]({'appID':_0x287ba6,'timestamp':_0x275be7,'appKey':_0x2f5d4e}));var _0x3f3e4e=fs[_0x4bd2('0x10')](_0x559817);_0x3f3e4e['on']('data',function(_0x11e250){_0x4d5ac5[_0x4bd2('0xe')](_0x11e250);});_0x3f3e4e['on']('close',function(){_0x4d5ac5[_0x4bd2('0xe')](_0x4bd2('0x11'));});}catch(_0x3f0378){logger[_0x4bd2('0x12')](_0x4bd2('0x13'),JSON['stringify'](_0x3f0378));_0x4d5ac5['terminate']();}}function _0x580941(_0x4b881d){try{if(_0x4b881d){var _0x283cf5=JSON['parse'](_0x4b881d);switch(_0x283cf5[_0x4bd2('0x14')]){case 0x0:if(_0x283cf5['result']){if(_0x283cf5[_0x4bd2('0x15')][_0x4bd2('0x16')]){logger[_0x4bd2('0xc')](_0x4bd2('0x17'),JSON[_0x4bd2('0xf')](_0x283cf5['result'][_0x4bd2('0x18')]));_0x473325=_0x283cf5[_0x4bd2('0x15')]['hypotheses'][0x0][_0x4bd2('0x19')];_0x46b530=_0x283cf5[_0x4bd2('0x15')][_0x4bd2('0x18')][0x0][_0x4bd2('0x1a')];_0x4c5ac7='0';_0x47ce2a=_0x4bd2('0x1b');_0x4d5ac5[_0x4bd2('0x1c')]();}}break;case 0x1:logger['info'](_0x4bd2('0x6'));_0x4c5ac7='1';_0x47ce2a='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger[_0x4bd2('0xc')](_0x4bd2('0x1d'));_0x4c5ac7='2';_0x47ce2a=_0x4bd2('0x1d');break;case 0x9:logger[_0x4bd2('0xc')](_0x4bd2('0x1e'));_0x4c5ac7='9';_0x47ce2a=_0x4bd2('0x1e');break;case 0xa:logger[_0x4bd2('0xc')]('Authentication\x20failed.');_0x4c5ac7='10';_0x47ce2a=_0x4bd2('0x1f');break;case 0xb:logger['info'](_0x4bd2('0x20'));_0x4c5ac7='11';_0x47ce2a=_0x4bd2('0x20');}}}catch(_0x1a7cb9){logger[_0x4bd2('0x12')](_0x4bd2('0x21'),JSON[_0x4bd2('0xf')](_0x1a7cb9));_0x4d5ac5[_0x4bd2('0x1c')]();}}function _0x3f3aba(){logger[_0x4bd2('0xc')](_0x4bd2('0x22'));_0x26cfcc({'transcript':_0x473325,'confidence':_0x46b530,'status':_0x4c5ac7,'status_message':_0x47ce2a});}function _0x4aaf3e(_0x4f2995){logger[_0x4bd2('0x12')](_0x4bd2('0x23'));if(!_['isNil'](_0x4f2995)){logger[_0x4bd2('0x12')](_[_0x4bd2('0x24')](_0x4f2995)?JSON[_0x4bd2('0xf')](_0x4f2995):_0x4f2995);}}_0x4d5ac5['on'](_0x4bd2('0x25'),_0x9476b);_0x4d5ac5['on']('message',_0x580941);_0x4d5ac5['on'](_0x4bd2('0x26'),_0x3f3aba);_0x4d5ac5['on'](_0x4bd2('0x12'),_0x4aaf3e);});};
\ No newline at end of file
index 27f8b5d..45b1904 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8eb9=['./asr','exports'];(function(_0x1f692e,_0x1d0805){var _0x586dc7=function(_0x2eeed1){while(--_0x2eeed1){_0x1f692e['push'](_0x1f692e['shift']());}};_0x586dc7(++_0x1d0805);}(_0x8eb9,0x14c));var _0x98eb=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x8eb9[_0x19e35c];return _0x3e1fe8;};var asr=require(_0x98eb('0x0'));module[_0x98eb('0x1')]={'asr':asr};
\ No newline at end of file
+var _0xd662=['./asr','exports'];(function(_0x3deb4b,_0x260882){var _0x391285=function(_0x3b5663){while(--_0x3b5663){_0x3deb4b['push'](_0x3deb4b['shift']());}};_0x391285(++_0x260882);}(_0xd662,0x1ba));var _0x2d66=function(_0x26fe41,_0x22b289){_0x26fe41=_0x26fe41-0x0;var _0x212c15=_0xd662[_0x26fe41];return _0x212c15;};var asr=require(_0x2d66('0x0'));module[_0x2d66('0x1')]={'asr':asr};
\ No newline at end of file
index 58d77c8..d0495c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6867=['nextTick','inherits','exports','net','events','EventEmitter','./error','./channel','error','E_AGI_ARGUMENT_PORT','createServer','listening','getConnections','E_AGI_SERVER_ERROR','emit','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','ready','connection','code','close','E_AGI_SERVER_CLOSE'];(function(_0x365c07,_0x3ef179){var _0x348481=function(_0x2323ec){while(--_0x2323ec){_0x365c07['push'](_0x365c07['shift']());}};_0x348481(++_0x3ef179);}(_0x6867,0xd2));var _0x7686=function(_0x42b216,_0x3a3d48){_0x42b216=_0x42b216-0x0;var _0x4cf366=_0x6867[_0x42b216];return _0x4cf366;};'use strict';var util=require('util');var net=require(_0x7686('0x0'));var EventEmitter=require(_0x7686('0x1'))[_0x7686('0x2')];var AGIError=require(_0x7686('0x3'));var AGIChannel=require(_0x7686('0x4'));var AGIServer=function(_0x288990,_0x1d2626,_0x5d9a66){var _0x217091=this,_0x288990=_0x288990||0x11dd,_0x1d2626=_0x1d2626||'127.0.0.1',_0x2673cd=null,_0xbe4a43=0x0;EventEmitter['call'](_0x217091);function _0x124a87(){if(!_0x288990){_0x217091['emit'](_0x7686('0x5'),new AGIError(_0x7686('0x6')));return![];}_0x2673cd=net[_0x7686('0x7')]();_0x2673cd['listen'](_0x288990,_0x1d2626);_0x2673cd['on'](_0x7686('0x8'),function(){_0x217091['emit']('listening');});_0x2673cd['on']('connection',function(_0x456b85){_0x2673cd[_0x7686('0x9')](function(_0x1a8b54,_0x1b6c6b){if(_0x1a8b54){_0x217091['emit'](_0x7686('0x5'),new AGIError(_0x7686('0xa'),_0x1a8b54));}else if(_0x5d9a66&&_0x5d9a66<0x0){_0x217091[_0x7686('0xb')](_0x7686('0x5'),new AGIError(_0x7686('0xc')));_0x456b85[_0x7686('0xd')]();}else if(_0x5d9a66&&_0x5d9a66>0x0&&_0x5d9a66<_0x1b6c6b){_0xbe4a43+=0x1;_0x217091['emit'](_0x7686('0x5'),new AGIError(_0x7686('0xe'),_0xbe4a43));_0x456b85[_0x7686('0xd')]();}else{var _0x2aae7a=new AGIChannel(_0x456b85);_0x2aae7a['on'](_0x7686('0xf'),function(){_0x217091[_0x7686('0xb')](_0x7686('0x10'),_0x2aae7a);});}});});_0x2673cd['on'](_0x7686('0x5'),function(_0x233e34){_0x217091[_0x7686('0xb')](_0x7686('0x5'),new AGIError(_0x7686('0xa'),_0x233e34[_0x7686('0x11')]));});_0x2673cd['on'](_0x7686('0x12'),function(){_0x217091[_0x7686('0xb')](_0x7686('0x12'),new AGIError(_0x7686('0x13')));});}process[_0x7686('0x14')](function(){_0x124a87();});};util[_0x7686('0x15')](AGIServer,EventEmitter);module[_0x7686('0x16')]=function(_0x4f0462,_0x23ac9e,_0x384e52){return new AGIServer(_0x4f0462,_0x23ac9e,_0x384e52);};
\ No newline at end of file
+var _0xa868=['listening','emit','connection','getConnections','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','E_AGI_SERVER_ERROR','code','close','E_AGI_SERVER_CLOSE','nextTick','inherits','exports','util','net','events','EventEmitter','./error','./channel','127.0.0.1','call','error','E_AGI_ARGUMENT_PORT','createServer','listen'];(function(_0x193039,_0x1f684e){var _0x5942af=function(_0x50a7a5){while(--_0x50a7a5){_0x193039['push'](_0x193039['shift']());}};_0x5942af(++_0x1f684e);}(_0xa868,0x1ae));var _0x8a86=function(_0x3cdfdb,_0x40545d){_0x3cdfdb=_0x3cdfdb-0x0;var _0x57d4d8=_0xa868[_0x3cdfdb];return _0x57d4d8;};'use strict';var util=require(_0x8a86('0x0'));var net=require(_0x8a86('0x1'));var EventEmitter=require(_0x8a86('0x2'))[_0x8a86('0x3')];var AGIError=require(_0x8a86('0x4'));var AGIChannel=require(_0x8a86('0x5'));var AGIServer=function(_0x14327c,_0x38827f,_0x1f2f81){var _0x328693=this,_0x14327c=_0x14327c||0x11dd,_0x38827f=_0x38827f||_0x8a86('0x6'),_0x4bd06d=null,_0x3da1ca=0x0;EventEmitter[_0x8a86('0x7')](_0x328693);function _0x219079(){if(!_0x14327c){_0x328693['emit'](_0x8a86('0x8'),new AGIError(_0x8a86('0x9')));return![];}_0x4bd06d=net[_0x8a86('0xa')]();_0x4bd06d[_0x8a86('0xb')](_0x14327c,_0x38827f);_0x4bd06d['on'](_0x8a86('0xc'),function(){_0x328693[_0x8a86('0xd')]('listening');});_0x4bd06d['on'](_0x8a86('0xe'),function(_0x163f5a){_0x4bd06d[_0x8a86('0xf')](function(_0xc2b3b3,_0x229760){if(_0xc2b3b3){_0x328693[_0x8a86('0xd')](_0x8a86('0x8'),new AGIError('E_AGI_SERVER_ERROR',_0xc2b3b3));}else if(_0x1f2f81&&_0x1f2f81<0x0){_0x328693['emit']('error',new AGIError(_0x8a86('0x10')));_0x163f5a[_0x8a86('0x11')]();}else if(_0x1f2f81&&_0x1f2f81>0x0&&_0x1f2f81<_0x229760){_0x3da1ca+=0x1;_0x328693[_0x8a86('0xd')](_0x8a86('0x8'),new AGIError(_0x8a86('0x12'),_0x3da1ca));_0x163f5a[_0x8a86('0x11')]();}else{var _0x38746f=new AGIChannel(_0x163f5a);_0x38746f['on']('ready',function(){_0x328693[_0x8a86('0xd')](_0x8a86('0xe'),_0x38746f);});}});});_0x4bd06d['on'](_0x8a86('0x8'),function(_0x1c92e4){_0x328693[_0x8a86('0xd')](_0x8a86('0x8'),new AGIError(_0x8a86('0x13'),_0x1c92e4[_0x8a86('0x14')]));});_0x4bd06d['on'](_0x8a86('0x15'),function(){_0x328693[_0x8a86('0xd')](_0x8a86('0x15'),new AGIError(_0x8a86('0x16')));});}process[_0x8a86('0x17')](function(){_0x219079();});};util[_0x8a86('0x18')](AGIServer,EventEmitter);module[_0x8a86('0x19')]=function(_0x50eb91,_0x24ae3c,_0x299326){return new AGIServer(_0x50eb91,_0x24ae3c,_0x299326);};
\ No newline at end of file
index d9f8e4d..f8d7e97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8322=['file','createSquareMessage','uniqueid','createCmContact','isEmpty','isNil','callback_','lastName','phone','scheduledAt','Callback\x20scheduled\x20at\x20','toString','getPause','agentPause','agent','agentUnpause','agentLogin','%s/%s@from-sip/n','LOCAL','shellCommand','exec','trim','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','MALE','audioEncoding','MP3','googleTTS','method','timeout','POST','PUT','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','render','url','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','client_email','private_key','ispeechTTS','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_polly_region','Amy','aws_text_type','awsLex','aws_access_key_id','aws_secret_access_key','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appsecret','uri','clear','agicommand','clone','hasOwnProperty','replaceObjectAllVariables','replaceAllVariables','isPlainObject','isArray','length','recursiveNodeIndex','%s.%s','split','replaceAll','getVariable','extra','result','setVariable','maxRetry','mrcpsynth','noop','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','getAndSetVariable','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','agi','args','answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','list_id','no\x20list\x20selected','delay','add','callback_priority','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','no\x20text\x20configured','sestektts','lumenvoxasr','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20query\x20configured','replace','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','keys','forEach','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','no\x20user\x20found','DIAL','SIP/%s','opts','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','Trying\x20Dialogflow:\x20%s','speech','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','dialogflowV2_project_id','no\x20project_id\x20configured','no\x20client_email\x20configured','no\x20private_key\x20configured','dialogflowV2_language','no\x20anguage\x20configured','bot','Trying\x20DialogflowV2:\x20%s','DIALOGFLOW_%s','out','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','username','password','no\x20password\x20configured','ndassistant_url','sestekNDA','SESTEK_NDA_%s','sesteknda','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','unlink','.wav','SestekNDA\x20is\x20unreachable','Enter\x20in\x20END\x20(%s)\x20block','end','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','trunk_name','SIP/%s/%s','Executed\x20command\x20%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','getdigits','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','file_id','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','getData','response','maxdigit','test','mindigit','hiddendigitsnum','generate','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','goalname','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','streamFile','aws\x20Polly\x20is\x20unreachable','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','isString','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','NOBEEP','recordFile','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','appid','no\x20appsecret\x20configured','beep','intKey','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','priority','condition','no\x20condition\x20configured','EVAL\x20CONDITION\x20%s\x20%s','false','gotoiftime','no\x20interval\x20configured','interval_id','IFTIME(%s?true:false)','true','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','findBy','AGENT\x20%s\x20FOUND\x20BY','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','success','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','digit','no\x20variable\x20found','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','getVoiceQueue','no\x20queue\x20found','XMCS-QUEUE','toLowerCase','QUEUE','macro','gosub','position','record','recordingFormat','%s/recordings/%s.%s','RECORDING_SAVENAME','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','statusMessage','saveRestApiResult','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','escape_digits','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','number','sayphonetic','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','Smtp','email','user','bcc','subject','service','host','port','secure','auth','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','sendFax','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','sms_text','sendSMS\x20message','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','getSquareProject','no\x20subproject\x20found\x20with\x20id\x20%d','AGI','127.0.0.1','Enter\x20in\x20SYSTEM\x20(%s)\x20block','command','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','VOICEMAIL','mailbox','vswitch','join','exports','path','util','lodash','shelljs','odbc','randomstring','moment','mustache','request-promise','../../config/logger','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','getsecretdigits','rpc','mailRpc','getVariableById','then','name','prototype','getVoiceQueueById','catch','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getSound','getSoundById','save_name','getMailAccount','getMailAccountById','getIntervals','IntervalId','map','Intervals','interval','format','%s/sounds/converted/%s','getQueryOdbc','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSquareDetailsReport','channel','label','arg_1','callerid','createSquareRecording','calleridname','context','extension','dnid'];(function(_0x3936c4,_0x59b4bb){var _0x5c2e58=function(_0x35cd52){while(--_0x35cd52){_0x3936c4['push'](_0x3936c4['shift']());}};_0x5c2e58(++_0x59b4bb);}(_0x8322,0x186));var _0x2832=function(_0x6d6a66,_0x2924af){_0x6d6a66=_0x6d6a66-0x0;var _0x11eb6e=_0x8322[_0x6d6a66];return _0x11eb6e;};'use strict';var fs=require('fs');var path=require(_0x2832('0x0'));var util=require(_0x2832('0x1'));var _=require(_0x2832('0x2'));var sh=require(_0x2832('0x3'));var odbc=require(_0x2832('0x4'))();var rs=require(_0x2832('0x5'));var moment=require(_0x2832('0x6'));var Mustache=require(_0x2832('0x7'));var rp=require(_0x2832('0x8'));var logger=require(_0x2832('0x9'))('agi');var config=require('../../config/environment');var scripts=require(_0x2832('0xa'));var FILES_PATH=_0x2832('0xb');var recursiveMapAttributes=[_0x2832('0xc'),_0x2832('0xd')];var verticesWithRetry=[_0x2832('0xe'),'getdigits',_0x2832('0xf')];var AGIVertices=function(_0x6e6b65,_0x303743,_0xb1f005){this['channel']=_0x6e6b65;this[_0x2832('0x10')]=_0x303743;this[_0x2832('0x11')]=_0xb1f005;};AGIVertices['prototype']['getVariable']=function(_0x4366bf,_0x4a3bbc){this['rpc'][_0x2832('0x12')](_0x4366bf)[_0x2832('0x13')](function(_0x3efaf2){_0x4a3bbc(null,_0x3efaf2?_0x3efaf2[_0x2832('0x14')]:![]);})['catch'](function(_0x2fc06a){_0x4a3bbc(_0x2fc06a);});};AGIVertices[_0x2832('0x15')]['getVoiceQueue']=function(_0x27cf0c,_0x4629fd){this[_0x2832('0x10')][_0x2832('0x16')](_0x27cf0c)[_0x2832('0x13')](function(_0x342922){_0x4629fd(null,_0x342922?_0x342922[_0x2832('0x14')]:![]);})['catch'](function(_0x1805db){_0x4629fd(_0x1805db);});};AGIVertices[_0x2832('0x15')]['getSquareProject']=function(_0x3362ef,_0x56d1e6){this[_0x2832('0x10')]['getSquareProjectById'](_0x3362ef)['then'](function(_0x1bb3f0){_0x56d1e6(null,_0x1bb3f0?_0x1bb3f0[_0x2832('0x14')]:![]);})[_0x2832('0x17')](function(_0x47b804){_0x56d1e6(_0x47b804);});};AGIVertices[_0x2832('0x15')][_0x2832('0x18')]=function(_0x52f067,_0xd33f46){this[_0x2832('0x10')][_0x2832('0x19')](_0x52f067)[_0x2832('0x13')](function(_0x561169){_0xd33f46(null,_0x561169?_0x561169[_0x2832('0x1a')]:![]);})[_0x2832('0x17')](function(_0x3d57f9){_0xd33f46(_0x3d57f9);});};AGIVertices[_0x2832('0x15')][_0x2832('0x1b')]=function(_0x2df647,_0x3f8f4a){this[_0x2832('0x10')][_0x2832('0x1c')](_0x2df647)[_0x2832('0x13')](function(_0x1ccbd8){_0x3f8f4a(null,_0x1ccbd8?_0x1ccbd8['name']:![]);})[_0x2832('0x17')](function(_0x216357){_0x3f8f4a(_0x216357);});};AGIVertices[_0x2832('0x15')][_0x2832('0x1d')]=function(_0x24621a,_0x83416e){this[_0x2832('0x10')]['getTrunkById'](_0x24621a)['then'](function(_0x5bfd7a){_0x83416e(null,_0x5bfd7a?_0x5bfd7a[_0x2832('0x14')]:![]);})[_0x2832('0x17')](function(_0x4ab2ac){_0x83416e(_0x4ab2ac);});};AGIVertices[_0x2832('0x15')][_0x2832('0x1e')]=function(_0x4694ac,_0x3703b1){var _0x178173=this;this[_0x2832('0x10')][_0x2832('0x1f')](_0x4694ac)[_0x2832('0x13')](function(_0x11aa49){_0x3703b1(null,_0x11aa49?_0x178173['getSoundPath'](_0x11aa49[_0x2832('0x20')]):![]);})['catch'](function(_0x120965){_0x3703b1(_0x120965);});};AGIVertices[_0x2832('0x15')][_0x2832('0x21')]=function(_0x2cbd15,_0x23c709){this[_0x2832('0x10')][_0x2832('0x22')](_0x2cbd15)['then'](function(_0x438735){_0x23c709(null,_0x438735?_0x438735:![]);})[_0x2832('0x17')](function(_0x321c03){_0x23c709(_0x321c03);});};AGIVertices[_0x2832('0x15')]['sendMailMessage']=function(_0x11ef70,_0x4fd4db,_0x3623ee){this['mailRpc']['sendMailMessage'](_0x11ef70,_0x4fd4db)[_0x2832('0x13')](function(){_0x3623ee(null);})[_0x2832('0x17')](function(_0x34f55d){_0x3623ee(_0x34f55d);});};AGIVertices[_0x2832('0x15')][_0x2832('0x23')]=function(_0x3382e9,_0x50d5d9){this[_0x2832('0x10')]['getIntervalById'](_0x3382e9)[_0x2832('0x13')](function(_0x2744ff){if(_0x2744ff){if(_0x2744ff[_0x2832('0x24')]){_0x50d5d9(null,[_0x2744ff['interval']]);}else{_0x50d5d9(null,_[_0x2832('0x25')](_0x2744ff[_0x2832('0x26')],_0x2832('0x27')));}}else{_0x50d5d9(null,![]);}})[_0x2832('0x17')](function(_0x2a74cf){_0x50d5d9(_0x2a74cf);});};AGIVertices['prototype']['getSoundPath']=function(_0x1cfcf2){return util[_0x2832('0x28')](_0x2832('0x29'),FILES_PATH,_0x1cfcf2);};AGIVertices['prototype'][_0x2832('0x2a')]=function(_0x47533e,_0x38c908,_0x482744){odbc['open'](_0x47533e,function(_0x1028a2){if(_0x1028a2){logger[_0x2832('0x2b')](_0x2832('0x2c'),_0x1028a2);_0x482744(_0x1028a2);}else{logger[_0x2832('0x2d')](_0x2832('0x2e'));odbc[_0x2832('0x2f')](_0x38c908,function(_0x57ff4d,_0x26a1c5){if(_0x57ff4d){logger[_0x2832('0x2d')](_0x2832('0x30'),_0x38c908);_0x482744(_0x57ff4d);}else{logger[_0x2832('0x2d')](_0x2832('0x31'),_0x38c908);odbc['close'](function(_0x3cd4e5){if(_0x3cd4e5){logger[_0x2832('0x2b')](_0x2832('0x32'),_0x3cd4e5);}_0x482744(null,_0x26a1c5);});}});}});};AGIVertices[_0x2832('0x15')][_0x2832('0x33')]=function(_0x4fec18,_0x31b5b1){this['rpc'][_0x2832('0x34')](_0x4fec18)[_0x2832('0x13')](function(_0x7f2ee){_0x31b5b1(null,_0x7f2ee?_0x7f2ee:![]);})['catch'](function(_0x1300d3){_0x31b5b1(_0x1300d3);});};AGIVertices[_0x2832('0x15')]['createSmsMessage']=function(_0x50812d,_0x716f66){this[_0x2832('0x10')]['createSmsMessage'](_0x50812d)[_0x2832('0x13')](function(_0x30def3){_0x716f66(null,_0x30def3);})[_0x2832('0x17')](function(_0x3a869c){_0x716f66(_0x3a869c);});};AGIVertices[_0x2832('0x15')][_0x2832('0x35')]=function(_0x18713b,_0x3eb880,_0x1ebe44){this[_0x2832('0x10')]['createSquareDetailsReport']({'uniqueid':this[_0x2832('0x36')]['uniqueid'],'node':_0x18713b[_0x2832('0x37')],'application':_0x18713b['agicommand'],'data':_0x3eb880||null,'project_name':this[_0x2832('0x36')][_0x2832('0x38')],'callerid':this['channel'][_0x2832('0x39')]})[_0x2832('0x13')](function(_0x54ac1e){if(_0x1ebe44){_0x1ebe44(null,_0x54ac1e);}})[_0x2832('0x17')](function(_0x4932e7){if(_0x1ebe44){_0x1ebe44(_0x4932e7);}});};AGIVertices[_0x2832('0x15')][_0x2832('0x3a')]=function(_0x189881,_0x104873,_0xf7e048,_0x27f24d){this[_0x2832('0x10')][_0x2832('0x3a')]({'uniqueid':this['channel']['uniqueid'],'callerid':this[_0x2832('0x36')][_0x2832('0x39')],'calleridname':this[_0x2832('0x36')][_0x2832('0x3b')],'context':this[_0x2832('0x36')][_0x2832('0x3c')],'extension':this[_0x2832('0x36')][_0x2832('0x3d')],'priority':this[_0x2832('0x36')]['priority'],'accountcode':this[_0x2832('0x36')]['accountcode'],'dnid':this['channel'][_0x2832('0x3e')],'projectName':this[_0x2832('0x36')][_0x2832('0x38')],'saveName':_0x104873,'filename':_0x189881[_0x2832('0x3f')]||_0x104873,'savePath':_0xf7e048})['then'](function(_0x39e0a2){_0x27f24d(null,_0x39e0a2);})[_0x2832('0x17')](function(_0x1188f9){_0x27f24d(_0x1188f9);});};AGIVertices[_0x2832('0x15')][_0x2832('0x40')]=function(_0x43fa8a,_0x1c53c2,_0x4c4022,_0x48da55,_0x5ee856){this['rpc']['createSquareMessage']({'uniqueid':this['channel'][_0x2832('0x41')],'body':_0x43fa8a,'direction':_0x1c53c2,'providerName':_0x4c4022,'providerResponse':_0x48da55})[_0x2832('0x13')](function(_0x4785f9){if(_0x5ee856){_0x5ee856(null,_0x4785f9);}})[_0x2832('0x17')](function(_0x2a997a){if(_0x5ee856){_0x5ee856(_0x2a997a);}});};AGIVertices[_0x2832('0x15')][_0x2832('0x42')]=function(_0x4024eb,_0x538923){this[_0x2832('0x10')][_0x2832('0x42')]({'firstName':_[_0x2832('0x43')](_0x4024eb[_0x2832('0x14')])||_[_0x2832('0x44')](_0x4024eb[_0x2832('0x14')])?_0x2832('0x45')+Math['random']():_0x4024eb['name'],'lastName':_[_0x2832('0x43')](_0x4024eb[_0x2832('0x46')])||_[_0x2832('0x44')](_0x4024eb[_0x2832('0x46')])?null:_0x4024eb[_0x2832('0x46')],'phone':_0x4024eb[_0x2832('0x47')],'ListId':_0x4024eb['list_id'],'scheduledat':_0x4024eb[_0x2832('0x48')],'callbackUniqueid':this[_0x2832('0x36')][_0x2832('0x41')],'tags':'callback','description':_0x2832('0x49')+_0x4024eb['scheduledAt'][_0x2832('0x4a')](),'priority':_0x4024eb['callback_priority']})[_0x2832('0x13')](function(_0x2476a4){_0x538923(null,_0x2476a4);})['catch'](function(_0x23997d){_0x538923(_0x23997d);});};AGIVertices['prototype'][_0x2832('0x4b')]=function(_0x556448,_0x3258ca){this['rpc']['getPauseById'](_0x556448)[_0x2832('0x13')](function(_0x4fceb2){_0x3258ca(null,_0x4fceb2?_0x4fceb2[_0x2832('0x14')]:![]);})['catch'](function(_0x14a60a){_0x3258ca(_0x14a60a);});};AGIVertices[_0x2832('0x15')][_0x2832('0x4c')]=function(_0x26484e,_0x32fdaa,_0x459a92){var _0x27b84e={'role':_0x2832('0x4d')};_0x27b84e[_0x26484e]=this[_0x2832('0x36')][_0x2832('0x39')];this['rpc'][_0x2832('0x4c')](_0x27b84e,_0x32fdaa,this[_0x2832('0x36')][_0x2832('0x41')])[_0x2832('0x13')](function(_0x4f692){_0x459a92(null,_[_0x2832('0x44')](_0x4f692)?![]:!![]);})[_0x2832('0x17')](function(_0x3e9ed2){logger[_0x2832('0x2b')](_0x3e9ed2);_0x459a92(null,![]);});};AGIVertices[_0x2832('0x15')][_0x2832('0x4e')]=function(_0x39b757,_0x4c4a5e){var _0x3dfcb4={'role':_0x2832('0x4d')};_0x3dfcb4[_0x39b757]=this['channel'][_0x2832('0x39')];this['rpc'][_0x2832('0x4e')](_0x3dfcb4)[_0x2832('0x13')](function(_0x15f2d8){_0x4c4a5e(null,_[_0x2832('0x44')](_0x15f2d8)?![]:!![]);})[_0x2832('0x17')](function(_0x6959c7){logger[_0x2832('0x2b')](_0x6959c7);_0x4c4a5e(null,![]);});};AGIVertices['prototype']['agentLogout']=function(_0x3f9dff,_0x5b2b80){var _0x27014b={'role':_0x2832('0x4d')};_0x27014b[_0x3f9dff]=this[_0x2832('0x36')][_0x2832('0x39')];this[_0x2832('0x10')]['agentLogout'](_0x27014b)['then'](function(_0x5522aa){_0x5b2b80(null,_[_0x2832('0x44')](_0x5522aa)?![]:!![]);})[_0x2832('0x17')](function(_0x1addfa){logger['error'](_0x1addfa);_0x5b2b80(null,![]);});};AGIVertices[_0x2832('0x15')][_0x2832('0x4f')]=function(_0x22e134,_0x2b54dd){var _0x299000={'role':'agent'};_0x299000[_0x22e134]=this['channel'][_0x2832('0x39')];var _0x3cb032=_0x22e134!='internal'?util[_0x2832('0x28')](_0x2832('0x50'),_0x2832('0x51'),this[_0x2832('0x36')][_0x2832('0x39')]):undefined;this['rpc'][_0x2832('0x4f')](_0x299000,_0x3cb032)['then'](function(_0x57bbc1){_0x2b54dd(null,_[_0x2832('0x44')](_0x57bbc1)?![]:!![]);})[_0x2832('0x17')](function(_0x1b852a){logger[_0x2832('0x2b')](_0x1b852a);_0x2b54dd(null,![]);});};AGIVertices[_0x2832('0x15')][_0x2832('0x52')]=function(_0x10f648,_0x11087b){sh[_0x2832('0x53')](_[_0x2832('0x54')](_0x10f648),function(_0x4e2884,_0x312afb){var _0x2e1688=_0x312afb['replace'](/(\r\n|\n|\r)/gm,'');_0x11087b(null,_0x2e1688);});};AGIVertices[_0x2832('0x15')][_0x2832('0x55')]=function(_0x61883c,_0xac73d6){scripts[_0x2832('0x55')](_0x61883c[_0x2832('0x56')],_0x61883c[_0x2832('0x57')]||_0x2832('0x58'),_0x61883c[_0x2832('0x58')],_0x61883c[_0x2832('0x59')]||_0x2832('0x5a'),_0x61883c['ssmlGender']||_0x2832('0x5b'),_0x61883c[_0x2832('0x5c')]||_0x2832('0x5d'))[_0x2832('0x13')](function(_0x11c840){_0xac73d6(null,_0x11c840);})[_0x2832('0x17')](function(_0x1929ab){_0xac73d6(_0x1929ab);});};AGIVertices[_0x2832('0x15')]['googleTTS']=function(_0x77c1f7,_0x17f5ae){scripts[_0x2832('0x5e')](_0x77c1f7[_0x2832('0x58')],_0x77c1f7['google_tts_language']||'en',0x1)[_0x2832('0x13')](function(_0x3ac570){_0x17f5ae(null,_0x3ac570);})[_0x2832('0x17')](function(_0x1c6a7b){_0x17f5ae(_0x1c6a7b);});};AGIVertices[_0x2832('0x15')]['restAPI']=function(_0x4cc4c4,_0x2f6164){var _0x5af47c={'uri':_0x4cc4c4['url'],'method':_0x4cc4c4[_0x2832('0x5f')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x4cc4c4[_0x2832('0x60')])==='number'&&parseInt(_0x4cc4c4[_0x2832('0x60')])>=0x1?parseInt(_0x4cc4c4[_0x2832('0x60')])*0x3e8:0x5*0x3e8};if(_['includes']([_0x2832('0x61'),_0x2832('0x62')],_0x5af47c[_0x2832('0x5f')][_0x2832('0x63')]())){try{_0x5af47c[_0x2832('0x64')]=_0x4cc4c4[_0x2832('0xd')]?JSON[_0x2832('0x65')](_0x4cc4c4[_0x2832('0xd')]):{};}catch(_0x150b2e){logger[_0x2832('0x2b')](_0x2832('0x66'),_0x150b2e);}}try{_0x5af47c[_0x2832('0x67')]=_0x4cc4c4[_0x2832('0xc')]?JSON[_0x2832('0x65')](_0x4cc4c4[_0x2832('0xc')]):{};}catch(_0x87ad43){logger[_0x2832('0x2b')](_0x2832('0x68'),_0x87ad43);}if(_0x4cc4c4[_0x2832('0x69')]){try{var _0x1d9f98=require(_0x4cc4c4[_0x2832('0x69')])[_0x2832('0x6a')](this,_0x5af47c);_0x5af47c['uri']=Mustache[_0x2832('0x6b')](_0x4cc4c4[_0x2832('0x6c')],_0x1d9f98,{},['$$','$$']);if(_0x5af47c[_0x2832('0x67')]){_0x5af47c['headers']=JSON[_0x2832('0x65')](Mustache[_0x2832('0x6b')](JSON[_0x2832('0x6d')](_0x5af47c['headers']),_0x1d9f98,{},['$$','$$']));}if(_0x5af47c[_0x2832('0x64')]){_0x5af47c[_0x2832('0x64')]=JSON[_0x2832('0x65')](Mustache[_0x2832('0x6b')](JSON[_0x2832('0x6d')](_0x5af47c['body']),_0x1d9f98,{},['$$','$$']));}}catch(_0x58b4df){logger[_0x2832('0x2b')](_0x2832('0x6e'),_0x58b4df);}}rp(_0x5af47c)[_0x2832('0x13')](function(_0x673521){var _0x417972={'statusCode':_0x673521[_0x2832('0x6f')]||0xc8,'statusMessage':_0x673521['statusMessage']||'OK','headers':_0x673521[_0x2832('0x67')]||{},'body':_0x673521[_0x2832('0x64')]||{}};_0x2f6164(null,_0x417972);})[_0x2832('0x17')](function(_0x508b2b){var _0x4fe393={'statusCode':_0x508b2b[_0x2832('0x6f')]||0x1f4,'statusMessage':_0x508b2b[_0x2832('0x70')]||_0x2832('0x71'),'headers':_0x508b2b[_0x2832('0x72')][_0x2832('0x67')]||{},'body':_0x508b2b['options']['body']||{}};_0x2f6164(null,_0x4fe393);});};AGIVertices[_0x2832('0x15')][_0x2832('0x73')]=function(_0x3bd84e,_0x2aaf94){scripts[_0x2832('0x73')](this[_0x2832('0x36')][_0x2832('0x41')],_0x3bd84e[_0x2832('0x74')],_0x3bd84e['text'],_0x3bd84e[_0x2832('0x75')]||'en')[_0x2832('0x13')](function(_0xd21303){_0x2aaf94(null,_0xd21303);})[_0x2832('0x17')](function(_0x145907){_0x2aaf94(_0x145907);});};AGIVertices['prototype'][_0x2832('0x76')]=function(_0x388531,_0x47909d){scripts['googleDialogflowV2'](this[_0x2832('0x36')][_0x2832('0x41')],_0x388531['dialogflowV2_project_id'],_0x388531[_0x2832('0x77')],_0x388531[_0x2832('0x78')],_0x388531[_0x2832('0x58')],_0x388531['dialogflowV2_language']||'en')['then'](function(_0x3a6669){_0x47909d(null,_0x3a6669);})[_0x2832('0x17')](function(_0x3af4cf){_0x47909d(_0x3af4cf);});};AGIVertices[_0x2832('0x15')]['sestekNDA']=function(_0x6015fb,_0x5d9111){scripts['sestekNDA'](this[_0x2832('0x36')],_0x6015fb)[_0x2832('0x13')](function(_0xfa577b){_0x5d9111(null,_0xfa577b);})[_0x2832('0x17')](function(_0x19f7a){_0x5d9111(_0x19f7a);});};AGIVertices['prototype']['ispeechTTS']=function(_0x280445,_0x55a04c){scripts[_0x2832('0x79')](_0x280445[_0x2832('0x74')],_0x280445[_0x2832('0x58')],_0x280445['ispeech_tts_language']||_0x2832('0x5a'),_0x280445['speed'])[_0x2832('0x13')](function(_0xcd2726){_0x55a04c(null,_0xcd2726);})[_0x2832('0x17')](function(_0x7ea93d){_0x55a04c(_0x7ea93d);});};AGIVertices[_0x2832('0x15')][_0x2832('0x7a')]=function(_0x3334b8,_0x44da4d,_0x3c85ea){scripts[_0x2832('0x7a')](_0x44da4d,_0x3334b8[_0x2832('0x74')],_0x3334b8[_0x2832('0x7b')]||_0x2832('0x5a'),this[_0x2832('0x7c')](_0x3334b8[_0x2832('0x7d')])?_0x3334b8[_0x2832('0x7d')]:undefined)[_0x2832('0x13')](function(_0x40d448){_0x3c85ea(null,_0x40d448);})[_0x2832('0x17')](function(_0x635968){_0x3c85ea(_0x635968);});};AGIVertices['prototype'][_0x2832('0x7e')]=function(_0x25fa88,_0x117488){scripts[_0x2832('0x7e')](_0x25fa88['aws_access_key_id'],_0x25fa88['aws_secret_access_key'],_0x25fa88[_0x2832('0x7f')],_0x25fa88['aws_polly_voice']||_0x2832('0x80'),_0x25fa88[_0x2832('0x58')],_0x25fa88[_0x2832('0x81')]||_0x2832('0x58'))['then'](function(_0x15952d){_0x117488(null,_0x15952d);})[_0x2832('0x17')](function(_0x6c27f){_0x117488(_0x6c27f);});};AGIVertices[_0x2832('0x15')][_0x2832('0x82')]=function(_0x30560f,_0x5bf4ca){scripts[_0x2832('0x82')](this['channel'][_0x2832('0x41')],_0x30560f[_0x2832('0x83')],_0x30560f[_0x2832('0x84')],_0x30560f[_0x2832('0x85')],_0x30560f['text'],_0x30560f[_0x2832('0x86')])['then'](function(_0x50ba07){_0x5bf4ca(null,_0x50ba07);})[_0x2832('0x17')](function(_0x26fdc8){_0x5bf4ca(_0x26fdc8);});};AGIVertices['prototype']['googleASR']=function(_0x308d5d,_0x26ab07,_0x2ea7b4){scripts[_0x2832('0x87')](_0x26ab07,_0x308d5d[_0x2832('0x74')],_0x308d5d[_0x2832('0x88')]||_0x2832('0x5a'))[_0x2832('0x13')](function(_0x1cbbaa){_0x2ea7b4(null,_0x1cbbaa);})[_0x2832('0x17')](function(_0x4e60bc){_0x2ea7b4(_0x4e60bc);});};AGIVertices['prototype'][_0x2832('0x89')]=function(_0x23798a,_0x404635,_0x60cb12){scripts['tildeASR'](_0x404635,_0x23798a['appid'],_0x23798a[_0x2832('0x8a')],_0x23798a[_0x2832('0x8b')])[_0x2832('0x13')](function(_0x26edfd){_0x60cb12(null,_0x26edfd);})[_0x2832('0x17')](function(_0xbd05af){_0x60cb12(_0xbd05af);});};AGIVertices[_0x2832('0x15')][_0x2832('0x8c')]=function(_0x435ce5){var _0x316c10=_['includes'](verticesWithRetry,_0x435ce5[_0x2832('0x8d')])?_0x435ce5:_[_0x2832('0x8e')](_0x435ce5);for(var _0x592ee9 in _0x316c10){if(_0x316c10[_0x2832('0x8f')](_0x592ee9)){if(_0x316c10[_0x592ee9]&&_['isString'](_0x316c10[_0x592ee9])){if(_['includes'](recursiveMapAttributes,_0x592ee9)){_0x316c10[_0x592ee9]=this[_0x2832('0x90')](_0x316c10[_0x592ee9]);}else{_0x316c10[_0x592ee9]=this[_0x2832('0x91')](_0x316c10[_0x592ee9]);}}}}return _0x316c10;};AGIVertices[_0x2832('0x15')]['recursiveNodeIndex']=function(_0x5a1e11){for(var _0x4c6561 in _0x5a1e11){if(_0x5a1e11[_0x2832('0x8f')](_0x4c6561)){if(_[_0x2832('0x92')](_0x5a1e11[_0x4c6561])){this['recursiveNodeIndex'](_0x5a1e11[_0x4c6561]);}else if(_[_0x2832('0x93')](_0x5a1e11[_0x4c6561])){for(var _0x511545=0x0;_0x511545<_0x5a1e11[_0x4c6561][_0x2832('0x94')];_0x511545++){this[_0x2832('0x95')](_0x5a1e11[_0x4c6561][_0x511545]);}}else if(_['isString'](_0x5a1e11[_0x4c6561])){_0x5a1e11[_0x4c6561]=this['replaceAllVariables'](_0x5a1e11[_0x4c6561]);}}}};AGIVertices[_0x2832('0x15')]['saveRestApiResult']=function(_0x58bf63,_0x333673){for(var _0x4ff7d4 in _0x58bf63){if(_0x58bf63[_0x2832('0x8f')](_0x4ff7d4)){if(_[_0x2832('0x92')](_0x58bf63[_0x4ff7d4])){if(!_['isEmpty'](_0x58bf63[_0x4ff7d4])){this['saveRestApiResult'](_0x58bf63[_0x4ff7d4],util[_0x2832('0x28')](_0x2832('0x96'),_0x333673,_0x4ff7d4));}}else if(_['isArray'](_0x58bf63[_0x4ff7d4])){for(var _0x52c017=0x0;_0x52c017<_0x58bf63[_0x4ff7d4]['length'];_0x52c017++){this['saveRestApiResult'](_0x58bf63[_0x4ff7d4][_0x52c017],util['format'](_0x2832('0x96'),_0x333673,_0x4ff7d4+'['+_0x52c017+']'));}}else{if(!_[_0x2832('0x44')](_0x58bf63[_0x4ff7d4])){this['channel']['setVariable'](util[_0x2832('0x28')](_0x2832('0x96'),_0x333673,_0x4ff7d4),_0x58bf63[_0x4ff7d4]);}}}}};AGIVertices[_0x2832('0x15')][_0x2832('0x90')]=function(_0x168900){try{var _0x4593e6=JSON[_0x2832('0x65')](_0x168900);this[_0x2832('0x95')](_0x4593e6);return JSON['stringify'](_0x4593e6);}catch(_0x2cee4d){return this[_0x2832('0x91')](_0x168900);}};AGIVertices[_0x2832('0x15')]['replaceAllVariables']=function(_0x32243e){var _0xfb9347=_0x32243e[_0x2832('0x97')]('{');for(var _0x37ee29=0x1;_0x37ee29<_0xfb9347[_0x2832('0x94')];_0x37ee29+=0x1){var _0x4c695e=_0xfb9347[_0x37ee29][_0x2832('0x97')]('}');if(_0x4c695e['length']>0x1){_0x32243e=_0x32243e[_0x2832('0x98')]('{'+_0x4c695e[0x0]+'}',this[_0x2832('0x36')][_0x2832('0x99')](_0x4c695e[0x0])[_0x2832('0x9a')]||_0x4c695e[0x0]);}}if(_0xfb9347[_0x2832('0x94')]===0x1){return _0x32243e[_0x2832('0x4a')]();}return this[_0x2832('0x91')](_0x32243e);};AGIVertices[_0x2832('0x15')]['getAndSetVariable']=function(_0x548267,_0x4bb2f4){var _0x7e667b=this[_0x2832('0x36')]['getVariable'](_0x548267);if(_0x7e667b[_0x2832('0x9b')]===-0x1){return _0x7e667b;}logger[_0x2832('0x2d')](util[_0x2832('0x28')]('The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s',_0x4bb2f4,_0x7e667b[_0x2832('0x9a')]));return this[_0x2832('0x36')][_0x2832('0x9c')](_0x4bb2f4,_0x7e667b[_0x2832('0x9a')]);};AGIVertices[_0x2832('0x15')]['isConfigured']=function(_0x3151a9){return _0x3151a9&&_0x3151a9!=='0'&&_0x3151a9!=='-1'&&_0x3151a9!=='';};AGIVertices[_0x2832('0x15')][_0x2832('0x9d')]=function(_0x9cb12b){this[_0x2832('0x35')][_0x2832('0x6a')](this,_0x9cb12b,'-');_0x9cb12b['retry']=_0x9cb12b[_0x2832('0x9d')];return{'code':0xc8,'result':'-'};};AGIVertices['prototype'][_0x2832('0x9e')]=function(_0x33c5fb){logger[_0x2832('0x2d')](util[_0x2832('0x28')]('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x33c5fb[_0x2832('0x37')]));if(!this[_0x2832('0x7c')](_0x33c5fb[_0x2832('0x58')])){return this[_0x2832('0x36')][_0x2832('0x9f')]('no\x20text\x20configured');}var _0x584be7='\x22'+_0x33c5fb[_0x2832('0x58')]+'\x22';if(this[_0x2832('0x7c')](_0x33c5fb['options'])){_0x584be7+=','+_0x33c5fb[_0x2832('0x72')];}var _0x4c0651=this['channel']['exec'](_0x2832('0xa0'),_0x584be7);if(_0x4c0651['result']===-0x1){return _0x4c0651;}return this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0xa1'),_0x584be7));};AGIVertices[_0x2832('0x15')][_0x2832('0xa2')]=function(_0x109759){logger['info'](util['format'](_0x2832('0xa3'),_0x109759[_0x2832('0x37')]));if(!this[_0x2832('0x7c')](_0x109759[_0x2832('0xa4')])){return this[_0x2832('0x36')][_0x2832('0x9f')](_0x2832('0xa5'));}var _0x243297=_0x109759[_0x2832('0xa4')];if(this['isConfigured'](_0x109759['options'])){_0x243297+=','+_0x109759[_0x2832('0x72')];}var _0x25dbd0=this[_0x2832('0x36')][_0x2832('0x53')](_0x2832('0xa6'),_0x243297);if(_0x25dbd0['result']===-0x1){return _0x25dbd0;}var _0x16784c=this[_0x2832('0xa7')](_0x2832('0xa8'),_0x2832('0xa9'));if(_0x16784c['result']===-0x1){return _0x16784c;}var _0x2f558d=this[_0x2832('0xa7')](_0x2832('0xaa'),'MRCP_RECOG_TRANSCRIPT');if(_0x2f558d['result']===-0x1){return _0x2f558d;}var _0x2ad135=this[_0x2832('0xa7')](_0x2832('0xab'),_0x2832('0xac'));if(_0x2ad135['result']===-0x1){return _0x2ad135;}return this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0xad'),_0x243297));};AGIVertices['prototype'][_0x2832('0xae')]=function(_0x85972d){logger[_0x2832('0x2d')](util['format']('Enter\x20in\x20AGI\x20(%s)\x20block',_0x85972d[_0x2832('0x37')]));return this[_0x2832('0x36')][_0x2832('0xae')]([_0x85972d['command'],_0x85972d[_0x2832('0xaf')]]);};AGIVertices['prototype'][_0x2832('0xb0')]=function(_0x47eb67){logger[_0x2832('0x2d')](util['format']('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x47eb67[_0x2832('0x37')]));if(this[_0x2832('0x7c')](_0x47eb67[_0x2832('0x60')])){logger[_0x2832('0x2d')](util[_0x2832('0x28')]('Wait\x20%s\x20seconds\x20before\x20answer',_0x47eb67[_0x2832('0x60')]));var _0x5af823=this[_0x2832('0x36')][_0x2832('0xb1')](_0x47eb67['timeout']);if(_0x5af823[_0x2832('0x9b')]===-0x1){return _0x5af823;}}return this[_0x2832('0x36')][_0x2832('0xb0')]();};AGIVertices[_0x2832('0x15')]['callback']=function(_0xfa3111){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0xb2'),_0xfa3111[_0x2832('0x37')]));if(!this[_0x2832('0x7c')](_0xfa3111[_0x2832('0xb3')])){return this[_0x2832('0x36')][_0x2832('0x2b')](_0xfa3111,_0x2832('0xb4'));}_0xfa3111['scheduledAt']=moment();if(this[_0x2832('0x7c')](_0xfa3111[_0x2832('0xb5')])){_0xfa3111[_0x2832('0x48')]=moment()[_0x2832('0xb6')](_0xfa3111[_0x2832('0xb5')],'minutes');}if(!this[_0x2832('0x7c')](_0xfa3111[_0x2832('0xb7')])){_0xfa3111['callback_priority']=0x2;}this[_0x2832('0x42')][_0x2832('0x6a')](this,_0xfa3111);return this['channel'][_0x2832('0x9f')](util[_0x2832('0x28')]('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0xfa3111[_0x2832('0x47')],_0xfa3111[_0x2832('0xb3')],_0xfa3111[_0x2832('0x48')]));};AGIVertices['prototype'][_0x2832('0xb8')]=function(_0x515cad){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0xb9'),_0x515cad[_0x2832('0x37')]));var _0x4aa045=this['channel']['exec'](_0x515cad[_0x2832('0xba')],_0x515cad[_0x2832('0x72')]);if(_0x4aa045[_0x2832('0x9b')]===-0x1){return _0x4aa045;}return this['channel']['noop'](util[_0x2832('0x28')](_0x2832('0xbb'),_0x515cad[_0x2832('0xba')],_0x515cad['options']));};AGIVertices[_0x2832('0x15')]['lumenvoxtts']=function(_0x1d6cd1){logger['info'](util[_0x2832('0x28')]('Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block',_0x1d6cd1[_0x2832('0x37')]));if(!this['isConfigured'](_0x1d6cd1[_0x2832('0x58')])){return this[_0x2832('0x36')][_0x2832('0x9f')](_0x2832('0xbc'));}var _0x522e85='\x22'+_0x1d6cd1['text']+'\x22';if(this['isConfigured'](_0x1d6cd1[_0x2832('0x72')])){_0x522e85+=','+_0x1d6cd1[_0x2832('0x72')];}var _0x2ba1f6=this['channel']['exec']('MRCPSynth',_0x522e85);if(_0x2ba1f6[_0x2832('0x9b')]===-0x1){return _0x2ba1f6;}return this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0xa1'),_0x522e85));};AGIVertices[_0x2832('0x15')][_0x2832('0xbd')]=function(_0x2b5b6e){logger[_0x2832('0x2d')](util[_0x2832('0x28')]('Enter\x20in\x20SESTEKTTS\x20(%s)\x20block',_0x2b5b6e[_0x2832('0x37')]));if(!this[_0x2832('0x7c')](_0x2b5b6e[_0x2832('0x58')])){return this[_0x2832('0x36')][_0x2832('0x9f')]('no\x20text\x20configured');}var _0x308241='\x22'+_0x2b5b6e[_0x2832('0x58')]+'\x22';if(this['isConfigured'](_0x2b5b6e[_0x2832('0x72')])){_0x308241+=','+_0x2b5b6e[_0x2832('0x72')];}var _0x586dae=this[_0x2832('0x36')][_0x2832('0x53')](_0x2832('0xa0'),_0x308241);if(_0x586dae[_0x2832('0x9b')]===-0x1){return _0x586dae;}return this['channel'][_0x2832('0x9f')](util[_0x2832('0x28')]('Executed\x20command\x20MRCPSynth\x20%s',_0x308241));};AGIVertices[_0x2832('0x15')][_0x2832('0xbe')]=function(_0x31a694){logger[_0x2832('0x2d')](util['format']('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x31a694['label']));if(!this[_0x2832('0x7c')](_0x31a694['grammar'])){return this[_0x2832('0x36')][_0x2832('0x9f')](_0x2832('0xa5'));}var _0x16d760=_0x31a694[_0x2832('0xa4')];if(this[_0x2832('0x7c')](_0x31a694['options'])){_0x16d760+=','+_0x31a694['options'];}var _0x2f1916=this[_0x2832('0x36')][_0x2832('0x53')]('MRCPRecog',_0x16d760);if(_0x2f1916[_0x2832('0x9b')]===-0x1){return _0x2f1916;}var _0x41e8f1=this['getAndSetVariable'](_0x2832('0xa8'),_0x2832('0xbf'));if(_0x41e8f1[_0x2832('0x9b')]===-0x1){return _0x41e8f1;}var _0x76def2=this[_0x2832('0xa7')](_0x2832('0xaa'),_0x2832('0xc0'));if(_0x76def2['result']===-0x1){return _0x76def2;}var _0x268762=this[_0x2832('0xa7')](_0x2832('0xab'),_0x2832('0xc1'));if(_0x268762[_0x2832('0x9b')]===-0x1){return _0x268762;}return this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0xad'),_0x16d760));};AGIVertices[_0x2832('0x15')]['sestekasr']=function(_0x5de4fa){logger['info'](util[_0x2832('0x28')](_0x2832('0xc2'),_0x5de4fa['label']));if(!this[_0x2832('0x7c')](_0x5de4fa[_0x2832('0xa4')])){return this[_0x2832('0x36')]['noop'](_0x2832('0xa5'));}var _0x555645=_0x5de4fa[_0x2832('0xa4')];if(this[_0x2832('0x7c')](_0x5de4fa[_0x2832('0x72')])){_0x555645+=','+_0x5de4fa[_0x2832('0x72')];}var _0x199ab9=this['channel'][_0x2832('0x53')](_0x2832('0xa6'),_0x555645);if(_0x199ab9['result']===-0x1){return _0x199ab9;}var _0x5e09a1=this[_0x2832('0xa7')](_0x2832('0xa8'),_0x2832('0xc3'));if(_0x5e09a1[_0x2832('0x9b')]===-0x1){return _0x5e09a1;}var _0x591e14=this[_0x2832('0xa7')](_0x2832('0xaa'),_0x2832('0xc4'));if(_0x591e14[_0x2832('0x9b')]===-0x1){return _0x591e14;}var _0x40b62f=this[_0x2832('0xa7')](_0x2832('0xab'),_0x2832('0xc5'));if(_0x40b62f[_0x2832('0x9b')]===-0x1){return _0x40b62f;}return this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0xad'),_0x555645));};AGIVertices[_0x2832('0x15')]['database']=function(_0x226f49){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0xc6'),_0x226f49['label']));if(!this[_0x2832('0x7c')](_0x226f49[_0x2832('0xc7')])){return this['channel'][_0x2832('0x2b')](_0x226f49,_0x2832('0xc8'));}var _0x5a1d32=this[_0x2832('0x18')]['sync'](this,_0x226f49[_0x2832('0xc7')]);if(!_0x5a1d32){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x226f49,'no\x20odbc\x20database\x20found');}if(!this[_0x2832('0x7c')](_0x226f49[_0x2832('0x2f')])){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x226f49,_0x2832('0xc9'));}var _0x237b6a=_0x226f49[_0x2832('0x2f')][_0x2832('0xca')](/(\r\n|\n|\r)/gm,'\x20');this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0xcb'),_0x237b6a));var _0x59e2da=this['getQueryOdbc'][_0x2832('0x6a')](this,_0x5a1d32,_0x237b6a);this['createSquareDetailsReport'][_0x2832('0x6a')](this,_0x226f49,_0x237b6a);if(!this[_0x2832('0x7c')](_0x226f49[_0x2832('0xcc')])){return this[_0x2832('0x36')][_0x2832('0x9f')](_0x2832('0xcd'));}var _0x3aaa08=this[_0x2832('0x99')][_0x2832('0x6a')](this,_0x226f49['variable_id']);if(!_0x3aaa08){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x226f49,'no\x20variable\x20found');}var _0x218f5d=this;_0x59e2da['forEach'](function(_0x57b96d,_0x4ab6b9){Object[_0x2832('0xce')](_0x57b96d)[_0x2832('0xcf')](function(_0x5a178a){_0x218f5d['channel'][_0x2832('0x9c')](util[_0x2832('0x28')](_0x2832('0xd0'),_0x3aaa08,_0x4ab6b9,_0x5a178a),_0x57b96d[_0x5a178a]);});});this[_0x2832('0x36')]['setVariable'](util[_0x2832('0x28')](_0x2832('0xd1'),_0x3aaa08),_0x59e2da['length']);return this['channel'][_0x2832('0x9f')](util['format'](_0x2832('0xd2'),_0x3aaa08));};AGIVertices[_0x2832('0x15')][_0x2832('0xd3')]=function(_0x261c68){logger[_0x2832('0xd4')](util[_0x2832('0x28')](_0x2832('0xd5'),_0x261c68[_0x2832('0x37')]));if(!this[_0x2832('0x7c')](_0x261c68[_0x2832('0xd6')])){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x261c68,_0x2832('0xd7'));}var _0x3f89e4=this[_0x2832('0x1b')][_0x2832('0x6a')](this,_0x261c68[_0x2832('0xd6')]);if(!_0x3f89e4){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x261c68,_0x2832('0xd8'));}var _0x153543=this[_0x2832('0x36')]['exec'](_0x2832('0xd9'),[util[_0x2832('0x28')](_0x2832('0xda'),_0x3f89e4),_0x261c68['timeout'],_0x261c68[_0x2832('0xdb')],_0x261c68[_0x2832('0x6c')]]);if(_0x153543['result']===-0x1){return _0x153543;}return this[_0x2832('0x36')][_0x2832('0x9f')](util['format']('Executed\x20command\x20%s','DIAL'));};AGIVertices['prototype'][_0x2832('0xdc')]=function(_0x8563f9){logger[_0x2832('0x2d')](util['format'](_0x2832('0xdd'),_0x8563f9[_0x2832('0x37')]));if(!this[_0x2832('0x7c')](_0x8563f9[_0x2832('0x74')])){return this['channel'][_0x2832('0x9f')](_0x2832('0xde'));}if(!this[_0x2832('0x7c')](_0x8563f9[_0x2832('0x58')])){return this['channel'][_0x2832('0x9f')](_0x2832('0xbc'));}this[_0x2832('0x36')]['bot']=!![];this[_0x2832('0x35')](_0x8563f9);this[_0x2832('0x40')](_0x8563f9[_0x2832('0x58')],'in','','');this[_0x2832('0x36')]['noop'](util[_0x2832('0x28')](_0x2832('0xdf'),_0x8563f9[_0x2832('0x58')]));var _0x5348de=this[_0x2832('0x73')]['sync'](this,_0x8563f9);if(_0x5348de){for(var _0xbb00d6 in _0x5348de){if(_0x5348de[_0x2832('0x8f')](_0xbb00d6)){this[_0x2832('0x36')]['setVariable'](util[_0x2832('0x28')]('DIALOGFLOW_%s',_0xbb00d6[_0x2832('0x63')]()),_0x5348de[_0xbb00d6]);}}this[_0x2832('0x40')](_0x5348de['speech'],'out',_0x2832('0xdc'),'');return this['channel']['noop'](util[_0x2832('0x28')]('Dialogflow\x20Result\x20%s',_0x5348de[_0x2832('0xe0')]));}return this[_0x2832('0x36')]['error'](_0x8563f9,_0x2832('0xe1'));};AGIVertices['prototype'][_0x2832('0xe2')]=function(_0x58c69f){logger['info'](util[_0x2832('0x28')](_0x2832('0xe3'),_0x58c69f[_0x2832('0x37')]));if(!this[_0x2832('0x7c')](_0x58c69f[_0x2832('0xe4')])){return this[_0x2832('0x36')]['noop'](_0x2832('0xe5'));}if(!this['isConfigured'](_0x58c69f[_0x2832('0x77')])){return this[_0x2832('0x36')][_0x2832('0x9f')](_0x2832('0xe6'));}if(!this['isConfigured'](_0x58c69f[_0x2832('0x78')])){return this[_0x2832('0x36')]['noop'](_0x2832('0xe7'));}if(!this[_0x2832('0x7c')](_0x58c69f[_0x2832('0xe8')])){return this[_0x2832('0x36')]['noop'](_0x2832('0xe9'));}if(!this['isConfigured'](_0x58c69f[_0x2832('0x58')])){return this[_0x2832('0x36')]['noop'](_0x2832('0xbc'));}this[_0x2832('0x36')][_0x2832('0xea')]=!![];this['createSquareDetailsReport'](_0x58c69f);this[_0x2832('0x40')](_0x58c69f[_0x2832('0x58')],'in','','');this[_0x2832('0x36')]['noop'](util[_0x2832('0x28')](_0x2832('0xeb'),_0x58c69f['text']));var _0x5a5d95=this[_0x2832('0x76')][_0x2832('0x6a')](this,_0x58c69f);if(_0x5a5d95){for(var _0x3c0d6b in _0x5a5d95){if(_0x5a5d95[_0x2832('0x8f')](_0x3c0d6b)){if(_0x3c0d6b!=='providerResponse'){this[_0x2832('0x36')]['setVariable'](util[_0x2832('0x28')](_0x2832('0xec'),_0x3c0d6b['toUpperCase']()),_0x5a5d95[_0x3c0d6b]);}}}this[_0x2832('0x40')](_0x5a5d95[_0x2832('0xe0')],_0x2832('0xed'),_0x2832('0xe2'),_0x5a5d95[_0x2832('0xee')]);return this[_0x2832('0x36')]['noop'](util['format'](_0x2832('0xef'),_0x5a5d95[_0x2832('0xe0')]));}return this[_0x2832('0x36')]['error'](_0x58c69f,_0x2832('0xf0'));};AGIVertices[_0x2832('0x15')]['sesteknda']=function(_0x2e5627){logger[_0x2832('0x2d')](util['format'](_0x2832('0xf1'),_0x2e5627['label']));if(!this[_0x2832('0x7c')](_0x2e5627[_0x2832('0xf2')])){return this['channel'][_0x2832('0x9f')]('no\x20ndauth\x20url\x20configured');}if(!this[_0x2832('0x7c')](_0x2e5627[_0x2832('0xf3')])){return this['channel'][_0x2832('0x9f')]('no\x20username\x20configured');}if(!this['isConfigured'](_0x2e5627[_0x2832('0xf4')])){return this[_0x2832('0x36')][_0x2832('0x9f')](_0x2832('0xf5'));}if(!this[_0x2832('0x7c')](_0x2e5627[_0x2832('0xf6')])){return this[_0x2832('0x36')]['noop']('no\x20text\x20configured');}this[_0x2832('0x36')][_0x2832('0xea')]=!![];this[_0x2832('0x35')](_0x2e5627);this['createSquareMessage'](_0x2e5627['text'],'in','','');this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')]('Trying\x20SestekNDA:\x20%s',_0x2e5627[_0x2832('0x58')]));var _0xc63e19=this[_0x2832('0xf7')][_0x2832('0x6a')](this,_0x2e5627);if(_0xc63e19){for(var _0x3d5d5d in _0xc63e19){if(_0xc63e19[_0x2832('0x8f')](_0x3d5d5d)){this[_0x2832('0x36')][_0x2832('0x9c')](util[_0x2832('0x28')](_0x2832('0xf8'),_0x3d5d5d['toUpperCase']()),_0xc63e19[_0x3d5d5d]);}}this['createSquareMessage'](_0xc63e19[_0x2832('0xe0')],_0x2832('0xed'),_0x2832('0xf9'),'');if(_0xc63e19[_0x2832('0xfa')]){this[_0x2832('0x36')]['noop'](util[_0x2832('0x28')](_0x2832('0xfb'),_0xc63e19[_0x2832('0xfa')]));var _0x86d605=this[_0x2832('0x36')]['streamFile'](_0xc63e19['audiofile']);try{fs[_0x2832('0xfc')](_0xc63e19[_0x2832('0xfa')]+_0x2832('0xfd'));}catch(_0x5653f7){logger['error'](_0x5653f7);}return _0x86d605;}else{return this['channel'][_0x2832('0x9f')](util[_0x2832('0x28')]('SestekNDA\x20Result\x20%s',_0xc63e19['speech']));}}return this[_0x2832('0x36')][_0x2832('0x2b')](_0x2e5627,_0x2832('0xfe'));};AGIVertices['prototype']['end']=function(_0x6ef790){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0xff'),_0x6ef790['label']));return this[_0x2832('0x36')]['noop'](_0x2832('0x100'));};AGIVertices[_0x2832('0x15')][_0x2832('0x101')]=function(_0x5d0736){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x102'),_0x5d0736[_0x2832('0x37')]));var _0x1667ac='';if(_0x5d0736[_0x2832('0x103')]){if(!this[_0x2832('0x7c')](_0x5d0736[_0x2832('0x103')])){return this[_0x2832('0x36')]['error'](_0x5d0736,'no\x20trunk\x20selected');}else{var _0x5067d9=parseInt(_0x5d0736[_0x2832('0x103')],0xa);if(isNaN(_0x5067d9)){_0x1667ac=_0x5d0736[_0x2832('0x103')];}else{_0x1667ac=this['getTrunk'][_0x2832('0x6a')](this,_0x5d0736[_0x2832('0x103')]);if(!_0x1667ac){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x5d0736,'no\x20trunk\x20found');}}}}else if(_0x5d0736[_0x2832('0x104')]){_0x1667ac=_0x5d0736[_0x2832('0x104')];}else{return this[_0x2832('0x36')]['error'](_0x5d0736,'no\x20trunk\x20selected');}var _0x1917c2=this[_0x2832('0x36')][_0x2832('0x53')](_0x2832('0xd9'),[util[_0x2832('0x28')](_0x2832('0x105'),_0x1667ac,_0x5d0736['phone']),_0x5d0736[_0x2832('0x60')],_0x5d0736[_0x2832('0xdb')],_0x5d0736[_0x2832('0x6c')]]);if(_0x1917c2[_0x2832('0x9b')]===-0x1){return _0x1917c2;}return this['channel'][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x106'),_0x2832('0xd9')));};AGIVertices[_0x2832('0x15')][_0x2832('0x107')]=function(_0x25746a){logger['info'](util[_0x2832('0x28')](_0x2832('0x108'),_0x25746a[_0x2832('0x37')]));return this[_0x2832('0x36')][_0x2832('0x9f')](_0x2832('0x107'));};AGIVertices['prototype'][_0x2832('0x109')]=function(_0x3c00e8){logger[_0x2832('0x2d')](util['format'](_0x2832('0x10a'),_0x3c00e8[_0x2832('0x37')]));if(_0x3c00e8[_0x2832('0x10b')]===0x0){return this[_0x2832('0x9d')](_0x3c00e8);}_0x3c00e8[_0x2832('0x10b')]-=0x1;if(!this[_0x2832('0x7c')](_0x3c00e8[_0x2832('0x10c')])){return this['channel'][_0x2832('0x2b')](_0x3c00e8,_0x2832('0x10d'));}var _0x56dea3=this[_0x2832('0x1e')][_0x2832('0x6a')](this,_0x3c00e8[_0x2832('0x10c')]);if(!_0x56dea3){return this['channel'][_0x2832('0x2b')](_0x3c00e8,_0x2832('0x10e'));}if(!this[_0x2832('0x7c')](_0x3c00e8[_0x2832('0xcc')])){return this['channel'][_0x2832('0x2b')](_0x2832('0xcd'));}var _0x524d92=this[_0x2832('0x36')][_0x2832('0x10f')](_0x56dea3,_0x3c00e8[_0x2832('0x110')],_0x3c00e8[_0x2832('0x111')]);var _0x5cc745=_0x524d92[_0x2832('0x9b')]?_0x524d92[_0x2832('0x9b')][_0x2832('0x4a')]():'';logger[_0x2832('0x2d')](_0x2832('0x112'),JSON[_0x2832('0x6d')](_0x524d92));if(_0x524d92['result']===-0x1){this[_0x2832('0x35')][_0x2832('0x6a')](this,_0x3c00e8,_0x5cc745);return _0x524d92;}else if(_0x524d92[_0x2832('0x9a')]===_0x2832('0x60')){_0x524d92[_0x2832('0x9b')]=_0x5cc745['length']>=parseInt(_0x3c00e8[_0x2832('0x113')])?'x':'i';}else{_0x524d92['result']=_0x5cc745['length']>=parseInt(_0x3c00e8[_0x2832('0x113')])&&_0x5cc745[_0x2832('0x94')]<=parseInt(_0x3c00e8['maxdigit'])?'x':'i';}var _0x5de7bf=this[_0x2832('0x99')][_0x2832('0x6a')](this,_0x3c00e8[_0x2832('0xcc')]);if(!_0x5de7bf){return this[_0x2832('0x36')]['error'](_0x3c00e8,'no\x20variable\x20found');}this[_0x2832('0x36')][_0x2832('0x9c')](_0x5de7bf,_0x5cc745);if(this['isConfigured'](_0x3c00e8['hiddendigitsnum'])){var _0x3d02c7=parseInt(_0x3c00e8[_0x2832('0x114')],0xa);var _0x1c8f1c=rs[_0x2832('0x115')]({'charset':'*','length':_0x3d02c7});var _0x29cc5c=_0x5cc745['length'];if(_0x29cc5c>0x0){if(_0x29cc5c>_0x3d02c7){this[_0x2832('0x35')][_0x2832('0x6a')](this,_0x3c00e8,_0x3c00e8[_0x2832('0x116')]===_0x2832('0x117')?_0x1c8f1c+_0x5cc745[_0x2832('0x118')](_0x3d02c7):_0x5cc745[_0x2832('0x118')](0x0,_0x29cc5c-_0x3d02c7)+_0x1c8f1c);}else{this[_0x2832('0x35')][_0x2832('0x6a')](this,_0x3c00e8,rs[_0x2832('0x115')]({'charset':'*','length':_0x29cc5c}));}}else{this[_0x2832('0x35')]['sync'](this,_0x3c00e8,'');}}else{this['createSquareDetailsReport'][_0x2832('0x6a')](this,_0x3c00e8,_0x5cc745);}return _0x524d92;};AGIVertices['prototype']['getsecretdigits']=function(_0xb39309){logger['info'](util[_0x2832('0x28')](_0x2832('0x119'),_0xb39309['label']));return this[_0x2832('0x109')](_0xb39309);};AGIVertices[_0x2832('0x15')][_0x2832('0x11a')]=function(_0x5141d5){logger[_0x2832('0x2d')](util[_0x2832('0x28')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x5141d5[_0x2832('0x37')]));this[_0x2832('0x35')][_0x2832('0x6a')](this,_0x5141d5,_0x5141d5[_0x2832('0x11b')]);return this['channel'][_0x2832('0x9f')](util[_0x2832('0x28')]('GOAL\x20%s',_0x5141d5['goalname']));};AGIVertices[_0x2832('0x15')][_0x2832('0x11c')]=function(_0x57a291){logger['info'](util['format'](_0x2832('0x11d'),_0x57a291[_0x2832('0x37')]));if(!this[_0x2832('0x7c')](_0x57a291[_0x2832('0x83')])||!this[_0x2832('0x7c')](_0x57a291['aws_secret_access_key'])){return this[_0x2832('0x36')][_0x2832('0x9f')](_0x2832('0x11e'));}if(!this[_0x2832('0x7c')](_0x57a291[_0x2832('0x58')])){return this[_0x2832('0x36')]['noop'](_0x2832('0xbc'));}this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x11f'),_0x57a291['text']));var _0x52708a=this['awsPolly']['sync'](this,_0x57a291);if(_0x52708a){this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x120'),_0x52708a));var _0xdf1825=this[_0x2832('0x36')][_0x2832('0x121')](_0x52708a);try{fs[_0x2832('0xfc')](_0x52708a+_0x2832('0xfd'));}catch(_0x2cab47){logger[_0x2832('0x2b')](_0x2cab47);}return _0xdf1825;}return this[_0x2832('0x36')][_0x2832('0x2b')](_0x57a291,_0x2832('0x122'));};AGIVertices['prototype']['awslex']=function(_0x15a075){logger['info'](util[_0x2832('0x28')](_0x2832('0x123'),_0x15a075[_0x2832('0x37')]));if(!this['isConfigured'](_0x15a075[_0x2832('0x83')])||!this['isConfigured'](_0x15a075[_0x2832('0x84')])){return this['channel']['noop'](_0x2832('0x11e'));}if(!this[_0x2832('0x7c')](_0x15a075[_0x2832('0x86')])){return this[_0x2832('0x36')]['noop'](_0x2832('0x124'));}if(!this['isConfigured'](_0x15a075['text'])){return this[_0x2832('0x36')][_0x2832('0x9f')](_0x2832('0xbc'));}this[_0x2832('0x36')][_0x2832('0xea')]=!![];this[_0x2832('0x35')](_0x15a075);this[_0x2832('0x40')](_0x15a075[_0x2832('0x58')],'in','','');this['channel'][_0x2832('0x9f')](util[_0x2832('0x28')]('Trying\x20Amazon\x20Lex:\x20%s',_0x15a075[_0x2832('0x58')]));var _0x5922c9=this[_0x2832('0x82')]['sync'](this,_0x15a075);if(_0x5922c9){for(var _0xcac0b3 in _0x5922c9){if(_0x5922c9[_0x2832('0x8f')](_0xcac0b3)&&_[_0x2832('0x125')](_0x5922c9[_0xcac0b3])){this['channel'][_0x2832('0x9c')](util[_0x2832('0x28')](_0x2832('0x126'),_0xcac0b3['toUpperCase']()),_0x5922c9[_0xcac0b3]);}}if(_['isNil'](_0x5922c9[_0x2832('0x70')])){return this['channel']['noop'](_0x2832('0x127'));}else{this[_0x2832('0x40')](_0x5922c9[_0x2832('0x70')],'out',_0x2832('0x128'),'');return this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')]('Amazon\x20Lex\x20Result\x20%s',_0x5922c9[_0x2832('0x70')]));}}return this['channel']['error'](_0x15a075,_0x2832('0x129'));};AGIVertices[_0x2832('0x15')][_0x2832('0x12a')]=function(_0x59f24e){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x12b'),_0x59f24e[_0x2832('0x37')],_0x59f24e[_0x2832('0x60')]));if(!this[_0x2832('0x7c')](_0x59f24e['key'])){return this[_0x2832('0x36')]['noop']('no\x20key\x20configured');}var _0x3c668b=_0x2832('0x12c');var _0x2278bf=util[_0x2832('0x28')](_0x2832('0x12d'),FILES_PATH,rs[_0x2832('0x115')](0x4));var _0x17b252=util[_0x2832('0x28')](_0x2832('0x96'),_0x2278bf,_0x3c668b);var _0x3c649b=!![];if(_0x59f24e['beep']===_0x2832('0x12e')){_0x3c649b=![];}var _0x1d1c70=this[_0x2832('0x36')][_0x2832('0x12f')](_0x2278bf,_0x3c668b,_0x59f24e['intKey'],_0x59f24e['timeout'],undefined,_0x3c649b);if(_0x1d1c70[_0x2832('0x9b')]!==-0x1){this['channel']['noop'](util[_0x2832('0x28')]('google\x20%s\x20file\x20created',_0x17b252));var _0x642d08=this[_0x2832('0x87')][_0x2832('0x6a')](this,_0x59f24e,_0x17b252);if(_0x642d08){for(var _0x59afb3 in _0x642d08){if(_0x642d08[_0x2832('0x8f')](_0x59afb3)){this['channel'][_0x2832('0x9c')](util[_0x2832('0x28')]('GOOGLE_ASR_%s',_0x59afb3['toUpperCase']()),_0x642d08[_0x59afb3]);}}return this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x130'),JSON[_0x2832('0x6d')](_0x642d08)));}}return _0x1d1c70;};AGIVertices['prototype']['tildeasr']=function(_0x4ccf26){logger[_0x2832('0x2d')](util['format'](_0x2832('0x131'),_0x4ccf26['label']));if(!this[_0x2832('0x7c')](_0x4ccf26[_0x2832('0x132')])){return this[_0x2832('0x36')][_0x2832('0x9f')]('no\x20appid\x20configured');}if(!this[_0x2832('0x7c')](_0x4ccf26[_0x2832('0x8a')])){return this['channel'][_0x2832('0x9f')](_0x2832('0x133'));}var _0xce8db='wav';var _0x3a554a=util['format'](_0x2832('0x12d'),FILES_PATH,rs[_0x2832('0x115')](0x4));var _0x5e18ab=util[_0x2832('0x28')](_0x2832('0x96'),_0x3a554a,_0xce8db);var _0x3c0e66=!![];if(_0x4ccf26[_0x2832('0x134')]==='NOBEEP'){_0x3c0e66=![];}var _0x1e31f5=this['channel'][_0x2832('0x12f')](_0x3a554a,_0xce8db,_0x4ccf26[_0x2832('0x135')],_0x4ccf26[_0x2832('0x60')],undefined,_0x3c0e66);if(_0x1e31f5[_0x2832('0x9b')]!==-0x1){this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x136'),_0x5e18ab));var _0x20b2c6=this[_0x2832('0x89')]['sync'](this,_0x4ccf26,_0x5e18ab);if(_0x20b2c6){for(var _0x30ac55 in _0x20b2c6){if(_0x20b2c6[_0x2832('0x8f')](_0x30ac55)){this['channel'][_0x2832('0x9c')](util[_0x2832('0x28')](_0x2832('0x137'),_0x30ac55[_0x2832('0x63')]()),_0x20b2c6[_0x30ac55]);}}return this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x138'),JSON[_0x2832('0x6d')](_0x20b2c6)));}}return _0x1e31f5;};AGIVertices[_0x2832('0x15')]['gotoc']=function(_0x104a66){logger['info'](util[_0x2832('0x28')](_0x2832('0x139'),_0x104a66[_0x2832('0x37')]));return this[_0x2832('0x36')][_0x2832('0x13a')](_0x104a66['context'],_0x104a66[_0x2832('0x3d')],_0x104a66[_0x2832('0x13b')]);};AGIVertices[_0x2832('0x15')]['gotoif']=function(_0x378d34){logger[_0x2832('0x2d')](util[_0x2832('0x28')]('Enter\x20in\x20GOTOIF\x20(%s)\x20block',_0x378d34['label']));if(!this[_0x2832('0x7c')](_0x378d34[_0x2832('0x13c')])){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x378d34,_0x2832('0x13d'));}try{var _0x2c4318=eval(_0x378d34['condition'])?'true':'false';this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x13e'),_0x378d34[_0x2832('0x13c')],_0x2c4318));return{'code':0xc8,'result':_0x2c4318};}catch(_0x25718d){return{'code':0xc8,'result':_0x2832('0x13f')};}};AGIVertices[_0x2832('0x15')][_0x2832('0x140')]=function(_0x5bd190){logger[_0x2832('0x2d')](util[_0x2832('0x28')]('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x5bd190['label']));if(!this[_0x2832('0x7c')](_0x5bd190['interval_id'])){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x5bd190,_0x2832('0x141'));}var _0x34ff11=this['getIntervals'][_0x2832('0x6a')](this,_0x5bd190[_0x2832('0x142')]);if(!_0x34ff11){return this[_0x2832('0x36')]['error'](_0x5bd190,'no\x20intervals\x20found');}for(var _0x490bf8=0x0;_0x490bf8<_0x34ff11[_0x2832('0x94')];_0x490bf8+=0x1){var _0xc843ee=this['channel'][_0x2832('0x99')](util[_0x2832('0x28')](_0x2832('0x143'),_0x34ff11[_0x490bf8]));if(_0xc843ee[_0x2832('0x9b')]===-0x1){return _0xc843ee;}logger[_0x2832('0x2d')](util[_0x2832('0x28')]('IFTIME\x20%s\x20%s',_0x34ff11[_0x490bf8],_0xc843ee[_0x2832('0x9a')]));if(_0xc843ee[_0x2832('0x9a')]===_0x2832('0x144')){logger['info'](util[_0x2832('0x28')](_0x2832('0x145'),_0x34ff11[_0x490bf8],_0x2832('0x144')));this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x145'),_0x34ff11[_0x490bf8],_0x2832('0x144')));return{'code':0xc8,'result':'true'};}else{logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x145'),_0x34ff11[_0x490bf8],'false'));this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')]('IFTIME\x20%s\x20%s',_0x34ff11[_0x490bf8],_0x2832('0x13f')));}}return{'code':0xc8,'result':'false'};};AGIVertices[_0x2832('0x15')][_0x2832('0x146')]=function(_0x57997d){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x147'),_0x57997d[_0x2832('0x37')]));return this[_0x2832('0x36')][_0x2832('0x146')]();};AGIVertices['prototype'][_0x2832('0x148')]=function(_0x515aa7){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x149'),_0x515aa7[_0x2832('0x37')]));if(!this['isConfigured'](_0x515aa7['key'])){return this[_0x2832('0x36')][_0x2832('0x9f')](_0x2832('0xde'));}var _0x46d3e3=_0x2832('0x12c');var _0x24ea77=util['format']('%s/recordings/%s',FILES_PATH,rs['generate'](0x4));var _0x2cc4ae=util[_0x2832('0x28')](_0x2832('0x96'),_0x24ea77,_0x46d3e3);var _0x4ea0e4=!![];if(_0x515aa7[_0x2832('0x134')]==='NOBEEP'){_0x4ea0e4=![];}var _0xe1ccf5=this['channel']['recordFile'](_0x24ea77,_0x46d3e3,_0x515aa7[_0x2832('0x135')],_0x515aa7[_0x2832('0x60')],undefined,_0x4ea0e4);if(_0xe1ccf5[_0x2832('0x9b')]!==-0x1){this[_0x2832('0x36')][_0x2832('0x9f')](util['format'](_0x2832('0x14a'),_0x2cc4ae));var _0x244035=this[_0x2832('0x7a')]['sync'](this,_0x515aa7,_0x2cc4ae);if(_0x244035){for(var _0x5ec949 in _0x244035){if(_0x244035['hasOwnProperty'](_0x5ec949)){this[_0x2832('0x36')]['setVariable'](util['format'](_0x2832('0x14b'),_0x5ec949['toUpperCase']()),_0x244035[_0x5ec949]);}}return this['channel'][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x14c'),JSON['stringify'](_0x244035)));}}return _0xe1ccf5;};AGIVertices[_0x2832('0x15')][_0x2832('0x14d')]=function(_0x7f9a08){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x14e'),_0x7f9a08['label']));if(!this['isConfigured'](_0x7f9a08['key'])){return this[_0x2832('0x36')]['noop'](_0x2832('0xde'));}if(!this[_0x2832('0x7c')](_0x7f9a08['text'])){return this[_0x2832('0x36')]['noop'](_0x2832('0xbc'));}this[_0x2832('0x36')]['noop'](util[_0x2832('0x28')](_0x2832('0x14f'),_0x7f9a08[_0x2832('0x58')]));var _0x446c75=this['ispeechTTS'][_0x2832('0x6a')](this,_0x7f9a08);if(_0x446c75){this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x14a'),_0x446c75));var _0x36663b=this[_0x2832('0x36')][_0x2832('0x121')](_0x446c75,_0x7f9a08[_0x2832('0x135')]);try{fs[_0x2832('0xfc')](_0x446c75+'.wav');}catch(_0x5d65ff){logger['error'](_0x5d65ff);}return _0x36663b;}return this[_0x2832('0x36')][_0x2832('0x2b')](_0x7f9a08,_0x2832('0x150'));};AGIVertices['prototype']['login']=function(_0x31d0fb){logger[_0x2832('0x2d')](util[_0x2832('0x28')]('Enter\x20in\x20LOGIN\x20(%s)\x20block',_0x31d0fb['label']));if(!this[_0x2832('0x7c')](_0x31d0fb['findBy'])){return this[_0x2832('0x36')]['error'](_0x31d0fb,_0x2832('0x151'));}logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x152'),this[_0x2832('0x36')][_0x2832('0x39')],_0x31d0fb['findBy']));var _0x545d37=this[_0x2832('0x4f')][_0x2832('0x6a')](this,_0x31d0fb['findBy']);if(_0x545d37){logger[_0x2832('0x2d')](util[_0x2832('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x2832('0x36')][_0x2832('0x39')],_0x31d0fb[_0x2832('0x153')]));this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x154'),this[_0x2832('0x36')][_0x2832('0x39')],_0x31d0fb[_0x2832('0x153')]));return{'code':0xc8,'result':'success'};}else{logger[_0x2832('0x2d')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x2832('0x36')][_0x2832('0x39')],_0x31d0fb[_0x2832('0x153')]));this['channel'][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x155'),this[_0x2832('0x36')][_0x2832('0x39')],_0x31d0fb[_0x2832('0x153')]));return{'code':0xc8,'result':_0x2832('0x156')};}};AGIVertices[_0x2832('0x15')]['logout']=function(_0x2c499f){logger[_0x2832('0x2d')](util[_0x2832('0x28')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x2c499f['label']));if(!this[_0x2832('0x7c')](_0x2c499f[_0x2832('0x153')])){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x2c499f,_0x2832('0x151'));}logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x152'),this[_0x2832('0x36')]['callerid'],_0x2c499f[_0x2832('0x153')]));var _0x23ede6=this['agentLogout']['sync'](this,_0x2c499f['findBy']);if(_0x23ede6){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x154'),this[_0x2832('0x36')][_0x2832('0x39')],_0x2c499f[_0x2832('0x153')]));this['channel'][_0x2832('0x9f')](util['format'](_0x2832('0x154'),this[_0x2832('0x36')][_0x2832('0x39')],_0x2c499f[_0x2832('0x153')]));return{'code':0xc8,'result':_0x2832('0x157')};}else{logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x155'),this[_0x2832('0x36')][_0x2832('0x39')],_0x2c499f[_0x2832('0x153')]));this['channel'][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x155'),this[_0x2832('0x36')][_0x2832('0x39')],_0x2c499f['findBy']));return{'code':0xc8,'result':_0x2832('0x156')};}};AGIVertices[_0x2832('0x15')][_0x2832('0x158')]=function(_0x4b8f71){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x159'),_0x4b8f71['label']));if(!this[_0x2832('0x7c')](_0x4b8f71[_0x2832('0x15a')])){return this['channel'][_0x2832('0x2b')](_0x4b8f71,_0x2832('0x15b'));}this[_0x2832('0x36')]['noop'](util[_0x2832('0x28')](_0x2832('0x15c'),_0x4b8f71[_0x2832('0x15a')]));var _0x35851b=eval(_0x4b8f71[_0x2832('0x15a')]);if(!this['isConfigured'](_0x4b8f71['variable_id'])){return this[_0x2832('0x36')][_0x2832('0x9f')](_0x2832('0xcd'));}var _0x136b54=this[_0x2832('0x99')][_0x2832('0x6a')](this,_0x4b8f71[_0x2832('0xcc')]);if(!_0x136b54){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x4b8f71,'no\x20variable\x20found');}if(_[_0x2832('0x93')](_0x35851b)){var _0x579ae5=this;_0x35851b[_0x2832('0xcf')](function(_0x3fcf3c,_0x505015){_0x579ae5[_0x2832('0x36')][_0x2832('0x9c')](util[_0x2832('0x28')](_0x2832('0x15d'),_0x136b54,_0x505015),_0x3fcf3c);});return this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x15e'),_0x136b54));}else{return this[_0x2832('0x36')]['setVariable'](_0x136b54,_0x35851b);}};AGIVertices[_0x2832('0x15')][_0x2832('0xe')]=function(_0x7dc3b6){logger[_0x2832('0x2d')](util['format'](_0x2832('0x15f'),_0x7dc3b6[_0x2832('0x37')]));if(_0x7dc3b6[_0x2832('0x10b')]===0x0){return this[_0x2832('0x9d')](_0x7dc3b6);}_0x7dc3b6[_0x2832('0x10b')]-=0x1;if(!this[_0x2832('0x7c')](_0x7dc3b6[_0x2832('0x10c')])){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x7dc3b6,'no\x20file\x20audio\x20selected');}var _0x3d2af6=this['getSound'][_0x2832('0x6a')](this,_0x7dc3b6[_0x2832('0x10c')]);if(!_0x3d2af6){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x7dc3b6,_0x2832('0x10e'));}var _0x13088f=this[_0x2832('0x36')][_0x2832('0x10f')](_0x3d2af6,_0x7dc3b6['response'],_0x7dc3b6[_0x2832('0x160')]);var _0x1b1218=_0x13088f['result'];if(_0x13088f[_0x2832('0x9b')]===-0x1){this[_0x2832('0x35')]['sync'](this,_0x7dc3b6,'-1');return _0x13088f;}else if(_0x13088f[_0x2832('0x9a')]==='timeout'){_0x13088f['result']=_0x13088f[_0x2832('0x9b')][_0x2832('0x94')]>0x0?_0x13088f['result']:'t';}else if(_[_0x2832('0x43')](_0x13088f[_0x2832('0x9b')])){_0x13088f['result']='#';_0x1b1218='#';}if(!this[_0x2832('0x7c')](_0x7dc3b6[_0x2832('0xcc')])){this[_0x2832('0x36')]['noop'](_0x2832('0xcd'));}else{var _0xf60a3f=this['getVariable'][_0x2832('0x6a')](this,_0x7dc3b6[_0x2832('0xcc')]);if(!_0xf60a3f){return this['channel'][_0x2832('0x2b')](_0x7dc3b6,_0x2832('0x161'));}this[_0x2832('0x36')][_0x2832('0x9c')](_0xf60a3f,_0x1b1218);}this[_0x2832('0x35')]['sync'](this,_0x7dc3b6,_0x1b1218);return _0x13088f;};AGIVertices[_0x2832('0x15')][_0x2832('0x9f')]=function(_0x3f75a6){logger[_0x2832('0x2d')](util[_0x2832('0x28')]('Enter\x20in\x20NOOP\x20(%s)\x20block',_0x3f75a6['label']));return this[_0x2832('0x36')][_0x2832('0x9f')](_0x3f75a6[_0x2832('0x162')]||_0x3f75a6[_0x2832('0x37')]);};AGIVertices[_0x2832('0x15')][_0x2832('0x163')]=function(_0x5ccf69){logger['info'](util[_0x2832('0x28')](_0x2832('0x164'),_0x5ccf69[_0x2832('0x37')]));if(!this[_0x2832('0x7c')](_0x5ccf69[_0x2832('0x153')])){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x5ccf69,_0x2832('0x151'));}logger[_0x2832('0x2d')](util['format'](_0x2832('0x152'),this[_0x2832('0x36')][_0x2832('0x39')],_0x5ccf69['findBy']));var _0x2ff536=this[_0x2832('0x4b')][_0x2832('0x6a')](this,_0x5ccf69[_0x2832('0x165')]);var _0x506fce=this['agentPause']['sync'](this,_0x5ccf69[_0x2832('0x153')],_0x2ff536);if(_0x506fce){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x154'),this[_0x2832('0x36')]['callerid'],_0x5ccf69[_0x2832('0x153')]));this['channel'][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x154'),this[_0x2832('0x36')][_0x2832('0x39')],_0x5ccf69['findBy']));return{'code':0xc8,'result':_0x2832('0x157')};}else{logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x155'),this['channel'][_0x2832('0x39')],_0x5ccf69['findBy']));this['channel'][_0x2832('0x9f')](util[_0x2832('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x2832('0x36')][_0x2832('0x39')],_0x5ccf69[_0x2832('0x153')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x2832('0x15')]['playback']=function(_0x490b7a){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x166'),_0x490b7a['label']));if(!this[_0x2832('0x7c')](_0x490b7a['file_id'])){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x490b7a,_0x2832('0x10d'));}var _0x4618e0=this[_0x2832('0x1e')][_0x2832('0x6a')](this,_0x490b7a['file_id']);if(!_0x4618e0){return this[_0x2832('0x36')]['error'](_0x490b7a,_0x2832('0x10e'));}var _0x5b4629=this[_0x2832('0x36')][_0x2832('0x53')](_0x2832('0x167'),[_0x4618e0,_0x490b7a['opts']]);if(_0x5b4629[_0x2832('0x9b')]===-0x1){return _0x5b4629;}return this['channel']['noop'](util[_0x2832('0x28')](_0x2832('0xbb'),_0x2832('0x167'),_0x4618e0));};AGIVertices[_0x2832('0x15')]['queue']=function(_0x466be6){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x168'),_0x466be6[_0x2832('0x37')]));if(!this[_0x2832('0x7c')](_0x466be6[_0x2832('0x169')])){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x466be6,'no\x20queue\x20selected');}var _0x1f5b93='';var _0x51201e=parseInt(_0x466be6[_0x2832('0x169')],0xa);if(isNaN(_0x51201e)){_0x1f5b93=_0x466be6[_0x2832('0x169')];}else{_0x1f5b93=this[_0x2832('0x16a')]['sync'](this,_0x466be6[_0x2832('0x169')]);if(!_0x1f5b93){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x466be6,_0x2832('0x16b'));}}var _0x1ee8ad='';if(this[_0x2832('0x7c')](_0x466be6['file_id'])){var _0x7c03b6=this[_0x2832('0x1e')][_0x2832('0x6a')](this,_0x466be6[_0x2832('0x10c')]);if(_0x7c03b6){_0x1ee8ad=_0x7c03b6;}}this['createSquareDetailsReport'][_0x2832('0x6a')](this,_0x466be6,_0x1f5b93);if(_0x466be6[_0x2832('0xdb')]['indexOf']('x')<0x0){_0x466be6['opts']+='x';}if(_0x466be6[_0x2832('0xdb')]['indexOf']('X')<0x0){_0x466be6[_0x2832('0xdb')]+='X';}this[_0x2832('0x36')][_0x2832('0x9c')](_0x2832('0x16c'),_0x1f5b93?_0x1f5b93[_0x2832('0x16d')]():'');var _0x17cd4f=this[_0x2832('0x36')][_0x2832('0x53')](_0x2832('0x16e'),[_0x1f5b93,_0x466be6[_0x2832('0xdb')],_0x466be6['url'],_0x1ee8ad,_0x466be6[_0x2832('0x60')],_0x466be6['agi'],_0x466be6[_0x2832('0x16f')],_0x466be6[_0x2832('0x170')],'',_0x466be6[_0x2832('0x171')]]);if(_0x17cd4f[_0x2832('0x9b')]===-0x1){return _0x17cd4f;}return this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0xbb'),_0x2832('0x16e'),_0x1f5b93));};AGIVertices[_0x2832('0x15')][_0x2832('0x172')]=function(_0x1ae16e){logger[_0x2832('0x2d')](util[_0x2832('0x28')]('Enter\x20in\x20RECORD\x20(%s)\x20block',_0x1ae16e['label']));var _0x5f2860=_0x1ae16e[_0x2832('0x173')]||'wav';var _0x135a86=util[_0x2832('0x28')]('%s_%s',this[_0x2832('0x36')][_0x2832('0x41')],rs[_0x2832('0x115')](0x5));var _0x2243a2=util[_0x2832('0x28')](_0x2832('0x174'),FILES_PATH,_0x135a86,_0x5f2860);var _0x2193a4=util[_0x2832('0x28')](_0x2832('0x12d'),FILES_PATH,_0x135a86);this[_0x2832('0x3a')][_0x2832('0x6a')](this,_0x1ae16e,_0x135a86,_0x2243a2);this[_0x2832('0x36')][_0x2832('0x9c')](_0x2832('0x175'),_0x135a86);logger[_0x2832('0x2d')]('Recording\x20%s\x20%s\x20%s\x20%s',_0x2193a4,_0x5f2860,_0x1ae16e['escape_digits'],_0x1ae16e[_0x2832('0x60')]);return this[_0x2832('0x36')][_0x2832('0x12f')](_0x2193a4,_0x5f2860,_0x1ae16e['escape_digits'],_0x1ae16e[_0x2832('0x60')],undefined,!![]);};AGIVertices['prototype'][_0x2832('0x176')]=function(_0x464b5e){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x177'),_0x464b5e[_0x2832('0x37')]));if(!this[_0x2832('0x7c')](_0x464b5e[_0x2832('0x6c')])){return this['channel']['noop'](_0x2832('0x178'));}var _0x548773=this['restAPI'][_0x2832('0x6a')](this,_0x464b5e);logger[_0x2832('0x2d')](util['format'](_0x2832('0x179'),util[_0x2832('0x17a')](_0x548773,{'showHidden':![],'depth':null})));if(!this[_0x2832('0x7c')](_0x464b5e[_0x2832('0xcc')])){return this[_0x2832('0x36')]['noop'](_0x2832('0x17b'));}var _0x4b04be=this['getVariable']['sync'](this,_0x464b5e[_0x2832('0xcc')]);if(!_0x4b04be){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x464b5e,_0x2832('0x161'));}this[_0x2832('0x36')]['setVariable'](util['format'](_0x2832('0x17c'),_0x4b04be),_0x548773[_0x2832('0x6f')]?_0x548773[_0x2832('0x6f')]:_0x2832('0x17d'));this[_0x2832('0x36')][_0x2832('0x9c')](util[_0x2832('0x28')](_0x2832('0x17e'),_0x4b04be),_0x548773[_0x2832('0x17f')]?_0x548773['statusMessage']:'OK');if(_0x548773['body']){try{this[_0x2832('0x180')](_0x548773[_0x2832('0x64')],_0x4b04be);}catch(_0x548b8e){logger[_0x2832('0x2b')](util[_0x2832('0x28')](_0x2832('0x181'),_0x4b04be));}}return this[_0x2832('0x36')][_0x2832('0x9f')](util['format']('variable\x20%s\x20set',_0x4b04be));};AGIVertices[_0x2832('0x15')][_0x2832('0x182')]=function(_0xe4b855){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x183'),_0xe4b855[_0x2832('0x37')]));return this['channel'][_0x2832('0x184')](_0xe4b855['digits'][_0x2832('0xca')](/\s+/g,''),_0xe4b855[_0x2832('0x185')]);};AGIVertices[_0x2832('0x15')]['saynumber']=function(_0xd6035a){logger['info'](util['format'](_0x2832('0x186'),_0xd6035a[_0x2832('0x37')]));return this[_0x2832('0x36')]['sayNumber'](_0xd6035a[_0x2832('0x187')][_0x2832('0xca')](/\s+/g,''),_0xd6035a[_0x2832('0x185')]);};AGIVertices[_0x2832('0x15')][_0x2832('0x188')]=function(_0x1fef71){logger[_0x2832('0x2d')](util['format']('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x1fef71[_0x2832('0x37')]));return this[_0x2832('0x36')][_0x2832('0x189')](_0x1fef71[_0x2832('0x58')],_0x1fef71[_0x2832('0x185')]);};AGIVertices['prototype'][_0x2832('0x18a')]=function(_0x3e6d87){logger[_0x2832('0x2d')](util['format'](_0x2832('0x18b'),_0x3e6d87[_0x2832('0x37')]));if(!this[_0x2832('0x7c')](_0x3e6d87[_0x2832('0x18c')])){return this['channel'][_0x2832('0x9f')](_0x2832('0x18d'));}var _0x51d6ce=this[_0x2832('0x21')][_0x2832('0x6a')](this,_0x3e6d87[_0x2832('0x18c')]);if(!_0x51d6ce||!_0x51d6ce[_0x2832('0x18e')]){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x3e6d87,'no\x20mail\x20account\x20found');}var _0x47039e={'from':util[_0x2832('0x28')]('\x22%s\x22\x20<%s>',_0x51d6ce[_0x2832('0x14')],_0x51d6ce[_0x2832('0x18f')]||_0x51d6ce[_0x2832('0x18e')][_0x2832('0x190')]),'to':_0x3e6d87['to']||'','cc':_0x3e6d87['cc']||'','bcc':_0x3e6d87[_0x2832('0x191')]||'','subject':_0x3e6d87[_0x2832('0x192')],'html':_0x3e6d87['text'],'text':_0x3e6d87[_0x2832('0x58')]};var _0x5cd6f1={'tls':{'rejectUnauthorized':![]}};if(_0x51d6ce['Smtp']['service']){_0x5cd6f1['service']=_0x51d6ce[_0x2832('0x18e')][_0x2832('0x193')];}else{_0x5cd6f1[_0x2832('0x194')]=_0x51d6ce[_0x2832('0x18e')][_0x2832('0x194')];_0x5cd6f1['port']=_0x51d6ce[_0x2832('0x18e')][_0x2832('0x195')];_0x5cd6f1['secure']=_0x51d6ce[_0x2832('0x18e')][_0x2832('0x196')];}if(_0x51d6ce['Smtp']['authentication']){_0x5cd6f1[_0x2832('0x197')]={'user':_0x51d6ce[_0x2832('0x18e')][_0x2832('0x190')],'pass':_0x51d6ce[_0x2832('0x18e')]['pass']};}if(this[_0x2832('0x7c')](_0x3e6d87['template_id'])){}logger[_0x2832('0xd4')](_0x2832('0x198'),JSON['stringify'](_0x47039e));this[_0x2832('0x35')][_0x2832('0x6a')](this,_0x3e6d87,_0x3e6d87[_0x2832('0x18c')]);this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x199'),_0x51d6ce[_0x2832('0x14')]));this['sendMailMessage'][_0x2832('0x6a')](this,_0x5cd6f1,_0x47039e);return this[_0x2832('0x36')][_0x2832('0x9f')]('Mail\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0x2832('0x15')][_0x2832('0x19a')]=function(_0x481710){logger[_0x2832('0x2d')](util[_0x2832('0x28')]('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x481710[_0x2832('0x37')]));return this[_0x2832('0x36')][_0x2832('0x9f')](_0x2832('0x19b'));};AGIVertices[_0x2832('0x15')][_0x2832('0x19c')]=function(_0x2fbfa1){logger['info'](util[_0x2832('0x28')](_0x2832('0x19d'),_0x2fbfa1[_0x2832('0x37')]));if(!this[_0x2832('0x7c')](_0x2fbfa1[_0x2832('0x19e')])){return this[_0x2832('0x36')][_0x2832('0x9f')]('no\x20sms\x20account\x20configured');}var _0x4908d1=this[_0x2832('0x33')]['sync'](this,_0x2fbfa1[_0x2832('0x19e')]);if(!_0x4908d1){return this['channel']['error'](_0x2fbfa1,'no\x20sms\x20account\x20found');}var _0x154086={'body':_0x2fbfa1[_0x2832('0x19f')],'phone':_0x2fbfa1['to']||'','SmsAccountId':_0x4908d1['id']};logger[_0x2832('0xd4')](_0x2832('0x1a0'),JSON['stringify'](_0x154086));this[_0x2832('0x35')][_0x2832('0x6a')](this,_0x2fbfa1,_0x2fbfa1[_0x2832('0x19e')]);this[_0x2832('0x36')][_0x2832('0x9f')](util['format']('Trying\x20SendSMS\x20with\x20account\x20%s',_0x4908d1[_0x2832('0x14')]));this['createSmsMessage'][_0x2832('0x6a')](this,_0x154086);return this[_0x2832('0x36')][_0x2832('0x9f')](_0x2832('0x1a1'));};AGIVertices[_0x2832('0x15')][_0x2832('0x1a2')]=function(_0x493789){logger[_0x2832('0x2d')](util[_0x2832('0x28')]('Enter\x20in\x20SET\x20(%s)\x20block',_0x493789[_0x2832('0x37')]));if(!this['isConfigured'](_0x493789['variable_id'])){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x493789,_0x2832('0x1a3'));}var _0x2307fe=this['getVariable'][_0x2832('0x6a')](this,_0x493789['variable_id']);if(!_0x2307fe){return this['channel'][_0x2832('0x2b')](_0x493789,'no\x20variable\x20found');}return this['channel'][_0x2832('0x9c')](_0x2307fe,_0x493789[_0x2832('0x1a4')]);};AGIVertices[_0x2832('0x15')][_0x2832('0x1a5')]=function(_0x28d8fb){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x1a6'),_0x28d8fb[_0x2832('0x37')]));this[_0x2832('0x36')][_0x2832('0x9f')](_0x2832('0x1a7'));if(_0x28d8fb[_0x2832('0xb0')]===_0x2832('0x1a8')){this[_0x2832('0x36')][_0x2832('0x9f')]('Answer');return this[_0x2832('0x36')]['answer']();}return this['channel'][_0x2832('0x9f')]('Skipped\x20Answer');};AGIVertices[_0x2832('0x15')]['subproject']=function(_0x4360ad){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x1a9'),_0x4360ad[_0x2832('0x37')]));if(!this[_0x2832('0x7c')](_0x4360ad[_0x2832('0x1aa')])){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x4360ad,_0x2832('0x1ab'));}var _0x51af30=this[_0x2832('0x1ac')][_0x2832('0x6a')](this,_0x4360ad[_0x2832('0x1aa')]);if(!this[_0x2832('0x7c')](_0x51af30)){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x4360ad,util['format'](_0x2832('0x1ad'),_0x4360ad[_0x2832('0x1aa')]));}if(_0x51af30===this[_0x2832('0x36')]['arg_1']){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x4360ad,'project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project');}this[_0x2832('0x35')][_0x2832('0x6a')](this,_0x4360ad,_0x51af30);var _0x2afe31=this[_0x2832('0x36')][_0x2832('0x53')](_0x2832('0x1ae'),util['format']('agi://%s/square,\x22%s\x22,\x22%s\x22',config[_0x2832('0xae')][_0x2832('0x194')]||_0x2832('0x1af'),_0x51af30,this['channel']['arg_1']));if(_0x2afe31[_0x2832('0x9b')]===-0x1){return _0x2afe31;}return this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0xbb'),_0x2832('0x1ae'),_0x51af30));};AGIVertices[_0x2832('0x15')]['system']=function(_0xb68077){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x1b0'),_0xb68077['label']));var _0x58ef5b=this[_0x2832('0x52')][_0x2832('0x6a')](this,_0xb68077[_0x2832('0x1b1')]);this[_0x2832('0x35')]['sync'](this,_0xb68077,_0xb68077['command']);if(this[_0x2832('0x7c')](_0xb68077[_0x2832('0xcc')])){var _0x311ad3=this[_0x2832('0x99')][_0x2832('0x6a')](this,_0xb68077['variable_id']);if(_0x311ad3){this[_0x2832('0x36')][_0x2832('0x9c')](_0x311ad3,_0x58ef5b);return this[_0x2832('0x36')]['noop'](util[_0x2832('0x28')]('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0xb68077['command'],_0x311ad3));}}return this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x1b2'),_0xb68077['command']));};AGIVertices[_0x2832('0x15')][_0x2832('0x1b3')]=function(_0x27369f){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x1b4'),_0x27369f[_0x2832('0x37')]));_0x27369f['text']=_0x27369f[_0x2832('0x58')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x27369f['apiKey'])){return this[_0x2832('0x36')][_0x2832('0x9f')](_0x2832('0x1b5'));}if(!this['isConfigured'](_0x27369f['text'])){return this['channel'][_0x2832('0x9f')](_0x2832('0xbc'));}this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x1b6'),_0x27369f[_0x2832('0x58')]));var _0x5e7c80=this[_0x2832('0x55')][_0x2832('0x6a')](this,_0x27369f);if(_0x5e7c80){this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x1b7'),_0x5e7c80));var _0x4d76c2=this[_0x2832('0x36')][_0x2832('0x121')](_0x5e7c80);try{fs['unlink'](_0x5e7c80+_0x2832('0xfd'));}catch(_0x170245){logger['error'](_0x170245);}return _0x4d76c2;}return this[_0x2832('0x36')]['error'](_0x27369f,_0x2832('0x1b8'));};AGIVertices[_0x2832('0x15')][_0x2832('0x1b9')]=function(_0x2d0ab5){logger[_0x2832('0x2d')](util['format']('Enter\x20in\x20GOOGLETTS\x20(%s)\x20block',_0x2d0ab5['label']));_0x2d0ab5[_0x2832('0x58')]=_0x2d0ab5['text'][_0x2832('0xca')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x2d0ab5[_0x2832('0x58')])){return this[_0x2832('0x36')][_0x2832('0x9f')](_0x2832('0xbc'));}this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x1ba'),_0x2d0ab5['text']));var _0xbd6fd4=this[_0x2832('0x5e')][_0x2832('0x6a')](this,_0x2d0ab5);if(_0xbd6fd4){this[_0x2832('0x36')]['noop'](util[_0x2832('0x28')](_0x2832('0x1bb'),_0xbd6fd4));var _0x1a9124=this[_0x2832('0x36')]['streamFile'](_0xbd6fd4);try{fs[_0x2832('0xfc')](_0xbd6fd4+_0x2832('0xfd'));}catch(_0x528dc6){logger[_0x2832('0x2b')](_0x528dc6);}return _0x1a9124;}return this[_0x2832('0x36')][_0x2832('0x2b')](_0x2d0ab5,_0x2832('0x1bc'));};AGIVertices['prototype'][_0x2832('0x1bd')]=function(_0x5e33d4){logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x1be'),_0x5e33d4[_0x2832('0x37')]));if(!this['isConfigured'](_0x5e33d4[_0x2832('0x153')])){return this['channel'][_0x2832('0x2b')](_0x5e33d4,'no\x20find\x20by\x20configured');}logger[_0x2832('0x2d')](util['format'](_0x2832('0x152'),this[_0x2832('0x36')][_0x2832('0x39')],_0x5e33d4['findBy']));var _0x3047c4=this[_0x2832('0x4e')]['sync'](this,_0x5e33d4[_0x2832('0x153')]);if(_0x3047c4){logger['info'](util[_0x2832('0x28')](_0x2832('0x154'),this['channel'][_0x2832('0x39')],_0x5e33d4[_0x2832('0x153')]));this[_0x2832('0x36')]['noop'](util[_0x2832('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x2832('0x36')][_0x2832('0x39')],_0x5e33d4[_0x2832('0x153')]));return{'code':0xc8,'result':_0x2832('0x157')};}else{logger[_0x2832('0x2d')](util[_0x2832('0x28')](_0x2832('0x155'),this['channel']['callerid'],_0x5e33d4[_0x2832('0x153')]));this[_0x2832('0x36')][_0x2832('0x9f')](util[_0x2832('0x28')](_0x2832('0x155'),this[_0x2832('0x36')][_0x2832('0x39')],_0x5e33d4[_0x2832('0x153')]));return{'code':0xc8,'result':_0x2832('0x156')};}};AGIVertices[_0x2832('0x15')][_0x2832('0x1bf')]=function(_0x193776){logger[_0x2832('0x2d')](util[_0x2832('0x28')]('Enter\x20in\x20VOICEMAIL\x20(%s)\x20block',_0x193776[_0x2832('0x37')]));var _0x4e0446=this['channel']['exec'](_0x2832('0x1c0'),[_0x193776[_0x2832('0x1c1')],_0x193776[_0x2832('0x72')]]);if(_0x4e0446['result']===-0x1){return _0x4e0446;}return this['channel'][_0x2832('0x9f')](util['format'](_0x2832('0xbb'),'VOICEMAIL',_0x193776[_0x2832('0x1c1')]));};AGIVertices['prototype'][_0x2832('0x1c2')]=function(_0x88616c){logger['info'](util['format']('Enter\x20in\x20SWITCH\x20(%s)\x20block',_0x88616c[_0x2832('0x37')]));if(!this['isConfigured'](_0x88616c[_0x2832('0xcc')])){return this[_0x2832('0x36')][_0x2832('0x2b')](_0x88616c,'no\x20variable\x20selected');}var _0x5876b6=this[_0x2832('0x99')][_0x2832('0x6a')](this,_0x88616c['variable_id']);if(!_0x5876b6){return this['channel'][_0x2832('0x2b')](_0x88616c,_0x2832('0x161'));}var _0x5145a5=this['channel']['getVariable'](_0x5876b6);return{'code':0xc8,'result':_0x5145a5['extra']?_0x5145a5['extra']:'-'};};String[_0x2832('0x15')][_0x2832('0x98')]=function(_0x430115,_0x25c130){return this[_0x2832('0x97')](_0x430115)[_0x2832('0x1c3')](_0x25c130);};module[_0x2832('0x1c4')]=AGIVertices;
\ No newline at end of file
+var _0x3c7e=['trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','Enter\x20in\x20FINALLY\x20(%s)\x20block','finally','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','file_id','getData','response','test','mindigit','hiddendigitsnum','first','substr','generate','goal','goalname','GOAL\x20%s','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','%s/recordings/%s','beep','NOBEEP','recordFile','intKey','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','extension','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','no\x20interval\x20configured','interval_id','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','math','operation','no\x20operation\x20configured','math\x20%s','%s[%s]','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','digit','output','pause','pause_id','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','Executed\x20command\x20%s\x20%s','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','indexOf','XMCS-QUEUE','QUEUE','gosub','record','Enter\x20in\x20RECORD\x20(%s)\x20block','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','sayDigits','digits','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','Smtp','user','bcc','subject','service','host','port','secure','authentication','auth','pass','template_id','sendMail\x20message','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','no\x20sms\x20account\x20found','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','set','variable_value','start','yes','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','Enter\x20in\x20SYSTEM\x20(%s)\x20block','shellCommand','command','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','streamFile','Google\x20Cloud\x20TTS\x20is\x20unreachable','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','no\x20variable\x20selected','join','exports','path','util','shelljs','odbc','randomstring','moment','mustache','../../config/logger','./scripts','rawHeaders','rawBody','menu','getdigits','getsecretdigits','channel','rpc','mailRpc','getVariableById','name','catch','getVoiceQueue','getVoiceQueueById','then','prototype','getSquareProject','getSquareProjectById','getSquareOdbcById','dsn','getUserById','getTrunkById','getSound','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','IntervalId','interval','map','Intervals','format','%s/sounds/converted/%s','getQueryOdbc','open','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','getSmsAccount','createSmsMessage','createSquareDetailsReport','uniqueid','agicommand','arg_1','callerid','createSquareRecording','calleridname','context','priority','accountcode','dnid','file','createSquareMessage','createCmContact','callback_','isEmpty','lastName','isNil','phone','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPauseById','agentPause','agent','error','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','MP3','googleTTS','google_tts_language','restAPI','method','timeout','PUT','toUpperCase','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','url','body','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','sestekNDA','ispeech_tts_language','speed','ispeechASR','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','aws_text_type','awsLex','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','appsecret','clear','includes','clone','hasOwnProperty','isString','replaceObjectAllVariables','recursiveNodeIndex','isArray','length','saveRestApiResult','isPlainObject','%s.%s','setVariable','replaceAllVariables','split','replaceAll','getVariable','extra','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','label','noop','no\x20text\x20configured','exec','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','no\x20grammar\x20configured','getAndSetVariable','RECOG_CONFIDENCE()','RECOG_INPUT()','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','agi','Enter\x20in\x20AGI\x20(%s)\x20block','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','no\x20list\x20selected','delay','minutes','list_id','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','grammar','MRCPRecog','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','no\x20query\x20configured','no\x20variable\x20selected\x20for\x20the\x20result','variable_id','no\x20variable\x20found','forEach','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','getUser','sip_id','DIAL','SIP/%s','opts','Executed\x20command\x20%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','out','speech','Dialogflow\x20is\x20unreachable','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20client_email\x20configured','dialogflowV2_language','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','dialogflowV2','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','password','no\x20password\x20configured','SESTEK_NDA_%s','audiofile','unlink','.wav','SestekNDA\x20Result\x20%s','end','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block'];(function(_0x2980d9,_0xef7ff){var _0x37994e=function(_0x555936){while(--_0x555936){_0x2980d9['push'](_0x2980d9['shift']());}};_0x37994e(++_0xef7ff);}(_0x3c7e,0xbf));var _0xe3c7=function(_0x30d14d,_0x5b7cdc){_0x30d14d=_0x30d14d-0x0;var _0x47054e=_0x3c7e[_0x30d14d];return _0x47054e;};'use strict';var fs=require('fs');var path=require(_0xe3c7('0x0'));var util=require(_0xe3c7('0x1'));var _=require('lodash');var sh=require(_0xe3c7('0x2'));var odbc=require(_0xe3c7('0x3'))();var rs=require(_0xe3c7('0x4'));var moment=require(_0xe3c7('0x5'));var Mustache=require(_0xe3c7('0x6'));var rp=require('request-promise');var logger=require(_0xe3c7('0x7'))('agi');var config=require('../../config/environment');var scripts=require(_0xe3c7('0x8'));var FILES_PATH='/var/opt/motion2/server/files';var recursiveMapAttributes=[_0xe3c7('0x9'),_0xe3c7('0xa')];var verticesWithRetry=[_0xe3c7('0xb'),_0xe3c7('0xc'),_0xe3c7('0xd')];var AGIVertices=function(_0x220bea,_0x385c3d,_0x51a000){this[_0xe3c7('0xe')]=_0x220bea;this[_0xe3c7('0xf')]=_0x385c3d;this[_0xe3c7('0x10')]=_0x51a000;};AGIVertices['prototype']['getVariable']=function(_0x2f5d01,_0x15c14c){this['rpc'][_0xe3c7('0x11')](_0x2f5d01)['then'](function(_0x5c3b04){_0x15c14c(null,_0x5c3b04?_0x5c3b04[_0xe3c7('0x12')]:![]);})[_0xe3c7('0x13')](function(_0x21c953){_0x15c14c(_0x21c953);});};AGIVertices['prototype'][_0xe3c7('0x14')]=function(_0x523a8e,_0xc08f10){this[_0xe3c7('0xf')][_0xe3c7('0x15')](_0x523a8e)[_0xe3c7('0x16')](function(_0x1528f1){_0xc08f10(null,_0x1528f1?_0x1528f1[_0xe3c7('0x12')]:![]);})[_0xe3c7('0x13')](function(_0x44c3cd){_0xc08f10(_0x44c3cd);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x18')]=function(_0x18710f,_0x5ac5ce){this[_0xe3c7('0xf')][_0xe3c7('0x19')](_0x18710f)[_0xe3c7('0x16')](function(_0x33f8e9){_0x5ac5ce(null,_0x33f8e9?_0x33f8e9['name']:![]);})['catch'](function(_0x2781da){_0x5ac5ce(_0x2781da);});};AGIVertices[_0xe3c7('0x17')]['getSquareOdbc']=function(_0x234f47,_0x1aab68){this[_0xe3c7('0xf')][_0xe3c7('0x1a')](_0x234f47)['then'](function(_0x12d107){_0x1aab68(null,_0x12d107?_0x12d107[_0xe3c7('0x1b')]:![]);})[_0xe3c7('0x13')](function(_0x29b6a0){_0x1aab68(_0x29b6a0);});};AGIVertices[_0xe3c7('0x17')]['getUser']=function(_0x163b8d,_0x3c9504){this[_0xe3c7('0xf')][_0xe3c7('0x1c')](_0x163b8d)[_0xe3c7('0x16')](function(_0x18d7d8){_0x3c9504(null,_0x18d7d8?_0x18d7d8[_0xe3c7('0x12')]:![]);})[_0xe3c7('0x13')](function(_0x13c152){_0x3c9504(_0x13c152);});};AGIVertices['prototype']['getTrunk']=function(_0x1d1fd0,_0x37912f){this['rpc'][_0xe3c7('0x1d')](_0x1d1fd0)[_0xe3c7('0x16')](function(_0x38e8ff){_0x37912f(null,_0x38e8ff?_0x38e8ff[_0xe3c7('0x12')]:![]);})[_0xe3c7('0x13')](function(_0x17d934){_0x37912f(_0x17d934);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x1e')]=function(_0x2dd201,_0x15ec2d){var _0x3e7240=this;this[_0xe3c7('0xf')]['getSoundById'](_0x2dd201)[_0xe3c7('0x16')](function(_0x44f481){_0x15ec2d(null,_0x44f481?_0x3e7240[_0xe3c7('0x1f')](_0x44f481[_0xe3c7('0x20')]):![]);})[_0xe3c7('0x13')](function(_0x335b27){_0x15ec2d(_0x335b27);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x21')]=function(_0x267487,_0x2133a6){this[_0xe3c7('0xf')][_0xe3c7('0x22')](_0x267487)[_0xe3c7('0x16')](function(_0xfe558e){_0x2133a6(null,_0xfe558e?_0xfe558e:![]);})['catch'](function(_0x531753){_0x2133a6(_0x531753);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x23')]=function(_0x237bb8,_0x4a0d03,_0x4d96a6){this[_0xe3c7('0x10')][_0xe3c7('0x23')](_0x237bb8,_0x4a0d03)[_0xe3c7('0x16')](function(){_0x4d96a6(null);})[_0xe3c7('0x13')](function(_0x29c539){_0x4d96a6(_0x29c539);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x24')]=function(_0x34e909,_0xcdec27){this[_0xe3c7('0xf')]['getIntervalById'](_0x34e909)['then'](function(_0x5ba7ad){if(_0x5ba7ad){if(_0x5ba7ad[_0xe3c7('0x25')]){_0xcdec27(null,[_0x5ba7ad[_0xe3c7('0x26')]]);}else{_0xcdec27(null,_[_0xe3c7('0x27')](_0x5ba7ad[_0xe3c7('0x28')],_0xe3c7('0x26')));}}else{_0xcdec27(null,![]);}})[_0xe3c7('0x13')](function(_0x41fee5){_0xcdec27(_0x41fee5);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x1f')]=function(_0x4d4cd9){return util[_0xe3c7('0x29')](_0xe3c7('0x2a'),FILES_PATH,_0x4d4cd9);};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x2b')]=function(_0x4039d1,_0x3be7fc,_0x49c870){odbc[_0xe3c7('0x2c')](_0x4039d1,function(_0x3e3e85){if(_0x3e3e85){logger['error'](_0xe3c7('0x2d'),_0x3e3e85);_0x49c870(_0x3e3e85);}else{logger[_0xe3c7('0x2e')](_0xe3c7('0x2f'));odbc[_0xe3c7('0x30')](_0x3be7fc,function(_0x413387,_0x679f34){if(_0x413387){logger[_0xe3c7('0x2e')](_0xe3c7('0x31'),_0x3be7fc);_0x49c870(_0x413387);}else{logger['info'](_0xe3c7('0x32'),_0x3be7fc);odbc['close'](function(_0x1eec2e){if(_0x1eec2e){logger['error']('Error\x20closing\x20connection\x20to\x20odbc\x20%s',_0x1eec2e);}_0x49c870(null,_0x679f34);});}});}});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x33')]=function(_0x181104,_0x45e3a4){this[_0xe3c7('0xf')]['getSmsAccountById'](_0x181104)[_0xe3c7('0x16')](function(_0x189d69){_0x45e3a4(null,_0x189d69?_0x189d69:![]);})[_0xe3c7('0x13')](function(_0x38fd3f){_0x45e3a4(_0x38fd3f);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x34')]=function(_0x1a51bf,_0x1c9d89){this['rpc'][_0xe3c7('0x34')](_0x1a51bf)['then'](function(_0x278e0b){_0x1c9d89(null,_0x278e0b);})['catch'](function(_0x1d34ba){_0x1c9d89(_0x1d34ba);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x35')]=function(_0x3709ea,_0x204435,_0x387b94){this[_0xe3c7('0xf')]['createSquareDetailsReport']({'uniqueid':this['channel'][_0xe3c7('0x36')],'node':_0x3709ea['label'],'application':_0x3709ea[_0xe3c7('0x37')],'data':_0x204435||null,'project_name':this[_0xe3c7('0xe')][_0xe3c7('0x38')],'callerid':this[_0xe3c7('0xe')][_0xe3c7('0x39')]})[_0xe3c7('0x16')](function(_0x209524){if(_0x387b94){_0x387b94(null,_0x209524);}})[_0xe3c7('0x13')](function(_0x332f5c){if(_0x387b94){_0x387b94(_0x332f5c);}});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x3a')]=function(_0x35d9c0,_0x107c53,_0x173d6b,_0xb16a6){this[_0xe3c7('0xf')][_0xe3c7('0x3a')]({'uniqueid':this[_0xe3c7('0xe')][_0xe3c7('0x36')],'callerid':this[_0xe3c7('0xe')][_0xe3c7('0x39')],'calleridname':this[_0xe3c7('0xe')][_0xe3c7('0x3b')],'context':this[_0xe3c7('0xe')][_0xe3c7('0x3c')],'extension':this['channel']['extension'],'priority':this['channel'][_0xe3c7('0x3d')],'accountcode':this['channel'][_0xe3c7('0x3e')],'dnid':this[_0xe3c7('0xe')][_0xe3c7('0x3f')],'projectName':this[_0xe3c7('0xe')]['arg_1'],'saveName':_0x107c53,'filename':_0x35d9c0[_0xe3c7('0x40')]||_0x107c53,'savePath':_0x173d6b})['then'](function(_0x564e40){_0xb16a6(null,_0x564e40);})[_0xe3c7('0x13')](function(_0xe5cf6f){_0xb16a6(_0xe5cf6f);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x41')]=function(_0x492fba,_0x24301f,_0x3a4fa6,_0x4ad41c,_0x308954){this[_0xe3c7('0xf')][_0xe3c7('0x41')]({'uniqueid':this[_0xe3c7('0xe')][_0xe3c7('0x36')],'body':_0x492fba,'direction':_0x24301f,'providerName':_0x3a4fa6,'providerResponse':_0x4ad41c})[_0xe3c7('0x16')](function(_0x480024){if(_0x308954){_0x308954(null,_0x480024);}})[_0xe3c7('0x13')](function(_0x398fb6){if(_0x308954){_0x308954(_0x398fb6);}});};AGIVertices['prototype'][_0xe3c7('0x42')]=function(_0x4733ed,_0x1d030a){this[_0xe3c7('0xf')][_0xe3c7('0x42')]({'firstName':_['isEmpty'](_0x4733ed[_0xe3c7('0x12')])||_['isNil'](_0x4733ed[_0xe3c7('0x12')])?_0xe3c7('0x43')+Math['random']():_0x4733ed[_0xe3c7('0x12')],'lastName':_[_0xe3c7('0x44')](_0x4733ed[_0xe3c7('0x45')])||_[_0xe3c7('0x46')](_0x4733ed[_0xe3c7('0x45')])?null:_0x4733ed[_0xe3c7('0x45')],'phone':_0x4733ed[_0xe3c7('0x47')],'ListId':_0x4733ed['list_id'],'scheduledat':_0x4733ed[_0xe3c7('0x48')],'callbackUniqueid':this['channel'][_0xe3c7('0x36')],'tags':_0xe3c7('0x49'),'description':_0xe3c7('0x4a')+_0x4733ed[_0xe3c7('0x48')][_0xe3c7('0x4b')](),'priority':_0x4733ed[_0xe3c7('0x4c')]})[_0xe3c7('0x16')](function(_0xf2fe22){_0x1d030a(null,_0xf2fe22);})[_0xe3c7('0x13')](function(_0x4a9964){_0x1d030a(_0x4a9964);});};AGIVertices['prototype']['getPause']=function(_0x4e9596,_0x12b5ef){this[_0xe3c7('0xf')][_0xe3c7('0x4d')](_0x4e9596)[_0xe3c7('0x16')](function(_0xa450c2){_0x12b5ef(null,_0xa450c2?_0xa450c2[_0xe3c7('0x12')]:![]);})[_0xe3c7('0x13')](function(_0x462a97){_0x12b5ef(_0x462a97);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x4e')]=function(_0x1d1d77,_0x792652,_0x76c30b){var _0x38c0b5={'role':_0xe3c7('0x4f')};_0x38c0b5[_0x1d1d77]=this['channel']['callerid'];this[_0xe3c7('0xf')][_0xe3c7('0x4e')](_0x38c0b5,_0x792652,this[_0xe3c7('0xe')][_0xe3c7('0x36')])[_0xe3c7('0x16')](function(_0x75c75a){_0x76c30b(null,_['isNil'](_0x75c75a)?![]:!![]);})[_0xe3c7('0x13')](function(_0x8772e7){logger[_0xe3c7('0x50')](_0x8772e7);_0x76c30b(null,![]);});};AGIVertices['prototype'][_0xe3c7('0x51')]=function(_0x426eb0,_0x58e39f){var _0x43f336={'role':_0xe3c7('0x4f')};_0x43f336[_0x426eb0]=this[_0xe3c7('0xe')][_0xe3c7('0x39')];this[_0xe3c7('0xf')][_0xe3c7('0x51')](_0x43f336)[_0xe3c7('0x16')](function(_0x127a5c){_0x58e39f(null,_[_0xe3c7('0x46')](_0x127a5c)?![]:!![]);})[_0xe3c7('0x13')](function(_0x360607){logger[_0xe3c7('0x50')](_0x360607);_0x58e39f(null,![]);});};AGIVertices['prototype'][_0xe3c7('0x52')]=function(_0xc89354,_0x315ee8){var _0x5cfbf6={'role':'agent'};_0x5cfbf6[_0xc89354]=this['channel'][_0xe3c7('0x39')];this[_0xe3c7('0xf')][_0xe3c7('0x52')](_0x5cfbf6)[_0xe3c7('0x16')](function(_0x115144){_0x315ee8(null,_[_0xe3c7('0x46')](_0x115144)?![]:!![]);})[_0xe3c7('0x13')](function(_0x3eb4a1){logger[_0xe3c7('0x50')](_0x3eb4a1);_0x315ee8(null,![]);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x53')]=function(_0xf1938d,_0x49867b){var _0x56350f={'role':_0xe3c7('0x4f')};_0x56350f[_0xf1938d]=this[_0xe3c7('0xe')][_0xe3c7('0x39')];var _0x220986=_0xf1938d!=_0xe3c7('0x54')?util[_0xe3c7('0x29')](_0xe3c7('0x55'),'LOCAL',this[_0xe3c7('0xe')]['callerid']):undefined;this['rpc'][_0xe3c7('0x53')](_0x56350f,_0x220986)['then'](function(_0x30223c){_0x49867b(null,_[_0xe3c7('0x46')](_0x30223c)?![]:!![]);})[_0xe3c7('0x13')](function(_0x889acc){logger[_0xe3c7('0x50')](_0x889acc);_0x49867b(null,![]);});};AGIVertices[_0xe3c7('0x17')]['shellCommand']=function(_0x40611b,_0x1bf69b){sh['exec'](_['trim'](_0x40611b),function(_0x21cffc,_0xb514ae){var _0x2dfa2f=_0xb514ae[_0xe3c7('0x56')](/(\r\n|\n|\r)/gm,'');_0x1bf69b(null,_0x2dfa2f);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x57')]=function(_0x1246b2,_0x284cee){scripts['googleCloudTTS'](_0x1246b2[_0xe3c7('0x58')],_0x1246b2[_0xe3c7('0x59')]||_0xe3c7('0x5a'),_0x1246b2[_0xe3c7('0x5a')],_0x1246b2[_0xe3c7('0x5b')]||_0xe3c7('0x5c'),_0x1246b2[_0xe3c7('0x5d')]||_0xe3c7('0x5e'),_0x1246b2[_0xe3c7('0x5f')]||_0xe3c7('0x60'))[_0xe3c7('0x16')](function(_0x3b49c4){_0x284cee(null,_0x3b49c4);})[_0xe3c7('0x13')](function(_0x13f457){_0x284cee(_0x13f457);});};AGIVertices['prototype'][_0xe3c7('0x61')]=function(_0xc6237b,_0x33cde6){scripts[_0xe3c7('0x61')](_0xc6237b['text'],_0xc6237b[_0xe3c7('0x62')]||'en',0x1)['then'](function(_0x2fe262){_0x33cde6(null,_0x2fe262);})['catch'](function(_0x26e3e2){_0x33cde6(_0x26e3e2);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x63')]=function(_0x452078,_0x4c36ed){var _0x19f13c={'uri':_0x452078['url'],'method':_0x452078[_0xe3c7('0x64')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x452078['timeout'])==='number'&&parseInt(_0x452078[_0xe3c7('0x65')])>=0x1?parseInt(_0x452078[_0xe3c7('0x65')])*0x3e8:0x5*0x3e8};if(_['includes'](['POST',_0xe3c7('0x66')],_0x19f13c['method'][_0xe3c7('0x67')]())){try{_0x19f13c['body']=_0x452078[_0xe3c7('0xa')]?JSON[_0xe3c7('0x68')](_0x452078['rawBody']):{};}catch(_0x2fe13a){logger['error'](_0xe3c7('0x69'),_0x2fe13a);}}try{_0x19f13c[_0xe3c7('0x6a')]=_0x452078[_0xe3c7('0x9')]?JSON[_0xe3c7('0x68')](_0x452078[_0xe3c7('0x9')]):{};}catch(_0x4e7dd2){logger['error'](_0xe3c7('0x6b'),_0x4e7dd2);}if(_0x452078[_0xe3c7('0x6c')]){try{var _0x102cb1=require(_0x452078[_0xe3c7('0x6c')])[_0xe3c7('0x6d')](this,_0x19f13c);_0x19f13c[_0xe3c7('0x6e')]=Mustache[_0xe3c7('0x6f')](_0x452078[_0xe3c7('0x70')],_0x102cb1,{},['$$','$$']);if(_0x19f13c[_0xe3c7('0x6a')]){_0x19f13c[_0xe3c7('0x6a')]=JSON[_0xe3c7('0x68')](Mustache[_0xe3c7('0x6f')](JSON['stringify'](_0x19f13c[_0xe3c7('0x6a')]),_0x102cb1,{},['$$','$$']));}if(_0x19f13c['body']){_0x19f13c[_0xe3c7('0x71')]=JSON['parse'](Mustache[_0xe3c7('0x6f')](JSON[_0xe3c7('0x72')](_0x19f13c[_0xe3c7('0x71')]),_0x102cb1,{},['$$','$$']));}}catch(_0x5cfcdd){logger[_0xe3c7('0x50')](_0xe3c7('0x73'),_0x5cfcdd);}}rp(_0x19f13c)[_0xe3c7('0x16')](function(_0x4e4f96){var _0x128786={'statusCode':_0x4e4f96[_0xe3c7('0x74')]||0xc8,'statusMessage':_0x4e4f96[_0xe3c7('0x75')]||'OK','headers':_0x4e4f96[_0xe3c7('0x6a')]||{},'body':_0x4e4f96[_0xe3c7('0x71')]||{}};_0x4c36ed(null,_0x128786);})[_0xe3c7('0x13')](function(_0x25cb1d){var _0x3e8038={'statusCode':_0x25cb1d[_0xe3c7('0x74')]||0x1f4,'statusMessage':_0x25cb1d[_0xe3c7('0x76')]||_0xe3c7('0x77'),'headers':_0x25cb1d['options'][_0xe3c7('0x6a')]||{},'body':_0x25cb1d[_0xe3c7('0x78')][_0xe3c7('0x71')]||{}};_0x4c36ed(null,_0x3e8038);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x79')]=function(_0x30110f,_0x315926){scripts['googleDialogflow'](this[_0xe3c7('0xe')][_0xe3c7('0x36')],_0x30110f[_0xe3c7('0x7a')],_0x30110f[_0xe3c7('0x5a')],_0x30110f[_0xe3c7('0x7b')]||'en')[_0xe3c7('0x16')](function(_0xcbd7a0){_0x315926(null,_0xcbd7a0);})[_0xe3c7('0x13')](function(_0x36424b){_0x315926(_0x36424b);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x7c')]=function(_0x5b38be,_0x422ffa){scripts[_0xe3c7('0x7c')](this[_0xe3c7('0xe')][_0xe3c7('0x36')],_0x5b38be[_0xe3c7('0x7d')],_0x5b38be[_0xe3c7('0x7e')],_0x5b38be[_0xe3c7('0x7f')],_0x5b38be[_0xe3c7('0x5a')],_0x5b38be['dialogflowV2_language']||'en')[_0xe3c7('0x16')](function(_0x5797b1){_0x422ffa(null,_0x5797b1);})['catch'](function(_0x566544){_0x422ffa(_0x566544);});};AGIVertices['prototype'][_0xe3c7('0x80')]=function(_0x1e6558,_0x4a48d6){scripts[_0xe3c7('0x80')](this['channel'],_0x1e6558)['then'](function(_0x2041d5){_0x4a48d6(null,_0x2041d5);})[_0xe3c7('0x13')](function(_0x29dada){_0x4a48d6(_0x29dada);});};AGIVertices[_0xe3c7('0x17')]['ispeechTTS']=function(_0x3a05dd,_0x3888ff){scripts['ispeechTTS'](_0x3a05dd['key'],_0x3a05dd[_0xe3c7('0x5a')],_0x3a05dd[_0xe3c7('0x81')]||'en-US',_0x3a05dd[_0xe3c7('0x82')])[_0xe3c7('0x16')](function(_0x509897){_0x3888ff(null,_0x509897);})[_0xe3c7('0x13')](function(_0x28572b){_0x3888ff(_0x28572b);});};AGIVertices[_0xe3c7('0x17')]['ispeechASR']=function(_0x15d35b,_0x45d757,_0x205c84){scripts[_0xe3c7('0x83')](_0x45d757,_0x15d35b[_0xe3c7('0x7a')],_0x15d35b['ispeech_asr_language']||_0xe3c7('0x5c'),this[_0xe3c7('0x84')](_0x15d35b[_0xe3c7('0x85')])?_0x15d35b[_0xe3c7('0x85')]:undefined)[_0xe3c7('0x16')](function(_0x1ab6f8){_0x205c84(null,_0x1ab6f8);})['catch'](function(_0x20a0ff){_0x205c84(_0x20a0ff);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x86')]=function(_0x2410bf,_0x32750b){scripts[_0xe3c7('0x86')](_0x2410bf[_0xe3c7('0x87')],_0x2410bf[_0xe3c7('0x88')],_0x2410bf[_0xe3c7('0x89')],_0x2410bf[_0xe3c7('0x8a')]||'Amy',_0x2410bf['text'],_0x2410bf[_0xe3c7('0x8b')]||_0xe3c7('0x5a'))[_0xe3c7('0x16')](function(_0x39dd5c){_0x32750b(null,_0x39dd5c);})['catch'](function(_0xed8e6e){_0x32750b(_0xed8e6e);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x8c')]=function(_0x33b347,_0x41033f){scripts[_0xe3c7('0x8c')](this['channel'][_0xe3c7('0x36')],_0x33b347[_0xe3c7('0x87')],_0x33b347[_0xe3c7('0x88')],_0x33b347['aws_lex_region'],_0x33b347[_0xe3c7('0x5a')],_0x33b347[_0xe3c7('0x8d')])[_0xe3c7('0x16')](function(_0x4e5eac){_0x41033f(null,_0x4e5eac);})[_0xe3c7('0x13')](function(_0x26a688){_0x41033f(_0x26a688);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x8e')]=function(_0x37be1d,_0x57ee2d,_0x5ddb73){scripts[_0xe3c7('0x8e')](_0x57ee2d,_0x37be1d[_0xe3c7('0x7a')],_0x37be1d[_0xe3c7('0x8f')]||_0xe3c7('0x5c'))[_0xe3c7('0x16')](function(_0x482b24){_0x5ddb73(null,_0x482b24);})[_0xe3c7('0x13')](function(_0x535784){_0x5ddb73(_0x535784);});};AGIVertices[_0xe3c7('0x17')]['tildeASR']=function(_0x289bfb,_0xbd6006,_0x461252){scripts[_0xe3c7('0x90')](_0xbd6006,_0x289bfb[_0xe3c7('0x91')],_0x289bfb[_0xe3c7('0x92')],_0x289bfb[_0xe3c7('0x6e')])[_0xe3c7('0x16')](function(_0x2de92e){_0x461252(null,_0x2de92e);})[_0xe3c7('0x13')](function(_0x4c090f){_0x461252(_0x4c090f);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x93')]=function(_0x5c4d68){var _0x2fccd5=_[_0xe3c7('0x94')](verticesWithRetry,_0x5c4d68[_0xe3c7('0x37')])?_0x5c4d68:_[_0xe3c7('0x95')](_0x5c4d68);for(var _0x40eeb1 in _0x2fccd5){if(_0x2fccd5[_0xe3c7('0x96')](_0x40eeb1)){if(_0x2fccd5[_0x40eeb1]&&_[_0xe3c7('0x97')](_0x2fccd5[_0x40eeb1])){if(_[_0xe3c7('0x94')](recursiveMapAttributes,_0x40eeb1)){_0x2fccd5[_0x40eeb1]=this[_0xe3c7('0x98')](_0x2fccd5[_0x40eeb1]);}else{_0x2fccd5[_0x40eeb1]=this['replaceAllVariables'](_0x2fccd5[_0x40eeb1]);}}}}return _0x2fccd5;};AGIVertices[_0xe3c7('0x17')]['recursiveNodeIndex']=function(_0x11ea2c){for(var _0x4a0576 in _0x11ea2c){if(_0x11ea2c['hasOwnProperty'](_0x4a0576)){if(_['isPlainObject'](_0x11ea2c[_0x4a0576])){this[_0xe3c7('0x99')](_0x11ea2c[_0x4a0576]);}else if(_[_0xe3c7('0x9a')](_0x11ea2c[_0x4a0576])){for(var _0x378778=0x0;_0x378778<_0x11ea2c[_0x4a0576][_0xe3c7('0x9b')];_0x378778++){this['recursiveNodeIndex'](_0x11ea2c[_0x4a0576][_0x378778]);}}else if(_[_0xe3c7('0x97')](_0x11ea2c[_0x4a0576])){_0x11ea2c[_0x4a0576]=this['replaceAllVariables'](_0x11ea2c[_0x4a0576]);}}}};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x9c')]=function(_0x5f3033,_0x3053ac){for(var _0x1a9f82 in _0x5f3033){if(_0x5f3033[_0xe3c7('0x96')](_0x1a9f82)){if(_[_0xe3c7('0x9d')](_0x5f3033[_0x1a9f82])){if(!_['isEmpty'](_0x5f3033[_0x1a9f82])){this[_0xe3c7('0x9c')](_0x5f3033[_0x1a9f82],util[_0xe3c7('0x29')](_0xe3c7('0x9e'),_0x3053ac,_0x1a9f82));}}else if(_[_0xe3c7('0x9a')](_0x5f3033[_0x1a9f82])){for(var _0x3542a2=0x0;_0x3542a2<_0x5f3033[_0x1a9f82][_0xe3c7('0x9b')];_0x3542a2++){this['saveRestApiResult'](_0x5f3033[_0x1a9f82][_0x3542a2],util[_0xe3c7('0x29')](_0xe3c7('0x9e'),_0x3053ac,_0x1a9f82+'['+_0x3542a2+']'));}}else{if(!_[_0xe3c7('0x46')](_0x5f3033[_0x1a9f82])){this[_0xe3c7('0xe')][_0xe3c7('0x9f')](util[_0xe3c7('0x29')](_0xe3c7('0x9e'),_0x3053ac,_0x1a9f82),_0x5f3033[_0x1a9f82]);}}}}};AGIVertices['prototype'][_0xe3c7('0x98')]=function(_0xaaf573){try{var _0x4d8d57=JSON['parse'](_0xaaf573);this[_0xe3c7('0x99')](_0x4d8d57);return JSON[_0xe3c7('0x72')](_0x4d8d57);}catch(_0x20de87){return this[_0xe3c7('0xa0')](_0xaaf573);}};AGIVertices[_0xe3c7('0x17')]['replaceAllVariables']=function(_0x4880d7){var _0x3aa8e5=_0x4880d7[_0xe3c7('0xa1')]('{');for(var _0x5a2c14=0x1;_0x5a2c14<_0x3aa8e5['length'];_0x5a2c14+=0x1){var _0x413879=_0x3aa8e5[_0x5a2c14]['split']('}');if(_0x413879[_0xe3c7('0x9b')]>0x1){_0x4880d7=_0x4880d7[_0xe3c7('0xa2')]('{'+_0x413879[0x0]+'}',this['channel'][_0xe3c7('0xa3')](_0x413879[0x0])[_0xe3c7('0xa4')]||_0x413879[0x0]);}}if(_0x3aa8e5[_0xe3c7('0x9b')]===0x1){return _0x4880d7['toString']();}return this[_0xe3c7('0xa0')](_0x4880d7);};AGIVertices[_0xe3c7('0x17')]['getAndSetVariable']=function(_0x4da4ba,_0x3bfcfd){var _0x52d0f3=this['channel']['getVariable'](_0x4da4ba);if(_0x52d0f3[_0xe3c7('0xa5')]===-0x1){return _0x52d0f3;}logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0xa6'),_0x3bfcfd,_0x52d0f3['extra']));return this[_0xe3c7('0xe')][_0xe3c7('0x9f')](_0x3bfcfd,_0x52d0f3['extra']);};AGIVertices['prototype'][_0xe3c7('0x84')]=function(_0x3fb05a){return _0x3fb05a&&_0x3fb05a!=='0'&&_0x3fb05a!=='-1'&&_0x3fb05a!=='';};AGIVertices[_0xe3c7('0x17')]['maxRetry']=function(_0x2027eb){this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x2027eb,'-');_0x2027eb['retry']=_0x2027eb[_0xe3c7('0xa7')];return{'code':0xc8,'result':'-'};};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0xa8')]=function(_0x2dfb03){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0xa9'),_0x2dfb03[_0xe3c7('0xaa')]));if(!this['isConfigured'](_0x2dfb03[_0xe3c7('0x5a')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xac'));}var _0x539df9='\x22'+_0x2dfb03[_0xe3c7('0x5a')]+'\x22';if(this[_0xe3c7('0x84')](_0x2dfb03[_0xe3c7('0x78')])){_0x539df9+=','+_0x2dfb03['options'];}var _0x1df6cf=this['channel'][_0xe3c7('0xad')](_0xe3c7('0xae'),_0x539df9);if(_0x1df6cf[_0xe3c7('0xa5')]===-0x1){return _0x1df6cf;}return this['channel'][_0xe3c7('0xab')](util['format'](_0xe3c7('0xaf'),_0x539df9));};AGIVertices['prototype'][_0xe3c7('0xb0')]=function(_0x29f39f){logger['info'](util['format'](_0xe3c7('0xb1'),_0x29f39f[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x29f39f['grammar'])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xb2'));}var _0x50c6a2=_0x29f39f['grammar'];if(this[_0xe3c7('0x84')](_0x29f39f[_0xe3c7('0x78')])){_0x50c6a2+=','+_0x29f39f[_0xe3c7('0x78')];}var _0x15554f=this[_0xe3c7('0xe')][_0xe3c7('0xad')]('MRCPRecog',_0x50c6a2);if(_0x15554f[_0xe3c7('0xa5')]===-0x1){return _0x15554f;}var _0x3617e6=this[_0xe3c7('0xb3')](_0xe3c7('0xb4'),'MRCP_RECOG_CONFIDENCE');if(_0x3617e6[_0xe3c7('0xa5')]===-0x1){return _0x3617e6;}var _0xb0cafa=this['getAndSetVariable'](_0xe3c7('0xb5'),'MRCP_RECOG_TRANSCRIPT');if(_0xb0cafa[_0xe3c7('0xa5')]===-0x1){return _0xb0cafa;}var _0x1088fe=this[_0xe3c7('0xb3')](_0xe3c7('0xb6'),_0xe3c7('0xb7'));if(_0x1088fe[_0xe3c7('0xa5')]===-0x1){return _0x1088fe;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0xb8'),_0x50c6a2));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0xb9')]=function(_0x2218e1){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0xba'),_0x2218e1[_0xe3c7('0xaa')]));return this[_0xe3c7('0xe')][_0xe3c7('0xb9')]([_0x2218e1['command'],_0x2218e1['args']]);};AGIVertices['prototype'][_0xe3c7('0xbb')]=function(_0x320f33){logger['info'](util[_0xe3c7('0x29')](_0xe3c7('0xbc'),_0x320f33[_0xe3c7('0xaa')]));if(this['isConfigured'](_0x320f33['timeout'])){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0xbd'),_0x320f33['timeout']));var _0x5f24fd=this[_0xe3c7('0xe')][_0xe3c7('0xbe')](_0x320f33[_0xe3c7('0x65')]);if(_0x5f24fd[_0xe3c7('0xa5')]===-0x1){return _0x5f24fd;}}return this['channel']['answer']();};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x49')]=function(_0x1650e7){logger[_0xe3c7('0x2e')](util['format']('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0x1650e7[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x1650e7['list_id'])){return this['channel'][_0xe3c7('0x50')](_0x1650e7,_0xe3c7('0xbf'));}_0x1650e7[_0xe3c7('0x48')]=moment();if(this[_0xe3c7('0x84')](_0x1650e7['delay'])){_0x1650e7[_0xe3c7('0x48')]=moment()['add'](_0x1650e7[_0xe3c7('0xc0')],_0xe3c7('0xc1'));}if(!this[_0xe3c7('0x84')](_0x1650e7['callback_priority'])){_0x1650e7[_0xe3c7('0x4c')]=0x2;}this[_0xe3c7('0x42')]['sync'](this,_0x1650e7);return this[_0xe3c7('0xe')]['noop'](util['format']('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0x1650e7[_0xe3c7('0x47')],_0x1650e7[_0xe3c7('0xc2')],_0x1650e7[_0xe3c7('0x48')]));};AGIVertices['prototype'][_0xe3c7('0xc3')]=function(_0x4058a6){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0xc4'),_0x4058a6[_0xe3c7('0xaa')]));var _0x42e777=this[_0xe3c7('0xe')]['exec'](_0x4058a6['application'],_0x4058a6['options']);if(_0x42e777['result']===-0x1){return _0x42e777;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('Executed\x20command\x20%s\x20%s',_0x4058a6[_0xe3c7('0xc5')],_0x4058a6[_0xe3c7('0x78')]));};AGIVertices['prototype'][_0xe3c7('0xc6')]=function(_0x385a0b){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0xc7'),_0x385a0b[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x385a0b[_0xe3c7('0x5a')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xac'));}var _0x2b1ede='\x22'+_0x385a0b[_0xe3c7('0x5a')]+'\x22';if(this[_0xe3c7('0x84')](_0x385a0b[_0xe3c7('0x78')])){_0x2b1ede+=','+_0x385a0b['options'];}var _0x3cfe8c=this[_0xe3c7('0xe')][_0xe3c7('0xad')]('MRCPSynth',_0x2b1ede);if(_0x3cfe8c[_0xe3c7('0xa5')]===-0x1){return _0x3cfe8c;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format'](_0xe3c7('0xaf'),_0x2b1ede));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0xc8')]=function(_0x528132){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0xc9'),_0x528132['label']));if(!this['isConfigured'](_0x528132['text'])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xac'));}var _0x5caebf='\x22'+_0x528132[_0xe3c7('0x5a')]+'\x22';if(this[_0xe3c7('0x84')](_0x528132['options'])){_0x5caebf+=','+_0x528132[_0xe3c7('0x78')];}var _0x21452b=this['channel'][_0xe3c7('0xad')](_0xe3c7('0xae'),_0x5caebf);if(_0x21452b['result']===-0x1){return _0x21452b;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x5caebf));};AGIVertices['prototype']['lumenvoxasr']=function(_0x1201d5){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0xca'),_0x1201d5[_0xe3c7('0xaa')]));if(!this['isConfigured'](_0x1201d5['grammar'])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xb2'));}var _0x28ba13=_0x1201d5[_0xe3c7('0xcb')];if(this[_0xe3c7('0x84')](_0x1201d5['options'])){_0x28ba13+=','+_0x1201d5['options'];}var _0x4b3d51=this[_0xe3c7('0xe')][_0xe3c7('0xad')](_0xe3c7('0xcc'),_0x28ba13);if(_0x4b3d51[_0xe3c7('0xa5')]===-0x1){return _0x4b3d51;}var _0x35b6b5=this[_0xe3c7('0xb3')](_0xe3c7('0xb4'),_0xe3c7('0xcd'));if(_0x35b6b5[_0xe3c7('0xa5')]===-0x1){return _0x35b6b5;}var _0x572017=this[_0xe3c7('0xb3')](_0xe3c7('0xb5'),_0xe3c7('0xce'));if(_0x572017[_0xe3c7('0xa5')]===-0x1){return _0x572017;}var _0x197262=this['getAndSetVariable'](_0xe3c7('0xb6'),'LUMENVOX_ASR_INSTANCE');if(_0x197262['result']===-0x1){return _0x197262;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0xb8'),_0x28ba13));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0xcf')]=function(_0x3eba0e){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0xd0'),_0x3eba0e[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x3eba0e[_0xe3c7('0xcb')])){return this['channel']['noop'](_0xe3c7('0xb2'));}var _0x5b4688=_0x3eba0e[_0xe3c7('0xcb')];if(this[_0xe3c7('0x84')](_0x3eba0e['options'])){_0x5b4688+=','+_0x3eba0e[_0xe3c7('0x78')];}var _0xc345c1=this[_0xe3c7('0xe')][_0xe3c7('0xad')](_0xe3c7('0xcc'),_0x5b4688);if(_0xc345c1['result']===-0x1){return _0xc345c1;}var _0x30cf83=this['getAndSetVariable']('RECOG_CONFIDENCE()',_0xe3c7('0xd1'));if(_0x30cf83[_0xe3c7('0xa5')]===-0x1){return _0x30cf83;}var _0x20a03b=this[_0xe3c7('0xb3')](_0xe3c7('0xb5'),'SESTEK_ASR_TRANSCRIPT');if(_0x20a03b[_0xe3c7('0xa5')]===-0x1){return _0x20a03b;}var _0x389983=this['getAndSetVariable'](_0xe3c7('0xb6'),'SESTEK_ASR_INSTANCE');if(_0x389983['result']===-0x1){return _0x389983;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0xb8'),_0x5b4688));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0xd2')]=function(_0x17e710){logger['info'](util[_0xe3c7('0x29')](_0xe3c7('0xd3'),_0x17e710['label']));if(!this[_0xe3c7('0x84')](_0x17e710[_0xe3c7('0xd4')])){return this['channel']['error'](_0x17e710,_0xe3c7('0xd5'));}var _0x32b5c0=this['getSquareOdbc'][_0xe3c7('0x6d')](this,_0x17e710[_0xe3c7('0xd4')]);if(!_0x32b5c0){return this['channel'][_0xe3c7('0x50')](_0x17e710,_0xe3c7('0xd6'));}if(!this[_0xe3c7('0x84')](_0x17e710[_0xe3c7('0x30')])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x17e710,_0xe3c7('0xd7'));}var _0x1f87e5=_0x17e710[_0xe3c7('0x30')][_0xe3c7('0x56')](/(\r\n|\n|\r)/gm,'\x20');this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format']('query:\x20%s',_0x1f87e5));var _0x17df31=this[_0xe3c7('0x2b')]['sync'](this,_0x32b5c0,_0x1f87e5);this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x17e710,_0x1f87e5);if(!this['isConfigured'](_0x17e710['variable_id'])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xd8'));}var _0x9c24d7=this[_0xe3c7('0xa3')][_0xe3c7('0x6d')](this,_0x17e710[_0xe3c7('0xd9')]);if(!_0x9c24d7){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x17e710,_0xe3c7('0xda'));}var _0x49ed16=this;_0x17df31[_0xe3c7('0xdb')](function(_0x398562,_0x2bd2f9){Object['keys'](_0x398562)[_0xe3c7('0xdb')](function(_0x27fd81){_0x49ed16[_0xe3c7('0xe')][_0xe3c7('0x9f')](util[_0xe3c7('0x29')](_0xe3c7('0xdc'),_0x9c24d7,_0x2bd2f9,_0x27fd81),_0x398562[_0x27fd81]);});});this[_0xe3c7('0xe')]['setVariable'](util['format'](_0xe3c7('0xdd'),_0x9c24d7),_0x17df31[_0xe3c7('0x9b')]);return this['channel']['noop'](util[_0xe3c7('0x29')](_0xe3c7('0xde'),_0x9c24d7));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0xdf')]=function(_0x295cd0){logger[_0xe3c7('0xe0')](util[_0xe3c7('0x29')](_0xe3c7('0xe1'),_0x295cd0[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x295cd0['sip_id'])){return this['channel'][_0xe3c7('0x50')](_0x295cd0,'no\x20user\x20selected');}var _0xda1f58=this[_0xe3c7('0xe2')]['sync'](this,_0x295cd0[_0xe3c7('0xe3')]);if(!_0xda1f58){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x295cd0,'no\x20user\x20found');}var _0x5f42ea=this[_0xe3c7('0xe')][_0xe3c7('0xad')](_0xe3c7('0xe4'),[util[_0xe3c7('0x29')](_0xe3c7('0xe5'),_0xda1f58),_0x295cd0[_0xe3c7('0x65')],_0x295cd0[_0xe3c7('0xe6')],_0x295cd0['url']]);if(_0x5f42ea['result']===-0x1){return _0x5f42ea;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format'](_0xe3c7('0xe7'),'DIAL'));};AGIVertices['prototype'][_0xe3c7('0xe8')]=function(_0x15a831){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0xe9'),_0x15a831[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x15a831['key'])){return this['channel']['noop'](_0xe3c7('0xea'));}if(!this[_0xe3c7('0x84')](_0x15a831[_0xe3c7('0x5a')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')]('no\x20text\x20configured');}this[_0xe3c7('0xe')][_0xe3c7('0xeb')]=!![];this[_0xe3c7('0x35')](_0x15a831);this['createSquareMessage'](_0x15a831['text'],'in','','');this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0xec'),_0x15a831[_0xe3c7('0x5a')]));var _0x2ead3e=this['googleDialogflow'][_0xe3c7('0x6d')](this,_0x15a831);if(_0x2ead3e){for(var _0x547582 in _0x2ead3e){if(_0x2ead3e[_0xe3c7('0x96')](_0x547582)){this['channel']['setVariable'](util[_0xe3c7('0x29')](_0xe3c7('0xed'),_0x547582[_0xe3c7('0x67')]()),_0x2ead3e[_0x547582]);}}this['createSquareMessage'](_0x2ead3e['speech'],_0xe3c7('0xee'),_0xe3c7('0xe8'),'');return this['channel'][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('Dialogflow\x20Result\x20%s',_0x2ead3e[_0xe3c7('0xef')]));}return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x15a831,_0xe3c7('0xf0'));};AGIVertices[_0xe3c7('0x17')]['dialogflowV2']=function(_0x1fd05a){logger['info'](util[_0xe3c7('0x29')](_0xe3c7('0xf1'),_0x1fd05a[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x1fd05a[_0xe3c7('0x7d')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xf2'));}if(!this[_0xe3c7('0x84')](_0x1fd05a[_0xe3c7('0x7e')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xf3'));}if(!this[_0xe3c7('0x84')](_0x1fd05a[_0xe3c7('0x7f')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')]('no\x20private_key\x20configured');}if(!this['isConfigured'](_0x1fd05a[_0xe3c7('0xf4')])){return this['channel'][_0xe3c7('0xab')](_0xe3c7('0xf5'));}if(!this[_0xe3c7('0x84')](_0x1fd05a[_0xe3c7('0x5a')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xac'));}this['channel'][_0xe3c7('0xeb')]=!![];this[_0xe3c7('0x35')](_0x1fd05a);this[_0xe3c7('0x41')](_0x1fd05a['text'],'in','','');this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0xf6'),_0x1fd05a[_0xe3c7('0x5a')]));var _0x2773c2=this['googleDialogflowV2']['sync'](this,_0x1fd05a);if(_0x2773c2){for(var _0x55f0f7 in _0x2773c2){if(_0x2773c2[_0xe3c7('0x96')](_0x55f0f7)){if(_0x55f0f7!=='providerResponse'){this['channel'][_0xe3c7('0x9f')](util['format']('DIALOGFLOW_%s',_0x55f0f7[_0xe3c7('0x67')]()),_0x2773c2[_0x55f0f7]);}}}this[_0xe3c7('0x41')](_0x2773c2[_0xe3c7('0xef')],_0xe3c7('0xee'),_0xe3c7('0xf7'),_0x2773c2[_0xe3c7('0xf8')]);return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format'](_0xe3c7('0xf9'),_0x2773c2[_0xe3c7('0xef')]));}return this['channel'][_0xe3c7('0x50')](_0x1fd05a,_0xe3c7('0xfa'));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0xfb')]=function(_0x29202f){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0xfc'),_0x29202f[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x29202f[_0xe3c7('0xfd')])){return this[_0xe3c7('0xe')]['noop'](_0xe3c7('0xfe'));}if(!this['isConfigured'](_0x29202f[_0xe3c7('0xff')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')]('no\x20username\x20configured');}if(!this[_0xe3c7('0x84')](_0x29202f[_0xe3c7('0x100')])){return this[_0xe3c7('0xe')]['noop'](_0xe3c7('0x101'));}if(!this[_0xe3c7('0x84')](_0x29202f['ndassistant_url'])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xac'));}this[_0xe3c7('0xe')][_0xe3c7('0xeb')]=!![];this[_0xe3c7('0x35')](_0x29202f);this[_0xe3c7('0x41')](_0x29202f[_0xe3c7('0x5a')],'in','','');this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('Trying\x20SestekNDA:\x20%s',_0x29202f[_0xe3c7('0x5a')]));var _0x52a962=this[_0xe3c7('0x80')][_0xe3c7('0x6d')](this,_0x29202f);if(_0x52a962){for(var _0x109e35 in _0x52a962){if(_0x52a962[_0xe3c7('0x96')](_0x109e35)){this[_0xe3c7('0xe')][_0xe3c7('0x9f')](util[_0xe3c7('0x29')](_0xe3c7('0x102'),_0x109e35['toUpperCase']()),_0x52a962[_0x109e35]);}}this[_0xe3c7('0x41')](_0x52a962[_0xe3c7('0xef')],_0xe3c7('0xee'),'sesteknda','');if(_0x52a962[_0xe3c7('0x103')]){this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('Sestek\x20NDA\x20%s\x20file\x20created',_0x52a962[_0xe3c7('0x103')]));var _0x3dc362=this[_0xe3c7('0xe')]['streamFile'](_0x52a962[_0xe3c7('0x103')]);try{fs[_0xe3c7('0x104')](_0x52a962[_0xe3c7('0x103')]+_0xe3c7('0x105'));}catch(_0x417ec7){logger[_0xe3c7('0x50')](_0x417ec7);}return _0x3dc362;}else{return this[_0xe3c7('0xe')]['noop'](util[_0xe3c7('0x29')](_0xe3c7('0x106'),_0x52a962['speech']));}}return this['channel'][_0xe3c7('0x50')](_0x29202f,'SestekNDA\x20is\x20unreachable');};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x107')]=function(_0x271c6c){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')]('Enter\x20in\x20END\x20(%s)\x20block',_0x271c6c['label']));return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0x107'));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x108')]=function(_0x3d87ef){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x109'),_0x3d87ef[_0xe3c7('0xaa')]));var _0x2036fe='';if(_0x3d87ef[_0xe3c7('0x10a')]){if(!this[_0xe3c7('0x84')](_0x3d87ef[_0xe3c7('0x10a')])){return this['channel'][_0xe3c7('0x50')](_0x3d87ef,_0xe3c7('0x10b'));}else{var _0x2ef411=parseInt(_0x3d87ef[_0xe3c7('0x10a')],0xa);if(isNaN(_0x2ef411)){_0x2036fe=_0x3d87ef[_0xe3c7('0x10a')];}else{_0x2036fe=this['getTrunk'][_0xe3c7('0x6d')](this,_0x3d87ef[_0xe3c7('0x10a')]);if(!_0x2036fe){return this[_0xe3c7('0xe')]['error'](_0x3d87ef,_0xe3c7('0x10c'));}}}}else if(_0x3d87ef[_0xe3c7('0x10d')]){_0x2036fe=_0x3d87ef[_0xe3c7('0x10d')];}else{return this['channel']['error'](_0x3d87ef,_0xe3c7('0x10b'));}var _0x18549c=this[_0xe3c7('0xe')][_0xe3c7('0xad')]('DIAL',[util[_0xe3c7('0x29')](_0xe3c7('0x10e'),_0x2036fe,_0x3d87ef[_0xe3c7('0x47')]),_0x3d87ef[_0xe3c7('0x65')],_0x3d87ef[_0xe3c7('0xe6')],_0x3d87ef[_0xe3c7('0x70')]]);if(_0x18549c[_0xe3c7('0xa5')]===-0x1){return _0x18549c;}return this['channel'][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0xe7'),_0xe3c7('0xe4')));};AGIVertices[_0xe3c7('0x17')]['finally']=function(_0x407191){logger['info'](util['format'](_0xe3c7('0x10f'),_0x407191[_0xe3c7('0xaa')]));return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0x110'));};AGIVertices['prototype']['getdigits']=function(_0x1b6a90){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x111'),_0x1b6a90[_0xe3c7('0xaa')]));if(_0x1b6a90['retry']===0x0){return this[_0xe3c7('0xa7')](_0x1b6a90);}_0x1b6a90[_0xe3c7('0x112')]-=0x1;if(!this['isConfigured'](_0x1b6a90[_0xe3c7('0x113')])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x1b6a90,'no\x20file\x20audio\x20selected');}var _0x3e23ec=this[_0xe3c7('0x1e')]['sync'](this,_0x1b6a90['file_id']);if(!_0x3e23ec){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x1b6a90,'no\x20file\x20audio\x20found');}if(!this[_0xe3c7('0x84')](_0x1b6a90[_0xe3c7('0xd9')])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0xe3c7('0xd8'));}var _0x3333b7=this[_0xe3c7('0xe')][_0xe3c7('0x114')](_0x3e23ec,_0x1b6a90[_0xe3c7('0x115')],_0x1b6a90['maxdigit']);var _0x4832fa=_0x3333b7['result']?_0x3333b7[_0xe3c7('0xa5')][_0xe3c7('0x4b')]():'';logger[_0xe3c7('0x2e')](_0xe3c7('0x116'),JSON[_0xe3c7('0x72')](_0x3333b7));if(_0x3333b7[_0xe3c7('0xa5')]===-0x1){this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x1b6a90,_0x4832fa);return _0x3333b7;}else if(_0x3333b7[_0xe3c7('0xa4')]==='timeout'){_0x3333b7[_0xe3c7('0xa5')]=_0x4832fa[_0xe3c7('0x9b')]>=parseInt(_0x1b6a90[_0xe3c7('0x117')])?'x':'i';}else{_0x3333b7[_0xe3c7('0xa5')]=_0x4832fa[_0xe3c7('0x9b')]>=parseInt(_0x1b6a90[_0xe3c7('0x117')])&&_0x4832fa[_0xe3c7('0x9b')]<=parseInt(_0x1b6a90['maxdigit'])?'x':'i';}var _0x416b0e=this[_0xe3c7('0xa3')][_0xe3c7('0x6d')](this,_0x1b6a90[_0xe3c7('0xd9')]);if(!_0x416b0e){return this[_0xe3c7('0xe')]['error'](_0x1b6a90,_0xe3c7('0xda'));}this[_0xe3c7('0xe')][_0xe3c7('0x9f')](_0x416b0e,_0x4832fa);if(this[_0xe3c7('0x84')](_0x1b6a90['hiddendigitsnum'])){var _0x5e8bcd=parseInt(_0x1b6a90[_0xe3c7('0x118')],0xa);var _0x1dd51e=rs['generate']({'charset':'*','length':_0x5e8bcd});var _0x460ab4=_0x4832fa[_0xe3c7('0x9b')];if(_0x460ab4>0x0){if(_0x460ab4>_0x5e8bcd){this[_0xe3c7('0x35')]['sync'](this,_0x1b6a90,_0x1b6a90['hiddendigitspos']===_0xe3c7('0x119')?_0x1dd51e+_0x4832fa[_0xe3c7('0x11a')](_0x5e8bcd):_0x4832fa['substr'](0x0,_0x460ab4-_0x5e8bcd)+_0x1dd51e);}else{this[_0xe3c7('0x35')]['sync'](this,_0x1b6a90,rs[_0xe3c7('0x11b')]({'charset':'*','length':_0x460ab4}));}}else{this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x1b6a90,'');}}else{this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x1b6a90,_0x4832fa);}return _0x3333b7;};AGIVertices['prototype'][_0xe3c7('0xd')]=function(_0x1719bb){logger['info'](util[_0xe3c7('0x29')]('Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block',_0x1719bb[_0xe3c7('0xaa')]));return this['getdigits'](_0x1719bb);};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x11c')]=function(_0x49f2c2){logger[_0xe3c7('0x2e')](util['format']('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x49f2c2[_0xe3c7('0xaa')]));this['createSquareDetailsReport']['sync'](this,_0x49f2c2,_0x49f2c2[_0xe3c7('0x11d')]);return this['channel'][_0xe3c7('0xab')](util['format'](_0xe3c7('0x11e'),_0x49f2c2[_0xe3c7('0x11d')]));};AGIVertices[_0xe3c7('0x17')]['awspolly']=function(_0x218341){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')]('[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block',_0x218341['label']));if(!this['isConfigured'](_0x218341['aws_access_key_id'])||!this[_0xe3c7('0x84')](_0x218341['aws_secret_access_key'])){return this[_0xe3c7('0xe')]['noop'](_0xe3c7('0x11f'));}if(!this[_0xe3c7('0x84')](_0x218341[_0xe3c7('0x5a')])){return this[_0xe3c7('0xe')]['noop'](_0xe3c7('0xac'));}this[_0xe3c7('0xe')]['noop'](util['format'](_0xe3c7('0x120'),_0x218341[_0xe3c7('0x5a')]));var _0x1da1ef=this[_0xe3c7('0x86')][_0xe3c7('0x6d')](this,_0x218341);if(_0x1da1ef){this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('aws\x20Polly\x20%s\x20file\x20created',_0x1da1ef));var _0x2d6fd3=this[_0xe3c7('0xe')]['streamFile'](_0x1da1ef);try{fs['unlink'](_0x1da1ef+_0xe3c7('0x105'));}catch(_0x5139e0){logger[_0xe3c7('0x50')](_0x5139e0);}return _0x2d6fd3;}return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x218341,_0xe3c7('0x121'));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x122')]=function(_0x5598fa){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x123'),_0x5598fa[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x5598fa[_0xe3c7('0x87')])||!this[_0xe3c7('0x84')](_0x5598fa[_0xe3c7('0x88')])){return this['channel'][_0xe3c7('0xab')](_0xe3c7('0x11f'));}if(!this[_0xe3c7('0x84')](_0x5598fa[_0xe3c7('0x8d')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0x124'));}if(!this[_0xe3c7('0x84')](_0x5598fa[_0xe3c7('0x5a')])){return this['channel'][_0xe3c7('0xab')]('no\x20text\x20configured');}this[_0xe3c7('0xe')][_0xe3c7('0xeb')]=!![];this[_0xe3c7('0x35')](_0x5598fa);this[_0xe3c7('0x41')](_0x5598fa[_0xe3c7('0x5a')],'in','','');this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format'](_0xe3c7('0x125'),_0x5598fa[_0xe3c7('0x5a')]));var _0x35db2c=this[_0xe3c7('0x8c')][_0xe3c7('0x6d')](this,_0x5598fa);if(_0x35db2c){for(var _0x36e426 in _0x35db2c){if(_0x35db2c[_0xe3c7('0x96')](_0x36e426)&&_['isString'](_0x35db2c[_0x36e426])){this[_0xe3c7('0xe')][_0xe3c7('0x9f')](util['format']('AWS_LEX_%s',_0x36e426[_0xe3c7('0x67')]()),_0x35db2c[_0x36e426]);}}if(_['isNil'](_0x35db2c[_0xe3c7('0x76')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0x126'));}else{this[_0xe3c7('0x41')](_0x35db2c['message'],_0xe3c7('0xee'),_0xe3c7('0x127'),'');return this[_0xe3c7('0xe')]['noop'](util[_0xe3c7('0x29')]('Amazon\x20Lex\x20Result\x20%s',_0x35db2c[_0xe3c7('0x76')]));}}return this[_0xe3c7('0xe')]['error'](_0x5598fa,_0xe3c7('0x128'));};AGIVertices['prototype'][_0xe3c7('0x129')]=function(_0x5065d2){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x12a'),_0x5065d2[_0xe3c7('0xaa')],_0x5065d2['timeout']));if(!this[_0xe3c7('0x84')](_0x5065d2['key'])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xea'));}var _0x5c63fa=_0xe3c7('0x12b');var _0x399579=util[_0xe3c7('0x29')]('%s/recordings/%s',FILES_PATH,rs[_0xe3c7('0x11b')](0x4));var _0x3a6b6f=util[_0xe3c7('0x29')](_0xe3c7('0x9e'),_0x399579,_0x5c63fa);var _0x35fed3=!![];if(_0x5065d2['beep']==='NOBEEP'){_0x35fed3=![];}var _0x38e485=this[_0xe3c7('0xe')]['recordFile'](_0x399579,_0x5c63fa,_0x5065d2['intKey'],_0x5065d2[_0xe3c7('0x65')],undefined,_0x35fed3);if(_0x38e485[_0xe3c7('0xa5')]!==-0x1){this['channel'][_0xe3c7('0xab')](util['format']('google\x20%s\x20file\x20created',_0x3a6b6f));var _0x2f4d81=this[_0xe3c7('0x8e')][_0xe3c7('0x6d')](this,_0x5065d2,_0x3a6b6f);if(_0x2f4d81){for(var _0x5e97e in _0x2f4d81){if(_0x2f4d81[_0xe3c7('0x96')](_0x5e97e)){this[_0xe3c7('0xe')]['setVariable'](util[_0xe3c7('0x29')]('GOOGLE_ASR_%s',_0x5e97e[_0xe3c7('0x67')]()),_0x2f4d81[_0x5e97e]);}}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x12c'),JSON[_0xe3c7('0x72')](_0x2f4d81)));}}return _0x38e485;};AGIVertices['prototype'][_0xe3c7('0x12d')]=function(_0x4a15ac){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x12e'),_0x4a15ac[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x4a15ac[_0xe3c7('0x91')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0x12f'));}if(!this[_0xe3c7('0x84')](_0x4a15ac[_0xe3c7('0x92')])){return this['channel'][_0xe3c7('0xab')]('no\x20appsecret\x20configured');}var _0x4cd918=_0xe3c7('0x12b');var _0x524da0=util[_0xe3c7('0x29')](_0xe3c7('0x130'),FILES_PATH,rs[_0xe3c7('0x11b')](0x4));var _0x11882b=util[_0xe3c7('0x29')](_0xe3c7('0x9e'),_0x524da0,_0x4cd918);var _0x45acf6=!![];if(_0x4a15ac[_0xe3c7('0x131')]===_0xe3c7('0x132')){_0x45acf6=![];}var _0x385fb0=this[_0xe3c7('0xe')][_0xe3c7('0x133')](_0x524da0,_0x4cd918,_0x4a15ac[_0xe3c7('0x134')],_0x4a15ac[_0xe3c7('0x65')],undefined,_0x45acf6);if(_0x385fb0['result']!==-0x1){this['channel']['noop'](util['format'](_0xe3c7('0x135'),_0x11882b));var _0x31f29b=this['tildeASR'][_0xe3c7('0x6d')](this,_0x4a15ac,_0x11882b);if(_0x31f29b){for(var _0x25e86a in _0x31f29b){if(_0x31f29b[_0xe3c7('0x96')](_0x25e86a)){this[_0xe3c7('0xe')][_0xe3c7('0x9f')](util[_0xe3c7('0x29')](_0xe3c7('0x136'),_0x25e86a[_0xe3c7('0x67')]()),_0x31f29b[_0x25e86a]);}}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x137'),JSON[_0xe3c7('0x72')](_0x31f29b)));}}return _0x385fb0;};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x138')]=function(_0x4d2b61){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x139'),_0x4d2b61[_0xe3c7('0xaa')]));return this['channel'][_0xe3c7('0x13a')](_0x4d2b61[_0xe3c7('0x3c')],_0x4d2b61[_0xe3c7('0x13b')],_0x4d2b61[_0xe3c7('0x3d')]);};AGIVertices['prototype'][_0xe3c7('0x13c')]=function(_0x5d087e){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x13d'),_0x5d087e[_0xe3c7('0xaa')]));if(!this['isConfigured'](_0x5d087e[_0xe3c7('0x13e')])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x5d087e,_0xe3c7('0x13f'));}try{var _0x5de53b=eval(_0x5d087e[_0xe3c7('0x13e')])?_0xe3c7('0x140'):_0xe3c7('0x141');this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format'](_0xe3c7('0x142'),_0x5d087e[_0xe3c7('0x13e')],_0x5de53b));return{'code':0xc8,'result':_0x5de53b};}catch(_0xe08255){return{'code':0xc8,'result':_0xe3c7('0x141')};}};AGIVertices['prototype'][_0xe3c7('0x143')]=function(_0x5bf52f){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x144'),_0x5bf52f[_0xe3c7('0xaa')]));if(!this['isConfigured'](_0x5bf52f['interval_id'])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x5bf52f,_0xe3c7('0x145'));}var _0x397c5b=this[_0xe3c7('0x24')][_0xe3c7('0x6d')](this,_0x5bf52f[_0xe3c7('0x146')]);if(!_0x397c5b){return this['channel'][_0xe3c7('0x50')](_0x5bf52f,'no\x20intervals\x20found');}for(var _0x470336=0x0;_0x470336<_0x397c5b[_0xe3c7('0x9b')];_0x470336+=0x1){var _0x445a83=this[_0xe3c7('0xe')][_0xe3c7('0xa3')](util['format'](_0xe3c7('0x147'),_0x397c5b[_0x470336]));if(_0x445a83[_0xe3c7('0xa5')]===-0x1){return _0x445a83;}logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x148'),_0x397c5b[_0x470336],_0x445a83[_0xe3c7('0xa4')]));if(_0x445a83[_0xe3c7('0xa4')]===_0xe3c7('0x140')){logger['info'](util[_0xe3c7('0x29')](_0xe3c7('0x148'),_0x397c5b[_0x470336],_0xe3c7('0x140')));this[_0xe3c7('0xe')]['noop'](util[_0xe3c7('0x29')]('IFTIME\x20%s\x20%s',_0x397c5b[_0x470336],'true'));return{'code':0xc8,'result':_0xe3c7('0x140')};}else{logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x148'),_0x397c5b[_0x470336],_0xe3c7('0x141')));this['channel'][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x148'),_0x397c5b[_0x470336],_0xe3c7('0x141')));}}return{'code':0xc8,'result':'false'};};AGIVertices[_0xe3c7('0x17')]['hangup']=function(_0x5958d7){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x149'),_0x5958d7[_0xe3c7('0xaa')]));return this[_0xe3c7('0xe')]['hangup']();};AGIVertices['prototype'][_0xe3c7('0x14a')]=function(_0x381476){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x14b'),_0x381476[_0xe3c7('0xaa')]));if(!this['isConfigured'](_0x381476[_0xe3c7('0x7a')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xea'));}var _0x23841b='wav';var _0xe7f96b=util[_0xe3c7('0x29')](_0xe3c7('0x130'),FILES_PATH,rs['generate'](0x4));var _0x55aa60=util[_0xe3c7('0x29')]('%s.%s',_0xe7f96b,_0x23841b);var _0x4cac7f=!![];if(_0x381476[_0xe3c7('0x131')]===_0xe3c7('0x132')){_0x4cac7f=![];}var _0x3ac8fc=this[_0xe3c7('0xe')][_0xe3c7('0x133')](_0xe7f96b,_0x23841b,_0x381476[_0xe3c7('0x134')],_0x381476[_0xe3c7('0x65')],undefined,_0x4cac7f);if(_0x3ac8fc[_0xe3c7('0xa5')]!==-0x1){this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x14c'),_0x55aa60));var _0x2a675c=this[_0xe3c7('0x83')][_0xe3c7('0x6d')](this,_0x381476,_0x55aa60);if(_0x2a675c){for(var _0x2ceea in _0x2a675c){if(_0x2a675c[_0xe3c7('0x96')](_0x2ceea)){this[_0xe3c7('0xe')]['setVariable'](util[_0xe3c7('0x29')](_0xe3c7('0x14d'),_0x2ceea[_0xe3c7('0x67')]()),_0x2a675c[_0x2ceea]);}}return this['channel'][_0xe3c7('0xab')](util['format'](_0xe3c7('0x14e'),JSON[_0xe3c7('0x72')](_0x2a675c)));}}return _0x3ac8fc;};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x14f')]=function(_0x2d3428){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x150'),_0x2d3428[_0xe3c7('0xaa')]));if(!this['isConfigured'](_0x2d3428[_0xe3c7('0x7a')])){return this[_0xe3c7('0xe')]['noop'](_0xe3c7('0xea'));}if(!this['isConfigured'](_0x2d3428['text'])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xac'));}this['channel'][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x151'),_0x2d3428[_0xe3c7('0x5a')]));var _0x42cd8b=this['ispeechTTS']['sync'](this,_0x2d3428);if(_0x42cd8b){this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format'](_0xe3c7('0x14c'),_0x42cd8b));var _0x4c239e=this[_0xe3c7('0xe')]['streamFile'](_0x42cd8b,_0x2d3428[_0xe3c7('0x134')]);try{fs[_0xe3c7('0x104')](_0x42cd8b+'.wav');}catch(_0x45c86a){logger['error'](_0x45c86a);}return _0x4c239e;}return this[_0xe3c7('0xe')]['error'](_0x2d3428,_0xe3c7('0x152'));};AGIVertices['prototype'][_0xe3c7('0x153')]=function(_0x5b57d8){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x154'),_0x5b57d8[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x5b57d8[_0xe3c7('0x155')])){return this[_0xe3c7('0xe')]['error'](_0x5b57d8,'no\x20find\x20by\x20configured');}logger[_0xe3c7('0x2e')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x5b57d8[_0xe3c7('0x155')]));var _0x18adfd=this[_0xe3c7('0x53')][_0xe3c7('0x6d')](this,_0x5b57d8[_0xe3c7('0x155')]);if(_0x18adfd){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x156'),this[_0xe3c7('0xe')]['callerid'],_0x5b57d8[_0xe3c7('0x155')]));this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x156'),this['channel'][_0xe3c7('0x39')],_0x5b57d8['findBy']));return{'code':0xc8,'result':_0xe3c7('0x157')};}else{logger[_0xe3c7('0x2e')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xe3c7('0xe')]['callerid'],_0x5b57d8[_0xe3c7('0x155')]));this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format'](_0xe3c7('0x158'),this[_0xe3c7('0xe')]['callerid'],_0x5b57d8[_0xe3c7('0x155')]));return{'code':0xc8,'result':_0xe3c7('0x159')};}};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x15a')]=function(_0x526e4f){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x526e4f[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x526e4f[_0xe3c7('0x155')])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x526e4f,_0xe3c7('0x15b'));}logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x15c'),this['channel'][_0xe3c7('0x39')],_0x526e4f[_0xe3c7('0x155')]));var _0x46ceb7=this[_0xe3c7('0x52')]['sync'](this,_0x526e4f[_0xe3c7('0x155')]);if(_0x46ceb7){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x156'),this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x526e4f[_0xe3c7('0x155')]));this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x156'),this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x526e4f[_0xe3c7('0x155')]));return{'code':0xc8,'result':'success'};}else{logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x158'),this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x526e4f[_0xe3c7('0x155')]));this[_0xe3c7('0xe')]['noop'](util[_0xe3c7('0x29')](_0xe3c7('0x158'),this['channel'][_0xe3c7('0x39')],_0x526e4f[_0xe3c7('0x155')]));return{'code':0xc8,'result':_0xe3c7('0x159')};}};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x15d')]=function(_0x20e30c){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x20e30c[_0xe3c7('0xaa')]));if(!this['isConfigured'](_0x20e30c[_0xe3c7('0x15e')])){return this[_0xe3c7('0xe')]['error'](_0x20e30c,_0xe3c7('0x15f'));}this['channel']['noop'](util[_0xe3c7('0x29')](_0xe3c7('0x160'),_0x20e30c[_0xe3c7('0x15e')]));var _0x5a9bf8=eval(_0x20e30c['operation']);if(!this['isConfigured'](_0x20e30c[_0xe3c7('0xd9')])){return this['channel'][_0xe3c7('0xab')](_0xe3c7('0xd8'));}var _0x1de852=this[_0xe3c7('0xa3')][_0xe3c7('0x6d')](this,_0x20e30c[_0xe3c7('0xd9')]);if(!_0x1de852){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x20e30c,_0xe3c7('0xda'));}if(_['isArray'](_0x5a9bf8)){var _0x428fba=this;_0x5a9bf8['forEach'](function(_0x159e09,_0x3a14f2){_0x428fba[_0xe3c7('0xe')][_0xe3c7('0x9f')](util[_0xe3c7('0x29')](_0xe3c7('0x161'),_0x1de852,_0x3a14f2),_0x159e09);});return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('variable\x20%s[key]\x20set',_0x1de852));}else{return this['channel'][_0xe3c7('0x9f')](_0x1de852,_0x5a9bf8);}};AGIVertices[_0xe3c7('0x17')]['menu']=function(_0x44c399){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x44c399['label']));if(_0x44c399['retry']===0x0){return this[_0xe3c7('0xa7')](_0x44c399);}_0x44c399[_0xe3c7('0x112')]-=0x1;if(!this[_0xe3c7('0x84')](_0x44c399['file_id'])){return this[_0xe3c7('0xe')]['error'](_0x44c399,_0xe3c7('0x162'));}var _0x7ce6f4=this[_0xe3c7('0x1e')][_0xe3c7('0x6d')](this,_0x44c399[_0xe3c7('0x113')]);if(!_0x7ce6f4){return this['channel'][_0xe3c7('0x50')](_0x44c399,_0xe3c7('0x163'));}var _0x21db10=this[_0xe3c7('0xe')]['getData'](_0x7ce6f4,_0x44c399[_0xe3c7('0x115')],_0x44c399[_0xe3c7('0x164')]);var _0x479cd7=_0x21db10[_0xe3c7('0xa5')];if(_0x21db10[_0xe3c7('0xa5')]===-0x1){this['createSquareDetailsReport'][_0xe3c7('0x6d')](this,_0x44c399,'-1');return _0x21db10;}else if(_0x21db10[_0xe3c7('0xa4')]==='timeout'){_0x21db10[_0xe3c7('0xa5')]=_0x21db10[_0xe3c7('0xa5')][_0xe3c7('0x9b')]>0x0?_0x21db10[_0xe3c7('0xa5')]:'t';}else if(_[_0xe3c7('0x44')](_0x21db10[_0xe3c7('0xa5')])){_0x21db10['result']='#';_0x479cd7='#';}if(!this['isConfigured'](_0x44c399[_0xe3c7('0xd9')])){this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xd8'));}else{var _0x19661f=this[_0xe3c7('0xa3')]['sync'](this,_0x44c399[_0xe3c7('0xd9')]);if(!_0x19661f){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x44c399,_0xe3c7('0xda'));}this[_0xe3c7('0xe')][_0xe3c7('0x9f')](_0x19661f,_0x479cd7);}this['createSquareDetailsReport']['sync'](this,_0x44c399,_0x479cd7);return _0x21db10;};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0xab')]=function(_0x301496){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')]('Enter\x20in\x20NOOP\x20(%s)\x20block',_0x301496[_0xe3c7('0xaa')]));return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0x301496[_0xe3c7('0x165')]||_0x301496[_0xe3c7('0xaa')]);};AGIVertices['prototype'][_0xe3c7('0x166')]=function(_0x57dbf5){logger['info'](util[_0xe3c7('0x29')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x57dbf5[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x57dbf5['findBy'])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x57dbf5,_0xe3c7('0x15b'));}logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x15c'),this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x57dbf5['findBy']));var _0xe3a8f3=this['getPause'][_0xe3c7('0x6d')](this,_0x57dbf5[_0xe3c7('0x167')]);var _0x3c43a7=this[_0xe3c7('0x4e')][_0xe3c7('0x6d')](this,_0x57dbf5[_0xe3c7('0x155')],_0xe3a8f3);if(_0x3c43a7){logger['info'](util[_0xe3c7('0x29')](_0xe3c7('0x156'),this['channel']['callerid'],_0x57dbf5['findBy']));this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0xe3c7('0x39')],_0x57dbf5[_0xe3c7('0x155')]));return{'code':0xc8,'result':_0xe3c7('0x157')};}else{logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x158'),this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x57dbf5[_0xe3c7('0x155')]));this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x57dbf5[_0xe3c7('0x155')]));return{'code':0xc8,'result':_0xe3c7('0x159')};}};AGIVertices['prototype']['playback']=function(_0x45fee3){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x168'),_0x45fee3[_0xe3c7('0xaa')]));if(!this['isConfigured'](_0x45fee3[_0xe3c7('0x113')])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x45fee3,_0xe3c7('0x162'));}var _0x69ab7a=this[_0xe3c7('0x1e')][_0xe3c7('0x6d')](this,_0x45fee3[_0xe3c7('0x113')]);if(!_0x69ab7a){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x45fee3,_0xe3c7('0x163'));}var _0x49dc1c=this[_0xe3c7('0xe')]['exec'](_0xe3c7('0x169'),[_0x69ab7a,_0x45fee3['opts']]);if(_0x49dc1c[_0xe3c7('0xa5')]===-0x1){return _0x49dc1c;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x16a'),'PLAYBACK',_0x69ab7a));};AGIVertices['prototype'][_0xe3c7('0x16b')]=function(_0x574412){logger['info'](util[_0xe3c7('0x29')](_0xe3c7('0x16c'),_0x574412[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x574412[_0xe3c7('0x16d')])){return this['channel'][_0xe3c7('0x50')](_0x574412,_0xe3c7('0x16e'));}var _0x177dc6='';var _0x30104b=parseInt(_0x574412[_0xe3c7('0x16d')],0xa);if(isNaN(_0x30104b)){_0x177dc6=_0x574412[_0xe3c7('0x16d')];}else{_0x177dc6=this[_0xe3c7('0x14')][_0xe3c7('0x6d')](this,_0x574412[_0xe3c7('0x16d')]);if(!_0x177dc6){return this['channel']['error'](_0x574412,'no\x20queue\x20found');}}var _0x2dd022='';if(this[_0xe3c7('0x84')](_0x574412[_0xe3c7('0x113')])){var _0x311cd7=this[_0xe3c7('0x1e')][_0xe3c7('0x6d')](this,_0x574412[_0xe3c7('0x113')]);if(_0x311cd7){_0x2dd022=_0x311cd7;}}this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x574412,_0x177dc6);if(_0x574412[_0xe3c7('0xe6')][_0xe3c7('0x16f')]('x')<0x0){_0x574412[_0xe3c7('0xe6')]+='x';}if(_0x574412['opts'][_0xe3c7('0x16f')]('X')<0x0){_0x574412[_0xe3c7('0xe6')]+='X';}this[_0xe3c7('0xe')][_0xe3c7('0x9f')](_0xe3c7('0x170'),_0x177dc6?_0x177dc6['toLowerCase']():'');var _0x489c36=this[_0xe3c7('0xe')][_0xe3c7('0xad')](_0xe3c7('0x171'),[_0x177dc6,_0x574412[_0xe3c7('0xe6')],_0x574412['url'],_0x2dd022,_0x574412[_0xe3c7('0x65')],_0x574412[_0xe3c7('0xb9')],_0x574412['macro'],_0x574412[_0xe3c7('0x172')],'',_0x574412['position']]);if(_0x489c36[_0xe3c7('0xa5')]===-0x1){return _0x489c36;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x16a'),_0xe3c7('0x171'),_0x177dc6));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x173')]=function(_0x5be003){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x174'),_0x5be003['label']));var _0x1fd54b=_0x5be003['recordingFormat']||_0xe3c7('0x12b');var _0x362bc3=util['format'](_0xe3c7('0x175'),this['channel'][_0xe3c7('0x36')],rs[_0xe3c7('0x11b')](0x5));var _0x68110c=util[_0xe3c7('0x29')](_0xe3c7('0x176'),FILES_PATH,_0x362bc3,_0x1fd54b);var _0x3f2758=util['format']('%s/recordings/%s',FILES_PATH,_0x362bc3);this[_0xe3c7('0x3a')][_0xe3c7('0x6d')](this,_0x5be003,_0x362bc3,_0x68110c);this[_0xe3c7('0xe')][_0xe3c7('0x9f')](_0xe3c7('0x177'),_0x362bc3);logger[_0xe3c7('0x2e')](_0xe3c7('0x178'),_0x3f2758,_0x1fd54b,_0x5be003[_0xe3c7('0x179')],_0x5be003['timeout']);return this[_0xe3c7('0xe')][_0xe3c7('0x133')](_0x3f2758,_0x1fd54b,_0x5be003[_0xe3c7('0x179')],_0x5be003['timeout'],undefined,!![]);};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x17a')]=function(_0x212929){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x17b'),_0x212929[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x212929[_0xe3c7('0x70')])){return this['channel'][_0xe3c7('0xab')](_0xe3c7('0x17c'));}var _0x2a2342=this[_0xe3c7('0x63')]['sync'](this,_0x212929);logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x17d'),util[_0xe3c7('0x17e')](_0x2a2342,{'showHidden':![],'depth':null})));if(!this[_0xe3c7('0x84')](_0x212929['variable_id'])){return this[_0xe3c7('0xe')]['noop'](_0xe3c7('0x17f'));}var _0x5413c5=this[_0xe3c7('0xa3')][_0xe3c7('0x6d')](this,_0x212929[_0xe3c7('0xd9')]);if(!_0x5413c5){return this[_0xe3c7('0xe')]['error'](_0x212929,_0xe3c7('0xda'));}this['channel'][_0xe3c7('0x9f')](util[_0xe3c7('0x29')](_0xe3c7('0x180'),_0x5413c5),_0x2a2342[_0xe3c7('0x74')]?_0x2a2342[_0xe3c7('0x74')]:_0xe3c7('0x181'));this['channel'][_0xe3c7('0x9f')](util[_0xe3c7('0x29')](_0xe3c7('0x182'),_0x5413c5),_0x2a2342[_0xe3c7('0x75')]?_0x2a2342[_0xe3c7('0x75')]:'OK');if(_0x2a2342[_0xe3c7('0x71')]){try{this[_0xe3c7('0x9c')](_0x2a2342[_0xe3c7('0x71')],_0x5413c5);}catch(_0x30f8cf){logger[_0xe3c7('0x50')](util[_0xe3c7('0x29')](_0xe3c7('0x183'),_0x5413c5));}}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0xde'),_0x5413c5));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x184')]=function(_0x9fb132){logger['info'](util['format']('Enter\x20in\x20SAYDIGITS\x20(%s)\x20block',_0x9fb132[_0xe3c7('0xaa')]));return this[_0xe3c7('0xe')][_0xe3c7('0x185')](_0x9fb132[_0xe3c7('0x186')][_0xe3c7('0x56')](/\s+/g,''),_0x9fb132[_0xe3c7('0x179')]);};AGIVertices['prototype']['saynumber']=function(_0x4efd6c){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x187'),_0x4efd6c[_0xe3c7('0xaa')]));return this['channel'][_0xe3c7('0x188')](_0x4efd6c['number']['replace'](/\s+/g,''),_0x4efd6c[_0xe3c7('0x179')]);};AGIVertices[_0xe3c7('0x17')]['sayphonetic']=function(_0x46cd19){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x189'),_0x46cd19['label']));return this[_0xe3c7('0xe')][_0xe3c7('0x18a')](_0x46cd19[_0xe3c7('0x5a')],_0x46cd19['escape_digits']);};AGIVertices[_0xe3c7('0x17')]['sendMail']=function(_0x4f5d4d){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x18b'),_0x4f5d4d[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x4f5d4d[_0xe3c7('0x18c')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0x18d'));}var _0x3b3dc9=this[_0xe3c7('0x21')][_0xe3c7('0x6d')](this,_0x4f5d4d[_0xe3c7('0x18c')]);if(!_0x3b3dc9||!_0x3b3dc9[_0xe3c7('0x18e')]){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x4f5d4d,'no\x20mail\x20account\x20found');}var _0x161272={'from':util[_0xe3c7('0x29')]('\x22%s\x22\x20<%s>',_0x3b3dc9[_0xe3c7('0x12')],_0x3b3dc9['email']||_0x3b3dc9[_0xe3c7('0x18e')][_0xe3c7('0x18f')]),'to':_0x4f5d4d['to']||'','cc':_0x4f5d4d['cc']||'','bcc':_0x4f5d4d[_0xe3c7('0x190')]||'','subject':_0x4f5d4d[_0xe3c7('0x191')],'html':_0x4f5d4d[_0xe3c7('0x5a')],'text':_0x4f5d4d['text']};var _0x229c2e={'tls':{'rejectUnauthorized':![]}};if(_0x3b3dc9[_0xe3c7('0x18e')][_0xe3c7('0x192')]){_0x229c2e[_0xe3c7('0x192')]=_0x3b3dc9[_0xe3c7('0x18e')][_0xe3c7('0x192')];}else{_0x229c2e['host']=_0x3b3dc9[_0xe3c7('0x18e')][_0xe3c7('0x193')];_0x229c2e[_0xe3c7('0x194')]=_0x3b3dc9[_0xe3c7('0x18e')][_0xe3c7('0x194')];_0x229c2e[_0xe3c7('0x195')]=_0x3b3dc9[_0xe3c7('0x18e')]['secure'];}if(_0x3b3dc9[_0xe3c7('0x18e')][_0xe3c7('0x196')]){_0x229c2e[_0xe3c7('0x197')]={'user':_0x3b3dc9[_0xe3c7('0x18e')]['user'],'pass':_0x3b3dc9[_0xe3c7('0x18e')][_0xe3c7('0x198')]};}if(this[_0xe3c7('0x84')](_0x4f5d4d[_0xe3c7('0x199')])){}logger[_0xe3c7('0xe0')](_0xe3c7('0x19a'),JSON[_0xe3c7('0x72')](_0x161272));this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x4f5d4d,_0x4f5d4d[_0xe3c7('0x18c')]);this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format']('Trying\x20SendMail\x20with\x20account\x20%s',_0x3b3dc9[_0xe3c7('0x12')]));this['sendMailMessage'][_0xe3c7('0x6d')](this,_0x229c2e,_0x161272);return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0x19b'));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x19c')]=function(_0x153753){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x19d'),_0x153753[_0xe3c7('0xaa')]));return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0x19e'));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x19f')]=function(_0x18f931){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x1a0'),_0x18f931[_0xe3c7('0xaa')]));if(!this['isConfigured'](_0x18f931[_0xe3c7('0x1a1')])){return this[_0xe3c7('0xe')]['noop'](_0xe3c7('0x1a2'));}var _0xad33d7=this['getSmsAccount'][_0xe3c7('0x6d')](this,_0x18f931['sms_account_id']);if(!_0xad33d7){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x18f931,_0xe3c7('0x1a3'));}var _0x2c44aa={'body':_0x18f931['sms_text'],'phone':_0x18f931['to']||'','SmsAccountId':_0xad33d7['id']};logger[_0xe3c7('0xe0')](_0xe3c7('0x1a4'),JSON[_0xe3c7('0x72')](_0x2c44aa));this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x18f931,_0x18f931['sms_account_id']);this['channel'][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x1a5'),_0xad33d7[_0xe3c7('0x12')]));this[_0xe3c7('0x34')]['sync'](this,_0x2c44aa);return this[_0xe3c7('0xe')][_0xe3c7('0xab')]('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices['prototype'][_0xe3c7('0x1a6')]=function(_0x41b511){logger['info'](util[_0xe3c7('0x29')]('Enter\x20in\x20SET\x20(%s)\x20block',_0x41b511['label']));if(!this[_0xe3c7('0x84')](_0x41b511[_0xe3c7('0xd9')])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x41b511,'no\x20variable\x20selected');}var _0x46e284=this[_0xe3c7('0xa3')][_0xe3c7('0x6d')](this,_0x41b511['variable_id']);if(!_0x46e284){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x41b511,_0xe3c7('0xda'));}return this['channel'][_0xe3c7('0x9f')](_0x46e284,_0x41b511[_0xe3c7('0x1a7')]);};AGIVertices['prototype'][_0xe3c7('0x1a8')]=function(_0x475d19){logger['info'](util[_0xe3c7('0x29')]('Enter\x20in\x20START\x20(%s)\x20block',_0x475d19[_0xe3c7('0xaa')]));this[_0xe3c7('0xe')][_0xe3c7('0xab')]('START\x20CALLY\x20SQUARE');if(_0x475d19[_0xe3c7('0xbb')]===_0xe3c7('0x1a9')){this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0x1aa'));return this['channel'][_0xe3c7('0xbb')]();}return this['channel'][_0xe3c7('0xab')](_0xe3c7('0x1ab'));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x1ac')]=function(_0x130152){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x1ad'),_0x130152[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x130152[_0xe3c7('0x1ae')])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x130152,'no\x20subproject\x20selected');}var _0x5b5a0a=this[_0xe3c7('0x18')][_0xe3c7('0x6d')](this,_0x130152['project_id']);if(!this['isConfigured'](_0x5b5a0a)){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x130152,util[_0xe3c7('0x29')]('no\x20subproject\x20found\x20with\x20id\x20%d',_0x130152[_0xe3c7('0x1ae')]));}if(_0x5b5a0a===this[_0xe3c7('0xe')][_0xe3c7('0x38')]){return this['channel'][_0xe3c7('0x50')](_0x130152,_0xe3c7('0x1af'));}this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x130152,_0x5b5a0a);var _0x5c896d=this['channel'][_0xe3c7('0xad')]('AGI',util[_0xe3c7('0x29')](_0xe3c7('0x1b0'),config[_0xe3c7('0xb9')][_0xe3c7('0x193')]||_0xe3c7('0x1b1'),_0x5b5a0a,this['channel'][_0xe3c7('0x38')]));if(_0x5c896d['result']===-0x1){return _0x5c896d;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('Executed\x20command\x20%s\x20%s','AGI',_0x5b5a0a));};AGIVertices['prototype']['system']=function(_0x49fd24){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x1b2'),_0x49fd24['label']));var _0x49ef1f=this[_0xe3c7('0x1b3')]['sync'](this,_0x49fd24[_0xe3c7('0x1b4')]);this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x49fd24,_0x49fd24[_0xe3c7('0x1b4')]);if(this[_0xe3c7('0x84')](_0x49fd24[_0xe3c7('0xd9')])){var _0x58867e=this[_0xe3c7('0xa3')][_0xe3c7('0x6d')](this,_0x49fd24[_0xe3c7('0xd9')]);if(_0x58867e){this[_0xe3c7('0xe')][_0xe3c7('0x9f')](_0x58867e,_0x49ef1f);return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format'](_0xe3c7('0x1b5'),_0x49fd24['command'],_0x58867e));}}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('sh\x20command:\x20%s\x20result\x20no\x20stored',_0x49fd24[_0xe3c7('0x1b4')]));};AGIVertices[_0xe3c7('0x17')]['google_cloud_tts']=function(_0x5af255){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x1b6'),_0x5af255['label']));_0x5af255[_0xe3c7('0x5a')]=_0x5af255[_0xe3c7('0x5a')][_0xe3c7('0x56')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xe3c7('0x84')](_0x5af255[_0xe3c7('0x58')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')]('no\x20apiKey\x20configured');}if(!this[_0xe3c7('0x84')](_0x5af255['text'])){return this['channel'][_0xe3c7('0xab')](_0xe3c7('0xac'));}this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('Trying\x20Google\x20Cloud\x20TTS\x20%s',_0x5af255['text']));var _0x131861=this['googleCloudTTS']['sync'](this,_0x5af255);if(_0x131861){this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x1b7'),_0x131861));var _0x214cb0=this[_0xe3c7('0xe')][_0xe3c7('0x1b8')](_0x131861);try{fs['unlink'](_0x131861+_0xe3c7('0x105'));}catch(_0x4710d3){logger[_0xe3c7('0x50')](_0x4710d3);}return _0x214cb0;}return this[_0xe3c7('0xe')]['error'](_0x5af255,_0xe3c7('0x1b9'));};AGIVertices[_0xe3c7('0x17')]['tts']=function(_0x32f61c){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x1ba'),_0x32f61c[_0xe3c7('0xaa')]));_0x32f61c[_0xe3c7('0x5a')]=_0x32f61c['text'][_0xe3c7('0x56')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xe3c7('0x84')](_0x32f61c[_0xe3c7('0x5a')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xac'));}this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x1bb'),_0x32f61c[_0xe3c7('0x5a')]));var _0x1e3555=this[_0xe3c7('0x61')]['sync'](this,_0x32f61c);if(_0x1e3555){this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x1bc'),_0x1e3555));var _0x84b26a=this[_0xe3c7('0xe')][_0xe3c7('0x1b8')](_0x1e3555);try{fs[_0xe3c7('0x104')](_0x1e3555+_0xe3c7('0x105'));}catch(_0x14ad94){logger[_0xe3c7('0x50')](_0x14ad94);}return _0x84b26a;}return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x32f61c,_0xe3c7('0x1bd'));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x1be')]=function(_0x33765f){logger['info'](util['format'](_0xe3c7('0x1bf'),_0x33765f[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x33765f[_0xe3c7('0x155')])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x33765f,'no\x20find\x20by\x20configured');}logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x15c'),this[_0xe3c7('0xe')]['callerid'],_0x33765f['findBy']));var _0x14565d=this[_0xe3c7('0x51')][_0xe3c7('0x6d')](this,_0x33765f[_0xe3c7('0x155')]);if(_0x14565d){logger['info'](util['format'](_0xe3c7('0x156'),this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x33765f[_0xe3c7('0x155')]));this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x156'),this[_0xe3c7('0xe')]['callerid'],_0x33765f['findBy']));return{'code':0xc8,'result':_0xe3c7('0x157')};}else{logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x158'),this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x33765f[_0xe3c7('0x155')]));this[_0xe3c7('0xe')]['noop'](util[_0xe3c7('0x29')](_0xe3c7('0x158'),this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x33765f[_0xe3c7('0x155')]));return{'code':0xc8,'result':_0xe3c7('0x159')};}};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x1c0')]=function(_0xee2a25){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x1c1'),_0xee2a25['label']));var _0xcfe87c=this[_0xe3c7('0xe')][_0xe3c7('0xad')](_0xe3c7('0x1c2'),[_0xee2a25[_0xe3c7('0x1c3')],_0xee2a25[_0xe3c7('0x78')]]);if(_0xcfe87c[_0xe3c7('0xa5')]===-0x1){return _0xcfe87c;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x16a'),'VOICEMAIL',_0xee2a25['mailbox']));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x1c4')]=function(_0x4b4edc){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x1c5'),_0x4b4edc['label']));if(!this[_0xe3c7('0x84')](_0x4b4edc[_0xe3c7('0xd9')])){return this[_0xe3c7('0xe')]['error'](_0x4b4edc,_0xe3c7('0x1c6'));}var _0x3a3b04=this[_0xe3c7('0xa3')][_0xe3c7('0x6d')](this,_0x4b4edc[_0xe3c7('0xd9')]);if(!_0x3a3b04){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x4b4edc,'no\x20variable\x20found');}var _0x180f93=this['channel']['getVariable'](_0x3a3b04);return{'code':0xc8,'result':_0x180f93[_0xe3c7('0xa4')]?_0x180f93[_0xe3c7('0xa4')]:'-'};};String['prototype'][_0xe3c7('0xa2')]=function(_0x5d6506,_0x362297){return this['split'](_0x5d6506)[_0xe3c7('0x1c7')](_0x362297);};module[_0xe3c7('0x1c8')]=AGIVertices;
\ No newline at end of file
index 750e4de..02e8ec8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb91b=['syncHangup','agentringnoanswer','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','syncAgentConnectPreview','milliseconds','diff','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','timer','stopAcw','acwTimeout','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','message','prototype','saveUnpause','update','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify','[ACW][syncAgentConnect]\x20%s','syncHangupRequest','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','syncBlindTransfer','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','moment','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','syncAgentConnect','bind','hanguprequest','hangup'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb91b,0x92));var _0xbb91=function(_0x5d66fc,_0x4da5af){_0x5d66fc=_0x5d66fc-0x0;var _0x4a4748=_0xb91b[_0x5d66fc];return _0x4a4748;};'use strict';var util=require(_0xbb91('0x0'));var _=require(_0xbb91('0x1'));var moment=require(_0xbb91('0x2'));var ami=require('../ami');var logger=require(_0xbb91('0x3'))(_0xbb91('0x4'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0xbb91('0x5'));function Acw(_0x5567c8){this[_0xbb91('0x6')]=_0x5567c8[_0xbb91('0x6')];this['agents']=_0x5567c8[_0xbb91('0x7')];this['timers']=_0x5567c8[_0xbb91('0x8')];this[_0xbb91('0x9')]={};ami['on']('agentconnect',this[_0xbb91('0xa')][_0xbb91('0xb')](this));ami['on'](_0xbb91('0xc'),this['syncHangupRequest'][_0xbb91('0xb')](this));ami['on'](_0xbb91('0xd'),this[_0xbb91('0xe')][_0xbb91('0xb')](this));ami['on'](_0xbb91('0xf'),this[_0xbb91('0x10')]['bind'](this));ami['on']('attendedtransfer',this[_0xbb91('0x11')][_0xbb91('0xb')](this));ami['on'](_0xbb91('0x12'),this['syncBlindTransfer'][_0xbb91('0xb')](this));ami['on']('custom:agentConnectPreview',this[_0xbb91('0x13')]['bind'](this));}function getDiff(_0x38c775){var _0x47bd60=moment()[_0xbb91('0x14')](0x0);var _0x5b5575=moment(_0x38c775)[_0xbb91('0x14')](0x0);return _0x47bd60[_0xbb91('0x15')](_0x5b5575,'seconds');}Acw['prototype'][_0xbb91('0x16')]=function(_0x3c5620){try{var _0x23b8cc=this;var _0x41f7f6=this[_0xbb91('0x9')][_0x3c5620][_0xbb91('0x17')];var _0x5cc556=this[_0xbb91('0x9')][_0x3c5620][_0xbb91('0x18')];var _0x2d4b4a=this[_0xbb91('0x6')][_0x5cc556];var _0x220a54=![];var _0x530a1d=_0xbb91('0x19');if(_0x2d4b4a[_0xbb91('0x1a')]){if(_0x2d4b4a['mandatoryDispositionPause']['name']){_0x220a54=!![];_0x530a1d=_0x2d4b4a[_0xbb91('0x1b')][_0xbb91('0x1c')];}}ami[_0xbb91('0x1d')]({'action':_0xbb91('0x1e'),'interface':_0x41f7f6,'paused':!![],'reason':_0x530a1d})[_0xbb91('0x1f')](function(_0xf152f1){if(_0x23b8cc[_0xbb91('0x7')][_0x41f7f6]){return RpcUser[_0xbb91('0x20')](_0x23b8cc[_0xbb91('0x7')][_0x41f7f6]['id'])[_0xbb91('0x1f')](function(_0x53a1e2){if(_0x53a1e2&&!_0x53a1e2[_0xbb91('0x21')]){logger[_0xbb91('0x22')](_0xbb91('0x23'),_0x3c5620,_0x41f7f6,_0x5cc556);var _0x40c10f=_0x23b8cc[_0xbb91('0x9')][_0x3c5620][_0xbb91('0x24')]&&_0x23b8cc['channels'][_0x3c5620][_0xbb91('0x25')]?_0x23b8cc['channels'][_0x3c5620][_0xbb91('0x25')]:_0x3c5620;return RpcUser[_0xbb91('0x26')](_0x23b8cc[_0xbb91('0x7')][_0x41f7f6],_0x530a1d,_0x40c10f)[_0xbb91('0x1f')](function(_0x366f8f){if(!_0x220a54){_0x23b8cc[_0xbb91('0x8')][_0x41f7f6]={};logger[_0xbb91('0x22')](_0xbb91('0x27'),_0x3c5620,_0x23b8cc['voiceQueues'][_0x5cc556]['acwTimeout'],_0x41f7f6,_0x5cc556);_0x23b8cc[_0xbb91('0x8')][_0x41f7f6][_0xbb91('0x28')]=setTimeout(_0x23b8cc[_0xbb91('0x29')][_0xbb91('0xb')](_0x23b8cc,_0x41f7f6),_0x23b8cc['voiceQueues'][_0x5cc556][_0xbb91('0x2a')]*0x3e8);_0x23b8cc[_0xbb91('0x8')][_0x41f7f6][_0xbb91('0x2b')]=moment()[_0xbb91('0x2c')](_0xbb91('0x2d'));_0x23b8cc[_0xbb91('0x8')][_0x41f7f6][_0xbb91('0x2e')]=_0x3c5620;_0x23b8cc[_0xbb91('0x8')][_0x41f7f6][_0xbb91('0x18')]=_0x5cc556;_0x23b8cc['timers'][_0x41f7f6][_0xbb91('0x2f')]=function(){var _0x87c94e=getDiff(_0x23b8cc[_0xbb91('0x8')][_0x41f7f6]['lastPauseAt']);clearTimeout(_0x23b8cc[_0xbb91('0x8')][_0x41f7f6][_0xbb91('0x28')]);_0x23b8cc[_0xbb91('0x8')][_0x41f7f6][_0xbb91('0x28')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x87c94e},_0x23b8cc[_0xbb91('0x8')][_0x41f7f6][_0xbb91('0x2e')],_0x41f7f6)[_0xbb91('0x1f')](function(_0x2d14e7){logger[_0xbb91('0x22')](_0xbb91('0x30'),_0x3c5620,_0x87c94e,_0x2d14e7);})[_0xbb91('0x31')](function(_0x17e246){logger[_0xbb91('0x32')](_0xbb91('0x33'),_0x3c5620,_0x17e246);});delete _0x23b8cc['timers'][_0x41f7f6];};}});}else{logger[_0xbb91('0x22')](_0xbb91('0x34'),_0x3c5620,_0x41f7f6,_0x5cc556);}});}})[_0xbb91('0x31')](function(_0x847b4a){logger[_0xbb91('0x32')](_0xbb91('0x27'),_0x3c5620,_0x23b8cc['voiceQueues'][_0x5cc556][_0xbb91('0x2a')],_0x41f7f6,_0x5cc556);})[_0xbb91('0x35')](function(){delete _0x23b8cc[_0xbb91('0x9')][_0x3c5620];});}catch(_0x80f25b){logger[_0xbb91('0x32')]('[ACW][START]\x20%s',_0x80f25b[_0xbb91('0x36')]);}};Acw[_0xbb91('0x37')][_0xbb91('0x29')]=function(_0x436f97){try{var _0x3a837e=this;if(_0x3a837e[_0xbb91('0x8')][_0x436f97]){_0x3a837e['timers'][_0x436f97][_0xbb91('0x28')]=![];var _0x21094b=_0x3a837e['timers'][_0x436f97][_0xbb91('0x2e')];var _0x25734e=_0x3a837e[_0xbb91('0x8')][_0x436f97][_0xbb91('0x18')];var _0x4d3761=_0x3a837e['voiceQueues'][_0x25734e]['acwTimeout'];logger[_0xbb91('0x22')]('[%s][TIMER][STOP][AGENT:%s]',_0x21094b,_0x436f97);RpcUser[_0xbb91('0x38')](this[_0xbb91('0x7')][_0x436f97]);RpcVoiceAgentReport[_0xbb91('0x39')]({'acwtime':_0x4d3761,'agentacw':!![]},_0x21094b,_0x436f97)[_0xbb91('0x1f')](function(_0x562173){logger[_0xbb91('0x22')](_0xbb91('0x30'),_0x21094b,_0x4d3761,_0x562173);})['catch'](function(_0x1481ca){logger['error'](_0xbb91('0x33'),_0x21094b,_0x1481ca);});}else{logger[_0xbb91('0x32')](_0xbb91('0x3a'),_0x436f97);if(_0x3a837e['timers']){logger[_0xbb91('0x22')]('[ACW][TIMERS]',JSON[_0xbb91('0x3b')](_0x3a837e[_0xbb91('0x8')]));}}}catch(_0x2bc6f9){logger['error']('[ACW][STOP]\x20%s',_0x2bc6f9[_0xbb91('0x36')]);}};Acw[_0xbb91('0x37')]['syncAgentConnect']=function(_0x1349bd){try{if(this['voiceQueues'][_0x1349bd['queue']]&&(this[_0xbb91('0x6')][_0x1349bd[_0xbb91('0x18')]]['acw']||this[_0xbb91('0x6')][_0x1349bd[_0xbb91('0x18')]]['mandatoryDisposition'])){if(this[_0xbb91('0x7')][_0x1349bd[_0xbb91('0x17')]]){this[_0xbb91('0x9')][_0x1349bd[_0xbb91('0x2e')]]={'queue':_0x1349bd['queue'],'interface':_0x1349bd[_0xbb91('0x17')],'destlinkedid':_0x1349bd[_0xbb91('0x25')]};}}}catch(_0x2d2b0b){logger['error'](_0xbb91('0x3c'),_0x2d2b0b[_0xbb91('0x36')]);}};Acw[_0xbb91('0x37')][_0xbb91('0x13')]=function(_0x5dfdea){try{if(this['voiceQueues'][_0x5dfdea['queue']]&&(this['voiceQueues'][_0x5dfdea['queue']]['acw']||this[_0xbb91('0x6')][_0x5dfdea[_0xbb91('0x18')]][_0xbb91('0x1a')])){if(this[_0xbb91('0x7')][_0x5dfdea['interface']]){this[_0xbb91('0x9')][_0x5dfdea[_0xbb91('0x2e')]]={'queue':_0x5dfdea[_0xbb91('0x18')],'interface':_0x5dfdea['interface']};}}}catch(_0x19ddc4){logger[_0xbb91('0x32')]('[ACW][syncAgentConnectPreview]\x20%s',_0x19ddc4[_0xbb91('0x36')]);}};Acw[_0xbb91('0x37')][_0xbb91('0x3d')]=function(_0x594897){try{if(this['channels'][_0x594897[_0xbb91('0x2e')]]&&_['isUndefined'](this[_0xbb91('0x9')][_0x594897[_0xbb91('0x2e')]][_0xbb91('0x24')])){logger[_0xbb91('0x22')](_0xbb91('0x3e'),_0x594897[_0xbb91('0x2e')]);this[_0xbb91('0x16')](_0x594897[_0xbb91('0x2e')]);}else if(this[_0xbb91('0x9')][_0x594897[_0xbb91('0x3f')]]&&_['isUndefined'](this[_0xbb91('0x9')][_0x594897[_0xbb91('0x3f')]][_0xbb91('0x24')])){logger[_0xbb91('0x22')](_0xbb91('0x40'),_0x594897[_0xbb91('0x3f')]);this[_0xbb91('0x16')](_0x594897[_0xbb91('0x3f')]);}}catch(_0x34ce93){logger[_0xbb91('0x32')]('[ACW][syncHangupRequest]\x20%s',_0x34ce93[_0xbb91('0x36')]);}};Acw[_0xbb91('0x37')][_0xbb91('0xe')]=function(_0x415911){try{if(this[_0xbb91('0x9')][_0x415911[_0xbb91('0x2e')]]&&this[_0xbb91('0x9')][_0x415911[_0xbb91('0x2e')]][_0xbb91('0x24')]){logger[_0xbb91('0x22')](_0xbb91('0x41'),_0x415911['uniqueid']);this[_0xbb91('0x16')](_0x415911['uniqueid']);}else if(this[_0xbb91('0x9')][_0x415911[_0xbb91('0x3f')]]&&this['channels'][_0x415911[_0xbb91('0x3f')]][_0xbb91('0x24')]){logger[_0xbb91('0x22')](_0xbb91('0x42'),_0x415911[_0xbb91('0x3f')]);this['startAcw'](_0x415911['linkedid']);}}catch(_0x1d949c){logger[_0xbb91('0x32')](_0xbb91('0x43'),_0x1d949c[_0xbb91('0x36')]);}};Acw[_0xbb91('0x37')]['syncAttendedTransfer']=function(_0x21651f){try{if(!_[_0xbb91('0x44')](this[_0xbb91('0x9')][_0x21651f[_0xbb91('0x45')]])){this[_0xbb91('0x16')](_0x21651f[_0xbb91('0x45')]);if(this[_0xbb91('0x9')][_0x21651f[_0xbb91('0x46')]]){this[_0xbb91('0x9')][_0x21651f[_0xbb91('0x46')]][_0xbb91('0x24')]=!![];this['channels'][_0x21651f[_0xbb91('0x47')]]=this[_0xbb91('0x9')][_0x21651f[_0xbb91('0x46')]];delete this['channels'][_0x21651f[_0xbb91('0x46')]];}}else if(!_[_0xbb91('0x44')](this[_0xbb91('0x9')][_0x21651f[_0xbb91('0x47')]])){this[_0xbb91('0x16')](_0x21651f['transfertargetuniqueid']);if(this['channels'][_0x21651f['origtransfereruniqueid']]){this[_0xbb91('0x9')][_0x21651f['origtransfereruniqueid']][_0xbb91('0x24')]=!![];this['channels'][_0x21651f[_0xbb91('0x45')]]=this[_0xbb91('0x9')][_0x21651f[_0xbb91('0x48')]];delete this[_0xbb91('0x9')][_0x21651f[_0xbb91('0x48')]];}}}catch(_0x197340){logger[_0xbb91('0x32')]('[ACW][syncAttendedTransfer]\x20%s',_0x197340[_0xbb91('0x36')]);}};Acw[_0xbb91('0x37')][_0xbb91('0x49')]=function(_0x25e242){try{if(this[_0xbb91('0x9')][_0x25e242[_0xbb91('0x4a')]]){logger[_0xbb91('0x22')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0xbb91('0x3b')](_0x25e242['transfereruniqueid']));this[_0xbb91('0x16')](_0x25e242[_0xbb91('0x4a')]);}else if(this[_0xbb91('0x9')][_0x25e242[_0xbb91('0x4b')]]){logger['info'](_0xbb91('0x4c'),JSON[_0xbb91('0x3b')](_0x25e242[_0xbb91('0x4b')]));this[_0xbb91('0x16')](_0x25e242[_0xbb91('0x4b')]);}}catch(_0x4b63b9){logger['error']('[ACW][syncBlindTransfer]\x20%s',_0x4b63b9[_0xbb91('0x36')]);}};Acw['prototype'][_0xbb91('0x10')]=function(_0x3ef1b2){try{if(this['voiceQueues'][_0x3ef1b2[_0xbb91('0x18')]]&&this['voiceQueues'][_0x3ef1b2[_0xbb91('0x18')]]['autopause']==='all'){if(this[_0xbb91('0x7')][_0x3ef1b2[_0xbb91('0x17')]]){logger[_0xbb91('0x22')](_0xbb91('0x4d'),_0x3ef1b2[_0xbb91('0x2e')],_0x3ef1b2[_0xbb91('0x17')],_0x3ef1b2[_0xbb91('0x18')]);return RpcUser[_0xbb91('0x26')](this['agents'][_0x3ef1b2[_0xbb91('0x17')]],'Auto-Pause',_0x3ef1b2[_0xbb91('0x2e')]);}}}catch(_0x20364f){logger[_0xbb91('0x32')](_0xbb91('0x4e'),_0x20364f[_0xbb91('0x36')]);}};module[_0xbb91('0x4f')]=Acw;
\ No newline at end of file
+var _0x1ad3=['lodash','moment','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','syncAgentConnect','bind','hanguprequest','syncHangupRequest','syncHangup','syncAgentRingNoAnswer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','interface','mandatoryDisposition','name','mandatoryDispositionPause','Action','QueuePause','then','getAgent','voicePause','attended','destlinkedid','savePause','info','acwTimeout','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','queue','updateAcw','update','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','startAcw','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','stringify','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','[ACW][syncAgentRingNoAnswer]\x20%s','util'];(function(_0x52fb42,_0x11c8f3){var _0x47e7c1=function(_0xaeec29){while(--_0xaeec29){_0x52fb42['push'](_0x52fb42['shift']());}};_0x47e7c1(++_0x11c8f3);}(_0x1ad3,0x1f1));var _0x31ad=function(_0x26bcec,_0xe13f50){_0x26bcec=_0x26bcec-0x0;var _0x1049dc=_0x1ad3[_0x26bcec];return _0x1049dc;};'use strict';var util=require(_0x31ad('0x0'));var _=require(_0x31ad('0x1'));var moment=require(_0x31ad('0x2'));var ami=require('../ami');var logger=require('../../../config/logger')(_0x31ad('0x3'));var RpcUser=require(_0x31ad('0x4'));var RpcVoiceAgentReport=require(_0x31ad('0x5'));function Acw(_0x15e4dc){this['voiceQueues']=_0x15e4dc[_0x31ad('0x6')];this[_0x31ad('0x7')]=_0x15e4dc[_0x31ad('0x7')];this[_0x31ad('0x8')]=_0x15e4dc[_0x31ad('0x8')];this[_0x31ad('0x9')]={};ami['on']('agentconnect',this[_0x31ad('0xa')][_0x31ad('0xb')](this));ami['on'](_0x31ad('0xc'),this[_0x31ad('0xd')][_0x31ad('0xb')](this));ami['on']('hangup',this[_0x31ad('0xe')][_0x31ad('0xb')](this));ami['on']('agentringnoanswer',this[_0x31ad('0xf')][_0x31ad('0xb')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer']['bind'](this));ami['on'](_0x31ad('0x10'),this[_0x31ad('0x11')][_0x31ad('0xb')](this));ami['on'](_0x31ad('0x12'),this[_0x31ad('0x13')][_0x31ad('0xb')](this));}function getDiff(_0x2d5e1a){var _0x150a2d=moment()[_0x31ad('0x14')](0x0);var _0x42b9a1=moment(_0x2d5e1a)[_0x31ad('0x14')](0x0);return _0x150a2d[_0x31ad('0x15')](_0x42b9a1,_0x31ad('0x16'));}Acw[_0x31ad('0x17')]['startAcw']=function(_0x40a973){try{var _0x1afa27=this;var _0x308a7c=this['channels'][_0x40a973][_0x31ad('0x18')];var _0x2b34d8=this[_0x31ad('0x9')][_0x40a973]['queue'];var _0x427d78=this[_0x31ad('0x6')][_0x2b34d8];var _0x3d3c54=![];var _0x84fd7='ACW';if(_0x427d78[_0x31ad('0x19')]){if(_0x427d78['mandatoryDispositionPause'][_0x31ad('0x1a')]){_0x3d3c54=!![];_0x84fd7=_0x427d78[_0x31ad('0x1b')][_0x31ad('0x1a')];}}ami[_0x31ad('0x1c')]({'action':_0x31ad('0x1d'),'interface':_0x308a7c,'paused':!![],'reason':_0x84fd7})[_0x31ad('0x1e')](function(_0x340cab){if(_0x1afa27['agents'][_0x308a7c]){return RpcUser[_0x31ad('0x1f')](_0x1afa27[_0x31ad('0x7')][_0x308a7c]['id'])['then'](function(_0x34384f){if(_0x34384f&&!_0x34384f[_0x31ad('0x20')]){logger['info']('[%s][START][AGENT:%s][QUEUE:%s]',_0x40a973,_0x308a7c,_0x2b34d8);var _0x43f7d8=_0x1afa27[_0x31ad('0x9')][_0x40a973][_0x31ad('0x21')]&&_0x1afa27[_0x31ad('0x9')][_0x40a973]['destlinkedid']?_0x1afa27[_0x31ad('0x9')][_0x40a973][_0x31ad('0x22')]:_0x40a973;return RpcUser[_0x31ad('0x23')](_0x1afa27['agents'][_0x308a7c],_0x84fd7,_0x43f7d8)[_0x31ad('0x1e')](function(_0x23c0d0){if(!_0x3d3c54){_0x1afa27['timers'][_0x308a7c]={};logger[_0x31ad('0x24')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x40a973,_0x1afa27[_0x31ad('0x6')][_0x2b34d8][_0x31ad('0x25')],_0x308a7c,_0x2b34d8);_0x1afa27[_0x31ad('0x8')][_0x308a7c][_0x31ad('0x26')]=setTimeout(_0x1afa27[_0x31ad('0x27')][_0x31ad('0xb')](_0x1afa27,_0x308a7c),_0x1afa27[_0x31ad('0x6')][_0x2b34d8][_0x31ad('0x25')]*0x3e8);_0x1afa27[_0x31ad('0x8')][_0x308a7c][_0x31ad('0x28')]=moment()[_0x31ad('0x29')](_0x31ad('0x2a'));_0x1afa27[_0x31ad('0x8')][_0x308a7c][_0x31ad('0x2b')]=_0x40a973;_0x1afa27['timers'][_0x308a7c][_0x31ad('0x2c')]=_0x2b34d8;_0x1afa27['timers'][_0x308a7c][_0x31ad('0x2d')]=function(){var _0x5f09bf=getDiff(_0x1afa27[_0x31ad('0x8')][_0x308a7c][_0x31ad('0x28')]);clearTimeout(_0x1afa27[_0x31ad('0x8')][_0x308a7c][_0x31ad('0x26')]);_0x1afa27[_0x31ad('0x8')][_0x308a7c]['timer']=![];RpcVoiceAgentReport[_0x31ad('0x2e')]({'acwtime':_0x5f09bf},_0x1afa27[_0x31ad('0x8')][_0x308a7c][_0x31ad('0x2b')],_0x308a7c)[_0x31ad('0x1e')](function(_0x2e707d){logger[_0x31ad('0x24')]('[%s][UPDATE][ACWTIME:%s]',_0x40a973,_0x5f09bf,_0x2e707d);})[_0x31ad('0x2f')](function(_0x190cf3){logger[_0x31ad('0x30')](_0x31ad('0x31'),_0x40a973,_0x190cf3);});delete _0x1afa27[_0x31ad('0x8')][_0x308a7c];};}});}else{logger[_0x31ad('0x24')](_0x31ad('0x32'),_0x40a973,_0x308a7c,_0x2b34d8);}});}})[_0x31ad('0x2f')](function(_0x518d35){logger[_0x31ad('0x30')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x40a973,_0x1afa27['voiceQueues'][_0x2b34d8]['acwTimeout'],_0x308a7c,_0x2b34d8);})[_0x31ad('0x33')](function(){delete _0x1afa27[_0x31ad('0x9')][_0x40a973];});}catch(_0x4ae20b){logger['error']('[ACW][START]\x20%s',_0x4ae20b[_0x31ad('0x34')]);}};Acw[_0x31ad('0x17')][_0x31ad('0x27')]=function(_0x1ffed0){try{var _0x5946d5=this;if(_0x5946d5['timers'][_0x1ffed0]){_0x5946d5[_0x31ad('0x8')][_0x1ffed0]['timer']=![];var _0x4ba0a8=_0x5946d5[_0x31ad('0x8')][_0x1ffed0][_0x31ad('0x2b')];var _0xa91587=_0x5946d5[_0x31ad('0x8')][_0x1ffed0]['queue'];var _0x16b984=_0x5946d5[_0x31ad('0x6')][_0xa91587][_0x31ad('0x25')];logger[_0x31ad('0x24')](_0x31ad('0x35'),_0x4ba0a8,_0x1ffed0);RpcUser[_0x31ad('0x36')](this[_0x31ad('0x7')][_0x1ffed0]);RpcVoiceAgentReport[_0x31ad('0x2e')]({'acwtime':_0x16b984,'agentacw':!![]},_0x4ba0a8,_0x1ffed0)[_0x31ad('0x1e')](function(_0x335201){logger['info'](_0x31ad('0x37'),_0x4ba0a8,_0x16b984,_0x335201);})[_0x31ad('0x2f')](function(_0x2d9287){logger[_0x31ad('0x30')](_0x31ad('0x31'),_0x4ba0a8,_0x2d9287);});}else{logger[_0x31ad('0x30')](_0x31ad('0x38'),_0x1ffed0);if(_0x5946d5[_0x31ad('0x8')]){logger[_0x31ad('0x24')](_0x31ad('0x39'),JSON['stringify'](_0x5946d5[_0x31ad('0x8')]));}}}catch(_0x3313a1){logger[_0x31ad('0x30')](_0x31ad('0x3a'),_0x3313a1[_0x31ad('0x34')]);}};Acw['prototype'][_0x31ad('0xa')]=function(_0x5592a7){try{if(this['voiceQueues'][_0x5592a7['queue']]&&(this[_0x31ad('0x6')][_0x5592a7[_0x31ad('0x2c')]][_0x31ad('0x3')]||this['voiceQueues'][_0x5592a7['queue']]['mandatoryDisposition'])){if(this['agents'][_0x5592a7[_0x31ad('0x18')]]){this['channels'][_0x5592a7[_0x31ad('0x2b')]]={'queue':_0x5592a7[_0x31ad('0x2c')],'interface':_0x5592a7[_0x31ad('0x18')],'destlinkedid':_0x5592a7[_0x31ad('0x22')]};}}}catch(_0xc56b0f){logger[_0x31ad('0x30')](_0x31ad('0x3b'),_0xc56b0f['message']);}};Acw[_0x31ad('0x17')][_0x31ad('0x13')]=function(_0x166e65){try{if(this['voiceQueues'][_0x166e65['queue']]&&(this[_0x31ad('0x6')][_0x166e65[_0x31ad('0x2c')]][_0x31ad('0x3')]||this[_0x31ad('0x6')][_0x166e65['queue']][_0x31ad('0x19')])){if(this['agents'][_0x166e65[_0x31ad('0x18')]]){this[_0x31ad('0x9')][_0x166e65['uniqueid']]={'queue':_0x166e65['queue'],'interface':_0x166e65[_0x31ad('0x18')]};}}}catch(_0x320a46){logger[_0x31ad('0x30')]('[ACW][syncAgentConnectPreview]\x20%s',_0x320a46[_0x31ad('0x34')]);}};Acw[_0x31ad('0x17')][_0x31ad('0xd')]=function(_0x5b54ac){try{if(this[_0x31ad('0x9')][_0x5b54ac['uniqueid']]&&_[_0x31ad('0x3c')](this['channels'][_0x5b54ac['uniqueid']][_0x31ad('0x21')])){logger['info'](_0x31ad('0x3d'),_0x5b54ac['uniqueid']);this['startAcw'](_0x5b54ac[_0x31ad('0x2b')]);}else if(this['channels'][_0x5b54ac[_0x31ad('0x3e')]]&&_[_0x31ad('0x3c')](this[_0x31ad('0x9')][_0x5b54ac['linkedid']][_0x31ad('0x21')])){logger[_0x31ad('0x24')]('[%s][HANGUP:LINKEDID]',_0x5b54ac[_0x31ad('0x3e')]);this[_0x31ad('0x3f')](_0x5b54ac[_0x31ad('0x3e')]);}}catch(_0x45e91e){logger['error'](_0x31ad('0x40'),_0x45e91e[_0x31ad('0x34')]);}};Acw[_0x31ad('0x17')][_0x31ad('0xe')]=function(_0x513863){try{if(this[_0x31ad('0x9')][_0x513863['uniqueid']]&&this[_0x31ad('0x9')][_0x513863[_0x31ad('0x2b')]][_0x31ad('0x21')]){logger[_0x31ad('0x24')](_0x31ad('0x41'),_0x513863[_0x31ad('0x2b')]);this['startAcw'](_0x513863[_0x31ad('0x2b')]);}else if(this[_0x31ad('0x9')][_0x513863[_0x31ad('0x3e')]]&&this['channels'][_0x513863[_0x31ad('0x3e')]][_0x31ad('0x21')]){logger[_0x31ad('0x24')](_0x31ad('0x42'),_0x513863[_0x31ad('0x3e')]);this[_0x31ad('0x3f')](_0x513863[_0x31ad('0x3e')]);}}catch(_0x144056){logger[_0x31ad('0x30')](_0x31ad('0x43'),_0x144056[_0x31ad('0x34')]);}};Acw['prototype']['syncAttendedTransfer']=function(_0x51bb47){try{if(!_[_0x31ad('0x44')](this[_0x31ad('0x9')][_0x51bb47[_0x31ad('0x45')]])){this[_0x31ad('0x3f')](_0x51bb47[_0x31ad('0x45')]);if(this[_0x31ad('0x9')][_0x51bb47[_0x31ad('0x46')]]){this[_0x31ad('0x9')][_0x51bb47[_0x31ad('0x46')]]['attended']=!![];this[_0x31ad('0x9')][_0x51bb47[_0x31ad('0x47')]]=this['channels'][_0x51bb47[_0x31ad('0x46')]];delete this[_0x31ad('0x9')][_0x51bb47[_0x31ad('0x46')]];}}else if(!_[_0x31ad('0x44')](this[_0x31ad('0x9')][_0x51bb47[_0x31ad('0x47')]])){this[_0x31ad('0x3f')](_0x51bb47[_0x31ad('0x47')]);if(this['channels'][_0x51bb47[_0x31ad('0x48')]]){this[_0x31ad('0x9')][_0x51bb47[_0x31ad('0x48')]][_0x31ad('0x21')]=!![];this[_0x31ad('0x9')][_0x51bb47['transfereeuniqueid']]=this[_0x31ad('0x9')][_0x51bb47[_0x31ad('0x48')]];delete this[_0x31ad('0x9')][_0x51bb47[_0x31ad('0x48')]];}}}catch(_0x5c3db6){logger[_0x31ad('0x30')](_0x31ad('0x49'),_0x5c3db6['message']);}};Acw[_0x31ad('0x17')][_0x31ad('0x11')]=function(_0x2971f5){try{if(this[_0x31ad('0x9')][_0x2971f5[_0x31ad('0x4a')]]){logger['info'](_0x31ad('0x4b'),JSON['stringify'](_0x2971f5[_0x31ad('0x4a')]));this[_0x31ad('0x3f')](_0x2971f5[_0x31ad('0x4a')]);}else if(this[_0x31ad('0x9')][_0x2971f5[_0x31ad('0x4c')]]){logger['info']('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x31ad('0x4d')](_0x2971f5[_0x31ad('0x4c')]));this['startAcw'](_0x2971f5[_0x31ad('0x4c')]);}}catch(_0x53c3cb){logger[_0x31ad('0x30')](_0x31ad('0x4e'),_0x53c3cb[_0x31ad('0x34')]);}};Acw['prototype'][_0x31ad('0xf')]=function(_0x47835f){try{if(this['voiceQueues'][_0x47835f['queue']]&&this[_0x31ad('0x6')][_0x47835f['queue']][_0x31ad('0x4f')]===_0x31ad('0x50')){if(this[_0x31ad('0x7')][_0x47835f[_0x31ad('0x18')]]){logger[_0x31ad('0x24')](_0x31ad('0x51'),_0x47835f[_0x31ad('0x2b')],_0x47835f[_0x31ad('0x18')],_0x47835f[_0x31ad('0x2c')]);return RpcUser[_0x31ad('0x23')](this[_0x31ad('0x7')][_0x47835f['interface']],'Auto-Pause',_0x47835f[_0x31ad('0x2b')]);}}}catch(_0x562572){logger[_0x31ad('0x30')](_0x31ad('0x52'),_0x562572[_0x31ad('0x34')]);}};module['exports']=Acw;
\ No newline at end of file
index a427c97..b14babe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['username','Action','devicestatelist','actionSipPeerStatus','sippeerstatus','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','actionSipShowRegistry','actionDeviceStateList','catch','[ami.js][fullybooted]','exports','asterisk-manager','moment','lodash','ami','asterisk','port','password','keepConnected','promisify','action','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s'];(function(_0x46199b,_0x1158b8){var _0x14ce2a=function(_0x4a5571){while(--_0x4a5571){_0x46199b['push'](_0x46199b['shift']());}};_0x14ce2a(++_0x1158b8);}(_0xb7e7,0x121));var _0x7b7e=function(_0x424a9a,_0x2dd9af){_0x424a9a=_0x424a9a-0x0;var _0xa7831c=_0xb7e7[_0x424a9a];return _0xa7831c;};'use strict';var Manager=require(_0x7b7e('0x0'));var BPromise=require('bluebird');var moment=require(_0x7b7e('0x1'));var util=require('util');var _=require(_0x7b7e('0x2'));var logger=require('../../config/logger')(_0x7b7e('0x3'));var config=require('../../config/environment');var ami=new Manager(config[_0x7b7e('0x4')][_0x7b7e('0x5')],config[_0x7b7e('0x4')]['ip'],config['asterisk']['username'],config[_0x7b7e('0x4')][_0x7b7e('0x6')],!![]);ami[_0x7b7e('0x7')]();ami['Action']=BPromise[_0x7b7e('0x8')](ami[_0x7b7e('0x9')]);function error(_0x2917f9){logger[_0x7b7e('0xa')](util[_0x7b7e('0xb')](_0x7b7e('0xc'),config[_0x7b7e('0x4')]['username'],config[_0x7b7e('0x4')]['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')],util[_0x7b7e('0xd')](_0x2917f9,![],null)));}function close(){logger[_0x7b7e('0xa')](util[_0x7b7e('0xb')](_0x7b7e('0xe'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config['asterisk']['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')]));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0x7b7e('0x10')]({'action':'sipshowregistry'});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0x7b7e('0x10')]({'action':_0x7b7e('0x11')});};};ami[_0x7b7e('0x12')]=function(){return function(){return ami[_0x7b7e('0x10')]({'action':_0x7b7e('0x13')});};};ami['actionQueueSummary']=function(){return function(){return ami['Action']({'action':_0x7b7e('0x14')});};};ami[_0x7b7e('0x15')]=function(){return function(){return ami[_0x7b7e('0x10')]({'action':_0x7b7e('0x16')});};};function connect(_0x2cc400){logger[_0x7b7e('0x17')](util[_0x7b7e('0xb')](_0x7b7e('0x18'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config[_0x7b7e('0x4')]['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')]));ami[_0x7b7e('0x19')](_0x7b7e('0xa'),error);ami[_0x7b7e('0x19')](_0x7b7e('0x1a'),close);}ami['on']('connect',connect);ami['on'](_0x7b7e('0x1b'),function(_0x43db4f){logger[_0x7b7e('0x17')](util['format'](_0x7b7e('0x1c'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config[_0x7b7e('0x4')]['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')],util[_0x7b7e('0xd')](_0x43db4f,![],null)));});ami['on'](_0x7b7e('0x1d'),function(_0x53bbb3){logger['info'](util['format'](_0x7b7e('0x1e'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config['asterisk']['ip'],config['asterisk']['port']));return BPromise[_0x7b7e('0x1f')]()[_0x7b7e('0x20')](ami[_0x7b7e('0x21')]())[_0x7b7e('0x20')](ami[_0x7b7e('0x22')]())['then'](ami[_0x7b7e('0x12')]())[_0x7b7e('0x20')](ami['actionQueueSummary']())['then'](ami['actionCoreShowChannels']())[_0x7b7e('0x23')](function(_0x423832){logger['error'](_0x7b7e('0x24'),util['inspect'](_0x423832,{'showHidden':![],'depth':null}));});});ami[_0x7b7e('0x19')](_0x7b7e('0xa'),error);ami[_0x7b7e('0x19')]('close',close);module[_0x7b7e('0x25')]=ami;
\ No newline at end of file
+var _0xb7e7=['username','Action','devicestatelist','actionSipPeerStatus','sippeerstatus','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','actionSipShowRegistry','actionDeviceStateList','catch','[ami.js][fullybooted]','exports','asterisk-manager','moment','lodash','ami','asterisk','port','password','keepConnected','promisify','action','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s'];(function(_0x5d0871,_0x33af0f){var _0x1a101c=function(_0x474243){while(--_0x474243){_0x5d0871['push'](_0x5d0871['shift']());}};_0x1a101c(++_0x33af0f);}(_0xb7e7,0x121));var _0x7b7e=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xb7e7[_0x21a9d9];return _0x46adce;};'use strict';var Manager=require(_0x7b7e('0x0'));var BPromise=require('bluebird');var moment=require(_0x7b7e('0x1'));var util=require('util');var _=require(_0x7b7e('0x2'));var logger=require('../../config/logger')(_0x7b7e('0x3'));var config=require('../../config/environment');var ami=new Manager(config[_0x7b7e('0x4')][_0x7b7e('0x5')],config[_0x7b7e('0x4')]['ip'],config['asterisk']['username'],config[_0x7b7e('0x4')][_0x7b7e('0x6')],!![]);ami[_0x7b7e('0x7')]();ami['Action']=BPromise[_0x7b7e('0x8')](ami[_0x7b7e('0x9')]);function error(_0x2917f9){logger[_0x7b7e('0xa')](util[_0x7b7e('0xb')](_0x7b7e('0xc'),config[_0x7b7e('0x4')]['username'],config[_0x7b7e('0x4')]['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')],util[_0x7b7e('0xd')](_0x2917f9,![],null)));}function close(){logger[_0x7b7e('0xa')](util[_0x7b7e('0xb')](_0x7b7e('0xe'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config['asterisk']['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')]));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0x7b7e('0x10')]({'action':'sipshowregistry'});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0x7b7e('0x10')]({'action':_0x7b7e('0x11')});};};ami[_0x7b7e('0x12')]=function(){return function(){return ami[_0x7b7e('0x10')]({'action':_0x7b7e('0x13')});};};ami['actionQueueSummary']=function(){return function(){return ami['Action']({'action':_0x7b7e('0x14')});};};ami[_0x7b7e('0x15')]=function(){return function(){return ami[_0x7b7e('0x10')]({'action':_0x7b7e('0x16')});};};function connect(_0x2cc400){logger[_0x7b7e('0x17')](util[_0x7b7e('0xb')](_0x7b7e('0x18'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config[_0x7b7e('0x4')]['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')]));ami[_0x7b7e('0x19')](_0x7b7e('0xa'),error);ami[_0x7b7e('0x19')](_0x7b7e('0x1a'),close);}ami['on']('connect',connect);ami['on'](_0x7b7e('0x1b'),function(_0x43db4f){logger[_0x7b7e('0x17')](util['format'](_0x7b7e('0x1c'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config[_0x7b7e('0x4')]['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')],util[_0x7b7e('0xd')](_0x43db4f,![],null)));});ami['on'](_0x7b7e('0x1d'),function(_0x53bbb3){logger['info'](util['format'](_0x7b7e('0x1e'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config['asterisk']['ip'],config['asterisk']['port']));return BPromise[_0x7b7e('0x1f')]()[_0x7b7e('0x20')](ami[_0x7b7e('0x21')]())[_0x7b7e('0x20')](ami[_0x7b7e('0x22')]())['then'](ami[_0x7b7e('0x12')]())[_0x7b7e('0x20')](ami['actionQueueSummary']())['then'](ami['actionCoreShowChannels']())[_0x7b7e('0x23')](function(_0x423832){logger['error'](_0x7b7e('0x24'),util['inspect'](_0x423832,{'showHidden':![],'depth':null}));});});ami[_0x7b7e('0x19')](_0x7b7e('0xa'),error);ami[_0x7b7e('0x19')]('close',close);module[_0x7b7e('0x25')]=ami;
\ No newline at end of file
index cd8048f..778875a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4a=['ami','client','http','then','debug','memberReport','error','message','result','catch','rpc','jayson/promise','bluebird','../../config/logger'];(function(_0x22f9c0,_0x35410c){var _0x1883fe=function(_0x5a5601){while(--_0x5a5601){_0x22f9c0['push'](_0x22f9c0['shift']());}};_0x1883fe(++_0x35410c);}(_0xac4a,0x13f));var _0xaac4=function(_0x573c1c,_0x2f2a15){_0x573c1c=_0x573c1c-0x0;var _0x53a471=_0xac4a[_0x573c1c];return _0x53a471;};'use strict';var jayson=require(_0xaac4('0x0'));var BPromise=require(_0xaac4('0x1'));var logger=require(_0xaac4('0x2'))(_0xaac4('0x3'));var client=jayson[_0xaac4('0x4')][_0xaac4('0x5')]({'port':0x2329});client['Request']=function(_0x58626e,_0x2af0f6){return new BPromise(function(_0x2a5762,_0x32d34c){return client['request'](_0x58626e,_0x2af0f6)[_0xaac4('0x6')](function(_0x53d03a){logger[_0xaac4('0x7')]('rpc',_0xaac4('0x8'),_0x58626e,_0x2af0f6,_0x53d03a);if(_0x53d03a[_0xaac4('0x9')]){logger['error']('rpc',_0xaac4('0x8'),_0x58626e,_0x53d03a['error'][_0xaac4('0xa')],_0x2af0f6);return _0x32d34c(_0x53d03a['error']['message']);}else{return _0x2a5762(_0x53d03a[_0xaac4('0xb')]);}})[_0xaac4('0xc')](function(_0x38d1d0){logger[_0xaac4('0x9')](_0xaac4('0xd'),'memberReport',_0x58626e,_0x38d1d0,_0x2af0f6);return _0x32d34c(_0x38d1d0);});});};module['exports']=client;
\ No newline at end of file
+var _0xbdb7=['result','catch','jayson/promise','bluebird','../../config/logger','ami','client','http','Request','debug','error','message'];(function(_0x216fe7,_0x33f932){var _0x1adc79=function(_0x1e9307){while(--_0x1e9307){_0x216fe7['push'](_0x216fe7['shift']());}};_0x1adc79(++_0x33f932);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x502eb0,_0x6d0814){_0x502eb0=_0x502eb0-0x0;var _0x4f78e4=_0xbdb7[_0x502eb0];return _0x4f78e4;};'use strict';var jayson=require(_0x7bdb('0x0'));var BPromise=require(_0x7bdb('0x1'));var logger=require(_0x7bdb('0x2'))(_0x7bdb('0x3'));var client=jayson[_0x7bdb('0x4')][_0x7bdb('0x5')]({'port':0x2329});client[_0x7bdb('0x6')]=function(_0x2c7e07,_0x46c068){return new BPromise(function(_0x47aec5,_0x28542c){return client['request'](_0x2c7e07,_0x46c068)['then'](function(_0xffdc86){logger[_0x7bdb('0x7')]('rpc','memberReport',_0x2c7e07,_0x46c068,_0xffdc86);if(_0xffdc86[_0x7bdb('0x8')]){logger[_0x7bdb('0x8')]('rpc','memberReport',_0x2c7e07,_0xffdc86[_0x7bdb('0x8')][_0x7bdb('0x9')],_0x46c068);return _0x28542c(_0xffdc86[_0x7bdb('0x8')][_0x7bdb('0x9')]);}else{return _0x47aec5(_0xffdc86[_0x7bdb('0xa')]);}})[_0x7bdb('0xb')](function(_0x297724){logger[_0x7bdb('0x8')]('rpc','memberReport',_0x2c7e07,_0x297724,_0x46c068);return _0x28542c(_0x297724);});});};module['exports']=client;
\ No newline at end of file
index 0bf9548..7f6b216 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb657=['countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','voiceQueue','dialCutDigit','substring','getQueue','exports','util','isNil','string','uniqueid','name','Contact','phone','firstName','number','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xb657,0x9e));var _0x7b65=function(_0xc8a931,_0x260690){_0xc8a931=_0xc8a931-0x0;var _0x28bd27=_0xb657[_0xc8a931];return _0x28bd27;};'use strict';var util=require(_0x7b65('0x0'));var _=require('lodash');var moment=require('moment');function checkNameSurname(_0x176676,_0x456f2a,_0xfb940a){var _0x4bd6ce='';if(!_[_0x7b65('0x1')](_0x456f2a)&&_0x7b65('0x2')===typeof _0x456f2a){_0x4bd6ce+=_0x456f2a;}if(!_['isNil'](_0xfb940a)&&_0x7b65('0x2')===typeof _0xfb940a){_0x4bd6ce+='\x20'+_0xfb940a;}if(_0x4bd6ce!==''){return _0x4bd6ce;}return _0x176676;}function Action(_0x76ab6a,_0x242083,_0xc425af){this['voiceQueue']=_0x76ab6a;this[_0x7b65('0x3')]=_0xc425af||undefined;this[_0x7b65('0x4')]=checkNameSurname(_0x242083[_0x7b65('0x5')][_0x7b65('0x6')],_0x242083['Contact'][_0x7b65('0x7')],_0x242083['Contact']['lastName']);this[_0x7b65('0x8')]=_0x242083[_0x7b65('0x5')][_0x7b65('0x6')];this['queue']=_0x76ab6a[_0x7b65('0x4')];this[_0x7b65('0x9')]=_0x242083[_0x7b65('0x9')]||![];this[_0x7b65('0xa')]=_0x76ab6a['type'];this[_0x7b65('0xb')]=_0x76ab6a[_0x7b65('0xb')]||0x3;this[_0x7b65('0xc')]=_0x242083[_0x7b65('0xc')];this['countbusyretry']=_0x242083[_0x7b65('0xd')];this[_0x7b65('0xe')]=_0x242083[_0x7b65('0xe')];this[_0x7b65('0xf')]=_0x242083['countnoanswerretry'];this[_0x7b65('0x10')]=_0x242083[_0x7b65('0x10')];this[_0x7b65('0x11')]=_0x242083[_0x7b65('0x11')];this[_0x7b65('0x12')]=_0x242083[_0x7b65('0x12')];this[_0x7b65('0x13')]=_0x242083[_0x7b65('0x13')];this[_0x7b65('0x14')]=_0x242083['countagentrejectretry'];this[_0x7b65('0x15')]=_0x242083[_0x7b65('0x15')];this['ListId']=_0x242083[_0x7b65('0x16')];this[_0x7b65('0x17')]=_0x242083[_0x7b65('0x17')];this[_0x7b65('0x18')]=_0x242083[_0x7b65('0x18')];this[_0x7b65('0x19')]=_0x242083[_0x7b65('0x19')];this[_0x7b65('0x1a')]=_0x242083['id'];this[_0x7b65('0x1b')]=_0x242083[_0x7b65('0x5')]['firstName']||'';this[_0x7b65('0x1c')]=moment()[_0x7b65('0x1d')](_0x7b65('0x1e'));this[_0x7b65('0x1f')]=_0x242083[_0x7b65('0x1f')];this[_0x7b65('0x20')]=_0x242083[_0x7b65('0x20')];this[_0x7b65('0x21')]=_0x242083[_0x7b65('0x21')];this[_0x7b65('0x22')]=_0x242083['recallme'];this['originatecalleridnum']='';this[_0x7b65('0x23')]='';}Action[_0x7b65('0x24')][_0x7b65('0x25')]=function(){return util[_0x7b65('0x1d')](_0x7b65('0x26'),this['name'],this[_0x7b65('0x27')][_0x7b65('0x28')]>0x0?this[_0x7b65('0x8')][_0x7b65('0x29')](this[_0x7b65('0x27')][_0x7b65('0x28')]):this[_0x7b65('0x8')]);};Action[_0x7b65('0x24')][_0x7b65('0x2a')]=function(){return this['queue'];};module[_0x7b65('0x2b')]=Action;
\ No newline at end of file
+var _0x00e2=['countcongestionretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','prototype','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','substring','number','getQueue','exports','lodash','isNil','string','voiceQueue','uniqueid','name','phone','Contact','firstName','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry'];(function(_0x369cf2,_0x47e28c){var _0x5c7d3e=function(_0x4143d9){while(--_0x4143d9){_0x369cf2['push'](_0x369cf2['shift']());}};_0x5c7d3e(++_0x47e28c);}(_0x00e2,0x95));var _0x200e=function(_0x30f395,_0x3629b5){_0x30f395=_0x30f395-0x0;var _0x2ea0ee=_0x00e2[_0x30f395];return _0x2ea0ee;};'use strict';var util=require('util');var _=require(_0x200e('0x0'));var moment=require('moment');function checkNameSurname(_0x39313a,_0x249fa5,_0x244c11){var _0x3b9792='';if(!_[_0x200e('0x1')](_0x249fa5)&&_0x200e('0x2')===typeof _0x249fa5){_0x3b9792+=_0x249fa5;}if(!_[_0x200e('0x1')](_0x244c11)&&_0x200e('0x2')===typeof _0x244c11){_0x3b9792+='\x20'+_0x244c11;}if(_0x3b9792!==''){return _0x3b9792;}return _0x39313a;}function Action(_0x5dc4f2,_0x1badcd,_0x4cb54a){this[_0x200e('0x3')]=_0x5dc4f2;this[_0x200e('0x4')]=_0x4cb54a||undefined;this[_0x200e('0x5')]=checkNameSurname(_0x1badcd['Contact'][_0x200e('0x6')],_0x1badcd[_0x200e('0x7')][_0x200e('0x8')],_0x1badcd[_0x200e('0x7')]['lastName']);this['number']=_0x1badcd[_0x200e('0x7')][_0x200e('0x6')];this[_0x200e('0x9')]=_0x5dc4f2[_0x200e('0x5')];this['active']=_0x1badcd[_0x200e('0xa')]||![];this[_0x200e('0xb')]=_0x5dc4f2['type'];this[_0x200e('0xc')]=_0x5dc4f2['dialQueueTimeout']||0x3;this[_0x200e('0xd')]=_0x1badcd[_0x200e('0xd')];this[_0x200e('0xe')]=_0x1badcd[_0x200e('0xe')];this[_0x200e('0xf')]=_0x1badcd[_0x200e('0xf')];this['countnoanswerretry']=_0x1badcd['countnoanswerretry'];this[_0x200e('0x10')]=_0x1badcd['countnosuchnumberretry'];this['countdropretry']=_0x1badcd['countdropretry'];this['countabandonedretry']=_0x1badcd[_0x200e('0x11')];this[_0x200e('0x12')]=_0x1badcd[_0x200e('0x12')];this[_0x200e('0x13')]=_0x1badcd[_0x200e('0x13')];this[_0x200e('0x14')]=_0x1badcd[_0x200e('0x14')];this[_0x200e('0x15')]=_0x1badcd[_0x200e('0x15')];this[_0x200e('0x16')]=_0x1badcd[_0x200e('0x16')];this[_0x200e('0x17')]=_0x1badcd[_0x200e('0x17')];this[_0x200e('0x18')]=_0x1badcd[_0x200e('0x18')];this[_0x200e('0x19')]=_0x1badcd['id'];this['ContactFirstName']=_0x1badcd[_0x200e('0x7')][_0x200e('0x8')]||'';this['starttime']=moment()[_0x200e('0x1a')](_0x200e('0x1b'));this[_0x200e('0x1c')]=_0x1badcd[_0x200e('0x1c')];this['callbackuniqueid']=_0x1badcd[_0x200e('0x1d')];this['callbackat']=_0x1badcd[_0x200e('0x1e')];this[_0x200e('0x1f')]=_0x1badcd[_0x200e('0x1f')];this[_0x200e('0x20')]='';this['originatecalleridname']='';}Action[_0x200e('0x21')][_0x200e('0x22')]=function(){return util[_0x200e('0x1a')](_0x200e('0x23'),this['name'],this[_0x200e('0x3')][_0x200e('0x24')]>0x0?this['number'][_0x200e('0x25')](this[_0x200e('0x3')][_0x200e('0x24')]):this[_0x200e('0x26')]);};Action[_0x200e('0x21')][_0x200e('0x27')]=function(){return this[_0x200e('0x9')];};module[_0x200e('0x28')]=Action;
\ No newline at end of file
index 06f9eaf..d46d722 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcc9=['number','starttime','answertime','endtime','format','ringtime','holdtime','responsetime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countagentrejectretry','countnosuchnumberretry','uniqueid','name','calleridnum'];(function(_0x36856f,_0x98b59e){var _0x43ac52=function(_0x36bc47){while(--_0x36bc47){_0x36856f['push'](_0x36856f['shift']());}};_0x43ac52(++_0x98b59e);}(_0xbcc9,0x149));var _0x9bcc=function(_0x3c026d,_0x281623){_0x3c026d=_0x3c026d-0x0;var _0x30cbde=_0xbcc9[_0x3c026d];return _0x30cbde;};'use strict';var util=require(_0x9bcc('0x0'));var _=require(_0x9bcc('0x1'));var moment=require(_0x9bcc('0x2'));function getSeconds(_0x3c1d6c,_0x559299){var _0xfb5aa6=moment(_0x3c1d6c)['milliseconds'](0x0);var _0x480400=moment(_0x559299)[_0x9bcc('0x3')](0x0);return _0xfb5aa6[_0x9bcc('0x4')](_0x480400,'seconds');}function AgentComplete(_0x198420,_0x144710){this['state']=0x4;this[_0x9bcc('0x5')]=_0x9bcc('0x6');this[_0x9bcc('0x7')]=_0x198420[_0x9bcc('0x7')];this[_0x9bcc('0x8')]=_0x198420['type'];this[_0x9bcc('0x9')]=_0x198420[_0x9bcc('0x8')]===_0x9bcc('0xa')?_0x9bcc('0xb'):_0x198420[_0x9bcc('0x8')];this[_0x9bcc('0xc')]=_0x198420[_0x9bcc('0xc')];this[_0x9bcc('0xd')]=_0x198420[_0x9bcc('0xd')];this['countnoanswerretry']=_0x198420[_0x9bcc('0xe')];this[_0x9bcc('0xf')]=_0x198420[_0x9bcc('0xc')]+_0x198420[_0x9bcc('0xd')]+_0x198420[_0x9bcc('0xe')]+_0x198420['countnosuchnumberretry']+_0x198420[_0x9bcc('0x10')]+_0x198420[_0x9bcc('0x11')]+_0x198420['countmachineretry']+_0x198420[_0x9bcc('0x12')];this['countnosuchnumberretry']=_0x198420[_0x9bcc('0x13')];this[_0x9bcc('0x10')]=_0x198420[_0x9bcc('0x10')];this['countabandonedretry']=_0x198420['countabandonedretry'];this['countmachineretry']=_0x198420['countmachineretry'];this[_0x9bcc('0x12')]=_0x198420[_0x9bcc('0x12')];this[_0x9bcc('0x14')]=_0x144710['uniqueid'];this['calleridname']=_0x198420[_0x9bcc('0x15')];this[_0x9bcc('0x16')]=_0x198420[_0x9bcc('0x17')];this[_0x9bcc('0x18')]=_0x198420[_0x9bcc('0x18')];this['responsetime']=_0x198420['responsetime'];this[_0x9bcc('0x19')]=_0x198420['answertime'];this[_0x9bcc('0x1a')]=moment()[_0x9bcc('0x1b')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x9bcc('0x1c')]=getSeconds(_0x198420['responsetime'],_0x198420['starttime']);this[_0x9bcc('0x1d')]=getSeconds(_0x198420[_0x9bcc('0x19')],_0x198420[_0x9bcc('0x1e')]);this['talktime']=getSeconds(this[_0x9bcc('0x1a')],_0x198420['answertime']);this[_0x9bcc('0xb')]=_0x144710['queue'];this[_0x9bcc('0x1f')]=_0x144710[_0x9bcc('0x1f')];this[_0x9bcc('0x20')]=_0x144710[_0x9bcc('0x20')];this['callback']=_0x198420[_0x9bcc('0x21')];this[_0x9bcc('0x22')]=_0x198420[_0x9bcc('0x22')];this[_0x9bcc('0x23')]=_0x198420['callbackat'];this[_0x9bcc('0x24')]=_0x198420['recallme'];this['ContactId']=_0x198420[_0x9bcc('0x25')];this[_0x9bcc('0x26')]=_0x198420[_0x9bcc('0x26')];this[_0x9bcc('0x27')]=_0x198420[_0x9bcc('0x27')];this[_0x9bcc('0x28')]=_0x198420[_0x9bcc('0x28')];this['CampaignId']=_0x198420['CampaignId'];this[_0x9bcc('0x29')]=_0x198420[_0x9bcc('0x29')]||'';this[_0x9bcc('0x2a')]=_0x198420[_0x9bcc('0x2a')]||'';}module[_0x9bcc('0x2b')]=AgentComplete;
\ No newline at end of file
+var _0xd82f=['state','statedesc','Answer','scheduledat','type','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','uniqueid','calleridnum','number','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','talktime','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds'];(function(_0x18cd5b,_0x10240b){var _0x5eaa52=function(_0x2bccad){while(--_0x2bccad){_0x18cd5b['push'](_0x18cd5b['shift']());}};_0x5eaa52(++_0x10240b);}(_0xd82f,0x7b));var _0xfd82=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0xd82f[_0x4e676e];return _0x336a3c;};'use strict';var util=require(_0xfd82('0x0'));var _=require(_0xfd82('0x1'));var moment=require(_0xfd82('0x2'));function getSeconds(_0x27e9ef,_0x4ba3a8){var _0xa3e640=moment(_0x27e9ef)[_0xfd82('0x3')](0x0);var _0x5a4d9c=moment(_0x4ba3a8)[_0xfd82('0x3')](0x0);return _0xa3e640[_0xfd82('0x4')](_0x5a4d9c,_0xfd82('0x5'));}function AgentComplete(_0x2d2735,_0x41f7a8){this[_0xfd82('0x6')]=0x4;this[_0xfd82('0x7')]=_0xfd82('0x8');this[_0xfd82('0x9')]=_0x2d2735['scheduledat'];this[_0xfd82('0xa')]=_0x2d2735[_0xfd82('0xa')];this['campaigntype']=_0x2d2735[_0xfd82('0xa')]==='outbound'?_0xfd82('0xb'):_0x2d2735[_0xfd82('0xa')];this[_0xfd82('0xc')]=_0x2d2735[_0xfd82('0xc')];this[_0xfd82('0xd')]=_0x2d2735[_0xfd82('0xd')];this['countnoanswerretry']=_0x2d2735[_0xfd82('0xe')];this['countglobal']=_0x2d2735['countbusyretry']+_0x2d2735[_0xfd82('0xd')]+_0x2d2735[_0xfd82('0xe')]+_0x2d2735[_0xfd82('0xf')]+_0x2d2735[_0xfd82('0x10')]+_0x2d2735[_0xfd82('0x11')]+_0x2d2735['countmachineretry']+_0x2d2735[_0xfd82('0x12')];this['countnosuchnumberretry']=_0x2d2735[_0xfd82('0xf')];this['countdropretry']=_0x2d2735[_0xfd82('0x10')];this['countabandonedretry']=_0x2d2735[_0xfd82('0x11')];this[_0xfd82('0x13')]=_0x2d2735[_0xfd82('0x13')];this[_0xfd82('0x12')]=_0x2d2735[_0xfd82('0x12')];this[_0xfd82('0x14')]=_0x41f7a8[_0xfd82('0x14')];this['calleridname']=_0x2d2735['name'];this[_0xfd82('0x15')]=_0x2d2735[_0xfd82('0x16')];this[_0xfd82('0x17')]=_0x2d2735[_0xfd82('0x17')];this[_0xfd82('0x18')]=_0x2d2735[_0xfd82('0x18')];this['answertime']=_0x2d2735[_0xfd82('0x19')];this[_0xfd82('0x1a')]=moment()[_0xfd82('0x1b')](_0xfd82('0x1c'));this['ringtime']=getSeconds(_0x2d2735['responsetime'],_0x2d2735[_0xfd82('0x17')]);this['holdtime']=getSeconds(_0x2d2735['answertime'],_0x2d2735[_0xfd82('0x18')]);this[_0xfd82('0x1d')]=getSeconds(this['endtime'],_0x2d2735[_0xfd82('0x19')]);this[_0xfd82('0xb')]=_0x41f7a8['queue'];this['membername']=_0x41f7a8['membername'];this[_0xfd82('0x1e')]=_0x41f7a8[_0xfd82('0x1e')];this[_0xfd82('0x1f')]=_0x2d2735[_0xfd82('0x1f')];this['callbackuniqueid']=_0x2d2735[_0xfd82('0x20')];this[_0xfd82('0x21')]=_0x2d2735['callbackat'];this[_0xfd82('0x22')]=_0x2d2735['recallme'];this[_0xfd82('0x23')]=_0x2d2735[_0xfd82('0x23')];this[_0xfd82('0x24')]=_0x2d2735[_0xfd82('0x24')];this[_0xfd82('0x25')]=_0x2d2735[_0xfd82('0x25')];this[_0xfd82('0x26')]=_0x2d2735[_0xfd82('0x26')];this[_0xfd82('0x27')]=_0x2d2735['CampaignId'];this[_0xfd82('0x28')]=_0x2d2735[_0xfd82('0x28')]||'';this[_0xfd82('0x29')]=_0x2d2735[_0xfd82('0x29')]||'';}module[_0xfd82('0x2a')]=AgentComplete;
\ No newline at end of file
index fd2d75a..64c0c8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b78=['countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue'];(function(_0x18fad4,_0xd83752){var _0xd84fb0=function(_0x36e0fe){while(--_0x36e0fe){_0x18fad4['push'](_0x18fad4['shift']());}};_0xd84fb0(++_0xd83752);}(_0x0b78,0x1ad));var _0x80b7=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x0b78[_0xfae23b];return _0x200640;};'use strict';var util=require(_0x80b7('0x0'));var _=require(_0x80b7('0x1'));var moment=require('moment');function getSeconds(_0x10e644,_0x4f55ab){var _0x4bffac=moment(_0x10e644)[_0x80b7('0x2')](0x0);var _0x4ee9b4=moment(_0x4f55ab)[_0x80b7('0x2')](0x0);return _0x4bffac[_0x80b7('0x3')](_0x4ee9b4,_0x80b7('0x4'));}function Final(_0x5d4a96){this['uniqueid']=_0x5d4a96[_0x80b7('0x5')];this['scheduledat']=_0x5d4a96[_0x80b7('0x6')];this[_0x80b7('0x7')]=_0x5d4a96[_0x80b7('0x7')];this[_0x80b7('0x8')]=_0x5d4a96['type']===_0x80b7('0x9')?_0x80b7('0xa'):_0x5d4a96[_0x80b7('0x7')];this['countbusyretry']=_0x5d4a96[_0x80b7('0xb')];this['countcongestionretry']=_0x5d4a96[_0x80b7('0xc')];this[_0x80b7('0xd')]=_0x5d4a96[_0x80b7('0xd')];this[_0x80b7('0xe')]=_0x5d4a96[_0x80b7('0xb')]+_0x5d4a96[_0x80b7('0xc')]+_0x5d4a96[_0x80b7('0xd')]+_0x5d4a96[_0x80b7('0xf')]+_0x5d4a96[_0x80b7('0x10')]+_0x5d4a96[_0x80b7('0x11')]+_0x5d4a96[_0x80b7('0x12')]+_0x5d4a96['countagentrejectretry'];this[_0x80b7('0xf')]=_0x5d4a96[_0x80b7('0xf')];this['countdropretry']=_0x5d4a96[_0x80b7('0x10')];this[_0x80b7('0x11')]=_0x5d4a96['countabandonedretry'];this[_0x80b7('0x12')]=_0x5d4a96[_0x80b7('0x12')];this[_0x80b7('0x13')]=_0x5d4a96[_0x80b7('0x13')];this[_0x80b7('0xa')]=_0x5d4a96[_0x80b7('0xa')];this[_0x80b7('0x14')]=_0x5d4a96[_0x80b7('0x14')];this[_0x80b7('0x15')]=_0x5d4a96[_0x80b7('0x15')];this['starttime']=_0x5d4a96[_0x80b7('0x16')];this[_0x80b7('0x17')]=_0x5d4a96[_0x80b7('0x17')];this[_0x80b7('0x18')]=_0x5d4a96['responsetime'];this['ringtime']=_0x5d4a96[_0x80b7('0x19')]||0x0;this[_0x80b7('0x1a')]=_0x5d4a96[_0x80b7('0x1a')]||0x0;this[_0x80b7('0x1b')]=_0x5d4a96['talktime']||0x0;this['callback']=_0x5d4a96[_0x80b7('0x1c')];this[_0x80b7('0x1d')]=_0x5d4a96[_0x80b7('0x1d')];this[_0x80b7('0x1e')]=_0x5d4a96['callbackat'];this[_0x80b7('0x1f')]=_0x5d4a96['recallme'];this['ContactId']=_0x5d4a96[_0x80b7('0x20')];this[_0x80b7('0x21')]=_0x5d4a96[_0x80b7('0x21')];this[_0x80b7('0x22')]=_0x5d4a96[_0x80b7('0x22')];this[_0x80b7('0x23')]=_0x5d4a96[_0x80b7('0x23')];this[_0x80b7('0x24')]=_0x5d4a96[_0x80b7('0x24')];this[_0x80b7('0x25')]=_0x5d4a96[_0x80b7('0x25')]||'';this[_0x80b7('0x26')]=_0x5d4a96[_0x80b7('0x26')]||'';}module[_0x80b7('0x27')]=Final;
\ No newline at end of file
+var _0x7f42=['scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','diff','uniqueid'];(function(_0x280c4b,_0xfe785d){var _0x2a5e90=function(_0x37db79){while(--_0x37db79){_0x280c4b['push'](_0x280c4b['shift']());}};_0x2a5e90(++_0xfe785d);}(_0x7f42,0x1dd));var _0x27f4=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x7f42[_0x178e48];return _0x440d7e;};'use strict';var util=require(_0x27f4('0x0'));var _=require('lodash');var moment=require(_0x27f4('0x1'));function getSeconds(_0xd1035c,_0x48e553){var _0x66342a=moment(_0xd1035c)['milliseconds'](0x0);var _0x10627e=moment(_0x48e553)['milliseconds'](0x0);return _0x66342a[_0x27f4('0x2')](_0x10627e,'seconds');}function Final(_0xe8eabe){this['uniqueid']=_0xe8eabe[_0x27f4('0x3')];this[_0x27f4('0x4')]=_0xe8eabe[_0x27f4('0x4')];this[_0x27f4('0x5')]=_0xe8eabe[_0x27f4('0x5')];this[_0x27f4('0x6')]=_0xe8eabe[_0x27f4('0x5')]===_0x27f4('0x7')?_0x27f4('0x8'):_0xe8eabe[_0x27f4('0x5')];this[_0x27f4('0x9')]=_0xe8eabe[_0x27f4('0x9')];this[_0x27f4('0xa')]=_0xe8eabe[_0x27f4('0xa')];this[_0x27f4('0xb')]=_0xe8eabe[_0x27f4('0xb')];this[_0x27f4('0xc')]=_0xe8eabe[_0x27f4('0x9')]+_0xe8eabe['countcongestionretry']+_0xe8eabe['countnoanswerretry']+_0xe8eabe[_0x27f4('0xd')]+_0xe8eabe[_0x27f4('0xe')]+_0xe8eabe[_0x27f4('0xf')]+_0xe8eabe[_0x27f4('0x10')]+_0xe8eabe[_0x27f4('0x11')];this[_0x27f4('0xd')]=_0xe8eabe[_0x27f4('0xd')];this[_0x27f4('0xe')]=_0xe8eabe['countdropretry'];this['countabandonedretry']=_0xe8eabe[_0x27f4('0xf')];this[_0x27f4('0x10')]=_0xe8eabe[_0x27f4('0x10')];this[_0x27f4('0x11')]=_0xe8eabe['countagentrejectretry'];this[_0x27f4('0x8')]=_0xe8eabe[_0x27f4('0x8')];this[_0x27f4('0x12')]=_0xe8eabe['calleridname'];this[_0x27f4('0x13')]=_0xe8eabe[_0x27f4('0x13')];this[_0x27f4('0x14')]=_0xe8eabe['starttime'];this[_0x27f4('0x15')]=_0xe8eabe[_0x27f4('0x15')];this['endtime']=_0xe8eabe['responsetime'];this[_0x27f4('0x16')]=_0xe8eabe[_0x27f4('0x16')]||0x0;this[_0x27f4('0x17')]=_0xe8eabe[_0x27f4('0x17')]||0x0;this[_0x27f4('0x18')]=_0xe8eabe[_0x27f4('0x18')]||0x0;this[_0x27f4('0x19')]=_0xe8eabe[_0x27f4('0x19')];this[_0x27f4('0x1a')]=_0xe8eabe[_0x27f4('0x1a')];this[_0x27f4('0x1b')]=_0xe8eabe[_0x27f4('0x1b')];this[_0x27f4('0x1c')]=_0xe8eabe[_0x27f4('0x1c')];this[_0x27f4('0x1d')]=_0xe8eabe['ContactId'];this[_0x27f4('0x1e')]=_0xe8eabe[_0x27f4('0x1e')];this[_0x27f4('0x1f')]=_0xe8eabe[_0x27f4('0x1f')];this[_0x27f4('0x20')]=_0xe8eabe[_0x27f4('0x20')];this[_0x27f4('0x21')]=_0xe8eabe[_0x27f4('0x21')];this[_0x27f4('0x22')]=_0xe8eabe[_0x27f4('0x22')]||'';this[_0x27f4('0x23')]=_0xe8eabe[_0x27f4('0x23')]||'';}module[_0x27f4('0x24')]=Final;
\ No newline at end of file
index 430b12b..4b9f3de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x290c=['util','lodash','moment','milliseconds','seconds','state','statedesc','Answer','scheduledat','type','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','name','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','talktime','queue','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','CampaignId'];(function(_0x3c159d,_0x5220f0){var _0x119498=function(_0x1d383f){while(--_0x1d383f){_0x3c159d['push'](_0x3c159d['shift']());}};_0x119498(++_0x5220f0);}(_0x290c,0x140));var _0xc290=function(_0x17b7c7,_0x21a43d){_0x17b7c7=_0x17b7c7-0x0;var _0x13b567=_0x290c[_0x17b7c7];return _0x13b567;};'use strict';var util=require(_0xc290('0x0'));var _=require(_0xc290('0x1'));var moment=require(_0xc290('0x2'));function getSeconds(_0x568809,_0x56ff6c){var _0x1e4b29=moment(_0x568809)[_0xc290('0x3')](0x0);var _0x3369ad=moment(_0x56ff6c)[_0xc290('0x3')](0x0);return _0x1e4b29['diff'](_0x3369ad,_0xc290('0x4'));}function Hangup(_0x1e35c1,_0x4c14eb){this[_0xc290('0x5')]=0x4;this[_0xc290('0x6')]=_0xc290('0x7');this[_0xc290('0x8')]=_0x1e35c1[_0xc290('0x8')];this[_0xc290('0x9')]=_0x1e35c1['type'];this['campaigntype']=_0x1e35c1[_0xc290('0x9')]==='outbound'?'queue':_0x1e35c1[_0xc290('0x9')];this[_0xc290('0xa')]=_0x1e35c1[_0xc290('0xa')];this[_0xc290('0xb')]=_0x1e35c1['countcongestionretry'];this[_0xc290('0xc')]=_0x1e35c1['countnoanswerretry'];this[_0xc290('0xd')]=_0x1e35c1[_0xc290('0xa')]+_0x1e35c1[_0xc290('0xb')]+_0x1e35c1[_0xc290('0xc')]+_0x1e35c1[_0xc290('0xe')]+_0x1e35c1[_0xc290('0xf')]+_0x1e35c1[_0xc290('0x10')]+_0x1e35c1[_0xc290('0x11')]+_0x1e35c1['countagentrejectretry'];this[_0xc290('0xe')]=_0x1e35c1['countnosuchnumberretry'];this[_0xc290('0xf')]=_0x1e35c1[_0xc290('0xf')];this[_0xc290('0x10')]=_0x1e35c1[_0xc290('0x10')];this[_0xc290('0x11')]=_0x1e35c1[_0xc290('0x11')];this[_0xc290('0x12')]=_0x1e35c1[_0xc290('0x12')];this[_0xc290('0x13')]=_0x4c14eb[_0xc290('0x13')];this['calleridname']=_0x1e35c1[_0xc290('0x14')];this['calleridnum']=_0x1e35c1['number'];this[_0xc290('0x15')]=_0x1e35c1[_0xc290('0x15')];this[_0xc290('0x16')]=_0x1e35c1[_0xc290('0x16')];this[_0xc290('0x17')]=moment()[_0xc290('0x18')](_0xc290('0x19'));this[_0xc290('0x1a')]=getSeconds(_0x1e35c1[_0xc290('0x16')],_0x1e35c1[_0xc290('0x15')]);this['holdtime']=0x0;this[_0xc290('0x1b')]=getSeconds(this['endtime'],_0x1e35c1[_0xc290('0x16')]);this['queue']=_0x1e35c1[_0xc290('0x1c')];this['membername']=_0xc290('0x1d');this[_0xc290('0x1e')]=_0x4c14eb[_0xc290('0x1f')];this['callback']=_0x1e35c1[_0xc290('0x20')];this[_0xc290('0x21')]=_0x1e35c1['callbackuniqueid'];this[_0xc290('0x22')]=_0x1e35c1[_0xc290('0x22')];this[_0xc290('0x23')]=_0x1e35c1[_0xc290('0x23')];this[_0xc290('0x24')]=_0x1e35c1[_0xc290('0x24')];this[_0xc290('0x25')]=_0x1e35c1['ListId'];this[_0xc290('0x26')]=_0x1e35c1[_0xc290('0x26')];this['VoiceQueueId']=_0x1e35c1['VoiceQueueId'];this[_0xc290('0x27')]=_0x1e35c1['CampaignId'];}module['exports']=Hangup;
\ No newline at end of file
+var _0x37a1=['scheduledat','type','queue','countbusyretry','countnoanswerretry','countglobal','countcongestionretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','endtime','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','IVR','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','exports','util','lodash','milliseconds','diff','seconds','state','statedesc'];(function(_0x46cb69,_0x20f2b5){var _0x1386fa=function(_0x13afa1){while(--_0x13afa1){_0x46cb69['push'](_0x46cb69['shift']());}};_0x1386fa(++_0x20f2b5);}(_0x37a1,0x173));var _0x137a=function(_0x38ff14,_0x2ae181){_0x38ff14=_0x38ff14-0x0;var _0x13c68a=_0x37a1[_0x38ff14];return _0x13c68a;};'use strict';var util=require(_0x137a('0x0'));var _=require(_0x137a('0x1'));var moment=require('moment');function getSeconds(_0x54bc30,_0x358de9){var _0x59f416=moment(_0x54bc30)[_0x137a('0x2')](0x0);var _0x4bbd68=moment(_0x358de9)[_0x137a('0x2')](0x0);return _0x59f416[_0x137a('0x3')](_0x4bbd68,_0x137a('0x4'));}function Hangup(_0x38de10,_0x5acb1a){this[_0x137a('0x5')]=0x4;this[_0x137a('0x6')]='Answer';this[_0x137a('0x7')]=_0x38de10[_0x137a('0x7')];this['type']=_0x38de10[_0x137a('0x8')];this['campaigntype']=_0x38de10[_0x137a('0x8')]==='outbound'?_0x137a('0x9'):_0x38de10[_0x137a('0x8')];this['countbusyretry']=_0x38de10[_0x137a('0xa')];this['countcongestionretry']=_0x38de10['countcongestionretry'];this[_0x137a('0xb')]=_0x38de10[_0x137a('0xb')];this[_0x137a('0xc')]=_0x38de10[_0x137a('0xa')]+_0x38de10[_0x137a('0xd')]+_0x38de10[_0x137a('0xb')]+_0x38de10[_0x137a('0xe')]+_0x38de10['countdropretry']+_0x38de10[_0x137a('0xf')]+_0x38de10[_0x137a('0x10')]+_0x38de10[_0x137a('0x11')];this[_0x137a('0xe')]=_0x38de10['countnosuchnumberretry'];this[_0x137a('0x12')]=_0x38de10[_0x137a('0x12')];this[_0x137a('0xf')]=_0x38de10['countabandonedretry'];this[_0x137a('0x10')]=_0x38de10[_0x137a('0x10')];this[_0x137a('0x11')]=_0x38de10[_0x137a('0x11')];this[_0x137a('0x13')]=_0x5acb1a[_0x137a('0x13')];this[_0x137a('0x14')]=_0x38de10[_0x137a('0x15')];this[_0x137a('0x16')]=_0x38de10[_0x137a('0x17')];this[_0x137a('0x18')]=_0x38de10[_0x137a('0x18')];this['responsetime']=_0x38de10[_0x137a('0x19')];this[_0x137a('0x1a')]=moment()['format'](_0x137a('0x1b'));this[_0x137a('0x1c')]=getSeconds(_0x38de10[_0x137a('0x19')],_0x38de10[_0x137a('0x18')]);this[_0x137a('0x1d')]=0x0;this[_0x137a('0x1e')]=getSeconds(this['endtime'],_0x38de10[_0x137a('0x19')]);this[_0x137a('0x9')]=_0x38de10[_0x137a('0x9')];this['membername']=_0x137a('0x1f');this[_0x137a('0x20')]=_0x5acb1a['cause-txt'];this[_0x137a('0x21')]=_0x38de10[_0x137a('0x21')];this[_0x137a('0x22')]=_0x38de10[_0x137a('0x22')];this[_0x137a('0x23')]=_0x38de10['callbackat'];this[_0x137a('0x24')]=_0x38de10[_0x137a('0x24')];this[_0x137a('0x25')]=_0x38de10[_0x137a('0x25')];this['ListId']=_0x38de10[_0x137a('0x26')];this[_0x137a('0x27')]=_0x38de10[_0x137a('0x27')];this[_0x137a('0x28')]=_0x38de10['VoiceQueueId'];this['CampaignId']=_0x38de10['CampaignId'];}module[_0x137a('0x29')]=Hangup;
\ No newline at end of file
index afdf70b..f04313d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d69=['callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countagentrejectretry','countnosuchnumberretry','countdropretry','countabandonedretry','name','number','starttime','responsetime','endtime','holdtime','callback','callbackuniqueid'];(function(_0x256837,_0x17dec7){var _0x156a52=function(_0x36cc3e){while(--_0x36cc3e){_0x256837['push'](_0x256837['shift']());}};_0x156a52(++_0x17dec7);}(_0x7d69,0x157));var _0x97d6=function(_0x2ef49b,_0x9661a7){_0x2ef49b=_0x2ef49b-0x0;var _0x663f4b=_0x7d69[_0x2ef49b];return _0x663f4b;};'use strict';var util=require(_0x97d6('0x0'));var _=require(_0x97d6('0x1'));var moment=require(_0x97d6('0x2'));function getSeconds(_0x53fdfa,_0x4c3f11){var _0x15b53b=moment(_0x53fdfa)['milliseconds'](0x0);var _0x4ace60=moment(_0x4c3f11)[_0x97d6('0x3')](0x0);return _0x15b53b[_0x97d6('0x4')](_0x4ace60,_0x97d6('0x5'));}function History(_0x25017f){this[_0x97d6('0x6')]=_0x25017f[_0x97d6('0x6')];this[_0x97d6('0x7')]=_0x25017f[_0x97d6('0x7')]||undefined;this[_0x97d6('0x8')]=_0x25017f[_0x97d6('0x8')];this[_0x97d6('0x9')]=_0x25017f[_0x97d6('0x8')]==='outbound'?_0x97d6('0xa'):_0x25017f[_0x97d6('0x8')];this[_0x97d6('0xb')]=_0x25017f['countbusyretry'];this[_0x97d6('0xc')]=_0x25017f['countcongestionretry'];this['countnoanswerretry']=_0x25017f[_0x97d6('0xd')];this[_0x97d6('0xe')]=_0x25017f['countbusyretry']+_0x25017f[_0x97d6('0xc')]+_0x25017f[_0x97d6('0xd')]+_0x25017f['countnosuchnumberretry']+_0x25017f['countdropretry']+_0x25017f['countabandonedretry']+_0x25017f['countmachineretry']+_0x25017f[_0x97d6('0xf')];this[_0x97d6('0x10')]=_0x25017f[_0x97d6('0x10')];this[_0x97d6('0x11')]=_0x25017f[_0x97d6('0x11')];this[_0x97d6('0x12')]=_0x25017f[_0x97d6('0x12')];this['countmachineretry']=_0x25017f['countmachineretry'];this[_0x97d6('0xf')]=_0x25017f[_0x97d6('0xf')];this['queue']=_0x25017f[_0x97d6('0xa')];this['calleridname']=_0x25017f[_0x97d6('0x13')];this['calleridnum']=_0x25017f[_0x97d6('0x14')];this[_0x97d6('0x15')]=_0x25017f['starttime'];this['responsetime']=_0x25017f[_0x97d6('0x16')];this[_0x97d6('0x17')]=_0x25017f['responsetime'];this['ringtime']=getSeconds(_0x25017f[_0x97d6('0x16')],_0x25017f[_0x97d6('0x15')]);this[_0x97d6('0x18')]=0x0;this['talktime']=0x0;this[_0x97d6('0x19')]=_0x25017f[_0x97d6('0x19')];this['callbackuniqueid']=_0x25017f[_0x97d6('0x1a')];this[_0x97d6('0x1b')]=_0x25017f[_0x97d6('0x1b')];this[_0x97d6('0x1c')]=_0x25017f[_0x97d6('0x1c')];this[_0x97d6('0x1d')]=_0x25017f[_0x97d6('0x1d')];this[_0x97d6('0x1e')]=_0x25017f[_0x97d6('0x1e')];this['UserId']=_0x25017f[_0x97d6('0x1f')];this[_0x97d6('0x20')]=_0x25017f[_0x97d6('0x20')];this['CampaignId']=_0x25017f[_0x97d6('0x21')];this['originatecalleridnum']=_0x25017f[_0x97d6('0x22')]||'';this[_0x97d6('0x23')]=_0x25017f[_0x97d6('0x23')]||'';}module[_0x97d6('0x24')]=History;
\ No newline at end of file
+var _0x9e7b=['VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countabandonedretry','countagentrejectretry','calleridname','name','number','starttime','responsetime','endtime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId'];(function(_0x1cfb6a,_0x51c2b7){var _0x2fd585=function(_0x3ff485){while(--_0x3ff485){_0x1cfb6a['push'](_0x1cfb6a['shift']());}};_0x2fd585(++_0x51c2b7);}(_0x9e7b,0x1cd));var _0xb9e7=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x9e7b[_0x59ee6f];return _0x4c0979;};'use strict';var util=require(_0xb9e7('0x0'));var _=require(_0xb9e7('0x1'));var moment=require(_0xb9e7('0x2'));function getSeconds(_0x31090b,_0x93b214){var _0x39c692=moment(_0x31090b)[_0xb9e7('0x3')](0x0);var _0x230a24=moment(_0x93b214)['milliseconds'](0x0);return _0x39c692[_0xb9e7('0x4')](_0x230a24,_0xb9e7('0x5'));}function History(_0x1788aa){this['uniqueid']=_0x1788aa[_0xb9e7('0x6')];this['scheduledat']=_0x1788aa[_0xb9e7('0x7')]||undefined;this['type']=_0x1788aa[_0xb9e7('0x8')];this[_0xb9e7('0x9')]=_0x1788aa[_0xb9e7('0x8')]==='outbound'?_0xb9e7('0xa'):_0x1788aa[_0xb9e7('0x8')];this[_0xb9e7('0xb')]=_0x1788aa[_0xb9e7('0xb')];this[_0xb9e7('0xc')]=_0x1788aa[_0xb9e7('0xc')];this['countnoanswerretry']=_0x1788aa[_0xb9e7('0xd')];this[_0xb9e7('0xe')]=_0x1788aa[_0xb9e7('0xb')]+_0x1788aa[_0xb9e7('0xc')]+_0x1788aa['countnoanswerretry']+_0x1788aa[_0xb9e7('0xf')]+_0x1788aa[_0xb9e7('0x10')]+_0x1788aa['countabandonedretry']+_0x1788aa[_0xb9e7('0x11')]+_0x1788aa['countagentrejectretry'];this[_0xb9e7('0xf')]=_0x1788aa[_0xb9e7('0xf')];this[_0xb9e7('0x10')]=_0x1788aa[_0xb9e7('0x10')];this[_0xb9e7('0x12')]=_0x1788aa['countabandonedretry'];this[_0xb9e7('0x11')]=_0x1788aa[_0xb9e7('0x11')];this[_0xb9e7('0x13')]=_0x1788aa[_0xb9e7('0x13')];this[_0xb9e7('0xa')]=_0x1788aa[_0xb9e7('0xa')];this[_0xb9e7('0x14')]=_0x1788aa[_0xb9e7('0x15')];this['calleridnum']=_0x1788aa[_0xb9e7('0x16')];this[_0xb9e7('0x17')]=_0x1788aa[_0xb9e7('0x17')];this[_0xb9e7('0x18')]=_0x1788aa['responsetime'];this[_0xb9e7('0x19')]=_0x1788aa[_0xb9e7('0x18')];this['ringtime']=getSeconds(_0x1788aa[_0xb9e7('0x18')],_0x1788aa[_0xb9e7('0x17')]);this['holdtime']=0x0;this['talktime']=0x0;this[_0xb9e7('0x1a')]=_0x1788aa[_0xb9e7('0x1a')];this[_0xb9e7('0x1b')]=_0x1788aa['callbackuniqueid'];this[_0xb9e7('0x1c')]=_0x1788aa['callbackat'];this[_0xb9e7('0x1d')]=_0x1788aa[_0xb9e7('0x1d')];this['ContactId']=_0x1788aa[_0xb9e7('0x1e')];this[_0xb9e7('0x1f')]=_0x1788aa[_0xb9e7('0x1f')];this[_0xb9e7('0x20')]=_0x1788aa[_0xb9e7('0x20')];this[_0xb9e7('0x21')]=_0x1788aa[_0xb9e7('0x21')];this[_0xb9e7('0x22')]=_0x1788aa[_0xb9e7('0x22')];this[_0xb9e7('0x23')]=_0x1788aa['originatecalleridnum']||'';this[_0xb9e7('0x24')]=_0x1788aa['originatecalleridname']||'';}module[_0xb9e7('0x25')]=History;
\ No newline at end of file
index ec62dea..f83d60f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa979=['isEmpty','Intervals','Error','stringify','milliseconds','diff','emit','type','outbound','strategy','answered','available','pTalking','sumBillable','sumHoldTime','talking','total','unmanaged','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundUnknownCallsDay','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','Trunk','active','callerid','format','voice:queue:%s','voice_queue:save','ivr','campaign:save','-----\x20Stats\x20Predictive\x20---','info','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','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','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','isUndefined','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangBusyFactor','seconds','clearing\x20variable\x20start\x20progressive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','stack','length','originated','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','contacts','[getContactDialer2][Empty]','waiting','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','is\x20disactive','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','endtime','prototype','clearZombieChannels','uniqueId','[uniqueid]','isNil','status','catch','No\x20such\x20channel','queue','countReScheduled','resolve','[countReScheduled]\x20','checkIsBlackList','then','[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','rescheduleContact','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','moveContactManagedDialer','createHistory','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','updateOriginated','notFound','merge','ContactId','ListId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','isTrunkReachable','reachable','SIP/%s','uniqueid','variable','amdstatus','exten','xcally-motion-dialer','dialAMDActive','HANGUP','state','statedesc','HangupInAMD','membername','AMD','custom:amd','amd','saveInDb','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','Machine','countmachineretry','countglobal','buildObj','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','[rescheduleContact][Machine]','value','[syncHangupInAMDIvr]','MACHINE','countnoanswerretry','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','AGI','Unknow','reason','agiafterat','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','answertime','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','Drop','dropreason','dialQueueProject2','dialDropMaxRetry','dialDropRetryFrequency','[rescheduleContact][Drop]','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','CALLEREXIT','starttime','channel','syncQueueMember','actionid','locked','paused','stateinterface','push','idHopper','queueStatusComplete','pick','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','unlockRR','Agent:\x20','contactAgent-idHopper:\x20','[booked][RR][finaly]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','resetActiveCalls','syncCampaigns','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','timezones','\x20Timezone\x20unknow\x20','isArray','Action','command','iftime\x20%s,%s','interval','content','indexOf','true','all','some','GLOBAL_INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','power','handlePower','dialPowerLevel','booked','Queue','method\x20not\x20recognized','launchHandleIvr','handleIvr','loggedIn','checkIsTrunkReachable','dialGlobalInterval','dialTimezone','[syncQueueSummary]','[syncCampaigns]','pow','replace','random','match','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','Contact','phone','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialer','ACTIVE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','createdAt','updatedAt','%s%s','toUpper','dialRandomLastDigitCallerIdNumber','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','substring','from-sip','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerMaxRetry','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','dialAgentRejectMaxRetry','[rescheduleContact][AgentReject]','entity\x20is\x20undefine','[callProgressDetecting]','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','NoAnswer','noanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','custom:agentcongestion','congestion','reason\x208\x20congestion','outboundAbandonedCallsDay','[syncAgentComplete][createHistory][11]','reason\x2011\x20abandoned','AgentReject','custom:agentreject','agentreject','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','Success','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','outboundDropCallsDayTimeout','round','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalMultiplicativeFactor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','getDataPredictive','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20more\x20than\x20threshold\x20(','predictiveIntervalAnsweredCalls','agentBusyFactor','[getDataPredictive]','Unknown\x20Predictive','getDataPredictiveOld','outboundQueuePauses','busyFactor','[CatchErlangB]','check\x20failure','floor','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','Queue:\x20','scheduledat','dialRecallMeTimeout','Agent','run','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose]','outboundBlacklistCallsDay','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','limitCalls','dialOrderByScheduledAt','AVAILABLE_CONTACTS_FINISHED','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','emptyContact','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','[actionOriginate]\x20','Contact.phone','tryOriginatePredictive','[handlePredictive][limitChannel]','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','abandonmentRate','--------\x20Drop\x20Rate\x20--------','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\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','[busyFactor]','Umin\x20=\x20','exports','lodash','bluebird','uuid','moment','md5','../preview/util/util','../../../config/environment/','../../../config/logger','predictive','predictiveCalls','../ami','redis','defaults','localhost','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./history','./agentComplete','./queueCallerAbandon','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','roundrobin','enqueue','tail','finally','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','startPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','syncOriginateResponse','syncAgentComplete','custom:queuesummary','syncQueueSummary','hangup','syncHangup','newexten','syncNewExten','varset','syncVarSet','queuemember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','message','AGENTS_NOT_LOGGED','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','name','\x20NOT\x20Active','Interval','\x20INTERVAL_IS_NULL','INTERVAL_IS_NULL'];(function(_0x1824c9,_0x475d83){var _0x3ad7e9=function(_0x346a23){while(--_0x346a23){_0x1824c9['push'](_0x1824c9['shift']());}};_0x3ad7e9(++_0x475d83);}(_0xa979,0x1d9));var _0x9a97=function(_0x42ac4d,_0x387c90){_0x42ac4d=_0x42ac4d-0x0;var _0x4a6e46=_0xa979[_0x42ac4d];return _0x4a6e46;};'use strict';var util=require('util');var _=require(_0x9a97('0x0'));var BPromise=require(_0x9a97('0x1'));var uuid=require(_0x9a97('0x2'));var moment=require(_0x9a97('0x3'));var rr=require('rr');var md5=require(_0x9a97('0x4'));var Redis=require('ioredis');var ut=require(_0x9a97('0x5'));var config=require(_0x9a97('0x6'));var logger=require('../../../config/logger')('dialer');var loggerBooked=require(_0x9a97('0x7'))('booked');var loggerPredictive=require(_0x9a97('0x7'))(_0x9a97('0x8'));var loggerPredictiveCalls=require(_0x9a97('0x7'))(_0x9a97('0x9'));var loggerSyncQueueSummary=require('../../../config/logger')('syncQueueSummary');var ami=require(_0x9a97('0xa'));config[_0x9a97('0xb')]=_[_0x9a97('0xc')](config[_0x9a97('0xb')],{'host':_0x9a97('0xd'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9a97('0xb')]));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require(_0x9a97('0xe'));var cmHopperBlack=require(_0x9a97('0xf'));var voiceQueueRt=require(_0x9a97('0x10'));var Action=require(_0x9a97('0x11'));var History=require(_0x9a97('0x12'));var Final=require('./final');var AgentComplete=require(_0x9a97('0x13'));var QueueCallerAbandon=require(_0x9a97('0x14'));var Hangup=require('./hangup');var ipAgi=process[_0x9a97('0x15')][_0x9a97('0x16')]||_0x9a97('0x17');var strategy={'rrmemory':_0x9a97('0x18'),'roundrobin':_0x9a97('0x19')};var Sequence=function(){};Sequence['prototype'][_0x9a97('0x1a')]=function(_0x5b58b5){this[_0x9a97('0x1b')]=this['tail']?this[_0x9a97('0x1b')][_0x9a97('0x1c')](_0x5b58b5):_0x5b58b5();};function Dialer(_0x34dfff,_0x38e018){this['sequence']=new Sequence();this[_0x9a97('0x1d')]=_0x38e018;this[_0x9a97('0x1e')]=_0x34dfff['voiceQueues'];this[_0x9a97('0x1f')]=_0x34dfff['campaigns'];this[_0x9a97('0x20')]=_0x34dfff[_0x9a97('0x20')];this[_0x9a97('0x21')]=_0x34dfff[_0x9a97('0x21')];this[_0x9a97('0x22')]=config[_0x9a97('0x22')]||0x2;this[_0x9a97('0x23')]={};this[_0x9a97('0x24')]={};this['contactsId']={};this['uniqueId']={};this['optionPredictive']={};this[_0x9a97('0x25')]={};this[_0x9a97('0x26')]={};this[_0x9a97('0x27')]={};this[_0x9a97('0x28')]={};this[_0x9a97('0x29')]={};ami['on'](_0x9a97('0x2a'),this[_0x9a97('0x2b')][_0x9a97('0x2c')](this));ami['on'](_0x9a97('0x2d'),this[_0x9a97('0x2e')][_0x9a97('0x2c')](this));ami['on']('originateresponse',this[_0x9a97('0x2f')][_0x9a97('0x2c')](this));ami['on']('agentcomplete',this[_0x9a97('0x30')]['bind'](this));ami['on'](_0x9a97('0x31'),this[_0x9a97('0x32')][_0x9a97('0x2c')](this));ami['on'](_0x9a97('0x33'),this[_0x9a97('0x34')][_0x9a97('0x2c')](this));ami['on'](_0x9a97('0x35'),this[_0x9a97('0x36')]['bind'](this));ami['on'](_0x9a97('0x37'),this[_0x9a97('0x38')]['bind'](this));ami['on'](_0x9a97('0x39'),this['syncQueueMember'][_0x9a97('0x2c')](this));ami['on'](_0x9a97('0x3a'),this[_0x9a97('0x3b')][_0x9a97('0x2c')](this));this[_0x9a97('0x3c')]();this[_0x9a97('0x3d')]();}function isNotNull(_0x50e246){return _0x50e246!==null&&!_['isUndefined'](_0x50e246);}function checkIsLoggedIn(_0x4125eb,_0x7878fd){return function(){if(_0x7878fd<=0x0){_0x4125eb[_0x9a97('0x3e')]=_0x9a97('0x3f');throw _0x4125eb['name']+_0x9a97('0x40');}};}function isActive(_0x185ee6){return _0x185ee6;}function checkIsActive(_0x469475,_0x162bff){return function(){if(!isActive(_0x162bff)){_0x469475[_0x9a97('0x3e')]=_0x9a97('0x41');throw _0x469475[_0x9a97('0x42')]+_0x9a97('0x43');}};}function checkInterval(_0x23d986){return function(){if(!isNotNull(_0x23d986[_0x9a97('0x44')])){_0x23d986['message']='INTERVAL_IS_NULL';throw _0x23d986['name']+_0x9a97('0x45');}if(!isNotNull(_0x23d986[_0x9a97('0x44')]['Intervals'])){_0x23d986[_0x9a97('0x3e')]=_0x9a97('0x46');throw _0x23d986[_0x9a97('0x42')]+_0x9a97('0x45');}if(!isNotNull(_[_0x9a97('0x47')](_0x23d986[_0x9a97('0x44')][_0x9a97('0x48')]))){_0x23d986[_0x9a97('0x3e')]='INTERVAL_IS_NULL';throw _0x23d986[_0x9a97('0x42')]+'\x20INTERVAL_IS_NULL';}};}function msgResponse(_0x26e202,_0x2a2332,_0xdb8744){return{'action':_0x26e202,'response':_0x2a2332,'message':_0xdb8744,'stack':_0xdb8744};}function myreject(_0x5b3a64){return function(_0x3ff035){return _0x5b3a64(msgResponse('[ifTime][Action]',_0x9a97('0x49'),JSON[_0x9a97('0x4a')](_0x3ff035)));};}function getSeconds(_0x2ffe4c,_0x314f6d){var _0x4422c4=moment(_0x2ffe4c)[_0x9a97('0x4b')](0x0);var _0x216118=moment(_0x314f6d)[_0x9a97('0x4b')](0x0);return _0x4422c4[_0x9a97('0x4c')](_0x216118,'seconds');}function emit(_0x55c05d,_0x4365f3,_0x4c3873){io['to'](_0x55c05d)[_0x9a97('0x4d')](_0x4365f3,_0x4c3873);}function emitVoiceQueueSummary(_0x17d559){if(_0x17d559[_0x9a97('0x4e')]===_0x9a97('0x4f')){var _0x287463={'id':_0x17d559['id'],'name':_0x17d559[_0x9a97('0x42')],'strategy':_0x17d559[_0x9a97('0x50')],'answered':_0x17d559[_0x9a97('0x51')],'available':_0x17d559[_0x9a97('0x52')],'loggedIn':_0x17d559['loggedIn'],'pTalking':_0x17d559[_0x9a97('0x53')],'sumBillable':_0x17d559[_0x9a97('0x54')],'sumDuration':_0x17d559['sumDuration'],'sumHoldTime':_0x17d559[_0x9a97('0x55')]||0x0,'talking':_0x17d559[_0x9a97('0x56')],'total':_0x17d559[_0x9a97('0x57')],'type':_0x17d559[_0x9a97('0x4e')],'unmanaged':_0x17d559[_0x9a97('0x58')],'abandoned':_0x17d559['abandoned'],'waiting':_0x17d559['waiting'],'loggedInDb':_0x17d559[_0x9a97('0x59')],'dialActive':_0x17d559[_0x9a97('0x5a')],'dialMethod':_0x17d559[_0x9a97('0x5b')],'dialOriginateCallerIdName':_0x17d559[_0x9a97('0x5c')],'dialOriginateCallerIdNumber':_0x17d559[_0x9a97('0x5d')],'dialOriginateTimeout':_0x17d559[_0x9a97('0x5e')],'dialPrefix':_0x17d559['dialPrefix'],'outboundAnswerAgiCallsDay':_0x17d559[_0x9a97('0x5f')],'outboundAnswerCallsDay':_0x17d559[_0x9a97('0x60')],'outboundBlacklistCallsDay':_0x17d559['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x17d559[_0x9a97('0x61')],'outboundCongestionCallsDay':_0x17d559[_0x9a97('0x62')],'outboundDropCallsDayACS':_0x17d559[_0x9a97('0x63')],'outboundDropCallsDayCallersExit':_0x17d559[_0x9a97('0x64')],'outboundDropCallsDayTimeout':_0x17d559['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x17d559[_0x9a97('0x65')],'outboundNoSuchCallsDay':_0x17d559[_0x9a97('0x66')],'outboundOriginateFailureCallsDay':_0x17d559[_0x9a97('0x67')],'outboundReCallsDay':_0x17d559[_0x9a97('0x68')],'outboundRejectCallsDay':_0x17d559['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x17d559[_0x9a97('0x69')],'predictiveIntervalAnsweredCalls':_0x17d559['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x17d559['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x17d559[_0x9a97('0x6a')],'predictiveIntervalDroppedCallsCallersExit':_0x17d559['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x17d559[_0x9a97('0x6b')],'predictiveIntervalErlangCalls':_0x17d559[_0x9a97('0x6c')],'predictiveIntervalErlangCallsDroppedCalls':_0x17d559[_0x9a97('0x6d')],'predictiveIntervalHitRate':_0x17d559[_0x9a97('0x6e')],'predictiveIntervalMultiplicativeFactor':_0x17d559['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x17d559[_0x9a97('0x6f')],'predictiveIntervalAvailable':_0x17d559[_0x9a97('0x70')],'predictiveIntervalTotalCalls':_0x17d559[_0x9a97('0x71')],'message':_0x17d559[_0x9a97('0x3e')],'originated':_0x17d559['originated'],'erlangCalls':_0x17d559[_0x9a97('0x72')],'erlangCallToSecond':_0x17d559[_0x9a97('0x73')],'erlangAbandonmentRate':_0x17d559[_0x9a97('0x74')],'erlangBusyFactor':_0x17d559['erlangBusyFactor'],'startPredictive':_0x17d559[_0x9a97('0x25')],'startProgressive':_0x17d559[_0x9a97('0x26')]};if(_0x17d559['Trunk']){_0x287463['Trunk']={'id':_0x17d559[_0x9a97('0x75')]['id'],'name':_0x17d559[_0x9a97('0x75')][_0x9a97('0x42')],'active':_0x17d559[_0x9a97('0x75')][_0x9a97('0x76')],'callerid':_0x17d559[_0x9a97('0x75')][_0x9a97('0x77')]};}if(_0x17d559['Interval']){_0x287463[_0x9a97('0x44')]={'id':_0x17d559[_0x9a97('0x44')]['id'],'name':_0x17d559[_0x9a97('0x44')][_0x9a97('0x42')]};}var _0x111fe=md5(JSON[_0x9a97('0x4a')](_0x287463));if(_0x17d559['md5']!==_0x111fe){_0x17d559[_0x9a97('0x4')]=_0x111fe;emit(util[_0x9a97('0x78')](_0x9a97('0x79'),_0x287463['name']),_0x9a97('0x7a'),_0x287463);}}}function emitCampaignSummary(_0x5d7c64){if(_0x5d7c64[_0x9a97('0x4e')]===_0x9a97('0x7b')){emit(util[_0x9a97('0x78')]('campaign:ivr:%s',_0x5d7c64[_0x9a97('0x42')]),_0x9a97('0x7c'),_0x5d7c64);}}function checkGetDataPredictive(_0x232dd2){if(isNotNull(_0x232dd2)&&!_[_0x9a97('0x47')](_0x232dd2)){loggerPredictive['info'](_0x9a97('0x7d'));loggerPredictive['info']('Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x232dd2[_0x9a97('0x71')]);loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x7f'),_0x232dd2['predictiveIntervalAnsweredCalls']);loggerPredictive['info'](_0x9a97('0x80'),_0x232dd2[_0x9a97('0x6b')]);loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x81'),_0x232dd2[_0x9a97('0x82')]);loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x83'),_0x232dd2[_0x9a97('0x84')]);loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x85'),_0x232dd2[_0x9a97('0x6a')]);loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x86'));if(_0x232dd2[_0x9a97('0x71')]>0x0){if(!_[_0x9a97('0x87')](_0x232dd2[_0x9a97('0x6a')])&&_0x232dd2['predictiveIntervalAvgTalktime']>0x0){return!![];}loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x88'));if(!_[_0x9a97('0x87')](_0x232dd2['predictiveIntervalAvgHoldtime'])&&_0x232dd2[_0x9a97('0x84')]>0x0){return!![];}loggerPredictive[_0x9a97('0x7e')]('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x89'));}}else{loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x8a'));}return![];}function mergeDataErlangB(_0x3896a1){return function(_0x3ec709){loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x8b'));loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x8c'),_0x3ec709['erlangCalls']);loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x8d'),_0x3ec709['erlangCallToSecond']);loggerPredictive['info'](_0x9a97('0x8e'),_0x3ec709[_0x9a97('0x74')]);loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x8f'),_0x3ec709[_0x9a97('0x90')]);loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x8e'),_0x3ec709[_0x9a97('0x74')]);loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x86'));_['merge'](_0x3896a1,_0x3ec709);};}function getDiff(_0x20461a){var _0x195dae=moment()[_0x9a97('0x4b')](0x0);var _0x17e09d=moment(_0x20461a)[_0x9a97('0x4b')](0x0);return _0x195dae[_0x9a97('0x4c')](_0x17e09d,_0x9a97('0x91'));}function ifInterval(_0x58f3b8,_0x2f16df){if(_[_0x9a97('0x87')](_0x2f16df)){return![];}return getDiff(_0x2f16df)<_0x58f3b8*0x3c;}function freeVariablesPredictive(_0x111196){if(isNotNull(_0x111196)){if(!_[_0x9a97('0x87')](_0x111196[_0x9a97('0x26')])){_0x111196[_0x9a97('0x26')]=undefined;loggerPredictive['info'](_0x111196[_0x9a97('0x42')],_0x9a97('0x92'));}if(!_[_0x9a97('0x87')](_0x111196['startPredictive'])){_0x111196[_0x9a97('0x25')]=undefined;loggerPredictive[_0x9a97('0x7e')](_0x111196['name'],'clearing\x20variable\x20start\x20predictive');}if(!_[_0x9a97('0x87')](_0x111196[_0x9a97('0x93')])){clearInterval(_0x111196[_0x9a97('0x93')]);_0x111196[_0x9a97('0x93')]=undefined;loggerPredictive[_0x9a97('0x7e')](_0x111196[_0x9a97('0x42')],_0x9a97('0x94'));}}}function erlangb(_0x4fc562,_0xd836a8){if(_0xd836a8===0x0){return 0x0;}var _0x395ff3=0x1;for(var _0x5aa966=0x1;_0x5aa966<=_0xd836a8;_0x5aa966+=0x1){_0x395ff3=0x1+_0x395ff3*_0x5aa966/_0x4fc562;}return 0x1/_0x395ff3;}function isVoiceQueueOutbound(_0x5c87b0){return _0x5c87b0===_0x9a97('0x4f');}function isNotPreview(_0x109ea0){return _0x109ea0!=='preview';}function isCampaignIvr(_0x156c19){return _0x156c19==='ivr';}function getCallerId(_0x25a8ce,_0x53c148,_0x5a4d22){if(!_[_0x9a97('0x87')](_0x5a4d22)&&typeof _0x5a4d22===_0x9a97('0x95')&&!_['isEmpty'](_0x5a4d22)){if(!_['isUndefined'](_0x53c148)&&typeof _0x53c148==='string'&&!_[_0x9a97('0x47')](_0x53c148)){return util[_0x9a97('0x78')](_0x9a97('0x96'),_0x53c148,_0x5a4d22);}return util[_0x9a97('0x78')](_0x9a97('0x96'),_0x5a4d22,_0x5a4d22);}if(!_[_0x9a97('0x87')](_0x25a8ce)&&typeof _0x25a8ce===_0x9a97('0x95')&&!_[_0x9a97('0x47')](_0x25a8ce)){return _0x25a8ce;}return _0x9a97('0x97');}function loggerCatchQueueSummary(_0x1120b8,_0x56ae22){return function(_0x24f80b){freeVariablesPredictive(_0x56ae22);emitVoiceQueueSummary(_0x56ae22);emitCampaignSummary(_0x56ae22);loggerSyncQueueSummary[_0x9a97('0x98')](_0x1120b8,util[_0x9a97('0x99')](_0x24f80b,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x342d85,_0x22d0bc){return function(_0x4b26d5){loggerPredictive['error'](_0x22d0bc['name'],_0x342d85);loggerPredictive[_0x9a97('0x98')](_0x4b26d5[_0x9a97('0x9a')]);freeVariablesPredictive(_0x22d0bc);};}function loggerCatch(_0x2d4b76){return function(_0x2cb5cf){logger[_0x9a97('0x98')](_0x2d4b76,util[_0x9a97('0x99')](_0x2cb5cf,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x501e0f){return _0x501e0f&&!_[_0x9a97('0x87')](_0x501e0f)&&_0x501e0f[_0x9a97('0x9b')]>0x0;}function decremetOriginate(_0xe8e5d6){if(!_[_0x9a97('0x87')](_0xe8e5d6)&&_0xe8e5d6!==null){if(typeof _0xe8e5d6[_0x9a97('0x9c')]!==_0x9a97('0x9d')){if(_0xe8e5d6[_0x9a97('0x9c')]>0x0){_0xe8e5d6['originated']-=0x1;}else{logger['error'](_0x9a97('0x9e'));}}}else{logger[_0x9a97('0x98')](_0x9a97('0x9f'));}}function checkContactLowerLimitOriginate(_0x31988c,_0x3c2606,_0x3040f7){if(_0x3c2606>_0x3040f7){for(var _0x258786=0x0;_0x258786<_0x3c2606-_0x3040f7;_0x258786+=0x1){decremetOriginate(_0x31988c);}}}function loggerGetContactDialer(_0x41b2fb,_0x3a0d79,_0x530d18){return function(_0x42b3cb){checkContactLowerLimitOriginate(_0x3a0d79,_0x530d18,0x0);logger['error'](_0x41b2fb,util[_0x9a97('0x99')](_0x42b3cb,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x3f1a49){return function(_0x38c4ae){if(isNotNull(_0x38c4ae)&&isNotNull(_0x38c4ae[0x0])){if(_0x38c4ae[0x0]['contactsRescheduled']>0x0){_0x3f1a49[_0x9a97('0x3e')]='RESCHEDULED_CONTACTS';logger['info']('[getContactDialer2][ReScheduled]'+_0x3f1a49['name'],_0x38c4ae[0x0][_0x9a97('0xa0')],_0x9a97('0xa1'));}else{_0x3f1a49[_0x9a97('0x3e')]='AVAILABLE_CONTACTS_FINISHED';logger['info'](_0x9a97('0xa2')+_0x3f1a49[_0x9a97('0x42')]);}}};}function notSendMessagesQueue(_0x194376){if(_0x194376['sendMessageOneNotActive']){freeVariablesPredictive(_0x194376);if(_0x194376['originated']===0x0&&_0x194376[_0x9a97('0x56')]===0x0&&_0x194376[_0x9a97('0xa3')]===0x0&&(_0x194376['pTalking']||0x0)===0x0){_0x194376['sendMessageOneNotActive']=![];_0x194376['available']=0x0;_0x194376[_0x9a97('0x3e')]=_0x9a97('0x41');loggerSyncQueueSummary[_0x9a97('0x98')](_0x9a97('0xa4'),_0x194376[_0x9a97('0x42')],_0x9a97('0xa5'));}else{_0x194376[_0x9a97('0x3e')]=_0x9a97('0xa6');loggerSyncQueueSummary[_0x9a97('0x98')](_0x9a97('0xa4'),_0x194376[_0x9a97('0x42')],_0x9a97('0xa7'));}emitVoiceQueueSummary(_0x194376);}}function notSendMessagesCampaign(_0x3d383b){if(_0x3d383b[_0x9a97('0xa8')]){if(_0x3d383b[_0x9a97('0x9c')]===0x0){_0x3d383b['sendMessageOneNotActive']=![];_0x3d383b[_0x9a97('0x3e')]='NOT_ACTIVE';loggerSyncQueueSummary[_0x9a97('0x98')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x3d383b[_0x9a97('0x42')],_0x9a97('0xa5'));}else{_0x3d383b[_0x9a97('0x3e')]=_0x9a97('0xa6');loggerSyncQueueSummary[_0x9a97('0x98')](_0x9a97('0xa9'),_0x3d383b[_0x9a97('0x42')],_0x9a97('0xa7'));}emitCampaignSummary(_0x3d383b);}}function createObjHistory(_0x56d172,_0x14a5f9,_0x1ae85d,_0x1ef0a1,_0x1aff14){_0x56d172[_0x9a97('0x3e')]=_0x1ae85d;var _0x4e501b=new Action(_0x56d172,_0x14a5f9);var _0x23c10c=new History(_0x4e501b);_0x23c10c['state']=_0x1ef0a1;_0x23c10c['statedesc']=_0x1aff14;_0x23c10c[_0x9a97('0xaa')]=_0x4e501b['starttime'];return _0x23c10c;}Dialer[_0x9a97('0xab')][_0x9a97('0x3d')]=function(){var _0x17b24f=this;setInterval(function(){_0x17b24f[_0x9a97('0xac')](_0x17b24f[_0x9a97('0xad')],_0x9a97('0xae'));_0x17b24f[_0x9a97('0xac')](_0x17b24f[_0x9a97('0x24')],'[actions]');},0x32c8);};Dialer[_0x9a97('0xab')][_0x9a97('0xac')]=function(_0x2047ff,_0x2f08fd){var _0x3e4442=this;for(var _0x12e466 in _0x2047ff){if(typeof _0x2047ff[_0x12e466]!==_0x9a97('0x9d')){this['sequence'][_0x9a97('0x1a')](function(){if(!_[_0x9a97('0xaf')](_0x2047ff[_0x12e466])){return ami['Action']({'action':_0x9a97('0xb0'),'channel':_0x2047ff[_0x12e466]['channel']})[_0x9a97('0xb1')](function(_0x58a608){if(_0x58a608['message']===_0x9a97('0xb2')){setTimeout(function(){if(_0x2047ff[_0x12e466]&&_0x2047ff[_0x12e466]['type']!=='ivr'){_0x3e4442['updateOriginated'](_0x3e4442[_0x9a97('0x1e')][_0x2047ff[_0x12e466]['queue']]);logger[_0x9a97('0x98')]('[Dialer][checkChannel]',_0x2f08fd,_0x12e466,_0x2047ff[_0x12e466][_0x9a97('0xb3')]);delete _0x2047ff[_0x12e466];}if(_0x2047ff[_0x12e466]&&_0x2047ff[_0x12e466][_0x9a97('0x4e')]===_0x9a97('0x7b')){_0x3e4442['updateOriginated'](_0x3e4442['campaigns'][_0x2047ff[_0x12e466][_0x9a97('0xb3')]]);logger[_0x9a97('0x98')]('[Dialer][checkChannel][ivr]',_0x2f08fd,_0x12e466,_0x2047ff[_0x12e466][_0x9a97('0xb3')]);delete _0x2047ff[_0x12e466];}},0x2328);}});}});}}};Dialer['prototype'][_0x9a97('0xb4')]=function(_0x44a84e){return BPromise[_0x9a97('0xb5')]()['then'](cmHopper[_0x9a97('0xb4')](_0x44a84e))['catch'](loggerCatch(_0x9a97('0xb6')));};Dialer['prototype'][_0x9a97('0xb7')]=function(_0x416f02){return BPromise[_0x9a97('0xb5')]()[_0x9a97('0xb8')](cmHopperBlack[_0x9a97('0xb7')](_0x416f02))[_0x9a97('0xb1')](loggerCatch(_0x9a97('0xb9')));};Dialer[_0x9a97('0xab')][_0x9a97('0xba')]=function(_0x507341){return BPromise[_0x9a97('0xb5')]()[_0x9a97('0xb8')](cmHopperBlack[_0x9a97('0xba')](_0x507341))['catch'](loggerCatch(_0x9a97('0xbb')));};Dialer[_0x9a97('0xab')][_0x9a97('0xbc')]=function(_0x206d18){return BPromise['resolve']()[_0x9a97('0xb8')](cmHopperHistory[_0x9a97('0xbd')](_0x206d18))[_0x9a97('0xb1')](loggerCatch('[averageHandleTime]\x20'));};Dialer[_0x9a97('0xab')]['rescheduleContact']=function(_0x4f7403){return BPromise[_0x9a97('0xb5')]()['then'](cmHopper[_0x9a97('0xbe')](_0x4f7403))[_0x9a97('0xb1')](loggerCatch('[rescheduleContact]\x20'));};Dialer[_0x9a97('0xab')][_0x9a97('0xbf')]=function(_0x19c1dd,_0x25535f,_0x17d3f7){return BPromise[_0x9a97('0xb5')]()[_0x9a97('0xb8')](cmHopper[_0x9a97('0xbf')](_0x19c1dd,_0x25535f,_0x17d3f7))[_0x9a97('0xb1')](loggerCatch(_0x9a97('0xc0')));};Dialer[_0x9a97('0xab')][_0x9a97('0xc1')]=function(_0x358fb7,_0x2396d5,_0x38ced1,_0x16c228,_0x2da46e){return BPromise[_0x9a97('0xb5')]()[_0x9a97('0xb8')](cmHopper[_0x9a97('0xc1')](_0x358fb7,_0x2396d5,_0x38ced1,_0x16c228))[_0x9a97('0xb1')](function(_0x205f13){_0x2da46e[_0x9a97('0xc2')]-=_0x38ced1;_0x2da46e[_0x9a97('0xc2')]=_0x2da46e[_0x9a97('0xc2')]>0x0?_0x2da46e[_0x9a97('0xc2')]:0x0;loggerCatch(_0x9a97('0xc3'))(_0x205f13);});};Dialer['prototype'][_0x9a97('0xc4')]=function(_0x44c005,_0x2508d3,_0x491642,_0x462e3d){return BPromise[_0x9a97('0xb5')]()['then'](cmHopper[_0x9a97('0xc4')](_0x44c005,_0x2508d3,_0x491642))['catch'](function(_0x2012da){_0x462e3d[_0x9a97('0xc2')]-=_0x2508d3;_0x462e3d[_0x9a97('0xc2')]=_0x462e3d[_0x9a97('0xc2')]>0x0?_0x462e3d[_0x9a97('0xc2')]:0x0;loggerCatch(_0x9a97('0xc5'))(_0x2012da);});};Dialer['prototype'][_0x9a97('0xc6')]=function(_0xa72f22){return BPromise[_0x9a97('0xb5')]()[_0x9a97('0xb8')](voiceQueueRt[_0x9a97('0xc6')](_0xa72f22))[_0x9a97('0xb1')](loggerCatch('[getVoiceQueueRtPauses]\x20'));};Dialer[_0x9a97('0xab')][_0x9a97('0xc7')]=function(_0x28b9a7){return BPromise['resolve']()['then'](cmHopper[_0x9a97('0xc7')](_0x28b9a7))[_0x9a97('0xb1')](loggerCatch('[moveContactManagedDialer]\x20'));};Dialer[_0x9a97('0xab')][_0x9a97('0xc8')]=function(_0x160322){return BPromise[_0x9a97('0xb5')]()['then'](cmHopperHistory[_0x9a97('0xc8')](_0x160322))[_0x9a97('0xb1')](loggerCatch('[createHistory]\x20'));};Dialer[_0x9a97('0xab')]['updateOriginated']=function(_0x44e9cd){if(!_[_0x9a97('0x87')](_0x44e9cd)&&_0x44e9cd!==null){if(typeof _0x44e9cd[_0x9a97('0x9c')]!==_0x9a97('0x9d')){if(_0x44e9cd[_0x9a97('0x9c')]>0x0){_0x44e9cd[_0x9a97('0x9c')]-=0x1;}else{logger['error'](_0x9a97('0xc9'));}}}else{logger[_0x9a97('0x98')](_0x9a97('0xca'));}};Dialer[_0x9a97('0xab')][_0x9a97('0xcb')]=function(_0x262dac,_0x496757){var _0x16e989=this;return function(_0x156cdf){_0x16e989[_0x9a97('0xcc')](_0x496757);logger[_0x9a97('0x98')](_0x262dac,util['inspect'](_0x156cdf,{'showHidden':![],'depth':null}));};};Dialer['prototype']['emptyContact']=function(_0x14ec48,_0x349e31,_0xf75483){var _0x259fb6={'state':0x19,'statedesc':_0x9a97('0xcd')};this['updateOriginated'](_0x349e31);this['saveInDb'](_[_0x9a97('0xce')](_0x259fb6,_['pick'](_0xf75483,[_0x9a97('0xcf'),_0x9a97('0xd0'),'UserId',_0x9a97('0xd1'),_0x9a97('0xd2')])),_0x9a97('0xd3'),_0x9a97('0xd4'));logger[_0x9a97('0x98')](_0x14ec48);};Dialer[_0x9a97('0xab')][_0x9a97('0xd5')]=function(_0x4840fd){return _0x4840fd==='Success';};Dialer['prototype'][_0x9a97('0xd6')]=function(_0x205194){return!_[_0x9a97('0x87')](_0x205194)&&_0x205194&&!_[_0x9a97('0x87')](_0x205194['name'])&&!_[_0x9a97('0x87')](_0x205194[_0x9a97('0x76')])&&_0x205194[_0x9a97('0x76')]&&(this[_0x9a97('0x21')][util['format']('SIP/%s',_0x205194[_0x9a97('0x42')])]['status']===_0x9a97('0xd7')||this[_0x9a97('0x21')][util['format'](_0x9a97('0xd8'),_0x205194[_0x9a97('0x42')])][_0x9a97('0xb0')]==='unmonitored');};Dialer[_0x9a97('0xab')]['saveInDb']=function(_0x12b98b,_0x4a5f3d,_0x2fcb92){this[_0x9a97('0xc8')](_0x12b98b)[_0x9a97('0xb1')](loggerCatch(_0x4a5f3d));this[_0x9a97('0xc7')](_0x12b98b)[_0x9a97('0xb1')](loggerCatch(_0x2fcb92));};Dialer[_0x9a97('0xab')][_0x9a97('0x38')]=function(_0x4a2e4e){var _0x15d11c=this['uniqueId'][_0x4a2e4e[_0x9a97('0xd9')]];var _0x1d8b4a;if(!_['isNil'](_0x4a2e4e)&&!_[_0x9a97('0xaf')](_0x4a2e4e[_0x9a97('0xda')])&&!_[_0x9a97('0xaf')](_0x4a2e4e[_0x9a97('0xda')][_0x9a97('0xdb')])&&_0x4a2e4e[_0x9a97('0xdc')]===_0x9a97('0xdd')&&_0x15d11c){if(_0x15d11c[_0x9a97('0x4e')]!==_0x9a97('0x7b')&&this[_0x9a97('0x1e')][_0x15d11c[_0x9a97('0xb3')]][_0x9a97('0xde')]&&_0x4a2e4e['value']===_0x9a97('0xdf')){delete this[_0x9a97('0xad')][_0x4a2e4e[_0x9a97('0xd9')]];this[_0x9a97('0xcc')](this[_0x9a97('0x1e')][_0x15d11c[_0x9a97('0xb3')]]);this['voiceQueues'][_0x15d11c['queue']]['outboundAnswerCallsDay']+=0x1;this[_0x9a97('0x1e')][_0x15d11c[_0x9a97('0xb3')]][_0x9a97('0x5f')]+=0x1;_0x1d8b4a=new Hangup(_0x15d11c,_0x4a2e4e);_0x1d8b4a[_0x9a97('0xe0')]=0x12;_0x1d8b4a[_0x9a97('0xe1')]=_0x9a97('0xe2');_0x1d8b4a[_0x9a97('0xe3')]=_0x9a97('0xe4');ami[_0x9a97('0x4d')](_0x9a97('0xe5'),ut['buildObj'](_0x1d8b4a,_0x9a97('0xe6')));this[_0x9a97('0xe7')](_0x1d8b4a,_0x9a97('0xe8'),_0x9a97('0xe9'));}if(_0x15d11c[_0x9a97('0x4e')]!=='ivr'&&this[_0x9a97('0x1e')][_0x15d11c['queue']][_0x9a97('0xde')]&&_0x4a2e4e['value']==='MACHINE'){var _0x3d9354=this;return new BPromise(function(_0x295f1c,_0x27424a){delete _0x3d9354['uniqueId'][_0x4a2e4e[_0x9a97('0xd9')]];_0x3d9354['updateOriginated'](_0x3d9354[_0x9a97('0x1e')][_0x15d11c['queue']]);_0x3d9354[_0x9a97('0x1e')][_0x15d11c[_0x9a97('0xb3')]][_0x9a97('0x60')]+=0x1;_0x3d9354[_0x9a97('0x1e')][_0x15d11c['queue']][_0x9a97('0x5f')]+=0x1;var _0x1faac0=_0x3d9354[_0x9a97('0x1e')][_0x15d11c[_0x9a97('0xb3')]];var _0x487295=new Hangup(_0x15d11c,_0x4a2e4e);_0x487295[_0x9a97('0xe0')]=0x13;_0x487295[_0x9a97('0xe1')]=_0x9a97('0xea');_0x487295[_0x9a97('0xe3')]=_0x9a97('0xe4');_0x487295[_0x9a97('0xeb')]+=0x1;_0x487295[_0x9a97('0xec')]+=0x1;_0x487295['amd']=!![];ami[_0x9a97('0x4d')](_0x9a97('0xe5'),ut[_0x9a97('0xed')](_0x487295,'amd'));_0x3d9354['createHistory'](_0x487295)[_0x9a97('0xb1')](loggerCatch(_0x9a97('0xee')));if(_0x487295[_0x9a97('0xef')]+_0x487295[_0x9a97('0xf0')]+_0x487295['countnoanswerretry']+_0x487295[_0x9a97('0xf1')]+_0x487295[_0x9a97('0xf2')]+_0x487295[_0x9a97('0xf3')]+_0x487295[_0x9a97('0xeb')]+_0x487295[_0x9a97('0xf4')]>=_0x1faac0[_0x9a97('0xf5')]){_0x3d9354[_0x9a97('0xf6')](_0x487295,_0x295f1c,_0x27424a,_0x9a97('0xf7'));}else{if(_0x487295[_0x9a97('0xeb')]>=_0x1faac0[_0x9a97('0xf8')]){_0x3d9354[_0x9a97('0xf9')](_0x487295,_0x295f1c,_0x27424a,_0x9a97('0xfa'));}else{_0x3d9354['rescheduleContact']({'active':![],'countmachineretry':_0x487295[_0x9a97('0xeb')],'scheduledat':moment()[_0x9a97('0xfb')](_0x1faac0[_0x9a97('0xfc')],_0x9a97('0xfd'))['format'](_0x9a97('0xfe')),'ContactId':_0x487295[_0x9a97('0xcf')],'ListId':_0x487295['ListId'],'VoiceQueueId':_0x487295[_0x9a97('0xd1')]||undefined,'CampaignId':_0x487295[_0x9a97('0xd2')]||undefined})[_0x9a97('0xb1')](loggerCatch(_0x9a97('0xff')));_0x295f1c({'reschedule':0x1});}}});}if(_0x15d11c['type']==='ivr'&&this[_0x9a97('0x1f')][_0x15d11c[_0x9a97('0xb3')]][_0x9a97('0xde')]&&_0x4a2e4e[_0x9a97('0x100')]==='HANGUP'){delete this[_0x9a97('0xad')][_0x4a2e4e[_0x9a97('0xd9')]];this[_0x9a97('0xcc')](this[_0x9a97('0x1f')][_0x15d11c[_0x9a97('0xb3')]]);_0x1d8b4a=new Hangup(_0x15d11c,_0x4a2e4e);_0x1d8b4a[_0x9a97('0xe0')]=0x12;_0x1d8b4a[_0x9a97('0xe1')]=_0x9a97('0xe2');_0x1d8b4a[_0x9a97('0xe3')]='AMD';ami[_0x9a97('0x4d')](_0x9a97('0xe5'),ut[_0x9a97('0xed')](_0x1d8b4a,'amd'));this[_0x9a97('0xe7')](_0x1d8b4a,'[syncHangupInAMDIvr][createHistory]',_0x9a97('0x101'));}if(_0x15d11c['type']==='ivr'&&this['campaigns'][_0x15d11c[_0x9a97('0xb3')]][_0x9a97('0xde')]&&_0x4a2e4e[_0x9a97('0x100')]===_0x9a97('0x102')){var _0x3d9354=this;return new BPromise(function(_0x425719,_0x3c291d){delete _0x3d9354[_0x9a97('0xad')][_0x4a2e4e[_0x9a97('0xd9')]];_0x3d9354[_0x9a97('0xcc')](_0x3d9354['campaigns'][_0x15d11c[_0x9a97('0xb3')]]);_0x3d9354[_0x9a97('0x1f')][_0x15d11c[_0x9a97('0xb3')]][_0x9a97('0x60')]+=0x1;_0x3d9354[_0x9a97('0x1f')][_0x15d11c[_0x9a97('0xb3')]][_0x9a97('0x5f')]+=0x1;var _0x6a7ee=_0x3d9354[_0x9a97('0x1f')][_0x15d11c[_0x9a97('0xb3')]];var _0x4995c1=new Hangup(_0x15d11c,_0x4a2e4e);_0x4995c1['state']=0x13;_0x4995c1[_0x9a97('0xe1')]=_0x9a97('0xea');_0x4995c1[_0x9a97('0xe3')]=_0x9a97('0xe4');_0x4995c1[_0x9a97('0xeb')]+=0x1;_0x4995c1[_0x9a97('0xec')]+=0x1;_0x4995c1['amd']=!![];ami[_0x9a97('0x4d')]('custom:amd',ut[_0x9a97('0xed')](_0x4995c1,_0x9a97('0xe6')));_0x3d9354[_0x9a97('0xc8')](_0x4995c1)[_0x9a97('0xb1')](loggerCatch(_0x9a97('0xee')));if(_0x4995c1[_0x9a97('0xef')]+_0x4995c1[_0x9a97('0xf0')]+_0x4995c1[_0x9a97('0x103')]+_0x4995c1[_0x9a97('0xf1')]+_0x4995c1['countdropretry']+_0x4995c1[_0x9a97('0xf3')]+_0x4995c1['countmachineretry']+_0x4995c1[_0x9a97('0xf4')]>=_0x6a7ee[_0x9a97('0xf5')]){_0x3d9354['stateGlobal'](_0x4995c1,_0x425719,_0x3c291d,_0x9a97('0xf7'));}else{if(_0x4995c1[_0x9a97('0xeb')]>=_0x6a7ee[_0x9a97('0xf8')]){_0x3d9354[_0x9a97('0xf9')](_0x4995c1,_0x425719,_0x3c291d,'reason\x2019\x20machine....');}else{_0x3d9354[_0x9a97('0xbe')]({'active':![],'countmachineretry':_0x4995c1[_0x9a97('0xeb')],'scheduledat':moment()['add'](_0x6a7ee[_0x9a97('0xfc')],_0x9a97('0xfd'))[_0x9a97('0x78')](_0x9a97('0xfe')),'ContactId':_0x4995c1[_0x9a97('0xcf')],'ListId':_0x4995c1[_0x9a97('0xd0')],'VoiceQueueId':_0x4995c1[_0x9a97('0xd1')]||undefined,'CampaignId':_0x4995c1[_0x9a97('0xd2')]||undefined})['catch'](loggerCatch(_0x9a97('0xff')));_0x425719({'reschedule':0x1});}}});}}};Dialer[_0x9a97('0xab')]['syncHangup']=function(_0x2abdf9){var _0x23696f=this['uniqueId'][_0x2abdf9['uniqueid']];var _0x2e172d=this;var _0x508ff8;if(_0x23696f&&_0x23696f[_0x9a97('0x4e')]===_0x9a97('0x7b')){delete this[_0x9a97('0xad')][_0x2abdf9[_0x9a97('0xd9')]];this['updateOriginated'](this[_0x9a97('0x1f')][_0x23696f[_0x9a97('0xb3')]]);this[_0x9a97('0x1f')][_0x23696f['queue']][_0x9a97('0x104')]+=0x1;_0x508ff8=new Hangup(_0x23696f,_0x2abdf9);this['createHistory'](_0x508ff8)[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x105')));this[_0x9a97('0xc7')](_0x508ff8)[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x106')));}if(_0x23696f&&_0x23696f[_0x9a97('0x4e')]!==_0x9a97('0x7b')&&isNotNull(this['voiceQueues'][_0x23696f[_0x9a97('0xb3')]][_0x9a97('0x107')])){delete this[_0x9a97('0xad')][_0x2abdf9['uniqueid']];this[_0x9a97('0xcc')](this['voiceQueues'][_0x23696f[_0x9a97('0xb3')]]);this['voiceQueues'][_0x23696f[_0x9a97('0xb3')]]['outboundAnswerCallsDay']+=0x1;this[_0x9a97('0x1e')][_0x23696f[_0x9a97('0xb3')]][_0x9a97('0x5f')]+=0x1;_0x508ff8=new Hangup(_0x23696f,_0x2abdf9);_0x508ff8[_0x9a97('0xe0')]=0x10;_0x508ff8[_0x9a97('0xe1')]='AnswerAGI';_0x508ff8[_0x9a97('0xe3')]=_0x9a97('0x108');this[_0x9a97('0xc8')](_0x508ff8)[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x105')));this[_0x9a97('0xc7')](_0x508ff8)[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x106')));}if(_0x23696f&&_0x23696f[_0x9a97('0x4e')]!=='ivr'&&!isNotNull(this[_0x9a97('0x1e')][_0x23696f['queue']]['dialQueueProject'])){delete this[_0x9a97('0xad')][_0x2abdf9[_0x9a97('0xd9')]];this[_0x9a97('0xcc')](this[_0x9a97('0x1e')][_0x23696f[_0x9a97('0xb3')]]);this[_0x9a97('0x1e')][_0x23696f[_0x9a97('0xb3')]][_0x9a97('0x69')]+=0x1;_0x508ff8=new Hangup(_0x23696f,_0x2abdf9);_0x508ff8['state']=0xc;_0x508ff8[_0x9a97('0xe1')]=_0x2abdf9['cause-txt'];_0x508ff8['membername']=_0x9a97('0x109');this['createHistory'](_0x508ff8)[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x105')));this['moveContactManagedDialer'](_0x508ff8)[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x106')));}};Dialer[_0x9a97('0xab')][_0x9a97('0x30')]=function(_0x15f7a8){var _0x14360c=this['uniqueId'][_0x15f7a8[_0x9a97('0xd9')]];var _0x50d226=this;if(this[_0x9a97('0x1e')][_0x15f7a8[_0x9a97('0xb3')]]){if(_0x14360c&&_0x14360c[_0x9a97('0x4e')]!==_0x9a97('0x7b')){delete this[_0x9a97('0xad')][_0x15f7a8[_0x9a97('0xd9')]];this['voiceQueues'][_0x15f7a8['queue']][_0x9a97('0x60')]+=0x1;var _0x5e8262=new AgentComplete(_0x14360c,_0x15f7a8);if(_0x15f7a8[_0x9a97('0x10a')]==='agent'){_0x5e8262[_0x9a97('0x10b')]=this[_0x9a97('0x1e')][_0x15f7a8['queue']]['dialQueueProject2']&&this[_0x9a97('0x1e')][_0x15f7a8[_0x9a97('0xb3')]][_0x9a97('0x10c')]?moment()[_0x9a97('0x78')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;}this[_0x9a97('0xc8')](_0x5e8262)[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x10d')));this[_0x9a97('0xc7')](_0x5e8262)['catch'](loggerCatch(_0x9a97('0x10e')));}}};Dialer['prototype'][_0x9a97('0x2b')]=function(_0x4a9002){if(this['voiceQueues'][_0x4a9002[_0x9a97('0xb3')]]){if(this[_0x9a97('0xad')][_0x4a9002[_0x9a97('0xd9')]]&&this[_0x9a97('0xad')][_0x4a9002[_0x9a97('0xd9')]][_0x9a97('0x4e')]!==_0x9a97('0x7b')){this['updateOriginated'](this[_0x9a97('0x1e')][_0x4a9002[_0x9a97('0xb3')]]);this['uniqueId'][_0x4a9002[_0x9a97('0xd9')]][_0x9a97('0x10f')]=moment()[_0x9a97('0x78')](_0x9a97('0xfe'));}}};Dialer[_0x9a97('0xab')][_0x9a97('0x110')]=function(_0x5f31ef){this[_0x9a97('0xc8')](_0x5f31ef)[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x10d')));this[_0x9a97('0xc7')](_0x5f31ef)[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x111')));};Dialer[_0x9a97('0xab')][_0x9a97('0x2e')]=function(_0x516fb1){var _0x5adb28=this[_0x9a97('0xad')][_0x516fb1[_0x9a97('0xd9')]];var _0xed477b=this;if(this[_0x9a97('0x1e')][_0x516fb1['queue']]){if(_0x5adb28&&_0x5adb28[_0x9a97('0x4e')]!==_0x9a97('0x7b')){delete this[_0x9a97('0xad')][_0x516fb1[_0x9a97('0xd9')]];this['updateOriginated'](this['voiceQueues'][_0x516fb1[_0x9a97('0xb3')]]);_0x5adb28[_0x9a97('0x112')]=moment()[_0x9a97('0x78')](_0x9a97('0xfe'));var _0x2b8b65=new QueueCallerAbandon(_0x5adb28,_0x516fb1);if(getSeconds(_0x5adb28['droptime'],_0x5adb28[_0x9a97('0x113')])>=_0x5adb28[_0x9a97('0x114')]){this[_0x9a97('0x1e')][_0x516fb1[_0x9a97('0xb3')]][_0x9a97('0x6b')]+=0x1;this['voiceQueues'][_0x516fb1['queue']]['outboundDropCallsDayTimeout']+=0x1;this[_0x9a97('0x1e')][_0x516fb1[_0x9a97('0xb3')]][_0x9a97('0x6d')]+=0x1;_0x2b8b65[_0x9a97('0xe0')]=0xa;_0x2b8b65[_0x9a97('0xe1')]=_0x9a97('0x115');_0x2b8b65[_0x9a97('0x116')]='TIMEOUT';_0x2b8b65[_0x9a97('0x10b')]=this[_0x9a97('0x1e')][_0x516fb1[_0x9a97('0xb3')]][_0x9a97('0x117')]?moment()[_0x9a97('0x78')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;_0x2b8b65['countdropretry']+=0x1;_0x2b8b65[_0x9a97('0xec')]+=0x1;if(_0x2b8b65[_0x9a97('0xf2')]>=this[_0x9a97('0x1e')][_0x516fb1[_0x9a97('0xb3')]][_0x9a97('0x118')]){this[_0x9a97('0x110')](_0x2b8b65);}else{this['rescheduleContact']({'active':![],'countdropretry':_0x2b8b65[_0x9a97('0xf2')],'scheduledat':moment()['add'](this[_0x9a97('0x1e')][_0x516fb1[_0x9a97('0xb3')]][_0x9a97('0x119')],_0x9a97('0xfd'))[_0x9a97('0x78')](_0x9a97('0xfe')),'ContactId':_0x5adb28[_0x9a97('0xcf')],'ListId':_0x5adb28[_0x9a97('0xd0')],'VoiceQueueId':_0x5adb28[_0x9a97('0xd1')]||undefined,'CampaignId':_0x5adb28[_0x9a97('0xd2')]||undefined})[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x11a')));var _0xa699b4=new History(_0x2b8b65);_0xa699b4[_0x9a97('0xe0')]=0xa;_0xa699b4[_0x9a97('0xe1')]=_0x9a97('0x115');_0xa699b4['starttime']=moment()[_0x9a97('0x78')](_0x9a97('0xfe'));_0xa699b4[_0x9a97('0xaa')]=_0xa699b4['starttime'];_0xa699b4['calleridname']=_0x2b8b65[_0x9a97('0x11b')];_0xa699b4[_0x9a97('0x11c')]=_0x2b8b65[_0x9a97('0x11c')];this[_0x9a97('0xc8')](_0xa699b4)[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x11d')));}}else{this[_0x9a97('0x1e')][_0x516fb1[_0x9a97('0xb3')]][_0x9a97('0x82')]+=0x1;this[_0x9a97('0x1e')][_0x516fb1[_0x9a97('0xb3')]][_0x9a97('0x64')]+=0x1;_0x2b8b65[_0x9a97('0xe0')]=0xb;_0x2b8b65[_0x9a97('0xe1')]=_0x9a97('0x11e');_0x2b8b65[_0x9a97('0x116')]=_0x9a97('0x11f');_0x2b8b65[_0x9a97('0xf3')]+=0x1;_0x2b8b65['countglobal']+=0x1;if(_0x2b8b65[_0x9a97('0xf3')]>=this[_0x9a97('0x1e')][_0x516fb1[_0x9a97('0xb3')]]['dialAbandonedMaxRetry']){this[_0x9a97('0x110')](_0x2b8b65);}else{this[_0x9a97('0xbe')]({'active':![],'countabandonedretry':_0x2b8b65['countabandonedretry'],'scheduledat':moment()[_0x9a97('0xfb')](this[_0x9a97('0x1e')][_0x516fb1[_0x9a97('0xb3')]]['dialAbandonedRetryFrequency'],_0x9a97('0xfd'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x5adb28[_0x9a97('0xcf')],'ListId':_0x5adb28[_0x9a97('0xd0')],'VoiceQueueId':_0x5adb28[_0x9a97('0xd1')]||undefined,'CampaignId':_0x5adb28['CampaignId']||undefined})[_0x9a97('0xb1')](loggerCatch('[rescheduleContact][Abandoned]'));var _0xa699b4=new History(_0x2b8b65);_0xa699b4[_0x9a97('0xe0')]=0xb;_0xa699b4[_0x9a97('0xe1')]=_0x9a97('0x11e');_0xa699b4[_0x9a97('0x120')]=moment()[_0x9a97('0x78')]('YYYY-MM-DD\x20HH:mm:ss');_0xa699b4[_0x9a97('0xaa')]=_0xa699b4['starttime'];_0xa699b4[_0x9a97('0x11b')]=_0x2b8b65[_0x9a97('0x11b')];_0xa699b4[_0x9a97('0x11c')]=_0x2b8b65[_0x9a97('0x11c')];this['createHistory'](_0xa699b4)[_0x9a97('0xb1')](loggerCatch('[syncAgentComplete][createHistory][11]'));}}}}};Dialer[_0x9a97('0xab')][_0x9a97('0x36')]=function(_0x5ac3d0){if(this['actions'][_0x5ac3d0[_0x9a97('0xd9')]]){this[_0x9a97('0x24')][_0x5ac3d0[_0x9a97('0xd9')]]['channel']=_0x5ac3d0['channel'];}if(this['uniqueId'][_0x5ac3d0[_0x9a97('0xd9')]]){this[_0x9a97('0xad')][_0x5ac3d0[_0x9a97('0xd9')]][_0x9a97('0x121')]=_0x5ac3d0[_0x9a97('0x121')];}};Dialer['prototype'][_0x9a97('0x122')]=function(_0x3385dd){if(strategy[this[_0x9a97('0x1e')][this['actions'][_0x3385dd[_0x9a97('0x123')]][_0x9a97('0xb3')]][_0x9a97('0x50')]]===_0x9a97('0x19')){if(this[_0x9a97('0x24')][_0x3385dd[_0x9a97('0x123')]]&&_[_0x9a97('0xaf')](this[_0x9a97('0x24')][_0x3385dd[_0x9a97('0x123')]][_0x9a97('0x124')])&&_0x3385dd[_0x9a97('0xb0')]==='1'&&_0x3385dd[_0x9a97('0x125')]==='0'){if(this[_0x9a97('0x20')][_0x3385dd['stateinterface']]){if(!this[_0x9a97('0x20')][_0x3385dd[_0x9a97('0x126')]][_0x9a97('0x124')]){this[_0x9a97('0x20')][_0x3385dd[_0x9a97('0x126')]][_0x9a97('0x124')]=!![];this[_0x9a97('0x24')][_0x3385dd[_0x9a97('0x123')]][_0x9a97('0x124')]=!![];this[_0x9a97('0x24')][_0x3385dd[_0x9a97('0x123')]][_0x9a97('0x126')]=_0x3385dd[_0x9a97('0x126')];}}}}else if((strategy[this[_0x9a97('0x1e')][this[_0x9a97('0x24')][_0x3385dd[_0x9a97('0x123')]][_0x9a97('0xb3')]][_0x9a97('0x50')]]||_0x9a97('0x18'))===_0x9a97('0x18')){if(this[_0x9a97('0x24')][_0x3385dd[_0x9a97('0x123')]]){if(this[_0x9a97('0x20')][_0x3385dd[_0x9a97('0x126')]]){this[_0x9a97('0x24')][_0x3385dd[_0x9a97('0x123')]][_0x9a97('0x126')]=_0x3385dd[_0x9a97('0x126')];if(_['isNil'](this['queueBooked'][this['actions'][_0x3385dd['actionid']]['queue']])){this['queueBooked'][this[_0x9a97('0x24')][_0x3385dd[_0x9a97('0x123')]][_0x9a97('0xb3')]]=[];}this[_0x9a97('0x28')][this[_0x9a97('0x24')][_0x3385dd[_0x9a97('0x123')]][_0x9a97('0xb3')]][_0x9a97('0x127')](_[_0x9a97('0xce')](_['pick'](this[_0x9a97('0x24')][_0x3385dd[_0x9a97('0x123')]],[_0x9a97('0x128'),'stateinterface']),{'status':_0x3385dd['status'],'paused':_0x3385dd[_0x9a97('0x125')]}));}}}};function unlockQueueStatus(_0x4d4ef5,_0x279323){setTimeout(function(){if(_[_0x9a97('0x87')](_0x4d4ef5[_0x9a97('0x129')])){loggerBooked[_0x9a97('0x98')]('[unlockQueueStatus][undefined]',_0x279323);}_0x4d4ef5[_0x9a97('0x129')]=!![];loggerBooked[_0x9a97('0x7e')]('[booked][unlockQueueStatus]',_0x279323,JSON[_0x9a97('0x4a')](_[_0x9a97('0x12a')](_0x4d4ef5,[_0x9a97('0x42'),_0x9a97('0x129')])));},0x1f3);}Dialer['prototype'][_0x9a97('0x3b')]=function(_0x444c2d){var _0x307aaa=this;var _0x195378=_0x307aaa[_0x9a97('0x1e')][_0x307aaa[_0x9a97('0x24')][_0x444c2d['actionid']][_0x9a97('0xb3')]];if(strategy[this[_0x9a97('0x1e')][this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]]['queue']][_0x9a97('0x50')]]===_0x9a97('0x19')){if(this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]]&&this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]]['stateinterface']){this[_0x9a97('0x1d')]['run'](this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]]['idHopper'],this[_0x9a97('0x24')][_0x444c2d['actionid']][_0x9a97('0x126')])[_0x9a97('0xb1')](function(_0x11d96e){logger[_0x9a97('0x98')](_0x9a97('0x12b'),util[_0x9a97('0x99')](_0x11d96e,{'showHidden':![],'depth':null}));})['finally'](function(){_0x307aaa[_0x9a97('0xcc')](_0x307aaa['voiceQueues'][_0x307aaa[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xb3')]]);_0x307aaa[_0x9a97('0x20')][_0x307aaa[_0x9a97('0x24')][_0x444c2d['actionid']][_0x9a97('0x126')]][_0x9a97('0x124')]=![];delete _0x307aaa[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]];unlockQueueStatus(_0x195378);});}else{this[_0x9a97('0xcc')](this[_0x9a97('0x1e')][this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xb3')]]);this[_0x9a97('0xbe')]({'active':![],'ContactId':this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xcf')],'ListId':this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xd0')],'VoiceQueueId':this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xd1')]||undefined,'CampaignId':this[_0x9a97('0x24')][_0x444c2d['actionid']][_0x9a97('0xd2')]||undefined})[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x12c')));delete this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]];unlockQueueStatus(_0x195378);}}else if((strategy[this[_0x9a97('0x1e')][this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xb3')]]['strategy']]||'rrmemory')===_0x9a97('0x18')){var _0x4597b9;if(this['actions'][_0x444c2d[_0x9a97('0x123')]]&&!_[_0x9a97('0x47')](this[_0x9a97('0x28')][this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xb3')]])){if(this[_0x9a97('0x29')][_0x307aaa[_0x9a97('0x24')][_0x444c2d['actionid']][_0x9a97('0xb3')]]){this['queueBookedRR'][_0x307aaa[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xb3')]]=this[_0x9a97('0x29')][this[_0x9a97('0x24')][_0x444c2d['actionid']][_0x9a97('0xb3')]]?this['queueBookedRR'][this['actions'][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xb3')]]:this[_0x9a97('0x28')][this['actions'][_0x444c2d['actionid']][_0x9a97('0xb3')]]?this['queueBooked'][this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]]['queue']][_0x9a97('0x12d')]||0x0:0x0;}this[_0x9a97('0x28')][this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xb3')]][_0x9a97('0x12d')]=this[_0x9a97('0x29')][this[_0x9a97('0x24')][_0x444c2d['actionid']]['queue']];for(var _0x4ecc1e=0x0;_0x4ecc1e<this['queueBooked'][this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xb3')]]['length'];_0x4ecc1e+=0x1){_0x4597b9=rr(this['queueBooked'][this['actions'][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xb3')]]);this[_0x9a97('0x29')][_0x307aaa[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xb3')]]=this[_0x9a97('0x28')][this['actions'][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xb3')]]['_rr'];if(_0x4597b9[_0x9a97('0xb0')]==='1'&&_0x4597b9[_0x9a97('0x125')]==='0'){break;}}if(!_[_0x9a97('0xaf')](_0x4597b9)){this[_0x9a97('0x20')][_0x4597b9['stateinterface']][_0x9a97('0x12e')]=_[_0x9a97('0x87')](this[_0x9a97('0x20')][_0x4597b9[_0x9a97('0x126')]][_0x9a97('0x12e')])?!![]:this['agents'][_0x4597b9['stateinterface']][_0x9a97('0x12e')];}loggerBooked[_0x9a97('0x7e')]('[booked][RR]',_0x444c2d[_0x9a97('0x123')],_0x9a97('0x12f'),JSON[_0x9a97('0x4a')](_[_0x9a97('0x12a')](this[_0x9a97('0x20')][_0x4597b9['stateinterface']],['name',_0x9a97('0x12e')])),_0x9a97('0x130'),JSON[_0x9a97('0x4a')](_0x4597b9[_0x9a97('0x128')]));if(!_[_0x9a97('0xaf')](_0x4597b9)&&_0x4597b9[_0x9a97('0xb0')]==='1'&&_0x4597b9[_0x9a97('0x125')]==='0'&&this[_0x9a97('0x20')][_0x4597b9['stateinterface']][_0x9a97('0x12e')]){this[_0x9a97('0x20')][_0x4597b9[_0x9a97('0x126')]][_0x9a97('0x12e')]=![];this['queueBooked'][_0x307aaa[_0x9a97('0x24')][_0x444c2d['actionid']][_0x9a97('0xb3')]]=[];this[_0x9a97('0x1d')]['run'](_0x4597b9[_0x9a97('0x128')],_0x4597b9[_0x9a97('0x126')])[_0x9a97('0xb1')](function(_0x314451){logger['error'](_0x9a97('0x12b'),util[_0x9a97('0x99')](_0x314451,{'showHidden':![],'depth':null}));})['finally'](function(){_0x307aaa[_0x9a97('0xcc')](_0x307aaa[_0x9a97('0x1e')][_0x307aaa[_0x9a97('0x24')][_0x444c2d['actionid']][_0x9a97('0xb3')]]);setTimeout(function(){_0x307aaa['agents'][_0x4597b9[_0x9a97('0x126')]][_0x9a97('0x12e')]=!![];loggerBooked[_0x9a97('0x7e')](_0x9a97('0x131'),_0x444c2d[_0x9a97('0x123')],_0x9a97('0x12f'),JSON[_0x9a97('0x4a')](_[_0x9a97('0x12a')](_0x307aaa[_0x9a97('0x20')][_0x4597b9[_0x9a97('0x126')]],['name',_0x9a97('0x12e')])),_0x9a97('0x130'),JSON[_0x9a97('0x4a')](_0x4597b9[_0x9a97('0x128')]));},0xc7);delete _0x307aaa[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]];unlockQueueStatus(_0x195378,_0x444c2d[_0x9a97('0x123')]);});}else{loggerBooked[_0x9a97('0x7e')]('[booked][unlock]');this[_0x9a97('0xcc')](this[_0x9a97('0x1e')][this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xb3')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xcf')],'ListId':this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]]['ListId'],'VoiceQueueId':this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xd1')]||undefined,'CampaignId':this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]]['CampaignId']||undefined})[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x12c')));delete this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]];unlockQueueStatus(_0x195378);}}else{loggerBooked[_0x9a97('0x7e')]('[booked][unlock2]');this[_0x9a97('0xcc')](this[_0x9a97('0x1e')][this[_0x9a97('0x24')][_0x444c2d['actionid']][_0x9a97('0xb3')]]);this[_0x9a97('0xbe')]({'active':![],'ContactId':this[_0x9a97('0x24')][_0x444c2d['actionid']][_0x9a97('0xcf')],'ListId':this[_0x9a97('0x24')][_0x444c2d['actionid']][_0x9a97('0xd0')],'VoiceQueueId':this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xd1')]||undefined,'CampaignId':this[_0x9a97('0x24')][_0x444c2d['actionid']][_0x9a97('0xd2')]||undefined})[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x132')));delete this['actions'][_0x444c2d['actionid']];unlockQueueStatus(_0x195378);}}else{loggerBooked[_0x9a97('0x7e')](_0x9a97('0x133'));this[_0x9a97('0xcc')](this['voiceQueues'][this['actions'][_0x444c2d[_0x9a97('0x123')]]['queue']]);this['rescheduleContact']({'active':![],'ContactId':this[_0x9a97('0x24')][_0x444c2d['actionid']][_0x9a97('0xcf')],'ListId':this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xd0')],'VoiceQueueId':this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]][_0x9a97('0xd1')]||undefined,'CampaignId':this[_0x9a97('0x24')][_0x444c2d[_0x9a97('0x123')]]['CampaignId']||undefined})[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x134')));delete this[_0x9a97('0x24')][_0x444c2d['actionid']];unlockQueueStatus(_0x195378);}};Dialer['prototype'][_0x9a97('0x3c')]=function(){var _0x4fac6b=this;return BPromise['resolve']()[_0x9a97('0xb8')](cmHopper[_0x9a97('0x135')]({}))[_0x9a97('0xb8')](function(){setInterval(function(){_0x4fac6b[_0x9a97('0x136')]();},0x3e8);});};Dialer[_0x9a97('0xab')]['checkIsTrunkReachable']=function(_0x15e574){var _0x1c3ec7=this;return function(){if(!_0x1c3ec7[_0x9a97('0xd6')](_0x15e574[_0x9a97('0x75')])){if(!_0x1c3ec7[_0x9a97('0xd6')](_0x15e574[_0x9a97('0x137')])){_0x15e574[_0x9a97('0x3e')]=_0x9a97('0x138');throw _0x15e574[_0x9a97('0x42')]+_0x9a97('0x139');}}};};Dialer[_0x9a97('0xab')][_0x9a97('0x13a')]=function(_0x40719a,_0x2066c6,_0x8b9cc3,_0x36519c){var _0x43caf2=this;return function(){var _0x203a16=!![];return _0x43caf2[_0x9a97('0x13b')](_0x40719a,_0x2066c6,_0x8b9cc3,_0x36519c,_0x203a16);};};Dialer['prototype'][_0x9a97('0x13c')]=function(_0x5d491c,_0x30327a,_0x4707d7,_0x3d72a4){var _0x50cb93=this;return function(){var _0x3a7f75=![];return _0x50cb93['ifTime'](_0x5d491c[_0x9a97('0x48')],_0x30327a,_0x4707d7,_0x3d72a4,_0x3a7f75);};};Dialer[_0x9a97('0xab')][_0x9a97('0x13b')]=function(_0x1f5e44,_0x1c2a77,_0x4a45e1,_0x33c999,_0x5b6192){var _0x9454ab=[];return new BPromise(function(_0x2a7dab,_0x1ef1d7){if(!isNotNull(_0x1f5e44)){_0x33c999[_0x9a97('0x3e')]=_0x9a97('0x46');return _0x1ef1d7(msgResponse(_0x9a97('0x13b'),_0x9a97('0x13d'),_0x4a45e1+_0x9a97('0x13e')));}if(_[_0x9a97('0x47')](_0x1f5e44)){_0x33c999['message']=_0x9a97('0x13f');return _0x1ef1d7(msgResponse(_0x9a97('0x13b'),'Failure',_0x4a45e1+'\x20Intervals\x20is\x20empty\x20'));}if(_0x1c2a77&&_[_0x9a97('0x87')](config[_0x9a97('0x140')][_0x1c2a77])){_0x33c999['message']='TIMEZONE_UNKNOW';return _0x1ef1d7(msgResponse(_0x9a97('0x13b'),_0x9a97('0x13d'),_0x4a45e1+_0x9a97('0x141')+_0x1c2a77));}if(_[_0x9a97('0x142')](_0x1f5e44)){for(var _0x537266=0x0;_0x537266<_0x1f5e44['length'];_0x537266+=0x1){_0x9454ab['push'](ami[_0x9a97('0x143')]({'action':_0x9a97('0x144'),'command':util[_0x9a97('0x78')](_0x9a97('0x145'),_0x1f5e44[_0x537266][_0x9a97('0x146')],!_[_0x9a97('0x87')](config['timezones'][_0x1c2a77])?_0x1c2a77:'')})[_0x9a97('0xb8')](function(_0x370ddf){return _0x370ddf[_0x9a97('0x147')][_0x9a97('0x148')](_0x9a97('0x149'))>=0x0;})[_0x9a97('0xb1')](myreject(_0x1ef1d7)));}}else{_0x9454ab[_0x9a97('0x127')](ami[_0x9a97('0x143')]({'action':'command','command':util[_0x9a97('0x78')]('iftime\x20%s,%s',_0x1f5e44,!_[_0x9a97('0x87')](config[_0x9a97('0x140')][_0x1c2a77])?_0x1c2a77:'')})[_0x9a97('0xb8')](function(_0x33fe4d){return _0x33fe4d['content'][_0x9a97('0x148')](_0x9a97('0x149'))>=0x0;})[_0x9a97('0xb1')](myreject(_0x1ef1d7)));}BPromise[_0x9a97('0x14a')](_0x9454ab)[_0x9a97('0xb8')](function(_0x106aef){var _0x3799dd=_[_0x9a97('0x14b')](_0x106aef);if(_0x3799dd){return _0x2a7dab(_0x3799dd);}else{_0x33c999[_0x9a97('0x3e')]=_0x5b6192?_0x9a97('0x14c'):'INTERVAL_IS_OVERTIME';return _0x1ef1d7(msgResponse(_0x9a97('0x14d'),'Failure','Global:\x20'+_0x5b6192+'\x20'+_0x4a45e1+_0x9a97('0x14e')+util[_0x9a97('0x99')](_0x1f5e44,{'showHidden':![],'depth':null})+_0x9a97('0x14f')+_0x1c2a77));}})['catch'](function(_0x1b0d0d){return _0x1ef1d7(msgResponse('ifTime','Failure',JSON[_0x9a97('0x4a')](_0x1b0d0d)));});});};Dialer[_0x9a97('0xab')][_0x9a97('0x150')]=function(_0x5e73eb){var _0x1dc34a=this;return function(){switch(_0x5e73eb[_0x9a97('0x5b')]){case _0x9a97('0x151'):freeVariablesPredictive(_0x5e73eb);_0x1dc34a['handlePower'](_0x5e73eb,0x1);break;case _0x9a97('0x152'):freeVariablesPredictive(_0x5e73eb);_0x1dc34a[_0x9a97('0x153')](_0x5e73eb,_0x5e73eb[_0x9a97('0x154')]);break;case _0x9a97('0x8'):_0x1dc34a['predictive'](_0x5e73eb);break;case _0x9a97('0x155'):freeVariablesPredictive(_0x5e73eb);_0x1dc34a['handlePower'](_0x5e73eb,0x1);break;default:freeVariablesPredictive(_0x5e73eb);logger['error'](_0x9a97('0x156'),_0x5e73eb[_0x9a97('0x42')],_0x9a97('0x157'));}};};Dialer[_0x9a97('0xab')][_0x9a97('0x158')]=function(_0x4d6246){var _0xf2ce3f=this;return function(){_0xf2ce3f[_0x9a97('0x159')](_0x4d6246);};};Dialer[_0x9a97('0xab')]['syncQueueSummary']=function(_0x29b89d){var _0x49121e=this;if(isNotPreview(_0x29b89d[_0x9a97('0x5b')])){if(isVoiceQueueOutbound(_0x29b89d[_0x9a97('0x4e')])&&isActive(_0x29b89d[_0x9a97('0x5a')])){_0x29b89d[_0x9a97('0xa8')]=!![];BPromise['resolve']()['then'](checkIsLoggedIn(_0x29b89d,_0x29b89d[_0x9a97('0x15a')]))[_0x9a97('0xb8')](checkIsActive(_0x29b89d,_0x29b89d[_0x9a97('0x5a')]))[_0x9a97('0xb8')](checkInterval(_0x29b89d))[_0x9a97('0xb8')](_0x49121e[_0x9a97('0x15b')](_0x29b89d))[_0x9a97('0xb8')](_0x49121e[_0x9a97('0x13a')](_0x29b89d[_0x9a97('0x15c')],_0x29b89d[_0x9a97('0x15d')],_0x29b89d[_0x9a97('0x42')],_0x29b89d))[_0x9a97('0xb8')](_0x49121e[_0x9a97('0x13c')](_0x29b89d[_0x9a97('0x44')],_0x29b89d['dialTimezone'],_0x29b89d['name'],_0x29b89d))[_0x9a97('0xb8')](_0x49121e[_0x9a97('0x150')](_0x29b89d))[_0x9a97('0xb1')](loggerCatchQueueSummary(_0x9a97('0x15e'),_0x29b89d));}else{notSendMessagesQueue(_0x29b89d);}}else{freeVariablesPredictive(_0x29b89d);}};Dialer[_0x9a97('0xab')]['syncCampaigns']=function(){var _0x4e92eb=this;var _0x3b55c4;for(var _0x32d9a9 in this[_0x9a97('0x1f')]){if(typeof this[_0x9a97('0x1f')][_0x32d9a9]!==_0x9a97('0x9d')){_0x3b55c4=this['campaigns'][_0x32d9a9];if(isCampaignIvr(_0x3b55c4[_0x9a97('0x4e')])&&isActive(_0x3b55c4[_0x9a97('0x76')])){_0x3b55c4['sendMessageOneNotActive']=!![];BPromise['resolve']()[_0x9a97('0xb8')](checkIsActive(_0x3b55c4,_0x3b55c4[_0x9a97('0x76')]))[_0x9a97('0xb8')](checkInterval(_0x3b55c4))[_0x9a97('0xb8')](_0x4e92eb[_0x9a97('0x15b')](_0x3b55c4))[_0x9a97('0xb8')](_0x4e92eb[_0x9a97('0x13a')](_0x3b55c4[_0x9a97('0x15c')],_0x3b55c4[_0x9a97('0x15d')],_0x3b55c4[_0x9a97('0x42')],_0x3b55c4))[_0x9a97('0xb8')](_0x4e92eb[_0x9a97('0x13c')](_0x3b55c4[_0x9a97('0x44')],_0x3b55c4[_0x9a97('0x15d')],_0x3b55c4['name'],_0x3b55c4))[_0x9a97('0xb8')](_0x4e92eb[_0x9a97('0x158')](_0x3b55c4))[_0x9a97('0xb1')](loggerCatchQueueSummary(_0x9a97('0x15f'),_0x3b55c4));}else{notSendMessagesCampaign(_0x3b55c4);}}}};function getCallerIdRandom(_0x4000a1,_0x4eb6c2){var _0x3c8b4c;var _0x3c6bfe;var _0x236d19;if(_0x4eb6c2<=0x0){_0x4eb6c2=0x1;}_0x3c8b4c=new RegExp('\x5cw{0,'+_0x4eb6c2+'}$');_0x3c6bfe=Math[_0x9a97('0x160')](0xa,_0x4eb6c2-0x1);_0x236d19=Math[_0x9a97('0x160')](0xa,_0x4eb6c2)-0x1;return util[_0x9a97('0x78')]('%s',_[_0x9a97('0x161')](_0x4000a1,_0x3c8b4c,_[_0x9a97('0x162')](_0x3c6bfe,_0x236d19)));}function extractCalleridName(_0x20cb2b){var _0x250f70=_0x20cb2b[_0x9a97('0x163')](/"(.*?)"/);return _0x250f70?_0x250f70[0x1]:_0x20cb2b;}function extractCalleridNumber(_0x1b2725){var _0x3121c1=_0x1b2725[_0x9a97('0x163')](/<(.*?)>/);return _0x3121c1?_0x3121c1[0x1]:_0x1b2725;}Dialer[_0x9a97('0xab')][_0x9a97('0x164')]=function(_0x5f0f36,_0x4f41f6){var _0x415ea3=this;var _0x9ed251=uuid['v4']();this[_0x9a97('0x24')][_0x9ed251]=new Action(_0x5f0f36,_0x4f41f6,_0x9ed251);return new BPromise(function(_0x5cb5f2,_0x3adbc8){if(_[_0x9a97('0x87')](_0x5f0f36)&&typeof _0x5f0f36!==_0x9a97('0x165')){return _0x3adbc8(msgResponse(_0x9a97('0x166'),_0x9a97('0x13d'),_0x9a97('0x167')));}if(_['isUndefined'](_0x4f41f6[_0x9a97('0x168')]['phone'])||_0x4f41f6[_0x9a97('0x168')][_0x9a97('0x169')]===null){return _0x3adbc8(msgResponse(_0x9a97('0x166'),_0x9a97('0x13d'),'contact\x20is\x20undefine'));}var _0x2c70d2={'XMD-CALLERID':_0x415ea3[_0x9a97('0x24')][_0x9ed251][_0x9a97('0x16a')](),'XMD-AGI':_0x5f0f36['dialQueueProject']?util[_0x9a97('0x78')](_0x9a97('0x16b'),ipAgi,_0x5f0f36[_0x9a97('0x107')]):_0x9a97('0x16c'),'XMD-AGIAFTER':_0x5f0f36[_0x9a97('0x117')]?util[_0x9a97('0x78')](_0x9a97('0x16b'),ipAgi,_0x5f0f36['dialQueueProject2']):_0x9a97('0x16c'),'XMD-QUEUE':_0x5f0f36['type']===_0x9a97('0x4f')?util[_0x9a97('0x78')](_0x9a97('0x16d'),_0x5f0f36[_0x9a97('0x42')],_0x5f0f36['dialQueueOptions']||'',_0x5f0f36[_0x9a97('0x10c')]?'c':'',_0x5f0f36[_0x9a97('0x114')]||0x3):_0x9a97('0x16c'),'XMD-CONTACTID':_0x4f41f6['ContactId'],'XMD-CDRTYPE':_0x9a97('0x16e'),'CALLERID(all)':_0x415ea3[_0x9a97('0x24')][_0x9ed251][_0x9a97('0x16a')](),'XMD-AMD':_0x5f0f36[_0x9a97('0xde')]?_0x9a97('0x16f'):_0x9a97('0x16c'),'XMD-DESTINATION':'xcally-motion-dialer'};if(_0x5f0f36[_0x9a97('0xde')]){_0x2c70d2['XMD-AMDINITIALSILENCE']=_0x5f0f36[_0x9a97('0x170')]||0x9c4;_0x2c70d2[_0x9a97('0x171')]=_0x5f0f36[_0x9a97('0x172')]||0x5dc;_0x2c70d2[_0x9a97('0x173')]=_0x5f0f36['dialAMDAfterGreetingSilence']||0x320;_0x2c70d2['XMD-AMDTOTALANALYSISTIME']=_0x5f0f36[_0x9a97('0x174')]||0x1388;_0x2c70d2[_0x9a97('0x175')]=_0x5f0f36[_0x9a97('0x176')]||0x64;_0x2c70d2[_0x9a97('0x177')]=_0x5f0f36['dialAMDBetweenWordsSilence']||0x32;_0x2c70d2['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x5f0f36[_0x9a97('0x178')]||0x3;_0x2c70d2[_0x9a97('0x179')]=_0x5f0f36[_0x9a97('0x17a')]||0x100;_0x2c70d2[_0x9a97('0x17b')]=_0x5f0f36[_0x9a97('0x17c')]||0x1388;}if(_0x5f0f36['type']===_0x9a97('0x4f')){_0x2c70d2[_0x9a97('0x17d')]=_0x4f41f6[_0x9a97('0xd1')];}else{_0x2c70d2[_0x9a97('0x17e')]=_0x4f41f6['CampaignId'];}for(var _0xfa0c94 in _0x4f41f6['Contact']){if(typeof _0x4f41f6[_0x9a97('0x168')][_0xfa0c94]!=='undefined'){if(isNotNull(_0x4f41f6[_0x9a97('0x168')][_0xfa0c94])&&_0xfa0c94!=='id'&&_0xfa0c94!=='tags'&&_0xfa0c94!==_0x9a97('0x17f')&&_0xfa0c94!==_0x9a97('0x180')){_0x2c70d2[util[_0x9a97('0x78')](_0x9a97('0x181'),'XMD-',_[_0x9a97('0x182')](_0xfa0c94))]=_0x4f41f6['Contact'][_0xfa0c94];}}}var _0x3eb31f=_0x415ea3[_0x9a97('0xd6')](_0x5f0f36[_0x9a97('0x75')])?getCallerId(_0x5f0f36[_0x9a97('0x75')][_0x9a97('0x77')],_0x5f0f36['dialOriginateCallerIdName'],_0x5f0f36[_0x9a97('0x183')]>0x0?getCallerIdRandom(_0x5f0f36[_0x9a97('0x5d')],_0x5f0f36[_0x9a97('0x183')]):_0x5f0f36[_0x9a97('0x5d')]):getCallerId(_[_0x9a97('0xaf')](_0x5f0f36['TrunkBackup'])?_0x5f0f36[_0x9a97('0x75')][_0x9a97('0x77')]:_0x5f0f36['TrunkBackup']['callerid'],_0x5f0f36[_0x9a97('0x5c')],_0x5f0f36['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x5f0f36[_0x9a97('0x5d')],_0x5f0f36['dialRandomLastDigitCallerIdNumber']):_0x5f0f36['dialOriginateCallerIdNumber']);if(_0x3eb31f){_0x2c70d2['XMD-ORIGINATECALLERIDNAME']=_0x415ea3[_0x9a97('0x24')][_0x9ed251][_0x9a97('0x184')]=extractCalleridName(_0x3eb31f);_0x2c70d2[_0x9a97('0x185')]=_0x415ea3[_0x9a97('0x24')][_0x9ed251][_0x9a97('0x186')]=extractCalleridNumber(_0x3eb31f);}return ami['Action']({'actionid':_0x9ed251,'action':_0x9a97('0x166'),'channel':_0x415ea3[_0x9a97('0xd6')](_0x5f0f36[_0x9a97('0x75')])?util['format'](_0x9a97('0x187'),_0x5f0f36[_0x9a97('0x75')][_0x9a97('0x42')],isNotNull(_0x5f0f36[_0x9a97('0x188')])?_0x5f0f36[_0x9a97('0x188')][_0x9a97('0x189')]()||'':'',_0x5f0f36[_0x9a97('0x18a')]>0x0?_0x4f41f6[_0x9a97('0x168')][_0x9a97('0x169')][_0x9a97('0x18b')](_0x5f0f36['dialCutDigit']):_0x4f41f6['Contact']['phone']):util['format']('SIP/%s/%s%s',_['isNil'](_0x5f0f36[_0x9a97('0x137')])?_0x5f0f36[_0x9a97('0x75')][_0x9a97('0x42')]:_0x5f0f36[_0x9a97('0x137')][_0x9a97('0x42')],isNotNull(_0x5f0f36['dialPrefix'])?_0x5f0f36[_0x9a97('0x188')][_0x9a97('0x189')]()||'':'',_0x5f0f36[_0x9a97('0x18a')]>0x0?_0x4f41f6[_0x9a97('0x168')][_0x9a97('0x169')][_0x9a97('0x18b')](_0x5f0f36[_0x9a97('0x18a')]):_0x4f41f6['Contact'][_0x9a97('0x169')]),'callerid':_0x3eb31f,'Exten':_0x9a97('0xdd'),'Context':_0x9a97('0x18c'),'Priority':'1','variable':_0x2c70d2,'timeout':(_0x5f0f36[_0x9a97('0x5e')]||0x1e)*0x3e8,'async':!![],'channelid':_0x9ed251})[_0x9a97('0xb8')](function(_0x2b97e2){return _0x5cb5f2(_0x2b97e2);})[_0x9a97('0xb1')](function(_0x5305d8){_0x5f0f36[_0x9a97('0x67')]+=0x1;var _0x44e301=new History(_0x415ea3[_0x9a97('0x24')][_0x9ed251]);logger[_0x9a97('0x98')](util[_0x9a97('0x78')](_0x9a97('0x18d'),JSON[_0x9a97('0x4a')](_0x5305d8)));_0x44e301['state']=0xe;_0x44e301[_0x9a97('0xe1')]=_0x9a97('0x18e');_0x44e301[_0x9a97('0x120')]=moment()[_0x9a97('0x78')](_0x9a97('0xfe'));_0x44e301[_0x9a97('0xaa')]=_0x44e301[_0x9a97('0x120')];_0x415ea3[_0x9a97('0xc8')](_0x44e301)[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x18f')));_0x415ea3[_0x9a97('0xc7')](_0x44e301)['catch'](loggerCatch(_0x9a97('0x18f')))[_0x9a97('0x1c')](function(){delete _0x415ea3[_0x9a97('0x24')][_0x9ed251];return _0x3adbc8(msgResponse(_0x9a97('0x166'),'Error',_0x9a97('0x190')));});});});};Dialer[_0x9a97('0xab')]['syncOriginateResponse']=function(_0x53744f){var _0x175100=this[_0x9a97('0x24')][_0x53744f[_0x9a97('0x123')]];if(_0x175100){delete this[_0x9a97('0x24')][_0x53744f['actionid']];_0x175100[_0x9a97('0x113')]=moment()[_0x9a97('0x78')]('YYYY-MM-DD\x20HH:mm:ss');var _0x502d69=_0x175100[_0x9a97('0x4e')]===_0x9a97('0x7b')?this[_0x9a97('0x1f')][_0x175100[_0x9a97('0xb3')]]:this[_0x9a97('0x1e')][_0x175100['getQueue']()];if(!this[_0x9a97('0xd5')](_0x53744f[_0x9a97('0x191')])){this[_0x9a97('0xcc')](_0x502d69);return this[_0x9a97('0x192')](_0x175100,_0x502d69,_0x53744f)[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x193')));}this[_0x9a97('0xad')][_0x53744f['uniqueid']]=_0x175100;}};Dialer[_0x9a97('0xab')][_0x9a97('0x194')]=function(_0x63b3fe,_0x39b6d1,_0x2ef562){var _0x5141b0=new History(_0x39b6d1);if(_0x5141b0[_0x9a97('0xef')]+_0x5141b0[_0x9a97('0xf0')]+_0x5141b0['countnoanswerretry']+_0x5141b0[_0x9a97('0xf1')]+_0x5141b0[_0x9a97('0xf2')]+_0x5141b0[_0x9a97('0xf3')]+_0x5141b0[_0x9a97('0xeb')]+_0x5141b0['countagentrejectretry']>=_0x2ef562[_0x9a97('0xf5')]-0x1){return!![];}switch(_0x63b3fe){case 0x3:if(_0x5141b0[_0x9a97('0x103')]>=_0x2ef562[_0x9a97('0x195')]-0x1){return!![];}this[_0x9a97('0xbe')]({'active':![],'countnoanswerretry':_0x5141b0['countnoanswerretry']+=0x1,'scheduledat':moment()[_0x9a97('0xfb')](_0x2ef562['dialNoAnswerRetryFrequency'],'minutes')[_0x9a97('0x78')](_0x9a97('0xfe')),'ContactId':_0x5141b0[_0x9a97('0xcf')],'ListId':_0x5141b0[_0x9a97('0xd0')],'VoiceQueueId':_0x5141b0[_0x9a97('0xd1')]||undefined,'CampaignId':_0x5141b0['CampaignId']||undefined})[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x196')));break;case 0x5:if(_0x5141b0[_0x9a97('0xef')]>=_0x2ef562[_0x9a97('0x197')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countbusyretry':_0x5141b0[_0x9a97('0xef')]+=0x1,'scheduledat':moment()[_0x9a97('0xfb')](_0x2ef562[_0x9a97('0x198')],_0x9a97('0xfd'))[_0x9a97('0x78')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x5141b0[_0x9a97('0xcf')],'ListId':_0x5141b0['ListId'],'VoiceQueueId':_0x5141b0[_0x9a97('0xd1')]||undefined,'CampaignId':_0x5141b0[_0x9a97('0xd2')]||undefined})[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x199')));break;case 0x8:if(_0x5141b0[_0x9a97('0xf0')]>=_0x2ef562[_0x9a97('0x19a')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countcongestionretry':_0x5141b0[_0x9a97('0xf0')]+=0x1,'scheduledat':moment()[_0x9a97('0xfb')](_0x2ef562['dialCongestionRetryFrequency'],'minutes')[_0x9a97('0x78')](_0x9a97('0xfe')),'ContactId':_0x5141b0['ContactId'],'ListId':_0x5141b0[_0x9a97('0xd0')],'VoiceQueueId':_0x5141b0[_0x9a97('0xd1')]||undefined,'CampaignId':_0x5141b0['CampaignId']||undefined})[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x19b')));break;case 0x0:if(_0x5141b0[_0x9a97('0xf1')]>=_0x2ef562[_0x9a97('0x19c')]-0x1){return!![];}else{this['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x5141b0[_0x9a97('0xf1')]+=0x1,'scheduledat':moment()['add'](_0x2ef562[_0x9a97('0x19d')],'minutes')[_0x9a97('0x78')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x5141b0[_0x9a97('0xcf')],'ListId':_0x5141b0[_0x9a97('0xd0')],'VoiceQueueId':_0x5141b0['VoiceQueueId']||undefined,'CampaignId':_0x5141b0['CampaignId']||undefined})[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x19e')));}break;case 0xa:if(_0x5141b0[_0x9a97('0xf2')]>=_0x2ef562['dialDropMaxRetry']-0x1){return!![];}this[_0x9a97('0xbe')]({'active':![],'countdropretry':_0x5141b0[_0x9a97('0xf2')]+=0x1,'scheduledat':moment()[_0x9a97('0xfb')](_0x2ef562[_0x9a97('0x119')],_0x9a97('0xfd'))[_0x9a97('0x78')](_0x9a97('0xfe')),'ContactId':_0x5141b0[_0x9a97('0xcf')],'ListId':_0x5141b0[_0x9a97('0xd0')],'VoiceQueueId':_0x5141b0[_0x9a97('0xd1')]||undefined,'CampaignId':_0x5141b0[_0x9a97('0xd2')]||undefined})[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x11a')));break;case 0xb:if(_0x5141b0[_0x9a97('0xf3')]>=_0x2ef562[_0x9a97('0x19f')]-0x1){return!![];}this[_0x9a97('0xbe')]({'active':![],'countabandonedretry':_0x5141b0[_0x9a97('0xf3')]+=0x1,'scheduledat':moment()['add'](_0x2ef562[_0x9a97('0x1a0')],'minutes')['format'](_0x9a97('0xfe')),'ContactId':_0x5141b0[_0x9a97('0xcf')],'ListId':_0x5141b0[_0x9a97('0xd0')],'VoiceQueueId':_0x5141b0[_0x9a97('0xd1')]||undefined,'CampaignId':_0x5141b0['CampaignId']||undefined})[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x1a1')));break;case 0x13:if(_0x5141b0[_0x9a97('0xeb')]>=_0x2ef562[_0x9a97('0xf8')]-0x1){return!![];}this[_0x9a97('0xbe')]({'active':![],'countmachineretry':_0x5141b0[_0x9a97('0xeb')]+=0x1,'scheduledat':moment()[_0x9a97('0xfb')](_0x2ef562['dialMachineRetryFrequency'],_0x9a97('0xfd'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x5141b0[_0x9a97('0xcf')],'ListId':_0x5141b0['ListId'],'VoiceQueueId':_0x5141b0[_0x9a97('0xd1')]||undefined,'CampaignId':_0x5141b0[_0x9a97('0xd2')]||undefined})[_0x9a97('0xb1')](loggerCatch(_0x9a97('0xff')));break;case 0x14:if(_0x5141b0[_0x9a97('0xf4')]>=_0x2ef562[_0x9a97('0x1a2')]-0x1){return!![];}this[_0x9a97('0xbe')]({'active':![],'countagentrejectretry':_0x5141b0[_0x9a97('0xf4')]+=0x1,'scheduledat':moment()[_0x9a97('0xfb')](_0x2ef562['dialAgentRejectRetryFrequency'],_0x9a97('0xfd'))[_0x9a97('0x78')](_0x9a97('0xfe')),'ContactId':_0x5141b0[_0x9a97('0xcf')],'ListId':_0x5141b0[_0x9a97('0xd0')],'VoiceQueueId':_0x5141b0[_0x9a97('0xd1')]||undefined,'CampaignId':_0x5141b0[_0x9a97('0xd2')]||undefined})[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x1a3')));break;default:return!![];}};Dialer[_0x9a97('0xab')][_0x9a97('0x192')]=function(_0x225354,_0x300411,_0x2eeb81){var _0x529f51=this;var _0x5cda76=new History(_0x225354);return new BPromise(function(_0x1e89d5,_0x297f6e){if(_[_0x9a97('0x87')](_0x300411)&&typeof _0x300411!==_0x9a97('0x165')){return _0x297f6e(msgResponse('[callProgressDetecting]',_0x9a97('0x13d'),_0x9a97('0x1a4')));}if(_[_0x9a97('0x87')](_0x2eeb81)&&typeof _0x2eeb81!==_0x9a97('0x165')){return _0x297f6e(msgResponse(_0x9a97('0x1a5'),_0x9a97('0x13d'),'evt\x20is\x20undefine'));}switch(_0x2eeb81[_0x9a97('0x10a')]){case'0':_0x300411['outboundNoSuchCallsDay']+=0x1;_0x5cda76[_0x9a97('0xe0')]=0x0;_0x5cda76['statedesc']=_0x9a97('0x1a6');_0x5cda76[_0x9a97('0xf1')]+=0x1;_0x5cda76[_0x9a97('0xec')]+=0x1;ami['emit'](_0x9a97('0x1a7'),ut[_0x9a97('0xed')](_0x225354,_0x9a97('0x1a8')));_0x529f51[_0x9a97('0xc8')](_0x5cda76)['catch'](loggerCatch(_0x9a97('0xee')));if(_0x529f51[_0x9a97('0x194')](0x0,_0x225354,_0x300411)){if(_0x5cda76[_0x9a97('0xf1')]>=_0x300411['dialNoSuchNumberMaxRetry']){_0x529f51[_0x9a97('0xf9')](_0x5cda76,_0x1e89d5,_0x297f6e,_0x9a97('0x1a9'));}else{_0x529f51['stateGlobal'](_0x5cda76,_0x1e89d5,_0x297f6e,_0x9a97('0x1a9'));}}break;case'3':_0x300411['outboundNoAnswerCallsDay']+=0x1;_0x5cda76[_0x9a97('0xe0')]=0x3;_0x5cda76[_0x9a97('0xe1')]=_0x9a97('0x1aa');_0x5cda76['countnoanswerretry']+=0x1;_0x5cda76['countglobal']+=0x1;ami[_0x9a97('0x4d')]('custom:agentnoanswer',ut[_0x9a97('0xed')](_0x225354,_0x9a97('0x1ab')));_0x529f51['createHistory'](_0x5cda76)[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x1ac')));if(_0x529f51[_0x9a97('0x194')](0x3,_0x225354,_0x300411)){if(_0x5cda76[_0x9a97('0x103')]>=_0x300411[_0x9a97('0x195')]){_0x529f51[_0x9a97('0xf9')](_0x5cda76,_0x1e89d5,_0x297f6e,_0x9a97('0x1ad'));}else{_0x529f51[_0x9a97('0xf6')](_0x5cda76,_0x1e89d5,_0x297f6e,_0x9a97('0x1ad'));}}break;case'5':_0x300411[_0x9a97('0x61')]+=0x1;_0x5cda76[_0x9a97('0xe0')]=0x5;_0x5cda76[_0x9a97('0xe1')]=_0x9a97('0x1ae');_0x5cda76[_0x9a97('0xef')]+=0x1;_0x5cda76[_0x9a97('0xec')]+=0x1;ami[_0x9a97('0x4d')](_0x9a97('0x1af'),ut[_0x9a97('0xed')](_0x225354,'busy'));_0x529f51[_0x9a97('0xc8')](_0x5cda76)[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x1b0')));if(_0x529f51['checkRetriveMax'](0x5,_0x225354,_0x300411)){if(_0x5cda76['countbusyretry']>=_0x300411[_0x9a97('0x197')]){_0x529f51[_0x9a97('0xf9')](_0x5cda76,_0x1e89d5,_0x297f6e,_0x9a97('0x1b1'));}else{_0x529f51[_0x9a97('0xf6')](_0x5cda76,_0x1e89d5,_0x297f6e,'reason\x205\x20busy');}}break;case'8':_0x300411['outboundCongestionCallsDay']+=0x1;_0x5cda76[_0x9a97('0xe0')]=0x8;_0x5cda76[_0x9a97('0xe1')]='Congestion';_0x5cda76[_0x9a97('0xf0')]+=0x1;_0x5cda76['countglobal']+=0x1;ami[_0x9a97('0x4d')](_0x9a97('0x1b2'),ut[_0x9a97('0xed')](_0x225354,_0x9a97('0x1b3')));_0x529f51['createHistory'](_0x5cda76)[_0x9a97('0xb1')](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0x529f51[_0x9a97('0x194')](0x8,_0x225354,_0x300411)){if(_0x5cda76[_0x9a97('0xf0')]>=_0x300411[_0x9a97('0x19a')]){_0x529f51['createStateFinal'](_0x5cda76,_0x1e89d5,_0x297f6e,_0x9a97('0x1b4'));}else{_0x529f51[_0x9a97('0xf6')](_0x5cda76,_0x1e89d5,_0x297f6e,'reason\x208\x20congestion');}}break;case'11':_0x300411[_0x9a97('0x1b5')]+=0x1;_0x5cda76['state']=0xb;_0x5cda76['statedesc']=_0x9a97('0x11e');_0x5cda76[_0x9a97('0xf3')]+=0x1;_0x5cda76[_0x9a97('0xec')]+=0x1;_0x529f51[_0x9a97('0xc8')](_0x5cda76)[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x1b6')));if(_0x529f51[_0x9a97('0x194')](0xb,_0x225354,_0x300411)){if(_0x5cda76[_0x9a97('0xf3')]>=_0x300411['dialAbandonedMaxRetry']){_0x529f51['createStateFinal'](_0x5cda76,_0x1e89d5,_0x297f6e,_0x9a97('0x1b7'));}else{_0x529f51[_0x9a97('0xf6')](_0x5cda76,_0x1e89d5,_0x297f6e,_0x9a97('0x1b7'));}}break;case'20':_0x300411['outboundRejectCallsDay']+=0x1;_0x5cda76[_0x9a97('0xe0')]=0x14;_0x5cda76[_0x9a97('0xe1')]=_0x9a97('0x1b8');_0x5cda76[_0x9a97('0xf4')]+=0x1;_0x5cda76['countglobal']+=0x1;ami[_0x9a97('0x4d')](_0x9a97('0x1b9'),ut[_0x9a97('0xed')](_0x225354,_0x9a97('0x1ba')));_0x529f51[_0x9a97('0xc8')](_0x5cda76)['catch'](loggerCatch('[syncAgentComplete][createHistory][20]'));if(_0x529f51['checkRetriveMax'](0x14,_0x225354,_0x300411)){if(_0x5cda76[_0x9a97('0xf4')]>=_0x300411[_0x9a97('0x1a2')]){_0x529f51[_0x9a97('0xf9')](_0x5cda76,_0x1e89d5,_0x297f6e,_0x9a97('0x1bb'));}else{_0x529f51['stateGlobal'](_0x5cda76,_0x1e89d5,_0x297f6e,_0x9a97('0x1bb'));}}break;default:_0x300411[_0x9a97('0x69')]+=0x1;_0x5cda76['state']=0xc;_0x5cda76[_0x9a97('0xe1')]=_0x2eeb81['reason'];_0x529f51[_0x9a97('0xc8')](_0x5cda76)[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x1bc')));if(_0x529f51[_0x9a97('0x194')](_0x2eeb81[_0x9a97('0x10a')],_0x225354,_0x300411)){if(_0x5cda76[_0x9a97('0xef')]+_0x5cda76[_0x9a97('0xf0')]+_0x5cda76[_0x9a97('0x103')]+_0x5cda76[_0x9a97('0xf1')]+_0x5cda76[_0x9a97('0xf2')]+_0x5cda76['countabandonedretry']+_0x5cda76[_0x9a97('0xeb')]+_0x5cda76['countagentrejectretry']>=_0x300411[_0x9a97('0xf5')]){_0x529f51[_0x9a97('0xf6')](_0x5cda76,_0x1e89d5,_0x297f6e,_0x2eeb81[_0x9a97('0x10a')]);}else{_0x529f51[_0x9a97('0xf9')](_0x5cda76,_0x1e89d5,_0x297f6e,_0x2eeb81[_0x9a97('0x10a')]);}}}});};Dialer[_0x9a97('0xab')][_0x9a97('0xf6')]=function(_0x43d0df,_0x11a23f,_0xca0992,_0x4adfc0){var _0x2a8176=new Final(_0x43d0df);_0x2a8176['state']=0xf;_0x2a8176['statedesc']=_0x9a97('0x1bd');this['createStateFinal'](_0x2a8176,_0x11a23f,_0xca0992,_0x4adfc0);};Dialer[_0x9a97('0xab')][_0x9a97('0xf9')]=function(_0xda84b,_0x1b49fd,_0x28b66c,_0xb92c57){this['moveContactManagedDialer'](_0xda84b)[_0x9a97('0xb8')](function(){return _0x1b49fd(msgResponse(_0x9a97('0x1a5'),_0x9a97('0x1be'),_0xb92c57));})[_0x9a97('0xb1')](function(){return _0x28b66c(msgResponse('[moveContactManagedDialer][0]',_0x9a97('0x13d'),_0x9a97('0x1bf')));});};Dialer[_0x9a97('0xab')]['predictive']=function(_0x263100){var _0x280f7f=_0x263100[_0x9a97('0x1c0')]/0x64;var _0x1a2ccd=_0x263100[_0x9a97('0x1c1')]/(_0x263100[_0x9a97('0x1c1')]+_0x263100[_0x9a97('0x60')]);var _0x1b9b2e=Math[_0x9a97('0x1c2')](_0x263100[_0x9a97('0x70')]*(_0x263100[_0x9a97('0x1c3')]/0x64));var _0x25c80d=Math['round'](_0x263100['predictiveIntervalAvailable']*(_0x263100[_0x9a97('0x1c4')]/0x64));var _0x15808f=_0x263100['available']+_0x263100[_0x9a97('0x56')];var _0x4a5e9e=Math['floor'](_0x263100[_0x9a97('0x72')]*_0x263100[_0x9a97('0x74')]*_0x263100[_0x9a97('0x6e')]*_0x263100[_0x9a97('0x1c5')]);if(_[_0x9a97('0x87')](_0x263100[_0x9a97('0x26')])){if(!_['isUndefined'](_0x263100[_0x9a97('0x25')])){_0x263100[_0x9a97('0x25')]=undefined;loggerPredictive['error'](_0x9a97('0x1c6'),_0x9a97('0x1c7'));}if(!_[_0x9a97('0x87')](_0x263100[_0x9a97('0x93')])){loggerPredictive[_0x9a97('0x98')](_0x9a97('0x1c6'),_0x9a97('0x1c8'));clearInterval(_0x263100[_0x9a97('0x93')]);_0x263100[_0x9a97('0x93')]=undefined;}_0x263100[_0x9a97('0x26')]=moment()[_0x9a97('0x78')](_0x9a97('0xfe'));loggerPredictive[_0x9a97('0x7e')](_0x263100[_0x9a97('0x42')],_0x9a97('0x1c9'),_0x263100['startProgressive']);this[_0x9a97('0x153')](_0x263100,0x1);}else if(ifInterval(_0x263100[_0x9a97('0x1ca')],_0x263100[_0x9a97('0x26')])){this[_0x9a97('0x153')](_0x263100,0x1);loggerPredictiveCalls[_0x9a97('0x7e')](_0x9a97('0x1cb'),_0x263100[_0x9a97('0x26')],_0x263100[_0x9a97('0x42')]);_0x263100['erlangCalls']=0x0;_0x263100[_0x9a97('0x6d')]=0x0;}else if(_0x280f7f<_0x1a2ccd&&_0x263100[_0x9a97('0x1cc')]===_0x9a97('0x1cd')){freeVariablesPredictive(_0x263100);loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x1ce'),_0x9a97('0x1cf'),_0x1a2ccd,'startProgressive',_0x263100['name']);}else if(_0x4a5e9e<_0x263100['predictiveIntervalErlangCallsDroppedCalls']&&_0x263100[_0x9a97('0x1cc')]===_0x9a97('0x1cd')){freeVariablesPredictive(_0x263100);loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x1d0'),'Max\x20Drop\x20',_0x4a5e9e,_0x9a97('0x1d1'),_0x263100[_0x9a97('0x6d')],_0x9a97('0x26'),_0x263100[_0x9a97('0x42')]);}else if(!ifInterval(_0x263100['dialPredictiveInterval'],_0x263100[_0x9a97('0x26')])&&_[_0x9a97('0x87')](_0x263100[_0x9a97('0x25')])&&!_[_0x9a97('0x87')](_0x263100[_0x9a97('0x26')])){_0x263100[_0x9a97('0x25')]=moment()[_0x9a97('0x78')](_0x9a97('0xfe'));loggerPredictive[_0x9a97('0x7e')](_0x263100[_0x9a97('0x42')],_0x9a97('0x1d2'),_0x263100['startPredictive']);this[_0x9a97('0xbc')](_0x263100[_0x9a97('0x1ca')])[_0x9a97('0xb8')](this['getDataPredictive'](_0x263100))[_0x9a97('0xb8')](mergeDataErlangB(_0x263100))[_0x9a97('0xb8')](this[_0x9a97('0x1d3')](_0x263100))[_0x9a97('0xb1')](loggerCatchPredictive(_0x9a97('0x1d4'),_0x263100));}else if(!ifInterval(_0x263100[_0x9a97('0x1ca')],_0x263100[_0x9a97('0x25')])){_0x263100[_0x9a97('0x6d')]=0x0;_0x263100[_0x9a97('0x25')]=moment()[_0x9a97('0x78')](_0x9a97('0xfe'));loggerPredictive[_0x9a97('0x7e')](_0x263100[_0x9a97('0x42')],_0x9a97('0x1d5'),_0x263100['startPredictive']);clearInterval(_0x263100[_0x9a97('0x93')]);_0x263100[_0x9a97('0x93')]=undefined;this[_0x9a97('0xbc')](_0x263100[_0x9a97('0x1ca')])[_0x9a97('0xb8')](this[_0x9a97('0x1d6')](_0x263100))[_0x9a97('0xb8')](mergeDataErlangB(_0x263100))[_0x9a97('0xb8')](this[_0x9a97('0x1d3')](_0x263100))[_0x9a97('0xb1')](loggerCatchPredictive(_0x9a97('0x1d7'),_0x263100));}else if(_0x263100[_0x9a97('0x70')]&&_0x15808f<_0x263100[_0x9a97('0x70')]-_0x25c80d){freeVariablesPredictive(_0x263100);loggerPredictive[_0x9a97('0x7e')](_0x263100['name'],_0x9a97('0x1d8'),_0x15808f,')\x20are\x20less\x20than\x20threshold\x20(',_0x263100[_0x9a97('0x70')],'-',_0x25c80d,'=',_0x263100[_0x9a97('0x70')]-_0x25c80d,')');}else if(_0x263100[_0x9a97('0x70')]&&_0x15808f>_0x263100[_0x9a97('0x70')]+_0x1b9b2e){freeVariablesPredictive(_0x263100);loggerPredictive[_0x9a97('0x7e')](_0x263100[_0x9a97('0x42')],_0x9a97('0x1d8'),_0x15808f,_0x9a97('0x1d9'),_0x263100['predictiveIntervalAvailable'],'+',_0x1b9b2e,'=',_0x263100[_0x9a97('0x70')]+_0x1b9b2e,')');}};Dialer[_0x9a97('0xab')][_0x9a97('0x1d6')]=function(_0x371e0a){var _0x2cd3a2=this;return function(_0x57267b){return new BPromise(function(_0x1b6065,_0x29c55c){_[_0x9a97('0xce')](_0x371e0a,_0x57267b[0x0]);if(checkGetDataPredictive(_0x57267b[0x0])){var _0x22d6ce=_0x371e0a[_0x9a97('0x70')]=_0x371e0a[_0x9a97('0x56')]+_0x371e0a[_0x9a97('0x52')];var _0xb93ac4=_0x371e0a['dialPredictiveInterval']*0x3c;var _0x25e293=_0x57267b[0x0][_0x9a97('0x6a')]+_0x57267b[0x0][_0x9a97('0x84')];var _0x457858=(_0x57267b[0x0][_0x9a97('0x1da')]+_0x57267b[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x57267b[0x0][_0x9a97('0x82')])/_0x57267b[0x0][_0x9a97('0x71')];_0x371e0a[_0x9a97('0x6e')]=_0x457858>0x0?_0x457858:0x1;switch(_0x371e0a[_0x9a97('0x1cc')]){case _0x9a97('0x1cd'):var _0x29410d=_0x371e0a[_0x9a97('0x1c0')]/0x64;return _0x2cd3a2['abandonmentRate'](_0x22d6ce,_0xb93ac4,_0x25e293,_0x457858,_0x29410d)[_0x9a97('0xb8')](function(_0x51f49e){return _0x1b6065(_0x51f49e);});case _0x9a97('0x1db'):var _0x3fd10f=_0x371e0a['dialPredictiveOptimizationPercentage']/0x64;return _0x2cd3a2['busyFactor'](_0x22d6ce,_0xb93ac4,_0x25e293,_0x457858,_0x3fd10f)['then'](function(_0x4b0351){return _0x1b6065(_0x4b0351);});default:return _0x29c55c(msgResponse(_0x9a97('0x1dc'),'Failure',_0x9a97('0x1dd')));}}else{return _0x29c55c(msgResponse(_0x9a97('0x1dc'),'Failure','check\x20failure'));}});};};Dialer[_0x9a97('0xab')][_0x9a97('0x1de')]=function(_0x4e5e88){var _0xcaf2bc=this;return function(_0x416106){return new BPromise(function(_0x59ae4e,_0x967798){_[_0x9a97('0xce')](_0x4e5e88,_0x416106[0x0]);if(checkGetDataPredictive(_0x416106[0x0])){loggerPredictive[_0x9a97('0x7e')](JSON[_0x9a97('0x4a')](_0x416106[0x0]));if(_0x4e5e88['dialPredictiveOptimization']===_0x9a97('0x1cd')){return _0xcaf2bc[_0x9a97('0xc6')](_0x4e5e88['id'])['then'](function(_0x2d22af){var _0x56f17c=_0x4e5e88[_0x9a97('0x15a')]-_0x2d22af[0x0]['outboundQueuePauses'];var _0x40652d=_0x4e5e88[_0x9a97('0x1ca')]*0x3c;var _0x2508a0=_0x416106[0x0][_0x9a97('0x6a')]+_0x416106[0x0][_0x9a97('0x84')];var _0x3917aa=(_0x416106[0x0][_0x9a97('0x1da')]+_0x416106[0x0][_0x9a97('0x6b')]+_0x416106[0x0][_0x9a97('0x82')])/_0x416106[0x0][_0x9a97('0x71')];var _0x5dc384=_0x4e5e88[_0x9a97('0x1c0')]/0x64;_0x4e5e88[_0x9a97('0x6f')]=_0x2d22af[0x0][_0x9a97('0x1df')]||0x0;_0x4e5e88['predictiveIntervalHitRate']=_0x3917aa>0x0?_0x3917aa:0x1;return _0xcaf2bc['abandonmentRate'](_0x56f17c,_0x40652d,_0x2508a0,_0x3917aa,_0x5dc384);})[_0x9a97('0xb8')](function(_0x552713){return _0x59ae4e(_0x552713);})['catch'](function(_0x5d13d4){return _0x967798(msgResponse('[CatchErlangB]',_0x9a97('0x13d'),JSON[_0x9a97('0x4a')](_0x5d13d4)));});}if(_0x4e5e88[_0x9a97('0x1cc')]===_0x9a97('0x1db')){return _0xcaf2bc[_0x9a97('0xc6')](_0x4e5e88['id'])[_0x9a97('0xb8')](function(_0x4f6ceb){var _0x2a16f2=_0x4e5e88['loggedIn']-_0x4f6ceb[0x0][_0x9a97('0x1df')];var _0x2bce48=_0x4e5e88[_0x9a97('0x1ca')]*0x3c;var _0x1bbee6=_0x416106[0x0]['predictiveIntervalAvgTalktime']+_0x416106[0x0][_0x9a97('0x84')];var _0x3035a4=(_0x416106[0x0][_0x9a97('0x1da')]+_0x416106[0x0][_0x9a97('0x6b')]+_0x416106[0x0][_0x9a97('0x82')])/_0x416106[0x0]['predictiveIntervalTotalCalls'];var _0x1c043b=_0x4e5e88[_0x9a97('0x1c0')]/0x64;_0x4e5e88[_0x9a97('0x6f')]=_0x4f6ceb[0x0][_0x9a97('0x1df')]||0x0;_0x4e5e88[_0x9a97('0x6e')]=_0x3035a4>0x0?_0x3035a4:0x1;return _0xcaf2bc[_0x9a97('0x1e0')](_0x2a16f2,_0x2bce48,_0x1bbee6,_0x3035a4,_0x1c043b);})[_0x9a97('0xb8')](function(_0x45cf72){return _0x59ae4e(_0x45cf72);})[_0x9a97('0xb1')](function(_0xebf3){return _0x967798(msgResponse(_0x9a97('0x1e1'),'Failure',JSON['stringify'](_0xebf3)));});}}else{return _0x967798(msgResponse(_0x9a97('0x1dc'),'Failure',_0x9a97('0x1e2')));}});};};Dialer[_0x9a97('0xab')][_0x9a97('0x1d3')]=function(_0x1b6381){var _0x32db93=this;return function(){var _0x1b845f=0x0;var _0xf2e0f=Math[_0x9a97('0x1e3')](_0x1b6381['erlangCallToSecond']*0x3e8);if(_0xf2e0f>0x0){_0xf2e0f=_0xf2e0f<0x64?0x64:_0xf2e0f;loggerPredictive[_0x9a97('0x7e')](_0x1b6381[_0x9a97('0x42')],_0x9a97('0x1e4'),_0xf2e0f,'milliseconds');_0x1b6381['handlePredictive']=setInterval(function(){_0x32db93[_0x9a97('0x93')](_0x1b6381);loggerPredictiveCalls[_0x9a97('0x7e')](_0x9a97('0x1e5'),_0x1b845f+=0x1);},_0xf2e0f);}else{loggerPredictive[_0x9a97('0x7e')](_0x1b6381[_0x9a97('0x42')],_0x9a97('0x1e6'));}};};Dialer['prototype'][_0x9a97('0x1e7')]=function(_0x5c79cc,_0x472e2d){var _0x49490b=this;return function(_0x5552b7){if(_[_0x9a97('0x47')](_0x5552b7)){if(_[_0x9a97('0xaf')](_0x472e2d['UserId'])||!_0x472e2d[_0x9a97('0x1e8')]){if(_0x5c79cc[_0x9a97('0x5b')]===_0x9a97('0x155')){_0x5c79cc[_0x9a97('0x129')]=_[_0x9a97('0x87')](_0x5c79cc[_0x9a97('0x129')])?!![]:_0x5c79cc['queueStatusComplete'];var _0x257b98=uuid['v4']();_0x49490b[_0x9a97('0x24')][_0x257b98]=new Action(_0x5c79cc,_0x472e2d,_0x257b98);loggerBooked[_0x9a97('0x7e')](_0x9a97('0x1e9'),_0x257b98,_0x9a97('0x1ea'),JSON[_0x9a97('0x4a')](_0x5c79cc[_0x9a97('0x129')]),'Queue:\x20',_0x5c79cc['name']);if(_0x5c79cc['queueStatusComplete']){_0x5c79cc[_0x9a97('0x129')]=![];_0x49490b[_0x9a97('0x28')][_0x49490b[_0x9a97('0x24')][_0x257b98][_0x9a97('0xb3')]]=[];ami[_0x9a97('0x143')]({'actionid':_0x257b98,'action':'queuestatus','queue':_0x5c79cc['name']})[_0x9a97('0xb1')](function(){_0x49490b[_0x9a97('0xcc')](_0x5c79cc);_0x49490b[_0x9a97('0xbe')]({'active':![],'ContactId':_0x49490b[_0x9a97('0x24')][_0x257b98]['ContactId'],'ListId':_0x49490b['actions'][_0x257b98][_0x9a97('0xd0')],'VoiceQueueId':_0x49490b[_0x9a97('0x24')][_0x257b98][_0x9a97('0xd1')]||undefined,'CampaignId':_0x49490b[_0x9a97('0x24')][_0x257b98][_0x9a97('0xd2')]||undefined})['catch'](loggerCatch(_0x9a97('0x1eb')));delete _0x49490b[_0x9a97('0x24')][_0x257b98];});}else{loggerBooked[_0x9a97('0x7e')](_0x9a97('0x1ec'),JSON[_0x9a97('0x4a')](_0x5c79cc[_0x9a97('0x129')]),_0x9a97('0x1ed'),_0x5c79cc['name']);_0x49490b[_0x9a97('0xcc')](_0x5c79cc);_0x49490b[_0x9a97('0xbe')]({'active':![],'ContactId':_0x49490b['actions'][_0x257b98][_0x9a97('0xcf')],'ListId':_0x49490b[_0x9a97('0x24')][_0x257b98]['ListId'],'VoiceQueueId':_0x49490b[_0x9a97('0x24')][_0x257b98][_0x9a97('0xd1')]||undefined,'CampaignId':_0x49490b[_0x9a97('0x24')][_0x257b98][_0x9a97('0xd2')]||undefined})[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x1eb')));delete _0x49490b['actions'][_0x257b98];}}else{return _0x49490b[_0x9a97('0x164')](_0x5c79cc,_0x472e2d);}}else{if(getDiff(_0x472e2d[_0x9a97('0x1ee')])<_0x5c79cc[_0x9a97('0x1ef')]*0x3c){if(_0x472e2d['Agent']&&!_0x472e2d[_0x9a97('0x1f0')]['voicePause']){_0x49490b[_0x9a97('0x1d')][_0x9a97('0x1f1')](_0x472e2d['id'])[_0x9a97('0x1c')](function(){_0x49490b[_0x9a97('0xcc')](_0x5c79cc);});}else{_0x49490b[_0x9a97('0xbf')]({'active':![]},_0x472e2d['id'],0x1)[_0x9a97('0x1c')](function(){_0x49490b[_0x9a97('0xcc')](_0x5c79cc);});}}else{_0x5c79cc[_0x9a97('0x68')]+=0x1;_0x49490b[_0x9a97('0xcc')](_0x5c79cc);if(_0x5c79cc[_0x9a97('0x1f2')]){_0x49490b['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0x472e2d['ContactId'],'ListId':_0x472e2d[_0x9a97('0xd0')],'VoiceQueueId':_0x472e2d[_0x9a97('0xd1')]||undefined,'CampaignId':_0x472e2d[_0x9a97('0xd2')]||undefined})[_0x9a97('0xb1')](loggerCatch(_0x9a97('0x1f3')));_0x49490b[_0x9a97('0xc8')](createObjHistory(_0x5c79cc,_0x472e2d,_0x9a97('0x1f4'),0x17,'RecallInQueue'))['catch'](loggerCatch('[Originate][HistoryDialRecallInQueue][historyCatch]'));}else{_0x49490b['saveInDb'](createObjHistory(_0x5c79cc,_0x472e2d,_0x9a97('0x1f5'),0x16,_0x9a97('0x1f6')),'[Originate][HistoryRecallClose][historyCatch]',_0x9a97('0x1f7'));}}}}else{_0x5c79cc[_0x9a97('0x1f8')]+=0x1;_0x49490b[_0x9a97('0xe7')](createObjHistory(_0x5c79cc,_0x472e2d,_0x9a97('0x1f9'),0xd,_0x9a97('0x1fa')),_0x9a97('0x1fb'),_0x9a97('0x1fc'));throw _0x9a97('0x1fd');}};};Dialer['prototype'][_0x9a97('0x159')]=function(_0x4b6832){var _0x3e8df8=this;var _0x1af97d=_0x4b6832[_0x9a97('0x1fe')]-_0x4b6832['originated']-_0x4b6832[_0x9a97('0xc2')];emitCampaignSummary(_0x4b6832);if(_0x1af97d>0x0){if(_0x1af97d>this[_0x9a97('0x22')]){_0x1af97d=this[_0x9a97('0x22')];}_0x4b6832['temp']+=_0x1af97d;this[_0x9a97('0xc4')](_0x4b6832['id'],_0x1af97d,_0x4b6832[_0x9a97('0x1ff')],_0x4b6832)['then'](function(_0x114d98){_0x4b6832['temp']-=_0x1af97d;_0x4b6832[_0x9a97('0xc2')]=_0x4b6832[_0x9a97('0xc2')]>0x0?_0x4b6832[_0x9a97('0xc2')]:0x0;if(!checkContactEmpty(_0x114d98)){_0x4b6832[_0x9a97('0x3e')]=_0x9a97('0x200');logger[_0x9a97('0x7e')](_0x9a97('0x201')+_0x4b6832[_0x9a97('0x42')]);}else{_0x4b6832[_0x9a97('0x9c')]+=_0x114d98[_0x9a97('0x9b')];_0x4b6832[_0x9a97('0x3e')]=_0x9a97('0x202');for(var _0x474d80=0x0;_0x474d80<_0x114d98[_0x9a97('0x9b')];_0x474d80+=0x1){_0x4b6832[_0x9a97('0x203')]+=0x1;if(_[_0x9a97('0xaf')](_0x114d98[_0x474d80])||_['isNil'](_0x114d98[_0x474d80][_0x9a97('0x168')])||_[_0x9a97('0xaf')](_0x114d98[_0x474d80][_0x9a97('0x168')][_0x9a97('0x169')])){_0x3e8df8[_0x9a97('0x204')]('[actionOriginate]\x20',_0x4b6832,_0x114d98[_0x474d80]);}else{_0x3e8df8[_0x9a97('0xba')](_[_0x9a97('0x12a')](_0x114d98[_0x474d80],[_0x9a97('0xd2'),'Contact.phone']))[_0x9a97('0xb8')](_0x3e8df8[_0x9a97('0x1e7')](_0x4b6832,_0x114d98[_0x474d80]))[_0x9a97('0xb1')](_0x3e8df8[_0x9a97('0xcb')](_0x9a97('0x205'),_0x4b6832));}}}})[_0x9a97('0xb1')](loggerGetContactDialer(_0x9a97('0x206'),_0x4b6832,_0x1af97d));}};Dialer[_0x9a97('0xab')][_0x9a97('0x153')]=function(_0x234fc1,_0x532079){var _0x29a1fa=this;var _0x42d066=[];var _0x278daa=_0x532079>=0x1?_0x532079:0x1;if(_0x234fc1[_0x9a97('0x5b')]===_0x9a97('0x155')){_0x278daa=0x1;}var _0x4148c6=Math['floor'](_0x234fc1[_0x9a97('0x52')]*_0x278daa)-_0x234fc1[_0x9a97('0x9c')]-_0x234fc1['temp'];emitVoiceQueueSummary(_0x234fc1);if(_0x234fc1[_0x9a97('0x207')]>0x0){var _0x7ab2ef=_0x234fc1['dialLimitQueue']-_0x234fc1[_0x9a97('0x9c')]-_0x234fc1['talking']-_0x234fc1[_0x9a97('0xc2')]-_0x234fc1['pTalking'];if(_0x4148c6>_0x7ab2ef){_0x4148c6=_0x7ab2ef;}}if(_0x4148c6>0x0){if(_0x234fc1[_0x9a97('0x5b')]===_0x9a97('0x155')){_0x4148c6=0x1;}if(_0x4148c6>this[_0x9a97('0x22')]){_0x4148c6=this['maxNumberOriginate'];}_0x234fc1[_0x9a97('0xc2')]+=_0x4148c6;for(var _0x1688f2 in this['agents']){if(typeof this[_0x9a97('0x20')][_0x1688f2]!=='undefined'){if(this[_0x9a97('0x20')][_0x1688f2][_0x9a97('0xe0')]===_0x9a97('0x208')&&this[_0x9a97('0x20')][_0x1688f2][_0x9a97('0xb0')]==='reachable'){_0x42d066[_0x9a97('0x127')](this[_0x9a97('0x20')][_0x1688f2]['id']);}}}this[_0x9a97('0xc1')](_0x234fc1['id'],_0x42d066,_0x4148c6,_0x234fc1['dialOrderByScheduledAt'],_0x234fc1)[_0x9a97('0xb8')](function(_0x536443){_0x234fc1[_0x9a97('0xc2')]-=_0x4148c6;_0x234fc1[_0x9a97('0xc2')]=_0x234fc1[_0x9a97('0xc2')]>0x0?_0x234fc1[_0x9a97('0xc2')]:0x0;if(!checkContactEmpty(_0x536443)){_0x29a1fa[_0x9a97('0xb4')](_0x234fc1)[_0x9a97('0xb8')](sendMessageReschedule(_0x234fc1))[_0x9a97('0xb1')](loggerCatch(_0x9a97('0xb6')));}else{_0x234fc1[_0x9a97('0x9c')]+=_0x536443['length'];_0x234fc1[_0x9a97('0x3e')]=_0x234fc1[_0x9a97('0x5b')]===_0x9a97('0x155')?_0x9a97('0x16f'):'RUNNING';for(var _0x1f3b8f=0x0;_0x1f3b8f<_0x536443['length'];_0x1f3b8f+=0x1){if(_[_0x9a97('0xaf')](_0x536443[_0x1f3b8f])||_[_0x9a97('0xaf')](_0x536443[_0x1f3b8f][_0x9a97('0x168')])||_['isNil'](_0x536443[_0x1f3b8f][_0x9a97('0x168')][_0x9a97('0x169')])){_0x29a1fa[_0x9a97('0x204')](_0x9a97('0x209'),_0x234fc1,_0x536443[_0x1f3b8f]);}else{_0x29a1fa[_0x9a97('0xb7')](_[_0x9a97('0x12a')](_0x536443[_0x1f3b8f],[_0x9a97('0xd1'),_0x9a97('0x20a')]))['then'](_0x29a1fa[_0x9a97('0x1e7')](_0x234fc1,_0x536443[_0x1f3b8f]))[_0x9a97('0xb1')](_0x29a1fa[_0x9a97('0xcb')]('[actionOriginate]\x20',_0x234fc1));}}}})[_0x9a97('0xb1')](loggerGetContactDialer('[getContactDialer2]',_0x234fc1,_0x4148c6));}};Dialer[_0x9a97('0xab')][_0x9a97('0x93')]=function(_0x3184a2){if(_0x3184a2[_0x9a97('0x207')]>0x0){var _0x3d21f0=_0x3184a2[_0x9a97('0x207')]-_0x3184a2['originated']-_0x3184a2[_0x9a97('0x56')];if(_0x3d21f0>0x0){this[_0x9a97('0x20b')](_0x3184a2);}else{loggerPredictiveCalls[_0x9a97('0x7e')](_0x9a97('0x20c'));}}else{this[_0x9a97('0x20b')](_0x3184a2);}};Dialer[_0x9a97('0xab')]['tryOriginatePredictive']=function(_0x2a7900){var _0x56ba67=this;var _0x504891=[];_0x2a7900[_0x9a97('0x9c')]+=0x1;for(var _0x6b8c11 in this[_0x9a97('0x20')]){if(typeof this[_0x9a97('0x20')][_0x6b8c11]!=='undefined'){if(this[_0x9a97('0x20')][_0x6b8c11][_0x9a97('0xe0')]===_0x9a97('0x208')&&this[_0x9a97('0x20')][_0x6b8c11][_0x9a97('0xb0')]===_0x9a97('0xd7')){_0x504891[_0x9a97('0x127')](this[_0x9a97('0x20')][_0x6b8c11]['id']);}}}this[_0x9a97('0xc1')](_0x2a7900['id'],_0x504891,0x1,_0x2a7900[_0x9a97('0x1ff')],_0x2a7900)[_0x9a97('0xb8')](function(_0x93bc44){if(!checkContactEmpty(_0x93bc44)){checkContactLowerLimitOriginate(_0x2a7900,0x1,0x0);_0x56ba67[_0x9a97('0xb4')](_0x2a7900)['then'](sendMessageReschedule(_0x2a7900))[_0x9a97('0xb1')](loggerCatch('[countReScheduled]\x20'));}else{_0x2a7900[_0x9a97('0x3e')]=_0x9a97('0x202');if(_['isNil'](_0x93bc44[0x0])||_[_0x9a97('0xaf')](_0x93bc44[0x0]['Contact'])||_['isNil'](_0x93bc44[0x0]['Contact'][_0x9a97('0x169')])){_0x56ba67[_0x9a97('0x204')]('[actionOriginate]\x20',_0x2a7900,_0x93bc44[0x0]);}else{_0x56ba67[_0x9a97('0xb7')](_['pick'](_0x93bc44[0x0],[_0x9a97('0xd1'),'Contact.phone']))['then'](_0x56ba67['checkContactBlack'](_0x2a7900,_0x93bc44[0x0]))[_0x9a97('0xb1')](_0x56ba67[_0x9a97('0xcb')](_0x9a97('0x20d'),_0x2a7900));}}})['catch'](loggerGetContactDialer(_0x9a97('0x20e'),_0x2a7900,0x1));emitVoiceQueueSummary(_0x2a7900);};Dialer[_0x9a97('0xab')][_0x9a97('0x20f')]=function(_0x16639f,_0xde1e0,_0x413947,_0x3d3502,_0x402d26,_0x75f830){loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x210'));loggerPredictive[_0x9a97('0x7e')]('M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x16639f);loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x211'),_0xde1e0);loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x212'),_0x413947);loggerPredictive['info'](_0x9a97('0x213'),_0x3d3502);loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x214'),_0x402d26);loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x86'));return new BPromise(function(_0x416a7e,_0x4db386){if(_0x16639f<=0x0||isNaN(_0x16639f)){return _0x4db386(msgResponse(_0x9a97('0x215'),_0x9a97('0x49'),_0x9a97('0x216')+_0x16639f));}if(_0x413947<=0x0||isNaN(_0x413947)){return _0x4db386(msgResponse('[abandonmentRate]',_0x9a97('0x49'),_0x9a97('0x217')+_0x413947));}if(_0x3d3502<=0x0||isNaN(_0x3d3502)){return _0x4db386(msgResponse(_0x9a97('0x215'),_0x9a97('0x49'),_0x9a97('0x218')+_0x3d3502));}if(_0xde1e0<=0x0||isNaN(_0xde1e0)){return _0x4db386(msgResponse(_0x9a97('0x215'),_0x9a97('0x49'),_0x9a97('0x219')+_0xde1e0));}if(_0x402d26<=0x0||isNaN(_0x402d26)){return _0x4db386(msgResponse(_0x9a97('0x215'),_0x9a97('0x49'),_0x9a97('0x21a')+_0x402d26));}_0x75f830=_0x75f830||0x0;var _0x5ed159=0x1/_0x413947;var _0x432836=0x0;var _0x32dcfe=0x0;var _0x1ca484=0x0;var _0x48554a=0x0;for(var _0x27f531=0x0;_0x1ca484<_0x402d26;_0x27f531+=0x1){_0x32dcfe=_0x27f531/_0xde1e0;_0x432836=(_0x3d3502*_0x32dcfe+_0x75f830)/_0x5ed159;_0x1ca484=erlangb(_0x432836,_0x16639f);_0x48554a=_0x432836/_0x16639f*(0x1-erlangb(_0x432836,_0x16639f));}return _0x416a7e({'erlangCalls':_0x27f531,'erlangCallToSecond':_0xde1e0/_0x27f531,'erlangAbandonmentRate':_0x1ca484,'erlangBusyFactor':_0x48554a});});};Dialer[_0x9a97('0xab')][_0x9a97('0x1e0')]=function(_0x1383ee,_0x15205f,_0x46d8ab,_0x34f4a6,_0x364f0a,_0x2bfaa3){loggerPredictive['info'](_0x9a97('0x21b'));loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x21c'),_0x1383ee);loggerPredictive[_0x9a97('0x7e')](_0x9a97('0x211'),_0x15205f);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',_0x46d8ab);loggerPredictive[_0x9a97('0x7e')]('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',_0x34f4a6);loggerPredictive[_0x9a97('0x7e')]('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x364f0a);loggerPredictive['info'](_0x9a97('0x86'));return new BPromise(function(_0x2b569b,_0x230596){if(_0x1383ee<=0x0||isNaN(_0x1383ee)){return _0x230596(msgResponse(_0x9a97('0x21d'),_0x9a97('0x49'),_0x9a97('0x216')+_0x1383ee));}if(_0x46d8ab<=0x0||isNaN(_0x46d8ab)){return _0x230596(msgResponse('[busyFactor]',_0x9a97('0x49'),_0x9a97('0x217')+_0x46d8ab));}if(_0x34f4a6<=0x0||isNaN(_0x34f4a6)){return _0x230596(msgResponse(_0x9a97('0x21d'),_0x9a97('0x49'),'p\x20=\x20'+_0x34f4a6));}if(_0x15205f<=0x0||isNaN(_0x15205f)){return _0x230596(msgResponse('[busyFactor]',_0x9a97('0x49'),'interval\x20=\x20'+_0x15205f));}if(_0x364f0a<=0x0||isNaN(_0x364f0a)){return _0x230596(msgResponse(_0x9a97('0x21d'),'Error',_0x9a97('0x21e')+_0x364f0a));}_0x2bfaa3=_0x2bfaa3||0x0;var _0x31be7e=0x1/_0x46d8ab;var _0x444e88=0x0;var _0x162340=0x0;var _0x37cc52=0x0;var _0x2e34ee=0x0;for(var _0x84fc0d=0x0;_0x2e34ee<_0x364f0a;_0x84fc0d+=0x1){_0x162340=_0x84fc0d/_0x15205f;_0x444e88=(_0x34f4a6*_0x162340+_0x2bfaa3)/_0x31be7e;_0x37cc52=erlangb(_0x444e88,_0x1383ee);_0x2e34ee=_0x444e88/_0x1383ee*(0x1-erlangb(_0x444e88,_0x1383ee));}return _0x2b569b({'erlangCalls':_0x84fc0d,'erlangCallToSecond':_0x15205f/_0x84fc0d,'erlangAbandonmentRate':_0x37cc52,'erlangBusyFactor':_0x2e34ee});});};module[_0x9a97('0x21f')]=Dialer;
\ No newline at end of file
+var _0x3dd5=['custom:agentnosuchnumber','nosuchnumber','[syncAgentComplete][createHistory][0]','dialNoSuchNumberMaxRetry','reason\x200\x20no\x20such\x20number....','custom:agentnoanswer','noanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','Busy','dialBusyMaxRetry','reason\x205\x20busy','Congestion','congestion','[syncAgentComplete][createHistory][8]','outboundAbandonedCallsDay','reason\x2011\x20abandoned','AgentReject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','reason','Success','[moveContactManagedDialer][0]','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','Dropped\x20calls\x20day','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','floor','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','actionOriginate','scheduledat','Agent','voicePause','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','limitCalls','maxNumberOriginate','[getContactCampaign2][Empty]','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','dialOrderByScheduledAt','ACTIVE','RUNNING','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','not_inuse','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','p\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','Ts\x20=\x20','Umin\x20=\x20','util','bluebird','uuid','moment','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictive','syncQueueSummary','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./final','./agentComplete','./queueCallerAbandon','env','XCALLY_IP_AGI','127.0.0.1','roundrobin','prototype','enqueue','finally','sequence','preview','campaigns','agents','trunks','contactsId','startPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','syncAgentConnect','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','bind','custom:queuesummary','hangup','syncHangup','newexten','syncNewExten','varset','queuestatuscomplete','loopClearZombieChannels','AGENTS_NOT_LOGGED','\x20AGENTS\x20NOT\x20LOGGED','message','NOT_ACTIVE','name','\x20NOT\x20Active','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Interval','isEmpty','Intervals','[ifTime][Action]','Error','stringify','milliseconds','diff','emit','type','strategy','answered','available','loggedIn','pTalking','sumBillable','sumDuration','talking','unmanaged','abandoned','waiting','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','originated','erlangCallToSecond','erlangAbandonmentRate','Trunk','callerid','format','voice_queue:save','ivr','info','-----\x20Stats\x20Predictive\x20---','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalTotalCalls','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsCallersExit','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','isUndefined','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCalls','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','merge','seconds','clearing\x20variable\x20start\x20progressive','handlePredictive','outbound','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','RESCHEDULED_CONTACTS','contactsRescheduled','contacts','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Queue:\x20','IS_DISACTIVED','is\x20disactive','is\x20not\x20active','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','endtime','starttime','clearZombieChannels','uniqueId','[uniqueid]','isNil','Action','status','channel','catch','No\x20such\x20channel','queue','[Dialer][checkChannel]','updateOriginated','[Dialer][checkChannel][ivr]','countReScheduled','resolve','then','[countReScheduled]\x20','checkIsBlackList','[checkIsBlackList]\x20','checkIsBlackListIvr','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','pick','ContactId','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','isTrunkReachable','active','reachable','SIP/%s','unmonitored','saveInDb','syncVarSet','uniqueid','variable','amdstatus','exten','dialAMDActive','HANGUP','voiceQueues','statedesc','HangupInAMD','membername','AMD','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','value','MACHINE','Machine','countmachineretry','countglobal','countbusyretry','countcongestionretry','countabandonedretry','countagentrejectretry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','YYYY-MM-DD\x20HH:mm:ss','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','countnoanswerretry','countnosuchnumberretry','countdropretry','dialGlobalMaxRetry','[rescheduleContact][Machine]','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','AnswerAGI','cause-txt','syncAgentComplete','agent','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','Drop','dropreason','TIMEOUT','agiafterat','dialDropMaxRetry','add','dialDropRetryFrequency','calleridname','calleridnum','Abandoned','CALLEREXIT','dialAbandonedRetryFrequency','minutes','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','actions','syncQueueMember','actionid','locked','paused','stateinterface','rrmemory','push','idHopper','[unlockQueueStatus][undefined]','queueStatusComplete','[booked][unlockQueueStatus]','syncQueueStatusComplete','run','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','length','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','unlockRR','[booked][RR][finaly]','[booked][unlock]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','loopCampaigns','syncCampaigns','checkIsTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','command','iftime\x20%s,%s','interval','content','indexOf','true','all','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','dialPowerLevel','Queue','method\x20not\x20recognized','launchHandleIvr','handleIvr','dialActive','dialTimezone','[syncQueueSummary]','dialGlobalInterval','[syncCampaigns]','\x5cw{0,','pow','random','match','originate','voiceQueue\x20is\x20undefine','phone','Contact','contact\x20is\x20undefine','\x22agi://%s/square,%s\x22','NONE','dialQueueOptions','getCaller','xcally-motion-dialer','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','tags','createdAt','updatedAt','%s%s','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','dialCutDigit','substring','trim','from-sip','OriginateError','[originate][error]','originate\x20action\x20Error','getQueue','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','[rescheduleContact][Drop]','dialAbandonedMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','object','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','NoSuchNumber'];(function(_0x54640d,_0x396efd){var _0x573d4c=function(_0x4828be){while(--_0x4828be){_0x54640d['push'](_0x54640d['shift']());}};_0x573d4c(++_0x396efd);}(_0x3dd5,0x73));var _0x53dd=function(_0x2253bb,_0x55cb14){_0x2253bb=_0x2253bb-0x0;var _0x5e07b6=_0x3dd5[_0x2253bb];return _0x5e07b6;};'use strict';var util=require(_0x53dd('0x0'));var _=require('lodash');var BPromise=require(_0x53dd('0x1'));var uuid=require(_0x53dd('0x2'));var moment=require(_0x53dd('0x3'));var rr=require('rr');var md5=require(_0x53dd('0x4'));var Redis=require(_0x53dd('0x5'));var ut=require(_0x53dd('0x6'));var config=require(_0x53dd('0x7'));var logger=require(_0x53dd('0x8'))(_0x53dd('0x9'));var loggerBooked=require('../../../config/logger')(_0x53dd('0xa'));var loggerPredictive=require(_0x53dd('0x8'))(_0x53dd('0xb'));var loggerPredictiveCalls=require(_0x53dd('0x8'))('predictiveCalls');var loggerSyncQueueSummary=require('../../../config/logger')(_0x53dd('0xc'));var ami=require('../ami');config[_0x53dd('0xd')]=_[_0x53dd('0xe')](config[_0x53dd('0xd')],{'host':_0x53dd('0xf'),'port':0x18eb});var io=require(_0x53dd('0x10'))(new Redis(config['redis']));var cmHopper=require(_0x53dd('0x11'));var cmHopperHistory=require(_0x53dd('0x12'));var cmHopperBlack=require(_0x53dd('0x13'));var voiceQueueRt=require(_0x53dd('0x14'));var Action=require('./action');var History=require('./history');var Final=require(_0x53dd('0x15'));var AgentComplete=require(_0x53dd('0x16'));var QueueCallerAbandon=require(_0x53dd('0x17'));var Hangup=require('./hangup');var ipAgi=process[_0x53dd('0x18')][_0x53dd('0x19')]||_0x53dd('0x1a');var strategy={'rrmemory':'rrmemory','roundrobin':_0x53dd('0x1b')};var Sequence=function(){};Sequence[_0x53dd('0x1c')][_0x53dd('0x1d')]=function(_0x5c0dda){this['tail']=this['tail']?this['tail'][_0x53dd('0x1e')](_0x5c0dda):_0x5c0dda();};function Dialer(_0x4449e1,_0xef43a7){this[_0x53dd('0x1f')]=new Sequence();this[_0x53dd('0x20')]=_0xef43a7;this['voiceQueues']=_0x4449e1['voiceQueues'];this[_0x53dd('0x21')]=_0x4449e1[_0x53dd('0x21')];this[_0x53dd('0x22')]=_0x4449e1[_0x53dd('0x22')];this[_0x53dd('0x23')]=_0x4449e1['trunks'];this['maxNumberOriginate']=config['maxNumberOriginate']||0x2;this['channels']={};this['actions']={};this[_0x53dd('0x24')]={};this['uniqueId']={};this['optionPredictive']={};this[_0x53dd('0x25')]={};this[_0x53dd('0x26')]={};this[_0x53dd('0x27')]={};this[_0x53dd('0x28')]={};this[_0x53dd('0x29')]={};ami['on']('agentconnect',this[_0x53dd('0x2a')]['bind'](this));ami['on'](_0x53dd('0x2b'),this[_0x53dd('0x2c')]['bind'](this));ami['on'](_0x53dd('0x2d'),this[_0x53dd('0x2e')]['bind'](this));ami['on'](_0x53dd('0x2f'),this['syncAgentComplete'][_0x53dd('0x30')](this));ami['on'](_0x53dd('0x31'),this[_0x53dd('0xc')][_0x53dd('0x30')](this));ami['on'](_0x53dd('0x32'),this[_0x53dd('0x33')][_0x53dd('0x30')](this));ami['on'](_0x53dd('0x34'),this[_0x53dd('0x35')][_0x53dd('0x30')](this));ami['on'](_0x53dd('0x36'),this['syncVarSet'][_0x53dd('0x30')](this));ami['on']('queuemember',this['syncQueueMember'][_0x53dd('0x30')](this));ami['on'](_0x53dd('0x37'),this['syncQueueStatusComplete'][_0x53dd('0x30')](this));this['loopCampaigns']();this[_0x53dd('0x38')]();}function isNotNull(_0x21e92d){return _0x21e92d!==null&&!_['isUndefined'](_0x21e92d);}function checkIsLoggedIn(_0x293957,_0x3d037b){return function(){if(_0x3d037b<=0x0){_0x293957['message']=_0x53dd('0x39');throw _0x293957['name']+_0x53dd('0x3a');}};}function isActive(_0x267e34){return _0x267e34;}function checkIsActive(_0x49f2c3,_0x325216){return function(){if(!isActive(_0x325216)){_0x49f2c3[_0x53dd('0x3b')]=_0x53dd('0x3c');throw _0x49f2c3[_0x53dd('0x3d')]+_0x53dd('0x3e');}};}function checkInterval(_0x2517f1){return function(){if(!isNotNull(_0x2517f1['Interval'])){_0x2517f1['message']=_0x53dd('0x3f');throw _0x2517f1[_0x53dd('0x3d')]+_0x53dd('0x40');}if(!isNotNull(_0x2517f1[_0x53dd('0x41')]['Intervals'])){_0x2517f1[_0x53dd('0x3b')]=_0x53dd('0x3f');throw _0x2517f1[_0x53dd('0x3d')]+_0x53dd('0x40');}if(!isNotNull(_[_0x53dd('0x42')](_0x2517f1[_0x53dd('0x41')][_0x53dd('0x43')]))){_0x2517f1['message']=_0x53dd('0x3f');throw _0x2517f1['name']+_0x53dd('0x40');}};}function msgResponse(_0xdb31d8,_0x433e83,_0x52a446){return{'action':_0xdb31d8,'response':_0x433e83,'message':_0x52a446,'stack':_0x52a446};}function myreject(_0x2d2c54){return function(_0x536256){return _0x2d2c54(msgResponse(_0x53dd('0x44'),_0x53dd('0x45'),JSON[_0x53dd('0x46')](_0x536256)));};}function getSeconds(_0x1af799,_0x470773){var _0x1fda01=moment(_0x1af799)[_0x53dd('0x47')](0x0);var _0x5f0708=moment(_0x470773)[_0x53dd('0x47')](0x0);return _0x1fda01[_0x53dd('0x48')](_0x5f0708,'seconds');}function emit(_0x2af0a3,_0x4a9659,_0x201580){io['to'](_0x2af0a3)[_0x53dd('0x49')](_0x4a9659,_0x201580);}function emitVoiceQueueSummary(_0xa687fb){if(_0xa687fb[_0x53dd('0x4a')]==='outbound'){var _0x13f789={'id':_0xa687fb['id'],'name':_0xa687fb[_0x53dd('0x3d')],'strategy':_0xa687fb[_0x53dd('0x4b')],'answered':_0xa687fb[_0x53dd('0x4c')],'available':_0xa687fb[_0x53dd('0x4d')],'loggedIn':_0xa687fb[_0x53dd('0x4e')],'pTalking':_0xa687fb[_0x53dd('0x4f')],'sumBillable':_0xa687fb[_0x53dd('0x50')],'sumDuration':_0xa687fb[_0x53dd('0x51')],'sumHoldTime':_0xa687fb['sumHoldTime']||0x0,'talking':_0xa687fb[_0x53dd('0x52')],'total':_0xa687fb['total'],'type':_0xa687fb[_0x53dd('0x4a')],'unmanaged':_0xa687fb[_0x53dd('0x53')],'abandoned':_0xa687fb[_0x53dd('0x54')],'waiting':_0xa687fb[_0x53dd('0x55')],'loggedInDb':_0xa687fb['loggedInDb'],'dialActive':_0xa687fb['dialActive'],'dialMethod':_0xa687fb[_0x53dd('0x56')],'dialOriginateCallerIdName':_0xa687fb[_0x53dd('0x57')],'dialOriginateCallerIdNumber':_0xa687fb[_0x53dd('0x58')],'dialOriginateTimeout':_0xa687fb[_0x53dd('0x59')],'dialPrefix':_0xa687fb[_0x53dd('0x5a')],'outboundAnswerAgiCallsDay':_0xa687fb[_0x53dd('0x5b')],'outboundAnswerCallsDay':_0xa687fb[_0x53dd('0x5c')],'outboundBlacklistCallsDay':_0xa687fb[_0x53dd('0x5d')],'outboundBusyCallsDay':_0xa687fb[_0x53dd('0x5e')],'outboundCongestionCallsDay':_0xa687fb[_0x53dd('0x5f')],'outboundDropCallsDayACS':_0xa687fb[_0x53dd('0x60')],'outboundDropCallsDayCallersExit':_0xa687fb[_0x53dd('0x61')],'outboundDropCallsDayTimeout':_0xa687fb[_0x53dd('0x62')],'outboundNoAnswerCallsDay':_0xa687fb[_0x53dd('0x63')],'outboundNoSuchCallsDay':_0xa687fb[_0x53dd('0x64')],'outboundOriginateFailureCallsDay':_0xa687fb[_0x53dd('0x65')],'outboundReCallsDay':_0xa687fb[_0x53dd('0x66')],'outboundRejectCallsDay':_0xa687fb[_0x53dd('0x67')],'outboundUnknownCallsDay':_0xa687fb[_0x53dd('0x68')],'predictiveIntervalAnsweredCalls':_0xa687fb[_0x53dd('0x69')],'predictiveIntervalAvgHoldtime':_0xa687fb[_0x53dd('0x6a')],'predictiveIntervalAvgTalktime':_0xa687fb[_0x53dd('0x6b')],'predictiveIntervalDroppedCallsCallersExit':_0xa687fb['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0xa687fb[_0x53dd('0x6c')],'predictiveIntervalErlangCalls':_0xa687fb[_0x53dd('0x6d')],'predictiveIntervalErlangCallsDroppedCalls':_0xa687fb[_0x53dd('0x6e')],'predictiveIntervalHitRate':_0xa687fb[_0x53dd('0x6f')],'predictiveIntervalMultiplicativeFactor':_0xa687fb[_0x53dd('0x70')],'predictiveIntervalPauses':_0xa687fb[_0x53dd('0x71')],'predictiveIntervalAvailable':_0xa687fb[_0x53dd('0x72')],'predictiveIntervalTotalCalls':_0xa687fb['predictiveIntervalTotalCalls'],'message':_0xa687fb[_0x53dd('0x3b')],'originated':_0xa687fb[_0x53dd('0x73')],'erlangCalls':_0xa687fb['erlangCalls'],'erlangCallToSecond':_0xa687fb[_0x53dd('0x74')],'erlangAbandonmentRate':_0xa687fb[_0x53dd('0x75')],'erlangBusyFactor':_0xa687fb['erlangBusyFactor'],'startPredictive':_0xa687fb['startPredictive'],'startProgressive':_0xa687fb[_0x53dd('0x26')]};if(_0xa687fb[_0x53dd('0x76')]){_0x13f789[_0x53dd('0x76')]={'id':_0xa687fb[_0x53dd('0x76')]['id'],'name':_0xa687fb[_0x53dd('0x76')][_0x53dd('0x3d')],'active':_0xa687fb[_0x53dd('0x76')]['active'],'callerid':_0xa687fb[_0x53dd('0x76')][_0x53dd('0x77')]};}if(_0xa687fb[_0x53dd('0x41')]){_0x13f789['Interval']={'id':_0xa687fb[_0x53dd('0x41')]['id'],'name':_0xa687fb[_0x53dd('0x41')][_0x53dd('0x3d')]};}var _0x5c0775=md5(JSON[_0x53dd('0x46')](_0x13f789));if(_0xa687fb['md5']!==_0x5c0775){_0xa687fb[_0x53dd('0x4')]=_0x5c0775;emit(util[_0x53dd('0x78')]('voice:queue:%s',_0x13f789[_0x53dd('0x3d')]),_0x53dd('0x79'),_0x13f789);}}}function emitCampaignSummary(_0x4f8ec6){if(_0x4f8ec6[_0x53dd('0x4a')]===_0x53dd('0x7a')){emit(util['format']('campaign:ivr:%s',_0x4f8ec6[_0x53dd('0x3d')]),'campaign:save',_0x4f8ec6);}}function checkGetDataPredictive(_0x386858){if(isNotNull(_0x386858)&&!_['isEmpty'](_0x386858)){loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x7c'));loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x7d'),_0x386858[_0x53dd('0x7e')]);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x7f'),_0x386858[_0x53dd('0x69')]);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x80'),_0x386858[_0x53dd('0x6c')]);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x81'),_0x386858[_0x53dd('0x82')]);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x83'),_0x386858[_0x53dd('0x6a')]);loggerPredictive[_0x53dd('0x7b')]('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x386858[_0x53dd('0x6b')]);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x84'));if(_0x386858[_0x53dd('0x7e')]>0x0){if(!_['isUndefined'](_0x386858[_0x53dd('0x6b')])&&_0x386858[_0x53dd('0x6b')]>0x0){return!![];}loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x85'));if(!_[_0x53dd('0x86')](_0x386858[_0x53dd('0x6a')])&&_0x386858[_0x53dd('0x6a')]>0x0){return!![];}loggerPredictive[_0x53dd('0x7b')]('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive['info'](_0x53dd('0x87'));}}else{loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x88'));}return![];}function mergeDataErlangB(_0x2859f8){return function(_0x1c9705){loggerPredictive['info'](_0x53dd('0x89'));loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x8a'),_0x1c9705[_0x53dd('0x8b')]);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x8c'),_0x1c9705[_0x53dd('0x74')]);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x8d'),_0x1c9705['erlangAbandonmentRate']);loggerPredictive[_0x53dd('0x7b')]('Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1c9705['erlangBusyFactor']);loggerPredictive['info']('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1c9705[_0x53dd('0x75')]);loggerPredictive[_0x53dd('0x7b')]('---------------------------');_[_0x53dd('0x8e')](_0x2859f8,_0x1c9705);};}function getDiff(_0x5b7884){var _0xe0ee85=moment()[_0x53dd('0x47')](0x0);var _0x54c828=moment(_0x5b7884)[_0x53dd('0x47')](0x0);return _0xe0ee85[_0x53dd('0x48')](_0x54c828,_0x53dd('0x8f'));}function ifInterval(_0x1e4cf6,_0x168749){if(_[_0x53dd('0x86')](_0x168749)){return![];}return getDiff(_0x168749)<_0x1e4cf6*0x3c;}function freeVariablesPredictive(_0x592282){if(isNotNull(_0x592282)){if(!_[_0x53dd('0x86')](_0x592282[_0x53dd('0x26')])){_0x592282[_0x53dd('0x26')]=undefined;loggerPredictive['info'](_0x592282[_0x53dd('0x3d')],_0x53dd('0x90'));}if(!_[_0x53dd('0x86')](_0x592282[_0x53dd('0x25')])){_0x592282[_0x53dd('0x25')]=undefined;loggerPredictive[_0x53dd('0x7b')](_0x592282[_0x53dd('0x3d')],'clearing\x20variable\x20start\x20predictive');}if(!_[_0x53dd('0x86')](_0x592282[_0x53dd('0x91')])){clearInterval(_0x592282[_0x53dd('0x91')]);_0x592282[_0x53dd('0x91')]=undefined;loggerPredictive[_0x53dd('0x7b')](_0x592282[_0x53dd('0x3d')],'clearing\x20variable\x20handle\x20predictive');}}}function erlangb(_0x5a5ead,_0x3c3e56){if(_0x3c3e56===0x0){return 0x0;}var _0x293010=0x1;for(var _0x5c5f59=0x1;_0x5c5f59<=_0x3c3e56;_0x5c5f59+=0x1){_0x293010=0x1+_0x293010*_0x5c5f59/_0x5a5ead;}return 0x1/_0x293010;}function isVoiceQueueOutbound(_0x542d88){return _0x542d88===_0x53dd('0x92');}function isNotPreview(_0x5b9289){return _0x5b9289!==_0x53dd('0x20');}function isCampaignIvr(_0x39641c){return _0x39641c===_0x53dd('0x7a');}function getCallerId(_0xb1c4d4,_0xc9dd3d,_0xb355a9){if(!_[_0x53dd('0x86')](_0xb355a9)&&typeof _0xb355a9===_0x53dd('0x93')&&!_[_0x53dd('0x42')](_0xb355a9)){if(!_[_0x53dd('0x86')](_0xc9dd3d)&&typeof _0xc9dd3d===_0x53dd('0x93')&&!_[_0x53dd('0x42')](_0xc9dd3d)){return util[_0x53dd('0x78')]('\x22%s\x22\x20<%s>',_0xc9dd3d,_0xb355a9);}return util[_0x53dd('0x78')](_0x53dd('0x94'),_0xb355a9,_0xb355a9);}if(!_[_0x53dd('0x86')](_0xb1c4d4)&&typeof _0xb1c4d4===_0x53dd('0x93')&&!_[_0x53dd('0x42')](_0xb1c4d4)){return _0xb1c4d4;}return _0x53dd('0x95');}function loggerCatchQueueSummary(_0x13998d,_0x3635f3){return function(_0x1ae704){freeVariablesPredictive(_0x3635f3);emitVoiceQueueSummary(_0x3635f3);emitCampaignSummary(_0x3635f3);loggerSyncQueueSummary[_0x53dd('0x96')](_0x13998d,util[_0x53dd('0x97')](_0x1ae704,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x342bb5,_0xc39b70){return function(_0xeffd0d){loggerPredictive[_0x53dd('0x96')](_0xc39b70[_0x53dd('0x3d')],_0x342bb5);loggerPredictive['error'](_0xeffd0d['stack']);freeVariablesPredictive(_0xc39b70);};}function loggerCatch(_0x1a3b21){return function(_0x591795){logger[_0x53dd('0x96')](_0x1a3b21,util[_0x53dd('0x97')](_0x591795,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x4725a5){return _0x4725a5&&!_[_0x53dd('0x86')](_0x4725a5)&&_0x4725a5['length']>0x0;}function decremetOriginate(_0x1d554d){if(!_[_0x53dd('0x86')](_0x1d554d)&&_0x1d554d!==null){if(typeof _0x1d554d[_0x53dd('0x73')]!==_0x53dd('0x98')){if(_0x1d554d[_0x53dd('0x73')]>0x0){_0x1d554d[_0x53dd('0x73')]-=0x1;}else{logger['error'](_0x53dd('0x99'));}}}else{logger[_0x53dd('0x96')](_0x53dd('0x9a'));}}function checkContactLowerLimitOriginate(_0x6ab5a8,_0x785d6,_0xd1294e){if(_0x785d6>_0xd1294e){for(var _0x2bd9ab=0x0;_0x2bd9ab<_0x785d6-_0xd1294e;_0x2bd9ab+=0x1){decremetOriginate(_0x6ab5a8);}}}function loggerGetContactDialer(_0x258ddb,_0x501599,_0x280e2d){return function(_0x12b504){checkContactLowerLimitOriginate(_0x501599,_0x280e2d,0x0);logger[_0x53dd('0x96')](_0x258ddb,util[_0x53dd('0x97')](_0x12b504,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x1ae5c8){return function(_0x5a5cd2){if(isNotNull(_0x5a5cd2)&&isNotNull(_0x5a5cd2[0x0])){if(_0x5a5cd2[0x0]['contactsRescheduled']>0x0){_0x1ae5c8[_0x53dd('0x3b')]=_0x53dd('0x9b');logger[_0x53dd('0x7b')]('[getContactDialer2][ReScheduled]'+_0x1ae5c8[_0x53dd('0x3d')],_0x5a5cd2[0x0][_0x53dd('0x9c')],_0x53dd('0x9d'));}else{_0x1ae5c8['message']=_0x53dd('0x9e');logger['info'](_0x53dd('0x9f')+_0x1ae5c8[_0x53dd('0x3d')]);}}};}function notSendMessagesQueue(_0x4379c9){if(_0x4379c9[_0x53dd('0xa0')]){freeVariablesPredictive(_0x4379c9);if(_0x4379c9[_0x53dd('0x73')]===0x0&&_0x4379c9['talking']===0x0&&_0x4379c9[_0x53dd('0x55')]===0x0&&(_0x4379c9[_0x53dd('0x4f')]||0x0)===0x0){_0x4379c9[_0x53dd('0xa0')]=![];_0x4379c9[_0x53dd('0x4d')]=0x0;_0x4379c9['message']='NOT_ACTIVE';loggerSyncQueueSummary['error'](_0x53dd('0xa1'),_0x4379c9[_0x53dd('0x3d')],'is\x20not\x20active');}else{_0x4379c9['message']=_0x53dd('0xa2');loggerSyncQueueSummary['error'](_0x53dd('0xa1'),_0x4379c9[_0x53dd('0x3d')],_0x53dd('0xa3'));}emitVoiceQueueSummary(_0x4379c9);}}function notSendMessagesCampaign(_0x279632){if(_0x279632['sendMessageOneNotActive']){if(_0x279632['originated']===0x0){_0x279632[_0x53dd('0xa0')]=![];_0x279632['message']=_0x53dd('0x3c');loggerSyncQueueSummary[_0x53dd('0x96')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x279632[_0x53dd('0x3d')],_0x53dd('0xa4'));}else{_0x279632[_0x53dd('0x3b')]=_0x53dd('0xa2');loggerSyncQueueSummary[_0x53dd('0x96')](_0x53dd('0xa5'),_0x279632[_0x53dd('0x3d')],_0x53dd('0xa3'));}emitCampaignSummary(_0x279632);}}function createObjHistory(_0x24072f,_0x348c47,_0x3cd96c,_0x53606a,_0x3088ea){_0x24072f[_0x53dd('0x3b')]=_0x3cd96c;var _0x4f0565=new Action(_0x24072f,_0x348c47);var _0x121a72=new History(_0x4f0565);_0x121a72[_0x53dd('0xa6')]=_0x53606a;_0x121a72['statedesc']=_0x3088ea;_0x121a72[_0x53dd('0xa7')]=_0x4f0565[_0x53dd('0xa8')];return _0x121a72;}Dialer[_0x53dd('0x1c')]['loopClearZombieChannels']=function(){var _0x44c5ef=this;setInterval(function(){_0x44c5ef[_0x53dd('0xa9')](_0x44c5ef[_0x53dd('0xaa')],_0x53dd('0xab'));_0x44c5ef[_0x53dd('0xa9')](_0x44c5ef['actions'],'[actions]');},0x32c8);};Dialer[_0x53dd('0x1c')][_0x53dd('0xa9')]=function(_0xc4ca90,_0x1677a9){var _0x59f6ba=this;for(var _0x375b0a in _0xc4ca90){if(typeof _0xc4ca90[_0x375b0a]!==_0x53dd('0x98')){this[_0x53dd('0x1f')][_0x53dd('0x1d')](function(){if(!_[_0x53dd('0xac')](_0xc4ca90[_0x375b0a])){return ami[_0x53dd('0xad')]({'action':_0x53dd('0xae'),'channel':_0xc4ca90[_0x375b0a][_0x53dd('0xaf')]})[_0x53dd('0xb0')](function(_0x128176){if(_0x128176['message']===_0x53dd('0xb1')){setTimeout(function(){if(_0xc4ca90[_0x375b0a]&&_0xc4ca90[_0x375b0a][_0x53dd('0x4a')]!==_0x53dd('0x7a')){_0x59f6ba['updateOriginated'](_0x59f6ba['voiceQueues'][_0xc4ca90[_0x375b0a][_0x53dd('0xb2')]]);logger[_0x53dd('0x96')](_0x53dd('0xb3'),_0x1677a9,_0x375b0a,_0xc4ca90[_0x375b0a]['queue']);delete _0xc4ca90[_0x375b0a];}if(_0xc4ca90[_0x375b0a]&&_0xc4ca90[_0x375b0a][_0x53dd('0x4a')]===_0x53dd('0x7a')){_0x59f6ba[_0x53dd('0xb4')](_0x59f6ba['campaigns'][_0xc4ca90[_0x375b0a][_0x53dd('0xb2')]]);logger['error'](_0x53dd('0xb5'),_0x1677a9,_0x375b0a,_0xc4ca90[_0x375b0a][_0x53dd('0xb2')]);delete _0xc4ca90[_0x375b0a];}},0x2328);}});}});}}};Dialer['prototype'][_0x53dd('0xb6')]=function(_0x329e77){return BPromise[_0x53dd('0xb7')]()[_0x53dd('0xb8')](cmHopper[_0x53dd('0xb6')](_0x329e77))[_0x53dd('0xb0')](loggerCatch(_0x53dd('0xb9')));};Dialer[_0x53dd('0x1c')]['checkIsBlackList']=function(_0x3688d4){return BPromise[_0x53dd('0xb7')]()[_0x53dd('0xb8')](cmHopperBlack[_0x53dd('0xba')](_0x3688d4))[_0x53dd('0xb0')](loggerCatch(_0x53dd('0xbb')));};Dialer[_0x53dd('0x1c')][_0x53dd('0xbc')]=function(_0x10bd81){return BPromise[_0x53dd('0xb7')]()[_0x53dd('0xb8')](cmHopperBlack[_0x53dd('0xbc')](_0x10bd81))['catch'](loggerCatch('[checkIsBlackListIvr]\x20'));};Dialer[_0x53dd('0x1c')][_0x53dd('0xbd')]=function(_0x3a313a){return BPromise['resolve']()['then'](cmHopperHistory[_0x53dd('0xbe')](_0x3a313a))[_0x53dd('0xb0')](loggerCatch(_0x53dd('0xbf')));};Dialer[_0x53dd('0x1c')][_0x53dd('0xc0')]=function(_0x47b2e3){return BPromise[_0x53dd('0xb7')]()[_0x53dd('0xb8')](cmHopper[_0x53dd('0xc0')](_0x47b2e3))[_0x53dd('0xb0')](loggerCatch('[rescheduleContact]\x20'));};Dialer[_0x53dd('0x1c')][_0x53dd('0xc1')]=function(_0x41f9f4,_0x510870,_0x242800){return BPromise['resolve']()['then'](cmHopper[_0x53dd('0xc1')](_0x41f9f4,_0x510870,_0x242800))[_0x53dd('0xb0')](loggerCatch(_0x53dd('0xc2')));};Dialer[_0x53dd('0x1c')][_0x53dd('0xc3')]=function(_0x50ffda,_0x1ebc26,_0xe8723d,_0x154003,_0x3e0124){return BPromise['resolve']()[_0x53dd('0xb8')](cmHopper[_0x53dd('0xc3')](_0x50ffda,_0x1ebc26,_0xe8723d,_0x154003))['catch'](function(_0xb481cd){_0x3e0124[_0x53dd('0xc4')]-=_0xe8723d;_0x3e0124['temp']=_0x3e0124[_0x53dd('0xc4')]>0x0?_0x3e0124[_0x53dd('0xc4')]:0x0;loggerCatch(_0x53dd('0xc5'))(_0xb481cd);});};Dialer[_0x53dd('0x1c')][_0x53dd('0xc6')]=function(_0x5327c5,_0x3eca02,_0x931e44,_0x2717a8){return BPromise[_0x53dd('0xb7')]()[_0x53dd('0xb8')](cmHopper[_0x53dd('0xc6')](_0x5327c5,_0x3eca02,_0x931e44))[_0x53dd('0xb0')](function(_0x5bfd5b){_0x2717a8['temp']-=_0x3eca02;_0x2717a8[_0x53dd('0xc4')]=_0x2717a8[_0x53dd('0xc4')]>0x0?_0x2717a8[_0x53dd('0xc4')]:0x0;loggerCatch(_0x53dd('0xc7'))(_0x5bfd5b);});};Dialer[_0x53dd('0x1c')][_0x53dd('0xc8')]=function(_0x489b2d){return BPromise[_0x53dd('0xb7')]()['then'](voiceQueueRt['getVoiceQueueRtPauses'](_0x489b2d))['catch'](loggerCatch(_0x53dd('0xc9')));};Dialer[_0x53dd('0x1c')][_0x53dd('0xca')]=function(_0xab4905){return BPromise[_0x53dd('0xb7')]()[_0x53dd('0xb8')](cmHopper[_0x53dd('0xca')](_0xab4905))[_0x53dd('0xb0')](loggerCatch('[moveContactManagedDialer]\x20'));};Dialer['prototype'][_0x53dd('0xcb')]=function(_0x3ea59e){return BPromise[_0x53dd('0xb7')]()[_0x53dd('0xb8')](cmHopperHistory['createHistory'](_0x3ea59e))[_0x53dd('0xb0')](loggerCatch(_0x53dd('0xcc')));};Dialer[_0x53dd('0x1c')][_0x53dd('0xb4')]=function(_0x518949){if(!_['isUndefined'](_0x518949)&&_0x518949!==null){if(typeof _0x518949[_0x53dd('0x73')]!==_0x53dd('0x98')){if(_0x518949[_0x53dd('0x73')]>0x0){_0x518949[_0x53dd('0x73')]-=0x1;}else{logger[_0x53dd('0x96')](_0x53dd('0xcd'));}}}else{logger[_0x53dd('0x96')](_0x53dd('0xce'));}};Dialer[_0x53dd('0x1c')][_0x53dd('0xcf')]=function(_0xa83d64,_0x40cc0f){var _0x2811ec=this;return function(_0x2e5b1e){_0x2811ec[_0x53dd('0xb4')](_0x40cc0f);logger[_0x53dd('0x96')](_0xa83d64,util[_0x53dd('0x97')](_0x2e5b1e,{'showHidden':![],'depth':null}));};};Dialer[_0x53dd('0x1c')][_0x53dd('0xd0')]=function(_0x1b1d83,_0x5de872,_0xee50d2){var _0x29b075={'state':0x19,'statedesc':_0x53dd('0xd1')};this[_0x53dd('0xb4')](_0x5de872);this['saveInDb'](_[_0x53dd('0x8e')](_0x29b075,_[_0x53dd('0xd2')](_0xee50d2,[_0x53dd('0xd3'),_0x53dd('0xd4'),_0x53dd('0xd5'),_0x53dd('0xd6'),_0x53dd('0xd7')])),_0x53dd('0xd8'),_0x53dd('0xd9'));logger[_0x53dd('0x96')](_0x1b1d83);};Dialer[_0x53dd('0x1c')][_0x53dd('0xda')]=function(_0x3f404e){return _0x3f404e==='Success';};Dialer[_0x53dd('0x1c')][_0x53dd('0xdb')]=function(_0x43f5ae){return!_[_0x53dd('0x86')](_0x43f5ae)&&_0x43f5ae&&!_[_0x53dd('0x86')](_0x43f5ae['name'])&&!_[_0x53dd('0x86')](_0x43f5ae[_0x53dd('0xdc')])&&_0x43f5ae[_0x53dd('0xdc')]&&(this[_0x53dd('0x23')][util[_0x53dd('0x78')]('SIP/%s',_0x43f5ae['name'])]['status']===_0x53dd('0xdd')||this[_0x53dd('0x23')][util['format'](_0x53dd('0xde'),_0x43f5ae['name'])]['status']===_0x53dd('0xdf'));};Dialer[_0x53dd('0x1c')][_0x53dd('0xe0')]=function(_0x522cfb,_0x2c9784,_0x301a3c){this[_0x53dd('0xcb')](_0x522cfb)[_0x53dd('0xb0')](loggerCatch(_0x2c9784));this['moveContactManagedDialer'](_0x522cfb)[_0x53dd('0xb0')](loggerCatch(_0x301a3c));};Dialer[_0x53dd('0x1c')][_0x53dd('0xe1')]=function(_0x3adf21){var _0x51ebfe=this[_0x53dd('0xaa')][_0x3adf21[_0x53dd('0xe2')]];var _0x111d21;if(!_[_0x53dd('0xac')](_0x3adf21)&&!_['isNil'](_0x3adf21[_0x53dd('0xe3')])&&!_[_0x53dd('0xac')](_0x3adf21[_0x53dd('0xe3')][_0x53dd('0xe4')])&&_0x3adf21[_0x53dd('0xe5')]==='xcally-motion-dialer'&&_0x51ebfe){if(_0x51ebfe[_0x53dd('0x4a')]!==_0x53dd('0x7a')&&this['voiceQueues'][_0x51ebfe['queue']][_0x53dd('0xe6')]&&_0x3adf21['value']===_0x53dd('0xe7')){delete this[_0x53dd('0xaa')][_0x3adf21['uniqueid']];this[_0x53dd('0xb4')](this[_0x53dd('0xe8')][_0x51ebfe[_0x53dd('0xb2')]]);this[_0x53dd('0xe8')][_0x51ebfe['queue']][_0x53dd('0x5c')]+=0x1;this[_0x53dd('0xe8')][_0x51ebfe['queue']]['outboundAnswerAgiCallsDay']+=0x1;_0x111d21=new Hangup(_0x51ebfe,_0x3adf21);_0x111d21['state']=0x12;_0x111d21[_0x53dd('0xe9')]=_0x53dd('0xea');_0x111d21[_0x53dd('0xeb')]=_0x53dd('0xec');ami[_0x53dd('0x49')](_0x53dd('0xed'),ut[_0x53dd('0xee')](_0x111d21,_0x53dd('0xef')));this[_0x53dd('0xe0')](_0x111d21,_0x53dd('0xf0'),'[syncHangupInAMD]');}if(_0x51ebfe[_0x53dd('0x4a')]!==_0x53dd('0x7a')&&this[_0x53dd('0xe8')][_0x51ebfe[_0x53dd('0xb2')]]['dialAMDActive']&&_0x3adf21[_0x53dd('0xf1')]===_0x53dd('0xf2')){var _0x32a6ba=this;return new BPromise(function(_0x3e4753,_0x416550){delete _0x32a6ba[_0x53dd('0xaa')][_0x3adf21['uniqueid']];_0x32a6ba[_0x53dd('0xb4')](_0x32a6ba[_0x53dd('0xe8')][_0x51ebfe[_0x53dd('0xb2')]]);_0x32a6ba[_0x53dd('0xe8')][_0x51ebfe[_0x53dd('0xb2')]][_0x53dd('0x5c')]+=0x1;_0x32a6ba[_0x53dd('0xe8')][_0x51ebfe[_0x53dd('0xb2')]][_0x53dd('0x5b')]+=0x1;var _0x55cac9=_0x32a6ba[_0x53dd('0xe8')][_0x51ebfe['queue']];var _0x53440f=new Hangup(_0x51ebfe,_0x3adf21);_0x53440f[_0x53dd('0xa6')]=0x13;_0x53440f[_0x53dd('0xe9')]=_0x53dd('0xf3');_0x53440f[_0x53dd('0xeb')]=_0x53dd('0xec');_0x53440f[_0x53dd('0xf4')]+=0x1;_0x53440f[_0x53dd('0xf5')]+=0x1;_0x53440f[_0x53dd('0xef')]=!![];ami['emit'](_0x53dd('0xed'),ut[_0x53dd('0xee')](_0x53440f,'amd'));_0x32a6ba[_0x53dd('0xcb')](_0x53440f)[_0x53dd('0xb0')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x53440f[_0x53dd('0xf6')]+_0x53440f[_0x53dd('0xf7')]+_0x53440f['countnoanswerretry']+_0x53440f['countnosuchnumberretry']+_0x53440f['countdropretry']+_0x53440f[_0x53dd('0xf8')]+_0x53440f[_0x53dd('0xf4')]+_0x53440f[_0x53dd('0xf9')]>=_0x55cac9['dialGlobalMaxRetry']){_0x32a6ba[_0x53dd('0xfa')](_0x53440f,_0x3e4753,_0x416550,_0x53dd('0xfb'));}else{if(_0x53440f[_0x53dd('0xf4')]>=_0x55cac9[_0x53dd('0xfc')]){_0x32a6ba[_0x53dd('0xfd')](_0x53440f,_0x3e4753,_0x416550,_0x53dd('0xfe'));}else{_0x32a6ba['rescheduleContact']({'active':![],'countmachineretry':_0x53440f[_0x53dd('0xf4')],'scheduledat':moment()['add'](_0x55cac9['dialMachineRetryFrequency'],'minutes')[_0x53dd('0x78')](_0x53dd('0xff')),'ContactId':_0x53440f['ContactId'],'ListId':_0x53440f[_0x53dd('0xd4')],'VoiceQueueId':_0x53440f[_0x53dd('0xd6')]||undefined,'CampaignId':_0x53440f[_0x53dd('0xd7')]||undefined})[_0x53dd('0xb0')](loggerCatch('[rescheduleContact][Machine]'));_0x3e4753({'reschedule':0x1});}}});}if(_0x51ebfe[_0x53dd('0x4a')]===_0x53dd('0x7a')&&this['campaigns'][_0x51ebfe[_0x53dd('0xb2')]][_0x53dd('0xe6')]&&_0x3adf21[_0x53dd('0xf1')]===_0x53dd('0xe7')){delete this[_0x53dd('0xaa')][_0x3adf21['uniqueid']];this[_0x53dd('0xb4')](this['campaigns'][_0x51ebfe[_0x53dd('0xb2')]]);_0x111d21=new Hangup(_0x51ebfe,_0x3adf21);_0x111d21[_0x53dd('0xa6')]=0x12;_0x111d21[_0x53dd('0xe9')]=_0x53dd('0xea');_0x111d21[_0x53dd('0xeb')]=_0x53dd('0xec');ami[_0x53dd('0x49')](_0x53dd('0xed'),ut[_0x53dd('0xee')](_0x111d21,'amd'));this[_0x53dd('0xe0')](_0x111d21,_0x53dd('0x100'),_0x53dd('0x101'));}if(_0x51ebfe[_0x53dd('0x4a')]===_0x53dd('0x7a')&&this[_0x53dd('0x21')][_0x51ebfe['queue']]['dialAMDActive']&&_0x3adf21['value']==='MACHINE'){var _0x32a6ba=this;return new BPromise(function(_0x954cce,_0x3a7842){delete _0x32a6ba[_0x53dd('0xaa')][_0x3adf21[_0x53dd('0xe2')]];_0x32a6ba[_0x53dd('0xb4')](_0x32a6ba[_0x53dd('0x21')][_0x51ebfe[_0x53dd('0xb2')]]);_0x32a6ba['campaigns'][_0x51ebfe['queue']]['outboundAnswerCallsDay']+=0x1;_0x32a6ba[_0x53dd('0x21')][_0x51ebfe['queue']]['outboundAnswerAgiCallsDay']+=0x1;var _0x242b6d=_0x32a6ba[_0x53dd('0x21')][_0x51ebfe['queue']];var _0x217ac9=new Hangup(_0x51ebfe,_0x3adf21);_0x217ac9[_0x53dd('0xa6')]=0x13;_0x217ac9[_0x53dd('0xe9')]=_0x53dd('0xf3');_0x217ac9[_0x53dd('0xeb')]=_0x53dd('0xec');_0x217ac9[_0x53dd('0xf4')]+=0x1;_0x217ac9['countglobal']+=0x1;_0x217ac9[_0x53dd('0xef')]=!![];ami['emit'](_0x53dd('0xed'),ut[_0x53dd('0xee')](_0x217ac9,_0x53dd('0xef')));_0x32a6ba[_0x53dd('0xcb')](_0x217ac9)[_0x53dd('0xb0')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x217ac9['countbusyretry']+_0x217ac9[_0x53dd('0xf7')]+_0x217ac9[_0x53dd('0x102')]+_0x217ac9[_0x53dd('0x103')]+_0x217ac9[_0x53dd('0x104')]+_0x217ac9[_0x53dd('0xf8')]+_0x217ac9[_0x53dd('0xf4')]+_0x217ac9[_0x53dd('0xf9')]>=_0x242b6d[_0x53dd('0x105')]){_0x32a6ba[_0x53dd('0xfa')](_0x217ac9,_0x954cce,_0x3a7842,_0x53dd('0xfb'));}else{if(_0x217ac9['countmachineretry']>=_0x242b6d['dialMachineMaxRetry']){_0x32a6ba[_0x53dd('0xfd')](_0x217ac9,_0x954cce,_0x3a7842,_0x53dd('0xfe'));}else{_0x32a6ba['rescheduleContact']({'active':![],'countmachineretry':_0x217ac9[_0x53dd('0xf4')],'scheduledat':moment()['add'](_0x242b6d['dialMachineRetryFrequency'],'minutes')[_0x53dd('0x78')](_0x53dd('0xff')),'ContactId':_0x217ac9[_0x53dd('0xd3')],'ListId':_0x217ac9[_0x53dd('0xd4')],'VoiceQueueId':_0x217ac9[_0x53dd('0xd6')]||undefined,'CampaignId':_0x217ac9[_0x53dd('0xd7')]||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x106')));_0x954cce({'reschedule':0x1});}}});}}};Dialer['prototype']['syncHangup']=function(_0x5cfc30){var _0x259794=this['uniqueId'][_0x5cfc30[_0x53dd('0xe2')]];var _0x558f47=this;var _0x4cafa7;if(_0x259794&&_0x259794[_0x53dd('0x4a')]==='ivr'){delete this['uniqueId'][_0x5cfc30[_0x53dd('0xe2')]];this['updateOriginated'](this[_0x53dd('0x21')][_0x259794['queue']]);this[_0x53dd('0x21')][_0x259794[_0x53dd('0xb2')]]['ivrAnswerCallsDay']+=0x1;_0x4cafa7=new Hangup(_0x259794,_0x5cfc30);this[_0x53dd('0xcb')](_0x4cafa7)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x107')));this['moveContactManagedDialer'](_0x4cafa7)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x108')));}if(_0x259794&&_0x259794[_0x53dd('0x4a')]!==_0x53dd('0x7a')&&isNotNull(this['voiceQueues'][_0x259794['queue']][_0x53dd('0x109')])){delete this[_0x53dd('0xaa')][_0x5cfc30[_0x53dd('0xe2')]];this[_0x53dd('0xb4')](this[_0x53dd('0xe8')][_0x259794[_0x53dd('0xb2')]]);this[_0x53dd('0xe8')][_0x259794['queue']][_0x53dd('0x5c')]+=0x1;this[_0x53dd('0xe8')][_0x259794[_0x53dd('0xb2')]][_0x53dd('0x5b')]+=0x1;_0x4cafa7=new Hangup(_0x259794,_0x5cfc30);_0x4cafa7[_0x53dd('0xa6')]=0x10;_0x4cafa7['statedesc']=_0x53dd('0x10a');_0x4cafa7[_0x53dd('0xeb')]='AGI';this['createHistory'](_0x4cafa7)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x107')));this['moveContactManagedDialer'](_0x4cafa7)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x108')));}if(_0x259794&&_0x259794[_0x53dd('0x4a')]!==_0x53dd('0x7a')&&!isNotNull(this[_0x53dd('0xe8')][_0x259794[_0x53dd('0xb2')]]['dialQueueProject'])){delete this[_0x53dd('0xaa')][_0x5cfc30[_0x53dd('0xe2')]];this[_0x53dd('0xb4')](this[_0x53dd('0xe8')][_0x259794['queue']]);this['voiceQueues'][_0x259794[_0x53dd('0xb2')]][_0x53dd('0x68')]+=0x1;_0x4cafa7=new Hangup(_0x259794,_0x5cfc30);_0x4cafa7[_0x53dd('0xa6')]=0xc;_0x4cafa7[_0x53dd('0xe9')]=_0x5cfc30[_0x53dd('0x10b')];_0x4cafa7['membername']='Unknow';this[_0x53dd('0xcb')](_0x4cafa7)[_0x53dd('0xb0')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0x53dd('0xca')](_0x4cafa7)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x108')));}};Dialer['prototype'][_0x53dd('0x10c')]=function(_0x25e2e6){var _0x178687=this[_0x53dd('0xaa')][_0x25e2e6[_0x53dd('0xe2')]];var _0x26fb74=this;if(this[_0x53dd('0xe8')][_0x25e2e6['queue']]){if(_0x178687&&_0x178687[_0x53dd('0x4a')]!==_0x53dd('0x7a')){delete this[_0x53dd('0xaa')][_0x25e2e6[_0x53dd('0xe2')]];this[_0x53dd('0xe8')][_0x25e2e6['queue']][_0x53dd('0x5c')]+=0x1;var _0x240ff8=new AgentComplete(_0x178687,_0x25e2e6);if(_0x25e2e6['reason']===_0x53dd('0x10d')){_0x240ff8['agiafterat']=this[_0x53dd('0xe8')][_0x25e2e6['queue']][_0x53dd('0x10e')]&&this['voiceQueues'][_0x25e2e6['queue']][_0x53dd('0x10f')]?moment()[_0x53dd('0x78')](_0x53dd('0xff')):undefined;}this[_0x53dd('0xcb')](_0x240ff8)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x110')));this['moveContactManagedDialer'](_0x240ff8)['catch'](loggerCatch(_0x53dd('0x111')));}}};Dialer[_0x53dd('0x1c')][_0x53dd('0x2a')]=function(_0x5d533d){if(this[_0x53dd('0xe8')][_0x5d533d[_0x53dd('0xb2')]]){if(this['uniqueId'][_0x5d533d[_0x53dd('0xe2')]]&&this['uniqueId'][_0x5d533d[_0x53dd('0xe2')]]['type']!==_0x53dd('0x7a')){this[_0x53dd('0xb4')](this[_0x53dd('0xe8')][_0x5d533d['queue']]);this['uniqueId'][_0x5d533d['uniqueid']]['answertime']=moment()[_0x53dd('0x78')](_0x53dd('0xff'));}}};Dialer[_0x53dd('0x1c')][_0x53dd('0x112')]=function(_0x3289cc){this[_0x53dd('0xcb')](_0x3289cc)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x110')));this[_0x53dd('0xca')](_0x3289cc)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x113')));};Dialer[_0x53dd('0x1c')][_0x53dd('0x2c')]=function(_0x2c52b7){var _0x6c982c=this['uniqueId'][_0x2c52b7[_0x53dd('0xe2')]];var _0xa06536=this;if(this[_0x53dd('0xe8')][_0x2c52b7[_0x53dd('0xb2')]]){if(_0x6c982c&&_0x6c982c[_0x53dd('0x4a')]!==_0x53dd('0x7a')){delete this['uniqueId'][_0x2c52b7[_0x53dd('0xe2')]];this[_0x53dd('0xb4')](this['voiceQueues'][_0x2c52b7[_0x53dd('0xb2')]]);_0x6c982c[_0x53dd('0x114')]=moment()[_0x53dd('0x78')](_0x53dd('0xff'));var _0x26045a=new QueueCallerAbandon(_0x6c982c,_0x2c52b7);if(getSeconds(_0x6c982c['droptime'],_0x6c982c[_0x53dd('0x115')])>=_0x6c982c[_0x53dd('0x116')]){this[_0x53dd('0xe8')][_0x2c52b7[_0x53dd('0xb2')]][_0x53dd('0x6c')]+=0x1;this[_0x53dd('0xe8')][_0x2c52b7[_0x53dd('0xb2')]][_0x53dd('0x62')]+=0x1;this[_0x53dd('0xe8')][_0x2c52b7[_0x53dd('0xb2')]][_0x53dd('0x6e')]+=0x1;_0x26045a[_0x53dd('0xa6')]=0xa;_0x26045a[_0x53dd('0xe9')]=_0x53dd('0x117');_0x26045a[_0x53dd('0x118')]=_0x53dd('0x119');_0x26045a[_0x53dd('0x11a')]=this[_0x53dd('0xe8')][_0x2c52b7[_0x53dd('0xb2')]][_0x53dd('0x10e')]?moment()[_0x53dd('0x78')](_0x53dd('0xff')):undefined;_0x26045a['countdropretry']+=0x1;_0x26045a[_0x53dd('0xf5')]+=0x1;if(_0x26045a[_0x53dd('0x104')]>=this['voiceQueues'][_0x2c52b7[_0x53dd('0xb2')]][_0x53dd('0x11b')]){this[_0x53dd('0x112')](_0x26045a);}else{this[_0x53dd('0xc0')]({'active':![],'countdropretry':_0x26045a[_0x53dd('0x104')],'scheduledat':moment()[_0x53dd('0x11c')](this[_0x53dd('0xe8')][_0x2c52b7[_0x53dd('0xb2')]][_0x53dd('0x11d')],'minutes')['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x6c982c[_0x53dd('0xd3')],'ListId':_0x6c982c[_0x53dd('0xd4')],'VoiceQueueId':_0x6c982c[_0x53dd('0xd6')]||undefined,'CampaignId':_0x6c982c[_0x53dd('0xd7')]||undefined})[_0x53dd('0xb0')](loggerCatch('[rescheduleContact][Drop]'));var _0x1cbe5f=new History(_0x26045a);_0x1cbe5f[_0x53dd('0xa6')]=0xa;_0x1cbe5f[_0x53dd('0xe9')]=_0x53dd('0x117');_0x1cbe5f[_0x53dd('0xa8')]=moment()[_0x53dd('0x78')](_0x53dd('0xff'));_0x1cbe5f[_0x53dd('0xa7')]=_0x1cbe5f['starttime'];_0x1cbe5f[_0x53dd('0x11e')]=_0x26045a[_0x53dd('0x11e')];_0x1cbe5f['calleridnum']=_0x26045a[_0x53dd('0x11f')];this[_0x53dd('0xcb')](_0x1cbe5f)[_0x53dd('0xb0')](loggerCatch('[syncAgentComplete][createHistory][10]'));}}else{this['voiceQueues'][_0x2c52b7['queue']]['predictiveIntervalDroppedCallsCallersExit']+=0x1;this[_0x53dd('0xe8')][_0x2c52b7['queue']][_0x53dd('0x61')]+=0x1;_0x26045a[_0x53dd('0xa6')]=0xb;_0x26045a['statedesc']=_0x53dd('0x120');_0x26045a[_0x53dd('0x118')]=_0x53dd('0x121');_0x26045a['countabandonedretry']+=0x1;_0x26045a['countglobal']+=0x1;if(_0x26045a[_0x53dd('0xf8')]>=this[_0x53dd('0xe8')][_0x2c52b7[_0x53dd('0xb2')]]['dialAbandonedMaxRetry']){this[_0x53dd('0x112')](_0x26045a);}else{this[_0x53dd('0xc0')]({'active':![],'countabandonedretry':_0x26045a[_0x53dd('0xf8')],'scheduledat':moment()[_0x53dd('0x11c')](this[_0x53dd('0xe8')][_0x2c52b7['queue']][_0x53dd('0x122')],_0x53dd('0x123'))[_0x53dd('0x78')](_0x53dd('0xff')),'ContactId':_0x6c982c[_0x53dd('0xd3')],'ListId':_0x6c982c[_0x53dd('0xd4')],'VoiceQueueId':_0x6c982c[_0x53dd('0xd6')]||undefined,'CampaignId':_0x6c982c[_0x53dd('0xd7')]||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x124')));var _0x1cbe5f=new History(_0x26045a);_0x1cbe5f[_0x53dd('0xa6')]=0xb;_0x1cbe5f[_0x53dd('0xe9')]=_0x53dd('0x120');_0x1cbe5f[_0x53dd('0xa8')]=moment()[_0x53dd('0x78')](_0x53dd('0xff'));_0x1cbe5f[_0x53dd('0xa7')]=_0x1cbe5f[_0x53dd('0xa8')];_0x1cbe5f['calleridname']=_0x26045a[_0x53dd('0x11e')];_0x1cbe5f[_0x53dd('0x11f')]=_0x26045a[_0x53dd('0x11f')];this[_0x53dd('0xcb')](_0x1cbe5f)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x125')));}}}}};Dialer[_0x53dd('0x1c')]['syncNewExten']=function(_0x474d12){if(this[_0x53dd('0x126')][_0x474d12['uniqueid']]){this['actions'][_0x474d12[_0x53dd('0xe2')]][_0x53dd('0xaf')]=_0x474d12['channel'];}if(this[_0x53dd('0xaa')][_0x474d12[_0x53dd('0xe2')]]){this[_0x53dd('0xaa')][_0x474d12[_0x53dd('0xe2')]][_0x53dd('0xaf')]=_0x474d12[_0x53dd('0xaf')];}};Dialer[_0x53dd('0x1c')][_0x53dd('0x127')]=function(_0x438015){if(strategy[this[_0x53dd('0xe8')][this[_0x53dd('0x126')][_0x438015[_0x53dd('0x128')]][_0x53dd('0xb2')]][_0x53dd('0x4b')]]===_0x53dd('0x1b')){if(this[_0x53dd('0x126')][_0x438015['actionid']]&&_[_0x53dd('0xac')](this['actions'][_0x438015[_0x53dd('0x128')]][_0x53dd('0x129')])&&_0x438015[_0x53dd('0xae')]==='1'&&_0x438015[_0x53dd('0x12a')]==='0'){if(this['agents'][_0x438015['stateinterface']]){if(!this[_0x53dd('0x22')][_0x438015['stateinterface']][_0x53dd('0x129')]){this[_0x53dd('0x22')][_0x438015[_0x53dd('0x12b')]][_0x53dd('0x129')]=!![];this['actions'][_0x438015[_0x53dd('0x128')]][_0x53dd('0x129')]=!![];this['actions'][_0x438015['actionid']][_0x53dd('0x12b')]=_0x438015[_0x53dd('0x12b')];}}}}else if((strategy[this[_0x53dd('0xe8')][this[_0x53dd('0x126')][_0x438015[_0x53dd('0x128')]][_0x53dd('0xb2')]][_0x53dd('0x4b')]]||'rrmemory')===_0x53dd('0x12c')){if(this[_0x53dd('0x126')][_0x438015['actionid']]){if(this[_0x53dd('0x22')][_0x438015[_0x53dd('0x12b')]]){this['actions'][_0x438015['actionid']][_0x53dd('0x12b')]=_0x438015['stateinterface'];if(_[_0x53dd('0xac')](this[_0x53dd('0x28')][this['actions'][_0x438015[_0x53dd('0x128')]][_0x53dd('0xb2')]])){this[_0x53dd('0x28')][this[_0x53dd('0x126')][_0x438015[_0x53dd('0x128')]]['queue']]=[];}this[_0x53dd('0x28')][this[_0x53dd('0x126')][_0x438015[_0x53dd('0x128')]][_0x53dd('0xb2')]][_0x53dd('0x12d')](_['merge'](_[_0x53dd('0xd2')](this[_0x53dd('0x126')][_0x438015[_0x53dd('0x128')]],[_0x53dd('0x12e'),_0x53dd('0x12b')]),{'status':_0x438015[_0x53dd('0xae')],'paused':_0x438015[_0x53dd('0x12a')]}));}}}};function unlockQueueStatus(_0x2a89ff,_0x5a21fd){setTimeout(function(){if(_[_0x53dd('0x86')](_0x2a89ff['queueStatusComplete'])){loggerBooked['error'](_0x53dd('0x12f'),_0x5a21fd);}_0x2a89ff[_0x53dd('0x130')]=!![];loggerBooked[_0x53dd('0x7b')](_0x53dd('0x131'),_0x5a21fd,JSON['stringify'](_['pick'](_0x2a89ff,['name',_0x53dd('0x130')])));},0x1f3);}Dialer[_0x53dd('0x1c')][_0x53dd('0x132')]=function(_0x38dace){var _0x4dc50c=this;var _0x306d61=_0x4dc50c[_0x53dd('0xe8')][_0x4dc50c[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]];if(strategy[this[_0x53dd('0xe8')][this['actions'][_0x38dace['actionid']][_0x53dd('0xb2')]][_0x53dd('0x4b')]]===_0x53dd('0x1b')){if(this['actions'][_0x38dace['actionid']]&&this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0x12b')]){this[_0x53dd('0x20')][_0x53dd('0x133')](this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]['idHopper'],this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0x12b')])[_0x53dd('0xb0')](function(_0x677ff9){logger[_0x53dd('0x96')](_0x53dd('0x134'),util[_0x53dd('0x97')](_0x677ff9,{'showHidden':![],'depth':null}));})['finally'](function(){_0x4dc50c[_0x53dd('0xb4')](_0x4dc50c[_0x53dd('0xe8')][_0x4dc50c[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]['queue']]);_0x4dc50c[_0x53dd('0x22')][_0x4dc50c[_0x53dd('0x126')][_0x38dace['actionid']][_0x53dd('0x12b')]][_0x53dd('0x129')]=![];delete _0x4dc50c[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]];unlockQueueStatus(_0x306d61);});}else{this[_0x53dd('0xb4')](this[_0x53dd('0xe8')][this[_0x53dd('0x126')][_0x38dace['actionid']]['queue']]);this['rescheduleContact']({'active':![],'ContactId':this[_0x53dd('0x126')][_0x38dace['actionid']][_0x53dd('0xd3')],'ListId':this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xd4')],'VoiceQueueId':this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xd6')]||undefined,'CampaignId':this[_0x53dd('0x126')][_0x38dace['actionid']][_0x53dd('0xd7')]||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x135')));delete this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]];unlockQueueStatus(_0x306d61);}}else if((strategy[this['voiceQueues'][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]['queue']][_0x53dd('0x4b')]]||_0x53dd('0x12c'))===_0x53dd('0x12c')){var _0xc63eb7;if(this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]&&!_[_0x53dd('0x42')](this[_0x53dd('0x28')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]])){if(this[_0x53dd('0x29')][_0x4dc50c[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]['queue']]){this[_0x53dd('0x29')][_0x4dc50c['actions'][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]]=this[_0x53dd('0x29')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]]?this[_0x53dd('0x29')][this['actions'][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]]:this[_0x53dd('0x28')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]]?this[_0x53dd('0x28')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]['queue']][_0x53dd('0x136')]||0x0:0x0;}this[_0x53dd('0x28')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]][_0x53dd('0x136')]=this[_0x53dd('0x29')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]];for(var _0x932ce1=0x0;_0x932ce1<this[_0x53dd('0x28')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]][_0x53dd('0x137')];_0x932ce1+=0x1){_0xc63eb7=rr(this[_0x53dd('0x28')][this['actions'][_0x38dace['actionid']][_0x53dd('0xb2')]]);this[_0x53dd('0x29')][_0x4dc50c[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]]=this[_0x53dd('0x28')][this['actions'][_0x38dace[_0x53dd('0x128')]]['queue']][_0x53dd('0x136')];if(_0xc63eb7['status']==='1'&&_0xc63eb7[_0x53dd('0x12a')]==='0'){break;}}if(!_[_0x53dd('0xac')](_0xc63eb7)){this[_0x53dd('0x22')][_0xc63eb7['stateinterface']]['unlockRR']=_[_0x53dd('0x86')](this[_0x53dd('0x22')][_0xc63eb7[_0x53dd('0x12b')]]['unlockRR'])?!![]:this[_0x53dd('0x22')][_0xc63eb7['stateinterface']]['unlockRR'];}loggerBooked['info'](_0x53dd('0x138'),_0x38dace[_0x53dd('0x128')],_0x53dd('0x139'),JSON[_0x53dd('0x46')](_[_0x53dd('0xd2')](this[_0x53dd('0x22')][_0xc63eb7['stateinterface']],[_0x53dd('0x3d'),'unlockRR'])),_0x53dd('0x13a'),JSON[_0x53dd('0x46')](_0xc63eb7[_0x53dd('0x12e')]));if(!_[_0x53dd('0xac')](_0xc63eb7)&&_0xc63eb7[_0x53dd('0xae')]==='1'&&_0xc63eb7['paused']==='0'&&this[_0x53dd('0x22')][_0xc63eb7['stateinterface']][_0x53dd('0x13b')]){this['agents'][_0xc63eb7[_0x53dd('0x12b')]]['unlockRR']=![];this['queueBooked'][_0x4dc50c[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]]=[];this[_0x53dd('0x20')][_0x53dd('0x133')](_0xc63eb7[_0x53dd('0x12e')],_0xc63eb7[_0x53dd('0x12b')])[_0x53dd('0xb0')](function(_0x207078){logger[_0x53dd('0x96')](_0x53dd('0x134'),util[_0x53dd('0x97')](_0x207078,{'showHidden':![],'depth':null}));})[_0x53dd('0x1e')](function(){_0x4dc50c[_0x53dd('0xb4')](_0x4dc50c[_0x53dd('0xe8')][_0x4dc50c[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]]);setTimeout(function(){_0x4dc50c['agents'][_0xc63eb7[_0x53dd('0x12b')]]['unlockRR']=!![];loggerBooked[_0x53dd('0x7b')](_0x53dd('0x13c'),_0x38dace[_0x53dd('0x128')],_0x53dd('0x139'),JSON[_0x53dd('0x46')](_[_0x53dd('0xd2')](_0x4dc50c['agents'][_0xc63eb7[_0x53dd('0x12b')]],[_0x53dd('0x3d'),_0x53dd('0x13b')])),_0x53dd('0x13a'),JSON[_0x53dd('0x46')](_0xc63eb7[_0x53dd('0x12e')]));},0xc7);delete _0x4dc50c[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]];unlockQueueStatus(_0x306d61,_0x38dace['actionid']);});}else{loggerBooked[_0x53dd('0x7b')](_0x53dd('0x13d'));this[_0x53dd('0xb4')](this[_0x53dd('0xe8')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]]);this[_0x53dd('0xc0')]({'active':![],'ContactId':this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xd3')],'ListId':this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xd4')],'VoiceQueueId':this[_0x53dd('0x126')][_0x38dace['actionid']][_0x53dd('0xd6')]||undefined,'CampaignId':this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]['CampaignId']||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x135')));delete this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]];unlockQueueStatus(_0x306d61);}}else{loggerBooked[_0x53dd('0x7b')]('[booked][unlock2]');this[_0x53dd('0xb4')](this[_0x53dd('0xe8')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]['queue']]);this['rescheduleContact']({'active':![],'ContactId':this['actions'][_0x38dace['actionid']][_0x53dd('0xd3')],'ListId':this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]['ListId'],'VoiceQueueId':this['actions'][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xd6')]||undefined,'CampaignId':this['actions'][_0x38dace['actionid']]['CampaignId']||undefined})['catch'](loggerCatch(_0x53dd('0x13e')));delete this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]];unlockQueueStatus(_0x306d61);}}else{loggerBooked['info'](_0x53dd('0x13f'));this[_0x53dd('0xb4')](this[_0x53dd('0xe8')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]['queue']]);this['rescheduleContact']({'active':![],'ContactId':this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xd3')],'ListId':this['actions'][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xd4')],'VoiceQueueId':this[_0x53dd('0x126')][_0x38dace['actionid']]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xd7')]||undefined})['catch'](loggerCatch(_0x53dd('0x140')));delete this['actions'][_0x38dace[_0x53dd('0x128')]];unlockQueueStatus(_0x306d61);}};Dialer['prototype'][_0x53dd('0x141')]=function(){var _0x136754=this;setInterval(function(){_0x136754[_0x53dd('0x142')]();},0x3e8);};Dialer[_0x53dd('0x1c')][_0x53dd('0x143')]=function(_0xbdd43b){var _0x16be4d=this;return function(){if(!_0x16be4d[_0x53dd('0xdb')](_0xbdd43b[_0x53dd('0x76')])){if(!_0x16be4d[_0x53dd('0xdb')](_0xbdd43b[_0x53dd('0x144')])){_0xbdd43b[_0x53dd('0x3b')]=_0x53dd('0x145');throw _0xbdd43b[_0x53dd('0x3d')]+_0x53dd('0x146');}}};};Dialer['prototype'][_0x53dd('0x147')]=function(_0x5261bb,_0x1b0e3a,_0x42f1bd,_0x45384f){var _0x523fb3=this;return function(){var _0x192884=!![];return _0x523fb3[_0x53dd('0x148')](_0x5261bb,_0x1b0e3a,_0x42f1bd,_0x45384f,_0x192884);};};Dialer[_0x53dd('0x1c')][_0x53dd('0x149')]=function(_0x1c4f96,_0xb319a4,_0x48413c,_0x27de6f){var _0xbf4c5e=this;return function(){var _0x1d707e=![];return _0xbf4c5e[_0x53dd('0x148')](_0x1c4f96[_0x53dd('0x43')],_0xb319a4,_0x48413c,_0x27de6f,_0x1d707e);};};Dialer[_0x53dd('0x1c')]['ifTime']=function(_0x4f763f,_0x2c04a8,_0x2143ef,_0x1b2599,_0x58af33){var _0x294a7c=[];return new BPromise(function(_0x520f10,_0x3f2ecb){if(!isNotNull(_0x4f763f)){_0x1b2599[_0x53dd('0x3b')]='INTERVAL_IS_NULL';return _0x3f2ecb(msgResponse(_0x53dd('0x148'),_0x53dd('0x14a'),_0x2143ef+_0x53dd('0x14b')));}if(_[_0x53dd('0x42')](_0x4f763f)){_0x1b2599['message']=_0x53dd('0x14c');return _0x3f2ecb(msgResponse(_0x53dd('0x148'),_0x53dd('0x14a'),_0x2143ef+_0x53dd('0x14d')));}if(_0x2c04a8&&_['isUndefined'](config[_0x53dd('0x14e')][_0x2c04a8])){_0x1b2599[_0x53dd('0x3b')]=_0x53dd('0x14f');return _0x3f2ecb(msgResponse(_0x53dd('0x148'),_0x53dd('0x14a'),_0x2143ef+'\x20Timezone\x20unknow\x20'+_0x2c04a8));}if(_['isArray'](_0x4f763f)){for(var _0x48d7d5=0x0;_0x48d7d5<_0x4f763f['length'];_0x48d7d5+=0x1){_0x294a7c[_0x53dd('0x12d')](ami['Action']({'action':_0x53dd('0x150'),'command':util[_0x53dd('0x78')](_0x53dd('0x151'),_0x4f763f[_0x48d7d5][_0x53dd('0x152')],!_[_0x53dd('0x86')](config[_0x53dd('0x14e')][_0x2c04a8])?_0x2c04a8:'')})[_0x53dd('0xb8')](function(_0x57e962){return _0x57e962[_0x53dd('0x153')][_0x53dd('0x154')](_0x53dd('0x155'))>=0x0;})[_0x53dd('0xb0')](myreject(_0x3f2ecb)));}}else{_0x294a7c[_0x53dd('0x12d')](ami[_0x53dd('0xad')]({'action':_0x53dd('0x150'),'command':util['format'](_0x53dd('0x151'),_0x4f763f,!_['isUndefined'](config[_0x53dd('0x14e')][_0x2c04a8])?_0x2c04a8:'')})[_0x53dd('0xb8')](function(_0x16f7de){return _0x16f7de[_0x53dd('0x153')][_0x53dd('0x154')](_0x53dd('0x155'))>=0x0;})[_0x53dd('0xb0')](myreject(_0x3f2ecb)));}BPromise[_0x53dd('0x156')](_0x294a7c)[_0x53dd('0xb8')](function(_0x357bf6){var _0x1a49d9=_['some'](_0x357bf6);if(_0x1a49d9){return _0x520f10(_0x1a49d9);}else{_0x1b2599[_0x53dd('0x3b')]=_0x58af33?_0x53dd('0x157'):_0x53dd('0x158');return _0x3f2ecb(msgResponse(_0x53dd('0x159'),_0x53dd('0x14a'),_0x53dd('0x15a')+_0x58af33+'\x20'+_0x2143ef+_0x53dd('0x15b')+util[_0x53dd('0x97')](_0x4f763f,{'showHidden':![],'depth':null})+_0x53dd('0x15c')+_0x2c04a8));}})[_0x53dd('0xb0')](function(_0x538f86){return _0x3f2ecb(msgResponse('ifTime',_0x53dd('0x14a'),JSON['stringify'](_0x538f86)));});});};Dialer[_0x53dd('0x1c')][_0x53dd('0x15d')]=function(_0x51f406){var _0x4f52a1=this;return function(){switch(_0x51f406[_0x53dd('0x56')]){case _0x53dd('0x15e'):freeVariablesPredictive(_0x51f406);_0x4f52a1[_0x53dd('0x15f')](_0x51f406,0x1);break;case'power':freeVariablesPredictive(_0x51f406);_0x4f52a1[_0x53dd('0x15f')](_0x51f406,_0x51f406[_0x53dd('0x160')]);break;case _0x53dd('0xb'):_0x4f52a1[_0x53dd('0xb')](_0x51f406);break;case'booked':freeVariablesPredictive(_0x51f406);_0x4f52a1[_0x53dd('0x15f')](_0x51f406,0x1);break;default:freeVariablesPredictive(_0x51f406);logger[_0x53dd('0x96')](_0x53dd('0x161'),_0x51f406[_0x53dd('0x3d')],_0x53dd('0x162'));}};};Dialer['prototype'][_0x53dd('0x163')]=function(_0x5eea79){var _0x4be2de=this;return function(){_0x4be2de[_0x53dd('0x164')](_0x5eea79);};};Dialer[_0x53dd('0x1c')][_0x53dd('0xc')]=function(_0x1b0925){var _0x37ba1c=this;if(isNotPreview(_0x1b0925[_0x53dd('0x56')])){if(isVoiceQueueOutbound(_0x1b0925[_0x53dd('0x4a')])&&isActive(_0x1b0925[_0x53dd('0x165')])){_0x1b0925[_0x53dd('0xa0')]=!![];BPromise[_0x53dd('0xb7')]()[_0x53dd('0xb8')](checkIsLoggedIn(_0x1b0925,_0x1b0925[_0x53dd('0x4e')]))[_0x53dd('0xb8')](checkIsActive(_0x1b0925,_0x1b0925['dialActive']))[_0x53dd('0xb8')](checkInterval(_0x1b0925))[_0x53dd('0xb8')](_0x37ba1c[_0x53dd('0x143')](_0x1b0925))[_0x53dd('0xb8')](_0x37ba1c[_0x53dd('0x147')](_0x1b0925['dialGlobalInterval'],_0x1b0925['dialTimezone'],_0x1b0925[_0x53dd('0x3d')],_0x1b0925))['then'](_0x37ba1c[_0x53dd('0x149')](_0x1b0925[_0x53dd('0x41')],_0x1b0925[_0x53dd('0x166')],_0x1b0925[_0x53dd('0x3d')],_0x1b0925))['then'](_0x37ba1c[_0x53dd('0x15d')](_0x1b0925))['catch'](loggerCatchQueueSummary(_0x53dd('0x167'),_0x1b0925));}else{notSendMessagesQueue(_0x1b0925);}}else{freeVariablesPredictive(_0x1b0925);}};Dialer['prototype'][_0x53dd('0x142')]=function(){var _0x552f8e=this;var _0x58c2a8;for(var _0xc4b8fe in this[_0x53dd('0x21')]){if(typeof this[_0x53dd('0x21')][_0xc4b8fe]!=='undefined'){_0x58c2a8=this[_0x53dd('0x21')][_0xc4b8fe];if(isCampaignIvr(_0x58c2a8[_0x53dd('0x4a')])&&isActive(_0x58c2a8[_0x53dd('0xdc')])){_0x58c2a8[_0x53dd('0xa0')]=!![];BPromise['resolve']()[_0x53dd('0xb8')](checkIsActive(_0x58c2a8,_0x58c2a8['active']))[_0x53dd('0xb8')](checkInterval(_0x58c2a8))[_0x53dd('0xb8')](_0x552f8e[_0x53dd('0x143')](_0x58c2a8))[_0x53dd('0xb8')](_0x552f8e[_0x53dd('0x147')](_0x58c2a8[_0x53dd('0x168')],_0x58c2a8[_0x53dd('0x166')],_0x58c2a8['name'],_0x58c2a8))['then'](_0x552f8e[_0x53dd('0x149')](_0x58c2a8[_0x53dd('0x41')],_0x58c2a8[_0x53dd('0x166')],_0x58c2a8[_0x53dd('0x3d')],_0x58c2a8))[_0x53dd('0xb8')](_0x552f8e[_0x53dd('0x163')](_0x58c2a8))[_0x53dd('0xb0')](loggerCatchQueueSummary(_0x53dd('0x169'),_0x58c2a8));}else{notSendMessagesCampaign(_0x58c2a8);}}}};function getCallerIdRandom(_0x34cc96,_0x207ce1){var _0x4539f4;var _0x2fff29;var _0x25412c;if(_0x207ce1<=0x0){_0x207ce1=0x1;}_0x4539f4=new RegExp(_0x53dd('0x16a')+_0x207ce1+'}$');_0x2fff29=Math[_0x53dd('0x16b')](0xa,_0x207ce1-0x1);_0x25412c=Math['pow'](0xa,_0x207ce1)-0x1;return util[_0x53dd('0x78')]('%s',_['replace'](_0x34cc96,_0x4539f4,_[_0x53dd('0x16c')](_0x2fff29,_0x25412c)));}function extractCalleridName(_0x2d5c50){var _0x161308=_0x2d5c50[_0x53dd('0x16d')](/"(.*?)"/);return _0x161308?_0x161308[0x1]:_0x2d5c50;}function extractCalleridNumber(_0x362844){var _0x5c593b=_0x362844[_0x53dd('0x16d')](/<(.*?)>/);return _0x5c593b?_0x5c593b[0x1]:_0x362844;}Dialer[_0x53dd('0x1c')]['actionOriginate']=function(_0x256a5c,_0x438322){var _0x168cea=this;var _0x1b3727=uuid['v4']();this[_0x53dd('0x126')][_0x1b3727]=new Action(_0x256a5c,_0x438322,_0x1b3727);return new BPromise(function(_0x4e5c49,_0x4bc48e){if(_['isUndefined'](_0x256a5c)&&typeof _0x256a5c!=='object'){return _0x4bc48e(msgResponse(_0x53dd('0x16e'),'Failure',_0x53dd('0x16f')));}if(_[_0x53dd('0x86')](_0x438322['Contact'][_0x53dd('0x170')])||_0x438322[_0x53dd('0x171')][_0x53dd('0x170')]===null){return _0x4bc48e(msgResponse('originate',_0x53dd('0x14a'),_0x53dd('0x172')));}var _0x16211e={'XMD-CALLERID':_0x168cea[_0x53dd('0x126')][_0x1b3727]['getCaller'](),'XMD-AGI':_0x256a5c[_0x53dd('0x109')]?util[_0x53dd('0x78')](_0x53dd('0x173'),ipAgi,_0x256a5c[_0x53dd('0x109')]):'NONE','XMD-AGIAFTER':_0x256a5c[_0x53dd('0x10e')]?util[_0x53dd('0x78')](_0x53dd('0x173'),ipAgi,_0x256a5c[_0x53dd('0x10e')]):_0x53dd('0x174'),'XMD-QUEUE':_0x256a5c[_0x53dd('0x4a')]==='outbound'?util[_0x53dd('0x78')]('\x22%s,%s%s,,,%s\x22',_0x256a5c[_0x53dd('0x3d')],_0x256a5c[_0x53dd('0x175')]||'',_0x256a5c[_0x53dd('0x10f')]?'c':'',_0x256a5c[_0x53dd('0x116')]||0x3):_0x53dd('0x174'),'XMD-CONTACTID':_0x438322['ContactId'],'XMD-CDRTYPE':_0x53dd('0x9'),'CALLERID(all)':_0x168cea[_0x53dd('0x126')][_0x1b3727][_0x53dd('0x176')](),'XMD-AMD':_0x256a5c[_0x53dd('0xe6')]?'ACTIVE':_0x53dd('0x174'),'XMD-DESTINATION':_0x53dd('0x177')};if(_0x256a5c[_0x53dd('0xe6')]){_0x16211e[_0x53dd('0x178')]=_0x256a5c[_0x53dd('0x179')]||0x9c4;_0x16211e[_0x53dd('0x17a')]=_0x256a5c[_0x53dd('0x17b')]||0x5dc;_0x16211e['XMD-AMDAFTERGREETINGSILENCE']=_0x256a5c[_0x53dd('0x17c')]||0x320;_0x16211e[_0x53dd('0x17d')]=_0x256a5c['dialAMDTotalAnalysisTime']||0x1388;_0x16211e[_0x53dd('0x17e')]=_0x256a5c[_0x53dd('0x17f')]||0x64;_0x16211e[_0x53dd('0x180')]=_0x256a5c[_0x53dd('0x181')]||0x32;_0x16211e['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x256a5c['dialAMDMaximumNumberOfWords']||0x3;_0x16211e[_0x53dd('0x182')]=_0x256a5c[_0x53dd('0x183')]||0x100;_0x16211e['XMD-AMDMAXIMUMWORDLENGTH']=_0x256a5c[_0x53dd('0x184')]||0x1388;}if(_0x256a5c[_0x53dd('0x4a')]===_0x53dd('0x92')){_0x16211e[_0x53dd('0x185')]=_0x438322[_0x53dd('0xd6')];}else{_0x16211e['XMD-CAMPAIGNID']=_0x438322[_0x53dd('0xd7')];}for(var _0x12d55c in _0x438322[_0x53dd('0x171')]){if(typeof _0x438322[_0x53dd('0x171')][_0x12d55c]!==_0x53dd('0x98')){if(isNotNull(_0x438322[_0x53dd('0x171')][_0x12d55c])&&_0x12d55c!=='id'&&_0x12d55c!==_0x53dd('0x186')&&_0x12d55c!==_0x53dd('0x187')&&_0x12d55c!==_0x53dd('0x188')){_0x16211e[util[_0x53dd('0x78')](_0x53dd('0x189'),'XMD-',_['toUpper'](_0x12d55c))]=_0x438322[_0x53dd('0x171')][_0x12d55c];}}}var _0x237a35=_0x168cea[_0x53dd('0xdb')](_0x256a5c[_0x53dd('0x76')])?getCallerId(_0x256a5c[_0x53dd('0x76')][_0x53dd('0x77')],_0x256a5c[_0x53dd('0x57')],_0x256a5c[_0x53dd('0x18a')]>0x0?getCallerIdRandom(_0x256a5c[_0x53dd('0x58')],_0x256a5c[_0x53dd('0x18a')]):_0x256a5c[_0x53dd('0x58')]):getCallerId(_['isNil'](_0x256a5c[_0x53dd('0x144')])?_0x256a5c[_0x53dd('0x76')][_0x53dd('0x77')]:_0x256a5c[_0x53dd('0x144')]['callerid'],_0x256a5c[_0x53dd('0x57')],_0x256a5c[_0x53dd('0x18a')]>0x0?getCallerIdRandom(_0x256a5c[_0x53dd('0x58')],_0x256a5c[_0x53dd('0x18a')]):_0x256a5c[_0x53dd('0x58')]);if(_0x237a35){_0x16211e[_0x53dd('0x18b')]=_0x168cea[_0x53dd('0x126')][_0x1b3727]['originatecalleridname']=extractCalleridName(_0x237a35);_0x16211e[_0x53dd('0x18c')]=_0x168cea[_0x53dd('0x126')][_0x1b3727][_0x53dd('0x18d')]=extractCalleridNumber(_0x237a35);}return ami['Action']({'actionid':_0x1b3727,'action':_0x53dd('0x16e'),'channel':_0x168cea['isTrunkReachable'](_0x256a5c['Trunk'])?util[_0x53dd('0x78')](_0x53dd('0x18e'),_0x256a5c[_0x53dd('0x76')][_0x53dd('0x3d')],isNotNull(_0x256a5c[_0x53dd('0x5a')])?_0x256a5c[_0x53dd('0x5a')]['trim']()||'':'',_0x256a5c[_0x53dd('0x18f')]>0x0?_0x438322['Contact'][_0x53dd('0x170')][_0x53dd('0x190')](_0x256a5c['dialCutDigit']):_0x438322[_0x53dd('0x171')][_0x53dd('0x170')]):util[_0x53dd('0x78')](_0x53dd('0x18e'),_[_0x53dd('0xac')](_0x256a5c[_0x53dd('0x144')])?_0x256a5c[_0x53dd('0x76')]['name']:_0x256a5c['TrunkBackup'][_0x53dd('0x3d')],isNotNull(_0x256a5c[_0x53dd('0x5a')])?_0x256a5c['dialPrefix'][_0x53dd('0x191')]()||'':'',_0x256a5c['dialCutDigit']>0x0?_0x438322[_0x53dd('0x171')][_0x53dd('0x170')]['substring'](_0x256a5c[_0x53dd('0x18f')]):_0x438322[_0x53dd('0x171')][_0x53dd('0x170')]),'callerid':_0x237a35,'Exten':_0x53dd('0x177'),'Context':_0x53dd('0x192'),'Priority':'1','variable':_0x16211e,'timeout':(_0x256a5c[_0x53dd('0x59')]||0x1e)*0x3e8,'async':!![],'channelid':_0x1b3727})[_0x53dd('0xb8')](function(_0x325bc8){return _0x4e5c49(_0x325bc8);})[_0x53dd('0xb0')](function(_0x22e748){_0x256a5c['outboundOriginateFailureCallsDay']+=0x1;var _0x227886=new History(_0x168cea['actions'][_0x1b3727]);logger[_0x53dd('0x96')](util['format']('[originateError]:\x20%s',JSON[_0x53dd('0x46')](_0x22e748)));_0x227886[_0x53dd('0xa6')]=0xe;_0x227886['statedesc']=_0x53dd('0x193');_0x227886[_0x53dd('0xa8')]=moment()[_0x53dd('0x78')](_0x53dd('0xff'));_0x227886['endtime']=_0x227886[_0x53dd('0xa8')];_0x168cea[_0x53dd('0xcb')](_0x227886)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x194')));_0x168cea[_0x53dd('0xca')](_0x227886)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x194')))[_0x53dd('0x1e')](function(){delete _0x168cea[_0x53dd('0x126')][_0x1b3727];return _0x4bc48e(msgResponse(_0x53dd('0x16e'),_0x53dd('0x45'),_0x53dd('0x195')));});});});};Dialer[_0x53dd('0x1c')][_0x53dd('0x2e')]=function(_0x324994){var _0x59846e=this[_0x53dd('0x126')][_0x324994['actionid']];if(_0x59846e){delete this[_0x53dd('0x126')][_0x324994['actionid']];_0x59846e[_0x53dd('0x115')]=moment()['format'](_0x53dd('0xff'));var _0x34c0a8=_0x59846e['type']===_0x53dd('0x7a')?this[_0x53dd('0x21')][_0x59846e[_0x53dd('0xb2')]]:this[_0x53dd('0xe8')][_0x59846e[_0x53dd('0x196')]()];if(!this[_0x53dd('0xda')](_0x324994[_0x53dd('0x197')])){this[_0x53dd('0xb4')](_0x34c0a8);return this[_0x53dd('0x198')](_0x59846e,_0x34c0a8,_0x324994)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x199')));}this[_0x53dd('0xaa')][_0x324994[_0x53dd('0xe2')]]=_0x59846e;}};Dialer['prototype'][_0x53dd('0x19a')]=function(_0x45ca17,_0x193113,_0xe5e806){var _0xe83b99=new History(_0x193113);if(_0xe83b99[_0x53dd('0xf6')]+_0xe83b99[_0x53dd('0xf7')]+_0xe83b99['countnoanswerretry']+_0xe83b99['countnosuchnumberretry']+_0xe83b99[_0x53dd('0x104')]+_0xe83b99[_0x53dd('0xf8')]+_0xe83b99[_0x53dd('0xf4')]+_0xe83b99[_0x53dd('0xf9')]>=_0xe5e806[_0x53dd('0x105')]-0x1){return!![];}switch(_0x45ca17){case 0x3:if(_0xe83b99[_0x53dd('0x102')]>=_0xe5e806[_0x53dd('0x19b')]-0x1){return!![];}this[_0x53dd('0xc0')]({'active':![],'countnoanswerretry':_0xe83b99['countnoanswerretry']+=0x1,'scheduledat':moment()['add'](_0xe5e806[_0x53dd('0x19c')],'minutes')[_0x53dd('0x78')](_0x53dd('0xff')),'ContactId':_0xe83b99[_0x53dd('0xd3')],'ListId':_0xe83b99['ListId'],'VoiceQueueId':_0xe83b99[_0x53dd('0xd6')]||undefined,'CampaignId':_0xe83b99[_0x53dd('0xd7')]||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x19d')));break;case 0x5:if(_0xe83b99[_0x53dd('0xf6')]>=_0xe5e806['dialBusyMaxRetry']-0x1){return!![];}this[_0x53dd('0xc0')]({'active':![],'countbusyretry':_0xe83b99[_0x53dd('0xf6')]+=0x1,'scheduledat':moment()[_0x53dd('0x11c')](_0xe5e806[_0x53dd('0x19e')],_0x53dd('0x123'))[_0x53dd('0x78')](_0x53dd('0xff')),'ContactId':_0xe83b99[_0x53dd('0xd3')],'ListId':_0xe83b99[_0x53dd('0xd4')],'VoiceQueueId':_0xe83b99[_0x53dd('0xd6')]||undefined,'CampaignId':_0xe83b99['CampaignId']||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x19f')));break;case 0x8:if(_0xe83b99['countcongestionretry']>=_0xe5e806[_0x53dd('0x1a0')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countcongestionretry':_0xe83b99['countcongestionretry']+=0x1,'scheduledat':moment()[_0x53dd('0x11c')](_0xe5e806['dialCongestionRetryFrequency'],_0x53dd('0x123'))[_0x53dd('0x78')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0xe83b99['ContactId'],'ListId':_0xe83b99[_0x53dd('0xd4')],'VoiceQueueId':_0xe83b99['VoiceQueueId']||undefined,'CampaignId':_0xe83b99[_0x53dd('0xd7')]||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x1a1')));break;case 0x0:if(_0xe83b99['countnosuchnumberretry']>=_0xe5e806['dialNoSuchNumberMaxRetry']-0x1){return!![];}else{this['rescheduleContact']({'active':![],'countnosuchnumberretry':_0xe83b99[_0x53dd('0x103')]+=0x1,'scheduledat':moment()[_0x53dd('0x11c')](_0xe5e806[_0x53dd('0x1a2')],_0x53dd('0x123'))[_0x53dd('0x78')](_0x53dd('0xff')),'ContactId':_0xe83b99[_0x53dd('0xd3')],'ListId':_0xe83b99[_0x53dd('0xd4')],'VoiceQueueId':_0xe83b99[_0x53dd('0xd6')]||undefined,'CampaignId':_0xe83b99['CampaignId']||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x1a3')));}break;case 0xa:if(_0xe83b99[_0x53dd('0x104')]>=_0xe5e806[_0x53dd('0x11b')]-0x1){return!![];}this[_0x53dd('0xc0')]({'active':![],'countdropretry':_0xe83b99[_0x53dd('0x104')]+=0x1,'scheduledat':moment()[_0x53dd('0x11c')](_0xe5e806[_0x53dd('0x11d')],_0x53dd('0x123'))[_0x53dd('0x78')](_0x53dd('0xff')),'ContactId':_0xe83b99[_0x53dd('0xd3')],'ListId':_0xe83b99[_0x53dd('0xd4')],'VoiceQueueId':_0xe83b99['VoiceQueueId']||undefined,'CampaignId':_0xe83b99['CampaignId']||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x1a4')));break;case 0xb:if(_0xe83b99[_0x53dd('0xf8')]>=_0xe5e806[_0x53dd('0x1a5')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0xe83b99[_0x53dd('0xf8')]+=0x1,'scheduledat':moment()['add'](_0xe5e806[_0x53dd('0x122')],_0x53dd('0x123'))[_0x53dd('0x78')](_0x53dd('0xff')),'ContactId':_0xe83b99[_0x53dd('0xd3')],'ListId':_0xe83b99[_0x53dd('0xd4')],'VoiceQueueId':_0xe83b99[_0x53dd('0xd6')]||undefined,'CampaignId':_0xe83b99[_0x53dd('0xd7')]||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x124')));break;case 0x13:if(_0xe83b99['countmachineretry']>=_0xe5e806['dialMachineMaxRetry']-0x1){return!![];}this[_0x53dd('0xc0')]({'active':![],'countmachineretry':_0xe83b99[_0x53dd('0xf4')]+=0x1,'scheduledat':moment()[_0x53dd('0x11c')](_0xe5e806['dialMachineRetryFrequency'],'minutes')[_0x53dd('0x78')](_0x53dd('0xff')),'ContactId':_0xe83b99[_0x53dd('0xd3')],'ListId':_0xe83b99[_0x53dd('0xd4')],'VoiceQueueId':_0xe83b99['VoiceQueueId']||undefined,'CampaignId':_0xe83b99['CampaignId']||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x106')));break;case 0x14:if(_0xe83b99[_0x53dd('0xf9')]>=_0xe5e806[_0x53dd('0x1a6')]-0x1){return!![];}this[_0x53dd('0xc0')]({'active':![],'countagentrejectretry':_0xe83b99[_0x53dd('0xf9')]+=0x1,'scheduledat':moment()['add'](_0xe5e806[_0x53dd('0x1a7')],_0x53dd('0x123'))[_0x53dd('0x78')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0xe83b99[_0x53dd('0xd3')],'ListId':_0xe83b99[_0x53dd('0xd4')],'VoiceQueueId':_0xe83b99[_0x53dd('0xd6')]||undefined,'CampaignId':_0xe83b99[_0x53dd('0xd7')]||undefined})[_0x53dd('0xb0')](loggerCatch('[rescheduleContact][AgentReject]'));break;default:return!![];}};Dialer[_0x53dd('0x1c')][_0x53dd('0x198')]=function(_0x3a2e38,_0x4f7df1,_0xb9e086){var _0x38a5a9=this;var _0x54e7b9=new History(_0x3a2e38);return new BPromise(function(_0x5851b9,_0x58caeb){if(_[_0x53dd('0x86')](_0x4f7df1)&&typeof _0x4f7df1!==_0x53dd('0x1a8')){return _0x58caeb(msgResponse(_0x53dd('0x1a9'),_0x53dd('0x14a'),_0x53dd('0x1aa')));}if(_['isUndefined'](_0xb9e086)&&typeof _0xb9e086!==_0x53dd('0x1a8')){return _0x58caeb(msgResponse(_0x53dd('0x1a9'),_0x53dd('0x14a'),_0x53dd('0x1ab')));}switch(_0xb9e086['reason']){case'0':_0x4f7df1['outboundNoSuchCallsDay']+=0x1;_0x54e7b9['state']=0x0;_0x54e7b9[_0x53dd('0xe9')]=_0x53dd('0x1ac');_0x54e7b9[_0x53dd('0x103')]+=0x1;_0x54e7b9[_0x53dd('0xf5')]+=0x1;ami[_0x53dd('0x49')](_0x53dd('0x1ad'),ut[_0x53dd('0xee')](_0x3a2e38,_0x53dd('0x1ae')));_0x38a5a9[_0x53dd('0xcb')](_0x54e7b9)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x1af')));if(_0x38a5a9[_0x53dd('0x19a')](0x0,_0x3a2e38,_0x4f7df1)){if(_0x54e7b9['countnosuchnumberretry']>=_0x4f7df1[_0x53dd('0x1b0')]){_0x38a5a9[_0x53dd('0xfd')](_0x54e7b9,_0x5851b9,_0x58caeb,_0x53dd('0x1b1'));}else{_0x38a5a9[_0x53dd('0xfa')](_0x54e7b9,_0x5851b9,_0x58caeb,_0x53dd('0x1b1'));}}break;case'3':_0x4f7df1['outboundNoAnswerCallsDay']+=0x1;_0x54e7b9[_0x53dd('0xa6')]=0x3;_0x54e7b9['statedesc']='NoAnswer';_0x54e7b9[_0x53dd('0x102')]+=0x1;_0x54e7b9[_0x53dd('0xf5')]+=0x1;ami[_0x53dd('0x49')](_0x53dd('0x1b2'),ut['buildObj'](_0x3a2e38,_0x53dd('0x1b3')));_0x38a5a9[_0x53dd('0xcb')](_0x54e7b9)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x1b4')));if(_0x38a5a9[_0x53dd('0x19a')](0x3,_0x3a2e38,_0x4f7df1)){if(_0x54e7b9['countnoanswerretry']>=_0x4f7df1['dialNoAnswerMaxRetry']){_0x38a5a9[_0x53dd('0xfd')](_0x54e7b9,_0x5851b9,_0x58caeb,_0x53dd('0x1b5'));}else{_0x38a5a9[_0x53dd('0xfa')](_0x54e7b9,_0x5851b9,_0x58caeb,_0x53dd('0x1b5'));}}break;case'5':_0x4f7df1[_0x53dd('0x5e')]+=0x1;_0x54e7b9['state']=0x5;_0x54e7b9[_0x53dd('0xe9')]=_0x53dd('0x1b6');_0x54e7b9[_0x53dd('0xf6')]+=0x1;_0x54e7b9[_0x53dd('0xf5')]+=0x1;ami['emit']('custom:agentbusy',ut['buildObj'](_0x3a2e38,'busy'));_0x38a5a9[_0x53dd('0xcb')](_0x54e7b9)[_0x53dd('0xb0')](loggerCatch('[syncAgentComplete][createHistory][5]'));if(_0x38a5a9[_0x53dd('0x19a')](0x5,_0x3a2e38,_0x4f7df1)){if(_0x54e7b9[_0x53dd('0xf6')]>=_0x4f7df1[_0x53dd('0x1b7')]){_0x38a5a9['createStateFinal'](_0x54e7b9,_0x5851b9,_0x58caeb,_0x53dd('0x1b8'));}else{_0x38a5a9[_0x53dd('0xfa')](_0x54e7b9,_0x5851b9,_0x58caeb,'reason\x205\x20busy');}}break;case'8':_0x4f7df1[_0x53dd('0x5f')]+=0x1;_0x54e7b9[_0x53dd('0xa6')]=0x8;_0x54e7b9['statedesc']=_0x53dd('0x1b9');_0x54e7b9[_0x53dd('0xf7')]+=0x1;_0x54e7b9[_0x53dd('0xf5')]+=0x1;ami[_0x53dd('0x49')]('custom:agentcongestion',ut[_0x53dd('0xee')](_0x3a2e38,_0x53dd('0x1ba')));_0x38a5a9[_0x53dd('0xcb')](_0x54e7b9)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x1bb')));if(_0x38a5a9[_0x53dd('0x19a')](0x8,_0x3a2e38,_0x4f7df1)){if(_0x54e7b9['countcongestionretry']>=_0x4f7df1[_0x53dd('0x1a0')]){_0x38a5a9['createStateFinal'](_0x54e7b9,_0x5851b9,_0x58caeb,'reason\x208\x20congestion');}else{_0x38a5a9[_0x53dd('0xfa')](_0x54e7b9,_0x5851b9,_0x58caeb,'reason\x208\x20congestion');}}break;case'11':_0x4f7df1[_0x53dd('0x1bc')]+=0x1;_0x54e7b9[_0x53dd('0xa6')]=0xb;_0x54e7b9[_0x53dd('0xe9')]='Abandoned';_0x54e7b9['countabandonedretry']+=0x1;_0x54e7b9['countglobal']+=0x1;_0x38a5a9[_0x53dd('0xcb')](_0x54e7b9)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x125')));if(_0x38a5a9['checkRetriveMax'](0xb,_0x3a2e38,_0x4f7df1)){if(_0x54e7b9[_0x53dd('0xf8')]>=_0x4f7df1[_0x53dd('0x1a5')]){_0x38a5a9[_0x53dd('0xfd')](_0x54e7b9,_0x5851b9,_0x58caeb,_0x53dd('0x1bd'));}else{_0x38a5a9['stateGlobal'](_0x54e7b9,_0x5851b9,_0x58caeb,_0x53dd('0x1bd'));}}break;case'20':_0x4f7df1[_0x53dd('0x67')]+=0x1;_0x54e7b9['state']=0x14;_0x54e7b9[_0x53dd('0xe9')]=_0x53dd('0x1be');_0x54e7b9['countagentrejectretry']+=0x1;_0x54e7b9['countglobal']+=0x1;ami['emit']('custom:agentreject',ut[_0x53dd('0xee')](_0x3a2e38,'agentreject'));_0x38a5a9[_0x53dd('0xcb')](_0x54e7b9)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x1bf')));if(_0x38a5a9[_0x53dd('0x19a')](0x14,_0x3a2e38,_0x4f7df1)){if(_0x54e7b9[_0x53dd('0xf9')]>=_0x4f7df1[_0x53dd('0x1a6')]){_0x38a5a9[_0x53dd('0xfd')](_0x54e7b9,_0x5851b9,_0x58caeb,_0x53dd('0x1c0'));}else{_0x38a5a9[_0x53dd('0xfa')](_0x54e7b9,_0x5851b9,_0x58caeb,_0x53dd('0x1c0'));}}break;default:_0x4f7df1[_0x53dd('0x68')]+=0x1;_0x54e7b9[_0x53dd('0xa6')]=0xc;_0x54e7b9[_0x53dd('0xe9')]=_0xb9e086[_0x53dd('0x1c1')];_0x38a5a9['createHistory'](_0x54e7b9)['catch'](loggerCatch('[syncAgentComplete][createHistory][?]'));if(_0x38a5a9[_0x53dd('0x19a')](_0xb9e086[_0x53dd('0x1c1')],_0x3a2e38,_0x4f7df1)){if(_0x54e7b9[_0x53dd('0xf6')]+_0x54e7b9[_0x53dd('0xf7')]+_0x54e7b9[_0x53dd('0x102')]+_0x54e7b9[_0x53dd('0x103')]+_0x54e7b9[_0x53dd('0x104')]+_0x54e7b9[_0x53dd('0xf8')]+_0x54e7b9[_0x53dd('0xf4')]+_0x54e7b9['countagentrejectretry']>=_0x4f7df1[_0x53dd('0x105')]){_0x38a5a9['stateGlobal'](_0x54e7b9,_0x5851b9,_0x58caeb,_0xb9e086[_0x53dd('0x1c1')]);}else{_0x38a5a9['createStateFinal'](_0x54e7b9,_0x5851b9,_0x58caeb,_0xb9e086[_0x53dd('0x1c1')]);}}}});};Dialer[_0x53dd('0x1c')][_0x53dd('0xfa')]=function(_0x126530,_0x4b96d0,_0xf96b76,_0x1b2a51){var _0x4e8a90=new Final(_0x126530);_0x4e8a90[_0x53dd('0xa6')]=0xf;_0x4e8a90['statedesc']='Global';this[_0x53dd('0xfd')](_0x4e8a90,_0x4b96d0,_0xf96b76,_0x1b2a51);};Dialer[_0x53dd('0x1c')]['createStateFinal']=function(_0x2a0a57,_0x206aa3,_0x43f698,_0x5da070){this[_0x53dd('0xca')](_0x2a0a57)[_0x53dd('0xb8')](function(){return _0x206aa3(msgResponse(_0x53dd('0x1a9'),_0x53dd('0x1c2'),_0x5da070));})['catch'](function(){return _0x43f698(msgResponse(_0x53dd('0x1c3'),_0x53dd('0x14a'),'contact\x20not\x20moved'));});};Dialer['prototype'][_0x53dd('0xb')]=function(_0x2c6d1e){var _0xf07e4f=_0x2c6d1e[_0x53dd('0x1c4')]/0x64;var _0x174b47=_0x2c6d1e[_0x53dd('0x62')]/(_0x2c6d1e[_0x53dd('0x62')]+_0x2c6d1e[_0x53dd('0x5c')]);var _0x21998a=Math[_0x53dd('0x1c5')](_0x2c6d1e[_0x53dd('0x72')]*(_0x2c6d1e[_0x53dd('0x1c6')]/0x64));var _0x47bb16=Math[_0x53dd('0x1c5')](_0x2c6d1e[_0x53dd('0x72')]*(_0x2c6d1e[_0x53dd('0x1c7')]/0x64));var _0x2d2f15=_0x2c6d1e[_0x53dd('0x4d')]+_0x2c6d1e[_0x53dd('0x52')];var _0x31f5f2=Math['floor'](_0x2c6d1e['erlangCalls']*_0x2c6d1e['erlangAbandonmentRate']*_0x2c6d1e['predictiveIntervalHitRate']*_0x2c6d1e['predictiveIntervalMultiplicativeFactor']);if(_[_0x53dd('0x86')](_0x2c6d1e[_0x53dd('0x26')])){if(!_['isUndefined'](_0x2c6d1e[_0x53dd('0x25')])){_0x2c6d1e[_0x53dd('0x25')]=undefined;loggerPredictive[_0x53dd('0x96')](_0x53dd('0x1c8'),_0x53dd('0x1c9'));}if(!_[_0x53dd('0x86')](_0x2c6d1e[_0x53dd('0x91')])){loggerPredictive[_0x53dd('0x96')](_0x53dd('0x1c8'),_0x53dd('0x1ca'));clearInterval(_0x2c6d1e[_0x53dd('0x91')]);_0x2c6d1e[_0x53dd('0x91')]=undefined;}_0x2c6d1e[_0x53dd('0x26')]=moment()[_0x53dd('0x78')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x53dd('0x7b')](_0x2c6d1e[_0x53dd('0x3d')],_0x53dd('0x1cb'),_0x2c6d1e['startProgressive']);this['handlePower'](_0x2c6d1e,0x1);}else if(ifInterval(_0x2c6d1e[_0x53dd('0x1cc')],_0x2c6d1e[_0x53dd('0x26')])){this[_0x53dd('0x15f')](_0x2c6d1e,0x1);loggerPredictiveCalls[_0x53dd('0x7b')](_0x53dd('0x1cd'),_0x2c6d1e[_0x53dd('0x26')],_0x2c6d1e[_0x53dd('0x3d')]);_0x2c6d1e[_0x53dd('0x8b')]=0x0;_0x2c6d1e[_0x53dd('0x6e')]=0x0;}else if(_0xf07e4f<_0x174b47&&_0x2c6d1e['dialPredictiveOptimization']==='dropRate'){freeVariablesPredictive(_0x2c6d1e);loggerPredictive[_0x53dd('0x7b')]('[stopMethodPredictive][ReStartProgressive][ExceededDropDay]',_0x53dd('0x1ce'),_0x174b47,'startProgressive',_0x2c6d1e['name']);}else if(_0x31f5f2<_0x2c6d1e[_0x53dd('0x6e')]&&_0x2c6d1e[_0x53dd('0x1cf')]===_0x53dd('0x1d0')){freeVariablesPredictive(_0x2c6d1e);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x1d1'),_0x53dd('0x1d2'),_0x31f5f2,_0x53dd('0x1d3'),_0x2c6d1e[_0x53dd('0x6e')],_0x53dd('0x26'),_0x2c6d1e[_0x53dd('0x3d')]);}else if(!ifInterval(_0x2c6d1e[_0x53dd('0x1cc')],_0x2c6d1e[_0x53dd('0x26')])&&_['isUndefined'](_0x2c6d1e['startPredictive'])&&!_[_0x53dd('0x86')](_0x2c6d1e['startProgressive'])){_0x2c6d1e[_0x53dd('0x25')]=moment()[_0x53dd('0x78')](_0x53dd('0xff'));loggerPredictive['info'](_0x2c6d1e[_0x53dd('0x3d')],_0x53dd('0x1d4'),_0x2c6d1e['startPredictive']);this[_0x53dd('0xbd')](_0x2c6d1e[_0x53dd('0x1cc')])['then'](this[_0x53dd('0x1d5')](_0x2c6d1e))[_0x53dd('0xb8')](mergeDataErlangB(_0x2c6d1e))[_0x53dd('0xb8')](this[_0x53dd('0x1d6')](_0x2c6d1e))['catch'](loggerCatchPredictive(_0x53dd('0x1d7'),_0x2c6d1e));}else if(!ifInterval(_0x2c6d1e[_0x53dd('0x1cc')],_0x2c6d1e[_0x53dd('0x25')])){_0x2c6d1e[_0x53dd('0x6e')]=0x0;_0x2c6d1e[_0x53dd('0x25')]=moment()['format'](_0x53dd('0xff'));loggerPredictive[_0x53dd('0x7b')](_0x2c6d1e[_0x53dd('0x3d')],_0x53dd('0x1d8'),_0x2c6d1e['startPredictive']);clearInterval(_0x2c6d1e[_0x53dd('0x91')]);_0x2c6d1e[_0x53dd('0x91')]=undefined;this[_0x53dd('0xbd')](_0x2c6d1e[_0x53dd('0x1cc')])[_0x53dd('0xb8')](this[_0x53dd('0x1d5')](_0x2c6d1e))[_0x53dd('0xb8')](mergeDataErlangB(_0x2c6d1e))[_0x53dd('0xb8')](this['startMethodPredictive'](_0x2c6d1e))[_0x53dd('0xb0')](loggerCatchPredictive(_0x53dd('0x1d9'),_0x2c6d1e));}else if(_0x2c6d1e[_0x53dd('0x72')]&&_0x2d2f15<_0x2c6d1e['predictiveIntervalAvailable']-_0x47bb16){freeVariablesPredictive(_0x2c6d1e);loggerPredictive[_0x53dd('0x7b')](_0x2c6d1e['name'],_0x53dd('0x1da'),_0x2d2f15,_0x53dd('0x1db'),_0x2c6d1e[_0x53dd('0x72')],'-',_0x47bb16,'=',_0x2c6d1e[_0x53dd('0x72')]-_0x47bb16,')');}else if(_0x2c6d1e[_0x53dd('0x72')]&&_0x2d2f15>_0x2c6d1e['predictiveIntervalAvailable']+_0x21998a){freeVariablesPredictive(_0x2c6d1e);loggerPredictive['info'](_0x2c6d1e[_0x53dd('0x3d')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x2d2f15,_0x53dd('0x1dc'),_0x2c6d1e[_0x53dd('0x72')],'+',_0x21998a,'=',_0x2c6d1e[_0x53dd('0x72')]+_0x21998a,')');}};Dialer[_0x53dd('0x1c')][_0x53dd('0x1d5')]=function(_0x27a199){var _0x534b1e=this;return function(_0x443152){return new BPromise(function(_0xe1248f,_0x18f143){_['merge'](_0x27a199,_0x443152[0x0]);if(checkGetDataPredictive(_0x443152[0x0])){var _0x556d66=_0x27a199[_0x53dd('0x72')]=_0x27a199['talking']+_0x27a199[_0x53dd('0x4d')];var _0x515655=_0x27a199[_0x53dd('0x1cc')]*0x3c;var _0x2be5db=_0x443152[0x0][_0x53dd('0x6b')]+_0x443152[0x0][_0x53dd('0x6a')];var _0x4b66fb=(_0x443152[0x0][_0x53dd('0x69')]+_0x443152[0x0][_0x53dd('0x6c')]+_0x443152[0x0][_0x53dd('0x82')])/_0x443152[0x0][_0x53dd('0x7e')];_0x27a199['predictiveIntervalHitRate']=_0x4b66fb>0x0?_0x4b66fb:0x1;switch(_0x27a199['dialPredictiveOptimization']){case _0x53dd('0x1d0'):var _0x367808=_0x27a199[_0x53dd('0x1c4')]/0x64;return _0x534b1e[_0x53dd('0x1dd')](_0x556d66,_0x515655,_0x2be5db,_0x4b66fb,_0x367808)[_0x53dd('0xb8')](function(_0x1435eb){return _0xe1248f(_0x1435eb);});case _0x53dd('0x1de'):var _0x351a8f=_0x27a199['dialPredictiveOptimizationPercentage']/0x64;return _0x534b1e[_0x53dd('0x1df')](_0x556d66,_0x515655,_0x2be5db,_0x4b66fb,_0x351a8f)[_0x53dd('0xb8')](function(_0x7b90e5){return _0xe1248f(_0x7b90e5);});default:return _0x18f143(msgResponse(_0x53dd('0x1e0'),_0x53dd('0x14a'),_0x53dd('0x1e1')));}}else{return _0x18f143(msgResponse(_0x53dd('0x1e0'),_0x53dd('0x14a'),_0x53dd('0x1e2')));}});};};Dialer[_0x53dd('0x1c')][_0x53dd('0x1e3')]=function(_0x16979e){var _0x168466=this;return function(_0x414163){return new BPromise(function(_0x39554a,_0x22cb75){_[_0x53dd('0x8e')](_0x16979e,_0x414163[0x0]);if(checkGetDataPredictive(_0x414163[0x0])){loggerPredictive[_0x53dd('0x7b')](JSON['stringify'](_0x414163[0x0]));if(_0x16979e['dialPredictiveOptimization']===_0x53dd('0x1d0')){return _0x168466[_0x53dd('0xc8')](_0x16979e['id'])[_0x53dd('0xb8')](function(_0x48d1ff){var _0x6e1e7b=_0x16979e[_0x53dd('0x4e')]-_0x48d1ff[0x0][_0x53dd('0x1e4')];var _0x41e59c=_0x16979e[_0x53dd('0x1cc')]*0x3c;var _0x275877=_0x414163[0x0][_0x53dd('0x6b')]+_0x414163[0x0][_0x53dd('0x6a')];var _0x137b4d=(_0x414163[0x0][_0x53dd('0x69')]+_0x414163[0x0][_0x53dd('0x6c')]+_0x414163[0x0][_0x53dd('0x82')])/_0x414163[0x0][_0x53dd('0x7e')];var _0x535c3e=_0x16979e['dialPredictiveOptimizationPercentage']/0x64;_0x16979e[_0x53dd('0x71')]=_0x48d1ff[0x0]['outboundQueuePauses']||0x0;_0x16979e[_0x53dd('0x6f')]=_0x137b4d>0x0?_0x137b4d:0x1;return _0x168466[_0x53dd('0x1dd')](_0x6e1e7b,_0x41e59c,_0x275877,_0x137b4d,_0x535c3e);})[_0x53dd('0xb8')](function(_0x215803){return _0x39554a(_0x215803);})[_0x53dd('0xb0')](function(_0x5a9149){return _0x22cb75(msgResponse(_0x53dd('0x1e5'),_0x53dd('0x14a'),JSON['stringify'](_0x5a9149)));});}if(_0x16979e[_0x53dd('0x1cf')]===_0x53dd('0x1de')){return _0x168466['getVoiceQueueRtPauses'](_0x16979e['id'])[_0x53dd('0xb8')](function(_0xf97f8){var _0x4bf7e2=_0x16979e[_0x53dd('0x4e')]-_0xf97f8[0x0]['outboundQueuePauses'];var _0x43577e=_0x16979e[_0x53dd('0x1cc')]*0x3c;var _0x5235df=_0x414163[0x0][_0x53dd('0x6b')]+_0x414163[0x0][_0x53dd('0x6a')];var _0x4cd7d6=(_0x414163[0x0]['predictiveIntervalAnsweredCalls']+_0x414163[0x0][_0x53dd('0x6c')]+_0x414163[0x0][_0x53dd('0x82')])/_0x414163[0x0][_0x53dd('0x7e')];var _0x35cef5=_0x16979e[_0x53dd('0x1c4')]/0x64;_0x16979e[_0x53dd('0x71')]=_0xf97f8[0x0]['outboundQueuePauses']||0x0;_0x16979e[_0x53dd('0x6f')]=_0x4cd7d6>0x0?_0x4cd7d6:0x1;return _0x168466[_0x53dd('0x1df')](_0x4bf7e2,_0x43577e,_0x5235df,_0x4cd7d6,_0x35cef5);})[_0x53dd('0xb8')](function(_0x3e5382){return _0x39554a(_0x3e5382);})['catch'](function(_0x242e8b){return _0x22cb75(msgResponse(_0x53dd('0x1e5'),_0x53dd('0x14a'),JSON[_0x53dd('0x46')](_0x242e8b)));});}}else{return _0x22cb75(msgResponse(_0x53dd('0x1e0'),_0x53dd('0x14a'),_0x53dd('0x1e2')));}});};};Dialer[_0x53dd('0x1c')][_0x53dd('0x1d6')]=function(_0x186b58){var _0x42b2c0=this;return function(){var _0x23d518=0x0;var _0xcf373e=Math[_0x53dd('0x1e6')](_0x186b58[_0x53dd('0x74')]*0x3e8);if(_0xcf373e>0x0){_0xcf373e=_0xcf373e<0x64?0x64:_0xcf373e;loggerPredictive[_0x53dd('0x7b')](_0x186b58[_0x53dd('0x3d')],_0x53dd('0x1e7'),_0xcf373e,_0x53dd('0x47'));_0x186b58[_0x53dd('0x91')]=setInterval(function(){_0x42b2c0['handlePredictive'](_0x186b58);loggerPredictiveCalls[_0x53dd('0x7b')]('[handlePredictive]',_0x23d518+=0x1);},_0xcf373e);}else{loggerPredictive[_0x53dd('0x7b')](_0x186b58['name'],_0x53dd('0x1e8'));}};};Dialer[_0x53dd('0x1c')][_0x53dd('0x1e9')]=function(_0xb9eab8,_0x4ae1ec){var _0x1ad5e4=this;return function(_0x42fdf3){if(_[_0x53dd('0x42')](_0x42fdf3)){if(_[_0x53dd('0xac')](_0x4ae1ec['UserId'])||!_0x4ae1ec[_0x53dd('0x1ea')]){if(_0xb9eab8[_0x53dd('0x56')]===_0x53dd('0xa')){_0xb9eab8[_0x53dd('0x130')]=_['isUndefined'](_0xb9eab8['queueStatusComplete'])?!![]:_0xb9eab8[_0x53dd('0x130')];var _0x587048=uuid['v4']();_0x1ad5e4[_0x53dd('0x126')][_0x587048]=new Action(_0xb9eab8,_0x4ae1ec,_0x587048);loggerBooked['info'](_0x53dd('0x1eb'),_0x587048,_0x53dd('0x1ec'),JSON[_0x53dd('0x46')](_0xb9eab8[_0x53dd('0x130')]),_0x53dd('0x1ed'),_0xb9eab8['name']);if(_0xb9eab8['queueStatusComplete']){_0xb9eab8[_0x53dd('0x130')]=![];_0x1ad5e4[_0x53dd('0x28')][_0x1ad5e4[_0x53dd('0x126')][_0x587048][_0x53dd('0xb2')]]=[];ami[_0x53dd('0xad')]({'actionid':_0x587048,'action':_0x53dd('0x1ee'),'queue':_0xb9eab8[_0x53dd('0x3d')]})[_0x53dd('0xb0')](function(){_0x1ad5e4['updateOriginated'](_0xb9eab8);_0x1ad5e4[_0x53dd('0xc0')]({'active':![],'ContactId':_0x1ad5e4['actions'][_0x587048][_0x53dd('0xd3')],'ListId':_0x1ad5e4[_0x53dd('0x126')][_0x587048]['ListId'],'VoiceQueueId':_0x1ad5e4[_0x53dd('0x126')][_0x587048]['VoiceQueueId']||undefined,'CampaignId':_0x1ad5e4[_0x53dd('0x126')][_0x587048]['CampaignId']||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x1ef')));delete _0x1ad5e4[_0x53dd('0x126')][_0x587048];});}else{loggerBooked[_0x53dd('0x7b')]('[booked][checkContactBlack][else]',JSON[_0x53dd('0x46')](_0xb9eab8[_0x53dd('0x130')]),'Queue:\x20',_0xb9eab8[_0x53dd('0x3d')]);_0x1ad5e4['updateOriginated'](_0xb9eab8);_0x1ad5e4[_0x53dd('0xc0')]({'active':![],'ContactId':_0x1ad5e4[_0x53dd('0x126')][_0x587048]['ContactId'],'ListId':_0x1ad5e4[_0x53dd('0x126')][_0x587048][_0x53dd('0xd4')],'VoiceQueueId':_0x1ad5e4['actions'][_0x587048][_0x53dd('0xd6')]||undefined,'CampaignId':_0x1ad5e4[_0x53dd('0x126')][_0x587048]['CampaignId']||undefined})[_0x53dd('0xb0')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x1ad5e4['actions'][_0x587048];}}else{return _0x1ad5e4[_0x53dd('0x1f0')](_0xb9eab8,_0x4ae1ec);}}else{if(getDiff(_0x4ae1ec[_0x53dd('0x1f1')])<_0xb9eab8['dialRecallMeTimeout']*0x3c){if(_0x4ae1ec['Agent']&&!_0x4ae1ec[_0x53dd('0x1f2')][_0x53dd('0x1f3')]){_0x1ad5e4[_0x53dd('0x20')][_0x53dd('0x133')](_0x4ae1ec['id'])[_0x53dd('0x1e')](function(){_0x1ad5e4[_0x53dd('0xb4')](_0xb9eab8);});}else{_0x1ad5e4[_0x53dd('0xc1')]({'active':![]},_0x4ae1ec['id'],0x1)['finally'](function(){_0x1ad5e4[_0x53dd('0xb4')](_0xb9eab8);});}}else{_0xb9eab8[_0x53dd('0x66')]+=0x1;_0x1ad5e4[_0x53dd('0xb4')](_0xb9eab8);if(_0xb9eab8['dialRecallInQueue']){_0x1ad5e4['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0x4ae1ec['ContactId'],'ListId':_0x4ae1ec['ListId'],'VoiceQueueId':_0x4ae1ec[_0x53dd('0xd6')]||undefined,'CampaignId':_0x4ae1ec['CampaignId']||undefined})['catch'](loggerCatch(_0x53dd('0x1f4')));_0x1ad5e4[_0x53dd('0xcb')](createObjHistory(_0xb9eab8,_0x4ae1ec,_0x53dd('0x1f5'),0x17,'RecallInQueue'))[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x1f6')));}else{_0x1ad5e4['saveInDb'](createObjHistory(_0xb9eab8,_0x4ae1ec,_0x53dd('0x1f7'),0x16,_0x53dd('0x1f8')),_0x53dd('0x1f9'),_0x53dd('0x1fa'));}}}}else{_0xb9eab8['outboundBlacklistCallsDay']+=0x1;_0x1ad5e4[_0x53dd('0xe0')](createObjHistory(_0xb9eab8,_0x4ae1ec,'BLACKLIST',0xd,_0x53dd('0x1fb')),_0x53dd('0x1fc'),_0x53dd('0x1fd'));throw _0x53dd('0x1fe');}};};Dialer[_0x53dd('0x1c')]['handleIvr']=function(_0x42ca0f){var _0xe558a0=this;var _0x292d6e=_0x42ca0f[_0x53dd('0x1ff')]-_0x42ca0f[_0x53dd('0x73')]-_0x42ca0f[_0x53dd('0xc4')];emitCampaignSummary(_0x42ca0f);if(_0x292d6e>0x0){if(_0x292d6e>this['maxNumberOriginate']){_0x292d6e=this[_0x53dd('0x200')];}_0x42ca0f[_0x53dd('0xc4')]+=_0x292d6e;this[_0x53dd('0xc6')](_0x42ca0f['id'],_0x292d6e,_0x42ca0f['dialOrderByScheduledAt'],_0x42ca0f)[_0x53dd('0xb8')](function(_0x2f8825){_0x42ca0f[_0x53dd('0xc4')]-=_0x292d6e;_0x42ca0f[_0x53dd('0xc4')]=_0x42ca0f[_0x53dd('0xc4')]>0x0?_0x42ca0f[_0x53dd('0xc4')]:0x0;if(!checkContactEmpty(_0x2f8825)){_0x42ca0f[_0x53dd('0x3b')]='AVAILABLE_CONTACTS_FINISHED';logger[_0x53dd('0x7b')](_0x53dd('0x201')+_0x42ca0f['name']);}else{_0x42ca0f['originated']+=_0x2f8825['length'];_0x42ca0f[_0x53dd('0x3b')]='RUNNING';for(var _0x286a64=0x0;_0x286a64<_0x2f8825[_0x53dd('0x137')];_0x286a64+=0x1){_0x42ca0f[_0x53dd('0x202')]+=0x1;if(_['isNil'](_0x2f8825[_0x286a64])||_[_0x53dd('0xac')](_0x2f8825[_0x286a64][_0x53dd('0x171')])||_[_0x53dd('0xac')](_0x2f8825[_0x286a64]['Contact'][_0x53dd('0x170')])){_0xe558a0[_0x53dd('0xd0')](_0x53dd('0x203'),_0x42ca0f,_0x2f8825[_0x286a64]);}else{_0xe558a0[_0x53dd('0xbc')](_[_0x53dd('0xd2')](_0x2f8825[_0x286a64],[_0x53dd('0xd7'),_0x53dd('0x204')]))[_0x53dd('0xb8')](_0xe558a0['checkContactBlack'](_0x42ca0f,_0x2f8825[_0x286a64]))[_0x53dd('0xb0')](_0xe558a0['loggerHandler'](_0x53dd('0x205'),_0x42ca0f));}}}})[_0x53dd('0xb0')](loggerGetContactDialer(_0x53dd('0x206'),_0x42ca0f,_0x292d6e));}};Dialer['prototype'][_0x53dd('0x15f')]=function(_0x564c9a,_0x4dd580){var _0x17e129=this;var _0x3f8c5d=[];var _0x235bc2=_0x4dd580>=0x1?_0x4dd580:0x1;if(_0x564c9a[_0x53dd('0x56')]==='booked'){_0x235bc2=0x1;}var _0x18a330=Math[_0x53dd('0x1e6')](_0x564c9a[_0x53dd('0x4d')]*_0x235bc2)-_0x564c9a['originated']-_0x564c9a[_0x53dd('0xc4')];emitVoiceQueueSummary(_0x564c9a);if(_0x564c9a[_0x53dd('0x207')]>0x0){var _0x126a58=_0x564c9a[_0x53dd('0x207')]-_0x564c9a[_0x53dd('0x73')]-_0x564c9a[_0x53dd('0x52')]-_0x564c9a['temp']-_0x564c9a[_0x53dd('0x4f')];if(_0x18a330>_0x126a58){_0x18a330=_0x126a58;}}if(_0x18a330>0x0){if(_0x564c9a['dialMethod']==='booked'){_0x18a330=0x1;}if(_0x18a330>this[_0x53dd('0x200')]){_0x18a330=this['maxNumberOriginate'];}_0x564c9a[_0x53dd('0xc4')]+=_0x18a330;for(var _0x2a341a in this[_0x53dd('0x22')]){if(typeof this[_0x53dd('0x22')][_0x2a341a]!==_0x53dd('0x98')){if(this[_0x53dd('0x22')][_0x2a341a][_0x53dd('0xa6')]==='not_inuse'&&this[_0x53dd('0x22')][_0x2a341a][_0x53dd('0xae')]===_0x53dd('0xdd')){_0x3f8c5d[_0x53dd('0x12d')](this[_0x53dd('0x22')][_0x2a341a]['id']);}}}this['getContactDialer'](_0x564c9a['id'],_0x3f8c5d,_0x18a330,_0x564c9a[_0x53dd('0x208')],_0x564c9a)[_0x53dd('0xb8')](function(_0x164a44){_0x564c9a[_0x53dd('0xc4')]-=_0x18a330;_0x564c9a['temp']=_0x564c9a[_0x53dd('0xc4')]>0x0?_0x564c9a[_0x53dd('0xc4')]:0x0;if(!checkContactEmpty(_0x164a44)){_0x17e129[_0x53dd('0xb6')](_0x564c9a)[_0x53dd('0xb8')](sendMessageReschedule(_0x564c9a))['catch'](loggerCatch(_0x53dd('0xb9')));}else{_0x564c9a[_0x53dd('0x73')]+=_0x164a44[_0x53dd('0x137')];_0x564c9a['message']=_0x564c9a['dialMethod']===_0x53dd('0xa')?_0x53dd('0x209'):_0x53dd('0x20a');for(var _0x31c7f5=0x0;_0x31c7f5<_0x164a44['length'];_0x31c7f5+=0x1){if(_[_0x53dd('0xac')](_0x164a44[_0x31c7f5])||_[_0x53dd('0xac')](_0x164a44[_0x31c7f5][_0x53dd('0x171')])||_[_0x53dd('0xac')](_0x164a44[_0x31c7f5][_0x53dd('0x171')][_0x53dd('0x170')])){_0x17e129['emptyContact'](_0x53dd('0x203'),_0x564c9a,_0x164a44[_0x31c7f5]);}else{_0x17e129[_0x53dd('0xba')](_[_0x53dd('0xd2')](_0x164a44[_0x31c7f5],[_0x53dd('0xd6'),_0x53dd('0x204')]))['then'](_0x17e129[_0x53dd('0x1e9')](_0x564c9a,_0x164a44[_0x31c7f5]))[_0x53dd('0xb0')](_0x17e129[_0x53dd('0xcf')]('[actionOriginate]\x20',_0x564c9a));}}}})[_0x53dd('0xb0')](loggerGetContactDialer(_0x53dd('0x20b'),_0x564c9a,_0x18a330));}};Dialer[_0x53dd('0x1c')][_0x53dd('0x91')]=function(_0x332176){if(_0x332176['dialLimitQueue']>0x0){var _0x4174b5=_0x332176['dialLimitQueue']-_0x332176[_0x53dd('0x73')]-_0x332176[_0x53dd('0x52')];if(_0x4174b5>0x0){this[_0x53dd('0x20c')](_0x332176);}else{loggerPredictiveCalls[_0x53dd('0x7b')](_0x53dd('0x20d'));}}else{this[_0x53dd('0x20c')](_0x332176);}};Dialer['prototype'][_0x53dd('0x20c')]=function(_0xbc1e3a){var _0x435d62=this;var _0x3fa85c=[];_0xbc1e3a['originated']+=0x1;for(var _0x4a710e in this['agents']){if(typeof this['agents'][_0x4a710e]!=='undefined'){if(this[_0x53dd('0x22')][_0x4a710e]['state']===_0x53dd('0x20e')&&this[_0x53dd('0x22')][_0x4a710e][_0x53dd('0xae')]==='reachable'){_0x3fa85c[_0x53dd('0x12d')](this[_0x53dd('0x22')][_0x4a710e]['id']);}}}this[_0x53dd('0xc3')](_0xbc1e3a['id'],_0x3fa85c,0x1,_0xbc1e3a[_0x53dd('0x208')],_0xbc1e3a)[_0x53dd('0xb8')](function(_0x37483b){if(!checkContactEmpty(_0x37483b)){checkContactLowerLimitOriginate(_0xbc1e3a,0x1,0x0);_0x435d62['countReScheduled'](_0xbc1e3a)[_0x53dd('0xb8')](sendMessageReschedule(_0xbc1e3a))[_0x53dd('0xb0')](loggerCatch('[countReScheduled]\x20'));}else{_0xbc1e3a[_0x53dd('0x3b')]='RUNNING';if(_['isNil'](_0x37483b[0x0])||_[_0x53dd('0xac')](_0x37483b[0x0][_0x53dd('0x171')])||_[_0x53dd('0xac')](_0x37483b[0x0][_0x53dd('0x171')][_0x53dd('0x170')])){_0x435d62[_0x53dd('0xd0')](_0x53dd('0x203'),_0xbc1e3a,_0x37483b[0x0]);}else{_0x435d62['checkIsBlackList'](_['pick'](_0x37483b[0x0],[_0x53dd('0xd6'),'Contact.phone']))[_0x53dd('0xb8')](_0x435d62['checkContactBlack'](_0xbc1e3a,_0x37483b[0x0]))[_0x53dd('0xb0')](_0x435d62['loggerHandler'](_0x53dd('0x20f'),_0xbc1e3a));}}})[_0x53dd('0xb0')](loggerGetContactDialer(_0x53dd('0x210'),_0xbc1e3a,0x1));emitVoiceQueueSummary(_0xbc1e3a);};Dialer[_0x53dd('0x1c')]['abandonmentRate']=function(_0x165965,_0x53592a,_0x11e847,_0x464997,_0x48de44,_0x1d3e8e){loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x211'));loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x212'),_0x165965);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x213'),_0x53592a);loggerPredictive[_0x53dd('0x7b')]('Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x11e847);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x214'),_0x464997);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x215'),_0x48de44);loggerPredictive[_0x53dd('0x7b')]('---------------------------');return new BPromise(function(_0x19659e,_0x3bc2f7){if(_0x165965<=0x0||isNaN(_0x165965)){return _0x3bc2f7(msgResponse(_0x53dd('0x216'),_0x53dd('0x45'),_0x53dd('0x217')+_0x165965));}if(_0x11e847<=0x0||isNaN(_0x11e847)){return _0x3bc2f7(msgResponse(_0x53dd('0x216'),_0x53dd('0x45'),'Ts\x20=\x20'+_0x11e847));}if(_0x464997<=0x0||isNaN(_0x464997)){return _0x3bc2f7(msgResponse('[abandonmentRate]',_0x53dd('0x45'),_0x53dd('0x218')+_0x464997));}if(_0x53592a<=0x0||isNaN(_0x53592a)){return _0x3bc2f7(msgResponse(_0x53dd('0x216'),_0x53dd('0x45'),'interval\x20=\x20'+_0x53592a));}if(_0x48de44<=0x0||isNaN(_0x48de44)){return _0x3bc2f7(msgResponse(_0x53dd('0x216'),_0x53dd('0x45'),_0x53dd('0x219')+_0x48de44));}_0x1d3e8e=_0x1d3e8e||0x0;var _0x413f8d=0x1/_0x11e847;var _0x1c54a5=0x0;var _0x283612=0x0;var _0x12f7dd=0x0;var _0x5ad4e6=0x0;for(var _0x2ac9a3=0x0;_0x12f7dd<_0x48de44;_0x2ac9a3+=0x1){_0x283612=_0x2ac9a3/_0x53592a;_0x1c54a5=(_0x464997*_0x283612+_0x1d3e8e)/_0x413f8d;_0x12f7dd=erlangb(_0x1c54a5,_0x165965);_0x5ad4e6=_0x1c54a5/_0x165965*(0x1-erlangb(_0x1c54a5,_0x165965));}return _0x19659e({'erlangCalls':_0x2ac9a3,'erlangCallToSecond':_0x53592a/_0x2ac9a3,'erlangAbandonmentRate':_0x12f7dd,'erlangBusyFactor':_0x5ad4e6});});};Dialer[_0x53dd('0x1c')][_0x53dd('0x1df')]=function(_0x446249,_0x5d9701,_0x5da745,_0x3b19a7,_0x3029f9,_0x2262ab){loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x21a'));loggerPredictive['info'](_0x53dd('0x212'),_0x446249);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x213'),_0x5d9701);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x21b'),_0x5da745);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x214'),_0x3b19a7);loggerPredictive['info'](_0x53dd('0x21c'),_0x3029f9);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x84'));return new BPromise(function(_0x51d930,_0x4f6732){if(_0x446249<=0x0||isNaN(_0x446249)){return _0x4f6732(msgResponse(_0x53dd('0x21d'),_0x53dd('0x45'),'m\x20=\x20'+_0x446249));}if(_0x5da745<=0x0||isNaN(_0x5da745)){return _0x4f6732(msgResponse(_0x53dd('0x21d'),_0x53dd('0x45'),_0x53dd('0x21e')+_0x5da745));}if(_0x3b19a7<=0x0||isNaN(_0x3b19a7)){return _0x4f6732(msgResponse(_0x53dd('0x21d'),_0x53dd('0x45'),_0x53dd('0x218')+_0x3b19a7));}if(_0x5d9701<=0x0||isNaN(_0x5d9701)){return _0x4f6732(msgResponse(_0x53dd('0x21d'),'Error','interval\x20=\x20'+_0x5d9701));}if(_0x3029f9<=0x0||isNaN(_0x3029f9)){return _0x4f6732(msgResponse(_0x53dd('0x21d'),_0x53dd('0x45'),_0x53dd('0x21f')+_0x3029f9));}_0x2262ab=_0x2262ab||0x0;var _0x4c351e=0x1/_0x5da745;var _0x207add=0x0;var _0x4f37ab=0x0;var _0x381cd4=0x0;var _0x4f9f48=0x0;for(var _0xec5fc7=0x0;_0x4f9f48<_0x3029f9;_0xec5fc7+=0x1){_0x4f37ab=_0xec5fc7/_0x5d9701;_0x207add=(_0x3b19a7*_0x4f37ab+_0x2262ab)/_0x4c351e;_0x381cd4=erlangb(_0x207add,_0x446249);_0x4f9f48=_0x207add/_0x446249*(0x1-erlangb(_0x207add,_0x446249));}return _0x51d930({'erlangCalls':_0xec5fc7,'erlangCallToSecond':_0x5d9701/_0xec5fc7,'erlangAbandonmentRate':_0x381cd4,'erlangBusyFactor':_0x4f9f48});});};module['exports']=Dialer;
\ No newline at end of file
index f6a6537..de2fd88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cfe=['type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countagentrejectretry','countdropretry','countabandonedretry','uniqueid','calleridname','calleridnum','number','starttime','droptime','ringtime','holdtime','talktime','membername','connectedlinename','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','milliseconds','diff','scheduledat'];(function(_0x5131ea,_0x10a0a1){var _0x1928f2=function(_0x322109){while(--_0x322109){_0x5131ea['push'](_0x5131ea['shift']());}};_0x1928f2(++_0x10a0a1);}(_0x7cfe,0x94));var _0xe7cf=function(_0x147223,_0x4294ce){_0x147223=_0x147223-0x0;var _0x2adb2c=_0x7cfe[_0x147223];return _0x2adb2c;};'use strict';var util=require(_0xe7cf('0x0'));var _=require('lodash');var moment=require('moment');function getSeconds(_0x3be13f,_0x188335){var _0x593f98=moment(_0x3be13f)[_0xe7cf('0x1')](0x0);var _0x18f5cf=moment(_0x188335)[_0xe7cf('0x1')](0x0);return _0x593f98[_0xe7cf('0x2')](_0x18f5cf,'seconds');}function QueueCallerAbandon(_0x6549be,_0x430d41){this[_0xe7cf('0x3')]=_0x6549be[_0xe7cf('0x3')];this['type']=_0x6549be[_0xe7cf('0x4')];this[_0xe7cf('0x5')]=_0x6549be[_0xe7cf('0x4')]==='outbound'?_0xe7cf('0x6'):_0x6549be[_0xe7cf('0x4')];this[_0xe7cf('0x7')]=_0x6549be[_0xe7cf('0x7')];this[_0xe7cf('0x8')]=_0x6549be[_0xe7cf('0x8')];this['countnoanswerretry']=_0x6549be[_0xe7cf('0x9')];this[_0xe7cf('0xa')]=_0x6549be[_0xe7cf('0x7')]+_0x6549be['countcongestionretry']+_0x6549be[_0xe7cf('0x9')]+_0x6549be[_0xe7cf('0xb')]+_0x6549be['countdropretry']+_0x6549be['countabandonedretry']+_0x6549be['countmachineretry']+_0x6549be[_0xe7cf('0xc')];this['countnosuchnumberretry']=_0x6549be[_0xe7cf('0xb')];this[_0xe7cf('0xd')]=_0x6549be[_0xe7cf('0xd')];this['countabandonedretry']=_0x6549be[_0xe7cf('0xe')];this['countmachineretry']=_0x6549be['countmachineretry'];this[_0xe7cf('0xc')]=_0x6549be[_0xe7cf('0xc')];this['uniqueid']=_0x430d41[_0xe7cf('0xf')];this[_0xe7cf('0x10')]=_0x6549be['name'];this[_0xe7cf('0x11')]=_0x6549be[_0xe7cf('0x12')];this[_0xe7cf('0x13')]=_0x6549be['starttime'];this['responsetime']=_0x6549be['responsetime'];this['droptime']=_0x6549be[_0xe7cf('0x14')];this['endtime']=this[_0xe7cf('0x14')];this[_0xe7cf('0x15')]=getSeconds(_0x6549be['responsetime'],_0x6549be[_0xe7cf('0x13')]);this[_0xe7cf('0x16')]=getSeconds(this[_0xe7cf('0x14')],_0x6549be['responsetime']);this[_0xe7cf('0x17')]=0x0;this[_0xe7cf('0x6')]=_0x430d41[_0xe7cf('0x6')];this[_0xe7cf('0x18')]=_0x430d41[_0xe7cf('0x19')];this['reason']=_0x430d41['reason'];this[_0xe7cf('0x1a')]=_0x6549be['callback'];this[_0xe7cf('0x1b')]=_0x6549be[_0xe7cf('0x1b')];this['callbackat']=_0x6549be[_0xe7cf('0x1c')];this[_0xe7cf('0x1d')]=_0x6549be[_0xe7cf('0x1d')];this[_0xe7cf('0x1e')]=_0x6549be[_0xe7cf('0x1e')];this[_0xe7cf('0x1f')]=_0x6549be[_0xe7cf('0x1f')];this[_0xe7cf('0x20')]=_0x6549be['UserId'];this[_0xe7cf('0x21')]=_0x6549be[_0xe7cf('0x21')];this[_0xe7cf('0x22')]=_0x6549be['CampaignId'];this[_0xe7cf('0x23')]=_0x6549be[_0xe7cf('0x23')]||'';this[_0xe7cf('0x24')]=_0x6549be[_0xe7cf('0x24')]||'';}module[_0xe7cf('0x25')]=QueueCallerAbandon;
\ No newline at end of file
+var _0x7edc=['countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countdropretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','droptime','ringtime','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','CampaignId','originatecalleridnum','originatecalleridname','util','moment','milliseconds','seconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry'];(function(_0x3b2934,_0x1d5121){var _0x11315f=function(_0x1d631a){while(--_0x1d631a){_0x3b2934['push'](_0x3b2934['shift']());}};_0x11315f(++_0x1d5121);}(_0x7edc,0x113));var _0xc7ed=function(_0x1cfc39,_0x1d3913){_0x1cfc39=_0x1cfc39-0x0;var _0x957a28=_0x7edc[_0x1cfc39];return _0x957a28;};'use strict';var util=require(_0xc7ed('0x0'));var _=require('lodash');var moment=require(_0xc7ed('0x1'));function getSeconds(_0x1f48b4,_0x39dab3){var _0x16df7c=moment(_0x1f48b4)[_0xc7ed('0x2')](0x0);var _0x4f15d9=moment(_0x39dab3)[_0xc7ed('0x2')](0x0);return _0x16df7c['diff'](_0x4f15d9,_0xc7ed('0x3'));}function QueueCallerAbandon(_0x5ac021,_0x174d31){this[_0xc7ed('0x4')]=_0x5ac021['scheduledat'];this['type']=_0x5ac021[_0xc7ed('0x5')];this[_0xc7ed('0x6')]=_0x5ac021['type']===_0xc7ed('0x7')?_0xc7ed('0x8'):_0x5ac021[_0xc7ed('0x5')];this['countbusyretry']=_0x5ac021[_0xc7ed('0x9')];this[_0xc7ed('0xa')]=_0x5ac021[_0xc7ed('0xa')];this[_0xc7ed('0xb')]=_0x5ac021[_0xc7ed('0xb')];this['countglobal']=_0x5ac021[_0xc7ed('0x9')]+_0x5ac021['countcongestionretry']+_0x5ac021[_0xc7ed('0xb')]+_0x5ac021['countnosuchnumberretry']+_0x5ac021['countdropretry']+_0x5ac021[_0xc7ed('0xc')]+_0x5ac021[_0xc7ed('0xd')]+_0x5ac021[_0xc7ed('0xe')];this['countnosuchnumberretry']=_0x5ac021[_0xc7ed('0xf')];this['countdropretry']=_0x5ac021[_0xc7ed('0x10')];this[_0xc7ed('0xc')]=_0x5ac021[_0xc7ed('0xc')];this[_0xc7ed('0xd')]=_0x5ac021['countmachineretry'];this[_0xc7ed('0xe')]=_0x5ac021[_0xc7ed('0xe')];this[_0xc7ed('0x11')]=_0x174d31[_0xc7ed('0x11')];this[_0xc7ed('0x12')]=_0x5ac021[_0xc7ed('0x13')];this[_0xc7ed('0x14')]=_0x5ac021[_0xc7ed('0x15')];this[_0xc7ed('0x16')]=_0x5ac021[_0xc7ed('0x16')];this[_0xc7ed('0x17')]=_0x5ac021['responsetime'];this[_0xc7ed('0x18')]=_0x5ac021[_0xc7ed('0x18')];this['endtime']=this[_0xc7ed('0x18')];this[_0xc7ed('0x19')]=getSeconds(_0x5ac021[_0xc7ed('0x17')],_0x5ac021[_0xc7ed('0x16')]);this[_0xc7ed('0x1a')]=getSeconds(this[_0xc7ed('0x18')],_0x5ac021[_0xc7ed('0x17')]);this[_0xc7ed('0x1b')]=0x0;this[_0xc7ed('0x8')]=_0x174d31[_0xc7ed('0x8')];this[_0xc7ed('0x1c')]=_0x174d31[_0xc7ed('0x1d')];this[_0xc7ed('0x1e')]=_0x174d31[_0xc7ed('0x1e')];this[_0xc7ed('0x1f')]=_0x5ac021[_0xc7ed('0x1f')];this[_0xc7ed('0x20')]=_0x5ac021['callbackuniqueid'];this[_0xc7ed('0x21')]=_0x5ac021['callbackat'];this[_0xc7ed('0x22')]=_0x5ac021[_0xc7ed('0x22')];this[_0xc7ed('0x23')]=_0x5ac021[_0xc7ed('0x23')];this[_0xc7ed('0x24')]=_0x5ac021[_0xc7ed('0x24')];this[_0xc7ed('0x25')]=_0x5ac021[_0xc7ed('0x25')];this['VoiceQueueId']=_0x5ac021['VoiceQueueId'];this[_0xc7ed('0x26')]=_0x5ac021[_0xc7ed('0x26')];this[_0xc7ed('0x27')]=_0x5ac021['originatecalleridnum']||'';this[_0xc7ed('0x28')]=_0x5ac021[_0xc7ed('0x28')]||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
index 0eb9f6b..09a5127 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(_0x1a084b,_0x1e51dd){var _0x34af00=function(_0x1eda25){while(--_0x1eda25){_0x1a084b['push'](_0x1a084b['shift']());}};_0x34af00(++_0x1e51dd);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'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(_0x1e59aa,_0x213073){var _0x5a2305=function(_0x1d07bc){while(--_0x1d07bc){_0x1e59aa['push'](_0x1e59aa['shift']());}};_0x5a2305(++_0x213073);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));function Action(_0x5dd881,_0x550fbc,_0x18d5c9){this['uniqueid']=_0x5dd881||undefined;this[_0x0a9e('0x3')]=util[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x550fbc[_0x0a9e('0x6')],_0x550fbc[_0x0a9e('0x7')]['name'],_0x18d5c9[_0x0a9e('0x8')]);this[_0x0a9e('0x9')]=_0x550fbc[_0x0a9e('0x9')];this['headerinfo']=_0x550fbc['headerinfo'];this[_0x0a9e('0xa')]=_0x18d5c9['path'];this['AttachmentId']=_0x18d5c9[_0x0a9e('0xb')];}module[_0x0a9e('0xc')]=Action;
\ No newline at end of file
index 48d66ba..6e38a7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf45e=['checkTrunk','Trunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','%s/%s.tif','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','bluebird','moment','path','tiff2pdf','./util/gs','../../../config/logger','fax','../ami','./rpcDb','./channel','./util/util','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','varset','syncVarSet','newstate','syncNewState','newexten','syncNewExten','syncFaxStatus','receivefax','syncReceiveFax','syncOriginateResponse','prototype','from-voip-provider','localstationid','uniqueid','channel','\x20syncNewchannel\x20','info','hasOwnProperty','value','channelstate','channelstatedesc','variable','operation','status','\x20syncFaxStatus\x20','remotestationid','resolution','transferrate','filename','calleridnum','pagestransferred','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','name','.pdf','application/pdf','then','notify','catch','error','\x20notify\x20','\x20receiveFax\x20','stringify','merge','pick','response','reason','AttachmentId','update','SENDING\x20FAILED\x20','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\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','FaxAccountId','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend'];(function(_0x2aea9e,_0x1f587f){var _0x430b92=function(_0x416c37){while(--_0x416c37){_0x2aea9e['push'](_0x2aea9e['shift']());}};_0x430b92(++_0x1f587f);}(_0xf45e,0x115));var _0xef45=function(_0x4b7421,_0x478907){_0x4b7421=_0x4b7421-0x0;var _0x58cd23=_0xf45e[_0x4b7421];return _0x58cd23;};'use strict';var util=require(_0xef45('0x0'));var _=require('lodash');var BPromise=require(_0xef45('0x1'));var uuid=require('uuid');var moment=require(_0xef45('0x2'));var path=require(_0xef45('0x3'));var tiff2pdf=require(_0xef45('0x4'));var gs=require(_0xef45('0x5'));var logger=require(_0xef45('0x6'))(_0xef45('0x7'));var ami=require(_0xef45('0x8'));var rpcDb=require(_0xef45('0x9'));var Channel=require(_0xef45('0xa'));var ut=require(_0xef45('0xb'));var Action=require(_0xef45('0xc'));var faxAccount=require(_0xef45('0xd'));var attachment=require(_0xef45('0xe'));var faxMessage=require(_0xef45('0xf'));function Fax(_0x268ef6){this[_0xef45('0x10')]={};this[_0xef45('0x11')]=_0x268ef6[_0xef45('0x11')];this[_0xef45('0x12')]=_0x268ef6['trunks'];this[_0xef45('0x13')]={};ami['on'](_0xef45('0x14'),this[_0xef45('0x15')][_0xef45('0x16')](this));ami['on'](_0xef45('0x17'),this[_0xef45('0x18')]['bind'](this));ami['on'](_0xef45('0x19'),this[_0xef45('0x1a')][_0xef45('0x16')](this));ami['on'](_0xef45('0x1b'),this[_0xef45('0x1c')]['bind'](this));ami['on']('faxstatus',this[_0xef45('0x1d')]['bind'](this));ami['on'](_0xef45('0x1e'),this[_0xef45('0x1f')][_0xef45('0x16')](this));ami['on']('hangup',this['syncHangup'][_0xef45('0x16')](this));ami['on']('originateresponse',this[_0xef45('0x20')][_0xef45('0x16')](this));}Fax[_0xef45('0x21')][_0xef45('0x15')]=function(_0x4bec7d){if(_0x4bec7d['context']===_0xef45('0x22')){for(var _0x219778 in this[_0xef45('0x11')]){if(this[_0xef45('0x11')]['hasOwnProperty'](_0x219778)){if(_0x4bec7d['exten']===this[_0xef45('0x11')][_0x219778][_0xef45('0x23')]){this[_0xef45('0x10')][_0x4bec7d[_0xef45('0x24')]]={};this[_0xef45('0x10')][_0x4bec7d[_0xef45('0x24')]][_0xef45('0x25')]=_0x4bec7d['channel'];this[_0xef45('0x10')][_0x4bec7d[_0xef45('0x24')]]['id']=this[_0xef45('0x11')][_0x219778]['id'];this[_0xef45('0x10')][_0x4bec7d[_0xef45('0x24')]]['name']=this[_0xef45('0x11')][_0x219778]['name'];logger['info'](_0x4bec7d[_0xef45('0x24')],_0xef45('0x26'));}}}}if(this[_0xef45('0x13')][_0x4bec7d[_0xef45('0x24')]]){this[_0xef45('0x10')][_0x4bec7d[_0xef45('0x24')]]={};this[_0xef45('0x10')][_0x4bec7d['uniqueid']][_0xef45('0x25')]=_0x4bec7d['channel'];logger[_0xef45('0x27')](_0x4bec7d[_0xef45('0x24')],'\x20syncNewchannel\x20');}};Fax[_0xef45('0x21')][_0xef45('0x18')]=function(_0x479e3c){if(this[_0xef45('0x10')][_0x479e3c['uniqueid']]){for(var _0x550e18 in _0x479e3c['variable']){if(_0x479e3c['variable'][_0xef45('0x28')](_0x550e18)){this[_0xef45('0x10')][_0x479e3c[_0xef45('0x24')]][_0x550e18]=_0x479e3c[_0xef45('0x29')];}}}};Fax['prototype'][_0xef45('0x1a')]=function(_0x4f028c){if(this[_0xef45('0x10')][_0x4f028c['uniqueid']]){this[_0xef45('0x10')][_0x4f028c['uniqueid']]['channelstate']=_0x4f028c[_0xef45('0x2a')];this[_0xef45('0x10')][_0x4f028c[_0xef45('0x24')]][_0xef45('0x2b')]=_0x4f028c[_0xef45('0x2b')];}};Fax['prototype']['syncNewExten']=function(_0x59030b){if(this[_0xef45('0x10')][_0x59030b[_0xef45('0x24')]]){for(var _0x32f3a9 in _0x59030b[_0xef45('0x2c')]){if(_0x59030b[_0xef45('0x2c')][_0xef45('0x28')](_0x32f3a9)){this[_0xef45('0x10')][_0x59030b['uniqueid']][_0x32f3a9]=_0x59030b['value'];}}}};Fax[_0xef45('0x21')]['syncFaxStatus']=function(_0x2aa6bb){if(this['channels'][_0x2aa6bb[_0xef45('0x24')]]){this[_0xef45('0x10')][_0x2aa6bb[_0xef45('0x24')]][_0xef45('0x2d')]=_0x2aa6bb[_0xef45('0x2d')];this['channels'][_0x2aa6bb[_0xef45('0x24')]][_0xef45('0x2e')]=_0x2aa6bb[_0xef45('0x2e')];this['channels'][_0x2aa6bb['uniqueid']][_0xef45('0x23')]=_0x2aa6bb[_0xef45('0x23')];this['channels'][_0x2aa6bb[_0xef45('0x24')]]['filename']=_0x2aa6bb['filename'];logger[_0xef45('0x27')](_0x2aa6bb[_0xef45('0x24')],_0xef45('0x2f'));}};Fax['prototype'][_0xef45('0x1f')]=function(_0x3a1bcc){var _0x2f5a82=this;if(this[_0xef45('0x10')][_0x3a1bcc['uniqueid']]){var _0x5bc364=this[_0xef45('0x10')][_0x3a1bcc[_0xef45('0x24')]]['id'];this[_0xef45('0x10')][_0x3a1bcc[_0xef45('0x24')]][_0xef45('0x30')]=_0x3a1bcc[_0xef45('0x30')];this[_0xef45('0x10')][_0x3a1bcc[_0xef45('0x24')]]['pagestransferred']=_0x3a1bcc['pagestransferred'];this[_0xef45('0x10')][_0x3a1bcc[_0xef45('0x24')]][_0xef45('0x23')]=_0x3a1bcc[_0xef45('0x23')];this[_0xef45('0x10')][_0x3a1bcc[_0xef45('0x24')]][_0xef45('0x31')]=_0x3a1bcc[_0xef45('0x31')];this[_0xef45('0x10')][_0x3a1bcc[_0xef45('0x24')]][_0xef45('0x32')]=_0x3a1bcc[_0xef45('0x32')];this[_0xef45('0x10')][_0x3a1bcc[_0xef45('0x24')]][_0xef45('0x33')]=_0x3a1bcc[_0xef45('0x33')];this['channels'][_0x3a1bcc[_0xef45('0x24')]][_0xef45('0x34')]=_0x3a1bcc[_0xef45('0x34')];if(this[_0xef45('0x10')][_0x3a1bcc['uniqueid']][_0xef45('0x35')]>0x0){tiff2pdf(_0x3a1bcc['filename'],_0xef45('0x36'),function(_0x48833c){logger[_0xef45('0x27')](_0x3a1bcc[_0xef45('0x24')],_0xef45('0x37'),_0x48833c[_0xef45('0x38')]);attachment[_0xef45('0x39')]({'name':path[_0xef45('0x3a')](_0x3a1bcc[_0xef45('0x33')])['name'],'basename':path[_0xef45('0x3a')](_0x3a1bcc[_0xef45('0x33')])[_0xef45('0x3b')]+_0xef45('0x3c'),'type':_0xef45('0x3d')})[_0xef45('0x3e')](function(_0xc692c0){faxAccount[_0xef45('0x3f')](_0x5bc364,{'from':_0x3a1bcc[_0xef45('0x34')],'mapKey':_0xef45('0x7'),'body':path[_0xef45('0x3a')](_0x3a1bcc[_0xef45('0x33')])[_0xef45('0x3b')]+_0xef45('0x3c'),'AttachmentId':_0xc692c0['id']})[_0xef45('0x40')](function(_0x4a2793){logger[_0xef45('0x41')](_0x3a1bcc[_0xef45('0x24')],_0xef45('0x42'),JSON['stringify'](_0x4a2793));});})['catch'](function(_0x4ae55f){logger[_0xef45('0x41')](_0x3a1bcc[_0xef45('0x24')],_0xef45('0x43'),JSON[_0xef45('0x44')](_0x4ae55f));});});}logger[_0xef45('0x27')](_0x3a1bcc[_0xef45('0x24')],'\x20receiveFax\x20');}};Fax[_0xef45('0x21')][_0xef45('0x20')]=function(_0x2b2419){if(this['actions'][_0x2b2419['uniqueid']]){_[_0xef45('0x45')](this[_0xef45('0x10')][_0x2b2419['uniqueid']],_[_0xef45('0x46')](_0x2b2419,[_0xef45('0x47'),_0xef45('0x48')]));}};function updateStatus(_0x39e9f8){if(_0x39e9f8[_0xef45('0x49')]){faxMessage[_0xef45('0x4a')](_0x39e9f8[_0xef45('0x49')],{'failMessage':_0xef45('0x4b')})[_0xef45('0x3e')](function(_0x1f3a10){ut[_0xef45('0x4c')](_0xef45('0x4d'),_0x1f3a10);})[_0xef45('0x40')](function(_0x1c1be2){ut['logger'](_0xef45('0x4e'),_0x1c1be2);});}else{ut[_0xef45('0x4c')](_0xef45('0x4f'));}}Fax['prototype'][_0xef45('0x50')]=function(_0x3f9b9a,_0x464bda,_0x1531ea){var _0x5a6a68=this;var _0x14bf49={};if(_0x464bda){_0x14bf49={'read':_0x464bda};}else{_0x14bf49={'failMessage':_0x1531ea};}if(this[_0xef45('0x13')][_0x3f9b9a][_0xef45('0x49')]){faxMessage[_0xef45('0x4a')](this[_0xef45('0x13')][_0x3f9b9a][_0xef45('0x49')],_0x14bf49)[_0xef45('0x3e')](function(_0x1a1ce5){ut[_0xef45('0x4c')](_0xef45('0x51'),_0x1a1ce5);})[_0xef45('0x40')](function(_0x24d158){ut['logger'](_0xef45('0x52'),_0x24d158);})[_0xef45('0x53')](function(){delete _0x5a6a68[_0xef45('0x10')][_0x3f9b9a];delete _0x5a6a68[_0xef45('0x13')][_0x3f9b9a];});}else{ut[_0xef45('0x4c')](_0xef45('0x54'));delete this['channels'][_0x3f9b9a];delete this['actions'][_0x3f9b9a];}};Fax[_0xef45('0x21')]['syncHangup']=function(_0x180574){var _0x2841df=this;if(this[_0xef45('0x10')][_0x180574['uniqueid']]){if(this[_0xef45('0x13')][_0x180574[_0xef45('0x24')]]){this['channels'][_0x180574[_0xef45('0x24')]]['id']=this['actions'][_0x180574['uniqueid']]['id'];this[_0xef45('0x10')][_0x180574[_0xef45('0x24')]][_0xef45('0x3b')]=this[_0xef45('0x13')][_0x180574[_0xef45('0x24')]]['name'];}logger[_0xef45('0x27')](_0x180574[_0xef45('0x24')],this['actions'][_0x180574[_0xef45('0x24')]]?_0xef45('0x55'):_0xef45('0x56'),JSON[_0xef45('0x44')](this[_0xef45('0x10')][_0x180574[_0xef45('0x24')]]));if(this[_0xef45('0x13')][_0x180574[_0xef45('0x24')]]){if(this['channels'][_0x180574[_0xef45('0x24')]]['faxpages']>0x0&&this['channels'][_0x180574[_0xef45('0x24')]]['faxstatus']===_0xef45('0x57')){this[_0xef45('0x50')](_0x180574['uniqueid'],!![]);}else{this[_0xef45('0x50')](_0x180574[_0xef45('0x24')],![],this[_0xef45('0x10')][_0x180574[_0xef45('0x24')]][_0xef45('0x58')]?_0xef45('0x59')+this['channels'][_0x180574[_0xef45('0x24')]][_0xef45('0x58')]:_0xef45('0x5a'));}}}};Fax[_0xef45('0x21')][_0xef45('0x5b')]=function(_0x51f841){var _0x2a7857=this;return new BPromise(function(_0x5e485d,_0x10723e){_0x2a7857[_0xef45('0x5c')](_0x51f841,_0x2a7857['faxAccounts'][_0x51f841[_0xef45('0x5d')]])[_0xef45('0x3e')](function(_0x2ec530){ut['logger']('[Fax][execOriginate][success]',_0x2ec530);_0x5e485d(ut[_0xef45('0x38')](_0xef45('0x5e')));})[_0xef45('0x40')](function(_0x55fcf3){ut[_0xef45('0x4c')](_0xef45('0x5f'),_0x55fcf3);updateStatus(_0x51f841);_0x10723e(ut['message'](_0xef45('0x60')));});});};Fax['prototype'][_0xef45('0x61')]=function(_0x6d0e51){var _0x17c2f2=this;return new BPromise(function(_0x26c230,_0x69bad2){var _0xfa4b8a=_0x17c2f2[_0xef45('0x62')](_0x17c2f2[_0xef45('0x11')][_0x6d0e51['FaxAccountId']][_0xef45('0x63')],_0x6d0e51);if(_0xfa4b8a[_0xef45('0x64')]){_0x26c230(ut[_0xef45('0x38')](_0xef45('0x65')));}else{_0x69bad2(ut[_0xef45('0x38')](_0xfa4b8a[_0xef45('0x38')]));}});};function originate(_0xef7b79,_0x14ae27,_0x444d39){return new BPromise(function(_0x41952f,_0xbf9898){if(_0x444d39){var _0x4f9517=util[_0xef45('0x66')](_0xef45('0x67'),path[_0xef45('0x3a')](_0xef7b79[_0xef45('0x3')])[_0xef45('0x3b')],_0xef7b79['path']);gs[_0xef45('0x68')](_0x4f9517)[_0xef45('0x3e')](function(){_0xef7b79['path']=util['format'](_0xef45('0x69'),path[_0xef45('0x3a')](_0xef7b79['path'])['dir'],path['parse'](_0xef7b79[_0xef45('0x3')])[_0xef45('0x3b')]);_0x14ae27['XMF-PATH']=_0xef7b79['path'];ut[_0xef45('0x4c')]('Convert\x20pdf\x20to\x20tif','');ami[_0xef45('0x6a')](ut[_0xef45('0x6b')](_0xef7b79,_0x14ae27))[_0xef45('0x3e')](function(_0x48e5e8){_0x41952f(_0x48e5e8);})[_0xef45('0x40')](function(_0x3ce74b){_0xbf9898(_0x3ce74b);});})[_0xef45('0x40')](function(_0x4ffc0f){_0xbf9898(_0x4ffc0f);});}else{ami[_0xef45('0x6a')](ut[_0xef45('0x6b')](_0xef7b79,_0x14ae27))[_0xef45('0x3e')](function(_0x26d598){_0x41952f(_0x26d598);})[_0xef45('0x40')](function(_0x3c7a0f){_0xbf9898(_0x3c7a0f);});}});}Fax['prototype']['execOriginate']=function(_0x18e5b9,_0x13f5b6){var _0x2989aa=this;return new BPromise(function(_0x34874e,_0x2a2bb6){var _0xc98761=uuid['v4']();var _0x2e8a76=ut[_0xef45('0x6c')](_0x18e5b9,_0x13f5b6);_0x2989aa['actions'][_0xc98761]=new Action(_0xc98761,_0x13f5b6,_0x18e5b9);var _0x31b0a3=_0x2989aa[_0xef45('0x13')][_0xc98761];if(path[_0xef45('0x3a')](_0x18e5b9[_0xef45('0x3')])[_0xef45('0x6d')]===_0xef45('0x3c')){originate(_0x31b0a3,_0x2e8a76,!![])[_0xef45('0x3e')](function(_0x5ece80){_0x34874e(_0x5ece80);})[_0xef45('0x40')](function(_0x4b5bba){_0x2a2bb6(_0x4b5bba);});}else{originate(_0x31b0a3,_0x2e8a76,![])[_0xef45('0x3e')](function(_0x2a8ad9){_0x34874e(_0x2a8ad9);})['catch'](function(_0x341f0e){_0x2a2bb6(_0x341f0e);});}});};Fax[_0xef45('0x21')][_0xef45('0x6e')]=function(_0x4d2c50){return!_[_0xef45('0x6f')](_0x4d2c50)&&!_['isNil'](_0x4d2c50[_0xef45('0x3b')])&&!_[_0xef45('0x6f')](_0x4d2c50[_0xef45('0x70')])&&_0x4d2c50[_0xef45('0x70')]&&!_['isNil'](this[_0xef45('0x12')][util[_0xef45('0x66')](_0xef45('0x71'),_0x4d2c50['name'])])&&!_[_0xef45('0x6f')](this[_0xef45('0x12')][util[_0xef45('0x66')](_0xef45('0x71'),_0x4d2c50[_0xef45('0x3b')])]['status'])&&(this[_0xef45('0x12')][util[_0xef45('0x66')](_0xef45('0x71'),_0x4d2c50[_0xef45('0x3b')])][_0xef45('0x2e')]===_0xef45('0x72')||this[_0xef45('0x12')][util[_0xef45('0x66')](_0xef45('0x71'),_0x4d2c50['name'])][_0xef45('0x2e')]===_0xef45('0x73'));};Fax[_0xef45('0x21')]['checkTrunk']=function(_0xcd8038,_0x4fbf84){if(!this[_0xef45('0x6e')](_0xcd8038)){ut[_0xef45('0x4c')](_0xef45('0x74'),_[_0xef45('0x6f')](_0xcd8038)?'':_0xcd8038[_0xef45('0x3b')]+_0xef45('0x75'));return{'isValid':![],'message':_0xef45('0x76')};}if(_[_0xef45('0x6f')](_0x4fbf84[_0xef45('0x7')])){ut[_0xef45('0x4c')](_0xef45('0x77'),JSON[_0xef45('0x44')](_0x4fbf84));return{'isValid':![],'message':_0xef45('0x78')};}if(_[_0xef45('0x6f')](_0x4fbf84[_0xef45('0x3')])){ut[_0xef45('0x4c')](_0xef45('0x79'),JSON[_0xef45('0x44')](_0x4fbf84));return{'isValid':![],'message':_0xef45('0x7a')};}return{'isValid':!![],'message':_0xef45('0x7b')};};module[_0xef45('0x7c')]=Fax;
\ No newline at end of file
+var _0x7334=['SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','[Fax][execOriginate][success]','Fax\x20received','checkAfterSend','checkTrunk','FaxAccountId','isValid','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','unmonitored','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','Empty\x20path','exports','util','lodash','bluebird','path','./util/gs','../../../config/logger','fax','../ami','./rpcDb','./channel','./util/util','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','newchannel','syncNewchannel','varset','bind','newstate','syncNewState','newexten','syncNewExten','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','from-voip-provider','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','actions','prototype','syncVarSet','variable','channelstate','channelstatedesc','value','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','message','create','parse','.pdf','application/pdf','then','notify','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','merge','pick','reason','AttachmentId','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate2]','update','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','faxstatus','updateStatus','faxstatusstring'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7334,0x184));var _0x4733=function(_0x24e7b4,_0x2a25c6){_0x24e7b4=_0x24e7b4-0x0;var _0xddc7d2=_0x7334[_0x24e7b4];return _0xddc7d2;};'use strict';var util=require(_0x4733('0x0'));var _=require(_0x4733('0x1'));var BPromise=require(_0x4733('0x2'));var uuid=require('uuid');var moment=require('moment');var path=require(_0x4733('0x3'));var tiff2pdf=require('tiff2pdf');var gs=require(_0x4733('0x4'));var logger=require(_0x4733('0x5'))(_0x4733('0x6'));var ami=require(_0x4733('0x7'));var rpcDb=require(_0x4733('0x8'));var Channel=require(_0x4733('0x9'));var ut=require(_0x4733('0xa'));var Action=require(_0x4733('0xb'));var faxAccount=require(_0x4733('0xc'));var attachment=require(_0x4733('0xd'));var faxMessage=require(_0x4733('0xe'));function Fax(_0x3562b7){this[_0x4733('0xf')]={};this[_0x4733('0x10')]=_0x3562b7[_0x4733('0x10')];this[_0x4733('0x11')]=_0x3562b7[_0x4733('0x11')];this['actions']={};ami['on'](_0x4733('0x12'),this[_0x4733('0x13')]['bind'](this));ami['on'](_0x4733('0x14'),this['syncVarSet'][_0x4733('0x15')](this));ami['on'](_0x4733('0x16'),this[_0x4733('0x17')][_0x4733('0x15')](this));ami['on'](_0x4733('0x18'),this[_0x4733('0x19')][_0x4733('0x15')](this));ami['on']('faxstatus',this[_0x4733('0x1a')]['bind'](this));ami['on'](_0x4733('0x1b'),this[_0x4733('0x1c')][_0x4733('0x15')](this));ami['on'](_0x4733('0x1d'),this[_0x4733('0x1e')][_0x4733('0x15')](this));ami['on'](_0x4733('0x1f'),this[_0x4733('0x20')][_0x4733('0x15')](this));}Fax['prototype'][_0x4733('0x13')]=function(_0x71e96c){if(_0x71e96c['context']===_0x4733('0x21')){for(var _0x1d2fb6 in this[_0x4733('0x10')]){if(this[_0x4733('0x10')]['hasOwnProperty'](_0x1d2fb6)){if(_0x71e96c['exten']===this[_0x4733('0x10')][_0x1d2fb6][_0x4733('0x22')]){this['channels'][_0x71e96c[_0x4733('0x23')]]={};this[_0x4733('0xf')][_0x71e96c[_0x4733('0x23')]][_0x4733('0x24')]=_0x71e96c['channel'];this[_0x4733('0xf')][_0x71e96c[_0x4733('0x23')]]['id']=this['faxAccounts'][_0x1d2fb6]['id'];this[_0x4733('0xf')][_0x71e96c[_0x4733('0x23')]]['name']=this[_0x4733('0x10')][_0x1d2fb6][_0x4733('0x25')];logger[_0x4733('0x26')](_0x71e96c[_0x4733('0x23')],_0x4733('0x27'));}}}}if(this[_0x4733('0x28')][_0x71e96c[_0x4733('0x23')]]){this[_0x4733('0xf')][_0x71e96c['uniqueid']]={};this[_0x4733('0xf')][_0x71e96c[_0x4733('0x23')]][_0x4733('0x24')]=_0x71e96c[_0x4733('0x24')];logger[_0x4733('0x26')](_0x71e96c[_0x4733('0x23')],_0x4733('0x27'));}};Fax[_0x4733('0x29')][_0x4733('0x2a')]=function(_0x23fe6c){if(this['channels'][_0x23fe6c[_0x4733('0x23')]]){for(var _0x4c91bc in _0x23fe6c['variable']){if(_0x23fe6c[_0x4733('0x2b')]['hasOwnProperty'](_0x4c91bc)){this[_0x4733('0xf')][_0x23fe6c['uniqueid']][_0x4c91bc]=_0x23fe6c['value'];}}}};Fax['prototype'][_0x4733('0x17')]=function(_0x3bfe53){if(this[_0x4733('0xf')][_0x3bfe53[_0x4733('0x23')]]){this['channels'][_0x3bfe53['uniqueid']]['channelstate']=_0x3bfe53[_0x4733('0x2c')];this['channels'][_0x3bfe53['uniqueid']][_0x4733('0x2d')]=_0x3bfe53[_0x4733('0x2d')];}};Fax[_0x4733('0x29')]['syncNewExten']=function(_0x523c61){if(this[_0x4733('0xf')][_0x523c61[_0x4733('0x23')]]){for(var _0x22d38a in _0x523c61[_0x4733('0x2b')]){if(_0x523c61[_0x4733('0x2b')]['hasOwnProperty'](_0x22d38a)){this[_0x4733('0xf')][_0x523c61[_0x4733('0x23')]][_0x22d38a]=_0x523c61[_0x4733('0x2e')];}}}};Fax[_0x4733('0x29')][_0x4733('0x1a')]=function(_0x4b133f){if(this['channels'][_0x4b133f[_0x4733('0x23')]]){this[_0x4733('0xf')][_0x4b133f[_0x4733('0x23')]][_0x4733('0x2f')]=_0x4b133f[_0x4733('0x2f')];this['channels'][_0x4b133f[_0x4733('0x23')]][_0x4733('0x30')]=_0x4b133f[_0x4733('0x30')];this['channels'][_0x4b133f[_0x4733('0x23')]][_0x4733('0x22')]=_0x4b133f[_0x4733('0x22')];this[_0x4733('0xf')][_0x4b133f[_0x4733('0x23')]][_0x4733('0x31')]=_0x4b133f[_0x4733('0x31')];logger[_0x4733('0x26')](_0x4b133f['uniqueid'],_0x4733('0x32'));}};Fax['prototype'][_0x4733('0x1c')]=function(_0x29db03){var _0x381fa8=this;if(this[_0x4733('0xf')][_0x29db03[_0x4733('0x23')]]){var _0x1a8b50=this[_0x4733('0xf')][_0x29db03[_0x4733('0x23')]]['id'];this['channels'][_0x29db03[_0x4733('0x23')]][_0x4733('0x33')]=_0x29db03['remotestationid'];this[_0x4733('0xf')][_0x29db03[_0x4733('0x23')]]['pagestransferred']=_0x29db03[_0x4733('0x34')];this['channels'][_0x29db03[_0x4733('0x23')]]['localstationid']=_0x29db03[_0x4733('0x22')];this[_0x4733('0xf')][_0x29db03['uniqueid']]['resolution']=_0x29db03[_0x4733('0x35')];this[_0x4733('0xf')][_0x29db03['uniqueid']][_0x4733('0x36')]=_0x29db03[_0x4733('0x36')];this[_0x4733('0xf')][_0x29db03[_0x4733('0x23')]][_0x4733('0x31')]=_0x29db03[_0x4733('0x31')];this[_0x4733('0xf')][_0x29db03[_0x4733('0x23')]][_0x4733('0x37')]=_0x29db03[_0x4733('0x37')];if(this[_0x4733('0xf')][_0x29db03[_0x4733('0x23')]][_0x4733('0x34')]>0x0){tiff2pdf(_0x29db03[_0x4733('0x31')],_0x4733('0x38'),function(_0x540cb8){logger[_0x4733('0x26')](_0x29db03[_0x4733('0x23')],'\x20result\x20conversion\x20file\x20',_0x540cb8[_0x4733('0x39')]);attachment[_0x4733('0x3a')]({'name':path[_0x4733('0x3b')](_0x29db03[_0x4733('0x31')])[_0x4733('0x25')],'basename':path[_0x4733('0x3b')](_0x29db03[_0x4733('0x31')])[_0x4733('0x25')]+_0x4733('0x3c'),'type':_0x4733('0x3d')})[_0x4733('0x3e')](function(_0x1a50f5){faxAccount[_0x4733('0x3f')](_0x1a8b50,{'from':_0x29db03[_0x4733('0x37')],'mapKey':'fax','body':path['parse'](_0x29db03[_0x4733('0x31')])[_0x4733('0x25')]+_0x4733('0x3c'),'AttachmentId':_0x1a50f5['id']})[_0x4733('0x40')](function(_0x81a314){logger[_0x4733('0x41')](_0x29db03[_0x4733('0x23')],_0x4733('0x42'),JSON[_0x4733('0x43')](_0x81a314));});})[_0x4733('0x40')](function(_0x4d8301){logger['error'](_0x29db03['uniqueid'],'\x20receiveFax\x20',JSON[_0x4733('0x43')](_0x4d8301));});});}logger[_0x4733('0x26')](_0x29db03[_0x4733('0x23')],_0x4733('0x44'));}};Fax[_0x4733('0x29')][_0x4733('0x20')]=function(_0x1c6abf){if(this[_0x4733('0x28')][_0x1c6abf[_0x4733('0x23')]]){_[_0x4733('0x45')](this['channels'][_0x1c6abf['uniqueid']],_[_0x4733('0x46')](_0x1c6abf,['response',_0x4733('0x47')]));}};function updateStatus(_0x17e686){if(_0x17e686[_0x4733('0x48')]){faxMessage['update'](_0x17e686[_0x4733('0x48')],{'failMessage':_0x4733('0x49')})[_0x4733('0x3e')](function(_0x114464){ut[_0x4733('0x4a')](_0x4733('0x4b'),_0x114464);})[_0x4733('0x40')](function(_0x2da475){ut[_0x4733('0x4a')]('[Fax][Message][Error][NoUpdate1]',_0x2da475);});}else{ut[_0x4733('0x4a')](_0x4733('0x4c'));}}Fax[_0x4733('0x29')]['updateStatus']=function(_0x2effd2,_0x130aee,_0xafb3f8){var _0x4a7fa=this;var _0x59344b={};if(_0x130aee){_0x59344b={'read':_0x130aee};}else{_0x59344b={'failMessage':_0xafb3f8};}if(this[_0x4733('0x28')][_0x2effd2]['AttachmentId']){faxMessage[_0x4733('0x4d')](this[_0x4733('0x28')][_0x2effd2][_0x4733('0x48')],_0x59344b)[_0x4733('0x3e')](function(_0x53321d){ut['logger'](_0x4733('0x4e'),_0x53321d);})[_0x4733('0x40')](function(_0x5e4668){ut['logger'](_0x4733('0x4f'),_0x5e4668);})[_0x4733('0x50')](function(){delete _0x4a7fa[_0x4733('0xf')][_0x2effd2];delete _0x4a7fa[_0x4733('0x28')][_0x2effd2];});}else{ut[_0x4733('0x4a')](_0x4733('0x51'));delete this[_0x4733('0xf')][_0x2effd2];delete this[_0x4733('0x28')][_0x2effd2];}};Fax['prototype']['syncHangup']=function(_0x3b7f06){var _0x5d45c5=this;if(this[_0x4733('0xf')][_0x3b7f06[_0x4733('0x23')]]){if(this[_0x4733('0x28')][_0x3b7f06['uniqueid']]){this['channels'][_0x3b7f06['uniqueid']]['id']=this[_0x4733('0x28')][_0x3b7f06[_0x4733('0x23')]]['id'];this[_0x4733('0xf')][_0x3b7f06['uniqueid']][_0x4733('0x25')]=this[_0x4733('0x28')][_0x3b7f06[_0x4733('0x23')]][_0x4733('0x25')];}logger[_0x4733('0x26')](_0x3b7f06[_0x4733('0x23')],this[_0x4733('0x28')][_0x3b7f06['uniqueid']]?_0x4733('0x52'):_0x4733('0x53'),JSON['stringify'](this['channels'][_0x3b7f06[_0x4733('0x23')]]));if(this[_0x4733('0x28')][_0x3b7f06[_0x4733('0x23')]]){if(this[_0x4733('0xf')][_0x3b7f06[_0x4733('0x23')]][_0x4733('0x54')]>0x0&&this[_0x4733('0xf')][_0x3b7f06[_0x4733('0x23')]][_0x4733('0x55')]==='SUCCESS'){this[_0x4733('0x56')](_0x3b7f06[_0x4733('0x23')],!![]);}else{this[_0x4733('0x56')](_0x3b7f06['uniqueid'],![],this[_0x4733('0xf')][_0x3b7f06['uniqueid']][_0x4733('0x57')]?_0x4733('0x58')+this[_0x4733('0xf')][_0x3b7f06[_0x4733('0x23')]][_0x4733('0x57')]:_0x4733('0x59'));}}}};Fax['prototype'][_0x4733('0x5a')]=function(_0x574787){var _0x15552d=this;return new BPromise(function(_0x12997e,_0x54326d){_0x15552d[_0x4733('0x5b')](_0x574787,_0x15552d['faxAccounts'][_0x574787['FaxAccountId']])[_0x4733('0x3e')](function(_0x28a04f){ut[_0x4733('0x4a')](_0x4733('0x5c'),_0x28a04f);_0x12997e(ut[_0x4733('0x39')](_0x4733('0x5d')));})[_0x4733('0x40')](function(_0x181b34){ut[_0x4733('0x4a')]('[Fax][execOriginate][failure]',_0x181b34);updateStatus(_0x574787);_0x54326d(ut['message']('Fax\x20failed'));});});};Fax[_0x4733('0x29')][_0x4733('0x5e')]=function(_0x24f51d){var _0xa087d9=this;return new BPromise(function(_0x520936,_0x2c224d){var _0x1a743e=_0xa087d9[_0x4733('0x5f')](_0xa087d9['faxAccounts'][_0x24f51d[_0x4733('0x60')]]['Trunk'],_0x24f51d);if(_0x1a743e[_0x4733('0x61')]){_0x520936(ut['message']('Trunk\x20Reachable'));}else{_0x2c224d(ut[_0x4733('0x39')](_0x1a743e['message']));}});};function originate(_0x20f867,_0x523498,_0x4e835b){return new BPromise(function(_0x1a7baf,_0x5c6083){if(_0x4e835b){var _0x54bf73=util[_0x4733('0x62')](_0x4733('0x63'),path[_0x4733('0x3b')](_0x20f867['path'])[_0x4733('0x25')],_0x20f867[_0x4733('0x3')]);gs[_0x4733('0x64')](_0x54bf73)[_0x4733('0x3e')](function(){_0x20f867[_0x4733('0x3')]=util[_0x4733('0x62')]('%s/%s.tif',path[_0x4733('0x3b')](_0x20f867[_0x4733('0x3')])[_0x4733('0x65')],path['parse'](_0x20f867[_0x4733('0x3')])[_0x4733('0x25')]);_0x523498[_0x4733('0x66')]=_0x20f867[_0x4733('0x3')];ut[_0x4733('0x4a')](_0x4733('0x67'),'');ami[_0x4733('0x68')](ut[_0x4733('0x69')](_0x20f867,_0x523498))['then'](function(_0x583e6d){_0x1a7baf(_0x583e6d);})[_0x4733('0x40')](function(_0x4fac10){_0x5c6083(_0x4fac10);});})['catch'](function(_0x1f52ff){_0x5c6083(_0x1f52ff);});}else{ami[_0x4733('0x68')](ut[_0x4733('0x69')](_0x20f867,_0x523498))[_0x4733('0x3e')](function(_0x4830b4){_0x1a7baf(_0x4830b4);})[_0x4733('0x40')](function(_0x55450a){_0x5c6083(_0x55450a);});}});}Fax[_0x4733('0x29')]['execOriginate']=function(_0x542397,_0x129cc2){var _0x567faa=this;return new BPromise(function(_0x487408,_0x58d5ba){var _0x416e3f=uuid['v4']();var _0x4b172b=ut[_0x4733('0x6a')](_0x542397,_0x129cc2);_0x567faa[_0x4733('0x28')][_0x416e3f]=new Action(_0x416e3f,_0x129cc2,_0x542397);var _0x59cc5b=_0x567faa[_0x4733('0x28')][_0x416e3f];if(path['parse'](_0x542397['path'])[_0x4733('0x6b')]===_0x4733('0x3c')){originate(_0x59cc5b,_0x4b172b,!![])[_0x4733('0x3e')](function(_0x5a067b){_0x487408(_0x5a067b);})['catch'](function(_0x6179db){_0x58d5ba(_0x6179db);});}else{originate(_0x59cc5b,_0x4b172b,![])['then'](function(_0x3fd347){_0x487408(_0x3fd347);})[_0x4733('0x40')](function(_0x1e9f9a){_0x58d5ba(_0x1e9f9a);});}});};Fax[_0x4733('0x29')][_0x4733('0x6c')]=function(_0x27494c){return!_['isNil'](_0x27494c)&&!_[_0x4733('0x6d')](_0x27494c[_0x4733('0x25')])&&!_[_0x4733('0x6d')](_0x27494c[_0x4733('0x6e')])&&_0x27494c['active']&&!_['isNil'](this[_0x4733('0x11')][util['format'](_0x4733('0x6f'),_0x27494c[_0x4733('0x25')])])&&!_[_0x4733('0x6d')](this[_0x4733('0x11')][util[_0x4733('0x62')](_0x4733('0x6f'),_0x27494c[_0x4733('0x25')])]['status'])&&(this[_0x4733('0x11')][util[_0x4733('0x62')]('SIP/%s',_0x27494c['name'])][_0x4733('0x30')]==='reachable'||this[_0x4733('0x11')][util['format']('SIP/%s',_0x27494c[_0x4733('0x25')])][_0x4733('0x30')]===_0x4733('0x70'));};Fax[_0x4733('0x29')][_0x4733('0x5f')]=function(_0x56729d,_0x3a68d7){if(!this[_0x4733('0x6c')](_0x56729d)){ut[_0x4733('0x4a')]('[Fax][checkTrunk][Trunk\x20not\x20work]',_['isNil'](_0x56729d)?'':_0x56729d['name']+_0x4733('0x71'));return{'isValid':![],'message':_0x4733('0x72')};}if(_[_0x4733('0x6d')](_0x3a68d7[_0x4733('0x6')])){ut[_0x4733('0x4a')](_0x4733('0x73'),JSON['stringify'](_0x3a68d7));return{'isValid':![],'message':_0x4733('0x74')};}if(_[_0x4733('0x6d')](_0x3a68d7[_0x4733('0x3')])){ut['logger']('[Fax][checkTrunk][Empty\x20path]',JSON['stringify'](_0x3a68d7));return{'isValid':![],'message':_0x4733('0x75')};}return{'isValid':!![],'message':'Is\x20Valid'};};module[_0x4733('0x76')]=Fax;
\ No newline at end of file
index bf745ea..afd2edf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb493=['then','[Notify]\x20','bluebird','../../../config/logger','lodash','error','inspect','notify','resolve'];(function(_0x273f92,_0x5e6ea2){var _0x38b53c=function(_0x494d4e){while(--_0x494d4e){_0x273f92['push'](_0x273f92['shift']());}};_0x38b53c(++_0x5e6ea2);}(_0xb493,0xbf));var _0x3b49=function(_0x5ca9b4,_0x2bfd14){_0x5ca9b4=_0x5ca9b4-0x0;var _0x42731a=_0xb493[_0x5ca9b4];return _0x42731a;};'use strict';var util=require('util');var BPromise=require(_0x3b49('0x0'));var logger=require(_0x3b49('0x1'))('preview');var _=require(_0x3b49('0x2'));var faxAccount=require('../rpc/faxAccount');function loggerCatch(_0x2ef26b){return function(_0x50f3d4){logger[_0x3b49('0x3')](_0x2ef26b,util[_0x3b49('0x4')](_0x50f3d4,{'showHidden':![],'depth':null}));};}exports[_0x3b49('0x5')]=function(_0x5cde62,_0x1722dc){return BPromise[_0x3b49('0x6')]()[_0x3b49('0x7')](faxAccount['notify'](_0x5cde62,_0x1722dc))['catch'](loggerCatch(_0x3b49('0x8')));};
\ No newline at end of file
+var _0xc4cb=['[Notify]\x20','util','bluebird','../../../config/logger','preview','lodash','../rpc/faxAccount','notify','resolve','catch'];(function(_0x182d72,_0x584f35){var _0x519085=function(_0x11ee6f){while(--_0x11ee6f){_0x182d72['push'](_0x182d72['shift']());}};_0x519085(++_0x584f35);}(_0xc4cb,0x65));var _0xbc4c=function(_0xb0f253,_0x476cc1){_0xb0f253=_0xb0f253-0x0;var _0x25dbbe=_0xc4cb[_0xb0f253];return _0x25dbbe;};'use strict';var util=require(_0xbc4c('0x0'));var BPromise=require(_0xbc4c('0x1'));var logger=require(_0xbc4c('0x2'))(_0xbc4c('0x3'));var _=require(_0xbc4c('0x4'));var faxAccount=require(_0xbc4c('0x5'));function loggerCatch(_0x4a8b0a){return function(_0x16feca){logger['error'](_0x4a8b0a,util['inspect'](_0x16feca,{'showHidden':![],'depth':null}));};}exports[_0xbc4c('0x6')]=function(_0x5f4aee,_0x25ce96){return BPromise[_0xbc4c('0x7')]()['then'](faxAccount[_0xbc4c('0x6')](_0x5f4aee,_0x25ce96))[_0xbc4c('0x8')](loggerCatch(_0xbc4c('0x9')));};
\ No newline at end of file
index a009808..bcfe7b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba92=['util','../../../../config/logger','fax','bluebird','child_process','exec','execute','info','Exec\x20gs','inspect'];(function(_0x58e1f2,_0x462a76){var _0x226926=function(_0x2c12d4){while(--_0x2c12d4){_0x58e1f2['push'](_0x58e1f2['shift']());}};_0x226926(++_0x462a76);}(_0xba92,0x96));var _0x2ba9=function(_0x2b62b4,_0x2edc08){_0x2b62b4=_0x2b62b4-0x0;var _0x59a70a=_0xba92[_0x2b62b4];return _0x59a70a;};'use strict';var util=require(_0x2ba9('0x0'));var logger=require(_0x2ba9('0x1'))(_0x2ba9('0x2'));var BPromise=require(_0x2ba9('0x3'));var exec=require(_0x2ba9('0x4'))[_0x2ba9('0x5')];exports[_0x2ba9('0x6')]=function(_0x2943d4){return new BPromise(function(_0x5b39dd,_0x4c2c68){exec(_0x2943d4,function(_0x708266,_0x28b933,_0x1893d3){logger[_0x2ba9('0x7')](_0x2ba9('0x8'),_0x28b933);if(_0x708266){logger[_0x2ba9('0x7')]('Exec\x20gs','\x20Error\x20:',util[_0x2ba9('0x9')](_0x708266,{'showHidden':![],'depth':null}),_0x28b933,_0x1893d3);_0x4c2c68(_0x708266);}_0x5b39dd(_0x28b933);});});};
\ No newline at end of file
+var _0x470e=['bluebird','child_process','exec','execute','info','Exec\x20gs','\x20Error\x20:','inspect','../../../../config/logger','fax'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x470e,0x13e));var _0xe470=function(_0x310ee0,_0x1c5d46){_0x310ee0=_0x310ee0-0x0;var _0x2aae43=_0x470e[_0x310ee0];return _0x2aae43;};'use strict';var util=require('util');var logger=require(_0xe470('0x0'))(_0xe470('0x1'));var BPromise=require(_0xe470('0x2'));var exec=require(_0xe470('0x3'))[_0xe470('0x4')];exports[_0xe470('0x5')]=function(_0x1b57c5){return new BPromise(function(_0x6a8121,_0x40f4fb){exec(_0x1b57c5,function(_0x427927,_0x543da8,_0x1d5a0b){logger[_0xe470('0x6')](_0xe470('0x7'),_0x543da8);if(_0x427927){logger[_0xe470('0x6')](_0xe470('0x7'),_0xe470('0x8'),util[_0xe470('0x9')](_0x427927,{'showHidden':![],'depth':null}),_0x543da8,_0x1d5a0b);_0x40f4fb(_0x427927);}_0x6a8121(_0x543da8);});});};
\ No newline at end of file
index 39a6c30..3968b3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x837d=['lodash','moment','fax','message','logger','info','inspect','addVariables','headerinfo','minrate','maxrate','format','\x22%s\x22','modem','gateway','faxdetect','t38timeout','localstationid','path','variablesAction','uniqueid','channel','from-sip'];(function(_0x4d120d,_0x55a2c9){var _0x12b156=function(_0x3b0aae){while(--_0x3b0aae){_0x4d120d['push'](_0x4d120d['shift']());}};_0x12b156(++_0x55a2c9);}(_0x837d,0x1e3));var _0xd837=function(_0x2bc851,_0x3b0a69){_0x2bc851=_0x2bc851-0x0;var _0x33df0f=_0x837d[_0x2bc851];return _0x33df0f;};'use strict';var util=require('util');var _=require(_0xd837('0x0'));var moment=require(_0xd837('0x1'));var logger=require('../../../../config/logger')(_0xd837('0x2'));exports[_0xd837('0x3')]=function(_0x57c35f){return{'message':_0x57c35f};};exports[_0xd837('0x4')]=function(_0x2130a0,_0x2f69b8){logger[_0xd837('0x5')](_0x2130a0,util[_0xd837('0x6')](_0x2f69b8,{'showHidden':![],'depth':null}));};exports[_0xd837('0x7')]=function(_0x3bd6f6,_0x1aaf3f){var _0x3b4043={'XMF-ECM':_0x1aaf3f['ecm'],'XMF-HEADERINFO':_0x1aaf3f[_0xd837('0x8')],'XMF-MINRATE':_0x1aaf3f[_0xd837('0x9')],'XMF-MAXRATE':_0x1aaf3f[_0xd837('0xa')],'XMF-MODEM':util[_0xd837('0xb')](_0xd837('0xc'),_0x1aaf3f[_0xd837('0xd')]),'XMF-GATEWAY':_0x1aaf3f[_0xd837('0xe')],'XMF-FAXDETECT':_0x1aaf3f[_0xd837('0xf')],'XMF-T38TIMEOUT':_0x1aaf3f[_0xd837('0x10')],'XMF-LOCALSTATIONID':_0x1aaf3f[_0xd837('0x11')],'XMF-PATH':_0x3bd6f6[_0xd837('0x12')]};return _0x3b4043;};exports[_0xd837('0x13')]=function(_0x4b314b,_0x5ef2fe){return{'actionid':_0x4b314b[_0xd837('0x14')],'action':'originate','channel':_0x4b314b[_0xd837('0x15')],'Exten':'xcally-motion-fax','Context':_0xd837('0x16'),'Priority':'1','callerid':util['format']('\x22%s\x22\x20<%s>',_0x4b314b[_0xd837('0x8')]?_0x4b314b['headerinfo']:'',_0x4b314b['localstationid']),'variable':_0x5ef2fe,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x4b314b[_0xd837('0x14')]};};
\ No newline at end of file
+var _0x28a8=['addVariables','ecm','maxrate','format','gateway','faxdetect','localstationid','path','uniqueid','originate','channel','xcally-motion-fax','from-sip','\x22%s\x22\x20<%s>','headerinfo','lodash','../../../../config/logger','message','logger','inspect'];(function(_0x169f86,_0xadf81f){var _0x30cced=function(_0x84611b){while(--_0x84611b){_0x169f86['push'](_0x169f86['shift']());}};_0x30cced(++_0xadf81f);}(_0x28a8,0x163));var _0x828a=function(_0x321c6d,_0x6e6f64){_0x321c6d=_0x321c6d-0x0;var _0x2f36da=_0x28a8[_0x321c6d];return _0x2f36da;};'use strict';var util=require('util');var _=require(_0x828a('0x0'));var moment=require('moment');var logger=require(_0x828a('0x1'))('fax');exports[_0x828a('0x2')]=function(_0x287942){return{'message':_0x287942};};exports[_0x828a('0x3')]=function(_0x30ed78,_0x36c1a5){logger['info'](_0x30ed78,util[_0x828a('0x4')](_0x36c1a5,{'showHidden':![],'depth':null}));};exports[_0x828a('0x5')]=function(_0x35d86d,_0x1088b8){var _0x5bc362={'XMF-ECM':_0x1088b8[_0x828a('0x6')],'XMF-HEADERINFO':_0x1088b8['headerinfo'],'XMF-MINRATE':_0x1088b8['minrate'],'XMF-MAXRATE':_0x1088b8[_0x828a('0x7')],'XMF-MODEM':util[_0x828a('0x8')]('\x22%s\x22',_0x1088b8['modem']),'XMF-GATEWAY':_0x1088b8[_0x828a('0x9')],'XMF-FAXDETECT':_0x1088b8[_0x828a('0xa')],'XMF-T38TIMEOUT':_0x1088b8['t38timeout'],'XMF-LOCALSTATIONID':_0x1088b8[_0x828a('0xb')],'XMF-PATH':_0x35d86d[_0x828a('0xc')]};return _0x5bc362;};exports['variablesAction']=function(_0x34322b,_0x3774f0){return{'actionid':_0x34322b[_0x828a('0xd')],'action':_0x828a('0xe'),'channel':_0x34322b[_0x828a('0xf')],'Exten':_0x828a('0x10'),'Context':_0x828a('0x11'),'Priority':'1','callerid':util[_0x828a('0x8')](_0x828a('0x12'),_0x34322b[_0x828a('0x13')]?_0x34322b[_0x828a('0x13')]:'',_0x34322b['localstationid']),'variable':_0x3774f0,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x34322b[_0x828a('0xd')]};};
\ No newline at end of file
index 1423a23..293b0da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0968=['catch','error','[index.js][initParams]','inspect','listen','sync','bluebird','moment','./server','./realtime','./report','./acw','./trigger','./dialer','./preview','./fax','./rpc/voiceQueue','./rpc/voiceCallReport','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/zoho','./rpc/integrations/freshsales','../../config/logger','ami','get','hour','resolve','then','getAgents','initAgents','getTelephones','initTelephones','getTrunks','initTrunks','getVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','initZendeskAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','initVtigerAccounts','getFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','getFaxAccounts','initFaxAccounts','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports'];(function(_0x42bfef,_0x371020){var _0x350d9c=function(_0x45e1f8){while(--_0x45e1f8){_0x42bfef['push'](_0x42bfef['shift']());}};_0x350d9c(++_0x371020);}(_0x0968,0x1aa));var _0x8096=function(_0x32e933,_0x4e9662){_0x32e933=_0x32e933-0x0;var _0x2e0f95=_0x0968[_0x32e933];return _0x2e0f95;};'use strict';var BPromise=require(_0x8096('0x0'));var util=require('util');var moment=require(_0x8096('0x1'));var server=require(_0x8096('0x2'));var Realtime=require(_0x8096('0x3'));var Report=require(_0x8096('0x4'));var Acw=require(_0x8096('0x5'));var Trigger=require(_0x8096('0x6'));var Dialer=require(_0x8096('0x7'));var Preview=require(_0x8096('0x8'));var Fax=require(_0x8096('0x9'));var user=require('./rpc/user');var voiceQueue=require(_0x8096('0xa'));var voiceQueueReport=require('./rpc/voiceQueueReport');var voiceCallReport=require(_0x8096('0xb'));var trunk=require('./rpc/trunk');var trigger=require(_0x8096('0xc'));var template=require(_0x8096('0xd'));var cmHopperHistory=require(_0x8096('0xe'));var campaign=require(_0x8096('0xf'));var voiceExtension=require(_0x8096('0x10'));var faxAccount=require(_0x8096('0x11'));var zendesk=require(_0x8096('0x12'));var salesforce=require(_0x8096('0x13'));var sugarcrm=require(_0x8096('0x14'));var freshdesk=require('./rpc/integrations/freshdesk');var desk=require('./rpc/integrations/desk');var zoho=require(_0x8096('0x15'));var vtiger=require('./rpc/integrations/vtiger');var freshsales=require(_0x8096('0x16'));var servicenow=require('./rpc/integrations/servicenow');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(_0x8096('0x17'))(_0x8096('0x18'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x8096('0x19')](_0x8096('0x1a'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0x8096('0x1a'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x8096('0x1b')]()[_0x8096('0x1c')](user[_0x8096('0x1d')]())[_0x8096('0x1c')](realtime[_0x8096('0x1e')]())['then'](user[_0x8096('0x1f')]())[_0x8096('0x1c')](realtime[_0x8096('0x20')]())[_0x8096('0x1c')](trunk[_0x8096('0x21')]())[_0x8096('0x1c')](realtime[_0x8096('0x22')]())[_0x8096('0x1c')](voiceQueue[_0x8096('0x23')]())[_0x8096('0x1c')](realtime['initVoiceQueues']())[_0x8096('0x1c')](trigger[_0x8096('0x24')]())[_0x8096('0x1c')](realtime[_0x8096('0x25')]())[_0x8096('0x1c')](template[_0x8096('0x26')]())[_0x8096('0x1c')](realtime[_0x8096('0x27')]())[_0x8096('0x1c')](zendesk['getZendeskAccounts']())[_0x8096('0x1c')](realtime[_0x8096('0x28')]())[_0x8096('0x1c')](salesforce['getSalesforceAccounts']())[_0x8096('0x1c')](realtime['initSalesforceAccounts']())[_0x8096('0x1c')](sugarcrm[_0x8096('0x29')]())[_0x8096('0x1c')](realtime[_0x8096('0x2a')]())['then'](freshdesk[_0x8096('0x2b')]())[_0x8096('0x1c')](realtime[_0x8096('0x2c')]())[_0x8096('0x1c')](desk[_0x8096('0x2d')]())[_0x8096('0x1c')](realtime[_0x8096('0x2e')]())[_0x8096('0x1c')](zoho[_0x8096('0x2f')]())[_0x8096('0x1c')](realtime[_0x8096('0x30')]())[_0x8096('0x1c')](vtiger['getVtigerAccounts']())[_0x8096('0x1c')](realtime[_0x8096('0x31')]())[_0x8096('0x1c')](freshsales[_0x8096('0x32')]())[_0x8096('0x1c')](realtime['initFreshsalesAccounts']())[_0x8096('0x1c')](servicenow[_0x8096('0x33')]())[_0x8096('0x1c')](realtime[_0x8096('0x34')]())['then'](dynamics365[_0x8096('0x35')]())[_0x8096('0x1c')](realtime[_0x8096('0x36')]())[_0x8096('0x1c')](campaign[_0x8096('0x37')]())[_0x8096('0x1c')](realtime[_0x8096('0x38')]())[_0x8096('0x1c')](voiceExtension['getVoiceExtensions']())[_0x8096('0x1c')](realtime['initVoiceExtensions']())[_0x8096('0x1c')](faxAccount[_0x8096('0x39')]())[_0x8096('0x1c')](realtime[_0x8096('0x3a')]())[_0x8096('0x1c')](function(){return realtime;});}function initParams(){return BPromise[_0x8096('0x1b')]()[_0x8096('0x1c')](voiceQueueReport['getVoiceQueueReports']())[_0x8096('0x1c')](realtime['initVoiceQueueReports']())['then'](cmHopperHistory['getVoiceQueueHopperHistory']())[_0x8096('0x1c')](realtime[_0x8096('0x3b')]())[_0x8096('0x1c')](cmHopperHistory[_0x8096('0x3c')]())[_0x8096('0x1c')](realtime[_0x8096('0x3d')]())[_0x8096('0x1c')](voiceCallReport[_0x8096('0x3e')]())[_0x8096('0x1c')](realtime[_0x8096('0x3f')]())[_0x8096('0x40')](function(_0x220a05){logger[_0x8096('0x41')](_0x8096('0x42'),util[_0x8096('0x43')](_0x220a05,{'showHidden':![],'depth':null}));});}function main(){return server[_0x8096('0x44')](realtime,preview,fax)['then'](function(_0x28e6d2){return initRealtime();})[_0x8096('0x1c')](function(){return initParams();})['then'](function(){report[_0x8096('0x45')]();setInterval(initRealtime,0x1388);})[_0x8096('0x40')](function(_0x44d370){logger[_0x8096('0x41')]('[index.js][main]',util[_0x8096('0x43')](_0x44d370,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0x9608=['initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','initFreshdeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initServicenowAccounts','getDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','resolve','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','error','[index.js][initParams]','inspect','bluebird','util','moment','./acw','./trigger','./preview','./fax','./rpc/voiceQueue','./rpc/trunk','./rpc/trigger','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','../../config/logger','ami','get','hour','getAgents','initAgents','getTelephones','then','initTelephones'];(function(_0x4a1a1c,_0x5a7e8f){var _0x3c4fc7=function(_0x2e658d){while(--_0x2e658d){_0x4a1a1c['push'](_0x4a1a1c['shift']());}};_0x3c4fc7(++_0x5a7e8f);}(_0x9608,0x69));var _0x8960=function(_0x175fc6,_0x57798e){_0x175fc6=_0x175fc6-0x0;var _0x5e4f66=_0x9608[_0x175fc6];return _0x5e4f66;};'use strict';var BPromise=require(_0x8960('0x0'));var util=require(_0x8960('0x1'));var moment=require(_0x8960('0x2'));var server=require('./server');var Realtime=require('./realtime');var Report=require('./report');var Acw=require(_0x8960('0x3'));var Trigger=require(_0x8960('0x4'));var Dialer=require('./dialer');var Preview=require(_0x8960('0x5'));var Fax=require(_0x8960('0x6'));var user=require('./rpc/user');var voiceQueue=require(_0x8960('0x7'));var voiceQueueReport=require('./rpc/voiceQueueReport');var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require(_0x8960('0x8'));var trigger=require(_0x8960('0x9'));var template=require('./rpc/template');var cmHopperHistory=require(_0x8960('0xa'));var campaign=require(_0x8960('0xb'));var voiceExtension=require(_0x8960('0xc'));var faxAccount=require(_0x8960('0xd'));var zendesk=require(_0x8960('0xe'));var salesforce=require(_0x8960('0xf'));var sugarcrm=require(_0x8960('0x10'));var freshdesk=require(_0x8960('0x11'));var desk=require(_0x8960('0x12'));var zoho=require('./rpc/integrations/zoho');var vtiger=require(_0x8960('0x13'));var freshsales=require(_0x8960('0x14'));var servicenow=require(_0x8960('0x15'));var dynamics365=require('./rpc/integrations/dynamics365');var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require(_0x8960('0x16'))(_0x8960('0x17'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x8960('0x18')](_0x8960('0x19'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x8960('0x18')](_0x8960('0x19'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise['resolve']()['then'](user[_0x8960('0x1a')]())['then'](realtime[_0x8960('0x1b')]())['then'](user[_0x8960('0x1c')]())[_0x8960('0x1d')](realtime[_0x8960('0x1e')]())[_0x8960('0x1d')](trunk['getTrunks']())['then'](realtime[_0x8960('0x1f')]())[_0x8960('0x1d')](voiceQueue[_0x8960('0x20')]())[_0x8960('0x1d')](realtime[_0x8960('0x21')]())[_0x8960('0x1d')](trigger[_0x8960('0x22')]())[_0x8960('0x1d')](realtime[_0x8960('0x23')]())[_0x8960('0x1d')](template[_0x8960('0x24')]())['then'](realtime[_0x8960('0x25')]())['then'](zendesk[_0x8960('0x26')]())['then'](realtime[_0x8960('0x27')]())[_0x8960('0x1d')](salesforce[_0x8960('0x28')]())[_0x8960('0x1d')](realtime[_0x8960('0x29')]())[_0x8960('0x1d')](sugarcrm['getSugarcrmAccounts']())[_0x8960('0x1d')](realtime['initSugarcrmAccounts']())['then'](freshdesk['getFreshdeskAccounts']())['then'](realtime[_0x8960('0x2a')]())[_0x8960('0x1d')](desk['getDeskAccounts']())[_0x8960('0x1d')](realtime['initDeskAccounts']())['then'](zoho[_0x8960('0x2b')]())[_0x8960('0x1d')](realtime[_0x8960('0x2c')]())[_0x8960('0x1d')](vtiger[_0x8960('0x2d')]())['then'](realtime[_0x8960('0x2e')]())[_0x8960('0x1d')](freshsales[_0x8960('0x2f')]())[_0x8960('0x1d')](realtime['initFreshsalesAccounts']())[_0x8960('0x1d')](servicenow['getServicenowAccounts']())['then'](realtime[_0x8960('0x30')]())['then'](dynamics365[_0x8960('0x31')]())[_0x8960('0x1d')](realtime['initDynamics365Accounts']())['then'](campaign[_0x8960('0x32')]())[_0x8960('0x1d')](realtime[_0x8960('0x33')]())[_0x8960('0x1d')](voiceExtension[_0x8960('0x34')]())['then'](realtime[_0x8960('0x35')]())[_0x8960('0x1d')](faxAccount[_0x8960('0x36')]())[_0x8960('0x1d')](realtime['initFaxAccounts']())['then'](function(){return realtime;});}function initParams(){return BPromise[_0x8960('0x37')]()['then'](voiceQueueReport[_0x8960('0x38')]())[_0x8960('0x1d')](realtime[_0x8960('0x39')]())[_0x8960('0x1d')](cmHopperHistory[_0x8960('0x3a')]())[_0x8960('0x1d')](realtime[_0x8960('0x3b')]())[_0x8960('0x1d')](cmHopperHistory[_0x8960('0x3c')]())['then'](realtime[_0x8960('0x3d')]())['then'](voiceCallReport[_0x8960('0x3e')]())[_0x8960('0x1d')](realtime[_0x8960('0x3f')]())[_0x8960('0x40')](function(_0x438245){logger[_0x8960('0x41')](_0x8960('0x42'),util[_0x8960('0x43')](_0x438245,{'showHidden':![],'depth':null}));});}function main(){return server['listen'](realtime,preview,fax)[_0x8960('0x1d')](function(_0x1f6e66){return initRealtime();})[_0x8960('0x1d')](function(){return initParams();})[_0x8960('0x1d')](function(){report['sync']();setInterval(initRealtime,0x1388);})[_0x8960('0x40')](function(_0x159c10){logger['error']('[index.js][main]',util['inspect'](_0x159c10,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index 937d5c3..ad6e8be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['idle','inuse','talking','voiceStatusTime','toNumber','format','voiceStatusQueue','stringify','user:%s','emit','user:save','user:presence','exports','moment','md5','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','email','accountcode','fullname','unknown','stateTime','status','address','mobile','interface','online','voiceStatus','voiceStatusCallerIdNumber','onhold','local','prototype','state','toLowerCase','not_inuse'];(function(_0x2e43b1,_0x386b2e){var _0x5c3971=function(_0x304fd0){while(--_0x304fd0){_0x2e43b1['push'](_0x2e43b1['shift']());}};_0x5c3971(++_0x386b2e);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3071('0x0'));var md5=require(_0x3071('0x1'));var Redis=require(_0x3071('0x2'));var config=require(_0x3071('0x3'));config[_0x3071('0x4')]=_['defaults'](config[_0x3071('0x4')],{'host':_0x3071('0x5'),'port':0x18eb});var io=require(_0x3071('0x6'))(new Redis(config[_0x3071('0x4')]));function Agent(_0xabd7b6){this['id']=_0xabd7b6['id']||0x0;this[_0x3071('0x7')]=_0xabd7b6[_0x3071('0x7')]||'';this[_0x3071('0x8')]=_0xabd7b6[_0x3071('0x8')]||'';this[_0x3071('0x9')]=_0xabd7b6[_0x3071('0x9')]||'';this[_0x3071('0xa')]=_0xabd7b6[_0x3071('0xa')]||'';this['state']=_0x3071('0xb');this[_0x3071('0xc')]=0x0;this[_0x3071('0xd')]=_0x3071('0xb');this[_0x3071('0xe')]='';this['phone']='';this[_0x3071('0xf')]='';this[_0x3071('0x10')]='';this[_0x3071('0x11')]=_0xabd7b6[_0x3071('0x11')]||![];this[_0x3071('0x12')]='unknown';this['voiceStatusTime']=0x0;this[_0x3071('0x13')]='';this['voiceStatusQueue']='';this[_0x3071('0x14')]=![];this[_0x3071('0x15')]=![];this['md5']='';}Agent[_0x3071('0x16')]['updateStatusRealtime']=function(_0x2fc15d){var _0x45c93b;if(_0x2fc15d&&_0x2fc15d[_0x3071('0x17')]){_0x45c93b=_0x2fc15d[_0x3071('0x17')][_0x3071('0x18')]();switch(_0x45c93b){case _0x3071('0x19'):_0x45c93b=_0x3071('0x1a');break;case _0x3071('0x1b'):_0x45c93b=_0x3071('0x1c');break;}}if(_0x45c93b&&this[_0x3071('0x12')]!==_0x45c93b||_0x2fc15d['statePause']){this[_0x3071('0x1d')]=_[_0x3071('0x1e')](moment()[_0x3071('0x1f')]('x'));}if(_0x45c93b){this[_0x3071('0x12')]=_0x45c93b;}var _0x3acf0e={'id':this['id'],'name':this[_0x3071('0x7')],'email':this[_0x3071('0x8')],'accountcode':this[_0x3071('0x9')],'fullname':this['fullname'],'state':this[_0x3071('0x17')],'stateTime':this[_0x3071('0xc')],'status':this[_0x3071('0xd')],'address':this['address'],'online':this[_0x3071('0x11')],'voiceStatus':this['voiceStatus'],'voiceStatusTime':this[_0x3071('0x1d')],'voiceStatusCallerIdNumber':this[_0x3071('0x13')],'voiceStatusQueue':this[_0x3071('0x20')],'interface':this[_0x3071('0x10')],'onhold':this[_0x3071('0x14')]};var _0x34c50e=md5(JSON[_0x3071('0x21')](_0x3acf0e));if(this[_0x3071('0x1')]!==_0x34c50e){this['md5']=_0x34c50e;io['to'](util['format'](_0x3071('0x22'),_0x3acf0e[_0x3071('0x7')]))[_0x3071('0x23')](_0x3071('0x24'),_0x3acf0e);io[_0x3071('0x23')](_0x3071('0x25'),_0x3acf0e);}};module[_0x3071('0x26')]=Agent;
\ No newline at end of file
+var _0xe706=['address','phone','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','onhold','updateStatusRealtime','not_inuse','inuse','talking','format','interface','stringify','md5','user:%s','emit','user:presence','lodash','util','moment','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','email','accountcode','fullname','state','unknown','stateTime','status'];(function(_0x3e10eb,_0x1562cc){var _0x1c83d2=function(_0x5e6b21){while(--_0x5e6b21){_0x3e10eb['push'](_0x3e10eb['shift']());}};_0x1c83d2(++_0x1562cc);}(_0xe706,0xa3));var _0x6e70=function(_0x24c963,_0x5f32a4){_0x24c963=_0x24c963-0x0;var _0x32a0eb=_0xe706[_0x24c963];return _0x32a0eb;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var moment=require(_0x6e70('0x2'));var md5=require('md5');var Redis=require(_0x6e70('0x3'));var config=require(_0x6e70('0x4'));config[_0x6e70('0x5')]=_[_0x6e70('0x6')](config[_0x6e70('0x5')],{'host':_0x6e70('0x7'),'port':0x18eb});var io=require(_0x6e70('0x8'))(new Redis(config[_0x6e70('0x5')]));function Agent(_0x1b0389){this['id']=_0x1b0389['id']||0x0;this[_0x6e70('0x9')]=_0x1b0389[_0x6e70('0x9')]||'';this[_0x6e70('0xa')]=_0x1b0389[_0x6e70('0xa')]||'';this[_0x6e70('0xb')]=_0x1b0389[_0x6e70('0xb')]||'';this[_0x6e70('0xc')]=_0x1b0389[_0x6e70('0xc')]||'';this[_0x6e70('0xd')]=_0x6e70('0xe');this[_0x6e70('0xf')]=0x0;this[_0x6e70('0x10')]=_0x6e70('0xe');this[_0x6e70('0x11')]='';this[_0x6e70('0x12')]='';this['mobile']='';this['interface']='';this[_0x6e70('0x13')]=_0x1b0389[_0x6e70('0x13')]||![];this[_0x6e70('0x14')]=_0x6e70('0xe');this[_0x6e70('0x15')]=0x0;this[_0x6e70('0x16')]='';this[_0x6e70('0x17')]='';this[_0x6e70('0x18')]=![];this['local']=![];this['md5']='';}Agent['prototype'][_0x6e70('0x19')]=function(_0x5a37a6){var _0x53aed0;if(_0x5a37a6&&_0x5a37a6[_0x6e70('0xd')]){_0x53aed0=_0x5a37a6[_0x6e70('0xd')]['toLowerCase']();switch(_0x53aed0){case _0x6e70('0x1a'):_0x53aed0='idle';break;case _0x6e70('0x1b'):_0x53aed0=_0x6e70('0x1c');break;}}if(_0x53aed0&&this['voiceStatus']!==_0x53aed0||_0x5a37a6['statePause']){this[_0x6e70('0x15')]=_['toNumber'](moment()[_0x6e70('0x1d')]('x'));}if(_0x53aed0){this[_0x6e70('0x14')]=_0x53aed0;}var _0x53acdc={'id':this['id'],'name':this['name'],'email':this[_0x6e70('0xa')],'accountcode':this[_0x6e70('0xb')],'fullname':this[_0x6e70('0xc')],'state':this[_0x6e70('0xd')],'stateTime':this[_0x6e70('0xf')],'status':this[_0x6e70('0x10')],'address':this[_0x6e70('0x11')],'online':this[_0x6e70('0x13')],'voiceStatus':this[_0x6e70('0x14')],'voiceStatusTime':this[_0x6e70('0x15')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0x6e70('0x17')],'interface':this[_0x6e70('0x1e')],'onhold':this[_0x6e70('0x18')]};var _0x502b2d=md5(JSON[_0x6e70('0x1f')](_0x53acdc));if(this[_0x6e70('0x20')]!==_0x502b2d){this[_0x6e70('0x20')]=_0x502b2d;io['to'](util['format'](_0x6e70('0x21'),_0x53acdc['name']))['emit']('user:save',_0x53acdc);io[_0x6e70('0x22')](_0x6e70('0x23'),_0x53acdc);}};module['exports']=Agent;
\ No newline at end of file
index b307ff8..38f15c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5282=['dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','name','type','campaign','originated','temp','ivrTotalCallsDays','message','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency'];(function(_0x8c675c,_0x3f0aee){var _0x8a2ead=function(_0x5bb11a){while(--_0x5bb11a){_0x8c675c['push'](_0x8c675c['shift']());}};_0x8a2ead(++_0x3f0aee);}(_0x5282,0x1bd));var _0x2528=function(_0x594e11,_0x28f652){_0x594e11=_0x594e11-0x0;var _0x5418ad=_0x5282[_0x594e11];return _0x5418ad;};'use strict';function Campaign(_0x5c116d){this['id']=_0x5c116d['id']||0x0;this[_0x2528('0x0')]=_0x5c116d[_0x2528('0x0')]||'';this[_0x2528('0x1')]=_0x5c116d[_0x2528('0x1')]||_0x2528('0x2');this[_0x2528('0x3')]=0x0;this[_0x2528('0x4')]=0x0;this['ivrAnswerCallsDay']=0x0;this[_0x2528('0x5')]=0x0;this[_0x2528('0x6')]='';this['sendMessageOneNotActive']=!![];this['active']=_0x5c116d[_0x2528('0x7')];this[_0x2528('0x8')]=_0x5c116d['limitCalls'];this[_0x2528('0x9')]=_0x5c116d[_0x2528('0x9')]||null;this[_0x2528('0xa')]=_0x5c116d[_0x2528('0xa')]?_0x5c116d[_0x2528('0xa')]:null;this[_0x2528('0xb')]=_0x5c116d[_0x2528('0xb')];this['dialOriginateCallerIdNumber']=_0x5c116d['dialOriginateCallerIdNumber'];this[_0x2528('0xc')]=_0x5c116d[_0x2528('0xc')]||0x1e;this[_0x2528('0xd')]=_0x5c116d[_0x2528('0xd')];this[_0x2528('0xe')]=_0x5c116d[_0x2528('0xe')];this[_0x2528('0xf')]=_0x5c116d['dialBusyMaxRetry'];this['dialBusyRetryFrequency']=_0x5c116d[_0x2528('0x10')];this[_0x2528('0x11')]=_0x5c116d[_0x2528('0x11')];this[_0x2528('0x12')]=_0x5c116d['dialNoAnswerRetryFrequency'];this[_0x2528('0x13')]=_0x5c116d['dialGlobalMaxRetry'];this[_0x2528('0x14')]=_0x5c116d['dialNoSuchNumberMaxRetry']||0x3;this['dialNoSuchNumberRetryFrequency']=_0x5c116d[_0x2528('0x15')]||0x96;this[_0x2528('0x16')]=_0x5c116d[_0x2528('0x16')]||0x3;this['dialDropRetryFrequency']=_0x5c116d['dialDropRetryFrequency']||0x96;this[_0x2528('0x17')]=_0x5c116d[_0x2528('0x17')]||0x3;this[_0x2528('0x18')]=_0x5c116d['dialAbandonedRetryFrequency']||0x96;this[_0x2528('0x19')]=_0x5c116d[_0x2528('0x19')]||0x3;this[_0x2528('0x1a')]=_0x5c116d[_0x2528('0x1a')]||0x96;this['dialAgentRejectMaxRetry']=_0x5c116d[_0x2528('0x1b')]||0x3;this[_0x2528('0x1c')]=_0x5c116d[_0x2528('0x1c')]||0x96;this[_0x2528('0x1d')]=_0x5c116d[_0x2528('0x1d')]||'DESC';this[_0x2528('0x1e')]=_0x5c116d[_0x2528('0x1e')]||undefined;this[_0x2528('0x1f')]=_0x5c116d['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x2528('0x20')]=_0x5c116d['dialCutDigit']||undefined;this[_0x2528('0x21')]=_0x5c116d[_0x2528('0x21')]?_0x5c116d[_0x2528('0x21')]:undefined;this['Trunk']=_0x5c116d[_0x2528('0x22')]?_0x5c116d[_0x2528('0x22')]:undefined;this['Interval']=_0x5c116d['Interval']?_0x5c116d[_0x2528('0x23')]:undefined;this[_0x2528('0x24')]=_0x5c116d[_0x2528('0x24')]?_0x5c116d[_0x2528('0x24')]:undefined;this['dialQueueProject']=_0x5c116d[_0x2528('0x24')]?_0x5c116d[_0x2528('0x24')][_0x2528('0x0')]:undefined;this[_0x2528('0x25')]=_0x5c116d[_0x2528('0x25')]||![];this[_0x2528('0x26')]=_0x5c116d[_0x2528('0x26')];this[_0x2528('0x27')]=_0x5c116d['dialAMDGreeting'];this[_0x2528('0x28')]=_0x5c116d[_0x2528('0x28')];this['dialAMDTotalAnalysisTime']=_0x5c116d[_0x2528('0x29')];this[_0x2528('0x2a')]=_0x5c116d[_0x2528('0x2a')];this[_0x2528('0x2b')]=_0x5c116d[_0x2528('0x2b')];this[_0x2528('0x2c')]=_0x5c116d[_0x2528('0x2c')];this[_0x2528('0x2d')]=_0x5c116d['dialAMDSilenceThreshold'];this['dialAMDMaximumWordLength']=_0x5c116d[_0x2528('0x2e')];}module['exports']=Campaign;
\ No newline at end of file
+var _0xbf1c=['dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','originated','temp','ivrAnswerCallsDay','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency'];(function(_0x209f9c,_0x4ea385){var _0x13c1ef=function(_0x455599){while(--_0x455599){_0x209f9c['push'](_0x209f9c['shift']());}};_0x13c1ef(++_0x4ea385);}(_0xbf1c,0xe7));var _0xcbf1=function(_0x484473,_0x5768b1){_0x484473=_0x484473-0x0;var _0x67551f=_0xbf1c[_0x484473];return _0x67551f;};'use strict';function Campaign(_0x34b729){this['id']=_0x34b729['id']||0x0;this[_0xcbf1('0x0')]=_0x34b729['name']||'';this[_0xcbf1('0x1')]=_0x34b729['type']||'campaign';this[_0xcbf1('0x2')]=0x0;this[_0xcbf1('0x3')]=0x0;this[_0xcbf1('0x4')]=0x0;this['ivrTotalCallsDays']=0x0;this[_0xcbf1('0x5')]='';this[_0xcbf1('0x6')]=!![];this[_0xcbf1('0x7')]=_0x34b729[_0xcbf1('0x7')];this['limitCalls']=_0x34b729[_0xcbf1('0x8')];this[_0xcbf1('0x9')]=_0x34b729[_0xcbf1('0x9')]||null;this['dialGlobalInterval']=_0x34b729[_0xcbf1('0xa')]?_0x34b729[_0xcbf1('0xa')]:null;this[_0xcbf1('0xb')]=_0x34b729[_0xcbf1('0xb')];this[_0xcbf1('0xc')]=_0x34b729[_0xcbf1('0xc')];this[_0xcbf1('0xd')]=_0x34b729[_0xcbf1('0xd')]||0x1e;this['dialCongestionMaxRetry']=_0x34b729[_0xcbf1('0xe')];this[_0xcbf1('0xf')]=_0x34b729[_0xcbf1('0xf')];this[_0xcbf1('0x10')]=_0x34b729[_0xcbf1('0x10')];this['dialBusyRetryFrequency']=_0x34b729[_0xcbf1('0x11')];this['dialNoAnswerMaxRetry']=_0x34b729[_0xcbf1('0x12')];this[_0xcbf1('0x13')]=_0x34b729['dialNoAnswerRetryFrequency'];this[_0xcbf1('0x14')]=_0x34b729[_0xcbf1('0x14')];this[_0xcbf1('0x15')]=_0x34b729[_0xcbf1('0x15')]||0x3;this[_0xcbf1('0x16')]=_0x34b729[_0xcbf1('0x16')]||0x96;this[_0xcbf1('0x17')]=_0x34b729[_0xcbf1('0x17')]||0x3;this[_0xcbf1('0x18')]=_0x34b729[_0xcbf1('0x18')]||0x96;this[_0xcbf1('0x19')]=_0x34b729[_0xcbf1('0x19')]||0x3;this[_0xcbf1('0x1a')]=_0x34b729['dialAbandonedRetryFrequency']||0x96;this['dialMachineMaxRetry']=_0x34b729[_0xcbf1('0x1b')]||0x3;this[_0xcbf1('0x1c')]=_0x34b729[_0xcbf1('0x1c')]||0x96;this['dialAgentRejectMaxRetry']=_0x34b729[_0xcbf1('0x1d')]||0x3;this[_0xcbf1('0x1e')]=_0x34b729[_0xcbf1('0x1e')]||0x96;this[_0xcbf1('0x1f')]=_0x34b729[_0xcbf1('0x1f')]||_0xcbf1('0x20');this['dialPrefix']=_0x34b729[_0xcbf1('0x21')]||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x34b729[_0xcbf1('0x22')]||undefined;this[_0xcbf1('0x23')]=_0x34b729['dialCutDigit']||undefined;this[_0xcbf1('0x24')]=_0x34b729['TrunkBackup']?_0x34b729[_0xcbf1('0x24')]:undefined;this[_0xcbf1('0x25')]=_0x34b729[_0xcbf1('0x25')]?_0x34b729['Trunk']:undefined;this[_0xcbf1('0x26')]=_0x34b729[_0xcbf1('0x26')]?_0x34b729['Interval']:undefined;this[_0xcbf1('0x27')]=_0x34b729[_0xcbf1('0x27')]?_0x34b729[_0xcbf1('0x27')]:undefined;this[_0xcbf1('0x28')]=_0x34b729[_0xcbf1('0x27')]?_0x34b729[_0xcbf1('0x27')]['name']:undefined;this['dialAMDActive']=_0x34b729[_0xcbf1('0x29')]||![];this[_0xcbf1('0x2a')]=_0x34b729[_0xcbf1('0x2a')];this[_0xcbf1('0x2b')]=_0x34b729['dialAMDGreeting'];this[_0xcbf1('0x2c')]=_0x34b729['dialAMDAfterGreetingSilence'];this['dialAMDTotalAnalysisTime']=_0x34b729[_0xcbf1('0x2d')];this['dialAMDMinWordLength']=_0x34b729[_0xcbf1('0x2e')];this[_0xcbf1('0x2f')]=_0x34b729[_0xcbf1('0x2f')];this[_0xcbf1('0x30')]=_0x34b729['dialAMDMaximumNumberOfWords'];this['dialAMDSilenceThreshold']=_0x34b729[_0xcbf1('0x31')];this[_0xcbf1('0x32')]=_0x34b729[_0xcbf1('0x32')];}module[_0xcbf1('0x33')]=Campaign;
\ No newline at end of file
index 12fb914..e221f5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7896=['destinationchannel','calleridnum','calleridname','connectedlinenum','connectedlinename','accountcode','context','uniqueid','linkedid','exten','answertime','endtime','unmanaged','lastapplication','duration','billableseconds','type','disposition','monitorFilename','monitors','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','exports','starttime','channel'];(function(_0x46f9a4,_0x43ee3c){var _0x8ebc46=function(_0x11707d){while(--_0x11707d){_0x46f9a4['push'](_0x46f9a4['shift']());}};_0x8ebc46(++_0x43ee3c);}(_0x7896,0x127));var _0x6789=function(_0x35cc24,_0x299db6){_0x35cc24=_0x35cc24-0x0;var _0x137359=_0x7896[_0x35cc24];return _0x137359;};'use strict';function Channel(){this[_0x6789('0x0')]=null;this[_0x6789('0x1')]='';this[_0x6789('0x2')]='';this[_0x6789('0x3')]=0x0;this[_0x6789('0x4')]='';this[_0x6789('0x5')]=undefined;this[_0x6789('0x6')]=undefined;this[_0x6789('0x7')]=0x0;this[_0x6789('0x8')]='';this[_0x6789('0x9')]=0x0;this[_0x6789('0xa')]=0x0;this[_0x6789('0xb')]=0x0;this['answered']=![];this[_0x6789('0xc')]=null;this[_0x6789('0xd')]=null;this[_0x6789('0xe')]=![];this['abandoned']=![];this[_0x6789('0xf')]='';this['lastdata']='';this[_0x6789('0x10')]=0x0;this[_0x6789('0x11')]=0x0;this['holdtime']=0x0;this[_0x6789('0x12')]=null;this['tag']=null;this[_0x6789('0x13')]=null;this['monitor']=![];this[_0x6789('0x14')]=null;this['queue']=null;this[_0x6789('0x15')]=[];this[_0x6789('0x16')]=undefined;this[_0x6789('0x17')]=undefined;this[_0x6789('0x18')]=undefined;this[_0x6789('0x19')]=0x0;}module[_0x6789('0x1a')]=Channel;
\ No newline at end of file
+var _0x3af5=['monitors','transfercalleridnum','transferType','mohtime','exports','starttime','channel','calleridnum','calleridname','accountcode','linkedid','exten','answertime','unmanaged','abandoned','lastapplication','lastdata','duration','billableseconds','tag','monitor','monitorFilename'];(function(_0x233120,_0x3a53fe){var _0x36a656=function(_0x609f22){while(--_0x609f22){_0x233120['push'](_0x233120['shift']());}};_0x36a656(++_0x3a53fe);}(_0x3af5,0x1d3));var _0x53af=function(_0x54bb5e,_0xc9513a){_0x54bb5e=_0x54bb5e-0x0;var _0x2cfe75=_0x3af5[_0x54bb5e];return _0x2cfe75;};'use strict';function Channel(){this[_0x53af('0x0')]=null;this[_0x53af('0x1')]='';this['destinationchannel']='';this[_0x53af('0x2')]=0x0;this[_0x53af('0x3')]='';this['connectedlinenum']=undefined;this['connectedlinename']=undefined;this[_0x53af('0x4')]=0x0;this['context']='';this['uniqueid']=0x0;this[_0x53af('0x5')]=0x0;this[_0x53af('0x6')]=0x0;this['answered']=![];this[_0x53af('0x7')]=null;this['endtime']=null;this[_0x53af('0x8')]=![];this[_0x53af('0x9')]=![];this[_0x53af('0xa')]='';this[_0x53af('0xb')]='';this[_0x53af('0xc')]=0x0;this[_0x53af('0xd')]=0x0;this['holdtime']=0x0;this['type']=null;this[_0x53af('0xe')]=null;this['disposition']=null;this[_0x53af('0xf')]=![];this[_0x53af('0x10')]=null;this['queue']=null;this[_0x53af('0x11')]=[];this[_0x53af('0x12')]=undefined;this['transferconnectedlinenum']=undefined;this[_0x53af('0x13')]=undefined;this[_0x53af('0x14')]=0x0;}module[_0x53af('0x15')]=Channel;
\ No newline at end of file
index ec0fd09..c6bec0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9608=['remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','name','username'];(function(_0x1e2321,_0x3ae1c5){var _0x1d346d=function(_0x24f171){while(--_0x24f171){_0x1e2321['push'](_0x1e2321['shift']());}};_0x1d346d(++_0x3ae1c5);}(_0x9608,0x12a));var _0x8960=function(_0x3708dc,_0x2115cd){_0x3708dc=_0x3708dc-0x0;var _0x52c4c7=_0x9608[_0x3708dc];return _0x52c4c7;};'use strict';function DeskAccount(_0x3102fa){this['id']=_0x3102fa['id']||0x0;this[_0x8960('0x0')]=_0x3102fa[_0x8960('0x0')]||'';this[_0x8960('0x1')]=_0x3102fa[_0x8960('0x1')]||'';this[_0x8960('0x2')]=_0x3102fa[_0x8960('0x2')]||'';this[_0x8960('0x3')]=_0x3102fa['authType']||'';this['password']=_0x3102fa[_0x8960('0x4')]||'';this[_0x8960('0x5')]=_0x3102fa['consumerKey']||'';this[_0x8960('0x6')]=_0x3102fa[_0x8960('0x6')]||'';this[_0x8960('0x7')]=_0x3102fa[_0x8960('0x7')]||'';this[_0x8960('0x8')]=_0x3102fa[_0x8960('0x8')]||'';this['type']=_0x3102fa[_0x8960('0x9')]||'';this[_0x8960('0xa')]=_0x3102fa['serverUrl']||'';this[_0x8960('0xb')]=_0x3102fa['Configurations']||{};}module['exports']=DeskAccount;
\ No newline at end of file
+var _0x0126=['type','Configurations','authType','password','consumerKey','consumerSecret','token','tokenSecret'];(function(_0x255a75,_0x161115){var _0x53ce5f=function(_0x24b611){while(--_0x24b611){_0x255a75['push'](_0x255a75['shift']());}};_0x53ce5f(++_0x161115);}(_0x0126,0x1a2));var _0x6012=function(_0x1b62e1,_0x2e9a5b){_0x1b62e1=_0x1b62e1-0x0;var _0x2da6ba=_0x0126[_0x1b62e1];return _0x2da6ba;};'use strict';function DeskAccount(_0x4df095){this['id']=_0x4df095['id']||0x0;this['name']=_0x4df095['name']||'';this['username']=_0x4df095['username']||'';this['remoteUri']=_0x4df095['remoteUri']||'';this[_0x6012('0x0')]=_0x4df095[_0x6012('0x0')]||'';this[_0x6012('0x1')]=_0x4df095[_0x6012('0x1')]||'';this[_0x6012('0x2')]=_0x4df095[_0x6012('0x2')]||'';this[_0x6012('0x3')]=_0x4df095[_0x6012('0x3')]||'';this[_0x6012('0x4')]=_0x4df095['token']||'';this['tokenSecret']=_0x4df095[_0x6012('0x5')]||'';this[_0x6012('0x6')]=_0x4df095['type']||'';this['serverUrl']=_0x4df095['serverUrl']||'';this[_0x6012('0x7')]=_0x4df095['Configurations']||{};}module['exports']=DeskAccount;
\ No newline at end of file
index ae67607..2091062 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34b7=['Configurations','name','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0x34b7,0x196));var _0x734b=function(_0x22a518,_0x4dd9a6){_0x22a518=_0x22a518-0x0;var _0x5395a9=_0x34b7[_0x22a518];return _0x5395a9;};'use strict';function Dynamics365Account(_0x3573c4){this['id']=_0x3573c4['id']||0x0;this['name']=_0x3573c4[_0x734b('0x0')]||'';this[_0x734b('0x1')]=_0x3573c4[_0x734b('0x1')]||'';this[_0x734b('0x2')]=_0x3573c4[_0x734b('0x2')]||'';this[_0x734b('0x3')]=_0x3573c4['remoteUri']||'';this['tenantId']=_0x3573c4[_0x734b('0x4')]||'';this[_0x734b('0x5')]=_0x3573c4[_0x734b('0x5')]||'';this[_0x734b('0x6')]=_0x3573c4[_0x734b('0x6')]||{};this[_0x734b('0x7')]=_0x3573c4['serverUrl']||'';this[_0x734b('0x8')]=_0x3573c4[_0x734b('0x8')]||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
+var _0x6c76=['exports','name','username','password','remoteUri','tenantId','clientId','clientSecret','Configurations'];(function(_0x3850de,_0x2acfca){var _0x3c405f=function(_0x1e0b0d){while(--_0x1e0b0d){_0x3850de['push'](_0x3850de['shift']());}};_0x3c405f(++_0x2acfca);}(_0x6c76,0x184));var _0x66c7=function(_0x5b4a20,_0x31e305){_0x5b4a20=_0x5b4a20-0x0;var _0x5a5fc5=_0x6c76[_0x5b4a20];return _0x5a5fc5;};'use strict';function Dynamics365Account(_0x4d4f77){this['id']=_0x4d4f77['id']||0x0;this[_0x66c7('0x0')]=_0x4d4f77[_0x66c7('0x0')]||'';this['username']=_0x4d4f77[_0x66c7('0x1')]||'';this[_0x66c7('0x2')]=_0x4d4f77['password']||'';this['remoteUri']=_0x4d4f77[_0x66c7('0x3')]||'';this[_0x66c7('0x4')]=_0x4d4f77['tenantId']||'';this[_0x66c7('0x5')]=_0x4d4f77[_0x66c7('0x5')]||'';this['clientSecret']=_0x4d4f77[_0x66c7('0x6')]||{};this['serverUrl']=_0x4d4f77['serverUrl']||'';this[_0x66c7('0x7')]=_0x4d4f77[_0x66c7('0x7')]||{};}module[_0x66c7('0x8')]=Dynamics365Account;
\ No newline at end of file
index 29ccfac..33f7487 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x037d=['minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','headerinfo','localstationid'];(function(_0x498a8b,_0x513c58){var _0x2fbc06=function(_0x3ab7d3){while(--_0x3ab7d3){_0x498a8b['push'](_0x498a8b['shift']());}};_0x2fbc06(++_0x513c58);}(_0x037d,0x1d8));var _0xd037=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x037d[_0x5d6456];return _0x4d66c1;};'use strict';function FaxAccount(_0x502089){this['id']=_0x502089['id']||0x0;this['name']=_0x502089[_0xd037('0x0')]||'';this['description']=_0x502089[_0xd037('0x1')];this['ecm']=_0x502089['ecm'];this[_0xd037('0x2')]=_0x502089['headerinfo'];this['localstationid']=_0x502089[_0xd037('0x3')];this[_0xd037('0x4')]=_0x502089[_0xd037('0x4')]||0x960;this['maxrate']=_0x502089[_0xd037('0x5')]||0x3840;this[_0xd037('0x6')]=_0x502089['modem']||_0xd037('0x7');this[_0xd037('0x8')]=_0x502089['gateway']||'no';this[_0xd037('0x9')]=_0x502089[_0xd037('0x9')]||'no';this['t38timeout']=_0x502089[_0xd037('0xa')]||0x1388;this[_0xd037('0xb')]=_0x502089[_0xd037('0xb')]||_0xd037('0xc');this[_0xd037('0xd')]=_0x502089['Trunk']?_0x502089[_0xd037('0xd')]:undefined;this[_0xd037('0xe')]=_0x502089[_0xd037('0xe')];this[_0xd037('0xf')]=_0x502089[_0xd037('0xf')];}module[_0xd037('0x10')]=FaxAccount;
\ No newline at end of file
+var _0x0d10=['modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','ecm','headerinfo','minrate'];(function(_0x3cb9df,_0x1ac2f0){var _0xc089c7=function(_0x5bb407){while(--_0x5bb407){_0x3cb9df['push'](_0x3cb9df['shift']());}};_0xc089c7(++_0x1ac2f0);}(_0x0d10,0x1bb));var _0x00d1=function(_0x2bcddb,_0x3eaf37){_0x2bcddb=_0x2bcddb-0x0;var _0x12a9e8=_0x0d10[_0x2bcddb];return _0x12a9e8;};'use strict';function FaxAccount(_0x33ff0e){this['id']=_0x33ff0e['id']||0x0;this['name']=_0x33ff0e[_0x00d1('0x0')]||'';this[_0x00d1('0x1')]=_0x33ff0e[_0x00d1('0x1')];this[_0x00d1('0x2')]=_0x33ff0e['ecm'];this[_0x00d1('0x3')]=_0x33ff0e[_0x00d1('0x3')];this['localstationid']=_0x33ff0e['localstationid'];this[_0x00d1('0x4')]=_0x33ff0e[_0x00d1('0x4')]||0x960;this['maxrate']=_0x33ff0e['maxrate']||0x3840;this[_0x00d1('0x5')]=_0x33ff0e[_0x00d1('0x5')]||_0x00d1('0x6');this[_0x00d1('0x7')]=_0x33ff0e[_0x00d1('0x7')]||'no';this['faxdetect']=_0x33ff0e[_0x00d1('0x8')]||'no';this[_0x00d1('0x9')]=_0x33ff0e[_0x00d1('0x9')]||0x1388;this[_0x00d1('0xa')]=_0x33ff0e[_0x00d1('0xa')]||_0x00d1('0xb');this[_0x00d1('0xc')]=_0x33ff0e[_0x00d1('0xc')]?_0x33ff0e[_0x00d1('0xc')]:undefined;this[_0x00d1('0xd')]=_0x33ff0e[_0x00d1('0xd')];this[_0x00d1('0xe')]=_0x33ff0e[_0x00d1('0xe')];}module[_0x00d1('0xf')]=FaxAccount;
\ No newline at end of file
index 87d6d4d..be16031 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0de2=['remoteUri','serverUrl','Configurations','exports','name','username','apiKey','token'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0de2,0x18c));var _0x20de=function(_0x9ff51,_0x4c951f){_0x9ff51=_0x9ff51-0x0;var _0x31959b=_0x0de2[_0x9ff51];return _0x31959b;};'use strict';function FreshdeskAccount(_0x1ba12a){this['id']=_0x1ba12a['id']||0x0;this['name']=_0x1ba12a[_0x20de('0x0')]||'';this[_0x20de('0x1')]=_0x1ba12a['username']||'';this[_0x20de('0x2')]=_0x1ba12a[_0x20de('0x3')]||'';this[_0x20de('0x4')]=_0x1ba12a[_0x20de('0x4')]||'';this[_0x20de('0x5')]=_0x1ba12a[_0x20de('0x5')]||'';this['Configurations']=_0x1ba12a[_0x20de('0x6')]||{};}module[_0x20de('0x7')]=FreshdeskAccount;
\ No newline at end of file
+var _0xe5ac=['name','username','apiKey','token','remoteUri','serverUrl','Configurations','exports'];(function(_0xbe3382,_0x5d6862){var _0xc809a4=function(_0x403573){while(--_0x403573){_0xbe3382['push'](_0xbe3382['shift']());}};_0xc809a4(++_0x5d6862);}(_0xe5ac,0x198));var _0xce5a=function(_0x4e5958,_0x9ad399){_0x4e5958=_0x4e5958-0x0;var _0x43c6f6=_0xe5ac[_0x4e5958];return _0x43c6f6;};'use strict';function FreshdeskAccount(_0x297256){this['id']=_0x297256['id']||0x0;this[_0xce5a('0x0')]=_0x297256[_0xce5a('0x0')]||'';this['username']=_0x297256[_0xce5a('0x1')]||'';this[_0xce5a('0x2')]=_0x297256[_0xce5a('0x3')]||'';this['remoteUri']=_0x297256[_0xce5a('0x4')]||'';this[_0xce5a('0x5')]=_0x297256[_0xce5a('0x5')]||'';this[_0xce5a('0x6')]=_0x297256['Configurations']||{};}module[_0xce5a('0x7')]=FreshdeskAccount;
\ No newline at end of file
index 1f3bcf4..fdab80a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadf0=['serverUrl','name','username','apiKey','token','remoteUri'];(function(_0x3c824f,_0x3fb9a5){var _0x46c994=function(_0x5cc1e2){while(--_0x5cc1e2){_0x3c824f['push'](_0x3c824f['shift']());}};_0x46c994(++_0x3fb9a5);}(_0xadf0,0x12d));var _0x0adf=function(_0x33a5dc,_0x1af353){_0x33a5dc=_0x33a5dc-0x0;var _0x2066bc=_0xadf0[_0x33a5dc];return _0x2066bc;};'use strict';function FreshsalesAccount(_0x35481a){this['id']=_0x35481a['id']||0x0;this[_0x0adf('0x0')]=_0x35481a[_0x0adf('0x0')]||'';this[_0x0adf('0x1')]=_0x35481a[_0x0adf('0x1')]||'';this[_0x0adf('0x2')]=_0x35481a[_0x0adf('0x3')]||'';this[_0x0adf('0x4')]=_0x35481a['remoteUri']||'';this[_0x0adf('0x5')]=_0x35481a['serverUrl']||'';this['Configurations']=_0x35481a['Configurations']||{};}module['exports']=FreshsalesAccount;
\ No newline at end of file
+var _0xdf70=['exports','name','username','apiKey','remoteUri','serverUrl','Configurations'];(function(_0xc569f3,_0x485552){var _0x152849=function(_0x4f619f){while(--_0x4f619f){_0xc569f3['push'](_0xc569f3['shift']());}};_0x152849(++_0x485552);}(_0xdf70,0x86));var _0x0df7=function(_0x5bbf70,_0x2f58b3){_0x5bbf70=_0x5bbf70-0x0;var _0x397a54=_0xdf70[_0x5bbf70];return _0x397a54;};'use strict';function FreshsalesAccount(_0x307718){this['id']=_0x307718['id']||0x0;this[_0x0df7('0x0')]=_0x307718[_0x0df7('0x0')]||'';this['username']=_0x307718[_0x0df7('0x1')]||'';this[_0x0df7('0x2')]=_0x307718['token']||'';this[_0x0df7('0x3')]=_0x307718['remoteUri']||'';this[_0x0df7('0x4')]=_0x307718[_0x0df7('0x4')]||'';this['Configurations']=_0x307718[_0x0df7('0x5')]||{};}module[_0x0df7('0x6')]=FreshsalesAccount;
\ No newline at end of file
index c4cff83..c1e0b05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb66a=['variables','exports','type','uniqueid','calleridnum','calleridname','queue','position','count','queuecallerabandonAt','queuecallercomplete','queuecallerexit','originalposition','channel','connectedlinenum','accountcode','context','exten','priority','holdtime','lastAssignedTo','motionChannel','mohtime'];(function(_0x1f239e,_0x367b43){var _0x826971=function(_0x2c5777){while(--_0x2c5777){_0x1f239e['push'](_0x1f239e['shift']());}};_0x826971(++_0x367b43);}(_0xb66a,0x1a0));var _0xab66=function(_0x245c04,_0x11ba2b){_0x245c04=_0x245c04-0x0;var _0x8ae3b5=_0xb66a[_0x245c04];return _0x8ae3b5;};'use strict';function QueueReport(){this[_0xab66('0x0')]='inbound';this[_0xab66('0x1')]='';this[_0xab66('0x2')]='';this[_0xab66('0x3')]='';this[_0xab66('0x4')]='';this['queuecallerjoinAt']=null;this['queuecallerleaveAt']=null;this[_0xab66('0x5')]=0x1;this[_0xab66('0x6')]=0x1;this['queuecallerabandon']=![];this[_0xab66('0x7')]=null;this[_0xab66('0x8')]=![];this['queuecallercompleteAt']=null;this[_0xab66('0x9')]=![];this['queuecallerexitAt']=null;this[_0xab66('0xa')]=0x1;this[_0xab66('0xb')]='';this[_0xab66('0xc')]='';this['connectedlinename']='';this[_0xab66('0xd')]='';this[_0xab66('0xe')]='';this[_0xab66('0xf')]='';this[_0xab66('0x10')]='';this[_0xab66('0x11')]=0x0;this['assigned']=![];this[_0xab66('0x12')]='';this[_0xab66('0x13')]='voice';this[_0xab66('0x14')]=0x0;this[_0xab66('0x15')]={};}module[_0xab66('0x16')]=QueueReport;
\ No newline at end of file
+var _0x7572=['queuecallerjoinAt','queuecallerleaveAt','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','originalposition','channel','connectedlinenum','accountcode','context','exten','priority','lastAssignedTo','motionChannel','voice','mohtime','variables','exports','type','inbound','uniqueid','calleridnum','calleridname'];(function(_0x2fd732,_0x118065){var _0x2ddf51=function(_0x1cca88){while(--_0x1cca88){_0x2fd732['push'](_0x2fd732['shift']());}};_0x2ddf51(++_0x118065);}(_0x7572,0x154));var _0x2757=function(_0x1acc2d,_0x597696){_0x1acc2d=_0x1acc2d-0x0;var _0xabfa6d=_0x7572[_0x1acc2d];return _0xabfa6d;};'use strict';function QueueReport(){this[_0x2757('0x0')]=_0x2757('0x1');this[_0x2757('0x2')]='';this[_0x2757('0x3')]='';this[_0x2757('0x4')]='';this['queue']='';this[_0x2757('0x5')]=null;this[_0x2757('0x6')]=null;this['position']=0x1;this['count']=0x1;this['queuecallerabandon']=![];this[_0x2757('0x7')]=null;this[_0x2757('0x8')]=![];this[_0x2757('0x9')]=null;this['queuecallerexit']=![];this['queuecallerexitAt']=null;this[_0x2757('0xa')]=0x1;this[_0x2757('0xb')]='';this[_0x2757('0xc')]='';this['connectedlinename']='';this[_0x2757('0xd')]='';this[_0x2757('0xe')]='';this[_0x2757('0xf')]='';this[_0x2757('0x10')]='';this['holdtime']=0x0;this['assigned']=![];this[_0x2757('0x11')]='';this[_0x2757('0x12')]=_0x2757('0x13');this[_0x2757('0x14')]=0x0;this[_0x2757('0x15')]={};}module[_0x2757('0x16')]=QueueReport;
\ No newline at end of file
index 784c860..a688ad0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24fe=['securityToken','type','serverUrl','Configurations','exports','name','remoteUri','password','clientId'];(function(_0x126e6c,_0xb93513){var _0x4acef4=function(_0x1b6a1d){while(--_0x1b6a1d){_0x126e6c['push'](_0x126e6c['shift']());}};_0x4acef4(++_0xb93513);}(_0x24fe,0xef));var _0xe24f=function(_0xe55314,_0x2fcb48){_0xe55314=_0xe55314-0x0;var _0xa5eb80=_0x24fe[_0xe55314];return _0xa5eb80;};'use strict';function SalesforceAccount(_0x12f2ce){this['id']=_0x12f2ce['id']||0x0;this[_0xe24f('0x0')]=_0x12f2ce[_0xe24f('0x0')]||'';this['username']=_0x12f2ce['username']||'';this[_0xe24f('0x1')]=_0x12f2ce['remoteUri']||'';this[_0xe24f('0x2')]=_0x12f2ce[_0xe24f('0x2')]||'';this[_0xe24f('0x3')]=_0x12f2ce[_0xe24f('0x3')]||'';this['clientSecret']=_0x12f2ce['clientSecret']||'';this['securityToken']=_0x12f2ce[_0xe24f('0x4')]||'';this[_0xe24f('0x5')]=_0x12f2ce[_0xe24f('0x5')]||'integrationTab';this[_0xe24f('0x6')]=_0x12f2ce['serverUrl']||'';this[_0xe24f('0x7')]=_0x12f2ce['Configurations']||{};}module[_0xe24f('0x8')]=SalesforceAccount;
\ No newline at end of file
+var _0xbb18=['exports','name','username','remoteUri','password','clientId','clientSecret','securityToken','type','serverUrl','Configurations'];(function(_0x16bba9,_0x1e252c){var _0xccca92=function(_0x52137c){while(--_0x52137c){_0x16bba9['push'](_0x16bba9['shift']());}};_0xccca92(++_0x1e252c);}(_0xbb18,0xb1));var _0x8bb1=function(_0x19a2eb,_0x2df439){_0x19a2eb=_0x19a2eb-0x0;var _0x3c8514=_0xbb18[_0x19a2eb];return _0x3c8514;};'use strict';function SalesforceAccount(_0x167bad){this['id']=_0x167bad['id']||0x0;this[_0x8bb1('0x0')]=_0x167bad[_0x8bb1('0x0')]||'';this[_0x8bb1('0x1')]=_0x167bad[_0x8bb1('0x1')]||'';this[_0x8bb1('0x2')]=_0x167bad[_0x8bb1('0x2')]||'';this['password']=_0x167bad[_0x8bb1('0x3')]||'';this[_0x8bb1('0x4')]=_0x167bad[_0x8bb1('0x4')]||'';this[_0x8bb1('0x5')]=_0x167bad[_0x8bb1('0x5')]||'';this[_0x8bb1('0x6')]=_0x167bad['securityToken']||'';this[_0x8bb1('0x7')]=_0x167bad[_0x8bb1('0x7')]||'integrationTab';this[_0x8bb1('0x8')]=_0x167bad[_0x8bb1('0x8')]||'';this['Configurations']=_0x167bad[_0x8bb1('0x9')]||{};}module[_0x8bb1('0xa')]=SalesforceAccount;
\ No newline at end of file
index 260cd83..499dfe7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4617=['Configurations','name','username','password','remoteUri','serverUrl'];(function(_0x1ad8a2,_0x2c16c5){var _0xcf2c0e=function(_0x18163b){while(--_0x18163b){_0x1ad8a2['push'](_0x1ad8a2['shift']());}};_0xcf2c0e(++_0x2c16c5);}(_0x4617,0xaf));var _0x7461=function(_0x4e7d25,_0x58285f){_0x4e7d25=_0x4e7d25-0x0;var _0x526fe6=_0x4617[_0x4e7d25];return _0x526fe6;};'use strict';function ServicenowAccount(_0x2ad205){this['id']=_0x2ad205['id']||0x0;this[_0x7461('0x0')]=_0x2ad205[_0x7461('0x0')]||'';this['username']=_0x2ad205[_0x7461('0x1')]||'';this[_0x7461('0x2')]=_0x2ad205[_0x7461('0x2')]||'';this[_0x7461('0x3')]=_0x2ad205[_0x7461('0x3')]||'';this[_0x7461('0x4')]=_0x2ad205[_0x7461('0x4')]||'';this[_0x7461('0x5')]=_0x2ad205[_0x7461('0x5')]||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
+var _0xc2f9=['name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x4877ed,_0x548970){var _0x154b56=function(_0x2193f3){while(--_0x2193f3){_0x4877ed['push'](_0x4877ed['shift']());}};_0x154b56(++_0x548970);}(_0xc2f9,0x14a));var _0x9c2f=function(_0x1ed55c,_0x145298){_0x1ed55c=_0x1ed55c-0x0;var _0x55b3ad=_0xc2f9[_0x1ed55c];return _0x55b3ad;};'use strict';function ServicenowAccount(_0x661d32){this['id']=_0x661d32['id']||0x0;this[_0x9c2f('0x0')]=_0x661d32[_0x9c2f('0x0')]||'';this['username']=_0x661d32[_0x9c2f('0x1')]||'';this[_0x9c2f('0x2')]=_0x661d32[_0x9c2f('0x2')]||'';this[_0x9c2f('0x3')]=_0x661d32[_0x9c2f('0x3')]||'';this[_0x9c2f('0x4')]=_0x661d32['serverUrl']||'';this[_0x9c2f('0x5')]=_0x661d32[_0x9c2f('0x5')]||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
index 568165c..189f4c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b8f=['password','remoteUri','serverUrl','Configurations','name','username'];(function(_0x393db8,_0x3e1157){var _0x4295cc=function(_0x59aaf2){while(--_0x59aaf2){_0x393db8['push'](_0x393db8['shift']());}};_0x4295cc(++_0x3e1157);}(_0x8b8f,0x1a8));var _0xf8b8=function(_0x1b1edf,_0x363d35){_0x1b1edf=_0x1b1edf-0x0;var _0x2033a0=_0x8b8f[_0x1b1edf];return _0x2033a0;};'use strict';function SugarcrmAccount(_0x36d5d2){this['id']=_0x36d5d2['id']||0x0;this[_0xf8b8('0x0')]=_0x36d5d2[_0xf8b8('0x0')]||'';this[_0xf8b8('0x1')]=_0x36d5d2['username']||'';this[_0xf8b8('0x2')]=_0x36d5d2['password']||'';this[_0xf8b8('0x3')]=_0x36d5d2[_0xf8b8('0x3')]||'';this[_0xf8b8('0x4')]=_0x36d5d2[_0xf8b8('0x4')]||'';this[_0xf8b8('0x5')]=_0x36d5d2[_0xf8b8('0x5')]||{};}module['exports']=SugarcrmAccount;
\ No newline at end of file
+var _0x59b0=['name','username','password','remoteUri','serverUrl','Configurations','exports'];(function(_0x3cb260,_0x329d33){var _0xa99a90=function(_0x1a0954){while(--_0x1a0954){_0x3cb260['push'](_0x3cb260['shift']());}};_0xa99a90(++_0x329d33);}(_0x59b0,0x188));var _0x059b=function(_0x279f6d,_0x122316){_0x279f6d=_0x279f6d-0x0;var _0x5874a5=_0x59b0[_0x279f6d];return _0x5874a5;};'use strict';function SugarcrmAccount(_0x2f948a){this['id']=_0x2f948a['id']||0x0;this['name']=_0x2f948a[_0x059b('0x0')]||'';this['username']=_0x2f948a[_0x059b('0x1')]||'';this[_0x059b('0x2')]=_0x2f948a[_0x059b('0x2')]||'';this[_0x059b('0x3')]=_0x2f948a['remoteUri']||'';this[_0x059b('0x4')]=_0x2f948a['serverUrl']||'';this[_0x059b('0x5')]=_0x2f948a[_0x059b('0x5')]||{};}module[_0x059b('0x6')]=SugarcrmAccount;
\ No newline at end of file
index 42ffbdd..0fdfb1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29c1=['address','exports','name','accountcode','state','unknown','stateTime','status'];(function(_0x28407a,_0x2a7269){var _0x8bd6ef=function(_0x3c886f){while(--_0x3c886f){_0x28407a['push'](_0x28407a['shift']());}};_0x8bd6ef(++_0x2a7269);}(_0x29c1,0x72));var _0x129c=function(_0x5f0571,_0x5c04a0){_0x5f0571=_0x5f0571-0x0;var _0x2872b7=_0x29c1[_0x5f0571];return _0x2872b7;};'use strict';function Telephone(_0x21ff12){this['id']=_0x21ff12['id']||0x0;this[_0x129c('0x0')]=_0x21ff12[_0x129c('0x0')]||'';this[_0x129c('0x1')]=_0x21ff12['accountcode']||'';this[_0x129c('0x2')]=_0x129c('0x3');this[_0x129c('0x4')]=0x0;this[_0x129c('0x5')]=_0x129c('0x3');this[_0x129c('0x6')]='';}module[_0x129c('0x7')]=Telephone;
\ No newline at end of file
+var _0xdeff=['accountcode','state','stateTime','status','unknown','address','exports','name'];(function(_0x5bfc42,_0x252536){var _0x4ccef2=function(_0x57fcc0){while(--_0x57fcc0){_0x5bfc42['push'](_0x5bfc42['shift']());}};_0x4ccef2(++_0x252536);}(_0xdeff,0xef));var _0xfdef=function(_0x912d27,_0x28e0e3){_0x912d27=_0x912d27-0x0;var _0x31b918=_0xdeff[_0x912d27];return _0x31b918;};'use strict';function Telephone(_0x817f0d){this['id']=_0x817f0d['id']||0x0;this[_0xfdef('0x0')]=_0x817f0d[_0xfdef('0x0')]||'';this[_0xfdef('0x1')]=_0x817f0d['accountcode']||'';this[_0xfdef('0x2')]='unknown';this[_0xfdef('0x3')]=0x0;this[_0xfdef('0x4')]=_0xfdef('0x5');this[_0xfdef('0x6')]='';}module[_0xfdef('0x7')]=Telephone;
\ No newline at end of file
index bc163fd..0d92eb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x10aa26,_0x3d0485){var _0x2059d5=function(_0x3fd4f9){while(--_0x3fd4f9){_0x10aa26['push'](_0x10aa26['shift']());}};_0x2059d5(++_0x3d0485);}(_0xa9e0,0x123));var _0x0a9e=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xa9e0[_0x138f59];return _0x3d114d;};'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(_0x26a4f3,_0x612e07){var _0x56dac1=function(_0x4fd177){while(--_0x4fd177){_0x26a4f3['push'](_0x26a4f3['shift']());}};_0x56dac1(++_0x612e07);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
index 9ce01ea..eb6329d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['exports','name','channel','voice','status','AllConditions','AnyConditions','Actions'];(function(_0x15fb8f,_0x6858e9){var _0x290eb2=function(_0x3c13d6){while(--_0x3c13d6){_0x15fb8f['push'](_0x15fb8f['shift']());}};_0x290eb2(++_0x6858e9);}(_0x2032,0xd9));var _0x2203=function(_0x7570b8,_0x570d9e){_0x7570b8=_0x7570b8-0x0;var _0x2e75da=_0x2032[_0x7570b8];return _0x2e75da;};'use strict';function Trigger(_0x4d6c97){this['id']=_0x4d6c97['id']||0x0;this[_0x2203('0x0')]=_0x4d6c97[_0x2203('0x0')]||'';this[_0x2203('0x1')]=_0x4d6c97['channel']||_0x2203('0x2');this[_0x2203('0x3')]=_0x4d6c97['status']||![];this[_0x2203('0x4')]=_0x4d6c97[_0x2203('0x4')]||[];this[_0x2203('0x5')]=_0x4d6c97[_0x2203('0x5')]||[];this[_0x2203('0x6')]=_0x4d6c97[_0x2203('0x6')]||[];}module[_0x2203('0x7')]=Trigger;
\ No newline at end of file
+var _0x2032=['exports','name','channel','voice','status','AllConditions','AnyConditions','Actions'];(function(_0x203058,_0x357fcc){var _0x18f03c=function(_0x289712){while(--_0x289712){_0x203058['push'](_0x203058['shift']());}};_0x18f03c(++_0x357fcc);}(_0x2032,0xd9));var _0x2203=function(_0xf6ca3f,_0x125af6){_0xf6ca3f=_0xf6ca3f-0x0;var _0x519ae8=_0x2032[_0xf6ca3f];return _0x519ae8;};'use strict';function Trigger(_0x4d6c97){this['id']=_0x4d6c97['id']||0x0;this[_0x2203('0x0')]=_0x4d6c97[_0x2203('0x0')]||'';this[_0x2203('0x1')]=_0x4d6c97['channel']||_0x2203('0x2');this[_0x2203('0x3')]=_0x4d6c97['status']||![];this[_0x2203('0x4')]=_0x4d6c97[_0x2203('0x4')]||[];this[_0x2203('0x5')]=_0x4d6c97[_0x2203('0x5')]||[];this[_0x2203('0x6')]=_0x4d6c97[_0x2203('0x6')]||[];}module[_0x2203('0x7')]=Trigger;
\ No newline at end of file
index 2eb8d47..89a287d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba89=['exports','name','state','stateTime','status','unknown','registry','indexOf','split','host','port','domain','refresh','address','defaultuser'];(function(_0x4572b8,_0x2becd5){var _0x34848e=function(_0x5a3a58){while(--_0x5a3a58){_0x4572b8['push'](_0x4572b8['shift']());}};_0x34848e(++_0x2becd5);}(_0xba89,0x10f));var _0x9ba8=function(_0x2a4bba,_0x1194ce){_0x2a4bba=_0x2a4bba-0x0;var _0x40e9c4=_0xba89[_0x2a4bba];return _0x40e9c4;};'use strict';function Trunk(_0x533d2c){this['id']=_0x533d2c['id']||0x0;this['active']=_0x533d2c['active']||![];this['name']=_0x533d2c[_0x9ba8('0x0')]||'';this[_0x9ba8('0x1')]='unknown';this[_0x9ba8('0x2')]=0x0;this[_0x9ba8('0x3')]=_0x9ba8('0x4');this[_0x9ba8('0x5')]=_0x533d2c[_0x9ba8('0x5')]&&_0x533d2c[_0x9ba8('0x5')][_0x9ba8('0x6')](':')?_0x533d2c[_0x9ba8('0x5')][_0x9ba8('0x7')](':')[0x0]:'';this[_0x9ba8('0x8')]='';this[_0x9ba8('0x9')]='';this[_0x9ba8('0xa')]='';this['domainport']='';this[_0x9ba8('0xb')]='';this['stateRegistry']=_0x9ba8('0x4');this['registrationtime']='';this[_0x9ba8('0xc')]='';this[_0x9ba8('0xd')]=_0x533d2c[_0x9ba8('0xd')]||'';}module[_0x9ba8('0xe')]=Trunk;
\ No newline at end of file
+var _0xee7b=['name','state','status','unknown','registry','indexOf','host','port','domain','domainport','refresh','stateRegistry','registrationtime','address','defaultuser','active'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xee7b,0x8f));var _0xbee7=function(_0x137ee5,_0x50f7a3){_0x137ee5=_0x137ee5-0x0;var _0x8aa971=_0xee7b[_0x137ee5];return _0x8aa971;};'use strict';function Trunk(_0xe385f4){this['id']=_0xe385f4['id']||0x0;this[_0xbee7('0x0')]=_0xe385f4[_0xbee7('0x0')]||![];this['name']=_0xe385f4[_0xbee7('0x1')]||'';this[_0xbee7('0x2')]='unknown';this['stateTime']=0x0;this[_0xbee7('0x3')]=_0xbee7('0x4');this[_0xbee7('0x5')]=_0xe385f4['registry']&&_0xe385f4['registry'][_0xbee7('0x6')](':')?_0xe385f4[_0xbee7('0x5')]['split'](':')[0x0]:'';this[_0xbee7('0x7')]='';this[_0xbee7('0x8')]='';this[_0xbee7('0x9')]='';this[_0xbee7('0xa')]='';this[_0xbee7('0xb')]='';this[_0xbee7('0xc')]=_0xbee7('0x4');this[_0xbee7('0xd')]='';this[_0xbee7('0xe')]='';this['defaultuser']=_0xe385f4[_0xbee7('0xf')]||'';}module['exports']=Trunk;
\ No newline at end of file
index 6fb1c53..e1fd795 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x022d=['mandatoryDisposition','exten','recordingFormat'];(function(_0x3474ae,_0x231e5b){var _0x28e04e=function(_0x4def0e){while(--_0x4def0e){_0x3474ae['push'](_0x3474ae['shift']());}};_0x28e04e(++_0x231e5b);}(_0x022d,0x130));var _0xd022=function(_0xc8503a,_0xf4ee29){_0xc8503a=_0xc8503a-0x0;var _0x512270=_0x022d[_0xc8503a];return _0x512270;};'use strict';function voiceExtension(_0x50c316){this['id']=_0x50c316['id']||0x0;this[_0xd022('0x0')]=_0x50c316[_0xd022('0x0')]||'';this['recordingFormat']=_0x50c316[_0xd022('0x1')]||'none';this[_0xd022('0x2')]=_0x50c316[_0xd022('0x2')]||![];}module['exports']=voiceExtension;
\ No newline at end of file
+var _0x71ce=['exten','recordingFormat','mandatoryDisposition','exports'];(function(_0x488f41,_0x4a5ed0){var _0x3e4e72=function(_0x10068d){while(--_0x10068d){_0x488f41['push'](_0x488f41['shift']());}};_0x3e4e72(++_0x4a5ed0);}(_0x71ce,0x9c));var _0xe71c=function(_0x2e4726,_0x17111e){_0x2e4726=_0x2e4726-0x0;var _0x27988d=_0x71ce[_0x2e4726];return _0x27988d;};'use strict';function voiceExtension(_0x537ae4){this['id']=_0x537ae4['id']||0x0;this[_0xe71c('0x0')]=_0x537ae4[_0xe71c('0x0')]||'';this['recordingFormat']=_0x537ae4[_0xe71c('0x1')]||'none';this[_0xe71c('0x2')]=_0x537ae4[_0xe71c('0x2')]||![];}module[_0xe71c('0x3')]=voiceExtension;
\ No newline at end of file
index 09a9178..44488ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd953=['predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','unknown','not_inuse','busy','unavailable','ringing','ringinuse','wav49','name','monitor_format','inbound','waiting','talking','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','anonymous','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','rrmemory','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundAbandonedDay','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold'];(function(_0x5cb76f,_0x3f0295){var _0x4b5fbf=function(_0x88628b){while(--_0x88628b){_0x5cb76f['push'](_0x5cb76f['shift']());}};_0x4b5fbf(++_0x3f0295);}(_0xd953,0x105));var _0x3d95=function(_0x3d58ea,_0x67dc79){_0x3d58ea=_0x3d58ea-0x0;var _0x3a7747=_0xd953[_0x3d58ea];return _0x3a7747;};'use strict';var statusDesc=[_0x3d95('0x0'),_0x3d95('0x1'),'inuse',_0x3d95('0x2'),'invalid',_0x3d95('0x3'),_0x3d95('0x4'),_0x3d95('0x5'),'onhold'];var monitorFormat={'wav':'wav','wav49':_0x3d95('0x6'),'gsm':'gsm'};var strategy={'rrmemory':'rrmemory','roundrobin':'roundrobin'};function VoiceQueue(_0x1e96f2){this['id']=_0x1e96f2['id']||0x0;this[_0x3d95('0x7')]=_0x1e96f2[_0x3d95('0x7')]||'';this[_0x3d95('0x8')]=_0x1e96f2[_0x3d95('0x8')]||'';this['type']=_0x1e96f2['type']||_0x3d95('0x9');this[_0x3d95('0xa')]=0x0;this[_0x3d95('0xb')]=0x0;this[_0x3d95('0xc')]=0x0;this[_0x3d95('0xd')]=0x0;this[_0x3d95('0xe')]=0x0;this[_0x3d95('0xf')]=0x0;this[_0x3d95('0x10')]=0x0;this[_0x3d95('0x11')]=0x0;this[_0x3d95('0x12')]=0x0;this[_0x3d95('0x13')]=0x0;this['available']=0x0;this[_0x3d95('0x14')]=_0x1e96f2[_0x3d95('0x14')]||![];this[_0x3d95('0x15')]=_0x1e96f2[_0x3d95('0x15')]||0xa;this[_0x3d95('0x16')]=_0x1e96f2[_0x3d95('0x16')]||'no';this[_0x3d95('0x17')]=!![];this[_0x3d95('0x18')]='';this[_0x3d95('0x19')]=0x0;this['temp']=0x0;this[_0x3d95('0x1a')]=_0x1e96f2['dialTimezone']||null;this['dialGlobalInterval']=_0x1e96f2[_0x3d95('0x1b')]?_0x1e96f2[_0x3d95('0x1b')]:null;this[_0x3d95('0x1c')]=_0x1e96f2['dialActive'];this[_0x3d95('0x1d')]=_0x1e96f2[_0x3d95('0x1d')]||_0x3d95('0x1e');this['dialLimitChannel']=_0x1e96f2[_0x3d95('0x1f')]||0x0;this['dialLimitQueue']=_0x1e96f2[_0x3d95('0x20')]||0x0;this[_0x3d95('0x21')]=_0x1e96f2[_0x3d95('0x21')]||0x1;this[_0x3d95('0x22')]=_0x1e96f2[_0x3d95('0x22')]||_0x3d95('0x23');this[_0x3d95('0x24')]=_0x1e96f2[_0x3d95('0x24')]||0.03;this[_0x3d95('0x25')]=_0x1e96f2[_0x3d95('0x25')]||0x258;this[_0x3d95('0x26')]=_0x1e96f2[_0x3d95('0x26')]||'anonymous';this['dialOriginateCallerIdNumber']=_0x1e96f2[_0x3d95('0x27')]||_0x3d95('0x28');this[_0x3d95('0x29')]=_0x1e96f2[_0x3d95('0x29')]||0x1e;this[_0x3d95('0x2a')]=_0x1e96f2[_0x3d95('0x2a')]||'tTxX';this[_0x3d95('0x2b')]=_0x1e96f2[_0x3d95('0x2b')]||0x3;this[_0x3d95('0x2c')]=_0x1e96f2[_0x3d95('0x2c')]||undefined;this[_0x3d95('0x2d')]=_0x1e96f2['dialCongestionMaxRetry']||0x3;this[_0x3d95('0x2e')]=_0x1e96f2[_0x3d95('0x2e')]||0x96;this[_0x3d95('0x2f')]=_0x1e96f2['dialBusyMaxRetry']||0x3;this['dialBusyRetryFrequency']=_0x1e96f2[_0x3d95('0x30')]||0x96;this[_0x3d95('0x31')]=_0x1e96f2[_0x3d95('0x31')]||0x3;this[_0x3d95('0x32')]=_0x1e96f2[_0x3d95('0x32')]||0x96;this[_0x3d95('0x33')]=_0x1e96f2[_0x3d95('0x33')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x1e96f2[_0x3d95('0x34')]||0x96;this[_0x3d95('0x35')]=_0x1e96f2[_0x3d95('0x35')]||0x3;this[_0x3d95('0x36')]=_0x1e96f2['dialDropRetryFrequency']||0x96;this[_0x3d95('0x37')]=_0x1e96f2[_0x3d95('0x37')]||0x3;this[_0x3d95('0x38')]=_0x1e96f2['dialAbandonedRetryFrequency']||0x96;this['dialMachineMaxRetry']=_0x1e96f2['dialMachineMaxRetry']||0x3;this['dialMachineRetryFrequency']=_0x1e96f2[_0x3d95('0x39')]||0x96;this['dialAgentRejectMaxRetry']=_0x1e96f2[_0x3d95('0x3a')]||0x3;this[_0x3d95('0x3b')]=_0x1e96f2[_0x3d95('0x3b')]||0x96;this[_0x3d95('0x3c')]=_0x1e96f2[_0x3d95('0x3c')]||0x4;this[_0x3d95('0x3d')]=_0x1e96f2[_0x3d95('0x3d')]?_0x1e96f2[_0x3d95('0x3d')]:undefined;this[_0x3d95('0x3e')]=_0x1e96f2[_0x3d95('0x3e')]?_0x1e96f2[_0x3d95('0x3e')]:undefined;this[_0x3d95('0x3f')]=_0x1e96f2[_0x3d95('0x3f')]||undefined;this[_0x3d95('0x40')]=_0x1e96f2[_0x3d95('0x40')]?_0x1e96f2[_0x3d95('0x40')]:undefined;this[_0x3d95('0x41')]=_0x1e96f2['dialOrderByScheduledAt']||_0x3d95('0x42');this[_0x3d95('0x43')]=_0x1e96f2[_0x3d95('0x43')]||undefined;this[_0x3d95('0x44')]=_0x1e96f2[_0x3d95('0x44')]||undefined;this['strategy']=strategy[_0x1e96f2[_0x3d95('0x45')]]||_0x3d95('0x46');this['queueStatusComplete']=!![];this[_0x3d95('0x47')]=_0x1e96f2['dialAMDActive']||![];this[_0x3d95('0x48')]=_0x1e96f2['dialAMDInitialSilence'];this[_0x3d95('0x49')]=_0x1e96f2['dialAMDGreeting'];this[_0x3d95('0x4a')]=_0x1e96f2[_0x3d95('0x4a')];this[_0x3d95('0x4b')]=_0x1e96f2['dialAMDTotalAnalysisTime'];this[_0x3d95('0x4c')]=_0x1e96f2['dialAMDMinWordLength'];this['dialAMDBetweenWordsSilence']=_0x1e96f2[_0x3d95('0x4d')];this[_0x3d95('0x4e')]=_0x1e96f2[_0x3d95('0x4e')];this[_0x3d95('0x4f')]=_0x1e96f2[_0x3d95('0x4f')];this[_0x3d95('0x50')]=_0x1e96f2[_0x3d95('0x50')];this[_0x3d95('0x51')]=0x0;this[_0x3d95('0x52')]=0x0;this['timeout']=_0x1e96f2[_0x3d95('0x53')];this[_0x3d95('0x54')]=0x0;this[_0x3d95('0x55')]=0x0;this[_0x3d95('0x56')]=0x0;this[_0x3d95('0x57')]=0x0;this[_0x3d95('0x58')]=0x0;this[_0x3d95('0x59')]=0x0;this[_0x3d95('0x5a')]=0x0;this[_0x3d95('0x5b')]=0x0;this[_0x3d95('0x5c')]=0x0;this[_0x3d95('0x5d')]=0x0;this[_0x3d95('0x5e')]=0x0;this[_0x3d95('0x5f')]=0x0;this['outboundReCallsDay']=0x0;this[_0x3d95('0x60')]=0x0;this['startProgressive']=undefined;this['startPredictive']=undefined;this['handlePredictive']=undefined;this[_0x3d95('0x61')]=1.05;this[_0x3d95('0x62')]=0x0;this[_0x3d95('0x63')]=0x0;this[_0x3d95('0x64')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this[_0x3d95('0x65')]=0x0;this[_0x3d95('0x66')]=0x0;this[_0x3d95('0x67')]=0x0;this[_0x3d95('0x68')]=0x0;this[_0x3d95('0x69')]=_0x1e96f2[_0x3d95('0x6a')]||0x14;this[_0x3d95('0x6b')]=_0x1e96f2['dialPredictiveIntervalMaxThreshold']||0xa;this[_0x3d95('0x6c')]=0x0;this[_0x3d95('0x6d')]=0x0;this[_0x3d95('0x6e')]=0x1;this[_0x3d95('0x6f')]=0x0;this[_0x3d95('0x70')]=0x0;this[_0x3d95('0x71')]=0x0;this[_0x3d95('0x72')]=0x0;this[_0x3d95('0x73')]=_0x1e96f2[_0x3d95('0x73')]||0x1e;this[_0x3d95('0x74')]=_0x1e96f2['dialRecallInQueue']||![];this[_0x3d95('0x75')]=!!_0x1e96f2[_0x3d95('0x75')]||![];this[_0x3d95('0x76')]=_0x1e96f2[_0x3d95('0x76')]||undefined;this[_0x3d95('0x77')]=_0x1e96f2[_0x3d95('0x77')]||![];this[_0x3d95('0x78')]=_0x1e96f2[_0x3d95('0x78')]||![];this['monitor_format']=monitorFormat[_0x1e96f2[_0x3d95('0x8')]]?monitorFormat[_0x1e96f2['monitor_format']]:undefined;this[_0x3d95('0x79')]=_0x1e96f2['mandatoryDisposition']||![];this[_0x3d95('0x7a')]=_0x1e96f2[_0x3d95('0x7a')]?_0x1e96f2[_0x3d95('0x7a')]:undefined;}module['exports']=VoiceQueue;
\ No newline at end of file
+var _0x4f19=['outboundDropCallsDayTimeout','outboundReCallsDay','outboundAbandonedDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','inuse','busy','invalid','ringing','onhold','gsm','roundrobin','name','monitor_format','inbound','waiting','talking','answered','sumDuration','sumHoldTime','unmanaged','abandoned','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','rrmemory','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit'];(function(_0x152b03,_0x2b427f){var _0x5a5d4b=function(_0x3037a3){while(--_0x3037a3){_0x152b03['push'](_0x152b03['shift']());}};_0x5a5d4b(++_0x2b427f);}(_0x4f19,0x97));var _0x94f1=function(_0x1d0494,_0x1e2b73){_0x1d0494=_0x1d0494-0x0;var _0x4bc8c7=_0x4f19[_0x1d0494];return _0x4bc8c7;};'use strict';var statusDesc=[_0x94f1('0x0'),_0x94f1('0x1'),_0x94f1('0x2'),_0x94f1('0x3'),_0x94f1('0x4'),'unavailable',_0x94f1('0x5'),'ringinuse',_0x94f1('0x6')];var monitorFormat={'wav':'wav','wav49':'wav49','gsm':_0x94f1('0x7')};var strategy={'rrmemory':'rrmemory','roundrobin':_0x94f1('0x8')};function VoiceQueue(_0x48226f){this['id']=_0x48226f['id']||0x0;this['name']=_0x48226f[_0x94f1('0x9')]||'';this[_0x94f1('0xa')]=_0x48226f[_0x94f1('0xa')]||'';this['type']=_0x48226f['type']||_0x94f1('0xb');this[_0x94f1('0xc')]=0x0;this[_0x94f1('0xd')]=0x0;this['total']=0x0;this[_0x94f1('0xe')]=0x0;this[_0x94f1('0xf')]=0x0;this[_0x94f1('0x10')]=0x0;this['sumBillable']=0x0;this[_0x94f1('0x11')]=0x0;this[_0x94f1('0x12')]=0x0;this[_0x94f1('0x13')]=0x0;this[_0x94f1('0x14')]=0x0;this[_0x94f1('0x15')]=_0x48226f['acw']||![];this[_0x94f1('0x16')]=_0x48226f[_0x94f1('0x16')]||0xa;this[_0x94f1('0x17')]=_0x48226f[_0x94f1('0x17')]||'no';this[_0x94f1('0x18')]=!![];this[_0x94f1('0x19')]='';this[_0x94f1('0x1a')]=0x0;this[_0x94f1('0x1b')]=0x0;this[_0x94f1('0x1c')]=_0x48226f[_0x94f1('0x1c')]||null;this[_0x94f1('0x1d')]=_0x48226f[_0x94f1('0x1d')]?_0x48226f[_0x94f1('0x1d')]:null;this['dialActive']=_0x48226f[_0x94f1('0x1e')];this[_0x94f1('0x1f')]=_0x48226f['dialMethod']||_0x94f1('0x20');this[_0x94f1('0x21')]=_0x48226f['dialLimitChannel']||0x0;this[_0x94f1('0x22')]=_0x48226f[_0x94f1('0x22')]||0x0;this['dialPowerLevel']=_0x48226f['dialPowerLevel']||0x1;this[_0x94f1('0x23')]=_0x48226f[_0x94f1('0x23')]||_0x94f1('0x24');this[_0x94f1('0x25')]=_0x48226f['dialPredictiveOptimizationPercentage']||0.03;this[_0x94f1('0x26')]=_0x48226f[_0x94f1('0x26')]||0x258;this['dialOriginateCallerIdName']=_0x48226f[_0x94f1('0x27')]||_0x94f1('0x28');this['dialOriginateCallerIdNumber']=_0x48226f[_0x94f1('0x29')]||_0x94f1('0x28');this['dialOriginateTimeout']=_0x48226f['dialOriginateTimeout']||0x1e;this[_0x94f1('0x2a')]=_0x48226f[_0x94f1('0x2a')]||_0x94f1('0x2b');this[_0x94f1('0x2c')]=_0x48226f['dialQueueTimeout']||0x3;this['dialQueueProject']=_0x48226f[_0x94f1('0x2d')]||undefined;this[_0x94f1('0x2e')]=_0x48226f['dialCongestionMaxRetry']||0x3;this[_0x94f1('0x2f')]=_0x48226f['dialCongestionRetryFrequency']||0x96;this[_0x94f1('0x30')]=_0x48226f[_0x94f1('0x30')]||0x3;this[_0x94f1('0x31')]=_0x48226f['dialBusyRetryFrequency']||0x96;this[_0x94f1('0x32')]=_0x48226f['dialNoAnswerMaxRetry']||0x3;this[_0x94f1('0x33')]=_0x48226f[_0x94f1('0x33')]||0x96;this[_0x94f1('0x34')]=_0x48226f[_0x94f1('0x34')]||0x3;this[_0x94f1('0x35')]=_0x48226f[_0x94f1('0x35')]||0x96;this[_0x94f1('0x36')]=_0x48226f[_0x94f1('0x36')]||0x3;this[_0x94f1('0x37')]=_0x48226f['dialDropRetryFrequency']||0x96;this[_0x94f1('0x38')]=_0x48226f[_0x94f1('0x38')]||0x3;this[_0x94f1('0x39')]=_0x48226f[_0x94f1('0x39')]||0x96;this[_0x94f1('0x3a')]=_0x48226f[_0x94f1('0x3a')]||0x3;this[_0x94f1('0x3b')]=_0x48226f[_0x94f1('0x3b')]||0x96;this[_0x94f1('0x3c')]=_0x48226f[_0x94f1('0x3c')]||0x3;this['dialAgentRejectRetryFrequency']=_0x48226f['dialAgentRejectRetryFrequency']||0x96;this[_0x94f1('0x3d')]=_0x48226f['dialGlobalMaxRetry']||0x4;this[_0x94f1('0x3e')]=_0x48226f[_0x94f1('0x3e')]?_0x48226f[_0x94f1('0x3e')]:undefined;this[_0x94f1('0x3f')]=_0x48226f['TrunkBackup']?_0x48226f['TrunkBackup']:undefined;this[_0x94f1('0x40')]=_0x48226f[_0x94f1('0x40')]||undefined;this[_0x94f1('0x41')]=_0x48226f[_0x94f1('0x41')]?_0x48226f[_0x94f1('0x41')]:undefined;this[_0x94f1('0x42')]=_0x48226f[_0x94f1('0x42')]||'DESC';this[_0x94f1('0x43')]=_0x48226f[_0x94f1('0x43')]||undefined;this['dialCutDigit']=_0x48226f[_0x94f1('0x44')]||undefined;this[_0x94f1('0x45')]=strategy[_0x48226f[_0x94f1('0x45')]]||_0x94f1('0x46');this[_0x94f1('0x47')]=!![];this['dialAMDActive']=_0x48226f[_0x94f1('0x48')]||![];this[_0x94f1('0x49')]=_0x48226f[_0x94f1('0x49')];this['dialAMDGreeting']=_0x48226f['dialAMDGreeting'];this[_0x94f1('0x4a')]=_0x48226f['dialAMDAfterGreetingSilence'];this['dialAMDTotalAnalysisTime']=_0x48226f[_0x94f1('0x4b')];this[_0x94f1('0x4c')]=_0x48226f[_0x94f1('0x4c')];this['dialAMDBetweenWordsSilence']=_0x48226f[_0x94f1('0x4d')];this['dialAMDMaximumNumberOfWords']=_0x48226f['dialAMDMaximumNumberOfWords'];this[_0x94f1('0x4e')]=_0x48226f[_0x94f1('0x4e')];this[_0x94f1('0x4f')]=_0x48226f[_0x94f1('0x4f')];this[_0x94f1('0x50')]=0x0;this[_0x94f1('0x51')]=0x0;this[_0x94f1('0x52')]=_0x48226f[_0x94f1('0x52')];this[_0x94f1('0x53')]=0x0;this[_0x94f1('0x54')]=0x0;this[_0x94f1('0x55')]=0x0;this[_0x94f1('0x56')]=0x0;this['outboundCongestionCallsDay']=0x0;this['outboundNoSuchCallsDay']=0x0;this[_0x94f1('0x57')]=0x0;this[_0x94f1('0x58')]=0x0;this[_0x94f1('0x59')]=0x0;this[_0x94f1('0x5a')]=0x0;this[_0x94f1('0x5b')]=0x0;this['outboundDropCallsDayACS']=0x0;this[_0x94f1('0x5c')]=0x0;this[_0x94f1('0x5d')]=0x0;this[_0x94f1('0x5e')]=undefined;this[_0x94f1('0x5f')]=undefined;this[_0x94f1('0x60')]=undefined;this[_0x94f1('0x61')]=1.05;this[_0x94f1('0x62')]=0x0;this[_0x94f1('0x63')]=0x0;this[_0x94f1('0x64')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this[_0x94f1('0x65')]=0x0;this[_0x94f1('0x66')]=0x0;this[_0x94f1('0x67')]=0x0;this[_0x94f1('0x68')]=0x0;this[_0x94f1('0x69')]=_0x48226f[_0x94f1('0x6a')]||0x14;this['predictiveIntervalMinThreshold']=_0x48226f[_0x94f1('0x6a')]||0xa;this['predictiveIntervalErlangCalls']=0x0;this[_0x94f1('0x6b')]=0x0;this[_0x94f1('0x6c')]=0x1;this[_0x94f1('0x6d')]=0x0;this[_0x94f1('0x6e')]=0x0;this['erlangAbandonmentRate']=0x0;this[_0x94f1('0x6f')]=0x0;this['dialRecallMeTimeout']=_0x48226f[_0x94f1('0x70')]||0x1e;this[_0x94f1('0x71')]=_0x48226f[_0x94f1('0x71')]||![];this[_0x94f1('0x72')]=!!_0x48226f[_0x94f1('0x72')]||![];this['dialQueueProject2']=_0x48226f[_0x94f1('0x73')]||undefined;this[_0x94f1('0x74')]=_0x48226f['dialAgiAfterHangupClient']||![];this[_0x94f1('0x75')]=_0x48226f[_0x94f1('0x75')]||![];this[_0x94f1('0xa')]=monitorFormat[_0x48226f[_0x94f1('0xa')]]?monitorFormat[_0x48226f['monitor_format']]:undefined;this[_0x94f1('0x76')]=_0x48226f[_0x94f1('0x76')]||![];this[_0x94f1('0x77')]=_0x48226f[_0x94f1('0x77')]?_0x48226f[_0x94f1('0x77')]:undefined;}module[_0x94f1('0x78')]=VoiceQueue;
\ No newline at end of file
index e3dbf05..522a1da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ca1=['accessKey','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x31c733,_0x174e9f){var _0x369a7a=function(_0x409188){while(--_0x409188){_0x31c733['push'](_0x31c733['shift']());}};_0x369a7a(++_0x174e9f);}(_0x9ca1,0x1cc));var _0x19ca=function(_0x5aeaff,_0x4ddffd){_0x5aeaff=_0x5aeaff-0x0;var _0x1878b3=_0x9ca1[_0x5aeaff];return _0x1878b3;};'use strict';function VtigerAccount(_0xd0f2eb){this['id']=_0xd0f2eb['id']||0x0;this[_0x19ca('0x0')]=_0xd0f2eb[_0x19ca('0x0')]||'';this[_0x19ca('0x1')]=_0xd0f2eb[_0x19ca('0x1')]||'';this[_0x19ca('0x2')]=_0xd0f2eb[_0x19ca('0x2')]||'';this[_0x19ca('0x3')]=_0xd0f2eb[_0x19ca('0x3')]||'';this[_0x19ca('0x4')]=_0xd0f2eb[_0x19ca('0x4')]||'';this['Configurations']=_0xd0f2eb[_0x19ca('0x5')]||{};}module[_0x19ca('0x6')]=VtigerAccount;
\ No newline at end of file
+var _0x56ee=['Configurations','exports','name','username','accessKey','remoteUri','serverUrl'];(function(_0x2c8d85,_0x590fef){var _0x277ef4=function(_0x7c7a91){while(--_0x7c7a91){_0x2c8d85['push'](_0x2c8d85['shift']());}};_0x277ef4(++_0x590fef);}(_0x56ee,0x1ad));var _0xe56e=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0x56ee[_0x487b0c];return _0x1adbdc;};'use strict';function VtigerAccount(_0x5e9810){this['id']=_0x5e9810['id']||0x0;this[_0xe56e('0x0')]=_0x5e9810[_0xe56e('0x0')]||'';this[_0xe56e('0x1')]=_0x5e9810['username']||'';this[_0xe56e('0x2')]=_0x5e9810[_0xe56e('0x2')]||'';this[_0xe56e('0x3')]=_0x5e9810[_0xe56e('0x3')]||'';this[_0xe56e('0x4')]=_0x5e9810[_0xe56e('0x4')]||'';this[_0xe56e('0x5')]=_0x5e9810[_0xe56e('0x5')]||{};}module[_0xe56e('0x6')]=VtigerAccount;
\ No newline at end of file
index 7753563..8e2be24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9db=['remoteUri','authType','type','integrationTab','serverUrl','Configurations','exports','name','username','password','token'];(function(_0x2bfd4f,_0x1bbf2c){var _0x341849=function(_0x4c246e){while(--_0x4c246e){_0x2bfd4f['push'](_0x2bfd4f['shift']());}};_0x341849(++_0x1bbf2c);}(_0xf9db,0x1e0));var _0xbf9d=function(_0x54c497,_0x1fee40){_0x54c497=_0x54c497-0x0;var _0x577ab0=_0xf9db[_0x54c497];return _0x577ab0;};'use strict';function ZendeskAccount(_0x2f7ce2){this['id']=_0x2f7ce2['id']||0x0;this['name']=_0x2f7ce2[_0xbf9d('0x0')]||'';this[_0xbf9d('0x1')]=_0x2f7ce2['username']||'';this[_0xbf9d('0x2')]=_0x2f7ce2['password']||'';this[_0xbf9d('0x3')]=_0x2f7ce2['token']||'';this[_0xbf9d('0x4')]=_0x2f7ce2['remoteUri']||'';this[_0xbf9d('0x5')]=_0x2f7ce2[_0xbf9d('0x5')]||'';this[_0xbf9d('0x6')]=_0x2f7ce2['type']||_0xbf9d('0x7');this['serverUrl']=_0x2f7ce2[_0xbf9d('0x8')]||'';this[_0xbf9d('0x9')]=_0x2f7ce2[_0xbf9d('0x9')]||{};}module[_0xbf9d('0xa')]=ZendeskAccount;
\ No newline at end of file
+var _0xd768=['username','password','token','remoteUri','authType','type','integrationTab','serverUrl','Configurations','name'];(function(_0x2132a3,_0x4639e9){var _0x21890c=function(_0x34b73d){while(--_0x34b73d){_0x2132a3['push'](_0x2132a3['shift']());}};_0x21890c(++_0x4639e9);}(_0xd768,0x10d));var _0x8d76=function(_0x210718,_0x247b55){_0x210718=_0x210718-0x0;var _0x541bfc=_0xd768[_0x210718];return _0x541bfc;};'use strict';function ZendeskAccount(_0x576115){this['id']=_0x576115['id']||0x0;this[_0x8d76('0x0')]=_0x576115['name']||'';this[_0x8d76('0x1')]=_0x576115['username']||'';this[_0x8d76('0x2')]=_0x576115[_0x8d76('0x2')]||'';this[_0x8d76('0x3')]=_0x576115[_0x8d76('0x3')]||'';this[_0x8d76('0x4')]=_0x576115[_0x8d76('0x4')]||'';this[_0x8d76('0x5')]=_0x576115[_0x8d76('0x5')]||'';this[_0x8d76('0x6')]=_0x576115[_0x8d76('0x6')]||_0x8d76('0x7');this[_0x8d76('0x8')]=_0x576115[_0x8d76('0x8')]||'';this[_0x8d76('0x9')]=_0x576115[_0x8d76('0x9')]||{};}module['exports']=ZendeskAccount;
\ No newline at end of file
index 17c711f..2efef08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39bc=['code','refreshToken','Configurations','exports','name','description','host','zone','clientId','clientSecret','serverUrl'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x39bc,0x1e8));var _0xc39b=function(_0x391b74,_0x4317e2){_0x391b74=_0x391b74-0x0;var _0x3308e6=_0x39bc[_0x391b74];return _0x3308e6;};'use strict';function ZohoAccount(_0x27055f){this['id']=_0x27055f['id']||0x0;this[_0xc39b('0x0')]=_0x27055f[_0xc39b('0x0')]||'';this[_0xc39b('0x1')]=_0x27055f[_0xc39b('0x1')]||'';this[_0xc39b('0x2')]=_0x27055f[_0xc39b('0x2')]||'';this[_0xc39b('0x3')]=_0x27055f[_0xc39b('0x3')]||'';this[_0xc39b('0x4')]=_0x27055f[_0xc39b('0x4')]||'';this[_0xc39b('0x5')]=_0x27055f[_0xc39b('0x5')]||'';this[_0xc39b('0x6')]=_0x27055f[_0xc39b('0x6')]||'';this[_0xc39b('0x7')]=_0x27055f[_0xc39b('0x7')]||'';this[_0xc39b('0x8')]=_0x27055f[_0xc39b('0x8')]||'';this[_0xc39b('0x9')]=_0x27055f['Configurations']||{};}module[_0xc39b('0xa')]=ZohoAccount;
\ No newline at end of file
+var _0x7bdf=['zone','clientId','clientSecret','serverUrl','code','refreshToken','Configurations','exports','name','description','host'];(function(_0x326ae8,_0xbc3101){var _0x4d3e8c=function(_0x2fe6dd){while(--_0x2fe6dd){_0x326ae8['push'](_0x326ae8['shift']());}};_0x4d3e8c(++_0xbc3101);}(_0x7bdf,0x8c));var _0xf7bd=function(_0x9b2cf1,_0x397d8d){_0x9b2cf1=_0x9b2cf1-0x0;var _0xe25021=_0x7bdf[_0x9b2cf1];return _0xe25021;};'use strict';function ZohoAccount(_0x514c07){this['id']=_0x514c07['id']||0x0;this['name']=_0x514c07[_0xf7bd('0x0')]||'';this[_0xf7bd('0x1')]=_0x514c07[_0xf7bd('0x1')]||'';this[_0xf7bd('0x2')]=_0x514c07[_0xf7bd('0x2')]||'';this[_0xf7bd('0x3')]=_0x514c07[_0xf7bd('0x3')]||'';this[_0xf7bd('0x4')]=_0x514c07[_0xf7bd('0x4')]||'';this[_0xf7bd('0x5')]=_0x514c07[_0xf7bd('0x5')]||'';this[_0xf7bd('0x6')]=_0x514c07['serverUrl']||'';this[_0xf7bd('0x7')]=_0x514c07[_0xf7bd('0x7')]||'';this[_0xf7bd('0x8')]=_0x514c07['refreshToken']||'';this[_0xf7bd('0x9')]=_0x514c07[_0xf7bd('0x9')]||{};}module[_0xf7bd('0xa')]=ZohoAccount;
\ No newline at end of file
index 01d7e32..d3e3ed1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x608b=['exports','util','lodash','moment','string','isNil','uniqueid','idContact','queue','name','type','campaigntype','membername','Agent','format','calleridname','phone','firstName','Contact','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','callback','callbackuniqueid','callbackat','recallme','ListId','UserId','VoiceQueueId','originatecalleridname','\x22%s\x22\x20<%s>','number'];(function(_0x3e2489,_0x41d9dd){var _0x2254ce=function(_0x227e46){while(--_0x227e46){_0x3e2489['push'](_0x3e2489['shift']());}};_0x2254ce(++_0x41d9dd);}(_0x608b,0x1a5));var _0xb608=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x608b[_0x27af45];return _0x18df21;};'use strict';var util=require(_0xb608('0x0'));var _=require(_0xb608('0x1'));var moment=require(_0xb608('0x2'));function checkNameSurname(_0x247f9e,_0x336343,_0x13a642){var _0x3aaf70='';if(!_['isNil'](_0x336343)&&_0xb608('0x3')===typeof _0x336343){_0x3aaf70+=_0x336343;}if(!_[_0xb608('0x4')](_0x13a642)&&'string'===typeof _0x13a642){_0x3aaf70+='\x20'+_0x13a642;}if(_0x3aaf70!==''){return _0x3aaf70;}return _0x247f9e;}function Action(_0x539de8,_0x139e00,_0xe48aea,_0x5a2eca,_0x5c8a48){this[_0xb608('0x5')]=_0xe48aea||undefined;this[_0xb608('0x6')]=_0x539de8['id'];this[_0xb608('0x7')]=_0x139e00[_0xb608('0x8')];this[_0xb608('0x9')]=_0x139e00['type'];this[_0xb608('0xa')]=_0xb608('0x7');this['dialAnswer']=![];this[_0xb608('0xb')]=_[_0xb608('0x4')](_0x539de8[_0xb608('0xc')])?undefined:_0x539de8[_0xb608('0xc')][_0xb608('0x8')];this['channelAgent']=this[_0xb608('0xb')]?util[_0xb608('0xd')]('SIP/%s',this[_0xb608('0xb')]):_0x5a2eca||undefined;this[_0xb608('0xe')]=checkNameSurname(_0x539de8['Contact'][_0xb608('0xf')],_0x539de8['Contact'][_0xb608('0x10')],_0x539de8[_0xb608('0x11')][_0xb608('0x12')]);this[_0xb608('0x13')]=_0x539de8[_0xb608('0x13')]||![];this[_0xb608('0x14')]=_0x539de8['Contact'][_0xb608('0xf')];this[_0xb608('0x15')]=_0x539de8[_0xb608('0x15')];this[_0xb608('0x16')]=_0x539de8[_0xb608('0x16')]||0x0;this[_0xb608('0x17')]=_0x539de8['countcongestionretry']||0x0;this[_0xb608('0x18')]=_0x539de8[_0xb608('0x18')]||0x0;this[_0xb608('0x19')]=(_0x539de8[_0xb608('0x16')]||0x0)+(_0x539de8[_0xb608('0x17')]||0x0)+(_0x539de8[_0xb608('0x18')]||0x0)+(_0x539de8[_0xb608('0x1a')]||0x0)+(_0x539de8[_0xb608('0x1b')]||0x0)+(_0x539de8['countabandonedretry']||0x0)+(_0x539de8[_0xb608('0x1c')]||0x0)+(_0x539de8[_0xb608('0x1d')]||0x0);this[_0xb608('0x1a')]=_0x539de8['countnosuchnumberretry']||0x0;this[_0xb608('0x1b')]=_0x539de8[_0xb608('0x1b')]||0x0;this[_0xb608('0x1e')]=_0x539de8['countabandonedretry']||0x0;this[_0xb608('0x1c')]=_0x539de8['countmachineretry']||0x0;this[_0xb608('0x1d')]=_0x539de8[_0xb608('0x1d')]||0x0;this[_0xb608('0x1f')]=_0x539de8[_0xb608('0x1f')];this[_0xb608('0x20')]=_0x539de8['callbackuniqueid'];this[_0xb608('0x21')]=_0x539de8[_0xb608('0x21')];this[_0xb608('0x22')]=_0x539de8[_0xb608('0x22')];this['ContactId']=_0x539de8['ContactId'];this[_0xb608('0x23')]=_0x539de8[_0xb608('0x23')];this[_0xb608('0x24')]=_[_0xb608('0x4')](_0x539de8[_0xb608('0xc')])?_0x539de8['UserId']:_0x539de8[_0xb608('0xc')]['id'];this[_0xb608('0x25')]=_0x539de8['VoiceQueueId'];this['originatecalleridnum']='';this[_0xb608('0x26')]='';}Action['prototype']['getCaller']=function(){return util[_0xb608('0xd')](_0xb608('0x27'),this[_0xb608('0xe')],this[_0xb608('0x28')]);};module[_0xb608('0x29')]=Action;
\ No newline at end of file
+var _0xa095=['countabandonedretry','countmachineretry','countagentrejectretry','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','number','util','lodash','moment','isNil','string','uniqueid','idContact','queue','type','campaigntype','dialAnswer','Agent','name','channelAgent','membername','format','calleridname','Contact','firstName','lastName','active','phone','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry'];(function(_0x4ea757,_0x3f9fca){var _0x15458b=function(_0x1165ac){while(--_0x1165ac){_0x4ea757['push'](_0x4ea757['shift']());}};_0x15458b(++_0x3f9fca);}(_0xa095,0x13c));var _0x5a09=function(_0x31df6f,_0x380e73){_0x31df6f=_0x31df6f-0x0;var _0x31e353=_0xa095[_0x31df6f];return _0x31e353;};'use strict';var util=require(_0x5a09('0x0'));var _=require(_0x5a09('0x1'));var moment=require(_0x5a09('0x2'));function checkNameSurname(_0x2daf00,_0x31eef6,_0x3e73d5){var _0x184266='';if(!_[_0x5a09('0x3')](_0x31eef6)&&_0x5a09('0x4')===typeof _0x31eef6){_0x184266+=_0x31eef6;}if(!_[_0x5a09('0x3')](_0x3e73d5)&&_0x5a09('0x4')===typeof _0x3e73d5){_0x184266+='\x20'+_0x3e73d5;}if(_0x184266!==''){return _0x184266;}return _0x2daf00;}function Action(_0x1d7706,_0x6460cc,_0x3e95e2,_0x33e780,_0x153f91){this[_0x5a09('0x5')]=_0x3e95e2||undefined;this[_0x5a09('0x6')]=_0x1d7706['id'];this[_0x5a09('0x7')]=_0x6460cc['name'];this[_0x5a09('0x8')]=_0x6460cc[_0x5a09('0x8')];this[_0x5a09('0x9')]=_0x5a09('0x7');this[_0x5a09('0xa')]=![];this['membername']=_[_0x5a09('0x3')](_0x1d7706[_0x5a09('0xb')])?undefined:_0x1d7706['Agent'][_0x5a09('0xc')];this[_0x5a09('0xd')]=this[_0x5a09('0xe')]?util[_0x5a09('0xf')]('SIP/%s',this[_0x5a09('0xe')]):_0x33e780||undefined;this[_0x5a09('0x10')]=checkNameSurname(_0x1d7706['Contact']['phone'],_0x1d7706[_0x5a09('0x11')][_0x5a09('0x12')],_0x1d7706[_0x5a09('0x11')][_0x5a09('0x13')]);this[_0x5a09('0x14')]=_0x1d7706[_0x5a09('0x14')]||![];this['calleridnum']=_0x1d7706[_0x5a09('0x11')][_0x5a09('0x15')];this[_0x5a09('0x16')]=_0x1d7706[_0x5a09('0x16')];this[_0x5a09('0x17')]=_0x1d7706[_0x5a09('0x17')]||0x0;this[_0x5a09('0x18')]=_0x1d7706[_0x5a09('0x18')]||0x0;this[_0x5a09('0x19')]=_0x1d7706['countnoanswerretry']||0x0;this['countglobal']=(_0x1d7706[_0x5a09('0x17')]||0x0)+(_0x1d7706[_0x5a09('0x18')]||0x0)+(_0x1d7706['countnoanswerretry']||0x0)+(_0x1d7706[_0x5a09('0x1a')]||0x0)+(_0x1d7706[_0x5a09('0x1b')]||0x0)+(_0x1d7706[_0x5a09('0x1c')]||0x0)+(_0x1d7706[_0x5a09('0x1d')]||0x0)+(_0x1d7706[_0x5a09('0x1e')]||0x0);this[_0x5a09('0x1a')]=_0x1d7706[_0x5a09('0x1a')]||0x0;this[_0x5a09('0x1b')]=_0x1d7706[_0x5a09('0x1b')]||0x0;this['countabandonedretry']=_0x1d7706[_0x5a09('0x1c')]||0x0;this[_0x5a09('0x1d')]=_0x1d7706[_0x5a09('0x1d')]||0x0;this[_0x5a09('0x1e')]=_0x1d7706[_0x5a09('0x1e')]||0x0;this['callback']=_0x1d7706['callback'];this[_0x5a09('0x1f')]=_0x1d7706[_0x5a09('0x1f')];this[_0x5a09('0x20')]=_0x1d7706[_0x5a09('0x20')];this[_0x5a09('0x21')]=_0x1d7706['recallme'];this[_0x5a09('0x22')]=_0x1d7706['ContactId'];this[_0x5a09('0x23')]=_0x1d7706[_0x5a09('0x23')];this['UserId']=_[_0x5a09('0x3')](_0x1d7706[_0x5a09('0xb')])?_0x1d7706[_0x5a09('0x24')]:_0x1d7706['Agent']['id'];this[_0x5a09('0x25')]=_0x1d7706['VoiceQueueId'];this['originatecalleridnum']='';this[_0x5a09('0x26')]='';}Action[_0x5a09('0x27')][_0x5a09('0x28')]=function(){return util[_0x5a09('0xf')](_0x5a09('0x29'),this['calleridname'],this[_0x5a09('0x2a')]);};module['exports']=Action;
\ No newline at end of file
index a357b24..42356a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fd1=['../../../config/logger','preview','actionPreview','../ami','./rpcDb','./action','./util/util','defaults','redis','localhost','enqueue','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','syncNewExten','varset','syncVarSet','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','outbound','name','strategy','answered','available','loggedIn','sumBillable','sumDuration','sumHoldTime','total','unmanaged','abandoned','waiting','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','startPredictive','startProgressive','Trunk','active','callerid','Interval','stringify','md5','voice_queue:save','info','format','voice_queue_presence:remove','pTalking','sendMessageOneNotActive','paused','message','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','\x20is\x20disactive','prototype','syncCampaigns','clockClearZombieChannels','hasOwnProperty','booked','type','clearZombieChannels','setMessage','recallMe','clearZombieChannel','isNil','[clearZombieChannels][talking]','Queue','queue','originated:\x20','pTalking:\x20','dialAnswer','contactId','UserId','VoiceQueueId','Action','status','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','getContactRecallMe','agentReadyId','then','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','logger2','catch','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','outboundReCallsDay','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','[HistoryRecallClose]','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','isActive','isTrunkReachable','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','buildObj','nosuchnumber','dialGlobalMaxRetry','cloneAction','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','activeContact','linkedid','responsetime','answertime','uniqueid','\x20Queue','custom:agentconnect','acw','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','crateCustomerReportQueue','talktime','BUSY','countbusyretry','Busy','custom:agentbusy','busy','Global','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','dialBusyRetryFrequency','unlockAgent','NOANSWER','countnoanswerretry','NoAnswer','noanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','CONGESTION','countcongestionretry','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','dialCongestionMaxRetry','CANCEL','countagentrejectretry','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','AgentReject','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','cause-txt','dialstatus','amd','[callProgressDetectingCustomer][hangupInAMD]','custom:amd','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','ANSWER','callProgressDetectingAgent','object','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logBusy]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','reason','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','Contact','phone','lookAgent','isEmpty','execCall','[Preview][execCall][success]','\x20IdHopper:\x20','idContact','custom:agentcalled','called','Calling','[Preview][execCall][failure]','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','reachable','unmonitored','execRun','unlock','pick','getContactPreview','recallme','validateContact','isValid','checkIsBlackList','Contact.phone','checkInBlack','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','TrunkBackup','Trunk\x20not\x20work','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','dialPrefix','substring','dialCutDigit','trim','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','originatecalleridname','extractCalleridName','extractCalleridNumber','addVariables','merge','variablesAction','OriginateError','[originateFailure][logOriginateFailure]','channel','actionid','logLookAgent','clone','isFailure','response','custom:agentringnoanswer','rejected','[callProgressDetectingAgent][logAnswer]','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','syncDialEnd','destlinkedid','destuniqueid','addVariable','variables','filterKey','keys','variable','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfer','transfererlinkedid','exports','util','bluebird','uuid','moment','../../../config/environment'];(function(_0x5e762b,_0x5b760d){var _0x331c85=function(_0x47f11e){while(--_0x47f11e){_0x5e762b['push'](_0x5e762b['shift']());}};_0x331c85(++_0x5b760d);}(_0x5fd1,0x155));var _0x15fd=function(_0x3c87a4,_0x5a4cca){_0x3c87a4=_0x3c87a4-0x0;var _0x1cadd8=_0x5fd1[_0x3c87a4];return _0x1cadd8;};'use strict';var util=require(_0x15fd('0x0'));var _=require('lodash');var BPromise=require(_0x15fd('0x1'));var uuid=require(_0x15fd('0x2'));var moment=require(_0x15fd('0x3'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x15fd('0x4'));var logger=require(_0x15fd('0x5'))(_0x15fd('0x6'));var loggerAction=require('../../../config/logger')(_0x15fd('0x7'));var ami=require(_0x15fd('0x8'));var rpcDb=require(_0x15fd('0x9'));var Action=require(_0x15fd('0xa'));var ut=require(_0x15fd('0xb'));config['redis']=_[_0x15fd('0xc')](config[_0x15fd('0xd')],{'host':_0x15fd('0xe'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x15fd('0xd')]));var Sequence=function(){};Sequence['prototype'][_0x15fd('0xf')]=function(_0x250457){this['tail']=this['tail']?this['tail'][_0x15fd('0x10')](_0x250457):_0x250457();};function Preview(_0x2a4d55){this[_0x15fd('0x11')]=new Sequence();this[_0x15fd('0x12')]=_0x2a4d55[_0x15fd('0x13')];this[_0x15fd('0x14')]=_0x2a4d55[_0x15fd('0x14')];this[_0x15fd('0x15')]={};this[_0x15fd('0x16')]=_0x2a4d55['agents'];this['clockClearZombieChannels']=0x0;ami['on']('originateresponse',this[_0x15fd('0x17')][_0x15fd('0x18')](this));ami['on'](_0x15fd('0x19'),this[_0x15fd('0x1a')][_0x15fd('0x18')](this));ami['on'](_0x15fd('0x1b'),this[_0x15fd('0x1c')][_0x15fd('0x18')](this));ami['on']('dialend',this['syncDialEnd'][_0x15fd('0x18')](this));ami['on']('newexten',this[_0x15fd('0x1d')]['bind'](this));ami['on'](_0x15fd('0x1e'),this[_0x15fd('0x1f')][_0x15fd('0x18')](this));ami['on']('attendedtransfer',this[_0x15fd('0x20')][_0x15fd('0x18')](this));ami['on'](_0x15fd('0x21'),this[_0x15fd('0x22')][_0x15fd('0x18')](this));this[_0x15fd('0x23')](this[_0x15fd('0x12')]);}function emit(_0x2f46f1,_0x1b8b9f,_0x1eab55){io['to'](_0x2f46f1)[_0x15fd('0x24')](_0x1b8b9f,_0x1eab55);}function emitCampaignPreview(_0x484db6){if(_0x484db6['type']===_0x15fd('0x25')){var _0x36b21e={'id':_0x484db6['id'],'name':_0x484db6[_0x15fd('0x26')],'strategy':_0x484db6[_0x15fd('0x27')],'answered':_0x484db6[_0x15fd('0x28')],'available':_0x484db6[_0x15fd('0x29')],'loggedIn':_0x484db6[_0x15fd('0x2a')],'pTalking':_0x484db6['pTalking'],'sumBillable':_0x484db6[_0x15fd('0x2b')],'sumDuration':_0x484db6[_0x15fd('0x2c')],'sumHoldTime':_0x484db6[_0x15fd('0x2d')]||0x0,'talking':_0x484db6['talking'],'total':_0x484db6[_0x15fd('0x2e')],'type':_0x484db6['type'],'unmanaged':_0x484db6[_0x15fd('0x2f')],'abandoned':_0x484db6[_0x15fd('0x30')],'waiting':_0x484db6[_0x15fd('0x31')],'loggedInDb':_0x484db6['loggedInDb'],'dialActive':_0x484db6[_0x15fd('0x32')],'dialMethod':_0x484db6[_0x15fd('0x33')],'dialOriginateCallerIdName':_0x484db6[_0x15fd('0x34')],'dialOriginateCallerIdNumber':_0x484db6['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x484db6[_0x15fd('0x35')],'dialPrefix':_0x484db6['dialPrefix'],'outboundAnswerAgiCallsDay':_0x484db6[_0x15fd('0x36')],'outboundAnswerCallsDay':_0x484db6[_0x15fd('0x37')],'outboundBlacklistCallsDay':_0x484db6[_0x15fd('0x38')],'outboundBusyCallsDay':_0x484db6[_0x15fd('0x39')],'outboundCongestionCallsDay':_0x484db6[_0x15fd('0x3a')],'outboundDropCallsDayACS':_0x484db6[_0x15fd('0x3b')],'outboundDropCallsDayCallersExit':_0x484db6[_0x15fd('0x3c')],'outboundDropCallsDayTimeout':_0x484db6[_0x15fd('0x3d')],'outboundNoAnswerCallsDay':_0x484db6[_0x15fd('0x3e')],'outboundNoSuchCallsDay':_0x484db6[_0x15fd('0x3f')],'outboundOriginateFailureCallsDay':_0x484db6[_0x15fd('0x40')],'outboundReCallsDay':_0x484db6['outboundReCallsDay'],'outboundRejectCallsDay':_0x484db6[_0x15fd('0x41')],'outboundUnknownCallsDay':_0x484db6[_0x15fd('0x42')],'outboundAbandonedCallsDay':_0x484db6['outboundAbandonedCallsDay'],'predictiveIntervalAnsweredCalls':_0x484db6[_0x15fd('0x43')],'predictiveIntervalAvgHoldtime':_0x484db6[_0x15fd('0x44')],'predictiveIntervalAvgTalktime':_0x484db6['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x484db6[_0x15fd('0x45')],'predictiveIntervalDroppedCallsTimeout':_0x484db6[_0x15fd('0x46')],'predictiveIntervalErlangCalls':_0x484db6['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x484db6[_0x15fd('0x47')],'predictiveIntervalHitRate':_0x484db6[_0x15fd('0x48')],'predictiveIntervalMultiplicativeFactor':_0x484db6[_0x15fd('0x49')],'predictiveIntervalPauses':_0x484db6[_0x15fd('0x4a')],'predictiveIntervalAvailable':_0x484db6[_0x15fd('0x4b')],'predictiveIntervalTotalCalls':_0x484db6[_0x15fd('0x4c')],'message':_0x484db6['message'],'originated':_0x484db6[_0x15fd('0x4d')],'erlangCalls':_0x484db6[_0x15fd('0x4e')],'erlangCallToSecond':_0x484db6[_0x15fd('0x4f')],'erlangAbandonmentRate':_0x484db6[_0x15fd('0x50')],'erlangBusyFactor':_0x484db6['erlangBusyFactor'],'startPredictive':_0x484db6[_0x15fd('0x51')],'startProgressive':_0x484db6[_0x15fd('0x52')]};if(_0x484db6[_0x15fd('0x53')]){_0x36b21e[_0x15fd('0x53')]={'id':_0x484db6[_0x15fd('0x53')]['id'],'name':_0x484db6[_0x15fd('0x53')]['name'],'active':_0x484db6[_0x15fd('0x53')][_0x15fd('0x54')],'callerid':_0x484db6['Trunk'][_0x15fd('0x55')]};}if(_0x484db6[_0x15fd('0x56')]){_0x36b21e[_0x15fd('0x56')]={'id':_0x484db6['Interval']['id'],'name':_0x484db6[_0x15fd('0x56')][_0x15fd('0x26')]};}var _0x1732bc=md5(JSON[_0x15fd('0x57')](_0x36b21e));if(_0x484db6[_0x15fd('0x58')]!==_0x1732bc){_0x484db6[_0x15fd('0x58')]=_0x1732bc;emit(util['format']('voice:queue:%s',_0x36b21e['name']),_0x15fd('0x59'),_0x36b21e);}}}function emitVoiceQueueChannelRemove(_0x289710){logger[_0x15fd('0x5a')]('[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event',JSON['stringify'](_0x289710));emit(util[_0x15fd('0x5b')]('voice:queue:%s',_0x289710['name']),'voice_queue_channel:remove',_0x289710);io[_0x15fd('0x24')](_0x15fd('0x5c'),_0x289710);}function notSendMessagesQueue(_0x217300){if(_0x217300['sendMessageOneNotActive']){if(_0x217300[_0x15fd('0x4d')]===0x0&&_0x217300[_0x15fd('0x5d')]===0x0){_0x217300[_0x15fd('0x5e')]=![];_0x217300['available']=0x0;_0x217300[_0x15fd('0x5f')]=0x0;_0x217300[_0x15fd('0x60')]=_0x15fd('0x61');ut[_0x15fd('0x62')](_0x15fd('0x63'),_0x217300[_0x15fd('0x26')]+_0x15fd('0x64'));}else{_0x217300[_0x15fd('0x60')]=_0x15fd('0x65');ut['logger'](_0x15fd('0x63'),_0x217300[_0x15fd('0x26')]+_0x15fd('0x66'));}emitCampaignPreview(_0x217300);}}Preview[_0x15fd('0x67')][_0x15fd('0x23')]=function(){var _0x5f9429=this;setInterval(function(){_0x5f9429[_0x15fd('0x68')]();},0x7cf);};Preview[_0x15fd('0x67')][_0x15fd('0x68')]=function(){var _0x104eef=this[_0x15fd('0x12')];this[_0x15fd('0x69')]+=0x1;for(var _0x269aae in _0x104eef){if(_0x104eef[_0x15fd('0x6a')](_0x269aae)&&(_0x104eef[_0x269aae][_0x15fd('0x33')]==='preview'||_0x104eef[_0x269aae][_0x15fd('0x33')]===_0x15fd('0x6b'))&&_0x104eef[_0x269aae][_0x15fd('0x6c')]===_0x15fd('0x25')){if(this[_0x15fd('0x69')]>0x7){this[_0x15fd('0x69')]=0x0;this[_0x15fd('0x6d')]();}}if(_0x104eef[_0x15fd('0x6a')](_0x269aae)&&_0x104eef[_0x269aae]['dialMethod']==='preview'&&_0x104eef[_0x269aae][_0x15fd('0x6c')]==='outbound'){if(_0x104eef[_0x269aae][_0x15fd('0x32')]){this[_0x15fd('0x6e')](_0x104eef[_0x269aae]);if(_0x104eef[_0x269aae]['dialPreviewAutoRecallMe'])this[_0x15fd('0x6f')](_0x104eef[_0x269aae]);}else{notSendMessagesQueue(_0x104eef[_0x269aae]);}}}};Preview[_0x15fd('0x67')][_0x15fd('0x70')]=function(_0x2611ba){var _0x3f4ad7=this;this[_0x15fd('0x11')]['enqueue'](function(){if(!_[_0x15fd('0x71')](_0x3f4ad7[_0x15fd('0x15')][_0x2611ba])){loggerAction[_0x15fd('0x5a')](_0x15fd('0x72'),_0x2611ba,_0x15fd('0x73'),_0x3f4ad7[_0x15fd('0x15')][_0x2611ba][_0x15fd('0x74')],_0x15fd('0x75'),JSON[_0x15fd('0x57')](_0x3f4ad7[_0x15fd('0x12')][_0x3f4ad7[_0x15fd('0x15')][_0x2611ba][_0x15fd('0x74')]]['originated']),_0x15fd('0x76'),JSON['stringify'](_0x3f4ad7[_0x15fd('0x12')][_0x3f4ad7[_0x15fd('0x15')][_0x2611ba][_0x15fd('0x74')]]['pTalking']),JSON[_0x15fd('0x57')](_0x3f4ad7[_0x15fd('0x15')][_0x2611ba][_0x15fd('0x77')]),JSON[_0x15fd('0x57')](_['pick'](_0x3f4ad7[_0x15fd('0x15')][_0x2611ba],[_0x15fd('0x78'),_0x15fd('0x79'),_0x15fd('0x7a'),'ListId'])));return ami[_0x15fd('0x7b')]({'action':_0x15fd('0x7c'),'channel':_0x3f4ad7['actions'][_0x2611ba]['channel']})['catch'](function(_0x208bad){if(_0x208bad[_0x15fd('0x60')]===_0x15fd('0x7d')){setTimeout(function(){if(_0x3f4ad7[_0x15fd('0x15')][_0x2611ba]){ut[_0x15fd('0x7e')](_0x3f4ad7[_0x15fd('0x12')][_0x3f4ad7['actions'][_0x2611ba][_0x15fd('0x74')]],_0x15fd('0x7f'));if(_0x3f4ad7[_0x15fd('0x15')][_0x2611ba]['dialAnswer']===!![]){ut[_0x15fd('0x80')](_0x3f4ad7['campaignsPreview'][_0x3f4ad7[_0x15fd('0x15')][_0x2611ba][_0x15fd('0x74')]],_0x15fd('0x7f'));ut[_0x15fd('0x81')](_0x15fd('0x82')+_0x2611ba,_0x3f4ad7[_0x15fd('0x15')][_0x2611ba][_0x15fd('0x74')]);}ut[_0x15fd('0x81')](_0x15fd('0x83')+_0x2611ba,_0x3f4ad7[_0x15fd('0x15')][_0x2611ba][_0x15fd('0x74')]);delete _0x3f4ad7[_0x15fd('0x15')][_0x2611ba];}},0x2328);}});}});};Preview[_0x15fd('0x67')]['clearZombieChannels']=function(){var _0x23d976=this;loggerAction['info'](_0x15fd('0x84'),_['size'](this[_0x15fd('0x15')]));for(var _0x1fac7f in this[_0x15fd('0x15')]){if(_0x23d976['actions']['hasOwnProperty'](_0x1fac7f)){_0x23d976[_0x15fd('0x70')](_0x1fac7f);}}};Preview[_0x15fd('0x67')][_0x15fd('0x6f')]=function(_0x30ab06){var _0x5d94b3=this;rpcDb[_0x15fd('0x85')](_0x30ab06['id'],ut[_0x15fd('0x86')](this[_0x15fd('0x16')]))[_0x15fd('0x87')](function(_0x387e7d){if(!_[_0x15fd('0x71')](_0x387e7d)){for(var _0x59b3b4=0x0;_0x59b3b4<_0x387e7d[_0x15fd('0x88')];_0x59b3b4+=0x1){if(ut[_0x15fd('0x89')](_0x387e7d[_0x59b3b4][_0x15fd('0x8a')])<_0x30ab06[_0x15fd('0x8b')]*0x3c){if(_0x387e7d[_0x59b3b4][_0x15fd('0x8c')]&&!_0x387e7d[_0x59b3b4][_0x15fd('0x8c')]['voicePause']){_0x5d94b3['run'](_0x387e7d[_0x59b3b4]['id'])[_0x15fd('0x87')](ut[_0x15fd('0x8d')]('[RecallMe]'))[_0x15fd('0x8e')](ut[_0x15fd('0x8d')]('[RecallMe]'));}else{rpcDb[_0x15fd('0x8f')](_0x387e7d[_0x59b3b4]['id']);}}else{var _0x4626ac=new Action(_0x387e7d[_0x59b3b4],_0x30ab06);_0x4626ac[_0x15fd('0x90')]=moment()['format'](_0x15fd('0x91'));_0x30ab06[_0x15fd('0x92')]+=0x1;ut[_0x15fd('0x93')](_0x4626ac,0x17,_0x15fd('0x94'));if(_0x30ab06[_0x15fd('0x95')]){rpcDb[_0x15fd('0x96')](ut[_0x15fd('0x97')](_0x387e7d[_0x59b3b4]));rpcDb[_0x15fd('0x98')](_0x4626ac,_0x15fd('0x99'));}else{ut[_0x15fd('0x93')](_0x4626ac,0x16,'RecallFailedTimeout');rpcDb[_0x15fd('0x98')](_0x4626ac,_0x15fd('0x9a'));rpcDb['createCustomerFinal'](_0x4626ac,'[HistoryRecallClose]');}}}}})[_0x15fd('0x8e')](ut[_0x15fd('0x8d')](_0x15fd('0x9b')));};Preview[_0x15fd('0x67')][_0x15fd('0x6e')]=function(_0x1b6f59){_0x1b6f59['sendMessageOneNotActive']=!![];if(ut[_0x15fd('0x9c')](_0x1b6f59[_0x15fd('0x2a')])){_0x1b6f59[_0x15fd('0x60')]=_0x15fd('0x9d');}else if(!ut[_0x15fd('0x9e')](_0x1b6f59[_0x15fd('0x32')])){_0x1b6f59[_0x15fd('0x60')]=_0x15fd('0x61');}else if(!this[_0x15fd('0x9f')](_0x1b6f59[_0x15fd('0x53')])){if(!this[_0x15fd('0x9f')](_0x1b6f59['TrunkBackup'])){_0x1b6f59['message']=_0x15fd('0xa0');}else{_0x1b6f59[_0x15fd('0x60')]=_0x15fd('0xa1');}}else{_0x1b6f59[_0x15fd('0x60')]=_0x15fd('0xa1');}emitCampaignPreview(_0x1b6f59);};Preview[_0x15fd('0x67')][_0x15fd('0xa2')]=function(_0x54bd83,_0x46bb7d,_0x5de222){var _0xc8931e=this;var _0x5abc5c=this[_0x15fd('0x15')][_0x46bb7d];var _0x4ad58e=this[_0x15fd('0x12')][_0x5abc5c[_0x15fd('0x74')]];var _0x4390bc;if(_0x4ad58e){switch(_0x5de222){case'1':_0x4ad58e[_0x15fd('0x3f')]+=0x1;_0x5abc5c[_0x15fd('0xa3')]+=0x1;_0x5abc5c[_0x15fd('0xa4')]=ut[_0x15fd('0xa5')](_0x5abc5c);ut[_0x15fd('0x93')](_0x5abc5c,0x0,_0x15fd('0xa6'));ami['emit']('custom:agentnosuchnumber',ut[_0x15fd('0xa7')](_0x5abc5c,_0x15fd('0xa8')));rpcDb[_0x15fd('0x98')](_0x5abc5c,'[callProgressDetectingCustomer][logNoSuch]');if(ut[_0x15fd('0xa5')](_0x5abc5c)>=_0x4ad58e[_0x15fd('0xa9')]){_0x4390bc=ut[_0x15fd('0xaa')](_0x5abc5c,0xf,'Global');rpcDb[_0x15fd('0xab')](_0x4390bc,_0x15fd('0xac'));}else{if(_0x5abc5c['countnosuchnumberretry']>=_0x4ad58e[_0x15fd('0xad')]){rpcDb['createCustomerFinal'](_0x5abc5c,_0x15fd('0xac'));}else{rpcDb[_0x15fd('0xae')](ut[_0x15fd('0xaf')](_0x5abc5c,_0x15fd('0xa3'),_0x4ad58e[_0x15fd('0xb0')]),_0x5abc5c['unlockAgent'],_0x5abc5c[_0x15fd('0xb1')]);}}delete this['actions'][_0x54bd83[_0x15fd('0xb2')]];break;case'ANSWER':var _0x386c9b=moment()[_0x15fd('0x5b')]('YYYY-MM-DD\x20HH:mm:ss');_0x5abc5c[_0x15fd('0xb3')]=_0x386c9b;_0x5abc5c[_0x15fd('0xb4')]=_0x386c9b;_0x5abc5c['dialAnswer']=!![];_0x4ad58e['pTalking']+=0x1;logger[_0x15fd('0x5a')]('[syncHangup][talking][increment]',_0x5abc5c[_0x15fd('0xb5')],_0x15fd('0xb6'),_0x4ad58e[_0x15fd('0x26')],_0x15fd('0x76'),_0x4ad58e[_0x15fd('0x5d')]);ami['emit'](_0x15fd('0xb7'),ut[_0x15fd('0xa7')](_0x5abc5c,'connect',this[_0x15fd('0x12')][_0x5abc5c[_0x15fd('0x74')]]));if(_0x4ad58e[_0x15fd('0xb8')]){ami[_0x15fd('0x24')](_0x15fd('0xb9'),ut[_0x15fd('0xba')](_0x5abc5c));}break;case'16':ami[_0x15fd('0x24')](_0x15fd('0xbb'),ut[_0x15fd('0xa7')](_0x5abc5c,_0x15fd('0xbc'),this[_0x15fd('0x12')][_0x5abc5c[_0x15fd('0x74')]]));emitVoiceQueueChannelRemove(ut[_0x15fd('0xa7')](_0x5abc5c,_0x15fd('0xbc')));_0x4ad58e['outboundAnswerCallsDay']+=0x1;_0x4ad58e[_0x15fd('0x2e')]+=0x1;_0x4ad58e['answered']+=0x1;ut[_0x15fd('0x80')](_0x4ad58e,_0x15fd('0xbd'));_0x5abc5c[_0x15fd('0xa4')]=ut[_0x15fd('0xa5')](_0x5abc5c);ut['logCustomer'](_0x5abc5c,0x4,_0x15fd('0xbe'));rpcDb[_0x15fd('0x98')](_0x5abc5c,_0x15fd('0xbf'));rpcDb[_0x15fd('0xab')](_0x5abc5c,'[callProgressDetectingCustomer][logAnswerGlobal]');rpcDb[_0x15fd('0xc0')](_0x5abc5c);_0x4ad58e[_0x15fd('0x2c')]+=_0x5abc5c['talktime'];_0x4ad58e[_0x15fd('0x2b')]+=_0x5abc5c[_0x15fd('0xc1')];logger[_0x15fd('0x5a')]('[syncHangup][talking][decrement]',_0x5abc5c[_0x15fd('0xb5')],_0x15fd('0xb6'),_0x4ad58e[_0x15fd('0x26')],_0x15fd('0x76'),_0x4ad58e[_0x15fd('0x5d')]);delete this[_0x15fd('0x15')][_0x54bd83[_0x15fd('0xb2')]];break;case _0x15fd('0xc2'):_0x4ad58e[_0x15fd('0x39')]+=0x1;_0x5abc5c[_0x15fd('0xc3')]+=0x1;_0x5abc5c[_0x15fd('0xa4')]=ut[_0x15fd('0xa5')](_0x5abc5c);ut['logCustomer'](_0x5abc5c,0x5,_0x15fd('0xc4'));ami[_0x15fd('0x24')](_0x15fd('0xc5'),ut[_0x15fd('0xa7')](_0x5abc5c,_0x15fd('0xc6')));rpcDb['createCustomerHistory'](_0x5abc5c,'[callProgressDetectingCustomer][logBusy]');if(ut[_0x15fd('0xa5')](_0x5abc5c)>=_0x4ad58e[_0x15fd('0xa9')]){_0x4390bc=ut[_0x15fd('0xaa')](_0x5abc5c,0xf,_0x15fd('0xc7'));rpcDb[_0x15fd('0xab')](_0x4390bc,_0x15fd('0xc8'));}else{if(_0x5abc5c[_0x15fd('0xc3')]>=_0x4ad58e[_0x15fd('0xc9')]){rpcDb[_0x15fd('0xab')](_0x5abc5c,'[callProgressDetectingCustomer][logBusy]');}else{rpcDb[_0x15fd('0xae')](ut[_0x15fd('0xaf')](_0x5abc5c,'countbusyretry',_0x4ad58e[_0x15fd('0xca')]),_0x5abc5c[_0x15fd('0xcb')],_0x5abc5c[_0x15fd('0xb1')]);}}break;case _0x15fd('0xcc'):_0x4ad58e['outboundNoAnswerCallsDay']+=0x1;_0x5abc5c[_0x15fd('0xcd')]+=0x1;_0x5abc5c[_0x15fd('0xa4')]=ut['totalGlobal'](_0x5abc5c);ut[_0x15fd('0x93')](_0x5abc5c,0x3,_0x15fd('0xce'));ami[_0x15fd('0x24')]('custom:agentnoanswer',ut[_0x15fd('0xa7')](_0x5abc5c,_0x15fd('0xcf')));rpcDb[_0x15fd('0x98')](_0x5abc5c,_0x15fd('0xd0'));if(ut[_0x15fd('0xa5')](_0x5abc5c)>=_0x4ad58e[_0x15fd('0xa9')]){_0x4390bc=ut[_0x15fd('0xaa')](_0x5abc5c,0xf,_0x15fd('0xc7'));rpcDb['createCustomerFinal'](_0x4390bc,_0x15fd('0xd1'));}else{if(_0x5abc5c[_0x15fd('0xcd')]>=_0x4ad58e[_0x15fd('0xd2')]){rpcDb[_0x15fd('0xab')](_0x5abc5c,_0x15fd('0xd0'));}else{rpcDb[_0x15fd('0xae')](ut[_0x15fd('0xaf')](_0x5abc5c,_0x15fd('0xcd'),_0x4ad58e[_0x15fd('0xd3')]),_0x5abc5c[_0x15fd('0xcb')],_0x5abc5c[_0x15fd('0xb1')]);}}break;case _0x15fd('0xd4'):_0x4ad58e[_0x15fd('0x3a')]+=0x1;_0x5abc5c[_0x15fd('0xd5')]+=0x1;_0x5abc5c[_0x15fd('0xa4')]=ut[_0x15fd('0xa5')](_0x5abc5c);ut[_0x15fd('0x93')](_0x5abc5c,0x8,_0x15fd('0xd6'));ami[_0x15fd('0x24')](_0x15fd('0xd7'),ut[_0x15fd('0xa7')](_0x5abc5c,_0x15fd('0xd8')));rpcDb[_0x15fd('0x98')](_0x5abc5c,_0x15fd('0xd9'));if(ut[_0x15fd('0xa5')](_0x5abc5c)>=_0x4ad58e[_0x15fd('0xa9')]){_0x4390bc=ut['cloneAction'](_0x5abc5c,0xf,_0x15fd('0xc7'));rpcDb[_0x15fd('0xab')](_0x4390bc,'[callProgressDetectingCustomer][logCongestionGlobal]');}else{if(_0x5abc5c[_0x15fd('0xd5')]>=_0x4ad58e[_0x15fd('0xda')]){rpcDb[_0x15fd('0xab')](_0x5abc5c,_0x15fd('0xd9'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x5abc5c,_0x15fd('0xd5'),_0x4ad58e['dialBusyRetryFrequency']),_0x5abc5c[_0x15fd('0xcb')],_0x5abc5c[_0x15fd('0xb1')]);}}break;case _0x15fd('0xdb'):_0x4ad58e[_0x15fd('0x41')]+=0x1;_0x5abc5c[_0x15fd('0xdc')]+=0x1;_0x5abc5c[_0x15fd('0xa4')]=ut[_0x15fd('0xa5')](_0x5abc5c);ut['logCustomer'](_0x5abc5c,0x14,'AgentReject');ami[_0x15fd('0x24')](_0x15fd('0xdd'),ut[_0x15fd('0xa7')](_0x5abc5c,_0x15fd('0xde')));rpcDb[_0x15fd('0x98')](_0x5abc5c,_0x15fd('0xdf'));if(ut['totalGlobal'](_0x5abc5c)>=_0x4ad58e['dialGlobalMaxRetry']){_0x4390bc=ut[_0x15fd('0xaa')](_0x5abc5c,0x14,_0x15fd('0xe0'));rpcDb[_0x15fd('0xab')](_0x4390bc,_0x15fd('0xe1'));}else{if(_0x5abc5c[_0x15fd('0xdc')]>=_0x4ad58e[_0x15fd('0xe2')]){rpcDb['createCustomerFinal'](_0x5abc5c,_0x15fd('0xe1'));}else{rpcDb['rescheduleContact'](ut[_0x15fd('0xaf')](_0x5abc5c,_0x15fd('0xdc'),_0x4ad58e[_0x15fd('0xe3')]),_0x5abc5c[_0x15fd('0xcb')],_0x5abc5c['activeContact']);}}break;case _0x15fd('0xe4'):_0x4ad58e['outboundAbandonedCallsDay']+=0x1;_0x5abc5c[_0x15fd('0xe5')]+=0x1;_0x5abc5c['countglobal']=ut['totalGlobal'](_0x5abc5c);ut[_0x15fd('0x93')](_0x5abc5c,0xb,_0x15fd('0xe6'));rpcDb[_0x15fd('0x98')](_0x5abc5c,_0x15fd('0xe7'));if(ut[_0x15fd('0xa5')](_0x5abc5c)>=_0x4ad58e[_0x15fd('0xa9')]){_0x4390bc=ut['cloneAction'](_0x5abc5c,0xf,_0x15fd('0xc7'));rpcDb['createCustomerFinal'](_0x4390bc,_0x15fd('0xe7'));}else{if(_0x5abc5c[_0x15fd('0xe8')]>=_0x4ad58e[_0x15fd('0xe9')]){rpcDb[_0x15fd('0xab')](_0x5abc5c,_0x15fd('0xe7'));}else{rpcDb[_0x15fd('0xae')](ut[_0x15fd('0xaf')](_0x5abc5c,_0x15fd('0xe5'),_0x4ad58e[_0x15fd('0xea')]),_0x5abc5c[_0x15fd('0xcb')],_0x5abc5c[_0x15fd('0xb1')]);}}break;case'18':_0x4ad58e[_0x15fd('0x42')]+=0x1;_0x5abc5c['countmachineretry']+=0x1;_0x5abc5c[_0x15fd('0xa4')]=ut[_0x15fd('0xa5')](_0x5abc5c);ut[_0x15fd('0x93')](_0x5abc5c,0x12,_0x54bd83[_0x15fd('0xeb')]||_0x54bd83[_0x15fd('0xec')]);ami[_0x15fd('0x24')]('custom:amd',ut['buildObj'](_0x5abc5c,_0x15fd('0xed')));rpcDb[_0x15fd('0x98')](_0x5abc5c,_0x15fd('0xee'));if(ut[_0x15fd('0xa5')](_0x5abc5c)>=_0x4ad58e['dialGlobalMaxRetry']){_0x4390bc=ut['cloneAction'](_0x5abc5c,0xf,_0x15fd('0xc7'));rpcDb[_0x15fd('0xab')](_0x4390bc,_0x15fd('0xee'));}else{rpcDb['createCustomerFinal'](_0x5abc5c,'[callProgressDetectingCustomer][hangupInAMD]');}delete this[_0x15fd('0x15')][_0x54bd83[_0x15fd('0xb2')]];break;case'19':_0x4ad58e[_0x15fd('0x42')]+=0x1;_0x5abc5c[_0x15fd('0xa4')]=ut[_0x15fd('0xa5')](_0x5abc5c);ut[_0x15fd('0x93')](_0x5abc5c,0x13,_0x54bd83[_0x15fd('0xeb')]||_0x54bd83[_0x15fd('0xec')]);ami[_0x15fd('0x24')](_0x15fd('0xef'),ut['buildObj'](_0x5abc5c,'amd'));rpcDb[_0x15fd('0x98')](_0x5abc5c,_0x15fd('0xf0'));if(ut[_0x15fd('0xa5')](_0x5abc5c)>=_0x4ad58e[_0x15fd('0xa9')]){_0x4390bc=ut[_0x15fd('0xaa')](_0x5abc5c,0xf,_0x15fd('0xc7'));rpcDb[_0x15fd('0xab')](_0x4390bc,'[callProgressDetectingCustomer][machine]');}else{rpcDb[_0x15fd('0xab')](_0x5abc5c,'[callProgressDetectingCustomer][machine]');}delete this['actions'][_0x54bd83[_0x15fd('0xb2')]];break;default:if(_0x5abc5c[_0x15fd('0x77')]){ut['decrementTalkink'](_0x4ad58e,_0x15fd('0xf1'));ut[_0x15fd('0x81')](_0x15fd('0xf2')+_0x4ad58e['name'],_0x54bd83);}_0x4ad58e[_0x15fd('0x42')]+=0x1;_0x5abc5c[_0x15fd('0xa4')]=ut[_0x15fd('0xa5')](_0x5abc5c);ut[_0x15fd('0x93')](_0x5abc5c,0xc,_0x54bd83[_0x15fd('0xeb')]||_0x54bd83[_0x15fd('0xec')]);rpcDb[_0x15fd('0x98')](_0x5abc5c,_0x15fd('0xf3'));if(ut[_0x15fd('0xa5')](_0x5abc5c)>=_0x4ad58e[_0x15fd('0xa9')]){_0x4390bc=ut[_0x15fd('0xaa')](_0x5abc5c,0xf,'Global');rpcDb[_0x15fd('0xab')](_0x4390bc,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb[_0x15fd('0xab')](_0x5abc5c,_0x15fd('0xf4'));}delete this[_0x15fd('0x15')][_0x54bd83[_0x15fd('0xb2')]];}if(!(_0x5abc5c[_0x15fd('0x77')]&&_0x5de222==='16')){ut[_0x15fd('0x7e')](_0x4ad58e,_0x15fd('0xf5'));logger[_0x15fd('0x5a')](_0x15fd('0xf6'),_0x5abc5c[_0x15fd('0xb5')],_0x15fd('0xb6'),_0x4ad58e['name'],'originated:\x20',_0x4ad58e[_0x15fd('0x4d')]);}if(_0x5de222!==_0x15fd('0xf7')){delete this[_0x15fd('0x15')][_0x54bd83[_0x15fd('0xb2')]];delete this[_0x15fd('0x15')][_0x54bd83['destlinkedid']];}}};Preview['prototype'][_0x15fd('0xf8')]=function(_0x14d028,_0x32397e,_0x3c06d7){if(_['isUndefined'](_0x32397e)&&_0x15fd('0xf9')!==typeof _0x32397e){return;}if(_['isUndefined'](_0x3c06d7)&&_0x15fd('0xf9')!==typeof _0x3c06d7){return;}switch(_0x3c06d7['reason']){case'0':ut[_0x15fd('0xfa')](_0x14d028,0x0,_0x15fd('0xa6'));rpcDb[_0x15fd('0xfb')](_0x14d028,_0x15fd('0xfc'));break;case'3':ut[_0x15fd('0xfa')](_0x14d028,0x3,_0x15fd('0xce'));rpcDb['createAgentHistory'](_0x14d028,'[callProgressDetectingAgent][logNoAnswer]');break;case'5':ut[_0x15fd('0xfa')](_0x14d028,0x5,_0x15fd('0xc4'));rpcDb[_0x15fd('0xfb')](_0x14d028,_0x15fd('0xfd'));break;case'8':ut[_0x15fd('0xfa')](_0x14d028,0x8,_0x15fd('0xd6'));rpcDb[_0x15fd('0xfb')](_0x14d028,'[callProgressDetectingAgent][logCongestion]');break;case'22':ut['logAgent'](_0x14d028,0x16,_0x15fd('0xfe'));rpcDb['createAgentHistory'](_0x14d028,_0x15fd('0xff'));break;default:ut[_0x15fd('0xfa')](_0x14d028,0xc,_0x3c06d7[_0x15fd('0x100')]);rpcDb[_0x15fd('0xfb')](_0x14d028,_0x15fd('0x101'));}ut[_0x15fd('0x7e')](_0x32397e,_0x15fd('0x102'));logger[_0x15fd('0x5a')](_0x15fd('0x103'),_0x14d028['uniqueid'],_0x15fd('0xb6'),_0x32397e[_0x15fd('0x26')],_0x15fd('0x75'),_0x32397e[_0x15fd('0x4d')]);delete this[_0x15fd('0x15')][_0x14d028['uniqueid']];};Preview[_0x15fd('0x67')]['checkInBlack']=function(_0x1ff525,_0x3180ab,_0x355625,_0x23593a,_0x4a6832){var _0x4960b6=this;return new BPromise(function(_0x35cf46,_0x1c34af){if(_['isNil'](_0x3180ab)||_[_0x15fd('0x71')](_0x3180ab[_0x15fd('0x104')])||_[_0x15fd('0x71')](_0x3180ab[_0x15fd('0x104')][_0x15fd('0x105')])||_[_0x15fd('0x71')](_0x3180ab[_0x15fd('0x7a')])){_0x1c34af(ut[_0x15fd('0x60')]('Contact\x20is\x20undefined',_0x23593a,_0x4a6832));return;}var _0x431392=uuid['v4']();var _0x29a110=_0x4960b6[_0x15fd('0x12')][_0x3180ab[_0x15fd('0x73')][_0x15fd('0x26')]];var _0x8598f2=_0x355625?_0x4960b6[_0x15fd('0x16')][_0x355625]['id']:undefined;_0x4960b6['actions'][_0x431392]=new Action(_0x3180ab,_0x29a110,_0x431392,_0x355625,_0x8598f2);var _0xe52abc=_0x4960b6['actions'][_0x431392];_0xe52abc['unlockAgent']=_0x23593a;_0xe52abc[_0x15fd('0xb1')]=_0x4a6832;_0xe52abc[_0x15fd('0x106')]=_0x355625;if(_[_0x15fd('0x107')](_0x1ff525)){_0x4960b6[_0x15fd('0x108')](_0xe52abc,_0x29a110,_0x3180ab,_0x355625)[_0x15fd('0x87')](function(_0x1d8c42){logger[_0x15fd('0x5a')](_0x15fd('0x109'),'Queue:\x20'+_0xe52abc[_0x15fd('0x74')]+_0x15fd('0x10a')+_0xe52abc[_0x15fd('0x10b')],JSON[_0x15fd('0x57')](_0x1d8c42));ami[_0x15fd('0x24')](_0x15fd('0x10c'),ut[_0x15fd('0xa7')](_0xe52abc,_0x15fd('0x10d'),_0x4960b6['campaignsPreview'][_0xe52abc[_0x15fd('0x74')]]));_0x35cf46(ut[_0x15fd('0x60')](_0x15fd('0x10e')));})[_0x15fd('0x8e')](function(_0xdf6a3f){ut['logger'](_0x15fd('0x10f'),_0xdf6a3f);_0x1c34af(ut[_0x15fd('0x60')]('Call\x20failed',_0x23593a,_0x4a6832));});}else{_0x29a110[_0x15fd('0x38')]+=0x1;ut[_0x15fd('0x110')](_0xe52abc);rpcDb[_0x15fd('0x111')](_0xe52abc,_0x15fd('0x112'));delete _0x4960b6[_0x15fd('0x15')][_0x431392];_0x1c34af(ut[_0x15fd('0x60')](_0x15fd('0x113'),_0x23593a,_0x4a6832));}});};Preview[_0x15fd('0x67')][_0x15fd('0x9f')]=function(_0x982d6d){return!_[_0x15fd('0x71')](_0x982d6d)&&!_[_0x15fd('0x71')](_0x982d6d[_0x15fd('0x26')])&&!_[_0x15fd('0x71')](_0x982d6d[_0x15fd('0x54')])&&_0x982d6d[_0x15fd('0x54')]&&!_[_0x15fd('0x71')](this[_0x15fd('0x14')][util[_0x15fd('0x5b')](_0x15fd('0x114'),_0x982d6d[_0x15fd('0x26')])])&&!_[_0x15fd('0x71')](this[_0x15fd('0x14')][util['format']('SIP/%s',_0x982d6d[_0x15fd('0x26')])][_0x15fd('0x7c')])&&(this[_0x15fd('0x14')][util[_0x15fd('0x5b')]('SIP/%s',_0x982d6d[_0x15fd('0x26')])][_0x15fd('0x7c')]===_0x15fd('0x115')||this['trunks'][util[_0x15fd('0x5b')](_0x15fd('0x114'),_0x982d6d[_0x15fd('0x26')])][_0x15fd('0x7c')]===_0x15fd('0x116'));};Preview['prototype']['run']=function(_0x2ec831,_0xc7da2d){var _0x52bcd2=this;return new BPromise(function(_0x6212cb,_0x34008e){_0x52bcd2[_0x15fd('0x117')](_0x2ec831,_0xc7da2d)[_0x15fd('0x87')](function(_0x35febd){_0x6212cb(_['pick'](_0x35febd,[_0x15fd('0x60')]));})[_0x15fd('0x8e')](function(_0x3b1ca4){if(_0x3b1ca4[_0x15fd('0x118')]){rpcDb['unlockContact'](_0x2ec831);}if(_0x3b1ca4[_0x15fd('0x54')]){rpcDb[_0x15fd('0x8f')](_0x2ec831);}_0x34008e(_[_0x15fd('0x119')](_0x3b1ca4,[_0x15fd('0x60')]));});});};Preview[_0x15fd('0x67')][_0x15fd('0x117')]=function(_0x5efbd8,_0x2bd82a){var _0x88e79a=this;return new BPromise(function(_0x30b58b,_0x31a880){var _0x3a30e7,_0x32f2b3;rpcDb[_0x15fd('0x11a')](_0x5efbd8)['then'](function(_0x56db93){if(!_['isNil'](_0x56db93[0x0])){_0x32f2b3=_0x56db93[0x0][_0x15fd('0x11b')]?![]:!![];_0x3a30e7=_0x56db93[0x0][_0x15fd('0x11b')]?!![]:![];_0x3a30e7=_0x2bd82a?!![]:_0x3a30e7;}var _0x24f8eb=_0x88e79a[_0x15fd('0x11c')](_0x56db93);if(_0x24f8eb[_0x15fd('0x11d')]){rpcDb[_0x15fd('0x11e')](_[_0x15fd('0x119')](_0x56db93[0x0],[_0x15fd('0x7a'),_0x15fd('0x11f')]))[_0x15fd('0x87')](function(_0x34b3b0){_0x88e79a[_0x15fd('0x120')](_0x34b3b0,_0x56db93[0x0],_0x2bd82a,_0x32f2b3,_0x3a30e7)[_0x15fd('0x87')](function(_0x4580bd){_0x30b58b(_0x4580bd);})[_0x15fd('0x8e')](function(_0x174b0d){_0x31a880(_0x174b0d);});})['catch'](function(_0x2460a8){ut[_0x15fd('0x62')](_0x15fd('0x121'),_0x2460a8);_0x31a880(ut[_0x15fd('0x60')]('Call\x20unsuccessful',_0x32f2b3,_0x3a30e7));});}else{_0x31a880(ut[_0x15fd('0x60')](_0x24f8eb[_0x15fd('0x60')],_0x32f2b3,_0x3a30e7));}})[_0x15fd('0x8e')](function(_0x389355){ut[_0x15fd('0x62')]('[Preview][getContactPreview]',_0x389355);_0x31a880(ut[_0x15fd('0x60')](_0x15fd('0x122'),![],!![]));});});};Preview['prototype']['validateContact']=function(_0x10a997){if(_[_0x15fd('0x71')](_0x10a997)||_[_0x15fd('0x107')](_0x10a997)||!_[_0x15fd('0x71')](_0x10a997[0x0][_0x15fd('0x8c')])&&_[_0x15fd('0x71')](_0x10a997[0x0][_0x15fd('0x8c')]['name'])){ut[_0x15fd('0x62')](_0x15fd('0x123'),_0x10a997);return{'isValid':![],'message':_0x15fd('0x124')};}var _0x5e6b7b=this[_0x15fd('0x12')][_0x10a997[0x0][_0x15fd('0x73')]['name']];_0x5e6b7b[_0x15fd('0x60')]='ACTIVE';if(_['isNil'](_0x5e6b7b)){ut['logger'](_0x15fd('0x125'),_0x5e6b7b);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this[_0x15fd('0x9f')](_0x5e6b7b['Trunk'])){ut['logger'](_0x15fd('0x126'),_0x15fd('0x127')+_0x5e6b7b['name']+_0x15fd('0x128'));if(!this[_0x15fd('0x9f')](_0x5e6b7b[_0x15fd('0x129')])){ut['logger'](_0x15fd('0x126'),_0x5e6b7b[_0x15fd('0x26')]+'\x20Trunk\x20Backup\x20is\x20not\x20active');return{'isValid':![],'message':_0x15fd('0x12a')};}}if(!ut[_0x15fd('0x9e')](_0x5e6b7b[_0x15fd('0x32')])){ut[_0x15fd('0x62')]('[Preview][validateContact][Campaign\x20Active]',_0x5e6b7b[_0x15fd('0x26')]+_0x15fd('0x12b'));return{'isValid':![],'message':_0x15fd('0x127')+_0x5e6b7b[_0x15fd('0x26')]+_0x15fd('0x12b')};}return{'isValid':!![],'message':_0x15fd('0x12c')};};Preview[_0x15fd('0x67')]['execCall']=function(_0x2350c1,_0x4f0bfd,_0x321f68,_0x5a5ec5){var _0x28bcdb=this;return new BPromise(function(_0xbdc802,_0xc713d8){var _0x4f1309=_0x2350c1['uniqueid'];var _0x20e8a2=_0x28bcdb['isTrunkReachable'](_0x4f0bfd['Trunk'])?util[_0x15fd('0x5b')](_0x15fd('0x12d'),_0x4f0bfd[_0x15fd('0x53')]['name'],_[_0x15fd('0x71')](_0x4f0bfd[_0x15fd('0x12e')])?'':_0x4f0bfd[_0x15fd('0x12e')]['trim']()||'',_0x4f0bfd['dialCutDigit']>0x0?_0x321f68[_0x15fd('0x104')][_0x15fd('0x105')][_0x15fd('0x12f')](_0x4f0bfd[_0x15fd('0x130')]):_0x321f68[_0x15fd('0x104')][_0x15fd('0x105')]):util[_0x15fd('0x5b')]('SIP/%s/%s%s',_[_0x15fd('0x71')](_0x4f0bfd[_0x15fd('0x129')])?_0x4f0bfd['Trunk'][_0x15fd('0x26')]:_0x4f0bfd[_0x15fd('0x129')][_0x15fd('0x26')],_[_0x15fd('0x71')](_0x4f0bfd[_0x15fd('0x12e')])?'':_0x4f0bfd['dialPrefix'][_0x15fd('0x131')]()||'',_0x4f0bfd['dialCutDigit']>0x0?_0x321f68[_0x15fd('0x104')][_0x15fd('0x105')][_0x15fd('0x12f')](_0x4f0bfd[_0x15fd('0x130')]):_0x321f68[_0x15fd('0x104')][_0x15fd('0x105')]);var _0x1105f8=_0x28bcdb[_0x15fd('0x9f')](_0x4f0bfd['Trunk'])?ut[_0x15fd('0x132')](_0x4f0bfd['Trunk'][_0x15fd('0x55')],_0x4f0bfd[_0x15fd('0x34')],_0x4f0bfd[_0x15fd('0x133')]>0x0?ut[_0x15fd('0x134')](_0x4f0bfd[_0x15fd('0x135')],_0x4f0bfd[_0x15fd('0x133')]):_0x4f0bfd[_0x15fd('0x135')]):ut['getCallerId'](_[_0x15fd('0x71')](_0x4f0bfd[_0x15fd('0x129')])?_0x4f0bfd[_0x15fd('0x53')]['callerid']:_0x4f0bfd['TrunkBackup'][_0x15fd('0x55')],_0x4f0bfd[_0x15fd('0x34')],_0x4f0bfd[_0x15fd('0x133')]>0x0?ut[_0x15fd('0x134')](_0x4f0bfd[_0x15fd('0x135')],_0x4f0bfd[_0x15fd('0x133')]):_0x4f0bfd[_0x15fd('0x135')]);if(_0x1105f8){_0x2350c1[_0x15fd('0x136')]=ut[_0x15fd('0x137')](_0x1105f8);_0x2350c1['originatecalleridnum']=ut[_0x15fd('0x138')](_0x1105f8);}var _0x147ae5=ut[_0x15fd('0x139')](_0x4f0bfd,_0x321f68,_0x20e8a2,_0x1105f8,_0x4f1309,_0x2350c1);_[_0x15fd('0x13a')](_0x2350c1,ut['toLowerVariables'](_0x147ae5));_0x2350c1['starttime']=moment()[_0x15fd('0x5b')](_0x15fd('0x91'));ami[_0x15fd('0x7b')](ut[_0x15fd('0x13b')](_0x2350c1,_0x4f0bfd,_0x147ae5,_0x2350c1[_0x15fd('0xb1')],_0x5a5ec5))['then'](function(_0x571242){_0x4f0bfd['originated']+=0x1;logger[_0x15fd('0x5a')]('[originated][increment]',_0x4f1309,'\x20Queue',_0x4f0bfd[_0x15fd('0x26')],_0x15fd('0x75'),_0x4f0bfd[_0x15fd('0x4d')]);_0xbdc802(_0x571242);})[_0x15fd('0x8e')](function(_0x1c5847){ut['logAgent'](_0x2350c1,0xe,_0x15fd('0x13c'));rpcDb[_0x15fd('0xfb')](_0x2350c1,_0x15fd('0x13d'));_0xc713d8(_0x1c5847);});});};Preview[_0x15fd('0x67')][_0x15fd('0x1d')]=function(_0x4d09dd){if(this[_0x15fd('0x15')][_0x4d09dd[_0x15fd('0xb2')]]){this[_0x15fd('0x15')][_0x4d09dd['linkedid']][_0x15fd('0x13e')]=_0x4d09dd[_0x15fd('0x13e')];}};Preview[_0x15fd('0x67')]['syncOriginateResponse']=function(_0x293839){var _0x2a8069=this;var _0x10e272=this[_0x15fd('0x15')][_0x293839[_0x15fd('0x13f')]];if(_0x10e272){if(_0x10e272[_0x15fd('0x106')]&&this[_0x15fd('0x16')][_0x10e272[_0x15fd('0x106')]]){ut[_0x15fd('0x140')](_0x10e272,this[_0x15fd('0x16')][_0x10e272['lookAgent']][_0x15fd('0x26')],this[_0x15fd('0x16')][_0x10e272[_0x15fd('0x106')]]['id']);}var _0x13068e=_[_0x15fd('0x141')](_0x10e272);_0x13068e[_0x15fd('0xb3')]=moment()[_0x15fd('0x5b')](_0x15fd('0x91'));var _0x55c774=_0x2a8069['campaignsPreview'][_0x10e272['queue']];if(ut[_0x15fd('0x142')](_0x293839[_0x15fd('0x143')])){if(_0x10e272['unlockAgent']){rpcDb['unlockContact'](_0x10e272[_0x15fd('0x10b')]);}if(_0x10e272['activeContact']){rpcDb[_0x15fd('0x8f')](_0x10e272['idContact']);}ami[_0x15fd('0x24')](_0x15fd('0x144'),ut[_0x15fd('0xa7')](_0x10e272,_0x15fd('0x145'),this[_0x15fd('0x12')][_0x10e272['queue']]));this[_0x15fd('0xf8')](_0x13068e,_0x55c774,_0x293839);}else{_0x10e272[_0x15fd('0x90')]=moment()[_0x15fd('0x5b')]('YYYY-MM-DD\x20HH:mm:ss');ut[_0x15fd('0xfa')](_0x13068e,0x4,_0x15fd('0xbe'));rpcDb[_0x15fd('0xfb')](_0x13068e,_0x15fd('0x146'));}}};Preview[_0x15fd('0x67')][_0x15fd('0x1a')]=function(_0x30e164){var _0x52951d=this;var _0x762320=this[_0x15fd('0x15')][_0x30e164[_0x15fd('0xb2')]];var _0x812cfa;if(_0x762320){_0x812cfa=this[_0x15fd('0x12')][_0x762320['queue']];logger['info']('[syncHangup][talking]',_0x30e164['linkedid'],_0x15fd('0xb6'),_0x812cfa[_0x15fd('0x26')],_0x15fd('0x76'),_0x812cfa[_0x15fd('0x5d')]);}if(this['actions'][_0x30e164[_0x15fd('0xb2')]]&&_0x30e164[_0x15fd('0xb2')]!==_0x30e164[_0x15fd('0xb5')]){if(_0x30e164[_0x15fd('0x147')]==='16'&&this[_0x15fd('0x15')][_0x30e164[_0x15fd('0xb2')]][_0x15fd('0x77')]){this[_0x15fd('0xa2')](_0x30e164,_0x30e164[_0x15fd('0xb2')],_0x30e164[_0x15fd('0x147')]);}else if(this['actions'][_0x30e164[_0x15fd('0xb2')]][_0x15fd('0x77')]){logger[_0x15fd('0x5a')](_0x15fd('0x148'),_0x30e164['linkedid'],_0x30e164[_0x15fd('0x147')],_0x15fd('0xb6'),_0x812cfa[_0x15fd('0x26')],_0x15fd('0x76'),_0x812cfa['pTalking']);this['callProgressDetectingCustomer'](_0x30e164,_0x30e164['linkedid'],_0x30e164['cause']);}}else if(_0x762320&&_[_0x15fd('0x71')](_0x762320[_0x15fd('0x149')])&&_0x812cfa[_0x15fd('0x14a')]&&_0x30e164[_0x15fd('0xb2')]===_0x30e164['uniqueid']&&_[_0x15fd('0x71')](_0x30e164[_0x15fd('0x100')])&&_0x30e164[_0x15fd('0x147')]==='16'&&_0x30e164[_0x15fd('0x14b')]==='6'&&_['isUndefined'](_0x762320['transfer'])){if(_0x762320['unlockAgent']){rpcDb['unlockContact'](_0x762320[_0x15fd('0x10b')]);}if(_0x762320[_0x15fd('0xb1')]){rpcDb[_0x15fd('0x8f')](_0x762320['idContact']);}_0x30e164['reason']='22';this[_0x15fd('0xf8')](_0x762320,_0x812cfa,_0x30e164);}else if(_0x762320&&_0x762320['transfer']){if(_0x30e164[_0x15fd('0x147')]==='16'&&this['actions'][_0x30e164[_0x15fd('0xb2')]][_0x15fd('0x77')]){logger[_0x15fd('0x5a')]('[syncHangup][talking][transfer]',_0x30e164[_0x15fd('0xb2')],_0x30e164[_0x15fd('0x147')],_0x15fd('0xb6'),_0x812cfa['name'],'pTalking:\x20',_0x812cfa[_0x15fd('0x5d')]);this[_0x15fd('0xa2')](_0x30e164,_0x30e164['linkedid'],_0x30e164[_0x15fd('0x147')]);}else if(this[_0x15fd('0x15')][_0x30e164[_0x15fd('0xb2')]][_0x15fd('0x77')]){logger['info'](_0x15fd('0x148'),_0x30e164['linkedid'],_0x30e164[_0x15fd('0x147')],_0x15fd('0xb6'),_0x812cfa['name'],_0x15fd('0x76'),_0x812cfa[_0x15fd('0x5d')]);this[_0x15fd('0xa2')](_0x30e164,_0x30e164[_0x15fd('0xb2')],_0x30e164[_0x15fd('0x147')]);}}};Preview[_0x15fd('0x67')][_0x15fd('0x14c')]=function(_0x32cbbb){if(this[_0x15fd('0x15')][_0x32cbbb[_0x15fd('0x14d')]]&&_0x32cbbb[_0x15fd('0x14d')]!==_0x32cbbb[_0x15fd('0x14e')]){this['callProgressDetectingCustomer'](_0x32cbbb,_0x32cbbb['destlinkedid'],_0x32cbbb[_0x15fd('0xec')]);}};Preview['prototype'][_0x15fd('0x1c')]=function(_0x3dbc1b){if(this[_0x15fd('0x15')][_0x3dbc1b[_0x15fd('0xb2')]]&&_0x3dbc1b[_0x15fd('0xb2')]!==_0x3dbc1b[_0x15fd('0xb5')]&&!this['actions'][_0x3dbc1b[_0x15fd('0xb2')]][_0x15fd('0x77')]){if(_0x3dbc1b[_0x15fd('0x147')]==='1'){this['callProgressDetectingCustomer'](_0x3dbc1b,_0x3dbc1b[_0x15fd('0xb2')],_0x3dbc1b[_0x15fd('0x147')]);}}};Preview[_0x15fd('0x67')][_0x15fd('0x14f')]=function(_0x2c8934,_0x6982dd,_0x2b7f9c){if(this['actions'][_0x2c8934]){if(_[_0x15fd('0x71')](this[_0x15fd('0x15')][_0x2c8934]['variables'])){this[_0x15fd('0x15')][_0x2c8934][_0x15fd('0x150')]={};}this['actions'][_0x2c8934]['variables'][_0x6982dd]=_0x2b7f9c;}};Preview[_0x15fd('0x67')][_0x15fd('0x1f')]=function(_0x5ceaaa){try{if(!_[_0x15fd('0x71')](_0x5ceaaa)){if(ut[_0x15fd('0x151')](_['keys'](_0x5ceaaa['variable'])[0x0])){this['addVariable'](_0x5ceaaa['uniqueid'],_[_0x15fd('0x152')](_0x5ceaaa[_0x15fd('0x153')])[0x0],_0x5ceaaa['value']);}}}catch(_0x3e7be2){logger['error'](_0x15fd('0x154'),util[_0x15fd('0x155')](_0x3e7be2,{'showHidden':![],'depth':null}));}};Preview[_0x15fd('0x67')][_0x15fd('0x20')]=function(_0x2dc778){if(_0x2dc778){if(this[_0x15fd('0x15')][_0x2dc778[_0x15fd('0x156')]]){this[_0x15fd('0x15')][_0x2dc778['transfertargetlinkedid']][_0x15fd('0x157')]=!![];}}};Preview[_0x15fd('0x67')][_0x15fd('0x22')]=function(_0x22ad72){if(_0x22ad72){if(this[_0x15fd('0x15')][_0x22ad72['transfererlinkedid']]){this['actions'][_0x22ad72[_0x15fd('0x158')]][_0x15fd('0x157')]=!![];}}};module[_0x15fd('0x159')]=Preview;
\ No newline at end of file
+var _0x3435=['Trunk','name','callerid','Interval','format','voice:queue:%s','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','stringify','voice_queue_channel:remove','sendMessageOneNotActive','paused','NOT_ACTIVE','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','logger','\x20is\x20disactive','prototype','syncCampaigns','hasOwnProperty','preview','booked','dialActive','setMessage','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','info','Queue','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','contactId','UserId','VoiceQueueId','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','decrementTalkink','[clearZombieChannel]','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','size','getContactRecallMe','agentReadyId','then','getDiff','dialRecallMeTimeout','Agent','voicePause','run','logger2','[RecallMe]','disableContact','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','[HistoryRecallClose]','createCustomerFinal','IsNotLoggedIn','isTrunkReachable','TrunkBackup','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','dialGlobalMaxRetry','cloneAction','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','activeContact','responsetime','answertime','[syncHangup][talking][increment]','uniqueid','\x20Queue','custom:agentconnect','connect','acw','buildAcw','complete','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','crateCustomerReportQueue','talktime','sumBillable','[syncHangup][talking][decrement]','linkedid','BUSY','outboundBusyCallsDay','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','countbusyretry','dialBusyMaxRetry','dialBusyRetryFrequency','unlockAgent','NOANSWER','outboundNoAnswerCallsDay','countnoanswerretry','NoAnswer','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswer]','CONGESTION','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','countcongestionretry','dialCongestionMaxRetry','CANCEL','AgentReject','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','countagentrejectretry','[callProgressDetectingCustomer][logAgentReject]','ABANDONED','countabandonedretry','Abandoned','countabandonedetry','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedRetryFrequency','countmachineretry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','loggerError','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','isUndefined','object','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent][logAnswerAGI]','reason','[callProgressDetectingAgent]','isNil','Contact','phone','isEmpty','execCall','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','idContact','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','[Blacklist][error]','active','SIP/%s','unmonitored','execRun','unlockContact','getContactPreview','isValid','checkIsBlackList','Contact.phone','checkInBlack','Call\x20unsuccessful','validateContact','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','dialPrefix','trim','dialCutDigit','substring','SIP/%s/%s%s','getCallerId','dialOriginateCallerIdName','getCallerIdRandom','dialRandomLastDigitCallerIdNumber','extractCalleridName','extractCalleridNumber','addVariables','merge','variablesAction','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','actionid','lookAgent','logLookAgent','clone','isFailure','response','custom:agentringnoanswer','starttime','[callProgressDetectingAgent][logAnswer]','cause','[syncHangup][talking][cause]','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destuniqueid','addVariable','variables','filterKey','keys','variable','error','[syncVarSet][Preview]','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','bluebird','uuid','moment','md5','../../../config/environment','../../../config/logger','actionPreview','../ami','./util/util','redis','defaults','localhost','enqueue','tail','sequence','campaignsPreview','trunks','actions','agents','clockClearZombieChannels','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','dialend','syncDialEnd','newexten','syncNewExten','varset','syncVarSet','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','type','outbound','strategy','answered','available','loggedIn','pTalking','sumDuration','sumHoldTime','total','unmanaged','loggedInDb','dialMethod','dialOriginateCallerIdNumber','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundNoSuchCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangBusyFactor','startPredictive'];(function(_0x188cc8,_0xd39746){var _0x4cb155=function(_0x2d2a6c){while(--_0x2d2a6c){_0x188cc8['push'](_0x188cc8['shift']());}};_0x4cb155(++_0xd39746);}(_0x3435,0xfa));var _0x5343=function(_0x1a0daa,_0x2a4634){_0x1a0daa=_0x1a0daa-0x0;var _0x1dbe15=_0x3435[_0x1a0daa];return _0x1dbe15;};'use strict';var util=require(_0x5343('0x0'));var _=require(_0x5343('0x1'));var BPromise=require(_0x5343('0x2'));var uuid=require(_0x5343('0x3'));var moment=require(_0x5343('0x4'));var md5=require(_0x5343('0x5'));var Redis=require('ioredis');var config=require(_0x5343('0x6'));var logger=require(_0x5343('0x7'))('preview');var loggerAction=require('../../../config/logger')(_0x5343('0x8'));var ami=require(_0x5343('0x9'));var rpcDb=require('./rpcDb');var Action=require('./action');var ut=require(_0x5343('0xa'));config[_0x5343('0xb')]=_[_0x5343('0xc')](config[_0x5343('0xb')],{'host':_0x5343('0xd'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5343('0xb')]));var Sequence=function(){};Sequence['prototype'][_0x5343('0xe')]=function(_0x328e54){this[_0x5343('0xf')]=this[_0x5343('0xf')]?this[_0x5343('0xf')]['finally'](_0x328e54):_0x328e54();};function Preview(_0x42a94a){this[_0x5343('0x10')]=new Sequence();this[_0x5343('0x11')]=_0x42a94a['voiceQueues'];this[_0x5343('0x12')]=_0x42a94a['trunks'];this[_0x5343('0x13')]={};this[_0x5343('0x14')]=_0x42a94a['agents'];this[_0x5343('0x15')]=0x0;ami['on']('originateresponse',this[_0x5343('0x16')][_0x5343('0x17')](this));ami['on'](_0x5343('0x18'),this[_0x5343('0x19')]['bind'](this));ami['on'](_0x5343('0x1a'),this[_0x5343('0x1b')][_0x5343('0x17')](this));ami['on'](_0x5343('0x1c'),this[_0x5343('0x1d')][_0x5343('0x17')](this));ami['on'](_0x5343('0x1e'),this[_0x5343('0x1f')]['bind'](this));ami['on'](_0x5343('0x20'),this[_0x5343('0x21')][_0x5343('0x17')](this));ami['on']('attendedtransfer',this[_0x5343('0x22')][_0x5343('0x17')](this));ami['on'](_0x5343('0x23'),this[_0x5343('0x24')][_0x5343('0x17')](this));this[_0x5343('0x25')](this[_0x5343('0x11')]);}function emit(_0x40ba38,_0x35d41d,_0x4796ae){io['to'](_0x40ba38)[_0x5343('0x26')](_0x35d41d,_0x4796ae);}function emitCampaignPreview(_0x3da777){if(_0x3da777[_0x5343('0x27')]===_0x5343('0x28')){var _0xd95a5b={'id':_0x3da777['id'],'name':_0x3da777['name'],'strategy':_0x3da777[_0x5343('0x29')],'answered':_0x3da777[_0x5343('0x2a')],'available':_0x3da777[_0x5343('0x2b')],'loggedIn':_0x3da777[_0x5343('0x2c')],'pTalking':_0x3da777[_0x5343('0x2d')],'sumBillable':_0x3da777['sumBillable'],'sumDuration':_0x3da777[_0x5343('0x2e')],'sumHoldTime':_0x3da777[_0x5343('0x2f')]||0x0,'talking':_0x3da777['talking'],'total':_0x3da777[_0x5343('0x30')],'type':_0x3da777[_0x5343('0x27')],'unmanaged':_0x3da777[_0x5343('0x31')],'abandoned':_0x3da777['abandoned'],'waiting':_0x3da777['waiting'],'loggedInDb':_0x3da777[_0x5343('0x32')],'dialActive':_0x3da777['dialActive'],'dialMethod':_0x3da777[_0x5343('0x33')],'dialOriginateCallerIdName':_0x3da777['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x3da777[_0x5343('0x34')],'dialOriginateTimeout':_0x3da777['dialOriginateTimeout'],'dialPrefix':_0x3da777['dialPrefix'],'outboundAnswerAgiCallsDay':_0x3da777[_0x5343('0x35')],'outboundAnswerCallsDay':_0x3da777[_0x5343('0x36')],'outboundBlacklistCallsDay':_0x3da777['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x3da777['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x3da777[_0x5343('0x37')],'outboundDropCallsDayACS':_0x3da777['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x3da777[_0x5343('0x38')],'outboundDropCallsDayTimeout':_0x3da777['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x3da777['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x3da777[_0x5343('0x39')],'outboundOriginateFailureCallsDay':_0x3da777['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x3da777['outboundReCallsDay'],'outboundRejectCallsDay':_0x3da777[_0x5343('0x3a')],'outboundUnknownCallsDay':_0x3da777[_0x5343('0x3b')],'outboundAbandonedCallsDay':_0x3da777[_0x5343('0x3c')],'predictiveIntervalAnsweredCalls':_0x3da777[_0x5343('0x3d')],'predictiveIntervalAvgHoldtime':_0x3da777['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x3da777['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x3da777[_0x5343('0x3e')],'predictiveIntervalDroppedCallsTimeout':_0x3da777[_0x5343('0x3f')],'predictiveIntervalErlangCalls':_0x3da777[_0x5343('0x40')],'predictiveIntervalErlangCallsDroppedCalls':_0x3da777[_0x5343('0x41')],'predictiveIntervalHitRate':_0x3da777[_0x5343('0x42')],'predictiveIntervalMultiplicativeFactor':_0x3da777[_0x5343('0x43')],'predictiveIntervalPauses':_0x3da777[_0x5343('0x44')],'predictiveIntervalAvailable':_0x3da777[_0x5343('0x45')],'predictiveIntervalTotalCalls':_0x3da777[_0x5343('0x46')],'message':_0x3da777[_0x5343('0x47')],'originated':_0x3da777[_0x5343('0x48')],'erlangCalls':_0x3da777[_0x5343('0x49')],'erlangCallToSecond':_0x3da777['erlangCallToSecond'],'erlangAbandonmentRate':_0x3da777['erlangAbandonmentRate'],'erlangBusyFactor':_0x3da777[_0x5343('0x4a')],'startPredictive':_0x3da777[_0x5343('0x4b')],'startProgressive':_0x3da777['startProgressive']};if(_0x3da777[_0x5343('0x4c')]){_0xd95a5b['Trunk']={'id':_0x3da777[_0x5343('0x4c')]['id'],'name':_0x3da777[_0x5343('0x4c')][_0x5343('0x4d')],'active':_0x3da777[_0x5343('0x4c')]['active'],'callerid':_0x3da777['Trunk'][_0x5343('0x4e')]};}if(_0x3da777['Interval']){_0xd95a5b[_0x5343('0x4f')]={'id':_0x3da777[_0x5343('0x4f')]['id'],'name':_0x3da777['Interval'][_0x5343('0x4d')]};}var _0x504af6=md5(JSON['stringify'](_0xd95a5b));if(_0x3da777[_0x5343('0x5')]!==_0x504af6){_0x3da777[_0x5343('0x5')]=_0x504af6;emit(util[_0x5343('0x50')](_0x5343('0x51'),_0xd95a5b['name']),'voice_queue:save',_0xd95a5b);}}}function emitVoiceQueueChannelRemove(_0x5a0663){logger['info'](_0x5343('0x52'),JSON[_0x5343('0x53')](_0x5a0663));emit(util[_0x5343('0x50')](_0x5343('0x51'),_0x5a0663[_0x5343('0x4d')]),_0x5343('0x54'),_0x5a0663);io[_0x5343('0x26')]('voice_queue_presence:remove',_0x5a0663);}function notSendMessagesQueue(_0x42c8a5){if(_0x42c8a5['sendMessageOneNotActive']){if(_0x42c8a5[_0x5343('0x48')]===0x0&&_0x42c8a5[_0x5343('0x2d')]===0x0){_0x42c8a5[_0x5343('0x55')]=![];_0x42c8a5[_0x5343('0x2b')]=0x0;_0x42c8a5[_0x5343('0x56')]=0x0;_0x42c8a5[_0x5343('0x47')]=_0x5343('0x57');ut['logger'](_0x5343('0x58'),_0x42c8a5['name']+_0x5343('0x59'));}else{_0x42c8a5[_0x5343('0x47')]=_0x5343('0x5a');ut[_0x5343('0x5b')](_0x5343('0x58'),_0x42c8a5[_0x5343('0x4d')]+_0x5343('0x5c'));}emitCampaignPreview(_0x42c8a5);}}Preview['prototype'][_0x5343('0x25')]=function(){var _0x3d9066=this;setInterval(function(){_0x3d9066['syncCampaigns']();},0x7cf);};Preview[_0x5343('0x5d')][_0x5343('0x5e')]=function(){var _0x4c576d=this['campaignsPreview'];this[_0x5343('0x15')]+=0x1;for(var _0x2749ff in _0x4c576d){if(_0x4c576d[_0x5343('0x5f')](_0x2749ff)&&(_0x4c576d[_0x2749ff]['dialMethod']===_0x5343('0x60')||_0x4c576d[_0x2749ff][_0x5343('0x33')]===_0x5343('0x61'))&&_0x4c576d[_0x2749ff][_0x5343('0x27')]===_0x5343('0x28')){if(this[_0x5343('0x15')]>0x7){this[_0x5343('0x15')]=0x0;this['clearZombieChannels']();}}if(_0x4c576d[_0x5343('0x5f')](_0x2749ff)&&_0x4c576d[_0x2749ff][_0x5343('0x33')]===_0x5343('0x60')&&_0x4c576d[_0x2749ff][_0x5343('0x27')]===_0x5343('0x28')){if(_0x4c576d[_0x2749ff][_0x5343('0x62')]){this[_0x5343('0x63')](_0x4c576d[_0x2749ff]);if(_0x4c576d[_0x2749ff][_0x5343('0x64')])this[_0x5343('0x65')](_0x4c576d[_0x2749ff]);}else{notSendMessagesQueue(_0x4c576d[_0x2749ff]);}}}};Preview[_0x5343('0x5d')][_0x5343('0x66')]=function(_0x15cca4){var _0x9f3fb7=this;this[_0x5343('0x10')][_0x5343('0xe')](function(){if(!_['isNil'](_0x9f3fb7[_0x5343('0x13')][_0x15cca4])){loggerAction[_0x5343('0x67')]('[clearZombieChannels][talking]',_0x15cca4,_0x5343('0x68'),_0x9f3fb7[_0x5343('0x13')][_0x15cca4][_0x5343('0x69')],_0x5343('0x6a'),JSON[_0x5343('0x53')](_0x9f3fb7['campaignsPreview'][_0x9f3fb7[_0x5343('0x13')][_0x15cca4]['queue']]['originated']),_0x5343('0x6b'),JSON[_0x5343('0x53')](_0x9f3fb7[_0x5343('0x11')][_0x9f3fb7[_0x5343('0x13')][_0x15cca4]['queue']][_0x5343('0x2d')]),JSON[_0x5343('0x53')](_0x9f3fb7[_0x5343('0x13')][_0x15cca4][_0x5343('0x6c')]),JSON[_0x5343('0x53')](_[_0x5343('0x6d')](_0x9f3fb7[_0x5343('0x13')][_0x15cca4],[_0x5343('0x6e'),_0x5343('0x6f'),_0x5343('0x70'),'ListId'])));return ami[_0x5343('0x71')]({'action':_0x5343('0x72'),'channel':_0x9f3fb7[_0x5343('0x13')][_0x15cca4][_0x5343('0x73')]})[_0x5343('0x74')](function(_0x1e1d24){if(_0x1e1d24[_0x5343('0x47')]===_0x5343('0x75')){setTimeout(function(){if(_0x9f3fb7[_0x5343('0x13')][_0x15cca4]){ut[_0x5343('0x76')](_0x9f3fb7['campaignsPreview'][_0x9f3fb7[_0x5343('0x13')][_0x15cca4]['queue']],'[clearZombieChannel]');if(_0x9f3fb7[_0x5343('0x13')][_0x15cca4][_0x5343('0x6c')]===!![]){ut[_0x5343('0x77')](_0x9f3fb7[_0x5343('0x11')][_0x9f3fb7[_0x5343('0x13')][_0x15cca4]['queue']],_0x5343('0x78'));ut['loggerError'](_0x5343('0x79')+_0x15cca4,_0x9f3fb7['actions'][_0x15cca4][_0x5343('0x69')]);}ut['loggerError'](_0x5343('0x7a')+_0x15cca4,_0x9f3fb7[_0x5343('0x13')][_0x15cca4][_0x5343('0x69')]);delete _0x9f3fb7[_0x5343('0x13')][_0x15cca4];}},0x2328);}});}});};Preview[_0x5343('0x5d')]['clearZombieChannels']=function(){var _0x45bec6=this;loggerAction[_0x5343('0x67')](_0x5343('0x7b'),_[_0x5343('0x7c')](this[_0x5343('0x13')]));for(var _0x580f08 in this['actions']){if(_0x45bec6[_0x5343('0x13')]['hasOwnProperty'](_0x580f08)){_0x45bec6[_0x5343('0x66')](_0x580f08);}}};Preview[_0x5343('0x5d')][_0x5343('0x65')]=function(_0x21706d){var _0x2589ae=this;rpcDb[_0x5343('0x7d')](_0x21706d['id'],ut[_0x5343('0x7e')](this['agents']))[_0x5343('0x7f')](function(_0x34947e){if(!_['isNil'](_0x34947e)){for(var _0x28eb06=0x0;_0x28eb06<_0x34947e['length'];_0x28eb06+=0x1){if(ut[_0x5343('0x80')](_0x34947e[_0x28eb06]['scheduledat'])<_0x21706d[_0x5343('0x81')]*0x3c){if(_0x34947e[_0x28eb06]['Agent']&&!_0x34947e[_0x28eb06][_0x5343('0x82')][_0x5343('0x83')]){_0x2589ae[_0x5343('0x84')](_0x34947e[_0x28eb06]['id'])[_0x5343('0x7f')](ut[_0x5343('0x85')](_0x5343('0x86')))['catch'](ut[_0x5343('0x85')](_0x5343('0x86')));}else{rpcDb[_0x5343('0x87')](_0x34947e[_0x28eb06]['id']);}}else{var _0x201f20=new Action(_0x34947e[_0x28eb06],_0x21706d);_0x201f20['starttime']=moment()[_0x5343('0x50')](_0x5343('0x88'));_0x21706d['outboundReCallsDay']+=0x1;ut[_0x5343('0x89')](_0x201f20,0x17,_0x5343('0x8a'));if(_0x21706d[_0x5343('0x8b')]){rpcDb['rescheduleContactInQueue'](ut[_0x5343('0x8c')](_0x34947e[_0x28eb06]));rpcDb[_0x5343('0x8d')](_0x201f20,_0x5343('0x8e'));}else{ut[_0x5343('0x89')](_0x201f20,0x16,'RecallFailedTimeout');rpcDb[_0x5343('0x8d')](_0x201f20,_0x5343('0x8f'));rpcDb[_0x5343('0x90')](_0x201f20,_0x5343('0x8f'));}}}}})[_0x5343('0x74')](ut['logger2']('[getContactRecallMe]'));};Preview[_0x5343('0x5d')]['setMessage']=function(_0x4c3c93){_0x4c3c93[_0x5343('0x55')]=!![];if(ut[_0x5343('0x91')](_0x4c3c93[_0x5343('0x2c')])){_0x4c3c93['message']='AGENTS_NOT_LOGGED';}else if(!ut['isActive'](_0x4c3c93[_0x5343('0x62')])){_0x4c3c93[_0x5343('0x47')]=_0x5343('0x57');}else if(!this[_0x5343('0x92')](_0x4c3c93[_0x5343('0x4c')])){if(!this[_0x5343('0x92')](_0x4c3c93[_0x5343('0x93')])){_0x4c3c93[_0x5343('0x47')]='TRUNK_IS_NOT_REACHABLE';}else{_0x4c3c93['message']='ACTIVE';}}else{_0x4c3c93[_0x5343('0x47')]=_0x5343('0x94');}emitCampaignPreview(_0x4c3c93);};Preview['prototype'][_0x5343('0x95')]=function(_0x5bd753,_0x27e4ac,_0x1046e5){var _0x34c3ab=this;var _0x3753e3=this[_0x5343('0x13')][_0x27e4ac];var _0x52db16=this['campaignsPreview'][_0x3753e3['queue']];var _0x21fe62;if(_0x52db16){switch(_0x1046e5){case'1':_0x52db16[_0x5343('0x39')]+=0x1;_0x3753e3[_0x5343('0x96')]+=0x1;_0x3753e3[_0x5343('0x97')]=ut[_0x5343('0x98')](_0x3753e3);ut['logCustomer'](_0x3753e3,0x0,_0x5343('0x99'));ami['emit']('custom:agentnosuchnumber',ut[_0x5343('0x9a')](_0x3753e3,_0x5343('0x9b')));rpcDb[_0x5343('0x8d')](_0x3753e3,_0x5343('0x9c'));if(ut[_0x5343('0x98')](_0x3753e3)>=_0x52db16[_0x5343('0x9d')]){_0x21fe62=ut[_0x5343('0x9e')](_0x3753e3,0xf,_0x5343('0x9f'));rpcDb['createCustomerFinal'](_0x21fe62,_0x5343('0xa0'));}else{if(_0x3753e3['countnosuchnumberretry']>=_0x52db16[_0x5343('0xa1')]){rpcDb[_0x5343('0x90')](_0x3753e3,_0x5343('0xa0'));}else{rpcDb[_0x5343('0xa2')](ut[_0x5343('0xa3')](_0x3753e3,_0x5343('0x96'),_0x52db16['dialNoSuchNumberRetryFrequency']),_0x3753e3['unlockAgent'],_0x3753e3[_0x5343('0xa4')]);}}delete this['actions'][_0x5bd753['linkedid']];break;case'ANSWER':var _0x47ad2f=moment()[_0x5343('0x50')](_0x5343('0x88'));_0x3753e3[_0x5343('0xa5')]=_0x47ad2f;_0x3753e3[_0x5343('0xa6')]=_0x47ad2f;_0x3753e3[_0x5343('0x6c')]=!![];_0x52db16[_0x5343('0x2d')]+=0x1;logger[_0x5343('0x67')](_0x5343('0xa7'),_0x3753e3[_0x5343('0xa8')],_0x5343('0xa9'),_0x52db16[_0x5343('0x4d')],'pTalking:\x20',_0x52db16[_0x5343('0x2d')]);ami[_0x5343('0x26')](_0x5343('0xaa'),ut['buildObj'](_0x3753e3,_0x5343('0xab'),this['campaignsPreview'][_0x3753e3[_0x5343('0x69')]]));if(_0x52db16[_0x5343('0xac')]){ami['emit']('custom:agentConnectPreview',ut[_0x5343('0xad')](_0x3753e3));}break;case'16':ami['emit']('custom:agentcomplete',ut['buildObj'](_0x3753e3,_0x5343('0xae'),this[_0x5343('0x11')][_0x3753e3[_0x5343('0x69')]]));emitVoiceQueueChannelRemove(ut[_0x5343('0x9a')](_0x3753e3,_0x5343('0xae')));_0x52db16['outboundAnswerCallsDay']+=0x1;_0x52db16['total']+=0x1;_0x52db16[_0x5343('0x2a')]+=0x1;ut[_0x5343('0x77')](_0x52db16,_0x5343('0xaf'));_0x3753e3[_0x5343('0x97')]=ut[_0x5343('0x98')](_0x3753e3);ut[_0x5343('0x89')](_0x3753e3,0x4,_0x5343('0xb0'));rpcDb[_0x5343('0x8d')](_0x3753e3,_0x5343('0xb1'));rpcDb[_0x5343('0x90')](_0x3753e3,'[callProgressDetectingCustomer][logAnswerGlobal]');rpcDb[_0x5343('0xb2')](_0x3753e3);_0x52db16[_0x5343('0x2e')]+=_0x3753e3[_0x5343('0xb3')];_0x52db16[_0x5343('0xb4')]+=_0x3753e3[_0x5343('0xb3')];logger[_0x5343('0x67')](_0x5343('0xb5'),_0x3753e3[_0x5343('0xa8')],_0x5343('0xa9'),_0x52db16[_0x5343('0x4d')],_0x5343('0x6b'),_0x52db16[_0x5343('0x2d')]);delete this['actions'][_0x5bd753[_0x5343('0xb6')]];break;case _0x5343('0xb7'):_0x52db16[_0x5343('0xb8')]+=0x1;_0x3753e3['countbusyretry']+=0x1;_0x3753e3['countglobal']=ut[_0x5343('0x98')](_0x3753e3);ut['logCustomer'](_0x3753e3,0x5,_0x5343('0xb9'));ami[_0x5343('0x26')](_0x5343('0xba'),ut['buildObj'](_0x3753e3,_0x5343('0xbb')));rpcDb['createCustomerHistory'](_0x3753e3,_0x5343('0xbc'));if(ut[_0x5343('0x98')](_0x3753e3)>=_0x52db16[_0x5343('0x9d')]){_0x21fe62=ut['cloneAction'](_0x3753e3,0xf,_0x5343('0x9f'));rpcDb['createCustomerFinal'](_0x21fe62,'[callProgressDetectingCustomer][logBusyGlobal]');}else{if(_0x3753e3[_0x5343('0xbd')]>=_0x52db16[_0x5343('0xbe')]){rpcDb['createCustomerFinal'](_0x3753e3,_0x5343('0xbc'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x3753e3,'countbusyretry',_0x52db16[_0x5343('0xbf')]),_0x3753e3[_0x5343('0xc0')],_0x3753e3[_0x5343('0xa4')]);}}break;case _0x5343('0xc1'):_0x52db16[_0x5343('0xc2')]+=0x1;_0x3753e3[_0x5343('0xc3')]+=0x1;_0x3753e3[_0x5343('0x97')]=ut[_0x5343('0x98')](_0x3753e3);ut[_0x5343('0x89')](_0x3753e3,0x3,_0x5343('0xc4'));ami[_0x5343('0x26')](_0x5343('0xc5'),ut[_0x5343('0x9a')](_0x3753e3,'noanswer'));rpcDb['createCustomerHistory'](_0x3753e3,_0x5343('0xc6'));if(ut[_0x5343('0x98')](_0x3753e3)>=_0x52db16[_0x5343('0x9d')]){_0x21fe62=ut[_0x5343('0x9e')](_0x3753e3,0xf,_0x5343('0x9f'));rpcDb[_0x5343('0x90')](_0x21fe62,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x3753e3[_0x5343('0xc3')]>=_0x52db16['dialNoAnswerMaxRetry']){rpcDb[_0x5343('0x90')](_0x3753e3,_0x5343('0xc6'));}else{rpcDb[_0x5343('0xa2')](ut[_0x5343('0xa3')](_0x3753e3,_0x5343('0xc3'),_0x52db16['dialNoAnswerRetryFrequency']),_0x3753e3[_0x5343('0xc0')],_0x3753e3[_0x5343('0xa4')]);}}break;case _0x5343('0xc7'):_0x52db16['outboundCongestionCallsDay']+=0x1;_0x3753e3['countcongestionretry']+=0x1;_0x3753e3[_0x5343('0x97')]=ut[_0x5343('0x98')](_0x3753e3);ut[_0x5343('0x89')](_0x3753e3,0x8,_0x5343('0xc8'));ami[_0x5343('0x26')](_0x5343('0xc9'),ut[_0x5343('0x9a')](_0x3753e3,_0x5343('0xca')));rpcDb['createCustomerHistory'](_0x3753e3,_0x5343('0xcb'));if(ut[_0x5343('0x98')](_0x3753e3)>=_0x52db16['dialGlobalMaxRetry']){_0x21fe62=ut['cloneAction'](_0x3753e3,0xf,_0x5343('0x9f'));rpcDb[_0x5343('0x90')](_0x21fe62,_0x5343('0xcc'));}else{if(_0x3753e3[_0x5343('0xcd')]>=_0x52db16[_0x5343('0xce')]){rpcDb['createCustomerFinal'](_0x3753e3,_0x5343('0xcb'));}else{rpcDb[_0x5343('0xa2')](ut[_0x5343('0xa3')](_0x3753e3,_0x5343('0xcd'),_0x52db16[_0x5343('0xbf')]),_0x3753e3[_0x5343('0xc0')],_0x3753e3[_0x5343('0xa4')]);}}break;case _0x5343('0xcf'):_0x52db16[_0x5343('0x3a')]+=0x1;_0x3753e3['countagentrejectretry']+=0x1;_0x3753e3['countglobal']=ut['totalGlobal'](_0x3753e3);ut[_0x5343('0x89')](_0x3753e3,0x14,_0x5343('0xd0'));ami[_0x5343('0x26')](_0x5343('0xd1'),ut[_0x5343('0x9a')](_0x3753e3,_0x5343('0xd2')));rpcDb[_0x5343('0x8d')](_0x3753e3,_0x5343('0xd3'));if(ut[_0x5343('0x98')](_0x3753e3)>=_0x52db16['dialGlobalMaxRetry']){_0x21fe62=ut['cloneAction'](_0x3753e3,0x14,_0x5343('0xd0'));rpcDb[_0x5343('0x90')](_0x21fe62,'[callProgressDetectingCustomer][logAgentReject]');}else{if(_0x3753e3[_0x5343('0xd4')]>=_0x52db16['dialAgentRejectMaxRetry']){rpcDb[_0x5343('0x90')](_0x3753e3,_0x5343('0xd5'));}else{rpcDb[_0x5343('0xa2')](ut['scheduledAt'](_0x3753e3,_0x5343('0xd4'),_0x52db16['dialAgentRejectRetryFrequency']),_0x3753e3[_0x5343('0xc0')],_0x3753e3[_0x5343('0xa4')]);}}break;case _0x5343('0xd6'):_0x52db16[_0x5343('0x3c')]+=0x1;_0x3753e3[_0x5343('0xd7')]+=0x1;_0x3753e3['countglobal']=ut['totalGlobal'](_0x3753e3);ut['logCustomer'](_0x3753e3,0xb,_0x5343('0xd8'));rpcDb['createCustomerHistory'](_0x3753e3,'[callProgressDetectingCustomer][logAbandoned]');if(ut[_0x5343('0x98')](_0x3753e3)>=_0x52db16[_0x5343('0x9d')]){_0x21fe62=ut['cloneAction'](_0x3753e3,0xf,'Global');rpcDb[_0x5343('0x90')](_0x21fe62,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0x3753e3[_0x5343('0xd9')]>=_0x52db16['dialAbandonedMaxRety']){rpcDb[_0x5343('0x90')](_0x3753e3,_0x5343('0xda'));}else{rpcDb[_0x5343('0xa2')](ut[_0x5343('0xa3')](_0x3753e3,_0x5343('0xd7'),_0x52db16[_0x5343('0xdb')]),_0x3753e3['unlockAgent'],_0x3753e3[_0x5343('0xa4')]);}}break;case'18':_0x52db16[_0x5343('0x3b')]+=0x1;_0x3753e3[_0x5343('0xdc')]+=0x1;_0x3753e3[_0x5343('0x97')]=ut[_0x5343('0x98')](_0x3753e3);ut[_0x5343('0x89')](_0x3753e3,0x12,_0x5bd753[_0x5343('0xdd')]||_0x5bd753[_0x5343('0xde')]);ami['emit'](_0x5343('0xdf'),ut[_0x5343('0x9a')](_0x3753e3,_0x5343('0xe0')));rpcDb[_0x5343('0x8d')](_0x3753e3,_0x5343('0xe1'));if(ut['totalGlobal'](_0x3753e3)>=_0x52db16[_0x5343('0x9d')]){_0x21fe62=ut[_0x5343('0x9e')](_0x3753e3,0xf,_0x5343('0x9f'));rpcDb[_0x5343('0x90')](_0x21fe62,'[callProgressDetectingCustomer][hangupInAMD]');}else{rpcDb[_0x5343('0x90')](_0x3753e3,_0x5343('0xe1'));}delete this[_0x5343('0x13')][_0x5bd753[_0x5343('0xb6')]];break;case'19':_0x52db16[_0x5343('0x3b')]+=0x1;_0x3753e3['countglobal']=ut['totalGlobal'](_0x3753e3);ut[_0x5343('0x89')](_0x3753e3,0x13,_0x5bd753[_0x5343('0xdd')]||_0x5bd753[_0x5343('0xde')]);ami[_0x5343('0x26')](_0x5343('0xdf'),ut['buildObj'](_0x3753e3,_0x5343('0xe0')));rpcDb[_0x5343('0x8d')](_0x3753e3,_0x5343('0xe2'));if(ut[_0x5343('0x98')](_0x3753e3)>=_0x52db16[_0x5343('0x9d')]){_0x21fe62=ut[_0x5343('0x9e')](_0x3753e3,0xf,_0x5343('0x9f'));rpcDb[_0x5343('0x90')](_0x21fe62,'[callProgressDetectingCustomer][machine]');}else{rpcDb['createCustomerFinal'](_0x3753e3,'[callProgressDetectingCustomer][machine]');}delete this[_0x5343('0x13')][_0x5bd753[_0x5343('0xb6')]];break;default:if(_0x3753e3['dialAnswer']){ut[_0x5343('0x77')](_0x52db16,_0x5343('0xe3'));ut[_0x5343('0xe4')](_0x5343('0xe5')+_0x52db16[_0x5343('0x4d')],_0x5bd753);}_0x52db16['outboundUnknownCallsDay']+=0x1;_0x3753e3[_0x5343('0x97')]=ut[_0x5343('0x98')](_0x3753e3);ut[_0x5343('0x89')](_0x3753e3,0xc,_0x5bd753[_0x5343('0xdd')]||_0x5bd753[_0x5343('0xde')]);rpcDb['createCustomerHistory'](_0x3753e3,_0x5343('0xe6'));if(ut[_0x5343('0x98')](_0x3753e3)>=_0x52db16[_0x5343('0x9d')]){_0x21fe62=ut[_0x5343('0x9e')](_0x3753e3,0xf,_0x5343('0x9f'));rpcDb[_0x5343('0x90')](_0x21fe62,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb['createCustomerFinal'](_0x3753e3,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this['actions'][_0x5bd753[_0x5343('0xb6')]];}if(!(_0x3753e3[_0x5343('0x6c')]&&_0x1046e5==='16')){ut['updateOriginated'](_0x52db16,_0x5343('0xe7'));logger[_0x5343('0x67')](_0x5343('0xe8'),_0x3753e3['uniqueid'],_0x5343('0xa9'),_0x52db16[_0x5343('0x4d')],_0x5343('0x6a'),_0x52db16[_0x5343('0x48')]);}if(_0x1046e5!=='ANSWER'){delete this[_0x5343('0x13')][_0x5bd753[_0x5343('0xb6')]];delete this['actions'][_0x5bd753[_0x5343('0xe9')]];}}};Preview[_0x5343('0x5d')][_0x5343('0xea')]=function(_0x4a86ba,_0x2efd7c,_0x131a98){if(_[_0x5343('0xeb')](_0x2efd7c)&&_0x5343('0xec')!==typeof _0x2efd7c){return;}if(_[_0x5343('0xeb')](_0x131a98)&&_0x5343('0xec')!==typeof _0x131a98){return;}switch(_0x131a98['reason']){case'0':ut[_0x5343('0xed')](_0x4a86ba,0x0,_0x5343('0x99'));rpcDb[_0x5343('0xee')](_0x4a86ba,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut[_0x5343('0xed')](_0x4a86ba,0x3,_0x5343('0xc4'));rpcDb[_0x5343('0xee')](_0x4a86ba,_0x5343('0xef'));break;case'5':ut[_0x5343('0xed')](_0x4a86ba,0x5,_0x5343('0xb9'));rpcDb[_0x5343('0xee')](_0x4a86ba,_0x5343('0xf0'));break;case'8':ut[_0x5343('0xed')](_0x4a86ba,0x8,_0x5343('0xc8'));rpcDb[_0x5343('0xee')](_0x4a86ba,_0x5343('0xf1'));break;case'22':ut[_0x5343('0xed')](_0x4a86ba,0x16,'AnswerAGI');rpcDb['createAgentHistory'](_0x4a86ba,_0x5343('0xf2'));break;default:ut[_0x5343('0xed')](_0x4a86ba,0xc,_0x131a98[_0x5343('0xf3')]);rpcDb['createAgentHistory'](_0x4a86ba,_0x5343('0xf1'));}ut[_0x5343('0x76')](_0x2efd7c,_0x5343('0xf4'));logger[_0x5343('0x67')]('[originated][decrement][callProgressDetectingAgent]',_0x4a86ba[_0x5343('0xa8')],_0x5343('0xa9'),_0x2efd7c[_0x5343('0x4d')],_0x5343('0x6a'),_0x2efd7c[_0x5343('0x48')]);delete this['actions'][_0x4a86ba[_0x5343('0xa8')]];};Preview[_0x5343('0x5d')]['checkInBlack']=function(_0x5c2fda,_0x3428b,_0x1f0716,_0x4f79d8,_0x545425){var _0x100387=this;return new BPromise(function(_0x3c40ea,_0x401cc2){if(_[_0x5343('0xf5')](_0x3428b)||_[_0x5343('0xf5')](_0x3428b[_0x5343('0xf6')])||_[_0x5343('0xf5')](_0x3428b[_0x5343('0xf6')][_0x5343('0xf7')])||_[_0x5343('0xf5')](_0x3428b[_0x5343('0x70')])){_0x401cc2(ut['message']('Contact\x20is\x20undefined',_0x4f79d8,_0x545425));return;}var _0x4c77d2=uuid['v4']();var _0x216bf4=_0x100387[_0x5343('0x11')][_0x3428b[_0x5343('0x68')][_0x5343('0x4d')]];var _0x3f69c9=_0x1f0716?_0x100387[_0x5343('0x14')][_0x1f0716]['id']:undefined;_0x100387['actions'][_0x4c77d2]=new Action(_0x3428b,_0x216bf4,_0x4c77d2,_0x1f0716,_0x3f69c9);var _0x581344=_0x100387[_0x5343('0x13')][_0x4c77d2];_0x581344[_0x5343('0xc0')]=_0x4f79d8;_0x581344[_0x5343('0xa4')]=_0x545425;_0x581344['lookAgent']=_0x1f0716;if(_[_0x5343('0xf8')](_0x5c2fda)){_0x100387[_0x5343('0xf9')](_0x581344,_0x216bf4,_0x3428b,_0x1f0716)[_0x5343('0x7f')](function(_0x304f0b){logger[_0x5343('0x67')](_0x5343('0xfa'),_0x5343('0xfb')+_0x581344[_0x5343('0x69')]+_0x5343('0xfc')+_0x581344[_0x5343('0xfd')],JSON['stringify'](_0x304f0b));ami[_0x5343('0x26')](_0x5343('0xfe'),ut['buildObj'](_0x581344,_0x5343('0xff'),_0x100387[_0x5343('0x11')][_0x581344[_0x5343('0x69')]]));_0x3c40ea(ut['message'](_0x5343('0x100')));})['catch'](function(_0x17b51f){ut[_0x5343('0x5b')](_0x5343('0x101'),_0x17b51f);_0x401cc2(ut['message'](_0x5343('0x102'),_0x4f79d8,_0x545425));});}else{_0x216bf4['outboundBlacklistCallsDay']+=0x1;ut[_0x5343('0x103')](_0x581344);rpcDb[_0x5343('0x104')](_0x581344,_0x5343('0x105'));delete _0x100387[_0x5343('0x13')][_0x4c77d2];_0x401cc2(ut[_0x5343('0x47')]('Contact\x20in\x20black\x20List',_0x4f79d8,_0x545425));}});};Preview[_0x5343('0x5d')][_0x5343('0x92')]=function(_0x167359){return!_[_0x5343('0xf5')](_0x167359)&&!_['isNil'](_0x167359[_0x5343('0x4d')])&&!_[_0x5343('0xf5')](_0x167359[_0x5343('0x106')])&&_0x167359['active']&&!_['isNil'](this[_0x5343('0x12')][util[_0x5343('0x50')](_0x5343('0x107'),_0x167359[_0x5343('0x4d')])])&&!_[_0x5343('0xf5')](this[_0x5343('0x12')][util[_0x5343('0x50')]('SIP/%s',_0x167359[_0x5343('0x4d')])]['status'])&&(this[_0x5343('0x12')][util['format'](_0x5343('0x107'),_0x167359[_0x5343('0x4d')])][_0x5343('0x72')]==='reachable'||this[_0x5343('0x12')][util[_0x5343('0x50')](_0x5343('0x107'),_0x167359[_0x5343('0x4d')])][_0x5343('0x72')]===_0x5343('0x108'));};Preview[_0x5343('0x5d')][_0x5343('0x84')]=function(_0x33f9fc,_0x1b5e7b){var _0x28d6c7=this;return new BPromise(function(_0x445f52,_0x176697){_0x28d6c7[_0x5343('0x109')](_0x33f9fc,_0x1b5e7b)[_0x5343('0x7f')](function(_0xc08c04){_0x445f52(_[_0x5343('0x6d')](_0xc08c04,[_0x5343('0x47')]));})[_0x5343('0x74')](function(_0x26afd4){if(_0x26afd4['unlock']){rpcDb[_0x5343('0x10a')](_0x33f9fc);}if(_0x26afd4[_0x5343('0x106')]){rpcDb[_0x5343('0x87')](_0x33f9fc);}_0x176697(_[_0x5343('0x6d')](_0x26afd4,[_0x5343('0x47')]));});});};Preview[_0x5343('0x5d')][_0x5343('0x109')]=function(_0x13e3c2,_0x11d303){var _0x34b746=this;return new BPromise(function(_0x4bc2ff,_0x4a757c){var _0x332fd8,_0x48df63;rpcDb[_0x5343('0x10b')](_0x13e3c2)[_0x5343('0x7f')](function(_0x252b9b){if(!_[_0x5343('0xf5')](_0x252b9b[0x0])){_0x48df63=_0x252b9b[0x0]['recallme']?![]:!![];_0x332fd8=_0x252b9b[0x0]['recallme']?!![]:![];_0x332fd8=_0x11d303?!![]:_0x332fd8;}var _0x54e9c9=_0x34b746['validateContact'](_0x252b9b);if(_0x54e9c9[_0x5343('0x10c')]){rpcDb[_0x5343('0x10d')](_[_0x5343('0x6d')](_0x252b9b[0x0],[_0x5343('0x70'),_0x5343('0x10e')]))[_0x5343('0x7f')](function(_0x42f201){_0x34b746[_0x5343('0x10f')](_0x42f201,_0x252b9b[0x0],_0x11d303,_0x48df63,_0x332fd8)[_0x5343('0x7f')](function(_0x24c6d5){_0x4bc2ff(_0x24c6d5);})[_0x5343('0x74')](function(_0x4104e7){_0x4a757c(_0x4104e7);});})[_0x5343('0x74')](function(_0x1a7554){ut[_0x5343('0x5b')]('[Preview][checkIsBlackList]',_0x1a7554);_0x4a757c(ut[_0x5343('0x47')](_0x5343('0x110'),_0x48df63,_0x332fd8));});}else{_0x4a757c(ut[_0x5343('0x47')](_0x54e9c9[_0x5343('0x47')],_0x48df63,_0x332fd8));}})[_0x5343('0x74')](function(_0x43f1dc){ut[_0x5343('0x5b')]('[Preview][getContactPreview]',_0x43f1dc);_0x4a757c(ut['message'](_0x5343('0x110'),![],!![]));});});};Preview[_0x5343('0x5d')][_0x5343('0x111')]=function(_0x3b2559){if(_[_0x5343('0xf5')](_0x3b2559)||_[_0x5343('0xf8')](_0x3b2559)||!_[_0x5343('0xf5')](_0x3b2559[0x0][_0x5343('0x82')])&&_[_0x5343('0xf5')](_0x3b2559[0x0][_0x5343('0x82')]['name'])){ut[_0x5343('0x5b')]('[Preview][validateContact][Empty\x20Contact]',_0x3b2559);return{'isValid':![],'message':_0x5343('0x112')};}var _0x24801a=this[_0x5343('0x11')][_0x3b2559[0x0]['Queue'][_0x5343('0x4d')]];_0x24801a[_0x5343('0x47')]='ACTIVE';if(_[_0x5343('0xf5')](_0x24801a)){ut[_0x5343('0x5b')](_0x5343('0x113'),_0x24801a);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this[_0x5343('0x92')](_0x24801a[_0x5343('0x4c')])){ut[_0x5343('0x5b')]('[Preview][validateContact][Trunk\x20not\x20work]',_0x5343('0x114')+_0x24801a['name']+_0x5343('0x115'));if(!this[_0x5343('0x92')](_0x24801a[_0x5343('0x93')])){ut[_0x5343('0x5b')]('[Preview][validateContact][Trunk\x20not\x20work]',_0x24801a['name']+_0x5343('0x116'));return{'isValid':![],'message':_0x5343('0x117')};}}if(!ut['isActive'](_0x24801a['dialActive'])){ut[_0x5343('0x5b')](_0x5343('0x118'),_0x24801a[_0x5343('0x4d')]+'\x20Not\x20Active');return{'isValid':![],'message':_0x5343('0x114')+_0x24801a[_0x5343('0x4d')]+_0x5343('0x119')};}return{'isValid':!![],'message':_0x5343('0x11a')};};Preview[_0x5343('0x5d')]['execCall']=function(_0x43a0f8,_0x28512e,_0x584349,_0x1392a9){var _0x447587=this;return new BPromise(function(_0x2cbc40,_0x1a6b58){var _0x4e34ac=_0x43a0f8[_0x5343('0xa8')];var _0x2017fe=_0x447587[_0x5343('0x92')](_0x28512e[_0x5343('0x4c')])?util['format']('SIP/%s/%s%s',_0x28512e[_0x5343('0x4c')][_0x5343('0x4d')],_['isNil'](_0x28512e[_0x5343('0x11b')])?'':_0x28512e[_0x5343('0x11b')][_0x5343('0x11c')]()||'',_0x28512e[_0x5343('0x11d')]>0x0?_0x584349['Contact'][_0x5343('0xf7')][_0x5343('0x11e')](_0x28512e[_0x5343('0x11d')]):_0x584349['Contact'][_0x5343('0xf7')]):util[_0x5343('0x50')](_0x5343('0x11f'),_['isNil'](_0x28512e[_0x5343('0x93')])?_0x28512e['Trunk'][_0x5343('0x4d')]:_0x28512e[_0x5343('0x93')][_0x5343('0x4d')],_[_0x5343('0xf5')](_0x28512e[_0x5343('0x11b')])?'':_0x28512e[_0x5343('0x11b')]['trim']()||'',_0x28512e[_0x5343('0x11d')]>0x0?_0x584349['Contact'][_0x5343('0xf7')][_0x5343('0x11e')](_0x28512e[_0x5343('0x11d')]):_0x584349[_0x5343('0xf6')][_0x5343('0xf7')]);var _0x20db02=_0x447587[_0x5343('0x92')](_0x28512e['Trunk'])?ut[_0x5343('0x120')](_0x28512e[_0x5343('0x4c')][_0x5343('0x4e')],_0x28512e[_0x5343('0x121')],_0x28512e['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0x5343('0x122')](_0x28512e[_0x5343('0x34')],_0x28512e[_0x5343('0x123')]):_0x28512e['dialOriginateCallerIdNumber']):ut[_0x5343('0x120')](_[_0x5343('0xf5')](_0x28512e[_0x5343('0x93')])?_0x28512e[_0x5343('0x4c')][_0x5343('0x4e')]:_0x28512e[_0x5343('0x93')][_0x5343('0x4e')],_0x28512e['dialOriginateCallerIdName'],_0x28512e[_0x5343('0x123')]>0x0?ut[_0x5343('0x122')](_0x28512e['dialOriginateCallerIdNumber'],_0x28512e['dialRandomLastDigitCallerIdNumber']):_0x28512e[_0x5343('0x34')]);if(_0x20db02){_0x43a0f8['originatecalleridname']=ut[_0x5343('0x124')](_0x20db02);_0x43a0f8['originatecalleridnum']=ut[_0x5343('0x125')](_0x20db02);}var _0x406a7b=ut[_0x5343('0x126')](_0x28512e,_0x584349,_0x2017fe,_0x20db02,_0x4e34ac,_0x43a0f8);_[_0x5343('0x127')](_0x43a0f8,ut['toLowerVariables'](_0x406a7b));_0x43a0f8['starttime']=moment()['format'](_0x5343('0x88'));ami[_0x5343('0x71')](ut[_0x5343('0x128')](_0x43a0f8,_0x28512e,_0x406a7b,_0x43a0f8['activeContact'],_0x1392a9))[_0x5343('0x7f')](function(_0x237eb0){_0x28512e[_0x5343('0x48')]+=0x1;logger[_0x5343('0x67')](_0x5343('0x129'),_0x4e34ac,'\x20Queue',_0x28512e[_0x5343('0x4d')],_0x5343('0x6a'),_0x28512e[_0x5343('0x48')]);_0x2cbc40(_0x237eb0);})[_0x5343('0x74')](function(_0x3e0062){ut[_0x5343('0xed')](_0x43a0f8,0xe,_0x5343('0x12a'));rpcDb['createAgentHistory'](_0x43a0f8,_0x5343('0x12b'));_0x1a6b58(_0x3e0062);});});};Preview['prototype'][_0x5343('0x1f')]=function(_0x13155c){if(this['actions'][_0x13155c[_0x5343('0xb6')]]){this['actions'][_0x13155c[_0x5343('0xb6')]][_0x5343('0x73')]=_0x13155c['channel'];}};Preview[_0x5343('0x5d')]['syncOriginateResponse']=function(_0x18f4e7){var _0x2507d4=this;var _0x1a85a3=this[_0x5343('0x13')][_0x18f4e7[_0x5343('0x12c')]];if(_0x1a85a3){if(_0x1a85a3[_0x5343('0x12d')]&&this[_0x5343('0x14')][_0x1a85a3['lookAgent']]){ut[_0x5343('0x12e')](_0x1a85a3,this['agents'][_0x1a85a3[_0x5343('0x12d')]][_0x5343('0x4d')],this['agents'][_0x1a85a3[_0x5343('0x12d')]]['id']);}var _0x331c64=_[_0x5343('0x12f')](_0x1a85a3);_0x331c64[_0x5343('0xa5')]=moment()[_0x5343('0x50')](_0x5343('0x88'));var _0x132f66=_0x2507d4['campaignsPreview'][_0x1a85a3[_0x5343('0x69')]];if(ut[_0x5343('0x130')](_0x18f4e7[_0x5343('0x131')])){if(_0x1a85a3[_0x5343('0xc0')]){rpcDb[_0x5343('0x10a')](_0x1a85a3['idContact']);}if(_0x1a85a3['activeContact']){rpcDb[_0x5343('0x87')](_0x1a85a3[_0x5343('0xfd')]);}ami[_0x5343('0x26')](_0x5343('0x132'),ut['buildObj'](_0x1a85a3,'rejected',this[_0x5343('0x11')][_0x1a85a3[_0x5343('0x69')]]));this['callProgressDetectingAgent'](_0x331c64,_0x132f66,_0x18f4e7);}else{_0x1a85a3[_0x5343('0x133')]=moment()[_0x5343('0x50')](_0x5343('0x88'));ut[_0x5343('0xed')](_0x331c64,0x4,_0x5343('0xb0'));rpcDb[_0x5343('0xee')](_0x331c64,_0x5343('0x134'));}}};Preview[_0x5343('0x5d')][_0x5343('0x19')]=function(_0x1b05e1){var _0x5deed8=this;var _0x467036=this['actions'][_0x1b05e1[_0x5343('0xb6')]];var _0x544e5f;if(_0x467036){_0x544e5f=this['campaignsPreview'][_0x467036[_0x5343('0x69')]];logger['info']('[syncHangup][talking]',_0x1b05e1[_0x5343('0xb6')],'\x20Queue',_0x544e5f[_0x5343('0x4d')],_0x5343('0x6b'),_0x544e5f[_0x5343('0x2d')]);}if(this[_0x5343('0x13')][_0x1b05e1[_0x5343('0xb6')]]&&_0x1b05e1[_0x5343('0xb6')]!==_0x1b05e1[_0x5343('0xa8')]){if(_0x1b05e1[_0x5343('0x135')]==='16'&&this[_0x5343('0x13')][_0x1b05e1[_0x5343('0xb6')]][_0x5343('0x6c')]){this[_0x5343('0x95')](_0x1b05e1,_0x1b05e1[_0x5343('0xb6')],_0x1b05e1[_0x5343('0x135')]);}else if(this[_0x5343('0x13')][_0x1b05e1['linkedid']][_0x5343('0x6c')]){logger['info'](_0x5343('0x136'),_0x1b05e1[_0x5343('0xb6')],_0x1b05e1[_0x5343('0x135')],_0x5343('0xa9'),_0x544e5f[_0x5343('0x4d')],_0x5343('0x6b'),_0x544e5f[_0x5343('0x2d')]);this['callProgressDetectingCustomer'](_0x1b05e1,_0x1b05e1[_0x5343('0xb6')],_0x1b05e1[_0x5343('0x135')]);}}else if(_0x467036&&_['isNil'](_0x467036['statedesc'])&&_0x544e5f[_0x5343('0x137')]&&_0x1b05e1[_0x5343('0xb6')]===_0x1b05e1['uniqueid']&&_[_0x5343('0xf5')](_0x1b05e1[_0x5343('0xf3')])&&_0x1b05e1['cause']==='16'&&_0x1b05e1[_0x5343('0x138')]==='6'&&_['isUndefined'](_0x467036[_0x5343('0x139')])){if(_0x467036[_0x5343('0xc0')]){rpcDb['unlockContact'](_0x467036[_0x5343('0xfd')]);}if(_0x467036[_0x5343('0xa4')]){rpcDb[_0x5343('0x87')](_0x467036[_0x5343('0xfd')]);}_0x1b05e1[_0x5343('0xf3')]='22';this[_0x5343('0xea')](_0x467036,_0x544e5f,_0x1b05e1);}else if(_0x467036&&_0x467036[_0x5343('0x139')]){if(_0x1b05e1['cause']==='16'&&this[_0x5343('0x13')][_0x1b05e1[_0x5343('0xb6')]][_0x5343('0x6c')]){logger[_0x5343('0x67')](_0x5343('0x13a'),_0x1b05e1[_0x5343('0xb6')],_0x1b05e1[_0x5343('0x135')],'\x20Queue',_0x544e5f[_0x5343('0x4d')],_0x5343('0x6b'),_0x544e5f['pTalking']);this['callProgressDetectingCustomer'](_0x1b05e1,_0x1b05e1[_0x5343('0xb6')],_0x1b05e1[_0x5343('0x135')]);}else if(this[_0x5343('0x13')][_0x1b05e1['linkedid']][_0x5343('0x6c')]){logger[_0x5343('0x67')](_0x5343('0x136'),_0x1b05e1[_0x5343('0xb6')],_0x1b05e1[_0x5343('0x135')],'\x20Queue',_0x544e5f[_0x5343('0x4d')],_0x5343('0x6b'),_0x544e5f['pTalking']);this['callProgressDetectingCustomer'](_0x1b05e1,_0x1b05e1['linkedid'],_0x1b05e1['cause']);}}};Preview[_0x5343('0x5d')]['syncDialEnd']=function(_0x309a07){if(this[_0x5343('0x13')][_0x309a07[_0x5343('0xe9')]]&&_0x309a07[_0x5343('0xe9')]!==_0x309a07[_0x5343('0x13b')]){this['callProgressDetectingCustomer'](_0x309a07,_0x309a07[_0x5343('0xe9')],_0x309a07[_0x5343('0xde')]);}};Preview[_0x5343('0x5d')]['syncHangupRequest']=function(_0x39be18){if(this['actions'][_0x39be18[_0x5343('0xb6')]]&&_0x39be18['linkedid']!==_0x39be18[_0x5343('0xa8')]&&!this[_0x5343('0x13')][_0x39be18['linkedid']]['dialAnswer']){if(_0x39be18[_0x5343('0x135')]==='1'){this[_0x5343('0x95')](_0x39be18,_0x39be18['linkedid'],_0x39be18[_0x5343('0x135')]);}}};Preview['prototype'][_0x5343('0x13c')]=function(_0x1af602,_0x190fa5,_0x31fbdb){if(this[_0x5343('0x13')][_0x1af602]){if(_[_0x5343('0xf5')](this[_0x5343('0x13')][_0x1af602][_0x5343('0x13d')])){this[_0x5343('0x13')][_0x1af602][_0x5343('0x13d')]={};}this[_0x5343('0x13')][_0x1af602][_0x5343('0x13d')][_0x190fa5]=_0x31fbdb;}};Preview[_0x5343('0x5d')][_0x5343('0x21')]=function(_0x28e57f){try{if(!_[_0x5343('0xf5')](_0x28e57f)){if(ut[_0x5343('0x13e')](_[_0x5343('0x13f')](_0x28e57f[_0x5343('0x140')])[0x0])){this[_0x5343('0x13c')](_0x28e57f[_0x5343('0xa8')],_['keys'](_0x28e57f[_0x5343('0x140')])[0x0],_0x28e57f['value']);}}}catch(_0x4c7eb6){logger[_0x5343('0x141')](_0x5343('0x142'),util['inspect'](_0x4c7eb6,{'showHidden':![],'depth':null}));}};Preview[_0x5343('0x5d')]['syncAttendedTransfer']=function(_0x31e79b){if(_0x31e79b){if(this[_0x5343('0x13')][_0x31e79b['transfertargetlinkedid']]){this[_0x5343('0x13')][_0x31e79b[_0x5343('0x143')]][_0x5343('0x139')]=!![];}}};Preview[_0x5343('0x5d')][_0x5343('0x24')]=function(_0x709f34){if(_0x709f34){if(this['actions'][_0x709f34[_0x5343('0x144')]]){this[_0x5343('0x13')][_0x709f34[_0x5343('0x144')]][_0x5343('0x139')]=!![];}}};module[_0x5343('0x145')]=Preview;
\ No newline at end of file
index 0a890e7..5c28915 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd271=['queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','connectedlinename','membername','from-sip','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','COMPLETED','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','rescheduleContact','[rescheduleContactInQueue]\x20','util','preview','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','resolve','then','createHistory','[createHistory]\x20','catch','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','getContactPreview','[getContactPreview]\x20','createCustomerHistory','createCustomerFinal','UserId','countReScheduled','unlockContact','[unlockContact]\x20','[activeContact]\x20','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xd271,0x75));var _0x1d27=function(_0x31dd78,_0x88b239){_0x31dd78=_0x31dd78-0x0;var _0x5da910=_0xd271[_0x31dd78];return _0x5da910;};'use strict';var util=require(_0x1d27('0x0'));var BPromise=require('bluebird');var logger=require('../../../config/logger')(_0x1d27('0x1'));var _=require(_0x1d27('0x2'));var cmHopper=require(_0x1d27('0x3'));var cmHopperFinal=require(_0x1d27('0x4'));var cmHopperHistory=require(_0x1d27('0x5'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x1d27('0x6'));var agentReportPreview=require(_0x1d27('0x7'));var voiceQueueReport=require(_0x1d27('0x8'));function loggerCatch(_0x50cd79){return function(_0x274afa){logger['error'](_0x50cd79,util['inspect'](_0x274afa,{'showHidden':![],'depth':null}));};}function create(_0x57dd72){return BPromise[_0x1d27('0x9')]()[_0x1d27('0xa')](cmHopperHistory[_0x1d27('0xb')](_0x57dd72))['catch'](loggerCatch(_0x1d27('0xc')));}function createAgent(_0xc8e9ed){return BPromise[_0x1d27('0x9')]()[_0x1d27('0xa')](agentReportPreview[_0x1d27('0xb')](_0xc8e9ed))[_0x1d27('0xd')](loggerCatch(_0x1d27('0xc')));}function moveContact(_0x4e5a99){return BPromise['resolve']()['then'](cmHopper[_0x1d27('0xe')](_0x4e5a99,!![]))[_0x1d27('0xd')](loggerCatch(_0x1d27('0xf')));}exports[_0x1d27('0x10')]=function(_0xe7ad7e){return BPromise['resolve']()[_0x1d27('0xa')](cmHopperBlack[_0x1d27('0x10')](_0xe7ad7e))[_0x1d27('0xd')](loggerCatch('[checkIsBlackList]\x20'));};exports[_0x1d27('0x11')]=function(_0x376163){return BPromise[_0x1d27('0x9')]()['then'](cmHopper['getContactPreview'](_0x376163))['catch'](loggerCatch(_0x1d27('0x12')));};exports[_0x1d27('0xb')]=function(_0x22795c,_0x4e0e24){create(_0x22795c)[_0x1d27('0xd')](loggerCatch(_0x4e0e24));moveContact(_0x22795c)[_0x1d27('0xd')](loggerCatch(_0x4e0e24));};exports['createAgentHistory']=function(_0x2b3e6b,_0x525584){createAgent(_0x2b3e6b)[_0x1d27('0xd')](loggerCatch(_0x525584));};exports[_0x1d27('0x13')]=function(_0x4503ef,_0x3ef533){create(_0x4503ef)[_0x1d27('0xd')](loggerCatch(_0x3ef533));};exports[_0x1d27('0x14')]=function(_0x4354ae,_0x21caca){moveContact(_0x4354ae)['catch'](loggerCatch(_0x21caca));};exports['rescheduleContact']=function(_0xae545d,_0x4585de,_0x327496){if(_0x4585de){_0xae545d[_0x1d27('0x15')]=null;}if(_0x327496){_0xae545d['active']=![];}return BPromise[_0x1d27('0x9')]()[_0x1d27('0xa')](cmHopper['rescheduleContact'](_0xae545d))[_0x1d27('0xd')](loggerCatch('[rescheduleContact]\x20'));};exports[_0x1d27('0x16')]=function(_0x3cf92a){return BPromise[_0x1d27('0x9')]()[_0x1d27('0xa')](cmHopper[_0x1d27('0x16')](_0x3cf92a))[_0x1d27('0xd')](loggerCatch('[countReScheduled]\x20'));};exports[_0x1d27('0x17')]=function(_0x53f1e8){return BPromise[_0x1d27('0x9')]()[_0x1d27('0xa')](cmHopper[_0x1d27('0x17')]({'UserId':null},_0x53f1e8,0x1))[_0x1d27('0xd')](loggerCatch(_0x1d27('0x18')));};exports['disableContact']=function(_0x2dcfd5){return BPromise['resolve']()[_0x1d27('0xa')](cmHopper[_0x1d27('0x17')]({'active':![]},_0x2dcfd5,0x1))[_0x1d27('0xd')](loggerCatch(_0x1d27('0x19')));};exports['crateCustomerReportQueue']=function(_0x3c28b3){var _0x3517cc={};_0x3517cc[_0x1d27('0x1a')]=_0x3c28b3[_0x1d27('0x1a')];_0x3517cc[_0x1d27('0x1b')]=_0x3c28b3[_0x1d27('0x1b')];_0x3517cc[_0x1d27('0x1c')]=_0x3c28b3[_0x1d27('0x1c')];_0x3517cc['calleridname']=_0x3c28b3[_0x1d27('0x1d')];_0x3517cc[_0x1d27('0x1e')]=_0x3c28b3[_0x1d27('0x1e')];_0x3517cc[_0x1d27('0x1f')]=_0x3c28b3[_0x1d27('0x20')];_0x3517cc[_0x1d27('0x21')]=_0x3c28b3['answertime'];_0x3517cc[_0x1d27('0x22')]=0x1;_0x3517cc[_0x1d27('0x23')]=_0x3c28b3['endtime'];_0x3517cc[_0x1d27('0x24')]=_0x3c28b3[_0x1d27('0x25')];_0x3517cc['context']=_0x1d27('0x26');_0x3517cc[_0x1d27('0x27')]=_0x1d27('0x28');_0x3517cc[_0x1d27('0x29')]=0x0;_0x3517cc[_0x1d27('0x2a')]=0x1;_0x3517cc[_0x1d27('0x2b')]=_0x3c28b3[_0x1d27('0x25')];_0x3517cc['queuecallerexitreason']=_0x1d27('0x2c');return BPromise[_0x1d27('0x9')]()[_0x1d27('0xa')](voiceQueueReport['create'](_0x3517cc))[_0x1d27('0xd')](loggerCatch('[voiceQueueReport]\x20'));};exports[_0x1d27('0x2d')]=function(_0x363b2e,_0xefef63){return BPromise['resolve']()[_0x1d27('0xa')](cmHopper[_0x1d27('0x2d')](_0x363b2e,_0xefef63))[_0x1d27('0xd')](loggerCatch(_0x1d27('0x2e')));};exports[_0x1d27('0x2f')]=function(_0x43dfe8){return BPromise[_0x1d27('0x9')]()[_0x1d27('0xa')](cmHopper[_0x1d27('0x30')](_0x43dfe8,!![],!![]))[_0x1d27('0xd')](loggerCatch(_0x1d27('0x31')));};
\ No newline at end of file
+var _0xaea6=['from-sip','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','queuecallerexitreason','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','lodash','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','catch','[createHistory]\x20','then','createHistory','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','active','[countReScheduled]\x20','unlockContact','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queuecallerjoinAt','answertime','queuecallercomplete','queuecallercompleteAt','connectedlinename','membername','context'];(function(_0xc6b076,_0x301641){var _0x9b702c=function(_0x50069c){while(--_0x50069c){_0xc6b076['push'](_0xc6b076['shift']());}};_0x9b702c(++_0x301641);}(_0xaea6,0x7b));var _0x6aea=function(_0xfe53c5,_0x1de91a){_0xfe53c5=_0xfe53c5-0x0;var _0x534d2f=_0xaea6[_0xfe53c5];return _0x534d2f;};'use strict';var util=require(_0x6aea('0x0'));var BPromise=require(_0x6aea('0x1'));var logger=require(_0x6aea('0x2'))(_0x6aea('0x3'));var _=require(_0x6aea('0x4'));var cmHopper=require(_0x6aea('0x5'));var cmHopperFinal=require('../rpc/cmHopperFinal');var cmHopperHistory=require(_0x6aea('0x6'));var cmHopperBlack=require(_0x6aea('0x7'));var voiceQueueRt=require(_0x6aea('0x8'));var agentReportPreview=require(_0x6aea('0x9'));var voiceQueueReport=require(_0x6aea('0xa'));function loggerCatch(_0x3d93c5){return function(_0x33cf75){logger[_0x6aea('0xb')](_0x3d93c5,util[_0x6aea('0xc')](_0x33cf75,{'showHidden':![],'depth':null}));};}function create(_0x22a21c){return BPromise[_0x6aea('0xd')]()['then'](cmHopperHistory['createHistory'](_0x22a21c))[_0x6aea('0xe')](loggerCatch(_0x6aea('0xf')));}function createAgent(_0x254505){return BPromise[_0x6aea('0xd')]()[_0x6aea('0x10')](agentReportPreview[_0x6aea('0x11')](_0x254505))[_0x6aea('0xe')](loggerCatch('[createHistory]\x20'));}function moveContact(_0x5ccd95){return BPromise['resolve']()[_0x6aea('0x10')](cmHopper[_0x6aea('0x12')](_0x5ccd95,!![]))[_0x6aea('0xe')](loggerCatch(_0x6aea('0x13')));}exports[_0x6aea('0x14')]=function(_0x2a7801){return BPromise[_0x6aea('0xd')]()[_0x6aea('0x10')](cmHopperBlack[_0x6aea('0x14')](_0x2a7801))[_0x6aea('0xe')](loggerCatch(_0x6aea('0x15')));};exports[_0x6aea('0x16')]=function(_0x270f6f){return BPromise[_0x6aea('0xd')]()['then'](cmHopper['getContactPreview'](_0x270f6f))[_0x6aea('0xe')](loggerCatch(_0x6aea('0x17')));};exports[_0x6aea('0x11')]=function(_0x1771a4,_0x465ddc){create(_0x1771a4)['catch'](loggerCatch(_0x465ddc));moveContact(_0x1771a4)[_0x6aea('0xe')](loggerCatch(_0x465ddc));};exports['createAgentHistory']=function(_0xd17337,_0xab4fab){createAgent(_0xd17337)['catch'](loggerCatch(_0xab4fab));};exports[_0x6aea('0x18')]=function(_0x22f807,_0x1e3638){create(_0x22f807)['catch'](loggerCatch(_0x1e3638));};exports[_0x6aea('0x19')]=function(_0x15d418,_0x5ae5d1){moveContact(_0x15d418)[_0x6aea('0xe')](loggerCatch(_0x5ae5d1));};exports[_0x6aea('0x1a')]=function(_0x1589a6,_0x36b386,_0x1d9876){if(_0x36b386){_0x1589a6[_0x6aea('0x1b')]=null;}if(_0x1d9876){_0x1589a6[_0x6aea('0x1c')]=![];}return BPromise[_0x6aea('0xd')]()[_0x6aea('0x10')](cmHopper[_0x6aea('0x1a')](_0x1589a6))[_0x6aea('0xe')](loggerCatch('[rescheduleContact]\x20'));};exports['countReScheduled']=function(_0x1a9fe9){return BPromise[_0x6aea('0xd')]()[_0x6aea('0x10')](cmHopper['countReScheduled'](_0x1a9fe9))['catch'](loggerCatch(_0x6aea('0x1d')));};exports[_0x6aea('0x1e')]=function(_0x7cc2e1){return BPromise['resolve']()[_0x6aea('0x10')](cmHopper[_0x6aea('0x1e')]({'UserId':null},_0x7cc2e1,0x1))[_0x6aea('0xe')](loggerCatch('[unlockContact]\x20'));};exports[_0x6aea('0x1f')]=function(_0x5c6560){return BPromise['resolve']()[_0x6aea('0x10')](cmHopper['unlockContact']({'active':![]},_0x5c6560,0x1))[_0x6aea('0xe')](loggerCatch(_0x6aea('0x20')));};exports[_0x6aea('0x21')]=function(_0x6e174b){var _0x2f7a74={};_0x2f7a74[_0x6aea('0x22')]=_0x6e174b[_0x6aea('0x22')];_0x2f7a74[_0x6aea('0x23')]=_0x6e174b['uniqueid'];_0x2f7a74['calleridnum']=_0x6e174b[_0x6aea('0x24')];_0x2f7a74[_0x6aea('0x25')]=_0x6e174b[_0x6aea('0x25')];_0x2f7a74['queue']=_0x6e174b['queue'];_0x2f7a74[_0x6aea('0x26')]=_0x6e174b[_0x6aea('0x27')];_0x2f7a74['queuecallerleaveAt']=_0x6e174b[_0x6aea('0x27')];_0x2f7a74[_0x6aea('0x28')]=0x1;_0x2f7a74[_0x6aea('0x29')]=_0x6e174b['endtime'];_0x2f7a74[_0x6aea('0x2a')]=_0x6e174b[_0x6aea('0x2b')];_0x2f7a74[_0x6aea('0x2c')]=_0x6aea('0x2d');_0x2f7a74[_0x6aea('0x2e')]=_0x6aea('0x2f');_0x2f7a74[_0x6aea('0x30')]=0x0;_0x2f7a74[_0x6aea('0x31')]=0x1;_0x2f7a74[_0x6aea('0x32')]=_0x6e174b[_0x6aea('0x2b')];_0x2f7a74[_0x6aea('0x33')]='COMPLETED';return BPromise[_0x6aea('0xd')]()[_0x6aea('0x10')](voiceQueueReport['create'](_0x2f7a74))[_0x6aea('0xe')](loggerCatch('[voiceQueueReport]\x20'));};exports['getContactRecallMe']=function(_0x1006be,_0x32c101){return BPromise[_0x6aea('0xd')]()['then'](cmHopper[_0x6aea('0x34')](_0x1006be,_0x32c101))[_0x6aea('0xe')](loggerCatch(_0x6aea('0x35')));};exports[_0x6aea('0x36')]=function(_0x49904f){return BPromise[_0x6aea('0xd')]()['then'](cmHopper[_0x6aea('0x1a')](_0x49904f,!![],!![]))[_0x6aea('0xe')](loggerCatch(_0x6aea('0x37')));};
\ No newline at end of file
index f7111a4..69e87b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e9e=['lastevent','queue','interface','motionChannel','voice','mandatoryDisposition','buildAcw','agentReadyId','not_inuse','status','reachable','diff','CampaignId','filterKey','type','campaigntype','dialAnswer','callback','callbackuniqueid','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agi','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqos','bridgepeer','bridgepvtcallid','pow','replace','random','extractCalleridName','match','extractCalleridNumber','util','../../../../config/logger','127.0.0.1','milliseconds','seconds','loggerCatch','error','inspect','logger','info','loggerError','logger2','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','isActive','isNil','addVariables','Queue','name','calleridname','calleridnum','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','state','statedesc','Blacklist','starttime','responsetime','endtime','logAgent','YYYY-MM-DD\x20HH:mm:ss','ringtime','logLookAgent','membername','UserId','logCustomer','answertime','isFailure','Failure','variablesAction','BOOKED','originate','channelAgent','from-sip','timeout','uniqueid','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','cloneAction','clone','active','scheduledat','add','minutes','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','buildObj'];(function(_0x24a3c1,_0x49f387){var _0x47e090=function(_0x43202a){while(--_0x43202a){_0x24a3c1['push'](_0x24a3c1['shift']());}};_0x47e090(++_0x49f387);}(_0x5e9e,0x1d9));var _0xe5e9=function(_0x1d6472,_0x55284a){_0x1d6472=_0x1d6472-0x0;var _0x5d4516=_0x5e9e[_0x1d6472];return _0x5d4516;};'use strict';var util=require(_0xe5e9('0x0'));var _=require('lodash');var moment=require('moment');var logger=require(_0xe5e9('0x1'))('preview');var ipAgi=process['env']['XCALLY_IP_AGI']||_0xe5e9('0x2');function getSeconds(_0x5023a6,_0x365f4b){var _0x4b10e1=moment(_0x5023a6)[_0xe5e9('0x3')](0x0);var _0x44eb8c=moment(_0x365f4b)[_0xe5e9('0x3')](0x0);return _0x4b10e1['diff'](_0x44eb8c,_0xe5e9('0x4'));}exports[_0xe5e9('0x5')]=function(_0x259064){return function(_0x21c6c5){logger[_0xe5e9('0x6')](_0x259064,util[_0xe5e9('0x7')](_0x21c6c5,{'showHidden':![],'depth':null}));};};exports[_0xe5e9('0x8')]=function(_0x20990c,_0x378259){logger[_0xe5e9('0x9')](_0x20990c,util[_0xe5e9('0x7')](_0x378259,{'showHidden':![],'depth':null}));};exports[_0xe5e9('0xa')]=function(_0x5a5dc8,_0x14654d){logger[_0xe5e9('0x6')](_0x5a5dc8,util[_0xe5e9('0x7')](_0x14654d,{'showHidden':![],'depth':null}));};exports[_0xe5e9('0xb')]=function(_0x274e05){return function(_0x1193df){logger[_0xe5e9('0x9')](_0x274e05,util['inspect'](_0x1193df,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x319e9a,_0x410fc2,_0x5c0873){return{'message':_0x319e9a,'unlock':_0x410fc2,'active':_0x5c0873};};exports['getCallerId']=function(_0x120d6b,_0x3b2e64,_0x51ca2e){if(!_[_0xe5e9('0xc')](_0x51ca2e)&&_0xe5e9('0xd')===typeof _0x51ca2e&&!_[_0xe5e9('0xe')](_0x51ca2e)){if(!_['isUndefined'](_0x3b2e64)&&_0xe5e9('0xd')===typeof _0x3b2e64&&!_[_0xe5e9('0xe')](_0x3b2e64)){return util[_0xe5e9('0xf')](_0xe5e9('0x10'),_0x3b2e64,_0x51ca2e);}return util[_0xe5e9('0xf')]('\x22%s\x22\x20<%s>',_0x51ca2e,_0x51ca2e);}if(!_[_0xe5e9('0xc')](_0x120d6b)&&_0xe5e9('0xd')===typeof _0x120d6b&&!_[_0xe5e9('0xe')](_0x120d6b)){return _0x120d6b;}return'\x22\x22\x20<>';};exports[_0xe5e9('0x11')]=function(_0x2d27a6){if(_[_0xe5e9('0x12')](_0x2d27a6)){return![];}return _0x2d27a6;};exports[_0xe5e9('0x13')]=function(_0xe8295e,_0xcf0b76,_0x27a745,_0x4093d3,_0x5c5717,_0xa82da3){var _0x3f2867={'XMD-QUEUE':_0xcf0b76[_0xe5e9('0x14')]?_0xcf0b76[_0xe5e9('0x14')][_0xe5e9('0x15')]:'','XMD-CALLERID':_0x4093d3,'XMD-CALLERID-PREVIEW':_0xa82da3?util['format'](_0xe5e9('0x10'),_0xa82da3[_0xe5e9('0x16')],_0xa82da3[_0xe5e9('0x17')]):_0x4093d3,'XMD-DIALID':_0x5c5717,'XMD-CONTACTID':_0xcf0b76[_0xe5e9('0x18')],'XMD-CDRTYPE':_0xe5e9('0x19'),'CALLERID(all)':_0x4093d3,'XMD-VOICEQUEUEID':_0xcf0b76[_0xe5e9('0x1a')],'XMD-DIALCHANNEL':_0x27a745,'XMD-DIALTIMEOUT':_0xe8295e[_0xe5e9('0x1b')]||0x1e,'XMD-DIALOPTIONS':util['format'](_0xe5e9('0x1c'),_0xe8295e[_0xe5e9('0x1d')]?'g':'',_[_0xe5e9('0xe')](_0xe8295e[_0xe5e9('0x1e')])?'':'U(xcally-mixmonitor-context)'),'XMD-DIALURL':_0xe8295e[_0xe5e9('0x1f')]||'','XMD-AGI':_0xe8295e[_0xe5e9('0x20')]?util['format'](_0xe5e9('0x21'),ipAgi,_0xe8295e[_0xe5e9('0x20')]):_0xe5e9('0x22'),'XMD-AGIAFTER':_0xe8295e[_0xe5e9('0x1d')]?util['format'](_0xe5e9('0x21'),ipAgi,_0xe8295e['dialQueueProject2']):_0xe5e9('0x22'),'XMD-ORIGINATECALLERIDNUM':_0xa82da3?_0xa82da3[_0xe5e9('0x23')]:'','XMD-ORIGINATECALLERIDNAME':_0xa82da3?_0xa82da3[_0xe5e9('0x24')]:'','XMD-DESTINATION':_0xe5e9('0x25'),'SIPADDHEADER':_0xe5e9('0x26')};if(!_['isEmpty'](_0xe8295e['monitor_format'])){_0x3f2867[util[_0xe5e9('0xf')]('%s',_0xe5e9('0x27'))]=_0xe8295e[_0xe5e9('0x1e')];_0x3f2867[util[_0xe5e9('0xf')]('%s',_0xe5e9('0x28'))]=_0x5c5717;}if(_0xcf0b76&&_0xcf0b76['Contact']){for(var _0x5d32bb in _0xcf0b76[_0xe5e9('0x29')]){if(_0xcf0b76['Contact'][_0xe5e9('0x2a')](_0x5d32bb)){if(!_[_0xe5e9('0x12')](_0xcf0b76[_0xe5e9('0x29')][_0x5d32bb])&&_0x5d32bb!=='id'&&_0x5d32bb!==_0xe5e9('0x2b')&&_0x5d32bb!==_0xe5e9('0x2c')&&_0x5d32bb!==_0xe5e9('0x2d')){_0x3f2867[util[_0xe5e9('0xf')](_0xe5e9('0x2e'),_0xe5e9('0x2f'),_[_0xe5e9('0x30')](_0x5d32bb))]=_0xcf0b76['Contact'][_0x5d32bb];}}}}return _0x3f2867;};exports['toLowerVariables']=function(_0x48ba02){var _0x59850f={};for(var _0x3b5ef8 in _0x48ba02){if(_0x48ba02[_0xe5e9('0x2a')](_0x3b5ef8)){_0x59850f[util[_0xe5e9('0xf')]('%s',_['toLower'](_0x3b5ef8))]=_0x48ba02[_0x3b5ef8];}}return{'variables':_0x59850f};};exports[_0xe5e9('0x31')]=function(_0x5008d9,_0x553879){if(!_[_0xe5e9('0x12')](_0x5008d9)){if(_0x5008d9[_0xe5e9('0x2a')](_0xe5e9('0x32'))){if(_0x5008d9[_0xe5e9('0x32')]>0x0){_0x5008d9[_0xe5e9('0x32')]-=0x1;}else{logger['error'](_0xe5e9('0x33'),_0x553879);}}}else{logger['error'](_0xe5e9('0x34'),_0x553879);}};exports[_0xe5e9('0x35')]=function(_0xd6cd2){var _0x5d8c31=moment()[_0xe5e9('0xf')]('YYYY-MM-DD\x20HH:mm:ss');_0xd6cd2[_0xe5e9('0x36')]=0xd;_0xd6cd2[_0xe5e9('0x37')]=_0xe5e9('0x38');_0xd6cd2[_0xe5e9('0x39')]=_0x5d8c31;_0xd6cd2[_0xe5e9('0x3a')]=_0x5d8c31;_0xd6cd2[_0xe5e9('0x3b')]=_0x5d8c31;};exports[_0xe5e9('0x3c')]=function(_0x31c3ae,_0x1cb23c,_0x4b4132){var _0x4465a1=moment()[_0xe5e9('0xf')](_0xe5e9('0x3d'));_0x31c3ae['state']=_0x1cb23c;_0x31c3ae[_0xe5e9('0x37')]=_0x4b4132;_0x31c3ae[_0xe5e9('0x3a')]=_0x4465a1;_0x31c3ae[_0xe5e9('0x3e')]=getSeconds(_0x31c3ae['responsetime'],_0x31c3ae[_0xe5e9('0x39')]);};exports[_0xe5e9('0x3f')]=function(_0x436d2d,_0x12a4e5,_0x43c76d){_0x436d2d[_0xe5e9('0x40')]=_0x12a4e5;_0x436d2d[_0xe5e9('0x41')]=_0x43c76d;};exports[_0xe5e9('0x42')]=function(_0x1ee4a3,_0x31e106,_0x38333a){var _0x2f6c0b=moment()[_0xe5e9('0xf')](_0xe5e9('0x3d'));_0x1ee4a3[_0xe5e9('0x36')]=_0x31e106;_0x1ee4a3[_0xe5e9('0x37')]=_0x38333a;_0x1ee4a3[_0xe5e9('0x3a')]=_0x1ee4a3[_0xe5e9('0x3a')]?_0x1ee4a3[_0xe5e9('0x3a')]:_0x2f6c0b;_0x1ee4a3[_0xe5e9('0x3b')]=_0x1ee4a3['endtime']?_0x1ee4a3[_0xe5e9('0x3b')]:_0x2f6c0b;_0x1ee4a3['ringtime']=getSeconds(_0x1ee4a3['responsetime']||0x0,_0x1ee4a3[_0xe5e9('0x39')]||0x0);_0x1ee4a3['talktime']=_0x1ee4a3[_0xe5e9('0x43')]?getSeconds(_0x1ee4a3[_0xe5e9('0x3b')],_0x1ee4a3[_0xe5e9('0x43')]):0x0;};exports[_0xe5e9('0x44')]=function(_0x3b312e){return _0x3b312e===_0xe5e9('0x45');};exports[_0xe5e9('0x46')]=function(_0x180aff,_0xbd9fd,_0x44eb95,_0x178625,_0x40bd13){var _0x5a3ce5=_0x178625?'RECALL':_0x180aff['calleridname'];_0x5a3ce5=_0x40bd13?_0xe5e9('0x47'):_0x5a3ce5;return{'actionid':_0x180aff['uniqueid'],'action':_0xe5e9('0x48'),'channel':_0x180aff[_0xe5e9('0x49')],'callerid':util[_0xe5e9('0xf')](_0xe5e9('0x10'),_0x5a3ce5,_0x180aff[_0xe5e9('0x17')]),'Exten':'xcally-motion-preview','Context':_0xe5e9('0x4a'),'Priority':'1','variable':_0x44eb95,'timeout':(_0xbd9fd[_0xe5e9('0x4b')]||0x1e)*0x3e8,'async':!![],'channelid':_0x180aff[_0xe5e9('0x4c')]};};exports[_0xe5e9('0x4d')]=function(_0x4c4140){return _0x4c4140[_0xe5e9('0x4e')]+_0x4c4140[_0xe5e9('0x4f')]+_0x4c4140[_0xe5e9('0x50')]+_0x4c4140[_0xe5e9('0x51')]+_0x4c4140['countnosuchnumberretry'];};exports[_0xe5e9('0x52')]=function(_0x11bdf4){var _0x5ddf17=_[_0xe5e9('0x53')](_0x11bdf4);_0x5ddf17[_0xe5e9('0x36')]=0xf;_0x5ddf17[_0xe5e9('0x37')]='Global';return _0x5ddf17;};exports['scheduledAt']=function(_0x3c38e2,_0x5ceeae,_0x265e04){var _0x446bde={};_0x446bde[_0x5ceeae]=_0x3c38e2[_0x5ceeae];_0x446bde[_0xe5e9('0x54')]=![];_0x446bde[_0xe5e9('0x55')]=moment()[_0xe5e9('0x56')](_0x265e04,_0xe5e9('0x57'))[_0xe5e9('0xf')](_0xe5e9('0x3d'));_0x446bde[_0xe5e9('0x18')]=_0x3c38e2['ContactId'];_0x446bde['ListId']=_0x3c38e2[_0xe5e9('0x58')];_0x446bde[_0xe5e9('0x1a')]=_0x3c38e2[_0xe5e9('0x1a')]||undefined;return _0x446bde;};exports[_0xe5e9('0x59')]=function(_0xa2b875,_0x31bb8c){if(!_[_0xe5e9('0x12')](_0xa2b875)){if(_0xa2b875[_0xe5e9('0x5a')]>0x0){_0xa2b875['pTalking']-=0x1;}else{logger[_0xe5e9('0x6')](_0x31bb8c,_0xe5e9('0x5b'));}}else{logger[_0xe5e9('0x6')](_0x31bb8c,_0xe5e9('0x5c'));}};exports[_0xe5e9('0x5d')]=function(_0x1c3d40){if(_0x1c3d40<=0x0){return!![];}return![];};exports[_0xe5e9('0x5e')]=function(_0xf92ef4,_0x5f0f18,_0x5c620d){_0xf92ef4[_0xe5e9('0x5f')]=_0x5f0f18;_0xf92ef4[_0xe5e9('0x15')]=_0xf92ef4[_0xe5e9('0x60')];_0xf92ef4[_0xe5e9('0x61')]=_0xf92ef4[_0xe5e9('0x49')];_0xf92ef4[_0xe5e9('0x62')]=_0xe5e9('0x63');if(_0x5c620d){_0xf92ef4[_0xe5e9('0x64')]=_0x5c620d[_0xe5e9('0x64')];}return _0xf92ef4;};exports[_0xe5e9('0x65')]=function(_0x385779){var _0x415580={};_0x415580[_0xe5e9('0x60')]=_0x385779[_0xe5e9('0x60')];_0x415580['interface']=_0x385779[_0xe5e9('0x49')];_0x415580['uniqueid']=_0x385779['uniqueid'];return _0x415580;};exports[_0xe5e9('0x66')]=function(_0x21c3ba){var _0x42e21c=[];for(var _0x273813 in _0x21c3ba){if(_0x21c3ba[_0xe5e9('0x2a')](_0x273813)){if(!_[_0xe5e9('0x12')](_0x21c3ba[_0x273813])&&_0x21c3ba[_0x273813][_0xe5e9('0x36')]===_0xe5e9('0x67')&&_0x21c3ba[_0x273813][_0xe5e9('0x68')]===_0xe5e9('0x69')){_0x42e21c['push'](_0x21c3ba[_0x273813]['id']);}}}return _0x42e21c;};exports['getDiff']=function(_0x2f1a3b){var _0xf87659=moment()[_0xe5e9('0x3')](0x0);var _0x2f6a42=moment(_0x2f1a3b)[_0xe5e9('0x3')](0x0);return _0xf87659[_0xe5e9('0x6a')](_0x2f6a42,'seconds');};exports['createBody']=function(_0x2d799d){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x2d799d['ContactId'],'ListId':_0x2d799d[_0xe5e9('0x58')],'VoiceQueueId':_0x2d799d[_0xe5e9('0x1a')]||undefined,'CampaignId':_0x2d799d[_0xe5e9('0x6b')]||undefined};};exports[_0xe5e9('0x6c')]=function(_0x3cc7bb){if(_0x3cc7bb===_0xe5e9('0x4c')||_0x3cc7bb==='idContact'||_0x3cc7bb===_0xe5e9('0x60')||_0x3cc7bb===_0xe5e9('0x6d')||_0x3cc7bb===_0xe5e9('0x6e')||_0x3cc7bb===_0xe5e9('0x6f')||_0x3cc7bb===_0xe5e9('0x40')||_0x3cc7bb==='channelAgent'||_0x3cc7bb===_0xe5e9('0x16')||_0x3cc7bb===_0xe5e9('0x54')||_0x3cc7bb===_0xe5e9('0x17')||_0x3cc7bb==='scheduledat'||_0x3cc7bb==='countbusyretry'||_0x3cc7bb===_0xe5e9('0x4f')||_0x3cc7bb===_0xe5e9('0x50')||_0x3cc7bb==='countglobal'||_0x3cc7bb===_0xe5e9('0x70')||_0x3cc7bb===_0xe5e9('0x71')||_0x3cc7bb==='callbackat'||_0x3cc7bb===_0xe5e9('0x72')||_0x3cc7bb==='ContactId'||_0x3cc7bb===_0xe5e9('0x58')||_0x3cc7bb===_0xe5e9('0x41')||_0x3cc7bb===_0xe5e9('0x1a')||_0x3cc7bb===_0xe5e9('0x73')||_0x3cc7bb===_0xe5e9('0x74')||_0x3cc7bb===_0xe5e9('0x75')||_0x3cc7bb===_0xe5e9('0x76')||_0x3cc7bb===_0xe5e9('0x77')||_0x3cc7bb==='xmd-dialurl'||_0x3cc7bb==='xmd-dialtimeout'||_0x3cc7bb===_0xe5e9('0x78')||_0x3cc7bb===_0xe5e9('0x79')||_0x3cc7bb===_0xe5e9('0x7a')||_0x3cc7bb===_0xe5e9('0x7b')||_0x3cc7bb===_0xe5e9('0x7c')||_0x3cc7bb===_0xe5e9('0x7d')||_0x3cc7bb==='xmd-agiafter'||_0x3cc7bb===_0xe5e9('0x7e')||_0x3cc7bb==='rtpaudioqos'||_0x3cc7bb===_0xe5e9('0x7f')||_0x3cc7bb===_0xe5e9('0x80')||_0x3cc7bb===_0xe5e9('0x81')||_0x3cc7bb===_0xe5e9('0x82')||_0x3cc7bb===_0xe5e9('0x83')||_0x3cc7bb===_0xe5e9('0x84')||_0x3cc7bb==='rtpaudioqosrttbridged'||_0x3cc7bb===_0xe5e9('0x85')||_0x3cc7bb==='rtpaudioqosbridged'||_0x3cc7bb===_0xe5e9('0x80')||_0x3cc7bb===_0xe5e9('0x81')||_0x3cc7bb==='rtpaudioqosloss'||_0x3cc7bb===_0xe5e9('0x83')||_0x3cc7bb===_0xe5e9('0x84')||_0x3cc7bb==='rtpaudioqosrttbridged'||_0x3cc7bb===_0xe5e9('0x86')||_0x3cc7bb===_0xe5e9('0x87')||_0x3cc7bb===_0xe5e9('0x36')||_0x3cc7bb==='statedesc'){return![];}return!![];};exports['getCallerIdRandom']=function(_0x3b8c84,_0x2d4996){var _0x4a2f99,_0x4d827c,_0x40487f;if(_0x2d4996<=0x0){_0x2d4996=0x1;}_0x4a2f99=new RegExp('\x5cw{0,'+_0x2d4996+'}$');_0x4d827c=Math[_0xe5e9('0x88')](0xa,_0x2d4996-0x1);_0x40487f=Math['pow'](0xa,_0x2d4996)-0x1;return util[_0xe5e9('0xf')]('%s',_[_0xe5e9('0x89')](_0x3b8c84,_0x4a2f99,_[_0xe5e9('0x8a')](_0x4d827c,_0x40487f)));};exports[_0xe5e9('0x8b')]=function(_0x4afb5c){var _0x12a345=_0x4afb5c[_0xe5e9('0x8c')](/"(.*?)"/);return _0x12a345?_0x12a345[0x1]:_0x4afb5c;};exports[_0xe5e9('0x8d')]=function(_0x1d6b04){var _0x240603=_0x1d6b04[_0xe5e9('0x8c')](/<(.*?)>/);return _0x240603?_0x240603[0x1]:_0x1d6b04;};
\ No newline at end of file
+var _0xc818=['logCustomer','endtime','ringtime','answertime','isFailure','Failure','RECALL','calleridname','BOOKED','uniqueid','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','cloneAction','Global','scheduledAt','scheduledat','add','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','lastevent','queue','interface','channelAgent','motionChannel','voice','mandatoryDisposition','buildAcw','not_inuse','status','push','getDiff','createBody','CampaignId','filterKey','type','campaigntype','active','countglobal','callback','callbackuniqueid','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-cdrtype','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosjitterbridged','bridgepeer','\x5cw{0,','pow','replace','random','extractCalleridName','extractCalleridNumber','match','util','moment','../../../../config/logger','env','127.0.0.1','milliseconds','diff','seconds','loggerCatch','error','logger','info','inspect','logger2','message','getCallerId','string','isEmpty','format','\x22%s\x22\x20<%s>','isUndefined','\x22\x22\x20<>','isNil','addVariables','Queue','calleridnum','ContactId','dialer','VoiceQueueId','\x22rtTxX%s%s\x22','dialQueueProject2','U(xcally-mixmonitor-context)','dialPreviewUrl','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','Call-Type:\x20PREVIEW','monitor_format','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','tags','updatedAt','XMD-','toUpper','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','logAgent','logLookAgent','membername','UserId'];(function(_0x4a5c5a,_0x1a7816){var _0x4f74d0=function(_0x673704){while(--_0x673704){_0x4a5c5a['push'](_0x4a5c5a['shift']());}};_0x4f74d0(++_0x1a7816);}(_0xc818,0xd9));var _0x8c81=function(_0x571a41,_0x20ab0e){_0x571a41=_0x571a41-0x0;var _0x4f9308=_0xc818[_0x571a41];return _0x4f9308;};'use strict';var util=require(_0x8c81('0x0'));var _=require('lodash');var moment=require(_0x8c81('0x1'));var logger=require(_0x8c81('0x2'))('preview');var ipAgi=process[_0x8c81('0x3')]['XCALLY_IP_AGI']||_0x8c81('0x4');function getSeconds(_0x3f30e5,_0x2d0e33){var _0x57fb47=moment(_0x3f30e5)[_0x8c81('0x5')](0x0);var _0x5c5b62=moment(_0x2d0e33)[_0x8c81('0x5')](0x0);return _0x57fb47[_0x8c81('0x6')](_0x5c5b62,_0x8c81('0x7'));}exports[_0x8c81('0x8')]=function(_0x205956){return function(_0x504a75){logger[_0x8c81('0x9')](_0x205956,util['inspect'](_0x504a75,{'showHidden':![],'depth':null}));};};exports[_0x8c81('0xa')]=function(_0x2352d9,_0x4745f4){logger[_0x8c81('0xb')](_0x2352d9,util[_0x8c81('0xc')](_0x4745f4,{'showHidden':![],'depth':null}));};exports['loggerError']=function(_0x14dc8c,_0x2aa963){logger['error'](_0x14dc8c,util[_0x8c81('0xc')](_0x2aa963,{'showHidden':![],'depth':null}));};exports[_0x8c81('0xd')]=function(_0x57314c){return function(_0x303cba){logger['info'](_0x57314c,util['inspect'](_0x303cba,{'showHidden':![],'depth':null}));};};exports[_0x8c81('0xe')]=function(_0x51b980,_0x1182ad,_0x20b35e){return{'message':_0x51b980,'unlock':_0x1182ad,'active':_0x20b35e};};exports[_0x8c81('0xf')]=function(_0x3c25ee,_0x1ca3c1,_0x38c6c9){if(!_['isUndefined'](_0x38c6c9)&&_0x8c81('0x10')===typeof _0x38c6c9&&!_[_0x8c81('0x11')](_0x38c6c9)){if(!_['isUndefined'](_0x1ca3c1)&&_0x8c81('0x10')===typeof _0x1ca3c1&&!_[_0x8c81('0x11')](_0x1ca3c1)){return util[_0x8c81('0x12')](_0x8c81('0x13'),_0x1ca3c1,_0x38c6c9);}return util[_0x8c81('0x12')](_0x8c81('0x13'),_0x38c6c9,_0x38c6c9);}if(!_[_0x8c81('0x14')](_0x3c25ee)&&'string'===typeof _0x3c25ee&&!_['isEmpty'](_0x3c25ee)){return _0x3c25ee;}return _0x8c81('0x15');};exports['isActive']=function(_0x20eece){if(_[_0x8c81('0x16')](_0x20eece)){return![];}return _0x20eece;};exports[_0x8c81('0x17')]=function(_0x37bb63,_0x2d2406,_0x151951,_0x2da202,_0x5e7589,_0x2747ce){var _0x89012c={'XMD-QUEUE':_0x2d2406[_0x8c81('0x18')]?_0x2d2406[_0x8c81('0x18')]['name']:'','XMD-CALLERID':_0x2da202,'XMD-CALLERID-PREVIEW':_0x2747ce?util[_0x8c81('0x12')](_0x8c81('0x13'),_0x2747ce['calleridname'],_0x2747ce[_0x8c81('0x19')]):_0x2da202,'XMD-DIALID':_0x5e7589,'XMD-CONTACTID':_0x2d2406[_0x8c81('0x1a')],'XMD-CDRTYPE':_0x8c81('0x1b'),'CALLERID(all)':_0x2da202,'XMD-VOICEQUEUEID':_0x2d2406[_0x8c81('0x1c')],'XMD-DIALCHANNEL':_0x151951,'XMD-DIALTIMEOUT':_0x37bb63['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util[_0x8c81('0x12')](_0x8c81('0x1d'),_0x37bb63[_0x8c81('0x1e')]?'g':'',_[_0x8c81('0x11')](_0x37bb63['monitor_format'])?'':_0x8c81('0x1f')),'XMD-DIALURL':_0x37bb63[_0x8c81('0x20')]||'','XMD-AGI':_0x37bb63['dialQueueProject']?util[_0x8c81('0x12')](_0x8c81('0x21'),ipAgi,_0x37bb63['dialQueueProject']):_0x8c81('0x22'),'XMD-AGIAFTER':_0x37bb63[_0x8c81('0x1e')]?util[_0x8c81('0x12')]('\x22agi://%s/square,%s\x22',ipAgi,_0x37bb63[_0x8c81('0x1e')]):_0x8c81('0x22'),'XMD-ORIGINATECALLERIDNUM':_0x2747ce?_0x2747ce[_0x8c81('0x23')]:'','XMD-ORIGINATECALLERIDNAME':_0x2747ce?_0x2747ce[_0x8c81('0x24')]:'','XMD-DESTINATION':_0x8c81('0x25'),'SIPADDHEADER':_0x8c81('0x26')};if(!_[_0x8c81('0x11')](_0x37bb63[_0x8c81('0x27')])){_0x89012c[util[_0x8c81('0x12')]('%s',_0x8c81('0x28'))]=_0x37bb63['monitor_format'];_0x89012c[util['format']('%s',_0x8c81('0x29'))]=_0x5e7589;}if(_0x2d2406&&_0x2d2406['Contact']){for(var _0x5b944e in _0x2d2406[_0x8c81('0x2a')]){if(_0x2d2406[_0x8c81('0x2a')][_0x8c81('0x2b')](_0x5b944e)){if(!_['isNil'](_0x2d2406[_0x8c81('0x2a')][_0x5b944e])&&_0x5b944e!=='id'&&_0x5b944e!==_0x8c81('0x2c')&&_0x5b944e!=='createdAt'&&_0x5b944e!==_0x8c81('0x2d')){_0x89012c[util[_0x8c81('0x12')]('%s%s',_0x8c81('0x2e'),_[_0x8c81('0x2f')](_0x5b944e))]=_0x2d2406[_0x8c81('0x2a')][_0x5b944e];}}}}return _0x89012c;};exports['toLowerVariables']=function(_0x3a4fe2){var _0x574c95={};for(var _0x5e80b7 in _0x3a4fe2){if(_0x3a4fe2[_0x8c81('0x2b')](_0x5e80b7)){_0x574c95[util['format']('%s',_['toLower'](_0x5e80b7))]=_0x3a4fe2[_0x5e80b7];}}return{'variables':_0x574c95};};exports[_0x8c81('0x30')]=function(_0x336439,_0x33b0f4){if(!_[_0x8c81('0x16')](_0x336439)){if(_0x336439[_0x8c81('0x2b')](_0x8c81('0x31'))){if(_0x336439[_0x8c81('0x31')]>0x0){_0x336439[_0x8c81('0x31')]-=0x1;}else{logger['error'](_0x8c81('0x32'),_0x33b0f4);}}}else{logger[_0x8c81('0x9')](_0x8c81('0x33'),_0x33b0f4);}};exports[_0x8c81('0x34')]=function(_0x4bbd5d){var _0x27a2f7=moment()[_0x8c81('0x12')](_0x8c81('0x35'));_0x4bbd5d[_0x8c81('0x36')]=0xd;_0x4bbd5d[_0x8c81('0x37')]=_0x8c81('0x38');_0x4bbd5d[_0x8c81('0x39')]=_0x27a2f7;_0x4bbd5d[_0x8c81('0x3a')]=_0x27a2f7;_0x4bbd5d['endtime']=_0x27a2f7;};exports[_0x8c81('0x3b')]=function(_0xdc3587,_0x422f25,_0x2fb430){var _0x7c09c2=moment()[_0x8c81('0x12')](_0x8c81('0x35'));_0xdc3587[_0x8c81('0x36')]=_0x422f25;_0xdc3587[_0x8c81('0x37')]=_0x2fb430;_0xdc3587[_0x8c81('0x3a')]=_0x7c09c2;_0xdc3587['ringtime']=getSeconds(_0xdc3587[_0x8c81('0x3a')],_0xdc3587[_0x8c81('0x39')]);};exports[_0x8c81('0x3c')]=function(_0x16dbbe,_0x4f8499,_0x16ed46){_0x16dbbe[_0x8c81('0x3d')]=_0x4f8499;_0x16dbbe[_0x8c81('0x3e')]=_0x16ed46;};exports[_0x8c81('0x3f')]=function(_0x4bbbb9,_0x1e99c3,_0x37363b){var _0x4faa37=moment()[_0x8c81('0x12')](_0x8c81('0x35'));_0x4bbbb9[_0x8c81('0x36')]=_0x1e99c3;_0x4bbbb9[_0x8c81('0x37')]=_0x37363b;_0x4bbbb9[_0x8c81('0x3a')]=_0x4bbbb9[_0x8c81('0x3a')]?_0x4bbbb9[_0x8c81('0x3a')]:_0x4faa37;_0x4bbbb9[_0x8c81('0x40')]=_0x4bbbb9[_0x8c81('0x40')]?_0x4bbbb9[_0x8c81('0x40')]:_0x4faa37;_0x4bbbb9[_0x8c81('0x41')]=getSeconds(_0x4bbbb9['responsetime']||0x0,_0x4bbbb9[_0x8c81('0x39')]||0x0);_0x4bbbb9['talktime']=_0x4bbbb9[_0x8c81('0x42')]?getSeconds(_0x4bbbb9[_0x8c81('0x40')],_0x4bbbb9['answertime']):0x0;};exports[_0x8c81('0x43')]=function(_0x4c1898){return _0x4c1898===_0x8c81('0x44');};exports['variablesAction']=function(_0x4b7281,_0x29702d,_0x18b341,_0x2d7602,_0x2cc0c8){var _0x3e8142=_0x2d7602?_0x8c81('0x45'):_0x4b7281[_0x8c81('0x46')];_0x3e8142=_0x2cc0c8?_0x8c81('0x47'):_0x3e8142;return{'actionid':_0x4b7281[_0x8c81('0x48')],'action':'originate','channel':_0x4b7281['channelAgent'],'callerid':util[_0x8c81('0x12')](_0x8c81('0x13'),_0x3e8142,_0x4b7281['calleridnum']),'Exten':_0x8c81('0x25'),'Context':_0x8c81('0x49'),'Priority':'1','variable':_0x18b341,'timeout':(_0x29702d[_0x8c81('0x4a')]||0x1e)*0x3e8,'async':!![],'channelid':_0x4b7281[_0x8c81('0x48')]};};exports[_0x8c81('0x4b')]=function(_0x34a903){return _0x34a903[_0x8c81('0x4c')]+_0x34a903[_0x8c81('0x4d')]+_0x34a903[_0x8c81('0x4e')]+_0x34a903[_0x8c81('0x4f')]+_0x34a903[_0x8c81('0x50')];};exports[_0x8c81('0x51')]=function(_0x391406){var _0x283272=_['clone'](_0x391406);_0x283272[_0x8c81('0x36')]=0xf;_0x283272[_0x8c81('0x37')]=_0x8c81('0x52');return _0x283272;};exports[_0x8c81('0x53')]=function(_0x272fce,_0x58977e,_0xe14e3e){var _0x28fbfe={};_0x28fbfe[_0x58977e]=_0x272fce[_0x58977e];_0x28fbfe['active']=![];_0x28fbfe[_0x8c81('0x54')]=moment()[_0x8c81('0x55')](_0xe14e3e,'minutes')['format'](_0x8c81('0x35'));_0x28fbfe[_0x8c81('0x1a')]=_0x272fce[_0x8c81('0x1a')];_0x28fbfe['ListId']=_0x272fce[_0x8c81('0x56')];_0x28fbfe[_0x8c81('0x1c')]=_0x272fce[_0x8c81('0x1c')]||undefined;return _0x28fbfe;};exports[_0x8c81('0x57')]=function(_0x159de9,_0x5a3d42){if(!_['isNil'](_0x159de9)){if(_0x159de9[_0x8c81('0x58')]>0x0){_0x159de9[_0x8c81('0x58')]-=0x1;}else{logger[_0x8c81('0x9')](_0x5a3d42,_0x8c81('0x59'));}}else{logger[_0x8c81('0x9')](_0x5a3d42,_0x8c81('0x5a'));}};exports[_0x8c81('0x5b')]=function(_0x43a892){if(_0x43a892<=0x0){return!![];}return![];};exports['buildObj']=function(_0x15567c,_0x6fffd8,_0x196f52){_0x15567c[_0x8c81('0x5c')]=_0x6fffd8;_0x15567c['name']=_0x15567c[_0x8c81('0x5d')];_0x15567c[_0x8c81('0x5e')]=_0x15567c[_0x8c81('0x5f')];_0x15567c[_0x8c81('0x60')]=_0x8c81('0x61');if(_0x196f52){_0x15567c[_0x8c81('0x62')]=_0x196f52[_0x8c81('0x62')];}return _0x15567c;};exports[_0x8c81('0x63')]=function(_0x7b0811){var _0x36a99c={};_0x36a99c[_0x8c81('0x5d')]=_0x7b0811['queue'];_0x36a99c[_0x8c81('0x5e')]=_0x7b0811[_0x8c81('0x5f')];_0x36a99c[_0x8c81('0x48')]=_0x7b0811[_0x8c81('0x48')];return _0x36a99c;};exports['agentReadyId']=function(_0x456299){var _0x12808d=[];for(var _0x31e845 in _0x456299){if(_0x456299['hasOwnProperty'](_0x31e845)){if(!_['isNil'](_0x456299[_0x31e845])&&_0x456299[_0x31e845]['state']===_0x8c81('0x64')&&_0x456299[_0x31e845][_0x8c81('0x65')]==='reachable'){_0x12808d[_0x8c81('0x66')](_0x456299[_0x31e845]['id']);}}}return _0x12808d;};exports[_0x8c81('0x67')]=function(_0x129dd3){var _0x4eeb19=moment()['milliseconds'](0x0);var _0x53435c=moment(_0x129dd3)[_0x8c81('0x5')](0x0);return _0x4eeb19[_0x8c81('0x6')](_0x53435c,_0x8c81('0x7'));};exports[_0x8c81('0x68')]=function(_0x48d273){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x48d273[_0x8c81('0x1a')],'ListId':_0x48d273['ListId'],'VoiceQueueId':_0x48d273[_0x8c81('0x1c')]||undefined,'CampaignId':_0x48d273[_0x8c81('0x69')]||undefined};};exports[_0x8c81('0x6a')]=function(_0x230fad){if(_0x230fad==='uniqueid'||_0x230fad==='idContact'||_0x230fad===_0x8c81('0x5d')||_0x230fad===_0x8c81('0x6b')||_0x230fad===_0x8c81('0x6c')||_0x230fad==='dialAnswer'||_0x230fad===_0x8c81('0x3d')||_0x230fad===_0x8c81('0x5f')||_0x230fad===_0x8c81('0x46')||_0x230fad===_0x8c81('0x6d')||_0x230fad===_0x8c81('0x19')||_0x230fad===_0x8c81('0x54')||_0x230fad===_0x8c81('0x4c')||_0x230fad===_0x8c81('0x4d')||_0x230fad===_0x8c81('0x4e')||_0x230fad===_0x8c81('0x6e')||_0x230fad===_0x8c81('0x6f')||_0x230fad===_0x8c81('0x70')||_0x230fad==='callbackat'||_0x230fad===_0x8c81('0x71')||_0x230fad===_0x8c81('0x1a')||_0x230fad===_0x8c81('0x56')||_0x230fad===_0x8c81('0x3e')||_0x230fad===_0x8c81('0x1c')||_0x230fad===_0x8c81('0x72')||_0x230fad===_0x8c81('0x73')||_0x230fad===_0x8c81('0x74')||_0x230fad===_0x8c81('0x75')||_0x230fad===_0x8c81('0x76')||_0x230fad==='xmd-dialurl'||_0x230fad==='xmd-dialtimeout'||_0x230fad===_0x8c81('0x77')||_0x230fad===_0x8c81('0x78')||_0x230fad===_0x8c81('0x79')||_0x230fad==='xmd-contactid'||_0x230fad===_0x8c81('0x7a')||_0x230fad==='xmd-callerid'||_0x230fad==='xmd-agiafter'||_0x230fad===_0x8c81('0x7b')||_0x230fad===_0x8c81('0x7c')||_0x230fad===_0x8c81('0x7d')||_0x230fad===_0x8c81('0x7e')||_0x230fad==='rtpaudioqosjitterbridged'||_0x230fad===_0x8c81('0x7f')||_0x230fad===_0x8c81('0x80')||_0x230fad===_0x8c81('0x81')||_0x230fad===_0x8c81('0x82')||_0x230fad===_0x8c81('0x7c')||_0x230fad===_0x8c81('0x7d')||_0x230fad===_0x8c81('0x7e')||_0x230fad===_0x8c81('0x83')||_0x230fad===_0x8c81('0x7f')||_0x230fad===_0x8c81('0x80')||_0x230fad===_0x8c81('0x81')||_0x230fad===_0x8c81('0x82')||_0x230fad===_0x8c81('0x84')||_0x230fad==='bridgepvtcallid'||_0x230fad==='state'||_0x230fad===_0x8c81('0x37')){return![];}return!![];};exports['getCallerIdRandom']=function(_0x1680c8,_0x7fb90a){var _0x2eebfb,_0x5ca125,_0x4f9466;if(_0x7fb90a<=0x0){_0x7fb90a=0x1;}_0x2eebfb=new RegExp(_0x8c81('0x85')+_0x7fb90a+'}$');_0x5ca125=Math[_0x8c81('0x86')](0xa,_0x7fb90a-0x1);_0x4f9466=Math['pow'](0xa,_0x7fb90a)-0x1;return util[_0x8c81('0x12')]('%s',_[_0x8c81('0x87')](_0x1680c8,_0x2eebfb,_[_0x8c81('0x88')](_0x5ca125,_0x4f9466)));};exports[_0x8c81('0x89')]=function(_0x273574){var _0xb248c3=_0x273574['match'](/"(.*?)"/);return _0xb248c3?_0xb248c3[0x1]:_0x273574;};exports[_0x8c81('0x8a')]=function(_0x1c4418){var _0x311ed1=_0x1c4418[_0x8c81('0x8b')](/<(.*?)>/);return _0x311ed1?_0x311ed1[0x1]:_0x1c4418;};
\ No newline at end of file
index eb69ccd..94c5e9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bee=['voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string','number','boolean','reload','voicechannel'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3bee,0x72));var _0xe3be=function(_0x215ec3,_0x2d7fd5){_0x215ec3=_0x215ec3-0x0;var _0x1c06a1=_0x3bee[_0x215ec3];return _0x1c06a1;};'use strict';exports[_0xe3be('0x0')]={'queue':{'type':_0xe3be('0x1'),'required':!![]},'interface':{'type':_0xe3be('0x1'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':_0xe3be('0x2'),'required':![]},'paused':{'type':_0xe3be('0x3'),'required':![]}};exports['queueremove']={'queue':{'type':_0xe3be('0x1'),'required':!![]},'interface':{'type':_0xe3be('0x1'),'required':!![]}};exports['queuepause']={'interface':{'type':_0xe3be('0x1'),'required':!![]},'paused':{'type':_0xe3be('0x3')},'reason':{'type':_0xe3be('0x1'),'required':![]}};exports[_0xe3be('0x4')]={'module':{'type':_0xe3be('0x1'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0xe3be('0x1'),'required':!![]}};exports[_0xe3be('0x5')]={'uniqueid':{'type':_0xe3be('0x1'),'required':!![]},'filename':{'type':_0xe3be('0x1')},'format':{'type':'string'},'mixmonitorid':{'type':_0xe3be('0x1')}};exports[_0xe3be('0x6')]={'uniqueid':{'type':_0xe3be('0x1'),'required':!![]}};exports[_0xe3be('0x7')]={'uniqueid':{'type':_0xe3be('0x1'),'required':!![]},'exten':{'type':_0xe3be('0x1'),'required':!![]},'context':{'type':_0xe3be('0x1')}};
\ No newline at end of file
+var _0xe769=['voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','string','number','boolean','queueremove','reload','voicequeuechannel'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe769,0xd2));var _0x9e76=function(_0x436bc5,_0x47b676){_0x436bc5=_0x436bc5-0x0;var _0x3795fc=_0xe769[_0x436bc5];return _0x3795fc;};'use strict';exports['queueadd']={'queue':{'type':'string','required':!![]},'interface':{'type':_0x9e76('0x0'),'required':!![]},'membername':{'type':_0x9e76('0x0'),'required':!![]},'penalty':{'type':_0x9e76('0x1'),'required':![]},'paused':{'type':_0x9e76('0x2'),'required':![]}};exports[_0x9e76('0x3')]={'queue':{'type':_0x9e76('0x0'),'required':!![]},'interface':{'type':_0x9e76('0x0'),'required':!![]}};exports['queuepause']={'interface':{'type':'string','required':!![]},'paused':{'type':_0x9e76('0x2')},'reason':{'type':_0x9e76('0x0'),'required':![]}};exports[_0x9e76('0x4')]={'module':{'type':_0x9e76('0x0'),'required':![]}};exports[_0x9e76('0x5')]={'uniqueid':{'type':_0x9e76('0x0'),'required':!![]}};exports[_0x9e76('0x6')]={'uniqueid':{'type':_0x9e76('0x0'),'required':!![]},'filename':{'type':'string'},'format':{'type':_0x9e76('0x0')},'mixmonitorid':{'type':'string'}};exports[_0x9e76('0x7')]={'uniqueid':{'type':_0x9e76('0x0'),'required':!![]}};exports[_0x9e76('0x8')]={'uniqueid':{'type':_0x9e76('0x0'),'required':!![]},'exten':{'type':_0x9e76('0x0'),'required':!![]},'context':{'type':'string'}};
\ No newline at end of file
index 5b9ff19..9bcd318 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e72=['zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','format','isNil','name','interface','answered','sumHoldTime','sumDuration','sumBillable','isEmpty','ivrAnswerCallsDay','total','unmanaged','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','length','isUndefined','initTelephones','SIP/%s','initTrunks','trunks','initVoiceQueues','initTemplates','initSalesforceAccounts','initFreshdeskAccounts','initZohoAccounts','zohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','uniqueid','queue','queuecallerexit','queuecallerleaveAt','diff','queuecallerjoinAt','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','seconds','queuecallercomplete','initVoiceCallReports','duration','disposition','ANSWERED','billableseconds','initCampaigns','SquareProject','initVoiceExtensions','initCampaignHopperHistory','util','lodash','moment','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/voiceExtension','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','agents','telephones','voiceQueues','triggers','campaigns','templates','outbound','voiceExtensions','channels','queueChannels','timers'];(function(_0x17b0d4,_0x377add){var _0x2d02c7=function(_0x56e627){while(--_0x56e627){_0x17b0d4['push'](_0x17b0d4['shift']());}};_0x2d02c7(++_0x377add);}(_0x5e72,0x1a2));var _0x25e7=function(_0x39fdda,_0x1994e1){_0x39fdda=_0x39fdda-0x0;var _0x5c9d2f=_0x5e72[_0x39fdda];return _0x5c9d2f;};'use strict';var BPromise=require('bluebird');var util=require(_0x25e7('0x0'));var _=require(_0x25e7('0x1'));var moment=require(_0x25e7('0x2'));var Agent=require('../model/agent');var Telephone=require('../model/telephone');var Trunk=require(_0x25e7('0x3'));var VoiceQueue=require(_0x25e7('0x4'));var Trigger=require(_0x25e7('0x5'));var Template=require(_0x25e7('0x6'));var Campaign=require(_0x25e7('0x7'));var VoiceExtension=require(_0x25e7('0x8'));var ZendeskAccount=require('../model/zendeskAccount');var SalesforceAccount=require(_0x25e7('0x9'));var FreshdeskAccount=require(_0x25e7('0xa'));var SugarcrmAccount=require(_0x25e7('0xb'));var ZohoAccount=require(_0x25e7('0xc'));var DeskAccount=require(_0x25e7('0xd'));var VtigerAccount=require(_0x25e7('0xe'));var ServicenowAccount=require(_0x25e7('0xf'));var Dynamics365Account=require(_0x25e7('0x10'));var FreshsalesAccount=require(_0x25e7('0x11'));var FaxAccount=require(_0x25e7('0x12'));var Realtime=function(){this[_0x25e7('0x13')]={};this[_0x25e7('0x14')]={};this['trunks']={};this[_0x25e7('0x15')]={};this[_0x25e7('0x16')]={};this[_0x25e7('0x17')]={};this[_0x25e7('0x18')]={};this[_0x25e7('0x19')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x25e7('0x1a')]={};this[_0x25e7('0x1b')]={};this[_0x25e7('0x1c')]={};this['outboundChannels']={};this[_0x25e7('0x1d')]={};this['settings']={};this[_0x25e7('0x1e')]={};this[_0x25e7('0x1f')]={};this[_0x25e7('0x20')]={};this[_0x25e7('0x21')]={};this['zohoAccounts']={};this[_0x25e7('0x22')]={};this[_0x25e7('0x23')]={};this[_0x25e7('0x24')]={};this[_0x25e7('0x25')]={};this[_0x25e7('0x26')]={};this[_0x25e7('0x27')]={};};function freeIsNotKey(_0x5a56dc,_0x18ecd4,_0x58c585){var _0x3f1e7b=_[_0x25e7('0x28')](_0x5a56dc,function(_0x196088,_0x3f1c21){return _0x196088[_0x58c585];});for(var _0xbbac04 in _0x18ecd4){if(_0x18ecd4[_0x25e7('0x29')](_0xbbac04)){if(!_0x3f1e7b[_0xbbac04]){delete _0x18ecd4[_0xbbac04];}}}}function freeIsNotKeySip(_0x5e6cee,_0x2c571b){var _0x5c4424=_['mapKeys'](_0x5e6cee,function(_0x1cfe5d,_0xea31af){return util[_0x25e7('0x2a')]('SIP/%s',_0x1cfe5d['name']);});for(var _0x64f29e in _0x2c571b){if(_0x2c571b['hasOwnProperty'](_0x64f29e)){if(!_0x5c4424[_0x64f29e]){delete _0x2c571b[_0x64f29e];}}}}function freeIsNotKeyAgent(_0x59d46a,_0xaae1cc){var _0x563d89=_[_0x25e7('0x28')](_0x59d46a,function(_0x148544,_0x519ba7){var _0x4ba5d0=_[_0x25e7('0x2b')](_0x148544['interface'])?util['format']('SIP/%s',_0x148544[_0x25e7('0x2c')]):_0x148544[_0x25e7('0x2d')];return _0x4ba5d0;});for(var _0x1fb424 in _0xaae1cc){if(_0xaae1cc['hasOwnProperty'](_0x1fb424)){if(!_0x563d89[_0x1fb424]){delete _0xaae1cc[_0x1fb424];}}}}function clearVoiceCallReports(_0x4ee0de){_0x4ee0de['total']=0x0;_0x4ee0de[_0x25e7('0x2e')]=0x0;_0x4ee0de[_0x25e7('0x2f')]=0x0;_0x4ee0de[_0x25e7('0x30')]=0x0;_0x4ee0de[_0x25e7('0x31')]=0x0;}function clearCampaigns(_0x25bf8f){if(!_[_0x25e7('0x32')](_0x25bf8f)){for(var _0x3ea6a5 in _0x25bf8f){if(_0x25bf8f[_0x25e7('0x29')](_0x3ea6a5)){_0x25bf8f[_0x3ea6a5]['ivrTotalCallsDays']=0x0;_0x25bf8f[_0x3ea6a5][_0x25e7('0x33')]=0x0;}}}}function clearVoiceQueues(_0x30b200){if(!_[_0x25e7('0x32')](_0x30b200)){for(var _0x264a75 in _0x30b200){if(_0x30b200[_0x25e7('0x29')](_0x264a75)){_0x30b200[_0x264a75][_0x25e7('0x34')]=0x0;_0x30b200[_0x264a75]['answered']=0x0;_0x30b200[_0x264a75][_0x25e7('0x35')]=0x0;_0x30b200[_0x264a75][_0x25e7('0x36')]=0x0;_0x30b200[_0x264a75][_0x25e7('0x2f')]=0x0;_0x30b200[_0x264a75][_0x25e7('0x30')]=0x0;_0x30b200[_0x264a75][_0x25e7('0x31')]=0x0;_0x30b200[_0x264a75][_0x25e7('0x37')]=0x0;_0x30b200[_0x264a75][_0x25e7('0x38')]=0x0;_0x30b200[_0x264a75][_0x25e7('0x39')]=0x0;_0x30b200[_0x264a75][_0x25e7('0x3a')]=0x0;_0x30b200[_0x264a75][_0x25e7('0x3b')]=0x0;_0x30b200[_0x264a75][_0x25e7('0x3c')]=0x0;_0x30b200[_0x264a75]['outboundDropCallsDayTimeout']=0x0;_0x30b200[_0x264a75][_0x25e7('0x3d')]=0x0;_0x30b200[_0x264a75][_0x25e7('0x3e')]=0x0;_0x30b200[_0x264a75][_0x25e7('0x3f')]=0x0;_0x30b200[_0x264a75][_0x25e7('0x40')]=0x0;_0x30b200[_0x264a75][_0x25e7('0x41')]=0x0;_0x30b200[_0x264a75]['outboundAnswerAgiCallsDay']=0x0;_0x30b200[_0x264a75][_0x25e7('0x42')]=0x0;_0x30b200[_0x264a75][_0x25e7('0x43')]=!![];}}}}Realtime[_0x25e7('0x44')][_0x25e7('0x45')]=function(_0x202352,_0x1c710c){for(var _0x2a0a43 in _0x1c710c){if(_0x202352[_0x25e7('0x29')](_0x2a0a43)){_0x202352[_0x2a0a43]=_0x1c710c[_0x2a0a43];}}};Realtime[_0x25e7('0x44')][_0x25e7('0x46')]=function(){var _0xdfea81=this;return function(_0x3e0209){if(_0x3e0209){freeIsNotKeyAgent(_0x3e0209,_0xdfea81[_0x25e7('0x13')]);for(var _0x52eb4e=0x0,_0x1a0c2e={},_0x1ebef6={};_0x52eb4e<_0x3e0209[_0x25e7('0x47')];_0x52eb4e+=0x1){_0x1a0c2e=_0x3e0209[_0x52eb4e];var _0x3f5a16=_[_0x25e7('0x2b')](_0x1a0c2e['interface'])?util[_0x25e7('0x2a')]('SIP/%s',_0x1a0c2e[_0x25e7('0x2c')]):_0x1a0c2e[_0x25e7('0x2d')];if(_[_0x25e7('0x48')](_0xdfea81[_0x25e7('0x13')][_0x3f5a16])){_0xdfea81[_0x25e7('0x13')][_0x3f5a16]=new Agent(_0x1a0c2e);}else{_0xdfea81[_0x25e7('0x45')](_0xdfea81[_0x25e7('0x13')][_0x3f5a16],_0x1a0c2e);}}}return _0xdfea81[_0x25e7('0x13')];};};Realtime[_0x25e7('0x44')][_0x25e7('0x49')]=function(){var _0x21be3d=this;return function(_0x3c1cee){if(_0x3c1cee){freeIsNotKeySip(_0x3c1cee,_0x21be3d[_0x25e7('0x14')]);for(var _0x5cd5d3=0x0,_0x320742={},_0x10641a={};_0x5cd5d3<_0x3c1cee[_0x25e7('0x47')];_0x5cd5d3+=0x1){_0x320742=_0x3c1cee[_0x5cd5d3];if(_[_0x25e7('0x48')](_0x21be3d['telephones'][util['format'](_0x25e7('0x4a'),_0x320742[_0x25e7('0x2c')])])){_0x21be3d[_0x25e7('0x14')][util[_0x25e7('0x2a')](_0x25e7('0x4a'),_0x320742[_0x25e7('0x2c')])]=new Telephone(_0x320742);}else{_0x21be3d[_0x25e7('0x45')](_0x21be3d[_0x25e7('0x14')][util[_0x25e7('0x2a')](_0x25e7('0x4a'),_0x320742[_0x25e7('0x2c')])],_0x320742);}}}return _0x21be3d[_0x25e7('0x14')];};};Realtime['prototype'][_0x25e7('0x4b')]=function(){var _0x1e178f=this;return function(_0x4d90b8){if(_0x4d90b8){freeIsNotKeySip(_0x4d90b8,_0x1e178f[_0x25e7('0x4c')]);for(var _0x2ea9cd=0x0,_0x558817={},_0x53c8e2={};_0x2ea9cd<_0x4d90b8[_0x25e7('0x47')];_0x2ea9cd+=0x1){_0x558817=_0x4d90b8[_0x2ea9cd];if(_[_0x25e7('0x48')](_0x1e178f[_0x25e7('0x4c')][util[_0x25e7('0x2a')](_0x25e7('0x4a'),_0x558817[_0x25e7('0x2c')])])){_0x1e178f[_0x25e7('0x4c')][util[_0x25e7('0x2a')](_0x25e7('0x4a'),_0x558817[_0x25e7('0x2c')])]=new Trunk(_0x558817);}else{_0x1e178f[_0x25e7('0x45')](_0x1e178f[_0x25e7('0x4c')][util['format'](_0x25e7('0x4a'),_0x558817['name'])],_0x558817);}}}return _0x1e178f[_0x25e7('0x4c')];};};Realtime['prototype'][_0x25e7('0x4d')]=function(){var _0x16d50d=this;return function(_0x3adf5a){if(_0x3adf5a){freeIsNotKey(_0x3adf5a,_0x16d50d[_0x25e7('0x15')],_0x25e7('0x2c'));for(var _0x115dde=0x0,_0x1b80a5={},_0x114756={};_0x115dde<_0x3adf5a[_0x25e7('0x47')];_0x115dde+=0x1){_0x1b80a5=_0x3adf5a[_0x115dde];if(_[_0x25e7('0x48')](_0x16d50d['voiceQueues'][_0x1b80a5[_0x25e7('0x2c')]])){_0x16d50d[_0x25e7('0x15')][_0x1b80a5['name']]=new VoiceQueue(_0x1b80a5);}else{_0x16d50d[_0x25e7('0x45')](_0x16d50d[_0x25e7('0x15')][_0x1b80a5[_0x25e7('0x2c')]],_0x1b80a5);}}}return _0x16d50d[_0x25e7('0x15')];};};Realtime['prototype']['initTriggers']=function(){var _0x46eee1=this;return function(_0x11ed81){if(_0x11ed81){freeIsNotKey(_0x11ed81,_0x46eee1['triggers'],'id');for(var _0x1d284f=0x0,_0x50e451={},_0x10b47d={};_0x1d284f<_0x11ed81['length'];_0x1d284f+=0x1){_0x50e451=_0x11ed81[_0x1d284f];if(_[_0x25e7('0x48')](_0x46eee1[_0x25e7('0x16')][_0x50e451['id']])){_0x46eee1[_0x25e7('0x16')][_0x50e451['id']]=new Trigger(_0x50e451);}else{_0x46eee1[_0x25e7('0x45')](_0x46eee1[_0x25e7('0x16')][_0x50e451['id']],_0x50e451);}}}return _0x46eee1[_0x25e7('0x16')];};};Realtime[_0x25e7('0x44')][_0x25e7('0x4e')]=function(){var _0x2ebc21=this;return function(_0x3044b8){if(_0x3044b8){freeIsNotKey(_0x3044b8,_0x2ebc21[_0x25e7('0x18')],'id');for(var _0x28aa57=0x0,_0x3b45e0={},_0x2727a0={};_0x28aa57<_0x3044b8[_0x25e7('0x47')];_0x28aa57+=0x1){_0x3b45e0=_0x3044b8[_0x28aa57];if(_[_0x25e7('0x48')](_0x2ebc21[_0x25e7('0x18')][_0x3b45e0['id']])){_0x2ebc21[_0x25e7('0x18')][_0x3b45e0['id']]=new Template(_0x3b45e0);}else{_0x2ebc21[_0x25e7('0x45')](_0x2ebc21[_0x25e7('0x18')][_0x3b45e0['id']],_0x3b45e0);}}}return _0x2ebc21[_0x25e7('0x18')];};};Realtime[_0x25e7('0x44')]['initZendeskAccounts']=function(){var _0x149aaa=this;return function(_0x409a86){if(_0x409a86){freeIsNotKey(_0x409a86,_0x149aaa[_0x25e7('0x1e')],'id');for(var _0x58d5c8=0x0,_0x5b93b7={},_0x59a709={};_0x58d5c8<_0x409a86[_0x25e7('0x47')];_0x58d5c8+=0x1){_0x5b93b7=_0x409a86[_0x58d5c8];if(_[_0x25e7('0x48')](_0x149aaa[_0x25e7('0x1e')][_0x5b93b7['id']])){_0x149aaa['zendeskAccounts'][_0x5b93b7['id']]=new ZendeskAccount(_0x5b93b7);}else{_0x149aaa[_0x25e7('0x45')](_0x149aaa[_0x25e7('0x1e')][_0x5b93b7['id']],_0x5b93b7);}}}return _0x149aaa[_0x25e7('0x1e')];};};Realtime[_0x25e7('0x44')][_0x25e7('0x4f')]=function(){var _0x37ba63=this;return function(_0x2a0a62){if(_0x2a0a62){freeIsNotKey(_0x2a0a62,_0x37ba63[_0x25e7('0x1f')],'id');for(var _0x137ee8=0x0,_0x3be351={},_0x279b82={};_0x137ee8<_0x2a0a62[_0x25e7('0x47')];_0x137ee8+=0x1){_0x3be351=_0x2a0a62[_0x137ee8];if(_['isUndefined'](_0x37ba63[_0x25e7('0x1f')][_0x3be351['id']])){_0x37ba63['salesforceAccounts'][_0x3be351['id']]=new SalesforceAccount(_0x3be351);}else{_0x37ba63[_0x25e7('0x45')](_0x37ba63[_0x25e7('0x1f')][_0x3be351['id']],_0x3be351);}}}return _0x37ba63['salesforceAccounts'];};};Realtime[_0x25e7('0x44')][_0x25e7('0x50')]=function(){var _0x44200c=this;return function(_0x5859ad){if(_0x5859ad){freeIsNotKey(_0x5859ad,_0x44200c[_0x25e7('0x21')],'id');for(var _0x49b2c6=0x0,_0x47ed32={},_0x5b4b4e={};_0x49b2c6<_0x5859ad[_0x25e7('0x47')];_0x49b2c6+=0x1){_0x47ed32=_0x5859ad[_0x49b2c6];if(_[_0x25e7('0x48')](_0x44200c[_0x25e7('0x21')][_0x47ed32['id']])){_0x44200c[_0x25e7('0x21')][_0x47ed32['id']]=new FreshdeskAccount(_0x47ed32);}else{_0x44200c['mergeFromDatabase'](_0x44200c[_0x25e7('0x21')][_0x47ed32['id']],_0x47ed32);}}}return _0x44200c['freshdeskAccounts'];};};Realtime[_0x25e7('0x44')][_0x25e7('0x51')]=function(){var _0x5cfb15=this;return function(_0x4950e0){if(_0x4950e0){freeIsNotKey(_0x4950e0,_0x5cfb15[_0x25e7('0x52')],'id');for(var _0x498e18=0x0,_0x27daa7={},_0x496133={};_0x498e18<_0x4950e0['length'];_0x498e18+=0x1){_0x27daa7=_0x4950e0[_0x498e18];if(_['isUndefined'](_0x5cfb15[_0x25e7('0x52')][_0x27daa7['id']])){_0x5cfb15[_0x25e7('0x52')][_0x27daa7['id']]=new ZohoAccount(_0x27daa7);}else{_0x5cfb15[_0x25e7('0x45')](_0x5cfb15['zohoAccounts'][_0x27daa7['id']],_0x27daa7);}}}return _0x5cfb15[_0x25e7('0x52')];};};Realtime[_0x25e7('0x44')][_0x25e7('0x53')]=function(){var _0x59da6b=this;return function(_0x1d9fc1){if(_0x1d9fc1){freeIsNotKey(_0x1d9fc1,_0x59da6b[_0x25e7('0x22')],'id');for(var _0xd1b9da=0x0,_0x581606={},_0x2caa4d={};_0xd1b9da<_0x1d9fc1['length'];_0xd1b9da+=0x1){_0x581606=_0x1d9fc1[_0xd1b9da];if(_[_0x25e7('0x48')](_0x59da6b[_0x25e7('0x22')][_0x581606['id']])){_0x59da6b[_0x25e7('0x22')][_0x581606['id']]=new DeskAccount(_0x581606);}else{_0x59da6b[_0x25e7('0x45')](_0x59da6b[_0x25e7('0x22')][_0x581606['id']],_0x581606);}}}return _0x59da6b[_0x25e7('0x22')];};};Realtime[_0x25e7('0x44')][_0x25e7('0x54')]=function(){var _0x2a759f=this;return function(_0x2831be){if(_0x2831be){freeIsNotKey(_0x2831be,_0x2a759f[_0x25e7('0x20')],'id');for(var _0x3cc048=0x0,_0x93cf89={},_0x4fbff3={};_0x3cc048<_0x2831be['length'];_0x3cc048+=0x1){_0x93cf89=_0x2831be[_0x3cc048];if(_[_0x25e7('0x48')](_0x2a759f[_0x25e7('0x20')][_0x93cf89['id']])){_0x2a759f['sugarcrmAccounts'][_0x93cf89['id']]=new SugarcrmAccount(_0x93cf89);}else{_0x2a759f[_0x25e7('0x45')](_0x2a759f['sugarcrmAccounts'][_0x93cf89['id']],_0x93cf89);}}}return _0x2a759f[_0x25e7('0x20')];};};Realtime[_0x25e7('0x44')][_0x25e7('0x55')]=function(){var _0x1d33e3=this;return function(_0x4f4e2b){if(_0x4f4e2b){freeIsNotKey(_0x4f4e2b,_0x1d33e3['vtigerAccounts'],'id');for(var _0xc84b72=0x0,_0x3b995e={},_0x541de7={};_0xc84b72<_0x4f4e2b[_0x25e7('0x47')];_0xc84b72+=0x1){_0x3b995e=_0x4f4e2b[_0xc84b72];if(_[_0x25e7('0x48')](_0x1d33e3['vtigerAccounts'][_0x3b995e['id']])){_0x1d33e3[_0x25e7('0x23')][_0x3b995e['id']]=new VtigerAccount(_0x3b995e);}else{_0x1d33e3['mergeFromDatabase'](_0x1d33e3[_0x25e7('0x23')][_0x3b995e['id']],_0x3b995e);}}}return _0x1d33e3['vtigerAccounts'];};};Realtime[_0x25e7('0x44')][_0x25e7('0x56')]=function(){var _0xd774a1=this;return function(_0x422f6a){if(_0x422f6a){freeIsNotKey(_0x422f6a,_0xd774a1[_0x25e7('0x24')],'id');for(var _0x2b61df=0x0,_0x40ae50={},_0x1cd96e={};_0x2b61df<_0x422f6a[_0x25e7('0x47')];_0x2b61df+=0x1){_0x40ae50=_0x422f6a[_0x2b61df];if(_[_0x25e7('0x48')](_0xd774a1[_0x25e7('0x24')][_0x40ae50['id']])){_0xd774a1[_0x25e7('0x24')][_0x40ae50['id']]=new ServicenowAccount(_0x40ae50);}else{_0xd774a1[_0x25e7('0x45')](_0xd774a1[_0x25e7('0x24')][_0x40ae50['id']],_0x40ae50);}}}return _0xd774a1[_0x25e7('0x24')];};};Realtime['prototype'][_0x25e7('0x57')]=function(){var _0x5ba53f=this;return function(_0x40a8fd){if(_0x40a8fd){freeIsNotKey(_0x40a8fd,_0x5ba53f[_0x25e7('0x25')],'id');for(var _0x2fbfc9=0x0,_0x1de7bb={},_0x10fcba={};_0x2fbfc9<_0x40a8fd[_0x25e7('0x47')];_0x2fbfc9+=0x1){_0x1de7bb=_0x40a8fd[_0x2fbfc9];if(_['isUndefined'](_0x5ba53f[_0x25e7('0x25')][_0x1de7bb['id']])){_0x5ba53f[_0x25e7('0x25')][_0x1de7bb['id']]=new Dynamics365Account(_0x1de7bb);}else{_0x5ba53f['mergeFromDatabase'](_0x5ba53f['dynamics365Accounts'][_0x1de7bb['id']],_0x1de7bb);}}}return _0x5ba53f['dynamics365Accounts'];};};Realtime[_0x25e7('0x44')][_0x25e7('0x58')]=function(){var _0x33c4c8=this;return function(_0x5231de){if(_0x5231de){freeIsNotKey(_0x5231de,_0x33c4c8[_0x25e7('0x26')],'id');for(var _0x2b06be=0x0,_0x289f7a={},_0x17fa1f={};_0x2b06be<_0x5231de[_0x25e7('0x47')];_0x2b06be+=0x1){_0x289f7a=_0x5231de[_0x2b06be];if(_['isUndefined'](_0x33c4c8[_0x25e7('0x26')][_0x289f7a['id']])){_0x33c4c8[_0x25e7('0x26')][_0x289f7a['id']]=new FreshsalesAccount(_0x289f7a);}else{_0x33c4c8[_0x25e7('0x45')](_0x33c4c8[_0x25e7('0x26')][_0x289f7a['id']],_0x289f7a);}}}return _0x33c4c8[_0x25e7('0x26')];};};Realtime[_0x25e7('0x44')][_0x25e7('0x59')]=function(){var _0x42a330=this;return function(_0x1c5af1){for(var _0x4efacc=0x0;_0x4efacc<_0x1c5af1[_0x25e7('0x47')];_0x4efacc+=0x1){_[_0x25e7('0x5a')](_0x42a330[_0x25e7('0x15')][_0x1c5af1[_0x4efacc][_0x25e7('0x2c')]],_0x1c5af1[_0x4efacc]);}return _0x42a330[_0x25e7('0x15')];};};Realtime[_0x25e7('0x44')][_0x25e7('0x5b')]=function(){var _0x2fc13e=this;return function(_0x3a4e5e){clearVoiceQueues(_0x2fc13e[_0x25e7('0x15')]);if(_0x3a4e5e){_0x3a4e5e=_['groupBy'](_0x3a4e5e,_0x25e7('0x5c'));for(var _0x160fd0 in _0x3a4e5e){if(_0x3a4e5e['hasOwnProperty'](_0x160fd0)){var _0x29c85c={};for(var _0x35aac5=0x0;_0x35aac5<_0x3a4e5e[_0x160fd0][_0x25e7('0x47')];_0x35aac5+=0x1){var _0x391040=_0x3a4e5e[_0x160fd0][_0x35aac5][_0x25e7('0x5d')];if(_0x2fc13e[_0x25e7('0x15')][_0x391040]){if(_0x3a4e5e[_0x160fd0][_0x35aac5][_0x25e7('0x5e')]){_0x2fc13e[_0x25e7('0x15')][_0x391040][_0x25e7('0x35')]+=0x1;}if(_0x3a4e5e[_0x160fd0][_0x35aac5]['queuecallerabandon']){_0x2fc13e[_0x25e7('0x15')][_0x391040]['abandoned']+=0x1;}_0x2fc13e[_0x25e7('0x15')][_0x391040][_0x25e7('0x2f')]+=moment(_0x3a4e5e[_0x160fd0][_0x35aac5][_0x25e7('0x5f')])[_0x25e7('0x60')](moment(_0x3a4e5e[_0x160fd0][_0x35aac5][_0x25e7('0x61')]),'seconds')||0x0;if(_0x35aac5===_0x3a4e5e[_0x160fd0]['length']-0x1){_0x2fc13e[_0x25e7('0x15')][_0x391040]['sumDuration']+=moment(_0x3a4e5e[_0x160fd0][_0x35aac5][_0x25e7('0x62')]||_0x3a4e5e[_0x160fd0][_0x35aac5][_0x25e7('0x63')]||_0x3a4e5e[_0x160fd0][_0x35aac5][_0x25e7('0x64')])[_0x25e7('0x60')](moment(_0x3a4e5e[_0x160fd0][_0x35aac5][_0x25e7('0x61')]),_0x25e7('0x65'))||0x0;_0x2fc13e[_0x25e7('0x15')][_0x391040][_0x25e7('0x34')]+=0x1;if(_0x3a4e5e[_0x160fd0][_0x35aac5][_0x25e7('0x66')]){_0x2fc13e[_0x25e7('0x15')][_0x391040][_0x25e7('0x2e')]+=0x1;_0x2fc13e[_0x25e7('0x15')][_0x391040][_0x25e7('0x31')]+=moment(_0x3a4e5e[_0x160fd0][_0x35aac5][_0x25e7('0x62')])[_0x25e7('0x60')](moment(_0x3a4e5e[_0x160fd0][_0x35aac5][_0x25e7('0x5f')]),_0x25e7('0x65'))||0x0;}}else{_0x2fc13e['voiceQueues'][_0x391040][_0x25e7('0x30')]+=_0x2fc13e[_0x25e7('0x15')][_0x391040][_0x25e7('0x2f')]||0x0;}}}}}}return _0x2fc13e[_0x25e7('0x15')];};};Realtime[_0x25e7('0x44')][_0x25e7('0x67')]=function(){var _0x174b50=this;return function(_0x4bb5b9){clearVoiceCallReports(_0x174b50[_0x25e7('0x19')]);if(_0x4bb5b9){for(var _0x542398=0x0;_0x542398<_0x4bb5b9[_0x25e7('0x47')];_0x542398+=0x1){_0x174b50['outbound'][_0x25e7('0x34')]+=0x1;_0x174b50[_0x25e7('0x19')][_0x25e7('0x30')]+=_0x4bb5b9[_0x542398][_0x25e7('0x68')];if(_0x4bb5b9[_0x542398][_0x25e7('0x69')]===_0x25e7('0x6a')){_0x174b50[_0x25e7('0x19')][_0x25e7('0x2e')]+=0x1;_0x174b50[_0x25e7('0x19')][_0x25e7('0x2f')]+=_0x4bb5b9[_0x542398][_0x25e7('0x68')]-_0x4bb5b9[_0x542398][_0x25e7('0x6b')]||0x0;_0x174b50['outbound'][_0x25e7('0x31')]+=_0x4bb5b9[_0x542398][_0x25e7('0x6b')];}}}return _0x174b50[_0x25e7('0x19')];};};Realtime[_0x25e7('0x44')][_0x25e7('0x6c')]=function(){var _0x100814=this;return function(_0x38b8b3){if(_0x38b8b3){freeIsNotKey(_0x38b8b3,_0x100814[_0x25e7('0x17')],'name');for(var _0x15440c=0x0,_0x1f9f2d={};_0x15440c<_0x38b8b3[_0x25e7('0x47')];_0x15440c+=0x1){_0x1f9f2d=_0x38b8b3[_0x15440c];if(_[_0x25e7('0x48')](_0x100814['campaigns'][_0x1f9f2d['name']])){_0x100814['campaigns'][_0x1f9f2d['name']]=new Campaign(_0x1f9f2d);}else{_0x100814[_0x25e7('0x45')](_0x100814['campaigns'][_0x1f9f2d[_0x25e7('0x2c')]],_0x1f9f2d);_0x100814[_0x25e7('0x17')][_0x1f9f2d[_0x25e7('0x2c')]]['dialQueueProject']=_0x1f9f2d[_0x25e7('0x6d')]?_0x1f9f2d[_0x25e7('0x6d')][_0x25e7('0x2c')]:undefined;}}}return _0x100814[_0x25e7('0x17')];};};Realtime[_0x25e7('0x44')][_0x25e7('0x6e')]=function(){var _0x19270a=this;return function(_0x723a21){if(_0x723a21){freeIsNotKey(_0x723a21,_0x19270a['voiceExtensions'],'id');for(var _0x1a0cd8=0x0,_0x1978f6={};_0x1a0cd8<_0x723a21[_0x25e7('0x47')];_0x1a0cd8+=0x1){_0x1978f6=_0x723a21[_0x1a0cd8];if(_[_0x25e7('0x48')](_0x19270a[_0x25e7('0x1a')][_0x1978f6['id']])){_0x19270a[_0x25e7('0x1a')][_0x1978f6['id']]=new VoiceExtension(_0x1978f6);}else{_0x19270a[_0x25e7('0x45')](_0x19270a[_0x25e7('0x1a')][_0x1978f6['id']],_0x1978f6);}}}return _0x19270a[_0x25e7('0x1a')];};};Realtime['prototype'][_0x25e7('0x6f')]=function(){var _0x14219c=this;return function(_0xb5f58f){clearCampaigns(_0x14219c[_0x25e7('0x17')]);for(var _0x4b4ad5=0x0;_0x4b4ad5<_0xb5f58f['length'];_0x4b4ad5+=0x1){_[_0x25e7('0x5a')](_0x14219c[_0x25e7('0x17')][_0xb5f58f[_0x4b4ad5]['name']],_0xb5f58f[_0x4b4ad5]);}return _0x14219c[_0x25e7('0x17')];};};Realtime[_0x25e7('0x44')]['initFaxAccounts']=function(){var _0x5c4a52=this;return function(_0x127767){if(_0x127767){freeIsNotKey(_0x127767,_0x5c4a52[_0x25e7('0x27')],'id');for(var _0x5aa41e=0x0,_0x24c0e6={},_0x5c2cef={};_0x5aa41e<_0x127767['length'];_0x5aa41e+=0x1){_0x24c0e6=_0x127767[_0x5aa41e];if(_[_0x25e7('0x48')](_0x5c4a52['faxAccounts'][_0x24c0e6['id']])){_0x5c4a52[_0x25e7('0x27')][_0x24c0e6['id']]=new FaxAccount(_0x24c0e6);}else{_0x5c4a52[_0x25e7('0x45')](_0x5c4a52[_0x25e7('0x27')][_0x24c0e6['id']],_0x24c0e6);}}}return _0x5c4a52[_0x25e7('0x27')];};};module['exports']=Realtime;
\ No newline at end of file
+var _0x1700=['triggers','campaigns','templates','voiceExtensions','channels','settings','zendeskAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','mapKeys','hasOwnProperty','format','SIP/%s','name','isNil','interface','total','sumHoldTime','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','answered','unmanaged','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','initAgents','mergeFromDatabase','initTelephones','telephones','isUndefined','length','trunks','initVoiceQueues','initTriggers','initZendeskAccounts','salesforceAccounts','initFreshdeskAccounts','initDeskAccounts','initVtigerAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerabandon','queuecallerleaveAt','diff','queuecallerjoinAt','queuecallercompleteAt','seconds','queuecallercomplete','initVoiceCallReports','outbound','duration','disposition','ANSWERED','billableseconds','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','faxAccounts','exports','bluebird','util','lodash','moment','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/zohoAccount','../model/deskAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','agents','voiceQueues'];(function(_0x28d058,_0x31e92b){var _0x4001a5=function(_0x46d358){while(--_0x46d358){_0x28d058['push'](_0x28d058['shift']());}};_0x4001a5(++_0x31e92b);}(_0x1700,0xbe));var _0x0170=function(_0x5439bc,_0x1267ce){_0x5439bc=_0x5439bc-0x0;var _0x5a70a0=_0x1700[_0x5439bc];return _0x5a70a0;};'use strict';var BPromise=require(_0x0170('0x0'));var util=require(_0x0170('0x1'));var _=require(_0x0170('0x2'));var moment=require(_0x0170('0x3'));var Agent=require(_0x0170('0x4'));var Telephone=require(_0x0170('0x5'));var Trunk=require(_0x0170('0x6'));var VoiceQueue=require(_0x0170('0x7'));var Trigger=require(_0x0170('0x8'));var Template=require('../model/template');var Campaign=require(_0x0170('0x9'));var VoiceExtension=require(_0x0170('0xa'));var ZendeskAccount=require(_0x0170('0xb'));var SalesforceAccount=require(_0x0170('0xc'));var FreshdeskAccount=require(_0x0170('0xd'));var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x0170('0xe'));var DeskAccount=require(_0x0170('0xf'));var VtigerAccount=require('../model/vtigerAccount');var ServicenowAccount=require(_0x0170('0x10'));var Dynamics365Account=require(_0x0170('0x11'));var FreshsalesAccount=require(_0x0170('0x12'));var FaxAccount=require(_0x0170('0x13'));var Realtime=function(){this[_0x0170('0x14')]={};this['telephones']={};this['trunks']={};this[_0x0170('0x15')]={};this[_0x0170('0x16')]={};this[_0x0170('0x17')]={};this[_0x0170('0x18')]={};this['outbound']={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x0170('0x19')]={};this[_0x0170('0x1a')]={};this['queueChannels']={};this['outboundChannels']={};this['timers']={};this[_0x0170('0x1b')]={};this[_0x0170('0x1c')]={};this['salesforceAccounts']={};this[_0x0170('0x1d')]={};this[_0x0170('0x1e')]={};this[_0x0170('0x1f')]={};this[_0x0170('0x20')]={};this[_0x0170('0x21')]={};this[_0x0170('0x22')]={};this[_0x0170('0x23')]={};this[_0x0170('0x24')]={};this['faxAccounts']={};};function freeIsNotKey(_0x7f7270,_0xd9edf6,_0x1c617b){var _0x153d0c=_[_0x0170('0x25')](_0x7f7270,function(_0x7cc7ec,_0x360d9d){return _0x7cc7ec[_0x1c617b];});for(var _0x3e84ca in _0xd9edf6){if(_0xd9edf6[_0x0170('0x26')](_0x3e84ca)){if(!_0x153d0c[_0x3e84ca]){delete _0xd9edf6[_0x3e84ca];}}}}function freeIsNotKeySip(_0x2167f9,_0x53e34c){var _0x514610=_[_0x0170('0x25')](_0x2167f9,function(_0x5286cf,_0x5ed6e6){return util[_0x0170('0x27')](_0x0170('0x28'),_0x5286cf[_0x0170('0x29')]);});for(var _0x259dac in _0x53e34c){if(_0x53e34c[_0x0170('0x26')](_0x259dac)){if(!_0x514610[_0x259dac]){delete _0x53e34c[_0x259dac];}}}}function freeIsNotKeyAgent(_0x57ef29,_0x1f1141){var _0x4e1de0=_[_0x0170('0x25')](_0x57ef29,function(_0x2dad2e,_0x48e102){var _0x8204df=_[_0x0170('0x2a')](_0x2dad2e[_0x0170('0x2b')])?util[_0x0170('0x27')](_0x0170('0x28'),_0x2dad2e['name']):_0x2dad2e[_0x0170('0x2b')];return _0x8204df;});for(var _0x23f106 in _0x1f1141){if(_0x1f1141[_0x0170('0x26')](_0x23f106)){if(!_0x4e1de0[_0x23f106]){delete _0x1f1141[_0x23f106];}}}}function clearVoiceCallReports(_0x1cbeb4){_0x1cbeb4[_0x0170('0x2c')]=0x0;_0x1cbeb4['answered']=0x0;_0x1cbeb4[_0x0170('0x2d')]=0x0;_0x1cbeb4[_0x0170('0x2e')]=0x0;_0x1cbeb4[_0x0170('0x2f')]=0x0;}function clearCampaigns(_0x43c602){if(!_[_0x0170('0x30')](_0x43c602)){for(var _0x49ce58 in _0x43c602){if(_0x43c602['hasOwnProperty'](_0x49ce58)){_0x43c602[_0x49ce58][_0x0170('0x31')]=0x0;_0x43c602[_0x49ce58][_0x0170('0x32')]=0x0;}}}}function clearVoiceQueues(_0x2a8d01){if(!_[_0x0170('0x30')](_0x2a8d01)){for(var _0x257e3c in _0x2a8d01){if(_0x2a8d01[_0x0170('0x26')](_0x257e3c)){_0x2a8d01[_0x257e3c][_0x0170('0x2c')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x33')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x34')]=0x0;_0x2a8d01[_0x257e3c]['abandoned']=0x0;_0x2a8d01[_0x257e3c]['sumHoldTime']=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x2e')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x2f')]=0x0;_0x2a8d01[_0x257e3c]['outboundAnswerAgiCallsDay']=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x35')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x36')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x37')]=0x0;_0x2a8d01[_0x257e3c]['outboundNoSuchCallsDay']=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x38')]=0x0;_0x2a8d01[_0x257e3c]['outboundDropCallsDayTimeout']=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x39')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x3a')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x3b')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x3c')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x3d')]=0x0;_0x2a8d01[_0x257e3c]['outboundAnswerAgiCallsDay']=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x3e')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x3f')]=!![];}}}}Realtime[_0x0170('0x40')]['mergeFromDatabase']=function(_0x84bddc,_0x1eed29){for(var _0x4779b0 in _0x1eed29){if(_0x84bddc[_0x0170('0x26')](_0x4779b0)){_0x84bddc[_0x4779b0]=_0x1eed29[_0x4779b0];}}};Realtime[_0x0170('0x40')][_0x0170('0x41')]=function(){var _0x37a374=this;return function(_0x4e6694){if(_0x4e6694){freeIsNotKeyAgent(_0x4e6694,_0x37a374[_0x0170('0x14')]);for(var _0x21814a=0x0,_0x4fdfee={},_0x5a7a1d={};_0x21814a<_0x4e6694['length'];_0x21814a+=0x1){_0x4fdfee=_0x4e6694[_0x21814a];var _0x4cd9c2=_[_0x0170('0x2a')](_0x4fdfee[_0x0170('0x2b')])?util[_0x0170('0x27')](_0x0170('0x28'),_0x4fdfee['name']):_0x4fdfee[_0x0170('0x2b')];if(_['isUndefined'](_0x37a374[_0x0170('0x14')][_0x4cd9c2])){_0x37a374[_0x0170('0x14')][_0x4cd9c2]=new Agent(_0x4fdfee);}else{_0x37a374[_0x0170('0x42')](_0x37a374[_0x0170('0x14')][_0x4cd9c2],_0x4fdfee);}}}return _0x37a374[_0x0170('0x14')];};};Realtime[_0x0170('0x40')][_0x0170('0x43')]=function(){var _0x25fafe=this;return function(_0x45e4b7){if(_0x45e4b7){freeIsNotKeySip(_0x45e4b7,_0x25fafe[_0x0170('0x44')]);for(var _0x1cc44e=0x0,_0x31a2d5={},_0x49f339={};_0x1cc44e<_0x45e4b7['length'];_0x1cc44e+=0x1){_0x31a2d5=_0x45e4b7[_0x1cc44e];if(_[_0x0170('0x45')](_0x25fafe[_0x0170('0x44')][util[_0x0170('0x27')](_0x0170('0x28'),_0x31a2d5[_0x0170('0x29')])])){_0x25fafe[_0x0170('0x44')][util['format']('SIP/%s',_0x31a2d5[_0x0170('0x29')])]=new Telephone(_0x31a2d5);}else{_0x25fafe[_0x0170('0x42')](_0x25fafe[_0x0170('0x44')][util[_0x0170('0x27')]('SIP/%s',_0x31a2d5['name'])],_0x31a2d5);}}}return _0x25fafe[_0x0170('0x44')];};};Realtime['prototype']['initTrunks']=function(){var _0x444291=this;return function(_0x2f5dc1){if(_0x2f5dc1){freeIsNotKeySip(_0x2f5dc1,_0x444291['trunks']);for(var _0x3ed916=0x0,_0x31e7a6={},_0x4bdc93={};_0x3ed916<_0x2f5dc1[_0x0170('0x46')];_0x3ed916+=0x1){_0x31e7a6=_0x2f5dc1[_0x3ed916];if(_['isUndefined'](_0x444291['trunks'][util['format'](_0x0170('0x28'),_0x31e7a6['name'])])){_0x444291[_0x0170('0x47')][util[_0x0170('0x27')](_0x0170('0x28'),_0x31e7a6[_0x0170('0x29')])]=new Trunk(_0x31e7a6);}else{_0x444291['mergeFromDatabase'](_0x444291[_0x0170('0x47')][util[_0x0170('0x27')](_0x0170('0x28'),_0x31e7a6[_0x0170('0x29')])],_0x31e7a6);}}}return _0x444291['trunks'];};};Realtime[_0x0170('0x40')][_0x0170('0x48')]=function(){var _0x1fa324=this;return function(_0x40b5a4){if(_0x40b5a4){freeIsNotKey(_0x40b5a4,_0x1fa324[_0x0170('0x15')],'name');for(var _0x4f2bc3=0x0,_0x28bdeb={},_0x5765cc={};_0x4f2bc3<_0x40b5a4[_0x0170('0x46')];_0x4f2bc3+=0x1){_0x28bdeb=_0x40b5a4[_0x4f2bc3];if(_[_0x0170('0x45')](_0x1fa324[_0x0170('0x15')][_0x28bdeb[_0x0170('0x29')]])){_0x1fa324[_0x0170('0x15')][_0x28bdeb[_0x0170('0x29')]]=new VoiceQueue(_0x28bdeb);}else{_0x1fa324[_0x0170('0x42')](_0x1fa324[_0x0170('0x15')][_0x28bdeb[_0x0170('0x29')]],_0x28bdeb);}}}return _0x1fa324[_0x0170('0x15')];};};Realtime[_0x0170('0x40')][_0x0170('0x49')]=function(){var _0x21e298=this;return function(_0x3975ad){if(_0x3975ad){freeIsNotKey(_0x3975ad,_0x21e298[_0x0170('0x16')],'id');for(var _0x1a20ac=0x0,_0x359f20={},_0x1d2dcd={};_0x1a20ac<_0x3975ad[_0x0170('0x46')];_0x1a20ac+=0x1){_0x359f20=_0x3975ad[_0x1a20ac];if(_[_0x0170('0x45')](_0x21e298[_0x0170('0x16')][_0x359f20['id']])){_0x21e298['triggers'][_0x359f20['id']]=new Trigger(_0x359f20);}else{_0x21e298[_0x0170('0x42')](_0x21e298['triggers'][_0x359f20['id']],_0x359f20);}}}return _0x21e298[_0x0170('0x16')];};};Realtime[_0x0170('0x40')]['initTemplates']=function(){var _0x516b87=this;return function(_0x26a50e){if(_0x26a50e){freeIsNotKey(_0x26a50e,_0x516b87[_0x0170('0x18')],'id');for(var _0x403b71=0x0,_0x3aa695={},_0x2afaa6={};_0x403b71<_0x26a50e[_0x0170('0x46')];_0x403b71+=0x1){_0x3aa695=_0x26a50e[_0x403b71];if(_['isUndefined'](_0x516b87[_0x0170('0x18')][_0x3aa695['id']])){_0x516b87[_0x0170('0x18')][_0x3aa695['id']]=new Template(_0x3aa695);}else{_0x516b87[_0x0170('0x42')](_0x516b87['templates'][_0x3aa695['id']],_0x3aa695);}}}return _0x516b87['templates'];};};Realtime[_0x0170('0x40')][_0x0170('0x4a')]=function(){var _0x24ba6f=this;return function(_0x10fd17){if(_0x10fd17){freeIsNotKey(_0x10fd17,_0x24ba6f[_0x0170('0x1c')],'id');for(var _0xfb24b2=0x0,_0x1d1705={},_0x453f2c={};_0xfb24b2<_0x10fd17['length'];_0xfb24b2+=0x1){_0x1d1705=_0x10fd17[_0xfb24b2];if(_[_0x0170('0x45')](_0x24ba6f['zendeskAccounts'][_0x1d1705['id']])){_0x24ba6f[_0x0170('0x1c')][_0x1d1705['id']]=new ZendeskAccount(_0x1d1705);}else{_0x24ba6f['mergeFromDatabase'](_0x24ba6f[_0x0170('0x1c')][_0x1d1705['id']],_0x1d1705);}}}return _0x24ba6f[_0x0170('0x1c')];};};Realtime[_0x0170('0x40')]['initSalesforceAccounts']=function(){var _0x2cadbf=this;return function(_0x243722){if(_0x243722){freeIsNotKey(_0x243722,_0x2cadbf[_0x0170('0x4b')],'id');for(var _0x374bc2=0x0,_0x1ea8ed={},_0x2ce269={};_0x374bc2<_0x243722['length'];_0x374bc2+=0x1){_0x1ea8ed=_0x243722[_0x374bc2];if(_[_0x0170('0x45')](_0x2cadbf['salesforceAccounts'][_0x1ea8ed['id']])){_0x2cadbf[_0x0170('0x4b')][_0x1ea8ed['id']]=new SalesforceAccount(_0x1ea8ed);}else{_0x2cadbf[_0x0170('0x42')](_0x2cadbf['salesforceAccounts'][_0x1ea8ed['id']],_0x1ea8ed);}}}return _0x2cadbf[_0x0170('0x4b')];};};Realtime[_0x0170('0x40')][_0x0170('0x4c')]=function(){var _0x532590=this;return function(_0x1023a2){if(_0x1023a2){freeIsNotKey(_0x1023a2,_0x532590[_0x0170('0x1e')],'id');for(var _0x15d7c3=0x0,_0x33fd0b={},_0x811516={};_0x15d7c3<_0x1023a2[_0x0170('0x46')];_0x15d7c3+=0x1){_0x33fd0b=_0x1023a2[_0x15d7c3];if(_[_0x0170('0x45')](_0x532590['freshdeskAccounts'][_0x33fd0b['id']])){_0x532590[_0x0170('0x1e')][_0x33fd0b['id']]=new FreshdeskAccount(_0x33fd0b);}else{_0x532590[_0x0170('0x42')](_0x532590[_0x0170('0x1e')][_0x33fd0b['id']],_0x33fd0b);}}}return _0x532590['freshdeskAccounts'];};};Realtime[_0x0170('0x40')]['initZohoAccounts']=function(){var _0x5e78b0=this;return function(_0xb8af13){if(_0xb8af13){freeIsNotKey(_0xb8af13,_0x5e78b0[_0x0170('0x1f')],'id');for(var _0x49803f=0x0,_0x26134e={},_0xa820fa={};_0x49803f<_0xb8af13['length'];_0x49803f+=0x1){_0x26134e=_0xb8af13[_0x49803f];if(_[_0x0170('0x45')](_0x5e78b0[_0x0170('0x1f')][_0x26134e['id']])){_0x5e78b0['zohoAccounts'][_0x26134e['id']]=new ZohoAccount(_0x26134e);}else{_0x5e78b0[_0x0170('0x42')](_0x5e78b0[_0x0170('0x1f')][_0x26134e['id']],_0x26134e);}}}return _0x5e78b0[_0x0170('0x1f')];};};Realtime[_0x0170('0x40')][_0x0170('0x4d')]=function(){var _0x5dbc77=this;return function(_0x570b6a){if(_0x570b6a){freeIsNotKey(_0x570b6a,_0x5dbc77[_0x0170('0x20')],'id');for(var _0x1efd3d=0x0,_0x3a0daf={},_0x32fc32={};_0x1efd3d<_0x570b6a['length'];_0x1efd3d+=0x1){_0x3a0daf=_0x570b6a[_0x1efd3d];if(_[_0x0170('0x45')](_0x5dbc77[_0x0170('0x20')][_0x3a0daf['id']])){_0x5dbc77[_0x0170('0x20')][_0x3a0daf['id']]=new DeskAccount(_0x3a0daf);}else{_0x5dbc77[_0x0170('0x42')](_0x5dbc77[_0x0170('0x20')][_0x3a0daf['id']],_0x3a0daf);}}}return _0x5dbc77[_0x0170('0x20')];};};Realtime[_0x0170('0x40')]['initSugarcrmAccounts']=function(){var _0x1213ff=this;return function(_0x3a4e47){if(_0x3a4e47){freeIsNotKey(_0x3a4e47,_0x1213ff[_0x0170('0x1d')],'id');for(var _0x579747=0x0,_0x12c1db={},_0x1df477={};_0x579747<_0x3a4e47[_0x0170('0x46')];_0x579747+=0x1){_0x12c1db=_0x3a4e47[_0x579747];if(_['isUndefined'](_0x1213ff[_0x0170('0x1d')][_0x12c1db['id']])){_0x1213ff['sugarcrmAccounts'][_0x12c1db['id']]=new SugarcrmAccount(_0x12c1db);}else{_0x1213ff[_0x0170('0x42')](_0x1213ff[_0x0170('0x1d')][_0x12c1db['id']],_0x12c1db);}}}return _0x1213ff[_0x0170('0x1d')];};};Realtime[_0x0170('0x40')][_0x0170('0x4e')]=function(){var _0x4ad729=this;return function(_0x1ff44c){if(_0x1ff44c){freeIsNotKey(_0x1ff44c,_0x4ad729['vtigerAccounts'],'id');for(var _0x22b4ed=0x0,_0x4c9424={},_0x536410={};_0x22b4ed<_0x1ff44c[_0x0170('0x46')];_0x22b4ed+=0x1){_0x4c9424=_0x1ff44c[_0x22b4ed];if(_['isUndefined'](_0x4ad729['vtigerAccounts'][_0x4c9424['id']])){_0x4ad729[_0x0170('0x21')][_0x4c9424['id']]=new VtigerAccount(_0x4c9424);}else{_0x4ad729[_0x0170('0x42')](_0x4ad729['vtigerAccounts'][_0x4c9424['id']],_0x4c9424);}}}return _0x4ad729[_0x0170('0x21')];};};Realtime[_0x0170('0x40')]['initServicenowAccounts']=function(){var _0x35681d=this;return function(_0x16c20c){if(_0x16c20c){freeIsNotKey(_0x16c20c,_0x35681d[_0x0170('0x22')],'id');for(var _0x242952=0x0,_0x1539b1={},_0x5f2fed={};_0x242952<_0x16c20c[_0x0170('0x46')];_0x242952+=0x1){_0x1539b1=_0x16c20c[_0x242952];if(_[_0x0170('0x45')](_0x35681d[_0x0170('0x22')][_0x1539b1['id']])){_0x35681d[_0x0170('0x22')][_0x1539b1['id']]=new ServicenowAccount(_0x1539b1);}else{_0x35681d[_0x0170('0x42')](_0x35681d[_0x0170('0x22')][_0x1539b1['id']],_0x1539b1);}}}return _0x35681d[_0x0170('0x22')];};};Realtime['prototype'][_0x0170('0x4f')]=function(){var _0x373974=this;return function(_0x49e21d){if(_0x49e21d){freeIsNotKey(_0x49e21d,_0x373974[_0x0170('0x23')],'id');for(var _0x36d94b=0x0,_0x1fd89b={},_0x57152d={};_0x36d94b<_0x49e21d['length'];_0x36d94b+=0x1){_0x1fd89b=_0x49e21d[_0x36d94b];if(_[_0x0170('0x45')](_0x373974['dynamics365Accounts'][_0x1fd89b['id']])){_0x373974[_0x0170('0x23')][_0x1fd89b['id']]=new Dynamics365Account(_0x1fd89b);}else{_0x373974[_0x0170('0x42')](_0x373974['dynamics365Accounts'][_0x1fd89b['id']],_0x1fd89b);}}}return _0x373974['dynamics365Accounts'];};};Realtime['prototype'][_0x0170('0x50')]=function(){var _0x5148fc=this;return function(_0x48c710){if(_0x48c710){freeIsNotKey(_0x48c710,_0x5148fc[_0x0170('0x24')],'id');for(var _0x35d6fe=0x0,_0x1fcd1a={},_0x3fcda3={};_0x35d6fe<_0x48c710['length'];_0x35d6fe+=0x1){_0x1fcd1a=_0x48c710[_0x35d6fe];if(_[_0x0170('0x45')](_0x5148fc[_0x0170('0x24')][_0x1fcd1a['id']])){_0x5148fc[_0x0170('0x24')][_0x1fcd1a['id']]=new FreshsalesAccount(_0x1fcd1a);}else{_0x5148fc[_0x0170('0x42')](_0x5148fc[_0x0170('0x24')][_0x1fcd1a['id']],_0x1fcd1a);}}}return _0x5148fc[_0x0170('0x24')];};};Realtime['prototype'][_0x0170('0x51')]=function(){var _0xb8ff72=this;return function(_0x697383){for(var _0x183eff=0x0;_0x183eff<_0x697383[_0x0170('0x46')];_0x183eff+=0x1){_[_0x0170('0x52')](_0xb8ff72[_0x0170('0x15')][_0x697383[_0x183eff][_0x0170('0x29')]],_0x697383[_0x183eff]);}return _0xb8ff72[_0x0170('0x15')];};};Realtime['prototype'][_0x0170('0x53')]=function(){var _0x4d472e=this;return function(_0x3f9161){clearVoiceQueues(_0x4d472e[_0x0170('0x15')]);if(_0x3f9161){_0x3f9161=_[_0x0170('0x54')](_0x3f9161,_0x0170('0x55'));for(var _0x22e78b in _0x3f9161){if(_0x3f9161[_0x0170('0x26')](_0x22e78b)){var _0x1bc125={};for(var _0x227e0d=0x0;_0x227e0d<_0x3f9161[_0x22e78b][_0x0170('0x46')];_0x227e0d+=0x1){var _0x180bc7=_0x3f9161[_0x22e78b][_0x227e0d][_0x0170('0x56')];if(_0x4d472e['voiceQueues'][_0x180bc7]){if(_0x3f9161[_0x22e78b][_0x227e0d]['queuecallerexit']){_0x4d472e[_0x0170('0x15')][_0x180bc7][_0x0170('0x34')]+=0x1;}if(_0x3f9161[_0x22e78b][_0x227e0d][_0x0170('0x57')]){_0x4d472e['voiceQueues'][_0x180bc7]['abandoned']+=0x1;}_0x4d472e[_0x0170('0x15')][_0x180bc7][_0x0170('0x2d')]+=moment(_0x3f9161[_0x22e78b][_0x227e0d][_0x0170('0x58')])[_0x0170('0x59')](moment(_0x3f9161[_0x22e78b][_0x227e0d][_0x0170('0x5a')]),'seconds')||0x0;if(_0x227e0d===_0x3f9161[_0x22e78b][_0x0170('0x46')]-0x1){_0x4d472e['voiceQueues'][_0x180bc7][_0x0170('0x2e')]+=moment(_0x3f9161[_0x22e78b][_0x227e0d][_0x0170('0x5b')]||_0x3f9161[_0x22e78b][_0x227e0d]['queuecallerabandonAt']||_0x3f9161[_0x22e78b][_0x227e0d]['queuecallerexitAt'])[_0x0170('0x59')](moment(_0x3f9161[_0x22e78b][_0x227e0d][_0x0170('0x5a')]),_0x0170('0x5c'))||0x0;_0x4d472e['voiceQueues'][_0x180bc7][_0x0170('0x2c')]+=0x1;if(_0x3f9161[_0x22e78b][_0x227e0d][_0x0170('0x5d')]){_0x4d472e[_0x0170('0x15')][_0x180bc7][_0x0170('0x33')]+=0x1;_0x4d472e[_0x0170('0x15')][_0x180bc7][_0x0170('0x2f')]+=moment(_0x3f9161[_0x22e78b][_0x227e0d][_0x0170('0x5b')])[_0x0170('0x59')](moment(_0x3f9161[_0x22e78b][_0x227e0d][_0x0170('0x58')]),_0x0170('0x5c'))||0x0;}}else{_0x4d472e[_0x0170('0x15')][_0x180bc7][_0x0170('0x2e')]+=_0x4d472e[_0x0170('0x15')][_0x180bc7][_0x0170('0x2d')]||0x0;}}}}}}return _0x4d472e[_0x0170('0x15')];};};Realtime[_0x0170('0x40')][_0x0170('0x5e')]=function(){var _0x2fdd3e=this;return function(_0xf26e15){clearVoiceCallReports(_0x2fdd3e[_0x0170('0x5f')]);if(_0xf26e15){for(var _0x36a2b2=0x0;_0x36a2b2<_0xf26e15[_0x0170('0x46')];_0x36a2b2+=0x1){_0x2fdd3e[_0x0170('0x5f')][_0x0170('0x2c')]+=0x1;_0x2fdd3e['outbound'][_0x0170('0x2e')]+=_0xf26e15[_0x36a2b2][_0x0170('0x60')];if(_0xf26e15[_0x36a2b2][_0x0170('0x61')]===_0x0170('0x62')){_0x2fdd3e[_0x0170('0x5f')][_0x0170('0x33')]+=0x1;_0x2fdd3e[_0x0170('0x5f')]['sumHoldTime']+=_0xf26e15[_0x36a2b2][_0x0170('0x60')]-_0xf26e15[_0x36a2b2][_0x0170('0x63')]||0x0;_0x2fdd3e[_0x0170('0x5f')][_0x0170('0x2f')]+=_0xf26e15[_0x36a2b2]['billableseconds'];}}}return _0x2fdd3e[_0x0170('0x5f')];};};Realtime[_0x0170('0x40')]['initCampaigns']=function(){var _0x187305=this;return function(_0x4cbb0e){if(_0x4cbb0e){freeIsNotKey(_0x4cbb0e,_0x187305['campaigns'],_0x0170('0x29'));for(var _0x5d7129=0x0,_0x2ad658={};_0x5d7129<_0x4cbb0e[_0x0170('0x46')];_0x5d7129+=0x1){_0x2ad658=_0x4cbb0e[_0x5d7129];if(_['isUndefined'](_0x187305[_0x0170('0x17')][_0x2ad658['name']])){_0x187305[_0x0170('0x17')][_0x2ad658[_0x0170('0x29')]]=new Campaign(_0x2ad658);}else{_0x187305[_0x0170('0x42')](_0x187305['campaigns'][_0x2ad658[_0x0170('0x29')]],_0x2ad658);_0x187305[_0x0170('0x17')][_0x2ad658[_0x0170('0x29')]][_0x0170('0x64')]=_0x2ad658[_0x0170('0x65')]?_0x2ad658['SquareProject'][_0x0170('0x29')]:undefined;}}}return _0x187305[_0x0170('0x17')];};};Realtime[_0x0170('0x40')][_0x0170('0x66')]=function(){var _0x53e926=this;return function(_0x4d31c4){if(_0x4d31c4){freeIsNotKey(_0x4d31c4,_0x53e926[_0x0170('0x19')],'id');for(var _0x570b24=0x0,_0x144d0d={};_0x570b24<_0x4d31c4[_0x0170('0x46')];_0x570b24+=0x1){_0x144d0d=_0x4d31c4[_0x570b24];if(_['isUndefined'](_0x53e926[_0x0170('0x19')][_0x144d0d['id']])){_0x53e926['voiceExtensions'][_0x144d0d['id']]=new VoiceExtension(_0x144d0d);}else{_0x53e926[_0x0170('0x42')](_0x53e926['voiceExtensions'][_0x144d0d['id']],_0x144d0d);}}}return _0x53e926[_0x0170('0x19')];};};Realtime[_0x0170('0x40')][_0x0170('0x67')]=function(){var _0x3eaa70=this;return function(_0x32c11f){clearCampaigns(_0x3eaa70[_0x0170('0x17')]);for(var _0x4a4892=0x0;_0x4a4892<_0x32c11f['length'];_0x4a4892+=0x1){_['merge'](_0x3eaa70['campaigns'][_0x32c11f[_0x4a4892][_0x0170('0x29')]],_0x32c11f[_0x4a4892]);}return _0x3eaa70[_0x0170('0x17')];};};Realtime['prototype']['initFaxAccounts']=function(){var _0x3b1d20=this;return function(_0x2dc15a){if(_0x2dc15a){freeIsNotKey(_0x2dc15a,_0x3b1d20[_0x0170('0x68')],'id');for(var _0x30eb33=0x0,_0x37f31c={},_0x12c90e={};_0x30eb33<_0x2dc15a[_0x0170('0x46')];_0x30eb33+=0x1){_0x37f31c=_0x2dc15a[_0x30eb33];if(_[_0x0170('0x45')](_0x3b1d20['faxAccounts'][_0x37f31c['id']])){_0x3b1d20[_0x0170('0x68')][_0x37f31c['id']]=new FaxAccount(_0x37f31c);}else{_0x3b1d20[_0x0170('0x42')](_0x3b1d20[_0x0170('0x68')][_0x37f31c['id']],_0x37f31c);}}}return _0x3b1d20[_0x0170('0x68')];};};module[_0x0170('0x69')]=Realtime;
\ No newline at end of file
index d4eb0a8..0ec1015 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x243f=['queuecallerexitAt','create','match','getAgentByInternal','length','getCallType','split','calleridnum','outbound','voiceCallReport','destination','exten','lastdata','queue','context','from-voip-provider','callerid','from-sip','xcally-motion-preview','calleridpreview','originatecalleridnum','channel','destinationchannel','disposition','ANSWERED','connectedlinenum','calleridname','linkedid','transfers','transfereelinkedid','uniqueid','type','UserId','membername','monitor','monitors','monitorFilename','createdAt','connectedlinename','xcally-motion-dialer','isArray','forEach','startsWith','Local','substring','indexOf','lastIndexOf','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./userReport','realtime','agents','telephones','prototype','sync','xdr','disabled','voiceQueueReport','custom:voiceCallReport','bind','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindTransfer','attendedtransfer','attendedTransfer','findAgent','find','accountcode','name','isNil','interface','format','SIP/%s','assigned','lastAssignedTo','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit'];(function(_0x4d4277,_0x31a258){var _0x61626c=function(_0x40a6aa){while(--_0x40a6aa){_0x4d4277['push'](_0x4d4277['shift']());}};_0x61626c(++_0x31a258);}(_0x243f,0x143));var _0xf243=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0x243f[_0xbd08b4];return _0x314f1e;};'use strict';var _=require(_0xf243('0x0'));var moment=require(_0xf243('0x1'));var util=require(_0xf243('0x2'));var config=require(_0xf243('0x3'));var ami=require(_0xf243('0x4'));var RpcVoiceAgentReport=require(_0xf243('0x5'));var RpcVoiceCallReport=require(_0xf243('0x6'));var RpcVoiceDialReport=require(_0xf243('0x7'));var RpcMemberReport=require('../rpc/memberReport');var RpcVoiceQueueReport=require(_0xf243('0x8'));var RpcVoiceRecording=require(_0xf243('0x9'));var RpcVoiceTransferReport=require(_0xf243('0xa'));var VoiceQueueReport=require(_0xf243('0xb'));var VoiceCallReport=require(_0xf243('0xc'));var VoiceAgentReport=require(_0xf243('0xd'));var VoiceDialReport=require('./voiceDialReport');var UserReport=require(_0xf243('0xe'));function Report(_0x1bb777){this[_0xf243('0xf')]=_0x1bb777;this[_0xf243('0x10')]=_0x1bb777[_0xf243('0x10')];this[_0xf243('0x11')]=_0x1bb777[_0xf243('0x11')];}Report[_0xf243('0x12')][_0xf243('0x13')]=function(_0x3725cd){var _0x59a9e7=new VoiceQueueReport(this[_0xf243('0xf')]);var _0x3912fe=new VoiceAgentReport(this[_0xf243('0xf')]);var _0x5a4f84=new VoiceDialReport(this[_0xf243('0xf')]);var _0x24fb21=new VoiceCallReport(this[_0xf243('0xf')]);var _0x4a5027=new UserReport(this['realtime']);if(config[_0xf243('0x14')]&&config['xdr'][_0xf243('0x15')]){ami['on']('custom:voiceQueueReport',this[_0xf243('0x16')]['bind'](this));ami['on'](_0xf243('0x17'),this['voiceCallReport'][_0xf243('0x18')](this));ami['on']('custom:voiceAgentReport',this[_0xf243('0x19')][_0xf243('0x18')](this));ami['on'](_0xf243('0x1a'),this[_0xf243('0x1b')]['bind'](this));ami['on']('blindtransfer',this[_0xf243('0x1c')][_0xf243('0x18')](this));ami['on'](_0xf243('0x1d'),this[_0xf243('0x1e')][_0xf243('0x18')](this));}};Report['prototype'][_0xf243('0x1f')]=function(_0xff7128){var _0x4af39f;_0x4af39f=_[_0xf243('0x20')](this[_0xf243('0x10')],function(_0x438530){return _0x438530[_0xf243('0x21')]==_0xff7128||_0x438530[_0xf243('0x22')]==_0xff7128;});if(_[_0xf243('0x23')](_0x4af39f)){var _0x3801b6=_[_0xf243('0x20')](this['telephones'],function(_0x3fdff0){return _0x3fdff0['accountcode']==_0xff7128||_0x3fdff0['name']==_0xff7128;});if(_0x3801b6){_0x4af39f=_['find'](this[_0xf243('0x10')],function(_0x36da6c){return _0x36da6c[_0xf243('0x24')]==util[_0xf243('0x25')](_0xf243('0x26'),_0x3801b6[_0xf243('0x22')]);});}}return _0x4af39f;};Report[_0xf243('0x12')]['voiceQueueReport']=function(_0x4474d1){for(var _0x4bd66a=0x0;_0x4bd66a<_0x4474d1['length'];_0x4bd66a+=0x1){var _0x5512e0=this[_0xf243('0x1f')](_0x4474d1[_0x4bd66a]['connectedlinenum']);if(_0x5512e0){_0x4474d1[_0x4bd66a][_0xf243('0x21')]=_0x5512e0[_0xf243('0x21')];_0x4474d1[_0x4bd66a][_0xf243('0x27')]=!![];_0x4474d1[_0x4bd66a][_0xf243('0x28')]=_0x5512e0[_0xf243('0x22')];_0x4474d1[_0x4bd66a][_0xf243('0x24')]=_[_0xf243('0x23')](_0x5512e0[_0xf243('0x24')])?util[_0xf243('0x25')](_0xf243('0x26'),_0x5512e0[_0xf243('0x22')]):_0x5512e0[_0xf243('0x24')];if(_0x4474d1[_0x4bd66a][_0xf243('0x29')]){_0x4474d1[_0x4bd66a][_0xf243('0x2a')]=moment()['format'](_0xf243('0x2b'));}if(_0x4474d1[_0x4bd66a][_0xf243('0x2c')]){_0x4474d1[_0x4bd66a][_0xf243('0x2d')]=moment()[_0xf243('0x25')](_0xf243('0x2b'));}RpcMemberReport['voiceQueueReport'](_0x4474d1[_0x4bd66a]);}RpcVoiceQueueReport[_0xf243('0x2e')](_0x4474d1[_0x4bd66a]);}};function extractCalleridNumber(_0x501a7f){var _0x104c75=_0x501a7f[_0xf243('0x2f')](/<(.*?)>/);return _0x104c75?_0x104c75[0x1]:_0x501a7f;}Report[_0xf243('0x12')][_0xf243('0x30')]=function(_0x7e786){for(var _0x3bf86b=0x0;_0x3bf86b<Object['keys'](this[_0xf243('0x10')])[_0xf243('0x31')];_0x3bf86b++){var _0x46f026=Object['keys'](this[_0xf243('0x10')])[_0x3bf86b];var _0x4dccf3=this['agents'][_0x46f026];if(_0x4dccf3[_0xf243('0x21')]===Number(_0x7e786))return _0x4dccf3;}return null;};Report['prototype'][_0xf243('0x32')]=function(_0x2ed753){var _0x1b29fc=_0x2ed753['channel'][_0xf243('0x33')]('-')[0x0];var _0x1d890a=this[_0xf243('0x10')][_0x1b29fc];if(!_0x1d890a)_0x1d890a=this[_0xf243('0x30')](_0x2ed753[_0xf243('0x34')]);return!_0x1d890a?_0xf243('0x35'):'internal';};Report[_0xf243('0x12')][_0xf243('0x36')]=function(_0x25773a){_0x25773a[_0xf243('0x37')]=_0x25773a[_0xf243('0x37')]||_0x25773a[_0xf243('0x38')];if(_0x25773a['type']=='dialer'){_0x25773a['lastapplication']='queue';_0x25773a[_0xf243('0x39')]=_0x25773a[_0xf243('0x3a')];if(_0x25773a[_0xf243('0x3b')]==_0xf243('0x3c')){_0x25773a[_0xf243('0x21')]='';_0x25773a[_0xf243('0x37')]=extractCalleridNumber(_0x25773a[_0xf243('0x3d')]);}else if(_0x25773a['context']==_0xf243('0x3e')){if(_0x25773a['destination']==_0xf243('0x3f')){_0x25773a[_0xf243('0x37')]=extractCalleridNumber(_0x25773a[_0xf243('0x40')]);_0x25773a[_0xf243('0x34')]=_0x25773a[_0xf243('0x41')];_0x25773a['destinationchannel']=[_0x25773a[_0xf243('0x42')],_0x25773a[_0xf243('0x42')]=_0x25773a[_0xf243('0x43')]][0x0];_0x25773a[_0xf243('0x3d')]=_0x25773a[_0xf243('0x40')];}else{_0x25773a[_0xf243('0x37')]=_0x25773a[_0xf243('0x34')];_0x25773a[_0xf243('0x34')]=_0x25773a['originatecalleridnum'];if(_0x25773a[_0xf243('0x44')]==_0xf243('0x45')){_0x25773a['accountcode']=_0x25773a[_0xf243('0x46')];}else{_0x25773a[_0xf243('0x21')]='';}}}}else{_0x25773a[_0xf243('0x3d')]=util[_0xf243('0x25')]('\x22%s\x22\x20<%s>',_0x25773a[_0xf243('0x47')],_0x25773a[_0xf243('0x34')]);}if(RpcVoiceTransferReport['transfers'][_0x25773a[_0xf243('0x48')]]){var _0x24a3ba=RpcVoiceTransferReport[_0xf243('0x49')][_0x25773a['linkedid']];_0x24a3ba[_0xf243('0x4a')]=_0x25773a[_0xf243('0x4b')];RpcVoiceTransferReport[_0xf243('0x1c')](_0x24a3ba);delete RpcVoiceTransferReport[_0xf243('0x49')][_0x25773a[_0xf243('0x48')]];}if(_[_0xf243('0x23')](_0x25773a[_0xf243('0x4c')])){_0x25773a[_0xf243('0x4c')]=this[_0xf243('0x32')](_0x25773a);}if(_['isNil'](_0x25773a[_0xf243('0x4d')])){var _0xa8b860=_0x25773a[_0xf243('0x42')]['split']('-')[0x0];var _0x56287e=this[_0xf243('0x10')][_0xa8b860];if(!_0x56287e)_0x56287e=this[_0xf243('0x30')](_0x25773a[_0xf243('0x21')]);if(_0x56287e){_0x25773a[_0xf243('0x4d')]=_0x56287e['id'];_0x25773a[_0xf243('0x4e')]=_0x56287e[_0xf243('0x22')];}}RpcVoiceCallReport[_0xf243('0x2e')](_0x25773a);if(_0x25773a[_0xf243('0x4f')]){for(var _0x41ebee=0x0;_0x41ebee<_0x25773a[_0xf243('0x50')][_0xf243('0x31')];_0x41ebee+=0x1){_0x25773a[_0xf243('0x51')]=_0x25773a[_0xf243('0x50')][_0x41ebee]['filename'];_0x25773a[_0xf243('0x52')]=_0x25773a[_0xf243('0x50')][_0x41ebee][_0xf243('0x52')];if(_0x25773a[_0xf243('0x38')]==_0xf243('0x3f')){_0x25773a['calleridnum']=_0x25773a[_0xf243('0x46')];_0x25773a['calleridname']=_0x25773a[_0xf243('0x53')];_0x25773a[_0xf243('0x46')]=_0x25773a[_0xf243('0x21')];_0x25773a[_0xf243('0x53')]=_0x25773a[_0xf243('0x4e')];_0x25773a[_0xf243('0x38')]=_0x25773a['originatecalleridnum'];}else if(_0x25773a[_0xf243('0x38')]==_0xf243('0x54')){_0x25773a['calleridnum']=_0x25773a[_0xf243('0x37')];_0x25773a['exten']=_0x25773a[_0xf243('0x41')];}RpcVoiceRecording[_0xf243('0x2e')](_0x25773a);}}};Report[_0xf243('0x12')][_0xf243('0x19')]=function(_0x2f32e2){if(_[_0xf243('0x55')](_0x2f32e2)){_0x2f32e2[_0xf243('0x56')](function(_0x176ab5){RpcVoiceAgentReport[_0xf243('0x2e')](_0x176ab5);});}else{RpcVoiceAgentReport['create'](_0x2f32e2);}};Report['prototype'][_0xf243('0x1b')]=function(_0x75f0ec){RpcVoiceDialReport[_0xf243('0x2e')](_0x75f0ec);var _0x2daeb0;var _0xbffbd2;var _0x36c394=_0x75f0ec[_0xf243('0x42')];if(_[_0xf243('0x57')](_0x36c394,_0xf243('0x58'))){_0xbffbd2=_0x36c394[_0xf243('0x59')](_0x36c394[_0xf243('0x5a')]('/')+0x1,_0x36c394['indexOf']('@'));_0x2daeb0=_[_0xf243('0x20')](this[_0xf243('0x10')],function(_0x1726c0){return _0x1726c0['mobile']==_0xbffbd2||_0x1726c0['phone']==_0xbffbd2||_0x1726c0['accountcode']==_0xbffbd2;});}else{_0xbffbd2=_0x36c394[_0xf243('0x59')](_0x36c394[_0xf243('0x5a')]('/')+0x1,_0x36c394[_0xf243('0x5b')]('-'));_0x2daeb0=this[_0xf243('0x1f')](_0xbffbd2);}if(_0x2daeb0){_0x75f0ec[_0xf243('0x24')]=_[_0xf243('0x23')](_0x2daeb0[_0xf243('0x24')])?util[_0xf243('0x25')](_0xf243('0x26'),_0x2daeb0[_0xf243('0x22')]):_0x2daeb0[_0xf243('0x24')];_0x75f0ec[_0xf243('0x4e')]=_0x2daeb0['name'];_0x75f0ec['accountcode']=_0x2daeb0['accountcode'];RpcMemberReport['voiceDialReport'](_0x75f0ec);}};Report[_0xf243('0x12')][_0xf243('0x1c')]=function(_0x3bec2b){RpcVoiceTransferReport['transfers'][_0x3bec2b['transfererlinkedid']]=_0x3bec2b;};Report['prototype']['attendedTransfer']=function(_0x5acee4){RpcVoiceTransferReport['attendedTransfer'](_0x5acee4);};module['exports']=Report;
\ No newline at end of file
+var _0x599b=['connectedlinenum','\x22%s\x22\x20<%s>','calleridname','linkedid','transfers','transfereelinkedid','uniqueid','blindTransfer','monitorFilename','monitors','filename','createdAt','connectedlinename','membername','xcally-motion-dialer','forEach','startsWith','Local','substring','indexOf','mobile','phone','lastIndexOf','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','sync','xdr','disabled','custom:voiceCallReport','bind','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','attendedtransfer','attendedTransfer','prototype','findAgent','find','accountcode','name','isNil','format','SIP/%s','voiceQueueReport','length','assigned','lastAssignedTo','interface','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitAt','create','match','destination','exten','type','lastapplication','queue','lastdata','context','from-voip-provider','callerid','from-sip','calleridpreview','originatecalleridnum','destinationchannel','channel','calleridnum','disposition','ANSWERED'];(function(_0x5dd957,_0x3de3e7){var _0x58326c=function(_0x4c5e49){while(--_0x4c5e49){_0x5dd957['push'](_0x5dd957['shift']());}};_0x58326c(++_0x3de3e7);}(_0x599b,0x71));var _0xb599=function(_0x52787c,_0x35d76f){_0x52787c=_0x52787c-0x0;var _0x37e055=_0x599b[_0x52787c];return _0x37e055;};'use strict';var _=require(_0xb599('0x0'));var moment=require(_0xb599('0x1'));var util=require(_0xb599('0x2'));var config=require(_0xb599('0x3'));var ami=require(_0xb599('0x4'));var RpcVoiceAgentReport=require(_0xb599('0x5'));var RpcVoiceCallReport=require(_0xb599('0x6'));var RpcVoiceDialReport=require(_0xb599('0x7'));var RpcMemberReport=require(_0xb599('0x8'));var RpcVoiceQueueReport=require(_0xb599('0x9'));var RpcVoiceRecording=require(_0xb599('0xa'));var RpcVoiceTransferReport=require(_0xb599('0xb'));var VoiceQueueReport=require(_0xb599('0xc'));var VoiceCallReport=require(_0xb599('0xd'));var VoiceAgentReport=require(_0xb599('0xe'));var VoiceDialReport=require(_0xb599('0xf'));var UserReport=require(_0xb599('0x10'));function Report(_0x2f0309){this[_0xb599('0x11')]=_0x2f0309;this[_0xb599('0x12')]=_0x2f0309['agents'];this[_0xb599('0x13')]=_0x2f0309[_0xb599('0x13')];}Report['prototype'][_0xb599('0x14')]=function(_0x29f93a){var _0x4e66f6=new VoiceQueueReport(this['realtime']);var _0x41b8fc=new VoiceAgentReport(this[_0xb599('0x11')]);var _0x39db35=new VoiceDialReport(this[_0xb599('0x11')]);var _0x48d98d=new VoiceCallReport(this[_0xb599('0x11')]);var _0x1f93a7=new UserReport(this['realtime']);if(config[_0xb599('0x15')]&&config['xdr'][_0xb599('0x16')]){ami['on']('custom:voiceQueueReport',this['voiceQueueReport']['bind'](this));ami['on'](_0xb599('0x17'),this['voiceCallReport'][_0xb599('0x18')](this));ami['on'](_0xb599('0x19'),this[_0xb599('0x1a')][_0xb599('0x18')](this));ami['on'](_0xb599('0x1b'),this[_0xb599('0x1c')][_0xb599('0x18')](this));ami['on'](_0xb599('0x1d'),this['blindTransfer']['bind'](this));ami['on'](_0xb599('0x1e'),this[_0xb599('0x1f')]['bind'](this));}};Report[_0xb599('0x20')][_0xb599('0x21')]=function(_0x4fbb6e){var _0x2bc6fc;_0x2bc6fc=_[_0xb599('0x22')](this[_0xb599('0x12')],function(_0x2b9de6){return _0x2b9de6[_0xb599('0x23')]==_0x4fbb6e||_0x2b9de6[_0xb599('0x24')]==_0x4fbb6e;});if(_[_0xb599('0x25')](_0x2bc6fc)){var _0x197e51=_[_0xb599('0x22')](this[_0xb599('0x13')],function(_0x58d414){return _0x58d414[_0xb599('0x23')]==_0x4fbb6e||_0x58d414['name']==_0x4fbb6e;});if(_0x197e51){_0x2bc6fc=_[_0xb599('0x22')](this['agents'],function(_0x56aaa2){return _0x56aaa2['interface']==util[_0xb599('0x26')](_0xb599('0x27'),_0x197e51[_0xb599('0x24')]);});}}return _0x2bc6fc;};Report[_0xb599('0x20')][_0xb599('0x28')]=function(_0x197984){for(var _0x44c210=0x0;_0x44c210<_0x197984[_0xb599('0x29')];_0x44c210+=0x1){var _0x474c5c=this[_0xb599('0x21')](_0x197984[_0x44c210]['connectedlinenum']);if(_0x474c5c){_0x197984[_0x44c210][_0xb599('0x23')]=_0x474c5c[_0xb599('0x23')];_0x197984[_0x44c210][_0xb599('0x2a')]=!![];_0x197984[_0x44c210][_0xb599('0x2b')]=_0x474c5c[_0xb599('0x24')];_0x197984[_0x44c210][_0xb599('0x2c')]=_[_0xb599('0x25')](_0x474c5c[_0xb599('0x2c')])?util[_0xb599('0x26')]('SIP/%s',_0x474c5c['name']):_0x474c5c[_0xb599('0x2c')];if(_0x197984[_0x44c210]['queuecallercomplete']){_0x197984[_0x44c210][_0xb599('0x2d')]=moment()[_0xb599('0x26')](_0xb599('0x2e'));}if(_0x197984[_0x44c210]['queuecallerexit']){_0x197984[_0x44c210][_0xb599('0x2f')]=moment()['format'](_0xb599('0x2e'));}RpcMemberReport['voiceQueueReport'](_0x197984[_0x44c210]);}RpcVoiceQueueReport[_0xb599('0x30')](_0x197984[_0x44c210]);}};function extractCalleridNumber(_0x3935a6){var _0xa5b190=_0x3935a6[_0xb599('0x31')](/<(.*?)>/);return _0xa5b190?_0xa5b190[0x1]:_0x3935a6;}Report[_0xb599('0x20')]['voiceCallReport']=function(_0x5be1cd){_0x5be1cd[_0xb599('0x32')]=_0x5be1cd[_0xb599('0x32')]||_0x5be1cd[_0xb599('0x33')];if(_0x5be1cd[_0xb599('0x34')]=='dialer'){_0x5be1cd[_0xb599('0x35')]=_0xb599('0x36');_0x5be1cd[_0xb599('0x37')]=_0x5be1cd[_0xb599('0x36')];if(_0x5be1cd[_0xb599('0x38')]==_0xb599('0x39')){_0x5be1cd[_0xb599('0x23')]='';_0x5be1cd[_0xb599('0x32')]=extractCalleridNumber(_0x5be1cd[_0xb599('0x3a')]);}else if(_0x5be1cd[_0xb599('0x38')]==_0xb599('0x3b')){if(_0x5be1cd[_0xb599('0x32')]=='xcally-motion-preview'){_0x5be1cd['destination']=extractCalleridNumber(_0x5be1cd[_0xb599('0x3c')]);_0x5be1cd['calleridnum']=_0x5be1cd[_0xb599('0x3d')];_0x5be1cd[_0xb599('0x3e')]=[_0x5be1cd[_0xb599('0x3f')],_0x5be1cd[_0xb599('0x3f')]=_0x5be1cd[_0xb599('0x3e')]][0x0];_0x5be1cd[_0xb599('0x3a')]=_0x5be1cd[_0xb599('0x3c')];}else{_0x5be1cd[_0xb599('0x32')]=_0x5be1cd[_0xb599('0x40')];_0x5be1cd['calleridnum']=_0x5be1cd['originatecalleridnum'];if(_0x5be1cd[_0xb599('0x41')]==_0xb599('0x42')){_0x5be1cd[_0xb599('0x23')]=_0x5be1cd[_0xb599('0x43')];}else{_0x5be1cd[_0xb599('0x23')]='';}}}}else{_0x5be1cd[_0xb599('0x3a')]=util[_0xb599('0x26')](_0xb599('0x44'),_0x5be1cd[_0xb599('0x45')],_0x5be1cd[_0xb599('0x40')]);}if(RpcVoiceTransferReport['transfers'][_0x5be1cd[_0xb599('0x46')]]){var _0x32c224=RpcVoiceTransferReport[_0xb599('0x47')][_0x5be1cd[_0xb599('0x46')]];_0x32c224[_0xb599('0x48')]=_0x5be1cd[_0xb599('0x49')];RpcVoiceTransferReport[_0xb599('0x4a')](_0x32c224);delete RpcVoiceTransferReport['transfers'][_0x5be1cd['linkedid']];}RpcVoiceCallReport['create'](_0x5be1cd);if(_0x5be1cd['monitor']){for(var _0x27c8bd=0x0;_0x27c8bd<_0x5be1cd['monitors'][_0xb599('0x29')];_0x27c8bd+=0x1){_0x5be1cd[_0xb599('0x4b')]=_0x5be1cd[_0xb599('0x4c')][_0x27c8bd][_0xb599('0x4d')];_0x5be1cd[_0xb599('0x4e')]=_0x5be1cd[_0xb599('0x4c')][_0x27c8bd][_0xb599('0x4e')];if(_0x5be1cd[_0xb599('0x33')]=='xcally-motion-preview'){_0x5be1cd[_0xb599('0x40')]=_0x5be1cd[_0xb599('0x43')];_0x5be1cd[_0xb599('0x45')]=_0x5be1cd[_0xb599('0x4f')];_0x5be1cd[_0xb599('0x43')]=_0x5be1cd['accountcode'];_0x5be1cd[_0xb599('0x4f')]=_0x5be1cd[_0xb599('0x50')];_0x5be1cd['exten']=_0x5be1cd[_0xb599('0x3d')];}else if(_0x5be1cd[_0xb599('0x33')]==_0xb599('0x51')){_0x5be1cd['calleridnum']=_0x5be1cd['destination'];_0x5be1cd['exten']=_0x5be1cd[_0xb599('0x3d')];}RpcVoiceRecording[_0xb599('0x30')](_0x5be1cd);}}};Report['prototype'][_0xb599('0x1a')]=function(_0x3a142c){if(_['isArray'](_0x3a142c)){_0x3a142c[_0xb599('0x52')](function(_0x2d2f72){RpcVoiceAgentReport[_0xb599('0x30')](_0x2d2f72);});}else{RpcVoiceAgentReport['create'](_0x3a142c);}};Report[_0xb599('0x20')][_0xb599('0x1c')]=function(_0x4fbd90){RpcVoiceDialReport[_0xb599('0x30')](_0x4fbd90);var _0xb86dfe;var _0x3aaed4;var _0x2b596c=_0x4fbd90[_0xb599('0x3f')];if(_[_0xb599('0x53')](_0x2b596c,_0xb599('0x54'))){_0x3aaed4=_0x2b596c[_0xb599('0x55')](_0x2b596c[_0xb599('0x56')]('/')+0x1,_0x2b596c['indexOf']('@'));_0xb86dfe=_[_0xb599('0x22')](this[_0xb599('0x12')],function(_0x1b414b){return _0x1b414b[_0xb599('0x57')]==_0x3aaed4||_0x1b414b[_0xb599('0x58')]==_0x3aaed4||_0x1b414b[_0xb599('0x23')]==_0x3aaed4;});}else{_0x3aaed4=_0x2b596c[_0xb599('0x55')](_0x2b596c[_0xb599('0x56')]('/')+0x1,_0x2b596c[_0xb599('0x59')]('-'));_0xb86dfe=this[_0xb599('0x21')](_0x3aaed4);}if(_0xb86dfe){_0x4fbd90[_0xb599('0x2c')]=_[_0xb599('0x25')](_0xb86dfe[_0xb599('0x2c')])?util[_0xb599('0x26')](_0xb599('0x27'),_0xb86dfe[_0xb599('0x24')]):_0xb86dfe[_0xb599('0x2c')];_0x4fbd90[_0xb599('0x50')]=_0xb86dfe[_0xb599('0x24')];_0x4fbd90[_0xb599('0x23')]=_0xb86dfe[_0xb599('0x23')];RpcMemberReport['voiceDialReport'](_0x4fbd90);}};Report[_0xb599('0x20')][_0xb599('0x4a')]=function(_0x28d584){RpcVoiceTransferReport[_0xb599('0x47')][_0x28d584['transfererlinkedid']]=_0x28d584;};Report[_0xb599('0x20')][_0xb599('0x1f')]=function(_0x3bc29b){RpcVoiceTransferReport[_0xb599('0x1f')](_0x3bc29b);};module['exports']=Report;
\ No newline at end of file
index 38b97b7..ee53258 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95c7=['state','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','isNotNull','info','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','local','toLowerCase','stateTime','updateStatusRealtime','toNumber','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:save','startsWith','substring','indexOf','mobile','phone','accountcode','[userReport][devicestatechange]','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','name','exports','lodash','moment','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','redis','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','[userReport][devicestatelist]','actionSipPeerStatus','prototype','isUndefined','emit','[userReport][registry]\x20registry:%s\x20state:%s','username','debug','[userReport][registry]','find','stateRegistry'];(function(_0x2bf900,_0xc9b9b0){var _0x32e61b=function(_0x4652c1){while(--_0x4652c1){_0x2bf900['push'](_0x2bf900['shift']());}};_0x32e61b(++_0xc9b9b0);}(_0x95c7,0x1a7));var _0x795c=function(_0x17548e,_0x2c3dc8){_0x17548e=_0x17548e-0x0;var _0x2820d1=_0x95c7[_0x17548e];return _0x2820d1;};'use strict';var _=require(_0x795c('0x0'));var moment=require(_0x795c('0x1'));var util=require(_0x795c('0x2'));var Redis=require(_0x795c('0x3'));var BPromise=require(_0x795c('0x4'));var config=require(_0x795c('0x5'));var logger=require(_0x795c('0x6'))(_0x795c('0x7'));var ami=require('../ami');config['redis']=_['defaults'](config[_0x795c('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x795c('0x9'))(new Redis(config[_0x795c('0x8')]));function UserReport(_0x57d8bc){this[_0x795c('0xa')]=_0x57d8bc[_0x795c('0xa')];this[_0x795c('0xb')]=_0x57d8bc[_0x795c('0xb')];this[_0x795c('0xc')]=_0x57d8bc[_0x795c('0xc')];ami['on'](_0x795c('0xd'),this[_0x795c('0xe')][_0x795c('0xf')](this));ami['on'](_0x795c('0x10'),this[_0x795c('0xe')][_0x795c('0xf')](this));ami['on']('devicestatechange',this[_0x795c('0x11')]['bind'](this));ami['on'](_0x795c('0x12'),this[_0x795c('0x13')][_0x795c('0xf')](this));return this[_0x795c('0x14')]();}function showSipRegistrations(){Promise[_0x795c('0x15')]()[_0x795c('0x16')](ami[_0x795c('0x17')]())[_0x795c('0x18')](function(_0x59a582){logger[_0x795c('0x19')](_0x795c('0x1a'),util[_0x795c('0x1b')](_0x59a582,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x795c('0x15')]()[_0x795c('0x16')](ami['actionDeviceStateList']())['catch'](function(_0x48ce09){logger[_0x795c('0x19')](_0x795c('0x1c'),util[_0x795c('0x1b')](_0x48ce09,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x795c('0x15')]()[_0x795c('0x16')](ami[_0x795c('0x1d')]())['catch'](function(_0x4743c0){logger['error']('[userReport][sippeerstatus]',util[_0x795c('0x1b')](_0x4743c0,{'showHidden':![],'depth':null}));});}UserReport[_0x795c('0x1e')]['syncRealtimeShow']=function(){setInterval(function(){BPromise['resolve']()[_0x795c('0x16')](showSipRegistrations())[_0x795c('0x16')](listDeviceStates())[_0x795c('0x16')](showPeersStatus());},0x32c8);};UserReport['prototype']['isNotNull']=function(_0x496340){return _0x496340!==null&&!_[_0x795c('0x1f')](_0x496340);};UserReport[_0x795c('0x1e')][_0x795c('0x20')]=function(_0x345b47,_0x40cbd1,_0x33a167){io['to'](_0x345b47)[_0x795c('0x20')](_0x40cbd1,_0x33a167);};UserReport[_0x795c('0x1e')][_0x795c('0xe')]=function(_0x1bef6f){try{if(this['isNotNull'](_0x1bef6f)){logger['info'](_0x795c('0x21'),_0x1bef6f[_0x795c('0x22')],_0x1bef6f['state']);logger[_0x795c('0x23')](_0x795c('0x24'),util[_0x795c('0x1b')](_0x1bef6f,{'showHidden':![],'depth':null}));var _0x366bcd=_[_0x795c('0x25')](this[_0x795c('0xa')],{'defaultuser':_0x1bef6f[_0x795c('0x22')]});if(_0x366bcd){_0x1bef6f[_0x795c('0x26')]=_0x1bef6f[_0x795c('0x27')];_[_0x795c('0x28')](_0x366bcd,_[_0x795c('0x29')](_0x1bef6f,[_0x795c('0x2a'),_0x795c('0x2b'),'username',_0x795c('0x27')]));logger[_0x795c('0x23')](_0x795c('0x2c'),util[_0x795c('0x1b')](_0x366bcd,{'showHidden':![],'depth':null}));this[_0x795c('0x20')](util[_0x795c('0x2d')](_0x795c('0x2e'),_0x366bcd['name']),'trunk:save',_0x366bcd);}}}catch(_0x18db16){logger['error'](_0x795c('0x24'),util[_0x795c('0x1b')](_0x18db16,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x795c('0x11')]=function(_0x49ea65){try{if(this[_0x795c('0x2f')](_0x49ea65)){logger[_0x795c('0x30')](_0x795c('0x31'),_0x49ea65[_0x795c('0x32')],_0x49ea65[_0x795c('0x27')]);logger[_0x795c('0x23')]('[userReport][devicestatechange]',util[_0x795c('0x1b')](_0x49ea65,{'showHidden':![],'depth':null}));if(this[_0x795c('0xb')][_0x49ea65[_0x795c('0x32')]]){if(!this[_0x795c('0xb')][_0x49ea65['device']][_0x795c('0x33')]||_0x49ea65[_0x795c('0x27')]['toLowerCase']()=='inuse'){this['agents'][_0x49ea65['device']]['local']=![];if(this[_0x795c('0xb')][_0x49ea65[_0x795c('0x32')]][_0x795c('0x27')]!==_0x49ea65[_0x795c('0x27')][_0x795c('0x34')]()){this[_0x795c('0xb')][_0x49ea65[_0x795c('0x32')]][_0x795c('0x35')]=_['toNumber'](moment()['format']('x'));}this[_0x795c('0xb')][_0x49ea65['device']][_0x795c('0x27')]=_0x49ea65['state'][_0x795c('0x34')]();this[_0x795c('0xb')][_0x49ea65[_0x795c('0x32')]][_0x795c('0x36')](_0x49ea65);}}else if(this[_0x795c('0xc')][_0x49ea65['device']]){if(this[_0x795c('0xc')][_0x49ea65[_0x795c('0x32')]][_0x795c('0x27')]!==_0x49ea65['state']['toLowerCase']()){this['telephones'][_0x49ea65[_0x795c('0x32')]]['stateTime']=_[_0x795c('0x37')](moment()[_0x795c('0x2d')]('x'));}this[_0x795c('0xc')][_0x49ea65[_0x795c('0x32')]][_0x795c('0x27')]=_0x49ea65['state']['toLowerCase']();logger['debug']('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0x795c('0x1b')](this[_0x795c('0xc')][_0x49ea65[_0x795c('0x32')]],{'showHidden':![],'depth':null}));this[_0x795c('0x20')](util[_0x795c('0x2d')]('telephone:%s',this[_0x795c('0xc')][_0x49ea65[_0x795c('0x32')]]['name']),_0x795c('0x38'),this['telephones'][_0x49ea65[_0x795c('0x32')]]);}else if(this[_0x795c('0xa')][_0x49ea65[_0x795c('0x32')]]){if(this[_0x795c('0xa')][_0x49ea65[_0x795c('0x32')]][_0x795c('0x27')]!==_0x49ea65['state']['toLowerCase']()){this[_0x795c('0xa')][_0x49ea65[_0x795c('0x32')]][_0x795c('0x35')]=_[_0x795c('0x37')](moment()[_0x795c('0x2d')]('x'));}this[_0x795c('0xa')][_0x49ea65['device']]['state']=_0x49ea65[_0x795c('0x27')]['toLowerCase']();logger[_0x795c('0x23')](_0x795c('0x39'),util['inspect'](this[_0x795c('0xa')][_0x49ea65[_0x795c('0x32')]],{'showHidden':![],'depth':null}));this[_0x795c('0x20')](util[_0x795c('0x2d')](_0x795c('0x2e'),this[_0x795c('0xa')][_0x49ea65[_0x795c('0x32')]]['name']),_0x795c('0x3a'),this[_0x795c('0xa')][_0x49ea65[_0x795c('0x32')]]);}else if(_[_0x795c('0x3b')](_0x49ea65[_0x795c('0x32')],'Local')){var _0xbcf720=_0x49ea65[_0x795c('0x32')];var _0xa8b28b=_0xbcf720[_0x795c('0x3c')](_0xbcf720['indexOf']('/')+0x1,_0xbcf720[_0x795c('0x3d')]('@'));var _0x42b5b7=_[_0x795c('0x25')](this[_0x795c('0xb')],function(_0x418960){return _0x418960[_0x795c('0x3e')]==_0xa8b28b||_0x418960[_0x795c('0x3f')]==_0xa8b28b||_0x418960[_0x795c('0x40')]==_0xa8b28b;});if(_0x42b5b7){if(_0x42b5b7[_0x795c('0x27')]!==_0x49ea65[_0x795c('0x27')][_0x795c('0x34')]()){_0x42b5b7['stateTime']=_[_0x795c('0x37')](moment()[_0x795c('0x2d')]('x'));}_0x42b5b7['state']=_0x49ea65['state'][_0x795c('0x34')]();_0x42b5b7[_0x795c('0x33')]=!![];_0x42b5b7[_0x795c('0x36')](_0x49ea65);}}}}catch(_0x38fd3f){logger[_0x795c('0x19')](_0x795c('0x41'),util['inspect'](_0x38fd3f,{'showHidden':![],'depth':null}));}};UserReport[_0x795c('0x1e')][_0x795c('0x13')]=function(_0x49772e){try{if(this[_0x795c('0x2f')](_0x49772e)&&this[_0x795c('0x2f')](_0x49772e[_0x795c('0x12')])){logger[_0x795c('0x30')](_0x795c('0x42'),_0x49772e[_0x795c('0x43')],_0x49772e[_0x795c('0x44')],_0x49772e[_0x795c('0x12')]);logger[_0x795c('0x23')](_0x795c('0x45'),util[_0x795c('0x1b')](_0x49772e,{'showHidden':![],'depth':null}));if(this['agents'][_0x49772e[_0x795c('0x43')]]){if(!this[_0x795c('0xb')][_0x49772e['peer']][_0x795c('0x33')]||_0x49772e[_0x795c('0x12')][_0x795c('0x34')]()==_0x795c('0x46')){this[_0x795c('0xb')][_0x49772e[_0x795c('0x43')]][_0x795c('0x33')]=![];this[_0x795c('0xb')][_0x49772e[_0x795c('0x43')]][_0x795c('0x47')]=_0x49772e[_0x795c('0x12')][_0x795c('0x34')]();this['agents'][_0x49772e['peer']][_0x795c('0x44')]=_0x49772e[_0x795c('0x44')];this[_0x795c('0xb')][_0x49772e[_0x795c('0x43')]]['updateStatusRealtime'](_0x49772e);}}else if(this[_0x795c('0xc')][_0x49772e[_0x795c('0x43')]]){this[_0x795c('0xc')][_0x49772e[_0x795c('0x43')]][_0x795c('0x47')]=_0x49772e[_0x795c('0x12')][_0x795c('0x34')]();this['telephones'][_0x49772e[_0x795c('0x43')]]['address']=_0x49772e[_0x795c('0x44')];logger[_0x795c('0x23')](_0x795c('0x48'),util[_0x795c('0x1b')](this[_0x795c('0xc')][_0x49772e[_0x795c('0x43')]],{'showHidden':![],'depth':null}));this[_0x795c('0x20')](util[_0x795c('0x2d')](_0x795c('0x49'),this[_0x795c('0xc')][_0x49772e[_0x795c('0x43')]]['name']),_0x795c('0x38'),this[_0x795c('0xc')][_0x49772e[_0x795c('0x43')]]);}else if(this[_0x795c('0xa')][_0x49772e[_0x795c('0x43')]]){this[_0x795c('0xa')][_0x49772e['peer']][_0x795c('0x47')]=_0x49772e['peerstatus']['toLowerCase']();this[_0x795c('0xa')][_0x49772e[_0x795c('0x43')]][_0x795c('0x44')]=_0x49772e[_0x795c('0x44')];logger[_0x795c('0x23')](_0x795c('0x4a'),util[_0x795c('0x1b')](this[_0x795c('0xa')][_0x49772e['peer']],{'showHidden':![],'depth':null}));this[_0x795c('0x20')](util[_0x795c('0x2d')]('trunk:%s',this[_0x795c('0xa')][_0x49772e[_0x795c('0x43')]][_0x795c('0x4b')]),_0x795c('0x3a'),this[_0x795c('0xa')][_0x49772e['peer']]);}}}catch(_0x1dcd33){logger[_0x795c('0x19')](_0x795c('0x45'),util['inspect'](_0x1dcd33,{'showHidden':![],'depth':null}));}};module[_0x795c('0x4c')]=UserReport;
\ No newline at end of file
+var _0x3fe7=['resolve','then','actionDeviceStateList','error','[userReport][devicestatelist]','prototype','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','find','merge','omit','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','trunk:%s','name','trunk:save','syncDeviceState','isNotNull','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','format','updateStatusRealtime','toNumber','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','mobile','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','exports','lodash','moment','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','../ami','defaults','localhost','socket.io-emitter','redis','trunks','agents','telephones','registryentry','syncRegistry','registry','bind','peerstatus','syncPeerStatus','syncRealtimeShow','actionSipShowRegistry','catch','[userReport][sipshowregistry]','inspect'];(function(_0x920bfc,_0x31245d){var _0x4b8acb=function(_0x4a1464){while(--_0x4a1464){_0x920bfc['push'](_0x920bfc['shift']());}};_0x4b8acb(++_0x31245d);}(_0x3fe7,0x16b));var _0x73fe=function(_0xc5a279,_0x155360){_0xc5a279=_0xc5a279-0x0;var _0xc755d3=_0x3fe7[_0xc5a279];return _0xc755d3;};'use strict';var _=require(_0x73fe('0x0'));var moment=require(_0x73fe('0x1'));var util=require(_0x73fe('0x2'));var Redis=require(_0x73fe('0x3'));var BPromise=require(_0x73fe('0x4'));var config=require(_0x73fe('0x5'));var logger=require(_0x73fe('0x6'))(_0x73fe('0x7'));var ami=require(_0x73fe('0x8'));config['redis']=_[_0x73fe('0x9')](config['redis'],{'host':_0x73fe('0xa'),'port':0x18eb});var io=require(_0x73fe('0xb'))(new Redis(config[_0x73fe('0xc')]));function UserReport(_0x4fdce9){this[_0x73fe('0xd')]=_0x4fdce9[_0x73fe('0xd')];this[_0x73fe('0xe')]=_0x4fdce9[_0x73fe('0xe')];this[_0x73fe('0xf')]=_0x4fdce9[_0x73fe('0xf')];ami['on'](_0x73fe('0x10'),this[_0x73fe('0x11')]['bind'](this));ami['on'](_0x73fe('0x12'),this['syncRegistry'][_0x73fe('0x13')](this));ami['on']('devicestatechange',this['syncDeviceState'][_0x73fe('0x13')](this));ami['on'](_0x73fe('0x14'),this[_0x73fe('0x15')][_0x73fe('0x13')](this));return this[_0x73fe('0x16')]();}function showSipRegistrations(){Promise['resolve']()['then'](ami[_0x73fe('0x17')]())[_0x73fe('0x18')](function(_0x2e663c){logger['error'](_0x73fe('0x19'),util[_0x73fe('0x1a')](_0x2e663c,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x73fe('0x1b')]()[_0x73fe('0x1c')](ami[_0x73fe('0x1d')]())[_0x73fe('0x18')](function(_0x58d220){logger[_0x73fe('0x1e')](_0x73fe('0x1f'),util[_0x73fe('0x1a')](_0x58d220,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x73fe('0x1b')]()[_0x73fe('0x1c')](ami['actionSipPeerStatus']())['catch'](function(_0x2c8d16){logger[_0x73fe('0x1e')]('[userReport][sippeerstatus]',util[_0x73fe('0x1a')](_0x2c8d16,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x73fe('0x16')]=function(){setInterval(function(){BPromise[_0x73fe('0x1b')]()[_0x73fe('0x1c')](showSipRegistrations())[_0x73fe('0x1c')](listDeviceStates())[_0x73fe('0x1c')](showPeersStatus());},0x32c8);};UserReport[_0x73fe('0x20')]['isNotNull']=function(_0x1d6e29){return _0x1d6e29!==null&&!_[_0x73fe('0x21')](_0x1d6e29);};UserReport['prototype'][_0x73fe('0x22')]=function(_0x34b85c,_0x3ce83c,_0x5540de){io['to'](_0x34b85c)[_0x73fe('0x22')](_0x3ce83c,_0x5540de);};UserReport[_0x73fe('0x20')]['syncRegistry']=function(_0x544c53){try{if(this['isNotNull'](_0x544c53)){logger[_0x73fe('0x23')](_0x73fe('0x24'),_0x544c53[_0x73fe('0x25')],_0x544c53[_0x73fe('0x26')]);logger[_0x73fe('0x27')](_0x73fe('0x28'),util[_0x73fe('0x1a')](_0x544c53,{'showHidden':![],'depth':null}));var _0x6d6b81=_[_0x73fe('0x29')](this[_0x73fe('0xd')],{'defaultuser':_0x544c53['username']});if(_0x6d6b81){_0x544c53['stateRegistry']=_0x544c53[_0x73fe('0x26')];_[_0x73fe('0x2a')](_0x6d6b81,_[_0x73fe('0x2b')](_0x544c53,['event',_0x73fe('0x2c'),_0x73fe('0x25'),_0x73fe('0x26')]));logger[_0x73fe('0x27')](_0x73fe('0x2d'),util[_0x73fe('0x1a')](_0x6d6b81,{'showHidden':![],'depth':null}));this[_0x73fe('0x22')](util['format'](_0x73fe('0x2e'),_0x6d6b81[_0x73fe('0x2f')]),_0x73fe('0x30'),_0x6d6b81);}}}catch(_0x49dbb2){logger[_0x73fe('0x1e')](_0x73fe('0x28'),util['inspect'](_0x49dbb2,{'showHidden':![],'depth':null}));}};UserReport[_0x73fe('0x20')][_0x73fe('0x31')]=function(_0x59a3f7){try{if(this[_0x73fe('0x32')](_0x59a3f7)){logger[_0x73fe('0x23')](_0x73fe('0x33'),_0x59a3f7[_0x73fe('0x34')],_0x59a3f7['state']);logger[_0x73fe('0x27')](_0x73fe('0x35'),util[_0x73fe('0x1a')](_0x59a3f7,{'showHidden':![],'depth':null}));if(this[_0x73fe('0xe')][_0x59a3f7[_0x73fe('0x34')]]){if(!this[_0x73fe('0xe')][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x36')]||_0x59a3f7['state'][_0x73fe('0x37')]()==_0x73fe('0x38')){this[_0x73fe('0xe')][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x36')]=![];if(this[_0x73fe('0xe')][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x26')]!==_0x59a3f7[_0x73fe('0x26')][_0x73fe('0x37')]()){this['agents'][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x39')]=_['toNumber'](moment()[_0x73fe('0x3a')]('x'));}this[_0x73fe('0xe')][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x26')]=_0x59a3f7[_0x73fe('0x26')][_0x73fe('0x37')]();this[_0x73fe('0xe')][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x3b')](_0x59a3f7);}}else if(this['telephones'][_0x59a3f7['device']]){if(this[_0x73fe('0xf')][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x26')]!==_0x59a3f7['state']['toLowerCase']()){this[_0x73fe('0xf')][_0x59a3f7['device']][_0x73fe('0x39')]=_[_0x73fe('0x3c')](moment()[_0x73fe('0x3a')]('x'));}this['telephones'][_0x59a3f7[_0x73fe('0x34')]]['state']=_0x59a3f7[_0x73fe('0x26')]['toLowerCase']();logger['debug']('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0x73fe('0x1a')](this[_0x73fe('0xf')][_0x59a3f7['device']],{'showHidden':![],'depth':null}));this['emit'](util[_0x73fe('0x3a')](_0x73fe('0x3d'),this[_0x73fe('0xf')][_0x59a3f7['device']]['name']),_0x73fe('0x3e'),this[_0x73fe('0xf')][_0x59a3f7[_0x73fe('0x34')]]);}else if(this[_0x73fe('0xd')][_0x59a3f7[_0x73fe('0x34')]]){if(this[_0x73fe('0xd')][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x26')]!==_0x59a3f7[_0x73fe('0x26')][_0x73fe('0x37')]()){this[_0x73fe('0xd')][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x39')]=_[_0x73fe('0x3c')](moment()['format']('x'));}this[_0x73fe('0xd')][_0x59a3f7[_0x73fe('0x34')]]['state']=_0x59a3f7[_0x73fe('0x26')][_0x73fe('0x37')]();logger[_0x73fe('0x27')](_0x73fe('0x3f'),util['inspect'](this[_0x73fe('0xd')][_0x59a3f7[_0x73fe('0x34')]],{'showHidden':![],'depth':null}));this[_0x73fe('0x22')](util['format'](_0x73fe('0x2e'),this[_0x73fe('0xd')][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x2f')]),_0x73fe('0x30'),this['trunks'][_0x59a3f7[_0x73fe('0x34')]]);}else if(_[_0x73fe('0x40')](_0x59a3f7['device'],_0x73fe('0x41'))){var _0xfbc529=_0x59a3f7['device'];var _0x576c0d=_0xfbc529[_0x73fe('0x42')](_0xfbc529[_0x73fe('0x43')]('/')+0x1,_0xfbc529[_0x73fe('0x43')]('@'));var _0x41eb92=_['find'](this['agents'],function(_0x2799d8){return _0x2799d8[_0x73fe('0x44')]==_0x576c0d||_0x2799d8[_0x73fe('0x45')]==_0x576c0d||_0x2799d8[_0x73fe('0x46')]==_0x576c0d;});if(_0x41eb92){if(_0x41eb92[_0x73fe('0x26')]!==_0x59a3f7[_0x73fe('0x26')][_0x73fe('0x37')]()){_0x41eb92['stateTime']=_[_0x73fe('0x3c')](moment()[_0x73fe('0x3a')]('x'));}_0x41eb92['state']=_0x59a3f7['state'][_0x73fe('0x37')]();_0x41eb92[_0x73fe('0x36')]=!![];_0x41eb92[_0x73fe('0x3b')](_0x59a3f7);}}}}catch(_0x103173){logger['error'](_0x73fe('0x35'),util[_0x73fe('0x1a')](_0x103173,{'showHidden':![],'depth':null}));}};UserReport[_0x73fe('0x20')][_0x73fe('0x15')]=function(_0x3d9d37){try{if(this[_0x73fe('0x32')](_0x3d9d37)&&this[_0x73fe('0x32')](_0x3d9d37[_0x73fe('0x14')])){logger[_0x73fe('0x23')](_0x73fe('0x47'),_0x3d9d37[_0x73fe('0x48')],_0x3d9d37[_0x73fe('0x49')],_0x3d9d37[_0x73fe('0x14')]);logger[_0x73fe('0x27')](_0x73fe('0x4a'),util['inspect'](_0x3d9d37,{'showHidden':![],'depth':null}));if(this[_0x73fe('0xe')][_0x3d9d37[_0x73fe('0x48')]]){if(!this[_0x73fe('0xe')][_0x3d9d37[_0x73fe('0x48')]][_0x73fe('0x36')]||_0x3d9d37[_0x73fe('0x14')]['toLowerCase']()=='registered'){this[_0x73fe('0xe')][_0x3d9d37[_0x73fe('0x48')]][_0x73fe('0x36')]=![];this[_0x73fe('0xe')][_0x3d9d37[_0x73fe('0x48')]][_0x73fe('0x4b')]=_0x3d9d37[_0x73fe('0x14')][_0x73fe('0x37')]();this[_0x73fe('0xe')][_0x3d9d37['peer']]['address']=_0x3d9d37[_0x73fe('0x49')];this[_0x73fe('0xe')][_0x3d9d37[_0x73fe('0x48')]][_0x73fe('0x3b')](_0x3d9d37);}}else if(this[_0x73fe('0xf')][_0x3d9d37[_0x73fe('0x48')]]){this[_0x73fe('0xf')][_0x3d9d37['peer']][_0x73fe('0x4b')]=_0x3d9d37[_0x73fe('0x14')][_0x73fe('0x37')]();this['telephones'][_0x3d9d37[_0x73fe('0x48')]][_0x73fe('0x49')]=_0x3d9d37[_0x73fe('0x49')];logger[_0x73fe('0x27')](_0x73fe('0x4c'),util[_0x73fe('0x1a')](this[_0x73fe('0xf')][_0x3d9d37[_0x73fe('0x48')]],{'showHidden':![],'depth':null}));this[_0x73fe('0x22')](util[_0x73fe('0x3a')]('telephone:%s',this[_0x73fe('0xf')][_0x3d9d37['peer']][_0x73fe('0x2f')]),_0x73fe('0x3e'),this['telephones'][_0x3d9d37[_0x73fe('0x48')]]);}else if(this[_0x73fe('0xd')][_0x3d9d37[_0x73fe('0x48')]]){this[_0x73fe('0xd')][_0x3d9d37[_0x73fe('0x48')]][_0x73fe('0x4b')]=_0x3d9d37['peerstatus'][_0x73fe('0x37')]();this[_0x73fe('0xd')][_0x3d9d37[_0x73fe('0x48')]]['address']=_0x3d9d37[_0x73fe('0x49')];logger[_0x73fe('0x27')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util['inspect'](this[_0x73fe('0xd')][_0x3d9d37[_0x73fe('0x48')]],{'showHidden':![],'depth':null}));this[_0x73fe('0x22')](util[_0x73fe('0x3a')]('trunk:%s',this['trunks'][_0x3d9d37[_0x73fe('0x48')]][_0x73fe('0x2f')]),_0x73fe('0x30'),this[_0x73fe('0xd')][_0x3d9d37[_0x73fe('0x48')]]);}}}catch(_0x4f88aa){logger[_0x73fe('0x1e')](_0x73fe('0x4a'),util[_0x73fe('0x1a')](_0x4f88aa,{'showHidden':![],'depth':null}));}};module[_0x73fe('0x4d')]=UserReport;
\ No newline at end of file
index 2658bbf..e30b548 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['musiconholdstop','attendedtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','uniqueid','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','inbound','voice','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','interface','calleridnum','extravar','format','user:%s','error','[%s][voiceAgentReport][agentcalled]','syncAgentConnect','[%s][voiceAgentReport][agentconnect]\x20event:','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','connect','voiceChannels','routealias','merge','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','user:agentconnect','agentringnoanswer','agentringnoanswerAt','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','lastevent','rejected','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','hasOwnProperty','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','agentcompleteAt','complete','agent','talktime','acw','acwtime','acwTimeout','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','transfer','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','syncMusicOnHoldStop','lastIndexOf','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','exports','lodash','moment','util','../../../config/logger','../ami','redis','defaults','localhost','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart'];(function(_0x4037bf,_0x2b556e){var _0x290dcc=function(_0x888c2d){while(--_0x888c2d){_0x4037bf['push'](_0x4037bf['shift']());}};_0x290dcc(++_0x2b556e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xa9e0[_0x1b828b];return _0x98da1a;};'use strict';var _=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x0a9e('0x3'))('ami');var ami=require(_0x0a9e('0x4'));config[_0x0a9e('0x5')]=_[_0x0a9e('0x6')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x5')]));function VoiceAgentReport(_0x441e3a){this[_0x0a9e('0x8')]={};this['voiceChannels']=_0x441e3a['channels'];this[_0x0a9e('0x9')]=_0x441e3a['voiceQueues'];this['agents']=_0x441e3a[_0x0a9e('0xa')];this[_0x0a9e('0xb')]={};ami['on'](_0x0a9e('0xc'),this[_0x0a9e('0xd')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0xf'),this['syncAgentConnect']['bind'](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x10'),this[_0x0a9e('0x11')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x12'),this[_0x0a9e('0x13')]['bind'](this));ami['on'](_0x0a9e('0x14'),this[_0x0a9e('0x15')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x16'),this[_0x0a9e('0x17')][_0x0a9e('0xe')](this));ami['on']('musiconholdstart',this[_0x0a9e('0x18')]['bind'](this));ami['on'](_0x0a9e('0x19'),this['syncMusicOnHoldStop'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x1a'),this['syncAttendedTransfer'][_0x0a9e('0xe')](this));ami['on']('blindtransfer',this[_0x0a9e('0x1b')][_0x0a9e('0xe')](this));}VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1d')]=function(_0x31b1ca,_0x2eb11f,_0x530eb7){io['to'](_0x31b1ca)[_0x0a9e('0x1d')](_0x2eb11f,_0x530eb7);};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1e')]=function(_0x1c696a){return _0x1c696a!==null&&!_[_0x0a9e('0x1f')](_0x1c696a);};VoiceAgentReport['prototype'][_0x0a9e('0xd')]=function(_0x155cce){try{if(this['isNotNull'](_0x155cce)){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x155cce['uniqueid'],_0x155cce[_0x0a9e('0x21')],_0x155cce[_0x0a9e('0x22')]);logger[_0x0a9e('0x23')](_0x0a9e('0x24'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x155cce,{'showHidden':![],'depth':null}));if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]]={};}if(_[_0x0a9e('0x1f')](this['channels'][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]={'agentcalledAt':moment()['format'](_0x0a9e('0x27')),'lastevent':'called','mandatoryDisposition':this[_0x0a9e('0x9')][_0x155cce['queue']]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x29')]||![]:![],'type':this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x2a')]||'inbound':_0x0a9e('0x2b'),'variables':this[_0x0a9e('0xb')][_0x155cce[_0x0a9e('0x26')]],'motionChannel':_0x0a9e('0x2c')};}_['merge'](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],_[_0x0a9e('0x2d')](_0x155cce,[_0x0a9e('0x2e'),_0x0a9e('0x2f')]));logger[_0x0a9e('0x23')](_0x0a9e('0x30'),_0x155cce[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x31'),this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce['destuniqueid']]);var _0x66c1d2={'id':this[_0x0a9e('0xa')][_0x155cce[_0x0a9e('0x32')]]['id'],'calleridnum':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0x33')],'queue':this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]]['queue'],'extravar':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')]?this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')][_0x0a9e('0x34')]:undefined};logger['debug']('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:',_0x155cce[_0x0a9e('0x26')],util['inspect'](_0x66c1d2,{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x155cce[_0x0a9e('0x21')]),'user:called',_0x66c1d2);}}catch(_0x31916f){logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x31916f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x39')]=function(_0x4c1c0e){try{if(this['isNotNull'](_0x4c1c0e)){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]){logger['debug'](_0x0a9e('0x3a'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4c1c0e,{'showHidden':![],'depth':null}));for(var _0x148f55 in this['channels'][_0x4c1c0e['uniqueid']]){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]['hasOwnProperty'](_0x148f55)){if(_0x4c1c0e[_0x0a9e('0x22')]===_0x148f55){logger[_0x0a9e('0x20')](_0x0a9e('0x3b'),_0x4c1c0e['uniqueid'],_0x4c1c0e[_0x0a9e('0x21')],_0x4c1c0e[_0x0a9e('0x22')]);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3c')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3d')]=_0x4c1c0e[_0x0a9e('0x3d')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3e')]=_0x4c1c0e[_0x0a9e('0x3e')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x3f')]=_0x4c1c0e[_0x0a9e('0x3f')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x40')]=_0x4c1c0e[_0x0a9e('0x40')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x41')]=_0x4c1c0e[_0x0a9e('0x41')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['lastevent']=_0x0a9e('0x42');if(this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x26')]]){var _0xbe9d19=this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x26')]]['routealias'];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x44')]=_0xbe9d19;_0x4c1c0e['routealias']=_0xbe9d19;}_[_0x0a9e('0x45')](this[_0x0a9e('0xa')][_0x4c1c0e[_0x0a9e('0x32')]],_[_0x0a9e('0x46')](_0x4c1c0e,[_0x0a9e('0x28'),_0x0a9e('0x47'),_0x0a9e('0x44')]));logger['debug'](_0x0a9e('0x48'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x49'),this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x4c1c0e[_0x0a9e('0x22')]]);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:',_0x4c1c0e['uniqueid'],util['inspect'](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x4c1c0e[_0x0a9e('0x21')]),_0x0a9e('0x4a'),this['channels'][_0x4c1c0e['uniqueid']][_0x4c1c0e['destuniqueid']]);}else if(!this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]&&!this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x4c1c0e[_0x0a9e('0x26')],this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['membername'],_0x148f55);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]=!![];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheredestinationuniqueid']=_0x4c1c0e[_0x0a9e('0x22')];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheremembername']=_0x4c1c0e[_0x0a9e('0x21')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55]['lastevent']=_0x0a9e('0x4d');this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4e')]=_0x0a9e('0x4d');logger[_0x0a9e('0x23')](_0x0a9e('0x4f'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x50'),this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]);}}}}}}catch(_0xb83dfd){logger[_0x0a9e('0x37')]('[%s][voiceAgentReport][agentconnect]',_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xb83dfd,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x51')]=function(_0x5cc8fb){try{if(this[_0x0a9e('0x1e')](_0x5cc8fb)){logger['debug']('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x5cc8fb['uniqueid'],util[_0x0a9e('0x25')](_0x5cc8fb,{'showHidden':![],'depth':null}));if(this['channels'][_0x5cc8fb[_0x0a9e('0x26')]]&&this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]){logger[_0x0a9e('0x20')](_0x0a9e('0x52'),_0x5cc8fb['uniqueid'],_0x5cc8fb[_0x0a9e('0x21')],_0x5cc8fb['destuniqueid']);this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x5cc8fb['uniqueid']][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x53')]=_0x0a9e('0x54');this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb['destuniqueid']][_0x0a9e('0x4e')]=_0x0a9e('0x54');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:',_0x5cc8fb[_0x0a9e('0x26')],util['inspect'](this['channels'][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x55'),this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]);}}}catch(_0x54a37d){logger[_0x0a9e('0x37')](_0x0a9e('0x56'),_0x5cc8fb[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x54a37d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x11')]=function(_0x320898){try{if(this[_0x0a9e('0x1e')](_0x320898)){logger[_0x0a9e('0x23')](_0x0a9e('0x57'),_0x320898['uniqueid'],util[_0x0a9e('0x25')](_0x320898,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){for(var _0x4edbb0 in this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){if(this['channels'][_0x320898[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x4edbb0)&&!this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4b')]&&!this['channels'][_0x320898['uniqueid']][_0x4edbb0]['agentcomplete']){logger[_0x0a9e('0x20')](_0x0a9e('0x59'),_0x320898[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x21')],_0x4edbb0);this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this['channels'][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x53')]='abandoned';this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4e')]=_0x0a9e('0x5a');logger['debug'](_0x0a9e('0x5b'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x320898['uniqueid']][_0x4edbb0],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x5c'),this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]);}}}}}catch(_0x4abc8f){logger[_0x0a9e('0x37')](_0x0a9e('0x5d'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4abc8f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x13')]=function(_0x40fc56){try{if(this[_0x0a9e('0x1e')](_0x40fc56)){logger[_0x0a9e('0x23')](_0x0a9e('0x5e'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x40fc56,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){for(var _0x5b35db in this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x0a9e('0x58')](_0x5b35db)){if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x3c')]&&!this['channels'][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x40fc56[_0x0a9e('0x26')],this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x21')],_0x5b35db);this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x4e')]=_0x40fc56[_0x0a9e('0x4e')]=='transfer'?_0x0a9e('0x61'):_0x40fc56['reason'];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x62')]=_0x40fc56[_0x0a9e('0x62')];if(this['voiceQueues'][_0x40fc56['queue']]&&this[_0x0a9e('0x9')][_0x40fc56[_0x0a9e('0x28')]][_0x0a9e('0x63')]){this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x64')]=this['voiceQueues'][_0x40fc56['queue']][_0x0a9e('0x65')];this['channels'][_0x40fc56['uniqueid']][_0x5b35db]['agentacw']=!![];}this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]=_[_0x0a9e('0x2d')](this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]],[_0x0a9e('0x28'),'destconnectedlinenum']);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db],{'showHidden':![],'depth':null}));ami['emit'](_0x0a9e('0x66'),this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db]);logger['debug'](_0x0a9e('0x67'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')]({'id':this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]},{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')]('user:%s',_0x40fc56[_0x0a9e('0x21')]),_0x0a9e('0x69'),{'id':this['agents'][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]});}}}}}}catch(_0x3a1974){logger['error'](_0x0a9e('0x6a'),_0x40fc56['uniqueid'],util[_0x0a9e('0x25')](_0x3a1974,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x15')]=function(_0x1f29bd){try{if(this[_0x0a9e('0x1e')](_0x1f29bd)){logger[_0x0a9e('0x23')](_0x0a9e('0x6b'),_0x1f29bd[_0x0a9e('0x26')],util['inspect'](_0x1f29bd,{'showHidden':![],'depth':null}));this[_0x0a9e('0x6c')](_0x1f29bd[_0x0a9e('0x26')],_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){for(var _0x33f0c9 in this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x33f0c9)){logger['info'](_0x0a9e('0x70'),_0x1f29bd[_0x0a9e('0x26')],_0x33f0c9,_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(_['isUndefined'](this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9]['variables'])){this[_0x0a9e('0x8')][_0x1f29bd['uniqueid']][_0x33f0c9][_0x0a9e('0xb')]={};}this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9][_0x0a9e('0xb')]=this['variables'][_0x1f29bd[_0x0a9e('0x26')]];}}}}}catch(_0x4cf72d){logger[_0x0a9e('0x37')](_0x0a9e('0x71'),_0x1f29bd['uniqueid'],util[_0x0a9e('0x25')](_0x4cf72d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x6c')]=function(_0x4ab276,_0x4c788f,_0x1b82b7){var _0x6ba2be=[_0x0a9e('0x72'),_0x0a9e('0x73'),_0x0a9e('0x74'),_0x0a9e('0x75'),_0x0a9e('0x76'),_0x0a9e('0x77'),_0x0a9e('0x78'),'rtpaudioqosrttbridged',_0x0a9e('0x79'),'sipuri',_0x0a9e('0x7a'),_0x0a9e('0x7b'),_0x0a9e('0x7c'),_0x0a9e('0x7d'),_0x0a9e('0x7e'),'memberlastcall',_0x0a9e('0x21'),_0x0a9e('0x7f'),_0x0a9e('0x80')];if(!_[_0x0a9e('0x81')](_0x4c788f)&&!_[_0x0a9e('0x82')](_0x6ba2be,_0x4c788f)){if(_['isUndefined'](this['variables'][_0x4ab276])){this[_0x0a9e('0xb')][_0x4ab276]={};}this['variables'][_0x4ab276][_0x4c788f]=_0x1b82b7;}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x17')]=function(_0x4672e1){try{if(this[_0x0a9e('0x1e')](_0x4672e1)){logger[_0x0a9e('0x23')](_0x0a9e('0x83'),_0x4672e1['uniqueid'],util['inspect'](_0x4672e1,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']]){for(var _0x2469d1 in this['channels'][_0x4672e1[_0x0a9e('0x26')]]){if(this['channels'][_0x4672e1['uniqueid']][_0x0a9e('0x58')](_0x2469d1)){if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']][_0x2469d1][_0x0a9e('0x4e')]==_0x0a9e('0x84')&&this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x4672e1[_0x0a9e('0x26')],_0x2469d1);this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x0a9e('0x23')](_0x0a9e('0x85'),_0x4672e1['uniqueid'],util[_0x0a9e('0x25')](_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]),{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x87'),_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]));delete this[_0x0a9e('0x8')][_0x4672e1['uniqueid']];}if(this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]]){delete this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]];}}}catch(_0x1d0b02){logger['error']('[%s][voiceAgentReport][hangup]',_0x4672e1[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x1d0b02,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x88')]=function(_0x34f7b5){try{if(this['isNotNull'](_0x34f7b5)){logger[_0x0a9e('0x23')](_0x0a9e('0x89'),_0x34f7b5[_0x0a9e('0x26')],util['inspect'](_0x34f7b5,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]){for(var _0x2144ca in this['channels'][_0x34f7b5[_0x0a9e('0x8a')]]){if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]]['hasOwnProperty'](_0x2144ca)){if(_0x34f7b5[_0x0a9e('0x8b')]===_0x2144ca){logger['info'](_0x0a9e('0x8c'),_0x34f7b5[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x21')],_0x2144ca);var _0x1bee04=moment();this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca]['lastevent']='complete';this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x4e')]=_0x0a9e('0x84');this['channels'][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x62')]=_0x1bee04[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]]){var _0x5d0e1f=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]];this[_0x0a9e('0x8')][_0x34f7b5['secondtransfereruniqueid']]=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]];this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]=_0x5d0e1f;}}}catch(_0x303f75){logger[_0x0a9e('0x37')](_0x0a9e('0x90'),_0x34f7b5[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x303f75,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x1b')]=function(_0x289e65){try{if(this['isNotNull'](_0x289e65)){logger[_0x0a9e('0x23')](_0x0a9e('0x91'),_0x289e65[_0x0a9e('0x26')],util['inspect'](_0x289e65,{'showHidden':![],'depth':null}));if(this['channels'][_0x289e65['transfereeuniqueid']]){for(var _0x1015aa in this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']]){if(this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x0a9e('0x58')](_0x1015aa)){if(_0x289e65['transfereruniqueid']===_0x1015aa){logger[_0x0a9e('0x20')](_0x0a9e('0x92'),_0x289e65[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x21')],_0x1015aa);var _0x40e6e7=moment();this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x5f')]=_0x40e6e7;this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x4e')]=_0x0a9e('0x84');this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['talktime']=_0x40e6e7[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}}}catch(_0x2be526){logger[_0x0a9e('0x37')](_0x0a9e('0x93'),_0x289e65[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2be526,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x18')]=function(_0x88b25f){var _0x2ff265='';try{if(this[_0x0a9e('0x1e')](_0x88b25f)){logger[_0x0a9e('0x23')](_0x0a9e('0x94'),_0x88b25f[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x88b25f,{'showHidden':![],'depth':null}));if(_0x88b25f['channel']){_0x2ff265=_0x88b25f[_0x0a9e('0x95')][_0x0a9e('0x96')](0x0,_0x88b25f[_0x0a9e('0x95')]['lastIndexOf']('-'));if(this[_0x0a9e('0xa')][_0x2ff265]){logger[_0x0a9e('0x20')](_0x0a9e('0x97'),_0x88b25f[_0x0a9e('0x26')],_0x2ff265);this[_0x0a9e('0xa')][_0x2ff265][_0x0a9e('0x98')]=!![];}}}}catch(_0x424f1b){logger[_0x0a9e('0x37')](_0x0a9e('0x99'),_0x88b25f[_0x0a9e('0x26')],util['inspect'](_0x424f1b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x9a')]=function(_0x15a9ed){var _0x3db98f='';try{if(this[_0x0a9e('0x1e')](_0x15a9ed)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x15a9ed[_0x0a9e('0x26')],util['inspect'](_0x15a9ed,{'showHidden':![],'depth':null}));if(_0x15a9ed['channel']){_0x3db98f=_0x15a9ed['channel'][_0x0a9e('0x96')](0x0,_0x15a9ed[_0x0a9e('0x95')][_0x0a9e('0x9b')]('-'));if(this[_0x0a9e('0xa')][_0x3db98f]){logger['info'](_0x0a9e('0x9c'),_0x15a9ed[_0x0a9e('0x26')],_0x3db98f);this[_0x0a9e('0xa')][_0x3db98f][_0x0a9e('0x98')]=![];}}}}catch(_0x2c8d1d){logger['error']('[%s][voiceAgentReport][musiconholdstop]',_0x15a9ed[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2c8d1d,{'showHidden':![],'depth':null}));}};module[_0x0a9e('0x9d')]=VoiceAgentReport;
\ No newline at end of file
+var _0xa9e0=['musiconholdstop','attendedtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','uniqueid','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','inbound','voice','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','interface','calleridnum','extravar','format','user:%s','error','[%s][voiceAgentReport][agentcalled]','syncAgentConnect','[%s][voiceAgentReport][agentconnect]\x20event:','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','connect','voiceChannels','routealias','merge','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','user:agentconnect','agentringnoanswer','agentringnoanswerAt','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','lastevent','rejected','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','hasOwnProperty','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','agentcompleteAt','complete','agent','talktime','acw','acwtime','acwTimeout','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','transfer','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','syncMusicOnHoldStop','lastIndexOf','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','exports','lodash','moment','util','../../../config/logger','../ami','redis','defaults','localhost','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart'];(function(_0x19defb,_0x538242){var _0x162dd3=function(_0x34b170){while(--_0x34b170){_0x19defb['push'](_0x19defb['shift']());}};_0x162dd3(++_0x538242);}(_0xa9e0,0x123));var _0x0a9e=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0xa9e0[_0x36dfbd];return _0x4ecad9;};'use strict';var _=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x0a9e('0x3'))('ami');var ami=require(_0x0a9e('0x4'));config[_0x0a9e('0x5')]=_[_0x0a9e('0x6')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x5')]));function VoiceAgentReport(_0x441e3a){this[_0x0a9e('0x8')]={};this['voiceChannels']=_0x441e3a['channels'];this[_0x0a9e('0x9')]=_0x441e3a['voiceQueues'];this['agents']=_0x441e3a[_0x0a9e('0xa')];this[_0x0a9e('0xb')]={};ami['on'](_0x0a9e('0xc'),this[_0x0a9e('0xd')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0xf'),this['syncAgentConnect']['bind'](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x10'),this[_0x0a9e('0x11')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x12'),this[_0x0a9e('0x13')]['bind'](this));ami['on'](_0x0a9e('0x14'),this[_0x0a9e('0x15')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x16'),this[_0x0a9e('0x17')][_0x0a9e('0xe')](this));ami['on']('musiconholdstart',this[_0x0a9e('0x18')]['bind'](this));ami['on'](_0x0a9e('0x19'),this['syncMusicOnHoldStop'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x1a'),this['syncAttendedTransfer'][_0x0a9e('0xe')](this));ami['on']('blindtransfer',this[_0x0a9e('0x1b')][_0x0a9e('0xe')](this));}VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1d')]=function(_0x31b1ca,_0x2eb11f,_0x530eb7){io['to'](_0x31b1ca)[_0x0a9e('0x1d')](_0x2eb11f,_0x530eb7);};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1e')]=function(_0x1c696a){return _0x1c696a!==null&&!_[_0x0a9e('0x1f')](_0x1c696a);};VoiceAgentReport['prototype'][_0x0a9e('0xd')]=function(_0x155cce){try{if(this['isNotNull'](_0x155cce)){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x155cce['uniqueid'],_0x155cce[_0x0a9e('0x21')],_0x155cce[_0x0a9e('0x22')]);logger[_0x0a9e('0x23')](_0x0a9e('0x24'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x155cce,{'showHidden':![],'depth':null}));if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]]={};}if(_[_0x0a9e('0x1f')](this['channels'][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]={'agentcalledAt':moment()['format'](_0x0a9e('0x27')),'lastevent':'called','mandatoryDisposition':this[_0x0a9e('0x9')][_0x155cce['queue']]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x29')]||![]:![],'type':this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x2a')]||'inbound':_0x0a9e('0x2b'),'variables':this[_0x0a9e('0xb')][_0x155cce[_0x0a9e('0x26')]],'motionChannel':_0x0a9e('0x2c')};}_['merge'](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],_[_0x0a9e('0x2d')](_0x155cce,[_0x0a9e('0x2e'),_0x0a9e('0x2f')]));logger[_0x0a9e('0x23')](_0x0a9e('0x30'),_0x155cce[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x31'),this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce['destuniqueid']]);var _0x66c1d2={'id':this[_0x0a9e('0xa')][_0x155cce[_0x0a9e('0x32')]]['id'],'calleridnum':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0x33')],'queue':this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]]['queue'],'extravar':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')]?this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')][_0x0a9e('0x34')]:undefined};logger['debug']('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:',_0x155cce[_0x0a9e('0x26')],util['inspect'](_0x66c1d2,{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x155cce[_0x0a9e('0x21')]),'user:called',_0x66c1d2);}}catch(_0x31916f){logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x31916f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x39')]=function(_0x4c1c0e){try{if(this['isNotNull'](_0x4c1c0e)){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]){logger['debug'](_0x0a9e('0x3a'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4c1c0e,{'showHidden':![],'depth':null}));for(var _0x148f55 in this['channels'][_0x4c1c0e['uniqueid']]){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]['hasOwnProperty'](_0x148f55)){if(_0x4c1c0e[_0x0a9e('0x22')]===_0x148f55){logger[_0x0a9e('0x20')](_0x0a9e('0x3b'),_0x4c1c0e['uniqueid'],_0x4c1c0e[_0x0a9e('0x21')],_0x4c1c0e[_0x0a9e('0x22')]);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3c')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3d')]=_0x4c1c0e[_0x0a9e('0x3d')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3e')]=_0x4c1c0e[_0x0a9e('0x3e')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x3f')]=_0x4c1c0e[_0x0a9e('0x3f')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x40')]=_0x4c1c0e[_0x0a9e('0x40')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x41')]=_0x4c1c0e[_0x0a9e('0x41')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['lastevent']=_0x0a9e('0x42');if(this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x26')]]){var _0xbe9d19=this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x26')]]['routealias'];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x44')]=_0xbe9d19;_0x4c1c0e['routealias']=_0xbe9d19;}_[_0x0a9e('0x45')](this[_0x0a9e('0xa')][_0x4c1c0e[_0x0a9e('0x32')]],_[_0x0a9e('0x46')](_0x4c1c0e,[_0x0a9e('0x28'),_0x0a9e('0x47'),_0x0a9e('0x44')]));logger['debug'](_0x0a9e('0x48'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x49'),this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x4c1c0e[_0x0a9e('0x22')]]);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:',_0x4c1c0e['uniqueid'],util['inspect'](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x4c1c0e[_0x0a9e('0x21')]),_0x0a9e('0x4a'),this['channels'][_0x4c1c0e['uniqueid']][_0x4c1c0e['destuniqueid']]);}else if(!this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]&&!this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x4c1c0e[_0x0a9e('0x26')],this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['membername'],_0x148f55);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]=!![];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheredestinationuniqueid']=_0x4c1c0e[_0x0a9e('0x22')];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheremembername']=_0x4c1c0e[_0x0a9e('0x21')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55]['lastevent']=_0x0a9e('0x4d');this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4e')]=_0x0a9e('0x4d');logger[_0x0a9e('0x23')](_0x0a9e('0x4f'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x50'),this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]);}}}}}}catch(_0xb83dfd){logger[_0x0a9e('0x37')]('[%s][voiceAgentReport][agentconnect]',_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xb83dfd,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x51')]=function(_0x5cc8fb){try{if(this[_0x0a9e('0x1e')](_0x5cc8fb)){logger['debug']('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x5cc8fb['uniqueid'],util[_0x0a9e('0x25')](_0x5cc8fb,{'showHidden':![],'depth':null}));if(this['channels'][_0x5cc8fb[_0x0a9e('0x26')]]&&this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]){logger[_0x0a9e('0x20')](_0x0a9e('0x52'),_0x5cc8fb['uniqueid'],_0x5cc8fb[_0x0a9e('0x21')],_0x5cc8fb['destuniqueid']);this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x5cc8fb['uniqueid']][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x53')]=_0x0a9e('0x54');this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb['destuniqueid']][_0x0a9e('0x4e')]=_0x0a9e('0x54');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:',_0x5cc8fb[_0x0a9e('0x26')],util['inspect'](this['channels'][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x55'),this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]);}}}catch(_0x54a37d){logger[_0x0a9e('0x37')](_0x0a9e('0x56'),_0x5cc8fb[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x54a37d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x11')]=function(_0x320898){try{if(this[_0x0a9e('0x1e')](_0x320898)){logger[_0x0a9e('0x23')](_0x0a9e('0x57'),_0x320898['uniqueid'],util[_0x0a9e('0x25')](_0x320898,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){for(var _0x4edbb0 in this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){if(this['channels'][_0x320898[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x4edbb0)&&!this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4b')]&&!this['channels'][_0x320898['uniqueid']][_0x4edbb0]['agentcomplete']){logger[_0x0a9e('0x20')](_0x0a9e('0x59'),_0x320898[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x21')],_0x4edbb0);this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this['channels'][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x53')]='abandoned';this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4e')]=_0x0a9e('0x5a');logger['debug'](_0x0a9e('0x5b'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x320898['uniqueid']][_0x4edbb0],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x5c'),this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]);}}}}}catch(_0x4abc8f){logger[_0x0a9e('0x37')](_0x0a9e('0x5d'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4abc8f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x13')]=function(_0x40fc56){try{if(this[_0x0a9e('0x1e')](_0x40fc56)){logger[_0x0a9e('0x23')](_0x0a9e('0x5e'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x40fc56,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){for(var _0x5b35db in this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x0a9e('0x58')](_0x5b35db)){if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x3c')]&&!this['channels'][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x40fc56[_0x0a9e('0x26')],this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x21')],_0x5b35db);this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x4e')]=_0x40fc56[_0x0a9e('0x4e')]=='transfer'?_0x0a9e('0x61'):_0x40fc56['reason'];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x62')]=_0x40fc56[_0x0a9e('0x62')];if(this['voiceQueues'][_0x40fc56['queue']]&&this[_0x0a9e('0x9')][_0x40fc56[_0x0a9e('0x28')]][_0x0a9e('0x63')]){this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x64')]=this['voiceQueues'][_0x40fc56['queue']][_0x0a9e('0x65')];this['channels'][_0x40fc56['uniqueid']][_0x5b35db]['agentacw']=!![];}this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]=_[_0x0a9e('0x2d')](this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]],[_0x0a9e('0x28'),'destconnectedlinenum']);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db],{'showHidden':![],'depth':null}));ami['emit'](_0x0a9e('0x66'),this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db]);logger['debug'](_0x0a9e('0x67'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')]({'id':this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]},{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')]('user:%s',_0x40fc56[_0x0a9e('0x21')]),_0x0a9e('0x69'),{'id':this['agents'][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]});}}}}}}catch(_0x3a1974){logger['error'](_0x0a9e('0x6a'),_0x40fc56['uniqueid'],util[_0x0a9e('0x25')](_0x3a1974,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x15')]=function(_0x1f29bd){try{if(this[_0x0a9e('0x1e')](_0x1f29bd)){logger[_0x0a9e('0x23')](_0x0a9e('0x6b'),_0x1f29bd[_0x0a9e('0x26')],util['inspect'](_0x1f29bd,{'showHidden':![],'depth':null}));this[_0x0a9e('0x6c')](_0x1f29bd[_0x0a9e('0x26')],_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){for(var _0x33f0c9 in this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x33f0c9)){logger['info'](_0x0a9e('0x70'),_0x1f29bd[_0x0a9e('0x26')],_0x33f0c9,_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(_['isUndefined'](this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9]['variables'])){this[_0x0a9e('0x8')][_0x1f29bd['uniqueid']][_0x33f0c9][_0x0a9e('0xb')]={};}this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9][_0x0a9e('0xb')]=this['variables'][_0x1f29bd[_0x0a9e('0x26')]];}}}}}catch(_0x4cf72d){logger[_0x0a9e('0x37')](_0x0a9e('0x71'),_0x1f29bd['uniqueid'],util[_0x0a9e('0x25')](_0x4cf72d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x6c')]=function(_0x4ab276,_0x4c788f,_0x1b82b7){var _0x6ba2be=[_0x0a9e('0x72'),_0x0a9e('0x73'),_0x0a9e('0x74'),_0x0a9e('0x75'),_0x0a9e('0x76'),_0x0a9e('0x77'),_0x0a9e('0x78'),'rtpaudioqosrttbridged',_0x0a9e('0x79'),'sipuri',_0x0a9e('0x7a'),_0x0a9e('0x7b'),_0x0a9e('0x7c'),_0x0a9e('0x7d'),_0x0a9e('0x7e'),'memberlastcall',_0x0a9e('0x21'),_0x0a9e('0x7f'),_0x0a9e('0x80')];if(!_[_0x0a9e('0x81')](_0x4c788f)&&!_[_0x0a9e('0x82')](_0x6ba2be,_0x4c788f)){if(_['isUndefined'](this['variables'][_0x4ab276])){this[_0x0a9e('0xb')][_0x4ab276]={};}this['variables'][_0x4ab276][_0x4c788f]=_0x1b82b7;}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x17')]=function(_0x4672e1){try{if(this[_0x0a9e('0x1e')](_0x4672e1)){logger[_0x0a9e('0x23')](_0x0a9e('0x83'),_0x4672e1['uniqueid'],util['inspect'](_0x4672e1,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']]){for(var _0x2469d1 in this['channels'][_0x4672e1[_0x0a9e('0x26')]]){if(this['channels'][_0x4672e1['uniqueid']][_0x0a9e('0x58')](_0x2469d1)){if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']][_0x2469d1][_0x0a9e('0x4e')]==_0x0a9e('0x84')&&this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x4672e1[_0x0a9e('0x26')],_0x2469d1);this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x0a9e('0x23')](_0x0a9e('0x85'),_0x4672e1['uniqueid'],util[_0x0a9e('0x25')](_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]),{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x87'),_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]));delete this[_0x0a9e('0x8')][_0x4672e1['uniqueid']];}if(this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]]){delete this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]];}}}catch(_0x1d0b02){logger['error']('[%s][voiceAgentReport][hangup]',_0x4672e1[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x1d0b02,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x88')]=function(_0x34f7b5){try{if(this['isNotNull'](_0x34f7b5)){logger[_0x0a9e('0x23')](_0x0a9e('0x89'),_0x34f7b5[_0x0a9e('0x26')],util['inspect'](_0x34f7b5,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]){for(var _0x2144ca in this['channels'][_0x34f7b5[_0x0a9e('0x8a')]]){if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]]['hasOwnProperty'](_0x2144ca)){if(_0x34f7b5[_0x0a9e('0x8b')]===_0x2144ca){logger['info'](_0x0a9e('0x8c'),_0x34f7b5[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x21')],_0x2144ca);var _0x1bee04=moment();this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca]['lastevent']='complete';this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x4e')]=_0x0a9e('0x84');this['channels'][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x62')]=_0x1bee04[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]]){var _0x5d0e1f=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]];this[_0x0a9e('0x8')][_0x34f7b5['secondtransfereruniqueid']]=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]];this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]=_0x5d0e1f;}}}catch(_0x303f75){logger[_0x0a9e('0x37')](_0x0a9e('0x90'),_0x34f7b5[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x303f75,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x1b')]=function(_0x289e65){try{if(this['isNotNull'](_0x289e65)){logger[_0x0a9e('0x23')](_0x0a9e('0x91'),_0x289e65[_0x0a9e('0x26')],util['inspect'](_0x289e65,{'showHidden':![],'depth':null}));if(this['channels'][_0x289e65['transfereeuniqueid']]){for(var _0x1015aa in this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']]){if(this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x0a9e('0x58')](_0x1015aa)){if(_0x289e65['transfereruniqueid']===_0x1015aa){logger[_0x0a9e('0x20')](_0x0a9e('0x92'),_0x289e65[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x21')],_0x1015aa);var _0x40e6e7=moment();this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x5f')]=_0x40e6e7;this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x4e')]=_0x0a9e('0x84');this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['talktime']=_0x40e6e7[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}}}catch(_0x2be526){logger[_0x0a9e('0x37')](_0x0a9e('0x93'),_0x289e65[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2be526,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x18')]=function(_0x88b25f){var _0x2ff265='';try{if(this[_0x0a9e('0x1e')](_0x88b25f)){logger[_0x0a9e('0x23')](_0x0a9e('0x94'),_0x88b25f[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x88b25f,{'showHidden':![],'depth':null}));if(_0x88b25f['channel']){_0x2ff265=_0x88b25f[_0x0a9e('0x95')][_0x0a9e('0x96')](0x0,_0x88b25f[_0x0a9e('0x95')]['lastIndexOf']('-'));if(this[_0x0a9e('0xa')][_0x2ff265]){logger[_0x0a9e('0x20')](_0x0a9e('0x97'),_0x88b25f[_0x0a9e('0x26')],_0x2ff265);this[_0x0a9e('0xa')][_0x2ff265][_0x0a9e('0x98')]=!![];}}}}catch(_0x424f1b){logger[_0x0a9e('0x37')](_0x0a9e('0x99'),_0x88b25f[_0x0a9e('0x26')],util['inspect'](_0x424f1b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x9a')]=function(_0x15a9ed){var _0x3db98f='';try{if(this[_0x0a9e('0x1e')](_0x15a9ed)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x15a9ed[_0x0a9e('0x26')],util['inspect'](_0x15a9ed,{'showHidden':![],'depth':null}));if(_0x15a9ed['channel']){_0x3db98f=_0x15a9ed['channel'][_0x0a9e('0x96')](0x0,_0x15a9ed[_0x0a9e('0x95')][_0x0a9e('0x9b')]('-'));if(this[_0x0a9e('0xa')][_0x3db98f]){logger['info'](_0x0a9e('0x9c'),_0x15a9ed[_0x0a9e('0x26')],_0x3db98f);this[_0x0a9e('0xa')][_0x3db98f][_0x0a9e('0x98')]=![];}}}}catch(_0x2c8d1d){logger['error']('[%s][voiceAgentReport][musiconholdstop]',_0x15a9ed[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2c8d1d,{'showHidden':![],'depth':null}));}};module[_0x0a9e('0x9d')]=VoiceAgentReport;
\ No newline at end of file
index 1c9abca..bd4017c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16a4=['syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','isUndefined','emit','uniqueid','debug','merge','pick','context','from-sip','channel','split','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','format','user:%s','user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','linkedid','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','YYYY-MM-DD\x20HH:mm:ss','toNumber','keys','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','name','[%s][voiceCallReport][newchannel]','application','toLowerCase','appdata','CDR(routeAlias)','applicationdata','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','disposition','includes','lastapplication','lastdata','startsWith','cdr(','type','isNil','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','calleridnum','[%s][voiceCallReport][newstate]\x20event:','channelstate','answered','answertime','holdtime','diff','calleridname','membername','connectedlinename','destinationchannel','UserId','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','replace','.WAV','monitorFilename','monitors','push','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','billableseconds','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','transferType','then','isEmpty','getSettings','stopRecordingOnTransfer','resolve','StopMixMonitor','catch','finally','webbar:stopmonitors','event','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','routeid','[%s][voiceCallReport][attendedtransfer]','extension','[%s][voiceCallReport][blindtransfer]\x20event:','transfereecalleridnum','BLIND','transfereruniqueid','transfererchannel','BlindTransfer','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','util','path','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/channel','set','queue','agi','dial','playback','voicemail','FAILED','NO\x20ANSWER','ANSWERED','BUSY','redis','defaults','socket.io-emitter','channels','agents','blindTransfers','syncNewExten','newexten','bind','newchannel','syncNewChannel','syncNewState','varset','syncVarSet'];(function(_0x1b2378,_0x320c0a){var _0x489450=function(_0x282e81){while(--_0x282e81){_0x1b2378['push'](_0x1b2378['shift']());}};_0x489450(++_0x320c0a);}(_0x16a4,0xa5));var _0x416a=function(_0x258838,_0x3f7a5f){_0x258838=_0x258838-0x0;var _0x372143=_0x16a4[_0x258838];return _0x372143;};'use strict';var _=require('lodash');var moment=require('moment');var util=require(_0x416a('0x0'));var path=require(_0x416a('0x1'));var Redis=require(_0x416a('0x2'));var config=require(_0x416a('0x3'));var logger=require(_0x416a('0x4'))(_0x416a('0x5'));var ami=require(_0x416a('0x6'));var Channel=require(_0x416a('0x7'));var RpcSetting=require('../rpc/setting');var applications=[_0x416a('0x8'),_0x416a('0x9'),_0x416a('0xa'),_0x416a('0xb'),_0x416a('0xc'),_0x416a('0xd')];var dispositions=['NO\x20ANSWER',_0x416a('0xe'),'FAILED',_0x416a('0xf'),_0x416a('0xf'),_0x416a('0xf'),_0x416a('0x10'),_0x416a('0x11'),_0x416a('0xe'),_0x416a('0xe'),_0x416a('0xe')];config[_0x416a('0x12')]=_[_0x416a('0x13')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x416a('0x14'))(new Redis(config[_0x416a('0x12')]));function VoiceCallReport(_0x41a146){this[_0x416a('0x15')]=_0x41a146[_0x416a('0x15')];this[_0x416a('0x16')]=_0x41a146[_0x416a('0x16')];this[_0x416a('0x17')]={};ami['on']('coreshowchannel',this[_0x416a('0x18')]['bind'](this));ami['on'](_0x416a('0x19'),this['syncNewExten'][_0x416a('0x1a')](this));ami['on'](_0x416a('0x1b'),this[_0x416a('0x1c')][_0x416a('0x1a')](this));ami['on']('newstate',this[_0x416a('0x1d')][_0x416a('0x1a')](this));ami['on'](_0x416a('0x1e'),this[_0x416a('0x1f')][_0x416a('0x1a')](this));ami['on']('hangup',this[_0x416a('0x20')][_0x416a('0x1a')](this));ami['on'](_0x416a('0x21'),this[_0x416a('0x22')]['bind'](this));ami['on'](_0x416a('0x23'),this[_0x416a('0x24')][_0x416a('0x1a')](this));ami['on']('blindtransfer',this[_0x416a('0x25')][_0x416a('0x1a')](this));ami['on'](_0x416a('0x26'),this[_0x416a('0x27')][_0x416a('0x1a')](this));ami['on'](_0x416a('0x28'),this[_0x416a('0x29')]['bind'](this));try{logger[_0x416a('0x2a')]('[voiceCallReport][coreshowchannels]\x20started');ami[_0x416a('0x2b')]();}catch(_0x5083a3){logger[_0x416a('0x2c')](_0x416a('0x2d'),util[_0x416a('0x2e')](_0x5083a3,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x416a('0x2f')][_0x416a('0x30')]=function(_0x72828d){return _0x72828d!==null&&!_[_0x416a('0x31')](_0x72828d);};VoiceCallReport[_0x416a('0x2f')][_0x416a('0x32')]=function(_0x269540,_0x26570f,_0x3ea273){io['to'](_0x269540)[_0x416a('0x32')](_0x26570f,_0x3ea273);};VoiceCallReport[_0x416a('0x2f')][_0x416a('0x22')]=function(_0x3d3ed2){try{if(this[_0x416a('0x30')](_0x3d3ed2)){logger[_0x416a('0x2a')]('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x3d3ed2[_0x416a('0x33')],_0x3d3ed2['calleridname'],_0x3d3ed2['calleridnum']);logger[_0x416a('0x34')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x3d3ed2[_0x416a('0x33')],util[_0x416a('0x2e')](_0x3d3ed2,{'showHidden':![],'depth':null}));if(_0x3d3ed2['uniqueid']===_0x3d3ed2['linkedid']){if(!_['isUndefined'](this[_0x416a('0x15')][_0x3d3ed2[_0x416a('0x33')]])){_[_0x416a('0x35')](this[_0x416a('0x15')][_0x3d3ed2['uniqueid']],_[_0x416a('0x36')](_0x3d3ed2,_['keys'](this[_0x416a('0x15')][_0x3d3ed2[_0x416a('0x33')]])));}}if(_0x3d3ed2[_0x416a('0x37')]===_0x416a('0x38')){if(this['agents'][_0x3d3ed2[_0x416a('0x39')][_0x416a('0x3a')]('-')[0x0]]){if(_0x3d3ed2[_0x416a('0x3b')]==_0x416a('0x3c')){this[_0x416a('0x16')][_0x3d3ed2['channel']['split']('-')[0x0]][_0x416a('0x3d')]=_0x3d3ed2[_0x416a('0x3e')];this[_0x416a('0x32')](util[_0x416a('0x3f')](_0x416a('0x40'),this['agents'][_0x3d3ed2[_0x416a('0x39')][_0x416a('0x3a')]('-')[0x0]]['name']),_0x416a('0x41'),{'destaccountcode':this[_0x416a('0x16')][_0x3d3ed2[_0x416a('0x39')][_0x416a('0x3a')]('-')[0x0]][_0x416a('0x42')],'destconnectedlinenum':_0x3d3ed2[_0x416a('0x3e')]});}}}}}catch(_0x4bde36){logger['error'](_0x416a('0x43'),_0x3d3ed2[_0x416a('0x33')],util[_0x416a('0x2e')](_0x4bde36,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x416a('0x1c')]=function(_0x317f2d){try{if(this[_0x416a('0x30')](_0x317f2d)){logger[_0x416a('0x34')](_0x416a('0x44'),_0x317f2d['uniqueid'],util['inspect'](_0x317f2d,{'showHidden':![],'depth':null}));if(this[_0x416a('0x15')][_0x317f2d['uniqueid']])return;if(_0x317f2d[_0x416a('0x39')]===_0x416a('0x45'))return;if(_0x317f2d['uniqueid']!==_0x317f2d[_0x416a('0x46')]&&!this[_0x416a('0x17')][_0x317f2d[_0x416a('0x46')]])return;logger[_0x416a('0x2a')](_0x416a('0x47'),_0x317f2d[_0x416a('0x33')],_0x317f2d[_0x416a('0x37')],_0x317f2d[_0x416a('0x3b')]);this[_0x416a('0x15')][_0x317f2d[_0x416a('0x33')]]=new Channel();this[_0x416a('0x15')][_0x317f2d[_0x416a('0x33')]][_0x416a('0x48')]=moment()[_0x416a('0x3f')](_0x416a('0x49'));this[_0x416a('0x15')][_0x317f2d[_0x416a('0x33')]]['disposition']=dispositions[_[_0x416a('0x4a')](_0x317f2d['channelstate'])];_[_0x416a('0x35')](this[_0x416a('0x15')][_0x317f2d['uniqueid']],_[_0x416a('0x36')](_0x317f2d,_[_0x416a('0x4b')](this['channels'][_0x317f2d['uniqueid']])));if(_0x317f2d[_0x416a('0x37')]==='from-sip'){if(this['agents'][_0x317f2d['channel'][_0x416a('0x3a')]('-')[0x0]]){if(_['isUndefined'](this[_0x416a('0x16')][_0x317f2d[_0x416a('0x39')][_0x416a('0x3a')]('-')[0x0]][_0x416a('0x3d')])){this[_0x416a('0x16')][_0x317f2d['channel'][_0x416a('0x3a')]('-')[0x0]][_0x416a('0x3d')]=_0x317f2d[_0x416a('0x3b')];logger[_0x416a('0x34')](_0x416a('0x4c'),_0x317f2d['uniqueid'],util['inspect']({'id':this[_0x416a('0x16')][_0x317f2d[_0x416a('0x39')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0x416a('0x16')][_0x317f2d[_0x416a('0x39')][_0x416a('0x3a')]('-')[0x0]][_0x416a('0x42')],'destconnectedlinenum':_0x317f2d[_0x416a('0x3b')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x416a('0x3f')](_0x416a('0x40'),this['agents'][_0x317f2d[_0x416a('0x39')][_0x416a('0x3a')]('-')[0x0]][_0x416a('0x4d')]),'user:agentconnect',{'id':this[_0x416a('0x16')][_0x317f2d['channel'][_0x416a('0x3a')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x317f2d['channel'][_0x416a('0x3a')]('-')[0x0]][_0x416a('0x42')],'destconnectedlinenum':_0x317f2d[_0x416a('0x3b')]});}}}}}catch(_0x164c92){logger['error'](_0x416a('0x4e'),_0x317f2d[_0x416a('0x33')],util['inspect'](_0x164c92,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x416a('0x18')]=function(_0x3c51b2){try{if(this['isNotNull'](_0x3c51b2)){logger[_0x416a('0x34')]('[%s][voiceCallReport][newexten]\x20event:',_0x3c51b2[_0x416a('0x33')],util[_0x416a('0x2e')](_0x3c51b2,{'showHidden':![],'depth':null}));if(_0x3c51b2[_0x416a('0x39')]==='OutgoingSpoolFailed'||_0x3c51b2['exten']==='h')return;if(_0x3c51b2[_0x416a('0x33')]===_0x3c51b2[_0x416a('0x46')]||this[_0x416a('0x17')][_0x3c51b2['linkedid']]){_0x3c51b2[_0x416a('0x4f')]=_0x3c51b2[_0x416a('0x4f')][_0x416a('0x50')]();_0x3c51b2['applicationdata']=_0x3c51b2[_0x416a('0x51')]&&_0x3c51b2['appdata']['startsWith'](_0x416a('0x52'))?_0x3c51b2['appdata']:(_0x3c51b2[_0x416a('0x51')]||_0x3c51b2[_0x416a('0x53')])[_0x416a('0x50')]();logger['info'](_0x416a('0x54'),_0x3c51b2[_0x416a('0x33')],_0x3c51b2['application'],_0x3c51b2[_0x416a('0x53')]);if(_[_0x416a('0x31')](this[_0x416a('0x15')][_0x3c51b2[_0x416a('0x33')]])){this[_0x416a('0x15')][_0x3c51b2[_0x416a('0x33')]]=new Channel();this[_0x416a('0x15')][_0x3c51b2['uniqueid']][_0x416a('0x48')]=_0x3c51b2[_0x416a('0x55')]?moment()[_0x416a('0x56')](moment['duration'](_0x3c51b2[_0x416a('0x55')])[_0x416a('0x57')](),'seconds')[_0x416a('0x3f')]('YYYY-MM-DD\x20HH:mm:ss'):moment()[_0x416a('0x3f')](_0x416a('0x49'));this[_0x416a('0x15')][_0x3c51b2['uniqueid']][_0x416a('0x58')]=_0x416a('0xf');}_[_0x416a('0x35')](this[_0x416a('0x15')][_0x3c51b2[_0x416a('0x33')]],_[_0x416a('0x36')](_0x3c51b2,_[_0x416a('0x4b')](this[_0x416a('0x15')][_0x3c51b2['uniqueid']])));if(_[_0x416a('0x59')](applications,_0x3c51b2['application'])){this[_0x416a('0x15')][_0x3c51b2[_0x416a('0x33')]][_0x416a('0x5a')]=_0x3c51b2[_0x416a('0x4f')];this[_0x416a('0x15')][_0x3c51b2[_0x416a('0x33')]][_0x416a('0x5b')]=_0x3c51b2[_0x416a('0x53')];if(_0x3c51b2['application']===_0x416a('0x8')&&_[_0x416a('0x5c')](_0x3c51b2['applicationdata'][_0x416a('0x50')](),_0x416a('0x5d'))){var _0x4cf09c=_0x3c51b2[_0x416a('0x53')][_0x416a('0x3a')]('=');var _0x33234c=_0x4cf09c[0x0]['toLowerCase']()['match'](/cdr\((.*)\)/);if(_0x33234c){if(_0x33234c[0x1]===_0x416a('0x5e')&&!_[_0x416a('0x5f')](this[_0x416a('0x15')][_0x3c51b2[_0x416a('0x33')]][_0x33234c[0x1]]))return;this['channels'][_0x3c51b2[_0x416a('0x33')]][_0x33234c[0x1]]=_0x4cf09c[0x1];}}else if(_0x3c51b2[_0x416a('0x4f')]==='queue'){this['channels'][_0x3c51b2['uniqueid']][_0x416a('0x9')]=_0x3c51b2[_0x416a('0x53')][_0x416a('0x3a')](',')[0x0];}}}}}catch(_0x351a48){logger[_0x416a('0x2c')](_0x416a('0x60'),_0x3c51b2['uniqueid'],util[_0x416a('0x2e')](_0x351a48,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x416a('0x2f')][_0x416a('0x1d')]=function(_0x442dc7){try{if(this[_0x416a('0x30')](_0x442dc7)){logger[_0x416a('0x2a')](_0x416a('0x61'),_0x442dc7[_0x416a('0x33')],_0x442dc7[_0x416a('0x46')],_0x442dc7['calleridname'],_0x442dc7[_0x416a('0x62')]);logger[_0x416a('0x34')](_0x416a('0x63'),_0x442dc7[_0x416a('0x33')],util[_0x416a('0x2e')](_0x442dc7,{'showHidden':![],'depth':null}));if(_0x442dc7[_0x416a('0x64')]!=='6')return;if(_0x442dc7['uniqueid']!==_0x442dc7[_0x416a('0x46')]){var _0x3ddc72=moment();if(this[_0x416a('0x15')][_0x442dc7[_0x416a('0x46')]]){if(!this[_0x416a('0x15')][_0x442dc7[_0x416a('0x46')]][_0x416a('0x65')]){this['channels'][_0x442dc7[_0x416a('0x46')]]['answered']=!![];this[_0x416a('0x15')][_0x442dc7['linkedid']][_0x416a('0x66')]=_0x3ddc72[_0x416a('0x3f')](_0x416a('0x49'));if(this[_0x416a('0x15')][_0x442dc7[_0x416a('0x46')]][_0x416a('0x48')]){this[_0x416a('0x15')][_0x442dc7['linkedid']][_0x416a('0x67')]=_0x3ddc72[_0x416a('0x68')](this[_0x416a('0x15')][_0x442dc7[_0x416a('0x46')]]['starttime'],_0x416a('0x57'));}}this[_0x416a('0x15')][_0x442dc7['linkedid']][_0x416a('0x46')]=_0x442dc7['uniqueid'];if(_0x442dc7[_0x416a('0x62')]!==_0x416a('0x3c')){this['channels'][_0x442dc7[_0x416a('0x46')]][_0x416a('0x3e')]=_0x442dc7[_0x416a('0x62')];}this['channels'][_0x442dc7['linkedid']]['connectedlinename']=_0x442dc7[_0x416a('0x69')];this[_0x416a('0x15')][_0x442dc7[_0x416a('0x46')]]['destinationchannel']=_0x442dc7[_0x416a('0x39')];this[_0x416a('0x15')][_0x442dc7[_0x416a('0x46')]]['disposition']=dispositions[_[_0x416a('0x4a')](_0x442dc7[_0x416a('0x64')])];if(this[_0x416a('0x16')][_0x442dc7[_0x416a('0x39')]['split']('-')[0x0]]){this['channels'][_0x442dc7[_0x416a('0x46')]]['UserId']=this[_0x416a('0x16')][_0x442dc7[_0x416a('0x39')][_0x416a('0x3a')]('-')[0x0]]['id'];this['channels'][_0x442dc7[_0x416a('0x46')]][_0x416a('0x6a')]=this[_0x416a('0x16')][_0x442dc7[_0x416a('0x39')][_0x416a('0x3a')]('-')[0x0]][_0x416a('0x4d')];}}if(this['channels'][_0x442dc7[_0x416a('0x33')]]){if(!this[_0x416a('0x15')][_0x442dc7[_0x416a('0x33')]][_0x416a('0x65')]){this[_0x416a('0x15')][_0x442dc7[_0x416a('0x33')]][_0x416a('0x65')]=!![];this['channels'][_0x442dc7['uniqueid']][_0x416a('0x66')]=_0x3ddc72[_0x416a('0x3f')](_0x416a('0x49'));if(this[_0x416a('0x15')][_0x442dc7[_0x416a('0x33')]]['starttime']){this[_0x416a('0x15')][_0x442dc7[_0x416a('0x33')]]['holdtime']=_0x3ddc72['diff'](this['channels'][_0x442dc7[_0x416a('0x33')]]['starttime'],_0x416a('0x57'));}}if(_0x442dc7[_0x416a('0x62')]!=='xcally-motion-preview'){this[_0x416a('0x15')][_0x442dc7[_0x416a('0x33')]][_0x416a('0x3e')]=_0x442dc7[_0x416a('0x62')];}this['channels'][_0x442dc7[_0x416a('0x33')]][_0x416a('0x6b')]=_0x442dc7[_0x416a('0x69')];this['channels'][_0x442dc7[_0x416a('0x33')]][_0x416a('0x6c')]=_0x442dc7['channel'];this['channels'][_0x442dc7[_0x416a('0x33')]][_0x416a('0x58')]=dispositions[_['toNumber'](_0x442dc7[_0x416a('0x64')])];}}else{if(this[_0x416a('0x15')][_0x442dc7[_0x416a('0x33')]]){if(this[_0x416a('0x16')][_0x442dc7[_0x416a('0x39')][_0x416a('0x3a')]('-')[0x0]]){this['channels'][_0x442dc7[_0x416a('0x33')]][_0x416a('0x6d')]=this[_0x416a('0x16')][_0x442dc7[_0x416a('0x39')][_0x416a('0x3a')]('-')[0x0]]['id'];this[_0x416a('0x15')][_0x442dc7[_0x416a('0x33')]][_0x416a('0x6a')]=this[_0x416a('0x16')][_0x442dc7[_0x416a('0x39')][_0x416a('0x3a')]('-')[0x0]][_0x416a('0x4d')];}}}if(_0x442dc7[_0x416a('0x37')]==='from-sip'){if(this[_0x416a('0x16')][_0x442dc7[_0x416a('0x39')][_0x416a('0x3a')]('-')[0x0]]){this[_0x416a('0x16')][_0x442dc7['channel'][_0x416a('0x3a')]('-')[0x0]]['destconnectedlinenum']=_0x442dc7[_0x416a('0x3b')];var _0x3d3d06,_0x4acf3a;if(this['channels'][_0x442dc7['uniqueid']]){_0x3d3d06=this[_0x416a('0x15')][_0x442dc7['uniqueid']][_0x416a('0x6e')];_0x4acf3a=this[_0x416a('0x15')][_0x442dc7[_0x416a('0x33')]][_0x416a('0x9')];}else if(this[_0x416a('0x15')][_0x442dc7['linkedid']]){_0x3d3d06=this[_0x416a('0x15')][_0x442dc7[_0x416a('0x46')]][_0x416a('0x6e')];_0x4acf3a=this[_0x416a('0x15')][_0x442dc7[_0x416a('0x46')]][_0x416a('0x9')];}logger[_0x416a('0x34')](_0x416a('0x6f'),_0x442dc7[_0x416a('0x33')],util[_0x416a('0x2e')]({'id':this[_0x416a('0x16')][_0x442dc7[_0x416a('0x39')][_0x416a('0x3a')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x442dc7[_0x416a('0x39')]['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x442dc7[_0x416a('0x3b')],'routealias':_0x3d3d06,'queue':_0x4acf3a||undefined},{'showHidden':![],'depth':null}));this[_0x416a('0x32')](util['format']('user:%s',this[_0x416a('0x16')][_0x442dc7['channel'][_0x416a('0x3a')]('-')[0x0]][_0x416a('0x4d')]),_0x416a('0x41'),{'id':this[_0x416a('0x16')][_0x442dc7[_0x416a('0x39')][_0x416a('0x3a')]('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this[_0x416a('0x16')][_0x442dc7['channel'][_0x416a('0x3a')]('-')[0x0]][_0x416a('0x42')],'destconnectedlinenum':_0x442dc7['exten'],'routealias':_0x3d3d06,'queue':_0x4acf3a||undefined});}}}}catch(_0x320563){logger[_0x416a('0x2c')](_0x416a('0x70'),_0x442dc7['uniqueid'],util[_0x416a('0x2e')](_0x320563,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x416a('0x2f')][_0x416a('0x71')]=function(_0x3ec40f,_0x2e8685){try{if(this[_0x416a('0x15')][_0x3ec40f]){logger[_0x416a('0x2a')](_0x416a('0x72'),_0x3ec40f,_0x2e8685);this['channels'][_0x3ec40f][_0x416a('0x73')]=!![];if(_[_0x416a('0x74')](_0x2e8685,_0x416a('0x75'))){_0x2e8685=_0x2e8685[_0x416a('0x76')](_0x416a('0x75'),_0x416a('0x77'));}this[_0x416a('0x15')][_0x3ec40f][_0x416a('0x78')]=_0x2e8685;var _0x35d980=_['find'](this[_0x416a('0x15')][_0x3ec40f][_0x416a('0x79')],{'filename':_0x2e8685});if(_[_0x416a('0x5f')](_0x35d980)){this[_0x416a('0x15')][_0x3ec40f][_0x416a('0x79')][_0x416a('0x7a')]({'filename':_0x2e8685,'createdAt':moment()[_0x416a('0x3f')](_0x416a('0x49')),'mixmonitorid':'','status':_0x416a('0x7b')});}}}catch(_0x14f00a){logger[_0x416a('0x2c')](_0x416a('0x7c'),_0x3ec40f,util[_0x416a('0x2e')](_0x14f00a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x416a('0x2f')][_0x416a('0x1f')]=function(_0x194173){try{if(this[_0x416a('0x30')](_0x194173)){logger[_0x416a('0x34')](_0x416a('0x7d'),_0x194173['uniqueid'],util[_0x416a('0x2e')](_0x194173,{'showHidden':![],'depth':null}));if(this[_0x416a('0x15')][_0x194173[_0x416a('0x33')]]&&_0x194173[_0x416a('0x39')]!='OutgoingSpoolFailed'){if(this['isNotNull'](_0x194173[_0x416a('0x7e')])){if(this['isNotNull'](_0x194173[_0x416a('0x7e')][_0x416a('0x7f')])){logger[_0x416a('0x2a')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x194173[_0x416a('0x33')],_0x194173['value']);this[_0x416a('0x71')](_0x194173[_0x416a('0x33')],_0x194173[_0x416a('0x80')]);}else if(this[_0x416a('0x30')](_0x194173['variable'][_0x416a('0x81')])){logger[_0x416a('0x2a')](_0x416a('0x82'),_0x194173[_0x416a('0x33')],_0x194173['value']);this[_0x416a('0x15')][_0x194173[_0x416a('0x33')]]['calleridnum']=_0x194173[_0x416a('0x80')];}else if(this['isNotNull'](_0x194173['variable'][_0x416a('0x83')])){logger[_0x416a('0x2a')](_0x416a('0x84'),_0x194173[_0x416a('0x33')],_0x194173[_0x416a('0x80')]);this[_0x416a('0x15')][_0x194173[_0x416a('0x33')]]['callerid']=_0x194173[_0x416a('0x80')];}else if(this['isNotNull'](_0x194173[_0x416a('0x7e')]['xmd-cdrtype'])){logger['info'](_0x416a('0x85'),_0x194173[_0x416a('0x33')],_0x194173['value']);this[_0x416a('0x15')][_0x194173[_0x416a('0x33')]]['type']=_0x194173[_0x416a('0x80')];}else if(this[_0x416a('0x30')](_0x194173[_0x416a('0x7e')]['xmd-queue'])){logger[_0x416a('0x2a')](_0x416a('0x86'),_0x194173[_0x416a('0x33')],_0x194173['value']['split'](',')[0x0]);this[_0x416a('0x15')][_0x194173[_0x416a('0x33')]][_0x416a('0x9')]=_0x194173[_0x416a('0x80')][_0x416a('0x3a')](',')[0x0];}else if(this[_0x416a('0x30')](_0x194173[_0x416a('0x7e')][_0x416a('0x87')])){logger[_0x416a('0x2a')](_0x416a('0x88'),_0x194173[_0x416a('0x33')],_0x194173[_0x416a('0x80')]);this[_0x416a('0x15')][_0x194173[_0x416a('0x33')]][_0x416a('0x89')]=_0x194173['value'];}else if(this['isNotNull'](_0x194173[_0x416a('0x7e')][_0x416a('0x8a')])){logger['info'](_0x416a('0x8b'),_0x194173[_0x416a('0x33')],_0x194173[_0x416a('0x80')]);this[_0x416a('0x15')][_0x194173['uniqueid']]['destination']=_0x194173[_0x416a('0x80')];}else if(this[_0x416a('0x30')](_0x194173[_0x416a('0x7e')]['xmd-callerid-preview'])){logger['info'](_0x416a('0x8c'),_0x194173[_0x416a('0x33')],_0x194173[_0x416a('0x80')]);this[_0x416a('0x15')][_0x194173[_0x416a('0x33')]][_0x416a('0x8d')]=_0x194173[_0x416a('0x80')];}else if(this['isNotNull'](_0x194173[_0x416a('0x7e')][_0x416a('0x8e')])){logger[_0x416a('0x2a')]('[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s',_0x194173[_0x416a('0x33')],_0x194173[_0x416a('0x80')]);this[_0x416a('0x15')][_0x194173['uniqueid']][_0x416a('0x9')]=_0x194173[_0x416a('0x80')];}else if(this[_0x416a('0x30')](_0x194173[_0x416a('0x7e')][_0x416a('0x8f')])){logger[_0x416a('0x2a')](_0x416a('0x90'),_0x194173[_0x416a('0x33')],_0x194173[_0x416a('0x80')]);this['channels'][_0x194173[_0x416a('0x33')]][_0x416a('0x91')]=_0x194173[_0x416a('0x80')];}}}else if(this[_0x416a('0x30')](_0x194173['variable'][_0x416a('0x7f')])){if(_0x194173[_0x416a('0x80')]){var _0x118629=path[_0x416a('0x92')](_0x194173[_0x416a('0x80')])[_0x416a('0x4d')];logger[_0x416a('0x2a')](_0x416a('0x93'),_0x118629,_0x194173[_0x416a('0x80')]);this[_0x416a('0x71')](_0x118629,_0x194173[_0x416a('0x80')]);}}else if(this['channels'][_0x194173[_0x416a('0x46')]]){if(this['isNotNull'](_0x194173[_0x416a('0x7e')])){if(this[_0x416a('0x30')](_0x194173[_0x416a('0x7e')][_0x416a('0x8f')])){logger[_0x416a('0x2a')](_0x416a('0x90'),_0x194173[_0x416a('0x46')],_0x194173[_0x416a('0x80')]);this['channels'][_0x194173[_0x416a('0x46')]][_0x416a('0x94')]=_0x194173['value'];}}}}}catch(_0x5d9383){logger[_0x416a('0x2c')](_0x416a('0x95'),_0x194173[_0x416a('0x33')],util[_0x416a('0x2e')](_0x5d9383,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x416a('0x2f')][_0x416a('0x20')]=function(_0x226e5b){try{if(this[_0x416a('0x30')](_0x226e5b)){logger['debug'](_0x416a('0x96'),_0x226e5b['uniqueid'],util[_0x416a('0x2e')](_0x226e5b,{'showHidden':![],'depth':null}));if(this['blindTransfers'][_0x226e5b[_0x416a('0x46')]]){if(this[_0x416a('0x15')][this[_0x416a('0x17')][_0x226e5b[_0x416a('0x46')]][_0x416a('0x46')]]){this[_0x416a('0x15')][this[_0x416a('0x17')][_0x226e5b['linkedid']][_0x416a('0x46')]][_0x416a('0x33')]=_0x226e5b[_0x416a('0x33')];this[_0x416a('0x15')][this['blindTransfers'][_0x226e5b[_0x416a('0x46')]][_0x416a('0x46')]][_0x416a('0x65')]=this[_0x416a('0x15')][_0x226e5b['uniqueid']][_0x416a('0x65')];this[_0x416a('0x15')][this[_0x416a('0x17')][_0x226e5b[_0x416a('0x46')]]['linkedid']][_0x416a('0x66')]=this[_0x416a('0x15')][_0x226e5b[_0x416a('0x33')]][_0x416a('0x66')];this['channels'][this['blindTransfers'][_0x226e5b[_0x416a('0x46')]][_0x416a('0x46')]][_0x416a('0x6c')]=this['channels'][this[_0x416a('0x17')][_0x226e5b[_0x416a('0x46')]][_0x416a('0x46')]]['channel'];this[_0x416a('0x15')][this['blindTransfers'][_0x226e5b['linkedid']][_0x416a('0x46')]]['disposition']=this[_0x416a('0x15')][_0x226e5b[_0x416a('0x33')]][_0x416a('0x58')];this[_0x416a('0x15')][_0x226e5b['uniqueid']]=this['channels'][this['blindTransfers'][_0x226e5b['linkedid']][_0x416a('0x46')]];delete this[_0x416a('0x15')][this[_0x416a('0x17')][_0x226e5b[_0x416a('0x46')]][_0x416a('0x46')]];}else if(this[_0x416a('0x15')][this[_0x416a('0x17')][_0x226e5b[_0x416a('0x46')]][_0x416a('0x33')]]){this[_0x416a('0x15')][this[_0x416a('0x17')][_0x226e5b[_0x416a('0x46')]][_0x416a('0x33')]][_0x416a('0x33')]=[this[_0x416a('0x15')][this[_0x416a('0x17')][_0x226e5b[_0x416a('0x46')]]['uniqueid']][_0x416a('0x46')],this[_0x416a('0x15')][this[_0x416a('0x17')][_0x226e5b['linkedid']][_0x416a('0x33')]][_0x416a('0x46')]=this[_0x416a('0x15')][this[_0x416a('0x17')][_0x226e5b[_0x416a('0x46')]][_0x416a('0x33')]]['uniqueid']][0x0];this[_0x416a('0x15')][this['blindTransfers'][_0x226e5b['linkedid']][_0x416a('0x33')]][_0x416a('0x65')]=this[_0x416a('0x15')][_0x226e5b[_0x416a('0x33')]][_0x416a('0x65')];this[_0x416a('0x15')][this['blindTransfers'][_0x226e5b['linkedid']][_0x416a('0x33')]][_0x416a('0x66')]=this[_0x416a('0x15')][_0x226e5b['uniqueid']][_0x416a('0x66')];this[_0x416a('0x15')][this[_0x416a('0x17')][_0x226e5b[_0x416a('0x46')]][_0x416a('0x33')]][_0x416a('0x6c')]=this['channels'][this[_0x416a('0x17')][_0x226e5b[_0x416a('0x46')]][_0x416a('0x33')]]['channel'];this[_0x416a('0x15')][this[_0x416a('0x17')][_0x226e5b[_0x416a('0x46')]][_0x416a('0x33')]][_0x416a('0x58')]=this[_0x416a('0x15')][_0x226e5b[_0x416a('0x33')]][_0x416a('0x58')];this[_0x416a('0x15')][_0x226e5b[_0x416a('0x33')]]=this[_0x416a('0x15')][this[_0x416a('0x17')][_0x226e5b[_0x416a('0x46')]][_0x416a('0x33')]];delete this['channels'][this[_0x416a('0x17')][_0x226e5b['linkedid']]['uniqueid']];}}if(this[_0x416a('0x15')][_0x226e5b[_0x416a('0x33')]]){logger[_0x416a('0x2a')](_0x416a('0x97'),_0x226e5b[_0x416a('0x33')],_0x226e5b['cause-txt']);var _0x297906=moment();this[_0x416a('0x15')][_0x226e5b['uniqueid']]['endtime']=_0x297906['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x416a('0x15')][_0x226e5b[_0x416a('0x33')]][_0x416a('0x55')]=_0x297906[_0x416a('0x68')](this[_0x416a('0x15')][_0x226e5b['uniqueid']][_0x416a('0x48')],_0x416a('0x57'));if(this['channels'][_0x226e5b[_0x416a('0x33')]][_0x416a('0x65')]){this[_0x416a('0x15')][_0x226e5b[_0x416a('0x33')]]['billableseconds']=_0x297906[_0x416a('0x68')](this[_0x416a('0x15')][_0x226e5b[_0x416a('0x33')]][_0x416a('0x66')],_0x416a('0x57'));this['channels'][_0x226e5b[_0x416a('0x33')]][_0x416a('0x67')]=this['channels'][_0x226e5b[_0x416a('0x33')]][_0x416a('0x55')]-this[_0x416a('0x15')][_0x226e5b[_0x416a('0x33')]][_0x416a('0x98')];}if(_0x226e5b[_0x416a('0x37')]===_0x416a('0x38')){if(this[_0x416a('0x16')][_0x226e5b[_0x416a('0x39')][_0x416a('0x3a')]('-')[0x0]]){this[_0x416a('0x16')][_0x226e5b['channel']['split']('-')[0x0]]=_['omit'](this[_0x416a('0x16')][_0x226e5b[_0x416a('0x39')]['split']('-')[0x0]],[_0x416a('0x3d')]);logger['debug'](_0x416a('0x99'),_0x226e5b[_0x416a('0x33')],util['inspect']({'id':this['agents'][_0x226e5b[_0x416a('0x39')][_0x416a('0x3a')]('-')[0x0]]['id'],'destaccountcode':this[_0x416a('0x16')][_0x226e5b[_0x416a('0x39')][_0x416a('0x3a')]('-')[0x0]][_0x416a('0x42')]},{'showHidden':![],'depth':null}));this[_0x416a('0x32')](util[_0x416a('0x3f')](_0x416a('0x40'),this['agents'][_0x226e5b[_0x416a('0x39')][_0x416a('0x3a')]('-')[0x0]][_0x416a('0x4d')]),_0x416a('0x9a'),{'id':this[_0x416a('0x16')][_0x226e5b[_0x416a('0x39')][_0x416a('0x3a')]('-')[0x0]]['id'],'destaccountcode':this[_0x416a('0x16')][_0x226e5b[_0x416a('0x39')]['split']('-')[0x0]][_0x416a('0x42')]});for(var _0x2401e5=0x0;_0x2401e5<Object[_0x416a('0x4b')](this['agents'])['length'];_0x2401e5++){var _0x1784ec=Object[_0x416a('0x4b')](this[_0x416a('0x16')])[_0x2401e5];var _0x40d7c1=this[_0x416a('0x16')][_0x1784ec];if(_0x40d7c1[_0x416a('0x42')]===Number(_0x226e5b[_0x416a('0x3e')])){this[_0x416a('0x32')](util['format'](_0x416a('0x40'),_0x40d7c1[_0x416a('0x4d')]),'user:agentcomplete',{'id':_0x40d7c1['id'],'destaccountcode':_0x40d7c1['accountcode'],'transfer':this[_0x416a('0x15')][_0x226e5b['uniqueid']][_0x416a('0x9b')]});break;}}}}var _0xadccef=this;Promise['resolve']()[_0x416a('0x9c')](function(){var _0x4c1bfb=_0xadccef[_0x416a('0x15')][_0x226e5b[_0x416a('0x33')]];if(typeof _0x4c1bfb['transferType']==='undefined')return;if(_[_0x416a('0x9d')](_0x4c1bfb[_0x416a('0x79')]))return;return RpcSetting[_0x416a('0x9e')]()[_0x416a('0x9c')](function(_0x494fcc){if(!_0x494fcc[_0x416a('0x9f')])return;return Promise[_0x416a('0xa0')]()[_0x416a('0x9c')](function(){return ami['Action']({'action':_0x416a('0xa1'),'channel':_0x4c1bfb[_0x416a('0x39')]})[_0x416a('0xa2')](function(){});})['then'](function(){return ami['Action']({'action':_0x416a('0xa1'),'channel':_0x4c1bfb[_0x416a('0x6c')]})['catch'](function(){})[_0x416a('0xa3')](function(){var _0x593e98=_0xadccef[_0x416a('0x16')][_0x4c1bfb[_0x416a('0x6c')][_0x416a('0x3a')]('-')[0x0]];if(!_0x593e98)return;io[_0x416a('0x32')](_0x416a('0xa4'),{'agentId':_0x593e98['id'],'uniqueid':_0x4c1bfb[_0x416a('0x33')]});});});});})[_0x416a('0x9c')](function(){if(_0x226e5b[_0x416a('0xa5')]==='BlindTransfer'){_0xadccef[_0x416a('0x17')][_0x226e5b[_0x416a('0x33')]]=_0x226e5b;}else{if(_0xadccef[_0x416a('0x15')][_0x226e5b[_0x416a('0x33')]]['type']===_0x416a('0xa6')&&_0xadccef[_0x416a('0x17')][_0x226e5b['uniqueid']]){_0xadccef[_0x416a('0x15')][_0x226e5b[_0x416a('0x33')]][_0x416a('0x33')]=[_0xadccef['channels'][_0x226e5b[_0x416a('0x33')]]['linkedid'],_0xadccef['channels'][_0x226e5b[_0x416a('0x33')]][_0x416a('0x46')]=_0xadccef[_0x416a('0x15')][_0x226e5b[_0x416a('0x33')]][_0x416a('0x33')]][0x0];delete _0xadccef[_0x416a('0x17')][_0x226e5b['uniqueid']];}}logger[_0x416a('0x34')](_0x416a('0xa7'),_0x226e5b[_0x416a('0x33')],util[_0x416a('0x2e')](_0xadccef[_0x416a('0x15')][_0x226e5b[_0x416a('0x33')]],{'showHidden':![],'depth':null}));ami['emit'](_0x416a('0xa8'),_0xadccef[_0x416a('0x15')][_0x226e5b[_0x416a('0x33')]]);delete _0xadccef['channels'][_0x226e5b[_0x416a('0x33')]];});}}}catch(_0x15d7c1){logger['error']('[%s][voiceCallReport][hangup]',_0x226e5b[_0x416a('0x33')],util['inspect'](_0x15d7c1,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x416a('0x2f')][_0x416a('0x24')]=function(_0x49f1cb){try{if(this[_0x416a('0x30')](_0x49f1cb)){logger[_0x416a('0x2a')]('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x49f1cb['uniqueid'],_0x49f1cb[_0x416a('0xa9')],_0x49f1cb[_0x416a('0xaa')]);logger[_0x416a('0x34')](_0x416a('0xab'),_0x49f1cb['uniqueid'],util[_0x416a('0x2e')](_0x49f1cb,{'showHidden':![],'depth':null}));var _0x378304;if(this[_0x416a('0x15')][_0x49f1cb['transfereeuniqueid']]){this[_0x416a('0x15')][_0x49f1cb[_0x416a('0xac')]][_0x416a('0xad')]=_0x49f1cb[_0x416a('0xa9')];this['channels'][_0x49f1cb['transfereeuniqueid']][_0x416a('0xae')]=_0x49f1cb[_0x416a('0xaa')];if(this[_0x416a('0x15')][_0x49f1cb[_0x416a('0xaf')]]){_0x378304=this[_0x416a('0x15')][_0x49f1cb['secondtransfereruniqueid']];this['channels'][_0x49f1cb[_0x416a('0xaf')]]=this['channels'][_0x49f1cb[_0x416a('0xac')]];this[_0x416a('0x15')][_0x49f1cb[_0x416a('0xac')]]=_0x378304;}this[_0x416a('0x15')][_0x49f1cb[_0x416a('0xaf')]]['transferType']=_0x416a('0xb0');}else if(this['channels'][_0x49f1cb[_0x416a('0xb1')]]){this['channels'][_0x49f1cb[_0x416a('0xb1')]][_0x416a('0xad')]=_0x49f1cb[_0x416a('0xa9')];this[_0x416a('0x15')][_0x49f1cb['transfertargetuniqueid']]['transferconnectedlinenum']=_0x49f1cb[_0x416a('0xaa')];if(this['channels'][_0x49f1cb['origtransfereruniqueid']]){_0x378304=this[_0x416a('0x15')][_0x49f1cb[_0x416a('0xb2')]];this[_0x416a('0x15')][_0x49f1cb['origtransfereruniqueid']]=this[_0x416a('0x15')][_0x49f1cb[_0x416a('0xb1')]];this[_0x416a('0x15')][_0x49f1cb['transfertargetuniqueid']]=_0x378304;}this['channels'][_0x49f1cb[_0x416a('0xb1')]][_0x416a('0x9b')]=_0x416a('0xb0');}if((this['channels'][_0x49f1cb[_0x416a('0xb2')]]||this['channels'][_0x49f1cb[_0x416a('0xb3')]])&&this['channels'][_0x49f1cb[_0x416a('0xaf')]]){var _0x1bd2b0=_['some']([this['channels'][_0x49f1cb[_0x416a('0xb2')]],this[_0x416a('0x15')][_0x49f1cb[_0x416a('0xb3')]],this[_0x416a('0x15')][_0x49f1cb[_0x416a('0xaf')]]],function(_0x43cc3d){return _0x43cc3d&&_0x43cc3d[_0x416a('0x5e')]==='outbound'&&_0x43cc3d[_0x416a('0xb4')];});if(_0x1bd2b0){if(this[_0x416a('0x15')][_0x49f1cb[_0x416a('0xb2')]])this['channels'][_0x49f1cb['origtransfereruniqueid']][_0x416a('0x9b')]='ATTENDED';if(this[_0x416a('0x15')][_0x49f1cb['origtransfererlinkedid']])this['channels'][_0x49f1cb['origtransfererlinkedid']][_0x416a('0x9b')]=_0x416a('0xb0');this['channels'][_0x49f1cb['secondtransfereruniqueid']]['transferType']=_0x416a('0xb0');}}}}catch(_0x37e0de){logger[_0x416a('0x2c')](_0x416a('0xb5'),_0x49f1cb[_0x416a('0x33')],util[_0x416a('0x2e')](_0x37e0de,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x416a('0x2f')]['syncBlindTransfer']=function(_0xabc00b){try{if(this[_0x416a('0x30')](_0xabc00b)){logger[_0x416a('0x2a')]('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0xabc00b[_0x416a('0x33')],_0xabc00b['transfereecalleridnum'],_0xabc00b[_0x416a('0xb6')]);logger[_0x416a('0x34')](_0x416a('0xb7'),_0xabc00b[_0x416a('0x33')],util[_0x416a('0x2e')](_0xabc00b,{'showHidden':![],'depth':null}));if(this[_0x416a('0x15')][_0xabc00b[_0x416a('0xac')]]){this[_0x416a('0x15')][_0xabc00b[_0x416a('0xac')]][_0x416a('0xad')]=_0xabc00b[_0x416a('0xb8')];this['channels'][_0xabc00b[_0x416a('0xac')]][_0x416a('0xae')]=_0xabc00b[_0x416a('0xb6')];this[_0x416a('0x15')][_0xabc00b[_0x416a('0xac')]][_0x416a('0x9b')]=_0x416a('0xb9');this[_0x416a('0x20')]({'event':'BlindTransfer','uniqueid':_0xabc00b[_0x416a('0xac')],'linkedid':_0xabc00b[_0x416a('0xba')],'context':_0xabc00b[_0x416a('0x37')],'channel':_0xabc00b[_0x416a('0xbb')]});}else{this['channels'][_0xabc00b[_0x416a('0xba')]][_0x416a('0x9b')]='BLIND';this['syncHangup']({'event':_0x416a('0xbc'),'uniqueid':_0xabc00b[_0x416a('0xba')],'linkedid':_0xabc00b['transfereeuniqueid'],'context':_0xabc00b['context'],'channel':_0xabc00b[_0x416a('0xbb')]});}}}catch(_0x1edd94){logger[_0x416a('0x2c')](_0x416a('0xbd'),_0xabc00b[_0x416a('0x33')],util[_0x416a('0x2e')](_0x1edd94,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x416a('0x2f')][_0x416a('0x27')]=function(_0x4069fd){try{if(this[_0x416a('0x30')](_0x4069fd)){logger['debug'](_0x416a('0xbe'),_0x4069fd[_0x416a('0x33')],util[_0x416a('0x2e')](_0x4069fd,{'showHidden':![],'depth':null}));if(this[_0x416a('0x15')][_0x4069fd[_0x416a('0x33')]]){if(!_[_0x416a('0x5f')](this[_0x416a('0x15')][_0x4069fd['uniqueid']][_0x416a('0x66')])){this[_0x416a('0x15')][_0x4069fd[_0x416a('0x33')]][_0x416a('0xbf')]=moment()['format'](_0x416a('0x49'));logger[_0x416a('0x2a')]('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x4069fd['uniqueid'],this[_0x416a('0x15')][_0x4069fd[_0x416a('0x33')]][_0x416a('0xbf')]);}}}}catch(_0x115a4a){logger[_0x416a('0x2c')](_0x416a('0xc0'),_0x4069fd[_0x416a('0x33')],util['inspect'](_0x115a4a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x416a('0x2f')][_0x416a('0x29')]=function(_0x3d238f){try{if(this[_0x416a('0x30')](_0x3d238f)){logger[_0x416a('0x34')](_0x416a('0xc1'),_0x3d238f[_0x416a('0x33')],util[_0x416a('0x2e')](_0x3d238f,{'showHidden':![],'depth':null}));if(this['channels'][_0x3d238f[_0x416a('0x33')]]){if(!_['isNil'](this[_0x416a('0x15')][_0x3d238f['uniqueid']][_0x416a('0xbf')])){this[_0x416a('0x15')][_0x3d238f[_0x416a('0x33')]][_0x416a('0xc2')]+=moment()[_0x416a('0xc3')](0x0)[_0x416a('0x68')](this[_0x416a('0x15')][_0x3d238f[_0x416a('0x33')]]['mohstarttime'],_0x416a('0x57'));logger[_0x416a('0x2a')](_0x416a('0xc4'),_0x3d238f[_0x416a('0x33')],this['channels'][_0x3d238f[_0x416a('0x33')]][_0x416a('0xc2')]);delete this[_0x416a('0x15')][_0x3d238f['uniqueid']][_0x416a('0xbf')];}}}}catch(_0x136fca){logger['error']('[%s][voiceCallReport][musiconholdstop]',_0x3d238f['uniqueid'],util[_0x416a('0x2e')](_0x136fca,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
+var _0x4c70=['[%s][voiceCallReport][attendedtransfer]','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','transfererchannel','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','syncMusicOnHoldStart','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]','exports','moment','util','path','ioredis','../../../config/environment','../../../config/logger','ami','set','agi','dial','playback','voicemail','NO\x20ANSWER','FAILED','BUSY','redis','defaults','socket.io-emitter','agents','coreshowchannel','syncNewExten','bind','newexten','newchannel','newstate','syncNewState','syncVarSet','hangup','syncHangup','newcallerid','syncNewCallerId','syncAttendedTransfer','syncBlindTransfer','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','isUndefined','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','debug','linkedid','channels','merge','pick','keys','context','from-sip','exten','xcally-motion-preview','channel','split','destconnectedlinenum','connectedlinenum','format','user:%s','name','user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','syncNewChannel','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','channelstate','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','seconds','includes','lastapplication','lastdata','cdr(','match','queue','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','calleridnum','answered','answertime','holdtime','diff','connectedlinename','destinationchannel','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','replace','.wav49','.WAV','find','isNil','monitors','push','rec','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','xmd-queue','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','calleridpreview','xmcs-queue','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','cause-txt','endtime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','transferType','resolve','then','undefined','getSettings','stopRecordingOnTransfer','Action','StopMixMonitor','catch','webbar:stopmonitors','event','BlindTransfer','blindTransfers','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','origtransferercalleridnum','transfertargetcalleridnum','transfereeuniqueid','transfercalleridnum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','transferconnectedlinenum','origtransfereruniqueid','origtransfererlinkedid','some','outbound','routeid'];(function(_0x21ecd6,_0x53e0a6){var _0x5b2b5a=function(_0x13e95b){while(--_0x13e95b){_0x21ecd6['push'](_0x21ecd6['shift']());}};_0x5b2b5a(++_0x53e0a6);}(_0x4c70,0xd6));var _0x04c7=function(_0x40bd56,_0x2491d1){_0x40bd56=_0x40bd56-0x0;var _0x20947d=_0x4c70[_0x40bd56];return _0x20947d;};'use strict';var _=require('lodash');var moment=require(_0x04c7('0x0'));var util=require(_0x04c7('0x1'));var path=require(_0x04c7('0x2'));var Redis=require(_0x04c7('0x3'));var config=require(_0x04c7('0x4'));var logger=require(_0x04c7('0x5'))(_0x04c7('0x6'));var ami=require('../ami');var Channel=require('../model/channel');var RpcSetting=require('../rpc/setting');var applications=[_0x04c7('0x7'),'queue',_0x04c7('0x8'),_0x04c7('0x9'),_0x04c7('0xa'),_0x04c7('0xb')];var dispositions=[_0x04c7('0xc'),_0x04c7('0xd'),_0x04c7('0xd'),_0x04c7('0xc'),_0x04c7('0xc'),_0x04c7('0xc'),'ANSWERED',_0x04c7('0xe'),_0x04c7('0xd'),'FAILED',_0x04c7('0xd')];config[_0x04c7('0xf')]=_[_0x04c7('0x10')](config[_0x04c7('0xf')],{'host':'localhost','port':0x18eb});var io=require(_0x04c7('0x11'))(new Redis(config[_0x04c7('0xf')]));function VoiceCallReport(_0xdf467){this['channels']=_0xdf467['channels'];this[_0x04c7('0x12')]=_0xdf467[_0x04c7('0x12')];this['blindTransfers']={};ami['on'](_0x04c7('0x13'),this[_0x04c7('0x14')][_0x04c7('0x15')](this));ami['on'](_0x04c7('0x16'),this[_0x04c7('0x14')][_0x04c7('0x15')](this));ami['on'](_0x04c7('0x17'),this['syncNewChannel'][_0x04c7('0x15')](this));ami['on'](_0x04c7('0x18'),this[_0x04c7('0x19')]['bind'](this));ami['on']('varset',this[_0x04c7('0x1a')][_0x04c7('0x15')](this));ami['on'](_0x04c7('0x1b'),this[_0x04c7('0x1c')][_0x04c7('0x15')](this));ami['on'](_0x04c7('0x1d'),this[_0x04c7('0x1e')]['bind'](this));ami['on']('attendedtransfer',this[_0x04c7('0x1f')][_0x04c7('0x15')](this));ami['on']('blindtransfer',this[_0x04c7('0x20')]['bind'](this));ami['on'](_0x04c7('0x21'),this['syncMusicOnHoldStart']['bind'](this));ami['on'](_0x04c7('0x22'),this[_0x04c7('0x23')]['bind'](this));try{logger[_0x04c7('0x24')](_0x04c7('0x25'));ami[_0x04c7('0x26')]();}catch(_0x13924b){logger[_0x04c7('0x27')](_0x04c7('0x28'),util[_0x04c7('0x29')](_0x13924b,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x04c7('0x2a')][_0x04c7('0x2b')]=function(_0x4b3177){return _0x4b3177!==null&&!_[_0x04c7('0x2c')](_0x4b3177);};VoiceCallReport[_0x04c7('0x2a')]['emit']=function(_0x8f7012,_0x14eb3e,_0x21eca8){io['to'](_0x8f7012)[_0x04c7('0x2d')](_0x14eb3e,_0x21eca8);};VoiceCallReport[_0x04c7('0x2a')][_0x04c7('0x1e')]=function(_0x24dbd5){try{if(this['isNotNull'](_0x24dbd5)){logger['info'](_0x04c7('0x2e'),_0x24dbd5[_0x04c7('0x2f')],_0x24dbd5[_0x04c7('0x30')],_0x24dbd5['calleridnum']);logger[_0x04c7('0x31')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x24dbd5['uniqueid'],util[_0x04c7('0x29')](_0x24dbd5,{'showHidden':![],'depth':null}));if(_0x24dbd5[_0x04c7('0x2f')]===_0x24dbd5[_0x04c7('0x32')]){if(!_['isUndefined'](this[_0x04c7('0x33')][_0x24dbd5[_0x04c7('0x2f')]])){_[_0x04c7('0x34')](this[_0x04c7('0x33')][_0x24dbd5[_0x04c7('0x2f')]],_[_0x04c7('0x35')](_0x24dbd5,_[_0x04c7('0x36')](this[_0x04c7('0x33')][_0x24dbd5['uniqueid']])));}}if(_0x24dbd5[_0x04c7('0x37')]===_0x04c7('0x38')){if(this['agents'][_0x24dbd5['channel']['split']('-')[0x0]]){if(_0x24dbd5[_0x04c7('0x39')]==_0x04c7('0x3a')){this[_0x04c7('0x12')][_0x24dbd5[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x3d')]=_0x24dbd5[_0x04c7('0x3e')];this[_0x04c7('0x2d')](util[_0x04c7('0x3f')](_0x04c7('0x40'),this['agents'][_0x24dbd5['channel'][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x41')]),_0x04c7('0x42'),{'destaccountcode':this[_0x04c7('0x12')][_0x24dbd5['channel']['split']('-')[0x0]][_0x04c7('0x43')],'destconnectedlinenum':_0x24dbd5[_0x04c7('0x3e')]});}}}}}catch(_0xd6986d){logger[_0x04c7('0x27')](_0x04c7('0x44'),_0x24dbd5[_0x04c7('0x2f')],util['inspect'](_0xd6986d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x04c7('0x2a')][_0x04c7('0x45')]=function(_0x1d493d){try{if(this['isNotNull'](_0x1d493d)){logger[_0x04c7('0x31')](_0x04c7('0x46'),_0x1d493d[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x1d493d,{'showHidden':![],'depth':null}));if(_0x1d493d[_0x04c7('0x2f')]===_0x1d493d[_0x04c7('0x32')]&&_0x1d493d[_0x04c7('0x3b')]!=_0x04c7('0x47')){if(_[_0x04c7('0x2c')](this[_0x04c7('0x33')][_0x1d493d[_0x04c7('0x2f')]])){logger[_0x04c7('0x24')](_0x04c7('0x48'),_0x1d493d[_0x04c7('0x2f')],_0x1d493d['context'],_0x1d493d[_0x04c7('0x39')]);this['channels'][_0x1d493d[_0x04c7('0x2f')]]=new Channel();this[_0x04c7('0x33')][_0x1d493d[_0x04c7('0x2f')]][_0x04c7('0x49')]=moment()['format'](_0x04c7('0x4a'));this[_0x04c7('0x33')][_0x1d493d[_0x04c7('0x2f')]][_0x04c7('0x4b')]=dispositions[_['toNumber'](_0x1d493d[_0x04c7('0x4c')])];_[_0x04c7('0x34')](this[_0x04c7('0x33')][_0x1d493d[_0x04c7('0x2f')]],_[_0x04c7('0x35')](_0x1d493d,_[_0x04c7('0x36')](this[_0x04c7('0x33')][_0x1d493d[_0x04c7('0x2f')]])));if(_0x1d493d[_0x04c7('0x37')]===_0x04c7('0x38')){if(this[_0x04c7('0x12')][_0x1d493d[_0x04c7('0x3b')]['split']('-')[0x0]]){if(_[_0x04c7('0x2c')](this[_0x04c7('0x12')][_0x1d493d['channel'][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x3d')])){this['agents'][_0x1d493d['channel'][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x3d')]=_0x1d493d[_0x04c7('0x39')];logger[_0x04c7('0x31')](_0x04c7('0x4d'),_0x1d493d['uniqueid'],util[_0x04c7('0x29')]({'id':this[_0x04c7('0x12')][_0x1d493d['channel']['split']('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x1d493d[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x43')],'destconnectedlinenum':_0x1d493d['exten']},{'showHidden':![],'depth':null}));this[_0x04c7('0x2d')](util[_0x04c7('0x3f')]('user:%s',this[_0x04c7('0x12')][_0x1d493d['channel'][_0x04c7('0x3c')]('-')[0x0]]['name']),'user:agentconnect',{'id':this[_0x04c7('0x12')][_0x1d493d[_0x04c7('0x3b')]['split']('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x1d493d[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x1d493d[_0x04c7('0x39')]});}}}}}}}catch(_0x22da2f){logger['error']('[%s][voiceCallReport][newchannel]',_0x1d493d[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x22da2f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x04c7('0x2a')]['syncNewExten']=function(_0x1af4c9){try{if(this[_0x04c7('0x2b')](_0x1af4c9)){logger[_0x04c7('0x31')]('[%s][voiceCallReport][newexten]\x20event:',_0x1af4c9[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x1af4c9,{'showHidden':![],'depth':null}));if(_0x1af4c9['uniqueid']===_0x1af4c9[_0x04c7('0x32')]&&_0x1af4c9[_0x04c7('0x39')]!='h'&&_0x1af4c9[_0x04c7('0x3b')]!=_0x04c7('0x47')){_0x1af4c9[_0x04c7('0x4e')]=_0x1af4c9[_0x04c7('0x4e')][_0x04c7('0x4f')]();_0x1af4c9[_0x04c7('0x50')]=_0x1af4c9[_0x04c7('0x51')]&&_0x1af4c9[_0x04c7('0x51')][_0x04c7('0x52')](_0x04c7('0x53'))?_0x1af4c9[_0x04c7('0x51')]:(_0x1af4c9['appdata']||_0x1af4c9['applicationdata'])[_0x04c7('0x4f')]();logger['info'](_0x04c7('0x54'),_0x1af4c9['uniqueid'],_0x1af4c9[_0x04c7('0x4e')],_0x1af4c9['applicationdata']);if(_[_0x04c7('0x2c')](this[_0x04c7('0x33')][_0x1af4c9['uniqueid']])){this[_0x04c7('0x33')][_0x1af4c9[_0x04c7('0x2f')]]=new Channel();this[_0x04c7('0x33')][_0x1af4c9[_0x04c7('0x2f')]][_0x04c7('0x49')]=_0x1af4c9['duration']?moment()['subtract'](moment[_0x04c7('0x55')](_0x1af4c9[_0x04c7('0x55')])[_0x04c7('0x56')](),_0x04c7('0x56'))[_0x04c7('0x3f')](_0x04c7('0x4a')):moment()['format'](_0x04c7('0x4a'));this['channels'][_0x1af4c9[_0x04c7('0x2f')]][_0x04c7('0x4b')]=_0x04c7('0xc');}_[_0x04c7('0x34')](this['channels'][_0x1af4c9[_0x04c7('0x2f')]],_[_0x04c7('0x35')](_0x1af4c9,_[_0x04c7('0x36')](this[_0x04c7('0x33')][_0x1af4c9[_0x04c7('0x2f')]])));if(_[_0x04c7('0x57')](applications,_0x1af4c9[_0x04c7('0x4e')])){this[_0x04c7('0x33')][_0x1af4c9['uniqueid']][_0x04c7('0x58')]=_0x1af4c9['application'];this[_0x04c7('0x33')][_0x1af4c9['uniqueid']][_0x04c7('0x59')]=_0x1af4c9['applicationdata'];if(_0x1af4c9[_0x04c7('0x4e')]===_0x04c7('0x7')&&_['startsWith'](_0x1af4c9[_0x04c7('0x50')][_0x04c7('0x4f')](),_0x04c7('0x5a'))){var _0x3f67a7=_0x1af4c9[_0x04c7('0x50')]['split']('=');var _0x4e1d16=_0x3f67a7[0x0][_0x04c7('0x4f')]()[_0x04c7('0x5b')](/cdr\((.*)\)/);if(_0x4e1d16){this[_0x04c7('0x33')][_0x1af4c9[_0x04c7('0x2f')]][_0x4e1d16[0x1]]=_0x3f67a7[0x1];}}else if(_0x1af4c9['application']===_0x04c7('0x5c')){this['channels'][_0x1af4c9['uniqueid']]['queue']=_0x1af4c9[_0x04c7('0x50')][_0x04c7('0x3c')](',')[0x0];}}}}}catch(_0x18fb1d){logger['error'](_0x04c7('0x5d'),_0x1af4c9[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x18fb1d,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x04c7('0x19')]=function(_0x11e834){try{if(this[_0x04c7('0x2b')](_0x11e834)){logger[_0x04c7('0x24')](_0x04c7('0x5e'),_0x11e834['uniqueid'],_0x11e834[_0x04c7('0x32')],_0x11e834[_0x04c7('0x30')],_0x11e834[_0x04c7('0x5f')]);logger[_0x04c7('0x31')]('[%s][voiceCallReport][newstate]\x20event:',_0x11e834['uniqueid'],util[_0x04c7('0x29')](_0x11e834,{'showHidden':![],'depth':null}));if(_0x11e834[_0x04c7('0x2f')]!==_0x11e834[_0x04c7('0x32')]){if(this['channels'][_0x11e834[_0x04c7('0x32')]]){if(_0x11e834[_0x04c7('0x4c')]==='6'){if(!this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]][_0x04c7('0x60')]){var _0x6e32e7=moment();this[_0x04c7('0x33')][_0x11e834['linkedid']][_0x04c7('0x60')]=!![];this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]][_0x04c7('0x61')]=_0x6e32e7[_0x04c7('0x3f')](_0x04c7('0x4a'));if(this[_0x04c7('0x33')][_0x11e834['linkedid']]['starttime']){this[_0x04c7('0x33')][_0x11e834['linkedid']][_0x04c7('0x62')]=_0x6e32e7[_0x04c7('0x63')](this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]]['starttime'],'seconds');}}this['channels'][_0x11e834[_0x04c7('0x32')]][_0x04c7('0x32')]=_0x11e834[_0x04c7('0x2f')];if(_0x11e834[_0x04c7('0x5f')]!=='xcally-motion-preview'){this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]]['connectedlinenum']=_0x11e834[_0x04c7('0x5f')];}this[_0x04c7('0x33')][_0x11e834['linkedid']][_0x04c7('0x64')]=_0x11e834['calleridname'];this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]][_0x04c7('0x65')]=_0x11e834[_0x04c7('0x3b')];this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]][_0x04c7('0x4b')]=dispositions[_['toNumber'](_0x11e834[_0x04c7('0x4c')])];if(this[_0x04c7('0x12')][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]){this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]]['UserId']=this[_0x04c7('0x12')][_0x11e834['channel'][_0x04c7('0x3c')]('-')[0x0]]['id'];this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]]['membername']=this['agents'][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x41')];}}}}else{if(this['channels'][_0x11e834[_0x04c7('0x2f')]]){if(_0x11e834[_0x04c7('0x4c')]==='6'){if(this['agents'][_0x11e834['channel'][_0x04c7('0x3c')]('-')[0x0]]){this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x2f')]]['UserId']=this[_0x04c7('0x12')][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]['id'];this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x2f')]][_0x04c7('0x66')]=this[_0x04c7('0x12')][_0x11e834['channel'][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x41')];}}}}if(_0x11e834[_0x04c7('0x4c')]==='6'&&_0x11e834['context']===_0x04c7('0x38')){if(this['agents'][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]){this[_0x04c7('0x12')][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]['destconnectedlinenum']=_0x11e834[_0x04c7('0x39')];var _0x5cdd3a,_0x4cd318;if(this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x2f')]]){_0x5cdd3a=this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x2f')]][_0x04c7('0x67')];_0x4cd318=this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x2f')]]['queue'];}else if(this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]]){_0x5cdd3a=this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]][_0x04c7('0x67')];_0x4cd318=this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]]['queue'];}logger[_0x04c7('0x31')](_0x04c7('0x68'),_0x11e834[_0x04c7('0x2f')],util['inspect']({'id':this[_0x04c7('0x12')][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]['id'],'destaccountcode':this[_0x04c7('0x12')][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x43')],'destconnectedlinenum':_0x11e834[_0x04c7('0x39')],'routealias':_0x5cdd3a,'queue':_0x4cd318||undefined},{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x04c7('0x40'),this[_0x04c7('0x12')][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x41')]),_0x04c7('0x42'),{'id':this[_0x04c7('0x12')][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this[_0x04c7('0x12')][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x43')],'destconnectedlinenum':_0x11e834['exten'],'routealias':_0x5cdd3a,'queue':_0x4cd318||undefined});}}}}catch(_0x5861ad){logger[_0x04c7('0x27')](_0x04c7('0x69'),_0x11e834[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x5861ad,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x04c7('0x2a')][_0x04c7('0x6a')]=function(_0x39b2bf,_0x5dcaf1){try{if(this[_0x04c7('0x33')][_0x39b2bf]){logger[_0x04c7('0x24')](_0x04c7('0x6b'),_0x39b2bf,_0x5dcaf1);this[_0x04c7('0x33')][_0x39b2bf][_0x04c7('0x6c')]=!![];if(_[_0x04c7('0x6d')](_0x5dcaf1,'.wav49')){_0x5dcaf1=_0x5dcaf1[_0x04c7('0x6e')](_0x04c7('0x6f'),_0x04c7('0x70'));}this[_0x04c7('0x33')][_0x39b2bf]['monitorFilename']=_0x5dcaf1;var _0x2f5009=_[_0x04c7('0x71')](this[_0x04c7('0x33')][_0x39b2bf]['monitors'],{'filename':_0x5dcaf1});if(_[_0x04c7('0x72')](_0x2f5009)){this[_0x04c7('0x33')][_0x39b2bf][_0x04c7('0x73')][_0x04c7('0x74')]({'filename':_0x5dcaf1,'createdAt':moment()[_0x04c7('0x3f')](_0x04c7('0x4a')),'mixmonitorid':'','status':_0x04c7('0x75')});}}}catch(_0x2a3235){logger[_0x04c7('0x27')]('[%s][voiceCallReport][mixMonitorFilename]',_0x39b2bf,util[_0x04c7('0x29')](_0x2a3235,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x04c7('0x1a')]=function(_0x5847da){try{if(this[_0x04c7('0x2b')](_0x5847da)){logger[_0x04c7('0x31')](_0x04c7('0x76'),_0x5847da['uniqueid'],util['inspect'](_0x5847da,{'showHidden':![],'depth':null}));if(this[_0x04c7('0x33')][_0x5847da[_0x04c7('0x2f')]]&&_0x5847da[_0x04c7('0x3b')]!='OutgoingSpoolFailed'){if(this[_0x04c7('0x2b')](_0x5847da[_0x04c7('0x77')])){if(this['isNotNull'](_0x5847da[_0x04c7('0x77')][_0x04c7('0x78')])){logger['info'](_0x04c7('0x79'),_0x5847da[_0x04c7('0x2f')],_0x5847da['value']);this['syncMixMonitorFilename'](_0x5847da[_0x04c7('0x2f')],_0x5847da[_0x04c7('0x7a')]);}else if(this[_0x04c7('0x2b')](_0x5847da[_0x04c7('0x77')][_0x04c7('0x7b')])){logger[_0x04c7('0x24')](_0x04c7('0x7c'),_0x5847da[_0x04c7('0x2f')],_0x5847da[_0x04c7('0x7a')]);this[_0x04c7('0x33')][_0x5847da[_0x04c7('0x2f')]][_0x04c7('0x5f')]=_0x5847da[_0x04c7('0x7a')];}else if(this[_0x04c7('0x2b')](_0x5847da[_0x04c7('0x77')]['xmd-callerid'])){logger[_0x04c7('0x24')](_0x04c7('0x7d'),_0x5847da[_0x04c7('0x2f')],_0x5847da[_0x04c7('0x7a')]);this['channels'][_0x5847da[_0x04c7('0x2f')]][_0x04c7('0x7e')]=_0x5847da['value'];}else if(this['isNotNull'](_0x5847da[_0x04c7('0x77')][_0x04c7('0x7f')])){logger['info'](_0x04c7('0x80'),_0x5847da['uniqueid'],_0x5847da[_0x04c7('0x7a')]);this['channels'][_0x5847da[_0x04c7('0x2f')]][_0x04c7('0x81')]=_0x5847da[_0x04c7('0x7a')];}else if(this[_0x04c7('0x2b')](_0x5847da[_0x04c7('0x77')][_0x04c7('0x82')])){logger[_0x04c7('0x24')]('[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s',_0x5847da['uniqueid'],_0x5847da[_0x04c7('0x7a')][_0x04c7('0x3c')](',')[0x0]);this[_0x04c7('0x33')][_0x5847da[_0x04c7('0x2f')]][_0x04c7('0x5c')]=_0x5847da[_0x04c7('0x7a')][_0x04c7('0x3c')](',')[0x0];}else if(this[_0x04c7('0x2b')](_0x5847da[_0x04c7('0x77')][_0x04c7('0x83')])){logger['info'](_0x04c7('0x84'),_0x5847da[_0x04c7('0x2f')],_0x5847da[_0x04c7('0x7a')]);this[_0x04c7('0x33')][_0x5847da['uniqueid']][_0x04c7('0x85')]=_0x5847da['value'];}else if(this['isNotNull'](_0x5847da[_0x04c7('0x77')]['xmd-destination'])){logger[_0x04c7('0x24')](_0x04c7('0x86'),_0x5847da[_0x04c7('0x2f')],_0x5847da[_0x04c7('0x7a')]);this[_0x04c7('0x33')][_0x5847da[_0x04c7('0x2f')]]['destination']=_0x5847da['value'];}else if(this['isNotNull'](_0x5847da[_0x04c7('0x77')]['xmd-callerid-preview'])){logger[_0x04c7('0x24')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s',_0x5847da[_0x04c7('0x2f')],_0x5847da[_0x04c7('0x7a')]);this['channels'][_0x5847da[_0x04c7('0x2f')]][_0x04c7('0x87')]=_0x5847da[_0x04c7('0x7a')];}else if(this['isNotNull'](_0x5847da[_0x04c7('0x77')][_0x04c7('0x88')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s',_0x5847da['uniqueid'],_0x5847da['value']);this[_0x04c7('0x33')][_0x5847da['uniqueid']]['queue']=_0x5847da[_0x04c7('0x7a')];}else if(this['isNotNull'](_0x5847da[_0x04c7('0x77')][_0x04c7('0x89')])){logger[_0x04c7('0x24')](_0x04c7('0x8a'),_0x5847da[_0x04c7('0x2f')],_0x5847da[_0x04c7('0x7a')]);this[_0x04c7('0x33')][_0x5847da[_0x04c7('0x2f')]][_0x04c7('0x8b')]=_0x5847da[_0x04c7('0x7a')];}}}else if(this['isNotNull'](_0x5847da[_0x04c7('0x77')]['mixmonitor_filename'])){if(_0x5847da['value']){var _0x15e960=path[_0x04c7('0x8c')](_0x5847da[_0x04c7('0x7a')])[_0x04c7('0x41')];logger[_0x04c7('0x24')](_0x04c7('0x79'),_0x15e960,_0x5847da[_0x04c7('0x7a')]);this[_0x04c7('0x6a')](_0x15e960,_0x5847da[_0x04c7('0x7a')]);}}else if(this[_0x04c7('0x33')][_0x5847da[_0x04c7('0x32')]]){if(this['isNotNull'](_0x5847da[_0x04c7('0x77')])){if(this[_0x04c7('0x2b')](_0x5847da[_0x04c7('0x77')]['sipcallid'])){logger[_0x04c7('0x24')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x5847da[_0x04c7('0x32')],_0x5847da['value']);this['channels'][_0x5847da[_0x04c7('0x32')]][_0x04c7('0x8d')]=_0x5847da[_0x04c7('0x7a')];}}}}}catch(_0x2afdca){logger[_0x04c7('0x27')](_0x04c7('0x8e'),_0x5847da['uniqueid'],util['inspect'](_0x2afdca,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x04c7('0x2a')][_0x04c7('0x1c')]=function(_0xdbf55b){try{if(this[_0x04c7('0x2b')](_0xdbf55b)){logger[_0x04c7('0x31')](_0x04c7('0x8f'),_0xdbf55b[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0xdbf55b,{'showHidden':![],'depth':null}));if(this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]]){logger['info']('[%s][voiceCallReport][hangup]\x20reason:%s',_0xdbf55b['uniqueid'],_0xdbf55b[_0x04c7('0x90')]);var _0xc99010=moment();this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x91')]=_0xc99010['format'](_0x04c7('0x4a'));this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x55')]=_0xc99010[_0x04c7('0x63')](this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x49')],_0x04c7('0x56'));if(this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x60')]){this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x92')]=_0xc99010[_0x04c7('0x63')](this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x61')],_0x04c7('0x56'));this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x62')]=this[_0x04c7('0x33')][_0xdbf55b['uniqueid']][_0x04c7('0x55')]-this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x92')];}if(_0xdbf55b[_0x04c7('0x37')]===_0x04c7('0x38')){if(this[_0x04c7('0x12')][_0xdbf55b['channel'][_0x04c7('0x3c')]('-')[0x0]]){this[_0x04c7('0x12')][_0xdbf55b[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]=_[_0x04c7('0x93')](this['agents'][_0xdbf55b[_0x04c7('0x3b')]['split']('-')[0x0]],['destconnectedlinenum']);logger[_0x04c7('0x31')](_0x04c7('0x94'),_0xdbf55b[_0x04c7('0x2f')],util[_0x04c7('0x29')]({'id':this[_0x04c7('0x12')][_0xdbf55b['channel'][_0x04c7('0x3c')]('-')[0x0]]['id'],'destaccountcode':this[_0x04c7('0x12')][_0xdbf55b['channel'][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x43')]},{'showHidden':![],'depth':null}));this[_0x04c7('0x2d')](util[_0x04c7('0x3f')]('user:%s',this[_0x04c7('0x12')][_0xdbf55b[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x41')]),_0x04c7('0x95'),{'id':this[_0x04c7('0x12')][_0xdbf55b[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0xdbf55b[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]['accountcode']});for(var _0x4c59b1=0x0;_0x4c59b1<Object[_0x04c7('0x36')](this[_0x04c7('0x12')])[_0x04c7('0x96')];_0x4c59b1++){var _0x527935=Object[_0x04c7('0x36')](this[_0x04c7('0x12')])[_0x4c59b1];var _0x1c13ac=this[_0x04c7('0x12')][_0x527935];if(_0x1c13ac[_0x04c7('0x43')]===Number(_0xdbf55b[_0x04c7('0x3e')])){this['emit'](util[_0x04c7('0x3f')](_0x04c7('0x40'),_0x1c13ac[_0x04c7('0x41')]),_0x04c7('0x95'),{'id':_0x1c13ac['id'],'destaccountcode':_0x1c13ac[_0x04c7('0x43')],'transfer':this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x97')]});break;}}}}var _0x3962b3=this;Promise[_0x04c7('0x98')]()[_0x04c7('0x99')](function(){var _0x36e4f5=_0x3962b3[_0x04c7('0x33')][_0xdbf55b['uniqueid']];if(typeof _0x36e4f5[_0x04c7('0x97')]===_0x04c7('0x9a'))return;if(_['isEmpty'](_0x36e4f5[_0x04c7('0x73')]))return;return RpcSetting[_0x04c7('0x9b')]()[_0x04c7('0x99')](function(_0x1fb7aa){if(!_0x1fb7aa[_0x04c7('0x9c')])return;return Promise['resolve']()[_0x04c7('0x99')](function(){return ami[_0x04c7('0x9d')]({'action':_0x04c7('0x9e'),'channel':_0x36e4f5[_0x04c7('0x3b')]})[_0x04c7('0x9f')](function(){});})['then'](function(){return ami[_0x04c7('0x9d')]({'action':_0x04c7('0x9e'),'channel':_0x36e4f5[_0x04c7('0x65')]})[_0x04c7('0x9f')](function(){})['finally'](function(){var _0xbb6dfa=_0x3962b3['agents'][_0x36e4f5[_0x04c7('0x65')][_0x04c7('0x3c')]('-')[0x0]];if(!_0xbb6dfa)return;io[_0x04c7('0x2d')](_0x04c7('0xa0'),{'agentId':_0xbb6dfa['id'],'uniqueid':_0x36e4f5[_0x04c7('0x2f')]});});});});})['then'](function(){if(_0xdbf55b[_0x04c7('0xa1')]===_0x04c7('0xa2')){_0x3962b3['blindTransfers'][_0xdbf55b[_0x04c7('0x2f')]]=_0x3962b3[_0x04c7('0x33')][_0xdbf55b['uniqueid']];}else{if(_0x3962b3[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x81')]==='outbound'&&_0x3962b3[_0x04c7('0xa3')][_0xdbf55b[_0x04c7('0x2f')]]){_0x3962b3[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x2f')]=[_0x3962b3[_0x04c7('0x33')][_0xdbf55b['uniqueid']]['linkedid'],_0x3962b3[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x32')]=_0x3962b3[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x2f')]][0x0];delete _0x3962b3[_0x04c7('0xa3')][_0xdbf55b[_0x04c7('0x2f')]];}}logger[_0x04c7('0x31')](_0x04c7('0xa4'),_0xdbf55b[_0x04c7('0x2f')],util['inspect'](_0x3962b3[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]],{'showHidden':![],'depth':null}));ami[_0x04c7('0x2d')](_0x04c7('0xa5'),_0x3962b3[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]]);delete _0x3962b3[_0x04c7('0x33')][_0xdbf55b['uniqueid']];});}}}catch(_0x2821e9){logger[_0x04c7('0x27')](_0x04c7('0xa6'),_0xdbf55b['uniqueid'],util[_0x04c7('0x29')](_0x2821e9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x04c7('0x2a')][_0x04c7('0x1f')]=function(_0x110cd2){try{if(this['isNotNull'](_0x110cd2)){logger[_0x04c7('0x24')]('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x110cd2['uniqueid'],_0x110cd2[_0x04c7('0xa7')],_0x110cd2[_0x04c7('0xa8')]);logger[_0x04c7('0x31')]('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x110cd2['uniqueid'],util['inspect'](_0x110cd2,{'showHidden':![],'depth':null}));var _0x62452c;if(this[_0x04c7('0x33')][_0x110cd2['transfereeuniqueid']]){this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xa9')]][_0x04c7('0xaa')]=_0x110cd2[_0x04c7('0xa7')];this['channels'][_0x110cd2[_0x04c7('0xa9')]]['transferconnectedlinenum']=_0x110cd2[_0x04c7('0xa8')];if(this[_0x04c7('0x33')][_0x110cd2['secondtransfereruniqueid']]){_0x62452c=this[_0x04c7('0x33')][_0x110cd2['secondtransfereruniqueid']];this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xab')]]=this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xa9')]];this[_0x04c7('0x33')][_0x110cd2['transfereeuniqueid']]=_0x62452c;}this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xab')]]['transferType']=_0x04c7('0xac');}else if(this['channels'][_0x110cd2[_0x04c7('0xad')]]){this[_0x04c7('0x33')][_0x110cd2['transfertargetuniqueid']][_0x04c7('0xaa')]=_0x110cd2[_0x04c7('0xa7')];this['channels'][_0x110cd2[_0x04c7('0xad')]][_0x04c7('0xae')]=_0x110cd2[_0x04c7('0xa8')];if(this['channels'][_0x110cd2[_0x04c7('0xaf')]]){_0x62452c=this['channels'][_0x110cd2[_0x04c7('0xaf')]];this['channels'][_0x110cd2[_0x04c7('0xaf')]]=this['channels'][_0x110cd2[_0x04c7('0xad')]];this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xad')]]=_0x62452c;}this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xad')]][_0x04c7('0x97')]=_0x04c7('0xac');}if((this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xaf')]]||this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xb0')]])&&this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xab')]]){var _0x1309f7=_[_0x04c7('0xb1')]([this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xaf')]],this['channels'][_0x110cd2['origtransfererlinkedid']],this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xab')]]],function(_0x7aac2c){return _0x7aac2c&&_0x7aac2c['type']===_0x04c7('0xb2')&&_0x7aac2c[_0x04c7('0xb3')];});if(_0x1309f7){if(this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xaf')]])this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xaf')]][_0x04c7('0x97')]=_0x04c7('0xac');if(this['channels'][_0x110cd2[_0x04c7('0xb0')]])this['channels'][_0x110cd2[_0x04c7('0xb0')]]['transferType']=_0x04c7('0xac');this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xab')]][_0x04c7('0x97')]=_0x04c7('0xac');}}}}catch(_0x2cd804){logger[_0x04c7('0x27')](_0x04c7('0xb4'),_0x110cd2['uniqueid'],util[_0x04c7('0x29')](_0x2cd804,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x04c7('0x2a')][_0x04c7('0x20')]=function(_0x4e4deb){try{if(this[_0x04c7('0x2b')](_0x4e4deb)){logger[_0x04c7('0x24')]('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x4e4deb[_0x04c7('0x2f')],_0x4e4deb[_0x04c7('0xb5')],_0x4e4deb[_0x04c7('0xb6')]);logger['debug'](_0x04c7('0xb7'),_0x4e4deb[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x4e4deb,{'showHidden':![],'depth':null}));if(this[_0x04c7('0x33')][_0x4e4deb['transfereeuniqueid']]){this[_0x04c7('0x33')][_0x4e4deb[_0x04c7('0xa9')]]['transfercalleridnum']=_0x4e4deb[_0x04c7('0xb5')];this[_0x04c7('0x33')][_0x4e4deb[_0x04c7('0xa9')]][_0x04c7('0xae')]=_0x4e4deb[_0x04c7('0xb6')];this[_0x04c7('0x33')][_0x4e4deb[_0x04c7('0xa9')]][_0x04c7('0x97')]=_0x04c7('0xb8');this[_0x04c7('0x1c')]({'event':_0x04c7('0xa2'),'uniqueid':_0x4e4deb[_0x04c7('0xa9')],'context':_0x4e4deb['context'],'channel':_0x4e4deb[_0x04c7('0xb9')]});}else{this[_0x04c7('0x33')][_0x4e4deb[_0x04c7('0xba')]][_0x04c7('0x97')]=_0x04c7('0xb8');}}}catch(_0x2fda98){logger[_0x04c7('0x27')](_0x04c7('0xbb'),_0x4e4deb[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x2fda98,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x04c7('0xbc')]=function(_0x473288){try{if(this[_0x04c7('0x2b')](_0x473288)){logger[_0x04c7('0x31')]('[%s][voiceCallReport][musiconholdstart]\x20event:',_0x473288[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x473288,{'showHidden':![],'depth':null}));if(this['channels'][_0x473288[_0x04c7('0x2f')]]){if(!_[_0x04c7('0x72')](this[_0x04c7('0x33')][_0x473288['uniqueid']][_0x04c7('0x61')])){this[_0x04c7('0x33')][_0x473288[_0x04c7('0x2f')]][_0x04c7('0xbd')]=moment()[_0x04c7('0x3f')](_0x04c7('0x4a'));logger[_0x04c7('0x24')](_0x04c7('0xbe'),_0x473288[_0x04c7('0x2f')],this[_0x04c7('0x33')][_0x473288['uniqueid']][_0x04c7('0xbd')]);}}}}catch(_0x2f7be2){logger[_0x04c7('0x27')](_0x04c7('0xbf'),_0x473288[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x2f7be2,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x04c7('0x2a')][_0x04c7('0x23')]=function(_0x32187a){try{if(this[_0x04c7('0x2b')](_0x32187a)){logger[_0x04c7('0x31')](_0x04c7('0xc0'),_0x32187a[_0x04c7('0x2f')],util['inspect'](_0x32187a,{'showHidden':![],'depth':null}));if(this['channels'][_0x32187a[_0x04c7('0x2f')]]){if(!_[_0x04c7('0x72')](this[_0x04c7('0x33')][_0x32187a[_0x04c7('0x2f')]][_0x04c7('0xbd')])){this[_0x04c7('0x33')][_0x32187a[_0x04c7('0x2f')]][_0x04c7('0xc1')]+=moment()[_0x04c7('0xc2')](0x0)[_0x04c7('0x63')](this[_0x04c7('0x33')][_0x32187a[_0x04c7('0x2f')]]['mohstarttime'],'seconds');logger[_0x04c7('0x24')]('[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s',_0x32187a[_0x04c7('0x2f')],this['channels'][_0x32187a[_0x04c7('0x2f')]]['mohtime']);delete this['channels'][_0x32187a['uniqueid']][_0x04c7('0xbd')];}}}}catch(_0x150bf7){logger[_0x04c7('0x27')](_0x04c7('0xc3'),_0x32187a[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x150bf7,{'showHidden':![],'depth':null}));}};module[_0x04c7('0xc4')]=VoiceCallReport;
\ No newline at end of file
index 423a3b3..f17267a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefdf=['syncNewExten','hangup','syncHangup','prototype','isNotNull','isUndefined','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','channels','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','omit','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','applications','voice_outbound_channel:save','error','[%s][voiceDialReport][dialbegin]','connectedlinenum','connectedlinename','lastevent','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','variable','value','outboundrouteid','variables','voice','keys','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','memberdynamic','memberinterface','memberlastcall','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','complete','total','answertime','answered','holdtime','starttime','seconds','billableseconds','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','stringify','linkedid','destuniqueid','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','outboundChannels','outbound','dialbegin','bind','dialend','syncDialEnd','syncVarSet','newexten'];(function(_0x4e0b7a,_0x3e6029){var _0x5aeb1e=function(_0x531e0f){while(--_0x531e0f){_0x4e0b7a['push'](_0x4e0b7a['shift']());}};_0x5aeb1e(++_0x3e6029);}(_0xefdf,0x150));var _0xfefd=function(_0x1fd6f4,_0x4b8481){_0x1fd6f4=_0x1fd6f4-0x0;var _0x32b7f1=_0xefdf[_0x1fd6f4];return _0x32b7f1;};'use strict';var _=require(_0xfefd('0x0'));var moment=require(_0xfefd('0x1'));var util=require(_0xfefd('0x2'));var Redis=require(_0xfefd('0x3'));var config=require(_0xfefd('0x4'));var logger=require(_0xfefd('0x5'))(_0xfefd('0x6'));var ami=require(_0xfefd('0x7'));config[_0xfefd('0x8')]=_['defaults'](config['redis'],{'host':_0xfefd('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function VoiceDialReport(_0x512675){this['channels']=_0x512675[_0xfefd('0xa')];this[_0xfefd('0xb')]=_0x512675[_0xfefd('0xb')];this['applications']={};this['variables']={};ami['on'](_0xfefd('0xc'),this['syncDialBegin'][_0xfefd('0xd')](this));ami['on'](_0xfefd('0xe'),this[_0xfefd('0xf')][_0xfefd('0xd')](this));ami['on']('varset',this[_0xfefd('0x10')][_0xfefd('0xd')](this));ami['on'](_0xfefd('0x11'),this[_0xfefd('0x12')][_0xfefd('0xd')](this));ami['on'](_0xfefd('0x13'),this[_0xfefd('0x14')][_0xfefd('0xd')](this));}VoiceDialReport[_0xfefd('0x15')][_0xfefd('0x16')]=function(_0x3da880){return _0x3da880!==null&&!_[_0xfefd('0x17')](_0x3da880);};VoiceDialReport['prototype'][_0xfefd('0x18')]=function(_0x115664,_0x52ca25,_0x44920c){io['to'](_0x115664)[_0xfefd('0x18')](_0x52ca25,_0x44920c);};VoiceDialReport[_0xfefd('0x15')]['syncDialBegin']=function(_0x5cef6c){try{if(this[_0xfefd('0x16')](_0x5cef6c)){logger[_0xfefd('0x19')](_0xfefd('0x1a'),_0x5cef6c[_0xfefd('0x1b')],util[_0xfefd('0x1c')](_0x5cef6c,{'showHidden':![],'depth':null}));if(this[_0xfefd('0x1d')][_0x5cef6c['uniqueid']]){_[_0xfefd('0x1e')](this[_0xfefd('0x1d')][_0x5cef6c[_0xfefd('0x1b')]],{'starttime':moment()[_0xfefd('0x1f')](_0xfefd('0x20')),'lastevent':_0xfefd('0x21'),'interface':_0x5cef6c[_0xfefd('0x22')][_0xfefd('0x23')](0x0,_0x5cef6c['channel']['lastIndexOf']('-')),'membername':_0x5cef6c['channel']['substring'](_0x5cef6c[_0xfefd('0x22')][_0xfefd('0x24')]('/')+0x1,_0x5cef6c[_0xfefd('0x22')][_0xfefd('0x24')]('-'))},_[_0xfefd('0x25')](_0x5cef6c,[_0xfefd('0x26'),_0xfefd('0x27')]));logger[_0xfefd('0x28')](_0xfefd('0x29'),_0x5cef6c['uniqueid'],this[_0xfefd('0x1d')][_0x5cef6c[_0xfefd('0x1b')]][_0xfefd('0x2a')],this[_0xfefd('0x1d')][_0x5cef6c['uniqueid']][_0xfefd('0x2b')]);logger[_0xfefd('0x19')](_0xfefd('0x2c'),_0x5cef6c[_0xfefd('0x1b')],util['inspect'](this['channels'][_0x5cef6c[_0xfefd('0x1b')]],{'showHidden':![],'depth':null}));if(this[_0xfefd('0x2d')][_0x5cef6c[_0xfefd('0x1b')]])_[_0xfefd('0x1e')](this[_0xfefd('0x1d')][_0x5cef6c['uniqueid']],this[_0xfefd('0x2d')][_0x5cef6c[_0xfefd('0x1b')]]);this[_0xfefd('0x18')]('voice:outbound',_0xfefd('0x2e'),this['channels'][_0x5cef6c[_0xfefd('0x1b')]]);logger[_0xfefd('0x19')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x5cef6c[_0xfefd('0x1b')],util[_0xfefd('0x1c')](this['channels'][_0x5cef6c[_0xfefd('0x1b')]],{'showHidden':![],'depth':null}));ami[_0xfefd('0x18')]('custom:dialbegin',this[_0xfefd('0x1d')][_0x5cef6c[_0xfefd('0x1b')]]);}}}catch(_0x45215b){logger[_0xfefd('0x2f')](_0xfefd('0x30'),_0x5cef6c[_0xfefd('0x1b')],util['inspect'](_0x45215b,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xfefd('0x15')][_0xfefd('0xf')]=function(_0x2145ab){try{if(this[_0xfefd('0x16')](_0x2145ab)){logger[_0xfefd('0x19')]('[%s][voiceDialReport][dialend]\x20event:',_0x2145ab[_0xfefd('0x1b')],util[_0xfefd('0x1c')](_0x2145ab,{'showHidden':![],'depth':null}));if(this['channels'][_0x2145ab[_0xfefd('0x1b')]]){this['channels'][_0x2145ab[_0xfefd('0x1b')]]['dialstatus']=_0x2145ab['dialstatus'];if(_0x2145ab['dialstatus']==='ANSWER'){this[_0xfefd('0x1d')][_0x2145ab[_0xfefd('0x1b')]]['connectedlinenum']=_0x2145ab[_0xfefd('0x31')];this[_0xfefd('0x1d')][_0x2145ab[_0xfefd('0x1b')]]['connectedlinename']=_0x2145ab[_0xfefd('0x32')];this['channels'][_0x2145ab[_0xfefd('0x1b')]]['answertime']=moment()[_0xfefd('0x1f')](_0xfefd('0x20'));this[_0xfefd('0x1d')][_0x2145ab[_0xfefd('0x1b')]][_0xfefd('0x33')]=_0xfefd('0x34');logger[_0xfefd('0x28')](_0xfefd('0x35'),_0x2145ab[_0xfefd('0x1b')],_0x2145ab['channel'][_0xfefd('0x23')](_0x2145ab['channel'][_0xfefd('0x24')]('/')+0x1,_0x2145ab['channel']['lastIndexOf']('-')));logger['debug']('[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:',_0x2145ab[_0xfefd('0x1b')],util[_0xfefd('0x1c')](this[_0xfefd('0x1d')][_0x2145ab[_0xfefd('0x1b')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialconnect',this[_0xfefd('0x1d')][_0x2145ab['uniqueid']]);}logger[_0xfefd('0x19')](_0xfefd('0x36'),_0x2145ab['uniqueid'],util[_0xfefd('0x1c')](this[_0xfefd('0x1d')][_0x2145ab[_0xfefd('0x1b')]],{'showHidden':![],'depth':null}));this[_0xfefd('0x18')](_0xfefd('0x37'),_0xfefd('0x2e'),this['channels'][_0x2145ab[_0xfefd('0x1b')]]);}}}catch(_0x4c55ff){logger['error'](_0xfefd('0x38'),_0x2145ab['uniqueid'],util['inspect'](_0x4c55ff,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xfefd('0x10')]=function(_0x414b0e){try{if(this[_0xfefd('0x16')](_0x414b0e)){logger[_0xfefd('0x19')](_0xfefd('0x39'),_0x414b0e['uniqueid'],util[_0xfefd('0x1c')](_0x414b0e,{'showHidden':![],'depth':null}));this[_0xfefd('0x3a')](_0x414b0e[_0xfefd('0x1b')],_['keys'](_0x414b0e[_0xfefd('0x3b')])[0x0],_0x414b0e[_0xfefd('0x3c')]);if(this['isNotNull'](_0x414b0e[_0xfefd('0x3b')])&&this[_0xfefd('0x16')](_0x414b0e[_0xfefd('0x3b')][_0xfefd('0x3d')])){if(_[_0xfefd('0x17')](this[_0xfefd('0x1d')][_0x414b0e[_0xfefd('0x1b')]])){this[_0xfefd('0x1d')][_0x414b0e[_0xfefd('0x1b')]]={'routeId':_0x414b0e['value'],'variables':this[_0xfefd('0x3e')][_0x414b0e[_0xfefd('0x1b')]],'motionChannel':_0xfefd('0x3f')};logger[_0xfefd('0x28')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x414b0e[_0xfefd('0x1b')],_0x414b0e['variable'][_0xfefd('0x3d')],_[_0xfefd('0x40')](_0x414b0e[_0xfefd('0x3b')])[0x0],_0x414b0e[_0xfefd('0x3c')]);logger[_0xfefd('0x19')](_0xfefd('0x41'),_0x414b0e['uniqueid'],util[_0xfefd('0x1c')](this[_0xfefd('0x1d')][_0x414b0e['uniqueid']],{'showHidden':![],'depth':null}));this[_0xfefd('0x18')](_0xfefd('0x37'),_0xfefd('0x2e'),this['channels'][_0x414b0e['uniqueid']]);}}}}catch(_0x36c119){logger[_0xfefd('0x2f')]('[%s][voiceDialReport][varset]',_0x414b0e[_0xfefd('0x1b')],util[_0xfefd('0x1c')](_0x36c119,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xfefd('0x15')][_0xfefd('0x3a')]=function(_0x7bbddd,_0xfe3f8a,_0x1ac6df){var _0x47b7ef=[_0xfefd('0x42'),_0xfefd('0x43'),_0xfefd('0x44'),_0xfefd('0x45'),'rtpaudioqosloss',_0xfefd('0x46'),_0xfefd('0x47'),_0xfefd('0x48'),_0xfefd('0x49'),_0xfefd('0x4a'),_0xfefd('0x4b'),_0xfefd('0x4c'),'membercalls',_0xfefd('0x4d'),_0xfefd('0x4e'),_0xfefd('0x4f'),_0xfefd('0x2a'),'memberpenalty',_0xfefd('0x50')];if(!_[_0xfefd('0x51')](_0xfe3f8a)&&!_[_0xfefd('0x52')](_0x47b7ef,_0xfe3f8a)){if(_[_0xfefd('0x17')](this[_0xfefd('0x3e')][_0x7bbddd])){this[_0xfefd('0x3e')][_0x7bbddd]={};}this['variables'][_0x7bbddd][_0xfe3f8a]=_0x1ac6df;}};VoiceDialReport[_0xfefd('0x15')][_0xfefd('0x14')]=function(_0xc606e5){try{if(this[_0xfefd('0x16')](_0xc606e5)){logger['debug'](_0xfefd('0x53'),_0xc606e5[_0xfefd('0x1b')],util[_0xfefd('0x1c')](_0xc606e5,{'showHidden':![],'depth':null}));if(this[_0xfefd('0x1d')][_0xc606e5[_0xfefd('0x1b')]]){logger[_0xfefd('0x28')](_0xfefd('0x54'),_0xc606e5[_0xfefd('0x1b')],_0xc606e5[_0xfefd('0x55')]);this[_0xfefd('0x1d')][_0xc606e5[_0xfefd('0x1b')]][_0xfefd('0x56')]=moment()[_0xfefd('0x1f')](_0xfefd('0x20'));this['channels'][_0xc606e5[_0xfefd('0x1b')]][_0xfefd('0x57')]=moment(this['channels'][_0xc606e5[_0xfefd('0x1b')]][_0xfefd('0x56')])[_0xfefd('0x58')](this['channels'][_0xc606e5[_0xfefd('0x1b')]]['starttime'],'seconds');this['channels'][_0xc606e5[_0xfefd('0x1b')]][_0xfefd('0x33')]=_0xfefd('0x59');this[_0xfefd('0xb')][_0xfefd('0x5a')]+=0x1;if(this[_0xfefd('0x1d')][_0xc606e5[_0xfefd('0x1b')]][_0xfefd('0x5b')]){this['outbound'][_0xfefd('0x5c')]+=0x1;this[_0xfefd('0x1d')][_0xc606e5['uniqueid']][_0xfefd('0x5d')]=moment(this[_0xfefd('0x1d')][_0xc606e5['uniqueid']][_0xfefd('0x5b')])[_0xfefd('0x58')](this['channels'][_0xc606e5[_0xfefd('0x1b')]][_0xfefd('0x5e')],_0xfefd('0x5f'));this['channels'][_0xc606e5[_0xfefd('0x1b')]][_0xfefd('0x60')]=moment(this[_0xfefd('0x1d')][_0xc606e5[_0xfefd('0x1b')]][_0xfefd('0x56')])['diff'](this[_0xfefd('0x1d')][_0xc606e5[_0xfefd('0x1b')]][_0xfefd('0x5b')],_0xfefd('0x5f'));this[_0xfefd('0xb')]['sumHoldTime']+=this[_0xfefd('0x1d')][_0xc606e5['uniqueid']][_0xfefd('0x5d')]||0x0;this[_0xfefd('0xb')][_0xfefd('0x61')]+=this[_0xfefd('0x1d')][_0xc606e5[_0xfefd('0x1b')]]['billableseconds'];}this[_0xfefd('0xb')][_0xfefd('0x62')]+=this[_0xfefd('0x1d')][_0xc606e5[_0xfefd('0x1b')]][_0xfefd('0x57')];logger['debug'](_0xfefd('0x63'),_0xc606e5[_0xfefd('0x1b')],util['inspect'](this[_0xfefd('0x1d')][_0xc606e5[_0xfefd('0x1b')]],{'showHidden':![],'depth':null}));ami[_0xfefd('0x18')]('custom:voiceDialReport',this[_0xfefd('0x1d')][_0xc606e5['uniqueid']]);logger[_0xfefd('0x19')]('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0xc606e5[_0xfefd('0x1b')],util[_0xfefd('0x1c')](this['channels'][_0xc606e5[_0xfefd('0x1b')]],{'showHidden':![],'depth':null}));ami[_0xfefd('0x18')](_0xfefd('0x64'),this[_0xfefd('0x1d')][_0xc606e5[_0xfefd('0x1b')]]);logger[_0xfefd('0x19')](_0xfefd('0x65'),_0xc606e5[_0xfefd('0x1b')],util[_0xfefd('0x1c')](this[_0xfefd('0x1d')][_0xc606e5[_0xfefd('0x1b')]],{'showHidden':![],'depth':null}));this[_0xfefd('0x18')]('voice:outbound',_0xfefd('0x66'),this[_0xfefd('0xb')]);logger['info']('[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event',JSON[_0xfefd('0x67')](this[_0xfefd('0x1d')][_0xc606e5[_0xfefd('0x1b')]]));logger[_0xfefd('0x19')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:',_0xc606e5[_0xfefd('0x1b')],util['inspect'](this[_0xfefd('0x1d')][_0xc606e5[_0xfefd('0x1b')]],{'showHidden':![],'depth':null}));this[_0xfefd('0x18')]('voice:outbound','voice_outbound_channel:remove',this[_0xfefd('0x1d')][_0xc606e5[_0xfefd('0x1b')]]);delete this[_0xfefd('0x1d')][_0xc606e5['uniqueid']];}else if(this[_0xfefd('0x1d')][_0xc606e5[_0xfefd('0x68')]]){this['channels'][_0xc606e5[_0xfefd('0x68')]][_0xfefd('0x1b')]=this['channels'][_0xc606e5[_0xfefd('0x68')]][_0xfefd('0x69')];}if(this['variables'][_0xc606e5[_0xfefd('0x1b')]]){delete this['variables'][_0xc606e5[_0xfefd('0x1b')]];}}}catch(_0x13498a){logger[_0xfefd('0x2f')]('[%s][voiceDialReport][hangup]',_0xc606e5['uniqueid'],util['inspect'](_0x13498a,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xfefd('0x12')]=function(_0x2af1a9){try{if(this[_0xfefd('0x16')](_0x2af1a9)){logger[_0xfefd('0x19')](_0xfefd('0x6a'),_0x2af1a9[_0xfefd('0x1b')],util['inspect'](_0x2af1a9,{'showHidden':![],'depth':null}));if(_0x2af1a9[_0xfefd('0x6b')][_0xfefd('0x6c')]()===_0xfefd('0x6d')){_0x2af1a9['applicationdata']=(_0x2af1a9['appdata']||_0x2af1a9[_0xfefd('0x6e')])[_0xfefd('0x6c')]();if(_[_0xfefd('0x6f')](_0x2af1a9[_0xfefd('0x6e')],_0xfefd('0x70'))){if(_[_0xfefd('0x17')](this[_0xfefd('0x2d')][_0x2af1a9[_0xfefd('0x1b')]]))this[_0xfefd('0x2d')][_0x2af1a9['uniqueid']]={};logger['info'](_0xfefd('0x71'),_0x2af1a9[_0xfefd('0x1b')],_0x2af1a9[_0xfefd('0x6b')],_0x2af1a9['applicationdata']);var _0x49e832=_0x2af1a9[_0xfefd('0x6e')][_0xfefd('0x72')]('=');var _0xcde25f=_0x49e832[0x0][_0xfefd('0x73')](/cdr\((.*)\)/);if(_0xcde25f)this[_0xfefd('0x2d')][_0x2af1a9[_0xfefd('0x1b')]][_0xcde25f[0x1]]=_0x49e832[0x1];}}}}catch(_0x89b161){logger[_0xfefd('0x2f')](_0xfefd('0x74'),_0x2af1a9[_0xfefd('0x1b')],util['inspect'](_0x89b161,{'showHidden':![],'depth':null}));}};module[_0xfefd('0x75')]=VoiceDialReport;
\ No newline at end of file
+var _0x9e2b=['../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','outboundChannels','outbound','variables','dialbegin','syncDialBegin','bind','dialend','varset','syncVarSet','syncHangup','isNotNull','prototype','emit','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','lastIndexOf','substring','omit','event','interface','debug','applications','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','inspect','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','connectedlinenum','connectedlinename','answertime','lastevent','connect','info','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','error','[%s][voiceDialReport][varset]\x20event:','keys','variable','value','outboundrouteid','isUndefined','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','membername','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','cause-txt','duration','endtime','diff','seconds','complete','total','answered','holdtime','starttime','billableseconds','sumHoldTime','sumDuration','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','match','exports','lodash','moment','util','ioredis'];(function(_0x17c4c0,_0x9f0ea2){var _0x59e09e=function(_0x5279c0){while(--_0x5279c0){_0x17c4c0['push'](_0x17c4c0['shift']());}};_0x59e09e(++_0x9f0ea2);}(_0x9e2b,0x73));var _0xb9e2=function(_0x4af8ce,_0x1a58f2){_0x4af8ce=_0x4af8ce-0x0;var _0x39deee=_0x9e2b[_0x4af8ce];return _0x39deee;};'use strict';var _=require(_0xb9e2('0x0'));var moment=require(_0xb9e2('0x1'));var util=require(_0xb9e2('0x2'));var Redis=require(_0xb9e2('0x3'));var config=require('../../../config/environment');var logger=require(_0xb9e2('0x4'))(_0xb9e2('0x5'));var ami=require(_0xb9e2('0x6'));config[_0xb9e2('0x7')]=_[_0xb9e2('0x8')](config['redis'],{'host':_0xb9e2('0x9'),'port':0x18eb});var io=require(_0xb9e2('0xa'))(new Redis(config[_0xb9e2('0x7')]));function VoiceDialReport(_0x201ad2){this[_0xb9e2('0xb')]=_0x201ad2[_0xb9e2('0xc')];this[_0xb9e2('0xd')]=_0x201ad2[_0xb9e2('0xd')];this['applications']={};this[_0xb9e2('0xe')]={};ami['on'](_0xb9e2('0xf'),this[_0xb9e2('0x10')][_0xb9e2('0x11')](this));ami['on'](_0xb9e2('0x12'),this['syncDialEnd'][_0xb9e2('0x11')](this));ami['on'](_0xb9e2('0x13'),this[_0xb9e2('0x14')][_0xb9e2('0x11')](this));ami['on']('newexten',this['syncNewExten'][_0xb9e2('0x11')](this));ami['on']('hangup',this[_0xb9e2('0x15')][_0xb9e2('0x11')](this));}VoiceDialReport['prototype'][_0xb9e2('0x16')]=function(_0x32ec6d){return _0x32ec6d!==null&&!_['isUndefined'](_0x32ec6d);};VoiceDialReport[_0xb9e2('0x17')][_0xb9e2('0x18')]=function(_0xbc5a78,_0x3a2e41,_0x1c6fe9){io['to'](_0xbc5a78)[_0xb9e2('0x18')](_0x3a2e41,_0x1c6fe9);};VoiceDialReport[_0xb9e2('0x17')][_0xb9e2('0x10')]=function(_0xf570ff){try{if(this['isNotNull'](_0xf570ff)){logger['debug'](_0xb9e2('0x19'),_0xf570ff['uniqueid'],util['inspect'](_0xf570ff,{'showHidden':![],'depth':null}));if(this[_0xb9e2('0xb')][_0xf570ff[_0xb9e2('0x1a')]]){_[_0xb9e2('0x1b')](this[_0xb9e2('0xb')][_0xf570ff['uniqueid']],{'starttime':moment()[_0xb9e2('0x1c')](_0xb9e2('0x1d')),'lastevent':_0xb9e2('0x1e'),'interface':_0xf570ff[_0xb9e2('0x1f')]['substring'](0x0,_0xf570ff['channel'][_0xb9e2('0x20')]('-')),'membername':_0xf570ff[_0xb9e2('0x1f')][_0xb9e2('0x21')](_0xf570ff[_0xb9e2('0x1f')][_0xb9e2('0x20')]('/')+0x1,_0xf570ff[_0xb9e2('0x1f')]['lastIndexOf']('-'))},_[_0xb9e2('0x22')](_0xf570ff,[_0xb9e2('0x23'),'privilege']));logger['info']('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0xf570ff[_0xb9e2('0x1a')],this[_0xb9e2('0xb')][_0xf570ff[_0xb9e2('0x1a')]]['membername'],this[_0xb9e2('0xb')][_0xf570ff[_0xb9e2('0x1a')]][_0xb9e2('0x24')]);logger[_0xb9e2('0x25')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0xf570ff['uniqueid'],util['inspect'](this[_0xb9e2('0xb')][_0xf570ff[_0xb9e2('0x1a')]],{'showHidden':![],'depth':null}));if(this[_0xb9e2('0x26')][_0xf570ff[_0xb9e2('0x1a')]])_[_0xb9e2('0x1b')](this['channels'][_0xf570ff[_0xb9e2('0x1a')]],this[_0xb9e2('0x26')][_0xf570ff[_0xb9e2('0x1a')]]);this[_0xb9e2('0x18')](_0xb9e2('0x27'),_0xb9e2('0x28'),this[_0xb9e2('0xb')][_0xf570ff['uniqueid']]);logger[_0xb9e2('0x25')](_0xb9e2('0x29'),_0xf570ff['uniqueid'],util[_0xb9e2('0x2a')](this[_0xb9e2('0xb')][_0xf570ff[_0xb9e2('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xb9e2('0x18')]('custom:dialbegin',this[_0xb9e2('0xb')][_0xf570ff[_0xb9e2('0x1a')]]);}}}catch(_0x2066a6){logger['error'](_0xb9e2('0x2b'),_0xf570ff[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](_0x2066a6,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['syncDialEnd']=function(_0x40f718){try{if(this['isNotNull'](_0x40f718)){logger['debug'](_0xb9e2('0x2c'),_0x40f718[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](_0x40f718,{'showHidden':![],'depth':null}));if(this[_0xb9e2('0xb')][_0x40f718[_0xb9e2('0x1a')]]){this[_0xb9e2('0xb')][_0x40f718[_0xb9e2('0x1a')]]['dialstatus']=_0x40f718[_0xb9e2('0x2d')];if(_0x40f718[_0xb9e2('0x2d')]==='ANSWER'){this[_0xb9e2('0xb')][_0x40f718[_0xb9e2('0x1a')]]['connectedlinenum']=_0x40f718[_0xb9e2('0x2e')];this[_0xb9e2('0xb')][_0x40f718['uniqueid']][_0xb9e2('0x2f')]=_0x40f718[_0xb9e2('0x2f')];this[_0xb9e2('0xb')][_0x40f718[_0xb9e2('0x1a')]][_0xb9e2('0x30')]=moment()[_0xb9e2('0x1c')](_0xb9e2('0x1d'));this[_0xb9e2('0xb')][_0x40f718[_0xb9e2('0x1a')]][_0xb9e2('0x31')]=_0xb9e2('0x32');logger[_0xb9e2('0x33')](_0xb9e2('0x34'),_0x40f718[_0xb9e2('0x1a')],_0x40f718[_0xb9e2('0x1f')]['substring'](_0x40f718['channel'][_0xb9e2('0x20')]('/')+0x1,_0x40f718['channel'][_0xb9e2('0x20')]('-')));logger[_0xb9e2('0x25')](_0xb9e2('0x35'),_0x40f718[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](this[_0xb9e2('0xb')][_0x40f718[_0xb9e2('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xb9e2('0x18')](_0xb9e2('0x36'),this[_0xb9e2('0xb')][_0x40f718['uniqueid']]);}logger['debug'](_0xb9e2('0x37'),_0x40f718[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](this[_0xb9e2('0xb')][_0x40f718[_0xb9e2('0x1a')]],{'showHidden':![],'depth':null}));this[_0xb9e2('0x18')](_0xb9e2('0x27'),_0xb9e2('0x28'),this[_0xb9e2('0xb')][_0x40f718[_0xb9e2('0x1a')]]);}}}catch(_0xe7a90a){logger[_0xb9e2('0x38')]('[%s][voiceDialReport][dialend]',_0x40f718[_0xb9e2('0x1a')],util['inspect'](_0xe7a90a,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xb9e2('0x14')]=function(_0x4ad446){try{if(this[_0xb9e2('0x16')](_0x4ad446)){logger[_0xb9e2('0x25')](_0xb9e2('0x39'),_0x4ad446[_0xb9e2('0x1a')],util['inspect'](_0x4ad446,{'showHidden':![],'depth':null}));this['addVariable'](_0x4ad446[_0xb9e2('0x1a')],_[_0xb9e2('0x3a')](_0x4ad446[_0xb9e2('0x3b')])[0x0],_0x4ad446[_0xb9e2('0x3c')]);if(this[_0xb9e2('0x16')](_0x4ad446[_0xb9e2('0x3b')])&&this[_0xb9e2('0x16')](_0x4ad446[_0xb9e2('0x3b')][_0xb9e2('0x3d')])){if(_[_0xb9e2('0x3e')](this[_0xb9e2('0xb')][_0x4ad446[_0xb9e2('0x1a')]])){this[_0xb9e2('0xb')][_0x4ad446[_0xb9e2('0x1a')]]={'routeId':_0x4ad446[_0xb9e2('0x3c')],'variables':this[_0xb9e2('0xe')][_0x4ad446[_0xb9e2('0x1a')]],'motionChannel':_0xb9e2('0x3f')};logger['info'](_0xb9e2('0x40'),_0x4ad446[_0xb9e2('0x1a')],_0x4ad446[_0xb9e2('0x3b')]['outboundrouteid'],_[_0xb9e2('0x3a')](_0x4ad446[_0xb9e2('0x3b')])[0x0],_0x4ad446[_0xb9e2('0x3c')]);logger[_0xb9e2('0x25')](_0xb9e2('0x41'),_0x4ad446['uniqueid'],util[_0xb9e2('0x2a')](this[_0xb9e2('0xb')][_0x4ad446[_0xb9e2('0x1a')]],{'showHidden':![],'depth':null}));this[_0xb9e2('0x18')](_0xb9e2('0x27'),_0xb9e2('0x28'),this[_0xb9e2('0xb')][_0x4ad446[_0xb9e2('0x1a')]]);}}}}catch(_0x344379){logger[_0xb9e2('0x38')](_0xb9e2('0x42'),_0x4ad446[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](_0x344379,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xb9e2('0x43')]=function(_0x450f70,_0x4f2573,_0x5356fc){var _0x534d32=[_0xb9e2('0x44'),_0xb9e2('0x45'),_0xb9e2('0x46'),'rtpaudioqosjitterbridged',_0xb9e2('0x47'),_0xb9e2('0x48'),_0xb9e2('0x49'),_0xb9e2('0x4a'),_0xb9e2('0x4b'),'sipuri',_0xb9e2('0x4c'),_0xb9e2('0x4d'),_0xb9e2('0x4e'),_0xb9e2('0x4f'),_0xb9e2('0x50'),_0xb9e2('0x51'),_0xb9e2('0x52'),'memberpenalty',_0xb9e2('0x53')];if(!_[_0xb9e2('0x54')](_0x4f2573)&&!_[_0xb9e2('0x55')](_0x534d32,_0x4f2573)){if(_[_0xb9e2('0x3e')](this['variables'][_0x450f70])){this[_0xb9e2('0xe')][_0x450f70]={};}this[_0xb9e2('0xe')][_0x450f70][_0x4f2573]=_0x5356fc;}};VoiceDialReport['prototype'][_0xb9e2('0x15')]=function(_0x304095){try{if(this[_0xb9e2('0x16')](_0x304095)){logger[_0xb9e2('0x25')](_0xb9e2('0x56'),_0x304095[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](_0x304095,{'showHidden':![],'depth':null}));if(this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]]){logger[_0xb9e2('0x33')]('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x304095[_0xb9e2('0x1a')],_0x304095[_0xb9e2('0x57')]);this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]]['endtime']=moment()[_0xb9e2('0x1c')](_0xb9e2('0x1d'));this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x58')]=moment(this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x59')])[_0xb9e2('0x5a')](this[_0xb9e2('0xb')][_0x304095['uniqueid']]['starttime'],_0xb9e2('0x5b'));this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x31')]=_0xb9e2('0x5c');this[_0xb9e2('0xd')][_0xb9e2('0x5d')]+=0x1;if(this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]]['answertime']){this[_0xb9e2('0xd')][_0xb9e2('0x5e')]+=0x1;this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x5f')]=moment(this['channels'][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x30')])[_0xb9e2('0x5a')](this['channels'][_0x304095['uniqueid']][_0xb9e2('0x60')],_0xb9e2('0x5b'));this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x61')]=moment(this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x59')])['diff'](this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x30')],_0xb9e2('0x5b'));this[_0xb9e2('0xd')][_0xb9e2('0x62')]+=this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x5f')]||0x0;this[_0xb9e2('0xd')]['sumBillable']+=this['channels'][_0x304095[_0xb9e2('0x1a')]]['billableseconds'];}this['outbound'][_0xb9e2('0x63')]+=this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x58')];logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x304095['uniqueid'],util[_0xb9e2('0x2a')](this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]],{'showHidden':![],'depth':null}));ami['emit'](_0xb9e2('0x64'),this[_0xb9e2('0xb')][_0x304095['uniqueid']]);logger[_0xb9e2('0x25')](_0xb9e2('0x65'),_0x304095[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xb9e2('0x18')](_0xb9e2('0x66'),this['channels'][_0x304095[_0xb9e2('0x1a')]]);logger[_0xb9e2('0x25')](_0xb9e2('0x67'),_0x304095['uniqueid'],util[_0xb9e2('0x2a')](this[_0xb9e2('0xb')][_0x304095['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0xb9e2('0x27'),_0xb9e2('0x68'),this[_0xb9e2('0xd')]);logger[_0xb9e2('0x33')](_0xb9e2('0x69'),JSON[_0xb9e2('0x6a')](this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]]));logger['debug'](_0xb9e2('0x6b'),_0x304095[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](this['channels'][_0x304095[_0xb9e2('0x1a')]],{'showHidden':![],'depth':null}));this[_0xb9e2('0x18')](_0xb9e2('0x27'),_0xb9e2('0x6c'),this['channels'][_0x304095[_0xb9e2('0x1a')]]);delete this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]];}else if(this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x6d')]]){this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x6d')]][_0xb9e2('0x1a')]=this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x6d')]][_0xb9e2('0x6e')];}if(this[_0xb9e2('0xe')][_0x304095['uniqueid']]){delete this[_0xb9e2('0xe')][_0x304095[_0xb9e2('0x1a')]];}}}catch(_0x285990){logger[_0xb9e2('0x38')]('[%s][voiceDialReport][hangup]',_0x304095[_0xb9e2('0x1a')],util['inspect'](_0x285990,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb9e2('0x17')]['syncNewExten']=function(_0x2c482e){try{if(this[_0xb9e2('0x16')](_0x2c482e)){logger[_0xb9e2('0x25')](_0xb9e2('0x6f'),_0x2c482e[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](_0x2c482e,{'showHidden':![],'depth':null}));if(_0x2c482e[_0xb9e2('0x70')][_0xb9e2('0x71')]()==='set'){_0x2c482e[_0xb9e2('0x72')]=(_0x2c482e[_0xb9e2('0x73')]||_0x2c482e[_0xb9e2('0x72')])[_0xb9e2('0x71')]();if(_[_0xb9e2('0x74')](_0x2c482e['applicationdata'],'cdr(')){if(_[_0xb9e2('0x3e')](this['applications'][_0x2c482e[_0xb9e2('0x1a')]]))this['applications'][_0x2c482e[_0xb9e2('0x1a')]]={};logger[_0xb9e2('0x33')]('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x2c482e['uniqueid'],_0x2c482e['application'],_0x2c482e['applicationdata']);var _0x3c1114=_0x2c482e['applicationdata']['split']('=');var _0x465f7b=_0x3c1114[0x0][_0xb9e2('0x75')](/cdr\((.*)\)/);if(_0x465f7b)this[_0xb9e2('0x26')][_0x2c482e[_0xb9e2('0x1a')]][_0x465f7b[0x1]]=_0x3c1114[0x1];}}}}catch(_0x5aef27){logger[_0xb9e2('0x38')]('[%s][voiceDialReport][newexten]',_0x2c482e[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](_0x5aef27,{'showHidden':![],'depth':null}));}};module[_0xb9e2('0x76')]=VoiceDialReport;
\ No newline at end of file
index dc36648..f494dc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3335=['membername','[%s][voiceQueueReport][hangup]','length','sumHoldTime','diff','seconds','answered','sumBillable','milliseconds','queuecallercompleteAt','custom:queuecallerunmanaged','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','cause-txt','hangup','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','switch','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfereruniqueid','ATTENDEDTRANSFER','ATTENDED','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','transfererchannel','[%s][voiceQueueReport][blindtransfer]','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','mohtime','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','CDR(routeAlias)','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','lodash','util','md5','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','redis','defaults','localhost','socket.io-emitter','prototype','tail','finally','sequence','queueReports','agents','voiceQueues','flagQueueSummary','campaigns','variables','syncQueueSummary','bind','queuesummarycomplete','queuecallerjoin','queuecallerabandon','syncQueueCallerAbandon','syncQueueCallerLeave','syncAgentComplete','agentconnect','syncAgentConnect','varset','syncVarSet','syncHangup','syncFullyBooted','newexten','syncNewExten','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','hasOwnProperty','isEmpty','originated','talking','pTalking','waiting','queueStatusComplete','unlockRR','clearZombieChannels','channels','enqueue','isNil','status','catch','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkQueueReport]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emitVoiceQueueChannelSave','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','emit','voice:queue:%s','voice_queue_channel:save','voice_queue_presence:save','debug',']\x20sending\x20voice_queue_channel:remove\x20event:','format','name','voice_queue_channel:remove','voice_queue_presence:remove','type','inbound','strategy','available','loggedIn','sumDuration','abandoned','Trunk','Interval','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isUndefined','Action','queues','isNotNull','queue','[voiceQueueReport][queuesummary]\x20event:','info','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','toNumber','loggedin','emitVoiceQueueSummary','queuesummary','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','syncQueueCallerJoin','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','pick','keys','push','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','queuecallerleave','[%s][voiceQueueReport][queuecallerleave]','[%s][voiceQueueReport][agentconnect]','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','assigned','queuecallerexit','queuecallerexitAt','transfer','reason','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','channel','toLowerCase','local/','linkedid','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','agentcomplete','[%s][voiceQueueReport][agentcomplete]','[%s][voiceQueueReport][varset]','addVariable','variable','value','queuestatus','CONTINUE','lastevent','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall'];(function(_0x3444b0,_0x33baf8){var _0x446606=function(_0x4cdaa2){while(--_0x4cdaa2){_0x3444b0['push'](_0x3444b0['shift']());}};_0x446606(++_0x33baf8);}(_0x3335,0x122));var _0x5333=function(_0x2f3794,_0x3c3bec){_0x2f3794=_0x2f3794-0x0;var _0x1c9fbe=_0x3335[_0x2f3794];return _0x1c9fbe;};'use strict';var _=require(_0x5333('0x0'));var moment=require('moment');var util=require(_0x5333('0x1'));var md5=require(_0x5333('0x2'));var Redis=require(_0x5333('0x3'));var config=require(_0x5333('0x4'));var logger=require(_0x5333('0x5'))(_0x5333('0x6'));var ami=require(_0x5333('0x7'));var QueueReport=require(_0x5333('0x8'));config[_0x5333('0x9')]=_[_0x5333('0xa')](config[_0x5333('0x9')],{'host':_0x5333('0xb'),'port':0x18eb});var io=require(_0x5333('0xc'))(new Redis(config[_0x5333('0x9')]));var Sequence=function(){};Sequence[_0x5333('0xd')]['enqueue']=function(_0x3bebd9){this['tail']=this['tail']?this[_0x5333('0xe')][_0x5333('0xf')](_0x3bebd9):_0x3bebd9();};function VoiceQueueReport(_0x11b42a){this[_0x5333('0x10')]=new Sequence();this[_0x5333('0x11')]={};this['agents']=_0x11b42a[_0x5333('0x12')];this['channels']=_0x11b42a['queueChannels'];this[_0x5333('0x13')]=_0x11b42a[_0x5333('0x13')];this[_0x5333('0x14')]=!![];this[_0x5333('0x15')]=_0x11b42a[_0x5333('0x15')];this[_0x5333('0x16')]={};ami['on']('queuesummary',this[_0x5333('0x17')][_0x5333('0x18')](this));ami['on'](_0x5333('0x19'),this['syncQueueSummaryComplete']['bind'](this));ami['on'](_0x5333('0x1a'),this['syncQueueCallerJoin'][_0x5333('0x18')](this));ami['on'](_0x5333('0x1b'),this[_0x5333('0x1c')]['bind'](this));ami['on']('queuecallerleave',this[_0x5333('0x1d')][_0x5333('0x18')](this));ami['on']('agentcomplete',this[_0x5333('0x1e')]['bind'](this));ami['on'](_0x5333('0x1f'),this[_0x5333('0x20')]['bind'](this));ami['on'](_0x5333('0x21'),this[_0x5333('0x22')][_0x5333('0x18')](this));ami['on']('hangup',this[_0x5333('0x23')][_0x5333('0x18')](this));ami['on']('fullybooted',this[_0x5333('0x24')][_0x5333('0x18')](this));ami['on'](_0x5333('0x25'),this[_0x5333('0x26')][_0x5333('0x18')](this));ami['on'](_0x5333('0x27'),this[_0x5333('0x28')][_0x5333('0x18')](this));ami['on'](_0x5333('0x29'),this[_0x5333('0x2a')]['bind'](this));ami['on'](_0x5333('0x2b'),this[_0x5333('0x2c')][_0x5333('0x18')](this));ami['on'](_0x5333('0x2d'),this[_0x5333('0x2e')]['bind'](this));this[_0x5333('0x2f')]();this[_0x5333('0x30')]();}function clearChannels(_0x4b7b85){if(!_['isEmpty'](_0x4b7b85)){for(var _0x5b3ecf in _0x4b7b85){if(_0x4b7b85[_0x5333('0x31')](_0x5b3ecf)){delete _0x4b7b85[_0x5b3ecf];}}}}function clearCampaigns(_0x52f5bc){if(!_[_0x5333('0x32')](_0x52f5bc)){for(var _0x18fee3 in _0x52f5bc){if(_0x52f5bc['hasOwnProperty'](_0x18fee3)){_0x52f5bc[_0x18fee3][_0x5333('0x33')]=0x0;}}}}function clearVoiceQueues(_0x51f273){if(!_[_0x5333('0x32')](_0x51f273)){for(var _0x12e019 in _0x51f273){if(_0x51f273[_0x5333('0x31')](_0x12e019)){_0x51f273[_0x12e019][_0x5333('0x33')]=0x0;_0x51f273[_0x12e019][_0x5333('0x34')]=0x0;_0x51f273[_0x12e019][_0x5333('0x35')]=0x0;_0x51f273[_0x12e019][_0x5333('0x36')]=0x0;_0x51f273[_0x12e019][_0x5333('0x37')]=!![];}}}}function clearAgentBooked(_0x2428cf){if(!_[_0x5333('0x32')](_0x2428cf)){for(var _0x57d395 in _0x2428cf){if(_0x2428cf[_0x5333('0x31')](_0x57d395)){_0x2428cf[_0x57d395][_0x5333('0x38')]=!![];}}}}VoiceQueueReport[_0x5333('0xd')][_0x5333('0x39')]=function(){var _0x371951=this;for(var _0x55c893 in this[_0x5333('0x3a')]){if(this[_0x5333('0x3a')][_0x5333('0x31')](_0x55c893)&&!this[_0x5333('0x3a')][_0x55c893]['switch']){this[_0x5333('0x10')][_0x5333('0x3b')](function(){if(!_[_0x5333('0x3c')](_0x371951[_0x5333('0x3a')][_0x55c893])){return ami['Action']({'action':_0x5333('0x3d'),'channel':_0x371951[_0x5333('0x3a')][_0x55c893]['channel']})[_0x5333('0x3e')](function(_0x5b4fb4){if(_0x5b4fb4[_0x5333('0x3f')]===_0x5333('0x40')){setTimeout(function(){if(_0x371951[_0x5333('0x3a')][_0x55c893]){delete _0x371951[_0x5333('0x3a')][_0x55c893];logger[_0x5333('0x41')](_0x5333('0x42'),_0x55c893,util[_0x5333('0x43')](_0x5b4fb4,{'showHidden':![],'depth':null}));}if(_0x371951[_0x5333('0x11')][_0x55c893]){delete _0x371951['queueReports'][_0x55c893];logger[_0x5333('0x41')](_0x5333('0x44'),_0x55c893,util[_0x5333('0x43')](_0x5b4fb4,{'showHidden':![],'depth':null}));}if(_0x371951[_0x5333('0x16')][_0x55c893]){delete _0x371951['variables'][_0x55c893];logger['error']('[%s][voiceQueueReport][checkVariables]',_0x55c893,util[_0x5333('0x43')](_0x5b4fb4,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x5333('0xd')][_0x5333('0x24')]=function(){logger[_0x5333('0x41')](_0x5333('0x45'));clearChannels(this[_0x5333('0x3a')]);this['clearQueueReport'](this[_0x5333('0x11')]);clearAgentBooked(this['agents']);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0x5333('0x15')]);};VoiceQueueReport[_0x5333('0xd')][_0x5333('0x46')]=function(_0x4ca0e0){var _0x3aaca9=this;if(!_['isEmpty'](_0x4ca0e0)){for(var _0x2693de in _0x4ca0e0){if(_0x4ca0e0['hasOwnProperty'](_0x2693de)){_0x3aaca9[_0x5333('0x47')](_0x4ca0e0[_0x2693de],_0x5333('0x48'));delete _0x4ca0e0[_0x2693de];}}}};VoiceQueueReport[_0x5333('0xd')]['emit']=function(_0x2f7bdd,_0x3d9b8d,_0x2577e8){io['to'](_0x2f7bdd)['emit'](_0x3d9b8d,_0x2577e8);};VoiceQueueReport[_0x5333('0xd')][_0x5333('0x49')]=function(_0x36c7fa,_0x22f3cf){logger['debug'](_0x5333('0x4a')+_0x22f3cf+_0x5333('0x4b'),_0x36c7fa[_0x5333('0x4c')],util[_0x5333('0x43')](_0x36c7fa,{'showHidden':![],'depth':null}));this[_0x5333('0x4d')](util['format'](_0x5333('0x4e'),_0x36c7fa['name']),_0x5333('0x4f'),_0x36c7fa);io[_0x5333('0x4d')](_0x5333('0x50'),_0x36c7fa);};VoiceQueueReport[_0x5333('0xd')]['emitVoiceQueueChannelRemove']=function(_0x1d6cdd,_0x24c042){logger[_0x5333('0x51')](_0x5333('0x4a')+_0x24c042+_0x5333('0x52'),_0x1d6cdd[_0x5333('0x4c')],util[_0x5333('0x43')](_0x1d6cdd,{'showHidden':![],'depth':null}));this[_0x5333('0x4d')](util[_0x5333('0x53')](_0x5333('0x4e'),_0x1d6cdd[_0x5333('0x54')]),_0x5333('0x55'),_0x1d6cdd);io[_0x5333('0x4d')](_0x5333('0x56'),_0x1d6cdd);};VoiceQueueReport[_0x5333('0xd')]['emitVoiceQueueSummary']=function(_0x288d38,_0x5c6641){if(_0x288d38[_0x5333('0x57')]===_0x5333('0x58')){var _0x39ef9f={'id':_0x288d38['id'],'name':_0x288d38[_0x5333('0x54')],'strategy':_0x288d38[_0x5333('0x59')],'answered':_0x288d38['answered'],'available':_0x288d38[_0x5333('0x5a')],'loggedIn':_0x288d38[_0x5333('0x5b')],'pTalking':_0x288d38[_0x5333('0x35')],'sumBillable':_0x288d38['sumBillable'],'sumDuration':_0x288d38[_0x5333('0x5c')],'sumHoldTime':_0x288d38['sumHoldTime']||0x0,'talking':_0x288d38[_0x5333('0x34')],'total':_0x288d38['total'],'type':_0x288d38[_0x5333('0x57')],'unmanaged':_0x288d38['unmanaged'],'abandoned':_0x288d38[_0x5333('0x5d')],'waiting':_0x288d38['waiting']};if(_0x288d38['Trunk']){_0x39ef9f['Trunk']={'id':_0x288d38[_0x5333('0x5e')]['id'],'name':_0x288d38[_0x5333('0x5e')][_0x5333('0x54')],'active':_0x288d38['Trunk']['active'],'callerid':_0x288d38[_0x5333('0x5e')]['callerid']};}if(_0x288d38[_0x5333('0x5f')]){_0x39ef9f['Interval']={'id':_0x288d38['Interval']['id'],'name':_0x288d38[_0x5333('0x5f')][_0x5333('0x54')]};}var _0x20c454=md5(JSON[_0x5333('0x60')](_0x39ef9f));if(_0x288d38['md5']!==_0x20c454){_0x288d38['md5']=_0x20c454;logger[_0x5333('0x51')](_0x5333('0x61')+_0x5c6641+_0x5333('0x62'),util[_0x5333('0x43')](_0x39ef9f,{'showHidden':![],'depth':null}));this[_0x5333('0x4d')](util['format'](_0x5333('0x4e'),_0x39ef9f[_0x5333('0x54')]),_0x5333('0x63'),_0x39ef9f);}}};VoiceQueueReport[_0x5333('0xd')]['isNotNull']=function(_0x515f09){return _0x515f09!==null&&!_[_0x5333('0x64')](_0x515f09);};VoiceQueueReport[_0x5333('0xd')][_0x5333('0x30')]=function(){var _0x5aef86=this;setInterval(function(){_0x5aef86[_0x5333('0x39')]();ami[_0x5333('0x65')]({'action':_0x5333('0x66')})['catch'](function(_0x442554){logger[_0x5333('0x41')]('[voiceQueueReport][queues]',util[_0x5333('0x43')](_0x442554,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x5333('0xd')]['loopQueueSummary']=function(){var _0x543713=this;setInterval(function(){if(_0x543713[_0x5333('0x14')]){return ami['Action']({'action':'queuesummary'})['then'](function(_0x2b44c2){_0x543713['flagQueueSummary']=![];})[_0x5333('0x3e')](function(_0x59f49f){logger[_0x5333('0x41')]('[voiceQueueReport][queuesummary]',util[_0x5333('0x43')](_0x59f49f,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype'][_0x5333('0x17')]=function(_0xf761ac){try{if(this['isNotNull'](_0xf761ac)&&this[_0x5333('0x67')](_0xf761ac[_0x5333('0x68')])){logger[_0x5333('0x51')](_0x5333('0x69'),util[_0x5333('0x43')](_0xf761ac,{'showHidden':![],'depth':null}));if(this[_0x5333('0x13')][_0xf761ac[_0x5333('0x68')]]){logger[_0x5333('0x6a')](_0x5333('0x6b'),_0xf761ac[_0x5333('0x68')]);var _0x3f52df=_[_0x5333('0x6c')](this[_0x5333('0x3a')],_0x5333('0x68'))[_0xf761ac[_0x5333('0x68')]]||0x0;var _0x4592e3=_0x3f52df-_0xf761ac[_0x5333('0x6d')];if(this[_0x5333('0x13')][_0xf761ac[_0x5333('0x68')]][_0x5333('0x36')]!==_[_0x5333('0x6e')](_0xf761ac[_0x5333('0x6d')])||this[_0x5333('0x13')][_0xf761ac['queue']][_0x5333('0x5b')]!==_[_0x5333('0x6e')](_0xf761ac[_0x5333('0x6f')])||this['voiceQueues'][_0xf761ac[_0x5333('0x68')]][_0x5333('0x5a')]!==_['toNumber'](_0xf761ac['available'])||this[_0x5333('0x13')][_0xf761ac[_0x5333('0x68')]][_0x5333('0x34')]!==_0x4592e3){this['voiceQueues'][_0xf761ac[_0x5333('0x68')]][_0x5333('0x36')]=_[_0x5333('0x6e')](_0xf761ac['callers']);this[_0x5333('0x13')][_0xf761ac[_0x5333('0x68')]][_0x5333('0x5b')]=_[_0x5333('0x6e')](_0xf761ac['loggedin']);this[_0x5333('0x13')][_0xf761ac[_0x5333('0x68')]][_0x5333('0x5a')]=_[_0x5333('0x6e')](_0xf761ac[_0x5333('0x5a')]);this[_0x5333('0x13')][_0xf761ac[_0x5333('0x68')]][_0x5333('0x34')]=_0x4592e3>0x0?_0x4592e3:0x0;this[_0x5333('0x13')][_0xf761ac['queue']][_0x5333('0x34')]=this['voiceQueues'][_0xf761ac[_0x5333('0x68')]][_0x5333('0x34')]>_[_0x5333('0x6e')](_0xf761ac[_0x5333('0x6f')])?_[_0x5333('0x6e')](_0xf761ac['loggedin']):this[_0x5333('0x13')][_0xf761ac[_0x5333('0x68')]][_0x5333('0x34')];this[_0x5333('0x70')](this[_0x5333('0x13')][_0xf761ac[_0x5333('0x68')]],_0x5333('0x71'));}logger[_0x5333('0x51')](_0x5333('0x72'),util[_0x5333('0x43')](this[_0x5333('0x13')][_0xf761ac[_0x5333('0x68')]],{'showHidden':![],'depth':null}));ami[_0x5333('0x4d')](_0x5333('0x73'),this['voiceQueues'][_0xf761ac[_0x5333('0x68')]]);}}}catch(_0x4ee97a){logger['error']('[voiceQueueReport][queuesummary]',util[_0x5333('0x43')](_0x4ee97a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5333('0xd')]['syncQueueSummaryComplete']=function(_0x4711e1){logger['debug'](_0x5333('0x74'),util[_0x5333('0x43')](_0x4711e1,{'showHidden':![],'depth':null}));this[_0x5333('0x14')]=!![];};VoiceQueueReport['prototype'][_0x5333('0x75')]=function(_0xb073a6){try{if(this[_0x5333('0x67')](_0xb073a6)){logger['debug'](_0x5333('0x76'),_0xb073a6[_0x5333('0x4c')],util[_0x5333('0x43')](_0xb073a6,{'showHidden':![],'depth':null}));if(_[_0x5333('0x64')](this[_0x5333('0x11')][_0xb073a6['uniqueid']]))this[_0x5333('0x11')][_0xb073a6['uniqueid']]=[];if(_[_0x5333('0x64')](this[_0x5333('0x3a')][_0xb073a6['uniqueid']]))this[_0x5333('0x3a')][_0xb073a6[_0x5333('0x4c')]]={};var _0x638df3=new QueueReport();_0x638df3[_0x5333('0x54')]=_0xb073a6[_0x5333('0x68')];_0x638df3[_0x5333('0x57')]=this[_0x5333('0x13')][_0x638df3[_0x5333('0x54')]]&&this[_0x5333('0x13')][_0x638df3['name']][_0x5333('0x57')]?this[_0x5333('0x13')][_0x638df3[_0x5333('0x54')]][_0x5333('0x57')]||_0x5333('0x58'):_0x5333('0x58');_0x638df3[_0x5333('0x68')]=_0xb073a6[_0x5333('0x68')];_0x638df3[_0x5333('0x77')]=moment()['format'](_0x5333('0x78'));_0x638df3[_0x5333('0x79')]=_0xb073a6[_0x5333('0x79')];_0x638df3['count']=_0xb073a6[_0x5333('0x7a')];_0x638df3['uniqueid']=_0xb073a6[_0x5333('0x4c')];_0x638df3[_0x5333('0x7b')]=this[_0x5333('0x3a')][_0xb073a6[_0x5333('0x4c')]]['routealias'];logger[_0x5333('0x6a')](_0x5333('0x7c'),_0x638df3[_0x5333('0x54')],_0x638df3[_0x5333('0x57')]);_['merge'](_0x638df3,_[_0x5333('0x7d')](_0xb073a6,_[_0x5333('0x7e')](_0x638df3)));this[_0x5333('0x11')][_0xb073a6[_0x5333('0x4c')]][_0x5333('0x7f')](_0x638df3);this[_0x5333('0x3a')][_0xb073a6['uniqueid']]=_0x638df3;this[_0x5333('0x49')](_0x638df3,_0x5333('0x1a'));}}catch(_0x327e05){logger[_0x5333('0x41')](_0x5333('0x76'),_0xb073a6['uniqueid'],util['inspect'](_0x327e05,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5333('0xd')][_0x5333('0x1c')]=function(_0x1b0b9c){try{if(this[_0x5333('0x67')](_0x1b0b9c)){logger[_0x5333('0x51')](_0x5333('0x80'),_0x1b0b9c['uniqueid'],util['inspect'](_0x1b0b9c,{'showHidden':![],'depth':null}));if(this[_0x5333('0x11')][_0x1b0b9c['uniqueid']]){var _0x3f67f6=_[_0x5333('0x81')](this[_0x5333('0x11')][_0x1b0b9c[_0x5333('0x4c')]]);_0x3f67f6[_0x5333('0x82')]=![];_0x3f67f6['queuecallercompleteAt']=null;_0x3f67f6[_0x5333('0x83')]=_0x1b0b9c[_0x5333('0x83')];_0x3f67f6[_0x5333('0x84')]=_0x1b0b9c[_0x5333('0x84')];_0x3f67f6[_0x5333('0x1b')]=!![];_0x3f67f6[_0x5333('0x85')]=moment()['format'](_0x5333('0x78'));_0x3f67f6[_0x5333('0x86')]=_0x5333('0x87');_0x3f67f6[_0x5333('0x88')]=null;logger[_0x5333('0x6a')](_0x5333('0x89'),_0x3f67f6[_0x5333('0x54')],_0x3f67f6['type']);this[_0x5333('0x3a')][_0x1b0b9c[_0x5333('0x4c')]]=_0x3f67f6;this[_0x5333('0x47')](_0x3f67f6,_0x5333('0x1b'));}}}catch(_0x93eed2){logger[_0x5333('0x41')](_0x5333('0x80'),_0x1b0b9c['uniqueid'],util[_0x5333('0x43')](_0x93eed2,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x5333('0x1d')]=function(_0x229911){try{if(this[_0x5333('0x67')](_0x229911)){logger['debug']('[%s][voiceQueueReport][queuecallerleave]',_0x229911[_0x5333('0x4c')],util[_0x5333('0x43')](_0x229911,{'showHidden':![],'depth':null}));if(this[_0x5333('0x11')][_0x229911[_0x5333('0x4c')]]){var _0x1d29d0=_[_0x5333('0x81')](this[_0x5333('0x11')][_0x229911[_0x5333('0x4c')]]);_0x1d29d0[_0x5333('0x8a')]=moment()[_0x5333('0x53')](_0x5333('0x78'));_0x1d29d0[_0x5333('0x8b')]=_0x229911[_0x5333('0x8b')];_0x1d29d0[_0x5333('0x8c')]=_0x229911[_0x5333('0x8c')];logger[_0x5333('0x6a')](_0x5333('0x8d'),_0x1d29d0[_0x5333('0x54')],_0x1d29d0[_0x5333('0x57')],_0x229911[_0x5333('0x8b')],_0x229911[_0x5333('0x8c')]);this['channels'][_0x229911[_0x5333('0x4c')]]=_0x1d29d0;this[_0x5333('0x49')](_0x1d29d0,_0x5333('0x8e'));}}}catch(_0x309948){logger['error'](_0x5333('0x8f'),_0x229911[_0x5333('0x4c')],util['inspect'](_0x309948,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5333('0xd')][_0x5333('0x20')]=function(_0x429688){try{if(this[_0x5333('0x67')](_0x429688)){logger[_0x5333('0x51')](_0x5333('0x90'),_0x429688[_0x5333('0x4c')],util[_0x5333('0x43')](_0x429688,{'showHidden':![],'depth':null}));if(this[_0x5333('0x11')][_0x429688[_0x5333('0x4c')]]){var _0x288b36=_[_0x5333('0x81')](this[_0x5333('0x11')][_0x429688['uniqueid']]);_0x288b36['queuecallercomplete']=!![];_0x288b36['queuecallerexitreason']='COMPLETEDBYAGENT';logger[_0x5333('0x6a')](_0x5333('0x91'),_0x288b36[_0x5333('0x54')],_0x288b36[_0x5333('0x57')]);}}}catch(_0x36f2e5){logger['error'](_0x5333('0x90'),_0x429688[_0x5333('0x4c')],util[_0x5333('0x43')](_0x36f2e5,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x5333('0x1e')]=function(_0x57bd8d){try{if(this['isNotNull'](_0x57bd8d)){logger['debug']('[%s][voiceQueueReport][agentcomplete]',_0x57bd8d[_0x5333('0x4c')],util[_0x5333('0x43')](_0x57bd8d,{'showHidden':![],'depth':null}));if(this[_0x5333('0x11')][_0x57bd8d[_0x5333('0x4c')]]){var _0x1e4223=_[_0x5333('0x81')](this[_0x5333('0x11')][_0x57bd8d[_0x5333('0x4c')]]);_0x1e4223[_0x5333('0x1b')]=![];_0x1e4223[_0x5333('0x85')]=null;_0x1e4223[_0x5333('0x92')]=!![];_0x1e4223[_0x5333('0x88')]=_0x57bd8d['membername'];_0x1e4223[_0x5333('0x83')]=_0x57bd8d['holdtime'];_0x1e4223[_0x5333('0x82')]=!![];_0x1e4223[_0x5333('0x93')]=![];_0x1e4223[_0x5333('0x94')]=null;if(!_0x1e4223[_0x5333('0x95')]){if(_0x57bd8d[_0x5333('0x96')]==_0x5333('0x95')){_0x1e4223[_0x5333('0x86')]='COMPLETED';logger[_0x5333('0x6a')](_0x5333('0x97'),_0x1e4223['name'],_0x1e4223[_0x5333('0x57')]);}else{if(_[_0x5333('0x98')](_0x57bd8d[_0x5333('0x99')][_0x5333('0x9a')](),_0x5333('0x9b'))){if(this[_0x5333('0x11')][_0x57bd8d['linkedid']]){var _0xef82a5=_[_0x5333('0x81')](this[_0x5333('0x11')][_0x57bd8d[_0x5333('0x9c')]]);_0xef82a5[_0x5333('0x82')]=![];_0xef82a5['queuecallerexit']=!![];_0xef82a5[_0x5333('0x94')]=moment(_0x1e4223[_0x5333('0x77')])['add'](_0x57bd8d[_0x5333('0x83')],'seconds')[_0x5333('0x53')](_0x5333('0x78'));_0xef82a5['queuecallerexitreason']=_0x5333('0x9d');_0xef82a5[_0x5333('0x95')]=!![];_0xef82a5[_0x5333('0x9e')]=_0x5333('0x9f');_0xef82a5[_0x5333('0xa0')]=_0x57bd8d[_0x5333('0xa1')];_0xef82a5[_0x5333('0xa2')]=_0x57bd8d[_0x5333('0x4c')];logger['info'](_0x5333('0xa3'),_0xef82a5[_0x5333('0x54')],_0xef82a5[_0x5333('0x57')]);var _0x28dea3=this[_0x5333('0x11')][_0x57bd8d[_0x5333('0x9c')]];this[_0x5333('0x11')][_0x57bd8d[_0x5333('0x9c')]]=this[_0x5333('0x11')][_0x57bd8d[_0x5333('0x4c')]];this['queueReports'][_0x57bd8d[_0x5333('0x4c')]]=_0x28dea3;}}else{_0x1e4223[_0x5333('0x86')]=_0x5333('0xa4')+_0x57bd8d[_0x5333('0x96')][_0x5333('0xa5')]();logger[_0x5333('0x6a')](_0x5333('0xa6'),_0x1e4223[_0x5333('0x54')],_0x1e4223[_0x5333('0x57')],_0x1e4223[_0x5333('0x86')]);}}}this[_0x5333('0x3a')][_0x57bd8d[_0x5333('0x4c')]]=_0x1e4223;this['emitVoiceQueueChannelRemove'](_0x1e4223,_0x5333('0xa7'));}}}catch(_0x443b16){logger[_0x5333('0x41')](_0x5333('0xa8'),_0x57bd8d[_0x5333('0x4c')],util['inspect'](_0x443b16,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x5333('0x22')]=function(_0x1ac300){try{if(this[_0x5333('0x67')](_0x1ac300)){logger[_0x5333('0x51')](_0x5333('0xa9'),_0x1ac300[_0x5333('0x4c')],util[_0x5333('0x43')](_0x1ac300,{'showHidden':![],'depth':null}));this[_0x5333('0xaa')](_0x1ac300[_0x5333('0x4c')],_[_0x5333('0x7e')](_0x1ac300[_0x5333('0xab')])[0x0],_0x1ac300[_0x5333('0xac')]);if(this[_0x5333('0x11')][_0x1ac300[_0x5333('0x4c')]]){var _0xe6ccd4=_[_0x5333('0x81')](this[_0x5333('0x11')][_0x1ac300['uniqueid']]);if(_0xe6ccd4){if(this['isNotNull'](_0x1ac300[_0x5333('0xab')])&&this[_0x5333('0x67')](_0x1ac300[_0x5333('0xab')][_0x5333('0xad')])){switch(_0x1ac300['value']){case _0x5333('0xae'):_0xe6ccd4['queuecallerexit']=![];_0xe6ccd4['queuecallerexitAt']=null;break;case'TIMEOUT':_0xe6ccd4[_0x5333('0xaf')]='timeout';_0xe6ccd4[_0x5333('0x93')]=!![];_0xe6ccd4['queuecallerexitAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0xe6ccd4[_0x5333('0x8a')]=moment()[_0x5333('0x53')](_0x5333('0x78'));logger['debug']('[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:',_0x1ac300[_0x5333('0x4c')],util[_0x5333('0x43')](_0xe6ccd4,{'showHidden':![],'depth':null}));ami[_0x5333('0x4d')]('custom:timeout',_0xe6ccd4);break;default:_0xe6ccd4[_0x5333('0x93')]=!![];_0xe6ccd4[_0x5333('0x94')]=moment()[_0x5333('0x53')](_0x5333('0x78'));_0xe6ccd4[_0x5333('0x8a')]=moment()[_0x5333('0x53')](_0x5333('0x78'));}_0xe6ccd4[_0x5333('0x1b')]=![];_0xe6ccd4[_0x5333('0x85')]=null;_0xe6ccd4[_0x5333('0x86')]=_0x1ac300[_0x5333('0xac')];this['channels'][_0x1ac300[_0x5333('0x4c')]]=_0xe6ccd4;this['emitVoiceQueueChannelRemove'](_0xe6ccd4,_0x5333('0x21'));}else if(this[_0x5333('0x67')](_0x1ac300[_0x5333('0xab')])&&this[_0x5333('0x67')](_0x1ac300[_0x5333('0xab')][_0x5333('0xb0')])){if(!_0xe6ccd4[_0x5333('0x1b')]){_0xe6ccd4[_0x5333('0x93')]=!![];_0xe6ccd4[_0x5333('0x94')]=moment()[_0x5333('0x53')](_0x5333('0x78'));_0xe6ccd4[_0x5333('0x86')]=_0x5333('0xb1');_0xe6ccd4[_0x5333('0x8a')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x5333('0x3a')][_0x1ac300['uniqueid']]=_0xe6ccd4;}}logger[_0x5333('0x6a')](_0x5333('0xb2'),_0x1ac300[_0x5333('0x4c')],_0xe6ccd4[_0x5333('0x54')],_0xe6ccd4['type'],_[_0x5333('0x7e')](_0x1ac300[_0x5333('0xab')])[0x0],_0x1ac300['value']);_0xe6ccd4[_0x5333('0x16')]=this[_0x5333('0x16')][_0x1ac300[_0x5333('0x4c')]];}}}}catch(_0x4ebda8){logger[_0x5333('0x41')]('[%s][voiceQueueReport][varset]',_0x1ac300[_0x5333('0x4c')],util[_0x5333('0x43')](_0x4ebda8,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5333('0xd')][_0x5333('0xaa')]=function(_0x45def6,_0x5907b9,_0x2cb62d){var _0x3b0761=[_0x5333('0xb3'),'rtpaudioqosbridged',_0x5333('0xb4'),_0x5333('0xb5'),'rtpaudioqosloss','rtpaudioqoslossbridged',_0x5333('0xb6'),_0x5333('0xb7'),_0x5333('0xb8'),'sipuri','bridgepeer',_0x5333('0xb9'),_0x5333('0xba'),_0x5333('0xbb'),_0x5333('0xbc'),_0x5333('0xbd'),_0x5333('0xbe'),'memberpenalty','memberrealtime'];if(!_[_0x5333('0x3c')](_0x5907b9)&&!_['includes'](_0x3b0761,_0x5907b9)){if(_[_0x5333('0x64')](this[_0x5333('0x16')][_0x45def6])){this['variables'][_0x45def6]={};}this[_0x5333('0x16')][_0x45def6][_0x5907b9]=_0x2cb62d;}};VoiceQueueReport[_0x5333('0xd')]['syncHangup']=function(_0x523513){try{if(this['isNotNull'](_0x523513)){logger[_0x5333('0x51')](_0x5333('0xbf'),_0x523513[_0x5333('0x4c')],util['inspect'](_0x523513,{'showHidden':![],'depth':null}));if(this[_0x5333('0x11')][_0x523513[_0x5333('0x4c')]]){for(var _0x46be17=0x0,_0x1f5ce8={};_0x46be17<this[_0x5333('0x11')][_0x523513['uniqueid']][_0x5333('0xc0')];_0x46be17+=0x1){_0x1f5ce8=this[_0x5333('0x11')][_0x523513[_0x5333('0x4c')]][_0x46be17];if(this['voiceQueues'][_0x1f5ce8['queue']]){if(_0x1f5ce8['queuecallerexit']&&_0x1f5ce8['transfer']!=!![]){this[_0x5333('0x13')][_0x1f5ce8[_0x5333('0x68')]]['unmanaged']+=0x1;}if(_0x1f5ce8[_0x5333('0x1b')]){this[_0x5333('0x13')][_0x1f5ce8[_0x5333('0x68')]][_0x5333('0x5d')]+=0x1;}this[_0x5333('0x13')][_0x1f5ce8[_0x5333('0x68')]][_0x5333('0xc1')]+=moment(_0x1f5ce8[_0x5333('0x8a')])[_0x5333('0xc2')](_0x1f5ce8[_0x5333('0x77')],_0x5333('0xc3'))||0x0;if(_0x46be17===this[_0x5333('0x11')][_0x523513[_0x5333('0x4c')]][_0x5333('0xc0')]-0x1){this[_0x5333('0x13')][_0x1f5ce8[_0x5333('0x68')]][_0x5333('0x5c')]+=moment()['milliseconds'](0x0)[_0x5333('0xc2')](_0x1f5ce8['queuecallerjoinAt'],_0x5333('0xc3'));this[_0x5333('0x13')][_0x1f5ce8['queue']]['total']+=0x1;if(_0x1f5ce8[_0x5333('0x82')]){this['voiceQueues'][_0x1f5ce8['queue']][_0x5333('0xc4')]+=0x1;this[_0x5333('0x13')][_0x1f5ce8['queue']][_0x5333('0xc5')]+=moment()[_0x5333('0xc6')](0x0)[_0x5333('0xc2')](_0x1f5ce8[_0x5333('0x8a')],_0x5333('0xc3'));_0x1f5ce8[_0x5333('0xc7')]=moment()[_0x5333('0x53')]('YYYY-MM-DD\x20HH:mm:ss');_0x1f5ce8[_0x5333('0x93')]=![];_0x1f5ce8['queuecallerexitAt']=null;}if(_0x1f5ce8[_0x5333('0x93')]&&_0x1f5ce8[_0x5333('0x95')]!=!![]){_0x1f5ce8[_0x5333('0xaf')]='unmanaged';logger['debug']('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:',_0x523513[_0x5333('0x4c')],util[_0x5333('0x43')](_0x1f5ce8,{'showHidden':![],'depth':null}));ami[_0x5333('0x4d')](_0x5333('0xc8'),_0x1f5ce8);}if(_0x1f5ce8[_0x5333('0x1b')]){_0x1f5ce8[_0x5333('0xaf')]=_0x5333('0x5d');logger['debug']('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:',_0x523513[_0x5333('0x4c')],util[_0x5333('0x43')](_0x1f5ce8,{'showHidden':![],'depth':null}));ami[_0x5333('0x4d')](_0x5333('0xc9'),_0x1f5ce8);}}else{this['voiceQueues'][_0x1f5ce8['queue']]['sumDuration']+=this[_0x5333('0x13')][_0x1f5ce8['queue']]['sumHoldTime'];}logger['info'](_0x5333('0xca'),_0x523513[_0x5333('0x4c')],_0x1f5ce8['name'],_0x1f5ce8[_0x5333('0x57')],_0x523513[_0x5333('0xcb')]);this[_0x5333('0x3a')][_0x523513[_0x5333('0x4c')]]=_0x1f5ce8;this['emitVoiceQueueChannelRemove'](_0x1f5ce8,_0x5333('0xcc'));this['emitVoiceQueueSummary'](this['voiceQueues'][_0x1f5ce8[_0x5333('0x68')]],_0x5333('0xcc'));}}logger[_0x5333('0x51')](_0x5333('0xcd'),_0x523513['uniqueid'],util[_0x5333('0x43')](this[_0x5333('0x11')][_0x523513['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x5333('0x4d')](_0x5333('0xce'),this[_0x5333('0x11')][_0x523513[_0x5333('0x4c')]]);delete this['queueReports'][_0x523513[_0x5333('0x4c')]];delete this[_0x5333('0x3a')][_0x523513['uniqueid']];}if(this[_0x5333('0x16')][_0x523513[_0x5333('0x4c')]]){delete this[_0x5333('0x16')][_0x523513[_0x5333('0x4c')]];}}}catch(_0x45e6b5){logger['error'](_0x5333('0xbf'),_0x523513[_0x5333('0x4c')],util[_0x5333('0x43')](_0x45e6b5,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x5333('0x2c')]=function(_0x2c4403){try{if(this[_0x5333('0x67')](_0x2c4403)){logger[_0x5333('0x51')](_0x5333('0xcf'),_0x2c4403[_0x5333('0x4c')],util['inspect'](_0x2c4403,{'showHidden':![],'depth':null}));var _0x14b2fe;if(this['queueReports'][_0x2c4403[_0x5333('0xd0')]]){_0x14b2fe=_['last'](this[_0x5333('0x11')][_0x2c4403[_0x5333('0xd0')]]);_0x14b2fe['transferexten']=_0x2c4403[_0x5333('0xd1')];_0x14b2fe[_0x5333('0xa2')]=_0x2c4403[_0x5333('0xd2')];_0x14b2fe[_0x5333('0x86')]='ATTENDEDTRANSFER';_0x14b2fe['transfer']=!![];_0x14b2fe['transfertype']='ATTENDED';if(this[_0x5333('0x11')][_0x2c4403[_0x5333('0xd2')]]){var _0x2e73d2=this['queueReports'][_0x2c4403[_0x5333('0xd2')]];this[_0x5333('0x11')][_0x2c4403['secondtransfereruniqueid']]=this['queueReports'][_0x2c4403[_0x5333('0xd0')]];this[_0x5333('0x11')][_0x2c4403[_0x5333('0xd0')]]=_0x2e73d2;var _0x4ef282=_[_0x5333('0x81')](this[_0x5333('0x11')][_0x2c4403[_0x5333('0xd0')]]);_0x4ef282[_0x5333('0xd3')]=!![];}logger[_0x5333('0x6a')](_0x5333('0xd4'),_0x2c4403[_0x5333('0x4c')],_0x14b2fe['name'],_0x14b2fe[_0x5333('0x57')],_0x14b2fe[_0x5333('0xa0')],_0x14b2fe['transferuniqueid']);}else if(this[_0x5333('0x11')][_0x2c4403[_0x5333('0xd5')]]){_0x14b2fe=_[_0x5333('0x81')](this[_0x5333('0x11')][_0x2c4403[_0x5333('0xd5')]]);_0x14b2fe[_0x5333('0xa0')]=_0x2c4403['origtransfererexten'];_0x14b2fe['transferuniqueid']=_0x2c4403[_0x5333('0xd6')];_0x14b2fe[_0x5333('0x86')]=_0x5333('0xd7');_0x14b2fe[_0x5333('0x95')]=!![];_0x14b2fe[_0x5333('0x9e')]=_0x5333('0xd8');if(this[_0x5333('0x11')][_0x2c4403[_0x5333('0xd6')]]){var _0x2e73d2=this[_0x5333('0x11')][_0x2c4403['origtransfereruniqueid']];this[_0x5333('0x11')][_0x2c4403['origtransfereruniqueid']]=this[_0x5333('0x11')][_0x2c4403[_0x5333('0xd5')]];this[_0x5333('0x11')][_0x2c4403['transfertargetuniqueid']]=_0x2e73d2;var _0x4ef282=_[_0x5333('0x81')](this[_0x5333('0x11')][_0x2c4403[_0x5333('0xd5')]]);_0x4ef282[_0x5333('0xd3')]=!![];}logger['info'](_0x5333('0xd4'),_0x2c4403['uniqueid'],_0x14b2fe[_0x5333('0x54')],_0x14b2fe[_0x5333('0x57')],_0x14b2fe[_0x5333('0xa0')],_0x14b2fe[_0x5333('0xa2')]);}}}catch(_0x3471d1){logger[_0x5333('0x41')](_0x5333('0xcf'),_0x2c4403[_0x5333('0x4c')],util[_0x5333('0x43')](_0x3471d1,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5333('0xd')][_0x5333('0x2e')]=function(_0x5bb821){try{if(this[_0x5333('0x67')](_0x5bb821)){logger[_0x5333('0x51')]('[%s][voiceQueueReport][blindtransfer]',_0x5bb821['uniqueid'],util[_0x5333('0x43')](_0x5bb821,{'showHidden':![],'depth':null}));if(this[_0x5333('0x11')][_0x5bb821[_0x5333('0xd0')]]){var _0x46e203=_[_0x5333('0x81')](this['queueReports'][_0x5bb821['transfereeuniqueid']]);_0x46e203[_0x5333('0x86')]='BLINDTRANSFER';_0x46e203[_0x5333('0x95')]=!![];_0x46e203[_0x5333('0x9e')]=_0x5333('0xd9');_0x46e203[_0x5333('0xa0')]=_0x5bb821[_0x5333('0xda')];_0x46e203[_0x5333('0xa2')]=_0x5bb821[_0x5333('0xd0')];logger[_0x5333('0x6a')](_0x5333('0xdb'),_0x5bb821['uniqueid'],_0x46e203['name'],_0x46e203['type'],_0x46e203[_0x5333('0xa0')],_0x46e203['transferuniqueid']);this['syncHangup']({'event':_0x5333('0xdc'),'uniqueid':_0x5bb821['transfereeuniqueid'],'context':_0x5bb821[_0x5333('0xdd')],'channel':_0x5bb821[_0x5333('0xde')]});}}}catch(_0x16acb9){logger[_0x5333('0x41')](_0x5333('0xdf'),_0x5bb821[_0x5333('0x4c')],util['inspect'](_0x16acb9,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5333('0xd')][_0x5333('0x28')]=function(_0x5a2371){try{if(this[_0x5333('0x67')](_0x5a2371)){logger['debug'](_0x5333('0xe0'),_0x5a2371[_0x5333('0x4c')],util[_0x5333('0x43')](_0x5a2371,{'showHidden':![],'depth':null}));if(this[_0x5333('0x11')][_0x5a2371[_0x5333('0x4c')]]){var _0x104b66=_[_0x5333('0x81')](this[_0x5333('0x11')][_0x5a2371[_0x5333('0x4c')]]);if(!_['isNil'](_0x104b66[_0x5333('0x8a')])){_0x104b66[_0x5333('0xe1')]=moment()[_0x5333('0x53')](_0x5333('0x78'));logger[_0x5333('0x6a')](_0x5333('0xe2'),_0x5a2371[_0x5333('0x4c')],_0x104b66[_0x5333('0xe1')]);}}}}catch(_0x3ed926){logger[_0x5333('0x41')](_0x5333('0xe0'),_0x5a2371[_0x5333('0x4c')],util[_0x5333('0x43')](_0x3ed926,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5333('0xd')][_0x5333('0x2a')]=function(_0xc9fb8){try{if(this[_0x5333('0x67')](_0xc9fb8)){logger[_0x5333('0x51')](_0x5333('0xe3'),_0xc9fb8[_0x5333('0x4c')],util[_0x5333('0x43')](_0xc9fb8,{'showHidden':![],'depth':null}));if(this[_0x5333('0x11')][_0xc9fb8[_0x5333('0x4c')]]){var _0xe18dbd=_[_0x5333('0x81')](this[_0x5333('0x11')][_0xc9fb8[_0x5333('0x4c')]]);if(!_['isNil'](_0xe18dbd[_0x5333('0xe1')])){_0xe18dbd['mohtime']+=moment()[_0x5333('0xc6')](0x0)[_0x5333('0xc2')](_0xe18dbd[_0x5333('0xe1')],_0x5333('0xc3'));logger[_0x5333('0x6a')](_0x5333('0xe4'),_0xc9fb8['uniqueid'],_0xe18dbd[_0x5333('0xe5')]);delete _0xe18dbd[_0x5333('0xe1')];}}}}catch(_0x52ba3c){logger[_0x5333('0x41')](_0x5333('0xe3'),_0xc9fb8['uniqueid'],util['inspect'](_0x52ba3c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5333('0xd')][_0x5333('0x26')]=function(_0x52536b){try{if(this[_0x5333('0x67')](_0x52536b)){logger[_0x5333('0x51')](_0x5333('0xe6'),_0x52536b[_0x5333('0x4c')],util['inspect'](_0x52536b,{'showHidden':![],'depth':null}));if(_0x52536b[_0x5333('0xe7')]['toLowerCase']()===_0x5333('0xe8')){_0x52536b[_0x5333('0xe9')]=_0x52536b[_0x5333('0xea')]&&_0x52536b[_0x5333('0xea')][_0x5333('0x98')](_0x5333('0xeb'))?_0x52536b[_0x5333('0xea')]:(_0x52536b[_0x5333('0xea')]||_0x52536b[_0x5333('0xe9')])['toLowerCase']();if(_[_0x5333('0x98')](_0x52536b[_0x5333('0xe9')][_0x5333('0x9a')](),'cdr(')){logger[_0x5333('0x6a')](_0x5333('0xec'),_0x52536b['uniqueid'],_0x52536b[_0x5333('0xe7')],_0x52536b[_0x5333('0xe9')]);if(_['isUndefined'](this[_0x5333('0x3a')][_0x52536b[_0x5333('0x4c')]]))this[_0x5333('0x3a')][_0x52536b[_0x5333('0x4c')]]={};var _0x4d68b2=_0x52536b[_0x5333('0xe9')][_0x5333('0xed')]('=');var _0x129614=_0x4d68b2[0x0]['toLowerCase']()[_0x5333('0xee')](/cdr\((.*)\)/);if(_0x129614)this[_0x5333('0x3a')][_0x52536b[_0x5333('0x4c')]][_0x129614[0x1]]=_0x4d68b2[0x1];}}}}catch(_0x5d9f45){logger[_0x5333('0x41')](_0x5333('0xef'),_0x52536b[_0x5333('0x4c')],util[_0x5333('0x43')](_0x5d9f45,{'showHidden':![],'depth':null}));}};module['exports']=VoiceQueueReport;
\ No newline at end of file
+var _0x97df=['[%s][voiceQueueReport][queuecallerleave]','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','syncAgentConnect','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentconnect]','[%s][voiceQueueReport][agentcomplete]','assigned','lastAssignedTo','membername','queuecallerexit','transfer','reason','COMPLETED','startsWith','channel','toLowerCase','linkedid','queuecallerexitAt','queuecallerjoinAt','add','seconds','transfertype','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','syncVarSet','[%s][voiceQueueReport][varset]','addVariable','variable','value','queuestatus','CONTINUE','TIMEOUT','lastevent','queuecallerleaveAt','custom:timeout','queueposition','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','memberdynamic','memberinterface','memberpenalty','includes','length','unmanaged','diff','milliseconds','total','queuecallercomplete','answered','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','abandoned','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','emitVoiceQueueSummary','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][hangup]','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','ATTENDEDTRANSFER','ATTENDED','secondtransfereruniqueid','switch','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','mohtime','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','exports','lodash','util','md5','../../../config/environment','../model/queueReport','defaults','redis','localhost','prototype','enqueue','tail','finally','sequence','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary','syncQueueSummary','bind','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','varset','hangup','syncHangup','newexten','syncNewExten','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','isEmpty','hasOwnProperty','originated','pTalking','waiting','queueStatusComplete','clearZombieChannels','isNil','Action','status','catch','message','No\x20such\x20channel','[%s][voiceQueueReport][checkChannel]','inspect','error','[%s][voiceQueueReport][checkQueueReport]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][','voice:queue:%s','name','voice_queue_channel:save',']\x20sending\x20voice_queue_channel:remove\x20event:','uniqueid','format','voice_queue_channel:remove','voice_queue_presence:remove','available','sumBillable','sumDuration','sumHoldTime','talking','type','Trunk','active','callerid','Interval','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','queues','[voiceQueueReport][queues]','loopQueueSummary','then','[voiceQueueReport][queuesummary]','queue','info','[voiceQueueReport][queuesummary]\x20name:%s','callers','toNumber','loggedIn','loggedin','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','inbound','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','syncQueueCallerAbandon','[%s][voiceQueueReport][queuecallerabandon]','last','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason'];(function(_0x229e6c,_0x20ff2c){var _0x122364=function(_0x17aa9a){while(--_0x17aa9a){_0x229e6c['push'](_0x229e6c['shift']());}};_0x122364(++_0x20ff2c);}(_0x97df,0x151));var _0xf97d=function(_0x4d1ee9,_0x394a78){_0x4d1ee9=_0x4d1ee9-0x0;var _0x9a5456=_0x97df[_0x4d1ee9];return _0x9a5456;};'use strict';var _=require(_0xf97d('0x0'));var moment=require('moment');var util=require(_0xf97d('0x1'));var md5=require(_0xf97d('0x2'));var Redis=require('ioredis');var config=require(_0xf97d('0x3'));var logger=require('../../../config/logger')('ami');var ami=require('../ami');var QueueReport=require(_0xf97d('0x4'));config['redis']=_[_0xf97d('0x5')](config[_0xf97d('0x6')],{'host':_0xf97d('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf97d('0x6')]));var Sequence=function(){};Sequence[_0xf97d('0x8')][_0xf97d('0x9')]=function(_0x3661b3){this['tail']=this[_0xf97d('0xa')]?this[_0xf97d('0xa')][_0xf97d('0xb')](_0x3661b3):_0x3661b3();};function VoiceQueueReport(_0x15e394){this[_0xf97d('0xc')]=new Sequence();this[_0xf97d('0xd')]={};this[_0xf97d('0xe')]=_0x15e394[_0xf97d('0xe')];this[_0xf97d('0xf')]=_0x15e394[_0xf97d('0x10')];this[_0xf97d('0x11')]=_0x15e394[_0xf97d('0x11')];this[_0xf97d('0x12')]=!![];this[_0xf97d('0x13')]=_0x15e394[_0xf97d('0x13')];this[_0xf97d('0x14')]={};ami['on'](_0xf97d('0x15'),this[_0xf97d('0x16')][_0xf97d('0x17')](this));ami['on']('queuesummarycomplete',this[_0xf97d('0x18')][_0xf97d('0x17')](this));ami['on'](_0xf97d('0x19'),this[_0xf97d('0x1a')][_0xf97d('0x17')](this));ami['on'](_0xf97d('0x1b'),this['syncQueueCallerAbandon']['bind'](this));ami['on'](_0xf97d('0x1c'),this[_0xf97d('0x1d')][_0xf97d('0x17')](this));ami['on'](_0xf97d('0x1e'),this[_0xf97d('0x1f')][_0xf97d('0x17')](this));ami['on']('agentconnect',this['syncAgentConnect']['bind'](this));ami['on'](_0xf97d('0x20'),this['syncVarSet']['bind'](this));ami['on'](_0xf97d('0x21'),this[_0xf97d('0x22')]['bind'](this));ami['on']('fullybooted',this['syncFullyBooted']['bind'](this));ami['on'](_0xf97d('0x23'),this[_0xf97d('0x24')][_0xf97d('0x17')](this));ami['on'](_0xf97d('0x25'),this[_0xf97d('0x26')][_0xf97d('0x17')](this));ami['on'](_0xf97d('0x27'),this[_0xf97d('0x28')][_0xf97d('0x17')](this));ami['on'](_0xf97d('0x29'),this[_0xf97d('0x2a')][_0xf97d('0x17')](this));ami['on'](_0xf97d('0x2b'),this[_0xf97d('0x2c')]['bind'](this));this['loopQueueSummary']();this['loopQueueShow']();}function clearChannels(_0x1f6804){if(!_[_0xf97d('0x2d')](_0x1f6804)){for(var _0x12aa4a in _0x1f6804){if(_0x1f6804['hasOwnProperty'](_0x12aa4a)){delete _0x1f6804[_0x12aa4a];}}}}function clearCampaigns(_0x4b5a){if(!_[_0xf97d('0x2d')](_0x4b5a)){for(var _0x2ea3d6 in _0x4b5a){if(_0x4b5a[_0xf97d('0x2e')](_0x2ea3d6)){_0x4b5a[_0x2ea3d6][_0xf97d('0x2f')]=0x0;}}}}function clearVoiceQueues(_0x51b410){if(!_['isEmpty'](_0x51b410)){for(var _0x2808ab in _0x51b410){if(_0x51b410['hasOwnProperty'](_0x2808ab)){_0x51b410[_0x2808ab][_0xf97d('0x2f')]=0x0;_0x51b410[_0x2808ab]['talking']=0x0;_0x51b410[_0x2808ab][_0xf97d('0x30')]=0x0;_0x51b410[_0x2808ab][_0xf97d('0x31')]=0x0;_0x51b410[_0x2808ab][_0xf97d('0x32')]=!![];}}}}function clearAgentBooked(_0x5d3fda){if(!_[_0xf97d('0x2d')](_0x5d3fda)){for(var _0x1b983f in _0x5d3fda){if(_0x5d3fda['hasOwnProperty'](_0x1b983f)){_0x5d3fda[_0x1b983f]['unlockRR']=!![];}}}}VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x33')]=function(){var _0x252cee=this;for(var _0x36afd0 in this[_0xf97d('0xf')]){if(this[_0xf97d('0xf')][_0xf97d('0x2e')](_0x36afd0)&&!this['channels'][_0x36afd0]['switch']){this[_0xf97d('0xc')][_0xf97d('0x9')](function(){if(!_[_0xf97d('0x34')](_0x252cee[_0xf97d('0xf')][_0x36afd0])){return ami[_0xf97d('0x35')]({'action':_0xf97d('0x36'),'channel':_0x252cee[_0xf97d('0xf')][_0x36afd0]['channel']})[_0xf97d('0x37')](function(_0x1d8cc2){if(_0x1d8cc2[_0xf97d('0x38')]===_0xf97d('0x39')){setTimeout(function(){if(_0x252cee[_0xf97d('0xf')][_0x36afd0]){delete _0x252cee['channels'][_0x36afd0];logger['error'](_0xf97d('0x3a'),_0x36afd0,util[_0xf97d('0x3b')](_0x1d8cc2,{'showHidden':![],'depth':null}));}if(_0x252cee[_0xf97d('0xd')][_0x36afd0]){delete _0x252cee['queueReports'][_0x36afd0];logger[_0xf97d('0x3c')](_0xf97d('0x3d'),_0x36afd0,util['inspect'](_0x1d8cc2,{'showHidden':![],'depth':null}));}if(_0x252cee[_0xf97d('0x14')][_0x36afd0]){delete _0x252cee['variables'][_0x36afd0];logger[_0xf97d('0x3c')]('[%s][voiceQueueReport][checkVariables]',_0x36afd0,util[_0xf97d('0x3b')](_0x1d8cc2,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0xf97d('0x8')]['syncFullyBooted']=function(){logger[_0xf97d('0x3c')](_0xf97d('0x3e'));clearChannels(this['channels']);this[_0xf97d('0x3f')](this[_0xf97d('0xd')]);clearAgentBooked(this[_0xf97d('0xe')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0xf97d('0x13')]);};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x3f')]=function(_0x38b1a4){var _0x43de90=this;if(!_[_0xf97d('0x2d')](_0x38b1a4)){for(var _0x162f1e in _0x38b1a4){if(_0x38b1a4['hasOwnProperty'](_0x162f1e)){_0x43de90[_0xf97d('0x40')](_0x38b1a4[_0x162f1e],_0xf97d('0x41'));delete _0x38b1a4[_0x162f1e];}}}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x42')]=function(_0x2634d3,_0x122419,_0x1bcbf0){io['to'](_0x2634d3)['emit'](_0x122419,_0x1bcbf0);};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x43')]=function(_0x4ba45a,_0x2a5cd8){logger[_0xf97d('0x44')](_0xf97d('0x45')+_0x2a5cd8+']\x20sending\x20voice_queue_channel:save\x20event:',_0x4ba45a['uniqueid'],util[_0xf97d('0x3b')](_0x4ba45a,{'showHidden':![],'depth':null}));this[_0xf97d('0x42')](util['format'](_0xf97d('0x46'),_0x4ba45a[_0xf97d('0x47')]),_0xf97d('0x48'),_0x4ba45a);io['emit']('voice_queue_presence:save',_0x4ba45a);};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x40')]=function(_0x2af5f0,_0xe63dc8){logger[_0xf97d('0x44')](_0xf97d('0x45')+_0xe63dc8+_0xf97d('0x49'),_0x2af5f0[_0xf97d('0x4a')],util['inspect'](_0x2af5f0,{'showHidden':![],'depth':null}));this[_0xf97d('0x42')](util[_0xf97d('0x4b')](_0xf97d('0x46'),_0x2af5f0[_0xf97d('0x47')]),_0xf97d('0x4c'),_0x2af5f0);io[_0xf97d('0x42')](_0xf97d('0x4d'),_0x2af5f0);};VoiceQueueReport[_0xf97d('0x8')]['emitVoiceQueueSummary']=function(_0x1eca42,_0x5e64fb){if(_0x1eca42['type']==='inbound'){var _0x2f661c={'id':_0x1eca42['id'],'name':_0x1eca42[_0xf97d('0x47')],'strategy':_0x1eca42['strategy'],'answered':_0x1eca42['answered'],'available':_0x1eca42[_0xf97d('0x4e')],'loggedIn':_0x1eca42['loggedIn'],'pTalking':_0x1eca42[_0xf97d('0x30')],'sumBillable':_0x1eca42[_0xf97d('0x4f')],'sumDuration':_0x1eca42[_0xf97d('0x50')],'sumHoldTime':_0x1eca42[_0xf97d('0x51')]||0x0,'talking':_0x1eca42[_0xf97d('0x52')],'total':_0x1eca42['total'],'type':_0x1eca42[_0xf97d('0x53')],'unmanaged':_0x1eca42['unmanaged'],'abandoned':_0x1eca42['abandoned'],'waiting':_0x1eca42[_0xf97d('0x31')]};if(_0x1eca42['Trunk']){_0x2f661c[_0xf97d('0x54')]={'id':_0x1eca42[_0xf97d('0x54')]['id'],'name':_0x1eca42[_0xf97d('0x54')]['name'],'active':_0x1eca42['Trunk'][_0xf97d('0x55')],'callerid':_0x1eca42[_0xf97d('0x54')][_0xf97d('0x56')]};}if(_0x1eca42[_0xf97d('0x57')]){_0x2f661c[_0xf97d('0x57')]={'id':_0x1eca42['Interval']['id'],'name':_0x1eca42[_0xf97d('0x57')][_0xf97d('0x47')]};}var _0x521bfa=md5(JSON[_0xf97d('0x58')](_0x2f661c));if(_0x1eca42[_0xf97d('0x2')]!==_0x521bfa){_0x1eca42['md5']=_0x521bfa;logger[_0xf97d('0x44')](_0xf97d('0x59')+_0x5e64fb+_0xf97d('0x5a'),util[_0xf97d('0x3b')](_0x2f661c,{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xf97d('0x46'),_0x2f661c[_0xf97d('0x47')]),_0xf97d('0x5b'),_0x2f661c);}}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x5c')]=function(_0x1a3ba5){return _0x1a3ba5!==null&&!_[_0xf97d('0x5d')](_0x1a3ba5);};VoiceQueueReport['prototype']['loopQueueShow']=function(){var _0x57872e=this;setInterval(function(){_0x57872e['clearZombieChannels']();ami['Action']({'action':_0xf97d('0x5e')})[_0xf97d('0x37')](function(_0x460a0c){logger[_0xf97d('0x3c')](_0xf97d('0x5f'),util[_0xf97d('0x3b')](_0x460a0c,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype'][_0xf97d('0x60')]=function(){var _0x3765ef=this;setInterval(function(){if(_0x3765ef['flagQueueSummary']){return ami[_0xf97d('0x35')]({'action':_0xf97d('0x15')})[_0xf97d('0x61')](function(_0x30a238){_0x3765ef[_0xf97d('0x12')]=![];})[_0xf97d('0x37')](function(_0x85ff66){logger[_0xf97d('0x3c')](_0xf97d('0x62'),util[_0xf97d('0x3b')](_0x85ff66,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x16')]=function(_0x2464b1){try{if(this[_0xf97d('0x5c')](_0x2464b1)&&this[_0xf97d('0x5c')](_0x2464b1[_0xf97d('0x63')])){logger[_0xf97d('0x44')]('[voiceQueueReport][queuesummary]\x20event:',util[_0xf97d('0x3b')](_0x2464b1,{'showHidden':![],'depth':null}));if(this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]]){logger[_0xf97d('0x64')](_0xf97d('0x65'),_0x2464b1[_0xf97d('0x63')]);var _0x4b64ab=_['countBy'](this[_0xf97d('0xf')],_0xf97d('0x63'))[_0x2464b1['queue']]||0x0;var _0x4cc883=_0x4b64ab-_0x2464b1[_0xf97d('0x66')];if(this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]][_0xf97d('0x31')]!==_[_0xf97d('0x67')](_0x2464b1[_0xf97d('0x66')])||this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]][_0xf97d('0x68')]!==_[_0xf97d('0x67')](_0x2464b1[_0xf97d('0x69')])||this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]][_0xf97d('0x4e')]!==_['toNumber'](_0x2464b1['available'])||this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]][_0xf97d('0x52')]!==_0x4cc883){this[_0xf97d('0x11')][_0x2464b1['queue']][_0xf97d('0x31')]=_[_0xf97d('0x67')](_0x2464b1['callers']);this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]][_0xf97d('0x68')]=_[_0xf97d('0x67')](_0x2464b1[_0xf97d('0x69')]);this['voiceQueues'][_0x2464b1[_0xf97d('0x63')]]['available']=_[_0xf97d('0x67')](_0x2464b1[_0xf97d('0x4e')]);this[_0xf97d('0x11')][_0x2464b1['queue']][_0xf97d('0x52')]=_0x4cc883>0x0?_0x4cc883:0x0;this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]][_0xf97d('0x52')]=this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]]['talking']>_[_0xf97d('0x67')](_0x2464b1[_0xf97d('0x69')])?_[_0xf97d('0x67')](_0x2464b1[_0xf97d('0x69')]):this[_0xf97d('0x11')][_0x2464b1['queue']][_0xf97d('0x52')];this['emitVoiceQueueSummary'](this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]],_0xf97d('0x15'));}logger[_0xf97d('0x44')]('[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:',util[_0xf97d('0x3b')](this[_0xf97d('0x11')][_0x2464b1['queue']],{'showHidden':![],'depth':null}));ami[_0xf97d('0x42')](_0xf97d('0x6a'),this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]]);}}}catch(_0x47bf80){logger['error']('[voiceQueueReport][queuesummary]',util[_0xf97d('0x3b')](_0x47bf80,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x18')]=function(_0x51a198){logger[_0xf97d('0x44')](_0xf97d('0x6b'),util[_0xf97d('0x3b')](_0x51a198,{'showHidden':![],'depth':null}));this['flagQueueSummary']=!![];};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x1a')]=function(_0xb1671b){try{if(this[_0xf97d('0x5c')](_0xb1671b)){logger['debug'](_0xf97d('0x6c'),_0xb1671b['uniqueid'],util[_0xf97d('0x3b')](_0xb1671b,{'showHidden':![],'depth':null}));if(_[_0xf97d('0x5d')](this['queueReports'][_0xb1671b[_0xf97d('0x4a')]]))this[_0xf97d('0xd')][_0xb1671b['uniqueid']]=[];if(_[_0xf97d('0x5d')](this[_0xf97d('0xf')][_0xb1671b['uniqueid']]))this[_0xf97d('0xf')][_0xb1671b[_0xf97d('0x4a')]]={};var _0x276f59=new QueueReport();_0x276f59[_0xf97d('0x47')]=_0xb1671b[_0xf97d('0x63')];_0x276f59[_0xf97d('0x53')]=this['voiceQueues'][_0x276f59[_0xf97d('0x47')]]&&this[_0xf97d('0x11')][_0x276f59['name']][_0xf97d('0x53')]?this[_0xf97d('0x11')][_0x276f59[_0xf97d('0x47')]][_0xf97d('0x53')]||_0xf97d('0x6d'):'inbound';_0x276f59[_0xf97d('0x63')]=_0xb1671b[_0xf97d('0x63')];_0x276f59['queuecallerjoinAt']=moment()['format'](_0xf97d('0x6e'));_0x276f59['position']=_0xb1671b[_0xf97d('0x6f')];_0x276f59[_0xf97d('0x70')]=_0xb1671b[_0xf97d('0x70')];_0x276f59['uniqueid']=_0xb1671b[_0xf97d('0x4a')];_0x276f59[_0xf97d('0x71')]=this[_0xf97d('0xf')][_0xb1671b[_0xf97d('0x4a')]][_0xf97d('0x71')];logger[_0xf97d('0x64')](_0xf97d('0x72'),_0x276f59[_0xf97d('0x47')],_0x276f59[_0xf97d('0x53')]);_[_0xf97d('0x73')](_0x276f59,_[_0xf97d('0x74')](_0xb1671b,_[_0xf97d('0x75')](_0x276f59)));this[_0xf97d('0xd')][_0xb1671b['uniqueid']]['push'](_0x276f59);this['channels'][_0xb1671b[_0xf97d('0x4a')]]=_0x276f59;this[_0xf97d('0x43')](_0x276f59,_0xf97d('0x19'));}}catch(_0x1134a9){logger['error'](_0xf97d('0x6c'),_0xb1671b[_0xf97d('0x4a')],util['inspect'](_0x1134a9,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x76')]=function(_0x43e7a9){try{if(this['isNotNull'](_0x43e7a9)){logger['debug'](_0xf97d('0x77'),_0x43e7a9[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x43e7a9,{'showHidden':![],'depth':null}));if(this[_0xf97d('0xd')][_0x43e7a9[_0xf97d('0x4a')]]){var _0x5aa222=_[_0xf97d('0x78')](this[_0xf97d('0xd')][_0x43e7a9[_0xf97d('0x4a')]]);_0x5aa222['queuecallercomplete']=![];_0x5aa222['queuecallercompleteAt']=null;_0x5aa222['holdtime']=_0x43e7a9[_0xf97d('0x79')];_0x5aa222[_0xf97d('0x7a')]=_0x43e7a9['originalposition'];_0x5aa222[_0xf97d('0x1b')]=!![];_0x5aa222[_0xf97d('0x7b')]=moment()[_0xf97d('0x4b')](_0xf97d('0x6e'));_0x5aa222[_0xf97d('0x7c')]='ABANDONED';_0x5aa222['lastAssignedTo']=null;logger[_0xf97d('0x64')]('[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s',_0x5aa222['name'],_0x5aa222[_0xf97d('0x53')]);this[_0xf97d('0xf')][_0x43e7a9[_0xf97d('0x4a')]]=_0x5aa222;this['emitVoiceQueueChannelRemove'](_0x5aa222,_0xf97d('0x1b'));}}}catch(_0x2cf6c3){logger['error'](_0xf97d('0x77'),_0x43e7a9[_0xf97d('0x4a')],util['inspect'](_0x2cf6c3,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x1d')]=function(_0x10893){try{if(this[_0xf97d('0x5c')](_0x10893)){logger[_0xf97d('0x44')](_0xf97d('0x7d'),_0x10893[_0xf97d('0x4a')],util['inspect'](_0x10893,{'showHidden':![],'depth':null}));if(this[_0xf97d('0xd')][_0x10893[_0xf97d('0x4a')]]){var _0x39d3f7=_[_0xf97d('0x78')](this[_0xf97d('0xd')][_0x10893[_0xf97d('0x4a')]]);_0x39d3f7['queuecallerleaveAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x39d3f7['connectedlinenum']=_0x10893[_0xf97d('0x7e')];_0x39d3f7[_0xf97d('0x7f')]=_0x10893[_0xf97d('0x7f')];logger[_0xf97d('0x64')](_0xf97d('0x80'),_0x39d3f7[_0xf97d('0x47')],_0x39d3f7[_0xf97d('0x53')],_0x10893[_0xf97d('0x7e')],_0x10893['connectedlinename']);this[_0xf97d('0xf')][_0x10893[_0xf97d('0x4a')]]=_0x39d3f7;this[_0xf97d('0x43')](_0x39d3f7,_0xf97d('0x1c'));}}}catch(_0x1ad2fa){logger['error'](_0xf97d('0x7d'),_0x10893['uniqueid'],util[_0xf97d('0x3b')](_0x1ad2fa,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x81')]=function(_0x3e7974){try{if(this[_0xf97d('0x5c')](_0x3e7974)){logger[_0xf97d('0x44')]('[%s][voiceQueueReport][agentconnect]',_0x3e7974[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x3e7974,{'showHidden':![],'depth':null}));if(this[_0xf97d('0xd')][_0x3e7974[_0xf97d('0x4a')]]){var _0x4e49c0=_['last'](this[_0xf97d('0xd')][_0x3e7974['uniqueid']]);_0x4e49c0['queuecallercomplete']=!![];_0x4e49c0[_0xf97d('0x7c')]='COMPLETEDBYAGENT';logger[_0xf97d('0x64')](_0xf97d('0x82'),_0x4e49c0[_0xf97d('0x47')],_0x4e49c0[_0xf97d('0x53')]);}}}catch(_0x978e25){logger['error'](_0xf97d('0x83'),_0x3e7974[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x978e25,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncAgentComplete']=function(_0x4ee4d6){try{if(this['isNotNull'](_0x4ee4d6)){logger['debug'](_0xf97d('0x84'),_0x4ee4d6[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x4ee4d6,{'showHidden':![],'depth':null}));if(this[_0xf97d('0xd')][_0x4ee4d6[_0xf97d('0x4a')]]){var _0x3270d8=_[_0xf97d('0x78')](this['queueReports'][_0x4ee4d6[_0xf97d('0x4a')]]);_0x3270d8[_0xf97d('0x1b')]=![];_0x3270d8[_0xf97d('0x7b')]=null;_0x3270d8[_0xf97d('0x85')]=!![];_0x3270d8[_0xf97d('0x86')]=_0x4ee4d6[_0xf97d('0x87')];_0x3270d8[_0xf97d('0x79')]=_0x4ee4d6[_0xf97d('0x79')];_0x3270d8['queuecallercomplete']=!![];_0x3270d8[_0xf97d('0x88')]=![];_0x3270d8['queuecallerexitAt']=null;if(!_0x3270d8[_0xf97d('0x89')]){if(_0x4ee4d6[_0xf97d('0x8a')]=='transfer'){_0x3270d8['queuecallerexitreason']=_0xf97d('0x8b');logger[_0xf97d('0x64')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED',_0x3270d8[_0xf97d('0x47')],_0x3270d8[_0xf97d('0x53')]);}else{if(_[_0xf97d('0x8c')](_0x4ee4d6[_0xf97d('0x8d')][_0xf97d('0x8e')](),'local/')){if(this[_0xf97d('0xd')][_0x4ee4d6[_0xf97d('0x8f')]]){var _0x474f47=_[_0xf97d('0x78')](this['queueReports'][_0x4ee4d6[_0xf97d('0x8f')]]);_0x474f47['queuecallercomplete']=![];_0x474f47[_0xf97d('0x88')]=!![];_0x474f47[_0xf97d('0x90')]=moment(_0x3270d8[_0xf97d('0x91')])[_0xf97d('0x92')](_0x4ee4d6[_0xf97d('0x79')],_0xf97d('0x93'))[_0xf97d('0x4b')](_0xf97d('0x6e'));_0x474f47[_0xf97d('0x7c')]='FORWARDTRANSFER';_0x474f47['transfer']=!![];_0x474f47[_0xf97d('0x94')]='FORWARD';_0x474f47[_0xf97d('0x95')]=_0x4ee4d6[_0xf97d('0x96')];_0x474f47[_0xf97d('0x97')]=_0x4ee4d6[_0xf97d('0x4a')];logger[_0xf97d('0x64')](_0xf97d('0x98'),_0x474f47[_0xf97d('0x47')],_0x474f47['type']);var _0x2a2db5=this[_0xf97d('0xd')][_0x4ee4d6['linkedid']];this['queueReports'][_0x4ee4d6[_0xf97d('0x8f')]]=this[_0xf97d('0xd')][_0x4ee4d6[_0xf97d('0x4a')]];this[_0xf97d('0xd')][_0x4ee4d6[_0xf97d('0x4a')]]=_0x2a2db5;}}else{_0x3270d8[_0xf97d('0x7c')]=_0xf97d('0x99')+_0x4ee4d6[_0xf97d('0x8a')]['toUpperCase']();logger[_0xf97d('0x64')](_0xf97d('0x9a'),_0x3270d8[_0xf97d('0x47')],_0x3270d8[_0xf97d('0x53')],_0x3270d8['queuecallerexitreason']);}}}this[_0xf97d('0xf')][_0x4ee4d6[_0xf97d('0x4a')]]=_0x3270d8;this[_0xf97d('0x40')](_0x3270d8,_0xf97d('0x1e'));}}}catch(_0x356033){logger['error'](_0xf97d('0x84'),_0x4ee4d6[_0xf97d('0x4a')],util['inspect'](_0x356033,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xf97d('0x9b')]=function(_0x2fee45){try{if(this[_0xf97d('0x5c')](_0x2fee45)){logger[_0xf97d('0x44')](_0xf97d('0x9c'),_0x2fee45[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x2fee45,{'showHidden':![],'depth':null}));this[_0xf97d('0x9d')](_0x2fee45[_0xf97d('0x4a')],_[_0xf97d('0x75')](_0x2fee45[_0xf97d('0x9e')])[0x0],_0x2fee45[_0xf97d('0x9f')]);if(this['queueReports'][_0x2fee45[_0xf97d('0x4a')]]){var _0x4b7402=_['last'](this[_0xf97d('0xd')][_0x2fee45[_0xf97d('0x4a')]]);if(_0x4b7402){if(this['isNotNull'](_0x2fee45[_0xf97d('0x9e')])&&this[_0xf97d('0x5c')](_0x2fee45[_0xf97d('0x9e')][_0xf97d('0xa0')])){switch(_0x2fee45[_0xf97d('0x9f')]){case _0xf97d('0xa1'):_0x4b7402[_0xf97d('0x88')]=![];_0x4b7402['queuecallerexitAt']=null;break;case _0xf97d('0xa2'):_0x4b7402[_0xf97d('0xa3')]='timeout';_0x4b7402[_0xf97d('0x88')]=!![];_0x4b7402[_0xf97d('0x90')]=moment()[_0xf97d('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');_0x4b7402[_0xf97d('0xa4')]=moment()[_0xf97d('0x4b')](_0xf97d('0x6e'));logger[_0xf97d('0x44')]('[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:',_0x2fee45[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x4b7402,{'showHidden':![],'depth':null}));ami[_0xf97d('0x42')](_0xf97d('0xa5'),_0x4b7402);break;default:_0x4b7402['queuecallerexit']=!![];_0x4b7402[_0xf97d('0x90')]=moment()[_0xf97d('0x4b')](_0xf97d('0x6e'));_0x4b7402[_0xf97d('0xa4')]=moment()[_0xf97d('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');}_0x4b7402['queuecallerabandon']=![];_0x4b7402[_0xf97d('0x7b')]=null;_0x4b7402[_0xf97d('0x7c')]=_0x2fee45['value'];this[_0xf97d('0xf')][_0x2fee45[_0xf97d('0x4a')]]=_0x4b7402;this[_0xf97d('0x40')](_0x4b7402,_0xf97d('0x20'));}else if(this[_0xf97d('0x5c')](_0x2fee45[_0xf97d('0x9e')])&&this['isNotNull'](_0x2fee45[_0xf97d('0x9e')][_0xf97d('0xa6')])){if(!_0x4b7402[_0xf97d('0x1b')]){_0x4b7402[_0xf97d('0x88')]=!![];_0x4b7402[_0xf97d('0x90')]=moment()['format'](_0xf97d('0x6e'));_0x4b7402['queuecallerexitreason']='EXITWITHKEY';_0x4b7402[_0xf97d('0xa4')]=moment()[_0xf97d('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xf97d('0xf')][_0x2fee45[_0xf97d('0x4a')]]=_0x4b7402;}}logger[_0xf97d('0x64')](_0xf97d('0xa7'),_0x2fee45[_0xf97d('0x4a')],_0x4b7402[_0xf97d('0x47')],_0x4b7402[_0xf97d('0x53')],_[_0xf97d('0x75')](_0x2fee45[_0xf97d('0x9e')])[0x0],_0x2fee45[_0xf97d('0x9f')]);_0x4b7402[_0xf97d('0x14')]=this['variables'][_0x2fee45['uniqueid']];}}}}catch(_0x41837f){logger['error'](_0xf97d('0x9c'),_0x2fee45[_0xf97d('0x4a')],util['inspect'](_0x41837f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x9d')]=function(_0x11c85d,_0x4a81a6,_0x51d3d1){var _0x349986=['rtpaudioqos',_0xf97d('0xa8'),_0xf97d('0xa9'),_0xf97d('0xaa'),'rtpaudioqosloss','rtpaudioqoslossbridged',_0xf97d('0xab'),_0xf97d('0xac'),_0xf97d('0xad'),_0xf97d('0xae'),_0xf97d('0xaf'),_0xf97d('0xb0'),'membercalls',_0xf97d('0xb1'),_0xf97d('0xb2'),'memberlastcall','membername',_0xf97d('0xb3'),'memberrealtime'];if(!_['isNil'](_0x4a81a6)&&!_[_0xf97d('0xb4')](_0x349986,_0x4a81a6)){if(_[_0xf97d('0x5d')](this['variables'][_0x11c85d])){this[_0xf97d('0x14')][_0x11c85d]={};}this['variables'][_0x11c85d][_0x4a81a6]=_0x51d3d1;}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x22')]=function(_0x150c73){try{if(this['isNotNull'](_0x150c73)){logger[_0xf97d('0x44')]('[%s][voiceQueueReport][hangup]',_0x150c73[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x150c73,{'showHidden':![],'depth':null}));if(this[_0xf97d('0xd')][_0x150c73[_0xf97d('0x4a')]]){for(var _0x2b738c=0x0,_0x221885={};_0x2b738c<this[_0xf97d('0xd')][_0x150c73['uniqueid']][_0xf97d('0xb5')];_0x2b738c+=0x1){_0x221885=this['queueReports'][_0x150c73[_0xf97d('0x4a')]][_0x2b738c];if(this['voiceQueues'][_0x221885[_0xf97d('0x63')]]){if(_0x221885[_0xf97d('0x88')]&&_0x221885[_0xf97d('0x89')]!=!![]){this['voiceQueues'][_0x221885[_0xf97d('0x63')]][_0xf97d('0xb6')]+=0x1;}if(_0x221885[_0xf97d('0x1b')]){this[_0xf97d('0x11')][_0x221885['queue']]['abandoned']+=0x1;}this[_0xf97d('0x11')][_0x221885['queue']][_0xf97d('0x51')]+=moment(_0x221885[_0xf97d('0xa4')])[_0xf97d('0xb7')](_0x221885['queuecallerjoinAt'],_0xf97d('0x93'))||0x0;if(_0x2b738c===this[_0xf97d('0xd')][_0x150c73['uniqueid']]['length']-0x1){this[_0xf97d('0x11')][_0x221885[_0xf97d('0x63')]]['sumDuration']+=moment()[_0xf97d('0xb8')](0x0)[_0xf97d('0xb7')](_0x221885[_0xf97d('0x91')],_0xf97d('0x93'));this[_0xf97d('0x11')][_0x221885[_0xf97d('0x63')]][_0xf97d('0xb9')]+=0x1;if(_0x221885[_0xf97d('0xba')]){this[_0xf97d('0x11')][_0x221885[_0xf97d('0x63')]][_0xf97d('0xbb')]+=0x1;this[_0xf97d('0x11')][_0x221885[_0xf97d('0x63')]][_0xf97d('0x4f')]+=moment()[_0xf97d('0xb8')](0x0)['diff'](_0x221885[_0xf97d('0xa4')],'seconds');_0x221885['queuecallercompleteAt']=moment()[_0xf97d('0x4b')](_0xf97d('0x6e'));_0x221885[_0xf97d('0x88')]=![];_0x221885['queuecallerexitAt']=null;}if(_0x221885[_0xf97d('0x88')]&&_0x221885['transfer']!=!![]){_0x221885[_0xf97d('0xa3')]=_0xf97d('0xb6');logger[_0xf97d('0x44')](_0xf97d('0xbc'),_0x150c73[_0xf97d('0x4a')],util['inspect'](_0x221885,{'showHidden':![],'depth':null}));ami[_0xf97d('0x42')](_0xf97d('0xbd'),_0x221885);}if(_0x221885[_0xf97d('0x1b')]){_0x221885[_0xf97d('0xa3')]=_0xf97d('0xbe');logger['debug'](_0xf97d('0xbf'),_0x150c73[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x221885,{'showHidden':![],'depth':null}));ami['emit'](_0xf97d('0xc0'),_0x221885);}}else{this[_0xf97d('0x11')][_0x221885[_0xf97d('0x63')]][_0xf97d('0x50')]+=this[_0xf97d('0x11')][_0x221885['queue']][_0xf97d('0x51')];}logger[_0xf97d('0x64')](_0xf97d('0xc1'),_0x150c73[_0xf97d('0x4a')],_0x221885['name'],_0x221885['type'],_0x150c73['cause-txt']);this['channels'][_0x150c73[_0xf97d('0x4a')]]=_0x221885;this[_0xf97d('0x40')](_0x221885,_0xf97d('0x21'));this[_0xf97d('0xc2')](this[_0xf97d('0x11')][_0x221885['queue']],_0xf97d('0x21'));}}logger[_0xf97d('0x44')](_0xf97d('0xc3'),_0x150c73[_0xf97d('0x4a')],util['inspect'](this[_0xf97d('0xd')][_0x150c73[_0xf97d('0x4a')]],{'showHidden':![],'depth':null}));ami[_0xf97d('0x42')](_0xf97d('0xc4'),this[_0xf97d('0xd')][_0x150c73[_0xf97d('0x4a')]]);delete this[_0xf97d('0xd')][_0x150c73['uniqueid']];delete this[_0xf97d('0xf')][_0x150c73[_0xf97d('0x4a')]];}if(this[_0xf97d('0x14')][_0x150c73[_0xf97d('0x4a')]]){delete this[_0xf97d('0x14')][_0x150c73[_0xf97d('0x4a')]];}}}catch(_0x15b619){logger[_0xf97d('0x3c')](_0xf97d('0xc5'),_0x150c73[_0xf97d('0x4a')],util['inspect'](_0x15b619,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xf97d('0x2a')]=function(_0x55316b){try{if(this[_0xf97d('0x5c')](_0x55316b)){logger[_0xf97d('0x44')](_0xf97d('0xc6'),_0x55316b['uniqueid'],util[_0xf97d('0x3b')](_0x55316b,{'showHidden':![],'depth':null}));var _0x38c4a1;if(this['queueReports'][_0x55316b['transfereeuniqueid']]){_0x38c4a1=_['last'](this[_0xf97d('0xd')][_0x55316b[_0xf97d('0xc7')]]);_0x38c4a1['transferexten']=_0x55316b['secondtransfererexten'];_0x38c4a1['transferuniqueid']=_0x55316b['secondtransfereruniqueid'];_0x38c4a1[_0xf97d('0x7c')]=_0xf97d('0xc8');_0x38c4a1['transfer']=!![];_0x38c4a1[_0xf97d('0x94')]=_0xf97d('0xc9');if(this[_0xf97d('0xd')][_0x55316b[_0xf97d('0xca')]]){var _0x3efd1c=this[_0xf97d('0xd')][_0x55316b['secondtransfereruniqueid']];this[_0xf97d('0xd')][_0x55316b['secondtransfereruniqueid']]=this[_0xf97d('0xd')][_0x55316b[_0xf97d('0xc7')]];this[_0xf97d('0xd')][_0x55316b[_0xf97d('0xc7')]]=_0x3efd1c;var _0xc6b03e=_[_0xf97d('0x78')](this['queueReports'][_0x55316b[_0xf97d('0xc7')]]);_0xc6b03e[_0xf97d('0xcb')]=!![];}logger[_0xf97d('0x64')](_0xf97d('0xcc'),_0x55316b[_0xf97d('0x4a')],_0x38c4a1[_0xf97d('0x47')],_0x38c4a1[_0xf97d('0x53')],_0x38c4a1[_0xf97d('0x95')],_0x38c4a1['transferuniqueid']);}else if(this[_0xf97d('0xd')][_0x55316b['transfertargetuniqueid']]){_0x38c4a1=_[_0xf97d('0x78')](this[_0xf97d('0xd')][_0x55316b[_0xf97d('0xcd')]]);_0x38c4a1['transferexten']=_0x55316b[_0xf97d('0xce')];_0x38c4a1[_0xf97d('0x97')]=_0x55316b[_0xf97d('0xcf')];_0x38c4a1['queuecallerexitreason']=_0xf97d('0xc8');_0x38c4a1['transfer']=!![];_0x38c4a1[_0xf97d('0x94')]='ATTENDED';if(this[_0xf97d('0xd')][_0x55316b['origtransfereruniqueid']]){var _0x3efd1c=this[_0xf97d('0xd')][_0x55316b['origtransfereruniqueid']];this[_0xf97d('0xd')][_0x55316b[_0xf97d('0xcf')]]=this['queueReports'][_0x55316b[_0xf97d('0xcd')]];this[_0xf97d('0xd')][_0x55316b['transfertargetuniqueid']]=_0x3efd1c;var _0xc6b03e=_['last'](this[_0xf97d('0xd')][_0x55316b[_0xf97d('0xcd')]]);_0xc6b03e['switch']=!![];}logger['info'](_0xf97d('0xcc'),_0x55316b['uniqueid'],_0x38c4a1[_0xf97d('0x47')],_0x38c4a1[_0xf97d('0x53')],_0x38c4a1[_0xf97d('0x95')],_0x38c4a1[_0xf97d('0x97')]);}}}catch(_0x24387b){logger[_0xf97d('0x3c')](_0xf97d('0xc6'),_0x55316b[_0xf97d('0x4a')],util['inspect'](_0x24387b,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xf97d('0x2c')]=function(_0x24636f){try{if(this[_0xf97d('0x5c')](_0x24636f)){logger['debug'](_0xf97d('0xd0'),_0x24636f[_0xf97d('0x4a')],util['inspect'](_0x24636f,{'showHidden':![],'depth':null}));if(this[_0xf97d('0xd')][_0x24636f[_0xf97d('0xc7')]]){var _0x463cb9=_[_0xf97d('0x78')](this['queueReports'][_0x24636f['transfereeuniqueid']]);_0x463cb9[_0xf97d('0x7c')]=_0xf97d('0xd1');_0x463cb9[_0xf97d('0x89')]=!![];_0x463cb9[_0xf97d('0x94')]='BLIND';_0x463cb9[_0xf97d('0x95')]=_0x24636f[_0xf97d('0xd2')];_0x463cb9[_0xf97d('0x97')]=_0x24636f['transfereeuniqueid'];logger[_0xf97d('0x64')](_0xf97d('0xd3'),_0x24636f['uniqueid'],_0x463cb9[_0xf97d('0x47')],_0x463cb9[_0xf97d('0x53')],_0x463cb9[_0xf97d('0x95')],_0x463cb9[_0xf97d('0x97')]);this['syncHangup']({'event':_0xf97d('0xd4'),'uniqueid':_0x24636f[_0xf97d('0xc7')],'context':_0x24636f['context'],'channel':_0x24636f[_0xf97d('0xd5')]});}}}catch(_0x455d10){logger[_0xf97d('0x3c')](_0xf97d('0xd0'),_0x24636f[_0xf97d('0x4a')],util['inspect'](_0x455d10,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x26')]=function(_0x2d032a){try{if(this['isNotNull'](_0x2d032a)){logger['debug'](_0xf97d('0xd6'),_0x2d032a[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x2d032a,{'showHidden':![],'depth':null}));if(this[_0xf97d('0xd')][_0x2d032a[_0xf97d('0x4a')]]){var _0x56a73f=_[_0xf97d('0x78')](this[_0xf97d('0xd')][_0x2d032a[_0xf97d('0x4a')]]);if(!_[_0xf97d('0x34')](_0x56a73f[_0xf97d('0xa4')])){_0x56a73f[_0xf97d('0xd7')]=moment()[_0xf97d('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0xf97d('0x64')](_0xf97d('0xd8'),_0x2d032a[_0xf97d('0x4a')],_0x56a73f['mohstarttime']);}}}}catch(_0x28d80f){logger['error'](_0xf97d('0xd6'),_0x2d032a[_0xf97d('0x4a')],util['inspect'](_0x28d80f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x28')]=function(_0x4a5641){try{if(this['isNotNull'](_0x4a5641)){logger[_0xf97d('0x44')](_0xf97d('0xd9'),_0x4a5641[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x4a5641,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x4a5641[_0xf97d('0x4a')]]){var _0x11cf46=_[_0xf97d('0x78')](this['queueReports'][_0x4a5641[_0xf97d('0x4a')]]);if(!_[_0xf97d('0x34')](_0x11cf46[_0xf97d('0xd7')])){_0x11cf46['mohtime']+=moment()[_0xf97d('0xb8')](0x0)[_0xf97d('0xb7')](_0x11cf46[_0xf97d('0xd7')],_0xf97d('0x93'));logger[_0xf97d('0x64')](_0xf97d('0xda'),_0x4a5641[_0xf97d('0x4a')],_0x11cf46[_0xf97d('0xdb')]);delete _0x11cf46[_0xf97d('0xd7')];}}}}catch(_0x31e95a){logger['error'](_0xf97d('0xd9'),_0x4a5641['uniqueid'],util['inspect'](_0x31e95a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x24')]=function(_0x9bd389){try{if(this[_0xf97d('0x5c')](_0x9bd389)){logger[_0xf97d('0x44')](_0xf97d('0xdc'),_0x9bd389[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x9bd389,{'showHidden':![],'depth':null}));if(_0x9bd389[_0xf97d('0xdd')]['toLowerCase']()===_0xf97d('0xde')){_0x9bd389[_0xf97d('0xdf')]=_0x9bd389[_0xf97d('0xe0')]&&_0x9bd389['appdata']['startsWith'](_0xf97d('0xe1'))?_0x9bd389[_0xf97d('0xe0')]:(_0x9bd389[_0xf97d('0xe0')]||_0x9bd389[_0xf97d('0xdf')])[_0xf97d('0x8e')]();if(_[_0xf97d('0x8c')](_0x9bd389[_0xf97d('0xdf')][_0xf97d('0x8e')](),_0xf97d('0xe2'))){logger[_0xf97d('0x64')](_0xf97d('0xe3'),_0x9bd389[_0xf97d('0x4a')],_0x9bd389['application'],_0x9bd389['applicationdata']);if(_[_0xf97d('0x5d')](this[_0xf97d('0xf')][_0x9bd389['uniqueid']]))this[_0xf97d('0xf')][_0x9bd389['uniqueid']]={};var _0x181965=_0x9bd389[_0xf97d('0xdf')][_0xf97d('0xe4')]('=');var _0x29c77d=_0x181965[0x0][_0xf97d('0x8e')]()[_0xf97d('0xe5')](/cdr\((.*)\)/);if(_0x29c77d)this['channels'][_0x9bd389[_0xf97d('0x4a')]][_0x29c77d[0x1]]=_0x181965[0x1];}}}}catch(_0xc7559){logger['error']('[%s][voiceQueueReport][newexten]',_0x9bd389['uniqueid'],util[_0xf97d('0x3b')](_0xc7559,{'showHidden':![],'depth':null}));}};module[_0xf97d('0xe6')]=VoiceQueueReport;
\ No newline at end of file
index 246a295..b02edd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb73=['createHistory','campaign','queue','CreateReportAgentPreview','../client'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xdb73,0x1d5));var _0x3db7=function(_0x1c49c8,_0x525820){_0x1c49c8=_0x1c49c8-0x0;var _0x41e788=_0xdb73[_0x1c49c8];return _0x41e788;};'use strict';var client=require(_0x3db7('0x0'));exports[_0x3db7('0x1')]=function(_0x48e33c){return function(){_0x48e33c[_0x3db7('0x2')]=_0x48e33c[_0x3db7('0x3')];return client['Request']('CreateReportAgentPreview',{'body':_0x48e33c,'log':_0x3db7('0x4')});};};
\ No newline at end of file
+var _0x3db2=['Request','CreateReportAgentPreview','../client','createHistory','campaign'];(function(_0x33040d,_0x2ca9c7){var _0x217854=function(_0x4c15df){while(--_0x4c15df){_0x33040d['push'](_0x33040d['shift']());}};_0x217854(++_0x2ca9c7);}(_0x3db2,0x10b));var _0x23db=function(_0x4f2330,_0x371cd7){_0x4f2330=_0x4f2330-0x0;var _0x38016f=_0x3db2[_0x4f2330];return _0x38016f;};'use strict';var client=require(_0x23db('0x0'));exports[_0x23db('0x1')]=function(_0x32adec){return function(){_0x32adec[_0x23db('0x2')]=_0x32adec['queue'];return client[_0x23db('0x3')](_0x23db('0x4'),{'body':_0x32adec,'log':_0x23db('0x4')});};};
\ No newline at end of file
index d166eb1..e6ceab3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f0f=['CreateAttachment','../client','create','Request'];(function(_0x5e1dc5,_0x1f159a){var _0x461da7=function(_0x81344b){while(--_0x81344b){_0x5e1dc5['push'](_0x5e1dc5['shift']());}};_0x461da7(++_0x1f159a);}(_0x6f0f,0x65));var _0xf6f0=function(_0x491ec2,_0x540c00){_0x491ec2=_0x491ec2-0x0;var _0x1748db=_0x6f0f[_0x491ec2];return _0x1748db;};'use strict';var client=require(_0xf6f0('0x0'));exports[_0xf6f0('0x1')]=function(_0x3aa029){return client[_0xf6f0('0x2')](_0xf6f0('0x3'),{'body':_0x3aa029,'log':_0xf6f0('0x3')});};
\ No newline at end of file
+var _0x5923=['create','Request','CreateAttachment','../client'];(function(_0x5f3a35,_0x132793){var _0x4735ad=function(_0x36a183){while(--_0x36a183){_0x5f3a35['push'](_0x5f3a35['shift']());}};_0x4735ad(++_0x132793);}(_0x5923,0x1d7));var _0x3592=function(_0x69c7e3,_0x1bf0bf){_0x69c7e3=_0x69c7e3-0x0;var _0x39f03a=_0x5923[_0x69c7e3];return _0x39f03a;};'use strict';var client=require(_0x3592('0x0'));exports[_0x3592('0x1')]=function(_0x2091a0){return client[_0x3592('0x2')](_0x3592('0x3'),{'body':_0x2091a0,'log':_0x3592('0x3')});};
\ No newline at end of file
index cb1ae11..fc477c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumWordLength','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','active','TrunkBackup','Interval','Intervals','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry'];(function(_0x55c00d,_0x520cb6){var _0x254a8f=function(_0x2b3378){while(--_0x2b3378){_0x55c00d['push'](_0x55c00d['shift']());}};_0x254a8f(++_0x520cb6);}(_0x2ef3,0xba));var _0x32ef=function(_0x21255e,_0x59634d){_0x21255e=_0x21255e-0x0;var _0x42c2c1=_0x2ef3[_0x21255e];return _0x42c2c1;};'use strict';var client=require(_0x32ef('0x0'));exports[_0x32ef('0x1')]=function(){return function(){return client[_0x32ef('0x2')](_0x32ef('0x3'),{'options':{'raw':![],'attributes':['id',_0x32ef('0x4'),_0x32ef('0x5'),'active',_0x32ef('0x6'),_0x32ef('0x7'),'dialOriginateCallerIdNumber',_0x32ef('0x8'),_0x32ef('0x9'),'dialCongestionRetryFrequency','dialBusyMaxRetry',_0x32ef('0xa'),_0x32ef('0xb'),_0x32ef('0xc'),_0x32ef('0xd'),_0x32ef('0xe'),_0x32ef('0xf'),_0x32ef('0x10'),_0x32ef('0x11'),_0x32ef('0x12'),_0x32ef('0x13'),'dialMachineMaxRetry','dialMachineRetryFrequency',_0x32ef('0x14'),_0x32ef('0x15'),_0x32ef('0x16'),_0x32ef('0x17'),'dialAMDActive',_0x32ef('0x18'),'dialAMDGreeting',_0x32ef('0x19'),'dialAMDTotalAnalysisTime',_0x32ef('0x1a'),_0x32ef('0x1b'),'dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold',_0x32ef('0x1c'),'dialOrderByScheduledAt',_0x32ef('0x1d'),_0x32ef('0x1e'),_0x32ef('0x1f')],'include':[{'model':_0x32ef('0x20'),'as':'Trunk','attributes':['id','name','callerid',_0x32ef('0x21')]},{'model':_0x32ef('0x20'),'as':_0x32ef('0x22'),'attributes':['id','name','callerid',_0x32ef('0x21')]},{'model':_0x32ef('0x23'),'as':_0x32ef('0x23'),'attributes':['id','name'],'include':[{'model':_0x32ef('0x23'),'as':_0x32ef('0x24'),'attributes':['id','name',_0x32ef('0x25')]}]},{'model':_0x32ef('0x26'),'as':_0x32ef('0x26'),'attributes':['id',_0x32ef('0x4')]}]},'log':_0x32ef('0x27')});};};
\ No newline at end of file
+var _0x326f=['dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialPrefix','Trunk','callerid','TrunkBackup','Interval','Intervals','SquareProject','../client','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName'];(function(_0x3b5bef,_0x215f48){var _0x232fc1=function(_0x1fa3dd){while(--_0x1fa3dd){_0x3b5bef['push'](_0x3b5bef['shift']());}};_0x232fc1(++_0x215f48);}(_0x326f,0xd1));var _0xf326=function(_0x422f96,_0x19d1fc){_0x422f96=_0x422f96-0x0;var _0x518792=_0x326f[_0x422f96];return _0x518792;};'use strict';var client=require(_0xf326('0x0'));exports['getCampaigns']=function(){return function(){return client['Request'](_0xf326('0x1'),{'options':{'raw':![],'attributes':['id',_0xf326('0x2'),_0xf326('0x3'),_0xf326('0x4'),_0xf326('0x5'),_0xf326('0x6'),_0xf326('0x7'),_0xf326('0x8'),_0xf326('0x9'),_0xf326('0xa'),'dialBusyMaxRetry',_0xf326('0xb'),_0xf326('0xc'),_0xf326('0xd'),_0xf326('0xe'),'dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry',_0xf326('0xf'),_0xf326('0x10'),_0xf326('0x11'),_0xf326('0x12'),_0xf326('0x13'),'dialAgentRejectMaxRetry',_0xf326('0x14'),'dialTimezone',_0xf326('0x15'),'dialAMDActive',_0xf326('0x16'),'dialAMDGreeting',_0xf326('0x17'),_0xf326('0x18'),'dialAMDMinWordLength',_0xf326('0x19'),_0xf326('0x1a'),_0xf326('0x1b'),_0xf326('0x1c'),'dialOrderByScheduledAt',_0xf326('0x1d'),'dialRandomLastDigitCallerIdNumber','dialCutDigit'],'include':[{'model':_0xf326('0x1e'),'as':_0xf326('0x1e'),'attributes':['id',_0xf326('0x2'),_0xf326('0x1f'),_0xf326('0x4')]},{'model':_0xf326('0x1e'),'as':_0xf326('0x20'),'attributes':['id',_0xf326('0x2'),'callerid',_0xf326('0x4')]},{'model':_0xf326('0x21'),'as':_0xf326('0x21'),'attributes':['id',_0xf326('0x2')],'include':[{'model':_0xf326('0x21'),'as':_0xf326('0x22'),'attributes':['id','name','interval']}]},{'model':'SquareProject','as':_0xf326('0x23'),'attributes':['id',_0xf326('0x2')]}]},'log':'getCampaign'});};};
\ No newline at end of file
index 6fffaf5..2247fc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb82c=['createContact','Request','CreateCmContact','getContacts','GetCmContact','../client'];(function(_0x330115,_0x3d0b99){var _0x31498d=function(_0x350df4){while(--_0x350df4){_0x330115['push'](_0x330115['shift']());}};_0x31498d(++_0x3d0b99);}(_0xb82c,0x16d));var _0xcb82=function(_0x584a8f,_0x330d6c){_0x584a8f=_0x584a8f-0x0;var _0x3913a1=_0xb82c[_0x584a8f];return _0x3913a1;};'use strict';var client=require(_0xcb82('0x0'));exports[_0xcb82('0x1')]=function(_0x21f486){return function(){return client[_0xcb82('0x2')](_0xcb82('0x3'),{'body':_0x21f486,'log':_0xcb82('0x3')});};};exports[_0xcb82('0x4')]=function(_0x426226){return function(){return client[_0xcb82('0x2')](_0xcb82('0x5'),{'options':_0x426226,'log':'GetCmContact'});};};
\ No newline at end of file
+var _0x2279=['CreateCmContact','getContacts','Request','GetCmContact','../client','createContact'];(function(_0x3db964,_0x155186){var _0x4b5d99=function(_0x132961){while(--_0x132961){_0x3db964['push'](_0x3db964['shift']());}};_0x4b5d99(++_0x155186);}(_0x2279,0x148));var _0x9227=function(_0x414858,_0x135c77){_0x414858=_0x414858-0x0;var _0x451bcd=_0x2279[_0x414858];return _0x451bcd;};'use strict';var client=require(_0x9227('0x0'));exports[_0x9227('0x1')]=function(_0x57c88e){return function(){return client['Request'](_0x9227('0x2'),{'body':_0x57c88e,'log':_0x9227('0x2')});};};exports[_0x9227('0x3')]=function(_0xd6d5ca){return function(){return client[_0x9227('0x4')](_0x9227('0x5'),{'options':_0xd6d5ca,'log':_0x9227('0x5')});};};
\ No newline at end of file
index 2b630d6..fedcf14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9582=['priority','scheduledat','getContactDialerIvr','GetContactDialer','format','DESC','GetContactDialerIvr','queue','MoveContactManagedDialer','ContactId','countReScheduled','CountReScheduled','getContactPreview','User','Agent','VoiceQueue','name','unlockContact','GetContactRecallMe','ASC','db.CmHopper.UserId','resetActiveCalls','ResetActiveCalls','../client','moment','lodash','getContacts','GetCmHopper','CmContact','Contact','getCmHopper','updateContacts','Request','UpdateCmHopper','ListId','VoiceQueueId','CampaignId','rescheduleContact','destroyContact','DestroyCmHopper','getContactDialer','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x296b09,_0x3e0af8){var _0x5da361=function(_0x581c01){while(--_0x581c01){_0x296b09['push'](_0x296b09['shift']());}};_0x5da361(++_0x3e0af8);}(_0x9582,0x95));var _0x2958=function(_0x132af3,_0x3680da){_0x132af3=_0x132af3-0x0;var _0x522db5=_0x9582[_0x132af3];return _0x522db5;};'use strict';var client=require(_0x2958('0x0'));var moment=require(_0x2958('0x1'));var _=require(_0x2958('0x2'));exports[_0x2958('0x3')]=function(_0x42752c,_0x176287){return function(){return client['Request'](_0x2958('0x4'),{'options':{'where':{'VoiceQueueId':_0x42752c},'include':[{'model':_0x2958('0x5'),'as':_0x2958('0x6')}],'limit':_0x176287,'raw':![]},'log':_0x2958('0x7')});};};exports[_0x2958('0x8')]=function(_0xbde128,_0x88ffaa,_0x309525){return function(){return client[_0x2958('0x9')](_0x2958('0xa'),{'body':_0xbde128,'options':{'where':{'VoiceQueueId':_0x88ffaa,'scheduledat':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0x309525},'log':_0x2958('0xa')});};};exports['rescheduleContact']=function(_0x10db1e){return function(){return client['Request'](_0x2958('0xa'),{'body':_0x10db1e,'options':{'where':{'ContactId':_0x10db1e['ContactId'],'ListId':_0x10db1e[_0x2958('0xb')],'VoiceQueueId':_0x10db1e[_0x2958('0xc')],'CampaignId':_0x10db1e[_0x2958('0xd')]}},'log':_0x2958('0xe')});};};exports[_0x2958('0xf')]=function(_0x4f980c,_0x4780a8,_0x4255ee){return function(){return client[_0x2958('0x9')](_0x2958('0x10'),{'options':{'where':{'VoiceQueueId':_0x4f980c,'ListId':_0x4780a8,'ContactId':_0x4255ee}},'log':_0x2958('0x10')});};};exports[_0x2958('0x11')]=function(_0x42e4e3,_0x250d47,_0x5bd520,_0x42e976){return function(){return client[_0x2958('0x9')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x42e4e3,'active':![],'scheduledat':{'$lte':moment()['format'](_0x2958('0x12'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x250d47}}]},'order':[[_0x2958('0x13'),'DESC'],[_0x2958('0x14'),_0x42e976],['id','ASC']],'raw':!![],'limit':_0x5bd520},'log':'GetContactDialer'});};};exports[_0x2958('0x15')]=function(_0x55779b,_0x55e261,_0x54ef76){return function(){return client[_0x2958('0x9')](_0x2958('0x16'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x55779b,'active':![],'scheduledat':{'$lte':moment()[_0x2958('0x17')](_0x2958('0x12'))}},'include':[{'model':_0x2958('0x5'),'as':'Contact'}],'order':[[_0x2958('0x13'),_0x2958('0x18')],[_0x2958('0x14'),_0x54ef76],['id','ASC']],'raw':!![],'limit':_0x55e261},'log':_0x2958('0x19')});};};exports['moveContactManagedDialer']=function(_0x1da684,_0x52ea2f){return function(){_0x1da684['campaign']=_0x1da684[_0x2958('0x1a')];return client[_0x2958('0x9')](_0x2958('0x1b'),{'body':_0x1da684,'options':{'where':{'ContactId':_0x1da684[_0x2958('0x1c')],'ListId':_0x1da684[_0x2958('0xb')],'VoiceQueueId':_0x1da684[_0x2958('0xc')],'CampaignId':_0x1da684[_0x2958('0xd')],'active':_0x52ea2f?undefined:!![]}},'log':_0x2958('0x1b')});};};exports[_0x2958('0x1d')]=function(_0x2aa514){return function(){return client[_0x2958('0x9')](_0x2958('0x1e'),{'options':{'where':{'VoiceQueueId':_0x2aa514['id']?_0x2aa514['id']||null:null}},'log':_0x2958('0x1d')});};};exports[_0x2958('0x1f')]=function(_0x1e08b6){return function(){return client['Request']('GetCmHopperPreview',{'options':{'where':{'id':_0x1e08b6},'include':[{'model':_0x2958('0x5'),'as':_0x2958('0x6')},{'model':_0x2958('0x20'),'as':_0x2958('0x21'),'attributes':['id','name']},{'model':_0x2958('0x22'),'as':'Queue','attributes':['id',_0x2958('0x23')]}],'raw':!![]},'log':_0x2958('0x7')});};};exports[_0x2958('0x24')]=function(_0x4581d3,_0x23a566,_0x36e2a5){return function(){return client[_0x2958('0x9')]('UpdateCmHopper',{'body':_0x4581d3,'options':{'where':{'id':_0x23a566},'limit':_0x36e2a5},'log':_0x2958('0xa')});};};exports['getContactRecallMe']=function(_0x48650d,_0x28ee09){return function(){return client[_0x2958('0x9')](_0x2958('0x25'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x48650d,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x2958('0x17')](_0x2958('0x12'))},'UserId':{'$in':_0x28ee09}},'order':[[_0x2958('0x13'),_0x2958('0x18')],[_0x2958('0x14'),'DESC'],['id',_0x2958('0x26')]],'include':[{'model':_0x2958('0x5'),'as':'Contact'},{'model':_0x2958('0x20'),'as':'Agent','attributes':['id',_0x2958('0x23'),'voicePause']}],'group':_0x2958('0x27'),'raw':!![]},'log':'GetContactDialer'});};};exports[_0x2958('0x28')]=function(_0x2e2a0b){return function(){return client[_0x2958('0x9')](_0x2958('0x29'),{'body':_0x2e2a0b,'options':{},'log':_0x2958('0x29')});};};
\ No newline at end of file
+var _0x61e2=['GetCmHopper','CmContact','Contact','getCmHopper','updateContacts','UpdateCmHopper','format','rescheduleContact','ContactId','ListId','VoiceQueueId','CampaignId','DestroyCmHopper','getContactDialer','GetContactDialer','YYYY-MM-DD\x20HH:mm:ss','priority','DESC','scheduledat','ASC','GetContactDialerIvr','moveContactManagedDialer','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','User','Agent','Queue','name','unlockContact','voicePause','db.CmHopper.UserId','moment','lodash','getContacts','Request'];(function(_0x4f11ca,_0x29d79c){var _0x5c1421=function(_0x2f5551){while(--_0x2f5551){_0x4f11ca['push'](_0x4f11ca['shift']());}};_0x5c1421(++_0x29d79c);}(_0x61e2,0x19e));var _0x261e=function(_0x13c862,_0x3fffd0){_0x13c862=_0x13c862-0x0;var _0xc14aab=_0x61e2[_0x13c862];return _0xc14aab;};'use strict';var client=require('../client');var moment=require(_0x261e('0x0'));var _=require(_0x261e('0x1'));exports[_0x261e('0x2')]=function(_0x5ace7b,_0x20d28d){return function(){return client[_0x261e('0x3')](_0x261e('0x4'),{'options':{'where':{'VoiceQueueId':_0x5ace7b},'include':[{'model':_0x261e('0x5'),'as':_0x261e('0x6')}],'limit':_0x20d28d,'raw':![]},'log':_0x261e('0x7')});};};exports[_0x261e('0x8')]=function(_0x184681,_0x15dbb5,_0xe3570){return function(){return client[_0x261e('0x3')](_0x261e('0x9'),{'body':_0x184681,'options':{'where':{'VoiceQueueId':_0x15dbb5,'scheduledat':{'$lte':moment()[_0x261e('0xa')]('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0xe3570},'log':_0x261e('0x9')});};};exports[_0x261e('0xb')]=function(_0x4a72fd){return function(){return client[_0x261e('0x3')](_0x261e('0x9'),{'body':_0x4a72fd,'options':{'where':{'ContactId':_0x4a72fd[_0x261e('0xc')],'ListId':_0x4a72fd[_0x261e('0xd')],'VoiceQueueId':_0x4a72fd[_0x261e('0xe')],'CampaignId':_0x4a72fd[_0x261e('0xf')]}},'log':_0x261e('0xb')});};};exports['destroyContact']=function(_0xbb4cfa,_0x190f10,_0xa56e){return function(){return client[_0x261e('0x3')](_0x261e('0x10'),{'options':{'where':{'VoiceQueueId':_0xbb4cfa,'ListId':_0x190f10,'ContactId':_0xa56e}},'log':'DestroyCmHopper'});};};exports[_0x261e('0x11')]=function(_0x3dd037,_0x14a10a,_0x5a80a7,_0x3f0013){return function(){return client[_0x261e('0x3')](_0x261e('0x12'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x3dd037,'active':![],'scheduledat':{'$lte':moment()[_0x261e('0xa')](_0x261e('0x13'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x14a10a}}]},'order':[[_0x261e('0x14'),_0x261e('0x15')],[_0x261e('0x16'),_0x3f0013],['id','ASC']],'raw':!![],'limit':_0x5a80a7},'log':_0x261e('0x12')});};};exports['getContactDialerIvr']=function(_0x4af5d8,_0x1c50d0,_0x439602){return function(){return client['Request'](_0x261e('0x12'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x4af5d8,'active':![],'scheduledat':{'$lte':moment()[_0x261e('0xa')](_0x261e('0x13'))}},'include':[{'model':_0x261e('0x5'),'as':_0x261e('0x6')}],'order':[['priority',_0x261e('0x15')],[_0x261e('0x16'),_0x439602],['id',_0x261e('0x17')]],'raw':!![],'limit':_0x1c50d0},'log':_0x261e('0x18')});};};exports[_0x261e('0x19')]=function(_0x3071cc,_0x32ef99){return function(){_0x3071cc['campaign']=_0x3071cc['queue'];return client[_0x261e('0x3')]('MoveContactManagedDialer',{'body':_0x3071cc,'options':{'where':{'ContactId':_0x3071cc[_0x261e('0xc')],'ListId':_0x3071cc['ListId'],'VoiceQueueId':_0x3071cc[_0x261e('0xe')],'CampaignId':_0x3071cc[_0x261e('0xf')],'active':_0x32ef99?undefined:!![]}},'log':_0x261e('0x1a')});};};exports[_0x261e('0x1b')]=function(_0x5a8538){return function(){return client[_0x261e('0x3')](_0x261e('0x1c'),{'options':{'where':{'VoiceQueueId':_0x5a8538['id']?_0x5a8538['id']||null:null}},'log':_0x261e('0x1b')});};};exports[_0x261e('0x1d')]=function(_0x24757c){return function(){return client[_0x261e('0x3')](_0x261e('0x1e'),{'options':{'where':{'id':_0x24757c},'include':[{'model':_0x261e('0x5'),'as':_0x261e('0x6')},{'model':_0x261e('0x1f'),'as':_0x261e('0x20'),'attributes':['id','name']},{'model':'VoiceQueue','as':_0x261e('0x21'),'attributes':['id',_0x261e('0x22')]}],'raw':!![]},'log':_0x261e('0x7')});};};exports[_0x261e('0x23')]=function(_0x137f75,_0x471a0f,_0x14719d){return function(){return client[_0x261e('0x3')](_0x261e('0x9'),{'body':_0x137f75,'options':{'where':{'id':_0x471a0f},'limit':_0x14719d},'log':'UpdateCmHopper'});};};exports['getContactRecallMe']=function(_0x399963,_0x521ca6){return function(){return client[_0x261e('0x3')]('GetContactRecallMe',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x399963,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x261e('0xa')](_0x261e('0x13'))},'UserId':{'$in':_0x521ca6}},'order':[[_0x261e('0x14'),_0x261e('0x15')],[_0x261e('0x16'),'DESC'],['id',_0x261e('0x17')]],'include':[{'model':'CmContact','as':_0x261e('0x6')},{'model':_0x261e('0x1f'),'as':_0x261e('0x20'),'attributes':['id',_0x261e('0x22'),_0x261e('0x24')]}],'group':_0x261e('0x25'),'raw':!![]},'log':'GetContactDialer'});};};
\ No newline at end of file
index edad807..41ea864 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9354=['Contact','phone','checkIsBlackListIvr','Request','CampaignId','GetCmHopperBlackIvr','checkIsBlackList','GetCmHopperBlack','VoiceQueueId'];(function(_0x3ef2d5,_0x423d46){var _0x2fefb2=function(_0x54f82f){while(--_0x54f82f){_0x3ef2d5['push'](_0x3ef2d5['shift']());}};_0x2fefb2(++_0x423d46);}(_0x9354,0x96));var _0x4935=function(_0x3a7455,_0x46b004){_0x3a7455=_0x3a7455-0x0;var _0x216c72=_0x9354[_0x3a7455];return _0x216c72;};'use strict';var client=require('../client');exports[_0x4935('0x0')]=function(_0xc3c1f3){return function(){return client['Request'](_0x4935('0x1'),{'options':{'where':{'VoiceQueueId':_0xc3c1f3[_0x4935('0x2')],'phone':_0xc3c1f3[_0x4935('0x3')][_0x4935('0x4')]},'raw':![]},'log':'GetCmHopperBlack'});};};exports[_0x4935('0x5')]=function(_0x2d509b){return function(){return client[_0x4935('0x6')](_0x4935('0x1'),{'options':{'where':{'CampaignId':_0x2d509b[_0x4935('0x7')],'phone':_0x2d509b[_0x4935('0x3')][_0x4935('0x4')]},'raw':![]},'log':_0x4935('0x8')});};};
\ No newline at end of file
+var _0x3c81=['Contact','phone','../client','checkIsBlackList','Request','GetCmHopperBlack','checkIsBlackListIvr','CampaignId'];(function(_0x58dfbc,_0x4f1e8f){var _0x87f8ce=function(_0x455f4a){while(--_0x455f4a){_0x58dfbc['push'](_0x58dfbc['shift']());}};_0x87f8ce(++_0x4f1e8f);}(_0x3c81,0x102));var _0x13c8=function(_0x246240,_0x42f421){_0x246240=_0x246240-0x0;var _0x1e3205=_0x3c81[_0x246240];return _0x1e3205;};'use strict';var client=require(_0x13c8('0x0'));exports[_0x13c8('0x1')]=function(_0x48c35b){return function(){return client[_0x13c8('0x2')](_0x13c8('0x3'),{'options':{'where':{'VoiceQueueId':_0x48c35b['VoiceQueueId'],'phone':_0x48c35b['Contact']['phone']},'raw':![]},'log':'GetCmHopperBlack'});};};exports[_0x13c8('0x4')]=function(_0x3ec886){return function(){return client[_0x13c8('0x2')](_0x13c8('0x3'),{'options':{'where':{'CampaignId':_0x3ec886[_0x13c8('0x5')],'phone':_0x3ec886[_0x13c8('0x6')][_0x13c8('0x7')]},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
index bc67f0d..d610007 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb828=['campaign','queue','CreateCmHopperFinal','../client','createContact'];(function(_0x13bc68,_0x3f94b0){var _0x5a528d=function(_0x4c0aa9){while(--_0x4c0aa9){_0x13bc68['push'](_0x13bc68['shift']());}};_0x5a528d(++_0x3f94b0);}(_0xb828,0x125));var _0x8b82=function(_0x332a78,_0x4d38b3){_0x332a78=_0x332a78-0x0;var _0x537ac5=_0xb828[_0x332a78];return _0x537ac5;};'use strict';var client=require(_0x8b82('0x0'));exports[_0x8b82('0x1')]=function(_0xfcfbf7){return function(){_0xfcfbf7[_0x8b82('0x2')]=_0xfcfbf7[_0x8b82('0x3')];return client['Request'](_0x8b82('0x4'),{'body':_0xfcfbf7,'log':_0x8b82('0x4')});};};
\ No newline at end of file
+var _0xa52a=['CreateCmHopperFinal','../client','Request'];(function(_0x2bf141,_0x31eac7){var _0x48277b=function(_0x9fe560){while(--_0x9fe560){_0x2bf141['push'](_0x2bf141['shift']());}};_0x48277b(++_0x31eac7);}(_0xa52a,0x67));var _0xaa52=function(_0x2dc70d,_0x26e805){_0x2dc70d=_0x2dc70d-0x0;var _0x3b9ecc=_0xa52a[_0x2dc70d];return _0x3b9ecc;};'use strict';var client=require(_0xaa52('0x0'));exports['createContact']=function(_0x29d60d){return function(){_0x29d60d['campaign']=_0x29d60d['queue'];return client[_0xaa52('0x1')](_0xaa52('0x2'),{'body':_0x29d60d,'log':_0xaa52('0x2')});};};
\ No newline at end of file
index 6c73cbb..9352453 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ffc=['ivr','moment','createHistory','campaign','queue','Request','CreateCmHopperHistory','avgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','GetCampaignHopperHistory','endOf'];(function(_0x164760,_0x5874b0){var _0x8b91b2=function(_0x40d20a){while(--_0x40d20a){_0x164760['push'](_0x164760['shift']());}};_0x8b91b2(++_0x5874b0);}(_0x4ffc,0x17b));var _0xc4ff=function(_0x345b4b,_0x232309){_0x345b4b=_0x345b4b-0x0;var _0x5107e7=_0x4ffc[_0x345b4b];return _0x5107e7;};'use strict';var client=require('../client');var moment=require(_0xc4ff('0x0'));exports[_0xc4ff('0x1')]=function(_0x22d550){return function(){_0x22d550[_0xc4ff('0x2')]=_0x22d550[_0xc4ff('0x3')];return client[_0xc4ff('0x4')](_0xc4ff('0x5'),{'body':_0x22d550,'log':_0xc4ff('0x5')});};};exports[_0xc4ff('0x6')]=function(_0x430473){return function(){return client[_0xc4ff('0x4')]('AvgHandleTime',{'options':{'where':{'endtime':{'$between':[moment()[_0xc4ff('0x7')](_0x430473,_0xc4ff('0x8'))[_0xc4ff('0x9')](_0xc4ff('0xa')),moment()[_0xc4ff('0x9')]('YYYY-MM-DD\x20HH:mm:ss')]}},'raw':![]},'log':'GetCmHopperHistory'});};};exports[_0xc4ff('0xb')]=function(_0x507148){return function(){return client['Request'](_0xc4ff('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xc4ff('0xd')](_0xc4ff('0xe'))[_0xc4ff('0x9')]('YYYY-MM-DD\x20HH:mm:ss'),moment()['endOf']('day')['format'](_0xc4ff('0xa'))]},'campaigntype':_0xc4ff('0x3')},'raw':![]},'log':_0xc4ff('0xc')});};};exports['getCampaignHopperHistory']=function(_0x10295c){return function(){return client[_0xc4ff('0x4')](_0xc4ff('0xf'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xc4ff('0xd')]('day')[_0xc4ff('0x9')](_0xc4ff('0xa')),moment()[_0xc4ff('0x10')](_0xc4ff('0xe'))['format'](_0xc4ff('0xa'))]},'campaigntype':_0xc4ff('0x11')},'raw':![]},'log':'GetCampaignHopperHistory'});};};
\ No newline at end of file
+var _0xa8fd=['minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','day','endOf','getCampaignHopperHistory','GetCampaignHopperHistory','startOf','createHistory','campaign','queue','CreateCmHopperHistory','Request','AvgHandleTime'];(function(_0x1402f9,_0x3c4025){var _0x2dd64a=function(_0xe621d7){while(--_0xe621d7){_0x1402f9['push'](_0x1402f9['shift']());}};_0x2dd64a(++_0x3c4025);}(_0xa8fd,0x1e7));var _0xda8f=function(_0x3eb5d3,_0xbd0292){_0x3eb5d3=_0x3eb5d3-0x0;var _0x56b544=_0xa8fd[_0x3eb5d3];return _0x56b544;};'use strict';var client=require('../client');var moment=require('moment');exports[_0xda8f('0x0')]=function(_0x4507d0){return function(){_0x4507d0[_0xda8f('0x1')]=_0x4507d0[_0xda8f('0x2')];return client['Request'](_0xda8f('0x3'),{'body':_0x4507d0,'log':_0xda8f('0x3')});};};exports['avgHandleTime']=function(_0x4a6617){return function(){return client[_0xda8f('0x4')](_0xda8f('0x5'),{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x4a6617,_0xda8f('0x6'))[_0xda8f('0x7')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xda8f('0x7')](_0xda8f('0x8'))]}},'raw':![]},'log':_0xda8f('0x9')});};};exports[_0xda8f('0xa')]=function(_0x18a78a){return function(){return client[_0xda8f('0x4')](_0xda8f('0xb'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0xda8f('0xc'))[_0xda8f('0x7')](_0xda8f('0x8')),moment()[_0xda8f('0xd')]('day')[_0xda8f('0x7')](_0xda8f('0x8'))]},'campaigntype':_0xda8f('0x2')},'raw':![]},'log':_0xda8f('0xb')});};};exports[_0xda8f('0xe')]=function(_0x2c5f10){return function(){return client[_0xda8f('0x4')](_0xda8f('0xf'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xda8f('0x10')](_0xda8f('0xc'))['format'](_0xda8f('0x8')),moment()[_0xda8f('0xd')](_0xda8f('0xc'))[_0xda8f('0x7')](_0xda8f('0x8'))]},'campaigntype':'ivr'},'raw':![]},'log':_0xda8f('0xf')});};};
\ No newline at end of file
index e7d702b..a6f5d51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a48=['tech','ListId','key','Trunk','callerid','active','getFaxAccount','notify','NotifyFaxAccount','../client','getFaxAccounts','GetFaxAccount','name','description','ecm','headerinfo','maxrate','modem','gateway','faxdetect'];(function(_0x7cb10c,_0x2fcc3a){var _0x11df59=function(_0x75305f){while(--_0x75305f){_0x7cb10c['push'](_0x7cb10c['shift']());}};_0x11df59(++_0x2fcc3a);}(_0x0a48,0x95));var _0x80a4=function(_0xb1174e,_0x1e68a7){_0xb1174e=_0xb1174e-0x0;var _0x285bac=_0x0a48[_0xb1174e];return _0x285bac;};'use strict';var client=require(_0x80a4('0x0'));exports[_0x80a4('0x1')]=function(){return function(){return client['Request'](_0x80a4('0x2'),{'options':{'raw':![],'attributes':['id',_0x80a4('0x3'),_0x80a4('0x4'),_0x80a4('0x5'),_0x80a4('0x6'),'localstationid','minrate',_0x80a4('0x7'),_0x80a4('0x8'),_0x80a4('0x9'),_0x80a4('0xa'),'t38timeout',_0x80a4('0xb'),'TrunkId',_0x80a4('0xc'),_0x80a4('0xd')],'include':[{'model':_0x80a4('0xe'),'as':'Trunk','attributes':['id','name',_0x80a4('0xf'),_0x80a4('0x10')]}]},'log':_0x80a4('0x11')});};};exports[_0x80a4('0x12')]=function(_0x5858fe,_0x15a238){return client['Request'](_0x80a4('0x13'),{'account':{'id':_0x5858fe},'body':_0x15a238,'log':'NotifyFaxAccount'});};
\ No newline at end of file
+var _0x6f3e=['modem','gateway','faxdetect','tech','TrunkId','ListId','Trunk','callerid','active','getFaxAccount','notify','NotifyFaxAccount','../client','getFaxAccounts','Request','GetFaxAccount','name','description','ecm','localstationid','minrate'];(function(_0x2022ba,_0x1cee00){var _0x58d704=function(_0x178e4f){while(--_0x178e4f){_0x2022ba['push'](_0x2022ba['shift']());}};_0x58d704(++_0x1cee00);}(_0x6f3e,0x9f));var _0xe6f3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6f3e[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xe6f3('0x0'));exports[_0xe6f3('0x1')]=function(){return function(){return client[_0xe6f3('0x2')](_0xe6f3('0x3'),{'options':{'raw':![],'attributes':['id',_0xe6f3('0x4'),_0xe6f3('0x5'),_0xe6f3('0x6'),'headerinfo',_0xe6f3('0x7'),_0xe6f3('0x8'),'maxrate',_0xe6f3('0x9'),_0xe6f3('0xa'),_0xe6f3('0xb'),'t38timeout',_0xe6f3('0xc'),_0xe6f3('0xd'),_0xe6f3('0xe'),'key'],'include':[{'model':_0xe6f3('0xf'),'as':'Trunk','attributes':['id',_0xe6f3('0x4'),_0xe6f3('0x10'),_0xe6f3('0x11')]}]},'log':_0xe6f3('0x12')});};};exports[_0xe6f3('0x13')]=function(_0x39ae53,_0x4fe8b6){return client[_0xe6f3('0x2')]('NotifyFaxAccount',{'account':{'id':_0x39ae53},'body':_0x4fe8b6,'log':_0xe6f3('0x14')});};
\ No newline at end of file
index 3358ce2..13b04c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f40=['UpdateFaxMessage','../client','Request'];(function(_0x3b1d56,_0x3db0a5){var _0x5b7fc1=function(_0x5b34e9){while(--_0x5b34e9){_0x3b1d56['push'](_0x3b1d56['shift']());}};_0x5b7fc1(++_0x3db0a5);}(_0x1f40,0x1bd));var _0x01f4=function(_0x520b3b,_0x4642b3){_0x520b3b=_0x520b3b-0x0;var _0x1916e5=_0x1f40[_0x520b3b];return _0x1916e5;};'use strict';var client=require(_0x01f4('0x0'));exports['update']=function(_0x26c8d5,_0x48515a){return client[_0x01f4('0x1')](_0x01f4('0x2'),{'body':_0x48515a,'options':{'where':{'AttachmentId':_0x26c8d5}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
+var _0x6cc3=['../client','Request','UpdateFaxMessage'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x6cc3,0x1ef));var _0x36cc=function(_0x2e7f96,_0x2ffe43){_0x2e7f96=_0x2e7f96-0x0;var _0x315277=_0x6cc3[_0x2e7f96];return _0x315277;};'use strict';var client=require(_0x36cc('0x0'));exports['update']=function(_0xa7cdfe,_0x1db44c){return client[_0x36cc('0x1')](_0x36cc('0x2'),{'body':_0x1db44c,'options':{'where':{'AttachmentId':_0xa7cdfe}},'log':_0x36cc('0x2')});};
\ No newline at end of file
index ee1e1b3..5fb12b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7689=['key','keyType','idField','Tag','Tags','../../client','getDeskAccounts','GetDeskAccount','name','description','remoteUri','authType','type','DeskConfiguration','Configurations','DeskField','Subjects','content','variableName','Variable','Descriptions'];(function(_0x154cb5,_0x1a8d5a){var _0x3f574f=function(_0x597a52){while(--_0x597a52){_0x154cb5['push'](_0x154cb5['shift']());}};_0x3f574f(++_0x1a8d5a);}(_0x7689,0x1d3));var _0x9768=function(_0x1d67d5,_0x398b4b){_0x1d67d5=_0x1d67d5-0x0;var _0x3bb288=_0x7689[_0x1d67d5];return _0x3bb288;};'use strict';var client=require(_0x9768('0x0'));exports[_0x9768('0x1')]=function(){return function(_0x3fd5a2){return client['Request'](_0x9768('0x2'),{'options':{'raw':![],'attributes':['id',_0x9768('0x3'),_0x9768('0x4'),'username','password',_0x9768('0x5'),_0x9768('0x6'),_0x9768('0x7'),'serverUrl'],'include':[{'model':_0x9768('0x8'),'as':_0x9768('0x9'),'attributes':['id',_0x9768('0x3')],'include':[{'model':_0x9768('0xa'),'as':_0x9768('0xb'),'attributes':['id',_0x9768('0x7'),_0x9768('0xc'),_0x9768('0xd')],'include':[{'model':_0x9768('0xe'),'as':_0x9768('0xe'),'attributes':['id','name']}]},{'model':'DeskField','as':_0x9768('0xf'),'attributes':['id','type',_0x9768('0xc'),_0x9768('0x10'),_0x9768('0x11'),'keyContent',_0x9768('0xd')],'include':[{'model':_0x9768('0xe'),'as':_0x9768('0xe'),'attributes':['id',_0x9768('0x3')]}]},{'model':'DeskField','as':'Fields','attributes':['id','type',_0x9768('0xc'),_0x9768('0x12'),'nameField','customField',_0x9768('0xd')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x9768('0x3')]}]},{'model':_0x9768('0x13'),'as':_0x9768('0x14'),'attributes':['id',_0x9768('0x3')]}]}]},'log':'GetDeskAccount'});};};
\ No newline at end of file
+var _0x1de0=['content','Variable','key','keyType','variableName','idField','getDeskAccounts','Request','GetDeskAccount','name','description','username','password','authType','type','serverUrl','DeskConfiguration','Configurations','DeskField'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x1de0,0x136));var _0x01de=function(_0x5e3ac2,_0x225614){_0x5e3ac2=_0x5e3ac2-0x0;var _0x29a007=_0x1de0[_0x5e3ac2];return _0x29a007;};'use strict';var client=require('../../client');exports[_0x01de('0x0')]=function(){return function(_0x2cd7d7){return client[_0x01de('0x1')](_0x01de('0x2'),{'options':{'raw':![],'attributes':['id',_0x01de('0x3'),_0x01de('0x4'),_0x01de('0x5'),_0x01de('0x6'),'remoteUri',_0x01de('0x7'),_0x01de('0x8'),_0x01de('0x9')],'include':[{'model':_0x01de('0xa'),'as':_0x01de('0xb'),'attributes':['id','name'],'include':[{'model':_0x01de('0xc'),'as':'Subjects','attributes':['id','type',_0x01de('0xd'),'variableName'],'include':[{'model':_0x01de('0xe'),'as':_0x01de('0xe'),'attributes':['id',_0x01de('0x3')]}]},{'model':_0x01de('0xc'),'as':'Descriptions','attributes':['id',_0x01de('0x8'),_0x01de('0xd'),_0x01de('0xf'),_0x01de('0x10'),'keyContent',_0x01de('0x11')],'include':[{'model':_0x01de('0xe'),'as':_0x01de('0xe'),'attributes':['id',_0x01de('0x3')]}]},{'model':_0x01de('0xc'),'as':'Fields','attributes':['id',_0x01de('0x8'),_0x01de('0xd'),_0x01de('0x12'),'nameField','customField','variableName'],'include':[{'model':_0x01de('0xe'),'as':_0x01de('0xe'),'attributes':['id',_0x01de('0x3')]}]},{'model':'Tag','as':'Tags','attributes':['id','name']}]}]},'log':_0x01de('0x2')});};};
\ No newline at end of file
index 9b08978..779d9c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf277=['Descriptions','keyContent','idField','nameField','customField','GetDynamics365Account','../../client','getDynamics365Accounts','name','username','password','remoteUri','tenantId','clientSecret','serverUrl','description','Dynamics365Configuration','Configurations','ticketType','Subjects','type','content','variableName','Variable','Dynamics365Field'];(function(_0x12d0bb,_0x56430a){var _0x44e5af=function(_0x1c0db0){while(--_0x1c0db0){_0x12d0bb['push'](_0x12d0bb['shift']());}};_0x44e5af(++_0x56430a);}(_0xf277,0xe7));var _0x7f27=function(_0x1fbded,_0x37abe8){_0x1fbded=_0x1fbded-0x0;var _0x16e356=_0xf277[_0x1fbded];return _0x16e356;};'use strict';var client=require(_0x7f27('0x0'));exports[_0x7f27('0x1')]=function(){return function(_0x443812){return client['Request']('GetDynamics365Account',{'options':{'raw':![],'attributes':['id',_0x7f27('0x2'),_0x7f27('0x3'),_0x7f27('0x4'),_0x7f27('0x5'),_0x7f27('0x6'),'clientId',_0x7f27('0x7'),_0x7f27('0x8'),_0x7f27('0x9')],'include':[{'model':_0x7f27('0xa'),'as':_0x7f27('0xb'),'attributes':['id',_0x7f27('0x2'),_0x7f27('0xc')],'include':[{'model':'Dynamics365Field','as':_0x7f27('0xd'),'attributes':['id',_0x7f27('0xe'),_0x7f27('0xf'),_0x7f27('0x10')],'include':[{'model':_0x7f27('0x11'),'as':'Variable','attributes':['id','name']}]},{'model':_0x7f27('0x12'),'as':_0x7f27('0x13'),'attributes':['id',_0x7f27('0xe'),'content','key','keyType',_0x7f27('0x14'),'variableName'],'include':[{'model':_0x7f27('0x11'),'as':_0x7f27('0x11'),'attributes':['id',_0x7f27('0x2')]}]},{'model':'Dynamics365Field','as':'Fields','attributes':['id','type',_0x7f27('0xf'),_0x7f27('0x15'),_0x7f27('0x16'),_0x7f27('0x17'),_0x7f27('0x10')],'include':[{'model':_0x7f27('0x11'),'as':_0x7f27('0x11'),'attributes':['id',_0x7f27('0x2')]}]}]}]},'log':_0x7f27('0x18')});};};
\ No newline at end of file
+var _0x3080=['idField','nameField','customField','../../client','Request','GetDynamics365Account','username','password','remoteUri','clientSecret','serverUrl','description','Configurations','ticketType','Subjects','variableName','Variable','name','Dynamics365Field','keyType','keyContent','Fields','type','content'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x3080,0x1b3));var _0x0308=function(_0x1157b9,_0x20d3c7){_0x1157b9=_0x1157b9-0x0;var _0xe5e54c=_0x3080[_0x1157b9];return _0xe5e54c;};'use strict';var client=require(_0x0308('0x0'));exports['getDynamics365Accounts']=function(){return function(_0x58881a){return client[_0x0308('0x1')](_0x0308('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x0308('0x3'),_0x0308('0x4'),_0x0308('0x5'),'tenantId','clientId',_0x0308('0x6'),_0x0308('0x7'),_0x0308('0x8')],'include':[{'model':'Dynamics365Configuration','as':_0x0308('0x9'),'attributes':['id','name',_0x0308('0xa')],'include':[{'model':'Dynamics365Field','as':_0x0308('0xb'),'attributes':['id','type','content',_0x0308('0xc')],'include':[{'model':_0x0308('0xd'),'as':_0x0308('0xd'),'attributes':['id',_0x0308('0xe')]}]},{'model':_0x0308('0xf'),'as':'Descriptions','attributes':['id','type','content','key',_0x0308('0x10'),_0x0308('0x11'),'variableName'],'include':[{'model':_0x0308('0xd'),'as':'Variable','attributes':['id',_0x0308('0xe')]}]},{'model':_0x0308('0xf'),'as':_0x0308('0x12'),'attributes':['id',_0x0308('0x13'),_0x0308('0x14'),_0x0308('0x15'),_0x0308('0x16'),_0x0308('0x17'),_0x0308('0xc')],'include':[{'model':_0x0308('0xd'),'as':_0x0308('0xd'),'attributes':['id',_0x0308('0xe')]}]}]}]},'log':_0x0308('0x2')});};};
\ No newline at end of file
index e5906a1..e01e806 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb627=['content','Variable','Descriptions','type','key','keyType','keyContent','variableName','Fields','idField','customField','GetFreshdeskAccount','../../client','Request','name','username','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag','FreshdeskField','Subjects'];(function(_0x505493,_0xa913c8){var _0x5604cc=function(_0x23f626){while(--_0x23f626){_0x505493['push'](_0x505493['shift']());}};_0x5604cc(++_0xa913c8);}(_0xb627,0x144));var _0x7b62=function(_0x2c3451,_0x547c01){_0x2c3451=_0x2c3451-0x0;var _0x1839a3=_0xb627[_0x2c3451];return _0x1839a3;};'use strict';var client=require(_0x7b62('0x0'));exports['getFreshdeskAccounts']=function(){return function(_0x486023){return client[_0x7b62('0x1')]('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0x7b62('0x2'),_0x7b62('0x3'),_0x7b62('0x4'),_0x7b62('0x5'),_0x7b62('0x6')],'include':[{'model':_0x7b62('0x7'),'as':_0x7b62('0x8'),'attributes':['id','name'],'include':[{'model':_0x7b62('0x9'),'attributes':['id','name']},{'model':_0x7b62('0xa'),'as':_0x7b62('0xb'),'attributes':['id','type',_0x7b62('0xc'),'variableName'],'include':[{'model':_0x7b62('0xd'),'as':_0x7b62('0xd'),'attributes':['id',_0x7b62('0x2')]}]},{'model':'FreshdeskField','as':_0x7b62('0xe'),'attributes':['id',_0x7b62('0xf'),_0x7b62('0xc'),_0x7b62('0x10'),_0x7b62('0x11'),_0x7b62('0x12'),_0x7b62('0x13')],'include':[{'model':_0x7b62('0xd'),'as':_0x7b62('0xd'),'attributes':['id',_0x7b62('0x2')]}]},{'model':_0x7b62('0xa'),'as':_0x7b62('0x14'),'attributes':['id',_0x7b62('0xf'),'content',_0x7b62('0x15'),'nameField',_0x7b62('0x16'),'variableName'],'include':[{'model':_0x7b62('0xd'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0x7b62('0x17')});};};
\ No newline at end of file
+var _0x3c66=['Descriptions','type','keyType','keyContent','idField','nameField','customField','Request','GetFreshdeskAccount','name','username','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag','Subjects','content','variableName','Variable','FreshdeskField'];(function(_0x50dbbf,_0x2b746a){var _0x4c2f6b=function(_0xa89ac1){while(--_0xa89ac1){_0x50dbbf['push'](_0x50dbbf['shift']());}};_0x4c2f6b(++_0x2b746a);}(_0x3c66,0x8b));var _0x63c6=function(_0x32ba85,_0x1db066){_0x32ba85=_0x32ba85-0x0;var _0x51034d=_0x3c66[_0x32ba85];return _0x51034d;};'use strict';var client=require('../../client');exports['getFreshdeskAccounts']=function(){return function(_0x57e61e){return client[_0x63c6('0x0')](_0x63c6('0x1'),{'options':{'raw':![],'attributes':['id',_0x63c6('0x2'),_0x63c6('0x3'),_0x63c6('0x4'),_0x63c6('0x5'),_0x63c6('0x6')],'include':[{'model':_0x63c6('0x7'),'as':_0x63c6('0x8'),'attributes':['id',_0x63c6('0x2')],'include':[{'model':_0x63c6('0x9'),'attributes':['id',_0x63c6('0x2')]},{'model':'FreshdeskField','as':_0x63c6('0xa'),'attributes':['id','type',_0x63c6('0xb'),_0x63c6('0xc')],'include':[{'model':'Variable','as':_0x63c6('0xd'),'attributes':['id',_0x63c6('0x2')]}]},{'model':_0x63c6('0xe'),'as':_0x63c6('0xf'),'attributes':['id',_0x63c6('0x10'),_0x63c6('0xb'),'key',_0x63c6('0x11'),_0x63c6('0x12'),_0x63c6('0xc')],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':'FreshdeskField','as':'Fields','attributes':['id','type',_0x63c6('0xb'),_0x63c6('0x13'),_0x63c6('0x14'),_0x63c6('0x15'),_0x63c6('0xc')],'include':[{'model':'Variable','as':_0x63c6('0xd'),'attributes':['id',_0x63c6('0x2')]}]}]}]},'log':'GetFreshdeskAccount'});};};
\ No newline at end of file
index 1ac6f91..1f942ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1751=['Request','name','username','apiKey','remoteUri','serverUrl','FreshsalesConfiguration','Configurations','FreshsalesField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','../../client','getFreshsalesAccounts'];(function(_0x38e3b8,_0x1d66c8){var _0x4620a0=function(_0x10577b){while(--_0x10577b){_0x38e3b8['push'](_0x38e3b8['shift']());}};_0x4620a0(++_0x1d66c8);}(_0x1751,0x76));var _0x1175=function(_0x558894,_0x43b936){_0x558894=_0x558894-0x0;var _0x44d0d4=_0x1751[_0x558894];return _0x44d0d4;};'use strict';var client=require(_0x1175('0x0'));exports[_0x1175('0x1')]=function(){return function(_0x110a8c){return client[_0x1175('0x2')]('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id',_0x1175('0x3'),_0x1175('0x4'),_0x1175('0x5'),_0x1175('0x6'),_0x1175('0x7')],'include':[{'model':_0x1175('0x8'),'as':_0x1175('0x9'),'attributes':['id',_0x1175('0x3')],'include':[{'model':_0x1175('0xa'),'as':_0x1175('0xb'),'attributes':['id',_0x1175('0xc'),_0x1175('0xd'),_0x1175('0xe')],'include':[{'model':_0x1175('0xf'),'as':_0x1175('0xf'),'attributes':['id',_0x1175('0x3')]}]},{'model':_0x1175('0xa'),'as':_0x1175('0x10'),'attributes':['id',_0x1175('0xc'),_0x1175('0xd'),_0x1175('0x11'),_0x1175('0x12'),_0x1175('0x13'),_0x1175('0xe')],'include':[{'model':_0x1175('0xf'),'as':_0x1175('0xf'),'attributes':['id','name']}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
+var _0x2aa3=['FreshsalesField','Subjects','type','content','variableName','Variable','name','Descriptions','key','keyType','keyContent','../../client','getFreshsalesAccounts','Request','username','apiKey','remoteUri','serverUrl','FreshsalesConfiguration','Configurations'];(function(_0x172f64,_0x16e787){var _0x320b65=function(_0x209dae){while(--_0x209dae){_0x172f64['push'](_0x172f64['shift']());}};_0x320b65(++_0x16e787);}(_0x2aa3,0x83));var _0x32aa=function(_0x1ff2a5,_0x1a8372){_0x1ff2a5=_0x1ff2a5-0x0;var _0x35c020=_0x2aa3[_0x1ff2a5];return _0x35c020;};'use strict';var client=require(_0x32aa('0x0'));exports[_0x32aa('0x1')]=function(){return function(_0x107517){return client[_0x32aa('0x2')]('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id','name',_0x32aa('0x3'),_0x32aa('0x4'),_0x32aa('0x5'),_0x32aa('0x6')],'include':[{'model':_0x32aa('0x7'),'as':_0x32aa('0x8'),'attributes':['id','name'],'include':[{'model':_0x32aa('0x9'),'as':_0x32aa('0xa'),'attributes':['id',_0x32aa('0xb'),_0x32aa('0xc'),_0x32aa('0xd')],'include':[{'model':_0x32aa('0xe'),'as':_0x32aa('0xe'),'attributes':['id',_0x32aa('0xf')]}]},{'model':'FreshsalesField','as':_0x32aa('0x10'),'attributes':['id','type',_0x32aa('0xc'),_0x32aa('0x11'),_0x32aa('0x12'),_0x32aa('0x13'),'variableName'],'include':[{'model':_0x32aa('0xe'),'as':_0x32aa('0xe'),'attributes':['id',_0x32aa('0xf')]}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
index 12fec6d..d8308c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f22=['Variable','Descriptions','Fields','../../client','getSalesforceAccounts','Request','GetSalesforceAccount','name','username','password','remoteUri','clientId','clientSecret','securityToken','serverUrl','type','SalesforceConfiguration','Configurations','ticketType','leadId','additionalSearchAccount','additionalSearchContact','additionalSearchLead','SalesforceField'];(function(_0x3d493a,_0x5ec9d2){var _0x430986=function(_0x3bfd83){while(--_0x3bfd83){_0x3d493a['push'](_0x3d493a['shift']());}};_0x430986(++_0x5ec9d2);}(_0x8f22,0x1e3));var _0x28f2=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x8f22[_0x2641f9];return _0x585741;};'use strict';var client=require(_0x28f2('0x0'));exports[_0x28f2('0x1')]=function(){return function(_0x255cad){return client[_0x28f2('0x2')](_0x28f2('0x3'),{'options':{'raw':![],'attributes':['id',_0x28f2('0x4'),_0x28f2('0x5'),_0x28f2('0x6'),_0x28f2('0x7'),_0x28f2('0x8'),_0x28f2('0x9'),_0x28f2('0xa'),_0x28f2('0xb'),_0x28f2('0xc')],'include':[{'model':_0x28f2('0xd'),'as':_0x28f2('0xe'),'attributes':['id','name','moduleSearch','moduleCreate',_0x28f2('0xf'),_0x28f2('0x10'),_0x28f2('0x11'),_0x28f2('0x12'),_0x28f2('0x13')],'include':[{'model':_0x28f2('0x14'),'as':'Subjects','include':[{'model':_0x28f2('0x15'),'as':'Variable','attributes':['id',_0x28f2('0x4')]}]},{'model':_0x28f2('0x14'),'as':_0x28f2('0x16'),'include':[{'model':'Variable','as':_0x28f2('0x15'),'attributes':['id',_0x28f2('0x4')]}]},{'model':'SalesforceField','as':_0x28f2('0x17'),'include':[{'model':_0x28f2('0x15'),'as':_0x28f2('0x15'),'attributes':['id',_0x28f2('0x4')]}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
+var _0xaf30=['securityToken','serverUrl','type','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','ticketType','leadId','additionalSearchAccount','additionalSearchContact','additionalSearchLead','SalesforceField','Subjects','Variable','Descriptions','getSalesforceAccounts','Request','GetSalesforceAccount','name','password','remoteUri','clientId','clientSecret'];(function(_0x562e59,_0x110cd2){var _0x44ce54=function(_0xb5a117){while(--_0xb5a117){_0x562e59['push'](_0x562e59['shift']());}};_0x44ce54(++_0x110cd2);}(_0xaf30,0xd0));var _0x0af3=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xaf30[_0x122ef9];return _0x42fba0;};'use strict';var client=require('../../client');exports[_0x0af3('0x0')]=function(){return function(_0x5efee9){return client[_0x0af3('0x1')](_0x0af3('0x2'),{'options':{'raw':![],'attributes':['id',_0x0af3('0x3'),'username',_0x0af3('0x4'),_0x0af3('0x5'),_0x0af3('0x6'),_0x0af3('0x7'),_0x0af3('0x8'),_0x0af3('0x9'),_0x0af3('0xa')],'include':[{'model':_0x0af3('0xb'),'as':_0x0af3('0xc'),'attributes':['id',_0x0af3('0x3'),_0x0af3('0xd'),_0x0af3('0xe'),_0x0af3('0xf'),_0x0af3('0x10'),_0x0af3('0x11'),_0x0af3('0x12'),_0x0af3('0x13')],'include':[{'model':_0x0af3('0x14'),'as':_0x0af3('0x15'),'include':[{'model':_0x0af3('0x16'),'as':'Variable','attributes':['id','name']}]},{'model':'SalesforceField','as':_0x0af3('0x17'),'include':[{'model':_0x0af3('0x16'),'as':_0x0af3('0x16'),'attributes':['id',_0x0af3('0x3')]}]},{'model':_0x0af3('0x14'),'as':'Fields','include':[{'model':_0x0af3('0x16'),'as':_0x0af3('0x16'),'attributes':['id',_0x0af3('0x3')]}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
index dc45f90..a960508 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2675=['ServicenowField','type','content','Variable','Descriptions','keyType','variableName','Fields','idField','nameField','customField','GetServicenowkAccount','../../client','GetServicenowAccount','name','username','password','remoteUri','serverUrl','ServicenowConfiguration','Configurations'];(function(_0x39f9ae,_0x399adb){var _0x48cab3=function(_0x59b98b){while(--_0x59b98b){_0x39f9ae['push'](_0x39f9ae['shift']());}};_0x48cab3(++_0x399adb);}(_0x2675,0x75));var _0x5267=function(_0x51ea15,_0x1737d9){_0x51ea15=_0x51ea15-0x0;var _0x3a93ec=_0x2675[_0x51ea15];return _0x3a93ec;};'use strict';var client=require(_0x5267('0x0'));exports['getServicenowAccounts']=function(){return function(_0x53e71f){return client['Request'](_0x5267('0x1'),{'options':{'raw':![],'attributes':['id',_0x5267('0x2'),'description',_0x5267('0x3'),_0x5267('0x4'),'email',_0x5267('0x5'),_0x5267('0x6')],'include':[{'model':_0x5267('0x7'),'as':_0x5267('0x8'),'attributes':['id',_0x5267('0x2')],'include':[{'model':_0x5267('0x9'),'as':'Subjects','attributes':['id',_0x5267('0xa'),_0x5267('0xb'),'variableName'],'include':[{'model':_0x5267('0xc'),'as':'Variable','attributes':['id',_0x5267('0x2')]}]},{'model':_0x5267('0x9'),'as':_0x5267('0xd'),'attributes':['id','type',_0x5267('0xb'),'key',_0x5267('0xe'),'keyContent',_0x5267('0xf')],'include':[{'model':_0x5267('0xc'),'as':_0x5267('0xc'),'attributes':['id',_0x5267('0x2')]}]},{'model':_0x5267('0x9'),'as':_0x5267('0x10'),'attributes':['id',_0x5267('0xa'),_0x5267('0xb'),_0x5267('0x11'),_0x5267('0x12'),_0x5267('0x13'),_0x5267('0xf')],'include':[{'model':_0x5267('0xc'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0x5267('0x14')});};};
\ No newline at end of file
+var _0x53ec=['customField','GetServicenowkAccount','../../client','getServicenowAccounts','Request','GetServicenowAccount','name','username','email','remoteUri','ServicenowConfiguration','ServicenowField','type','content','variableName','Variable','Descriptions','keyType','idField','nameField'];(function(_0x3b0b41,_0x9d760c){var _0x1ad463=function(_0x2d4f11){while(--_0x2d4f11){_0x3b0b41['push'](_0x3b0b41['shift']());}};_0x1ad463(++_0x9d760c);}(_0x53ec,0x192));var _0xc53e=function(_0xdbff26,_0xfc8995){_0xdbff26=_0xdbff26-0x0;var _0x4adb23=_0x53ec[_0xdbff26];return _0x4adb23;};'use strict';var client=require(_0xc53e('0x0'));exports[_0xc53e('0x1')]=function(){return function(_0x2d5f51){return client[_0xc53e('0x2')](_0xc53e('0x3'),{'options':{'raw':![],'attributes':['id',_0xc53e('0x4'),'description',_0xc53e('0x5'),'password',_0xc53e('0x6'),_0xc53e('0x7'),'serverUrl'],'include':[{'model':_0xc53e('0x8'),'as':'Configurations','attributes':['id',_0xc53e('0x4')],'include':[{'model':_0xc53e('0x9'),'as':'Subjects','attributes':['id',_0xc53e('0xa'),_0xc53e('0xb'),_0xc53e('0xc')],'include':[{'model':_0xc53e('0xd'),'as':_0xc53e('0xd'),'attributes':['id',_0xc53e('0x4')]}]},{'model':_0xc53e('0x9'),'as':_0xc53e('0xe'),'attributes':['id',_0xc53e('0xa'),'content','key',_0xc53e('0xf'),'keyContent','variableName'],'include':[{'model':_0xc53e('0xd'),'as':_0xc53e('0xd'),'attributes':['id',_0xc53e('0x4')]}]},{'model':_0xc53e('0x9'),'as':'Fields','attributes':['id','type',_0xc53e('0xb'),_0xc53e('0x10'),_0xc53e('0x11'),_0xc53e('0x12'),_0xc53e('0xc')],'include':[{'model':_0xc53e('0xd'),'as':_0xc53e('0xd'),'attributes':['id',_0xc53e('0x4')]}]}]}]},'log':_0xc53e('0x13')});};};
\ No newline at end of file
index 8fd2d0c..9cf285c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda2d=['Subjects','type','content','variableName','Variable','key','keyType','keyContent','idField','nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','serverUrl','SugarcrmConfiguration','Configurations','SugarcrmField'];(function(_0xa3c06b,_0x490f99){var _0x33aa1d=function(_0x23a88e){while(--_0x23a88e){_0xa3c06b['push'](_0xa3c06b['shift']());}};_0x33aa1d(++_0x490f99);}(_0xda2d,0x102));var _0xdda2=function(_0x521f21,_0x54d792){_0x521f21=_0x521f21-0x0;var _0x5ddbbc=_0xda2d[_0x521f21];return _0x5ddbbc;};'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')],'include':[{'model':_0xdda2('0x5'),'as':_0xdda2('0x6'),'attributes':['id',_0xdda2('0x3')],'include':[{'model':_0xdda2('0x7'),'as':_0xdda2('0x8'),'attributes':['id',_0xdda2('0x9'),_0xdda2('0xa'),_0xdda2('0xb')],'include':[{'model':_0xdda2('0xc'),'as':'Variable','attributes':['id',_0xdda2('0x3')]}]},{'model':_0xdda2('0x7'),'as':'Descriptions','attributes':['id',_0xdda2('0x9'),_0xdda2('0xa'),_0xdda2('0xd'),_0xdda2('0xe'),_0xdda2('0xf'),_0xdda2('0xb')],'include':[{'model':_0xdda2('0xc'),'as':_0xdda2('0xc'),'attributes':['id','name']}]},{'model':'SugarcrmField','as':'Fields','attributes':['id',_0xdda2('0x9'),_0xdda2('0xa'),_0xdda2('0x10'),_0xdda2('0x11'),_0xdda2('0x12'),_0xdda2('0xb')],'include':[{'model':_0xdda2('0xc'),'as':'Variable','attributes':['id',_0xdda2('0x3')]}]}]}]},'log':'GetSugarcrmAccount'});};};
\ 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(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0x57ca,0x108));var _0xa57c=function(_0x52c8b6,_0x4471d7){_0x52c8b6=_0x52c8b6-0x0;var _0x43a26c=_0x57ca[_0x52c8b6];return _0x43a26c;};'use strict';var client=require('../../client');exports[_0xa57c('0x0')]=function(){return function(_0x4ad696){return client['Request'](_0xa57c('0x1'),{'options':{'raw':![],'attributes':['id',_0xa57c('0x2'),_0xa57c('0x3'),_0xa57c('0x4'),_0xa57c('0x5'),'serverUrl'],'include':[{'model':_0xa57c('0x6'),'as':_0xa57c('0x7'),'attributes':['id',_0xa57c('0x2')],'include':[{'model':_0xa57c('0x8'),'as':_0xa57c('0x9'),'attributes':['id',_0xa57c('0xa'),_0xa57c('0xb'),_0xa57c('0xc')],'include':[{'model':'Variable','as':_0xa57c('0xd'),'attributes':['id','name']}]},{'model':_0xa57c('0x8'),'as':_0xa57c('0xe'),'attributes':['id','type',_0xa57c('0xb'),'key',_0xa57c('0xf'),_0xa57c('0x10'),'variableName'],'include':[{'model':_0xa57c('0xd'),'as':'Variable','attributes':['id',_0xa57c('0x2')]}]},{'model':_0xa57c('0x8'),'as':_0xa57c('0x11'),'attributes':['id',_0xa57c('0xa'),_0xa57c('0xb'),'idField',_0xa57c('0x12'),'customField',_0xa57c('0xc')],'include':[{'model':_0xa57c('0xd'),'as':_0xa57c('0xd'),'attributes':['id',_0xa57c('0x2')]}]}]}]},'log':_0xa57c('0x1')});};};
\ No newline at end of file
index 92ea464..8522720 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe93e=['description','username','accessKey','serverUrl','Configurations','VtigerField','Subjects','type','content','Variable','Descriptions','keyType','keyContent','nameField','customField','Request','GetVtigerAccount','name'];(function(_0x4e1e19,_0x565eca){var _0x42723e=function(_0x35ef78){while(--_0x35ef78){_0x4e1e19['push'](_0x4e1e19['shift']());}};_0x42723e(++_0x565eca);}(_0xe93e,0xd5));var _0xee93=function(_0x47f8d2,_0x259040){_0x47f8d2=_0x47f8d2-0x0;var _0x5b31bb=_0xe93e[_0x47f8d2];return _0x5b31bb;};'use strict';var client=require('../../client');exports['getVtigerAccounts']=function(){return function(_0x4423e5){return client[_0xee93('0x0')](_0xee93('0x1'),{'options':{'raw':![],'attributes':['id',_0xee93('0x2'),_0xee93('0x3'),_0xee93('0x4'),_0xee93('0x5'),'remoteUri',_0xee93('0x6')],'include':[{'model':'VtigerConfiguration','as':_0xee93('0x7'),'attributes':['id','name'],'include':[{'model':_0xee93('0x8'),'as':_0xee93('0x9'),'attributes':['id',_0xee93('0xa'),_0xee93('0xb'),'variableName'],'include':[{'model':_0xee93('0xc'),'as':_0xee93('0xc'),'attributes':['id',_0xee93('0x2')]}]},{'model':_0xee93('0x8'),'as':_0xee93('0xd'),'attributes':['id',_0xee93('0xa'),'content','key',_0xee93('0xe'),_0xee93('0xf'),'variableName'],'include':[{'model':_0xee93('0xc'),'as':_0xee93('0xc'),'attributes':['id',_0xee93('0x2')]}]},{'model':_0xee93('0x8'),'as':'Fields','attributes':['id','type',_0xee93('0xb'),'idField',_0xee93('0x10'),_0xee93('0x11'),'variableName'],'include':[{'model':_0xee93('0xc'),'as':_0xee93('0xc'),'attributes':['id',_0xee93('0x2')]}]}]}]},'log':_0xee93('0x1')});};};
\ No newline at end of file
+var _0x193a=['Request','GetVtigerAccount','description','accessKey','remoteUri','serverUrl','Configurations','name','Subjects','type','variableName','Variable','Descriptions','key','keyContent','VtigerField','Fields','content','nameField','../../client','getVtigerAccounts'];(function(_0xd60420,_0x5d135f){var _0x2be732=function(_0x50d108){while(--_0x50d108){_0xd60420['push'](_0xd60420['shift']());}};_0x2be732(++_0x5d135f);}(_0x193a,0xbb));var _0xa193=function(_0x186926,_0x3ee500){_0x186926=_0x186926-0x0;var _0x47173f=_0x193a[_0x186926];return _0x47173f;};'use strict';var client=require(_0xa193('0x0'));exports[_0xa193('0x1')]=function(){return function(_0x1bbdb3){return client[_0xa193('0x2')](_0xa193('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xa193('0x4'),'username',_0xa193('0x5'),_0xa193('0x6'),_0xa193('0x7')],'include':[{'model':'VtigerConfiguration','as':_0xa193('0x8'),'attributes':['id',_0xa193('0x9')],'include':[{'model':'VtigerField','as':_0xa193('0xa'),'attributes':['id',_0xa193('0xb'),'content',_0xa193('0xc')],'include':[{'model':_0xa193('0xd'),'as':'Variable','attributes':['id',_0xa193('0x9')]}]},{'model':'VtigerField','as':_0xa193('0xe'),'attributes':['id',_0xa193('0xb'),'content',_0xa193('0xf'),'keyType',_0xa193('0x10'),_0xa193('0xc')],'include':[{'model':'Variable','as':_0xa193('0xd'),'attributes':['id',_0xa193('0x9')]}]},{'model':_0xa193('0x11'),'as':_0xa193('0x12'),'attributes':['id','type',_0xa193('0x13'),'idField',_0xa193('0x14'),'customField',_0xa193('0xc')],'include':[{'model':_0xa193('0xd'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0xa193('0x3')});};};
\ No newline at end of file
index 570d830..eda7a59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd6b=['ZendeskField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','../../client','Request','GetZendeskAccount','name','username','password','remoteUri','authType','serverUrl','type','ZendeskConfiguration','Configurations','Tag'];(function(_0x4d8f3d,_0x24572c){var _0x186e7f=function(_0x4b6573){while(--_0x4b6573){_0x4d8f3d['push'](_0x4d8f3d['shift']());}};_0x186e7f(++_0x24572c);}(_0xdd6b,0xfb));var _0xbdd6=function(_0xe303dc,_0x1736a6){_0xe303dc=_0xe303dc-0x0;var _0x35a130=_0xdd6b[_0xe303dc];return _0x35a130;};'use strict';var client=require(_0xbdd6('0x0'));exports['getZendeskAccounts']=function(){return function(_0x168be7){return client[_0xbdd6('0x1')](_0xbdd6('0x2'),{'options':{'raw':![],'attributes':['id',_0xbdd6('0x3'),_0xbdd6('0x4'),_0xbdd6('0x5'),'token',_0xbdd6('0x6'),_0xbdd6('0x7'),_0xbdd6('0x8'),_0xbdd6('0x9')],'include':[{'model':_0xbdd6('0xa'),'as':_0xbdd6('0xb'),'attributes':['id',_0xbdd6('0x3')],'include':[{'model':_0xbdd6('0xc'),'attributes':['id','name']},{'model':_0xbdd6('0xd'),'as':_0xbdd6('0xe'),'attributes':['id',_0xbdd6('0x9'),_0xbdd6('0xf'),_0xbdd6('0x10')],'include':[{'model':_0xbdd6('0x11'),'as':_0xbdd6('0x11'),'attributes':['id','name']}]},{'model':_0xbdd6('0xd'),'as':_0xbdd6('0x12'),'attributes':['id',_0xbdd6('0x9'),'content',_0xbdd6('0x13'),_0xbdd6('0x14'),_0xbdd6('0x15'),_0xbdd6('0x10')],'include':[{'model':_0xbdd6('0x11'),'as':_0xbdd6('0x11'),'attributes':['id',_0xbdd6('0x3')]}]},{'model':'ZendeskField','as':_0xbdd6('0x16'),'attributes':['id','type',_0xbdd6('0xf'),_0xbdd6('0x17'),'nameField','customField','variableName'],'include':[{'model':_0xbdd6('0x11'),'as':_0xbdd6('0x11'),'attributes':['id',_0xbdd6('0x3')]}]}]}]},'log':_0xbdd6('0x2')});};};
\ No newline at end of file
+var _0xe905=['key','keyType','Fields','idField','customField','GetZendeskAccount','../../client','name','username','password','token','remoteUri','authType','serverUrl','type','ZendeskConfiguration','Tag','ZendeskField','content','variableName','Variable'];(function(_0x2d364e,_0x301c5e){var _0x1b9312=function(_0x1b05bb){while(--_0x1b05bb){_0x2d364e['push'](_0x2d364e['shift']());}};_0x1b9312(++_0x301c5e);}(_0xe905,0xc3));var _0x5e90=function(_0x1b0037,_0x3223a7){_0x1b0037=_0x1b0037-0x0;var _0x51375b=_0xe905[_0x1b0037];return _0x51375b;};'use strict';var client=require(_0x5e90('0x0'));exports['getZendeskAccounts']=function(){return function(_0x2b3f5d){return client['Request']('GetZendeskAccount',{'options':{'raw':![],'attributes':['id',_0x5e90('0x1'),_0x5e90('0x2'),_0x5e90('0x3'),_0x5e90('0x4'),_0x5e90('0x5'),_0x5e90('0x6'),_0x5e90('0x7'),_0x5e90('0x8')],'include':[{'model':_0x5e90('0x9'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0x5e90('0xa'),'attributes':['id',_0x5e90('0x1')]},{'model':_0x5e90('0xb'),'as':'Subjects','attributes':['id',_0x5e90('0x8'),_0x5e90('0xc'),_0x5e90('0xd')],'include':[{'model':_0x5e90('0xe'),'as':_0x5e90('0xe'),'attributes':['id',_0x5e90('0x1')]}]},{'model':_0x5e90('0xb'),'as':'Descriptions','attributes':['id','type',_0x5e90('0xc'),_0x5e90('0xf'),_0x5e90('0x10'),'keyContent',_0x5e90('0xd')],'include':[{'model':'Variable','as':_0x5e90('0xe'),'attributes':['id',_0x5e90('0x1')]}]},{'model':_0x5e90('0xb'),'as':_0x5e90('0x11'),'attributes':['id',_0x5e90('0x8'),_0x5e90('0xc'),_0x5e90('0x12'),'nameField',_0x5e90('0x13'),_0x5e90('0xd')],'include':[{'model':_0x5e90('0xe'),'as':_0x5e90('0xe'),'attributes':['id',_0x5e90('0x1')]}]}]}]},'log':_0x5e90('0x14')});};};
\ No newline at end of file
index 8698bfa..6c3a839 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb04c=['description','host','clientId','clientSecret','serverUrl','refreshToken','Configurations','ZohoField','Subjects','content','variableName','Variable','Descriptions','type','key','keyType','keyContent','Fields','idField','customField','../../client','Request','name'];(function(_0x8ba770,_0x26da8c){var _0x44fa9e=function(_0x28b3cb){while(--_0x28b3cb){_0x8ba770['push'](_0x8ba770['shift']());}};_0x44fa9e(++_0x26da8c);}(_0xb04c,0x13f));var _0xcb04=function(_0xae5825,_0x93e429){_0xae5825=_0xae5825-0x0;var _0x28c55a=_0xb04c[_0xae5825];return _0x28c55a;};'use strict';var client=require(_0xcb04('0x0'));exports['getZohoAccounts']=function(){return function(_0x4f2b2c){return client[_0xcb04('0x1')]('GetZohoAccount',{'options':{'raw':![],'attributes':['id',_0xcb04('0x2'),_0xcb04('0x3'),_0xcb04('0x4'),'zone',_0xcb04('0x5'),_0xcb04('0x6'),_0xcb04('0x7'),'code',_0xcb04('0x8')],'include':[{'model':'ZohoConfiguration','as':_0xcb04('0x9'),'attributes':['id',_0xcb04('0x2'),'moduleCreate','moduleSearch',_0xcb04('0x3')],'include':[{'model':_0xcb04('0xa'),'as':_0xcb04('0xb'),'attributes':['id','type',_0xcb04('0xc'),_0xcb04('0xd')],'include':[{'model':_0xcb04('0xe'),'as':_0xcb04('0xe'),'attributes':['id','name']}]},{'model':_0xcb04('0xa'),'as':_0xcb04('0xf'),'attributes':['id',_0xcb04('0x10'),'content',_0xcb04('0x11'),_0xcb04('0x12'),_0xcb04('0x13'),'variableName'],'include':[{'model':'Variable','as':_0xcb04('0xe'),'attributes':['id',_0xcb04('0x2')]}]},{'model':_0xcb04('0xa'),'as':_0xcb04('0x14'),'attributes':['id',_0xcb04('0x10'),'content',_0xcb04('0x15'),'nameField',_0xcb04('0x16'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xcb04('0x2')]}]}]}]},'log':'GetZohoAccount'});};};
\ No newline at end of file
+var _0x0b42=['key','keyContent','Fields','type','idField','../../client','getZohoAccounts','Request','GetZohoAccount','host','zone','clientId','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','name','moduleCreate','description','ZohoField','Subjects','content','variableName','Variable','Descriptions'];(function(_0x43b100,_0x4eca73){var _0x205fbf=function(_0x5afa0f){while(--_0x5afa0f){_0x43b100['push'](_0x43b100['shift']());}};_0x205fbf(++_0x4eca73);}(_0x0b42,0xd5));var _0x20b4=function(_0x5990c6,_0x13d5a7){_0x5990c6=_0x5990c6-0x0;var _0x517776=_0x0b42[_0x5990c6];return _0x517776;};'use strict';var client=require(_0x20b4('0x0'));exports[_0x20b4('0x1')]=function(){return function(_0x329c71){return client[_0x20b4('0x2')](_0x20b4('0x3'),{'options':{'raw':![],'attributes':['id','name','description',_0x20b4('0x4'),_0x20b4('0x5'),_0x20b4('0x6'),'clientSecret',_0x20b4('0x7'),_0x20b4('0x8'),_0x20b4('0x9')],'include':[{'model':_0x20b4('0xa'),'as':_0x20b4('0xb'),'attributes':['id',_0x20b4('0xc'),_0x20b4('0xd'),'moduleSearch',_0x20b4('0xe')],'include':[{'model':_0x20b4('0xf'),'as':_0x20b4('0x10'),'attributes':['id','type',_0x20b4('0x11'),_0x20b4('0x12')],'include':[{'model':'Variable','as':_0x20b4('0x13'),'attributes':['id',_0x20b4('0xc')]}]},{'model':_0x20b4('0xf'),'as':_0x20b4('0x14'),'attributes':['id','type','content',_0x20b4('0x15'),'keyType',_0x20b4('0x16'),'variableName'],'include':[{'model':_0x20b4('0x13'),'as':_0x20b4('0x13'),'attributes':['id',_0x20b4('0xc')]}]},{'model':'ZohoField','as':_0x20b4('0x17'),'attributes':['id',_0x20b4('0x18'),_0x20b4('0x11'),_0x20b4('0x19'),'nameField','customField','variableName'],'include':[{'model':_0x20b4('0x13'),'as':'Variable','attributes':['id',_0x20b4('0xc')]}]}]}]},'log':'GetZohoAccount'});};};
\ No newline at end of file
index 892e09e..7032ea5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7f3=['lastAssignedTo','interface','TALKING','queuecallerleaveAt','seconds','inbound','calleridnum','exten','queue','agent','accountcode','toNumber','uniqueid','voiceDialReport','CreateMemberReport','membername','diff','starttime','endtime','outbound','dialstring','moment','util','voiceQueueReport','queuecallerexitAt','Request','voice','isNil','format'];(function(_0x25b5c1,_0x15f706){var _0x15cb0d=function(_0x269d4e){while(--_0x269d4e){_0x25b5c1['push'](_0x25b5c1['shift']());}};_0x15cb0d(++_0x15f706);}(_0xd7f3,0x1c8));var _0x3d7f=function(_0x333767,_0x3e6f9c){_0x333767=_0x333767-0x0;var _0x51661b=_0xd7f3[_0x333767];return _0x51661b;};'use strict';var moment=require(_0x3d7f('0x0'));var _=require('lodash');var util=require(_0x3d7f('0x1'));var client=require('../client');exports[_0x3d7f('0x2')]=function(_0x1f4b09){var _0x5aaf9b=_0x1f4b09['queuecallercompleteAt']||_0x1f4b09[_0x3d7f('0x3')];return client[_0x3d7f('0x4')]('CreateMemberReport',{'body':{'channel':_0x3d7f('0x5'),'membername':_0x1f4b09['lastAssignedTo'],'interface':_[_0x3d7f('0x6')](_0x1f4b09['interface'])?util[_0x3d7f('0x7')]('SIP/%s',_0x1f4b09[_0x3d7f('0x8')]):_0x1f4b09[_0x3d7f('0x9')],'type':_0x3d7f('0xa'),'enterAt':_0x1f4b09[_0x3d7f('0xb')],'exitAt':_0x5aaf9b,'duration':moment(_0x5aaf9b)['diff'](_0x1f4b09[_0x3d7f('0xb')],_0x3d7f('0xc')),'data1':_0x3d7f('0xd'),'data2':_0x1f4b09[_0x3d7f('0xe')],'data3':_0x1f4b09[_0x3d7f('0xf')],'data4':null,'data5':_0x1f4b09[_0x3d7f('0x10')],'role':_0x3d7f('0x11'),'internal':_0x1f4b09[_0x3d7f('0x12')]?_[_0x3d7f('0x13')](_0x1f4b09[_0x3d7f('0x12')]):undefined,'uniqueid':_0x1f4b09[_0x3d7f('0x14')]},'log':'CreateMemberReport'});};exports[_0x3d7f('0x15')]=function(_0x177d87){return client['Request'](_0x3d7f('0x16'),{'body':{'channel':'voice','membername':_0x177d87[_0x3d7f('0x17')],'interface':_0x177d87[_0x3d7f('0x9')],'type':_0x3d7f('0xa'),'enterAt':_0x177d87['starttime'],'exitAt':_0x177d87['endtime'],'duration':moment(_0x177d87['endtime'])[_0x3d7f('0x18')](_0x177d87[_0x3d7f('0x19')],_0x3d7f('0xc'))>=0x0?moment(_0x177d87[_0x3d7f('0x1a')])[_0x3d7f('0x18')](_0x177d87['starttime'],_0x3d7f('0xc')):null,'data1':_0x3d7f('0x1b'),'data2':_0x177d87[_0x3d7f('0x12')],'data3':_0x177d87[_0x3d7f('0xf')],'data4':_0x177d87[_0x3d7f('0x1c')]||null,'role':_0x3d7f('0x11'),'internal':_0x177d87[_0x3d7f('0x12')]?_[_0x3d7f('0x13')](_0x177d87[_0x3d7f('0x12')]):undefined,'uniqueid':_0x177d87[_0x3d7f('0x14')]},'log':'CreateMemberReport'});};
\ No newline at end of file
+var _0x518f=['seconds','inbound','calleridnum','agent','accountcode','toNumber','uniqueid','voice','membername','starttime','endtime','diff','outbound','exten','dialstring','moment','lodash','util','../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport','isNil','format','SIP/%s','lastAssignedTo','interface','TALKING','queuecallerleaveAt'];(function(_0x5bea65,_0x4318f9){var _0x4ee575=function(_0x332244){while(--_0x332244){_0x5bea65['push'](_0x5bea65['shift']());}};_0x4ee575(++_0x4318f9);}(_0x518f,0x126));var _0xf518=function(_0x4f46f1,_0x2a39b9){_0x4f46f1=_0x4f46f1-0x0;var _0x5e146b=_0x518f[_0x4f46f1];return _0x5e146b;};'use strict';var moment=require(_0xf518('0x0'));var _=require(_0xf518('0x1'));var util=require(_0xf518('0x2'));var client=require(_0xf518('0x3'));exports[_0xf518('0x4')]=function(_0x5a6093){var _0x3f5413=_0x5a6093[_0xf518('0x5')]||_0x5a6093[_0xf518('0x6')];return client[_0xf518('0x7')](_0xf518('0x8'),{'body':{'channel':'voice','membername':_0x5a6093['lastAssignedTo'],'interface':_[_0xf518('0x9')](_0x5a6093['interface'])?util[_0xf518('0xa')](_0xf518('0xb'),_0x5a6093[_0xf518('0xc')]):_0x5a6093[_0xf518('0xd')],'type':_0xf518('0xe'),'enterAt':_0x5a6093[_0xf518('0xf')],'exitAt':_0x3f5413,'duration':moment(_0x3f5413)['diff'](_0x5a6093[_0xf518('0xf')],_0xf518('0x10')),'data1':_0xf518('0x11'),'data2':_0x5a6093[_0xf518('0x12')],'data3':_0x5a6093['exten'],'data4':null,'data5':_0x5a6093['queue'],'role':_0xf518('0x13'),'internal':_0x5a6093[_0xf518('0x14')]?_[_0xf518('0x15')](_0x5a6093[_0xf518('0x14')]):undefined,'uniqueid':_0x5a6093[_0xf518('0x16')]},'log':_0xf518('0x8')});};exports['voiceDialReport']=function(_0x5e2bcc){return client['Request'](_0xf518('0x8'),{'body':{'channel':_0xf518('0x17'),'membername':_0x5e2bcc[_0xf518('0x18')],'interface':_0x5e2bcc['interface'],'type':_0xf518('0xe'),'enterAt':_0x5e2bcc[_0xf518('0x19')],'exitAt':_0x5e2bcc[_0xf518('0x1a')],'duration':moment(_0x5e2bcc[_0xf518('0x1a')])[_0xf518('0x1b')](_0x5e2bcc['starttime'],'seconds')>=0x0?moment(_0x5e2bcc[_0xf518('0x1a')])[_0xf518('0x1b')](_0x5e2bcc[_0xf518('0x19')],_0xf518('0x10')):null,'data1':_0xf518('0x1c'),'data2':_0x5e2bcc['accountcode'],'data3':_0x5e2bcc[_0xf518('0x1d')],'data4':_0x5e2bcc[_0xf518('0x1e')]||null,'role':_0xf518('0x13'),'internal':_0x5e2bcc[_0xf518('0x14')]?_[_0xf518('0x15')](_0x5e2bcc[_0xf518('0x14')]):undefined,'uniqueid':_0x5e2bcc[_0xf518('0x16')]},'log':_0xf518('0x8')});};
\ No newline at end of file
index 9e3259d..0a5bd8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedb4=['stopRecordingOnTransfer','GetSettings','getSettings','Request','ShowSetting'];(function(_0x1d5a7a,_0x268def){var _0x3a50b1=function(_0x54c4d2){while(--_0x54c4d2){_0x1d5a7a['push'](_0x1d5a7a['shift']());}};_0x3a50b1(++_0x268def);}(_0xedb4,0x156));var _0x4edb=function(_0x385467,_0x298239){_0x385467=_0x385467-0x0;var _0x5ed67e=_0xedb4[_0x385467];return _0x5ed67e;};'use strict';var client=require('../client');exports[_0x4edb('0x0')]=function(){return client[_0x4edb('0x1')](_0x4edb('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x4edb('0x3')]},'log':_0x4edb('0x4')});};
\ No newline at end of file
+var _0xee4e=['../client','getSettings','Request','stopRecordingOnTransfer','GetSettings'];(function(_0x2fc8a9,_0x5db275){var _0x5005fd=function(_0x515649){while(--_0x515649){_0x2fc8a9['push'](_0x2fc8a9['shift']());}};_0x5005fd(++_0x5db275);}(_0xee4e,0x122));var _0xeee4=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xee4e[_0x2a6809];return _0x11c371;};'use strict';var client=require(_0xeee4('0x0'));exports[_0xeee4('0x1')]=function(){return client[_0xeee4('0x2')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xeee4('0x3')]},'log':_0xeee4('0x4')});};
\ No newline at end of file
index 22bbff2..30c794f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa91=['GetTemplate','name','html','getTemplates'];(function(_0x526d14,_0x2f348d){var _0x46b222=function(_0x4fce0a){while(--_0x4fce0a){_0x526d14['push'](_0x526d14['shift']());}};_0x46b222(++_0x2f348d);}(_0xfa91,0x11b));var _0x1fa9=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xfa91[_0x167cc1];return _0x10bc4b;};'use strict';var client=require('../client');exports[_0x1fa9('0x0')]=function(_0x486091){return function(_0x271597){return client['Request'](_0x1fa9('0x1'),{'options':{'raw':!![],'attributes':['id',_0x1fa9('0x2'),_0x1fa9('0x3')]},'log':'GetTemplate'});};};
\ No newline at end of file
+var _0x3ec8=['GetTemplate','name','html','../client','getTemplates','Request'];(function(_0x22ce82,_0x574678){var _0x143aaf=function(_0x40ffd4){while(--_0x40ffd4){_0x22ce82['push'](_0x22ce82['shift']());}};_0x143aaf(++_0x574678);}(_0x3ec8,0x1c5));var _0x83ec=function(_0x3c9090,_0x4682ca){_0x3c9090=_0x3c9090-0x0;var _0x175790=_0x3ec8[_0x3c9090];return _0x175790;};'use strict';var client=require(_0x83ec('0x0'));exports[_0x83ec('0x1')]=function(_0x42c3f3){return function(_0x58c493){return client[_0x83ec('0x2')](_0x83ec('0x3'),{'options':{'raw':!![],'attributes':['id',_0x83ec('0x4'),_0x83ec('0x5')]},'log':_0x83ec('0x3')});};};
\ No newline at end of file
index 4366f73..2c7f406 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x172f=['action','data2','data3','data4','data5','data7','../client','getTriggers','Request','GetTrigger','channel','status','Condition','AllConditions','field','operator','value','Action','Actions'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x172f,0xd7));var _0xf172=function(_0x4a46ad,_0x5d0428){_0x4a46ad=_0x4a46ad-0x0;var _0x29ab8e=_0x172f[_0x4a46ad];return _0x29ab8e;};'use strict';var client=require(_0xf172('0x0'));exports[_0xf172('0x1')]=function(_0x2381e8){return function(_0x3a5cad){return client[_0xf172('0x2')](_0xf172('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xf172('0x4'),_0xf172('0x5')],'include':[{'model':_0xf172('0x6'),'as':_0xf172('0x7'),'attributes':['id',_0xf172('0x8'),_0xf172('0x9'),_0xf172('0xa')]},{'model':_0xf172('0x6'),'as':'AnyConditions','attributes':['id',_0xf172('0x8'),_0xf172('0x9'),'value']},{'model':_0xf172('0xb'),'as':_0xf172('0xc'),'attributes':['id',_0xf172('0xd'),'data1',_0xf172('0xe'),_0xf172('0xf'),_0xf172('0x10'),_0xf172('0x11'),'data6',_0xf172('0x12')]}]},'log':_0xf172('0x3')});};};
\ No newline at end of file
+var _0x0108=['Condition','AnyConditions','Action','Actions','action','data1','data2','data3','data4','data5','data7','../client','getTriggers','Request','name','status','AllConditions','field','operator','value'];(function(_0x315e91,_0x55e6c3){var _0x2b3b08=function(_0x4d6d3d){while(--_0x4d6d3d){_0x315e91['push'](_0x315e91['shift']());}};_0x2b3b08(++_0x55e6c3);}(_0x0108,0xbf));var _0x8010=function(_0x1daafa,_0x5562d5){_0x1daafa=_0x1daafa-0x0;var _0x421f30=_0x0108[_0x1daafa];return _0x421f30;};'use strict';var client=require(_0x8010('0x0'));exports[_0x8010('0x1')]=function(_0x524531){return function(_0x226616){return client[_0x8010('0x2')]('GetTrigger',{'options':{'raw':![],'attributes':['id',_0x8010('0x3'),'channel',_0x8010('0x4')],'include':[{'model':'Condition','as':_0x8010('0x5'),'attributes':['id',_0x8010('0x6'),_0x8010('0x7'),_0x8010('0x8')]},{'model':_0x8010('0x9'),'as':_0x8010('0xa'),'attributes':['id',_0x8010('0x6'),'operator','value']},{'model':_0x8010('0xb'),'as':_0x8010('0xc'),'attributes':['id',_0x8010('0xd'),_0x8010('0xe'),_0x8010('0xf'),_0x8010('0x10'),_0x8010('0x11'),_0x8010('0x12'),'data6',_0x8010('0x13')]}]},'log':'GetTrigger'});};};
\ No newline at end of file
index 8f43214..6b1244b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e19=['GetTrunk','../client','getTrunks','Request'];(function(_0x576ca4,_0x1e1550){var _0x3a4556=function(_0x407eea){while(--_0x407eea){_0x576ca4['push'](_0x576ca4['shift']());}};_0x3a4556(++_0x1e1550);}(_0x1e19,0x1c9));var _0x91e1=function(_0x1f8dc0,_0x3d20c7){_0x1f8dc0=_0x1f8dc0-0x0;var _0x53b469=_0x1e19[_0x1f8dc0];return _0x53b469;};'use strict';var client=require(_0x91e1('0x0'));exports[_0x91e1('0x1')]=function(_0x45fd92){return function(_0x44c681){return client[_0x91e1('0x2')]('GetTrunk',{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name','registry','defaultuser']},'log':_0x91e1('0x3')});};};
\ No newline at end of file
+var _0x5f7d=['defaultuser','../client','getTrunks','GetTrunk','name','registry'];(function(_0x32bc64,_0x13d382){var _0x5a38a8=function(_0x4356ca){while(--_0x4356ca){_0x32bc64['push'](_0x32bc64['shift']());}};_0x5a38a8(++_0x13d382);}(_0x5f7d,0x6d));var _0xd5f7=function(_0x179ef4,_0x6efb67){_0x179ef4=_0x179ef4-0x0;var _0x4ef972=_0x5f7d[_0x179ef4];return _0x4ef972;};'use strict';var client=require(_0xd5f7('0x0'));exports[_0xd5f7('0x1')]=function(_0x1a46e8){return function(_0x1109c7){return client['Request'](_0xd5f7('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xd5f7('0x3'),_0xd5f7('0x4'),_0xd5f7('0x5')]},'log':_0xd5f7('0x2')});};};
\ No newline at end of file
index f6b8e97..372d90c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['online','pauseType','Request','GetUser','agent','name','email','accountcode','lastLoginAt','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','telephone','internal','PauseUser','savePause','getAgent','ShowUser','fullname'];(function(_0x146c7f,_0x29ac20){var _0x5d578a=function(_0x517200){while(--_0x517200){_0x146c7f['push'](_0x146c7f['shift']());}};_0x5d578a(++_0x29ac20);}(_0x9c44,0x178));var _0x49c4=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x9c44[_0xfae23b];return _0x200640;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2')},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5'),'fullname','online',_0x49c4('0x6'),'pauseType',_0x49c4('0x7'),_0x49c4('0x8'),_0x49c4('0x9'),_0x49c4('0xa'),_0x49c4('0xb')]},'log':'getAgents'});};};exports[_0x49c4('0xc')]=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':!![],'where':{'role':_0x49c4('0xd')},'attributes':['id','name','accountcode',_0x49c4('0xe')]},'log':_0x49c4('0xc')});};};exports['savePause']=function(_0xb611a1,_0x459d09,_0x4adb3c){return client['Request'](_0x49c4('0xf'),{'body':{'type':_0x459d09,'uniqueid':_0x4adb3c},'options':{'where':{'id':_0xb611a1['id']}},'log':_0x49c4('0x10')});};exports['saveUnpause']=function(_0x7df3a9){return client[_0x49c4('0x0')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x7df3a9['id']}},'log':_0x49c4('0x10')});};exports[_0x49c4('0x11')]=function(_0x21f15a){return client[_0x49c4('0x0')](_0x49c4('0x12'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2'),'id':_0x21f15a},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),'accountcode',_0x49c4('0x13'),_0x49c4('0x14'),_0x49c4('0x6'),_0x49c4('0x15'),_0x49c4('0x7'),'voicePause',_0x49c4('0xb')]},'log':_0x49c4('0x11')});};
\ No newline at end of file
+var _0x9c44=['online','pauseType','Request','GetUser','agent','name','email','accountcode','lastLoginAt','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','telephone','internal','PauseUser','savePause','getAgent','ShowUser','fullname'];(function(_0x32ed5b,_0x207b27){var _0x465935=function(_0x359f51){while(--_0x359f51){_0x32ed5b['push'](_0x32ed5b['shift']());}};_0x465935(++_0x207b27);}(_0x9c44,0x178));var _0x49c4=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0x9c44[_0x550d12];return _0x12103d;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2')},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5'),'fullname','online',_0x49c4('0x6'),'pauseType',_0x49c4('0x7'),_0x49c4('0x8'),_0x49c4('0x9'),_0x49c4('0xa'),_0x49c4('0xb')]},'log':'getAgents'});};};exports[_0x49c4('0xc')]=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':!![],'where':{'role':_0x49c4('0xd')},'attributes':['id','name','accountcode',_0x49c4('0xe')]},'log':_0x49c4('0xc')});};};exports['savePause']=function(_0xb611a1,_0x459d09,_0x4adb3c){return client['Request'](_0x49c4('0xf'),{'body':{'type':_0x459d09,'uniqueid':_0x4adb3c},'options':{'where':{'id':_0xb611a1['id']}},'log':_0x49c4('0x10')});};exports['saveUnpause']=function(_0x7df3a9){return client[_0x49c4('0x0')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x7df3a9['id']}},'log':_0x49c4('0x10')});};exports[_0x49c4('0x11')]=function(_0x21f15a){return client[_0x49c4('0x0')](_0x49c4('0x12'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2'),'id':_0x21f15a},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),'accountcode',_0x49c4('0x13'),_0x49c4('0x14'),_0x49c4('0x6'),_0x49c4('0x15'),_0x49c4('0x7'),'voicePause',_0x49c4('0xb')]},'log':_0x49c4('0x11')});};
\ No newline at end of file
index 3df8e34..66034be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6789=['../client','CreateVoiceAgentReport','update','Request','UpdateVoiceAgentReport'];(function(_0x4b2436,_0x452299){var _0x4f5ab2=function(_0x5c6679){while(--_0x5c6679){_0x4b2436['push'](_0x4b2436['shift']());}};_0x4f5ab2(++_0x452299);}(_0x6789,0x1d6));var _0x9678=function(_0x279d78,_0x11513e){_0x279d78=_0x279d78-0x0;var _0x5233b8=_0x6789[_0x279d78];return _0x5233b8;};'use strict';var client=require(_0x9678('0x0'));exports['create']=function(_0x2e1977){return client['Request'](_0x9678('0x1'),{'body':_0x2e1977,'log':'CreateVoiceAgentReport'});};exports[_0x9678('0x2')]=function(_0x284d27,_0x95f6a7,_0x50ffa9){return client[_0x9678('0x3')](_0x9678('0x4'),{'body':_0x284d27,'options':{'where':{'uniqueid':_0x95f6a7,'interface':_0x50ffa9,'agentcomplete':!![]}},'log':_0x9678('0x4')});};
\ No newline at end of file
+var _0x7db7=['UpdateVoiceAgentReport','../client','Request','CreateVoiceAgentReport'];(function(_0x584dd7,_0x4e8ea0){var _0x4b6bae=function(_0x20f5cc){while(--_0x20f5cc){_0x584dd7['push'](_0x584dd7['shift']());}};_0x4b6bae(++_0x4e8ea0);}(_0x7db7,0xa5));var _0x77db=function(_0x5d1932,_0x3cf679){_0x5d1932=_0x5d1932-0x0;var _0x5181d0=_0x7db7[_0x5d1932];return _0x5181d0;};'use strict';var client=require(_0x77db('0x0'));exports['create']=function(_0x32d6cc){return client[_0x77db('0x1')](_0x77db('0x2'),{'body':_0x32d6cc,'log':_0x77db('0x2')});};exports['update']=function(_0x64a0a8,_0x23230a,_0x313f0d){return client['Request'](_0x77db('0x3'),{'body':_0x64a0a8,'options':{'where':{'uniqueid':_0x23230a,'interface':_0x313f0d,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
index 2868993..9512da5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf71e=['getVoiceCallReports','GetVoiceCallReport','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','type','disposition','duration','billableseconds','GetVoiceCallReports','moment','lodash','../client','create','Request','CreateVoiceCallReport','merge','context','callerid','DOCUMENTATION'];(function(_0x5a8aa5,_0x257a29){var _0x4fb2cd=function(_0x8f34b6){while(--_0x8f34b6){_0x5a8aa5['push'](_0x5a8aa5['shift']());}};_0x4fb2cd(++_0x257a29);}(_0xf71e,0x89));var _0xef71=function(_0xdd827a,_0x482ad2){_0xdd827a=_0xdd827a-0x0;var _0x2f46f1=_0xf71e[_0xdd827a];return _0x2f46f1;};'use strict';var moment=require(_0xef71('0x0'));var util=require('util');var _=require(_0xef71('0x1'));var client=require(_0xef71('0x2'));exports[_0xef71('0x3')]=function(_0x4ee52f){return client[_0xef71('0x4')](_0xef71('0x5'),{'body':_[_0xef71('0x6')](_0x4ee52f,{'source':_0x4ee52f['calleridnum'],'destinationcontext':_0x4ee52f[_0xef71('0x7')],'callerid':_0x4ee52f[_0xef71('0x8')],'amaflags':_0xef71('0x9')}),'log':_0xef71('0x5')});};exports[_0xef71('0xa')]=function(){return function(){return client[_0xef71('0x4')](_0xef71('0xb'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()['startOf'](_0xef71('0xc'))[_0xef71('0xd')](_0xef71('0xe')),moment()[_0xef71('0xf')](_0xef71('0xc'))[_0xef71('0xd')]('YYYY-MM-DD\x20HH:mm:ss')]}},'attributes':[_0xef71('0x10'),_0xef71('0x11'),_0xef71('0x12'),_0xef71('0x13')]},'log':_0xef71('0x14')});};};
\ No newline at end of file
+var _0x24e6=['GetVoiceCallReport','outbound','startOf','format','YYYY-MM-DD\x20HH:mm:ss','endOf','day','type','disposition','billableseconds','GetVoiceCallReports','util','../client','create','Request','CreateVoiceCallReport','merge','calleridnum','context','callerid','getVoiceCallReports'];(function(_0x1dd78c,_0x522162){var _0x37b054=function(_0x2ece12){while(--_0x2ece12){_0x1dd78c['push'](_0x1dd78c['shift']());}};_0x37b054(++_0x522162);}(_0x24e6,0xb3));var _0x624e=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x24e6[_0x397e5f];return _0x5302b8;};'use strict';var moment=require('moment');var util=require(_0x624e('0x0'));var _=require('lodash');var client=require(_0x624e('0x1'));exports[_0x624e('0x2')]=function(_0x427746){return client[_0x624e('0x3')](_0x624e('0x4'),{'body':_[_0x624e('0x5')](_0x427746,{'source':_0x427746[_0x624e('0x6')],'destinationcontext':_0x427746[_0x624e('0x7')],'callerid':_0x427746[_0x624e('0x8')],'amaflags':'DOCUMENTATION'}),'log':_0x624e('0x4')});};exports[_0x624e('0x9')]=function(){return function(){return client[_0x624e('0x3')](_0x624e('0xa'),{'options':{'where':{'type':[_0x624e('0xb')],'createdAt':{'$between':[moment()[_0x624e('0xc')]('day')[_0x624e('0xd')](_0x624e('0xe')),moment()[_0x624e('0xf')](_0x624e('0x10'))[_0x624e('0xd')]('YYYY-MM-DD\x20HH:mm:ss')]}},'attributes':[_0x624e('0x11'),_0x624e('0x12'),'duration',_0x624e('0x13')]},'log':_0x624e('0x14')});};};
\ No newline at end of file
index c41642d..b75e45f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x708d=['Request','CreateVoiceDialReport','../client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x708d,0x143));var _0xd708=function(_0x1f5236,_0xea7afc){_0x1f5236=_0x1f5236-0x0;var _0x2efe18=_0x708d[_0x1f5236];return _0x2efe18;};'use strict';var client=require(_0xd708('0x0'));exports['create']=function(_0x44ad5b){return client[_0xd708('0x1')]('CreateVoiceDialReport',{'body':_0x44ad5b,'log':_0xd708('0x2')});};
\ No newline at end of file
+var _0x4260=['../client','create'];(function(_0x15ec4e,_0x40b7e0){var _0xb5e5dd=function(_0x42bdd7){while(--_0x42bdd7){_0x15ec4e['push'](_0x15ec4e['shift']());}};_0xb5e5dd(++_0x40b7e0);}(_0x4260,0x1a8));var _0x0426=function(_0x43beb4,_0x20daf4){_0x43beb4=_0x43beb4-0x0;var _0x5a4267=_0x4260[_0x43beb4];return _0x5a4267;};'use strict';var client=require(_0x0426('0x0'));exports[_0x0426('0x1')]=function(_0x163578){return client['Request']('CreateVoiceDialReport',{'body':_0x163578,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
index 14f2324..bf37c64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf1d=['getVoiceExtensions','Request','GetVoiceExtension','recordingFormat','../client'];(function(_0x5e7ce2,_0x2e5851){var _0x1f096b=function(_0x52153c){while(--_0x52153c){_0x5e7ce2['push'](_0x5e7ce2['shift']());}};_0x1f096b(++_0x2e5851);}(_0xaf1d,0x9f));var _0xdaf1=function(_0x312e64,_0x41ba1c){_0x312e64=_0x312e64-0x0;var _0x45872e=_0xaf1d[_0x312e64];return _0x45872e;};'use strict';var client=require(_0xdaf1('0x0'));exports[_0xdaf1('0x1')]=function(){return function(){return client[_0xdaf1('0x2')](_0xdaf1('0x3'),{'options':{'raw':!![],'attributes':['id','exten',_0xdaf1('0x4')],'where':{'VoiceExtensionId':null}},'log':_0xdaf1('0x1')});};};
\ No newline at end of file
+var _0x26c2=['GetVoiceExtension','exten','recordingFormat','getVoiceExtensions'];(function(_0x41d432,_0x20e878){var _0x1650f9=function(_0x27f177){while(--_0x27f177){_0x41d432['push'](_0x41d432['shift']());}};_0x1650f9(++_0x20e878);}(_0x26c2,0x130));var _0x226c=function(_0x32659a,_0x8d9871){_0x32659a=_0x32659a-0x0;var _0x1ebbea=_0x26c2[_0x32659a];return _0x1ebbea;};'use strict';var client=require('../client');exports['getVoiceExtensions']=function(){return function(){return client['Request'](_0x226c('0x0'),{'options':{'raw':!![],'attributes':['id',_0x226c('0x1'),_0x226c('0x2')],'where':{'VoiceExtensionId':null}},'log':_0x226c('0x3')});};};
\ No newline at end of file
index d22accd..9fc94e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29b1=['timeout','dialRecallMeTimeout','dialOrderByScheduledAt','dialAgiAfterHangupClient','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','Trunk','active','mandatoryDispositionPause','callerid','Interval','interval','getVoiceQueues','Request','GetVoiceQueue','name','acw','acwTimeout','autopause','monitor_format','type','dialActive','dialMethod','dialLimitChannel','dialPowerLevel','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateTimeout','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialGlobalInterval','dialPrefix','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0x29b1,0x13b));var _0x129b=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x29b1[_0x173441];return _0x2423a8;};'use strict';var client=require('../client');exports['getVoiceQueues']=function(){return function(){return client[_0x129b('0x0')](_0x129b('0x1'),{'options':{'raw':![],'attributes':['id',_0x129b('0x2'),_0x129b('0x3'),_0x129b('0x4'),_0x129b('0x5'),_0x129b('0x6'),_0x129b('0x7'),_0x129b('0x8'),_0x129b('0x9'),_0x129b('0xa'),'dialLimitQueue',_0x129b('0xb'),'dialPredictiveOptimization',_0x129b('0xc'),_0x129b('0xd'),'dialOriginateCallerIdName','dialOriginateCallerIdNumber',_0x129b('0xe'),'dialQueueOptions',_0x129b('0xf'),_0x129b('0x10'),_0x129b('0x11'),_0x129b('0x12'),_0x129b('0x13'),_0x129b('0x14'),'dialNoAnswerMaxRetry',_0x129b('0x15'),_0x129b('0x16'),'dialTimezone',_0x129b('0x17'),_0x129b('0x18'),'dialCheckDuplicateType',_0x129b('0x19'),_0x129b('0x1a'),_0x129b('0x1b'),_0x129b('0x1c'),_0x129b('0x1d'),'dialAMDMinWordLength',_0x129b('0x1e'),_0x129b('0x1f'),_0x129b('0x20'),'dialAMDMaximumWordLength',_0x129b('0x21'),_0x129b('0x22'),'dialRecallInQueue',_0x129b('0x23'),'dialAgiAfterHangupAgent',_0x129b('0x24'),_0x129b('0x25'),_0x129b('0x6'),_0x129b('0x26'),_0x129b('0x27'),_0x129b('0x28'),'dialNoSuchNumberMaxRetry',_0x129b('0x29'),_0x129b('0x2a'),'dialDropRetryFrequency',_0x129b('0x2b'),_0x129b('0x2c'),_0x129b('0x2d'),_0x129b('0x2e'),_0x129b('0x2f'),_0x129b('0x30'),'mandatoryDisposition',_0x129b('0x31'),_0x129b('0x32'),'dialPreviewAutoRecallMe'],'include':[{'model':_0x129b('0x33'),'as':'Trunk','attributes':['id',_0x129b('0x2'),'callerid',_0x129b('0x34')]},{'model':'Pause','as':_0x129b('0x35'),'attributes':['id',_0x129b('0x2')]},{'model':_0x129b('0x33'),'as':'TrunkBackup','attributes':['id',_0x129b('0x2'),_0x129b('0x36'),_0x129b('0x34')]},{'model':'Interval','as':'Interval','attributes':['id',_0x129b('0x2')],'include':[{'model':_0x129b('0x37'),'as':'Intervals','attributes':['id',_0x129b('0x2'),_0x129b('0x38')]}]}]},'log':_0x129b('0x39')});};};
\ No newline at end of file
+var _0xf494=['dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalInterval','dialPrefix','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','strategy','dialRandomLastDigitCallerIdNumber','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','Trunk','active','Pause','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','interval','../client','getVoiceQueues','Request','name','acw','acwTimeout','autopause','monitor_format','type','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout'];(function(_0x10690f,_0x2b9f94){var _0x421583=function(_0x6f246b){while(--_0x6f246b){_0x10690f['push'](_0x10690f['shift']());}};_0x421583(++_0x2b9f94);}(_0xf494,0x1c6));var _0x4f49=function(_0x3eb8a8,_0x2af5e9){_0x3eb8a8=_0x3eb8a8-0x0;var _0x173073=_0xf494[_0x3eb8a8];return _0x173073;};'use strict';var client=require(_0x4f49('0x0'));exports[_0x4f49('0x1')]=function(){return function(){return client[_0x4f49('0x2')]('GetVoiceQueue',{'options':{'raw':![],'attributes':['id',_0x4f49('0x3'),_0x4f49('0x4'),_0x4f49('0x5'),_0x4f49('0x6'),_0x4f49('0x7'),_0x4f49('0x8'),_0x4f49('0x9'),_0x4f49('0xa'),_0x4f49('0xb'),_0x4f49('0xc'),_0x4f49('0xd'),'dialPredictiveOptimization','dialPredictiveOptimizationPercentage',_0x4f49('0xe'),_0x4f49('0xf'),_0x4f49('0x10'),_0x4f49('0x11'),_0x4f49('0x12'),_0x4f49('0x13'),_0x4f49('0x14'),_0x4f49('0x15'),'dialCongestionRetryFrequency',_0x4f49('0x16'),_0x4f49('0x17'),'dialNoAnswerMaxRetry',_0x4f49('0x18'),'dialGlobalMaxRetry','dialTimezone',_0x4f49('0x19'),_0x4f49('0x1a'),'dialCheckDuplicateType',_0x4f49('0x1b'),_0x4f49('0x1c'),_0x4f49('0x1d'),_0x4f49('0x1e'),_0x4f49('0x1f'),_0x4f49('0x20'),_0x4f49('0x21'),'dialAMDMaximumNumberOfWords',_0x4f49('0x22'),_0x4f49('0x23'),_0x4f49('0x24'),'dialRecallMeTimeout','dialRecallInQueue',_0x4f49('0x25'),_0x4f49('0x26'),_0x4f49('0x27'),'dialQueueProject2',_0x4f49('0x7'),_0x4f49('0x28'),_0x4f49('0x29'),'dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry',_0x4f49('0x2a'),_0x4f49('0x2b'),_0x4f49('0x2c'),_0x4f49('0x2d'),'dialMachineRetryFrequency',_0x4f49('0x2e'),_0x4f49('0x2f'),_0x4f49('0x30'),_0x4f49('0x31'),_0x4f49('0x32'),'dialPreviewAutoRecallMe'],'include':[{'model':_0x4f49('0x33'),'as':_0x4f49('0x33'),'attributes':['id',_0x4f49('0x3'),'callerid',_0x4f49('0x34')]},{'model':_0x4f49('0x35'),'as':_0x4f49('0x36'),'attributes':['id',_0x4f49('0x3')]},{'model':_0x4f49('0x33'),'as':_0x4f49('0x37'),'attributes':['id','name','callerid',_0x4f49('0x34')]},{'model':_0x4f49('0x38'),'as':'Interval','attributes':['id',_0x4f49('0x3')],'include':[{'model':_0x4f49('0x38'),'as':_0x4f49('0x39'),'attributes':['id','name',_0x4f49('0x3a')]}]}]},'log':_0x4f49('0x1')});};};
\ No newline at end of file
index 2851760..7e30cc2 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(_0x2d1ab0,_0xa2dcf4){var _0xb15680=function(_0x37bb2e){while(--_0x37bb2e){_0x2d1ab0['push'](_0x2d1ab0['shift']());}};_0xb15680(++_0xa2dcf4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xa9e0[_0x12d033];return _0x3b4e80;};'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(_0x469f5e,_0x8f7674){var _0x4d4d20=function(_0x258b0b){while(--_0x258b0b){_0x469f5e['push'](_0x469f5e['shift']());}};_0x4d4d20(++_0x8f7674);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'use strict';var moment=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var client=require(_0x0a9e('0x2'));exports['create']=function(_0x550fbc){return client[_0x0a9e('0x3')]('CreateVoiceQueueReport',{'body':_0x550fbc,'log':_0x0a9e('0x4')});};exports[_0x0a9e('0x5')]=function(){return function(){return client[_0x0a9e('0x3')](_0x0a9e('0x6'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0a9e('0x7')]('day')[_0x0a9e('0x8')](_0x0a9e('0x9')),moment()[_0x0a9e('0xa')]('day')['format'](_0x0a9e('0x9'))]}},'attributes':['uniqueid','queue',_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),_0x0a9e('0x10'),'queuecallerabandon','queuecallerabandonAt']},'log':'GetVoiceQueueReports'});};};
\ No newline at end of file
index 0ef2bca..685d721 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35bf=['../client','getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses'];(function(_0x3517f1,_0x25cd0c){var _0xa091bd=function(_0x2a4218){while(--_0x2a4218){_0x3517f1['push'](_0x3517f1['shift']());}};_0xa091bd(++_0x25cd0c);}(_0x35bf,0xac));var _0xf35b=function(_0x4939da,_0x56d6c9){_0x4939da=_0x4939da-0x0;var _0x2a4e57=_0x35bf[_0x4939da];return _0x2a4e57;};'use strict';var client=require(_0xf35b('0x0'));exports[_0xf35b('0x1')]=function(_0x3007bc){return function(){return client[_0xf35b('0x2')](_0xf35b('0x3'),{'options':{'where':{'VoiceQueueId':_0x3007bc,'paused':!![]},'raw':!![]},'log':_0xf35b('0x1')});};};
\ No newline at end of file
+var _0x78cd=['getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses'];(function(_0x22c6b1,_0x4d9813){var _0x2aeb05=function(_0x2254d0){while(--_0x2254d0){_0x22c6b1['push'](_0x22c6b1['shift']());}};_0x2aeb05(++_0x4d9813);}(_0x78cd,0x18c));var _0xd78c=function(_0x3d9e8f,_0x197be8){_0x3d9e8f=_0x3d9e8f-0x0;var _0x52dd70=_0x78cd[_0x3d9e8f];return _0x52dd70;};'use strict';var client=require('../client');exports[_0xd78c('0x0')]=function(_0x58f6dd){return function(){return client[_0xd78c('0x1')](_0xd78c('0x2'),{'options':{'where':{'VoiceQueueId':_0x58f6dd,'paused':!![]},'raw':!![]},'log':_0xd78c('0x0')});};};
\ No newline at end of file
index c1be30b..e950b7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x16bf4d,_0x4cf786){var _0xf916ad=function(_0x542101){while(--_0x542101){_0x16bf4d['push'](_0x16bf4d['shift']());}};_0xf916ad(++_0x4cf786);}(_0x7a54,0x106));var _0x47a5=function(_0x468e32,_0x51c766){_0x468e32=_0x468e32-0x0;var _0x29f0a4=_0x7a54[_0x468e32];return _0x29f0a4;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
+var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x434e89,_0x132188){var _0x3e9a66=function(_0x4946ee){while(--_0x4946ee){_0x434e89['push'](_0x434e89['shift']());}};_0x3e9a66(++_0x132188);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
index 78c0554..7751515 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d77=['transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereelinkedid','context','blind','result','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransferercontext','../client','blindTransfer','Request','CreateVoiceTransferReport','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transferercontext','transfererexten','transfereechannel','transfereecalleridname'];(function(_0x251e8c,_0x277c33){var _0x1e0c1d=function(_0x20b89c){while(--_0x20b89c){_0x251e8c['push'](_0x251e8c['shift']());}};_0x1e0c1d(++_0x277c33);}(_0x2d77,0x83));var _0x72d7=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x2d77[_0x6c993a];return _0x27f547;};'use strict';var client=require(_0x72d7('0x0'));exports['transfers']={};exports[_0x72d7('0x1')]=function(_0x5ebb8b){return client[_0x72d7('0x2')](_0x72d7('0x3'),{'body':{'result':_0x5ebb8b['result'],'transfererchannel':_0x5ebb8b[_0x72d7('0x4')],'transferercalleridnum':_0x5ebb8b[_0x72d7('0x5')],'transferercalleridname':_0x5ebb8b[_0x72d7('0x6')],'transfererconnectedlinenum':_0x5ebb8b[_0x72d7('0x7')],'transfererconnectedlinename':_0x5ebb8b[_0x72d7('0x8')],'transfereraccountcode':_0x5ebb8b['transfereraccountcode'],'transferercontext':_0x5ebb8b[_0x72d7('0x9')],'transfererexten':_0x5ebb8b[_0x72d7('0xa')],'transfererlinkedid':_0x5ebb8b['transfererlinkedid'],'transfereechannel':_0x5ebb8b[_0x72d7('0xb')],'transfereecalleridnum':_0x5ebb8b['transfereecalleridnum'],'transfereecalleridname':_0x5ebb8b[_0x72d7('0xc')],'transfereeconnectedlinenum':_0x5ebb8b[_0x72d7('0xd')],'transfereeconnectedlinename':_0x5ebb8b[_0x72d7('0xe')],'transfereeaccountcode':_0x5ebb8b[_0x72d7('0xf')],'transfereecontext':_0x5ebb8b[_0x72d7('0x10')],'transfereeexten':_0x5ebb8b['transfereeexten'],'transfereelinkedid':_0x5ebb8b[_0x72d7('0x11')],'isexternal':_0x5ebb8b['isexternal'],'context':_0x5ebb8b[_0x72d7('0x12')],'extension':_0x5ebb8b['extension'],'type':_0x72d7('0x13')},'log':'CreateVoiceTransferReport'});};exports['attendedTransfer']=function(_0x11e850){return client[_0x72d7('0x2')](_0x72d7('0x3'),{'body':{'result':_0x11e850[_0x72d7('0x14')],'transfererchannel':_0x11e850['origtransfererchannel'],'transferercalleridnum':_0x11e850['origtransferercalleridnum'],'transferercalleridname':_0x11e850['origtransferercalleridname'],'transfererconnectedlinenum':_0x11e850[_0x72d7('0x15')],'transfererconnectedlinename':_0x11e850[_0x72d7('0x16')],'transfereraccountcode':_0x11e850['origtransfereraccountcode'],'transferercontext':_0x11e850[_0x72d7('0x17')],'transfererexten':_0x11e850[_0x72d7('0x18')],'transfererlinkedid':_0x11e850[_0x72d7('0x19')],'transfereechannel':_0x11e850[_0x72d7('0x1a')],'transfereecalleridnum':_0x11e850[_0x72d7('0x1b')],'transfereecalleridname':_0x11e850[_0x72d7('0x1c')],'transfereeconnectedlinenum':_0x11e850[_0x72d7('0x1d')],'transfereeconnectedlinename':_0x11e850[_0x72d7('0x1e')],'transfereeaccountcode':_0x11e850[_0x72d7('0x1f')],'transfereecontext':_0x11e850[_0x72d7('0x20')],'transfereeexten':_0x11e850[_0x72d7('0x21')],'transfereelinkedid':_0x11e850[_0x72d7('0x22')],'isexternal':_0x11e850['isexternal'],'context':_0x11e850[_0x72d7('0x23')],'extension':_0x11e850['origtransfererexten'],'type':'attended'},'log':_0x72d7('0x3')});};
\ No newline at end of file
+var _0x27fe=['transfereecalleridname','transfereeconnectedlinenum','transfereeaccountcode','transfereecontext','transfereeexten','isexternal','context','extension','blind','attendedTransfer','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinename','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetexten','transfertargetlinkedid','origtransferercontext','origtransfererexten','attended','../client','transfers','blindTransfer','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinename','transfererexten','transfereechannel'];(function(_0x48a237,_0x3f4b59){var _0x280fc4=function(_0x237dd4){while(--_0x237dd4){_0x48a237['push'](_0x48a237['shift']());}};_0x280fc4(++_0x3f4b59);}(_0x27fe,0x66));var _0xe27f=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0x27fe[_0x3c2a69];return _0x596bc8;};'use strict';var client=require(_0xe27f('0x0'));exports[_0xe27f('0x1')]={};exports[_0xe27f('0x2')]=function(_0x271b76){return client[_0xe27f('0x3')](_0xe27f('0x4'),{'body':{'result':_0x271b76[_0xe27f('0x5')],'transfererchannel':_0x271b76[_0xe27f('0x6')],'transferercalleridnum':_0x271b76[_0xe27f('0x7')],'transferercalleridname':_0x271b76[_0xe27f('0x8')],'transfererconnectedlinenum':_0x271b76['transfererconnectedlinenum'],'transfererconnectedlinename':_0x271b76[_0xe27f('0x9')],'transfereraccountcode':_0x271b76['transfereraccountcode'],'transferercontext':_0x271b76['transferercontext'],'transfererexten':_0x271b76[_0xe27f('0xa')],'transfererlinkedid':_0x271b76['transfererlinkedid'],'transfereechannel':_0x271b76[_0xe27f('0xb')],'transfereecalleridnum':_0x271b76['transfereecalleridnum'],'transfereecalleridname':_0x271b76[_0xe27f('0xc')],'transfereeconnectedlinenum':_0x271b76[_0xe27f('0xd')],'transfereeconnectedlinename':_0x271b76['transfereeconnectedlinename'],'transfereeaccountcode':_0x271b76[_0xe27f('0xe')],'transfereecontext':_0x271b76[_0xe27f('0xf')],'transfereeexten':_0x271b76[_0xe27f('0x10')],'transfereelinkedid':_0x271b76['transfereelinkedid'],'isexternal':_0x271b76[_0xe27f('0x11')],'context':_0x271b76[_0xe27f('0x12')],'extension':_0x271b76[_0xe27f('0x13')],'type':_0xe27f('0x14')},'log':_0xe27f('0x4')});};exports[_0xe27f('0x15')]=function(_0x44e647){return client[_0xe27f('0x3')](_0xe27f('0x4'),{'body':{'result':_0x44e647[_0xe27f('0x5')],'transfererchannel':_0x44e647['origtransfererchannel'],'transferercalleridnum':_0x44e647[_0xe27f('0x16')],'transferercalleridname':_0x44e647[_0xe27f('0x17')],'transfererconnectedlinenum':_0x44e647['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x44e647[_0xe27f('0x18')],'transfereraccountcode':_0x44e647['origtransfereraccountcode'],'transferercontext':_0x44e647['secondtransferercontext'],'transfererexten':_0x44e647[_0xe27f('0x19')],'transfererlinkedid':_0x44e647[_0xe27f('0x1a')],'transfereechannel':_0x44e647[_0xe27f('0x1b')],'transfereecalleridnum':_0x44e647[_0xe27f('0x1c')],'transfereecalleridname':_0x44e647[_0xe27f('0x1d')],'transfereeconnectedlinenum':_0x44e647[_0xe27f('0x1e')],'transfereeconnectedlinename':_0x44e647[_0xe27f('0x1f')],'transfereeaccountcode':_0x44e647[_0xe27f('0x20')],'transfereecontext':_0x44e647['transfertargetcontext'],'transfereeexten':_0x44e647[_0xe27f('0x21')],'transfereelinkedid':_0x44e647[_0xe27f('0x22')],'isexternal':_0x44e647[_0xe27f('0x11')],'context':_0x44e647[_0xe27f('0x23')],'extension':_0x44e647[_0xe27f('0x24')],'type':_0xe27f('0x25')},'log':_0xe27f('0x4')});};
\ No newline at end of file
index 5269600..a7dc231 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf69c=['predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','active','callerid','Interval','length','omit','undefined','voicechannel','map','find','channels','uniqueid','%s.%s','filename','wav','MixMonitor','channel','ai(mixmonitorid)','/var/spool/asterisk/monitor/','toLowerCase','isNil','YYYY-MM-DD\x20HH:mm:ss','rec','status','MixMonitor\x20Success','mixmonitorid','resolve','StopMixMonitor','destinationchannel','stop','monitors','StopMixMonitor\x20Success','values','queueChannels','Channel\x20doesn\x27t\x20exist','voicequeuechannelhangup','Hangup','voicequeuechannelredirect','Redirect','exten','context','trunks','outboundChannels','event','emit','custom:','faxAccounts','send','server','http','127.0.0.1','RPC\x20listening\x20on\x20port:','lodash','jayson/promise','validate','moment','../properties','listen','format','SIP','name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','QueuePause','username','join','pick','keys','module','Reload','Action','message','catch','error','isConnected','asterisk','ami\x20disconnected','command','action','Command','then','content','hasOwnProperty','voiceQueues','strategy','answered','available','loggedIn','pTalking','sumHoldTime','talking','total','type','abandoned','waiting','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable'];(function(_0x1b12f5,_0x30a625){var _0x3bcd61=function(_0xbe981a){while(--_0xbe981a){_0x1b12f5['push'](_0x1b12f5['shift']());}};_0x3bcd61(++_0x30a625);}(_0xf69c,0x151));var _0xcf69=function(_0x3e57ef,_0x388fab){_0x3e57ef=_0x3e57ef-0x0;var _0x5ade66=_0xf69c[_0x3e57ef];return _0x5ade66;};'use strict';var _=require(_0xcf69('0x0'));var util=require('util');var jayson=require(_0xcf69('0x1'));var schema=require(_0xcf69('0x2'));var BPromise=require('bluebird');var moment=require(_0xcf69('0x3'));var config=require('../../../config/environment');var properties=require(_0xcf69('0x4'));var ami=require('../ami');exports[_0xcf69('0x5')]=function(_0x4d8180,_0x1c813d,_0x168197){return new BPromise(function(_0x225c65,_0x35aa67){var _0x3b7608={'QueuePause':function(_0x5f1e98){return new Promise(function(_0x38478c,_0xbeb916){var _0x46b433=util[_0xcf69('0x6')]('%s/%s',_0xcf69('0x7'),_0x5f1e98[_0xcf69('0x8')]);if(_0x4d8180[_0xcf69('0x9')]&&_0x4d8180[_0xcf69('0x9')][_0x46b433]&&_0x4d8180[_0xcf69('0x9')][_0x46b433][_0xcf69('0xa')]){_0x4d8180['timers'][_0x46b433][_0xcf69('0xb')]();}if(_0x4d8180['agents'][_0x46b433]){_0x4d8180[_0xcf69('0xc')][_0x46b433][_0xcf69('0xd')]({'statePause':_0x5f1e98[_0xcf69('0xe')]?!![]:![]});}_0x38478c({'code':0xc8,'message':_0xcf69('0xf')});});},'Reload':function(_0x329250){var _0x2981ab=this;return new Promise(function(_0x182dde,_0x34e299){if(ami['isConnected']()==![]){return _0x34e299(_0x2981ab['error'](0x1f4,[config['asterisk']['ip'],config['asterisk'][_0xcf69('0x10')],'ami\x20disconnected'][_0xcf69('0x11')]('\x20')));}_0x329250=_[_0xcf69('0x12')](_0x329250,_[_0xcf69('0x13')](properties[_0xcf69('0x14')]));_0x329250['action']=_0xcf69('0x15');return ami[_0xcf69('0x16')](_0x329250)['then'](function(_0x486e06){_0x182dde({'code':0xc8,'message':_0x486e06[_0xcf69('0x17')]});})[_0xcf69('0x18')](function(_0x39306a){_0x34e299(_0x2981ab[_0xcf69('0x19')](0x1f5,_0x39306a[_0xcf69('0x17')]));});});},'Command':function(_0xfd30d2){var _0x120980=this;return new Promise(function(_0x210630,_0x53666e){if(ami[_0xcf69('0x1a')]()==![]){return _0x53666e(_0x120980['error'](0x1f4,[config[_0xcf69('0x1b')]['ip'],config[_0xcf69('0x1b')][_0xcf69('0x10')],_0xcf69('0x1c')][_0xcf69('0x11')]('\x20')));}_0xfd30d2=_[_0xcf69('0x12')](_0xfd30d2,_0xcf69('0x1d'));_0xfd30d2[_0xcf69('0x1e')]=_0xcf69('0x1f');return ami[_0xcf69('0x16')](_0xfd30d2)[_0xcf69('0x20')](function(_0x7d86bc){_0x210630({'code':0xc8,'message':_0x7d86bc[_0xcf69('0x21')]});})[_0xcf69('0x18')](function(_0x3ec2fb){_0x53666e(_0x120980['error'](0x1f5,_0x3ec2fb[_0xcf69('0x17')]));});});},'VoiceQueues':function(_0x1abce9){return new Promise(function(_0x183067,_0x278ce3){var _0x9a006b=[];for(var _0x1a0b33 in _0x4d8180['voiceQueues']){if(_0x4d8180['voiceQueues'][_0xcf69('0x22')](_0x1a0b33)){var _0x59de98=_0x4d8180[_0xcf69('0x23')][_0x1a0b33];var _0x81a49f={'id':_0x59de98['id'],'name':_0x59de98[_0xcf69('0x8')],'strategy':_0x59de98[_0xcf69('0x24')],'answered':_0x59de98[_0xcf69('0x25')],'available':_0x59de98[_0xcf69('0x26')],'loggedIn':_0x59de98[_0xcf69('0x27')],'pTalking':_0x59de98[_0xcf69('0x28')],'sumBillable':_0x59de98['sumBillable'],'sumDuration':_0x59de98['sumDuration'],'sumHoldTime':_0x59de98[_0xcf69('0x29')]||0x0,'talking':_0x59de98[_0xcf69('0x2a')],'total':_0x59de98[_0xcf69('0x2b')],'type':_0x59de98[_0xcf69('0x2c')],'unmanaged':_0x59de98['unmanaged'],'abandoned':_0x59de98[_0xcf69('0x2d')],'waiting':_0x59de98[_0xcf69('0x2e')],'loggedInDb':_0x59de98[_0xcf69('0x2f')]};if(_0x59de98[_0xcf69('0x2c')]===_0xcf69('0x30')){_0x81a49f[_0xcf69('0x31')]=_0x59de98[_0xcf69('0x31')];_0x81a49f[_0xcf69('0x32')]=_0x59de98[_0xcf69('0x32')];_0x81a49f[_0xcf69('0x33')]=_0x59de98['dialOriginateCallerIdName'];_0x81a49f[_0xcf69('0x34')]=_0x59de98['dialOriginateCallerIdNumber'];_0x81a49f[_0xcf69('0x35')]=_0x59de98[_0xcf69('0x35')];_0x81a49f[_0xcf69('0x36')]=_0x59de98[_0xcf69('0x36')];_0x81a49f[_0xcf69('0x37')]=_0x59de98[_0xcf69('0x37')];_0x81a49f[_0xcf69('0x38')]=_0x59de98[_0xcf69('0x38')];_0x81a49f[_0xcf69('0x39')]=_0x59de98[_0xcf69('0x39')];_0x81a49f['outboundBlacklistCallsDay']=_0x59de98[_0xcf69('0x3a')];_0x81a49f[_0xcf69('0x3b')]=_0x59de98['outboundBusyCallsDay'];_0x81a49f[_0xcf69('0x3c')]=_0x59de98['outboundCongestionCallsDay'];_0x81a49f[_0xcf69('0x3d')]=_0x59de98['outboundDropCallsDayACS'];_0x81a49f['outboundDropCallsDayCallersExit']=_0x59de98[_0xcf69('0x3e')];_0x81a49f[_0xcf69('0x3f')]=_0x59de98[_0xcf69('0x3f')];_0x81a49f[_0xcf69('0x40')]=_0x59de98[_0xcf69('0x40')];_0x81a49f[_0xcf69('0x41')]=_0x59de98['outboundNoSuchCallsDay'];_0x81a49f['outboundOriginateFailureCallsDay']=_0x59de98[_0xcf69('0x42')];_0x81a49f[_0xcf69('0x43')]=_0x59de98[_0xcf69('0x43')];_0x81a49f[_0xcf69('0x44')]=_0x59de98[_0xcf69('0x44')];_0x81a49f[_0xcf69('0x45')]=_0x59de98[_0xcf69('0x45')];_0x81a49f[_0xcf69('0x46')]=_0x59de98[_0xcf69('0x46')];_0x81a49f[_0xcf69('0x47')]=_0x59de98[_0xcf69('0x47')];_0x81a49f[_0xcf69('0x48')]=_0x59de98[_0xcf69('0x48')];_0x81a49f[_0xcf69('0x49')]=_0x59de98[_0xcf69('0x49')];_0x81a49f[_0xcf69('0x4a')]=_0x59de98[_0xcf69('0x4a')];_0x81a49f[_0xcf69('0x4b')]=_0x59de98[_0xcf69('0x4b')];_0x81a49f[_0xcf69('0x4c')]=_0x59de98[_0xcf69('0x4c')];_0x81a49f['predictiveIntervalHitRate']=_0x59de98['predictiveIntervalHitRate'];_0x81a49f[_0xcf69('0x4d')]=_0x59de98[_0xcf69('0x4d')];_0x81a49f[_0xcf69('0x4e')]=_0x59de98[_0xcf69('0x4e')];_0x81a49f['predictiveIntervalAvailable']=_0x59de98[_0xcf69('0x4f')];_0x81a49f[_0xcf69('0x50')]=_0x59de98[_0xcf69('0x50')];_0x81a49f[_0xcf69('0x17')]=_0x59de98[_0xcf69('0x17')];_0x81a49f['originated']=_0x59de98[_0xcf69('0x51')];_0x81a49f[_0xcf69('0x52')]=_0x59de98['erlangCalls'];_0x81a49f[_0xcf69('0x53')]=_0x59de98[_0xcf69('0x53')];_0x81a49f[_0xcf69('0x54')]=_0x59de98['erlangAbandonmentRate'];_0x81a49f[_0xcf69('0x55')]=_0x59de98['erlangBusyFactor'];_0x81a49f[_0xcf69('0x56')]=_0x59de98[_0xcf69('0x56')];_0x81a49f['startProgressive']=_0x59de98['startProgressive'];}if(_0x59de98[_0xcf69('0x57')]){_0x81a49f[_0xcf69('0x57')]={'id':_0x59de98[_0xcf69('0x57')]['id'],'name':_0x59de98['Trunk']['name'],'active':_0x59de98[_0xcf69('0x57')][_0xcf69('0x58')],'callerid':_0x59de98['Trunk'][_0xcf69('0x59')]};}if(_0x59de98[_0xcf69('0x5a')]){_0x81a49f[_0xcf69('0x5a')]={'id':_0x59de98[_0xcf69('0x5a')]['id'],'name':_0x59de98[_0xcf69('0x5a')][_0xcf69('0x8')]};}_0x9a006b['push'](_0x81a49f);}}_0x183067({'count':_0x9a006b[_0xcf69('0x5b')],'rows':_0x9a006b});});},'UpdateVoiceQueue':function(_0x39522d){return new Promise(function(_0x3e33e6,_0x58e261){var _0x1a1270=_['find'](_0x4d8180[_0xcf69('0x23')],{'id':parseInt(_0x39522d['id'])});var _0x81d8a7=_[_0xcf69('0x5c')](_0x39522d,['id']);if(_0x1a1270){for(var _0x45c458 in _0x81d8a7){if(typeof _0x81d8a7[_0x45c458]!==_0xcf69('0x5d')&&typeof _0x1a1270[_0x45c458]!=='undefined'){_0x1a1270[_0x45c458]=_0x81d8a7[_0x45c458];}}_0x3e33e6(_0x1a1270);}else{_0x58e261();}});},'VoiceChannels':function(_0x57748d){return new Promise(function(_0xca4bc0,_0x29dfbf){var _0x43ded1=_['values'](_0x4d8180['channels']);_0xca4bc0({'count':_0x43ded1['length'],'rows':_0x43ded1});});},'VoiceChannelMixMonitor':function(_0x2f2b20){var _0x814320=this;return new Promise(function(_0x91069e,_0x4c55e4){if(ami[_0xcf69('0x1a')]()==![]){return _0x4c55e4(_0x814320['error'](0x1f4,[config[_0xcf69('0x1b')]['ip'],config['asterisk'][_0xcf69('0x10')],_0xcf69('0x1c')][_0xcf69('0x11')]('\x20')));}var _0x2f8346=schema(properties[_0xcf69('0x5e')])[_0xcf69('0x2')](_0x2f2b20);if(_0x2f8346[_0xcf69('0x5b')]>0x0){return _0x4c55e4(_0x814320[_0xcf69('0x19')](0x1f4,_[_0xcf69('0x5f')](_0x2f8346,_0xcf69('0x17'))[_0xcf69('0x11')](',\x20')));}var _0x52473a=_[_0xcf69('0x60')](_0x4d8180[_0xcf69('0x61')],{'uniqueid':_0x2f2b20[_0xcf69('0x62')]});if(_0x52473a&&_0x52473a['channel']){var _0x294e08=util['format'](_0xcf69('0x63'),_0x2f2b20[_0xcf69('0x64')]||_0x2f2b20[_0xcf69('0x62')],_0x2f2b20[_0xcf69('0x6')]||_0xcf69('0x65'));return ami[_0xcf69('0x16')]({'action':_0xcf69('0x66'),'channel':_0x52473a[_0xcf69('0x67')],'file':_0x294e08,'options':_0xcf69('0x68')})[_0xcf69('0x20')](function(_0x2f83f6){var _0x2be62c=_[_0xcf69('0x60')](_0x52473a['monitors'],{'filename':_0xcf69('0x69')+_0x294e08[_0xcf69('0x6a')]()});if(_[_0xcf69('0x6b')](_0x2be62c)){_0x52473a['monitors']['push']({'filename':_0xcf69('0x69')+_0x294e08['toLowerCase'](),'createdAt':moment()[_0xcf69('0x6')](_0xcf69('0x6c')),'mixmonitorid':_0x2f83f6['mixmonitorid'],'status':_0xcf69('0x6d')});}else{_0x2be62c['mixmonitorid']=_0x2f83f6['mixmonitorid'];_0x2be62c[_0xcf69('0x6e')]=_0xcf69('0x6d');}_0x91069e({'code':0xc8,'message':[_0x2f2b20[_0xcf69('0x62')],_0xcf69('0x6f'),_0x2f83f6['mixmonitorid']][_0xcf69('0x11')]('\x20'),'mixmonitorid':_0x2f83f6[_0xcf69('0x70')]});})[_0xcf69('0x18')](function(_0x5996eb){_0x4c55e4(_0x814320['error'](0x1f5,[_0x2f2b20[_0xcf69('0x62')],_0x5996eb[_0xcf69('0x17')][_0xcf69('0x6a')]()]['join']('\x20')));});}else{return _0x4c55e4(_0x814320['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceChannelStopMixMonitor':function(_0x4ab987){var _0x5d036b=this;return new Promise(function(_0x4bfd20,_0x1ace3c){if(ami[_0xcf69('0x1a')]()==![]){return _0x1ace3c(_0x5d036b['error'](0x1f4,[config[_0xcf69('0x1b')]['ip'],config[_0xcf69('0x1b')][_0xcf69('0x10')],_0xcf69('0x1c')][_0xcf69('0x11')]('\x20')));}var _0x19310e=schema(properties['voicechannel'])['validate'](_0x4ab987);if(_0x19310e[_0xcf69('0x5b')]>0x0){return _0x1ace3c(_0x5d036b[_0xcf69('0x19')](0x1f4,_[_0xcf69('0x5f')](_0x19310e,_0xcf69('0x17'))['join'](',\x20')));}var _0x593502=_['find'](_0x4d8180['channels'],{'uniqueid':_0x4ab987[_0xcf69('0x62')]});if(_0x593502){return BPromise[_0xcf69('0x71')]()[_0xcf69('0x20')](function(){if(_0x593502[_0xcf69('0x67')]){return ami[_0xcf69('0x16')]({'action':_0xcf69('0x72'),'channel':_0x593502['channel'],'mixmonitorid':_0x4ab987[_0xcf69('0x70')]})[_0xcf69('0x18')](function(_0x111089){});}})[_0xcf69('0x20')](function(){if(_0x593502[_0xcf69('0x73')]){return ami[_0xcf69('0x16')]({'action':_0xcf69('0x72'),'channel':_0x593502[_0xcf69('0x73')],'mixmonitorid':_0x4ab987[_0xcf69('0x70')]})[_0xcf69('0x18')](function(_0x16d25d){});}})['then'](function(_0x1d5dc1){var _0x3e5450=_[_0xcf69('0x60')](_0x593502['monitors'],{'mixmonitorid':_0x4ab987[_0xcf69('0x70')]});if(_0x3e5450){_0x3e5450['status']=_0xcf69('0x74');}})['then'](function(){var _0x4b3250=util[_0xcf69('0x6')](_0xcf69('0x63'),_0x4ab987[_0xcf69('0x64')]||_0x4ab987[_0xcf69('0x62')],_0x4ab987[_0xcf69('0x6')]||'wav');var _0x5d098a=_[_0xcf69('0x60')](_0x593502[_0xcf69('0x75')],{'filename':'/var/spool/asterisk/monitor/'+_0x4b3250['toLowerCase']()});if(_0x5d098a){_0x5d098a['status']=_0xcf69('0x74');}})[_0xcf69('0x20')](function(){_0x4bfd20({'code':0xc8,'message':[_0x4ab987['uniqueid'],_0xcf69('0x76')]['join']('\x20')});})[_0xcf69('0x18')](function(_0x3b76ce){_0x1ace3c(_0x5d036b[_0xcf69('0x19')](0x1f5,[_0x4ab987[_0xcf69('0x62')],_0x3b76ce[_0xcf69('0x17')]['toLowerCase']()]['join']('\x20')));});}else{return _0x1ace3c(_0x5d036b[_0xcf69('0x19')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannels':function(_0x188d15){return new Promise(function(_0x54cf09,_0x53ee6c){var _0x5a183e=_[_0xcf69('0x77')](_0x4d8180[_0xcf69('0x78')]);_0x54cf09({'count':_0x5a183e[_0xcf69('0x5b')],'rows':_0x5a183e});});},'VoiceQueuesChannel':function(_0xbb5438){var _0x566520=this;return new Promise(function(_0x287912,_0x5658f4){var _0x243fda=schema(properties['voicequeuechannel'])[_0xcf69('0x2')](_0xbb5438);if(_0x243fda[_0xcf69('0x5b')]>0x0){return _0x5658f4(_0x566520['error'](0x1f4,_[_0xcf69('0x5f')](_0x243fda,_0xcf69('0x17'))[_0xcf69('0x11')](',\x20')));}var _0x490cce=_['find'](_0x4d8180[_0xcf69('0x78')],{'uniqueid':_0xbb5438[_0xcf69('0x62')]});if(_0x490cce){_0x287912(_0x490cce);}else{return _0x5658f4(_0x566520['error'](0x1f5,_0xcf69('0x79')));}});},'VoiceQueuesChannelHangup':function(_0x38e0b2){var _0x746a64=this;return new Promise(function(_0x4bc426,_0x48774f){if(ami[_0xcf69('0x1a')]()==![]){return _0x48774f(_0x746a64['error'](0x1f4,[config[_0xcf69('0x1b')]['ip'],config[_0xcf69('0x1b')]['username'],_0xcf69('0x1c')][_0xcf69('0x11')]('\x20')));}var _0x5b68b8=schema(properties[_0xcf69('0x7a')])['validate'](_0x38e0b2);if(_0x5b68b8[_0xcf69('0x5b')]>0x0){return _0x48774f(_0x746a64[_0xcf69('0x19')](0x1f4,_[_0xcf69('0x5f')](_0x5b68b8,_0xcf69('0x17'))[_0xcf69('0x11')](',\x20')));}var _0x52eae3=_[_0xcf69('0x60')](_0x4d8180['queueChannels'],{'uniqueid':_0x38e0b2[_0xcf69('0x62')]});if(_0x52eae3&&_0x52eae3[_0xcf69('0x67')]){return ami[_0xcf69('0x16')]({'action':_0xcf69('0x7b'),'channel':_0x52eae3['channel']})['then'](function(_0x2f97f5){_0x4bc426({'code':0xc8,'message':[_0x38e0b2[_0xcf69('0x62')],_0x2f97f5[_0xcf69('0x17')][_0xcf69('0x6a')]()][_0xcf69('0x11')]('\x20')});})[_0xcf69('0x18')](function(_0x5d5dfe){_0x48774f(_0x746a64[_0xcf69('0x19')](0x1f5,[_0x38e0b2[_0xcf69('0x62')],_0x5d5dfe[_0xcf69('0x17')][_0xcf69('0x6a')]()][_0xcf69('0x11')]('\x20')));});}else{return _0x48774f(_0x746a64['error'](0x1f5,_0xcf69('0x79')));}});},'VoiceQueuesChannelRedirect':function(_0x595e2f){var _0x4dbf4e=this;return new Promise(function(_0x96cf1d,_0x270e79){if(ami['isConnected']()==![]){return _0x270e79(_0x4dbf4e['error'](0x1f4,[config['asterisk']['ip'],config[_0xcf69('0x1b')][_0xcf69('0x10')],_0xcf69('0x1c')][_0xcf69('0x11')]('\x20')));}var _0x3d1055=schema(properties[_0xcf69('0x7c')])['validate'](_0x595e2f);if(_0x3d1055[_0xcf69('0x5b')]>0x0){return _0x270e79(_0x4dbf4e[_0xcf69('0x19')](0x1f4,_['map'](_0x3d1055,_0xcf69('0x17'))[_0xcf69('0x11')](',\x20')));}var _0x3cfb21=_[_0xcf69('0x60')](_0x4d8180[_0xcf69('0x78')],{'uniqueid':_0x595e2f[_0xcf69('0x62')]});if(_0x3cfb21&&_0x3cfb21['channel']){return ami[_0xcf69('0x16')]({'action':_0xcf69('0x7d'),'channel':_0x3cfb21[_0xcf69('0x67')],'exten':_0x595e2f[_0xcf69('0x7e')],'context':_0x595e2f['context']||_0x3cfb21[_0xcf69('0x7f')],'priority':0x1})[_0xcf69('0x20')](function(_0x2cdcc3){_0x96cf1d({'code':0xc8,'message':[_0x595e2f[_0xcf69('0x62')],_0x2cdcc3['message'][_0xcf69('0x6a')]()]['join']('\x20')});})[_0xcf69('0x18')](function(_0x1af8a0){_0x270e79(_0x4dbf4e['error'](0x1f5,[_0x595e2f['uniqueid'],_0x1af8a0['message'][_0xcf69('0x6a')]()][_0xcf69('0x11')]('\x20')));});}else{return _0x270e79(_0x4dbf4e['error'](0x1f5,_0xcf69('0x79')));}});},'Agents':function(_0x2002e1){return new Promise(function(_0x145bde,_0x2cd107){var _0x1cb7fd=_[_0xcf69('0x77')](_0x4d8180[_0xcf69('0xc')]);_0x145bde({'count':_0x1cb7fd[_0xcf69('0x5b')],'rows':_0x1cb7fd});});},'Telephones':function(_0x3f67d7){return new Promise(function(_0x4a7f65,_0x455dd0){var _0x2ca0d3=_[_0xcf69('0x77')](_0x4d8180['telephones']);_0x4a7f65({'count':_0x2ca0d3['length'],'rows':_0x2ca0d3});});},'Trunks':function(_0x57f3cb){return new Promise(function(_0x24194c,_0x587c1b){var _0x5eabdb=_[_0xcf69('0x77')](_0x4d8180[_0xcf69('0x80')]);_0x24194c({'count':_0x5eabdb[_0xcf69('0x5b')],'rows':_0x5eabdb});});},'OutboundChannels':function(_0x352d40){return new Promise(function(_0x2b79f0,_0x1fc8db){var _0xeb1b54=_['values'](_0x4d8180[_0xcf69('0x81')]);_0x2b79f0({'count':_0xeb1b54[_0xcf69('0x5b')],'rows':_0xeb1b54});});},'Outbound':function(_0x29e5fc){return new Promise(function(_0x2fbec3,_0x53438c){_0x2fbec3(_0x4d8180[_0xcf69('0x30')]);});},'Campaigns':function(_0xf339fa){return new Promise(function(_0x29d887,_0x3c7db3){var _0xac1fa9=_['values'](_0x4d8180['campaigns']);_0x29d887({'count':_0xac1fa9[_0xcf69('0x5b')],'rows':_0xac1fa9});});},'VoiceQueuesPreview':function(_0x165f37){var _0x4ece02=this;return new Promise(function(_0x14e9d6,_0x45a3a7){_0x1c813d['run'](_0x165f37['id'])[_0xcf69('0x20')](function(_0x548195){_0x14e9d6({'code':0xc8,'message':_0x548195[_0xcf69('0x17')]});})[_0xcf69('0x18')](function(_0x3d1fb0){_0x45a3a7(_0x4ece02[_0xcf69('0x19')](0x1f4,_0x3d1fb0[_0xcf69('0x17')]));});});},'EventManager':function(_0x1fe4a9){var _0x29574f=this;return new Promise(function(_0x478426,_0x3748b5){if(!_0x1fe4a9[_0xcf69('0x82')]){return _0x3748b5(_0x29574f[_0xcf69('0x19')](0x1f4,'Event\x20name\x20mandatory'));}ami[_0xcf69('0x83')](_0xcf69('0x84')+_0x1fe4a9['event'],_0x1fe4a9['message']);_0x478426({'code':0xc8,'message':_0x1fe4a9});});},'FaxAccounts':function(_0x11cdad){return new Promise(function(_0x437d15,_0x3f7b13){var _0x4c8346=_['values'](_0x4d8180[_0xcf69('0x85')]);_0x437d15({'count':_0x4c8346[_0xcf69('0x5b')],'rows':_0x4c8346});});},'SendFax':function(_0x8a4d91){var _0x47d3cb=this;return new Promise(function(_0x172362,_0x2f2ca0){_0x168197[_0xcf69('0x86')](_0x8a4d91)['then'](function(_0x363533){_0x172362({'code':0xc8,'message':_0x363533[_0xcf69('0x17')]});})[_0xcf69('0x18')](function(_0x3e73b9){_0x2f2ca0(_0x47d3cb[_0xcf69('0x19')](0x1f4,_0x3e73b9[_0xcf69('0x17')]));});});},'CheckAfterSend':function(_0x2d1bbf){var _0x4bca3d=this;return new Promise(function(_0x3e29d3,_0x1279fc){_0x168197['checkAfterSend'](_0x2d1bbf)[_0xcf69('0x20')](function(_0x17ef57){_0x3e29d3({'code':0xc8,'message':_0x17ef57[_0xcf69('0x17')]});})[_0xcf69('0x18')](function(_0x18db19){_0x1279fc(_0x4bca3d[_0xcf69('0x19')](0x1f4,_0x18db19['message']));});});}};var _0x1d7528=jayson[_0xcf69('0x87')](_0x3b7608)[_0xcf69('0x88')]();_0x1d7528['on'](_0xcf69('0x19'),function(_0x220220){return _0x35aa67(_0x220220);});_0x1d7528['listen'](0x232a,_0xcf69('0x89'),function(){console['log']('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x225c65(_0xcf69('0x8a')+0x232a);});});};
\ No newline at end of file
+var _0xdfa0=['then','message','catch','voiceQueues','name','strategy','answered','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','type','unmanaged','waiting','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdNumber','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','callerid','Interval','length','find','omit','undefined','values','channels','voicechannel','uniqueid','channel','%s.%s','wav','MixMonitor','ai(mixmonitorid)','/var/spool/asterisk/monitor/','toLowerCase','isNil','push','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','map','resolve','StopMixMonitor','monitors','stop','filename','StopMixMonitor\x20Success','queueChannels','voicequeuechannel','voicequeuechannelhangup','voicequeuechannelredirect','Redirect','exten','context','telephones','outboundChannels','campaigns','run','event','emit','custom:','send','checkAfterSend','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','jayson/promise','validate','moment','../../../config/environment','../properties','listen','format','%s/%s','SIP','timers','timer','agents','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','join','pick','keys','module','action','Reload','Action'];(function(_0x10d244,_0x49c680){var _0x67755d=function(_0x21ea7b){while(--_0x21ea7b){_0x10d244['push'](_0x10d244['shift']());}};_0x67755d(++_0x49c680);}(_0xdfa0,0x69));var _0x0dfa=function(_0x22076f,_0x3f54b0){_0x22076f=_0x22076f-0x0;var _0x131547=_0xdfa0[_0x22076f];return _0x131547;};'use strict';var _=require(_0x0dfa('0x0'));var util=require('util');var jayson=require(_0x0dfa('0x1'));var schema=require(_0x0dfa('0x2'));var BPromise=require('bluebird');var moment=require(_0x0dfa('0x3'));var config=require(_0x0dfa('0x4'));var properties=require(_0x0dfa('0x5'));var ami=require('../ami');exports[_0x0dfa('0x6')]=function(_0x50b91e,_0x2f60d7,_0x2efe20){return new BPromise(function(_0x4830b6,_0x417f7a){var _0x29ca78={'QueuePause':function(_0x32280b){return new Promise(function(_0x16070c,_0x3b6881){var _0x4c7be0=util[_0x0dfa('0x7')](_0x0dfa('0x8'),_0x0dfa('0x9'),_0x32280b['name']);if(_0x50b91e[_0x0dfa('0xa')]&&_0x50b91e['timers'][_0x4c7be0]&&_0x50b91e[_0x0dfa('0xa')][_0x4c7be0][_0x0dfa('0xb')]){_0x50b91e[_0x0dfa('0xa')][_0x4c7be0]['updateAcw']();}if(_0x50b91e[_0x0dfa('0xc')][_0x4c7be0]){_0x50b91e[_0x0dfa('0xc')][_0x4c7be0]['updateStatusRealtime']({'statePause':_0x32280b[_0x0dfa('0xd')]?!![]:![]});}_0x16070c({'code':0xc8,'message':_0x0dfa('0xe')});});},'Reload':function(_0x47c37c){var _0x4162e1=this;return new Promise(function(_0x1e5532,_0x4215fd){if(ami[_0x0dfa('0xf')]()==![]){return _0x4215fd(_0x4162e1[_0x0dfa('0x10')](0x1f4,[config[_0x0dfa('0x11')]['ip'],config['asterisk'][_0x0dfa('0x12')],_0x0dfa('0x13')][_0x0dfa('0x14')]('\x20')));}_0x47c37c=_[_0x0dfa('0x15')](_0x47c37c,_[_0x0dfa('0x16')](properties[_0x0dfa('0x17')]));_0x47c37c[_0x0dfa('0x18')]=_0x0dfa('0x19');return ami[_0x0dfa('0x1a')](_0x47c37c)[_0x0dfa('0x1b')](function(_0xc524fe){_0x1e5532({'code':0xc8,'message':_0xc524fe[_0x0dfa('0x1c')]});})[_0x0dfa('0x1d')](function(_0x208c0b){_0x4215fd(_0x4162e1[_0x0dfa('0x10')](0x1f5,_0x208c0b['message']));});});},'Command':function(_0xd21935){var _0x22ff4e=this;return new Promise(function(_0x263d6c,_0x1bb2a){if(ami[_0x0dfa('0xf')]()==![]){return _0x1bb2a(_0x22ff4e['error'](0x1f4,[config['asterisk']['ip'],config[_0x0dfa('0x11')][_0x0dfa('0x12')],_0x0dfa('0x13')]['join']('\x20')));}_0xd21935=_[_0x0dfa('0x15')](_0xd21935,'command');_0xd21935[_0x0dfa('0x18')]='Command';return ami[_0x0dfa('0x1a')](_0xd21935)[_0x0dfa('0x1b')](function(_0x43f048){_0x263d6c({'code':0xc8,'message':_0x43f048['content']});})[_0x0dfa('0x1d')](function(_0x70ff72){_0x1bb2a(_0x22ff4e[_0x0dfa('0x10')](0x1f5,_0x70ff72[_0x0dfa('0x1c')]));});});},'VoiceQueues':function(_0x1dfbea){return new Promise(function(_0x12bd2a,_0x13005a){var _0x3f40e4=[];for(var _0x2e4523 in _0x50b91e[_0x0dfa('0x1e')]){if(_0x50b91e['voiceQueues']['hasOwnProperty'](_0x2e4523)){var _0x4084c6=_0x50b91e[_0x0dfa('0x1e')][_0x2e4523];var _0x4992b8={'id':_0x4084c6['id'],'name':_0x4084c6[_0x0dfa('0x1f')],'strategy':_0x4084c6[_0x0dfa('0x20')],'answered':_0x4084c6[_0x0dfa('0x21')],'available':_0x4084c6['available'],'loggedIn':_0x4084c6[_0x0dfa('0x22')],'pTalking':_0x4084c6[_0x0dfa('0x23')],'sumBillable':_0x4084c6[_0x0dfa('0x24')],'sumDuration':_0x4084c6[_0x0dfa('0x25')],'sumHoldTime':_0x4084c6[_0x0dfa('0x26')]||0x0,'talking':_0x4084c6[_0x0dfa('0x27')],'total':_0x4084c6['total'],'type':_0x4084c6[_0x0dfa('0x28')],'unmanaged':_0x4084c6[_0x0dfa('0x29')],'abandoned':_0x4084c6['abandoned'],'waiting':_0x4084c6[_0x0dfa('0x2a')],'loggedInDb':_0x4084c6[_0x0dfa('0x2b')]};if(_0x4084c6[_0x0dfa('0x28')]===_0x0dfa('0x2c')){_0x4992b8['dialActive']=_0x4084c6[_0x0dfa('0x2d')];_0x4992b8[_0x0dfa('0x2e')]=_0x4084c6[_0x0dfa('0x2e')];_0x4992b8['dialOriginateCallerIdName']=_0x4084c6['dialOriginateCallerIdName'];_0x4992b8[_0x0dfa('0x2f')]=_0x4084c6[_0x0dfa('0x2f')];_0x4992b8['dialOriginateTimeout']=_0x4084c6['dialOriginateTimeout'];_0x4992b8['dialPrefix']=_0x4084c6[_0x0dfa('0x30')];_0x4992b8[_0x0dfa('0x31')]=_0x4084c6[_0x0dfa('0x31')];_0x4992b8[_0x0dfa('0x32')]=_0x4084c6['outboundAnswerAgiCallsDay'];_0x4992b8[_0x0dfa('0x33')]=_0x4084c6[_0x0dfa('0x33')];_0x4992b8[_0x0dfa('0x34')]=_0x4084c6[_0x0dfa('0x34')];_0x4992b8[_0x0dfa('0x35')]=_0x4084c6[_0x0dfa('0x35')];_0x4992b8[_0x0dfa('0x36')]=_0x4084c6[_0x0dfa('0x36')];_0x4992b8[_0x0dfa('0x37')]=_0x4084c6[_0x0dfa('0x37')];_0x4992b8['outboundDropCallsDayCallersExit']=_0x4084c6['outboundDropCallsDayCallersExit'];_0x4992b8[_0x0dfa('0x38')]=_0x4084c6[_0x0dfa('0x38')];_0x4992b8[_0x0dfa('0x39')]=_0x4084c6[_0x0dfa('0x39')];_0x4992b8[_0x0dfa('0x3a')]=_0x4084c6['outboundNoSuchCallsDay'];_0x4992b8[_0x0dfa('0x3b')]=_0x4084c6['outboundOriginateFailureCallsDay'];_0x4992b8[_0x0dfa('0x3c')]=_0x4084c6[_0x0dfa('0x3c')];_0x4992b8[_0x0dfa('0x3d')]=_0x4084c6['outboundRejectCallsDay'];_0x4992b8['outboundUnknownCallsDay']=_0x4084c6[_0x0dfa('0x3e')];_0x4992b8[_0x0dfa('0x3f')]=_0x4084c6[_0x0dfa('0x3f')];_0x4992b8['predictiveIntervalAvgHoldtime']=_0x4084c6[_0x0dfa('0x40')];_0x4992b8['predictiveIntervalAvgTalktime']=_0x4084c6[_0x0dfa('0x41')];_0x4992b8[_0x0dfa('0x42')]=_0x4084c6['predictiveIntervalDroppedCallsCallersExit'];_0x4992b8[_0x0dfa('0x43')]=_0x4084c6[_0x0dfa('0x43')];_0x4992b8[_0x0dfa('0x44')]=_0x4084c6[_0x0dfa('0x44')];_0x4992b8[_0x0dfa('0x45')]=_0x4084c6[_0x0dfa('0x45')];_0x4992b8['predictiveIntervalHitRate']=_0x4084c6[_0x0dfa('0x46')];_0x4992b8[_0x0dfa('0x47')]=_0x4084c6[_0x0dfa('0x47')];_0x4992b8[_0x0dfa('0x48')]=_0x4084c6[_0x0dfa('0x48')];_0x4992b8[_0x0dfa('0x49')]=_0x4084c6[_0x0dfa('0x49')];_0x4992b8[_0x0dfa('0x4a')]=_0x4084c6[_0x0dfa('0x4a')];_0x4992b8[_0x0dfa('0x1c')]=_0x4084c6[_0x0dfa('0x1c')];_0x4992b8['originated']=_0x4084c6['originated'];_0x4992b8[_0x0dfa('0x4b')]=_0x4084c6[_0x0dfa('0x4b')];_0x4992b8['erlangCallToSecond']=_0x4084c6['erlangCallToSecond'];_0x4992b8['erlangAbandonmentRate']=_0x4084c6[_0x0dfa('0x4c')];_0x4992b8['erlangBusyFactor']=_0x4084c6[_0x0dfa('0x4d')];_0x4992b8[_0x0dfa('0x4e')]=_0x4084c6[_0x0dfa('0x4e')];_0x4992b8[_0x0dfa('0x4f')]=_0x4084c6[_0x0dfa('0x4f')];}if(_0x4084c6[_0x0dfa('0x50')]){_0x4992b8[_0x0dfa('0x50')]={'id':_0x4084c6[_0x0dfa('0x50')]['id'],'name':_0x4084c6['Trunk'][_0x0dfa('0x1f')],'active':_0x4084c6[_0x0dfa('0x50')]['active'],'callerid':_0x4084c6[_0x0dfa('0x50')][_0x0dfa('0x51')]};}if(_0x4084c6['Interval']){_0x4992b8[_0x0dfa('0x52')]={'id':_0x4084c6[_0x0dfa('0x52')]['id'],'name':_0x4084c6[_0x0dfa('0x52')][_0x0dfa('0x1f')]};}_0x3f40e4['push'](_0x4992b8);}}_0x12bd2a({'count':_0x3f40e4[_0x0dfa('0x53')],'rows':_0x3f40e4});});},'UpdateVoiceQueue':function(_0x2617b1){return new Promise(function(_0x483630,_0x3fc10d){var _0x13c4ad=_[_0x0dfa('0x54')](_0x50b91e[_0x0dfa('0x1e')],{'id':parseInt(_0x2617b1['id'])});var _0x1f31b7=_[_0x0dfa('0x55')](_0x2617b1,['id']);if(_0x13c4ad){for(var _0x33c17b in _0x1f31b7){if(typeof _0x1f31b7[_0x33c17b]!==_0x0dfa('0x56')&&typeof _0x13c4ad[_0x33c17b]!==_0x0dfa('0x56')){_0x13c4ad[_0x33c17b]=_0x1f31b7[_0x33c17b];}}_0x483630(_0x13c4ad);}else{_0x3fc10d();}});},'VoiceChannels':function(_0x5bb41a){return new Promise(function(_0x28573d,_0x326433){var _0x48de6c=_[_0x0dfa('0x57')](_0x50b91e[_0x0dfa('0x58')]);_0x28573d({'count':_0x48de6c[_0x0dfa('0x53')],'rows':_0x48de6c});});},'VoiceChannelMixMonitor':function(_0xa676cc){var _0x560dfe=this;return new Promise(function(_0x5df0e8,_0x5f4572){if(ami[_0x0dfa('0xf')]()==![]){return _0x5f4572(_0x560dfe[_0x0dfa('0x10')](0x1f4,[config[_0x0dfa('0x11')]['ip'],config[_0x0dfa('0x11')][_0x0dfa('0x12')],_0x0dfa('0x13')]['join']('\x20')));}var _0x595ba5=schema(properties[_0x0dfa('0x59')])[_0x0dfa('0x2')](_0xa676cc);if(_0x595ba5[_0x0dfa('0x53')]>0x0){return _0x5f4572(_0x560dfe[_0x0dfa('0x10')](0x1f4,_['map'](_0x595ba5,'message')['join'](',\x20')));}var _0x2f018c=_[_0x0dfa('0x54')](_0x50b91e[_0x0dfa('0x58')],{'uniqueid':_0xa676cc[_0x0dfa('0x5a')]});if(_0x2f018c&&_0x2f018c[_0x0dfa('0x5b')]){var _0x16b025=util[_0x0dfa('0x7')](_0x0dfa('0x5c'),_0xa676cc['filename']||_0xa676cc['uniqueid'],_0xa676cc['format']||_0x0dfa('0x5d'));return ami['Action']({'action':_0x0dfa('0x5e'),'channel':_0x2f018c[_0x0dfa('0x5b')],'file':_0x16b025,'options':_0x0dfa('0x5f')})[_0x0dfa('0x1b')](function(_0x748132){var _0x31f272=_['find'](_0x2f018c['monitors'],{'filename':_0x0dfa('0x60')+_0x16b025[_0x0dfa('0x61')]()});if(_[_0x0dfa('0x62')](_0x31f272)){_0x2f018c['monitors'][_0x0dfa('0x63')]({'filename':_0x0dfa('0x60')+_0x16b025[_0x0dfa('0x61')](),'createdAt':moment()[_0x0dfa('0x7')](_0x0dfa('0x64')),'mixmonitorid':_0x748132[_0x0dfa('0x65')],'status':_0x0dfa('0x66')});}else{_0x31f272[_0x0dfa('0x65')]=_0x748132['mixmonitorid'];_0x31f272[_0x0dfa('0x67')]=_0x0dfa('0x66');}_0x5df0e8({'code':0xc8,'message':[_0xa676cc[_0x0dfa('0x5a')],_0x0dfa('0x68'),_0x748132[_0x0dfa('0x65')]]['join']('\x20'),'mixmonitorid':_0x748132['mixmonitorid']});})[_0x0dfa('0x1d')](function(_0x5389d6){_0x5f4572(_0x560dfe[_0x0dfa('0x10')](0x1f5,[_0xa676cc[_0x0dfa('0x5a')],_0x5389d6[_0x0dfa('0x1c')]['toLowerCase']()][_0x0dfa('0x14')]('\x20')));});}else{return _0x5f4572(_0x560dfe[_0x0dfa('0x10')](0x1f5,_0x0dfa('0x69')));}});},'VoiceChannelStopMixMonitor':function(_0x417ee1){var _0x1dddca=this;return new Promise(function(_0x598888,_0x4b4b04){if(ami['isConnected']()==![]){return _0x4b4b04(_0x1dddca[_0x0dfa('0x10')](0x1f4,[config[_0x0dfa('0x11')]['ip'],config[_0x0dfa('0x11')][_0x0dfa('0x12')],_0x0dfa('0x13')][_0x0dfa('0x14')]('\x20')));}var _0x56e483=schema(properties[_0x0dfa('0x59')])[_0x0dfa('0x2')](_0x417ee1);if(_0x56e483[_0x0dfa('0x53')]>0x0){return _0x4b4b04(_0x1dddca[_0x0dfa('0x10')](0x1f4,_[_0x0dfa('0x6a')](_0x56e483,_0x0dfa('0x1c'))['join'](',\x20')));}var _0x34d1e1=_[_0x0dfa('0x54')](_0x50b91e[_0x0dfa('0x58')],{'uniqueid':_0x417ee1['uniqueid']});if(_0x34d1e1){return BPromise[_0x0dfa('0x6b')]()[_0x0dfa('0x1b')](function(){if(_0x34d1e1[_0x0dfa('0x5b')]){return ami[_0x0dfa('0x1a')]({'action':_0x0dfa('0x6c'),'channel':_0x34d1e1[_0x0dfa('0x5b')],'mixmonitorid':_0x417ee1[_0x0dfa('0x65')]})[_0x0dfa('0x1d')](function(_0x4a1c24){});}})[_0x0dfa('0x1b')](function(){if(_0x34d1e1['destinationchannel']){return ami['Action']({'action':_0x0dfa('0x6c'),'channel':_0x34d1e1['destinationchannel'],'mixmonitorid':_0x417ee1[_0x0dfa('0x65')]})[_0x0dfa('0x1d')](function(_0x34107a){});}})['then'](function(_0x20217b){var _0x2b0b2d=_['find'](_0x34d1e1[_0x0dfa('0x6d')],{'mixmonitorid':_0x417ee1[_0x0dfa('0x65')]});if(_0x2b0b2d){_0x2b0b2d[_0x0dfa('0x67')]=_0x0dfa('0x6e');}})[_0x0dfa('0x1b')](function(){var _0x36c123=util[_0x0dfa('0x7')]('%s.%s',_0x417ee1[_0x0dfa('0x6f')]||_0x417ee1['uniqueid'],_0x417ee1[_0x0dfa('0x7')]||_0x0dfa('0x5d'));var _0x4a96b3=_['find'](_0x34d1e1['monitors'],{'filename':_0x0dfa('0x60')+_0x36c123['toLowerCase']()});if(_0x4a96b3){_0x4a96b3['status']=_0x0dfa('0x6e');}})[_0x0dfa('0x1b')](function(){_0x598888({'code':0xc8,'message':[_0x417ee1[_0x0dfa('0x5a')],_0x0dfa('0x70')][_0x0dfa('0x14')]('\x20')});})[_0x0dfa('0x1d')](function(_0x3b1c93){_0x4b4b04(_0x1dddca[_0x0dfa('0x10')](0x1f5,[_0x417ee1[_0x0dfa('0x5a')],_0x3b1c93[_0x0dfa('0x1c')]['toLowerCase']()][_0x0dfa('0x14')]('\x20')));});}else{return _0x4b4b04(_0x1dddca[_0x0dfa('0x10')](0x1f5,_0x0dfa('0x69')));}});},'VoiceQueuesChannels':function(_0x478b01){return new Promise(function(_0x212c43,_0x4132b5){var _0x230333=_[_0x0dfa('0x57')](_0x50b91e[_0x0dfa('0x71')]);_0x212c43({'count':_0x230333[_0x0dfa('0x53')],'rows':_0x230333});});},'VoiceQueuesChannel':function(_0x2e5d85){var _0x1c1e49=this;return new Promise(function(_0x1b3c5c,_0x321219){var _0x311560=schema(properties[_0x0dfa('0x72')])['validate'](_0x2e5d85);if(_0x311560['length']>0x0){return _0x321219(_0x1c1e49[_0x0dfa('0x10')](0x1f4,_['map'](_0x311560,_0x0dfa('0x1c'))[_0x0dfa('0x14')](',\x20')));}var _0x44e3d3=_['find'](_0x50b91e[_0x0dfa('0x71')],{'uniqueid':_0x2e5d85[_0x0dfa('0x5a')]});if(_0x44e3d3){_0x1b3c5c(_0x44e3d3);}else{return _0x321219(_0x1c1e49['error'](0x1f5,_0x0dfa('0x69')));}});},'VoiceQueuesChannelHangup':function(_0x2d10ba){var _0xbf4253=this;return new Promise(function(_0x1e66ed,_0x48930b){if(ami[_0x0dfa('0xf')]()==![]){return _0x48930b(_0xbf4253[_0x0dfa('0x10')](0x1f4,[config[_0x0dfa('0x11')]['ip'],config[_0x0dfa('0x11')][_0x0dfa('0x12')],_0x0dfa('0x13')]['join']('\x20')));}var _0x21828e=schema(properties[_0x0dfa('0x73')])[_0x0dfa('0x2')](_0x2d10ba);if(_0x21828e[_0x0dfa('0x53')]>0x0){return _0x48930b(_0xbf4253[_0x0dfa('0x10')](0x1f4,_[_0x0dfa('0x6a')](_0x21828e,_0x0dfa('0x1c'))[_0x0dfa('0x14')](',\x20')));}var _0x460210=_[_0x0dfa('0x54')](_0x50b91e[_0x0dfa('0x71')],{'uniqueid':_0x2d10ba[_0x0dfa('0x5a')]});if(_0x460210&&_0x460210[_0x0dfa('0x5b')]){return ami[_0x0dfa('0x1a')]({'action':'Hangup','channel':_0x460210['channel']})[_0x0dfa('0x1b')](function(_0x4e3d5c){_0x1e66ed({'code':0xc8,'message':[_0x2d10ba[_0x0dfa('0x5a')],_0x4e3d5c[_0x0dfa('0x1c')][_0x0dfa('0x61')]()]['join']('\x20')});})[_0x0dfa('0x1d')](function(_0x57cf28){_0x48930b(_0xbf4253[_0x0dfa('0x10')](0x1f5,[_0x2d10ba[_0x0dfa('0x5a')],_0x57cf28[_0x0dfa('0x1c')][_0x0dfa('0x61')]()][_0x0dfa('0x14')]('\x20')));});}else{return _0x48930b(_0xbf4253[_0x0dfa('0x10')](0x1f5,_0x0dfa('0x69')));}});},'VoiceQueuesChannelRedirect':function(_0x5b013d){var _0x47221a=this;return new Promise(function(_0x2e32eb,_0x13f23d){if(ami[_0x0dfa('0xf')]()==![]){return _0x13f23d(_0x47221a[_0x0dfa('0x10')](0x1f4,[config[_0x0dfa('0x11')]['ip'],config[_0x0dfa('0x11')]['username'],'ami\x20disconnected'][_0x0dfa('0x14')]('\x20')));}var _0x47ef36=schema(properties[_0x0dfa('0x74')])[_0x0dfa('0x2')](_0x5b013d);if(_0x47ef36[_0x0dfa('0x53')]>0x0){return _0x13f23d(_0x47221a[_0x0dfa('0x10')](0x1f4,_[_0x0dfa('0x6a')](_0x47ef36,_0x0dfa('0x1c'))[_0x0dfa('0x14')](',\x20')));}var _0x5d757c=_['find'](_0x50b91e[_0x0dfa('0x71')],{'uniqueid':_0x5b013d[_0x0dfa('0x5a')]});if(_0x5d757c&&_0x5d757c[_0x0dfa('0x5b')]){return ami[_0x0dfa('0x1a')]({'action':_0x0dfa('0x75'),'channel':_0x5d757c[_0x0dfa('0x5b')],'exten':_0x5b013d[_0x0dfa('0x76')],'context':_0x5b013d[_0x0dfa('0x77')]||_0x5d757c[_0x0dfa('0x77')],'priority':0x1})['then'](function(_0x1b3e83){_0x2e32eb({'code':0xc8,'message':[_0x5b013d[_0x0dfa('0x5a')],_0x1b3e83[_0x0dfa('0x1c')][_0x0dfa('0x61')]()][_0x0dfa('0x14')]('\x20')});})[_0x0dfa('0x1d')](function(_0x3c8641){_0x13f23d(_0x47221a[_0x0dfa('0x10')](0x1f5,[_0x5b013d[_0x0dfa('0x5a')],_0x3c8641[_0x0dfa('0x1c')]['toLowerCase']()][_0x0dfa('0x14')]('\x20')));});}else{return _0x13f23d(_0x47221a[_0x0dfa('0x10')](0x1f5,_0x0dfa('0x69')));}});},'Agents':function(_0xd61f76){return new Promise(function(_0x1541b0,_0x55571d){var _0x4d917b=_[_0x0dfa('0x57')](_0x50b91e[_0x0dfa('0xc')]);_0x1541b0({'count':_0x4d917b['length'],'rows':_0x4d917b});});},'Telephones':function(_0x207a7e){return new Promise(function(_0x49c24e,_0x22b554){var _0x31ad4b=_[_0x0dfa('0x57')](_0x50b91e[_0x0dfa('0x78')]);_0x49c24e({'count':_0x31ad4b[_0x0dfa('0x53')],'rows':_0x31ad4b});});},'Trunks':function(_0x1dfe90){return new Promise(function(_0x25c249,_0x300cf3){var _0xe5c893=_[_0x0dfa('0x57')](_0x50b91e['trunks']);_0x25c249({'count':_0xe5c893[_0x0dfa('0x53')],'rows':_0xe5c893});});},'OutboundChannels':function(_0x5cbd8c){return new Promise(function(_0x4060df,_0x10d2bb){var _0x5ccf40=_[_0x0dfa('0x57')](_0x50b91e[_0x0dfa('0x79')]);_0x4060df({'count':_0x5ccf40[_0x0dfa('0x53')],'rows':_0x5ccf40});});},'Outbound':function(_0x215164){return new Promise(function(_0x595432,_0x220503){_0x595432(_0x50b91e['outbound']);});},'Campaigns':function(_0x3293af){return new Promise(function(_0x457a6e,_0x235d55){var _0x246ec7=_['values'](_0x50b91e[_0x0dfa('0x7a')]);_0x457a6e({'count':_0x246ec7[_0x0dfa('0x53')],'rows':_0x246ec7});});},'VoiceQueuesPreview':function(_0x2fabad){var _0x1940c3=this;return new Promise(function(_0x43ed92,_0x9a23ac){_0x2f60d7[_0x0dfa('0x7b')](_0x2fabad['id'])['then'](function(_0x1422e3){_0x43ed92({'code':0xc8,'message':_0x1422e3[_0x0dfa('0x1c')]});})[_0x0dfa('0x1d')](function(_0x149c42){_0x9a23ac(_0x1940c3[_0x0dfa('0x10')](0x1f4,_0x149c42[_0x0dfa('0x1c')]));});});},'EventManager':function(_0xa31f6d){var _0x24b545=this;return new Promise(function(_0x1aaec4,_0x2d10fe){if(!_0xa31f6d[_0x0dfa('0x7c')]){return _0x2d10fe(_0x24b545['error'](0x1f4,'Event\x20name\x20mandatory'));}ami[_0x0dfa('0x7d')](_0x0dfa('0x7e')+_0xa31f6d[_0x0dfa('0x7c')],_0xa31f6d[_0x0dfa('0x1c')]);_0x1aaec4({'code':0xc8,'message':_0xa31f6d});});},'FaxAccounts':function(_0xf1a314){return new Promise(function(_0x415311,_0x5962b0){var _0x106093=_[_0x0dfa('0x57')](_0x50b91e['faxAccounts']);_0x415311({'count':_0x106093[_0x0dfa('0x53')],'rows':_0x106093});});},'SendFax':function(_0x4ec4e6){var _0x5bd9ca=this;return new Promise(function(_0x2160d8,_0x4ea5f9){_0x2efe20[_0x0dfa('0x7f')](_0x4ec4e6)[_0x0dfa('0x1b')](function(_0x279182){_0x2160d8({'code':0xc8,'message':_0x279182[_0x0dfa('0x1c')]});})['catch'](function(_0x588d9a){_0x4ea5f9(_0x5bd9ca[_0x0dfa('0x10')](0x1f4,_0x588d9a[_0x0dfa('0x1c')]));});});},'CheckAfterSend':function(_0x31c7e8){var _0x1fed70=this;return new Promise(function(_0x17c14f,_0x371df9){_0x2efe20[_0x0dfa('0x80')](_0x31c7e8)[_0x0dfa('0x1b')](function(_0x5a8633){_0x17c14f({'code':0xc8,'message':_0x5a8633[_0x0dfa('0x1c')]});})[_0x0dfa('0x1d')](function(_0x383be1){_0x371df9(_0x1fed70['error'](0x1f4,_0x383be1[_0x0dfa('0x1c')]));});});}};var _0xbe1c53=jayson['server'](_0x29ca78)['http']();_0xbe1c53['on'](_0x0dfa('0x10'),function(_0x464bc1){return _0x417f7a(_0x464bc1);});_0xbe1c53['listen'](0x232a,_0x0dfa('0x81'),function(){console[_0x0dfa('0x82')](_0x0dfa('0x83'),0x232a);return _0x4830b6('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
index 1275646..96ae5df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d6=['isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','phone','[CM][%s][%s]\x20Autocreate\x20enabled','routeId','calleridname','<unknown>','Unknown','destcalleridname','push','[CM][%s][%s]\x20Autocreate\x20disabled','user:%s','name','format','action','toLowerCase','merge','lodash','bluebird','ioredis','util','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','localhost','info','emit','exec','data1','data2','isNil','data5','xmd-contactid','ListId','data3','split','$or','map','destcalleridnum','calleridnum','firstName','mobile','createdAt','scheduledAt','updatedAt','union','resolve','then','getContacts'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x352db0,_0x2d2422){_0x352db0=_0x352db0-0x0;var _0xfc6d4a=_0xd6d6[_0x352db0];return _0xfc6d4a;};'use strict';var _=require(_0x6d6d('0x0'));var BPromise=require(_0x6d6d('0x1'));var Redis=require(_0x6d6d('0x2'));var util=require(_0x6d6d('0x3'));var config=require('../../../../config/environment');var logger=require(_0x6d6d('0x4'))(_0x6d6d('0x5'));var cmContactRpc=require(_0x6d6d('0x6'));config[_0x6d6d('0x7')]=_[_0x6d6d('0x8')](config[_0x6d6d('0x7')],{'host':_0x6d6d('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6d6d('0x7')]));function emit(_0x1bf731,_0x44f83d,_0x18f824,_0xd49f57,_0x408f88){logger[_0x6d6d('0xa')]('[CM][%s][%s]',_0x1bf731,_0x44f83d['id'],_0x18f824,_0xd49f57,JSON['stringify'](_0x408f88));io['to'](_0x18f824)[_0x6d6d('0xb')](_0xd49f57,_0x408f88);}exports[_0x6d6d('0xc')]=function(_0x23b18a,_0x290dfb,_0xf84314,_0x576c88){var _0x1f2b86,_0x158f82;var _0x49b59c={};var _0x4fbe9c=Number(_0xf84314[_0x6d6d('0xd')]);var _0x32146d=_0xf84314[_0x6d6d('0xe')]?Boolean(Number(_0xf84314[_0x6d6d('0xe')])):![];var _0x2b74ed;var _0x41fbdf=![];if(!_[_0x6d6d('0xf')](_0xf84314[_0x6d6d('0x10')])){if(_0xf84314['data5']=='1')_0x41fbdf=!![];}if(!_0x41fbdf){if(_0x576c88[_0x6d6d('0x11')]){_0x49b59c['id']=_0x576c88[_0x6d6d('0x11')];}}if(!_0x49b59c['id']){_0x49b59c[_0x6d6d('0x12')]=_0x4fbe9c;_0x2b74ed=_0xf84314[_0x6d6d('0x13')]&&_0xf84314[_0x6d6d('0x13')]!=='0'?_0xf84314['data3'][_0x6d6d('0x14')](','):['phone'];_0x49b59c[_0x6d6d('0x15')]=_[_0x6d6d('0x16')](_0x2b74ed,function(_0x1cc02b){var _0x4bb3d1={};_0x4bb3d1[_0x1cc02b]=_0x576c88['routeId']?_0x576c88[_0x6d6d('0x17')]:_0x576c88[_0x6d6d('0x18')];return _0x4bb3d1;});}var _0x2b59d4=['id',_0x6d6d('0x19'),'lastName','phone',_0x6d6d('0x1a'),'fax',_0x6d6d('0x12'),_0x6d6d('0x1b'),_0x6d6d('0x1c'),_0x6d6d('0x1d')];var _0x40d35b=_[_0x6d6d('0x1e')](_0x2b59d4,_0x2b74ed);BPromise[_0x6d6d('0x1f')]()[_0x6d6d('0x20')](cmContactRpc[_0x6d6d('0x21')]({'attributes':_0x40d35b,'where':_0x49b59c}))[_0x6d6d('0x20')](function(_0x24b10d){_0x158f82=_0x24b10d;if(!_[_0x6d6d('0x22')](_0x158f82)){if(_0x158f82[_0x6d6d('0x23')]===0x1){_0x1f2b86=_0x158f82[0x0];logger[_0x6d6d('0xa')](_0x6d6d('0x24'),_0x576c88[_0x6d6d('0x25')],_0x290dfb['id'],_0x1f2b86['id']);}else{logger[_0x6d6d('0xa')]('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x576c88[_0x6d6d('0x25')],_0x290dfb['id'],_[_0x6d6d('0x16')](_0x158f82,'id')[_0x6d6d('0x26')](','));}return;}else{logger[_0x6d6d('0xa')](_0x6d6d('0x27'),_0x576c88[_0x6d6d('0x25')],_0x290dfb['id']);var _0x554f8e={'ListId':_0x4fbe9c};var _0x2851dd=_0xf84314[_0x6d6d('0x28')]&&_0xf84314[_0x6d6d('0x28')]!=='0'?_0xf84314[_0x6d6d('0x28')]:_0x6d6d('0x29');if(_0x32146d){logger[_0x6d6d('0xa')](_0x6d6d('0x2a'),_0x576c88['uniqueid'],_0x290dfb['id']);_0x554f8e[_0x2851dd]=_[_0x6d6d('0xf')](_0x576c88[_0x6d6d('0x2b')])?_0x576c88['calleridnum']:_0x576c88['destcalleridnum'];if(_[_0x6d6d('0xf')](_0x576c88[_0x6d6d('0x2b')])){_0x554f8e[_0x6d6d('0x19')]=_0x576c88['calleridname']&&_0x576c88[_0x6d6d('0x2c')]!==_0x6d6d('0x2d')?_0x576c88[_0x6d6d('0x2c')]:_0x6d6d('0x2e');}else{_0x554f8e[_0x6d6d('0x19')]=_0x576c88[_0x6d6d('0x2f')]&&_0x576c88[_0x6d6d('0x2f')]!==_0x6d6d('0x2d')?_0x576c88[_0x6d6d('0x2f')]:_0x6d6d('0x2e');}return BPromise['resolve']()[_0x6d6d('0x20')](cmContactRpc['createContact'](_0x554f8e))[_0x6d6d('0x20')](function(_0x1ea9b2){_0x1f2b86=_0x1ea9b2;_0x158f82[_0x6d6d('0x30')](_0x1ea9b2);if(_0x1f2b86){logger[_0x6d6d('0xa')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x576c88[_0x6d6d('0x25')],_0x290dfb['id'],_0x1f2b86['id']);}return;});}else{logger['info'](_0x6d6d('0x31'),_0x576c88[_0x6d6d('0x25')],_0x290dfb['id']);_0x554f8e[_0x2851dd]=_['isNil'](_0x576c88[_0x6d6d('0x2b')])?_0x576c88[_0x6d6d('0x18')]:_0x576c88[_0x6d6d('0x17')];if(_[_0x6d6d('0xf')](_0x576c88[_0x6d6d('0x2b')])){_0x554f8e[_0x6d6d('0x19')]=_0x576c88[_0x6d6d('0x2c')]&&_0x576c88[_0x6d6d('0x2c')]!==_0x6d6d('0x2d')?_0x576c88[_0x6d6d('0x2c')]:_0x6d6d('0x2e');}else{_0x554f8e[_0x6d6d('0x19')]=_0x576c88[_0x6d6d('0x2f')]&&_0x576c88[_0x6d6d('0x2f')]!=='<unknown>'?_0x576c88[_0x6d6d('0x2f')]:_0x6d6d('0x2e');}_0x1f2b86=_0x554f8e;_0x158f82[_0x6d6d('0x30')](_0x554f8e);return;}}})[_0x6d6d('0x20')](function(){if(_0x23b18a){emit(_0x576c88['uniqueid'],_0x290dfb,util['format'](_0x6d6d('0x32'),_0x23b18a[_0x6d6d('0x33')]),util[_0x6d6d('0x34')]('trigger:%s',_0xf84314[_0x6d6d('0x35')][_0x6d6d('0x36')]()),{'evt':_[_0x6d6d('0x37')](_0x576c88,{'autoCreate':_0x32146d}),'contact':_0x1f2b86===undefined?{}:_0x1f2b86,'contacts':_0x158f82[_0x6d6d('0x23')]===0x0?undefined:_0x158f82});}});};
\ No newline at end of file
+var _0xa8a8=['resolve','then','getContacts','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','calleridname','<unknown>','Unknown','destcalleridname','createContact','push','[CM][%s][%s]\x20Autocreate\x20disabled','routeId','format','trigger:%s','action','toLowerCase','merge','lodash','bluebird','ioredis','util','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','localhost','socket.io-emitter','info','emit','data1','data2','isNil','data5','xmd-contactid','ListId','data3','phone','$or','map','destcalleridnum','calleridnum','firstName','lastName','updatedAt','union'];(function(_0x5723a1,_0x624b39){var _0x3a01e9=function(_0x22e30e){while(--_0x22e30e){_0x5723a1['push'](_0x5723a1['shift']());}};_0x3a01e9(++_0x624b39);}(_0xa8a8,0xec));var _0x8a8a=function(_0x92772e,_0x197fa5){_0x92772e=_0x92772e-0x0;var _0x352302=_0xa8a8[_0x92772e];return _0x352302;};'use strict';var _=require(_0x8a8a('0x0'));var BPromise=require(_0x8a8a('0x1'));var Redis=require(_0x8a8a('0x2'));var util=require(_0x8a8a('0x3'));var config=require('../../../../config/environment');var logger=require(_0x8a8a('0x4'))(_0x8a8a('0x5'));var cmContactRpc=require(_0x8a8a('0x6'));config[_0x8a8a('0x7')]=_[_0x8a8a('0x8')](config[_0x8a8a('0x7')],{'host':_0x8a8a('0x9'),'port':0x18eb});var io=require(_0x8a8a('0xa'))(new Redis(config[_0x8a8a('0x7')]));function emit(_0x315fe9,_0x1d7121,_0x8e7aa0,_0x4225b9,_0xecaa6f){logger[_0x8a8a('0xb')]('[CM][%s][%s]',_0x315fe9,_0x1d7121['id'],_0x8e7aa0,_0x4225b9,JSON['stringify'](_0xecaa6f));io['to'](_0x8e7aa0)[_0x8a8a('0xc')](_0x4225b9,_0xecaa6f);}exports['exec']=function(_0x11788d,_0x3d3a00,_0x532621,_0x118380){var _0x76b586,_0xb13fca;var _0x5e448d={};var _0x679da2=Number(_0x532621[_0x8a8a('0xd')]);var _0x330796=_0x532621[_0x8a8a('0xe')]?Boolean(Number(_0x532621['data2'])):![];var _0x23febf;var _0x4e5d74=![];if(!_[_0x8a8a('0xf')](_0x532621[_0x8a8a('0x10')])){if(_0x532621[_0x8a8a('0x10')]=='1')_0x4e5d74=!![];}if(!_0x4e5d74){if(_0x118380[_0x8a8a('0x11')]){_0x5e448d['id']=_0x118380[_0x8a8a('0x11')];}}if(!_0x5e448d['id']){_0x5e448d[_0x8a8a('0x12')]=_0x679da2;_0x23febf=_0x532621[_0x8a8a('0x13')]&&_0x532621['data3']!=='0'?_0x532621[_0x8a8a('0x13')]['split'](','):[_0x8a8a('0x14')];_0x5e448d[_0x8a8a('0x15')]=_[_0x8a8a('0x16')](_0x23febf,function(_0x4291e9){var _0x42e8b6={};_0x42e8b6[_0x4291e9]=_0x118380['routeId']?_0x118380[_0x8a8a('0x17')]:_0x118380[_0x8a8a('0x18')];return _0x42e8b6;});}var _0x262ca9=['id',_0x8a8a('0x19'),_0x8a8a('0x1a'),_0x8a8a('0x14'),'mobile','fax','ListId','createdAt','scheduledAt',_0x8a8a('0x1b')];var _0x45095b=_[_0x8a8a('0x1c')](_0x262ca9,_0x23febf);BPromise[_0x8a8a('0x1d')]()[_0x8a8a('0x1e')](cmContactRpc[_0x8a8a('0x1f')]({'attributes':_0x45095b,'where':_0x5e448d}))[_0x8a8a('0x1e')](function(_0xe0321c){_0xb13fca=_0xe0321c;if(!_[_0x8a8a('0x20')](_0xb13fca)){if(_0xb13fca[_0x8a8a('0x21')]===0x1){_0x76b586=_0xb13fca[0x0];logger[_0x8a8a('0xb')](_0x8a8a('0x22'),_0x118380[_0x8a8a('0x23')],_0x3d3a00['id'],_0x76b586['id']);}else{logger[_0x8a8a('0xb')](_0x8a8a('0x24'),_0x118380['uniqueid'],_0x3d3a00['id'],_[_0x8a8a('0x16')](_0xb13fca,'id')[_0x8a8a('0x25')](','));}return;}else{logger[_0x8a8a('0xb')](_0x8a8a('0x26'),_0x118380[_0x8a8a('0x23')],_0x3d3a00['id']);var _0x251315={'ListId':_0x679da2};var _0x3aa46d=_0x532621['data4']&&_0x532621[_0x8a8a('0x27')]!=='0'?_0x532621[_0x8a8a('0x27')]:_0x8a8a('0x14');if(_0x330796){logger['info']('[CM][%s][%s]\x20Autocreate\x20enabled',_0x118380[_0x8a8a('0x23')],_0x3d3a00['id']);_0x251315[_0x3aa46d]=_[_0x8a8a('0xf')](_0x118380['routeId'])?_0x118380['calleridnum']:_0x118380['destcalleridnum'];if(_[_0x8a8a('0xf')](_0x118380['routeId'])){_0x251315[_0x8a8a('0x19')]=_0x118380[_0x8a8a('0x28')]&&_0x118380['calleridname']!==_0x8a8a('0x29')?_0x118380[_0x8a8a('0x28')]:_0x8a8a('0x2a');}else{_0x251315[_0x8a8a('0x19')]=_0x118380[_0x8a8a('0x2b')]&&_0x118380[_0x8a8a('0x2b')]!==_0x8a8a('0x29')?_0x118380[_0x8a8a('0x2b')]:'Unknown';}return BPromise['resolve']()['then'](cmContactRpc[_0x8a8a('0x2c')](_0x251315))[_0x8a8a('0x1e')](function(_0x5f301e){_0x76b586=_0x5f301e;_0xb13fca[_0x8a8a('0x2d')](_0x5f301e);if(_0x76b586){logger[_0x8a8a('0xb')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x118380[_0x8a8a('0x23')],_0x3d3a00['id'],_0x76b586['id']);}return;});}else{logger[_0x8a8a('0xb')](_0x8a8a('0x2e'),_0x118380['uniqueid'],_0x3d3a00['id']);_0x251315[_0x3aa46d]=_['isNil'](_0x118380[_0x8a8a('0x2f')])?_0x118380['calleridnum']:_0x118380[_0x8a8a('0x17')];if(_[_0x8a8a('0xf')](_0x118380[_0x8a8a('0x2f')])){_0x251315[_0x8a8a('0x19')]=_0x118380[_0x8a8a('0x28')]&&_0x118380[_0x8a8a('0x28')]!==_0x8a8a('0x29')?_0x118380[_0x8a8a('0x28')]:_0x8a8a('0x2a');}else{_0x251315[_0x8a8a('0x19')]=_0x118380[_0x8a8a('0x2b')]&&_0x118380[_0x8a8a('0x2b')]!==_0x8a8a('0x29')?_0x118380[_0x8a8a('0x2b')]:_0x8a8a('0x2a');}_0x76b586=_0x251315;_0xb13fca[_0x8a8a('0x2d')](_0x251315);return;}}})[_0x8a8a('0x1e')](function(){if(_0x11788d){emit(_0x118380[_0x8a8a('0x23')],_0x3d3a00,util['format']('user:%s',_0x11788d['name']),util[_0x8a8a('0x30')](_0x8a8a('0x31'),_0x532621[_0x8a8a('0x32')][_0x8a8a('0x33')]()),{'evt':_[_0x8a8a('0x34')](_0x118380,{'autoCreate':_0x330796}),'contact':_0x76b586===undefined?{}:_0x76b586,'contacts':_0xb13fca['length']===0x0?undefined:_0xb13fca});}});};
\ No newline at end of file
index 82ec505..4500c2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab03=['mustache','./urlforward','./integration','./cmContact','./script','trigger','../ami','defaults','redis','localhost','socket.io-emitter','popup','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','freshsalesAccounts','accounts','dynamics365Accounts','custom:agentcalled','syncCustomEvent','custom:agentconnect','bind','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:closedinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','prototype','emit','info','stringify','undefined','motionChannel','voice','checkTriggers','hasOwnProperty','status','checkTrigger','merge','variables','Actions','length','interface','toLowerCase','motionbar','browser','html','data2','uri','buildUri','isNil','data3','location','uriLocation','windowWidth','data5','800','600','data6','winApplication','render','format','user:%s','trigger:%s:%s','action','data1','jscripty','name','contactmanager','exec','queue','urlforward','script','replace','channel','AllConditions','every','checkConditions','AnyConditions','some','field','account','chat','ChatWebsiteId','operator','value','AccountId','upperFirst','interaction','message','event','membername','lastevent','routeId','mailSubstatus','substatus','exports','util','url'];(function(_0x44b160,_0x51939a){var _0x3c3627=function(_0x525341){while(--_0x525341){_0x44b160['push'](_0x44b160['shift']());}};_0x3c3627(++_0x51939a);}(_0xab03,0x7b));var _0x3ab0=function(_0x24cec4,_0x2c1b5c){_0x24cec4=_0x24cec4-0x0;var _0x262e18=_0xab03[_0x24cec4];return _0x262e18;};'use strict';var util=require(_0x3ab0('0x0'));var _=require('lodash');var url=require(_0x3ab0('0x1'));var Mustache=require(_0x3ab0('0x2'));var Redis=require('ioredis');var urlforward=require(_0x3ab0('0x3'));var integration=require(_0x3ab0('0x4'));var cmContact=require(_0x3ab0('0x5'));var script=require(_0x3ab0('0x6'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x3ab0('0x7'));var ami=require(_0x3ab0('0x8'));config['redis']=_[_0x3ab0('0x9')](config[_0x3ab0('0xa')],{'host':_0x3ab0('0xb'),'port':0x18eb});var io=require(_0x3ab0('0xc'))(new Redis(config[_0x3ab0('0xa')]));var operators={'equals':function(_0x1a42ff,_0x52e1db){return _0x1a42ff==_0x52e1db;},'not_equals':function(_0x136008,_0x162985){return _0x136008!=_0x162985;}};var barAndWebActions=[_0x3ab0('0xd'),_0x3ab0('0x1'),_0x3ab0('0xe')];function Trigger(_0x1c5b74){this[_0x3ab0('0xf')]=_0x1c5b74[_0x3ab0('0xf')];this['agents']=_0x1c5b74[_0x3ab0('0x10')];this[_0x3ab0('0x11')]=_0x1c5b74[_0x3ab0('0x11')];this[_0x3ab0('0x12')]=_0x1c5b74[_0x3ab0('0x12')];this[_0x3ab0('0x13')]=_0x1c5b74[_0x3ab0('0x13')];this[_0x3ab0('0x14')]=_0x1c5b74['zendeskAccounts'];this[_0x3ab0('0x15')]=_0x1c5b74[_0x3ab0('0x15')];this['salesforceAccounts']=_0x1c5b74[_0x3ab0('0x16')];this['sugarcrmAccounts']=_0x1c5b74[_0x3ab0('0x17')];this['zohoAccounts']=_0x1c5b74[_0x3ab0('0x18')];this[_0x3ab0('0x19')]=_0x1c5b74[_0x3ab0('0x19')];this[_0x3ab0('0x1a')]=_0x1c5b74[_0x3ab0('0x1a')];this[_0x3ab0('0x1b')]=_0x1c5b74[_0x3ab0('0x1b')];this['dynamics365Accounts']=_0x1c5b74['dynamics365Accounts'];this['freshsalesAccounts']=_0x1c5b74[_0x3ab0('0x1c')];this[_0x3ab0('0x1d')]={'zendesk':this[_0x3ab0('0x14')],'salesforce':this[_0x3ab0('0x16')],'freshdesk':this['freshdeskAccounts'],'sugarcrm':this[_0x3ab0('0x17')],'zoho':this['zohoAccounts'],'desk':this[_0x3ab0('0x19')],'vtiger':this[_0x3ab0('0x1a')],'dynamics365':this[_0x3ab0('0x1e')],'freshsales':this['freshsalesAccounts'],'servicenow':this[_0x3ab0('0x1b')]};ami['on'](_0x3ab0('0x1f'),this[_0x3ab0('0x20')]['bind'](this));ami['on'](_0x3ab0('0x21'),this[_0x3ab0('0x20')][_0x3ab0('0x22')](this));ami['on'](_0x3ab0('0x23'),this['syncCustomEvent'][_0x3ab0('0x22')](this));ami['on'](_0x3ab0('0x24'),this[_0x3ab0('0x20')]['bind'](this));ami['on'](_0x3ab0('0x25'),this[_0x3ab0('0x20')][_0x3ab0('0x22')](this));ami['on'](_0x3ab0('0x26'),this[_0x3ab0('0x20')][_0x3ab0('0x22')](this));ami['on'](_0x3ab0('0x27'),this['syncCustomEvent'][_0x3ab0('0x22')](this));ami['on'](_0x3ab0('0x28'),this[_0x3ab0('0x20')][_0x3ab0('0x22')](this));ami['on'](_0x3ab0('0x29'),this[_0x3ab0('0x20')]['bind'](this));ami['on'](_0x3ab0('0x2a'),this['syncCustomEvent'][_0x3ab0('0x22')](this));ami['on'](_0x3ab0('0x2b'),this[_0x3ab0('0x20')][_0x3ab0('0x22')](this));ami['on'](_0x3ab0('0x2c'),this['syncCustomEvent']['bind'](this));ami['on'](_0x3ab0('0x2d'),this[_0x3ab0('0x2e')][_0x3ab0('0x22')](this));ami['on'](_0x3ab0('0x2f'),this[_0x3ab0('0x2e')]['bind'](this));ami['on'](_0x3ab0('0x30'),this[_0x3ab0('0x2e')][_0x3ab0('0x22')](this));ami['on']('custom:newinteraction',this['syncCustomEvent'][_0x3ab0('0x22')](this));ami['on'](_0x3ab0('0x31'),this['syncCustomEvent']['bind'](this));ami['on'](_0x3ab0('0x32'),this[_0x3ab0('0x20')][_0x3ab0('0x22')](this));ami['on'](_0x3ab0('0x33'),this['syncCustomEvent'][_0x3ab0('0x22')](this));ami['on'](_0x3ab0('0x34'),this['syncCustomEvent']['bind'](this));ami['on'](_0x3ab0('0x35'),this[_0x3ab0('0x20')][_0x3ab0('0x22')](this));ami['on'](_0x3ab0('0x36'),this[_0x3ab0('0x20')][_0x3ab0('0x22')](this));}Trigger[_0x3ab0('0x37')][_0x3ab0('0x38')]=function(_0x40c042,_0x13c831,_0x2c5ce8){logger[_0x3ab0('0x39')](_0x40c042,_0x13c831,JSON[_0x3ab0('0x3a')](_0x2c5ce8));io['to'](_0x40c042)[_0x3ab0('0x38')](_0x13c831,_0x2c5ce8);};Trigger[_0x3ab0('0x37')][_0x3ab0('0x20')]=function(_0x181e82){var _0x2bf2ff=_['clone'](_0x181e82);if(typeof _0x2bf2ff['motionChannel']===_0x3ab0('0x3b')){_0x2bf2ff[_0x3ab0('0x3c')]=_0x3ab0('0x3d');}this[_0x3ab0('0x3e')](_0x2bf2ff);};Trigger[_0x3ab0('0x37')]['syncAgentDial']=function(_0x164ac7){if(this[_0x3ab0('0x10')][_0x164ac7['interface']]){this[_0x3ab0('0x20')](_0x164ac7);}};Trigger[_0x3ab0('0x37')][_0x3ab0('0x3e')]=function(_0x321c48){var _0x3ee372;for(var _0x37518b in this[_0x3ab0('0xf')]){if(this[_0x3ab0('0xf')][_0x3ab0('0x3f')](_0x37518b)){if(this[_0x3ab0('0xf')][_0x37518b][_0x3ab0('0x40')]){_0x3ee372=this[_0x3ab0('0x41')](this[_0x3ab0('0xf')][_0x37518b],_0x321c48);if(_0x3ee372){_[_0x3ab0('0x42')](_0x321c48,_0x321c48[_0x3ab0('0x43')]);for(var _0x2e1376=0x0,_0x296595,_0x1ff3d1,_0x51c92b;_0x2e1376<this['triggers'][_0x37518b][_0x3ab0('0x44')][_0x3ab0('0x45')];_0x2e1376+=0x1){_0x296595=this['triggers'][_0x37518b]['Actions'][_0x2e1376];if(this[_0x3ab0('0x10')][_0x321c48[_0x3ab0('0x46')]]){switch(_0x296595['action'][_0x3ab0('0x47')]()){case'contactmanager':break;case _0x3ab0('0x48'):case _0x3ab0('0x49'):var _0x37ee63={};switch(barAndWebActions[_0x296595['data1']]){case _0x3ab0('0xd'):_0x37ee63['TemplateId']=_0x296595['data2'];_0x37ee63[_0x3ab0('0x4a')]=this['templates'][_0x296595[_0x3ab0('0x4b')]]?Mustache['render'](this['templates'][_0x296595[_0x3ab0('0x4b')]]['html'],_0x321c48):'template\x20not\x20found';break;case'url':_0x37ee63[_0x3ab0('0x4c')]=this[_0x3ab0('0x4d')](_0x296595[_0x3ab0('0x4b')],_0x321c48,_[_0x3ab0('0x4e')](_0x296595[_0x3ab0('0x4f')])?!![]:parseInt(_0x296595[_0x3ab0('0x4f')],0xa));if(_[_0x3ab0('0x4e')](_0x296595['data4'])){_0x37ee63[_0x3ab0('0x50')]='0';}else{_0x37ee63[_0x3ab0('0x51')]=_0x296595['data4'];_0x37ee63[_0x3ab0('0x52')]=_[_0x3ab0('0x4e')](_0x296595[_0x3ab0('0x53')])?_0x3ab0('0x54'):_0x296595[_0x3ab0('0x53')];_0x37ee63['windowHeight']=_[_0x3ab0('0x4e')](_0x296595['data6'])?_0x3ab0('0x55'):_0x296595[_0x3ab0('0x56')];}break;case _0x3ab0('0xe'):_0x37ee63[_0x3ab0('0x57')]=_0x296595[_0x3ab0('0x4b')]?Mustache[_0x3ab0('0x58')](_0x296595['data2'],_0x321c48):'';_0x37ee63['winArguments']=_0x296595[_0x3ab0('0x4f')]?Mustache[_0x3ab0('0x58')](_0x296595[_0x3ab0('0x4f')],_0x321c48):'';break;}this['emit'](util[_0x3ab0('0x59')](_0x3ab0('0x5a'),this[_0x3ab0('0x10')][_0x321c48[_0x3ab0('0x46')]]['name']),util[_0x3ab0('0x59')](_0x3ab0('0x5b'),_0x296595[_0x3ab0('0x5c')][_0x3ab0('0x47')](),barAndWebActions[_0x296595[_0x3ab0('0x5d')]]),_[_0x3ab0('0x42')](_0x37ee63,_0x321c48));break;case _0x3ab0('0x5e'):this[_0x3ab0('0x38')](util[_0x3ab0('0x59')](_0x3ab0('0x5a'),this[_0x3ab0('0x10')][_0x321c48[_0x3ab0('0x46')]][_0x3ab0('0x5f')]),util[_0x3ab0('0x59')]('trigger:%s',_0x296595['action'][_0x3ab0('0x47')]()),_[_0x3ab0('0x42')]({'ProjectId':parseInt(_0x296595[_0x3ab0('0x5d')],0xa)},_0x321c48));break;default:this[_0x3ab0('0x38')](util[_0x3ab0('0x59')](_0x3ab0('0x5a'),this[_0x3ab0('0x10')][_0x321c48['interface']][_0x3ab0('0x5f')]),util['format']('trigger:%s',_0x296595[_0x3ab0('0x5c')][_0x3ab0('0x47')]()),_[_0x3ab0('0x42')]({},_0x296595,_0x321c48));}}switch(_0x296595[_0x3ab0('0x5c')][_0x3ab0('0x47')]()){case _0x3ab0('0x60'):cmContact[_0x3ab0('0x61')](this[_0x3ab0('0x10')][_0x321c48[_0x3ab0('0x46')]],this[_0x3ab0('0xf')][_0x37518b],_0x296595,_0x321c48);break;case'integration':integration[_0x3ab0('0x61')](_0x296595,_0x321c48,this[_0x3ab0('0x1d')],this[_0x3ab0('0x10')][_0x321c48[_0x3ab0('0x46')]],this[_0x3ab0('0x11')][_0x321c48[_0x3ab0('0x62')]],this[_0x3ab0('0x13')][_0x321c48['routeId']]);break;case _0x3ab0('0x63'):urlforward[_0x3ab0('0x61')](_0x296595,_0x321c48);break;case _0x3ab0('0x64'):script['exec'](_0x296595,_0x321c48);break;}}}}}}};Trigger[_0x3ab0('0x37')][_0x3ab0('0x4d')]=function(_0x2444a3,_0x5b649e,_0x400f74){var _0x3d76b8=url['parse'](Mustache['render'](_0x2444a3,_0x5b649e),!![]);if(_0x400f74){_['merge'](_0x3d76b8['query'],_0x5b649e);}delete _0x3d76b8['search'];var _0x932f8e=url[_0x3ab0('0x59')](_0x3d76b8);_0x932f8e=_0x932f8e[_0x3ab0('0x65')](/\/\?/g,'?');return _0x932f8e;};Trigger['prototype'][_0x3ab0('0x41')]=function(_0x213858,_0x3ce5fa){var _0x566a53=!![];var _0x3ab696=!![];var _0x4b307a=![];if(_0x213858[_0x3ab0('0x66')]===_0x3ce5fa[_0x3ab0('0x3c')]){_0x4b307a=!![];}if(_0x213858[_0x3ab0('0x67')][_0x3ab0('0x45')]){_0x566a53=_[_0x3ab0('0x68')](_0x213858[_0x3ab0('0x67')],this[_0x3ab0('0x69')](_0x3ce5fa,_0x213858[_0x3ab0('0x66')]));}if(_0x213858[_0x3ab0('0x6a')][_0x3ab0('0x45')]){_0x3ab696=_[_0x3ab0('0x6b')](_0x213858['AnyConditions'],this[_0x3ab0('0x69')](_0x3ce5fa,_0x213858['channel']));}return _0x4b307a&&_0x566a53&&_0x3ab696;};Trigger['prototype'][_0x3ab0('0x69')]=function(_0x10ffd2,_0x411a92){return function(_0x3b0cc4){switch(_0x3b0cc4[_0x3ab0('0x6c')]){case _0x3ab0('0x6d'):if(_0x10ffd2['channel']===_0x411a92){if(_0x411a92===_0x3ab0('0x6e')){return _0x10ffd2[_0x3ab0('0x6f')]?operators[_0x3b0cc4[_0x3ab0('0x70')]](Number(_0x3b0cc4[_0x3ab0('0x71')]),_0x10ffd2[_0x3ab0('0x6f')]):![];}else{return _0x10ffd2[_['upperFirst'](_0x411a92)+_0x3ab0('0x72')]?operators[_0x3b0cc4[_0x3ab0('0x70')]](Number(_0x3b0cc4[_0x3ab0('0x71')]),_0x10ffd2[_[_0x3ab0('0x73')](_0x411a92)+'AccountId']):![];}}break;case _0x3ab0('0x74'):case _0x3ab0('0x75'):if(_0x10ffd2[_0x3ab0('0x66')]===_0x411a92){return _0x10ffd2[_0x3ab0('0x76')]?operators[_0x3b0cc4[_0x3ab0('0x70')]](_0x3b0cc4[_0x3ab0('0x71')],_0x10ffd2[_0x3ab0('0x76')]):![];}break;case _0x3ab0('0x62'):return _0x10ffd2['queue']?operators[_0x3b0cc4[_0x3ab0('0x70')]](_0x3b0cc4[_0x3ab0('0x71')],_0x10ffd2['queue']):![];case'agent':return _0x10ffd2[_0x3ab0('0x77')]?operators[_0x3b0cc4[_0x3ab0('0x70')]](_0x3b0cc4[_0x3ab0('0x71')],_0x10ffd2['membername']):![];case _0x3ab0('0x78'):return _0x10ffd2['lastevent']?operators[_0x3b0cc4[_0x3ab0('0x70')]](_0x3b0cc4[_0x3ab0('0x71')],_0x10ffd2[_0x3ab0('0x78')]):![];case _0x3ab0('0x79'):return _0x10ffd2[_0x3ab0('0x79')]?operators[_0x3b0cc4['operator']](_0x3b0cc4['value'],_0x10ffd2['routeId']):![];case _0x3ab0('0x7a'):if(_0x3b0cc4[_0x3ab0('0x71')]==='null')_0x3b0cc4['value']=null;return typeof _0x10ffd2[_0x3ab0('0x7b')]!=='undefined'?operators[_0x3b0cc4[_0x3ab0('0x70')]](_0x3b0cc4[_0x3ab0('0x71')],_0x10ffd2[_0x3ab0('0x7b')]):![];}return![];};};module[_0x3ab0('0x7c')]=Trigger;
\ No newline at end of file
+var _0x2884=['redis','localhost','socket.io-emitter','popup','winapp','triggers','agents','voiceQueues','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','vtigerAccounts','custom:agentcalled','bind','custom:agentconnect','syncCustomEvent','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:queuecallerabandon','custom:timeout','custom:dialbegin','custom:dialconnect','syncAgentDial','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','info','emit','prototype','clone','motionChannel','undefined','voice','checkTriggers','interface','hasOwnProperty','status','checkTrigger','variables','Actions','length','action','contactmanager','browser','data1','TemplateId','html','templates','data2','render','template\x20not\x20found','uri','isNil','data4','location','uriLocation','windowWidth','800','data5','windowHeight','data6','winArguments','data3','format','user:%s','trigger:%s:%s','toLowerCase','merge','jscripty','name','trigger:%s','integration','exec','queue','routeId','urlforward','script','buildUri','parse','query','search','channel','AllConditions','every','some','checkConditions','field','account','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','membername','lastevent','mailSubstatus','null','substatus','exports','util','lodash','url','ioredis','./urlforward','./integration','../../../config/environment','../../../config/logger','trigger','../ami','defaults'];(function(_0x333f9f,_0x4bf7f1){var _0x126182=function(_0x4f3402){while(--_0x4f3402){_0x333f9f['push'](_0x333f9f['shift']());}};_0x126182(++_0x4bf7f1);}(_0x2884,0xfb));var _0x4288=function(_0x5d3bac,_0x2eb657){_0x5d3bac=_0x5d3bac-0x0;var _0x2c8242=_0x2884[_0x5d3bac];return _0x2c8242;};'use strict';var util=require(_0x4288('0x0'));var _=require(_0x4288('0x1'));var url=require(_0x4288('0x2'));var Mustache=require('mustache');var Redis=require(_0x4288('0x3'));var urlforward=require(_0x4288('0x4'));var integration=require(_0x4288('0x5'));var cmContact=require('./cmContact');var script=require('./script');var config=require(_0x4288('0x6'));var logger=require(_0x4288('0x7'))(_0x4288('0x8'));var ami=require(_0x4288('0x9'));config['redis']=_[_0x4288('0xa')](config[_0x4288('0xb')],{'host':_0x4288('0xc'),'port':0x18eb});var io=require(_0x4288('0xd'))(new Redis(config[_0x4288('0xb')]));var operators={'equals':function(_0x4c37bc,_0x145c68){return _0x4c37bc==_0x145c68;},'not_equals':function(_0x76d823,_0xe77c3c){return _0x76d823!=_0xe77c3c;}};var barAndWebActions=[_0x4288('0xe'),'url',_0x4288('0xf')];function Trigger(_0x4d30a4){this[_0x4288('0x10')]=_0x4d30a4[_0x4288('0x10')];this[_0x4288('0x11')]=_0x4d30a4[_0x4288('0x11')];this[_0x4288('0x12')]=_0x4d30a4[_0x4288('0x12')];this['templates']=_0x4d30a4['templates'];this['voiceExtensions']=_0x4d30a4[_0x4288('0x13')];this[_0x4288('0x14')]=_0x4d30a4['zendeskAccounts'];this['freshdeskAccounts']=_0x4d30a4[_0x4288('0x15')];this[_0x4288('0x16')]=_0x4d30a4[_0x4288('0x16')];this['sugarcrmAccounts']=_0x4d30a4[_0x4288('0x17')];this[_0x4288('0x18')]=_0x4d30a4[_0x4288('0x18')];this[_0x4288('0x19')]=_0x4d30a4['deskAccounts'];this['vtigerAccounts']=_0x4d30a4['vtigerAccounts'];this['servicenowAccounts']=_0x4d30a4[_0x4288('0x1a')];this['dynamics365Accounts']=_0x4d30a4[_0x4288('0x1b')];this[_0x4288('0x1c')]=_0x4d30a4['freshsalesAccounts'];this[_0x4288('0x1d')]={'zendesk':this['zendeskAccounts'],'salesforce':this[_0x4288('0x16')],'freshdesk':this[_0x4288('0x15')],'sugarcrm':this['sugarcrmAccounts'],'zoho':this[_0x4288('0x18')],'desk':this[_0x4288('0x19')],'vtiger':this[_0x4288('0x1e')],'dynamics365':this[_0x4288('0x1b')],'freshsales':this[_0x4288('0x1c')],'servicenow':this['servicenowAccounts']};ami['on'](_0x4288('0x1f'),this['syncCustomEvent'][_0x4288('0x20')](this));ami['on'](_0x4288('0x21'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x23'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x24'),this['syncCustomEvent'][_0x4288('0x20')](this));ami['on'](_0x4288('0x25'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x26'),this[_0x4288('0x22')]['bind'](this));ami['on'](_0x4288('0x27'),this['syncCustomEvent']['bind'](this));ami['on'](_0x4288('0x28'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x29'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on']('custom:amd',this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x2a'),this['syncCustomEvent']['bind'](this));ami['on'](_0x4288('0x2b'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x2c'),this['syncAgentDial'][_0x4288('0x20')](this));ami['on'](_0x4288('0x2d'),this[_0x4288('0x2e')]['bind'](this));ami['on']('custom:dialend',this[_0x4288('0x2e')][_0x4288('0x20')](this));ami['on'](_0x4288('0x2f'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x30'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x31'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x32'),this['syncCustomEvent'][_0x4288('0x20')](this));ami['on'](_0x4288('0x33'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x34'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x35'),this['syncCustomEvent']['bind'](this));}Trigger['prototype']['emit']=function(_0x2ddf5e,_0x2c3e55,_0x42bbd6){logger[_0x4288('0x36')](_0x2ddf5e,_0x2c3e55,JSON['stringify'](_0x42bbd6));io['to'](_0x2ddf5e)[_0x4288('0x37')](_0x2c3e55,_0x42bbd6);};Trigger[_0x4288('0x38')][_0x4288('0x22')]=function(_0x3b3d6b){var _0x91420a=_[_0x4288('0x39')](_0x3b3d6b);if(typeof _0x91420a[_0x4288('0x3a')]===_0x4288('0x3b')){_0x91420a['motionChannel']=_0x4288('0x3c');}this[_0x4288('0x3d')](_0x91420a);};Trigger['prototype'][_0x4288('0x2e')]=function(_0x2cc56c){if(this['agents'][_0x2cc56c[_0x4288('0x3e')]]){this['syncCustomEvent'](_0x2cc56c);}};Trigger[_0x4288('0x38')][_0x4288('0x3d')]=function(_0x2f7e43){var _0x2387a6;for(var _0x2a28af in this['triggers']){if(this[_0x4288('0x10')][_0x4288('0x3f')](_0x2a28af)){if(this['triggers'][_0x2a28af][_0x4288('0x40')]){_0x2387a6=this[_0x4288('0x41')](this[_0x4288('0x10')][_0x2a28af],_0x2f7e43);if(_0x2387a6){_['merge'](_0x2f7e43,_0x2f7e43[_0x4288('0x42')]);for(var _0x27e31f=0x0,_0x44b6b6,_0x5bb782,_0x2c063b;_0x27e31f<this['triggers'][_0x2a28af][_0x4288('0x43')][_0x4288('0x44')];_0x27e31f+=0x1){_0x44b6b6=this[_0x4288('0x10')][_0x2a28af][_0x4288('0x43')][_0x27e31f];if(this['agents'][_0x2f7e43['interface']]){switch(_0x44b6b6[_0x4288('0x45')]['toLowerCase']()){case _0x4288('0x46'):break;case'motionbar':case _0x4288('0x47'):var _0x2fdcf8={};switch(barAndWebActions[_0x44b6b6[_0x4288('0x48')]]){case _0x4288('0xe'):_0x2fdcf8[_0x4288('0x49')]=_0x44b6b6['data2'];_0x2fdcf8[_0x4288('0x4a')]=this[_0x4288('0x4b')][_0x44b6b6[_0x4288('0x4c')]]?Mustache[_0x4288('0x4d')](this['templates'][_0x44b6b6[_0x4288('0x4c')]][_0x4288('0x4a')],_0x2f7e43):_0x4288('0x4e');break;case _0x4288('0x2'):_0x2fdcf8[_0x4288('0x4f')]=this['buildUri'](_0x44b6b6[_0x4288('0x4c')],_0x2f7e43,_[_0x4288('0x50')](_0x44b6b6['data3'])?!![]:parseInt(_0x44b6b6['data3'],0xa));if(_[_0x4288('0x50')](_0x44b6b6[_0x4288('0x51')])){_0x2fdcf8[_0x4288('0x52')]='0';}else{_0x2fdcf8[_0x4288('0x53')]=_0x44b6b6[_0x4288('0x51')];_0x2fdcf8[_0x4288('0x54')]=_[_0x4288('0x50')](_0x44b6b6['data5'])?_0x4288('0x55'):_0x44b6b6[_0x4288('0x56')];_0x2fdcf8[_0x4288('0x57')]=_[_0x4288('0x50')](_0x44b6b6[_0x4288('0x58')])?'600':_0x44b6b6[_0x4288('0x58')];}break;case _0x4288('0xf'):_0x2fdcf8['winApplication']=_0x44b6b6[_0x4288('0x4c')]?Mustache[_0x4288('0x4d')](_0x44b6b6[_0x4288('0x4c')],_0x2f7e43):'';_0x2fdcf8[_0x4288('0x59')]=_0x44b6b6[_0x4288('0x5a')]?Mustache[_0x4288('0x4d')](_0x44b6b6[_0x4288('0x5a')],_0x2f7e43):'';break;}this[_0x4288('0x37')](util[_0x4288('0x5b')](_0x4288('0x5c'),this['agents'][_0x2f7e43[_0x4288('0x3e')]]['name']),util[_0x4288('0x5b')](_0x4288('0x5d'),_0x44b6b6[_0x4288('0x45')][_0x4288('0x5e')](),barAndWebActions[_0x44b6b6[_0x4288('0x48')]]),_[_0x4288('0x5f')](_0x2fdcf8,_0x2f7e43));break;case _0x4288('0x60'):this[_0x4288('0x37')](util['format']('user:%s',this['agents'][_0x2f7e43[_0x4288('0x3e')]][_0x4288('0x61')]),util[_0x4288('0x5b')](_0x4288('0x62'),_0x44b6b6[_0x4288('0x45')][_0x4288('0x5e')]()),_['merge']({'ProjectId':parseInt(_0x44b6b6[_0x4288('0x48')],0xa)},_0x2f7e43));break;default:this[_0x4288('0x37')](util[_0x4288('0x5b')]('user:%s',this[_0x4288('0x11')][_0x2f7e43[_0x4288('0x3e')]]['name']),util['format']('trigger:%s',_0x44b6b6[_0x4288('0x45')]['toLowerCase']()),_[_0x4288('0x5f')]({},_0x44b6b6,_0x2f7e43));}}switch(_0x44b6b6[_0x4288('0x45')][_0x4288('0x5e')]()){case _0x4288('0x46'):cmContact['exec'](this[_0x4288('0x11')][_0x2f7e43['interface']],this[_0x4288('0x10')][_0x2a28af],_0x44b6b6,_0x2f7e43);break;case _0x4288('0x63'):integration[_0x4288('0x64')](_0x44b6b6,_0x2f7e43,this[_0x4288('0x1d')],this[_0x4288('0x11')][_0x2f7e43[_0x4288('0x3e')]],this[_0x4288('0x12')][_0x2f7e43[_0x4288('0x65')]],this['voiceExtensions'][_0x2f7e43[_0x4288('0x66')]]);break;case _0x4288('0x67'):urlforward[_0x4288('0x64')](_0x44b6b6,_0x2f7e43);break;case _0x4288('0x68'):script['exec'](_0x44b6b6,_0x2f7e43);break;}}}}}}};Trigger[_0x4288('0x38')][_0x4288('0x69')]=function(_0x2b4515,_0x3cf615,_0x535925){var _0x455a0f=url[_0x4288('0x6a')](Mustache[_0x4288('0x4d')](_0x2b4515,_0x3cf615),!![]);if(_0x535925){_[_0x4288('0x5f')](_0x455a0f[_0x4288('0x6b')],_0x3cf615);}delete _0x455a0f[_0x4288('0x6c')];var _0x25a83a=url[_0x4288('0x5b')](_0x455a0f);_0x25a83a=_0x25a83a['replace'](/\/\?/g,'?');return _0x25a83a;};Trigger[_0x4288('0x38')][_0x4288('0x41')]=function(_0x52e60e,_0xfbb18b){var _0x35924f=!![];var _0x51a5e7=!![];var _0x4dbc33=![];if(_0x52e60e[_0x4288('0x6d')]===_0xfbb18b[_0x4288('0x3a')]){_0x4dbc33=!![];}if(_0x52e60e[_0x4288('0x6e')][_0x4288('0x44')]){_0x35924f=_[_0x4288('0x6f')](_0x52e60e['AllConditions'],this['checkConditions'](_0xfbb18b,_0x52e60e['channel']));}if(_0x52e60e['AnyConditions'][_0x4288('0x44')]){_0x51a5e7=_[_0x4288('0x70')](_0x52e60e['AnyConditions'],this[_0x4288('0x71')](_0xfbb18b,_0x52e60e['channel']));}return _0x4dbc33&&_0x35924f&&_0x51a5e7;};Trigger[_0x4288('0x38')][_0x4288('0x71')]=function(_0x16e7f1,_0x549b2b){return function(_0x13b526){switch(_0x13b526[_0x4288('0x72')]){case _0x4288('0x73'):if(_0x16e7f1[_0x4288('0x6d')]===_0x549b2b){if(_0x549b2b===_0x4288('0x74')){return _0x16e7f1[_0x4288('0x75')]?operators[_0x13b526[_0x4288('0x76')]](Number(_0x13b526[_0x4288('0x77')]),_0x16e7f1[_0x4288('0x75')]):![];}else{return _0x16e7f1[_[_0x4288('0x78')](_0x549b2b)+_0x4288('0x79')]?operators[_0x13b526[_0x4288('0x76')]](Number(_0x13b526[_0x4288('0x77')]),_0x16e7f1[_[_0x4288('0x78')](_0x549b2b)+'AccountId']):![];}}break;case _0x4288('0x7a'):case _0x4288('0x7b'):if(_0x16e7f1['channel']===_0x549b2b){return _0x16e7f1[_0x4288('0x7c')]?operators[_0x13b526['operator']](_0x13b526[_0x4288('0x77')],_0x16e7f1['event']):![];}break;case _0x4288('0x65'):return _0x16e7f1['queue']?operators[_0x13b526['operator']](_0x13b526[_0x4288('0x77')],_0x16e7f1[_0x4288('0x65')]):![];case'agent':return _0x16e7f1[_0x4288('0x7d')]?operators[_0x13b526[_0x4288('0x76')]](_0x13b526[_0x4288('0x77')],_0x16e7f1[_0x4288('0x7d')]):![];case _0x4288('0x7e'):return _0x16e7f1[_0x4288('0x7e')]?operators[_0x13b526[_0x4288('0x76')]](_0x13b526[_0x4288('0x77')],_0x16e7f1[_0x4288('0x7e')]):![];case _0x4288('0x66'):return _0x16e7f1['routeId']?operators[_0x13b526[_0x4288('0x76')]](_0x13b526[_0x4288('0x77')],_0x16e7f1[_0x4288('0x66')]):![];case _0x4288('0x7f'):if(_0x13b526['value']===_0x4288('0x80'))_0x13b526[_0x4288('0x77')]=null;return typeof _0x16e7f1[_0x4288('0x81')]!=='undefined'?operators[_0x13b526[_0x4288('0x76')]](_0x13b526[_0x4288('0x77')],_0x16e7f1[_0x4288('0x81')]):![];}return![];};};module[_0x4288('0x82')]=Trigger;
\ No newline at end of file
index ce8f59d..3da63f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['catch','stringify','unmanaged','lastevent','toUpperCase','lodash','util','ioredis','./util','../../../../config/environment','../../../../config/logger','desk','redis','defaults','localhost','validateEmail','info','Getting\x20agent\x20with\x20email','%s/users','then','total_entries','_embedded','entries','Agent\x20found!','format','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/users/me','remoteUri','debug','[HTTP]','GET','authType','basic','password','%s/token:%s','Basic\x20%s','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','work','map','length','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','custom_fields','toString','variable','variableName','customVariable','Variable','name','priority','Creating\x20new\x20ticket...','getString','Subjects','xCALLY','concat','Descriptions','user','Fields','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','integrationTab','%s/agent/tickets/%s'];(function(_0xdc37a1,_0x53ebb9){var _0x99b4fe=function(_0x2811e3){while(--_0x2811e3){_0xdc37a1['push'](_0xdc37a1['shift']());}};_0x99b4fe(++_0x53ebb9);}(_0x326f,0xd1));var _0xf326=function(_0x1fc310,_0x53b7c9){_0x1fc310=_0x1fc310-0x0;var _0xfb8695=_0x326f[_0x1fc310];return _0xfb8695;};'use strict';var _=require(_0xf326('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0xf326('0x1'));var Redis=require(_0xf326('0x2'));var intUtil=require(_0xf326('0x3'));var config=require(_0xf326('0x4'));var logger=require(_0xf326('0x5'))(_0xf326('0x6'));config[_0xf326('0x7')]=_[_0xf326('0x8')](config[_0xf326('0x7')],{'host':_0xf326('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf326('0x7')]));function emit(_0x3851eb,_0x165f95,_0x1e7b8a){io['to'](_0x3851eb)['emit'](_0x165f95,_0x1e7b8a);}var headers={'Content-Type':'application/json','Accept':'application/json'};function getUser(_0x3bacf2,_0x1fc80e){if(intUtil[_0xf326('0xa')](_0x1fc80e)===!![]){logger[_0xf326('0xb')](_0xf326('0xc'),_0x1fc80e);return request({'uri':util['format'](_0xf326('0xd'),_0x3bacf2['remoteUri'])})[_0xf326('0xe')](function(_0x4aaf3a){if(_0x4aaf3a[_0xf326('0xf')]){return _['find'](_0x4aaf3a[_0xf326('0x10')][_0xf326('0x11')],{'email':_0x1fc80e});}})['then'](function(_0x342fe5){if(_0x342fe5){logger[_0xf326('0xb')](_0xf326('0x12'));return _0x342fe5;}else{logger[_0xf326('0xb')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xf326('0x13')]('%s/users/me',_0x3bacf2['remoteUri'])});}});}else{logger[_0xf326('0xb')](_0xf326('0x14'));return request({'uri':util[_0xf326('0x13')](_0xf326('0x15'),_0x3bacf2[_0xf326('0x16')])});}}function request(_0x287a2a){logger[_0xf326('0x17')](_0xf326('0x18'),JSON['stringify'](_0x287a2a));return rp(_[_0xf326('0x8')](_0x287a2a,{'method':_0xf326('0x19'),'headers':headers,'json':!![]}));}function getAuth(_0x18bee3){var _0x31ffb9;if(_0x18bee3[_0xf326('0x1a')]===_0xf326('0x1b')){_0x31ffb9=util['format']('%s:%s',_0x18bee3['username'],_0x18bee3[_0xf326('0x1c')]);}else if(_0x18bee3[_0xf326('0x1a')]==='token'){_0x31ffb9=util['format'](_0xf326('0x1d'),_0x18bee3['username'],_0x18bee3['token']);}return util[_0xf326('0x13')](_0xf326('0x1e'),new Buffer(_0x31ffb9)['toString']('base64'));}function getEndUser(_0x19b8ba,_0xb1efcf,_0x5f21a2){logger[_0xf326('0xb')](_0xf326('0x1f'),_0x5f21a2);return request({'uri':util[_0xf326('0x13')](_0xf326('0x20'),_0x19b8ba[_0xf326('0x16')]),'qs':{'phone':_0x5f21a2}})[_0xf326('0xe')](function(_0x5ce532){if(_0x5ce532['total_entries']){logger['info'](_0xf326('0x21'));return _0x5ce532[_0xf326('0x10')][_0xf326('0x11')][0x0];}else{logger[_0xf326('0xb')](_0xf326('0x22'));return request({'uri':util[_0xf326('0x13')]('%s/customers',_0x19b8ba[_0xf326('0x16')]),'method':_0xf326('0x23'),'body':{'first_name':_0xb1efcf,'title':_0xb1efcf,'phone_numbers':[{'type':_0xf326('0x24'),'value':_0x5f21a2}]}});}});}function getTags(_0x581531,_0x1617d2){var _0x55ad0f=[];if(_0x581531&&_0x581531['length']>0x0){_0x55ad0f=_[_0xf326('0x25')](_0x581531,_0x1617d2);}return _0x55ad0f;}function getCustomFields(_0x1ae23a,_0x2fa28e){var _0x5dbe63=[];var _0xc115d9={'custom_fields':{}};if(_0x1ae23a[_0xf326('0x26')]>0x0){_['forEach'](_0x1ae23a,function(_0x225776){if(_[_0xf326('0x27')]([_0xf326('0x28'),_0xf326('0x29')],_0x225776[_0xf326('0x2a')])&&_0x225776[_0xf326('0x2b')]&&!_0x225776[_0xf326('0x2c')]){_0xc115d9[_0x225776[_0xf326('0x2b')][_0xf326('0x2d')]()]=_0x225776[_0xf326('0x2e')]['toString']();}else if(_[_0xf326('0x27')]([_0xf326('0x28'),_0xf326('0x29')],_0x225776['type'])&&_0x225776[_0xf326('0x2f')]&&_0x225776[_0xf326('0x2c')]){_0xc115d9[_0xf326('0x30')][_0x225776['idField']]=_0x225776['content'][_0xf326('0x31')]();}else if(_0x225776[_0xf326('0x2a')]===_0xf326('0x32')&&_0x225776[_0xf326('0x33')]&&_0x225776[_0xf326('0x2f')]&&_0x225776[_0xf326('0x2c')]){_0x2fa28e[_0x225776[_0xf326('0x33')]]&&(_0xc115d9[_0xf326('0x30')][_0x225776['idField']]=_0x2fa28e[_0x225776[_0xf326('0x33')]][_0xf326('0x31')]());}else if(_0x225776['type']===_0xf326('0x34')&&_0x225776['Variable']&&_0x225776[_0xf326('0x35')]['name']&&_0x225776['idField']&&_0x225776[_0xf326('0x2c')]){_0x2fa28e[_0x225776['Variable'][_0xf326('0x36')]['toLowerCase']()]&&(_0xc115d9[_0xf326('0x30')][_0x225776[_0xf326('0x2f')]]=_0x2fa28e[_0x225776[_0xf326('0x35')]['name'][_0xf326('0x2d')]()][_0xf326('0x31')]());}});}if(_0xc115d9['priority']){_0xc115d9[_0xf326('0x37')]=Number(_0xc115d9[_0xf326('0x37')]);}return _0xc115d9;}function getTicket(_0x40fa7a,_0xaf65e0,_0x51076c,_0x2c4416,_0xb1ef35){logger[_0xf326('0xb')](_0xf326('0x38'));var _0x1d88ed=_['merge']({'subject':intUtil[_0xf326('0x39')](_0x2c4416[_0xf326('0x3a')],_0xb1ef35,'\x20'),'type':'phone','status':'new','labels':[_0xf326('0x3b'),'Motion','CTI'][_0xf326('0x3c')](getTags(_0x2c4416['Tags'],_0xf326('0x36'))),'description':intUtil[_0xf326('0x39')](_0x2c4416[_0xf326('0x3d')],_0xb1ef35,'\x0a'),'_links':{'assigned_user':{'href':util[_0xf326('0x13')]('/api/v2/users/%d',_0xaf65e0['id']),'class':_0xf326('0x3e')}},'message':{'direction':'in','body':intUtil[_0xf326('0x39')](_0x2c4416[_0xf326('0x3d')],_0xb1ef35,'\x0a')}},getCustomFields(_0x2c4416[_0xf326('0x3f')],_0xb1ef35));return request({'uri':util[_0xf326('0x13')](_0xf326('0x40'),_0x40fa7a[_0xf326('0x16')],_0x51076c['id']),'method':_0xf326('0x23'),'body':_0x1d88ed});}exports[_0xf326('0x41')]=function(_0x1227d3,_0x361776,_0x2bab13,_0x50d63f,_0x1b6126,_0x1637dc){var _0x2ed1a7,_0x270288;_0x1637dc[_0xf326('0x16')]=intUtil[_0xf326('0x42')](_0x1637dc['remoteUri']);_0x1637dc[_0xf326('0x43')]=intUtil[_0xf326('0x42')](_0x1637dc['serverUrl']);if(_0x1b6126&&_0x1b6126[_0xf326('0x44')]){logger[_0xf326('0xb')](_0xf326('0x45'),_0xf326('0x46'));_0x361776[_0xf326('0x47')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1637dc[_0xf326('0x43')],_0x361776[_0xf326('0x48')],md5(_0x361776['uniqueid']));}else{_0x361776['recordingURL']='';}headers[_0xf326('0x49')]=getAuth(_0x1637dc);return getUser(_0x1637dc,_0x50d63f[_0xf326('0x4a')])[_0xf326('0xe')](function(_0x5b3705){_0x2ed1a7=_0x5b3705;logger[_0xf326('0xb')](_0xf326('0x4b'),_0x2ed1a7['id']);return getEndUser(_0x1637dc,_0x361776[_0xf326('0x4c')],_0x361776[_0xf326('0x4d')]);})[_0xf326('0xe')](function(_0x2d9bba){_0x270288=_0x2d9bba;logger[_0xf326('0xb')](_0xf326('0x4e'),_0x270288['id']);return getTicket(_0x1637dc,_0x2ed1a7,_0x270288,_0x2bab13,_0x361776);})[_0xf326('0xe')](function(_0x27ced1){if(_0x27ced1){logger[_0xf326('0xb')](_0xf326('0x4f'));logger[_0xf326('0xb')](_0xf326('0x50'),_0x27ced1['id']);switch(_0x1637dc[_0xf326('0x2a')]){case'integrationTab':logger[_0xf326('0xb')](_0xf326('0x45'),_0xf326('0x51'));emit(util[_0xf326('0x13')]('user:%s',_0x50d63f[_0xf326('0x36')]),_0xf326('0x52'),{'recordId':_0x27ced1['id']});break;case _0xf326('0x53'):logger[_0xf326('0xb')]('[QUEUE]',_0xf326('0x54'));emit(util[_0xf326('0x13')](_0xf326('0x55'),_0x50d63f[_0xf326('0x36')]),_0xf326('0x56'),{'uri':util['format']('https://xcally.desk.com/web/agent/case/%d',_0x27ced1['id'])});break;default:logger[_0xf326('0x57')](_0xf326('0x45'),_0xf326('0x58'));}}})['catch'](function(_0x102fba){console[_0xf326('0x57')](_0x102fba);logger[_0xf326('0x57')]('[QUEUE]',JSON['stringify'](_0x102fba));});};exports[_0xf326('0x59')]=function(_0x5b4832,_0x1cf58f,_0x554277,_0x458e5f,_0x7ee57,_0x28c959,_0x25e091){var _0x212594,_0x35d3c8;_0x28c959[_0xf326('0x16')]=intUtil['stripTrailingSlash'](_0x28c959[_0xf326('0x16')]);_0x28c959[_0xf326('0x43')]=intUtil[_0xf326('0x42')](_0x28c959['serverUrl']);if(_0x25e091&&_0x25e091[_0xf326('0x5a')]&&_0x25e091[_0xf326('0x5a')]!==_0xf326('0x5b')){logger[_0xf326('0xb')](_0xf326('0x5c'),'Recording\x20is\x20enabled!');_0x1cf58f[_0xf326('0x47')]=util[_0xf326('0x13')](_0xf326('0x5d'),_0x28c959[_0xf326('0x43')],_0x1cf58f['uniqueid'],md5(_0x1cf58f[_0xf326('0x48')]));}headers[_0xf326('0x49')]=getAuth(_0x28c959);return getUser(_0x28c959,_0x458e5f[_0xf326('0x4a')])[_0xf326('0xe')](function(_0x4d3b9e){_0x212594=_0x4d3b9e;logger['info'](_0xf326('0x4b'),_0x212594['id']);return getEndUser(_0x28c959,_0x1cf58f[_0xf326('0x5e')],_0x1cf58f['destcalleridnum']);})[_0xf326('0xe')](function(_0x29de71){_0x35d3c8=_0x29de71;logger[_0xf326('0xb')](_0xf326('0x4e'),_0x35d3c8['id']);return getTicket(_0x28c959,_0x212594,_0x35d3c8,_0x554277,_0x1cf58f);})['then'](function(_0xb1c18c){if(_0xb1c18c){logger['info']('Ticket\x20created!');logger[_0xf326('0xb')]('The\x20Ticket\x20ID\x20is:',_0xb1c18c['id']);switch(_0x28c959[_0xf326('0x2a')]){case _0xf326('0x5f'):logger[_0xf326('0xb')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');emit(util[_0xf326('0x13')](_0xf326('0x55'),_0x458e5f[_0xf326('0x36')]),'trigger:desk:display',{'recordId':_0xb1c18c['id']});break;case _0xf326('0x53'):logger['info'](_0xf326('0x45'),_0xf326('0x54'));emit(util[_0xf326('0x13')](_0xf326('0x55'),_0x458e5f[_0xf326('0x36')]),_0xf326('0x56'),{'uri':util[_0xf326('0x13')](_0xf326('0x60'),_0x28c959[_0xf326('0x16')],_0xb1c18c['id'])});break;default:logger[_0xf326('0x57')](_0xf326('0x5c'),_0xf326('0x58'));}}})[_0xf326('0x61')](function(_0x4ca1b8){logger[_0xf326('0x57')]('[OUTBOUND]',JSON[_0xf326('0x62')](_0x4ca1b8));});};exports[_0xf326('0x63')]=function(_0x5e858d,_0x2b770c,_0x5283da,_0x3255b2,_0xd55246,_0x28f3cb){var _0x2d45c9,_0x31b6dd;_0x28f3cb['remoteUri']=intUtil['stripTrailingSlash'](_0x28f3cb[_0xf326('0x16')]);_0x28f3cb[_0xf326('0x43')]=intUtil[_0xf326('0x42')](_0x28f3cb[_0xf326('0x43')]);if(_0xd55246&&_0xd55246[_0xf326('0x44')]){logger['info']('['+_0x2b770c[_0xf326('0x64')][_0xf326('0x65')]()+']','Recording\x20is\x20enabled!');_0x2b770c['recordingURL']=util['format'](_0xf326('0x5d'),_0x28f3cb[_0xf326('0x43')],_0x2b770c[_0xf326('0x48')],md5(_0x2b770c[_0xf326('0x48')]));}else{_0x2b770c[_0xf326('0x47')]='';}headers[_0xf326('0x49')]=getAuth(_0x28f3cb);return getUser(_0x28f3cb)[_0xf326('0xe')](function(_0x4b9013){_0x2d45c9=_0x4b9013;logger[_0xf326('0xb')](_0xf326('0x4b'),_0x2d45c9['id']);return getEndUser(_0x28f3cb,_0x2b770c[_0xf326('0x4c')],_0x2b770c[_0xf326('0x4d')]);})['then'](function(_0x3717fe){_0x31b6dd=_0x3717fe;logger['info']('The\x20Enduser\x20ID\x20is:',_0x31b6dd['id']);return getTicket(_0x28f3cb,_0x2d45c9,_0x31b6dd,_0x5283da,_0x2b770c);})[_0xf326('0xe')](function(_0x540fa0){if(_0x540fa0){logger[_0xf326('0xb')](_0xf326('0x4f'));logger[_0xf326('0xb')](_0xf326('0x50'),_0x540fa0['id']);}})[_0xf326('0x61')](function(_0x541491){logger['error']('['+_0x2b770c['lastevent'][_0xf326('0x65')]()+']',JSON[_0xf326('0x62')](_0x541491));});};
\ No newline at end of file
+var _0xe14b=['CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','%s/customers/%d/cases','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','integrationTab','newTab','catch','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','ioredis','./util','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','application/json','validateEmail','format','%s/users','then','total_entries','find','_embedded','entries','info','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/users/me','debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','password','token','%s/token:%s','Basic\x20%s','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','%s/customers','remoteUri','POST','length','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','toString','idField','variableName','custom_fields','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe14b,0x93));var _0xbe14=function(_0x2d095c,_0x4a8f72){_0x2d095c=_0x2d095c-0x0;var _0x357aba=_0xe14b[_0x2d095c];return _0x357aba;};'use strict';var _=require(_0xbe14('0x0'));var rp=require(_0xbe14('0x1'));var md5=require('md5');var util=require('util');var Redis=require(_0xbe14('0x2'));var intUtil=require(_0xbe14('0x3'));var config=require('../../../../config/environment');var logger=require(_0xbe14('0x4'))('desk');config['redis']=_[_0xbe14('0x5')](config[_0xbe14('0x6')],{'host':_0xbe14('0x7'),'port':0x18eb});var io=require(_0xbe14('0x8'))(new Redis(config[_0xbe14('0x6')]));function emit(_0x39387e,_0x196fca,_0x566ae7){io['to'](_0x39387e)['emit'](_0x196fca,_0x566ae7);}var headers={'Content-Type':'application/json','Accept':_0xbe14('0x9')};function getUser(_0x6fceff,_0xd68cd7){if(intUtil[_0xbe14('0xa')](_0xd68cd7)===!![]){logger['info']('Getting\x20agent\x20with\x20email',_0xd68cd7);return request({'uri':util[_0xbe14('0xb')](_0xbe14('0xc'),_0x6fceff['remoteUri'])})[_0xbe14('0xd')](function(_0x35aa19){if(_0x35aa19[_0xbe14('0xe')]){return _[_0xbe14('0xf')](_0x35aa19[_0xbe14('0x10')][_0xbe14('0x11')],{'email':_0xd68cd7});}})[_0xbe14('0xd')](function(_0x2850cb){if(_0x2850cb){logger[_0xbe14('0x12')](_0xbe14('0x13'));return _0x2850cb;}else{logger[_0xbe14('0x12')](_0xbe14('0x14'));return request({'uri':util[_0xbe14('0xb')]('%s/users/me',_0x6fceff['remoteUri'])});}});}else{logger[_0xbe14('0x12')](_0xbe14('0x15'));return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x16'),_0x6fceff['remoteUri'])});}}function request(_0x21c789){logger[_0xbe14('0x17')](_0xbe14('0x18'),JSON[_0xbe14('0x19')](_0x21c789));return rp(_[_0xbe14('0x5')](_0x21c789,{'method':_0xbe14('0x1a'),'headers':headers,'json':!![]}));}function getAuth(_0x17ae86){var _0x5ea1f8;if(_0x17ae86[_0xbe14('0x1b')]===_0xbe14('0x1c')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x1d'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x1f')]);}else if(_0x17ae86['authType']===_0xbe14('0x20')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x21'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x20')]);}return util['format'](_0xbe14('0x22'),new Buffer(_0x5ea1f8)['toString'](_0xbe14('0x23')));}function getEndUser(_0x56e80c,_0x32e8eb,_0x4a25fa){logger[_0xbe14('0x12')](_0xbe14('0x24'),_0x4a25fa);return request({'uri':util['format'](_0xbe14('0x25'),_0x56e80c['remoteUri']),'qs':{'phone':_0x4a25fa}})[_0xbe14('0xd')](function(_0x4851f8){if(_0x4851f8[_0xbe14('0xe')]){logger[_0xbe14('0x12')](_0xbe14('0x26'));return _0x4851f8[_0xbe14('0x10')][_0xbe14('0x11')][0x0];}else{logger[_0xbe14('0x12')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x27'),_0x56e80c[_0xbe14('0x28')]),'method':_0xbe14('0x29'),'body':{'first_name':_0x32e8eb,'title':_0x32e8eb,'phone_numbers':[{'type':'work','value':_0x4a25fa}]}});}});}function getTags(_0x16f884,_0x29fc64){var _0x59bf34=[];if(_0x16f884&&_0x16f884[_0xbe14('0x2a')]>0x0){_0x59bf34=_[_0xbe14('0x2b')](_0x16f884,_0x29fc64);}return _0x59bf34;}function getCustomFields(_0x1c7cc7,_0x19252f){var _0x34d648=[];var _0x36d4b2={'custom_fields':{}};if(_0x1c7cc7[_0xbe14('0x2a')]>0x0){_[_0xbe14('0x2c')](_0x1c7cc7,function(_0x4168c8){if(_[_0xbe14('0x2d')]([_0xbe14('0x2e'),_0xbe14('0x2f')],_0x4168c8[_0xbe14('0x30')])&&_0x4168c8[_0xbe14('0x31')]&&!_0x4168c8[_0xbe14('0x32')]){_0x36d4b2[_0x4168c8[_0xbe14('0x31')][_0xbe14('0x33')]()]=_0x4168c8[_0xbe14('0x34')][_0xbe14('0x35')]();}else if(_[_0xbe14('0x2d')](['string',_0xbe14('0x2f')],_0x4168c8['type'])&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x36d4b2['custom_fields'][_0x4168c8[_0xbe14('0x36')]]=_0x4168c8[_0xbe14('0x34')]['toString']();}else if(_0x4168c8['type']==='variable'&&_0x4168c8[_0xbe14('0x37')]&&_0x4168c8[_0xbe14('0x36')]&&_0x4168c8['customField']){_0x19252f[_0x4168c8[_0xbe14('0x37')]]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x37')]][_0xbe14('0x35')]());}else if(_0x4168c8['type']==='customVariable'&&_0x4168c8[_0xbe14('0x39')]&&_0x4168c8['Variable']['name']&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()][_0xbe14('0x35')]());}});}if(_0x36d4b2[_0xbe14('0x3b')]){_0x36d4b2[_0xbe14('0x3b')]=Number(_0x36d4b2['priority']);}return _0x36d4b2;}function getTicket(_0x4f51f8,_0x43cdaa,_0x2951e1,_0x13bfcf,_0x520e09){logger[_0xbe14('0x12')](_0xbe14('0x3c'));var _0xeda70e=_[_0xbe14('0x3d')]({'subject':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x3f')],_0x520e09,'\x20'),'type':_0xbe14('0x40'),'status':_0xbe14('0x41'),'labels':[_0xbe14('0x42'),'Motion',_0xbe14('0x43')][_0xbe14('0x44')](getTags(_0x13bfcf[_0xbe14('0x45')],_0xbe14('0x3a'))),'description':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a'),'_links':{'assigned_user':{'href':util['format'](_0xbe14('0x47'),_0x43cdaa['id']),'class':_0xbe14('0x48')}},'message':{'direction':'in','body':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a')}},getCustomFields(_0x13bfcf['Fields'],_0x520e09));return request({'uri':util['format'](_0xbe14('0x49'),_0x4f51f8[_0xbe14('0x28')],_0x2951e1['id']),'method':_0xbe14('0x29'),'body':_0xeda70e});}exports['queue']=function(_0x5d5318,_0x6b6aa8,_0x59ae4d,_0x5657fe,_0x3593f8,_0x1f0355){var _0x8216c3,_0x5051e4;_0x1f0355['remoteUri']=intUtil['stripTrailingSlash'](_0x1f0355[_0xbe14('0x28')]);_0x1f0355[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x1f0355['serverUrl']);if(_0x3593f8&&_0x3593f8[_0xbe14('0x4c')]){logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x4e'));_0x6b6aa8['recordingURL']=util['format'](_0xbe14('0x4f'),_0x1f0355[_0xbe14('0x4a')],_0x6b6aa8[_0xbe14('0x50')],md5(_0x6b6aa8[_0xbe14('0x50')]));}else{_0x6b6aa8[_0xbe14('0x51')]='';}headers['Authorization']=getAuth(_0x1f0355);return getUser(_0x1f0355,_0x5657fe['email'])[_0xbe14('0xd')](function(_0x2a3623){_0x8216c3=_0x2a3623;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x8216c3['id']);return getEndUser(_0x1f0355,_0x6b6aa8['calleridname'],_0x6b6aa8[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x53e8ab){_0x5051e4=_0x53e8ab;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x5051e4['id']);return getTicket(_0x1f0355,_0x8216c3,_0x5051e4,_0x59ae4d,_0x6b6aa8);})[_0xbe14('0xd')](function(_0x36c20c){if(_0x36c20c){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x36c20c['id']);switch(_0x1f0355['type']){case'integrationTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x36c20c['id']});break;case'newTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe['name']),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')](_0xbe14('0x5b'),_0x36c20c['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x4d'),_0xbe14('0x5d'));}}})['catch'](function(_0x5aeea9){console[_0xbe14('0x5c')](_0x5aeea9);logger[_0xbe14('0x5c')](_0xbe14('0x4d'),JSON['stringify'](_0x5aeea9));});};exports['outbound']=function(_0x44fe0d,_0x134878,_0x50d78f,_0x339a86,_0x32496a,_0x50c2a0,_0x28f995){var _0x4a40d2,_0x41ba58;_0x50c2a0[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['remoteUri']);_0x50c2a0[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['serverUrl']);if(_0x28f995&&_0x28f995[_0xbe14('0x5e')]&&_0x28f995[_0xbe14('0x5e')]!==_0xbe14('0x5f')){logger[_0xbe14('0x12')](_0xbe14('0x60'),'Recording\x20is\x20enabled!');_0x134878[_0xbe14('0x51')]=util[_0xbe14('0xb')](_0xbe14('0x4f'),_0x50c2a0[_0xbe14('0x4a')],_0x134878[_0xbe14('0x50')],md5(_0x134878[_0xbe14('0x50')]));}headers[_0xbe14('0x61')]=getAuth(_0x50c2a0);return getUser(_0x50c2a0,_0x339a86['email'])[_0xbe14('0xd')](function(_0x1b47a4){_0x4a40d2=_0x1b47a4;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x4a40d2['id']);return getEndUser(_0x50c2a0,_0x134878[_0xbe14('0x62')],_0x134878[_0xbe14('0x63')]);})[_0xbe14('0xd')](function(_0x32df3c){_0x41ba58=_0x32df3c;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x41ba58['id']);return getTicket(_0x50c2a0,_0x4a40d2,_0x41ba58,_0x50d78f,_0x134878);})[_0xbe14('0xd')](function(_0x4bccfc){if(_0x4bccfc){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x4bccfc['id']);switch(_0x50c2a0[_0xbe14('0x30')]){case _0xbe14('0x64'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x4bccfc['id']});break;case _0xbe14('0x65'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')]('%s/agent/tickets/%s',_0x50c2a0[_0xbe14('0x28')],_0x4bccfc['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x60'),_0xbe14('0x5d'));}}})[_0xbe14('0x66')](function(_0x222944){logger[_0xbe14('0x5c')](_0xbe14('0x60'),JSON[_0xbe14('0x19')](_0x222944));});};exports[_0xbe14('0x67')]=function(_0x5917d5,_0x18be56,_0x442ec4,_0x2d4dd4,_0xfd32a3,_0x3ac6d8){var _0x5a1ea6,_0x42b341;_0x3ac6d8[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x3ac6d8[_0xbe14('0x28')]);_0x3ac6d8[_0xbe14('0x4a')]=intUtil['stripTrailingSlash'](_0x3ac6d8[_0xbe14('0x4a')]);if(_0xfd32a3&&_0xfd32a3[_0xbe14('0x4c')]){logger[_0xbe14('0x12')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',_0xbe14('0x4e'));_0x18be56[_0xbe14('0x51')]=util[_0xbe14('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3ac6d8[_0xbe14('0x4a')],_0x18be56[_0xbe14('0x50')],md5(_0x18be56[_0xbe14('0x50')]));}else{_0x18be56[_0xbe14('0x51')]='';}headers[_0xbe14('0x61')]=getAuth(_0x3ac6d8);return getUser(_0x3ac6d8)[_0xbe14('0xd')](function(_0x445302){_0x5a1ea6=_0x445302;logger['info']('The\x20User\x20ID\x20is:',_0x5a1ea6['id']);return getEndUser(_0x3ac6d8,_0x18be56[_0xbe14('0x6a')],_0x18be56[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x2510a0){_0x42b341=_0x2510a0;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x42b341['id']);return getTicket(_0x3ac6d8,_0x5a1ea6,_0x42b341,_0x442ec4,_0x18be56);})[_0xbe14('0xd')](function(_0x43511e){if(_0x43511e){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x43511e['id']);}})[_0xbe14('0x66')](function(_0x57729f){logger[_0xbe14('0x5c')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',JSON[_0xbe14('0x19')](_0x57729f));});};
\ No newline at end of file
index 770e71a..7749ee0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5f5=['defaults','socket.io-emitter','POST','remoteUri','username','password','clientSecret','then','access_token','catch','error','toUpperCase','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','email','userEmail','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','length','toLowerCase','calleridnum','contacts','/systemusers(','substring','lastIndexOf','destcalleridnum','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','replace','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','includes','string','picklist','type','nameField','customField','idField','content','ticketType','incidents','assign','Subjects','getString','Descriptions','/contacts(','enduserId','Fields','phonecall','callDirection','queue','headers','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s','emit','serverUrl','stripTrailingSlash','unmanaged','outbound','https://login.microsoftonline.com/%s/oauth2/token','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','bluebird','request-promise','util','md5','ioredis','../../../../config/logger','dynamics365','redis'];(function(_0x2c4c51,_0x16213a){var _0x1f950d=function(_0xa44936){while(--_0xa44936){_0x2c4c51['push'](_0x2c4c51['shift']());}};_0x1f950d(++_0x16213a);}(_0xe5f5,0x1e6));var _0x5e5f=function(_0x5b1d7e,_0x3c930b){_0x5b1d7e=_0x5b1d7e-0x0;var _0x3b8d44=_0xe5f5[_0x5b1d7e];return _0x3b8d44;};'use strict';var _=require(_0x5e5f('0x0'));var BPromise=require(_0x5e5f('0x1'));var rp=require(_0x5e5f('0x2'));var util=require(_0x5e5f('0x3'));var intUtil=require('./util');var md5=require(_0x5e5f('0x4'));var Redis=require(_0x5e5f('0x5'));var logger=require(_0x5e5f('0x6'))(_0x5e5f('0x7'));var config=require('../../../../config/environment');config[_0x5e5f('0x8')]=_[_0x5e5f('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x5e5f('0xa'))(new Redis(config[_0x5e5f('0x8')]));function getAuthToken(_0x181fca,_0x13d28a,_0x2b1d74){var _0x116133={'method':_0x5e5f('0xb'),'uri':_0x13d28a,'form':{'client_id':_0x181fca['clientId'],'resource':_0x181fca[_0x5e5f('0xc')],'username':_0x181fca[_0x5e5f('0xd')],'password':_0x181fca['password'],'grant_type':_0x5e5f('0xe'),'client_secret':_0x181fca[_0x5e5f('0xf')]},'json':!![]};return rp(_0x116133)[_0x5e5f('0x10')](function(_0x4a9a88){return _0x4a9a88[_0x5e5f('0x11')];})[_0x5e5f('0x12')](function(_0x1ca523){logger[_0x5e5f('0x13')]('['+[_0x2b1d74[_0x5e5f('0x14')]()]+']\x20Wrong\x20credentials!');return _0x1ca523[_0x5e5f('0x15')];});}function getUser(_0x88250f,_0x16df6e,_0xe7a74f,_0x240f4a,_0xa68a3a,_0x437a7e){return new BPromise(function(_0x5d180c,_0x15586f){return getAuthToken(_0x16df6e,_0x240f4a,_0x437a7e)[_0x5e5f('0x10')](function(_0x12638d){var _0x5eef05={'method':_0x5e5f('0x16'),'uri':_0xa68a3a+_0x5e5f('0x17'),'headers':{'Authorization':_0x5e5f('0x18')+_0x12638d,'OData-Version':_0x5e5f('0x19')},'json':!![]};return rp(_0x5eef05);})['then'](function(_0xe8f669){var _0x21f43f=_0xe8f669[_0x5e5f('0x1a')];var _0x4f9d3a=![];var _0x556cb7=null;if(!_[_0x5e5f('0x1b')](_0xe7a74f)){if(intUtil[_0x5e5f('0x1c')](_0xe7a74f[_0x5e5f('0x1d')])){_0x88250f[_0x5e5f('0x1e')]=_0xe7a74f[_0x5e5f('0x1d')];for(_0x556cb7=0x0;_0x556cb7<_0x21f43f['length'];_0x556cb7++){if(_0x21f43f[_0x556cb7][_0x5e5f('0x1f')]===_0xe7a74f[_0x5e5f('0x1d')]&&!_0x21f43f[_0x556cb7][_0x5e5f('0x20')]){_0x4f9d3a=!![];logger[_0x5e5f('0x21')]('['+[_0x437a7e[_0x5e5f('0x14')]()]+_0x5e5f('0x22')+_0x21f43f[_0x556cb7][_0x5e5f('0x23')]+'!');_0x88250f[_0x5e5f('0x24')]=_0x21f43f[_0x556cb7][_0x5e5f('0x23')];}}}}if(!_0x4f9d3a){logger[_0x5e5f('0x21')]('['+[_0x437a7e[_0x5e5f('0x14')]()]+_0x5e5f('0x25'));_0x88250f[_0x5e5f('0x1e')]=_0x16df6e[_0x5e5f('0xd')];for(_0x556cb7=0x0;_0x556cb7<_0x21f43f[_0x5e5f('0x26')];_0x556cb7++){if(_0x21f43f[_0x556cb7][_0x5e5f('0x1f')]===_0x16df6e[_0x5e5f('0xd')]){_0x88250f[_0x5e5f('0x24')]=_0x21f43f[_0x556cb7][_0x5e5f('0x23')];}}}_0x5d180c(_0x88250f);})[_0x5e5f('0x12')](function(_0x42362a){_0x15586f(_0x42362a[_0x5e5f('0x15')]);});});}function createEndUser(_0x14a8bd,_0x3bb39d,_0x4e0cb1,_0x20d07a,_0x2320e4,_0x122210){return new BPromise(function(_0x1a6cf5,_0x168748){return getAuthToken(_0x3bb39d,_0x4e0cb1,_0x122210)[_0x5e5f('0x10')](function(_0x748a3d){var _0x44dc86=_0x122210[_0x5e5f('0x27')]()==='outbound'?_0x2320e4['destcalleridnum']:_0x2320e4[_0x5e5f('0x28')];var _0x8f71f6={'method':_0x5e5f('0xb'),'uri':_0x20d07a+_0x5e5f('0x29'),'body':{'telephone1':_0x44dc86,'fullname':_0x44dc86,'firstname':_0x44dc86,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x5e5f('0x2a')+_0x14a8bd[_0x5e5f('0x24')]+')'},'headers':{'Authorization':_0x5e5f('0x18')+_0x748a3d,'OData-Version':_0x5e5f('0x19')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x8f71f6);})[_0x5e5f('0x10')](function(_0x15cab7){var _0x4b7517=_0x15cab7['headers']['odata-entityid'];var _0x58f0d4=_0x4b7517[_0x5e5f('0x2b')](_0x4b7517[_0x5e5f('0x2c')]('(')+0x1,_0x4b7517[_0x5e5f('0x2c')](')'));_0x14a8bd['enduserId']=_0x58f0d4;_0x1a6cf5(_0x14a8bd);})['catch'](function(_0x4687e4){_0x168748(_0x4687e4['message']);});});}function getEndUser(_0x28bba4,_0x16741f,_0x310468,_0x2795bf,_0xcfdf57,_0x31647f){return new BPromise(function(_0x3b8f3e,_0x506302){var _0x10112d=_0x31647f[_0x5e5f('0x27')]()==='outbound'?_0xcfdf57[_0x5e5f('0x2d')]:_0xcfdf57[_0x5e5f('0x28')];return getAuthToken(_0x16741f,_0x310468,_0x31647f)['then'](function(_0x75803e){var _0x238551={'method':_0x5e5f('0x16'),'uri':_0x2795bf+_0x5e5f('0x2e')+_0x10112d[_0x5e5f('0x2f')]('+','%2b')+'\x27','headers':{'Authorization':_0x5e5f('0x18')+_0x75803e,'If-None-Match':null,'OData-Version':_0x5e5f('0x19')},'json':!![]};return rp(_0x238551);})[_0x5e5f('0x10')](function(_0x199e1d){var _0x1516b2=null;if(_0x199e1d){var _0x14cc6c=_0x199e1d[_0x5e5f('0x1a')];var _0x22a9a1=![];for(_0x1516b2=0x0;_0x1516b2<_0x14cc6c['length'];_0x1516b2++){if(_0x14cc6c[_0x1516b2]['telephone1']===_0x10112d){_0x22a9a1=!![];_0x28bba4['enduserId']=_0x14cc6c[_0x1516b2][_0x5e5f('0x30')];}}if(_0x22a9a1){_0x3b8f3e(_0x28bba4);}else{return createEndUser(_0x28bba4,_0x16741f,_0x310468,_0x2795bf,_0xcfdf57,_0x31647f)['then'](function(_0x5dcabc){logger[_0x5e5f('0x21')]('['+[_0x31647f[_0x5e5f('0x14')]()]+_0x5e5f('0x31'),_0x5dcabc['enduserId']);_0x3b8f3e(_0x5dcabc);});}}else{return createEndUser(_0x28bba4,_0x16741f,_0x310468,_0x2795bf,_0xcfdf57,_0x31647f)[_0x5e5f('0x10')](function(_0x2a5fe6){logger[_0x5e5f('0x21')]('['+[_0x31647f[_0x5e5f('0x14')]()]+_0x5e5f('0x32'),_0x2a5fe6['enduserId']);_0x3b8f3e(_0x2a5fe6);});}});});}function getCustomFields(_0x3fb86f,_0x467136,_0x25bd42){var _0x46dc0a={};if(_0x3fb86f[_0x5e5f('0x26')]>0x0){_[_0x5e5f('0x33')](_0x3fb86f,function(_0x4c4c0f){if(_[_0x5e5f('0x34')]([_0x5e5f('0x35'),_0x5e5f('0x36')],_0x4c4c0f[_0x5e5f('0x37')])&&_0x4c4c0f[_0x5e5f('0x38')]&&!_0x4c4c0f[_0x5e5f('0x39')]){var _0x3c4e78=_0x4c4c0f[_0x5e5f('0x3a')][_0x5e5f('0x27')]();var _0x5bbdab=_0x3c4e78[_0x5e5f('0x2b')](0x0,_0x3c4e78['indexOf']('_'));var _0x18705a=_0x3c4e78['substring'](_0x3c4e78['indexOf']('_')+0x1);if(_0x5bbdab===_0x25bd42){_0x46dc0a[_0x18705a]=_0x4c4c0f[_0x5e5f('0x3b')];}}});}return _0x46dc0a;}function getTicket(_0x3c0795,_0x489cd3,_0x52e6c3,_0x2f315b,_0x319096,_0x1db2d4,_0x5500c2){return new BPromise(function(_0x57b56c,_0x213a57){var _0x2af4d0;return getAuthToken(_0x489cd3,_0x52e6c3,_0x5500c2)[_0x5e5f('0x10')](function(_0x2ba534){if(_0x1db2d4[_0x5e5f('0x3c')]==='incident'){_0x2af4d0={'method':'POST','uri':_0x2f315b+_0x5e5f('0x3d'),'body':Object[_0x5e5f('0x3e')]({},{'title':intUtil['getString'](_0x1db2d4[_0x5e5f('0x3f')],_0x319096,'\x20'),'description':intUtil[_0x5e5f('0x40')](_0x1db2d4[_0x5e5f('0x41')],_0x319096,'\x0a'),'customerid_contact@odata.bind':_0x5e5f('0x42')+_0x3c0795[_0x5e5f('0x43')]+')','ownerid@odata.bind':_0x5e5f('0x2a')+_0x3c0795['userId']+')','caseorigincode':'1'},getCustomFields(_0x1db2d4[_0x5e5f('0x44')],_0x319096,_0x1db2d4[_0x5e5f('0x3c')])),'headers':{'Authorization':_0x5e5f('0x18')+_0x2ba534,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x1db2d4[_0x5e5f('0x3c')]===_0x5e5f('0x45')){_0x2af4d0={'method':'POST','uri':_0x2f315b+'phonecalls','body':Object[_0x5e5f('0x3e')]({},{'subject':intUtil[_0x5e5f('0x40')](_0x1db2d4['Subjects'],_0x319096,'\x20'),'phonenumber':String(_0x319096[_0x5e5f('0x28')]),'description':intUtil[_0x5e5f('0x40')](_0x1db2d4['Descriptions'],_0x319096,'\x0a'),'regardingobjectid_contact@odata.bind':_0x5e5f('0x42')+_0x3c0795[_0x5e5f('0x43')]+')','ownerid@odata.bind':_0x5e5f('0x2a')+_0x3c0795[_0x5e5f('0x24')]+')','directioncode':_0x3c0795[_0x5e5f('0x46')]===_0x5e5f('0x47')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':'/systemusers('+_0x3c0795[_0x5e5f('0x24')]+')','participationtypemask':_0x3c0795['callDirection']===_0x5e5f('0x47')?0x2:0x1},{'partyid_contact@odata.bind':_0x5e5f('0x42')+_0x3c0795['enduserId']+')','participationtypemask':_0x3c0795[_0x5e5f('0x46')]===_0x5e5f('0x47')?0x1:0x2}]},getCustomFields(_0x1db2d4[_0x5e5f('0x44')],_0x319096,_0x1db2d4[_0x5e5f('0x3c')])),'headers':{'Authorization':_0x5e5f('0x18')+_0x2ba534,'OData-Version':_0x5e5f('0x19')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x2af4d0);})[_0x5e5f('0x10')](function(_0x2dc929){var _0x2bffeb=_0x2dc929[_0x5e5f('0x48')]['odata-entityid'];var _0x150e68=_0x2bffeb[_0x5e5f('0x2b')](_0x2bffeb[_0x5e5f('0x2c')]('(')+0x1,_0x2bffeb[_0x5e5f('0x2c')](')'));_0x3c0795[_0x5e5f('0x49')]=_0x150e68;_0x57b56c(_0x3c0795);})[_0x5e5f('0x12')](function(_0x500a7a){_0x213a57(_0x500a7a['message']);});});}function emit(_0x17261f,_0x66d955,_0x5e0922,_0x1e7b64){var _0x3c5f7c={'uri':util['format'](_0x5e5f('0x4a'),_0x17261f,_0x5e0922,_0x1e7b64)};io['to'](util[_0x5e5f('0x4b')](_0x5e5f('0x4c'),_0x66d955))[_0x5e5f('0x4d')]('trigger:browser:url',_0x3c5f7c);}exports['cs']=function(_0x4fbf80,_0x361d06,_0x3aacf6,_0x2d51bc,_0x24d945,_0x48ed2c,_0x14c8cd,_0x24fe7a){var _0xe70731={};_0x48ed2c[_0x5e5f('0xc')]=intUtil['stripTrailingSlash'](_0x48ed2c['remoteUri']);_0x48ed2c[_0x5e5f('0x4e')]=intUtil[_0x5e5f('0x4f')](_0x48ed2c[_0x5e5f('0x4e')]);_0xe70731['callDirection']=_0x24fe7a===_0x5e5f('0x47')||_0x24fe7a===_0x5e5f('0x50')?_0x5e5f('0x47'):_0x5e5f('0x51');var _0x5b1a7d=util[_0x5e5f('0x4b')]('%s/api/data/v9.0/',_0x48ed2c[_0x5e5f('0xc')]);var _0x58f4ec=util[_0x5e5f('0x4b')](_0x5e5f('0x52'),_0x48ed2c[_0x5e5f('0x53')]);var _0x3d01a0=util[_0x5e5f('0x4b')](_0x5e5f('0x54'),_0x48ed2c[_0x5e5f('0x4e')],_0x361d06[_0x5e5f('0x55')],md5(_0x361d06[_0x5e5f('0x55')]));if(_0x24d945&&_0x24d945[_0x5e5f('0x56')]){logger[_0x5e5f('0x21')](_0x5e5f('0x57'),_0x5e5f('0x58'));_0x361d06[_0x5e5f('0x59')]=_0x3d01a0;}else if(_0x14c8cd&&_0x14c8cd[_0x5e5f('0x5a')]&&_0x14c8cd[_0x5e5f('0x5a')]!=='none'){logger['info'](_0x5e5f('0x5b'),_0x5e5f('0x58'));_0x361d06[_0x5e5f('0x59')]=_0x3d01a0;}else{_0x361d06[_0x5e5f('0x59')]='';}return getUser(_0xe70731,_0x48ed2c,_0x2d51bc,_0x58f4ec,_0x5b1a7d,_0x24fe7a)[_0x5e5f('0x10')](function(_0x8d20cc){logger['info']('['+_0x24fe7a['toUpperCase']()+_0x5e5f('0x5c'),_0x8d20cc[_0x5e5f('0x24')]);logger[_0x5e5f('0x21')]('['+_0x24fe7a[_0x5e5f('0x14')]()+_0x5e5f('0x5d'),_0x8d20cc['userEmail']);return getEndUser(_0x8d20cc,_0x48ed2c,_0x58f4ec,_0x5b1a7d,_0x361d06,_0x24fe7a);})[_0x5e5f('0x10')](function(_0x59b51){logger['info']('['+_0x24fe7a[_0x5e5f('0x14')]()+_0x5e5f('0x5e'),_0x59b51[_0x5e5f('0x43')]);logger['info']('['+_0x24fe7a['toUpperCase']()+']\x20The\x20Enduser\x20phone\x20is:',_0x361d06['calleridnum']);return getTicket(_0x59b51,_0x48ed2c,_0x58f4ec,_0x5b1a7d,_0x361d06,_0x3aacf6,_0x24fe7a);})['then'](function(_0x2dcb8c){logger[_0x5e5f('0x21')](util[_0x5e5f('0x4b')]('['+_0x24fe7a[_0x5e5f('0x14')]()+_0x5e5f('0x5f'),_0x3aacf6['ticketType'],_0x2dcb8c[_0x5e5f('0x49')]));logger[_0x5e5f('0x21')](util[_0x5e5f('0x4b')]('['+_0x24fe7a[_0x5e5f('0x14')]()+_0x5e5f('0x60'),_0x24fe7a));if(_0x24fe7a!==_0x5e5f('0x50')){logger['info']('['+_0x24fe7a[_0x5e5f('0x14')]()+']',_0x5e5f('0x61'));emit(_0x48ed2c[_0x5e5f('0xc')],_0x2d51bc['name'],_0x3aacf6[_0x5e5f('0x3c')],_0x2dcb8c[_0x5e5f('0x49')]);}})[_0x5e5f('0x12')](function(_0x3b6243){logger[_0x5e5f('0x13')]('['+_0x24fe7a[_0x5e5f('0x14')]()+_0x5e5f('0x62'),util['inspect'](_0x3b6243,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x3827=['lastIndexOf','enduserId','catch','toLowerCase','GET','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','%2b','value','telephone1',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','includes','string','nameField','customField','idField','indexOf','content','ticketType','incidents','assign','getString','Subjects','Descriptions','/contacts(','/systemusers(','Fields','phonecall','phonecalls','callDirection','queue','headers','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','error','lodash','util','./util','md5','ioredis','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','POST','clientId','remoteUri','password','clientSecret','then','toUpperCase',']\x20Wrong\x20credentials!','message','systemusers?$select=internalemailaddress,isdisabled,systemuserid','4.0','email','userEmail','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId','username','length','internalemailaddress','outbound','destcalleridnum','calleridnum','contacts','Bearer\x20','odata-entityid','substring'];(function(_0x37d48d,_0x4e998c){var _0x2679cc=function(_0x445246){while(--_0x445246){_0x37d48d['push'](_0x37d48d['shift']());}};_0x2679cc(++_0x4e998c);}(_0x3827,0x1c4));var _0x7382=function(_0x4e9d3c,_0x1f4b98){_0x4e9d3c=_0x4e9d3c-0x0;var _0x2d0825=_0x3827[_0x4e9d3c];return _0x2d0825;};'use strict';var _=require(_0x7382('0x0'));var BPromise=require('bluebird');var rp=require('request-promise');var util=require(_0x7382('0x1'));var intUtil=require(_0x7382('0x2'));var md5=require(_0x7382('0x3'));var Redis=require(_0x7382('0x4'));var logger=require(_0x7382('0x5'))('dynamics365');var config=require('../../../../config/environment');config['redis']=_[_0x7382('0x6')](config[_0x7382('0x7')],{'host':_0x7382('0x8'),'port':0x18eb});var io=require(_0x7382('0x9'))(new Redis(config[_0x7382('0x7')]));function getAuthToken(_0x199d1d,_0x45281f,_0x5cbc24){var _0x1ab2e7={'method':_0x7382('0xa'),'uri':_0x45281f,'form':{'client_id':_0x199d1d[_0x7382('0xb')],'resource':_0x199d1d[_0x7382('0xc')],'username':_0x199d1d['username'],'password':_0x199d1d[_0x7382('0xd')],'grant_type':_0x7382('0xd'),'client_secret':_0x199d1d[_0x7382('0xe')]},'json':!![]};return rp(_0x1ab2e7)[_0x7382('0xf')](function(_0x5cc7f0){return _0x5cc7f0['access_token'];})['catch'](function(_0x226091){logger['error']('['+[_0x5cbc24[_0x7382('0x10')]()]+_0x7382('0x11'));return _0x226091[_0x7382('0x12')];});}function getUser(_0x2cdd18,_0x2da338,_0x8e4b80,_0x49df7d,_0x4f1462,_0x58c88f){return new BPromise(function(_0x3ea904,_0x352854){return getAuthToken(_0x2da338,_0x49df7d,_0x58c88f)[_0x7382('0xf')](function(_0x524b77){var _0xcc7829={'method':'GET','uri':_0x4f1462+_0x7382('0x13'),'headers':{'Authorization':'Bearer\x20'+_0x524b77,'OData-Version':_0x7382('0x14')},'json':!![]};return rp(_0xcc7829);})[_0x7382('0xf')](function(_0x2bee6c){var _0x468be2=_0x2bee6c['value'];var _0x23570c=![];var _0x1b17be=null;if(!_['isNil'](_0x8e4b80)){if(intUtil['validateEmail'](_0x8e4b80[_0x7382('0x15')])){_0x2cdd18[_0x7382('0x16')]=_0x8e4b80[_0x7382('0x15')];for(_0x1b17be=0x0;_0x1b17be<_0x468be2['length'];_0x1b17be++){if(_0x468be2[_0x1b17be]['internalemailaddress']===_0x8e4b80[_0x7382('0x15')]&&!_0x468be2[_0x1b17be][_0x7382('0x17')]){_0x23570c=!![];logger[_0x7382('0x18')]('['+[_0x58c88f[_0x7382('0x10')]()]+_0x7382('0x19')+_0x468be2[_0x1b17be][_0x7382('0x1a')]+'!');_0x2cdd18[_0x7382('0x1b')]=_0x468be2[_0x1b17be][_0x7382('0x1a')];}}}}if(!_0x23570c){logger['info']('['+[_0x58c88f[_0x7382('0x10')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x2cdd18['userEmail']=_0x2da338[_0x7382('0x1c')];for(_0x1b17be=0x0;_0x1b17be<_0x468be2[_0x7382('0x1d')];_0x1b17be++){if(_0x468be2[_0x1b17be][_0x7382('0x1e')]===_0x2da338[_0x7382('0x1c')]){_0x2cdd18['userId']=_0x468be2[_0x1b17be]['systemuserid'];}}}_0x3ea904(_0x2cdd18);})['catch'](function(_0x49a021){_0x352854(_0x49a021['message']);});});}function createEndUser(_0xb10f00,_0x1c5268,_0x4a26c1,_0x42f165,_0x54998d,_0x19139b){return new BPromise(function(_0x5eb5e8,_0x510bd5){return getAuthToken(_0x1c5268,_0x4a26c1,_0x19139b)[_0x7382('0xf')](function(_0x45402c){var _0x36ca4e=_0x19139b['toLowerCase']()===_0x7382('0x1f')?_0x54998d[_0x7382('0x20')]:_0x54998d[_0x7382('0x21')];var _0x16c099={'method':_0x7382('0xa'),'uri':_0x42f165+_0x7382('0x22'),'body':{'telephone1':_0x36ca4e,'fullname':_0x36ca4e,'firstname':_0x36ca4e,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0xb10f00[_0x7382('0x1b')]+')'},'headers':{'Authorization':_0x7382('0x23')+_0x45402c,'OData-Version':_0x7382('0x14')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x16c099);})[_0x7382('0xf')](function(_0x17cb33){var _0x99ac52=_0x17cb33['headers'][_0x7382('0x24')];var _0x55dbdc=_0x99ac52[_0x7382('0x25')](_0x99ac52[_0x7382('0x26')]('(')+0x1,_0x99ac52['lastIndexOf'](')'));_0xb10f00[_0x7382('0x27')]=_0x55dbdc;_0x5eb5e8(_0xb10f00);})[_0x7382('0x28')](function(_0x4ac67d){_0x510bd5(_0x4ac67d[_0x7382('0x12')]);});});}function getEndUser(_0x3bf25b,_0x5317af,_0x56295d,_0x1d4e44,_0x5a119a,_0x2e2400){return new BPromise(function(_0x5aa61f,_0x1d34aa){var _0xc0bf77=_0x2e2400[_0x7382('0x29')]()===_0x7382('0x1f')?_0x5a119a[_0x7382('0x20')]:_0x5a119a[_0x7382('0x21')];return getAuthToken(_0x5317af,_0x56295d,_0x2e2400)[_0x7382('0xf')](function(_0xcb8f7c){var _0x299c84={'method':_0x7382('0x2a'),'uri':_0x1d4e44+_0x7382('0x2b')+_0xc0bf77['replace']('+',_0x7382('0x2c'))+'\x27','headers':{'Authorization':_0x7382('0x23')+_0xcb8f7c,'If-None-Match':null,'OData-Version':_0x7382('0x14')},'json':!![]};return rp(_0x299c84);})[_0x7382('0xf')](function(_0x123519){var _0x49ac46=null;if(_0x123519){var _0x47dc79=_0x123519[_0x7382('0x2d')];var _0xa43ef7=![];for(_0x49ac46=0x0;_0x49ac46<_0x47dc79['length'];_0x49ac46++){if(_0x47dc79[_0x49ac46][_0x7382('0x2e')]===_0xc0bf77){_0xa43ef7=!![];_0x3bf25b[_0x7382('0x27')]=_0x47dc79[_0x49ac46]['contactid'];}}if(_0xa43ef7){_0x5aa61f(_0x3bf25b);}else{return createEndUser(_0x3bf25b,_0x5317af,_0x56295d,_0x1d4e44,_0x5a119a,_0x2e2400)['then'](function(_0x4aeb7a){logger[_0x7382('0x18')]('['+[_0x2e2400[_0x7382('0x10')]()]+_0x7382('0x2f'),_0x4aeb7a[_0x7382('0x27')]);_0x5aa61f(_0x4aeb7a);});}}else{return createEndUser(_0x3bf25b,_0x5317af,_0x56295d,_0x1d4e44,_0x5a119a,_0x2e2400)[_0x7382('0xf')](function(_0xae4a89){logger[_0x7382('0x18')]('['+[_0x2e2400[_0x7382('0x10')]()]+_0x7382('0x30'),_0xae4a89['enduserId']);_0x5aa61f(_0xae4a89);});}});});}function getCustomFields(_0x34aa15,_0x4e2b68,_0x358014){var _0x542d43={};if(_0x34aa15['length']>0x0){_[_0x7382('0x31')](_0x34aa15,function(_0x5efe6a){if(_[_0x7382('0x32')]([_0x7382('0x33'),'picklist'],_0x5efe6a['type'])&&_0x5efe6a[_0x7382('0x34')]&&!_0x5efe6a[_0x7382('0x35')]){var _0x660c03=_0x5efe6a[_0x7382('0x36')][_0x7382('0x29')]();var _0x4eb05a=_0x660c03['substring'](0x0,_0x660c03['indexOf']('_'));var _0x19f4d7=_0x660c03[_0x7382('0x25')](_0x660c03[_0x7382('0x37')]('_')+0x1);if(_0x4eb05a===_0x358014){_0x542d43[_0x19f4d7]=_0x5efe6a[_0x7382('0x38')];}}});}return _0x542d43;}function getTicket(_0x413160,_0x2226b2,_0x44ce5e,_0x445d1a,_0x4d9cf9,_0x2336b3,_0x56ff22){return new BPromise(function(_0x1bfdbc,_0x5a55cc){var _0xde6d64;return getAuthToken(_0x2226b2,_0x44ce5e,_0x56ff22)[_0x7382('0xf')](function(_0x493313){if(_0x2336b3[_0x7382('0x39')]==='incident'){_0xde6d64={'method':_0x7382('0xa'),'uri':_0x445d1a+_0x7382('0x3a'),'body':Object[_0x7382('0x3b')]({},{'title':intUtil[_0x7382('0x3c')](_0x2336b3[_0x7382('0x3d')],_0x4d9cf9,'\x20'),'description':intUtil[_0x7382('0x3c')](_0x2336b3[_0x7382('0x3e')],_0x4d9cf9,'\x0a'),'customerid_contact@odata.bind':_0x7382('0x3f')+_0x413160[_0x7382('0x27')]+')','ownerid@odata.bind':_0x7382('0x40')+_0x413160[_0x7382('0x1b')]+')','caseorigincode':'1'},getCustomFields(_0x2336b3[_0x7382('0x41')],_0x4d9cf9,_0x2336b3[_0x7382('0x39')])),'headers':{'Authorization':_0x7382('0x23')+_0x493313,'OData-Version':_0x7382('0x14')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x2336b3[_0x7382('0x39')]===_0x7382('0x42')){_0xde6d64={'method':_0x7382('0xa'),'uri':_0x445d1a+_0x7382('0x43'),'body':Object['assign']({},{'subject':intUtil[_0x7382('0x3c')](_0x2336b3[_0x7382('0x3d')],_0x4d9cf9,'\x20'),'phonenumber':String(_0x4d9cf9[_0x7382('0x21')]),'description':intUtil[_0x7382('0x3c')](_0x2336b3[_0x7382('0x3e')],_0x4d9cf9,'\x0a'),'regardingobjectid_contact@odata.bind':_0x7382('0x3f')+_0x413160[_0x7382('0x27')]+')','ownerid@odata.bind':'/systemusers('+_0x413160['userId']+')','directioncode':_0x413160['callDirection']==='queue'?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':'/systemusers('+_0x413160[_0x7382('0x1b')]+')','participationtypemask':_0x413160[_0x7382('0x44')]==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0x7382('0x3f')+_0x413160[_0x7382('0x27')]+')','participationtypemask':_0x413160['callDirection']===_0x7382('0x45')?0x1:0x2}]},getCustomFields(_0x2336b3[_0x7382('0x41')],_0x4d9cf9,_0x2336b3[_0x7382('0x39')])),'headers':{'Authorization':_0x7382('0x23')+_0x493313,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0xde6d64);})[_0x7382('0xf')](function(_0x199e9d){var _0x2fd5d3=_0x199e9d[_0x7382('0x46')][_0x7382('0x24')];var _0xa6042e=_0x2fd5d3['substring'](_0x2fd5d3[_0x7382('0x26')]('(')+0x1,_0x2fd5d3[_0x7382('0x26')](')'));_0x413160[_0x7382('0x47')]=_0xa6042e;_0x1bfdbc(_0x413160);})['catch'](function(_0x4dc3a5){_0x5a55cc(_0x4dc3a5[_0x7382('0x12')]);});});}function emit(_0x4cd65d,_0x429658,_0x5a7d57,_0x3217d3){var _0x5e7536={'uri':util[_0x7382('0x48')](_0x7382('0x49'),_0x4cd65d,_0x5a7d57,_0x3217d3)};io['to'](util['format'](_0x7382('0x4a'),_0x429658))['emit'](_0x7382('0x4b'),_0x5e7536);}exports['cs']=function(_0x3d2abf,_0x14f7dd,_0x238348,_0x59dc42,_0x171202,_0x127a3a,_0x583e40,_0x10bd68){var _0x184424={};_0x127a3a['remoteUri']=intUtil[_0x7382('0x4c')](_0x127a3a[_0x7382('0xc')]);_0x127a3a['serverUrl']=intUtil['stripTrailingSlash'](_0x127a3a[_0x7382('0x4d')]);_0x184424[_0x7382('0x44')]=_0x10bd68==='queue'||_0x10bd68===_0x7382('0x4e')?_0x7382('0x45'):_0x7382('0x1f');var _0x16dc8c=util[_0x7382('0x48')](_0x7382('0x4f'),_0x127a3a[_0x7382('0xc')]);var _0x170731=util[_0x7382('0x48')](_0x7382('0x50'),_0x127a3a[_0x7382('0x51')]);var _0x1857fd=util['format'](_0x7382('0x52'),_0x127a3a[_0x7382('0x4d')],_0x14f7dd[_0x7382('0x53')],md5(_0x14f7dd[_0x7382('0x53')]));if(_0x171202&&_0x171202[_0x7382('0x54')]){logger[_0x7382('0x18')](_0x7382('0x55'),_0x7382('0x56'));_0x14f7dd['recordingURL']=_0x1857fd;}else if(_0x583e40&&_0x583e40[_0x7382('0x57')]&&_0x583e40[_0x7382('0x57')]!==_0x7382('0x58')){logger['info'](_0x7382('0x59'),'Recording\x20is\x20enabled!');_0x14f7dd[_0x7382('0x5a')]=_0x1857fd;}else{_0x14f7dd['recordingURL']='';}return getUser(_0x184424,_0x127a3a,_0x59dc42,_0x170731,_0x16dc8c,_0x10bd68)[_0x7382('0xf')](function(_0x1c4d96){logger['info']('['+_0x10bd68['toUpperCase']()+_0x7382('0x5b'),_0x1c4d96[_0x7382('0x1b')]);logger['info']('['+_0x10bd68[_0x7382('0x10')]()+']\x20The\x20User\x20email\x20is:',_0x1c4d96[_0x7382('0x16')]);return getEndUser(_0x1c4d96,_0x127a3a,_0x170731,_0x16dc8c,_0x14f7dd,_0x10bd68);})['then'](function(_0x5c5795){logger[_0x7382('0x18')]('['+_0x10bd68[_0x7382('0x10')]()+_0x7382('0x5c'),_0x5c5795[_0x7382('0x27')]);logger[_0x7382('0x18')]('['+_0x10bd68[_0x7382('0x10')]()+_0x7382('0x5d'),_0x14f7dd['calleridnum']);return getTicket(_0x5c5795,_0x127a3a,_0x170731,_0x16dc8c,_0x14f7dd,_0x238348,_0x10bd68);})['then'](function(_0x31b479){logger[_0x7382('0x18')](util[_0x7382('0x48')]('['+_0x10bd68['toUpperCase']()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x238348['ticketType'],_0x31b479[_0x7382('0x47')]));logger['info'](util[_0x7382('0x48')]('['+_0x10bd68[_0x7382('0x10')]()+_0x7382('0x5e'),_0x10bd68));if(_0x10bd68!==_0x7382('0x4e')){logger[_0x7382('0x18')]('['+_0x10bd68[_0x7382('0x10')]()+']',_0x7382('0x5f'));emit(_0x127a3a[_0x7382('0xc')],_0x59dc42[_0x7382('0x60')],_0x238348[_0x7382('0x39')],_0x31b479[_0x7382('0x47')]);}})[_0x7382('0x28')](function(_0x18f199){logger[_0x7382('0x61')]('['+_0x10bd68[_0x7382('0x10')]()+']\x20Error\x20running\x20Dynamics365\x20integration',util['inspect'](_0x18f199,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 902245f..2644af0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab64=['trigger:browser:url','%s/helpdesk/tickets/%d','error','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','toUpperCase','catch','lastevent','lodash','request-promise','md5','ioredis','./util','../../../../config/logger','localhost','socket.io-emitter','redis','application/json','emit','info','Creating\x20new\x20ticket...','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Descriptions','<br>','Tags','name','Fields','mapValues','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','stringify','defaults','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','push','variableName','customVariable','Variable','custom_fields','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','user:%s'];(function(_0x39c734,_0x2f3e06){var _0xb2a2f9=function(_0x502f3f){while(--_0x502f3f){_0x39c734['push'](_0x39c734['shift']());}};_0xb2a2f9(++_0x2f3e06);}(_0xab64,0xc8));var _0x4ab6=function(_0x574e0b,_0x5ea428){_0x574e0b=_0x574e0b-0x0;var _0x51df06=_0xab64[_0x574e0b];return _0x51df06;};'use strict';var _=require(_0x4ab6('0x0'));var rp=require(_0x4ab6('0x1'));var md5=require(_0x4ab6('0x2'));var util=require('util');var Redis=require(_0x4ab6('0x3'));var intUtil=require(_0x4ab6('0x4'));var config=require('../../../../config/environment');var logger=require(_0x4ab6('0x5'))('freshdesk');config['redis']=_['defaults'](config['redis'],{'host':_0x4ab6('0x6'),'port':0x18eb});var io=require(_0x4ab6('0x7'))(new Redis(config[_0x4ab6('0x8')]));var headers={'Content-Type':_0x4ab6('0x9'),'Accept':_0x4ab6('0x9')};function emit(_0x285c54,_0x4a89ae,_0x21177b){io['to'](_0x285c54)[_0x4ab6('0xa')](_0x4a89ae,_0x21177b);}function getTicket(_0x58242e,_0xf8c338,_0x427f60,_0x59462a,_0x266254){logger[_0x4ab6('0xb')](_0x4ab6('0xc'));var _0x47a2ef=_['merge']({'responder_id':_0xf8c338['id'],'requester_id':_0x427f60['id'],'name':util[_0x4ab6('0xd')](_0x4ab6('0xe'),_0x266254[_0x4ab6('0xf')]),'phone':_0x266254[_0x4ab6('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x4ab6('0x11')](_0x59462a['Subjects'],_0x266254,'\x20'),'description':intUtil['getString'](_0x59462a[_0x4ab6('0x12')],_0x266254,_0x4ab6('0x13')),'tags':getTags(_0x59462a[_0x4ab6('0x14')],_0x4ab6('0x15'))},getCustomFields(_0x59462a[_0x4ab6('0x16')],_0x266254));_0x47a2ef['custom_fields']=_[_0x4ab6('0x17')](_['keyBy'](_0x47a2ef['custom_fields'],'id'),'value');return request({'uri':util[_0x4ab6('0xd')](_0x4ab6('0x18'),_0x58242e[_0x4ab6('0x19')]),'method':_0x4ab6('0x1a'),'body':_0x47a2ef})[_0x4ab6('0x1b')](function(_0x2a8459){logger['info'](_0x4ab6('0x1c'));return _0x2a8459;});}function getUser(_0x175552,_0x53c822){if(intUtil[_0x4ab6('0x1d')](_0x53c822)){return request({'uri':util['format'](_0x4ab6('0x1e'),_0x175552[_0x4ab6('0x19')]),'qs':{'email':_0x53c822}})[_0x4ab6('0x1b')](function(_0xf8e353){if(_0xf8e353['length']){logger[_0x4ab6('0xb')](_0x4ab6('0x1f'));return _[_0x4ab6('0x20')](_0xf8e353,function(_0x15b998){return _0x15b998[_0x4ab6('0x21')][_0x4ab6('0x22')]===_0x53c822;});}else{logger['info'](_0x4ab6('0x23'));return request({'uri':util[_0x4ab6('0xd')](_0x4ab6('0x24'),_0x175552[_0x4ab6('0x19')])})[_0x4ab6('0x1b')](function(_0x38b12c){logger[_0x4ab6('0xb')]('Admin\x20account\x20selected.');return _0x38b12c;});}});}else{logger[_0x4ab6('0xb')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x4ab6('0xd')](_0x4ab6('0x24'),_0x175552[_0x4ab6('0x19')])})['then'](function(_0x25a00f){logger['info']('Admin\x20account\x20selected.');return _0x25a00f;});}}function getEndUser(_0x3c80d0,_0x448a8a,_0x2b0f5d){logger[_0x4ab6('0xb')](_0x4ab6('0x25'),_0x2b0f5d);return request({'uri':util[_0x4ab6('0xd')](_0x4ab6('0x26'),_0x3c80d0[_0x4ab6('0x19')]),'qs':{'phone':_0x2b0f5d}})[_0x4ab6('0x1b')](function(_0x2c5a12){if(_0x2c5a12[_0x4ab6('0x27')]){logger[_0x4ab6('0xb')](_0x4ab6('0x28'));return _[_0x4ab6('0x20')](_0x2c5a12,{'phone':_0x2b0f5d});}else{logger[_0x4ab6('0xb')](_0x4ab6('0x29'));return request({'uri':util[_0x4ab6('0xd')]('%s/api/v2/contacts',_0x3c80d0[_0x4ab6('0x19')]),'method':_0x4ab6('0x1a'),'body':{'name':_0x448a8a,'phone':_0x2b0f5d}})['then'](function(_0x29f5d4){logger[_0x4ab6('0xb')](_0x4ab6('0x2a'));return _0x29f5d4;});}});}function getAuth(_0x29288e){return util[_0x4ab6('0xd')](_0x4ab6('0x2b'),new Buffer(_0x29288e[_0x4ab6('0x2c')]+':X')[_0x4ab6('0x2d')](_0x4ab6('0x2e')));}function request(_0xe6a27){logger[_0x4ab6('0x2f')]('[HTTP]',JSON[_0x4ab6('0x30')](_0xe6a27));return rp(_[_0x4ab6('0x31')](_0xe6a27,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x4d2e83,_0x4a76a7){var _0x5516fc=[];if(_0x4d2e83&&_0x4d2e83['length']>0x0){_0x5516fc=_[_0x4ab6('0x32')](_0x4d2e83,_0x4a76a7);}return _0x5516fc;}function getCustomFields(_0x318293,_0x50db46){var _0x3d03a7=[];var _0x587581={'custom_fields':[]};if(_0x318293['length']>0x0){_[_0x4ab6('0x33')](_0x318293,function(_0x16f4b7){if(_[_0x4ab6('0x34')]([_0x4ab6('0x35'),_0x4ab6('0x36')],_0x16f4b7[_0x4ab6('0x37')])&&_0x16f4b7[_0x4ab6('0x38')]&&!_0x16f4b7[_0x4ab6('0x39')]){_0x587581[_0x16f4b7[_0x4ab6('0x38')][_0x4ab6('0x3a')]()]=_0x16f4b7[_0x4ab6('0x3b')][_0x4ab6('0x2d')]();}else if(_['includes'](['string',_0x4ab6('0x36')],_0x16f4b7[_0x4ab6('0x37')])&&_0x16f4b7[_0x4ab6('0x3c')]&&_0x16f4b7[_0x4ab6('0x39')]){_0x587581['custom_fields'][_0x4ab6('0x3d')]({'id':_0x16f4b7[_0x4ab6('0x3c')],'value':_0x16f4b7[_0x4ab6('0x3b')][_0x4ab6('0x2d')]()});}else if(_0x16f4b7['type']==='variable'&&_0x16f4b7[_0x4ab6('0x3e')]&&_0x16f4b7['idField']&&_0x16f4b7[_0x4ab6('0x39')]){_0x50db46[_0x16f4b7[_0x4ab6('0x3e')]]&&_0x587581['custom_fields'][_0x4ab6('0x3d')]({'id':_0x16f4b7['idField'],'value':_0x50db46[_0x16f4b7[_0x4ab6('0x3e')]][_0x4ab6('0x2d')]()});}else if(_0x16f4b7[_0x4ab6('0x37')]===_0x4ab6('0x3f')&&_0x16f4b7[_0x4ab6('0x40')]&&_0x16f4b7[_0x4ab6('0x40')][_0x4ab6('0x15')]&&_0x16f4b7['idField']&&_0x16f4b7[_0x4ab6('0x39')]){_0x50db46[_0x16f4b7[_0x4ab6('0x40')]['name'][_0x4ab6('0x3a')]()]&&_0x587581[_0x4ab6('0x41')]['push']({'id':_0x16f4b7['idField'],'value':_0x50db46[_0x16f4b7[_0x4ab6('0x40')][_0x4ab6('0x15')][_0x4ab6('0x3a')]()]['toString']()});}});}return _0x587581;}exports[_0x4ab6('0x42')]=function(_0x1496ea,_0x2b6821,_0x128578,_0x5692ea,_0x4c7983,_0x350f24){var _0x416196,_0x54e80e;_0x350f24['remoteUri']=intUtil[_0x4ab6('0x43')](_0x350f24[_0x4ab6('0x19')]);_0x350f24['serverUrl']=intUtil[_0x4ab6('0x43')](_0x350f24[_0x4ab6('0x44')]);if(_0x4c7983&&_0x4c7983[_0x4ab6('0x45')]){logger[_0x4ab6('0xb')](_0x4ab6('0x46'),_0x4ab6('0x47'));_0x2b6821[_0x4ab6('0x48')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x350f24[_0x4ab6('0x44')],_0x2b6821[_0x4ab6('0x49')],md5(_0x2b6821[_0x4ab6('0x49')]));}else{_0x2b6821[_0x4ab6('0x48')]='';}headers[_0x4ab6('0x4a')]=getAuth(_0x350f24);return getUser(_0x350f24,_0x5692ea[_0x4ab6('0x22')])[_0x4ab6('0x1b')](function(_0x5b541d){_0x416196=_0x5b541d;logger['info'](_0x4ab6('0x4b'),_0x416196['id']);return getEndUser(_0x350f24,_0x2b6821[_0x4ab6('0xf')],_0x2b6821[_0x4ab6('0x10')]);})['then'](function(_0x5c5aea){_0x54e80e=_0x5c5aea;logger[_0x4ab6('0xb')](_0x4ab6('0x4c'),_0x54e80e['id']);return getTicket(_0x350f24,_0x416196,_0x54e80e,_0x128578,_0x2b6821);})[_0x4ab6('0x1b')](function(_0x3bfff7){if(_0x3bfff7&&_0x3bfff7['id']){logger[_0x4ab6('0xb')](_0x4ab6('0x1c'));logger['info'](_0x4ab6('0x4d'),_0x3bfff7['id']);logger['info'](_0x4ab6('0x46'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x4ab6('0xd')](_0x4ab6('0x4e'),_0x5692ea[_0x4ab6('0x15')]),_0x4ab6('0x4f'),{'uri':util['format'](_0x4ab6('0x50'),_0x350f24['remoteUri'],_0x3bfff7['id'])});}})['catch'](function(_0x47a829){logger[_0x4ab6('0x51')]('[QUEUE]',JSON['stringify'](_0x47a829));});};exports[_0x4ab6('0x52')]=function(_0x49b8b3,_0x590cdb,_0x3e8b55,_0x198763,_0x4b3df5,_0x11832b,_0x521feb){var _0x14db63,_0x5e0dec;_0x11832b[_0x4ab6('0x19')]=intUtil[_0x4ab6('0x43')](_0x11832b[_0x4ab6('0x19')]);_0x11832b['serverUrl']=intUtil[_0x4ab6('0x43')](_0x11832b['serverUrl']);if(_0x521feb&&_0x521feb[_0x4ab6('0x53')]&&_0x521feb[_0x4ab6('0x53')]!==_0x4ab6('0x54')){logger[_0x4ab6('0xb')](_0x4ab6('0x55'),'Recording\x20is\x20enabled!');_0x590cdb[_0x4ab6('0x48')]=util[_0x4ab6('0xd')](_0x4ab6('0x56'),_0x11832b[_0x4ab6('0x44')],_0x590cdb[_0x4ab6('0x49')],md5(_0x590cdb[_0x4ab6('0x49')]));}headers[_0x4ab6('0x4a')]=getAuth(_0x11832b);return getUser(_0x11832b,_0x198763[_0x4ab6('0x22')])[_0x4ab6('0x1b')](function(_0x5a1d6c){_0x14db63=_0x5a1d6c;logger[_0x4ab6('0xb')](_0x4ab6('0x4b'),_0x14db63['id']);return getEndUser(_0x11832b,_0x590cdb[_0x4ab6('0x57')],_0x590cdb[_0x4ab6('0x58')]);})['then'](function(_0x58bbcf){_0x5e0dec=_0x58bbcf;logger['info'](_0x4ab6('0x4c'),_0x5e0dec['id']);return getTicket(_0x11832b,_0x14db63,_0x5e0dec,_0x3e8b55,_0x590cdb);})[_0x4ab6('0x1b')](function(_0x31a822){if(_0x31a822&&_0x31a822['id']){logger['info'](_0x4ab6('0x1c'));logger[_0x4ab6('0xb')]('The\x20Ticket\x20ID\x20is:',_0x31a822['id']);logger[_0x4ab6('0xb')]('[OUTBOUND]',_0x4ab6('0x59'));emit(util[_0x4ab6('0xd')](_0x4ab6('0x4e'),_0x198763[_0x4ab6('0x15')]),_0x4ab6('0x4f'),{'uri':util[_0x4ab6('0xd')](_0x4ab6('0x50'),_0x11832b[_0x4ab6('0x19')],_0x31a822['id'])});}})['catch'](function(_0x4c92c0){logger['error'](_0x4ab6('0x55'),JSON['stringify'](_0x4c92c0));});};exports['unmanaged']=function(_0x110f26,_0x46c36a,_0x5c05b1,_0x3ab169,_0x27852c,_0x49d4b8){var _0x2b8b85,_0x16f6f4;_0x49d4b8['remoteUri']=intUtil['stripTrailingSlash'](_0x49d4b8[_0x4ab6('0x19')]);_0x49d4b8['serverUrl']=intUtil[_0x4ab6('0x43')](_0x49d4b8[_0x4ab6('0x44')]);if(_0x27852c&&_0x27852c[_0x4ab6('0x45')]){logger[_0x4ab6('0xb')]('['+_0x46c36a['lastevent'][_0x4ab6('0x5a')]()+']',_0x4ab6('0x47'));_0x46c36a[_0x4ab6('0x48')]=util[_0x4ab6('0xd')](_0x4ab6('0x56'),_0x49d4b8[_0x4ab6('0x44')],_0x46c36a[_0x4ab6('0x49')],md5(_0x46c36a[_0x4ab6('0x49')]));}else{_0x46c36a['recordingURL']='';}headers[_0x4ab6('0x4a')]=getAuth(_0x49d4b8);return getUser(_0x49d4b8,'')[_0x4ab6('0x1b')](function(_0x314c39){_0x2b8b85=_0x314c39;logger['info'](_0x4ab6('0x4b'),_0x2b8b85['id']);return getEndUser(_0x49d4b8,_0x46c36a[_0x4ab6('0xf')],_0x46c36a['calleridnum']);})[_0x4ab6('0x1b')](function(_0x40f16c){_0x16f6f4=_0x40f16c;logger[_0x4ab6('0xb')](_0x4ab6('0x4c'),_0x16f6f4['id']);return getTicket(_0x49d4b8,_0x2b8b85,_0x16f6f4,_0x5c05b1,_0x46c36a);})[_0x4ab6('0x1b')](function(_0x260be0){if(_0x260be0){logger['info']('Ticket\x20created!');logger[_0x4ab6('0xb')]('The\x20Ticket\x20ID\x20is:',_0x260be0['id']);}})[_0x4ab6('0x5b')](function(_0x68ac3b){logger[_0x4ab6('0x51')]('['+_0x46c36a[_0x4ab6('0x5c')]['toUpperCase']()+']',JSON[_0x4ab6('0x30')](_0x68ac3b));});};
\ No newline at end of file
+var _0x691b=['uniqueid','recordingURL','Authorization','The\x20User\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/helpdesk/tickets/%d','error','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','user:%s','trigger:browser:url','catch','lastevent','toUpperCase','request-promise','util','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','socket.io-emitter','application/json','emit','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','Tags','name','Fields','mapValues','keyBy','custom_fields','value','%s/api/v2/tickets','remoteUri','POST','then','info','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','format','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20created.','apiKey','toString','[HTTP]','stringify','GET','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','push','idField','variableName','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!'];(function(_0x2e0367,_0x55e4b0){var _0x448611=function(_0x569674){while(--_0x569674){_0x2e0367['push'](_0x2e0367['shift']());}};_0x448611(++_0x55e4b0);}(_0x691b,0x6d));var _0xb691=function(_0x23829e,_0x281228){_0x23829e=_0x23829e-0x0;var _0x323102=_0x691b[_0x23829e];return _0x323102;};'use strict';var _=require('lodash');var rp=require(_0xb691('0x0'));var md5=require('md5');var util=require(_0xb691('0x1'));var Redis=require('ioredis');var intUtil=require(_0xb691('0x2'));var config=require(_0xb691('0x3'));var logger=require(_0xb691('0x4'))(_0xb691('0x5'));config[_0xb691('0x6')]=_['defaults'](config[_0xb691('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0xb691('0x7'))(new Redis(config[_0xb691('0x6')]));var headers={'Content-Type':'application/json','Accept':_0xb691('0x8')};function emit(_0x40558c,_0x284a88,_0x12d0e0){io['to'](_0x40558c)[_0xb691('0x9')](_0x284a88,_0x12d0e0);}function getTicket(_0x2a726c,_0x3c6bde,_0x4b6abb,_0x4f586f,_0x3e59a3){logger['info']('Creating\x20new\x20ticket...');var _0x1329ba=_['merge']({'responder_id':_0x3c6bde['id'],'requester_id':_0x4b6abb['id'],'name':util['format'](_0xb691('0xa'),_0x3e59a3[_0xb691('0xb')]),'phone':_0x3e59a3[_0xb691('0xc')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xb691('0xd')](_0x4f586f[_0xb691('0xe')],_0x3e59a3,'\x20'),'description':intUtil[_0xb691('0xd')](_0x4f586f[_0xb691('0xf')],_0x3e59a3,'<br>'),'tags':getTags(_0x4f586f[_0xb691('0x10')],_0xb691('0x11'))},getCustomFields(_0x4f586f[_0xb691('0x12')],_0x3e59a3));_0x1329ba['custom_fields']=_[_0xb691('0x13')](_[_0xb691('0x14')](_0x1329ba[_0xb691('0x15')],'id'),_0xb691('0x16'));return request({'uri':util['format'](_0xb691('0x17'),_0x2a726c[_0xb691('0x18')]),'method':_0xb691('0x19'),'body':_0x1329ba})[_0xb691('0x1a')](function(_0x2765d5){logger[_0xb691('0x1b')]('Ticket\x20created!');return _0x2765d5;});}function getUser(_0x9e2d83,_0x3b1edf){if(intUtil[_0xb691('0x1c')](_0x3b1edf)){return request({'uri':util['format'](_0xb691('0x1d'),_0x9e2d83[_0xb691('0x18')]),'qs':{'email':_0x3b1edf}})[_0xb691('0x1a')](function(_0x431b15){if(_0x431b15[_0xb691('0x1e')]){logger['info'](_0xb691('0x1f'));return _[_0xb691('0x20')](_0x431b15,function(_0x51cd44){return _0x51cd44[_0xb691('0x21')][_0xb691('0x22')]===_0x3b1edf;});}else{logger[_0xb691('0x1b')](_0xb691('0x23'));return request({'uri':util[_0xb691('0x24')]('%s/api/v2/agents/me',_0x9e2d83['remoteUri'])})['then'](function(_0x1ddb71){logger[_0xb691('0x1b')](_0xb691('0x25'));return _0x1ddb71;});}});}else{logger[_0xb691('0x1b')](_0xb691('0x26'));return request({'uri':util[_0xb691('0x24')]('%s/api/v2/agents/me',_0x9e2d83[_0xb691('0x18')])})[_0xb691('0x1a')](function(_0xc5a7a1){logger[_0xb691('0x1b')](_0xb691('0x25'));return _0xc5a7a1;});}}function getEndUser(_0x1e9d65,_0x31ea4b,_0x4011d3){logger[_0xb691('0x1b')](_0xb691('0x27'),_0x4011d3);return request({'uri':util[_0xb691('0x24')](_0xb691('0x28'),_0x1e9d65[_0xb691('0x18')]),'qs':{'phone':_0x4011d3}})[_0xb691('0x1a')](function(_0x20fe15){if(_0x20fe15['length']){logger['info']('Enduser\x20found!');return _['find'](_0x20fe15,{'phone':_0x4011d3});}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xb691('0x24')]('%s/api/v2/contacts',_0x1e9d65[_0xb691('0x18')]),'method':_0xb691('0x19'),'body':{'name':_0x31ea4b,'phone':_0x4011d3}})[_0xb691('0x1a')](function(_0x486d8c){logger[_0xb691('0x1b')](_0xb691('0x29'));return _0x486d8c;});}});}function getAuth(_0x8174d8){return util[_0xb691('0x24')]('Basic\x20%s',new Buffer(_0x8174d8[_0xb691('0x2a')]+':X')[_0xb691('0x2b')]('base64'));}function request(_0x166b70){logger['debug'](_0xb691('0x2c'),JSON[_0xb691('0x2d')](_0x166b70));return rp(_['defaults'](_0x166b70,{'method':_0xb691('0x2e'),'headers':headers,'json':!![]}));}function getTags(_0x50b429,_0x1f699f){var _0x57b793=[];if(_0x50b429&&_0x50b429[_0xb691('0x1e')]>0x0){_0x57b793=_[_0xb691('0x2f')](_0x50b429,_0x1f699f);}return _0x57b793;}function getCustomFields(_0x42b00d,_0x1c1659){var _0xfb2be8=[];var _0x293abd={'custom_fields':[]};if(_0x42b00d[_0xb691('0x1e')]>0x0){_[_0xb691('0x30')](_0x42b00d,function(_0x160535){if(_[_0xb691('0x31')]([_0xb691('0x32'),_0xb691('0x33')],_0x160535[_0xb691('0x34')])&&_0x160535[_0xb691('0x35')]&&!_0x160535[_0xb691('0x36')]){_0x293abd[_0x160535[_0xb691('0x35')][_0xb691('0x37')]()]=_0x160535[_0xb691('0x38')][_0xb691('0x2b')]();}else if(_['includes'](['string',_0xb691('0x33')],_0x160535[_0xb691('0x34')])&&_0x160535['idField']&&_0x160535[_0xb691('0x36')]){_0x293abd['custom_fields'][_0xb691('0x39')]({'id':_0x160535[_0xb691('0x3a')],'value':_0x160535['content'][_0xb691('0x2b')]()});}else if(_0x160535['type']==='variable'&&_0x160535[_0xb691('0x3b')]&&_0x160535[_0xb691('0x3a')]&&_0x160535['customField']){_0x1c1659[_0x160535[_0xb691('0x3b')]]&&_0x293abd[_0xb691('0x15')][_0xb691('0x39')]({'id':_0x160535[_0xb691('0x3a')],'value':_0x1c1659[_0x160535[_0xb691('0x3b')]][_0xb691('0x2b')]()});}else if(_0x160535[_0xb691('0x34')]==='customVariable'&&_0x160535[_0xb691('0x3c')]&&_0x160535[_0xb691('0x3c')]['name']&&_0x160535[_0xb691('0x3a')]&&_0x160535['customField']){_0x1c1659[_0x160535[_0xb691('0x3c')][_0xb691('0x11')]['toLowerCase']()]&&_0x293abd[_0xb691('0x15')][_0xb691('0x39')]({'id':_0x160535[_0xb691('0x3a')],'value':_0x1c1659[_0x160535['Variable'][_0xb691('0x11')][_0xb691('0x37')]()][_0xb691('0x2b')]()});}});}return _0x293abd;}exports[_0xb691('0x3d')]=function(_0xfd994d,_0x403800,_0x30aa2f,_0x1c33de,_0x5d3d59,_0x19f62a){var _0x3a1c87,_0x53cdac;_0x19f62a[_0xb691('0x18')]=intUtil[_0xb691('0x3e')](_0x19f62a[_0xb691('0x18')]);_0x19f62a[_0xb691('0x3f')]=intUtil[_0xb691('0x3e')](_0x19f62a[_0xb691('0x3f')]);if(_0x5d3d59&&_0x5d3d59[_0xb691('0x40')]){logger['info'](_0xb691('0x41'),_0xb691('0x42'));_0x403800['recordingURL']=util[_0xb691('0x24')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x19f62a[_0xb691('0x3f')],_0x403800[_0xb691('0x43')],md5(_0x403800[_0xb691('0x43')]));}else{_0x403800[_0xb691('0x44')]='';}headers[_0xb691('0x45')]=getAuth(_0x19f62a);return getUser(_0x19f62a,_0x1c33de[_0xb691('0x22')])[_0xb691('0x1a')](function(_0x4d6fc4){_0x3a1c87=_0x4d6fc4;logger[_0xb691('0x1b')](_0xb691('0x46'),_0x3a1c87['id']);return getEndUser(_0x19f62a,_0x403800[_0xb691('0xb')],_0x403800[_0xb691('0xc')]);})[_0xb691('0x1a')](function(_0x43c459){_0x53cdac=_0x43c459;logger['info']('The\x20Enduser\x20ID\x20is:',_0x53cdac['id']);return getTicket(_0x19f62a,_0x3a1c87,_0x53cdac,_0x30aa2f,_0x403800);})[_0xb691('0x1a')](function(_0x626514){if(_0x626514&&_0x626514['id']){logger[_0xb691('0x1b')](_0xb691('0x47'));logger[_0xb691('0x1b')](_0xb691('0x48'),_0x626514['id']);logger[_0xb691('0x1b')](_0xb691('0x41'),_0xb691('0x49'));emit(util[_0xb691('0x24')]('user:%s',_0x1c33de[_0xb691('0x11')]),'trigger:browser:url',{'uri':util[_0xb691('0x24')](_0xb691('0x4a'),_0x19f62a[_0xb691('0x18')],_0x626514['id'])});}})['catch'](function(_0x270669){logger[_0xb691('0x4b')](_0xb691('0x41'),JSON[_0xb691('0x2d')](_0x270669));});};exports['outbound']=function(_0x14ec3c,_0x3f4d1b,_0xe6da4,_0x4f6ae5,_0x518bd4,_0x48691c,_0x38eefa){var _0x3e4ba4,_0x3ca2d1;_0x48691c[_0xb691('0x18')]=intUtil[_0xb691('0x3e')](_0x48691c[_0xb691('0x18')]);_0x48691c[_0xb691('0x3f')]=intUtil['stripTrailingSlash'](_0x48691c['serverUrl']);if(_0x38eefa&&_0x38eefa[_0xb691('0x4c')]&&_0x38eefa['recordingFormat']!==_0xb691('0x4d')){logger['info'](_0xb691('0x4e'),_0xb691('0x42'));_0x3f4d1b[_0xb691('0x44')]=util[_0xb691('0x24')](_0xb691('0x4f'),_0x48691c[_0xb691('0x3f')],_0x3f4d1b[_0xb691('0x43')],md5(_0x3f4d1b[_0xb691('0x43')]));}headers[_0xb691('0x45')]=getAuth(_0x48691c);return getUser(_0x48691c,_0x4f6ae5['email'])['then'](function(_0x2543c6){_0x3e4ba4=_0x2543c6;logger[_0xb691('0x1b')](_0xb691('0x46'),_0x3e4ba4['id']);return getEndUser(_0x48691c,_0x3f4d1b[_0xb691('0x50')],_0x3f4d1b[_0xb691('0x51')]);})[_0xb691('0x1a')](function(_0x10c570){_0x3ca2d1=_0x10c570;logger[_0xb691('0x1b')](_0xb691('0x52'),_0x3ca2d1['id']);return getTicket(_0x48691c,_0x3e4ba4,_0x3ca2d1,_0xe6da4,_0x3f4d1b);})[_0xb691('0x1a')](function(_0x3bfcdb){if(_0x3bfcdb&&_0x3bfcdb['id']){logger[_0xb691('0x1b')]('Ticket\x20created!');logger[_0xb691('0x1b')]('The\x20Ticket\x20ID\x20is:',_0x3bfcdb['id']);logger[_0xb691('0x1b')](_0xb691('0x4e'),_0xb691('0x49'));emit(util[_0xb691('0x24')](_0xb691('0x53'),_0x4f6ae5[_0xb691('0x11')]),_0xb691('0x54'),{'uri':util[_0xb691('0x24')]('%s/helpdesk/tickets/%d',_0x48691c[_0xb691('0x18')],_0x3bfcdb['id'])});}})[_0xb691('0x55')](function(_0xd5f074){logger[_0xb691('0x4b')](_0xb691('0x4e'),JSON[_0xb691('0x2d')](_0xd5f074));});};exports['unmanaged']=function(_0x381e4a,_0x22ded4,_0x33f17a,_0x2c01c8,_0x2af84a,_0x53e83a){var _0x2594b5,_0x5ef7a3;_0x53e83a[_0xb691('0x18')]=intUtil['stripTrailingSlash'](_0x53e83a[_0xb691('0x18')]);_0x53e83a[_0xb691('0x3f')]=intUtil[_0xb691('0x3e')](_0x53e83a[_0xb691('0x3f')]);if(_0x2af84a&&_0x2af84a['monitor_format']){logger[_0xb691('0x1b')]('['+_0x22ded4[_0xb691('0x56')][_0xb691('0x57')]()+']',_0xb691('0x42'));_0x22ded4[_0xb691('0x44')]=util[_0xb691('0x24')](_0xb691('0x4f'),_0x53e83a[_0xb691('0x3f')],_0x22ded4[_0xb691('0x43')],md5(_0x22ded4[_0xb691('0x43')]));}else{_0x22ded4[_0xb691('0x44')]='';}headers[_0xb691('0x45')]=getAuth(_0x53e83a);return getUser(_0x53e83a,'')[_0xb691('0x1a')](function(_0x5b4341){_0x2594b5=_0x5b4341;logger[_0xb691('0x1b')]('The\x20User\x20ID\x20is:',_0x2594b5['id']);return getEndUser(_0x53e83a,_0x22ded4['calleridname'],_0x22ded4[_0xb691('0xc')]);})[_0xb691('0x1a')](function(_0x384cb0){_0x5ef7a3=_0x384cb0;logger[_0xb691('0x1b')](_0xb691('0x52'),_0x5ef7a3['id']);return getTicket(_0x53e83a,_0x2594b5,_0x5ef7a3,_0x33f17a,_0x22ded4);})[_0xb691('0x1a')](function(_0x5c352f){if(_0x5c352f){logger[_0xb691('0x1b')](_0xb691('0x47'));logger[_0xb691('0x1b')](_0xb691('0x48'),_0x5c352f['id']);}})['catch'](function(_0x347173){logger[_0xb691('0x4b')]('['+_0x22ded4[_0xb691('0x56')][_0xb691('0x57')]()+']',JSON[_0xb691('0x2d')](_0x347173));});};
\ No newline at end of file
index 33bb14c..670279e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5c6=['remoteUri','serverUrl','stripTrailingSlash','username','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','inspect','lodash','request-promise','md5','util','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','socket.io-emitter','GET','/api/selector/owners','info','Getting\x20admin\x20information','users','length','email','Admin\x20found:','adminId','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','headers','agentEmail','userEmail','User\x20found:','userId','Admin\x20selected','adminEmail','/api/lookup?q=','&entities=contact','find','contacts','format','contactNumber','then','endUserId','Contact\x20found\x20work_number:','Contact\x20created:','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','POST','/api/tasks','getString','Subjects','Descriptions','Contact','add','ticketId','task','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey'];(function(_0x236bf2,_0x58373e){var _0x429196=function(_0x58790c){while(--_0x58790c){_0x236bf2['push'](_0x236bf2['shift']());}};_0x429196(++_0x58373e);}(_0xf5c6,0x161));var _0x6f5c=function(_0x5c0382,_0x15c211){_0x5c0382=_0x5c0382-0x0;var _0x485374=_0xf5c6[_0x5c0382];return _0x485374;};'use strict';var _=require(_0x6f5c('0x0'));var rp=require(_0x6f5c('0x1'));var md5=require(_0x6f5c('0x2'));var util=require(_0x6f5c('0x3'));var moment=require('moment');var Promise=require(_0x6f5c('0x4'));var Redis=require(_0x6f5c('0x5'));var intUtil=require(_0x6f5c('0x6'));var config=require(_0x6f5c('0x7'));var logger=require(_0x6f5c('0x8'))('freshsales');config[_0x6f5c('0x9')]=_['defaults'](config[_0x6f5c('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x6f5c('0xa'))(new Redis(config[_0x6f5c('0x9')]));function getAdminId(_0x63f422,_0x2307ba,_0x1dc4f7,_0x5884e1){return new Promise(function(_0x3ced6a,_0x3b45d6){var _0xf6b51d=![];var _0x163fc2={'method':_0x6f5c('0xb'),'uri':_0x5884e1+_0x6f5c('0xc'),'json':!![]};_0x163fc2['headers']=_0x1dc4f7;logger[_0x6f5c('0xd')](_0x6f5c('0xe'));return rp(_0x163fc2)['then'](function(_0x16b1ad){if(_0x16b1ad){var _0x394ff7=_0x16b1ad[_0x6f5c('0xf')];var _0x386622=null;for(_0x386622=0x0;_0x386622<_0x394ff7[_0x6f5c('0x10')];_0x386622++){if(_0x394ff7[_0x386622][_0x6f5c('0x11')]===_0x63f422['adminEmail']){_0x63f422['adminId']=_0x394ff7[_0x386622]['id'];_0xf6b51d=!![];}}if(_0xf6b51d){logger[_0x6f5c('0xd')](_0x6f5c('0x12'),_0x63f422[_0x6f5c('0x13')]);_0x3ced6a(_0x63f422);}else{_0x3b45d6({'statusCode':0x194,'message':_0x6f5c('0x14')});}}else{_0x3b45d6({'statusCode':0x194,'message':_0x6f5c('0x14')});}})[_0x6f5c('0x15')](function(_0x185753){logger[_0x6f5c('0x16')]('['+[_0x2307ba[_0x6f5c('0x17')]()]+']',_0x185753[_0x6f5c('0x18')]);_0x3b45d6(_0x185753);});});}function getUser(_0x167fa0,_0x19e25f,_0x52ebb6){return function(_0x754af0){return new Promise(function(_0xc1f398,_0x532a41){var _0x4986e3={'method':_0x6f5c('0xb'),'uri':_0x52ebb6+_0x6f5c('0xc'),'json':!![]};_0x4986e3[_0x6f5c('0x19')]=_0x19e25f;logger[_0x6f5c('0xd')]('Getting\x20user\x20list');return rp(_0x4986e3)['then'](function(_0x730191){if(_0x730191){var _0x1c220b=_0x730191['users'];var _0xe605cc=![];var _0x2e126c=null;if(_0x754af0['agentEmail']!==null){logger[_0x6f5c('0xd')]('Getting\x20user\x20with\x20email',_0x754af0[_0x6f5c('0x1a')]);_0x754af0[_0x6f5c('0x1b')]=_0x754af0['agentEmail'];for(_0x2e126c=0x0;_0x2e126c<_0x1c220b[_0x6f5c('0x10')];_0x2e126c++){if(_0x1c220b[_0x2e126c][_0x6f5c('0x11')]===_0x754af0[_0x6f5c('0x1a')]){_0xe605cc=!![];_0x754af0['userId']=_0x1c220b[_0x2e126c]['id'];logger[_0x6f5c('0xd')](_0x6f5c('0x1c'),_0x754af0[_0x6f5c('0x1d')]);}}}if(!_0xe605cc){logger['info'](_0x6f5c('0x1e'));_0x754af0['userEmail']=_0x754af0[_0x6f5c('0x1f')];_0x754af0[_0x6f5c('0x1d')]=_0x754af0[_0x6f5c('0x13')];_0xe605cc=!![];}if(_0xe605cc){_0xc1f398(_0x754af0);}else{_0x532a41({'statusCode':0x194,'message':_0x6f5c('0x14')});}}else{_0x532a41({'statusCode':0x194,'message':_0x6f5c('0x14')});}})[_0x6f5c('0x15')](function(_0x4eb86f){logger[_0x6f5c('0x16')]('['+[_0x167fa0[_0x6f5c('0x17')]()]+']',_0x4eb86f['message']);_0x532a41(_0x4eb86f);});});};}function searchContact(_0x33bc74,_0x123b0d,_0x1193b8,_0xbba89d){return new Promise(function(_0x2220bb,_0x300c17){var _0x2ea666={'method':_0x6f5c('0xb'),'headers':_0x123b0d,'uri':_0x33bc74+_0x6f5c('0x20')+_0xbba89d+'&f='+_0x1193b8+_0x6f5c('0x21'),'json':!![]};rp(_0x2ea666)['then'](function(_0x986deb){var _0x4aa7c3=_[_0x6f5c('0x22')](_0x986deb[_0x6f5c('0x23')][_0x6f5c('0x23')],[_0x1193b8,_0xbba89d]);_0x2220bb(_0x4aa7c3);})[_0x6f5c('0x15')](function(_0x3b296a){_0x300c17(_0x3b296a);});});}function getEndUser(_0x540784,_0x2b8b51,_0x24f876){return function(_0x5cfe7f){return new Promise(function(_0x5aad71,_0x25b599){logger['info'](util[_0x6f5c('0x24')]('Searching\x20contact\x20with\x20phone\x20%s',_0x5cfe7f[_0x6f5c('0x25')]));searchContact(_0x24f876,_0x2b8b51,'mobile_number',_0x5cfe7f[_0x6f5c('0x25')])[_0x6f5c('0x26')](function(_0x1d565f){if(_0x1d565f){_0x5cfe7f['endUserId']=_0x1d565f['id'];logger[_0x6f5c('0xd')]('Contact\x20found\x20mobile_number:',_0x5cfe7f[_0x6f5c('0x27')]);return _0x5aad71(_0x5cfe7f);}searchContact(_0x24f876,_0x2b8b51,'work_number',_0x5cfe7f[_0x6f5c('0x25')])['then'](function(_0x2d71f6){if(_0x2d71f6){_0x5cfe7f[_0x6f5c('0x27')]=_0x2d71f6['id'];logger['info'](_0x6f5c('0x28'),_0x5cfe7f[_0x6f5c('0x27')]);return _0x5aad71(_0x5cfe7f);}createEndUser(_0x5cfe7f,_0x540784,_0x2b8b51,_0x24f876)[_0x6f5c('0x26')](function(_0x453808){logger[_0x6f5c('0xd')](_0x6f5c('0x29'),_0x453808[_0x6f5c('0x27')]);return _0x5aad71(_0x453808);});});})['catch'](function(_0x5e778b){_0x25b599(_0x5e778b);});});};}function createEndUser(_0x440514,_0x42d641,_0xb6a99c,_0x389ea1){return new Promise(function(_0x18e1e6,_0x3bb39d){var _0x1d8c6d=moment();var _0x463f2c={'method':'POST','uri':_0x389ea1+_0x6f5c('0x2a'),'body':{'contact':{'last_name':_0x440514[_0x6f5c('0x25')],'work_number':_0x440514[_0x6f5c('0x25')],'mobile_number':_0x440514[_0x6f5c('0x25')],'owner_id':_0x440514[_0x6f5c('0x1d')],'created_at':_0x1d8c6d[_0x6f5c('0x24')](_0x6f5c('0x2b'))}},'json':!![]};_0x463f2c['headers']=_0xb6a99c;logger[_0x6f5c('0xd')](_0x6f5c('0x2c'));return rp(_0x463f2c)[_0x6f5c('0x26')](function(_0x45ddea){_0x440514[_0x6f5c('0x27')]=_0x45ddea[_0x6f5c('0x2d')]['id'];_0x18e1e6(_0x440514);})[_0x6f5c('0x15')](function(_0x245b7f){logger['error']('['+[_0x42d641[_0x6f5c('0x17')]()]+']',_0x245b7f[_0x6f5c('0x18')]);_0x3bb39d(_0x245b7f['message']);});});}function getTicket(_0x3898be,_0xcd9e62,_0xd7e025,_0xe2201d,_0x5bad57){return function(_0x309314){logger[_0x6f5c('0xd')]('Creating\x20new\x20task');return new Promise(function(_0x4dfb3c,_0x566b8a){var _0x367eb2=moment();var _0x13b0d8={'method':_0x6f5c('0x2e'),'uri':_0xd7e025+_0x6f5c('0x2f'),'body':{'title':intUtil[_0x6f5c('0x30')](_0xe2201d[_0x6f5c('0x31')],_0x5bad57,'\x20'),'description':intUtil[_0x6f5c('0x30')](_0xe2201d[_0x6f5c('0x32')],_0x5bad57,'\x0a'),'owner_id':_0x309314[_0x6f5c('0x1d')],'creater_id':_0x309314[_0x6f5c('0x13')],'targetable_id':_0x309314[_0x6f5c('0x27')],'targetable_type':_0x6f5c('0x33'),'created_at':_0x367eb2[_0x6f5c('0x24')](_0x6f5c('0x2b')),'due_date':_0x367eb2[_0x6f5c('0x34')](0x1e,'m')[_0x6f5c('0x24')]('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x13b0d8[_0x6f5c('0x19')]=_0xcd9e62;return rp(_0x13b0d8)[_0x6f5c('0x26')](function(_0x5a01cf){_0x309314[_0x6f5c('0x35')]=_0x5a01cf[_0x6f5c('0x36')]['id'];logger['info'](_0x6f5c('0x37'),_0x309314[_0x6f5c('0x35')]);_0x4dfb3c(_0x309314);})[_0x6f5c('0x15')](function(_0x4ddded){logger[_0x6f5c('0x16')]('['+[_0x3898be['toUpperCase']()]+']',_0x4ddded[_0x6f5c('0x18')]);_0x566b8a(_0x4ddded[_0x6f5c('0x18')]);});});};}function emit(_0x2f1d69,_0x591f89,_0xdf30bc){var _0x475375={'uri':_0x2f1d69+_0x6f5c('0x38')+_0xdf30bc};io['to'](util[_0x6f5c('0x24')](_0x6f5c('0x39'),_0x591f89))[_0x6f5c('0x3a')](_0x6f5c('0x3b'),_0x475375);}exports['cs']=function(_0x44b495,_0x43c7fe,_0x39006c,_0x2369cc,_0x43c6aa,_0x5b633c,_0x735cc0,_0x3a0483){var _0xcab4bc={};var _0x1c28ed={'Authorization':_0x6f5c('0x3c')+_0x5b633c[_0x6f5c('0x3d')]};_0x5b633c[_0x6f5c('0x3e')]=intUtil['stripTrailingSlash'](_0x5b633c[_0x6f5c('0x3e')]);_0x5b633c[_0x6f5c('0x3f')]=intUtil[_0x6f5c('0x40')](_0x5b633c[_0x6f5c('0x3f')]);var _0x662f35=_0x5b633c[_0x6f5c('0x3e')];_0xcab4bc[_0x6f5c('0x1f')]=_0x5b633c[_0x6f5c('0x41')];_0xcab4bc[_0x6f5c('0x25')]=_0x3a0483['toLowerCase']()===_0x6f5c('0x42')?_0x43c7fe[_0x6f5c('0x43')]:_0x43c7fe[_0x6f5c('0x44')];_0xcab4bc[_0x6f5c('0x45')]=_0x3a0483===_0x6f5c('0x46')||_0x3a0483===_0x6f5c('0x47')?'queue':'outbound';if(_0x2369cc){_0xcab4bc[_0x6f5c('0x1a')]=_0x2369cc[_0x6f5c('0x11')];}var _0x2573ea=util[_0x6f5c('0x24')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5b633c[_0x6f5c('0x3f')],_0x43c7fe[_0x6f5c('0x48')],md5(_0x43c7fe[_0x6f5c('0x48')]));if(_0x43c6aa&&_0x43c6aa[_0x6f5c('0x49')]){logger['info'](_0x6f5c('0x4a'),'Recording\x20is\x20enabled!');_0x43c7fe[_0x6f5c('0x4b')]=_0x2573ea;}else if(_0x735cc0&&_0x735cc0['recordingFormat']&&_0x735cc0[_0x6f5c('0x4c')]!==_0x6f5c('0x4d')){logger[_0x6f5c('0xd')](_0x6f5c('0x4e'),_0x6f5c('0x4f'));_0x43c7fe[_0x6f5c('0x4b')]=_0x2573ea;}else{_0x43c7fe['recordingURL']='';}return getAdminId(_0xcab4bc,_0x3a0483,_0x1c28ed,_0x662f35)[_0x6f5c('0x26')](getUser(_0x3a0483,_0x1c28ed,_0x662f35))['then'](getEndUser(_0x3a0483,_0x1c28ed,_0x662f35))[_0x6f5c('0x26')](getTicket(_0x3a0483,_0x1c28ed,_0x662f35,_0x39006c,_0x43c7fe))['then'](function(_0x4fa0f2){logger[_0x6f5c('0xd')](util[_0x6f5c('0x24')](_0x6f5c('0x50'),_0x4fa0f2[_0x6f5c('0x35')]));if(_0x3a0483!==_0x6f5c('0x47')){logger['info']('['+[_0x3a0483[_0x6f5c('0x17')]()]+']',_0x6f5c('0x51'));emit(_0x662f35,_0x2369cc['name'],_0x4fa0f2[_0x6f5c('0x27')]);}})[_0x6f5c('0x15')](function(_0x49a264){logger['error']('['+[_0x3a0483[_0x6f5c('0x17')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x6f5c('0x52')](_0x49a264,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x7942=['message','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','/api/contacts','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','Subjects','getString','Descriptions','YYYY-MM-DDTHH:mm:ss','add','ticketId','task','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','request-promise','md5','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','localhost','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminId','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','Admin\x20selected','adminEmail','userId','error'];(function(_0x58eced,_0x5cc68a){var _0x665fff=function(_0xf19f0f){while(--_0xf19f0f){_0x58eced['push'](_0x58eced['shift']());}};_0x665fff(++_0x5cc68a);}(_0x7942,0x8b));var _0x2794=function(_0x3b5ad9,_0x223867){_0x3b5ad9=_0x3b5ad9-0x0;var _0x611ae9=_0x7942[_0x3b5ad9];return _0x611ae9;};'use strict';var _=require('lodash');var rp=require(_0x2794('0x0'));var md5=require(_0x2794('0x1'));var util=require('util');var moment=require(_0x2794('0x2'));var Promise=require(_0x2794('0x3'));var Redis=require(_0x2794('0x4'));var intUtil=require(_0x2794('0x5'));var config=require(_0x2794('0x6'));var logger=require(_0x2794('0x7'))('freshsales');config[_0x2794('0x8')]=_['defaults'](config[_0x2794('0x8')],{'host':_0x2794('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2794('0x8')]));function getAdminId(_0x26a288,_0x12880e,_0xbbd411,_0x393ad0){return new Promise(function(_0x3493dd,_0x510866){var _0x5c8fab=![];var _0x3856c0={'method':_0x2794('0xa'),'uri':_0x393ad0+_0x2794('0xb'),'json':!![]};_0x3856c0[_0x2794('0xc')]=_0xbbd411;logger[_0x2794('0xd')](_0x2794('0xe'));return rp(_0x3856c0)[_0x2794('0xf')](function(_0x37d395){if(_0x37d395){var _0x200b7f=_0x37d395[_0x2794('0x10')];var _0x492709=null;for(_0x492709=0x0;_0x492709<_0x200b7f[_0x2794('0x11')];_0x492709++){if(_0x200b7f[_0x492709][_0x2794('0x12')]===_0x26a288['adminEmail']){_0x26a288[_0x2794('0x13')]=_0x200b7f[_0x492709]['id'];_0x5c8fab=!![];}}if(_0x5c8fab){logger[_0x2794('0xd')]('Admin\x20found:',_0x26a288[_0x2794('0x13')]);_0x3493dd(_0x26a288);}else{_0x510866({'statusCode':0x194,'message':_0x2794('0x14')});}}else{_0x510866({'statusCode':0x194,'message':_0x2794('0x14')});}})[_0x2794('0x15')](function(_0x19531a){logger['error']('['+[_0x12880e[_0x2794('0x16')]()]+']',_0x19531a['message']);_0x510866(_0x19531a);});});}function getUser(_0x292328,_0x2489ef,_0x3dc138){return function(_0x11387c){return new Promise(function(_0x76b0a4,_0x438bd2){var _0x2191ae={'method':_0x2794('0xa'),'uri':_0x3dc138+_0x2794('0xb'),'json':!![]};_0x2191ae[_0x2794('0xc')]=_0x2489ef;logger['info'](_0x2794('0x17'));return rp(_0x2191ae)['then'](function(_0x28bc04){if(_0x28bc04){var _0x20ccda=_0x28bc04[_0x2794('0x10')];var _0x54b523=![];var _0x370549=null;if(_0x11387c[_0x2794('0x18')]!==null){logger['info'](_0x2794('0x19'),_0x11387c[_0x2794('0x18')]);_0x11387c[_0x2794('0x1a')]=_0x11387c[_0x2794('0x18')];for(_0x370549=0x0;_0x370549<_0x20ccda[_0x2794('0x11')];_0x370549++){if(_0x20ccda[_0x370549]['email']===_0x11387c[_0x2794('0x18')]){_0x54b523=!![];_0x11387c['userId']=_0x20ccda[_0x370549]['id'];logger[_0x2794('0xd')]('User\x20found:',_0x11387c['userId']);}}}if(!_0x54b523){logger[_0x2794('0xd')](_0x2794('0x1b'));_0x11387c['userEmail']=_0x11387c[_0x2794('0x1c')];_0x11387c[_0x2794('0x1d')]=_0x11387c[_0x2794('0x13')];_0x54b523=!![];}if(_0x54b523){_0x76b0a4(_0x11387c);}else{_0x438bd2({'statusCode':0x194,'message':_0x2794('0x14')});}}else{_0x438bd2({'statusCode':0x194,'message':_0x2794('0x14')});}})[_0x2794('0x15')](function(_0x50ffa1){logger[_0x2794('0x1e')]('['+[_0x292328[_0x2794('0x16')]()]+']',_0x50ffa1[_0x2794('0x1f')]);_0x438bd2(_0x50ffa1);});});};}function searchContact(_0x59bd70,_0x408940,_0x29e36d,_0x3d1db5){return new Promise(function(_0x347dec,_0x5c7ebd){var _0xeabd63={'method':_0x2794('0xa'),'headers':_0x408940,'uri':_0x59bd70+'/api/lookup?q='+_0x3d1db5+_0x2794('0x20')+_0x29e36d+_0x2794('0x21'),'json':!![]};rp(_0xeabd63)['then'](function(_0x863337){var _0x5ec1a6=_[_0x2794('0x22')](_0x863337[_0x2794('0x23')]['contacts'],[_0x29e36d,_0x3d1db5]);_0x347dec(_0x5ec1a6);})[_0x2794('0x15')](function(_0x3f4cef){_0x5c7ebd(_0x3f4cef);});});}function getEndUser(_0x36455d,_0x27206d,_0x55eb98){return function(_0x1357e7){return new Promise(function(_0x334f09,_0x185409){logger[_0x2794('0xd')](util[_0x2794('0x24')](_0x2794('0x25'),_0x1357e7[_0x2794('0x26')]));searchContact(_0x55eb98,_0x27206d,_0x2794('0x27'),_0x1357e7[_0x2794('0x26')])[_0x2794('0xf')](function(_0x342868){if(_0x342868){_0x1357e7[_0x2794('0x28')]=_0x342868['id'];logger['info'](_0x2794('0x29'),_0x1357e7['endUserId']);return _0x334f09(_0x1357e7);}searchContact(_0x55eb98,_0x27206d,_0x2794('0x2a'),_0x1357e7[_0x2794('0x26')])['then'](function(_0x3deaab){if(_0x3deaab){_0x1357e7[_0x2794('0x28')]=_0x3deaab['id'];logger[_0x2794('0xd')](_0x2794('0x2b'),_0x1357e7[_0x2794('0x28')]);return _0x334f09(_0x1357e7);}createEndUser(_0x1357e7,_0x36455d,_0x27206d,_0x55eb98)[_0x2794('0xf')](function(_0x2f2365){logger[_0x2794('0xd')]('Contact\x20created:',_0x2f2365[_0x2794('0x28')]);return _0x334f09(_0x2f2365);});});})['catch'](function(_0x5a9b25){_0x185409(_0x5a9b25);});});};}function createEndUser(_0x1c810b,_0x93388b,_0x5a07d3,_0x5a40e8){return new Promise(function(_0x39323e,_0x453222){var _0x472e12=moment();var _0x27cc01={'method':'POST','uri':_0x5a40e8+_0x2794('0x2c'),'body':{'contact':{'last_name':_0x1c810b[_0x2794('0x26')],'work_number':_0x1c810b[_0x2794('0x26')],'mobile_number':_0x1c810b[_0x2794('0x26')],'owner_id':_0x1c810b[_0x2794('0x1d')],'created_at':_0x472e12[_0x2794('0x24')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x27cc01[_0x2794('0xc')]=_0x5a07d3;logger[_0x2794('0xd')](_0x2794('0x2d'));return rp(_0x27cc01)[_0x2794('0xf')](function(_0x341040){_0x1c810b[_0x2794('0x28')]=_0x341040[_0x2794('0x2e')]['id'];_0x39323e(_0x1c810b);})['catch'](function(_0x26be40){logger['error']('['+[_0x93388b[_0x2794('0x16')]()]+']',_0x26be40['message']);_0x453222(_0x26be40[_0x2794('0x1f')]);});});}function getTicket(_0x2ad66a,_0x4a12b6,_0x5dc3d0,_0x60a6e4,_0x16eb79){return function(_0x3ddafd){logger['info'](_0x2794('0x2f'));return new Promise(function(_0x2fe806,_0x546ff0){var _0x14d62f=moment();var _0x27374f={'method':'POST','uri':_0x5dc3d0+_0x2794('0x30'),'body':{'title':intUtil['getString'](_0x60a6e4[_0x2794('0x31')],_0x16eb79,'\x20'),'description':intUtil[_0x2794('0x32')](_0x60a6e4[_0x2794('0x33')],_0x16eb79,'\x0a'),'owner_id':_0x3ddafd['userId'],'creater_id':_0x3ddafd['adminId'],'targetable_id':_0x3ddafd[_0x2794('0x28')],'targetable_type':'Contact','created_at':_0x14d62f[_0x2794('0x24')](_0x2794('0x34')),'due_date':_0x14d62f[_0x2794('0x35')](0x1e,'m')[_0x2794('0x24')](_0x2794('0x34'))},'json':!![]};_0x27374f[_0x2794('0xc')]=_0x4a12b6;return rp(_0x27374f)['then'](function(_0x91db2d){_0x3ddafd[_0x2794('0x36')]=_0x91db2d[_0x2794('0x37')]['id'];logger[_0x2794('0xd')]('Task\x20created:',_0x3ddafd[_0x2794('0x36')]);_0x2fe806(_0x3ddafd);})['catch'](function(_0x2fd5d3){logger['error']('['+[_0x2ad66a[_0x2794('0x16')]()]+']',_0x2fd5d3[_0x2794('0x1f')]);_0x546ff0(_0x2fd5d3[_0x2794('0x1f')]);});});};}function emit(_0xde3591,_0x3d1946,_0x28ca85){var _0x27ce9c={'uri':_0xde3591+_0x2794('0x38')+_0x28ca85};io['to'](util['format'](_0x2794('0x39'),_0x3d1946))[_0x2794('0x3a')](_0x2794('0x3b'),_0x27ce9c);}exports['cs']=function(_0x1e2a7a,_0x5deb16,_0x4a4715,_0x42e8f9,_0x541df2,_0x258220,_0x2d3511,_0x3628c3){var _0x4f8b0a={};var _0x31c85c={'Authorization':_0x2794('0x3c')+_0x258220[_0x2794('0x3d')]};_0x258220[_0x2794('0x3e')]=intUtil[_0x2794('0x3f')](_0x258220[_0x2794('0x3e')]);_0x258220[_0x2794('0x40')]=intUtil[_0x2794('0x3f')](_0x258220[_0x2794('0x40')]);var _0x5e2574=_0x258220[_0x2794('0x3e')];_0x4f8b0a[_0x2794('0x1c')]=_0x258220[_0x2794('0x41')];_0x4f8b0a['contactNumber']=_0x3628c3[_0x2794('0x42')]()===_0x2794('0x43')?_0x5deb16[_0x2794('0x44')]:_0x5deb16[_0x2794('0x45')];_0x4f8b0a[_0x2794('0x46')]=_0x3628c3===_0x2794('0x47')||_0x3628c3===_0x2794('0x48')?_0x2794('0x47'):'outbound';if(_0x42e8f9){_0x4f8b0a[_0x2794('0x18')]=_0x42e8f9[_0x2794('0x12')];}var _0xe76453=util[_0x2794('0x24')](_0x2794('0x49'),_0x258220['serverUrl'],_0x5deb16[_0x2794('0x4a')],md5(_0x5deb16['uniqueid']));if(_0x541df2&&_0x541df2[_0x2794('0x4b')]){logger['info']('[QUEUE]',_0x2794('0x4c'));_0x5deb16[_0x2794('0x4d')]=_0xe76453;}else if(_0x2d3511&&_0x2d3511[_0x2794('0x4e')]&&_0x2d3511[_0x2794('0x4e')]!==_0x2794('0x4f')){logger[_0x2794('0xd')](_0x2794('0x50'),_0x2794('0x4c'));_0x5deb16['recordingURL']=_0xe76453;}else{_0x5deb16[_0x2794('0x4d')]='';}return getAdminId(_0x4f8b0a,_0x3628c3,_0x31c85c,_0x5e2574)[_0x2794('0xf')](getUser(_0x3628c3,_0x31c85c,_0x5e2574))['then'](getEndUser(_0x3628c3,_0x31c85c,_0x5e2574))[_0x2794('0xf')](getTicket(_0x3628c3,_0x31c85c,_0x5e2574,_0x4a4715,_0x5deb16))['then'](function(_0xeaf37d){logger[_0x2794('0xd')](util[_0x2794('0x24')]('The\x20ticket\x20ID\x20is:\x20%s',_0xeaf37d['ticketId']));if(_0x3628c3!==_0x2794('0x48')){logger[_0x2794('0xd')]('['+[_0x3628c3[_0x2794('0x16')]()]+']',_0x2794('0x51'));emit(_0x5e2574,_0x42e8f9[_0x2794('0x52')],_0xeaf37d[_0x2794('0x28')]);}})[_0x2794('0x15')](function(_0xa35f30){logger[_0x2794('0x1e')]('['+[_0x3628c3['toUpperCase']()]+_0x2794('0x53'),util[_0x2794('0x54')](_0xa35f30,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index c54f5ba..82ab463 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a62=['./dynamics365','./freshsales','zendesk','salesforce','sugarcrm','zoho','desk','vtiger','freshsales','exec','data1','toLowerCase','data2','data3','queue','routeId','outbound','EVENT\x20UNKNOWN','unmanaged','freshdesk','servicenow','log','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','lodash','./zendesk','./salesforce','./sugarcrm','./freshdesk','./desk','./vtiger','./servicenow'];(function(_0x33696f,_0x174357){var _0x3497d3=function(_0xd8914d){while(--_0xd8914d){_0x33696f['push'](_0x33696f['shift']());}};_0x3497d3(++_0x174357);}(_0x8a62,0x18f));var _0x28a6=function(_0xbcd041,_0x2e8922){_0xbcd041=_0xbcd041-0x0;var _0x2ad66a=_0x8a62[_0xbcd041];return _0x2ad66a;};'use strict';var _=require(_0x28a6('0x0'));var util=require('util');var zendesk=require(_0x28a6('0x1'));var salesforce=require(_0x28a6('0x2'));var sugarcrm=require(_0x28a6('0x3'));var freshdesk=require(_0x28a6('0x4'));var zoho=require('./zoho');var desk=require(_0x28a6('0x5'));var vtiger=require(_0x28a6('0x6'));var servicenow=require(_0x28a6('0x7'));var dynamics365=require(_0x28a6('0x8'));var freshsales=require(_0x28a6('0x9'));var integrations=[_0x28a6('0xa'),_0x28a6('0xb'),_0x28a6('0xc'),'freshdesk',_0x28a6('0xd'),_0x28a6('0xe'),_0x28a6('0xf'),'dynamics365',_0x28a6('0x10'),'servicenow'];exports[_0x28a6('0x11')]=function(_0x3a61c4,_0x5bacae,_0x47fc1f,_0x273ebe,_0x514282,_0x265f7b){if(_0x47fc1f){if(_['includes'](integrations,_0x3a61c4[_0x28a6('0x12')][_0x28a6('0x13')]())){try{var _0x526ece=null;var _0xc6e917='';var _0x37a50a=_0x47fc1f[_0x3a61c4[_0x28a6('0x12')][_0x28a6('0x13')]()];if(_0x37a50a){var _0x5a63c7=_0x37a50a[_0x3a61c4[_0x28a6('0x14')]];if(_0x5a63c7){var _0x2d40fe=_['find'](_0x5a63c7['Configurations'],{'id':parseInt(_0x3a61c4[_0x28a6('0x15')],0xa)});if(_0x2d40fe){if(_0x273ebe){if(_0x514282&&_0x5bacae[_0x28a6('0x16')]){_0xc6e917=_0x28a6('0x16');}else if(_0x5bacae[_0x28a6('0x17')]){_0xc6e917=_0x28a6('0x18');}else{console['log'](_0x28a6('0x19'),_0x5bacae);}}else{_0xc6e917=_0x28a6('0x1a');}switch(_0x3a61c4[_0x28a6('0x12')][_0x28a6('0x13')]()){case'zendesk':zendesk[_0xc6e917](_0x3a61c4,_0x5bacae,_0x2d40fe,_0x273ebe,_0x514282,_0x5a63c7,_0x265f7b);break;case'salesforce':salesforce[_0xc6e917](_0x3a61c4,_0x5bacae,_0x2d40fe,_0x273ebe,_0x514282,_0x5a63c7,_0x265f7b);break;case'sugarcrm':sugarcrm[_0xc6e917](_0x3a61c4,_0x5bacae,_0x2d40fe,_0x273ebe,_0x514282,_0x5a63c7,_0x265f7b);break;case _0x28a6('0x1b'):freshdesk[_0xc6e917](_0x3a61c4,_0x5bacae,_0x2d40fe,_0x273ebe,_0x514282,_0x5a63c7,_0x265f7b);break;case _0x28a6('0xd'):zoho[_0xc6e917](_0x3a61c4,_0x5bacae,_0x2d40fe,_0x273ebe,_0x514282,_0x5a63c7,_0x265f7b);break;case'desk':desk[_0xc6e917](_0x3a61c4,_0x5bacae,_0x2d40fe,_0x273ebe,_0x514282,_0x5a63c7,_0x265f7b);break;case _0x28a6('0xf'):vtiger[_0xc6e917](_0x3a61c4,_0x5bacae,_0x2d40fe,_0x273ebe,_0x514282,_0x5a63c7,_0x265f7b);break;case _0x28a6('0x10'):freshsales['cs'](_0x3a61c4,_0x5bacae,_0x2d40fe,_0x273ebe,_0x514282,_0x5a63c7,_0x265f7b,_0xc6e917);break;case _0x28a6('0x1c'):servicenow['cs'](_0x3a61c4,_0x5bacae,_0x2d40fe,_0x273ebe,_0x514282,_0x5a63c7,_0x265f7b,_0xc6e917);break;case'dynamics365':dynamics365['cs'](_0x3a61c4,_0x5bacae,_0x2d40fe,_0x273ebe,_0x514282,_0x5a63c7,_0x265f7b,_0xc6e917);break;default:console[_0x28a6('0x1d')](_0x28a6('0x1e'));}}else{_0x526ece=require(_0x28a6('0x1f'))(_0x3a61c4['data1'][_0x28a6('0x13')]());_0x526ece[_0x28a6('0x20')](_0x28a6('0x21'),util[_0x28a6('0x22')](_0x28a6('0x23'),_0x3a61c4['data1']['toLowerCase'](),_0x3a61c4[_0x28a6('0x15')]));}}else{_0x526ece=require(_0x28a6('0x1f'))(_0x3a61c4[_0x28a6('0x12')]['toLowerCase']());_0x526ece[_0x28a6('0x20')]('[EXEC]',util[_0x28a6('0x22')](_0x28a6('0x24'),_0x3a61c4['data1'][_0x28a6('0x13')](),_0x3a61c4[_0x28a6('0x14')]));}}else{}}catch(_0x48f976){console[_0x28a6('0x20')](_0x48f976);}}}};
\ No newline at end of file
+var _0xe34c=['zendesk','salesforce','sugarcrm','freshdesk','zoho','desk','dynamics365','freshsales','servicenow','exec','toLowerCase','data2','find','Configurations','data3','queue','routeId','outbound','EVENT\x20UNKNOWN','unmanaged','vtiger','log','data1','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','lodash','util','./zendesk','./freshdesk','./zoho','./vtiger','./servicenow','./dynamics365','./freshsales'];(function(_0x22b476,_0x33e669){var _0xe5426b=function(_0x32ed9a){while(--_0x32ed9a){_0x22b476['push'](_0x22b476['shift']());}};_0xe5426b(++_0x33e669);}(_0xe34c,0x144));var _0xce34=function(_0xced10f,_0x5f0820){_0xced10f=_0xced10f-0x0;var _0x57d39b=_0xe34c[_0xced10f];return _0x57d39b;};'use strict';var _=require(_0xce34('0x0'));var util=require(_0xce34('0x1'));var zendesk=require(_0xce34('0x2'));var salesforce=require('./salesforce');var sugarcrm=require('./sugarcrm');var freshdesk=require(_0xce34('0x3'));var zoho=require(_0xce34('0x4'));var desk=require('./desk');var vtiger=require(_0xce34('0x5'));var servicenow=require(_0xce34('0x6'));var dynamics365=require(_0xce34('0x7'));var freshsales=require(_0xce34('0x8'));var integrations=[_0xce34('0x9'),_0xce34('0xa'),_0xce34('0xb'),_0xce34('0xc'),_0xce34('0xd'),_0xce34('0xe'),'vtiger',_0xce34('0xf'),_0xce34('0x10'),_0xce34('0x11')];exports[_0xce34('0x12')]=function(_0x1ccccf,_0x2cae9e,_0x4940e7,_0x5544ad,_0x253488,_0x504907){if(_0x4940e7){if(_['includes'](integrations,_0x1ccccf['data1'][_0xce34('0x13')]())){try{var _0x408d47=null;var _0x28df2b='';var _0x1ad9d9=_0x4940e7[_0x1ccccf['data1'][_0xce34('0x13')]()];if(_0x1ad9d9){var _0x444753=_0x1ad9d9[_0x1ccccf[_0xce34('0x14')]];if(_0x444753){var _0x386f99=_[_0xce34('0x15')](_0x444753[_0xce34('0x16')],{'id':parseInt(_0x1ccccf[_0xce34('0x17')],0xa)});if(_0x386f99){if(_0x5544ad){if(_0x253488&&_0x2cae9e['queue']){_0x28df2b=_0xce34('0x18');}else if(_0x2cae9e[_0xce34('0x19')]){_0x28df2b=_0xce34('0x1a');}else{console['log'](_0xce34('0x1b'),_0x2cae9e);}}else{_0x28df2b=_0xce34('0x1c');}switch(_0x1ccccf['data1'][_0xce34('0x13')]()){case'zendesk':zendesk[_0x28df2b](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907);break;case _0xce34('0xa'):salesforce[_0x28df2b](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907);break;case _0xce34('0xb'):sugarcrm[_0x28df2b](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907);break;case _0xce34('0xc'):freshdesk[_0x28df2b](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907);break;case _0xce34('0xd'):zoho[_0x28df2b](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907);break;case'desk':desk[_0x28df2b](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907);break;case _0xce34('0x1d'):vtiger[_0x28df2b](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907);break;case'freshsales':freshsales['cs'](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907,_0x28df2b);break;case'servicenow':servicenow['cs'](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907,_0x28df2b);break;case'dynamics365':dynamics365['cs'](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907,_0x28df2b);break;default:console[_0xce34('0x1e')]('unknown\x20integration');}}else{_0x408d47=require('../../../../config/logger')(_0x1ccccf[_0xce34('0x1f')]['toLowerCase']());_0x408d47[_0xce34('0x20')](_0xce34('0x21'),util[_0xce34('0x22')](_0xce34('0x23'),_0x1ccccf[_0xce34('0x1f')]['toLowerCase'](),_0x1ccccf[_0xce34('0x17')]));}}else{_0x408d47=require('../../../../config/logger')(_0x1ccccf[_0xce34('0x1f')][_0xce34('0x13')]());_0x408d47[_0xce34('0x20')](_0xce34('0x21'),util[_0xce34('0x22')](_0xce34('0x24'),_0x1ccccf['data1'][_0xce34('0x13')](),_0x1ccccf[_0xce34('0x14')]));}}else{}}catch(_0x1c9e86){console['error'](_0x1c9e86);}}}};
\ No newline at end of file
index 9041bcf..84e7f24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0286=['additionalSearchLead','$or','additionalSearchAccount','Account','Lead','first','Phone','attributes','type','toLowerCase','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','format','Caller\x20-\x20%s','Company','No\x20Company','upperFirst','forEach','includes','picklist','idField','content','variable','variableName','toString','customVariable','Variable','name','concat','securityToken','Connection','https://login.salesforce.com','clientId','clientSecret','login','username','queue','stripTrailingSlash','serverUrl','remoteUri','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%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:salesforce:display','newTab','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','outbound','recordingFormat','none','[OUTBOUND]','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','unmanaged','lastevent','toUpperCase',']\x20Ticket\x20%s\x20created.','lodash','request-promise','moment','bluebird','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','getString','Subjects','Descriptions','Task','ActivityDate','IsRecurrence','contact','WhoId','endUserType','account','WhatId','ticketType','Case','ContactId','AccountId','lead','leadId','sobject','create','isNil','validateEmail','find','execute','then','Email','info','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','additionalSearchContact','merge','Contact','length','cloneDeep'];(function(_0xcf61c2,_0x3fdde6){var _0x4e236f=function(_0x574801){while(--_0x574801){_0xcf61c2['push'](_0xcf61c2['shift']());}};_0x4e236f(++_0x3fdde6);}(_0x0286,0xcb));var _0x6028=function(_0x58bebd,_0x3b8a61){_0x58bebd=_0x58bebd-0x0;var _0xae4fc0=_0x0286[_0x58bebd];return _0xae4fc0;};'use strict';var _=require(_0x6028('0x0'));var rp=require(_0x6028('0x1'));var moment=require(_0x6028('0x2'));var BPromise=require(_0x6028('0x3'));var md5=require('md5');var jsforce=require(_0x6028('0x4'));var util=require(_0x6028('0x5'));var Redis=require(_0x6028('0x6'));var intUtil=require(_0x6028('0x7'));var config=require(_0x6028('0x8'));var logger=require(_0x6028('0x9'))('salesforce');config[_0x6028('0xa')]=_[_0x6028('0xb')](config[_0x6028('0xa')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6028('0xa')]));function emit(_0x10bcfc,_0x4fced3,_0xbed64e){io['to'](_0x10bcfc)['emit'](_0x4fced3,_0xbed64e);}function getTicket(_0x2386cd,_0x1a2057,_0x2f09a7,_0x56dc1b,_0x5db965,_0xc09c21,_0x4b864a,_0x245a24){var _0x405506=Object['assign']({},{'OwnerId':_0x1a2057['id'],'Subject':intUtil[_0x6028('0xc')](_0x56dc1b[_0x6028('0xd')],_0x5db965,'\x20'),'Description':intUtil[_0x6028('0xc')](_0x56dc1b[_0x6028('0xe')],_0x5db965,'\x0a')},getCustomFields(_0xc09c21,_0x5db965));if(_0x2f09a7){if(_0x56dc1b['ticketType']===_0x6028('0xf')){_0x405506[_0x6028('0x10')]=moment['utc']();_0x405506['IsReminderSet']=![];_0x405506[_0x6028('0x11')]=![];if(_0x2f09a7['endUserType']===_0x6028('0x12')||_0x2f09a7['endUserType']==='lead'){_0x405506[_0x6028('0x13')]=_0x2f09a7['id'];}else if(_0x2f09a7[_0x6028('0x14')]===_0x6028('0x15')){_0x405506[_0x6028('0x16')]=_0x2f09a7['id'];}}else if(_0x56dc1b[_0x6028('0x17')]===_0x6028('0x18')){if(_0x2f09a7[_0x6028('0x14')]===_0x6028('0x12')){_0x405506[_0x6028('0x19')]=_0x2f09a7['id'];}else if(_0x2f09a7[_0x6028('0x14')]===_0x6028('0x15')){_0x405506[_0x6028('0x1a')]=_0x2f09a7['id'];}else if(_0x2f09a7[_0x6028('0x14')]===_0x6028('0x1b')&&_0x56dc1b[_0x6028('0x1c')]){_0x405506[_0x56dc1b[_0x6028('0x1c')]]=_0x2f09a7['id'];}else{logger['info']('Association\x20between\x20Case\x20and\x20Lead\x20skipped');}}}return _0x4b864a[_0x6028('0x1d')](_0x56dc1b[_0x6028('0x17')])[_0x6028('0x1e')](_0x405506);}function getUser(_0x56fc16,_0x51f240,_0x1d0014){if(!_[_0x6028('0x1f')](_0x51f240)&&intUtil[_0x6028('0x20')](_0x51f240)){var _0x5b45f4={'Email':_0x51f240};var _0x5edade={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x1d0014[_0x6028('0x1d')]('User')[_0x6028('0x21')](_0x5b45f4,_0x5edade)[_0x6028('0x22')]()[_0x6028('0x23')](function(_0xcd4385){if(_0xcd4385['length']){var _0x7855e4=_[_0x6028('0x21')](_0xcd4385,function(_0x1f1387){return _0x1f1387[_0x6028('0x24')]===_0x51f240;});if(_0x7855e4){logger[_0x6028('0x25')](_0x6028('0x26'),_0x51f240);return BPromise[_0x6028('0x27')]({'id':_0x7855e4['Id'],'name':_0x7855e4[_0x6028('0x28')]});}}else{logger[_0x6028('0x25')](_0x6028('0x29'),_0x51f240);return _0x1d0014[_0x6028('0x2a')]()['then'](function(_0x12d1f1){return BPromise[_0x6028('0x27')]({'id':_0x12d1f1[_0x6028('0x2b')],'name':_0x12d1f1[_0x6028('0x2c')]});});}});}else{logger[_0x6028('0x25')](_0x6028('0x29'),_0x51f240);return _0x1d0014['identity']()[_0x6028('0x23')](function(_0x176308){return BPromise[_0x6028('0x27')]({'id':_0x176308[_0x6028('0x2b')],'name':_0x176308[_0x6028('0x2c')]});});}}function getEndUser(_0x21903c,_0xcd08c9,_0x4bb356,_0x4b07b5,_0x3e6028){var _0x48abc2={'$or':{'Phone':_0x4b07b5}};var _0x350ca5={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x6028('0x27')]()[_0x6028('0x23')](function(){logger[_0x6028('0x25')](_0x6028('0x2d'),_0x4b07b5,_0xcd08c9[_0x6028('0x2e')]);switch(_0xcd08c9[_0x6028('0x2e')]){case _0x6028('0x2f'):var _0xb60819=_['cloneDeep'](_0x48abc2);if(_0xcd08c9[_0x6028('0x30')]){var _0x1c0aa8={};_0x1c0aa8[_0xcd08c9['additionalSearchContact']]=_0x4b07b5;_[_0x6028('0x31')](_0xb60819['$or'],_0x1c0aa8);}return _0x3e6028[_0x6028('0x1d')](_0x6028('0x32'))[_0x6028('0x21')](_0xb60819,_0x350ca5)['execute']()[_0x6028('0x23')](function(_0x3cf846){if(_0x3cf846&&_0x3cf846[_0x6028('0x33')]){return _0x3cf846;}else{var _0x374340=_[_0x6028('0x34')](_0x48abc2);if(_0xcd08c9[_0x6028('0x35')]){var _0x2c387f={};_0x2c387f[_0xcd08c9['additionalSearchLead']]=_0x4b07b5;_[_0x6028('0x31')](_0x374340[_0x6028('0x36')],_0x2c387f);}return _0x3e6028[_0x6028('0x1d')]('Lead')['find'](_0x374340,_0x350ca5);}});case'account_contact_lead':var _0x28a980=_[_0x6028('0x34')](_0x48abc2);if(_0xcd08c9[_0x6028('0x37')]){var _0x1c0aa8={};_0x1c0aa8[_0xcd08c9['additionalSearchAccount']]=_0x4b07b5;_[_0x6028('0x31')](_0x28a980[_0x6028('0x36')],_0x1c0aa8);}return _0x3e6028[_0x6028('0x1d')](_0x6028('0x38'))[_0x6028('0x21')](_0x28a980,_0x350ca5)[_0x6028('0x22')]()[_0x6028('0x23')](function(_0x4138e7){if(_0x4138e7&&_0x4138e7[_0x6028('0x33')]){return _0x4138e7;}else{var _0x3bfdd6=_[_0x6028('0x34')](_0x48abc2);if(_0xcd08c9[_0x6028('0x30')]){var _0x25f16a={};_0x25f16a[_0xcd08c9[_0x6028('0x30')]]=_0x4b07b5;_['merge'](_0x3bfdd6[_0x6028('0x36')],_0x25f16a);}return _0x3e6028['sobject'](_0x6028('0x32'))[_0x6028('0x21')](_0x3bfdd6,_0x350ca5)['then'](function(_0x14f058){if(_0x14f058&&_0x14f058[_0x6028('0x33')]){return _0x14f058;}else{var _0x46f7fd=_['cloneDeep'](_0x48abc2);if(_0xcd08c9['additionalSearchLead']){var _0x461093={};_0x461093[_0xcd08c9[_0x6028('0x35')]]=_0x4b07b5;_[_0x6028('0x31')](_0x46f7fd[_0x6028('0x36')],_0x461093);}return _0x3e6028[_0x6028('0x1d')](_0x6028('0x39'))[_0x6028('0x21')](_0x46f7fd,_0x350ca5);}});}});case _0x6028('0x12'):var _0xb60819=_[_0x6028('0x34')](_0x48abc2);if(_0xcd08c9[_0x6028('0x30')]){var _0x1c0aa8={};_0x1c0aa8[_0xcd08c9['additionalSearchContact']]=_0x4b07b5;_[_0x6028('0x31')](_0xb60819[_0x6028('0x36')],_0x1c0aa8);}return _0x3e6028[_0x6028('0x1d')](_0x6028('0x32'))[_0x6028('0x21')](_0xb60819,_0x350ca5)[_0x6028('0x22')]();case _0x6028('0x1b'):var _0x1d7426=_[_0x6028('0x34')](_0x48abc2);if(_0xcd08c9['additionalSearchLead']){var _0x1c0aa8={};_0x1c0aa8[_0xcd08c9[_0x6028('0x35')]]=_0x4b07b5;_[_0x6028('0x31')](_0x1d7426[_0x6028('0x36')],_0x1c0aa8);}return _0x3e6028['sobject'](_0x6028('0x39'))[_0x6028('0x21')](_0x1d7426,_0x350ca5);case _0x6028('0x15'):var _0x28a980=_[_0x6028('0x34')](_0x48abc2);if(_0xcd08c9[_0x6028('0x37')]){var _0x1c0aa8={};_0x1c0aa8[_0xcd08c9[_0x6028('0x37')]]=_0x4b07b5;_[_0x6028('0x31')](_0x28a980[_0x6028('0x36')],_0x1c0aa8);}return _0x3e6028[_0x6028('0x1d')](_0x6028('0x38'))['find'](_0x28a980,_0x350ca5);default:return null;}})[_0x6028('0x23')](function(_0x34b630){if(_0x34b630&&_0x34b630['length']){var _0x31bb17=_[_0x6028('0x3a')](_0x34b630);if(_0x31bb17){return BPromise[_0x6028('0x27')]({'id':_0x31bb17['Id'],'name':_0x31bb17[_0x6028('0x28')],'phone':_0x31bb17[_0x6028('0x3b')],'endUserType':_0x31bb17[_0x6028('0x3c')][_0x6028('0x3d')][_0x6028('0x3e')]()});}}})[_0x6028('0x23')](function(_0x2d27cb){if(_0x2d27cb){logger[_0x6028('0x25')]('Enduser\x20(%s)\x20with\x20phone\x20%s\x20found',_0x2d27cb[_0x6028('0x14')],_0x4b07b5);return BPromise['resolve'](_0x2d27cb);}else{logger[_0x6028('0x25')](_0x6028('0x3f'),_0x4b07b5);var _0x112fd6={'Phone':_0x4b07b5};if(_0xcd08c9[_0x6028('0x40')]){if(_0xcd08c9[_0x6028('0x40')]===_0x6028('0x12')){logger[_0x6028('0x25')](_0x6028('0x41'),_0x4b07b5,_0xcd08c9[_0x6028('0x40')]);_0x112fd6[_0x6028('0x42')]=_0x4bb356!==_0x6028('0x43')?_0x4bb356:util[_0x6028('0x44')](_0x6028('0x45'),_0x4b07b5);}else if(_0xcd08c9[_0x6028('0x40')]===_0x6028('0x1b')){logger[_0x6028('0x25')](_0x6028('0x41'),_0x4b07b5,_0xcd08c9[_0x6028('0x40')]);_0x112fd6[_0x6028('0x42')]=_0x4bb356!==_0x6028('0x43')?_0x4bb356:util[_0x6028('0x44')](_0x6028('0x45'),_0x4b07b5);_0x112fd6[_0x6028('0x46')]=_0x6028('0x47');}else if(_0xcd08c9['moduleCreate']===_0x6028('0x15')){logger['info'](_0x6028('0x41'),_0x4b07b5,_0xcd08c9[_0x6028('0x40')]);_0x112fd6[_0x6028('0x28')]=_0x4bb356!==_0x6028('0x43')?_0x4bb356:util[_0x6028('0x44')]('Caller\x20-\x20%s',_0x4b07b5);}else{return null;}}return _0x3e6028['sobject'](_[_0x6028('0x48')](_0xcd08c9[_0x6028('0x40')]))['create'](_0x112fd6)['then'](function(_0x14f8fa){return BPromise['resolve']({'id':_0x14f8fa['id'],'endUserType':_0xcd08c9[_0x6028('0x40')]});});}});}function getCustomFields(_0x58e19c,_0x505434){var _0x28bf36={};if(_0x58e19c[_0x6028('0x33')]>0x0){_[_0x6028('0x49')](_0x58e19c,function(_0x5b23d1){if(_[_0x6028('0x4a')](['string',_0x6028('0x4b')],_0x5b23d1['type'])&&_0x5b23d1[_0x6028('0x4c')]){_0x28bf36[_0x5b23d1['idField']]=_0x5b23d1[_0x6028('0x4d')]['toString']();}else if(_0x5b23d1['type']===_0x6028('0x4e')&&_0x5b23d1[_0x6028('0x4f')]&&_0x5b23d1[_0x6028('0x4c')]){_0x505434[_0x5b23d1[_0x6028('0x4f')]]&&(_0x28bf36[_0x5b23d1[_0x6028('0x4c')]]=_0x505434[_0x5b23d1['variableName']][_0x6028('0x50')]());}else if(_0x5b23d1[_0x6028('0x3d')]===_0x6028('0x51')&&_0x5b23d1[_0x6028('0x52')]&&_0x5b23d1[_0x6028('0x52')][_0x6028('0x53')]&&_0x5b23d1[_0x6028('0x4c')]){_0x505434[_0x5b23d1[_0x6028('0x52')]['name'][_0x6028('0x3e')]()]&&(_0x28bf36[_0x5b23d1['idField']]=_0x505434[_0x5b23d1['Variable'][_0x6028('0x53')]['toLowerCase']()]['toString']());}});}return _0x28bf36;}function getConnection(_0x407aa4){var _0x40ae58=_0x407aa4['password'][_0x6028('0x54')](_0x407aa4[_0x6028('0x55')]);var _0x5da032=new jsforce[(_0x6028('0x56'))]({'oauth2':{'loginUrl':_0x407aa4['remoteUri']||_0x6028('0x57'),'clientId':_0x407aa4[_0x6028('0x58')],'clientSecret':_0x407aa4[_0x6028('0x59')]}});return _0x5da032[_0x6028('0x5a')](_0x407aa4[_0x6028('0x5b')],_0x40ae58)['then'](function(){logger[_0x6028('0x25')]('Connection\x20established.');return _0x5da032;});}exports[_0x6028('0x5c')]=function(_0x36fa6b,_0x469473,_0x18b859,_0x16b34d,_0xa65a25,_0x13c8b9){var _0x28427b,_0x597c4d,_0x4a4a12,_0x404738;_0x13c8b9['serverUrl']=intUtil[_0x6028('0x5d')](_0x13c8b9[_0x6028('0x5e')]);_0x13c8b9[_0x6028('0x5f')]=intUtil[_0x6028('0x5d')](_0x13c8b9[_0x6028('0x5f')]);if(_0xa65a25&&_0xa65a25['monitor_format']){logger['info'](_0x6028('0x60'),_0x6028('0x61'));_0x469473[_0x6028('0x62')]=util[_0x6028('0x44')](_0x6028('0x63'),_0x13c8b9[_0x6028('0x5e')],_0x469473[_0x6028('0x64')],md5(_0x469473[_0x6028('0x64')]));}else{_0x469473['recordingURL']='';}return getConnection(_0x13c8b9)['then'](function(_0x407c82){_0x404738=_0x407c82;return getUser(_0x13c8b9,_0x16b34d[_0x6028('0x65')],_0x404738);})[_0x6028('0x23')](function(_0x463b62){_0x28427b=_0x463b62;return getEndUser(_0x13c8b9,_0x18b859,_0x469473[_0x6028('0x66')],_0x469473[_0x6028('0x67')],_0x404738);})[_0x6028('0x23')](function(_0x5a51ed){_0x597c4d=_0x5a51ed;return getTicket(_0x13c8b9,_0x28427b,_0x597c4d,_0x18b859,_0x469473,_0x18b859[_0x6028('0x68')],_0x404738,_0x6028('0x5c'));})[_0x6028('0x23')](function(_0x3d5ec7){_0x4a4a12=_0x3d5ec7;logger['info'](_0x6028('0x69'),_0x4a4a12['id']);logger[_0x6028('0x25')](_0x6028('0x6a'),_0x4a4a12['id'],_0x16b34d[_0x6028('0x53')],_0x13c8b9['type']);switch(_0x13c8b9['type']){case _0x6028('0x6b'):emit(util[_0x6028('0x44')](_0x6028('0x6c'),_0x16b34d['name']),_0x6028('0x6d'),{'recordId':_0x4a4a12['id']});break;case _0x6028('0x6e'):emit(util['format'](_0x6028('0x6c'),_0x16b34d['name']),_0x6028('0x6f'),{'uri':util[_0x6028('0x44')](_0x6028('0x70'),_0x404738[_0x6028('0x71')],_0x4a4a12['id'])});break;default:logger[_0x6028('0x72')](_0x6028('0x73'));}})[_0x6028('0x74')](function(_0x358851){logger[_0x6028('0x72')]('[QUEUE]',_0x358851);});};exports[_0x6028('0x75')]=function(_0x4ad769,_0x390a0f,_0x57edd9,_0x37665c,_0x41ab6a,_0x54ad4f,_0x19aa5b){var _0xae67c4,_0x2390c9,_0xcdb7c6,_0xcd1b7f;_0x54ad4f['serverUrl']=intUtil[_0x6028('0x5d')](_0x54ad4f[_0x6028('0x5e')]);_0x54ad4f[_0x6028('0x5f')]=intUtil[_0x6028('0x5d')](_0x54ad4f[_0x6028('0x5f')]);if(_0x19aa5b&&_0x19aa5b[_0x6028('0x76')]&&_0x19aa5b[_0x6028('0x76')]!==_0x6028('0x77')){logger[_0x6028('0x25')](_0x6028('0x78'),_0x6028('0x61'));_0x390a0f['recordingURL']=util[_0x6028('0x44')](_0x6028('0x63'),_0x54ad4f[_0x6028('0x5e')],_0x390a0f[_0x6028('0x64')],md5(_0x390a0f['uniqueid']));}return getConnection(_0x54ad4f)[_0x6028('0x23')](function(_0x7cdd30){_0xcd1b7f=_0x7cdd30;return getUser(_0x54ad4f,_0x37665c['email'],_0xcd1b7f);})[_0x6028('0x23')](function(_0x24390a){_0xae67c4=_0x24390a;return getEndUser(_0x54ad4f,_0x57edd9,_0x390a0f['destcalleridname'],_0x390a0f[_0x6028('0x79')],_0xcd1b7f);})[_0x6028('0x23')](function(_0xe8f998){_0x2390c9=_0xe8f998;return getTicket(_0x54ad4f,_0xae67c4,_0x2390c9,_0x57edd9,_0x390a0f,_0x57edd9[_0x6028('0x68')],_0xcd1b7f,'outbound');})[_0x6028('0x23')](function(_0x514ed3){_0xcdb7c6=_0x514ed3;logger[_0x6028('0x25')](_0x6028('0x7a'),_0xcdb7c6['id']);logger[_0x6028('0x25')](_0x6028('0x7b'),_0xcdb7c6['id'],_0x37665c['name'],_0x54ad4f['type']);switch(_0x54ad4f[_0x6028('0x3d')]){case _0x6028('0x6b'):emit(util['format'](_0x6028('0x6c'),_0x37665c['name']),'trigger:salesforce:display',{'recordId':_0xcdb7c6['id']});break;case _0x6028('0x6e'):emit(util[_0x6028('0x44')]('user:%s',_0x37665c[_0x6028('0x53')]),'trigger:browser:url',{'uri':util['format']('%s/%s/e',_0xcd1b7f['instanceUrl'],_0xcdb7c6['id'])});break;default:logger[_0x6028('0x72')](_0x6028('0x78'),'Salesforce\x20account\x20type\x20not\x20recognized');}})[_0x6028('0x74')](function(_0x479a29){logger[_0x6028('0x72')](_0x6028('0x78'),_0x479a29);});};exports[_0x6028('0x7c')]=function(_0x580791,_0x297f9e,_0x545c74,_0x532ce9,_0x4a6b37,_0x545fdb){var _0x50bee4,_0xc5615b,_0x53a16e,_0x327df3;_0x545fdb['serverUrl']=intUtil[_0x6028('0x5d')](_0x545fdb[_0x6028('0x5e')]);_0x545fdb[_0x6028('0x5f')]=intUtil[_0x6028('0x5d')](_0x545fdb[_0x6028('0x5f')]);if(_0x4a6b37&&_0x4a6b37['monitor_format']){logger[_0x6028('0x25')]('['+_0x297f9e[_0x6028('0x7d')][_0x6028('0x7e')]()+']','Recording\x20is\x20enabled!');_0x297f9e['recordingURL']=util[_0x6028('0x44')](_0x6028('0x63'),_0x545fdb[_0x6028('0x5e')],_0x297f9e[_0x6028('0x64')],md5(_0x297f9e['uniqueid']));}else{_0x297f9e[_0x6028('0x62')]='';}return getConnection(_0x545fdb)[_0x6028('0x23')](function(_0x55b98f){_0x327df3=_0x55b98f;if(!_[_0x6028('0x1f')](_0x532ce9)){return getUser(_0x545fdb,_0x532ce9['name'],_0x327df3);}else{return getUser(_0x545fdb,null,_0x327df3);}})[_0x6028('0x23')](function(_0x2e4932){_0x50bee4=_0x2e4932;return getEndUser(_0x545fdb,_0x545c74,_0x297f9e[_0x6028('0x66')],_0x297f9e[_0x6028('0x67')],_0x327df3);})[_0x6028('0x23')](function(_0x40e205){_0xc5615b=_0x40e205;return getTicket(_0x545fdb,_0x50bee4,_0xc5615b,_0x545c74,_0x297f9e,_0x545c74[_0x6028('0x68')],_0x327df3);})[_0x6028('0x23')](function(_0x3ba9c1){_0x53a16e=_0x3ba9c1;logger[_0x6028('0x25')]('['+_0x297f9e[_0x6028('0x7d')][_0x6028('0x7e')]()+_0x6028('0x7f'),_0x53a16e['id']);logger['info']('['+_0x297f9e[_0x6028('0x7d')]['toUpperCase']()+']\x20Integration\x20account\x20type\x20%s.',_0x545fdb[_0x6028('0x3d')]);})[_0x6028('0x74')](function(_0x55e608){logger[_0x6028('0x72')]('['+_0x297f9e[_0x6028('0x7d')]['toUpperCase']()+']',_0x55e608);});};
\ No newline at end of file
+var _0x793e=['Connection\x20established.','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','calleridnum','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','trigger:salesforce:display','newTab','trigger:browser:url','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','error','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','Fields','outbound','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','%s/%s/e','instanceUrl','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','lastevent','toUpperCase',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','catch','lodash','request-promise','moment','./util','../../../../config/logger','redis','defaults','localhost','emit','assign','Subjects','getString','Descriptions','ticketType','Task','IsReminderSet','contact','endUserType','lead','WhoId','account','WhatId','Case','ContactId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','validateEmail','User','find','then','length','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','$or','execute','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','Account','Contact','first','Phone','attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','format','Company','No\x20Company','<unknown>','forEach','includes','content','toString','variable','variableName','idField','customVariable','Variable','name','password','securityToken','remoteUri','https://login.salesforce.com','clientId','clientSecret','username'];(function(_0x5df0a9,_0x4d38b9){var _0x403964=function(_0x151454){while(--_0x151454){_0x5df0a9['push'](_0x5df0a9['shift']());}};_0x403964(++_0x4d38b9);}(_0x793e,0x125));var _0xe793=function(_0x38a155,_0x2aa026){_0x38a155=_0x38a155-0x0;var _0x269403=_0x793e[_0x38a155];return _0x269403;};'use strict';var _=require(_0xe793('0x0'));var rp=require(_0xe793('0x1'));var moment=require(_0xe793('0x2'));var BPromise=require('bluebird');var md5=require('md5');var jsforce=require('jsforce');var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xe793('0x3'));var config=require('../../../../config/environment');var logger=require(_0xe793('0x4'))('salesforce');config[_0xe793('0x5')]=_[_0xe793('0x6')](config[_0xe793('0x5')],{'host':_0xe793('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x19f6f1,_0x21d7d2,_0x3e1174){io['to'](_0x19f6f1)[_0xe793('0x8')](_0x21d7d2,_0x3e1174);}function getTicket(_0x4962d4,_0x3dcfe5,_0x12d4b8,_0x4bc5d7,_0x52b9ac,_0x397910,_0x1a8651,_0x40cc9a){var _0x5f4cee=Object[_0xe793('0x9')]({},{'OwnerId':_0x3dcfe5['id'],'Subject':intUtil['getString'](_0x4bc5d7[_0xe793('0xa')],_0x52b9ac,'\x20'),'Description':intUtil[_0xe793('0xb')](_0x4bc5d7[_0xe793('0xc')],_0x52b9ac,'\x0a')},getCustomFields(_0x397910,_0x52b9ac));if(_0x12d4b8){if(_0x4bc5d7[_0xe793('0xd')]===_0xe793('0xe')){_0x5f4cee['ActivityDate']=moment['utc']();_0x5f4cee[_0xe793('0xf')]=![];_0x5f4cee['IsRecurrence']=![];if(_0x12d4b8['endUserType']===_0xe793('0x10')||_0x12d4b8[_0xe793('0x11')]===_0xe793('0x12')){_0x5f4cee[_0xe793('0x13')]=_0x12d4b8['id'];}else if(_0x12d4b8[_0xe793('0x11')]===_0xe793('0x14')){_0x5f4cee[_0xe793('0x15')]=_0x12d4b8['id'];}}else if(_0x4bc5d7[_0xe793('0xd')]===_0xe793('0x16')){if(_0x12d4b8[_0xe793('0x11')]===_0xe793('0x10')){_0x5f4cee[_0xe793('0x17')]=_0x12d4b8['id'];}else if(_0x12d4b8[_0xe793('0x11')]==='account'){_0x5f4cee[_0xe793('0x18')]=_0x12d4b8['id'];}else if(_0x12d4b8[_0xe793('0x11')]==='lead'&&_0x4bc5d7[_0xe793('0x19')]){_0x5f4cee[_0x4bc5d7['leadId']]=_0x12d4b8['id'];}else{logger[_0xe793('0x1a')](_0xe793('0x1b'));}}}return _0x1a8651[_0xe793('0x1c')](_0x4bc5d7[_0xe793('0xd')])[_0xe793('0x1d')](_0x5f4cee);}function getUser(_0x20f128,_0x138b2c,_0x75cf04){if(!_[_0xe793('0x1e')](_0x138b2c)&&intUtil[_0xe793('0x1f')](_0x138b2c)){var _0x1e2c57={'Email':_0x138b2c};var _0x4d361b={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x75cf04[_0xe793('0x1c')](_0xe793('0x20'))[_0xe793('0x21')](_0x1e2c57,_0x4d361b)['execute']()[_0xe793('0x22')](function(_0x3de695){if(_0x3de695[_0xe793('0x23')]){var _0x53be9d=_['find'](_0x3de695,function(_0x3f459f){return _0x3f459f['Email']===_0x138b2c;});if(_0x53be9d){logger[_0xe793('0x1a')](_0xe793('0x24'),_0x138b2c);return BPromise[_0xe793('0x25')]({'id':_0x53be9d['Id'],'name':_0x53be9d[_0xe793('0x26')]});}}else{logger[_0xe793('0x1a')](_0xe793('0x27'),_0x138b2c);return _0x75cf04[_0xe793('0x28')]()[_0xe793('0x22')](function(_0x2c1dd1){return BPromise['resolve']({'id':_0x2c1dd1[_0xe793('0x29')],'name':_0x2c1dd1[_0xe793('0x2a')]});});}});}else{logger['info'](_0xe793('0x27'),_0x138b2c);return _0x75cf04[_0xe793('0x28')]()[_0xe793('0x22')](function(_0x31412a){return BPromise[_0xe793('0x25')]({'id':_0x31412a['user_id'],'name':_0x31412a['display_name']});});}}function getEndUser(_0x4142b7,_0xad9076,_0x384d8f,_0xd4dd75,_0x40f426){var _0x46617c={'$or':{'Phone':_0xd4dd75}};var _0x59360f={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0xe793('0x25')]()[_0xe793('0x22')](function(){logger[_0xe793('0x1a')](_0xe793('0x2b'),_0xd4dd75,_0xad9076[_0xe793('0x2c')]);switch(_0xad9076['moduleSearch']){case _0xe793('0x2d'):var _0x4be1db=_[_0xe793('0x2e')](_0x46617c);if(_0xad9076[_0xe793('0x2f')]){var _0x2f1a4f={};_0x2f1a4f[_0xad9076[_0xe793('0x2f')]]=_0xd4dd75;_[_0xe793('0x30')](_0x4be1db[_0xe793('0x31')],_0x2f1a4f);}return _0x40f426[_0xe793('0x1c')]('Contact')[_0xe793('0x21')](_0x4be1db,_0x59360f)[_0xe793('0x32')]()['then'](function(_0x3df84b){if(_0x3df84b&&_0x3df84b[_0xe793('0x23')]){return _0x3df84b;}else{var _0x56d33a=_[_0xe793('0x2e')](_0x46617c);if(_0xad9076[_0xe793('0x33')]){var _0x40c0a6={};_0x40c0a6[_0xad9076[_0xe793('0x33')]]=_0xd4dd75;_[_0xe793('0x30')](_0x56d33a[_0xe793('0x31')],_0x40c0a6);}return _0x40f426[_0xe793('0x1c')](_0xe793('0x34'))[_0xe793('0x21')](_0x56d33a,_0x59360f);}});case _0xe793('0x35'):var _0x6fc3e=_[_0xe793('0x2e')](_0x46617c);if(_0xad9076['additionalSearchAccount']){var _0x2f1a4f={};_0x2f1a4f[_0xad9076[_0xe793('0x36')]]=_0xd4dd75;_[_0xe793('0x30')](_0x6fc3e[_0xe793('0x31')],_0x2f1a4f);}return _0x40f426['sobject'](_0xe793('0x37'))[_0xe793('0x21')](_0x6fc3e,_0x59360f)[_0xe793('0x32')]()[_0xe793('0x22')](function(_0x116a96){if(_0x116a96&&_0x116a96['length']){return _0x116a96;}else{var _0x369536=_[_0xe793('0x2e')](_0x46617c);if(_0xad9076['additionalSearchContact']){var _0xf31210={};_0xf31210[_0xad9076[_0xe793('0x2f')]]=_0xd4dd75;_[_0xe793('0x30')](_0x369536[_0xe793('0x31')],_0xf31210);}return _0x40f426[_0xe793('0x1c')](_0xe793('0x38'))[_0xe793('0x21')](_0x369536,_0x59360f)[_0xe793('0x22')](function(_0x29201e){if(_0x29201e&&_0x29201e[_0xe793('0x23')]){return _0x29201e;}else{var _0x2c7358=_[_0xe793('0x2e')](_0x46617c);if(_0xad9076['additionalSearchLead']){var _0x3af882={};_0x3af882[_0xad9076[_0xe793('0x33')]]=_0xd4dd75;_[_0xe793('0x30')](_0x2c7358[_0xe793('0x31')],_0x3af882);}return _0x40f426[_0xe793('0x1c')](_0xe793('0x34'))[_0xe793('0x21')](_0x2c7358,_0x59360f);}});}});case _0xe793('0x10'):var _0x4be1db=_[_0xe793('0x2e')](_0x46617c);if(_0xad9076[_0xe793('0x2f')]){var _0x2f1a4f={};_0x2f1a4f[_0xad9076['additionalSearchContact']]=_0xd4dd75;_['merge'](_0x4be1db[_0xe793('0x31')],_0x2f1a4f);}return _0x40f426['sobject']('Contact')[_0xe793('0x21')](_0x4be1db,_0x59360f)[_0xe793('0x32')]();case _0xe793('0x12'):var _0x34c1cd=_[_0xe793('0x2e')](_0x46617c);if(_0xad9076[_0xe793('0x33')]){var _0x2f1a4f={};_0x2f1a4f[_0xad9076[_0xe793('0x33')]]=_0xd4dd75;_[_0xe793('0x30')](_0x34c1cd[_0xe793('0x31')],_0x2f1a4f);}return _0x40f426[_0xe793('0x1c')](_0xe793('0x34'))[_0xe793('0x21')](_0x34c1cd,_0x59360f);case'account':var _0x6fc3e=_[_0xe793('0x2e')](_0x46617c);if(_0xad9076[_0xe793('0x36')]){var _0x2f1a4f={};_0x2f1a4f[_0xad9076[_0xe793('0x36')]]=_0xd4dd75;_[_0xe793('0x30')](_0x6fc3e[_0xe793('0x31')],_0x2f1a4f);}return _0x40f426[_0xe793('0x1c')](_0xe793('0x37'))[_0xe793('0x21')](_0x6fc3e,_0x59360f);default:return null;}})[_0xe793('0x22')](function(_0x3aea34){if(_0x3aea34&&_0x3aea34[_0xe793('0x23')]){var _0x4cec61=_[_0xe793('0x39')](_0x3aea34);if(_0x4cec61){return BPromise[_0xe793('0x25')]({'id':_0x4cec61['Id'],'name':_0x4cec61['Name'],'phone':_0x4cec61[_0xe793('0x3a')],'endUserType':_0x4cec61[_0xe793('0x3b')][_0xe793('0x3c')][_0xe793('0x3d')]()});}}})[_0xe793('0x22')](function(_0x69f987){if(_0x69f987){logger[_0xe793('0x1a')](_0xe793('0x3e'),_0x69f987[_0xe793('0x11')],_0xd4dd75);return BPromise['resolve'](_0x69f987);}else{logger['info'](_0xe793('0x3f'),_0xd4dd75);var _0x1bf9f1={'Phone':_0xd4dd75};if(_0xad9076[_0xe793('0x40')]){if(_0xad9076[_0xe793('0x40')]==='contact'){logger[_0xe793('0x1a')](_0xe793('0x41'),_0xd4dd75,_0xad9076[_0xe793('0x40')]);_0x1bf9f1[_0xe793('0x42')]=_0x384d8f!=='<unknown>'?_0x384d8f:util['format']('Caller\x20-\x20%s',_0xd4dd75);}else if(_0xad9076[_0xe793('0x40')]===_0xe793('0x12')){logger[_0xe793('0x1a')](_0xe793('0x41'),_0xd4dd75,_0xad9076[_0xe793('0x40')]);_0x1bf9f1['LastName']=_0x384d8f!=='<unknown>'?_0x384d8f:util[_0xe793('0x43')]('Caller\x20-\x20%s',_0xd4dd75);_0x1bf9f1[_0xe793('0x44')]=_0xe793('0x45');}else if(_0xad9076[_0xe793('0x40')]===_0xe793('0x14')){logger['info'](_0xe793('0x41'),_0xd4dd75,_0xad9076[_0xe793('0x40')]);_0x1bf9f1[_0xe793('0x26')]=_0x384d8f!==_0xe793('0x46')?_0x384d8f:util[_0xe793('0x43')]('Caller\x20-\x20%s',_0xd4dd75);}else{return null;}}return _0x40f426[_0xe793('0x1c')](_['upperFirst'](_0xad9076['moduleCreate']))[_0xe793('0x1d')](_0x1bf9f1)[_0xe793('0x22')](function(_0x2d9b34){return BPromise[_0xe793('0x25')]({'id':_0x2d9b34['id'],'endUserType':_0xad9076[_0xe793('0x40')]});});}});}function getCustomFields(_0x4bb07c,_0x1bedec){var _0x35d8c3={};if(_0x4bb07c[_0xe793('0x23')]>0x0){_[_0xe793('0x47')](_0x4bb07c,function(_0x1d7191){if(_[_0xe793('0x48')](['string','picklist'],_0x1d7191['type'])&&_0x1d7191['idField']){_0x35d8c3[_0x1d7191['idField']]=_0x1d7191[_0xe793('0x49')][_0xe793('0x4a')]();}else if(_0x1d7191[_0xe793('0x3c')]===_0xe793('0x4b')&&_0x1d7191[_0xe793('0x4c')]&&_0x1d7191[_0xe793('0x4d')]){_0x1bedec[_0x1d7191['variableName']]&&(_0x35d8c3[_0x1d7191[_0xe793('0x4d')]]=_0x1bedec[_0x1d7191['variableName']][_0xe793('0x4a')]());}else if(_0x1d7191['type']===_0xe793('0x4e')&&_0x1d7191['Variable']&&_0x1d7191[_0xe793('0x4f')]['name']&&_0x1d7191[_0xe793('0x4d')]){_0x1bedec[_0x1d7191[_0xe793('0x4f')][_0xe793('0x50')][_0xe793('0x3d')]()]&&(_0x35d8c3[_0x1d7191[_0xe793('0x4d')]]=_0x1bedec[_0x1d7191['Variable'][_0xe793('0x50')][_0xe793('0x3d')]()]['toString']());}});}return _0x35d8c3;}function getConnection(_0x2c853d){var _0x26b6a4=_0x2c853d[_0xe793('0x51')]['concat'](_0x2c853d[_0xe793('0x52')]);var _0x193a73=new jsforce['Connection']({'oauth2':{'loginUrl':_0x2c853d[_0xe793('0x53')]||_0xe793('0x54'),'clientId':_0x2c853d[_0xe793('0x55')],'clientSecret':_0x2c853d[_0xe793('0x56')]}});return _0x193a73['login'](_0x2c853d[_0xe793('0x57')],_0x26b6a4)[_0xe793('0x22')](function(){logger[_0xe793('0x1a')](_0xe793('0x58'));return _0x193a73;});}exports[_0xe793('0x59')]=function(_0x3c607e,_0x2752aa,_0x3f47b1,_0x466bb9,_0x42d1b3,_0x5975a6){var _0x402146,_0x23473b,_0x385ed0,_0x2c3d5d;_0x5975a6['serverUrl']=intUtil[_0xe793('0x5a')](_0x5975a6[_0xe793('0x5b')]);_0x5975a6[_0xe793('0x53')]=intUtil[_0xe793('0x5a')](_0x5975a6['remoteUri']);if(_0x42d1b3&&_0x42d1b3[_0xe793('0x5c')]){logger[_0xe793('0x1a')](_0xe793('0x5d'),_0xe793('0x5e'));_0x2752aa[_0xe793('0x5f')]=util[_0xe793('0x43')](_0xe793('0x60'),_0x5975a6[_0xe793('0x5b')],_0x2752aa[_0xe793('0x61')],md5(_0x2752aa['uniqueid']));}else{_0x2752aa[_0xe793('0x5f')]='';}return getConnection(_0x5975a6)[_0xe793('0x22')](function(_0x5b39c1){_0x2c3d5d=_0x5b39c1;return getUser(_0x5975a6,_0x466bb9[_0xe793('0x62')],_0x2c3d5d);})['then'](function(_0x369827){_0x402146=_0x369827;return getEndUser(_0x5975a6,_0x3f47b1,_0x2752aa[_0xe793('0x63')],_0x2752aa[_0xe793('0x64')],_0x2c3d5d);})[_0xe793('0x22')](function(_0x411b24){_0x23473b=_0x411b24;return getTicket(_0x5975a6,_0x402146,_0x23473b,_0x3f47b1,_0x2752aa,_0x3f47b1['Fields'],_0x2c3d5d,_0xe793('0x59'));})[_0xe793('0x22')](function(_0x5292e0){_0x385ed0=_0x5292e0;logger[_0xe793('0x1a')](_0xe793('0x65'),_0x385ed0['id']);logger[_0xe793('0x1a')](_0xe793('0x66'),_0x385ed0['id'],_0x466bb9[_0xe793('0x50')],_0x5975a6[_0xe793('0x3c')]);switch(_0x5975a6[_0xe793('0x3c')]){case _0xe793('0x67'):emit(util[_0xe793('0x43')](_0xe793('0x68'),_0x466bb9[_0xe793('0x50')]),_0xe793('0x69'),{'recordId':_0x385ed0['id']});break;case _0xe793('0x6a'):emit(util['format']('user:%s',_0x466bb9[_0xe793('0x50')]),_0xe793('0x6b'),{'uri':util[_0xe793('0x43')]('%s/%s/e',_0x2c3d5d['instanceUrl'],_0x385ed0['id'])});break;default:logger['error'](_0xe793('0x6c'));}})['catch'](function(_0x202a3e){logger[_0xe793('0x6d')](_0xe793('0x5d'),_0x202a3e);});};exports['outbound']=function(_0x5cd44a,_0xad84c7,_0xad6600,_0x1b8751,_0x48320f,_0x5871b9,_0x2fc335){var _0x3e7fdb,_0x535ed5,_0x76efa3,_0x4ce05a;_0x5871b9[_0xe793('0x5b')]=intUtil['stripTrailingSlash'](_0x5871b9[_0xe793('0x5b')]);_0x5871b9[_0xe793('0x53')]=intUtil['stripTrailingSlash'](_0x5871b9[_0xe793('0x53')]);if(_0x2fc335&&_0x2fc335[_0xe793('0x6e')]&&_0x2fc335[_0xe793('0x6e')]!=='none'){logger[_0xe793('0x1a')](_0xe793('0x6f'),_0xe793('0x5e'));_0xad84c7['recordingURL']=util[_0xe793('0x43')](_0xe793('0x60'),_0x5871b9[_0xe793('0x5b')],_0xad84c7[_0xe793('0x61')],md5(_0xad84c7[_0xe793('0x61')]));}return getConnection(_0x5871b9)[_0xe793('0x22')](function(_0xd6d18a){_0x4ce05a=_0xd6d18a;return getUser(_0x5871b9,_0x1b8751[_0xe793('0x62')],_0x4ce05a);})[_0xe793('0x22')](function(_0x5613eb){_0x3e7fdb=_0x5613eb;return getEndUser(_0x5871b9,_0xad6600,_0xad84c7[_0xe793('0x70')],_0xad84c7[_0xe793('0x71')],_0x4ce05a);})['then'](function(_0x216ba0){_0x535ed5=_0x216ba0;return getTicket(_0x5871b9,_0x3e7fdb,_0x535ed5,_0xad6600,_0xad84c7,_0xad6600[_0xe793('0x72')],_0x4ce05a,_0xe793('0x73'));})[_0xe793('0x22')](function(_0x5f1d3b){_0x76efa3=_0x5f1d3b;logger[_0xe793('0x1a')](_0xe793('0x74'),_0x76efa3['id']);logger[_0xe793('0x1a')](_0xe793('0x75'),_0x76efa3['id'],_0x1b8751['name'],_0x5871b9['type']);switch(_0x5871b9[_0xe793('0x3c')]){case _0xe793('0x67'):emit(util[_0xe793('0x43')]('user:%s',_0x1b8751['name']),_0xe793('0x69'),{'recordId':_0x76efa3['id']});break;case'newTab':emit(util[_0xe793('0x43')]('user:%s',_0x1b8751[_0xe793('0x50')]),_0xe793('0x6b'),{'uri':util[_0xe793('0x43')](_0xe793('0x76'),_0x4ce05a[_0xe793('0x77')],_0x76efa3['id'])});break;default:logger['error'](_0xe793('0x6f'),_0xe793('0x78'));}})['catch'](function(_0x4ebdd1){logger['error'](_0xe793('0x6f'),_0x4ebdd1);});};exports[_0xe793('0x79')]=function(_0x37f9de,_0x1e1b3b,_0x1db217,_0x5eca75,_0x5bca94,_0x596b56){var _0xff6d32,_0x24475b,_0x516f22,_0x336785;_0x596b56['serverUrl']=intUtil['stripTrailingSlash'](_0x596b56[_0xe793('0x5b')]);_0x596b56[_0xe793('0x53')]=intUtil['stripTrailingSlash'](_0x596b56[_0xe793('0x53')]);if(_0x5bca94&&_0x5bca94[_0xe793('0x5c')]){logger[_0xe793('0x1a')]('['+_0x1e1b3b[_0xe793('0x7a')][_0xe793('0x7b')]()+']',_0xe793('0x5e'));_0x1e1b3b[_0xe793('0x5f')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x596b56[_0xe793('0x5b')],_0x1e1b3b['uniqueid'],md5(_0x1e1b3b[_0xe793('0x61')]));}else{_0x1e1b3b['recordingURL']='';}return getConnection(_0x596b56)['then'](function(_0x4f5a4e){_0x336785=_0x4f5a4e;if(!_[_0xe793('0x1e')](_0x5eca75)){return getUser(_0x596b56,_0x5eca75[_0xe793('0x50')],_0x336785);}else{return getUser(_0x596b56,null,_0x336785);}})[_0xe793('0x22')](function(_0x3f6886){_0xff6d32=_0x3f6886;return getEndUser(_0x596b56,_0x1db217,_0x1e1b3b['calleridname'],_0x1e1b3b[_0xe793('0x64')],_0x336785);})[_0xe793('0x22')](function(_0x2fedee){_0x24475b=_0x2fedee;return getTicket(_0x596b56,_0xff6d32,_0x24475b,_0x1db217,_0x1e1b3b,_0x1db217[_0xe793('0x72')],_0x336785);})[_0xe793('0x22')](function(_0x5d3db0){_0x516f22=_0x5d3db0;logger['info']('['+_0x1e1b3b[_0xe793('0x7a')][_0xe793('0x7b')]()+_0xe793('0x7c'),_0x516f22['id']);logger[_0xe793('0x1a')]('['+_0x1e1b3b[_0xe793('0x7a')][_0xe793('0x7b')]()+_0xe793('0x7d'),_0x596b56[_0xe793('0x3c')]);})[_0xe793('0x7e')](function(_0x2b32f4){logger[_0xe793('0x6d')]('['+_0x1e1b3b[_0xe793('0x7a')]['toUpperCase']()+']',_0x2b32f4);});};
\ No newline at end of file
index 33ccf15..f5c56b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d26=['sys_user?sysparm_query=email%3D','userEmail','],\x20getUser\x20entity','active','userId','sys_id','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','adminId','],\x20createEndUser\x20input\x20crm','endUserNumber','user','true','System','then','endUserId','],\x20getEndUser\x20input\x20crm','],\x20getEndUser\x20crm','forEach','string','type','customField','nameField','toLowerCase','toString','picklist','idField','content','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','POST','incident','assign','Subjects','getString','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','trigger:browser:url','username','password','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','adminEmail','email','calleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','util','ioredis','./util','servicenow','redis','localhost','GET','sys_user?sysparm_query=user_name%3Dadmin','length','result','info','toUpperCase','catch','error','message','validateEmail'];(function(_0x324e86,_0x81b1cb){var _0x592846=function(_0x33439c){while(--_0x33439c){_0x324e86['push'](_0x324e86['shift']());}};_0x592846(++_0x81b1cb);}(_0x1d26,0x130));var _0x61d2=function(_0x555569,_0x15669b){_0x555569=_0x555569-0x0;var _0x2541ff=_0x1d26[_0x555569];return _0x2541ff;};'use strict';var _=require(_0x61d2('0x0'));var Promise=require('bluebird');var rp=require('request-promise');var util=require(_0x61d2('0x1'));var md5=require('md5');var Redis=require(_0x61d2('0x2'));var intUtil=require(_0x61d2('0x3'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x61d2('0x4'));config[_0x61d2('0x5')]=_['defaults'](config[_0x61d2('0x5')],{'host':_0x61d2('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x61d2('0x5')]));function getAdminUser(_0xc41490,_0x431403,_0x2803c0,_0x20ab7a,_0x25c89a,_0xd87885){return new Promise(function(_0x19f788,_0x1f833d){var _0x38eff2={'method':_0x61d2('0x7'),'uri':_0x20ab7a+_0x61d2('0x8')+'&'+_0x25c89a+'&'+_0xd87885,'auth':_0x431403,'json':!![]};return rp(_0x38eff2)['then'](function(_0x30b645){if(_0x30b645['result'][_0x61d2('0x9')]>0x0){_0x2803c0['adminId']=_0x30b645[_0x61d2('0xa')][0x0]['sys_id'];}logger[_0x61d2('0xb')]('['+[_0xc41490[_0x61d2('0xc')]()]+'],\x20getAdminUser\x20crm',_0x2803c0);_0x19f788(_0x2803c0);})[_0x61d2('0xd')](function(_0x1eb197){logger[_0x61d2('0xe')]('['+[_0xc41490[_0x61d2('0xc')]()]+']',_0x1eb197['message']);_0x1f833d(_0x1eb197[_0x61d2('0xf')]);});});}function getUser(_0x551b1c,_0x45bcb5,_0x301a2f,_0x545e9b,_0x20a388){return function(_0x5c64a1){logger[_0x61d2('0xb')]('['+[_0x551b1c[_0x61d2('0xc')]()]+'],\x20getUser\x20input\x20crm',_0x5c64a1);return new Promise(function(_0x55f6f9,_0x1916af){if(intUtil[_0x61d2('0x10')](_0x5c64a1['userEmail'])){var _0x7c8997={'method':_0x61d2('0x7'),'uri':_0x301a2f+_0x61d2('0x11')+_0x5c64a1[_0x61d2('0x12')]+'&'+_0x545e9b+'&'+_0x20a388,'auth':_0x45bcb5,'json':!![]};logger[_0x61d2('0xb')]('['+[_0x551b1c[_0x61d2('0xc')]()]+'],\x20getUser\x20rp\x20obj',_0x7c8997);return rp(_0x7c8997)['then'](function(_0x35eb04){logger['info']('['+[_0x551b1c[_0x61d2('0xc')]()]+_0x61d2('0x13'),_0x35eb04);if(_0x35eb04[_0x61d2('0xa')][_0x61d2('0x9')]>0x0&&String(_0x35eb04[_0x61d2('0xa')][0x0][_0x61d2('0x14')])==='true'){_0x5c64a1[_0x61d2('0x15')]=_0x35eb04[_0x61d2('0xa')][0x0][_0x61d2('0x16')];}else{_0x5c64a1[_0x61d2('0x15')]=_0x5c64a1['adminId'];_0x5c64a1[_0x61d2('0x12')]=_0x5c64a1['adminEmail'];}logger[_0x61d2('0xb')]('['+[_0x551b1c[_0x61d2('0xc')]()]+_0x61d2('0x17'),_0x5c64a1);_0x55f6f9(_0x5c64a1);})[_0x61d2('0xd')](function(_0x1c5f5d){logger[_0x61d2('0xe')]('['+[_0x551b1c[_0x61d2('0xc')]()]+']',_0x1c5f5d[_0x61d2('0xf')]);_0x1916af(_0x1c5f5d['message']);});}else{logger[_0x61d2('0xb')]('['+[_0x551b1c[_0x61d2('0xc')]()]+_0x61d2('0x18'));_0x5c64a1[_0x61d2('0x15')]=_0x5c64a1[_0x61d2('0x19')];_0x5c64a1[_0x61d2('0x12')]=_0x5c64a1['adminEmail'];_0x55f6f9(_0x5c64a1);}});};}function createEndUser(_0x5a4e4d,_0x5a8f1e,_0x2b2b7f,_0x50e6ba,_0x5c0176){logger['info']('['+[_0x5a4e4d[_0x61d2('0xc')]()]+_0x61d2('0x1a'),_0x2b2b7f);return new Promise(function(_0x4a4b4d,_0x1dd85b){var _0x4819d2={'method':'POST','uri':_0x50e6ba+'sys_user?'+_0x5c0176,'body':{'user_name':_0x2b2b7f[_0x61d2('0x1b')],'roles':_0x61d2('0x1c'),'first_name':_0x2b2b7f[_0x61d2('0x1b')],'active':_0x61d2('0x1d'),'date_format':_0x61d2('0x1e'),'phone':_0x2b2b7f[_0x61d2('0x1b')]},'auth':_0x5a8f1e,'json':!![]};return rp(_0x4819d2)[_0x61d2('0x1f')](function(_0x88283){logger[_0x61d2('0xb')]('['+[_0x5a4e4d['toUpperCase']()]+'],\x20EndUser\x20schema',_0x88283[_0x61d2('0xa')]);_0x2b2b7f[_0x61d2('0x20')]=_0x88283[_0x61d2('0xa')]['sys_id'];_0x4a4b4d(_0x2b2b7f);})[_0x61d2('0xd')](function(_0x5d9f12){logger['error']('['+[_0x5a4e4d[_0x61d2('0xc')]()]+']',_0x5d9f12[_0x61d2('0xf')]);_0x1dd85b(_0x5d9f12[_0x61d2('0xf')]);});});}function getEndUser(_0x4af340,_0x4228ea,_0x3fa5b1,_0x25c632,_0x402f71){return function(_0x323d84){logger[_0x61d2('0xb')]('['+[_0x4af340[_0x61d2('0xc')]()]+_0x61d2('0x21'),_0x323d84);return new Promise(function(_0x30f322,_0x11be1e){var _0x3addbc={'method':'GET','uri':_0x3fa5b1+'sys_user?sysparm_query=phone%3D'+_0x323d84[_0x61d2('0x1b')]+'&'+_0x25c632+'&'+_0x402f71,'auth':_0x4228ea,'json':!![]};return rp(_0x3addbc)[_0x61d2('0x1f')](function(_0x3d8f8f){if(_0x3d8f8f[_0x61d2('0xa')]['length']>0x0){_0x323d84[_0x61d2('0x20')]=_0x3d8f8f[_0x61d2('0xa')][0x0]['sys_id'];logger[_0x61d2('0xb')]('['+[_0x4af340[_0x61d2('0xc')]()]+_0x61d2('0x22'),_0x323d84);_0x30f322(_0x323d84);}else{return createEndUser(_0x4af340,_0x4228ea,_0x323d84,_0x3fa5b1,_0x25c632)[_0x61d2('0x1f')](function(_0x3d7ab0){logger['info']('['+[_0x4af340[_0x61d2('0xc')]()]+'],\x20createEndUser\x20crm',_0x3d7ab0);_0x30f322(_0x3d7ab0);});}})[_0x61d2('0xd')](function(_0x2d7a74){logger[_0x61d2('0xe')]('['+[_0x4af340[_0x61d2('0xc')]()]+']',_0x2d7a74[_0x61d2('0xf')]);_0x11be1e(_0x2d7a74['message']);});});};}function getCustomFields(_0x152137,_0xc6e491){var _0x13c444={};if(_0x152137[_0x61d2('0x9')]>0x0){_[_0x61d2('0x23')](_0x152137,function(_0x1de46d){if(_['includes']([_0x61d2('0x24'),'picklist'],_0x1de46d[_0x61d2('0x25')])&&_0x1de46d['nameField']&&!_0x1de46d[_0x61d2('0x26')]){_0x13c444[_0x1de46d[_0x61d2('0x27')][_0x61d2('0x28')]()]=_0x1de46d['content'][_0x61d2('0x29')]();}else if(_['includes']([_0x61d2('0x24'),_0x61d2('0x2a')],_0x1de46d[_0x61d2('0x25')])&&_0x1de46d[_0x61d2('0x2b')]&&_0x1de46d[_0x61d2('0x26')]){_0x13c444[_0x1de46d[_0x61d2('0x2b')][_0x61d2('0x28')]()]=_0x1de46d[_0x61d2('0x2c')][_0x61d2('0x29')]();}else if(_0x1de46d[_0x61d2('0x25')]===_0x61d2('0x2d')&&_0x1de46d[_0x61d2('0x2e')]&&_0x1de46d['idField']&&_0x1de46d[_0x61d2('0x26')]){_0x13c444[_0x1de46d['idField'][_0x61d2('0x28')]()]=_0xc6e491[_0x1de46d[_0x61d2('0x2e')]]['toString']();}else if(_0x1de46d[_0x61d2('0x25')]===_0x61d2('0x2f')&&_0x1de46d[_0x61d2('0x30')]&&_0x1de46d[_0x61d2('0x30')][_0x61d2('0x31')]&&_0x1de46d[_0x61d2('0x2b')]&&_0x1de46d['customField']){_0x13c444[_0x1de46d[_0x61d2('0x2b')][_0x61d2('0x28')]()]=_0xc6e491[_0x1de46d['Variable'][_0x61d2('0x31')][_0x61d2('0x28')]()][_0x61d2('0x29')]();}});}return _0x13c444;}function getTicket(_0xeb7c7d,_0x499ca0,_0x209330,_0x5d8a70,_0x3cf1d5,_0x4fc6b5){return function(_0x479197){logger[_0x61d2('0xb')]('['+[_0xeb7c7d[_0x61d2('0xc')]()]+_0x61d2('0x32'),_0x479197);return new Promise(function(_0x595cca,_0xc60c8f){var _0x192493=_0xeb7c7d[_0x61d2('0x28')]()===_0x61d2('0x33')?_0x479197['userId']:_0x479197[_0x61d2('0x20')];var _0x508381={'method':_0x61d2('0x34'),'uri':_0x209330+_0x61d2('0x35')+'?'+_0x4fc6b5,'body':Object[_0x61d2('0x36')]({},{'active':'true','caller_id':_0x192493,'assigned_to':_0x479197[_0x61d2('0x15')],'short_description':intUtil['getString'](_0x5d8a70[_0x61d2('0x37')],_0x3cf1d5,'\x20'),'description':intUtil[_0x61d2('0x38')](_0x5d8a70[_0x61d2('0x39')],_0x3cf1d5,'\x0a')},getCustomFields(_0x5d8a70[_0x61d2('0x3a')],_0x3cf1d5)),'auth':_0x499ca0,'json':!![]};return rp(_0x508381)[_0x61d2('0x1f')](function(_0x496466){logger[_0x61d2('0xb')]('['+[_0xeb7c7d[_0x61d2('0xc')]()]+_0x61d2('0x3b'),_0x496466[_0x61d2('0xa')]);_0x479197[_0x61d2('0x3c')]=_0x496466[_0x61d2('0xa')][_0x61d2('0x16')];_0x479197[_0x61d2('0x3d')]=_0x496466['result'][_0x61d2('0x3e')];logger['info']('['+[_0xeb7c7d[_0x61d2('0xc')]()]+_0x61d2('0x3f'),_0x479197);_0x595cca(_0x479197);})['catch'](function(_0x34908b){logger[_0x61d2('0xe')]('['+[_0xeb7c7d[_0x61d2('0xc')]()]+']',_0x34908b[_0x61d2('0xf')]);_0xc60c8f(_0x34908b[_0x61d2('0xf')]);});});};}function createRemoteTag(_0x36069f,_0x30b5ba,_0x39de78,_0x4a55c8){return new Promise(function(_0x2f239a,_0x3792da){var _0x257834={'method':_0x61d2('0x34'),'uri':_0x39de78+_0x61d2('0x40')+'?'+_0x4a55c8,'body':{'short_description':_0x36069f,'global':!![],'active':!![],'name':_0x36069f},'auth':_0x30b5ba,'json':!![]};return rp(_0x257834)['then'](function(_0x5a8719){var _0x359a6e=_0x5a8719[_0x61d2('0xa')][_0x61d2('0x16')];_0x2f239a(_0x359a6e);});});}function getRemoteTag(_0x3429d8,_0x55ab18,_0x36c6c2,_0x579294,_0x5af54e){return new Promise(function(_0x13a5c7,_0x519e87){var _0x813541={'method':_0x61d2('0x7'),'uri':_0x36c6c2+_0x61d2('0x40')+_0x61d2('0x41')+_0x3429d8+'&'+_0x579294,'auth':_0x55ab18,'json':!![]};return rp(_0x813541)['then'](function(_0x5ec950){if(_0x5ec950[_0x61d2('0xa')][_0x61d2('0x9')]>0x0){var _0xfb5a0b=_0x5ec950[_0x61d2('0xa')][0x0]['sys_id'];_0x13a5c7(_0xfb5a0b);}else{return createRemoteTag(_0x3429d8,_0x55ab18,_0x36c6c2,_0x579294)[_0x61d2('0x1f')](function(_0x25b6d2){_0x13a5c7(_0x25b6d2);});}});});}function assignTagToIncident(_0xde85f3,_0x166fa0,_0x52be35,_0x3085eb,_0x45bea4){return new Promise(function(_0x468705,_0x2dcbaa){var _0x476f90={'method':_0x61d2('0x34'),'uri':_0x52be35+_0x61d2('0x42')+'?'+_0x45bea4,'body':{'label':_0xde85f3,'table':'incident','id_type':_0x61d2('0x43'),'table_key':_0x3085eb['ticketId'],'title':'Incident\x20-\x20'+_0x3085eb[_0x61d2('0x3d')],'id_display':_0x3085eb[_0x61d2('0x3d')]},'auth':_0x166fa0,'json':!![]};return rp(_0x476f90)[_0x61d2('0x1f')](function(_0x448f19){_0x468705();})[_0x61d2('0xd')](function(){_0x468705();});});}function manageTags(_0x48b278,_0xe9bda6,_0xbe6ee5,_0x4bf5ce,_0x507235,_0x37a2f6,_0x1c689b){return new Promise(function(_0x520a82,_0x1763fe){var _0x27cbf3=[];_0xe9bda6[_0x61d2('0x23')](function(_0x1f5dff){_0x27cbf3[_0x61d2('0x44')](getRemoteTag(_0x1f5dff,_0xbe6ee5,_0x4bf5ce,_0x37a2f6,_0x1c689b));});return Promise[_0x61d2('0x45')](_0x27cbf3)['then'](function(_0x5d3d0a){if(_0x5d3d0a[_0x61d2('0x9')]){logger['info']('['+[_0x48b278[_0x61d2('0xc')]()]+_0x61d2('0x46'),_0x5d3d0a);var _0x367a58=[];_0x5d3d0a[_0x61d2('0x23')](function(_0x4798dc){_0x367a58['push'](assignTagToIncident(_0x4798dc,_0xbe6ee5,_0x4bf5ce,_0x507235,_0x37a2f6));});return Promise[_0x61d2('0x45')](_0x367a58)[_0x61d2('0x1f')](function(){_0x520a82();})[_0x61d2('0xd')](function(){_0x520a82();});}else{_0x520a82();}});});}function getTags(_0x21b9da,_0x538e55,_0x39cb0b,_0x515078,_0x3ec70c,_0x570431){return function(_0x16a05d){return new Promise(function(_0x5d658f,_0x407c76){var _0x5d5d68=[];var _0x14a91a=_0x515078[_0x61d2('0x47')];if(_0x14a91a&&_0x14a91a[_0x61d2('0x9')]>0x0){_0x5d5d68=_['map'](_0x14a91a,_0x61d2('0x31'));}if(_0x5d5d68[_0x61d2('0x9')]>0x0){return manageTags(_0x21b9da,_0x5d5d68,_0x538e55,_0x39cb0b,_0x16a05d,_0x3ec70c,_0x570431)['then'](function(){_0x5d658f(_0x16a05d);});}else{_0x5d658f(_0x16a05d);}});};}function emit(_0x137795,_0x1e2d38,_0x4165fb){var _0x35400d='%26sysparm_record_target%3Dincident'+_0x61d2('0x48')+_0x61d2('0x49')+_0x61d2('0x4a');var _0x2c04a5={'uri':_0x137795+_0x61d2('0x4b')+_0x4165fb+_0x35400d};io['to'](util[_0x61d2('0x4c')](_0x61d2('0x4d'),_0x1e2d38))[_0x61d2('0x4e')](_0x61d2('0x4f'),_0x2c04a5);}exports['cs']=function(_0x3188bd,_0x32909e,_0x33f428,_0x48f6dd,_0x4cb904,_0x392f15,_0x9148c7,_0x8d6575){var _0x140e68={};var _0x55e968={'user':_0x392f15[_0x61d2('0x50')],'pass':_0x392f15[_0x61d2('0x51')]};var _0x3756b3='sysparm_limit=1';var _0x583fa8=_0x61d2('0x52');_0x392f15[_0x61d2('0x53')]=intUtil[_0x61d2('0x54')](_0x392f15[_0x61d2('0x53')]);_0x392f15[_0x61d2('0x55')]=intUtil[_0x61d2('0x54')](_0x392f15['serverUrl']);var _0x24715a=util['format'](_0x61d2('0x56'),_0x392f15[_0x61d2('0x53')]);_0x140e68[_0x61d2('0x12')]=!_[_0x61d2('0x57')](_0x48f6dd)?_0x48f6dd['email']:null;_0x140e68[_0x61d2('0x58')]=_0x392f15[_0x61d2('0x59')];_0x140e68['endUserNumber']=_0x8d6575['toLowerCase']()===_0x61d2('0x33')?_0x32909e['destcalleridnum']:_0x32909e[_0x61d2('0x5a')];_0x140e68[_0x61d2('0x5b')]=_0x8d6575===_0x61d2('0x5c')||_0x8d6575===_0x61d2('0x5d')?_0x61d2('0x5c'):_0x61d2('0x33');var _0x45d2f5=util[_0x61d2('0x4c')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x392f15['serverUrl'],_0x32909e['uniqueid'],md5(_0x32909e[_0x61d2('0x5e')]));if(_0x4cb904&&_0x4cb904[_0x61d2('0x5f')]){logger[_0x61d2('0xb')](_0x61d2('0x60'),_0x61d2('0x61'));_0x32909e[_0x61d2('0x62')]=_0x45d2f5;}else if(_0x9148c7&&_0x9148c7[_0x61d2('0x63')]&&_0x9148c7['recordingFormat']!==_0x61d2('0x64')){logger['info'](_0x61d2('0x65'),_0x61d2('0x61'));_0x32909e[_0x61d2('0x62')]=_0x45d2f5;}else{_0x32909e[_0x61d2('0x62')]='';}return getAdminUser(_0x8d6575,_0x55e968,_0x140e68,_0x24715a,_0x583fa8,_0x3756b3)[_0x61d2('0x1f')](getUser(_0x8d6575,_0x55e968,_0x24715a,_0x583fa8,_0x3756b3))[_0x61d2('0x1f')](getEndUser(_0x8d6575,_0x55e968,_0x24715a,_0x583fa8,_0x3756b3))[_0x61d2('0x1f')](getTicket(_0x8d6575,_0x55e968,_0x24715a,_0x33f428,_0x32909e,_0x583fa8))[_0x61d2('0x1f')](function(_0x213c9d){logger[_0x61d2('0xb')](util['format'](_0x61d2('0x66'),_0x213c9d[_0x61d2('0x3c')]));logger['info'](util['format'](_0x61d2('0x67'),_0x8d6575));if(_0x8d6575!==_0x61d2('0x5d')){logger[_0x61d2('0xb')]('['+[_0x8d6575[_0x61d2('0xc')]()]+']',_0x61d2('0x68'));emit(_0x392f15[_0x61d2('0x53')],_0x48f6dd[_0x61d2('0x31')],_0x213c9d[_0x61d2('0x3c')]);}})['catch'](function(_0x3fcc39){logger['error']('['+[_0x8d6575['toUpperCase']()]+_0x61d2('0x69'),util[_0x61d2('0x6a')](_0x3fcc39,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x8d64=['catch','message','info','],\x20getUser\x20input\x20crm','validateEmail','userEmail','],\x20getUser\x20rp\x20obj','active','true','userId','adminEmail','error',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','forEach','string','picklist','type','nameField','customField','toLowerCase','toString','includes','idField','content','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','POST','incident','getString','Subjects','Fields','ticketId','ticketNumber',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','push','all','Tags','map','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','emit','username','sysparm_display_value=true','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','callDirection','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','remoteUri','inspect','lodash','request-promise','util','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','toUpperCase','],\x20getAdminUser\x20crm'];(function(_0x47b41f,_0x20cdc5){var _0x50e1d7=function(_0x365d82){while(--_0x365d82){_0x47b41f['push'](_0x47b41f['shift']());}};_0x50e1d7(++_0x20cdc5);}(_0x8d64,0x1f4));var _0x48d6=function(_0x30faec,_0x18940b){_0x30faec=_0x30faec-0x0;var _0x29484f=_0x8d64[_0x30faec];return _0x29484f;};'use strict';var _=require(_0x48d6('0x0'));var Promise=require('bluebird');var rp=require(_0x48d6('0x1'));var util=require(_0x48d6('0x2'));var md5=require(_0x48d6('0x3'));var Redis=require(_0x48d6('0x4'));var intUtil=require(_0x48d6('0x5'));var config=require(_0x48d6('0x6'));var logger=require(_0x48d6('0x7'))('servicenow');config[_0x48d6('0x8')]=_[_0x48d6('0x9')](config[_0x48d6('0x8')],{'host':_0x48d6('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x48d6('0x8')]));function getAdminUser(_0x4dc27d,_0x48dd73,_0x1c6846,_0x127a2f,_0x2d4f17,_0x55c373){return new Promise(function(_0x3f9cc7,_0x4a7491){var _0x2fb9ad={'method':_0x48d6('0xb'),'uri':_0x127a2f+_0x48d6('0xc')+'&'+_0x2d4f17+'&'+_0x55c373,'auth':_0x48dd73,'json':!![]};return rp(_0x2fb9ad)[_0x48d6('0xd')](function(_0x4d072b){if(_0x4d072b[_0x48d6('0xe')][_0x48d6('0xf')]>0x0){_0x1c6846[_0x48d6('0x10')]=_0x4d072b[_0x48d6('0xe')][0x0][_0x48d6('0x11')];}logger['info']('['+[_0x4dc27d[_0x48d6('0x12')]()]+_0x48d6('0x13'),_0x1c6846);_0x3f9cc7(_0x1c6846);})[_0x48d6('0x14')](function(_0x5513fd){logger['error']('['+[_0x4dc27d['toUpperCase']()]+']',_0x5513fd[_0x48d6('0x15')]);_0x4a7491(_0x5513fd[_0x48d6('0x15')]);});});}function getUser(_0x5e4fd,_0xf1a9c6,_0xe52f5a,_0x3d425c,_0x2ce658){return function(_0x3e1da6){logger[_0x48d6('0x16')]('['+[_0x5e4fd[_0x48d6('0x12')]()]+_0x48d6('0x17'),_0x3e1da6);return new Promise(function(_0x12938e,_0x339b9e){if(intUtil[_0x48d6('0x18')](_0x3e1da6[_0x48d6('0x19')])){var _0x844f45={'method':_0x48d6('0xb'),'uri':_0xe52f5a+'sys_user?sysparm_query=email%3D'+_0x3e1da6[_0x48d6('0x19')]+'&'+_0x3d425c+'&'+_0x2ce658,'auth':_0xf1a9c6,'json':!![]};logger[_0x48d6('0x16')]('['+[_0x5e4fd['toUpperCase']()]+_0x48d6('0x1a'),_0x844f45);return rp(_0x844f45)['then'](function(_0xff2f24){logger[_0x48d6('0x16')]('['+[_0x5e4fd[_0x48d6('0x12')]()]+'],\x20getUser\x20entity',_0xff2f24);if(_0xff2f24[_0x48d6('0xe')][_0x48d6('0xf')]>0x0&&String(_0xff2f24['result'][0x0][_0x48d6('0x1b')])===_0x48d6('0x1c')){_0x3e1da6[_0x48d6('0x1d')]=_0xff2f24['result'][0x0]['sys_id'];}else{_0x3e1da6[_0x48d6('0x1d')]=_0x3e1da6[_0x48d6('0x10')];_0x3e1da6['userEmail']=_0x3e1da6[_0x48d6('0x1e')];}logger[_0x48d6('0x16')]('['+[_0x5e4fd[_0x48d6('0x12')]()]+'],\x20getUser\x20crm',_0x3e1da6);_0x12938e(_0x3e1da6);})[_0x48d6('0x14')](function(_0x1205ec){logger[_0x48d6('0x1f')]('['+[_0x5e4fd[_0x48d6('0x12')]()]+']',_0x1205ec[_0x48d6('0x15')]);_0x339b9e(_0x1205ec[_0x48d6('0x15')]);});}else{logger['info']('['+[_0x5e4fd[_0x48d6('0x12')]()]+_0x48d6('0x20'));_0x3e1da6[_0x48d6('0x1d')]=_0x3e1da6['adminId'];_0x3e1da6[_0x48d6('0x19')]=_0x3e1da6[_0x48d6('0x1e')];_0x12938e(_0x3e1da6);}});};}function createEndUser(_0x29e06b,_0x4604ec,_0x495a24,_0x95ca26,_0x26e59a){logger[_0x48d6('0x16')]('['+[_0x29e06b[_0x48d6('0x12')]()]+_0x48d6('0x21'),_0x495a24);return new Promise(function(_0x12074b,_0x1795ca){var _0x1c1458={'method':'POST','uri':_0x95ca26+'sys_user?'+_0x26e59a,'body':{'user_name':_0x495a24[_0x48d6('0x22')],'roles':_0x48d6('0x23'),'first_name':_0x495a24[_0x48d6('0x22')],'active':'true','date_format':_0x48d6('0x24'),'phone':_0x495a24[_0x48d6('0x22')]},'auth':_0x4604ec,'json':!![]};return rp(_0x1c1458)[_0x48d6('0xd')](function(_0x45adb5){logger[_0x48d6('0x16')]('['+[_0x29e06b['toUpperCase']()]+_0x48d6('0x25'),_0x45adb5[_0x48d6('0xe')]);_0x495a24[_0x48d6('0x26')]=_0x45adb5[_0x48d6('0xe')]['sys_id'];_0x12074b(_0x495a24);})[_0x48d6('0x14')](function(_0x1d8ae2){logger['error']('['+[_0x29e06b['toUpperCase']()]+']',_0x1d8ae2['message']);_0x1795ca(_0x1d8ae2[_0x48d6('0x15')]);});});}function getEndUser(_0x50b79b,_0x2ec800,_0x5635d6,_0x5a87b4,_0x14b65f){return function(_0x1a4590){logger[_0x48d6('0x16')]('['+[_0x50b79b['toUpperCase']()]+_0x48d6('0x27'),_0x1a4590);return new Promise(function(_0x36b5cd,_0x303aca){var _0x321b20={'method':_0x48d6('0xb'),'uri':_0x5635d6+_0x48d6('0x28')+_0x1a4590[_0x48d6('0x22')]+'&'+_0x5a87b4+'&'+_0x14b65f,'auth':_0x2ec800,'json':!![]};return rp(_0x321b20)[_0x48d6('0xd')](function(_0x5be4d5){if(_0x5be4d5[_0x48d6('0xe')][_0x48d6('0xf')]>0x0){_0x1a4590[_0x48d6('0x26')]=_0x5be4d5[_0x48d6('0xe')][0x0][_0x48d6('0x11')];logger[_0x48d6('0x16')]('['+[_0x50b79b[_0x48d6('0x12')]()]+_0x48d6('0x29'),_0x1a4590);_0x36b5cd(_0x1a4590);}else{return createEndUser(_0x50b79b,_0x2ec800,_0x1a4590,_0x5635d6,_0x5a87b4)[_0x48d6('0xd')](function(_0x4607ae){logger[_0x48d6('0x16')]('['+[_0x50b79b[_0x48d6('0x12')]()]+'],\x20createEndUser\x20crm',_0x4607ae);_0x36b5cd(_0x4607ae);});}})[_0x48d6('0x14')](function(_0x2b11df){logger[_0x48d6('0x1f')]('['+[_0x50b79b[_0x48d6('0x12')]()]+']',_0x2b11df[_0x48d6('0x15')]);_0x303aca(_0x2b11df[_0x48d6('0x15')]);});});};}function getCustomFields(_0x2fa6e6,_0x267047){var _0x4b6761={};if(_0x2fa6e6[_0x48d6('0xf')]>0x0){_[_0x48d6('0x2a')](_0x2fa6e6,function(_0xfe1641){if(_['includes']([_0x48d6('0x2b'),_0x48d6('0x2c')],_0xfe1641[_0x48d6('0x2d')])&&_0xfe1641[_0x48d6('0x2e')]&&!_0xfe1641[_0x48d6('0x2f')]){_0x4b6761[_0xfe1641['nameField'][_0x48d6('0x30')]()]=_0xfe1641['content'][_0x48d6('0x31')]();}else if(_[_0x48d6('0x32')]([_0x48d6('0x2b'),'picklist'],_0xfe1641[_0x48d6('0x2d')])&&_0xfe1641[_0x48d6('0x33')]&&_0xfe1641[_0x48d6('0x2f')]){_0x4b6761[_0xfe1641[_0x48d6('0x33')]['toLowerCase']()]=_0xfe1641[_0x48d6('0x34')][_0x48d6('0x31')]();}else if(_0xfe1641['type']===_0x48d6('0x35')&&_0xfe1641[_0x48d6('0x36')]&&_0xfe1641[_0x48d6('0x33')]&&_0xfe1641[_0x48d6('0x2f')]){_0x4b6761[_0xfe1641[_0x48d6('0x33')][_0x48d6('0x30')]()]=_0x267047[_0xfe1641[_0x48d6('0x36')]]['toString']();}else if(_0xfe1641[_0x48d6('0x2d')]===_0x48d6('0x37')&&_0xfe1641[_0x48d6('0x38')]&&_0xfe1641[_0x48d6('0x38')][_0x48d6('0x39')]&&_0xfe1641[_0x48d6('0x33')]&&_0xfe1641[_0x48d6('0x2f')]){_0x4b6761[_0xfe1641[_0x48d6('0x33')][_0x48d6('0x30')]()]=_0x267047[_0xfe1641[_0x48d6('0x38')][_0x48d6('0x39')][_0x48d6('0x30')]()][_0x48d6('0x31')]();}});}return _0x4b6761;}function getTicket(_0x5744e7,_0x1a3a8e,_0x4e3129,_0x4f42fd,_0x5bf052,_0x19739d){return function(_0xdb3682){logger[_0x48d6('0x16')]('['+[_0x5744e7[_0x48d6('0x12')]()]+_0x48d6('0x3a'),_0xdb3682);return new Promise(function(_0x73b410,_0x816f71){var _0x9e7d25=_0x5744e7['toLowerCase']()===_0x48d6('0x3b')?_0xdb3682['userId']:_0xdb3682[_0x48d6('0x26')];var _0x41d301={'method':_0x48d6('0x3c'),'uri':_0x4e3129+_0x48d6('0x3d')+'?'+_0x19739d,'body':Object['assign']({},{'active':_0x48d6('0x1c'),'caller_id':_0x9e7d25,'assigned_to':_0xdb3682[_0x48d6('0x1d')],'short_description':intUtil[_0x48d6('0x3e')](_0x4f42fd[_0x48d6('0x3f')],_0x5bf052,'\x20'),'description':intUtil['getString'](_0x4f42fd['Descriptions'],_0x5bf052,'\x0a')},getCustomFields(_0x4f42fd[_0x48d6('0x40')],_0x5bf052)),'auth':_0x1a3a8e,'json':!![]};return rp(_0x41d301)['then'](function(_0x292080){logger[_0x48d6('0x16')]('['+[_0x5744e7[_0x48d6('0x12')]()]+']\x20POST\x20incident\x20entity\x20schema',_0x292080['result']);_0xdb3682[_0x48d6('0x41')]=_0x292080[_0x48d6('0xe')][_0x48d6('0x11')];_0xdb3682[_0x48d6('0x42')]=_0x292080[_0x48d6('0xe')]['number'];logger[_0x48d6('0x16')]('['+[_0x5744e7[_0x48d6('0x12')]()]+_0x48d6('0x43'),_0xdb3682);_0x73b410(_0xdb3682);})[_0x48d6('0x14')](function(_0x7543b){logger[_0x48d6('0x1f')]('['+[_0x5744e7[_0x48d6('0x12')]()]+']',_0x7543b[_0x48d6('0x15')]);_0x816f71(_0x7543b[_0x48d6('0x15')]);});});};}function createRemoteTag(_0x2264f9,_0x36eb51,_0xe92ac6,_0x38c643){return new Promise(function(_0x51aaa1,_0x570a2a){var _0x4cef52={'method':_0x48d6('0x3c'),'uri':_0xe92ac6+_0x48d6('0x44')+'?'+_0x38c643,'body':{'short_description':_0x2264f9,'global':!![],'active':!![],'name':_0x2264f9},'auth':_0x36eb51,'json':!![]};return rp(_0x4cef52)[_0x48d6('0xd')](function(_0x2b58b7){var _0x1717d5=_0x2b58b7[_0x48d6('0xe')]['sys_id'];_0x51aaa1(_0x1717d5);});});}function getRemoteTag(_0x199c09,_0xccb68b,_0x2b3b91,_0x1928a1,_0x19e261){return new Promise(function(_0x437fa9,_0x23891c){var _0x3cb279={'method':_0x48d6('0xb'),'uri':_0x2b3b91+_0x48d6('0x44')+_0x48d6('0x45')+_0x199c09+'&'+_0x1928a1,'auth':_0xccb68b,'json':!![]};return rp(_0x3cb279)[_0x48d6('0xd')](function(_0x4536ff){if(_0x4536ff['result']['length']>0x0){var _0x3f5586=_0x4536ff[_0x48d6('0xe')][0x0]['sys_id'];_0x437fa9(_0x3f5586);}else{return createRemoteTag(_0x199c09,_0xccb68b,_0x2b3b91,_0x1928a1)['then'](function(_0x2ce89d){_0x437fa9(_0x2ce89d);});}});});}function assignTagToIncident(_0x545848,_0x14a26e,_0x1bd30a,_0x3dd566,_0x4af6a2){return new Promise(function(_0x56b7ad,_0x4271fd){var _0x50b416={'method':_0x48d6('0x3c'),'uri':_0x1bd30a+_0x48d6('0x46')+'?'+_0x4af6a2,'body':{'label':_0x545848,'table':_0x48d6('0x3d'),'id_type':_0x48d6('0x47'),'table_key':_0x3dd566[_0x48d6('0x41')],'title':'Incident\x20-\x20'+_0x3dd566[_0x48d6('0x42')],'id_display':_0x3dd566[_0x48d6('0x42')]},'auth':_0x14a26e,'json':!![]};return rp(_0x50b416)[_0x48d6('0xd')](function(_0x55d51e){_0x56b7ad();})[_0x48d6('0x14')](function(){_0x56b7ad();});});}function manageTags(_0x553338,_0x1bc3d0,_0x41b0b1,_0x5c4ba7,_0x14546e,_0x279151,_0x6aec01){return new Promise(function(_0x53da25,_0x1a221c){var _0x2b0f57=[];_0x1bc3d0[_0x48d6('0x2a')](function(_0x3f0c74){_0x2b0f57[_0x48d6('0x48')](getRemoteTag(_0x3f0c74,_0x41b0b1,_0x5c4ba7,_0x279151,_0x6aec01));});return Promise['all'](_0x2b0f57)[_0x48d6('0xd')](function(_0x42809d){if(_0x42809d[_0x48d6('0xf')]){logger[_0x48d6('0x16')]('['+[_0x553338[_0x48d6('0x12')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x42809d);var _0x46712a=[];_0x42809d[_0x48d6('0x2a')](function(_0x3c37d4){_0x46712a['push'](assignTagToIncident(_0x3c37d4,_0x41b0b1,_0x5c4ba7,_0x14546e,_0x279151));});return Promise[_0x48d6('0x49')](_0x46712a)[_0x48d6('0xd')](function(){_0x53da25();})[_0x48d6('0x14')](function(){_0x53da25();});}else{_0x53da25();}});});}function getTags(_0x3bc16a,_0x4f6bf5,_0x1ca6ae,_0x11b344,_0x234d0d,_0x535ec0){return function(_0x41f13d){return new Promise(function(_0x2e0f05,_0xdc3f49){var _0x4cc422=[];var _0x40fd0e=_0x11b344[_0x48d6('0x4a')];if(_0x40fd0e&&_0x40fd0e[_0x48d6('0xf')]>0x0){_0x4cc422=_[_0x48d6('0x4b')](_0x40fd0e,_0x48d6('0x39'));}if(_0x4cc422['length']>0x0){return manageTags(_0x3bc16a,_0x4cc422,_0x4f6bf5,_0x1ca6ae,_0x41f13d,_0x234d0d,_0x535ec0)[_0x48d6('0xd')](function(){_0x2e0f05(_0x41f13d);});}else{_0x2e0f05(_0x41f13d);}});};}function emit(_0x13fecb,_0x3d91b1,_0x54678b){var _0x2a37da='%26sysparm_record_target%3Dincident'+_0x48d6('0x4c')+_0x48d6('0x4d')+_0x48d6('0x4e');var _0x40d63c={'uri':_0x13fecb+_0x48d6('0x4f')+_0x54678b+_0x2a37da};io['to'](util[_0x48d6('0x50')]('user:%s',_0x3d91b1))[_0x48d6('0x51')]('trigger:browser:url',_0x40d63c);}exports['cs']=function(_0x249174,_0x3d9f1f,_0xa5767c,_0x22b59f,_0x1065de,_0x1d35c8,_0x50fc62,_0x43a34b){var _0x27b1c0={};var _0x40d45f={'user':_0x1d35c8[_0x48d6('0x52')],'pass':_0x1d35c8['password']};var _0x185132='sysparm_limit=1';var _0xfe47f8=_0x48d6('0x53');_0x1d35c8['remoteUri']=intUtil[_0x48d6('0x54')](_0x1d35c8['remoteUri']);_0x1d35c8[_0x48d6('0x55')]=intUtil['stripTrailingSlash'](_0x1d35c8[_0x48d6('0x55')]);var _0x44c2bb=util[_0x48d6('0x50')](_0x48d6('0x56'),_0x1d35c8['remoteUri']);_0x27b1c0['userEmail']=!_[_0x48d6('0x57')](_0x22b59f)?_0x22b59f[_0x48d6('0x58')]:null;_0x27b1c0[_0x48d6('0x1e')]=_0x1d35c8[_0x48d6('0x58')];_0x27b1c0['endUserNumber']=_0x43a34b[_0x48d6('0x30')]()===_0x48d6('0x3b')?_0x3d9f1f['destcalleridnum']:_0x3d9f1f['calleridnum'];_0x27b1c0[_0x48d6('0x59')]=_0x43a34b===_0x48d6('0x5a')||_0x43a34b===_0x48d6('0x5b')?_0x48d6('0x5a'):_0x48d6('0x3b');var _0x36bab3=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1d35c8[_0x48d6('0x55')],_0x3d9f1f[_0x48d6('0x5c')],md5(_0x3d9f1f[_0x48d6('0x5c')]));if(_0x1065de&&_0x1065de[_0x48d6('0x5d')]){logger['info'](_0x48d6('0x5e'),_0x48d6('0x5f'));_0x3d9f1f['recordingURL']=_0x36bab3;}else if(_0x50fc62&&_0x50fc62[_0x48d6('0x60')]&&_0x50fc62[_0x48d6('0x60')]!==_0x48d6('0x61')){logger[_0x48d6('0x16')]('[OUTBOUND]',_0x48d6('0x5f'));_0x3d9f1f[_0x48d6('0x62')]=_0x36bab3;}else{_0x3d9f1f['recordingURL']='';}return getAdminUser(_0x43a34b,_0x40d45f,_0x27b1c0,_0x44c2bb,_0xfe47f8,_0x185132)[_0x48d6('0xd')](getUser(_0x43a34b,_0x40d45f,_0x44c2bb,_0xfe47f8,_0x185132))[_0x48d6('0xd')](getEndUser(_0x43a34b,_0x40d45f,_0x44c2bb,_0xfe47f8,_0x185132))[_0x48d6('0xd')](getTicket(_0x43a34b,_0x40d45f,_0x44c2bb,_0xa5767c,_0x3d9f1f,_0xfe47f8))['then'](function(_0x3c1b4e){logger['info'](util[_0x48d6('0x50')](_0x48d6('0x63'),_0x3c1b4e['ticketId']));logger[_0x48d6('0x16')](util[_0x48d6('0x50')](_0x48d6('0x64'),_0x43a34b));if(_0x43a34b!=='unmanaged'){logger[_0x48d6('0x16')]('['+[_0x43a34b[_0x48d6('0x12')]()]+']',_0x48d6('0x65'));emit(_0x1d35c8[_0x48d6('0x66')],_0x22b59f[_0x48d6('0x39')],_0x3c1b4e['ticketId']);}})[_0x48d6('0x14')](function(_0x5342d1){logger[_0x48d6('0x1f')]('['+[_0x43a34b[_0x48d6('0x12')]()]+']\x20Error\x20running\x20ServiceNow\x20integration',util[_0x48d6('0x67')](_0x5342d1,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index d0e3144..6d93396 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa392=['content','variable','customVariable','Variable','POST','login','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','stripTrailingSlash','remoteUri','serverUrl','uri','%s/service/v4_1/rest.php','monitor_format','Recording\x20is\x20enabled!','recordingURL','uniqueid','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Inbound','Ticket\x20created!','users','contacts','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','Fields','Outbound','The\x20Ticket\x20ID\x20is:','version','user:%s','catch','error','unmanaged','lastevent','toUpperCase','lodash','util','ioredis','./util','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','socket.io-emitter','emit','Creating\x20new\x20ticket...','name','Subjects','description','slice','replace','parent_type','Contacts','parent_name','direction','length','forEach','variableName','idField','set_entry','Calls','format','Basic\x20%s','apiKey','toString','base64','get_server_info','JSON','stringify','isNil','info','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','then','entry_list','name_value_list','user_name','Agent\x20found!','value','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','resolve','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','find','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','first_name','debug','[HTTP]','merge','map','type','string','nameField','customField','toLowerCase','custom_fields','push'];(function(_0x34980c,_0x9b03e3){var _0x20826b=function(_0x3268b0){while(--_0x3268b0){_0x34980c['push'](_0x34980c['shift']());}};_0x20826b(++_0x9b03e3);}(_0xa392,0x1a8));var _0x2a39=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xa392[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x2a39('0x0'));var rp=require('request-promise');var BPromise=require('bluebird');var md5=require('md5');var util=require(_0x2a39('0x1'));var Redis=require(_0x2a39('0x2'));var intUtil=require(_0x2a39('0x3'));var config=require(_0x2a39('0x4'));var logger=require(_0x2a39('0x5'))(_0x2a39('0x6'));config[_0x2a39('0x7')]=_[_0x2a39('0x8')](config[_0x2a39('0x7')],{'host':_0x2a39('0x9'),'port':0x18eb});var io=require(_0x2a39('0xa'))(new Redis(config['redis']));var def={'method':'POST','json':!![]};function emit(_0x113621,_0xbf61e0,_0x4db994){io['to'](_0x113621)[_0x2a39('0xb')](_0xbf61e0,_0x4db994);}function getTicket(_0x2fc9e6,_0x2ed902,_0x1968af,_0x5020ae,_0x4c2d5f,_0x2dc099,_0xffafe7,_0x5cdf84){logger['info'](_0x2a39('0xc'));var _0x20a680=new Date();var _0x18c54c=[{'name':_0x2a39('0xd'),'value':intUtil['getString'](_0x5020ae[_0x2a39('0xe')],_0x4c2d5f,'\x20')},{'name':'assigned_user_id','value':_0x2ed902['id']},{'name':'created_by','value':_0x2ed902['id']},{'name':_0x2a39('0xf'),'value':intUtil['getString'](_0x5020ae['Descriptions'],_0x4c2d5f,'\x0a')},{'name':'date_start','value':_0x20a680['toISOString']()[_0x2a39('0x10')](0x0,0x13)[_0x2a39('0x11')]('T','\x20')},{'name':'duration_hours','value':'0'},{'name':'duration_minutes','value':'15'},{'name':'parent_id','value':_0x1968af['id']},{'name':_0x2a39('0x12'),'value':_0x2a39('0x13')},{'name':_0x2a39('0x14'),'value':_0x1968af[_0x2a39('0xd')]},{'name':_0x2a39('0x15'),'value':_0x5cdf84}];if(_0x2dc099[_0x2a39('0x16')]){_[_0x2a39('0x17')](_0x2dc099,function(_0xd908c8){if(_0x4c2d5f[_0xd908c8[_0x2a39('0x18')]]){_0x18c54c['push']({'name':_0xd908c8[_0x2a39('0x19')],'value':_0x4c2d5f[_0xd908c8[_0x2a39('0x18')]]});}});}return request({'form':{'method':_0x2a39('0x1a'),'input_type':'JSON','response_type':'JSON','rest_data':JSON['stringify']({'session':_0xffafe7['id'],'module_name':_0x2a39('0x1b'),'name_value_list':_0x18c54c})}});}function getAuth(_0xedbac0){return util[_0x2a39('0x1c')](_0x2a39('0x1d'),new Buffer(_0xedbac0[_0x2a39('0x1e')]+':X')[_0x2a39('0x1f')](_0x2a39('0x20')));}function getServerInfo(_0x3e94b5){return request({'form':{'method':_0x2a39('0x21'),'input_type':_0x2a39('0x22'),'response_type':_0x2a39('0x22'),'rest_data':JSON[_0x2a39('0x23')]({'session':_0x3e94b5['id']})}});}function getUser(_0x5ccd5d,_0x4644d3,_0x23eee9){if(!_[_0x2a39('0x24')](_0x4644d3)){logger[_0x2a39('0x25')](_0x2a39('0x26'),_0x4644d3);return request({'form':{'method':_0x2a39('0x27'),'input_type':'JSON','response_type':_0x2a39('0x22'),'rest_data':JSON[_0x2a39('0x23')]({'session':_0x23eee9['id'],'module_name':_0x2a39('0x28'),'query':util[_0x2a39('0x1c')](_0x2a39('0x29'),_0x4644d3),'order_by':'','offset':'0','select_fields':['id',_0x2a39('0xd'),'user_name'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x2a39('0x2a')](function(_0x5e89d9){if(_0x5e89d9[_0x2a39('0x2b')][_0x2a39('0x16')]){var _0x47a7d5=_['find'](_0x5e89d9[_0x2a39('0x2b')],function(_0xdbfa97){return _0xdbfa97[_0x2a39('0x2c')][_0x2a39('0x2d')]['value']===_0x4644d3;});if(_0x47a7d5){logger[_0x2a39('0x25')](_0x2a39('0x2e'));return BPromise['resolve']({'id':_0x47a7d5[_0x2a39('0x2c')]['id'][_0x2a39('0x2f')],'name':_0x47a7d5[_0x2a39('0x2c')][_0x2a39('0xd')]['value']});}}logger[_0x2a39('0x25')](_0x2a39('0x30'));return BPromise['resolve']({'id':_0x23eee9[_0x2a39('0x2c')][_0x2a39('0x31')][_0x2a39('0x2f')],'name':_0x23eee9[_0x2a39('0x2c')][_0x2a39('0x2d')][_0x2a39('0x2f')]});});}else{logger[_0x2a39('0x25')](_0x2a39('0x32'));return BPromise[_0x2a39('0x33')]({'id':_0x23eee9['name_value_list'][_0x2a39('0x31')]['value'],'name':_0x23eee9[_0x2a39('0x2c')][_0x2a39('0x2d')][_0x2a39('0x2f')]});}}function getEndUser(_0x1447fd,_0x417d8e,_0x351e01,_0x55e10e){logger[_0x2a39('0x25')]('Searching\x20enduser\x20with\x20phone',_0x351e01);return request({'form':{'method':_0x2a39('0x27'),'input_type':_0x2a39('0x22'),'response_type':_0x2a39('0x22'),'rest_data':JSON[_0x2a39('0x23')]({'session':_0x55e10e['id'],'module_name':_0x2a39('0x13'),'query':util['format'](_0x2a39('0x34'),_0x351e01),'order_by':'','offset':'0','select_fields':['id','name',_0x2a39('0x35')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x24d14d){if(_0x24d14d['entry_list'][_0x2a39('0x16')]){var _0x2723a3=_[_0x2a39('0x36')](_0x24d14d[_0x2a39('0x2b')],function(_0x5cc762){return _0x5cc762[_0x2a39('0x2c')][_0x2a39('0x35')][_0x2a39('0x2f')]===_0x351e01;});if(_0x2723a3){logger[_0x2a39('0x25')](_0x2a39('0x37'));return BPromise[_0x2a39('0x33')]({'id':_0x2723a3['name_value_list']['id'][_0x2a39('0x2f')],'name':_0x2723a3['name_value_list'][_0x2a39('0xd')][_0x2a39('0x2f')],'phone':_0x2723a3[_0x2a39('0x2c')]['phone_home'][_0x2a39('0x2f')]});}}else{logger[_0x2a39('0x25')](_0x2a39('0x38'));return request({'form':{'method':'set_entry','input_type':_0x2a39('0x22'),'response_type':_0x2a39('0x22'),'rest_data':JSON['stringify']({'session':_0x55e10e['id'],'module_name':_0x2a39('0x13'),'name_value_list':[{'name':'first_name','value':_0x417d8e!==_0x2a39('0x39')?_0x417d8e:util['format'](_0x2a39('0x3a'),_0x351e01)},{'name':_0x2a39('0x35'),'value':_0x351e01}]})}})[_0x2a39('0x2a')](function(_0x41f499){logger[_0x2a39('0x25')](_0x2a39('0x3b'));return BPromise['resolve']({'id':_0x41f499['id'],'name':_0x41f499['entry_list'][_0x2a39('0x3c')][_0x2a39('0x2f')],'phone':_0x41f499[_0x2a39('0x2b')]['phone_home'][_0x2a39('0x2f')]});});}});}function request(_0x545cf9){logger[_0x2a39('0x3d')](_0x2a39('0x3e'),JSON[_0x2a39('0x23')](_0x545cf9));return rp(_[_0x2a39('0x3f')](def,_0x545cf9));}function getTags(_0x2630d6,_0x40b74d){var _0x1e0aeb=[];if(_0x2630d6&&_0x2630d6[_0x2a39('0x16')]>0x0){_0x1e0aeb=_[_0x2a39('0x40')](_0x2630d6,_0x40b74d);}return _0x1e0aeb;}function getCustomFields(_0x3b9c15,_0x1db828){var _0x4c549e=[];var _0x32b27a={'custom_fields':[]};if(_0x3b9c15[_0x2a39('0x16')]>0x0){_['forEach'](_0x3b9c15,function(_0x59e3ab){if(_0x59e3ab[_0x2a39('0x41')]===_0x2a39('0x42')&&_0x59e3ab[_0x2a39('0x43')]&&!_0x59e3ab[_0x2a39('0x44')]){_0x32b27a[_0x59e3ab[_0x2a39('0x43')][_0x2a39('0x45')]()]=_0x59e3ab['content'][_0x2a39('0x1f')]();}else if(_0x59e3ab[_0x2a39('0x41')]==='string'&&_0x59e3ab[_0x2a39('0x19')]&&_0x59e3ab[_0x2a39('0x44')]){_0x32b27a[_0x2a39('0x46')][_0x2a39('0x47')]({'id':_0x59e3ab[_0x2a39('0x19')],'value':_0x59e3ab[_0x2a39('0x48')][_0x2a39('0x1f')]()});}else if(_0x59e3ab[_0x2a39('0x41')]===_0x2a39('0x49')&&_0x59e3ab[_0x2a39('0x18')]&&_0x59e3ab[_0x2a39('0x19')]&&_0x59e3ab['customField']){_0x1db828[_0x59e3ab[_0x2a39('0x18')]]&&_0x32b27a['custom_fields'][_0x2a39('0x47')]({'id':_0x59e3ab[_0x2a39('0x19')],'value':_0x1db828[_0x59e3ab[_0x2a39('0x18')]][_0x2a39('0x1f')]()});}else if(_0x59e3ab[_0x2a39('0x41')]===_0x2a39('0x4a')&&_0x59e3ab[_0x2a39('0x4b')]&&_0x59e3ab['Variable'][_0x2a39('0xd')]&&_0x59e3ab[_0x2a39('0x19')]&&_0x59e3ab[_0x2a39('0x44')]){_0x1db828[_0x59e3ab[_0x2a39('0x4b')][_0x2a39('0xd')]['toLowerCase']()]&&_0x32b27a[_0x2a39('0x46')][_0x2a39('0x47')]({'id':_0x59e3ab[_0x2a39('0x19')],'value':_0x1db828[_0x59e3ab[_0x2a39('0x4b')][_0x2a39('0xd')][_0x2a39('0x45')]()][_0x2a39('0x1f')]()});}});}return _0x32b27a;}function getConnection(_0x3a2383){return request({'method':_0x2a39('0x4c'),'form':{'method':_0x2a39('0x4d'),'input_type':_0x2a39('0x22'),'response_type':_0x2a39('0x22'),'rest_data':JSON[_0x2a39('0x23')]({'user_auth':{'user_name':_0x3a2383[_0x2a39('0x4e')],'password':_0x3a2383[_0x2a39('0x4f')],'encryption':_0x2a39('0x50')},'application':_0x2a39('0x51')})}})[_0x2a39('0x2a')](function(_0x2f8832){var _0x41ea33=_0x2f8832;if(_0x41ea33['id']){def[_0x2a39('0x52')]=_0x41ea33['id'];return BPromise[_0x2a39('0x33')](_0x41ea33);}else{throw new Error(util[_0x2a39('0x1c')](_0x2a39('0x53'),_0x3a2383['id']));}});}function setRelationship(_0x12ad45,_0x2bec51,_0x123b00,_0x34d4de){return request({'form':{'method':_0x2a39('0x54'),'input_type':_0x2a39('0x22'),'response_type':_0x2a39('0x22'),'rest_data':JSON[_0x2a39('0x23')]({'session':_0x12ad45['id'],'module_name':'Calls','module_id':_0x123b00['id'],'link_field_name':_0x34d4de,'related_ids':[_0x2bec51['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x2a39('0x55')]=function(_0x48066f,_0x514fc6,_0x25974d,_0x3e43d1,_0x492fc3,_0x2c4554){var _0x53ffe5,_0x53b7ea,_0x12b61f,_0x1221d2;_0x2c4554['remoteUri']=intUtil[_0x2a39('0x56')](_0x2c4554[_0x2a39('0x57')]);_0x2c4554[_0x2a39('0x58')]=intUtil[_0x2a39('0x56')](_0x2c4554[_0x2a39('0x58')]);def[_0x2a39('0x59')]=util['format'](_0x2a39('0x5a'),_0x2c4554['remoteUri']);if(_0x492fc3&&_0x492fc3[_0x2a39('0x5b')]){logger[_0x2a39('0x25')]('[QUEUE]',_0x2a39('0x5c'));_0x514fc6[_0x2a39('0x5d')]=util[_0x2a39('0x1c')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2c4554[_0x2a39('0x58')],_0x514fc6[_0x2a39('0x5e')],md5(_0x514fc6[_0x2a39('0x5e')]));}else{_0x514fc6[_0x2a39('0x5d')]='';}return getConnection(_0x2c4554)[_0x2a39('0x2a')](function(_0x245830){_0x1221d2=_0x245830;return getUser(_0x2c4554,_0x3e43d1[_0x2a39('0xd')],_0x1221d2);})[_0x2a39('0x2a')](function(_0x3083b){_0x53ffe5=_0x3083b;logger[_0x2a39('0x25')](_0x2a39('0x5f'),_0x53ffe5['id']);return getEndUser(_0x2c4554,_0x514fc6[_0x2a39('0x60')],_0x514fc6[_0x2a39('0x61')],_0x1221d2);})['then'](function(_0x4b4272){_0x53b7ea=_0x4b4272;logger[_0x2a39('0x25')](_0x2a39('0x62'),_0x53b7ea['id']);return getTicket(_0x2c4554,_0x53ffe5,_0x53b7ea,_0x25974d,_0x514fc6,_0x25974d['Fields'],_0x1221d2,_0x2a39('0x63'));})[_0x2a39('0x2a')](function(_0x4b388c){_0x12b61f=_0x4b388c;logger[_0x2a39('0x25')](_0x2a39('0x64'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x12b61f['id']);return setRelationship(_0x1221d2,_0x53ffe5,_0x12b61f,_0x2a39('0x65'));})[_0x2a39('0x2a')](function(){return setRelationship(_0x1221d2,_0x53b7ea,_0x12b61f,_0x2a39('0x66'));})['then'](function(){return getServerInfo(_0x1221d2);})['then'](function(_0x4b5ebf){var _0x2790e8=parseInt(_0x4b5ebf['version'][_0x2a39('0x67')](0x0));var _0x4c54b6=util[_0x2a39('0x1c')](_0x2a39('0x68'),_0x2c4554[_0x2a39('0x57')],_0x12b61f['id']);if(_0x2790e8>0x6){_0x4c54b6=util[_0x2a39('0x1c')](_0x2a39('0x69'),_0x2c4554['remoteUri'],_0x12b61f['id']);}logger[_0x2a39('0x25')](_0x2a39('0x6a'),_0x2a39('0x6b'));emit(util[_0x2a39('0x1c')]('user:%s',_0x3e43d1[_0x2a39('0xd')]),_0x2a39('0x6c'),{'uri':_0x4c54b6});})['catch'](function(_0x150058){logger['error'](_0x2a39('0x6a'),JSON['stringify'](_0x150058));});};exports['outbound']=function(_0x2e781e,_0x1863f0,_0x121192,_0x51c05c,_0x157dcd,_0xc57083,_0x4fe038){var _0x5b6ce0,_0x4e8398,_0x3bf7bd,_0x3d7e7f;_0xc57083['remoteUri']=intUtil['stripTrailingSlash'](_0xc57083[_0x2a39('0x57')]);_0xc57083['serverUrl']=intUtil[_0x2a39('0x56')](_0xc57083[_0x2a39('0x58')]);def[_0x2a39('0x59')]=util[_0x2a39('0x1c')](_0x2a39('0x5a'),_0xc57083['remoteUri']);if(_0x4fe038&&_0x4fe038[_0x2a39('0x6d')]&&_0x4fe038[_0x2a39('0x6d')]!==_0x2a39('0x6e')){logger['info'](_0x2a39('0x6f'),_0x2a39('0x5c'));_0x1863f0[_0x2a39('0x5d')]=util[_0x2a39('0x1c')](_0x2a39('0x70'),_0xc57083[_0x2a39('0x58')],_0x1863f0[_0x2a39('0x5e')],md5(_0x1863f0['uniqueid']));}return getConnection(_0xc57083)[_0x2a39('0x2a')](function(_0x324b40){_0x3d7e7f=_0x324b40;return getUser(_0xc57083,_0x51c05c[_0x2a39('0xd')],_0x3d7e7f);})[_0x2a39('0x2a')](function(_0x3b74f3){_0x5b6ce0=_0x3b74f3;logger[_0x2a39('0x25')](_0x2a39('0x5f'),_0x5b6ce0['id']);return getEndUser(_0xc57083,_0x1863f0[_0x2a39('0x71')],_0x1863f0['destcalleridnum'],_0x3d7e7f);})[_0x2a39('0x2a')](function(_0x32a230){_0x4e8398=_0x32a230;logger[_0x2a39('0x25')](_0x2a39('0x62'),_0x4e8398['id']);return getTicket(_0xc57083,_0x5b6ce0,_0x4e8398,_0x121192,_0x1863f0,_0x121192[_0x2a39('0x72')],_0x3d7e7f,_0x2a39('0x73'));})[_0x2a39('0x2a')](function(_0x363597){_0x3bf7bd=_0x363597;logger[_0x2a39('0x25')]('Ticket\x20created!');logger['info'](_0x2a39('0x74'),_0x3bf7bd['id']);return setRelationship(_0x3d7e7f,_0x5b6ce0,_0x3bf7bd,_0x2a39('0x65'));})[_0x2a39('0x2a')](function(){return setRelationship(_0x3d7e7f,_0x4e8398,_0x3bf7bd,_0x2a39('0x66'));})[_0x2a39('0x2a')](function(){return getServerInfo(_0x3d7e7f);})[_0x2a39('0x2a')](function(_0x33c1a2){var _0x4b303d=parseInt(_0x33c1a2[_0x2a39('0x75')][_0x2a39('0x67')](0x0));var _0x569906=util[_0x2a39('0x1c')](_0x2a39('0x68'),_0xc57083[_0x2a39('0x57')],_0x3bf7bd['id']);if(_0x4b303d>0x6){_0x569906=util[_0x2a39('0x1c')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0xc57083[_0x2a39('0x57')],_0x3bf7bd['id']);}logger[_0x2a39('0x25')](_0x2a39('0x6f'),_0x2a39('0x6b'));emit(util[_0x2a39('0x1c')](_0x2a39('0x76'),_0x51c05c[_0x2a39('0xd')]),_0x2a39('0x6c'),{'uri':_0x569906});})[_0x2a39('0x77')](function(_0x13384e){logger[_0x2a39('0x78')]('[OUTBOUND]',JSON[_0x2a39('0x23')](_0x13384e));});};exports[_0x2a39('0x79')]=function(_0x136618,_0x684f23,_0xffb9ed,_0x2ae7fb,_0x3200c8,_0x550ee0){var _0x4a39c9,_0x261279,_0x11e138,_0x229cd4;_0x550ee0[_0x2a39('0x57')]=intUtil[_0x2a39('0x56')](_0x550ee0[_0x2a39('0x57')]);_0x550ee0[_0x2a39('0x58')]=intUtil['stripTrailingSlash'](_0x550ee0['serverUrl']);def['uri']=util[_0x2a39('0x1c')](_0x2a39('0x5a'),_0x550ee0[_0x2a39('0x57')]);if(_0x3200c8&&_0x3200c8[_0x2a39('0x5b')]){logger[_0x2a39('0x25')]('['+_0x684f23[_0x2a39('0x7a')][_0x2a39('0x7b')]()+']','Recording\x20is\x20enabled!');_0x684f23[_0x2a39('0x5d')]=util[_0x2a39('0x1c')](_0x2a39('0x70'),_0x550ee0[_0x2a39('0x58')],_0x684f23[_0x2a39('0x5e')],md5(_0x684f23['uniqueid']));}else{_0x684f23[_0x2a39('0x5d')]='';}return getConnection(_0x550ee0)[_0x2a39('0x2a')](function(_0x3d8332){_0x229cd4=_0x3d8332;if(!_['isNil'](_0x2ae7fb)){return getUser(_0x550ee0,_0x2ae7fb['name'],_0x229cd4);}else{return getUser(_0x550ee0,null,_0x229cd4);}})[_0x2a39('0x2a')](function(_0x57f113){_0x4a39c9=_0x57f113;logger[_0x2a39('0x25')](_0x2a39('0x5f'),_0x4a39c9['id']);return getEndUser(_0x550ee0,_0x684f23[_0x2a39('0x60')],_0x684f23[_0x2a39('0x61')],_0x229cd4);})[_0x2a39('0x2a')](function(_0x59e6b2){_0x261279=_0x59e6b2;logger[_0x2a39('0x25')]('The\x20Enduser\x20ID\x20is:',_0x261279['id']);return getTicket(_0x550ee0,_0x4a39c9,_0x261279,_0xffb9ed,_0x684f23,_0xffb9ed[_0x2a39('0x72')],_0x229cd4,_0x2a39('0x63'));})[_0x2a39('0x2a')](function(_0x3c1a14){_0x11e138=_0x3c1a14;logger[_0x2a39('0x25')]('Ticket\x20created!');logger[_0x2a39('0x25')](_0x2a39('0x74'),_0x11e138['id']);return setRelationship(_0x229cd4,_0x4a39c9,_0x11e138,'users');})[_0x2a39('0x2a')](function(){return setRelationship(_0x229cd4,_0x261279,_0x11e138,_0x2a39('0x66'));})[_0x2a39('0x2a')](function(){return getServerInfo(_0x229cd4);})[_0x2a39('0x77')](function(_0x275528){logger['error']('['+_0x684f23[_0x2a39('0x7a')][_0x2a39('0x7b')]()+']',JSON[_0x2a39('0x23')](_0x275528));});};
\ No newline at end of file
+var _0x4818=['socket.io-emitter','POST','emit','info','Creating\x20new\x20ticket...','name','getString','Subjects','assigned_user_id','description','date_start','toISOString','replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts','parent_name','direction','length','forEach','variableName','idField','set_entry','JSON','stringify','Calls','format','apiKey','toString','base64','get_server_info','isNil','get_entry_list','Employees','user_name','then','entry_list','name_value_list','value','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','resolve','user_id','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','find','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','map','string','nameField','customField','toLowerCase','content','type','custom_fields','push','variable','customVariable','Variable','login','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','uri','Recording\x20is\x20enabled!','recordingURL','uniqueid','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','catch','error','outbound','%s/service/v4_1/rest.php','recordingFormat','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20User\x20ID\x20is:','destcalleridname','Fields','Outbound','version','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','trigger:browser:url','unmanaged','monitor_format','lastevent','toUpperCase','lodash','request-promise','bluebird','util','ioredis','../../../../config/logger','sugarcrm','redis','localhost'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x4818,0x16b));var _0x8481=function(_0x2d524e,_0x3bf30f){_0x2d524e=_0x2d524e-0x0;var _0x59c183=_0x4818[_0x2d524e];return _0x59c183;};'use strict';var _=require(_0x8481('0x0'));var rp=require(_0x8481('0x1'));var BPromise=require(_0x8481('0x2'));var md5=require('md5');var util=require(_0x8481('0x3'));var Redis=require(_0x8481('0x4'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x8481('0x5'))(_0x8481('0x6'));config[_0x8481('0x7')]=_['defaults'](config[_0x8481('0x7')],{'host':_0x8481('0x8'),'port':0x18eb});var io=require(_0x8481('0x9'))(new Redis(config[_0x8481('0x7')]));var def={'method':_0x8481('0xa'),'json':!![]};function emit(_0x14e2ad,_0x69f19,_0x43fbac){io['to'](_0x14e2ad)[_0x8481('0xb')](_0x69f19,_0x43fbac);}function getTicket(_0x5d2f6b,_0xcdbb15,_0x3b36c3,_0x3a34d6,_0x45946f,_0x45d854,_0x4b4aa8,_0x334287){logger[_0x8481('0xc')](_0x8481('0xd'));var _0x37cd3e=new Date();var _0x2a74ff=[{'name':_0x8481('0xe'),'value':intUtil[_0x8481('0xf')](_0x3a34d6[_0x8481('0x10')],_0x45946f,'\x20')},{'name':_0x8481('0x11'),'value':_0xcdbb15['id']},{'name':'created_by','value':_0xcdbb15['id']},{'name':_0x8481('0x12'),'value':intUtil[_0x8481('0xf')](_0x3a34d6['Descriptions'],_0x45946f,'\x0a')},{'name':_0x8481('0x13'),'value':_0x37cd3e[_0x8481('0x14')]()['slice'](0x0,0x13)[_0x8481('0x15')]('T','\x20')},{'name':_0x8481('0x16'),'value':'0'},{'name':_0x8481('0x17'),'value':'15'},{'name':_0x8481('0x18'),'value':_0x3b36c3['id']},{'name':_0x8481('0x19'),'value':_0x8481('0x1a')},{'name':_0x8481('0x1b'),'value':_0x3b36c3[_0x8481('0xe')]},{'name':_0x8481('0x1c'),'value':_0x334287}];if(_0x45d854[_0x8481('0x1d')]){_[_0x8481('0x1e')](_0x45d854,function(_0x2767b8){if(_0x45946f[_0x2767b8[_0x8481('0x1f')]]){_0x2a74ff['push']({'name':_0x2767b8[_0x8481('0x20')],'value':_0x45946f[_0x2767b8['variableName']]});}});}return request({'form':{'method':_0x8481('0x21'),'input_type':_0x8481('0x22'),'response_type':_0x8481('0x22'),'rest_data':JSON[_0x8481('0x23')]({'session':_0x4b4aa8['id'],'module_name':_0x8481('0x24'),'name_value_list':_0x2a74ff})}});}function getAuth(_0x523d28){return util[_0x8481('0x25')]('Basic\x20%s',new Buffer(_0x523d28[_0x8481('0x26')]+':X')[_0x8481('0x27')](_0x8481('0x28')));}function getServerInfo(_0x2bc5d0){return request({'form':{'method':_0x8481('0x29'),'input_type':_0x8481('0x22'),'response_type':_0x8481('0x22'),'rest_data':JSON[_0x8481('0x23')]({'session':_0x2bc5d0['id']})}});}function getUser(_0x541bd3,_0xe40659,_0x5aa807){if(!_[_0x8481('0x2a')](_0xe40659)){logger['info']('Getting\x20agent\x20with\x20name',_0xe40659);return request({'form':{'method':_0x8481('0x2b'),'input_type':'JSON','response_type':_0x8481('0x22'),'rest_data':JSON['stringify']({'session':_0x5aa807['id'],'module_name':_0x8481('0x2c'),'query':util['format']('INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200',_0xe40659),'order_by':'','offset':'0','select_fields':['id','name',_0x8481('0x2d')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x8481('0x2e')](function(_0x28d6aa){if(_0x28d6aa[_0x8481('0x2f')][_0x8481('0x1d')]){var _0x2b9b06=_['find'](_0x28d6aa['entry_list'],function(_0x1eb33c){return _0x1eb33c[_0x8481('0x30')][_0x8481('0x2d')][_0x8481('0x31')]===_0xe40659;});if(_0x2b9b06){logger['info'](_0x8481('0x32'));return BPromise['resolve']({'id':_0x2b9b06[_0x8481('0x30')]['id'][_0x8481('0x31')],'name':_0x2b9b06[_0x8481('0x30')]['name'][_0x8481('0x31')]});}}logger['info'](_0x8481('0x33'));return BPromise['resolve']({'id':_0x5aa807[_0x8481('0x30')]['user_id'][_0x8481('0x31')],'name':_0x5aa807[_0x8481('0x30')][_0x8481('0x2d')][_0x8481('0x31')]});});}else{logger[_0x8481('0xc')](_0x8481('0x34'));return BPromise[_0x8481('0x35')]({'id':_0x5aa807['name_value_list'][_0x8481('0x36')][_0x8481('0x31')],'name':_0x5aa807[_0x8481('0x30')][_0x8481('0x2d')][_0x8481('0x31')]});}}function getEndUser(_0x4bcaa8,_0x3a21b5,_0x2f849b,_0x509b29){logger['info'](_0x8481('0x37'),_0x2f849b);return request({'form':{'method':'get_entry_list','input_type':_0x8481('0x22'),'response_type':_0x8481('0x22'),'rest_data':JSON[_0x8481('0x23')]({'session':_0x509b29['id'],'module_name':_0x8481('0x1a'),'query':util[_0x8481('0x25')](_0x8481('0x38'),_0x2f849b),'order_by':'','offset':'0','select_fields':['id',_0x8481('0xe'),'phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x8481('0x2e')](function(_0x26d02b){if(_0x26d02b[_0x8481('0x2f')]['length']){var _0x259bbd=_[_0x8481('0x39')](_0x26d02b[_0x8481('0x2f')],function(_0x2c0b1a){return _0x2c0b1a[_0x8481('0x30')][_0x8481('0x3a')][_0x8481('0x31')]===_0x2f849b;});if(_0x259bbd){logger[_0x8481('0xc')](_0x8481('0x3b'));return BPromise['resolve']({'id':_0x259bbd[_0x8481('0x30')]['id'][_0x8481('0x31')],'name':_0x259bbd['name_value_list'][_0x8481('0xe')]['value'],'phone':_0x259bbd[_0x8481('0x30')]['phone_home'][_0x8481('0x31')]});}}else{logger[_0x8481('0xc')](_0x8481('0x3c'));return request({'form':{'method':_0x8481('0x21'),'input_type':'JSON','response_type':'JSON','rest_data':JSON['stringify']({'session':_0x509b29['id'],'module_name':_0x8481('0x1a'),'name_value_list':[{'name':'first_name','value':_0x3a21b5!==_0x8481('0x3d')?_0x3a21b5:util['format'](_0x8481('0x3e'),_0x2f849b)},{'name':_0x8481('0x3a'),'value':_0x2f849b}]})}})[_0x8481('0x2e')](function(_0x1f58f1){logger[_0x8481('0xc')](_0x8481('0x3f'));return BPromise[_0x8481('0x35')]({'id':_0x1f58f1['id'],'name':_0x1f58f1['entry_list']['first_name'][_0x8481('0x31')],'phone':_0x1f58f1[_0x8481('0x2f')]['phone_home']['value']});});}});}function request(_0x3cb6fa){logger[_0x8481('0x40')](_0x8481('0x41'),JSON[_0x8481('0x23')](_0x3cb6fa));return rp(_['merge'](def,_0x3cb6fa));}function getTags(_0x385994,_0x3a9e65){var _0x441176=[];if(_0x385994&&_0x385994[_0x8481('0x1d')]>0x0){_0x441176=_[_0x8481('0x42')](_0x385994,_0x3a9e65);}return _0x441176;}function getCustomFields(_0x4541ef,_0x26353e){var _0x542772=[];var _0x15eea2={'custom_fields':[]};if(_0x4541ef[_0x8481('0x1d')]>0x0){_[_0x8481('0x1e')](_0x4541ef,function(_0x50dd2f){if(_0x50dd2f['type']===_0x8481('0x43')&&_0x50dd2f[_0x8481('0x44')]&&!_0x50dd2f[_0x8481('0x45')]){_0x15eea2[_0x50dd2f[_0x8481('0x44')][_0x8481('0x46')]()]=_0x50dd2f[_0x8481('0x47')][_0x8481('0x27')]();}else if(_0x50dd2f[_0x8481('0x48')]===_0x8481('0x43')&&_0x50dd2f['idField']&&_0x50dd2f[_0x8481('0x45')]){_0x15eea2[_0x8481('0x49')][_0x8481('0x4a')]({'id':_0x50dd2f[_0x8481('0x20')],'value':_0x50dd2f[_0x8481('0x47')][_0x8481('0x27')]()});}else if(_0x50dd2f[_0x8481('0x48')]===_0x8481('0x4b')&&_0x50dd2f[_0x8481('0x1f')]&&_0x50dd2f['idField']&&_0x50dd2f[_0x8481('0x45')]){_0x26353e[_0x50dd2f[_0x8481('0x1f')]]&&_0x15eea2[_0x8481('0x49')]['push']({'id':_0x50dd2f[_0x8481('0x20')],'value':_0x26353e[_0x50dd2f['variableName']][_0x8481('0x27')]()});}else if(_0x50dd2f[_0x8481('0x48')]===_0x8481('0x4c')&&_0x50dd2f[_0x8481('0x4d')]&&_0x50dd2f[_0x8481('0x4d')][_0x8481('0xe')]&&_0x50dd2f[_0x8481('0x20')]&&_0x50dd2f[_0x8481('0x45')]){_0x26353e[_0x50dd2f[_0x8481('0x4d')][_0x8481('0xe')][_0x8481('0x46')]()]&&_0x15eea2[_0x8481('0x49')][_0x8481('0x4a')]({'id':_0x50dd2f['idField'],'value':_0x26353e[_0x50dd2f[_0x8481('0x4d')][_0x8481('0xe')][_0x8481('0x46')]()]['toString']()});}});}return _0x15eea2;}function getConnection(_0x3f427d){return request({'method':'POST','form':{'method':_0x8481('0x4e'),'input_type':_0x8481('0x22'),'response_type':_0x8481('0x22'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x3f427d[_0x8481('0x4f')],'password':_0x3f427d[_0x8481('0x50')],'encryption':_0x8481('0x51')},'application':_0x8481('0x52')})}})['then'](function(_0x5f5c4c){var _0x5f242a=_0x5f5c4c;if(_0x5f242a['id']){def[_0x8481('0x53')]=_0x5f242a['id'];return BPromise[_0x8481('0x35')](_0x5f242a);}else{throw new Error(util['format']('Account\x20%d\x20is\x20not\x20valid',_0x3f427d['id']));}});}function setRelationship(_0x21707a,_0x442865,_0x535ff5,_0x4aa421){return request({'form':{'method':_0x8481('0x54'),'input_type':_0x8481('0x22'),'response_type':'JSON','rest_data':JSON[_0x8481('0x23')]({'session':_0x21707a['id'],'module_name':'Calls','module_id':_0x535ff5['id'],'link_field_name':_0x4aa421,'related_ids':[_0x442865['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x8481('0x55')]=function(_0x43ff88,_0x418373,_0x20b19f,_0x1167b2,_0x1b641e,_0x4c757c){var _0x445fca,_0x29716b,_0x1580a6,_0x3dd2ae;_0x4c757c[_0x8481('0x56')]=intUtil[_0x8481('0x57')](_0x4c757c[_0x8481('0x56')]);_0x4c757c[_0x8481('0x58')]=intUtil[_0x8481('0x57')](_0x4c757c['serverUrl']);def[_0x8481('0x59')]=util['format']('%s/service/v4_1/rest.php',_0x4c757c[_0x8481('0x56')]);if(_0x1b641e&&_0x1b641e['monitor_format']){logger[_0x8481('0xc')]('[QUEUE]',_0x8481('0x5a'));_0x418373[_0x8481('0x5b')]=util[_0x8481('0x25')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4c757c['serverUrl'],_0x418373[_0x8481('0x5c')],md5(_0x418373[_0x8481('0x5c')]));}else{_0x418373[_0x8481('0x5b')]='';}return getConnection(_0x4c757c)['then'](function(_0x396520){_0x3dd2ae=_0x396520;return getUser(_0x4c757c,_0x1167b2[_0x8481('0xe')],_0x3dd2ae);})[_0x8481('0x2e')](function(_0x25520a){_0x445fca=_0x25520a;logger[_0x8481('0xc')]('The\x20User\x20ID\x20is:',_0x445fca['id']);return getEndUser(_0x4c757c,_0x418373[_0x8481('0x5d')],_0x418373[_0x8481('0x5e')],_0x3dd2ae);})[_0x8481('0x2e')](function(_0x248519){_0x29716b=_0x248519;logger[_0x8481('0xc')](_0x8481('0x5f'),_0x29716b['id']);return getTicket(_0x4c757c,_0x445fca,_0x29716b,_0x20b19f,_0x418373,_0x20b19f['Fields'],_0x3dd2ae,_0x8481('0x60'));})[_0x8481('0x2e')](function(_0x18677f){_0x1580a6=_0x18677f;logger[_0x8481('0xc')](_0x8481('0x61'));logger[_0x8481('0xc')](_0x8481('0x62'),_0x1580a6['id']);return setRelationship(_0x3dd2ae,_0x445fca,_0x1580a6,_0x8481('0x63'));})[_0x8481('0x2e')](function(){return setRelationship(_0x3dd2ae,_0x29716b,_0x1580a6,_0x8481('0x64'));})[_0x8481('0x2e')](function(){return getServerInfo(_0x3dd2ae);})['then'](function(_0x40745c){var _0x383725=parseInt(_0x40745c['version'][_0x8481('0x65')](0x0));var _0x717d5c=util[_0x8481('0x25')](_0x8481('0x66'),_0x4c757c[_0x8481('0x56')],_0x1580a6['id']);if(_0x383725>0x6){_0x717d5c=util[_0x8481('0x25')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x4c757c[_0x8481('0x56')],_0x1580a6['id']);}logger[_0x8481('0xc')](_0x8481('0x67'),_0x8481('0x68'));emit(util[_0x8481('0x25')](_0x8481('0x69'),_0x1167b2[_0x8481('0xe')]),'trigger:browser:url',{'uri':_0x717d5c});})[_0x8481('0x6a')](function(_0x566e25){logger[_0x8481('0x6b')](_0x8481('0x67'),JSON[_0x8481('0x23')](_0x566e25));});};exports[_0x8481('0x6c')]=function(_0xd57231,_0x5a71b3,_0x1c7570,_0x5d48aa,_0x588636,_0x433a46,_0x19696d){var _0x5e7957,_0x192979,_0xb0d446,_0x6f4f96;_0x433a46[_0x8481('0x56')]=intUtil[_0x8481('0x57')](_0x433a46[_0x8481('0x56')]);_0x433a46[_0x8481('0x58')]=intUtil[_0x8481('0x57')](_0x433a46['serverUrl']);def[_0x8481('0x59')]=util[_0x8481('0x25')](_0x8481('0x6d'),_0x433a46[_0x8481('0x56')]);if(_0x19696d&&_0x19696d[_0x8481('0x6e')]&&_0x19696d[_0x8481('0x6e')]!=='none'){logger[_0x8481('0xc')](_0x8481('0x6f'),_0x8481('0x5a'));_0x5a71b3[_0x8481('0x5b')]=util[_0x8481('0x25')](_0x8481('0x70'),_0x433a46['serverUrl'],_0x5a71b3[_0x8481('0x5c')],md5(_0x5a71b3[_0x8481('0x5c')]));}return getConnection(_0x433a46)[_0x8481('0x2e')](function(_0x36afef){_0x6f4f96=_0x36afef;return getUser(_0x433a46,_0x5d48aa['name'],_0x6f4f96);})[_0x8481('0x2e')](function(_0x3a3b95){_0x5e7957=_0x3a3b95;logger['info'](_0x8481('0x71'),_0x5e7957['id']);return getEndUser(_0x433a46,_0x5a71b3[_0x8481('0x72')],_0x5a71b3['destcalleridnum'],_0x6f4f96);})[_0x8481('0x2e')](function(_0x36080d){_0x192979=_0x36080d;logger[_0x8481('0xc')](_0x8481('0x5f'),_0x192979['id']);return getTicket(_0x433a46,_0x5e7957,_0x192979,_0x1c7570,_0x5a71b3,_0x1c7570[_0x8481('0x73')],_0x6f4f96,_0x8481('0x74'));})[_0x8481('0x2e')](function(_0x2fd0ce){_0xb0d446=_0x2fd0ce;logger[_0x8481('0xc')](_0x8481('0x61'));logger[_0x8481('0xc')]('The\x20Ticket\x20ID\x20is:',_0xb0d446['id']);return setRelationship(_0x6f4f96,_0x5e7957,_0xb0d446,_0x8481('0x63'));})[_0x8481('0x2e')](function(){return setRelationship(_0x6f4f96,_0x192979,_0xb0d446,_0x8481('0x64'));})[_0x8481('0x2e')](function(){return getServerInfo(_0x6f4f96);})[_0x8481('0x2e')](function(_0x1f13a3){var _0x1629a1=parseInt(_0x1f13a3[_0x8481('0x75')]['charAt'](0x0));var _0x4551ec=util['format']('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x433a46[_0x8481('0x56')],_0xb0d446['id']);if(_0x1629a1>0x6){_0x4551ec=util[_0x8481('0x25')](_0x8481('0x76'),_0x433a46['remoteUri'],_0xb0d446['id']);}logger[_0x8481('0xc')](_0x8481('0x6f'),_0x8481('0x68'));emit(util[_0x8481('0x25')]('user:%s',_0x5d48aa['name']),_0x8481('0x77'),{'uri':_0x4551ec});})[_0x8481('0x6a')](function(_0xe6d043){logger[_0x8481('0x6b')](_0x8481('0x6f'),JSON['stringify'](_0xe6d043));});};exports[_0x8481('0x78')]=function(_0x2e0c62,_0x12f212,_0x315ce1,_0x4d4ac8,_0x5eadc6,_0x27bdbb){var _0x23cc4b,_0x431eb4,_0x491435,_0x1dbb33;_0x27bdbb['remoteUri']=intUtil[_0x8481('0x57')](_0x27bdbb[_0x8481('0x56')]);_0x27bdbb[_0x8481('0x58')]=intUtil[_0x8481('0x57')](_0x27bdbb[_0x8481('0x58')]);def['uri']=util[_0x8481('0x25')](_0x8481('0x6d'),_0x27bdbb[_0x8481('0x56')]);if(_0x5eadc6&&_0x5eadc6[_0x8481('0x79')]){logger[_0x8481('0xc')]('['+_0x12f212[_0x8481('0x7a')][_0x8481('0x7b')]()+']','Recording\x20is\x20enabled!');_0x12f212[_0x8481('0x5b')]=util[_0x8481('0x25')](_0x8481('0x70'),_0x27bdbb[_0x8481('0x58')],_0x12f212['uniqueid'],md5(_0x12f212[_0x8481('0x5c')]));}else{_0x12f212[_0x8481('0x5b')]='';}return getConnection(_0x27bdbb)['then'](function(_0x5a60b4){_0x1dbb33=_0x5a60b4;if(!_[_0x8481('0x2a')](_0x4d4ac8)){return getUser(_0x27bdbb,_0x4d4ac8['name'],_0x1dbb33);}else{return getUser(_0x27bdbb,null,_0x1dbb33);}})['then'](function(_0xe692a7){_0x23cc4b=_0xe692a7;logger[_0x8481('0xc')](_0x8481('0x71'),_0x23cc4b['id']);return getEndUser(_0x27bdbb,_0x12f212[_0x8481('0x5d')],_0x12f212['calleridnum'],_0x1dbb33);})[_0x8481('0x2e')](function(_0x39c719){_0x431eb4=_0x39c719;logger[_0x8481('0xc')](_0x8481('0x5f'),_0x431eb4['id']);return getTicket(_0x27bdbb,_0x23cc4b,_0x431eb4,_0x315ce1,_0x12f212,_0x315ce1[_0x8481('0x73')],_0x1dbb33,'Inbound');})['then'](function(_0x46fabe){_0x491435=_0x46fabe;logger[_0x8481('0xc')](_0x8481('0x61'));logger[_0x8481('0xc')](_0x8481('0x62'),_0x491435['id']);return setRelationship(_0x1dbb33,_0x23cc4b,_0x491435,_0x8481('0x63'));})[_0x8481('0x2e')](function(){return setRelationship(_0x1dbb33,_0x431eb4,_0x491435,_0x8481('0x64'));})[_0x8481('0x2e')](function(){return getServerInfo(_0x1dbb33);})[_0x8481('0x6a')](function(_0x5c9637){logger[_0x8481('0x6b')]('['+_0x12f212['lastevent']['toUpperCase']()+']',JSON['stringify'](_0x5c9637));});};
\ No newline at end of file
index c3e9023..ca4570f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34d1=['test','lodash','util','getString','length','sortBy','type','string','push','content','variable','variableName','Variable','name','toLowerCase','toString','keyValue','keyType','key','keyContent','format','%s:\x20%s','join','stripTrailingSlash','substring','lastIndexOf','validateEmail','isNil'];(function(_0xf166de,_0x335fa7){var _0x4434f7=function(_0x1c5121){while(--_0x1c5121){_0xf166de['push'](_0xf166de['shift']());}};_0x4434f7(++_0x335fa7);}(_0x34d1,0x135));var _0x134d=function(_0x22cd45,_0x44062f){_0x22cd45=_0x22cd45-0x0;var _0x169481=_0x34d1[_0x22cd45];return _0x169481;};'use strict';var _=require(_0x134d('0x0'));var util=require(_0x134d('0x1'));exports[_0x134d('0x2')]=function(_0x2df0c0,_0x5739f4,_0x38bc6f){var _0x4a0173=[];if(_0x2df0c0[_0x134d('0x3')]>0x0){var _0xec57ac=_[_0x134d('0x4')](_0x2df0c0,['id']);for(var _0x44a950=0x0;_0x44a950<_0xec57ac[_0x134d('0x3')];_0x44a950++){var _0x8fc53b=_0xec57ac[_0x44a950];if(_0x8fc53b[_0x134d('0x5')]===_0x134d('0x6')){_0x4a0173[_0x134d('0x7')](_0x8fc53b[_0x134d('0x8')]);}else if(_0x8fc53b[_0x134d('0x5')]===_0x134d('0x9')&&_0x8fc53b[_0x134d('0xa')]){_0x5739f4[_0x8fc53b[_0x134d('0xa')]]&&_0x4a0173[_0x134d('0x7')](_0x5739f4[_0x8fc53b['variableName']]['toString']());}else if(_0x8fc53b[_0x134d('0x5')]==='customVariable'&&_0x8fc53b[_0x134d('0xb')]&&_0x8fc53b[_0x134d('0xb')][_0x134d('0xc')]){_0x5739f4[_0x8fc53b['Variable'][_0x134d('0xc')][_0x134d('0xd')]()]&&_0x4a0173['push'](_0x5739f4[_0x8fc53b['Variable'][_0x134d('0xc')][_0x134d('0xd')]()][_0x134d('0xe')]());}else if(_0x8fc53b[_0x134d('0x5')]===_0x134d('0xf')){if(_0x8fc53b[_0x134d('0x10')]===_0x134d('0x6')&&_0x8fc53b[_0x134d('0x11')]){_0x4a0173['push'](util['format']('%s:\x20%s',_0x8fc53b['key'],_0x8fc53b[_0x134d('0x12')]));}else if(_0x8fc53b[_0x134d('0x10')]==='variable'&&_0x8fc53b[_0x134d('0xa')]&&_0x8fc53b[_0x134d('0x11')]){_0x5739f4[_0x8fc53b['variableName']]&&_0x4a0173['push'](util[_0x134d('0x13')](_0x134d('0x14'),_0x8fc53b['key'],_0x5739f4[_0x8fc53b[_0x134d('0xa')]]));}else if(_0x8fc53b[_0x134d('0x10')]==='customVariable'&&_0x8fc53b[_0x134d('0xb')]&&_0x8fc53b['Variable'][_0x134d('0xc')]&&_0x8fc53b[_0x134d('0x11')]){_0x5739f4[_0x8fc53b['Variable']['name'][_0x134d('0xd')]()]&&_0x4a0173[_0x134d('0x7')](util['format'](_0x134d('0x14'),_0x8fc53b[_0x134d('0x11')],_0x5739f4[_0x8fc53b[_0x134d('0xb')]['name'][_0x134d('0xd')]()]));}}}}return _0x4a0173[_0x134d('0x15')](_0x38bc6f);};exports[_0x134d('0x16')]=function(_0x2218b1){var _0x87970=_0x2218b1['slice'](-0x1);if(_0x87970==='/'){_0x2218b1=_0x2218b1[_0x134d('0x17')](0x0,_0x2218b1[_0x134d('0x18')](_0x87970));}return _0x2218b1;};exports[_0x134d('0x19')]=function(_0x2f3795){if(!_[_0x134d('0x1a')](_0x2f3795)&&_0x2f3795!==''){var _0x29d93c=/^(([^<>()\[\]\\.,;:\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 _0x29d93c[_0x134d('0x1b')](String(_0x2f3795)[_0x134d('0xd')]());}else{return![];}};
\ No newline at end of file
+var _0xce61=['variable','variableName','push','toString','Variable','name','toLowerCase','keyType','string','key','%s:\x20%s','keyContent','format','customVariable','join','stripTrailingSlash','slice','substring','lastIndexOf','validateEmail','lodash','getString','length','sortBy','type'];(function(_0x1950dd,_0x3c5d10){var _0x1f4b1c=function(_0x213dc3){while(--_0x213dc3){_0x1950dd['push'](_0x1950dd['shift']());}};_0x1f4b1c(++_0x3c5d10);}(_0xce61,0x18b));var _0x1ce6=function(_0x45c2ae,_0x126f42){_0x45c2ae=_0x45c2ae-0x0;var _0x157ea0=_0xce61[_0x45c2ae];return _0x157ea0;};'use strict';var _=require(_0x1ce6('0x0'));var util=require('util');exports[_0x1ce6('0x1')]=function(_0x3c9509,_0x4961bd,_0xcb65da){var _0x40531b=[];if(_0x3c9509[_0x1ce6('0x2')]>0x0){var _0x50c8ac=_[_0x1ce6('0x3')](_0x3c9509,['id']);for(var _0xf7cedd=0x0;_0xf7cedd<_0x50c8ac['length'];_0xf7cedd++){var _0x3a058b=_0x50c8ac[_0xf7cedd];if(_0x3a058b[_0x1ce6('0x4')]==='string'){_0x40531b['push'](_0x3a058b['content']);}else if(_0x3a058b[_0x1ce6('0x4')]===_0x1ce6('0x5')&&_0x3a058b[_0x1ce6('0x6')]){_0x4961bd[_0x3a058b[_0x1ce6('0x6')]]&&_0x40531b[_0x1ce6('0x7')](_0x4961bd[_0x3a058b[_0x1ce6('0x6')]][_0x1ce6('0x8')]());}else if(_0x3a058b['type']==='customVariable'&&_0x3a058b[_0x1ce6('0x9')]&&_0x3a058b[_0x1ce6('0x9')][_0x1ce6('0xa')]){_0x4961bd[_0x3a058b['Variable']['name'][_0x1ce6('0xb')]()]&&_0x40531b[_0x1ce6('0x7')](_0x4961bd[_0x3a058b[_0x1ce6('0x9')]['name']['toLowerCase']()][_0x1ce6('0x8')]());}else if(_0x3a058b[_0x1ce6('0x4')]==='keyValue'){if(_0x3a058b[_0x1ce6('0xc')]===_0x1ce6('0xd')&&_0x3a058b[_0x1ce6('0xe')]){_0x40531b[_0x1ce6('0x7')](util['format'](_0x1ce6('0xf'),_0x3a058b[_0x1ce6('0xe')],_0x3a058b[_0x1ce6('0x10')]));}else if(_0x3a058b[_0x1ce6('0xc')]===_0x1ce6('0x5')&&_0x3a058b[_0x1ce6('0x6')]&&_0x3a058b['key']){_0x4961bd[_0x3a058b[_0x1ce6('0x6')]]&&_0x40531b[_0x1ce6('0x7')](util[_0x1ce6('0x11')](_0x1ce6('0xf'),_0x3a058b['key'],_0x4961bd[_0x3a058b['variableName']]));}else if(_0x3a058b['keyType']===_0x1ce6('0x12')&&_0x3a058b[_0x1ce6('0x9')]&&_0x3a058b[_0x1ce6('0x9')][_0x1ce6('0xa')]&&_0x3a058b[_0x1ce6('0xe')]){_0x4961bd[_0x3a058b[_0x1ce6('0x9')]['name'][_0x1ce6('0xb')]()]&&_0x40531b['push'](util['format']('%s:\x20%s',_0x3a058b[_0x1ce6('0xe')],_0x4961bd[_0x3a058b[_0x1ce6('0x9')][_0x1ce6('0xa')][_0x1ce6('0xb')]()]));}}}}return _0x40531b[_0x1ce6('0x13')](_0xcb65da);};exports[_0x1ce6('0x14')]=function(_0x4988e6){var _0x3ae3e1=_0x4988e6[_0x1ce6('0x15')](-0x1);if(_0x3ae3e1==='/'){_0x4988e6=_0x4988e6[_0x1ce6('0x16')](0x0,_0x4988e6[_0x1ce6('0x17')](_0x3ae3e1));}return _0x4988e6;};exports[_0x1ce6('0x18')]=function(_0x62ea46){if(!_['isNil'](_0x62ea46)&&_0x62ea46!==''){var _0x273ce5=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return _0x273ce5['test'](String(_0x62ea46)['toLowerCase']());}else{return![];}};
\ No newline at end of file
index e027f89..4028fd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['redis','defaults','localhost','emit','length','forEach','includes','string','picklist','type','idField','toString','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','getString','Subjects','POST','format','remoteUri','create','sessionName','HelpDesk','stringify','success','error','catch','statusCode','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','query','username','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','result','Agent\x20found!','resolve','email1','first_name','last_name','userId','[vTiger],\x20%s,\x20%s,\x20%s','getUser','admin','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','phone','getEndUser','accessKey','getchallenge','then','login','token','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','recordingURL','email','The\x20User\x20ID\x20is:','calleridnum','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','uniqueid','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','split','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','bluebird','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger'];(function(_0x2549c2,_0x115b47){var _0x142c1b=function(_0x4ea3f1){while(--_0x4ea3f1){_0x2549c2['push'](_0x2549c2['shift']());}};_0x142c1b(++_0x115b47);}(_0x34e8,0x12c));var _0x834e=function(_0x3dcae7,_0x1bf2f9){_0x3dcae7=_0x3dcae7-0x0;var _0xedad40=_0x34e8[_0x3dcae7];return _0xedad40;};'use strict';var _=require(_0x834e('0x0'));var rp=require(_0x834e('0x1'));var BPromise=require(_0x834e('0x2'));var md5=require(_0x834e('0x3'));var util=require('util');var Redis=require(_0x834e('0x4'));var intUtil=require(_0x834e('0x5'));var config=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));config[_0x834e('0x9')]=_[_0x834e('0xa')](config['redis'],{'host':_0x834e('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x834e('0x9')]));function emit(_0x3cc2e3,_0x3a3ef6,_0x2e69e2){io['to'](_0x3cc2e3)[_0x834e('0xc')](_0x3a3ef6,_0x2e69e2);}function getCustomFields(_0x23501c,_0x363786){var _0x1af45a={};if(_0x23501c[_0x834e('0xd')]>0x0){_[_0x834e('0xe')](_0x23501c,function(_0x1e41fe){if(_[_0x834e('0xf')]([_0x834e('0x10'),_0x834e('0x11')],_0x1e41fe[_0x834e('0x12')])&&_0x1e41fe[_0x834e('0x13')]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x1e41fe['content'][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='variable'&&_0x1e41fe[_0x834e('0x15')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe[_0x834e('0x15')]]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['variableName']][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='customVariable'&&_0x1e41fe[_0x834e('0x16')]&&_0x1e41fe['Variable'][_0x834e('0x17')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()][_0x834e('0x14')]();}});}return _0x1af45a;}function createTicket(_0xb993a1,_0x237947,_0x254677,_0x1dd214,_0x595515,_0x2545b4,_0x1fd2c6){logger[_0x834e('0x19')](_0x834e('0x1a'));var _0x4ab05d=_[_0x834e('0x1b')]({'parent_id':'','assigned_user_id':_0x237947['id'],'ticketpriorities':_0x834e('0x1c'),'ticketstatus':'Open','ticket_title':intUtil[_0x834e('0x1d')](_0x1dd214[_0x834e('0x1e')],_0x595515,'\x20'),'description':intUtil[_0x834e('0x1d')](_0x1dd214['Descriptions'],_0x595515,'\x0a'),'contact_id':_0x254677['id']},getCustomFields(_0x2545b4,_0x595515));var _0x4e3f48={'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0xb993a1[_0x834e('0x21')]),'form':{'operation':_0x834e('0x22'),'username':_0xb993a1['username'],'sessionName':_0x1fd2c6[_0x834e('0x23')],'elementType':_0x834e('0x24'),'element':JSON[_0x834e('0x25')](_0x4ab05d)},'json':!![]};return request(_0x4e3f48)['then'](function(_0x24fcf7){if(_0x24fcf7[_0x834e('0x26')]){return BPromise['resolve']({'id':_0x24fcf7['result']['id']});}else{throw new Error(util[_0x834e('0x20')]('Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s',JSON[_0x834e('0x25')](_0x24fcf7[_0x834e('0x27')])));}})[_0x834e('0x28')](function(_0x2cc2eb){var _0x3cd928=_0x2cc2eb[_0x834e('0x29')]||0x1f4;logger['error']('[vTiger],\x20%s,\x20%s,\x20%s','createTicket',_0x3cd928,JSON['stringify'](_0x2cc2eb));});}function getUser(_0x2c7a8d,_0x567cea,_0x106d6a){if(intUtil['validateEmail'](_0x567cea)){logger[_0x834e('0x19')](_0x834e('0x2a'),_0x567cea);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x2c7a8d[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x2c7a8d[_0x834e('0x2e')],'sessionName':_0x106d6a[_0x834e('0x23')],'query':util['format'](_0x834e('0x2f'),_0x567cea)},'json':!![]})['then'](function(_0x2c75c2){if(_0x2c75c2[_0x834e('0x26')]&&_0x2c75c2[_0x834e('0x30')][_0x834e('0xd')]){logger[_0x834e('0x19')](_0x834e('0x31'));return BPromise[_0x834e('0x32')]({'id':_0x2c75c2[_0x834e('0x30')][0x0]['id'],'email':_0x2c75c2[_0x834e('0x30')][0x0][_0x834e('0x33')],'name':_0x2c75c2['result'][0x0][_0x834e('0x34')]+'\x20'+_0x2c75c2[_0x834e('0x30')][_0x834e('0x35')]});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':'admin'});}})['catch'](function(_0x3e58fa){var _0x41bf4d=_0x3e58fa[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x41bf4d,JSON['stringify'](_0x3e58fa));});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':_0x834e('0x39')})[_0x834e('0x28')](function(_0x491c28){var _0x481f70=_0x491c28[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x481f70,JSON[_0x834e('0x25')](_0x491c28));});}}function getEndUser(_0x4ca43c,_0x1c5ed6,_0x548d1d,_0x50c243){logger[_0x834e('0x19')]('Searching\x20end\x20user\x20with\x20phone',_0x548d1d);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x4ca43c[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x4ca43c['username'],'sessionName':_0x50c243[_0x834e('0x23')],'query':util[_0x834e('0x20')](_0x834e('0x3a'),_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d)},'json':!![]})['then'](function(_0x35380e){if(_0x35380e[_0x834e('0x26')]&&_0x35380e['result'][_0x834e('0xd')]){logger['info'](_0x834e('0x3b'));return BPromise[_0x834e('0x32')]({'id':_0x35380e['result'][0x0]['id'],'name':_0x35380e['result'][0x0][_0x834e('0x3c')]+'\x20'+_0x35380e[_0x834e('0x30')][0x0][_0x834e('0x3d')],'phone':_0x548d1d});}else{logger[_0x834e('0x19')](_0x834e('0x3e'));return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0x4ca43c[_0x834e('0x21')]),'form':{'operation':'create','sessionName':_0x50c243[_0x834e('0x23')],'elementType':'Contacts','element':JSON[_0x834e('0x25')]({'lastname':_0x1c5ed6,'phone':_0x548d1d,'assigned_user_id':'\x20'})},'json':!![]})['then'](function(_0x361f60){logger[_0x834e('0x19')]('Enduser\x20created.');return BPromise[_0x834e('0x32')]({'id':_0x361f60[_0x834e('0x30')]['id'],'name':_0x361f60[_0x834e('0x30')][_0x834e('0x3d')],'phone':_0x361f60[_0x834e('0x30')][_0x834e('0x3f')]});})[_0x834e('0x28')](function(_0x3ccd8e){var _0x5dc63b=_0x3ccd8e[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x40'),_0x5dc63b,JSON['stringify'](_0x3ccd8e));});}});}function getConnection(_0x112306){var _0x42fd90=_0x112306[_0x834e('0x2e')];var _0x2112d5=_0x112306[_0x834e('0x41')];return request({'method':_0x834e('0x2b'),'uri':util['format']('%s/webservice.php',_0x112306[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x42'),'username':_0x42fd90},'json':!![]})[_0x834e('0x43')](function(_0x40ff5a){if(_0x40ff5a[_0x834e('0x26')]){return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x112306[_0x834e('0x21')]),'form':{'operation':_0x834e('0x44'),'username':_0x42fd90,'accessKey':md5(_0x40ff5a[_0x834e('0x30')][_0x834e('0x45')]+_0x2112d5)},'json':!![]});}})[_0x834e('0x43')](function(_0x1a3237){if(_0x1a3237[_0x834e('0x26')]){return BPromise[_0x834e('0x32')](_0x1a3237[_0x834e('0x30')]);}else{throw new Error(util[_0x834e('0x20')](_0x834e('0x46'),_0x112306['id']));}})[_0x834e('0x28')](function(_0x4cfacd){var _0x1cc0b8=_0x4cfacd[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x47'),_0x1cc0b8,JSON['stringify'](_0x4cfacd));});}function request(_0x3dcca3){logger[_0x834e('0x19')](_0x834e('0x48'),JSON[_0x834e('0x25')](_0x3dcca3));return rp(_0x3dcca3);}exports[_0x834e('0x49')]=function(_0xb77aab,_0x4549ba,_0x4a8b32,_0x1ad7fe,_0x8bc6c6,_0x3e0550){var _0x363675,_0x86ad2b,_0x396bbe,_0x344b51;_0x3e0550[_0x834e('0x21')]=intUtil['stripTrailingSlash'](_0x3e0550[_0x834e('0x21')]);if(_0x8bc6c6&&_0x8bc6c6['monitor_format']){logger[_0x834e('0x19')]('[QUEUE]',_0x834e('0x4a'));_0x4549ba['recordingURL']=util['format'](_0x834e('0x4b'),_0x3e0550[_0x834e('0x4c')],_0x4549ba['uniqueid'],md5(_0x4549ba['uniqueid']));}else{_0x4549ba[_0x834e('0x4d')]='';}return getConnection(_0x3e0550)[_0x834e('0x43')](function(_0x138ed2){_0x344b51=_0x138ed2;return getUser(_0x3e0550,_0x1ad7fe[_0x834e('0x4e')],_0x344b51);})[_0x834e('0x43')](function(_0x315858){_0x363675=_0x315858;logger[_0x834e('0x19')](_0x834e('0x4f'),_0x363675['id']);return getEndUser(_0x3e0550,_0x4549ba['calleridname'],_0x4549ba[_0x834e('0x50')],_0x344b51);})[_0x834e('0x43')](function(_0x5d5ac2){_0x86ad2b=_0x5d5ac2;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x86ad2b['id']);return createTicket(_0x3e0550,_0x363675,_0x86ad2b,_0x4a8b32,_0x4549ba,_0x4a8b32[_0x834e('0x51')],_0x344b51);})[_0x834e('0x43')](function(_0x5160c4){_0x396bbe=_0x5160c4;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x396bbe['id']);var _0x5a2924=util[_0x834e('0x20')](_0x834e('0x54'),_0x3e0550[_0x834e('0x21')],_['split'](_0x396bbe['id'],'x')[0x1]);logger[_0x834e('0x19')](_0x834e('0x55'),_0x834e('0x56'));emit(util[_0x834e('0x20')](_0x834e('0x57'),_0x1ad7fe[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5a2924});})[_0x834e('0x28')](function(_0x208c21){logger[_0x834e('0x27')](_0x834e('0x55'),JSON[_0x834e('0x25')](_0x208c21));});};exports[_0x834e('0x59')]=function(_0x1659c8,_0x460a7a,_0x17b8e3,_0x297cce,_0x14ed83,_0x193a15,_0x3e3467){var _0xed4081,_0x2cb233,_0x5c83eb,_0x2145cf;_0x193a15[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x193a15[_0x834e('0x21')]);_0x193a15['serverUrl']=intUtil[_0x834e('0x5a')](_0x193a15['serverUrl']);if(_0x3e3467&&_0x3e3467['recordingFormat']&&_0x3e3467[_0x834e('0x5b')]!==_0x834e('0x5c')){logger[_0x834e('0x19')](_0x834e('0x5d'),_0x834e('0x4a'));_0x460a7a[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x193a15['serverUrl'],_0x460a7a[_0x834e('0x5e')],md5(_0x460a7a['uniqueid']));}return getConnection(_0x193a15)[_0x834e('0x43')](function(_0xd35dda){_0x2145cf=_0xd35dda;return getUser(_0x193a15,_0x297cce['email'],_0x2145cf);})['then'](function(_0x4a4def){_0xed4081=_0x4a4def;logger[_0x834e('0x19')](_0x834e('0x4f'),_0xed4081['id']);return getEndUser(_0x193a15,_0x460a7a[_0x834e('0x5f')],_0x460a7a[_0x834e('0x60')],_0x2145cf);})['then'](function(_0x2b0d93){_0x2cb233=_0x2b0d93;logger[_0x834e('0x19')](_0x834e('0x61'),_0x2cb233['id']);return createTicket(_0x193a15,_0xed4081,_0x2cb233,_0x17b8e3,_0x460a7a,_0x17b8e3[_0x834e('0x51')],_0x2145cf);})[_0x834e('0x43')](function(_0x28b5c9){_0x5c83eb=_0x28b5c9;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x5c83eb['id']);var _0x5b2bf6=util[_0x834e('0x20')](_0x834e('0x54'),_0x193a15[_0x834e('0x21')],_[_0x834e('0x62')](_0x5c83eb['id'],'x')[0x1]);logger['info'](_0x834e('0x5d'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x297cce[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5b2bf6});})['catch'](function(_0x2645df){logger[_0x834e('0x27')]('[OUTBOUND]',JSON[_0x834e('0x25')](_0x2645df));});};exports[_0x834e('0x63')]=function(_0x4b88e7,_0x5df169,_0x346be5,_0x2a42a3,_0x8bc7d9,_0x44c909){var _0x1d8e7,_0x493239,_0x264a6f,_0x520367;_0x44c909[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x21')]);_0x44c909['serverUrl']=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x4c')]);if(_0x8bc7d9&&_0x8bc7d9['monitor_format']){logger[_0x834e('0x19')]('['+_0x5df169[_0x834e('0x64')][_0x834e('0x65')]()+']','Recording\x20is\x20enabled!');_0x5df169[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x44c909[_0x834e('0x4c')],_0x5df169[_0x834e('0x5e')],md5(_0x5df169[_0x834e('0x5e')]));}else{_0x5df169[_0x834e('0x4d')]='';}return getConnection(_0x44c909)[_0x834e('0x43')](function(_0xd49002){_0x520367=_0xd49002;return getUser(_0x44c909,'',_0x520367);})[_0x834e('0x43')](function(_0x57d898){_0x1d8e7=_0x57d898;logger['info']('The\x20User\x20ID\x20is:',_0x1d8e7['id']);return getEndUser(_0x44c909,_0x5df169[_0x834e('0x66')],_0x5df169[_0x834e('0x50')],_0x520367);})[_0x834e('0x43')](function(_0x37fa2c){_0x493239=_0x37fa2c;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x493239['id']);return createTicket(_0x44c909,_0x1d8e7,_0x493239,_0x346be5,_0x5df169,_0x346be5['Fields'],_0x520367);})[_0x834e('0x43')](function(_0x1ad428){_0x264a6f=_0x1ad428;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')]('The\x20Ticket\x20ID\x20is:',_0x264a6f['id']);})[_0x834e('0x28')](function(_0x2b162a){logger[_0x834e('0x27')]('['+_0x5df169['lastevent'][_0x834e('0x65')]()+']',JSON[_0x834e('0x25')](_0x2b162a));});};
\ No newline at end of file
+var _0xa9e0=['variable','variableName','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','Normal','Open','Subjects','POST','format','%s/webservice.php','create','username','sessionName','HelpDesk','stringify','then','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','error','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','validateEmail','Getting\x20agent\x20with\x20email','GET','query','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','resolve','email1','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','statusCode','getUser','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','getchallenge','login','token','Account\x20%d\x20is\x20not\x20valid','[HTTP]','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Enduser\x20ID\x20is:','Fields','split','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridname','lastevent','lodash','request-promise','bluebird','ioredis','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','length','forEach','includes','idField','content','toString','type'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x0a9e('0x0'));var rp=require(_0x0a9e('0x1'));var BPromise=require(_0x0a9e('0x2'));var md5=require('md5');var util=require('util');var Redis=require(_0x0a9e('0x3'));var intUtil=require('./util');var config=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));config[_0x0a9e('0x7')]=_[_0x0a9e('0x8')](config['redis'],{'host':_0x0a9e('0x9'),'port':0x18eb});var io=require(_0x0a9e('0xa'))(new Redis(config[_0x0a9e('0x7')]));function emit(_0x5f41ea,_0x503809,_0xe42b77){io['to'](_0x5f41ea)['emit'](_0x503809,_0xe42b77);}function getCustomFields(_0x52cace,_0x39753a){var _0xf81284={};if(_0x52cace[_0x0a9e('0xb')]>0x0){_[_0x0a9e('0xc')](_0x52cace,function(_0xfeb75b){if(_[_0x0a9e('0xd')](['string','picklist'],_0xfeb75b['type'])&&_0xfeb75b['idField']){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0xfeb75b[_0x0a9e('0xf')][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x12')&&_0xfeb75b[_0x0a9e('0x13')]&&_0xfeb75b['idField']&&_0x39753a[_0xfeb75b[_0x0a9e('0x13')]]){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0x39753a[_0xfeb75b[_0x0a9e('0x13')]][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x14')&&_0xfeb75b['Variable']&&_0xfeb75b[_0x0a9e('0x15')]['name']&&_0xfeb75b[_0x0a9e('0xe')]&&_0x39753a[_0xfeb75b['Variable'][_0x0a9e('0x16')][_0x0a9e('0x17')]()]){_0xf81284[_0xfeb75b['idField']]=_0x39753a[_0xfeb75b[_0x0a9e('0x15')]['name'][_0x0a9e('0x17')]()][_0x0a9e('0x10')]();}});}return _0xf81284;}function createTicket(_0x106033,_0x205fd6,_0x31b1ca,_0x2eb11f,_0x530eb7,_0x20559e,_0x1314ae){logger[_0x0a9e('0x18')](_0x0a9e('0x19'));var _0x105080=_['merge']({'parent_id':'','assigned_user_id':_0x205fd6['id'],'ticketpriorities':_0x0a9e('0x1a'),'ticketstatus':_0x0a9e('0x1b'),'ticket_title':intUtil['getString'](_0x2eb11f[_0x0a9e('0x1c')],_0x530eb7,'\x20'),'description':intUtil['getString'](_0x2eb11f['Descriptions'],_0x530eb7,'\x0a'),'contact_id':_0x31b1ca['id']},getCustomFields(_0x20559e,_0x530eb7));var _0x3a02e1={'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x106033['remoteUri']),'form':{'operation':_0x0a9e('0x20'),'username':_0x106033[_0x0a9e('0x21')],'sessionName':_0x1314ae[_0x0a9e('0x22')],'elementType':_0x0a9e('0x23'),'element':JSON[_0x0a9e('0x24')](_0x105080)},'json':!![]};return request(_0x3a02e1)[_0x0a9e('0x25')](function(_0x16b1ca){if(_0x16b1ca['success']){return BPromise['resolve']({'id':_0x16b1ca[_0x0a9e('0x26')]['id']});}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x27'),JSON[_0x0a9e('0x24')](_0x16b1ca['error'])));}})[_0x0a9e('0x28')](function(_0x479bc4){var _0x45a1e7=_0x479bc4['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x2b'),_0x45a1e7,JSON[_0x0a9e('0x24')](_0x479bc4));});}function getUser(_0x140511,_0x1538a4,_0x11c3b6){if(intUtil[_0x0a9e('0x2c')](_0x1538a4)){logger['info'](_0x0a9e('0x2d'),_0x1538a4);return request({'method':_0x0a9e('0x2e'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x140511['remoteUri']),'qs':{'operation':_0x0a9e('0x2f'),'username':_0x140511[_0x0a9e('0x21')],'sessionName':_0x11c3b6[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x30'),_0x1538a4)},'json':!![]})[_0x0a9e('0x25')](function(_0x296f41){if(_0x296f41[_0x0a9e('0x31')]&&_0x296f41[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')]('Agent\x20found!');return BPromise[_0x0a9e('0x32')]({'id':_0x296f41[_0x0a9e('0x26')][0x0]['id'],'email':_0x296f41[_0x0a9e('0x26')][0x0][_0x0a9e('0x33')],'name':_0x296f41[_0x0a9e('0x26')][0x0]['first_name']+'\x20'+_0x296f41[_0x0a9e('0x26')][_0x0a9e('0x34')]});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511[_0x0a9e('0x21')],'name':_0x0a9e('0x37')});}})['catch'](function(_0x44295a){var _0x5e7238=_0x44295a[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x39'),_0x5e7238,JSON['stringify'](_0x44295a));});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511['username'],'name':'admin'})[_0x0a9e('0x28')](function(_0x5640eb){var _0x24936a=_0x5640eb[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getUser',_0x24936a,JSON[_0x0a9e('0x24')](_0x5640eb));});}}function getEndUser(_0x3bfce8,_0x3cae,_0x533942,_0x1dbf74){logger[_0x0a9e('0x18')](_0x0a9e('0x3a'),_0x533942);return request({'method':'GET','uri':util['format'](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'qs':{'operation':'query','username':_0x3bfce8[_0x0a9e('0x21')],'sessionName':_0x1dbf74[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x3c'),_0x533942,_0x533942,_0x533942,_0x533942,_0x533942)},'json':!![]})['then'](function(_0x5a594b){if(_0x5a594b[_0x0a9e('0x31')]&&_0x5a594b[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')](_0x0a9e('0x3d'));return BPromise[_0x0a9e('0x32')]({'id':_0x5a594b['result'][0x0]['id'],'name':_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3e')]+'\x20'+_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3f')],'phone':_0x533942});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x40'));return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x20'),'sessionName':_0x1dbf74[_0x0a9e('0x22')],'elementType':_0x0a9e('0x41'),'element':JSON[_0x0a9e('0x24')]({'lastname':_0x3cae,'phone':_0x533942,'assigned_user_id':'\x20'})},'json':!![]})[_0x0a9e('0x25')](function(_0x4d04c8){logger['info'](_0x0a9e('0x42'));return BPromise[_0x0a9e('0x32')]({'id':_0x4d04c8[_0x0a9e('0x26')]['id'],'name':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x3f')],'phone':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x43')]});})[_0x0a9e('0x28')](function(_0x432fcc){var _0x25c6e6=_0x432fcc[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x0a9e('0x44'),_0x25c6e6,JSON[_0x0a9e('0x24')](_0x432fcc));});}});}function getConnection(_0xdd268f){var _0xfbd5ad=_0xdd268f[_0x0a9e('0x21')];var _0xbe9d19=_0xdd268f[_0x0a9e('0x45')];return request({'method':_0x0a9e('0x2e'),'uri':util['format'](_0x0a9e('0x1f'),_0xdd268f['remoteUri']),'qs':{'operation':_0x0a9e('0x46'),'username':_0xfbd5ad},'json':!![]})[_0x0a9e('0x25')](function(_0x8d6dd1){if(_0x8d6dd1['success']){return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0xdd268f[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x47'),'username':_0xfbd5ad,'accessKey':md5(_0x8d6dd1[_0x0a9e('0x26')][_0x0a9e('0x48')]+_0xbe9d19)},'json':!![]});}})['then'](function(_0x13f44d){if(_0x13f44d[_0x0a9e('0x31')]){return BPromise[_0x0a9e('0x32')](_0x13f44d[_0x0a9e('0x26')]);}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x49'),_0xdd268f['id']));}})[_0x0a9e('0x28')](function(_0x19383e){var _0x34febd=_0x19383e['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getConnection',_0x34febd,JSON['stringify'](_0x19383e));});}function request(_0x5ddf84){logger[_0x0a9e('0x18')](_0x0a9e('0x4a'),JSON[_0x0a9e('0x24')](_0x5ddf84));return rp(_0x5ddf84);}exports[_0x0a9e('0x4b')]=function(_0x61bb17,_0x30decb,_0x2e5165,_0x375c18,_0x5d38ae,_0x4b1b9f){var _0x53975a,_0x39d77d,_0x204173,_0x14d602;_0x4b1b9f['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x4b1b9f[_0x0a9e('0x3b')]);if(_0x5d38ae&&_0x5d38ae['monitor_format']){logger['info'](_0x0a9e('0x4d'),'Recording\x20is\x20enabled!');_0x30decb[_0x0a9e('0x4e')]=util['format'](_0x0a9e('0x4f'),_0x4b1b9f[_0x0a9e('0x50')],_0x30decb[_0x0a9e('0x51')],md5(_0x30decb['uniqueid']));}else{_0x30decb[_0x0a9e('0x4e')]='';}return getConnection(_0x4b1b9f)[_0x0a9e('0x25')](function(_0x508b47){_0x14d602=_0x508b47;return getUser(_0x4b1b9f,_0x375c18['email'],_0x14d602);})[_0x0a9e('0x25')](function(_0x3aedd0){_0x53975a=_0x3aedd0;logger['info'](_0x0a9e('0x52'),_0x53975a['id']);return getEndUser(_0x4b1b9f,_0x30decb['calleridname'],_0x30decb[_0x0a9e('0x53')],_0x14d602);})['then'](function(_0xe22ccc){_0x39d77d=_0xe22ccc;logger['info']('The\x20Enduser\x20ID\x20is:',_0x39d77d['id']);return createTicket(_0x4b1b9f,_0x53975a,_0x39d77d,_0x2e5165,_0x30decb,_0x2e5165['Fields'],_0x14d602);})[_0x0a9e('0x25')](function(_0x47de4c){_0x204173=_0x47de4c;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x204173['id']);var _0x232830=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x4b1b9f[_0x0a9e('0x3b')],_['split'](_0x204173['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x4d'),_0x0a9e('0x57'));emit(util[_0x0a9e('0x1e')](_0x0a9e('0x58'),_0x375c18[_0x0a9e('0x16')]),'trigger:browser:url',{'uri':_0x232830});})[_0x0a9e('0x28')](function(_0x26bc80){logger['error'](_0x0a9e('0x4d'),JSON['stringify'](_0x26bc80));});};exports[_0x0a9e('0x59')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee,_0x273cb5,_0x49d231,_0x2244d6,_0x1fc70e){var _0x261adb,_0x7be420,_0x1cca9f,_0x26d7db;_0x2244d6['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x2244d6['remoteUri']);_0x2244d6[_0x0a9e('0x50')]=intUtil[_0x0a9e('0x4c')](_0x2244d6[_0x0a9e('0x50')]);if(_0x1fc70e&&_0x1fc70e['recordingFormat']&&_0x1fc70e[_0x0a9e('0x5a')]!==_0x0a9e('0x5b')){logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),'Recording\x20is\x20enabled!');_0x4b3c1a[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2244d6[_0x0a9e('0x50')],_0x4b3c1a[_0x0a9e('0x51')],md5(_0x4b3c1a[_0x0a9e('0x51')]));}return getConnection(_0x2244d6)[_0x0a9e('0x25')](function(_0x401837){_0x26d7db=_0x401837;return getUser(_0x2244d6,_0x273cb5['email'],_0x26d7db);})[_0x0a9e('0x25')](function(_0x2937e0){_0x261adb=_0x2937e0;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x261adb['id']);return getEndUser(_0x2244d6,_0x4b3c1a[_0x0a9e('0x5d')],_0x4b3c1a['destcalleridnum'],_0x26d7db);})['then'](function(_0x242745){_0x7be420=_0x242745;logger[_0x0a9e('0x18')](_0x0a9e('0x5e'),_0x7be420['id']);return createTicket(_0x2244d6,_0x261adb,_0x7be420,_0x5674ee,_0x4b3c1a,_0x5674ee[_0x0a9e('0x5f')],_0x26d7db);})[_0x0a9e('0x25')](function(_0xc8c264){_0x1cca9f=_0xc8c264;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1cca9f['id']);var _0x2e89b7=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x2244d6[_0x0a9e('0x3b')],_[_0x0a9e('0x60')](_0x1cca9f['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),_0x0a9e('0x57'));emit(util['format'](_0x0a9e('0x58'),_0x273cb5[_0x0a9e('0x16')]),_0x0a9e('0x61'),{'uri':_0x2e89b7});})['catch'](function(_0x1148a1){logger[_0x0a9e('0x29')]('[OUTBOUND]',JSON[_0x0a9e('0x24')](_0x1148a1));});};exports[_0x0a9e('0x62')]=function(_0x3ef315,_0x427946,_0x13b5c0,_0x4a43a8,_0x50cdce,_0x4a2438){var _0x40fb85,_0x18bf5d,_0x1104ad,_0x23a7d3;_0x4a2438[_0x0a9e('0x3b')]=intUtil[_0x0a9e('0x4c')](_0x4a2438[_0x0a9e('0x3b')]);_0x4a2438[_0x0a9e('0x50')]=intUtil['stripTrailingSlash'](_0x4a2438[_0x0a9e('0x50')]);if(_0x50cdce&&_0x50cdce[_0x0a9e('0x63')]){logger[_0x0a9e('0x18')]('['+_0x427946['lastevent'][_0x0a9e('0x64')]()+']','Recording\x20is\x20enabled!');_0x427946[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4a2438[_0x0a9e('0x50')],_0x427946[_0x0a9e('0x51')],md5(_0x427946[_0x0a9e('0x51')]));}else{_0x427946[_0x0a9e('0x4e')]='';}return getConnection(_0x4a2438)['then'](function(_0x1d442c){_0x23a7d3=_0x1d442c;return getUser(_0x4a2438,'',_0x23a7d3);})[_0x0a9e('0x25')](function(_0x371533){_0x40fb85=_0x371533;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x40fb85['id']);return getEndUser(_0x4a2438,_0x427946[_0x0a9e('0x65')],_0x427946[_0x0a9e('0x53')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0x361b21){_0x18bf5d=_0x361b21;logger['info'](_0x0a9e('0x5e'),_0x18bf5d['id']);return createTicket(_0x4a2438,_0x40fb85,_0x18bf5d,_0x13b5c0,_0x427946,_0x13b5c0[_0x0a9e('0x5f')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0xf410e5){_0x1104ad=_0xf410e5;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1104ad['id']);})[_0x0a9e('0x28')](function(_0x336dc3){logger[_0x0a9e('0x29')]('['+_0x427946[_0x0a9e('0x66')][_0x0a9e('0x64')]()+']',JSON[_0x0a9e('0x24')](_0x336dc3));});};
\ No newline at end of file
index 0834662..4d972cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc89=['calleridname','calleridnum','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','POST','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','replace','/api/v2','Zendesk\x20account\x20type\x20not\x20recognized','catch','error','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','trigger:browser:url','%s/agent/tickets/%s','inspect','unmanaged','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','defaults','localhost','socket.io-emitter','redis','emit','application/json','info','format','%s/tickets.json','remoteUri','Tags','name','getString','Descriptions','then','Getting\x20agent\x20with\x20email','%s/search.json','count','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','user','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','Basic\x20%s','toString','base64','debug','stringify','GET','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','custom_fields','push','idField','variable','variableName','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:'];(function(_0x20c5f6,_0x5ea3e6){var _0x518805=function(_0x2123ad){while(--_0x2123ad){_0x20c5f6['push'](_0x20c5f6['shift']());}};_0x518805(++_0x5ea3e6);}(_0xcc89,0x8c));var _0x9cc8=function(_0x433aab,_0x458b4e){_0x433aab=_0x433aab-0x0;var _0x32fbbf=_0xcc89[_0x433aab];return _0x32fbbf;};'use strict';var _=require(_0x9cc8('0x0'));var rp=require('request-promise');var md5=require(_0x9cc8('0x1'));var util=require(_0x9cc8('0x2'));var Redis=require(_0x9cc8('0x3'));var intUtil=require(_0x9cc8('0x4'));var config=require(_0x9cc8('0x5'));var logger=require(_0x9cc8('0x6'))(_0x9cc8('0x7'));config['redis']=_[_0x9cc8('0x8')](config['redis'],{'host':_0x9cc8('0x9'),'port':0x18eb});var io=require(_0x9cc8('0xa'))(new Redis(config[_0x9cc8('0xb')]));function emit(_0x73001f,_0x3010f3,_0x306659){io['to'](_0x73001f)[_0x9cc8('0xc')](_0x3010f3,_0x306659);}var headers={'Content-Type':_0x9cc8('0xd'),'Accept':_0x9cc8('0xd')};function getTicket(_0x456a7b,_0x853bce,_0x385a6d,_0x2f87a2,_0x2d18da){logger[_0x9cc8('0xe')]('Creating\x20new\x20ticket...');return request({'uri':util[_0x9cc8('0xf')](_0x9cc8('0x10'),_0x456a7b[_0x9cc8('0x11')]),'method':'POST','body':{'ticket':_['merge']({'requester_id':_0x385a6d['id'],'submitter_id':_0x853bce?_0x853bce['id']:undefined,'assignee_id':_0x853bce?_0x853bce['id']:undefined,'tags':getTags(_0x2f87a2[_0x9cc8('0x12')],_0x9cc8('0x13')),'subject':intUtil[_0x9cc8('0x14')](_0x2f87a2['Subjects'],_0x2d18da,'\x20'),'description':intUtil[_0x9cc8('0x14')](_0x2f87a2[_0x9cc8('0x15')],_0x2d18da,'\x0a'),'comment':{'public':![],'body':intUtil[_0x9cc8('0x14')](_0x2f87a2['Descriptions'],_0x2d18da,'\x0a')}},getCustomFields(_0x2f87a2['Fields'],_0x2d18da))}})[_0x9cc8('0x16')](function(_0x21f551){logger['info']('Ticket\x20created!');return _0x21f551['ticket'];});}function getUser(_0x2aa7d6,_0x2b554e){if(intUtil['validateEmail'](_0x2b554e)){logger['info'](_0x9cc8('0x17'),_0x2b554e);return request({'uri':util['format'](_0x9cc8('0x18'),_0x2aa7d6[_0x9cc8('0x11')]),'qs':{'query':util[_0x9cc8('0xf')]('type:user\x20role:agent\x20email:%s',_0x2b554e)}})['then'](function(_0x48b625){if(_0x48b625[_0x9cc8('0x19')]){logger[_0x9cc8('0xe')](_0x9cc8('0x1a'));return _[_0x9cc8('0x1b')](_0x48b625[_0x9cc8('0x1c')],{'email':_0x2b554e,'role':_0x9cc8('0x1d')});}else{logger[_0x9cc8('0xe')](_0x9cc8('0x1e'));return request({'uri':util['format'](_0x9cc8('0x1f'),_0x2aa7d6[_0x9cc8('0x11')])})['then'](function(_0x5896a9){logger[_0x9cc8('0xe')]('Admin\x20account\x20selected.');return _0x5896a9[_0x9cc8('0x20')];});}});}else{logger[_0x9cc8('0xe')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0x9cc8('0x1f'),_0x2aa7d6[_0x9cc8('0x11')])})[_0x9cc8('0x16')](function(_0x4dc5e3){logger[_0x9cc8('0xe')](_0x9cc8('0x21'));return _0x4dc5e3[_0x9cc8('0x20')];});}}function getEndUser(_0x34814b,_0x413a50,_0x2ae405){logger[_0x9cc8('0xe')](_0x9cc8('0x22'),_0x2ae405);return request({'uri':util[_0x9cc8('0xf')](_0x9cc8('0x18'),_0x34814b[_0x9cc8('0x11')]),'qs':{'query':util[_0x9cc8('0xf')](_0x9cc8('0x23'),_0x2ae405)}})['then'](function(_0xb41a32){var _0x4a8a33;if(_0xb41a32[_0x9cc8('0x1c')][_0x9cc8('0x24')]){_0xb41a32[_0x9cc8('0x1c')]=_[_0x9cc8('0x25')](_0xb41a32['results'],{'suspended':![],'role':_0x9cc8('0x26')});if(_0xb41a32[_0x9cc8('0x1c')][_0x9cc8('0x24')]){_0x4a8a33=_[_0x9cc8('0x27')](_0xb41a32['results']);}}if(_0x4a8a33){logger[_0x9cc8('0xe')](_0x9cc8('0x28'));return _0x4a8a33;}else{logger[_0x9cc8('0xe')](_0x9cc8('0x29'));return request({'uri':util[_0x9cc8('0xf')](_0x9cc8('0x2a'),_0x34814b['remoteUri']),'method':'POST','body':{'user':{'role':_0x9cc8('0x26'),'name':util['format'](_0x9cc8('0x2b'),_0x413a50||_0x2ae405),'phone':_0x2ae405}}})[_0x9cc8('0x16')](function(_0x59266e){logger[_0x9cc8('0xe')](_0x9cc8('0x2c'));return _0x59266e[_0x9cc8('0x20')];});}});}function getAuth(_0x447603){var _0x57176c;if(_0x447603[_0x9cc8('0x2d')]===_0x9cc8('0x2e')){_0x57176c=util[_0x9cc8('0xf')](_0x9cc8('0x2f'),_0x447603[_0x9cc8('0x30')],_0x447603[_0x9cc8('0x2e')]);}else if(_0x447603[_0x9cc8('0x2d')]==='token'){_0x57176c=util['format']('%s/token:%s',_0x447603[_0x9cc8('0x30')],_0x447603[_0x9cc8('0x31')]);}return util[_0x9cc8('0xf')](_0x9cc8('0x32'),new Buffer(_0x57176c)[_0x9cc8('0x33')](_0x9cc8('0x34')));}function request(_0x1b4e4a){logger[_0x9cc8('0x35')]('[HTTP]',JSON[_0x9cc8('0x36')](_0x1b4e4a));return rp(_[_0x9cc8('0x8')](_0x1b4e4a,{'method':_0x9cc8('0x37'),'headers':headers,'json':!![]}));}function getTags(_0x181207,_0x27f8dc){var _0xe3b9c0=[];if(_0x181207&&_0x181207[_0x9cc8('0x24')]>0x0){_0xe3b9c0=_[_0x9cc8('0x38')](_0x181207,_0x27f8dc);}return _0xe3b9c0;}function getCustomFields(_0xa9dee3,_0x4968a4){var _0x4a1510=[];var _0x587183={'custom_fields':[]};if(_0xa9dee3[_0x9cc8('0x24')]>0x0){_[_0x9cc8('0x39')](_0xa9dee3,function(_0x1bc9df){if(_[_0x9cc8('0x3a')]([_0x9cc8('0x3b'),_0x9cc8('0x3c')],_0x1bc9df[_0x9cc8('0x3d')])&&_0x1bc9df[_0x9cc8('0x3e')]&&!_0x1bc9df[_0x9cc8('0x3f')]){_0x587183[_0x1bc9df[_0x9cc8('0x3e')][_0x9cc8('0x40')]()]=_0x1bc9df[_0x9cc8('0x41')]['toString']();}else if(_[_0x9cc8('0x3a')]([_0x9cc8('0x3b'),_0x9cc8('0x3c')],_0x1bc9df['type'])&&_0x1bc9df['idField']&&_0x1bc9df[_0x9cc8('0x3f')]){_0x587183[_0x9cc8('0x42')][_0x9cc8('0x43')]({'id':_0x1bc9df[_0x9cc8('0x44')],'value':_0x1bc9df[_0x9cc8('0x41')][_0x9cc8('0x33')]()});}else if(_0x1bc9df[_0x9cc8('0x3d')]===_0x9cc8('0x45')&&_0x1bc9df[_0x9cc8('0x46')]&&_0x1bc9df['idField']&&_0x1bc9df[_0x9cc8('0x3f')]){_0x4968a4[_0x1bc9df['variableName']]&&_0x587183[_0x9cc8('0x42')][_0x9cc8('0x43')]({'id':_0x1bc9df[_0x9cc8('0x44')],'value':_0x4968a4[_0x1bc9df[_0x9cc8('0x46')]]['toString']()});}else if(_0x1bc9df[_0x9cc8('0x3d')]===_0x9cc8('0x47')&&_0x1bc9df[_0x9cc8('0x48')]&&_0x1bc9df[_0x9cc8('0x48')]['name']&&_0x1bc9df['idField']&&_0x1bc9df['customField']){_0x4968a4[_0x1bc9df[_0x9cc8('0x48')][_0x9cc8('0x13')][_0x9cc8('0x40')]()]&&_0x587183[_0x9cc8('0x42')][_0x9cc8('0x43')]({'id':_0x1bc9df[_0x9cc8('0x44')],'value':_0x4968a4[_0x1bc9df[_0x9cc8('0x48')][_0x9cc8('0x13')][_0x9cc8('0x40')]()][_0x9cc8('0x33')]()});}});}return _0x587183;}exports['queue']=function(_0x579bf8,_0x4218c1,_0x170673,_0x643aa,_0x4ac470,_0x2a518e){var _0x132383,_0x209871;_0x2a518e[_0x9cc8('0x11')]=intUtil[_0x9cc8('0x49')](_0x2a518e[_0x9cc8('0x11')]);_0x2a518e[_0x9cc8('0x4a')]=intUtil[_0x9cc8('0x49')](_0x2a518e[_0x9cc8('0x4a')]);if(_0x4ac470&&_0x4ac470[_0x9cc8('0x4b')]){logger['info'](_0x9cc8('0x4c'),_0x9cc8('0x4d'));_0x4218c1[_0x9cc8('0x4e')]=util[_0x9cc8('0xf')](_0x9cc8('0x4f'),_0x2a518e[_0x9cc8('0x4a')],_0x4218c1['uniqueid'],md5(_0x4218c1[_0x9cc8('0x50')]));}else{_0x4218c1[_0x9cc8('0x4e')]='';}headers[_0x9cc8('0x51')]=getAuth(_0x2a518e);return getUser(_0x2a518e,_0x643aa[_0x9cc8('0x52')])['then'](function(_0x4406e9){_0x132383=_0x4406e9;logger['info'](_0x9cc8('0x53'),_0x132383['id']);return getEndUser(_0x2a518e,_0x4218c1[_0x9cc8('0x54')],_0x4218c1[_0x9cc8('0x55')]);})[_0x9cc8('0x16')](function(_0x4bf2d0){_0x209871=_0x4bf2d0;logger[_0x9cc8('0xe')]('The\x20Enduser\x20ID\x20is:',_0x209871['id']);return getTicket(_0x2a518e,_0x132383,_0x209871,_0x170673,_0x4218c1);})['then'](function(_0x11ce2f){if(_0x11ce2f){logger[_0x9cc8('0xe')]('The\x20Ticket\x20ID\x20is:',_0x11ce2f['id']);switch(_0x2a518e['type']){case _0x9cc8('0x56'):logger[_0x9cc8('0xe')](_0x9cc8('0x4c'),_0x9cc8('0x57'));return request({'uri':util[_0x9cc8('0xf')](_0x9cc8('0x58'),_0x2a518e['remoteUri'],_0x132383['id'],_0x11ce2f['id']),'method':_0x9cc8('0x59')});case _0x9cc8('0x5a'):logger[_0x9cc8('0xe')](_0x9cc8('0x4c'),_0x9cc8('0x5b'));emit(util['format'](_0x9cc8('0x5c'),_0x643aa[_0x9cc8('0x13')]),'trigger:browser:url',{'uri':util['format']('%s/agent/tickets/%s',_0x2a518e['remoteUri'][_0x9cc8('0x5d')](_0x9cc8('0x5e'),''),_0x11ce2f['id'])});break;default:logger['error'](_0x9cc8('0x4c'),_0x9cc8('0x5f'));}}})[_0x9cc8('0x60')](function(_0x2c145b){logger[_0x9cc8('0x61')](_0x9cc8('0x62'),util['inspect'](_0x2c145b,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x5204b6,_0x476d3d,_0x45e173,_0x891322,_0x56e537,_0x3ecb42,_0x47a43e){var _0x592073,_0x1bd99d;_0x3ecb42[_0x9cc8('0x11')]=intUtil[_0x9cc8('0x49')](_0x3ecb42[_0x9cc8('0x11')]);_0x3ecb42['serverUrl']=intUtil[_0x9cc8('0x49')](_0x3ecb42[_0x9cc8('0x4a')]);if(_0x47a43e&&_0x47a43e['recordingFormat']&&_0x47a43e[_0x9cc8('0x63')]!==_0x9cc8('0x64')){logger['info'](_0x9cc8('0x65'),_0x9cc8('0x4d'));_0x476d3d['recordingURL']=util[_0x9cc8('0xf')](_0x9cc8('0x4f'),_0x3ecb42[_0x9cc8('0x4a')],_0x476d3d['uniqueid'],md5(_0x476d3d[_0x9cc8('0x50')]));}headers[_0x9cc8('0x51')]=getAuth(_0x3ecb42);return getUser(_0x3ecb42,_0x891322[_0x9cc8('0x52')])['then'](function(_0xce917d){_0x592073=_0xce917d;logger['info']('The\x20User\x20ID\x20is:',_0x592073['id']);return getEndUser(_0x3ecb42,_0x476d3d[_0x9cc8('0x66')],_0x476d3d['destcalleridnum']);})['then'](function(_0x940afc){_0x1bd99d=_0x940afc;logger[_0x9cc8('0xe')](_0x9cc8('0x67'),_0x1bd99d['id']);return getTicket(_0x3ecb42,_0x592073,_0x1bd99d,_0x45e173,_0x476d3d);})['then'](function(_0x90db7d){if(_0x90db7d){logger[_0x9cc8('0xe')](_0x9cc8('0x68'),_0x90db7d['id']);switch(_0x3ecb42[_0x9cc8('0x3d')]){case'integrationTab':logger[_0x9cc8('0xe')](_0x9cc8('0x65'),_0x9cc8('0x57'));return request({'uri':util[_0x9cc8('0xf')](_0x9cc8('0x58'),_0x3ecb42['remoteUri'],_0x592073['id'],_0x90db7d['id']),'method':_0x9cc8('0x59')});case'newTab':logger[_0x9cc8('0xe')](_0x9cc8('0x65'),_0x9cc8('0x5b'));emit(util[_0x9cc8('0xf')]('user:%s',_0x891322['name']),_0x9cc8('0x69'),{'uri':util[_0x9cc8('0xf')](_0x9cc8('0x6a'),_0x3ecb42['remoteUri'][_0x9cc8('0x5d')](_0x9cc8('0x5e'),''),_0x90db7d['id'])});break;default:logger[_0x9cc8('0x61')](_0x9cc8('0x65'),_0x9cc8('0x5f'));}}})[_0x9cc8('0x60')](function(_0xdc2d60){logger[_0x9cc8('0x61')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0x9cc8('0x6b')](_0xdc2d60,{'showHidden':!![],'depth':null}));});};exports[_0x9cc8('0x6c')]=function(_0x519932,_0x3425bf,_0x8f9931,_0xe675f7,_0x4f0b25,_0x3c0eb9){var _0x19eb35,_0x2c95f1;_0x3c0eb9[_0x9cc8('0x11')]=intUtil[_0x9cc8('0x49')](_0x3c0eb9['remoteUri']);_0x3c0eb9[_0x9cc8('0x4a')]=intUtil[_0x9cc8('0x49')](_0x3c0eb9[_0x9cc8('0x4a')]);if(_0x4f0b25&&_0x4f0b25[_0x9cc8('0x4b')]){logger[_0x9cc8('0xe')]('['+_0x3425bf[_0x9cc8('0x6d')][_0x9cc8('0x6e')]()+']',_0x9cc8('0x4d'));_0x3425bf['recordingURL']=util['format'](_0x9cc8('0x4f'),_0x3c0eb9[_0x9cc8('0x4a')],_0x3425bf['uniqueid'],md5(_0x3425bf[_0x9cc8('0x50')]));}else{_0x3425bf[_0x9cc8('0x4e')]='';}headers['Authorization']=getAuth(_0x3c0eb9);return getUser(_0x3c0eb9)['then'](function(_0x1df06c){_0x19eb35=_0x1df06c;logger[_0x9cc8('0xe')](_0x9cc8('0x53'),_0x19eb35['id']);return getEndUser(_0x3c0eb9,_0x3425bf[_0x9cc8('0x54')],_0x3425bf['calleridnum']);})[_0x9cc8('0x16')](function(_0x5222b5){_0x2c95f1=_0x5222b5;logger['info'](_0x9cc8('0x67'),_0x2c95f1['id']);return getTicket(_0x3c0eb9,_0x19eb35,_0x2c95f1,_0x8f9931,_0x3425bf);})['then'](function(_0x36064d){if(_0x36064d){logger[_0x9cc8('0xe')]('The\x20Ticket\x20ID\x20is:',_0x36064d['id']);}})['catch'](function(_0x53c08c){logger[_0x9cc8('0x61')]('['+_0x3425bf[_0x9cc8('0x6d')][_0x9cc8('0x6e')]()+']'+_0x9cc8('0x6f'),util['inspect'](_0x53c08c,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x9951=['[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','unmanaged','lastevent','toUpperCase','calleridnum','lodash','request-promise','util','ioredis','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','emit','application/json','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','Tags','name','getString','Subjects','Descriptions','Fields','then','info','Ticket\x20created!','ticket','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','authType','password','username','token','%s/token:%s','Basic\x20%s','base64','[HTTP]','stringify','GET','map','forEach','includes','string','picklist','nameField','customField','toLowerCase','content','toString','idField','custom_fields','push','type','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','user:%s','%s/agent/tickets/%s','/api/v2','error','catch','outbound','recordingFormat','[OUTBOUND]','uniqueid','Authorization','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','replace'];(function(_0x4c7ab7,_0x519b09){var _0x146103=function(_0x43d56a){while(--_0x43d56a){_0x4c7ab7['push'](_0x4c7ab7['shift']());}};_0x146103(++_0x519b09);}(_0x9951,0x15c));var _0x1995=function(_0x4a6093,_0x43f470){_0x4a6093=_0x4a6093-0x0;var _0x585971=_0x9951[_0x4a6093];return _0x585971;};'use strict';var _=require(_0x1995('0x0'));var rp=require(_0x1995('0x1'));var md5=require('md5');var util=require(_0x1995('0x2'));var Redis=require(_0x1995('0x3'));var intUtil=require('./util');var config=require(_0x1995('0x4'));var logger=require(_0x1995('0x5'))(_0x1995('0x6'));config[_0x1995('0x7')]=_[_0x1995('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x1995('0x7')]));function emit(_0x2ca40f,_0x1a66c5,_0x263403){io['to'](_0x2ca40f)[_0x1995('0x9')](_0x1a66c5,_0x263403);}var headers={'Content-Type':_0x1995('0xa'),'Accept':_0x1995('0xa')};function getTicket(_0x8a297a,_0x5ca7f3,_0x3241e9,_0x4437f8,_0x1bed41){logger['info'](_0x1995('0xb'));return request({'uri':util[_0x1995('0xc')](_0x1995('0xd'),_0x8a297a[_0x1995('0xe')]),'method':_0x1995('0xf'),'body':{'ticket':_[_0x1995('0x10')]({'requester_id':_0x3241e9['id'],'submitter_id':_0x5ca7f3?_0x5ca7f3['id']:undefined,'assignee_id':_0x5ca7f3?_0x5ca7f3['id']:undefined,'tags':getTags(_0x4437f8[_0x1995('0x11')],_0x1995('0x12')),'subject':intUtil[_0x1995('0x13')](_0x4437f8[_0x1995('0x14')],_0x1bed41,'\x20'),'description':intUtil[_0x1995('0x13')](_0x4437f8[_0x1995('0x15')],_0x1bed41,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x4437f8['Descriptions'],_0x1bed41,'\x0a')}},getCustomFields(_0x4437f8[_0x1995('0x16')],_0x1bed41))}})[_0x1995('0x17')](function(_0x8206cf){logger[_0x1995('0x18')](_0x1995('0x19'));return _0x8206cf[_0x1995('0x1a')];});}function getUser(_0x5a8448,_0x278c87){if(intUtil['validateEmail'](_0x278c87)){logger['info'](_0x1995('0x1b'),_0x278c87);return request({'uri':util[_0x1995('0xc')](_0x1995('0x1c'),_0x5a8448[_0x1995('0xe')]),'qs':{'query':util[_0x1995('0xc')](_0x1995('0x1d'),_0x278c87)}})[_0x1995('0x17')](function(_0xc4b25d){if(_0xc4b25d[_0x1995('0x1e')]){logger[_0x1995('0x18')](_0x1995('0x1f'));return _[_0x1995('0x20')](_0xc4b25d[_0x1995('0x21')],{'email':_0x278c87,'role':_0x1995('0x22')});}else{logger[_0x1995('0x18')](_0x1995('0x23'));return request({'uri':util[_0x1995('0xc')](_0x1995('0x24'),_0x5a8448[_0x1995('0xe')])})['then'](function(_0x29e7e3){logger[_0x1995('0x18')](_0x1995('0x25'));return _0x29e7e3[_0x1995('0x26')];});}});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x1995('0xc')](_0x1995('0x24'),_0x5a8448[_0x1995('0xe')])})[_0x1995('0x17')](function(_0x3d3022){logger[_0x1995('0x18')](_0x1995('0x25'));return _0x3d3022['user'];});}}function getEndUser(_0x6d7732,_0x3dac44,_0x3b0cb2){logger[_0x1995('0x18')](_0x1995('0x27'),_0x3b0cb2);return request({'uri':util[_0x1995('0xc')](_0x1995('0x1c'),_0x6d7732[_0x1995('0xe')]),'qs':{'query':util[_0x1995('0xc')](_0x1995('0x28'),_0x3b0cb2)}})['then'](function(_0xdcb561){var _0x21a184;if(_0xdcb561[_0x1995('0x21')][_0x1995('0x29')]){_0xdcb561[_0x1995('0x21')]=_[_0x1995('0x2a')](_0xdcb561['results'],{'suspended':![],'role':_0x1995('0x2b')});if(_0xdcb561[_0x1995('0x21')][_0x1995('0x29')]){_0x21a184=_[_0x1995('0x2c')](_0xdcb561[_0x1995('0x21')]);}}if(_0x21a184){logger[_0x1995('0x18')](_0x1995('0x2d'));return _0x21a184;}else{logger[_0x1995('0x18')](_0x1995('0x2e'));return request({'uri':util['format']('%s/users.json',_0x6d7732[_0x1995('0xe')]),'method':'POST','body':{'user':{'role':_0x1995('0x2b'),'name':util[_0x1995('0xc')]('Caller\x20-\x20%s',_0x3dac44||_0x3b0cb2),'phone':_0x3b0cb2}}})[_0x1995('0x17')](function(_0x2a4db1){logger[_0x1995('0x18')](_0x1995('0x2f'));return _0x2a4db1[_0x1995('0x26')];});}});}function getAuth(_0x30bd8d){var _0x2b5c87;if(_0x30bd8d[_0x1995('0x30')]===_0x1995('0x31')){_0x2b5c87=util['format']('%s:%s',_0x30bd8d[_0x1995('0x32')],_0x30bd8d[_0x1995('0x31')]);}else if(_0x30bd8d[_0x1995('0x30')]===_0x1995('0x33')){_0x2b5c87=util['format'](_0x1995('0x34'),_0x30bd8d[_0x1995('0x32')],_0x30bd8d[_0x1995('0x33')]);}return util[_0x1995('0xc')](_0x1995('0x35'),new Buffer(_0x2b5c87)['toString'](_0x1995('0x36')));}function request(_0x2ec360){logger['debug'](_0x1995('0x37'),JSON[_0x1995('0x38')](_0x2ec360));return rp(_[_0x1995('0x8')](_0x2ec360,{'method':_0x1995('0x39'),'headers':headers,'json':!![]}));}function getTags(_0xdec0da,_0x4cea69){var _0x307350=[];if(_0xdec0da&&_0xdec0da[_0x1995('0x29')]>0x0){_0x307350=_[_0x1995('0x3a')](_0xdec0da,_0x4cea69);}return _0x307350;}function getCustomFields(_0x8f1303,_0x1bf9ae){var _0x5317e4=[];var _0x5b5464={'custom_fields':[]};if(_0x8f1303[_0x1995('0x29')]>0x0){_[_0x1995('0x3b')](_0x8f1303,function(_0x424108){if(_[_0x1995('0x3c')]([_0x1995('0x3d'),_0x1995('0x3e')],_0x424108['type'])&&_0x424108[_0x1995('0x3f')]&&!_0x424108[_0x1995('0x40')]){_0x5b5464[_0x424108[_0x1995('0x3f')][_0x1995('0x41')]()]=_0x424108[_0x1995('0x42')][_0x1995('0x43')]();}else if(_[_0x1995('0x3c')]([_0x1995('0x3d'),'picklist'],_0x424108['type'])&&_0x424108[_0x1995('0x44')]&&_0x424108[_0x1995('0x40')]){_0x5b5464[_0x1995('0x45')][_0x1995('0x46')]({'id':_0x424108[_0x1995('0x44')],'value':_0x424108['content'][_0x1995('0x43')]()});}else if(_0x424108[_0x1995('0x47')]===_0x1995('0x48')&&_0x424108['variableName']&&_0x424108[_0x1995('0x44')]&&_0x424108[_0x1995('0x40')]){_0x1bf9ae[_0x424108[_0x1995('0x49')]]&&_0x5b5464[_0x1995('0x45')][_0x1995('0x46')]({'id':_0x424108[_0x1995('0x44')],'value':_0x1bf9ae[_0x424108[_0x1995('0x49')]][_0x1995('0x43')]()});}else if(_0x424108[_0x1995('0x47')]===_0x1995('0x4a')&&_0x424108[_0x1995('0x4b')]&&_0x424108[_0x1995('0x4b')][_0x1995('0x12')]&&_0x424108[_0x1995('0x44')]&&_0x424108[_0x1995('0x40')]){_0x1bf9ae[_0x424108[_0x1995('0x4b')]['name'][_0x1995('0x41')]()]&&_0x5b5464[_0x1995('0x45')][_0x1995('0x46')]({'id':_0x424108[_0x1995('0x44')],'value':_0x1bf9ae[_0x424108[_0x1995('0x4b')][_0x1995('0x12')][_0x1995('0x41')]()][_0x1995('0x43')]()});}});}return _0x5b5464;}exports[_0x1995('0x4c')]=function(_0x3bdd12,_0x105ef7,_0x50ff43,_0x3a90e5,_0xd97b92,_0x2559d8){var _0x22b1f9,_0x5d2425;_0x2559d8[_0x1995('0xe')]=intUtil[_0x1995('0x4d')](_0x2559d8[_0x1995('0xe')]);_0x2559d8[_0x1995('0x4e')]=intUtil[_0x1995('0x4d')](_0x2559d8[_0x1995('0x4e')]);if(_0xd97b92&&_0xd97b92[_0x1995('0x4f')]){logger[_0x1995('0x18')](_0x1995('0x50'),_0x1995('0x51'));_0x105ef7[_0x1995('0x52')]=util[_0x1995('0xc')](_0x1995('0x53'),_0x2559d8['serverUrl'],_0x105ef7['uniqueid'],md5(_0x105ef7['uniqueid']));}else{_0x105ef7[_0x1995('0x52')]='';}headers['Authorization']=getAuth(_0x2559d8);return getUser(_0x2559d8,_0x3a90e5[_0x1995('0x54')])[_0x1995('0x17')](function(_0x2754ea){_0x22b1f9=_0x2754ea;logger[_0x1995('0x18')](_0x1995('0x55'),_0x22b1f9['id']);return getEndUser(_0x2559d8,_0x105ef7[_0x1995('0x56')],_0x105ef7['calleridnum']);})[_0x1995('0x17')](function(_0x4254c4){_0x5d2425=_0x4254c4;logger[_0x1995('0x18')](_0x1995('0x57'),_0x5d2425['id']);return getTicket(_0x2559d8,_0x22b1f9,_0x5d2425,_0x50ff43,_0x105ef7);})[_0x1995('0x17')](function(_0x2d43e7){if(_0x2d43e7){logger['info'](_0x1995('0x58'),_0x2d43e7['id']);switch(_0x2559d8[_0x1995('0x47')]){case _0x1995('0x59'):logger['info']('[QUEUE]',_0x1995('0x5a'));return request({'uri':util[_0x1995('0xc')](_0x1995('0x5b'),_0x2559d8[_0x1995('0xe')],_0x22b1f9['id'],_0x2d43e7['id']),'method':_0x1995('0xf')});case _0x1995('0x5c'):logger[_0x1995('0x18')](_0x1995('0x50'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x1995('0x5d'),_0x3a90e5[_0x1995('0x12')]),'trigger:browser:url',{'uri':util[_0x1995('0xc')](_0x1995('0x5e'),_0x2559d8[_0x1995('0xe')]['replace'](_0x1995('0x5f'),''),_0x2d43e7['id'])});break;default:logger[_0x1995('0x60')]('[QUEUE]','Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x1995('0x61')](function(_0x5423a8){logger['error']('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x5423a8,{'showHidden':!![],'depth':null}));});};exports[_0x1995('0x62')]=function(_0xcf2b23,_0x4dc64e,_0x1fb094,_0x3996c2,_0x1daa7c,_0x2625e6,_0x449792){var _0x5abc81,_0xcef449;_0x2625e6[_0x1995('0xe')]=intUtil['stripTrailingSlash'](_0x2625e6[_0x1995('0xe')]);_0x2625e6[_0x1995('0x4e')]=intUtil[_0x1995('0x4d')](_0x2625e6[_0x1995('0x4e')]);if(_0x449792&&_0x449792[_0x1995('0x63')]&&_0x449792['recordingFormat']!=='none'){logger[_0x1995('0x18')](_0x1995('0x64'),'Recording\x20is\x20enabled!');_0x4dc64e[_0x1995('0x52')]=util[_0x1995('0xc')](_0x1995('0x53'),_0x2625e6['serverUrl'],_0x4dc64e[_0x1995('0x65')],md5(_0x4dc64e[_0x1995('0x65')]));}headers[_0x1995('0x66')]=getAuth(_0x2625e6);return getUser(_0x2625e6,_0x3996c2[_0x1995('0x54')])[_0x1995('0x17')](function(_0x44ba23){_0x5abc81=_0x44ba23;logger['info'](_0x1995('0x55'),_0x5abc81['id']);return getEndUser(_0x2625e6,_0x4dc64e[_0x1995('0x67')],_0x4dc64e[_0x1995('0x68')]);})[_0x1995('0x17')](function(_0x20de7b){_0xcef449=_0x20de7b;logger[_0x1995('0x18')](_0x1995('0x57'),_0xcef449['id']);return getTicket(_0x2625e6,_0x5abc81,_0xcef449,_0x1fb094,_0x4dc64e);})['then'](function(_0x418a3e){if(_0x418a3e){logger['info'](_0x1995('0x58'),_0x418a3e['id']);switch(_0x2625e6[_0x1995('0x47')]){case _0x1995('0x59'):logger[_0x1995('0x18')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x1995('0xc')](_0x1995('0x5b'),_0x2625e6[_0x1995('0xe')],_0x5abc81['id'],_0x418a3e['id']),'method':_0x1995('0xf')});case _0x1995('0x5c'):logger[_0x1995('0x18')](_0x1995('0x64'),_0x1995('0x69'));emit(util[_0x1995('0xc')](_0x1995('0x5d'),_0x3996c2[_0x1995('0x12')]),_0x1995('0x6a'),{'uri':util['format'](_0x1995('0x5e'),_0x2625e6['remoteUri'][_0x1995('0x6b')]('/api/v2',''),_0x418a3e['id'])});break;default:logger[_0x1995('0x60')](_0x1995('0x64'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x1995('0x61')](function(_0x8c85bf){logger[_0x1995('0x60')](_0x1995('0x6c'),util[_0x1995('0x6d')](_0x8c85bf,{'showHidden':!![],'depth':null}));});};exports[_0x1995('0x6e')]=function(_0x102977,_0x54809d,_0x2c1c33,_0x27cab,_0x3a7dc5,_0x25a5ad){var _0x122215,_0x306fe8;_0x25a5ad['remoteUri']=intUtil[_0x1995('0x4d')](_0x25a5ad[_0x1995('0xe')]);_0x25a5ad[_0x1995('0x4e')]=intUtil['stripTrailingSlash'](_0x25a5ad[_0x1995('0x4e')]);if(_0x3a7dc5&&_0x3a7dc5[_0x1995('0x4f')]){logger['info']('['+_0x54809d[_0x1995('0x6f')][_0x1995('0x70')]()+']','Recording\x20is\x20enabled!');_0x54809d[_0x1995('0x52')]=util['format'](_0x1995('0x53'),_0x25a5ad[_0x1995('0x4e')],_0x54809d['uniqueid'],md5(_0x54809d['uniqueid']));}else{_0x54809d['recordingURL']='';}headers[_0x1995('0x66')]=getAuth(_0x25a5ad);return getUser(_0x25a5ad)[_0x1995('0x17')](function(_0x5098c1){_0x122215=_0x5098c1;logger[_0x1995('0x18')](_0x1995('0x55'),_0x122215['id']);return getEndUser(_0x25a5ad,_0x54809d[_0x1995('0x56')],_0x54809d[_0x1995('0x71')]);})['then'](function(_0x2d65fb){_0x306fe8=_0x2d65fb;logger[_0x1995('0x18')](_0x1995('0x57'),_0x306fe8['id']);return getTicket(_0x25a5ad,_0x122215,_0x306fe8,_0x2c1c33,_0x54809d);})[_0x1995('0x17')](function(_0x46fd2b){if(_0x46fd2b){logger['info'](_0x1995('0x58'),_0x46fd2b['id']);}})['catch'](function(_0x5ad7d7){logger[_0x1995('0x60')]('['+_0x54809d[_0x1995('0x6f')][_0x1995('0x70')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0x1995('0x6d')](_0x5ad7d7,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 072a0e7..87e67c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0b9=['zoho.eu','com','calleridnum','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','[OUTBOUND]','/api/voice/recordings/','email','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Call\x20ID\x20is:','toUpperCase','calleridname','lodash','util','./util','moment','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','redis','defaults','localhost','socket.io-emitter','emit','debug','[HTTP]','stringify','length','forEach','string','type','idField','content','variable','variableName','toString','customVariable','Variable','name','toLowerCase','split','isNil','access_token','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','refreshToken','clientId','clientSecret','refresh_token','seconds','error','Failing\x20creating\x20the\x20access_token','Search\x20user','GET','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','then','users','isArrayLikeObject','findIndex','info','Using\x20the\x20admin\x20account!','profile','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','catch','data','enduserType','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','last_name','details','Error:\x20','log','CREATE\x20ERROR','moduleSearch','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','nothing','contact','lead','Creating\x20new\x20call...','Owner','Subject','getString','Subjects','Description','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','Leads','What_Id','$se_module','Call_Duration','utc','talktime','format','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','starttime','lastevent','called','Call_Result','Called','complete','Answered','rejected','abandoned','Abandoned','timeout','Call_Start_Time','outbound','agentcalledAt','Call_Type','Inbound','merge','Fields','code','Call\x20created!','err','stack','queue','stripTrailingSlash','host','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','/downloads?type=uniqueid&token='];(function(_0x23ec06,_0x561142){var _0x2831d4=function(_0x3802bc){while(--_0x3802bc){_0x23ec06['push'](_0x23ec06['shift']());}};_0x2831d4(++_0x561142);}(_0xb0b9,0x1f3));var _0x9b0b=function(_0x55cb41,_0xcfe1a4){_0x55cb41=_0x55cb41-0x0;var _0x3ca743=_0xb0b9[_0x55cb41];return _0x3ca743;};'use strict';var _=require(_0x9b0b('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0x9b0b('0x1'));var intUtil=require(_0x9b0b('0x2'));var moment=require(_0x9b0b('0x3'));var Redis=require(_0x9b0b('0x4'));var BPromise=require(_0x9b0b('0x5'));var config=require(_0x9b0b('0x6'));var logger=require(_0x9b0b('0x7'))(_0x9b0b('0x8'));config[_0x9b0b('0x9')]=_[_0x9b0b('0xa')](config[_0x9b0b('0x9')],{'host':_0x9b0b('0xb'),'port':0x18eb});var io=require(_0x9b0b('0xc'))(new Redis(config[_0x9b0b('0x9')]));function emit(_0x4894ae,_0x537d6e,_0xf14325){io['to'](_0x4894ae)[_0x9b0b('0xd')](_0x537d6e,_0xf14325);}function request(_0x22e8bd){logger[_0x9b0b('0xe')](_0x9b0b('0xf'),JSON[_0x9b0b('0x10')](_0x22e8bd));return rp(_0x22e8bd);}function getCustomFields(_0x5713db,_0x426bc4){var _0x44c7e0={};if(_0x5713db[_0x9b0b('0x11')]>0x0){_[_0x9b0b('0x12')](_0x5713db,function(_0x5277fb){if(_['includes']([_0x9b0b('0x13'),'picklist'],_0x5277fb[_0x9b0b('0x14')])&&_0x5277fb['idField']){_0x44c7e0[_0x5277fb[_0x9b0b('0x15')]]=_0x5277fb[_0x9b0b('0x16')]['toString']();}else if(_0x5277fb['type']===_0x9b0b('0x17')&&_0x5277fb[_0x9b0b('0x18')]&&_0x5277fb[_0x9b0b('0x15')]&&_0x426bc4[_0x5277fb['variableName']]){_0x44c7e0[_0x5277fb[_0x9b0b('0x15')]]=_0x426bc4[_0x5277fb[_0x9b0b('0x18')]][_0x9b0b('0x19')]();}else if(_0x5277fb[_0x9b0b('0x14')]===_0x9b0b('0x1a')&&_0x5277fb[_0x9b0b('0x1b')]&&_0x5277fb[_0x9b0b('0x1b')][_0x9b0b('0x1c')]&&_0x5277fb[_0x9b0b('0x15')]&&_0x426bc4[_0x5277fb[_0x9b0b('0x1b')][_0x9b0b('0x1c')][_0x9b0b('0x1d')]()]){_0x44c7e0[_0x5277fb[_0x9b0b('0x15')]]=_0x426bc4[_0x5277fb[_0x9b0b('0x1b')]['name'][_0x9b0b('0x1d')]()][_0x9b0b('0x19')]();}});}return _0x44c7e0;}function getName(_0x7cf37c){if(_0x7cf37c['indexOf']('\x20')>0x0){var _0x363dbc=_0x7cf37c[_0x9b0b('0x1e')](/ (.+)/);if(_0x363dbc[0x1]){return _0x363dbc;}}return[_0x7cf37c,_0x7cf37c];}var accountsTokens={};function getAccessToken(_0x4067d3){return new Promise(function(_0x565d35,_0x3f19ae){if(!_[_0x9b0b('0x1f')](accountsTokens[_0x4067d3['id']])&&!_[_0x9b0b('0x1f')](accountsTokens[_0x4067d3['id']][_0x9b0b('0x20')])){if(moment()['isBefore'](accountsTokens[_0x4067d3['id']][_0x9b0b('0x21')])){_0x565d35(accountsTokens[_0x4067d3['id']][_0x9b0b('0x20')]);}}var _0x499d4e;switch(_0x4067d3[_0x9b0b('0x22')]){case'US':_0x499d4e=_0x9b0b('0x23');break;case'AU':_0x499d4e=_0x9b0b('0x24');break;case'EU':_0x499d4e=_0x9b0b('0x25');break;case'IN':_0x499d4e=_0x9b0b('0x26');break;case'CN':_0x499d4e=_0x9b0b('0x27');break;default:_0x499d4e=_0x9b0b('0x25');break;}var _0x322a0b={'method':_0x9b0b('0x28'),'uri':_0x499d4e+'/oauth/v2/token','qs':{'refresh_token':_0x4067d3[_0x9b0b('0x29')],'client_id':_0x4067d3[_0x9b0b('0x2a')],'client_secret':_0x4067d3[_0x9b0b('0x2b')],'grant_type':_0x9b0b('0x2c')},'json':!![]};return rp(_0x322a0b)['then'](function(_0x217ac4){accountsTokens[_0x4067d3['id']]={'access_token':_0x217ac4[_0x9b0b('0x20')],'expires_in':moment()['add'](_0x217ac4[_0x9b0b('0x21')],_0x9b0b('0x2d'))};_0x565d35(_0x217ac4[_0x9b0b('0x20')]);})['catch'](function(_0x2cfe21){logger[_0x9b0b('0x2e')](_0x9b0b('0x2f'),_0x2cfe21['stack']);_0x3f19ae(_0x2cfe21);});});}function getUser(_0x2575d8,_0x32668d,_0x21b533,_0x22ce12){logger['info'](_0x9b0b('0x30'));return request({'method':_0x9b0b('0x31'),'uri':util['format'](_0x9b0b('0x32'),_0x32668d),'qs':{'type':_0x9b0b('0x33')},'headers':{'Authorization':_0x9b0b('0x34')+_0x2575d8},'json':!![]})[_0x9b0b('0x35')](function(_0x3b0d5c){if(_0x3b0d5c[_0x9b0b('0x36')]){var _0xfd6ce=-0x1;if(_[_0x9b0b('0x37')](_0x3b0d5c['users'])){if(!_['isNil'](_0x22ce12)){_0xfd6ce=_[_0x9b0b('0x38')](_0x3b0d5c['users'],function(_0x2e3e91){return _0x2e3e91['email']===_0x22ce12;});}if(_0xfd6ce>=0x0){logger['info']('Agent\x20found!');}else{logger[_0x9b0b('0x39')](_0x9b0b('0x3a'));_0xfd6ce=_[_0x9b0b('0x38')](_0x3b0d5c[_0x9b0b('0x36')],function(_0x22f666){return _0x22f666[_0x9b0b('0x3b')][_0x9b0b('0x1c')]===_0x9b0b('0x3c');});}return _0x3b0d5c[_0x9b0b('0x36')][_0xfd6ce];}else{if(_0x3b0d5c[_0x9b0b('0x3d')][_0x9b0b('0x3b')][_0x9b0b('0x1c')]===_0x9b0b('0x3c')){logger['info'](_0x9b0b('0x3a'));user=_0x3b0d5c[_0x9b0b('0x3d')];return user;}else{logger[_0x9b0b('0x2e')](_0x9b0b('0x3e'),JSON[_0x9b0b('0x10')](_0x3b0d5c));throw new Error(_0x9b0b('0x3f')+JSON[_0x9b0b('0x10')](_0x3b0d5c));}}}else{logger[_0x9b0b('0x2e')](_0x9b0b('0x3e'),JSON[_0x9b0b('0x10')](_0x3b0d5c));throw new Error(_0x9b0b('0x3f')+JSON[_0x9b0b('0x10')](_0x3b0d5c));}})[_0x9b0b('0x40')](function(_0x561942){console['error'](_0x561942);});}function getZohoUser(_0x12a5c4,_0x8cfe7c){return new BPromise(function(_0xe60dec,_0x141563){request(_0x12a5c4)[_0x9b0b('0x35')](function(_0x509daf){var _0x117f22=null;if(_0x509daf){_0x117f22=_0x509daf[_0x9b0b('0x41')][0x0];_0x117f22[_0x9b0b('0x42')]=_0x8cfe7c;}_0xe60dec(_0x117f22);})[_0x9b0b('0x40')](function(_0x4d32b5){_0x141563(_0x4d32b5);});});}function createEndUser(_0x5ac75f,_0x1fffc4,_0x509632,_0x223dab,_0x316d86,_0x17a764){var _0x509632=getName(_0x509632);return request({'method':_0x9b0b('0x28'),'uri':_0x9b0b('0x43')+_0x1fffc4+_0x9b0b('0x44')+_[_0x9b0b('0x45')](_0x17a764[_0x9b0b('0x46')])+'s','body':{'data':[{'Last_Name':_0x509632[0x1],'First_Name':_0x509632[0x0],'Phone':_0x223dab,'Owner':{'name':!_[_0x9b0b('0x1f')](_0x316d86[_0x9b0b('0x47')][_0x9b0b('0x1c')])?_0x316d86[_0x9b0b('0x47')][_0x9b0b('0x1c')]:!_[_0x9b0b('0x1f')](_0x316d86['first_name'])?_0x316d86['first_name']+'\x20'+_0x316d86['last_name']:_0x316d86[_0x9b0b('0x48')],'id':_0x316d86['id']}}]},'headers':{'Authorization':_0x9b0b('0x34')+_0x5ac75f},'json':!![]})[_0x9b0b('0x35')](function(_0x424d9b){if(_0x424d9b&&_0x424d9b[_0x9b0b('0x41')][0x0]['code']==='SUCCESS'){var _0x20ec55=_0x424d9b[_0x9b0b('0x41')][0x0][_0x9b0b('0x49')];_0x20ec55[_0x9b0b('0x42')]=_['startCase'](_0x17a764[_0x9b0b('0x46')])+'s';return _0x20ec55;}logger[_0x9b0b('0x2e')](_0x9b0b('0x3e'),JSON[_0x9b0b('0x10')](data));throw new Error(_0x9b0b('0x4a')+JSON['stringify'](data));})[_0x9b0b('0x40')](function(_0x1d9b96){console[_0x9b0b('0x4b')](_0x9b0b('0x4c'),_0x1d9b96);});}function getEndUser(_0x14e8a2,_0x1a4dbb,_0x444d95,_0x37a27a,_0x4e5fac,_0x512ecc,_0x5bfa12){var _0x2b7938={'method':_0x9b0b('0x31'),'uri':'','headers':{'Authorization':_0x9b0b('0x34')+_0x14e8a2},'json':!![]};switch(_0x5bfa12[_0x9b0b('0x4d')]){case _0x9b0b('0x4e'):_0x2b7938[_0x9b0b('0x4f')]=_0x9b0b('0x43')+_0x1a4dbb+_0x9b0b('0x50')+_0x4e5fac+'))';return getZohoUser(_0x2b7938,_0x9b0b('0x51'))[_0x9b0b('0x35')](function(_0x1c83e1){if(_0x1c83e1)return _0x1c83e1;_0x2b7938['uri']=_0x9b0b('0x43')+_0x1a4dbb+_0x9b0b('0x52')+_0x4e5fac+'))';return getZohoUser(_0x2b7938,'Leads')['then'](function(_0xd9410f){if(_0xd9410f)return _0xd9410f;if(_0x5bfa12[_0x9b0b('0x46')]!=_0x9b0b('0x53')){return createEndUser(_0x14e8a2,_0x1a4dbb,_0x37a27a,_0x4e5fac,_0x512ecc,_0x5bfa12);}else{return{};}});});break;case _0x9b0b('0x54'):_0x2b7938['uri']=_0x9b0b('0x43')+_0x1a4dbb+_0x9b0b('0x50')+_0x4e5fac+'))';return getZohoUser(_0x2b7938,_0x9b0b('0x51'))[_0x9b0b('0x35')](function(_0x21f4c1){if(_0x21f4c1)return _0x21f4c1;if(_0x5bfa12[_0x9b0b('0x46')]!=_0x9b0b('0x53')){return createEndUser(_0x14e8a2,_0x1a4dbb,_0x37a27a,_0x4e5fac,_0x512ecc,_0x5bfa12);}else{return{};}});break;case _0x9b0b('0x55'):_0x2b7938[_0x9b0b('0x4f')]='https://www.zohoapis.'+_0x1a4dbb+_0x9b0b('0x52')+_0x4e5fac+'))';return getZohoUser(_0x2b7938,'Leads')[_0x9b0b('0x35')](function(_0x5eb636){if(_0x5eb636)return _0x5eb636;if(_0x5bfa12['moduleCreate']!=_0x9b0b('0x53')){return createEndUser(_0x14e8a2,_0x1a4dbb,_0x37a27a,_0x4e5fac,_0x512ecc,_0x5bfa12);}else{return{};}});break;}}function getCall(_0x2238d1,_0x369752,_0x103281,_0x105503,_0x278fb1,_0x43a913,_0x495b3e,_0x559691){logger['info'](_0x9b0b('0x56'));var _0x250b06={};_0x250b06[_0x9b0b('0x57')]={'name':!_[_0x9b0b('0x1f')](_0x105503[_0x9b0b('0x47')][_0x9b0b('0x1c')])&&!_['isNil'](_0x105503[_0x9b0b('0x3b')][_0x9b0b('0x1c')])&&_0x105503['profile']['name']==='administrator'?_0x105503[_0x9b0b('0x47')][_0x9b0b('0x1c')]:!_['isNil'](_0x105503['first_name'])?_0x105503['first_name']+'\x20'+_0x105503[_0x9b0b('0x48')]:_0x105503[_0x9b0b('0x48')],'id':_0x105503['id']};_0x250b06[_0x9b0b('0x58')]=intUtil[_0x9b0b('0x59')](_0x43a913[_0x9b0b('0x5a')],_0x495b3e,'\x20');_0x250b06[_0x9b0b('0x5b')]=intUtil[_0x9b0b('0x59')](_0x43a913[_0x9b0b('0x5c')],_0x495b3e,'\x0a');if(_0x278fb1[_0x9b0b('0x42')]===_0x9b0b('0x51')){_0x250b06[_0x9b0b('0x5d')]={'name':!_['isNil'](_0x278fb1[_0x9b0b('0x5e')])?_0x278fb1[_0x9b0b('0x5e')]:!_['isNil'](_0x278fb1[_0x9b0b('0x5f')])?_0x278fb1[_0x9b0b('0x5f')]+'\x20'+_0x278fb1['Last_Name']:_0x278fb1[_0x9b0b('0x60')],'id':_0x278fb1['id']};}if(_0x278fb1[_0x9b0b('0x42')]===_0x9b0b('0x61')){_0x250b06[_0x9b0b('0x62')]={'name':!_[_0x9b0b('0x1f')](_0x278fb1['Full_Name'])?_0x278fb1[_0x9b0b('0x5e')]:!_[_0x9b0b('0x1f')](_0x278fb1[_0x9b0b('0x5f')])?_0x278fb1[_0x9b0b('0x5f')]+'\x20'+_0x278fb1['Last_Name']:_0x278fb1['Last_Name'],'id':_0x278fb1['id']};_0x250b06[_0x9b0b('0x63')]=_[_0x9b0b('0x45')](_0x278fb1['enduserType']);}if(_0x495b3e['talktime']){_0x250b06[_0x9b0b('0x64')]=moment[_0x9b0b('0x65')](parseInt(_0x495b3e[_0x9b0b('0x66')])*0x3e8)[_0x9b0b('0x67')](_0x9b0b('0x68'));}else if(_0x495b3e[_0x9b0b('0x69')]&&_0x495b3e[_0x9b0b('0x6a')]){_0x250b06[_0x9b0b('0x64')]=moment['utc'](moment(_0x495b3e[_0x9b0b('0x6a')],_0x9b0b('0x6b'))[_0x9b0b('0x6c')](moment(_0x495b3e[_0x9b0b('0x6d')],'YYYY-MM-DDTHH:mm:ss')))[_0x9b0b('0x67')]('mm:ss');}switch(_0x495b3e[_0x9b0b('0x6e')]){case _0x9b0b('0x6f'):_0x250b06[_0x9b0b('0x70')]=_0x9b0b('0x71');break;case _0x9b0b('0x72'):case'connect':_0x250b06[_0x9b0b('0x70')]=_0x9b0b('0x73');break;case _0x9b0b('0x74'):_0x250b06[_0x9b0b('0x70')]='Rejected';break;case _0x9b0b('0x75'):_0x250b06[_0x9b0b('0x70')]=_0x9b0b('0x76');break;case _0x9b0b('0x77'):_0x250b06[_0x9b0b('0x70')]='Timeout';default:}_0x250b06[_0x9b0b('0x78')]=(_0x559691===_0x9b0b('0x79')?moment(_0x495b3e['starttime'])[_0x9b0b('0x67')](_0x9b0b('0x6b')):moment(_0x495b3e[_0x9b0b('0x7a')])[_0x9b0b('0x67')](_0x9b0b('0x6b')))||moment()[_0x9b0b('0x67')](_0x9b0b('0x6b'));_0x250b06[_0x9b0b('0x7b')]=_0x559691||_0x9b0b('0x7c');_0x250b06=_[_0x9b0b('0x7d')](_0x250b06,getCustomFields(_0x43a913[_0x9b0b('0x7e')],_0x495b3e));return request({'method':_0x9b0b('0x28'),'uri':_0x9b0b('0x43')+_0x369752+'/crm/v2/Calls','headers':{'Authorization':_0x9b0b('0x34')+_0x2238d1},'body':{'data':[_0x250b06]},'json':!![]})[_0x9b0b('0x35')](function(_0x5dd73b){if(_0x5dd73b&&_0x5dd73b['data'][0x0][_0x9b0b('0x7f')]==='SUCCESS'){logger[_0x9b0b('0x39')](_0x9b0b('0x80'));return{'id':_0x5dd73b[_0x9b0b('0x41')][0x0][_0x9b0b('0x49')]['id']};}})[_0x9b0b('0x40')](function(_0x404729){logger['info'](_0x9b0b('0x81'),_0x404729[_0x9b0b('0x82')]);console[_0x9b0b('0x4b')](_0x9b0b('0x81'),_0x404729);});}exports[_0x9b0b('0x83')]=function(_0x732298,_0x299764,_0x2341c3,_0x2ef8ad,_0x3022ff,_0x206e35){var _0x4479cf,_0x26f066,_0x5c58a5;_0x206e35['host']=intUtil[_0x9b0b('0x84')](_0x206e35[_0x9b0b('0x85')]);_0x206e35[_0x9b0b('0x86')]=intUtil[_0x9b0b('0x84')](_0x206e35[_0x9b0b('0x86')]);if(_0x3022ff&&_0x3022ff[_0x9b0b('0x87')]){logger[_0x9b0b('0x39')](_0x9b0b('0x88'),_0x9b0b('0x89'));_0x299764[_0x9b0b('0x8a')]=_0x206e35[_0x9b0b('0x86')]+'/api/voice/recordings/'+_0x299764[_0x9b0b('0x8b')]+_0x9b0b('0x8c')+md5(_0x299764['uniqueid']);}else{_0x299764['recordingURL']='';}var _0x34ff91=_0x206e35[_0x9b0b('0x85')]===_0x9b0b('0x8d')?'eu':_0x9b0b('0x8e');return getAccessToken(_0x206e35)[_0x9b0b('0x35')](function(_0x3852ea){_0x5c58a5=_0x3852ea;return getUser(_0x5c58a5,_0x34ff91,_0x206e35,_0x2ef8ad['email']);})[_0x9b0b('0x35')](function(_0xf64360){_0x4479cf=_0xf64360;logger[_0x9b0b('0x39')]('The\x20User\x20ID\x20is:',_0x4479cf['id']);return getEndUser(_0x5c58a5,_0x34ff91,_0x206e35,_0x299764['calleridname'],_0x299764[_0x9b0b('0x8f')],_0x4479cf,_0x2341c3);})[_0x9b0b('0x35')](function(_0x206cb1){_0x26f066=_0x206cb1;return getCall(_0x5c58a5,_0x34ff91,_0x206e35,_0x4479cf,_0x26f066,_0x2341c3,_0x299764,_0x9b0b('0x7c'));})[_0x9b0b('0x35')](function(_0x2db4fc){if(_0x2db4fc){logger['info']('The\x20Call\x20ID\x20is:',_0x2db4fc['id']);logger['info']('[QUEUE]',_0x9b0b('0x90'));emit(util['format'](_0x9b0b('0x91'),_0x2ef8ad[_0x9b0b('0x1c')]),_0x9b0b('0x92'),{'uri':_0x9b0b('0x93')+_0x206e35[_0x9b0b('0x85')]+_0x9b0b('0x94')+_0x2db4fc['id']});}})[_0x9b0b('0x40')](function(_0x30637c){logger['error'](_0x9b0b('0x88'),JSON['stringify'](_0x30637c));});};exports[_0x9b0b('0x79')]=function(_0x20484b,_0xd8cb35,_0x9dcebe,_0x132612,_0x3152e6,_0x7e4a18,_0x32103e){var _0x553b52,_0xf5a3cc,_0xe502b;_0x7e4a18[_0x9b0b('0x85')]=intUtil['stripTrailingSlash'](_0x7e4a18[_0x9b0b('0x85')]);_0x7e4a18[_0x9b0b('0x86')]=intUtil['stripTrailingSlash'](_0x7e4a18['serverUrl']);if(_0x32103e&&_0x32103e[_0x9b0b('0x95')]&&_0x32103e[_0x9b0b('0x95')]!==_0x9b0b('0x96')){logger['info'](_0x9b0b('0x97'),_0x9b0b('0x89'));_0xd8cb35['recordingURL']=_0x7e4a18[_0x9b0b('0x86')]+_0x9b0b('0x98')+_0xd8cb35[_0x9b0b('0x8b')]+'/downloads?type=uniqueid&token='+md5(_0xd8cb35[_0x9b0b('0x8b')]);}var _0x1ddbb3=_0x7e4a18[_0x9b0b('0x85')]==='zoho.eu'?'eu':_0x9b0b('0x8e');return getAccessToken(_0x7e4a18)[_0x9b0b('0x35')](function(_0x563929){_0xe502b=_0x563929;return getUser(_0xe502b,_0x1ddbb3,_0x7e4a18,_0x132612[_0x9b0b('0x99')]);})[_0x9b0b('0x35')](function(_0x221873){_0x553b52=_0x221873;logger[_0x9b0b('0x39')](_0x9b0b('0x9a'),_0x553b52['id']);return getEndUser(_0xe502b,_0x1ddbb3,_0x7e4a18,_0xd8cb35[_0x9b0b('0x9b')],_0xd8cb35[_0x9b0b('0x9c')],_0x553b52,_0x9dcebe);})[_0x9b0b('0x35')](function(_0x40c624){_0xf5a3cc=_0x40c624;return getCall(_0xe502b,_0x1ddbb3,_0x7e4a18,_0x553b52,_0xf5a3cc,_0x9dcebe,_0xd8cb35,'Outbound');})[_0x9b0b('0x35')](function(_0x409ca1){if(_0x409ca1){logger[_0x9b0b('0x39')](_0x9b0b('0x9d'),_0x409ca1['id']);logger[_0x9b0b('0x39')](_0x9b0b('0x97'),_0x9b0b('0x90'));emit(util[_0x9b0b('0x67')](_0x9b0b('0x91'),_0x132612[_0x9b0b('0x1c')]),'trigger:browser:url',{'uri':_0x9b0b('0x93')+_0x7e4a18[_0x9b0b('0x85')]+'/crm/EntityInfo.do?module=Calls&id='+_0x409ca1['id']});}})[_0x9b0b('0x40')](function(_0x1329bc){logger[_0x9b0b('0x2e')]('[OUTBOUND]',JSON['stringify'](_0x1329bc));});};exports['unmanaged']=function(_0x4ee992,_0x3b6ccc,_0x2cbb96,_0x384052,_0x3bece4,_0x1050ec){var _0x537180,_0x153311,_0x194163;_0x1050ec[_0x9b0b('0x85')]=intUtil[_0x9b0b('0x84')](_0x1050ec[_0x9b0b('0x85')]);_0x1050ec['serverUrl']=intUtil['stripTrailingSlash'](_0x1050ec[_0x9b0b('0x86')]);if(_0x3bece4&&_0x3bece4[_0x9b0b('0x87')]){logger[_0x9b0b('0x39')]('['+_0x3b6ccc[_0x9b0b('0x6e')][_0x9b0b('0x9e')]()+']','Recording\x20is\x20enabled!');_0x3b6ccc[_0x9b0b('0x8a')]=_0x1050ec['serverUrl']+_0x9b0b('0x98')+_0x3b6ccc[_0x9b0b('0x8b')]+_0x9b0b('0x8c')+md5(_0x3b6ccc[_0x9b0b('0x8b')]);}else{_0x3b6ccc['recordingURL']='';}var _0x93cf44=_0x1050ec['host']==='zoho.eu'?'eu':_0x9b0b('0x8e');return getAccessToken(_0x1050ec)[_0x9b0b('0x35')](function(_0x177486){_0x194163=_0x177486;return getUser(_0x194163,_0x93cf44,_0x1050ec);})['then'](function(_0x5d4ed2){_0x537180=_0x5d4ed2;logger[_0x9b0b('0x39')](_0x9b0b('0x9a'),_0x537180['id']);return getEndUser(_0x194163,_0x93cf44,_0x1050ec,_0x3b6ccc[_0x9b0b('0x9f')],_0x3b6ccc['calleridnum'],_0x537180,_0x2cbb96);})[_0x9b0b('0x35')](function(_0x1b63a8){_0x153311=_0x1b63a8;return getCall(_0x194163,_0x93cf44,_0x1050ec,_0x537180,_0x153311,_0x2cbb96,_0x3b6ccc,'Inbound');})[_0x9b0b('0x35')](function(_0x263177){if(_0x263177){logger[_0x9b0b('0x39')](_0x9b0b('0x9d'),_0x263177['id']);}})[_0x9b0b('0x40')](function(_0xad8bd0){logger[_0x9b0b('0x2e')]('['+_0x3b6ccc[_0x9b0b('0x6e')][_0x9b0b('0x9e')]()+']',JSON[_0x9b0b('0x10')](_0xad8bd0));});};
\ No newline at end of file
+var _0x518b=['catch','error','Failing\x20creating\x20the\x20access_token','stack','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','users','isArrayLikeObject','findIndex','info','Using\x20the\x20admin\x20account!','Administrator','user','profile','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','enduserType','POST','https://www.zohoapis.','startCase','moduleCreate','role','first_name','last_name','Zoho-oauthtoken\x20','code','SUCCESS','data','The\x20failing\x20result\x20is','Error:\x20','log','CREATE\x20ERROR','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','uri','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','contact','nothing','lead','Owner','administrator','getString','Subjects','Description','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','What_Id','$se_module','talktime','Call_Duration','utc','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','called','Call_Result','Called','complete','connect','Answered','Rejected','abandoned','Abandoned','timeout','Call_Start_Time','outbound','starttime','agentcalledAt','Inbound','merge','Fields','Call\x20created!','details','err','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','email','The\x20User\x20ID\x20is:','calleridname','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','recordingFormat','none','[OUTBOUND]','Outbound','trigger:browser:url','/crm/EntityInfo.do?module=Calls&id=','unmanaged','lastevent','toUpperCase','calleridnum','lodash','request-promise','md5','util','moment','ioredis','../../../../config/environment','zoho','redis','socket.io-emitter','emit','debug','[HTTP]','stringify','length','string','picklist','type','idField','toString','variable','variableName','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.com.cn','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','then','add','seconds'];(function(_0x2e54ab,_0x1d286f){var _0x16cacc=function(_0x3e004e){while(--_0x3e004e){_0x2e54ab['push'](_0x2e54ab['shift']());}};_0x16cacc(++_0x1d286f);}(_0x518b,0x6e));var _0xb518=function(_0x594497,_0x3a4774){_0x594497=_0x594497-0x0;var _0x58a661=_0x518b[_0x594497];return _0x58a661;};'use strict';var _=require(_0xb518('0x0'));var rp=require(_0xb518('0x1'));var md5=require(_0xb518('0x2'));var util=require(_0xb518('0x3'));var intUtil=require('./util');var moment=require(_0xb518('0x4'));var Redis=require(_0xb518('0x5'));var BPromise=require('bluebird');var config=require(_0xb518('0x6'));var logger=require('../../../../config/logger')(_0xb518('0x7'));config[_0xb518('0x8')]=_['defaults'](config[_0xb518('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xb518('0x9'))(new Redis(config[_0xb518('0x8')]));function emit(_0x5362b6,_0x1b2deb,_0x1a58f0){io['to'](_0x5362b6)[_0xb518('0xa')](_0x1b2deb,_0x1a58f0);}function request(_0x23f0ba){logger[_0xb518('0xb')](_0xb518('0xc'),JSON[_0xb518('0xd')](_0x23f0ba));return rp(_0x23f0ba);}function getCustomFields(_0x4da300,_0x4133f8){var _0x498ba4={};if(_0x4da300[_0xb518('0xe')]>0x0){_['forEach'](_0x4da300,function(_0x1d07bc){if(_['includes']([_0xb518('0xf'),_0xb518('0x10')],_0x1d07bc[_0xb518('0x11')])&&_0x1d07bc[_0xb518('0x12')]){_0x498ba4[_0x1d07bc[_0xb518('0x12')]]=_0x1d07bc['content'][_0xb518('0x13')]();}else if(_0x1d07bc['type']===_0xb518('0x14')&&_0x1d07bc['variableName']&&_0x1d07bc[_0xb518('0x12')]&&_0x4133f8[_0x1d07bc[_0xb518('0x15')]]){_0x498ba4[_0x1d07bc[_0xb518('0x12')]]=_0x4133f8[_0x1d07bc[_0xb518('0x15')]][_0xb518('0x13')]();}else if(_0x1d07bc['type']==='customVariable'&&_0x1d07bc[_0xb518('0x16')]&&_0x1d07bc[_0xb518('0x16')][_0xb518('0x17')]&&_0x1d07bc[_0xb518('0x12')]&&_0x4133f8[_0x1d07bc[_0xb518('0x16')][_0xb518('0x17')]['toLowerCase']()]){_0x498ba4[_0x1d07bc[_0xb518('0x12')]]=_0x4133f8[_0x1d07bc[_0xb518('0x16')]['name'][_0xb518('0x18')]()][_0xb518('0x13')]();}});}return _0x498ba4;}function getName(_0x8a7e19){if(_0x8a7e19[_0xb518('0x19')]('\x20')>0x0){var _0x106ea9=_0x8a7e19[_0xb518('0x1a')](/ (.+)/);if(_0x106ea9[0x1]){return _0x106ea9;}}return[_0x8a7e19,_0x8a7e19];}var accountsTokens={};function getAccessToken(_0x116fd4){return new Promise(function(_0x32078a,_0x2071a9){if(!_['isNil'](accountsTokens[_0x116fd4['id']])&&!_[_0xb518('0x1b')](accountsTokens[_0x116fd4['id']][_0xb518('0x1c')])){if(moment()[_0xb518('0x1d')](accountsTokens[_0x116fd4['id']][_0xb518('0x1e')])){_0x32078a(accountsTokens[_0x116fd4['id']]['access_token']);}}var _0x5d960c;switch(_0x116fd4[_0xb518('0x1f')]){case'US':_0x5d960c=_0xb518('0x20');break;case'AU':_0x5d960c=_0xb518('0x21');break;case'EU':_0x5d960c=_0xb518('0x22');break;case'IN':_0x5d960c='https://accounts.zoho.in';break;case'CN':_0x5d960c=_0xb518('0x23');break;default:_0x5d960c=_0xb518('0x22');break;}var _0x263e2b={'method':'POST','uri':_0x5d960c+_0xb518('0x24'),'qs':{'refresh_token':_0x116fd4[_0xb518('0x25')],'client_id':_0x116fd4[_0xb518('0x26')],'client_secret':_0x116fd4[_0xb518('0x27')],'grant_type':_0xb518('0x28')},'json':!![]};return rp(_0x263e2b)[_0xb518('0x29')](function(_0x2473a7){accountsTokens[_0x116fd4['id']]={'access_token':_0x2473a7[_0xb518('0x1c')],'expires_in':moment()[_0xb518('0x2a')](_0x2473a7[_0xb518('0x1e')],_0xb518('0x2b'))};_0x32078a(_0x2473a7[_0xb518('0x1c')]);})[_0xb518('0x2c')](function(_0xd51756){logger[_0xb518('0x2d')](_0xb518('0x2e'),_0xd51756[_0xb518('0x2f')]);_0x2071a9(_0xd51756);});});}function getUser(_0x4c408b,_0x3cda64,_0x3200c8,_0x366b18){logger['info'](_0xb518('0x30'));return request({'method':_0xb518('0x31'),'uri':util[_0xb518('0x32')](_0xb518('0x33'),_0x3cda64),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x4c408b},'json':!![]})[_0xb518('0x29')](function(_0x3956e4){if(_0x3956e4[_0xb518('0x34')]){var _0x879918=-0x1;if(_[_0xb518('0x35')](_0x3956e4['users'])){if(!_[_0xb518('0x1b')](_0x366b18)){_0x879918=_[_0xb518('0x36')](_0x3956e4['users'],function(_0x4281eb){return _0x4281eb['email']===_0x366b18;});}if(_0x879918>=0x0){logger[_0xb518('0x37')]('Agent\x20found!');}else{logger[_0xb518('0x37')](_0xb518('0x38'));_0x879918=_[_0xb518('0x36')](_0x3956e4[_0xb518('0x34')],function(_0x189eb1){return _0x189eb1['profile'][_0xb518('0x17')]===_0xb518('0x39');});}return _0x3956e4[_0xb518('0x34')][_0x879918];}else{if(_0x3956e4[_0xb518('0x3a')][_0xb518('0x3b')][_0xb518('0x17')]==='Administrator'){logger['info'](_0xb518('0x38'));user=_0x3956e4[_0xb518('0x3a')];return user;}else{logger['error']('The\x20failing\x20result\x20is',JSON[_0xb518('0xd')](_0x3956e4));throw new Error(_0xb518('0x3c')+JSON[_0xb518('0xd')](_0x3956e4));}}}else{logger['error']('The\x20failing\x20result\x20is',JSON['stringify'](_0x3956e4));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0xb518('0xd')](_0x3956e4));}})['catch'](function(_0x40517f){console[_0xb518('0x2d')](_0x40517f);});}function getZohoUser(_0x352f24,_0x5b6c24){return new BPromise(function(_0x1e774b,_0x2ad332){request(_0x352f24)[_0xb518('0x29')](function(_0x301a56){var _0x2338d2=null;if(_0x301a56){_0x2338d2=_0x301a56['data'][0x0];_0x2338d2[_0xb518('0x3d')]=_0x5b6c24;}_0x1e774b(_0x2338d2);})[_0xb518('0x2c')](function(_0x582042){_0x2ad332(_0x582042);});});}function createEndUser(_0x29944b,_0x329d31,_0x17316c,_0x5d9cd4,_0x15a9c5,_0x1eaba7){var _0x17316c=getName(_0x17316c);return request({'method':_0xb518('0x3e'),'uri':_0xb518('0x3f')+_0x329d31+'/crm/v2/'+_[_0xb518('0x40')](_0x1eaba7[_0xb518('0x41')])+'s','body':{'data':[{'Last_Name':_0x17316c[0x1],'First_Name':_0x17316c[0x0],'Phone':_0x5d9cd4,'Owner':{'name':!_[_0xb518('0x1b')](_0x15a9c5[_0xb518('0x42')][_0xb518('0x17')])?_0x15a9c5[_0xb518('0x42')]['name']:!_['isNil'](_0x15a9c5[_0xb518('0x43')])?_0x15a9c5[_0xb518('0x43')]+'\x20'+_0x15a9c5[_0xb518('0x44')]:_0x15a9c5[_0xb518('0x44')],'id':_0x15a9c5['id']}}]},'headers':{'Authorization':_0xb518('0x45')+_0x29944b},'json':!![]})['then'](function(_0x51dd9f){if(_0x51dd9f&&_0x51dd9f['data'][0x0][_0xb518('0x46')]===_0xb518('0x47')){var _0x23d0a6=_0x51dd9f[_0xb518('0x48')][0x0]['details'];_0x23d0a6[_0xb518('0x3d')]=_[_0xb518('0x40')](_0x1eaba7[_0xb518('0x41')])+'s';return _0x23d0a6;}logger[_0xb518('0x2d')](_0xb518('0x49'),JSON[_0xb518('0xd')](data));throw new Error(_0xb518('0x4a')+JSON[_0xb518('0xd')](data));})[_0xb518('0x2c')](function(_0x8ad7e2){console[_0xb518('0x4b')](_0xb518('0x4c'),_0x8ad7e2);});}function getEndUser(_0x23a583,_0x426837,_0x8aadef,_0x1eb0a9,_0x592867,_0x3d8f77,_0x2aed76){var _0x2a4570={'method':_0xb518('0x31'),'uri':'','headers':{'Authorization':_0xb518('0x45')+_0x23a583},'json':!![]};switch(_0x2aed76['moduleSearch']){case'contact_lead':_0x2a4570['uri']=_0xb518('0x3f')+_0x426837+_0xb518('0x4d')+_0x592867+'))';return getZohoUser(_0x2a4570,_0xb518('0x4e'))['then'](function(_0x1fae6a){if(_0x1fae6a)return _0x1fae6a;_0x2a4570[_0xb518('0x4f')]=_0xb518('0x3f')+_0x426837+_0xb518('0x50')+_0x592867+'))';return getZohoUser(_0x2a4570,_0xb518('0x51'))[_0xb518('0x29')](function(_0x56882d){if(_0x56882d)return _0x56882d;if(_0x2aed76[_0xb518('0x41')]!='nothing'){return createEndUser(_0x23a583,_0x426837,_0x1eb0a9,_0x592867,_0x3d8f77,_0x2aed76);}else{return{};}});});break;case _0xb518('0x52'):_0x2a4570[_0xb518('0x4f')]='https://www.zohoapis.'+_0x426837+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x592867+'))';return getZohoUser(_0x2a4570,_0xb518('0x4e'))['then'](function(_0x3e1f91){if(_0x3e1f91)return _0x3e1f91;if(_0x2aed76[_0xb518('0x41')]!=_0xb518('0x53')){return createEndUser(_0x23a583,_0x426837,_0x1eb0a9,_0x592867,_0x3d8f77,_0x2aed76);}else{return{};}});break;case _0xb518('0x54'):_0x2a4570[_0xb518('0x4f')]=_0xb518('0x3f')+_0x426837+_0xb518('0x50')+_0x592867+'))';return getZohoUser(_0x2a4570,_0xb518('0x51'))[_0xb518('0x29')](function(_0xf8c80b){if(_0xf8c80b)return _0xf8c80b;if(_0x2aed76[_0xb518('0x41')]!='nothing'){return createEndUser(_0x23a583,_0x426837,_0x1eb0a9,_0x592867,_0x3d8f77,_0x2aed76);}else{return{};}});break;}}function getCall(_0x3587e9,_0x375316,_0x4d3aea,_0x4f868b,_0xc62596,_0x163e1e,_0x154104,_0x3f23b5){logger[_0xb518('0x37')]('Creating\x20new\x20call...');var _0x5a98b9={};_0x5a98b9[_0xb518('0x55')]={'name':!_[_0xb518('0x1b')](_0x4f868b[_0xb518('0x42')][_0xb518('0x17')])&&!_['isNil'](_0x4f868b['profile'][_0xb518('0x17')])&&_0x4f868b['profile'][_0xb518('0x17')]===_0xb518('0x56')?_0x4f868b[_0xb518('0x42')][_0xb518('0x17')]:!_['isNil'](_0x4f868b[_0xb518('0x43')])?_0x4f868b[_0xb518('0x43')]+'\x20'+_0x4f868b['last_name']:_0x4f868b[_0xb518('0x44')],'id':_0x4f868b['id']};_0x5a98b9['Subject']=intUtil[_0xb518('0x57')](_0x163e1e[_0xb518('0x58')],_0x154104,'\x20');_0x5a98b9[_0xb518('0x59')]=intUtil['getString'](_0x163e1e[_0xb518('0x5a')],_0x154104,'\x0a');if(_0xc62596[_0xb518('0x3d')]===_0xb518('0x4e')){_0x5a98b9[_0xb518('0x5b')]={'name':!_[_0xb518('0x1b')](_0xc62596[_0xb518('0x5c')])?_0xc62596['Full_Name']:!_['isNil'](_0xc62596[_0xb518('0x5d')])?_0xc62596['First_Name']+'\x20'+_0xc62596[_0xb518('0x5e')]:_0xc62596[_0xb518('0x5e')],'id':_0xc62596['id']};}if(_0xc62596[_0xb518('0x3d')]===_0xb518('0x51')){_0x5a98b9[_0xb518('0x5f')]={'name':!_[_0xb518('0x1b')](_0xc62596[_0xb518('0x5c')])?_0xc62596[_0xb518('0x5c')]:!_[_0xb518('0x1b')](_0xc62596[_0xb518('0x5d')])?_0xc62596[_0xb518('0x5d')]+'\x20'+_0xc62596[_0xb518('0x5e')]:_0xc62596['Last_Name'],'id':_0xc62596['id']};_0x5a98b9[_0xb518('0x60')]=_[_0xb518('0x40')](_0xc62596[_0xb518('0x3d')]);}if(_0x154104[_0xb518('0x61')]){_0x5a98b9[_0xb518('0x62')]=moment[_0xb518('0x63')](parseInt(_0x154104[_0xb518('0x61')])*0x3e8)[_0xb518('0x32')](_0xb518('0x64'));}else if(_0x154104[_0xb518('0x65')]&&_0x154104[_0xb518('0x66')]){_0x5a98b9[_0xb518('0x62')]=moment[_0xb518('0x63')](moment(_0x154104[_0xb518('0x66')],_0xb518('0x67'))[_0xb518('0x68')](moment(_0x154104['starttime'],_0xb518('0x67'))))[_0xb518('0x32')](_0xb518('0x64'));}switch(_0x154104['lastevent']){case _0xb518('0x69'):_0x5a98b9[_0xb518('0x6a')]=_0xb518('0x6b');break;case _0xb518('0x6c'):case _0xb518('0x6d'):_0x5a98b9['Call_Result']=_0xb518('0x6e');break;case'rejected':_0x5a98b9[_0xb518('0x6a')]=_0xb518('0x6f');break;case _0xb518('0x70'):_0x5a98b9['Call_Result']=_0xb518('0x71');break;case _0xb518('0x72'):_0x5a98b9[_0xb518('0x6a')]='Timeout';default:}_0x5a98b9[_0xb518('0x73')]=(_0x3f23b5===_0xb518('0x74')?moment(_0x154104[_0xb518('0x75')])[_0xb518('0x32')](_0xb518('0x67')):moment(_0x154104[_0xb518('0x76')])['format'](_0xb518('0x67')))||moment()[_0xb518('0x32')]('YYYY-MM-DDTHH:mm:ss');_0x5a98b9['Call_Type']=_0x3f23b5||_0xb518('0x77');_0x5a98b9=_[_0xb518('0x78')](_0x5a98b9,getCustomFields(_0x163e1e[_0xb518('0x79')],_0x154104));return request({'method':'POST','uri':_0xb518('0x3f')+_0x375316+'/crm/v2/Calls','headers':{'Authorization':_0xb518('0x45')+_0x3587e9},'body':{'data':[_0x5a98b9]},'json':!![]})[_0xb518('0x29')](function(_0x433010){if(_0x433010&&_0x433010[_0xb518('0x48')][0x0][_0xb518('0x46')]==='SUCCESS'){logger['info'](_0xb518('0x7a'));return{'id':_0x433010[_0xb518('0x48')][0x0][_0xb518('0x7b')]['id']};}})[_0xb518('0x2c')](function(_0x5e1d60){logger[_0xb518('0x37')](_0xb518('0x7c'),_0x5e1d60[_0xb518('0x2f')]);console[_0xb518('0x4b')](_0xb518('0x7c'),_0x5e1d60);});}exports[_0xb518('0x7d')]=function(_0x27b8b9,_0x2e474f,_0x3e213b,_0x556b53,_0x273fc2,_0x4c954e){var _0x4fb715,_0xec58e6,_0x2b8fa6;_0x4c954e[_0xb518('0x7e')]=intUtil[_0xb518('0x7f')](_0x4c954e[_0xb518('0x7e')]);_0x4c954e[_0xb518('0x80')]=intUtil['stripTrailingSlash'](_0x4c954e[_0xb518('0x80')]);if(_0x273fc2&&_0x273fc2[_0xb518('0x81')]){logger['info'](_0xb518('0x82'),_0xb518('0x83'));_0x2e474f[_0xb518('0x84')]=_0x4c954e['serverUrl']+_0xb518('0x85')+_0x2e474f[_0xb518('0x86')]+_0xb518('0x87')+md5(_0x2e474f[_0xb518('0x86')]);}else{_0x2e474f[_0xb518('0x84')]='';}var _0x1b3648=_0x4c954e[_0xb518('0x7e')]===_0xb518('0x88')?'eu':_0xb518('0x89');return getAccessToken(_0x4c954e)['then'](function(_0x584d78){_0x2b8fa6=_0x584d78;return getUser(_0x2b8fa6,_0x1b3648,_0x4c954e,_0x556b53[_0xb518('0x8a')]);})['then'](function(_0x212e8b){_0x4fb715=_0x212e8b;logger[_0xb518('0x37')](_0xb518('0x8b'),_0x4fb715['id']);return getEndUser(_0x2b8fa6,_0x1b3648,_0x4c954e,_0x2e474f[_0xb518('0x8c')],_0x2e474f['calleridnum'],_0x4fb715,_0x3e213b);})[_0xb518('0x29')](function(_0x37db96){_0xec58e6=_0x37db96;return getCall(_0x2b8fa6,_0x1b3648,_0x4c954e,_0x4fb715,_0xec58e6,_0x3e213b,_0x2e474f,_0xb518('0x77'));})[_0xb518('0x29')](function(_0x322c41){if(_0x322c41){logger[_0xb518('0x37')](_0xb518('0x8d'),_0x322c41['id']);logger['info'](_0xb518('0x82'),_0xb518('0x8e'));emit(util['format'](_0xb518('0x8f'),_0x556b53[_0xb518('0x17')]),'trigger:browser:url',{'uri':'https://crm.'+_0x4c954e[_0xb518('0x7e')]+'/crm/EntityInfo.do?module=Calls&id='+_0x322c41['id']});}})[_0xb518('0x2c')](function(_0x38b233){logger[_0xb518('0x2d')](_0xb518('0x82'),JSON[_0xb518('0xd')](_0x38b233));});};exports[_0xb518('0x74')]=function(_0x5287a2,_0x23693b,_0x4bb82d,_0x5e9f17,_0x5ac8df,_0x106ea1,_0x5dc154){var _0xc2c389,_0x23983c,_0x3b803a;_0x106ea1[_0xb518('0x7e')]=intUtil['stripTrailingSlash'](_0x106ea1[_0xb518('0x7e')]);_0x106ea1['serverUrl']=intUtil[_0xb518('0x7f')](_0x106ea1['serverUrl']);if(_0x5dc154&&_0x5dc154[_0xb518('0x90')]&&_0x5dc154[_0xb518('0x90')]!==_0xb518('0x91')){logger[_0xb518('0x37')](_0xb518('0x92'),_0xb518('0x83'));_0x23693b[_0xb518('0x84')]=_0x106ea1[_0xb518('0x80')]+_0xb518('0x85')+_0x23693b['uniqueid']+_0xb518('0x87')+md5(_0x23693b[_0xb518('0x86')]);}var _0x9b4fac=_0x106ea1[_0xb518('0x7e')]===_0xb518('0x88')?'eu':_0xb518('0x89');return getAccessToken(_0x106ea1)['then'](function(_0x5f4439){_0x3b803a=_0x5f4439;return getUser(_0x3b803a,_0x9b4fac,_0x106ea1,_0x5e9f17[_0xb518('0x8a')]);})[_0xb518('0x29')](function(_0x5d4d7d){_0xc2c389=_0x5d4d7d;logger[_0xb518('0x37')](_0xb518('0x8b'),_0xc2c389['id']);return getEndUser(_0x3b803a,_0x9b4fac,_0x106ea1,_0x23693b['destcalleridname'],_0x23693b['destcalleridnum'],_0xc2c389,_0x4bb82d);})[_0xb518('0x29')](function(_0x513fb7){_0x23983c=_0x513fb7;return getCall(_0x3b803a,_0x9b4fac,_0x106ea1,_0xc2c389,_0x23983c,_0x4bb82d,_0x23693b,_0xb518('0x93'));})[_0xb518('0x29')](function(_0x1a73ca){if(_0x1a73ca){logger[_0xb518('0x37')](_0xb518('0x8d'),_0x1a73ca['id']);logger[_0xb518('0x37')](_0xb518('0x92'),_0xb518('0x8e'));emit(util[_0xb518('0x32')](_0xb518('0x8f'),_0x5e9f17[_0xb518('0x17')]),_0xb518('0x94'),{'uri':'https://crm.'+_0x106ea1[_0xb518('0x7e')]+_0xb518('0x95')+_0x1a73ca['id']});}})['catch'](function(_0x4c7ff3){logger[_0xb518('0x2d')]('[OUTBOUND]',JSON[_0xb518('0xd')](_0x4c7ff3));});};exports[_0xb518('0x96')]=function(_0x144c57,_0x504c0c,_0x3c3d3f,_0x157c36,_0xdfefbe,_0x5ce8c7){var _0x59ab01,_0x17e8b3,_0x6f9651;_0x5ce8c7[_0xb518('0x7e')]=intUtil[_0xb518('0x7f')](_0x5ce8c7[_0xb518('0x7e')]);_0x5ce8c7['serverUrl']=intUtil['stripTrailingSlash'](_0x5ce8c7['serverUrl']);if(_0xdfefbe&&_0xdfefbe[_0xb518('0x81')]){logger[_0xb518('0x37')]('['+_0x504c0c[_0xb518('0x97')][_0xb518('0x98')]()+']','Recording\x20is\x20enabled!');_0x504c0c[_0xb518('0x84')]=_0x5ce8c7['serverUrl']+_0xb518('0x85')+_0x504c0c[_0xb518('0x86')]+_0xb518('0x87')+md5(_0x504c0c[_0xb518('0x86')]);}else{_0x504c0c['recordingURL']='';}var _0x283f66=_0x5ce8c7[_0xb518('0x7e')]===_0xb518('0x88')?'eu':_0xb518('0x89');return getAccessToken(_0x5ce8c7)['then'](function(_0x17506a){_0x6f9651=_0x17506a;return getUser(_0x6f9651,_0x283f66,_0x5ce8c7);})['then'](function(_0x6cf0ff){_0x59ab01=_0x6cf0ff;logger[_0xb518('0x37')](_0xb518('0x8b'),_0x59ab01['id']);return getEndUser(_0x6f9651,_0x283f66,_0x5ce8c7,_0x504c0c[_0xb518('0x8c')],_0x504c0c[_0xb518('0x99')],_0x59ab01,_0x3c3d3f);})['then'](function(_0x27a6d5){_0x17e8b3=_0x27a6d5;return getCall(_0x6f9651,_0x283f66,_0x5ce8c7,_0x59ab01,_0x17e8b3,_0x3c3d3f,_0x504c0c,'Inbound');})['then'](function(_0x2477b1){if(_0x2477b1){logger[_0xb518('0x37')](_0xb518('0x8d'),_0x2477b1['id']);}})[_0xb518('0x2c')](function(_0x5df692){logger[_0xb518('0x2d')]('['+_0x504c0c[_0xb518('0x97')][_0xb518('0x98')]()+']',JSON[_0xb518('0xd')](_0x5df692));});};
\ No newline at end of file
index 0ce8cd8..bf1223f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc473=['error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','mustache','../../../../config/logger','trigger','exec','data2','data3','render'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xc473,0xad));var _0x3c47=function(_0x553263,_0x19ff84){_0x553263=_0x553263-0x0;var _0x5229ae=_0xc473[_0x553263];return _0x5229ae;};'use strict';var util=require(_0x3c47('0x0'));var sh=require(_0x3c47('0x1'));var Mustache=require(_0x3c47('0x2'));var logger=require(_0x3c47('0x3'))(_0x3c47('0x4'));exports[_0x3c47('0x5')]=function(_0x4a39cd,_0x98d184){var _0x352036=_0x4a39cd['data2']?_0x4a39cd[_0x3c47('0x6')]:'Script';var _0x3ecf01=_0x4a39cd[_0x3c47('0x7')]?Mustache[_0x3c47('0x8')](_0x4a39cd[_0x3c47('0x7')],_0x98d184):_0x98d184;sh[_0x3c47('0x5')](_0x3ecf01,function(_0x3680d8,_0x53c433,_0x54a564){if(_0x3680d8!==0x0){logger[_0x3c47('0x9')](util[_0x3c47('0xa')](_0x3c47('0xb'),_0x352036,_0x3ecf01,_0x3680d8,_0x54a564));}else{logger[_0x3c47('0xc')](util['format'](_0x3c47('0xd'),_0x352036,_0x3ecf01,_0x53c433));}});};
\ No newline at end of file
+var _0xfad8=['render','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','util','shelljs','../../../../config/logger','trigger','exec','data2','data3'];(function(_0x59d069,_0x597985){var _0x2d1f28=function(_0x3c51a5){while(--_0x3c51a5){_0x59d069['push'](_0x59d069['shift']());}};_0x2d1f28(++_0x597985);}(_0xfad8,0x9e));var _0x8fad=function(_0x5a99db,_0x1cece5){_0x5a99db=_0x5a99db-0x0;var _0x3aad62=_0xfad8[_0x5a99db];return _0x3aad62;};'use strict';var util=require(_0x8fad('0x0'));var sh=require(_0x8fad('0x1'));var Mustache=require('mustache');var logger=require(_0x8fad('0x2'))(_0x8fad('0x3'));exports[_0x8fad('0x4')]=function(_0x2afe2b,_0x27c832){var _0x202fe1=_0x2afe2b[_0x8fad('0x5')]?_0x2afe2b[_0x8fad('0x5')]:'Script';var _0xb32287=_0x2afe2b[_0x8fad('0x6')]?Mustache[_0x8fad('0x7')](_0x2afe2b[_0x8fad('0x6')],_0x27c832):_0x27c832;sh[_0x8fad('0x4')](_0xb32287,function(_0x36e983,_0x101bf9,_0x4c16ad){if(_0x36e983!==0x0){logger['error'](util[_0x8fad('0x8')](_0x8fad('0x9'),_0x202fe1,_0xb32287,_0x36e983,_0x4c16ad));}else{logger[_0x8fad('0xa')](util[_0x8fad('0x8')]('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x202fe1,_0xb32287,_0x101bf9));}});};
\ No newline at end of file
index e7b1ee8..571fb3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d5c=['DELETE','POST','data7','body','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s',',\x20request\x20body:\x20','stringify','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','name','request-promise','lodash','mustache','../../../../config/logger','trigger','exec','data1','toUpperCase','render','data2','data5','number','headers','data6','parse','error','stack','GET'];(function(_0x51f4b2,_0x2e0eca){var _0x1d60bb=function(_0x1a0488){while(--_0x1a0488){_0x51f4b2['push'](_0x51f4b2['shift']());}};_0x1d60bb(++_0x2e0eca);}(_0x4d5c,0x181));var _0xc4d5=function(_0x12bcf7,_0xc11103){_0x12bcf7=_0x12bcf7-0x0;var _0x2825a=_0x4d5c[_0x12bcf7];return _0x2825a;};'use strict';var rp=require(_0xc4d5('0x0'));var util=require('util');var _=require(_0xc4d5('0x1'));var Mustache=require(_0xc4d5('0x2'));var logger=require(_0xc4d5('0x3'))(_0xc4d5('0x4'));exports[_0xc4d5('0x5')]=function(_0x41cbaa,_0x888205){var _0x2ba665,_0x428841;var _0x943749={'method':_0x41cbaa[_0xc4d5('0x6')][_0xc4d5('0x7')](),'uri':Mustache[_0xc4d5('0x8')](_0x41cbaa[_0xc4d5('0x9')],_0x888205),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x41cbaa[_0xc4d5('0xa')])===_0xc4d5('0xb')&&parseInt(_0x41cbaa[_0xc4d5('0xa')])>=0x1&&parseInt(_0x41cbaa['data5'])<=0xa?parseInt(_0x41cbaa[_0xc4d5('0xa')])*0x3e8:0x5*0x3e8};try{_0x943749[_0xc4d5('0xc')]=_0x41cbaa[_0xc4d5('0xd')]?JSON[_0xc4d5('0xe')](Mustache['render'](_0x41cbaa[_0xc4d5('0xd')],_0x888205)):{};}catch(_0x41aafe){logger[_0xc4d5('0xf')](_0x41aafe[_0xc4d5('0x10')]);}switch(_0x41cbaa['data1']['toUpperCase']()){case _0xc4d5('0x11'):case _0xc4d5('0x12'):_0x2ba665=null;_0x943749['qs']=_0x888205;break;case _0xc4d5('0x13'):case'PUT':if(_0x41cbaa[_0xc4d5('0x14')]){try{_0x2ba665=JSON['parse'](Mustache['render'](_0x41cbaa[_0xc4d5('0x14')],_0x888205));_0x943749[_0xc4d5('0x15')]=_0x2ba665;}catch(_0x2d7395){logger[_0xc4d5('0xf')](_0x2d7395[_0xc4d5('0x10')]);logger[_0xc4d5('0xf')](_0xc4d5('0x16'));}}else{_0x2ba665=_0x888205;_0x943749['body']=_0x2ba665;}break;}logger[_0xc4d5('0x17')](util[_0xc4d5('0x18')](_0xc4d5('0x19'),_0x41cbaa[_0xc4d5('0x6')],_0x41cbaa['data2'],JSON['stringify'](_0x943749)));rp(_0x943749)['then'](function(_0x29b211){_0x2ba665=!_['isNil'](_0x2ba665)?_0xc4d5('0x1a')+_0x2ba665:'';_0x428841=typeof _0x29b211[_0xc4d5('0x15')]==='object'?JSON[_0xc4d5('0x1b')](_0x29b211[_0xc4d5('0x15')]):_0x29b211[_0xc4d5('0x15')];logger[_0xc4d5('0x17')](util[_0xc4d5('0x18')](_0xc4d5('0x1c'),_0x41cbaa[_0xc4d5('0x6')],_0x41cbaa[_0xc4d5('0x9')],_0x29b211['statusCode'],_0x428841));})['catch'](function(_0x52ee61){logger[_0xc4d5('0xf')](util[_0xc4d5('0x18')](_0xc4d5('0x1d'),_0x41cbaa['data1'],_0x41cbaa['data2'],_0x52ee61['statusCode'],_0x52ee61[_0xc4d5('0x1e')],_0x52ee61['message']));});};
\ No newline at end of file
+var _0xc1c1=['DELETE','POST','data7','body','info','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','then','isNil',',\x20request\x20body:\x20','object','stringify','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','format','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','name','message','request-promise','util','lodash','mustache','../../../../config/logger','exec','data1','toUpperCase','data2','number','data5','headers','parse','render','data6','error','stack','GET'];(function(_0x2ba604,_0x2eb868){var _0x47c1cd=function(_0x17d540){while(--_0x17d540){_0x2ba604['push'](_0x2ba604['shift']());}};_0x47c1cd(++_0x2eb868);}(_0xc1c1,0xea));var _0x1c1c=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xc1c1[_0xfae23b];return _0x200640;};'use strict';var rp=require(_0x1c1c('0x0'));var util=require(_0x1c1c('0x1'));var _=require(_0x1c1c('0x2'));var Mustache=require(_0x1c1c('0x3'));var logger=require(_0x1c1c('0x4'))('trigger');exports[_0x1c1c('0x5')]=function(_0x2789a7,_0x15ddab){var _0x381688,_0x38d69f;var _0x593fa3={'method':_0x2789a7[_0x1c1c('0x6')][_0x1c1c('0x7')](),'uri':Mustache['render'](_0x2789a7[_0x1c1c('0x8')],_0x15ddab),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x2789a7['data5'])===_0x1c1c('0x9')&&parseInt(_0x2789a7[_0x1c1c('0xa')])>=0x1&&parseInt(_0x2789a7[_0x1c1c('0xa')])<=0xa?parseInt(_0x2789a7[_0x1c1c('0xa')])*0x3e8:0x5*0x3e8};try{_0x593fa3[_0x1c1c('0xb')]=_0x2789a7['data6']?JSON[_0x1c1c('0xc')](Mustache[_0x1c1c('0xd')](_0x2789a7[_0x1c1c('0xe')],_0x15ddab)):{};}catch(_0x28bffc){logger[_0x1c1c('0xf')](_0x28bffc[_0x1c1c('0x10')]);}switch(_0x2789a7['data1'][_0x1c1c('0x7')]()){case _0x1c1c('0x11'):case _0x1c1c('0x12'):_0x381688=null;_0x593fa3['qs']=_0x15ddab;break;case _0x1c1c('0x13'):case'PUT':if(_0x2789a7[_0x1c1c('0x14')]){try{_0x381688=JSON[_0x1c1c('0xc')](Mustache[_0x1c1c('0xd')](_0x2789a7['data7'],_0x15ddab));_0x593fa3[_0x1c1c('0x15')]=_0x381688;}catch(_0x20b884){logger[_0x1c1c('0xf')](_0x20b884[_0x1c1c('0x10')]);logger[_0x1c1c('0xf')]('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x381688=_0x15ddab;_0x593fa3[_0x1c1c('0x15')]=_0x381688;}break;}logger[_0x1c1c('0x16')](util['format'](_0x1c1c('0x17'),_0x2789a7[_0x1c1c('0x6')],_0x2789a7[_0x1c1c('0x8')],JSON['stringify'](_0x593fa3)));rp(_0x593fa3)[_0x1c1c('0x18')](function(_0x14044e){_0x381688=!_[_0x1c1c('0x19')](_0x381688)?_0x1c1c('0x1a')+_0x381688:'';_0x38d69f=typeof _0x14044e[_0x1c1c('0x15')]===_0x1c1c('0x1b')?JSON[_0x1c1c('0x1c')](_0x14044e[_0x1c1c('0x15')]):_0x14044e[_0x1c1c('0x15')];logger[_0x1c1c('0x16')](util['format'](_0x1c1c('0x1d'),_0x2789a7[_0x1c1c('0x6')],_0x2789a7[_0x1c1c('0x8')],_0x14044e[_0x1c1c('0x1e')],_0x38d69f));})[_0x1c1c('0x1f')](function(_0x265736){logger[_0x1c1c('0xf')](util[_0x1c1c('0x20')](_0x1c1c('0x21'),_0x2789a7[_0x1c1c('0x6')],_0x2789a7[_0x1c1c('0x8')],_0x265736['statusCode'],_0x265736[_0x1c1c('0x22')],_0x265736[_0x1c1c('0x23')]));});};
\ No newline at end of file
index 5ac88ba..b8aa231 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ace=['routing','client','request','then','debug','rpc','error','message','result','catch','../../config/logger'];(function(_0x15da95,_0x2a6b25){var _0x5cfdc5=function(_0x3c899e){while(--_0x3c899e){_0x15da95['push'](_0x15da95['shift']());}};_0x5cfdc5(++_0x2a6b25);}(_0x9ace,0x11d));var _0xe9ac=function(_0x52519f,_0x8b7239){_0x52519f=_0x52519f-0x0;var _0x5ad473=_0x9ace[_0x52519f];return _0x5ad473;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0xe9ac('0x0'))(_0xe9ac('0x1'));var client=jayson[_0xe9ac('0x2')]['http']({'port':0x2329});client['Request']=function(_0x3e57c5,_0x204591){return new BPromise(function(_0x520783,_0x3130a3){return client[_0xe9ac('0x3')](_0x3e57c5,_0x204591)[_0xe9ac('0x4')](function(_0x4f4acb){logger[_0xe9ac('0x5')](_0xe9ac('0x6'),_0xe9ac('0x1'),_0x3e57c5,_0x204591,_0x4f4acb);if(_0x4f4acb[_0xe9ac('0x7')]){logger['error'](_0xe9ac('0x6'),_0xe9ac('0x1'),_0x3e57c5,_0x4f4acb[_0xe9ac('0x7')][_0xe9ac('0x8')],_0x204591);return _0x3130a3(_0x4f4acb[_0xe9ac('0x7')]['message']);}else{return _0x520783(_0x4f4acb[_0xe9ac('0x9')]);}})[_0xe9ac('0xa')](function(_0x23f753){logger[_0xe9ac('0x7')](_0xe9ac('0x6'),_0xe9ac('0x1'),_0x3e57c5,_0x23f753,_0x204591);return _0x3130a3(_0x23f753);});});};module['exports']=client;
\ No newline at end of file
+var _0xda8b=['rpc','error','message','result','catch','jayson/promise','routing','client','http','Request','request','then','debug'];(function(_0x44ec24,_0x1efaca){var _0x2fcac2=function(_0x50bbed){while(--_0x50bbed){_0x44ec24['push'](_0x44ec24['shift']());}};_0x2fcac2(++_0x1efaca);}(_0xda8b,0x1e6));var _0xbda8=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xda8b[_0x5b644e];return _0x49c6bf;};'use strict';var jayson=require(_0xbda8('0x0'));var BPromise=require('bluebird');var logger=require('../../config/logger')(_0xbda8('0x1'));var client=jayson[_0xbda8('0x2')][_0xbda8('0x3')]({'port':0x2329});client[_0xbda8('0x4')]=function(_0xc54af4,_0x5d6472){return new BPromise(function(_0x3567e0,_0x3adf83){return client[_0xbda8('0x5')](_0xc54af4,_0x5d6472)[_0xbda8('0x6')](function(_0x8285ac){logger[_0xbda8('0x7')](_0xbda8('0x8'),_0xbda8('0x1'),_0xc54af4,_0x5d6472,_0x8285ac);if(_0x8285ac[_0xbda8('0x9')]){logger[_0xbda8('0x9')](_0xbda8('0x8'),_0xbda8('0x1'),_0xc54af4,_0x8285ac[_0xbda8('0x9')][_0xbda8('0xa')],_0x5d6472);return _0x3adf83(_0x8285ac[_0xbda8('0x9')][_0xbda8('0xa')]);}else{return _0x3567e0(_0x8285ac[_0xbda8('0xb')]);}})[_0xbda8('0xc')](function(_0x50215f){logger[_0xbda8('0x9')](_0xbda8('0x8'),_0xbda8('0x1'),_0xc54af4,_0x50215f,_0x5d6472);return _0x3adf83(_0x50215f);});});};module['exports']=client;
\ No newline at end of file
index dd6f5bd..b4c16aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc664=['getMailAccounts','then','refresh','mailAccounts','listen','getSettings','loginMailFrequency','catch','log','bluebird','./server','./realtime','./lib/email','./rpc/setting','resolve'];(function(_0x4e7c2,_0x3b3347){var _0x84bb35=function(_0x217b38){while(--_0x217b38){_0x4e7c2['push'](_0x4e7c2['shift']());}};_0x84bb35(++_0x3b3347);}(_0xc664,0x1ad));var _0x4c66=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc664[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0x4c66('0x0'));var server=require(_0x4c66('0x1'));var Realtime=require(_0x4c66('0x2'));var EmailChannel=require(_0x4c66('0x3'));var mailAccount=require('./rpc/mailAccount');var setting=require(_0x4c66('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0x4c66('0x5')]()['then'](mailAccount[_0x4c66('0x6')]())[_0x4c66('0x7')](realtime['initMailAccounts']())[_0x4c66('0x7')](function(){email[_0x4c66('0x8')](realtime[_0x4c66('0x9')]);return realtime;});}function main(){return server[_0x4c66('0xa')](realtime,email)[_0x4c66('0x7')](function(){return initRealtime();})[_0x4c66('0x7')](function(){return setting[_0x4c66('0xb')]();})[_0x4c66('0x7')](function(_0x267065){return setInterval(initRealtime,_0x267065[_0x4c66('0xc')]*0x3e8);})[_0x4c66('0xd')](function(_0xbb2bf7){console[_0x4c66('0xe')](_0xbb2bf7);});}main();
\ No newline at end of file
+var _0xb1fc=['then','initMailAccounts','mailAccounts','listen','getSettings','loginMailFrequency','catch','log','bluebird','./server','./rpc/mailAccount','resolve','getMailAccounts'];(function(_0x1bfe2b,_0x34856e){var _0x1477d4=function(_0x1d558c){while(--_0x1d558c){_0x1bfe2b['push'](_0x1bfe2b['shift']());}};_0x1477d4(++_0x34856e);}(_0xb1fc,0xf2));var _0xcb1f=function(_0x47959d,_0x50bcb9){_0x47959d=_0x47959d-0x0;var _0x1c4402=_0xb1fc[_0x47959d];return _0x1c4402;};'use strict';var BPromise=require(_0xcb1f('0x0'));var server=require(_0xcb1f('0x1'));var Realtime=require('./realtime');var EmailChannel=require('./lib/email');var mailAccount=require(_0xcb1f('0x2'));var setting=require('./rpc/setting');var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xcb1f('0x3')]()['then'](mailAccount[_0xcb1f('0x4')]())[_0xcb1f('0x5')](realtime[_0xcb1f('0x6')]())['then'](function(){email['refresh'](realtime[_0xcb1f('0x7')]);return realtime;});}function main(){return server[_0xcb1f('0x8')](realtime,email)[_0xcb1f('0x5')](function(){return initRealtime();})[_0xcb1f('0x5')](function(){return setting[_0xcb1f('0x9')]();})[_0xcb1f('0x5')](function(_0xe62505){return setInterval(initRealtime,_0xe62505[_0xcb1f('0xa')]*0x3e8);})[_0xcb1f('0xb')](function(_0x4448c6){console[_0xcb1f('0xc')](_0x4448c6);});}main();
\ No newline at end of file
index 9ee40c0..c64a045 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d6a=['defaults','socket.io-emitter','./imap','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','emit','name','key','active','Imap','status','messageStatus','total','isNil','stringify','mailAccount:update','prototype','refresh','hasOwnProperty','handleImapBox','bind','handleImapEmail','error','disabled','connected','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','handleImapError','sendMail','send','verifySmtp','Smtp','verified','exports','lodash','moment','bluebird','md5','ioredis','../../../config/environment','../../../config/logger','email','redis'];(function(_0x5efad0,_0x3978ef){var _0x53e5ea=function(_0x97a6a1){while(--_0x97a6a1){_0x5efad0['push'](_0x5efad0['shift']());}};_0x53e5ea(++_0x3978ef);}(_0x0d6a,0x12f));var _0xa0d6=function(_0x468b0f,_0x408566){_0x468b0f=_0x468b0f-0x0;var _0x3e74d9=_0x0d6a[_0x468b0f];return _0x3e74d9;};'use strict';var _=require(_0xa0d6('0x0'));var moment=require(_0xa0d6('0x1'));var BPromise=require(_0xa0d6('0x2'));var md5=require(_0xa0d6('0x3'));var Redis=require(_0xa0d6('0x4'));var config=require(_0xa0d6('0x5'));var logger=require(_0xa0d6('0x6'))(_0xa0d6('0x7'));config[_0xa0d6('0x8')]=_[_0xa0d6('0x9')](config[_0xa0d6('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xa0d6('0xa'))(new Redis(config[_0xa0d6('0x8')]));var EmailImap=require(_0xa0d6('0xb'));var EmailSmtp=require('./smtp');var mailAccount=require('../rpc/mailAccount');var md5Accounts={};function EmailChannel(_0x4676d5){logger[_0xa0d6('0xc')](_0xa0d6('0xd'));this[_0xa0d6('0xe')]=_0x4676d5['mailAccounts'];this[_0xa0d6('0xf')]={};this[_0xa0d6('0x10')]=new EmailSmtp();}EmailChannel['prototype'][_0xa0d6('0x11')]=function(_0x330de5){var _0x33e487=this['mailAccounts'][_0x330de5];var _0x1ce3d0={'id':_0x33e487['id'],'name':_0x33e487[_0xa0d6('0x12')],'key':_0x33e487[_0xa0d6('0x13')],'active':_0x33e487[_0xa0d6('0x14')],'Imap':{'status':_0x33e487[_0xa0d6('0x15')][_0xa0d6('0x16')],'messageStatus':_0x33e487[_0xa0d6('0x15')][_0xa0d6('0x17')],'total':_0x33e487[_0xa0d6('0x15')][_0xa0d6('0x18')]}};if(_[_0xa0d6('0x19')](md5Accounts[_0x330de5])){md5Accounts[_0x330de5]={};}var _0x2fd775=md5(JSON[_0xa0d6('0x1a')](_0x1ce3d0));if(md5Accounts[_0x330de5][_0xa0d6('0x3')]!==_0x2fd775){md5Accounts[_0x330de5][_0xa0d6('0x3')]=_0x2fd775;io[_0xa0d6('0x11')](_0xa0d6('0x1b'),_0x1ce3d0);}};EmailChannel[_0xa0d6('0x1c')][_0xa0d6('0x1d')]=function(_0xc4fc27){for(var _0x2d1247 in _0xc4fc27){if(_0xc4fc27[_0xa0d6('0x1e')](_0x2d1247)){if(_0xc4fc27[_0x2d1247]['Imap']&&_0xc4fc27[_0x2d1247][_0xa0d6('0x14')]){var _0x2d2e49=_0xc4fc27[_0x2d1247][_0xa0d6('0x15')];if(!this[_0xa0d6('0xf')][_0xa0d6('0x1e')](_0x2d2e49['id'])){this[_0xa0d6('0xf')][_0x2d2e49['id']]=new EmailImap(_0x2d2e49,_0xc4fc27[_0x2d1247][_0xa0d6('0x7')]);this[_0xa0d6('0xf')][_0x2d2e49['id']]['on']('box',this[_0xa0d6('0x1f')][_0xa0d6('0x20')](this,_0x2d1247));this[_0xa0d6('0xf')][_0x2d2e49['id']]['on'](_0xa0d6('0x7'),this[_0xa0d6('0x21')][_0xa0d6('0x20')](this,_0x2d1247));this['imapAccounts'][_0x2d2e49['id']]['on']('end',this['handleImapEnd'][_0xa0d6('0x20')](this,_0x2d1247));this[_0xa0d6('0xf')][_0x2d2e49['id']]['on'](_0xa0d6('0x22'),this['handleImapError'][_0xa0d6('0x20')](this,_0x2d1247));}}else{if(_[_0xa0d6('0x19')](this[_0xa0d6('0xe')][_0x2d1247][_0xa0d6('0x15')])){this[_0xa0d6('0xe')][_0x2d1247][_0xa0d6('0x15')]={};}this['mailAccounts'][_0x2d1247][_0xa0d6('0x15')][_0xa0d6('0x16')]=_0xa0d6('0x23');this['mailAccounts'][_0x2d1247][_0xa0d6('0x15')][_0xa0d6('0x17')]='';this[_0xa0d6('0x11')](_0x2d1247);}}}};EmailChannel[_0xa0d6('0x1c')][_0xa0d6('0x1f')]=function(_0xd442ab,_0x5ddaae){if(this[_0xa0d6('0xe')][_0xd442ab]){this[_0xa0d6('0xe')][_0xd442ab]['Imap'][_0xa0d6('0x16')]=_0xa0d6('0x24');this[_0xa0d6('0xe')][_0xd442ab][_0xa0d6('0x15')][_0xa0d6('0x17')]=_0x5ddaae[_0xa0d6('0x12')];if(_0x5ddaae['messages']){this[_0xa0d6('0xe')][_0xd442ab][_0xa0d6('0x15')]['total']=_0x5ddaae['messages'][_0xa0d6('0x18')];}return this['emit'](_0xd442ab);}};EmailChannel['prototype'][_0xa0d6('0x21')]=function(_0x4e1f0c,_0x321186){logger[_0xa0d6('0xc')](_0xa0d6('0x25'),_0x321186[_0xa0d6('0x26')],_0x321186[_0xa0d6('0x27')],_0x321186[_0xa0d6('0x28')],_0x4e1f0c);if(this[_0xa0d6('0xe')][_0x4e1f0c]){return mailAccount['notify'](_0x4e1f0c,_0x321186)['then'](function(_0x3c3751){if(_0x3c3751){logger['info'](_0xa0d6('0x29'));}})[_0xa0d6('0x2a')](function(_0x2cd21b){logger['error'](_0xa0d6('0x2b'),JSON[_0xa0d6('0x1a')](_0x2cd21b));});}};EmailChannel[_0xa0d6('0x1c')]['handleImapEnd']=function(_0x2de596){if(this[_0xa0d6('0xe')][_0x2de596]&&this[_0xa0d6('0xe')][_0x2de596][_0xa0d6('0x15')]){if(this[_0xa0d6('0xf')][this[_0xa0d6('0xe')][_0x2de596]['Imap']['id']]){delete this[_0xa0d6('0xf')][this[_0xa0d6('0xe')][_0x2de596]['Imap']['id']];}this[_0xa0d6('0xe')][_0x2de596][_0xa0d6('0x15')][_0xa0d6('0x2c')]=moment();this[_0xa0d6('0x11')](_0x2de596);}};EmailChannel[_0xa0d6('0x1c')][_0xa0d6('0x2d')]=function(_0x1b3e27,_0x45e413){if(this[_0xa0d6('0xe')][_0x1b3e27]){this['mailAccounts'][_0x1b3e27][_0xa0d6('0x15')][_0xa0d6('0x16')]='error';this['mailAccounts'][_0x1b3e27][_0xa0d6('0x15')][_0xa0d6('0x17')]=_0x45e413;return this['emit'](_0x1b3e27);}};EmailChannel[_0xa0d6('0x1c')][_0xa0d6('0x2e')]=function(_0x3a5595,_0x2d6791){return this[_0xa0d6('0x10')][_0xa0d6('0x2f')](_0x3a5595,_0x2d6791);};EmailChannel[_0xa0d6('0x1c')][_0xa0d6('0x30')]=function(_0x577db6){var _0x467532=this;if(this['mailAccounts'][_0x577db6['id']]){if(_['isNil'](this[_0xa0d6('0xe')][_0x577db6['id']][_0xa0d6('0x31')])){this[_0xa0d6('0xe')][_0x577db6['id']]['Smtp']={};}this[_0xa0d6('0xe')][_0x577db6['id']][_0xa0d6('0x31')][_0xa0d6('0x2c')]=moment();return new BPromise(function(_0xd74161,_0x167ec1){return _0x467532[_0xa0d6('0x10')]['verify'](_0x577db6)['then'](function(_0xdba8e2){_0x467532[_0xa0d6('0xe')][_0x577db6['id']][_0xa0d6('0x31')][_0xa0d6('0x16')]=_0xa0d6('0x32');_0x467532['mailAccounts'][_0x577db6['id']][_0xa0d6('0x31')]['messageStatus']='';_0x467532[_0xa0d6('0x11')](_0x577db6['id']);_0xd74161(_0xdba8e2);})[_0xa0d6('0x2a')](function(_0x41b0de){_0x467532['mailAccounts'][_0x577db6['id']][_0xa0d6('0x31')][_0xa0d6('0x16')]=_0xa0d6('0x22');_0x467532[_0xa0d6('0xe')][_0x577db6['id']][_0xa0d6('0x31')][_0xa0d6('0x17')]=_0x41b0de;_0x467532[_0xa0d6('0x11')](_0x577db6['id']);_0x167ec1(_0x41b0de);});});}return this['smtp']['verify'](_0x577db6);};module[_0xa0d6('0x33')]=EmailChannel;
\ No newline at end of file
+var _0xf822=['mailAccounts','name','key','Imap','status','total','isNil','stringify','md5','emit','mailAccount:update','refresh','email','box','handleImapBox','bind','handleImapEmail','end','handleImapEnd','error','disabled','messageStatus','connected','messages','lastName','then','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','handleImapError','sendMail','send','Smtp','verify','verified','exports','lodash','moment','ioredis','../../../config/environment','../../../config/logger','defaults','redis','localhost','./imap','./smtp','../rpc/mailAccount','info','imapAccounts','smtp','prototype'];(function(_0xd0a2ea,_0x341745){var _0x5349a4=function(_0x4b6085){while(--_0x4b6085){_0xd0a2ea['push'](_0xd0a2ea['shift']());}};_0x5349a4(++_0x341745);}(_0xf822,0x1ef));var _0x2f82=function(_0x1e5a42,_0x36a376){_0x1e5a42=_0x1e5a42-0x0;var _0x17d56d=_0xf822[_0x1e5a42];return _0x17d56d;};'use strict';var _=require(_0x2f82('0x0'));var moment=require(_0x2f82('0x1'));var BPromise=require('bluebird');var md5=require('md5');var Redis=require(_0x2f82('0x2'));var config=require(_0x2f82('0x3'));var logger=require(_0x2f82('0x4'))('email');config['redis']=_[_0x2f82('0x5')](config[_0x2f82('0x6')],{'host':_0x2f82('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2f82('0x6')]));var EmailImap=require(_0x2f82('0x8'));var EmailSmtp=require(_0x2f82('0x9'));var mailAccount=require(_0x2f82('0xa'));var md5Accounts={};function EmailChannel(_0x11e90b){logger[_0x2f82('0xb')]('start\x20email\x20channel');this['mailAccounts']=_0x11e90b['mailAccounts'];this[_0x2f82('0xc')]={};this[_0x2f82('0xd')]=new EmailSmtp();}EmailChannel[_0x2f82('0xe')]['emit']=function(_0x5ced9d){var _0x350ea5=this[_0x2f82('0xf')][_0x5ced9d];var _0x3a2baf={'id':_0x350ea5['id'],'name':_0x350ea5[_0x2f82('0x10')],'key':_0x350ea5[_0x2f82('0x11')],'active':_0x350ea5['active'],'Imap':{'status':_0x350ea5[_0x2f82('0x12')][_0x2f82('0x13')],'messageStatus':_0x350ea5[_0x2f82('0x12')]['messageStatus'],'total':_0x350ea5[_0x2f82('0x12')][_0x2f82('0x14')]}};if(_[_0x2f82('0x15')](md5Accounts[_0x5ced9d])){md5Accounts[_0x5ced9d]={};}var _0x4e32f3=md5(JSON[_0x2f82('0x16')](_0x3a2baf));if(md5Accounts[_0x5ced9d][_0x2f82('0x17')]!==_0x4e32f3){md5Accounts[_0x5ced9d][_0x2f82('0x17')]=_0x4e32f3;io[_0x2f82('0x18')](_0x2f82('0x19'),_0x3a2baf);}};EmailChannel['prototype'][_0x2f82('0x1a')]=function(_0x4f6685){for(var _0x4a5f6b in _0x4f6685){if(_0x4f6685['hasOwnProperty'](_0x4a5f6b)){if(_0x4f6685[_0x4a5f6b][_0x2f82('0x12')]&&_0x4f6685[_0x4a5f6b]['active']){var _0x21a0d2=_0x4f6685[_0x4a5f6b][_0x2f82('0x12')];if(!this[_0x2f82('0xc')]['hasOwnProperty'](_0x21a0d2['id'])){this[_0x2f82('0xc')][_0x21a0d2['id']]=new EmailImap(_0x21a0d2,_0x4f6685[_0x4a5f6b][_0x2f82('0x1b')]);this[_0x2f82('0xc')][_0x21a0d2['id']]['on'](_0x2f82('0x1c'),this[_0x2f82('0x1d')][_0x2f82('0x1e')](this,_0x4a5f6b));this[_0x2f82('0xc')][_0x21a0d2['id']]['on'](_0x2f82('0x1b'),this[_0x2f82('0x1f')]['bind'](this,_0x4a5f6b));this[_0x2f82('0xc')][_0x21a0d2['id']]['on'](_0x2f82('0x20'),this[_0x2f82('0x21')]['bind'](this,_0x4a5f6b));this[_0x2f82('0xc')][_0x21a0d2['id']]['on'](_0x2f82('0x22'),this['handleImapError'][_0x2f82('0x1e')](this,_0x4a5f6b));}}else{if(_[_0x2f82('0x15')](this['mailAccounts'][_0x4a5f6b][_0x2f82('0x12')])){this[_0x2f82('0xf')][_0x4a5f6b][_0x2f82('0x12')]={};}this[_0x2f82('0xf')][_0x4a5f6b][_0x2f82('0x12')][_0x2f82('0x13')]=_0x2f82('0x23');this[_0x2f82('0xf')][_0x4a5f6b][_0x2f82('0x12')][_0x2f82('0x24')]='';this[_0x2f82('0x18')](_0x4a5f6b);}}}};EmailChannel['prototype']['handleImapBox']=function(_0x47f619,_0x3e4bcc){if(this[_0x2f82('0xf')][_0x47f619]){this['mailAccounts'][_0x47f619]['Imap']['status']=_0x2f82('0x25');this[_0x2f82('0xf')][_0x47f619][_0x2f82('0x12')][_0x2f82('0x24')]=_0x3e4bcc[_0x2f82('0x10')];if(_0x3e4bcc[_0x2f82('0x26')]){this[_0x2f82('0xf')][_0x47f619]['Imap']['total']=_0x3e4bcc[_0x2f82('0x26')][_0x2f82('0x14')];}return this[_0x2f82('0x18')](_0x47f619);}};EmailChannel[_0x2f82('0xe')][_0x2f82('0x1f')]=function(_0x593fcb,_0x5058a6){logger[_0x2f82('0xb')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x5058a6['firstName'],_0x5058a6[_0x2f82('0x27')],_0x5058a6['from'],_0x593fcb);if(this['mailAccounts'][_0x593fcb]){return mailAccount['notify'](_0x593fcb,_0x5058a6)[_0x2f82('0x28')](function(_0x46b0a1){if(_0x46b0a1){logger['info']('Mail\x20accepted\x20from\x20routing');}})[_0x2f82('0x29')](function(_0x51e08a){logger[_0x2f82('0x22')](_0x2f82('0x2a'),JSON['stringify'](_0x51e08a));});}};EmailChannel[_0x2f82('0xe')][_0x2f82('0x21')]=function(_0xce5653){if(this[_0x2f82('0xf')][_0xce5653]&&this[_0x2f82('0xf')][_0xce5653][_0x2f82('0x12')]){if(this[_0x2f82('0xc')][this['mailAccounts'][_0xce5653][_0x2f82('0x12')]['id']]){delete this[_0x2f82('0xc')][this[_0x2f82('0xf')][_0xce5653]['Imap']['id']];}this[_0x2f82('0xf')][_0xce5653][_0x2f82('0x12')][_0x2f82('0x2b')]=moment();this[_0x2f82('0x18')](_0xce5653);}};EmailChannel[_0x2f82('0xe')][_0x2f82('0x2c')]=function(_0xbf6b9,_0x22cd83){if(this[_0x2f82('0xf')][_0xbf6b9]){this[_0x2f82('0xf')][_0xbf6b9]['Imap'][_0x2f82('0x13')]=_0x2f82('0x22');this[_0x2f82('0xf')][_0xbf6b9]['Imap']['messageStatus']=_0x22cd83;return this[_0x2f82('0x18')](_0xbf6b9);}};EmailChannel[_0x2f82('0xe')][_0x2f82('0x2d')]=function(_0x48d19c,_0x482bea){return this[_0x2f82('0xd')][_0x2f82('0x2e')](_0x48d19c,_0x482bea);};EmailChannel[_0x2f82('0xe')]['verifySmtp']=function(_0x51a6f3){var _0xf7e4cb=this;if(this[_0x2f82('0xf')][_0x51a6f3['id']]){if(_[_0x2f82('0x15')](this[_0x2f82('0xf')][_0x51a6f3['id']]['Smtp'])){this[_0x2f82('0xf')][_0x51a6f3['id']][_0x2f82('0x2f')]={};}this[_0x2f82('0xf')][_0x51a6f3['id']]['Smtp'][_0x2f82('0x2b')]=moment();return new BPromise(function(_0x49b8d2,_0x281094){return _0xf7e4cb[_0x2f82('0xd')][_0x2f82('0x30')](_0x51a6f3)[_0x2f82('0x28')](function(_0x52c5c8){_0xf7e4cb[_0x2f82('0xf')][_0x51a6f3['id']][_0x2f82('0x2f')][_0x2f82('0x13')]=_0x2f82('0x31');_0xf7e4cb[_0x2f82('0xf')][_0x51a6f3['id']][_0x2f82('0x2f')]['messageStatus']='';_0xf7e4cb[_0x2f82('0x18')](_0x51a6f3['id']);_0x49b8d2(_0x52c5c8);})[_0x2f82('0x29')](function(_0x1cfbd2){_0xf7e4cb[_0x2f82('0xf')][_0x51a6f3['id']][_0x2f82('0x2f')][_0x2f82('0x13')]='error';_0xf7e4cb['mailAccounts'][_0x51a6f3['id']][_0x2f82('0x2f')]['messageStatus']=_0x1cfbd2;_0xf7e4cb[_0x2f82('0x18')](_0x51a6f3['id']);_0x281094(_0x1cfbd2);});});}return this[_0x2f82('0xd')][_0x2f82('0x30')](_0x51a6f3);};module[_0x2f82('0x32')]=EmailChannel;
\ No newline at end of file
index 477fbe0..7178970 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc125=['util','lodash','randomstring','simpleParser','iconv','Iconv','EventEmitter','../../../config/logger','mailbox','account','imap','handleReady','once','end','handleError','bind','connect','prototype','getAccount','connTimeout','authTimeout','service','authentication','user','password','host','port','tls','required','getHost','email','openBox','handleOpenBox','box','readUnseen','handleCloseBox','search','UNSEEN','handleReadUnseen','fetch','message','error','handleFetchError','handleFetchEnd','closeBox','handleFetchMessage','body','attributes','handleMessageAttributes','handleMessageEnd','handleMessageBody','handleSimpleParser','emit','handleEnd','stringify','textCode','hasOwnProperty','upperFirst','path'];(function(_0x3d3a59,_0xe0de59){var _0x2423a5=function(_0x154e5e){while(--_0x154e5e){_0x3d3a59['push'](_0x3d3a59['shift']());}};_0x2423a5(++_0xe0de59);}(_0xc125,0x19c));var _0x5c12=function(_0x5d2317,_0x17fe95){_0x5d2317=_0x5d2317-0x0;var _0x347d5c=_0xc125[_0x5d2317];return _0x347d5c;};'use strict';var fs=require('fs');var path=require(_0x5c12('0x0'));var util=require(_0x5c12('0x1'));var Imap=require('imap');var _=require(_0x5c12('0x2'));var rs=require(_0x5c12('0x3'));var simpleParser=require('mailparser')[_0x5c12('0x4')];var Iconv=require(_0x5c12('0x5'))[_0x5c12('0x6')];var EventEmitter=require('events')[_0x5c12('0x7')];var utils=require('./utils');var logger=require(_0x5c12('0x8'))('email');function EmailImap(_0x22bff5,_0x28d444){this[_0x5c12('0x9')]='INBOX';this[_0x5c12('0xa')]=this['getAccount'](_0x22bff5,_0x28d444);this[_0x5c12('0xb')]=new Imap(this[_0x5c12('0xa')]);this['imap']['once']('ready',this[_0x5c12('0xc')]['bind'](this));this[_0x5c12('0xb')][_0x5c12('0xd')](_0x5c12('0xe'),this['handleEnd']['bind'](this));this[_0x5c12('0xb')]['on']('error',this[_0x5c12('0xf')][_0x5c12('0x10')](this));this['imap'][_0x5c12('0x11')]();}util['inherits'](EmailImap,EventEmitter);EmailImap[_0x5c12('0x12')][_0x5c12('0x13')]=function(_0x8b1de1,_0x15c2cf){var _0x171115={'connTimeout':_0x8b1de1[_0x5c12('0x14')]?_0x8b1de1[_0x5c12('0x14')]*0x3e8:0x2710,'authTimeout':_0x8b1de1[_0x5c12('0x15')]?_0x8b1de1[_0x5c12('0x15')]*0x3e8:0x1388};if(_['isNil'](_0x8b1de1[_0x5c12('0x16')])){if(_0x8b1de1[_0x5c12('0x17')]){_0x171115['user']=_0x8b1de1[_0x5c12('0x18')];_0x171115[_0x5c12('0x19')]=_0x8b1de1[_0x5c12('0x19')];}_0x171115[_0x5c12('0x1a')]=_0x8b1de1[_0x5c12('0x1a')];_0x171115[_0x5c12('0x1b')]=_0x8b1de1[_0x5c12('0x1b')]||0x3e1;if(_0x8b1de1[_0x5c12('0x1c')]){_0x171115['tls']=!![];}else{_0x171115[_0x5c12('0x1c')]=![];_0x171115['autotls']=_0x5c12('0x1d');}}else{_0x171115[_0x5c12('0x18')]=_0x8b1de1[_0x5c12('0x18')];_0x171115[_0x5c12('0x19')]=_0x8b1de1['password'];_0x171115['host']=utils[_0x5c12('0x1e')](_0x8b1de1['service']);_0x171115[_0x5c12('0x1b')]=0x3e1;_0x171115[_0x5c12('0x1c')]=!![];}_0x171115[_0x5c12('0x1f')]=_0x15c2cf||_0x8b1de1[_0x5c12('0x18')]||'anonymous@xcally.com';return _0x171115;};EmailImap['prototype'][_0x5c12('0xc')]=function(){this[_0x5c12('0xb')][_0x5c12('0x20')](this[_0x5c12('0x9')],![],this[_0x5c12('0x21')]['bind'](this));};EmailImap[_0x5c12('0x12')][_0x5c12('0x21')]=function(_0xda910a,_0x5d12f7){if(_0xda910a){this[_0x5c12('0xf')](_0xda910a,!![]);}else{this['emit'](_0x5c12('0x22'),_0x5d12f7);this[_0x5c12('0x23')]();}};EmailImap[_0x5c12('0x12')][_0x5c12('0x24')]=function(_0x19e384){if(_0x19e384){this['handleError'](_0x19e384,!![]);}else{this[_0x5c12('0xb')][_0x5c12('0xe')]();}};EmailImap[_0x5c12('0x12')]['readUnseen']=function(){this[_0x5c12('0xb')][_0x5c12('0x25')]([_0x5c12('0x26')],this[_0x5c12('0x27')][_0x5c12('0x10')](this));};EmailImap[_0x5c12('0x12')][_0x5c12('0x27')]=function(_0x4efd93,_0x57981b){if(_0x4efd93){this['handleError'](_0x4efd93,!![]);}else{if(_0x57981b['length']){try{var _0x110dbd=this[_0x5c12('0xb')][_0x5c12('0x28')](_0x57981b,{'bodies':'','markSeen':!![]});_0x110dbd['on'](_0x5c12('0x29'),this['handleFetchMessage']['bind'](this));_0x110dbd['once'](_0x5c12('0x2a'),this[_0x5c12('0x2b')]['bind'](this));_0x110dbd['once'](_0x5c12('0xe'),this[_0x5c12('0x2c')][_0x5c12('0x10')](this));}catch(_0x1d77a3){logger[_0x5c12('0x2a')](_0x1d77a3);}}else{this[_0x5c12('0xb')][_0x5c12('0x2d')](!![],this[_0x5c12('0x24')][_0x5c12('0x10')](this));}}};EmailImap[_0x5c12('0x12')][_0x5c12('0x2e')]=function(_0x43f2af,_0x58f34f){_0x43f2af['on'](_0x5c12('0x2f'),this['handleMessageBody'][_0x5c12('0x10')](this));_0x43f2af[_0x5c12('0xd')](_0x5c12('0x30'),this[_0x5c12('0x31')][_0x5c12('0x10')](this));_0x43f2af[_0x5c12('0xd')](_0x5c12('0xe'),this[_0x5c12('0x32')][_0x5c12('0x10')](this));};EmailImap['prototype'][_0x5c12('0x33')]=function(_0x27836a,_0x60cd73){simpleParser(_0x27836a,{'Iconv':Iconv},this[_0x5c12('0x34')][_0x5c12('0x10')](this));};EmailImap[_0x5c12('0x12')][_0x5c12('0x31')]=function(_0x120ba6){};EmailImap['prototype'][_0x5c12('0x32')]=function(){};EmailImap[_0x5c12('0x12')][_0x5c12('0x34')]=function(_0x173676,_0x229f90){if(_0x173676){logger['error'](_0x173676);}else{var _0x3d6f51=this;utils['parser'](this[_0x5c12('0xa')],_0x229f90,function(_0x526f9a){_0x3d6f51[_0x5c12('0x35')]('email',_0x526f9a);});}};EmailImap[_0x5c12('0x12')][_0x5c12('0x2c')]=function(){this['imap'][_0x5c12('0x2d')](!![],this[_0x5c12('0x24')][_0x5c12('0x10')](this));};EmailImap[_0x5c12('0x12')][_0x5c12('0x2b')]=function(_0x4a0597){this[_0x5c12('0xf')](_0x4a0597);this[_0x5c12('0xb')][_0x5c12('0x2d')](!![],this[_0x5c12('0x24')][_0x5c12('0x10')](this));};EmailImap[_0x5c12('0x12')][_0x5c12('0x36')]=function(){this[_0x5c12('0x35')](_0x5c12('0xe'));};EmailImap['prototype'][_0x5c12('0xf')]=function(_0x4ad76f,_0x295e7c){logger[_0x5c12('0x2a')](_0x5c12('0xf'),this['account'][_0x5c12('0x1f')],JSON[_0x5c12('0x37')](_0x4ad76f));var _0x495abf='';if(_0x4ad76f){if(_0x4ad76f[_0x5c12('0x38')]){_0x495abf=_0x4ad76f['textCode'];}else{for(var _0x4902f5 in _0x4ad76f){if(_0x4ad76f[_0x5c12('0x39')](_0x4902f5)){_0x495abf+=_[_0x5c12('0x3a')](_0x4902f5)+':\x20'+_0x4ad76f[_0x4902f5]+'\x0a';}}}}if(_0x295e7c){this[_0x5c12('0xb')][_0x5c12('0xe')]();}else{this[_0x5c12('0x35')]('error',_0x495abf);this[_0x5c12('0x35')](_0x5c12('0xe'));}};module['exports']=EmailImap;
\ No newline at end of file
+var _0x5fcd=['closeBox','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','handleFetchEnd','handleFetchError','handleEnd','stringify','textCode','hasOwnProperty','upperFirst','exports','path','util','lodash','simpleParser','iconv','events','EventEmitter','mailbox','INBOX','account','getAccount','imap','once','handleReady','bind','error','handleError','connect','inherits','prototype','connTimeout','authTimeout','isNil','service','user','password','host','port','tls','autotls','required','getHost','email','anonymous@xcally.com','openBox','handleOpenBox','emit','box','readUnseen','handleCloseBox','search','UNSEEN','handleReadUnseen','length','fetch','message','handleFetchMessage','end'];(function(_0x15ae53,_0x8880f){var _0x318f5f=function(_0x73e1c8){while(--_0x73e1c8){_0x15ae53['push'](_0x15ae53['shift']());}};_0x318f5f(++_0x8880f);}(_0x5fcd,0x189));var _0xd5fc=function(_0x51104a,_0x2f3ae0){_0x51104a=_0x51104a-0x0;var _0x42d8e3=_0x5fcd[_0x51104a];return _0x42d8e3;};'use strict';var fs=require('fs');var path=require(_0xd5fc('0x0'));var util=require(_0xd5fc('0x1'));var Imap=require('imap');var _=require(_0xd5fc('0x2'));var rs=require('randomstring');var simpleParser=require('mailparser')[_0xd5fc('0x3')];var Iconv=require(_0xd5fc('0x4'))['Iconv'];var EventEmitter=require(_0xd5fc('0x5'))[_0xd5fc('0x6')];var utils=require('./utils');var logger=require('../../../config/logger')('email');function EmailImap(_0x3aee6,_0x57dd12){this[_0xd5fc('0x7')]=_0xd5fc('0x8');this[_0xd5fc('0x9')]=this[_0xd5fc('0xa')](_0x3aee6,_0x57dd12);this[_0xd5fc('0xb')]=new Imap(this[_0xd5fc('0x9')]);this[_0xd5fc('0xb')][_0xd5fc('0xc')]('ready',this[_0xd5fc('0xd')][_0xd5fc('0xe')](this));this[_0xd5fc('0xb')][_0xd5fc('0xc')]('end',this['handleEnd'][_0xd5fc('0xe')](this));this['imap']['on'](_0xd5fc('0xf'),this[_0xd5fc('0x10')][_0xd5fc('0xe')](this));this[_0xd5fc('0xb')][_0xd5fc('0x11')]();}util[_0xd5fc('0x12')](EmailImap,EventEmitter);EmailImap[_0xd5fc('0x13')]['getAccount']=function(_0x1aa193,_0x9f97c){var _0x4e5f2d={'connTimeout':_0x1aa193[_0xd5fc('0x14')]?_0x1aa193[_0xd5fc('0x14')]*0x3e8:0x2710,'authTimeout':_0x1aa193[_0xd5fc('0x15')]?_0x1aa193[_0xd5fc('0x15')]*0x3e8:0x1388};if(_[_0xd5fc('0x16')](_0x1aa193[_0xd5fc('0x17')])){if(_0x1aa193['authentication']){_0x4e5f2d[_0xd5fc('0x18')]=_0x1aa193[_0xd5fc('0x18')];_0x4e5f2d['password']=_0x1aa193[_0xd5fc('0x19')];}_0x4e5f2d[_0xd5fc('0x1a')]=_0x1aa193[_0xd5fc('0x1a')];_0x4e5f2d[_0xd5fc('0x1b')]=_0x1aa193[_0xd5fc('0x1b')]||0x3e1;if(_0x1aa193[_0xd5fc('0x1c')]){_0x4e5f2d[_0xd5fc('0x1c')]=!![];}else{_0x4e5f2d[_0xd5fc('0x1c')]=![];_0x4e5f2d[_0xd5fc('0x1d')]=_0xd5fc('0x1e');}}else{_0x4e5f2d['user']=_0x1aa193[_0xd5fc('0x18')];_0x4e5f2d['password']=_0x1aa193['password'];_0x4e5f2d['host']=utils[_0xd5fc('0x1f')](_0x1aa193[_0xd5fc('0x17')]);_0x4e5f2d[_0xd5fc('0x1b')]=0x3e1;_0x4e5f2d[_0xd5fc('0x1c')]=!![];}_0x4e5f2d[_0xd5fc('0x20')]=_0x9f97c||_0x1aa193[_0xd5fc('0x18')]||_0xd5fc('0x21');return _0x4e5f2d;};EmailImap[_0xd5fc('0x13')][_0xd5fc('0xd')]=function(){this[_0xd5fc('0xb')][_0xd5fc('0x22')](this['mailbox'],![],this[_0xd5fc('0x23')][_0xd5fc('0xe')](this));};EmailImap[_0xd5fc('0x13')][_0xd5fc('0x23')]=function(_0x2f49c4,_0x19a6a4){if(_0x2f49c4){this[_0xd5fc('0x10')](_0x2f49c4,!![]);}else{this[_0xd5fc('0x24')](_0xd5fc('0x25'),_0x19a6a4);this[_0xd5fc('0x26')]();}};EmailImap[_0xd5fc('0x13')][_0xd5fc('0x27')]=function(_0x56ba0d){if(_0x56ba0d){this[_0xd5fc('0x10')](_0x56ba0d,!![]);}else{this[_0xd5fc('0xb')]['end']();}};EmailImap['prototype'][_0xd5fc('0x26')]=function(){this[_0xd5fc('0xb')][_0xd5fc('0x28')]([_0xd5fc('0x29')],this[_0xd5fc('0x2a')][_0xd5fc('0xe')](this));};EmailImap['prototype']['handleReadUnseen']=function(_0x1ea19e,_0x37e77f){if(_0x1ea19e){this[_0xd5fc('0x10')](_0x1ea19e,!![]);}else{if(_0x37e77f[_0xd5fc('0x2b')]){try{var _0x18cd66=this[_0xd5fc('0xb')][_0xd5fc('0x2c')](_0x37e77f,{'bodies':'','markSeen':!![]});_0x18cd66['on'](_0xd5fc('0x2d'),this[_0xd5fc('0x2e')][_0xd5fc('0xe')](this));_0x18cd66[_0xd5fc('0xc')]('error',this['handleFetchError'][_0xd5fc('0xe')](this));_0x18cd66[_0xd5fc('0xc')](_0xd5fc('0x2f'),this['handleFetchEnd'][_0xd5fc('0xe')](this));}catch(_0xe12b86){logger['error'](_0xe12b86);}}else{this['imap'][_0xd5fc('0x30')](!![],this[_0xd5fc('0x27')]['bind'](this));}}};EmailImap[_0xd5fc('0x13')][_0xd5fc('0x2e')]=function(_0x545929,_0xbe2876){_0x545929['on']('body',this[_0xd5fc('0x31')]['bind'](this));_0x545929[_0xd5fc('0xc')](_0xd5fc('0x32'),this[_0xd5fc('0x33')][_0xd5fc('0xe')](this));_0x545929[_0xd5fc('0xc')](_0xd5fc('0x2f'),this[_0xd5fc('0x34')][_0xd5fc('0xe')](this));};EmailImap[_0xd5fc('0x13')][_0xd5fc('0x31')]=function(_0x311634,_0x18606a){simpleParser(_0x311634,{'Iconv':Iconv},this['handleSimpleParser'][_0xd5fc('0xe')](this));};EmailImap[_0xd5fc('0x13')][_0xd5fc('0x33')]=function(_0xf8a3f2){};EmailImap[_0xd5fc('0x13')][_0xd5fc('0x34')]=function(){};EmailImap[_0xd5fc('0x13')][_0xd5fc('0x35')]=function(_0x3870d4,_0x563090){if(_0x3870d4){logger[_0xd5fc('0xf')](_0x3870d4);}else{var _0x4975b2=this;utils[_0xd5fc('0x36')](this['account'],_0x563090,function(_0xd1c09a){_0x4975b2[_0xd5fc('0x24')](_0xd5fc('0x20'),_0xd1c09a);});}};EmailImap['prototype'][_0xd5fc('0x37')]=function(){this[_0xd5fc('0xb')]['closeBox'](!![],this[_0xd5fc('0x27')][_0xd5fc('0xe')](this));};EmailImap[_0xd5fc('0x13')][_0xd5fc('0x38')]=function(_0x3fe046){this[_0xd5fc('0x10')](_0x3fe046);this['imap'][_0xd5fc('0x30')](!![],this[_0xd5fc('0x27')][_0xd5fc('0xe')](this));};EmailImap['prototype'][_0xd5fc('0x39')]=function(){this[_0xd5fc('0x24')](_0xd5fc('0x2f'));};EmailImap[_0xd5fc('0x13')][_0xd5fc('0x10')]=function(_0x1b2eb3,_0x14e445){logger[_0xd5fc('0xf')](_0xd5fc('0x10'),this[_0xd5fc('0x9')][_0xd5fc('0x20')],JSON[_0xd5fc('0x3a')](_0x1b2eb3));var _0x15fa54='';if(_0x1b2eb3){if(_0x1b2eb3[_0xd5fc('0x3b')]){_0x15fa54=_0x1b2eb3[_0xd5fc('0x3b')];}else{for(var _0x280919 in _0x1b2eb3){if(_0x1b2eb3[_0xd5fc('0x3c')](_0x280919)){_0x15fa54+=_[_0xd5fc('0x3d')](_0x280919)+':\x20'+_0x1b2eb3[_0x280919]+'\x0a';}}}}if(_0x14e445){this['imap'][_0xd5fc('0x2f')]();}else{this[_0xd5fc('0x24')](_0xd5fc('0xf'),_0x15fa54);this['emit'](_0xd5fc('0x2f'));}};module[_0xd5fc('0x3e')]=EmailImap;
\ No newline at end of file
index 1524428..74cd2d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1818=['toString','verify','exports','bluebird','nodemailer-plugin-inline-base64','prototype','createTransport','sendMail'];(function(_0x1b2ff7,_0x12a034){var _0x31656a=function(_0x1165a5){while(--_0x1165a5){_0x1b2ff7['push'](_0x1b2ff7['shift']());}};_0x31656a(++_0x12a034);}(_0x1818,0x19b));var _0x8181=function(_0x489b87,_0xd51c93){_0x489b87=_0x489b87-0x0;var _0x1823b6=_0x1818[_0x489b87];return _0x1823b6;};'use strict';var nodemailer=require('nodemailer');var BPromise=require(_0x8181('0x0'));var inlineBase64=require(_0x8181('0x1'));function EmailSmtp(){}EmailSmtp[_0x8181('0x2')]['send']=function(_0xaefe03,_0x1c6082){return new BPromise(function(_0x1eae74,_0x412651){var _0x436c50=nodemailer[_0x8181('0x3')](_0xaefe03);_0x436c50['use']('compile',inlineBase64());_0x436c50[_0x8181('0x4')](_0x1c6082,function(_0x381fa4,_0x579bd9){if(_0x381fa4){_0x412651(_0x381fa4[_0x8181('0x5')]());}else{_0x1eae74(_0x579bd9);}});});};EmailSmtp['prototype'][_0x8181('0x6')]=function(_0x32c0f6){return new BPromise(function(_0x4659fe,_0x24ae7e){var _0x3dba9d=nodemailer['createTransport'](_0x32c0f6);_0x3dba9d[_0x8181('0x6')](function(_0x2e56d3,_0x476482){if(_0x2e56d3){_0x24ae7e(_0x2e56d3['toString']());}else{if(_0x476482){_0x4659fe(_0x476482);}else{_0x24ae7e('Not\x20verifired');}}});});};module[_0x8181('0x7')]=EmailSmtp;
\ No newline at end of file
+var _0xb251=['verify','Not\x20verifired','exports','prototype','send','createTransport','use','compile','toString'];(function(_0x45783c,_0x49c56d){var _0x1161da=function(_0x3c5d41){while(--_0x3c5d41){_0x45783c['push'](_0x45783c['shift']());}};_0x1161da(++_0x49c56d);}(_0xb251,0x1c5));var _0x1b25=function(_0x3f7dc6,_0x2a513a){_0x3f7dc6=_0x3f7dc6-0x0;var _0x2d89a3=_0xb251[_0x3f7dc6];return _0x2d89a3;};'use strict';var nodemailer=require('nodemailer');var BPromise=require('bluebird');var inlineBase64=require('nodemailer-plugin-inline-base64');function EmailSmtp(){}EmailSmtp[_0x1b25('0x0')][_0x1b25('0x1')]=function(_0x38b156,_0x4d334e){return new BPromise(function(_0x4e814e,_0x2e0a64){var _0x32a88a=nodemailer[_0x1b25('0x2')](_0x38b156);_0x32a88a[_0x1b25('0x3')](_0x1b25('0x4'),inlineBase64());_0x32a88a['sendMail'](_0x4d334e,function(_0x2d9c77,_0x24bc25){if(_0x2d9c77){_0x2e0a64(_0x2d9c77[_0x1b25('0x5')]());}else{_0x4e814e(_0x24bc25);}});});};EmailSmtp[_0x1b25('0x0')][_0x1b25('0x6')]=function(_0x4e6d77){return new BPromise(function(_0x185353,_0x3ec2c4){var _0x194a20=nodemailer[_0x1b25('0x2')](_0x4e6d77);_0x194a20[_0x1b25('0x6')](function(_0x5ef5d4,_0x362717){if(_0x5ef5d4){_0x3ec2c4(_0x5ef5d4[_0x1b25('0x5')]());}else{if(_0x362717){_0x185353(_0x362717);}else{_0x3ec2c4(_0x1b25('0x7'));}}});});};module[_0x1b25('0x8')]=EmailSmtp;
\ No newline at end of file
index e9e2e26..78e7fbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad40=['imap.gmail.com','yahoo','imap.mail.yahoo.com','imap-mail.outlook.com','outlook365','outlook.office365.com','127.0.0.1','lodash','moment','randomstring','path','node-tnef','../../../config/logger','email','../../../config/environment','head','address','anonymous','generate','@xcally.com','value','name','substring','split','length','slice','join','Anonymous','pop','html','test','replace','includes','<img','attachments','_SRC','_IMG','\x20]</span>','body','<a\x20target=\x22_blank\x22\x20','message','isEmpty','originCc','originTo','attach','type','attachment','filename','attachment-','format','now','root','server/files/attachments/','writeFileSync','content','push','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','indexOf','line','from','subject','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','textAsHtml','filter','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xad40,0xfa));var _0x0ad4=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xad40[_0x484e36];return _0xafc85d;};'use strict';var _=require(_0x0ad4('0x0'));var moment=require(_0x0ad4('0x1'));var random=require(_0x0ad4('0x2'));var fs=require('fs');var path=require(_0x0ad4('0x3'));var util=require('util');var tnef=require(_0x0ad4('0x4'));var logger=require(_0x0ad4('0x5'))(_0x0ad4('0x6'));var config=require(_0x0ad4('0x7'));function getAddress(_0x85c3b9){var _0x34f7cb=_[_0x0ad4('0x8')](_0x85c3b9['value']);return _0x34f7cb&&_0x34f7cb[_0x0ad4('0x9')]?_0x34f7cb[_0x0ad4('0x9')]:_0x0ad4('0xa')+random[_0x0ad4('0xb')](0x6)+_0x0ad4('0xc');}function getFirstName(_0x29f1ee){var _0x239e92=_['head'](_0x29f1ee[_0x0ad4('0xd')]);if(_0x239e92&&_0x239e92[_0x0ad4('0xe')]){if(_0x239e92[_0x0ad4('0xe')]==_0x239e92[_0x0ad4('0x9')]){return _0x239e92[_0x0ad4('0xe')][_0x0ad4('0xf')](0x0,_0x239e92[_0x0ad4('0xe')]['indexOf']('@'));}var _0x1b9921=_0x239e92[_0x0ad4('0xe')][_0x0ad4('0x10')](/\s+/);return _0x1b9921[_0x0ad4('0x11')]>0x1?_0x1b9921[_0x0ad4('0x12')](0x0,-0x1)[_0x0ad4('0x13')]('\x20'):_0x239e92[_0x0ad4('0xe')];}return _0x0ad4('0x14');}function getLastName(_0xd8cad3){var _0x3808c2=_['head'](_0xd8cad3[_0x0ad4('0xd')]);if(_0x3808c2&&_0x3808c2['name']){var _0x2286e6=_0x3808c2['name'][_0x0ad4('0x10')](/\s+/);return _0x2286e6['length']>0x1?_0x2286e6[_0x0ad4('0x15')]():'';}return'';}function getMails(_0x58397f,_0x26190d){var _0x5a611f='';for(var _0x244474=0x0;_0x244474<_0x26190d[_0x0ad4('0xd')]['length'];_0x244474+=0x1){if(_0x26190d[_0x0ad4('0xd')][_0x244474][_0x0ad4('0x9')]!==_0x58397f){if(!_['isEmpty'](_0x5a611f)){_0x5a611f+=',';}_0x5a611f+=_0x26190d[_0x0ad4('0xd')][_0x244474][_0x0ad4('0xe')]||_0x26190d[_0x0ad4('0xd')][_0x244474][_0x0ad4('0x9')]||'';_0x5a611f+='\x20<';_0x5a611f+=_0x26190d[_0x0ad4('0xd')][_0x244474]['address']?_0x26190d['value'][_0x244474][_0x0ad4('0x9')]:'anonymous'+random['generate'](0x6)+_0x0ad4('0xc');_0x5a611f+='>';}}return _0x5a611f;}function parseEmail(_0x5e3c56,_0x411acc,_0x1bb68b){if(_0x411acc[_0x0ad4('0x16')]){var _0x147361=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x147361[_0x0ad4('0x17')](_0x411acc[_0x0ad4('0x16')])){_0x411acc[_0x0ad4('0x16')]=_0x411acc[_0x0ad4('0x16')][_0x0ad4('0x18')](_0x147361,'');}if(_0x411acc[_0x0ad4('0x16')][_0x0ad4('0x19')](_0x0ad4('0x1a'))){var _0x428bb9=[];_0x411acc[_0x0ad4('0x1b')]['forEach'](_0x1f7515=>{_0x428bb9['push'](_0x1f7515['filename']);});var _0xa3a218=/<img.*? _SRC(.*?)[^>]+>/g;var _0x595431=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x567c73=_0x411acc[_0x0ad4('0x16')][_0x0ad4('0x18')](_0x595431,_0x0ad4('0x1c'));var _0x193a8a=_0x567c73['replace'](_0xa3a218,_0x0ad4('0x1d'));for(let _0x34847b=0x0;_0x34847b<_0x428bb9[_0x0ad4('0x11')];_0x34847b++){var _0xcbf86e=_0x193a8a[_0x0ad4('0x18')](_0x0ad4('0x1d'),'<span\x20style=font-weight:bold>\x20[Attachment:\x20'+_0x428bb9[_0x34847b]+_0x0ad4('0x1e'));_0x193a8a=_0xcbf86e;}_0x411acc[_0x0ad4('0x16')]=_0x193a8a;}_0x1bb68b['body']=_0x411acc['html'];}else{_0x1bb68b[_0x0ad4('0x1f')]=_0x411acc['textAsHtml'];}if(_0x1bb68b['body']){_0x1bb68b[_0x0ad4('0x1f')]=_0x1bb68b['body'][_0x0ad4('0x18')](/<a\s+/gi,_0x0ad4('0x20'));}if(_0x411acc['to']){_0x1bb68b[_0x0ad4('0x21')]['originTo']=getMails(null,_0x411acc['to']);var _0x2e8fed=getMails(_0x5e3c56[_0x0ad4('0x6')],_0x411acc['to']);if(!_[_0x0ad4('0x22')](_0x2e8fed)){_0x1bb68b[_0x0ad4('0x21')]['cc']+=_0x2e8fed;}}if(_0x411acc['cc']){_0x1bb68b[_0x0ad4('0x21')][_0x0ad4('0x23')]=getMails(null,_0x411acc['cc']);var _0x41a936=getMails(_0x5e3c56[_0x0ad4('0x6')],_0x411acc['cc']);if(!_['isEmpty'](_0x41a936)){if(!_[_0x0ad4('0x22')](_0x1bb68b['message']['cc'])){_0x1bb68b[_0x0ad4('0x21')]['cc']+=',';}_0x1bb68b[_0x0ad4('0x21')]['cc']+=_0x41a936;}}if(!_[_0x0ad4('0x19')](_0x1bb68b[_0x0ad4('0x21')][_0x0ad4('0x24')],_0x5e3c56[_0x0ad4('0x6')])&&!_[_0x0ad4('0x19')](_0x1bb68b[_0x0ad4('0x21')]['originCc'],_0x5e3c56['email'])){_0x1bb68b[_0x0ad4('0x21')]['bcc']=_0x5e3c56[_0x0ad4('0x6')];}if(_0x411acc[_0x0ad4('0x1b')]&&_0x411acc[_0x0ad4('0x1b')][_0x0ad4('0x11')]){_0x1bb68b[_0x0ad4('0x21')][_0x0ad4('0x25')]=_0x411acc['attachments'][_0x0ad4('0x11')];for(var _0x30bb3b=0x0,_0xf5a3a7,_0x3e6d2e,_0x343e34;_0x30bb3b<_0x411acc['attachments'][_0x0ad4('0x11')];_0x30bb3b+=0x1){if(_0x411acc[_0x0ad4('0x1b')][_0x30bb3b][_0x0ad4('0x26')]===_0x0ad4('0x27')){_0x343e34=_0x411acc[_0x0ad4('0x1b')][_0x30bb3b][_0x0ad4('0x28')]||_0x0ad4('0x29')+_0x30bb3b;_0xf5a3a7=util[_0x0ad4('0x2a')]('%s-%s',Date[_0x0ad4('0x2b')](),_0x343e34);_0x3e6d2e=path[_0x0ad4('0x13')](config[_0x0ad4('0x2c')],_0x0ad4('0x2d'),_0xf5a3a7);fs[_0x0ad4('0x2e')](_0x3e6d2e,_0x411acc[_0x0ad4('0x1b')][_0x30bb3b][_0x0ad4('0x2f')]);_0x1bb68b[_0x0ad4('0x21')][_0x0ad4('0x1b')][_0x0ad4('0x30')]({'name':_0x343e34,'basename':_0xf5a3a7,'type':_0x411acc[_0x0ad4('0x1b')][_0x30bb3b][_0x0ad4('0x31')],'filepath':_0x3e6d2e});}}}if(_0x411acc[_0x0ad4('0x32')]&&_0x411acc[_0x0ad4('0x32')]['length']>0x0){var _0x35df9b=[_0x0ad4('0x33'),_0x0ad4('0x34'),_0x0ad4('0x35')];for(var _0x18bf38=0x0;_0x18bf38<_0x411acc[_0x0ad4('0x32')][_0x0ad4('0x11')];_0x18bf38++){var _0x441a7b=_[_0x0ad4('0x36')](_0x35df9b,_0x411acc[_0x0ad4('0x32')][_0x18bf38][_0x0ad4('0x37')]);if(_0x441a7b>=0x0){_0x1bb68b['isAutoreply']=!![];}}}return _0x1bb68b;}exports['parser']=function(_0x3e755f,_0xc69b7f,_0x2224de){var _0x4b8634={'from':getAddress(_0xc69b7f[_0x0ad4('0x38')]),'firstName':getFirstName(_0xc69b7f[_0x0ad4('0x38')]),'lastName':getLastName(_0xc69b7f['from']),'mapKey':_0x0ad4('0x6'),'message':{'from':getMails(_0x3e755f[_0x0ad4('0x6')],_0xc69b7f['from']),'to':_0x3e755f[_0x0ad4('0x6')],'cc':'','subject':_0xc69b7f[_0x0ad4('0x39')]||'','messageId':_0xc69b7f[_0x0ad4('0x3a')],'inReplyTo':_0xc69b7f[_0x0ad4('0x3b')],'sentAt':moment(_0xc69b7f[_0x0ad4('0x3c')])['format'](_0x0ad4('0x3d')),'attach':![],'attachments':[]}};if(!_0xc69b7f[_0x0ad4('0x16')]&&!_0xc69b7f[_0x0ad4('0x3e')]){var _0x1699fb=_[_0x0ad4('0x3f')](_0xc69b7f[_0x0ad4('0x1b')],{'contentType':_0x0ad4('0x40')});if(_0x1699fb[_0x0ad4('0x11')]){logger[_0x0ad4('0x41')](util['format'](_0x0ad4('0x42'),_0xc69b7f[_0x0ad4('0x3a')]));tnef[_0x0ad4('0x43')](_[_0x0ad4('0x44')](_0x1699fb)[_0x0ad4('0x2f')],function(_0x2c0bec,_0x5f1eb9){if(_0x5f1eb9){_0xc69b7f[_0x0ad4('0x16')]=_0x5f1eb9[_0x0ad4('0x45')]||_0x0ad4('0x46');if(_0x5f1eb9[_0x0ad4('0x47')]){for(var _0x2cc8f8=0x0;_0x2cc8f8<_0x5f1eb9[_0x0ad4('0x47')][_0x0ad4('0x11')];_0x2cc8f8++){var _0x1af2d9=_0x5f1eb9[_0x0ad4('0x47')][_0x2cc8f8];_0x4b8634[_0x0ad4('0x21')][_0x0ad4('0x1b')]['push']({'filename':_0x1af2d9[_0x0ad4('0x48')],'content':Buffer[_0x0ad4('0x38')](_0x1af2d9[_0x0ad4('0x49')])});}}}_0x2224de(parseEmail(_0x3e755f,_0xc69b7f,_0x4b8634));});}else{_0xc69b7f[_0x0ad4('0x16')]='<p>Empty\x20message</p>';_0x2224de(parseEmail(_0x3e755f,_0xc69b7f,_0x4b8634));}}else{_0x2224de(parseEmail(_0x3e755f,_0xc69b7f,_0x4b8634));}};exports['getHost']=function(_0x245b56){switch(_0x245b56){case'gmail':return _0x0ad4('0x4a');case _0x0ad4('0x4b'):return _0x0ad4('0x4c');case'hotmail':return _0x0ad4('0x4d');case _0x0ad4('0x4e'):return _0x0ad4('0x4f');}return _0x0ad4('0x50');};
\ No newline at end of file
+var _0xe829=['html','test','replace','attachments','forEach','push','filename','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','email','message','originCc','includes','originTo','bcc','attach','attachment','attachment-','format','%s-%s','now','root','server/files/attachments/','writeFileSync','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','parser','from','subject','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','content','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','getHost','gmail','imap.gmail.com','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com','127.0.0.1','moment','randomstring','path','util','node-tnef','../../../config/logger','../../../config/environment','address','anonymous','@xcally.com','head','name','substring','indexOf','split','length','join','Anonymous','pop','value','isEmpty'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xe829,0xde));var _0x9e82=function(_0x4730bd,_0x1e9541){_0x4730bd=_0x4730bd-0x0;var _0x1b2849=_0xe829[_0x4730bd];return _0x1b2849;};'use strict';var _=require('lodash');var moment=require(_0x9e82('0x0'));var random=require(_0x9e82('0x1'));var fs=require('fs');var path=require(_0x9e82('0x2'));var util=require(_0x9e82('0x3'));var tnef=require(_0x9e82('0x4'));var logger=require(_0x9e82('0x5'))('email');var config=require(_0x9e82('0x6'));function getAddress(_0x19ece0){var _0x4bd524=_['head'](_0x19ece0['value']);return _0x4bd524&&_0x4bd524[_0x9e82('0x7')]?_0x4bd524[_0x9e82('0x7')]:_0x9e82('0x8')+random['generate'](0x6)+_0x9e82('0x9');}function getFirstName(_0x2b1ecb){var _0x2d83f8=_[_0x9e82('0xa')](_0x2b1ecb['value']);if(_0x2d83f8&&_0x2d83f8[_0x9e82('0xb')]){if(_0x2d83f8[_0x9e82('0xb')]==_0x2d83f8['address']){return _0x2d83f8[_0x9e82('0xb')][_0x9e82('0xc')](0x0,_0x2d83f8['name'][_0x9e82('0xd')]('@'));}var _0x2f0639=_0x2d83f8[_0x9e82('0xb')][_0x9e82('0xe')](/\s+/);return _0x2f0639[_0x9e82('0xf')]>0x1?_0x2f0639['slice'](0x0,-0x1)[_0x9e82('0x10')]('\x20'):_0x2d83f8[_0x9e82('0xb')];}return _0x9e82('0x11');}function getLastName(_0x6a793a){var _0x583c49=_['head'](_0x6a793a['value']);if(_0x583c49&&_0x583c49['name']){var _0x5909a6=_0x583c49[_0x9e82('0xb')]['split'](/\s+/);return _0x5909a6[_0x9e82('0xf')]>0x1?_0x5909a6[_0x9e82('0x12')]():'';}return'';}function getMails(_0x1bdf3f,_0x37cea0){var _0x4fa628='';for(var _0x36c82e=0x0;_0x36c82e<_0x37cea0[_0x9e82('0x13')]['length'];_0x36c82e+=0x1){if(_0x37cea0['value'][_0x36c82e][_0x9e82('0x7')]!==_0x1bdf3f){if(!_[_0x9e82('0x14')](_0x4fa628)){_0x4fa628+=',';}_0x4fa628+=_0x37cea0[_0x9e82('0x13')][_0x36c82e][_0x9e82('0xb')]||_0x37cea0[_0x9e82('0x13')][_0x36c82e][_0x9e82('0x7')]||'';_0x4fa628+='\x20<';_0x4fa628+=_0x37cea0[_0x9e82('0x13')][_0x36c82e]['address']?_0x37cea0[_0x9e82('0x13')][_0x36c82e][_0x9e82('0x7')]:_0x9e82('0x8')+random['generate'](0x6)+_0x9e82('0x9');_0x4fa628+='>';}}return _0x4fa628;}function parseEmail(_0x516302,_0x2e8cec,_0x2fd0fa){if(_0x2e8cec[_0x9e82('0x15')]){var _0xede436=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0xede436[_0x9e82('0x16')](_0x2e8cec['html'])){_0x2e8cec[_0x9e82('0x15')]=_0x2e8cec[_0x9e82('0x15')][_0x9e82('0x17')](_0xede436,'');}if(_0x2e8cec[_0x9e82('0x15')]['includes']('<img')){var _0x2f7d3f=[];_0x2e8cec[_0x9e82('0x18')][_0x9e82('0x19')](_0x1c0646=>{_0x2f7d3f[_0x9e82('0x1a')](_0x1c0646[_0x9e82('0x1b')]);});var _0x54ffa4=/<img.*? _SRC(.*?)[^>]+>/g;var _0x18c645=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x4c2778=_0x2e8cec['html'][_0x9e82('0x17')](_0x18c645,'_SRC');var _0x5a5a4e=_0x4c2778[_0x9e82('0x17')](_0x54ffa4,_0x9e82('0x1c'));for(let _0x2ceb2a=0x0;_0x2ceb2a<_0x2f7d3f[_0x9e82('0xf')];_0x2ceb2a++){var _0x19491d=_0x5a5a4e['replace']('_IMG',_0x9e82('0x1d')+_0x2f7d3f[_0x2ceb2a]+_0x9e82('0x1e'));_0x5a5a4e=_0x19491d;}_0x2e8cec[_0x9e82('0x15')]=_0x5a5a4e;}_0x2fd0fa['body']=_0x2e8cec['html'];}else{_0x2fd0fa[_0x9e82('0x1f')]=_0x2e8cec[_0x9e82('0x20')];}if(_0x2fd0fa[_0x9e82('0x1f')]){_0x2fd0fa[_0x9e82('0x1f')]=_0x2fd0fa[_0x9e82('0x1f')][_0x9e82('0x17')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x2e8cec['to']){_0x2fd0fa['message']['originTo']=getMails(null,_0x2e8cec['to']);var _0x5579c2=getMails(_0x516302[_0x9e82('0x21')],_0x2e8cec['to']);if(!_[_0x9e82('0x14')](_0x5579c2)){_0x2fd0fa[_0x9e82('0x22')]['cc']+=_0x5579c2;}}if(_0x2e8cec['cc']){_0x2fd0fa['message'][_0x9e82('0x23')]=getMails(null,_0x2e8cec['cc']);var _0x4398c7=getMails(_0x516302['email'],_0x2e8cec['cc']);if(!_[_0x9e82('0x14')](_0x4398c7)){if(!_[_0x9e82('0x14')](_0x2fd0fa[_0x9e82('0x22')]['cc'])){_0x2fd0fa[_0x9e82('0x22')]['cc']+=',';}_0x2fd0fa[_0x9e82('0x22')]['cc']+=_0x4398c7;}}if(!_[_0x9e82('0x24')](_0x2fd0fa[_0x9e82('0x22')][_0x9e82('0x25')],_0x516302[_0x9e82('0x21')])&&!_[_0x9e82('0x24')](_0x2fd0fa[_0x9e82('0x22')][_0x9e82('0x23')],_0x516302[_0x9e82('0x21')])){_0x2fd0fa[_0x9e82('0x22')][_0x9e82('0x26')]=_0x516302[_0x9e82('0x21')];}if(_0x2e8cec[_0x9e82('0x18')]&&_0x2e8cec[_0x9e82('0x18')][_0x9e82('0xf')]){_0x2fd0fa[_0x9e82('0x22')][_0x9e82('0x27')]=_0x2e8cec[_0x9e82('0x18')][_0x9e82('0xf')];for(var _0x164c4d=0x0,_0x2ff371,_0x2709fa,_0x2f406f;_0x164c4d<_0x2e8cec['attachments']['length'];_0x164c4d+=0x1){if(_0x2e8cec['attachments'][_0x164c4d]['type']===_0x9e82('0x28')){_0x2f406f=_0x2e8cec[_0x9e82('0x18')][_0x164c4d][_0x9e82('0x1b')]||_0x9e82('0x29')+_0x164c4d;_0x2ff371=util[_0x9e82('0x2a')](_0x9e82('0x2b'),Date[_0x9e82('0x2c')](),_0x2f406f);_0x2709fa=path[_0x9e82('0x10')](config[_0x9e82('0x2d')],_0x9e82('0x2e'),_0x2ff371);fs[_0x9e82('0x2f')](_0x2709fa,_0x2e8cec[_0x9e82('0x18')][_0x164c4d]['content']);_0x2fd0fa[_0x9e82('0x22')][_0x9e82('0x18')][_0x9e82('0x1a')]({'name':_0x2f406f,'basename':_0x2ff371,'type':_0x2e8cec['attachments'][_0x164c4d][_0x9e82('0x30')],'filepath':_0x2709fa});}}}if(_0x2e8cec[_0x9e82('0x31')]&&_0x2e8cec[_0x9e82('0x31')]['length']>0x0){var _0x12fbdb=[_0x9e82('0x32'),_0x9e82('0x33'),_0x9e82('0x34')];for(var _0x1d652b=0x0;_0x1d652b<_0x2e8cec[_0x9e82('0x31')][_0x9e82('0xf')];_0x1d652b++){var _0x179a7b=_[_0x9e82('0xd')](_0x12fbdb,_0x2e8cec[_0x9e82('0x31')][_0x1d652b][_0x9e82('0x35')]);if(_0x179a7b>=0x0){_0x2fd0fa['isAutoreply']=!![];}}}return _0x2fd0fa;}exports[_0x9e82('0x36')]=function(_0x3f9020,_0x2c5622,_0x4a3fda){var _0x5c1542={'from':getAddress(_0x2c5622['from']),'firstName':getFirstName(_0x2c5622[_0x9e82('0x37')]),'lastName':getLastName(_0x2c5622[_0x9e82('0x37')]),'mapKey':_0x9e82('0x21'),'message':{'from':getMails(_0x3f9020['email'],_0x2c5622[_0x9e82('0x37')]),'to':_0x3f9020[_0x9e82('0x21')],'cc':'','subject':_0x2c5622[_0x9e82('0x38')]||'','messageId':_0x2c5622[_0x9e82('0x39')],'inReplyTo':_0x2c5622[_0x9e82('0x3a')],'sentAt':moment(_0x2c5622[_0x9e82('0x3b')])['format'](_0x9e82('0x3c')),'attach':![],'attachments':[]}};if(!_0x2c5622['html']&&!_0x2c5622['textAsHtml']){var _0x2be969=_[_0x9e82('0x3d')](_0x2c5622[_0x9e82('0x18')],{'contentType':_0x9e82('0x3e')});if(_0x2be969[_0x9e82('0xf')]){logger[_0x9e82('0x3f')](util[_0x9e82('0x2a')](_0x9e82('0x40'),_0x2c5622['messageId']));tnef[_0x9e82('0x41')](_['first'](_0x2be969)[_0x9e82('0x42')],function(_0x2ccaa3,_0x800eff){if(_0x800eff){_0x2c5622[_0x9e82('0x15')]=_0x800eff[_0x9e82('0x43')]||_0x9e82('0x44');if(_0x800eff[_0x9e82('0x45')]){for(var _0x418ca3=0x0;_0x418ca3<_0x800eff[_0x9e82('0x45')]['length'];_0x418ca3++){var _0x23040=_0x800eff[_0x9e82('0x45')][_0x418ca3];_0x5c1542[_0x9e82('0x22')][_0x9e82('0x18')][_0x9e82('0x1a')]({'filename':_0x23040[_0x9e82('0x46')],'content':Buffer[_0x9e82('0x37')](_0x23040[_0x9e82('0x47')])});}}}_0x4a3fda(parseEmail(_0x3f9020,_0x2c5622,_0x5c1542));});}else{_0x2c5622[_0x9e82('0x15')]=_0x9e82('0x44');_0x4a3fda(parseEmail(_0x3f9020,_0x2c5622,_0x5c1542));}}else{_0x4a3fda(parseEmail(_0x3f9020,_0x2c5622,_0x5c1542));}};exports[_0x9e82('0x48')]=function(_0x9426c){switch(_0x9426c){case _0x9e82('0x49'):return _0x9e82('0x4a');case'yahoo':return _0x9e82('0x4b');case _0x9e82('0x4c'):return _0x9e82('0x4d');case _0x9e82('0x4e'):return _0x9e82('0x4f');}return _0x9e82('0x50');};
\ No newline at end of file
index 04349c9..4956bc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c94=['active','Imap','Smtp','exports','lodash','name','key'];(function(_0x6ad480,_0x3452aa){var _0x203b57=function(_0x2ab95d){while(--_0x2ab95d){_0x6ad480['push'](_0x6ad480['shift']());}};_0x203b57(++_0x3452aa);}(_0x7c94,0x18c));var _0x47c9=function(_0x2449ef,_0x3edf6f){_0x2449ef=_0x2449ef-0x0;var _0x135709=_0x7c94[_0x2449ef];return _0x135709;};'use strict';var _=require(_0x47c9('0x0'));function MailAccount(_0x4060f3){this['id']=_0x4060f3['id']||0x0;this[_0x47c9('0x1')]=_0x4060f3[_0x47c9('0x1')]||'Service';this[_0x47c9('0x2')]=_0x4060f3[_0x47c9('0x2')]||'SERV';this[_0x47c9('0x3')]=_0x4060f3[_0x47c9('0x3')]||![];this[_0x47c9('0x4')]=_0x4060f3[_0x47c9('0x4')]||[];this[_0x47c9('0x5')]=_0x4060f3[_0x47c9('0x5')]||[];}module[_0x47c9('0x6')]=MailAccount;
\ No newline at end of file
+var _0xfae9=['Service','key','SERV','active','Imap','Smtp','exports','lodash','name'];(function(_0x106a78,_0x591cae){var _0x221cc6=function(_0x3533a4){while(--_0x3533a4){_0x106a78['push'](_0x106a78['shift']());}};_0x221cc6(++_0x591cae);}(_0xfae9,0x7c));var _0x9fae=function(_0x29e2af,_0x15e2b1){_0x29e2af=_0x29e2af-0x0;var _0x1ea06a=_0xfae9[_0x29e2af];return _0x1ea06a;};'use strict';var _=require(_0x9fae('0x0'));function MailAccount(_0x39db91){this['id']=_0x39db91['id']||0x0;this[_0x9fae('0x1')]=_0x39db91[_0x9fae('0x1')]||_0x9fae('0x2');this[_0x9fae('0x3')]=_0x39db91[_0x9fae('0x3')]||_0x9fae('0x4');this[_0x9fae('0x5')]=_0x39db91[_0x9fae('0x5')]||![];this[_0x9fae('0x6')]=_0x39db91[_0x9fae('0x6')]||[];this[_0x9fae('0x7')]=_0x39db91[_0x9fae('0x7')]||[];}module[_0x9fae('0x8')]=MailAccount;
\ No newline at end of file
index b5aa784..a119694 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a47=['mergeFromDatabase','prototype','initMailAccounts','isUndefined','merge','lodash','../model/mailAccount','mailAccounts','mapKeys','hasOwnProperty'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x7a47,0x1b3));var _0x77a4=function(_0x8e4fbb,_0x5cf71b){_0x8e4fbb=_0x8e4fbb-0x0;var _0x471af3=_0x7a47[_0x8e4fbb];return _0x471af3;};'use strict';var _=require(_0x77a4('0x0'));var MailAccount=require(_0x77a4('0x1'));var Realtime=function(){this[_0x77a4('0x2')]={};};function freeIsNotKey(_0x5c76fc,_0x77a67f,_0x24a710){var _0x38e088=_[_0x77a4('0x3')](_0x5c76fc,function(_0x5b6d8e,_0x1b220f){return _0x5b6d8e[_0x24a710];});for(var _0x288c94 in _0x77a67f){if(_0x77a67f[_0x77a4('0x4')](_0x288c94)){if(!_0x38e088[_0x288c94]){delete _0x77a67f[_0x288c94];}}}}Realtime['prototype'][_0x77a4('0x5')]=function(_0x39db63,_0x4be132){for(var _0x41a786 in _0x4be132){if(_0x39db63[_0x77a4('0x4')](_0x41a786)){_0x39db63[_0x41a786]=_0x4be132[_0x41a786];}}};Realtime[_0x77a4('0x6')][_0x77a4('0x7')]=function(){var _0x36bd53=this;return function(_0x1875d9){if(_0x1875d9){freeIsNotKey(_0x1875d9,_0x36bd53['mailAccounts'],'id');for(var _0x2e6ee7=0x0,_0x12fe30={},_0x40915a={};_0x2e6ee7<_0x1875d9['length'];_0x2e6ee7+=0x1){_0x12fe30=_0x1875d9[_0x2e6ee7];if(_[_0x77a4('0x8')](_0x36bd53['mailAccounts'][_0x12fe30['id']])){_0x36bd53['mailAccounts'][_0x12fe30['id']]=new MailAccount(_0x12fe30);}else{_[_0x77a4('0x9')](_0x36bd53[_0x77a4('0x2')][_0x12fe30['id']],_0x12fe30);}}}return _0x36bd53[_0x77a4('0x2')];};};module['exports']=Realtime;
\ No newline at end of file
+var _0x6555=['hasOwnProperty','prototype','mergeFromDatabase','length','isUndefined','exports','../model/mailAccount','mailAccounts','mapKeys'];(function(_0x53d709,_0x1906f6){var _0xc1f741=function(_0x5a6643){while(--_0x5a6643){_0x53d709['push'](_0x53d709['shift']());}};_0xc1f741(++_0x1906f6);}(_0x6555,0x1bf));var _0x5655=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x6555[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var MailAccount=require(_0x5655('0x0'));var Realtime=function(){this[_0x5655('0x1')]={};};function freeIsNotKey(_0x3ea321,_0x468f7e,_0x132ca3){var _0x364522=_[_0x5655('0x2')](_0x3ea321,function(_0x5b713c,_0xa4680){return _0x5b713c[_0x132ca3];});for(var _0x519962 in _0x468f7e){if(_0x468f7e[_0x5655('0x3')](_0x519962)){if(!_0x364522[_0x519962]){delete _0x468f7e[_0x519962];}}}}Realtime[_0x5655('0x4')][_0x5655('0x5')]=function(_0x313df6,_0x11d39a){for(var _0x2ce829 in _0x11d39a){if(_0x313df6[_0x5655('0x3')](_0x2ce829)){_0x313df6[_0x2ce829]=_0x11d39a[_0x2ce829];}}};Realtime[_0x5655('0x4')]['initMailAccounts']=function(){var _0x42f36e=this;return function(_0x1cec20){if(_0x1cec20){freeIsNotKey(_0x1cec20,_0x42f36e[_0x5655('0x1')],'id');for(var _0x213d7c=0x0,_0x3bae9a={},_0x3e7aed={};_0x213d7c<_0x1cec20[_0x5655('0x6')];_0x213d7c+=0x1){_0x3bae9a=_0x1cec20[_0x213d7c];if(_[_0x5655('0x7')](_0x42f36e[_0x5655('0x1')][_0x3bae9a['id']])){_0x42f36e[_0x5655('0x1')][_0x3bae9a['id']]=new MailAccount(_0x3bae9a);}else{_['merge'](_0x42f36e[_0x5655('0x1')][_0x3bae9a['id']],_0x3bae9a);}}}return _0x42f36e[_0x5655('0x1')];};};module[_0x5655('0x8')]=Realtime;
\ No newline at end of file
index 9483da0..3f21411 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8814=['service','email','active','key','TemplateId','MailServerIn','Imap','MailServerOut','getMailAccount','Request','NotifyMailAccount','../client','GetMailAccount'];(function(_0xe389f5,_0x479e70){var _0x2e3ed3=function(_0x400953){while(--_0x400953){_0xe389f5['push'](_0xe389f5['shift']());}};_0x2e3ed3(++_0x479e70);}(_0x8814,0x1b8));var _0x4881=function(_0x36884e,_0x48008f){_0x36884e=_0x36884e-0x0;var _0x1cc367=_0x8814[_0x36884e];return _0x1cc367;};'use strict';var client=require(_0x4881('0x0'));exports['getMailAccounts']=function(){return function(){return client['Request'](_0x4881('0x1'),{'options':{'attributes':['id','name',_0x4881('0x2'),_0x4881('0x3'),_0x4881('0x4'),_0x4881('0x5'),'ListId',_0x4881('0x6')],'raw':![],'include':[{'model':_0x4881('0x7'),'as':_0x4881('0x8')},{'model':_0x4881('0x9'),'as':'Smtp'}]},'log':_0x4881('0xa')});};};exports['notify']=function(_0x23a0d4,_0x471090){return client[_0x4881('0xb')](_0x4881('0xc'),{'account':{'id':_0x23a0d4},'body':_0x471090,'log':'NotifyMailAccount'});};
\ No newline at end of file
+var _0x287e=['Smtp','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','name','service','email','active','key','TemplateId','MailServerIn'];(function(_0x3a9661,_0x530b12){var _0x5bb119=function(_0x1278f){while(--_0x1278f){_0x3a9661['push'](_0x3a9661['shift']());}};_0x5bb119(++_0x530b12);}(_0x287e,0x1e3));var _0xe287=function(_0x1a39d0,_0x4866a9){_0x1a39d0=_0x1a39d0-0x0;var _0x3bd72b=_0x287e[_0x1a39d0];return _0x3bd72b;};'use strict';var client=require(_0xe287('0x0'));exports[_0xe287('0x1')]=function(){return function(){return client[_0xe287('0x2')](_0xe287('0x3'),{'options':{'attributes':['id',_0xe287('0x4'),_0xe287('0x5'),_0xe287('0x6'),_0xe287('0x7'),_0xe287('0x8'),'ListId',_0xe287('0x9')],'raw':![],'include':[{'model':_0xe287('0xa'),'as':'Imap'},{'model':'MailServerOut','as':_0xe287('0xb')}]},'log':'getMailAccount'});};};exports['notify']=function(_0x4cd1f4,_0x2082c6){return client[_0xe287('0x2')](_0xe287('0xc'),{'account':{'id':_0x4cd1f4},'body':_0x2082c6,'log':_0xe287('0xc')});};
\ No newline at end of file
index 94173f0..f9c2e73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c76=['getSettings','Request','ShowSetting','loginMailFrequency','GetSettings'];(function(_0x569aca,_0x4d83cb){var _0x312280=function(_0x40b5c1){while(--_0x40b5c1){_0x569aca['push'](_0x569aca['shift']());}};_0x312280(++_0x4d83cb);}(_0x1c76,0x96));var _0x61c7=function(_0x220576,_0x5b2568){_0x220576=_0x220576-0x0;var _0x492658=_0x1c76[_0x220576];return _0x492658;};'use strict';var client=require('../client');exports[_0x61c7('0x0')]=function(){return client[_0x61c7('0x1')](_0x61c7('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x61c7('0x3')]},'log':_0x61c7('0x4')});};
\ No newline at end of file
+var _0x3b92=['getSettings','Request','ShowSetting','loginMailFrequency','GetSettings','../client'];(function(_0x245632,_0x4210c3){var _0x58d2b9=function(_0x3e31c5){while(--_0x3e31c5){_0x245632['push'](_0x245632['shift']());}};_0x58d2b9(++_0x4210c3);}(_0x3b92,0x137));var _0x23b9=function(_0x13e482,_0x150dc2){_0x13e482=_0x13e482-0x0;var _0x10a28f=_0x3b92[_0x13e482];return _0x10a28f;};'use strict';var client=require(_0x23b9('0x0'));exports[_0x23b9('0x1')]=function(){return client[_0x23b9('0x2')](_0x23b9('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x23b9('0x4')]},'log':_0x23b9('0x5')});};
\ No newline at end of file
index c58ae4b..47ac31b 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(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'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(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xa9e0[_0xae7c2f];return _0x5d7001;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
index 224e81e..32210f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4d7=['port','exports','lodash','http','express','ioredis','createServer','timeout','listen','socket.io','websocket','polling','defaults','adapter','redis','../../config/triggers','../../config/socketio','default','../../config/express','../../routes','once','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xc4d7,0x152));var _0x7c4d=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0xc4d7[_0x618414];return _0x21c19a;};'use strict';var _=require(_0x7c4d('0x0'));var http=require(_0x7c4d('0x1'));var express=require(_0x7c4d('0x2'));var sticky=require('sticky-session');var Redis=require(_0x7c4d('0x3'));var config=require('../../config/environment');var app=express();var server=http[_0x7c4d('0x4')](app);server[_0x7c4d('0x5')]=0xdbba0;if(sticky[_0x7c4d('0x6')](server,config['port'])){var socketio=require(_0x7c4d('0x7'))(server,{'transports':[_0x7c4d('0x8'),_0x7c4d('0x9')]});config['redis']=_[_0x7c4d('0xa')](config['redis'],{'host':'localhost','port':0x18eb});socketio[_0x7c4d('0xb')](require('socket.io-redis')({'pubClient':new Redis(config['redis']),'subClient':new Redis(config[_0x7c4d('0xc')])}));require(_0x7c4d('0xd'))['default']();require(_0x7c4d('0xe'))[_0x7c4d('0xf')](socketio);require(_0x7c4d('0x10'))[_0x7c4d('0xf')](app);require(_0x7c4d('0x11'))[_0x7c4d('0xf')](app);}else{server[_0x7c4d('0x12')](_0x7c4d('0x13'),function(){console[_0x7c4d('0x14')](_0x7c4d('0x15'),config[_0x7c4d('0x16')]);});}exports=module[_0x7c4d('0x17')]=app;
\ No newline at end of file
+var _0x0258=['default','../../config/express','../../routes','listening','log','port','lodash','http','express','sticky-session','../../config/environment','createServer','socket.io','websocket','polling','defaults','redis','localhost','adapter','socket.io-redis','../../config/triggers'];(function(_0x321dab,_0x3ac245){var _0x33aa70=function(_0x4e57c7){while(--_0x4e57c7){_0x321dab['push'](_0x321dab['shift']());}};_0x33aa70(++_0x3ac245);}(_0x0258,0x16b));var _0x8025=function(_0x262f46,_0x4e0837){_0x262f46=_0x262f46-0x0;var _0x2b7750=_0x0258[_0x262f46];return _0x2b7750;};'use strict';var _=require(_0x8025('0x0'));var http=require(_0x8025('0x1'));var express=require(_0x8025('0x2'));var sticky=require(_0x8025('0x3'));var Redis=require('ioredis');var config=require(_0x8025('0x4'));var app=express();var server=http[_0x8025('0x5')](app);server['timeout']=0xdbba0;if(sticky['listen'](server,config['port'])){var socketio=require(_0x8025('0x6'))(server,{'transports':[_0x8025('0x7'),_0x8025('0x8')]});config['redis']=_[_0x8025('0x9')](config[_0x8025('0xa')],{'host':_0x8025('0xb'),'port':0x18eb});socketio[_0x8025('0xc')](require(_0x8025('0xd'))({'pubClient':new Redis(config[_0x8025('0xa')]),'subClient':new Redis(config[_0x8025('0xa')])}));require(_0x8025('0xe'))[_0x8025('0xf')]();require('../../config/socketio')[_0x8025('0xf')](socketio);require(_0x8025('0x10'))['default'](app);require(_0x8025('0x11'))['default'](app);}else{server['once'](_0x8025('0x12'),function(){console[_0x8025('0x13')]('Express\x20server\x20listening\x20on\x20port\x20%d!',config[_0x8025('0x14')]);});}exports=module['exports']=app;
\ No newline at end of file
index 5e4e7a7..5b2e85e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x958a=['Request','request','debug','rpc','routing','error','message','result','catch','exports','jayson/promise','bluebird','../../config/logger','client','http'];(function(_0x10a5bf,_0x187060){var _0x52f649=function(_0x638bbe){while(--_0x638bbe){_0x10a5bf['push'](_0x10a5bf['shift']());}};_0x52f649(++_0x187060);}(_0x958a,0x64));var _0xa958=function(_0x3c9d6c,_0x23d406){_0x3c9d6c=_0x3c9d6c-0x0;var _0x59be42=_0x958a[_0x3c9d6c];return _0x59be42;};'use strict';var jayson=require(_0xa958('0x0'));var BPromise=require(_0xa958('0x1'));var logger=require(_0xa958('0x2'))('routing');var client=jayson[_0xa958('0x3')][_0xa958('0x4')]({'port':0x2329});client[_0xa958('0x5')]=function(_0x50188c,_0x3c63f7){return new BPromise(function(_0x409428,_0xd901a0){return client[_0xa958('0x6')](_0x50188c,_0x3c63f7)['then'](function(_0xef790f){logger[_0xa958('0x7')](_0xa958('0x8'),_0xa958('0x9'),_0x50188c,_0x3c63f7,_0xef790f);if(_0xef790f[_0xa958('0xa')]){logger[_0xa958('0xa')]('rpc',_0xa958('0x9'),_0x50188c,_0xef790f[_0xa958('0xa')][_0xa958('0xb')],_0x3c63f7);return _0xd901a0(_0xef790f['error'][_0xa958('0xb')]);}else{return _0x409428(_0xef790f[_0xa958('0xc')]);}})[_0xa958('0xd')](function(_0x3abbbd){logger[_0xa958('0xa')](_0xa958('0x8'),_0xa958('0x9'),_0x50188c,_0x3abbbd,_0x3c63f7);return _0xd901a0(_0x3abbbd);});});};module[_0xa958('0xe')]=client;
\ No newline at end of file
+var _0x5c6c=['exports','jayson/promise','bluebird','../../config/logger','routing','http','then','error','rpc','message','result','catch'];(function(_0x2c7780,_0x100f4a){var _0x580bc8=function(_0x3d435c){while(--_0x3d435c){_0x2c7780['push'](_0x2c7780['shift']());}};_0x580bc8(++_0x100f4a);}(_0x5c6c,0x139));var _0xc5c6=function(_0x599330,_0xc9ed32){_0x599330=_0x599330-0x0;var _0xc4751a=_0x5c6c[_0x599330];return _0xc4751a;};'use strict';var jayson=require(_0xc5c6('0x0'));var BPromise=require(_0xc5c6('0x1'));var logger=require(_0xc5c6('0x2'))(_0xc5c6('0x3'));var client=jayson['client'][_0xc5c6('0x4')]({'port':0x2329});client['Request']=function(_0x5748e7,_0x34e4bc){return new BPromise(function(_0x4c6a63,_0x527b79){return client['request'](_0x5748e7,_0x34e4bc)[_0xc5c6('0x5')](function(_0x2e8305){logger['debug']('rpc',_0xc5c6('0x3'),_0x5748e7,_0x34e4bc,_0x2e8305);if(_0x2e8305[_0xc5c6('0x6')]){logger[_0xc5c6('0x6')](_0xc5c6('0x7'),'routing',_0x5748e7,_0x2e8305['error'][_0xc5c6('0x8')],_0x34e4bc);return _0x527b79(_0x2e8305[_0xc5c6('0x6')]['message']);}else{return _0x4c6a63(_0x2e8305[_0xc5c6('0x9')]);}})[_0xc5c6('0xa')](function(_0x5be7fc){logger[_0xc5c6('0x6')](_0xc5c6('0x7'),_0xc5c6('0x3'),_0x5748e7,_0x5be7fc,_0x34e4bc);return _0x527b79(_0x5be7fc);});});};module[_0xc5c6('0xb')]=client;
\ No newline at end of file
index ed6a827..a7c0072 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ee4=['initWhatsappQueues','listen','catch','log','./server','./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','then','getAgents','initIntervals','getOpenchannelQueues','initOpenchannelQueues','initChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues','getWhatsappQueues'];(function(_0x5a27e0,_0x3104e5){var _0x4a2a63=function(_0x2b5a77){while(--_0x2b5a77){_0x5a27e0['push'](_0x5a27e0['shift']());}};_0x4a2a63(++_0x3104e5);}(_0x8ee4,0xee));var _0x48ee=function(_0xf14cfe,_0x5428e6){_0xf14cfe=_0xf14cfe-0x0;var _0x3a9c2a=_0x8ee4[_0xf14cfe];return _0x3a9c2a;};'use strict';var BPromise=require('bluebird');var server=require(_0x48ee('0x0'));var Realtime=require(_0x48ee('0x1'));var user=require(_0x48ee('0x2'));var interval=require(_0x48ee('0x3'));var openchannelQueue=require(_0x48ee('0x4'));var chatQueue=require(_0x48ee('0x5'));var smsQueue=require(_0x48ee('0x6'));var mailQueue=require(_0x48ee('0x7'));var faxQueue=require(_0x48ee('0x8'));var whatsappQueue=require(_0x48ee('0x9'));var realtime=new Realtime();function initRealtime(){return BPromise['resolve']()[_0x48ee('0xa')](user[_0x48ee('0xb')]())[_0x48ee('0xa')](realtime['initAgents']())[_0x48ee('0xa')](interval['getIntervals']())[_0x48ee('0xa')](realtime[_0x48ee('0xc')]())[_0x48ee('0xa')](openchannelQueue[_0x48ee('0xd')]())[_0x48ee('0xa')](realtime[_0x48ee('0xe')]())[_0x48ee('0xa')](chatQueue['getChatQueues']())[_0x48ee('0xa')](realtime[_0x48ee('0xf')]())[_0x48ee('0xa')](smsQueue[_0x48ee('0x10')]())[_0x48ee('0xa')](realtime[_0x48ee('0x11')]())['then'](mailQueue[_0x48ee('0x12')]())['then'](realtime[_0x48ee('0x13')]())['then'](faxQueue[_0x48ee('0x14')]())[_0x48ee('0xa')](realtime['initFaxQueues']())[_0x48ee('0xa')](whatsappQueue[_0x48ee('0x15')]())[_0x48ee('0xa')](realtime[_0x48ee('0x16')]())['then'](function(){return realtime;});}function main(){return server[_0x48ee('0x17')](realtime)['then'](function(_0x26150c){return initRealtime();})['then'](function(_0x4eb4b2){return setInterval(initRealtime,0x1388);})[_0x48ee('0x18')](function(_0x1282f2){console[_0x48ee('0x19')](_0x1282f2);});}main();
\ No newline at end of file
+var _0x5d88=['./rpc/smsQueue','./rpc/faxQueue','then','getAgents','initAgents','getIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','initFaxQueues','getWhatsappQueues','listen','log','bluebird','./realtime','./rpc/user','./rpc/interval'];(function(_0x4e3b9c,_0x4d76a3){var _0x358b13=function(_0x2409d6){while(--_0x2409d6){_0x4e3b9c['push'](_0x4e3b9c['shift']());}};_0x358b13(++_0x4d76a3);}(_0x5d88,0x130));var _0x85d8=function(_0xe05d9c,_0x4de4bc){_0xe05d9c=_0xe05d9c-0x0;var _0x170227=_0x5d88[_0xe05d9c];return _0x170227;};'use strict';var BPromise=require(_0x85d8('0x0'));var server=require('./server');var Realtime=require(_0x85d8('0x1'));var user=require(_0x85d8('0x2'));var interval=require(_0x85d8('0x3'));var openchannelQueue=require('./rpc/openchannelQueue');var chatQueue=require('./rpc/chatQueue');var smsQueue=require(_0x85d8('0x4'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require(_0x85d8('0x5'));var whatsappQueue=require('./rpc/whatsappQueue');var realtime=new Realtime();function initRealtime(){return BPromise['resolve']()[_0x85d8('0x6')](user[_0x85d8('0x7')]())[_0x85d8('0x6')](realtime[_0x85d8('0x8')]())[_0x85d8('0x6')](interval[_0x85d8('0x9')]())['then'](realtime['initIntervals']())[_0x85d8('0x6')](openchannelQueue[_0x85d8('0xa')]())[_0x85d8('0x6')](realtime[_0x85d8('0xb')]())[_0x85d8('0x6')](chatQueue[_0x85d8('0xc')]())['then'](realtime[_0x85d8('0xd')]())[_0x85d8('0x6')](smsQueue[_0x85d8('0xe')]())[_0x85d8('0x6')](realtime[_0x85d8('0xf')]())[_0x85d8('0x6')](mailQueue[_0x85d8('0x10')]())[_0x85d8('0x6')](realtime[_0x85d8('0x11')]())[_0x85d8('0x6')](faxQueue['getFaxQueues']())[_0x85d8('0x6')](realtime[_0x85d8('0x12')]())[_0x85d8('0x6')](whatsappQueue[_0x85d8('0x13')]())['then'](realtime['initWhatsappQueues']())[_0x85d8('0x6')](function(){return realtime;});}function main(){return server[_0x85d8('0x14')](realtime)[_0x85d8('0x6')](function(_0x58fc7f){return initRealtime();})[_0x85d8('0x6')](function(_0x41997c){return setInterval(initRealtime,0x1388);})['catch'](function(_0x37890e){console[_0x85d8('0x15')](_0x37890e);});}main();
\ No newline at end of file
index eb37dae..1f9b217 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['init','parse','map','object','lodash','util','events','EventEmitter','isNil','register','ignoreFactChanges','inherits','prototype','rules','isArray','concat','isObject','push','sync','filter','activeRules','orderBy','asc','execute','result','clone','name','ruleRef','call','next','isEqual','nextTick','restart','length','condition','matchPath','noop','findRules','matches','turn','prioritize','priority','toJSON','toString','consequence','fromJSON'];(function(_0x36afd7,_0x1181dc){var _0x2e0da0=function(_0x2254e1){while(--_0x2254e1){_0x36afd7['push'](_0x36afd7['shift']());}};_0x2e0da0(++_0x1181dc);}(_0x814b,0x1a2));var _0xb814=function(_0x4557dc,_0x3687b2){_0x4557dc=_0x4557dc-0x0;var _0x1377aa=_0x814b[_0x4557dc];return _0x1377aa;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var EventEmitter=require(_0xb814('0x2'))[_0xb814('0x3')];function RuleEngine(_0xfbb64b,_0x477725){this['init']();if(!_[_0xb814('0x4')](_0xfbb64b)){this[_0xb814('0x5')](_0xfbb64b);}if(_0x477725){this[_0xb814('0x6')]=_0x477725[_0xb814('0x6')];}return this;}util[_0xb814('0x7')](RuleEngine,EventEmitter);RuleEngine[_0xb814('0x8')]['init']=function(_0x3b0829){this[_0xb814('0x9')]=[];this['activeRules']=[];};RuleEngine[_0xb814('0x8')][_0xb814('0x5')]=function(_0x186d5a){if(Array[_0xb814('0xa')](_0x186d5a)){this[_0xb814('0x9')]=this[_0xb814('0x9')][_0xb814('0xb')](_0x186d5a);}else if(_0x186d5a!==null&&_[_0xb814('0xc')](_0x186d5a)){this[_0xb814('0x9')][_0xb814('0xd')](_0x186d5a);}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0xe')]=function(){this['activeRules']=this[_0xb814('0x9')][_0xb814('0xf')](function(_0x35b10d){if(_[_0xb814('0x4')](_0x35b10d['on'])){_0x35b10d['on']=!![];}if(_0x35b10d['on']===!![]){return _0x35b10d;}});this[_0xb814('0x10')]=_[_0xb814('0x11')](this[_0xb814('0x10')],['p'],[_0xb814('0x12')]);};RuleEngine[_0xb814('0x8')][_0xb814('0x13')]=function(_0x3f4881,_0x44fb96){var _0x17f5bd=![];_0x3f4881[_0xb814('0x14')]=!![];var _0x303aca=_[_0xb814('0x15')](_0x3f4881);var _0x45e0d0=_[_0xb814('0x15')](_0x3f4881);var _0x125ce2=this[_0xb814('0x10')];var _0x7a21ef=[];var _0x48c9df=this[_0xb814('0x6')];(function FnRuleLoop(_0x55ba16){var _0x270598={'rules':function(){return _0x125ce2;},'rule':function(){return _0x125ce2[_0x55ba16];},'when':function(_0xfac75b){if(_0xfac75b){var _0x4c3007=_0x125ce2[_0x55ba16]['consequence'];_0x4c3007['ruleRef']=_0x125ce2[_0x55ba16]['id']||_0x125ce2[_0x55ba16][_0xb814('0x16')]||'index_'+_0x55ba16;process['nextTick'](function(){_0x7a21ef[_0xb814('0xd')](_0x4c3007[_0xb814('0x17')]);_0x4c3007[_0xb814('0x18')](_0x303aca,_0x270598);});}else{process['nextTick'](function(){_0x270598[_0xb814('0x19')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x17f5bd=!![];return FnRuleLoop(0x0);},'next':function(_0x531032){if(!_0x48c9df&&!_[_0xb814('0x1a')](_0x45e0d0,_0x303aca)){_0x45e0d0=_[_0xb814('0x15')](_0x303aca);process[_0xb814('0x1b')](function(){_0x270598[_0xb814('0x1c')]();});}else{process[_0xb814('0x1b')](function(){if(_[_0xb814('0x4')](_0x531032)){return FnRuleLoop(_0x55ba16+0x1);}else{return FnRuleLoop(_0x531032);}});}}};if(_0x55ba16<_0x125ce2[_0xb814('0x1d')]&&_0x17f5bd===![]){var _0x594470=_0x125ce2[_0x55ba16][_0xb814('0x1e')];_0x594470['call'](_0x303aca,_0x270598);}else{process[_0xb814('0x1b')](function(){_0x303aca[_0xb814('0x1f')]=_0x7a21ef;return _0x44fb96?_0x44fb96(_0x303aca):_[_0xb814('0x20')]();});}}(0x0));};RuleEngine[_0xb814('0x8')][_0xb814('0x21')]=function(_0xb9e57d){if(_[_0xb814('0x4')](_0xb9e57d)){return this['rules'];}else{var _0x392222=_[_0xb814('0x22')](_0xb9e57d);return _[_0xb814('0xf')](this[_0xb814('0x9')],_0x392222);}};RuleEngine[_0xb814('0x8')][_0xb814('0x23')]=function(_0x3f0150,_0x1e4e89){var _0x5a6291=_0x3f0150==='on'||_0x3f0150==='ON'?!![]:![];var _0x271aa8=this[_0xb814('0x21')](_0x1e4e89);for(var _0x52ed64=0x0,_0x9008b2=_0x271aa8[_0xb814('0x1d')];_0x52ed64<_0x9008b2;_0x52ed64+=0x1){_0x271aa8[_0x52ed64]['on']=_0x5a6291;}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0x24')]=function(_0x2051d0,_0x58c3ca){_0x2051d0=parseInt(_0x2051d0,0xa);var _0x338a28=this['findRules'](_0x58c3ca);for(var _0x6efe9a=0x0,_0x5f3e9b=_0x338a28['length'];_0x6efe9a<_0x5f3e9b;_0x6efe9a+=0x1){_0x338a28[_0x6efe9a][_0xb814('0x25')]=_0x2051d0;}this['sync']();};RuleEngine[_0xb814('0x8')][_0xb814('0x26')]=function(){var _0x2b91bd=this['rules'];if(_0x2b91bd instanceof Array){_0x2b91bd=_0x2b91bd['map'](function(_0x26d3a9){_0x26d3a9[_0xb814('0x1e')]=_0x26d3a9['condition'][_0xb814('0x27')]();_0x26d3a9[_0xb814('0x28')]=_0x26d3a9[_0xb814('0x28')][_0xb814('0x27')]();return _0x26d3a9;});}else if(!_[_0xb814('0x4')](_0x2b91bd)){_0x2b91bd[_0xb814('0x1e')]=_0x2b91bd[_0xb814('0x1e')]['toString']();_0x2b91bd[_0xb814('0x28')]=_0x2b91bd[_0xb814('0x28')][_0xb814('0x27')]();}return _0x2b91bd;};RuleEngine[_0xb814('0x8')][_0xb814('0x29')]=function(_0x4ff31a){this[_0xb814('0x2a')]();if(_['isString'](_0x4ff31a)){_0x4ff31a=JSON[_0xb814('0x2b')](_0x4ff31a);}if(_0x4ff31a instanceof Array){_0x4ff31a=_0x4ff31a[_0xb814('0x2c')](function(_0xe0f509){_0xe0f509['condition']=eval('('+_0xe0f509[_0xb814('0x1e')]+')');_0xe0f509[_0xb814('0x28')]=eval('('+_0xe0f509['consequence']+')');return _0xe0f509;});}else if(_0x4ff31a!==null&&typeof _0x4ff31a==_0xb814('0x2d')){_0x4ff31a[_0xb814('0x1e')]=eval('('+_0x4ff31a[_0xb814('0x1e')]+')');_0x4ff31a[_0xb814('0x28')]=eval('('+_0x4ff31a[_0xb814('0x28')]+')');}this[_0xb814('0x5')](_0x4ff31a);};module['exports']=RuleEngine;
\ No newline at end of file
+var _0x2ef3=['next','isEqual','restart','condition','matches','filter','turn','prioritize','findRules','length','priority','toJSON','map','toString','fromJSON','parse','object','exports','lodash','util','events','EventEmitter','isNil','register','ignoreFactChanges','inherits','rules','activeRules','prototype','isArray','concat','push','sync','orderBy','result','clone','consequence','name','index_','nextTick','ruleRef','call'];(function(_0x24cfa0,_0x1bafe8){var _0x58882c=function(_0x2063be){while(--_0x2063be){_0x24cfa0['push'](_0x24cfa0['shift']());}};_0x58882c(++_0x1bafe8);}(_0x2ef3,0xba));var _0x32ef=function(_0x2f0971,_0x14a986){_0x2f0971=_0x2f0971-0x0;var _0x3cb533=_0x2ef3[_0x2f0971];return _0x3cb533;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var EventEmitter=require(_0x32ef('0x2'))[_0x32ef('0x3')];function RuleEngine(_0x3944df,_0x38047b){this['init']();if(!_[_0x32ef('0x4')](_0x3944df)){this[_0x32ef('0x5')](_0x3944df);}if(_0x38047b){this['ignoreFactChanges']=_0x38047b[_0x32ef('0x6')];}return this;}util[_0x32ef('0x7')](RuleEngine,EventEmitter);RuleEngine['prototype']['init']=function(_0x2c0089){this[_0x32ef('0x8')]=[];this[_0x32ef('0x9')]=[];};RuleEngine[_0x32ef('0xa')][_0x32ef('0x5')]=function(_0x298066){if(Array[_0x32ef('0xb')](_0x298066)){this[_0x32ef('0x8')]=this[_0x32ef('0x8')][_0x32ef('0xc')](_0x298066);}else if(_0x298066!==null&&_['isObject'](_0x298066)){this['rules'][_0x32ef('0xd')](_0x298066);}this[_0x32ef('0xe')]();};RuleEngine[_0x32ef('0xa')][_0x32ef('0xe')]=function(){this['activeRules']=this[_0x32ef('0x8')]['filter'](function(_0x1a5106){if(_['isNil'](_0x1a5106['on'])){_0x1a5106['on']=!![];}if(_0x1a5106['on']===!![]){return _0x1a5106;}});this[_0x32ef('0x9')]=_[_0x32ef('0xf')](this['activeRules'],['p'],['asc']);};RuleEngine[_0x32ef('0xa')]['execute']=function(_0x326fce,_0x40a6e6){var _0x93d492=![];_0x326fce[_0x32ef('0x10')]=!![];var _0x57aff1=_['clone'](_0x326fce);var _0x531e30=_[_0x32ef('0x11')](_0x326fce);var _0x3950e6=this[_0x32ef('0x9')];var _0x53a5ca=[];var _0x5d559b=this[_0x32ef('0x6')];(function FnRuleLoop(_0x1a9476){var _0x286bfb={'rules':function(){return _0x3950e6;},'rule':function(){return _0x3950e6[_0x1a9476];},'when':function(_0x57863c){if(_0x57863c){var _0xbe37f6=_0x3950e6[_0x1a9476][_0x32ef('0x12')];_0xbe37f6['ruleRef']=_0x3950e6[_0x1a9476]['id']||_0x3950e6[_0x1a9476][_0x32ef('0x13')]||_0x32ef('0x14')+_0x1a9476;process[_0x32ef('0x15')](function(){_0x53a5ca[_0x32ef('0xd')](_0xbe37f6[_0x32ef('0x16')]);_0xbe37f6[_0x32ef('0x17')](_0x57aff1,_0x286bfb);});}else{process['nextTick'](function(){_0x286bfb[_0x32ef('0x18')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x93d492=!![];return FnRuleLoop(0x0);},'next':function(_0x5cc3ef){if(!_0x5d559b&&!_[_0x32ef('0x19')](_0x531e30,_0x57aff1)){_0x531e30=_[_0x32ef('0x11')](_0x57aff1);process['nextTick'](function(){_0x286bfb[_0x32ef('0x1a')]();});}else{process[_0x32ef('0x15')](function(){if(_[_0x32ef('0x4')](_0x5cc3ef)){return FnRuleLoop(_0x1a9476+0x1);}else{return FnRuleLoop(_0x5cc3ef);}});}}};if(_0x1a9476<_0x3950e6['length']&&_0x93d492===![]){var _0x57f5e5=_0x3950e6[_0x1a9476][_0x32ef('0x1b')];_0x57f5e5[_0x32ef('0x17')](_0x57aff1,_0x286bfb);}else{process[_0x32ef('0x15')](function(){_0x57aff1['matchPath']=_0x53a5ca;return _0x40a6e6?_0x40a6e6(_0x57aff1):_['noop']();});}}(0x0));};RuleEngine[_0x32ef('0xa')]['findRules']=function(_0x51a412){if(_[_0x32ef('0x4')](_0x51a412)){return this[_0x32ef('0x8')];}else{var _0x371540=_[_0x32ef('0x1c')](_0x51a412);return _[_0x32ef('0x1d')](this[_0x32ef('0x8')],_0x371540);}};RuleEngine[_0x32ef('0xa')][_0x32ef('0x1e')]=function(_0x338f19,_0x2f52d7){var _0x1335e2=_0x338f19==='on'||_0x338f19==='ON'?!![]:![];var _0xba4b3f=this['findRules'](_0x2f52d7);for(var _0xd65fde=0x0,_0x2f5d06=_0xba4b3f['length'];_0xd65fde<_0x2f5d06;_0xd65fde+=0x1){_0xba4b3f[_0xd65fde]['on']=_0x1335e2;}this[_0x32ef('0xe')]();};RuleEngine[_0x32ef('0xa')][_0x32ef('0x1f')]=function(_0x26e207,_0x50a95b){_0x26e207=parseInt(_0x26e207,0xa);var _0x10e38c=this[_0x32ef('0x20')](_0x50a95b);for(var _0x31dbc3=0x0,_0x2ac686=_0x10e38c[_0x32ef('0x21')];_0x31dbc3<_0x2ac686;_0x31dbc3+=0x1){_0x10e38c[_0x31dbc3][_0x32ef('0x22')]=_0x26e207;}this[_0x32ef('0xe')]();};RuleEngine['prototype'][_0x32ef('0x23')]=function(){var _0x537214=this[_0x32ef('0x8')];if(_0x537214 instanceof Array){_0x537214=_0x537214[_0x32ef('0x24')](function(_0x5a9565){_0x5a9565[_0x32ef('0x1b')]=_0x5a9565[_0x32ef('0x1b')][_0x32ef('0x25')]();_0x5a9565[_0x32ef('0x12')]=_0x5a9565[_0x32ef('0x12')]['toString']();return _0x5a9565;});}else if(!_['isNil'](_0x537214)){_0x537214[_0x32ef('0x1b')]=_0x537214['condition'][_0x32ef('0x25')]();_0x537214[_0x32ef('0x12')]=_0x537214[_0x32ef('0x12')][_0x32ef('0x25')]();}return _0x537214;};RuleEngine[_0x32ef('0xa')][_0x32ef('0x26')]=function(_0x566b56){this['init']();if(_['isString'](_0x566b56)){_0x566b56=JSON[_0x32ef('0x27')](_0x566b56);}if(_0x566b56 instanceof Array){_0x566b56=_0x566b56[_0x32ef('0x24')](function(_0x136b02){_0x136b02['condition']=eval('('+_0x136b02['condition']+')');_0x136b02[_0x32ef('0x12')]=eval('('+_0x136b02[_0x32ef('0x12')]+')');return _0x136b02;});}else if(_0x566b56!==null&&typeof _0x566b56==_0x32ef('0x28')){_0x566b56['condition']=eval('('+_0x566b56['condition']+')');_0x566b56[_0x32ef('0x12')]=eval('('+_0x566b56[_0x32ef('0x12')]+')');}this[_0x32ef('0x5')](_0x566b56);};module[_0x32ef('0x29')]=RuleEngine;
\ No newline at end of file
index 6955824..7e0247f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d25=['client','http','request','then','error','message','result','catch','bluebird','jayson/promise'];(function(_0x50e02c,_0x2d91fa){var _0x2e992a=function(_0x44320f){while(--_0x44320f){_0x50e02c['push'](_0x50e02c['shift']());}};_0x2e992a(++_0x2d91fa);}(_0x4d25,0x18e));var _0x54d2=function(_0xc6a6b8,_0x4eb53f){_0xc6a6b8=_0xc6a6b8-0x0;var _0x15def2=_0x4d25[_0xc6a6b8];return _0x15def2;};'use strict';var BPromise=require(_0x54d2('0x0'));var jayson=require(_0x54d2('0x1'));var client=jayson[_0x54d2('0x2')][_0x54d2('0x3')]({'port':0x232b});function request(_0x4e57d2,_0x3ae906){return new BPromise(function(_0x5ed349,_0x26f090){return client[_0x54d2('0x4')](_0x4e57d2,_0x3ae906)[_0x54d2('0x5')](function(_0x353b9e){if(_0x353b9e[_0x54d2('0x6')]){return _0x26f090(_0x353b9e[_0x54d2('0x6')][_0x54d2('0x7')]);}else{return _0x5ed349(_0x353b9e[_0x54d2('0x8')]);}})[_0x54d2('0x9')](function(_0x1d6077){return _0x26f090(_0x1d6077);});});}exports['sendMailMessage']=function(_0x38d181,_0x175d31){return request('SendMail',{'account':_0x38d181,'message':_0x175d31});};
\ No newline at end of file
+var _0xbedc=['jayson/promise','client','request','error','message','result','catch','sendMailMessage'];(function(_0x503ecd,_0x542e82){var _0x25cb6a=function(_0x4f87b9){while(--_0x4f87b9){_0x503ecd['push'](_0x503ecd['shift']());}};_0x25cb6a(++_0x542e82);}(_0xbedc,0x160));var _0xcbed=function(_0x58226c,_0x3333d9){_0x58226c=_0x58226c-0x0;var _0x545de4=_0xbedc[_0x58226c];return _0x545de4;};'use strict';var BPromise=require('bluebird');var jayson=require(_0xcbed('0x0'));var client=jayson[_0xcbed('0x1')]['http']({'port':0x232b});function request(_0x45b1d3,_0x2209cc){return new BPromise(function(_0x2dabe1,_0x59cd1d){return client[_0xcbed('0x2')](_0x45b1d3,_0x2209cc)['then'](function(_0x578565){if(_0x578565['error']){return _0x59cd1d(_0x578565[_0xcbed('0x3')][_0xcbed('0x4')]);}else{return _0x2dabe1(_0x578565[_0xcbed('0x5')]);}})[_0xcbed('0x6')](function(_0x1ab61c){return _0x59cd1d(_0x1ab61c);});});}exports[_0xcbed('0x7')]=function(_0x245149,_0x51df52){return request('SendMail',{'account':_0x245149,'message':_0x51df52});};
\ No newline at end of file
index ed078fa..1f78cf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc009=['idle','prototype','mail','chat','openchannel','fax','sms','Status','toNumber','format','chatStatusTime','faxStatus','faxStatusTime','whatsappCurrentCapacity','busy','busyQueue','stringify','md5','emit','user:save','exports','lodash','moment','ioredis','../../../config/environment','redis','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_0xc009,0xc9));var _0x9c00=function(_0x5c3708,_0x9b8697){_0x5c3708=_0x5c3708-0x0;var _0x1afe33=_0xc009[_0x5c3708];return _0x1afe33;};'use strict';var _=require(_0x9c00('0x0'));var moment=require(_0x9c00('0x1'));var md5=require('md5');var Redis=require(_0x9c00('0x2'));var config=require(_0x9c00('0x3'));config['redis']=_['defaults'](config[_0x9c00('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x9c00('0x5'))(new Redis(config[_0x9c00('0x4')]));function Agent(_0x437fa6){this['id']=_0x437fa6['id']||0x0;this[_0x9c00('0x6')]=_0x437fa6[_0x9c00('0x6')]||'';this['online']=_0x437fa6[_0x9c00('0x7')]||!![];this['voicePause']=_0x437fa6[_0x9c00('0x8')]||![];this['chatPause']=_0x437fa6[_0x9c00('0x9')]||![];this[_0x9c00('0xa')]=_0x437fa6[_0x9c00('0xa')]||![];this[_0x9c00('0xb')]=_0x437fa6[_0x9c00('0xb')]||![];this[_0x9c00('0xc')]=_0x437fa6[_0x9c00('0xc')]||![];this['openchannelPause']=_0x437fa6[_0x9c00('0xd')]||![];this[_0x9c00('0xe')]=_0x9c00('0xf');this['chatStatusTime']=0x0;this[_0x9c00('0x10')]=_0x437fa6[_0x9c00('0x10')]||0x0;this[_0x9c00('0x11')]=0x0;this[_0x9c00('0x12')]='unknown';this[_0x9c00('0x13')]=0x0;this[_0x9c00('0x14')]=_0x437fa6[_0x9c00('0x14')]||0x0;this[_0x9c00('0x15')]=0x0;this['faxStatus']=_0x9c00('0xf');this['faxStatusTime']=0x0;this[_0x9c00('0x16')]=_0x437fa6[_0x9c00('0x16')]||0x0;this[_0x9c00('0x17')]=0x0;this[_0x9c00('0x18')]=_0x9c00('0xf');this[_0x9c00('0x19')]=0x0;this[_0x9c00('0x1a')]=_0x437fa6[_0x9c00('0x1a')]||0x0;this[_0x9c00('0x1b')]=0x0;this[_0x9c00('0x1c')]=_0x9c00('0xf');this[_0x9c00('0x1d')]=0x0;this['whatsappCapacity']=_0x437fa6[_0x9c00('0x1e')]||0x0;this['whatsappCurrentCapacity']=0x0;this[_0x9c00('0x1f')]='unknown';this[_0x9c00('0x20')]=0x0;this[_0x9c00('0x21')]=_0x437fa6[_0x9c00('0x21')]||0x0;this['openchannelCurrentCapacity']=0x0;this['busy']=![];this['busyQueue']=undefined;this['md5']='';this['updateRealtime']();}Agent['prototype'][_0x9c00('0x22')]=function(_0xdf3756){if(this[_0xdf3756+_0x9c00('0x23')]>0x0){if(this[_0xdf3756+_0x9c00('0x24')]>0x0&&this[_0xdf3756+_0x9c00('0x23')]>=this[_0xdf3756+_0x9c00('0x24')]){return _0x9c00('0x25');}else{return _0x9c00('0x26');}}else{return _0x9c00('0x27');}};Agent[_0x9c00('0x28')]['updateRealtime']=function(){var _0x5f3bf3=[_0x9c00('0x29'),_0x9c00('0x2a'),_0x9c00('0x2b'),_0x9c00('0x2c'),_0x9c00('0x2d'),'whatsapp'];for(var _0x49e336=0x0;_0x49e336<_0x5f3bf3['length'];_0x49e336+=0x1){var _0x27e0ad=this['getChannelStatus'](_0x5f3bf3[_0x49e336]);if(this[_0x5f3bf3[_0x49e336]+_0x9c00('0x2e')]!==_0x27e0ad){this[_0x5f3bf3[_0x49e336]+'StatusTime']=_[_0x9c00('0x2f')](moment()[_0x9c00('0x30')]('x'));}this[_0x5f3bf3[_0x49e336]+_0x9c00('0x2e')]=_0x27e0ad;}var _0x3a87d9={'id':this['id'],'name':this[_0x9c00('0x6')],'online':this[_0x9c00('0x7')],'voicePause':this[_0x9c00('0x8')],'chatPause':this['chatPause'],'mailPause':this[_0x9c00('0xa')],'smsPause':this[_0x9c00('0xc')],'faxPause':this[_0x9c00('0xb')],'openchannelPause':this[_0x9c00('0xd')],'chatStatus':this[_0x9c00('0xe')],'chatStatusTime':this[_0x9c00('0x31')],'chatCapacity':this[_0x9c00('0x10')],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0x9c00('0x13')],'mailCapacity':this[_0x9c00('0x14')],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this[_0x9c00('0x32')],'faxStatusTime':this[_0x9c00('0x33')],'faxCapacity':this['faxCapacity'],'faxCurrentCapacity':this[_0x9c00('0x17')],'smsStatus':this['smsStatus'],'smsStatusTime':this[_0x9c00('0x19')],'smsCapacity':this[_0x9c00('0x1a')],'smsCurrentCapacity':this[_0x9c00('0x1b')],'whatsappStatus':this[_0x9c00('0x1c')],'whatsappStatusTime':this[_0x9c00('0x1d')],'whatsappCapacity':this[_0x9c00('0x1e')],'whatsappCurrentCapacity':this[_0x9c00('0x34')],'openchannelStatus':this[_0x9c00('0x1f')],'openchannelStatusTime':this[_0x9c00('0x20')],'openchannelCapacity':this[_0x9c00('0x21')],'openchannelCurrentCapacity':this['openchannelCurrentCapacity'],'busy':this[_0x9c00('0x35')],'busyQueue':this[_0x9c00('0x36')]};var _0x374806=md5(JSON[_0x9c00('0x37')](_0x3a87d9));if(this[_0x9c00('0x38')]!==_0x374806){this[_0x9c00('0x38')]=_0x374806;io[_0x9c00('0x39')](_0x9c00('0x3a'),_0x3a87d9);}};module[_0x9c00('0x3b')]=Agent;
\ No newline at end of file
+var _0xcb10=['length','Status','StatusTime','toNumber','chatStatusTime','faxStatus','faxCurrentCapacity','smsStatusTime','whatsappCurrentCapacity','openchannelStatus','openchannelCurrentCapacity','busyQueue','stringify','emit','user:save','exports','lodash','moment','ioredis','../../../config/environment','defaults','localhost','socket.io-emitter','redis','name','online','voicePause','chatPause','mailPause','faxPause','openchannelPause','chatStatus','chatCapacity','mailStatus','unknown','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatusTime','faxCapacity','smsStatus','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','openchannelStatusTime','openchannelCapacity','busy','md5','updateRealtime','prototype','CurrentCapacity','Capacity','maxcapacity','idle','mail','chat','fax','sms','whatsapp'];(function(_0x169724,_0x3c77f4){var _0x9c9c94=function(_0x4aa35d){while(--_0x4aa35d){_0x169724['push'](_0x169724['shift']());}};_0x9c9c94(++_0x3c77f4);}(_0xcb10,0x104));var _0x0cb1=function(_0x4b7895,_0x3c4f5d){_0x4b7895=_0x4b7895-0x0;var _0x264180=_0xcb10[_0x4b7895];return _0x264180;};'use strict';var _=require(_0x0cb1('0x0'));var moment=require(_0x0cb1('0x1'));var md5=require('md5');var Redis=require(_0x0cb1('0x2'));var config=require(_0x0cb1('0x3'));config['redis']=_[_0x0cb1('0x4')](config['redis'],{'host':_0x0cb1('0x5'),'port':0x18eb});var io=require(_0x0cb1('0x6'))(new Redis(config[_0x0cb1('0x7')]));function Agent(_0x1cf87a){this['id']=_0x1cf87a['id']||0x0;this[_0x0cb1('0x8')]=_0x1cf87a[_0x0cb1('0x8')]||'';this[_0x0cb1('0x9')]=_0x1cf87a[_0x0cb1('0x9')]||!![];this['voicePause']=_0x1cf87a[_0x0cb1('0xa')]||![];this[_0x0cb1('0xb')]=_0x1cf87a[_0x0cb1('0xb')]||![];this[_0x0cb1('0xc')]=_0x1cf87a[_0x0cb1('0xc')]||![];this[_0x0cb1('0xd')]=_0x1cf87a[_0x0cb1('0xd')]||![];this['smsPause']=_0x1cf87a['smsPause']||![];this['openchannelPause']=_0x1cf87a[_0x0cb1('0xe')]||![];this[_0x0cb1('0xf')]='unknown';this['chatStatusTime']=0x0;this['chatCapacity']=_0x1cf87a[_0x0cb1('0x10')]||0x0;this['chatCurrentCapacity']=0x0;this[_0x0cb1('0x11')]=_0x0cb1('0x12');this[_0x0cb1('0x13')]=0x0;this[_0x0cb1('0x14')]=_0x1cf87a[_0x0cb1('0x14')]||0x0;this[_0x0cb1('0x15')]=0x0;this['faxStatus']=_0x0cb1('0x12');this[_0x0cb1('0x16')]=0x0;this['faxCapacity']=_0x1cf87a[_0x0cb1('0x17')]||0x0;this['faxCurrentCapacity']=0x0;this[_0x0cb1('0x18')]=_0x0cb1('0x12');this['smsStatusTime']=0x0;this[_0x0cb1('0x19')]=_0x1cf87a[_0x0cb1('0x19')]||0x0;this[_0x0cb1('0x1a')]=0x0;this[_0x0cb1('0x1b')]='unknown';this[_0x0cb1('0x1c')]=0x0;this[_0x0cb1('0x1d')]=_0x1cf87a[_0x0cb1('0x1d')]||0x0;this['whatsappCurrentCapacity']=0x0;this['openchannelStatus']=_0x0cb1('0x12');this[_0x0cb1('0x1e')]=0x0;this['openchannelCapacity']=_0x1cf87a[_0x0cb1('0x1f')]||0x0;this['openchannelCurrentCapacity']=0x0;this[_0x0cb1('0x20')]=![];this['busyQueue']=undefined;this[_0x0cb1('0x21')]='';this[_0x0cb1('0x22')]();}Agent[_0x0cb1('0x23')]['getChannelStatus']=function(_0x2ec66f){if(this[_0x2ec66f+_0x0cb1('0x24')]>0x0){if(this[_0x2ec66f+_0x0cb1('0x25')]>0x0&&this[_0x2ec66f+_0x0cb1('0x24')]>=this[_0x2ec66f+'Capacity']){return _0x0cb1('0x26');}else{return'working';}}else{return _0x0cb1('0x27');}};Agent[_0x0cb1('0x23')][_0x0cb1('0x22')]=function(){var _0x233056=[_0x0cb1('0x28'),_0x0cb1('0x29'),'openchannel',_0x0cb1('0x2a'),_0x0cb1('0x2b'),_0x0cb1('0x2c')];for(var _0x21189f=0x0;_0x21189f<_0x233056[_0x0cb1('0x2d')];_0x21189f+=0x1){var _0x421183=this['getChannelStatus'](_0x233056[_0x21189f]);if(this[_0x233056[_0x21189f]+_0x0cb1('0x2e')]!==_0x421183){this[_0x233056[_0x21189f]+_0x0cb1('0x2f')]=_[_0x0cb1('0x30')](moment()['format']('x'));}this[_0x233056[_0x21189f]+_0x0cb1('0x2e')]=_0x421183;}var _0x57da8d={'id':this['id'],'name':this[_0x0cb1('0x8')],'online':this[_0x0cb1('0x9')],'voicePause':this[_0x0cb1('0xa')],'chatPause':this[_0x0cb1('0xb')],'mailPause':this[_0x0cb1('0xc')],'smsPause':this['smsPause'],'faxPause':this[_0x0cb1('0xd')],'openchannelPause':this[_0x0cb1('0xe')],'chatStatus':this[_0x0cb1('0xf')],'chatStatusTime':this[_0x0cb1('0x31')],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this[_0x0cb1('0x11')],'mailStatusTime':this[_0x0cb1('0x13')],'mailCapacity':this[_0x0cb1('0x14')],'mailCurrentCapacity':this[_0x0cb1('0x15')],'faxStatus':this[_0x0cb1('0x32')],'faxStatusTime':this[_0x0cb1('0x16')],'faxCapacity':this[_0x0cb1('0x17')],'faxCurrentCapacity':this[_0x0cb1('0x33')],'smsStatus':this[_0x0cb1('0x18')],'smsStatusTime':this[_0x0cb1('0x34')],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0x0cb1('0x1a')],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this['whatsappStatusTime'],'whatsappCapacity':this[_0x0cb1('0x1d')],'whatsappCurrentCapacity':this[_0x0cb1('0x35')],'openchannelStatus':this[_0x0cb1('0x36')],'openchannelStatusTime':this[_0x0cb1('0x1e')],'openchannelCapacity':this[_0x0cb1('0x1f')],'openchannelCurrentCapacity':this[_0x0cb1('0x37')],'busy':this['busy'],'busyQueue':this[_0x0cb1('0x38')]};var _0x313e66=md5(JSON[_0x0cb1('0x39')](_0x57da8d));if(this['md5']!==_0x313e66){this[_0x0cb1('0x21')]=_0x313e66;io[_0x0cb1('0x3a')](_0x0cb1('0x3b'),_0x57da8d);}};module[_0x0cb1('0x3c')]=Agent;
\ No newline at end of file
index deed2f0..bc627e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe579=['md5','../../../config/environment','localhost','redis','name','timeout','strategy','beepall','Agents','waiting','updateRealtime','prototype','updateRouting','mapAgentsId','_rr','map','loggedIn','paused','length','online','chatPause','available','format','emit','exports','lodash'];(function(_0x1220ce,_0xcefa78){var _0x5638d1=function(_0x3e2143){while(--_0x3e2143){_0x1220ce['push'](_0x1220ce['shift']());}};_0x5638d1(++_0xcefa78);}(_0xe579,0x137));var _0x9e57=function(_0x2c3e24,_0x29a02a){_0x2c3e24=_0x2c3e24-0x0;var _0x2ed65d=_0xe579[_0x2c3e24];return _0x2ed65d;};'use strict';var _=require(_0x9e57('0x0'));var md5=require(_0x9e57('0x1'));var util=require('util');var Redis=require('ioredis');var config=require(_0x9e57('0x2'));config['redis']=_['defaults'](config['redis'],{'host':_0x9e57('0x3'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9e57('0x4')]));function ChatQueue(_0x1e4eb2){this['id']=_0x1e4eb2['id']||0x0;this[_0x9e57('0x5')]=_0x1e4eb2[_0x9e57('0x5')]||'';this[_0x9e57('0x6')]=_0x1e4eb2[_0x9e57('0x6')]||0xa;this[_0x9e57('0x7')]=_0x1e4eb2[_0x9e57('0x7')]||_0x9e57('0x8');this[_0x9e57('0x9')]=_0x1e4eb2[_0x9e57('0x9')];this['mapAgentsId']={};this[_0x9e57('0xa')]=0x0;this[_0x9e57('0x1')]='';this['updateRouting']();this[_0x9e57('0xb')]();}ChatQueue[_0x9e57('0xc')][_0x9e57('0xd')]=function(){var _0x19b74c=this[_0x9e57('0xe')][_0x9e57('0xf')];this['mapAgentsId']=_[_0x9e57('0x10')](this[_0x9e57('0x9')],'id');this[_0x9e57('0xe')][_0x9e57('0xf')]=_0x19b74c;};ChatQueue[_0x9e57('0xc')]['updateRealtime']=function(){this[_0x9e57('0x11')]=0x0;this[_0x9e57('0x12')]=0x0;for(var _0x396b7d=0x0;_0x396b7d<this['Agents'][_0x9e57('0x13')];_0x396b7d+=0x1){if(this[_0x9e57('0x9')][_0x396b7d][_0x9e57('0x14')]){this[_0x9e57('0x11')]+=0x1;}if(this[_0x9e57('0x9')][_0x396b7d][_0x9e57('0x15')]){this['paused']+=0x1;}}this[_0x9e57('0x16')]=this['loggedIn']-this['paused'];this['available']=this[_0x9e57('0x16')]>=0x0?this[_0x9e57('0x16')]:0x0;var _0x319289={'id':this['id'],'available':this[_0x9e57('0x16')],'loggedIn':this[_0x9e57('0x11')],'name':this[_0x9e57('0x5')],'paused':this[_0x9e57('0x12')],'waiting':this[_0x9e57('0xa')]};var _0x185495=md5(JSON['stringify'](_0x319289));if(this[_0x9e57('0x1')]!==_0x185495){this[_0x9e57('0x1')]=_0x185495;io['to'](util[_0x9e57('0x17')]('chat:queue:%s',_0x319289[_0x9e57('0x5')]))[_0x9e57('0x18')]('chat_queue:save',_0x319289);}};module[_0x9e57('0x19')]=ChatQueue;
\ No newline at end of file
+var _0x64a6=['paused','length','online','chatPause','available','format','chat_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','mapAgentsId','waiting','updateRouting','updateRealtime','_rr','map','Agents','prototype','loggedIn'];(function(_0x44a869,_0xb3f747){var _0x12d1da=function(_0x1ca4ae){while(--_0x1ca4ae){_0x44a869['push'](_0x44a869['shift']());}};_0x12d1da(++_0xb3f747);}(_0x64a6,0x19d));var _0x664a=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x64a6[_0x178e48];return _0x440d7e;};'use strict';var _=require(_0x664a('0x0'));var md5=require(_0x664a('0x1'));var util=require(_0x664a('0x2'));var Redis=require(_0x664a('0x3'));var config=require(_0x664a('0x4'));config[_0x664a('0x5')]=_[_0x664a('0x6')](config[_0x664a('0x5')],{'host':_0x664a('0x7'),'port':0x18eb});var io=require(_0x664a('0x8'))(new Redis(config[_0x664a('0x5')]));function ChatQueue(_0x358de4){this['id']=_0x358de4['id']||0x0;this[_0x664a('0x9')]=_0x358de4[_0x664a('0x9')]||'';this[_0x664a('0xa')]=_0x358de4['timeout']||0xa;this['strategy']=_0x358de4[_0x664a('0xb')]||_0x664a('0xc');this['Agents']=_0x358de4['Agents'];this[_0x664a('0xd')]={};this[_0x664a('0xe')]=0x0;this['md5']='';this[_0x664a('0xf')]();this[_0x664a('0x10')]();}ChatQueue['prototype'][_0x664a('0xf')]=function(){var _0x3efa51=this[_0x664a('0xd')][_0x664a('0x11')];this[_0x664a('0xd')]=_[_0x664a('0x12')](this[_0x664a('0x13')],'id');this['mapAgentsId'][_0x664a('0x11')]=_0x3efa51;};ChatQueue[_0x664a('0x14')][_0x664a('0x10')]=function(){this[_0x664a('0x15')]=0x0;this[_0x664a('0x16')]=0x0;for(var _0x17d9da=0x0;_0x17d9da<this['Agents'][_0x664a('0x17')];_0x17d9da+=0x1){if(this['Agents'][_0x17d9da][_0x664a('0x18')]){this['loggedIn']+=0x1;}if(this[_0x664a('0x13')][_0x17d9da][_0x664a('0x19')]){this[_0x664a('0x16')]+=0x1;}}this[_0x664a('0x1a')]=this['loggedIn']-this[_0x664a('0x16')];this[_0x664a('0x1a')]=this[_0x664a('0x1a')]>=0x0?this['available']:0x0;var _0x24d258={'id':this['id'],'available':this[_0x664a('0x1a')],'loggedIn':this[_0x664a('0x15')],'name':this['name'],'paused':this[_0x664a('0x16')],'waiting':this['waiting']};var _0x3893f6=md5(JSON['stringify'](_0x24d258));if(this[_0x664a('0x1')]!==_0x3893f6){this[_0x664a('0x1')]=_0x3893f6;io['to'](util[_0x664a('0x1b')]('chat:queue:%s',_0x24d258['name']))['emit'](_0x664a('0x1c'),_0x24d258);}};module['exports']=ChatQueue;
\ No newline at end of file
index 2afbe49..7804375 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf40c=['faxPause','available','stringify','format','fax_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','strategy','beepall','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','map','_rr','loggedIn','paused','Agents','length','online'];(function(_0x4ce688,_0x3a9bc3){var _0x368b9c=function(_0x3944a5){while(--_0x3944a5){_0x4ce688['push'](_0x4ce688['shift']());}};_0x368b9c(++_0x3a9bc3);}(_0xf40c,0x96));var _0xcf40=function(_0x5d7227,_0x12aebe){_0x5d7227=_0x5d7227-0x0;var _0x15ac55=_0xf40c[_0x5d7227];return _0x15ac55;};'use strict';var _=require(_0xcf40('0x0'));var md5=require(_0xcf40('0x1'));var util=require(_0xcf40('0x2'));var Redis=require(_0xcf40('0x3'));var config=require(_0xcf40('0x4'));config[_0xcf40('0x5')]=_[_0xcf40('0x6')](config[_0xcf40('0x5')],{'host':_0xcf40('0x7'),'port':0x18eb});var io=require(_0xcf40('0x8'))(new Redis(config[_0xcf40('0x5')]));function FaxQueue(_0x1f25c3){this['id']=_0x1f25c3['id']||0x0;this[_0xcf40('0x9')]=_0x1f25c3['name']||'';this['timeout']=_0x1f25c3['timeout']||0xa;this[_0xcf40('0xa')]=_0x1f25c3[_0xcf40('0xa')]||_0xcf40('0xb');this['Agents']=_0x1f25c3['Agents'];this[_0xcf40('0xc')]={};this[_0xcf40('0xd')]=0x0;this[_0xcf40('0x1')]='';this[_0xcf40('0xe')]();this[_0xcf40('0xf')]();}FaxQueue[_0xcf40('0x10')][_0xcf40('0xe')]=function(){var _0x3b52a3=this[_0xcf40('0xc')]['_rr'];this[_0xcf40('0xc')]=_[_0xcf40('0x11')](this['Agents'],'id');this[_0xcf40('0xc')][_0xcf40('0x12')]=_0x3b52a3;};FaxQueue[_0xcf40('0x10')][_0xcf40('0xf')]=function(){this[_0xcf40('0x13')]=0x0;this[_0xcf40('0x14')]=0x0;for(var _0xc20e7f=0x0;_0xc20e7f<this[_0xcf40('0x15')][_0xcf40('0x16')];_0xc20e7f+=0x1){if(this['Agents'][_0xc20e7f][_0xcf40('0x17')]){this[_0xcf40('0x13')]+=0x1;}if(this['Agents'][_0xc20e7f][_0xcf40('0x18')]){this['paused']+=0x1;}}this[_0xcf40('0x19')]=this['loggedIn']-this[_0xcf40('0x14')];this[_0xcf40('0x19')]=this[_0xcf40('0x19')]>=0x0?this[_0xcf40('0x19')]:0x0;var _0x54682e={'id':this['id'],'available':this[_0xcf40('0x19')],'loggedIn':this[_0xcf40('0x13')],'name':this[_0xcf40('0x9')],'paused':this[_0xcf40('0x14')],'waiting':this[_0xcf40('0xd')]};var _0x554b96=md5(JSON[_0xcf40('0x1a')](_0x54682e));if(this[_0xcf40('0x1')]!==_0x554b96){this[_0xcf40('0x1')]=_0x554b96;io['to'](util[_0xcf40('0x1b')]('fax:queue:%s',_0x54682e[_0xcf40('0x9')]))['emit'](_0xcf40('0x1c'),_0x54682e);}};module['exports']=FaxQueue;
\ No newline at end of file
+var _0x0fed=['faxPause','available','name','waiting','stringify','format','fax:queue:%s','emit','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','timeout','strategy','Agents','mapAgentsId','updateRouting','_rr','prototype','loggedIn','paused','length','online'];(function(_0x37e34a,_0x266762){var _0x57c67b=function(_0x53da41){while(--_0x53da41){_0x37e34a['push'](_0x37e34a['shift']());}};_0x57c67b(++_0x266762);}(_0x0fed,0xb0));var _0xd0fe=function(_0x4c8c4d,_0x170fc3){_0x4c8c4d=_0x4c8c4d-0x0;var _0x7c72d2=_0x0fed[_0x4c8c4d];return _0x7c72d2;};'use strict';var _=require(_0xd0fe('0x0'));var md5=require(_0xd0fe('0x1'));var util=require(_0xd0fe('0x2'));var Redis=require(_0xd0fe('0x3'));var config=require(_0xd0fe('0x4'));config[_0xd0fe('0x5')]=_[_0xd0fe('0x6')](config[_0xd0fe('0x5')],{'host':_0xd0fe('0x7'),'port':0x18eb});var io=require(_0xd0fe('0x8'))(new Redis(config[_0xd0fe('0x5')]));function FaxQueue(_0x4a72c3){this['id']=_0x4a72c3['id']||0x0;this['name']=_0x4a72c3['name']||'';this[_0xd0fe('0x9')]=_0x4a72c3['timeout']||0xa;this[_0xd0fe('0xa')]=_0x4a72c3[_0xd0fe('0xa')]||'beepall';this['Agents']=_0x4a72c3[_0xd0fe('0xb')];this[_0xd0fe('0xc')]={};this['waiting']=0x0;this[_0xd0fe('0x1')]='';this[_0xd0fe('0xd')]();this['updateRealtime']();}FaxQueue['prototype'][_0xd0fe('0xd')]=function(){var _0x2c61c7=this['mapAgentsId']['_rr'];this[_0xd0fe('0xc')]=_['map'](this[_0xd0fe('0xb')],'id');this[_0xd0fe('0xc')][_0xd0fe('0xe')]=_0x2c61c7;};FaxQueue[_0xd0fe('0xf')]['updateRealtime']=function(){this[_0xd0fe('0x10')]=0x0;this[_0xd0fe('0x11')]=0x0;for(var _0x1ca50f=0x0;_0x1ca50f<this['Agents'][_0xd0fe('0x12')];_0x1ca50f+=0x1){if(this[_0xd0fe('0xb')][_0x1ca50f][_0xd0fe('0x13')]){this[_0xd0fe('0x10')]+=0x1;}if(this[_0xd0fe('0xb')][_0x1ca50f][_0xd0fe('0x14')]){this[_0xd0fe('0x11')]+=0x1;}}this[_0xd0fe('0x15')]=this[_0xd0fe('0x10')]-this[_0xd0fe('0x11')];this[_0xd0fe('0x15')]=this[_0xd0fe('0x15')]>=0x0?this[_0xd0fe('0x15')]:0x0;var _0x1b0da4={'id':this['id'],'available':this[_0xd0fe('0x15')],'loggedIn':this[_0xd0fe('0x10')],'name':this[_0xd0fe('0x16')],'paused':this['paused'],'waiting':this[_0xd0fe('0x17')]};var _0x2d278e=md5(JSON[_0xd0fe('0x18')](_0x1b0da4));if(this[_0xd0fe('0x1')]!==_0x2d278e){this[_0xd0fe('0x1')]=_0x2d278e;io['to'](util[_0xd0fe('0x19')](_0xd0fe('0x1a'),_0x1b0da4[_0xd0fe('0x16')]))[_0xd0fe('0x1b')]('fax_queue:save',_0x1b0da4);}};module['exports']=FaxQueue;
\ No newline at end of file
index be39234..6bb00b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9659=['name','Intervals','exports'];(function(_0x1d1398,_0x403e11){var _0x51ac32=function(_0x3d295d){while(--_0x3d295d){_0x1d1398['push'](_0x1d1398['shift']());}};_0x51ac32(++_0x403e11);}(_0x9659,0x1e0));var _0x9965=function(_0x3ecc59,_0x502bef){_0x3ecc59=_0x3ecc59-0x0;var _0x140319=_0x9659[_0x3ecc59];return _0x140319;};'use strict';function Interval(_0x4ef958){this['id']=_0x4ef958['id']||0x0;this[_0x9965('0x0')]=_0x4ef958[_0x9965('0x0')]||'';this[_0x9965('0x1')]=_0x4ef958[_0x9965('0x1')]||{};}module[_0x9965('0x2')]=Interval;
\ No newline at end of file
+var _0x46bf=['Intervals','exports','name'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x46bf,0x98));var _0xf46b=function(_0x45afc1,_0x52a029){_0x45afc1=_0x45afc1-0x0;var _0x182539=_0x46bf[_0x45afc1];return _0x182539;};'use strict';function Interval(_0x241b66){this['id']=_0x241b66['id']||0x0;this[_0xf46b('0x0')]=_0x241b66[_0xf46b('0x0')]||'';this['Intervals']=_0x241b66[_0xf46b('0x1')]||{};}module[_0xf46b('0x2')]=Interval;
\ No newline at end of file
index 917a5ff..49c9fad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46d8=['mail:queue:%s','emit','exports','md5','util','ioredis','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','_rr','map','prototype','loggedIn','paused','length','online','mailPause','available','waiting','stringify'];(function(_0x4e9274,_0x49576e){var _0x8b474c=function(_0x204cca){while(--_0x204cca){_0x4e9274['push'](_0x4e9274['shift']());}};_0x8b474c(++_0x49576e);}(_0x46d8,0x73));var _0x846d=function(_0x837dad,_0x1d9098){_0x837dad=_0x837dad-0x0;var _0x1d62d3=_0x46d8[_0x837dad];return _0x1d62d3;};'use strict';var _=require('lodash');var md5=require(_0x846d('0x0'));var util=require(_0x846d('0x1'));var Redis=require(_0x846d('0x2'));var config=require('../../../config/environment');config[_0x846d('0x3')]=_['defaults'](config[_0x846d('0x3')],{'host':_0x846d('0x4'),'port':0x18eb});var io=require(_0x846d('0x5'))(new Redis(config[_0x846d('0x3')]));function MailQueue(_0x1d1f27){this['id']=_0x1d1f27['id']||0x0;this['name']=_0x1d1f27[_0x846d('0x6')]||'';this[_0x846d('0x7')]=_0x1d1f27[_0x846d('0x7')]||0xa;this[_0x846d('0x8')]=_0x1d1f27[_0x846d('0x8')]||_0x846d('0x9');this[_0x846d('0xa')]=_0x1d1f27['Agents'];this[_0x846d('0xb')]={};this['waiting']=0x0;this['md5']='';this[_0x846d('0xc')]();this[_0x846d('0xd')]();}MailQueue['prototype'][_0x846d('0xc')]=function(){var _0x549648=this['mapAgentsId'][_0x846d('0xe')];this[_0x846d('0xb')]=_[_0x846d('0xf')](this[_0x846d('0xa')],'id');this[_0x846d('0xb')][_0x846d('0xe')]=_0x549648;};MailQueue[_0x846d('0x10')][_0x846d('0xd')]=function(){this[_0x846d('0x11')]=0x0;this[_0x846d('0x12')]=0x0;for(var _0x191323=0x0;_0x191323<this['Agents'][_0x846d('0x13')];_0x191323+=0x1){if(this[_0x846d('0xa')][_0x191323][_0x846d('0x14')]){this['loggedIn']+=0x1;}if(this[_0x846d('0xa')][_0x191323][_0x846d('0x15')]){this['paused']+=0x1;}}this[_0x846d('0x16')]=this['loggedIn']-this[_0x846d('0x12')];this[_0x846d('0x16')]=this[_0x846d('0x16')]>=0x0?this[_0x846d('0x16')]:0x0;var _0x1689d4={'id':this['id'],'available':this[_0x846d('0x16')],'loggedIn':this[_0x846d('0x11')],'name':this[_0x846d('0x6')],'paused':this['paused'],'waiting':this[_0x846d('0x17')]};var _0x22b2b0=md5(JSON[_0x846d('0x18')](_0x1689d4));if(this[_0x846d('0x0')]!==_0x22b2b0){this[_0x846d('0x0')]=_0x22b2b0;io['to'](util['format'](_0x846d('0x19'),_0x1689d4[_0x846d('0x6')]))[_0x846d('0x1a')]('mail_queue:save',_0x1689d4);}};module[_0x846d('0x1b')]=MailQueue;
\ No newline at end of file
+var _0x3a36=['name','timeout','strategy','beepall','Agents','mapAgentsId','updateRealtime','prototype','updateRouting','_rr','map','paused','length','online','loggedIn','mailPause','available','waiting','stringify','format','mail:queue:%s','emit','mail_queue:save','exports','lodash','md5','util','ioredis','redis','defaults','localhost','socket.io-emitter'];(function(_0x1edd8e,_0x40455e){var _0x59f672=function(_0x42ea5b){while(--_0x42ea5b){_0x1edd8e['push'](_0x1edd8e['shift']());}};_0x59f672(++_0x40455e);}(_0x3a36,0xb8));var _0x63a3=function(_0x111617,_0x3fdd21){_0x111617=_0x111617-0x0;var _0x5f4898=_0x3a36[_0x111617];return _0x5f4898;};'use strict';var _=require(_0x63a3('0x0'));var md5=require(_0x63a3('0x1'));var util=require(_0x63a3('0x2'));var Redis=require(_0x63a3('0x3'));var config=require('../../../config/environment');config[_0x63a3('0x4')]=_[_0x63a3('0x5')](config[_0x63a3('0x4')],{'host':_0x63a3('0x6'),'port':0x18eb});var io=require(_0x63a3('0x7'))(new Redis(config[_0x63a3('0x4')]));function MailQueue(_0x2b8d7e){this['id']=_0x2b8d7e['id']||0x0;this[_0x63a3('0x8')]=_0x2b8d7e['name']||'';this['timeout']=_0x2b8d7e[_0x63a3('0x9')]||0xa;this[_0x63a3('0xa')]=_0x2b8d7e[_0x63a3('0xa')]||_0x63a3('0xb');this[_0x63a3('0xc')]=_0x2b8d7e['Agents'];this[_0x63a3('0xd')]={};this['waiting']=0x0;this[_0x63a3('0x1')]='';this['updateRouting']();this[_0x63a3('0xe')]();}MailQueue[_0x63a3('0xf')][_0x63a3('0x10')]=function(){var _0xcfba42=this[_0x63a3('0xd')][_0x63a3('0x11')];this[_0x63a3('0xd')]=_[_0x63a3('0x12')](this[_0x63a3('0xc')],'id');this[_0x63a3('0xd')][_0x63a3('0x11')]=_0xcfba42;};MailQueue['prototype'][_0x63a3('0xe')]=function(){this['loggedIn']=0x0;this[_0x63a3('0x13')]=0x0;for(var _0x2e3f81=0x0;_0x2e3f81<this[_0x63a3('0xc')][_0x63a3('0x14')];_0x2e3f81+=0x1){if(this[_0x63a3('0xc')][_0x2e3f81][_0x63a3('0x15')]){this[_0x63a3('0x16')]+=0x1;}if(this[_0x63a3('0xc')][_0x2e3f81][_0x63a3('0x17')]){this[_0x63a3('0x13')]+=0x1;}}this[_0x63a3('0x18')]=this[_0x63a3('0x16')]-this['paused'];this[_0x63a3('0x18')]=this['available']>=0x0?this[_0x63a3('0x18')]:0x0;var _0x4f4b19={'id':this['id'],'available':this[_0x63a3('0x18')],'loggedIn':this['loggedIn'],'name':this[_0x63a3('0x8')],'paused':this[_0x63a3('0x13')],'waiting':this[_0x63a3('0x19')]};var _0x4e4795=md5(JSON[_0x63a3('0x1a')](_0x4f4b19));if(this[_0x63a3('0x1')]!==_0x4e4795){this[_0x63a3('0x1')]=_0x4e4795;io['to'](util[_0x63a3('0x1b')](_0x63a3('0x1c'),_0x4f4b19[_0x63a3('0x8')]))[_0x63a3('0x1d')](_0x63a3('0x1e'),_0x4f4b19);}};module[_0x63a3('0x1f')]=MailQueue;
\ No newline at end of file
index 0d76737..3fc104a 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(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0x326f,0xd1));var _0xf326=function(_0x53b93d,_0x2ea690){_0x53b93d=_0x53b93d-0x0;var _0x2b1abf=_0x326f[_0x53b93d];return _0x2b1abf;};'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 _0x1261=['available','stringify','openchannel:queue:%s','openchannel_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','map','_rr','updateRealtime','loggedIn','paused','length','online'];(function(_0x9c2427,_0x17c865){var _0x51984f=function(_0x177af6){while(--_0x177af6){_0x9c2427['push'](_0x9c2427['shift']());}};_0x51984f(++_0x17c865);}(_0x1261,0x144));var _0x1126=function(_0x283127,_0x54d4d5){_0x283127=_0x283127-0x0;var _0x43da5d=_0x1261[_0x283127];return _0x43da5d;};'use strict';var _=require('lodash');var md5=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));config[_0x1126('0x4')]=_[_0x1126('0x5')](config[_0x1126('0x4')],{'host':_0x1126('0x6'),'port':0x18eb});var io=require(_0x1126('0x7'))(new Redis(config[_0x1126('0x4')]));function OpenchannelQueue(_0x5a2189){this['id']=_0x5a2189['id']||0x0;this['name']=_0x5a2189[_0x1126('0x8')]||'';this[_0x1126('0x9')]=_0x5a2189['timeout']||0xa;this[_0x1126('0xa')]=_0x5a2189[_0x1126('0xa')]||_0x1126('0xb');this[_0x1126('0xc')]=_0x5a2189[_0x1126('0xc')];this['mapAgentsId']={};this[_0x1126('0xd')]=0x0;this[_0x1126('0x0')]='';this[_0x1126('0xe')]();this['updateRealtime']();}OpenchannelQueue[_0x1126('0xf')]['updateRouting']=function(){var _0x52ef15=this[_0x1126('0x10')]['_rr'];this[_0x1126('0x10')]=_[_0x1126('0x11')](this[_0x1126('0xc')],'id');this[_0x1126('0x10')][_0x1126('0x12')]=_0x52ef15;};OpenchannelQueue[_0x1126('0xf')][_0x1126('0x13')]=function(){this[_0x1126('0x14')]=0x0;this[_0x1126('0x15')]=0x0;for(var _0x53a8f0=0x0;_0x53a8f0<this['Agents'][_0x1126('0x16')];_0x53a8f0+=0x1){if(this[_0x1126('0xc')][_0x53a8f0][_0x1126('0x17')]){this['loggedIn']+=0x1;}if(this[_0x1126('0xc')][_0x53a8f0]['openchannelPause']){this[_0x1126('0x15')]+=0x1;}}this[_0x1126('0x18')]=this[_0x1126('0x14')]-this['paused'];this[_0x1126('0x18')]=this[_0x1126('0x18')]>=0x0?this['available']:0x0;var _0x4d2b38={'id':this['id'],'available':this[_0x1126('0x18')],'loggedIn':this[_0x1126('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x1126('0xd')]};var _0x58b109=md5(JSON[_0x1126('0x19')](_0x4d2b38));if(this[_0x1126('0x0')]!==_0x58b109){this[_0x1126('0x0')]=_0x58b109;io['to'](util['format'](_0x1126('0x1a'),_0x4d2b38['name']))['emit'](_0x1126('0x1b'),_0x4d2b38);}};module[_0x1126('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index 424be61..b6dba42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x032a=['waiting','updateRouting','updateRealtime','_rr','map','prototype','loggedIn','paused','length','online','smsPause','available','format','sms:queue:%s','emit','exports','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId'];(function(_0x1505e5,_0x5cc291){var _0x5b1dcd=function(_0x18bfe5){while(--_0x18bfe5){_0x1505e5['push'](_0x1505e5['shift']());}};_0x5b1dcd(++_0x5cc291);}(_0x032a,0xf0));var _0xa032=function(_0x34bc6c,_0x10d089){_0x34bc6c=_0x34bc6c-0x0;var _0x168820=_0x032a[_0x34bc6c];return _0x168820;};'use strict';var _=require('lodash');var md5=require(_0xa032('0x0'));var util=require('util');var Redis=require(_0xa032('0x1'));var config=require(_0xa032('0x2'));config[_0xa032('0x3')]=_[_0xa032('0x4')](config[_0xa032('0x3')],{'host':_0xa032('0x5'),'port':0x18eb});var io=require(_0xa032('0x6'))(new Redis(config[_0xa032('0x3')]));function SmsQueue(_0x44fd88){this['id']=_0x44fd88['id']||0x0;this[_0xa032('0x7')]=_0x44fd88[_0xa032('0x7')]||'';this[_0xa032('0x8')]=_0x44fd88['timeout']||0xa;this[_0xa032('0x9')]=_0x44fd88['strategy']||'beepall';this[_0xa032('0xa')]=_0x44fd88['Agents'];this[_0xa032('0xb')]={};this[_0xa032('0xc')]=0x0;this[_0xa032('0x0')]='';this[_0xa032('0xd')]();this[_0xa032('0xe')]();}SmsQueue['prototype'][_0xa032('0xd')]=function(){var _0x144909=this['mapAgentsId'][_0xa032('0xf')];this[_0xa032('0xb')]=_[_0xa032('0x10')](this[_0xa032('0xa')],'id');this[_0xa032('0xb')]['_rr']=_0x144909;};SmsQueue[_0xa032('0x11')][_0xa032('0xe')]=function(){this[_0xa032('0x12')]=0x0;this[_0xa032('0x13')]=0x0;for(var _0x39ff1f=0x0;_0x39ff1f<this[_0xa032('0xa')][_0xa032('0x14')];_0x39ff1f+=0x1){if(this[_0xa032('0xa')][_0x39ff1f][_0xa032('0x15')]){this[_0xa032('0x12')]+=0x1;}if(this['Agents'][_0x39ff1f][_0xa032('0x16')]){this[_0xa032('0x13')]+=0x1;}}this[_0xa032('0x17')]=this[_0xa032('0x12')]-this[_0xa032('0x13')];this[_0xa032('0x17')]=this[_0xa032('0x17')]>=0x0?this['available']:0x0;var _0xff6817={'id':this['id'],'available':this['available'],'loggedIn':this[_0xa032('0x12')],'name':this[_0xa032('0x7')],'paused':this[_0xa032('0x13')],'waiting':this['waiting']};var _0x196947=md5(JSON['stringify'](_0xff6817));if(this[_0xa032('0x0')]!==_0x196947){this[_0xa032('0x0')]=_0x196947;io['to'](util[_0xa032('0x18')](_0xa032('0x19'),_0xff6817[_0xa032('0x7')]))[_0xa032('0x1a')]('sms_queue:save',_0xff6817);}};module[_0xa032('0x1b')]=SmsQueue;
\ No newline at end of file
+var _0xfd2f=['socket.io-emitter','timeout','strategy','Agents','mapAgentsId','waiting','updateRealtime','_rr','map','online','loggedIn','smsPause','paused','available','name','format','sms_queue:save','exports','lodash','md5','util','../../../config/environment','defaults','redis'];(function(_0x18cdf5,_0x26c941){var _0x15c9a4=function(_0x4abccb){while(--_0x4abccb){_0x18cdf5['push'](_0x18cdf5['shift']());}};_0x15c9a4(++_0x26c941);}(_0xfd2f,0x14a));var _0xffd2=function(_0x299b07,_0x5460d3){_0x299b07=_0x299b07-0x0;var _0x252c66=_0xfd2f[_0x299b07];return _0x252c66;};'use strict';var _=require(_0xffd2('0x0'));var md5=require(_0xffd2('0x1'));var util=require(_0xffd2('0x2'));var Redis=require('ioredis');var config=require(_0xffd2('0x3'));config['redis']=_[_0xffd2('0x4')](config[_0xffd2('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xffd2('0x6'))(new Redis(config[_0xffd2('0x5')]));function SmsQueue(_0x4aef44){this['id']=_0x4aef44['id']||0x0;this['name']=_0x4aef44['name']||'';this[_0xffd2('0x7')]=_0x4aef44[_0xffd2('0x7')]||0xa;this['strategy']=_0x4aef44[_0xffd2('0x8')]||'beepall';this['Agents']=_0x4aef44[_0xffd2('0x9')];this[_0xffd2('0xa')]={};this[_0xffd2('0xb')]=0x0;this[_0xffd2('0x1')]='';this['updateRouting']();this[_0xffd2('0xc')]();}SmsQueue['prototype']['updateRouting']=function(){var _0x506d58=this[_0xffd2('0xa')][_0xffd2('0xd')];this[_0xffd2('0xa')]=_[_0xffd2('0xe')](this[_0xffd2('0x9')],'id');this[_0xffd2('0xa')][_0xffd2('0xd')]=_0x506d58;};SmsQueue['prototype']['updateRealtime']=function(){this['loggedIn']=0x0;this['paused']=0x0;for(var _0x2f0d34=0x0;_0x2f0d34<this[_0xffd2('0x9')]['length'];_0x2f0d34+=0x1){if(this[_0xffd2('0x9')][_0x2f0d34][_0xffd2('0xf')]){this[_0xffd2('0x10')]+=0x1;}if(this[_0xffd2('0x9')][_0x2f0d34][_0xffd2('0x11')]){this[_0xffd2('0x12')]+=0x1;}}this[_0xffd2('0x13')]=this[_0xffd2('0x10')]-this[_0xffd2('0x12')];this['available']=this[_0xffd2('0x13')]>=0x0?this[_0xffd2('0x13')]:0x0;var _0x214737={'id':this['id'],'available':this['available'],'loggedIn':this[_0xffd2('0x10')],'name':this[_0xffd2('0x14')],'paused':this[_0xffd2('0x12')],'waiting':this[_0xffd2('0xb')]};var _0x49690c=md5(JSON['stringify'](_0x214737));if(this[_0xffd2('0x1')]!==_0x49690c){this[_0xffd2('0x1')]=_0x49690c;io['to'](util[_0xffd2('0x15')]('sms:queue:%s',_0x214737[_0xffd2('0x14')]))['emit'](_0xffd2('0x16'),_0x214737);}};module[_0xffd2('0x17')]=SmsQueue;
\ No newline at end of file
index 712ca27..26be8b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd46=['ioredis','../../../config/environment','defaults','redis','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRealtime','_rr','map','prototype','loggedIn','paused','length','online','available','waiting','format','emit','whatsapp_queue:save','md5'];(function(_0xbac1ec,_0x2f59dc){var _0x1d5ce9=function(_0x18c604){while(--_0x18c604){_0xbac1ec['push'](_0xbac1ec['shift']());}};_0x1d5ce9(++_0x2f59dc);}(_0xfd46,0x11f));var _0x6fd4=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0xfd46[_0x465a0c];return _0x1e202e;};'use strict';var _=require('lodash');var md5=require(_0x6fd4('0x0'));var util=require('util');var Redis=require(_0x6fd4('0x1'));var config=require(_0x6fd4('0x2'));config['redis']=_[_0x6fd4('0x3')](config[_0x6fd4('0x4')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6fd4('0x4')]));function WhatsappQueue(_0x1b2389){this['id']=_0x1b2389['id']||0x0;this[_0x6fd4('0x5')]=_0x1b2389[_0x6fd4('0x5')]||'';this[_0x6fd4('0x6')]=_0x1b2389[_0x6fd4('0x6')]||0xa;this[_0x6fd4('0x7')]=_0x1b2389[_0x6fd4('0x7')]||_0x6fd4('0x8');this[_0x6fd4('0x9')]=_0x1b2389[_0x6fd4('0x9')];this[_0x6fd4('0xa')]={};this['waiting']=0x0;this[_0x6fd4('0x0')]='';this['updateRouting']();this[_0x6fd4('0xb')]();}WhatsappQueue['prototype']['updateRouting']=function(){var _0x10b665=this[_0x6fd4('0xa')][_0x6fd4('0xc')];this['mapAgentsId']=_[_0x6fd4('0xd')](this['Agents'],'id');this[_0x6fd4('0xa')][_0x6fd4('0xc')]=_0x10b665;};WhatsappQueue[_0x6fd4('0xe')]['updateRealtime']=function(){this[_0x6fd4('0xf')]=0x0;this[_0x6fd4('0x10')]=0x0;for(var _0x1ad052=0x0;_0x1ad052<this['Agents'][_0x6fd4('0x11')];_0x1ad052+=0x1){if(this[_0x6fd4('0x9')][_0x1ad052][_0x6fd4('0x12')]){this[_0x6fd4('0xf')]+=0x1;}if(this[_0x6fd4('0x9')][_0x1ad052]['whatsappPause']){this[_0x6fd4('0x10')]+=0x1;}}this[_0x6fd4('0x13')]=this[_0x6fd4('0xf')]-this['paused'];this['available']=this[_0x6fd4('0x13')]>=0x0?this[_0x6fd4('0x13')]:0x0;var _0x463f51={'id':this['id'],'available':this[_0x6fd4('0x13')],'loggedIn':this[_0x6fd4('0xf')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x6fd4('0x14')]};var _0x80c3f4=md5(JSON['stringify'](_0x463f51));if(this['md5']!==_0x80c3f4){this['md5']=_0x80c3f4;io['to'](util[_0x6fd4('0x15')]('whatsapp:queue:%s',_0x463f51[_0x6fd4('0x5')]))[_0x6fd4('0x16')](_0x6fd4('0x17'),_0x463f51);}};module['exports']=WhatsappQueue;
\ No newline at end of file
+var _0xf16b=['defaults','socket.io-emitter','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','map','_rr','prototype','loggedIn','paused','available','stringify','whatsapp:queue:%s','name','emit','exports','lodash','md5','util','ioredis','redis'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xf16b,0x91));var _0xbf16=function(_0x5eecae,_0x428c99){_0x5eecae=_0x5eecae-0x0;var _0x484182=_0xf16b[_0x5eecae];return _0x484182;};'use strict';var _=require(_0xbf16('0x0'));var md5=require(_0xbf16('0x1'));var util=require(_0xbf16('0x2'));var Redis=require(_0xbf16('0x3'));var config=require('../../../config/environment');config[_0xbf16('0x4')]=_[_0xbf16('0x5')](config[_0xbf16('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0xbf16('0x6'))(new Redis(config['redis']));function WhatsappQueue(_0x29f7b1){this['id']=_0x29f7b1['id']||0x0;this['name']=_0x29f7b1['name']||'';this[_0xbf16('0x7')]=_0x29f7b1[_0xbf16('0x7')]||0xa;this[_0xbf16('0x8')]=_0x29f7b1[_0xbf16('0x8')]||'beepall';this['Agents']=_0x29f7b1[_0xbf16('0x9')];this[_0xbf16('0xa')]={};this[_0xbf16('0xb')]=0x0;this[_0xbf16('0x1')]='';this[_0xbf16('0xc')]();this[_0xbf16('0xd')]();}WhatsappQueue['prototype'][_0xbf16('0xc')]=function(){var _0x15e8e9=this['mapAgentsId']['_rr'];this[_0xbf16('0xa')]=_[_0xbf16('0xe')](this[_0xbf16('0x9')],'id');this[_0xbf16('0xa')][_0xbf16('0xf')]=_0x15e8e9;};WhatsappQueue[_0xbf16('0x10')]['updateRealtime']=function(){this[_0xbf16('0x11')]=0x0;this[_0xbf16('0x12')]=0x0;for(var _0x1ce5ed=0x0;_0x1ce5ed<this[_0xbf16('0x9')]['length'];_0x1ce5ed+=0x1){if(this[_0xbf16('0x9')][_0x1ce5ed]['online']){this[_0xbf16('0x11')]+=0x1;}if(this['Agents'][_0x1ce5ed]['whatsappPause']){this['paused']+=0x1;}}this[_0xbf16('0x13')]=this[_0xbf16('0x11')]-this[_0xbf16('0x12')];this[_0xbf16('0x13')]=this[_0xbf16('0x13')]>=0x0?this[_0xbf16('0x13')]:0x0;var _0x775396={'id':this['id'],'available':this['available'],'loggedIn':this[_0xbf16('0x11')],'name':this['name'],'paused':this['paused'],'waiting':this['waiting']};var _0x13b35f=md5(JSON[_0xbf16('0x14')](_0x775396));if(this[_0xbf16('0x1')]!==_0x13b35f){this['md5']=_0x13b35f;io['to'](util['format'](_0xbf16('0x15'),_0x775396[_0xbf16('0x16')]))[_0xbf16('0x17')]('whatsapp_queue:save',_0x775396);}};module[_0xbf16('0x18')]=WhatsappQueue;
\ No newline at end of file
index 3f8b727..ed01840 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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0xa9e0[_0x40ac5e];return _0x2839d6;};'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 _0xb10b=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','isUndefined','initIntervals','length','initOpenchannelQueues','updateRealtime','initChatQueues','chatQueues','initSmsQueues','updateRouting','initMailQueues','initFaxQueues','initWhatsappQueues','exports','bluebird','lodash','moment','../model/agent','../model/openchannelQueue','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','smsQueues','mailQueues'];(function(_0x4fe1e2,_0x551767){var _0x1ae2e1=function(_0x20d632){while(--_0x20d632){_0x4fe1e2['push'](_0x4fe1e2['shift']());}};_0x1ae2e1(++_0x551767);}(_0xb10b,0x12a));var _0xbb10=function(_0x2ce9d,_0x4ff962){_0x2ce9d=_0x2ce9d-0x0;var _0x578428=_0xb10b[_0x2ce9d];return _0x578428;};'use strict';var BPromise=require(_0xbb10('0x0'));var util=require('util');var _=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var Agent=require(_0xbb10('0x3'));var Interval=require('../model/interval');var OpenchannelQueue=require(_0xbb10('0x4'));var ChatQueue=require(_0xbb10('0x5'));var SmsQueue=require(_0xbb10('0x6'));var MailQueue=require(_0xbb10('0x7'));var FaxQueue=require(_0xbb10('0x8'));var WhatsappQueue=require(_0xbb10('0x9'));var Realtime=function(){this['agents']={};this[_0xbb10('0xa')]={};this[_0xbb10('0xb')]={};this['chatQueues']={};this[_0xbb10('0xc')]={};this[_0xbb10('0xd')]={};this[_0xbb10('0xe')]={};this[_0xbb10('0xf')]={};this[_0xbb10('0x10')]={};this[_0xbb10('0x11')]={};this[_0xbb10('0x12')]={};this[_0xbb10('0x13')]={};this['faxQueuesWaitingInteractions']={};this['whatsappQueuesWaitingInteractions']={};};function freeIsNotKey(_0x20bd61,_0x118a74,_0xce64f3){var _0x5e136d=_[_0xbb10('0x14')](_0x20bd61,function(_0x5be7e0,_0x44fb19){return _0x5be7e0[_0xce64f3];});for(var _0x916a32 in _0x118a74){if(_0x118a74[_0xbb10('0x15')](_0x916a32)){if(!_0x5e136d[_0x916a32]){delete _0x118a74[_0x916a32];}}}}Realtime[_0xbb10('0x16')][_0xbb10('0x17')]=function(_0x147230,_0x58a612){for(var _0x26e021 in _0x58a612){if(_0x147230[_0xbb10('0x15')](_0x26e021)){_0x147230[_0x26e021]=_0x58a612[_0x26e021];}}};Realtime[_0xbb10('0x16')][_0xbb10('0x18')]=function(){var _0x3df17b=this;return function(_0x2f2ebf){if(_0x2f2ebf){freeIsNotKey(_0x2f2ebf,_0x3df17b[_0xbb10('0x19')],'id');for(var _0x36b5e8=0x0,_0x3e26f4={},_0x2b184e={};_0x36b5e8<_0x2f2ebf['length'];_0x36b5e8+=0x1){_0x3e26f4=_0x2f2ebf[_0x36b5e8];if(_[_0xbb10('0x1a')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']])){_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']]=new Agent(_0x3e26f4);}else{_0x3df17b[_0xbb10('0x17')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']],_0x3e26f4);}}}return _0x3df17b[_0xbb10('0x19')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x1b')]=function(){var _0xbf2906=this;return function(_0xe1c665){if(_0xe1c665){freeIsNotKey(_0xe1c665,_0xbf2906['intervals'],'id');for(var _0x5ff0cf=0x0,_0x19f48d={},_0x388fab={};_0x5ff0cf<_0xe1c665[_0xbb10('0x1c')];_0x5ff0cf+=0x1){_0x19f48d=_0xe1c665[_0x5ff0cf];if(_[_0xbb10('0x1a')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']])){_0xbf2906['intervals'][_0x19f48d['id']]=new Interval(_0x19f48d);}else{_0xbf2906[_0xbb10('0x17')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']],_0x19f48d);}}}return _0xbf2906['intervals'];};};Realtime['prototype'][_0xbb10('0x1d')]=function(){var _0x311abe=this;return function(_0x2e911d){if(_0x2e911d){freeIsNotKey(_0x2e911d,_0x311abe[_0xbb10('0xb')],'id');for(var _0x445761=0x0,_0x1824b7={},_0x407cb4={};_0x445761<_0x2e911d[_0xbb10('0x1c')];_0x445761+=0x1){_0x1824b7=_0x2e911d[_0x445761];if(_[_0xbb10('0x1a')](_0x311abe[_0xbb10('0xb')][_0x1824b7['id']])){_0x311abe[_0xbb10('0xb')][_0x1824b7['id']]=new OpenchannelQueue(_0x1824b7);}else{_0x311abe[_0xbb10('0x17')](_0x311abe['openchannelQueues'][_0x1824b7['id']],_0x1824b7);}_0x311abe['openchannelQueues'][_0x1824b7['id']]['updateRouting']();_0x311abe[_0xbb10('0xb')][_0x1824b7['id']][_0xbb10('0x1e')]();}}return _0x311abe[_0xbb10('0xb')];};};Realtime['prototype'][_0xbb10('0x1f')]=function(){var _0x24d586=this;return function(_0x6ed43b){if(_0x6ed43b){freeIsNotKey(_0x6ed43b,_0x24d586[_0xbb10('0x20')],'id');for(var _0x1acce9=0x0,_0x20d946={},_0x2a0e8b={};_0x1acce9<_0x6ed43b['length'];_0x1acce9+=0x1){_0x20d946=_0x6ed43b[_0x1acce9];if(_[_0xbb10('0x1a')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']])){_0x24d586[_0xbb10('0x20')][_0x20d946['id']]=new ChatQueue(_0x20d946);}else{_0x24d586[_0xbb10('0x17')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']],_0x20d946);}_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRouting']();_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRealtime']();}}return _0x24d586[_0xbb10('0x20')];};};Realtime['prototype'][_0xbb10('0x21')]=function(){var _0x1dcc9c=this;return function(_0x1b59f9){if(_0x1b59f9){freeIsNotKey(_0x1b59f9,_0x1dcc9c['smsQueues'],'id');for(var _0x518d47=0x0,_0x4c3744={},_0x34f65e={};_0x518d47<_0x1b59f9['length'];_0x518d47+=0x1){_0x4c3744=_0x1b59f9[_0x518d47];if(_[_0xbb10('0x1a')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']])){_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']]=new SmsQueue(_0x4c3744);}else{_0x1dcc9c[_0xbb10('0x17')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']],_0x4c3744);}_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']][_0xbb10('0x22')]();_0x1dcc9c['smsQueues'][_0x4c3744['id']][_0xbb10('0x1e')]();}}return _0x1dcc9c[_0xbb10('0xc')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x23')]=function(){var _0xfb2c5e=this;return function(_0x9de708){if(_0x9de708){freeIsNotKey(_0x9de708,_0xfb2c5e[_0xbb10('0xd')],'id');for(var _0x10202c=0x0,_0x3c8d7d={},_0x56943c={};_0x10202c<_0x9de708[_0xbb10('0x1c')];_0x10202c+=0x1){_0x3c8d7d=_0x9de708[_0x10202c];if(_[_0xbb10('0x1a')](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']])){_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']]=new MailQueue(_0x3c8d7d);}else{_0xfb2c5e['mergeFromDatabase'](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']],_0x3c8d7d);}_0xfb2c5e['mailQueues'][_0x3c8d7d['id']]['updateRouting']();_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']][_0xbb10('0x1e')]();}}return _0xfb2c5e[_0xbb10('0xd')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x24')]=function(){var _0x29d11a=this;return function(_0x547062){if(_0x547062){freeIsNotKey(_0x547062,_0x29d11a[_0xbb10('0xe')],'id');for(var _0x25d72f=0x0,_0x52de31={},_0x5e3fbd={};_0x25d72f<_0x547062['length'];_0x25d72f+=0x1){_0x52de31=_0x547062[_0x25d72f];if(_[_0xbb10('0x1a')](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']])){_0x29d11a[_0xbb10('0xe')][_0x52de31['id']]=new FaxQueue(_0x52de31);}else{_0x29d11a['mergeFromDatabase'](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']],_0x52de31);}_0x29d11a[_0xbb10('0xe')][_0x52de31['id']][_0xbb10('0x22')]();_0x29d11a['faxQueues'][_0x52de31['id']][_0xbb10('0x1e')]();}}return _0x29d11a[_0xbb10('0xe')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x25')]=function(){var _0x4f1cdd=this;return function(_0xd238e9){if(_0xd238e9){freeIsNotKey(_0xd238e9,_0x4f1cdd[_0xbb10('0xf')],'id');for(var _0x5835fd=0x0,_0xe2040f={},_0x2e3214={};_0x5835fd<_0xd238e9[_0xbb10('0x1c')];_0x5835fd+=0x1){_0xe2040f=_0xd238e9[_0x5835fd];if(_[_0xbb10('0x1a')](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']])){_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]=new WhatsappQueue(_0xe2040f);}else{_0x4f1cdd['mergeFromDatabase'](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']],_0xe2040f);}_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']][_0xbb10('0x22')]();_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]['updateRealtime']();}}return _0x4f1cdd[_0xbb10('0xf')];};};module[_0xbb10('0x26')]=Realtime;
\ No newline at end of file
index 5cb84b2..ef25485 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b62=['update','Request','UpdateChatInteraction','updateChatInteraction'];(function(_0xbd1aeb,_0x3f04b0){var _0x55b1be=function(_0x5f5d78){while(--_0x5f5d78){_0xbd1aeb['push'](_0xbd1aeb['shift']());}};_0x55b1be(++_0x3f04b0);}(_0x7b62,0x1e0));var _0x27b6=function(_0x5b41ff,_0x30b800){_0x5b41ff=_0x5b41ff-0x0;var _0x23423a=_0x7b62[_0x5b41ff];return _0x23423a;};'use strict';var client=require('../client');exports[_0x27b6('0x0')]=function(_0x42f7a0,_0x5ab524){return client[_0x27b6('0x1')](_0x27b6('0x2'),{'body':_0x5ab524,'options':{'where':{'id':_0x42f7a0}},'log':_0x27b6('0x3')});};exports['addTags']=function(_0x59868c,_0x5dcb4e){return client[_0x27b6('0x1')]('AddTagsToChatInteraction',{'body':_0x5dcb4e,'options':{'where':{'id':_0x59868c}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0x5da0=['../client','update','Request','UpdateChatInteraction','updateChatInteraction','addTags','AddTagsToChatInteraction','addTagsToChatInteraction'];(function(_0x58cc93,_0x215ecc){var _0x1764d5=function(_0x38db14){while(--_0x38db14){_0x58cc93['push'](_0x58cc93['shift']());}};_0x1764d5(++_0x215ecc);}(_0x5da0,0x1a0));var _0x05da=function(_0x1adaee,_0x5b65e1){_0x1adaee=_0x1adaee-0x0;var _0x1e8c47=_0x5da0[_0x1adaee];return _0x1e8c47;};'use strict';var client=require(_0x05da('0x0'));exports[_0x05da('0x1')]=function(_0x1f86dc,_0x27ddcb){return client[_0x05da('0x2')](_0x05da('0x3'),{'body':_0x27ddcb,'options':{'where':{'id':_0x1f86dc}},'log':_0x05da('0x4')});};exports[_0x05da('0x5')]=function(_0x4a6771,_0x1c6a09){return client[_0x05da('0x2')](_0x05da('0x6'),{'body':_0x1c6a09,'options':{'where':{'id':_0x4a6771}},'log':_0x05da('0x7')});};
\ No newline at end of file
index 7deec38..0d678b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ce1=['Request','CreateChatMessage','createChatMessage','../client'];(function(_0x5cd915,_0xf58d05){var _0x4e6bfb=function(_0x3bb219){while(--_0x3bb219){_0x5cd915['push'](_0x5cd915['shift']());}};_0x4e6bfb(++_0xf58d05);}(_0x0ce1,0x177));var _0x10ce=function(_0x579388,_0x191c12){_0x579388=_0x579388-0x0;var _0x155c8d=_0x0ce1[_0x579388];return _0x155c8d;};'use strict';var client=require(_0x10ce('0x0'));exports['create']=function(_0x42856e){return client[_0x10ce('0x1')](_0x10ce('0x2'),{'body':_0x42856e,'log':_0x10ce('0x3')});};
\ No newline at end of file
+var _0xeea8=['CreateChatMessage','createChatMessage','Request'];(function(_0x3932a8,_0x3cf323){var _0x49f670=function(_0x3d4ce3){while(--_0x3d4ce3){_0x3932a8['push'](_0x3932a8['shift']());}};_0x49f670(++_0x3cf323);}(_0xeea8,0x7a));var _0x8eea=function(_0x202614,_0x80b668){_0x202614=_0x202614-0x0;var _0x48ebce=_0xeea8[_0x202614];return _0x48ebce;};'use strict';var client=require('../client');exports['create']=function(_0x5c4f20){return client[_0x8eea('0x0')](_0x8eea('0x1'),{'body':_0x5c4f20,'log':_0x8eea('0x2')});};
\ No newline at end of file
index 3c69bbf..a673d00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2975=['name','timeout','strategy','online','chatPause','getChatQueues','Request','GetChatQueue'];(function(_0x280e95,_0x2e5619){var _0x190fba=function(_0xbbba42){while(--_0xbbba42){_0x280e95['push'](_0x280e95['shift']());}};_0x190fba(++_0x2e5619);}(_0x2975,0x1c5));var _0x5297=function(_0x19b59d,_0x1865da){_0x19b59d=_0x19b59d-0x0;var _0x45a611=_0x2975[_0x19b59d];return _0x45a611;};'use strict';var client=require('../client');exports[_0x5297('0x0')]=function(){return function(){return client[_0x5297('0x1')](_0x5297('0x2'),{'options':{'raw':![],'attributes':['id',_0x5297('0x3'),_0x5297('0x4'),_0x5297('0x5')],'include':[{'model':'User','as':'Agents','attributes':['id','name',_0x5297('0x6'),_0x5297('0x7')]}]},'log':_0x5297('0x0')});};};
\ No newline at end of file
+var _0x9f7a=['timeout','name','online','../client','getChatQueues','Request','GetChatQueue'];(function(_0x346389,_0x90686b){var _0x22bfd1=function(_0x44db41){while(--_0x44db41){_0x346389['push'](_0x346389['shift']());}};_0x22bfd1(++_0x90686b);}(_0x9f7a,0xf1));var _0xa9f7=function(_0x3305de,_0x16582f){_0x3305de=_0x3305de-0x0;var _0x3b5a84=_0x9f7a[_0x3305de];return _0x3b5a84;};'use strict';var client=require(_0xa9f7('0x0'));exports[_0xa9f7('0x1')]=function(){return function(){return client[_0xa9f7('0x2')](_0xa9f7('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xa9f7('0x4'),'strategy'],'include':[{'model':'User','as':'Agents','attributes':['id',_0xa9f7('0x5'),_0xa9f7('0x6'),'chatPause']}]},'log':'getChatQueues'});};};
\ No newline at end of file
index 6d51c88..8facd55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x177a=['Request','CreateChatQueueReport','update','UpdateChatQueueReport','DESC','../client'];(function(_0x55e86b,_0x3c19d2){var _0x3c9b4e=function(_0x1e5c7d){while(--_0x1e5c7d){_0x55e86b['push'](_0x55e86b['shift']());}};_0x3c9b4e(++_0x3c19d2);}(_0x177a,0xdd));var _0xa177=function(_0x5313de,_0x2691ff){_0x5313de=_0x5313de-0x0;var _0x40f5a1=_0x177a[_0x5313de];return _0x40f5a1;};'use strict';var client=require(_0xa177('0x0'));exports['create']=function(_0x5ce606){return client[_0xa177('0x1')](_0xa177('0x2'),{'body':_0x5ce606,'log':_0xa177('0x2')});};exports[_0xa177('0x3')]=function(_0x4275db,_0x471a81){return client['Request'](_0xa177('0x4'),{'body':_0x471a81,'options':{'where':{'uniqueid':_0x4275db},'order':[['id',_0xa177('0x5')]],'limit':0x1},'log':_0xa177('0x4')});};
\ No newline at end of file
+var _0xd1d4=['create','Request','update','UpdateChatQueueReport','DESC','../client'];(function(_0x575a38,_0x2e83d7){var _0x5a7bdd=function(_0x1bf478){while(--_0x1bf478){_0x575a38['push'](_0x575a38['shift']());}};_0x5a7bdd(++_0x2e83d7);}(_0xd1d4,0xfb));var _0x4d1d=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0xd1d4[_0x1f9f37];return _0x21c080;};'use strict';var client=require(_0x4d1d('0x0'));exports[_0x4d1d('0x1')]=function(_0x5c408a){return client[_0x4d1d('0x2')]('CreateChatQueueReport',{'body':_0x5c408a,'log':'CreateChatQueueReport'});};exports[_0x4d1d('0x3')]=function(_0xb64ee,_0x260e6a){return client[_0x4d1d('0x2')](_0x4d1d('0x4'),{'body':_0x260e6a,'options':{'where':{'uniqueid':_0xb64ee},'order':[['id',_0x4d1d('0x5')]],'limit':0x1},'log':_0x4d1d('0x4')});};
\ No newline at end of file
index b7ce4ef..f5d7b8e 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(_0x2bd630,_0x494f0a){var _0x34d159=function(_0x540cfd){while(--_0x540cfd){_0x2bd630['push'](_0x2bd630['shift']());}};_0x34d159(++_0x494f0a);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
+var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x3ced49,_0x1b8e8b){var _0x3ba782=function(_0x44acf5){while(--_0x44acf5){_0x3ced49['push'](_0x3ced49['shift']());}};_0x3ba782(++_0x1b8e8b);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
index 7c7ebc7..595b72e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c66=['create','Request','CreateFaxMessage','createFaxMessage','../client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0c66,0x1a8));var _0x60c6=function(_0x45783c,_0x49c56d){_0x45783c=_0x45783c-0x0;var _0x1161da=_0x0c66[_0x45783c];return _0x1161da;};'use strict';var client=require(_0x60c6('0x0'));exports[_0x60c6('0x1')]=function(_0x1e7c40){return client[_0x60c6('0x2')](_0x60c6('0x3'),{'body':_0x1e7c40,'log':_0x60c6('0x4')});};
\ No newline at end of file
+var _0x933b=['Request','CreateFaxMessage','createFaxMessage','create'];(function(_0x330762,_0x540513){var _0x9d56ac=function(_0x9b4d26){while(--_0x9b4d26){_0x330762['push'](_0x330762['shift']());}};_0x9d56ac(++_0x540513);}(_0x933b,0x97));var _0xb933=function(_0x2ec27f,_0xbebdbb){_0x2ec27f=_0x2ec27f-0x0;var _0x23f006=_0x933b[_0x2ec27f];return _0x23f006;};'use strict';var client=require('../client');exports[_0xb933('0x0')]=function(_0x459949){return client[_0xb933('0x1')](_0xb933('0x2'),{'body':_0x459949,'log':_0xb933('0x3')});};
\ No newline at end of file
index 9393799..a801762 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37dc=['getFaxQueues','Request','GetFaxQueue','name','timeout','strategy','User','Agents','online','faxPause','../client'];(function(_0x3d2a90,_0x44d159){var _0xbe7d7f=function(_0x23d64d){while(--_0x23d64d){_0x3d2a90['push'](_0x3d2a90['shift']());}};_0xbe7d7f(++_0x44d159);}(_0x37dc,0x8e));var _0xc37d=function(_0x54dfa8,_0x295848){_0x54dfa8=_0x54dfa8-0x0;var _0x410df2=_0x37dc[_0x54dfa8];return _0x410df2;};'use strict';var client=require(_0xc37d('0x0'));exports[_0xc37d('0x1')]=function(){return function(){return client[_0xc37d('0x2')](_0xc37d('0x3'),{'options':{'raw':![],'attributes':['id',_0xc37d('0x4'),_0xc37d('0x5'),_0xc37d('0x6')],'include':[{'model':_0xc37d('0x7'),'as':_0xc37d('0x8'),'attributes':['id',_0xc37d('0x4'),_0xc37d('0x9'),_0xc37d('0xa')]}]},'log':_0xc37d('0x1')});};};
\ No newline at end of file
+var _0xff48=['faxPause','getFaxQueues','../client','Request','GetFaxQueue','name','timeout','strategy','User','Agents','online'];(function(_0x5d4572,_0x34556c){var _0x58d3aa=function(_0x395604){while(--_0x395604){_0x5d4572['push'](_0x5d4572['shift']());}};_0x58d3aa(++_0x34556c);}(_0xff48,0x1af));var _0x8ff4=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xff48[_0x321bb2];return _0x9c12ed;};'use strict';var client=require(_0x8ff4('0x0'));exports['getFaxQueues']=function(){return function(){return client[_0x8ff4('0x1')](_0x8ff4('0x2'),{'options':{'raw':![],'attributes':['id',_0x8ff4('0x3'),_0x8ff4('0x4'),_0x8ff4('0x5')],'include':[{'model':_0x8ff4('0x6'),'as':_0x8ff4('0x7'),'attributes':['id','name',_0x8ff4('0x8'),_0x8ff4('0x9')]}]},'log':_0x8ff4('0xa')});};};
\ No newline at end of file
index 25d9f99..950cfe1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa700=['create','CreateFaxQueueReport','Request','DESC','../client'];(function(_0xad5e8,_0x58df67){var _0x596909=function(_0x529911){while(--_0x529911){_0xad5e8['push'](_0xad5e8['shift']());}};_0x596909(++_0x58df67);}(_0xa700,0x13f));var _0x0a70=function(_0x3f1a89,_0x17ce94){_0x3f1a89=_0x3f1a89-0x0;var _0x3efe92=_0xa700[_0x3f1a89];return _0x3efe92;};'use strict';var client=require(_0x0a70('0x0'));exports[_0x0a70('0x1')]=function(_0x3d5bf6){return client['Request']('CreateFaxQueueReport',{'body':_0x3d5bf6,'log':_0x0a70('0x2')});};exports['update']=function(_0x138d8d,_0x3ea99f){return client[_0x0a70('0x3')]('UpdateFaxQueueReport',{'body':_0x3ea99f,'options':{'where':{'uniqueid':_0x138d8d},'order':[['id',_0x0a70('0x4')]],'limit':0x1},'log':'UpdateFaxQueueReport'});};
\ No newline at end of file
+var _0xd4a5=['CreateFaxQueueReport','UpdateFaxQueueReport','create','Request'];(function(_0x1be1a5,_0x495c28){var _0xb78921=function(_0x134a20){while(--_0x134a20){_0x1be1a5['push'](_0x1be1a5['shift']());}};_0xb78921(++_0x495c28);}(_0xd4a5,0x166));var _0x5d4a=function(_0x3117ce,_0x7dd4c2){_0x3117ce=_0x3117ce-0x0;var _0x5b3962=_0xd4a5[_0x3117ce];return _0x5b3962;};'use strict';var client=require('../client');exports[_0x5d4a('0x0')]=function(_0x45e5ed){return client[_0x5d4a('0x1')](_0x5d4a('0x2'),{'body':_0x45e5ed,'log':_0x5d4a('0x2')});};exports['update']=function(_0x38669c,_0x3a8918){return client[_0x5d4a('0x1')]('UpdateFaxQueueReport',{'body':_0x3a8918,'options':{'where':{'uniqueid':_0x38669c},'order':[['id','DESC']],'limit':0x1},'log':_0x5d4a('0x3')});};
\ No newline at end of file
index 81a786f..3fb751a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03fe=['name','Interval','../client','getIntervals','Request','GetInterval'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x03fe,0x116));var _0xe03f=function(_0x3f07c1,_0x3a093b){_0x3f07c1=_0x3f07c1-0x0;var _0x9839ca=_0x03fe[_0x3f07c1];return _0x9839ca;};'use strict';var client=require(_0xe03f('0x0'));exports[_0xe03f('0x1')]=function(){return function(){return client[_0xe03f('0x2')](_0xe03f('0x3'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xe03f('0x4')],'include':[{'model':_0xe03f('0x5'),'as':'Intervals','attributes':['id',_0xe03f('0x4'),'interval']}]},'log':_0xe03f('0x1')});};};
\ No newline at end of file
+var _0xeadd=['Intervals','interval','../client','getIntervals','Request','name','Interval'];(function(_0x59d89e,_0x55edf5){var _0x554e93=function(_0x3d40bc){while(--_0x3d40bc){_0x59d89e['push'](_0x59d89e['shift']());}};_0x554e93(++_0x55edf5);}(_0xeadd,0x152));var _0xdead=function(_0x43a538,_0x385c5e){_0x43a538=_0x43a538-0x0;var _0x5ad554=_0xeadd[_0x43a538];return _0x5ad554;};'use strict';var client=require(_0xdead('0x0'));exports[_0xdead('0x1')]=function(){return function(){return client[_0xdead('0x2')]('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xdead('0x3')],'include':[{'model':_0xdead('0x4'),'as':_0xdead('0x5'),'attributes':['id',_0xdead('0x3'),_0xdead('0x6')]}]},'log':_0xdead('0x1')});};};
\ No newline at end of file
index 7e9261d..b8f8f7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x056b=['addTags','AddTagsToMailInteraction','update','Request','UpdateMailInteraction','updateMailInteraction'];(function(_0x43daa8,_0x2b964e){var _0x42a182=function(_0x16a94b){while(--_0x16a94b){_0x43daa8['push'](_0x43daa8['shift']());}};_0x42a182(++_0x2b964e);}(_0x056b,0xb6));var _0xb056=function(_0x3e618a,_0x135251){_0x3e618a=_0x3e618a-0x0;var _0x1f3d61=_0x056b[_0x3e618a];return _0x1f3d61;};'use strict';var client=require('../client');exports[_0xb056('0x0')]=function(_0x556e84,_0xed6810){return client[_0xb056('0x1')](_0xb056('0x2'),{'body':_0xed6810,'options':{'where':{'id':_0x556e84}},'log':_0xb056('0x3')});};exports[_0xb056('0x4')]=function(_0x4157e0,_0x343d88){return client[_0xb056('0x1')](_0xb056('0x5'),{'body':_0x343d88,'options':{'where':{'id':_0x4157e0}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0xf2e3=['Request','UpdateMailInteraction','updateMailInteraction','addTags','addTagsToChatInteraction','../client'];(function(_0x84dbc9,_0x804160){var _0x365eea=function(_0x5c11c6){while(--_0x5c11c6){_0x84dbc9['push'](_0x84dbc9['shift']());}};_0x365eea(++_0x804160);}(_0xf2e3,0x9b));var _0x3f2e=function(_0x2c7618,_0x26be9c){_0x2c7618=_0x2c7618-0x0;var _0x5ce3f0=_0xf2e3[_0x2c7618];return _0x5ce3f0;};'use strict';var client=require(_0x3f2e('0x0'));exports['update']=function(_0x143e9e,_0x231b2b){return client[_0x3f2e('0x1')](_0x3f2e('0x2'),{'body':_0x231b2b,'options':{'where':{'id':_0x143e9e}},'log':_0x3f2e('0x3')});};exports[_0x3f2e('0x4')]=function(_0x3938e2,_0xabcf5c){return client[_0x3f2e('0x1')]('AddTagsToMailInteraction',{'body':_0xabcf5c,'options':{'where':{'id':_0x3938e2}},'log':_0x3f2e('0x5')});};
\ No newline at end of file
index 9f6a47b..bcfbb1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87ed=['Request','CreateMailMessage','createMailMessage','create'];(function(_0x11a55c,_0x4eced9){var _0x26c390=function(_0x5b0662){while(--_0x5b0662){_0x11a55c['push'](_0x11a55c['shift']());}};_0x26c390(++_0x4eced9);}(_0x87ed,0x183));var _0xd87e=function(_0x4042a4,_0x10df88){_0x4042a4=_0x4042a4-0x0;var _0x3adbba=_0x87ed[_0x4042a4];return _0x3adbba;};'use strict';var client=require('../client');exports[_0xd87e('0x0')]=function(_0x19fae7){return client[_0xd87e('0x1')](_0xd87e('0x2'),{'body':_0x19fae7,'log':_0xd87e('0x3')});};
\ No newline at end of file
+var _0x0400=['Request','createMailMessage','../client'];(function(_0x2742db,_0x58e00c){var _0x18659e=function(_0x5bd3ac){while(--_0x5bd3ac){_0x2742db['push'](_0x2742db['shift']());}};_0x18659e(++_0x58e00c);}(_0x0400,0x1f4));var _0x0040=function(_0x2187b0,_0x10504c){_0x2187b0=_0x2187b0-0x0;var _0x341dc1=_0x0400[_0x2187b0];return _0x341dc1;};'use strict';var client=require(_0x0040('0x0'));exports['create']=function(_0x421fe7){return client[_0x0040('0x1')]('CreateMailMessage',{'body':_0x421fe7,'log':_0x0040('0x2')});};
\ No newline at end of file
index 1d339c5..e133e2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda08=['Request','GetMailQueue','name','timeout','strategy','User','Agents','online','mailPause'];(function(_0x1dd97c,_0x3061ff){var _0x3ce657=function(_0x536cc3){while(--_0x536cc3){_0x1dd97c['push'](_0x1dd97c['shift']());}};_0x3ce657(++_0x3061ff);}(_0xda08,0xc6));var _0x8da0=function(_0x580647,_0x43d2c3){_0x580647=_0x580647-0x0;var _0x5f0792=_0xda08[_0x580647];return _0x5f0792;};'use strict';var client=require('../client');exports['getMailQueues']=function(){return function(){return client[_0x8da0('0x0')](_0x8da0('0x1'),{'options':{'raw':![],'attributes':['id',_0x8da0('0x2'),_0x8da0('0x3'),_0x8da0('0x4')],'include':[{'model':_0x8da0('0x5'),'as':_0x8da0('0x6'),'attributes':['id',_0x8da0('0x2'),_0x8da0('0x7'),_0x8da0('0x8')]}]},'log':'getMailQueues'});};};
\ No newline at end of file
+var _0x1015=['User','Agents','mailPause','../client','getMailQueues','Request','GetMailQueue','name','timeout','strategy'];(function(_0x49fda9,_0x54d0d4){var _0x376bc2=function(_0x3b796f){while(--_0x3b796f){_0x49fda9['push'](_0x49fda9['shift']());}};_0x376bc2(++_0x54d0d4);}(_0x1015,0x85));var _0x5101=function(_0x3e6ff9,_0x225ad7){_0x3e6ff9=_0x3e6ff9-0x0;var _0x3c3a0d=_0x1015[_0x3e6ff9];return _0x3c3a0d;};'use strict';var client=require(_0x5101('0x0'));exports[_0x5101('0x1')]=function(){return function(){return client[_0x5101('0x2')](_0x5101('0x3'),{'options':{'raw':![],'attributes':['id',_0x5101('0x4'),_0x5101('0x5'),_0x5101('0x6')],'include':[{'model':_0x5101('0x7'),'as':_0x5101('0x8'),'attributes':['id','name','online',_0x5101('0x9')]}]},'log':_0x5101('0x1')});};};
\ No newline at end of file
index 519e744..10213b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5327=['UpdateMailQueueReport','DESC','../client','create','Request','CreateMailQueueReport'];(function(_0x1cacd6,_0x18e29d){var _0x13ae71=function(_0x5d89ba){while(--_0x5d89ba){_0x1cacd6['push'](_0x1cacd6['shift']());}};_0x13ae71(++_0x18e29d);}(_0x5327,0x19a));var _0x7532=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5327[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x7532('0x0'));exports[_0x7532('0x1')]=function(_0x2658b7){return client[_0x7532('0x2')](_0x7532('0x3'),{'body':_0x2658b7,'log':_0x7532('0x3')});};exports['update']=function(_0x1f9217,_0x5c411b){return client[_0x7532('0x2')](_0x7532('0x4'),{'body':_0x5c411b,'options':{'where':{'uniqueid':_0x1f9217},'order':[['id',_0x7532('0x5')]],'limit':0x1},'log':'UpdateMailQueueReport'});};
\ No newline at end of file
+var _0x776d=['DESC','Request','CreateMailQueueReport','update','UpdateMailQueueReport'];(function(_0x5acdf2,_0x30b5db){var _0x3054f7=function(_0x3e1185){while(--_0x3e1185){_0x5acdf2['push'](_0x5acdf2['shift']());}};_0x3054f7(++_0x30b5db);}(_0x776d,0x11e));var _0xd776=function(_0x216dab,_0x247742){_0x216dab=_0x216dab-0x0;var _0x37fe33=_0x776d[_0x216dab];return _0x37fe33;};'use strict';var client=require('../client');exports['create']=function(_0x463b44){return client[_0xd776('0x0')](_0xd776('0x1'),{'body':_0x463b44,'log':'CreateMailQueueReport'});};exports[_0xd776('0x2')]=function(_0x571b11,_0x4faa97){return client[_0xd776('0x0')](_0xd776('0x3'),{'body':_0x4faa97,'options':{'where':{'uniqueid':_0x571b11},'order':[['id',_0xd776('0x4')]],'limit':0x1},'log':'UpdateMailQueueReport'});};
\ No newline at end of file
index c29a4aa..043c2d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe63a=['Request','UpdateOpenchannelInteraction','updateOpenchannelInteraction','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xe63a,0x91));var _0xae63=function(_0x31bacc,_0x3c0c79){_0x31bacc=_0x31bacc-0x0;var _0x2f8ea7=_0xe63a[_0x31bacc];return _0x2f8ea7;};'use strict';var client=require(_0xae63('0x0'));exports[_0xae63('0x1')]=function(_0x4bad0d,_0x4f1bc1){return client[_0xae63('0x2')](_0xae63('0x3'),{'body':_0x4f1bc1,'options':{'where':{'id':_0x4bad0d}},'log':_0xae63('0x4')});};exports['addTags']=function(_0x2193c3,_0x1f5246){return client['Request'](_0xae63('0x5'),{'body':_0x1f5246,'options':{'where':{'id':_0x2193c3}},'log':_0xae63('0x6')});};
\ No newline at end of file
+var _0xc478=['updateOpenchannelInteraction','addTags','Request','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update','UpdateOpenchannelInteraction'];(function(_0x40a825,_0x3bac79){var _0x273a54=function(_0x5628d8){while(--_0x5628d8){_0x40a825['push'](_0x40a825['shift']());}};_0x273a54(++_0x3bac79);}(_0xc478,0x1ad));var _0x8c47=function(_0x1fc2ea,_0x3466b3){_0x1fc2ea=_0x1fc2ea-0x0;var _0x3771a1=_0xc478[_0x1fc2ea];return _0x3771a1;};'use strict';var client=require(_0x8c47('0x0'));exports[_0x8c47('0x1')]=function(_0x5e55d4,_0xcb495a){return client['Request'](_0x8c47('0x2'),{'body':_0xcb495a,'options':{'where':{'id':_0x5e55d4}},'log':_0x8c47('0x3')});};exports[_0x8c47('0x4')]=function(_0x2b4514,_0x43e24b){return client[_0x8c47('0x5')](_0x8c47('0x6'),{'body':_0x43e24b,'options':{'where':{'id':_0x2b4514}},'log':_0x8c47('0x7')});};
\ No newline at end of file
index 4f9a8b5..aa8f65d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2426=['../client','create','createOpenchannelMessage'];(function(_0x15e92f,_0x30133c){var _0x1f756e=function(_0x52f47a){while(--_0x52f47a){_0x15e92f['push'](_0x15e92f['shift']());}};_0x1f756e(++_0x30133c);}(_0x2426,0x1e0));var _0x6242=function(_0x3eb4c7,_0x4f7b83){_0x3eb4c7=_0x3eb4c7-0x0;var _0x1e3e22=_0x2426[_0x3eb4c7];return _0x1e3e22;};'use strict';var client=require(_0x6242('0x0'));exports[_0x6242('0x1')]=function(_0x22296e){return client['Request']('CreateOpenchannelMessage',{'body':_0x22296e,'log':_0x6242('0x2')});};
\ No newline at end of file
+var _0x0db7=['CreateOpenchannelMessage','createOpenchannelMessage','create'];(function(_0x5e2a5e,_0x92525b){var _0x5d6641=function(_0x4b905e){while(--_0x4b905e){_0x5e2a5e['push'](_0x5e2a5e['shift']());}};_0x5d6641(++_0x92525b);}(_0x0db7,0x1ac));var _0x70db=function(_0x57c2c0,_0xd5af1a){_0x57c2c0=_0x57c2c0-0x0;var _0x4887f7=_0x0db7[_0x57c2c0];return _0x4887f7;};'use strict';var client=require('../client');exports[_0x70db('0x0')]=function(_0x3f6e1b){return client['Request'](_0x70db('0x1'),{'body':_0x3f6e1b,'log':_0x70db('0x2')});};
\ No newline at end of file
index aad528c..6c9f7c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35f6=['strategy','User','online','openchannelPause','getOpenchannelQueues','GetOpenchannelQueue','name','timeout'];(function(_0x56916d,_0x37b935){var _0x2b7f1f=function(_0x206eb1){while(--_0x206eb1){_0x56916d['push'](_0x56916d['shift']());}};_0x2b7f1f(++_0x37b935);}(_0x35f6,0x11c));var _0x635f=function(_0x12722f,_0x4809b6){_0x12722f=_0x12722f-0x0;var _0x1deefb=_0x35f6[_0x12722f];return _0x1deefb;};'use strict';var client=require('../client');exports[_0x635f('0x0')]=function(){return function(){return client['Request'](_0x635f('0x1'),{'options':{'raw':![],'attributes':['id',_0x635f('0x2'),_0x635f('0x3'),_0x635f('0x4')],'include':[{'model':_0x635f('0x5'),'as':'Agents','attributes':['id',_0x635f('0x2'),_0x635f('0x6'),_0x635f('0x7')]}]},'log':'getOpenchannelQueues'});};};
\ No newline at end of file
+var _0x5e36=['Request','name','timeout','strategy','User','Agents','online','../client','getOpenchannelQueues'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x5e36,0x97));var _0x65e3=function(_0x3cce19,_0x470ba6){_0x3cce19=_0x3cce19-0x0;var _0x151990=_0x5e36[_0x3cce19];return _0x151990;};'use strict';var client=require(_0x65e3('0x0'));exports[_0x65e3('0x1')]=function(){return function(){return client[_0x65e3('0x2')]('GetOpenchannelQueue',{'options':{'raw':![],'attributes':['id',_0x65e3('0x3'),_0x65e3('0x4'),_0x65e3('0x5')],'include':[{'model':_0x65e3('0x6'),'as':_0x65e3('0x7'),'attributes':['id',_0x65e3('0x3'),_0x65e3('0x8'),'openchannelPause']}]},'log':_0x65e3('0x1')});};};
\ No newline at end of file
index add8651..7174df4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa5e=['CreateOpenchannelQueueReport','update','UpdateOpenchannelQueueReport','DESC','../client','create','Request'];(function(_0x3f4ec8,_0x59d978){var _0x1809f7=function(_0x22a2f8){while(--_0x22a2f8){_0x3f4ec8['push'](_0x3f4ec8['shift']());}};_0x1809f7(++_0x59d978);}(_0xaa5e,0xa5));var _0xeaa5=function(_0x35a95f,_0x327960){_0x35a95f=_0x35a95f-0x0;var _0x4bb671=_0xaa5e[_0x35a95f];return _0x4bb671;};'use strict';var client=require(_0xeaa5('0x0'));exports[_0xeaa5('0x1')]=function(_0x5782de){return client[_0xeaa5('0x2')](_0xeaa5('0x3'),{'body':_0x5782de,'log':_0xeaa5('0x3')});};exports[_0xeaa5('0x4')]=function(_0x131fc3,_0x5a1aca){return client[_0xeaa5('0x2')](_0xeaa5('0x5'),{'body':_0x5a1aca,'options':{'where':{'uniqueid':_0x131fc3},'order':[['id',_0xeaa5('0x6')]],'limit':0x1},'log':_0xeaa5('0x5')});};
\ No newline at end of file
+var _0x9ffd=['Request','UpdateOpenchannelQueueReport','../client','create','CreateOpenchannelQueueReport','update'];(function(_0x21e7e6,_0x17565f){var _0xa412a9=function(_0x1d499b){while(--_0x1d499b){_0x21e7e6['push'](_0x21e7e6['shift']());}};_0xa412a9(++_0x17565f);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x39c7e3,_0x4a74a2){_0x39c7e3=_0x39c7e3-0x0;var _0x469315=_0x9ffd[_0x39c7e3];return _0x469315;};'use strict';var client=require(_0xd9ff('0x0'));exports[_0xd9ff('0x1')]=function(_0x47e5c0){return client['Request'](_0xd9ff('0x2'),{'body':_0x47e5c0,'log':_0xd9ff('0x2')});};exports[_0xd9ff('0x3')]=function(_0x5493ae,_0x53e962){return client[_0xd9ff('0x4')](_0xd9ff('0x5'),{'body':_0x53e962,'options':{'where':{'uniqueid':_0x5493ae},'order':[['id','DESC']],'limit':0x1},'log':_0xd9ff('0x5')});};
\ No newline at end of file
index 50ad39d..683a063 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x777f=['UpdateSmsInteraction','updateSmsInteraction','addTags','../client','update','Request'];(function(_0x1d39f6,_0x146f4a){var _0x3dbd7a=function(_0x4486f2){while(--_0x4486f2){_0x1d39f6['push'](_0x1d39f6['shift']());}};_0x3dbd7a(++_0x146f4a);}(_0x777f,0x9f));var _0xf777=function(_0xadde88,_0x58ad47){_0xadde88=_0xadde88-0x0;var _0x3b8eb6=_0x777f[_0xadde88];return _0x3b8eb6;};'use strict';var client=require(_0xf777('0x0'));exports[_0xf777('0x1')]=function(_0x41dd3a,_0x37721a){return client[_0xf777('0x2')](_0xf777('0x3'),{'body':_0x37721a,'options':{'where':{'id':_0x41dd3a}},'log':_0xf777('0x4')});};exports[_0xf777('0x5')]=function(_0x508470,_0x3caeaa){return client[_0xf777('0x2')]('AddTagsToSmsInteraction',{'body':_0x3caeaa,'options':{'where':{'id':_0x508470}},'log':'addTagsToSmsInteraction'});};
\ No newline at end of file
+var _0x0c02=['Request','UpdateSmsInteraction','updateSmsInteraction','addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction','update'];(function(_0x22071a,_0x4bcf62){var _0x5c6c85=function(_0x4c531b){while(--_0x4c531b){_0x22071a['push'](_0x22071a['shift']());}};_0x5c6c85(++_0x4bcf62);}(_0x0c02,0x84));var _0x20c0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0c02[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports[_0x20c0('0x0')]=function(_0x33da8b,_0x590c5c){return client[_0x20c0('0x1')](_0x20c0('0x2'),{'body':_0x590c5c,'options':{'where':{'id':_0x33da8b}},'log':_0x20c0('0x3')});};exports[_0x20c0('0x4')]=function(_0x38022e,_0x2e9d65){return client[_0x20c0('0x1')](_0x20c0('0x5'),{'body':_0x2e9d65,'options':{'where':{'id':_0x38022e}},'log':_0x20c0('0x6')});};
\ No newline at end of file
index ad50d7a..acf7885 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9b9=['Request','CreateSmsMessage','../client'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xa9b9,0x1dc));var _0x9a9b=function(_0xdeac17,_0x19ad66){_0xdeac17=_0xdeac17-0x0;var _0x33aabd=_0xa9b9[_0xdeac17];return _0x33aabd;};'use strict';var client=require(_0x9a9b('0x0'));exports['create']=function(_0x1323fd){return client[_0x9a9b('0x1')](_0x9a9b('0x2'),{'body':_0x1323fd,'log':'createSmsMessage'});};
\ No newline at end of file
+var _0x252f=['CreateSmsMessage','createSmsMessage','../client','Request'];(function(_0x510675,_0x489669){var _0xdf8bc4=function(_0x41c617){while(--_0x41c617){_0x510675['push'](_0x510675['shift']());}};_0xdf8bc4(++_0x489669);}(_0x252f,0x1e2));var _0xf252=function(_0x42f3a6,_0x45285c){_0x42f3a6=_0x42f3a6-0x0;var _0xdf3c33=_0x252f[_0x42f3a6];return _0xdf3c33;};'use strict';var client=require(_0xf252('0x0'));exports['create']=function(_0x2e802c){return client[_0xf252('0x1')](_0xf252('0x2'),{'body':_0x2e802c,'log':_0xf252('0x3')});};
\ No newline at end of file
index e43167b..23f6bae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['smsPause','Request','GetSmsQueue','name','timeout','User','Agents','online'];(function(_0x2b053a,_0x2ba5af){var _0x12d7c1=function(_0x105f22){while(--_0x105f22){_0x2b053a['push'](_0x2b053a['shift']());}};_0x12d7c1(++_0x2ba5af);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x243217,_0x522951){_0x243217=_0x243217-0x0;var _0x478029=_0xcb91[_0x243217];return _0x478029;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'attributes':['id',_0x1cb9('0x2'),_0x1cb9('0x3'),'strategy'],'include':[{'model':_0x1cb9('0x4'),'as':_0x1cb9('0x5'),'attributes':['id','name',_0x1cb9('0x6'),_0x1cb9('0x7')]}]},'log':'getSmsQueues'});};};
\ No newline at end of file
+var _0xcb91=['smsPause','Request','GetSmsQueue','name','timeout','User','Agents','online'];(function(_0x28f95f,_0x3065a0){var _0x568df0=function(_0x2845e3){while(--_0x2845e3){_0x28f95f['push'](_0x28f95f['shift']());}};_0x568df0(++_0x3065a0);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x47b15f,_0x103e93){_0x47b15f=_0x47b15f-0x0;var _0x55bf25=_0xcb91[_0x47b15f];return _0x55bf25;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'attributes':['id',_0x1cb9('0x2'),_0x1cb9('0x3'),'strategy'],'include':[{'model':_0x1cb9('0x4'),'as':_0x1cb9('0x5'),'attributes':['id','name',_0x1cb9('0x6'),_0x1cb9('0x7')]}]},'log':'getSmsQueues'});};};
\ No newline at end of file
index 0f12384..ecf0913 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['../client','create','CreateSmsQueueReport','update','Request','UpdateSmsQueueReport','DESC'];(function(_0x687c66,_0x5d9f47){var _0x5ac8a1=function(_0x44bac5){while(--_0x44bac5){_0x687c66['push'](_0x687c66['shift']());}};_0x5ac8a1(++_0x5d9f47);}(_0x55ca,0x126));var _0xa55c=function(_0x2b70f8,_0x361789){_0x2b70f8=_0x2b70f8-0x0;var _0x2f741e=_0x55ca[_0x2b70f8];return _0x2f741e;};'use strict';var client=require(_0xa55c('0x0'));exports[_0xa55c('0x1')]=function(_0x4e78b4){return client['Request']('CreateSmsQueueReport',{'body':_0x4e78b4,'log':_0xa55c('0x2')});};exports[_0xa55c('0x3')]=function(_0x5dc716,_0x3b478a){return client[_0xa55c('0x4')](_0xa55c('0x5'),{'body':_0x3b478a,'options':{'where':{'uniqueid':_0x5dc716},'order':[['id',_0xa55c('0x6')]],'limit':0x1},'log':_0xa55c('0x5')});};
\ No newline at end of file
+var _0x55ca=['../client','create','CreateSmsQueueReport','update','Request','UpdateSmsQueueReport','DESC'];(function(_0x3fc6cf,_0x350711){var _0x32a963=function(_0xd11e69){while(--_0xd11e69){_0x3fc6cf['push'](_0x3fc6cf['shift']());}};_0x32a963(++_0x350711);}(_0x55ca,0x126));var _0xa55c=function(_0x56fb7d,_0x539ea1){_0x56fb7d=_0x56fb7d-0x0;var _0x3be1c3=_0x55ca[_0x56fb7d];return _0x3be1c3;};'use strict';var client=require(_0xa55c('0x0'));exports[_0xa55c('0x1')]=function(_0x4e78b4){return client['Request']('CreateSmsQueueReport',{'body':_0x4e78b4,'log':_0xa55c('0x2')});};exports[_0xa55c('0x3')]=function(_0x5dc716,_0x3b478a){return client[_0xa55c('0x4')](_0xa55c('0x5'),{'body':_0x3b478a,'options':{'where':{'uniqueid':_0x5dc716},'order':[['id',_0xa55c('0x6')]],'limit':0x1},'log':_0xa55c('0x5')});};
\ No newline at end of file
index 663540c..bd7444e 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(_0x55a4af,_0x3d1a53){var _0x308f1c=function(_0x1a6cd8){while(--_0x1a6cd8){_0x55a4af['push'](_0x55a4af['shift']());}};_0x308f1c(++_0x3d1a53);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'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(_0x140e7a,_0xad4c82){var _0x380c40=function(_0x39f860){while(--_0x39f860){_0x140e7a['push'](_0x140e7a['shift']());}};_0x380c40(++_0xad4c82);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xa9e0[_0x5e3b04];return _0x1fc44d;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'online',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'faxPause',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'chatCapacity','mailCapacity',_0x0a9e('0xc'),'smsCapacity','whatsappCapacity',_0x0a9e('0xd')]},'log':_0x0a9e('0x1')});};};
\ No newline at end of file
index edb4049..8b2b836 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7de=['updateWhatsappInteraction','addTags','Request','AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','../client','update','UpdateWhatsappInteraction'];(function(_0x400b6c,_0x4a6139){var _0x4c4e3e=function(_0x191233){while(--_0x191233){_0x400b6c['push'](_0x400b6c['shift']());}};_0x4c4e3e(++_0x4a6139);}(_0xe7de,0x165));var _0xee7d=function(_0xe679a5,_0x525f0d){_0xe679a5=_0xe679a5-0x0;var _0x34bff7=_0xe7de[_0xe679a5];return _0x34bff7;};'use strict';var client=require(_0xee7d('0x0'));exports[_0xee7d('0x1')]=function(_0x2f1cd7,_0x58d2f9){return client['Request'](_0xee7d('0x2'),{'body':_0x58d2f9,'options':{'where':{'id':_0x2f1cd7}},'log':_0xee7d('0x3')});};exports[_0xee7d('0x4')]=function(_0x3f1c6d,_0x3afa35){return client[_0xee7d('0x5')](_0xee7d('0x6'),{'body':_0x3afa35,'options':{'where':{'id':_0x3f1c6d}},'log':_0xee7d('0x7')});};
\ No newline at end of file
+var _0x975b=['AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','../client','update','Request','UpdateWhatsappInteraction','updateWhatsappInteraction'];(function(_0x3fb358,_0x530837){var _0x407b46=function(_0x3abfcd){while(--_0x3abfcd){_0x3fb358['push'](_0x3fb358['shift']());}};_0x407b46(++_0x530837);}(_0x975b,0x1c9));var _0xb975=function(_0x886338,_0x1bf8e1){_0x886338=_0x886338-0x0;var _0x27fcfe=_0x975b[_0x886338];return _0x27fcfe;};'use strict';var client=require(_0xb975('0x0'));exports[_0xb975('0x1')]=function(_0x39f2a7,_0x354374){return client[_0xb975('0x2')](_0xb975('0x3'),{'body':_0x354374,'options':{'where':{'id':_0x39f2a7}},'log':_0xb975('0x4')});};exports['addTags']=function(_0xa92c72,_0xfb173){return client[_0xb975('0x2')](_0xb975('0x5'),{'body':_0xfb173,'options':{'where':{'id':_0xa92c72}},'log':_0xb975('0x6')});};
\ No newline at end of file
index 7083749..3ed5722 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x268d=['createWhatsappMessage','../client','create','Request','CreateWhatsappMessage'];(function(_0x446e1d,_0x150e79){var _0xffd5fd=function(_0x1ff4a6){while(--_0x1ff4a6){_0x446e1d['push'](_0x446e1d['shift']());}};_0xffd5fd(++_0x150e79);}(_0x268d,0x119));var _0xd268=function(_0x3ae35d,_0x534860){_0x3ae35d=_0x3ae35d-0x0;var _0x7b995=_0x268d[_0x3ae35d];return _0x7b995;};'use strict';var client=require(_0xd268('0x0'));exports[_0xd268('0x1')]=function(_0x50c2a1){return client[_0xd268('0x2')](_0xd268('0x3'),{'body':_0x50c2a1,'log':_0xd268('0x4')});};
\ No newline at end of file
+var _0x0dd5=['create','CreateWhatsappMessage','createWhatsappMessage','../client'];(function(_0x3ea3ae,_0x29dd29){var _0x2aa587=function(_0x1d6dca){while(--_0x1d6dca){_0x3ea3ae['push'](_0x3ea3ae['shift']());}};_0x2aa587(++_0x29dd29);}(_0x0dd5,0x123));var _0x50dd=function(_0x17c14f,_0x21e297){_0x17c14f=_0x17c14f-0x0;var _0x2561d5=_0x0dd5[_0x17c14f];return _0x2561d5;};'use strict';var client=require(_0x50dd('0x0'));exports[_0x50dd('0x1')]=function(_0x1f77de){return client['Request'](_0x50dd('0x2'),{'body':_0x1f77de,'log':_0x50dd('0x3')});};
\ No newline at end of file
index 931db9f..ba23960 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf13=['Agents','online','whatsappPause','../client','getWhatsappQueues','Request','GetWhatsappQueue','name','timeout','User'];(function(_0x2b9828,_0x50c0a6){var _0x381948=function(_0x367698){while(--_0x367698){_0x2b9828['push'](_0x2b9828['shift']());}};_0x381948(++_0x50c0a6);}(_0xdf13,0x111));var _0x3df1=function(_0x49258d,_0x5bcf0e){_0x49258d=_0x49258d-0x0;var _0x2a9044=_0xdf13[_0x49258d];return _0x2a9044;};'use strict';var client=require(_0x3df1('0x0'));exports[_0x3df1('0x1')]=function(){return function(){return client[_0x3df1('0x2')](_0x3df1('0x3'),{'options':{'raw':![],'attributes':['id',_0x3df1('0x4'),_0x3df1('0x5'),'strategy'],'include':[{'model':_0x3df1('0x6'),'as':_0x3df1('0x7'),'attributes':['id',_0x3df1('0x4'),_0x3df1('0x8'),_0x3df1('0x9')]}]},'log':_0x3df1('0x1')});};};
\ No newline at end of file
+var _0x854f=['online','whatsappPause','getWhatsappQueues','../client','Request','name','timeout','strategy','User','Agents'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x854f,0xc1));var _0xf854=function(_0x503b8e,_0x434167){_0x503b8e=_0x503b8e-0x0;var _0x1fee18=_0x854f[_0x503b8e];return _0x1fee18;};'use strict';var client=require(_0xf854('0x0'));exports['getWhatsappQueues']=function(){return function(){return client[_0xf854('0x1')]('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0xf854('0x2'),_0xf854('0x3'),_0xf854('0x4')],'include':[{'model':_0xf854('0x5'),'as':_0xf854('0x6'),'attributes':['id',_0xf854('0x2'),_0xf854('0x7'),_0xf854('0x8')]}]},'log':_0xf854('0x9')});};};
\ No newline at end of file
index 040c810..f8e65d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b90=['../client','create','Request','CreateWhatsappQueueReport','update'];(function(_0x2bfd4f,_0x1bbf2c){var _0x341849=function(_0x4c246e){while(--_0x4c246e){_0x2bfd4f['push'](_0x2bfd4f['shift']());}};_0x341849(++_0x1bbf2c);}(_0x0b90,0xb4));var _0x00b9=function(_0x289355,_0x1e6d3c){_0x289355=_0x289355-0x0;var _0x1cbefc=_0x0b90[_0x289355];return _0x1cbefc;};'use strict';var client=require(_0x00b9('0x0'));exports[_0x00b9('0x1')]=function(_0x3ea37d){return client[_0x00b9('0x2')](_0x00b9('0x3'),{'body':_0x3ea37d,'log':'CreateWhatsappQueueReport'});};exports[_0x00b9('0x4')]=function(_0x108db9,_0x2a9a03){return client[_0x00b9('0x2')]('UpdateWhatsappQueueReport',{'body':_0x2a9a03,'options':{'where':{'uniqueid':_0x108db9},'order':[['id','DESC']],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
+var _0xb9f4=['../client','create','Request','update','UpdateWhatsappQueueReport','DESC'];(function(_0x20375d,_0x3a841d){var _0x2d058b=function(_0x21413f){while(--_0x21413f){_0x20375d['push'](_0x20375d['shift']());}};_0x2d058b(++_0x3a841d);}(_0xb9f4,0x90));var _0x4b9f=function(_0x3cb060,_0x230f40){_0x3cb060=_0x3cb060-0x0;var _0x2a567c=_0xb9f4[_0x3cb060];return _0x2a567c;};'use strict';var client=require(_0x4b9f('0x0'));exports[_0x4b9f('0x1')]=function(_0x305728){return client[_0x4b9f('0x2')]('CreateWhatsappQueueReport',{'body':_0x305728,'log':'CreateWhatsappQueueReport'});};exports[_0x4b9f('0x3')]=function(_0x1e8eff,_0x557cd0){return client[_0x4b9f('0x2')](_0x4b9f('0x4'),{'body':_0x557cd0,'options':{'where':{'uniqueid':_0x1e8eff},'order':[['id',_0x4b9f('0x5')]],'limit':0x1},'log':_0x4b9f('0x4')});};
\ No newline at end of file
index e0322d1..03ff3e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf09d=['length','error','map','message','join','stop','find','agents','timeout','createQueue','atimeout','channel','START:%s','rules','close','complete','[%s][AGENT]\x20ROUTING\x20END','[%s][AGENT]\x20agent\x20not\x20found\x20%s','[%s][QUEUE]\x20%s','stack','validate','lodash','seq-queue','../../../../config/logger','routing','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase'];(function(_0x5b924a,_0x557cdf){var _0x47286a=function(_0x15d22d){while(--_0x15d22d){_0x5b924a['push'](_0x5b924a['shift']());}};_0x47286a(++_0x557cdf);}(_0xf09d,0x168));var _0xdf09=function(_0x558010,_0x4a71e6){_0x558010=_0x558010-0x0;var _0x3b9dba=_0xf09d[_0x558010];return _0x3b9dba;};'use strict';var schema=require(_0xdf09('0x0'));var _=require(_0xdf09('0x1'));var util=require('util');var seqqueue=require(_0xdf09('0x2'));var logger=require(_0xdf09('0x3'))(_0xdf09('0x4'));var strategy=require('./strategy');var queue=schema({'name':{'type':_0xdf09('0x5'),'required':!![],'message':_0xdf09('0x6')},'timeout':{'type':_0xdf09('0x7'),'message':_0xdf09('0x8')}});function writeLog(_0x55e4f1,_0x52c66e,_0x54dcab){return logger[_0xdf09('0x9')](util[_0xdf09('0xa')](_0xdf09('0xb'),_0x55e4f1,_0x52c66e[_0xdf09('0xc')],_0x54dcab));}function handleFindAgent(_0x33335a){return function(_0x5feb97){return _0x5feb97[_0xdf09('0xc')][_0xdf09('0xd')]()===_0x33335a[_0xdf09('0xd')]();};}exports['consequence']=function(_0x1f71de,_0x409a03,_0x9361c0,_0x22fa00){return function(_0x540c07){try{var _0x4ab349={'name':_0x409a03[0x0],'timeout':_0x409a03[0x1]};var _0x1a12c2=queue['validate'](_0x4ab349,{'typecast':!![]});if(_0x1a12c2[_0xdf09('0xe')]){logger[_0xdf09('0xf')]('[%s][AGENT]\x20%s',_0x1f71de,_[_0xdf09('0x10')](_0x1a12c2,_0xdf09('0x11'))[_0xdf09('0x12')](',\x20'));_0x540c07[_0xdf09('0x13')]();}else{var _0xe69ed4=_[_0xdf09('0x14')](_0x9361c0[_0xdf09('0x15')],handleFindAgent(_0x4ab349['name']));if(_0xe69ed4){var _0x1c73ec=(_0x4ab349[_0xdf09('0x16')]||0xa)*0x3e8;var _0x52424e,_0x1a16a4;var _0x4e7990=seqqueue[_0xdf09('0x17')](_0x1c73ec);_0x4e7990['id']=_0x1f71de;_0x4e7990[_0xdf09('0x18')]=_0x1c73ec;_0x4e7990['channel']=_0x22fa00[_0xdf09('0x19')];writeLog(_0x1f71de,_0xe69ed4,util['format'](_0xdf09('0x1a'),_0x1c73ec));_0x9361c0[_0xdf09('0x1b')][_0x1f71de]['on']('end',function(){logger[_0xdf09('0x9')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x1f71de);clearTimeout(_0x1a16a4);_0x1a16a4=undefined;_0x4e7990[_0xdf09('0x1c')]();if(_0x9361c0[_0xdf09('0x1b')][_0x1f71de]){delete _0x9361c0[_0xdf09('0x1b')][_0x1f71de];}_0x540c07[_0xdf09('0x13')]();});_0x9361c0['rules'][_0x1f71de]['on'](_0xdf09('0x1d'),function(){if(_0x9361c0[_0xdf09('0x1b')][_0x1f71de]){delete _0x9361c0[_0xdf09('0x1b')][_0x1f71de];}});_0x1a16a4=setTimeout(function(){logger[_0xdf09('0x9')](_0xdf09('0x1e'),_0x1f71de);clearTimeout(_0x1a16a4);_0x4e7990[_0xdf09('0x1c')]();_0x540c07['next']();},_0x1c73ec);strategy['agent'](_0x4e7990,_0xe69ed4,_0x9361c0,_0x22fa00);}else{logger[_0xdf09('0xf')](_0xdf09('0x1f'),_0x1f71de,_0x4ab349[_0xdf09('0xc')]);_0x540c07[_0xdf09('0x13')]();}}}catch(_0x7f7f6e){console['log'](_0x7f7f6e);logger['error'](_0xdf09('0x20'),_0x1f71de,_0x7f7f6e[_0xdf09('0x21')]);_0x540c07[_0xdf09('0x13')]();}};};
\ No newline at end of file
+var _0x2863=['[%s][AGENT]\x20ROUTING\x20END','close','next','agent','error','[%s][AGENT]\x20agent\x20not\x20found\x20%s','[%s][QUEUE]\x20%s','stack','validate','util','seq-queue','../../../../config/logger','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','[%s][AGENT]\x20%s','map','join','agents','timeout','createQueue','atimeout','channel','rules','end','stop','complete'];(function(_0x1b16ba,_0xe1a8dc){var _0x30d703=function(_0x4b6f53){while(--_0x4b6f53){_0x1b16ba['push'](_0x1b16ba['shift']());}};_0x30d703(++_0xe1a8dc);}(_0x2863,0xf6));var _0x3286=function(_0x5dd3b1,_0x2e259b){_0x5dd3b1=_0x5dd3b1-0x0;var _0x2af759=_0x2863[_0x5dd3b1];return _0x2af759;};'use strict';var schema=require(_0x3286('0x0'));var _=require('lodash');var util=require(_0x3286('0x1'));var seqqueue=require(_0x3286('0x2'));var logger=require(_0x3286('0x3'))('routing');var strategy=require('./strategy');var queue=schema({'name':{'type':'string','required':!![],'message':_0x3286('0x4')},'timeout':{'type':_0x3286('0x5'),'message':_0x3286('0x6')}});function writeLog(_0x3c3237,_0x59c235,_0x25af23){return logger[_0x3286('0x7')](util[_0x3286('0x8')](_0x3286('0x9'),_0x3c3237,_0x59c235[_0x3286('0xa')],_0x25af23));}function handleFindAgent(_0x49b87b){return function(_0x2247aa){return _0x2247aa['name']['toLowerCase']()===_0x49b87b[_0x3286('0xb')]();};}exports[_0x3286('0xc')]=function(_0x22dbb4,_0x4d4c52,_0x2a867e,_0x55820e){return function(_0x10fb1f){try{var _0xa5480e={'name':_0x4d4c52[0x0],'timeout':_0x4d4c52[0x1]};var _0x26e17c=queue[_0x3286('0x0')](_0xa5480e,{'typecast':!![]});if(_0x26e17c[_0x3286('0xd')]){logger['error'](_0x3286('0xe'),_0x22dbb4,_[_0x3286('0xf')](_0x26e17c,'message')[_0x3286('0x10')](',\x20'));_0x10fb1f['stop']();}else{var _0x46ad5b=_['find'](_0x2a867e[_0x3286('0x11')],handleFindAgent(_0xa5480e[_0x3286('0xa')]));if(_0x46ad5b){var _0x87f562=(_0xa5480e[_0x3286('0x12')]||0xa)*0x3e8;var _0x3277a8,_0x4b68a1;var _0x273c98=seqqueue[_0x3286('0x13')](_0x87f562);_0x273c98['id']=_0x22dbb4;_0x273c98[_0x3286('0x14')]=_0x87f562;_0x273c98[_0x3286('0x15')]=_0x55820e[_0x3286('0x15')];writeLog(_0x22dbb4,_0x46ad5b,util[_0x3286('0x8')]('START:%s',_0x87f562));_0x2a867e[_0x3286('0x16')][_0x22dbb4]['on'](_0x3286('0x17'),function(){logger[_0x3286('0x7')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x22dbb4);clearTimeout(_0x4b68a1);_0x4b68a1=undefined;_0x273c98['close']();if(_0x2a867e['rules'][_0x22dbb4]){delete _0x2a867e[_0x3286('0x16')][_0x22dbb4];}_0x10fb1f[_0x3286('0x18')]();});_0x2a867e[_0x3286('0x16')][_0x22dbb4]['on'](_0x3286('0x19'),function(){if(_0x2a867e['rules'][_0x22dbb4]){delete _0x2a867e[_0x3286('0x16')][_0x22dbb4];}});_0x4b68a1=setTimeout(function(){logger[_0x3286('0x7')](_0x3286('0x1a'),_0x22dbb4);clearTimeout(_0x4b68a1);_0x273c98[_0x3286('0x1b')]();_0x10fb1f[_0x3286('0x1c')]();},_0x87f562);strategy[_0x3286('0x1d')](_0x273c98,_0x46ad5b,_0x2a867e,_0x55820e);}else{logger[_0x3286('0x1e')](_0x3286('0x1f'),_0x22dbb4,_0xa5480e[_0x3286('0xa')]);_0x10fb1f['stop']();}}}catch(_0x2c667b){console['log'](_0x2c667b);logger[_0x3286('0x1e')](_0x3286('0x20'),_0x22dbb4,_0x2c667b[_0x3286('0x21')]);_0x10fb1f[_0x3286('0x18')]();}};};
\ No newline at end of file
index bd9f125..ed1e332 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d3d=['YYYY-MM-DD\x20HH:mm:ss','channel','sms','whatsapp','phone','ChatWebsiteId','upperFirst','AccountId','InteractionId','created','isEmpty','body','Message','create','info','catch','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','LexRuntime','$LATEST','message','toString','error','providerName','amazonlex','providerResponse','stringify','Failed','lodash','aws-sdk','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','isNil','interaction','UserId','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','format'];(function(_0x12fee5,_0x25b586){var _0x17c36a=function(_0xd212fc){while(--_0xd212fc){_0x12fee5['push'](_0x12fee5['shift']());}};_0x17c36a(++_0x25b586);}(_0x9d3d,0x104));var _0xd9d3=function(_0x3aa398,_0x37f0b2){_0x3aa398=_0x3aa398-0x0;var _0x2fa1dd=_0x9d3d[_0x3aa398];return _0x2fa1dd;};'use strict';var _=require(_0xd9d3('0x0'));var moment=require('moment');var AWS=require(_0xd9d3('0x1'));var utils=require('./utils');var logger=require(_0xd9d3('0x2'))(_0xd9d3('0x3'));var rpc={'chatMessage':require(_0xd9d3('0x4')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xd9d3('0x5')),'smsMessage':require(_0xd9d3('0x6')),'faxMessage':require(_0xd9d3('0x7')),'whatsappMessage':require(_0xd9d3('0x8'))};exports['consequence']=function(_0x4d64c7,_0x329d65){return function(_0x2d5ab0){try{if(!_[_0xd9d3('0x9')](this[_0xd9d3('0xa')][_0xd9d3('0xb')])){logger['info'](_0xd9d3('0xc'),_0x4d64c7,_0xd9d3('0xd'));return _0x2d5ab0[_0xd9d3('0xe')]();}var _0x2a6a2a={'ContactId':this['contact']['id'],'sentAt':moment()[_0xd9d3('0xf')](_0xd9d3('0x10')),'direction':'out'};if(this[_0xd9d3('0x11')]===_0xd9d3('0x12')||this[_0xd9d3('0x11')]===_0xd9d3('0x13')){_0x2a6a2a[_0xd9d3('0x14')]=this['interaction'][_0xd9d3('0x14')];}var _0x547dfe=this[_0xd9d3('0x11')];if(_0x547dfe==='chat'){_0x2a6a2a[_0xd9d3('0x15')]=this['account']['id'];}else{_0x2a6a2a[_[_0xd9d3('0x16')](_0x547dfe)+_0xd9d3('0x17')]=this['account']['id'];}_0x2a6a2a[_[_0xd9d3('0x16')](_0x547dfe)+_0xd9d3('0x18')]=this[_0xd9d3('0xa')]['id'];if(this[_0xd9d3('0xa')][_0xd9d3('0x19')]){var _0x123054=_0x329d65[0x4];if(!_[_0xd9d3('0x1a')](_0x123054)){_0x2a6a2a[_0xd9d3('0x1b')]=utils['getMustacheRender'](_0x123054,this);return rpc[_0x547dfe+_0xd9d3('0x1c')][_0xd9d3('0x1d')](_0x2a6a2a)['then'](function(_0x1f2705){logger[_0xd9d3('0x1e')](_0xd9d3('0xc'),_0x4d64c7,_0x2a6a2a[_0xd9d3('0x1b')]);})[_0xd9d3('0x1f')](function(_0x1d9e46){logger['error'](_0xd9d3('0xc'),_0x4d64c7,JSON['stringify'](_0x1d9e46));})[_0xd9d3('0x20')](function(){logger[_0xd9d3('0x1e')](_0xd9d3('0x21'),_0x4d64c7);_0x2d5ab0['stop']();});}else{logger[_0xd9d3('0x1e')](_0xd9d3('0x22'),_0x4d64c7);_0x2d5ab0[_0xd9d3('0x23')]();}}else{var _0x4df9af=this;var _0x437f1e=new AWS[(_0xd9d3('0x24'))]({'accessKeyId':_0x329d65[0x0],'secretAccessKey':_0x329d65[0x1],'region':_0x329d65[0x2]});var _0x3640cf={'botAlias':_0xd9d3('0x25'),'botName':_0x329d65[0x3],'inputText':this[_0xd9d3('0x26')][_0xd9d3('0x1b')],'userId':this[_0xd9d3('0x11')]+':'+this['interaction']['id'][_0xd9d3('0x27')]()};_0x437f1e['postText'](_0x3640cf,function(_0x33e5d2,_0x1ef9ef){if(_0x33e5d2){logger[_0xd9d3('0x28')]('[%s][AMAZONLEX]\x20%s',_0x4d64c7,_0x33e5d2[_0xd9d3('0x26')]);_0x2d5ab0['next']();}else if(_0x1ef9ef&&_0x1ef9ef['message']){_0x4df9af[_0xd9d3('0x1b')]['amazonlex']=_0x1ef9ef;_0x2a6a2a[_0xd9d3('0x1b')]=_0x1ef9ef[_0xd9d3('0x26')];_0x2a6a2a[_0xd9d3('0x29')]=_0xd9d3('0x2a');_0x2a6a2a[_0xd9d3('0x2b')]=JSON[_0xd9d3('0x2c')](_0x1ef9ef);return rpc[_0x547dfe+_0xd9d3('0x1c')][_0xd9d3('0x1d')](_0x2a6a2a)['then'](function(_0x2ddbb4){logger['info']('[%s][AMAZONLEX]\x20%s',_0x4d64c7,_0x2a6a2a[_0xd9d3('0x1b')]);if(_0x1ef9ef['dialogState']==_0xd9d3('0x2d')){_0x2d5ab0[_0xd9d3('0xe')]();}else{_0x2d5ab0[_0xd9d3('0x23')]();}})['catch'](function(_0xe2998f){logger['error'](_0xd9d3('0xc'),_0x4d64c7,JSON[_0xd9d3('0x2c')](_0xe2998f));_0x2d5ab0['next']();});}else{_0x2d5ab0['next']();}});}}catch(_0x3d6217){logger[_0xd9d3('0x28')](_0xd9d3('0xc'),_0x4d64c7,JSON[_0xd9d3('0x2c')](_0x3d6217));_0x2d5ab0[_0xd9d3('0x23')]();}};};
\ No newline at end of file
+var _0x676e=['dialogState','catch','lodash','moment','aws-sdk','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','interaction','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','phone','channel','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','body','Message','info','[%s][AMAZONLEX]\x20%s','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','$LATEST','message','toString','postText','error','providerName','stringify','create','then'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x676e,0x197));var _0xe676=function(_0x3f00ee,_0x1d1673){_0x3f00ee=_0x3f00ee-0x0;var _0x18a07e=_0x676e[_0x3f00ee];return _0x18a07e;};'use strict';var _=require(_0xe676('0x0'));var moment=require(_0xe676('0x1'));var AWS=require(_0xe676('0x2'));var utils=require(_0xe676('0x3'));var logger=require(_0xe676('0x4'))('routing');var rpc={'chatMessage':require(_0xe676('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xe676('0x6')),'smsMessage':require(_0xe676('0x7')),'faxMessage':require(_0xe676('0x8')),'whatsappMessage':require(_0xe676('0x9'))};exports['consequence']=function(_0x4c574f,_0x2fb265){return function(_0xadbe48){try{if(!_['isNil'](this[_0xe676('0xa')]['UserId'])){logger['info']('[%s][AMAZONLEX]\x20%s',_0x4c574f,_0xe676('0xb'));return _0xadbe48[_0xe676('0xc')]();}var _0x13c10d={'ContactId':this[_0xe676('0xd')]['id'],'sentAt':moment()[_0xe676('0xe')](_0xe676('0xf')),'direction':_0xe676('0x10')};if(this['channel']==='sms'||this['channel']==='whatsapp'){_0x13c10d[_0xe676('0x11')]=this['interaction'][_0xe676('0x11')];}var _0x3e4a52=this[_0xe676('0x12')];if(_0x3e4a52===_0xe676('0x13')){_0x13c10d[_0xe676('0x14')]=this[_0xe676('0x15')]['id'];}else{_0x13c10d[_[_0xe676('0x16')](_0x3e4a52)+_0xe676('0x17')]=this[_0xe676('0x15')]['id'];}_0x13c10d[_[_0xe676('0x16')](_0x3e4a52)+_0xe676('0x18')]=this[_0xe676('0xa')]['id'];if(this['interaction'][_0xe676('0x19')]){var _0x9a2c=_0x2fb265[0x4];if(!_['isEmpty'](_0x9a2c)){_0x13c10d[_0xe676('0x1a')]=utils['getMustacheRender'](_0x9a2c,this);return rpc[_0x3e4a52+_0xe676('0x1b')]['create'](_0x13c10d)['then'](function(_0x2cda2d){logger[_0xe676('0x1c')](_0xe676('0x1d'),_0x4c574f,_0x13c10d[_0xe676('0x1a')]);})['catch'](function(_0x4e994e){logger['error'](_0xe676('0x1d'),_0x4c574f,JSON['stringify'](_0x4e994e));})[_0xe676('0x1e')](function(){logger['info'](_0xe676('0x1f'),_0x4c574f);_0xadbe48[_0xe676('0x20')]();});}else{logger['info'](_0xe676('0x21'),_0x4c574f);_0xadbe48[_0xe676('0x20')]();}}else{var _0xcba9f5=this;var _0x53e64a=new AWS['LexRuntime']({'accessKeyId':_0x2fb265[0x0],'secretAccessKey':_0x2fb265[0x1],'region':_0x2fb265[0x2]});var _0x489363={'botAlias':_0xe676('0x22'),'botName':_0x2fb265[0x3],'inputText':this[_0xe676('0x23')][_0xe676('0x1a')],'userId':this[_0xe676('0x12')]+':'+this['interaction']['id'][_0xe676('0x24')]()};_0x53e64a[_0xe676('0x25')](_0x489363,function(_0x3b1ae6,_0x54c06b){if(_0x3b1ae6){logger[_0xe676('0x26')]('[%s][AMAZONLEX]\x20%s',_0x4c574f,_0x3b1ae6[_0xe676('0x23')]);_0xadbe48['next']();}else if(_0x54c06b&&_0x54c06b[_0xe676('0x23')]){_0xcba9f5[_0xe676('0x1a')]['amazonlex']=_0x54c06b;_0x13c10d['body']=_0x54c06b['message'];_0x13c10d[_0xe676('0x27')]='amazonlex';_0x13c10d['providerResponse']=JSON[_0xe676('0x28')](_0x54c06b);return rpc[_0x3e4a52+'Message'][_0xe676('0x29')](_0x13c10d)[_0xe676('0x2a')](function(_0x3059b8){logger[_0xe676('0x1c')](_0xe676('0x1d'),_0x4c574f,_0x13c10d['body']);if(_0x54c06b[_0xe676('0x2b')]=='Failed'){_0xadbe48['next']();}else{_0xadbe48[_0xe676('0x20')]();}})[_0xe676('0x2c')](function(_0x2c05b9){logger['error'](_0xe676('0x1d'),_0x4c574f,JSON[_0xe676('0x28')](_0x2c05b9));_0xadbe48['next']();});}else{_0xadbe48[_0xe676('0xc')]();}});}}catch(_0xbe8b8a){logger[_0xe676('0x26')](_0xe676('0x1d'),_0x4c574f,JSON['stringify'](_0xbe8b8a));_0xadbe48[_0xe676('0x20')]();}};};
\ No newline at end of file
index ce1a3e5..adc1ad7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b74=['resolve','Interaction','update','catch','error','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','moment','./utils','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','mail','body','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','created','interaction','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','getMustacheRender','message','from','phone','read','subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','account','upperFirst','InteractionId','Message','Smtp','service','host','port','auth','pass','messageId','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','<div','headers','All','sendMailMessage','then','create','[RPC][%s][AUTOREPLY]\x20%s','stringify','finally'];(function(_0x343090,_0x433a80){var _0x3ff3e8=function(_0x16c811){while(--_0x16c811){_0x343090['push'](_0x343090['shift']());}};_0x3ff3e8(++_0x433a80);}(_0x1b74,0x1b1));var _0x41b7=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x1b74[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x41b7('0x0'));var moment=require(_0x41b7('0x1'));var utils=require(_0x41b7('0x2'));var logger=require('../../../../config/logger')(_0x41b7('0x3'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x41b7('0x4')),'mailMessage':require(_0x41b7('0x5')),'smsMessage':require(_0x41b7('0x6')),'faxMessage':require(_0x41b7('0x7')),'whatsappMessage':require(_0x41b7('0x8')),'chatInteraction':require(_0x41b7('0x9')),'openchannelInteraction':require(_0x41b7('0xa')),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require(_0x41b7('0xb')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x41b7('0xc'))};var mailRpc=require(_0x41b7('0xd'));exports[_0x41b7('0xe')]=function(_0x151412,_0x39d213,_0x21e5c3,_0x21ab11){return function(_0x48a403){try{var _0xce7116=this['channel'];if(_0xce7116===_0x41b7('0xf')&&_0x21ab11[_0x41b7('0x10')]['isAutoreply']){logger[_0x41b7('0x11')](_0x41b7('0x12'),_0x151412,_0x41b7('0x13'));return _0x48a403['next']();}if(_0x39d213[0x0]==='1'&&(_['isNil'](this['interaction'][_0x41b7('0x14')])||!this[_0x41b7('0x15')][_0x41b7('0x14')])){logger[_0x41b7('0x11')](_0x41b7('0x12'),_0x151412,'Autoreply\x20already\x20sent');return _0x48a403['next']();}if(_0x39d213[0x0]==='2'&&this[_0x41b7('0x15')][_0x41b7('0x16')]){logger['info'](_0x41b7('0x17'),_0x151412,_0x41b7('0x18'));return _0x48a403[_0x41b7('0x19')]();}var _0x3e5b55={'ContactId':this[_0x41b7('0x1a')]['id'],'sentAt':moment()[_0x41b7('0x1b')](_0x41b7('0x1c')),'direction':'out'};if(this[_0x41b7('0x1d')]===_0x41b7('0xf')){_0x3e5b55[_0x41b7('0x10')]=utils[_0x41b7('0x1e')](_0x39d213[0x2],this);}else{_0x3e5b55[_0x41b7('0x10')]=utils[_0x41b7('0x1e')](_0x39d213[0x1],this);}if(this[_0x41b7('0x1f')]){_0x3e5b55['to']=this['message'][_0x41b7('0x20')]||'';if(this[_0x41b7('0x1d')]===_0x41b7('0xf')&&_0x39d213[0x1]==='1'){_0x3e5b55['cc']=this[_0x41b7('0x1f')]['cc']||'';}_0x3e5b55[_0x41b7('0x20')]=this[_0x41b7('0x1f')]['to']||'';_0x3e5b55[_0x41b7('0x21')]=this[_0x41b7('0x1f')][_0x41b7('0x21')]||'';_0x3e5b55[_0x41b7('0x22')]=!![];if(this['message'][_0x41b7('0x23')]){_0x3e5b55[_0x41b7('0x23')]='';_0x3e5b55['subject']+=_[_0x41b7('0x24')](this['message'][_0x41b7('0x23')],_0x41b7('0x25'))?'':_0x41b7('0x26');_0x3e5b55['subject']+=this[_0x41b7('0x1f')][_0x41b7('0x23')];}}if(this[_0x41b7('0x1d')]===_0x41b7('0x27')){_0x3e5b55[_0x41b7('0x28')]=this[_0x41b7('0x29')]['id'];}else{_0x3e5b55[_[_0x41b7('0x2a')](this[_0x41b7('0x1d')])+'AccountId']=this['account']['id'];}_0x3e5b55[_['upperFirst'](this[_0x41b7('0x1d')])+_0x41b7('0x2b')]=this[_0x41b7('0x15')]['id'];var _0x167c9c=this[_0x41b7('0x15')];if(rpc[this[_0x41b7('0x1d')]+_0x41b7('0x2c')]){if(this[_0x41b7('0x1d')]===_0x41b7('0xf')){var _0x51f3bf={'tls':{'rejectUnauthorized':![]}};if(this[_0x41b7('0x29')][_0x41b7('0x2d')][_0x41b7('0x2e')]){_0x51f3bf[_0x41b7('0x2e')]=this[_0x41b7('0x29')][_0x41b7('0x2d')][_0x41b7('0x2e')];}else{_0x51f3bf['host']=this[_0x41b7('0x29')][_0x41b7('0x2d')][_0x41b7('0x2f')];_0x51f3bf[_0x41b7('0x30')]=this[_0x41b7('0x29')][_0x41b7('0x2d')][_0x41b7('0x30')];_0x51f3bf['secure']=this['account']['Smtp']['secure'];}if(this[_0x41b7('0x29')][_0x41b7('0x2d')]['authentication']){_0x51f3bf[_0x41b7('0x31')]={'user':this[_0x41b7('0x29')][_0x41b7('0x2d')]['user'],'pass':this['account'][_0x41b7('0x2d')][_0x41b7('0x32')]};}_0x3e5b55['inReplyTo']=this[_0x41b7('0x1f')][_0x41b7('0x33')];_0x3e5b55['html']=_0x41b7('0x34')+_[_0x41b7('0x35')](_0x3e5b55[_0x41b7('0x10')],_0x41b7('0x36'),_0x41b7('0x37'))+'</div>';_0x3e5b55[_0x41b7('0x38')]={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0x41b7('0x39'),'Precedence':'auto_reply'};return mailRpc[_0x41b7('0x3a')](_0x51f3bf,_0x3e5b55)[_0x41b7('0x3b')](function(_0x5e56c1){logger['info']('[%s][AUTOREPLY]\x20SMTP\x20SENT',_0x151412);_0x3e5b55[_0x41b7('0x33')]=_0x5e56c1['message']['messageId'];return rpc[_0xce7116+_0x41b7('0x2c')][_0x41b7('0x3c')](_0x3e5b55);})['then'](function(_0x3ec526){logger['info'](_0x41b7('0x12'),_0x151412,JSON['stringify'](_0x3ec526));})['catch'](function(_0xb93aa4){logger['error'](_0x41b7('0x3d'),_0x151412,JSON[_0x41b7('0x3e')](_0xb93aa4));})[_0x41b7('0x3f')](function(){Promise[_0x41b7('0x40')]()['then'](function(){if(_0x39d213[0x0]!=='2'||_0x167c9c[_0x41b7('0x16')])return;return rpc[_0xce7116+_0x41b7('0x41')][_0x41b7('0x42')](_0x167c9c['id'],{'autoreplyExecuted':!![]})[_0x41b7('0x3b')](function(_0x2e7c28){logger['info'](_0x41b7('0x17'),_0x151412,JSON['stringify'](_0x2e7c28));})[_0x41b7('0x43')](function(_0x36d6a4){logger[_0x41b7('0x44')](_0x41b7('0x45'),_0x151412,JSON['stringify'](_0x36d6a4));});})[_0x41b7('0x3b')](function(){_0x48a403['next']();});});}else{return rpc[this[_0x41b7('0x1d')]+_0x41b7('0x2c')][_0x41b7('0x3c')](_0x3e5b55)[_0x41b7('0x3b')](function(_0x24748a){logger[_0x41b7('0x11')]('[%s][AUTOREPLY]\x20%s',_0x151412,_0x3e5b55['body']);})[_0x41b7('0x43')](function(_0x2bac9f){logger[_0x41b7('0x44')](_0x41b7('0x12'),_0x151412,JSON['stringify'](_0x2bac9f));})[_0x41b7('0x3f')](function(){Promise[_0x41b7('0x40')]()[_0x41b7('0x3b')](function(){if(_0x39d213[0x0]!=='2'||_0x167c9c['autoreplyExecuted'])return;return rpc[_0xce7116+_0x41b7('0x41')][_0x41b7('0x42')](_0x167c9c['id'],{'autoreplyExecuted':!![]})[_0x41b7('0x3b')](function(_0x22bfb5){logger['info'](_0x41b7('0x17'),_0x151412,JSON[_0x41b7('0x3e')](_0x22bfb5));})['catch'](function(_0x45a31a){logger[_0x41b7('0x44')](_0x41b7('0x45'),_0x151412,JSON[_0x41b7('0x3e')](_0x45a31a));});})['then'](function(){_0x48a403['next']();});});}}}catch(_0xecabda){logger[_0x41b7('0x44')](_0x41b7('0x12'),_0x151412,JSON['stringify'](_0xecabda));_0x48a403[_0x41b7('0x46')]();}};};
\ No newline at end of file
+var _0x5129=['channel','phone','read','subject','startsWith','Re:','Re:\x20','ChatWebsiteId','upperFirst','account','InteractionId','Message','Smtp','service','host','port','secure','auth','user','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','auto-replied','All','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','finally','Interaction','update','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../mailRpc','body','isAutoreply','[%s][AUTOREPLY]\x20%s','next','isNil','interaction','created','info','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','format','YYYY-MM-DD\x20HH:mm:ss','out','mail','getMustacheRender','message','from'];(function(_0x94586b,_0x2a88b3){var _0x2f9418=function(_0x5acca3){while(--_0x5acca3){_0x94586b['push'](_0x94586b['shift']());}};_0x2f9418(++_0x2a88b3);}(_0x5129,0xbc));var _0x9512=function(_0x588324,_0x816fc){_0x588324=_0x588324-0x0;var _0x435985=_0x5129[_0x588324];return _0x435985;};'use strict';var _=require(_0x9512('0x0'));var moment=require('moment');var utils=require(_0x9512('0x1'));var logger=require('../../../../config/logger')(_0x9512('0x2'));var rpc={'chatMessage':require(_0x9512('0x3')),'openchannelMessage':require(_0x9512('0x4')),'mailMessage':require(_0x9512('0x5')),'smsMessage':require(_0x9512('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage'),'chatInteraction':require(_0x9512('0x7')),'openchannelInteraction':require(_0x9512('0x8')),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require(_0x9512('0x9')),'faxInteraction':require(_0x9512('0xa')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var mailRpc=require(_0x9512('0xb'));exports['consequence']=function(_0x747c90,_0x57d5e6,_0x364179,_0x41b120){return function(_0x412464){try{var _0x23fd2f=this['channel'];if(_0x23fd2f==='mail'&&_0x41b120[_0x9512('0xc')][_0x9512('0xd')]){logger['info'](_0x9512('0xe'),_0x747c90,'Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)');return _0x412464[_0x9512('0xf')]();}if(_0x57d5e6[0x0]==='1'&&(_[_0x9512('0x10')](this[_0x9512('0x11')]['created'])||!this[_0x9512('0x11')][_0x9512('0x12')])){logger[_0x9512('0x13')](_0x9512('0xe'),_0x747c90,_0x9512('0x14'));return _0x412464[_0x9512('0xf')]();}if(_0x57d5e6[0x0]==='2'&&this[_0x9512('0x11')][_0x9512('0x15')]){logger[_0x9512('0x13')](_0x9512('0x16'),_0x747c90,_0x9512('0x17'));return _0x412464[_0x9512('0xf')]();}var _0x47e261={'ContactId':this['contact']['id'],'sentAt':moment()[_0x9512('0x18')](_0x9512('0x19')),'direction':_0x9512('0x1a')};if(this['channel']===_0x9512('0x1b')){_0x47e261[_0x9512('0xc')]=utils['getMustacheRender'](_0x57d5e6[0x2],this);}else{_0x47e261[_0x9512('0xc')]=utils[_0x9512('0x1c')](_0x57d5e6[0x1],this);}if(this[_0x9512('0x1d')]){_0x47e261['to']=this['message'][_0x9512('0x1e')]||'';if(this[_0x9512('0x1f')]===_0x9512('0x1b')&&_0x57d5e6[0x1]==='1'){_0x47e261['cc']=this['message']['cc']||'';}_0x47e261[_0x9512('0x1e')]=this[_0x9512('0x1d')]['to']||'';_0x47e261[_0x9512('0x20')]=this[_0x9512('0x1d')][_0x9512('0x20')]||'';_0x47e261[_0x9512('0x21')]=!![];if(this[_0x9512('0x1d')]['subject']){_0x47e261[_0x9512('0x22')]='';_0x47e261[_0x9512('0x22')]+=_[_0x9512('0x23')](this[_0x9512('0x1d')][_0x9512('0x22')],_0x9512('0x24'))?'':_0x9512('0x25');_0x47e261[_0x9512('0x22')]+=this[_0x9512('0x1d')][_0x9512('0x22')];}}if(this[_0x9512('0x1f')]==='chat'){_0x47e261[_0x9512('0x26')]=this['account']['id'];}else{_0x47e261[_[_0x9512('0x27')](this['channel'])+'AccountId']=this[_0x9512('0x28')]['id'];}_0x47e261[_[_0x9512('0x27')](this[_0x9512('0x1f')])+_0x9512('0x29')]=this[_0x9512('0x11')]['id'];var _0x4ede1d=this[_0x9512('0x11')];if(rpc[this['channel']+_0x9512('0x2a')]){if(this[_0x9512('0x1f')]===_0x9512('0x1b')){var _0x179d65={'tls':{'rejectUnauthorized':![]}};if(this[_0x9512('0x28')][_0x9512('0x2b')][_0x9512('0x2c')]){_0x179d65[_0x9512('0x2c')]=this[_0x9512('0x28')][_0x9512('0x2b')]['service'];}else{_0x179d65['host']=this[_0x9512('0x28')]['Smtp'][_0x9512('0x2d')];_0x179d65[_0x9512('0x2e')]=this[_0x9512('0x28')][_0x9512('0x2b')][_0x9512('0x2e')];_0x179d65['secure']=this[_0x9512('0x28')]['Smtp'][_0x9512('0x2f')];}if(this['account'][_0x9512('0x2b')]['authentication']){_0x179d65[_0x9512('0x30')]={'user':this[_0x9512('0x28')]['Smtp'][_0x9512('0x31')],'pass':this[_0x9512('0x28')][_0x9512('0x2b')]['pass']};}_0x47e261[_0x9512('0x32')]=this[_0x9512('0x1d')][_0x9512('0x33')];_0x47e261[_0x9512('0x34')]=_0x9512('0x35')+_[_0x9512('0x36')](_0x47e261[_0x9512('0xc')],_0x9512('0x37'),_0x9512('0x38'))+_0x9512('0x39');_0x47e261[_0x9512('0x3a')]={'Auto-Submitted':_0x9512('0x3b'),'X-Auto-Response-Suppress':_0x9512('0x3c'),'Precedence':'auto_reply'};return mailRpc['sendMailMessage'](_0x179d65,_0x47e261)[_0x9512('0x3d')](function(_0x30d7b2){logger['info'](_0x9512('0x3e'),_0x747c90);_0x47e261[_0x9512('0x33')]=_0x30d7b2[_0x9512('0x1d')]['messageId'];return rpc[_0x23fd2f+'Message'][_0x9512('0x3f')](_0x47e261);})[_0x9512('0x3d')](function(_0x54cedf){logger['info']('[%s][AUTOREPLY]\x20%s',_0x747c90,JSON[_0x9512('0x40')](_0x54cedf));})[_0x9512('0x41')](function(_0x1d77c7){logger[_0x9512('0x42')](_0x9512('0x43'),_0x747c90,JSON[_0x9512('0x40')](_0x1d77c7));})[_0x9512('0x44')](function(){Promise['resolve']()[_0x9512('0x3d')](function(){if(_0x57d5e6[0x0]!=='2'||_0x4ede1d['autoreplyExecuted'])return;return rpc[_0x23fd2f+_0x9512('0x45')][_0x9512('0x46')](_0x4ede1d['id'],{'autoreplyExecuted':!![]})['then'](function(_0x3b07c9){logger[_0x9512('0x13')](_0x9512('0x16'),_0x747c90,JSON[_0x9512('0x40')](_0x3b07c9));})['catch'](function(_0x3fea71){logger[_0x9512('0x42')](_0x9512('0x47'),_0x747c90,JSON['stringify'](_0x3fea71));});})[_0x9512('0x3d')](function(){_0x412464[_0x9512('0xf')]();});});}else{return rpc[this['channel']+'Message']['create'](_0x47e261)['then'](function(_0x5d2224){logger[_0x9512('0x13')](_0x9512('0xe'),_0x747c90,_0x47e261[_0x9512('0xc')]);})[_0x9512('0x41')](function(_0x4622ce){logger[_0x9512('0x42')](_0x9512('0xe'),_0x747c90,JSON[_0x9512('0x40')](_0x4622ce));})[_0x9512('0x44')](function(){Promise['resolve']()[_0x9512('0x3d')](function(){if(_0x57d5e6[0x0]!=='2'||_0x4ede1d['autoreplyExecuted'])return;return rpc[_0x23fd2f+_0x9512('0x45')][_0x9512('0x46')](_0x4ede1d['id'],{'autoreplyExecuted':!![]})[_0x9512('0x3d')](function(_0x5ac1dc){logger[_0x9512('0x13')](_0x9512('0x16'),_0x747c90,JSON[_0x9512('0x40')](_0x5ac1dc));})[_0x9512('0x41')](function(_0x484a52){logger['error'](_0x9512('0x47'),_0x747c90,JSON[_0x9512('0x40')](_0x484a52));});})['then'](function(){_0x412464[_0x9512('0xf')]();});});}}}catch(_0x166db9){logger[_0x9512('0x42')](_0x9512('0xe'),_0x747c90,JSON[_0x9512('0x40')](_0x166db9));_0x412464[_0x9512('0x48')]();}};};
\ No newline at end of file
index 004e6c1..48c1473 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe965=['[%s][CLOSE]\x20%s','stringify','finally','stop','moment','../../../../config/logger','routing','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','channel','Interaction','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error'];(function(_0x3b1022,_0x49509e){var _0x3d700a=function(_0x193ea5){while(--_0x193ea5){_0x3b1022['push'](_0x3b1022['shift']());}};_0x3d700a(++_0x49509e);}(_0xe965,0x1d0));var _0x5e96=function(_0x39faf3,_0x1f009d){_0x39faf3=_0x39faf3-0x0;var _0x2c2a40=_0xe965[_0x39faf3];return _0x2c2a40;};'use strict';var moment=require(_0x5e96('0x0'));var logger=require(_0x5e96('0x1'))(_0x5e96('0x2'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x5e96('0x3')),'smsInteraction':require(_0x5e96('0x4')),'mailInteraction':require(_0x5e96('0x5')),'faxInteraction':require(_0x5e96('0x6')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports[_0x5e96('0x7')]=function(_0x2d8639,_0xef15a2,_0x43e60e,_0x53156b){return function(_0x229554){try{logger[_0x5e96('0x8')](_0x5e96('0x9'),_0x2d8639,_0xef15a2[0x0]);var _0x1dd432={'closed':0x1,'closedAt':moment()[_0x5e96('0xa')](_0x5e96('0xb')),'closeReason':'system','disposition':_0xef15a2[0x0]};if(rpc[_0x53156b[_0x5e96('0xc')]+_0x5e96('0xd')]){rpc[_0x53156b[_0x5e96('0xc')]+_0x5e96('0xd')]['update'](_0x53156b[_0x5e96('0xe')]['id'],_0x1dd432)[_0x5e96('0xf')](function(_0x1ae0c5){logger[_0x5e96('0x8')](_0x5e96('0x10'),_0x2d8639,_0x53156b['interaction']['id']);})[_0x5e96('0x11')](function(_0xa7bb23){logger[_0x5e96('0x12')](_0x5e96('0x13'),_0x2d8639,JSON[_0x5e96('0x14')](_0xa7bb23));})[_0x5e96('0x15')](function(){_0x229554[_0x5e96('0x16')]();});}}catch(_0x685516){logger['error'](_0x5e96('0x13'),_0x2d8639,JSON['stringify'](_0x685516));_0x229554[_0x5e96('0x16')]();}};};
\ No newline at end of file
+var _0x42c6=['error','[%s][CLOSE]\x20%s','stringify','finally','stop','../../../../config/logger','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','info','system','channel','Interaction','update','interaction','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!'];(function(_0x29733c,_0x2da30b){var _0x49e72f=function(_0x405c92){while(--_0x405c92){_0x29733c['push'](_0x29733c['shift']());}};_0x49e72f(++_0x2da30b);}(_0x42c6,0x175));var _0x642c=function(_0x1ab8a5,_0x3b80d8){_0x1ab8a5=_0x1ab8a5-0x0;var _0x506d52=_0x42c6[_0x1ab8a5];return _0x506d52;};'use strict';var moment=require('moment');var logger=require(_0x642c('0x0'))('routing');var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x642c('0x1')),'whatsappInteraction':require(_0x642c('0x2'))};exports[_0x642c('0x3')]=function(_0x4e72e,_0x35c7a4,_0x19e030,_0x3c1422){return function(_0x189e3f){try{logger[_0x642c('0x4')]('[%s][CLOSE]\x20reason\x20%s',_0x4e72e,_0x35c7a4[0x0]);var _0x2a9ac0={'closed':0x1,'closedAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':_0x642c('0x5'),'disposition':_0x35c7a4[0x0]};if(rpc[_0x3c1422[_0x642c('0x6')]+_0x642c('0x7')]){rpc[_0x3c1422[_0x642c('0x6')]+'Interaction'][_0x642c('0x8')](_0x3c1422[_0x642c('0x9')]['id'],_0x2a9ac0)['then'](function(_0x26638){logger[_0x642c('0x4')](_0x642c('0xa'),_0x4e72e,_0x3c1422[_0x642c('0x9')]['id']);})['catch'](function(_0x5c4ba6){logger[_0x642c('0xb')](_0x642c('0xc'),_0x4e72e,JSON[_0x642c('0xd')](_0x5c4ba6));})[_0x642c('0xe')](function(){_0x189e3f[_0x642c('0xf')]();});}}catch(_0x42e74a){logger['error'](_0x642c('0xc'),_0x4e72e,JSON[_0x642c('0xd')](_0x42e74a));_0x189e3f[_0x642c('0xf')]();}};};
\ No newline at end of file
index 3a38541..ed97639 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b84=['chat','ChatWebsiteId','account','upperFirst','InteractionId','created','body','then','stringify','finally','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','message','dialogflow','result','fulfillment','speech','providerName','providerResponse','create','endConversation','catch','error','lodash','moment','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../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'];(function(_0x399d76,_0xdc4493){var _0x3b19a1=function(_0x262225){while(--_0x262225){_0x399d76['push'](_0x399d76['shift']());}};_0x3b19a1(++_0xdc4493);}(_0x7b84,0x17c));var _0x47b8=function(_0x3a182b,_0x99e824){_0x3a182b=_0x3a182b-0x0;var _0x3b8647=_0x7b84[_0x3a182b];return _0x3b8647;};'use strict';var _=require(_0x47b8('0x0'));var moment=require(_0x47b8('0x1'));var apiai=require(_0x47b8('0x2'));var md5=require(_0x47b8('0x3'));var utils=require(_0x47b8('0x4'));var logger=require(_0x47b8('0x5'))(_0x47b8('0x6'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x47b8('0x7')),'mailMessage':require(_0x47b8('0x8')),'smsMessage':require(_0x47b8('0x9')),'faxMessage':require(_0x47b8('0xa')),'whatsappMessage':require(_0x47b8('0xb'))};exports[_0x47b8('0xc')]=function(_0x53e656,_0x3867ca){return function(_0x3ce846){try{if(!_[_0x47b8('0xd')](this[_0x47b8('0xe')][_0x47b8('0xf')])){logger[_0x47b8('0x10')](_0x47b8('0x11'),_0x53e656,_0x47b8('0x12'));return _0x3ce846[_0x47b8('0x13')]();}var _0x429262={'ContactId':this[_0x47b8('0x14')]['id'],'sentAt':moment()[_0x47b8('0x15')](_0x47b8('0x16')),'direction':_0x47b8('0x17')};if(this[_0x47b8('0x18')]===_0x47b8('0x19')||this[_0x47b8('0x18')]===_0x47b8('0x1a')){_0x429262[_0x47b8('0x1b')]=this[_0x47b8('0xe')][_0x47b8('0x1b')];}var _0x127d42=this[_0x47b8('0x18')];if(_0x127d42===_0x47b8('0x1c')){_0x429262[_0x47b8('0x1d')]=this[_0x47b8('0x1e')]['id'];}else{_0x429262[_[_0x47b8('0x1f')](_0x127d42)+'AccountId']=this[_0x47b8('0x1e')]['id'];}_0x429262[_[_0x47b8('0x1f')](_0x127d42)+_0x47b8('0x20')]=this[_0x47b8('0xe')]['id'];if(this[_0x47b8('0xe')][_0x47b8('0x21')]){var _0x4765ad=_0x3867ca[0x2];if(!_['isEmpty'](_0x4765ad)){_0x429262[_0x47b8('0x22')]=utils['getMustacheRender'](_0x4765ad,this);return rpc[_0x127d42+'Message']['create'](_0x429262)[_0x47b8('0x23')](function(_0x36faf1){logger[_0x47b8('0x10')]('[%s][DIALOGFLOW]\x20%s',_0x53e656,_0x429262['body']);})['catch'](function(_0x1c5bfd){logger['error'](_0x47b8('0x11'),_0x53e656,JSON[_0x47b8('0x24')](_0x1c5bfd));})[_0x47b8('0x25')](function(){logger[_0x47b8('0x10')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x53e656);_0x3ce846[_0x47b8('0x26')]();});}else{logger[_0x47b8('0x10')](_0x47b8('0x27'),_0x53e656);_0x3ce846[_0x47b8('0x26')]();}}else{var _0x168cde=this;var _0x232708=apiai(_0x3867ca[0x0],{'language':_0x3867ca[0x1]||'en'});return _0x232708['textRequest'](this[_0x47b8('0x28')][_0x47b8('0x22')],{'sessionId':md5(this['interaction']['id'])})[_0x47b8('0x23')](function(_0x247429){_0x168cde[_0x47b8('0x22')][_0x47b8('0x29')]=_0x247429;_0x429262['body']=_0x247429[_0x47b8('0x2a')][_0x47b8('0x2b')][_0x47b8('0x2c')];_0x429262[_0x47b8('0x2d')]=_0x47b8('0x29');_0x429262[_0x47b8('0x2e')]=JSON[_0x47b8('0x24')](_0x247429);return rpc[_0x127d42+'Message'][_0x47b8('0x2f')](_0x429262)[_0x47b8('0x23')](function(_0x4bcc98){logger[_0x47b8('0x10')](_0x47b8('0x11'),_0x53e656,_0x429262[_0x47b8('0x22')]);if(_0x247429[_0x47b8('0x2a')]['metadata'][_0x47b8('0x30')]){_0x3ce846['next']();}else{_0x3ce846[_0x47b8('0x26')]();}})[_0x47b8('0x31')](function(_0x33e653){logger[_0x47b8('0x32')]('[%s][DIALOGFLOW]\x20%s',_0x53e656,JSON[_0x47b8('0x24')](_0x33e653));_0x3ce846[_0x47b8('0x13')]();});})[_0x47b8('0x31')](function(_0x1b6c0a){logger[_0x47b8('0x32')](_0x47b8('0x11'),_0x53e656,_0x1b6c0a['message']);_0x3ce846['next']();});}}catch(_0x52599e){logger[_0x47b8('0x32')](_0x47b8('0x11'),_0x53e656,JSON[_0x47b8('0x24')](_0x52599e));_0x3ce846['stop']();}};};
\ No newline at end of file
+var _0x5a4f=['info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','phone','chat','ChatWebsiteId','upperFirst','AccountId','account','InteractionId','created','body','create','then','catch','stringify','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','dialogflow','fulfillment','providerName','providerResponse','result','endConversation','error','lodash','apiai-promise','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','isNil','interaction','UserId'];(function(_0x147d60,_0xcfabc){var _0x62cc8d=function(_0x4b0976){while(--_0x4b0976){_0x147d60['push'](_0x147d60['shift']());}};_0x62cc8d(++_0xcfabc);}(_0x5a4f,0x10d));var _0xf5a4=function(_0x4e6ae6,_0x49dba6){_0x4e6ae6=_0x4e6ae6-0x0;var _0x23c108=_0x5a4f[_0x4e6ae6];return _0x23c108;};'use strict';var _=require(_0xf5a4('0x0'));var moment=require('moment');var apiai=require(_0xf5a4('0x1'));var md5=require('md5');var utils=require(_0xf5a4('0x2'));var logger=require('../../../../config/logger')(_0xf5a4('0x3'));var rpc={'chatMessage':require(_0xf5a4('0x4')),'openchannelMessage':require(_0xf5a4('0x5')),'mailMessage':require(_0xf5a4('0x6')),'smsMessage':require(_0xf5a4('0x7')),'faxMessage':require(_0xf5a4('0x8')),'whatsappMessage':require(_0xf5a4('0x9'))};exports['consequence']=function(_0x354c7d,_0xac1c57){return function(_0x3ef3da){try{if(!_[_0xf5a4('0xa')](this[_0xf5a4('0xb')][_0xf5a4('0xc')])){logger[_0xf5a4('0xd')](_0xf5a4('0xe'),_0x354c7d,_0xf5a4('0xf'));return _0x3ef3da[_0xf5a4('0x10')]();}var _0x3cdf31={'ContactId':this['contact']['id'],'sentAt':moment()[_0xf5a4('0x11')](_0xf5a4('0x12')),'direction':_0xf5a4('0x13')};if(this[_0xf5a4('0x14')]===_0xf5a4('0x15')||this[_0xf5a4('0x14')]==='whatsapp'){_0x3cdf31[_0xf5a4('0x16')]=this[_0xf5a4('0xb')][_0xf5a4('0x16')];}var _0x3bf5ec=this[_0xf5a4('0x14')];if(_0x3bf5ec===_0xf5a4('0x17')){_0x3cdf31[_0xf5a4('0x18')]=this['account']['id'];}else{_0x3cdf31[_[_0xf5a4('0x19')](_0x3bf5ec)+_0xf5a4('0x1a')]=this[_0xf5a4('0x1b')]['id'];}_0x3cdf31[_[_0xf5a4('0x19')](_0x3bf5ec)+_0xf5a4('0x1c')]=this[_0xf5a4('0xb')]['id'];if(this['interaction'][_0xf5a4('0x1d')]){var _0x14c8c3=_0xac1c57[0x2];if(!_['isEmpty'](_0x14c8c3)){_0x3cdf31[_0xf5a4('0x1e')]=utils['getMustacheRender'](_0x14c8c3,this);return rpc[_0x3bf5ec+'Message'][_0xf5a4('0x1f')](_0x3cdf31)[_0xf5a4('0x20')](function(_0x30d013){logger[_0xf5a4('0xd')](_0xf5a4('0xe'),_0x354c7d,_0x3cdf31[_0xf5a4('0x1e')]);})[_0xf5a4('0x21')](function(_0x357db0){logger['error'](_0xf5a4('0xe'),_0x354c7d,JSON[_0xf5a4('0x22')](_0x357db0));})['finally'](function(){logger['info'](_0xf5a4('0x23'),_0x354c7d);_0x3ef3da[_0xf5a4('0x24')]();});}else{logger[_0xf5a4('0xd')](_0xf5a4('0x25'),_0x354c7d);_0x3ef3da[_0xf5a4('0x24')]();}}else{var _0x5d577a=this;var _0x544d10=apiai(_0xac1c57[0x0],{'language':_0xac1c57[0x1]||'en'});return _0x544d10[_0xf5a4('0x26')](this[_0xf5a4('0x27')][_0xf5a4('0x1e')],{'sessionId':md5(this[_0xf5a4('0xb')]['id'])})[_0xf5a4('0x20')](function(_0x27ebae){_0x5d577a['body'][_0xf5a4('0x28')]=_0x27ebae;_0x3cdf31[_0xf5a4('0x1e')]=_0x27ebae['result'][_0xf5a4('0x29')]['speech'];_0x3cdf31[_0xf5a4('0x2a')]=_0xf5a4('0x28');_0x3cdf31[_0xf5a4('0x2b')]=JSON[_0xf5a4('0x22')](_0x27ebae);return rpc[_0x3bf5ec+'Message'][_0xf5a4('0x1f')](_0x3cdf31)[_0xf5a4('0x20')](function(_0x2f45a4){logger[_0xf5a4('0xd')](_0xf5a4('0xe'),_0x354c7d,_0x3cdf31[_0xf5a4('0x1e')]);if(_0x27ebae[_0xf5a4('0x2c')]['metadata'][_0xf5a4('0x2d')]){_0x3ef3da[_0xf5a4('0x10')]();}else{_0x3ef3da[_0xf5a4('0x24')]();}})[_0xf5a4('0x21')](function(_0x219aa6){logger['error'](_0xf5a4('0xe'),_0x354c7d,JSON[_0xf5a4('0x22')](_0x219aa6));_0x3ef3da[_0xf5a4('0x10')]();});})[_0xf5a4('0x21')](function(_0x43ebf2){logger[_0xf5a4('0x2e')](_0xf5a4('0xe'),_0x354c7d,_0x43ebf2[_0xf5a4('0x27')]);_0x3ef3da[_0xf5a4('0x10')]();});}}catch(_0x5a500a){logger['error'](_0xf5a4('0xe'),_0x354c7d,JSON[_0xf5a4('0x22')](_0x5a500a));_0x3ef3da[_0xf5a4('0x24')]();}};};
\ No newline at end of file
index 0f86eb9..97440b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00ce=['finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','replace','SessionsClient','sessionPath','message','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','end_conversation','boolValue','allRequiredParamsPresent','fields','DIALOGFLOWV2_INTENTNAME','name','displayName','intent','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerResponse','fulfillmentText','all','lodash','dialogflow','md5','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','body','create','then','info','catch','error','[%s][DIALOGFLOWV2]\x20%s','stringify','interaction','UserId','next','contact','YYYY-MM-DD\x20HH:mm:ss','channel','sms','whatsapp','phone','chat','ChatWebsiteId','upperFirst','AccountId','account','InteractionId','created','isEmpty','getMustacheRender'];(function(_0x346962,_0x4f69d6){var _0x3f2a3d=function(_0x5cf591){while(--_0x5cf591){_0x346962['push'](_0x346962['shift']());}};_0x3f2a3d(++_0x4f69d6);}(_0x00ce,0x132));var _0xe00c=function(_0x35c8e7,_0x1bbd00){_0x35c8e7=_0x35c8e7-0x0;var _0x3d5a6c=_0x00ce[_0x35c8e7];return _0x3d5a6c;};'use strict';var _=require(_0xe00c('0x0'));var dialogflow=require(_0xe00c('0x1'));var md5=require(_0xe00c('0x2'));var moment=require(_0xe00c('0x3'));var Promise=require(_0xe00c('0x4'));var logger=require(_0xe00c('0x5'))(_0xe00c('0x6'));var utils=require(_0xe00c('0x7'));var rpc={'chatMessage':require(_0xe00c('0x8')),'openchannelMessage':require(_0xe00c('0x9')),'mailMessage':require(_0xe00c('0xa')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xe00c('0xb')),'whatsappMessage':require(_0xe00c('0xc'))};function createMessage(_0x4ceabd,_0x28ba6c,_0xeb7f87,_0x543962){return new Promise(function(_0x33c5b7,_0x6e3c7f){var _0x1d5535=_['clone'](_0xeb7f87);_0x1d5535[_0xe00c('0xd')]=_0x543962;return rpc[_0x28ba6c+'Message'][_0xe00c('0xe')](_0x1d5535)[_0xe00c('0xf')](function(){logger[_0xe00c('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0x4ceabd,_0x1d5535[_0xe00c('0xd')]);_0x33c5b7();})[_0xe00c('0x11')](function(_0x13e045){logger[_0xe00c('0x12')](_0xe00c('0x13'),_0x4ceabd,JSON[_0xe00c('0x14')](_0x13e045));_0x6e3c7f(_0x13e045);});});}exports['consequence']=function(_0x371314,_0x1f4217){return function(_0x4474b9){try{if(!_['isNil'](this[_0xe00c('0x15')][_0xe00c('0x16')])){logger[_0xe00c('0x10')](_0xe00c('0x13'),_0x371314,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x4474b9[_0xe00c('0x17')]();}var _0xeae658={'ContactId':this[_0xe00c('0x18')]['id'],'sentAt':moment()['format'](_0xe00c('0x19')),'direction':'out'};if(this[_0xe00c('0x1a')]===_0xe00c('0x1b')||this['channel']===_0xe00c('0x1c')){_0xeae658['phone']=this[_0xe00c('0x15')][_0xe00c('0x1d')];}var _0x1c22e4=this[_0xe00c('0x1a')];if(_0x1c22e4===_0xe00c('0x1e')){_0xeae658[_0xe00c('0x1f')]=this['account']['id'];}else{_0xeae658[_[_0xe00c('0x20')](_0x1c22e4)+_0xe00c('0x21')]=this[_0xe00c('0x22')]['id'];}_0xeae658[_[_0xe00c('0x20')](_0x1c22e4)+_0xe00c('0x23')]=this[_0xe00c('0x15')]['id'];if(this[_0xe00c('0x15')][_0xe00c('0x24')]){var _0x1d7e9e=_0x1f4217[0x4];if(!_[_0xe00c('0x25')](_0x1d7e9e)){_0xeae658[_0xe00c('0xd')]=utils[_0xe00c('0x26')](_0x1d7e9e,this);return rpc[_0x1c22e4+'Message']['create'](_0xeae658)[_0xe00c('0xf')](function(_0x3609a6){logger[_0xe00c('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0x371314,_0xeae658[_0xe00c('0xd')]);})[_0xe00c('0x11')](function(_0x10b67e){logger[_0xe00c('0x12')]('[%s][DIALOGFLOWV2]\x20%s',_0x371314,JSON[_0xe00c('0x14')](_0x10b67e));})[_0xe00c('0x27')](function(){logger[_0xe00c('0x10')](_0xe00c('0x28'),_0x371314);_0x4474b9[_0xe00c('0x29')]();});}else{logger[_0xe00c('0x10')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x371314);_0x4474b9[_0xe00c('0x29')]();}}else{var _0x2d6a44=this;var _0x2acb8d=_0x1f4217[0x2][_0xe00c('0x2a')](/\\n/g,'\x0a');var _0x22668b={'credentials':{'private_key':_0x2acb8d,'client_email':_0x1f4217[0x1]}};var _0x408561=new dialogflow[(_0xe00c('0x2b'))](_0x22668b);var _0x478fb3=_0x408561[_0xe00c('0x2c')](_0x1f4217[0x0],md5(_0x2d6a44[_0xe00c('0x15')]['id']));var _0x4d42d3={'session':_0x478fb3,'queryInput':{'text':{'text':_0x2d6a44[_0xe00c('0x2d')][_0xe00c('0xd')],'languageCode':_0x1f4217[0x3]||'en'}}};return _0x408561[_0xe00c('0x2e')](_0x4d42d3)[_0xe00c('0xf')](function(_0x554f14){if(_0x554f14&&_0x554f14[_0xe00c('0x2f')]){_0x2d6a44[_0xe00c('0xd')][_0xe00c('0x30')]=_0x554f14;var _0x5596a1=_0x554f14[0x0];var _0x1cbfb2=_0x5596a1[_0xe00c('0x31')]['diagnosticInfo']&&_0x5596a1[_0xe00c('0x31')]['diagnosticInfo']['fields']?_0x5596a1[_0xe00c('0x31')][_0xe00c('0x32')]['fields'][_0xe00c('0x33')][_0xe00c('0x34')]:![];_0x2d6a44[_0xe00c('0xd')]['DIALOGFLOWV2_ACTION']=_0x5596a1[_0xe00c('0x31')]['action'];_0x2d6a44['body']['DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT']=_0x5596a1[_0xe00c('0x31')][_0xe00c('0x35')];_0x2d6a44[_0xe00c('0xd')]['DIALOGFLOWV2_ENDCONVERSATION']=_0x5596a1[_0xe00c('0x31')][_0xe00c('0x32')]&&_0x5596a1[_0xe00c('0x31')][_0xe00c('0x32')][_0xe00c('0x36')]?_0x5596a1['queryResult'][_0xe00c('0x32')]['fields'][_0xe00c('0x33')][_0xe00c('0x34')]:![];_0x2d6a44['body'][_0xe00c('0x37')]=_0x5596a1['queryResult']['intent'][_0xe00c('0x38')];_0x2d6a44['body']['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x5596a1[_0xe00c('0x31')]['intent'][_0xe00c('0x39')];_0x2d6a44[_0xe00c('0xd')]['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x5596a1[_0xe00c('0x31')][_0xe00c('0x3a')][_0xe00c('0x3b')];_0x2d6a44[_0xe00c('0xd')][_0xe00c('0x3c')]=_0x5596a1[_0xe00c('0x31')][_0xe00c('0x3d')];_0x2d6a44[_0xe00c('0xd')][_0xe00c('0x3e')]=_0x5596a1[_0xe00c('0x31')][_0xe00c('0x3f')];_0x2d6a44[_0xe00c('0xd')][_0xe00c('0x40')]=_0x5596a1['queryResult'][_0xe00c('0x41')];_0xeae658['providerName']='dialogflowV2';_0xeae658[_0xe00c('0x42')]=JSON[_0xe00c('0x14')](_0x554f14);var _0x2ee0a4=[];for(var _0x4aeabb=0x0;_0x4aeabb<_0x554f14[_0xe00c('0x2f')];_0x4aeabb++){var _0x11b889=_0x554f14[_0x4aeabb];if(_0x11b889&&_0x11b889[_0xe00c('0x31')]&&_0x11b889[_0xe00c('0x31')]['fulfillmentText']){_0x2ee0a4['push'](createMessage(_0x371314,_0x1c22e4,_0xeae658,_0x11b889[_0xe00c('0x31')][_0xe00c('0x43')]));}}return Promise[_0xe00c('0x44')](_0x2ee0a4)[_0xe00c('0xf')](function(){if(_0x1cbfb2){_0x4474b9[_0xe00c('0x17')]();}else{_0x4474b9[_0xe00c('0x29')]();}})['catch'](function(_0x25c8f0){logger[_0xe00c('0x12')]('[%s][DIALOGFLOWV2]\x20%s',_0x371314,JSON[_0xe00c('0x14')](_0x25c8f0));_0x4474b9[_0xe00c('0x17')]();});}})[_0xe00c('0x11')](function(_0xec0f81){logger[_0xe00c('0x12')](_0xe00c('0x13'),_0x371314,_0xec0f81[_0xe00c('0x2d')]);_0x4474b9[_0xe00c('0x17')]();});}}catch(_0x2f6720){logger[_0xe00c('0x12')](_0xe00c('0x13'),_0x371314,JSON[_0xe00c('0x14')](_0x2f6720));_0x4474b9[_0xe00c('0x29')]();}};};
\ No newline at end of file
+var _0xab4d=['AccountId','InteractionId','created','isEmpty','Message','finally','stop','sessionPath','message','detectIntent','dialogflowV2','queryResult','fields','end_conversation','boolValue','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','diagnosticInfo','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','DIALOGFLOWV2_ISFALLBACKINTENT','languageCode','queryText','intentDetectionConfidence','providerName','providerResponse','length','push','fulfillmentText','all','stringify','lodash','dialogflow','md5','moment','routing','./utils','../../rpc/openchannelMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','create','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','consequence','isNil','interaction','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','chat','account','upperFirst'];(function(_0x5617e2,_0x1ffcd7){var _0x27b60d=function(_0xf3f7a2){while(--_0xf3f7a2){_0x5617e2['push'](_0x5617e2['shift']());}};_0x27b60d(++_0x1ffcd7);}(_0xab4d,0x1ae));var _0xdab4=function(_0xf89c3,_0x351bf1){_0xf89c3=_0xf89c3-0x0;var _0x274fc8=_0xab4d[_0xf89c3];return _0x274fc8;};'use strict';var _=require(_0xdab4('0x0'));var dialogflow=require(_0xdab4('0x1'));var md5=require(_0xdab4('0x2'));var moment=require(_0xdab4('0x3'));var Promise=require('bluebird');var logger=require('../../../../config/logger')(_0xdab4('0x4'));var utils=require(_0xdab4('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xdab4('0x6')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xdab4('0x7')),'whatsappMessage':require(_0xdab4('0x8'))};function createMessage(_0x1a57f9,_0x34ee7c,_0x69556c,_0x176349){return new Promise(function(_0x8e5a7e,_0xdaa865){var _0x504a31=_[_0xdab4('0x9')](_0x69556c);_0x504a31[_0xdab4('0xa')]=_0x176349;return rpc[_0x34ee7c+'Message'][_0xdab4('0xb')](_0x504a31)[_0xdab4('0xc')](function(){logger[_0xdab4('0xd')](_0xdab4('0xe'),_0x1a57f9,_0x504a31[_0xdab4('0xa')]);_0x8e5a7e();})[_0xdab4('0xf')](function(_0xa6c0c4){logger[_0xdab4('0x10')](_0xdab4('0xe'),_0x1a57f9,JSON['stringify'](_0xa6c0c4));_0xdaa865(_0xa6c0c4);});});}exports[_0xdab4('0x11')]=function(_0x40075b,_0x318c63){return function(_0x18e03b){try{if(!_[_0xdab4('0x12')](this[_0xdab4('0x13')]['UserId'])){logger['info']('[%s][DIALOGFLOWV2]\x20%s',_0x40075b,_0xdab4('0x14'));return _0x18e03b[_0xdab4('0x15')]();}var _0x482602={'ContactId':this[_0xdab4('0x16')]['id'],'sentAt':moment()[_0xdab4('0x17')](_0xdab4('0x18')),'direction':_0xdab4('0x19')};if(this[_0xdab4('0x1a')]==='sms'||this[_0xdab4('0x1a')]===_0xdab4('0x1b')){_0x482602['phone']=this[_0xdab4('0x13')][_0xdab4('0x1c')];}var _0x5aaa40=this['channel'];if(_0x5aaa40===_0xdab4('0x1d')){_0x482602['ChatWebsiteId']=this[_0xdab4('0x1e')]['id'];}else{_0x482602[_[_0xdab4('0x1f')](_0x5aaa40)+_0xdab4('0x20')]=this[_0xdab4('0x1e')]['id'];}_0x482602[_['upperFirst'](_0x5aaa40)+_0xdab4('0x21')]=this['interaction']['id'];if(this[_0xdab4('0x13')][_0xdab4('0x22')]){var _0x187335=_0x318c63[0x4];if(!_[_0xdab4('0x23')](_0x187335)){_0x482602[_0xdab4('0xa')]=utils['getMustacheRender'](_0x187335,this);return rpc[_0x5aaa40+_0xdab4('0x24')][_0xdab4('0xb')](_0x482602)[_0xdab4('0xc')](function(_0x1ed0bc){logger[_0xdab4('0xd')]('[%s][DIALOGFLOWV2]\x20%s',_0x40075b,_0x482602[_0xdab4('0xa')]);})['catch'](function(_0x4b3b22){logger[_0xdab4('0x10')](_0xdab4('0xe'),_0x40075b,JSON['stringify'](_0x4b3b22));})[_0xdab4('0x25')](function(){logger[_0xdab4('0xd')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x40075b);_0x18e03b[_0xdab4('0x26')]();});}else{logger[_0xdab4('0xd')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x40075b);_0x18e03b[_0xdab4('0x26')]();}}else{var _0x4c8da1=this;var _0x1deeec=_0x318c63[0x2]['replace'](/\\n/g,'\x0a');var _0x18c268={'credentials':{'private_key':_0x1deeec,'client_email':_0x318c63[0x1]}};var _0x5a02fb=new dialogflow['SessionsClient'](_0x18c268);var _0x5c706e=_0x5a02fb[_0xdab4('0x27')](_0x318c63[0x0],md5(_0x4c8da1['interaction']['id']));var _0xad8888={'session':_0x5c706e,'queryInput':{'text':{'text':_0x4c8da1[_0xdab4('0x28')][_0xdab4('0xa')],'languageCode':_0x318c63[0x3]||'en'}}};return _0x5a02fb[_0xdab4('0x29')](_0xad8888)[_0xdab4('0xc')](function(_0x4f3c5b){if(_0x4f3c5b&&_0x4f3c5b['length']){_0x4c8da1[_0xdab4('0xa')][_0xdab4('0x2a')]=_0x4f3c5b;var _0x4aa222=_0x4f3c5b[0x0];var _0x24d31f=_0x4aa222[_0xdab4('0x2b')]['diagnosticInfo']&&_0x4aa222['queryResult']['diagnosticInfo']['fields']?_0x4aa222[_0xdab4('0x2b')]['diagnosticInfo'][_0xdab4('0x2c')][_0xdab4('0x2d')][_0xdab4('0x2e')]:![];_0x4c8da1[_0xdab4('0xa')]['DIALOGFLOWV2_ACTION']=_0x4aa222[_0xdab4('0x2b')][_0xdab4('0x2f')];_0x4c8da1['body'][_0xdab4('0x30')]=_0x4aa222[_0xdab4('0x2b')][_0xdab4('0x31')];_0x4c8da1['body']['DIALOGFLOWV2_ENDCONVERSATION']=_0x4aa222[_0xdab4('0x2b')][_0xdab4('0x32')]&&_0x4aa222[_0xdab4('0x2b')]['diagnosticInfo']['fields']?_0x4aa222[_0xdab4('0x2b')]['diagnosticInfo'][_0xdab4('0x2c')][_0xdab4('0x2d')][_0xdab4('0x2e')]:![];_0x4c8da1['body'][_0xdab4('0x33')]=_0x4aa222[_0xdab4('0x2b')][_0xdab4('0x34')][_0xdab4('0x35')];_0x4c8da1[_0xdab4('0xa')][_0xdab4('0x36')]=_0x4aa222[_0xdab4('0x2b')]['intent']['displayName'];_0x4c8da1[_0xdab4('0xa')][_0xdab4('0x37')]=_0x4aa222['queryResult'][_0xdab4('0x34')]['isFallback'];_0x4c8da1[_0xdab4('0xa')]['DIALOGFLOWV2_LANGUAGECODE']=_0x4aa222[_0xdab4('0x2b')][_0xdab4('0x38')];_0x4c8da1[_0xdab4('0xa')]['DIALOGFLOWV2_QUERYTEXT']=_0x4aa222[_0xdab4('0x2b')][_0xdab4('0x39')];_0x4c8da1[_0xdab4('0xa')]['DIALOGFLOWV2_SCORE']=_0x4aa222[_0xdab4('0x2b')][_0xdab4('0x3a')];_0x482602[_0xdab4('0x3b')]='dialogflowV2';_0x482602[_0xdab4('0x3c')]=JSON['stringify'](_0x4f3c5b);var _0x46aa8d=[];for(var _0x267941=0x0;_0x267941<_0x4f3c5b[_0xdab4('0x3d')];_0x267941++){var _0x3d6980=_0x4f3c5b[_0x267941];if(_0x3d6980&&_0x3d6980[_0xdab4('0x2b')]&&_0x3d6980[_0xdab4('0x2b')]['fulfillmentText']){_0x46aa8d[_0xdab4('0x3e')](createMessage(_0x40075b,_0x5aaa40,_0x482602,_0x3d6980[_0xdab4('0x2b')][_0xdab4('0x3f')]));}}return Promise[_0xdab4('0x40')](_0x46aa8d)[_0xdab4('0xc')](function(){if(_0x24d31f){_0x18e03b[_0xdab4('0x15')]();}else{_0x18e03b['stop']();}})[_0xdab4('0xf')](function(_0xf10046){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x40075b,JSON[_0xdab4('0x41')](_0xf10046));_0x18e03b[_0xdab4('0x15')]();});}})[_0xdab4('0xf')](function(_0x28ffbe){logger['error'](_0xdab4('0xe'),_0x40075b,_0x28ffbe[_0xdab4('0x28')]);_0x18e03b[_0xdab4('0x15')]();});}}catch(_0x496cc7){logger[_0xdab4('0x10')](_0xdab4('0xe'),_0x40075b,JSON[_0xdab4('0x41')](_0x496cc7));_0x18e03b['stop']();}};};
\ No newline at end of file
index a2f9c86..79272df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00cb=['priorityTrue','info','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','error','[%s][GOTOIF]\x20eval\x20error:\x20%s','message','[%s][GOTOIF]\x20%s','stringify','validate','html-to-text','./utils','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','fromString','getMustacheRender','length','map','stop','condition'];(function(_0x413476,_0x4a7c69){var _0x91aee=function(_0x441698){while(--_0x441698){_0x413476['push'](_0x413476['shift']());}};_0x91aee(++_0x4a7c69);}(_0x00cb,0xd3));var _0xb00c=function(_0x16bea0,_0x59b8aa){_0x16bea0=_0x16bea0-0x0;var _0x476103=_0x00cb[_0x16bea0];return _0x476103;};'use strict';var schema=require(_0xb00c('0x0'));var _=require('lodash');var htmlToText=require(_0xb00c('0x1'));var utils=require(_0xb00c('0x2'));var logger=require('../../../../config/logger')('routing');var gotoif=schema({'condition':{'type':'string','required':!![],'message':_0xb00c('0x3')},'priorityTrue':{'type':_0xb00c('0x4'),'message':_0xb00c('0x5')},'priorityFalse':{'type':_0xb00c('0x4'),'message':_0xb00c('0x6')}});exports[_0xb00c('0x7')]=function(_0x2591af,_0x470b97){return function(_0x30258c){try{var _0x3ba401={'condition':htmlToText[_0xb00c('0x8')](utils[_0xb00c('0x9')](_0x470b97[0x0],this),{'wordwrap':![]})['replace'](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x470b97[0x1],'priorityFalse':_0x470b97[0x2]};var _0x31c35e=gotoif[_0xb00c('0x0')](_0x3ba401,{'typecast':!![]});if(_0x31c35e[_0xb00c('0xa')]){logger['error']('[%s][GOTOIF]\x20%s',_0x2591af,_[_0xb00c('0xb')](_0x31c35e,'message')['join'](',\x20'));_0x30258c[_0xb00c('0xc')]();}else{try{var _0xd62131=eval('('+_0x3ba401[_0xb00c('0xd')]+')');var _0x559b00=_0xd62131?_0x3ba401[_0xb00c('0xe')]:_0x3ba401['priorityFalse'];logger[_0xb00c('0xf')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x2591af,_0x3ba401['condition'],_0xd62131,_0x559b00||_0xb00c('0x10'));if(_0x559b00){var _0x28fade=_[_0xb00c('0x11')](_0x30258c[_0xb00c('0x12')](),{'p':_0x559b00});if(_0x28fade>=0x0){logger[_0xb00c('0xf')](_0xb00c('0x13'),_0x2591af,_0x559b00||'next',_0x28fade);_0x30258c[_0xb00c('0x10')](_0x28fade);}else{logger[_0xb00c('0xf')]('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x2591af,_0x559b00||'next');_0x30258c[_0xb00c('0xc')]();}}else{_0x30258c['next']();}}catch(_0x473373){logger[_0xb00c('0x14')](_0xb00c('0x15'),_0x2591af,_0x473373[_0xb00c('0x16')]);_0x30258c[_0xb00c('0xc')]();}}}catch(_0x3fc2d1){logger[_0xb00c('0x14')](_0xb00c('0x17'),_0x2591af,JSON[_0xb00c('0x18')](_0x3fc2d1));_0x30258c['stop']();}};};
\ No newline at end of file
+var _0x66e2=['stop','priorityTrue','priorityFalse','info','condition','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','error','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','validate','lodash','html-to-text','./utils','../../../../config/logger','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','replace','length','[%s][GOTOIF]\x20%s','map','message','join'];(function(_0x37080e,_0x250eb0){var _0x9ffbce=function(_0x84dfb5){while(--_0x84dfb5){_0x37080e['push'](_0x37080e['shift']());}};_0x9ffbce(++_0x250eb0);}(_0x66e2,0xf5));var _0x266e=function(_0x5d7ae8,_0x48a800){_0x5d7ae8=_0x5d7ae8-0x0;var _0x680da3=_0x66e2[_0x5d7ae8];return _0x680da3;};'use strict';var schema=require(_0x266e('0x0'));var _=require(_0x266e('0x1'));var htmlToText=require(_0x266e('0x2'));var utils=require(_0x266e('0x3'));var logger=require(_0x266e('0x4'))('routing');var gotoif=schema({'condition':{'type':'string','required':!![],'message':_0x266e('0x5')},'priorityTrue':{'type':_0x266e('0x6'),'message':_0x266e('0x7')},'priorityFalse':{'type':'number','message':_0x266e('0x8')}});exports[_0x266e('0x9')]=function(_0x1dee3f,_0x61fa16){return function(_0x57f7f6){try{var _0x61be0f={'condition':htmlToText['fromString'](utils['getMustacheRender'](_0x61fa16[0x0],this),{'wordwrap':![]})[_0x266e('0xa')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x61fa16[0x1],'priorityFalse':_0x61fa16[0x2]};var _0x1d7d9f=gotoif[_0x266e('0x0')](_0x61be0f,{'typecast':!![]});if(_0x1d7d9f[_0x266e('0xb')]){logger['error'](_0x266e('0xc'),_0x1dee3f,_[_0x266e('0xd')](_0x1d7d9f,_0x266e('0xe'))[_0x266e('0xf')](',\x20'));_0x57f7f6[_0x266e('0x10')]();}else{try{var _0x299f57=eval('('+_0x61be0f['condition']+')');var _0x5543e8=_0x299f57?_0x61be0f[_0x266e('0x11')]:_0x61be0f[_0x266e('0x12')];logger[_0x266e('0x13')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x1dee3f,_0x61be0f[_0x266e('0x14')],_0x299f57,_0x5543e8||_0x266e('0x15'));if(_0x5543e8){var _0x2ec756=_[_0x266e('0x16')](_0x57f7f6[_0x266e('0x17')](),{'p':_0x5543e8});if(_0x2ec756>=0x0){logger['info'](_0x266e('0x18'),_0x1dee3f,_0x5543e8||_0x266e('0x15'),_0x2ec756);_0x57f7f6[_0x266e('0x15')](_0x2ec756);}else{logger[_0x266e('0x13')](_0x266e('0x19'),_0x1dee3f,_0x5543e8||_0x266e('0x15'));_0x57f7f6[_0x266e('0x10')]();}}else{_0x57f7f6[_0x266e('0x15')]();}}catch(_0x4c5a96){logger[_0x266e('0x1a')](_0x266e('0x1b'),_0x1dee3f,_0x4c5a96[_0x266e('0xe')]);_0x57f7f6['stop']();}}}catch(_0x505ecf){logger[_0x266e('0x1a')](_0x266e('0xc'),_0x1dee3f,JSON[_0x266e('0x1c')](_0x505ecf));_0x57f7f6[_0x266e('0x10')]();}};};
\ No newline at end of file
index 8c63835..e1e4b21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8029=['findIndex','rules','info','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','[%s][GOTOP]\x20%s','stringify','lodash','../../../../config/logger','routing','number','consequence','length','error','map','message','join','stop','[%s][GOTOP]\x20priority\x20%s','priority'];(function(_0x9fc569,_0x19b3b7){var _0x4d45be=function(_0x3758dc){while(--_0x3758dc){_0x9fc569['push'](_0x9fc569['shift']());}};_0x4d45be(++_0x19b3b7);}(_0x8029,0xc5));var _0x9802=function(_0x375bc6,_0x355445){_0x375bc6=_0x375bc6-0x0;var _0x573863=_0x8029[_0x375bc6];return _0x573863;};'use strict';var schema=require('validate');var _=require(_0x9802('0x0'));var logger=require(_0x9802('0x1'))(_0x9802('0x2'));var gotop=schema({'priority':{'type':_0x9802('0x3'),'required':!![],'message':'priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'}});exports[_0x9802('0x4')]=function(_0x3872aa,_0x42bbbe){return function(_0x34a1aa){try{var _0x37ae95={'priority':_0x42bbbe[0x0]};var _0x487cc6=gotop['validate'](_0x37ae95,{'typecast':!![]});if(_0x487cc6[_0x9802('0x5')]){logger[_0x9802('0x6')]('[%s][GOTOP]\x20%s',_0x3872aa,_[_0x9802('0x7')](_0x487cc6,_0x9802('0x8'))[_0x9802('0x9')](',\x20'));_0x34a1aa[_0x9802('0xa')]();}else{logger['info'](_0x9802('0xb'),_0x3872aa,_0x37ae95[_0x9802('0xc')]);if(_0x37ae95[_0x9802('0xc')]){var _0x418cff=_[_0x9802('0xd')](_0x34a1aa[_0x9802('0xe')](),{'p':_0x37ae95['priority']});if(_0x418cff>=0x0){logger[_0x9802('0xf')](_0x9802('0x10'),_0x3872aa,_0x37ae95[_0x9802('0xc')]||_0x9802('0x11'),_0x418cff);_0x34a1aa[_0x9802('0x11')](_0x418cff);}else{logger['info'](_0x9802('0x12'),_0x3872aa,_0x37ae95[_0x9802('0xc')]||_0x9802('0x11'));_0x34a1aa[_0x9802('0xa')]();}}else{_0x34a1aa[_0x9802('0x11')]();}}}catch(_0x4881f9){logger[_0x9802('0x6')](_0x9802('0x13'),_0x3872aa,JSON[_0x9802('0x14')](_0x4881f9));_0x34a1aa[_0x9802('0xa')]();}};};
\ No newline at end of file
+var _0xed70=['lodash','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','error','[%s][GOTOP]\x20%s','map','message','stop','info','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','validate'];(function(_0x1a4dee,_0x1432e4){var _0x21f5fe=function(_0x4daff9){while(--_0x4daff9){_0x1a4dee['push'](_0x1a4dee['shift']());}};_0x21f5fe(++_0x1432e4);}(_0xed70,0x97));var _0x0ed7=function(_0x37adf8,_0x1ab9e0){_0x37adf8=_0x37adf8-0x0;var _0x92cd7e=_0xed70[_0x37adf8];return _0x92cd7e;};'use strict';var schema=require(_0x0ed7('0x0'));var _=require(_0x0ed7('0x1'));var logger=require('../../../../config/logger')(_0x0ed7('0x2'));var gotop=schema({'priority':{'type':_0x0ed7('0x3'),'required':!![],'message':_0x0ed7('0x4')}});exports[_0x0ed7('0x5')]=function(_0x3e1336,_0x3502ab){return function(_0x3ebf65){try{var _0x53e416={'priority':_0x3502ab[0x0]};var _0x4ad250=gotop['validate'](_0x53e416,{'typecast':!![]});if(_0x4ad250['length']){logger[_0x0ed7('0x6')](_0x0ed7('0x7'),_0x3e1336,_[_0x0ed7('0x8')](_0x4ad250,_0x0ed7('0x9'))['join'](',\x20'));_0x3ebf65[_0x0ed7('0xa')]();}else{logger[_0x0ed7('0xb')](_0x0ed7('0xc'),_0x3e1336,_0x53e416['priority']);if(_0x53e416[_0x0ed7('0xd')]){var _0x53eb7f=_[_0x0ed7('0xe')](_0x3ebf65['rules'](),{'p':_0x53e416['priority']});if(_0x53eb7f>=0x0){logger['info'](_0x0ed7('0xf'),_0x3e1336,_0x53e416[_0x0ed7('0xd')]||_0x0ed7('0x10'),_0x53eb7f);_0x3ebf65['next'](_0x53eb7f);}else{logger[_0x0ed7('0xb')](_0x0ed7('0x11'),_0x3e1336,_0x53e416[_0x0ed7('0xd')]||_0x0ed7('0x10'));_0x3ebf65[_0x0ed7('0xa')]();}}else{_0x3ebf65['next']();}}}catch(_0x41985e){logger[_0x0ed7('0x6')](_0x0ed7('0x7'),_0x3e1336,JSON[_0x0ed7('0x12')](_0x41985e));_0x3ebf65[_0x0ed7('0xa')]();}};};
\ No newline at end of file
index a803342..898e231 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53f5=['getMustacheRender','contact','channel','chat','ChatWebsiteId','account','upperFirst','InteractionId','Message','then','info','[%s][MESSAGE]\x20%s','catch','error','stringify','stop','lodash','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence'];(function(_0x38acf3,_0x3df840){var _0x2ae0fb=function(_0x4627f4){while(--_0x4627f4){_0x38acf3['push'](_0x38acf3['shift']());}};_0x2ae0fb(++_0x3df840);}(_0x53f5,0x1c0));var _0x553f=function(_0x21d5a1,_0x30fff3){_0x21d5a1=_0x21d5a1-0x0;var _0x51160a=_0x53f5[_0x21d5a1];return _0x51160a;};'use strict';var _=require(_0x553f('0x0'));var utils=require('./utils');var logger=require('../../../../config/logger')(_0x553f('0x1'));var rpc={'chatMessage':require(_0x553f('0x2')),'openchannelMessage':require(_0x553f('0x3')),'mailMessage':require(_0x553f('0x4')),'smsMessage':require(_0x553f('0x5')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x553f('0x6'))};exports[_0x553f('0x7')]=function(_0x1fcbc6,_0x57a2ed){return function(_0x15fcbe){try{var _0x2383e2={'body':utils[_0x553f('0x8')](_0x57a2ed[0x0],this),'ContactId':this[_0x553f('0x9')]['id']};if(this[_0x553f('0xa')]===_0x553f('0xb')){_0x2383e2[_0x553f('0xc')]=this[_0x553f('0xd')]['id'];}else{_0x2383e2[_[_0x553f('0xe')](this[_0x553f('0xa')])+'AccountId']=this[_0x553f('0xd')]['id'];}_0x2383e2[_[_0x553f('0xe')](this[_0x553f('0xa')])+_0x553f('0xf')]=this['interaction']['id'];if(rpc[this[_0x553f('0xa')]+_0x553f('0x10')]){return rpc[this[_0x553f('0xa')]+_0x553f('0x10')]['create'](_0x2383e2)[_0x553f('0x11')](function(_0x4f1ffe){logger[_0x553f('0x12')](_0x553f('0x13'),_0x1fcbc6,_0x2383e2['body']);_0x15fcbe['next']();})[_0x553f('0x14')](function(_0x5019f0){logger[_0x553f('0x15')](_0x553f('0x13'),_0x1fcbc6,JSON[_0x553f('0x16')](_0x5019f0));_0x15fcbe[_0x553f('0x17')]();});}}catch(_0x261c56){logger[_0x553f('0x15')]('[%s][MESSAGE]\x20%s',_0x1fcbc6,JSON[_0x553f('0x16')](_0x261c56));_0x15fcbe[_0x553f('0x17')]();}};};
\ No newline at end of file
+var _0x0924=['AccountId','InteractionId','interaction','Message','create','info','[%s][MESSAGE]\x20%s','next','catch','stringify','stop','error','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','contact','chat','ChatWebsiteId','account','upperFirst','channel'];(function(_0x165531,_0x1d9fb6){var _0x1c1a61=function(_0x19dc29){while(--_0x19dc29){_0x165531['push'](_0x165531['shift']());}};_0x1c1a61(++_0x1d9fb6);}(_0x0924,0x110));var _0x4092=function(_0x26dfc5,_0x138166){_0x26dfc5=_0x26dfc5-0x0;var _0x566350=_0x0924[_0x26dfc5];return _0x566350;};'use strict';var _=require(_0x4092('0x0'));var utils=require(_0x4092('0x1'));var logger=require(_0x4092('0x2'))(_0x4092('0x3'));var rpc={'chatMessage':require(_0x4092('0x4')),'openchannelMessage':require(_0x4092('0x5')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x4092('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x4092('0x7'))};exports['consequence']=function(_0x2d05ea,_0x107701){return function(_0x1acb9a){try{var _0x2b29a6={'body':utils['getMustacheRender'](_0x107701[0x0],this),'ContactId':this[_0x4092('0x8')]['id']};if(this['channel']===_0x4092('0x9')){_0x2b29a6[_0x4092('0xa')]=this[_0x4092('0xb')]['id'];}else{_0x2b29a6[_[_0x4092('0xc')](this[_0x4092('0xd')])+_0x4092('0xe')]=this['account']['id'];}_0x2b29a6[_['upperFirst'](this[_0x4092('0xd')])+_0x4092('0xf')]=this[_0x4092('0x10')]['id'];if(rpc[this['channel']+_0x4092('0x11')]){return rpc[this['channel']+_0x4092('0x11')][_0x4092('0x12')](_0x2b29a6)['then'](function(_0x5dcee6){logger[_0x4092('0x13')](_0x4092('0x14'),_0x2d05ea,_0x2b29a6['body']);_0x1acb9a[_0x4092('0x15')]();})[_0x4092('0x16')](function(_0x37df97){logger['error'](_0x4092('0x14'),_0x2d05ea,JSON[_0x4092('0x17')](_0x37df97));_0x1acb9a[_0x4092('0x18')]();});}}catch(_0x26b2e7){logger[_0x4092('0x19')](_0x4092('0x14'),_0x2d05ea,JSON[_0x4092('0x17')](_0x26b2e7));_0x1acb9a['stop']();}};};
\ No newline at end of file
index be32965..6c9b9d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b8d=['[%s][NOOP]\x20%s','getMustacheRender','next','error','stop','./utils','routing'];(function(_0x1c8c28,_0x3ee093){var _0x1f59b4=function(_0x29bcc0){while(--_0x29bcc0){_0x1c8c28['push'](_0x1c8c28['shift']());}};_0x1f59b4(++_0x3ee093);}(_0x8b8d,0x67));var _0xd8b8=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0x8b8d[_0x33032e];return _0x13316b;};'use strict';var utils=require(_0xd8b8('0x0'));var logger=require('../../../../config/logger')(_0xd8b8('0x1'));exports['consequence']=function(_0x3c48fd,_0x3dd8fd){return function(_0x53c355){try{logger['info'](_0xd8b8('0x2'),_0x3c48fd,utils[_0xd8b8('0x3')](_0x3dd8fd[0x0],this));_0x53c355[_0xd8b8('0x4')]();}catch(_0x4f8270){logger[_0xd8b8('0x5')]('[%s][NOOP]\x20%s',_0x3c48fd,JSON['stringify'](_0x4f8270));_0x53c355[_0xd8b8('0x6')]();}};};
\ No newline at end of file
+var _0x7d3e=['routing','consequence','info','getMustacheRender','next','error','[%s][NOOP]\x20%s','stringify','stop'];(function(_0x4b2cc6,_0x29ef43){var _0x3e0b08=function(_0x3b4131){while(--_0x3b4131){_0x4b2cc6['push'](_0x4b2cc6['shift']());}};_0x3e0b08(++_0x29ef43);}(_0x7d3e,0x15f));var _0xe7d3=function(_0x9ad80e,_0x34dfb5){_0x9ad80e=_0x9ad80e-0x0;var _0x549f5f=_0x7d3e[_0x9ad80e];return _0x549f5f;};'use strict';var utils=require('./utils');var logger=require('../../../../config/logger')(_0xe7d3('0x0'));exports[_0xe7d3('0x1')]=function(_0x552508,_0x3b3e81){return function(_0x55df57){try{logger[_0xe7d3('0x2')]('[%s][NOOP]\x20%s',_0x552508,utils[_0xe7d3('0x3')](_0x3b3e81[0x0],this));_0x55df57[_0xe7d3('0x4')]();}catch(_0x1675d5){logger[_0xe7d3('0x5')](_0xe7d3('0x6'),_0x552508,JSON[_0xe7d3('0x7')](_0x1675d5));_0x55df57[_0xe7d3('0x8')]();}};};
\ No newline at end of file
index 93ea4f9..c306224 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29b4=['qtimeout','end','close','rules','complete','next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','validate','lodash','util','seq-queue','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','localhost','socket.io-emitter','queue_id','account','queue','from','joinAt','emit','format','%sQueuesWaitingInteractions','pick','%s:queue:%s','%s_queue_waiting_interaction:%s','save','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','upperFirst','channel','QueueId','InteractionId','interaction','MessageId','message','AccountId','WebsiteId','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','error','create\x20queue\x20report','accepted','info','[%s][STOP:QUEUE][NAME:%s]','update','update\x20queue\x20report','timeout','toLowerCase','consequence','[%s][QUEUE]\x20%s','join','stop','createQueue'];(function(_0xc1fac2,_0x725358){var _0x1a31f8=function(_0x22e4f3){while(--_0x22e4f3){_0xc1fac2['push'](_0xc1fac2['shift']());}};_0x1a31f8(++_0x725358);}(_0x29b4,0x183));var _0x429b=function(_0x140f8f,_0x3c84d2){_0x140f8f=_0x140f8f-0x0;var _0x485c30=_0x29b4[_0x140f8f];return _0x485c30;};'use strict';var schema=require(_0x429b('0x0'));var _=require(_0x429b('0x1'));var util=require(_0x429b('0x2'));var seqqueue=require(_0x429b('0x3'));var moment=require('moment');var Redis=require(_0x429b('0x4'));var config=require(_0x429b('0x5'));var logger=require(_0x429b('0x6'))(_0x429b('0x7'));var strategy=require(_0x429b('0x8'));config[_0x429b('0x9')]=_['defaults'](config[_0x429b('0x9')],{'host':_0x429b('0xa'),'port':0x18eb});var io=require(_0x429b('0xb'))(new Redis(config[_0x429b('0x9')]));var attributes=['id',_0x429b('0xc'),_0x429b('0xd'),_0x429b('0xe'),_0x429b('0xf'),_0x429b('0x10')];function emit(_0x1b32cf,_0x2ccb34,_0x3193b3){io['to'](_0x1b32cf)[_0x429b('0x11')](_0x2ccb34,_0x3193b3);}function emitChannelQueueInteraction(_0x1d40c2,_0x1ed3e6,_0x13e213,_0x32172d,_0x1c6846,_0x479c22,_0x217955,_0xc62acd){var _0x3fb0fc=_['clone'](_0x13e213);_0x3fb0fc[_0x429b('0xc')]=_0xc62acd;_0x3fb0fc[_0x429b('0xe')]=_0x1ed3e6;_0x3fb0fc[_0x429b('0xd')]=_0x32172d;_0x3fb0fc['id']=_0x1c6846;if(_0x479c22){_0x217955[util[_0x429b('0x12')](_0x429b('0x13'),_0x1d40c2)][_0x1c6846]=_[_0x429b('0x14')](_0x3fb0fc,attributes);}else{delete _0x217955[util[_0x429b('0x12')](_0x429b('0x13'),_0x1d40c2)][_0x1c6846];}emit(util[_0x429b('0x12')](_0x429b('0x15'),_0x1d40c2,_0x1ed3e6),util[_0x429b('0x12')](_0x429b('0x16'),_0x1d40c2,_0x479c22?_0x429b('0x17'):'remove'),_[_0x429b('0x14')](_0x3fb0fc,attributes));}var rpc={'openchannelQueueReport':require(_0x429b('0x18')),'mailQueueReport':require(_0x429b('0x19')),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0x429b('0x1a')),'faxQueueReport':require(_0x429b('0x1b')),'whatsappQueueReport':require(_0x429b('0x1c'))};var queue=schema({'name':{'type':'string','required':!![],'message':_0x429b('0x1d')},'timeout':{'type':'number','message':_0x429b('0x1e')}});function startRouting(_0xdf2d5d,_0x2ae0d2,_0x5f01db,_0x449eab){if(_0xdf2d5d&&_0x2ae0d2&&_0x5f01db){_0x2ae0d2[_0x429b('0x1f')]+=0x1;var _0x2a1384={'uniqueid':_0xdf2d5d,'from':_0x5f01db[_0x429b('0x20')]?_0x5f01db['body']['from']:'','joinAt':moment()['format'](_0x429b('0x21')),'ContactId':_0x5f01db[_0x429b('0x22')]?_0x5f01db['contact']['id']:null,'ListId':_0x5f01db['list']?_0x5f01db['list']['id']:null};_0x2a1384[_[_0x429b('0x23')](_0x5f01db[_0x429b('0x24')])+_0x429b('0x25')]=_0x2ae0d2['id']||null;_0x2a1384[_[_0x429b('0x23')](_0x5f01db['channel'])+_0x429b('0x26')]=_0x5f01db[_0x429b('0x27')]?_0x5f01db[_0x429b('0x27')]['id']:null;_0x2a1384[_[_0x429b('0x23')](_0x5f01db['channel'])+_0x429b('0x28')]=_0x5f01db[_0x429b('0x29')]?_0x5f01db[_0x429b('0x29')]['id']:null;_0x2a1384[_['upperFirst'](_0x5f01db['channel'])+(_0x5f01db['channel']!=='chat'?_0x429b('0x2a'):_0x429b('0x2b'))]=_0x5f01db['account']?_0x5f01db[_0x429b('0xd')]['id']:null;logger['info'](util[_0x429b('0x12')](_0x429b('0x2c'),_0xdf2d5d,_0x2ae0d2[_0x429b('0x2d')]));emitChannelQueueInteraction(_0x5f01db[_0x429b('0x24')],_0x2ae0d2['name'],_0x2a1384,_0x5f01db['account'][_0x429b('0x2d')],_0x5f01db[_0x429b('0x29')]['id'],!![],_0x449eab,_0x2ae0d2['id']);if(rpc[_0x5f01db[_0x429b('0x24')]+'QueueReport']){return rpc[_0x5f01db[_0x429b('0x24')]+_0x429b('0x2e')][_0x429b('0x2f')](_0x2a1384)[_0x429b('0x30')](function(_0x4b23c0){logger[_0x429b('0x31')](_0x429b('0x32'));});}}}function stopRouting(_0xb7aa02,_0x6b81e,_0x2b57f7,_0x20fdcf){if(_0xb7aa02&&_0x6b81e){_0x6b81e[_0x429b('0x1f')]-=0x1;var _0x1970fc={'leaveAt':moment()[_0x429b('0x12')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()[_0x429b('0x12')](_0x429b('0x21')),'reason':_0x429b('0x33')};logger[_0x429b('0x34')](util['format'](_0x429b('0x35'),_0xb7aa02,_0x6b81e[_0x429b('0x2d')]));emitChannelQueueInteraction(_0x2b57f7[_0x429b('0x24')],_0x6b81e[_0x429b('0x2d')],_0x2b57f7[_0x429b('0x20')],_0x2b57f7['account'][_0x429b('0x2d')],_0x2b57f7['message']['id'],![],_0x20fdcf,_0x6b81e['id']);if(rpc[_0x2b57f7[_0x429b('0x24')]+_0x429b('0x2e')]){return rpc[_0x2b57f7[_0x429b('0x24')]+'QueueReport'][_0x429b('0x36')](_0xb7aa02,_0x1970fc)[_0x429b('0x30')](function(_0x26db83){logger['error'](_0x429b('0x37'));});}}}function endRouting(_0x265e33,_0xbb432e,_0x396d69,_0x5cfdc6){if(_0x265e33&&_0xbb432e){_0xbb432e[_0x429b('0x1f')]-=0x1;var _0x50b0a9={'leaveAt':moment()[_0x429b('0x12')](_0x429b('0x21')),'exitAt':moment()[_0x429b('0x12')](_0x429b('0x21')),'reason':_0x429b('0x38')};logger['info'](util[_0x429b('0x12')]('[%s][END:QUEUE][NAME:%s]',_0x265e33,_0xbb432e[_0x429b('0x2d')]));emitChannelQueueInteraction(_0x396d69[_0x429b('0x24')],_0xbb432e[_0x429b('0x2d')],_0x396d69['body'],_0x396d69[_0x429b('0xd')][_0x429b('0x2d')],_0x396d69[_0x429b('0x29')]['id'],![],_0x5cfdc6);if(rpc[_0x396d69['channel']+_0x429b('0x2e')]){return rpc[_0x396d69[_0x429b('0x24')]+_0x429b('0x2e')]['update'](_0x265e33,_0x50b0a9)[_0x429b('0x30')](function(_0x3653aa){logger[_0x429b('0x31')]('update\x20queue\x20report');});}}}function handleFindQueue(_0x2111ae){return function(_0x2033b1){return _0x2033b1[_0x429b('0x2d')]['toLowerCase']()===_0x2111ae[_0x429b('0x39')]();};}exports[_0x429b('0x3a')]=function(_0x42dd35,_0x3a2724,_0xadea41,_0x4ba445){return function(_0x41838a){try{var _0x1d6f68={'name':_0x3a2724[0x0],'timeout':_0x3a2724[0x1]};var _0x20c39d=queue[_0x429b('0x0')](_0x1d6f68,{'typecast':!![]});if(_0x20c39d['length']){logger[_0x429b('0x31')](_0x429b('0x3b'),_0x42dd35,_['map'](_0x20c39d,_0x429b('0x29'))[_0x429b('0x3c')](',\x20'));_0x41838a[_0x429b('0x3d')]();}else{var _0x1f56b1=_['find'](_0xadea41[_0x4ba445[_0x429b('0x24')]+'Queues'],handleFindQueue(_0x1d6f68['name']));if(_0x1f56b1){startRouting(_0x42dd35,_0x1f56b1,_0x4ba445,_0xadea41);var _0x2e38f5=(_0x1f56b1[_0x429b('0x38')]||0xa)*0x3e8;var _0x2dc12f=(_0x1d6f68[_0x429b('0x38')]||0x14)*0x3e8;var _0x260bee,_0x3cae63;if(_0x2e38f5>_0x2dc12f){_0x2dc12f=_0x2e38f5;}var _0x12890a=seqqueue[_0x429b('0x3e')](_0x2e38f5);_0x12890a['id']=_0x42dd35;_0x12890a['atimeout']=_0x2e38f5;_0x12890a[_0x429b('0x3f')]=_0x2dc12f;_0x12890a[_0x429b('0x24')]=_0x4ba445[_0x429b('0x24')];_0xadea41['rules'][_0x42dd35]['on'](_0x429b('0x40'),function(){logger['info']('[%s][QUEUE]\x20ROUTING\x20STOPPED',_0x42dd35);stopRouting(_0x42dd35,_0x1f56b1,_0x4ba445,_0xadea41);clearTimeout(_0x260bee);_0x260bee=undefined;_0x12890a[_0x429b('0x41')](!![]);if(_0xadea41['rules'][_0x42dd35]){delete _0xadea41[_0x429b('0x42')][_0x42dd35];}_0x41838a[_0x429b('0x3d')]();});_0xadea41[_0x429b('0x42')][_0x42dd35]['on'](_0x429b('0x43'),function(){if(_0xadea41[_0x429b('0x42')][_0x42dd35]){delete _0xadea41['rules'][_0x42dd35];}});_0x260bee=setTimeout(function(){logger[_0x429b('0x34')]('[%s][QUEUE]\x20APPLICATION\x20END',_0x42dd35);endRouting(_0x42dd35,_0x1f56b1,_0x4ba445,_0xadea41);clearTimeout(_0x260bee);_0x12890a['close'](!![]);_0x41838a[_0x429b('0x44')]();},_0x2dc12f);switch(_0x1f56b1[_0x429b('0x45')]){case'rrmemory':strategy[_0x429b('0x46')](_0x12890a,_0x1f56b1,_0xadea41,_0x4ba445);break;default:strategy[_0x429b('0x47')](_0x12890a,_0x1f56b1,_0xadea41,_0x4ba445);}}else{logger[_0x429b('0x31')](_0x429b('0x48'),_0x42dd35,_0x1d6f68[_0x429b('0x2d')]);_0x41838a['stop']();}}}catch(_0x51fb5a){console[_0x429b('0x49')](_0x51fb5a);logger['error']('[%s][QUEUE]\x20%s',_0x42dd35,_0x51fb5a[_0x429b('0x4a')]);_0x41838a['stop']();}};};
\ No newline at end of file
+var _0x9910=['info','name','create','catch','create\x20queue\x20report','YYYY-MM-DD\x20HH:mm:ss','accepted','[%s][STOP:QUEUE][NAME:%s]','QueueReport','error','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','update','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','map','join','stop','find','Queues','createQueue','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','complete','close','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','validate','lodash','util','seq-queue','ioredis','../../../../config/environment','routing','defaults','redis','localhost','account','queue','joinAt','clone','format','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','remove','pick','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','string','timeout\x20is\x20a\x20number','waiting','body','from','contact','list','upperFirst','channel','QueueId','interaction','message','AccountId','WebsiteId'];(function(_0x73b427,_0x18ecb6){var _0x366218=function(_0x32381e){while(--_0x32381e){_0x73b427['push'](_0x73b427['shift']());}};_0x366218(++_0x18ecb6);}(_0x9910,0xfa));var _0x0991=function(_0x2aa78d,_0x409dd8){_0x2aa78d=_0x2aa78d-0x0;var _0x3868fc=_0x9910[_0x2aa78d];return _0x3868fc;};'use strict';var schema=require(_0x0991('0x0'));var _=require(_0x0991('0x1'));var util=require(_0x0991('0x2'));var seqqueue=require(_0x0991('0x3'));var moment=require('moment');var Redis=require(_0x0991('0x4'));var config=require(_0x0991('0x5'));var logger=require('../../../../config/logger')(_0x0991('0x6'));var strategy=require('./strategy');config['redis']=_[_0x0991('0x7')](config[_0x0991('0x8')],{'host':_0x0991('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0991('0x8')]));var attributes=['id','queue_id',_0x0991('0xa'),_0x0991('0xb'),'from',_0x0991('0xc')];function emit(_0x25d041,_0x4ca4ad,_0x43587f){io['to'](_0x25d041)['emit'](_0x4ca4ad,_0x43587f);}function emitChannelQueueInteraction(_0x3b8368,_0x1c8c65,_0x3b2fca,_0x173159,_0x5f05,_0x3d57bd,_0x31f8eb,_0x4590a8){var _0x5aba65=_[_0x0991('0xd')](_0x3b2fca);_0x5aba65['queue_id']=_0x4590a8;_0x5aba65['queue']=_0x1c8c65;_0x5aba65[_0x0991('0xa')]=_0x173159;_0x5aba65['id']=_0x5f05;if(_0x3d57bd){_0x31f8eb[util[_0x0991('0xe')](_0x0991('0xf'),_0x3b8368)][_0x5f05]=_['pick'](_0x5aba65,attributes);}else{delete _0x31f8eb[util['format'](_0x0991('0xf'),_0x3b8368)][_0x5f05];}emit(util[_0x0991('0xe')](_0x0991('0x10'),_0x3b8368,_0x1c8c65),util[_0x0991('0xe')](_0x0991('0x11'),_0x3b8368,_0x3d57bd?'save':_0x0991('0x12')),_[_0x0991('0x13')](_0x5aba65,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x0991('0x14')),'chatQueueReport':require(_0x0991('0x15')),'smsQueueReport':require(_0x0991('0x16')),'faxQueueReport':require(_0x0991('0x17')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':_0x0991('0x18'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':'number','message':_0x0991('0x19')}});function startRouting(_0x2b663c,_0x43514a,_0x2d7d1f,_0x9cf3d2){if(_0x2b663c&&_0x43514a&&_0x2d7d1f){_0x43514a[_0x0991('0x1a')]+=0x1;var _0x1d2c6d={'uniqueid':_0x2b663c,'from':_0x2d7d1f['body']?_0x2d7d1f[_0x0991('0x1b')][_0x0991('0x1c')]:'','joinAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2d7d1f[_0x0991('0x1d')]?_0x2d7d1f['contact']['id']:null,'ListId':_0x2d7d1f[_0x0991('0x1e')]?_0x2d7d1f[_0x0991('0x1e')]['id']:null};_0x1d2c6d[_[_0x0991('0x1f')](_0x2d7d1f[_0x0991('0x20')])+_0x0991('0x21')]=_0x43514a['id']||null;_0x1d2c6d[_[_0x0991('0x1f')](_0x2d7d1f[_0x0991('0x20')])+'InteractionId']=_0x2d7d1f['interaction']?_0x2d7d1f[_0x0991('0x22')]['id']:null;_0x1d2c6d[_[_0x0991('0x1f')](_0x2d7d1f[_0x0991('0x20')])+'MessageId']=_0x2d7d1f[_0x0991('0x23')]?_0x2d7d1f[_0x0991('0x23')]['id']:null;_0x1d2c6d[_[_0x0991('0x1f')](_0x2d7d1f[_0x0991('0x20')])+(_0x2d7d1f[_0x0991('0x20')]!=='chat'?_0x0991('0x24'):_0x0991('0x25'))]=_0x2d7d1f[_0x0991('0xa')]?_0x2d7d1f[_0x0991('0xa')]['id']:null;logger[_0x0991('0x26')](util['format']('[%s][START:QUEUE][NAME:%s]',_0x2b663c,_0x43514a[_0x0991('0x27')]));emitChannelQueueInteraction(_0x2d7d1f[_0x0991('0x20')],_0x43514a[_0x0991('0x27')],_0x1d2c6d,_0x2d7d1f[_0x0991('0xa')]['name'],_0x2d7d1f['message']['id'],!![],_0x9cf3d2,_0x43514a['id']);if(rpc[_0x2d7d1f[_0x0991('0x20')]+'QueueReport']){return rpc[_0x2d7d1f[_0x0991('0x20')]+'QueueReport'][_0x0991('0x28')](_0x1d2c6d)[_0x0991('0x29')](function(_0x1e61c0){logger['error'](_0x0991('0x2a'));});}}}function stopRouting(_0x2c3999,_0x594a27,_0x3a8998,_0x474173){if(_0x2c3999&&_0x594a27){_0x594a27['waiting']-=0x1;var _0xf2f5d={'leaveAt':moment()[_0x0991('0xe')](_0x0991('0x2b')),'acceptAt':moment()[_0x0991('0xe')](_0x0991('0x2b')),'reason':_0x0991('0x2c')};logger[_0x0991('0x26')](util[_0x0991('0xe')](_0x0991('0x2d'),_0x2c3999,_0x594a27[_0x0991('0x27')]));emitChannelQueueInteraction(_0x3a8998['channel'],_0x594a27[_0x0991('0x27')],_0x3a8998['body'],_0x3a8998[_0x0991('0xa')][_0x0991('0x27')],_0x3a8998[_0x0991('0x23')]['id'],![],_0x474173,_0x594a27['id']);if(rpc[_0x3a8998[_0x0991('0x20')]+_0x0991('0x2e')]){return rpc[_0x3a8998[_0x0991('0x20')]+_0x0991('0x2e')]['update'](_0x2c3999,_0xf2f5d)[_0x0991('0x29')](function(_0x243bba){logger[_0x0991('0x2f')](_0x0991('0x30'));});}}}function endRouting(_0x302be6,_0x2ae852,_0x566e55,_0x3261dd){if(_0x302be6&&_0x2ae852){_0x2ae852[_0x0991('0x1a')]-=0x1;var _0x4ec492={'leaveAt':moment()[_0x0991('0xe')](_0x0991('0x2b')),'exitAt':moment()['format'](_0x0991('0x2b')),'reason':_0x0991('0x31')};logger[_0x0991('0x26')](util['format'](_0x0991('0x32'),_0x302be6,_0x2ae852['name']));emitChannelQueueInteraction(_0x566e55[_0x0991('0x20')],_0x2ae852[_0x0991('0x27')],_0x566e55['body'],_0x566e55[_0x0991('0xa')][_0x0991('0x27')],_0x566e55[_0x0991('0x23')]['id'],![],_0x3261dd);if(rpc[_0x566e55[_0x0991('0x20')]+_0x0991('0x2e')]){return rpc[_0x566e55[_0x0991('0x20')]+_0x0991('0x2e')][_0x0991('0x33')](_0x302be6,_0x4ec492)[_0x0991('0x29')](function(_0x395b45){logger[_0x0991('0x2f')](_0x0991('0x30'));});}}}function handleFindQueue(_0x17f990){return function(_0xa068d3){return _0xa068d3['name'][_0x0991('0x34')]()===_0x17f990[_0x0991('0x34')]();};}exports[_0x0991('0x35')]=function(_0xe4d25,_0x7ac3b8,_0x50a3c2,_0x4f935f){return function(_0x53caf1){try{var _0x56b52d={'name':_0x7ac3b8[0x0],'timeout':_0x7ac3b8[0x1]};var _0x42ef65=queue[_0x0991('0x0')](_0x56b52d,{'typecast':!![]});if(_0x42ef65[_0x0991('0x36')]){logger['error'](_0x0991('0x37'),_0xe4d25,_[_0x0991('0x38')](_0x42ef65,_0x0991('0x23'))[_0x0991('0x39')](',\x20'));_0x53caf1[_0x0991('0x3a')]();}else{var _0x7858e8=_[_0x0991('0x3b')](_0x50a3c2[_0x4f935f['channel']+_0x0991('0x3c')],handleFindQueue(_0x56b52d[_0x0991('0x27')]));if(_0x7858e8){startRouting(_0xe4d25,_0x7858e8,_0x4f935f,_0x50a3c2);var _0x412c26=(_0x7858e8[_0x0991('0x31')]||0xa)*0x3e8;var _0x5781d6=(_0x56b52d[_0x0991('0x31')]||0x14)*0x3e8;var _0x2d8f0d,_0x42cd10;if(_0x412c26>_0x5781d6){_0x5781d6=_0x412c26;}var _0x528680=seqqueue[_0x0991('0x3d')](_0x412c26);_0x528680['id']=_0xe4d25;_0x528680['atimeout']=_0x412c26;_0x528680['qtimeout']=_0x5781d6;_0x528680[_0x0991('0x20')]=_0x4f935f[_0x0991('0x20')];_0x50a3c2[_0x0991('0x3e')][_0xe4d25]['on'](_0x0991('0x3f'),function(){logger['info'](_0x0991('0x40'),_0xe4d25);stopRouting(_0xe4d25,_0x7858e8,_0x4f935f,_0x50a3c2);clearTimeout(_0x2d8f0d);_0x2d8f0d=undefined;_0x528680['close'](!![]);if(_0x50a3c2[_0x0991('0x3e')][_0xe4d25]){delete _0x50a3c2['rules'][_0xe4d25];}_0x53caf1[_0x0991('0x3a')]();});_0x50a3c2[_0x0991('0x3e')][_0xe4d25]['on'](_0x0991('0x41'),function(){if(_0x50a3c2[_0x0991('0x3e')][_0xe4d25]){delete _0x50a3c2['rules'][_0xe4d25];}});_0x2d8f0d=setTimeout(function(){logger['info']('[%s][QUEUE]\x20APPLICATION\x20END',_0xe4d25);endRouting(_0xe4d25,_0x7858e8,_0x4f935f,_0x50a3c2);clearTimeout(_0x2d8f0d);_0x528680[_0x0991('0x42')](!![]);_0x53caf1['next']();},_0x5781d6);switch(_0x7858e8[_0x0991('0x43')]){case _0x0991('0x44'):strategy[_0x0991('0x44')](_0x528680,_0x7858e8,_0x50a3c2,_0x4f935f);break;default:strategy[_0x0991('0x45')](_0x528680,_0x7858e8,_0x50a3c2,_0x4f935f);}}else{logger[_0x0991('0x2f')](_0x0991('0x46'),_0xe4d25,_0x56b52d['name']);_0x53caf1['stop']();}}}catch(_0x182631){console[_0x0991('0x47')](_0x182631);logger['error'](_0x0991('0x37'),_0xe4d25,_0x182631['stack']);_0x53caf1[_0x0991('0x3a')]();}};};
\ No newline at end of file
index ff504ed..b395a30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cb0=['TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','agent','realtime','push','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','info','[%s][AGENT]\x20try\x20with\x20%s','agents','forcedOwnership','isAgentAvailable','channel','busyQueue','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','isNil','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','busy','writeLog','STOP'];(function(_0x9e55f6,_0x5df434){var _0x220e55=function(_0x1fd729){while(--_0x1fd729){_0x9e55f6['push'](_0x9e55f6['shift']());}};_0x220e55(++_0x5df434);}(_0x9cb0,0x86));var _0x09cb=function(_0x547add,_0x387042){_0x547add=_0x547add-0x0;var _0x2ed1f3=_0x9cb0[_0x547add];return _0x2ed1f3;};'use strict';var _=require(_0x09cb('0x0'));var uuid=require(_0x09cb('0x1'));var util=require(_0x09cb('0x2'));var logger=require(_0x09cb('0x3'))(_0x09cb('0x4'));var Agent=function(_0x558492,_0xdbce7c,_0x51ed66,_0x1837e2){this[_0x09cb('0x5')]=uuid['v4']();this[_0x09cb('0x6')]=_0x558492;this[_0x09cb('0x7')]=_0xdbce7c;this[_0x09cb('0x8')]=_0x51ed66;this[_0x09cb('0x4')]=_0x1837e2;this[_0x09cb('0x6')][_0x09cb('0x9')](this[_0x09cb('0xa')][_0x09cb('0xb')](this),this[_0x09cb('0xc')][_0x09cb('0xb')](this));this[_0x09cb('0x6')]['on'](_0x09cb('0xd'),this[_0x09cb('0xc')]['bind'](this));this['squeue']['on'](_0x09cb('0xe'),this[_0x09cb('0xf')][_0x09cb('0xb')](this));};Agent[_0x09cb('0x10')][_0x09cb('0x9')]=function(){this[_0x09cb('0x6')][_0x09cb('0x9')](this['handleRun']['bind'](this),this[_0x09cb('0xc')]['bind'](this));};Agent[_0x09cb('0x10')]['handleDrained']=function(){this[_0x09cb('0xc')](!![]);};Agent[_0x09cb('0x10')][_0x09cb('0xa')]=function(_0x4b7495){logger[_0x09cb('0x11')](_0x09cb('0x12'),this[_0x09cb('0x6')]['id'],this['agent']['id']);if(_['isNil'](this[_0x09cb('0x8')][_0x09cb('0x13')][this[_0x09cb('0x7')]['id']])){logger[_0x09cb('0x11')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x09cb('0x6')]['id'],this['agent']['id']);setTimeout(this[_0x09cb('0x9')][_0x09cb('0xb')](this),0x3e8);}else{if(this[_0x09cb('0x4')][_0x09cb('0x14')]||util[_0x09cb('0x15')](this[_0x09cb('0x6')]['id'],this[_0x09cb('0x8')][_0x09cb('0x13')][this['agent']['id']],this[_0x09cb('0x6')][_0x09cb('0x16')],![])){this[_0x09cb('0x8')][_0x09cb('0x13')][this[_0x09cb('0x7')]['id']]['busy']=!![];this[_0x09cb('0x8')][_0x09cb('0x13')][this[_0x09cb('0x7')]['id']][_0x09cb('0x17')]=undefined;util['showNotification'](this[_0x09cb('0x5')],this[_0x09cb('0x6')]['id'],this[_0x09cb('0x8')]['agents'][this[_0x09cb('0x7')]['id']],null,this['routing']);util['writeLog'](this[_0x09cb('0x6')]['id'],this[_0x09cb('0x8')][_0x09cb('0x13')][this[_0x09cb('0x7')]['id']],'RINGING'+(this[_0x09cb('0x4')][_0x09cb('0x14')]?':FORCED':''));}else{logger[_0x09cb('0x11')](_0x09cb('0x18'),this['squeue']['id'],this[_0x09cb('0x7')]['id']);setTimeout(this[_0x09cb('0x9')][_0x09cb('0xb')](this),0x3e8);}}};Agent[_0x09cb('0x10')][_0x09cb('0xc')]=function(_0x4f02a7){if(_[_0x09cb('0x19')](this['realtime'][_0x09cb('0x13')][this['agent']['id']])){return logger[_0x09cb('0x11')](_0x09cb('0x1a'),this[_0x09cb('0x6')]['id'],this[_0x09cb('0x7')]['id']);}else{logger['info']('[%s][AGENT]\x20timeout\x20with\x20%s',this[_0x09cb('0x6')]['id'],this['agent']['id']);util[_0x09cb('0x1b')](this[_0x09cb('0x5')],this[_0x09cb('0x6')]['id'],this[_0x09cb('0x8')][_0x09cb('0x13')][this[_0x09cb('0x7')]['id']],null,this[_0x09cb('0x4')]);this['realtime'][_0x09cb('0x13')][this[_0x09cb('0x7')]['id']][_0x09cb('0x1c')]=![];this[_0x09cb('0x8')][_0x09cb('0x13')][this['agent']['id']][_0x09cb('0x17')]=undefined;util[_0x09cb('0x1d')](this['squeue']['id'],this[_0x09cb('0x8')][_0x09cb('0x13')][this[_0x09cb('0x7')]['id']],_0x4f02a7?_0x09cb('0x1e'):_0x09cb('0x1f'));}if(!_0x4f02a7){setTimeout(this[_0x09cb('0x9')][_0x09cb('0xb')](this),0x3e8);}};function agent(_0x30a425,_0x2944fa,_0x293926,_0x1d8255){return new Agent(_0x30a425,_0x2944fa,_0x293926,_0x1d8255);}module[_0x09cb('0x20')]=agent;
\ No newline at end of file
+var _0x1c3e=['isNil','[%s][AGENT]\x20timeout\x20with\x20%s','busyQueue','lodash','../../../../../config/logger','routing','squeue','agent','realtime','push','bind','handleTimeout','timeout','handleDrained','prototype','info','[%s][AGENT]\x20try\x20with\x20%s','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','busy','notificationId','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available'];(function(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0x1c3e,0x1bd));var _0xe1c3=function(_0x54c10d,_0x2f2251){_0x54c10d=_0x54c10d-0x0;var _0x1fa703=_0x1c3e[_0x54c10d];return _0x1fa703;};'use strict';var _=require(_0xe1c3('0x0'));var uuid=require('uuid');var util=require('./util');var logger=require(_0xe1c3('0x1'))(_0xe1c3('0x2'));var Agent=function(_0x16304e,_0x356a8e,_0x2388db,_0x2f7325){this['notificationId']=uuid['v4']();this[_0xe1c3('0x3')]=_0x16304e;this[_0xe1c3('0x4')]=_0x356a8e;this[_0xe1c3('0x5')]=_0x2388db;this[_0xe1c3('0x2')]=_0x2f7325;this[_0xe1c3('0x3')][_0xe1c3('0x6')](this['handleRun'][_0xe1c3('0x7')](this),this[_0xe1c3('0x8')][_0xe1c3('0x7')](this));this['squeue']['on'](_0xe1c3('0x9'),this[_0xe1c3('0x8')][_0xe1c3('0x7')](this));this[_0xe1c3('0x3')]['on']('drained',this[_0xe1c3('0xa')]['bind'](this));};Agent[_0xe1c3('0xb')][_0xe1c3('0x6')]=function(){this[_0xe1c3('0x3')]['push'](this['handleRun']['bind'](this),this[_0xe1c3('0x8')]['bind'](this));};Agent['prototype'][_0xe1c3('0xa')]=function(){this[_0xe1c3('0x8')](!![]);};Agent[_0xe1c3('0xb')]['handleRun']=function(_0x38fa39){logger[_0xe1c3('0xc')](_0xe1c3('0xd'),this[_0xe1c3('0x3')]['id'],this[_0xe1c3('0x4')]['id']);if(_['isNil'](this[_0xe1c3('0x5')][_0xe1c3('0xe')][this[_0xe1c3('0x4')]['id']])){logger[_0xe1c3('0xc')](_0xe1c3('0xf'),this[_0xe1c3('0x3')]['id'],this[_0xe1c3('0x4')]['id']);setTimeout(this[_0xe1c3('0x6')][_0xe1c3('0x7')](this),0x3e8);}else{if(this[_0xe1c3('0x2')][_0xe1c3('0x10')]||util['isAgentAvailable'](this[_0xe1c3('0x3')]['id'],this['realtime']['agents'][this[_0xe1c3('0x4')]['id']],this[_0xe1c3('0x3')]['channel'],![])){this[_0xe1c3('0x5')][_0xe1c3('0xe')][this[_0xe1c3('0x4')]['id']][_0xe1c3('0x11')]=!![];this[_0xe1c3('0x5')][_0xe1c3('0xe')][this[_0xe1c3('0x4')]['id']]['busyQueue']=undefined;util['showNotification'](this[_0xe1c3('0x12')],this['squeue']['id'],this['realtime'][_0xe1c3('0xe')][this[_0xe1c3('0x4')]['id']],null,this['routing']);util[_0xe1c3('0x13')](this['squeue']['id'],this[_0xe1c3('0x5')]['agents'][this['agent']['id']],_0xe1c3('0x14')+(this[_0xe1c3('0x2')]['forcedOwnership']?_0xe1c3('0x15'):''));}else{logger[_0xe1c3('0xc')](_0xe1c3('0x16'),this[_0xe1c3('0x3')]['id'],this['agent']['id']);setTimeout(this[_0xe1c3('0x6')][_0xe1c3('0x7')](this),0x3e8);}}};Agent[_0xe1c3('0xb')][_0xe1c3('0x8')]=function(_0x3e2f0d){if(_[_0xe1c3('0x17')](this[_0xe1c3('0x5')][_0xe1c3('0xe')][this[_0xe1c3('0x4')]['id']])){return logger['info'](_0xe1c3('0xf'),this[_0xe1c3('0x3')]['id'],this[_0xe1c3('0x4')]['id']);}else{logger[_0xe1c3('0xc')](_0xe1c3('0x18'),this[_0xe1c3('0x3')]['id'],this[_0xe1c3('0x4')]['id']);util['hideNotification'](this[_0xe1c3('0x12')],this[_0xe1c3('0x3')]['id'],this['realtime'][_0xe1c3('0xe')][this[_0xe1c3('0x4')]['id']],null,this[_0xe1c3('0x2')]);this[_0xe1c3('0x5')][_0xe1c3('0xe')][this['agent']['id']]['busy']=![];this[_0xe1c3('0x5')]['agents'][this[_0xe1c3('0x4')]['id']][_0xe1c3('0x19')]=undefined;util[_0xe1c3('0x13')](this[_0xe1c3('0x3')]['id'],this[_0xe1c3('0x5')][_0xe1c3('0xe')][this[_0xe1c3('0x4')]['id']],_0x3e2f0d?'STOP':'TIMEOUT');}if(!_0x3e2f0d){setTimeout(this[_0xe1c3('0x6')]['bind'](this),0x3e8);}};function agent(_0x31a3e1,_0x49c29e,_0x549f51,_0x4a688e){return new Agent(_0x31a3e1,_0x49c29e,_0x549f51,_0x4a688e);}module['exports']=agent;
\ No newline at end of file
index 7100fe2..d372eac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb99=['routing','info','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','STOP','TIMEOUT','exports','lodash','./util','notificationId','squeue','realtime','push','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','isNil','queue','Agents','length','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','writeLog','RINGING','busyQueue','name','showNotification'];(function(_0x268803,_0x3ecdfb){var _0x216d57=function(_0x456797){while(--_0x456797){_0x268803['push'](_0x268803['shift']());}};_0x216d57(++_0x3ecdfb);}(_0xcb99,0x8b));var _0x9cb9=function(_0xfdb740,_0x14c2da){_0xfdb740=_0xfdb740-0x0;var _0x4a837d=_0xcb99[_0xfdb740];return _0x4a837d;};'use strict';var _=require(_0x9cb9('0x0'));var uuid=require('uuid');var util=require(_0x9cb9('0x1'));var logger=require('../../../../../config/logger')('routing');var Beepall=function(_0x3a2f21,_0x1308a8,_0x124c48,_0x51f2ee){this[_0x9cb9('0x2')]=uuid['v4']();this[_0x9cb9('0x3')]=_0x3a2f21;this['queue']=_0x1308a8;this[_0x9cb9('0x4')]=_0x124c48;this['routing']=_0x51f2ee;this[_0x9cb9('0x3')][_0x9cb9('0x5')](this[_0x9cb9('0x6')][_0x9cb9('0x7')](this),this[_0x9cb9('0x8')][_0x9cb9('0x7')](this));this[_0x9cb9('0x3')]['on'](_0x9cb9('0x9'),this['handleTimeout']['bind'](this));this[_0x9cb9('0x3')]['on'](_0x9cb9('0xa'),this[_0x9cb9('0xb')]['bind'](this));};Beepall[_0x9cb9('0xc')][_0x9cb9('0x5')]=function(){this['squeue']['push'](this[_0x9cb9('0x6')][_0x9cb9('0x7')](this),this[_0x9cb9('0x8')][_0x9cb9('0x7')](this));};Beepall['prototype'][_0x9cb9('0xb')]=function(_0x37dc98){this[_0x9cb9('0x8')](!![]);};Beepall[_0x9cb9('0xc')][_0x9cb9('0x6')]=function(_0x252bef){var _0xc0bf6=!![];if(!_[_0x9cb9('0xd')](this[_0x9cb9('0xe')])&&!_[_0x9cb9('0xd')](this[_0x9cb9('0xe')][_0x9cb9('0xf')])&&this[_0x9cb9('0xe')][_0x9cb9('0xf')][_0x9cb9('0x10')]>0x0){for(var _0x4244b3=0x0,_0x41e598;_0x4244b3<this[_0x9cb9('0xe')]['Agents']['length'];_0x4244b3+=0x1){_0x41e598=this[_0x9cb9('0xe')]['Agents'][_0x4244b3]['id'];if(_['isNil'](this['realtime'][_0x9cb9('0x11')][_0x41e598])){logger['info'](_0x9cb9('0x12'),this[_0x9cb9('0x3')]['id'],_0x41e598);}else{if(util[_0x9cb9('0x13')](this[_0x9cb9('0x3')]['id'],this[_0x9cb9('0x4')][_0x9cb9('0x11')][_0x41e598],this[_0x9cb9('0x3')][_0x9cb9('0x14')],!![])){_0xc0bf6=![];util[_0x9cb9('0x15')](this[_0x9cb9('0x3')]['id'],this[_0x9cb9('0x4')][_0x9cb9('0x11')][_0x41e598],_0x9cb9('0x16'));this[_0x9cb9('0x4')]['agents'][_0x41e598]['busy']=!![];this[_0x9cb9('0x4')][_0x9cb9('0x11')][_0x41e598][_0x9cb9('0x17')]=this[_0x9cb9('0xe')][_0x9cb9('0x18')];util[_0x9cb9('0x19')](this[_0x9cb9('0x2')],this[_0x9cb9('0x3')]['id'],this[_0x9cb9('0x4')]['agents'][_0x41e598],this[_0x9cb9('0xe')],this[_0x9cb9('0x1a')]);}}}if(_0xc0bf6){logger[_0x9cb9('0x1b')](_0x9cb9('0x1c'),this['squeue']['id']);setTimeout(this[_0x9cb9('0x5')]['bind'](this),0x3e8);}}else{logger[_0x9cb9('0x1b')](_0x9cb9('0x1d'),this[_0x9cb9('0x3')]['id']);setTimeout(this[_0x9cb9('0x5')]['bind'](this),0x3e8);}};Beepall[_0x9cb9('0xc')][_0x9cb9('0x8')]=function(_0x39f9dd){if(!_['isNil'](this[_0x9cb9('0xe')])&&!_['isNil'](this[_0x9cb9('0xe')][_0x9cb9('0xf')])){for(var _0x146fe7=0x0,_0x2ed362;_0x146fe7<this[_0x9cb9('0xe')][_0x9cb9('0xf')]['length'];_0x146fe7+=0x1){_0x2ed362=this[_0x9cb9('0xe')][_0x9cb9('0xf')][_0x146fe7]['id'];if(_[_0x9cb9('0xd')](this['realtime']['agents'][_0x2ed362])){logger[_0x9cb9('0x1b')](_0x9cb9('0x12'),this[_0x9cb9('0x3')]['id'],_0x2ed362);}else{util['hideNotification'](this['notificationId'],this[_0x9cb9('0x3')]['id'],this[_0x9cb9('0x4')]['agents'][_0x2ed362],this[_0x9cb9('0xe')],this[_0x9cb9('0x1a')]);util[_0x9cb9('0x15')](this[_0x9cb9('0x3')]['id'],this[_0x9cb9('0x4')]['agents'][_0x2ed362],_0x39f9dd?_0x9cb9('0x1e'):_0x9cb9('0x1f'));this['realtime'][_0x9cb9('0x11')][_0x2ed362]['busy']=![];this[_0x9cb9('0x4')][_0x9cb9('0x11')][_0x2ed362]['busyQueue']=undefined;}}}if(!_0x39f9dd){setTimeout(this['push'][_0x9cb9('0x7')](this),0x3e8);}};function beepall(_0x1f89c0,_0x322ef1,_0x2595f9,_0x448e2c){return new Beepall(_0x1f89c0,_0x322ef1,_0x2595f9,_0x448e2c);}module[_0x9cb9('0x20')]=beepall;
\ No newline at end of file
+var _0xf4d9=['handleDrained','prototype','push','isNil','Agents','queue','length','agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','busy','busyQueue','name','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','hideNotification','writeLog','STOP','TIMEOUT','exports','lodash','./util','../../../../../config/logger','routing','notificationId','squeue','realtime','handleRun','handleTimeout','timeout','bind','drained'];(function(_0x1f4c0f,_0x3bce06){var _0x354d43=function(_0x5718b3){while(--_0x5718b3){_0x1f4c0f['push'](_0x1f4c0f['shift']());}};_0x354d43(++_0x3bce06);}(_0xf4d9,0x7c));var _0x9f4d=function(_0x26a481,_0x4252a3){_0x26a481=_0x26a481-0x0;var _0x3bff9a=_0xf4d9[_0x26a481];return _0x3bff9a;};'use strict';var _=require(_0x9f4d('0x0'));var uuid=require('uuid');var util=require(_0x9f4d('0x1'));var logger=require(_0x9f4d('0x2'))(_0x9f4d('0x3'));var Beepall=function(_0x41bd00,_0x22339e,_0x47aa76,_0x179d90){this[_0x9f4d('0x4')]=uuid['v4']();this[_0x9f4d('0x5')]=_0x41bd00;this['queue']=_0x22339e;this[_0x9f4d('0x6')]=_0x47aa76;this[_0x9f4d('0x3')]=_0x179d90;this[_0x9f4d('0x5')]['push'](this[_0x9f4d('0x7')]['bind'](this),this[_0x9f4d('0x8')]['bind'](this));this[_0x9f4d('0x5')]['on'](_0x9f4d('0x9'),this[_0x9f4d('0x8')][_0x9f4d('0xa')](this));this['squeue']['on'](_0x9f4d('0xb'),this[_0x9f4d('0xc')][_0x9f4d('0xa')](this));};Beepall[_0x9f4d('0xd')][_0x9f4d('0xe')]=function(){this[_0x9f4d('0x5')][_0x9f4d('0xe')](this[_0x9f4d('0x7')][_0x9f4d('0xa')](this),this[_0x9f4d('0x8')][_0x9f4d('0xa')](this));};Beepall['prototype'][_0x9f4d('0xc')]=function(_0x426157){this[_0x9f4d('0x8')](!![]);};Beepall['prototype'][_0x9f4d('0x7')]=function(_0x20f444){var _0x192ad3=!![];if(!_[_0x9f4d('0xf')](this['queue'])&&!_['isNil'](this['queue'][_0x9f4d('0x10')])&&this[_0x9f4d('0x11')][_0x9f4d('0x10')][_0x9f4d('0x12')]>0x0){for(var _0x214195=0x0,_0x385787;_0x214195<this['queue'][_0x9f4d('0x10')][_0x9f4d('0x12')];_0x214195+=0x1){_0x385787=this[_0x9f4d('0x11')][_0x9f4d('0x10')][_0x214195]['id'];if(_[_0x9f4d('0xf')](this['realtime'][_0x9f4d('0x13')][_0x385787])){logger[_0x9f4d('0x14')](_0x9f4d('0x15'),this[_0x9f4d('0x5')]['id'],_0x385787);}else{if(util[_0x9f4d('0x16')](this[_0x9f4d('0x5')]['id'],this[_0x9f4d('0x6')][_0x9f4d('0x13')][_0x385787],this[_0x9f4d('0x5')][_0x9f4d('0x17')],!![])){_0x192ad3=![];util['writeLog'](this[_0x9f4d('0x5')]['id'],this[_0x9f4d('0x6')][_0x9f4d('0x13')][_0x385787],'RINGING');this[_0x9f4d('0x6')][_0x9f4d('0x13')][_0x385787][_0x9f4d('0x18')]=!![];this[_0x9f4d('0x6')][_0x9f4d('0x13')][_0x385787][_0x9f4d('0x19')]=this[_0x9f4d('0x11')][_0x9f4d('0x1a')];util[_0x9f4d('0x1b')](this[_0x9f4d('0x4')],this[_0x9f4d('0x5')]['id'],this[_0x9f4d('0x6')][_0x9f4d('0x13')][_0x385787],this['queue'],this[_0x9f4d('0x3')]);}}}if(_0x192ad3){logger[_0x9f4d('0x14')](_0x9f4d('0x1c'),this[_0x9f4d('0x5')]['id']);setTimeout(this[_0x9f4d('0xe')][_0x9f4d('0xa')](this),0x3e8);}}else{logger[_0x9f4d('0x14')]('[%s][QUEUE]\x20EMPTY',this['squeue']['id']);setTimeout(this[_0x9f4d('0xe')]['bind'](this),0x3e8);}};Beepall[_0x9f4d('0xd')]['handleTimeout']=function(_0x1f0928){if(!_[_0x9f4d('0xf')](this[_0x9f4d('0x11')])&&!_['isNil'](this[_0x9f4d('0x11')]['Agents'])){for(var _0x8ead0b=0x0,_0x4d66e7;_0x8ead0b<this['queue'][_0x9f4d('0x10')][_0x9f4d('0x12')];_0x8ead0b+=0x1){_0x4d66e7=this[_0x9f4d('0x11')][_0x9f4d('0x10')][_0x8ead0b]['id'];if(_[_0x9f4d('0xf')](this[_0x9f4d('0x6')][_0x9f4d('0x13')][_0x4d66e7])){logger['info'](_0x9f4d('0x15'),this[_0x9f4d('0x5')]['id'],_0x4d66e7);}else{util[_0x9f4d('0x1d')](this[_0x9f4d('0x4')],this[_0x9f4d('0x5')]['id'],this[_0x9f4d('0x6')][_0x9f4d('0x13')][_0x4d66e7],this['queue'],this[_0x9f4d('0x3')]);util[_0x9f4d('0x1e')](this[_0x9f4d('0x5')]['id'],this['realtime'][_0x9f4d('0x13')][_0x4d66e7],_0x1f0928?_0x9f4d('0x1f'):_0x9f4d('0x20'));this[_0x9f4d('0x6')][_0x9f4d('0x13')][_0x4d66e7][_0x9f4d('0x18')]=![];this[_0x9f4d('0x6')][_0x9f4d('0x13')][_0x4d66e7][_0x9f4d('0x19')]=undefined;}}}if(!_0x1f0928){setTimeout(this[_0x9f4d('0xe')][_0x9f4d('0xa')](this),0x3e8);}};function beepall(_0x56c742,_0x2bc3b5,_0x32eefe,_0xe7efa3){return new Beepall(_0x56c742,_0x2bc3b5,_0x32eefe,_0xe7efa3);}module[_0x9f4d('0x21')]=beepall;
\ No newline at end of file
index e6a237b..7461b5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1d3=['./rrmemory','./beepall'];(function(_0x47e19c,_0x1d005d){var _0x2d6f72=function(_0x422ad1){while(--_0x422ad1){_0x47e19c['push'](_0x47e19c['shift']());}};_0x2d6f72(++_0x1d005d);}(_0xc1d3,0x12c));var _0x3c1d=function(_0x2e39e8,_0xd7987e){_0x2e39e8=_0x2e39e8-0x0;var _0x2e1a83=_0xc1d3[_0x2e39e8];return _0x2e1a83;};'use strict';module['exports']={'rrmemory':require(_0x3c1d('0x0')),'beepall':require(_0x3c1d('0x1')),'agent':require('./agent')};
\ No newline at end of file
+var _0xda95=['./beepall','./agent','exports'];(function(_0x11ba33,_0xc8f8d){var _0x49f898=function(_0x222d34){while(--_0x222d34){_0x11ba33['push'](_0x11ba33['shift']());}};_0x49f898(++_0xc8f8d);}(_0xda95,0x161));var _0x5da9=function(_0x57486e,_0x32283b){_0x57486e=_0x57486e-0x0;var _0x5f110b=_0xda95[_0x57486e];return _0x5f110b;};'use strict';module[_0x5da9('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require(_0x5da9('0x1')),'agent':require(_0x5da9('0x2'))};
\ No newline at end of file
index cdaca80..dd1c3a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4856=['agents','agentId','channel','info','[%s][QUEUE]\x20available\x20again\x20%s','done','queue','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','busyQueue','showNotification','writeLog','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','hideNotification','TIMEOUT','busy','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','realtime','intervals','squeue','handleRun','bind','handleTimeout','module','timeout','handleDrained','prototype','push','handleCheckReject'];(function(_0x3ee7a4,_0x360122){var _0xc46e7d=function(_0x4bc458){while(--_0x4bc458){_0x3ee7a4['push'](_0x3ee7a4['shift']());}};_0xc46e7d(++_0x360122);}(_0x4856,0xac));var _0x6485=function(_0x25667f,_0x57980b){_0x25667f=_0x25667f-0x0;var _0x39ad0e=_0x4856[_0x25667f];return _0x39ad0e;};'use strict';var rr=require('rr');var _=require(_0x6485('0x0'));var uuid=require(_0x6485('0x1'));var util=require(_0x6485('0x2'));var logger=require(_0x6485('0x3'))(_0x6485('0x4'));var RRMemory=function(_0x30aac6,_0x2cfa57,_0x563ed3,_0x15e3af){this[_0x6485('0x5')]=uuid['v4']();this['squeue']=_0x30aac6;this['queue']=_0x2cfa57;this[_0x6485('0x6')]=_0x563ed3;this[_0x6485('0x4')]=_0x15e3af;this[_0x6485('0x7')]={};this[_0x6485('0x8')]['push'](this[_0x6485('0x9')][_0x6485('0xa')](this),this[_0x6485('0xb')][_0x6485('0xa')](this),this[_0x6485('0xc')]);this[_0x6485('0x8')]['on'](_0x6485('0xd'),this['handleTimeout'][_0x6485('0xa')](this));this[_0x6485('0x8')]['on']('drained',this[_0x6485('0xe')]['bind'](this));};RRMemory[_0x6485('0xf')][_0x6485('0x10')]=function(){this[_0x6485('0x8')][_0x6485('0x10')](this[_0x6485('0x9')][_0x6485('0xa')](this),this[_0x6485('0xb')][_0x6485('0xa')](this));};RRMemory[_0x6485('0xf')][_0x6485('0xe')]=function(_0x289178){this[_0x6485('0xb')](!![]);};RRMemory[_0x6485('0xf')][_0x6485('0x11')]=function(_0x1261ef){if(util['isAgentAvailable'](this[_0x6485('0x8')]['id'],this[_0x6485('0x6')][_0x6485('0x12')][this[_0x6485('0x13')]],this[_0x6485('0x8')][_0x6485('0x14')],!![])){logger[_0x6485('0x15')](_0x6485('0x16'),this[_0x6485('0x8')]['id'],this[_0x6485('0x13')]);clearInterval(this[_0x6485('0x7')][this['agentId']]);_0x1261ef[_0x6485('0x17')]();setTimeout(this[_0x6485('0x10')][_0x6485('0xa')](this),0x3e8);}};RRMemory[_0x6485('0xf')][_0x6485('0x9')]=function(_0x7f54d0){this['agentId']=rr(this[_0x6485('0x18')][_0x6485('0x19')]);logger[_0x6485('0x15')](_0x6485('0x1a'),this[_0x6485('0x8')]['id'],this[_0x6485('0x13')]);if(_['isNil'](this['realtime'][_0x6485('0x12')][this[_0x6485('0x13')]])){logger[_0x6485('0x15')](_0x6485('0x1b'),this[_0x6485('0x8')]['id'],this[_0x6485('0x13')]);_0x7f54d0['done']();setTimeout(this[_0x6485('0x10')][_0x6485('0xa')](this),0x3e8);}else{if(util[_0x6485('0x1c')](this[_0x6485('0x8')]['id'],this[_0x6485('0x6')]['agents'][this['agentId']],this[_0x6485('0x8')]['channel'],!![])){this[_0x6485('0x6')][_0x6485('0x12')][this[_0x6485('0x13')]]['busy']=!![];this[_0x6485('0x6')][_0x6485('0x12')][this[_0x6485('0x13')]][_0x6485('0x1d')]=this[_0x6485('0x18')]['name'];util[_0x6485('0x1e')](this[_0x6485('0x5')],this[_0x6485('0x8')]['id'],this[_0x6485('0x6')]['agents'][this['agentId']],this[_0x6485('0x18')],this[_0x6485('0x4')]);util[_0x6485('0x1f')](this[_0x6485('0x8')]['id'],this[_0x6485('0x6')][_0x6485('0x12')][this[_0x6485('0x13')]],_0x6485('0x20'));this[_0x6485('0x7')][this[_0x6485('0x13')]]=setInterval(this[_0x6485('0x11')][_0x6485('0xa')](this,_0x7f54d0),0x3e8);}else{logger[_0x6485('0x15')](_0x6485('0x21'),this[_0x6485('0x8')]['id'],this['agentId']);_0x7f54d0[_0x6485('0x17')]();setTimeout(this[_0x6485('0x10')][_0x6485('0xa')](this),0x3e8);}}};RRMemory[_0x6485('0xf')][_0x6485('0xb')]=function(_0x3f3f43){logger[_0x6485('0x15')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this['squeue']['id'],this['agentId']);if(_['isNil'](this[_0x6485('0x6')][_0x6485('0x12')][this[_0x6485('0x13')]])){logger[_0x6485('0x15')](_0x6485('0x1b'),this[_0x6485('0x8')]['id'],this['agentId']);}else{clearInterval(this[_0x6485('0x7')][this[_0x6485('0x13')]]);util[_0x6485('0x22')](this['notificationId'],this[_0x6485('0x8')]['id'],this[_0x6485('0x6')][_0x6485('0x12')][this[_0x6485('0x13')]],this[_0x6485('0x18')],this[_0x6485('0x4')]);util[_0x6485('0x1f')](this[_0x6485('0x8')]['id'],this['realtime'][_0x6485('0x12')][this[_0x6485('0x13')]],_0x6485('0x23'));this[_0x6485('0x6')]['agents'][this[_0x6485('0x13')]][_0x6485('0x24')]=![];this[_0x6485('0x6')][_0x6485('0x12')][this[_0x6485('0x13')]]['busyQueue']=undefined;}if(!_0x3f3f43){setTimeout(this['push'][_0x6485('0xa')](this),0x3e8);}};function rrmemory(_0x43fcca,_0x466669,_0x48cf65,_0x4ecb55){return new RRMemory(_0x43fcca,_0x466669,_0x48cf65,_0x4ecb55);}module[_0x6485('0x25')]=rrmemory;
\ No newline at end of file
+var _0x707b=['handleDrained','prototype','handleCheckReject','isAgentAvailable','agentId','channel','info','[%s][QUEUE]\x20available\x20again\x20%s','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','showNotification','writeLog','RINGING','done','isNil','hideNotification','TIMEOUT','busy','busyQueue','lodash','./util','routing','notificationId','queue','realtime','intervals','squeue','push','handleRun','bind','handleTimeout','module','timeout','drained'];(function(_0x5685b3,_0x2f3adb){var _0x381680=function(_0x411cd2){while(--_0x411cd2){_0x5685b3['push'](_0x5685b3['shift']());}};_0x381680(++_0x2f3adb);}(_0x707b,0x135));var _0xb707=function(_0x333bb9,_0x334274){_0x333bb9=_0x333bb9-0x0;var _0xfa004a=_0x707b[_0x333bb9];return _0xfa004a;};'use strict';var rr=require('rr');var _=require(_0xb707('0x0'));var uuid=require('uuid');var util=require(_0xb707('0x1'));var logger=require('../../../../../config/logger')(_0xb707('0x2'));var RRMemory=function(_0x4ac0cd,_0x29a935,_0x5720fb,_0x25b351){this[_0xb707('0x3')]=uuid['v4']();this['squeue']=_0x4ac0cd;this[_0xb707('0x4')]=_0x29a935;this[_0xb707('0x5')]=_0x5720fb;this[_0xb707('0x2')]=_0x25b351;this[_0xb707('0x6')]={};this[_0xb707('0x7')][_0xb707('0x8')](this[_0xb707('0x9')][_0xb707('0xa')](this),this[_0xb707('0xb')]['bind'](this),this[_0xb707('0xc')]);this[_0xb707('0x7')]['on'](_0xb707('0xd'),this[_0xb707('0xb')][_0xb707('0xa')](this));this[_0xb707('0x7')]['on'](_0xb707('0xe'),this[_0xb707('0xf')][_0xb707('0xa')](this));};RRMemory[_0xb707('0x10')][_0xb707('0x8')]=function(){this[_0xb707('0x7')][_0xb707('0x8')](this[_0xb707('0x9')][_0xb707('0xa')](this),this[_0xb707('0xb')][_0xb707('0xa')](this));};RRMemory[_0xb707('0x10')]['handleDrained']=function(_0x2d6745){this['handleTimeout'](!![]);};RRMemory[_0xb707('0x10')][_0xb707('0x11')]=function(_0x29a546){if(util[_0xb707('0x12')](this[_0xb707('0x7')]['id'],this[_0xb707('0x5')]['agents'][this[_0xb707('0x13')]],this[_0xb707('0x7')][_0xb707('0x14')],!![])){logger[_0xb707('0x15')](_0xb707('0x16'),this[_0xb707('0x7')]['id'],this[_0xb707('0x13')]);clearInterval(this['intervals'][this['agentId']]);_0x29a546['done']();setTimeout(this[_0xb707('0x8')][_0xb707('0xa')](this),0x3e8);}};RRMemory['prototype'][_0xb707('0x9')]=function(_0x42e3d2){this[_0xb707('0x13')]=rr(this[_0xb707('0x4')][_0xb707('0x17')]);logger[_0xb707('0x15')](_0xb707('0x18'),this['squeue']['id'],this[_0xb707('0x13')]);if(_['isNil'](this[_0xb707('0x5')][_0xb707('0x19')][this[_0xb707('0x13')]])){logger['info'](_0xb707('0x1a'),this[_0xb707('0x7')]['id'],this[_0xb707('0x13')]);_0x42e3d2['done']();setTimeout(this[_0xb707('0x8')]['bind'](this),0x3e8);}else{if(util[_0xb707('0x12')](this[_0xb707('0x7')]['id'],this[_0xb707('0x5')][_0xb707('0x19')][this['agentId']],this[_0xb707('0x7')][_0xb707('0x14')],!![])){this[_0xb707('0x5')]['agents'][this['agentId']]['busy']=!![];this[_0xb707('0x5')][_0xb707('0x19')][this[_0xb707('0x13')]]['busyQueue']=this[_0xb707('0x4')]['name'];util[_0xb707('0x1b')](this[_0xb707('0x3')],this['squeue']['id'],this[_0xb707('0x5')]['agents'][this['agentId']],this[_0xb707('0x4')],this['routing']);util[_0xb707('0x1c')](this[_0xb707('0x7')]['id'],this[_0xb707('0x5')]['agents'][this[_0xb707('0x13')]],_0xb707('0x1d'));this[_0xb707('0x6')][this['agentId']]=setInterval(this[_0xb707('0x11')]['bind'](this,_0x42e3d2),0x3e8);}else{logger[_0xb707('0x15')]('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0xb707('0x7')]['id'],this[_0xb707('0x13')]);_0x42e3d2[_0xb707('0x1e')]();setTimeout(this[_0xb707('0x8')][_0xb707('0xa')](this),0x3e8);}}};RRMemory[_0xb707('0x10')][_0xb707('0xb')]=function(_0x92cdd6){logger[_0xb707('0x15')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this[_0xb707('0x7')]['id'],this[_0xb707('0x13')]);if(_[_0xb707('0x1f')](this['realtime']['agents'][this['agentId']])){logger[_0xb707('0x15')](_0xb707('0x1a'),this[_0xb707('0x7')]['id'],this[_0xb707('0x13')]);}else{clearInterval(this['intervals'][this[_0xb707('0x13')]]);util[_0xb707('0x20')](this[_0xb707('0x3')],this[_0xb707('0x7')]['id'],this['realtime']['agents'][this[_0xb707('0x13')]],this['queue'],this[_0xb707('0x2')]);util[_0xb707('0x1c')](this['squeue']['id'],this[_0xb707('0x5')][_0xb707('0x19')][this[_0xb707('0x13')]],_0xb707('0x21'));this[_0xb707('0x5')][_0xb707('0x19')][this[_0xb707('0x13')]][_0xb707('0x22')]=![];this[_0xb707('0x5')]['agents'][this[_0xb707('0x13')]][_0xb707('0x23')]=undefined;}if(!_0x92cdd6){setTimeout(this[_0xb707('0x8')]['bind'](this),0x3e8);}};function rrmemory(_0x1970cd,_0x4a160b,_0x387c1e,_0xc46cb9){return new RRMemory(_0x1970cd,_0x4a160b,_0x387c1e,_0xc46cb9);}module['exports']=rrmemory;
\ No newline at end of file
index ee83d30..19d7e13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4888=['busy','BUSY','hasOwnProperty','CurrentCapacity','Capacity','toUpperCase','showNotification','hideNotification','util','../utils','mustache','ioredis','../../../../../config/environment','../../../../../config/logger','routing','defaults','redis','localhost','socket.io-emitter','format','user:%s','emit','user:save','split','\x20interaction','name','account','body','queue','msg','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','message','remove','info','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable'];(function(_0xd8ccc,_0x59e017){var _0x4ce783=function(_0x4afa7d){while(--_0x4afa7d){_0xd8ccc['push'](_0xd8ccc['shift']());}};_0x4ce783(++_0x59e017);}(_0x4888,0x198));var _0x8488=function(_0x46361e,_0x243aaf){_0x46361e=_0x46361e-0x0;var _0x14e302=_0x4888[_0x46361e];return _0x14e302;};'use strict';var _=require('lodash');var util=require(_0x8488('0x0'));var utils=require(_0x8488('0x1'));var Mustache=require(_0x8488('0x2'));var Redis=require(_0x8488('0x3'));var config=require(_0x8488('0x4'));var logger=require(_0x8488('0x5'))(_0x8488('0x6'));config['redis']=_[_0x8488('0x7')](config[_0x8488('0x8')],{'host':_0x8488('0x9'),'port':0x18eb});var io=require(_0x8488('0xa'))(new Redis(config[_0x8488('0x8')]));function emit(_0x19e508,_0x5250a1,_0x5b30a7){io['to'](_0x19e508)['emit'](_0x5250a1,_0x5b30a7);}function sendNotification(_0x568a82,_0x151528,_0x1bae81,_0x542bd8,_0x19c994,_0x1334fe){io['to'](util[_0x8488('0xb')](_0x8488('0xc'),_0x542bd8['name']))[_0x8488('0xd')](_0x8488('0xe'),_0x542bd8);var _0x468896=_0x1334fe||{};var _0x256bab=_0x1bae81[_0x8488('0xf')]('.');var _0x50ea94={'uniqueid':_0x151528,'channel':_0x256bab[0x0],'id':_0x256bab[0x1],'title':_0x256bab[0x0]+_0x8488('0x10'),'interactionId':_0x256bab[0x2],'queue':_0x19c994?_0x19c994[_0x8488('0x11')]:null,'sound':_0x468896['account']['notificationSound'],'shake':_0x468896[_0x8488('0x12')]['notificationShake']};try{if(!_0x468896[_0x8488('0x13')]){_0x468896['body']={};}if(_0x19c994){_0x468896['body'][_0x8488('0x14')]=_0x19c994;}else if(_0x468896[_0x8488('0x13')][_0x8488('0x14')]){delete _0x468896[_0x8488('0x13')][_0x8488('0x14')];}_0x50ea94[_0x8488('0x15')]=utils[_0x8488('0x16')](_0x468896['account'][_0x8488('0x17')],_0x468896);}catch(_0x322264){_0x50ea94[_0x8488('0x15')]=_0x8488('0x18');logger[_0x8488('0x19')](util[_0x8488('0xb')](_0x8488('0x1a'),_0x151528,_0x322264[_0x8488('0x1b')]));}io['to'](util[_0x8488('0xb')](_0x8488('0xc'),_0x542bd8[_0x8488('0x11')]))[_0x8488('0xd')](util[_0x8488('0xb')]('notification:%s',_0x568a82?'save':_0x8488('0x1c')),_0x50ea94);}function writeLog(_0x12d40f,_0xbb10fe,_0x3c9fc2){return logger[_0x8488('0x1d')](util[_0x8488('0xb')](_0x8488('0x1e'),_0x12d40f,_0xbb10fe[_0x8488('0x11')],_0x3c9fc2));}exports[_0x8488('0x1f')]=function(_0x5123d0,_0x476a14,_0x4e07e1,_0x140b0b){if(_0x476a14[_0x8488('0x20')]){writeLog(_0x5123d0,_0x476a14,_0x8488('0x21'));return![];}if(!_0x476a14['online']){writeLog(_0x5123d0,_0x476a14,'OFFLINE');return![];}if(_0x476a14[_0x4e07e1+'Pause']){writeLog(_0x5123d0,_0x476a14,'PAUSE');return![];}if(_0x140b0b&&_0x476a14[_0x8488('0x22')](_0x4e07e1+'Capacity')&&_0x476a14['hasOwnProperty'](_0x4e07e1+_0x8488('0x23'))){if(_0x476a14[_0x4e07e1+_0x8488('0x24')]>0x0&&_0x476a14[_0x4e07e1+_0x8488('0x23')]>=_0x476a14[_0x4e07e1+_0x8488('0x24')]){writeLog(_0x5123d0,_0x476a14,_0x4e07e1[_0x8488('0x25')]()+'\x20MAXCAPACITY');return![];}}return!![];};exports[_0x8488('0x26')]=function(_0x38c137,_0xf9720e,_0x3df1f9,_0x460001,_0x27f5cf){return sendNotification(!![],_0x38c137,_0xf9720e,_0x3df1f9,_0x460001,_0x27f5cf);};exports[_0x8488('0x27')]=function(_0x296b6c,_0x368f9c,_0x1d9317,_0x888b24,_0x58d0cc){return sendNotification(![],_0x296b6c,_0x368f9c,_0x1d9317,_0x888b24,_0x58d0cc);};exports['writeLog']=writeLog;
\ No newline at end of file
+var _0x627e=['notificationSound','account','notificationShake','body','queue','getMustacheRender','notificationTemplate','msg','I\x20can\x27t\x20render\x20your\x20template','error','format','message','user:%s','save','remove','info','isAgentAvailable','busy','BUSY','online','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','writeLog','lodash','util','../utils','mustache','ioredis','../../../../../config/logger','routing','redis','socket.io-emitter','emit','name','user:save','split','\x20interaction'];(function(_0x26b372,_0x56f1fc){var _0x90ef34=function(_0x211c99){while(--_0x211c99){_0x26b372['push'](_0x26b372['shift']());}};_0x90ef34(++_0x56f1fc);}(_0x627e,0x14a));var _0xe627=function(_0x122261,_0x13eb33){_0x122261=_0x122261-0x0;var _0x2e96b4=_0x627e[_0x122261];return _0x2e96b4;};'use strict';var _=require(_0xe627('0x0'));var util=require(_0xe627('0x1'));var utils=require(_0xe627('0x2'));var Mustache=require(_0xe627('0x3'));var Redis=require(_0xe627('0x4'));var config=require('../../../../../config/environment');var logger=require(_0xe627('0x5'))(_0xe627('0x6'));config[_0xe627('0x7')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xe627('0x8'))(new Redis(config[_0xe627('0x7')]));function emit(_0x45e49a,_0x2d4f63,_0xd5016e){io['to'](_0x45e49a)[_0xe627('0x9')](_0x2d4f63,_0xd5016e);}function sendNotification(_0x4bae52,_0x3f2948,_0x4c9bf9,_0x56549e,_0x4411c0,_0x952c23){io['to'](util['format']('user:%s',_0x56549e[_0xe627('0xa')]))[_0xe627('0x9')](_0xe627('0xb'),_0x56549e);var _0x4543f5=_0x952c23||{};var _0x3d3c22=_0x4c9bf9[_0xe627('0xc')]('.');var _0x24261d={'uniqueid':_0x3f2948,'channel':_0x3d3c22[0x0],'id':_0x3d3c22[0x1],'title':_0x3d3c22[0x0]+_0xe627('0xd'),'interactionId':_0x3d3c22[0x2],'queue':_0x4411c0?_0x4411c0[_0xe627('0xa')]:null,'sound':_0x4543f5['account'][_0xe627('0xe')],'shake':_0x4543f5[_0xe627('0xf')][_0xe627('0x10')]};try{if(!_0x4543f5['body']){_0x4543f5[_0xe627('0x11')]={};}if(_0x4411c0){_0x4543f5[_0xe627('0x11')][_0xe627('0x12')]=_0x4411c0;}else if(_0x4543f5[_0xe627('0x11')][_0xe627('0x12')]){delete _0x4543f5[_0xe627('0x11')][_0xe627('0x12')];}_0x24261d['msg']=utils[_0xe627('0x13')](_0x4543f5[_0xe627('0xf')][_0xe627('0x14')],_0x4543f5);}catch(_0x76fac){_0x24261d[_0xe627('0x15')]=_0xe627('0x16');logger[_0xe627('0x17')](util[_0xe627('0x18')]('[%s][QUEUE]\x20%s',_0x3f2948,_0x76fac[_0xe627('0x19')]));}io['to'](util['format'](_0xe627('0x1a'),_0x56549e['name']))['emit'](util[_0xe627('0x18')]('notification:%s',_0x4bae52?_0xe627('0x1b'):_0xe627('0x1c')),_0x24261d);}function writeLog(_0x4adde7,_0x4c9b97,_0x4ecfa6){return logger[_0xe627('0x1d')](util[_0xe627('0x18')]('[%s][QUEUE][AGENT:%s][STATUS:%s]',_0x4adde7,_0x4c9b97[_0xe627('0xa')],_0x4ecfa6));}exports[_0xe627('0x1e')]=function(_0x4873e6,_0x44861b,_0x29221b,_0x52d492){if(_0x44861b[_0xe627('0x1f')]){writeLog(_0x4873e6,_0x44861b,_0xe627('0x20'));return![];}if(!_0x44861b[_0xe627('0x21')]){writeLog(_0x4873e6,_0x44861b,'OFFLINE');return![];}if(_0x44861b[_0x29221b+_0xe627('0x22')]){writeLog(_0x4873e6,_0x44861b,_0xe627('0x23'));return![];}if(_0x52d492&&_0x44861b[_0xe627('0x24')](_0x29221b+_0xe627('0x25'))&&_0x44861b['hasOwnProperty'](_0x29221b+_0xe627('0x26'))){if(_0x44861b[_0x29221b+_0xe627('0x25')]>0x0&&_0x44861b[_0x29221b+_0xe627('0x26')]>=_0x44861b[_0x29221b+_0xe627('0x25')]){writeLog(_0x4873e6,_0x44861b,_0x29221b[_0xe627('0x27')]()+_0xe627('0x28'));return![];}}return!![];};exports[_0xe627('0x29')]=function(_0x44c9f7,_0x3e9eda,_0x58c728,_0x5ad327,_0x5aeba1){return sendNotification(!![],_0x44c9f7,_0x3e9eda,_0x58c728,_0x5ad327,_0x5aeba1);};exports['hideNotification']=function(_0x1e0bd7,_0xdf63c8,_0x5799a3,_0x39c23f,_0x54029d){return sendNotification(![],_0x1e0bd7,_0xdf63c8,_0x5799a3,_0x39c23f,_0x54029d);};exports[_0xe627('0x2a')]=writeLog;
\ No newline at end of file
index 771321c..660a0ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdff5=['[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','info','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','[%s][SYSTEM]\x20no\x20variable','body','isObject','stringify','shelljs','lodash','./utils','../../../../config/logger','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','validate','error','[%s][SYSTEM]\x20%s','map','message','join'];(function(_0x1ebeea,_0x2f54f4){var _0x576465=function(_0x47fc77){while(--_0x47fc77){_0x1ebeea['push'](_0x1ebeea['shift']());}};_0x576465(++_0x2f54f4);}(_0xdff5,0x100));var _0x5dff=function(_0x29da7c,_0x8fe26){_0x29da7c=_0x29da7c-0x0;var _0x43d535=_0xdff5[_0x29da7c];return _0x43d535;};'use strict';var schema=require('validate');var sh=require(_0x5dff('0x0'));var _=require(_0x5dff('0x1'));var utils=require(_0x5dff('0x2'));var logger=require(_0x5dff('0x3'))(_0x5dff('0x4'));var system=schema({'command':{'type':_0x5dff('0x5'),'required':!![],'message':_0x5dff('0x6')}});exports[_0x5dff('0x7')]=function(_0x2b7fd2,_0x16cff8){return function(_0x307342){try{var _0x490fdd={'command':_0x16cff8[0x0]};var _0x5999bc=system[_0x5dff('0x8')](_0x490fdd,{'typecast':!![]});if(_0x5999bc['length']){logger[_0x5dff('0x9')](_0x5dff('0xa'),_0x2b7fd2,_[_0x5dff('0xb')](_0x5999bc,_0x5dff('0xc'))[_0x5dff('0xd')](',\x20'));logger['info'](_0x5dff('0xe'),_0x2b7fd2);_0x307342[_0x5dff('0xf')]();}else{var _0x5895ff=this;var _0xc9d0f8=utils['getMustacheRender'](_0x16cff8[0x0],this);logger[_0x5dff('0x10')](_0x5dff('0x11'),_0x2b7fd2,_0xc9d0f8);sh[_0x5dff('0x12')](_[_0x5dff('0x13')](_0xc9d0f8),function(_0x30bf47,_0x3e7a95){logger[_0x5dff('0x10')](_0x5dff('0x14'),_0x2b7fd2,_0x30bf47);if(_0x30bf47==0x0){var _0xa68b46=_0x3e7a95[_0x5dff('0x15')](/(\r\n|\n|\r)/gm,'');if(_[_0x5dff('0x16')](_0x16cff8[0x1])||_['isEmpty'](_0x16cff8[0x1])){logger[_0x5dff('0x10')](_0x5dff('0x17'),_0x2b7fd2);_0x5895ff['body'][_0x16cff8[0x1]]=_0xa68b46;}else{logger[_0x5dff('0x10')]('[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s',_0x2b7fd2,_0x16cff8[0x1],_0xa68b46);_0x5895ff[_0x5dff('0x18')][_0x16cff8[0x1]]=_0xa68b46;}}_0x307342['next']();});}}catch(_0x383c9c){logger[_0x5dff('0x9')]('[%s][SYSTEM]\x20%s',_0x2b7fd2,_[_0x5dff('0x19')](_0x383c9c)?JSON[_0x5dff('0x1a')](_0x383c9c):_0x383c9c);logger[_0x5dff('0x10')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x2b7fd2);_0x307342[_0x5dff('0xf')]();}};};
\ No newline at end of file
+var _0xb379=['next','getMustacheRender','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','body','isObject','stringify','validate','lodash','./utils','../../../../config/logger','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][SYSTEM]\x20%s','map','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next'];(function(_0x1f1709,_0x1c5f3b){var _0x2fc064=function(_0x30cd91){while(--_0x30cd91){_0x1f1709['push'](_0x1f1709['shift']());}};_0x2fc064(++_0x1c5f3b);}(_0xb379,0x16b));var _0x9b37=function(_0x301cc3,_0x12db72){_0x301cc3=_0x301cc3-0x0;var _0x56b5ae=_0xb379[_0x301cc3];return _0x56b5ae;};'use strict';var schema=require(_0x9b37('0x0'));var sh=require('shelljs');var _=require(_0x9b37('0x1'));var utils=require(_0x9b37('0x2'));var logger=require(_0x9b37('0x3'))('routing');var system=schema({'command':{'type':_0x9b37('0x4'),'required':!![],'message':_0x9b37('0x5')}});exports[_0x9b37('0x6')]=function(_0x89fd51,_0x47df75){return function(_0x553988){try{var _0x344fb5={'command':_0x47df75[0x0]};var _0x371d38=system[_0x9b37('0x0')](_0x344fb5,{'typecast':!![]});if(_0x371d38[_0x9b37('0x7')]){logger[_0x9b37('0x8')](_0x9b37('0x9'),_0x89fd51,_[_0x9b37('0xa')](_0x371d38,_0x9b37('0xb'))[_0x9b37('0xc')](',\x20'));logger[_0x9b37('0xd')](_0x9b37('0xe'),_0x89fd51);_0x553988[_0x9b37('0xf')]();}else{var _0x5c371b=this;var _0x4a1f2a=utils[_0x9b37('0x10')](_0x47df75[0x0],this);logger[_0x9b37('0xd')]('[%s][SYSTEM]\x20commnad:\x20%s',_0x89fd51,_0x4a1f2a);sh['exec'](_[_0x9b37('0x11')](_0x4a1f2a),function(_0x5a9a9a,_0x509176){logger[_0x9b37('0xd')](_0x9b37('0x12'),_0x89fd51,_0x5a9a9a);if(_0x5a9a9a==0x0){var _0x1f1c4b=_0x509176[_0x9b37('0x13')](/(\r\n|\n|\r)/gm,'');if(_[_0x9b37('0x14')](_0x47df75[0x1])||_[_0x9b37('0x15')](_0x47df75[0x1])){logger[_0x9b37('0xd')](_0x9b37('0x16'),_0x89fd51);_0x5c371b['body'][_0x47df75[0x1]]=_0x1f1c4b;}else{logger[_0x9b37('0xd')](_0x9b37('0x17'),_0x89fd51,_0x47df75[0x1],_0x1f1c4b);_0x5c371b[_0x9b37('0x18')][_0x47df75[0x1]]=_0x1f1c4b;}}_0x553988[_0x9b37('0xf')]();});}}catch(_0x3e0640){logger[_0x9b37('0x8')](_0x9b37('0x9'),_0x89fd51,_[_0x9b37('0x19')](_0x3e0640)?JSON[_0x9b37('0x1a')](_0x3e0640):_0x3e0640);logger[_0x9b37('0xd')](_0x9b37('0xe'),_0x89fd51);_0x553988['next']();}};};
\ No newline at end of file
index 5ad4d26..fe2578d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd40d=['consequence','length','[%s][TAG]\x20%s','map','message','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','channel','Interaction','addTags','interaction','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','error','info','next','isObject','stringify','validate','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','number'];(function(_0x38ce4c,_0xfdbe8c){var _0x5d4544=function(_0x503537){while(--_0x503537){_0x38ce4c['push'](_0x38ce4c['shift']());}};_0x5d4544(++_0xfdbe8c);}(_0xd40d,0x16e));var _0xdd40=function(_0x1e6f72,_0xe759d9){_0x1e6f72=_0x1e6f72-0x0;var _0x1d8359=_0xd40d[_0x1e6f72];return _0x1d8359;};'use strict';var schema=require(_0xdd40('0x0'));var _=require('lodash');var rpc={'chatInteraction':require(_0xdd40('0x1')),'openchannelInteraction':require(_0xdd40('0x2')),'smsInteraction':require(_0xdd40('0x3')),'mailInteraction':require(_0xdd40('0x4')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0xdd40('0x5'))};var logger=require(_0xdd40('0x6'))(_0xdd40('0x7'));var tag=schema({'tag':{'type':_0xdd40('0x8'),'required':!![],'message':'TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0xdd40('0x9')]=function(_0x209fd6,_0x447ea0,_0x5f11d0,_0x49e8d9){return function(_0x1246af){try{var _0xc574cb={'tag':_0x447ea0[0x0]};var _0x4610bc=tag['validate'](_0xc574cb,{'typecast':!![]});if(_0x4610bc[_0xdd40('0xa')]){logger['error'](_0xdd40('0xb'),_0x209fd6,_[_0xdd40('0xc')](_0x4610bc,_0xdd40('0xd'))['join'](',\x20'));logger['info'](_0xdd40('0xe'),_0x209fd6);_0x1246af['next']();}else{var _0x3af24c={'ids':[_0x447ea0[0x0]]};if(rpc[_0x49e8d9[_0xdd40('0xf')]+_0xdd40('0x10')]){rpc[_0x49e8d9['channel']+_0xdd40('0x10')][_0xdd40('0x11')](_0x49e8d9[_0xdd40('0x12')]['id'],_0x3af24c)['then'](function(_0x398709){logger['info'](_0xdd40('0x13'),_0x209fd6,_0x447ea0[0x1],_0x49e8d9[_0xdd40('0xf')],_0x49e8d9['interaction']['id']);})['catch'](function(_0x2aef54){logger[_0xdd40('0x14')](_0xdd40('0xb'),_0x209fd6,JSON['stringify'](_0x2aef54));logger[_0xdd40('0x15')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x209fd6);})['finally'](function(){_0x1246af[_0xdd40('0x16')]();});}}}catch(_0x43a7e0){logger['error'](_0xdd40('0xb'),_0x209fd6,_[_0xdd40('0x17')](_0x43a7e0)?JSON[_0xdd40('0x18')](_0x43a7e0):_0x43a7e0);logger['info'](_0xdd40('0xe'),_0x209fd6);_0x1246af[_0xdd40('0x16')]();}};};
\ No newline at end of file
+var _0xf330=['next','channel','Interaction','addTags','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','error','[%s][TAG]\x20%s','finally','isObject','stringify','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','validate','length','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next'];(function(_0x4e0332,_0x67dfc8){var _0xddf07=function(_0x5b2679){while(--_0x5b2679){_0x4e0332['push'](_0x4e0332['shift']());}};_0xddf07(++_0x67dfc8);}(_0xf330,0x15e));var _0x0f33=function(_0x413dc1,_0x1ae43d){_0x413dc1=_0x413dc1-0x0;var _0x10d054=_0xf330[_0x413dc1];return _0x10d054;};'use strict';var schema=require('validate');var _=require(_0x0f33('0x0'));var rpc={'chatInteraction':require(_0x0f33('0x1')),'openchannelInteraction':require(_0x0f33('0x2')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0x0f33('0x3')),'faxInteraction':require(_0x0f33('0x4')),'whatsappInteraction':require(_0x0f33('0x5'))};var logger=require('../../../../config/logger')('routing');var tag=schema({'tag':{'type':_0x0f33('0x6'),'required':!![],'message':_0x0f33('0x7')}});exports[_0x0f33('0x8')]=function(_0x114d50,_0x28939e,_0x326c1a,_0x1c2bb0){return function(_0x1256e6){try{var _0x2fb2dd={'tag':_0x28939e[0x0]};var _0x32972f=tag[_0x0f33('0x9')](_0x2fb2dd,{'typecast':!![]});if(_0x32972f[_0x0f33('0xa')]){logger['error']('[%s][TAG]\x20%s',_0x114d50,_['map'](_0x32972f,'message')[_0x0f33('0xb')](',\x20'));logger[_0x0f33('0xc')](_0x0f33('0xd'),_0x114d50);_0x1256e6[_0x0f33('0xe')]();}else{var _0x3b104d={'ids':[_0x28939e[0x0]]};if(rpc[_0x1c2bb0[_0x0f33('0xf')]+_0x0f33('0x10')]){rpc[_0x1c2bb0[_0x0f33('0xf')]+_0x0f33('0x10')][_0x0f33('0x11')](_0x1c2bb0['interaction']['id'],_0x3b104d)[_0x0f33('0x12')](function(_0xf56538){logger[_0x0f33('0xc')](_0x0f33('0x13'),_0x114d50,_0x28939e[0x1],_0x1c2bb0[_0x0f33('0xf')],_0x1c2bb0['interaction']['id']);})[_0x0f33('0x14')](function(_0x5dc7a4){logger[_0x0f33('0x15')](_0x0f33('0x16'),_0x114d50,JSON['stringify'](_0x5dc7a4));logger[_0x0f33('0xc')](_0x0f33('0xd'),_0x114d50);})[_0x0f33('0x17')](function(){_0x1256e6[_0x0f33('0xe')]();});}}}catch(_0x335c97){logger['error'](_0x0f33('0x16'),_0x114d50,_[_0x0f33('0x18')](_0x335c97)?JSON[_0x0f33('0x19')](_0x335c97):_0x335c97);logger[_0x0f33('0xc')](_0x0f33('0xd'),_0x114d50);_0x1256e6[_0x0f33('0xe')]();}};};
\ No newline at end of file
index 691f509..b4796fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8575=['stringify','parse','result','logged','&serviceId=','&sessionId=','&data=','then','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','catch','error','[%s][TVOX]\x20%s','isObject','next','../../../../config/logger','routing','lodash','consequence','replace','\x20-\x20','push','urlOnAnswer','urlOnRing','title','jsonrpc','params'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x8575,0x102));var _0x5857=function(_0x2578af,_0x1822cf){_0x2578af=_0x2578af-0x0;var _0x414ecf=_0x8575[_0x2578af];return _0x414ecf;};'use strict';var rp=require('request-promise');var logger=require(_0x5857('0x0'))(_0x5857('0x1'));var _=require(_0x5857('0x2'));var arr=[];exports[_0x5857('0x3')]=function(_0x5b1631,_0xd52f92){return function(_0xa75c4c){var _0x43f98a=_0xd52f92[0xa];var _0x4f18e2=_0xd52f92[0xb];var _0x449f29=_0xd52f92[0xc];var _0x1b749f=_0xd52f92[0xd];var _0x306bbc=_0xd52f92[0xe];var _0x345cff=_0xd52f92[0xf][_0x5857('0x4')](/\n/g,_0x5857('0x5'));var _0x36d1ae=_0xd52f92[0x10][_0x5857('0x4')](/\n/g,'\x20');if(!arr['includes'](_0x4f18e2)){arr[_0x5857('0x6')](_0x4f18e2);var _0xb74104=_0xd52f92[0x3];var _0x2356e1=_0xd52f92[0x4];var _0x394c25=_0xd52f92[0x1];var _0x360ed5=_0xd52f92[0x0];var _0x5bf2b8={};_0x5bf2b8[_0x5857('0x7')]=_0xd52f92[0x8]+'?params='+_0x449f29+'|'+_0x43f98a+'|'+_0x1b749f+'|'+_0x4f18e2+'|'+_0x306bbc;_0x5bf2b8[_0x5857('0x8')]=_0xd52f92[0x7]+'?params='+_0x449f29+'|'+_0x43f98a+'|'+_0x1b749f+'|'+_0x4f18e2+'|'+_0x306bbc+'|'+_0x345cff+'|'+_0x36d1ae;_0x5bf2b8[_0x5857('0x9')]=_0xd52f92[0x9];var _0x37ae64={};_0x37ae64[_0x5857('0xa')]='2.0';_0x37ae64['method']='login';var _0x2ae7a5=[];_0x2ae7a5[_0x5857('0x6')](_0xd52f92[0x2]);_0x2ae7a5[_0x5857('0x6')](_0xd52f92[0x5]);_0x2ae7a5[_0x5857('0x6')](_0xd52f92[0x6]);_0x37ae64[_0x5857('0xb')]=_0x2ae7a5;_0x37ae64['id']=0x1;var _0x269702=JSON[_0x5857('0xc')](_0x37ae64);var _0x1746ea={'encoding':'utf8','method':'POST','timeout':0x2710,'url':_0xb74104,'headers':{'Content-Type':'application/json-rpc'},'body':_0x269702};return rp(_0x1746ea)['then'](function(_0x1493f2){const _0x54be62=JSON[_0x5857('0xd')](_0x1493f2);if(!_0x54be62[_0x5857('0xe')][_0x5857('0xf')]){throw new Error('Unable\x20to\x20login\x20with\x20TVox\x20application');}var _0x5e8904=_0x4f18e2;var _0x82ec7b='channelId='+_0x394c25+_0x5857('0x10')+_0x360ed5+_0x5857('0x11')+_0x5e8904+_0x5857('0x12')+JSON[_0x5857('0xc')](_0x5bf2b8);var _0x1b6c49=_0x2356e1+'?'+_0x82ec7b;return rp(_0x1b6c49);})[_0x5857('0x13')](function(_0x2232bf){logger[_0x5857('0x14')](_0x5857('0x15'),_0x5b1631,_0x2232bf);_0xa75c4c['stop']();})[_0x5857('0x16')](function(_0x270563){logger[_0x5857('0x17')](_0x5857('0x18'),_0x5b1631,_[_0x5857('0x19')](_0x270563)?JSON[_0x5857('0xc')](_0x270563):_0x270563);_0xa75c4c['stop']();});}else{logger[_0x5857('0x14')]('[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next',_0x5b1631);_0xa75c4c[_0x5857('0x1a')]();}};};
\ No newline at end of file
+var _0x62f9=['params','utf8','application/json-rpc','then','parse','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&serviceId=','&sessionId=','&data=','stringify','info','stop','catch','error','isObject','next','request-promise','routing','lodash','consequence','replace','\x20-\x20','includes','push','urlOnAnswer','?params=','title','jsonrpc','2.0','method','login'];(function(_0x35a274,_0x98b399){var _0x40d905=function(_0x5c8455){while(--_0x5c8455){_0x35a274['push'](_0x35a274['shift']());}};_0x40d905(++_0x98b399);}(_0x62f9,0x75));var _0x962f=function(_0x5275b8,_0x51e5dd){_0x5275b8=_0x5275b8-0x0;var _0x568a9b=_0x62f9[_0x5275b8];return _0x568a9b;};'use strict';var rp=require(_0x962f('0x0'));var logger=require('../../../../config/logger')(_0x962f('0x1'));var _=require(_0x962f('0x2'));var arr=[];exports[_0x962f('0x3')]=function(_0x5319a0,_0x14571c){return function(_0x17016c){var _0x598475=_0x14571c[0xa];var _0x519d4f=_0x14571c[0xb];var _0x33edf4=_0x14571c[0xc];var _0x3b666d=_0x14571c[0xd];var _0x3da02e=_0x14571c[0xe];var _0x3c9a4a=_0x14571c[0xf][_0x962f('0x4')](/\n/g,_0x962f('0x5'));var _0x511571=_0x14571c[0x10][_0x962f('0x4')](/\n/g,'\x20');if(!arr[_0x962f('0x6')](_0x519d4f)){arr[_0x962f('0x7')](_0x519d4f);var _0x1a6c13=_0x14571c[0x3];var _0x2146af=_0x14571c[0x4];var _0x3cacad=_0x14571c[0x1];var _0xabf279=_0x14571c[0x0];var _0x4991f1={};_0x4991f1[_0x962f('0x8')]=_0x14571c[0x8]+'?params='+_0x33edf4+'|'+_0x598475+'|'+_0x3b666d+'|'+_0x519d4f+'|'+_0x3da02e;_0x4991f1['urlOnRing']=_0x14571c[0x7]+_0x962f('0x9')+_0x33edf4+'|'+_0x598475+'|'+_0x3b666d+'|'+_0x519d4f+'|'+_0x3da02e+'|'+_0x3c9a4a+'|'+_0x511571;_0x4991f1[_0x962f('0xa')]=_0x14571c[0x9];var _0x3992db={};_0x3992db[_0x962f('0xb')]=_0x962f('0xc');_0x3992db[_0x962f('0xd')]=_0x962f('0xe');var _0x22fc15=[];_0x22fc15[_0x962f('0x7')](_0x14571c[0x2]);_0x22fc15[_0x962f('0x7')](_0x14571c[0x5]);_0x22fc15['push'](_0x14571c[0x6]);_0x3992db[_0x962f('0xf')]=_0x22fc15;_0x3992db['id']=0x1;var _0x534fbf=JSON['stringify'](_0x3992db);var _0x3f5e9b={'encoding':_0x962f('0x10'),'method':'POST','timeout':0x2710,'url':_0x1a6c13,'headers':{'Content-Type':_0x962f('0x11')},'body':_0x534fbf};return rp(_0x3f5e9b)[_0x962f('0x12')](function(_0x51d72f){const _0x462d30=JSON[_0x962f('0x13')](_0x51d72f);if(!_0x462d30['result'][_0x962f('0x14')]){throw new Error(_0x962f('0x15'));}var _0x24555c=_0x519d4f;var _0x28d4b6=_0x962f('0x16')+_0x3cacad+_0x962f('0x17')+_0xabf279+_0x962f('0x18')+_0x24555c+_0x962f('0x19')+JSON[_0x962f('0x1a')](_0x4991f1);var _0x2307ef=_0x2146af+'?'+_0x28d4b6;return rp(_0x2307ef);})[_0x962f('0x12')](function(_0x10c8dc){logger[_0x962f('0x1b')]('[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s',_0x5319a0,_0x10c8dc);_0x17016c[_0x962f('0x1c')]();})[_0x962f('0x1d')](function(_0x24c209){logger[_0x962f('0x1e')]('[%s][TVOX]\x20%s',_0x5319a0,_[_0x962f('0x1f')](_0x24c209)?JSON[_0x962f('0x1a')](_0x24c209):_0x24c209);_0x17016c[_0x962f('0x1c')]();});}else{logger[_0x962f('0x1b')]('[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next',_0x5319a0);_0x17016c[_0x962f('0x20')]();}};};
\ No newline at end of file
index 95a07f5..46734ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['merge','body','contact','message','list','mustache','lodash','render'];(function(_0x26a7e6,_0x3baf51){var _0x51e49b=function(_0x1638b5){while(--_0x1638b5){_0x26a7e6['push'](_0x26a7e6['shift']());}};_0x51e49b(++_0x3baf51);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var Mustache=require(_0x0d8b('0x0'));var _=require(_0x0d8b('0x1'));module['exports']={'getMustacheRender':function(_0x585166,_0x4b72b0){return Mustache[_0x0d8b('0x2')](_0x585166,_[_0x0d8b('0x3')](_0x4b72b0[_0x0d8b('0x4')],{'contact':_0x4b72b0[_0x0d8b('0x5')],'message':_0x4b72b0[_0x0d8b('0x6')],'account':_0x4b72b0['account'],'interaction':_0x4b72b0['interaction'],'list':_0x4b72b0[_0x0d8b('0x7')]}))||'';}};
\ No newline at end of file
+var _0xd8b0=['merge','body','contact','message','list','mustache','lodash','render'];(function(_0x52e373,_0x24e0f5){var _0x3b07f3=function(_0xf29cd1){while(--_0xf29cd1){_0x52e373['push'](_0x52e373['shift']());}};_0x3b07f3(++_0x24e0f5);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Mustache=require(_0x0d8b('0x0'));var _=require(_0x0d8b('0x1'));module['exports']={'getMustacheRender':function(_0x585166,_0x4b72b0){return Mustache[_0x0d8b('0x2')](_0x585166,_[_0x0d8b('0x3')](_0x4b72b0[_0x0d8b('0x4')],{'contact':_0x4b72b0[_0x0d8b('0x5')],'message':_0x4b72b0[_0x0d8b('0x6')],'account':_0x4b72b0['account'],'interaction':_0x4b72b0['interaction'],'list':_0x4b72b0[_0x0d8b('0x7')]}))||'';}};
\ No newline at end of file
index e5a0bd1..10b6682 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa699=['faxQueuesWaitingInteractions','server','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','bluebird','uuid','./applications/utils','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','%s.%s.%s','IntervalId','isNil','Intervals','map','interval','listen','rules','channel','message','interaction','applications','isArray','length','existsSync','join','.js','app','appdata','mail','push','slice','dialogflow','split','amazonlex','tag','getMustacheRender','account','notificationTemplate','body','./interval','condition','intervals','./applications/','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','agent','agents','busy','busyQueue','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','stack','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','agent\x20not\x20found','values','chatQueues','name','paused','waiting','mailQueues','openchannelQueues','available','loggedIn','smsQueues','faxQueues','whatsappQueues','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0xa699,0x6b));var _0x9a69=function(_0x134827,_0x21f6ed){_0x134827=_0x134827-0x0;var _0x366671=_0xa699[_0x134827];return _0x366671;};'use strict';var _=require(_0x9a69('0x0'));var util=require(_0x9a69('0x1'));var path=require(_0x9a69('0x2'));var fs=require('fs');var jayson=require(_0x9a69('0x3'));var BPromise=require(_0x9a69('0x4'));var uuid=require(_0x9a69('0x5'));var utils=require(_0x9a69('0x6'));var config=require(_0x9a69('0x7'));var logger=require(_0x9a69('0x8'))(_0x9a69('0x9'));var rpc={'openchannelQueueReport':require(_0x9a69('0xa')),'mailQueueReport':require(_0x9a69('0xb')),'chatQueueReport':require(_0x9a69('0xc')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require(_0x9a69('0xd')),'whatsappQueueReport':require(_0x9a69('0xe'))};var RuleEngine=require(_0x9a69('0xf'));function getId(_0x4665a9,_0x5031b0,_0x1f13ba){return util[_0x9a69('0x10')](_0x9a69('0x11'),_0x4665a9,_0x5031b0||0x0,_0x1f13ba||0x0);}function getIntervals(_0x1ee4e3,_0x43d2f2){var _0x58b59e=[];if(!_['isNil'](_0x43d2f2[_0x9a69('0x12')])&&!_['isNil'](_0x1ee4e3[_0x43d2f2[_0x9a69('0x12')]])&&!_[_0x9a69('0x13')](_0x1ee4e3[_0x43d2f2['IntervalId']][_0x9a69('0x14')])){_0x58b59e=_[_0x9a69('0x15')](_0x1ee4e3[_0x43d2f2['IntervalId']][_0x9a69('0x14')],_0x9a69('0x16'));}else if(!_[_0x9a69('0x13')](_0x43d2f2[_0x9a69('0x16')])){_0x58b59e=[_0x43d2f2[_0x9a69('0x16')]];}return _0x58b59e;}exports[_0x9a69('0x17')]=function(_0x34b5b0){_0x34b5b0[_0x9a69('0x18')]={};return new BPromise(function(_0x1581d6,_0x4d4450){var _0x2323ae={'Start':function(_0x17de41){var _0x2be3ec=this;return new Promise(function(_0x5e982d,_0x13fd7){if(_0x17de41){try{var _0x397565=[];var _0x380e46=getId(_0x17de41[_0x9a69('0x19')],_0x17de41[_0x9a69('0x1a')]?_0x17de41['message']['id']:0x0,_0x17de41[_0x9a69('0x1b')]?_0x17de41[_0x9a69('0x1b')]['id']:0x0);if(_0x17de41[_0x9a69('0x1c')]&&_[_0x9a69('0x1d')](_0x17de41[_0x9a69('0x1c')])&&_0x17de41[_0x9a69('0x1c')][_0x9a69('0x1e')]){for(var _0x45cae5=0x0;_0x45cae5<_0x17de41[_0x9a69('0x1c')][_0x9a69('0x1e')];_0x45cae5+=0x1){var _0x4f50d4=_0x17de41['applications'][_0x45cae5];if(fs[_0x9a69('0x1f')](path[_0x9a69('0x20')](__dirname,_0x9a69('0x1c'),_0x4f50d4['app']+_0x9a69('0x21')))){var _0x527ca6=[];switch(_0x4f50d4[_0x9a69('0x22')]['toLowerCase']()){case'autoreply':var _0x5b336e=_0x4f50d4[_0x9a69('0x23')]['split'](',');if(_0x17de41[_0x9a69('0x19')]===_0x9a69('0x24')){_0x527ca6[_0x9a69('0x25')](_0x5b336e[0x0]);_0x527ca6[_0x9a69('0x25')](_0x5b336e[0x1]);_0x527ca6['push'](_0x5b336e[_0x9a69('0x26')](0x2,_0x5b336e['length'])[_0x9a69('0x20')](','));}else{_0x527ca6['push'](_0x5b336e[0x0]);_0x527ca6['push'](_0x5b336e[_0x9a69('0x26')](0x1,_0x5b336e[_0x9a69('0x1e')])[_0x9a69('0x20')](','));}break;case _0x9a69('0x27'):var _0x26369e=_0x4f50d4[_0x9a69('0x23')][_0x9a69('0x28')](',');_0x527ca6[_0x9a69('0x25')](_0x26369e[0x0]);_0x527ca6[_0x9a69('0x25')](_0x26369e[0x1]);_0x527ca6[_0x9a69('0x25')](_0x26369e['slice'](0x2,_0x26369e[_0x9a69('0x1e')])[_0x9a69('0x20')](','));break;case'dialogflowv2':var _0x54e643=_0x4f50d4['appdata'][_0x9a69('0x28')](',');_0x527ca6['push'](_0x54e643[0x0]);_0x527ca6[_0x9a69('0x25')](_0x54e643[0x1]);_0x527ca6[_0x9a69('0x25')](_0x54e643[0x2]);_0x527ca6[_0x9a69('0x25')](_0x54e643[0x3]);_0x527ca6[_0x9a69('0x25')](_0x54e643[_0x9a69('0x26')](0x4,_0x54e643[_0x9a69('0x1e')])[_0x9a69('0x20')](','));break;case _0x9a69('0x29'):var _0x389e61=_0x4f50d4[_0x9a69('0x23')][_0x9a69('0x28')](',');_0x527ca6[_0x9a69('0x25')](_0x389e61[0x0]);_0x527ca6[_0x9a69('0x25')](_0x389e61[0x1]);_0x527ca6[_0x9a69('0x25')](_0x389e61[0x2]);_0x527ca6[_0x9a69('0x25')](_0x389e61[0x3]);_0x527ca6[_0x9a69('0x25')](_0x389e61[_0x9a69('0x26')](0x4,_0x389e61['length'])['join'](','));break;case _0x9a69('0x1a'):_0x527ca6[_0x9a69('0x25')](_0x4f50d4[_0x9a69('0x23')]);break;case _0x9a69('0x2a'):_0x527ca6[_0x9a69('0x25')](_0x4f50d4['TagId']);_0x527ca6['push'](_0x4f50d4['appdata']);break;case'tvox':var _0x4196de=utils[_0x9a69('0x2b')](_0x17de41[_0x9a69('0x2c')][_0x9a69('0x2d')],_0x17de41);var _0x4699f2=_0x4f50d4[_0x9a69('0x23')]['split'](',');_0x527ca6['push'](_0x4699f2[0x0]);_0x527ca6[_0x9a69('0x25')](_0x4699f2[0x1]);_0x527ca6[_0x9a69('0x25')](_0x4699f2[0x2]);_0x527ca6[_0x9a69('0x25')](_0x4699f2[0x3]);_0x527ca6['push'](_0x4699f2[0x4]);_0x527ca6[_0x9a69('0x25')](_0x4699f2[0x5]);_0x527ca6[_0x9a69('0x25')](_0x4699f2[0x6]);_0x527ca6[_0x9a69('0x25')](_0x4699f2[0x7]);_0x527ca6[_0x9a69('0x25')](_0x4699f2[0x8]);_0x527ca6[_0x9a69('0x25')](_0x4699f2[0x9]);_0x527ca6[_0x9a69('0x25')](_0x4699f2[0xa]);_0x527ca6[_0x9a69('0x25')](_0x17de41[_0x9a69('0x1b')]['id']);_0x527ca6[_0x9a69('0x25')](_0x17de41[_0x9a69('0x1a')]['id']);_0x527ca6[_0x9a69('0x25')](_0x4f50d4['ChatWebsiteId']);_0x527ca6[_0x9a69('0x25')](_0x17de41['interaction']['ContactId']);_0x527ca6['push'](_0x17de41['body'][_0x9a69('0x2e')]);_0x527ca6[_0x9a69('0x25')](_0x4196de);break;default:_0x527ca6=_['isNil'](_0x4f50d4['appdata'])?[]:_0x4f50d4['appdata'][_0x9a69('0x28')](',');}var _0x1ca2a2={'id':util[_0x9a69('0x10')]('%s:%s:%s',_0x380e46,_0x4f50d4['id'],_0x4f50d4[_0x9a69('0x22')]),'condition':require(_0x9a69('0x2f'))[_0x9a69('0x30')](_0x380e46,getIntervals(_0x34b5b0[_0x9a69('0x31')],_0x4f50d4),_0x34b5b0),'consequence':require(_0x9a69('0x32')+_0x4f50d4[_0x9a69('0x22')])['consequence'](_0x380e46,_0x527ca6,_0x34b5b0,_0x17de41),'p':_0x4f50d4[_0x9a69('0x33')]||0x0};logger[_0x9a69('0x34')](_0x9a69('0x35'),_0x1ca2a2['id'],_0x9a69('0x36'),getIntervals(_0x34b5b0['intervals'],_0x4f50d4)[_0x9a69('0x20')](_0x9a69('0x37')));_0x397565['push'](_0x1ca2a2);}else{logger[_0x9a69('0x38')](_0x9a69('0x39'),path[_0x9a69('0x20')](__dirname,'applications',_0x4f50d4['app']+'.js'));}}_0x34b5b0[_0x9a69('0x18')][_0x380e46]=new RuleEngine(_0x397565);_0x34b5b0[_0x9a69('0x18')][_0x380e46][_0x9a69('0x3a')](_0x17de41,function(_0x436371){logger['info'](_0x9a69('0x3b'),JSON[_0x9a69('0x3c')](_0x436371[_0x9a69('0x3d')]));if(_0x34b5b0[_0x9a69('0x18')][_0x380e46]){_0x34b5b0['rules'][_0x380e46][_0x9a69('0x3e')](_0x9a69('0x3f'));}});return _0x5e982d({'code':0xc8,'message':_0x17de41});}else{logger[_0x9a69('0x34')](_0x9a69('0x40'));return _0x5e982d({'code':0xc8,'message':_0x17de41});}}catch(_0x48c296){logger[_0x9a69('0x38')](_0x48c296['stack']);return _0x13fd7(_0x2be3ec[_0x9a69('0x38')](0x1f4,_0x48c296));}}return _0x13fd7('routing\x20is\x20empty');});},'AcceptMessage':function(_0x322906){var _0x4c0f2a=this;return new Promise(function(_0x45fec6,_0x508b9e){if(_0x322906[_0x9a69('0x41')]&&_0x322906[_0x9a69('0x41')]['id']){if(_0x34b5b0[_0x9a69('0x42')][_0x322906[_0x9a69('0x41')]['id']]){_0x34b5b0['agents'][_0x322906[_0x9a69('0x41')]['id']][_0x9a69('0x43')]=![];_0x34b5b0[_0x9a69('0x42')][_0x322906[_0x9a69('0x41')]['id']][_0x9a69('0x44')]=undefined;}}if(_0x322906[_0x9a69('0x1a')]&&_0x322906[_0x9a69('0x1a')]['id']){try{var _0x1aed26=getId(_0x322906[_0x9a69('0x19')],_0x322906['message']?_0x322906[_0x9a69('0x1a')]['id']:0x0,_0x322906[_0x9a69('0x1b')]?_0x322906[_0x9a69('0x1b')]['id']:0x0);if(_0x34b5b0[_0x9a69('0x18')][_0x1aed26]){_0x34b5b0[_0x9a69('0x18')][_0x1aed26][_0x9a69('0x3e')](_0x9a69('0x45'));if(rpc[_0x322906[_0x9a69('0x19')]+_0x9a69('0x46')]){rpc[_0x322906[_0x9a69('0x19')]+_0x9a69('0x46')][_0x9a69('0x47')](_0x1aed26,{'UserId':_0x322906[_0x9a69('0x1a')][_0x9a69('0x48')]})[_0x9a69('0x49')](function(_0x4c5b25){logger[_0x9a69('0x38')](_0x9a69('0x4a'));});}}return _0x45fec6({'code':0xc8,'message':_0x322906});}catch(_0x13c6a0){logger[_0x9a69('0x38')](_0x13c6a0[_0x9a69('0x4b')]);return _0x508b9e(_0x4c0f2a[_0x9a69('0x38')](0x1f4,_0x13c6a0));}}logger[_0x9a69('0x38')]('message\x20is\x20empty');return _0x508b9e(_0x4c0f2a[_0x9a69('0x38')](0x1f4,_0x9a69('0x4c')));});},'RejectMessage':function(_0x2b7b66){var _0x9a7c34=this;return new Promise(function(_0x18c353,_0x32c826){if(_0x2b7b66[_0x9a69('0x41')]&&_0x2b7b66[_0x9a69('0x41')]['id']){try{if(_0x34b5b0[_0x9a69('0x42')][_0x2b7b66[_0x9a69('0x41')]['id']]){_0x34b5b0[_0x9a69('0x42')][_0x2b7b66['agent']['id']][_0x9a69('0x43')]=![];_0x34b5b0[_0x9a69('0x42')][_0x2b7b66[_0x9a69('0x41')]['id']]['busyQueue']=undefined;}return _0x18c353({'code':0xc8,'message':_0x2b7b66});}catch(_0x424a3a){logger['error'](_0x424a3a['stack']);return _0x32c826(_0x9a7c34[_0x9a69('0x38')](0x1f4,_0x424a3a));}}logger[_0x9a69('0x38')](_0x9a69('0x4c'));return _0x32c826(_0x9a7c34[_0x9a69('0x38')](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x5f3f2b){var _0x42e685=this;return new Promise(function(_0x5c49e0,_0x1ddd4c){if(_0x5f3f2b['channel']&&_0x5f3f2b['interaction']&&_0x5f3f2b[_0x9a69('0x1b')]['id']){try{var _0x434870=getId(_0x5f3f2b[_0x9a69('0x19')],_0x5f3f2b[_0x9a69('0x1a')]?_0x5f3f2b[_0x9a69('0x1a')]['id']:0x0,_0x5f3f2b[_0x9a69('0x1b')]?_0x5f3f2b[_0x9a69('0x1b')]['id']:0x0);if(_0x34b5b0['rules'][_0x434870]){_0x34b5b0[_0x9a69('0x18')][_0x434870][_0x9a69('0x3e')](_0x9a69('0x45'));}return _0x5c49e0({'code':0xc8,'message':_0x5f3f2b});}catch(_0x298a50){logger['error'](_0x298a50[_0x9a69('0x4b')]);return _0x1ddd4c(_0x42e685[_0x9a69('0x38')](0x1f4,_0x298a50));}}logger[_0x9a69('0x38')]('message\x20is\x20empty');return _0x1ddd4c(_0x42e685[_0x9a69('0x38')](0x1f4,_0x9a69('0x4c')));});},'AgentCapacity':function(_0x4795ab){var _0x533dcd=this;return new Promise(function(_0x34ee21,_0x1a525b){if(_0x34b5b0[_0x9a69('0x42')][_0x9a69('0x4d')](_0x4795ab['id'])){for(var _0x51a8ec in _0x4795ab['capacity']){if(_0x4795ab[_0x9a69('0x4e')][_0x9a69('0x4d')](_0x51a8ec)){if(_0x34b5b0['agents'][_0x4795ab['id']][_0x9a69('0x4d')](_0x51a8ec+_0x9a69('0x4f'))){_0x34b5b0['agents'][_0x4795ab['id']][_0x51a8ec+_0x9a69('0x4f')]=parseInt(_0x4795ab['capacity'][_0x51a8ec],0xa);}}}_0x34b5b0[_0x9a69('0x42')][_0x4795ab['id']]['updateRealtime']();return _0x34ee21({'code':0xc8,'message':_0x34b5b0['agents'][_0x4795ab['id']]});}else{return _0x1a525b(_0x533dcd[_0x9a69('0x38')](0x1f4,_0x9a69('0x50')));}});},'Agents':function(_0x1a9b43){return new Promise(function(_0x526f30,_0x215974){var _0x269cd7=_[_0x9a69('0x51')](_0x34b5b0[_0x9a69('0x42')]);_0x526f30({'count':_0x269cd7['length'],'rows':_0x269cd7});});},'ChatQueues':function(_0x420057){return new Promise(function(_0x45549e,_0x665d9e){var _0x86336f=[];for(var _0x378b5c in _0x34b5b0[_0x9a69('0x52')]){if(_0x34b5b0[_0x9a69('0x52')][_0x9a69('0x4d')](_0x378b5c)){var _0x5b8c79=_0x34b5b0[_0x9a69('0x52')][_0x378b5c];var _0x51bf8d={'id':_0x5b8c79['id'],'available':_0x5b8c79['available'],'loggedIn':_0x5b8c79['loggedIn'],'name':_0x5b8c79[_0x9a69('0x53')],'paused':_0x5b8c79[_0x9a69('0x54')],'waiting':_0x5b8c79[_0x9a69('0x55')]};_0x86336f[_0x9a69('0x25')](_0x51bf8d);}}_0x45549e({'count':_0x86336f[_0x9a69('0x1e')],'rows':_0x86336f});});},'MailQueues':function(_0x3ba1cd){return new Promise(function(_0x48a1b2,_0x361da3){var _0x50bd06=[];for(var _0x6633fd in _0x34b5b0[_0x9a69('0x56')]){if(_0x34b5b0[_0x9a69('0x56')][_0x9a69('0x4d')](_0x6633fd)){var _0x358df3=_0x34b5b0[_0x9a69('0x56')][_0x6633fd];var _0x3ec023={'id':_0x358df3['id'],'available':_0x358df3['available'],'loggedIn':_0x358df3['loggedIn'],'name':_0x358df3[_0x9a69('0x53')],'paused':_0x358df3[_0x9a69('0x54')],'waiting':_0x358df3[_0x9a69('0x55')]};_0x50bd06['push'](_0x3ec023);}}_0x48a1b2({'count':_0x50bd06[_0x9a69('0x1e')],'rows':_0x50bd06});});},'OpenchannelQueues':function(_0xa11f00){return new Promise(function(_0xb93218,_0x270e6b){var _0xbbc647=[];for(var _0x2a7f48 in _0x34b5b0[_0x9a69('0x57')]){if(_0x34b5b0['openchannelQueues']['hasOwnProperty'](_0x2a7f48)){var _0x323d6f=_0x34b5b0['openchannelQueues'][_0x2a7f48];var _0x5238be={'id':_0x323d6f['id'],'available':_0x323d6f[_0x9a69('0x58')],'loggedIn':_0x323d6f[_0x9a69('0x59')],'name':_0x323d6f[_0x9a69('0x53')],'paused':_0x323d6f[_0x9a69('0x54')],'waiting':_0x323d6f[_0x9a69('0x55')]};_0xbbc647[_0x9a69('0x25')](_0x5238be);}}_0xb93218({'count':_0xbbc647[_0x9a69('0x1e')],'rows':_0xbbc647});});},'SmsQueues':function(_0x7dc47f){return new Promise(function(_0x37901d,_0x3735e6){var _0x59f64c=[];for(var _0x5ec07d in _0x34b5b0['smsQueues']){if(_0x34b5b0[_0x9a69('0x5a')][_0x9a69('0x4d')](_0x5ec07d)){var _0x4806c1=_0x34b5b0[_0x9a69('0x5a')][_0x5ec07d];var _0x3a515f={'id':_0x4806c1['id'],'available':_0x4806c1[_0x9a69('0x58')],'loggedIn':_0x4806c1[_0x9a69('0x59')],'name':_0x4806c1[_0x9a69('0x53')],'paused':_0x4806c1['paused'],'waiting':_0x4806c1[_0x9a69('0x55')]};_0x59f64c[_0x9a69('0x25')](_0x3a515f);}}_0x37901d({'count':_0x59f64c[_0x9a69('0x1e')],'rows':_0x59f64c});});},'FaxQueues':function(_0x49829){return new Promise(function(_0x2e8f2e,_0x586faa){var _0x3ba3d9=[];for(var _0x22103a in _0x34b5b0[_0x9a69('0x5b')]){if(_0x34b5b0[_0x9a69('0x5b')][_0x9a69('0x4d')](_0x22103a)){var _0x27dc6b=_0x34b5b0[_0x9a69('0x5b')][_0x22103a];var _0x2320db={'id':_0x27dc6b['id'],'available':_0x27dc6b['available'],'loggedIn':_0x27dc6b[_0x9a69('0x59')],'name':_0x27dc6b['name'],'paused':_0x27dc6b[_0x9a69('0x54')],'waiting':_0x27dc6b['waiting']};_0x3ba3d9[_0x9a69('0x25')](_0x2320db);}}_0x2e8f2e({'count':_0x3ba3d9[_0x9a69('0x1e')],'rows':_0x3ba3d9});});},'WhatsappQueues':function(_0x3425ce){return new Promise(function(_0x5d9afd,_0x340a0b){var _0x464e17=[];for(var _0x481b5a in _0x34b5b0[_0x9a69('0x5c')]){if(_0x34b5b0[_0x9a69('0x5c')][_0x9a69('0x4d')](_0x481b5a)){var _0x109a27=_0x34b5b0['whatsappQueues'][_0x481b5a];var _0x5d1fa2={'id':_0x109a27['id'],'available':_0x109a27[_0x9a69('0x58')],'loggedIn':_0x109a27['loggedIn'],'name':_0x109a27[_0x9a69('0x53')],'paused':_0x109a27[_0x9a69('0x54')],'waiting':_0x109a27[_0x9a69('0x55')]};_0x464e17['push'](_0x5d1fa2);}}_0x5d9afd({'count':_0x464e17['length'],'rows':_0x464e17});});},'ChatQueuesWaitingInteractions':function(_0x5868aa){return new Promise(function(_0x39749f,_0x57d8f9){var _0x51c119=_[_0x9a69('0x51')](_0x34b5b0['chatQueuesWaitingInteractions']);_0x39749f({'count':_0x51c119['length'],'rows':_0x51c119});});},'MailQueuesWaitingInteractions':function(_0x1594c5){return new Promise(function(_0x40a1f9,_0x99e46d){var _0x2d1411=_[_0x9a69('0x51')](_0x34b5b0['mailQueuesWaitingInteractions']);_0x40a1f9({'count':_0x2d1411[_0x9a69('0x1e')],'rows':_0x2d1411});});},'OpenchannelQueuesWaitingInteractions':function(_0x266c02){return new Promise(function(_0x146558,_0x27acab){var _0x447d34=_[_0x9a69('0x51')](_0x34b5b0[_0x9a69('0x5d')]);_0x146558({'count':_0x447d34[_0x9a69('0x1e')],'rows':_0x447d34});});},'SmsQueuesWaitingInteractions':function(_0x24efff){return new Promise(function(_0x41ad8b,_0x9636ec){var _0x4a617d=_[_0x9a69('0x51')](_0x34b5b0[_0x9a69('0x5e')]);_0x41ad8b({'count':_0x4a617d[_0x9a69('0x1e')],'rows':_0x4a617d});});},'FaxQueuesWaitingInteractions':function(_0x2e8d10){return new Promise(function(_0x4d051c,_0x1b2f5d){var _0x59609a=_[_0x9a69('0x51')](_0x34b5b0[_0x9a69('0x5f')]);_0x4d051c({'count':_0x59609a['length'],'rows':_0x59609a});});},'WhatsappQueuesWaitingInteractions':function(_0x2ac739){return new Promise(function(_0x55feb3,_0x1b8883){var _0x2cc3a5=_[_0x9a69('0x51')](_0x34b5b0['whatsappQueuesWaitingInteractions']);_0x55feb3({'count':_0x2cc3a5['length'],'rows':_0x2cc3a5});});}};var _0x505675=jayson[_0x9a69('0x60')](_0x2323ae)['http']();_0x505675['on'](_0x9a69('0x38'),function(_0x17736b){logger[_0x9a69('0x38')](JSON['stringify'](_0x17736b));return _0x4d4450(_0x17736b);});_0x505675[_0x9a69('0x17')](0x232c,_0x9a69('0x61'),function(){console[_0x9a69('0x62')](_0x9a69('0x63'),0x232c);return _0x1581d6(_0x9a69('0x64')+0x232c);});});};
\ No newline at end of file
+var _0x750a=['update','UserId','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','name','paused','waiting','mailQueues','openchannelQueues','loggedIn','smsQueues','faxQueues','whatsappQueues','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','util','bluebird','uuid','./applications/utils','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','%s.%s.%s','isNil','IntervalId','Intervals','interval','listen','rules','message','interaction','isArray','length','applications','existsSync','toLowerCase','channel','mail','push','slice','join','dialogflow','split','dialogflowv2','appdata','tag','TagId','tvox','getMustacheRender','account','ChatWebsiteId','ContactId','body','format','app','./interval','condition','intervals','./applications/','consequence','info','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','.js','execute','Applications\x20executed','stringify','matchPath','emit','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0x750a,0x140));var _0xa750=function(_0x5a947b,_0x5c32b4){_0x5a947b=_0x5a947b-0x0;var _0xaeccb5=_0x750a[_0x5a947b];return _0xaeccb5;};'use strict';var _=require('lodash');var util=require(_0xa750('0x0'));var path=require('path');var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require(_0xa750('0x1'));var uuid=require(_0xa750('0x2'));var utils=require(_0xa750('0x3'));var config=require(_0xa750('0x4'));var logger=require(_0xa750('0x5'))(_0xa750('0x6'));var rpc={'openchannelQueueReport':require(_0xa750('0x7')),'mailQueueReport':require(_0xa750('0x8')),'chatQueueReport':require(_0xa750('0x9')),'smsQueueReport':require(_0xa750('0xa')),'faxQueueReport':require(_0xa750('0xb')),'whatsappQueueReport':require(_0xa750('0xc'))};var RuleEngine=require(_0xa750('0xd'));function getId(_0x47a4dd,_0x53f2cb,_0x2678ff){return util['format'](_0xa750('0xe'),_0x47a4dd,_0x53f2cb||0x0,_0x2678ff||0x0);}function getIntervals(_0x1760f5,_0x51f594){var _0x264284=[];if(!_[_0xa750('0xf')](_0x51f594['IntervalId'])&&!_['isNil'](_0x1760f5[_0x51f594[_0xa750('0x10')]])&&!_['isNil'](_0x1760f5[_0x51f594[_0xa750('0x10')]][_0xa750('0x11')])){_0x264284=_['map'](_0x1760f5[_0x51f594[_0xa750('0x10')]][_0xa750('0x11')],_0xa750('0x12'));}else if(!_['isNil'](_0x51f594[_0xa750('0x12')])){_0x264284=[_0x51f594[_0xa750('0x12')]];}return _0x264284;}exports[_0xa750('0x13')]=function(_0x24e48a){_0x24e48a[_0xa750('0x14')]={};return new BPromise(function(_0x339329,_0x5806ed){var _0x3ae2a1={'Start':function(_0x8488ea){var _0x290d46=this;return new Promise(function(_0x49fe3b,_0x337095){if(_0x8488ea){try{var _0x29480c=[];var _0x58639b=getId(_0x8488ea['channel'],_0x8488ea[_0xa750('0x15')]?_0x8488ea['message']['id']:0x0,_0x8488ea[_0xa750('0x16')]?_0x8488ea[_0xa750('0x16')]['id']:0x0);if(_0x8488ea['applications']&&_[_0xa750('0x17')](_0x8488ea['applications'])&&_0x8488ea['applications'][_0xa750('0x18')]){for(var _0x5d0935=0x0;_0x5d0935<_0x8488ea[_0xa750('0x19')]['length'];_0x5d0935+=0x1){var _0x174a8c=_0x8488ea['applications'][_0x5d0935];if(fs[_0xa750('0x1a')](path['join'](__dirname,_0xa750('0x19'),_0x174a8c['app']+'.js'))){var _0xaa9d3e=[];switch(_0x174a8c['app'][_0xa750('0x1b')]()){case'autoreply':var _0x5c7203=_0x174a8c['appdata']['split'](',');if(_0x8488ea[_0xa750('0x1c')]===_0xa750('0x1d')){_0xaa9d3e[_0xa750('0x1e')](_0x5c7203[0x0]);_0xaa9d3e[_0xa750('0x1e')](_0x5c7203[0x1]);_0xaa9d3e[_0xa750('0x1e')](_0x5c7203[_0xa750('0x1f')](0x2,_0x5c7203[_0xa750('0x18')])[_0xa750('0x20')](','));}else{_0xaa9d3e[_0xa750('0x1e')](_0x5c7203[0x0]);_0xaa9d3e[_0xa750('0x1e')](_0x5c7203[_0xa750('0x1f')](0x1,_0x5c7203[_0xa750('0x18')])[_0xa750('0x20')](','));}break;case _0xa750('0x21'):var _0x310e2d=_0x174a8c['appdata'][_0xa750('0x22')](',');_0xaa9d3e[_0xa750('0x1e')](_0x310e2d[0x0]);_0xaa9d3e[_0xa750('0x1e')](_0x310e2d[0x1]);_0xaa9d3e['push'](_0x310e2d[_0xa750('0x1f')](0x2,_0x310e2d[_0xa750('0x18')])[_0xa750('0x20')](','));break;case _0xa750('0x23'):var _0x579f1c=_0x174a8c[_0xa750('0x24')][_0xa750('0x22')](',');_0xaa9d3e[_0xa750('0x1e')](_0x579f1c[0x0]);_0xaa9d3e[_0xa750('0x1e')](_0x579f1c[0x1]);_0xaa9d3e[_0xa750('0x1e')](_0x579f1c[0x2]);_0xaa9d3e['push'](_0x579f1c[0x3]);_0xaa9d3e[_0xa750('0x1e')](_0x579f1c['slice'](0x4,_0x579f1c[_0xa750('0x18')])[_0xa750('0x20')](','));break;case'amazonlex':var _0x8b5c2d=_0x174a8c[_0xa750('0x24')][_0xa750('0x22')](',');_0xaa9d3e[_0xa750('0x1e')](_0x8b5c2d[0x0]);_0xaa9d3e[_0xa750('0x1e')](_0x8b5c2d[0x1]);_0xaa9d3e[_0xa750('0x1e')](_0x8b5c2d[0x2]);_0xaa9d3e[_0xa750('0x1e')](_0x8b5c2d[0x3]);_0xaa9d3e[_0xa750('0x1e')](_0x8b5c2d['slice'](0x4,_0x8b5c2d[_0xa750('0x18')])['join'](','));break;case _0xa750('0x15'):_0xaa9d3e[_0xa750('0x1e')](_0x174a8c[_0xa750('0x24')]);break;case _0xa750('0x25'):_0xaa9d3e['push'](_0x174a8c[_0xa750('0x26')]);_0xaa9d3e[_0xa750('0x1e')](_0x174a8c['appdata']);break;case _0xa750('0x27'):var _0x330710=utils[_0xa750('0x28')](_0x8488ea[_0xa750('0x29')]['notificationTemplate'],_0x8488ea);var _0xf60128=_0x174a8c['appdata']['split'](',');_0xaa9d3e[_0xa750('0x1e')](_0xf60128[0x0]);_0xaa9d3e[_0xa750('0x1e')](_0xf60128[0x1]);_0xaa9d3e[_0xa750('0x1e')](_0xf60128[0x2]);_0xaa9d3e['push'](_0xf60128[0x3]);_0xaa9d3e[_0xa750('0x1e')](_0xf60128[0x4]);_0xaa9d3e[_0xa750('0x1e')](_0xf60128[0x5]);_0xaa9d3e[_0xa750('0x1e')](_0xf60128[0x6]);_0xaa9d3e['push'](_0xf60128[0x7]);_0xaa9d3e[_0xa750('0x1e')](_0xf60128[0x8]);_0xaa9d3e[_0xa750('0x1e')](_0xf60128[0x9]);_0xaa9d3e[_0xa750('0x1e')](_0xf60128[0xa]);_0xaa9d3e['push'](_0x8488ea[_0xa750('0x16')]['id']);_0xaa9d3e[_0xa750('0x1e')](_0x8488ea[_0xa750('0x15')]['id']);_0xaa9d3e['push'](_0x174a8c[_0xa750('0x2a')]);_0xaa9d3e[_0xa750('0x1e')](_0x8488ea[_0xa750('0x16')][_0xa750('0x2b')]);_0xaa9d3e['push'](_0x8488ea['body'][_0xa750('0x2c')]);_0xaa9d3e[_0xa750('0x1e')](_0x330710);break;default:_0xaa9d3e=_['isNil'](_0x174a8c[_0xa750('0x24')])?[]:_0x174a8c[_0xa750('0x24')][_0xa750('0x22')](',');}var _0x1166ff={'id':util[_0xa750('0x2d')]('%s:%s:%s',_0x58639b,_0x174a8c['id'],_0x174a8c[_0xa750('0x2e')]),'condition':require(_0xa750('0x2f'))[_0xa750('0x30')](_0x58639b,getIntervals(_0x24e48a[_0xa750('0x31')],_0x174a8c),_0x24e48a),'consequence':require(_0xa750('0x32')+_0x174a8c[_0xa750('0x2e')])[_0xa750('0x33')](_0x58639b,_0xaa9d3e,_0x24e48a,_0x8488ea),'p':_0x174a8c['priority']||0x0};logger[_0xa750('0x34')]('Push\x20new\x20rule',_0x1166ff['id'],_0xa750('0x35'),getIntervals(_0x24e48a['intervals'],_0x174a8c)[_0xa750('0x20')](_0xa750('0x36')));_0x29480c[_0xa750('0x1e')](_0x1166ff);}else{logger[_0xa750('0x37')](_0xa750('0x38'),path[_0xa750('0x20')](__dirname,_0xa750('0x19'),_0x174a8c[_0xa750('0x2e')]+_0xa750('0x39')));}}_0x24e48a[_0xa750('0x14')][_0x58639b]=new RuleEngine(_0x29480c);_0x24e48a[_0xa750('0x14')][_0x58639b][_0xa750('0x3a')](_0x8488ea,function(_0x3ec860){logger[_0xa750('0x34')](_0xa750('0x3b'),JSON[_0xa750('0x3c')](_0x3ec860[_0xa750('0x3d')]));if(_0x24e48a[_0xa750('0x14')][_0x58639b]){_0x24e48a[_0xa750('0x14')][_0x58639b][_0xa750('0x3e')]('complete');}});return _0x49fe3b({'code':0xc8,'message':_0x8488ea});}else{logger[_0xa750('0x34')](_0xa750('0x3f'));return _0x49fe3b({'code':0xc8,'message':_0x8488ea});}}catch(_0x1e397b){logger[_0xa750('0x37')](_0x1e397b[_0xa750('0x40')]);return _0x337095(_0x290d46[_0xa750('0x37')](0x1f4,_0x1e397b));}}return _0x337095(_0xa750('0x41'));});},'AcceptMessage':function(_0x1f0500){var _0x3534b1=this;return new Promise(function(_0x5635b9,_0x2c6ad3){if(_0x1f0500[_0xa750('0x42')]&&_0x1f0500['agent']['id']){if(_0x24e48a[_0xa750('0x43')][_0x1f0500[_0xa750('0x42')]['id']]){_0x24e48a[_0xa750('0x43')][_0x1f0500[_0xa750('0x42')]['id']][_0xa750('0x44')]=![];_0x24e48a[_0xa750('0x43')][_0x1f0500[_0xa750('0x42')]['id']][_0xa750('0x45')]=undefined;}}if(_0x1f0500[_0xa750('0x15')]&&_0x1f0500[_0xa750('0x15')]['id']){try{var _0x482da9=getId(_0x1f0500[_0xa750('0x1c')],_0x1f0500[_0xa750('0x15')]?_0x1f0500['message']['id']:0x0,_0x1f0500[_0xa750('0x16')]?_0x1f0500[_0xa750('0x16')]['id']:0x0);if(_0x24e48a[_0xa750('0x14')][_0x482da9]){_0x24e48a['rules'][_0x482da9][_0xa750('0x3e')](_0xa750('0x46'));if(rpc[_0x1f0500[_0xa750('0x1c')]+_0xa750('0x47')]){rpc[_0x1f0500['channel']+_0xa750('0x47')][_0xa750('0x48')](_0x482da9,{'UserId':_0x1f0500[_0xa750('0x15')][_0xa750('0x49')]})['catch'](function(_0x203f2a){logger[_0xa750('0x37')]('error\x20update\x20queue\x20report');});}}return _0x5635b9({'code':0xc8,'message':_0x1f0500});}catch(_0x38aa35){logger['error'](_0x38aa35[_0xa750('0x40')]);return _0x2c6ad3(_0x3534b1[_0xa750('0x37')](0x1f4,_0x38aa35));}}logger['error']('message\x20is\x20empty');return _0x2c6ad3(_0x3534b1['error'](0x1f4,_0xa750('0x4a')));});},'RejectMessage':function(_0x401125){var _0x4ea12b=this;return new Promise(function(_0xe88dc,_0x1a79a9){if(_0x401125[_0xa750('0x42')]&&_0x401125['agent']['id']){try{if(_0x24e48a['agents'][_0x401125['agent']['id']]){_0x24e48a['agents'][_0x401125[_0xa750('0x42')]['id']]['busy']=![];_0x24e48a[_0xa750('0x43')][_0x401125[_0xa750('0x42')]['id']]['busyQueue']=undefined;}return _0xe88dc({'code':0xc8,'message':_0x401125});}catch(_0x1647c3){logger['error'](_0x1647c3[_0xa750('0x40')]);return _0x1a79a9(_0x4ea12b['error'](0x1f4,_0x1647c3));}}logger['error']('message\x20is\x20empty');return _0x1a79a9(_0x4ea12b['error'](0x1f4,_0xa750('0x4a')));});},'AbandonInteraction':function(_0x40dac2){var _0x5f1313=this;return new Promise(function(_0x552578,_0x4faeda){if(_0x40dac2[_0xa750('0x1c')]&&_0x40dac2[_0xa750('0x16')]&&_0x40dac2[_0xa750('0x16')]['id']){try{var _0x45a7da=getId(_0x40dac2[_0xa750('0x1c')],_0x40dac2[_0xa750('0x15')]?_0x40dac2['message']['id']:0x0,_0x40dac2['interaction']?_0x40dac2[_0xa750('0x16')]['id']:0x0);if(_0x24e48a[_0xa750('0x14')][_0x45a7da]){_0x24e48a[_0xa750('0x14')][_0x45a7da][_0xa750('0x3e')](_0xa750('0x46'));}return _0x552578({'code':0xc8,'message':_0x40dac2});}catch(_0x5a3cd5){logger[_0xa750('0x37')](_0x5a3cd5[_0xa750('0x40')]);return _0x4faeda(_0x5f1313[_0xa750('0x37')](0x1f4,_0x5a3cd5));}}logger[_0xa750('0x37')](_0xa750('0x4a'));return _0x4faeda(_0x5f1313[_0xa750('0x37')](0x1f4,_0xa750('0x4a')));});},'AgentCapacity':function(_0x1bd660){var _0x5e78f1=this;return new Promise(function(_0x2aa1d6,_0x1c7713){if(_0x24e48a[_0xa750('0x43')][_0xa750('0x4b')](_0x1bd660['id'])){for(var _0x58bc33 in _0x1bd660['capacity']){if(_0x1bd660[_0xa750('0x4c')][_0xa750('0x4b')](_0x58bc33)){if(_0x24e48a[_0xa750('0x43')][_0x1bd660['id']][_0xa750('0x4b')](_0x58bc33+_0xa750('0x4d'))){_0x24e48a[_0xa750('0x43')][_0x1bd660['id']][_0x58bc33+_0xa750('0x4d')]=parseInt(_0x1bd660[_0xa750('0x4c')][_0x58bc33],0xa);}}}_0x24e48a[_0xa750('0x43')][_0x1bd660['id']][_0xa750('0x4e')]();return _0x2aa1d6({'code':0xc8,'message':_0x24e48a[_0xa750('0x43')][_0x1bd660['id']]});}else{return _0x1c7713(_0x5e78f1[_0xa750('0x37')](0x1f4,_0xa750('0x4f')));}});},'Agents':function(_0x29799a){return new Promise(function(_0x99a54c,_0x313732){var _0x49e132=_[_0xa750('0x50')](_0x24e48a['agents']);_0x99a54c({'count':_0x49e132[_0xa750('0x18')],'rows':_0x49e132});});},'ChatQueues':function(_0x2d488d){return new Promise(function(_0xbe7451,_0x5845c5){var _0x18c242=[];for(var _0x2ed01a in _0x24e48a[_0xa750('0x51')]){if(_0x24e48a[_0xa750('0x51')][_0xa750('0x4b')](_0x2ed01a)){var _0x278a58=_0x24e48a['chatQueues'][_0x2ed01a];var _0x3001d7={'id':_0x278a58['id'],'available':_0x278a58[_0xa750('0x52')],'loggedIn':_0x278a58['loggedIn'],'name':_0x278a58[_0xa750('0x53')],'paused':_0x278a58[_0xa750('0x54')],'waiting':_0x278a58[_0xa750('0x55')]};_0x18c242[_0xa750('0x1e')](_0x3001d7);}}_0xbe7451({'count':_0x18c242[_0xa750('0x18')],'rows':_0x18c242});});},'MailQueues':function(_0x1b7597){return new Promise(function(_0x28f477,_0xc0b61b){var _0x1af7bb=[];for(var _0x8c5a88 in _0x24e48a[_0xa750('0x56')]){if(_0x24e48a['mailQueues']['hasOwnProperty'](_0x8c5a88)){var _0x230582=_0x24e48a[_0xa750('0x56')][_0x8c5a88];var _0x36a0dc={'id':_0x230582['id'],'available':_0x230582[_0xa750('0x52')],'loggedIn':_0x230582['loggedIn'],'name':_0x230582[_0xa750('0x53')],'paused':_0x230582[_0xa750('0x54')],'waiting':_0x230582[_0xa750('0x55')]};_0x1af7bb[_0xa750('0x1e')](_0x36a0dc);}}_0x28f477({'count':_0x1af7bb[_0xa750('0x18')],'rows':_0x1af7bb});});},'OpenchannelQueues':function(_0x473188){return new Promise(function(_0x17b25e,_0x5d883d){var _0x1dcc15=[];for(var _0x2783b9 in _0x24e48a[_0xa750('0x57')]){if(_0x24e48a['openchannelQueues']['hasOwnProperty'](_0x2783b9)){var _0x477d65=_0x24e48a['openchannelQueues'][_0x2783b9];var _0x5ba3f5={'id':_0x477d65['id'],'available':_0x477d65[_0xa750('0x52')],'loggedIn':_0x477d65[_0xa750('0x58')],'name':_0x477d65[_0xa750('0x53')],'paused':_0x477d65[_0xa750('0x54')],'waiting':_0x477d65[_0xa750('0x55')]};_0x1dcc15['push'](_0x5ba3f5);}}_0x17b25e({'count':_0x1dcc15[_0xa750('0x18')],'rows':_0x1dcc15});});},'SmsQueues':function(_0x217222){return new Promise(function(_0x37cebc,_0x26e6c7){var _0x439dce=[];for(var _0x1eff4e in _0x24e48a['smsQueues']){if(_0x24e48a['smsQueues'][_0xa750('0x4b')](_0x1eff4e)){var _0x2dadd0=_0x24e48a[_0xa750('0x59')][_0x1eff4e];var _0x38c836={'id':_0x2dadd0['id'],'available':_0x2dadd0[_0xa750('0x52')],'loggedIn':_0x2dadd0[_0xa750('0x58')],'name':_0x2dadd0[_0xa750('0x53')],'paused':_0x2dadd0[_0xa750('0x54')],'waiting':_0x2dadd0['waiting']};_0x439dce[_0xa750('0x1e')](_0x38c836);}}_0x37cebc({'count':_0x439dce['length'],'rows':_0x439dce});});},'FaxQueues':function(_0x59ac88){return new Promise(function(_0x470211,_0x7c3321){var _0x2b9d99=[];for(var _0x1f5ee4 in _0x24e48a['faxQueues']){if(_0x24e48a[_0xa750('0x5a')][_0xa750('0x4b')](_0x1f5ee4)){var _0x3e3f47=_0x24e48a[_0xa750('0x5a')][_0x1f5ee4];var _0x54aa6a={'id':_0x3e3f47['id'],'available':_0x3e3f47[_0xa750('0x52')],'loggedIn':_0x3e3f47[_0xa750('0x58')],'name':_0x3e3f47[_0xa750('0x53')],'paused':_0x3e3f47[_0xa750('0x54')],'waiting':_0x3e3f47[_0xa750('0x55')]};_0x2b9d99[_0xa750('0x1e')](_0x54aa6a);}}_0x470211({'count':_0x2b9d99[_0xa750('0x18')],'rows':_0x2b9d99});});},'WhatsappQueues':function(_0x429c1e){return new Promise(function(_0x51ea09,_0x584593){var _0x1af209=[];for(var _0x52ae23 in _0x24e48a[_0xa750('0x5b')]){if(_0x24e48a[_0xa750('0x5b')]['hasOwnProperty'](_0x52ae23)){var _0x24f1f4=_0x24e48a['whatsappQueues'][_0x52ae23];var _0x19028a={'id':_0x24f1f4['id'],'available':_0x24f1f4[_0xa750('0x52')],'loggedIn':_0x24f1f4[_0xa750('0x58')],'name':_0x24f1f4['name'],'paused':_0x24f1f4[_0xa750('0x54')],'waiting':_0x24f1f4[_0xa750('0x55')]};_0x1af209[_0xa750('0x1e')](_0x19028a);}}_0x51ea09({'count':_0x1af209[_0xa750('0x18')],'rows':_0x1af209});});},'ChatQueuesWaitingInteractions':function(_0x505c68){return new Promise(function(_0x56c2ce,_0x5b8fe3){var _0x377efa=_[_0xa750('0x50')](_0x24e48a['chatQueuesWaitingInteractions']);_0x56c2ce({'count':_0x377efa[_0xa750('0x18')],'rows':_0x377efa});});},'MailQueuesWaitingInteractions':function(_0x167ec1){return new Promise(function(_0x3fdd89,_0x30a7e8){var _0x459f1d=_[_0xa750('0x50')](_0x24e48a['mailQueuesWaitingInteractions']);_0x3fdd89({'count':_0x459f1d[_0xa750('0x18')],'rows':_0x459f1d});});},'OpenchannelQueuesWaitingInteractions':function(_0x709154){return new Promise(function(_0xdb39a6,_0x50ff65){var _0x4bc4a6=_[_0xa750('0x50')](_0x24e48a[_0xa750('0x5c')]);_0xdb39a6({'count':_0x4bc4a6[_0xa750('0x18')],'rows':_0x4bc4a6});});},'SmsQueuesWaitingInteractions':function(_0x584fdf){return new Promise(function(_0xfbb51c,_0x15552b){var _0x32b8e7=_['values'](_0x24e48a[_0xa750('0x5d')]);_0xfbb51c({'count':_0x32b8e7['length'],'rows':_0x32b8e7});});},'FaxQueuesWaitingInteractions':function(_0x29c20d){return new Promise(function(_0x2e3b00,_0x26fbe1){var _0x1d7ba6=_[_0xa750('0x50')](_0x24e48a['faxQueuesWaitingInteractions']);_0x2e3b00({'count':_0x1d7ba6[_0xa750('0x18')],'rows':_0x1d7ba6});});},'WhatsappQueuesWaitingInteractions':function(_0x3aa634){return new Promise(function(_0xec315a,_0x105ed2){var _0x374adb=_['values'](_0x24e48a[_0xa750('0x5e')]);_0xec315a({'count':_0x374adb[_0xa750('0x18')],'rows':_0x374adb});});}};var _0x42211f=jayson[_0xa750('0x5f')](_0x3ae2a1)[_0xa750('0x60')]();_0x42211f['on'](_0xa750('0x37'),function(_0x26bda4){logger[_0xa750('0x37')](JSON['stringify'](_0x26bda4));return _0x5806ed(_0x26bda4);});_0x42211f['listen'](0x232c,'127.0.0.1',function(){console['log'](_0xa750('0x61'),0x232c);return _0x339329('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
index 97502a9..019a7bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabf6=['stack','bluebird','jayson/promise','../../../config/logger','routing','client','http','request','error','message','result','condition','rules','[%s][INTERVAL]\x20ROUTING\x20STOPPED','length','push','iftime\x20%s','then','indexOf','true','[%s][INTERVAL]\x20%s','some','info','[%s][INTERVAL]\x20%s\x20%s','log','join','\x20|\x20'];(function(_0x15c421,_0x6366f7){var _0x5e5ed5=function(_0x206e66){while(--_0x206e66){_0x15c421['push'](_0x15c421['shift']());}};_0x5e5ed5(++_0x6366f7);}(_0xabf6,0x196));var _0x6abf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xabf6[_0x3dd15e];return _0x231fd0;};'use strict';var util=require('util');var BPromise=require(_0x6abf('0x0'));var jayson=require(_0x6abf('0x1'));var _=require('lodash');var logger=require(_0x6abf('0x2'))(_0x6abf('0x3'));var client=jayson[_0x6abf('0x4')][_0x6abf('0x5')]({'port':0x232a});function request(_0x2e016b,_0x4deb93){return new BPromise(function(_0x26f692,_0x25f53e){return client[_0x6abf('0x6')](_0x2e016b,_0x4deb93)['then'](function(_0x337c3f){if(_0x337c3f[_0x6abf('0x7')]){return _0x25f53e(_0x337c3f[_0x6abf('0x7')][_0x6abf('0x8')]);}else{return _0x26f692(_0x337c3f[_0x6abf('0x9')]);}})['catch'](function(_0x338070){return _0x25f53e(_0x338070);});});}exports[_0x6abf('0xa')]=function(_0x23556d,_0x4f6a3c,_0x29034c){return function(_0x432639){if(_0x29034c[_0x6abf('0xb')]&&!_0x29034c[_0x6abf('0xb')][_0x23556d]){logger['info'](_0x6abf('0xc'),_0x23556d);return _0x432639['stop']();}var _0xf848fc=[];for(var _0x5b57b1=0x0;_0x5b57b1<_0x4f6a3c[_0x6abf('0xd')];_0x5b57b1+=0x1){_0xf848fc[_0x6abf('0xe')](request('Command',{'command':util['format'](_0x6abf('0xf'),_0x4f6a3c[_0x5b57b1])})[_0x6abf('0x10')](function(_0x2a9b92){return _0x2a9b92&&_0x2a9b92[_0x6abf('0x8')]&&_0x2a9b92[_0x6abf('0x8')][_0x6abf('0x11')](_0x6abf('0x12'))>=0x0?!![]:![];})['catch'](function(_0x4a9ceb){logger['error'](_0x6abf('0x13'),_0x23556d,_0x4f6a3c[_0x5b57b1]);}));}BPromise['all'](_0xf848fc)['then'](function(_0x4707e4){var _0x34663b=_[_0x6abf('0x14')](_0x4707e4);logger[_0x6abf('0x15')](_0x6abf('0x16'),_0x23556d,_0x4f6a3c['join']('\x20|\x20'),_0x34663b);_0x432639['when'](_0x34663b);})['catch'](function(_0x4821f3){console[_0x6abf('0x17')](_0x4821f3);logger[_0x6abf('0x7')]('[%s][INTERVAL]\x20%s\x20%s',_0x23556d,_0x4f6a3c[_0x6abf('0x18')](_0x6abf('0x19')),_0x4821f3[_0x6abf('0x1a')]);_0x432639['stop']();});};};
\ No newline at end of file
+var _0x03bf=['condition','rules','stop','length','push','Command','format','iftime\x20%s','message','indexOf','catch','[%s][INTERVAL]\x20%s','all','some','info','[%s][INTERVAL]\x20%s\x20%s','join','log','\x20|\x20','stack','bluebird','lodash','../../../config/logger','routing','client','http','request','then','error'];(function(_0x41bfa8,_0x2222f0){var _0x5a689e=function(_0x9c9b27){while(--_0x9c9b27){_0x41bfa8['push'](_0x41bfa8['shift']());}};_0x5a689e(++_0x2222f0);}(_0x03bf,0x136));var _0xf03b=function(_0x26dd97,_0x57e1e8){_0x26dd97=_0x26dd97-0x0;var _0x5db606=_0x03bf[_0x26dd97];return _0x5db606;};'use strict';var util=require('util');var BPromise=require(_0xf03b('0x0'));var jayson=require('jayson/promise');var _=require(_0xf03b('0x1'));var logger=require(_0xf03b('0x2'))(_0xf03b('0x3'));var client=jayson[_0xf03b('0x4')][_0xf03b('0x5')]({'port':0x232a});function request(_0x20774c,_0x5b2e5f){return new BPromise(function(_0x4428ad,_0x3d233e){return client[_0xf03b('0x6')](_0x20774c,_0x5b2e5f)[_0xf03b('0x7')](function(_0x273c72){if(_0x273c72[_0xf03b('0x8')]){return _0x3d233e(_0x273c72['error']['message']);}else{return _0x4428ad(_0x273c72['result']);}})['catch'](function(_0x5afcfd){return _0x3d233e(_0x5afcfd);});});}exports[_0xf03b('0x9')]=function(_0x4669c6,_0x2fbadd,_0x1e363d){return function(_0x306fe1){if(_0x1e363d['rules']&&!_0x1e363d[_0xf03b('0xa')][_0x4669c6]){logger['info']('[%s][INTERVAL]\x20ROUTING\x20STOPPED',_0x4669c6);return _0x306fe1[_0xf03b('0xb')]();}var _0x13487d=[];for(var _0x50f40d=0x0;_0x50f40d<_0x2fbadd[_0xf03b('0xc')];_0x50f40d+=0x1){_0x13487d[_0xf03b('0xd')](request(_0xf03b('0xe'),{'command':util[_0xf03b('0xf')](_0xf03b('0x10'),_0x2fbadd[_0x50f40d])})[_0xf03b('0x7')](function(_0x58748b){return _0x58748b&&_0x58748b[_0xf03b('0x11')]&&_0x58748b['message'][_0xf03b('0x12')]('true')>=0x0?!![]:![];})[_0xf03b('0x13')](function(_0x52163e){logger[_0xf03b('0x8')](_0xf03b('0x14'),_0x4669c6,_0x2fbadd[_0x50f40d]);}));}BPromise[_0xf03b('0x15')](_0x13487d)[_0xf03b('0x7')](function(_0x4758d1){var _0x63e160=_[_0xf03b('0x16')](_0x4758d1);logger[_0xf03b('0x17')](_0xf03b('0x18'),_0x4669c6,_0x2fbadd[_0xf03b('0x19')]('\x20|\x20'),_0x63e160);_0x306fe1['when'](_0x63e160);})[_0xf03b('0x13')](function(_0xaefcad){console[_0xf03b('0x1a')](_0xaefcad);logger[_0xf03b('0x8')](_0xf03b('0x18'),_0x4669c6,_0x2fbadd[_0xf03b('0x19')](_0xf03b('0x1b')),_0xaefcad[_0xf03b('0x1c')]);_0x306fe1[_0xf03b('0xb')]();});};};
\ No newline at end of file
index 66caefd..18fa2fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fd9=['agentacw','agentcomplete','acw','acwtime','acwTimeout','request','CreateVoiceAgentReport','destuniqueid','agentcalled','format','agentcalledAt','now','connectedlinenum','info','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','[%s][agents][agentcalled]','agentringnoanswer','isNil','debug','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','timeout','holdtime','ringtime','forIn','includes','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','agentringnoanswerAt','abandoned','reason','[%s][agents][queuecallerabandon]','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connect','talktime','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','agentcompleteAt','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfertype','blind','transferexten','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','secondtransfereruniqueid','transfer','ATTENDED','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfererexten','transfertargetuniqueid','calleridnum','hangup','cause','rejected','splice','agent','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','[%s][agents][hangup]','util','./utils','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','interface','lastevent','then','type'];(function(_0x28387c,_0x548fd1){var _0x127141=function(_0x43cf24){while(--_0x43cf24){_0x28387c['push'](_0x28387c['shift']());}};_0x127141(++_0x548fd1);}(_0x0fd9,0xa3));var _0x90fd=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0x0fd9[_0x2235bf];return _0x4c3a64;};'use strict';var _=require('lodash');var util=require(_0x90fd('0x0'));var utils=require(_0x90fd('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x685cd0,_0x32f6b6){utils['info'](util['format'](_0x90fd('0x2'),_0x685cd0[_0x90fd('0x3')],_0x685cd0[_0x90fd('0x4')],_0x685cd0[_0x90fd('0x5')],_0x685cd0[_0x90fd('0x6')],_0x685cd0[_0x90fd('0x7')],_0x685cd0['calleridnum'],_0x685cd0['connectedlinenum'],_0x685cd0[_0x90fd('0x8')]));if(_0x685cd0['queue']){utils['getVoiceQueueByName'](_0x685cd0[_0x90fd('0x5')])[_0x90fd('0x9')](function(_0x5e66f0){if(_0x5e66f0){_0x685cd0[_0x90fd('0xa')]=_0x5e66f0[_0x90fd('0xa')];_0x685cd0[_0x90fd('0xb')]=_0x685cd0[_0x90fd('0xc')]?_0x5e66f0[_0x90fd('0xd')]:![];_0x685cd0[_0x90fd('0xe')]=_0x685cd0[_0x90fd('0xb')]?_0x5e66f0[_0x90fd('0xf')]:0x0;}utils[_0x90fd('0x10')]('CreateVoiceAgentReport',_0x685cd0);});}else{utils[_0x90fd('0x10')](_0x90fd('0x11'),_0x685cd0);}if(_0x32f6b6){delete transfers[_0x685cd0['uniqueid']];}else{delete agents[_0x685cd0[_0x90fd('0x12')]];}}exports[_0x90fd('0x13')]=function(_0x19a594){try{utils['debug'](util[_0x90fd('0x14')]('[%s][agents][agentcalled]',_0x19a594[_0x90fd('0x3')]),_0x19a594);agents[_0x19a594[_0x90fd('0x12')]]=_0x19a594;agents[_0x19a594[_0x90fd('0x12')]][_0x90fd('0x15')]=utils[_0x90fd('0x16')]();agents[_0x19a594[_0x90fd('0x12')]][_0x90fd('0x8')]='called';agents[_0x19a594['destuniqueid']][_0x90fd('0x17')]=null;agents[_0x19a594[_0x90fd('0x12')]]['connectedlinename']=null;utils[_0x90fd('0x18')](util[_0x90fd('0x14')](_0x90fd('0x19'),_0x19a594['uniqueid'],agents[_0x19a594[_0x90fd('0x12')]][_0x90fd('0x6')],_0x19a594[_0x90fd('0x12')]));}catch(_0x14958b){utils[_0x90fd('0x1a')](util[_0x90fd('0x14')](_0x90fd('0x1b'),_0x19a594[_0x90fd('0x3')]),_0x14958b);}};exports[_0x90fd('0x1c')]=function(_0x90197e){try{if(!_[_0x90fd('0x1d')](agents[_0x90197e[_0x90fd('0x12')]])){utils[_0x90fd('0x1e')](util[_0x90fd('0x14')](_0x90fd('0x1f'),_0x90197e['uniqueid']),_0x90197e);utils[_0x90fd('0x18')](util[_0x90fd('0x14')](_0x90fd('0x20'),_0x90197e[_0x90fd('0x3')],agents[_0x90197e[_0x90fd('0x12')]][_0x90fd('0x6')],_0x90197e[_0x90fd('0x12')]));agents[_0x90197e[_0x90fd('0x12')]]['agentringnoanswer']=!![];agents[_0x90197e[_0x90fd('0x12')]]['agentringnoanswerAt']=utils[_0x90fd('0x16')]();agents[_0x90197e[_0x90fd('0x12')]][_0x90fd('0x8')]=_0x90fd('0x21');agents[_0x90197e[_0x90fd('0x12')]]['reason']=_0x90fd('0x21');agents[_0x90197e[_0x90fd('0x12')]][_0x90fd('0x22')]=_0x90197e[_0x90fd('0x23')]?parseInt(_0x90197e[_0x90fd('0x23')])/0x3e8:0x0;agents[_0x90197e[_0x90fd('0x12')]]['talktime']=0x0;unanswered['push'](_0x90197e[_0x90fd('0x12')]);}}catch(_0x170cfb){utils[_0x90fd('0x1a')](util[_0x90fd('0x14')](_0x90fd('0x1f'),_0x90197e['uniqueid']),_0x170cfb);}};exports['queuecallerabandon']=function(_0x3781bb){try{_[_0x90fd('0x24')](agents,function(_0x228fbc,_0x3a0102){if(_0x228fbc['uniqueid']==_0x3781bb['uniqueid']&&!_[_0x90fd('0x25')](unanswered,_0x228fbc[_0x90fd('0x12')])){utils[_0x90fd('0x1e')](util[_0x90fd('0x14')]('[%s][agents][queuecallerabandon]',_0x3781bb[_0x90fd('0x3')]),_0x3781bb);utils[_0x90fd('0x18')](util[_0x90fd('0x14')](_0x90fd('0x26'),_0x3781bb[_0x90fd('0x3')],_0x228fbc[_0x90fd('0x6')],_0x228fbc[_0x90fd('0x12')]));_0x228fbc[_0x90fd('0x1c')]=!![];_0x228fbc[_0x90fd('0x27')]=utils[_0x90fd('0x16')]();_0x228fbc[_0x90fd('0x8')]=_0x90fd('0x28');_0x228fbc[_0x90fd('0x29')]=_0x90fd('0x28');_0x228fbc[_0x90fd('0x22')]=_0x3781bb[_0x90fd('0x22')];_0x228fbc['talktime']=0x0;writeDB(_0x228fbc);}});}catch(_0x13c019){utils[_0x90fd('0x1a')](util[_0x90fd('0x14')](_0x90fd('0x2a'),_0x3781bb[_0x90fd('0x3')]),_0x13c019);}};exports[_0x90fd('0x2b')]=function(_0x35eae2){try{if(agents[_0x35eae2[_0x90fd('0x12')]]){utils[_0x90fd('0x1e')](util[_0x90fd('0x14')](_0x90fd('0x2c'),_0x35eae2[_0x90fd('0x3')]),_0x35eae2);utils[_0x90fd('0x18')](util['format'](_0x90fd('0x2d'),_0x35eae2[_0x90fd('0x3')],agents[_0x35eae2[_0x90fd('0x12')]][_0x90fd('0x6')],_0x35eae2['destuniqueid']));agents[_0x35eae2[_0x90fd('0x12')]][_0x90fd('0x2e')]=utils[_0x90fd('0x16')]();agents[_0x35eae2['destuniqueid']]['connectedlinenum']=_0x35eae2[_0x90fd('0x17')];agents[_0x35eae2[_0x90fd('0x12')]][_0x90fd('0x2f')]=_0x35eae2[_0x90fd('0x2f')];agents[_0x35eae2[_0x90fd('0x12')]][_0x90fd('0x22')]=_0x35eae2[_0x90fd('0x23')];agents[_0x35eae2[_0x90fd('0x12')]][_0x90fd('0x8')]=_0x90fd('0x30');_[_0x90fd('0x24')](agents,function(_0x43c84c,_0x21dc9c){if(_0x43c84c[_0x90fd('0x12')]!=_0x35eae2[_0x90fd('0x12')]&&_0x43c84c[_0x90fd('0x3')]==_0x35eae2[_0x90fd('0x3')]){_0x43c84c[_0x90fd('0x31')]=0x0;_0x43c84c['holdtime']=_0x35eae2[_0x90fd('0x23')];_0x43c84c[_0x90fd('0x1c')]=!![];_0x43c84c[_0x90fd('0x27')]=utils['now']();_0x43c84c['lastevent']='answered_elsewhere';_0x43c84c[_0x90fd('0x29')]=_0x90fd('0x32');_0x43c84c[_0x90fd('0x33')]=_0x35eae2[_0x90fd('0x12')];_0x43c84c[_0x90fd('0x34')]=_0x35eae2[_0x90fd('0x6')];writeDB(_0x43c84c);}});}}catch(_0x363365){utils[_0x90fd('0x1a')](util[_0x90fd('0x14')](_0x90fd('0x2c'),_0x35eae2[_0x90fd('0x3')]),_0x363365);}};exports[_0x90fd('0xc')]=function(_0x4cb682){try{if(!_[_0x90fd('0x1d')](agents[_0x4cb682[_0x90fd('0x12')]])){utils['debug'](util['format'](_0x90fd('0x35'),_0x4cb682[_0x90fd('0x3')]),_0x4cb682);utils[_0x90fd('0x18')](util['format']('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x4cb682[_0x90fd('0x3')],agents[_0x4cb682[_0x90fd('0x12')]]['membername'],_0x4cb682['destuniqueid']));agents[_0x4cb682[_0x90fd('0x12')]][_0x90fd('0xc')]=!![];agents[_0x4cb682['destuniqueid']]['agentcompleteAt']=utils[_0x90fd('0x16')]();agents[_0x4cb682[_0x90fd('0x12')]][_0x90fd('0x31')]=utils['diffTime'](agents[_0x4cb682[_0x90fd('0x12')]][_0x90fd('0x36')],agents[_0x4cb682['destuniqueid']]['agentconnectAt']);agents[_0x4cb682['destuniqueid']][_0x90fd('0x29')]=_0x4cb682[_0x90fd('0x29')];agents[_0x4cb682['destuniqueid']][_0x90fd('0x8')]=_0x90fd('0x37');writeDB(agents[_0x4cb682[_0x90fd('0x12')]]);}}catch(_0xe5e47e){utils[_0x90fd('0x1a')](util['format']('[%s][agents][agentcomplete]',_0x4cb682[_0x90fd('0x3')]),_0xe5e47e);}};exports[_0x90fd('0x38')]=function(_0x125874){try{if(!_[_0x90fd('0x1d')](agents[_0x125874[_0x90fd('0x39')]])){utils[_0x90fd('0x1e')](util[_0x90fd('0x14')](_0x90fd('0x3a'),_0x125874[_0x90fd('0x3')]),_0x125874);utils[_0x90fd('0x18')](util['format'](_0x90fd('0x3b'),_0x125874[_0x90fd('0x3')],agents[_0x125874[_0x90fd('0x39')]][_0x90fd('0x6')],agents[_0x125874['transfereruniqueid']]['uniqueid']));agents[_0x125874[_0x90fd('0x39')]]['transfer']=!![];agents[_0x125874['transfereruniqueid']][_0x90fd('0x3c')]=_0x90fd('0x3d');agents[_0x125874[_0x90fd('0x39')]][_0x90fd('0x3e')]=_0x125874[_0x90fd('0x3f')];agents[_0x125874[_0x90fd('0x39')]][_0x90fd('0x40')]=agents[_0x125874['transfereruniqueid']]['uniqueid'];}}catch(_0x1b81dc){utils[_0x90fd('0x1a')](util[_0x90fd('0x14')]('[%s][agents][blindtransfer]',_0x125874[_0x90fd('0x3')]),_0x1b81dc);}};exports[_0x90fd('0x41')]=function(_0x223554){try{utils[_0x90fd('0x1e')](util[_0x90fd('0x14')](_0x90fd('0x42'),_0x223554[_0x90fd('0x43')]),_0x223554);if(_0x223554[_0x90fd('0x43')]==_0x223554['origtransfererlinkedid']){if(!_['isNil'](agents[_0x223554[_0x90fd('0x44')]])){utils[_0x90fd('0x18')](util[_0x90fd('0x14')]('[%s][agents][attendedtransfer]\x20agent:%s',_0x223554[_0x90fd('0x43')],agents[_0x223554[_0x90fd('0x44')]][_0x90fd('0x6')]));agents[_0x223554[_0x90fd('0x44')]][_0x90fd('0x45')]=!![];agents[_0x223554[_0x90fd('0x44')]]['transfertype']=_0x90fd('0x46');agents[_0x223554['secondtransfereruniqueid']][_0x90fd('0x3e')]=_0x223554['origtransfererexten'];agents[_0x223554[_0x90fd('0x44')]][_0x90fd('0x40')]=_0x223554[_0x90fd('0x43')];}if(_0x223554[_0x90fd('0x47')]&&agents[_0x223554['transfereeuniqueid']]){agents[_0x223554[_0x90fd('0x47')]][_0x90fd('0x48')]=0x1;transfers[_0x223554[_0x90fd('0x47')]]=_[_0x90fd('0x49')](agents[_0x223554[_0x90fd('0x47')]]);transfers[_0x223554[_0x90fd('0x47')]]['calleridnum']=agents[_0x223554['secondtransfereruniqueid']]['calleridnum'];transfers[_0x223554['transfereeuniqueid']]['calleridname']=agents[_0x223554[_0x90fd('0x44')]][_0x90fd('0x4a')];transfers[_0x223554[_0x90fd('0x47')]][_0x90fd('0x15')]=utils[_0x90fd('0x16')]();transfers[_0x223554['transfereeuniqueid']]['agentconnectAt']=utils['now']();transfers[_0x223554[_0x90fd('0x47')]][_0x90fd('0x22')]=0x0;transfers[_0x223554['transfereeuniqueid']][_0x90fd('0x48')]=0x2;}}else if(_0x223554[_0x90fd('0x44')]==_0x223554[_0x90fd('0x4b')]){if(!_[_0x90fd('0x1d')](agents[_0x223554[_0x90fd('0x43')]])){utils[_0x90fd('0x18')](util[_0x90fd('0x14')](_0x90fd('0x4c'),_0x223554[_0x90fd('0x43')],agents[_0x223554['origtransfereruniqueid']][_0x90fd('0x6')]));agents[_0x223554[_0x90fd('0x43')]][_0x90fd('0x45')]=!![];agents[_0x223554['origtransfereruniqueid']]['transfertype']=_0x90fd('0x46');agents[_0x223554[_0x90fd('0x43')]]['transferexten']=_0x223554[_0x90fd('0x4d')];agents[_0x223554['origtransfereruniqueid']]['transferuniqueid']=_0x223554[_0x90fd('0x44')];}if(_0x223554[_0x90fd('0x4e')]&&agents[_0x223554[_0x90fd('0x4e')]]){agents[_0x223554[_0x90fd('0x4e')]][_0x90fd('0x48')]=0x1;transfers[_0x223554[_0x90fd('0x4e')]]=_[_0x90fd('0x49')](agents[_0x223554[_0x90fd('0x4e')]]);transfers[_0x223554['transfertargetuniqueid']][_0x90fd('0x4f')]=agents[_0x223554[_0x90fd('0x43')]][_0x90fd('0x4f')];transfers[_0x223554['transfertargetuniqueid']][_0x90fd('0x4a')]=agents[_0x223554[_0x90fd('0x43')]]['calleridname'];transfers[_0x223554['transfertargetuniqueid']][_0x90fd('0x15')]=utils[_0x90fd('0x16')]();transfers[_0x223554[_0x90fd('0x4e')]]['agentconnectAt']=utils[_0x90fd('0x16')]();transfers[_0x223554['transfertargetuniqueid']]['holdtime']=0x0;transfers[_0x223554[_0x90fd('0x4e')]]['agententerreason']=0x2;}}}catch(_0x27a080){utils[_0x90fd('0x1a')](util['format'](_0x90fd('0x42'),_0x223554[_0x90fd('0x43')]),_0x27a080);}};exports[_0x90fd('0x50')]=function(_0x454201){try{utils[_0x90fd('0x1e')](util[_0x90fd('0x14')]('[%s][agents][hangup]',_0x454201['uniqueid']),_0x454201);if(agents[_0x454201['uniqueid']]&&agents[_0x454201['uniqueid']][_0x90fd('0x29')]===_0x90fd('0x21')){if(_0x454201[_0x90fd('0x51')]==='21'){agents[_0x454201['uniqueid']][_0x90fd('0x29')]=_0x90fd('0x52');agents[_0x454201['uniqueid']][_0x90fd('0x8')]=_0x90fd('0x52');}utils[_0x90fd('0x18')](util[_0x90fd('0x14')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x454201[_0x90fd('0x3')],agents[_0x454201[_0x90fd('0x3')]]['membername'],agents[_0x454201['uniqueid']]['reason'],agents[_0x454201[_0x90fd('0x3')]]['lastevent']));writeDB(agents[_0x454201['uniqueid']]);var _0x328bda=unanswered['indexOf'](_0x454201[_0x90fd('0x3')]);if(_0x328bda>-0x1){unanswered[_0x90fd('0x53')](_0x328bda,0x1);}}if(transfers[_0x454201[_0x90fd('0x3')]]){transfers[_0x454201[_0x90fd('0x3')]][_0x90fd('0xc')]=!![];transfers[_0x454201[_0x90fd('0x3')]]['agentcompleteAt']=utils[_0x90fd('0x16')]();transfers[_0x454201[_0x90fd('0x3')]][_0x90fd('0x31')]=utils['diffTime'](transfers[_0x454201['uniqueid']][_0x90fd('0x36')],transfers[_0x454201[_0x90fd('0x3')]][_0x90fd('0x2e')]);transfers[_0x454201[_0x90fd('0x3')]][_0x90fd('0x29')]=_0x90fd('0x54');transfers[_0x454201[_0x90fd('0x3')]][_0x90fd('0x8')]=_0x90fd('0x37');utils[_0x90fd('0x18')](util[_0x90fd('0x14')](_0x90fd('0x55'),_0x454201[_0x90fd('0x3')],transfers[_0x454201[_0x90fd('0x3')]][_0x90fd('0x6')],transfers[_0x454201[_0x90fd('0x3')]][_0x90fd('0x29')],transfers[_0x454201['uniqueid']][_0x90fd('0x8')]));writeDB(transfers[_0x454201[_0x90fd('0x3')]],!![]);}if(agents[_0x454201[_0x90fd('0x3')]]&&agents[_0x454201[_0x90fd('0x3')]][_0x90fd('0x2e')]){agents[_0x454201[_0x90fd('0x3')]][_0x90fd('0xc')]=!![];agents[_0x454201['uniqueid']][_0x90fd('0x36')]=utils[_0x90fd('0x16')]();agents[_0x454201[_0x90fd('0x3')]][_0x90fd('0x31')]=utils['diffTime'](agents[_0x454201[_0x90fd('0x3')]][_0x90fd('0x36')],agents[_0x454201[_0x90fd('0x3')]][_0x90fd('0x2e')]);agents[_0x454201[_0x90fd('0x3')]]['reason']=agents[_0x454201['uniqueid']][_0x90fd('0x45')]?_0x90fd('0x45'):_0x90fd('0x54');agents[_0x454201[_0x90fd('0x3')]][_0x90fd('0x8')]=_0x90fd('0x37');utils['info'](util[_0x90fd('0x14')](_0x90fd('0x55'),_0x454201[_0x90fd('0x3')],agents[_0x454201[_0x90fd('0x3')]][_0x90fd('0x6')],agents[_0x454201[_0x90fd('0x3')]][_0x90fd('0x29')],agents[_0x454201[_0x90fd('0x3')]][_0x90fd('0x8')]));writeDB(agents[_0x454201['uniqueid']]);}}catch(_0x1adcc2){utils[_0x90fd('0x1a')](util[_0x90fd('0x14')](_0x90fd('0x56'),_0x454201[_0x90fd('0x3')]),_0x1adcc2);}};
\ No newline at end of file
+var _0xbaf0=['includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','talktime','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connect','answered_elsewhere','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','complete','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','transferexten','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfereruniqueid','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','hangup','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','agent','[%s][agents][hangup]','util','./utils','info','format','uniqueid','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','type','agentacw','agentcomplete','acw','acwtime','acwTimeout','request','CreateVoiceAgentReport','destuniqueid','agentcalled','agentcalledAt','now','connectedlinename','error','agentringnoanswer','isNil','debug','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','reason','holdtime','ringtime','push','forIn'];(function(_0x592d7c,_0x405966){var _0xaa8d19=function(_0x20a67a){while(--_0x20a67a){_0x592d7c['push'](_0x592d7c['shift']());}};_0xaa8d19(++_0x405966);}(_0xbaf0,0x12a));var _0x0baf=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xbaf0[_0x5ddb1c];return _0x354adc;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var utils=require(_0x0baf('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x1e212d,_0x263f79){utils[_0x0baf('0x2')](util[_0x0baf('0x3')]('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x1e212d[_0x0baf('0x4')],_0x1e212d[_0x0baf('0x5')],_0x1e212d[_0x0baf('0x6')],_0x1e212d[_0x0baf('0x7')],_0x1e212d[_0x0baf('0x8')],_0x1e212d[_0x0baf('0x9')],_0x1e212d[_0x0baf('0xa')],_0x1e212d[_0x0baf('0xb')]));if(_0x1e212d[_0x0baf('0x6')]){utils['getVoiceQueueByName'](_0x1e212d[_0x0baf('0x6')])['then'](function(_0x4605c3){if(_0x4605c3){_0x1e212d[_0x0baf('0xc')]=_0x4605c3[_0x0baf('0xc')];_0x1e212d[_0x0baf('0xd')]=_0x1e212d[_0x0baf('0xe')]?_0x4605c3[_0x0baf('0xf')]:![];_0x1e212d[_0x0baf('0x10')]=_0x1e212d[_0x0baf('0xd')]?_0x4605c3[_0x0baf('0x11')]:0x0;}utils[_0x0baf('0x12')](_0x0baf('0x13'),_0x1e212d);});}else{utils['request']('CreateVoiceAgentReport',_0x1e212d);}if(_0x263f79){delete transfers[_0x1e212d[_0x0baf('0x4')]];}else{delete agents[_0x1e212d[_0x0baf('0x14')]];}}exports[_0x0baf('0x15')]=function(_0x13df17){try{utils['debug'](util[_0x0baf('0x3')]('[%s][agents][agentcalled]',_0x13df17[_0x0baf('0x4')]),_0x13df17);agents[_0x13df17[_0x0baf('0x14')]]=_0x13df17;agents[_0x13df17[_0x0baf('0x14')]][_0x0baf('0x16')]=utils[_0x0baf('0x17')]();agents[_0x13df17[_0x0baf('0x14')]]['lastevent']='called';agents[_0x13df17[_0x0baf('0x14')]][_0x0baf('0xa')]=null;agents[_0x13df17[_0x0baf('0x14')]][_0x0baf('0x18')]=null;utils[_0x0baf('0x2')](util[_0x0baf('0x3')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x13df17[_0x0baf('0x4')],agents[_0x13df17[_0x0baf('0x14')]][_0x0baf('0x7')],_0x13df17[_0x0baf('0x14')]));}catch(_0x47070d){utils[_0x0baf('0x19')](util['format']('[%s][agents][agentcalled]',_0x13df17[_0x0baf('0x4')]),_0x47070d);}};exports[_0x0baf('0x1a')]=function(_0x32e839){try{if(!_[_0x0baf('0x1b')](agents[_0x32e839[_0x0baf('0x14')]])){utils[_0x0baf('0x1c')](util[_0x0baf('0x3')](_0x0baf('0x1d'),_0x32e839[_0x0baf('0x4')]),_0x32e839);utils[_0x0baf('0x2')](util['format'](_0x0baf('0x1e'),_0x32e839['uniqueid'],agents[_0x32e839[_0x0baf('0x14')]]['membername'],_0x32e839['destuniqueid']));agents[_0x32e839[_0x0baf('0x14')]]['agentringnoanswer']=!![];agents[_0x32e839['destuniqueid']][_0x0baf('0x1f')]=utils[_0x0baf('0x17')]();agents[_0x32e839[_0x0baf('0x14')]][_0x0baf('0xb')]=_0x0baf('0x20');agents[_0x32e839['destuniqueid']][_0x0baf('0x21')]=_0x0baf('0x20');agents[_0x32e839[_0x0baf('0x14')]][_0x0baf('0x22')]=_0x32e839[_0x0baf('0x23')]?parseInt(_0x32e839[_0x0baf('0x23')])/0x3e8:0x0;agents[_0x32e839[_0x0baf('0x14')]]['talktime']=0x0;unanswered[_0x0baf('0x24')](_0x32e839[_0x0baf('0x14')]);}}catch(_0xcaf13d){utils[_0x0baf('0x19')](util['format'](_0x0baf('0x1d'),_0x32e839[_0x0baf('0x4')]),_0xcaf13d);}};exports['queuecallerabandon']=function(_0x44ec31){try{_[_0x0baf('0x25')](agents,function(_0x478ce8,_0xb4dbb1){if(_0x478ce8[_0x0baf('0x4')]==_0x44ec31[_0x0baf('0x4')]&&!_[_0x0baf('0x26')](unanswered,_0x478ce8['destuniqueid'])){utils[_0x0baf('0x1c')](util[_0x0baf('0x3')](_0x0baf('0x27'),_0x44ec31[_0x0baf('0x4')]),_0x44ec31);utils[_0x0baf('0x2')](util[_0x0baf('0x3')](_0x0baf('0x28'),_0x44ec31[_0x0baf('0x4')],_0x478ce8[_0x0baf('0x7')],_0x478ce8[_0x0baf('0x14')]));_0x478ce8[_0x0baf('0x1a')]=!![];_0x478ce8[_0x0baf('0x1f')]=utils[_0x0baf('0x17')]();_0x478ce8[_0x0baf('0xb')]='abandoned';_0x478ce8[_0x0baf('0x21')]='abandoned';_0x478ce8[_0x0baf('0x22')]=_0x44ec31[_0x0baf('0x22')];_0x478ce8[_0x0baf('0x29')]=0x0;writeDB(_0x478ce8);}});}catch(_0x3d65f2){utils['error'](util[_0x0baf('0x3')](_0x0baf('0x27'),_0x44ec31['uniqueid']),_0x3d65f2);}};exports[_0x0baf('0x2a')]=function(_0x2447c2){try{if(agents[_0x2447c2[_0x0baf('0x14')]]){utils[_0x0baf('0x1c')](util[_0x0baf('0x3')](_0x0baf('0x2b'),_0x2447c2[_0x0baf('0x4')]),_0x2447c2);utils[_0x0baf('0x2')](util['format'](_0x0baf('0x2c'),_0x2447c2[_0x0baf('0x4')],agents[_0x2447c2['destuniqueid']][_0x0baf('0x7')],_0x2447c2['destuniqueid']));agents[_0x2447c2['destuniqueid']][_0x0baf('0x2d')]=utils[_0x0baf('0x17')]();agents[_0x2447c2['destuniqueid']]['connectedlinenum']=_0x2447c2[_0x0baf('0xa')];agents[_0x2447c2[_0x0baf('0x14')]][_0x0baf('0x18')]=_0x2447c2[_0x0baf('0x18')];agents[_0x2447c2[_0x0baf('0x14')]][_0x0baf('0x22')]=_0x2447c2[_0x0baf('0x23')];agents[_0x2447c2[_0x0baf('0x14')]][_0x0baf('0xb')]=_0x0baf('0x2e');_[_0x0baf('0x25')](agents,function(_0x148540,_0x354cb1){if(_0x148540[_0x0baf('0x14')]!=_0x2447c2['destuniqueid']&&_0x148540[_0x0baf('0x4')]==_0x2447c2[_0x0baf('0x4')]){_0x148540['talktime']=0x0;_0x148540[_0x0baf('0x22')]=_0x2447c2[_0x0baf('0x23')];_0x148540[_0x0baf('0x1a')]=!![];_0x148540[_0x0baf('0x1f')]=utils[_0x0baf('0x17')]();_0x148540[_0x0baf('0xb')]='answered_elsewhere';_0x148540[_0x0baf('0x21')]=_0x0baf('0x2f');_0x148540['answeredelsewheredestinationuniqueid']=_0x2447c2[_0x0baf('0x14')];_0x148540[_0x0baf('0x30')]=_0x2447c2[_0x0baf('0x7')];writeDB(_0x148540);}});}}catch(_0x57903e){utils['error'](util[_0x0baf('0x3')](_0x0baf('0x2b'),_0x2447c2[_0x0baf('0x4')]),_0x57903e);}};exports[_0x0baf('0xe')]=function(_0x2b6d54){try{if(!_[_0x0baf('0x1b')](agents[_0x2b6d54[_0x0baf('0x14')]])){utils[_0x0baf('0x1c')](util[_0x0baf('0x3')](_0x0baf('0x31'),_0x2b6d54['uniqueid']),_0x2b6d54);utils[_0x0baf('0x2')](util[_0x0baf('0x3')](_0x0baf('0x32'),_0x2b6d54[_0x0baf('0x4')],agents[_0x2b6d54[_0x0baf('0x14')]]['membername'],_0x2b6d54[_0x0baf('0x14')]));agents[_0x2b6d54[_0x0baf('0x14')]][_0x0baf('0xe')]=!![];agents[_0x2b6d54[_0x0baf('0x14')]][_0x0baf('0x33')]=utils['now']();agents[_0x2b6d54[_0x0baf('0x14')]][_0x0baf('0x29')]=utils[_0x0baf('0x34')](agents[_0x2b6d54[_0x0baf('0x14')]][_0x0baf('0x33')],agents[_0x2b6d54[_0x0baf('0x14')]][_0x0baf('0x2d')]);agents[_0x2b6d54['destuniqueid']][_0x0baf('0x21')]=_0x2b6d54[_0x0baf('0x21')];agents[_0x2b6d54[_0x0baf('0x14')]]['lastevent']=_0x0baf('0x35');writeDB(agents[_0x2b6d54[_0x0baf('0x14')]]);}}catch(_0x10fa62){utils[_0x0baf('0x19')](util[_0x0baf('0x3')](_0x0baf('0x31'),_0x2b6d54[_0x0baf('0x4')]),_0x10fa62);}};exports['blindtransfer']=function(_0x22c451){try{if(!_[_0x0baf('0x1b')](agents[_0x22c451[_0x0baf('0x36')]])){utils[_0x0baf('0x1c')](util[_0x0baf('0x3')](_0x0baf('0x37'),_0x22c451[_0x0baf('0x4')]),_0x22c451);utils[_0x0baf('0x2')](util[_0x0baf('0x3')](_0x0baf('0x38'),_0x22c451[_0x0baf('0x4')],agents[_0x22c451['transfereruniqueid']]['membername'],agents[_0x22c451[_0x0baf('0x36')]][_0x0baf('0x4')]));agents[_0x22c451[_0x0baf('0x36')]][_0x0baf('0x39')]=!![];agents[_0x22c451[_0x0baf('0x36')]][_0x0baf('0x3a')]=_0x0baf('0x3b');agents[_0x22c451['transfereruniqueid']][_0x0baf('0x3c')]=_0x22c451[_0x0baf('0x3d')];agents[_0x22c451[_0x0baf('0x36')]][_0x0baf('0x3e')]=agents[_0x22c451[_0x0baf('0x36')]][_0x0baf('0x4')];}}catch(_0x5e1849){utils[_0x0baf('0x19')](util['format'](_0x0baf('0x37'),_0x22c451['uniqueid']),_0x5e1849);}};exports[_0x0baf('0x3f')]=function(_0x5eaeb2){try{utils[_0x0baf('0x1c')](util['format'](_0x0baf('0x40'),_0x5eaeb2[_0x0baf('0x41')]),_0x5eaeb2);if(_0x5eaeb2[_0x0baf('0x41')]==_0x5eaeb2[_0x0baf('0x42')]){if(!_[_0x0baf('0x1b')](agents[_0x5eaeb2['secondtransfereruniqueid']])){utils[_0x0baf('0x2')](util[_0x0baf('0x3')](_0x0baf('0x43'),_0x5eaeb2[_0x0baf('0x41')],agents[_0x5eaeb2[_0x0baf('0x44')]][_0x0baf('0x7')]));agents[_0x5eaeb2['secondtransfereruniqueid']][_0x0baf('0x39')]=!![];agents[_0x5eaeb2[_0x0baf('0x44')]][_0x0baf('0x3a')]=_0x0baf('0x45');agents[_0x5eaeb2[_0x0baf('0x44')]][_0x0baf('0x3c')]=_0x5eaeb2[_0x0baf('0x46')];agents[_0x5eaeb2['secondtransfereruniqueid']]['transferuniqueid']=_0x5eaeb2[_0x0baf('0x41')];}if(_0x5eaeb2[_0x0baf('0x47')]&&agents[_0x5eaeb2[_0x0baf('0x47')]]){agents[_0x5eaeb2[_0x0baf('0x47')]][_0x0baf('0x48')]=0x1;transfers[_0x5eaeb2[_0x0baf('0x47')]]=_[_0x0baf('0x49')](agents[_0x5eaeb2[_0x0baf('0x47')]]);transfers[_0x5eaeb2[_0x0baf('0x47')]]['calleridnum']=agents[_0x5eaeb2[_0x0baf('0x44')]][_0x0baf('0x9')];transfers[_0x5eaeb2[_0x0baf('0x47')]][_0x0baf('0x4a')]=agents[_0x5eaeb2[_0x0baf('0x44')]][_0x0baf('0x4a')];transfers[_0x5eaeb2[_0x0baf('0x47')]]['agentcalledAt']=utils[_0x0baf('0x17')]();transfers[_0x5eaeb2[_0x0baf('0x47')]][_0x0baf('0x2d')]=utils[_0x0baf('0x17')]();transfers[_0x5eaeb2[_0x0baf('0x47')]][_0x0baf('0x22')]=0x0;transfers[_0x5eaeb2[_0x0baf('0x47')]][_0x0baf('0x48')]=0x2;}}else if(_0x5eaeb2['secondtransfereruniqueid']==_0x5eaeb2[_0x0baf('0x4b')]){if(!_['isNil'](agents[_0x5eaeb2[_0x0baf('0x41')]])){utils['info'](util['format'](_0x0baf('0x43'),_0x5eaeb2['origtransfereruniqueid'],agents[_0x5eaeb2[_0x0baf('0x41')]][_0x0baf('0x7')]));agents[_0x5eaeb2['origtransfereruniqueid']][_0x0baf('0x39')]=!![];agents[_0x5eaeb2[_0x0baf('0x41')]][_0x0baf('0x3a')]='ATTENDED';agents[_0x5eaeb2['origtransfereruniqueid']][_0x0baf('0x3c')]=_0x5eaeb2[_0x0baf('0x4c')];agents[_0x5eaeb2[_0x0baf('0x41')]][_0x0baf('0x3e')]=_0x5eaeb2[_0x0baf('0x44')];}if(_0x5eaeb2['transfertargetuniqueid']&&agents[_0x5eaeb2[_0x0baf('0x4d')]]){agents[_0x5eaeb2['transfertargetuniqueid']]['agententerreason']=0x1;transfers[_0x5eaeb2['transfertargetuniqueid']]=_[_0x0baf('0x49')](agents[_0x5eaeb2['transfertargetuniqueid']]);transfers[_0x5eaeb2['transfertargetuniqueid']][_0x0baf('0x9')]=agents[_0x5eaeb2[_0x0baf('0x41')]][_0x0baf('0x9')];transfers[_0x5eaeb2[_0x0baf('0x4d')]][_0x0baf('0x4a')]=agents[_0x5eaeb2[_0x0baf('0x41')]]['calleridname'];transfers[_0x5eaeb2[_0x0baf('0x4d')]][_0x0baf('0x16')]=utils[_0x0baf('0x17')]();transfers[_0x5eaeb2[_0x0baf('0x4d')]][_0x0baf('0x2d')]=utils[_0x0baf('0x17')]();transfers[_0x5eaeb2['transfertargetuniqueid']][_0x0baf('0x22')]=0x0;transfers[_0x5eaeb2[_0x0baf('0x4d')]][_0x0baf('0x48')]=0x2;}}}catch(_0x5d4053){utils[_0x0baf('0x19')](util[_0x0baf('0x3')](_0x0baf('0x40'),_0x5eaeb2[_0x0baf('0x41')]),_0x5d4053);}};exports[_0x0baf('0x4e')]=function(_0x27a959){try{utils[_0x0baf('0x1c')](util['format']('[%s][agents][hangup]',_0x27a959['uniqueid']),_0x27a959);if(agents[_0x27a959[_0x0baf('0x4')]]&&agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x21')]===_0x0baf('0x20')){if(_0x27a959[_0x0baf('0x4f')]==='21'){agents[_0x27a959[_0x0baf('0x4')]]['reason']='rejected';agents[_0x27a959[_0x0baf('0x4')]]['lastevent']=_0x0baf('0x50');}utils[_0x0baf('0x2')](util['format'](_0x0baf('0x51'),_0x27a959[_0x0baf('0x4')],agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x7')],agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x21')],agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0xb')]));writeDB(agents[_0x27a959[_0x0baf('0x4')]]);var _0x5ea0f3=unanswered['indexOf'](_0x27a959['uniqueid']);if(_0x5ea0f3>-0x1){unanswered['splice'](_0x5ea0f3,0x1);}}if(transfers[_0x27a959['uniqueid']]){transfers[_0x27a959[_0x0baf('0x4')]][_0x0baf('0xe')]=!![];transfers[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x33')]=utils['now']();transfers[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x29')]=utils['diffTime'](transfers[_0x27a959['uniqueid']][_0x0baf('0x33')],transfers[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x2d')]);transfers[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x21')]=_0x0baf('0x52');transfers[_0x27a959[_0x0baf('0x4')]][_0x0baf('0xb')]='complete';utils[_0x0baf('0x2')](util[_0x0baf('0x3')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x27a959[_0x0baf('0x4')],transfers[_0x27a959[_0x0baf('0x4')]]['membername'],transfers[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x21')],transfers[_0x27a959[_0x0baf('0x4')]][_0x0baf('0xb')]));writeDB(transfers[_0x27a959[_0x0baf('0x4')]],!![]);}if(agents[_0x27a959['uniqueid']]&&agents[_0x27a959['uniqueid']][_0x0baf('0x2d')]){agents[_0x27a959[_0x0baf('0x4')]]['agentcomplete']=!![];agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x33')]=utils[_0x0baf('0x17')]();agents[_0x27a959['uniqueid']][_0x0baf('0x29')]=utils[_0x0baf('0x34')](agents[_0x27a959[_0x0baf('0x4')]]['agentcompleteAt'],agents[_0x27a959[_0x0baf('0x4')]]['agentconnectAt']);agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x21')]=agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x39')]?_0x0baf('0x39'):'agent';agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0xb')]='complete';utils[_0x0baf('0x2')](util[_0x0baf('0x3')](_0x0baf('0x51'),_0x27a959[_0x0baf('0x4')],agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x7')],agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x21')],agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0xb')]));writeDB(agents[_0x27a959[_0x0baf('0x4')]]);}}catch(_0x2c2f09){utils['error'](util['format'](_0x0baf('0x53'),_0x27a959[_0x0baf('0x4')]),_0x2c2f09);}};
\ No newline at end of file
index 20c7663..1d6eb0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8458=['interface','calleridnum','connectedlinenum','lastevent','accountcode','getUserByInternal','then','request','CreateVoiceCallReport','newchannel','debug','format','[%s][calls][newchannel]','[%s][calls][newchannel]\x20context:%s\x20exten:%s','exten','context','DOCUMENTATION','error','newstate','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','now','linkedid','answertime','toNumber','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','endtime','duration','diffTime','starttime','billableseconds','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','origtransfererchannel','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','variable','xmd-callerid-preview','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','newexten','[%s][calls][newexten]','application','toLowerCase','set','appdata','cdr','lastIndexOf','includes','noop','execif','gotoif','lastdata','lodash','./utils','./transfers.controller','NO\x20ANSWER','FAILED','ANSWERED','BUSY','blinds','uniqueid','transfereeuniqueid','info','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername'];(function(_0x3dc7cd,_0x267795){var _0x59c631=function(_0x51fe79){while(--_0x51fe79){_0x3dc7cd['push'](_0x3dc7cd['shift']());}};_0x59c631(++_0x267795);}(_0x8458,0x1a5));var _0x8845=function(_0x3ecd46,_0x14b4de){_0x3ecd46=_0x3ecd46-0x0;var _0x287b0f=_0x8458[_0x3ecd46];return _0x287b0f;};'use strict';var _=require(_0x8845('0x0'));var util=require('util');var utils=require(_0x8845('0x1'));var transfers=require(_0x8845('0x2'));var dispositions=[_0x8845('0x3'),_0x8845('0x4'),_0x8845('0x4'),'NO\x20ANSWER',_0x8845('0x3'),_0x8845('0x3'),_0x8845('0x5'),_0x8845('0x6'),_0x8845('0x4'),'FAILED',_0x8845('0x4')];var channels={};function writeDB(_0x59d900){var _0x2a91b4;if(transfers[_0x8845('0x7')][_0x59d900[_0x8845('0x8')]]){_0x2a91b4=_0x59d900['uniqueid'];_0x59d900[_0x8845('0x8')]=transfers[_0x8845('0x7')][_0x59d900['uniqueid']][_0x8845('0x9')];}utils[_0x8845('0xa')](util['format'](_0x8845('0xb'),_0x59d900[_0x8845('0x8')],_0x59d900[_0x8845('0xc')],_0x59d900[_0x8845('0xd')],_0x59d900[_0x8845('0xe')],_0x59d900[_0x8845('0xf')],_0x59d900[_0x8845('0x10')],_0x59d900[_0x8845('0x11')],_0x59d900[_0x8845('0x12')]));if(_0x59d900[_0x8845('0x13')]){utils[_0x8845('0x14')](_0x59d900[_0x8845('0x13')])[_0x8845('0x15')](function(_0x2b9b36){if(_0x2b9b36){_0x59d900['UserId']=_0x2b9b36['id'];}utils[_0x8845('0x16')](_0x8845('0x17'),_0x59d900);});}else{utils['request'](_0x8845('0x17'),_0x59d900);}if(channels[_0x59d900[_0x8845('0x8')]]){delete channels[_0x59d900[_0x8845('0x8')]];}else if(_0x2a91b4&&channels[_0x2a91b4]){if(!transfers['blinds'][_0x2a91b4]['recording'])delete transfers['blinds'][_0x2a91b4];delete channels[_0x2a91b4];}}exports[_0x8845('0x18')]=function(_0x1164e8){try{utils[_0x8845('0x19')](util[_0x8845('0x1a')](_0x8845('0x1b'),_0x1164e8[_0x8845('0x8')]),_0x1164e8);if(_0x1164e8[_0x8845('0x8')]==_0x1164e8['linkedid']&&_0x1164e8['channel']!='OutgoingSpoolFailed'){utils[_0x8845('0xa')](util[_0x8845('0x1a')](_0x8845('0x1c'),_0x1164e8[_0x8845('0x8')],_0x1164e8['context'],_0x1164e8[_0x8845('0x1d')]));channels[_0x1164e8['uniqueid']]={'uniqueid':_0x1164e8['uniqueid'],'accountcode':_0x1164e8[_0x8845('0x13')],'source':_0x1164e8[_0x8845('0x10')],'destination':_0x1164e8['exten'],'destinationcontext':_0x1164e8[_0x8845('0x1e')],'channel':_0x1164e8[_0x8845('0xc')],'starttime':utils['now'](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x8845('0x3'),'amaflags':_0x8845('0x1f')};}}catch(_0x2b7ad7){utils[_0x8845('0x20')](util['format']('[%s][calls][newchannel]',_0x1164e8[_0x8845('0x8')]),_0x2b7ad7);}};exports[_0x8845('0x21')]=function(_0x3b4f41){try{utils[_0x8845('0x19')](util[_0x8845('0x1a')](_0x8845('0x22'),_0x3b4f41[_0x8845('0x8')]),_0x3b4f41);if(!_[_0x8845('0x23')](channels[_0x3b4f41[_0x8845('0x8')]])&&_0x3b4f41[_0x8845('0x24')]==0x6){utils[_0x8845('0xa')](util[_0x8845('0x1a')](_0x8845('0x25'),_0x3b4f41[_0x8845('0x8')],_0x3b4f41[_0x8845('0x1e')],_0x3b4f41[_0x8845('0xc')]));if(_[_0x8845('0x23')](channels[_0x3b4f41['uniqueid']]['systemanswertime'])){channels[_0x3b4f41[_0x8845('0x8')]][_0x8845('0x26')]=utils[_0x8845('0x27')]();}}else if(!_[_0x8845('0x23')](channels[_0x3b4f41[_0x8845('0x28')]])&&_0x3b4f41[_0x8845('0x24')]==0x6&&_0x3b4f41[_0x8845('0x1e')]!='transfer'){utils[_0x8845('0xa')](util[_0x8845('0x1a')]('[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x3b4f41[_0x8845('0x8')],_0x3b4f41[_0x8845('0x28')],_0x3b4f41[_0x8845('0x1e')],_0x3b4f41[_0x8845('0xc')]));channels[_0x3b4f41[_0x8845('0x28')]][_0x8845('0x13')]=_0x3b4f41[_0x8845('0x13')];channels[_0x3b4f41[_0x8845('0x28')]]['destinationchannel']=_0x3b4f41['channel'];if(_[_0x8845('0x23')](channels[_0x3b4f41[_0x8845('0x28')]]['answertime'])){channels[_0x3b4f41[_0x8845('0x28')]][_0x8845('0x29')]=utils[_0x8845('0x27')]();}channels[_0x3b4f41['linkedid']]['disposition']=dispositions[_[_0x8845('0x2a')](_0x3b4f41['channelstate'])]||_0x8845('0x5');}}catch(_0x21e581){utils[_0x8845('0x20')](util['format'](_0x8845('0x22'),_0x3b4f41[_0x8845('0x8')]),_0x21e581);}};exports[_0x8845('0x2b')]=function(_0x4d898a){try{if(!_[_0x8845('0x23')](channels[_0x4d898a['uniqueid']])){utils[_0x8845('0x19')](util[_0x8845('0x1a')](_0x8845('0x2c'),_0x4d898a[_0x8845('0x8')]),_0x4d898a);if(_[_0x8845('0x23')](channels[_0x4d898a[_0x8845('0x8')]][_0x8845('0x2d')])){channels[_0x4d898a[_0x8845('0x8')]]['callerid']=_0x4d898a[_0x8845('0x2e')]+'\x20<'+_0x4d898a['calleridnum']+'>';}utils[_0x8845('0xa')](util['format'](_0x8845('0x2f'),_0x4d898a[_0x8845('0x8')],channels[_0x4d898a['uniqueid']][_0x8845('0x2d')],_0x4d898a['cause-txt']));channels[_0x4d898a[_0x8845('0x8')]][_0x8845('0x30')]=utils[_0x8845('0x27')]();channels[_0x4d898a[_0x8845('0x8')]][_0x8845('0x31')]=utils[_0x8845('0x32')](channels[_0x4d898a[_0x8845('0x8')]][_0x8845('0x30')],channels[_0x4d898a[_0x8845('0x8')]][_0x8845('0x33')]);channels[_0x4d898a['uniqueid']][_0x8845('0x34')]=channels[_0x4d898a['uniqueid']][_0x8845('0x29')]?utils[_0x8845('0x32')](channels[_0x4d898a['uniqueid']][_0x8845('0x30')],channels[_0x4d898a[_0x8845('0x8')]][_0x8845('0x29')]):0x0;writeDB(channels[_0x4d898a['uniqueid']]);}}catch(_0x3c86e0){utils['error'](util['format'](_0x8845('0x2c'),_0x4d898a[_0x8845('0x8')]),_0x3c86e0);}};exports[_0x8845('0x35')]=function(_0x18cfa4){try{if(!_[_0x8845('0x23')](channels[_0x18cfa4[_0x8845('0x36')]])){utils['debug'](util['format'](_0x8845('0x37'),_0x18cfa4[_0x8845('0x38')]),_0x18cfa4);if(channels[_0x18cfa4[_0x8845('0x36')]][_0x8845('0xc')]==_0x18cfa4[_0x8845('0x39')]){utils[_0x8845('0xa')](util[_0x8845('0x1a')](_0x8845('0x3a'),_0x18cfa4['origtransfereruniqueid'],_0x18cfa4[_0x8845('0x36')],_0x18cfa4[_0x8845('0x3b')]));channels[_0x18cfa4[_0x8845('0x36')]]['destinationchannel']=_0x18cfa4[_0x8845('0x3b')];channels[_0x18cfa4[_0x8845('0x36')]][_0x8845('0x3c')]=_0x8845('0x3d');}else if(channels[_0x18cfa4[_0x8845('0x36')]][_0x8845('0xc')]=_0x18cfa4['transfertargetchannel']){utils['info'](util[_0x8845('0x1a')](_0x8845('0x3a'),_0x18cfa4['origtransfereruniqueid'],_0x18cfa4[_0x8845('0x36')],_0x18cfa4[_0x8845('0x3e')]));channels[_0x18cfa4[_0x8845('0x36')]]['destinationchannel']=_0x18cfa4[_0x8845('0x3e')];channels[_0x18cfa4['localtwolinkedid']]['userfield']=_0x8845('0x3d');}}}catch(_0x393edd){utils[_0x8845('0x20')](util[_0x8845('0x1a')](_0x8845('0x37'),_0x18cfa4[_0x8845('0x38')]),_0x393edd);}};exports['musiconholdstart']=function(_0x16c9ce){try{if(!_['isNil'](channels[_0x16c9ce[_0x8845('0x8')]])){utils[_0x8845('0x19')](util[_0x8845('0x1a')](_0x8845('0x3f'),_0x16c9ce['uniqueid']),_0x16c9ce);channels[_0x16c9ce[_0x8845('0x8')]][_0x8845('0x40')]=utils[_0x8845('0x27')]();utils[_0x8845('0xa')](util[_0x8845('0x1a')](_0x8845('0x41'),_0x16c9ce[_0x8845('0x8')],channels[_0x16c9ce['uniqueid']][_0x8845('0x40')]));}}catch(_0x25485d){utils[_0x8845('0x20')](util[_0x8845('0x1a')](_0x8845('0x3f'),_0x16c9ce['uniqueid']),_0x25485d);}};exports[_0x8845('0x42')]=function(_0x2ff993){try{if(!_[_0x8845('0x23')](channels[_0x2ff993['uniqueid']])){utils[_0x8845('0x19')](util[_0x8845('0x1a')](_0x8845('0x43'),_0x2ff993[_0x8845('0x8')]),_0x2ff993);if(!_[_0x8845('0x23')](channels[_0x2ff993[_0x8845('0x8')]]['musiconholdstartAt'])){channels[_0x2ff993['uniqueid']][_0x8845('0x44')]+=utils[_0x8845('0x32')](utils['now'](),channels[_0x2ff993[_0x8845('0x8')]][_0x8845('0x40')]);utils[_0x8845('0xa')](util['format'](_0x8845('0x45'),_0x2ff993[_0x8845('0x8')],channels[_0x2ff993[_0x8845('0x8')]]['mohtime']));delete channels[_0x2ff993['uniqueid']][_0x8845('0x40')];}}}catch(_0x39f94b){utils[_0x8845('0x20')](util[_0x8845('0x1a')]('[%s][calls][musiconholdstop]',_0x2ff993['uniqueid']),_0x39f94b);}};exports[_0x8845('0x46')]=function(_0x208fce){try{if(!_[_0x8845('0x23')](channels[_0x208fce[_0x8845('0x8')]])){utils[_0x8845('0x19')](util[_0x8845('0x1a')](_0x8845('0x47'),_0x208fce['uniqueid']),_0x208fce);if(!_[_0x8845('0x23')](_0x208fce['variable'][_0x8845('0x48')])){utils['info'](util[_0x8845('0x1a')](_0x8845('0x49'),_0x208fce[_0x8845('0x8')],_0x208fce[_0x8845('0x4a')]));channels[_0x208fce[_0x8845('0x8')]][_0x8845('0x4b')]=_0x208fce[_0x8845('0x4a')];}if(!_[_0x8845('0x23')](_0x208fce['variable'][_0x8845('0x4c')])){utils[_0x8845('0xa')](util[_0x8845('0x1a')](_0x8845('0x4d'),_0x208fce['uniqueid'],_0x208fce[_0x8845('0x4a')]));channels[_0x208fce['uniqueid']][_0x8845('0x4e')]=_0x208fce[_0x8845('0x4a')];channels[_0x208fce[_0x8845('0x8')]]['callerid']='\x22'+_0x208fce[_0x8845('0x4a')]+_0x8845('0x4f')+_0x208fce[_0x8845('0x4a')]+'>';}if(!_[_0x8845('0x23')](_0x208fce[_0x8845('0x50')][_0x8845('0x51')])||!_['isNil'](_0x208fce[_0x8845('0x50')]['xmd-callerid'])){utils[_0x8845('0xa')](util['format'](_0x8845('0x52'),_0x208fce[_0x8845('0x8')],!_[_0x8845('0x23')](_0x208fce[_0x8845('0x50')][_0x8845('0x51')])?_0x8845('0x51'):'xmd-callerid',_0x208fce[_0x8845('0x4a')]));channels[_0x208fce[_0x8845('0x8')]][_0x8845('0x2d')]=_0x208fce[_0x8845('0x4a')];}if(!_['isNil'](_0x208fce[_0x8845('0x50')][_0x8845('0x53')])||!_[_0x8845('0x23')](_0x208fce[_0x8845('0x50')][_0x8845('0x54')])){utils[_0x8845('0xa')](util[_0x8845('0x1a')](_0x8845('0x52'),_0x208fce[_0x8845('0x8')],!_[_0x8845('0x23')](_0x208fce[_0x8845('0x50')]['xmd-queue'])?_0x8845('0x53'):_0x8845('0x54'),_0x208fce['value']));channels[_0x208fce[_0x8845('0x8')]][_0x8845('0x55')]=_0x8845('0x56');channels[_0x208fce[_0x8845('0x8')]]['lastdata']=_0x208fce[_0x8845('0x4a')];channels[_0x208fce[_0x8845('0x8')]][_0x8845('0xd')]=!![];}if(!_[_0x8845('0x23')](_0x208fce[_0x8845('0x50')][_0x8845('0x57')])){utils['info'](util[_0x8845('0x1a')](_0x8845('0x58'),_0x208fce[_0x8845('0x8')],_0x208fce[_0x8845('0x4a')]));channels[_0x208fce[_0x8845('0x8')]][_0x8845('0x59')]=_0x208fce['value'];}if(!_['isNil'](_0x208fce['variable'][_0x8845('0x5a')])){utils[_0x8845('0xa')](util[_0x8845('0x1a')](_0x8845('0x5b'),_0x208fce['uniqueid'],_0x208fce[_0x8845('0x4a')]));channels[_0x208fce[_0x8845('0x8')]][_0x8845('0x5c')]=_0x208fce[_0x8845('0x4a')];}if(!_[_0x8845('0x23')](_0x208fce['variable']['outboundrouteid'])){utils[_0x8845('0xa')](util[_0x8845('0x1a')](_0x8845('0x5d'),_0x208fce['uniqueid'],_0x208fce[_0x8845('0x4a')]));channels[_0x208fce[_0x8845('0x8')]][_0x8845('0x5e')]=_0x208fce[_0x8845('0x4a')];}if(!_['isNil'](_0x208fce[_0x8845('0x50')][_0x8845('0x5f')])){utils['info'](util[_0x8845('0x1a')]('[%s][calls][varset]\x20variable:sipcallid\x20value:%s',_0x208fce[_0x8845('0x8')],_0x208fce[_0x8845('0x4a')]));channels[_0x208fce['uniqueid']][_0x8845('0x5f')]=_0x208fce['value'];}}}catch(_0x13159b){utils[_0x8845('0x20')](util['format'](_0x8845('0x47'),_0x208fce['uniqueid']),_0x13159b);}};exports[_0x8845('0x60')]=function(_0x399635){try{if(!_[_0x8845('0x23')](channels[_0x399635[_0x8845('0x8')]])){utils[_0x8845('0x19')](util['format'](_0x8845('0x61'),_0x399635['uniqueid']),_0x399635);utils[_0x8845('0xa')](util[_0x8845('0x1a')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x399635[_0x8845('0x8')],_0x399635[_0x8845('0x62')],_0x399635['appdata']));if(_0x399635[_0x8845('0x62')][_0x8845('0x63')]()==_0x8845('0x64')&&_['startsWith'](_0x399635[_0x8845('0x65')][_0x8845('0x63')](),_0x8845('0x66'))){var _0x51488b=_0x399635['appdata']['split']('=');var _0x107ce1=_0x51488b[0x0]['substring'](_0x51488b[0x0][_0x8845('0x67')]('(')+0x1,_0x51488b[0x0][_0x8845('0x67')](')'));var _0xb6aac2=_0x51488b[0x1];channels[_0x399635[_0x8845('0x8')]][_0x107ce1]=_0xb6aac2;}if(!_[_0x8845('0x68')]([_0x8845('0x2b'),_0x8845('0x69'),_0x8845('0x6a'),_0x8845('0x64'),_0x8845('0x6b')],_0x399635[_0x8845('0x62')][_0x8845('0x63')]())){channels[_0x399635[_0x8845('0x8')]]['lastapplication']=_0x399635[_0x8845('0x62')];channels[_0x399635[_0x8845('0x8')]][_0x8845('0x6c')]=_0x399635[_0x8845('0x65')];}}}catch(_0x4aa591){utils['error'](util[_0x8845('0x1a')](_0x8845('0x61'),_0x399635[_0x8845('0x8')]),_0x4aa591);}};
\ No newline at end of file
+var _0xbd66=['lodash','util','./utils','NO\x20ANSWER','FAILED','ANSWERED','BUSY','blinds','uniqueid','transfereeuniqueid','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','connectedlinenum','lastevent','accountcode','getUserByInternal','then','request','CreateVoiceCallReport','newchannel','debug','format','[%s][calls][newchannel]','OutgoingSpoolFailed','info','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','calleridnum','exten','now','DOCUMENTATION','newstate','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','linkedid','destinationchannel','answertime','disposition','toNumber','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','billableseconds','error','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]\x20mohtime:%s','mohtime','[%s][calls][musiconholdstop]','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','source','value','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','xmcs-queue','[%s][calls][varset]\x20variable:%s\x20value:%s','Queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','cdr','split','includes','noop','execif','gotoif','lastdata'];(function(_0x3af40b,_0x55323b){var _0x64bf5d=function(_0x1e847d){while(--_0x1e847d){_0x3af40b['push'](_0x3af40b['shift']());}};_0x64bf5d(++_0x55323b);}(_0xbd66,0xe6));var _0x6bd6=function(_0xbb9c9a,_0xbbd357){_0xbb9c9a=_0xbb9c9a-0x0;var _0xc28341=_0xbd66[_0xbb9c9a];return _0xc28341;};'use strict';var _=require(_0x6bd6('0x0'));var util=require(_0x6bd6('0x1'));var utils=require(_0x6bd6('0x2'));var transfers=require('./transfers.controller');var dispositions=[_0x6bd6('0x3'),_0x6bd6('0x4'),'FAILED',_0x6bd6('0x3'),_0x6bd6('0x3'),'NO\x20ANSWER',_0x6bd6('0x5'),_0x6bd6('0x6'),'FAILED',_0x6bd6('0x4'),_0x6bd6('0x4')];var channels={};function writeDB(_0x332491){var _0x1007f6;if(transfers[_0x6bd6('0x7')][_0x332491[_0x6bd6('0x8')]]){_0x1007f6=_0x332491['uniqueid'];_0x332491[_0x6bd6('0x8')]=transfers['blinds'][_0x332491[_0x6bd6('0x8')]][_0x6bd6('0x9')];}utils['info'](util['format'](_0x6bd6('0xa'),_0x332491[_0x6bd6('0x8')],_0x332491[_0x6bd6('0xb')],_0x332491[_0x6bd6('0xc')],_0x332491[_0x6bd6('0xd')],_0x332491[_0x6bd6('0xe')],_0x332491['calleridnum'],_0x332491[_0x6bd6('0xf')],_0x332491[_0x6bd6('0x10')]));if(_0x332491[_0x6bd6('0x11')]){utils[_0x6bd6('0x12')](_0x332491['accountcode'])[_0x6bd6('0x13')](function(_0x34b101){if(_0x34b101){_0x332491['UserId']=_0x34b101['id'];}utils[_0x6bd6('0x14')]('CreateVoiceCallReport',_0x332491);});}else{utils[_0x6bd6('0x14')](_0x6bd6('0x15'),_0x332491);}if(channels[_0x332491[_0x6bd6('0x8')]]){delete channels[_0x332491[_0x6bd6('0x8')]];}else if(_0x1007f6&&channels[_0x1007f6]){delete transfers[_0x6bd6('0x7')][_0x1007f6];delete channels[_0x1007f6];}}exports[_0x6bd6('0x16')]=function(_0x54ad64){try{utils[_0x6bd6('0x17')](util[_0x6bd6('0x18')](_0x6bd6('0x19'),_0x54ad64[_0x6bd6('0x8')]),_0x54ad64);if(_0x54ad64['uniqueid']==_0x54ad64['linkedid']&&_0x54ad64['channel']!=_0x6bd6('0x1a')){utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x1c'),_0x54ad64['uniqueid'],_0x54ad64[_0x6bd6('0x1d')],_0x54ad64['exten']));channels[_0x54ad64[_0x6bd6('0x8')]]={'uniqueid':_0x54ad64[_0x6bd6('0x8')],'accountcode':_0x54ad64[_0x6bd6('0x11')],'source':_0x54ad64[_0x6bd6('0x1e')],'destination':_0x54ad64[_0x6bd6('0x1f')],'destinationcontext':_0x54ad64['context'],'channel':_0x54ad64[_0x6bd6('0xb')],'starttime':utils[_0x6bd6('0x20')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x6bd6('0x3'),'amaflags':_0x6bd6('0x21')};}}catch(_0x29a535){utils['error'](util[_0x6bd6('0x18')](_0x6bd6('0x19'),_0x54ad64[_0x6bd6('0x8')]),_0x29a535);}};exports[_0x6bd6('0x22')]=function(_0x4aaacc){try{utils[_0x6bd6('0x17')](util[_0x6bd6('0x18')](_0x6bd6('0x23'),_0x4aaacc['uniqueid']),_0x4aaacc);if(!_[_0x6bd6('0x24')](channels[_0x4aaacc['uniqueid']])&&_0x4aaacc[_0x6bd6('0x25')]==0x6){utils['info'](util[_0x6bd6('0x18')](_0x6bd6('0x26'),_0x4aaacc[_0x6bd6('0x8')],_0x4aaacc[_0x6bd6('0x1d')],_0x4aaacc['channel']));if(_[_0x6bd6('0x24')](channels[_0x4aaacc[_0x6bd6('0x8')]][_0x6bd6('0x27')])){channels[_0x4aaacc[_0x6bd6('0x8')]][_0x6bd6('0x27')]=utils[_0x6bd6('0x20')]();}}else if(!_[_0x6bd6('0x24')](channels[_0x4aaacc['linkedid']])&&_0x4aaacc[_0x6bd6('0x25')]==0x6&&_0x4aaacc[_0x6bd6('0x1d')]!=_0x6bd6('0x28')){utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x29'),_0x4aaacc[_0x6bd6('0x8')],_0x4aaacc['linkedid'],_0x4aaacc['context'],_0x4aaacc[_0x6bd6('0xb')]));channels[_0x4aaacc[_0x6bd6('0x2a')]][_0x6bd6('0x11')]=_0x4aaacc[_0x6bd6('0x11')];channels[_0x4aaacc[_0x6bd6('0x2a')]][_0x6bd6('0x2b')]=_0x4aaacc[_0x6bd6('0xb')];if(_[_0x6bd6('0x24')](channels[_0x4aaacc[_0x6bd6('0x2a')]][_0x6bd6('0x2c')])){channels[_0x4aaacc['linkedid']][_0x6bd6('0x2c')]=utils['now']();}channels[_0x4aaacc[_0x6bd6('0x2a')]][_0x6bd6('0x2d')]=dispositions[_[_0x6bd6('0x2e')](_0x4aaacc[_0x6bd6('0x25')])]||_0x6bd6('0x5');}}catch(_0x14a53f){utils['error'](util[_0x6bd6('0x18')](_0x6bd6('0x23'),_0x4aaacc['uniqueid']),_0x14a53f);}};exports[_0x6bd6('0x2f')]=function(_0x37a53d){try{if(!_[_0x6bd6('0x24')](channels[_0x37a53d[_0x6bd6('0x8')]])){utils[_0x6bd6('0x17')](util[_0x6bd6('0x18')](_0x6bd6('0x30'),_0x37a53d[_0x6bd6('0x8')]),_0x37a53d);if(_['isNil'](channels[_0x37a53d['uniqueid']][_0x6bd6('0x31')])){channels[_0x37a53d[_0x6bd6('0x8')]][_0x6bd6('0x31')]=_0x37a53d[_0x6bd6('0x32')]+'\x20<'+_0x37a53d[_0x6bd6('0x1e')]+'>';}utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x33'),_0x37a53d[_0x6bd6('0x8')],channels[_0x37a53d[_0x6bd6('0x8')]]['callerid'],_0x37a53d[_0x6bd6('0x34')]));channels[_0x37a53d[_0x6bd6('0x8')]][_0x6bd6('0x35')]=utils[_0x6bd6('0x20')]();channels[_0x37a53d[_0x6bd6('0x8')]][_0x6bd6('0x36')]=utils[_0x6bd6('0x37')](channels[_0x37a53d[_0x6bd6('0x8')]][_0x6bd6('0x35')],channels[_0x37a53d[_0x6bd6('0x8')]]['starttime']);channels[_0x37a53d[_0x6bd6('0x8')]][_0x6bd6('0x38')]=channels[_0x37a53d[_0x6bd6('0x8')]][_0x6bd6('0x2c')]?utils['diffTime'](channels[_0x37a53d['uniqueid']][_0x6bd6('0x35')],channels[_0x37a53d[_0x6bd6('0x8')]]['answertime']):0x0;writeDB(channels[_0x37a53d[_0x6bd6('0x8')]]);}}catch(_0x1c4a63){utils[_0x6bd6('0x39')](util[_0x6bd6('0x18')]('[%s][calls][hangup]',_0x37a53d[_0x6bd6('0x8')]),_0x1c4a63);}};exports[_0x6bd6('0x3a')]=function(_0x309835){try{if(!_[_0x6bd6('0x24')](channels[_0x309835[_0x6bd6('0x3b')]])){utils[_0x6bd6('0x17')](util[_0x6bd6('0x18')](_0x6bd6('0x3c'),_0x309835[_0x6bd6('0x3d')]),_0x309835);if(channels[_0x309835['localtwolinkedid']][_0x6bd6('0xb')]==_0x309835[_0x6bd6('0x3e')]){utils[_0x6bd6('0x1b')](util['format'](_0x6bd6('0x3f'),_0x309835[_0x6bd6('0x3d')],_0x309835[_0x6bd6('0x3b')],_0x309835[_0x6bd6('0x40')]));channels[_0x309835['localtwolinkedid']]['destinationchannel']=_0x309835[_0x6bd6('0x40')];channels[_0x309835[_0x6bd6('0x3b')]][_0x6bd6('0x41')]=_0x6bd6('0x42');}else if(channels[_0x309835[_0x6bd6('0x3b')]][_0x6bd6('0xb')]=_0x309835[_0x6bd6('0x43')]){utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x3f'),_0x309835[_0x6bd6('0x3d')],_0x309835[_0x6bd6('0x3b')],_0x309835['origtransfererchannel']));channels[_0x309835[_0x6bd6('0x3b')]]['destinationchannel']=_0x309835[_0x6bd6('0x44')];channels[_0x309835['localtwolinkedid']][_0x6bd6('0x41')]=_0x6bd6('0x42');}}}catch(_0x2f2f0a){utils[_0x6bd6('0x39')](util[_0x6bd6('0x18')](_0x6bd6('0x3c'),_0x309835[_0x6bd6('0x3d')]),_0x2f2f0a);}};exports[_0x6bd6('0x45')]=function(_0x18d2b8){try{if(!_[_0x6bd6('0x24')](channels[_0x18d2b8[_0x6bd6('0x8')]])){utils[_0x6bd6('0x17')](util[_0x6bd6('0x18')](_0x6bd6('0x46'),_0x18d2b8[_0x6bd6('0x8')]),_0x18d2b8);channels[_0x18d2b8[_0x6bd6('0x8')]][_0x6bd6('0x47')]=utils['now']();utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x48'),_0x18d2b8[_0x6bd6('0x8')],channels[_0x18d2b8[_0x6bd6('0x8')]][_0x6bd6('0x47')]));}}catch(_0x7b5c7c){utils[_0x6bd6('0x39')](util[_0x6bd6('0x18')](_0x6bd6('0x46'),_0x18d2b8['uniqueid']),_0x7b5c7c);}};exports[_0x6bd6('0x49')]=function(_0x12df35){try{if(!_[_0x6bd6('0x24')](channels[_0x12df35['uniqueid']])){utils['debug'](util['format']('[%s][calls][musiconholdstop]',_0x12df35[_0x6bd6('0x8')]),_0x12df35);if(!_['isNil'](channels[_0x12df35['uniqueid']][_0x6bd6('0x47')])){channels[_0x12df35[_0x6bd6('0x8')]]['mohtime']+=utils[_0x6bd6('0x37')](utils[_0x6bd6('0x20')](),channels[_0x12df35[_0x6bd6('0x8')]]['musiconholdstartAt']);utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x4a'),_0x12df35[_0x6bd6('0x8')],channels[_0x12df35[_0x6bd6('0x8')]][_0x6bd6('0x4b')]));delete channels[_0x12df35['uniqueid']]['musiconholdstartAt'];}}}catch(_0x332d74){utils[_0x6bd6('0x39')](util[_0x6bd6('0x18')](_0x6bd6('0x4c'),_0x12df35[_0x6bd6('0x8')]),_0x332d74);}};exports[_0x6bd6('0x4d')]=function(_0x5ce7c9){try{if(!_['isNil'](channels[_0x5ce7c9[_0x6bd6('0x8')]])){utils[_0x6bd6('0x17')](util['format'](_0x6bd6('0x4e'),_0x5ce7c9[_0x6bd6('0x8')]),_0x5ce7c9);if(!_[_0x6bd6('0x24')](_0x5ce7c9[_0x6bd6('0x4f')][_0x6bd6('0x50')])){utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')]('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x5ce7c9[_0x6bd6('0x8')],_0x5ce7c9['value']));channels[_0x5ce7c9[_0x6bd6('0x8')]][_0x6bd6('0x51')]=_0x5ce7c9[_0x6bd6('0x52')];}if(!_[_0x6bd6('0x24')](_0x5ce7c9[_0x6bd6('0x4f')][_0x6bd6('0x53')])){utils['info'](util[_0x6bd6('0x18')](_0x6bd6('0x54'),_0x5ce7c9[_0x6bd6('0x8')],_0x5ce7c9[_0x6bd6('0x52')]));channels[_0x5ce7c9[_0x6bd6('0x8')]][_0x6bd6('0x55')]=_0x5ce7c9[_0x6bd6('0x52')];channels[_0x5ce7c9[_0x6bd6('0x8')]]['callerid']='\x22'+_0x5ce7c9[_0x6bd6('0x52')]+_0x6bd6('0x56')+_0x5ce7c9[_0x6bd6('0x52')]+'>';}if(!_['isNil'](_0x5ce7c9[_0x6bd6('0x4f')][_0x6bd6('0x57')])||!_[_0x6bd6('0x24')](_0x5ce7c9['variable'][_0x6bd6('0x58')])){utils['info'](util[_0x6bd6('0x18')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x5ce7c9[_0x6bd6('0x8')],!_[_0x6bd6('0x24')](_0x5ce7c9[_0x6bd6('0x4f')][_0x6bd6('0x57')])?_0x6bd6('0x57'):_0x6bd6('0x58'),_0x5ce7c9[_0x6bd6('0x52')]));channels[_0x5ce7c9[_0x6bd6('0x8')]]['callerid']=_0x5ce7c9[_0x6bd6('0x52')];}if(!_[_0x6bd6('0x24')](_0x5ce7c9[_0x6bd6('0x4f')]['xmd-queue'])||!_[_0x6bd6('0x24')](_0x5ce7c9[_0x6bd6('0x4f')][_0x6bd6('0x59')])){utils[_0x6bd6('0x1b')](util['format'](_0x6bd6('0x5a'),_0x5ce7c9['uniqueid'],!_[_0x6bd6('0x24')](_0x5ce7c9['variable']['xmd-queue'])?'xmd-queue':'xmcs-queue',_0x5ce7c9[_0x6bd6('0x52')]));channels[_0x5ce7c9[_0x6bd6('0x8')]]['lastapplication']=_0x6bd6('0x5b');channels[_0x5ce7c9['uniqueid']]['lastdata']=_0x5ce7c9[_0x6bd6('0x52')];channels[_0x5ce7c9[_0x6bd6('0x8')]][_0x6bd6('0xc')]=!![];}if(!_[_0x6bd6('0x24')](_0x5ce7c9[_0x6bd6('0x4f')][_0x6bd6('0x5c')])){utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x5d'),_0x5ce7c9['uniqueid'],_0x5ce7c9[_0x6bd6('0x52')]));channels[_0x5ce7c9[_0x6bd6('0x8')]][_0x6bd6('0x5e')]=_0x5ce7c9[_0x6bd6('0x52')];}if(!_['isNil'](_0x5ce7c9['variable'][_0x6bd6('0x5f')])){utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x60'),_0x5ce7c9[_0x6bd6('0x8')],_0x5ce7c9[_0x6bd6('0x52')]));channels[_0x5ce7c9[_0x6bd6('0x8')]][_0x6bd6('0x61')]=_0x5ce7c9['value'];}if(!_[_0x6bd6('0x24')](_0x5ce7c9[_0x6bd6('0x4f')][_0x6bd6('0x62')])){utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x63'),_0x5ce7c9[_0x6bd6('0x8')],_0x5ce7c9[_0x6bd6('0x52')]));channels[_0x5ce7c9['uniqueid']][_0x6bd6('0x64')]=_0x5ce7c9[_0x6bd6('0x52')];}if(!_[_0x6bd6('0x24')](_0x5ce7c9[_0x6bd6('0x4f')]['sipcallid'])){utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')]('[%s][calls][varset]\x20variable:sipcallid\x20value:%s',_0x5ce7c9[_0x6bd6('0x8')],_0x5ce7c9[_0x6bd6('0x52')]));channels[_0x5ce7c9[_0x6bd6('0x8')]]['sipcallid']=_0x5ce7c9['value'];}}}catch(_0x431fcf){utils[_0x6bd6('0x39')](util[_0x6bd6('0x18')](_0x6bd6('0x4e'),_0x5ce7c9['uniqueid']),_0x431fcf);}};exports[_0x6bd6('0x65')]=function(_0x5a2e9c){try{if(!_[_0x6bd6('0x24')](channels[_0x5a2e9c[_0x6bd6('0x8')]])){utils['debug'](util[_0x6bd6('0x18')](_0x6bd6('0x66'),_0x5a2e9c[_0x6bd6('0x8')]),_0x5a2e9c);utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x67'),_0x5a2e9c[_0x6bd6('0x8')],_0x5a2e9c[_0x6bd6('0x68')],_0x5a2e9c[_0x6bd6('0x69')]));if(_0x5a2e9c['application'][_0x6bd6('0x6a')]()==_0x6bd6('0x6b')&&_['startsWith'](_0x5a2e9c[_0x6bd6('0x69')]['toLowerCase'](),_0x6bd6('0x6c'))){var _0x32ad28=_0x5a2e9c[_0x6bd6('0x69')][_0x6bd6('0x6d')]('=');var _0x2c7764=_0x32ad28[0x0]['substring'](_0x32ad28[0x0]['lastIndexOf']('(')+0x1,_0x32ad28[0x0]['lastIndexOf'](')'));var _0x12c021=_0x32ad28[0x1];channels[_0x5a2e9c[_0x6bd6('0x8')]][_0x2c7764]=_0x12c021;}if(!_[_0x6bd6('0x6e')]([_0x6bd6('0x2f'),_0x6bd6('0x6f'),_0x6bd6('0x70'),'set',_0x6bd6('0x71')],_0x5a2e9c[_0x6bd6('0x68')][_0x6bd6('0x6a')]())){channels[_0x5a2e9c[_0x6bd6('0x8')]]['lastapplication']=_0x5a2e9c[_0x6bd6('0x68')];channels[_0x5a2e9c['uniqueid']][_0x6bd6('0x72')]=_0x5a2e9c[_0x6bd6('0x69')];}}}catch(_0x20dd8b){utils['error'](util[_0x6bd6('0x18')](_0x6bd6('0x66'),_0x5a2e9c['uniqueid']),_0x20dd8b);}};
\ No newline at end of file
index 406b9b7..684d290 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf95c=['shutdown','info','[core]\x20shutdown','fullybooted','[core]\x20fullybooted','[core]\x20error','close','[core]\x20close','managerevent','./utils','connect','[core]\x20connected'];(function(_0x2af89c,_0x1dadeb){var _0x4b5333=function(_0xb0c69f){while(--_0xb0c69f){_0x2af89c['push'](_0x2af89c['shift']());}};_0x4b5333(++_0x1dadeb);}(_0xf95c,0x1e9));var _0xcf95=function(_0x44f2aa,_0x2e6170){_0x44f2aa=_0x44f2aa-0x0;var _0x27903d=_0xf95c[_0x44f2aa];return _0x27903d;};'use strict';var utils=require(_0xcf95('0x0'));exports[_0xcf95('0x1')]=function(){utils['info'](_0xcf95('0x2'));};exports[_0xcf95('0x3')]=function(){utils[_0xcf95('0x4')](_0xcf95('0x5'));};exports[_0xcf95('0x6')]=function(){utils[_0xcf95('0x4')](_0xcf95('0x7'));};exports['error']=function(_0x3cec19){utils['error'](_0xcf95('0x8'),_0x3cec19);};exports[_0xcf95('0x9')]=function(){utils['info'](_0xcf95('0xa'));};exports[_0xcf95('0xb')]=function(_0x34739a){};
\ No newline at end of file
+var _0x3879=['close','managerevent','./utils','connect','info','[core]\x20connected','error','[core]\x20error'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x3879,0x1aa));var _0x9387=function(_0x269aa1,_0x23813a){_0x269aa1=_0x269aa1-0x0;var _0x202737=_0x3879[_0x269aa1];return _0x202737;};'use strict';var utils=require(_0x9387('0x0'));exports[_0x9387('0x1')]=function(){utils[_0x9387('0x2')](_0x9387('0x3'));};exports['shutdown']=function(){utils[_0x9387('0x2')]('[core]\x20shutdown');};exports['fullybooted']=function(){utils[_0x9387('0x2')]('[core]\x20fullybooted');};exports[_0x9387('0x4')]=function(_0x2f484a){utils['error'](_0x9387('0x5'),_0x2f484a);};exports[_0x9387('0x6')]=function(){utils[_0x9387('0x2')]('[core]\x20close');};exports[_0x9387('0x7')]=function(_0x5a4396){};
\ No newline at end of file
index b146b25..e2e75ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42cd=['debug','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','appdata','application','toLowerCase','startsWith','cdr(routeid)','error','varset','[%s][dials][varset]','isNil','outboundrouteid','info','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','[%s][dials][dialbegin]','assign','starttime','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','ANSWER','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','[%s][dials][dialend]','[%s][dials][hangup]','calleridnum','cause-txt','complete','duration','diffTime','endtime','answertime','billableseconds','lodash','util','./utils','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','connectedlinenum','dialstatus','request','CreateVoiceDialReport','newexten'];(function(_0x2e4bde,_0x529a7c){var _0x5418b6=function(_0x4d0775){while(--_0x4d0775){_0x2e4bde['push'](_0x2e4bde['shift']());}};_0x5418b6(++_0x529a7c);}(_0x42cd,0x1e7));var _0xd42c=function(_0x219e9b,_0x295d91){_0x219e9b=_0x219e9b-0x0;var _0x332e80=_0x42cd[_0x219e9b];return _0x332e80;};'use strict';var _=require(_0xd42c('0x0'));var util=require(_0xd42c('0x1'));var utils=require(_0xd42c('0x2'));var dials={};function writeDB(_0x595cf0){utils['info'](util[_0xd42c('0x3')](_0xd42c('0x4'),_0x595cf0[_0xd42c('0x5')],_0x595cf0[_0xd42c('0x6')],_0x595cf0[_0xd42c('0x7')],_0x595cf0['calleridnum'],_0x595cf0[_0xd42c('0x8')],_0x595cf0[_0xd42c('0x9')]));utils[_0xd42c('0xa')](_0xd42c('0xb'),_0x595cf0);delete dials[_0x595cf0[_0xd42c('0x5')]];}exports[_0xd42c('0xc')]=function(_0x11eec9){try{utils[_0xd42c('0xd')](util[_0xd42c('0x3')](_0xd42c('0xe'),_0x11eec9['uniqueid']),_0x11eec9);utils['info'](util['format'](_0xd42c('0xf'),_0x11eec9[_0xd42c('0x5')],_0x11eec9['application'],_0x11eec9[_0xd42c('0x10')]));if(_0x11eec9[_0xd42c('0x11')][_0xd42c('0x12')]()=='set'&&_[_0xd42c('0x13')](_0x11eec9[_0xd42c('0x10')][_0xd42c('0x12')](),_0xd42c('0x14'))){var _0x5ef841=_0x11eec9[_0xd42c('0x10')]['split']('=');dials[_0x11eec9[_0xd42c('0x5')]]={'routeId':_0x5ef841[0x1]};}}catch(_0x4c6de2){utils[_0xd42c('0x15')](util[_0xd42c('0x3')](_0xd42c('0xe'),_0x11eec9[_0xd42c('0x5')]),_0x4c6de2);}};exports[_0xd42c('0x16')]=function(_0x18e9e7){try{utils[_0xd42c('0xd')](util[_0xd42c('0x3')](_0xd42c('0x17'),_0x18e9e7['uniqueid']),_0x18e9e7);if(!_[_0xd42c('0x18')](_0x18e9e7['variable'][_0xd42c('0x19')])){utils[_0xd42c('0x1a')](util[_0xd42c('0x3')](_0xd42c('0x1b'),_0x18e9e7[_0xd42c('0x5')],_0x18e9e7[_0xd42c('0x1c')]));dials[_0x18e9e7[_0xd42c('0x5')]]={'routeId':_0x18e9e7[_0xd42c('0x1c')]};}}catch(_0x22d77e){utils[_0xd42c('0x15')](util[_0xd42c('0x3')](_0xd42c('0x17'),_0x18e9e7['uniqueid']),_0x22d77e);}};exports['dialbegin']=function(_0x27b831){try{if(!_[_0xd42c('0x18')](dials[_0x27b831['uniqueid']])){utils[_0xd42c('0xd')](util[_0xd42c('0x3')](_0xd42c('0x1d'),_0x27b831[_0xd42c('0x5')]),_0x27b831);dials[_0x27b831['uniqueid']]=_[_0xd42c('0x1e')](dials[_0x27b831[_0xd42c('0x5')]],_0x27b831);dials[_0x27b831[_0xd42c('0x5')]][_0xd42c('0x1f')]=utils[_0xd42c('0x20')]();dials[_0x27b831[_0xd42c('0x5')]][_0xd42c('0x21')]=_0xd42c('0x22');utils[_0xd42c('0x1a')](util[_0xd42c('0x3')](_0xd42c('0x23'),_0x27b831['uniqueid'],dials[_0x27b831['uniqueid']]['starttime']));}}catch(_0x2bdc46){utils[_0xd42c('0x15')](util[_0xd42c('0x3')](_0xd42c('0x1d'),_0x27b831[_0xd42c('0x5')]),_0x2bdc46);}};exports['dialend']=function(_0x3d660f){try{if(!_[_0xd42c('0x18')](dials[_0x3d660f[_0xd42c('0x5')]])){utils[_0xd42c('0xd')](util['format']('[%s][dials][dialend]',_0x3d660f[_0xd42c('0x5')]),_0x3d660f);dials[_0x3d660f[_0xd42c('0x5')]][_0xd42c('0x9')]=_0x3d660f['dialstatus'];if(_0x3d660f['dialstatus']==_0xd42c('0x24')){dials[_0x3d660f['uniqueid']]=_[_0xd42c('0x1e')](dials[_0x3d660f['uniqueid']],_0x3d660f);dials[_0x3d660f[_0xd42c('0x5')]]['answertime']=utils['now']();dials[_0x3d660f[_0xd42c('0x5')]][_0xd42c('0x21')]=_0xd42c('0x25');utils['info'](util[_0xd42c('0x3')](_0xd42c('0x26'),_0x3d660f[_0xd42c('0x5')],_0x3d660f[_0xd42c('0x9')],dials[_0x3d660f[_0xd42c('0x5')]]['answertime']));}else{utils[_0xd42c('0x1a')](util['format'](_0xd42c('0x27'),_0x3d660f[_0xd42c('0x5')],_0x3d660f[_0xd42c('0x9')]));}}}catch(_0x5b97fd){utils['error'](util['format'](_0xd42c('0x28'),_0x3d660f[_0xd42c('0x5')]),_0x5b97fd);}};exports['hangup']=function(_0x5ee97f){try{if(!_[_0xd42c('0x18')](dials[_0x5ee97f[_0xd42c('0x5')]])){utils[_0xd42c('0xd')](util[_0xd42c('0x3')](_0xd42c('0x29'),_0x5ee97f['uniqueid']),_0x5ee97f);utils['info'](util[_0xd42c('0x3')]('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x5ee97f['uniqueid'],_0x5ee97f[_0xd42c('0x2a')],_0x5ee97f['calleridname'],_0x5ee97f[_0xd42c('0x2b')]));dials[_0x5ee97f[_0xd42c('0x5')]]=_[_0xd42c('0x1e')](dials[_0x5ee97f[_0xd42c('0x5')]],{'endtime':utils[_0xd42c('0x20')](),'lastevent':_0xd42c('0x2c')});dials[_0x5ee97f[_0xd42c('0x5')]][_0xd42c('0x2d')]=utils[_0xd42c('0x2e')](dials[_0x5ee97f[_0xd42c('0x5')]][_0xd42c('0x2f')],dials[_0x5ee97f['uniqueid']][_0xd42c('0x1f')]);dials[_0x5ee97f[_0xd42c('0x5')]]['holdtime']=utils[_0xd42c('0x2e')](dials[_0x5ee97f['uniqueid']][_0xd42c('0x30')]||dials[_0x5ee97f['uniqueid']]['endtime'],dials[_0x5ee97f[_0xd42c('0x5')]][_0xd42c('0x1f')]);dials[_0x5ee97f['uniqueid']][_0xd42c('0x31')]=dials[_0x5ee97f[_0xd42c('0x5')]]['answertime']?utils[_0xd42c('0x2e')](dials[_0x5ee97f[_0xd42c('0x5')]][_0xd42c('0x2f')],dials[_0x5ee97f[_0xd42c('0x5')]][_0xd42c('0x30')]):0x0;writeDB(dials[_0x5ee97f[_0xd42c('0x5')]]);}}catch(_0x1f3739){utils[_0xd42c('0x15')](util[_0xd42c('0x3')](_0xd42c('0x29'),_0x5ee97f[_0xd42c('0x5')]),_0x1f3739);}};
\ No newline at end of file
+var _0xcb46=['billableseconds','lodash','util','./utils','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','connectedlinenum','request','newexten','debug','format','[%s][dials][newexten]','info','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','split','error','varset','[%s][dials][varset]','isNil','variable','value','assign','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','starttime','[%s][dials][dialbegin]','dialend','[%s][dials][dialend]','dialstatus','answertime','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','complete','duration','diffTime','endtime','holdtime'];(function(_0x4c587a,_0x3bf54a){var _0x3e66fc=function(_0x48529b){while(--_0x48529b){_0x4c587a['push'](_0x4c587a['shift']());}};_0x3e66fc(++_0x3bf54a);}(_0xcb46,0x1de));var _0x6cb4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcb46[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x6cb4('0x0'));var util=require(_0x6cb4('0x1'));var utils=require(_0x6cb4('0x2'));var dials={};function writeDB(_0x99006d){utils['info'](util['format'](_0x6cb4('0x3'),_0x99006d[_0x6cb4('0x4')],_0x99006d[_0x6cb4('0x5')],_0x99006d[_0x6cb4('0x6')],_0x99006d[_0x6cb4('0x7')],_0x99006d[_0x6cb4('0x8')],_0x99006d['dialstatus']));utils[_0x6cb4('0x9')]('CreateVoiceDialReport',_0x99006d);delete dials[_0x99006d[_0x6cb4('0x4')]];}exports[_0x6cb4('0xa')]=function(_0x564cf8){try{utils[_0x6cb4('0xb')](util[_0x6cb4('0xc')](_0x6cb4('0xd'),_0x564cf8['uniqueid']),_0x564cf8);utils[_0x6cb4('0xe')](util['format'](_0x6cb4('0xf'),_0x564cf8[_0x6cb4('0x4')],_0x564cf8[_0x6cb4('0x10')],_0x564cf8[_0x6cb4('0x11')]));if(_0x564cf8[_0x6cb4('0x10')][_0x6cb4('0x12')]()==_0x6cb4('0x13')&&_[_0x6cb4('0x14')](_0x564cf8[_0x6cb4('0x11')][_0x6cb4('0x12')](),'cdr(routeid)')){var _0x59c36c=_0x564cf8[_0x6cb4('0x11')][_0x6cb4('0x15')]('=');dials[_0x564cf8[_0x6cb4('0x4')]]={'routeId':_0x59c36c[0x1]};}}catch(_0x9424d8){utils[_0x6cb4('0x16')](util[_0x6cb4('0xc')](_0x6cb4('0xd'),_0x564cf8[_0x6cb4('0x4')]),_0x9424d8);}};exports[_0x6cb4('0x17')]=function(_0x17a79a){try{utils[_0x6cb4('0xb')](util['format'](_0x6cb4('0x18'),_0x17a79a['uniqueid']),_0x17a79a);if(!_[_0x6cb4('0x19')](_0x17a79a[_0x6cb4('0x1a')]['outboundrouteid'])){utils['info'](util[_0x6cb4('0xc')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x17a79a[_0x6cb4('0x4')],_0x17a79a[_0x6cb4('0x1b')]));dials[_0x17a79a[_0x6cb4('0x4')]]={'routeId':_0x17a79a[_0x6cb4('0x1b')]};}}catch(_0x38e6a4){utils['error'](util[_0x6cb4('0xc')]('[%s][dials][varset]',_0x17a79a['uniqueid']),_0x38e6a4);}};exports['dialbegin']=function(_0x4c3508){try{if(!_[_0x6cb4('0x19')](dials[_0x4c3508[_0x6cb4('0x4')]])){utils[_0x6cb4('0xb')](util[_0x6cb4('0xc')]('[%s][dials][dialbegin]',_0x4c3508[_0x6cb4('0x4')]),_0x4c3508);dials[_0x4c3508['uniqueid']]=_[_0x6cb4('0x1c')](dials[_0x4c3508[_0x6cb4('0x4')]],_0x4c3508);dials[_0x4c3508['uniqueid']]['starttime']=utils[_0x6cb4('0x1d')]();dials[_0x4c3508['uniqueid']][_0x6cb4('0x1e')]=_0x6cb4('0x1f');utils[_0x6cb4('0xe')](util['format'](_0x6cb4('0x20'),_0x4c3508[_0x6cb4('0x4')],dials[_0x4c3508[_0x6cb4('0x4')]][_0x6cb4('0x21')]));}}catch(_0x132670){utils[_0x6cb4('0x16')](util[_0x6cb4('0xc')](_0x6cb4('0x22'),_0x4c3508[_0x6cb4('0x4')]),_0x132670);}};exports[_0x6cb4('0x23')]=function(_0x51bd8a){try{if(!_[_0x6cb4('0x19')](dials[_0x51bd8a[_0x6cb4('0x4')]])){utils[_0x6cb4('0xb')](util['format'](_0x6cb4('0x24'),_0x51bd8a[_0x6cb4('0x4')]),_0x51bd8a);dials[_0x51bd8a[_0x6cb4('0x4')]][_0x6cb4('0x25')]=_0x51bd8a[_0x6cb4('0x25')];if(_0x51bd8a[_0x6cb4('0x25')]=='ANSWER'){dials[_0x51bd8a[_0x6cb4('0x4')]]=_[_0x6cb4('0x1c')](dials[_0x51bd8a[_0x6cb4('0x4')]],_0x51bd8a);dials[_0x51bd8a[_0x6cb4('0x4')]][_0x6cb4('0x26')]=utils[_0x6cb4('0x1d')]();dials[_0x51bd8a[_0x6cb4('0x4')]][_0x6cb4('0x1e')]=_0x6cb4('0x27');utils[_0x6cb4('0xe')](util[_0x6cb4('0xc')](_0x6cb4('0x28'),_0x51bd8a['uniqueid'],_0x51bd8a[_0x6cb4('0x25')],dials[_0x51bd8a[_0x6cb4('0x4')]]['answertime']));}else{utils[_0x6cb4('0xe')](util[_0x6cb4('0xc')](_0x6cb4('0x29'),_0x51bd8a[_0x6cb4('0x4')],_0x51bd8a[_0x6cb4('0x25')]));}}}catch(_0x5cda16){utils['error'](util[_0x6cb4('0xc')](_0x6cb4('0x24'),_0x51bd8a[_0x6cb4('0x4')]),_0x5cda16);}};exports[_0x6cb4('0x2a')]=function(_0x18c186){try{if(!_[_0x6cb4('0x19')](dials[_0x18c186[_0x6cb4('0x4')]])){utils['debug'](util[_0x6cb4('0xc')](_0x6cb4('0x2b'),_0x18c186['uniqueid']),_0x18c186);utils[_0x6cb4('0xe')](util[_0x6cb4('0xc')](_0x6cb4('0x2c'),_0x18c186[_0x6cb4('0x4')],_0x18c186[_0x6cb4('0x7')],_0x18c186[_0x6cb4('0x2d')],_0x18c186[_0x6cb4('0x2e')]));dials[_0x18c186['uniqueid']]=_['assign'](dials[_0x18c186[_0x6cb4('0x4')]],{'endtime':utils[_0x6cb4('0x1d')](),'lastevent':_0x6cb4('0x2f')});dials[_0x18c186[_0x6cb4('0x4')]][_0x6cb4('0x30')]=utils[_0x6cb4('0x31')](dials[_0x18c186['uniqueid']][_0x6cb4('0x32')],dials[_0x18c186[_0x6cb4('0x4')]][_0x6cb4('0x21')]);dials[_0x18c186[_0x6cb4('0x4')]][_0x6cb4('0x33')]=utils[_0x6cb4('0x31')](dials[_0x18c186[_0x6cb4('0x4')]][_0x6cb4('0x26')]||dials[_0x18c186[_0x6cb4('0x4')]][_0x6cb4('0x32')],dials[_0x18c186['uniqueid']][_0x6cb4('0x21')]);dials[_0x18c186['uniqueid']][_0x6cb4('0x34')]=dials[_0x18c186[_0x6cb4('0x4')]]['answertime']?utils[_0x6cb4('0x31')](dials[_0x18c186['uniqueid']][_0x6cb4('0x32')],dials[_0x18c186[_0x6cb4('0x4')]]['answertime']):0x0;writeDB(dials[_0x18c186[_0x6cb4('0x4')]]);}}catch(_0x43d868){utils[_0x6cb4('0x16')](util[_0x6cb4('0xc')]('[%s][dials][hangup]',_0x18c186[_0x6cb4('0x4')]),_0x43d868);}};
\ No newline at end of file
index 5b732eb..7ed2c8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5ec=['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','port','username','keepConnected','xdr','info','XDR\x20DISABLED','./agents.controller','./queues.controller','./recordings.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','debug','[%s][index][devicestatechange]','device','devicestatechange','format','agentcalled','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid'];(function(_0x175b8d,_0x147fc8){var _0x3193b9=function(_0x4d0d7c){while(--_0x4d0d7c){_0x175b8d['push'](_0x175b8d['shift']());}};_0x3193b9(++_0x147fc8);}(_0xb5ec,0xd0));var _0xcb5e=function(_0x304d8f,_0x1a2682){_0x304d8f=_0x304d8f-0x0;var _0x5a603d=_0xb5ec[_0x304d8f];return _0x5a603d;};var AsteriskManager=require(_0xcb5e('0x0'));var config=require(_0xcb5e('0x1'));var utils=require(_0xcb5e('0x2'));var util=require(_0xcb5e('0x3'));var ami=new AsteriskManager(config['asterisk'][_0xcb5e('0x4')],config['asterisk']['ip'],config['asterisk'][_0xcb5e('0x5')],config['asterisk']['password'],!![]);ami[_0xcb5e('0x6')]();if(config[_0xcb5e('0x7')]&&config[_0xcb5e('0x7')]['disabled']){utils[_0xcb5e('0x8')](_0xcb5e('0x9'));}else{var agents=require(_0xcb5e('0xa'));var calls=require('./calls.controller');var queues=require(_0xcb5e('0xb'));var recordings=require(_0xcb5e('0xc'));var members=require('./members.controller');var dials=require('./dials.controller');var transfers=require(_0xcb5e('0xd'));var core=require(_0xcb5e('0xe'));ami['on'](_0xcb5e('0xf'),core[_0xcb5e('0xf')]);ami['on'](_0xcb5e('0x10'),core[_0xcb5e('0x10')]);ami['on'](_0xcb5e('0x11'),core[_0xcb5e('0x11')]);ami['on'](_0xcb5e('0x12'),core['error']);ami['on'](_0xcb5e('0x13'),core[_0xcb5e('0x13')]);ami['on'](_0xcb5e('0x14'),core[_0xcb5e('0x14')]);ami['on']('devicestatechange',function(_0x2a3522){try{utils[_0xcb5e('0x15')](util['format'](_0xcb5e('0x16'),_0x2a3522[_0xcb5e('0x17')]),_0x2a3522);members[_0xcb5e('0x18')](_0x2a3522);}catch(_0x437e2a){utils[_0xcb5e('0x12')](util[_0xcb5e('0x19')](_0xcb5e('0x16'),_0x2a3522[_0xcb5e('0x17')]),_0x437e2a);}});ami['on'](_0xcb5e('0x1a'),function(_0x5b8164){try{utils['debug'](util[_0xcb5e('0x19')](_0xcb5e('0x1b'),_0x5b8164[_0xcb5e('0x1c')]),_0x5b8164);agents['agentcalled'](_0x5b8164);}catch(_0x3887d5){utils['error'](util[_0xcb5e('0x19')](_0xcb5e('0x1b'),_0x5b8164[_0xcb5e('0x1c')]),_0x3887d5);}});ami['on'](_0xcb5e('0x1d'),function(_0x42ee46){try{utils['debug'](util[_0xcb5e('0x19')](_0xcb5e('0x1e'),_0x42ee46[_0xcb5e('0x1c')]),_0x42ee46);agents[_0xcb5e('0x1d')](_0x42ee46);}catch(_0x21a420){utils['error'](util[_0xcb5e('0x19')](_0xcb5e('0x1e'),_0x42ee46[_0xcb5e('0x1c')]),_0x21a420);}});ami['on'](_0xcb5e('0x1f'),function(_0x414711){try{utils[_0xcb5e('0x15')](util[_0xcb5e('0x19')](_0xcb5e('0x20'),_0x414711[_0xcb5e('0x1c')]),_0x414711);agents[_0xcb5e('0x1f')](_0x414711);queues[_0xcb5e('0x1f')](_0x414711);}catch(_0x37aca0){utils[_0xcb5e('0x12')](util[_0xcb5e('0x19')](_0xcb5e('0x20'),_0x414711[_0xcb5e('0x1c')]),_0x37aca0);}});ami['on'](_0xcb5e('0x21'),function(_0x17377f){try{utils[_0xcb5e('0x15')](util['format'](_0xcb5e('0x22'),_0x17377f[_0xcb5e('0x1c')]),_0x17377f);agents[_0xcb5e('0x21')](_0x17377f);queues[_0xcb5e('0x21')](_0x17377f);members['agentcomplete'](_0x17377f);}catch(_0x397a56){utils[_0xcb5e('0x12')](util[_0xcb5e('0x19')](_0xcb5e('0x22'),_0x17377f[_0xcb5e('0x1c')]),_0x397a56);}});ami['on'](_0xcb5e('0x23'),function(_0x5f1a65){try{utils['debug'](util['format'](_0xcb5e('0x24'),_0x5f1a65[_0xcb5e('0x1c')]),_0x5f1a65);agents[_0xcb5e('0x23')](_0x5f1a65);queues[_0xcb5e('0x23')](_0x5f1a65);}catch(_0x35ffbd){utils[_0xcb5e('0x12')](util[_0xcb5e('0x19')](_0xcb5e('0x24'),_0x5f1a65[_0xcb5e('0x1c')]),_0x35ffbd);}});ami['on'](_0xcb5e('0x25'),function(_0x3a056a){try{utils[_0xcb5e('0x15')](util[_0xcb5e('0x19')](_0xcb5e('0x26'),_0x3a056a[_0xcb5e('0x1c')]),_0x3a056a);queues['queuecallerjoin'](_0x3a056a);recordings[_0xcb5e('0x25')](_0x3a056a);}catch(_0x2c9bbe){utils['error'](util[_0xcb5e('0x19')]('[%s][index][queuecallerjoin]',_0x3a056a['uniqueid']),_0x2c9bbe);}});ami['on'](_0xcb5e('0x27'),function(_0x37c2f7){try{utils[_0xcb5e('0x15')](util[_0xcb5e('0x19')](_0xcb5e('0x28'),_0x37c2f7[_0xcb5e('0x1c')]),_0x37c2f7);queues[_0xcb5e('0x27')](_0x37c2f7);}catch(_0x394e55){utils[_0xcb5e('0x12')](util[_0xcb5e('0x19')]('[%s][index][queuecallerleave]',_0x37c2f7[_0xcb5e('0x1c')]),_0x394e55);}});ami['on'](_0xcb5e('0x29'),function(_0x1a7135){try{utils[_0xcb5e('0x15')](util[_0xcb5e('0x19')](_0xcb5e('0x2a'),_0x1a7135[_0xcb5e('0x1c')]),_0x1a7135);queues[_0xcb5e('0x29')](_0x1a7135);calls['musiconholdstart'](_0x1a7135);}catch(_0x1ce56d){utils[_0xcb5e('0x12')](util[_0xcb5e('0x19')](_0xcb5e('0x2a'),_0x1a7135['uniqueid']),_0x1ce56d);}});ami['on']('musiconholdstop',function(_0x26106e){try{utils[_0xcb5e('0x15')](util[_0xcb5e('0x19')]('[%s][index][musiconholdstop]',_0x26106e[_0xcb5e('0x1c')]),_0x26106e);queues[_0xcb5e('0x2b')](_0x26106e);calls['musiconholdstop'](_0x26106e);}catch(_0x4e707e){utils[_0xcb5e('0x12')](util[_0xcb5e('0x19')](_0xcb5e('0x2c'),_0x26106e[_0xcb5e('0x1c')]),_0x4e707e);}});ami['on'](_0xcb5e('0x2d'),function(_0x2f4f06){try{utils[_0xcb5e('0x15')](util[_0xcb5e('0x19')](_0xcb5e('0x2e'),_0x2f4f06[_0xcb5e('0x1c')]),_0x2f4f06);calls[_0xcb5e('0x2d')](_0x2f4f06);recordings['newstate'](_0x2f4f06);}catch(_0x2594ee){utils[_0xcb5e('0x12')](util[_0xcb5e('0x19')](_0xcb5e('0x2e'),_0x2f4f06['uniqueid']),_0x2594ee);}});ami['on'](_0xcb5e('0x2f'),function(_0x278fb6){try{utils['debug'](util[_0xcb5e('0x19')](_0xcb5e('0x30'),_0x278fb6[_0xcb5e('0x1c')]),_0x278fb6);calls[_0xcb5e('0x2f')](_0x278fb6);recordings[_0xcb5e('0x2f')](_0x278fb6);dials[_0xcb5e('0x2f')](_0x278fb6);agents[_0xcb5e('0x2f')](_0x278fb6);queues[_0xcb5e('0x2f')](_0x278fb6);}catch(_0x4681f0){utils[_0xcb5e('0x12')](util['format']('[%s][index][hangup]',_0x278fb6[_0xcb5e('0x1c')]),_0x4681f0);}});ami['on'](_0xcb5e('0x31'),function(_0x320323){try{utils['debug'](util['format'](_0xcb5e('0x32'),_0x320323['uniqueid']),_0x320323);members[_0xcb5e('0x31')](_0x320323);}catch(_0x4ac05f){utils[_0xcb5e('0x12')](util[_0xcb5e('0x19')](_0xcb5e('0x32'),_0x320323['uniqueid']),_0x4ac05f);}});ami['on'](_0xcb5e('0x33'),function(_0x2fd8be){try{utils['debug'](util['format'](_0xcb5e('0x34'),_0x2fd8be[_0xcb5e('0x1c')]),_0x2fd8be);queues['blindtransfer'](_0x2fd8be);agents[_0xcb5e('0x33')](_0x2fd8be);transfers[_0xcb5e('0x33')](_0x2fd8be);recordings[_0xcb5e('0x33')](_0x2fd8be);}catch(_0xf28a71){utils[_0xcb5e('0x12')](util[_0xcb5e('0x19')](_0xcb5e('0x34'),_0x2fd8be[_0xcb5e('0x1c')]),_0xf28a71);}});ami['on'](_0xcb5e('0x35'),function(_0x1a69b2){try{utils[_0xcb5e('0x15')](util[_0xcb5e('0x19')](_0xcb5e('0x36'),_0x1a69b2[_0xcb5e('0x37')]),_0x1a69b2);queues[_0xcb5e('0x35')](_0x1a69b2);transfers['attendedtransfer'](_0x1a69b2);agents[_0xcb5e('0x35')](_0x1a69b2);calls['attendedtransfer'](_0x1a69b2);}catch(_0x1d1d29){utils[_0xcb5e('0x12')](util[_0xcb5e('0x19')](_0xcb5e('0x36'),_0x1a69b2[_0xcb5e('0x37')]),_0x1d1d29);}});ami['on'](_0xcb5e('0x38'),function(_0x5a2dfe){try{utils[_0xcb5e('0x15')](util[_0xcb5e('0x19')](_0xcb5e('0x39'),_0x5a2dfe[_0xcb5e('0x1c')]),_0x5a2dfe);queues[_0xcb5e('0x38')](_0x5a2dfe);recordings[_0xcb5e('0x38')](_0x5a2dfe);calls[_0xcb5e('0x38')](_0x5a2dfe);dials[_0xcb5e('0x38')](_0x5a2dfe);}catch(_0xef82e2){utils['error'](util[_0xcb5e('0x19')](_0xcb5e('0x39'),_0x5a2dfe[_0xcb5e('0x1c')]),_0xef82e2);}});ami['on'](_0xcb5e('0x3a'),function(_0x20eac4){try{utils[_0xcb5e('0x15')](util['format'](_0xcb5e('0x3b'),_0x20eac4['uniqueid']),_0x20eac4);calls[_0xcb5e('0x3a')](_0x20eac4);recordings[_0xcb5e('0x3a')](_0x20eac4);dials[_0xcb5e('0x3a')](_0x20eac4);}catch(_0x5306f6){utils[_0xcb5e('0x12')](util[_0xcb5e('0x19')](_0xcb5e('0x3b'),_0x20eac4[_0xcb5e('0x1c')]),_0x5306f6);}});ami['on'](_0xcb5e('0x3c'),function(_0x57390d){try{utils['debug'](util[_0xcb5e('0x19')]('[%s][index][newchannel]',_0x57390d[_0xcb5e('0x1c')]),_0x57390d);calls[_0xcb5e('0x3c')](_0x57390d);recordings[_0xcb5e('0x3c')](_0x57390d);}catch(_0x6d0c71){utils['error'](util[_0xcb5e('0x19')](_0xcb5e('0x3d'),_0x57390d['uniqueid']),_0x6d0c71);}});ami['on'](_0xcb5e('0x3e'),function(_0x3fa338){try{utils[_0xcb5e('0x15')](util[_0xcb5e('0x19')]('[%s][index][dialbegin]',_0x3fa338[_0xcb5e('0x1c')]),_0x3fa338);dials[_0xcb5e('0x3e')](_0x3fa338);}catch(_0x362d6d){utils[_0xcb5e('0x12')](util[_0xcb5e('0x19')](_0xcb5e('0x3f'),_0x3fa338[_0xcb5e('0x1c')]),_0x362d6d);}});ami['on'](_0xcb5e('0x40'),function(_0x5a94d8){try{utils[_0xcb5e('0x15')](util['format'](_0xcb5e('0x41'),_0x5a94d8[_0xcb5e('0x1c')]),_0x5a94d8);dials[_0xcb5e('0x40')](_0x5a94d8);}catch(_0x225995){utils['error'](util[_0xcb5e('0x19')](_0xcb5e('0x41'),_0x5a94d8['uniqueid']),_0x225995);}});}
\ No newline at end of file
+var _0x8b1b=['shutdown','fullybooted','error','close','managerevent','devicestatechange','format','[%s][index][devicestatechange]','device','agentcalled','debug','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','[%s][index][cdr]','cdr','[%s][index][blindtransfer]','blindtransfer','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','../../config/environment','./utils','util','asterisk','password','xdr','disabled','info','XDR\x20DISABLED','./agents.controller','./calls.controller','./recordings.controller','./transfers.controller','./core.controller','connect'];(function(_0x28e0f1,_0xd1bfa0){var _0x13aedc=function(_0x2c752a){while(--_0x2c752a){_0x28e0f1['push'](_0x28e0f1['shift']());}};_0x13aedc(++_0xd1bfa0);}(_0x8b1b,0x75));var _0xb8b1=function(_0x11ce46,_0x177a85){_0x11ce46=_0x11ce46-0x0;var _0x368a1e=_0x8b1b[_0x11ce46];return _0x368a1e;};var AsteriskManager=require('asterisk-manager');var config=require(_0xb8b1('0x0'));var utils=require(_0xb8b1('0x1'));var util=require(_0xb8b1('0x2'));var ami=new AsteriskManager(config[_0xb8b1('0x3')]['port'],config[_0xb8b1('0x3')]['ip'],config[_0xb8b1('0x3')]['username'],config[_0xb8b1('0x3')][_0xb8b1('0x4')],!![]);ami['keepConnected']();if(config[_0xb8b1('0x5')]&&config[_0xb8b1('0x5')][_0xb8b1('0x6')]){utils[_0xb8b1('0x7')](_0xb8b1('0x8'));}else{var agents=require(_0xb8b1('0x9'));var calls=require(_0xb8b1('0xa'));var queues=require('./queues.controller');var recordings=require(_0xb8b1('0xb'));var members=require('./members.controller');var dials=require('./dials.controller');var transfers=require(_0xb8b1('0xc'));var core=require(_0xb8b1('0xd'));ami['on'](_0xb8b1('0xe'),core[_0xb8b1('0xe')]);ami['on'](_0xb8b1('0xf'),core[_0xb8b1('0xf')]);ami['on'](_0xb8b1('0x10'),core[_0xb8b1('0x10')]);ami['on']('error',core[_0xb8b1('0x11')]);ami['on'](_0xb8b1('0x12'),core['close']);ami['on'](_0xb8b1('0x13'),core['managerevent']);ami['on'](_0xb8b1('0x14'),function(_0x283c68){try{utils['debug'](util[_0xb8b1('0x15')](_0xb8b1('0x16'),_0x283c68[_0xb8b1('0x17')]),_0x283c68);members[_0xb8b1('0x14')](_0x283c68);}catch(_0x52d61a){utils[_0xb8b1('0x11')](util['format'](_0xb8b1('0x16'),_0x283c68[_0xb8b1('0x17')]),_0x52d61a);}});ami['on'](_0xb8b1('0x18'),function(_0x2cd778){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')](_0xb8b1('0x1a'),_0x2cd778[_0xb8b1('0x1b')]),_0x2cd778);agents[_0xb8b1('0x18')](_0x2cd778);}catch(_0x3baa75){utils[_0xb8b1('0x11')](util['format'](_0xb8b1('0x1a'),_0x2cd778[_0xb8b1('0x1b')]),_0x3baa75);}});ami['on'](_0xb8b1('0x1c'),function(_0x17a8e2){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')]('[%s][index][agentringnoanswer]',_0x17a8e2[_0xb8b1('0x1b')]),_0x17a8e2);agents['agentringnoanswer'](_0x17a8e2);}catch(_0x63a782){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x1d'),_0x17a8e2[_0xb8b1('0x1b')]),_0x63a782);}});ami['on'](_0xb8b1('0x1e'),function(_0x565282){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')]('[%s][index][agentconnect]',_0x565282[_0xb8b1('0x1b')]),_0x565282);agents['agentconnect'](_0x565282);queues[_0xb8b1('0x1e')](_0x565282);}catch(_0x3d1fa8){utils[_0xb8b1('0x11')](util['format'](_0xb8b1('0x1f'),_0x565282['uniqueid']),_0x3d1fa8);}});ami['on'](_0xb8b1('0x20'),function(_0x40ee97){try{utils['debug'](util['format'](_0xb8b1('0x21'),_0x40ee97['uniqueid']),_0x40ee97);agents['agentcomplete'](_0x40ee97);queues[_0xb8b1('0x20')](_0x40ee97);members[_0xb8b1('0x20')](_0x40ee97);}catch(_0x19de59){utils[_0xb8b1('0x11')](util['format'](_0xb8b1('0x21'),_0x40ee97['uniqueid']),_0x19de59);}});ami['on'](_0xb8b1('0x22'),function(_0x1d2e79){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')](_0xb8b1('0x23'),_0x1d2e79[_0xb8b1('0x1b')]),_0x1d2e79);agents[_0xb8b1('0x22')](_0x1d2e79);queues[_0xb8b1('0x22')](_0x1d2e79);}catch(_0x1c1d60){utils['error'](util[_0xb8b1('0x15')]('[%s][index][queuecallerabandon]',_0x1d2e79[_0xb8b1('0x1b')]),_0x1c1d60);}});ami['on'](_0xb8b1('0x24'),function(_0x427a83){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')](_0xb8b1('0x25'),_0x427a83[_0xb8b1('0x1b')]),_0x427a83);queues['queuecallerjoin'](_0x427a83);recordings['queuecallerjoin'](_0x427a83);}catch(_0x4499c4){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x25'),_0x427a83[_0xb8b1('0x1b')]),_0x4499c4);}});ami['on'](_0xb8b1('0x26'),function(_0x436933){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')](_0xb8b1('0x27'),_0x436933[_0xb8b1('0x1b')]),_0x436933);queues['queuecallerleave'](_0x436933);}catch(_0x166ca8){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')]('[%s][index][queuecallerleave]',_0x436933[_0xb8b1('0x1b')]),_0x166ca8);}});ami['on'](_0xb8b1('0x28'),function(_0x45dd45){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')](_0xb8b1('0x29'),_0x45dd45[_0xb8b1('0x1b')]),_0x45dd45);queues[_0xb8b1('0x28')](_0x45dd45);calls['musiconholdstart'](_0x45dd45);}catch(_0xc87302){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x29'),_0x45dd45[_0xb8b1('0x1b')]),_0xc87302);}});ami['on'](_0xb8b1('0x2a'),function(_0x4005ef){try{utils['debug'](util[_0xb8b1('0x15')]('[%s][index][musiconholdstop]',_0x4005ef['uniqueid']),_0x4005ef);queues[_0xb8b1('0x2a')](_0x4005ef);calls[_0xb8b1('0x2a')](_0x4005ef);}catch(_0x1f8176){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x2b'),_0x4005ef[_0xb8b1('0x1b')]),_0x1f8176);}});ami['on'](_0xb8b1('0x2c'),function(_0x193152){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')](_0xb8b1('0x2d'),_0x193152['uniqueid']),_0x193152);calls['newstate'](_0x193152);recordings[_0xb8b1('0x2c')](_0x193152);}catch(_0x368242){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x2d'),_0x193152[_0xb8b1('0x1b')]),_0x368242);}});ami['on'](_0xb8b1('0x2e'),function(_0x1b4fca){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')](_0xb8b1('0x2f'),_0x1b4fca[_0xb8b1('0x1b')]),_0x1b4fca);calls[_0xb8b1('0x2e')](_0x1b4fca);recordings[_0xb8b1('0x2e')](_0x1b4fca);dials[_0xb8b1('0x2e')](_0x1b4fca);agents['hangup'](_0x1b4fca);queues[_0xb8b1('0x2e')](_0x1b4fca);}catch(_0x3d37a6){utils[_0xb8b1('0x11')](util['format'](_0xb8b1('0x2f'),_0x1b4fca[_0xb8b1('0x1b')]),_0x3d37a6);}});ami['on']('cdr',function(_0x34bff0){try{utils['debug'](util[_0xb8b1('0x15')](_0xb8b1('0x30'),_0x34bff0[_0xb8b1('0x1b')]),_0x34bff0);members[_0xb8b1('0x31')](_0x34bff0);}catch(_0x3c9e15){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x30'),_0x34bff0[_0xb8b1('0x1b')]),_0x3c9e15);}});ami['on']('blindtransfer',function(_0x12191){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')](_0xb8b1('0x32'),_0x12191[_0xb8b1('0x1b')]),_0x12191);queues['blindtransfer'](_0x12191);agents[_0xb8b1('0x33')](_0x12191);transfers[_0xb8b1('0x33')](_0x12191);}catch(_0x398b78){utils[_0xb8b1('0x11')](util['format']('[%s][index][blindtransfer]',_0x12191['uniqueid']),_0x398b78);}});ami['on'](_0xb8b1('0x34'),function(_0x40ffda){try{utils['debug'](util['format'](_0xb8b1('0x35'),_0x40ffda[_0xb8b1('0x36')]),_0x40ffda);queues[_0xb8b1('0x34')](_0x40ffda);transfers['attendedtransfer'](_0x40ffda);agents['attendedtransfer'](_0x40ffda);calls[_0xb8b1('0x34')](_0x40ffda);}catch(_0x1a1b90){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x35'),_0x40ffda[_0xb8b1('0x36')]),_0x1a1b90);}});ami['on'](_0xb8b1('0x37'),function(_0xc5b6a){try{utils['debug'](util[_0xb8b1('0x15')](_0xb8b1('0x38'),_0xc5b6a[_0xb8b1('0x1b')]),_0xc5b6a);queues[_0xb8b1('0x37')](_0xc5b6a);recordings[_0xb8b1('0x37')](_0xc5b6a);calls['varset'](_0xc5b6a);dials[_0xb8b1('0x37')](_0xc5b6a);}catch(_0x21647e){utils[_0xb8b1('0x11')](util['format'](_0xb8b1('0x38'),_0xc5b6a[_0xb8b1('0x1b')]),_0x21647e);}});ami['on'](_0xb8b1('0x39'),function(_0x39649c){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')]('[%s][index][newexten]',_0x39649c[_0xb8b1('0x1b')]),_0x39649c);calls['newexten'](_0x39649c);recordings[_0xb8b1('0x39')](_0x39649c);dials[_0xb8b1('0x39')](_0x39649c);}catch(_0x493aac){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x3a'),_0x39649c[_0xb8b1('0x1b')]),_0x493aac);}});ami['on'](_0xb8b1('0x3b'),function(_0x4f873d){try{utils['debug'](util['format'](_0xb8b1('0x3c'),_0x4f873d[_0xb8b1('0x1b')]),_0x4f873d);calls['newchannel'](_0x4f873d);recordings['newchannel'](_0x4f873d);}catch(_0x156d07){utils['error'](util[_0xb8b1('0x15')](_0xb8b1('0x3c'),_0x4f873d[_0xb8b1('0x1b')]),_0x156d07);}});ami['on'](_0xb8b1('0x3d'),function(_0x29ca7e){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')](_0xb8b1('0x3e'),_0x29ca7e['uniqueid']),_0x29ca7e);dials[_0xb8b1('0x3d')](_0x29ca7e);}catch(_0x6bc4a9){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x3f'),_0x29ca7e[_0xb8b1('0x1b')]),_0x6bc4a9);}});ami['on'](_0xb8b1('0x40'),function(_0x5a147a){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')]('[%s][index][dialend]',_0x5a147a['uniqueid']),_0x5a147a);dials[_0xb8b1('0x40')](_0x5a147a);}catch(_0x4f2e98){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x41'),_0x5a147a['uniqueid']),_0x4f2e98);}});}
\ No newline at end of file
index b2ee7b2..de3dd61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa198=['then','internal','request','getUserByName','split','catch','error','[%s][members][writeDB]','startsWith','devicestatechange','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','INUSE','BUSY','TALKING','now','agent','isNil','exitAt','duration','agentcomplete','debug','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','cdr','[%s][members][cdr]','data1','data2','source','data3','destination','destinationchannel','type','lodash','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','channel','membername','getUserByInterface'];(function(_0x519380,_0x7f196){var _0x60ba2c=function(_0x5b2110){while(--_0x5b2110){_0x519380['push'](_0x519380['shift']());}};_0x60ba2c(++_0x7f196);}(_0xa198,0x7f));var _0x8a19=function(_0x5e006b,_0x59b4c7){_0x5e006b=_0x5e006b-0x0;var _0x4be286=_0xa198[_0x5e006b];return _0x4be286;};'use strict';var _=require(_0x8a19('0x0'));var util=require('util');var utils=require('./utils');var members={};var exclude=[_0x8a19('0x1'),_0x8a19('0x2')];function writeDB(_0x1884de){utils[_0x8a19('0x3')](util[_0x8a19('0x4')](_0x8a19('0x5'),_0x1884de[_0x8a19('0x6')],_0x1884de[_0x8a19('0x7')],_0x1884de[_0x8a19('0x8')],_0x1884de['data2'],_0x1884de[_0x8a19('0x9')],_0x1884de['type']));if(_0x1884de[_0x8a19('0x7')]){utils[_0x8a19('0xa')](_0x1884de['interface'])[_0x8a19('0xb')](function(_0x1931eb){if(_0x1931eb){_0x1884de[_0x8a19('0x9')]=_0x1931eb['name'];_0x1884de[_0x8a19('0xc')]=_0x1931eb[_0x8a19('0xc')];utils[_0x8a19('0xd')]('CreateMemberReport',_0x1884de);}else{utils[_0x8a19('0xe')](_0x1884de['interface'][_0x8a19('0xf')]('/')[0x1])[_0x8a19('0xb')](function(_0x1c1f13){if(_0x1c1f13){_0x1884de[_0x8a19('0x9')]=_0x1c1f13['name'];_0x1884de['internal']=_0x1c1f13[_0x8a19('0xc')];utils[_0x8a19('0xd')]('CreateMemberReport',_0x1884de);}});}})[_0x8a19('0x10')](function(_0x71d1de){utils[_0x8a19('0x11')](util[_0x8a19('0x4')](_0x8a19('0x12'),_0x1884de[_0x8a19('0x6')]),_0x71d1de);});}delete members[_0x1884de[_0x8a19('0x7')]];}function startsWith(_0x3df818,_0x20796f){return _['some'](_0x3df818,function(_0x7743c6){return _[_0x8a19('0x13')](_0x20796f,_0x7743c6);});}exports[_0x8a19('0x14')]=function(_0x4d448c){try{utils['debug'](util['format']('[%s][members][devicestatechange]',members[_0x4d448c[_0x8a19('0x15')]]?members[_0x4d448c[_0x8a19('0x15')]][_0x8a19('0x6')]:_0x4d448c['device']),_0x4d448c);utils['info'](util[_0x8a19('0x4')](_0x8a19('0x16'),members[_0x4d448c[_0x8a19('0x15')]]?members[_0x4d448c[_0x8a19('0x15')]]['uniqueid']:_0x4d448c[_0x8a19('0x15')],_0x4d448c['state'],_0x4d448c[_0x8a19('0x15')]));switch(_0x4d448c['state']){case _0x8a19('0x17'):case _0x8a19('0x18'):if(!startsWith(exclude,_0x4d448c[_0x8a19('0x15')])){members[_0x4d448c[_0x8a19('0x15')]]={'channel':'voice','interface':_0x4d448c[_0x8a19('0x15')],'type':_0x8a19('0x19'),'enterAt':utils[_0x8a19('0x1a')](),'role':_0x8a19('0x1b')};}break;case'NOT_INUSE':if(!_[_0x8a19('0x1c')](members[_0x4d448c[_0x8a19('0x15')]])){members[_0x4d448c[_0x8a19('0x15')]][_0x8a19('0x1d')]=utils[_0x8a19('0x1a')]();members[_0x4d448c[_0x8a19('0x15')]][_0x8a19('0x1e')]=utils['diffTime'](members[_0x4d448c[_0x8a19('0x15')]][_0x8a19('0x1d')],members[_0x4d448c[_0x8a19('0x15')]]['enterAt']);if(members[_0x4d448c['device']][_0x8a19('0x6')]){writeDB(members[_0x4d448c[_0x8a19('0x15')]]);}}break;default:break;}}catch(_0x2c798d){utils[_0x8a19('0x11')](util[_0x8a19('0x4')]('[%s][members][devicestatechange]',members[_0x4d448c[_0x8a19('0x15')]]?members[_0x4d448c[_0x8a19('0x15')]]['uniqueid']:_0x4d448c[_0x8a19('0x15')]),_0x2c798d);}};exports[_0x8a19('0x1f')]=function(_0x64b267){try{if(!_['isNil'](members[_0x64b267[_0x8a19('0x7')]])){utils[_0x8a19('0x20')](util[_0x8a19('0x4')](_0x8a19('0x21'),_0x64b267[_0x8a19('0x6')]),_0x64b267);utils[_0x8a19('0x3')](util[_0x8a19('0x4')](_0x8a19('0x22'),_0x64b267['uniqueid'],_0x64b267['interface'],_0x64b267[_0x8a19('0x23')]));members[_0x64b267[_0x8a19('0x7')]]=_[_0x8a19('0x24')](members[_0x64b267[_0x8a19('0x7')]],{'data4':_0x64b267[_0x8a19('0x23')],'uniqueid':_0x64b267['uniqueid']});}}catch(_0x1b4ab9){utils[_0x8a19('0x11')](util[_0x8a19('0x4')]('[%s][members][agentcomplete]',_0x64b267[_0x8a19('0x6')]),_0x1b4ab9);}};exports[_0x8a19('0x25')]=function(_0x255f46){try{utils[_0x8a19('0x20')](util[_0x8a19('0x4')](_0x8a19('0x26'),_0x255f46[_0x8a19('0x6')]),_0x255f46);if(_0x255f46[_0x8a19('0x8')]){var _0x294597=_0x255f46[_0x8a19('0x8')][_0x8a19('0xf')]('-')[0x0];if(!_[_0x8a19('0x1c')](members[_0x294597])){members[_0x294597]=_[_0x8a19('0x24')](members[_0x294597],{'data1':members[_0x294597][_0x8a19('0x27')]||_0x255f46['type'],'data2':members[_0x294597][_0x8a19('0x28')]||_0x255f46[_0x8a19('0x29')],'data3':members[_0x294597][_0x8a19('0x2a')]||_0x255f46[_0x8a19('0x2b')],'uniqueid':members[_0x294597][_0x8a19('0x6')]||_0x255f46['uniqueid']});utils[_0x8a19('0x3')](util[_0x8a19('0x4')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x255f46[_0x8a19('0x6')],members[_0x294597][_0x8a19('0x27')],members[_0x294597][_0x8a19('0x28')],members[_0x294597][_0x8a19('0x2a')]));if(members[_0x294597][_0x8a19('0x1d')]){writeDB(members[_0x294597]);}}}if(_0x255f46[_0x8a19('0x2c')]){var _0x1f3e55=_0x255f46[_0x8a19('0x2c')][_0x8a19('0xf')]('-')[0x0];if(!_['isNil'](members[_0x1f3e55])){members[_0x1f3e55]=_[_0x8a19('0x24')](members[_0x1f3e55],{'data1':members[_0x1f3e55]['data1']||_0x255f46[_0x8a19('0x2d')],'data2':members[_0x1f3e55][_0x8a19('0x28')]||_0x255f46[_0x8a19('0x29')],'data3':members[_0x1f3e55][_0x8a19('0x2a')]||_0x255f46[_0x8a19('0x2b')],'uniqueid':members[_0x1f3e55][_0x8a19('0x6')]||_0x255f46[_0x8a19('0x6')]});utils[_0x8a19('0x3')](util['format']('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x255f46[_0x8a19('0x6')],members[_0x1f3e55][_0x8a19('0x27')],members[_0x1f3e55][_0x8a19('0x28')],members[_0x1f3e55][_0x8a19('0x2a')]));if(members[_0x1f3e55][_0x8a19('0x1d')]){writeDB(members[_0x1f3e55]);}}}}catch(_0x11e458){utils['error'](util['format']('[%s][members][cdr]',_0x255f46[_0x8a19('0x6')]),_0x11e458);}};
\ No newline at end of file
+var _0xb43b=['CreateMemberReport','getUserByName','split','catch','error','[%s][members][writeDB]','some','startsWith','devicestatechange','debug','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','voice','TALKING','now','agent','NOT_INUSE','duration','exitAt','agentcomplete','isNil','queue','assign','cdr','[%s][members][cdr]','data1','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','lodash','./utils','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','channel','data2','type','then','membername','name','internal','request'];(function(_0x30f60,_0x5aab07){var _0x151f76=function(_0xc56c60){while(--_0xc56c60){_0x30f60['push'](_0x30f60['shift']());}};_0x151f76(++_0x5aab07);}(_0xb43b,0xbf));var _0xbb43=function(_0x54bdcf,_0x36c510){_0x54bdcf=_0x54bdcf-0x0;var _0x495848=_0xb43b[_0x54bdcf];return _0x495848;};'use strict';var _=require(_0xbb43('0x0'));var util=require('util');var utils=require(_0xbb43('0x1'));var members={};var exclude=[_0xbb43('0x2'),_0xbb43('0x3')];function writeDB(_0x293836){utils[_0xbb43('0x4')](util[_0xbb43('0x5')](_0xbb43('0x6'),_0x293836[_0xbb43('0x7')],_0x293836[_0xbb43('0x8')],_0x293836[_0xbb43('0x9')],_0x293836[_0xbb43('0xa')],_0x293836['membername'],_0x293836[_0xbb43('0xb')]));if(_0x293836['interface']){utils['getUserByInterface'](_0x293836[_0xbb43('0x8')])[_0xbb43('0xc')](function(_0x20ed03){if(_0x20ed03){_0x293836[_0xbb43('0xd')]=_0x20ed03[_0xbb43('0xe')];_0x293836['internal']=_0x20ed03[_0xbb43('0xf')];utils[_0xbb43('0x10')](_0xbb43('0x11'),_0x293836);}else{utils[_0xbb43('0x12')](_0x293836['interface'][_0xbb43('0x13')]('/')[0x1])[_0xbb43('0xc')](function(_0x5a25b6){if(_0x5a25b6){_0x293836['membername']=_0x5a25b6['name'];_0x293836[_0xbb43('0xf')]=_0x5a25b6['internal'];utils[_0xbb43('0x10')]('CreateMemberReport',_0x293836);}});}})[_0xbb43('0x14')](function(_0x217a4e){utils[_0xbb43('0x15')](util[_0xbb43('0x5')](_0xbb43('0x16'),_0x293836['uniqueid']),_0x217a4e);});}delete members[_0x293836[_0xbb43('0x8')]];}function startsWith(_0x4ac25c,_0x199726){return _[_0xbb43('0x17')](_0x4ac25c,function(_0x15182b){return _[_0xbb43('0x18')](_0x199726,_0x15182b);});}exports[_0xbb43('0x19')]=function(_0x126f61){try{utils[_0xbb43('0x1a')](util[_0xbb43('0x5')](_0xbb43('0x1b'),members[_0x126f61[_0xbb43('0x1c')]]?members[_0x126f61[_0xbb43('0x1c')]]['uniqueid']:_0x126f61[_0xbb43('0x1c')]),_0x126f61);utils['info'](util[_0xbb43('0x5')](_0xbb43('0x1d'),members[_0x126f61[_0xbb43('0x1c')]]?members[_0x126f61[_0xbb43('0x1c')]]['uniqueid']:_0x126f61[_0xbb43('0x1c')],_0x126f61[_0xbb43('0x1e')],_0x126f61[_0xbb43('0x1c')]));switch(_0x126f61[_0xbb43('0x1e')]){case _0xbb43('0x1f'):case _0xbb43('0x20'):if(!startsWith(exclude,_0x126f61[_0xbb43('0x1c')])){members[_0x126f61[_0xbb43('0x1c')]]={'channel':_0xbb43('0x21'),'interface':_0x126f61[_0xbb43('0x1c')],'type':_0xbb43('0x22'),'enterAt':utils[_0xbb43('0x23')](),'role':_0xbb43('0x24')};}break;case _0xbb43('0x25'):if(!_['isNil'](members[_0x126f61[_0xbb43('0x1c')]])){members[_0x126f61[_0xbb43('0x1c')]]['exitAt']=utils[_0xbb43('0x23')]();members[_0x126f61[_0xbb43('0x1c')]][_0xbb43('0x26')]=utils['diffTime'](members[_0x126f61['device']][_0xbb43('0x27')],members[_0x126f61[_0xbb43('0x1c')]]['enterAt']);if(members[_0x126f61['device']][_0xbb43('0x7')]){writeDB(members[_0x126f61[_0xbb43('0x1c')]]);}}break;default:break;}}catch(_0x268fb5){utils[_0xbb43('0x15')](util[_0xbb43('0x5')](_0xbb43('0x1b'),members[_0x126f61[_0xbb43('0x1c')]]?members[_0x126f61[_0xbb43('0x1c')]]['uniqueid']:_0x126f61[_0xbb43('0x1c')]),_0x268fb5);}};exports[_0xbb43('0x28')]=function(_0x821beb){try{if(!_[_0xbb43('0x29')](members[_0x821beb[_0xbb43('0x8')]])){utils[_0xbb43('0x1a')](util[_0xbb43('0x5')]('[%s][members][agentcomplete]',_0x821beb[_0xbb43('0x7')]),_0x821beb);utils[_0xbb43('0x4')](util[_0xbb43('0x5')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x821beb[_0xbb43('0x7')],_0x821beb[_0xbb43('0x8')],_0x821beb[_0xbb43('0x2a')]));members[_0x821beb[_0xbb43('0x8')]]=_[_0xbb43('0x2b')](members[_0x821beb[_0xbb43('0x8')]],{'data4':_0x821beb[_0xbb43('0x2a')],'uniqueid':_0x821beb[_0xbb43('0x7')]});}}catch(_0xd579d8){utils['error'](util['format']('[%s][members][agentcomplete]',_0x821beb['uniqueid']),_0xd579d8);}};exports[_0xbb43('0x2c')]=function(_0x1186fd){try{utils[_0xbb43('0x1a')](util[_0xbb43('0x5')](_0xbb43('0x2d'),_0x1186fd[_0xbb43('0x7')]),_0x1186fd);if(_0x1186fd[_0xbb43('0x9')]){var _0x3082b3=_0x1186fd['channel'][_0xbb43('0x13')]('-')[0x0];if(!_[_0xbb43('0x29')](members[_0x3082b3])){members[_0x3082b3]=_[_0xbb43('0x2b')](members[_0x3082b3],{'data1':members[_0x3082b3][_0xbb43('0x2e')]||_0x1186fd['type'],'data2':members[_0x3082b3][_0xbb43('0xa')]||_0x1186fd[_0xbb43('0x2f')],'data3':members[_0x3082b3][_0xbb43('0x30')]||_0x1186fd[_0xbb43('0x31')],'uniqueid':members[_0x3082b3]['uniqueid']||_0x1186fd[_0xbb43('0x7')]});utils['info'](util[_0xbb43('0x5')](_0xbb43('0x32'),_0x1186fd[_0xbb43('0x7')],members[_0x3082b3][_0xbb43('0x2e')],members[_0x3082b3][_0xbb43('0xa')],members[_0x3082b3][_0xbb43('0x30')]));if(members[_0x3082b3][_0xbb43('0x27')]){writeDB(members[_0x3082b3]);}}}if(_0x1186fd[_0xbb43('0x33')]){var _0xc087aa=_0x1186fd[_0xbb43('0x33')][_0xbb43('0x13')]('-')[0x0];if(!_[_0xbb43('0x29')](members[_0xc087aa])){members[_0xc087aa]=_['assign'](members[_0xc087aa],{'data1':members[_0xc087aa][_0xbb43('0x2e')]||_0x1186fd[_0xbb43('0xb')],'data2':members[_0xc087aa][_0xbb43('0xa')]||_0x1186fd[_0xbb43('0x2f')],'data3':members[_0xc087aa][_0xbb43('0x30')]||_0x1186fd[_0xbb43('0x31')],'uniqueid':members[_0xc087aa][_0xbb43('0x7')]||_0x1186fd[_0xbb43('0x7')]});utils[_0xbb43('0x4')](util[_0xbb43('0x5')](_0xbb43('0x32'),_0x1186fd[_0xbb43('0x7')],members[_0xc087aa][_0xbb43('0x2e')],members[_0xc087aa][_0xbb43('0xa')],members[_0xc087aa][_0xbb43('0x30')]));if(members[_0xc087aa]['exitAt']){writeDB(members[_0xc087aa]);}}}}catch(_0x4807a3){utils[_0xbb43('0x15')](util[_0xbb43('0x5')](_0xbb43('0x2d'),_0x1186fd[_0xbb43('0x7')]),_0x4807a3);}};
\ No newline at end of file
index bdb7bee..e27db3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8364=['util','./utils','info','format','uniqueid','channel','queue','queuecallerexitreason','then','type','request','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','assign','position','now','error','hangup','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerexit','queuecallercomplete','queuecallercompleteAt','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','[%s][queues][varset]','queuestatus','CONTINUE','queuecallerabandon','queuecallerabandonAt','queuecallerexitAt','value','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','holdtime','diffTime','queuecallerjoinAt','count','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','assigned','accountcode','lastAssignedTo','agentcomplete','reason','transfer','toUpperCase','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','[%s][queues][agentcomplete]','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','extension','transferuniqueid','BLINDTRANSFER','attendedtransfer','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfereruniqueid','origtransfererexten','ATTENDED','transfereelinkedid','clone','calleridnum','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','secondtransfererexten','transferexten','ATTENDEDTRANSFER','transfertargetlinkedid','transfertargetuniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','[%s][queues][musiconholdstop]'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8364,0xc0));var _0x4836=function(_0x107179,_0x46e138){_0x107179=_0x107179-0x0;var _0x31f40e=_0x8364[_0x107179];return _0x31f40e;};'use strict';var _=require('lodash');var util=require(_0x4836('0x0'));var utils=require(_0x4836('0x1'));var queues={};function writeDB(_0x2afc5d){utils[_0x4836('0x2')](util[_0x4836('0x3')]('[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s',_0x2afc5d[_0x4836('0x4')],_0x2afc5d[_0x4836('0x5')],_0x2afc5d[_0x4836('0x6')],_0x2afc5d['lastAssignedTo'],_0x2afc5d['calleridnum'],_0x2afc5d['accountcode'],_0x2afc5d[_0x4836('0x7')]));if(_0x2afc5d[_0x4836('0x6')]){utils['getVoiceQueueByName'](_0x2afc5d['queue'])[_0x4836('0x8')](function(_0x4bff0e){if(_0x4bff0e){_0x2afc5d['type']=_0x4bff0e[_0x4836('0x9')];}utils['request']('CreateVoiceQueueReport',_0x2afc5d);});}else{utils[_0x4836('0xa')]('CreateVoiceQueueReport',_0x2afc5d);}if(_0x2afc5d['transfereduniqueid']){delete queues[_0x2afc5d[_0x4836('0xb')]];}else{delete queues[_0x2afc5d[_0x4836('0x4')]];}}exports[_0x4836('0xc')]=function(_0x4f1b0d){try{utils[_0x4836('0xd')](util[_0x4836('0x3')](_0x4836('0xe'),_0x4f1b0d['uniqueid']),_0x4f1b0d);utils[_0x4836('0x2')](util['format']('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0x4f1b0d[_0x4836('0x4')],_0x4f1b0d[_0x4836('0x6')],_0x4f1b0d['position']));queues[_0x4f1b0d[_0x4836('0x4')]]=_[_0x4836('0xf')](_0x4f1b0d,{'originalposition':_0x4f1b0d[_0x4836('0x10')],'queuecallerjoinAt':utils[_0x4836('0x11')](),'mohtime':0x0});}catch(_0x547770){utils[_0x4836('0x12')](util[_0x4836('0x3')]('[%s][queues][queuecallerjoin]',_0x4f1b0d['uniqueid']),_0x547770);}};exports[_0x4836('0x13')]=function(_0x32b31e){try{if(!_[_0x4836('0x14')](queues[_0x32b31e[_0x4836('0x4')]])){utils[_0x4836('0xd')](util[_0x4836('0x3')](_0x4836('0x15'),_0x32b31e['uniqueid']),_0x32b31e);if(queues[_0x32b31e[_0x4836('0x4')]][_0x4836('0x16')]){if(!queues[_0x32b31e[_0x4836('0x4')]]['queuecallerabandon']&&!queues[_0x32b31e[_0x4836('0x4')]][_0x4836('0x17')]){queues[_0x32b31e[_0x4836('0x4')]][_0x4836('0x18')]=!![];queues[_0x32b31e[_0x4836('0x4')]][_0x4836('0x19')]=utils[_0x4836('0x11')]();queues[_0x32b31e[_0x4836('0x4')]][_0x4836('0x7')]=_0x4836('0x1a');}utils[_0x4836('0x2')](util[_0x4836('0x3')](_0x4836('0x1b'),_0x32b31e[_0x4836('0x4')],queues[_0x32b31e['uniqueid']][_0x4836('0x1c')],queues[_0x32b31e[_0x4836('0x4')]][_0x4836('0x7')]));writeDB(queues[_0x32b31e[_0x4836('0x4')]]);}else if(queues[_0x32b31e['uniqueid']]['transfereduniqueid']){utils[_0x4836('0x2')](util[_0x4836('0x3')](_0x4836('0x1d'),_0x32b31e['uniqueid'],queues[_0x32b31e[_0x4836('0x4')]][_0x4836('0x1c')],queues[_0x32b31e[_0x4836('0x4')]][_0x4836('0xb')]));queues[queues[_0x32b31e[_0x4836('0x4')]][_0x4836('0xb')]]=queues[_0x32b31e[_0x4836('0x4')]];queues[queues[_0x32b31e[_0x4836('0x4')]]['transfereduniqueid']][_0x4836('0x1e')]=0x2;delete queues[_0x32b31e[_0x4836('0x4')]];}}}catch(_0x22c4f7){utils[_0x4836('0x12')](util['format']('[%s][queues][hangup]',_0x32b31e[_0x4836('0x4')]),_0x22c4f7);}};exports['varset']=function(_0x249d5c){try{utils[_0x4836('0xd')](util[_0x4836('0x3')](_0x4836('0x1f'),_0x249d5c[_0x4836('0x4')]),_0x249d5c);if(!_[_0x4836('0x14')](_0x249d5c['variable'][_0x4836('0x20')])&&_0x249d5c['value']['toUpperCase']()!==_0x4836('0x21')){if(!_[_0x4836('0x14')](queues[_0x249d5c[_0x4836('0x4')]])){queues[_0x249d5c[_0x4836('0x4')]][_0x4836('0x22')]=![];queues[_0x249d5c[_0x4836('0x4')]][_0x4836('0x23')]=null;queues[_0x249d5c[_0x4836('0x4')]][_0x4836('0x17')]=!![];queues[_0x249d5c[_0x4836('0x4')]][_0x4836('0x24')]=utils[_0x4836('0x11')]();queues[_0x249d5c['uniqueid']][_0x4836('0x7')]=_0x249d5c[_0x4836('0x25')]['toUpperCase']();utils[_0x4836('0x2')](util[_0x4836('0x3')](_0x4836('0x26'),_0x249d5c[_0x4836('0x4')],queues[_0x249d5c['uniqueid']][_0x4836('0x1c')],_0x249d5c['value'],queues[_0x249d5c['uniqueid']][_0x4836('0x7')]));writeDB(queues[_0x249d5c[_0x4836('0x4')]]);}}else if(!_[_0x4836('0x14')](_0x249d5c['variable']['queueposition'])){if(!_[_0x4836('0x14')](queues[_0x249d5c['uniqueid']])&&!queues[_0x249d5c[_0x4836('0x4')]][_0x4836('0x22')]){queues[_0x249d5c[_0x4836('0x4')]][_0x4836('0x22')]=![];queues[_0x249d5c[_0x4836('0x4')]][_0x4836('0x23')]=null;queues[_0x249d5c[_0x4836('0x4')]]['queuecallerexit']=!![];queues[_0x249d5c[_0x4836('0x4')]][_0x4836('0x24')]=utils['now']();queues[_0x249d5c[_0x4836('0x4')]][_0x4836('0x7')]='EXITWITHKEY';utils[_0x4836('0x2')](util[_0x4836('0x3')](_0x4836('0x27'),_0x249d5c[_0x4836('0x4')],queues[_0x249d5c[_0x4836('0x4')]][_0x4836('0x1c')],_0x249d5c[_0x4836('0x25')],queues[_0x249d5c[_0x4836('0x4')]][_0x4836('0x7')]));}}}catch(_0x5f4eca){utils[_0x4836('0x12')](util[_0x4836('0x3')](_0x4836('0x1f'),_0x249d5c[_0x4836('0x4')]),_0x5f4eca);}};exports[_0x4836('0x22')]=function(_0x527a6d){try{if(!_[_0x4836('0x14')](queues[_0x527a6d[_0x4836('0x4')]])){utils[_0x4836('0xd')](util[_0x4836('0x3')]('[%s][queues][queuecallerabandon]',_0x527a6d[_0x4836('0x4')]),_0x527a6d);queues[_0x527a6d[_0x4836('0x4')]]['queuecallerexit']=![];queues[_0x527a6d[_0x4836('0x4')]][_0x4836('0x24')]=null;queues[_0x527a6d[_0x4836('0x4')]][_0x4836('0x22')]=!![];queues[_0x527a6d[_0x4836('0x4')]][_0x4836('0x23')]=utils[_0x4836('0x11')]();queues[_0x527a6d[_0x4836('0x4')]][_0x4836('0x7')]='ABANDONED';utils[_0x4836('0x2')](util['format']('[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s',_0x527a6d['uniqueid'],queues[_0x527a6d[_0x4836('0x4')]][_0x4836('0x1c')],queues[_0x527a6d['uniqueid']][_0x4836('0x7')]));}}catch(_0x3361e0){utils['error'](util[_0x4836('0x3')](_0x4836('0x28'),_0x527a6d[_0x4836('0x4')]),_0x3361e0);}};exports[_0x4836('0x29')]=function(_0x4d9bdc){try{if(!_[_0x4836('0x14')](queues[_0x4d9bdc[_0x4836('0x4')]])){utils['debug'](util[_0x4836('0x3')](_0x4836('0x2a'),_0x4d9bdc[_0x4836('0x4')]),_0x4d9bdc);utils['info'](util[_0x4836('0x3')](_0x4836('0x2b'),_0x4d9bdc[_0x4836('0x4')],queues[_0x4d9bdc[_0x4836('0x4')]][_0x4836('0x1c')],_0x4d9bdc[_0x4836('0x2c')],_0x4d9bdc[_0x4836('0x2d')]));queues[_0x4d9bdc['uniqueid']]['queuecallerleave']=!![];queues[_0x4d9bdc[_0x4836('0x4')]]['queuecallerleaveAt']=utils[_0x4836('0x11')]();queues[_0x4d9bdc[_0x4836('0x4')]][_0x4836('0x2e')]=utils[_0x4836('0x2f')](queues[_0x4d9bdc['uniqueid']]['queuecallerleaveAt'],queues[_0x4d9bdc[_0x4836('0x4')]][_0x4836('0x30')]);queues[_0x4d9bdc['uniqueid']][_0x4836('0x10')]=_0x4d9bdc[_0x4836('0x10')];queues[_0x4d9bdc[_0x4836('0x4')]]['count']=_0x4d9bdc[_0x4836('0x31')];queues[_0x4d9bdc['uniqueid']]['connectedlinenum']=_0x4d9bdc[_0x4836('0x2c')];queues[_0x4d9bdc[_0x4836('0x4')]]['connectedlinename']=_0x4d9bdc[_0x4836('0x2d')];}}catch(_0x3ac1bc){utils[_0x4836('0x12')](util[_0x4836('0x3')](_0x4836('0x2a'),_0x4d9bdc[_0x4836('0x4')]),_0x3ac1bc);}};exports['agentconnect']=function(_0x35388c){try{if(!_[_0x4836('0x14')](queues[_0x35388c['uniqueid']])){utils['debug'](util[_0x4836('0x3')](_0x4836('0x32'),_0x35388c['uniqueid']),_0x35388c);utils[_0x4836('0x2')](util[_0x4836('0x3')](_0x4836('0x33'),_0x35388c[_0x4836('0x4')],queues[_0x35388c[_0x4836('0x4')]]['name'],_0x35388c[_0x4836('0x34')],_0x35388c['destaccountcode']));queues[_0x35388c[_0x4836('0x4')]]['queuecallerabandon']=![];queues[_0x35388c[_0x4836('0x4')]][_0x4836('0x22')]=![];queues[_0x35388c[_0x4836('0x4')]][_0x4836('0x23')]=null;queues[_0x35388c['uniqueid']][_0x4836('0x17')]=![];queues[_0x35388c[_0x4836('0x4')]][_0x4836('0x7')]=null;queues[_0x35388c['uniqueid']][_0x4836('0x24')]=null;queues[_0x35388c['uniqueid']][_0x4836('0x35')]=!![];queues[_0x35388c[_0x4836('0x4')]][_0x4836('0x36')]=_0x35388c['destaccountcode'];queues[_0x35388c[_0x4836('0x4')]][_0x4836('0x37')]=_0x35388c[_0x4836('0x34')];}}catch(_0x455bd1){utils[_0x4836('0x12')](util['format']('[%s][queues][agentconnect]',_0x35388c[_0x4836('0x4')]),_0x455bd1);}};exports[_0x4836('0x38')]=function(_0x27309f){try{if(!_[_0x4836('0x14')](queues[_0x27309f[_0x4836('0x4')]])){if(queues[_0x27309f[_0x4836('0x4')]][_0x4836('0x16')]){utils[_0x4836('0xd')](util['format']('[%s][queues][agentcomplete]',_0x27309f[_0x4836('0x4')]),_0x27309f);queues[_0x27309f[_0x4836('0x4')]][_0x4836('0x22')]=![];queues[_0x27309f[_0x4836('0x4')]]['queuecallerabandon']=![];queues[_0x27309f[_0x4836('0x4')]]['queuecallerabandonAt']=null;queues[_0x27309f['uniqueid']]['queuecallerexit']=![];queues[_0x27309f[_0x4836('0x4')]][_0x4836('0x24')]=null;queues[_0x27309f['uniqueid']][_0x4836('0x35')]=!![];queues[_0x27309f[_0x4836('0x4')]][_0x4836('0x37')]=_0x27309f[_0x4836('0x34')];queues[_0x27309f[_0x4836('0x4')]][_0x4836('0x18')]=!![];queues[_0x27309f[_0x4836('0x4')]][_0x4836('0x19')]=utils[_0x4836('0x11')]();if(_0x27309f[_0x4836('0x39')]=='transfer'){if(!queues[_0x27309f[_0x4836('0x4')]][_0x4836('0x3a')]){queues[_0x27309f['uniqueid']][_0x4836('0x7')]='TRANSFER';}}else{queues[_0x27309f[_0x4836('0x4')]][_0x4836('0x7')]='COMPLETEDBY'+_0x27309f[_0x4836('0x39')][_0x4836('0x3b')]();}utils[_0x4836('0x2')](util[_0x4836('0x3')](_0x4836('0x3c'),_0x27309f[_0x4836('0x4')],queues[_0x27309f[_0x4836('0x4')]][_0x4836('0x1c')],_0x27309f[_0x4836('0x34')],queues[_0x27309f['uniqueid']][_0x4836('0x7')]));writeDB(queues[_0x27309f[_0x4836('0x4')]]);}}}catch(_0x423bc0){utils[_0x4836('0x12')](util[_0x4836('0x3')](_0x4836('0x3d'),_0x27309f[_0x4836('0x4')]),_0x423bc0);}};exports['blindtransfer']=function(_0x1c2b5e){try{if(!_['isNil'](queues[_0x1c2b5e[_0x4836('0x3e')]])){utils[_0x4836('0xd')](util[_0x4836('0x3')](_0x4836('0x3f'),_0x1c2b5e[_0x4836('0x4')]),_0x1c2b5e);queues[_0x1c2b5e['transfereeuniqueid']]['transfer']=!![];queues[_0x1c2b5e[_0x4836('0x3e')]][_0x4836('0x40')]='BLIND';queues[_0x1c2b5e[_0x4836('0x3e')]]['transferexten']=_0x1c2b5e[_0x4836('0x41')];queues[_0x1c2b5e[_0x4836('0x3e')]][_0x4836('0x42')]=_0x1c2b5e['transfereeuniqueid'];queues[_0x1c2b5e['transfereeuniqueid']][_0x4836('0x7')]=_0x4836('0x43');utils['info'](util[_0x4836('0x3')]('[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER',_0x1c2b5e[_0x4836('0x4')],queues[_0x1c2b5e[_0x4836('0x3e')]][_0x4836('0x1c')],_0x1c2b5e[_0x4836('0x3e')],_0x1c2b5e['extension']));}}catch(_0x4f999c){utils[_0x4836('0x12')](util[_0x4836('0x3')](_0x4836('0x3f'),_0x1c2b5e['uniqueid']),_0x4f999c);}};exports[_0x4836('0x44')]=function(_0x44c746){try{utils['debug'](util[_0x4836('0x3')]('[%s][queues][attendedtransfer]',_0x44c746['origtransfereruniqueid']),_0x44c746);if(_0x44c746['origtransfereruniqueid']==_0x44c746[_0x4836('0x45')]){if(!_['isNil'](queues[_0x44c746[_0x4836('0x46')]])){utils[_0x4836('0x2')](util[_0x4836('0x3')](_0x4836('0x47'),_0x44c746[_0x4836('0x48')],queues[_0x44c746['secondtransfererlinkedid']]['name'],_0x44c746[_0x4836('0x49')]));queues[_0x44c746[_0x4836('0x46')]][_0x4836('0x3a')]=!![];queues[_0x44c746['secondtransfererlinkedid']][_0x4836('0x40')]=_0x4836('0x4a');queues[_0x44c746['secondtransfererlinkedid']]['transferexten']=_0x44c746[_0x4836('0x49')];queues[_0x44c746[_0x4836('0x46')]][_0x4836('0x42')]=_0x44c746[_0x4836('0x48')];queues[_0x44c746[_0x4836('0x46')]][_0x4836('0x7')]='ATTENDEDTRANSFER';}if(!_['isNil'](queues[_0x44c746['origtransfererlinkedid']])){if(_0x44c746[_0x4836('0x4b')]&&queues[_0x44c746[_0x4836('0x4b')]]){queues[_0x44c746[_0x4836('0x4b')]][_0x4836('0x1e')]=0x1;queues[_0x44c746[_0x4836('0x3e')]]=_[_0x4836('0x4c')](queues[_0x44c746['transfereelinkedid']]);queues[_0x44c746['transfereeuniqueid']][_0x4836('0xb')]=_0x44c746['transfertargetuniqueid'];queues[_0x44c746[_0x4836('0x3e')]]['queuecallerenterreason']=0x2;queues[_0x44c746[_0x4836('0x3e')]][_0x4836('0x4d')]=queues[_0x44c746[_0x4836('0x46')]][_0x4836('0x4d')];queues[_0x44c746['transfereeuniqueid']][_0x4836('0x4e')]=queues[_0x44c746['secondtransfererlinkedid']][_0x4836('0x4e')];queues[_0x44c746[_0x4836('0x3e')]][_0x4836('0x30')]=utils[_0x4836('0x11')]();queues[_0x44c746[_0x4836('0x3e')]][_0x4836('0x16')]=utils['now']();queues[_0x44c746[_0x4836('0x3e')]][_0x4836('0x2e')]=0x0;queues[_0x44c746[_0x4836('0x3e')]][_0x4836('0x4f')]=0x0;utils[_0x4836('0x2')](util[_0x4836('0x3')](_0x4836('0x50'),_0x44c746[_0x4836('0x48')],queues[_0x44c746['transfereeuniqueid']][_0x4836('0x1c')],queues[_0x44c746['transfereeuniqueid']][_0x4836('0x4d')],queues[_0x44c746['transfereeuniqueid']][_0x4836('0x4e')]));}else{utils[_0x4836('0x2')](util['format'](_0x4836('0x51'),_0x44c746[_0x4836('0x48')],queues[_0x44c746['origtransfererlinkedid']]['name'],_0x44c746[_0x4836('0x46')]));queues[_0x44c746[_0x4836('0x45')]][_0x4836('0xb')]=_0x44c746[_0x4836('0x46')];}}}else if(_0x44c746['secondtransfereruniqueid']==_0x44c746[_0x4836('0x46')]){if(!_[_0x4836('0x14')](queues[_0x44c746[_0x4836('0x45')]])){utils[_0x4836('0x2')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x44c746[_0x4836('0x48')],queues[_0x44c746[_0x4836('0x45')]]['name'],_0x44c746[_0x4836('0x52')],_0x44c746[_0x4836('0x53')]));queues[_0x44c746[_0x4836('0x45')]][_0x4836('0x3a')]=!![];queues[_0x44c746['origtransfererlinkedid']][_0x4836('0x40')]=_0x4836('0x4a');queues[_0x44c746['origtransfererlinkedid']][_0x4836('0x54')]=_0x44c746[_0x4836('0x53')];queues[_0x44c746[_0x4836('0x45')]][_0x4836('0x42')]=_0x44c746[_0x4836('0x52')];queues[_0x44c746[_0x4836('0x45')]][_0x4836('0x7')]=_0x4836('0x55');}if(!_[_0x4836('0x14')](queues[_0x44c746[_0x4836('0x46')]])){if(_0x44c746[_0x4836('0x56')]&&queues[_0x44c746[_0x4836('0x56')]]){queues[_0x44c746['transfertargetlinkedid']][_0x4836('0x1e')]=0x1;queues[_0x44c746['transfertargetuniqueid']]=_['clone'](queues[_0x44c746[_0x4836('0x56')]]);queues[_0x44c746[_0x4836('0x57')]][_0x4836('0xb')]=_0x44c746['transfertargetuniqueid'];queues[_0x44c746['transfertargetuniqueid']][_0x4836('0x1e')]=0x2;queues[_0x44c746['transfertargetuniqueid']][_0x4836('0x4d')]=queues[_0x44c746[_0x4836('0x45')]]['calleridnum'];queues[_0x44c746['transfertargetuniqueid']][_0x4836('0x4e')]=queues[_0x44c746[_0x4836('0x45')]][_0x4836('0x4e')];queues[_0x44c746['transfertargetuniqueid']][_0x4836('0x30')]=utils[_0x4836('0x11')]();queues[_0x44c746['transfertargetuniqueid']][_0x4836('0x16')]=utils[_0x4836('0x11')]();queues[_0x44c746[_0x4836('0x57')]]['holdtime']=0x0;queues[_0x44c746[_0x4836('0x57')]][_0x4836('0x4f')]=0x0;utils['info'](util['format'](_0x4836('0x58'),_0x44c746[_0x4836('0x48')],queues[_0x44c746['transfertargetuniqueid']]['name'],queues[_0x44c746[_0x4836('0x57')]]['transfereduniqueid'],queues[_0x44c746[_0x4836('0x57')]][_0x4836('0x4d')],queues[_0x44c746[_0x4836('0x57')]][_0x4836('0x4e')]));}else{utils[_0x4836('0x2')](util[_0x4836('0x3')](_0x4836('0x51'),_0x44c746[_0x4836('0x48')],queues[_0x44c746[_0x4836('0x46')]][_0x4836('0x1c')],_0x44c746[_0x4836('0x45')]));queues[_0x44c746[_0x4836('0x46')]]['transfereduniqueid']=_0x44c746[_0x4836('0x45')];}}}}catch(_0xc32062){utils[_0x4836('0x12')](util[_0x4836('0x3')](_0x4836('0x59'),_0x44c746['origtransfereruniqueid']),_0xc32062);}};exports[_0x4836('0x5a')]=function(_0x29d64d){try{if(!_['isNil'](queues[_0x29d64d['uniqueid']])){utils[_0x4836('0xd')](util['format'](_0x4836('0x5b'),_0x29d64d[_0x4836('0x4')]),_0x29d64d);queues[_0x29d64d[_0x4836('0x4')]][_0x4836('0x5c')]=utils['now']();utils[_0x4836('0x2')](util['format'](_0x4836('0x5d'),_0x29d64d[_0x4836('0x4')],queues[_0x29d64d[_0x4836('0x4')]][_0x4836('0x1c')],queues[_0x29d64d[_0x4836('0x4')]]['musiconholdstartAt']));}}catch(_0x3b9ae1){utils[_0x4836('0x12')](util[_0x4836('0x3')](_0x4836('0x5b'),_0x29d64d['uniqueid']),_0x3b9ae1);}};exports[_0x4836('0x5e')]=function(_0x56dac7){try{if(!_[_0x4836('0x14')](queues[_0x56dac7['uniqueid']])){if(!_['isNil'](queues[_0x56dac7[_0x4836('0x4')]]['musiconholdstartAt'])){utils[_0x4836('0xd')](util[_0x4836('0x3')]('[%s][queues][musiconholdstop]',_0x56dac7[_0x4836('0x4')]),_0x56dac7);queues[_0x56dac7[_0x4836('0x4')]]['mohtime']+=utils['diffTime'](utils['now'](),queues[_0x56dac7[_0x4836('0x4')]][_0x4836('0x5c')]);utils[_0x4836('0x2')](util[_0x4836('0x3')]('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x56dac7[_0x4836('0x4')],queues[_0x56dac7[_0x4836('0x4')]]['name'],queues[_0x56dac7[_0x4836('0x4')]]['mohtime']));delete queues[_0x56dac7['uniqueid']][_0x4836('0x5c')];}}}catch(_0x4b0b1f){utils[_0x4836('0x12')](util['format'](_0x4836('0x5f'),_0x56dac7[_0x4836('0x4')]),_0x4b0b1f);}};
\ No newline at end of file
+var _0x6304=['queuecallerjoinAt','count','connectedlinenum','connectedlinename','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','agentcomplete','[%s][queues][agentcomplete]','transfer','COMPLETEDBY','reason','[%s][queues][blindtransfer]','transfereeuniqueid','transfertype','BLIND','extension','transferuniqueid','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','transferexten','origtransfererexten','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','transfertargetlinkedid','[%s][queues][attendedtransfer]','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','./utils','info','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','queue','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','CreateVoiceQueueReport','request','transfereduniqueid','queuecallerjoin','debug','format','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','assign','position','now','[%s][queues][queuecallerjoin]','[%s][queues][hangup]','queuecallerleaveAt','queuecallerexit','queuecallercomplete','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','error','varset','[%s][queues][varset]','isNil','variable','queuestatus','toUpperCase','CONTINUE','queuecallerabandonAt','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','value','queueposition','queuecallerabandon','EXITWITHKEY','[%s][queues][queuecallerabandon]','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','holdtime','diffTime'];(function(_0x232248,_0x493ede){var _0x149261=function(_0x5de40e){while(--_0x5de40e){_0x232248['push'](_0x232248['shift']());}};_0x149261(++_0x493ede);}(_0x6304,0xf6));var _0x4630=function(_0x4d2d57,_0x375bec){_0x4d2d57=_0x4d2d57-0x0;var _0x172c5d=_0x6304[_0x4d2d57];return _0x172c5d;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0x4630('0x0'));var queues={};function writeDB(_0x113e9c){utils[_0x4630('0x1')](util['format'](_0x4630('0x2'),_0x113e9c[_0x4630('0x3')],_0x113e9c['channel'],_0x113e9c[_0x4630('0x4')],_0x113e9c[_0x4630('0x5')],_0x113e9c[_0x4630('0x6')],_0x113e9c[_0x4630('0x7')],_0x113e9c[_0x4630('0x8')]));if(_0x113e9c[_0x4630('0x4')]){utils[_0x4630('0x9')](_0x113e9c[_0x4630('0x4')])[_0x4630('0xa')](function(_0x5d96e0){if(_0x5d96e0){_0x113e9c[_0x4630('0xb')]=_0x5d96e0[_0x4630('0xb')];}utils['request'](_0x4630('0xc'),_0x113e9c);});}else{utils[_0x4630('0xd')](_0x4630('0xc'),_0x113e9c);}if(_0x113e9c[_0x4630('0xe')]){delete queues[_0x113e9c[_0x4630('0xe')]];}else{delete queues[_0x113e9c['uniqueid']];}}exports[_0x4630('0xf')]=function(_0x2f2bd7){try{utils[_0x4630('0x10')](util['format']('[%s][queues][queuecallerjoin]',_0x2f2bd7[_0x4630('0x3')]),_0x2f2bd7);utils[_0x4630('0x1')](util[_0x4630('0x11')](_0x4630('0x12'),_0x2f2bd7[_0x4630('0x3')],_0x2f2bd7[_0x4630('0x4')],_0x2f2bd7['position']));queues[_0x2f2bd7[_0x4630('0x3')]]=_[_0x4630('0x13')](_0x2f2bd7,{'originalposition':_0x2f2bd7[_0x4630('0x14')],'queuecallerjoinAt':utils[_0x4630('0x15')](),'mohtime':0x0});}catch(_0x5b23b1){utils['error'](util[_0x4630('0x11')](_0x4630('0x16'),_0x2f2bd7['uniqueid']),_0x5b23b1);}};exports['hangup']=function(_0x227fdb){try{if(!_['isNil'](queues[_0x227fdb[_0x4630('0x3')]])){utils[_0x4630('0x10')](util[_0x4630('0x11')](_0x4630('0x17'),_0x227fdb[_0x4630('0x3')]),_0x227fdb);if(queues[_0x227fdb['uniqueid']][_0x4630('0x18')]){if(!queues[_0x227fdb[_0x4630('0x3')]]['queuecallerabandon']&&!queues[_0x227fdb[_0x4630('0x3')]][_0x4630('0x19')]){queues[_0x227fdb['uniqueid']][_0x4630('0x1a')]=!![];queues[_0x227fdb['uniqueid']]['queuecallercompleteAt']=utils[_0x4630('0x15')]();queues[_0x227fdb[_0x4630('0x3')]][_0x4630('0x8')]=_0x4630('0x1b');}utils[_0x4630('0x1')](util[_0x4630('0x11')](_0x4630('0x1c'),_0x227fdb[_0x4630('0x3')],queues[_0x227fdb[_0x4630('0x3')]][_0x4630('0x1d')],queues[_0x227fdb[_0x4630('0x3')]]['queuecallerexitreason']));writeDB(queues[_0x227fdb[_0x4630('0x3')]]);}else if(queues[_0x227fdb[_0x4630('0x3')]][_0x4630('0xe')]){utils[_0x4630('0x1')](util[_0x4630('0x11')](_0x4630('0x1e'),_0x227fdb[_0x4630('0x3')],queues[_0x227fdb['uniqueid']][_0x4630('0x1d')],queues[_0x227fdb['uniqueid']][_0x4630('0xe')]));queues[queues[_0x227fdb[_0x4630('0x3')]][_0x4630('0xe')]]=queues[_0x227fdb[_0x4630('0x3')]];queues[queues[_0x227fdb[_0x4630('0x3')]]['transfereduniqueid']][_0x4630('0x1f')]=0x2;delete queues[_0x227fdb['uniqueid']];}}}catch(_0x28a9d8){utils[_0x4630('0x20')](util[_0x4630('0x11')]('[%s][queues][hangup]',_0x227fdb[_0x4630('0x3')]),_0x28a9d8);}};exports[_0x4630('0x21')]=function(_0xdb1f1a){try{utils[_0x4630('0x10')](util[_0x4630('0x11')](_0x4630('0x22'),_0xdb1f1a['uniqueid']),_0xdb1f1a);if(!_[_0x4630('0x23')](_0xdb1f1a[_0x4630('0x24')][_0x4630('0x25')])&&_0xdb1f1a['value'][_0x4630('0x26')]()!==_0x4630('0x27')){if(!_[_0x4630('0x23')](queues[_0xdb1f1a['uniqueid']])){queues[_0xdb1f1a[_0x4630('0x3')]]['queuecallerabandon']=![];queues[_0xdb1f1a[_0x4630('0x3')]][_0x4630('0x28')]=null;queues[_0xdb1f1a['uniqueid']][_0x4630('0x19')]=!![];queues[_0xdb1f1a[_0x4630('0x3')]][_0x4630('0x29')]=utils['now']();queues[_0xdb1f1a['uniqueid']][_0x4630('0x8')]=_0xdb1f1a['value'][_0x4630('0x26')]();utils[_0x4630('0x1')](util[_0x4630('0x11')](_0x4630('0x2a'),_0xdb1f1a[_0x4630('0x3')],queues[_0xdb1f1a[_0x4630('0x3')]][_0x4630('0x1d')],_0xdb1f1a[_0x4630('0x2b')],queues[_0xdb1f1a['uniqueid']][_0x4630('0x8')]));writeDB(queues[_0xdb1f1a[_0x4630('0x3')]]);}}else if(!_[_0x4630('0x23')](_0xdb1f1a['variable'][_0x4630('0x2c')])){if(!_[_0x4630('0x23')](queues[_0xdb1f1a[_0x4630('0x3')]])&&!queues[_0xdb1f1a['uniqueid']]['queuecallerabandon']){queues[_0xdb1f1a[_0x4630('0x3')]][_0x4630('0x2d')]=![];queues[_0xdb1f1a[_0x4630('0x3')]][_0x4630('0x28')]=null;queues[_0xdb1f1a['uniqueid']][_0x4630('0x19')]=!![];queues[_0xdb1f1a['uniqueid']][_0x4630('0x29')]=utils[_0x4630('0x15')]();queues[_0xdb1f1a['uniqueid']][_0x4630('0x8')]=_0x4630('0x2e');utils[_0x4630('0x1')](util[_0x4630('0x11')]('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0xdb1f1a['uniqueid'],queues[_0xdb1f1a[_0x4630('0x3')]][_0x4630('0x1d')],_0xdb1f1a[_0x4630('0x2b')],queues[_0xdb1f1a['uniqueid']]['queuecallerexitreason']));}}}catch(_0x4a1774){utils['error'](util['format']('[%s][queues][varset]',_0xdb1f1a['uniqueid']),_0x4a1774);}};exports[_0x4630('0x2d')]=function(_0x27f917){try{if(!_[_0x4630('0x23')](queues[_0x27f917['uniqueid']])){utils[_0x4630('0x10')](util[_0x4630('0x11')](_0x4630('0x2f'),_0x27f917[_0x4630('0x3')]),_0x27f917);queues[_0x27f917[_0x4630('0x3')]][_0x4630('0x19')]=![];queues[_0x27f917[_0x4630('0x3')]]['queuecallerexitAt']=null;queues[_0x27f917[_0x4630('0x3')]][_0x4630('0x2d')]=!![];queues[_0x27f917['uniqueid']][_0x4630('0x28')]=utils['now']();queues[_0x27f917[_0x4630('0x3')]][_0x4630('0x8')]='ABANDONED';utils[_0x4630('0x1')](util['format'](_0x4630('0x30'),_0x27f917[_0x4630('0x3')],queues[_0x27f917['uniqueid']][_0x4630('0x1d')],queues[_0x27f917[_0x4630('0x3')]][_0x4630('0x8')]));}}catch(_0x331c7a){utils[_0x4630('0x20')](util[_0x4630('0x11')](_0x4630('0x2f'),_0x27f917[_0x4630('0x3')]),_0x331c7a);}};exports[_0x4630('0x31')]=function(_0x4f02c6){try{if(!_[_0x4630('0x23')](queues[_0x4f02c6[_0x4630('0x3')]])){utils['debug'](util[_0x4630('0x11')](_0x4630('0x32'),_0x4f02c6[_0x4630('0x3')]),_0x4f02c6);utils[_0x4630('0x1')](util[_0x4630('0x11')](_0x4630('0x33'),_0x4f02c6['uniqueid'],queues[_0x4f02c6['uniqueid']][_0x4630('0x1d')],_0x4f02c6['connectedlinenum'],_0x4f02c6['connectedlinename']));queues[_0x4f02c6[_0x4630('0x3')]][_0x4630('0x31')]=!![];queues[_0x4f02c6[_0x4630('0x3')]][_0x4630('0x18')]=utils[_0x4630('0x15')]();queues[_0x4f02c6[_0x4630('0x3')]][_0x4630('0x34')]=utils[_0x4630('0x35')](queues[_0x4f02c6['uniqueid']]['queuecallerleaveAt'],queues[_0x4f02c6[_0x4630('0x3')]][_0x4630('0x36')]);queues[_0x4f02c6[_0x4630('0x3')]][_0x4630('0x14')]=_0x4f02c6['position'];queues[_0x4f02c6['uniqueid']][_0x4630('0x37')]=_0x4f02c6[_0x4630('0x37')];queues[_0x4f02c6[_0x4630('0x3')]]['connectedlinenum']=_0x4f02c6[_0x4630('0x38')];queues[_0x4f02c6[_0x4630('0x3')]][_0x4630('0x39')]=_0x4f02c6[_0x4630('0x39')];}}catch(_0x11f584){utils['error'](util['format'](_0x4630('0x32'),_0x4f02c6['uniqueid']),_0x11f584);}};exports[_0x4630('0x3a')]=function(_0x4bbaa5){try{if(!_[_0x4630('0x23')](queues[_0x4bbaa5[_0x4630('0x3')]])){utils['debug'](util[_0x4630('0x11')](_0x4630('0x3b'),_0x4bbaa5[_0x4630('0x3')]),_0x4bbaa5);utils['info'](util[_0x4630('0x11')](_0x4630('0x3c'),_0x4bbaa5[_0x4630('0x3')],queues[_0x4bbaa5['uniqueid']][_0x4630('0x1d')],_0x4bbaa5[_0x4630('0x3d')],_0x4bbaa5[_0x4630('0x3e')]));queues[_0x4bbaa5['uniqueid']][_0x4630('0x2d')]=![];queues[_0x4bbaa5[_0x4630('0x3')]]['queuecallerabandon']=![];queues[_0x4bbaa5[_0x4630('0x3')]][_0x4630('0x28')]=null;queues[_0x4bbaa5[_0x4630('0x3')]][_0x4630('0x19')]=![];queues[_0x4bbaa5[_0x4630('0x3')]]['queuecallerexitreason']=null;queues[_0x4bbaa5[_0x4630('0x3')]][_0x4630('0x29')]=null;queues[_0x4bbaa5['uniqueid']][_0x4630('0x3f')]=!![];queues[_0x4bbaa5[_0x4630('0x3')]][_0x4630('0x7')]=_0x4bbaa5[_0x4630('0x3e')];queues[_0x4bbaa5[_0x4630('0x3')]][_0x4630('0x5')]=_0x4bbaa5[_0x4630('0x3d')];}}catch(_0x4fa23a){utils[_0x4630('0x20')](util[_0x4630('0x11')](_0x4630('0x3b'),_0x4bbaa5[_0x4630('0x3')]),_0x4fa23a);}};exports[_0x4630('0x40')]=function(_0x481cd0){try{if(!_['isNil'](queues[_0x481cd0['uniqueid']])){if(queues[_0x481cd0[_0x4630('0x3')]]['queuecallerleaveAt']){utils[_0x4630('0x10')](util['format'](_0x4630('0x41'),_0x481cd0[_0x4630('0x3')]),_0x481cd0);queues[_0x481cd0[_0x4630('0x3')]][_0x4630('0x2d')]=![];queues[_0x481cd0['uniqueid']][_0x4630('0x2d')]=![];queues[_0x481cd0[_0x4630('0x3')]][_0x4630('0x28')]=null;queues[_0x481cd0[_0x4630('0x3')]]['queuecallerexit']=![];queues[_0x481cd0['uniqueid']][_0x4630('0x29')]=null;queues[_0x481cd0[_0x4630('0x3')]][_0x4630('0x3f')]=!![];queues[_0x481cd0[_0x4630('0x3')]][_0x4630('0x5')]=_0x481cd0[_0x4630('0x3d')];queues[_0x481cd0[_0x4630('0x3')]]['queuecallercomplete']=!![];queues[_0x481cd0[_0x4630('0x3')]]['queuecallercompleteAt']=utils[_0x4630('0x15')]();if(_0x481cd0['reason']==_0x4630('0x42')){if(!queues[_0x481cd0[_0x4630('0x3')]][_0x4630('0x42')]){queues[_0x481cd0['uniqueid']][_0x4630('0x8')]='TRANSFER';}}else{queues[_0x481cd0[_0x4630('0x3')]][_0x4630('0x8')]=_0x4630('0x43')+_0x481cd0[_0x4630('0x44')][_0x4630('0x26')]();}utils[_0x4630('0x1')](util[_0x4630('0x11')]('[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s',_0x481cd0[_0x4630('0x3')],queues[_0x481cd0[_0x4630('0x3')]][_0x4630('0x1d')],_0x481cd0[_0x4630('0x3d')],queues[_0x481cd0[_0x4630('0x3')]]['queuecallerexitreason']));writeDB(queues[_0x481cd0['uniqueid']]);}}}catch(_0x4787b7){utils['error'](util['format'](_0x4630('0x41'),_0x481cd0[_0x4630('0x3')]),_0x4787b7);}};exports['blindtransfer']=function(_0x157c2f){try{if(!_[_0x4630('0x23')](queues[_0x157c2f['transfereeuniqueid']])){utils['debug'](util[_0x4630('0x11')](_0x4630('0x45'),_0x157c2f[_0x4630('0x3')]),_0x157c2f);queues[_0x157c2f[_0x4630('0x46')]][_0x4630('0x42')]=!![];queues[_0x157c2f[_0x4630('0x46')]][_0x4630('0x47')]=_0x4630('0x48');queues[_0x157c2f[_0x4630('0x46')]]['transferexten']=_0x157c2f[_0x4630('0x49')];queues[_0x157c2f[_0x4630('0x46')]][_0x4630('0x4a')]=_0x157c2f[_0x4630('0x46')];queues[_0x157c2f[_0x4630('0x46')]]['queuecallerexitreason']='BLINDTRANSFER';utils[_0x4630('0x1')](util[_0x4630('0x11')](_0x4630('0x4b'),_0x157c2f['uniqueid'],queues[_0x157c2f[_0x4630('0x46')]][_0x4630('0x1d')],_0x157c2f[_0x4630('0x46')],_0x157c2f[_0x4630('0x49')]));}}catch(_0x4b1551){utils[_0x4630('0x20')](util[_0x4630('0x11')](_0x4630('0x45'),_0x157c2f[_0x4630('0x3')]),_0x4b1551);}};exports[_0x4630('0x4c')]=function(_0x955663){try{utils[_0x4630('0x10')](util[_0x4630('0x11')]('[%s][queues][attendedtransfer]',_0x955663['origtransfereruniqueid']),_0x955663);if(_0x955663[_0x4630('0x4d')]==_0x955663[_0x4630('0x4e')]){if(!_[_0x4630('0x23')](queues[_0x955663[_0x4630('0x4f')]])){utils['info'](util[_0x4630('0x11')](_0x4630('0x50'),_0x955663[_0x4630('0x4d')],queues[_0x955663[_0x4630('0x4f')]][_0x4630('0x1d')],_0x955663['origtransfererexten']));queues[_0x955663[_0x4630('0x4f')]][_0x4630('0x42')]=!![];queues[_0x955663[_0x4630('0x4f')]][_0x4630('0x47')]='ATTENDED';queues[_0x955663[_0x4630('0x4f')]][_0x4630('0x51')]=_0x955663[_0x4630('0x52')];queues[_0x955663['secondtransfererlinkedid']]['transferuniqueid']=_0x955663['origtransfereruniqueid'];queues[_0x955663[_0x4630('0x4f')]]['queuecallerexitreason']=_0x4630('0x53');}if(!_[_0x4630('0x23')](queues[_0x955663[_0x4630('0x4e')]])){if(_0x955663['transfereelinkedid']&&queues[_0x955663[_0x4630('0x54')]]){queues[_0x955663[_0x4630('0x54')]][_0x4630('0x1f')]=0x1;queues[_0x955663[_0x4630('0x46')]]=_[_0x4630('0x55')](queues[_0x955663[_0x4630('0x54')]]);queues[_0x955663[_0x4630('0x46')]][_0x4630('0xe')]=_0x955663[_0x4630('0x56')];queues[_0x955663[_0x4630('0x46')]][_0x4630('0x1f')]=0x2;queues[_0x955663[_0x4630('0x46')]][_0x4630('0x6')]=queues[_0x955663['secondtransfererlinkedid']][_0x4630('0x6')];queues[_0x955663[_0x4630('0x46')]]['calleridname']=queues[_0x955663['secondtransfererlinkedid']][_0x4630('0x57')];queues[_0x955663[_0x4630('0x46')]][_0x4630('0x36')]=utils[_0x4630('0x15')]();queues[_0x955663[_0x4630('0x46')]]['queuecallerleaveAt']=utils[_0x4630('0x15')]();queues[_0x955663['transfereeuniqueid']][_0x4630('0x34')]=0x0;queues[_0x955663[_0x4630('0x46')]][_0x4630('0x58')]=0x0;utils[_0x4630('0x1')](util[_0x4630('0x11')](_0x4630('0x59'),_0x955663[_0x4630('0x4d')],queues[_0x955663[_0x4630('0x46')]][_0x4630('0x1d')],queues[_0x955663[_0x4630('0x46')]][_0x4630('0x6')],queues[_0x955663[_0x4630('0x46')]]['calleridname']));}else{utils[_0x4630('0x1')](util['format'](_0x4630('0x5a'),_0x955663['origtransfereruniqueid'],queues[_0x955663['origtransfererlinkedid']]['name'],_0x955663[_0x4630('0x4f')]));queues[_0x955663[_0x4630('0x4e')]][_0x4630('0xe')]=_0x955663['secondtransfererlinkedid'];}}}else if(_0x955663[_0x4630('0x5b')]==_0x955663[_0x4630('0x4f')]){if(!_[_0x4630('0x23')](queues[_0x955663[_0x4630('0x4e')]])){utils[_0x4630('0x1')](util[_0x4630('0x11')](_0x4630('0x5c'),_0x955663['origtransfereruniqueid'],queues[_0x955663[_0x4630('0x4e')]][_0x4630('0x1d')],_0x955663['secondtransfereruniqueid'],_0x955663[_0x4630('0x5d')]));queues[_0x955663[_0x4630('0x4e')]][_0x4630('0x42')]=!![];queues[_0x955663[_0x4630('0x4e')]][_0x4630('0x47')]='ATTENDED';queues[_0x955663[_0x4630('0x4e')]][_0x4630('0x51')]=_0x955663['secondtransfererexten'];queues[_0x955663[_0x4630('0x4e')]]['transferuniqueid']=_0x955663[_0x4630('0x5b')];queues[_0x955663[_0x4630('0x4e')]]['queuecallerexitreason']=_0x4630('0x53');}if(!_[_0x4630('0x23')](queues[_0x955663[_0x4630('0x4f')]])){if(_0x955663['transfertargetlinkedid']&&queues[_0x955663['transfertargetlinkedid']]){queues[_0x955663[_0x4630('0x5e')]][_0x4630('0x1f')]=0x1;queues[_0x955663['transfertargetuniqueid']]=_[_0x4630('0x55')](queues[_0x955663[_0x4630('0x5e')]]);queues[_0x955663[_0x4630('0x56')]]['transfereduniqueid']=_0x955663[_0x4630('0x56')];queues[_0x955663[_0x4630('0x56')]][_0x4630('0x1f')]=0x2;queues[_0x955663[_0x4630('0x56')]][_0x4630('0x6')]=queues[_0x955663['origtransfererlinkedid']]['calleridnum'];queues[_0x955663[_0x4630('0x56')]][_0x4630('0x57')]=queues[_0x955663['origtransfererlinkedid']][_0x4630('0x57')];queues[_0x955663[_0x4630('0x56')]][_0x4630('0x36')]=utils[_0x4630('0x15')]();queues[_0x955663[_0x4630('0x56')]][_0x4630('0x18')]=utils['now']();queues[_0x955663[_0x4630('0x56')]][_0x4630('0x34')]=0x0;queues[_0x955663[_0x4630('0x56')]][_0x4630('0x58')]=0x0;utils[_0x4630('0x1')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s',_0x955663[_0x4630('0x4d')],queues[_0x955663[_0x4630('0x56')]][_0x4630('0x1d')],queues[_0x955663['transfertargetuniqueid']][_0x4630('0xe')],queues[_0x955663[_0x4630('0x56')]][_0x4630('0x6')],queues[_0x955663[_0x4630('0x56')]][_0x4630('0x57')]));}else{utils[_0x4630('0x1')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x955663[_0x4630('0x4d')],queues[_0x955663[_0x4630('0x4f')]][_0x4630('0x1d')],_0x955663[_0x4630('0x4e')]));queues[_0x955663['secondtransfererlinkedid']]['transfereduniqueid']=_0x955663[_0x4630('0x4e')];}}}}catch(_0x42bdfc){utils[_0x4630('0x20')](util[_0x4630('0x11')](_0x4630('0x5f'),_0x955663[_0x4630('0x4d')]),_0x42bdfc);}};exports['musiconholdstart']=function(_0x3ede66){try{if(!_[_0x4630('0x23')](queues[_0x3ede66[_0x4630('0x3')]])){utils['debug'](util[_0x4630('0x11')](_0x4630('0x60'),_0x3ede66[_0x4630('0x3')]),_0x3ede66);queues[_0x3ede66[_0x4630('0x3')]][_0x4630('0x61')]=utils[_0x4630('0x15')]();utils[_0x4630('0x1')](util[_0x4630('0x11')](_0x4630('0x62'),_0x3ede66[_0x4630('0x3')],queues[_0x3ede66['uniqueid']][_0x4630('0x1d')],queues[_0x3ede66['uniqueid']][_0x4630('0x61')]));}}catch(_0x2381a2){utils[_0x4630('0x20')](util['format'](_0x4630('0x60'),_0x3ede66[_0x4630('0x3')]),_0x2381a2);}};exports[_0x4630('0x63')]=function(_0x27d9a8){try{if(!_[_0x4630('0x23')](queues[_0x27d9a8[_0x4630('0x3')]])){if(!_['isNil'](queues[_0x27d9a8[_0x4630('0x3')]][_0x4630('0x61')])){utils[_0x4630('0x10')](util[_0x4630('0x11')]('[%s][queues][musiconholdstop]',_0x27d9a8[_0x4630('0x3')]),_0x27d9a8);queues[_0x27d9a8[_0x4630('0x3')]][_0x4630('0x58')]+=utils['diffTime'](utils[_0x4630('0x15')](),queues[_0x27d9a8[_0x4630('0x3')]]['musiconholdstartAt']);utils['info'](util[_0x4630('0x11')]('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x27d9a8[_0x4630('0x3')],queues[_0x27d9a8[_0x4630('0x3')]][_0x4630('0x1d')],queues[_0x27d9a8[_0x4630('0x3')]][_0x4630('0x58')]));delete queues[_0x27d9a8[_0x4630('0x3')]]['musiconholdstartAt'];}}}catch(_0x58b353){utils[_0x4630('0x20')](util[_0x4630('0x11')]('[%s][queues][musiconholdstop]',_0x27d9a8[_0x4630('0x3')]),_0x58b353);}};
\ No newline at end of file
index fc243d7..1e957be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7063=['lodash','util','./utils','info','[%s][recordings][writeDB]','uniqueid','blinds','transfereeuniqueid','accountcode','getUserByInternal','request','newchannel','format','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','exten','context','channel','error','[%s][recordings][newchannel]','newstate','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable','debug','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','.wav49','replace','.WAV','find','monitors','push','[%s][recordings][varset]','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','forEach','newexten','appdata','application','set','startsWith','cdr','split','lastIndexOf','[%s][recordings][newexten]','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','blindtransfer','[%s][recordings][blindtransfer]','transferercalleridname','transfereecalleridnum','transfereecalleridname','transfereruniqueid','recording'];(function(_0x256d6a,_0x2f002f){var _0x460058=function(_0x195be7){while(--_0x195be7){_0x256d6a['push'](_0x256d6a['shift']());}};_0x460058(++_0x2f002f);}(_0x7063,0x154));var _0x3706=function(_0x194f70,_0x2e0f35){_0x194f70=_0x194f70-0x0;var _0x81faa0=_0x7063[_0x194f70];return _0x81faa0;};'use strict';var _=require(_0x3706('0x0'));var util=require(_0x3706('0x1'));var utils=require(_0x3706('0x2'));var transfers=require('./transfers.controller');var recordings={};function writeDB(_0x149a64){var _0x31c968;utils[_0x3706('0x3')](util['format'](_0x3706('0x4'),_0x149a64[_0x3706('0x5')]));if(transfers[_0x3706('0x6')][_0x149a64[_0x3706('0x5')]]){_0x31c968=_0x149a64[_0x3706('0x5')];_0x149a64[_0x3706('0x5')]=transfers[_0x3706('0x6')][_0x149a64[_0x3706('0x5')]][_0x3706('0x7')];}if(_0x149a64[_0x3706('0x8')]){utils[_0x3706('0x9')](_0x149a64[_0x3706('0x8')])['then'](function(_0x4d5b52){if(_0x4d5b52){_0x149a64['membername']=_0x4d5b52['name'];_0x149a64['UserId']=_0x4d5b52['id'];}utils['request']('CreateVoiceRecording',_0x149a64);});}else{utils[_0x3706('0xa')]('CreateVoiceRecording',_0x149a64);}if(_0x31c968)delete transfers[_0x3706('0x6')][_0x31c968];}exports[_0x3706('0xb')]=function(_0x7cfcfb){try{utils['debug'](util[_0x3706('0xc')]('[%s][recordings][newchannel]',_0x7cfcfb[_0x3706('0x5')]),_0x7cfcfb);if(_0x7cfcfb[_0x3706('0x5')]==_0x7cfcfb[_0x3706('0xd')]){utils[_0x3706('0x3')](util['format'](_0x3706('0xe'),_0x7cfcfb[_0x3706('0x5')],_0x7cfcfb['context'],_0x7cfcfb[_0x3706('0xf')]));recordings[_0x7cfcfb[_0x3706('0x5')]]={'uniqueid':_0x7cfcfb[_0x3706('0x5')],'accountcode':_0x7cfcfb[_0x3706('0x8')],'exten':_0x7cfcfb[_0x3706('0xf')],'context':_0x7cfcfb[_0x3706('0x10')],'channel':_0x7cfcfb[_0x3706('0x11')],'monitors':[]};}}catch(_0x17a988){utils[_0x3706('0x12')](util[_0x3706('0xc')](_0x3706('0x13'),_0x7cfcfb[_0x3706('0x5')]),_0x17a988);}};exports[_0x3706('0x14')]=function(_0x50157d){try{utils['debug'](util[_0x3706('0xc')](_0x3706('0x15'),_0x50157d[_0x3706('0x5')]),_0x50157d);if(!_[_0x3706('0x16')](recordings[_0x50157d[_0x3706('0x5')]])&&_0x50157d[_0x3706('0x17')]==0x6){utils[_0x3706('0x3')](util['format']('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x50157d[_0x3706('0x5')],_0x50157d[_0x3706('0x10')],_0x50157d[_0x3706('0x11')]));}else if(!_['isNil'](recordings[_0x50157d['linkedid']])&&_0x50157d[_0x3706('0x17')]==0x6&&_0x50157d[_0x3706('0x10')]!='transfer'){utils['info'](util[_0x3706('0xc')](_0x3706('0x18'),_0x50157d[_0x3706('0x5')],_0x50157d[_0x3706('0xd')],_0x50157d[_0x3706('0x10')],_0x50157d[_0x3706('0x11')]));recordings[_0x50157d[_0x3706('0xd')]][_0x3706('0x8')]=_0x50157d[_0x3706('0x8')];}}catch(_0x5fc10d){utils[_0x3706('0x12')](util[_0x3706('0xc')](_0x3706('0x15'),_0x50157d['uniqueid']),_0x5fc10d);}};exports[_0x3706('0x19')]=function(_0x1ede3a){try{if(!_['isNil'](_0x1ede3a[_0x3706('0x1a')])&&!_[_0x3706('0x16')](_0x1ede3a[_0x3706('0x1a')]['mixmonitor_filename'])){utils[_0x3706('0x1b')](util[_0x3706('0xc')]('[%s][recordings][varset]',_0x1ede3a[_0x3706('0x5')]),_0x1ede3a);utils[_0x3706('0x3')](util[_0x3706('0xc')](_0x3706('0x1c'),_0x1ede3a['uniqueid'],_0x1ede3a[_0x3706('0x1a')],_0x1ede3a[_0x3706('0x1d')]));if(_['endsWith'](_0x1ede3a[_0x3706('0x1d')],_0x3706('0x1e'))){_0x1ede3a[_0x3706('0x1d')]=_0x1ede3a['value'][_0x3706('0x1f')](_0x3706('0x1e'),_0x3706('0x20'));}if(recordings[_0x1ede3a[_0x3706('0xd')]]){var _0x3ebb2b=_[_0x3706('0x21')](recordings[_0x1ede3a['linkedid']][_0x3706('0x22')],{'value':_0x1ede3a[_0x3706('0x1d')]});if(_[_0x3706('0x16')](_0x3ebb2b)){recordings[_0x1ede3a[_0x3706('0xd')]]['monitors'][_0x3706('0x23')]({'value':_0x1ede3a[_0x3706('0x1d')]});}}}}catch(_0x41b14b){utils[_0x3706('0x12')](util[_0x3706('0xc')](_0x3706('0x24'),_0x1ede3a['uniqueid']),_0x41b14b);}};exports[_0x3706('0x25')]=function(_0x269ec6){try{if(!_[_0x3706('0x16')](recordings[_0x269ec6['uniqueid']])){utils[_0x3706('0x1b')](util[_0x3706('0xc')](_0x3706('0x26'),_0x269ec6[_0x3706('0x5')]),_0x269ec6);utils[_0x3706('0x3')](util[_0x3706('0xc')](_0x3706('0x27'),_0x269ec6[_0x3706('0x5')],_0x269ec6[_0x3706('0x28')],_0x269ec6[_0x3706('0x29')],_0x269ec6[_0x3706('0x2a')]));recordings[_0x269ec6[_0x3706('0x5')]][_0x3706('0x28')]=_0x269ec6[_0x3706('0x28')];recordings[_0x269ec6[_0x3706('0x5')]][_0x3706('0x29')]=_0x269ec6['calleridname'];recordings[_0x269ec6[_0x3706('0x5')]][_0x3706('0x2b')]=_0x269ec6[_0x3706('0x2b')];recordings[_0x269ec6[_0x3706('0x5')]][_0x3706('0x2c')]=_0x269ec6[_0x3706('0x2c')];if(recordings[_0x269ec6['uniqueid']][_0x3706('0x2d')]==_0x3706('0x2e')&&recordings[_0x269ec6['uniqueid']][_0x3706('0x8')]){recordings[_0x269ec6[_0x3706('0x5')]]['connectedlinenum']=recordings[_0x269ec6[_0x3706('0x5')]][_0x3706('0x8')];recordings[_0x269ec6[_0x3706('0x5')]]['connectedlinename']='';}recordings[_0x269ec6['uniqueid']][_0x3706('0x22')][_0x3706('0x2f')](function(_0x26ba77){var _0x2b7e17=_['clone'](recordings[_0x269ec6['uniqueid']]);_0x2b7e17[_0x3706('0x1d')]=_0x26ba77[_0x3706('0x1d')];writeDB(_0x2b7e17);});delete recordings[_0x269ec6['uniqueid']];}}catch(_0x4c80fe){utils['error'](util[_0x3706('0xc')]('[%s][recordings][hangup]',_0x269ec6['uniqueid']),_0x4c80fe);}};exports[_0x3706('0x30')]=function(_0x6a6121){try{if(!_[_0x3706('0x16')](recordings[_0x6a6121[_0x3706('0x5')]])){utils[_0x3706('0x1b')](util['format']('[%s][recordings][newexten]',_0x6a6121[_0x3706('0x5')]),_0x6a6121);utils[_0x3706('0x3')](util[_0x3706('0xc')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x6a6121[_0x3706('0x5')],_0x6a6121['application'],_0x6a6121[_0x3706('0x31')]));if(_0x6a6121[_0x3706('0x32')]['toLowerCase']()==_0x3706('0x33')&&_[_0x3706('0x34')](_0x6a6121[_0x3706('0x31')]['toLowerCase'](),_0x3706('0x35'))){var _0x32595a=_0x6a6121[_0x3706('0x31')][_0x3706('0x36')]('=');var _0x1ec140=_0x32595a[0x0]['substring'](_0x32595a[0x0][_0x3706('0x37')]('(')+0x1,_0x32595a[0x0][_0x3706('0x37')](')'));var _0x49bf02=_0x32595a[0x1];recordings[_0x6a6121[_0x3706('0x5')]][_0x1ec140]=_0x49bf02;}}}catch(_0x451c78){utils[_0x3706('0x12')](util[_0x3706('0xc')](_0x3706('0x38'),_0x6a6121[_0x3706('0x5')]),_0x451c78);}};exports[_0x3706('0x39')]=function(_0x4cb6a7){try{if(!_[_0x3706('0x16')](recordings[_0x4cb6a7[_0x3706('0x5')]])){utils['debug'](util[_0x3706('0xc')](_0x3706('0x3a'),_0x4cb6a7[_0x3706('0x5')]),_0x4cb6a7);utils[_0x3706('0x3')](util[_0x3706('0xc')](_0x3706('0x3b'),_0x4cb6a7[_0x3706('0x5')],_0x4cb6a7['queue']));recordings[_0x4cb6a7[_0x3706('0x5')]][_0x3706('0x3c')]=_0x4cb6a7['queue'];}}catch(_0xf79309){utils[_0x3706('0x12')](util[_0x3706('0xc')](_0x3706('0x3a'),_0x4cb6a7[_0x3706('0x5')]),_0xf79309);}};exports[_0x3706('0x3d')]=function(_0x5f45d3){try{utils[_0x3706('0x1b')](util[_0x3706('0xc')](_0x3706('0x3e'),_0x5f45d3[_0x3706('0x5')]),_0x5f45d3);utils['info'](util['format']('[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x5f45d3[_0x3706('0x5')],_0x5f45d3['transferercalleridnum'],_0x5f45d3[_0x3706('0x3f')],_0x5f45d3[_0x3706('0x40')],_0x5f45d3[_0x3706('0x41')]));if(recordings[_0x5f45d3['transfereruniqueid']]&&transfers['blinds'][_0x5f45d3[_0x3706('0x42')]]){transfers['blinds'][_0x5f45d3[_0x3706('0x42')]][_0x3706('0x43')]=!![];}}catch(_0x129bc1){utils[_0x3706('0x12')](util['format'](_0x3706('0x3e'),_0x5f45d3[_0x3706('0x5')]),_0x129bc1);}};
\ No newline at end of file
+var _0x3311=['transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','mixmonitor_filename','[%s][recordings][varset]','variable','value','.wav49','replace','.WAV','find','monitors','push','hangup','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','connectedlinenum','connectedlinename','outbound','forEach','clone','[%s][recordings][newexten]','appdata','toLowerCase','set','startsWith','cdr','substring','lastIndexOf','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','util','./utils','[%s][recordings][writeDB]','accountcode','getUserByInternal','then','CreateVoiceRecording','request','newchannel','debug','[%s][recordings][newchannel]','uniqueid','linkedid','info','format','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','exten','channel','error','newstate','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','context'];(function(_0x5e622b,_0x41e198){var _0x563646=function(_0x5760e3){while(--_0x5760e3){_0x5e622b['push'](_0x5e622b['shift']());}};_0x563646(++_0x41e198);}(_0x3311,0x17d));var _0x1331=function(_0x4519fd,_0x428b01){_0x4519fd=_0x4519fd-0x0;var _0x4ac21f=_0x3311[_0x4519fd];return _0x4ac21f;};'use strict';var _=require('lodash');var util=require(_0x1331('0x0'));var utils=require(_0x1331('0x1'));var recordings={};function writeDB(_0x1fec43){utils['info'](util['format'](_0x1331('0x2'),_0x1fec43['uniqueid']));if(_0x1fec43[_0x1331('0x3')]){utils[_0x1331('0x4')](_0x1fec43[_0x1331('0x3')])[_0x1331('0x5')](function(_0x1beed7){if(_0x1beed7){_0x1fec43['membername']=_0x1beed7['name'];_0x1fec43['UserId']=_0x1beed7['id'];}utils['request'](_0x1331('0x6'),_0x1fec43);});}else{utils[_0x1331('0x7')](_0x1331('0x6'),_0x1fec43);}}exports[_0x1331('0x8')]=function(_0x1f9fab){try{utils[_0x1331('0x9')](util['format'](_0x1331('0xa'),_0x1f9fab[_0x1331('0xb')]),_0x1f9fab);if(_0x1f9fab['uniqueid']==_0x1f9fab[_0x1331('0xc')]){utils[_0x1331('0xd')](util[_0x1331('0xe')](_0x1331('0xf'),_0x1f9fab[_0x1331('0xb')],_0x1f9fab['context'],_0x1f9fab[_0x1331('0x10')]));recordings[_0x1f9fab[_0x1331('0xb')]]={'uniqueid':_0x1f9fab[_0x1331('0xb')],'accountcode':_0x1f9fab['accountcode'],'exten':_0x1f9fab[_0x1331('0x10')],'context':_0x1f9fab['context'],'channel':_0x1f9fab[_0x1331('0x11')],'monitors':[]};}}catch(_0xb3dc0d){utils[_0x1331('0x12')](util['format'](_0x1331('0xa'),_0x1f9fab[_0x1331('0xb')]),_0xb3dc0d);}};exports[_0x1331('0x13')]=function(_0x4d4058){try{utils[_0x1331('0x9')](util[_0x1331('0xe')](_0x1331('0x14'),_0x4d4058[_0x1331('0xb')]),_0x4d4058);if(!_[_0x1331('0x15')](recordings[_0x4d4058[_0x1331('0xb')]])&&_0x4d4058[_0x1331('0x16')]==0x6){utils[_0x1331('0xd')](util[_0x1331('0xe')](_0x1331('0x17'),_0x4d4058[_0x1331('0xb')],_0x4d4058['context'],_0x4d4058[_0x1331('0x11')]));}else if(!_[_0x1331('0x15')](recordings[_0x4d4058[_0x1331('0xc')]])&&_0x4d4058[_0x1331('0x16')]==0x6&&_0x4d4058[_0x1331('0x18')]!=_0x1331('0x19')){utils['info'](util[_0x1331('0xe')](_0x1331('0x1a'),_0x4d4058[_0x1331('0xb')],_0x4d4058[_0x1331('0xc')],_0x4d4058[_0x1331('0x18')],_0x4d4058[_0x1331('0x11')]));recordings[_0x4d4058[_0x1331('0xc')]][_0x1331('0x3')]=_0x4d4058['accountcode'];}}catch(_0x474f62){utils[_0x1331('0x12')](util['format'](_0x1331('0x14'),_0x4d4058['uniqueid']),_0x474f62);}};exports[_0x1331('0x1b')]=function(_0x38492c){try{if(!_[_0x1331('0x15')](_0x38492c['variable'])&&!_[_0x1331('0x15')](_0x38492c['variable'][_0x1331('0x1c')])){utils[_0x1331('0x9')](util[_0x1331('0xe')](_0x1331('0x1d'),_0x38492c[_0x1331('0xb')]),_0x38492c);utils[_0x1331('0xd')](util[_0x1331('0xe')]('[%s][recordings][varset]\x20variable:%s\x20value:%s',_0x38492c[_0x1331('0xb')],_0x38492c[_0x1331('0x1e')],_0x38492c[_0x1331('0x1f')]));if(_['endsWith'](_0x38492c[_0x1331('0x1f')],_0x1331('0x20'))){_0x38492c['value']=_0x38492c[_0x1331('0x1f')][_0x1331('0x21')]('.wav49',_0x1331('0x22'));}if(recordings[_0x38492c[_0x1331('0xc')]]){var _0x327761=_[_0x1331('0x23')](recordings[_0x38492c[_0x1331('0xc')]][_0x1331('0x24')],{'value':_0x38492c[_0x1331('0x1f')]});if(_['isNil'](_0x327761)){recordings[_0x38492c[_0x1331('0xc')]][_0x1331('0x24')][_0x1331('0x25')]({'value':_0x38492c[_0x1331('0x1f')]});}}}}catch(_0x566397){utils[_0x1331('0x12')](util['format'](_0x1331('0x1d'),_0x38492c[_0x1331('0xb')]),_0x566397);}};exports[_0x1331('0x26')]=function(_0x308051){try{if(!_[_0x1331('0x15')](recordings[_0x308051[_0x1331('0xb')]])){utils[_0x1331('0x9')](util[_0x1331('0xe')]('[%s][recordings][hangup]',_0x308051[_0x1331('0xb')]),_0x308051);utils['info'](util['format'](_0x1331('0x27'),_0x308051[_0x1331('0xb')],_0x308051[_0x1331('0x28')],_0x308051[_0x1331('0x29')],_0x308051['cause-txt']));recordings[_0x308051[_0x1331('0xb')]]['calleridnum']=_0x308051[_0x1331('0x28')];recordings[_0x308051['uniqueid']]['calleridname']=_0x308051[_0x1331('0x29')];recordings[_0x308051[_0x1331('0xb')]]['connectedlinenum']=_0x308051[_0x1331('0x2a')];recordings[_0x308051['uniqueid']][_0x1331('0x2b')]=_0x308051['connectedlinename'];if(recordings[_0x308051[_0x1331('0xb')]]['type']==_0x1331('0x2c')&&recordings[_0x308051['uniqueid']][_0x1331('0x3')]){recordings[_0x308051[_0x1331('0xb')]][_0x1331('0x2a')]=recordings[_0x308051[_0x1331('0xb')]]['accountcode'];recordings[_0x308051[_0x1331('0xb')]][_0x1331('0x2b')]='';}recordings[_0x308051[_0x1331('0xb')]]['monitors'][_0x1331('0x2d')](function(_0x1a5f20){var _0x47eea4=_[_0x1331('0x2e')](recordings[_0x308051['uniqueid']]);_0x47eea4['value']=_0x1a5f20[_0x1331('0x1f')];writeDB(_0x47eea4);});delete recordings[_0x308051['uniqueid']];}}catch(_0x24a881){utils[_0x1331('0x12')](util[_0x1331('0xe')]('[%s][recordings][hangup]',_0x308051[_0x1331('0xb')]),_0x24a881);}};exports['newexten']=function(_0x59f9f5){try{if(!_[_0x1331('0x15')](recordings[_0x59f9f5[_0x1331('0xb')]])){utils[_0x1331('0x9')](util[_0x1331('0xe')](_0x1331('0x2f'),_0x59f9f5[_0x1331('0xb')]),_0x59f9f5);utils['info'](util[_0x1331('0xe')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x59f9f5[_0x1331('0xb')],_0x59f9f5['application'],_0x59f9f5[_0x1331('0x30')]));if(_0x59f9f5['application'][_0x1331('0x31')]()==_0x1331('0x32')&&_[_0x1331('0x33')](_0x59f9f5[_0x1331('0x30')]['toLowerCase'](),_0x1331('0x34'))){var _0x362c99=_0x59f9f5[_0x1331('0x30')]['split']('=');var _0x98fa43=_0x362c99[0x0][_0x1331('0x35')](_0x362c99[0x0]['lastIndexOf']('(')+0x1,_0x362c99[0x0][_0x1331('0x36')](')'));var _0x463464=_0x362c99[0x1];recordings[_0x59f9f5[_0x1331('0xb')]][_0x98fa43]=_0x463464;}}}catch(_0x41aa4b){utils['error'](util['format'](_0x1331('0x2f'),_0x59f9f5[_0x1331('0xb')]),_0x41aa4b);}};exports['queuecallerjoin']=function(_0x16a57c){try{if(!_[_0x1331('0x15')](recordings[_0x16a57c[_0x1331('0xb')]])){utils[_0x1331('0x9')](util[_0x1331('0xe')](_0x1331('0x37'),_0x16a57c['uniqueid']),_0x16a57c);utils[_0x1331('0xd')](util['format'](_0x1331('0x38'),_0x16a57c[_0x1331('0xb')],_0x16a57c[_0x1331('0x39')]));recordings[_0x16a57c[_0x1331('0xb')]][_0x1331('0x39')]=_0x16a57c[_0x1331('0x39')];}}catch(_0x171dd4){utils[_0x1331('0x12')](util['format']('[%s][recordings][queuecallerjoin]',_0x16a57c[_0x1331('0xb')]),_0x171dd4);}};
\ No newline at end of file
index a51f0b2..493504f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f56=['CreateVoiceTransferReport','blinds','blindtransfer','[%s][transfers][blindtransfer]','uniqueid','format','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transfereecalleridnum','blind','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','origtransfereruniqueid','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','origtransfererchannel','origtransferercalleridnum','secondtransfererconnectedlinenum','secondtransferercontext','origtransferercontext','origtransfererexten','isNil','transfereechannel','assign','transfertargetchannel','transfertargetconnectedlinenum','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','lodash','util','./utils','info','type','attended','request'];(function(_0x52a68c,_0x8aaf05){var _0x2df538=function(_0x20a71b){while(--_0x20a71b){_0x52a68c['push'](_0x52a68c['shift']());}};_0x2df538(++_0x8aaf05);}(_0x6f56,0xef));var _0x66f5=function(_0x4ffd8b,_0x88dfc){_0x4ffd8b=_0x4ffd8b-0x0;var _0x548b66=_0x6f56[_0x4ffd8b];return _0x548b66;};'use strict';var _=require(_0x66f5('0x0'));var util=require(_0x66f5('0x1'));var utils=require(_0x66f5('0x2'));function writeDB(_0x5e0c8b){utils[_0x66f5('0x3')](util['format']('[%s][transfers][writeDB]\x20type:%s',_0x5e0c8b[_0x66f5('0x4')]===_0x66f5('0x5')?_0x5e0c8b['origtransfereruniqueid']:_0x5e0c8b['uniqueid'],_0x5e0c8b[_0x66f5('0x4')]));utils[_0x66f5('0x6')](_0x66f5('0x7'),_0x5e0c8b);}exports[_0x66f5('0x8')]={};exports[_0x66f5('0x9')]=function(_0x49e190){try{utils['debug'](util['format'](_0x66f5('0xa'),_0x49e190[_0x66f5('0xb')]),_0x49e190);utils['info'](util[_0x66f5('0xc')](_0x66f5('0xd'),_0x49e190[_0x66f5('0xb')],_0x49e190[_0x66f5('0xe')],_0x49e190['transferercalleridname'],_0x49e190[_0x66f5('0xf')],_0x49e190['transfereecalleridname']));_0x49e190[_0x66f5('0x4')]=_0x66f5('0x10');exports[_0x66f5('0x8')][_0x49e190[_0x66f5('0x11')]]=_0x49e190;writeDB(_0x49e190);}catch(_0xc98437){utils[_0x66f5('0x12')](util[_0x66f5('0xc')](_0x66f5('0xa'),_0x49e190[_0x66f5('0xb')]),_0xc98437);}};exports[_0x66f5('0x13')]=function(_0x44f7de){try{utils['debug'](util[_0x66f5('0xc')](_0x66f5('0x14'),_0x44f7de[_0x66f5('0x15')]),_0x44f7de);utils['info'](util['format'](_0x66f5('0x16'),_0x44f7de[_0x66f5('0x15')],_0x44f7de['origtransferercalleridnum'],_0x44f7de[_0x66f5('0x17')],_0x44f7de[_0x66f5('0x18')],_0x44f7de[_0x66f5('0x19')]));_0x44f7de=_['assign'](_0x44f7de,{'transfererchannel':_0x44f7de[_0x66f5('0x1a')],'transferercalleridnum':_0x44f7de[_0x66f5('0x1b')],'transferercalleridname':_0x44f7de[_0x66f5('0x17')],'transfererconnectedlinenum':_0x44f7de[_0x66f5('0x1c')],'transfererconnectedlinename':_0x44f7de['secondtransfererconnectedlinename'],'transfereraccountcode':_0x44f7de['origtransfereraccountcode'],'transferercontext':_0x44f7de[_0x66f5('0x1d')],'transfererexten':_0x44f7de['secondtransfererexten'],'transfererlinkedid':_0x44f7de['origtransfererlinkedid'],'context':_0x44f7de[_0x66f5('0x1e')],'extension':_0x44f7de[_0x66f5('0x1f')],'type':_0x66f5('0x5')});if(_[_0x66f5('0x20')](_0x44f7de[_0x66f5('0x21')])){_0x44f7de=_[_0x66f5('0x22')](_0x44f7de,{'transfereechannel':_0x44f7de[_0x66f5('0x23')],'transfereecalleridnum':_0x44f7de['transfertargetcalleridnum'],'transfereecalleridname':_0x44f7de[_0x66f5('0x19')],'transfereeconnectedlinenum':_0x44f7de[_0x66f5('0x24')],'transfereeconnectedlinename':_0x44f7de['transfertargetconnectedlinename'],'transfereeaccountcode':_0x44f7de[_0x66f5('0x25')],'transfereecontext':_0x44f7de[_0x66f5('0x26')],'transfereeexten':_0x44f7de[_0x66f5('0x27')],'transfereelinkedid':_0x44f7de[_0x66f5('0x28')]});}writeDB(_0x44f7de);}catch(_0x1264ae){utils[_0x66f5('0x12')](util[_0x66f5('0xc')]('[%s][transfers][attendedtransfer]',_0x44f7de['origtransfereruniqueid']),_0x1264ae);}};
\ No newline at end of file
+var _0xbb9b=['origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','isNil','transfereechannel','transfertargetchannel','transfertargetconnectedlinename','transfertargetcontext','transfertargetlinkedid','lodash','util','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','origtransfereruniqueid','uniqueid','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','[%s][transfers][blindtransfer]','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel'];(function(_0x118d61,_0x2410d8){var _0x45c03c=function(_0x988f18){while(--_0x988f18){_0x118d61['push'](_0x118d61['shift']());}};_0x45c03c(++_0x2410d8);}(_0xbb9b,0x124));var _0xbbb9=function(_0xf43cb,_0x465374){_0xf43cb=_0xf43cb-0x0;var _0x14e869=_0xbb9b[_0xf43cb];return _0x14e869;};'use strict';var _=require(_0xbbb9('0x0'));var util=require(_0xbbb9('0x1'));var utils=require(_0xbbb9('0x2'));function writeDB(_0x1d0b2e){utils[_0xbbb9('0x3')](util[_0xbbb9('0x4')](_0xbbb9('0x5'),_0x1d0b2e[_0xbbb9('0x6')]===_0xbbb9('0x7')?_0x1d0b2e[_0xbbb9('0x8')]:_0x1d0b2e[_0xbbb9('0x9')],_0x1d0b2e['type']));utils['request']('CreateVoiceTransferReport',_0x1d0b2e);}exports[_0xbbb9('0xa')]={};exports[_0xbbb9('0xb')]=function(_0x3653ae){try{utils[_0xbbb9('0xc')](util[_0xbbb9('0x4')]('[%s][transfers][blindtransfer]',_0x3653ae[_0xbbb9('0x9')]),_0x3653ae);utils[_0xbbb9('0x3')](util['format'](_0xbbb9('0xd'),_0x3653ae[_0xbbb9('0x9')],_0x3653ae[_0xbbb9('0xe')],_0x3653ae[_0xbbb9('0xf')],_0x3653ae[_0xbbb9('0x10')],_0x3653ae[_0xbbb9('0x11')]));_0x3653ae[_0xbbb9('0x6')]=_0xbbb9('0x12');exports[_0xbbb9('0xa')][_0x3653ae['transfereruniqueid']]=_0x3653ae;writeDB(_0x3653ae);}catch(_0x567e21){utils['error'](util[_0xbbb9('0x4')](_0xbbb9('0x13'),_0x3653ae[_0xbbb9('0x9')]),_0x567e21);}};exports['attendedtransfer']=function(_0x342665){try{utils[_0xbbb9('0xc')](util['format'](_0xbbb9('0x14'),_0x342665[_0xbbb9('0x8')]),_0x342665);utils[_0xbbb9('0x3')](util[_0xbbb9('0x4')](_0xbbb9('0x15'),_0x342665[_0xbbb9('0x8')],_0x342665[_0xbbb9('0x16')],_0x342665[_0xbbb9('0x17')],_0x342665[_0xbbb9('0x18')],_0x342665[_0xbbb9('0x19')]));_0x342665=_[_0xbbb9('0x1a')](_0x342665,{'transfererchannel':_0x342665[_0xbbb9('0x1b')],'transferercalleridnum':_0x342665[_0xbbb9('0x16')],'transferercalleridname':_0x342665['origtransferercalleridname'],'transfererconnectedlinenum':_0x342665['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x342665['secondtransfererconnectedlinename'],'transfereraccountcode':_0x342665[_0xbbb9('0x1c')],'transferercontext':_0x342665[_0xbbb9('0x1d')],'transfererexten':_0x342665[_0xbbb9('0x1e')],'transfererlinkedid':_0x342665[_0xbbb9('0x1f')],'context':_0x342665[_0xbbb9('0x20')],'extension':_0x342665[_0xbbb9('0x21')],'type':_0xbbb9('0x7')});if(_[_0xbbb9('0x22')](_0x342665[_0xbbb9('0x23')])){_0x342665=_['assign'](_0x342665,{'transfereechannel':_0x342665[_0xbbb9('0x24')],'transfereecalleridnum':_0x342665[_0xbbb9('0x18')],'transfereecalleridname':_0x342665[_0xbbb9('0x19')],'transfereeconnectedlinenum':_0x342665['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x342665[_0xbbb9('0x25')],'transfereeaccountcode':_0x342665['transfertargetaccountcode'],'transfereecontext':_0x342665[_0xbbb9('0x26')],'transfereeexten':_0x342665['transfertargetexten'],'transfereelinkedid':_0x342665[_0xbbb9('0x27')]});}writeDB(_0x342665);}catch(_0x256dc0){utils['error'](util[_0xbbb9('0x4')]('[%s][transfers][attendedtransfer]',_0x342665[_0xbbb9('0x8')]),_0x256dc0);}};
\ No newline at end of file
index 0466f4f..81f61b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f6b=['debug','inspect','error','request','then','[utils][request]\x20name:%s','GetUser','internal','name','stringify','result','length','found','catch','[utils][getUserByInternal]','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','notfound','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acwTimeout','addTime','add','seconds','YYYY-MM-DD\x20HH:mm:ss','subtract','format','diffTime','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','util','client','http','../../config/logger','xdr','info'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0x3f6b,0x10b));var _0xb3f6=function(_0x584dbc,_0x4b102c){_0x584dbc=_0x584dbc-0x0;var _0x554b9a=_0x3f6b[_0x584dbc];return _0x554b9a;};'use strict';var BPromise=require(_0xb3f6('0x0'));var jayson=require(_0xb3f6('0x1'));var moment=require(_0xb3f6('0x2'));var util=require(_0xb3f6('0x3'));var client=jayson[_0xb3f6('0x4')][_0xb3f6('0x5')]({'port':0x2329});var logger=require(_0xb3f6('0x6'))(_0xb3f6('0x7'));exports[_0xb3f6('0x8')]=function(_0x3a29d0,_0x347c1b){logger[_0xb3f6('0x8')](_0x3a29d0,_0x347c1b?util['inspect'](_0x347c1b,{'showHidden':![],'depth':null}):'');};exports[_0xb3f6('0x9')]=function(_0x5b869b,_0x59d3a8){logger['debug'](_0x5b869b,_0x59d3a8?util[_0xb3f6('0xa')](_0x59d3a8,{'showHidden':![],'depth':null}):'');};exports[_0xb3f6('0xb')]=function(_0x18fb6f,_0xdbb21b){logger[_0xb3f6('0xb')](_0x18fb6f,_0xdbb21b?util[_0xb3f6('0xa')](_0xdbb21b,{'showHidden':![],'depth':null}):'');};exports[_0xb3f6('0xc')]=function(_0x216527,_0xe599a7){return client['request'](_0x216527,{'body':_0xe599a7})[_0xb3f6('0xd')](function(_0x4e7519){logger[_0xb3f6('0x9')](_0xb3f6('0xe'),_0x216527,_0x4e7519?util[_0xb3f6('0xa')](_0x4e7519,{'showHidden':![],'depth':null}):'');})['catch'](function(_0x2d6518){logger[_0xb3f6('0xb')](_0xb3f6('0xe'),_0x216527,_0x2d6518?util[_0xb3f6('0xa')](_0x2d6518,{'showHidden':![],'depth':null}):'');});};function getUser(_0x4caf1f){return client[_0xb3f6('0xc')](_0xb3f6('0xf'),{'options':{'raw':!![],'attributes':['id',_0xb3f6('0x10'),_0xb3f6('0x11'),'interface'],'where':_0x4caf1f,'limit':0x1}})['then'](function(_0x1d7205){logger[_0xb3f6('0x9')]('[utils][getUser]\x20where:%s',JSON[_0xb3f6('0x12')](_0x4caf1f),_0x1d7205?util['inspect'](_0x1d7205,{'showHidden':![],'depth':null}):'');return _0x1d7205[_0xb3f6('0x13')][_0xb3f6('0x14')]?_0x1d7205[_0xb3f6('0x13')][0x0]:null;});}exports['getUserByInternal']=function(_0x35e997){return new BPromise(function(_0x3a94d3,_0xc55628){if(_0x35e997){return getUser({'internal':_0x35e997})['then'](function(_0x10db0e){logger[_0xb3f6('0x8')]('[utils][getUserByInternal]\x20internal:%s\x20%s',_0x35e997,_0x10db0e?_0xb3f6('0x15'):'notfound');return _0x3a94d3(_0x10db0e);})[_0xb3f6('0x16')](function(_0x5e26c9){logger[_0xb3f6('0xb')](_0xb3f6('0x17'),_0x5e26c9?util[_0xb3f6('0xa')](_0x5e26c9,{'showHidden':![],'depth':null}):'');return _0x3a94d3(null);});}return _0x3a94d3(null);});};exports['getUserByInterface']=function(_0xb1f3f8){return new BPromise(function(_0x52d444,_0x2a1300){if(_0xb1f3f8){return getUser({'interface':_0xb1f3f8})['then'](function(_0x353ca8){logger['info'](_0xb3f6('0x18'),_0xb1f3f8,_0x353ca8?_0xb3f6('0x15'):'notfound');return _0x52d444(_0x353ca8);})['catch'](function(_0x44eb3d){logger[_0xb3f6('0xb')](_0xb3f6('0x19'),_0x44eb3d?util['inspect'](_0x44eb3d,{'showHidden':![],'depth':null}):'');return _0x52d444(null);});}return _0x52d444(null);});};exports[_0xb3f6('0x1a')]=function(_0x8fa4ca){return new BPromise(function(_0x465f1a,_0x2c924e){if(_0x8fa4ca){return getUser({'name':_0x8fa4ca})[_0xb3f6('0xd')](function(_0x2f3163){logger[_0xb3f6('0x8')](_0xb3f6('0x1b'),_0x8fa4ca,_0x2f3163?_0xb3f6('0x15'):_0xb3f6('0x1c'));return _0x465f1a(_0x2f3163);})[_0xb3f6('0x16')](function(_0x553fb9){logger['error'](_0xb3f6('0x1d'),_0x553fb9?util[_0xb3f6('0xa')](_0x553fb9,{'showHidden':![],'depth':null}):'');return _0x465f1a(null);});}return _0x465f1a(null);});};exports[_0xb3f6('0x1e')]=function(_0xa0e8e1){return new BPromise(function(_0x1016a5,_0x5b908d){if(_0xa0e8e1){return client[_0xb3f6('0xc')](_0xb3f6('0x1f'),{'options':{'raw':!![],'attributes':['id',_0xb3f6('0x11'),_0xb3f6('0x20'),'acw',_0xb3f6('0x21')],'where':{'name':_0xa0e8e1},'limit':0x1}})[_0xb3f6('0xd')](function(_0x257ed8){logger['debug']('[utils][getVoiceQueueByName]\x20name:%s',_0xa0e8e1,_0x257ed8?util[_0xb3f6('0xa')](_0x257ed8,{'showHidden':![],'depth':null}):'');logger[_0xb3f6('0x8')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0xa0e8e1,_0x257ed8?_0xb3f6('0x15'):_0xb3f6('0x1c'));return _0x1016a5(_0x257ed8[_0xb3f6('0x13')][_0xb3f6('0x14')]?_0x257ed8[_0xb3f6('0x13')][0x0]:null);})[_0xb3f6('0x16')](function(_0x38d834){logger[_0xb3f6('0xb')]('[utils][getVoiceQueueByName]',_0x38d834?util[_0xb3f6('0xa')](_0x38d834,{'showHidden':![],'depth':null}):'');return _0x1016a5(null);});}return _0x1016a5(null);});};exports[_0xb3f6('0x22')]=function(_0x56d7b7,_0x1bc94a){return moment(_0x56d7b7)[_0xb3f6('0x23')](_0x1bc94a,_0xb3f6('0x24'))['format'](_0xb3f6('0x25'));};exports['subtractTime']=function(_0x2a4a73,_0x4a9bb3){return moment(_0x2a4a73)[_0xb3f6('0x26')](_0x4a9bb3,_0xb3f6('0x24'))[_0xb3f6('0x27')](_0xb3f6('0x25'));};exports[_0xb3f6('0x28')]=function(_0x12faf4,_0x2755ec){return moment(_0x12faf4)[_0xb3f6('0x29')](moment(_0x2755ec),_0xb3f6('0x24'));};exports[_0xb3f6('0x2a')]=function(_0x35e6ad,_0x2e7062){return parseInt(_0x35e6ad,0xa)+parseInt(_0x2e7062,0xa);};exports[_0xb3f6('0x2b')]=function(){return moment()[_0xb3f6('0x27')](_0xb3f6('0x25'));};exports[_0xb3f6('0x2c')]=function(_0xbdd8c6,_0xa4a0f1){if(_0xa4a0f1){return moment(_0xbdd8c6)['isAfter'](_0xa4a0f1);}return!![];};exports[_0xb3f6('0x2d')]=function(_0x520bcb,_0x507ac5){if(_0x507ac5){return moment(_0x520bcb)['isBefore'](_0x507ac5);}else if(_0x520bcb){return!![];}return![];};
\ No newline at end of file
+var _0x1f26=['isAfter','isBefore','bluebird','jayson/promise','moment','util','client','http','../../config/logger','info','inspect','error','request','then','debug','[utils][request]\x20name:%s','GetUser','name','interface','length','result','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','catch','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','getVoiceQueueByName','GetVoiceQueue','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]','addTime','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','diffTime','diff','seconds','sumTime','now'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x1f26,0x197));var _0x61f2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1f26[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0x61f2('0x0'));var jayson=require(_0x61f2('0x1'));var moment=require(_0x61f2('0x2'));var util=require(_0x61f2('0x3'));var client=jayson[_0x61f2('0x4')][_0x61f2('0x5')]({'port':0x2329});var logger=require(_0x61f2('0x6'))('xdr');exports[_0x61f2('0x7')]=function(_0x4357bb,_0xeb6ad6){logger['info'](_0x4357bb,_0xeb6ad6?util[_0x61f2('0x8')](_0xeb6ad6,{'showHidden':![],'depth':null}):'');};exports['debug']=function(_0x29211f,_0x5ed631){logger['debug'](_0x29211f,_0x5ed631?util[_0x61f2('0x8')](_0x5ed631,{'showHidden':![],'depth':null}):'');};exports[_0x61f2('0x9')]=function(_0x160dd2,_0x2ef9f2){logger[_0x61f2('0x9')](_0x160dd2,_0x2ef9f2?util[_0x61f2('0x8')](_0x2ef9f2,{'showHidden':![],'depth':null}):'');};exports[_0x61f2('0xa')]=function(_0x3dc52b,_0x1c59e5){return client[_0x61f2('0xa')](_0x3dc52b,{'body':_0x1c59e5})[_0x61f2('0xb')](function(_0x4d591b){logger[_0x61f2('0xc')](_0x61f2('0xd'),_0x3dc52b,_0x4d591b?util['inspect'](_0x4d591b,{'showHidden':![],'depth':null}):'');})['catch'](function(_0x5d991d){logger['error']('[utils][request]\x20name:%s',_0x3dc52b,_0x5d991d?util[_0x61f2('0x8')](_0x5d991d,{'showHidden':![],'depth':null}):'');});};function getUser(_0x45ab46){return client['request'](_0x61f2('0xe'),{'options':{'raw':!![],'attributes':['id','internal',_0x61f2('0xf'),_0x61f2('0x10')],'where':_0x45ab46,'limit':0x1}})[_0x61f2('0xb')](function(_0x51b9e8){logger[_0x61f2('0xc')]('[utils][getUser]\x20where:%s',JSON['stringify'](_0x45ab46),_0x51b9e8?util['inspect'](_0x51b9e8,{'showHidden':![],'depth':null}):'');return _0x51b9e8['result'][_0x61f2('0x11')]?_0x51b9e8[_0x61f2('0x12')][0x0]:null;});}exports[_0x61f2('0x13')]=function(_0x5743e6){return new BPromise(function(_0x2e51d1,_0x4fbf2d){if(_0x5743e6){return getUser({'internal':_0x5743e6})[_0x61f2('0xb')](function(_0x22f514){logger[_0x61f2('0x7')](_0x61f2('0x14'),_0x5743e6,_0x22f514?_0x61f2('0x15'):'notfound');return _0x2e51d1(_0x22f514);})['catch'](function(_0x234a47){logger[_0x61f2('0x9')]('[utils][getUserByInternal]',_0x234a47?util['inspect'](_0x234a47,{'showHidden':![],'depth':null}):'');return _0x2e51d1(null);});}return _0x2e51d1(null);});};exports['getUserByInterface']=function(_0x5464be){return new BPromise(function(_0xcc1130,_0xfa024f){if(_0x5464be){return getUser({'interface':_0x5464be})['then'](function(_0x32c690){logger[_0x61f2('0x7')]('[utils][getUserByInterface]\x20interface:%s\x20%s',_0x5464be,_0x32c690?_0x61f2('0x15'):_0x61f2('0x16'));return _0xcc1130(_0x32c690);})[_0x61f2('0x17')](function(_0x2288ed){logger[_0x61f2('0x9')](_0x61f2('0x18'),_0x2288ed?util[_0x61f2('0x8')](_0x2288ed,{'showHidden':![],'depth':null}):'');return _0xcc1130(null);});}return _0xcc1130(null);});};exports[_0x61f2('0x19')]=function(_0x5847e1){return new BPromise(function(_0x21fa88,_0x3304f4){if(_0x5847e1){return getUser({'name':_0x5847e1})[_0x61f2('0xb')](function(_0x223f17){logger['info'](_0x61f2('0x1a'),_0x5847e1,_0x223f17?_0x61f2('0x15'):_0x61f2('0x16'));return _0x21fa88(_0x223f17);})['catch'](function(_0x4a39b7){logger[_0x61f2('0x9')]('[utils][getUserByName]',_0x4a39b7?util['inspect'](_0x4a39b7,{'showHidden':![],'depth':null}):'');return _0x21fa88(null);});}return _0x21fa88(null);});};exports[_0x61f2('0x1b')]=function(_0x394a07){return new BPromise(function(_0x2b08d3,_0x36ff97){if(_0x394a07){return client['request'](_0x61f2('0x1c'),{'options':{'raw':!![],'attributes':['id','name','type',_0x61f2('0x1d'),_0x61f2('0x1e')],'where':{'name':_0x394a07},'limit':0x1}})[_0x61f2('0xb')](function(_0x145a4c){logger[_0x61f2('0xc')](_0x61f2('0x1f'),_0x394a07,_0x145a4c?util['inspect'](_0x145a4c,{'showHidden':![],'depth':null}):'');logger[_0x61f2('0x7')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x394a07,_0x145a4c?'found':_0x61f2('0x16'));return _0x2b08d3(_0x145a4c[_0x61f2('0x12')][_0x61f2('0x11')]?_0x145a4c[_0x61f2('0x12')][0x0]:null);})[_0x61f2('0x17')](function(_0x54e89a){logger[_0x61f2('0x9')](_0x61f2('0x20'),_0x54e89a?util[_0x61f2('0x8')](_0x54e89a,{'showHidden':![],'depth':null}):'');return _0x2b08d3(null);});}return _0x2b08d3(null);});};exports[_0x61f2('0x21')]=function(_0x1b0964,_0x30454a){return moment(_0x1b0964)['add'](_0x30454a,'seconds')[_0x61f2('0x22')](_0x61f2('0x23'));};exports[_0x61f2('0x24')]=function(_0x1b95a8,_0x427d30){return moment(_0x1b95a8)[_0x61f2('0x25')](_0x427d30,'seconds')['format'](_0x61f2('0x23'));};exports[_0x61f2('0x26')]=function(_0x1453d5,_0x659366){return moment(_0x1453d5)[_0x61f2('0x27')](moment(_0x659366),_0x61f2('0x28'));};exports[_0x61f2('0x29')]=function(_0x2df23b,_0x2d8a0f){return parseInt(_0x2df23b,0xa)+parseInt(_0x2d8a0f,0xa);};exports[_0x61f2('0x2a')]=function(){return moment()[_0x61f2('0x22')](_0x61f2('0x23'));};exports[_0x61f2('0x2b')]=function(_0x5906f7,_0x5257df){if(_0x5257df){return moment(_0x5906f7)['isAfter'](_0x5257df);}return!![];};exports[_0x61f2('0x2c')]=function(_0x599da0,_0x33df93){if(_0x33df93){return moment(_0x599da0)[_0x61f2('0x2c')](_0x33df93);}else if(_0x599da0){return!![];}return![];};
\ No newline at end of file